ZGlmZiAtLWdpdCBhL21ldGEtYXNwZWVkL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtYXNwZWVkL2NvbmYvbGF5ZXIuY29uZgppbmRleCBkY2Q0MjBiLi45OGZkOWU5IDEwMDY0NAotLS0gYS9tZXRhLWFzcGVlZC9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1hc3BlZWQvY29uZi9sYXllci5jb25mCkBAIC03LDYgKzcsNiBAQAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJhc3BlZWQtbGF5ZXIiCiBCQkZJTEVfUEFUVEVSTl9hc3BlZWQtbGF5ZXIgPSAiIgogTEFZRVJWRVJTSU9OX2FzcGVlZC1sYXllciA9ICIxIgotTEFZRVJTRVJJRVNfQ09NUEFUX2FzcGVlZC1sYXllciA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX2FzcGVlZC1sYXllciA9ICJzdW1vIHRodWQiCiAKIEFTUEVFREJBU0UgPSAnJHtAb3MucGF0aC5ub3JtcGF0aCgiJHtMQVlFUkRJUn0vIil9JwpkaWZmIC0tZ2l0IGEvbWV0YS1pYm0vY29uZi9sYXllci5jb25mIGIvbWV0YS1pYm0vY29uZi9sYXllci5jb25mCmluZGV4IDQzNGY2MTYuLmZkMDVmYzQgMTAwNjQ0Ci0tLSBhL21ldGEtaWJtL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLWlibS9jb25mL2xheWVyLmNvbmYKQEAgLTcsNyArNyw3IEBACiAKIEJCRklMRV9DT0xMRUNUSU9OUyArPSAiaWJtLWxheWVyIgogQkJGSUxFX1BBVFRFUk5faWJtLWxheWVyID0gIiIKLUxBWUVSU0VSSUVTX0NPTVBBVF9pYm0tbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9pYm0tbGF5ZXIgPSAidGh1ZCIKIAogIyBQcm92aWRlIGEgdmFyaWFibGUgdGhhdCBwb2ludHMgdGhlIGJhc2Ugb2YgdGhlIGlibSBsYXllci4KIElCTUJBU0UgPSAnJHtAb3MucGF0aC5ub3JtcGF0aCgiJHtMQVlFUkRJUn0vIil9JwpkaWZmIC0tZ2l0IGEvbWV0YS1pYm0vbWV0YS1wYWxtZXR0by9jb25mL2xheWVyLmNvbmYgYi9tZXRhLWlibS9tZXRhLXBhbG1ldHRvL2NvbmYvbGF5ZXIuY29uZgppbmRleCA1OGRlNDRmLi42MWM3NTM4IDEwMDY0NAotLS0gYS9tZXRhLWlibS9tZXRhLXBhbG1ldHRvL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLWlibS9tZXRhLXBhbG1ldHRvL2NvbmYvbGF5ZXIuY29uZgpAQCAtNyw0ICs3LDQgQEAKIAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJwYWxtZXR0by1sYXllciIKIEJCRklMRV9QQVRURVJOX3BhbG1ldHRvLWxheWVyID0gIiIKLUxBWUVSU0VSSUVTX0NPTVBBVF9wYWxtZXR0by1sYXllciA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX3BhbG1ldHRvLWxheWVyID0gInRodWQiCmRpZmYgLS1naXQgYS9tZXRhLWlibS9tZXRhLXJvbXVsdXMvY29uZi9sYXllci5jb25mIGIvbWV0YS1pYm0vbWV0YS1yb211bHVzL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmYTU4YzQ0Li5kMWViODM4IDEwMDY0NAotLS0gYS9tZXRhLWlibS9tZXRhLXJvbXVsdXMvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtaWJtL21ldGEtcm9tdWx1cy9jb25mL2xheWVyLmNvbmYKQEAgLTcsNCArNyw0IEBACiAKIEJCRklMRV9DT0xMRUNUSU9OUyArPSAicm9tdWx1cy1sYXllciIKIEJCRklMRV9QQVRURVJOX3JvbXVsdXMtbGF5ZXIgPSAiIgotTEFZRVJTRVJJRVNfQ09NUEFUX3JvbXVsdXMtbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9yb211bHVzLWxheWVyID0gInRodWQiCmRpZmYgLS1naXQgYS9tZXRhLWlibS9tZXRhLXdpdGhlcnNwb29uL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtaWJtL21ldGEtd2l0aGVyc3Bvb24vY29uZi9sYXllci5jb25mCmluZGV4IDdhY2UzMWQuLjdkZDFmMGIgMTAwNjQ0Ci0tLSBhL21ldGEtaWJtL21ldGEtd2l0aGVyc3Bvb24vY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtaWJtL21ldGEtd2l0aGVyc3Bvb24vY29uZi9sYXllci5jb25mCkBAIC03LDQgKzcsNCBAQAogCiBCQkZJTEVfQ09MTEVDVElPTlMgKz0gIndpdGhlcnNwb29uLWxheWVyIgogQkJGSUxFX1BBVFRFUk5fd2l0aGVyc3Bvb24tbGF5ZXIgPSAiIgotTEFZRVJTRVJJRVNfQ09NUEFUX3dpdGhlcnNwb29uLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfd2l0aGVyc3Bvb24tbGF5ZXIgPSAidGh1ZCIKZGlmZiAtLWdpdCBhL21ldGEtaWJtL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfJS5iYmFwcGVuZCBiL21ldGEtaWJtL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfJS5iYmFwcGVuZAppbmRleCA3YWNjOTg2Li5lZTVmZmQ1IDEwMDY0NAotLS0gYS9tZXRhLWlibS9yZWNpcGVzLWh0dHBkL25naW54L25naW54XyUuYmJhcHBlbmQKKysrIGIvbWV0YS1pYm0vcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8lLmJiYXBwZW5kCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgIgogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAgICAgb3BlbnNzbCBcCisgICAgICAgIG9wZW5zc2wtYmluIFwKICAgICAgICAgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gXAogICAgICAgICAiCiAKZGlmZiAtLWdpdCBhL21ldGEtaW5ncmFzeXMvY29uZi9sYXllci5jb25mIGIvbWV0YS1pbmdyYXN5cy9jb25mL2xheWVyLmNvbmYKaW5kZXggMDVjNDBhOS4uZWFhMDU4MiAxMDA2NDQKLS0tIGEvbWV0YS1pbmdyYXN5cy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1pbmdyYXN5cy9jb25mL2xheWVyLmNvbmYKQEAgLTMsNyArMyw3IEBACiAKIEJCRklMRV9DT0xMRUNUSU9OUyArPSAiaW5ncmFzeXMiCiBCQkZJTEVfUEFUVEVSTl9pbmdyYXN5cyA9ICIiCi1MQVlFUlNFUklFU19DT01QQVRfaW5ncmFzeXMgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9pbmdyYXN5cyA9ICJ0aHVkIgogCiAjIFByb3ZpZGUgYSB2YXJpYWJsZSB0aGF0IHBvaW50cyB0aGUgYmFzZSBvZiB0aGUgaW5ncmFzeXMgbGF5ZXIuCiBJTkdSQVNZU0JBU0UgPSAnJHtAb3MucGF0aC5ub3JtcGF0aCgiJHtMQVlFUkRJUn0vIil9JwpkaWZmIC0tZ2l0IGEvbWV0YS1pbmdyYXN5cy9tZXRhLXphaXVzL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtaW5ncmFzeXMvbWV0YS16YWl1cy9jb25mL2xheWVyLmNvbmYKaW5kZXggNzQ2N2FhNS4uZDU3YWVhMCAxMDA2NDQKLS0tIGEvbWV0YS1pbmdyYXN5cy9tZXRhLXphaXVzL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLWluZ3Jhc3lzL21ldGEtemFpdXMvY29uZi9sYXllci5jb25mCkBAIC03LDQgKzcsNCBAQAogCiBCQkZJTEVfQ09MTEVDVElPTlMgKz0gInphaXVzIgogQkJGSUxFX1BBVFRFUk5femFpdXMgPSAiIgotTEFZRVJTRVJJRVNfQ09NUEFUX3phaXVzID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfemFpdXMgPSAidGh1ZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL1JFQURNRQppbmRleCAyMDQ5NjZhLi5hNzE2ODAxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9SRUFETUUKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvUkVBRE1FCkBAIC0xLDQgKzEsNyBAQAogQ29sbGVjdGlvbiBvZiBsYXllcnMgZm9yIHRoZSBPRS1jb3JlIHVuaXZlcnNlCiAKLVBsZWFzZSBzZWUgdGhlIHJlc3BlY3RpdmUgUkVBRE1FcyBpbiB0aGUgbGF5ZXIgc3ViZGlyZWN0b3JpZXMKK1RodWQgbWFpbnRhaW5lcjogQXJtaW4gS3VzdGVyICA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKK1RoaXMgcmVwb3NpdG9yeSBpcyBhIGNvbGxlY3Rpb24gb2YgbGF5ZXJzIHRvIHN1cHBsaW1lbnQgT0UtQ29yZQord2l0aCBhZGRpdGlvbmFsIHBhY2thZ2VzLCBFYWNoIGxheWVyIGhhdmUgZGVzaWduYXRlZCBtYWludGFpbmVyCitQbGVhc2Ugc2VlIHRoZSByZXNwZWN0aXZlIFJFQURNRXMgaW4gdGhlIGxheWVyIHN1YmRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCmluZGV4IDk3ZDBlOTQuLmFjMDAzNWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvUkVBRE1FCkBAIC0xMCwzMCArMTAsMzAgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UKLSAgYnJhbmNoOiBtYXN0ZXIKKyAgYnJhbmNoOiAxLjQwCiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZQogICBsYXllcnM6IG1ldGEKLSAgYnJhbmNoOiBtYXN0ZXIKKyAgYnJhbmNoOiB0aHVkCiAKICAgVVJJOiBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9tZXRhLW9wZW5lbWJlZGRlZAogICBsYXllcnM6IG1ldGEtb2UKLSAgYnJhbmNoOiBtYXN0ZXIKKyAgYnJhbmNoOiB0aHVkCiAKIFBhdGNoZXMKID09PT09PT0KIAogUGxlYXNlIHN1Ym1pdCBhbnkgcGF0Y2hlcyBhZ2FpbnN0IHRoZSBmaWxlc3lzdGVtcyBsYXllciB0byB0aGUKIE9wZW5FbWJlZGRlZCBkZXZlbG9wbWVudCBtYWlsaW5nIGxpc3QgKG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnKQotd2l0aCAnW21ldGEtZmlsZXN5c3RlbXNdJyBpbiB0aGUgc3ViamVjdC4KK3dpdGggJ1ttZXRhLWZpbGVzeXN0ZW1zXVt0aHVkXScgaW4gdGhlIHN1YmplY3QuCiAKLUxheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitUaHVkIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKIAogICAgZ2l0IHNlbmQtZW1haWwgLTEgLU0gXAogICAgICAgICAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIFwKLSAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWZpbGVzeXN0ZW1zXVtQQVRDSAorICAgICAgICAtLXN1YmplY3QtcHJlZml4PW1ldGEtZmlsZXN5c3RlbXNdW3RodWRdW1BBVENICiAKIAogVGFibGUgb2YgQ29udGVudHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKaW5kZXggZGJjZmY0Mi4uMDAyZjA5OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDQgKzE1LDQgQEAKIAogTEFZRVJERVBFTkRTX2ZpbGVzeXN0ZW1zLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9maWxlc3lzdGVtcy1sYXllciA9ICJ0aHVkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL2xvZ2ZzcHJvZ3MvbG9nZnNwcm9ncy8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL2xvZ2ZzcHJvZ3MvbG9nZnNwcm9ncy8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YmIwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbG9nZnNwcm9ncy9sb2dmc3Byb2dzLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAzYjAyYWNiYjNkNWJjOTM0MjJhNjgyMWNlNDc1Njg2MzNlZjRhZTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTEgQXVnIDIwMTggMTU6MDk6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBta2ZzLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL21rZnMuYyBiL21rZnMuYworaW5kZXggZTYxMmNiZC4uYjZhYTYzZCAxMDA2NDQKKy0tLSBhL21rZnMuYworKysrIGIvbWtmcy5jCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjZGVmaW5lIF9fVVNFX1VOSVg5OAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8emxpYi5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL2xvZ2ZzcHJvZ3MvbG9nZnNwcm9nc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbG9nZnNwcm9ncy9sb2dmc3Byb2dzX2dpdC5iYgppbmRleCAxYjRkOTdkLi5kOTg2NGFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbG9nZnNwcm9ncy9sb2dmc3Byb2dzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbG9nZnNwcm9ncy9sb2dmc3Byb2dzX2dpdC5iYgpAQCAtMTQsNiArMTQsNyBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ByYXNhZC1qb3NoaS9sb2dmc3Byb2dzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1MREZMQUdTLXRvLWxpbmtlci1jbWRsaW5lLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnRyZWUtQXZvaWQtY29uZmxpY3RzLXdpdGgtbGliYy1uYW1lc3BhY2UtYWJvdXQtc2V0ay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDUkVWID0gIjQ1YjcyYzgxY2UzYzZmYTE3Y2ExOWJhZmMyMDdlYTkzZTc2MzEyZjQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbnRmcy0zZy1udGZzcHJvZ3MvbnRmcy0zZy1udGZzcHJvZ3NfMjAxNy4zLjIzLmJiCmluZGV4IDllNzc3NjYuLmFkZGI0ZDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL250ZnMtM2ctbnRmc3Byb2dzL250ZnMtM2ctbnRmc3Byb2dzXzIwMTcuMy4yMy5iYgpAQCAtMTMsNiArMTMsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gImQ5NzQ3NGFlMTk1NGY3NzJjNmQyZmEzODZhNmY0NjJjIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlNWEwMjFkN2I3NjEyNjE4MzZkY2IzMDUzNzBhZjI5OTc5M2VlZGJkZWQ3MzFkZjNkNjk0MzgwMmUxMjYyZDUiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy50dXhlcmEuY29tL2NvbW11bml0eS9vcGVuLXNvdXJjZS1udGZzLTNnLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm50ZnMtM2dfbnRmc3Byb2dzLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9vd2ZzL293ZnMvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvb3dmcy9vd2ZzLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOTkwYWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvb3dmcy9vd2ZzLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gZGQxYWY3NTQxZjE4Mzk5YmNkY2IxMjlhOGI2NjE4YzE4ZWJkOWQ2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbWFzeiBUb3JjeiA8dG9tZWtAcGlwZWJyZWFrZXIucGw+CitEYXRlOiBTYXQsIDE3IE1hciAyMDE4IDEyOjU2OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gZm9yIG1ham9yKCkKKworICBMaW51eCBnbGliYyBjZWFzZWQgdG8gaW5jbHVkZSBpdCBpbiBzeXMvdHlwZXMuaDoKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE1LTExL21zZzAwMjUzLmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgIHwgMiArLQorIG1vZHVsZS9vd2xpYi9zcmMvaW5jbHVkZS9vdy5oIHwgNiArKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODY3NTFiZjcuLmQ2MjVkM2YwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODAsNyArMTgwLDcgQEAgbTRfaW5jbHVkZShbc3JjL3NjcmlwdHMvbTQvYWN4X3B0aHJlYWQubTRdKQorICMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCisgQUNfSEVBREVSX0RJUkVOVAorIEFDX0hFQURFUl9TVERDCistQUNfQ0hFQ0tfSEVBREVSUyhbYXNtL3R5cGVzLmggYXJwYS9pbmV0Lmggc3lzL2lvY3RsLmggc3lzL21rZGV2Lmggc3lzL3NvY2tldC5oIHN5cy90aW1lLmggc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3BhcmFtLmggc3lzL3Vpby5oIGZlYXR1cmVfdGVzdHMuaCBmY250bC5oIG5ldGluZXQvaW4uaCBzdGRsaWIuaCBzdHJpbmcuaCBzdHJpbmdzLmggc3lzL2ZpbGUuaCBzeXNsb2cuaCB0ZXJtaW9zLmggdW5pc3RkLmggbGltaXRzLmggc3RkaW50LmggZmVhdHVyZXMuaCBnZXRvcHQuaCByZXNvbHYuaCBzZW1hcGhvcmUuaF0pCisrQUNfQ0hFQ0tfSEVBREVSUyhbYXNtL3R5cGVzLmggYXJwYS9pbmV0Lmggc3lzL2lvY3RsLmggc3lzL21rZGV2Lmggc3lzL3NvY2tldC5oIHN5cy9zeXNtYWNyb3MuaCBzeXMvdGltZS5oIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy9wYXJhbS5oIHN5cy91aW8uaCBmZWF0dXJlX3Rlc3RzLmggZmNudGwuaCBuZXRpbmV0L2luLmggc3RkbGliLmggc3RyaW5nLmggc3RyaW5ncy5oIHN5cy9maWxlLmggc3lzbG9nLmggdGVybWlvcy5oIHVuaXN0ZC5oIGxpbWl0cy5oIHN0ZGludC5oIGZlYXR1cmVzLmggZ2V0b3B0LmggcmVzb2x2Lmggc2VtYXBob3JlLmhdKQorIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2xpbWl0cy5oIGxpbnV4L3R5cGVzLmggbmV0ZGIuaCBkbGZjbi5oXSkKKyBBQ19DSEVDS19IRUFERVJTKHN5cy9ldmVudC5oIHN5cy9pbm90aWZ5LmgpCisgCitkaWZmIC0tZ2l0IGEvbW9kdWxlL293bGliL3NyYy9pbmNsdWRlL293LmggYi9tb2R1bGUvb3dsaWIvc3JjL2luY2x1ZGUvb3cuaAoraW5kZXggOWRiZWM1ZjMuLjBhMzEwNTUyIDEwMDY0NAorLS0tIGEvbW9kdWxlL293bGliL3NyYy9pbmNsdWRlL293LmgKKysrKyBiL21vZHVsZS9vd2xpYi9zcmMvaW5jbHVkZS9vdy5oCitAQCAtMTg4LDggKzE4OCwxMiBAQAorICNpbmNsdWRlIDxuZXRkYi5oPgkJCQkvKiBmb3IgZ2V0YWRkcmluZm8gKi8KKyAjZW5kaWYJCQkJCQkJLyogSEFWRV9ORVREQl9IICovCisgCisrI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4JCQkvKiBmb3IgbWFqb3IoKSAqLworKyNlbmRpZgkJCQkJCQkvKiBIQVZFX1NZU19TWVNNQUNST1NfSCAqLworKworICNpZmRlZiBIQVZFX1NZU19NS0RFVl9ICistI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgkJCS8qIGZvciBtYWpvcigpICovCisrI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgkJCS8qIGZvciBtYWpvcigpIG9uIFNvbGFyaXMgKi8KKyAjZW5kaWYJCQkJCQkJLyogSEFWRV9TWVNfTUtERVZfSCAqLworIAorICNpbmNsdWRlIDxzdGRkZWYuaD4gLy8gZm9yIG9mZnNldG9mKCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9vd2ZzL293ZnNfMi45cDEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvb3dmcy9vd2ZzXzIuOXAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZkN2U5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9vd2ZzL293ZnNfMi45cDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1TVU1NQVJZID0gIjEtV2lyZSBmaWxlIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIk9XRlMgaXMgYW4gZWFzeSB3YXkgdG8gdXNlIHRoZSBwb3dlcmZ1bCAxLXdpcmUgc3lzdGVtIG9mIERhbGxhcy9NYXhpbSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3dmcy5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMGJjNDI3ZjQyM2E0MTIyMGFiNzlhMGIzOTIyMThiZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ODY1YzRiZDY0MmQ5ZTA0ZjQzOTI1YWQ3ZTkyOWFlODciCi0KLURFUEVORFMgPSAiZnVzZSB2aXJ0dWFsL2xpYnVzYjAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L293ZnMvb3dmcy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3dodHRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9vd3NlcnZlciAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTZiYTE0NWJlMjA4MDAyZTU4Nzc1YTcyMDMzNjk4NTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQyMmRiZmY3MmQyMzU0NzY2ODhjMDI2NjlmNzE3MWIyM2UyMWRmZmFkZjQwYmJkZDNiODI2MzkwODIxODQyNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZnVzZWluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZnVzZWxpYj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW93ZnMgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vd2h0dHBkIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtdzEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc3dpZyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vd3RjbCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vd3BocCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vd3B5dGhvbiBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vd3BlcmwgXAotIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L293aHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL293aHR0cGQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vd3NlcnZlciAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3dzZXJ2ZXIKLX0KLQotUEFDS0FHRVMgPSsgIm93ZnRwZCBvd2h0dHBkIG93c2VydmVyIG93c2hlbGwgbGlib3djYXBpIGxpYm93IGxpYm93bmV0IG93bW9uIG93dGFwIgotCi1ERVNDUklQVElPTl9vd2Z0cGQgPSAiQW5veW1vdXMgRlRQIHNlcnZlciBmb3IgMS13aXJlIGFjY2VzcyIKLURFU0NSSVBUSU9OX293aHR0cGQgPSAiVGlueSB3ZWJzZXJ2ZXIgZm9yIDEtd2lyZSBjb250cm9sIgotREVTQ1JJUFRJT05fb3dzZXJ2ZXIgPSAiQmFja2VuZCBzZXJ2ZXIgKGRhZW1vbikgZm9yIDEtd2lyZSBjb250cm9sIgotREVTQ1JJUFRJT05fb3dzaGVsbCA9ICJvd2RpciBvd3JlYWQgb3d3cml0ZSBvd3ByZXNlbnQgb3dnZXQgLSBsaWdodHdlaWdodCBvd3NlcnZlciBhY2Nlc3MiCi1ERVNDUklQVElPTl9saWJvd2NhcGkgPSAiZWFzeSBDLWxhbmd1YWdlIDEtd2lyZSBpbnRlcmZhY2UgIgotREVTQ1JJUFRJT05fbGlib3cgPSAiZWFzeSBDLWxhbmd1YWdlIDEtd2lyZSBpbnRlcmZhY2UgdG8gdGhlIG93c2VydmVyIHByb3RvY29sIgotREVTQ1JJUFRJT05fbGlib3duZXQgPSAiZWFzeSBDLWxhbmd1YWdlIDEtd2lyZSBpbnRlcmZhY2UgdG8gdGhlIG93c2VydmVyIHByb3RvY29sIgotREVTQ1JJUFRJT05fb3dtb24gPSAiTW9uaXRvciBmb3Igb3dzZXJ2ZXIgc2V0dGluZ3MgYW5kIHN0YXRpc3RpY3MiCi1ERVNDUklQVElPTl9vd3RhcCA9ICJQYWNrZXQgc25pZmZlciBmb3IgdGhlIG93c2VydmVyIHByb3RvY29sIgotCi1GSUxFU19vd2Z0cGQgPSAiJHtiaW5kaXJ9L293ZnRwZCIKLUZJTEVTX293aHR0cGQgPSAiJHtiaW5kaXJ9L293aHR0cGQgJHtzeXNjb25mZGlyfS9pbml0LmQvb3dodHRwZCIKLUZJTEVTX293c2VydmVyID0gIiR7YmluZGlyfS9vd3NlcnZlciAke3N5c2NvbmZkaXJ9L2luaXQuZC9vd3NlcnZlciIKLUZJTEVTX293c2hlbGwgPSAiJHtiaW5kaXJ9L293cmVhZCAke2JpbmRpcn0vb3d3cml0ZSBcCi0gICAgICAgICAgICAgICAgICR7YmluZGlyfS9vd2RpciAke2JpbmRpcn0vb3dwcmVzZW50IFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L293Z2V0ICR7YmluZGlyfS9vd3NpZGUiCi1GSUxFU19vd21vbiA9ICIke2JpbmRpcn0vb3dtb24iCi1GSUxFU19vd3RhcCA9ICIke2JpbmRpcn0vb3d0YXAiCi1GSUxFU19saWJvd2NhcGkgPSAiJHtsaWJkaXJ9L2xpYm93Y2FwaS0qIgotRklMRVNfbGlib3cgPSAiJHtsaWJkaXJ9L2xpYm93LSoiCi1GSUxFU19saWJvd25ldCA9ICIke2xpYmRpcn0vbGlib3duZXQtKiIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJvd2h0dHBkIG93c2VydmVyIgotSU5JVFNDUklQVF9OQU1FX293c2VydmVyID0gIm93c2VydmVyIgotSU5JVFNDUklQVF9OQU1FX293aHR0cGQgPSAib3dodHRwZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX293c2VydmVyID0gImRlZmF1bHRzIDIwIgotSU5JVFNDUklQVF9QQVJBTVNfb3dodHRwZCA9ICJkZWZhdWx0cyAyMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9vd2ZzL293ZnNfMy4ycDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvb3dmcy9vd2ZzXzMuMnAyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwODY1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvb3dmcy9vd2ZzXzMuMnAyLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiMS1XaXJlIGZpbGUgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiT1dGUyBpcyBhbiBlYXN5IHdheSB0byB1c2UgdGhlIHBvd2VyZnVsIDEtd2lyZSBzeXN0ZW0gb2YgRGFsbGFzL01heGltIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vd2ZzLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyYTY0ZGYxY2M4NzI3NWU5NDBjYWIwNWVlNzVjMzdkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0xNmZmM2ZmZWJlZDU4MmUxOWVhN2E0ZjQ4ZWM3N2I0MiIKKworREVQRU5EUyA9ICJmdXNlIHZpcnR1YWwvbGlidXNiMCIKKyMgdjMuMnAyCitTUkNSRVYgPSAiOTNjMWYzNmQ5YWM0ODEwNzUyODdkYTMzMWQ1MTg0ZjU5MGY4YzBmYSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vd2ZzL293ZnMgXAorICAgICAgICAgICBmaWxlOi8vb3dodHRwZCBcCisgICAgICAgICAgIGZpbGU6Ly9vd3NlcnZlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWZ1c2VpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWZ1c2VsaWI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vd2ZzIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb3dodHRwZCBcCisgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXcxIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN3aWcgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3d0Y2wgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3dwaHAgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3dweXRob24gXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3dwZXJsIFwKKyIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vd2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vd2h0dHBkCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vb3dzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL293c2VydmVyCit9CisKK1BBQ0tBR0VTID0rICJvd2Z0cGQgb3dodHRwZCBvd3NlcnZlciBvd3NoZWxsIGxpYm93Y2FwaSBsaWJvdyBsaWJvd25ldCBvd21vbiBvd3RhcCIKKworREVTQ1JJUFRJT05fb3dmdHBkID0gIkFub3ltb3VzIEZUUCBzZXJ2ZXIgZm9yIDEtd2lyZSBhY2Nlc3MiCitERVNDUklQVElPTl9vd2h0dHBkID0gIlRpbnkgd2Vic2VydmVyIGZvciAxLXdpcmUgY29udHJvbCIKK0RFU0NSSVBUSU9OX293c2VydmVyID0gIkJhY2tlbmQgc2VydmVyIChkYWVtb24pIGZvciAxLXdpcmUgY29udHJvbCIKK0RFU0NSSVBUSU9OX293c2hlbGwgPSAib3dkaXIgb3dyZWFkIG93d3JpdGUgb3dwcmVzZW50IG93Z2V0IC0gbGlnaHR3ZWlnaHQgb3dzZXJ2ZXIgYWNjZXNzIgorREVTQ1JJUFRJT05fbGlib3djYXBpID0gImVhc3kgQy1sYW5ndWFnZSAxLXdpcmUgaW50ZXJmYWNlICIKK0RFU0NSSVBUSU9OX2xpYm93ID0gImVhc3kgQy1sYW5ndWFnZSAxLXdpcmUgaW50ZXJmYWNlIHRvIHRoZSBvd3NlcnZlciBwcm90b2NvbCIKK0RFU0NSSVBUSU9OX2xpYm93bmV0ID0gImVhc3kgQy1sYW5ndWFnZSAxLXdpcmUgaW50ZXJmYWNlIHRvIHRoZSBvd3NlcnZlciBwcm90b2NvbCIKK0RFU0NSSVBUSU9OX293bW9uID0gIk1vbml0b3IgZm9yIG93c2VydmVyIHNldHRpbmdzIGFuZCBzdGF0aXN0aWNzIgorREVTQ1JJUFRJT05fb3d0YXAgPSAiUGFja2V0IHNuaWZmZXIgZm9yIHRoZSBvd3NlcnZlciBwcm90b2NvbCIKKworRklMRVNfb3dmdHBkID0gIiR7YmluZGlyfS9vd2Z0cGQiCitGSUxFU19vd2h0dHBkID0gIiR7YmluZGlyfS9vd2h0dHBkICR7c3lzY29uZmRpcn0vaW5pdC5kL293aHR0cGQiCitGSUxFU19vd3NlcnZlciA9ICIke2JpbmRpcn0vb3dzZXJ2ZXIgJHtzeXNjb25mZGlyfS9pbml0LmQvb3dzZXJ2ZXIiCitGSUxFU19vd3NoZWxsID0gIiR7YmluZGlyfS9vd3JlYWQgJHtiaW5kaXJ9L293d3JpdGUgXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vb3dkaXIgJHtiaW5kaXJ9L293cHJlc2VudCBcCisgICAgICAgICAgICAgICAgICR7YmluZGlyfS9vd2dldCAke2JpbmRpcn0vb3dzaWRlIgorRklMRVNfb3dtb24gPSAiJHtiaW5kaXJ9L293bW9uIgorRklMRVNfb3d0YXAgPSAiJHtiaW5kaXJ9L293dGFwIgorRklMRVNfbGlib3djYXBpID0gIiR7bGliZGlyfS9saWJvd2NhcGktKiIKK0ZJTEVTX2xpYm93ID0gIiR7bGliZGlyfS9saWJvdy0qIgorRklMRVNfbGlib3duZXQgPSAiJHtsaWJkaXJ9L2xpYm93bmV0LSoiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAib3dodHRwZCBvd3NlcnZlciIKK0lOSVRTQ1JJUFRfTkFNRV9vd3NlcnZlciA9ICJvd3NlcnZlciIKK0lOSVRTQ1JJUFRfTkFNRV9vd2h0dHBkID0gIm93aHR0cGQiCitJTklUU0NSSVBUX1BBUkFNU19vd3NlcnZlciA9ICJkZWZhdWx0cyAyMCIKK0lOSVRTQ1JJUFRfUEFSQU1TX293aHR0cGQgPSAiZGVmYXVsdHMgMjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMveWFmZnMyL3lhZmZzMi11dGlsc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMveWFmZnMyL3lhZmZzMi11dGlsc19naXQuYmIKaW5kZXggNjdjOTI2Yi4uNjA5NWUyNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3lhZmZzMi95YWZmczItdXRpbHNfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy95YWZmczIveWFmZnMyLXV0aWxzX2dpdC5iYgpAQCAtNSw3ICs1LDkgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cueWFmZnMubmV0IgogCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdXRpbHMvbWt5YWZmczJpbWFnZS5jO2JlZ2lubGluZT0xMjtlbmRsaW5lPTE0O21kNT01ZjU0NjRmOWIzZTk4MWNhNTc0ZTY1YjAwZTQzODU2MSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3V0aWxzL21reWFmZnMyaW1hZ2UuYztiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMzttZDU9NWY1NDY0ZjliM2U5ODFjYTU3NGU2NWIwMGU0Mzg1NjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXRpbHMvbWt5YWZmc2ltYWdlLmM7YmVnaW5saW5lPTEwO2VuZGxpbmU9MTI7bWQ1PTVmNTQ2NGY5YjNlOTgxY2E1NzRlNjViMDBlNDM4NTYxIFwKKyAgICAgICAgICAgICAgICAgICAgIgogCiBQViA9ICIwLjArZ2l0JHtTUkNQVn0iCiAKQEAgLTE3LDcgKzE5LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRlZmluZS1sb2ZmX3QtaWYtbm90LWFscmVhZHktZGVmaW5lZC5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDUkVWID0gImJjNzY2ODJkOTM5NTVjZmIzMzA1MWJlYjUwM2FkOWY4YTU0NTA1NzgiCitTUkNSRVYgPSAiMzQzOWZhNGU2MGRkOTc5OTc2NmIyYzEwMWY3OTllZDllNTY1YjYzMiIKKworVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBDRkxBR1NfYXBwZW5kID0gIiAtSS4uIC1EQ09ORklHX1lBRkZTX1VUSUwgLURDT05GSUdfWUFGRlNfREVGSU5FU19UWVBFUyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZmlsZXMvQ1ZFLTIwMTgtMTA5MDYtMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZmlsZXMvQ1ZFLTIwMTgtMTA5MDYtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNiZWYzMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2ZpbGVzL0NWRS0yMDE4LTEwOTA2LTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDI4YmRhZTNkMTEzZWY0NzljMTY2MGE1ODFlZjcyMGNkYzMzYmY0NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW5uIEhvcm4gPGphbm5oQGdvb2dsZS5jb20+Ci1EYXRlOiBGcmksIDEzIEp1bCAyMDE4IDE1OjE1OjM2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZ1c2VybW91bnQ6IGRvbid0IGZlZWQgImVzY2FwZWQgY29tbWFzIiBpbnRvIG1vdW50IG9wdGlvbnMKLQotVGhlIG9sZCBjb2RlIHBlcm1pdHMgdGhlIGZvbGxvd2luZyBiZWhhdmlvcjoKLQotJCBfRlVTRV9DT01NRkQ9MTAwMDAgcHJpdl9zdHJhY2UgLWV0cmFjZT1tb3VudCAtczIwMCBmdXNlcm1vdW50IC1vICdmb29iYXI9XCxhbGxvd19vdGhlcicgbW91bnQKLW1vdW50KCIvZGV2L2Z1c2UiLCAiLiIsICJmdXNlIiwgTVNfTk9TVUlEfE1TX05PREVWLCAiZm9vYmFyPVxcLGFsbG93X290aGVyLGZkPTMscm9vdG1vZGU9NDAwMDAsdXNlcl9pZD0xMDAwLGdyb3VwX2lkPTEwMDAiKSA9IC0xIEVJTlZBTCAoSW52YWxpZCBhcmd1bWVudCkKLQotSG93ZXZlciwgYmFja3NsYXNoZXMgZG8gbm90IGhhdmUgYW55IHNwZWNpYWwgbWVhbmluZyBmb3IgdGhlIGtlcm5lbCBoZXJlLgotCi1BcyBpdCBoYXBwZW5zLCB5b3UgY2FuJ3QgYWJ1c2UgdGhpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIEZVU0UgbW91bnQgb3B0aW9uCi10aGF0IHRha2VzIGEgc3RyaW5nIHZhbHVlIHRoYXQgY2FuIGNvbnRhaW4gYmFja3NsYXNoZXM7IGJ1dCB0aGlzIGlzIHZlcnkKLWJyaXR0bGUuIERvbid0IGludGVycHJldCAiZXNjYXBlIGNoYXJhY3RlcnMiIGluIHBsYWNlcyB3aGVyZSB0aGV5IGRvbid0Ci13b3JrLgotCi1DVkU6IENWRS0yMDE4LTEwOTA2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9saWJmdXNlL2NvbW1pdC8yOGJkYWUzZDExM2VmNDc5YzE2NjBhNTgxZWY3MjBjZGMzM2JmNDY2XQotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSB1dGlsL2Z1c2VybW91bnQuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91dGlsL2Z1c2VybW91bnQuYyBiL3V0aWwvZnVzZXJtb3VudC5jCi1pbmRleCAwZTFkMzRkLi4xNDNiZDRhIDEwMDY0NAotLS0tIGEvdXRpbC9mdXNlcm1vdW50LmMKLSsrKyBiL3V0aWwvZnVzZXJtb3VudC5jCi1AQCAtMjksNiArMjksNyBAQAotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPHNjaGVkLmg+Ci0rI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAKLSAjZGVmaW5lIEZVU0VfQ09NTUZEX0VOVgkJIl9GVVNFX0NPTU1GRCIKLSAKLUBAIC03NTQsOCArNzU1LDEwIEBAIHN0YXRpYyBpbnQgZG9fbW91bnQoY29uc3QgY2hhciAqbW50LCBjaGFyICoqdHlwZXAsIG1vZGVfdCByb290bW9kZSwKLSAJCXVuc2lnbmVkIGxlbjsKLSAJCWNvbnN0IGNoYXIgKmZzbmFtZV9zdHIgPSAiZnNuYW1lPSI7Ci0gCQljb25zdCBjaGFyICpzdWJ0eXBlX3N0ciA9ICJzdWJ0eXBlPSI7Ci0rCQlib29sIGVzY2FwZV9vayA9IGJlZ2luc193aXRoKHMsIGZzbmFtZV9zdHIpIHx8Ci0rCQkJCSBiZWdpbnNfd2l0aChzLCBzdWJ0eXBlX3N0cik7Ci0gCQlmb3IgKGxlbiA9IDA7IHNbbGVuXTsgbGVuKyspIHsKLS0JCQlpZiAoc1tsZW5dID09ICdcXCcgJiYgc1tsZW4gKyAxXSkKLSsJCQlpZiAoZXNjYXBlX29rICYmIHNbbGVuXSA9PSAnXFwnICYmIHNbbGVuICsgMV0pCi0gCQkJCWxlbisrOwotIAkJCWVsc2UgaWYgKHNbbGVuXSA9PSAnLCcpCi0gCQkJCWJyZWFrOwotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9maWxlcy9DVkUtMjAxOC0xMDkwNi0yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9maWxlcy9DVkUtMjAxOC0xMDkwNi0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDRhYTE3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZmlsZXMvQ1ZFLTIwMTgtMTA5MDYtMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNTAxOGEwYzAxNjQ5NTE1NWVlNTk4YjdlMDE2N2I0M2Q1ZDkwMjQxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbm4gSG9ybiA8amFubmhAZ29vZ2xlLmNvbT4KLURhdGU6IFNhdCwgMTQgSnVsIDIwMTggMDM6NDc6NTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZnVzZXJtb3VudDogcmVmdXNlIHVua25vd24gb3B0aW9ucwotCi1CbGFja2xpc3RzIGFyZSBub3RvcmlvdXNseSBmcmFnaWxlOyBlc3BlY2lhbGx5IGlmIHRoZSBrZXJuZWwgd2lzaGVzIHRvIGFkZAotc29tZSBzZWN1cml0eS1jcml0aWNhbCBtb3VudCBvcHRpb24gYXQgYSBsYXRlciBkYXRlLCBhbGwgZXhpc3Rpbmcgc3lzdGVtcwotd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBmdXNlcm1vdW50IGluc3RhbGxlZCB3aWxsIHN1ZGRlbmx5IGhhdmUgYSBzZWN1cml0eQotcHJvYmxlbS4KLUFkZGl0aW9uYWxseSwgaWYgdGhlIGtlcm5lbCdzIG9wdGlvbiBwYXJzaW5nIGJlY2FtZSBhIHRpbnkgYml0IGxheGVyLCB0aGUKLWJsYWNrbGlzdCBjb3VsZCBwcm9iYWJseSBiZSBieXBhc3NlZC4KLQotV2hpdGVsaXN0IGtub3duLWhhcm1sZXNzIGZsYWdzIGluc3RlYWQsIGV2ZW4gaWYgaXQncyBzbGlnaHRseSBtb3JlCi1pbmNvbnZlbmllbnQuCi0KLUNWRTogQ1ZFLTIwMTgtMTA5MDYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UvY29tbWl0LzUwMThhMGMwMTY0OTUxNTVlZTU5OGI3ZTAxNjdiNDNkNWQ5MDI0MTRdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHV0aWwvZnVzZXJtb3VudC5jIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3V0aWwvZnVzZXJtb3VudC5jIGIvdXRpbC9mdXNlcm1vdW50LmMKLWluZGV4IDRlMGY1MWEuLjI3OTI0MDcgMTAwNjQ0Ci0tLS0gYS91dGlsL2Z1c2VybW91bnQuYwotKysrIGIvdXRpbC9mdXNlcm1vdW50LmMKLUBAIC04MTksMTAgKzgxOSwxNiBAQCBzdGF0aWMgaW50IGRvX21vdW50KGNvbnN0IGNoYXIgKm1udCwgY2hhciAqKnR5cGVwLCBtb2RlX3Qgcm9vdG1vZGUsCi0gCQkJCQkJZmxhZ3MgfD0gZmxhZzsKLSAJCQkJCWVsc2UKLSAJCQkJCQlmbGFncyAgJj0gfmZsYWc7Ci0tCQkJCX0gZWxzZSB7Ci0rCQkJCX0gZWxzZSBpZiAob3B0X2VxKHMsIGxlbiwgImRlZmF1bHRfcGVybWlzc2lvbnMiKSB8fAotKwkJCQkJICAgb3B0X2VxKHMsIGxlbiwgImFsbG93X290aGVyIikgfHwKLSsJCQkJCSAgIGJlZ2luc193aXRoKHMsICJtYXhfcmVhZD0iKSB8fAotKwkJCQkJICAgYmVnaW5zX3dpdGgocywgImJsa3NpemU9IikpIHsKLSAJCQkJCW1lbWNweShkLCBzLCBsZW4pOwotIAkJCQkJZCArPSBsZW47Ci0gCQkJCQkqZCsrID0gJywnOwotKwkJCQl9IGVsc2UgewotKwkJCQkJZnByaW50ZihzdGRlcnIsICIlczogdW5rbm93biBvcHRpb24gJyUuKnMnXG4iLCBwcm9nbmFtZSwgbGVuLCBzKTsKLSsJCQkJCWV4aXQoMSk7Ci0gCQkJCX0KLSAJCQl9Ci0gCQl9Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYjliNzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9mdXNlXzIuOS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJJbXBsZW1lbnRhdGlvbiBvZiBhIGZ1bGx5IGZ1bmN0aW9uYWwgZmlsZXN5c3RlbSBpbiBhIHVzZXJzcGFjZSBwcm9ncmFtIgotREVTQ1JJUFRJT04gPSAiRlVTRSAoRmlsZXN5c3RlbSBpbiBVc2Vyc3BhY2UpIGlzIGEgc2ltcGxlIGludGVyZmFjZSBmb3IgdXNlcnNwYWNlIFwKLSAgICAgICAgICAgICAgIHByb2dyYW1zIHRvIGV4cG9ydCBhIHZpcnR1YWwgZmlsZXN5c3RlbSB0byB0aGUgTGludXgga2VybmVsLiBGVVNFIFwKLSAgICAgICAgICAgICAgIGFsc28gYWltcyB0byBwcm92aWRlIGEgc2VjdXJlIG1ldGhvZCBmb3Igbm9uIHByaXZpbGVnZWQgdXNlcnMgdG8gXAotICAgICAgICAgICAgICAgY3JlYXRlIGFuZCBtb3VudCB0aGVpciBvd24gZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMuIFwKLSAgICAgICAgICAgICAgIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZ29sZC11bnZlcnNpb25lZC1zeW1ib2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1c2UtZml4LXRoZS1yZXR1cm4tdmFsdWUtb2YtaGVscC1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnVzZS5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwOTA2LTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA5MDYtMi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiOWJkNGNlODE4NDc0NWZkM2QwMDBjYTI2OTJhZGFjZGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODMyNDMyZDFhZDRmODMzYzIwZTEzYjU3Y2Y0MGNlNTI3N2E5ZDMzZTQ4MzIwNWZjNjNjNzgxMTFiMzM1ODg3NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotSU5JVFNDUklQVF9OQU1FID0gImZ1c2UiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzIFMgLiBzdG9wIDIwIDAgNiAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIgotCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIgotCi1QQUNLQUdFUyA9KyAiZnVzZS11dGlscy1kYmcgZnVzZS11dGlscyBsaWJ1bG9ja21nciBsaWJ1bG9ja21nci1kZXYgbGlidWxvY2ttZ3ItZGJnIgotCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAia2VybmVsLW1vZHVsZS1mdXNlIGxpYnVsb2NrbWdyIGZ1c2UtdXRpbHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliZnVzZS5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZnVzZSoubGEiCi0KLUZJTEVTX2xpYnVsb2NrbWdyID0gIiR7bGliZGlyfS9saWJ1bG9ja21nci5zby4qIgotRklMRVNfbGlidWxvY2ttZ3ItZGV2ICs9ICIke2xpYmRpcn0vbGlidWxvY2sqLmxhIgotRklMRVNfbGlidWxvY2ttZ3ItZGJnICs9ICIke2xpYmRpcn0vLmRlYnVnL2xpYnVsb2NrKiIKLQotIyBGb3JiaWQgYXV0by1yZW5hbWluZyB0byBsaWJmdXNlLXV0aWxzCi1GSUxFU19mdXNlLXV0aWxzID0gIiR7YmluZGlyfSAke2Jhc2Vfc2JpbmRpcn0iCi1GSUxFU19mdXNlLXV0aWxzLWRiZyA9ICIke2JpbmRpcn0vLmRlYnVnICR7YmFzZV9zYmluZGlyfS8uZGVidWciCi1ERUJJQU5fTk9BVVRPTkFNRV9mdXNlLXV0aWxzID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV9mdXNlLXV0aWxzLWRiZyA9ICIxIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIE1ha2UgdGhpcyBleHBsaWNpdCBzbyBvdmVycmlkaW5nIGJhc2Vfc2JpbmRpciBwcm9wYWdhdGVzIHByb3Blcmx5LgotICAgIGV4cG9ydCBNT1VOVF9GVVNFX1BBVEg9IiR7YmFzZV9zYmluZGlyfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2Jhc2VfcHJlZml4fS9kZXYKLQotICAgICMgc3lzdGVtZCBjbGFzcyByZW1vdmUgdGhlIHN5c3ZfaW5pdGRkaXIgb25seSBpZiBzeXN0ZW1kX3N5c3RlbV91bml0ZGlyCi0gICAgIyBjb250YWlucyBhbnl0aGluZywgYnV0IGl0J3Mgbm90IG5lZWRlZCBpZiBzeXN2aW5pdCBpcyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0gICAgICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgZmkKLQotICAgICMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBmaWxlCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZAotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9mdXNlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbW9kdWxlcy1sb2FkLmQKLSAgICBmaQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2VfMi45LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FhNzVjNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZV8yLjkuOC5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIkltcGxlbWVudGF0aW9uIG9mIGEgZnVsbHkgZnVuY3Rpb25hbCBmaWxlc3lzdGVtIGluIGEgdXNlcnNwYWNlIHByb2dyYW0iCitERVNDUklQVElPTiA9ICJGVVNFIChGaWxlc3lzdGVtIGluIFVzZXJzcGFjZSkgaXMgYSBzaW1wbGUgaW50ZXJmYWNlIGZvciB1c2Vyc3BhY2UgXAorICAgICAgICAgICAgICAgcHJvZ3JhbXMgdG8gZXhwb3J0IGEgdmlydHVhbCBmaWxlc3lzdGVtIHRvIHRoZSBMaW51eCBrZXJuZWwuIEZVU0UgXAorICAgICAgICAgICAgICAgYWxzbyBhaW1zIHRvIHByb3ZpZGUgYSBzZWN1cmUgbWV0aG9kIGZvciBub24gcHJpdmlsZWdlZCB1c2VycyB0byBcCisgICAgICAgICAgICAgICBjcmVhdGUgYW5kIG1vdW50IHRoZWlyIG93biBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucy4gXAorICAgICAgICAgICAgICAiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9saWJmdXNlIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9saWJmdXNlL3JlbGVhc2VzL2Rvd25sb2FkLyR7QlB9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9nb2xkLXVudmVyc2lvbmVkLXN5bWJvbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hYXJjaDY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVzZS1maXgtdGhlLXJldHVybi12YWx1ZS1vZi1oZWxwLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9mdXNlLmNvbmYgXAorIgorU1JDX1VSSVttZDVzdW1dID0gImYzNjVlODQ4YTgyNTA0ZWRiMGI3YTMzZGY3OTBjYTc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlODRmODFkOGRkNTI3ZWE3NGYzOWI2YmMwMDFjODc0YzAyYmFkNjg3MWQ3YTliMGMxNGVmYjU3NDMwZWFmZTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS9saWJmdXNlL3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnVzZVwtKD9QPHB2ZXI+MihcLlxkKykrKS50YXIuZ3oiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJmdXNlIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMyBTIC4gc3RvcCAyMCAwIDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiIKKworREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgImZ1c2UtdXRpbHMgbGlidWxvY2ttZ3IgbGlidWxvY2ttZ3ItZGV2IgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJmdXNlLXV0aWxzLWRiZyBsaWJ1bG9ja21nci1kYmciCisKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJrZXJuZWwtbW9kdWxlLWZ1c2UgbGlidWxvY2ttZ3IgZnVzZS11dGlscyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmdXNlKi5sYSIKKworRklMRVNfbGlidWxvY2ttZ3IgPSAiJHtsaWJkaXJ9L2xpYnVsb2NrbWdyLnNvLioiCitGSUxFU19saWJ1bG9ja21nci1kZXYgKz0gIiR7bGliZGlyfS9saWJ1bG9jayoubGEiCisKKyMgRm9yYmlkIGF1dG8tcmVuYW1pbmcgdG8gbGliZnVzZS11dGlscworRklMRVNfZnVzZS11dGlscyA9ICIke2JpbmRpcn0gJHtiYXNlX3NiaW5kaXJ9IgorREVCSUFOX05PQVVUT05BTUVfZnVzZS11dGlscyA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0tZGJnID0gIjEiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgTWFrZSB0aGlzIGV4cGxpY2l0IHNvIG92ZXJyaWRpbmcgYmFzZV9zYmluZGlyIHByb3BhZ2F0ZXMgcHJvcGVybHkuCisgICAgZXhwb3J0IE1PVU5UX0ZVU0VfUEFUSD0iJHtiYXNlX3NiaW5kaXJ9IgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfSR7YmFzZV9wcmVmaXh9L2RldgorCisgICAgIyBzeXN0ZW1kIGNsYXNzIHJlbW92ZSB0aGUgc3lzdl9pbml0ZGRpciBvbmx5IGlmIHN5c3RlbWRfc3lzdGVtX3VuaXRkaXIKKyAgICAjIGNvbnRhaW5zIGFueXRoaW5nLCBidXQgaXQncyBub3QgbmVlZGVkIGlmIHN5c3Zpbml0IGlzIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBmaQorCisgICAgIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Z1c2UuY29uZiAke0R9JHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZAorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L3BoeXNmcy9waHlzZnNfMi4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9waHlzZnMvcGh5c2ZzXzIuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzJjMTA2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L3BoeXNmcy9waHlzZnNfMi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlBoeXNpY3NGUyBpcyBhIGxpYnJhcnkgdG8gcHJvdmlkZSBhYnN0cmFjdCBhY2Nlc3MgdG8gdmFyaW91cyBhcmNoaXZlcyIKLUhPTUVBUEFHRSA9ICJodHRwOi8vaWNjdWx1cy5vcmcvcGh5c2ZzIgotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTVkOTRlM2VhYWExMGIwMGNhODAzYmEzNWEzZTg3Y2RlIgotREVQRU5EUyA9ICJyZWFkbGluZSB6bGliIgotCi1pbmhlcml0IGNtYWtlCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ljY3VsdXMub3JnLyR7QlBOfS9kb3dubG9hZHMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjMmM3MjdhOGE4ZGViNjIzYjUyMWI1MmQwMDgwZjYxMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYTg2MjA5N2MwZmI0NTFmMmNhY2QyODYxOTRkMDcxMjg5MzQyYzEwN2I2ZmU2OTA3OWMwNzk4ODNmZjY2YjY5IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvcGh5c2ZzL3BoeXNmc18zLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L3BoeXNmcy9waHlzZnNfMy4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M5N2RlYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L3BoeXNmcy9waHlzZnNfMy4wLjEuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJQaHlzaWNzRlMgaXMgYSBsaWJyYXJ5IHRvIHByb3ZpZGUgYWJzdHJhY3QgYWNjZXNzIHRvIHZhcmlvdXMgYXJjaGl2ZXMiCitIT01FQVBBR0UgPSAiaHR0cDovL2ljY3VsdXMub3JnL3BoeXNmcyIKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNjY4ZTJmYjA1MWMzZTU2NDE5OGUxNDZhOWEyZDlmMCIKK0RFUEVORFMgPSAicmVhZGxpbmUgemxpYiIKKworaW5oZXJpdCBjbWFrZQorCitQRSA9ICIxIgorCitTUkNfVVJJID0gImh0dHA6Ly9pY2N1bHVzLm9yZy8ke0JQTn0vZG93bmxvYWRzLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMzU5ZjEwMmJjYmQ2MmFjY2Y4NGVmMzJmNDg2MzI1NWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjc3YjlmODUzMTY4ZDk2MzZhNDRmNzVmY2EzNzJiMzYzMTA2ZjUyZDc4OWQxOGEyZjc3NjM5N2JmMTE3ZjJmMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsLzAwMDEtbGliYXUtRGVmaW5lLVNUUklQLXdlYWtseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczMmRjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbC8wMDAxLWxpYmF1LURlZmluZS1TVFJJUC13ZWFrbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGRhZjA0ZGM5Y2ExZjJlNGM2NWVjMzM4YWI0MzllMGE3OTJlMWE4YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDEwOjM2OjUyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmF1OiBEZWZpbmUgU1RSSVAgd2Vha2x5Ci0KLVNUUklQIGNhbiBiZSBzZXQgb24gZW52aXJvbm1lbnQgdG8gdXNlIGNyb3NzIHZlcnNpb24gb2Ygc3RyaXAgdXRpbGl0eQotaGFyZGNvZGluZyB0byBzdHJpcCBpcyBub3Qgd29ya2luZyBpbiBjcm9zcyBlbnZpcm9ubWVudAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBsaWJhdS9NYWtlZmlsZSB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXUvTWFrZWZpbGUgYi9saWJhdS9NYWtlZmlsZQotaW5kZXggODE1MjBhYy4uYzI1ZWVmMiAxMDA2NDQKLS0tLSBhL2xpYmF1L01ha2VmaWxlCi0rKysgYi9saWJhdS9NYWtlZmlsZQotQEAgLTI1LDYgKzI1LDcgQEAgTGliU29IZHIgPSBsaWJhdS5oIHJkdS5oCi0gTGliU29FeHBvcnQgPSAkKGFkZHN1ZmZpeCAuZXhwLCAkKGJhc2VuYW1lICR7TGliU29PYmp9KSkKLSBMaWJTb0V4cG9ydEVyciA9ICQoYWRkc3VmZml4IC5lcnIsICR7TGliU29FeHBvcnR9KQotIExpYlNvVmVyU2NyaXB0ID0gdmVyc2NyaXB0Ci0rU1RSSVAgPz0gc3RyaXAKLSAKLSBhbGw6ICR7TGliU299Ci0gCi1AQCAtNzcsNyArNzgsNyBAQCAke0xpYlNvfS4ke0xpYlNvTWFqb3J9LiR7TGliU29NaW5vcn06ICR7TGliU29PYmp9Ci0gCSR7Q0N9IC0tc2hhcmVkIC1XbCwtc29uYW1lLCR7TGliU299LiR7TGliU29NYWpvcn0gXAotIAkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJHtMaWJTb1ZlclNjcmlwdH0gXAotIAkJJHtMREZMQUdTfSAtbyAkQCAkXiAke0xETElCU30KLS0Jc3RyaXAgLVIgRVhQICRACi0rCSR7U1RSSVB9IC1SIEVYUCAkQAotICMJcmVhZGVsZiAtLXN5bXMgLS11c2UtZHluYW1pYyBsaWJhdS5zbwotIAotIGluc3RhbGxfdWxpYjogRmlsZSA9ICR7TGliU299LiR7TGliU29NYWpvcn0uJHtMaWJTb01pbm9yfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2F1ZnMtdXRpbC9hdWZzLXV0aWxfZ2l0LmJiCmluZGV4IDJlODU1ZTMuLjZkNzFmYzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9hdWZzLXV0aWwvYXVmcy11dGlsX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvYXVmcy11dGlsL2F1ZnMtdXRpbF9naXQuYmIKQEAgLTcsMTcgKzcsMTggQEAKIERFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSBhdWZzLXV0aWwtbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgogCi1TUkNSRVYgPSAiODlhZmIxODA2YzNkMmVlZDhkYjI2NjZhZTI1NGI3NzUxOGFlM2NlYiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvYXVmcy9hdWZzLXV0aWw7cHJvdG9jb2w9Z2l0O2JyYW5jaD1hdWZzNC40IFwKLSAgICAgICAgICAgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NmanJvL2F1ZnM0LWxpbnV4L2F1ZnM0LjQvaW5jbHVkZS91YXBpL2xpbnV4L2F1ZnNfdHlwZS5oO25hbWU9YXVmc190eXBlIFwKK1NSQ1JFViA9ICI4ZjM1ZGI1OWVmODMwNzhmODc4NzllYzI4MjhlMGJiNDU3MTllMGVmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9hdWZzL2F1ZnMtdXRpbDtwcm90b2NvbD1naXQ7YnJhbmNoPWF1ZnM0LjkgXAorICAgICAgICAgICBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2Zqcm8vYXVmczQtbGludXgvYXVmczQuOS9pbmNsdWRlL3VhcGkvbGludXgvYXVmc190eXBlLmg7bmFtZT1hdWZzX3R5cGUgXAogICAgICAgICAgICBmaWxlOi8vYXVmcy11dGlsLWRvbi10LXN0cmlwLWV4ZWN1dGFibGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2F1ZnMtdXRpbC1hZGQtdG9vbC1jb25jZXB0LXRvLU1ha2VmaWxlLWZvci1jcm9zcy1jb20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhdS1EZWZpbmUtU1RSSVAtd2Vha2x5LnBhdGNoIFwKICIKLVNSQ19VUklbYXVmc190eXBlLm1kNXN1bV0gPSAiZjdiNGEyNTVkY2I1NWZlN2IwOTY3ZjVmNTliNDRmMTkiCi1TUkNfVVJJW2F1ZnNfdHlwZS5zaGEyNTZzdW1dID0gIjg1YmM4ZTRjMWE5NGE3ZDUyNmMzODJlNGIwNDdiNDI1NmNhYjhjNGE2NWZjMDM5NjI5MTcwN2FkOWEzMjdhMTgiCitTUkNfVVJJW2F1ZnNfdHlwZS5tZDVzdW1dID0gImIzNzEyOWVmMDcwM2RlNzJhODUyZGI3ZTQ4YmRlZGM2IgorU1JDX1VSSVthdWZzX3R5cGUuc2hhMjU2c3VtXSA9ICI3ZmY2NTY2YWRiOWM3YTNiNjg2MmNkYzg1YTY5MGFiNTQ2ZjFkMGJjODFkZGQ1OTVmZDY2M2MwYTY5MDMxNjgzIgogCi1QViA9ICI0LjQrZ2l0JHtTUkNQVn0iCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKK1BWID0gIjQuOStnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2YyZnMtdG9vbHMvZjJmcy10b29scy8wMDAxLWYyZnMtdG9vbHMtVXNlLXNyY2Rpci1wcmVmaXgtdG8tZGVub3RlLWluY2x1ZGUtcGF0aC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mMmZzLXRvb2xzL2YyZnMtdG9vbHMvMDAwMS1mMmZzLXRvb2xzLVVzZS1zcmNkaXItcHJlZml4LXRvLWRlbm90ZS1pbmNsdWRlLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEzMjYxYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mMmZzLXRvb2xzL2YyZnMtdG9vbHMvMDAwMS1mMmZzLXRvb2xzLVVzZS1zcmNkaXItcHJlZml4LXRvLWRlbm90ZS1pbmNsdWRlLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAwZmI5ZDZiYzI1ZTkwM2Y3ODMxYTM4NDY4ODQ1ZWExNDNmYjVhZmQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTEgQXVnIDIwMTggMTg6NDk6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZjJmcy10b29sczogVXNlIHNyY2RpciBwcmVmaXggdG8gZGVub3RlIGluY2x1ZGUgcGF0aAorCitUaGlzIGhlbHBzIGJ1aWxkcyB3aGVuIGJ1aWxkZGlyICE9IHNyY2RpcgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvOC8xMi8xXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRvb2xzL3NnX3dyaXRlX2J1ZmZlci9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NnX3dyaXRlX2J1ZmZlci9NYWtlZmlsZS5hbSBiL3Rvb2xzL3NnX3dyaXRlX2J1ZmZlci9NYWtlZmlsZS5hbQoraW5kZXggOTIyYzMyOC4uMTljNDM4ZCAxMDA2NDQKKy0tLSBhL3Rvb2xzL3NnX3dyaXRlX2J1ZmZlci9NYWtlZmlsZS5hbQorKysrIGIvdG9vbHMvc2dfd3JpdGVfYnVmZmVyL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBNYWtlZmlsZS5hbQorIAorIGlmIExJTlVYCistQU1fQ1BQRkxBR1MgPSAtSS4vaW5jbHVkZQorK0FNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvaW5jbHVkZQorIEFNX0NGTEFHUyA9IC1XYWxsCisgc2Jpbl9QUk9HUkFNUyA9IHNnX3dyaXRlX2J1ZmZlcgorIHNnX3dyaXRlX2J1ZmZlcl9TT1VSQ0VTID0gc2dfd3JpdGVfYnVmZmVyLmMgXAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2YyZnMtdG9vbHMvZjJmcy10b29scy8wMDAyLUZpeC1ta2ZzLW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mMmZzLXRvb2xzL2YyZnMtdG9vbHMvMDAwMi1GaXgtbWtmcy1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNTYxY2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2YyZnMtdG9vbHMvZjJmcy10b29scy8wMDAyLUZpeC1ta2ZzLW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMDczMWVlZmQzODllMDE0MTlmNzhhMTE1ZTEzNjNlZDBjMjhjZmQzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJZb25nLCBKb25hdGhhbiIgPGpvbmF0aGFuLnlvbmdAaW50ZWwuY29tPgotRGF0ZTogVGh1LCAzMCBNYXIgMjAxNyAwODowMzozNyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggbWtmcyBvdXQgb2YgdHJlZSBidWlsZHMKLQotTGlicmFyaWVzIGFyZSBidWlsdCBpbiBidWlsZGRpciwgbm90IHNyY2RpciwgZml4IE1ha2VmaWxlLmFtCi1hY2NvcmRpbmdseS4KLQotU2lnbmVkLW9mZi1ieTogWW9uZywgSm9uYXRoYW4gPGpvbmF0aGFuLnlvbmdAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogSmFlZ2V1ayBLaW0gPGphZWdldWtAa2VybmVsLm9yZz4KLQotVGhlIHBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBmMmZzLXRvb2xzIHJlcG8KLShnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamFlZ2V1ay9mMmZzLXRvb2xzLmdpdCkKLWNvbW1pdCBJRCAwNzMxZWVmZDM4OWUwMTQxOWY3OGExMTVlMTM2M2VkMGMyOGNmZDNhLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkLCBleHBlY3RlZCB0byBiZSBpbmNsdWRlZCBpbiAxLjkuMC4KLQotU2lnbmVkLW9mZi1ieTogWW9uZywgSm9uYXRoYW4gPGpvbmF0aGFuLnlvbmdAaW50ZWwuY29tPgotCi0tLS0KLSBta2ZzL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWtmcy9NYWtlZmlsZS5hbSBiL21rZnMvTWFrZWZpbGUuYW0KLWluZGV4IDE2MmEwY2YuLjBlYThiNDkgMTAwNjQ0Ci0tLS0gYS9ta2ZzL01ha2VmaWxlLmFtCi0rKysgYi9ta2ZzL01ha2VmaWxlLmFtCi1AQCAtMTAsNSArMTAsNSBAQCBsaWJfTFRMSUJSQVJJRVMgPSBsaWJmMmZzX2Zvcm1hdC5sYQotIGxpYmYyZnNfZm9ybWF0X2xhX1NPVVJDRVMgPSBmMmZzX2Zvcm1hdF9tYWluLmMgZjJmc19mb3JtYXQuYyBmMmZzX2Zvcm1hdF91dGlscy5jCi0gbGliZjJmc19mb3JtYXRfbGFfQ0ZMQUdTID0gLURXSVRIX0JMS0RJU0NBUkQKLSBsaWJmMmZzX2Zvcm1hdF9sYV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCi0tbGliZjJmc19mb3JtYXRfbGFfTERGTEFHUyA9IC1sdXVpZCAtTCQodG9wX3NyY2RpcikvbGliIC1sZjJmcyBcCi0rbGliZjJmc19mb3JtYXRfbGFfTERGTEFHUyA9IC1sdXVpZCAtTCQodG9wX2J1aWxkZGlyKS9saWIgLWxmMmZzIFwKLSAJLXZlcnNpb24taW5mbyAkKEZNVF9DVVJSRU5UKTokKEZNVF9SRVZJU0lPTik6JChGTVRfQUdFKQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2YyZnMtdG9vbHMvZjJmcy10b29sc18xLjExLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZjJmcy10b29scy9mMmZzLXRvb2xzXzEuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQwMDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2YyZnMtdG9vbHMvZjJmcy10b29sc18xLjExLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJUb29scyBmb3IgRmxhc2gtRnJpZW5kbHkgRmlsZSBTeXN0ZW0gKEYyRlMpIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mMmZzLXRvb2xzLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM2MmI0YjI1OTRjZDM2MmI4NzRhOTc3MThmYWE1MWQzIgorCisjIHRvIHByb3ZpZGUgbGlidXVpZAorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCisjIHYxLjExLjAKK1NSQ1JFViA9ICJiOThmYWIzNjY2ZTQ5OGMyZTI3YWQ5ZGNkYTY4NzRjOWI2ODNmMDZiIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamFlZ2V1ay9mMmZzLXRvb2xzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1BQ19DSEVDS19GSUxFLWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWYyZnMtdG9vbHMtVXNlLXNyY2Rpci1wcmVmaXgtdG8tZGVub3RlLWluY2x1ZGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mMmZzLXRvb2xzL2YyZnMtdG9vbHNfMS44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZjJmcy10b29scy9mMmZzLXRvb2xzXzEuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTFjYjZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mMmZzLXRvb2xzL2YyZnMtdG9vbHNfMS44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIGZvciBGbGFzaC1GcmllbmRseSBGaWxlIFN5c3RlbSAoRjJGUykiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2YyZnMtdG9vbHMvIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzYyYjRiMjU5NGNkMzYyYjg3NGE5NzcxOGZhYTUxZDMiCi0KLSMgdG8gcHJvdmlkZSBsaWJ1dWlkCi1ERVBFTkRTID0gInV0aWwtbGludXgiCi0KLVNSQ1JFViA9ICIxZTdhZWRmOTliODVkMTZmOTRkMWQ4YWQyZmNmODQ2NDAzYmIyMTc0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamFlZ2V1ay9mMmZzLXRvb2xzLmdpdCBcCi0gICAgZmlsZTovLzAwMDEtUmVtb3ZlLUFDX0NIRUNLX0ZJTEUtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1GaXgtbWtmcy1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2giCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItT19FWENMLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtZm9yLU9fRVhDTC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjYwNDY4ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItT19FWENMLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4Y2Y0OGRhNWY2NDVkZDdiYmIxY2NiZWFiNWJiMDk2NGY0MGYxN2Y3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MTg6NDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIEluY2x1ZGUgZmNudGwuaCBmb3IgT19FWENMCi0KLUZpeAotZXJyb3I6ICdPX0NSRUFUJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGludnV0aWwvaW52aWR4LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2ludnV0aWwvaW52aWR4LmMgYi9pbnZ1dGlsL2ludmlkeC5jCi1pbmRleCA2N2VmZGY3Li4zMjVhOWExIDEwMDY0NAotLS0tIGEvaW52dXRpbC9pbnZpZHguYwotKysrIGIvaW52dXRpbC9pbnZpZHguYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNpbmNsdWRlICJ0eXBlcy5oIgotICNpbmNsdWRlICJtbG9nLmgiCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtVXNlLWM5OS1kZWZpbmVkLWludDY0X3QtaW5zdGVhZC1vZi1fX2ludDY0X3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtVXNlLWM5OS1kZWZpbmVkLWludDY0X3QtaW5zdGVhZC1vZi1fX2ludDY0X3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZTFiZGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBmMWU4MjJkNTQ2ZTA4Y2MxOTVlYWViMzhjYTE3MmJkMGMzODAwYWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgOSBTZXAgMjAxNyAwNzo0ODo0OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSB4ZnNkdW1wOiBVc2UgYzk5IGRlZmluZWQgaW50NjRfdCBpbnN0ZWFkIG9mIF9faW50NjRfdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gY29tbW9uL2hzbWFwaS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29tbW9uL2hzbWFwaS5jIGIvY29tbW9uL2hzbWFwaS5jCi1pbmRleCA2MDU0NzczLi4wNzA5ZGJlIDEwMDY0NAotLS0tIGEvY29tbW9uL2hzbWFwaS5jCi0rKysgYi9jb21tb24vaHNtYXBpLmMKLUBAIC01ODUsNyArNTg1LDcgQEAgSHNtTW9kaWZ5RXh0ZW50TWFwKAotIAlzdHJ1Y3QgZ2V0Ym1hcHgJKmJtYXApCi0gewotIAlkbWZfZl9jdHh0X3QJKmRtZl9mX2N0eHRwID0gKGRtZl9mX2N0eHRfdCAqKWNvbnRleHRwOwotLQlfX2ludDY0X3QJbGVuZ3RoOwotKwlpbnQ2NF90CQlsZW5ndGg7Ci0gCi0gCWlmIChibWFwWzBdLmJtdl9lbnRyaWVzIDw9IDApIHsKLSAJCXJldHVybiAxOwkvKiBjYWxsZXIgbXVzdCBhbHJlYWR5IGJlIGF0IEVPRiAqLwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDItUmVwbGFjZS1fX3VpbnQzMl90LXdpdGgtdWludDMyX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkM2UwYTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMi1SZXBsYWNlLV9fdWludDMyX3Qtd2l0aC11aW50MzJfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi1Gcm9tIGY3NmQyMTQyOTA1ZjBlNWJkODMwZDVkNTc2YzIzNWFmMTE3MWM2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAyMzoyMzozMSAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvNV0gUmVwbGFjZSBfX3VpbnQzMl90IHdpdGggdWludDMyX3QKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbW1vbi9jb250ZW50X2lub2RlLmggfCA0ICsrLS0KLSBkb2MveGZzZHVtcC5odG1sICAgICAgIHwgOCArKysrLS0tLQotIGludmVudG9yeS9pbnZfb3JlZi5oICAgfCAyICstCi0gaW52ZW50b3J5L2ludl9wcml2LmggICB8IDQgKystLQotIGludmVudG9yeS9pbnZlbnRvcnkuaCAgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbW1vbi9jb250ZW50X2lub2RlLmggYi9jb21tb24vY29udGVudF9pbm9kZS5oCi1pbmRleCBhNjlhOWEwLi42OTM2ZTA1IDEwMDY0NAotLS0tIGEvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAotKysrIGIvY29tbW9uL2NvbnRlbnRfaW5vZGUuaAotQEAgLTE5MSwxMCArMTkxLDEwIEBAIHR5cGVkZWYgc3RydWN0IGJzdGF0IGJzdGF0X3Q7Ci0gICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCi0gICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCi0gICovCi0tc3RhdGljIGlubGluZSBfX3VpbnQzMl90Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdAotIGJzdGF0X3Byb2ppZChzdHJ1Y3QgYnN0YXQgKmJzKQotIHsKLS0gICAgICAgIHJldHVybiAoX191aW50MzJfdClicy0+YnNfcHJvamlkX2hpIDw8IDE2IHwgYnMtPmJzX3Byb2ppZF9sbzsKLSsgICAgICAgIHJldHVybiAodWludDMyX3QpYnMtPmJzX3Byb2ppZF9oaSA8PCAxNiB8IGJzLT5ic19wcm9qaWRfbG87Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2RvYy94ZnNkdW1wLmh0bWwgYi9kb2MveGZzZHVtcC5odG1sCi1pbmRleCA5YzY3MjJlLi5mODUxMjhmIDEwMDY0NAotLS0tIGEvZG9jL3hmc2R1bXAuaHRtbAotKysrIGIvZG9jL3hmc2R1bXAuaHRtbAotQEAgLTE5MzUsNyArMTkzNSw3IEBAIFRoZSBmaWxlcyBhcmUgY29uc3RydWN0ZWQgbGlrZSBzbzoKLSA8cHJlPgotIHR5cGVkZWYgc3RydWN0IGludnRfY291bnRlciB7Ci0gICAgIElOVlRfQ09VTlRFUl9GSUVMRFMKLS0gICAgICAgIF9fdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKLSsgICAgICAgIHVpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCi0gICAgICAgICB1X2ludCAgICAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbyBmYXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICB1X2ludCAgICAgICAgIGljX21heG51bTsvKiBtYXhpbXVtIG51bWJlciBvZiBzZXNzaW9ucy9pbnZfaW5kaWNlcyBcCi1AQCAtMTk3NSw3ICsxOTc1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgaW52dF9mc3RhYiB7Ci0gPHByZT4KLSB0eXBlZGVmIHN0cnVjdCBpbnZ0X2NvdW50ZXIgewotICAgICBJTlZUX0NPVU5URVJfRklFTERTCi0tICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCi0rICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAotICAgICAgICAgdV9pbnQgICAgICAgICBpY19jdXJudW07LyogbnVtYmVyIG9mIHNlc3Npb25zL2ludmluZGljZXMgcmVjb3JkZWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gZmFyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgdV9pbnQgICAgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAotQEAgLTIwMTIsNyArMjAxMiw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgewotIDxwcmU+Ci0gdHlwZWRlZiBzdHJ1Y3QgaW52dF9zZXNjb3VudGVyIHsKLSAgICAgSU5WVF9DT1VOVEVSX0ZJRUxEUwotLSAgICAgICAgX191aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAotKyAgICAgICAgdWludDMyX3QgICAgaWNfdmVybnVtOy8qIG9uIGRpc2sgdmVyc2lvbiBudW1iZXIgZm9yIHBvc3Rlcml0eSAqL1wKLSAgICAgICAgIHVfaW50ICAgICAgICAgaWNfY3VybnVtOy8qIG51bWJlciBvZiBzZXNzaW9ucy9pbnZpbmRpY2VzIHJlY29yZGVkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvIGZhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIHVfaW50ICAgICAgICAgaWNfbWF4bnVtOy8qIG1heGltdW0gbnVtYmVyIG9mIHNlc3Npb25zL2ludl9pbmRpY2VzIFwKLUBAIC0yMDM0LDcgKzIwMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7Ci0gICAgIG9mZjY0X3QgICAgc2hfc3RyZWFtc19vZmY7IC8qIG9mZnNldCB0byBzdGFydCBvZiB0aGUgc2V0IG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSBoZHJzICovCi0gICAgIHRpbWVfdCAgICAgc2hfdGltZTsgICAgICAgIC8qIHRpbWUgb2YgdGhlIGR1bXAgKi8KLS0gICAgX191aW50MzJfdCBzaF9mbGFnOyAgICAgICAgLyogZm9yIG1pc2MgZmxhZ3MgKi8KLSsgICAgdWludDMyX3Qgc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCi0gICAgIHVfY2hhciAgICAgc2hfbGV2ZWw7ICAgICAgIC8qIGR1bXAgbGV2ZWwgKi8KLSAgICAgdV9jaGFyICAgICBzaF9wcnVuZWQ7ICAgICAgLyogcHJ1bmVkIGJ5IGludnV0aWwgZmxhZyAqLwotICAgICBjaGFyICAgICAgIHNoX3BhZGRpbmdbMjJdOwotZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZfb3JlZi5oIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKLWluZGV4IGUxNjY4NGQuLjM4MzAzYTQgMTAwNjQ0Ci0tLS0gYS9pbnZlbnRvcnkvaW52X29yZWYuaAotKysrIGIvaW52ZW50b3J5L2ludl9vcmVmLmgKLUBAIC00Niw3ICs0Niw3IEBACi0gCi0gCi0gCi0tdHlwZWRlZiBfX3VpbnQzMl90CWludnRfb2JqdHlwZV90OwotK3R5cGVkZWYgdWludDMyX3QJaW52dF9vYmp0eXBlX3Q7Ci0gCi0gI2RlZmluZSBJTlZUX0xPQ0tFRAkJMHgwMDAxCi0gCi1kaWZmIC0tZ2l0IGEvaW52ZW50b3J5L2ludl9wcml2LmggYi9pbnZlbnRvcnkvaW52X3ByaXYuaAotaW5kZXggMTY5MDI3MS4uMzY0ZmZiYyAxMDA2NDQKLS0tLSBhL2ludmVudG9yeS9pbnZfcHJpdi5oCi0rKysgYi9pbnZlbnRvcnkvaW52X3ByaXYuaAotQEAgLTEyMCw3ICsxMjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBpbnZ0X3Nlc2hkciB7Ci0gCW9mZjY0X3QJCXNoX3N0cmVhbXNfb2ZmOyAvKiBvZmZzZXQgdG8gc3RhcnQgb2YgdGhlIHNldCBvZiAKLSAJCQkJCSAgIHN0cmVhbSBoZHJzICovCi0gCXRpbWUzMl90CXNoX3RpbWU7ICAgICAgICAvKiB0aW1lIG9mIHRoZSBkdW1wICovCi0tCV9fdWludDMyX3QJc2hfZmxhZzsgICAgICAgIC8qIGZvciBtaXNjIGZsYWdzICovCi0rCXVpbnQzMl90CXNoX2ZsYWc7ICAgICAgICAvKiBmb3IgbWlzYyBmbGFncyAqLwotIAl1X2NoYXIJCXNoX2xldmVsOyAgICAgICAvKiBkdW1wIGxldmVsICovCi0gCXVfY2hhcgkJc2hfcHJ1bmVkOyAgICAgIC8qIHBydW5lZCBieSBpbnZ1dGlsIGZsYWcgKi8KLSAJY2hhcgkJc2hfcGFkZGluZ1syMl07Ci1AQCAtMTg0LDcgKzE4NCw3IEBAIHR5cGVkZWYgc3RydWN0IGludnRfZW50cnkgewotIAotIC8qIENoZWFwIEluaGVyaXRhbmNlLCBhbmQgYW4gYXR0ZW1wdCB0byBhdm9pZCBhIG5lc3RlZCB0eXBlICovCi0gI2RlZmluZSBJTlZUX0NPVU5URVJfRklFTERTICBcCi0tICAgICAgICBfX3VpbnQzMl90ICAgIGljX3Zlcm51bTsvKiBvbiBkaXNrIHZlcnNpb24gbnVtYmVyIGZvciBwb3N0ZXJpdHkgKi9cCi0rICAgICAgICB1aW50MzJfdCAgICBpY192ZXJudW07Lyogb24gZGlzayB2ZXJzaW9uIG51bWJlciBmb3IgcG9zdGVyaXR5ICovXAotIAl1aW50CSAgICAgIGljX2N1cm51bTsvKiBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52aW5kaWNlcyByZWNvcmRlZCBcCi0gCQkJCSAgIHNvIGZhciAqLwkJCQkgIFwKLSAJdWludAkgICAgICBpY19tYXhudW07LyogbWF4aW11bSBudW1iZXIgb2Ygc2Vzc2lvbnMvaW52X2luZGljZXMgXAotZGlmZiAtLWdpdCBhL2ludmVudG9yeS9pbnZlbnRvcnkuaCBiL2ludmVudG9yeS9pbnZlbnRvcnkuaAotaW5kZXggMTM0YjliYS4uYzFkNzQwMyAxMDA2NDQKLS0tLSBhL2ludmVudG9yeS9pbnZlbnRvcnkuaAotKysrIGIvaW52ZW50b3J5L2ludmVudG9yeS5oCi1AQCAtNDMsNyArNDMsNyBAQAotIC8qIGxlbmd0aCBvZiBsYWJlbHMsIG1udHB0cywgZXRjICovCi0gI2RlZmluZSBJTlZfU1RSTEVOICAgICAgICAgICAgICBHTE9CQUxfSERSX1NUUklOR19TWgotIAotLXR5cGVkZWYgX191aW50MzJfdAkJaW52X3ZlcnNpb25fdDsKLSt0eXBlZGVmIHVpbnQzMl90CQlpbnZfdmVyc2lvbl90OwotIAotIC8qIFRoaXMgaXMgdGhlIGdlbmVyYWwgaW52ZW50b3J5IHZlcnNpb24uIAotICAqLwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMy1yZXBsYWNlLXVzZS1vZi1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwMy1yZXBsYWNlLXVzZS1vZi1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMTMwM2Q4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDMtcmVwbGFjZS11c2Utb2YtU0lHQ0xELXdpdGgtU0lHQ0hMRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gZmNjMGNmMTVhMzA5OTQ3MTAzYTA2OTViOGExZjQ4NjViODIwZWI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDIzOjI2OjAzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSByZXBsYWNlIHVzZSBvZiBTSUdDTEQgd2l0aCBTSUdDSExECi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb21tb24vbWFpbi5jICAgIHwgMiArLQotIGRvYy94ZnNkdW1wLmh0bWwgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vbWFpbi5jIGIvY29tbW9uL21haW4uYwotaW5kZXggMzg0ODQ5OS4uZmFhNjZlZSAxMDA2NDQKLS0tLSBhL2NvbW1vbi9tYWluLmMKLSsrKyBiL2NvbW1vbi9tYWluLmMKLUBAIC0yMjI1LDcgKzIyMjUsNyBAQCBzdGF0aWMgc2lnX3ByaW50bWFwX3Qgc2lnX3ByaW50bWFwWyBdID0gewotIAl7U0lHVEVSTSwJIlNJR1RFUk0ifSwKLSAJe1NJR1VTUjEsCSJTSUdVU1IxIn0sCi0gCXtTSUdVU1IyLAkiU0lHVVNSMiJ9LAotLQl7U0lHQ0xELAkiU0lHQ0xEIn0sCi0rCXtTSUdDSExELAkiU0lHQ0hMRCJ9LAotIAl7U0lHUFdSLAkiU0lHUFdSIn0sCi0gCXtTSUdVUkcsCSJTSUdVUkcifSwKLSAJe1NJR1BPTEwsCSJTSUdQT0xMIn0sCi1kaWZmIC0tZ2l0IGEvZG9jL3hmc2R1bXAuaHRtbCBiL2RvYy94ZnNkdW1wLmh0bWwKLWluZGV4IGY4NTEyOGYuLmQ5NmYwMzcgMTAwNjQ0Ci0tLS0gYS9kb2MveGZzZHVtcC5odG1sCi0rKysgYi9kb2MveGZzZHVtcC5odG1sCi1AQCAtMzM0LDcgKzMzNCw3IEBAIHRoZSByaW5nIGJ1ZmZlci4gSXQgaWdub3JlcyBzaWduYWxzIGFuZCBkb2VzIG5vdCB0ZXJtaW5hdGUgdW50aWwgaXQKLSByZWNlaXZlcyBhIFJJTkdfT1BfRElFIG1lc3NhZ2UuIEl0IHRoZW4gZXhpdHMgMC4KLSA8cD4KLSBUaGUgbWFpbiBwcm9jZXNzIHNsZWVwcyB3YWl0aW5nIGZvciBhbnkgb2YgaXRzIGNoaWxkcmVuIHRvIGRpZQotLShpZS4gd2FpdGluZyBmb3IgYSBTSUdDTEQpLiBBbGwgY2hpbGRyZW4gdGhhdCBpdCBjYXJlcyBhYm91dCAoc3RyZWFtCi0rKGllLiB3YWl0aW5nIGZvciBhIFNJR0NITEQpLiBBbGwgY2hpbGRyZW4gdGhhdCBpdCBjYXJlcyBhYm91dCAoc3RyZWFtCi0gbWFuYWdlcnMgYW5kIHJpbmcgYnVmZmVyIHNsYXZlcykgYXJlIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgY2hpbGQKLSBtYW5hZ2VyIGFic3RyYWN0aW9uLiBXaGVuIGEgY2hpbGQgZGllcyB3YWl0IHN0YXR1cyBhbmQgb3RoZXIgaW5mbyBpcwotIHN0b3JlZCB3aXRoIGl0cyBlbnRyeSBpbiB0aGUgY2hpbGQgbWFuYWdlci4gbWFpbigpIGlnbm9yZXMgdGhlIGRlYXRocwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwNC1pbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwNC1pbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmVhMTViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gOThjN2Q5NmYwZjJjNmVkZGY2MGFhNGExYTA4ZDdkNDQ2NzY0NTkzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEzIEp1bCAyMDE3IDIzOjI4OjEwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBpbmNsdWRlIGxpbWl0LmggZm9yIFBBVEhfTUFYCi0KLWZpeGVkCi12YXIuYzo0MjoxMjogZXJyb3I6ICdQQVRIX01BWCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JBTkRfTUFYJz8KLSAgY2hhciBwYXRoW1BBVEhfTUFYXTtgCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBkdW1wL3Zhci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9kdW1wL3Zhci5jIGIvZHVtcC92YXIuYwotaW5kZXggNjQ1Y2FhYi4uODE1NmQzNyAxMDA2NDQKLS0tLSBhL2R1bXAvdmFyLmMKLSsrKyBiL2R1bXAvdmFyLmMKLUBAIC0xNiw2ICsxNiw3IEBACi0gICogSW5jLiwgIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gICovCi0gCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNmU0NjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvMDAwNS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X2ludDMyX3QtaW4tYXR0ci1hdHRyaWJ1dGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBkOTVmNDk0ZGUxYWE4MTIzYzc0MTcwZmZlYmFlZDhlYTg5NjQ5ZGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MzM6NDQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfaW50MzJfdCBpbiBhdHRyL2F0dHJpYnV0ZXMuaAotCi1lcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3VfaW50MzJfdCcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHJlc3RvcmUvY29udGVudC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9yZXN0b3JlL2NvbnRlbnQuYyBiL3Jlc3RvcmUvY29udGVudC5jCi1pbmRleCA3YzRhODFmLi4xZDVkZTFiIDEwMDY0NAotLS0tIGEvcmVzdG9yZS9jb250ZW50LmMKLSsrKyBiL3Jlc3RvcmUvY29udGVudC5jCi1AQCAtMjQsNiArMjQsNyBAQAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KLSAjaW5jbHVkZSA8eGZzL2hhbmRsZS5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlmMTE4OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCi1ERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAotICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAotICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAotICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCi0gICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKLURFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9mcy94ZnMveGZzZHVtcC8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1mb3ItT19FWENMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1fX3VpbnQzMl90LXdpdGgtdWludDMyX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1yZXBsYWNlLXVzZS1vZi1TSUdDTEQtd2l0aC1TSUdDSExELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtaW5jbHVkZS1saW1pdC5oLWZvci1QQVRIX01BWC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfaW50MzJfdC1pbi1hdHRyLWF0dHJpYnV0ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS14ZnNkdW1wLVVzZS1jOTktZGVmaW5lZC1pbnQ2NF90LWluc3RlYWQtb2YtX19pbnQ2NF90LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImM2ZTkxZjJhYzhiNzZjNzk2ZGIyZDIzNmY1Y2E1OTQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk5ZTZkNGRmMjU3ZWJjNmQyOWNhOWU5NzBjYTIwNjcyYzJlYTAzNDgxYWQ5NDliYzY4Zjk4ZGUzZTRkNTZkY2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1QQVJBTExFTF9NQUtFID0gIiIKLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dldHRleHRdID0gIi0tZW5hYmxlLWdldHRleHQ9eWVzLC0tZW5hYmxlLWdldHRleHQ9bm8sZ2V0dGV4dCIKLQotQ0ZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1FWFRSQV9PRU1BS0UgKz0gIidMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wnIFY9MSIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBleHBvcnQgREVCVUc9Ii1ETkRFQlVHIgotICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLmd1ZXNzICR7U30KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5zdWIgJHtTfQotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgZXhwb3J0IERJU1RfUk9PVD0ke0R9Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi0gICAgb2VfcnVubWFrZSBpbnN0YWxsLWRldgotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhYjMwYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjguYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBEdW1wIFV0aWxpdHkiCitERVNDUklQVElPTiA9ICJUaGUgeGZzZHVtcCBwYWNrYWdlIGNvbnRhaW5zIHhmc2R1bXAsIHhmc3Jlc3RvcmUgYW5kIGEgXAorICAgICAgICAgICAgICAgbnVtYmVyIG9mIG90aGVyIHV0aWxpdGllcyBmb3IgYWRtaW5pc3RlcmluZyBYRlMgZmlsZXN5c3RlbXMuXAorICAgICAgICAgICAgICAgeGZzZHVtcCBleGFtaW5lcyBmaWxlcyBpbiBhIGZpbGVzeXN0ZW0sIGRldGVybWluZXMgd2hpY2ggXAorICAgICAgICAgICAgICAgbmVlZCB0byBiZSBiYWNrZWQgdXAsIGFuZCBjb3BpZXMgdGhvc2UgZmlsZXMgdG8gYSBcCisgICAgICAgICAgICAgICBzcGVjaWZpZWQgZGlzaywgdGFwZSBvciBvdGhlciBzdG9yYWdlIG1lZGl1bS4iCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT0xNWM4MzI4OTRkMTBkZGQwMGRmY2Y1N2JlZTQ5MGVjYyIKK0RFUEVORFMgPSAieGZzcHJvZ3MgYXR0ciIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9mcy94ZnMveGZzZHVtcC8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluc3RhbGwtYXMtdXNlci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NGQzYmMyODdiNGEyYmI1ZDE2YjIzMjBhNDcwNDlhNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDE0ZTY3YWU1YjI3M2MyNjk4ZTc2N2I0M2E0NmYwMzNkMzYxZTU0MGZlMTNmZWFhZjliMTEwZWUwZWRjNTg1IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworUEFSQUxMRUxfTUFLRSA9ICIiCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnZXR0ZXh0XSA9ICItLWVuYWJsZS1nZXR0ZXh0PXllcywtLWVuYWJsZS1nZXR0ZXh0PW5vLGdldHRleHQiCisKK0NGTEFHUyArPSAiLURfRklMRV9PRkZTRVRfQklUUz02NCIKKworRVhUUkFfT0VNQUtFICs9ICInTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sJyBWPTEiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgZXhwb3J0IERFQlVHPSItRE5ERUJVRyIKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIGV4cG9ydCBESVNUX1JPT1Q9JHtEfQorICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorICAgIG9lX3J1bm1ha2UgaW5zdGFsbC1kZXYKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLUNoZWNrLWZvci1NQVBfU1lOQy1pbi1zeXMtbW1hbi5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEtQ2hlY2stZm9yLU1BUF9TWU5DLWluLXN5cy1tbWFuLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzViMjI3YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLUNoZWNrLWZvci1NQVBfU1lOQy1pbi1zeXMtbW1hbi5oLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gZjQxZWYxZjA2ZDQyOGM4MWZjZGVmNzNkODk2ZGZjN2NlZGExODA5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIzIEF1ZyAyMDE4IDA0OjU5OjM5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGZvciBNQVBfU1lOQyBpbiBzeXMvbW1hbi5oCisKK05vdCBhbGwgYXJjaGVzIGhhdmUgd2lyZWQgTUFQX1NZTkMgZS5nLiBtaXBzCit3aGljaCBoYXZlIGNvbmZsaWN0cyB3aXRoIGRlZmluaXRpb24sIHNvIGNoZWNraW5nCithIGdlbmVyaWMgZmlsZSBpcyBnb2luZyB0byBtaXMtY29uZmlndXJlIHhmc3Byb2dzCitmb3Igc3VjaCBhcmNoZXMuCisKK2xpYmMgbm93IGhhcyBhZGRlZCB0aGUgcmVsZXZhbnQgbWFjcm9zIHRvCitzeXMvbW1hbi5oLCBhbmQgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWVzIGZvciBhcmNoZXMKK3doZXJlIGl0cyBpbXBsZW1lbnRlZCBhbmQgbm90aGluZyBmb3Igb3RoZXJzCit1bmxpa2UgYXNtLWdlbmVyaWMvbW1hbi5oIHdoaWNoIG9ubHkgY2hlY2tzCitmb3Iga2VybmVsIGhlYWRlcnMgYW5kIGlnbm9yZWQgYXJjaGVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS9saW51eC5oICAgICAgIHwgMyArLS0KKyBtNC9wYWNrYWdlX2xpYmNkZXYubTQgfCAzICstLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC5oIGIvaW5jbHVkZS9saW51eC5oCitpbmRleCAxOTk4OTQxLi43ZTVjOWFiIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9saW51eC5oCisrKysgYi9pbmNsdWRlL2xpbnV4LmgKK0BAIC0zMzEsOCArMzMxLDcgQEAgZnNtYXBfYWR2YW5jZSgKKyAjZGVmaW5lIE1BUF9TWU5DIDAKKyAjZGVmaW5lIE1BUF9TSEFSRURfVkFMSURBVEUgMAorICNlbHNlCistI2luY2x1ZGUgPGFzbS1nZW5lcmljL21tYW4uaD4KKy0jaW5jbHVkZSA8YXNtLWdlbmVyaWMvbW1hbi1jb21tb24uaD4KKysjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAjZW5kaWYgLyogSEFWRV9NQVBfU1lOQyAqLworIAorICNlbmRpZgkvKiBfX1hGU19MSU5VWF9IX18gKi8KK2RpZmYgLS1naXQgYS9tNC9wYWNrYWdlX2xpYmNkZXYubTQgYi9tNC9wYWNrYWdlX2xpYmNkZXYubTQKK2luZGV4IDBhNmI1MTQuLjJiNDdkMmYgMTAwNjQ0CistLS0gYS9tNC9wYWNrYWdlX2xpYmNkZXYubTQKKysrKyBiL200L3BhY2thZ2VfbGliY2Rldi5tNAorQEAgLTMzNSw4ICszMzUsNyBAQCBBQ19ERUZVTihbQUNfSEFWRV9TVEFURlNfRkxBR1NdLAorIEFDX0RFRlVOKFtBQ19IQVZFX01BUF9TWU5DXSwKKyAgIFsgQUNfTVNHX0NIRUNLSU5HKFtmb3IgTUFQX1NZTkNdKQorICAgICBBQ19UUllfQ09NUElMRShbCistI2luY2x1ZGUgPGFzbS1nZW5lcmljL21tYW4uaD4KKy0jaW5jbHVkZSA8YXNtLWdlbmVyaWMvbW1hbi1jb21tb24uaD4KKysjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAgICAgXSwgWworICAgICAgICAgaW50IGZsYWdzID0gTUFQX1NZTkMgfCBNQVBfU0hBUkVEX1ZBTElEQVRFOworICAgICBdLCBoYXZlX21hcF9zeW5jPXllcwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEtYnVpbGQtQ2hlY2stZm9yLXN5bmNfZmlsZV9yYW5nZS1saWJjLWZ1bmN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzLzAwMDEtYnVpbGQtQ2hlY2stZm9yLXN5bmNfZmlsZV9yYW5nZS1saWJjLWZ1bmN0aW9uLnBhdGNoCmluZGV4IGQ4ZmY1NTUuLjIzMWRhODAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAxLWJ1aWxkLUNoZWNrLWZvci1zeW5jX2ZpbGVfcmFuZ2UtbGliYy1mdW5jdGlvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMS1idWlsZC1DaGVjay1mb3Itc3luY19maWxlX3JhbmdlLWxpYmMtZnVuY3Rpb24ucGF0Y2gKQEAgLTEsMTQgKzEsMTQgQEAKLUZyb20gYWU3MTcyMTk0ZDNmYmI1NjNmZjhiYmU3YzAyZDM0ZjFiZDBlNWVjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjhhMjJmMTZjMDNlNTFkM2M3NzliMTJmMzdkMzYyZmFhYTBlY2YzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDIxOjI4OjUzIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBDaGVjayBmb3Igc3luY19maWxlX3JhbmdlIGxpYmMgZnVuY3Rpb24KIAogZ2xpYmMgMi4yNyBub3cgaGFzIHN5bmNfZmlsZV9yYW5nZSgpCiAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCiAgaW5jbHVkZS9idWlsZGRlZnMuaW4gfCAxICsKICBpby9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKy0KICBpby9pby5oICAgICAgICAgICAgICB8IDIgKy0KQEAgLTE2LDEwICsxNiwxMCBAQAogIDQgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZGRlZnMuaW4gYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotaW5kZXggOTJkNTA3Ni4uNTA0MjI1YSAxMDA2NDQKK2luZGV4IGI4OTU5NDkuLmEzODhjODMgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2J1aWxkZGVmcy5pbgogKysrIGIvaW5jbHVkZS9idWlsZGRlZnMuaW4KLUBAIC0xMDUsNiArMTA1LDcgQEAgSEFWRV9GSUVNQVAgPSBAaGF2ZV9maWVtYXBACitAQCAtOTUsNiArOTUsNyBAQCBIQVZFX0ZJRU1BUCA9IEBoYXZlX2ZpZW1hcEAKICBIQVZFX1BSRUFEViA9IEBoYXZlX3ByZWFkdkAKICBIQVZFX1BXUklURVYyID0gQGhhdmVfcHdyaXRldjJACiAgSEFWRV9DT1BZX0ZJTEVfUkFOR0UgPSBAaGF2ZV9jb3B5X2ZpbGVfcmFuZ2VACkBAIC0yOCwxMCArMjgsMTAgQEAKICBIQVZFX1NZTkNGUyA9IEBoYXZlX3N5bmNmc0AKICBIQVZFX1JFQURESVIgPSBAaGF2ZV9yZWFkZGlyQAogZGlmZiAtLWdpdCBhL2lvL01ha2VmaWxlIGIvaW8vTWFrZWZpbGUKLWluZGV4IDY3MjU5MzYuLjE4NzZlOTUgMTAwNjQ0CitpbmRleCAwMGVkZTQ4Li5kZDAwMWIwIDEwMDY0NAogLS0tIGEvaW8vTWFrZWZpbGUKICsrKyBiL2lvL01ha2VmaWxlCi1AQCAtNTksMTAgKzU5LDEzIEBAIENGSUxFUyArPSBpbmplY3QuYyByZXNibGtzLmMKK0BAIC02MCwxMCArNjAsMTMgQEAgQ0ZJTEVTICs9IGluamVjdC5jIHJlc2Jsa3MuYwogIExDRkxBR1MgKz0gLURIQVZFX0lOSkVDVCAtREhBVkVfUkVTQkxLUwogIGVuZGlmCiAgCkBAIC00NywxMCArNDcsMTAgQEAKICBpZmVxICgkKEhBVkVfU1lOQ19GSUxFX1JBTkdFKSx5ZXMpCiAgQ0ZJTEVTICs9IHN5bmNfZmlsZV9yYW5nZS5jCiBkaWZmIC0tZ2l0IGEvaW8vaW8uaCBiL2lvL2lvLmgKLWluZGV4IDM4NjI5ODUuLjc5ZGRjN2IgMTAwNjQ0CitpbmRleCBlMWYzZDk1Li5mZTJlNmEyIDEwMDY0NAogLS0tIGEvaW8vaW8uaAogKysrIGIvaW8vaW8uaAotQEAgLTE1OCw3ICsxNTgsNyBAQCBleHRlcm4gdm9pZAkJZmllbWFwX2luaXQodm9pZCk7CitAQCAtMTUxLDcgKzE1MSw3IEBAIGV4dGVybiB2b2lkCQlmaWVtYXBfaW5pdCh2b2lkKTsKICAjZGVmaW5lIGZpZW1hcF9pbml0KCkJZG8geyB9IHdoaWxlICgwKQogICNlbmRpZgogIApAQCAtNjAsMjMgKzYwLDIwIEBACiAgI2Vsc2UKICAjZGVmaW5lIGNvcHlfcmFuZ2VfaW5pdCgpCWRvIHsgfSB3aGlsZSAoMCkKIGRpZmYgLS1naXQgYS9pby9zeW5jX2ZpbGVfcmFuZ2UuYyBiL2lvL3N5bmNfZmlsZV9yYW5nZS5jCi1pbmRleCA3ZTRmM2U2Li5hYWZlYTAxIDEwMDY0NAoraW5kZXggMzBiYmM5My4uNmM0OWQ3MyAxMDA2NDQKIC0tLSBhL2lvL3N5bmNfZmlsZV9yYW5nZS5jCiArKysgYi9pby9zeW5jX2ZpbGVfcmFuZ2UuYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAgKiBJbmMuLCAgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKK0BAIC00LDYgKzQsNyBAQAorICAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICovCiAgCiArI2lmbmRlZiBIQVZFX0NPUFlfRklMRV9SQU5HRQogICNpbmNsdWRlICJjb21tYW5kLmgiCiAgI2luY2x1ZGUgImlucHV0LmgiCiAgI2luY2x1ZGUgImluaXQuaCIKLUBAIC0xMDQsMyArMTA1LDUgQEAgc3luY19yYW5nZV9pbml0KHZvaWQpCitAQCAtOTIsMyArOTMsNSBAQCBzeW5jX3JhbmdlX2luaXQodm9pZCkKICAKICAJYWRkX2NvbW1hbmQoJnN5bmNfcmFuZ2VfY21kKTsKICB9CiArCiArI2VuZGlmCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMi1pbmNsdWRlLWluY2x1ZGUteGZzLWxpbnV4LmgtYWZ0ZXItc3lzLW1tYW4uaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy8wMDAyLWluY2x1ZGUtaW5jbHVkZS14ZnMtbGludXguaC1hZnRlci1zeXMtbW1hbi5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MjRjZDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MvZmlsZXMvMDAwMi1pbmNsdWRlLWluY2x1ZGUteGZzLWxpbnV4LmgtYWZ0ZXItc3lzLW1tYW4uaC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDExYTQyZGYzOTRkZTNkYzUyMGU3MmEwMTYyOTZkY2M2ZGVhMDJhN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMyBBdWcgMjAxOCAwNTozMzo1NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGluY2x1ZGUveGZzL2xpbnV4LmggYWZ0ZXIgPHN5cy9tbWFuLmg+CisKK1RoaXMgaGVscHMgY29tcGlsaW5nIHdpdGggbXVzbCB3aGljaCBnb2VzIGFoZWFkIGFuZCB1bmRlZmluZXMgTUFQX1NZTkMKK2ZvciBtaXBzIGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzIHdoZXJlIGl0cyBub3Qgd2lyZWQgaW4ga2VybmVsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW8vbW1hcC5jIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pby9tbWFwLmMgYi9pby9tbWFwLmMKK2luZGV4IGRiZmNjYTUuLmNhMDBkZjEgMTAwNjQ0CistLS0gYS9pby9tbWFwLmMKKysrKyBiL2lvL21tYXAuYworQEAgLTQsMTAgKzQsMTEgQEAKKyAgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICAqLworIAorLSNpbmNsdWRlICJjb21tYW5kLmgiCistI2luY2x1ZGUgImlucHV0LmgiCisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorKworKyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgImlucHV0LmgiCisgI2luY2x1ZGUgImluaXQuaCIKKyAjaW5jbHVkZSAiaW8uaCIKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9kaXNhYmxlLXhmc19zY3J1Yi1idWlsZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy9maWxlcy9kaXNhYmxlLXhmc19zY3J1Yi1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDdiNGI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL2ZpbGVzL2Rpc2FibGUteGZzX3NjcnViLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMmJkNDBlNWVkNGRmMGIwYTQyYmVmZjg4MDZiMWVjNWRhYTM3MmM0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTY6NDk6NDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSB4ZnNfc2NydWIgYnVpbGQKKworRGlzYWJsZSB4ZnNfc2NydWIgYnVpbGQgc2luY2UgaXQgaXMgZXhwZXJpbWVudGFsLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDdkZGZhMzEuLmNkNjAzMTkgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC00OCw3ICs0OCw3IEBAIExJQkZST0dfU1VCRElSID0gbGliZnJvZworIERMSUJfU1VCRElSUyA9IGxpYnhsb2cgbGlieGNtZCBsaWJoYW5kbGUKKyBMSUJfU1VCRElSUyA9IGxpYnhmcyAkKERMSUJfU1VCRElSUykKKyBUT09MX1NVQkRJUlMgPSBjb3B5IGRiIGVzdGltYXRlIGZzY2sgZ3Jvd2ZzIGlvIGxvZ3ByaW50IG1rZnMgcXVvdGEgXAorLQkJbWRyZXN0b3JlIHJlcGFpciBydGNwIG00IG1hbiBkb2MgZGViaWFuIHNwYWNlbWFuIHNjcnViCisrCQltZHJlc3RvcmUgcmVwYWlyIHJ0Y3AgbTQgbWFuIGRvYyBkZWJpYW4gc3BhY2VtYW4KKyAKKyBpZm5lcSAoIiQoUEtHX1BMQVRGT1JNKSIsImRhcndpbiIpCisgVE9PTF9TVUJESVJTICs9IGZzcgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNC4xNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ3NmFmZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNC4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBVdGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDRU5TRV9saWJoYW5kbGUgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTAyZjdmZWMzZDUzYzdjOGYwYjdiYWY5YmY5ZDc2YTgiCi1ERVBFTkRTID0gInV0aWwtbGludXggdXRpbC1saW51eC1uYXRpdmUiCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNwcm9ncy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2ZsYWdzX2Zyb21fYnVpbGRfZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1DaGVjay1mb3Itc3luY19maWxlX3JhbmdlLWxpYmMtZnVuY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ1MGUzNzUxY2M5OGU2YzkzNjRiYzNkMjI5N2I5ZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFiNzEwYjI2OGJjOTVkNmY0NWVjYTA2ZTEyNjJjMjllYjM4ODY1YTE5Y2Q0NDA0ZTQ4YmE0NDZlMDQzYjdlYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VTID0rICIke1BOfS1mc2NrICR7UE59LW1rZnMgJHtQTn0tcmVwYWlyIGxpYmhhbmRsZSIKLQotREVQRU5EUyArPSAidXRpbC1saW51eCIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tZnNjayAke1BOfS1ta2ZzICR7UE59LXJlcGFpciIKLQotRklMRVNfJHtQTn0tZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZnNjay54ZnMiCi1GSUxFU18ke1BOfS1ta2ZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2ZzLnhmcyIKLUZJTEVTXyR7UE59LXJlcGFpciA9ICIke2Jhc2Vfc2JpbmRpcn0veGZzX3JlcGFpciIKLQotRklMRVNfbGliaGFuZGxlID0gIiR7YmFzZV9saWJkaXJ9L2xpYmhhbmRsZSR7U09MSUJTfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWdldHRleHQ9bm8gXAotICAgICAgICAgICAgICAgIElOU1RBTExfVVNFUj1yb290IFwKLSAgICAgICAgICAgICAgICBJTlNUQUxMX0dST1VQPXJvb3QgXAotICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9haW9faD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2xpYl9ydF9saW9fbGlzdGlvPXllcyBcCi0iCi0KLURJU0FCTEVfU1RBVElDID0gIiIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vbTQgLS1leGNsdWRlPWF1dG9oZWFkZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSBibGtpZCIKLQotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmU9eWVzLC0tZW5hYmxlLXJlYWRsaW5lPW5vLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tibGtpZF0gPSAiLS1lbmFibGUtYmxraWQ9eWVzLC0tZW5hYmxlLWJsa2lkPW5vLHV0aWwtbGludXgiCi0KLWV4cG9ydCBERUJVRz0iLUROREVCVUciCi1leHBvcnQgQlVJTERfVkVSQk9TRT0iMSIKLWV4cG9ydCB0YWduYW1lPSJDQyIKLQotRVhUUkFfT0VNQUtFID0gIkRJU1RfUk9PVD0nJHtEfSciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBleHBvcnQgQlVJTERfQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSIKLSAgICAjIFByZXZlbnQgTWFrZWZpbGUgZnJvbSBjYWxsaW5nIGNvbmZpZ3VyZSB3aXRob3V0IGFyZ3VtZW50cywKLSAgICAjIHdoZW4gZG9fY29uZmlndXJlIGdldHMgY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lLgotICAgIHJtIC1mICR7Qn0vaW5jbHVkZS9idWlsZGRlZnMgJHtCfS9pbmNsdWRlL3BsYXRmb3JtX2RlZnMuaCAke0J9L2NvbmZpZ3VyZQotICAgICMgUmVjcmVhdGUgY29uZmlndXJlIHNjcmlwdC4KLSAgICBvZV9ydW5tYWtlIGNvbmZpZ3VyZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWRldgotICAgICAgICBybSAke0R9JHtsaWJkaXJ9LyoubGEKLSAgICAgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzQuMTguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjE4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExYmFjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc180LjE4LjAuYmIKQEAgLTAsMCArMSw2OCBAQAorU1VNTUFSWSA9ICJYRlMgRmlsZXN5c3RlbSBVdGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMveGZzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDRU5TRV9saWJoYW5kbGUgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUy9HUEwtMi4wO21kNT03NDI3NGU4YTIxODQyM2U0OWVlZmRlYTgwYmM1NTAzOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFUy9MR1BMLTIuMTttZDU9YjM3MDg4Nzk4MGRiNWRkNDA2NTliNTA5MDkyMzhkYmQiCitERVBFTkRTID0gInV0aWwtbGludXggdXRpbC1saW51eC1uYXRpdmUiCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNwcm9ncy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2ZsYWdzX2Zyb21fYnVpbGRfZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1DaGVjay1mb3Itc3luY19maWxlX3JhbmdlLWxpYmMtZnVuY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS14ZnNfc2NydWItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItTUFQX1NZTkMtaW4tc3lzLW1tYW4uaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWluY2x1ZGUtaW5jbHVkZS14ZnMtbGludXguaC1hZnRlci1zeXMtbW1hbi5oLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjVmODBiNjMxYjY4ZGY4OWE4YjkyODMzMDdlOTZkMmU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5N2RjOTZmNTFhZWVmZjczZDAyMWQzNDE4ZDMxNzIzNzdiMjY4NWYyNzQwY2E2MDUyNTA5NmMwNzBhYTNkZjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitQQUNLQUdFUyA9KyAiJHtQTn0tZnNjayAke1BOfS1ta2ZzICR7UE59LXJlcGFpciBsaWJoYW5kbGUiCisKK0RFUEVORFMgKz0gInV0aWwtbGludXgiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWZzY2sgJHtQTn0tbWtmcyAke1BOfS1yZXBhaXIiCisKK0ZJTEVTXyR7UE59LWZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2ZzY2sueGZzIgorRklMRVNfJHtQTn0tbWtmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtmcy54ZnMiCitGSUxFU18ke1BOfS1yZXBhaXIgPSAiJHtiYXNlX3NiaW5kaXJ9L3hmc19yZXBhaXIiCisKK0ZJTEVTX2xpYmhhbmRsZSA9ICIke2Jhc2VfbGliZGlyfS9saWJoYW5kbGUke1NPTElCU30iCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1nZXR0ZXh0PW5vIFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMX1VTRVI9cm9vdCBcCisgICAgICAgICAgICAgICAgSU5TVEFMTF9HUk9VUD1yb290IFwKKyAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfYWlvX2g9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9saWJfcnRfbGlvX2xpc3Rpbz15ZXMgXAorIgorCitESVNBQkxFX1NUQVRJQyA9ICIiCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L200IC0tZXhjbHVkZT1hdXRvaGVhZGVyIgorCitQQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUgYmxraWQiCisKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0tZW5hYmxlLXJlYWRsaW5lPXllcywtLWVuYWJsZS1yZWFkbGluZT1ubyxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbYmxraWRdID0gIi0tZW5hYmxlLWJsa2lkPXllcywtLWVuYWJsZS1ibGtpZD1ubyx1dGlsLWxpbnV4IgorCitleHBvcnQgREVCVUc9Ii1ETkRFQlVHIgorZXhwb3J0IEJVSUxEX1ZFUkJPU0U9IjEiCitleHBvcnQgdGFnbmFtZT0iQ0MiCisKK0VYVFJBX09FTUFLRSA9ICJESVNUX1JPT1Q9JyR7RH0nIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGV4cG9ydCBCVUlMRF9DQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9IgorICAgICMgUHJldmVudCBNYWtlZmlsZSBmcm9tIGNhbGxpbmcgY29uZmlndXJlIHdpdGhvdXQgYXJndW1lbnRzLAorICAgICMgd2hlbiBkb19jb25maWd1cmUgZ2V0cyBjYWxsZWQgZm9yIGEgc2Vjb25kIHRpbWUuCisgICAgcm0gLWYgJHtCfS9pbmNsdWRlL2J1aWxkZGVmcyAke0J9L2luY2x1ZGUvcGxhdGZvcm1fZGVmcy5oICR7Qn0vY29uZmlndXJlCisgICAgIyBSZWNyZWF0ZSBjb25maWd1cmUgc2NyaXB0LgorICAgIG9lX3J1bm1ha2UgY29uZmlndXJlCisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWRldgorICAgICAgICBybSAke0R9JHtsaWJkaXJ9LyoubGEKKyAgICAgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZGlyfQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9SRUFETUUgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQppbmRleCAyYTY4MmU3Li44NGQ0ZjczIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRQpAQCAtMjMsMTYgKzIzLDE2IEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogbWFzdGVyCiticmFuY2g6IHRodWQKIHJldmlzaW9uOiBIRUFECiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWJyYW5jaDogbWFzdGVyCiticmFuY2g6IHRodWQKIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1nbm9tZV0nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLWdub21lXVt0aHVkXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzaW5nIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWdub21lXVtQQVRDSCcKKydnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bdGh1ZF1bUEFUQ0gnCiAKLUxheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK1RodWQgbWFpbnRhaW5lcjogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKaW5kZXggZTZlOTUzMi4uZTlkMDc4NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDcgKzE0LDcgQEAKIAogTEFZRVJERVBFTkRTX2dub21lLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIG5ldHdvcmtpbmctbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9nbm9tZS1sYXllciA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX2dub21lLWxheWVyID0gInRodWQiCiAKICMgU2FuaXR5IGNoZWNrIGZvciBtZXRhLWdub21lIGxheWVyLgogIyBTZXR0aW5nIFNLSVBfTUVUQV9HTk9NRV9TQU5JVFlfQ0hFQ0sgdG8gIjEiIHdvdWxkIHNraXAgdGhlIGJiYXBwZW5kIGZpbGVzIGNoZWNrLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzJiOTY0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuOC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBhcHBsZXQgZm9yIE5ldHdvcmtNYW5hZ2VyIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gImd0ayszIGxpYm5vdGlmeSBsaWJzZWNyZXQgbmV0d29ya21hbmFnZXIgZGJ1cy1nbGliIFwKLSAgICAgICAgICAgZ2NvbmYgbGliZ25vbWUta2V5cmluZyBpc28tY29kZXMgbnNzIFwKLSAgICAgICAgICAgaW50bHRvb2wtbmF0aXZlIFwKLSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ25vbWViYXNlIGdzZXR0aW5ncyBndGstaWNvbi1jYWNoZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZWFlM2JlNzVlNzdmZjFhN2VhMzE3NGJlMjVlNjJkMDMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYWRjNGJmYWU4YjQ5ZjdhMWQ5MjljMjJlZjIwOTMzYmQ0MWZiNGE4YjQ1ODI4MGY0NGM2NWY5ZTQ1YjRjOWMzIgotCi1QQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLS13aXRoLXd3YW4sLS13aXRob3V0LXd3YW4sbW9kZW1tYW5hZ2VyIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRob3V0LXNlbGludXggXAotIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgICMgU2lnaC4uLiAtLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzPW5vIGRvZXNuJ3QgYWN0dWFsbHkgdHVybiBvZmYgLVdlcnJvcgotICAgIGZvciBpIGluICQoZmluZCAke0J9IC1uYW1lICJNYWtlZmlsZSIpIDsgZG8KLSAgICAgICAgc2VkIC1pIC1lIHMlLVdlcnJvclteWzpzcGFjZTpdXSolJWcgJGkKLSAgICBkb25lCi19Ci0KLSMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHJlbGF0ZWQKLUdJX0RBVEFfRU5BQkxFRF9saWJjLW11c2wgPSAiRmFsc2UiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvbGlibm1hLy5saWJzOiR7Qn0vc3JjL2xpYm5tLWd0ay8ubGlicyIKLX0KLQotUkRFUEVORFNfJHtQTn0gPSsgIm5ldHdvcmttYW5hZ2VyIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAotICAgICR7ZGF0YWRpcn0vbm0tYXBwbGV0LyBcCi0gICAgJHtkYXRhZGlyfS9saWJubS1ndGsvd2lmaS51aSBcCi0gICAgJHtkYXRhZGlyfS9saWJubWEvd2lmaS51aSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE4NDAwMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuOC4xOC5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkdUSysgYXBwbGV0IGZvciBOZXR3b3JrTWFuYWdlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworREVQRU5EUyA9ICJndGsrMyBsaWJub3RpZnkgbGlic2VjcmV0IG5ldHdvcmttYW5hZ2VyIGRidXMtZ2xpYiBcCisgICAgICAgICAgIGdjb25mIGxpYmdub21lLWtleXJpbmcgaXNvLWNvZGVzIG5zcyBcCisgICAgICAgICAgIGludGx0b29sLW5hdGl2ZSBcCisiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAiYXV0b3Rvb2xzLWJyb2tlbnNlcCIKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBnc2V0dGluZ3MgZ3RrLWljb24tY2FjaGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjM0OTIzNTc5YjM5MzYwZGI2NDY0OTM0MmVlNjczNWQ4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjNkYzE0MDRmMWUwNjIyYjdjNDcxOGI2ZDk3OGIxMDFkNWU0ZDliZTBiOTIxMzNiMzg2M2E0ZGMyOTc4NjE3OCIKKworUEFDS0FHRUNPTkZJR1ttb2RlbW1hbmFnZXJdID0gIi0td2l0aC13d2FuLC0td2l0aG91dC13d2FuLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbbW9iaWxlLXByb3ZpZGVyLWluZm9dID0gIi0tZW5hYmxlLW1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbywtLWRpc2FibGUtbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLG1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyxtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8iCitQQUNLQUdFQ09ORklHID8/PSAiIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGhvdXQtc2VsaW51eCBcCisiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgIyBTaWdoLi4uIC0tZW5hYmxlLWNvbXBpbGUtd2FybmluZ3M9bm8gZG9lc24ndCBhY3R1YWxseSB0dXJuIG9mZiAtV2Vycm9yCisgICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIk1ha2VmaWxlIikgOyBkbworICAgICAgICBzZWQgLWkgLWUgcyUtV2Vycm9yW15bOnNwYWNlOl1dKiUlZyAkaQorICAgIGRvbmUKK30KKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcmVsYXRlZAorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbCA9ICJGYWxzZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy9saWJubWEvLmxpYnM6JHtCfS9zcmMvbGlibm0tZ3RrLy5saWJzIgorfQorCitSREVQRU5EU18ke1BOfSA9KyAibmV0d29ya21hbmFnZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vbm0tYXBwbGV0LyBcCisgICAgJHtkYXRhZGlyfS9saWJubS1ndGsvd2lmaS51aSBcCisgICAgJHtkYXRhZGlyfS9saWJubWEvd2lmaS51aSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisiCisKKyMgbXVzbCBidWlsZHMgZ2VuZXJhdGUgZ2lyIGZpbGVzIHdoaWNoIG90aGVyd2lzZSBnbyB1bi1wYWNrYWdlZAorRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZ2lyLTEuMCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXyUuYmJhcHBlbmQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXyUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxYTYxNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfJS5iYmFwcGVuZApAQCAtMCwwICsxLDMgQEAKKyMgbmV0d29ya21hbmFnZXItYXBwbGV0IHJlcXVpcmVzIGdsaWIgc3VwcG9ydAorUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiZ2xpYiIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXhkL3NzaXplX3RfZGVmaW5pdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vYmV4ZC9zc2l6ZV90X2RlZmluaXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MGNiOWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXhkL3NzaXplX3RfZGVmaW5pdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gZmI1MDU2ZmVhOTU1OWIzZWMzYmI2MTk2N2ExMTJiNmM3OTNiNzAwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggSmFuIDIwMTMgMjE6MzM6MzQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSB1bmlzdGQuaCB0byBnZXQgc3NpemVfdCBkZWZpbml0aW9ucwotCi1GaXhlcyBlcnJvcnMgbGlrZQotCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBwbHVnaW5zL21hcy5jOjM2OjA6Ci18IC4vc3JjL29iZXguaDozOToxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnCi18IC4vc3JjL29iZXguaDo0OToxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnCi18IC4vc3JjL29iZXguaDo1MDoxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBwbHVnaW5zL21hcy5jOjM4OjA6Ci18IC4vc3JjL21pbWV0eXBlLmg6MzY6MjogZXJyb3I6IGV4cGVjdGVkIHNwZWNpZmllci1xdWFsaWZpZXItbGlzdCBiZWZvcmUgJ3NzaXplX3QnCi18IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBwbHVnaW5zL21hcy5jOjM5OjA6Ci18IHBsdWdpbnMvZmlsZXN5c3RlbS5oOjI0OjE6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnc3NpemVfdCcKLXwgcGx1Z2lucy9tYXMuYzo1NTA6MTogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdzc2l6ZV90JwotfCBwbHVnaW5zL21hcy5jOjU1NzoxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3NzaXplX3QnCi18IHBsdWdpbnMvbWFzLmM6IEluIGZ1bmN0aW9uICdhbnlfcmVhZCc6Ci18IHBsdWdpbnMvbWFzLmM6NTYwOjI6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnc3NpemVfdCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHBsdWdpbnMvbWFzLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3BsdWdpbnMvbWFzLmMgYi9wbHVnaW5zL21hcy5jCi1pbmRleCAxYjE4MDU5Li5iNTE5NTA3IDEwMDY0NAotLS0tIGEvcGx1Z2lucy9tYXMuYwotKysrIGIvcGx1Z2lucy9tYXMuYwotQEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaW5jbHVkZSA8Z29iZXgvZ29iZXguaD4KLSAjaW5jbHVkZSA8Z29iZXgvZ29iZXgtYXBwYXJhbS5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29iZXhkXzAuNDguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb2JleGRfMC40OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA5NmJlZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb2JleGRfMC40OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiT0JFWCBTZXJ2ZXIgYW5kIENsaWVudCIKLSMgb2JleGQgd2FzIGludGVncmF0ZWQgaW50byBibHVlejUKLURFUEVORFMgPSAiZ2xpYi0yLjAgZGJ1cyBsaWJpY2FsIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV6NScsJ2JsdWV6NScsJ2JsdWV6NCcsZCl9IgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9ibHVldG9vdGgvb2JleGQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaXplX3RfZGVmaW5pdGlvbi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZDAzY2Y5YmFkMjk4MzI0MzgzN2Y0ZjZkNzZlZjE0YTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWFhOWQ4ZDk1NDI3MDBlNjc1MDkxOGQ3MmEzY2UwMGY4Y2YzYTI3NzFkM2UyNTE2ZWZkMWJlNWEwNWY3ODU4MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAib2JleC1jbGllbnQgb2JleC1wbHVnaW5zIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvJHtQTn0uc2VydmljZSIKLUZJTEVTX29iZXgtY2xpZW50ID0gIiR7bGliZXhlY2Rpcn0vb2JleC1jbGllbnQgXAotICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvb2JleC1jbGllbnQuc2VydmljZSIKLSMgY3VycmVudGx5IHRoZSBwbHVnaW5zIGFyZSBlbXB0eQotRklMRVNfb2JleC1wbHVnaW5zID0gIiR7bGliZGlyfS9vYmV4L3BsdWdpbnMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDEtQnVnLTEzNzcwLVJlcXVpcmUtQy0xMS1mcm9tLW5vdy1vbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmQvMDAwMS1CdWctMTM3NzAtUmVxdWlyZS1DLTExLWZyb20tbm93LW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzFhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkLzAwMDEtQnVnLTEzNzcwLVJlcXVpcmUtQy0xMS1mcm9tLW5vdy1vbi5wYXRjaApAQCAtMCwwICsxLDE4MCBAQAorRnJvbSBmNmQwZGMzMzhmZTg2N2MxYjA2NDY4MmFlN2YxNWJmZmUwMTliMzA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSHViZXJ0IEZpZ3VpZXJlIDxodWJAZmlndWllcmUubmV0PgorRGF0ZTogVHVlLCAxMiBBcHIgMjAxNiAwMjo1NTo0NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBCdWcgMTM3NzAgLSBSZXF1aXJlIEMrKzExIGZyb20gbm93IG9uLgorCitnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vc3ZuLmFiaXNvdXJjZS5jb20vc3Zucm9vdC9hYml3b3JkL3RydW5rQDM1MTk3IGJjYmE4OTc2LTJkMjQtMDQxMC05YzljLWFhYjNiZDVmZGZkNgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00ICB8IDEzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy93cC9hcC9ndGsvYXBfVW5peEFwcC5jcHAgfCAgIDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGF4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5tNAorCitkaWZmIC0tZ2l0IGEvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00IGIvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYWYzN2FjZAorLS0tIC9kZXYvbnVsbAorKysrIGIvYXhfY3h4X2NvbXBpbGVfc3RkY3h4XzExLm00CitAQCAtMCwwICsxLDEzMyBAQAorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2N4eF9jb21waWxlX3N0ZGN4eF8xMS5odG1sCisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIworKyMgU1lOT1BTSVMKKysjCisrIyAgIEFYX0NYWF9DT01QSUxFX1NURENYWF8xMShbZXh0fG5vZXh0XSxbbWFuZGF0b3J5fG9wdGlvbmFsXSkKKysjCisrIyBERVNDUklQVElPTgorKyMKKysjICAgQ2hlY2sgZm9yIGJhc2VsaW5lIGxhbmd1YWdlIGNvdmVyYWdlIGluIHRoZSBjb21waWxlciBmb3IgdGhlIEMrKzExCisrIyAgIHN0YW5kYXJkOyBpZiBuZWNlc3NhcnksIGFkZCBzd2l0Y2hlcyB0byBDWFhGTEFHUyB0byBlbmFibGUgc3VwcG9ydC4KKysjCisrIyAgIFRoZSBmaXJzdCBhcmd1bWVudCwgaWYgc3BlY2lmaWVkLCBpbmRpY2F0ZXMgd2hldGhlciB5b3UgaW5zaXN0IG9uIGFuCisrIyAgIGV4dGVuZGVkIG1vZGUgKGUuZy4gLXN0ZD1nbnUrKzExKSBvciBhIHN0cmljdCBjb25mb3JtYW5jZSBtb2RlIChlLmcuCisrIyAgIC1zdGQ9YysrMTEpLiAgSWYgbmVpdGhlciBpcyBzcGVjaWZpZWQsIHlvdSBnZXQgd2hhdGV2ZXIgd29ya3MsIHdpdGgKKysjICAgcHJlZmVyZW5jZSBmb3IgYW4gZXh0ZW5kZWQgbW9kZS4KKysjCisrIyAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHNwZWNpZmllZCAnbWFuZGF0b3J5JyBvciBpZiBsZWZ0IHVuc3BlY2lmaWVkLAorKyMgICBpbmRpY2F0ZXMgdGhhdCBiYXNlbGluZSBDKysxMSBzdXBwb3J0IGlzIHJlcXVpcmVkIGFuZCB0aGF0IHRoZSBtYWNybworKyMgICBzaG91bGQgZXJyb3Igb3V0IGlmIG5vIG1vZGUgd2l0aCB0aGF0IHN1cHBvcnQgaXMgZm91bmQuICBJZiBzcGVjaWZpZWQKKysjICAgJ29wdGlvbmFsJywgdGhlbiBjb25maWd1cmF0aW9uIHByb2NlZWRzIHJlZ2FyZGxlc3MsIGFmdGVyIGRlZmluaW5nCisrIyAgIEhBVkVfQ1hYMTEgaWYgYW5kIG9ubHkgaWYgYSBzdXBwb3J0aW5nIG1vZGUgaXMgZm91bmQuCisrIworKyMgTElDRU5TRQorKyMKKysjICAgQ29weXJpZ2h0IChjKSAyMDA4IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgorKyMgICBDb3B5cmlnaHQgKGMpIDIwMTIgWmFjayBXZWluYmVyZyA8emFja3dAcGFuaXguY29tPgorKyMgICBDb3B5cmlnaHQgKGMpIDIwMTMgUm95IFN0b2duZXIgPHJveXN0Z25yQGljZXMudXRleGFzLmVkdT4KKysjCisrIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKKysjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQorKyMgICB3YXJyYW50eS4KKysKKysjc2VyaWFsIDMKKysKKyttNF9kZWZpbmUoW19BWF9DWFhfQ09NUElMRV9TVERDWFhfMTFfdGVzdGJvZHldLCBbCisrICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKysgICAgc3RydWN0IGNoZWNrCisrICAgIHsKKysgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihpbnQpIDw9IHNpemVvZihUKSwgIm5vdCBiaWcgZW5vdWdoIik7CisrICAgIH07CisrCisrICAgIHR5cGVkZWYgY2hlY2s8Y2hlY2s8Ym9vbD4+IHJpZ2h0X2FuZ2xlX2JyYWNrZXRzOworKworKyAgICBpbnQgYTsKKysgICAgZGVjbHR5cGUoYSkgYjsKKysKKysgICAgdHlwZWRlZiBjaGVjazxpbnQ+IGNoZWNrX3R5cGU7CisrICAgIGNoZWNrX3R5cGUgYzsKKysgICAgY2hlY2tfdHlwZSYmIGNyID0gc3RhdGljX2Nhc3Q8Y2hlY2tfdHlwZSYmPihjKTsKKysKKysgICAgYXV0byBkID0gYTsKKytdKQorKworK0FDX0RFRlVOKFtBWF9DWFhfQ09NUElMRV9TVERDWFhfMTFdLCBbZG5sCisrICBtNF9pZihbJDFdLCBbXSwgW10sCisrICAgICAgICBbJDFdLCBbZXh0XSwgW10sCisrICAgICAgICBbJDFdLCBbbm9leHRdLCBbXSwKKysgICAgICAgIFttNF9mYXRhbChbaW52YWxpZCBhcmd1bWVudCBgJDEnIHRvIEFYX0NYWF9DT01QSUxFX1NURENYWF8xMV0pXSlkbmwKKysgIG00X2lmKFskMl0sIFtdLCBbYXhfY3h4X2NvbXBpbGVfY3h4MTFfcmVxdWlyZWQ9dHJ1ZV0sCisrICAgICAgICBbJDJdLCBbbWFuZGF0b3J5XSwgW2F4X2N4eF9jb21waWxlX2N4eDExX3JlcXVpcmVkPXRydWVdLAorKyAgICAgICAgWyQyXSwgW29wdGlvbmFsXSwgW2F4X2N4eF9jb21waWxlX2N4eDExX3JlcXVpcmVkPWZhbHNlXSwKKysgICAgICAgIFttNF9mYXRhbChbaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgYCQyJyB0byBBWF9DWFhfQ09NUElMRV9TVERDWFhfMTFdKV0pZG5sCisrICBBQ19MQU5HX1BVU0goW0MrK10pZG5sCisrICBhY19zdWNjZXNzPW5vCisrICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyICRDWFggc3VwcG9ydHMgQysrMTEgZmVhdHVyZXMgYnkgZGVmYXVsdCwKKysgIGF4X2N2X2N4eF9jb21waWxlX2N4eDExLAorKyAgW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbX0FYX0NYWF9DT01QSUxFX1NURENYWF8xMV90ZXN0Ym9keV0pXSwKKysgICAgW2F4X2N2X2N4eF9jb21waWxlX2N4eDExPXllc10sCisrICAgIFtheF9jdl9jeHhfY29tcGlsZV9jeHgxMT1ub10pXSkKKysgIGlmIHRlc3QgeCRheF9jdl9jeHhfY29tcGlsZV9jeHgxMSA9IHh5ZXM7IHRoZW4KKysgICAgYWNfc3VjY2Vzcz15ZXMKKysgIGZpCisrCisrICBtNF9pZihbJDFdLCBbbm9leHRdLCBbXSwgW2RubAorKyAgaWYgdGVzdCB4JGFjX3N1Y2Nlc3MgPSB4bm87IHRoZW4KKysgICAgZm9yIHN3aXRjaCBpbiAtc3RkPWdudSsrMTEgLXN0ZD1nbnUrKzB4OyBkbworKyAgICAgIGNhY2hldmFyPUFTX1RSX1NIKFtheF9jdl9jeHhfY29tcGlsZV9jeHgxMV8kc3dpdGNoXSkKKysgICAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyICRDWFggc3VwcG9ydHMgQysrMTEgZmVhdHVyZXMgd2l0aCAkc3dpdGNoLAorKyAgICAgICAgICAgICAgICAgICAgICRjYWNoZXZhciwKKysgICAgICAgIFthY19zYXZlX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCisrICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgorKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbX0FYX0NYWF9DT01QSUxFX1NURENYWF8xMV90ZXN0Ym9keV0pXSwKKysgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPXllc10sCisrICAgICAgICAgIFtldmFsICRjYWNoZXZhcj1ub10pCisrICAgICAgICAgQ1hYRkxBR1M9IiRhY19zYXZlX0NYWEZMQUdTIl0pCisrICAgICAgaWYgZXZhbCB0ZXN0IHhcJCRjYWNoZXZhciA9IHh5ZXM7IHRoZW4KKysgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgJHN3aXRjaCIKKysgICAgICAgIGFjX3N1Y2Nlc3M9eWVzCisrICAgICAgICBicmVhaworKyAgICAgIGZpCisrICAgIGRvbmUKKysgIGZpXSkKKysKKysgIG00X2lmKFskMV0sIFtleHRdLCBbXSwgW2RubAorKyAgaWYgdGVzdCB4JGFjX3N1Y2Nlc3MgPSB4bm87IHRoZW4KKysgICAgZm9yIHN3aXRjaCBpbiAtc3RkPWMrKzExIC1zdGQ9YysrMHg7IGRvCisrICAgICAgY2FjaGV2YXI9QVNfVFJfU0goW2F4X2N2X2N4eF9jb21waWxlX2N4eDExXyRzd2l0Y2hdKQorKyAgICAgIEFDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgJENYWCBzdXBwb3J0cyBDKysxMSBmZWF0dXJlcyB3aXRoICRzd2l0Y2gsCisrICAgICAgICAgICAgICAgICAgICAgJGNhY2hldmFyLAorKyAgICAgICAgW2FjX3NhdmVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKKysgICAgICAgICBDWFhGTEFHUz0iJENYWEZMQUdTICRzd2l0Y2giCisrICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtfQVhfQ1hYX0NPTVBJTEVfU1REQ1hYXzExX3Rlc3Rib2R5XSldLAorKyAgICAgICAgICBbZXZhbCAkY2FjaGV2YXI9eWVzXSwKKysgICAgICAgICAgW2V2YWwgJGNhY2hldmFyPW5vXSkKKysgICAgICAgICBDWFhGTEFHUz0iJGFjX3NhdmVfQ1hYRkxBR1MiXSkKKysgICAgICBpZiBldmFsIHRlc3QgeFwkJGNhY2hldmFyID0geHllczsgdGhlbgorKyAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAkc3dpdGNoIgorKyAgICAgICAgYWNfc3VjY2Vzcz15ZXMKKysgICAgICAgIGJyZWFrCisrICAgICAgZmkKKysgICAgZG9uZQorKyAgZmldKQorKyAgQUNfTEFOR19QT1AoW0MrK10pCisrICBpZiB0ZXN0IHgkYXhfY3h4X2NvbXBpbGVfY3h4MTFfcmVxdWlyZWQgPSB4dHJ1ZTsgdGhlbgorKyAgICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgorKyAgICAgIEFDX01TR19FUlJPUihbKioqIEEgY29tcGlsZXIgd2l0aCBzdXBwb3J0IGZvciBDKysxMSBsYW5ndWFnZSBmZWF0dXJlcyBpcyByZXF1aXJlZC5dKQorKyAgICBmaQorKyAgZWxzZQorKyAgICBpZiB0ZXN0IHgkYWNfc3VjY2VzcyA9IHhubzsgdGhlbgorKyAgICAgIEhBVkVfQ1hYMTE9MAorKyAgICAgIEFDX01TR19OT1RJQ0UoW05vIGNvbXBpbGVyIHdpdGggQysrMTEgc3VwcG9ydCB3YXMgZm91bmRdKQorKyAgICBlbHNlCisrICAgICAgSEFWRV9DWFgxMT0xCisrICAgICAgQUNfREVGSU5FKEhBVkVfQ1hYMTEsMSwKKysgICAgICAgICAgICAgICAgW2RlZmluZSBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgYmFzaWMgQysrMTEgc3ludGF4XSkKKysgICAgZmkKKysKKysgICAgQUNfU1VCU1QoSEFWRV9DWFgxMSkKKysgIGZpCisrXSkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQ4MjI4YmUuLmY3YmU3ZGUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEzMSw2ICsxMzEsNyBAQCB3aW5fcGtncz0iJGVuY2hhbnRfcmVxIgorIAorIEFDX1BST0dfQ0MKKyBBQ19QUk9HX0NYWAorK0FYX0NYWF9DT01QSUxFX1NURENYWF8xMShub2V4dCxtYW5kYXRvcnkpCisgI0FDX1BST0dfT0JKQworIEFDX1BST0dfSU5TVEFMTAorICMgRm9yIGxpYnRvb2wgMS41LnggY29tcGF0YWJpbGl0eSAoQUNfUFJPR19MSUJUT09MIGlzIGRlcHJlY2F0ZWQgdmVyc2lvbiBvZiBMVF9JTklUKQorZGlmZiAtLWdpdCBhL3NyYy93cC9hcC9ndGsvYXBfVW5peEFwcC5jcHAgYi9zcmMvd3AvYXAvZ3RrL2FwX1VuaXhBcHAuY3BwCitpbmRleCAwNjFhMzA0Li4yNjBmOGU1IDEwMDY0NAorLS0tIGEvc3JjL3dwL2FwL2d0ay9hcF9Vbml4QXBwLmNwcAorKysrIGIvc3JjL3dwL2FwL2d0ay9hcF9Vbml4QXBwLmNwcAorQEAgLTg2Myw3ICs4NjMsNyBAQCBzdGF0aWMgYm9vbCBpc19zbyAoY29uc3QgY2hhciAqZmlsZSkgeworIAlpZiAobGVuIDwgKHN0cmxlbihHX01PRFVMRV9TVUZGSVgpICsgMikpIC8vIHRoaXMgaXMgIi5zbyIgYW5kIGF0IGxlYXN0IG9uZSBjaGFyIGZvciB0aGUgZmlsZW5hbWUKKyAJCXJldHVybiBmYWxzZTsKKyAJY29uc3QgY2hhciAqc3VmZml4ID0gZmlsZSsobGVuLTMpOworLQlpZigwID09IHN0cmNtcCAoc3VmZml4LCAiLiJHX01PRFVMRV9TVUZGSVgpKQorKwlpZigwID09IHN0cmNtcCAoc3VmZml4LCAiLiIgR19NT0RVTEVfU1VGRklYKSkKKyAJCXJldHVybiB0cnVlOworIAlyZXR1cm4gZmFsc2U7CisgfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9hYml3b3JkL2FiaXdvcmRfMy4wLjIuYmIKaW5kZXggZDJjMDE4Ni4uMzZiMDU2ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2FiaXdvcmQvYWJpd29yZF8zLjAuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvYWJpd29yZC9hYml3b3JkXzMuMC4yLmJiCkBAIC04LDcgKzgsNyBAQAogICAgIGd0aysgXAogICAgIGd0a21hdGh2aWV3IFwKICAgICB3diBcCi0gICAgbGliZnJpYmlkaSBcCisgICAgZnJpYmlkaSBcCiAgICAganBlZyBcCiAgICAgbGlicG5nIFwKICAgICBsaWJyc3ZnIFwKQEAgLTI0LDEwICsyNCwxMCBAQAogIgogUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1lbWJlZGRlZCIKIAotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvJHtCUE59LyR7UFZ9L3NvdXJjZS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtYWlrc2F1cnVzLU1ha2VmaWxlLmFtLXJlbW92ZS11bmNvbXBsZXRlLW9wdGkucGF0Y2ggXAotIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LmFiaXNvdXJjZS5jb20vZG93bmxvYWRzLyR7QlBOfS8ke1BWfS9zb3VyY2UvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2lucy1haWtzYXVydXMtTWFrZWZpbGUuYW0tcmVtb3ZlLXVuY29tcGxldGUtb3B0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUJ1Zy0xMzc3MC1SZXF1aXJlLUMtMTEtZnJvbS1ub3ctb24ucGF0Y2ggXAorICAgICAgICAgICAiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1ZWRjYzNjY2Q4NjRiMTkwMDRkMTRlOWMxYzlhMjZhIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGNvbmYvZGNvbmYtZWRpdG9yXzMuMjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9kY29uZi9kY29uZi1lZGl0b3JfMy4yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjkxN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGNvbmYvZGNvbmYtZWRpdG9yXzMuMjguMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkNvbmZpZ3VyYXRpb24gZWRpdG9yIGZvciBkY29uZiIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworREVQRU5EUyA9ICJkY29uZiBndGsrMyIKKworaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnZXR0ZXh0IGdzZXR0aW5ncyBiYXNoLWNvbXBsZXRpb24KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2M5ZWI4MDIwY2M4NDg4MTI5NzJkODUxOWMzZDA1Y2YiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0NTViNTNkODI3ODIwZWZkMjhhMTc2ZWU1MmUxM2VkYTVjZGE4Y2RmNGUzMWUwMTQ1Y2ZkZDY5OTMxYmYwYzVhIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGNvbmYvZGNvbmZfMC4xOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rjb25mL2Rjb25mXzAuMTguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI0YmRlNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGNvbmYvZGNvbmZfMC4xOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJjb25maWd1YXRpb24gZGF0YWJhc2Ugc3lzdGVtIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2OWExMmVkNjg4OTNmMmUxZTgxYWM0ZTUzMWJjMTUxNSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjEwOWIxYmM2MDc4NjkwYWYxZWQ4OGNiMTQ0ZWY1YzVhZWU3MzA0NzY5ZDhiZGM4MmVkNDhjMzY5NmYxMGM5NTUiCi1HTk9NRV9DT01QUkVTU19UWVBFID0gInh6IgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgdmFsYSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZWRpdG9yIiwgIiIsIGQpfSIKLQotI25vdGU6IGVkaXRvciB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAwLjIzLjEKLVBBQ0tBR0VDT05GSUdbZWRpdG9yXSA9ICItLWVuYWJsZS1lZGl0b3IsLS1kaXNhYmxlLWVkaXRvcixndGsrMyIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFQ09ORklHIiwgImVkaXRvciIsICJ4MTEiLCAiIiwgZCl9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4iCi0KLVBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJkY29uZi1lZGl0b3IiLCAiIiwgZCl9IgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzLyouc28gXAotICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIFwKLSIKLUZJTEVTX2Rjb25mLWVkaXRvciA9ICIgXAotICAgICR7YmluZGlyfS9kY29uZi1lZGl0b3IgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnL2xpYmRjb25mc2V0dGluZ3Muc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZGNvbmYvZGNvbmZfMC4yOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rjb25mL2Rjb25mXzAuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTI5MmE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Rjb25mL2Rjb25mXzAuMjguMC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gImNvbmZpZ3VhdGlvbiBkYXRhYmFzZSBzeXN0ZW0iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCitTRUNUSU9OID0gIngxMS9nbm9tZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODFmYWE4ZTY4ZTVlYTcxZmYwZWU3NTA1MGZjMDc1OWMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2MWQzYjM4NjVlZjU4YjcyOWMzYjM5YWEwOTc5Zjg4NmMwMTRhYTgzNjJmOTNkY2ZjNzRiZjU2NDhlZDljNzQyIgorCitERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgYmFzaC1jb21wbGV0aW9uIHZhbGEKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyLzAwMDQtVXNlLXJlY29tbWVuZGVkLXdheS10by1oYW5kbGUtdGhlLWljdS1uYW1lc3BhY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDA0LVVzZS1yZWNvbW1lbmRlZC13YXktdG8taGFuZGxlLXRoZS1pY3UtbmFtZXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYjBhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlci8wMDA0LVVzZS1yZWNvbW1lbmRlZC13YXktdG8taGFuZGxlLXRoZS1pY3UtbmFtZXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNjk4YTBlMTA0ZGNiZTRiNjMwZGY4NDhmZDRhZjdjNTlmNzZjZGMzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDUgTWF5IDIwMTggMTc6NDY6NTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHJlY29tbWVuZGVkIHdheSB0byBoYW5kbGUgdGhlIGljdSBuYW1lc3BhY2UKKworRml4ZXMgYnVpbGQgd2l0aCBpY3UgPj0gNjEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbGliZWRhdGFzZXJ2ZXIvZS1hbHBoYWJldC1pbmRleC1wcml2YXRlLmNwcCB8IDIgKysKKyBzcmMvbGliZWRhdGFzZXJ2ZXIvZS10cmFuc2xpdGVyYXRvci1wcml2YXRlLmNwcCB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmVkYXRhc2VydmVyL2UtYWxwaGFiZXQtaW5kZXgtcHJpdmF0ZS5jcHAgYi9zcmMvbGliZWRhdGFzZXJ2ZXIvZS1hbHBoYWJldC1pbmRleC1wcml2YXRlLmNwcAoraW5kZXggZDNlNDRmNC4uZGRmZmQ5OSAxMDA2NDQKKy0tLSBhL3NyYy9saWJlZGF0YXNlcnZlci9lLWFscGhhYmV0LWluZGV4LXByaXZhdGUuY3BwCisrKysgYi9zcmMvbGliZWRhdGFzZXJ2ZXIvZS1hbHBoYWJldC1pbmRleC1wcml2YXRlLmNwcAorQEAgLTMzLDkgKzMzLDExIEBACisgCisgLyogSUNVIGhlYWRlcnMgKi8KKyAjaW5jbHVkZSA8dW5pY29kZS9hbHBoYWluZGV4Lmg+CisrI2luY2x1ZGUgPHVuaWNvZGUvdXN0cmluZy5oPgorIAorIHVzaW5nIGljdTo6QWxwaGFiZXRpY0luZGV4OworIHVzaW5nIGljdTo6TG9jYWxlOworK3VzaW5nIFVfSUNVX05BTUVTUEFDRTo6VW5pY29kZVN0cmluZzsKKyAKKyBzdHJ1Y3QgX0VBbHBoYWJldEluZGV4IHsKKyAJQWxwaGFiZXRpY0luZGV4ICpwcml2OworZGlmZiAtLWdpdCBhL3NyYy9saWJlZGF0YXNlcnZlci9lLXRyYW5zbGl0ZXJhdG9yLXByaXZhdGUuY3BwIGIvc3JjL2xpYmVkYXRhc2VydmVyL2UtdHJhbnNsaXRlcmF0b3ItcHJpdmF0ZS5jcHAKK2luZGV4IGJiMTU1OTMuLjU3MzQ0NmYgMTAwNjQ0CistLS0gYS9zcmMvbGliZWRhdGFzZXJ2ZXIvZS10cmFuc2xpdGVyYXRvci1wcml2YXRlLmNwcAorKysrIGIvc3JjL2xpYmVkYXRhc2VydmVyL2UtdHJhbnNsaXRlcmF0b3ItcHJpdmF0ZS5jcHAKK0BAIC0zMyw4ICszMywxMCBAQAorIAorIC8qIElDVSBoZWFkZXJzICovCisgI2luY2x1ZGUgPHVuaWNvZGUvdHJhbnNsaXQuaD4KKysjaW5jbHVkZSA8dW5pY29kZS91c3RyaW5nLmg+CisgCisgdXNpbmcgaWN1OjpUcmFuc2xpdGVyYXRvcjsKKyt1c2luZyBVX0lDVV9OQU1FU1BBQ0U6OlVuaWNvZGVTdHJpbmc7CisgCisgc3RydWN0IF9FVHJhbnNsaXRlcmF0b3IgeworIAlUcmFuc2xpdGVyYXRvciAqcHJpdjsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyXzMuMjYuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyXzMuMjYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMwM2I4Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZWRzL2V2b2x1dGlvbi1kYXRhLXNlcnZlcl8zLjI2LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJFdm9sdXRpb24gZGF0YWJhc2UgYmFja2VuZCBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy9wcm9qZWN0cy9ldm9sdXRpb24vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZhNmU2ODlkMTkyNTVjZjA1NTdmM2ZlN2Q3MDY4MjEyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jYW1lbC9jYW1lbC5oO2VuZGxpbmU9MjQ7bWQ1PTM0MmZjNWU5MzU3MjU0YmMzMGMyNGU0M2FlNDdkOWExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9saWJlZGF0YXNlcnZlci9lLWRhdGEtc2VydmVyLXV0aWwuaDtlbmRsaW5lPTIwO21kNT04ZjIxYTljODBlYTgyYTRmYjgwYjVmOTU5ZjY3MjU0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY2FsZW5kYXIvbGliZWNhbC9lLWNhbC5oO2VuZGxpbmU9MjQ7bWQ1PWU2OTllYzM4NjZmNzNmMTI5ZjdhNGZmZmZkY2ZjMTk2IgotCi1ERVBFTkRTID0gIiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIGdwZXJmLW5hdGl2ZSBcCi0gICAgZ2xpYi0yLjAgZ3RrKzMgZ2NvbmYgbGliZ25vbWUta2V5cmluZyBsaWJnZGF0YSBcCi0gICAgZGJ1cyBkYiB2aXJ0dWFsL2xpYmljb252IHpsaWIgbGlic291cC0yLjQgbGliaWNhbCBuc3MgbGlic2VjcmV0IFwKLSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ25vbWViYXNlIGNtYWtlIGd0ay1kb2MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBweXRob25uYXRpdmUKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1SZW1vdmUtVFJZX1JVTi1mb3ItaWNvbnYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUNNYWtlTGlzdHMudHh0LXJlbW92ZS1DSEVDS19DX1NPVVJDRV9SVU5TLWNoZWNrLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1jb250YWN0LVJlcGxhY2UtdGhlLU5vdmVsbC1zYW1wbGUtY29udGFjdC13aXRoLXNvbWV0LnBhdGNoIFwKLSAgICBmaWxlOi8vaWNvbnYtZGV0ZWN0LmggXAotIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTY4YTIxYTRkZjRlMGVjOTg1Yzg0OWIzOGZjNjY5MDgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2M2IxYWU1Zjc2YmU4MTg4NjJmNDU1YmY4NDFiNWViYjFlYzNlMWY0ZGY2ZDNhMTZkYzJiZTM0OGI3ZTBhMWM1IgotCi1MS1NUUkZUSU1FID0gIkhBVkVfTEtTVFJGVElNRT1PTiIKLUxLU1RSRlRJTUVfbGliYy1tdXNsID0gIkhBVkVfTEtTVFJGVElNRT1PRkYiCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRFdJVEhfS1JCNT1PRkYgXAotICAgIC1ERU5BQkxFX0dPQT1PRkYgXAotICAgIC1ERU5BQkxFX1VPQT1PRkYgXAotICAgIC1ERU5BQkxFX0dPT0dMRV9BVVRIPU9GRiBcCi0gICAgLURFTkFCTEVfV0VBVEhFUj1PRkYgXAotICAgIC1EJHtMS1NUUkZUSU1FfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW29wZW5sZGFwXSA9ICItRFdJVEhfT1BFTkxEQVA9T04sLURXSVRIX09QRU5MREFQPU9GRixvcGVubGRhcCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1saWJkYj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbm50cCAtLWRpc2FibGUtZ3RrLWRvYyIKLQotIyAtbGRiIG5lZWRzIHRoaXMgb24gc29tZSBwbGF0Zm9ybXMKLUxERkxBR1MgKz0gIi1scHRocmVhZCAtbGdtb2R1bGUtMi4wIC1sZ3RocmVhZC0yLjAiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIGNwICR7V09SS0RJUn0vaWNvbnYtZGV0ZWN0LmggJHtTfS9zcmMKLQotICAgICMgZml4IG5hdGl2ZSBwZXJsIHNoZWJhbmcKLSAgICBzZWQgLWkgJ3M6JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlOiR7YmluZGlyfTonICR7Qn0vc3JjL3Rvb2xzL2FkZHJlc3Nib29rLWV4cG9ydC9jc3YydmNhcmQKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2NhbWVsLy5saWJzOiR7Qn0vbGliZWRhdGFzZXJ2ZXIvLmxpYnMiCi19Ci0KLQotUEFDS0FHRVMgPSsgImxpYmNhbWVsIGxpYmNhbWVsLWRldiBsaWJlYm9vayBsaWJlYm9vay1kZXYgbGliZWNhbCBsaWJlY2FsLWRldiBcCi0gICAgICAgICAgICAgbGliZWRhdGEtYm9vayBsaWJlZGF0YS1ib29rLWRldiBsaWJlZGF0YS1jYWwgbGliZWRhdGEtY2FsLWRldiBcCi0gICAgICAgICAgICAgbGliZWRhdGFzZXJ2ZXIgbGliZWRhdGFzZXJ2ZXItZGV2IFwKLSAgICAgICAgICAgICBsaWJlZGF0YXNlcnZlcnVpIGxpYmVkYXRhc2VydmVydWktZGV2IgotCi1GSUxFU18ke1BOfSA9KyAiJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL3VpLyIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotCi1GSUxFU18ke1BOfS1kZXYgPSsgIiR7bGliZGlyfS9wa2djb25maWcvZXZvbHV0aW9uLWRhdGEtc2VydmVyLSoucGMiCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYWxlbmRhci1iYWNrZW5kcy8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9hZGRyZXNzYm9vay1iYWNrZW5kcy8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9leHRlbnNpb25zLy5kZWJ1Zy8iCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRldiArPSAibGliZWNhbC1kZXYgbGliZWJvb2stZGV2IgotCi1GSUxFU19saWJjYW1lbCA9ICIke2xpYmRpcn0vbGliY2FtZWwtKi5zby4qIFwKLSAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjYW1lbC1wcm92aWRlci0qLnNvLiogXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwtcHJvdmlkZXJzLyouc28gXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwtcHJvdmlkZXJzLyoudXJscyIKLUZJTEVTX2xpYmNhbWVsLWRldiA9ICIke2xpYmRpcn0vbGliY2FtZWwtKi5zbyAke2xpYmRpcn0vbGliY2FtZWwtcHJvdmlkZXItKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9jYW1lbCpwYyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwtcHJvdmlkZXJzLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbCIKLQotRklMRVNfbGliZWJvb2sgPSAiJHtsaWJkaXJ9L2xpYmVib29rLSouc28uKiIKLUZJTEVTX2xpYmVib29rLWRldiA9ICIke2xpYmRpcn0vbGliZWJvb2stMS4yLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVib29rLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9saWJlYm9vay8qLmgiCi1SUkVDT01NRU5EU19saWJlYm9vayA9ICJsaWJlZGF0YS1ib29rIgotCi1GSUxFU19saWJlY2FsID0gIiR7bGliZGlyfS9saWJlY2FsLSouc28uKiBcCi0gICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLTEuNC96b25laW5mbyIKLUZJTEVTX2xpYmVjYWwtZGV2ID0gIiR7bGliZGlyfS9saWJlY2FsLSouc28gJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlY2FsLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2xpYmVjYWwvKi5oIFwKLSAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9saWJpY2FsLyouaCIKLVJSRUNPTU1FTkRTX2xpYmVjYWwgPSAibGliZWRhdGEtY2FsIHR6ZGF0YSIKLQotRklMRVNfbGliZWRhdGEtYm9vayA9ICIke2xpYmV4ZWNkaXJ9L2UtYWRkcmVzc2Jvb2stZmFjdG9yeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouQWRkcmVzc0Jvb2suc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJlZGF0YS1ib29rLSouc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9leHRlbnNpb25zL2xpYmVib29rKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLTEuNC93ZWF0aGVyL0xvY2F0aW9ucy54bWwiCi1GSUxFU19saWJlZGF0YS1ib29rLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGEtYm9vay0qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWRhdGEtYm9vay0qLnBjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9leHRlbnNpb25zL2xpYmVib29rKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2xpYmVkYXRhLWJvb2siCi0KLUZJTEVTX2xpYmVkYXRhLWNhbCA9ICIke2xpYmV4ZWNkaXJ9L2UtY2FsZW5kYXItZmFjdG9yeSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5DYWxlbmRhci5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZWRhdGEtY2FsLSouc28uKiBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2V4dGVuc2lvbnMvbGliZWNhbCouc28iCi1GSUxFU19saWJlZGF0YS1jYWwtZGV2ID0gIiR7bGliZGlyfS9saWJlZGF0YS1jYWwtKi5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWRhdGEtY2FsLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2xpYmVkYXRhLWNhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9leHRlbnNpb25zL2xpYmVjYWwqLmxhIgotCi1GSUxFU19saWJlZGF0YXNlcnZlciA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXItKi5zby4qIgotRklMRVNfbGliZWRhdGFzZXJ2ZXItZGV2ID0gIiR7bGliZGlyfS9saWJlZGF0YXNlcnZlci0qLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhc2VydmVyLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovbGliZWRhdGFzZXJ2ZXIvKi5oIgotCi1GSUxFU19saWJlZGF0YXNlcnZlcnVpID0gIiR7bGliZGlyfS9saWJlZGF0YXNlcnZlcnVpLSouc28uKiAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0xLjQvZ2xhZGUvKi5nbGFkZSIKLUZJTEVTX2xpYmVkYXRhc2VydmVydWktZGV2ID0gIiR7bGliZGlyfS9saWJlZGF0YXNlcnZlcnVpLSouc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlZGF0YXNlcnZlcnVpLSoucGMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YXNlcnZlcnVpLyouaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyXzMuMjYuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9lZHMvZXZvbHV0aW9uLWRhdGEtc2VydmVyXzMuMjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjVkY2E5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2Vkcy9ldm9sdXRpb24tZGF0YS1zZXJ2ZXJfMy4yNi42LmJiCkBAIC0wLDAgKzEsMTMxIEBACitTVU1NQVJZID0gIkV2b2x1dGlvbiBkYXRhYmFzZSBiYWNrZW5kIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnL3Byb2plY3RzL2V2b2x1dGlvbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2ZTY4OWQxOTI1NWNmMDU1N2YzZmU3ZDcwNjgyMTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NhbWVsL2NhbWVsLmg7ZW5kbGluZT0yNDttZDU9MzQyZmM1ZTkzNTcyNTRiYzMwYzI0ZTQzYWU0N2Q5YTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2xpYmVkYXRhc2VydmVyL2UtZGF0YS1zZXJ2ZXItdXRpbC5oO2VuZGxpbmU9MjA7bWQ1PThmMjFhOWM4MGVhODJhNGZiODBiNWY5NTlmNjcyNTQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jYWxlbmRhci9saWJlY2FsL2UtY2FsLmg7ZW5kbGluZT0yNDttZDU9ZTY5OWVjMzg2NmY3M2YxMjlmN2E0ZmZmZmRjZmMxOTYiCisKK0RFUEVORFMgPSAiIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIFwKKyAgICBnbGliLTIuMCBndGsrMyBnY29uZiBsaWJnbm9tZS1rZXlyaW5nIGxpYmdkYXRhIFwKKyAgICBkYnVzIGRiIHZpcnR1YWwvbGliaWNvbnYgemxpYiBsaWJzb3VwLTIuNCBsaWJpY2FsIG5zcyBsaWJzZWNyZXQgXAorIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgY21ha2UgZ3RrLWRvYyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZQorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1SZW1vdmUtVFJZX1JVTi1mb3ItaWNvbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1DTWFrZUxpc3RzLnR4dC1yZW1vdmUtQ0hFQ0tfQ19TT1VSQ0VfUlVOUy1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbnRhY3QtUmVwbGFjZS10aGUtTm92ZWxsLXNhbXBsZS1jb250YWN0LXdpdGgtc29tZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtZGV0ZWN0LmggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtcmVjb21tZW5kZWQtd2F5LXRvLWhhbmRsZS10aGUtaWN1LW5hbWVzcGFjZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFlN2JiZjU0M2IyYzNmZjc5YWYyN2UwZWRlYTVkNDcyIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZTQzYWExODQ3ZGRjMDI5NjVmNTYwMjYxZWY4OGQxOGZiODcwNGVkZGFhNTU1NTViZjk2Yjg4NGEzM2U1MTBlYyIKKworTEtTVFJGVElNRSA9ICJIQVZFX0xLU1RSRlRJTUU9T04iCitMS1NUUkZUSU1FX2xpYmMtbXVzbCA9ICJIQVZFX0xLU1RSRlRJTUU9T0ZGIgorCitFWFRSQV9PRUNNQUtFID0gIiBcCisgICAgLURXSVRIX0tSQjU9T0ZGIFwKKyAgICAtREVOQUJMRV9HT0E9T0ZGIFwKKyAgICAtREVOQUJMRV9VT0E9T0ZGIFwKKyAgICAtREVOQUJMRV9HT09HTEVfQVVUSD1PRkYgXAorICAgIC1ERU5BQkxFX1dFQVRIRVI9T0ZGIFwKKyAgICAtRCR7TEtTVFJGVElNRX0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tvcGVubGRhcF0gPSAiLURXSVRIX09QRU5MREFQPU9OLC1EV0lUSF9PUEVOTERBUD1PRkYsb3BlbmxkYXAiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliZGI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5udHAgLS1kaXNhYmxlLWd0ay1kb2MiCisKKyMgLWxkYiBuZWVkcyB0aGlzIG9uIHNvbWUgcGxhdGZvcm1zCitMREZMQUdTICs9ICItbHB0aHJlYWQgLWxnbW9kdWxlLTIuMCAtbGd0aHJlYWQtMi4wIgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBjcCAke1dPUktESVJ9L2ljb252LWRldGVjdC5oICR7U30vc3JjCisKKyAgICAjIGZpeCBuYXRpdmUgcGVybCBzaGViYW5nCisgICAgc2VkIC1pICdzOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZToke2JpbmRpcn06JyAke0J9L3NyYy90b29scy9hZGRyZXNzYm9vay1leHBvcnQvY3N2MnZjYXJkCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9jYW1lbC8ubGliczoke0J9L2xpYmVkYXRhc2VydmVyLy5saWJzIgorfQorCisKK1BBQ0tBR0VTID0rICJsaWJjYW1lbCBsaWJjYW1lbC1kZXYgbGliZWJvb2sgbGliZWJvb2stZGV2IGxpYmVjYWwgbGliZWNhbC1kZXYgXAorICAgICAgICAgICAgIGxpYmVkYXRhLWJvb2sgbGliZWRhdGEtYm9vay1kZXYgbGliZWRhdGEtY2FsIGxpYmVkYXRhLWNhbC1kZXYgXAorICAgICAgICAgICAgIGxpYmVkYXRhc2VydmVyIGxpYmVkYXRhc2VydmVyLWRldiBcCisgICAgICAgICAgICAgbGliZWRhdGFzZXJ2ZXJ1aSBsaWJlZGF0YXNlcnZlcnVpLWRldiIKKworRklMRVNfJHtQTn0gPSsgIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi91aS8iCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKKworRklMRVNfJHtQTn0tZGV2ID0rICIke2xpYmRpcn0vcGtnY29uZmlnL2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qLnBjIgorRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9jYW1lbC1wcm92aWRlcnMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FsZW5kYXItYmFja2VuZHMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovYWRkcmVzc2Jvb2stYmFja2VuZHMvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovZXh0ZW5zaW9ucy8uZGVidWcvIgorCitSUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gImxpYmVjYWwtZGV2IGxpYmVib29rLWRldiIKKworRklMRVNfbGliY2FtZWwgPSAiJHtsaWJkaXJ9L2xpYmNhbWVsLSouc28uKiBcCisgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliY2FtZWwtcHJvdmlkZXItKi5zby4qIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLnNvIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLnVybHMiCitGSUxFU19saWJjYW1lbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYmNhbWVsLSouc28gJHtsaWJkaXJ9L2xpYmNhbWVsLXByb3ZpZGVyLSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvY2FtZWwqcGMgXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIqL2NhbWVsLXByb3ZpZGVycy8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovY2FtZWwiCisKK0ZJTEVTX2xpYmVib29rID0gIiR7bGliZGlyfS9saWJlYm9vay0qLnNvLioiCitGSUxFU19saWJlYm9vay1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVib29rLTEuMi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlYm9vay0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovbGliZWJvb2svKi5oIgorUlJFQ09NTUVORFNfbGliZWJvb2sgPSAibGliZWRhdGEtYm9vayIKKworRklMRVNfbGliZWNhbCA9ICIke2xpYmRpcn0vbGliZWNhbC0qLnNvLiogXAorICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0xLjQvem9uZWluZm8iCitGSUxFU19saWJlY2FsLWRldiA9ICIke2xpYmRpcn0vbGliZWNhbC0qLnNvICR7bGliZGlyfS9wa2djb25maWcvbGliZWNhbC0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyKi9saWJlY2FsLyouaCBcCisgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlciovbGliaWNhbC8qLmgiCitSUkVDT01NRU5EU19saWJlY2FsID0gImxpYmVkYXRhLWNhbCB0emRhdGEiCisKK0ZJTEVTX2xpYmVkYXRhLWJvb2sgPSAiJHtsaWJleGVjZGlyfS9lLWFkZHJlc3Nib29rLWZhY3RvcnkgXAorICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLkFkZHJlc3NCb29rLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZWRhdGEtYm9vay0qLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlYm9vayouc28gXAorICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0xLjQvd2VhdGhlci9Mb2NhdGlvbnMueG1sIgorRklMRVNfbGliZWRhdGEtYm9vay1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhLWJvb2stKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhLWJvb2stKi5wYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlYm9vayoubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YS1ib29rIgorCitGSUxFU19saWJlZGF0YS1jYWwgPSAiJHtsaWJleGVjZGlyfS9lLWNhbGVuZGFyLWZhY3RvcnkgXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzLyouQ2FsZW5kYXIuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmVkYXRhLWNhbC0qLnNvLiogXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9leHRlbnNpb25zL2xpYmVjYWwqLnNvIgorRklMRVNfbGliZWRhdGEtY2FsLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGEtY2FsLSouc28gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVkYXRhLWNhbC0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItKi9saWJlZGF0YS1jYWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovZXh0ZW5zaW9ucy9saWJlY2FsKi5sYSIKKworRklMRVNfbGliZWRhdGFzZXJ2ZXIgPSAiJHtsaWJkaXJ9L2xpYmVkYXRhc2VydmVyLSouc28uKiIKK0ZJTEVTX2xpYmVkYXRhc2VydmVyLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXItKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJlZGF0YXNlcnZlci0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2V2b2x1dGlvbi1kYXRhLXNlcnZlci0qL2xpYmVkYXRhc2VydmVyLyouaCIKKworRklMRVNfbGliZWRhdGFzZXJ2ZXJ1aSA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXJ1aS0qLnNvLiogJHtkYXRhZGlyfS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXItMS40L2dsYWRlLyouZ2xhZGUiCitGSUxFU19saWJlZGF0YXNlcnZlcnVpLWRldiA9ICIke2xpYmRpcn0vbGliZWRhdGFzZXJ2ZXJ1aS0qLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGliZWRhdGFzZXJ2ZXJ1aS0qLnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZXZvbHV0aW9uLWRhdGEtc2VydmVyLSovbGliZWRhdGFzZXJ2ZXJ1aS8qLmgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZS8wMDAxLWFkZC1hLWZvcm1hdHRpbmctYXR0cmlidXRlLWNoZWNrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2UvMDAwMS1hZGQtYS1mb3JtYXR0aW5nLWF0dHJpYnV0ZS1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODdkYTkwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2UvMDAwMS1hZGQtYS1mb3JtYXR0aW5nLWF0dHJpYnV0ZS1jaGVjay5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGVmMTcwZGRhN2ZiYWI1MzY4MmM5YmMyODdkZWM5M2ZhODYxMzBiYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA5IFNlcCAyMDE4IDIxOjQ5OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBhIGZvcm1hdHRpbmcgYXR0cmlidXRlIGNoZWNrCisKK1RlbGwgQ2xhbmcgdGhhdCBwYXJhbWV0ZXIgaXMgYSBwcmludGYgc3R5bGUgZm9ybWF0IHVzaW5nIHRoZQorYXR0cmlidXRlIGZsYWcKKworVGhpcyBoZWxwcyBpbiBhdm9pZGluZyBiZWxvdyB3YXJuaW5ncyBzZWVuIHdpdGggY2xhbmcKKwordW5hcnIuYzoxMDY6MjI6IGVycm9yOiBmb3JtYXQgc3RyaW5nIGlzIG5vdCBhIHN0cmluZyBsaXRlcmFsCitbLVdlcnJvciwtV2Zvcm1hdC1ub25saXRlcmFsXQorfCAgICAgdmZwcmludGYoc3RkZXJyLCBtc2csIGFyZ3MpOworfCAgICAgICAgICAgICAgICAgICAgICBefn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY3V0LW4tcGFzdGUvdW5hcnIvY29tbW9uL3VuYXJyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jdXQtbi1wYXN0ZS91bmFyci9jb21tb24vdW5hcnIuYyBiL2N1dC1uLXBhc3RlL3VuYXJyL2NvbW1vbi91bmFyci5jCitpbmRleCA5N2VjOTJhLi45ZTZlM2FkIDEwMDY0NAorLS0tIGEvY3V0LW4tcGFzdGUvdW5hcnIvY29tbW9uL3VuYXJyLmMKKysrKyBiL2N1dC1uLXBhc3RlL3VuYXJyL2NvbW1vbi91bmFyci5jCitAQCAtOTIsNyArOTIsNyBAQCBzaXplX3QgYXJfZ2V0X2dsb2JhbF9jb21tZW50KGFyX2FyY2hpdmUgKmFyLCB2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCkKKyAgICAgcmV0dXJuIGFyLT5nZXRfY29tbWVudChhciwgYnVmZmVyLCBjb3VudCk7CisgfQorIAorLXZvaWQgYXJfbG9nKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKQorK3ZvaWQgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyAoX19wcmludGZfXywgNCwgMCkpKSBhcl9sb2coY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pCisgeworICAgICB2YV9saXN0IGFyZ3M7CisgICAgIHZhX3N0YXJ0KGFyZ3MsIG1zZyk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjI0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZWNmMmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4yNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotU1VNTUFSWSA9ICJFdmluY2UgaXMgYSBkb2N1bWVudCB2aWV3ZXIgZm9yIGRvY3VtZW50IGZvcm1hdHMgbGlrZSBwZGYsIHBzLCBkanZ1IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk2ZjJmOGQ1ZWU1NzZhMjE2Mzk3NzkzOGVhMzZmYTdiIgotU0VDVElPTiA9ICJ4MTEvb2ZmaWNlIgotREVQRU5EUyA9ICJndGsrMyBsaWJzZWNyZXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3gxMScsJ2dub21lLWRlc2t0b3AzJywnJyxkKX0gcG9wcGxlciBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIG9yYyBhZHdhaXRhLWljb24tdGhlbWUgaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUiCi1QUiA9ICJyNSIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcgZ3RrLWljb24tY2FjaGUgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1hdHRyaWJ1dGUtdG8tX3N5bmN0ZXhfbWFsbG9jLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2ZiNjVmZjQ2ZGUxOTFkYzQ5YzQ4MWYxZmM2NjIwMWMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNDM4OTVhZjdiYmQ2ZjFiNTdmOWFiODc3OGU3OGNmOWMwYWY1ZGZjYzM0N2VhYTk0YTE3YmY4NjRjMDRkYzhmIgotCi1FWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLXRodW1ibmFpbGVyIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9saWJkb2N1bWVudC8ubGlicyIKLX0KLQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L3BpeG1hcHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9kYXRhL2ljb25zLzQ4eDQ4L2FwcHMvZXZpbmNlLnBuZyAke0R9JHtkYXRhZGlyfS9waXhtYXBzLwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX0KLSAgICB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgbXYgJHtEfSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2V2aW5jZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2V2aW5jZS5zZXJ2aWNlCi0gICAgZWxzZQotICAgICAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9zeXN0ZW1kL3VzZXIvZXZpbmNlLnNlcnZpY2UKLSAgICBmaQotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfQotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bm9uYXJjaF9saWJkaXJ9Ci19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItLWVuYWJsZS1uYXV0aWx1cywtLWRpc2FibGUtbmF1dGlsdXMsbmF1dGlsdXMiCi1QQUNLQUdFQ09ORklHW2Jyb3dzZXItcGx1Z2luXSA9ICItLWVuYWJsZS1icm93c2VyLXBsdWdpbiwtLWRpc2FibGUtYnJvd3Nlci1wbHVnaW4sIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZXZpbmNlLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJnbGliLTIuMC11dGlscyIKLVJSRUNPTU1NRU5EU18ke1BOfSA9ICJhZHdhaXRhLWljb24tdGhlbWUiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1uYXV0aWx1cy1leHRlbnNpb24iCi1QQUNLQUdFUyA9KyAiJHtQTn0tYnJvd3Nlci1wbHVnaW4iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycyBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQvdXNlci9ldmluY2Uuc2VydmljZSBcCi0gICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyovKi8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZpbmNlLyovYmFja2VuZHMvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldmluY2UvKi9iYWNrZW5kcy8qLmEiCi1GSUxFU18ke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gPSAiJHtsaWJkaXJ9L25hdXRpbHVzLyovKnNvIgotRklMRVNfJHtQTn0tYnJvd3Nlci1wbHVnaW4gPSAiJHtsaWJkaXJ9L21vemlsbGEvKi8qc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjI4LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjI4LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJmOGEwNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMjguMi5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIkV2aW5jZSBpcyBhIGRvY3VtZW50IHZpZXdlciBmb3IgZG9jdW1lbnQgZm9ybWF0cyBsaWtlIHBkZiwgcHMsIGRqdnUiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTZmMmY4ZDVlZTU3NmEyMTYzOTc3OTM4ZWEzNmZhN2IiCitTRUNUSU9OID0gIngxMS9vZmZpY2UiCitERVBFTkRTID0gImd0ayszIGxpYnNlY3JldCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywneDExJywnZ25vbWUtZGVza3RvcDMnLCcnLGQpfSBwb3BwbGVyIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2Ugb3JjIGFkd2FpdGEtaWNvbi10aGVtZSBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSIKKworaW5oZXJpdCBnbm9tZSBwa2djb25maWcgZ3RrLWljb24tY2FjaGUgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgc3lzdGVtZAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0dOT01FQk59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtHTk9NRUJOfS0ke1BWfS50YXIuJHtHTk9NRV9DT01QUkVTU19UWVBFfTtuYW1lPWFyY2hpdmUgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLXJlbW92ZS1ZRUxQLW1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWZvcm1hdC1hdHRyaWJ1dGUtdG8tX3N5bmN0ZXhfbWFsbG9jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWEtZm9ybWF0dGluZy1hdHRyaWJ1dGUtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2NmFhMTc2NmVhYWEzNzUzNmU0OGRlZjExYTBlNjdhMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjA5NTVkMjJkODVjOWY2ZDMyMmI2Y2JiNDY0ZjFjYzRjMzUyZGI2MTkwMTdlYzk1ZGFkNGNjNWMzNDQwZjczZTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10aHVtYm5haWxlciIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYmRvY3VtZW50Ly5saWJzIgorfQorCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2RhdGEvaWNvbnMvNDh4NDgvYXBwcy9ldmluY2UucG5nICR7RH0ke2RhdGFkaXJ9L3BpeG1hcHMvCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfQorICAgIHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBtdiAke0R9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0vZXZpbmNlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZXZpbmNlLnNlcnZpY2UKKyAgICBlbHNlCisgICAgICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvdXNlci9ldmluY2Uuc2VydmljZQorICAgIGZpCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9CisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2xpYmRpcn0KK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbmF1dGlsdXNdID0gIi0tZW5hYmxlLW5hdXRpbHVzLC0tZGlzYWJsZS1uYXV0aWx1cyxuYXV0aWx1cyIKK1BBQ0tBR0VDT05GSUdbYnJvd3Nlci1wbHVnaW5dID0gIi0tZW5hYmxlLWJyb3dzZXItcGx1Z2luLC0tZGlzYWJsZS1icm93c2VyLXBsdWdpbiwiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJldmluY2Uuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0gKz0gImdsaWItMi4wLXV0aWxzIgorUlJFQ09NTU1FTkRTXyR7UE59ID0gImFkd2FpdGEtaWNvbi10aGVtZSIKKworUEFDS0FHRVMgPSsgIiR7UE59LW5hdXRpbHVzLWV4dGVuc2lvbiIKK1BBQ0tBR0VTID0rICIke1BOfS1icm93c2VyLXBsdWdpbiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycyBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQvdXNlci9ldmluY2Uuc2VydmljZSBcCisgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyovKi8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZXZpbmNlLyovYmFja2VuZHMvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25hdXRpbHVzL2V4dGVuc2lvbnMtMi4wLyouYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ldmluY2UvKi9iYWNrZW5kcy8qLmEiCitGSUxFU18ke1BOfS1uYXV0aWx1cy1leHRlbnNpb24gPSAiJHtsaWJkaXJ9L25hdXRpbHVzLyovKnNvIgorRklMRVNfJHtQTn0tYnJvd3Nlci1wbHVnaW4gPSAiJHtsaWJkaXJ9L21vemlsbGEvKi8qc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtRGlzYWJsZS1saWJzZWNjb21wLXN5Y2FsbC1maWx0ZXJpbmctbWVjaGFuaXNtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTExZThhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDk2NzUzZDg1ZDhiNTNkZDhmODdiOGY0NDQ4OTJlZmZmZGJmYWIzODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNSBPY3QgMjAxNyAxNDo1NDoxNyArMDMwMAorU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGxpYnNlY2NvbXAgKHN5Y2FsbCBmaWx0ZXJpbmcgbWVjaGFuaXNtKQorCitVcHN0cmVhbSBmb3Jnb3QgdG8gbWFrZSBpdCBvcHRpb25hbCwgYW5kIGl0IGlzIG5vdCBjdXJyZW50bHkgdXNlZCBpbiBZb2N0bworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgY29uZmlndXJlLmFjIHwgMjAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDExOGQwNGYuLjQ3Yzg4OTQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1MSwyNiArMTUxLDYgQEAgZmkKKyAKKyBTRUNDT01QX1BLRz0iIgorIGVuYWJsZV9zZWNjb21wPSJubyIKKy1kbmwgQ2hlY2sgZm9yIGJ1YmJsZXdyYXAgY29tcGF0aWJsZSBwbGF0Zm9ybQorLWNhc2UgJGhvc3Rfb3MgaW4KKy0gIGxpbnV4KikKKy0gICAgY2FzZSAkaG9zdF9jcHUgaW4KKy0gICAgICBhbHBoYXxpYTY0fG02OGt8c2g0fHNwYXJjNjQpCistICAgICAgICBlbmFibGVfc2VjY29tcD0ibm8gKG5vdCBhdmFpbGFibGUgb24gdGhpcyBhcmNoaXRlY3R1cmUpIgorLSAgICAgICAgQUNfTVNHX1dBUk4oInNlY2NvbXAgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGFyY2hpdGVjdHVyZSIpCistICAgICAgICA7OworLSAgICAgICopCistICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJTRUNDT01QLCBbbGlic2VjY29tcF0pCistICAgICAgICBTRUNDT01QX1BLRz0ibGlic2VjY29tcCIKKy0gICAgICAgIEFDX0RFRklORShbRU5BQkxFX1NFQ0NPTVBdLCBbMV0sIFtEZWZpbmUgaWYgdXNpbmcgc2VjY29tcF0pCistICAgICAgICBlbmFibGVfc2VjY29tcD0ieWVzIgorLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoX0dOVV9TT1VSQ0UsIDEsIFtEZWZpbmUgdG8gaW5jbHVkZSBHTlUgZXh0ZW5zaW9uc10pCistICAgIEFDX0RFRklORV9VTlFVT1RFRChIQVZFX0JXUkFQLCAxLCBbRGVmaW5lIHRvIDEgaWYgQnViYmxld3JhcCBzdXBwb3J0IGlzIGF2YWlsYWJsZV0pCistICAgIEFDX0RFRklORV9VTlFVT1RFRChJTlNUQUxMX1BSRUZJWCwgIiRwcmVmaXgiLCBbUGF0aCB0byBsaWJyYXJ5IGluc3RhbGwgcHJlZml4XSkKKy0gICAgOzsKKy1lc2FjCisgCisgZG5sIHBrZy1jb25maWcgZGVwZW5kZW5jeSBjaGVja3MKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWIzNDkxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yOC4xLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImdub21lLWRlc2t0b3AiCisKK2luaGVyaXQgZ25vbWUgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImJjYmY5MDZkOTRlYjA4MDYwYzYwYTczNjQzODRkNjc4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzhhMzk3YTJiZTQ3NTg2ZTZkYzA3NWQ2YTdmYzU2NTlhYWUzZDEwNzEzZDc2OTk0Y2UxYjQ2MDg2ZTdlY2I5YSIKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2dub21lLWRlc2t0b3AtdGh1bWJuYWlsLWRvbi10LWFzc3VtZS10aW1lX3QtaXMtbG9uZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCisKK1BBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKK0ZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCisKK1JSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWtleXJpbmcvbGliZ25vbWUta2V5cmluZ18zLjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzMuMTIuMC5iYgppbmRleCA4MmFiZTMzLi5iYTY5ZTJlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzMuMTIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUta2V5cmluZy9saWJnbm9tZS1rZXlyaW5nXzMuMTIuMC5iYgpAQCAtMTUsMyArMTUsMTUgQEAKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjY5NmU0ZjJlOWFlZDQ2MjVjZGMzYWYzMGJkOGMyMzgiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjNGMxNzhmYmIwNWY3MmFjYzQ4NGQyMmRkYjA1NjhmNzUzMmM0MDliMGExM2UwNjUxM2ZmNTRiOTFlOTQ3NzgzIgorCisKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorI3wge3N0YW5kYXJkIGlucHV0fTo4MjM6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjEyLHIxMixyb3IjMycKKyN8IHtzdGFuZGFyZCBpbnB1dH06ODIzOiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHIxMixyMTIscm9yIzEzJworI3wge3N0YW5kYXJkIGlucHV0fTo4MjQ6IEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjEyLHIxMixyb3IjMjknCisjfCB7c3RhbmRhcmQgaW5wdXR9OjgyNDogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMTIscjEyLHJvciMxOScKKyN8IHtzdGFuZGFyZCBpbnB1dH06ODI1OiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYG9yciByMTAscjEwLHIxMCcKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXczXzMuMjQuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndGtzb3VyY2V2aWV3L2d0a3NvdXJjZXZpZXczXzMuMjQuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdlNDhlZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Rrc291cmNldmlldy9ndGtzb3VyY2V2aWV3M18zLjI0LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlBvcnRhYmxlIEMgbGlicmFyeSBmb3IgbXVsdGlsaW5lIHRleHQgZWRpdGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcm9qZWN0cy5nbm9tZS5vcmcvZ3Rrc291cmNldmlldy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLQotREVQRU5EUyA9ICJndGsrMyBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKLQotUE5BTUUgPSAiZ3Rrc291cmNldmlldyIKLQotUyA9ICIke1dPUktESVJ9LyR7UE5BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGdub21lYmFzZSBsaWJfcGFja2FnZSBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0a3NvdXJjZXZpZXcvMy4yNC8ke1BOQU1FfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzA5Y2NmYzgwZjc4MDgzODQxZjhmZTI2NmMxYWM1MmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FhNmJkZmViY2RjNzNhNzYzZGRkZWFhNDJmMTkwYzQwODM1ZTZmODQ5NWJiOWViOGY3ODU4N2UyNTc3YzE4OCIKLQotRklMRVNfJHtQTn0gKz0gIiAke2RhdGFkaXJ9L2d0a3NvdXJjZXZpZXctMy4wIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0a3NvdXJjZXZpZXcvZ3Rrc291cmNldmlldzNfMy4yNC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d0a3NvdXJjZXZpZXcvZ3Rrc291cmNldmlldzNfMy4yNC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjg4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Rrc291cmNldmlldy9ndGtzb3VyY2V2aWV3M18zLjI0LjguYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJQb3J0YWJsZSBDIGxpYnJhcnkgZm9yIG11bHRpbGluZSB0ZXh0IGVkaXRpbmciCitIT01FUEFHRSA9ICJodHRwOi8vcHJvamVjdHMuZ25vbWUub3JnL2d0a3NvdXJjZXZpZXcvIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCisKK0RFUEVORFMgPSAiZ3RrKzMgbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1BOQU1FID0gImd0a3NvdXJjZXZpZXciCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOQU1FfS0ke1BWfSIKKworaW5oZXJpdCBnbm9tZWJhc2UgbGliX3BhY2thZ2UgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGtzb3VyY2V2aWV3LzMuMjQvJHtQTkFNRX0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjUyZjhjODNhZDIxYWQ3NWU5ZWU2Y2NhMDNjZTJlNjNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlOWJiOGZmMTkwZGI3MDVkZWI5MTZkZDIzZmY2ODFmMGU4ODAzYWVjNDA3YmYwZmQ2NGM3ZTYxNWFjNDM2ZmUiCisKK0ZJTEVTXyR7UE59ICs9ICIgJHtkYXRhZGlyfS9ndGtzb3VyY2V2aWV3LTMuMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ndmZzL2d2ZnNfMS4zNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNzM5MTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJndmZzIGlzIGEgdXNlcnNwYWNlIHZpcnR1YWwgZmlsZXN5c3RlbSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDVkZjM4ZGQ3N2MzNWVjODQzMWYyMTI0MTBhMzMyOWUiCi0KLWluaGVyaXQgZ25vbWUgYmFzaC1jb21wbGV0aW9uIGdldHRleHQKLQotREVQRU5EUyArPSAibGlic2VjcmV0IGdsaWItMi4wIGdjb25mIGludGx0b29sLW5hdGl2ZSBsaWJndWRldiB1ZGlza3MyIHBvbGtpdCBzaGFkb3ctbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtCUE59LSR7UFZ9LnRhci54ejtuYW1lPWFyY2hpdmUiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjIxNmQ0NjFjNWU5NmUyY2VhNzQyNTNiZTQwN2FmNmRjIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOWVjMzg4YWZlYjM3M2EyMTNmMmNjNDg5MTg0Zjc2YTE3YWUyNzNhMDAwZThhNGVjNzIwYzE5OTU5NDMyNTZiYiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBtYWtlIGF1dG9tYWtlIGhhcHB5Li4KLSAgICB0b3VjaCAke1N9L0FCT1VULU5MUwotfQotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZ2R1IFwKLSAgICAtLWVuYWJsZS11ZGlza3MyIFwKLSAgICAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiBcCi0iCi0KLVBBQ0tBR0VTID0rICJndmZzZC1mdHAgZ3Zmc2Qtc2Z0cCBndmZzZC10cmFzaCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9nbGliLTIuMCBcCi0gICAgJHtkYXRhZGlyfS9HQ29uZiBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLnNvIFwKLSAgICAke2xpYmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotUkRFUEVORFNfJHtQTn0gPSAidWRpc2tzMiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvLmRlYnVnLyoiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIgotCi1GSUxFU19ndmZzZC1mdHAgPSAiJHtsaWJleGVjZGlyfS9ndmZzZC1mdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9mdHAubW91bnQiCi1GSUxFU19ndmZzZC1zZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2Qtc2Z0cCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3NmdHAubW91bnQiCi1GSUxFU19ndmZzZC10cmFzaCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXRyYXNoICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvdHJhc2gubW91bnQiCi0KLVJSRUNPTU1FTkRTX2d2ZnNkLWZ0cCArPSAib3BlbnNzaC1zZnRwIG9wZW5zc2gtc3NoIgotCi1QQUNLQUdFQ09ORklHID89ICJsaWJncGhvdG8yICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWZjXSA9ICItLWVuYWJsZS1hZmMsIC0tZGlzYWJsZS1hZmMsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0tZW5hYmxlLWFyY2hpdmUsIC0tZGlzYWJsZS1hcmNoaXZlLCBsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1thdmFoaV0gPSAiLS1lbmFibGUtYXZhaGksIC0tZGlzYWJsZS1hdmFoaSwgYXZhaGkiCi1QQUNLQUdFQ09ORklHW2djcl0gPSAiLS1lbmFibGUtZ2NyLCAtLWRpc2FibGUtZ2NyLCBnY3IiCi1QQUNLQUdFQ09ORklHW2h0dHBdID0gIi0tZW5hYmxlLWh0dHAsIC0tZGlzYWJsZS1odHRwLCBsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbbGlibXRwXSA9ICItLWVuYWJsZS1saWJtdHAsIC0tZGlzYWJsZS1saWJtdHAsIGxpYm10cCIKLVBBQ0tBR0VDT05GSUdbbGliZ3Bob3RvMl0gPSAiLS1lbmFibGUtZ3Bob3RvMiwgLS1kaXNhYmxlLWdwaG90bzIsIGxpYmdwaG90bzIiCi1QQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLWVuYWJsZS1zYW1iYSwgLS1kaXNhYmxlLXNhbWJhLCBzYW1iYSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLXdpdGhvdXQtc3lzdGVtZHVzZXJ1bml0ZGlyLHN5c3RlbWQiCi0KLSMgbmVlZHMgbWV0YS1maWxlc3lzdGVtcwotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICItLWVuYWJsZS1mdXNlLCAtLWRpc2FibGUtZnVzZSwgZnVzZSIKLQotIyBsaWJjZGlvLXBhcmFub2lhIHJlY2lwZSBkb2Vzbid0IGV4aXN0IHlldAotUEFDS0FHRUNPTkZJR1tjZGRhXSA9ICItLWVuYWJsZS1jZGRhLCAtLWRpc2FibGUtY2RkYSwgbGliY2Rpby1wYXJhbm9pYSIKLQotIyBGaXggdXAgcGVybWlzc2lvbnMgb24gcG9sa2l0IHJ1bGVzLmQgdG8gd29yayB3aXRoIHJwbTQgY29uc3RyYWludHMKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWNobW9kIDcwMCAke0R9LyR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9LyR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM5LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3Zmcy9ndmZzXzEuMzkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTFlYjZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2d2ZnMvZ3Zmc18xLjM5LjEuYmIKQEAgLTAsMCArMSw3MCBAQAorREVTQ1JJUFRJT04gPSAiZ3ZmcyBpcyBhIHVzZXJzcGFjZSB2aXJ0dWFsIGZpbGVzeXN0ZW0iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA1ZGYzOGRkNzdjMzVlYzg0MzFmMjEyNDEwYTMzMjllIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZSBiYXNoLWNvbXBsZXRpb24gZ2V0dGV4dAorCitERVBFTkRTICs9ICJsaWJzZWNyZXQgZ2xpYi0yLjAgZ2NvbmYgaW50bHRvb2wtbmF0aXZlIGxpYmd1ZGV2IHVkaXNrczIgcG9sa2l0IHNoYWRvdy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0JQTn0tJHtQVn0udGFyLnh6O25hbWU9YXJjaGl2ZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNGM2ODg5OWNmZDgwZDU3YTE1Mzc3MTUzNDE5M2JiOWEiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2ZTcyMTM1NzAzODliMTdiNjc0MzM2OTVmNTE1ZjNiMTc3MDViYTk3NjE2OGE0Yzg4MjhmYzE3N2NjZTUwMjIzIgorCisKK0VYVFJBX09FTUVTT04gPSAiIFwKKyAgICAtRGJsdXJheT1mYWxzZSBcCisgICAgLURnZHU9ZmFsc2UgXAorICAgIC1EZ29hPWZhbHNlIFwKKyAgICAtRGdvb2dsZT1mYWxzZSBcCisgICAgLURuZnM9ZmFsc2UgXAorICAgIC1EdWRpc2tzMj10cnVlIFwKKyAgICAtRGRvY3VtZW50YXRpb249ZmFsc2UgXAorIgorCitQQUNLQUdFUyA9KyAiZ3Zmc2QtZnRwIGd2ZnNkLXNmdHAgZ3Zmc2QtdHJhc2giCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZ2xpYi0yLjAgXAorICAgICR7ZGF0YWRpcn0vR0NvbmYgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3RtcGZpbGVzLmQgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyIKK1JERVBFTkRTXyR7UE59ID0gInVkaXNrczIiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1Zy8qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvKi5sYSIKKworRklMRVNfZ3Zmc2QtZnRwID0gIiR7bGliZXhlY2Rpcn0vZ3Zmc2QtZnRwICR7ZGF0YWRpcn0vZ3Zmcy9tb3VudHMvZnRwLm1vdW50IgorRklMRVNfZ3Zmc2Qtc2Z0cCA9ICIke2xpYmV4ZWNkaXJ9L2d2ZnNkLXNmdHAgJHtkYXRhZGlyfS9ndmZzL21vdW50cy9zZnRwLm1vdW50IgorRklMRVNfZ3Zmc2QtdHJhc2ggPSAiJHtsaWJleGVjZGlyfS9ndmZzZC10cmFzaCAke2RhdGFkaXJ9L2d2ZnMvbW91bnRzL3RyYXNoLm1vdW50IgorCitSUkVDT01NRU5EU19ndmZzZC1mdHAgKz0gIm9wZW5zc2gtc2Z0cCBvcGVuc3NoLXNzaCIKKworUEFDS0FHRUNPTkZJRyA/PSAibGliZ3Bob3RvMiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2FmY10gPSAiLURhZmM9dHJ1ZSwgLURhZmM9ZmFsc2UsIGxpYmltb2JpbGVkZXZpY2UgbGlicGxpc3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi1EYXJjaGl2ZT10cnVlLCAtRGFyY2hpdmU9ZmFsc2UsIGxpYmFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2Ruc3NkXSA9ICItRGRuc3NkPXRydWUsIC1EZG5zc2Q9ZmFsc2UsIGF2YWhpIgorUEFDS0FHRUNPTkZJR1tnY3JdID0gIi1EZ2NyPXRydWUsIC1EZ2NyPWZhbHNlLCBnY3IiCitQQUNLQUdFQ09ORklHW2h0dHBdID0gIi1EaHR0cD10cnVlLCAtRGh0dHA9ZmFsc2UsIGxpYnNvdXAtMi40IgorUEFDS0FHRUNPTkZJR1tsaWJtdHBdID0gIi1EbXRwPXRydWUsIC1EbXRwPWZhbHNlLCBsaWJtdHAiCitQQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLURsb2dpbmQ9dHJ1ZSwgLURsb2dpbmQ9ZmFsc2UsIHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2xpYmdwaG90bzJdID0gIi1EZ3Bob3RvMj10cnVlLCAtRGdwaG90bzI9ZmFsc2UsIGxpYmdwaG90bzIiCitQQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItRHNtYj10cnVlLCAtRHNtYj1mYWxzZSwgc2FtYmEiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IC1EdG1wZmlsZXNkaXI9JHtsaWJkaXJ9L3RtcGZpbGVzLmQsIC1Ec3lzdGVtZHVzZXJ1bml0ZGlyPW5vIC1EdG1wZmlsZXNkaXI9bm8sIHN5c3RlbWQiCisKKyMgbmVlZHMgbWV0YS1maWxlc3lzdGVtcworUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICItRGZ1c2U9dHJ1ZSwgLURmdXNlPWZhbHNlLCBmdXNlIgorCisjIGxpYmNkaW8tcGFyYW5vaWEgcmVjaXBlIGRvZXNuJ3QgZXhpc3QgeWV0CitQQUNLQUdFQ09ORklHW2NkZGFdID0gIi1EY2RkYT10cnVlLCAtRGNkZGE9ZmFsc2UsIGxpYmNkaW8tcGFyYW5vaWEiCisKKyMgRml4IHVwIHBlcm1pc3Npb25zIG9uIHBvbGtpdCBydWxlcy5kIHRvIHdvcmsgd2l0aCBycG00IGNvbnN0cmFpbnRzCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwljaG1vZCA3MDAgJHtEfS8ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwljaG93biBwb2xraXRkOnJvb3QgJHtEfS8ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDI0OWZkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnbm9tZS9saWJnbm9tZWtiZF8zLjIyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGtleWJvYXJkIGxpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT02ZTI5YzY4OGQ5MTJkYTEyYjY2YjczZTMyYjAzZDgxMiIKLQotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLQotREVQRU5EUyA9ICJnY29uZiBnbGliLTIuMCBsaWJ4a2xhdmllciBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0Ci0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUdOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjdiMWViZjk5ZjQyNTRjOTk5MjIxNjNjMjYyYzdmZjA0IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMzQwYjMwZGFiZmViYmQ0ZTBlNmMwZmUzNGEzNzg5NjZkZDU2NDBiNWQ0NDU5NWFiOGExOWIwYmUyNTVkNzdkZiIKLQotRVhUUkFfT0VDT05GX3JlbW92ZSA9ICItLWRpc2FibGUtc2NoZW1hcy1pbnN0YWxsIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ25vbWUvbGliZ25vbWVrYmRfMy4yNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzMuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTZhNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdub21lL2xpYmdub21la2JkXzMuMjYuMC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkdOT01FIGtleWJvYXJkIGxpYnJhcnkiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT02ZTI5YzY4OGQ5MTJkYTEyYjY2YjczZTMyYjAzZDgxMiIKKworU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKKworREVQRU5EUyA9ICJnY29uZiBnbGliLTIuMCBsaWJ4a2xhdmllciBndGsrMyBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGdub21lIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0CisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0dOT01FX0NPTVBSRVNTX1RZUEUgPSAieHoiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjhiOWQxM2Q0NjI1NWNkZTkxMGIzZGI1YTZlYmI0NzI3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZWEzYjQxOGM1N2MzMDYxNWY3ZWU1YjZmNzE4ZGVmN2M5ZDA5Y2UzNDYzNzMyNDM2MTE1MDc0NDI1ODk2ODg3NSIKKworRVhUUkFfT0VDT05GX3JlbW92ZSA9ICItLWRpc2FibGUtc2NoZW1hcy1pbnN0YWxsIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjIwLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjIwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMTQ5ZmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYnduY2svbGlid25jazNfMy4yMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJXaW5kb3cgbmF2aWdhdGlvbiBjb25zdHJ1Y3Rpb24gdG9vbGtpdCIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLUJQTiA9ICJsaWJ3bmNrIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ25vbWUtY29tbW9uLW5hdGl2ZSBndGsrMyBnZGstcGl4YnVmLW5hdGl2ZSBsaWJ4cmVzIgotCi1QQUNLQUdFQ09ORklHID8/PSAic3RhcnR1cC1ub3RpZmljYXRpb24iCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0ODc5MzhkNjVkNGJmYWUxZjI1MDEwNTJiMWJkNzQ5MiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjFjYjAzNzE2YmM0NzcwNThkZmRmM2ViZmE0ZjUzNGRlM2IxM2IxYWEwNjdmY2QwNjRkMGI3ODEzMjkxY2JhNzIiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGxpYnhyZXMgbWVhbnMgeDExIG9ubHkKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjMwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGlid25jay9saWJ3bmNrM18zLjMwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNlZTljOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJ3bmNrL2xpYnduY2szXzMuMzAuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIldpbmRvdyBuYXZpZ2F0aW9uIGNvbnN0cnVjdGlvbiB0b29sa2l0IgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImxpYnduY2siCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBnbm9tZS1jb21tb24tbmF0aXZlIGd0ayszIGdkay1waXhidWYtbmF0aXZlIGxpYnhyZXMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzdGFydHVwLW5vdGlmaWNhdGlvbiIKK1BBQ0tBR0VDT05GSUdbc3RhcnR1cC1ub3RpZmljYXRpb25dID0gIi0tZW5hYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbixzdGFydHVwLW5vdGlmaWNhdGlvbiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgZ2V0dGV4dAorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2MDEwOWMyYWIwYjA3ZGExMDk5ZWU1Nzk4MDA1NGRlMSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImFjNmQwZDI2NDZhYTgwNjc2ZDMwNjY2NTFlNzNhYmI3YmZmN2VkNzliZTIzOGM5YjIxYTAwODNlMmFkYzM0MzkiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGxpYnhyZXMgbWVhbnMgeDExIG9ubHkKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHlfMy4yOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5XzMuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODlmNmVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL21ldGFjaXR5L21ldGFjaXR5XzMuMjguMC5iYgpAQCAtMCwwICsxLDQxIEBACitTRUNUSU9OID0gIngxMS93bSIKK1NVTU1BUlkgPSAiTWV0YWNpdHkgaXMgdGhlIGJvcmluZyB3aW5kb3cgbWFuYWdlciBmb3IgdGhlIGFkdWx0IGluIHlvdSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjRjY2U1MzU2MGI4ZTYxOWZmYTdjODMwZmI4NzYxYWEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2luY2x1ZGUvbWFpbi5oO2VuZGxpbmU9MjQ7bWQ1PTcyMTQ4ZWRlMDdhNmRhZGQwMWRlNmE4ODJkMjBhOWFkIgorCitQRSA9ICIxIgorCitERVBFTkRTID0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgICAgICAgICBnbm9tZS1kb2MtdXRpbHMgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAorICAgICAgICAgICBndGsrMyBnbGliLTIuMCBsaWJjYW5iZXJyYSBsaWJndG9wIGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBnbm9tZWJhc2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gc3RhcnR1cC1ub3RpZmljYXRpb24gd2hpY2ggZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0dOT01FL21ldGFjaXR5LmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHJvcC16ZW5pdHktZGV0ZWN0aW9uLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJjMGQ0YjJmYzBmY2Q2ZjJkM2MzN2RhOTM1OTIzZjllOWVkNWViOTlmIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14aW5lcmFtYSIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorCisjIGVuYWJsZSBhcyBuZWNjZXNzYXJ5IHVudGlsIG5ldyB3YXJuaW5ncyBhcmUgZGVhbHQgd2l0aAorUEFDS0FHRUNPTkZJR1t3ZXJyb3JdID0gIi0tZW5hYmxlLVdlcnJvciwtLWRpc2FibGUtV2Vycm9yLCwiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNkICR7U30KKyAgICBhY2xvY2FsIC0taW5zdGFsbCB8fCBleGl0IDEKKyAgICBhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWZvcmNlIC0taW5zdGFsbCAtV25vLXBvcnRhYmlsaXR5IHx8IGV4aXQgMQorICAgIGNkIC0KKworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90aGVtZXMgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciAke2RhdGFkaXJ9L2dub21lIgorUkRFUEVORFNfJHtQTn0gKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9tZXRhY2l0eS9tZXRhY2l0eV8zLjM4LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbWV0YWNpdHkvbWV0YWNpdHlfMy4zOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGZjOTE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9tZXRhY2l0eS9tZXRhY2l0eV8zLjM4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TRUNUSU9OID0gIngxMS93bSIKLVNVTU1BUlkgPSAiTWV0YWNpdHkgaXMgdGhlIGJvcmluZyB3aW5kb3cgbWFuYWdlciBmb3IgdGhlIGFkdWx0IGluIHlvdSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjRjY2U1MzU2MGI4ZTYxOWZmYTdjODMwZmI4NzYxYWEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2luY2x1ZGUvbWFpbi5oO2VuZGxpbmU9MjQ7bWQ1PTcyMTQ4ZWRlMDdhNmRhZGQwMWRlNmE4ODJkMjBhOWFkIgotCi1ERVBFTkRTID0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgc3RhcnR1cC1ub3RpZmljYXRpb24gXAotICAgICAgICAgICBnbm9tZS1kb2MtdXRpbHMgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgICAgICAgICBndGsrMyBnbGliLTIuMCBsaWJjYW5iZXJyYSBsaWJndG9wIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBnbm9tZWJhc2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0jIGRlcGVuZHMgb24gc3RhcnR1cC1ub3RpZmljYXRpb24gd2hpY2ggZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0dOT01FL21ldGFjaXR5LmdpdDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZHJvcC16ZW5pdHktZGV0ZWN0aW9uLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICJjMGQ0YjJmYzBmY2Q2ZjJkM2MzN2RhOTM1OTIzZjllOWVkNWViOTlmIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14aW5lcmFtYSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgY2QgJHtTfQotICAgIGFjbG9jYWwgLS1pbnN0YWxsIHx8IGV4aXQgMQotICAgIGF1dG9yZWNvbmYgLS12ZXJib3NlIC0tZm9yY2UgLS1pbnN0YWxsIC1Xbm8tcG9ydGFiaWxpdHkgfHwgZXhpdCAxCi0gICAgY2QgLQotCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3RoZW1lcyAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyICR7ZGF0YWRpcn0vZ25vbWUiCi1SREVQRU5EU18ke1BOfSArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzLzAwMDEtbmF1dGlsdXMtZHJvcC1nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1BUEktd2l0aC1uZXctZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy8wMDAxLW5hdXRpbHVzLWRyb3AtZ25vbWUtZGVza3RvcC10aHVtYm5haWwtQVBJLXdpdGgtbmV3LWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE5ZWI0OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1cy8wMDAxLW5hdXRpbHVzLWRyb3AtZ25vbWUtZGVza3RvcC10aHVtYm5haWwtQVBJLXdpdGgtbmV3LWcucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBhNGVkMzhlOTVjYmUwN2YwMjAyODI0OWI4YjMxNTU2NWE1YWMxZTQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgNSBNYXkgMjAxOCAyMjozMjo0NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuYXV0aWx1czogZHJvcCBnbm9tZS1kZXNrdG9wIHRodW1ibmFpbCBBUEkgd2l0aCBuZXcKKyBnZGstcGl4YnVmCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0lmIGdkay1waXhidWYgPj0gMi4zNi41IGlzIGF2YWlsYWJsZSwgaXRzIHNjYWxpbmcgQVBJIGNhbiBkbyB3aGF0IHdlCit3YW50LCBzbyB3ZSBkb27igJl0IG5lZWQgdG8gdXNlIHRoZSBkZXByZWNhdGVkIGdub21lLWRlc2t0b3Agb25lLgorCitBbHNvIGZpeGVzIGNvbXBpbGUgZXJyb3JzIHNlZW4gb24gbWFzdGVyCituYXV0aWx1cy1wcm9wZXJ0aWVzLXdpbmRvdy5jOjUxMDE6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdub21lX2Rlc2t0b3BfdGh1bWJuYWlsX3NjYWxlX2Rvd25fcGl4YnVmJworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvbmF1dGlsdXMtcHJvcGVydGllcy13aW5kb3cuYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL25hdXRpbHVzLXByb3BlcnRpZXMtd2luZG93LmMgYi9zcmMvbmF1dGlsdXMtcHJvcGVydGllcy13aW5kb3cuYworaW5kZXggZGVhOGIwZi4uZmFkOWJkMSAxMDA2NDQKKy0tLSBhL3NyYy9uYXV0aWx1cy1wcm9wZXJ0aWVzLXdpbmRvdy5jCisrKysgYi9zcmMvbmF1dGlsdXMtcHJvcGVydGllcy13aW5kb3cuYworQEAgLTUwOTgsMTAgKzUwOTgsMTEgQEAgdXBkYXRlX3ByZXZpZXdfY2FsbGJhY2sgKEd0a0ZpbGVDaG9vc2VyICppY29uX2Nob29zZXIsCisgCQkJc2NhbGUgPSAoZG91YmxlKWdka19waXhidWZfZ2V0X2hlaWdodCAocGl4YnVmKSAvCisgCQkJCWdka19waXhidWZfZ2V0X3dpZHRoIChwaXhidWYpOworIAorLQkJCXNjYWxlZF9waXhidWYgPSBnbm9tZV9kZXNrdG9wX3RodW1ibmFpbF9zY2FsZV9kb3duX3BpeGJ1ZgorKwkJCXNjYWxlZF9waXhidWYgPSBnZGtfcGl4YnVmX3NjYWxlX3NpbXBsZQorIAkJCQkocGl4YnVmLAorIAkJCQkgUFJFVklFV19JTUFHRV9XSURUSCwKKy0JCQkJIHNjYWxlICogUFJFVklFV19JTUFHRV9XSURUSCk7CisrCQkJCSBzY2FsZSAqIFBSRVZJRVdfSU1BR0VfV0lEVEgsCisrCQkJCSBHREtfSU5URVJQX0hZUEVSKTsKKyAJCQlnX29iamVjdF91bnJlZiAocGl4YnVmKTsKKyAJCQlwaXhidWYgPSBzY2FsZWRfcGl4YnVmOworIAkJfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMTguNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1c18zLjE4LjUuYmIKaW5kZXggOGZkYmY2YS4uYmRiMmYzYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMTguNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXNfMy4xOC41LmJiCkBAIC02LDE0ICs2LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkVYVEVOU0lPTlM7bWQ1PTc1NzlkNjY3ODQwMmExODY4NjMxYmY4MmM5M2ZmMGQ0IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mMzBhOTcxNmVmMzc2MmUzNDY3YTJmNjJiZjc5MGYwYSIKIAotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9uYXV0aWx1cy8zLjE4L25hdXRpbHVzLSR7UFZ9LnRhci54eiIKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbmF1dGlsdXMvJHtNQUpfVkVSfS9uYXV0aWx1cy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXV0aWx1cy1kcm9wLWdub21lLWRlc2t0b3AtdGh1bWJuYWlsLUFQSS13aXRoLW5ldy1nLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMGY1NzhiZGE1NjU1YzBjZTIwNGJlZmFmY2E1ODAzZDciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjBhOTI3YzA1MjJiNGNjZWQ5ZDhmNjJiYWVkMmVlNWUyZmQ0MzA1YmU0NTIzZWI1YmM0NDgwNTk3MWE2Y2MxNSIKIAogREVQRU5EUyA9ICJndGsrMyBnbm9tZS1kZXNrdG9wMyBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdsaWItMi4wLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgcGFuZ28iCiAKLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKQEAgLTIzLDcgKzI3LDcgQEAKICAgICAtLWVuYWJsZS10cmFja2VyPW5vIFwKICAgICAtLWRpc2FibGUtc2NoZW1hcy1jb21waWxlIFwKICAgICAtLWVuYWJsZS14bXA9bm8gXAotICAgIC0tZW5hYmxlLWxpYmV4aWY9bm8gXCAKKyAgICAtLWVuYWJsZS1saWJleGlmPW5vIFwKICIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVzZXIvbGlidXNlci8wMDAxLUNoZWNrLWZvci1pc3NldHVnaWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2VyL2xpYnVzZXIvMDAwMS1DaGVjay1mb3ItaXNzZXR1Z2lkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXIvMDAwMS1DaGVjay1mb3ItaXNzZXR1Z2lkLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2VyL2xpYnVzZXIvMDAwMS1DaGVjay1mb3ItaXNzZXR1Z2lkLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXIvMDAwMS1tb2R1bGVzLWZpbGVzLmMtcGFyc2VfZmllbGQtZml4LXN0cmluZy1mb3JtYXRpbmctaW4tLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvbGlidXNlci9saWJ1c2VyLzAwMDEtbW9kdWxlcy1maWxlcy5jLXBhcnNlX2ZpZWxkLWZpeC1zdHJpbmctZm9ybWF0aW5nLWluLS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyLzAwMDEtbW9kdWxlcy1maWxlcy5jLXBhcnNlX2ZpZWxkLWZpeC1zdHJpbmctZm9ybWF0aW5nLWluLS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvbGlidXNlci9saWJ1c2VyLzAwMDEtbW9kdWxlcy1maWxlcy5jLXBhcnNlX2ZpZWxkLWZpeC1zdHJpbmctZm9ybWF0aW5nLWluLS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyLzAwMDItcmVtb3ZlLXVudXNlZC1leGVjaW5mby5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvbGlidXNlci9saWJ1c2VyLzAwMDItcmVtb3ZlLXVudXNlZC1leGVjaW5mby5oLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ1c2VyL2xpYnVzZXIvMDAwMi1yZW1vdmUtdW51c2VkLWV4ZWNpbmZvLmgucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2xpYnVzZXIvbGlidXNlci8wMDAyLXJlbW92ZS11bnVzZWQtZXhlY2luZm8uaC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2VyL2xpYnVzZXJfMC42Mi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidXNlci9saWJ1c2VyXzAuNjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L2xpYnVzZXIvbGlidXNlcl8wLjYyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3N2Y2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDc1NTM5NjU5Mzk2YjE4MTEwZDVhNTJhOGEzMjg0NTI1NGI0ZDhlY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBdWcgMjAxOCAxODoyNTo0NyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IKKwordXNlcm1vdW50LmM6MjM4OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWpvcicKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdXNlcm1vdW50LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3VzZXJtb3VudC5jIGIvdXNlcm1vdW50LmMKK2luZGV4IDQxMDcwMjcuLjIxZWY3N2YgMTAwNjQ0CistLS0gYS91c2VybW91bnQuYworKysrIGIvdXNlcm1vdW50LmMKK0BAIC00MCw2ICs0MCw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGdsb2IuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGUvMDAwMS1NaXNzaW5nLW4taW4tdHJhbnNsYXRlZC1zdHJpbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLU1pc3Npbmctbi1pbi10cmFuc2xhdGVkLXN0cmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGI3MDBlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGUvMDAwMS1NaXNzaW5nLW4taW4tdHJhbnNsYXRlZC1zdHJpbmcucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA3Y2JjNjQ0MWNkMDZlMGMwYmI1MWFjMzdjOGYyMmIwZmQ1MWYxMmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlyaSBLdWNlcmEgPGprdWNlcmFAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTEgQXByIDIwMTggMTc6MTM6NDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWlzc2luZyBcbiBpbiB0cmFuc2xhdGVkIHN0cmluZworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBvL3RyLnBvIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcG8vdHIucG8gYi9wby90ci5wbworaW5kZXggODRlNTAyMS4uYTI4ZTk0NyAxMDA2NDQKKy0tLSBhL3BvL3RyLnBvCisrKysgYi9wby90ci5wbworQEAgLTQwOCw3ICs0MDgsNyBAQCBtc2dzdHIgIkdyYWZpayBwZW5jZXJlIGHDp8SxbGFtYWTEsSB2ZSB1w6diaXJpbSBkZW5ldGltaSBidWx1bmFtYWTEsS5cbiIKKyAjOiAuLi8uLi9wby8uLi91c2VycGFzc3dkLmM6MzcKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJVbmV4cGVjdGVkIGNvbW1hbmQtbGluZSBhcmd1bWVudHNcbiIKKy1tc2dzdHIgIkJla2xlbm1leWVuIGtvbXV0IHNhdMSxcsSxIGFyZ8O8bWFubGFyxLEiCisrbXNnc3RyICJCZWtsZW5tZXllbiBrb211dCBzYXTEsXLEsSBhcmfDvG1hbmxhcsSxXG4iCisgCisgIzogLi4vLi4vcG8vLi4vdXNlcmluZm8uYzo0MTEKKyAjLCBjLWZvcm1hdAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGUvMDAwMS1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1MTJkNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZS8wMDAxLWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA3YTMxNmRhZDA2OTdhZjJlZjRlODA3OWE1YWY1MTU2NWE4MTk1YWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNCBKdWwgMjAxNyAwMTo0MjozMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB1c2VyaGVscGVyLmM6IGZpeCBmb3JtYXR0aW5nIGlzc3VlcwotCi1GaXhlZCB3aGVuIGNvbXBpbGUgd2l0aCAiLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkiOgotfC4uL3VzZXJtb2RlLTEuMTExL3VzZXJoZWxwZXIuYzo1ODU6NDogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcKLWxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICB0ZXh0ID0gZ19zdHJkdXBfcHJpbnRmKGRnZXR0ZXh0KGRhdGEtPmRvbWFpbiwgZGF0YS0+YmFubmVyKSk7Ci18ICAgIF5+fn4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHVzZXJoZWxwZXIuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3VzZXJoZWxwZXIuYyBiL3VzZXJoZWxwZXIuYwotaW5kZXggNzZhZDQ5Mi4uZWUwZGE0OSAxMDA2NDQKLS0tLSBhL3VzZXJoZWxwZXIuYwotKysrIGIvdXNlcmhlbHBlci5jCi1AQCAtNTgyLDcgKzU4Miw3IEBAIGNvbnZlcnNlX2NvbnNvbGUoaW50IG51bV9tc2csIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1zZywKLSAKLSAJaWYgKGJhbm5lciA9PSAwKSB7Ci0gCQlpZiAoKGRhdGEtPmJhbm5lciAhPSBOVUxMKSAmJiAoZGF0YS0+ZG9tYWluICE9IE5VTEwpKSB7Ci0tCQkJdGV4dCA9IGdfc3RyZHVwX3ByaW50ZihkZ2V0dGV4dChkYXRhLT5kb21haW4sIGRhdGEtPmJhbm5lcikpOwotKwkJCXRleHQgPSBnX3N0cmR1cF9wcmludGYoIiVzIiwgZGdldHRleHQoZGF0YS0+ZG9tYWluLCBkYXRhLT5iYW5uZXIpKTsKLSAJCX0gZWxzZSB7Ci0gCQkJaWYgKChzZXJ2aWNlICE9IE5VTEwpICYmIChzdHJsZW4oc2VydmljZSkgPiAwKSkgewotIAkJCQlpZiAoZGF0YS0+ZmFsbGJhY2tfYWxsb3dlZCkgewotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC91c2VybW9kZS91c2VybW9kZV8xLjExMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWVhMmU2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIHVzZXJtb2RlIGNvbnRhaW5zIHRoZSB1c2VyaGVscGVyIHByb2dyYW0sIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFsbG93IGNvbmZpZ3VyZWQgXAotcHJvZ3JhbXMgdG8gYmUgcnVuIHdpdGggc3VwZXJ1c2VyIHByaXZpbGVnZXMgYnkgb3JkaW5hcnkgdXNlcnMsIGFuZCBzZXZlcmFsIFwKLWdyYXBoaWNhbCB0b29scyBmb3IgdXNlcnM6IFwKLSogdXNlcmluZm8gYWxsb3dzIHVzZXJzIHRvIGNoYW5nZSB0aGVpciBmaW5nZXIgaW5mb3JtYXRpb24uIFwKLSogdXNlcm1vdW50IGxldHMgdXNlcnMgbW91bnQsIHVubW91bnQsIGFuZCBmb3JtYXQgZmlsZXN5c3RlbXMuIFwKLSogdXNlcnBhc3N3ZCBhbGxvd3MgdXNlcnMgdG8gY2hhbmdlIHRoZWlyIHBhc3N3b3Jkcy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9wYWd1cmUuaW8vdXNlcm1vZGUiCi1MSUNFTlNFID0gIkdQTHYyKyIKLURFUEVORFMgPSAibGlidXNlciAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZ3RrKyBkZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlIFwKLSAgICAgICAgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gaW50bHRvb2wtbmF0aXZlIFwKLSAgICAgICAgICAgdXRpbC1saW51eCBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1MaW5rLXdpdGgtbGlibS1mb3ItcG93bC1BUEkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhiYTUxMGZiZDhkYTlmNGU4NmU1N2Q2YzMxY2ZmMjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RkMGI5NjM5YjViZDM5NmI3ZWE1ZmFkYTZhYWE2OTRkYmZkYWEzYWQwNmViOTVhNmVhYmNkZmQwMmY4NzVjNiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgKz0gIklOU1RBTEw9J2luc3RhbGwgLXAnIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHBhbSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvdXNlcm1vZGUvdXNlcm1vZGVfMS4xMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJjY2YzZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3VzZXJtb2RlL3VzZXJtb2RlXzEuMTEyLmJiCkBAIC0wLDAgKzEsMzEgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSB1c2VybW9kZSBjb250YWlucyB0aGUgdXNlcmhlbHBlciBwcm9ncmFtLCB3aGljaCBjYW4gYmUgdXNlZCB0byBhbGxvdyBjb25maWd1cmVkIFwKK3Byb2dyYW1zIHRvIGJlIHJ1biB3aXRoIHN1cGVydXNlciBwcml2aWxlZ2VzIGJ5IG9yZGluYXJ5IHVzZXJzLCBhbmQgc2V2ZXJhbCBcCitncmFwaGljYWwgdG9vbHMgZm9yIHVzZXJzOiBcCisqIHVzZXJpbmZvIGFsbG93cyB1c2VycyB0byBjaGFuZ2UgdGhlaXIgZmluZ2VyIGluZm9ybWF0aW9uLiBcCisqIHVzZXJtb3VudCBsZXRzIHVzZXJzIG1vdW50LCB1bm1vdW50LCBhbmQgZm9ybWF0IGZpbGVzeXN0ZW1zLiBcCisqIHVzZXJwYXNzd2QgYWxsb3dzIHVzZXJzIHRvIGNoYW5nZSB0aGVpciBwYXNzd29yZHMuIFwKKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL3VzZXJtb2RlIgorTElDRU5TRSA9ICJHUEx2MisiCitERVBFTkRTID0gImxpYnVzZXIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGd0aysgZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSBcCisgICAgICAgICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGludGx0b29sLW5hdGl2ZSBcCisgICAgICAgICAgIHV0aWwtbGludXggXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLUxpbmstd2l0aC1saWJtLWZvci1wb3dsLUFQSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1pc3Npbmctbi1pbi10cmFuc2xhdGVkLXN0cmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzY2YTlmNzYwMGY1NzNmYjZkZTQ2NTVkNDE2MjE5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzN2M0ZDY2NzIwOWRhMTQwODJjMDhkZjZlNDhmZTk1NWQxNTMyZWZlYmQ1MzIyZjEzZjk0NjgzYzZjYzEwMzcwIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSArPSAiSU5TVEFMTD0naW5zdGFsbCAtcCciCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgcGFtIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvUkVBRE1FCmluZGV4IDcxODUzODMuLmJhMmJhNWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL1JFQURNRQorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9SRUFETUUKQEAgLTEyLDcgKzEyLDcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBtYXN0ZXIKK2JyYW5jaDogdGh1ZAogcmV2aXNpb246IEhFQUQKIAogCkBAIC0yMCwxMiArMjAsMTIgQEAKIC0tLS0tLS0tLS0tCiAKIFNlbmQgcGF0Y2hlcyAvIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcKLXdpdGggJ1ttZXRhLWluaXRyYW1mc10nIGluIHRoZSBzdWJqZWN0Lgord2l0aCAnW21ldGEtaW5pdHJhbWZzXVt0aHVkXScgaW4gdGhlIHN1YmplY3QuCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzaW5nIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLWluaXRyYW1mc11bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtaW5pdHJhbWZzXVt0aHVkXVtQQVRDSCcKIAotSW50ZXJtIGxheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitUaHVkIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CiAKIAogTGljZW5zZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY29uZi9sYXllci5jb25mCmluZGV4IDk3YWZjOTMuLmJkOTJkZGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jb25mL2xheWVyLmNvbmYKQEAgLTE2LDcgKzE2LDcgQEAKIEJCRklMRV9QUklPUklUWV9tZXRhLWluaXRyYW1mcyA9ICI4IgogTEFZRVJERVBFTkRTX21ldGEtaW5pdHJhbWZzID0gImNvcmUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9tZXRhLWluaXRyYW1mcyA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX21ldGEtaW5pdHJhbWZzID0gInRodWQiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCiAgIGRyYWN1dC0+dmlydHVhbC9rZXJuZWwgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdC1jZmdfMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdC1jZmdfMC4yLmJiCmluZGV4IDgwNGVjMzIuLmY5MGUyMzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3QtY2ZnXzAuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290LWNmZ18wLjIuYmIKQEAgLTE5LDkgKzE5LDE1IEBACiAjIFNwZWNpZnkgZnVsbCBrZXJuZWwgcGF0aCBvbiB0YXJnZXQuCiBLRVJORUw9L2Jvb3QvJHtLRVJORUxfSU1BR0VUWVBFfQogIworIyBTcGVjaWZ5IHdoaWNoIGRldmljZSB0cmVlIGJsb2IgdG8gdXNlCisjIERUQj0vYm9vdC9teS1vd24tZHRiCisjCiAjIEFwcGVuZCB0aGlzIHRhZ3MgdG8gdGhlIGtlcm5lbCBjbWRsaW5lLgogQVBQRU5EPSR7Q01ETElORX0gJHtDTURMSU5FX0RFQlVHfQogIworIyBPdmVyd3JpdGUga2VybmVsIGNvbW1hbmQgbGluZSBpbnN0ZWFkIG9mIGFwcGVuZGluZyB0byBpdAorIyBDTURMSU5FPWNvbnNvbGU9L2Rldi90dHkwIHJvb3Q9L2Rldi9zZGIxCisjCiAjIFNwZWNpZnkgb3B0aW9uYWwgaW5pdHJkL2luaXRyYW1mcy4KICMgSU5JVFJEPS9ib290L2luaXRyYW1mcy5jcGlvLmd6CiAjCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfZ2l0LmJiCmluZGV4IDlmNWRhZDcuLjZkNzllOGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2tleGVjYm9vdC9rZXhlY2Jvb3RfZ2l0LmJiCkBAIC0xLDM2ICsxLDMgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDb25maWd1cmUgb3B0aW9uczoKLSMKLSMgIC0tZW5hYmxlLXN0YXRpYy1saW5raW5nIGNvbXBpbGUga2V4ZWNib290IGFzIHN0YXRpYyBleGVjdXRhYmxlIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZmJ1aSAgICAgICAgICAgc3VwcG9ydCBmcmFtZWJ1ZmZlciBtZW51IFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLWZidWktd2lkdGggICAgIGxpbWl0IEZCIFVJIHdpZHRoIHRvIHNwZWNpZmllZCB2YWx1ZSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWZidWktaGVpZ2h0ICAgIGxpbWl0IEZCIFVJIGhlaWdodCB0byBzcGVjaWZpZWQgdmFsdWUgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS10ZXh0dWkgICAgICAgICBzdXBwb3J0IGNvbnNvbGUgdGV4dCB1c2VyIGludGVyZmFjZSBbZGVmYXVsdD1ub10KLSMgIC0tZW5hYmxlLWNmZ2ZpbGVzICAgICAgIHN1cHBvcnQgY29uZmlnIGZpbGVzIFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLWljb25zICAgICAgICAgIHN1cHBvcnQgY3VzdG9tIGljb25zIChkZXBlbmRzIG9uIGZidWkpIFtkZWZhdWx0PXllc10KLSMgIC0tZW5hYmxlLXphdXJ1cyAgICAgICAgIGNvbXBpbGUgU2hhcnAgWmF1cnVzIHNwZWNpZmljIGNvZGUgW2RlZmF1bHQ9bm9dCi0jICAtLWVuYWJsZS16aW1hZ2UgICAgICAgICBjb21waWxlIHdpdGggekltYWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXQotIyAgLS1lbmFibGUtdWltYWdlICAgICAgICAgY29tcGlsZSB3aXRoIHVJbWFnZSBzdXBwb3J0IFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtbWFjaGluZS1rZXJuZWwgbG9vayBmb3IgbWFjaGluZS1zcGVjaWZpYyB6SW1hZ2Uga2VybmVsIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZGV2aWNlcy1yZWNyZWF0aW5nCi0jICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgZGV2aWNlcyByZS1jcmVhdGluZyBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1kZWJ1ZyAgICAgICAgICBlbmFibGUgZGVidWcgb3V0cHV0IFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtaG9zdC1kZWJ1ZyAgICAgYWxsb3cgZm9yIG5vbi1kZXN0cnVjdGl2ZSBleGVjdXRpbmcgb2Yga2V4ZWNib290IG9uCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Qgc3lzdGVtIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtbnVta2V5cyAgICAgICAgZW5hYmxlIG1lbnUgaXRlbSBzZWxlY3Rpb24gYnkga2V5cyBbMC05XSBbZGVmYXVsdD15ZXNdCi0jICAtLWVuYWJsZS1iZy1idWZmZXIgICAgICBlbmFibGUgYnVmZmVyIGZvciBwcmUtZHJhd2VkIEZCIEdVSSBiYWNrZ3JvdW5kCi0jCi0jICAtLWVuYWJsZS10aW1lb3V0ICAgICAgICBhbGxvdyB0byBib290IDFzdCBrZXJuZWwgYWZ0ZXIgdGltZW91dCBpbiBzZWNvbmRzCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PW5vXQotIyAgLS1lbmFibGUtZGVsYXkgICAgICAgICAgc3BlY2lmeSBkZWxheSBiZWZvcmUgZGV2aWNlIHNjYW5uaW5nLCBhbGxvd2luZwotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiBvbGQgQ0YvU0QgY2FyZHMgW2RlZmF1bHQ9MV0KLSMgIC0tZW5hYmxlLWJwcCAgICAgICAgICAgIGVuYWJsZSBzdXBwb3J0IG9mIHNwZWNpZmllZCBicHAgbW9kZXMKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFsbCwzMiwyNCwxOCwxNiw0LDIsMSkgW2RlZmF1bHQ9YWxsXQotIyAgLS1lbmFibGUtZXZkZXYtcmF0ZSAgICAgY2hhbmdlIGV2ZGV2IChrZXlib2FyZC9tb3VzZSkgcmVwZWF0IHJhdGUKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gbWlsbGlzZWNvbmRzIGUuZy4gIjEwMDAsMjUwIiBbZGVmYXVsdD1ub10KLSMgIC0td2l0aC1rZXhlYy1iaW5hcnkgICAgIGxvb2sgZm9yIGtleGVjIGJpbmFyeSBhdCBwYXRoCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0PSIvdXNyL3NiaW4va2V4ZWMiXQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIFNVTU1BUlkgPSAia2V4ZWNib290IGxpbnV4LWFzLWJvb3Rsb2FkZXIiCiBERVNDUklQVElPTiA9ICJrZXhlY2Jvb3QgaXMgYSBncmFwaGljYWwgbGludXgtYXMtYm9vdGxvYWRlciBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBrZXhlYy4iCiBIT01FUEFHRSA9ICJodHRwOi8va2V4ZWNib290Lm9yZyIKQEAgLTM5LDE0ICs2LDEzIEBACiBQViA9ICIwLjYrZ2l0JHtTUkNQVn0iCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2tleGVjYm9vdC9rZXhlY2Jvb3QuZ2l0IgotU1JDUkVWID0gIjRjNGYxMjdlNzlhYzViOGQ2YjZlMmZiYjkzOGNjYmYxMmIwNGM1MzEiCitTUkNSRVYgPSAiNGMwMWQ2OTYwYWE2YTlkMDM2NzU2MDUwNjI0NjlhYjc3N2ZhMmIwMSIKIGluaGVyaXQgYXV0b3Rvb2xzCiAKIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXh0dWkgLS1lbmFibGUtZGVsYXk9MiAtLWVuYWJsZS1ldmRldi1yYXRlPTEwMDAsMjUwIgogCiBkb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUga2V4ZWNib290ICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9zcmMva2V4ZWNib290ICR7RH0ke2JpbmRpcn0va2V4ZWNib290CiAgICAgaW5zdGFsbCAtZCAke0R9L3Byb2MKICAgICBpbnN0YWxsIC1kICR7RH0vbW50CiAgICAgaW5zdGFsbCAtZCAke0R9L2RldgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZHJhY3V0L2RyYWN1dF9naXQuYmIKaW5kZXggY2NmOWY2YS4uZGQyZThiYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9kcmFjdXQvZHJhY3V0X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2RyYWN1dC9kcmFjdXRfZ2l0LmJiCkBAIC02LDEwICs2LDEwIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAogUEUgPSAiMSIKLVBWID0gIjA0NitnaXQke1NSQ1JFVn0iCitQViA9ICIwNDkiCiAKLSMgdjA0NiB0YWcKLVNSQ1JFViA9ICJhMDc5OWZmYjU1NDQ4N2EzNzBjMmExYWRhZmFlZGQyMDIxYjZkYzhjIgorIyB2MDQ4IHRhZworU1JDUkVWID0gIjIyNWU0Yjk0Y2JkYjcwMmNmNTEyNDkwZGNkMmFkOWNhNWY1YjIyYzEiCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vYm9vdC9kcmFjdXQvZHJhY3V0LmdpdDtwcm90b2NvbD1odHRwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXRpbC5oLWluY2x1ZGUtc3lzLXJlZy5oLXdoZW4tbGliYy1nbGliYy5wYXRjaCBcCiAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieS8wMDAxLUFkZC1hbm90aGVyLXZhcmlhYmxlLUxJQlMtdG8tcHJvdmlkZXMtbGlicmFyaWVzLWZyb20ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvMDAwMS1BZGQtYW5vdGhlci12YXJpYWJsZS1MSUJTLXRvLXByb3ZpZGVzLWxpYnJhcmllcy1mcm9tLnBhdGNoCmluZGV4IDFiMWE5OTMuLmRmYmU3YmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieS8wMDAxLUFkZC1hbm90aGVyLXZhcmlhYmxlLUxJQlMtdG8tcHJvdmlkZXMtbGlicmFyaWVzLWZyb20ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5LzAwMDEtQWRkLWFub3RoZXItdmFyaWFibGUtTElCUy10by1wcm92aWRlcy1saWJyYXJpZXMtZnJvbS5wYXRjaApAQCAtMSwyNiArMSwyNCBAQAotRnJvbSAyMmFmYWEyMWI0YjI1ODA4MmJlNTkxZTU0Yzk5ZTFiYTZmYmQ3NzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiN2IzY2FhOWI1YzhhYmNkM2MzNzFkMDY4MzAwMWNkNjgxZTEwNGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMTUgSnVsIDIwMTcgMTA6MTk6MjIgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBhbm90aGVyIHZhcmlhYmxlIExJQlMgdG8gcHJvdmlkZXMgbGlicmFyaWVzIGZyb20gZW52CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYWMxNDQwNC4uOTJhOGU3MyAxMDA2NDQKK2luZGV4IGNjN2U4MjMuLmFlMzBhMDcgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC0yNyw3ICsyNyw3IEBAIFJQTV9PUFRfRkxBR1MgPz0gLU8yIC1nIC1waXBlIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mc3RhY2stcHJvdGVjdG9yCi0gQ0ZMQUdTICs9ICQoUlBNX09QVF9GTEFHUykgLXN0ZD1nbnU5OSAtV2FsbCAtV2Vycm9yIC1Xbm8tZXJyb3I9dW51c2VkLWZ1bmN0aW9uIC1Xbm8tdW51c2VkLWZ1bmN0aW9uIC1nZ2RiCi0gTERGTEFHUyA6PSAKK0BAIC0zMSw3ICszMSw3IEBAIGlmbmVxICgkKFZFUkJPU0VfVEVTVCksKQorIAlWRVJCT1NFX1RFU1Q9Ii0tdmVyYm9zZSIKKyBlbmRpZgogIAogLWdydWJieV9MSUJTID0gLWxibGtpZCAtbHBvcHQKICtncnViYnlfTElCUyA9IC1sYmxraWQgLWxwb3B0ICR7TElCU30KICAKICBhbGw6IGdydWJieQogIAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9ncnViYnkvZ3J1YmJ5L2dydWJieS1yZW5hbWUtZ3J1YjItZWRpdGVudi10by1ncnViLWVkaXRlbnYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvZ3J1YmJ5LXJlbmFtZS1ncnViMi1lZGl0ZW52LXRvLWdydWItZWRpdGVudi5wYXRjaAppbmRleCBkOTM2MjQ5Li5lNjkzOTE2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvZ3J1YmJ5LXJlbmFtZS1ncnViMi1lZGl0ZW52LXRvLWdydWItZWRpdGVudi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnkvZ3J1YmJ5LXJlbmFtZS1ncnViMi1lZGl0ZW52LXRvLWdydWItZWRpdGVudi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMDg0MTcwNmE1YjUyODBlNTAxYzhlMzkyYzcwYzQ2NmM1ZmJjZjBhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTVmMDU3MmYyZjQ1NmMyYzFiNzAwYmM3OTBkOWNlN2E1YzEzY2M3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDQgQXVnIDIwMTUgMjM6NTQ6NDEgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gcmVuYW1lIGdydWIyLWVkaXRlbnYgdG8gZ3J1Yi1lZGl0ZW52CkBAIC04LDM4ICs4LDQ4IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAogU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgZ3J1YmJ5LmMgfCA0ICsrLS0KLSB0ZXN0LnNoICB8IDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisgdGVzdC5zaCAgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9ncnViYnkuYyBiL2dydWJieS5jCi1pbmRleCBkNGViYjg2Li40N2ExYTE1IDEwMDY0NAoraW5kZXggMzk2MDQxYS4uM2NlYWU2OSAxMDA2NDQKIC0tLSBhL2dydWJieS5jCiArKysgYi9ncnViYnkuYwotQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgY2hhciAqZ3J1YjJHZXRFbnYoc3RydWN0IGNvbmZpZ0ZpbGVJbmZvICppbmZvLCBjaGFyICpuYW1lKQotICAgICBjaGFyICpzID0gTlVMTDsKLSAgICAgY2hhciAqcmV0ID0gTlVMTDsKLSAgICAgY2hhciAqZW52RmlsZSA9IGluZm8tPmVudkZpbGUgPyBpbmZvLT5lbnZGaWxlIDogIi9ib290L2dydWIyL2dydWJlbnYiOwotLSAgICBpbnQgcmMgPSBhc3ByaW50ZigmcywgImdydWIyLWVkaXRlbnYgJXMgbGlzdCB8IGdyZXAgJ14lcz0nIiwgZW52RmlsZSwgbmFtZSk7Ci0rICAgIGludCByYyA9IGFzcHJpbnRmKCZzLCAiZ3J1Yi1lZGl0ZW52ICVzIGxpc3QgfCBncmVwICdeJXM9JyIsIGVudkZpbGUsIG5hbWUpOworQEAgLTMwMSw3ICszMDEsNyBAQCBzdGF0aWMgY2hhciAqZ3J1YjJHZXRFbnYoc3RydWN0IGNvbmZpZ0ZpbGVJbmZvICppbmZvLCBjaGFyICpuYW1lKQorIAljaGFyICpyZXQgPSBOVUxMOworIAljaGFyICplbnZGaWxlID0gaW5mby0+ZW52RmlsZSA/IGluZm8tPmVudkZpbGUgOiAiL2Jvb3QvZ3J1YjIvZ3J1YmVudiI7CisgCWludCByYyA9CistCSAgICBhc3ByaW50ZigmcywgImdydWIyLWVkaXRlbnYgJXMgbGlzdCB8IGdyZXAgJ14lcz0nIiwgZW52RmlsZSwgbmFtZSk7CisrCSAgICBhc3ByaW50ZigmcywgImdydWItZWRpdGVudiAlcyBsaXN0IHwgZ3JlcCAnXiVzPSciLCBlbnZGaWxlLCBuYW1lKTsKICAKLSAgICAgaWYgKHJjIDwgMCkKLSAJcmV0dXJuIE5VTEw7Ci1AQCAtMzYxLDcgKzM2MSw3IEBAIHN0YXRpYyBpbnQgZ3J1YjJTZXRFbnYoc3RydWN0IGNvbmZpZ0ZpbGVJbmZvICppbmZvLCBjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSkKLSAgICAgaWYgKCF2YWx1ZSkKLSAJICAgIHJldHVybiAtMTsKKyAJaWYgKHJjIDwgMCkKKyAJCXJldHVybiBOVUxMOworQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgaW50IGdydWIyU2V0RW52KHN0cnVjdCBjb25maWdGaWxlSW5mbyAqaW5mbywgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpCisgCWlmICghdmFsdWUpCisgCQlyZXR1cm4gLTE7CiAgCi0tICAgIHJjID0gYXNwcmludGYoJnMsICJncnViMi1lZGl0ZW52ICVzIHNldCAnJXM9JXMnIiwgZW52RmlsZSwgbmFtZSwgdmFsdWUpOwotKyAgICByYyA9IGFzcHJpbnRmKCZzLCAiZ3J1Yi1lZGl0ZW52ICVzIHNldCAnJXM9JXMnIiwgZW52RmlsZSwgbmFtZSwgdmFsdWUpOwotICAgICBmcmVlKHZhbHVlKTsKLSAgICAgaWYgKHJjIDwwKQotIAlyZXR1cm4gLTE7CistCXJjID0gYXNwcmludGYoJnMsICJncnViMi1lZGl0ZW52ICVzIHNldCAnJXM9JXMnIiwgZW52RmlsZSwgbmFtZSwgdmFsdWUpOworKwlyYyA9IGFzcHJpbnRmKCZzLCAiZ3J1Yi1lZGl0ZW52ICVzIHNldCAnJXM9JXMnIiwgZW52RmlsZSwgbmFtZSwgdmFsdWUpOworIAlmcmVlKHZhbHVlKTsKKyAJaWYgKHJjIDwgMCkKKyAJCXJldHVybiAtMTsKIGRpZmYgLS1naXQgYS90ZXN0LnNoIGIvdGVzdC5zaAotaW5kZXggNjM3OTY5OC4uZjczODM4OCAxMDA3NTUKK2luZGV4IDMzZDI0Y2YuLjAwOTQ3OWMgMTAwNzU1CiAtLS0gYS90ZXN0LnNoCiArKysgYi90ZXN0LnNoCi1AQCAtNTc0LDcgKzU3NCw3IEBAIGlmIFsgIiR0ZXN0Z3J1YjIiID09ICJ5IiBdOyB0aGVuCitAQCAtNTczLDcgKzU3Myw3IEBAIGlmIFsgIiR0ZXN0Z3J1YjIiID09ICJ5IiBdOyB0aGVuCisgICAgICAgICAtLXJlbW92ZS1rZXJuZWw9L2Jvb3Qvdm1saW51ei0yLjYuMzguMi05LmZjMTUueDg2XzY0IFwKKyAgICAgICAgIC0tYm9vdC1maWxlc3lzdGVtPS9ib290LworICAgICBjb21tYW5kVGVzdCAic2F2ZWRfZGVmYXVsdCBvdXRwdXQiIFwKKy0gICAgICAgICJncnViMi1lZGl0ZW52IHRlc3QvZ3J1YjItc3VwcG9ydF9maWxlcy9lbnZfdGVtcCBsaXN0IiBcCisrICAgICAgICAiZ3J1Yi1lZGl0ZW52IHRlc3QvZ3J1YjItc3VwcG9ydF9maWxlcy9lbnZfdGVtcCBsaXN0IiBcCisgICAgICAgICAic2F2ZWRfZW50cnk9TGludXgsIHdpdGggRmVkb3JhIDIuNi4zOC44LTMyLmZjMTUueDg2XzY0IgorIAorICAgICAjIGNvcHkgYSBzdGFuemEgYW5kIGFkZCBhcmd1bWVudHMgYXMgd2VsbCwgd2hpbGUgdXNpbmcgLS1zZXQtaW5kZXg9CitAQCAtNjI3LDcgKzYyNyw3IEBAIGlmIFsgIiR0ZXN0Z3J1YjIiID09ICJ5IiBdOyB0aGVuCiAgICAgICAgICAtLXRpdGxlPSd0aXRsZScgLS1pbml0cmQ9L2Jvb3QvbmV3LWluaXRyZCAtLWJvb3QtZmlsZXN5c3RlbT0vYm9vdC8gXAogICAgICAgICAgLS1jb3B5LWRlZmF1bHQKICAgICAgY29tbWFuZFRlc3QgInNhdmVkX2RlZmF1bHQgb3V0cHV0IiBcCkBAIC00OCw3ICs1OCw3IEBACiAgICAgICAgICAic2F2ZWRfZW50cnk9TGludXgsIHdpdGggRmVkb3JhIDIuNi4zOC44LTMyLmZjMTUueDg2XzY0IgogIAogICAgICB0ZXN0aW5nPSJHUlVCMiBhZGQga2VybmVsIHdpdGggZGVmYXVsdD1zYXZlZF9lbnRyeSBhbmQgYSB0ZXJyaWJsZSB0aXRsZSIKLUBAIC01ODcsMTMgKzU4NywxMyBAQCBpZiBbICIkdGVzdGdydWIyIiA9PSAieSIgXTsgdGhlbgorQEAgLTY0MCwxMyArNjQwLDEzIEBAIGlmIFsgIiR0ZXN0Z3J1YjIiID09ICJ5IiBdOyB0aGVuCiAgICAgIHRlc3Rpbmc9IkdSVUIyIHNldCBkZWZhdWx0IHdpdGggZGVmYXVsdD1zYXZlZF9lbnRyeSBhbmQgYSB0ZXJyaWJsZSBuYW1lIgogICAgICBncnViMlRlc3QgZ3J1YjIuOSBhZGQvZzItMS45IC0tZW52IGdydWJlbnYuMSAtLXNldC1kZWZhdWx0LWluZGV4PTAKICAgICAgY29tbWFuZFRlc3QgInNhdmVkX2RlZmF1bHQgb3V0cHV0IiBcCkBAIC02NCw2ICs3NCwzIEBACiAgICAgICAgICAic2F2ZWRfZW50cnk9dGl0bGUiCiAgCiAgICAgIHRlc3Rpbmc9IkdSVUIyIC0tZGVmYXVsdC1pbmRleCB3aXRoIGRlZmF1bHQ9c2F2ZWRfZW50cnkiCi0tLSAKLTIuMy41Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvZ3J1YmJ5L2dydWJieV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MzBiN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2dydWJieS9ncnViYnlfZ2l0LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiQSBjb21tYW5kIGxpbmUgdG9vbCBmb3IgdXBkYXRpbmcgYW5kIGRpc3BsYXlpbmcgaW5mbyBhYm91dCBib290IGxvYWRlcnMiCitERVNDUklQVElPTiA9ICJncnViYnkgaXMgYSBjb21tYW5kIGxpbmUgdG9vbCBmb3IgdXBkYXRpbmcgYW5kIGRpc3BsYXlpbmcgaW5mb3JtYXRpb24gXAorYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRoZSBncnViLCBsaWxvLCBlbGlsbyAoaWE2NCksIHlhYm9vdCAocG93ZXJwYykgYW5kIFwKK3ppcGwgKHMzOTApIGJvb3QgbG9hZGVycy4gSXQgaXMgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIGJlIHVzZWQgZnJvbSBzY3JpcHRzIHdoaWNoIGluc3RhbGwgXAorbmV3IGtlcm5lbHMgYW5kIG5lZWQgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBib290IGVudmlyb25tZW50LiBcCisiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhib290L2dydWJieSIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTJmNTY5YTU1NWJhOWMwN2E1NjhhN2MwYzRmYTYzYSIKKworREVQRU5EUyA9ICJwb3B0IHV0aWwtbGludXgiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYmV4ZWNpbmZvIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImExZDJhZTkzNDA4YzM0MDhlNjcyZDdlYmE0NTUwZmRmMjdmYjAyMDEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhib290L2dydWJieS5naXQ7cHJvdG9jb2w9aHR0cHM7IFwKKyAgICAgICAgICAgZmlsZTovL2dydWJieS1yZW5hbWUtZ3J1YjItZWRpdGVudi10by1ncnViLWVkaXRlbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWFub3RoZXItdmFyaWFibGUtTElCUy10by1wcm92aWRlcy1saWJyYXJpZXMtZnJvbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWluY2x1ZGUtcGF0aHMuaC1mb3ItX1BBVEhfTU9VTlRFRC5wYXRjaCBcCisgICAgICAgICAgICIKKworUkRFUEVORFNfJHtQTn0gKz0gImRyYWN1dCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKK0VYVFJBX09FTUFLRSA9ICItZSAnQ0M9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIExJQlM9JyR7TElCU30nIgorCitMSUJTX2xpYmMtbXVzbCA9ICItbGV4ZWNpbmZvIgorTElCUyA/PSAiIgorZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXIgJHtTfS90ZXN0ICR7U30vdGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQorICAgIHNlZCAtaSAnc3wuL2dydWJieXxncnViYnl8JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LnNoCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInV0aWwtbGludXgtZ2V0b3B0IGJhc2giCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qKS0obGludXh8ZnJlZWJzZC4qKScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1LYnVpbGQtQWNjZXB0LUVYVFJBX0tMSUJDQUZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWtsaWJjLUtidWlsZC1BY2NlcHQtRVhUUkFfS0xJQkNBRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4MThlMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1LYnVpbGQtQWNjZXB0LUVYVFJBX0tMSUJDQUZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gY2RjNmVkYzJjZmNkMGNlODhkNmU2NjY1NGQ2MDVkYWQzMDNiMWE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDExIFNlcCAyMDE4IDE3OjAzOjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGtsaWJjL0tidWlsZDogQWNjZXB0IEVYVFJBX0tMSUJDQUZMQUdTCisKK0ZvciBwYXNzaW5nIGFkZGl0aW9uYWwgYXNzZW1ibGVyIGZsYWdzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdXNyL2tsaWJjL0tidWlsZCB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdXNyL2tsaWJjL0tidWlsZCBiL3Vzci9rbGliYy9LYnVpbGQKK2luZGV4IDk4Y2FmMmU5Li5iMzQ1MjFlMCAxMDA2NDQKKy0tLSBhL3Vzci9rbGliYy9LYnVpbGQKKysrKyBiL3Vzci9rbGliYy9LYnVpbGQKK0BAIC0xNjgsNyArMTY4LDggQEAgJChTT0hBU0gpOiAkKFNPTElCKSAkKFNPTElCKS5oYXNoCisgdGFyZ2V0cyArPSBpbnRlcnAubworIAorIHF1aWV0X2NtZF9pbnRlcnAgPSBCVUlMRCAgICRACistICAgICAgY21kX2ludGVycCA9ICQoS0xJQkNDQykgJChrbGliY2NmbGFncykgLURfX0FTU0VNQkxZX18gICAgIFwKKysgICAgICBjbWRfaW50ZXJwID0gJChLTElCQ0NDKSAkKGtsaWJjY2ZsYWdzKSAkKEVYVFJBX0tMSUJDQUZMQUdTKSBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9fQVNTRU1CTFlfXyAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURMSUJESVI9XCIkKFNITElCRElSKVwiICAgICAgICAgXAorIAkJCSAgICAgLURTT0hBU0g9XCIkKFNPTElCSEFTSClcIiBcCisgCQkJICAgICAtYyAtbyAkQCAkPApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWtsaWJjLWFkZC1nZXRyYW5kb20tc3lzY2FsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1hZGQtZ2V0cmFuZG9tLXN5c2NhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc2OGY2ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1hZGQtZ2V0cmFuZG9tLXN5c2NhbGwucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBlNGQ1ZDUyMjQ2MDlkN2Q1YzgyNGRkMjMxZjViYWVjODY4YmVmZGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IFNlcCAyMDE4IDIzOjU2OjAwICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBrbGliYzogYWRkIGdldHJhbmRvbSgpIHN5c2NhbGwKKworbmVlZGVkIGJ5IGxhdGVzdCBrZXhlYy10b29scyBmb3IgcWVtdWFybTY0IChrYXNoYW4pCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIHVzci9rbGliYy9TWVNDQUxMUy5kZWYgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Vzci9rbGliYy9TWVNDQUxMUy5kZWYgYi91c3Iva2xpYmMvU1lTQ0FMTFMuZGVmCitpbmRleCA2YjNiZjRjLi5kNDE4NGJhIDEwMDY0NAorLS0tIGEvdXNyL2tsaWJjL1NZU0NBTExTLmRlZgorKysrIGIvdXNyL2tsaWJjL1NZU0NBTExTLmRlZgorQEAgLTI3NCw2ICsyNzQsNyBAQCBpbnQgc3lzbG9nOjprbG9nY3RsKGludCwgY2hhciAqLCBpbnQpOworIGludCBzeXNpbmZvKHN0cnVjdCBzeXNpbmZvICopOworIGxvbmcga2V4ZWNfbG9hZCh2b2lkICosIHVuc2lnbmVkIGxvbmcsIHN0cnVjdCBrZXhlY19zZWdtZW50ICosIHVuc2lnbmVkIGxvbmcpOworIDx4ODZfNjQscHBjNjQsczM5MHg+IGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCwgaW50LCB1bnNpZ25lZCBsb25nLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcpOworK3NzaXplX3QgZ2V0cmFuZG9tKHZvaWQgKiwgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOworIAorIC8qCisgICogTG93LWxldmVsIEkvTyAoZ2VuZXJhbGx5IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1zdGF0aWMtdXRpbHMtZG8tbm90LWJ1aWxkLXNoYXJlZC1iaW5hcmllcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliYy1zdGF0aWMtdXRpbHMtZG8tbm90LWJ1aWxkLXNoYXJlZC1iaW5hcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjdjZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC8wMDAxLWtsaWJjLXN0YXRpYy11dGlscy1kby1ub3QtYnVpbGQtc2hhcmVkLWJpbmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjEzIEBACitGcm9tIGMwMzRkY2VhZTE3YjdkOGQ0Mzc4NzFhZmU1ZWJhNTVhNTU0MzQyMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDAwOjQ4OjMxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGtsaWJjLXN0YXRpYy11dGlsczogZG8gbm90IGJ1aWxkIHNoYXJlZCBiaW5hcmllcworCitXZSB3ZXJlIGJ1aWxkaW5nIHNvbWUgc2hhcmVkIHV0aWxpdGllcyBhbmQgdGhpcyB3YXMgbGVhZGluZyB0byBsaW5rZXIgZXJyb3JzCitmb3IgeDg2IHdpdGggc2VjdXJpdHkgZmxhZ3MgZW5hYmxlZC4KKworRml4CisgaTU4Ni1vZS1saW51eC1tdXNsLWxkLmJmZDogZGlzY2FyZGVkIG91dHB1dCBzZWN0aW9uOiBgLmdvdC5wbHQnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRW1iZWRkZWQgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIHVzci9kYXNoL0tidWlsZCAgICAgICAgICAgfCA2ICstLS0tLQorIHVzci9raW5pdC9LYnVpbGQgICAgICAgICAgfCA0ICstLS0KKyB1c3Iva2luaXQvZnN0eXBlL0tidWlsZCAgIHwgNCArLS0tCisgdXNyL2tpbml0L2lwY29uZmlnL0tidWlsZCB8IDQgKy0tLQorIHVzci9raW5pdC9uZnNtb3VudC9LYnVpbGQgfCA0ICstLS0KKyB1c3Iva2luaXQvcmVzdW1lL0tidWlsZCAgIHwgNSArLS0tLQorIHVzci9raW5pdC9ydW4taW5pdC9LYnVpbGQgfCA1ICstLS0tCisgdXNyL3V0aWxzL0tidWlsZCAgICAgICAgICB8IDcgKystLS0tLQorIDggZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Vzci9kYXNoL0tidWlsZCBiL3Vzci9kYXNoL0tidWlsZAoraW5kZXggMWE2OTIwYS4uYjNhNGU2NCAxMDA2NDQKKy0tLSBhL3Vzci9kYXNoL0tidWlsZAorKysrIGIvdXNyL2Rhc2gvS2J1aWxkCitAQCAtMjUsMTIgKzI1LDggQEAgZ2VuLWgtZmlsZXMgOj0gYnVpbHRpbnMuaCBub2Rlcy5oIHN5bnRheC5oIHRva2VuLmgKKyAKKyBzdGF0aWMteSA6PSBzaAorIAorLSMgVGhlIHNoYXJlZCBiaW5hcnkKKy1zaGFyZWQteSAgICA6PSBzaC5zaGFyZWQKKy1zaC5zaGFyZWQteSA6PSAkKHNoLXkpCistCisgIyBGb3IgY2xlYW5pbmcKKy10YXJnZXRzIDo9IHNoIHNoLmcgc2guc2hhcmVkIHNoLnNoYXJlZC5nICQoZ2VuLW8tZmlsZXMpCisrdGFyZ2V0cyA6PSBzaCBzaC5nICQoZ2VuLW8tZmlsZXMpCisgCisgIyBleHBsaWNpdCBkZXBlbmRlbmN5IGZvciBhbGwgZ2VuZXJhdGVkIGZpbGVzCisgJChhZGRwcmVmaXggJChvYmopLywgJChzaC15KSk6ICQoYWRkcHJlZml4ICQob2JqKS8sICQoZ2VuLWgtZmlsZXMpKQorZGlmZiAtLWdpdCBhL3Vzci9raW5pdC9LYnVpbGQgYi91c3Iva2luaXQvS2J1aWxkCitpbmRleCBmN2ZkY2NkLi44ZGIwNmFiIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L0tidWlsZAorKysrIGIvdXNyL2tpbml0L0tidWlsZAorQEAgLTE4LDggKzE4LDYgQEAga2luaXQteSAgKz0gZnN0eXBlLworIGtpbml0LXkgICs9IHJlc3VtZS8KKyAKKyBzdGF0aWMteSA6PSBraW5pdAorLXNoYXJlZC15IDo9IGtpbml0LnNoYXJlZAorLWtpbml0LnNoYXJlZC15IDo9ICQoa2luaXQteSkKKyAKKyAjIEFkZGl0aW9uYWwgaW5jbHVkZSBwYXRocyBmaWxlcworIEtMSUJDQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS8kKHNyYykvZnN0eXBlIFwKK0BAIC0yOSw3ICsyNyw3IEBAIEtMSUJDQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS8kKHNyYykvZnN0eXBlIFwKKyAgCSAgICAgICAtSSQoc3JjdHJlZSkvJChzcmMpL3J1bi1pbml0CisgCisgIyBDbGVhbmluZworLXRhcmdldHMgKz0ga2luaXQga2luaXQuZyBraW5pdC5zaGFyZWQga2luaXQuc2hhcmVkLmcKKyt0YXJnZXRzICs9IGtpbml0IGtpbml0LmcKKyBzdWJkaXItIDo9IGZzdHlwZSBpcGNvbmZpZyBuZnNtb3VudCByZXN1bWUgcnVuLWluaXQKKyAKKyAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvZnN0eXBlL0tidWlsZCBiL3Vzci9raW5pdC9mc3R5cGUvS2J1aWxkCitpbmRleCAzNjc2MTFkLi44ZDQ1M2VhIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L2ZzdHlwZS9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9mc3R5cGUvS2J1aWxkCitAQCAtMyw3ICszLDYgQEAKKyAjCisgCisgc3RhdGljLXkgOj0gc3RhdGljL2ZzdHlwZQorLXNoYXJlZC15IDo9IHNoYXJlZC9mc3R5cGUKKyAKKyAjIGNvbW1vbiAubyBmaWxlcworIG9ianMgOj0gbWFpbi5vIGZzdHlwZS5vCitAQCAtMTYsOCArMTUsNyBAQCBsaWIteSA6PSAkKG9ianMpCisgCisgIyAubyBmaWxlcyB1c2VkIHRvIGJ1aWx0IGV4ZWN1dGFibGVzCisgc3RhdGljL2ZzdHlwZS15IDo9ICQob2JqcykKKy1zaGFyZWQvZnN0eXBlLXkgOj0gJChvYmpzKQorIAorICMgQ2xlYW5pbmcKKy1jbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKKytjbGVhbi1kaXJzIDo9IHN0YXRpYworIAorZGlmZiAtLWdpdCBhL3Vzci9raW5pdC9pcGNvbmZpZy9LYnVpbGQgYi91c3Iva2luaXQvaXBjb25maWcvS2J1aWxkCitpbmRleCBlYjFkNDcyLi5lZjg3ZTdlIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L2lwY29uZmlnL0tidWlsZAorKysrIGIvdXNyL2tpbml0L2lwY29uZmlnL0tidWlsZAorQEAgLTMsNyArMyw2IEBACisgIworIAorIHN0YXRpYy15IDo9IHN0YXRpYy9pcGNvbmZpZworLXNoYXJlZC15IDo9IHNoYXJlZC9pcGNvbmZpZworIAorICMgY29tbW9uIC5vIGZpbGVzCisgb2JqcyA6PSBtYWluLm8gbmV0ZGV2Lm8gcGFja2V0Lm8KK0BAIC0yMiw4ICsyMSw3IEBAIGxpYi15IDo9ICQob2JqcykKKyAKKyAjIC5vIGZpbGVzIHVzZWQgdG8gYnVpbHQgZXhlY3V0YWJsZXMKKyBzdGF0aWMvaXBjb25maWcteSA6PSAkKG9ianMpCistc2hhcmVkL2lwY29uZmlnLXkgOj0gJChvYmpzKQorIAorICMgQ2xlYW5pbmcKKy1jbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKKytjbGVhbi1kaXJzIDo9IHN0YXRpYworIAorZGlmZiAtLWdpdCBhL3Vzci9raW5pdC9uZnNtb3VudC9LYnVpbGQgYi91c3Iva2luaXQvbmZzbW91bnQvS2J1aWxkCitpbmRleCBiYTMxNzA4Li4wMWJlZGNlIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAorKysrIGIvdXNyL2tpbml0L25mc21vdW50L0tidWlsZAorQEAgLTQsNyArNCw2IEBACisgCisgc3RhdGljLXkgOj0gc3RhdGljL25mc21vdW50CisgI0ZJWE1FIC0gYnVpbGQgaXMgYnJva2VuIHN0YXRpYy15IDo9IGR1bW15cG1hcAorLXNoYXJlZC15IDo9IHNoYXJlZC9uZnNtb3VudAorIAorIG9ianMgOj0gbWFpbi5vIG1vdW50Lm8gcG9ydG1hcC5vIGR1bW15cG1hcC5vIHN1bnJwYy5vCisgCitAQCAtMTMsNyArMTIsNiBAQCBsaWIteSA6PSAkKG9ianMpCisgCisgIyAubyBmaWxlcyB1c2VkIGZvciBleGVjdXRhYmxlcworIHN0YXRpYy9uZnNtb3VudC15IDo9ICQob2JqcykKKy1zaGFyZWQvbmZzbW91bnQteSA6PSAkKG9ianMpCisgCisgIyBkdW1teXBtYXAgdXNlcyBhIHNpbmdsZSAubyBmaWxlIChyZW5hbWUgc3JjIGZpbGU/KQorIGR1bW15cG1hcC15IDo9IGR1bW15cG1hcF90ZXN0Lm8KK0BAIC0yMSw1ICsxOSw1IEBAIGR1bW15cG1hcC15IDo9IGR1bW15cG1hcF90ZXN0Lm8KKyAjIFRPRE8gLSBkbyB3ZSB3YW50IGEgc3RyaXBwZWQgdmVyc2lvbgorICMgVE9ETyAtIGRvIHdlIHdhbnQgdGhlIHN0YXRpYy5nICsgc2hhcmVkLmcgZGlyZWN0b3JpZXM/CisgCistY2xlYW4tZGlycyA6PSBzdGF0aWMgc2hhcmVkCisrY2xlYW4tZGlycyA6PSBzdGF0aWMKKyAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvcmVzdW1lL0tidWlsZCBiL3Vzci9raW5pdC9yZXN1bWUvS2J1aWxkCitpbmRleCBjMTM0MmUxLi4xNWI5NTkwIDEwMDY0NAorLS0tIGEvdXNyL2tpbml0L3Jlc3VtZS9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9yZXN1bWUvS2J1aWxkCitAQCAtMyw3ICszLDYgQEAKKyAjCisgCisgc3RhdGljLXkgOj0gc3RhdGljL3Jlc3VtZQorLXNoYXJlZC15IDo9IHNoYXJlZC9yZXN1bWUKKyAKKyAjIGNvbW1vbiAubyBmaWxlcworIG9ianMgOj0gcmVzdW1lLm8gcmVzdW1lbGliLm8KK0BAIC0yMCw5ICsxOSw3IEBAIEtMSUJDQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS8kKHNyYykvLi4KKyAjIC5vIGZpbGVzIHVzZWQgdG8gYnVpbHQgZXhlY3V0YWJsZXMKKyBzdGF0aWMvcmVzdW1lLXkgICA6PSAkKG9ianMpCisgc3RhdGljL3Jlc3VtZS1saWIgOj0gLi4vbGliLmEKKy1zaGFyZWQvcmVzdW1lLXkgICA6PSAkKG9ianMpCistc2hhcmVkL3Jlc3VtZS1saWIgOj0gLi4vbGliLmEKKyAKKyAjIENsZWFuaW5nCistY2xlYW4tZGlycyA6PSBzdGF0aWMgc2hhcmVkCisrY2xlYW4tZGlycyA6PSBzdGF0aWMKKyAKK2RpZmYgLS1naXQgYS91c3Iva2luaXQvcnVuLWluaXQvS2J1aWxkIGIvdXNyL2tpbml0L3J1bi1pbml0L0tidWlsZAoraW5kZXggYzE1M2IwYS4uYTFlYTgzNCAxMDA2NDQKKy0tLSBhL3Vzci9raW5pdC9ydW4taW5pdC9LYnVpbGQKKysrKyBiL3Vzci9raW5pdC9ydW4taW5pdC9LYnVpbGQKK0BAIC0zLDcgKzMsNiBAQAorICMKKyAKKyBzdGF0aWMteSA6PSBzdGF0aWMvcnVuLWluaXQKKy1zaGFyZWQteSA6PSBzaGFyZWQvcnVuLWluaXQKKyAKKyAjIGNvbW1vbiAubyBmaWxlcworIG9ianMgOj0gcnVuLWluaXQubyBydW5pbml0bGliLm8KK0BAIC0yNCw5ICsyMyw3IEBAIEtMSUJDQ0ZMQUdTICs9IC1JJChzcmN0cmVlKS8kKHNyYykvLi4KKyAjIC5vIGZpbGVzIHVzZWQgdG8gYnVpbHQgZXhlY3V0YWJsZXMKKyBzdGF0aWMvcnVuLWluaXQteSAgIDo9ICQob2JqcykKKyBzdGF0aWMvcnVuLWluaXQtbGliIDo9IC4uL2xpYi5hCistc2hhcmVkL3J1bi1pbml0LXkgICA6PSAkKG9ianMpCistc2hhcmVkL3J1bi1pbml0LWxpYiA6PSAuLi9saWIuYQorIAorICMgQ2xlYW5pbmcKKy1jbGVhbi1kaXJzIDo9IHN0YXRpYyBzaGFyZWQKKytjbGVhbi1kaXJzIDo9IHN0YXRpYworIAorZGlmZiAtLWdpdCBhL3Vzci91dGlscy9LYnVpbGQgYi91c3IvdXRpbHMvS2J1aWxkCitpbmRleCA2N2Q5NDg2Li4xNTczMzYzIDEwMDY0NAorLS0tIGEvdXNyL3V0aWxzL0tidWlsZAorKysrIGIvdXNyL3V0aWxzL0tidWlsZAorQEAgLTcsNyArNyw2IEBAIHByb2dzICs9IHRydWUgZmFsc2Ugc2xlZXAgbG4gbXYgbnVrZSBtaW5pcHMgY2F0IGxzIGxvc2V0dXAKKyBwcm9ncyArPSB1bmFtZSBoYWx0IGtpbGwgcmVhZGxpbmsgY3BpbyBzeW5jIGRtZXNnCisgCisgc3RhdGljLXkgOj0gJChhZGRwcmVmaXggc3RhdGljLywgJChwcm9ncykpCistc2hhcmVkLXkgOj0gJChhZGRwcmVmaXggc2hhcmVkLywgJChwcm9ncykpCisgCisgIyBUaGUgYmluYXJ5IGlzIHBsYWNlZCBpbiBhIHN1YmRpciwgc28gd2UgbmVlZCB0byB0ZWxsIGtidWlsZCB0aGlzCisgc3RhdGljL2Nocm9vdC15ICAgICA6PSBjaHJvb3QubworQEAgLTYyLDEzICs2MSwxMSBAQCBzdGF0aWMvbG9zZXR1cC15ICAgIDo9IGxvc2V0dXAubworIHNoYXJlZC9sb3NldHVwLXkgICAgOj0gbG9zZXR1cC5vCisgCisgIyBBZGRpdGlvbmFsbHkgbGlua2VkIHRhcmdldHMKKy1hbHdheXMgOj0gc3RhdGljL3JlYm9vdCBzdGF0aWMvcG93ZXJvZmYgc2hhcmVkL3JlYm9vdCBzaGFyZWQvcG93ZXJvZmYKKythbHdheXMgOj0gc3RhdGljL3JlYm9vdCBzdGF0aWMvcG93ZXJvZmYKKyAKKyAkKG9iaikvc3RhdGljL3JlYm9vdCAkKG9iaikvc3RhdGljL3Bvd2Vyb2ZmOiAkKG9iaikvc3RhdGljL2hhbHQKKyAJJChjYWxsIGNtZCxsbikKKy0kKG9iaikvc2hhcmVkL3JlYm9vdCAkKG9iaikvc2hhcmVkL3Bvd2Vyb2ZmOiAkKG9iaikvc2hhcmVkL2hhbHQKKy0JJChjYWxsIGNtZCxsbikKKyAKKyAjIENsZWFuIGRlbGV0ZXMgdGhlIHN0YXRpYyBhbmQgc2hhcmVkIGRpcgorLWNsZWFuLWRpcnMgOj0gc3RhdGljIHNoYXJlZAorK2NsZWFuLWRpcnMgOj0gc3RhdGljCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMtMi4wLjQvMDAwMS1rbGliY18yLjAuNC1hZGQta2V4ZWNfZmlsZV9sb2FkLXN5c2NhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEta2xpYmNfMi4wLjQtYWRkLWtleGVjX2ZpbGVfbG9hZC1zeXNjYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkOGQ5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40LzAwMDEta2xpYmNfMi4wLjQtYWRkLWtleGVjX2ZpbGVfbG9hZC1zeXNjYWxsLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gOTA2ODNkNWVhYWJmYTY4NGE3MTQxMWQ2ZTMyNjIxNTNhYzE5MWFkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBTZXAgMjAxOCAyMzo0NDozMCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMV0ga2xpYmNfMi4wLjQ6IGFkZCBrZXhlY19maWxlX2xvYWQgc3lzY2FsbAorCitmb3Igc3VwcG9ydGVkIGFyY2hzIG9ubHkgKG1hdGNoZWQgaW4ga2V4ZWMtdG9vbHMpCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIHVzci9rbGliYy9TWVNDQUxMUy5kZWYgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Vzci9rbGliYy9TWVNDQUxMUy5kZWYgYi91c3Iva2xpYmMvU1lTQ0FMTFMuZGVmCitpbmRleCBjNTZlOGY5Li42YjNiZjRjIDEwMDY0NAorLS0tIGEvdXNyL2tsaWJjL1NZU0NBTExTLmRlZgorKysrIGIvdXNyL2tsaWJjL1NZU0NBTExTLmRlZgorQEAgLTI3Myw2ICsyNzMsNyBAQCBpbnQgcmVib290OjpfX3JlYm9vdChpbnQsIGludCwgaW50LCB2b2lkICopOworIGludCBzeXNsb2c6Omtsb2djdGwoaW50LCBjaGFyICosIGludCk7CisgaW50IHN5c2luZm8oc3RydWN0IHN5c2luZm8gKik7CisgbG9uZyBrZXhlY19sb2FkKHZvaWQgKiwgdW5zaWduZWQgbG9uZywgc3RydWN0IGtleGVjX3NlZ21lbnQgKiwgdW5zaWduZWQgbG9uZyk7CisrPHg4Nl82NCxwcGM2NCxzMzkweD4gbG9uZyBrZXhlY19maWxlX2xvYWQoaW50LCBpbnQsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7CisgCisgLyoKKyAgKiBMb3ctbGV2ZWwgSS9PIChnZW5lcmFsbHkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGNjLWNyb3NzLWFjY2VwdC1jbGFuZy1vcHRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy0yLjAuNC9rbGNjLWNyb3NzLWFjY2VwdC1jbGFuZy1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NzAzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLTIuMC40L2tsY2MtY3Jvc3MtYWNjZXB0LWNsYW5nLW9wdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorbWV0YS1jbGFuZyBwYXNzZXMgdGhpcyBvcHRpb24gdG8gY29tcGlsZXIgZGVmYXVsdHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogZ2l0L2tsY2Mva2xjYy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2tsY2Mva2xjYy5pbgorKysrIGdpdC9rbGNjL2tsY2MuaW4KK0BAIC0yMDcsNiArMjA3LDkgQEAgd2hpbGUgKCBkZWZpbmVkKCRhID0gc2hpZnQoQEFSR1YpKSApIHsKKyAgICAgfSBlbHNpZiAoICRhID1+IC9eLS0oW3N5c3Jvb3Q9XSkoLiopJC8gKSB7CisgCSMgT3ZlcnJpZGUgZ2NjIGVuY29kZWQgc3lzcm9vdAorIAlwdXNoKEBjY29wdCwgJGEpOworKyAgICB9IGVsc2lmICggJGEgZXEgJy1uby1pbnRlZ3JhdGVkLWFzJyApIHsKKysJIyBBbGxvdyBjbGFuZyBvcHRpb25zCisrCXB1c2goQGNjb3B0LCAkYSk7CisgICAgIH0gZWxzZSB7CisgCWRpZSAiJDA6IHVua25vd24gb3B0aW9uOiAkYVxuIjsKKyAgICAgfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy1zdGF0aWMtdXRpbHNfMi4wLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXN0YXRpYy11dGlsc18yLjAuNC5iYgppbmRleCBjODM1ZmQ2Li4xNjc3ODYzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXN0YXRpYy11dGlsc18yLjAuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXN0YXRpYy11dGlsc18yLjAuNC5iYgpAQCAtMTAsMyArMTAsOSBAQAogCiByZXF1aXJlIGtsaWJjLXV0aWxzLmluYwogcmVxdWlyZSBrbGliYy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEta2xpYmMtc3RhdGljLXV0aWxzLWRvLW5vdC1idWlsZC1zaGFyZWQtYmluYXJpZXMucGF0Y2giCisKKyMgYXZvaWQgdGV4dHJlbCBpZiBsaW5raW5nIHdpdGggLXBpZQorU0VDVVJJVFlfQ0ZMQUdTID0gIiIKK1NFQ1VSSVRZX0xERkxBR1MgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy11dGlscy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXV0aWxzLmluYwppbmRleCA3ZGYzM2Q2Li4yYWFjOWU2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXV0aWxzLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLXV0aWxzLmluYwpAQCAtMSwxNiArMSwxNiBAQAogZG9faW5zdGFsbCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQogICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotICAgICMgZGViaWFuIHBhY2thZ2VzIGtpbml0ICsga2luaXQuc2hhcmVkIGJ1dCBvbmx5IHNoLnNoYXJlZAogICAgIGlmIFsgIiR7S0xJQkNfVVRJTFNfVkFSSUFOVH0iID0gInNoYXJlZCIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDc1NSB1c3Iva2luaXQva2luaXQgJHtEfSR7YmFzZV9iaW5kaXJ9L2tpbml0CiAgICAgICAgIGluc3RhbGwgLW0gNzU1IHVzci9raW5pdC9raW5pdC5zaGFyZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L2tpbml0LnNoYXJlZAogICAgICAgICBpbnN0YWxsIC1tIDc1NSB1c3IvZGFzaC9zaC5zaGFyZWQgJHtEfSR7YmFzZV9iaW5kaXJ9L3NoLnNoYXJlZAogICAgIGVsc2UKICAgICAgICAgaW5zdGFsbCAtbSA3NTUgdXNyL2Rhc2gvc2ggJHtEfSR7YmFzZV9iaW5kaXJ9L3NoCiAgICAgICAgIGluc3RhbGwgLW0gNzU1IHVzci9raW5pdC9raW5pdCAke0R9JHtiYXNlX2JpbmRpcn0va2luaXQKKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgdXNyL2d6aXAvZ3ppcCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICAgICAgbG4gLXMgZ3ppcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3VuemlwCisgICAgICAgIGxuIC1zIGd6aXAgJHtEfSR7YmFzZV9iaW5kaXJ9L3pjYXQKICAgICBmaQotICAgIGluc3RhbGwgLW0gNzU1IHVzci9nemlwL2d6aXAgJHtEfSR7YmFzZV9iaW5kaXJ9CiAgICAgaW5zdGFsbCAtbSA3NTUgdXNyL2tpbml0L2ZzdHlwZS8ke0tMSUJDX1VUSUxTX1ZBUklBTlR9L2ZzdHlwZSAke0R9JHtiYXNlX2JpbmRpcn0KICAgICBpbnN0YWxsIC1tIDc1NSB1c3Iva2luaXQvaXBjb25maWcvJHtLTElCQ19VVElMU19WQVJJQU5UfS9pcGNvbmZpZyAke0R9JHtiYXNlX2JpbmRpcn0KICAgICBpbnN0YWxsIC1tIDc1NSB1c3Iva2luaXQvbmZzbW91bnQvJHtLTElCQ19VVElMU19WQVJJQU5UfS9uZnNtb3VudCAke0R9JHtiYXNlX2JpbmRpcn0KQEAgLTQ0LDggKzQ0LDYgQEAKICAgICBpbnN0YWxsIC1tIDc1NSB1c3IvdXRpbHMvJHtLTElCQ19VVElMU19WQVJJQU5UfS90cnVlICR7RH0ke2Jhc2VfYmluZGlyfQogICAgIGluc3RhbGwgLW0gNzU1IHVzci91dGlscy8ke0tMSUJDX1VUSUxTX1ZBUklBTlR9L3Vtb3VudCAke0R9JHtiYXNlX2JpbmRpcn0KICAgICBpbnN0YWxsIC1tIDc1NSB1c3IvdXRpbHMvJHtLTElCQ19VVElMU19WQVJJQU5UfS91bmFtZSAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBsbiAtcyBnemlwICR7RH0ke2Jhc2VfYmluZGlyfS9ndW56aXAKLSAgICBsbiAtcyBnemlwICR7RH0ke2Jhc2VfYmluZGlyfS96Y2F0CiB9CiAKIEVYVFJBX0tMSUJDX0RFUFMgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0tMSUJDX1VUSUxTX1ZBUklBTlQnLCAnc2hhcmVkJywgJyR7VEhJU19MSUJLTElCQ30nLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9rbGliYy9rbGliYy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYwppbmRleCAzMDI5NGIxLi5iZTAxYzJmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYwpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICAgICBmaWxlOi8va2xpYmMtbGludXgtbGliYy1kZXYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3RhZ2luZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9rbGNjLWNvbnNpZGVyLXN5c3Jvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8va2xjYy1jcm9zcy1hY2NlcHQtY2xhbmctb3B0aW9ucy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRhc2gtU3BlY2lmeS1mb3JtYXQtc3RyaW5nLWluLWZtdHN0ci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1pbl8tc3RydWN0cy1mb3Itbm9uLWdsaWJjLXN5c3RlbS1saWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1saW51eC1zeXNpbmZvLmgtZGlyZWN0bHkucGF0Y2ggXApAQCAtMjAsNyArMjEsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtS2J1aWxkLmtsaWJjLVVzZS1wcmludC1saWJnY2MtZmlsZS1uYW1lLWluc3RlYWQtb2YtcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUtidWlsZC5rbGliYy1BZGQtcGF0aC10by1jb21waWxlci1oZWFkZXJzLXZpYS1pc3lzdGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1hcm0tRG8tbm90LXNldC1hLWZhbGxiYWNrLW1hcmNoLWFuZC1tdHVuZS5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtsaWJjXzIuMC40LWFkZC1rZXhlY19maWxlX2xvYWQtc3lzY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtsaWJjLWFkZC1nZXRyYW5kb20tc3lzY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtsaWJjLUtidWlsZC1BY2NlcHQtRVhUUkFfS0xJQkNBRkxBR1MucGF0Y2ggXAorICAgICAgICAgICAiCiAKIEFSTVBBVENIRVMgPz0gIiIKIApAQCAtMjgsNyArMzIsNiBAQAogICAgICAgICAgICAgICAgICAgZmlsZTovL2FybXY0LWZpeC12NGJ4LnBhdGNoIFwKICAgICAgICAgICAgICAgICAgIgogCi0KIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFBBUkFMTEVMX01BS0UgPSAiIgpAQCAtNDQsNiArNDcsOCBAQAogICAgICAgICAgICAgICAgICdLTElCQ09QVEZMQUdTPSR7VFVORV9DQ0FSR1N9IC1PcycgXAogICAgICAgICAgICAgICAgICBWPTEgXAogICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRSArPSAiJ0VYVFJBX0tMSUJDQUZMQUdTPSR7U0VDVVJJVFlfQ0ZMQUdTfSAtV2EsLS1ub2V4ZWNzdGFjaycgXAorICAgICAgICAgICAgICAgICAnRVhUUkFfS0xJQkNMREZMQUdTPSR7U0VDVVJJVFlfTERGTEFHU30gLXogbm9leGVjc3RhY2snIgogCiBleHBvcnQgRklYX0FSTVY0X0VBQklfQlggPSAiJHtGSVhfVjRCWH0iCiBLTElCQ1RIVU1CID0gIiR7QFsnQ09ORklHX0tMSUJDX1RIVU1CPW4nLCAnQ09ORklHX0tMSUJDX1RIVU1CPXknXVsoZC5nZXRWYXIoJ0FSTV9JTlNUUlVDVElPTl9TRVQnKSA9PSAndGh1bWInKV19IgpAQCAtNzAsNSArNzUsNyBAQAogS0xJQkNfQVJDSF9wb3dlcnBjNjQgPSAicHBjNjQiCiBUSElTX0xJQktMSUJDID0gImxpYmtsaWJjICg9ICR7UFZ9LSR7UFJ9KSIKIAotU0VDVVJJVFlfQ0ZMQUdTID0gIi1mbm8tUElFIC1uby1waWUiCi1TRUNVUklUWV9MREZMQUdTID0gIi1uby1waWUiCitHQ0NQSUUgPz0gIiIKK1NFQ1VSSVRZX0xERkxBR1MgPSAiJHtAJy16IHJlbHJvIC16IG5vdyAtcGllJyBpZiAnJHtHQ0NQSUV9JyBlbHNlICcnfSIKK1NFQ1VSSVRZX0xERkxBR1NfbWlwcyA9ICIiCitTRUNVUklUWV9MREZMQUdTX21pcHM2NCA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMS1NYWtlZmlsZS1idWlsZC11YmktdXRpbHMtb25seS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAxLU1ha2VmaWxlLWJ1aWxkLXViaS11dGlscy1vbmx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWMyY2NhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDAxLU1ha2VmaWxlLWJ1aWxkLXViaS11dGlscy1vbmx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSAxYzk4OWU0YzM2ZDBiZjc2YWI0NDRmOTg0YmM3M2I5OGVlYWNkMDNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDozMjoyOSArMDIwMAotU3ViamVjdDogW1BBVENIIDEvOV0gTWFrZWZpbGU6IGJ1aWxkIHViaS11dGlscyBvbmx5Ci0KLVdlIGJ1aWxkIGFsbCB0aGUgc3RhdGljIHViaS11dGlscyBidXQgYWN0dWFsbHkgb25seSB1YmlhdHRhY2ggaXMgbmVlZGVkIGluCi1hIG1pbmltYWxpc3RpYyBpbml0cmFtZnMgZm9yIHRoZSBtb3VudCBvZiB1Ymkgdm9sdW1lcy4KLQotTW9yZSBmaXhlcyBhcmUgbmVlZGVkIGluIG9yZGVyIHRvIGJ1aWxkIHRoZSBmdWxsIG10ZC11dGlscy4KLVRoZSBmaXJzdCBpc3N1ZSBpczoKLQotfCBta2ZzLmpmZnMyLmM6NjQ6MjA6IGZhdGFsIGVycm9yOiBsaWJnZW4uaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCAgI2luY2x1ZGUgPGxpYmdlbi5oPgotCi1SZW1vdmluZyB0aGUgaW5jbHVkZSB0aGVuIHRoZSBzZWNvbmQgZXJyb3IgaXM6Ci0KLXwgbWtmcy5qZmZzMi5jOjE1NzA6MjI6IGVycm9yOiAnX1NDX1BBR0VTSVpFJyB1bmRlY2xhcmVkCi18IChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLXwgICBwYWdlX3NpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMjYgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDNjZTg1ODcuLjhiNzlmNzEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xNiwyOCArMTYsMTEgQEAgZW5kaWYKLSAKLSBURVNUUyA9IHRlc3RzCi0gCi0tTVREX0JJTlMgPSBcCi0tCWZ0bF9mb3JtYXQgZmxhc2hfZXJhc2UgbmFuZGR1bXAgZG9jX2xvYWRiaW9zIFwKLS0JZnRsX2NoZWNrIG1rZnMuamZmczIgZmxhc2hfbG9jayBmbGFzaF91bmxvY2sgXAotLQlmbGFzaF9vdHBfaW5mbyBmbGFzaF9vdHBfZHVtcCBmbGFzaF9vdHBfbG9jayBmbGFzaF9vdHBfd3JpdGUgXAotLQltdGRfZGVidWcgZmxhc2hjcCBuYW5kd3JpdGUgbmFuZHRlc3QgbXRkcGFydCBcCi0tCWpmZnMyZHVtcCBcCi0tCW5mdGxkdW1wIG5mdGxfZm9ybWF0IGRvY2ZkaXNrIFwKLS0JcmZkZHVtcCByZmRmb3JtYXQgXAotLQlzZXJ2ZV9pbWFnZSByZWN2X2ltYWdlIFwKLS0Jc3VtdG9vbCBqZmZzMnJlYWRlcgotIFVCSV9CSU5TID0gXAotIAl1Yml1cGRhdGV2b2wgdWJpbWt2b2wgdWJpcm12b2wgdWJpY3JjMzIgdWJpbmZvIHViaWF0dGFjaCBcCi0gCXViaWRldGFjaCB1YmluaXplIHViaWZvcm1hdCB1YmlyZW5hbWUgbXRkaW5mbyB1Ymlyc3ZvbCB1YmlibG9jawotIAotLUJJTlMgPSAkKE1URF9CSU5TKQotLUJJTlMgKz0gbWtmcy51Ymlmcy9ta2ZzLnViaWZzCi0tQklOUyArPSAkKGFkZHByZWZpeCB1YmktdXRpbHMvLCQoVUJJX0JJTlMpKQotLVNDUklQVFMgPSBmbGFzaF9lcmFzZWFsbAotLQotLVRBUkdFVFMgPSAkKEJJTlMpCi0tVEFSR0VUUyArPSBsaWIvbGlibXRkLmEKLS1UQVJHRVRTICs9IHViaS11dGlscy9saWJ1YmkuYQotK0JJTlMgPSAkKGFkZHByZWZpeCB1YmktdXRpbHMvLCQoVUJJX0JJTlMpKQotIAotIE9CSkRFUFMgPSAkKEJVSUxERElSKS9pbmNsdWRlL3ZlcnNpb24uaAotIAotQEAgLTYxLDEyICs0NCw5IEBAIGVuZGlmCi0gCXJtIC1mICQoQlVJTERESVIpL2luY2x1ZGUvdmVyc2lvbi5oCi0gCSQoTUFLRSkgLUMgJChURVNUUykgY2xlYW4KLSAKLS1pbnN0YWxsOjogJChhZGRwcmVmaXggJChCVUlMRERJUikvLCR7QklOU30pICR7U0NSSVBUU30KLStpbnN0YWxsOjogJChhZGRwcmVmaXggJChCVUlMRERJUikvLCR7QklOU30pCi0gCW1rZGlyIC1wICR7REVTVERJUn0vJHtTQklORElSfQotIAlpbnN0YWxsIC1tIDA3NTUgJF4gJHtERVNURElSfS8ke1NCSU5ESVJ9LwotLQlta2RpciAtcCAke0RFU1RESVJ9LyR7TUFORElSfS9tYW4xCi0tCWluc3RhbGwgLW0gMDY0NCBta2ZzLmpmZnMyLjEgJHtERVNURElSfS8ke01BTkRJUn0vbWFuMS8KLS0JLWd6aXAgLTlmICR7REVTVERJUn0vJHtNQU5ESVJ9L21hbjEvKi4xCi0gCi0gdGVzdHM6OgotIAkkKE1BS0UpIC1DICQoVEVTVFMpCi1AQCAtOTEsOCArNzEsNiBAQCBMRExJQlNfbWtmcy5qZmZzMiAgPSAtbHogJChMWk9MRExJQlMpCi0gTERGTEFHU19qZmZzMnJlYWRlciA9ICQoWkxJQkxERkxBR1MpICQoTFpPTERGTEFHUykKLSBMRExJQlNfamZmczJyZWFkZXIgID0gLWx6ICQoTFpPTERMSUJTKQotIAotLSQoZm9yZWFjaCB2LCQoTVREX0JJTlMpLCQoZXZhbCAkKGNhbGwgbWtkZXAsLCQodikpKSkKLS0KLSAjCi0gIyBDb21tb24gbGlibXRkCi0gIwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMi1jb21tb24ubWstZm9yLWtsaWJjLUNDLWlzLWtsY2MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMi1jb21tb24ubWstZm9yLWtsaWJjLUNDLWlzLWtsY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyM2QxMWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDItY29tbW9uLm1rLWZvci1rbGliYy1DQy1pcy1rbGNjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSA4OWM3NmJiZTgyYTIwMjlhMjViMDY1NGViMGExZDBiMjJkNmU2ODc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDozNzoyOCArMDIwMAotU3ViamVjdDogW1BBVENIIDIvOV0gY29tbW9uLm1rOiBmb3Iga2xpYmMgJChDQykgaXMga2xjYwotCi1EbyBub3QgaGFyZGNvZGU6IGFzc2lnbiB0aGUgdmFsdWUgdG8gdGhlIHZhcmlhYmxlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLS0tLQotIGNvbW1vbi5tayB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5tawotaW5kZXggYmE4NzM3Ny4uMTI2ZDExYSAxMDA2NDQKLS0tLSBhL2NvbW1vbi5tawotKysrIGIvY29tbW9uLm1rCi1AQCAtMSw0ICsxLDQgQEAKLS1DQyA6PSAkKENST1NTKWdjYwotK0NDID89ICQoQ1JPU1MpZ2NjCi0gQVIgOj0gJChDUk9TUylhcgotIFJBTkxJQiA6PSAkKENST1NTKXJhbmxpYgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMy1saWJ1YmkuYy1hZGQta2xpYmMtc3BlY2lmaWMtZml4ZXMtZm9yLWlvY3RsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLWZvci1pb2N0bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFkNGE1Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwMy1saWJ1YmkuYy1hZGQta2xpYmMtc3BlY2lmaWMtZml4ZXMtZm9yLWlvY3RsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSBmZWNiYjcwNTZkNjIxYTMwZjcxMDZlNjdmNWZlMjA5NzYzNTcxYjcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDo0MDoxNSArMDIwMAotU3ViamVjdDogW1BBVENIIDMvOV0gbGlidWJpLmM6IGFkZCBrbGliYyBzcGVjaWZpYyBmaXhlcyBmb3IgaW9jdGwKLQotRmlyc3QgaXNzdWUgaXMgdGhhdCBpb2N0bCgpIGluIGtsaWJjIGRvZXNuJ3QgZXhwZWN0IGEgY29uc3RhbnQgYXMgYXJnMy4KLVNlY29uZCBpc3N1ZSBpcyB0aGF0IGFyZzMgaW4ga2xpYmMgaW9jdGwoKSBpbXBsZW1lbnRhdGlvbiBpcyBub3Qgb3B0aW9uYWwuCi0KLUZpeGVzOgotCi18IHViaS11dGlscy9saWJ1YmkuYzogSW4gZnVuY3Rpb24gJ2RvX2F0dGFjaCc6Ci18IHViaS11dGlscy9saWJ1YmkuYzo2OTg6ODogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAzIG9mICdpb2N0bCcgZGlzY2FyZHMKLXwgJ2NvbnN0JyBxdWFsaWZpZXIgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi18ICAgcmV0ID0gaW9jdGwoZmQsIFVCSV9JT0NBVFQsIHIpOwotfCAgICAgICAgIF4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHViaS11dGlscy9saWJ1YmkuYzozMjowOgotfCAuLi4vbGliL2tsaWJjL2luY2x1ZGUvc3lzL2lvY3RsLmg6MTU6MTQ6IG5vdGU6IGV4cGVjdGVkICd2b2lkIConIGJ1dCBhcmd1bWVudAotfCBpcyBvZiB0eXBlICdjb25zdCBzdHJ1Y3QgdWJpX2F0dGFjaF9yZXEgKicKLXwgIF9fZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwgdm9pZCAqKTsKLXwgICAgICAgICAgICAgICBeCi0KLXwgdWJpLXV0aWxzL2xpYnViaS5jOiBJbiBmdW5jdGlvbiAndWJpX3ZvbF9ibG9ja19jcmVhdGUnOgotfCB1YmktdXRpbHMvbGlidWJpLmM6MTExODo5OiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ2lvY3RsJwotfCAgIHJldHVybiBpb2N0bChmZCwgVUJJX0lPQ1ZPTENSQkxLKTsKLXwgICAgICAgICAgXgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gdWJpLXV0aWxzL2xpYnViaS5jOjMyOjA6Ci18IC4uLi9saWIva2xpYmMvaW5jbHVkZS9zeXMvaW9jdGwuaDoxNToxNDogbm90ZTogZGVjbGFyZWQgaGVyZQotfCAgX19leHRlcm4gaW50IGlvY3RsKGludCwgaW50LCB2b2lkICopOwotfCAgICAgICAgICAgICAgIF4KLXwgdWJpLXV0aWxzL2xpYnViaS5jOiBJbiBmdW5jdGlvbiAndWJpX3ZvbF9ibG9ja19yZW1vdmUnOgotfCB1YmktdXRpbHMvbGlidWJpLmM6MTEyMzo5OiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ2lvY3RsJwotfCAgIHJldHVybiBpb2N0bChmZCwgVUJJX0lPQ1ZPTFJNQkxLKTsKLXwgICAgICAgICAgXgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gdWJpLXV0aWxzL2xpYnViaS5jOjMyOjA6Ci18IC4uLi91c3IvbGliL2tsaWJjL2luY2x1ZGUvc3lzL2lvY3RsLmg6MTU6MTQ6IG5vdGU6IGRlY2xhcmVkIGhlcmUKLXwgIF9fZXh0ZXJuIGludCBpb2N0bChpbnQsIGludCwgdm9pZCAqKTsKLXwgICAgICAgICAgICAgICBeCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotLS0tCi0gdWJpLXV0aWxzL2xpYnViaS5jIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdWJpLXV0aWxzL2xpYnViaS5jIGIvdWJpLXV0aWxzL2xpYnViaS5jCi1pbmRleCA5N2MwNDM0Li4yYjQ5ODMzIDEwMDY0NAotLS0tIGEvdWJpLXV0aWxzL2xpYnViaS5jCi0rKysgYi91YmktdXRpbHMvbGlidWJpLmMKLUBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBsaWJ1YmlfY2xvc2UobGlidWJpX3QgZGVzYykKLSAgKiBzdWNjZXNzIGFuZCAlLTEgaW4gY2FzZSBvZiBmYWlsdXJlLiBAci0+dWJpX251bSBjb250YWlucyBuZXdseSBjcmVhdGVkIFVCSQotICAqIGRldmljZSBudW1iZXIuCi0gICovCi0tc3RhdGljIGludCBkb19hdHRhY2goY29uc3QgY2hhciAqbm9kZSwgY29uc3Qgc3RydWN0IHViaV9hdHRhY2hfcmVxICpyKQotK3N0YXRpYyBpbnQgZG9fYXR0YWNoKGNvbnN0IGNoYXIgKm5vZGUsIHN0cnVjdCB1YmlfYXR0YWNoX3JlcSAqcikKLSB7Ci0gCWludCBmZCwgcmV0OwotIAotQEAgLTExMTUsMTIgKzExMTUsMTIgQEAgaW50IHViaV9yc3ZvbChsaWJ1YmlfdCBkZXNjLCBjb25zdCBjaGFyICpub2RlLCBpbnQgdm9sX2lkLCBsb25nIGxvbmcgYnl0ZXMpCi0gCi0gaW50IHViaV92b2xfYmxvY2tfY3JlYXRlKGludCBmZCkKLSB7Ci0tCXJldHVybiBpb2N0bChmZCwgVUJJX0lPQ1ZPTENSQkxLKTsKLSsJcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MQ1JCTEssIE5VTEwpOwotIH0KLSAKLSBpbnQgdWJpX3ZvbF9ibG9ja19yZW1vdmUoaW50IGZkKQotIHsKLS0JcmV0dXJuIGlvY3RsKGZkLCBVQklfSU9DVk9MUk1CTEspOwotKwlyZXR1cm4gaW9jdGwoZmQsIFVCSV9JT0NWT0xSTUJMSywgTlVMTCk7Ci0gfQotIAotIGludCB1YmlfdXBkYXRlX3N0YXJ0KGxpYnViaV90IGRlc2MsIGludCBmZCwgbG9uZyBsb25nIGJ5dGVzKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNC1SZXN0b3JlLWNvbXBhdGliaWxpdHktdG8tZGlldGxpYmMta2xpYmMtbXVzbC1saWJjLWFmLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDQtUmVzdG9yZS1jb21wYXRpYmlsaXR5LXRvLWRpZXRsaWJjLWtsaWJjLW11c2wtbGliYy1hZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzMWZiNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNC1SZXN0b3JlLWNvbXBhdGliaWxpdHktdG8tZGlldGxpYmMta2xpYmMtbXVzbC1saWJjLWFmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotRnJvbSBiNjY4Y2I3NWNiN2U3MmZmOTIwNTUyMDkxMzBkNGNkNGIzY2FjYmRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvcnN0ZW4gR2xhc2VyIDx0Z0BtaXJic2Qub3JnPgotRGF0ZTogRnJpLCAyMCBKdW4gMjAxNCAxMDo1NjoyNyArMDAwMAotU3ViamVjdDogW1BBVENIIDQvOV0gUmVzdG9yZSBjb21wYXRpYmlsaXR5IHRvIGRpZXRsaWJjLCBrbGliYywgbXVzbCBsaWJjIGFmdGVyCi0gY29tbWl0IDRmMWIxMDgKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotRWFjaCBDIGxpYnJhcnkgaGFzIHRoZWlyIG93biB3YXkgdG8gZGVmaW5lIG9mZl90LCBhbmQgdGhlIDxmZWF0dXJlcy5oPgotaGVhZGVyIGlzIG5vbnN0YW5kYXJkIGFuZCBzcGVjaWZpYyB0byB0aGUgR05VIGxpYmMgYW5kIHRob3NlIHRoYXQgY2xvbmUKLWl0ICh1Q2xpYmMpLiBGZWZl4oCZcyBkaWV0bGliYyB1c2VzIGRpZmZlcmVudCBmbGFncywgYW5kIGtsaWJjIGFsd2F5cyB1c2VzCi1hIDY0LWJpdCBvZmZfdCAobGlrZSB0aGUgQlNEcyk7IG11c2wgbGliYyBjYW5ub3QgYmUgcmVjb2duaXNlZCB1c2luZyBjcHAKLWluc3RydWN0aW9ucywgc28gd2UgYXNzdW1lIDY0IGJpdCB0aGVyZSAoYW5kIG9uIHVua25vd24gQyBsaWJyYXJpZXMpIGFuZAotbGVhdmUgaXQgdG8gdGhlIHVzZXIgdG8gc3VibWl0IGEgZm9sbG93LXVwIGZpeCBpZiB3ZSBndWVzcyB3cm9uZy4gSSBhbHNvCi1hZGRlZCBhIHN0YXRpYyBhc3NlcnRpb24gdG8gdmVyaWZ5IHRoZSA2NCBiaXQgZ3Vlc3MgaXMgY29ycmVjdC4KLQotSXQgd291bGQgYmUgcmVhbGx5IGJldHRlciB1c2luZyBhIGNvbmZpZ3VyZSBzY3JpcHQgZm9yIHRoaXMgaW5zdGVhZC4KLQotRml4ZXM6Ci18ICAgQ0MgICAgICBsaWIvbGlibXRkLm8KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHViaS11dGlscy91Yml1dGlscy1jb21tb24uYzozNTowOgotfCAuL2luY2x1ZGUvY29tbW9uLmg6Mjk6MjI6IGZhdGFsIGVycm9yOiBmZWF0dXJlcy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18ICAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLXwgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgY29tcGlsYXRpb24gdGVybWluYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogVGhvcnN0ZW4gR2xhc2VyIDx0Z0BtaXJic2Qub3JnPgotU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotLS0tCi0gaW5jbHVkZS9jb21tb24uaCB8IDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbW1vbi5oIGIvaW5jbHVkZS9jb21tb24uaAotaW5kZXggZmIwY2E4My4uNWEyMDk2NCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvY29tbW9uLmgKLSsrKyBiL2luY2x1ZGUvY29tbW9uLmgKLUBAIC0yNiw3ICsyNiw5IEBACi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX1VDTElCQ19fKQotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0gCi1AQCAtNjcsNiArNjksMjEgQEAgZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi0gCi0gLyogZGVmaW5lIGEgcHJpbnQgZm9ybWF0IHNwZWNpZmllciBmb3Igb2ZmX3QgKi8KLSsjaWYgZGVmaW5lZChfX0tMSUJDX18pCi0rLyogYWx3YXlzIDY0IGJpdCBvbiBrbGliYyAqLwotKyNkZWZpbmUgUFJJeG9mZl90IFBSSXg2NAotKyNkZWZpbmUgUFJJZG9mZl90IFBSSWQ2NAotKyNlbGlmIGRlZmluZWQoX19kaWV0bGliY19fKQotKy8qIGRlcGVuZHMgb24gY29tcGlsZXIgZmxhZ3Mgb24gZGlldGxpYmMgKi8KLSsjaWYgZGVmaW5lZChfRklMRV9PRkZTRVRfQklUUykgJiYgKF9GSUxFX09GRlNFVF9CSVRTID09IDY0KQotKyNkZWZpbmUgUFJJeG9mZl90IFBSSXg2NAotKyNkZWZpbmUgUFJJZG9mZl90IFBSSWQ2NAotKyNlbHNlCi0rI2RlZmluZSBQUkl4b2ZmX3QgImwiUFJJeDMyCi0rI2RlZmluZSBQUklkb2ZmX3QgImwiUFJJZDMyCi0rI2VuZGlmCi0rI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKLSsvKiBkZXBlbmRzIG9uIGNvbXBpbGVyIGZsYWdzIG9uIGdsaWJjIGFuZCB1Q2xpYmMgKi8KLSAjaWZkZWYgX19VU0VfRklMRV9PRkZTRVQ2NAotICNkZWZpbmUgUFJJeG9mZl90IFBSSXg2NAotICNkZWZpbmUgUFJJZG9mZl90IFBSSWQ2NAotQEAgLTc0LDYgKzkxLDEzIEBAIGV4dGVybiAiQyIgewotICNkZWZpbmUgUFJJeG9mZl90ICJsIlBSSXgzMgotICNkZWZpbmUgUFJJZG9mZl90ICJsIlBSSWQzMgotICNlbmRpZgotKyNlbHNlCi0rLyogdW5rbm93biBsaWJjIG9yIG11c2wgKi8KLSsjZGVmaW5lIFBSSXhvZmZfdCBQUkl4NjQKLSsjZGVmaW5lIFBSSWRvZmZfdCBQUklkNjQKLSsvKiB2ZXJpZnkgb3VyIGd1ZXNzIG9mIDY0IGJpdCBpcyBjb3JyZWN0ICovCi0rc3RhdGljIGNoYXIgX19QUkl4b2ZmX3Rfc3RhdGljX2Fzc2VydFtzaXplb2Yob2ZmX3QpID09IDggPyAxIDogLTFdOwotKyNlbmRpZgotIAotIC8qIFZlcmJvc2UgbWVzc2FnZXMgKi8KLSAjZGVmaW5lIGJhcmV2ZXJib3NlKHZlcmJvc2UsIGZtdCwgLi4uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNS1jb21tb24uaC1tb3JlLXdvcmthcm91bmRzLWZvci1rbGliYy1jb21wYXRpYmlsaXR5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDUtY29tbW9uLmgtbW9yZS13b3JrYXJvdW5kcy1mb3Ita2xpYmMtY29tcGF0aWJpbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMwOWE3Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNS1jb21tb24uaC1tb3JlLXdvcmthcm91bmRzLWZvci1rbGliYy1jb21wYXRpYmlsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA1ZDRhNjZiNTAyMDAzZWYzODVkYWIzMWExNzAxMjI0NjQwN2U3MzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOSBKdW4gMjAxNCAwMDo0NDowMyArMDIwMAotU3ViamVjdDogW1BBVENIIDUvOV0gY29tbW9uLmg6IG1vcmUgd29ya2Fyb3VuZHMgZm9yIGtsaWJjIGNvbXBhdGliaWxpdHkKLQotUGF0Y2ggaXMgYWRkcmVzc2luZyB0d28gaXNzdWVzOgotKiBGaXJzdCwgIEtsaWJjIGRvZXNuJ3QgaGF2ZSBycG1hdGNoKCkuCi0qIFNlY29uZCwgS2xpYmMgbGFja3MgZ2V0bGluZSgpCi0KLUZpeGVzOgotfCAgIExEICAgICAgdWJpLXV0aWxzL3ViaWZvcm1hdAotfCAuLi4vZ2l0L3ViaS11dGlscy91Ymlmb3JtYXQubzogSW4gZnVuY3Rpb24gYHByb21wdCc6Ci18IC4uLi9naXQvLi9pbmNsdWRlL2NvbW1vbi5oOjE1NzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0bGluZScKLXwgLi4uL2dpdC8uL2luY2x1ZGUvY29tbW9uLmg6MTY0OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBycG1hdGNoJwotfCAuLi4vZ2l0Ly4vaW5jbHVkZS9jb21tb24uaDoxNTc6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGxpbmUnCi18IC4uLi9naXQvLi9pbmNsdWRlL2NvbW1vbi5oOjE2NDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgcnBtYXRjaCcKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotLS0tCi0gaW5jbHVkZS9jb21tb24uaCB8IDggKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKLWluZGV4IDVhMjA5NjQuLjJmNTFlMWMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2NvbW1vbi5oCi1AQCAtMTYxLDE1ICsxNjEsMTcgQEAgc3RhdGljIGlubGluZSBpbnQgX19ycG1hdGNoKGNvbnN0IGNoYXIgKnJlc3ApCi0gICovCi0gc3RhdGljIGlubGluZSBib29sIHByb21wdChjb25zdCBjaGFyICptc2csIGJvb2wgZGVmKQotIHsKLS0JY2hhciAqbGluZSA9IE5VTEw7Ci0tCXNpemVfdCBsZW47Ci0rCWNoYXIgKmxpbmU7Ci0gCWJvb2wgcmV0ID0gZGVmOwotIAotKwljb25zdCBpbnQgc2l6ZW9mX2xpbmUgPSAyOwotKwlsaW5lID0gbWFsbG9jKHNpemVvZl9saW5lKTsKLSsKLSAJZG8gewotIAkJbm9ybXNnX2NvbnQoIiVzICglYy8lYykgIiwgbXNnLCBkZWYgPyAnWScgOiAneScsIGRlZiA/ICduJyA6ICdOJyk7Ci0gCQlmZmx1c2goc3Rkb3V0KTsKLSAKLS0JCXdoaWxlIChnZXRsaW5lKCZsaW5lLCAmbGVuLCBzdGRpbikgPT0gLTEpIHsKLSsJCXdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2ZfbGluZSwgc3RkaW4pID09IE5VTEwpIHsKLSAJCQlwcmludGYoImZhaWxlZCB0byByZWFkIHByb21wdDsgYXNzdW1pbmcgJyVzJ1xuIiwKLSAJCQkJZGVmID8gInllcyIgOiAibm8iKTsKLSAJCQlicmVhazsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDYtbGliaW5pcGFyc2VyLXJlbW92ZS11bnVzZWQtZnVuY3Rpb24tbmVlZGluZy1mbG9hdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA2LWxpYmluaXBhcnNlci1yZW1vdmUtdW51c2VkLWZ1bmN0aW9uLW5lZWRpbmctZmxvYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNDZmOTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDYtbGliaW5pcGFyc2VyLXJlbW92ZS11bnVzZWQtZnVuY3Rpb24tbmVlZGluZy1mbG9hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUZyb20gMmFmMzBlOWIyOTg4MTExZTQ1ZWQ2ZWE2YWY1NWU0OWVjN2NiMWNiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjkgSnVuIDIwMTQgMDA6NDQ6NTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIGxpYmluaXBhcnNlcjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiBuZWVkaW5nIGZsb2F0Ci0KLUZpeGVzOgotfCAgIExEICAgICAgdWJpLXV0aWxzL3ViaWZvcm1hdAotfCAuLi4vZ2l0L3ViaS11dGlscy9saWJpbmlwYXJzZXIuYShsaWJpbmlwYXJzZXIubyk6IEluIGZ1bmN0aW9uCi18IGAgIExEICAgICAgdWJpLXV0aWxzL3ViaXJlbmFtZQotfCBpbmlwYXJzZXJfZ2V0ZG91YmxlJzoKLXwgLi4uL2dpdC91YmktdXRpbHMvbGliaW5pcGFyc2VyLmM6MzM2OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBhdG9mJwotCi1HcmVwIGRvZXNuJ3QgcmV2ZWFsIGFueSBvY2N1cnJlbmNlIG9mIGluaXBhcnNlcl9nZXRkb3VibGUoKSwgdXNpbmcgYXRvZigpIHNvCi1yZW1vdmUgaXQ6IGZsb2F0aW5nLXBvaW50IGlzIG5vdCBzdXBwb3J0ZWQgaW4ga2xpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSB1YmktdXRpbHMvaW5jbHVkZS9saWJpbmlwYXJzZXIuaCB8IDE1IC0tLS0tLS0tLS0tLS0tLQotIHViaS11dGlscy9saWJpbmlwYXJzZXIuYyAgICAgICAgIHwgMjIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91YmktdXRpbHMvaW5jbHVkZS9saWJpbmlwYXJzZXIuaCBiL3ViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oCi1pbmRleCBiZTNjNjY3Li5hYmQ3N2FhIDEwMDY0NAotLS0tIGEvdWJpLXV0aWxzL2luY2x1ZGUvbGliaW5pcGFyc2VyLmgKLSsrKyBiL3ViaS11dGlscy9pbmNsdWRlL2xpYmluaXBhcnNlci5oCi1AQCAtMTU4LDIxICsxNTgsNiBAQCBpbnQgaW5pcGFyc2VyX2dldGludChkaWN0aW9uYXJ5ICogZCwgY29uc3QgY2hhciAqIGtleSwgaW50IG5vdGZvdW5kKTsKLSAKLSAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotIC8qKgotLSAgQGJyaWVmICAgIEdldCB0aGUgc3RyaW5nIGFzc29jaWF0ZWQgdG8gYSBrZXksIGNvbnZlcnQgdG8gYSBkb3VibGUKLS0gIEBwYXJhbSAgICBkIERpY3Rpb25hcnkgdG8gc2VhcmNoCi0tICBAcGFyYW0gICAga2V5IEtleSBzdHJpbmcgdG8gbG9vayBmb3IKLS0gIEBwYXJhbSAgICBub3Rmb3VuZCBWYWx1ZSB0byByZXR1cm4gaW4gY2FzZSBvZiBlcnJvcgotLSAgQHJldHVybiAgIGRvdWJsZQotLQotLSAgVGhpcyBmdW5jdGlvbiBxdWVyaWVzIGEgZGljdGlvbmFyeSBmb3IgYSBrZXkuIEEga2V5IGFzIHJlYWQgZnJvbSBhbgotLSAgaW5pIGZpbGUgaXMgZ2l2ZW4gYXMgInNlY3Rpb246a2V5Ii4gSWYgdGhlIGtleSBjYW5ub3QgYmUgZm91bmQsCi0tICB0aGUgbm90Zm91bmQgdmFsdWUgaXMgcmV0dXJuZWQuCi0tICovCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0tZG91YmxlIGluaXBhcnNlcl9nZXRkb3VibGUoZGljdGlvbmFyeSAqIGQsIGNoYXIgKiBrZXksIGRvdWJsZSBub3Rmb3VuZCk7Ci0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0vKioKLSAgIEBicmllZiAgICBHZXQgdGhlIHN0cmluZyBhc3NvY2lhdGVkIHRvIGEga2V5LCBjb252ZXJ0IHRvIGEgYm9vbGVhbgotICAgQHBhcmFtICAgIGQgRGljdGlvbmFyeSB0byBzZWFyY2gKLSAgIEBwYXJhbSAgICBrZXkgS2V5IHN0cmluZyB0byBsb29rIGZvcgotZGlmZiAtLWdpdCBhL3ViaS11dGlscy9saWJpbmlwYXJzZXIuYyBiL3ViaS11dGlscy9saWJpbmlwYXJzZXIuYwotaW5kZXggODk4ZjU3Zi4uYmE3MGMwOCAxMDA2NDQKLS0tLSBhL3ViaS11dGlscy9saWJpbmlwYXJzZXIuYwotKysrIGIvdWJpLXV0aWxzL2xpYmluaXBhcnNlci5jCi1AQCAtMzE2LDI4ICszMTYsNiBAQCBpbnQgaW5pcGFyc2VyX2dldGludChkaWN0aW9uYXJ5ICogZCwgY29uc3QgY2hhciAqIGtleSwgaW50IG5vdGZvdW5kKQotIAotIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gLyoqCi0tICBAYnJpZWYgICAgR2V0IHRoZSBzdHJpbmcgYXNzb2NpYXRlZCB0byBhIGtleSwgY29udmVydCB0byBhIGRvdWJsZQotLSAgQHBhcmFtICAgIGQgRGljdGlvbmFyeSB0byBzZWFyY2gKLS0gIEBwYXJhbSAgICBrZXkgS2V5IHN0cmluZyB0byBsb29rIGZvcgotLSAgQHBhcmFtICAgIG5vdGZvdW5kIFZhbHVlIHRvIHJldHVybiBpbiBjYXNlIG9mIGVycm9yCi0tICBAcmV0dXJuICAgZG91YmxlCi0tCi0tICBUaGlzIGZ1bmN0aW9uIHF1ZXJpZXMgYSBkaWN0aW9uYXJ5IGZvciBhIGtleS4gQSBrZXkgYXMgcmVhZCBmcm9tIGFuCi0tICBpbmkgZmlsZSBpcyBnaXZlbiBhcyAic2VjdGlvbjprZXkiLiBJZiB0aGUga2V5IGNhbm5vdCBiZSBmb3VuZCwKLS0gIHRoZSBub3Rmb3VuZCB2YWx1ZSBpcyByZXR1cm5lZC4KLS0gKi8KLS0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS1kb3VibGUgaW5pcGFyc2VyX2dldGRvdWJsZShkaWN0aW9uYXJ5ICogZCwgY2hhciAqIGtleSwgZG91YmxlIG5vdGZvdW5kKQotLXsKLS0gICAgY2hhciAgICAqICAgc3RyIDsKLS0KLS0gICAgc3RyID0gaW5pcGFyc2VyX2dldHN0cmluZyhkLCBrZXksIElOSV9JTlZBTElEX0tFWSk7Ci0tICAgIGlmIChzdHI9PUlOSV9JTlZBTElEX0tFWSkgcmV0dXJuIG5vdGZvdW5kIDsKLS0gICAgcmV0dXJuIGF0b2Yoc3RyKTsKLS19Ci0tCi0tLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS0vKioKLSAgIEBicmllZiAgICBHZXQgdGhlIHN0cmluZyBhc3NvY2lhdGVkIHRvIGEga2V5LCBjb252ZXJ0IHRvIGEgYm9vbGVhbgotICAgQHBhcmFtICAgIGQgRGljdGlvbmFyeSB0byBzZWFyY2gKLSAgIEBwYXJhbSAgICBrZXkgS2V5IHN0cmluZyB0byBsb29rIGZvcgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNy1tdGQtdXRpbHMtY29tbW9uLmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwNy1tdGQtdXRpbHMtY29tbW9uLmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2YjAxMmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDctbXRkLXV0aWxzLWNvbW1vbi5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA0MWU3Yzc2YjA4NTNiZjUyNDFiMzhiODE2N2RmZDU3YzI3ZmVmMWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyOCBKYW4gMjAxOCAyMTo0Nzo1OSArMDEwMAotU3ViamVjdDogW1BBVENIIDcvOV0gbXRkLXV0aWxzOiBjb21tb24uYzogY29udmVydCB0byBpbnRlZ2VyIGFyaXRobWV0aWMKLQotV2UgdXNlIGZsb2F0aW5nIHBvaW50IGp1c3QgdG8gcHJpbnQgb3V0IEtpQiwgTWlCLCBHaUIuCi1Bdm9pZCB0aGF0IHRvIGJlIGtsaWJjIGZyaWVuZGx5LgotCi1GaXhlcyBjb21waWxhdGlvbiBmb3IgYWFyY2g2NCBhZ2FpbnN0IGtsaWJjOgotCi1lcnJvcjogJy1tZ2VuZXJhbC1yZWdzLW9ubHknIGlzIGluY29tcGF0aWJsZSB3aXRoIGZsb2F0aW5nLXBvaW50IGFyZ3VtZW50Ci18ICAgIHByaW50ZigiJXMlLjFmIEdpQiIsIHAsIChkb3VibGUpYnl0ZXMgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSk7Ci1ldGMuCi0KLU5vdGU6Ci0qIEluIHRoZSBLaUIgY2FzZSwgd2UgY291bGQgYXBwYXJlbnRseSBtdWx0aXBseSBieSAxMDAgYmVmb3JlIGRpdmlkaW5nCi0gIHdpdGhvdXQgcmlza2luZyBvdmVyZmxvdy4gVGhpcyBjb2RlIHNpbXBseSBhdm9pZHMgbXVsdGlwbGljYXRpb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSB1YmktdXRpbHMvdWJpdXRpbHMtY29tbW9uLmMgfCAxOCArKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3ViaS11dGlscy91Yml1dGlscy1jb21tb24uYyBiL3ViaS11dGlscy91Yml1dGlscy1jb21tb24uYwotaW5kZXggNjYwOWE2Yi4uMGRlZDJhNCAxMDA2NDQKLS0tLSBhL3ViaS11dGlscy91Yml1dGlscy1jb21tb24uYwotKysrIGIvdWJpLXV0aWxzL3ViaXV0aWxzLWNvbW1vbi5jCi1AQCAtMTA3LDYgKzEwNyw5IEBAIGxvbmcgbG9uZyB1Yml1dGlsc19nZXRfYnl0ZXMoY29uc3QgY2hhciAqc3RyKQotIHZvaWQgdWJpdXRpbHNfcHJpbnRfYnl0ZXMobG9uZyBsb25nIGJ5dGVzLCBpbnQgYnJhY2tldCkKLSB7Ci0gCWNvbnN0IGNoYXIgKnA7Ci0rCWludCBHaUIgPSAxMDI0ICogMTAyNCAqIDEwMjQ7Ci0rCWludCBNaUIgPSAxMDI0ICogMTAyNDsKLSsJaW50IEtpQiA9IDEwMjQ7Ci0gCi0gCWlmIChicmFja2V0KQotIAkJcCA9ICIgKCI7Ci1AQCAtMTE1LDEyICsxMTgsMTUgQEAgdm9pZCB1Yml1dGlsc19wcmludF9ieXRlcyhsb25nIGxvbmcgYnl0ZXMsIGludCBicmFja2V0KQotIAotIAlwcmludGYoIiVsbGQgYnl0ZXMiLCBieXRlcyk7Ci0gCi0tCWlmIChieXRlcyA+IDEwMjQgKiAxMDI0ICogMTAyNCkKLS0JCXByaW50ZigiJXMlLjFmIEdpQiIsIHAsIChkb3VibGUpYnl0ZXMgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSk7Ci0tCWVsc2UgaWYgKGJ5dGVzID4gMTAyNCAqIDEwMjQpCi0tCQlwcmludGYoIiVzJS4xZiBNaUIiLCBwLCAoZG91YmxlKWJ5dGVzIC8gKDEwMjQgKiAxMDI0KSk7Ci0tCWVsc2UgaWYgKGJ5dGVzID4gMTAyNCAmJiBieXRlcyAhPSAwKQotLQkJcHJpbnRmKCIlcyUuMWYgS2lCIiwgcCwgKGRvdWJsZSlieXRlcyAvIDEwMjQpOwotKwlpZiAoYnl0ZXMgPiBHaUIpCi0rCQlwcmludGYoIiVzJWxsZC4lbGxkIEdpQiIsIHAsCi0rCQkgICAgICAgYnl0ZXMgLyBHaUIsIGJ5dGVzICUgR2lCIC8gKEdpQiAvIDEwKSk7Ci0rCWVsc2UgaWYgKGJ5dGVzID4gTWlCKQotKwkJcHJpbnRmKCIlcyVsbGQuJWxsZCBNaUIiLCBwLAotKwkJICAgICAgIGJ5dGVzIC8gTWlCLCBieXRlcyAlIE1pQiAvIChNaUIgLyAxMCkpOwotKwllbHNlIGlmIChieXRlcyA+IEtpQiAmJiBieXRlcyAhPSAwKQotKwkJcHJpbnRmKCIlcyVsbGQuJWxsZCBLaUIiLCBwLAotKwkJICAgICAgIGJ5dGVzIC8gS2lCLCBieXRlcyAlIEtpQiAvIChLaUIgLyAxMCkpOwotIAllbHNlCi0gCQlyZXR1cm47Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA4LXViaS11dGlscy11Ymlmb3JtYXQuYy1jb252ZXJ0LXRvLWludGVnZXItYXJpdGhtZXRpYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA4LXViaS11dGlscy11Ymlmb3JtYXQuYy1jb252ZXJ0LXRvLWludGVnZXItYXJpdGhtZXRpYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJkMDU3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMS41LjIvMDAwOC11YmktdXRpbHMtdWJpZm9ybWF0LmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGU2ZjFhODVjMGEzZGYyNGZlM2NhOWE1MjBkYzY5NzEwNWU3NWE4MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI3IEphbiAyMDE4IDA5OjM5OjI2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggOC85XSB1YmktdXRpbHM6IHViaWZvcm1hdC5jOiBjb252ZXJ0IHRvIGludGVnZXIgYXJpdGhtZXRpYwotCi1EbyBub3QgY2FzdCBwZXJjZW50IHRvIGRvdWJsZSwgaXQgaXMganVzdCB1c2VkIGFzIHVwcGVyIGxpbWl0LgotQXZvaWQgZmxvYXRpbmcgcG9pbnQgdG8gZml4IGNvbXBpbGF0aW9uIGZvciBhYXJjaDY0IGFnYWluc3Qga2xpYmM6Ci0KLWVycm9yOiAnLW1nZW5lcmFsLXJlZ3Mtb25seScgaXMgaW5jb21wYXRpYmxlIHdpdGggZmxvYXRpbmctcG9pbnQgY29kZQotfCAgICBpbnQgcGVyY2VudCA9ICgoZG91YmxlKXNpLT5va19jbnQpL3NpLT5nb29kX2NudCAqIDEwMDsKLXwgICAgICAgIF5+fn5+fn4KLQotTm90ZXM6Ci0qIFRoZSBjaGVja3MgaW4gdGhlIGNvZGUgYWJvdmUgdGhpcyBsaW5lIGVuc3VyZSB0aGF0IHNpLT5nb29kX2NudCBpcyBub3QgMC4KLQotKiBUaGUgY29kZSBhc3N1bWVzICBzaS0+Z29vZF9jbnQgKiAxMDAgIHdpbGwgbm90IG92ZXJmbG93LCB0aGVuIHdlIGNhbiB1c2UKLSAgKHNpLT5va19jbnQgKiAxMDApIHNhZmVseSBiZWNhdXNlIHRoZSBmb3JtZXIgaXMgYmlnZ2VyLgotCi0qIFRoZSB0cnVuY2F0ZWQgcmVzdWx0IGRvZXMgbm90IGFmZmVjdCB0aGUgbG9naWM6Ci0gIGkuZS4gYSB2YWx1ZSBvZiA0OS45IGlzIHRydW5jYXRlZCB0byA0OSBhbmQgaXMgc3RpbGwgPDUwLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSB1YmktdXRpbHMvdWJpZm9ybWF0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91YmktdXRpbHMvdWJpZm9ybWF0LmMgYi91YmktdXRpbHMvdWJpZm9ybWF0LmMKLWluZGV4IDIxNDA5Y2EuLmQ5MzE2NGEgMTAwNjQ0Ci0tLS0gYS91YmktdXRpbHMvdWJpZm9ybWF0LmMKLSsrKyBiL3ViaS11dGlscy91Ymlmb3JtYXQuYwotQEAgLTg0Myw3ICs4NDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSkKLSAJfQotIAotIAlpZiAoIWFyZ3Mub3ZlcnJpZGVfZWMgJiYgc2ktPmVtcHR5X2NudCA8IHNpLT5nb29kX2NudCkgewotLQkJaW50IHBlcmNlbnQgPSAoKGRvdWJsZSlzaS0+b2tfY250KS9zaS0+Z29vZF9jbnQgKiAxMDA7Ci0rCQlpbnQgcGVyY2VudCA9IChzaS0+b2tfY250ICogMTAwKSAvIHNpLT5nb29kX2NudDsKLSAKLSAJCS8qCi0gCQkgKiBNYWtlIHN1cmUgdGhlIG1ham9yaXR5IG9mIGVyYXNlYmxvY2tzIGhhdmUgdmFsaWQKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDktRWxpbWluYXRlLXdhcm5pbmdzLWFib3V0LWltcGxpY2l0LW5vbi1jb25zdC1jYXN0aW5nLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0xLjUuMi8wMDA5LUVsaW1pbmF0ZS13YXJuaW5ncy1hYm91dC1pbXBsaWNpdC1ub24tY29uc3QtY2FzdGluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ODI0NmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTEuNS4yLzAwMDktRWxpbWluYXRlLXdhcm5pbmdzLWFib3V0LWltcGxpY2l0LW5vbi1jb25zdC1jYXN0aW5nLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMjIyOWYzYjlmZDRiYWQ0Nzc5NGMyOGU1NThhZDI3MzE3M2NlYTczZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjcgSmFuIDIwMTggMDk6NTI6NDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIEVsaW1pbmF0ZSB3YXJuaW5ncyBhYm91dCBpbXBsaWNpdCBub24tY29uc3QgY2FzdGluZyBpbgotIGxpYm10ZAotCi1UaGUgbXRkX2dldF9kZXZfaW5mbzEgZnVuY3Rpb24gcmVhZHMgKGFtb25nIG90aGVyIHRoaW5ncykgbmFtZSBhbmQgdHlwZQotc3RyaW5nIGludG8gY29yZXNwb25kaW5nIHN0cnVjdCBtdGRfZGV2X2luZm8gZmllbGRzLgotCi1UaGUgc3RydWN0IG10ZF9kZXZfaW5mbyBoYXMgdGhlIHN0cmluZyBmaWVsZHMgbWFya2VkIGNvbnN0LCByZXF1aXJpbmcKLXRoZW0gdG8gYmUgY2FzdCB0byBub24tY29uc3QgdmVyc2lvbiBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCi0KLVRoaXMgY2FzdCB3YXMgcHJldmlvdXNseSBvbWl0dGVkIGZyb20gdGhlIGRldl9yZWFkX2RhdGEgY2FsbHMsCi10cmlnZ2VyaW5nIHdhcm5pbmdzIGR1cmluZyBjb21waWxhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgT2JlcmhvbGxlbnplciA8ZGF2aWQub2JlcmhvbGxlbnplckBzaWdtYS1zdGFyLmF0PgotU2lnbmVkLW9mZi1ieTogUmljaGFyZCBXZWluYmVyZ2VyIDxyaWNoYXJkQG5vZC5hdD4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvbGlibXRkLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2xpYm10ZC5jIGIvbGliL2xpYm10ZC5jCi1pbmRleCA2MGI0NzgyLi41ZjBiY2JjIDEwMDY0NAotLS0tIGEvbGliL2xpYm10ZC5jCi0rKysgYi9saWIvbGlibXRkLmMKLUBAIC03NDYsMTMgKzc0NiwxMyBAQCBpbnQgbXRkX2dldF9kZXZfaW5mbzEobGlibXRkX3QgZGVzYywgaW50IG10ZF9udW0sIHN0cnVjdCBtdGRfZGV2X2luZm8gKm10ZCkKLSAJaWYgKGRldl9nZXRfbWFqb3IobGliLCBtdGRfbnVtLCAmbXRkLT5tYWpvciwgJm10ZC0+bWlub3IpKQotIAkJcmV0dXJuIC0xOwotIAotLQlyZXQgPSBkZXZfcmVhZF9kYXRhKGxpYi0+bXRkX25hbWUsIG10ZF9udW0sICZtdGQtPm5hbWUsCi0rCXJldCA9IGRldl9yZWFkX2RhdGEobGliLT5tdGRfbmFtZSwgbXRkX251bSwgKGNoYXIgKikmbXRkLT5uYW1lLAotIAkJCSAgICBNVERfTkFNRV9NQVggKyAxKTsKLSAJaWYgKHJldCA8IDApCi0gCQlyZXR1cm4gLTE7Ci0gCSgoY2hhciAqKW10ZC0+bmFtZSlbcmV0IC0gMV0gPSAnXDAnOwotIAotLQlyZXQgPSBkZXZfcmVhZF9kYXRhKGxpYi0+bXRkX3R5cGUsIG10ZF9udW0sICZtdGQtPnR5cGVfc3RyLAotKwlyZXQgPSBkZXZfcmVhZF9kYXRhKGxpYi0+bXRkX3R5cGUsIG10ZF9udW0sIChjaGFyICopJm10ZC0+dHlwZV9zdHIsCi0gCQkJICAgIE1URF9UWVBFX01BWCArIDEpOwotIAlpZiAocmV0IDwgMCkKLSAJCXJldHVybiAtMTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTIuMC4yLzAwMDEtbGlibWlzc2luZy5oLWZpeC1rbGliYy1idWlsZC13aGVuLXVzaW5nLWdsaWJjLXRvb2xjaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDAxLWxpYm1pc3NpbmcuaC1maXgta2xpYmMtYnVpbGQtd2hlbi11c2luZy1nbGliYy10b29sY2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlOWJkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDAxLWxpYm1pc3NpbmcuaC1maXgta2xpYmMtYnVpbGQtd2hlbi11c2luZy1nbGliYy10b29sY2gucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBlNTk2YWU5OTA1OWMyOGZhOWJiMzQ2MWUwM2U3ZWNhYWNiZjQxNzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBNYXkgMjAxOCAxNTozNDo1OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBsaWJtaXNzaW5nLmg6IGZpeCBrbGliYyBidWlsZCB3aGVuIHVzaW5nIGdsaWJjIHRvb2xjaGFpbgorCitrbGliYyBsYWNrcyBleGVjaW5mby5oIHNvIGFkZGEgZ3VhcmQgYXJvdW5kIGl0LgorTm90ZTogYnVpbGQgd2l0aCBtdXNsIHRvb2xjaGFpbiBpcyBvayBldmVuIHdpdGhvdXQgdGhpcyBwYXRjaC4KKworRml4IGJ1aWxkIGVycm9yOgorCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9naXQvbGliL2V4ZWNpbmZvLmM6MTowOgorfCAuLi9naXQvaW5jbHVkZS9saWJtaXNzaW5nLmg6NzoxMDogZmF0YWwgZXJyb3I6IGV4ZWNpbmZvLmg6IAorIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS9saWJtaXNzaW5nLmggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWJtaXNzaW5nLmggYi9pbmNsdWRlL2xpYm1pc3NpbmcuaAoraW5kZXggMDE5NjAzMy4uODMyYzM3MiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbGlibWlzc2luZy5oCisrKysgYi9pbmNsdWRlL2xpYm1pc3NpbmcuaAorQEAgLTMsOSArMywxMSBAQAorIAorICNpbmNsdWRlICJjb25maWcuaCIKKyAKKysjaWZuZGVmIF9fS0xJQkNfXworICNpZmRlZiBIQVZFX0VYRUNJTkZPX0gKKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKyAjZW5kaWYKKysjZW5kaWYKKyAKKyAjaWZuZGVmIEhBVkVfRVhFQ0lORk9fSAorIGludCBiYWNrdHJhY2Uodm9pZCAqKmJ1ZmZlciwgaW50IHNpemUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMi4wLjIvMDAwMi1JbnN0ZWFkLW9mLWRvaW5nLXByZXByb2Nlc3Nvci1tYWdpYy1qdXN0LW91dHB1dC1vZmZfLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTIuMC4yLzAwMDItSW5zdGVhZC1vZi1kb2luZy1wcmVwcm9jZXNzb3ItbWFnaWMtanVzdC1vdXRwdXQtb2ZmXy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzZlMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTIuMC4yLzAwMDItSW5zdGVhZC1vZi1kb2luZy1wcmVwcm9jZXNzb3ItbWFnaWMtanVzdC1vdXRwdXQtb2ZmXy5wYXRjaApAQCAtMCwwICsxLDMyNiBAQAorRnJvbSAwMWM5OGQ1ZDVkMDQ0ZDlhMTI1YWJjZGJiMmYzZDc3MTk2NjM2NWIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogbWlyYWJpbG9zIDxtQG1pcmJzZC5vcmc+CitEYXRlOiBUaHUsIDEgRmViIDIwMTggMTU6MzQ6MDcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5zdGVhZCBvZiBkb2luZyBwcmVwcm9jZXNzb3IgbWFnaWMsIGp1c3Qgb3V0cHV0IG9mZl90IGFzCisgbG9uZyBsb25nCisKK0ZpeCB3YXJuaW5ncyBhYm90IFBSSWRvZmZfdCBpbiBsaWJtdGQuYywgaW4gbXRkX3JlYWQgKGFuZCBtdGRfd3JpdGUpOgorCitJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vZ2l0L2xpYi9saWJtdGQuYzo0MDowOgorLi4vZ2l0L2xpYi9saWJtdGQuYzogSW4gZnVuY3Rpb24gJ210ZF9yZWFkJzoKKy4uL2dpdC9pbmNsdWRlL2NvbW1vbi5oOjExMDoxODogd2FybmluZzogZm9ybWF0ICclbGQnIGV4cGVjdHMgYXJndW1lbnQgb2YKKyB0eXBlICdsb25nIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdvZmZfdCB7YWthIGxvbmcgbG9uZyBpbnR9JworIFstV2Zvcm1hdD1dCisKKy4uL2dpdC9pbmNsdWRlL2NvbW1vbi5oOjEyMDoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ2Vycm1zZycKKyAgZXJybXNnKGZtdCwgIyNfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIF5+fn5+fgorLi4vZ2l0L2xpYi9saWJtdGQuYzoxMDgyOjEwOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ3N5c19lcnJtc2cnCisgICByZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICUiUFJJZG9mZl90LAorICAgICAgICAgIF5+fn5+fn5+fn4KKworL3Vzci9saWIva2xpYmMvaW5jbHVkZS9pbnR0eXBlcy5oOjI4OjE3OiBub3RlOiBmb3JtYXQgc3RyaW5nIGlzIGRlZmluZWQgaGVyZQorICNkZWZpbmUgUFJJZDMyICJkIgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBUaG9yc3RlbiBHbGFzZXIgPHRnQG1pcmJzZC5vcmc+CistLS0KKyBpbmNsdWRlL2NvbW1vbi5oICAgICAgICAgICAgICAgICAgICB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQorIGpmZnNYLXV0aWxzL21rZnMuamZmczIuYyAgICAgICAgICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyBsaWIvbGlibXRkLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCisgbWlzYy11dGlscy9mbGFzaF9lcmFzZS5jICAgICAgICAgICAgfCAgNiArKystLS0KKyBtaXNjLXV0aWxzL2ZsYXNoX290cF93cml0ZS5jICAgICAgICB8ICAyICstCisgbWlzYy11dGlscy9mdGxfY2hlY2suYyAgICAgICAgICAgICAgfCAgMiArLQorIG1pc2MtdXRpbHMvbXRkX2RlYnVnLmMgICAgICAgICAgICAgIHwgIDQgKystLQorIG1pc2MtdXRpbHMvc2VydmVfaW1hZ2UuYyAgICAgICAgICAgIHwgIDQgKystLQorIHRlc3RzL2ZzLXRlc3RzL2ludGVncml0eS9pbnRlZ2NrLmMgIHwgIDQgKystLQorIHRlc3RzL210ZC10ZXN0cy9uYW5kcGFnZXRlc3QuYyAgICAgIHwgIDQgKystLQorIHRlc3RzL3ViaS10ZXN0cy9pbnRlZy5jICAgICAgICAgICAgIHwgIDYgKysrLS0tCisgdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9ta2ZzLnViaWZzLmMgfCAgNiArKystLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCA1MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCitpbmRleCBmOGY3MmVhLi42NDJjMjEyIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9jb21tb24uaAorKysrIGIvaW5jbHVkZS9jb21tb24uaAorQEAgLTcwLDI0ICs3MCw2IEBAIGV4dGVybiAiQyIgeworICNkZWZpbmUgT19DTE9FWEVDIDAKKyAjZW5kaWYKKyAKKy0vKiBkZWZpbmUgYSBwcmludCBmb3JtYXQgc3BlY2lmaWVyIGZvciBvZmZfdCAqLworLSNpZiAoU0laRU9GX09GRl9UID49IDgpCistI2RlZmluZSBQUkl4b2ZmX3QgUFJJeDY0CistI2RlZmluZSBQUklkb2ZmX3QgUFJJZDY0CistI2Vsc2UKKy0jZGVmaW5lIFBSSXhvZmZfdCAibCJQUkl4MzIKKy0jZGVmaW5lIFBSSWRvZmZfdCAibCJQUklkMzIKKy0jZW5kaWYKKy0KKy0vKiBkZWZpbmUgYSBwcmludCBmb3JtYXQgc3BlY2lmaWVyIGZvciBsb2ZmX3QgKi8KKy0jaWYgKFNJWkVPRl9MT0ZGX1QgPj0gOCkKKy0jZGVmaW5lIFBSSXhsb2ZmX3QgUFJJeDY0CistI2RlZmluZSBQUklkbG9mZl90IFBSSWQ2NAorLSNlbHNlCistI2RlZmluZSBQUkl4bG9mZl90ICJsIlBSSXgzMgorLSNkZWZpbmUgUFJJZGxvZmZfdCAibCJQUklkMzIKKy0jZW5kaWYKKy0KKyAvKiBWZXJib3NlIG1lc3NhZ2VzICovCisgI2RlZmluZSBiYXJldmVyYm9zZSh2ZXJib3NlLCBmbXQsIC4uLikgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAJaWYgKHZlcmJvc2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkaWZmIC0tZ2l0IGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jIGIvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCitpbmRleCA5YWE2YzM5Li4wNjYxNzg2IDEwMDY0NAorLS0tIGEvamZmc1gtdXRpbHMvbWtmcy5qZmZzMi5jCisrKysgYi9qZmZzWC11dGlscy9ta2ZzLmpmZnMyLmMKK0BAIC0xMjM3LDggKzEyMzcsOCBAQCBzdGF0aWMgdm9pZCByZWN1cnNpdmVfcG9wdWxhdGVfZGlyZWN0b3J5KHN0cnVjdCBmaWxlc3lzdGVtX2VudHJ5ICpkaXIpCisgCQl9IGVsc2Ugc3dpdGNoIChlLT5zYi5zdF9tb2RlICYgU19JRk1UKSB7CisgCQkJY2FzZSBTX0lGRElSOgorIAkJCQlpZiAodmVyYm9zZSkgeworLQkJCQkJcHJpbnRmKCJcdGQgJTA0byAlOSIgUFJJZG9mZl90ICIgICAgICAgICAgICAgJTVkOiUtM2QgJXNcbiIsCistCQkJCQkJCWUtPnNiLnN0X21vZGUgJiB+U19JRk1ULCBlLT5zYi5zdF9zaXplLAorKwkJCQkJcHJpbnRmKCJcdGQgJTA0byAlOWxsZCAgICAgICAgICAgICAlNWQ6JS0zZCAlc1xuIiwKKysJCQkJCQkJZS0+c2Iuc3RfbW9kZSAmIH5TX0lGTVQsIChsb25nIGxvbmcpZS0+c2Iuc3Rfc2l6ZSwKKyAJCQkJCQkJKGludCkgKGUtPnNiLnN0X3VpZCksIChpbnQpIChlLT5zYi5zdF9naWQpLAorIAkJCQkJCQllLT5uYW1lKTsKKyAJCQkJfQorQEAgLTEyNDcsOCArMTI0Nyw4IEBAIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZV9wb3B1bGF0ZV9kaXJlY3Rvcnkoc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKmRpcikKKyAJCQkJYnJlYWs7CisgCQkJY2FzZSBTX0lGU09DSzoKKyAJCQkJaWYgKHZlcmJvc2UpIHsKKy0JCQkJCXByaW50ZigiXHRzICUwNG8gJTkiIFBSSWRvZmZfdCAiICAgICAgICAgICAgICU1ZDolLTNkICVzXG4iLAorLQkJCQkJCQllLT5zYi5zdF9tb2RlICYgflNfSUZNVCwgZS0+c2Iuc3Rfc2l6ZSwKKysJCQkJCXByaW50ZigiXHRzICUwNG8gJTlsbGQgICAgICAgICAgICAgJTVkOiUtM2QgJXNcbiIsCisrCQkJCQkJCWUtPnNiLnN0X21vZGUgJiB+U19JRk1ULCAobG9uZyBsb25nKWUtPnNiLnN0X3NpemUsCisgCQkJCQkJCShpbnQpIGUtPnNiLnN0X3VpZCwgKGludCkgZS0+c2Iuc3RfZ2lkLCBlLT5uYW1lKTsKKyAJCQkJfQorIAkJCQl3cml0ZV9waXBlKGUpOworQEAgLTEyNTYsOCArMTI1Niw4IEBAIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZV9wb3B1bGF0ZV9kaXJlY3Rvcnkoc3RydWN0IGZpbGVzeXN0ZW1fZW50cnkgKmRpcikKKyAJCQkJYnJlYWs7CisgCQkJY2FzZSBTX0lGSUZPOgorIAkJCQlpZiAodmVyYm9zZSkgeworLQkJCQkJcHJpbnRmKCJcdHAgJTA0byAlOSIgUFJJZG9mZl90ICIgICAgICAgICAgICAgJTVkOiUtM2QgJXNcbiIsCistCQkJCQkJCWUtPnNiLnN0X21vZGUgJiB+U19JRk1ULCBlLT5zYi5zdF9zaXplLAorKwkJCQkJcHJpbnRmKCJcdHAgJTA0byAlOWxsZCAgICAgICAgICAgICAlNWQ6JS0zZCAlc1xuIiwKKysJCQkJCQkJZS0+c2Iuc3RfbW9kZSAmIH5TX0lGTVQsIChsb25nIGxvbmcpZS0+c2Iuc3Rfc2l6ZSwKKyAJCQkJCQkJKGludCkgZS0+c2Iuc3RfdWlkLCAoaW50KSBlLT5zYi5zdF9naWQsIGUtPm5hbWUpOworIAkJCQl9CisgCQkJCXdyaXRlX3BpcGUoZSk7CitAQCAtMTI4NSw4ICsxMjg1LDggQEAgc3RhdGljIHZvaWQgcmVjdXJzaXZlX3BvcHVsYXRlX2RpcmVjdG9yeShzdHJ1Y3QgZmlsZXN5c3RlbV9lbnRyeSAqZGlyKQorIAkJCQlicmVhazsKKyAJCQljYXNlIFNfSUZMTks6CisgCQkJCWlmICh2ZXJib3NlKSB7CistCQkJCQlwcmludGYoIlx0bCAlMDRvICU5IiBQUklkb2ZmX3QgIiAgICAgICAgICAgICAlNWQ6JS0zZCAlcyAtPiAlc1xuIiwKKy0JCQkJCQkJZS0+c2Iuc3RfbW9kZSAmIH5TX0lGTVQsIGUtPnNiLnN0X3NpemUsCisrCQkJCQlwcmludGYoIlx0bCAlMDRvICU5bGxkICAgICAgICAgICAgICU1ZDolLTNkICVzIC0+ICVzXG4iLAorKwkJCQkJCQllLT5zYi5zdF9tb2RlICYgflNfSUZNVCwgKGxvbmcgbG9uZyllLT5zYi5zdF9zaXplLAorIAkJCQkJCQkoaW50KSBlLT5zYi5zdF91aWQsIChpbnQpIGUtPnNiLnN0X2dpZCwgZS0+bmFtZSwKKyAJCQkJCQkJZS0+bGluayk7CisgCQkJCX0KK0BAIC0xMjk3LDggKzEyOTcsOCBAQCBzdGF0aWMgdm9pZCByZWN1cnNpdmVfcG9wdWxhdGVfZGlyZWN0b3J5KHN0cnVjdCBmaWxlc3lzdGVtX2VudHJ5ICpkaXIpCisgCQkJCXdyb3RlID0gd3JpdGVfcmVndWxhcl9maWxlKGUpOworIAkJCQl3cml0ZV94YXR0cl9lbnRyeShlKTsKKyAJCQkJaWYgKHZlcmJvc2UpIHsKKy0JCQkJCXByaW50ZigiXHRmICUwNG8gJTkiIFBSSWRvZmZfdCAiICglOXUpICU1ZDolLTNkICVzXG4iLAorLQkJCQkJCQllLT5zYi5zdF9tb2RlICYgflNfSUZNVCwgZS0+c2Iuc3Rfc2l6ZSwgd3JvdGUsCisrCQkJCQlwcmludGYoIlx0ZiAlMDRvICU5bGxkICglOXUpICU1ZDolLTNkICVzXG4iLAorKwkJCQkJCQllLT5zYi5zdF9tb2RlICYgflNfSUZNVCwgKGxvbmcgbG9uZyllLT5zYi5zdF9zaXplLCB3cm90ZSwKKyAJCQkJCQkJKGludCkgZS0+c2Iuc3RfdWlkLCAoaW50KSBlLT5zYi5zdF9naWQsIGUtPm5hbWUpOworIAkJCQl9CisgCQkJCWJyZWFrOworZGlmZiAtLWdpdCBhL2xpYi9saWJtdGQuYyBiL2xpYi9saWJtdGQuYworaW5kZXggODZjODlhZS4uZjM3NTM4MSAxMDA2NDQKKy0tLSBhL2xpYi9saWJtdGQuYworKysrIGIvbGliL2xpYm10ZC5jCitAQCAtMTA3OSw4ICsxMDc5LDggQEAgaW50IG10ZF9yZWFkKGNvbnN0IHN0cnVjdCBtdGRfZGV2X2luZm8gKm10ZCwgaW50IGZkLCBpbnQgZWIsIGludCBvZmZzLAorIAkvKiBTZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVyYXNlYmxvY2sgKi8KKyAJc2VlayA9IChvZmZfdCllYiAqIG10ZC0+ZWJfc2l6ZSArIG9mZnM7CisgCWlmIChsc2VlayhmZCwgc2VlaywgU0VFS19TRVQpICE9IHNlZWspCistCQlyZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICUiUFJJZG9mZl90LAorLQkJCQkgIG10ZC0+bXRkX251bSwgc2Vlayk7CisrCQlyZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICVsbGQiLAorKwkJCQkgIG10ZC0+bXRkX251bSwgKGxvbmcgbG9uZylzZWVrKTsKKyAKKyAJd2hpbGUgKHJkIDwgbGVuKSB7CisgCQlyZXQgPSByZWFkKGZkLCBidWYgKyByZCwgbGVuIC0gcmQpOworQEAgLTExODgsOCArMTE4OCw4IEBAIGludCBtdGRfd3JpdGUobGlibXRkX3QgZGVzYywgY29uc3Qgc3RydWN0IG10ZF9kZXZfaW5mbyAqbXRkLCBpbnQgZmQsIGludCBlYiwKKyAJaWYgKGRhdGEpIHsKKyAJCS8qIFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZXJhc2VibG9jayAqLworIAkJaWYgKGxzZWVrKGZkLCBzZWVrLCBTRUVLX1NFVCkgIT0gc2VlaykKKy0JCQlyZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICUiUFJJZG9mZl90LAorLQkJCQkJbXRkLT5tdGRfbnVtLCBzZWVrKTsKKysJCQlyZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICVsbGQiLAorKwkJCQkJbXRkLT5tdGRfbnVtLCAobG9uZyBsb25nKXNlZWspOworIAkJcmV0ID0gd3JpdGUoZmQsIGRhdGEsIGxlbik7CisgCQlpZiAocmV0ICE9IGxlbikKKyAJCQlyZXR1cm4gc3lzX2Vycm1zZygiY2Fubm90IHdyaXRlICVkIGJ5dGVzIHRvIG10ZCVkICIKK2RpZmYgLS1naXQgYS9taXNjLXV0aWxzL2ZsYXNoX2VyYXNlLmMgYi9taXNjLXV0aWxzL2ZsYXNoX2VyYXNlLmMKK2luZGV4IDBjOTQ0OWYuLmVjNGIyZTEgMTAwNjQ0CistLS0gYS9taXNjLXV0aWxzL2ZsYXNoX2VyYXNlLmMKKysrKyBiL21pc2MtdXRpbHMvZmxhc2hfZXJhc2UuYworQEAgLTUzLDggKzUzLDggQEAgaW50IHRhcmdldF9lbmRpYW4gPSBfX0JZVEVfT1JERVI7Cisgc3RhdGljIHZvaWQgc2hvd19wcm9ncmVzcyhzdHJ1Y3QgbXRkX2Rldl9pbmZvICptdGQsIG9mZl90IHN0YXJ0LCBpbnQgZWIsCisgCQkJICBpbnQgZWJfc3RhcnQsIGludCBlYl9jbnQpCisgeworLQliYXJldmVyYm9zZSghcXVpZXQsICJcckVyYXNpbmcgJWQgS2lieXRlIEAgJSJQUkl4b2ZmX3QiIC0tICUyaSAlJSBjb21wbGV0ZSAiLAorLQkJbXRkLT5lYl9zaXplIC8gMTAyNCwgc3RhcnQsICgoZWIgLSBlYl9zdGFydCkgKiAxMDApIC8gZWJfY250KTsKKysJYmFyZXZlcmJvc2UoIXF1aWV0LCAiXHJFcmFzaW5nICVkIEtpYnl0ZSBAICVsbHggLS0gJTJpICUlIGNvbXBsZXRlICIsCisrCQltdGQtPmViX3NpemUgLyAxMDI0LCAodW5zaWduZWQgbG9uZyBsb25nKXN0YXJ0LCAoKGViIC0gZWJfc3RhcnQpICogMTAwKSAvIGViX2NudCk7CisgCWZmbHVzaChzdGRvdXQpOworIH0KKyAKK0BAIC0yMTAsNyArMjEwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWlmICghbm9za2lwYmFkKSB7CisgCQkJaW50IHJldCA9IG10ZF9pc19iYWQoJm10ZCwgZmQsIGViKTsKKyAJCQlpZiAocmV0ID4gMCkgeworLQkJCQl2ZXJib3NlKCFxdWlldCwgIlNraXBwaW5nIGJhZCBibG9jayBhdCAlMDgiUFJJeG9mZl90LCBvZmZzZXQpOworKwkJCQl2ZXJib3NlKCFxdWlldCwgIlNraXBwaW5nIGJhZCBibG9jayBhdCAlMDhsbHgiLCAodW5zaWduZWQgbG9uZyBsb25nKW9mZnNldCk7CisgCQkJCWNvbnRpbnVlOworIAkJCX0gZWxzZSBpZiAocmV0IDwgMCkgeworIAkJCQlpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkgeworZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvZmxhc2hfb3RwX3dyaXRlLmMgYi9taXNjLXV0aWxzL2ZsYXNoX290cF93cml0ZS5jCitpbmRleCBiMDJkMGIwLi4wNGM5NmM2IDEwMDY0NAorLS0tIGEvbWlzYy11dGlscy9mbGFzaF9vdHBfd3JpdGUuYworKysrIGIvbWlzYy11dGlscy9mbGFzaF9vdHBfd3JpdGUuYworQEAgLTc2LDcgKzc2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQorIAkJcmV0dXJuIGVycm5vOworIAl9CisgCistCXByaW50ZigiV3JpdGluZyBPVFAgdXNlciBkYXRhIG9uICVzIGF0IG9mZnNldCAweCUiUFJJeG9mZl90IlxuIiwgYXJndlsyXSwgb2Zmc2V0KTsKKysJcHJpbnRmKCJXcml0aW5nIE9UUCB1c2VyIGRhdGEgb24gJXMgYXQgb2Zmc2V0IDB4JWxseFxuIiwgYXJndlsyXSwgKHVuc2lnbmVkIGxvbmcgbG9uZylvZmZzZXQpOworIAorIAlpZiAobXRkX3R5cGVfaXNfbmFuZF91c2VyKCZtdGRJbmZvKSkKKyAJCWxlbiA9IG10ZEluZm8ud3JpdGVzaXplOworZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvZnRsX2NoZWNrLmMgYi9taXNjLXV0aWxzL2Z0bF9jaGVjay5jCitpbmRleCBhODUzY2Y0Li5lODU0OTIyIDEwMDY0NAorLS0tIGEvbWlzYy11dGlscy9mdGxfY2hlY2suYworKysrIGIvbWlzYy11dGlscy9mdGxfY2hlY2suYworQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19wYXJ0aXRpb24oaW50IGZkKQorIAkJCXBlcnJvcigicmVhZCBmYWlsZWQiKTsKKyAJCQlicmVhazsKKyAJCX0KKy0JCXByaW50ZigiXG5FcmFzZSB1bml0ICUiUFJJZG9mZl90IjpcbiIsIGkpOworKwkJcHJpbnRmKCJcbkVyYXNlIHVuaXQgJWxsZDpcbiIsIChsb25nIGxvbmcpaSk7CisgCQlpZiAoKGhkcjIuRm9ybWF0dGVkU2l6ZSAhPSBoZHIuRm9ybWF0dGVkU2l6ZSkgfHwKKyAJCQkJKGhkcjIuTnVtRXJhc2VVbml0cyAhPSBoZHIuTnVtRXJhc2VVbml0cykgfHwKKyAJCQkJKGhkcjIuU2VyaWFsTnVtYmVyICE9IGhkci5TZXJpYWxOdW1iZXIpKQorZGlmZiAtLWdpdCBhL21pc2MtdXRpbHMvbXRkX2RlYnVnLmMgYi9taXNjLXV0aWxzL210ZF9kZWJ1Zy5jCitpbmRleCBhYzM3ZTIzLi5kNjVhZDM2IDEwMDY0NAorLS0tIGEvbWlzYy11dGlscy9tdGRfZGVidWcuYworKysrIGIvbWlzYy11dGlscy9tdGRfZGVidWcuYworQEAgLTE2MCw3ICsxNjAsNyBAQCByZXRyeToKKyAJaWYgKGJ1ZiAhPSBOVUxMKQorIAkJZnJlZShidWYpOworIAljbG9zZShvdXRmZCk7CistCXByaW50ZigiQ29waWVkICV6dSBieXRlcyBmcm9tIGFkZHJlc3MgMHglLjgiUFJJeG9mZl90IiBpbiBmbGFzaCB0byAlc1xuIiwgbGVuLCBvZmZzZXQsIGZpbGVuYW1lKTsKKysJcHJpbnRmKCJDb3BpZWQgJXp1IGJ5dGVzIGZyb20gYWRkcmVzcyAweCUuOGxseCBpbiBmbGFzaCB0byAlc1xuIiwgbGVuLCAodW5zaWduZWQgbG9uZyBsb25nKW9mZnNldCwgZmlsZW5hbWUpOworIAlyZXR1cm4gMDsKKyAKKyBlcnIyOgorQEAgLTIyNSw3ICsyMjUsNyBAQCByZXRyeToKKyAJaWYgKGJ1ZiAhPSBOVUxMKQorIAkJZnJlZShidWYpOworIAlmY2xvc2UoZnApOworLQlwcmludGYoIkNvcGllZCAlZCBieXRlcyBmcm9tICVzIHRvIGFkZHJlc3MgMHglLjgiUFJJeG9mZl90IiBpbiBmbGFzaFxuIiwgbGVuLCBmaWxlbmFtZSwgb2Zmc2V0KTsKKysJcHJpbnRmKCJDb3BpZWQgJWQgYnl0ZXMgZnJvbSAlcyB0byBhZGRyZXNzIDB4JS44bGx4IGluIGZsYXNoXG4iLCBsZW4sIGZpbGVuYW1lLCAodW5zaWduZWQgbG9uZyBsb25nKW9mZnNldCk7CisgCXJldHVybiAwOworIH0KKyAKK2RpZmYgLS1naXQgYS9taXNjLXV0aWxzL3NlcnZlX2ltYWdlLmMgYi9taXNjLXV0aWxzL3NlcnZlX2ltYWdlLmMKK2luZGV4IGYyNDc1ZDYuLjZjOGM4ZmIgMTAwNjQ0CistLS0gYS9taXNjLXV0aWxzL3NlcnZlX2ltYWdlLmMKKysrKyBiL21pc2MtdXRpbHMvc2VydmVfaW1hZ2UuYworQEAgLTEyOSw4ICsxMjksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCX0KKyAKKyAJaWYgKHN0LnN0X3NpemUgJSBlcmFzZXNpemUpIHsKKy0JCWZwcmludGYoc3RkZXJyLCAiSW1hZ2Ugc2l6ZSAlIiBQUklkb2ZmX3QgIiBieXRlcyBpcyBub3QgYSBtdWx0aXBsZSBvZiBlcmFzZXNpemUgJWQgYnl0ZXNcbiIsCistCQkJCXN0LnN0X3NpemUsIGVyYXNlc2l6ZSk7CisrCQlmcHJpbnRmKHN0ZGVyciwgIkltYWdlIHNpemUgJWxsZCBieXRlcyBpcyBub3QgYSBtdWx0aXBsZSBvZiBlcmFzZXNpemUgJWQgYnl0ZXNcbiIsCisrCQkJCShsb25nIGxvbmcpc3Quc3Rfc2l6ZSwgZXJhc2VzaXplKTsKKyAJCWV4aXQoMSk7CisgCX0KKyAJaW1hZ2UgPSBtbWFwKE5VTEwsIHN0LnN0X3NpemUsIFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIHJmZCwgMCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvZnMtdGVzdHMvaW50ZWdyaXR5L2ludGVnY2suYyBiL3Rlc3RzL2ZzLXRlc3RzL2ludGVncml0eS9pbnRlZ2NrLmMKK2luZGV4IDg0NzUzZDYuLjBhN2YxNDIgMTAwNjQ0CistLS0gYS90ZXN0cy9mcy10ZXN0cy9pbnRlZ3JpdHkvaW50ZWdjay5jCisrKysgYi90ZXN0cy9mcy10ZXN0cy9pbnRlZ3JpdHkvaW50ZWdjay5jCitAQCAtODk3LDggKzg5Nyw4IEBAIHN0YXRpYyBzc2l6ZV90IGZpbGVfd3JpdGVfZGF0YShzdHJ1Y3QgZmlsZV9pbmZvICpmaWxlLCBpbnQgZmQsIG9mZl90IG9mZnNldCwKKyAJcmVtYWlucyA9IHNpemU7CisgCWFjdHVhbCA9IDA7CisgCXdyaXR0ZW4gPSBJT19CVUZGRVJfU0laRTsKKy0Jdigid3JpdGUgJXpkIGJ5dGVzLCBvZmZzZXQgJSJQUklkb2ZmX3QiLCBmaWxlICVzIiwKKy0JICBzaXplLCBvZmZzZXQsIGdldF9maWxlX25hbWUoZmlsZSkpOworKwl2KCJ3cml0ZSAlemQgYnl0ZXMsIG9mZnNldCAlbGxkLCBmaWxlICVzIiwKKysJICBzaXplLCAobG9uZyBsb25nKW9mZnNldCwgZ2V0X2ZpbGVfbmFtZShmaWxlKSk7CisgCXdoaWxlIChyZW1haW5zKSB7CisgCQkvKiBGaWxsIHVwIGJ1ZmZlciB3aXRoIHJhbmRvbSBkYXRhICovCisgCQlpZiAod3JpdHRlbiA8IElPX0JVRkZFUl9TSVpFKSB7CitkaWZmIC0tZ2l0IGEvdGVzdHMvbXRkLXRlc3RzL25hbmRwYWdldGVzdC5jIGIvdGVzdHMvbXRkLXRlc3RzL25hbmRwYWdldGVzdC5jCitpbmRleCBjNjgxMmRmLi40NjVlNTQ4IDEwMDY0NAorLS0tIGEvdGVzdHMvbXRkLXRlc3RzL25hbmRwYWdldGVzdC5jCisrKysgYi90ZXN0cy9tdGQtdGVzdHMvbmFuZHBhZ2V0ZXN0LmMKK0BAIC0yMzIsOCArMjMyLDggQEAgc3RhdGljIGludCB2ZXJpZnlfZXJhc2VibG9jayhpbnQgZWJudW0pCisgCQkJcmV0dXJuIGVycjsKKyAKKyAJCWlmIChsc2VlayhmZCwgYWRkciwgU0VFS19TRVQpICE9IGFkZHIpIHsKKy0JCQlmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBzZWVrIG10ZCVkIHRvIG9mZnNldCAlIlBSSWRsb2ZmX3QsCistCSAJCQkJbXRkLm10ZF9udW0sIGFkZHIpOworKwkJCWZwcmludGYoc3RkZXJyLCAiY2Fubm90IHNlZWsgbXRkJWQgdG8gb2Zmc2V0ICVsbGQiLAorKwkgCQkJCW10ZC5tdGRfbnVtLCAobG9uZyBsb25nKWFkZHIpOworIAkJCXJldHVybiAtMTsKKyAJCX0KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy91YmktdGVzdHMvaW50ZWcuYyBiL3Rlc3RzL3ViaS10ZXN0cy9pbnRlZy5jCitpbmRleCAyNmMyY2U1Li4xY2QwNjQ5IDEwMDY0NAorLS0tIGEvdGVzdHMvdWJpLXRlc3RzL2ludGVnLmMKKysrKyBiL3Rlc3RzL3ViaS10ZXN0cy9pbnRlZy5jCitAQCAtMjQzLDcgKzI0Myw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2VyYXNlX2Jsb2NrKHN0cnVjdCBlcmFzZV9ibG9ja19pbmZvICplcmFzZV9ibG9jaywgaW50IGZkKQorIAkJCXdoaWxlIChzaXplKQorIAkJCQlpZiAocmVhZF9idWZmZXJbLS1zaXplXSAhPSAweGZmKSB7CisgCQkJCQlmcHJpbnRmKHN0ZGVyciwgImJsb2NrIG5vLiA9ICVkXG4iICwgZXJhc2VfYmxvY2stPmJsb2NrX251bWJlcik7CistCQkJCQlmcHJpbnRmKHN0ZGVyciwgIm9mZnNldCA9ICUiUFJJZG9mZl90IlxuIiAsIGdhcF9zdGFydCk7CisrCQkJCQlmcHJpbnRmKHN0ZGVyciwgIm9mZnNldCA9ICVsbGRcbiIgLCAobG9uZyBsb25nKWdhcF9zdGFydCk7CisgCQkJCQlmcHJpbnRmKHN0ZGVyciwgInNpemUgPSAlbGRcbiIgLCAobG9uZykgYnl0ZXNfcmVhZCk7CisgCQkJCQllcnJvcl9leGl0KCJ2ZXJpZnkgMHhmZiBmYWlsZWQiKTsKKyAJCQkJfQorQEAgLTI1NCw3ICsyNTQsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19lcmFzZV9ibG9jayhzdHJ1Y3QgZXJhc2VfYmxvY2tfaW5mbyAqZXJhc2VfYmxvY2ssIGludCBmZCkKKyAJCWVycm5vID0gMDsKKyAJCWJ5dGVzX3JlYWQgPSByZWFkKGZkLCByZWFkX2J1ZmZlciwgdy0+c2l6ZSk7CisgCQlpZiAoYnl0ZXNfcmVhZCAhPSB3LT5zaXplKSB7CistCQkJZnByaW50ZihzdGRlcnIsICJvZmZzZXQgPSAlIlBSSWRvZmZfdCJcbiIgLCB3LT5vZmZzZXQpOworKwkJCWZwcmludGYoc3RkZXJyLCAib2Zmc2V0ID0gJWxsZFxuIiAsIChsb25nIGxvbmcpdy0+b2Zmc2V0KTsKKyAJCQlmcHJpbnRmKHN0ZGVyciwgInNpemUgPSAlbGRcbiIgLCAobG9uZykgdy0+c2l6ZSk7CisgCQkJZnByaW50ZihzdGRlcnIsICJieXRlc19yZWFkID0gJWxkXG4iICwgKGxvbmcpIGJ5dGVzX3JlYWQpOworIAkJCWVycm9yX2V4aXQoInJlYWQgZmFpbGVkIik7CitAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2VyYXNlX2Jsb2NrKHN0cnVjdCBlcmFzZV9ibG9ja19pbmZvICplcmFzZV9ibG9jaywgaW50IGZkKQorIAkJd2hpbGUgKHNpemUpCisgCQkJaWYgKHJlYWRfYnVmZmVyWy0tc2l6ZV0gIT0gMHhmZikgeworIAkJCQlmcHJpbnRmKHN0ZGVyciwgImJsb2NrIG5vLiA9ICVkXG4iICwgZXJhc2VfYmxvY2stPmJsb2NrX251bWJlcik7CistCQkJCWZwcmludGYoc3RkZXJyLCAib2Zmc2V0ID0gJSJQUklkb2ZmX3QiXG4iICwgZ2FwX3N0YXJ0KTsKKysJCQkJZnByaW50ZihzdGRlcnIsICJvZmZzZXQgPSAlbGxkXG4iICwgKGxvbmcgbG9uZylnYXBfc3RhcnQpOworIAkJCQlmcHJpbnRmKHN0ZGVyciwgInNpemUgPSAlbGRcbiIgLCAobG9uZykgYnl0ZXNfcmVhZCk7CisgCQkJCWVycm9yX2V4aXQoInZlcmlmeSAweGZmIGZhaWxlZCEiKTsKKyAJCQl9CitkaWZmIC0tZ2l0IGEvdWJpZnMtdXRpbHMvbWtmcy51Ymlmcy9ta2ZzLnViaWZzLmMgYi91Ymlmcy11dGlscy9ta2ZzLnViaWZzL21rZnMudWJpZnMuYworaW5kZXggYzkxNmY0OC4uZjAyMzdhYiAxMDA2NDQKKy0tLSBhL3ViaWZzLXV0aWxzL21rZnMudWJpZnMvbWtmcy51Ymlmcy5jCisrKysgYi91Ymlmcy11dGlscy9ta2ZzLnViaWZzL21rZnMudWJpZnMuYworQEAgLTc3MiwxMSArNzcyLDExIEBAIGludCB3cml0ZV9sZWIoaW50IGxudW0sIGludCBsZW4sIHZvaWQgKmJ1ZikKKyAJCQlyZXR1cm4gc3lzX2Vycl9tc2coInViaV9sZWJfY2hhbmdlX3N0YXJ0IGZhaWxlZCIpOworIAorIAlpZiAobHNlZWsob3V0X2ZkLCBwb3MsIFNFRUtfU0VUKSAhPSBwb3MpCistCQlyZXR1cm4gc3lzX2Vycl9tc2coImxzZWVrIGZhaWxlZCBzZWVraW5nICUiUFJJZG9mZl90LCBwb3MpOworKwkJcmV0dXJuIHN5c19lcnJfbXNnKCJsc2VlayBmYWlsZWQgc2Vla2luZyAlbGxkIiwgKGxvbmcgbG9uZylwb3MpOworIAorIAlpZiAod3JpdGUob3V0X2ZkLCBidWYsIGMtPmxlYl9zaXplKSAhPSBjLT5sZWJfc2l6ZSkKKy0JCXJldHVybiBzeXNfZXJyX21zZygid3JpdGUgZmFpbGVkIHdyaXRpbmcgJWQgYnl0ZXMgYXQgcG9zICUiUFJJZG9mZl90LAorLQkJCQkgICBjLT5sZWJfc2l6ZSwgcG9zKTsKKysJCXJldHVybiBzeXNfZXJyX21zZygid3JpdGUgZmFpbGVkIHdyaXRpbmcgJWQgYnl0ZXMgYXQgcG9zICVsbGQiLAorKwkJCQkgICBjLT5sZWJfc2l6ZSwgKGxvbmcgbG9uZylwb3MpOworIAorIAlyZXR1cm4gMDsKKyB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDAzLU1ha2VmaWxlLmFtLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTIuMC4yLzAwMDMtTWFrZWZpbGUuYW0tb25seS1idWlsZC11YmktdXRpbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhhYjdhOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDAzLU1ha2VmaWxlLmFtLW9ubHktYnVpbGQtdWJpLXV0aWxzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMTM5ZDkzYmM0MDUyNzJhMzI2MWQ1N2JlMjZkYTg0MmU3MzdmZTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjggSmFuIDIwMTggMjM6MTA6MzQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IG9ubHkgYnVpbGQgdWJpLXV0aWxzCisKK1dlIG9ubHkgdGFyZ2V0IHRoZSB1YmktdXRpbHMsIHN0YXRpYywgc21hbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNWE2ZTc3Yy4uOTg3MTVkZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTM0LDkgKzM0LDkgQEAgRVhUUkFfRElTVCArPSAkKEdMT0JBTF9IRUFERVIpICQoR0xPQkFMX0VYVFJBKQorIAorIGluY2x1ZGUgbGliL01ha2Vtb2R1bGUuYW0KKyBpbmNsdWRlIHViaS11dGlscy9NYWtlbW9kdWxlLmFtCistaW5jbHVkZSBtaXNjLXV0aWxzL01ha2Vtb2R1bGUuYW0KKy1pbmNsdWRlIG5hbmQtdXRpbHMvTWFrZW1vZHVsZS5hbQorLWluY2x1ZGUgbm9yLXV0aWxzL01ha2Vtb2R1bGUuYW0KKysjaW5jbHVkZSBtaXNjLXV0aWxzL01ha2Vtb2R1bGUuYW0KKysjaW5jbHVkZSBuYW5kLXV0aWxzL01ha2Vtb2R1bGUuYW0KKysjaW5jbHVkZSBub3ItdXRpbHMvTWFrZW1vZHVsZS5hbQorIAorIGlmIEJVSUxEX1VCSUZTCisgaW5jbHVkZSB1Ymlmcy11dGlscy9NYWtlbW9kdWxlLmFtCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDA0LW10ZC11dGlscy1jb21tb24uaC1uby1mZWF0dXJlcy5oLWZvci1rbGliYy1idWlsZHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMi4wLjIvMDAwNC1tdGQtdXRpbHMtY29tbW9uLmgtbm8tZmVhdHVyZXMuaC1mb3Ita2xpYmMtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NDRhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmMtMi4wLjIvMDAwNC1tdGQtdXRpbHMtY29tbW9uLmgtbm8tZmVhdHVyZXMuaC1mb3Ita2xpYmMtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYWUxY2Y2ZDBlYjE4MzNlNDY1NDkzMjhhNDQ3MzIyMmMyNTk3MjNkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMSBGZWIgMjAxOCAwMDoyNTowMCArMDEwMAorU3ViamVjdDogW1BBVENIXSBtdGQtdXRpbHM6IGNvbW1vbi5oOiBubyBmZWF0dXJlcy5oIGZvciBrbGliYyBidWlsZHMKKworQWRkIGd1YXJkIGFyb3VuZCBmZWF0dXJlcy5oIHRvIGZpeCBtaXNzaW5nIGluY2x1ZGUgKGhlcmUgZmlyc3QgZXJyb3IpOgorCisgLi4vZ2l0L2luY2x1ZGUvY29tbW9uLmg6Mjk6MTA6CisgZmF0YWwgZXJyb3I6IGZlYXR1cmVzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyAgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgICAgICAgICAgIF5+fn5+fn5+fn5+fgorIGNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS9jb21tb24uaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24uaCBiL2luY2x1ZGUvY29tbW9uLmgKK2luZGV4IDY0MmMyMTIuLmY3YzcxZmUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NvbW1vbi5oCisrKysgYi9pbmNsdWRlL2NvbW1vbi5oCitAQCAtMjYsNyArMjYsMTAgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2lmIGRlZmluZWQoX19LTElCQ19fKQorKyNlbHNlCisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisrI2VuZGlmCisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDA1LWNvbW1vbi5oLXJlcGxhY2UtZ2V0bGluZS13aXRoLWZnZXRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjLTIuMC4yLzAwMDUtY29tbW9uLmgtcmVwbGFjZS1nZXRsaW5lLXdpdGgtZmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU1NmVkMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliYy0yLjAuMi8wMDA1LWNvbW1vbi5oLXJlcGxhY2UtZ2V0bGluZS13aXRoLWZnZXRzLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMjEzN2ViMWE2Y2QwMzI2NTEwYmQzYjlmYWY4MDM3ZDliZjM0Y2EzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgTWF5IDIwMTggMTU6NTI6MzQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbW9uLmg6IHJlcGxhY2UgZ2V0bGluZSgpIHdpdGggZmdldHMKKworVGhlcmUgaXMgYW4gdW5vZmZpY2lhbCB1cHN0cmVhbSBwYXRjaCBhZGRpbmcgYSBzaW1wbGUgZ2V0bGluZSgpCit0byBsaWJtaXNzaW5nLmguIFVuZm9ydHVuYXRlbHkgdGhlIHBhdGNoIGNyZWF0ZXMgaXNzdWVzIGlmIHRoZQordG9vbGNoYWluIGlzIHVzaW5nIGdsaWJjIChhdXRvdG9vbHMgY2FjaGU/KSBzbyBmb3IgdGhlIG1vbWVudAora2VlcCB0aGUgb2xkIGhhY2sgYW5kIHdhaXQgZm9yIGNvbW1pdHMgdXBzdHJlYW0uCisKK0ZpeDoKKworfCB1YmktdXRpbHMvdWJpZm9ybWF0Lm86IEluIGZ1bmN0aW9uIGBwcm9tcHQuY29uc3Rwcm9wLjQnOgorfCB1Ymlmb3JtYXQuYzooLnRleHQrMHg3MCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGxpbmUnCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBba2xpYmMgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIGluY2x1ZGUvY29tbW9uLmggfCAxMSArKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2NvbW1vbi5oIGIvaW5jbHVkZS9jb21tb24uaAoraW5kZXggYTFkNTlkMC4uOTZiMGJkYiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvY29tbW9uLmgKKysrKyBiL2luY2x1ZGUvY29tbW9uLmgKK0BAIC0xMjYsMTUgKzEyNiwyNiBAQCBleHRlcm4gIkMiIHsKKyAgKi8KKyBzdGF0aWMgaW5saW5lIGJvb2wgcHJvbXB0KGNvbnN0IGNoYXIgKm1zZywgYm9vbCBkZWYpCisgeworKworKyNpZm5kZWYgX19LTElCQ19fCisgCWNoYXIgKmxpbmUgPSBOVUxMOworIAlzaXplX3QgbGVuOworKyNlbHNlCisrCWNoYXIgKmxpbmU7CisrCWNvbnN0IGludCBzaXplb2ZfbGluZSA9IDI7CisrCWxpbmUgPSBtYWxsb2Moc2l6ZW9mX2xpbmUpOworKyNlbmRpZgorIAlib29sIHJldCA9IGRlZjsKKyAKKyAJZG8geworIAkJbm9ybXNnX2NvbnQoIiVzICglYy8lYykgIiwgbXNnLCBkZWYgPyAnWScgOiAneScsIGRlZiA/ICduJyA6ICdOJyk7CisgCQlmZmx1c2goc3Rkb3V0KTsKKyAKKysjaWZuZGVmIF9fS0xJQkNfXworIAkJd2hpbGUgKGdldGxpbmUoJmxpbmUsICZsZW4sIHN0ZGluKSA9PSAtMSkgeworKyNlbHNlCisrCQl3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mX2xpbmUsIHN0ZGluKSA9PSBOVUxMKSB7CisrI2VuZGlmCisgCQkJcHJpbnRmKCJmYWlsZWQgdG8gcmVhZCBwcm9tcHQ7IGFzc3VtaW5nICclcydcbiIsCisgCQkJCWRlZiA/ICJ5ZXMiIDogIm5vIik7CisgCQkJYnJlYWs7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMvbXRkL3ViaS11dGlscy1rbGliY18xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJiMGQ0Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlVCSSB1dGlscyBzdGF0aWNhbGx5IGNvbXBpbGVkIGFnYWluc3Qga2xpYmMiCi1ERVNDUklQVElPTiA9ICJTbWFsbCBzaXplZCB0b29scyBmcm9tIG10ZC11dGlscyBmb3IgdXNlIHdpdGggaW5pdHJhbWZzLiIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAiemxpYiBsem8gZTJmc3Byb2dzIHV0aWwtbGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9jb21tb24uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1iYTA1YjA3OTEyYTQ0ZWEyYmY4MWNlNDA5MzgwMDQ5YyIKLQotaW5oZXJpdCBrbGliYwotCi1TUkNSRVYgPSAiYWVhMzY0MTcwNjdkYWRlNzUxOTJiYWZhMDNhZjcwYjZlYjI2NzdiMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtdWJpLXV0aWxzLW9ubHkucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW1vbi5tay1mb3Ita2xpYmMtQ0MtaXMta2xjYy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDMtbGlidWJpLmMtYWRkLWtsaWJjLXNwZWNpZmljLWZpeGVzLWZvci1pb2N0bC5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDQtUmVzdG9yZS1jb21wYXRpYmlsaXR5LXRvLWRpZXRsaWJjLWtsaWJjLW11c2wtbGliYy1hZi5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDUtY29tbW9uLmgtbW9yZS13b3JrYXJvdW5kcy1mb3Ita2xpYmMtY29tcGF0aWJpbGl0eS5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDYtbGliaW5pcGFyc2VyLXJlbW92ZS11bnVzZWQtZnVuY3Rpb24tbmVlZGluZy1mbG9hdC5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDctbXRkLXV0aWxzLWNvbW1vbi5jLWNvbnZlcnQtdG8taW50ZWdlci1hcml0aG1ldGljLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwOC11YmktdXRpbHMtdWJpZm9ybWF0LmMtY29udmVydC10by1pbnRlZ2VyLWFyaXRobWV0aWMucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUVsaW1pbmF0ZS13YXJuaW5ncy1hYm91dC1pbXBsaWNpdC1ub24tY29uc3QtY2FzdGluZy0ucGF0Y2ggXAotICAgICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdC8iCi0KLUVYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdSQU5MSUI9JHtSQU5MSUJ9JyAnQVI9JHtBUn0nICdDRkxBR1M9JHtDRkxBR1N9IC1JJHtTfWluY2x1ZGUgLURXSVRIT1VUX1hBVFRSJyAnQlVJTERESVI9JHtTfSciCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9Ci19Ci0KLVBBQ0tBR0VTID0gInViaS11dGlscy1rbGliYy1kYmciCi0KLVBBQ0tBR0VTID0rICJtdGRpbmZvLWtsaWJjIHViaWF0dGFjaC1rbGliYyB1YmlibG9jay1rbGliYyB1YmljcmMzMi1rbGliYyB1YmlkZXRhY2gta2xpYmMgXAotICAgICAgICAgICAgIHViaWZvcm1hdC1rbGliYyB1Ymlta3ZvbC1rbGliYyB1YmluZm8ta2xpYmMgdWJpbml6ZS1rbGliYyB1YmlyZW5hbWUta2xpYmMgXAotICAgICAgICAgICAgIHViaXJtdm9sLWtsaWJjIHViaXJzdm9sLWtsaWJjIHViaXVwZGF0ZXZvbC1rbGliYyIKLQotRklMRVNfbXRkaW5mby1rbGliYyA9ICIke3NiaW5kaXJ9L210ZGluZm8iCi1GSUxFU191YmlhdHRhY2gta2xpYmMgPSAiJHtzYmluZGlyfS91YmlhdHRhY2giCi1GSUxFU191YmlibG9jay1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWJsb2NrIgotRklMRVNfdWJpY3JjMzIta2xpYmMgPSAiJHtzYmluZGlyfS91YmljcmMzMiIKLUZJTEVTX3ViaWRldGFjaC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWRldGFjaCIKLUZJTEVTX3ViaWZvcm1hdC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWZvcm1hdCIKLUZJTEVTX3ViaW1rdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbWt2b2wiCi1GSUxFU191YmluZm8ta2xpYmMgPSAiJHtzYmluZGlyfS91YmluZm8iCi1GSUxFU191YmluaXplLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpbml6ZSIKLUZJTEVTX3ViaXJlbmFtZS1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJlbmFtZSIKLUZJTEVTX3ViaXJtdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcm12b2wiCi1GSUxFU191Ymlyc3ZvbC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaXJzdm9sIgotRklMRVNfdWJpdXBkYXRldm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpdXBkYXRldm9sIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzIuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1kZXZ0b29scy9tdGQvdWJpLXV0aWxzLWtsaWJjXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NzVjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL210ZC91YmktdXRpbHMta2xpYmNfMi4wLjIuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJVQkkgdXRpbHMgc3RhdGljYWxseSBjb21waWxlZCBhZ2FpbnN0IGtsaWJjIgorREVTQ1JJUFRJT04gPSAiU21hbGwgc2l6ZWQgdG9vbHMgZnJvbSBtdGQtdXRpbHMgZm9yIHVzZSB3aXRoIGluaXRyYW1mcy4iCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInpsaWIgbHpvIGUyZnNwcm9ncyB1dGlsLWxpbnV4IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvY29tbW9uLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9YmEwNWIwNzkxMmE0NGVhMmJmODFjZTQwOTM4MDA0OWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBrbGliYworCitTUkNSRVYgPSAiNjRmNjFhOWRjNzFiMTU4YzcwODQwMDZjYmNlNGVhMjM4ODZmMGI0NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDEtbGlibWlzc2luZy5oLWZpeC1rbGliYy1idWlsZC13aGVuLXVzaW5nLWdsaWJjLXRvb2xjaC5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDItSW5zdGVhZC1vZi1kb2luZy1wcmVwcm9jZXNzb3ItbWFnaWMtanVzdC1vdXRwdXQtb2ZmXy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDMtTWFrZWZpbGUuYW0tb25seS1idWlsZC11YmktdXRpbHMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LW10ZC11dGlscy1jb21tb24uaC1uby1mZWF0dXJlcy5oLWZvci1rbGliYy1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbW1vbi5oLXJlcGxhY2UtZ2V0bGluZS13aXRoLWZnZXRzLnBhdGNoIFwKKyAgICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS10ZXN0cyAtLXdpdGhvdXQtamZmcyAtLXdpdGhvdXQtdWJpZnMiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLCxhY2wsIgorCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnUkFOTElCPSR7UkFOTElCfScgJ0FSPSR7QVJ9JyAnQ0ZMQUdTPSR7Q0ZMQUdTfSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4YXR0cicsICcnLCAnLURXSVRIT1VUX1hBVFRSJywgZCl9IC1JJHtTfS9pbmNsdWRlJyAnQlVJTERESVI9JHtTfSciCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gU0JJTkRJUj0ke3NiaW5kaXJ9IE1BTkRJUj0ke21hbmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9Cit9CisKK1BBQ0tBR0VTID0gInViaS11dGlscy1rbGliYy1kYmcgdWJpLXV0aWxzLWtsaWJjLWRvYyIKKworUEFDS0FHRVMgPSsgIm10ZGluZm8ta2xpYmMgdWJpYXR0YWNoLWtsaWJjIHViaWJsb2NrLWtsaWJjIHViaWNyYzMyLWtsaWJjIHViaWRldGFjaC1rbGliYyBcCisgICAgICAgICAgICAgdWJpZm9ybWF0LWtsaWJjIHViaW1rdm9sLWtsaWJjIHViaW5mby1rbGliYyB1YmluaXplLWtsaWJjIHViaXJlbmFtZS1rbGliYyBcCisgICAgICAgICAgICAgdWJpcm12b2wta2xpYmMgdWJpcnN2b2wta2xpYmMgdWJpdXBkYXRldm9sLWtsaWJjIgorCitGSUxFU19tdGRpbmZvLWtsaWJjID0gIiR7c2JpbmRpcn0vbXRkaW5mbyIKK0ZJTEVTX3ViaWF0dGFjaC1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWF0dGFjaCIKK0ZJTEVTX3ViaWJsb2NrLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpYmxvY2siCitGSUxFU191YmljcmMzMi1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaWNyYzMyIgorRklMRVNfdWJpZGV0YWNoLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpZGV0YWNoIgorRklMRVNfdWJpZm9ybWF0LWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpZm9ybWF0IgorRklMRVNfdWJpbWt2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Ymlta3ZvbCIKK0ZJTEVTX3ViaW5mby1rbGliYyA9ICIke3NiaW5kaXJ9L3ViaW5mbyIKK0ZJTEVTX3ViaW5pemUta2xpYmMgPSAiJHtzYmluZGlyfS91YmluaXplIgorRklMRVNfdWJpcmVuYW1lLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcmVuYW1lIgorRklMRVNfdWJpcm12b2wta2xpYmMgPSAiJHtzYmluZGlyfS91YmlybXZvbCIKK0ZJTEVTX3ViaXJzdm9sLWtsaWJjID0gIiR7c2JpbmRpcn0vdWJpcnN2b2wiCitGSUxFU191Yml1cGRhdGV2b2wta2xpYmMgPSAiJHtzYmluZGlyfS91Yml1cGRhdGV2b2wiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi8wMDAxLUFkanVzdC10aGUtb3JkZXItb2YtaGVhZGVycy10by1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi8wMDAxLUFkanVzdC10aGUtb3JkZXItb2YtaGVhZGVycy10by1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NjAwYjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvMDAwMS1BZGp1c3QtdGhlLW9yZGVyLW9mLWhlYWRlcnMtdG8tZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA4NmI5NjJlN2MwZGU0M2IyMGI2MjEwZDA1OWU0ODU1Y2U4NzA3OGJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTY6MjA6MDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRqdXN0IHRoZSBvcmRlciBvZiBoZWFkZXJzIHRvIGZpeCBidWlsZCBmb3IgbXVzbAotCi1GaXhlcwota2V4ZWMvaWZkb3duLmM6MzM6MTY6IGVycm9yOiBzdG9yYWdlIHNpemUgb2YgJ2lmYycgaXNuJ3Qga25vd24KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGtleGVjL2lmZG93bi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEva2V4ZWMvaWZkb3duLmMgYi9rZXhlYy9pZmRvd24uYwotaW5kZXggMjIxNTc5OC4uZTEzZjc3NyAxMDA2NDQKLS0tLSBhL2tleGVjL2lmZG93bi5jCi0rKysgYi9rZXhlYy9pZmRvd24uYwotQEAgLTE2LDggKzE2LDggQEAgY2hhciAqdl9pZmRvd24gPSAiQCgjKWlmZG93bi5jICAxLjExICAwMi1KdW4tMTk5OCAgbWlxdWVsc0BjaXN0cm9uLm5sIjsKLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLS0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSsjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gCi0gI2RlZmluZSBNQVhfSUZTCTY0Ci0gCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9hcm1fY3Jhc2hkdW1wLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvYXJtX2NyYXNoZHVtcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZmNjFlNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9hcm1fY3Jhc2hkdW1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIGEva2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jCi0rKysgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KLSAgKi8KLS0jaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZWxmLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9jZmxhZ3Nfc3RhdGljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvY2ZsYWdzX3N0YXRpYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUxMDBhMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9jZmxhZ3Nfc3RhdGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNDYsNyArNDYsNyBAQAotICMgd2hlcmUgbmVjZXNzYXJ5LgotIENQUEZMQUdTCT0gQENQUEZMQUdTQCAtSSQoc3JjZGlyKS9pbmNsdWRlIC1JJChzcmNkaXIpL3V0aWxfbGliL2luY2x1ZGUgXAotCQkJLUlpbmNsdWRlLwotLUNGTEFHUwkJPSBAQ0ZMQUdTQCAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzCi0rQ0ZMQUdTCQk9IEBDRkxBR1NAIC1zdGF0aWMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcwotIFBVUkdBVE9SWV9FWFRSQV9DRkxBR1MgPSBAUFVSR0FUT1JZX0VYVFJBX0NGTEFHU0AKLSBBU0ZMQUdTCQk9IEBBU0ZMQUdTQAotIExERkxBR1MJCT0gQExERkxBR1NACmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYmIyNGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAzNzczNzUyNzcyNWU0NjU4MzNiZTY0OTEwMWM0YTZmODM1MmM1ZDVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVHlsZXIgSGFsbCA8dHlsZXJ3aGFsbEBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDcgRmViIDIwMTIgMTg6NTA6MDUgLTA1MDAKLVN1YmplY3Q6IEZpeCBvdXQtb2YtdHJlZSBidWlsZAotCi1Vc2UgYXV0b21hdGljIHZhcmlhYmxlcyBmb3IgcHJlcmVxdWlzaXRlcyB3aGVuIGNvcHlpbmcgbWFuIHBhZ2VzIGFuZAotaW5jbHVkZSBhIG1ha2VmaWxlIHJlbGF0aXZlIHRvICQoc3JjZGlyKS4KLQotQmFja3BvcnRlZCB0byAyLjAuMi1rbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBUeWxlciBIYWxsIDx0eWxlcndoYWxsQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNpbW9uIEhvcm1hbiA8aG9ybXNAdmVyZ2UubmV0LmF1PgotCi1kaWZmIC0tZ2l0IGEva2R1bXAvTWFrZWZpbGUgYi9rZHVtcC9NYWtlZmlsZQotaW5kZXggMWUyYjcyYy4uNWRmYTkyOCAxMDA2NDQKLS0tLSBhL2tkdW1wL01ha2VmaWxlCi0rKysgYi9rZHVtcC9NYWtlZmlsZQotQEAgLTIyLDcgKzIyLDcgQEAgJChLRFVNUCk6ICQoS0RVTVBfT0JKUykKLSAKLSAkKEtEVU1QX01BTlBBR0UpOiBrZHVtcC9rZHVtcC44Ci0gCSQoTUtESVIpIC1wICAgICAkKE1BTkRJUikvbWFuOAotLQljcCBrZHVtcC9rZHVtcC44ICQoS0RVTVBfTUFOUEFHRSkKLSsJY3AgJF4gJChLRFVNUF9NQU5QQUdFKQotIGVjaG86OgotIAlAZWNobyAiS0RVTVBfU1JDUyAkKEtEVU1QX1NSQ1MpIgotIAlAZWNobyAiS0RVTVBfREVQUyAkKEtEVU1QX0RFUFMpIgotZGlmZiAtLWdpdCBhL2tleGVjL01ha2VmaWxlIGIva2V4ZWMvTWFrZWZpbGUKLWluZGV4IDIxMzdjYWIuLjhjODE1YjUgMTAwNjQ0Ci0tLS0gYS9rZXhlYy9NYWtlZmlsZQotKysrIGIva2V4ZWMvTWFrZWZpbGUKLUBAIC04Miw3ICs4Miw3IEBAICQoS0VYRUMpOiBDUFBGTEFHUys9LUkkKHNyY2Rpcikva2V4ZWMvYXJjaC8kKEFSQ0gpL2luY2x1ZGUKLSAKLSAkKEtFWEVDX01BTlBBR0UpOiBrZXhlYy9rZXhlYy44Ci0gCUAkKE1LRElSKSAtcCAgICAgJChNQU5ESVIpL21hbjgKLS0JY3Aga2V4ZWMva2V4ZWMuOCAkKEtFWEVDX01BTlBBR0UpCi0rCWNwICReICQoS0VYRUNfTUFOUEFHRSkKLSBlY2hvOjoKLSAJQGVjaG8gIktFWEVDX1NSQ1MgJChLRVhFQ19TUkNTKSIKLSAJQGVjaG8gIktFWEVDX0RFUFMgJChLRVhFQ19ERVBTKSIKLWRpZmYgLS1naXQgYS9rZXhlYy9hcmNoL3BwYy9NYWtlZmlsZSBiL2tleGVjL2FyY2gvcHBjL01ha2VmaWxlCi1pbmRleCAzZGJhN2NmLi40MTI0MmE1IDEwMDY0NAotLS0tIGEva2V4ZWMvYXJjaC9wcGMvTWFrZWZpbGUKLSsrKyBiL2tleGVjL2FyY2gvcHBjL01ha2VmaWxlCi1AQCAtMSw3ICsxLDcgQEAKLSAjCi0gIyBrZXhlYyBwcGMgKGxpbnV4IGJvb3RpbmcgbGludXgpCi0gIwotLWluY2x1ZGUga2V4ZWMvYXJjaC9wcGMvbGliZmR0L01ha2VmaWxlLmxpYmZkdAotK2luY2x1ZGUgJChzcmNkaXIpL2tleGVjL2FyY2gvcHBjL2xpYmZkdC9NYWtlZmlsZS5saWJmZHQKLSAKLSBwcGNfS0VYRUNfU1JDUyA9ICBrZXhlYy9hcmNoL3BwYy9rZXhlYy1wcGMuYwotIHBwY19LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1wcGMuYwotCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL2lmZG93bl9lcnJuby5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL2lmZG93bl9lcnJuby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y4Y2RkZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9pZmRvd25fZXJybm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9rZXhlYy9pZmRvd24uYwotKysrIGIva2V4ZWMvaWZkb3duLmMKLUBAIC0xNCw3ICsxNCw3IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0tI2luY2x1ZGUgPHN5cy9lcnJuby5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotIAotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIva2V4ZWMtZWxmLXJlbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL2tleGVjLWVsZi1yZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjZhZmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIva2V4ZWMtZWxmLXJlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS0tLSBhL2tleGVjL2tleGVjLWVsZi1yZWwuYwotKysrIGIva2V4ZWMva2V4ZWMtZWxmLXJlbC5jCi1AQCAtNCw3ICs0LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgImVsZi5oIgotKyNpbmNsdWRlICIuLi9pbmNsdWRlL2VsZi5oIgotICNpbmNsdWRlIDxib290L2VsZl9ib290Lmg+Ci0gI2luY2x1ZGUgImtleGVjLmgiCi0gI2luY2x1ZGUgImtleGVjLWVsZi5oIgotCi0tLS0gYS9rZXhlYy9hcmNoL2FybS9rZXhlYy1lbGYtcmVsLWFybS5jCi0rKysgYi9rZXhlYy9hcmNoL2FybS9rZXhlYy1lbGYtcmVsLWFybS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZWxmLmgiCi0gI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCi0gI2luY2x1ZGUgIi4uLy4uL2tleGVjLWVsZi5oIgotIAotCi0tLS0gYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXJlbC14ODYuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi1yZWwteDg2LmMKLUBAIC0xLDUgKzEsNSBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlbGYuaD4KLSsjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMtZWxmLmgiCi0gCi0KLS0tLSBhL2tleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1yZWwtcHBjLmMKLSsrKyBiL2tleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1yZWwtcHBjLmMKLUBAIC0xLDUgKzEsNSBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlbGYuaD4KLSsjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMtZWxmLmgiCi0gCi0KLS0tLSBhL2tleGVjL2FyY2gvcHBjNjQva2V4ZWMtZWxmLXJlbC1wcGM2NC5jCi0rKysgYi9rZXhlYy9hcmNoL3BwYzY0L2tleGVjLWVsZi1yZWwtcHBjNjQuYwotQEAgLTEsNSArMSw1IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVsZi5oPgotKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2VsZi5oIgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMtZWxmLmgiCi0KLS0tLSBhL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMKLSsrKyBiL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMKLUBAIC0xLDUgKzEsNSBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlbGYuaD4KLSsjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKLSAjaW5jbHVkZSAiLi4vLi4va2V4ZWMtZWxmLmgiCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9rZXhlYy1zeXNjYWxsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIva2V4ZWMtc3lzY2FsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgxZGUxYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9rZXhlYy1zeXNjYWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLS0tIGEva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCi0rKysgYi9rZXhlYy9rZXhlYy1zeXNjYWxsLmgKLUBAIC0yLDcgKzIsNyBAQAotICNkZWZpbmUgS0VYRUNfU1lTQ0FMTF9ICi0gCi0gI2RlZmluZSBfX0xJQlJBUllfXwotLSNpbmNsdWRlIDxzeXNjYWxsLmg+Ci0rLyojaW5jbHVkZSA8c3lzY2FsbC5oPiovCi0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotQEAgLTIzLDYgKzIzLDcgQEAKLSAjZGVmaW5lIExJTlVYX1JFQk9PVF9DTURfS0VYRUMJCTB4NDU1ODQ1NDMKLSAKLSAjaWZuZGVmIF9fTlJfa2V4ZWNfbG9hZAotKy8qCi0gI2lmZGVmIF9faTM4Nl9fCi0gI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCTI4MwotICNlbmRpZgotQEAgLTYxLDE5ICs2MiwyMSBAQAotICNpZm5kZWYgX19OUl9rZXhlY19sb2FkCi0gI2Vycm9yIFVua25vd24gcHJvY2Vzc29yIGFyY2hpdGVjdHVyZS4gIE5lZWRzIGEga2V4ZWNfbG9hZCBzeXNjYWxsIG51bWJlci4KLSAjZW5kaWYKLSsqLwotICNlbmRpZiAvKmlmbmRlZiBfX05SX2tleGVjX2xvYWQqLwotIAotIHN0cnVjdCBrZXhlY19zZWdtZW50OwotLQotKy8qCi0gc3RhdGljIGlubGluZSBsb25nIGtleGVjX2xvYWQodm9pZCAqZW50cnksIHVuc2lnbmVkIGxvbmcgbnJfc2VnbWVudHMsCi0gCQkJc3RydWN0IGtleGVjX3NlZ21lbnQgKnNlZ21lbnRzLCB1bnNpZ25lZCBsb25nIGZsYWdzKQotIHsKLSAJcmV0dXJuIChsb25nKSBzeXNjYWxsKF9fTlJfa2V4ZWNfbG9hZCwgZW50cnksIG5yX3NlZ21lbnRzLCBzZWdtZW50cywgZmxhZ3MpOwotIH0KLS0KLSsqLwotIHN0YXRpYyBpbmxpbmUgbG9uZyBrZXhlY19yZWJvb3Qodm9pZCkKLSB7Ci0tCXJldHVybiAobG9uZykgc3lzY2FsbChfX05SX3JlYm9vdCwgTElOVVhfUkVCT09UX01BR0lDMSwgTElOVVhfUkVCT09UX01BR0lDMiwgTElOVVhfUkVCT09UX0NNRF9LRVhFQywgMCk7Ci0rCS8vcmV0dXJuIChsb25nKSBzeXNjYWxsKF9fTlJfcmVib290LCBMSU5VWF9SRUJPT1RfTUFHSUMxLCBMSU5VWF9SRUJPT1RfTUFHSUMyLCBMSU5VWF9SRUJPT1RfQ01EX0tFWEVDLCAwKTsKLSsJcmV0dXJuIF9fcmVib290KExJTlVYX1JFQk9PVF9NQUdJQzEsIExJTlVYX1JFQk9PVF9NQUdJQzIsIExJTlVYX1JFQk9PVF9DTURfS0VYRUMsIDApOwotIH0KLSAKLSAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3BwY19fbHNocmRpMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3BwY19fbHNocmRpMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZjZGZiMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9wcGNfX2xzaHJkaTMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9wdXJnYXRvcnkvYXJjaC9wcGMvY3J0LlMKLSsrKyBiL3B1cmdhdG9yeS9hcmNoL3BwYy9jcnQuUwotQEAgLTI0OSw2ICsyNDksNyBAQAotICAqCi0gICovCi0gCi0rLyogYWxyZWFkeSBkZWZpbmVkIGluIG1pc2MuUwotIF9HTE9CQUwoX19sc2hyZGkzKQotIAlzdWJmaWMJNiw1LDMyCi0gCXNydwk0LDQsNQkjIExTVyA9IGNvdW50ID4gMzEgPyAwIDogTFNXID4+IGNvdW50Ci1AQCAtMjU5LDUgKzI2MCw3IEBACi0gCXNydwkzLDMsNQkjIE1TVyA9IE1TVyA+PiBjb3VudAotIAlvcgk0LDQsNwkjIExTVyB8PSB0MgotIAlibHIKLSsqLwotKwotICNlbmRpZgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvcHVyZ2F0b3J5X2ZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvcHVyZ2F0b3J5X2ZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWZjMTE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3B1cmdhdG9yeV9mbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS0tLSBhL3B1cmdhdG9yeS9NYWtlZmlsZQotKysrIGIvcHVyZ2F0b3J5L01ha2VmaWxlCi1AQCAtNDcsNyArNDcsNyBAQAotICQoUFVSR0FUT1JZKTogQ0M9JChUQVJHRVRfQ0MpCi0gJChQVVJHQVRPUlkpOiBDRkxBR1MrPSQoUFVSR0FUT1JZX0VYVFJBX0NGTEFHUykgXAotCQkgICAgICAkKCQoQVJDSClfUFVSR0FUT1JZX0VYVFJBX0NGTEFHUykgXAotLQkJICAgICAgLU9zIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZwotKwkJICAgICAgLU9zIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMKLSAKLSAkKFBVUkdBVE9SWSk6IENQUEZMQUdTPSQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKSBcCi0JCQktSSQoc3JjZGlyKS9wdXJnYXRvcnkvaW5jbHVkZSBcCi1AQCAtNjEsNyArNjEsOCBAQAotIAotICQoUFVSR0FUT1JZKTogJChQVVJHQVRPUllfT0JKUykKLQkkKE1LRElSKSAtcCAkKEBEKQotLQkkKENDKSAkKExERkxBR1MpIC1vICRAICReCi0rIwkkKENDKSAkKExERkxBR1MpIC1vICRAICReCi0rCSQoTEQpICQoTERGTEFHUykgLW8gJEAgJF4KLSAKLSAjCSQoTEQpICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAtLW5vLXVuZGVmaW5lZCAtZSBwdXJnYXRvcnlfc3RhcnQgLXIgLW8gJEAgJChQVVJHQVRPUllfT0JKUykgJChVVElMX0xJQikKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvcHVyZ2F0b3J5X3N0cmluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3B1cmdhdG9yeV9zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MTA1NjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvcHVyZ2F0b3J5X3N0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotLS0tIGEvcHVyZ2F0b3J5L3N0cmluZy5jCi0rKysgYi9wdXJnYXRvcnkvc3RyaW5nLmMKLUBAIC0xLDUgKzEsNSBAQAotICNpbmNsdWRlIDxzdGRkZWYuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0rLyogI2luY2x1ZGUgPHN0cmluZy5oPiAqLwotIAotIHNpemVfdCBzdHJubGVuKGNvbnN0IGNoYXIgKnMsIHNpemVfdCBtYXgpCi0gewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvc2hhMjU2LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvc2hhMjU2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWJmN2FhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3NoYTI1Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL3V0aWxfbGliL2luY2x1ZGUvc2hhMjU2LmgKLSsrKyBiL3V0aWxfbGliL2luY2x1ZGUvc2hhMjU2LmgKLUBAIC0xLDcgKzEsOCBAQAotICNpZm5kZWYgU0hBMjU2X0gKLSAjZGVmaW5lIFNIQTI1Nl9ICi0gCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKy8vI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIvc3lzY29uZl9ucnByb2Nlc3NvcnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9zeXNjb25mX25ycHJvY2Vzc29ycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRhOTdlNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi9zeXNjb25mX25ycHJvY2Vzc29ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL2tleGVjL2NyYXNoZHVtcC1lbGYuYwotKysrIGIva2V4ZWMvY3Jhc2hkdW1wLWVsZi5jCi1AQCAtNDcsNyArNDcsOCBAQAotCWlmICh4ZW5fcHJlc2VudCgpKQotCQlucl9jcHVzID0geGVuX2dldF9ucl9waHlzX2NwdXMoKTsKLQllbHNlCi0tCQlucl9jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfQ09ORik7Ci0rCQkvKm5yX2NwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19DT05GKTsqLwotKwkJbnJfY3B1cyA9IDE7Ci0gCi0JaWYgKG5yX2NwdXMgPCAwKSB7Ci0JCXJldHVybiAtMTsKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIveDg2X2Jhc2VuYW1lLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIveDg2X2Jhc2VuYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2ExYzAxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3g4Nl9iYXNlbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLS0tLSBhL2tleGVjL2FyY2gvaTM4Ni94ODYtbGludXgtc2V0dXAuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCi1AQCAtMjgwLDkgKzI4MCw5IEBAIHN0YXRpYyBpbnQgYWRkX2VkZF9lbnRyeShzdHJ1Y3QgeDg2X2xpbnUKLQltZW1zZXQoZWRkX2luZm8sIDAsIHNpemVvZihzdHJ1Y3QgZWRkX2luZm8pKTsKLSAKLSAJLyogZXh0cmFjdCB0aGUgZGV2aWNlIG51bWJlciAqLwotLQlpZiAoc3NjYW5mKGJhc2VuYW1lKHN5c2ZzX25hbWUpLCAiaW50MTNfZGV2JWhoeCIsICZkZXZudW0pICE9IDEpIHsKLSsJaWYgKHNzY2FuZihzdHJyY2hyKHN5c2ZzX25hbWUsJy8nKSArIDEsICJpbnQxM19kZXYlaGh4IiwgJmRldm51bSkgIT0gMSkgewotIAkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGZvcm1hdCBvZiBpbnQxM19kZXYgZGlyICIKLS0JCQkJImVudHJ5OiAlc1xuIiwgYmFzZW5hbWUoc3lzZnNfbmFtZSkpOwotKwkJCQkiZW50cnk6ICVzXG4iLCBzdHJyY2hyKHN5c2ZzX25hbWUsJy8nKSArIDEpOwotIAkJcmV0dXJuIC0xOwotIAl9Ci0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi94ODZfa2V4ZWNfdGVzdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3g4Nl9rZXhlY190ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTAwYmQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3g4Nl9rZXhlY190ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTA2LDggKzEwNiw4IEBACi0gCi0gTUFOX1BBR0VTOj0ga2V4ZWMva2V4ZWMuOAotIE1BTl9QQUdFUys9IGtkdW1wL2tkdW1wLjgKLS1CSU5BUklFU19pMzg2Oj0gICQoU0JJTkRJUikva2V4ZWMgJChQS0dMSUJESVIpL2tleGVjX3Rlc3QKLS1CSU5BUklFU194ODZfNjQ6PSQoU0JJTkRJUikva2V4ZWMgJChQS0dMSUJESVIpL2tleGVjX3Rlc3QKLStCSU5BUklFU19pMzg2Oj0gICQoU0JJTkRJUikva2V4ZWMKLStCSU5BUklFU194ODZfNjQ6PSQoU0JJTkRJUikva2V4ZWMKLSBCSU5BUklFUzo9JChTQklORElSKS9rZXhlYyAkKFNCSU5ESVIpL2tkdW1wICQoQklOQVJJRVNfJChBUkNIKSkKLSAKLSBUQVJHRVRTOj0kKEJJTkFSSUVTKSAkKE1BTl9QQUdFUykKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3g4Nl9zeXNfaW8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi94ODZfc3lzX2lvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDk3YzlhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLTIuMC4yL3g4Nl9zeXNfaW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0tLS0gYS9wdXJnYXRvcnkvYXJjaC9pMzg2L3BpYy5jCi0rKysgYi9wdXJnYXRvcnkvYXJjaC9pMzg2L3BpYy5jCi1AQCAtMTYsNyArMTYsNyBAQAotICAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCi0gICovCi0tI2luY2x1ZGUgPHN5cy9pby5oPgotKyNpbmNsdWRlICJpbmNsdWRlL2FyY2gvaW8uaCIKLSAjaW5jbHVkZSA8cHVyZ2F0b3J5Lmg+Ci0gI2luY2x1ZGUgInB1cmdhdG9yeS14ODYuaCIKLSAKLQotLS0tIGEvcHVyZ2F0b3J5L2FyY2gvaTM4Ni92Z2EuYwotKysrIGIvcHVyZ2F0b3J5L2FyY2gvaTM4Ni92Z2EuYwotQEAgLTEsNCArMSw0IEBACi0tI2luY2x1ZGUgPHN5cy9pby5oPgotKyNpbmNsdWRlICJpbmNsdWRlL2FyY2gvaW8uaCIKLSAjaW5jbHVkZSA8cHVyZ2F0b3J5Lmg+Ci0gI2luY2x1ZGUgInB1cmdhdG9yeS14ODYuaCIKLSAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMtMi4wLjIveDg2X3Zmc2NhbmYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi94ODZfdmZzY2FuZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkNjk1MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy0yLjAuMi94ODZfdmZzY2FuZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS0tLSBhL2tleGVjL2FyY2gvaTM4Ni94ODYtbGludXgtc2V0dXAuYwotKysrIGIva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCi1AQCAtMTc2LDYgKzE3Niw4IEBAIHN0YXRpYyBpbnQgZmlsZV9zY2FuZihjb25zdCBjaGFyICpkaXIsIGMKLSAJRklMRSAqZnA7Ci0gCWludCByZXRubzsKLSAJY2hhciBmaWxlbmFtZVtQQVRIX01BWF07Ci0rCWxvbmcgbGluZV9zaXplID0gTUFYX0xJTkU7Ci0rCWNoYXIgKmxpbmU7Ci0gCi0gCXNucHJpbnRmKGZpbGVuYW1lLCBQQVRIX01BWCwgIiVzLyVzIiwgZGlyLCBmaWxlKTsKLSAJZmlsZW5hbWVbUEFUSF9NQVgtMV0gPSAwOwotQEAgLTE4Niw3ICsxODgsMTQgQEAgc3RhdGljIGludCBmaWxlX3NjYW5mKGNvbnN0IGNoYXIgKmRpciwgYwotIAl9Ci0gCi0gCXZhX3N0YXJ0KGFyZ3B0ciwgc2NhbmZfbGluZSk7Ci0tCXJldG5vID0gdmZzY2FuZihmcCwgc2NhbmZfbGluZSwgYXJncHRyKTsKLSsKLSsJbGluZSA9IHhtYWxsb2Moc2l6ZW9mKGxpbmUpICogbGluZV9zaXplKTsKLSsJd2hpbGUoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmcCkgIT0gTlVMTCApIHsKLSsJCWxpbmVfc2l6ZSArPSBNQVhfTElORTsKLSsJCWxpbmUgPSB4cmVhbGxvYyhsaW5lLGxpbmVfc2l6ZSk7Ci0rCX0KLSsJcmV0bm8gPSB2c3NjYW5mKGxpbmUsIHNjYW5mX2xpbmUsIGFyZ3B0cik7Ci0rCi0gCXZhX2VuZChhcmdwdHIpOwotIAotIAlmY2xvc2UoZnApOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwMS1mb3JjZS1zdGF0aWMtYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDAxLWZvcmNlLXN0YXRpYy1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzQ0ZTdhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwMS1mb3JjZS1zdGF0aWMtYnVpbGQucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSBkNmFmNTE1Y2ZjYzgxODVmNDIzODYwZjgwZmYyODcxOTk3NWI3MDFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3BlbkVtYmVkZGVkIDxvZS5wYXRjaEBvZT4KK0RhdGU6IFdlZCwgMTEgQXByIDIwMTggMjI6NTE6MDAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZm9yY2Ugc3RhdGljIGJ1aWxkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CisKKy0tLQorIE1ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNTRjMjA2Zi4uNzkxODhkOCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTQ3LDcgKzQ3LDcgQEAgVEFSR0VUX0NGTEFHUwk9IEBUQVJHRVRfQ0ZMQUdTQAorICMgd2hlcmUgbmVjZXNzYXJ5LgorIENQUEZMQUdTCT0gQENQUEZMQUdTQCAtSSQoc3JjZGlyKS9pbmNsdWRlIC1JJChzcmNkaXIpL3V0aWxfbGliL2luY2x1ZGUgXAorIAkJCS1JaW5jbHVkZS8gJCgkKEFSQ0gpX0NQUEZMQUdTKQorLUNGTEFHUwkJPSBAQ0ZMQUdTQCAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzCisrQ0ZMQUdTCQk9IEBDRkxBR1NAIC1zdGF0aWMgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcworIFBVUkdBVE9SWV9FWFRSQV9DRkxBR1MgPSBAUFVSR0FUT1JZX0VYVFJBX0NGTEFHU0AKKyBBU0ZMQUdTCQk9IEBBU0ZMQUdTQCAkKCQoQVJDSClfQVNGTEFHUykKKyBMREZMQUdTCQk9IEBMREZMQUdTQApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwMi1BZGp1c3QtdGhlLW9yZGVyLW9mLWhlYWRlcnMtdG8tZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwMi1BZGp1c3QtdGhlLW9yZGVyLW9mLWhlYWRlcnMtdG8tZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTZhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDAyLUFkanVzdC10aGUtb3JkZXItb2YtaGVhZGVycy10by1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAwOTc2ZDJkNWJlMWVkNDRjMjMyNGI2MDljN2QxNmMxZTkzMTgxYzRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTY6MjA6MDggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRqdXN0IHRoZSBvcmRlciBvZiBoZWFkZXJzIHRvIGZpeCBidWlsZCBmb3IgbXVzbAorCitGaXhlcworIGtleGVjL2lmZG93bi5jOjMzOjE2OiBlcnJvcjogc3RvcmFnZSBzaXplIG9mICdpZmMnIGlzbid0IGtub3duCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyBrZXhlYy9pZmRvd24uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2tleGVjL2lmZG93bi5jIGIva2V4ZWMvaWZkb3duLmMKK2luZGV4IDk2NzlhZDcuLjgyYzYxNDEgMTAwNjQ0CistLS0gYS9rZXhlYy9pZmRvd24uYworKysrIGIva2V4ZWMvaWZkb3duLmMKK0BAIC0xNiw4ICsxNiw4IEBAIGNoYXIgKnZfaWZkb3duID0gIkAoIylpZmRvd24uYyAgMS4xMSAgMDItSnVuLTE5OTggIG1pcXVlbHNAY2lzdHJvbi5ubCI7CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAKKy0jaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKysjaW5jbHVkZSA8bmV0L2lmLmg+CisgCisgLyoKKyAgKiAgRmlyc3QsIHdlIGZpbmQgYWxsIHNoYXBlciBkZXZpY2VzIGFuZCBkb3duIHRoZW0uIFRoZW4gd2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDMta2V4ZWMtZWxmLXJlbC11c2Utb3VyLWVsZi5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwMy1rZXhlYy1lbGYtcmVsLXVzZS1vdXItZWxmLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU5ZTdiYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDMta2V4ZWMtZWxmLXJlbC11c2Utb3VyLWVsZi5oLnBhdGNoCkBAIC0wLDAgKzEsOTIgQEAKK0Zyb20gN2Y5MTg3NWQ2NTc3ODE1NDcwOWU0ZmEwY2NiMjNmM2IyYTk4YjBkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9wZW5FbWJlZGRlZCA8b2UucGF0Y2hAb2U+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDIyOjUxOjAwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGtleGVjLWVsZi1yZWw6IHVzZSBvdXIgZWxmLmgKKworRml4OgorCisga2V4ZWMtZWxmLXJlbC5jOiBJbiBmdW5jdGlvbiAnZWxmX3JlbF9sb2FkJzoKKyBrZXhlYy1lbGYtcmVsLmM6Mzg2OjM5OiBlcnJvcjogJ1NUVF9OT1RZUEUnIHVuZGVjbGFyZWQKKworYW5kIHNpbWlsYXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBba2xpYmMgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CisKKy0tLQorIGtleGVjL2FyY2gvYXJtL2tleGVjLWVsZi1yZWwtYXJtLmMgICAgICAgfCAyICstCisga2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi1yZWwteDg2LmMgICAgICB8IDIgKy0KKyBrZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcmVsLXBwYy5jICAgICAgIHwgMiArLQorIGtleGVjL2FyY2gvcHBjNjQva2V4ZWMtZWxmLXJlbC1wcGM2NC5jICAgfCAyICstCisga2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYyB8IDIgKy0KKyBrZXhlYy9rZXhlYy1lbGYtcmVsLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIDYgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm0va2V4ZWMtZWxmLXJlbC1hcm0uYyBiL2tleGVjL2FyY2gvYXJtL2tleGVjLWVsZi1yZWwtYXJtLmMKK2luZGV4IGE5MzljZjQuLjI1NTFkYzAgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2FybS9rZXhlYy1lbGYtcmVsLWFybS5jCisrKysgYi9rZXhlYy9hcmNoL2FybS9rZXhlYy1lbGYtcmVsLWFybS5jCitAQCAtMSw1ICsxLDUgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZWxmLmg+CisrI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZWxmLmgiCisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLWVsZi5oIgorIAorZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy1lbGYtcmVsLXg4Ni5jIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi1yZWwteDg2LmMKK2luZGV4IDU1YTIxNGUuLmU3NTgzZDEgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMtZWxmLXJlbC14ODYuYworKysrIGIva2V4ZWMvYXJjaC9pMzg2L2tleGVjLWVsZi1yZWwteDg2LmMKK0BAIC0xLDUgKzEsNSBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxlbGYuaD4KKysjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKKyAjaW5jbHVkZSAiLi4vLi4va2V4ZWMuaCIKKyAjaW5jbHVkZSAiLi4vLi4va2V4ZWMtZWxmLmgiCisgCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9wcGMva2V4ZWMtZWxmLXJlbC1wcGMuYyBiL2tleGVjL2FyY2gvcHBjL2tleGVjLWVsZi1yZWwtcHBjLmMKK2luZGV4IDFhY2JkODYuLmE2MGM2NmMgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcmVsLXBwYy5jCisrKysgYi9rZXhlYy9hcmNoL3BwYy9rZXhlYy1lbGYtcmVsLXBwYy5jCitAQCAtMSw1ICsxLDUgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZWxmLmg+CisrI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUvZWxmLmgiCisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLWVsZi5oIgorIAorZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvcHBjNjQva2V4ZWMtZWxmLXJlbC1wcGM2NC5jIGIva2V4ZWMvYXJjaC9wcGM2NC9rZXhlYy1lbGYtcmVsLXBwYzY0LmMKK2luZGV4IDVmOGUzZjIuLjc2NWJmNmUgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL3BwYzY0L2tleGVjLWVsZi1yZWwtcHBjNjQuYworKysrIGIva2V4ZWMvYXJjaC9wcGM2NC9rZXhlYy1lbGYtcmVsLXBwYzY0LmMKK0BAIC0xLDUgKzEsNSBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxlbGYuaD4KKysjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLmgiCisgI2luY2x1ZGUgIi4uLy4uL2tleGVjLWVsZi5oIgorZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYtcmVsLXg4Nl82NC5jCitpbmRleCA3ZmRkZTczLi5jZDVkNzI5IDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworKysrIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworQEAgLTEsNSArMSw1IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVsZi5oPgorKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL2VsZi5oIgorICNpbmNsdWRlICIuLi8uLi9rZXhlYy5oIgorICNpbmNsdWRlICIuLi8uLi9rZXhlYy1lbGYuaCIKKyAKK2RpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy1lbGYtcmVsLmMgYi9rZXhlYy9rZXhlYy1lbGYtcmVsLmMKK2luZGV4IDlhNmU2M2QuLmE4NTY2MzYgMTAwNjQ0CistLS0gYS9rZXhlYy9rZXhlYy1lbGYtcmVsLmMKKysrKyBiL2tleGVjL2tleGVjLWVsZi1yZWwuYworQEAgLTQsNyArNCw3IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlICJlbGYuaCIKKysjaW5jbHVkZSAiLi4vaW5jbHVkZS9lbGYuaCIKKyAjaW5jbHVkZSA8Ym9vdC9lbGZfYm9vdC5oPgorICNpbmNsdWRlICJrZXhlYy5oIgorICNpbmNsdWRlICJrZXhlYy1lbGYuaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDQta2V4ZWMtZWxmLWV4ZWMuYy1yZXBsYWNlLXdpdGgtb3VyLWVyci5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwNC1rZXhlYy1lbGYtZXhlYy5jLXJlcGxhY2Utd2l0aC1vdXItZXJyLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA4MGU4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDQta2V4ZWMtZWxmLWV4ZWMuYy1yZXBsYWNlLXdpdGgtb3VyLWVyci5oLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gOGI5ZGE5M2FjOWE0ZWE3OWFlOTUzZjgwZjZmZTZlNGYwODAzNDFmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgQXByIDIwMTggMTA6NTc6MjMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2V4ZWMtZWxmLWV4ZWMuYzogcmVwbGFjZSB3aXRoIG91ciBlbGYuaAorCitGaXgKKworIGtleGVjLWVsZi1leGVjLmM6IEluIGZ1bmN0aW9uICdlbGZfZXhlY19sb2FkJzoKKyBlcnJvcjogJ0VNX0FBUkNINjQnIHVuZGVjbGFyZWQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMva2V4ZWMtZWxmLWV4ZWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLWVsZi1leGVjLmMgYi9rZXhlYy9rZXhlYy1lbGYtZXhlYy5jCitpbmRleCBhOTMyOWFjLi4wZGQwNzAwIDEwMDY0NAorLS0tIGEva2V4ZWMva2V4ZWMtZWxmLWV4ZWMuYworKysrIGIva2V4ZWMva2V4ZWMtZWxmLWV4ZWMuYworQEAgLTQsNyArNCw3IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlICJlbGYuaCIKKysjaW5jbHVkZSAiLi4vaW5jbHVkZS9lbGYuaCIKKyAjaW5jbHVkZSA8Ym9vdC9lbGZfYm9vdC5oPgorICNpbmNsdWRlICJrZXhlYy5oIgorICNpbmNsdWRlICJrZXhlYy1lbGYuaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDUtY3Jhc2hkdW1wLWVsZi5jLXdvcmstYXJvdW5kLWZvci1zeXNjb25mLV9TQ19OUFJPQ0VTUy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDUtY3Jhc2hkdW1wLWVsZi5jLXdvcmstYXJvdW5kLWZvci1zeXNjb25mLV9TQ19OUFJPQ0VTUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjc1MDZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwNS1jcmFzaGR1bXAtZWxmLmMtd29yay1hcm91bmQtZm9yLXN5c2NvbmYtX1NDX05QUk9DRVNTLnBhdGNoCkBAIC0wLDAgKzEsMTM0IEBACitGcm9tIDFjZmVlNzVkOTY2MmMzMzgyYmI3Y2I4ZjFjOTUyMzMzODM3NTk4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IEFwciAyMDE4IDAyOjIxOjMwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNyYXNoZHVtcC1lbGYuYzogd29yayBhcm91bmQgZm9yIF9TQ19OUFJPQ0VTU09SU19DT05GCisKK2tsaWJjIHN5c2NvbmYgbGFja3MgdGhpcyBzbyB0aGUgaW1wbGVtZW50YXRpb24KK29mIExpbnVzIFRvcnZhbGRzIHdhcyB0YWtlbiAoc2ltcGxpZmllZCk6CisKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDExLTA2L21zZzAwMDc5Lmh0bWwKKworSGF2ZSBmdW4gcmVkaW5nIHRoZSB0aHJlYWQhCisKK0ZpeAorCisgY3Jhc2hkdW1wLWVsZi5jOjExNzoyMTogZXJyb3I6ICdfU0NfTlBST0NFU1NPUlNfQ09ORicgdW5kZWNsYXJlZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyBrZXhlYy9jcmFzaGR1bXAtZWxmLmMgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvY3Jhc2hkdW1wLWVsZi5jIGIva2V4ZWMvY3Jhc2hkdW1wLWVsZi5jCitpbmRleCBiOGJiNjg2Li43ZTY3NjdjIDEwMDY0NAorLS0tIGEva2V4ZWMvY3Jhc2hkdW1wLWVsZi5jCisrKysgYi9rZXhlYy9jcmFzaGR1bXAtZWxmLmMKK0BAIC0yNSw2ICsyNSw5NCBAQCBkbyB7CQkJCQkJCQkJXAorIH0gd2hpbGUoMCkKKyAjZW5kaWYKKyAKKysjaWZkZWYgX19LTElCQ19fCisrI2lmbmRlZiBLTElCQ19TWVNGU19DUFVfSAorKyNkZWZpbmUgS0xJQkNfU1lTRlNfQ1BVX0gKKysKKysKKytzdGF0aWMgaW50IF9fZ2V0X3N5c2ZzX2NwdXMoY29uc3QgY2hhciAqcGF0aCk7CisraW50IF9fZ2V0X25wcm9jcyAodm9pZCk7CisraW50IF9fZ2V0X25wcm9jc19jb25mICh2b2lkKTsKKysKKysKKysKKytzdGF0aWMgaW50IF9fZ2V0X3N5c2ZzX2NwdXMoY29uc3QgY2hhciAqcGF0aCkKKyt7CisrCUZJTEUgKmZpbGU7CisrCWludCBucl9jcHVzID0gMDsKKysJaW50IHByZXYgPSAtMTsKKysJY2hhciAqcDsKKysJY2hhciBsaW5lWzEwXTsKKysKKysKKysJZmlsZSA9IGZvcGVuKHBhdGgsICJyIik7CisrCWlmICghZmlsZSkKKysJCXJldHVybiAtMTsKKysJZm9yICg7OykgeworKwkJY2hhciBzZXA7CisrCQlpbnQgY3B1OworKwkJaW50IG47CisrCisrCQkvKiBpbnQgbiA9IGZzY2FuZihmaWxlLCAiJXUlYyIsICZjcHUsICZzZXApOyAqLworKwkJcCA9IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZmlsZSk7CisrCQlpZiAocCA9PSBOVUxMKQorKwkJCXJldHVybiAtMTsKKysJCWVsc2UKKysJCQluID0gc3NjYW5mKGxpbmUsICIldSVjIiwgJmNwdSwgJnNlcCk7CisrCisrCQlpZiAobiA8PSAwKQorKwkJCWJyZWFrOworKworKwkJLyogRU9GID09IEVPTE4gKi8KKysJCWlmIChuID09IDEpCisrCQkJc2VwID0gJ1xuJzsKKysKKysJCS8qIFdhcyB0aGUgcHJldmlvdXMgQ1BVIGEgcmFuZ2U/ICovCisrCQlpZiAocHJldiA+PSAwKSB7CisrCQkJbnJfY3B1cyArPSBjcHUgLSBwcmV2ICsgMTsKKysJCQlwcmV2ID0gLTE7CisrCQl9IGVsc2UgaWYgKHNlcCA9PSAnLScpCisrCQkJcHJldiA9IGNwdTsKKysJCWVsc2UKKysJCW5yX2NwdXMrKzsKKysKKysJCWlmIChzZXAgPT0gJ1xuJykKKysJCQlicmVhazsKKysJfQorKwlmY2xvc2UoZmlsZSk7CisrCXJldHVybiBucl9jcHVzOworK30KKysKKytpbnQgX19nZXRfbnByb2NzICgpCisreworKwlsb25nIHJldDsKKysJc3RhdGljIGludCBjYWNoZWQgPSAtMTsKKysKKysJcmV0ID0gY2FjaGVkOworKwlpZiAocmV0IDwgMCkKKysJeworKwkJcmV0ID0gX19nZXRfc3lzZnNfY3B1cygiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvb25saW5lIik7CisrCQljYWNoZWQgPSByZXQ7CisrCX0KKysJcmV0dXJuIHJldDsKKyt9CisrCisraW50IF9fZ2V0X25wcm9jc19jb25mICgpCisreworKwlsb25nIHJldDsKKysJc3RhdGljIGludCBjYWNoZWQgPSAtMTsKKysKKysJcmV0ID0gY2FjaGVkOworKwlpZiAocmV0IDwgMCkKKysJeworKwkJcmV0ID0gX19nZXRfc3lzZnNfY3B1cygiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvcG9zc2libGUiKTsKKysJCWNhY2hlZCA9IHJldDsKKysJfQorKwlyZXR1cm4gcmV0OworK30KKysjZW5kaWYKKysjZW5kaWYKKysKKyAvKiBQcmVwYXJlcyB0aGUgY3Jhc2ggbWVtb3J5IGhlYWRlcnMgYW5kIHN0b3JlcyBpbiBzdXBwbGllZCBidWZmZXIuICovCisgaW50IEZVTkMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sCisgCSBzdHJ1Y3QgY3Jhc2hfZWxmX2luZm8gKmVsZl9pbmZvLAorQEAgLTQ2LDcgKzEzNCwxMSBAQCBpbnQgRlVOQyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywKKyAJaWYgKHhlbl9wcmVzZW50KCkpCisgCQlucl9jcHVzID0geGVuX2dldF9ucl9waHlzX2NwdXMoKTsKKyAJZWxzZQorKyNpZm5kZWYgX19LTElCQ19fCisgCQlucl9jcHVzID0gc3lzY29uZihfU0NfTlBST0NFU1NPUlNfQ09ORik7CisrI2Vsc2UKKysJCW5yX2NwdXMgPSBfX2dldF9ucHJvY3NfY29uZigpOworKyNlbmRpZgorIAorIAlpZiAobnJfY3B1cyA8IDApIHsKKyAJCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDYta2V4ZWMtc3lzY2FsbC5oLXdvcmstYXJvdW5kLW1pc3Npbmctc3lzY2FsbC13cmFwcGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwNi1rZXhlYy1zeXNjYWxsLmgtd29yay1hcm91bmQtbWlzc2luZy1zeXNjYWxsLXdyYXBwZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyMGY3NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDYta2V4ZWMtc3lzY2FsbC5oLXdvcmstYXJvdW5kLW1pc3Npbmctc3lzY2FsbC13cmFwcGVyLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNDVhODBmZTdkMjQ3ODk4ZDgzZWRmZWFiZTMyYjlkZTgwYTUwYTZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgQXVnIDIwMTggMTE6MzM6NTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2V4ZWMtc3lzY2FsbC5oOiB3b3JrIGFyb3VuZCBtaXNzaW5nIHN5c2NhbGwoKSB3cmFwcGVyCisKK0ZpeAorCisga2V4ZWMtc3lzY2FsbC5oOiBJbiBmdW5jdGlvbiAna2V4ZWNfbG9hZCc6Cisga2V4ZWMtc3lzY2FsbC5oOjgwOjE2OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnc3lzY2FsbCcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMva2V4ZWMtc3lzY2FsbC5oIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2tleGVjL2tleGVjLXN5c2NhbGwuaCBiL2tleGVjL2tleGVjLXN5c2NhbGwuaAoraW5kZXggMzM2MzhjMi4uMjA0MDA3ZCAxMDA2NDQKKy0tLSBhL2tleGVjL2tleGVjLXN5c2NhbGwuaAorKysrIGIva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCitAQCAtNzQsMTEgKzc0LDE2IEBACisgCisgc3RydWN0IGtleGVjX3NlZ21lbnQ7CisgCisrI2lmbmRlZiBfX0tMSUJDX18KKyBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfbG9hZCh2b2lkICplbnRyeSwgdW5zaWduZWQgbG9uZyBucl9zZWdtZW50cywKKyAJCQlzdHJ1Y3Qga2V4ZWNfc2VnbWVudCAqc2VnbWVudHMsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCisgeworIAlyZXR1cm4gKGxvbmcpIHN5c2NhbGwoX19OUl9rZXhlY19sb2FkLCBlbnRyeSwgbnJfc2VnbWVudHMsIHNlZ21lbnRzLCBmbGFncyk7CisgfQorKyNlbHNlCisrZXh0ZXJuIGxvbmcga2V4ZWNfbG9hZCh2b2lkICplbnRyeSwgdW5zaWduZWQgbG9uZyBucl9zZWdtZW50cywKKysJCQlzdHJ1Y3Qga2V4ZWNfc2VnbWVudCAqc2VnbWVudHMsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOworKyNlbmRpZgorIAorIHN0YXRpYyBpbmxpbmUgaW50IGlzX2tleGVjX2ZpbGVfbG9hZF9pbXBsZW1lbnRlZCh2b2lkKSB7CisgCWlmIChfX05SX2tleGVjX2ZpbGVfbG9hZCAhPSAweGZmZmZmZmZmKQorQEAgLTg2LDYgKzkxLDIxIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2tleGVjX2ZpbGVfbG9hZF9pbXBsZW1lbnRlZCh2b2lkKSB7CisgCXJldHVybiAwOworIH0KKyAKKysjaWZkZWYgX19LTElCQ19fCisrLyogU3R1YiBwcm92aWRlZCBieSBrbGliYyBvbmx5IGZvciB0aGUgZm9sbG93aW5nIGFyY2hzICovCisrI2lmIGRlZmluZWQgKF9feDg2XzY0X18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY182NF9fKSB8fCBkZWZpbmVkIChfX3MzOTB4X18pCisrZXh0ZXJuIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrZXJuZWxfZmQsIGludCBpbml0cmRfZmQsCisrCQkJdW5zaWduZWQgbG9uZyBjbWRsaW5lX2xlbiwgY29uc3QgY2hhciAqY21kbGluZV9wdHIsCisrCQkJdW5zaWduZWQgbG9uZyBmbGFncyk7CisrI2Vsc2UKKytzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrZXJuZWxfZmQsIGludCBpbml0cmRfZmQsCisrCQkJdW5zaWduZWQgbG9uZyBjbWRsaW5lX2xlbiwgY29uc3QgY2hhciAqY21kbGluZV9wdHIsCisrCQkJdW5zaWduZWQgbG9uZyBmbGFncykKKyt7CisrCXJldHVybiAtMTsKKyt9CisrI2VuZGlmCisrI2Vsc2UKKyBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrZXJuZWxfZmQsIGludCBpbml0cmRfZmQsCisgCQkJdW5zaWduZWQgbG9uZyBjbWRsaW5lX2xlbiwgY29uc3QgY2hhciAqY21kbGluZV9wdHIsCisgCQkJdW5zaWduZWQgbG9uZyBmbGFncykKK0BAIC05Myw2ICsxMTMsNyBAQCBzdGF0aWMgaW5saW5lIGxvbmcga2V4ZWNfZmlsZV9sb2FkKGludCBrZXJuZWxfZmQsIGludCBpbml0cmRfZmQsCisgCXJldHVybiAobG9uZykgc3lzY2FsbChfX05SX2tleGVjX2ZpbGVfbG9hZCwga2VybmVsX2ZkLCBpbml0cmRfZmQsCisgCQkJCWNtZGxpbmVfbGVuLCBjbWRsaW5lX3B0ciwgZmxhZ3MpOworIH0KKysjZW5kaWYKKyAKKyAjZGVmaW5lIEtFWEVDX09OX0NSQVNICQkweDAwMDAwMDAxCisgI2RlZmluZSBLRVhFQ19QUkVTRVJWRV9DT05URVhUCTB4MDAwMDAwMDIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwNy1rZXhlYy5jLWFkZC1ndWFyZC1hcm91bmQtRU5PVFNVUC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDcta2V4ZWMuYy1hZGQtZ3VhcmQtYXJvdW5kLUVOT1RTVVAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q0NDY4MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDcta2V4ZWMuYy1hZGQtZ3VhcmQtYXJvdW5kLUVOT1RTVVAucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBlNmJkN2ExYmNmYmQzZTU0ZWZjODFmYmQ3ZDYwZDkxNWY5YWYwNjMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNyBBcHIgMjAxOCAxMTozNToxNCArMDIwMAorU3ViamVjdDogW1BBVENIXSBrZXhlYy5jOiBhZGQgZ3VhcmQgYXJvdW5kIEVOT1RTVVAKKworRml4CisKKyBrZXhlYy5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Cisga2V4ZWMuYzoxNTE1OjExOiBlcnJvcjogJ0VOT1RTVVAnIHVuZGVjbGFyZWQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMva2V4ZWMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9rZXhlYy9rZXhlYy5jIGIva2V4ZWMva2V4ZWMuYworaW5kZXggMzEzZDlmZS4uYjVhOGExZSAxMDA2NDQKKy0tLSBhL2tleGVjL2tleGVjLmMKKysrKyBiL2tleGVjL2tleGVjLmMKK0BAIC0xNTAxLDYgKzE1MDEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCQkJICovCisgCQkJCWNhc2UgLUVJTlZBTDoKKyAJCQkJY2FzZSAtRU5PRVhFQzoKKysjaWZuZGVmIF9fS0xJQkNfXworIAkJCQkJIC8qCisgCQkJCQkgICogRU5PVFNVUCBjYW4gYmUgdW5zdXBwb3J0ZWQgaW1hZ2UKKyAJCQkJCSAgKiB0eXBlIG9yIHVuc3VwcG9ydGVkIFBFIHNpZ25hdHVyZQorQEAgLTE1MTMsNiArMTUxNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJCQkgICoga2VybmVsIGJ1ZworIAkJCQkJICAqLworIAkJCQljYXNlIC1FTk9UU1VQOgorKyNlbmRpZgorIAkJCQkJZG9fa2V4ZWNfZmlsZV9zeXNjYWxsID0gMDsKKyAJCQkJCWJyZWFrOworIAkJCX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDgta2V4ZWMuYy1yZXBsYWNlLW1pc2luZy1CTEtHRVRTSVpFNjQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDA4LWtleGVjLmMtcmVwbGFjZS1taXNpbmctQkxLR0VUU0laRTY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzUxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDA4LWtleGVjLmMtcmVwbGFjZS1taXNpbmctQkxLR0VUU0laRTY0LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMTJjN2IwOWMzMTUyZjJiMzQ3NWQwODE2OTFhMjZiZDFhNTYzMzI1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgQXByIDIwMTggMTE6Mzg6NDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2V4ZWMuYzogcmVwbGFjZSBtaXNzaW5nIEJMS0dFVFNJWkU2NAorCitGaXgKKworIGtleGVjLmM6IEluIGZ1bmN0aW9uICdzbHVycF9maWxlX2dlbmVyaWMnOgorIGtleGVjLmM6NTY0OjE5OiBlcnJvcjogJ0JMS0dFVFNJWkU2NCcgdW5kZWNsYXJlZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyBrZXhlYy9rZXhlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMva2V4ZWMuYyBiL2tleGVjL2tleGVjLmMKK2luZGV4IGI1YThhMWUuLjc4NDJmOGIgMTAwNjQ0CistLS0gYS9rZXhlYy9rZXhlYy5jCisrKysgYi9rZXhlYy9rZXhlYy5jCitAQCAtNTQsNiArNTQsMTAgQEAKKyAjZGVmaW5lIEtFWEVDX0xPQURFRF9QQVRIICIvc3lzL2tlcm5lbC9rZXhlY19sb2FkZWQiCisgI2RlZmluZSBLRVhFQ19DUkFTSF9MT0FERURfUEFUSCAiL3N5cy9rZXJuZWwva2V4ZWNfY3Jhc2hfbG9hZGVkIgorIAorKyNpZm5kZWYgQkxLR0VUU0laRTY0CisrI2RlZmluZSBCTEtHRVRTSVpFNjQJX0lPUigweDEyLDExNCxzaXplX3QpCisrI2VuZGlmCisrCisgdW5zaWduZWQgbG9uZyBsb25nIG1lbV9taW4gPSAwOworIHVuc2lnbmVkIGxvbmcgbG9uZyBtZW1fbWF4ID0gVUxPTkdfTUFYOworIHN0YXRpYyB1bnNpZ25lZCBsb25nIGtleGVjX2ZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDktdm1jb3JlLWRtZXNnLmMtd29yay1hcm91bmQtbWlzc2luZy1pbWF4ZGl2LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAwOS12bWNvcmUtZG1lc2cuYy13b3JrLWFyb3VuZC1taXNzaW5nLWltYXhkaXYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY5ODBiMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMDktdm1jb3JlLWRtZXNnLmMtd29yay1hcm91bmQtbWlzc2luZy1pbWF4ZGl2LnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gYWQ1OThhNzFmZmZmNmY4NjQ2MjIxMWYyNTJhYzBjN2I1ZGU1Mzg2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgQXByIDIwMTggMTM6MTQ6MTIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gdm1jb3JlLWRtZXNnLmM6IHdvcmsgYXJvdW5kIG1pc3NpbmcgaW1heGRpdigpCisKK0NvbnZlcnQgdG8gaW50ZWdlciBhcml0aG1ldGljIGZvciBrbGliYy4KKworRml4CisKKyB2bWNvcmUtZG1lc2cuYzogSW4gZnVuY3Rpb24gJ2R1bXBfZG1lc2dfc3RydWN0dXJlZCc6Cisgdm1jb3JlLWRtZXNnLmM6NTc4OjI6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnaW1heGRpdl90JworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyB2bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMgfCAxMyArKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYyBiL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYworaW5kZXggZTM0MGVmNC4uMWIyN2I3MSAxMDA2NDQKKy0tLSBhL3ZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYworKysrIGIvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCitAQCAtNTc1LDggKzU3NSwxMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2RtZXNnX3N0cnVjdHVyZWQoaW50IGZkKQorIAlzc2l6ZV90IHJldDsKKyAJY2hhciAqbXNnOworIAl1aW50MTZfdCB0ZXh0X2xlbjsKKysjaWZuZGVmIF9fS0xJQkNfXworIAlpbWF4ZGl2X3QgaW1heGRpdl9zZWMsIGltYXhkaXZfdXNlYzsKKy0KKysjZWxzZQorKwlpbnQ2NF90IGltYXhkaXZfc2VjLCBpbWF4ZGl2X3VzZWM7CisrI2VuZGlmCisgCWlmICghbG9nX2J1Zl92YWRkcikgeworIAkJZnByaW50ZihzdGRlcnIsICJNaXNzaW5nIHRoZSBsb2dfYnVmIHN5bWJvbFxuIik7CisgCQlleGl0KDYwKTsKK0BAIC02NDUsMTIgKzY0OCwyMCBAQCBzdGF0aWMgdm9pZCBkdW1wX2RtZXNnX3N0cnVjdHVyZWQoaW50IGZkKQorIAkJCWV4aXQoNjUpOworIAkJfQorIAkJdHNfbnNlYyA9IHN0cnVjdF92YWxfdTY0KGJ1ZiwgbG9nX29mZnNldF90c19uc2VjKTsKKysjaWZuZGVmIF9fS0xJQkNfXworIAkJaW1heGRpdl9zZWMgPSBpbWF4ZGl2KHRzX25zZWMsIDEwMDAwMDAwMDApOworIAkJaW1heGRpdl91c2VjID0gaW1heGRpdihpbWF4ZGl2X3NlYy5yZW0sIDEwMDApOworIAorIAkJbGVuICs9IHNwcmludGYob3V0X2J1ZiArIGxlbiwgIlslNWxsdS4lMDZsbHVdICIsCisgCQkJKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpaW1heGRpdl9zZWMucXVvdCwKKyAJCQkobG9uZyBsb25nIHVuc2lnbmVkIGludClpbWF4ZGl2X3VzZWMucXVvdCk7CisrI2Vsc2UKKysJCWltYXhkaXZfc2VjID0gdHNfbnNlYyAvIDEwMDAwMDAwMDA7CisrCQlpbWF4ZGl2X3VzZWMgPSAodHNfbnNlYyAlIDEwMDAwMDAwMDApIC8gMTAwMDsKKysJCWxlbiArPSBzcHJpbnRmKG91dF9idWYgKyBsZW4sICJbJTVsbHUuJTA2bGx1XSAiLAorKwkJCShsb25nIGxvbmcgdW5zaWduZWQgaW50KWltYXhkaXZfc2VjLAorKwkJCShsb25nIGxvbmcgdW5zaWduZWQgaW50KWltYXhkaXZfdXNlYyk7CisrI2VuZGlmCisgCisgCQkvKiBlc2NhcGUgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzICovCisgCQl0ZXh0X2xlbiA9IHN0cnVjdF92YWxfdTE2KGJ1ZiwgbG9nX29mZnNldF90ZXh0X2xlbik7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDEwLWZzMmR0LmMtd29yay1hcm91bmQtbWlzc2luZy1nZXRsaW5lLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxMC1mczJkdC5jLXdvcmstYXJvdW5kLW1pc3NpbmctZ2V0bGluZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmYxNDg1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxMC1mczJkdC5jLXdvcmstYXJvdW5kLW1pc3NpbmctZ2V0bGluZS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGVkZWZkYTcwMmQ5MDZkNDcyZWU3YTY3NWY2YjUwNmQ1Y2ZjYTdhYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE3IEFwciAyMDE4IDEzOjQ4OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGZzMmR0LmM6IHdvcmsgYXJvdW5kIG1pc3NpbmcgZ2V0bGluZSgpCisKK1RoaXMgc2ltcGxlIGNhc2UgY2FuIGJlIHJld3J0dGVuIHdpdGggZmdldHMoKQorCitGaXgKKworIGZzMmR0LmM6IEluIGZ1bmN0aW9uICdkdF9jb3B5X29sZF9yb290X3BhcmFtJzoKKyBmczJkdC5jOjU0MTo2OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZ2V0bGluZScKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMvZnMyZHQuYyB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9rZXhlYy9mczJkdC5jIGIva2V4ZWMvZnMyZHQuYworaW5kZXggMDdhNWUyZi4uZDYzNTYzNiAxMDA2NDQKKy0tLSBhL2tleGVjL2ZzMmR0LmMKKysrKyBiL2tleGVjL2ZzMmR0LmMKK0BAIC01MzEsNiArNTMxLDkgQEAgc3RhdGljIHZvaWQgZHRfY29weV9vbGRfcm9vdF9wYXJhbSh2b2lkKQorIAljaGFyICpsYXN0X2NtZGxpbmUgPSBOVUxMOworIAljaGFyICpwLCAqb2xkX3BhcmFtOworIAlzaXplX3QgbGVuID0gMDsKKysjaWZkZWYgX19LTElCQ19fCisrCWNoYXIgYnVmWzUxMl07CisrI2VuZGlmCisgCisgCXN0cmNweShmaWxlbmFtZSwgcGF0aG5hbWUpOworIAlzdHJjYXQoZmlsZW5hbWUsICJib290YXJncyIpOworQEAgLTUzOCw4ICs1NDEsMTMgQEAgc3RhdGljIHZvaWQgZHRfY29weV9vbGRfcm9vdF9wYXJhbSh2b2lkKQorIAlpZiAoIWZwKQorIAkJcmV0dXJuOworIAorKyNpZm5kZWYgX19LTElCQ19fCisgCWlmIChnZXRsaW5lKCZsYXN0X2NtZGxpbmUsICZsZW4sIGZwKSA9PSAtMSkKKyAJCWRpZSgidW5hYmxlIHRvIHJlYWQgJXNcbiIsIGZpbGVuYW1lKTsKKysjZWxzZQorKwlsYXN0X2NtZGxpbmUgPSBmZ2V0cyhidWYsIDIwMCwgZnApOworKwlsYXN0X2NtZGxpbmVbc3RybGVuKGxhc3RfY21kbGluZSkgLSAxXSA9ICdcMCc7CisrI2VuZGlmCisgCisgCXAgPSBzdHJzdHIobGFzdF9jbWRsaW5lLCAicm9vdD0iKTsKKyAJaWYgKHApIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTEtcHVyZ2F0b3J5LU1ha2VmaWxlLWFkYXB0LXRvLWtsY2MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDExLXB1cmdhdG9yeS1NYWtlZmlsZS1hZGFwdC10by1rbGNjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNjE1MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDExLXB1cmdhdG9yeS1NYWtlZmlsZS1hZGFwdC10by1rbGNjLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gOWI2ODY2YjEwNmViM2FkMTExMTViZDU5MWEyM2U2NWE2OGRkODQ3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjEgQXVnIDIwMTggMTY6MzE6NDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gcHVyZ2F0b3J5IE1ha2VmaWxlOiBhZGFwdCB0byBrbGNjCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBba2xpYmMgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyBwdXJnYXRvcnkvTWFrZWZpbGUgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wdXJnYXRvcnkvTWFrZWZpbGUgYi9wdXJnYXRvcnkvTWFrZWZpbGUKK2luZGV4IDQ5Y2U4MGEuLjcyZWVmYWEgMTAwNjQ0CistLS0gYS9wdXJnYXRvcnkvTWFrZWZpbGUKKysrKyBiL3B1cmdhdG9yeS9NYWtlZmlsZQorQEAgLTQ3LDcgKzQ3LDcgQEAgcHVyZ2F0b3J5L3NoYTI1Ni5vOiAkKHNyY2RpcikvdXRpbF9saWIvc2hhMjU2LmMKKyAkKFBVUkdBVE9SWSk6IENDPSQoVEFSR0VUX0NDKQorICQoUFVSR0FUT1JZKTogQ0ZMQUdTKz0kKFBVUkdBVE9SWV9FWFRSQV9DRkxBR1MpIFwKKyAJCSAgICAgICQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKSBcCistCQkgICAgICAtT3MgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIFwKKysJCSAgICAgIC1PcyAtZm5vLWJ1aWx0aW4gLWZmcmVlc3RhbmRpbmcgLW5vc3RkaW5jIFwKKyAJCSAgICAgIC1mbm8temVyby1pbml0aWFsaXplZC1pbi1ic3MgXAorIAkJICAgICAgLWZuby1QSUMgLWZuby1QSUUgLWZuby1zdGFjay1wcm90ZWN0b3IKKyAKK0BAIC01OSw4ICs1OSw4IEBAICQoUFVSR0FUT1JZKTogQ1BQRkxBR1M9JCgkKEFSQ0gpX1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MpIFwKKyAJCQktSWluY2x1ZGUgXAorIAkJCS1JJChzaGVsbCAkKENDKSAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGUpCisgJChQVVJHQVRPUlkpOiBMREZMQUdTPSQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKVwKKy0JCQktV2wsLS1uby11bmRlZmluZWQgLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgXAorLQkJCS1ub2RlZmF1bHRsaWJzIC1lIHB1cmdhdG9yeV9zdGFydCAtciBcCisrCQkJLVdsLC0tbm8tdW5kZWZpbmVkIC1XbCwtbm8tcGllIC1XbCwtbm9zdGFydGZpbGVzIC1XbCwtbm9zdGRsaWIgXAorKwkJCS1XbCwtbm9kZWZhdWx0bGlicyAtV2wsLS1lbnRyeT1wdXJnYXRvcnlfc3RhcnQgLVdsLC1yIFwKKyAJCQktV2wsLU1hcD0kKFBVUkdBVE9SWV9NQVApCisgCisgJChQVVJHQVRPUlkpOiAkKFBVUkdBVE9SWV9PQkpTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDEyLXB1cmdhdG9yeS1zdHJpbmcuYy1hdm9pZC1pbmNsdXNpb24tb2Ytc3RyaW5nLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDEyLXB1cmdhdG9yeS1zdHJpbmcuYy1hdm9pZC1pbmNsdXNpb24tb2Ytc3RyaW5nLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5MzRkYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTItcHVyZ2F0b3J5LXN0cmluZy5jLWF2b2lkLWluY2x1c2lvbi1vZi1zdHJpbmcuaC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDJkMmFkMTZmOTMyOGE3Y2JiM2Y1Yjg0NzlhZTkzZWI5MjNhMDcyN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IEFwciAyMDE4IDAwOjI4OjE0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHB1cmdhdG9yeS9zdHJpbmcuYzogYXZvaWQgaW5jbHVzaW9uIG9mIHN0cmluZy5oCisKK0ZpeAorCisgcHVyZ2F0b3J5L3N0cmluZy5jOjM5OjU6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ21lbWNtcCcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisgcHVyZ2F0b3J5L3N0cmluZy5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9zdHJpbmcuYyBiL3B1cmdhdG9yeS9zdHJpbmcuYworaW5kZXggZjA2YzQ2MC4uYzVlOTc4YSAxMDA2NDQKKy0tLSBhL3B1cmdhdG9yeS9zdHJpbmcuYworKysrIGIvcHVyZ2F0b3J5L3N0cmluZy5jCitAQCAtMSw1ICsxLDcgQEAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2lmbmRlZiBfX0tMSUJDX18KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2VuZGlmCisgCisgc2l6ZV90IHN0cm5sZW4oY29uc3QgY2hhciAqcywgc2l6ZV90IG1heCkKKyB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTMtc2hhMjU2LmgtYXZvaWQtaW5jbHVzaW9uLW9mLXN5cy10eXBlcy5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxMy1zaGEyNTYuaC1hdm9pZC1pbmNsdXNpb24tb2Ytc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQxNjY0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTMtc2hhMjU2LmgtYXZvaWQtaW5jbHVzaW9uLW9mLXN5cy10eXBlcy5oLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gZWM2MDAwYjlmMjg3ZTYyY2IwNzQ2ZTI2Y2ZhNDM3MmM3ZWE1MjhmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTkgQXByIDIwMTggMjM6MjY6NDMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gc2hhMjU2Lmg6IGF2b2lkIGluY2x1c2lvbiBvZiBzeXMvdHlwZXMuaAorCitGaXgKKworIHB1cmdhdG9yeS9wcmludGYuYzoyOjEwOiBmYXRhbCBlcnJvcjogbGltaXRzLmg6CisgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyB1dGlsX2xpYi9pbmNsdWRlL3NoYTI1Ni5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdXRpbF9saWIvaW5jbHVkZS9zaGEyNTYuaCBiL3V0aWxfbGliL2luY2x1ZGUvc2hhMjU2LmgKK2luZGV4IDQ2N2ZiMjIuLjQwZmQzZWQgMTAwNjQ0CistLS0gYS91dGlsX2xpYi9pbmNsdWRlL3NoYTI1Ni5oCisrKysgYi91dGlsX2xpYi9pbmNsdWRlL3NoYTI1Ni5oCitAQCAtMSw3ICsxLDExIEBACisgI2lmbmRlZiBTSEEyNTZfSAorICNkZWZpbmUgU0hBMjU2X0gKKyAKKysjaWZuZGVmIF9fS0xJQkNfXworICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgdHlwZWRlZiBzdHJ1Y3QKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxNC1hZGQtaWZfbmFtZWluZGV4LWZyb20tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTQtYWRkLWlmX25hbWVpbmRleC1mcm9tLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyMTI2NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjLzAwMTQtYWRkLWlmX25hbWVpbmRleC1mcm9tLW11c2wucGF0Y2gKQEAgLTAsMCArMSwxNTIgQEAKK0Zyb20gYjE1ZTk2MTBiNGFiNTJjMzgxZTcxMjI0MWQ1MGRlYTk2ZDUwZDg3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMiBNYXkgMjAxOCAyMzoxNDoxOSArMDIwMAorU3ViamVjdDogW1BBVENIIDE0LzE0XSBhZGQgaWZfbmFtZWluZGV4IGZyb20gbXVzbAorCitUYWtlbiBmcm9tIG11c2wsIG1pbmltYWwgY2hhbmdlcy4KK2tsaWJjIGxhY2tzIHN0cnVjdCBhbmQgZnVuYworCitGaXgKKworIGlmZG93bi5vOiBJbiBmdW5jdGlvbiBgaWZkb3duJzoKKyBpZmRvd24uYyAoLnRleHQrMHgzMCk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGlmX25hbWVpbmRleCcKKworV2hpbGUgdGhlcmUgYWRkIGtsaWJjLXNwZWNpZmljIGd1YXJkIGFuZCBpbmNsdWRlIHN5cy90eXBlcy5oCit0byBmaXggOgorCisgL2tleGVjL2lmX25hbWVpbmRleC5jOjI6CisgL3Vzci9saWIva2xpYmMvaW5jbHVkZS9saW51eC90eXBlcy5oOjIyOjA6Cisgd2FybmluZzogIl9fYml0d2lzZSIgcmVkZWZpbmVkCisgI2RlZmluZSBfX2JpdHdpc2UgX19iaXR3aXNlX18KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisga2V4ZWMvTWFrZWZpbGUgICAgICAgfCAgMiArLQorIGtleGVjL2lmX25hbWVpbmRleC5jIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGtleGVjL2lmX25hbWVpbmRleC5oIHwgMTUgKysrKysrKysrKysrCisga2V4ZWMvaWZkb3duLmMgICAgICAgfCAgMyArKysKKyA0IGZpbGVzIGNoYW5nZWQsIDgzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvaWZfbmFtZWluZGV4LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQga2V4ZWMvaWZfbmFtZWluZGV4LmgKKworZGlmZiAtLWdpdCBhL2tleGVjL01ha2VmaWxlIGIva2V4ZWMvTWFrZWZpbGUKK2luZGV4IDRkYjg0ZDguLmZiNzUyMGIgMTAwNjQ0CistLS0gYS9rZXhlYy9NYWtlZmlsZQorKysrIGIva2V4ZWMvTWFrZWZpbGUKK0BAIC0xMSw3ICsxMSw3IEBAIEtFWEVDX1NSQ1MgPSAkKEtFWEVDX1NSQ1NfYmFzZSkKKyBLRVhFQ19HRU5FUkFURURfU1JDUyA9CisgCisgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tleGVjLmMKKy1LRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvaWZkb3duLmMKKytLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMvaWZfbmFtZWluZGV4IGtleGVjL2lmZG93bi5jCisgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tleGVjLWVsZi5jCisgS0VYRUNfU1JDU19iYXNlICs9IGtleGVjL2tleGVjLWVsZi1leGVjLmMKKyBLRVhFQ19TUkNTX2Jhc2UgKz0ga2V4ZWMva2V4ZWMtZWxmLWNvcmUuYworZGlmZiAtLWdpdCBhL2tleGVjL2lmX25hbWVpbmRleC5jIGIva2V4ZWMvaWZfbmFtZWluZGV4LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lNTg2ZTQxCistLS0gL2Rldi9udWxsCisrKysgYi9rZXhlYy9pZl9uYW1laW5kZXguYworQEAgLTAsMCArMSw2NCBAQAorKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKysjaWZkZWYgX19LTElCQ19fCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPG5ldC9pZi5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaWZkZWYgX19LTElCQ19fCisrI2luY2x1ZGUgImlmX25hbWVpbmRleC5oIgorKyNlbmRpZgorKworK3N0YXRpYyB2b2lkICpkb19uYW1laW5kZXgoaW50IHMsIHNpemVfdCBuKQorK3sKKysJc2l6ZV90IGksIGxlbiwgazsKKysJc3RydWN0IGlmY29uZiBjb25mOworKwlzdHJ1Y3QgaWZfbmFtZWluZGV4ICppZHg7CisrCisrCWlkeCA9IG1hbGxvYyhuICogKHNpemVvZihzdHJ1Y3QgaWZfbmFtZWluZGV4KStzaXplb2Yoc3RydWN0IGlmcmVxKSkpOworKwlpZiAoIWlkeCkgcmV0dXJuIDA7CisrCisrCWNvbmYuaWZjX2J1ZiA9ICh2b2lkICopJmlkeFtuXTsKKysJY29uZi5pZmNfbGVuID0gbGVuID0gbiAqIHNpemVvZihzdHJ1Y3QgaWZyZXEpOworKwlpZiAoaW9jdGwocywgU0lPQ0dJRkNPTkYsICZjb25mKSA8IDApIHsKKysJCWZyZWUoaWR4KTsKKysJCXJldHVybiAwOworKwl9CisrCWlmIChjb25mLmlmY19sZW4gPT0gbGVuKSB7CisrCQlmcmVlKGlkeCk7CisrCQlyZXR1cm4gKHZvaWQgKiktMTsKKysJfQorKworKwluID0gY29uZi5pZmNfbGVuIC8gc2l6ZW9mKHN0cnVjdCBpZnJlcSk7CisrCWZvciAoaT1rPTA7IGk8bjsgaSsrKSB7CisrCQlpZiAoaW9jdGwocywgU0lPQ0dJRklOREVYLCAmY29uZi5pZmNfcmVxW2ldKSA8IDApIHsKKysJCQlrKys7CisrCQkJY29udGludWU7CisrCQl9CisrCQlpZHhbaS1rXS5pZl9pbmRleCA9IGNvbmYuaWZjX3JlcVtpXS5pZnJfaWZpbmRleDsKKysJCWlkeFtpLWtdLmlmX25hbWUgPSBjb25mLmlmY19yZXFbaV0uaWZyX25hbWU7CisrCX0KKysJaWR4W2kta10uaWZfbmFtZSA9IDA7CisrCWlkeFtpLWtdLmlmX2luZGV4ID0gMDsKKysKKysJcmV0dXJuIGlkeDsKKyt9CisrCisrc3RydWN0IGlmX25hbWVpbmRleCAqaWZfbmFtZWluZGV4KCkKKyt7CisrCXNpemVfdCBuOworKwl2b2lkICpwID0gMDsKKysJaW50IHMgPSBzb2NrZXQoQUZfVU5JWCwgU09DS19ER1JBTSwgMCk7CisrCWlmIChzPj0wKSB7CisrCQlmb3IgKG49MDsgKHA9ZG9fbmFtZWluZGV4KHMsIG4pKSA9PSAodm9pZCAqKS0xOyBuKyspOworKy8qCQlfX3N5c2NhbGwoU1lTX2Nsb3NlLCBzKTsgKi8KKysJCWNsb3NlKHMpOworKwl9CisrCWVycm5vID0gRU5PQlVGUzsKKysJcmV0dXJuIHA7CisrfQorZGlmZiAtLWdpdCBhL2tleGVjL2lmX25hbWVpbmRleC5oIGIva2V4ZWMvaWZfbmFtZWluZGV4LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xNzI1ZmJkCistLS0gL2Rldi9udWxsCisrKysgYi9rZXhlYy9pZl9uYW1laW5kZXguaAorQEAgLTAsMCArMSwxNSBAQAorKyNpZm5kZWYgX05FVF9JRl9fTkFNRUlOREVYX0gKKysjZGVmaW5lIF9ORVRfSUZfTkFNRUlOREVYX0gKKysKKytzdHJ1Y3QgaWZfbmFtZWluZGV4CisreworKyAgICB1bnNpZ25lZCBpbnQgaWZfaW5kZXg7CisrICAgIGNoYXIgKmlmX25hbWU7CisrfTsKKysKKyt1bnNpZ25lZCBpbnQgaWZfbmFtZXRvaW5kZXggKGNvbnN0IGNoYXIgKik7CisrY2hhciAqaWZfaW5kZXh0b25hbWUgKHVuc2lnbmVkIGludCwgY2hhciAqKTsKKytzdHJ1Y3QgaWZfbmFtZWluZGV4ICppZl9uYW1laW5kZXggKHZvaWQpOworK3ZvaWQgaWZfZnJlZW5hbWVpbmRleCAoc3RydWN0IGlmX25hbWVpbmRleCAqKTsKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9rZXhlYy9pZmRvd24uYyBiL2tleGVjL2lmZG93bi5jCitpbmRleCA4MmM2MTQxLi5jYzNjYTlmIDEwMDY0NAorLS0tIGEva2V4ZWMvaWZkb3duLmMKKysrKyBiL2tleGVjL2lmZG93bi5jCitAQCAtMTgsNiArMTgsOSBAQCBjaGFyICp2X2lmZG93biA9ICJAKCMpaWZkb3duLmMgIDEuMTEgIDAyLUp1bi0xOTk4ICBtaXF1ZWxzQGNpc3Ryb24ubmwiOworIAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorKyNpZmRlZiBfX0tMSUJDX18KKysjaW5jbHVkZSAiaWZfbmFtZWluZGV4LmgiCisrI2VuZGlmCisgCisgLyoKKyAgKiAgRmlyc3QsIHdlIGZpbmQgYWxsIHNoYXBlciBkZXZpY2VzIGFuZCBkb3duIHRoZW0uIFRoZW4gd2UKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxNS12bWNvcmUtZG1lc2ctZml4LXdhcm5pbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy8wMDE1LXZtY29yZS1kbWVzZy1maXgtd2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjg4Yjk0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvMDAxNS12bWNvcmUtZG1lc2ctZml4LXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAzMjk0MjY2YzZhODc1YzUwMDkwNjVjMWFlNWQwYjg2MjAwYzQxNDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBBcHIgMjAxOCAwMDo1MjozMSArMDIwMAorU3ViamVjdDogW1BBVENIIDYvNl0gdm1jb3JlLWRtZXNnOiBmaXggd2FybmluZworCisgIyBkZWZpbmUgX19iaXR3aXNlCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIHZtY29yZS1kbWVzZy92bWNvcmUtZG1lc2cuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jIGIvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCitpbmRleCBlMzQwZWY0Li45MWU0Nzg5IDEwMDY0NAorLS0tIGEvdm1jb3JlLWRtZXNnL3ZtY29yZS1kbWVzZy5jCisrKysgYi92bWNvcmUtZG1lc2cvdm1jb3JlLWRtZXNnLmMKK0BAIC0yLDYgKzIsOSBAQAorICNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEKKyAjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisrI2lmZGVmIF9fS0xJQkNfXworKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CisgI2luY2x1ZGUgPGJ5dGVzd2FwLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybTY0LWNyYXNoZHVtcC1hcm02NC5jLWZpeC13YXJuaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvYXJtNjQtY3Jhc2hkdW1wLWFybTY0LmMtZml4LXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiZTRkZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybTY0LWNyYXNoZHVtcC1hcm02NC5jLWZpeC13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNmY2OWY0ODlhNDQyYjNhMTkyZTRjMDg3NDhlZThjNGQzMWM3NWRhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjkgQXByIDIwMTggMDA6NDY6MTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzZdIGFybTY0OiBjcmFzaGR1bXAtYXJtNjQuYzogZml4IHdhcm5pbmcKKworICAgICAgICAgICAgICAgICBmcm9tIC4uL2dpdC9rZXhlYy9rZXhlYy5oOjYsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vZ2l0L2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmM6MTg6CisvdG1wL2J1aWxkL3RtcC1tdXNsL3dvcmsvYWFyY2g2NC1vZS1saW51eC1tdXNsL2tleGVjLXRvb2xzLWtsaWJjLzAuNitnaXRBVVRPSU5DKworMDQ4MWU5ZWQ2MS1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2tsaWJjL2luY2x1ZGUva2xpYmMvY29tcGlsZXIuaDoxNDQ6MDogd2FybmkKK25nOiAiX19iaXR3aXNlIiByZWRlZmluZWQKKyAjIGRlZmluZSBfX2JpdHdpc2UKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorLS0tCisga2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9jcmFzaGR1bXAtYXJtNjQuYyBiL2tleGVjL2FyY2gvYXJtNjQvY3Jhc2hkdW1wLWFybTY0LmMKK2luZGV4IDRmZDdhYTguLjg5MGQ4OGYgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCisrKysgYi9rZXhlYy9hcmNoL2FybTY0L2NyYXNoZHVtcC1hcm02NC5jCitAQCAtMTMsNiArMTMsOSBAQAorICNkZWZpbmUgX0dOVV9TT1VSQ0UKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaWZkZWYgX19LTElCQ19fCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxsaW51eC9lbGYuaD4KKyAKKyAjaW5jbHVkZSAia2V4ZWMuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvYXJtNjRfa2V4ZWMtYXJtNjQuYy13b3JrYXJvdW5kLWZvci1nZXRyYW5kb20tc3lzY2FsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybTY0X2tleGVjLWFybTY0LmMtd29ya2Fyb3VuZC1mb3ItZ2V0cmFuZG9tLXN5c2NhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjIyYWMzYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybTY0X2tleGVjLWFybTY0LmMtd29ya2Fyb3VuZC1mb3ItZ2V0cmFuZG9tLXN5c2NhbGwucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSAxMGFmZWVjZDEwNDk5ZmJkNjRiMmM2OGQzYjA3NmM2OTA2ZGY0NDFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IFNlcCAyMDE4IDE3OjA3OjQ4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGtleGVjLWFybTY0LmM6IHdvcmthcm91bmQgZm9yIGdldHJhbmRvbSgpIHN5c2NhbGwKKworVGhlIHN5c2NhbGwgd2FzIGFkZGVkIHRvIE9FJ3Mga2xpYmMuCitGaXgKKworfCAuLi9naXQva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jOjE5OjEwOiBmYXRhbCBlcnJvcjogc3lzY2FsbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICAjaW5jbHVkZSA8c3lzY2FsbC5oPgorCithbmQKKworfCAuLi9naXQva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jOiBJbiBmdW5jdGlvbiAnc2V0dXBfMm5kX2R0Yic6Cit8IC4uL2dpdC9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmM6NDk5OjEyOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZ2V0cmFuZG9tJzsgZGlkIHlvdSBtZWFuICdzcmFuZG9tJz8gWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCit8ICAgIHJlc3VsdCA9IGdldHJhbmRvbSgmZmR0X3ZhbDY0LAorCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBba2xpYmMgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyBrZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMgfCAxMiArKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jIGIva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCitpbmRleCA3YTEyNDc5Li44YTdmNWM1IDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9hcm02NC9rZXhlYy1hcm02NC5jCisrKysgYi9rZXhlYy9hcmNoL2FybTY0L2tleGVjLWFybTY0LmMKK0BAIC0xNiw3ICsxNiwxMSBAQAorICNpbmNsdWRlIDxlbGYuaD4KKyAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrCisrI2lmbmRlZiBfX0tMSUJDX18KKyAjaW5jbHVkZSA8c3lzY2FsbC5oPgorKyNlbmRpZgorKworICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KKyAKK0BAIC00ODcsMTAgKzQ5MSwxNiBAQCBzdGF0aWMgaW50IHNldHVwXzJuZF9kdGIoc3RydWN0IGR0YiAqZHRiLCBjaGFyICpjb21tYW5kX2xpbmUsIGludCBvbl9jcmFzaCkKKyAJCSAqIGhhdmUgYSB2YWxpZCByYW5kb20gc2VlZCB0byBwYXNzIHRvIHRoZQorIAkJICogc2Vjb25kYXJ5IGtlcm5lbC4KKyAJCSAqLworKyNpZm5kZWYgX19LTElCQ19fCisgCQlyZXN1bHQgPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sICZmZHRfdmFsNjQsCisgCQkJCXNpemVvZihmZHRfdmFsNjQpLAorIAkJCQlHUk5EX05PTkJMT0NLKTsKKy0KKysjZWxzZQorKwkJZXh0ZXJuIHNzaXplX3QgZ2V0cmFuZG9tKHZvaWQgKiwgc2l6ZV90LCB1bnNpZ25lZCBpbnQpOworKwkJcmVzdWx0ID0gZ2V0cmFuZG9tKCZmZHRfdmFsNjQsCisrCQkJCXNpemVvZihmZHRfdmFsNjQpLAorKwkJCQlHUk5EX05PTkJMT0NLKTsKKysjZW5kaWYKKyAJCWlmKHJlc3VsdCA9PSAtMSkgeworIAkJCWRiZ3ByaW50ZigiJXM6IFJlYWRpbmcgcmFuZG9tIGJ5dGVzIGZhaWxlZC5cbiIsCisgCQkJCQlfX2Z1bmNfXyk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybTY0X2tleGVjLWltYWdlLWhlYWRlci5oLWFkZC1taXNzaW5nLWxlNjR0b2gucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9hcm02NF9rZXhlYy1pbWFnZS1oZWFkZXIuaC1hZGQtbWlzc2luZy1sZTY0dG9oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZWNiYWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9hcm02NF9rZXhlYy1pbWFnZS1oZWFkZXIuaC1hZGQtbWlzc2luZy1sZTY0dG9oLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gYWY3ZDA2YTc1M2E0YzM3N2I3ZmZlNTg3ZGE2N2E2YmE1NjA0OGJlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTkgQXByIDIwMTggMTA6NDc6MTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGtleGVjL2FybTY0OiBpbWFnZS1oZWFkZXIuaDogYWRkIG1hY3JvIGZvciBsZTY0dG9oCisKK0ZpeAorCisga2V4ZWMtYXJtNjQuYzooLnRleHQrMHgzNzApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZTY0dG9oJworIGtleGVjLWFybTY0LmM6KC50ZXh0KzB4MzgwKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGU2NHRvaCcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMvYXJjaC9hcm02NC9pbWFnZS1oZWFkZXIuaCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm02NC9pbWFnZS1oZWFkZXIuaCBiL2tleGVjL2FyY2gvYXJtNjQvaW1hZ2UtaGVhZGVyLmgKK2luZGV4IDE1OGQ0MTEuLjEwZWQyZDYgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2FybTY0L2ltYWdlLWhlYWRlci5oCisrKysgYi9rZXhlYy9hcmNoL2FybTY0L2ltYWdlLWhlYWRlci5oCitAQCAtOCw2ICs4LDE1IEBACisgI2luY2x1ZGUgPGVuZGlhbi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKysjaWZkZWYgX19LTElCQ19fCisrI2lmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4KKysjZGVmaW5lIGxlNjR0b2goeCkgKHgpCisrI2VuZGlmCisrI2lmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysjZGVmaW5lIGxlNjR0b2goeCkgX19ic3dhcF82NCh4KQorKyNlbmRpZgorKyNlbmRpZgorKworIC8qKgorICAqIHN0cnVjdCBhcm02NF9pbWFnZV9oZWFkZXIgLSBhcm02NCBrZXJuZWwgaW1hZ2UgaGVhZGVyLgorICAqCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybV9jcmFzaGR1bXAtZml4LWJ1ZmZlci1hbGlnbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2FybV9jcmFzaGR1bXAtZml4LWJ1ZmZlci1hbGlnbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmFmZGZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvYXJtX2NyYXNoZHVtcC1maXgtYnVmZmVyLWFsaWduLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gMDZiMGQ0M2MyMGY3YzYyMDA5MDJkNGM2ZGIzZDMzNDE2ODc3ZjcxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjYgQXVnIDIwMTggMjE6NDA6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIGFybS0gYmFja3BvcnQgZnJvbSBvZS1jb3JlCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKy0tLQorIGtleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKK2luZGV4IDI1MzBiMjkuLmFmMjYwMGQgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKKysrKyBiL2tleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYworQEAgLTI0MCw2ICsyNDAsNyBAQCBpbnQgbG9hZF9jcmFzaGR1bXBfc2VnbWVudHMoc3RydWN0IGtleGVjX2luZm8gKmluZm8sIGNoYXIgKm1vZF9jbWRsaW5lKQorIAl2b2lkICpidWY7CisgCWludCBlcnI7CisgCWludCBsYXN0X3JhbmdlczsKKysJdW5zaWduZWQgc2hvcnQgYWxpZ25fYml0X3NoaWZ0ID0gMjA7CisgCisgCS8qCisgCSAqIEZpcnN0IGZldGNoIGFsbCB0aGUgbWVtb3J5IChSQU0pIHJhbmdlcyB0aGF0IHdlIGFyZSBnb2luZyB0byBwYXNzIHRvCitAQCAtMjgxLDYgKzI4Miw3IEBAIGludCBsb2FkX2NyYXNoZHVtcF9zZWdtZW50cyhzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbywgY2hhciAqbW9kX2NtZGxpbmUpCisgCisgCQkvKiBmb3Igc3VwcG9ydCBMUEFFIGVuYWJsZWQga2VybmVsKi8KKyAJCWVsZl9pbmZvLmNsYXNzID0gRUxGQ0xBU1M2NDsKKysJCWFsaWduX2JpdF9zaGlmdCA9IDIxOworIAorIAkJZXJyID0gY3Jhc2hfY3JlYXRlX2VsZjY0X2hlYWRlcnMoaW5mbywgJmVsZl9pbmZvLAorIAkJCQkJIHVzYWJsZW1lbV9yZ25zLnJhbmdlcywKK0BAIC0zMDIsOCArMzA0LDkgQEAgaW50IGxvYWRfY3Jhc2hkdW1wX3NlZ21lbnRzKHN0cnVjdCBrZXhlY19pbmZvICppbmZvLCBjaGFyICptb2RfY21kbGluZSkKKyAJICogMU1CKSBzbyB0aGF0IGF2YWlsYWJsZSBtZW1vcnkgcGFzc2VkIGluIGtlcm5lbCBjb21tYW5kIGxpbmUgd2lsbCBiZQorIAkgKiBhbGlnbmVkIHRvIDFNQi4gVGhpcyBpcyBiZWNhdXNlIGtlcm5lbCBjcmVhdGVfbWFwcGluZygpIHdhbnRzIG1lbW9yeQorIAkgKiByZWdpb25zIHRvIGJlIGFsaWduZWQgdG8gU0VDVElPTl9TSVpFLgorKwkgKiBUaGUgU0VDVElPTl9TSVpFIG9mIExQQUUga2VybmVsIGlzICcxVUwgPDwgMjEnIGRlZmluZWQgaW4gcGd0YWJsZS0zbGV2ZWwuaAorIAkgKi8KKy0JZWxmY29yZWhkciA9IGFkZF9idWZmZXJfcGh5c192aXJ0KGluZm8sIGJ1ZiwgYnVmc3osIGJ1ZnN6LCAxIDw8IDIwLAorKwllbGZjb3JlaGRyID0gYWRkX2J1ZmZlcl9waHlzX3ZpcnQoaW5mbywgYnVmLCBidWZzeiwgYnVmc3osIDEgPDwgYWxpZ25fYml0X3NoaWZ0LAorIAkJCQkJICBjcmFzaF9rZXJuZWxfbWVtLnN0YXJ0LAorIAkJCQkJICBjcmFzaF9rZXJuZWxfbWVtLmVuZCwgLTEsIDApOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9hcm1fY3Jhc2hkdW1wLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvYXJtX2NyYXNoZHVtcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTk2MjYzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMvYXJtX2NyYXNoZHVtcC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDZkYWU0NzUyYTUzOTczYzE1MmIzZTkxZThhNGNhNzRhNDg2ZGFlOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPcGVuRW1iZWRkZWQgPG9lLnBhdGNoQG9lPgorRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAyMjo1MTowMCArMDIwMAorU3ViamVjdDogW1BBVENIXSB1c2Ugb3VyIGVsZi5oIGhlYWRlcgorCitGaXgKKworIGtleGVjL2FyY2gvYXJtL2NyYXNoZHVtcC1hcm0uYzo3MDoxMzogZXJyb3I6ICdFTV9BUk0nIHVuZGVjbGFyZWQgaGVyZQorIChub3QgaW4gYSBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnRU1fODYwJz8KKyAgICAubWFjaGluZSA9IEVNX0FSTSwKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jIGIva2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jCitpbmRleCBkYWE0Nzg4Li4yNTMwYjI5IDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9hcm0vY3Jhc2hkdW1wLWFybS5jCisrKysgYi9rZXhlYy9hcmNoL2FybS9jcmFzaGR1bXAtYXJtLmMKK0BAIC0yMSw3ICsyMSw3IEBACisgICogRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisgICovCisgI2luY2x1ZGUgPGxpbWl0cy5oPgorLSNpbmNsdWRlIDxlbGYuaD4KKysjaW5jbHVkZSAiLi4vLi4vLi4vaW5jbHVkZS9lbGYuaCIKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9rZXhlYy14MzIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9rZXhlYy14MzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZkMThlYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL2tleGVjLXgzMi5wYXRjaApAQCAtMCwwICsxLDg4IEBACit4ODZfNjQ6IEFkZCBzdXBwb3J0IHRvIGJ1aWxkIGtleGVjLXRvb2xzIHdpdGggeDMyIEFCSQorCitTdW1tYXJ5IG9mIGNoYW5nZXMsCisKK2NvbmZpZ3VyZS5hYzogQWRkIHRlc3QgZm9yIGRldGVjdCB4MzIgQUJJLgorcHVyZ2F0b3J5L2FyY2gveDg2XzY0L01ha2VmaWxlOiBOb3QgdXNlIG1jbW9kZWwgbGFyZ2Ugd2hlbgorCXgzMiBBQkkgaXMgc2V0Lgora2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYzogV2hlbiB4MzIgQUJJIGlzIHNldAorCXVzZSBFTEZDTEFTUzMyIGluc3RlYWQgb2YgRUxGQ0xBU1M2NC4KK2tleGVjL2tleGVjLXN5c2NhbGwuaDogQWRkIGNvcnJlY3Qgc3lzY2FsbCBudW1iZXIgZm9yIHgzMiBBQkkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBsaW51eC5pbnRlbC5jb20+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5ICsrKysrKysrKworIGtleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMgfCA0ICsrKysKKyBrZXhlYy9rZXhlYy1zeXNjYWxsLmggICAgICAgICAgICAgICAgICAgIHwgNCArKysrCisgcHVyZ2F0b3J5L2FyY2gveDg2XzY0L01ha2VmaWxlICAgICAgICAgICB8IDQgKysrLQorIDQgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDoga2V4ZWMtdG9vbHMtMi4wLjEwL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGtleGVjLXRvb2xzLTIuMC4xMC9jb25maWd1cmUuYWMKK0BAIC01Niw2ICs1NiwxNSBAQCBjYXNlICR0YXJnZXRfY3B1IGluCisgCQk7OworIAlpYTY0fHg4Nl82NHxhbHBoYXxtNjhrICkKKyAJCUFSQ0g9IiR0YXJnZXRfY3B1IgorKworKwkJZG5sIC0tLVRlc3QgZm9yIHgzMiBBQkkgaW4geDg2XzY0CisrCQlpZiB0ZXN0ICJ4JEFSQ0giID0gInh4ODZfNjQiIDsgdGhlbgorKwkJCUFDX0VHUkVQX0NQUCh4MzJfdGVzdCwKKysJCQlbI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZCAoX19JTFAzMl9fKQorKwkJCQl4MzJfdGVzdAorKwkJCSNlbmRpZgorKwkJCV0sIFNVQkFSQ0g9J3gzMicsIFNVQkFSQ0g9JzY0JykKKysJCWZpCisgCQk7OworIAkqICkKKyAJCUFDX01TR19FUlJPUihbdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlICR0YXJnZXRfY3B1XSkKK0luZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMKKysrKyBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworQEAgLTgsNyArOCwxMSBAQCBpbnQgbWFjaGluZV92ZXJpZnlfZWxmX3JlbChzdHJ1Y3QgbWVtX2VoCisgCWlmIChlaGRyLT5laV9kYXRhICE9IEVMRkRBVEEyTFNCKSB7CisgCQlyZXR1cm4gMDsKKyAJfQorKyNpZmRlZiBfX0lMUDMyX18KKysJaWYgKGVoZHItPmVpX2NsYXNzICE9IEVMRkNMQVNTMzIpIHsKKysjZWxzZQorIAlpZiAoZWhkci0+ZWlfY2xhc3MgIT0gRUxGQ0xBU1M2NCkgeworKyNlbmRpZgorIAkJcmV0dXJuIDA7CisgCX0KKyAJaWYgKGVoZHItPmVfbWFjaGluZSAhPSBFTV9YODZfNjQpIHsKK0luZGV4OiBrZXhlYy10b29scy0yLjAuMTAva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0ga2V4ZWMtdG9vbHMtMi4wLjEwLm9yaWcva2V4ZWMva2V4ZWMtc3lzY2FsbC5oCisrKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2tleGVjLXN5c2NhbGwuaAorQEAgLTMxLDggKzMxLDEyIEBACisgI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCTI2OAorICNlbmRpZgorICNpZmRlZiBfX3g4Nl82NF9fCisrI2lmZGVmIF9fSUxQMzJfXworKyNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQk1MjgKKysjZWxzZQorICNkZWZpbmUgX19OUl9rZXhlY19sb2FkCQkyNDYKKyAjZW5kaWYKKysjZW5kaWYKKyAjaWZkZWYgX19zMzkweF9fCisgI2RlZmluZSBfX05SX2tleGVjX2xvYWQJCTI3NworICNlbmRpZgorSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9wdXJnYXRvcnkvYXJjaC94ODZfNjQvTWFrZWZpbGUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBrZXhlYy10b29scy0yLjAuMTAub3JpZy9wdXJnYXRvcnkvYXJjaC94ODZfNjQvTWFrZWZpbGUKKysrKyBrZXhlYy10b29scy0yLjAuMTAvcHVyZ2F0b3J5L2FyY2gveDg2XzY0L01ha2VmaWxlCitAQCAtMjMsNCArMjMsNiBAQCB4ODZfNjRfUFVSR0FUT1JZX1NSQ1MgKz0gcHVyZ2F0b3J5L2FyY2gvCisgeDg2XzY0X1BVUkdBVE9SWV9TUkNTICs9IHB1cmdhdG9yeS9hcmNoL2kzODYvdmdhLmMKKyB4ODZfNjRfUFVSR0FUT1JZX1NSQ1MgKz0gcHVyZ2F0b3J5L2FyY2gvaTM4Ni9waWMuYworIAorLXg4Nl82NF9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTID0gLW1jbW9kZWw9bGFyZ2UKKytpZmVxICgkKFNVQkFSQ0gpLDY0KQorKyAgICAgICAgeDg2XzY0X1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MgPSAtbWNtb2RlbD1sYXJnZQorK2VuZGlmCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9wb3dlcnBjLXB1cmdhdG9yeS1NYWtlZmlsZS1yZW1vdmUtdW5rbm93bi1mbGFncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3Bvd2VycGMtcHVyZ2F0b3J5LU1ha2VmaWxlLXJlbW92ZS11bmtub3duLWZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYjIwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9wb3dlcnBjLXB1cmdhdG9yeS1NYWtlZmlsZS1yZW1vdmUtdW5rbm93bi1mbGFncy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDcwOWRmZTQ1N2MwN2FhMDI3NWYzZGExNDYzNGNiY2U1Y2YxMDI5ZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IEFwciAyMDE4IDE5OjI2OjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBwb3dlcnBjL3B1cmdhdG9yeTogTWFrZWZpbGU6IHJlbW92ZSB1bmtub3duIGZsYWdzIGZvcgorIHBvd2VycGMKKworRml4CisKKyBwb3dlcnBjLW9lLWxpbnV4LW11c2wtbGQ6IHVucmVjb2duaXNlZCBlbXVsYXRpb24gbW9kZTogc29mdC1mbG9hdAorIFN1cHBvcnRlZCBlbXVsYXRpb25zOiBlbGYzMnBwY2xpbnV4IGVsZjMycHBjIGVsZjMycHBjc2ltIGVsZjMybHBwY2xpbnV4CisgICAgICAgICAgICAgICAgICAgICAgIGVsZjMybHBwYyBlbGYzMmxwcGNzaW0gZWxmNjRwcGMgZWxmNjRscHBjCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBba2xpYmMgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWEgQWRhbWkgPGFuZHJlYS5hZGFtaUBnbWFpbC5jb20+CistLS0KKyBwdXJnYXRvcnkvYXJjaC9wcGMvTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9wcGMvTWFrZWZpbGUgYi9wdXJnYXRvcnkvYXJjaC9wcGMvTWFrZWZpbGUKK2luZGV4IGM4NWM1OGEuLmNkNDRhMTYgMTAwNjQ0CistLS0gYS9wdXJnYXRvcnkvYXJjaC9wcGMvTWFrZWZpbGUKKysrKyBiL3B1cmdhdG9yeS9hcmNoL3BwYy9NYWtlZmlsZQorQEAgLTcsNyArNyw3IEBAIHBwY19QVVJHQVRPUllfU1JDUyArPSBwdXJnYXRvcnkvYXJjaC9wcGMvbWlzYy5TCisgcHBjX1BVUkdBVE9SWV9TUkNTICs9IHB1cmdhdG9yeS9hcmNoL3BwYy9wdXJnYXRvcnktcHBjLmMKKyBwcGNfUFVSR0FUT1JZX1NSQ1MgKz0gcHVyZ2F0b3J5L2FyY2gvcHBjL2NvbnNvbGUtcHBjLmMKKyAKKy1wcGNfUFVSR0FUT1JZX0VYVFJBX0NGTEFHUyArPSAtbXNvZnQtZmxvYXQKKysjcHBjX1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MgKz0gLW1zb2Z0LWZsb2F0CisgCisgZGlzdCArPSBwdXJnYXRvcnkvYXJjaC9wcGMvTWFrZWZpbGUgJChwcGNfUFVSR0FUT1JZX1NSQ1MpCQlcCisgCXB1cmdhdG9yeS9hcmNoL3BwYy9wdXJnYXRvcnktcHBjLmggcHVyZ2F0b3J5L2FyY2gvcHBjL3BwY19hc20uaAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9wb3dlcnBjX2NoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy9wb3dlcnBjX2NoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM5N2Q5MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3Bvd2VycGNfY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGIxOWI2OGVhYjU2N2FhNTM0Y2Y4ZGVjNzlmZTE4ZTNkYzBlMTQwNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBRdWFueWFuZyBXYW5nIDxxdWFueWFuZy53YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE2IEp1biAyMDE1IDEyOjU5OjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHBvd2VycGM6IGNoYW5nZSB0aGUgbWVtb3J5IHNpemUgbGltaXQKKworV2hlbiBydW4gImtleGVjIiBpbiBwb3dlcnBjIGJvYXJkLCB0aGUga2V4ZWMgaGFzIGEgbGltaXQgdGhhdAordGhlIGtlcm5lbCB0ZXh0IGFuZCBic3Mgc2l6ZSBtdXN0IGJlIGxlc3MgdGhhbiAyNE0uIEJ1dCBub3cKK3NvbWUga2VybmVsIHNpemUgZXhjZWVkIHRoZSBsaW1pdC4gU28gd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxpbWl0LAorZWxzZSB3aWxsIGdldCB0aGUgZXJyb3IgbG9nIGFzIGJlbG93OgorCitteV9sb2FkOjY2OTogZG8KK0NvdWxkIG5vdCBmaW5kIGEgZnJlZSBhcmVhIG9mIG1lbW9yeSBvZiAweDEyNDAwIGJ5dGVzLi4uCitDb3VsZCBub3QgZmluZCBhIGZyZWUgYXJlYSBvZiBtZW1vcnkgb2YgMHgxMzAwMCBieXRlcy4uLgorbG9jYXRlX2hvbGUgZmFpbGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBRdWFueWFuZyBXYW5nIDxxdWFueWFuZy53YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBrZXhlYy9hcmNoL3BwYy9rZXhlYy1wcGMuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGtleGVjLXRvb2xzLTIuMC4xMC9rZXhlYy9hcmNoL3BwYy9rZXhlYy1wcGMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGtleGVjLXRvb2xzLTIuMC4xMC5vcmlnL2tleGVjL2FyY2gvcHBjL2tleGVjLXBwYy5oCisrKysga2V4ZWMtdG9vbHMtMi4wLjEwL2tleGVjL2FyY2gvcHBjL2tleGVjLXBwYy5oCitAQCAtNDIsNyArNDIsNyBAQCB2b2lkIGRvbF9wcGNfdXNhZ2Uodm9pZCk7CisgICogRHVyaW5nIGluaXRhbCBzZXR1cCB0aGUga2VybmVsIGRvZXMgbm90IG1hcCB0aGUgd2hvbGUgbWVtb3J5IGJ1dCBhIHBhcnQgb2YKKyAgKiBpdC4gT24gQm9vay1FIHRoYXQgaXMgNjRNaUIsIDYwMSAyNE1pQiBvciAyNTZNaUIgKGlmIHBvc3NpYmxlKS4KKyAgKi8KKy0jZGVmaW5lIEtFUk5FTF9BQ0NFU1NfVE9QICgyNCAqIDEwMjQgKiAxMDI0KQorKyNkZWZpbmUgS0VSTkVMX0FDQ0VTU19UT1AgKDM2ICogMTAyNCAqIDEwMjQpCisgCisgLyogYm9vdCBibG9jayB2ZXJzaW9uIDE3IGFzIGRlZmluZWQgYnkgdGhlIGxpbnV4IGtlcm5lbCAqLworIHN0cnVjdCBib290YmxvY2sgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMveDg2X2Jhc2VuYW1lLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMveDg2X2Jhc2VuYW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMGVkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy94ODZfYmFzZW5hbWUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSA1ZjQ3YzMwNzU5Njg0Y2VhOWE3YTQwOTY0NjY4NmMxYTM1OGI3OGFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3BlbkVtYmVkZGVkIDxvZS5wYXRjaEBvZT4KK0RhdGU6IFdlZCwgMTEgQXByIDIwMTggMjI6NTE6MDUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVwbGFjZSBiYXNlbmFtZSgpIHdpdGggc3NjYW5mKCkKKwora2xpYmMgbGFja3MgYmFzZW5hbWUoKQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyBrZXhlYy9hcmNoL2kzODYveDg2LWxpbnV4LXNldHVwLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jIGIva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCitpbmRleCA2YzdkMjYwLi43ODUwMDgzIDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCisrKysgYi9rZXhlYy9hcmNoL2kzODYveDg2LWxpbnV4LXNldHVwLmMKK0BAIC0zMDQsOSArMzA0LDkgQEAgc3RhdGljIGludCBhZGRfZWRkX2VudHJ5KHN0cnVjdCB4ODZfbGludXhfcGFyYW1faGVhZGVyICpyZWFsX21vZGUsCisgCW1lbXNldChlZGRfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBlZGRfaW5mbykpOworIAorIAkvKiBleHRyYWN0IHRoZSBkZXZpY2UgbnVtYmVyICovCistCWlmIChzc2NhbmYoYmFzZW5hbWUoc3lzZnNfbmFtZSksICJpbnQxM19kZXYlaGh4IiwgJmRldm51bSkgIT0gMSkgeworKwlpZiAoc3NjYW5mKHN0cnJjaHIoc3lzZnNfbmFtZSwnLycpICsgMSwgImludDEzX2RldiVoaHgiLCAmZGV2bnVtKSAhPSAxKSB7CisgCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgZm9ybWF0IG9mIGludDEzX2RldiBkaXIgIgorLQkJCQkiZW50cnk6ICVzXG4iLCBiYXNlbmFtZShzeXNmc19uYW1lKSk7CisrCQkJCSJlbnRyeTogJXNcbiIsIHN0cnJjaHIoc3lzZnNfbmFtZSwnLycpICsgMSk7CisgCQlyZXR1cm4gLTE7CisgCX0KKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3g4Nl9rZXhlY190ZXN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMveDg2X2tleGVjX3Rlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM0NzFmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3g4Nl9rZXhlY190ZXN0LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gOWRlNjhlYzVhZjhkYjJlZmYzNTJmMTJkYTI4MTQ1ZmU1ZTk2MjQ0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9wZW5FbWJlZGRlZCA8b2UucGF0Y2hAb2U+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDIyOjUxOjA1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGRvIG5vdCBidWlsZCB0ZXN0CisKK1RoZSBwdXJwb3NlIG9mIHRoaXMgcmVjaXBlIGlzIHRvIGJ1aWxkIHRoZSBzbWFsbGVzdAorYmluYXJpZXMuIGtleGVrIGtsaWJjLXN0YXRpYyBmb3IgYXJtdjUgaXMgYXJvdW5kIDg2IEtpQgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyBNYWtlZmlsZS5pbiB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBmYjAxMTM0Li40NDA3MzBkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTczLDggKzE3Myw4IEBAIFBTUkNTOj0kKGZvcmVhY2ggcywgJChTUkNTKSwgJChQQUNLQUdFX05BTUUpLSQoUEFDS0FHRV9WRVJTSU9OKS8kKHMpKQorIFBHU1JDUzo9JChmb3JlYWNoIHMsICQoR0VORVJBVEVEX1NSQ1MpLCAkKFBBQ0tBR0VfTkFNRSktJChQQUNLQUdFX1ZFUlNJT04pLyQocykpCisgCisgTUFOX1BBR0VTOj0kKEtFWEVDX01BTlBBR0UpICQoVk1DT1JFX0RNRVNHX01BTlBBR0UpCistQklOQVJJRVNfaTM4Njo9JChLRVhFQ19URVNUKQorLUJJTkFSSUVTX3g4Nl82NDo9JChLRVhFQ19URVNUKQorKyNCSU5BUklFU19pMzg2Oj0kKEtFWEVDX1RFU1QpCisrI0JJTkFSSUVTX3g4Nl82NDo9JChLRVhFQ19URVNUKQorIEJJTkFSSUVTOj0kKEtFWEVDKSAkKFZNQ09SRV9ETUVTRykgJChCSU5BUklFU18kKEFSQ0gpKQorIAorIFVOSU5TVEFMTF9LRFVNUCA9ICQoc2JpbmRpcikva2R1bXAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3g4Nl9zeXNfaW8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy94ODZfc3lzX2lvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5M2YyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy1rbGliYy94ODZfc3lzX2lvLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYTk5MmVlMDE0ZWZhY2RjOThkNTY1OGJlOTkzMGRjYWIwZWFhZGZkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9wZW5FbWJlZGRlZCA8b2UucGF0Y2hAb2U+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDIyOjUxOjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGkzODY6IHJlcGxhY2Ugd2l0aCBvdXIgaW8uaAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2tsaWJjIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQW5kcmVhIEFkYW1pIDxhbmRyZWEuYWRhbWlAZ21haWwuY29tPgorCistLS0KKyBwdXJnYXRvcnkvYXJjaC9pMzg2L3BpYy5jIHwgMiArLQorIHB1cmdhdG9yeS9hcmNoL2kzODYvdmdhLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wdXJnYXRvcnkvYXJjaC9pMzg2L3BpYy5jIGIvcHVyZ2F0b3J5L2FyY2gvaTM4Ni9waWMuYworaW5kZXggYzIzYzQ1OS4uYzVmNzA0NiAxMDA2NDQKKy0tLSBhL3B1cmdhdG9yeS9hcmNoL2kzODYvcGljLmMKKysrKyBiL3B1cmdhdG9yeS9hcmNoL2kzODYvcGljLmMKK0BAIC0xNiw3ICsxNiw3IEBACisgICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAgKi8KKy0jaW5jbHVkZSA8c3lzL2lvLmg+CisrI2luY2x1ZGUgImluY2x1ZGUvYXJjaC9pby5oIgorICNpbmNsdWRlIDxwdXJnYXRvcnkuaD4KKyAjaW5jbHVkZSAicHVyZ2F0b3J5LXg4Ni5oIgorIAorZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9hcmNoL2kzODYvdmdhLmMgYi9wdXJnYXRvcnkvYXJjaC9pMzg2L3ZnYS5jCitpbmRleCBlNjU5NzZjLi5kMDc5ZDk2IDEwMDY0NAorLS0tIGEvcHVyZ2F0b3J5L2FyY2gvaTM4Ni92Z2EuYworKysrIGIvcHVyZ2F0b3J5L2FyY2gvaTM4Ni92Z2EuYworQEAgLTEsNCArMSw0IEBACistI2luY2x1ZGUgPHN5cy9pby5oPgorKyNpbmNsdWRlICJpbmNsdWRlL2FyY2gvaW8uaCIKKyAjaW5jbHVkZSA8cHVyZ2F0b3J5Lmg+CisgI2luY2x1ZGUgInB1cmdhdG9yeS14ODYuaCIKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3g4Nl92ZnNjYW5mLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmMveDg2X3Zmc2NhbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYwYWQyZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjL3g4Nl92ZnNjYW5mLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNDIzYzNmNmY0MWZlMDRmNDUxMmUyYTk3YTEzMGYwNzJkNTNkZDRjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE9wZW5FbWJlZGRlZCA8b2UucGF0Y2hAb2U+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDIyOjUxOjA1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHg4Ni1saW51eC1zZXR1cC5jOiByZXBsYWNlIHZmc2NhbmYoKSB3aXRoIHZzc2NhbmYoKQorCitrbGliYyBsYWNrcyB2ZnNjYW5mKCkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtrbGliYyBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlYSBBZGFtaSA8YW5kcmVhLmFkYW1pQGdtYWlsLmNvbT4KKworLS0tCisga2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jIHwgMTEgKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jIGIva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCitpbmRleCA3ODUwMDgzLi5lMTkwMzU2IDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC9pMzg2L3g4Ni1saW51eC1zZXR1cC5jCisrKysgYi9rZXhlYy9hcmNoL2kzODYveDg2LWxpbnV4LXNldHVwLmMKK0BAIC0yMDAsNiArMjAwLDggQEAgc3RhdGljIGludCBmaWxlX3NjYW5mKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqc2NhbmZfbGluZSwKKyAJRklMRSAqZnA7CisgCWludCByZXRubzsKKyAJY2hhciBmaWxlbmFtZVtQQVRIX01BWF07CisrCWxvbmcgbGluZV9zaXplID0gTUFYX0xJTkU7CisrCWNoYXIgKmxpbmU7CisgCisgCXNucHJpbnRmKGZpbGVuYW1lLCBQQVRIX01BWCwgIiVzLyVzIiwgZGlyLCBmaWxlKTsKKyAJZmlsZW5hbWVbUEFUSF9NQVgtMV0gPSAwOworQEAgLTIxMCw3ICsyMTIsMTQgQEAgc3RhdGljIGludCBmaWxlX3NjYW5mKGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqc2NhbmZfbGluZSwKKyAJfQorIAorIAl2YV9zdGFydChhcmdwdHIsIHNjYW5mX2xpbmUpOworLQlyZXRubyA9IHZmc2NhbmYoZnAsIHNjYW5mX2xpbmUsIGFyZ3B0cik7CisrCisrCWxpbmUgPSB4bWFsbG9jKHNpemVvZihsaW5lKSAqIGxpbmVfc2l6ZSk7CisrCXdoaWxlKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZnApICE9IE5VTEwgKSB7CisrCQlsaW5lX3NpemUgKz0gTUFYX0xJTkU7CisrCQlsaW5lID0geHJlYWxsb2MobGluZSxsaW5lX3NpemUpOworKwl9CisrCXJldG5vID0gdnNzY2FuZihsaW5lLCBzY2FuZl9saW5lLCBhcmdwdHIpOworKworIAl2YV9lbmQoYXJncHRyKTsKKyAKKyAJZmNsb3NlKGZwKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjXzIuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmNfMi4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMjcwMzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmNfMi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0jIHRoZSBiaW5hcmllcyBhcmUgc3RhdGljYWxseSBsaW5rZWQgYWdhaW5zdCBrbGliYwotU1VNTUFSWSA9ICJLZXhlYyB0b29scywgc3RhdGljYWxseSBjb21waWxlZCBhZ2FpbnN0IGtsaWJjIgotQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgotREVQRU5EUyA9ICJ6bGliIHh6IgotCi1QUiA9ICJyMSIKLQotaW5oZXJpdCBrbGliYyBhdXRvdG9vbHMKLQotRklMRVNQQVRIID0uICIke0ZJTEVfRElSTkFNRX0va2V4ZWMtdG9vbHMtJHtQVn06IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy1lbGYtcmVsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy1zeXNjYWxsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jZmxhZ3Nfc3RhdGljLnBhdGNoICBcCi0gICAgICAgICAgICBmaWxlOi8vaWZkb3duX2Vycm5vLnBhdGNoICBcCi0gICAgICAgICAgICBmaWxlOi8vcHVyZ2F0b3J5X2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdXJnYXRvcnlfc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zaGEyNTYucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c2NvbmZfbnJwcm9jZXNzb3JzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRqdXN0LXRoZS1vcmRlci1vZi1oZWFkZXJzLXRvLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MmVmZjkzYjA5NzQ3NWI3NzY3ZjhjOThkZjg0NDA4YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWUxODBmZjM2ZGVlMDg3MTgyY2RjOTM5YmE2YzY5MTdiNmFkYmI1ZmMxMmQ1ODlmMzFmZDM2NTliNjQ3MWYyIgotCi1TUkNfVVJJX2FwcGVuZF9hcm0gPSAiIGZpbGU6Ly9hcm1fY3Jhc2hkdW1wLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfcG93ZXJwYyA9ICIgZmlsZTovL3BwY19fbHNocmRpMy5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX3g4NiA9ICIgZmlsZTovL3g4Nl9zeXNfaW8ucGF0Y2ggZmlsZTovL3g4Nl9iYXNlbmFtZS5wYXRjaCBmaWxlOi8veDg2X3Zmc2NhbmYucGF0Y2ggZmlsZTovL3g4Nl9rZXhlY190ZXN0LnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfeDg2LTY0ID0gIiBmaWxlOi8veDg2X3N5c19pby5wYXRjaCBmaWxlOi8veDg2X2Jhc2VuYW1lLnBhdGNoIGZpbGU6Ly94ODZfdmZzY2FuZi5wYXRjaCBmaWxlOi8veDg2X2tleGVjX3Rlc3QucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9rZXhlYy10b29scy0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtemxpYiAtLXdpdGhvdXQtbHptYSAtLXdpdGhvdXQteGVuIgotCi1DRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlIC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHMzMiIKLUNGTEFHU194ODYtNjQgKz0gIi1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlIC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHM2NCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLVBBQ0tBR0VTID0rICJrZXhlYy1rbGliYyBrZHVtcC1rbGliYyIKLQotRklMRVNfa2V4ZWMta2xpYmMgPSAiJHtzYmluZGlyfS9rZXhlYyIKLUZJTEVTX2tkdW1wLWtsaWJjID0gIiR7c2JpbmRpcn0va2R1bXAiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLWtsaWJjX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWY1ZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMta2xpYmNfZ2l0LmJiCkBAIC0wLDAgKzEsOTQgQEAKKyMgdGhlIGJpbmFyaWVzIGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGtsaWJjCitTVU1NQVJZID0gIktleGVjIHRvb2xzLCBzdGF0aWNhbGx5IGNvbXBpbGVkIGFnYWluc3Qga2xpYmMiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitQViA9ICIyLjAuMTcrZ2l0JHtTUkNQVn0iCisKK0RFUEVORFMgPSAiemxpYiB4eiIKKworaW5oZXJpdCBrbGliYyBhdXRvdG9vbHMKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2tlcm5lbC9rZXhlYy9rZXhlYy10b29scy5naXQiCitTUkNSRVYgPSAiYjlkZTIxZWY1MWE3Y2VhYjcxMjJhNzA3YzE4ODYwMmVhZTIyYzRlZSIKKworQlVJTERfUEFUQ0hFUyA9ICJmaWxlOi8vMDAwMS1mb3JjZS1zdGF0aWMtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGp1c3QtdGhlLW9yZGVyLW9mLWhlYWRlcnMtdG8tZml4LWJ1aWxkLWZvci1tdXNsLnBhdGNoIgorCitLTElCQ19QQVRDSEVTICs9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMDMta2V4ZWMtZWxmLXJlbC11c2Utb3VyLWVsZi5oLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWtleGVjLWVsZi1leGVjLmMtcmVwbGFjZS13aXRoLW91ci1lcnIuaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1jcmFzaGR1bXAtZWxmLmMtd29yay1hcm91bmQtZm9yLXN5c2NvbmYtX1NDX05QUk9DRVNTLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWtleGVjLXN5c2NhbGwuaC13b3JrLWFyb3VuZC1taXNzaW5nLXN5c2NhbGwtd3JhcHBlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNy1rZXhlYy5jLWFkZC1ndWFyZC1hcm91bmQtRU5PVFNVUC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOC1rZXhlYy5jLXJlcGxhY2UtbWlzaW5nLUJMS0dFVFNJWkU2NC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS12bWNvcmUtZG1lc2cuYy13b3JrLWFyb3VuZC1taXNzaW5nLWltYXhkaXYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTAtZnMyZHQuYy13b3JrLWFyb3VuZC1taXNzaW5nLWdldGxpbmUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTEtcHVyZ2F0b3J5LU1ha2VmaWxlLWFkYXB0LXRvLWtsY2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTItcHVyZ2F0b3J5LXN0cmluZy5jLWF2b2lkLWluY2x1c2lvbi1vZi1zdHJpbmcuaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMy1zaGEyNTYuaC1hdm9pZC1pbmNsdXNpb24tb2Ytc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTQtYWRkLWlmX25hbWVpbmRleC1mcm9tLW11c2wucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTUtdm1jb3JlLWRtZXNnLWZpeC13YXJuaW5nLnBhdGNoIgorCitXQVJOSU5HX0ZJWEVTID0gIiIKK0ZST01fT0VfQ09SRSA9ICJmaWxlOi8vYXJtX2NyYXNoZHVtcC1maXgtYnVmZmVyLWFsaWduLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vcG93ZXJwY19jaGFuZ2UtdGhlLW1lbW9yeS1zaXplLWxpbWl0LnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIgorCitTUkNfVVJJICs9ICIke0JVSUxEX1BBVENIRVN9ICR7S0xJQkNfUEFUQ0hFU30gJHtXQVJOSU5HX0ZJWEVTfSAke0ZST01fT0VfQ09SRX0iCisKK1NSQ19VUklfYXBwZW5kX2FybSA9ICIgZmlsZTovL2FybV9jcmFzaGR1bXAucGF0Y2giCisKK1NSQ19VUklfYXBwZW5kX3g4NiA9ICIgZmlsZTovL3g4Nl9zeXNfaW8ucGF0Y2ggZmlsZTovL3g4Nl9iYXNlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94ODZfdmZzY2FuZi5wYXRjaCBmaWxlOi8veDg2X2tleGVjX3Rlc3QucGF0Y2giCisKK1NSQ19VUklfYXBwZW5kX3g4Ni02NCA9ICIgZmlsZTovL3g4Nl9zeXNfaW8ucGF0Y2ggZmlsZTovL3g4Nl9iYXNlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94ODZfdmZzY2FuZi5wYXRjaCBmaWxlOi8veDg2X2tleGVjX3Rlc3QucGF0Y2giCisKK1NSQ19VUklfYXBwZW5kX2FhcmNoNjQgPSAiIGZpbGU6Ly9hcm02NF9rZXhlYy1pbWFnZS1oZWFkZXIuaC1hZGQtbWlzc2luZy1sZTY0dG9oLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcm02NC1jcmFzaGR1bXAtYXJtNjQuYy1maXgtd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXJtNjRfa2V4ZWMtYXJtNjQuYy13b3JrYXJvdW5kLWZvci1nZXRyYW5kb20tc3lzY2FsbC5wYXRjaCIKKworU1JDX1VSSV9hcHBlbmRfcG93ZXJwYyA9ICIgZmlsZTovL3Bvd2VycGMtcHVyZ2F0b3J5LU1ha2VmaWxlLXJlbW92ZS11bmtub3duLWZsYWdzLnBhdGNoIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC16bGliIC0td2l0aG91dC1sem1hIC0td2l0aG91dC14ZW4iCisKKyMgZml4IHB1cmdhdG9yeS9wcmludGYuYzoyOjEwOiBmYXRhbCBlcnJvcjogbGltaXRzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyMgZml4IGluY2x1ZGUvbGltaXRzLmg6NDI6MTA6IGZhdGFsIGVycm9yOiBiaXRzaXplL2xpbWl0cy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitDT01NT05fQ0ZMQUdTICs9ICItTzIgLUkke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tsaWJjL2luY2x1ZGUgLUkke1N9L3B1cmdhdG9yeS9pbmNsdWRlIgorQ0ZMQUdTX3g4Nl9hcHBlbmQgPSAiICR7Q09NTU9OX0NGTEFHU30gLUkke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tsaWJjL2luY2x1ZGUvYml0czMyIgorQ0ZMQUdTX3g4Ni02NF9hcHBlbmQgPSAiICR7Q09NTU9OX0NGTEFHU30gLUkke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tsaWJjL2luY2x1ZGUvYml0czY0IgorQ0ZMQUdTX2FybV9hcHBlbmQgPSAiICR7Q09NTU9OX0NGTEFHU30gLUkke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tsaWJjL2luY2x1ZGUvYml0czMyIgorQ0ZMQUdTX2FhcmNoNjRfYXBwZW5kID0gIiR7Q09NTU9OX0NGTEFHU30gLUkke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJkaXJ9L2tsaWJjL2luY2x1ZGUvYml0czY0IgorQ0ZMQUdTX21pcHNfYXBwZW5kID0gIiAke0NPTU1PTl9DRkxBR1N9IC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHMzMiIKK0NGTEFHU19taXBzNjRfYXBwZW5kID0gIiAke0NPTU1PTl9DRkxBR1N9IC1JJHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZGlyfS9rbGliYy9pbmNsdWRlL2JpdHM2NCIKK0NGTEFHU19wb3dlcnBjX2FwcGVuZCA9ICIgJHtDT01NT05fQ0ZMQUdTfSAtSSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmRpcn0va2xpYmMvaW5jbHVkZS9iaXRzMzIiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMta2xpYmMgdm1jb3JlLWRtZXNnLWtsaWJjIgorCitGSUxFU19rZXhlYy1rbGliYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfdm1jb3JlLWRtZXNnLWtsaWJjID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0Lip8cG93ZXJwYy4qfG1pcHMuKiktKGxpbnV4fGZyZWVic2QuKiknCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQppbmRleCAyMGY0ZmI4Li4wNTAzOTJkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKQEAgLTEsMTkgKzEsMTkgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vZS1jb3JlLmdpdAotYnJhbmNoOiBtYXN0ZXIKK2JyYW5jaDogdGh1ZAogcmV2aXNpb246IEhFQUQKIAogVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLmdpdAogbGF5ZXJzOiBtZXRhLW9lCi1icmFuY2g6IG1hc3RlcgorYnJhbmNoOiB0aHVkCiByZXZpc2lvbjogSEVBRAogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEtbXVsdGltZWRpYV0nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW11bHRpbWVkaWFdW3RodWRdJyBpbiB0aGUgc3ViamVjdCcKIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOgotJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW11bHRpbWVkaWFdW1BBVENICisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtbXVsdGltZWRpYV1bdGh1ZF1bUEFUQ0gKIAogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgogCi1MYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitUaHVkIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZgppbmRleCBhMWRmZWQ0Li5lMmE3NzAxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9jb25mL2xheWVyLmNvbmYKQEAgLTI3LDYgKzI3LDYgQEAKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl9tdWx0aW1lZGlhLWxheWVyID0gIjEiCiAKLUxBWUVSREVQRU5EU19tdWx0aW1lZGlhLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgorTEFZRVJERVBFTkRTX211bHRpbWVkaWEtbGF5ZXIgPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX211bHRpbWVkaWEtbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9tdWx0aW1lZGlhLWxheWVyID0gInRodWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzQuMC5iYgppbmRleCBmMTNmNWNlLi4yMTMzMWZmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnlnZWwvcnlnZWxfMC4zNC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM0LjAuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIkxHUEwtMi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIG9zc3AtdXVpZCBsaWJnZWUgbGlic291cC0yLjQgbGlibWVkaWFhcnQtMi4wIGxpYnVuaXN0cmluZyBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmdlZSBsaWJzb3VwLTIuNCBsaWJtZWRpYWFydC0yLjAgbGlidW5pc3RyaW5nIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayBzaGFyZWQtbWltZS1pbmZvIgogUlJFQ09NTUVORFNfJHtQTn0gPSAicnlnZWwtcGx1Z2luLW1lZGlhLWV4cG9ydCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL29zY2FtL29zY2FtLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL29zY2FtL29zY2FtLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluaXRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZDg5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvb3NjYW0vb3NjYW0vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBhMzcyZmU0Njc0OTVhNjc0YWQ2MjQ0YjY3ZTgzZGZiZmE4NDU1ZjUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTEgQXVnIDIwMTggMTM6NTQ6MzIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yIGRlZmluaXRpb25zCisKK2NzY3RhcGkvaWZkX2RiMmNvbS5jOjI3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtaW5vcicKK2NvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnbG9iYWxzLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dsb2JhbHMuaCBiL2dsb2JhbHMuaAoraW5kZXggYmQxMjI0NC4uOWUxMDIyNSAxMDA2NDQKKy0tLSBhL2dsb2JhbHMuaAorKysrIGIvZ2xvYmFscy5oCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRlIDx0ZXJtaW9zLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAKKyAvKgorICAqIFRoZSBmb2xsb3dpbmcgaGFjayBpcyB0YWtlbiBmcm9tIExpbnV4OiBpbmNsdWRlL2xpbnV4L2tjb25maWcuaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL29zY2FtL29zY2FtL3Jlc3BlY3QtY2ZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL29zY2FtL29zY2FtL3Jlc3BlY3QtY2ZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzlkMDRhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi9vc2NhbS9vc2NhbS9yZXNwZWN0LWNmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHA6Ly93d3cuc3RyZWFtYm9hcmQudHYvb3NjYW0vY2hhbmdlc2V0LzEwMDY4Ci1odHRwOi8vd3d3LnN0cmVhbWJvYXJkLnR2L29zY2FtL2NoYW5nZXNldC8xMDA3MAotCi1JbmRleDogL0NNYWtlTGlzdHMudHh0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAwNjcpCi0rKysgYi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAwNjgpCi1AQCAtNjI1LDggKzYyNSw4IEBACi0gICAgIGxpc3QoR0VUIEdDQ19WRVJTSU9OX0NPTVBPTkVOVFMgMCBHQ0NfTUlOT1IpCi0gICAgIGFkZF9kZWZpbml0aW9ucyAoIi1XIC1XYWxsICIpCi0tICAgIHNldCAoQ01BS0VfQ19GTEFHUyAiLVdhbGwgLU8yIikKLS0Jc2V0IChDTUFLRV9DWFhfRkxBR1MgIi1XYWxsIC1PMiIpCi0tICAgIHNldCAoQ01BS0VfQ19GTEFHU19ERUJVRyAiLU8wIC1nZ2RiIikKLS0gICAgc2V0IChDTUFLRV9DWFhfRkxBR1NfREVCVUcgIi1PMCAtZ2dkYiIpCi0rICAgIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV2FsbCAtTzIiKQotKwlzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XYWxsIC1PMiIpCi0rICAgIHNldCAoQ01BS0VfQ19GTEFHU19ERUJVRyAiJHtDTUFLRV9DX0ZMQUdTX0RFQlVHfSAtTzAgLWdnZGIiKQotKyAgICBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAiJHtDTUFLRV9DWFhfRkxBR1NfREVCVUd9IC1PMCAtZ2dkYiIpCi0gZW5kaWYgKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNDKQotICMgc29tZSBvcHRpbWlzYXRpb25zCi1JbmRleDogL2NzY3RhcGkvQ01ha2VMaXN0cy50eHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2NzY3RhcGkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwMDY5KQotKysrIGIvY3NjdGFwaS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTAwNzApCi1AQCAtNiw4ICs2LDggQEAKLSAgICAgbGlzdChHRVQgR0NDX1ZFUlNJT05fQ09NUE9ORU5UUyAwIEdDQ19NSU5PUikKLSAgICAgYWRkX2RlZmluaXRpb25zICgiLVcgLVdhbGwgIikKLS0gICAgc2V0IChDTUFLRV9DX0ZMQUdTICItV2FsbCAtTzIiKQotLQlzZXQgKENNQUtFX0NYWF9GTEFHUyAiLVdhbGwgLU8yIikKLS0gICAgc2V0IChDTUFLRV9DX0ZMQUdTX0RFQlVHICItTzAgLWdnZGIiKQotLSAgICBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAiLU8wIC1nZ2RiIikKLSsgICAgc2V0IChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1XYWxsIC1PMiIpCi0rCXNldCAoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLVdhbGwgLU8yIikKLSsgICAgc2V0IChDTUFLRV9DX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NfRkxBR1NfREVCVUd9IC1PMCAtZ2dkYiIpCi0rICAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX0RFQlVHICIke0NNQUtFX0NYWF9GTEFHU19ERUJVR30gLU8wIC1nZ2RiIikKLSBlbmRpZiAoQ01BS0VfQ09NUElMRVJfSVNfR05VQ0MpCi0gIyBNYWMgZXh0cmEgcmVtb3ZlcyB0byBhdm9pZCByYW5saWIgd2FybmluZ3MgaW4gc29tZSBzaXR1YXRpb25zCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvb3NjYW0vb3NjYW1fc3ZuLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtZHZiL29zY2FtL29zY2FtX3N2bi5iYgppbmRleCBjYWM1MTdmLi5hOGFlYzExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1kdmIvb3NjYW0vb3NjYW1fc3ZuLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWR2Yi9vc2NhbS9vc2NhbV9zdm4uYmIKQEAgLTQsMTIgKzQsMTIgQEAKIExJQ0VOU0UgPSAiR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotREVQRU5EUyA9ICJsaWJ1c2IxIG9wZW5zc2wgcGNzYy1saXRlIgorREVQRU5EUyA9ICJsaWJ1c2IxIG9wZW5zc2wxMCBwY3NjLWxpdGUiCiAKIFNSQ19VUkkgPSAic3ZuOi8vd3d3LnN0cmVhbWJvYXJkLnR2L3N2bi9vc2NhbTttb2R1bGU9dHJ1bms7cHJvdG9jb2w9aHR0cCBcCi0gICAgZmlsZTovL3Jlc3BlY3QtY2ZsYWdzLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI5MTY0IgorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiMTE0MzEiCiBQViA9ICIxLjEwKyR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vdHJ1bmsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2pzb25zY2hlbWFidWlsZGVyLW5hdGl2ZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkvanNvbnNjaGVtYWJ1aWxkZXItbmF0aXZlLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGI3Njk5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkvanNvbnNjaGVtYWJ1aWxkZXItbmF0aXZlLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJLb2RpIE1lZGlhIENlbnRlciIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Kc29uU2NoZW1hQnVpbGRlci5jcHA7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9MWY2NzcyMTIxNWMwM2Y2NjU0NTM5MGY2ZTQ1Yjk5YzciCi0KLVNSQ1JFViA9ICI2NjFkZDA4ZDIyMWY1YjJiZjUwOWE2OTZhNmFjYTVlZTdkNDViYjI3IgotCi1QViA9ICIxNy4xK2dpdHIke1NSQ1BWfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94Ym1jL3hibWMuZ2l0O2JyYW5jaD1LcnlwdG9uIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBuYXRpdmUKLQotUyA9ICIke1dPUktESVJ9L2dpdC90b29scy9kZXBlbmRzL25hdGl2ZS9Kc29uU2NoZW1hQnVpbGRlci9zcmMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAkKGZpbmQgLiAtbmFtZSAiTWFrZWZpbGUiKSA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSAnczpJL3Vzci9pbmNsdWRlOkkke1NUQUdJTkdfSU5DRElSfTpnJyAkaQotICAgIGRvbmUKLQotICAgIGZvciBpIGluICQoZmluZCAuIC1uYW1lICIqLm1hayoiIC1vICAgIC1uYW1lICJNYWtlZmlsZSIpIDsgZG8KLSAgICAgICAgc2VkIC1pIC1lICdzOkkvdXNyL2luY2x1ZGU6SSR7U1RBR0lOR19JTkNESVJ9OmcnIC1lICdzOi1ycGF0aCBcJChsaWJkaXIpOi1ycGF0aCAke2xpYmRpcn06ZycgJGkKLSAgICBkb25lCi19Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDAxLUZpeC1maWxlX0VtdS1vbi1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDEtRml4LWZpbGVfRW11LW9uLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYjYzNzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDEtRml4LWZpbGVfRW11LW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OTYgKzAsMCBAQAotRnJvbSA3YWU0ZmNmMjkwZmZiMGI3NjM3NGVmYWZlYWVlNTc1NDU2YWM5MDIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgNiBOb3YgMjAxNiAyMzowODoyNyAtMDgwMAotU3ViamVjdDogW1BBVENIIDAxLzEwXSBGaXggZmlsZV9FbXUgb24gbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0geGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy9lbXVfbXN2Y3J0LmNwcCAgICAgICAgfCAgMjggKystLQotIHhibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvZW11X21zdmNydC5oICAgICAgICAgIHwgICAyICstCi0gLi4uL0RsbExvYWRlci9leHBvcnRzL3V0aWwvRW11RmlsZVdyYXBwZXIuY3BwICAgICAgfCAxNzIgKysrKysrKysrLS0tLS0tLS0tLS0tCi0geGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy91dGlsL0VtdUZpbGVXcmFwcGVyLmggfCAgMjcgKystLQotIHhibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvd3JhcHBlci5jICAgICAgICAgICAgIHwgICA0ICstCi0gNSBmaWxlcyBjaGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMzQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL2VtdV9tc3ZjcnQuY3BwIGIveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy9lbXVfbXN2Y3J0LmNwcAotaW5kZXggYWIxNDk0Mi4uYTM5MDE0YSAxMDA2NDQKLS0tLSBhL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvZW11X21zdmNydC5jcHAKLSsrKyBiL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvZW11X21zdmNydC5jcHAKLUBAIC01MSw2ICs1MSw3IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPHBhdGhzLmg+Ci0gI2lmZGVmIFRBUkdFVF9QT1NJWAotICNpbmNsdWRlICJQbGF0Zm9ybURlZnMuaCIgLy8gZm9yIF9fc3RhdDY0Ci0gI2luY2x1ZGUgIlhGaWxlVXRpbHMuaCIKLUBAIC00NzYsMTMgKzQ3NywxMCBAQCBleHRlcm4gIkMiCi0gICAgIEVtdUZpbGVPYmplY3QqIG8gPSBnX2VtdUZpbGVXcmFwcGVyLkdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoZmQpOwotICAgICBpZiAobykKLSAgICAgewotLSAgICAgIGlmKCFvLT51c2VkKQotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tCi0gICAgICAgaW50IG5tb2RlID0gY29udmVydF9mbW9kZShtb2RlKTsKLSAgICAgICBpZiggKG8tPm1vZGUgJiBubW9kZSkgIT0gbm1vZGUpCi0gICAgICAgICBDTG9nOjpMb2coTE9HV0FSTklORywgImRsbF9mZG9wZW4gLSBtb2RlIDB4JXggZGlmZmVycyBmcm9tIGZkIG1vZGUgMHgleCIsIG5tb2RlLCBvLT5tb2RlKTsKLS0gICAgICByZXR1cm4gJm8tPmZpbGVfZW11OwotKyAgICAgIHJldHVybiBnX2VtdUZpbGVXcmFwcGVyLkdldFN0cmVhbUJ5RmlsZU9iamVjdChvKTsKLSAgICAgfQotICAgICBlbHNlIGlmICghSVNfU1REX0RFU0NSSVBUT1IoZmQpKQotICAgICB7Ci1AQCAtNTQ1LDcgKzU0Myw3IEBAIGV4dGVybiAiQyIKLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICB9Ci0gICAgICAgb2JqZWN0LT5tb2RlID0gaU1vZGU7Ci0tICAgICAgcmV0dXJuIGdfZW11RmlsZVdyYXBwZXIuR2V0RGVzY3JpcHRvckJ5U3RyZWFtKCZvYmplY3QtPmZpbGVfZW11KTsKLSsgICAgICByZXR1cm4gZ19lbXVGaWxlV3JhcHBlci5HZXREZXNjcmlwdG9yQnlGaWxlT2JqZWN0KG9iamVjdCk7Ci0gICAgIH0KLSAgICAgZGVsZXRlIHBGaWxlOwotICAgICByZXR1cm4gLTE7Ci1AQCAtMTIxNCw4ICsxMjEyLDggQEAgZXh0ZXJuICJDIgotICAgewotICAgICBGSUxFKiBmaWxlID0gTlVMTDsKLSAjaWYgZGVmaW5lZChUQVJHRVRfTElOVVgpICYmICFkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotLSAgICBpZiAoc3RyY21wKGZpbGVuYW1lLCBNT1VOVEVEKSA9PSAwCi0tICAgIHx8ICBzdHJjbXAoZmlsZW5hbWUsIE1OVFRBQikgPT0gMCkKLSsgICAgaWYgKHN0cmNtcChmaWxlbmFtZSwgX1BBVEhfTU9VTlRFRCkgPT0gMAotKyAgICB8fCAgc3RyY21wKGZpbGVuYW1lLCBfUEFUSF9NTlRUQUIpID09IDApCi0gICAgIHsKLSAgICAgICBDTG9nOjpMb2coTE9HSU5GTywgIiVzIC0gc29tZXRoaW5nIG9wZW5lZCB0aGUgbW91bnQgZmlsZSwgbGV0J3MgaG9wZSBpdCBrbm93cyB3aGF0IGl0J3MgZG9pbmciLCBfX0ZVTkNUSU9OX18pOwotICAgICAgIHJldHVybiBmb3BlbihmaWxlbmFtZSwgbW9kZSk7Ci1AQCAtMTYyMiw3ICsxNjIwLDcgQEAgZXh0ZXJuICJDIgotICAgICBpbnQgcmV0OwotIAotICAgICByZXQgPSBkbGxfZmdldHBvczY0KHN0cmVhbSwgJnRtcFBvcyk7Ci0tI2lmICFkZWZpbmVkKFRBUkdFVF9QT1NJWCkgfHwgZGVmaW5lZChUQVJHRVRfREFSV0lOKSB8fCBkZWZpbmVkKFRBUkdFVF9GUkVFQlNEKSB8fCBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkKLSAgICAgKnBvcyA9IChmcG9zX3QpdG1wUG9zOwotICNlbHNlCi0gICAgIHBvcy0+X19wb3MgPSAob2ZmX3QpdG1wUG9zLl9fcG9zOwotQEAgLTE2MzUsOCArMTYzMyw5IEBAIGV4dGVybiAiQyIKLSAgICAgQ0ZpbGUqIHBGaWxlID0gZ19lbXVGaWxlV3JhcHBlci5HZXRGaWxlWGJtY0J5U3RyZWFtKHN0cmVhbSk7Ci0gICAgIGlmIChwRmlsZSAhPSBOVUxMKQotICAgICB7Ci0tI2lmICFkZWZpbmVkKFRBUkdFVF9QT1NJWCkgfHwgZGVmaW5lZChUQVJHRVRfREFSV0lOKSB8fCBkZWZpbmVkKFRBUkdFVF9GUkVFQlNEKSB8fCBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotLSAgICAgICpwb3MgPSBwRmlsZS0+R2V0UG9zaXRpb24oKTsKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0ZSRUVCU0QpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rICAgICAgdWludDY0X3QgKnBwb3MgPSAodWludDY0X3QgKikgcG9zOwotKyAgICAgICpwcG9zID0gcEZpbGUtPkdldFBvc2l0aW9uKCk7Ci0gI2Vsc2UKLSAgICAgICBwb3MtPl9fcG9zID0gcEZpbGUtPkdldFBvc2l0aW9uKCk7Ci0gI2VuZGlmCi1AQCAtMTY1Nyw4ICsxNjU2LDkgQEAgZXh0ZXJuICJDIgotICAgICBpbnQgZmQgPSBnX2VtdUZpbGVXcmFwcGVyLkdldERlc2NyaXB0b3JCeVN0cmVhbShzdHJlYW0pOwotICAgICBpZiAoZmQgPj0gMCkKLSAgICAgewotLSNpZiAhZGVmaW5lZChUQVJHRVRfUE9TSVgpIHx8IGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkKLS0gICAgICBpZiAoZGxsX2xzZWVraTY0KGZkLCAqcG9zLCBTRUVLX1NFVCkgPj0gMCkKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0ZSRUVCU0QpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rICAgICAgY29uc3QgdWludDY0X3QgKnBwb3MgPSAoY29uc3QgdWludDY0X3QgKikgcG9zOwotKyAgICAgIGlmIChkbGxfbHNlZWtpNjQoZmQsICpwcG9zLCBTRUVLX1NFVCkgPj0gMCkKLSAjZWxzZQotICAgICAgIGlmIChkbGxfbHNlZWtpNjQoZmQsIChfX29mZjY0X3QpcG9zLT5fX3BvcywgU0VFS19TRVQpID49IDApCi0gI2VuZGlmCi1AQCAtMTY3NCw3ICsxNjc0LDcgQEAgZXh0ZXJuICJDIgotICAgICB7Ci0gICAgICAgLy8gaXQgbWlnaHQgYmUgc29tZXRoaW5nIGVsc2UgdGhhbiBhIGZpbGUsIG9yIHRoZSBmaWxlIGlzIG5vdCBlbXVsYXRlZAotICAgICAgIC8vIGxldCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBoYW5kbGUgaXQKLS0jaWYgIWRlZmluZWQoVEFSR0VUX1BPU0lYKSB8fCBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0ZSRUVCU0QpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChUQVJHRVRfREFSV0lOKSB8fCBkZWZpbmVkKFRBUkdFVF9GUkVFQlNEKSB8fCBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotICAgICAgIHJldHVybiBmc2V0cG9zKHN0cmVhbSwgcG9zKTsKLSAjZWxzZQotICAgICAgIHJldHVybiBmc2V0cG9zNjQoc3RyZWFtLCBwb3MpOwotQEAgLTE2OTAsNyArMTY5MCw3IEBAIGV4dGVybiAiQyIKLSAgICAgaWYgKGZkID49IDApCi0gICAgIHsKLSAgICAgICBmcG9zNjRfdCB0bXBQb3M7Ci0tI2lmICFkZWZpbmVkKFRBUkdFVF9QT1NJWCkgfHwgZGVmaW5lZChUQVJHRVRfREFSV0lOKSB8fCBkZWZpbmVkKFRBUkdFVF9GUkVFQlNEKSB8fCBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkKLSAgICAgICB0bXBQb3M9ICpwb3M7Ci0gI2Vsc2UKLSAgICAgICB0bXBQb3MuX19wb3MgPSAob2ZmNjRfdCkocG9zLT5fX3Bvcyk7Ci1kaWZmIC0tZ2l0IGEveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy9lbXVfbXN2Y3J0LmggYi94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL2VtdV9tc3ZjcnQuaAotaW5kZXggMzI5NGQ5YS4uYzdjNDgzZiAxMDA2NDQKLS0tLSBhL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvZW11X21zdmNydC5oCi0rKysgYi94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL2VtdV9tc3ZjcnQuaAotQEAgLTI0LDcgKzI0LDcgQEAKLSAjZGVmaW5lIF9vbmV4aXRfdCB2b2lkKgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0ZSRUVCU0QpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rI2lmIGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkgfHwgIWRlZmluZWQoX19HTElCQ19fKQotIHR5cGVkZWYgb2ZmX3QgX19vZmZfdDsKLSB0eXBlZGVmIGludDY0X3Qgb2ZmNjRfdDsKLSB0eXBlZGVmIG9mZjY0X3QgX19vZmY2NF90OwotZGlmZiAtLWdpdCBhL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvdXRpbC9FbXVGaWxlV3JhcHBlci5jcHAgYi94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL3V0aWwvRW11RmlsZVdyYXBwZXIuY3BwCi1pbmRleCA4OTI3ZDQxLi5lOWEyYWIwIDEwMDY0NAotLS0tIGEveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy91dGlsL0VtdUZpbGVXcmFwcGVyLmNwcAotKysrIGIveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy91dGlsL0VtdUZpbGVXcmFwcGVyLmNwcAotQEAgLTUyLDE2ICs1Miw3IEBAIGNvbnN0ZXhwciBib29sIGlzVmFsaWRGaWxlUHRyKEZJTEUqIGYpCi0gfQotIENFbXVGaWxlV3JhcHBlcjo6Q0VtdUZpbGVXcmFwcGVyKCkKLSB7Ci0tICAvLyBzaW5jZSB3ZSBhbHdheXMgdXNlIGRsbHMgd2UgbWlnaHQganVzdCBpbml0aWFsaXplIGl0IGRpcmVjdGx5Ci0tICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUzsgaSsrKQotLSAgewotLSAgICBtZW1zZXQoJm1fZmlsZXNbaV0sIDAsIHNpemVvZihFbXVGaWxlT2JqZWN0KSk7Ci0tICAgIG1fZmlsZXNbaV0udXNlZCA9IGZhbHNlOwotLSNpZiBkZWZpbmVkKFRBUkdFVF9XSU5ET1dTKSAmJiAoX01TQ19WRVIgPj0gMTkwMCkKLS0gICAgbV9maWxlc1tpXS5maWxlX2VtdS5fUGxhY2Vob2xkZXIgPSBuZXcga29kaV9pb2J1ZigpOwotLSNlbmRpZgotLSAgICBGaWxlRGVzY3JpcHRvcihtX2ZpbGVzW2ldLmZpbGVfZW11KS0+X2ZpbGUgPSAtMTsKLS0gIH0KLSsgIG1lbXNldChtX2ZpbGVzLCAwLCBzaXplb2YobV9maWxlcykpOwotIH0KLSAKLSBDRW11RmlsZVdyYXBwZXI6On5DRW11RmlsZVdyYXBwZXIoKQotQEAgLTczLDI5ICs2NCw3IEBAIHZvaWQgQ0VtdUZpbGVXcmFwcGVyOjpDbGVhblVwKCkKLSB7Ci0gICBDU2luZ2xlTG9jayBsb2NrKG1fY3JpdGljYWxTZWN0aW9uKTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX0VNVUxBVEVEX0ZJTEVTOyBpKyspCi0tICB7Ci0tICAgIGlmIChtX2ZpbGVzW2ldLnVzZWQpCi0tICAgIHsKLS0gICAgICBtX2ZpbGVzW2ldLmZpbGVfeGJtYy0+Q2xvc2UoKTsKLS0gICAgICBkZWxldGUgbV9maWxlc1tpXS5maWxlX3hibWM7Ci0tCi0tICAgICAgaWYgKG1fZmlsZXNbaV0uZmlsZV9sb2NrKQotLSAgICAgIHsKLS0gICAgICAgIGRlbGV0ZSBtX2ZpbGVzW2ldLmZpbGVfbG9jazsKLS0gICAgICAgIG1fZmlsZXNbaV0uZmlsZV9sb2NrID0gbnVsbHB0cjsKLS0gICAgICB9Ci0tI2lmICFkZWZpbmVkKFRBUkdFVF9XSU5ET1dTKQotLSAgICAgIC8vRG9uJ3QgbWVtc2V0IG9uIFdpbmRvd3MgYXMgaXQgb3ZlcndyaXRlcyBvdXIgcG9pbnRlcgotLSAgICAgIG1lbXNldCgmbV9maWxlc1tpXSwgMCwgc2l6ZW9mKEVtdUZpbGVPYmplY3QpKTsKLS0jZW5kaWYKLS0gICAgICBtX2ZpbGVzW2ldLnVzZWQgPSBmYWxzZTsKLS0gICAgICBGaWxlRGVzY3JpcHRvcihtX2ZpbGVzW2ldLmZpbGVfZW11KS0+X2ZpbGUgPSAtMTsKLS0gICAgfQotLSNpZiBkZWZpbmVkKFRBUkdFVF9XSU5ET1dTKSAmJiAoX01TQ19WRVIgPj0gMTkwMCkKLS0gICAgZGVsZXRlIHN0YXRpY19jYXN0PGtvZGlfaW9idWYqPihtX2ZpbGVzW2ldLmZpbGVfZW11Ll9QbGFjZWhvbGRlcik7Ci0tICAgIG1fZmlsZXNbaV0uZmlsZV9lbXUuX1BsYWNlaG9sZGVyID0gbnVsbHB0cjsKLS0jZW5kaWYKLS0gIH0KLSsgICAgVW5SZWdpc3RlckZpbGVPYmplY3QoJm1fZmlsZXNbaV0sIHRydWUpOwotIH0KLSAKLSBFbXVGaWxlT2JqZWN0KiBDRW11RmlsZVdyYXBwZXI6OlJlZ2lzdGVyRmlsZU9iamVjdChYRklMRTo6Q0ZpbGUqIHBGaWxlKQotQEAgLTEwNiwxMyArNzUsMTEgQEAgRW11RmlsZU9iamVjdCogQ0VtdUZpbGVXcmFwcGVyOjpSZWdpc3RlckZpbGVPYmplY3QoWEZJTEU6OkNGaWxlKiBwRmlsZSkKLSAKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX0VNVUxBVEVEX0ZJTEVTOyBpKyspCi0gICB7Ci0tICAgIGlmICghbV9maWxlc1tpXS51c2VkKQotKyAgICBpZiAoIW1fZmlsZXNbaV0uZmlsZV94Ym1jKQotICAgICB7Ci0gICAgICAgLy8gZm91bmQgYSBmcmVlIGxvY2F0aW9uCi0gICAgICAgb2JqZWN0ID0gJm1fZmlsZXNbaV07Ci0tICAgICAgb2JqZWN0LT51c2VkID0gdHJ1ZTsKLSAgICAgICBvYmplY3QtPmZpbGVfeGJtYyA9IHBGaWxlOwotLSAgICAgIEZpbGVEZXNjcmlwdG9yKG9iamVjdC0+ZmlsZV9lbXUpLT5fZmlsZSA9IChpICsgRklMRV9XUkFQUEVSX09GRlNFVCk7Ci0gICAgICAgb2JqZWN0LT5maWxlX2xvY2sgPSBuZXcgQ0NyaXRpY2FsU2VjdGlvbigpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci1AQCAtMTIxLDgyICs4OCw3NCBAQCBFbXVGaWxlT2JqZWN0KiBDRW11RmlsZVdyYXBwZXI6OlJlZ2lzdGVyRmlsZU9iamVjdChYRklMRTo6Q0ZpbGUqIHBGaWxlKQotICAgcmV0dXJuIG9iamVjdDsKLSB9Ci0gCi0tdm9pZCBDRW11RmlsZVdyYXBwZXI6OlVuUmVnaXN0ZXJGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCkKLSt2b2lkIENFbXVGaWxlV3JhcHBlcjo6VW5SZWdpc3RlckZpbGVPYmplY3QoRW11RmlsZU9iamVjdCAqb2JqZWN0LCBib29sIGZyZWVfZmlsZSkKLSsKLSB7Ci0tICBpbnQgaSA9IGZkIC0gRklMRV9XUkFQUEVSX09GRlNFVDsKLS0gIGlmICghIChpID49IDAgJiYgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUykpCi0tICAgIHJldHVybjsKLSsgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5maWxlX3hibWMpCi0rICB7Ci0rICAgIGlmIChvYmplY3QtPmZpbGVfeGJtYyAmJiBmcmVlX2ZpbGUpCi0rICAgIHsKLSsgICAgICBvYmplY3QtPmZpbGVfeGJtYy0+Q2xvc2UoKTsKLSsgICAgICBkZWxldGUgb2JqZWN0LT5maWxlX3hibWM7Ci0rICAgIH0KLSsgICAgaWYgKG9iamVjdC0+ZmlsZV9sb2NrKQotKyAgICB7Ci0rICAgICAgZGVsZXRlIG9iamVjdC0+ZmlsZV9sb2NrOwotKyAgICB9Ci0gCi0tICBpZiAoIW1fZmlsZXNbaV0udXNlZCkKLS0gICAgcmV0dXJuOwotKyAgICBtZW1zZXQob2JqZWN0LCAwLCBzaXplb2YoKm9iamVjdCkpOwotKyAgIH0KLSt9Ci0gCi0rdm9pZCBDRW11RmlsZVdyYXBwZXI6OlVuUmVnaXN0ZXJGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCkKLSt7Ci0gICBDU2luZ2xlTG9jayBsb2NrKG1fY3JpdGljYWxTZWN0aW9uKTsKLS0KLS0gIC8vIHdlIGFzc3VtZSB0aGUgZW11bGF0ZWQgZnVuY3Rpb24gYWxyZWF5IGRlbGV0ZWQgdGhlIENGaWxlIG9iamVjdAotLSAgaWYgKG1fZmlsZXNbaV0uZmlsZV9sb2NrKQotLSAgewotLSAgICBkZWxldGUgbV9maWxlc1tpXS5maWxlX2xvY2s7Ci0tICAgIG1fZmlsZXNbaV0uZmlsZV9sb2NrID0gbnVsbHB0cjsKLS0gIH0KLS0jaWYgIWRlZmluZWQoVEFSR0VUX1dJTkRPV1MpCi0tICAvL0Rvbid0IG1lbXNldCBvbiBXaW5kb3dzIGFzIGl0IG92ZXJ3cml0ZXMgb3VyIHBvaW50ZXIKLS0gIG1lbXNldCgmbV9maWxlc1tpXSwgMCwgc2l6ZW9mKEVtdUZpbGVPYmplY3QpKTsKLS0jZW5kaWYKLS0gIG1fZmlsZXNbaV0udXNlZCA9IGZhbHNlOwotLSAgRmlsZURlc2NyaXB0b3IobV9maWxlc1tpXS5maWxlX2VtdSktPl9maWxlID0gLTE7Ci0rICBVblJlZ2lzdGVyRmlsZU9iamVjdChHZXRGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGZkKSwgZmFsc2UpOwotIH0KLSAKLSB2b2lkIENFbXVGaWxlV3JhcHBlcjo6VW5SZWdpc3RlckZpbGVPYmplY3RCeVN0cmVhbShGSUxFKiBzdHJlYW0pCi0gewotICAgaWYgKGlzVmFsaWRGaWxlUHRyKHN0cmVhbSkpCi0gICB7Ci0tICAgIHJldHVybiBVblJlZ2lzdGVyRmlsZU9iamVjdEJ5RGVzY3JpcHRvcihGaWxlRGVzY3JpcHRvcigqc3RyZWFtKS0+X2ZpbGUpOwotKyAgICBDU2luZ2xlTG9jayBsb2NrKG1fY3JpdGljYWxTZWN0aW9uKTsKLSsgICAgVW5SZWdpc3RlckZpbGVPYmplY3QoR2V0RmlsZU9iamVjdEJ5U3RyZWFtKHN0cmVhbSksIGZhbHNlKTsKLSAgIH0KLSB9Ci0gCi0gdm9pZCBDRW11RmlsZVdyYXBwZXI6OkxvY2tGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCkKLSB7Ci0tICBpbnQgaSA9IGZkIC0gRklMRV9XUkFQUEVSX09GRlNFVDsKLS0gIGlmIChpID49IDAgJiYgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUykKLSsgIEVtdUZpbGVPYmplY3QqIG9iamVjdCA9IEdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoZmQpOwotKyAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmZpbGVfeGJtYykKLSAgIHsKLS0gICAgaWYgKG1fZmlsZXNbaV0udXNlZCkKLS0gICAgewotLSAgICAgIG1fZmlsZXNbaV0uZmlsZV9sb2NrLT5sb2NrKCk7Ci0tICAgIH0KLSsgICAgb2JqZWN0LT5maWxlX2xvY2stPmxvY2soKTsKLSAgIH0KLSB9Ci0gCi0gYm9vbCBDRW11RmlsZVdyYXBwZXI6OlRyeUxvY2tGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCkKLSB7Ci0tICBpbnQgaSA9IGZkIC0gRklMRV9XUkFQUEVSX09GRlNFVDsKLS0gIGlmIChpID49IDAgJiYgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUykKLSsgIEVtdUZpbGVPYmplY3QqIG9iamVjdCA9IEdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoZmQpOwotKyAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmZpbGVfeGJtYykKLSAgIHsKLS0gICAgaWYgKG1fZmlsZXNbaV0udXNlZCkKLS0gICAgewotLSAgICAgIHJldHVybiBtX2ZpbGVzW2ldLmZpbGVfbG9jay0+dHJ5X2xvY2soKTsKLS0gICAgfQotKyAgICByZXR1cm4gb2JqZWN0LT5maWxlX2xvY2stPnRyeV9sb2NrKCk7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci0gfQotIAotIHZvaWQgQ0VtdUZpbGVXcmFwcGVyOjpVbmxvY2tGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCkKLSB7Ci0tICBpbnQgaSA9IGZkIC0gRklMRV9XUkFQUEVSX09GRlNFVDsKLS0gIGlmIChpID49IDAgJiYgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUykKLSsgIEVtdUZpbGVPYmplY3QqIG9iamVjdCA9IEdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoZmQpOwotKyAgaWYgKG9iamVjdCAmJiBvYmplY3QtPmZpbGVfeGJtYykKLSAgIHsKLS0gICAgaWYgKG1fZmlsZXNbaV0udXNlZCkKLS0gICAgewotLSAgICAgIG1fZmlsZXNbaV0uZmlsZV9sb2NrLT51bmxvY2soKTsKLS0gICAgfQotKyAgICBvYmplY3QtPmZpbGVfbG9jay0+dW5sb2NrKCk7Ci0gICB9Ci0gfQotIAotIEVtdUZpbGVPYmplY3QqIENFbXVGaWxlV3JhcHBlcjo6R2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihpbnQgZmQpCi0gewotLSAgaW50IGkgPSBmZCAtIEZJTEVfV1JBUFBFUl9PRkZTRVQ7Ci0rICBpbnQgaSA9IGZkIC0gMHg3MDAwMDAwOwotICAgaWYgKGkgPj0gMCAmJiBpIDwgTUFYX0VNVUxBVEVEX0ZJTEVTKQotICAgewotLSAgICBpZiAobV9maWxlc1tpXS51c2VkKQotKyAgICBpZiAobV9maWxlc1tpXS5maWxlX3hibWMpCi0gICAgIHsKLSAgICAgICByZXR1cm4gJm1fZmlsZXNbaV07Ci0gICAgIH0KLUBAIC0yMDQsMjAgKzE2MywzOSBAQCBFbXVGaWxlT2JqZWN0KiBDRW11RmlsZVdyYXBwZXI6OkdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoaW50IGZkKQotICAgcmV0dXJuIG51bGxwdHI7Ci0gfQotIAotK2ludCBDRW11RmlsZVdyYXBwZXI6OkdldERlc2NyaXB0b3JCeUZpbGVPYmplY3QoRW11RmlsZU9iamVjdCAqb2JqZWN0KQotK3sKLSsgIGludCBpID0gb2JqZWN0IC0gbV9maWxlczsKLSsgIGlmIChpID49IDAgJiYgaSA8IE1BWF9FTVVMQVRFRF9GSUxFUykKLSsgIHsKLSsgICAgcmV0dXJuIDB4NzAwMDAwMCArIGk7Ci0rICB9Ci0rCi0rICByZXR1cm4gLTE7Ci0rfQotKwotIEVtdUZpbGVPYmplY3QqIENFbXVGaWxlV3JhcHBlcjo6R2V0RmlsZU9iamVjdEJ5U3RyZWFtKEZJTEUqIHN0cmVhbSkKLSB7Ci0tICBpZiAoaXNWYWxpZEZpbGVQdHIoc3RyZWFtKSkKLSsgIEVtdUZpbGVPYmplY3QgKm9iamVjdCA9IChFbXVGaWxlT2JqZWN0Kikgc3RyZWFtOwotKyAgaWYgKG9iamVjdCA+PSAmbV9maWxlc1swXSB8fCBvYmplY3QgPCAmbV9maWxlc1tNQVhfRU1VTEFURURfRklMRVNdKQotICAgewotLSAgICByZXR1cm4gR2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihGaWxlRGVzY3JpcHRvcigqc3RyZWFtKS0+X2ZpbGUpOwotKyAgICBpZiAob2JqZWN0LT5maWxlX3hibWMpCi0rICAgIHsKLSsgICAgICByZXR1cm4gb2JqZWN0OwotKyAgICB9Ci0gICB9Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0gCi0tICByZXR1cm4gbnVsbHB0cjsKLStGSUxFKiBDRW11RmlsZVdyYXBwZXI6OkdldFN0cmVhbUJ5RmlsZU9iamVjdChFbXVGaWxlT2JqZWN0ICpvYmplY3QpCi0rewotKyAgcmV0dXJuIChGSUxFKikgb2JqZWN0OwotIH0KLSAKLSBYRklMRTo6Q0ZpbGUqIENFbXVGaWxlV3JhcHBlcjo6R2V0RmlsZVhibWNCeURlc2NyaXB0b3IoaW50IGZkKQotIHsKLSAgIGF1dG8gb2JqZWN0ID0gR2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihmZCk7Ci0tICBpZiAob2JqZWN0ICE9IG51bGxwdHIgJiYgb2JqZWN0LT51c2VkKQotKyAgaWYgKG9iamVjdCAhPSBudWxscHRyKQotICAgewotICAgICByZXR1cm4gb2JqZWN0LT5maWxlX3hibWM7Ci0gICB9Ci1AQCAtMjI4LDggKzIwNiw5IEBAIFhGSUxFOjpDRmlsZSogQ0VtdUZpbGVXcmFwcGVyOjpHZXRGaWxlWGJtY0J5U3RyZWFtKEZJTEUqIHN0cmVhbSkKLSB7Ci0gICBpZiAoaXNWYWxpZEZpbGVQdHIoc3RyZWFtKSkKLSAgIHsKLS0gICAgYXV0byBvYmplY3QgPSBHZXRGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKEZpbGVEZXNjcmlwdG9yKCpzdHJlYW0pLT5fZmlsZSk7Ci0tICAgIGlmIChvYmplY3QgIT0gbnVsbHB0ciAmJiBvYmplY3QtPnVzZWQpCi0rICAgIEVtdUZpbGVPYmplY3QqIG9iamVjdCA9IEdldEZpbGVPYmplY3RCeVN0cmVhbShzdHJlYW0pOwotKyAgICBpZiAob2JqZWN0ICE9IE5VTEwpCi0rCi0gICAgIHsKLSAgICAgICByZXR1cm4gb2JqZWN0LT5maWxlX3hibWM7Ci0gICAgIH0KLUBAIC0yMzksMzIgKzIxOCwyMSBAQCBYRklMRTo6Q0ZpbGUqIENFbXVGaWxlV3JhcHBlcjo6R2V0RmlsZVhibWNCeVN0cmVhbShGSUxFKiBzdHJlYW0pCi0gCi0gaW50IENFbXVGaWxlV3JhcHBlcjo6R2V0RGVzY3JpcHRvckJ5U3RyZWFtKEZJTEUqIHN0cmVhbSkKLSB7Ci0tICBpZiAoaXNWYWxpZEZpbGVQdHIoc3RyZWFtKSkKLS0gIHsKLS0gICAgaW50IGkgPSBGaWxlRGVzY3JpcHRvcigqc3RyZWFtKS0+X2ZpbGUgLSBGSUxFX1dSQVBQRVJfT0ZGU0VUOwotLSAgICBpZiAoaSA+PSAwICYmIGkgPCBNQVhfRU1VTEFURURfRklMRVMpCi0tICAgIHsKLS0gICAgICByZXR1cm4gaSArIEZJTEVfV1JBUFBFUl9PRkZTRVQ7Ci0tICAgIH0KLS0gIH0KLS0gIHJldHVybiAtMTsKLSsgIHJldHVybiBHZXREZXNjcmlwdG9yQnlGaWxlT2JqZWN0KEdldEZpbGVPYmplY3RCeVN0cmVhbShzdHJlYW0pKTsKLSB9Ci0gCi0gRklMRSogQ0VtdUZpbGVXcmFwcGVyOjpHZXRTdHJlYW1CeURlc2NyaXB0b3IoaW50IGZkKQotIHsKLS0gIGF1dG8gb2JqZWN0ID0gR2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihmZCk7Ci0tICBpZiAob2JqZWN0ICE9IG51bGxwdHIgJiYgb2JqZWN0LT51c2VkKQotLSAgewotLSAgICByZXR1cm4gJm9iamVjdC0+ZmlsZV9lbXU7Ci0tICB9Ci0tICByZXR1cm4gbnVsbHB0cjsKLSsgIHJldHVybiBHZXRTdHJlYW1CeUZpbGVPYmplY3QoR2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihmZCkpOwotK30KLSsKLStib29sIENFbXVGaWxlV3JhcHBlcjo6RGVzY3JpcHRvcklzRW11bGF0ZWRGaWxlKGludCBmZCkKLSt7Ci0rICByZXR1cm4gR2V0RmlsZU9iamVjdEJ5RGVzY3JpcHRvcihmZCkgIT0gTlVMTDsKLSB9Ci0gCi0gYm9vbCBDRW11RmlsZVdyYXBwZXI6OlN0cmVhbUlzRW11bGF0ZWRGaWxlKEZJTEUqIHN0cmVhbSkKLSB7Ci0tICBpZiAoaXNWYWxpZEZpbGVQdHIoc3RyZWFtKSkKLS0gIHsKLS0gICAgcmV0dXJuIERlc2NyaXB0b3JJc0VtdWxhdGVkRmlsZShGaWxlRGVzY3JpcHRvcigqc3RyZWFtKS0+X2ZpbGUpOwotLSAgfQotLSAgcmV0dXJuIGZhbHNlOwotKyAgcmV0dXJuIEdldEZpbGVPYmplY3RCeVN0cmVhbShzdHJlYW0pICE9IE5VTEw7Ci0gfQotKwotZGlmZiAtLWdpdCBhL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvdXRpbC9FbXVGaWxlV3JhcHBlci5oIGIveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy91dGlsL0VtdUZpbGVXcmFwcGVyLmgKLWluZGV4IDc4NmZhODUuLjMxMWE1Y2YgMTAwNjQ0Ci0tLS0gYS94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL3V0aWwvRW11RmlsZVdyYXBwZXIuaAotKysrIGIveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy91dGlsL0VtdUZpbGVXcmFwcGVyLmgKLUBAIC0yNSwxNCArMjUsMTQgQEAKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgInRocmVhZHMvQ3JpdGljYWxTZWN0aW9uLmgiCi0gCi0tI2lmIGRlZmluZWQoVEFSR0VUX1BPU0lYKSAmJiAhZGVmaW5lZChUQVJHRVRfREFSV0lOKSAmJiAhZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgJiYgIWRlZmluZWQoVEFSR0VUX0FORFJPSUQpICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0tI2RlZmluZSBfZmlsZSBfZmlsZW5vCi0tI2VsaWYgZGVmaW5lZChfX1VDTElCQ19fKQotLSNkZWZpbmUgX2ZpbGUgX19maWxlZGVzCi0tI2VuZGlmCi0rLy8jaWYgZGVmaW5lZChUQVJHRVRfUE9TSVgpICYmICFkZWZpbmVkKFRBUkdFVF9EQVJXSU4pICYmICFkZWZpbmVkKFRBUkdFVF9GUkVFQlNEKSAmJiAhZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykKLSsvLyNkZWZpbmUgX2ZpbGUgX2ZpbGVubwotKy8vI2VsaWYgZGVmaW5lZChfX1VDTElCQ19fKQotKy8vI2RlZmluZSBfZmlsZSBfX2ZpbGVkZXMKLSsvLyNlbmRpZgotIAotICNkZWZpbmUgTUFYX0VNVUxBVEVEX0ZJTEVTICAgIDUwCi0tI2RlZmluZSBGSUxFX1dSQVBQRVJfT0ZGU0VUICAgMHgwMDAwMDIwMAotKy8vI2RlZmluZSBGSUxFX1dSQVBQRVJfT0ZGU0VUICAgMHgwMDAwMDIwMAotIAotIG5hbWVzcGFjZSBYRklMRQotIHsKLUBAIC00NywxMiArNDcsOSBAQCBzdHJ1Y3Qga29kaV9pb2J1ZiB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3Qgc3RFbXVGaWxlT2JqZWN0Ci0gewotLSAgRklMRSAgICBmaWxlX2VtdTsKLSAgIFhGSUxFOjpDRmlsZSogIGZpbGVfeGJtYzsKLSAgIENDcml0aWNhbFNlY3Rpb24gKmZpbGVfbG9jazsKLSAgIGludCBtb2RlOwotLSAgLy9TdGljayB0aGlzIGxhc3QgdG8gYXZvaWQgMy03IGJ5dGVzIG9mIHBhZGRpbmcKLS0gIGJvb2wgICAgdXNlZDsKLSB9IEVtdUZpbGVPYmplY3Q7Ci0gCi0gY2xhc3MgQ0VtdUZpbGVXcmFwcGVyCi1AQCAtNjcsMjIgKzY0LDIyIEBAIHB1YmxpYzoKLSAgIHZvaWQgQ2xlYW5VcCgpOwotIAotICAgRW11RmlsZU9iamVjdCogUmVnaXN0ZXJGaWxlT2JqZWN0KFhGSUxFOjpDRmlsZSogcEZpbGUpOwotKyAgdm9pZCBVblJlZ2lzdGVyRmlsZU9iamVjdChFbXVGaWxlT2JqZWN0KiwgYm9vbCBmcmVlX2ZpbGUpOwotICAgdm9pZCBVblJlZ2lzdGVyRmlsZU9iamVjdEJ5RGVzY3JpcHRvcihpbnQgZmQpOwotICAgdm9pZCBVblJlZ2lzdGVyRmlsZU9iamVjdEJ5U3RyZWFtKEZJTEUqIHN0cmVhbSk7Ci0gICB2b2lkIExvY2tGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCk7Ci0gICBib29sIFRyeUxvY2tGaWxlT2JqZWN0QnlEZXNjcmlwdG9yKGludCBmZCk7Ci0gICB2b2lkIFVubG9ja0ZpbGVPYmplY3RCeURlc2NyaXB0b3IoaW50IGZkKTsKLSAgIEVtdUZpbGVPYmplY3QqIEdldEZpbGVPYmplY3RCeURlc2NyaXB0b3IoaW50IGZkKTsKLSsgIGludCBHZXREZXNjcmlwdG9yQnlGaWxlT2JqZWN0KEVtdUZpbGVPYmplY3QqKTsKLSAgIEVtdUZpbGVPYmplY3QqIEdldEZpbGVPYmplY3RCeVN0cmVhbShGSUxFKiBzdHJlYW0pOwotKyAgRklMRSogR2V0U3RyZWFtQnlGaWxlT2JqZWN0KEVtdUZpbGVPYmplY3QqKTsKLSAgIFhGSUxFOjpDRmlsZSogR2V0RmlsZVhibWNCeURlc2NyaXB0b3IoaW50IGZkKTsKLSAgIFhGSUxFOjpDRmlsZSogR2V0RmlsZVhibWNCeVN0cmVhbShGSUxFKiBzdHJlYW0pOwotLSAgc3RhdGljIGludCBHZXREZXNjcmlwdG9yQnlTdHJlYW0oRklMRSogc3RyZWFtKTsKLSsgIGludCBHZXREZXNjcmlwdG9yQnlTdHJlYW0oRklMRSogc3RyZWFtKTsKLSAgIEZJTEUqIEdldFN0cmVhbUJ5RGVzY3JpcHRvcihpbnQgZmQpOwotLSAgc3RhdGljIGNvbnN0ZXhwciBib29sIERlc2NyaXB0b3JJc0VtdWxhdGVkRmlsZShpbnQgZmQpCi0tICB7Ci0tICAgIHJldHVybiBmZCA+PSBGSUxFX1dSQVBQRVJfT0ZGU0VUICYmIGZkIDwgRklMRV9XUkFQUEVSX09GRlNFVCArIE1BWF9FTVVMQVRFRF9GSUxFUzsKLS0gIH0KLS0gIHN0YXRpYyBib29sIFN0cmVhbUlzRW11bGF0ZWRGaWxlKEZJTEUqIHN0cmVhbSk7Ci0rICBib29sIERlc2NyaXB0b3JJc0VtdWxhdGVkRmlsZShpbnQgZmQpOwotKyAgYm9vbCBTdHJlYW1Jc0VtdWxhdGVkRmlsZShGSUxFKiBzdHJlYW0pOwotIHByaXZhdGU6Ci0gICBFbXVGaWxlT2JqZWN0IG1fZmlsZXNbTUFYX0VNVUxBVEVEX0ZJTEVTXTsKLSAgIENDcml0aWNhbFNlY3Rpb24gbV9jcml0aWNhbFNlY3Rpb247Ci1kaWZmIC0tZ2l0IGEveGJtYy9jb3Jlcy9EbGxMb2FkZXIvZXhwb3J0cy93cmFwcGVyLmMgYi94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL3dyYXBwZXIuYwotaW5kZXggZTM2MzY2Mi4uMDc4MjVmMyAxMDA2NDQKLS0tLSBhL3hibWMvY29yZXMvRGxsTG9hZGVyL2V4cG9ydHMvd3JhcHBlci5jCi0rKysgYi94Ym1jL2NvcmVzL0RsbExvYWRlci9leHBvcnRzL3dyYXBwZXIuYwotQEAgLTM5LDEzICszOSwxMyBAQAotICNlbmRpZgotICNpbmNsdWRlIDxkbGZjbi5oPgotIAotLSNpZiBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0ZSRUVCU0QpIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rI2lmIGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfRlJFRUJTRCkgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkgfHwgIWRlZmluZWQoX19HTElCQ19fKQotIHR5cGVkZWYgb2ZmX3QgICAgIF9fb2ZmX3Q7Ci0gdHlwZWRlZiBpbnQ2NF90ICAgb2ZmNjRfdDsKLSB0eXBlZGVmIG9mZjY0X3QgICBfX29mZjY0X3Q7Ci0gdHlwZWRlZiBmcG9zX3QgICAgZnBvczY0X3Q7Ci0gI2RlZmluZSBzdGF0NjQgICAgc3RhdAotLSNpZiBkZWZpbmVkKFRBUkdFVF9EQVJXSU4pIHx8IGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rI2lmIGRlZmluZWQoVEFSR0VUX0RBUldJTikgfHwgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkgfHwgIWRlZmluZWQoX19HTElCQ19fKQotICNkZWZpbmUgX0dfdmFfbGlzdCB2YV9saXN0Ci0gI2VuZGlmCi0gI2VuZGlmCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMS1jaGFuZ2Utb3JkZXItb2YtZGV0ZWN0aW5nLWxpYmVnbC1hbmQtbGliZ2xlczIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMS1jaGFuZ2Utb3JkZXItb2YtZGV0ZWN0aW5nLWxpYmVnbC1hbmQtbGliZ2xlczIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYTZjMDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDEtY2hhbmdlLW9yZGVyLW9mLWRldGVjdGluZy1saWJlZ2wtYW5kLWxpYmdsZXMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAyMTUyNDU5ODExMGU3YTU1MTEzMjA1ZGRhNGJjMWE2ZDU5ODcxMTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOSBNYXkgMjAxNyAwNjo0MTozMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBjaGFuZ2Ugb3JkZXIgb2YgZGV0ZWN0aW5nIGxpYmVnbCBhbmQgbGliZ2xlczIKLQotVGhpcyBhY3R1YWxseSBoZWxwcyBidWlsZGluZyBpdCBvbiBycGkvdXNlcmxhbmQKLXdoZXJlIGxpYkVHTCBkZXBlbmRzIG9uIGZldyBmdW5jdGlvbnMgZnJvbSBsaWJHTEVTdjIKLXNlZQotaHR0cHM6Ly93d3cucmFzcGJlcnJ5cGkub3JnL2ZvcnVtcy92aWV3dG9waWMucGhwP3Q9NzA5MAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiOWU0MjQwLi4xY2EwMjk3IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05NTEsOCArOTUxLDggQEAgaWYgdGVzdCAiJHVzZV9nbGVzIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgQUNfTVNHX1JFU1VMVCg9PSBXQVJOSU5HOiBPcGVuR0xFUyBzdXBwb3J0IGlzIGFzc3VtZWQuKQotICAgICAgIExJQlM9IiRMSUJTIC1sRUdMIC1sR0xFU3YyIC1sYmNtX2hvc3QgLWx2Y29zIC1sdmNoaXFfYXJtIC1sbW1hbCAtbG1tYWxfY29yZSAtbG1tYWxfdXRpbCAtbHZjc20iCi0gICAgIGVsc2UKLS0gICAgICBBQ19DSEVDS19MSUIoW0VHTF0sICAgW21haW5dLCwgQUNfTVNHX0VSUk9SKCRtaXNzaW5nX2xpYnJhcnkpKQotICAgICAgIEFDX0NIRUNLX0xJQihbR0xFU3YyXSxbbWFpbl0sLCBBQ19NU0dfRVJST1IoJG1pc3NpbmdfbGlicmFyeSkpCi0rICAgICAgQUNfQ0hFQ0tfTElCKFtFR0xdLCAgIFttYWluXSwsIEFDX01TR19FUlJPUigkbWlzc2luZ19saWJyYXJ5KSkKLSAgICAgZmkKLSAgIGZpCi0gZWxzZQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMi1SZW1vdmUtRklMRVdSQVAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMi1SZW1vdmUtRklMRVdSQVAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2M2E1YzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDItUmVtb3ZlLUZJTEVXUkFQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhZDE5NzdhMzU4MzE5MDkzYjMwNWRmNmQ4NGJlNmRiNjc2ZWYxZTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgNiBOb3YgMjAxNiAyMjozNToxNiAtMDgwMAotU3ViamVjdDogW1BBVENIIDAyLzEwXSBSZW1vdmUgRklMRVdSQVAKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHhibWMvdXRpbHMvcG9zaXgvUG9zaXhJbnRlcmZhY2VGb3JDTG9nLmNwcCB8IDYgKy0tLS0tCi0geGJtYy91dGlscy9wb3NpeC9Qb3NpeEludGVyZmFjZUZvckNMb2cuaCAgIHwgNCArLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQveGJtYy91dGlscy9wb3NpeC9Qb3NpeEludGVyZmFjZUZvckNMb2cuY3BwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcveGJtYy91dGlscy9wb3NpeC9Qb3NpeEludGVyZmFjZUZvckNMb2cuY3BwCi0rKysgZ2l0L3hibWMvdXRpbHMvcG9zaXgvUG9zaXhJbnRlcmZhY2VGb3JDTG9nLmNwcAotQEAgLTI5LDEwICsyOSw2IEBACi0gI2luY2x1ZGUgInBsYXRmb3JtL2FuZHJvaWQvYWN0aXZpdHkvWEJNQ0FwcC5oIgotICNlbmRpZiAvLyBUQVJHRVRfQU5EUk9JRAotIAotLXN0cnVjdCBGSUxFV1JBUCA6IHB1YmxpYyBGSUxFCi0te307Ci0tCi0tCi0gQ1Bvc2l4SW50ZXJmYWNlRm9yQ0xvZzo6Q1Bvc2l4SW50ZXJmYWNlRm9yQ0xvZygpIDoKLSAgIG1fZmlsZShOVUxMKQotIHsgfQotQEAgLTUyLDcgKzQ4LDcgQEAgYm9vbCBDUG9zaXhJbnRlcmZhY2VGb3JDTG9nOjpPcGVuTG9nRmlsZQotICAgKHZvaWQpcmVtb3ZlKGJhY2t1cE9sZExvZ1RvRmlsZW5hbWUuY19zdHIoKSk7IC8vIGlmIGl0J3MgZmFpbGVkLCB0cnkgdG8gY29udGludWUKLSAgICh2b2lkKXJlbmFtZShsb2dGaWxlbmFtZS5jX3N0cigpLCBiYWNrdXBPbGRMb2dUb0ZpbGVuYW1lLmNfc3RyKCkpOyAvLyBpZiBpdCdzIGZhaWxlZCwgdHJ5IHRvIGNvbnRpbnVlCi0gCi0tICBtX2ZpbGUgPSAoRklMRVdSQVAqKWZvcGVuKGxvZ0ZpbGVuYW1lLmNfc3RyKCksICJ3YiIpOwotKyAgbV9maWxlID0gZm9wZW4obG9nRmlsZW5hbWUuY19zdHIoKSwgIndiIik7Ci0gICBpZiAoIW1fZmlsZSkKLSAgICAgcmV0dXJuIGZhbHNlOyAvLyBlcnJvciwgY2FuJ3Qgb3BlbiBsb2cgZmlsZQotIAotSW5kZXg6IGdpdC94Ym1jL3V0aWxzL3Bvc2l4L1Bvc2l4SW50ZXJmYWNlRm9yQ0xvZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcveGJtYy91dGlscy9wb3NpeC9Qb3NpeEludGVyZmFjZUZvckNMb2cuaAotKysrIGdpdC94Ym1jL3V0aWxzL3Bvc2l4L1Bvc2l4SW50ZXJmYWNlRm9yQ0xvZy5oCi1AQCAtMzQsNSArMzQsNSBAQCBwdWJsaWM6Ci0gICB2b2lkIFByaW50RGVidWdTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIGRlYnVnU3RyaW5nKTsKLSAgIHN0YXRpYyB2b2lkIEdldEN1cnJlbnRMb2NhbFRpbWUoaW50JiBob3VyLCBpbnQmIG1pbnV0ZSwgaW50JiBzZWNvbmQsIGRvdWJsZSYgbWlsbGlzZWNvbmQpOwotIHByaXZhdGU6Ci0tICBGSUxFV1JBUCogbV9maWxlOwotKyAgRklMRSogbV9maWxlOwotIH07CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMy1jb25maWd1cmUtZG9uLXQtdHJ5LXRvLXJ1bi1zdHVmZi10by1maW5kLXRpbnl4bWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwMy1jb25maWd1cmUtZG9uLXQtdHJ5LXRvLXJ1bi1zdHVmZi10by1maW5kLXRpbnl4bWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MjE3YTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDMtY29uZmlndXJlLWRvbi10LXRyeS10by1ydW4tc3R1ZmYtdG8tZmluZC10aW55eG1sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSBhOTFhM2JhMjI5ZGM1OTAzOTM1ZjdkZDk4ZGQwM2JiYjRmZTVhYzFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFNhdCwgNiBGZWIgMjAxNiAxNTo0MzowMSArMDEwMAotU3ViamVjdDogW1BBVENIIDAzLzEwXSBjb25maWd1cmU6IGRvbid0IHRyeSB0byBydW4gc3R1ZmYgdG8gZmluZCB0aW55eG1sCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMzRmZTY0My4uMzEzMmRjMSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA0Myw3ICsxMDQzLDcgQEAgZmkKLSBBQ19MQU5HX1BVU0goW0MrK10pCi0gUEtHX0NIRUNLX01PRFVMRVMoW1RJTllYTUxdLCBbdGlueXhtbCA+PSAyLjYuMl0sCi0gICBbSU5DTFVERVM9IiRJTkNMVURFUyAkVElOWVhNTF9DRkxBR1MiOyBMSUJTPSIkTElCUyAkVElOWVhNTF9MSUJTIl0sCi0tICBbQUNfUlVOX0lGRUxTRSgKLSsgIFtBQ19DT01QSUxFX0lGRUxTRSgKLSAgICBbQUNfTEFOR19TT1VSQ0UoW1sKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbnl4bWwuaD4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA0LWhhbmRsZS1TSUdURVJNLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDQtaGFuZGxlLVNJR1RFUk0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMzc0MzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDQtaGFuZGxlLVNJR1RFUk0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotRnJvbSA0OTA0NmMxNjg1NDY1YTU0ODZmZTllMWMwNGI5OWM1ODVhYWI2ODYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIFNhcmFldiA8c3RlZmFuQHNhcmFldi5jYT4KLURhdGU6IFdlZCwgMiBOb3YgMjAxNiAxMToyODozNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDA0LzEwXSBoYW5kbGUgU0lHVEVSTQotCi0wLiBDQXBwbGljYXRpb246OlN0b3AgY2FudCBiZSB0cnVzdGVkLiAoZGVhZGxvY2tzIGNyYXNoZXMgYW5kIGJvbykKLQotc28sIHdoZW4gc2h1dGRvd24vcmVib290IGlzIHJlcXVlc3RlZDoKLQotMS4gc2F2ZSBhbiBleGl0IGNvZGUgKGZvciBDRUMuLi4pCi0yLiBjYWxsIENQb3dlck1hbmFnZXI6OntSZWJvb3QsUG93ZXJEb3dufQotMy4gLi4uIHRoZW4gc3lzdGVtZCBzZW5kcyBURVJNIGFuZCB3YWl0cyB4eCBzZWNvbmRzIGJlZm9yZSBzZW5kaW5nIEtJTEwKLTQuIENBcHBsaWNhdGlvbjo6U3RvcCBoYXMgeHggc2Vjb25kcyB0byBzYXZlIGd1aXNldHRpbmdzLnhtbCBhbmQgYm9vCi01LiBDRUMgdGhyZWFkIGhhcyB4eCBzZWNvbmRzIHRvIHN3aXRjaCBvZmYgYWZ0ZXIgaXQgcmVjZWl2ZWQgT25RdWl0Ci02LiBhZGRvbnMgLyBwdnJtYW5hZ2VyIC8gY2VjIC8gZXZlcnl0aGluZyBlbHNlLi4gYXJlIGZyZWUgdG8gZGVhZGxvY2sgLyBjcmFzaCBub3csIHdlIGRvbnQgY2FyZQotNy4gS0lMTAotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gU2FyYWV2IDxzdGVmYW5Ac2FyYWV2LmNhPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHhibWMvQXBwbGljYXRpb24uY3BwICAgICAgICAgfCAxNyArKysrKysrKysrKystLS0tLQotIHhibWMvQXBwbGljYXRpb24uaCAgICAgICAgICAgfCAgMSArCi0geGJtYy9YQkFwcGxpY2F0aW9uRXguY3BwICAgICB8ICAxICsKLSB4Ym1jL1hCQXBwbGljYXRpb25FeC5oICAgICAgIHwgIDEgKwotIHhibWMvcGxhdGZvcm0vcG9zaXgvbWFpbi5jcHAgfCAxNSArKysrKysrKysrKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Ym1jL0FwcGxpY2F0aW9uLmNwcCBiL3hibWMvQXBwbGljYXRpb24uY3BwCi1pbmRleCAxMDBhMmYyLi5mZGE4OTJkIDEwMDY0NAotLS0tIGEveGJtYy9BcHBsaWNhdGlvbi5jcHAKLSsrKyBiL3hibWMvQXBwbGljYXRpb24uY3BwCi1AQCAtMjQyNiwxMiArMjQyNiwxMiBAQCB2b2lkIENBcHBsaWNhdGlvbjo6T25BcHBsaWNhdGlvbk1lc3NhZ2UoVGhyZWFkTWVzc2FnZSogcE1zZykKLSAgIHN3aXRjaCAocE1zZy0+ZHdNZXNzYWdlKQotICAgewotICAgY2FzZSBUTVNHX1BPV0VSRE9XTjoKLS0gICAgU3RvcChFWElUQ09ERV9QT1dFUkRPV04pOwotKyAgICBTZXRFeGl0Q29kZShFWElUQ09ERV9QT1dFUkRPV04pOwotICAgICBnX3Bvd2VyTWFuYWdlci5Qb3dlcmRvd24oKTsKLSAgICAgYnJlYWs7Ci0gCi0gICBjYXNlIFRNU0dfUVVJVDoKLS0gICAgU3RvcChFWElUQ09ERV9RVUlUKTsKLSsgICAgU2V0RXhpdENvZGUoRVhJVENPREVfUVVJVCk7Ci0gICAgIGJyZWFrOwotICAgCi0gICBjYXNlIFRNU0dfU0hVVERPV046Ci1AQCAtMjQ1MiwxMiArMjQ1MiwxMyBAQCB2b2lkIENBcHBsaWNhdGlvbjo6T25BcHBsaWNhdGlvbk1lc3NhZ2UoVGhyZWFkTWVzc2FnZSogcE1zZykKLSAKLSAgIGNhc2UgVE1TR19SRVNUQVJUOgotICAgY2FzZSBUTVNHX1JFU0VUOgotLSAgICBTdG9wKEVYSVRDT0RFX1JFQk9PVCk7Ci0rICAgIFNldEV4aXRDb2RlKEVYSVRDT0RFX1JFQk9PVCk7Ci0gICAgIGdfcG93ZXJNYW5hZ2VyLlJlYm9vdCgpOwotICAgICBicmVhazsKLSAKLSAgIGNhc2UgVE1TR19SRVNUQVJUQVBQOgotICNpZiBkZWZpbmVkKFRBUkdFVF9XSU5ET1dTKSB8fCBkZWZpbmVkKFRBUkdFVF9MSU5VWCkKLSsgICAgU2V0RXhpdENvZGUoRVhJVENPREVfUkVTVEFSVEFQUCk7Ci0gICAgIFN0b3AoRVhJVENPREVfUkVTVEFSVEFQUCk7Ci0gI2VuZGlmCi0gICAgIGJyZWFrOwotQEAgLTI4ODEsNiArMjg4MiwxMyBAQCBib29sIENBcHBsaWNhdGlvbjo6Q2xlYW51cCgpCi0gICB9Ci0gfQotIAotK3ZvaWQgQ0FwcGxpY2F0aW9uOjpTZXRFeGl0Q29kZShpbnQgZXhpdENvZGUpCi0rewotKyAgLy8gc2F2ZSBpdCBmb3IgQ0VDCi0rICBtX0V4aXRDb2RlID0gZXhpdENvZGU7Ci0rICBtX0V4aXRDb2RlU2V0ID0gdHJ1ZTsKLSt9Ci0rCi0gdm9pZCBDQXBwbGljYXRpb246OlN0b3AoaW50IGV4aXRDb2RlKQotIHsKLSAgIHRyeQotQEAgLTI4ODgsNyArMjg5Niw3IEBAIHZvaWQgQ0FwcGxpY2F0aW9uOjpTdG9wKGludCBleGl0Q29kZSkKLSAgICAgbV9mcmFtZU1vdmVHdWFyZC51bmxvY2soKTsKLSAKLSAgICAgQ1ZhcmlhbnQgdkV4aXRDb2RlKENWYXJpYW50OjpWYXJpYW50VHlwZU9iamVjdCk7Ci0tICAgIHZFeGl0Q29kZVsiZXhpdGNvZGUiXSA9IGV4aXRDb2RlOwotKyAgICB2RXhpdENvZGVbImV4aXRjb2RlIl0gPSBtX0V4aXRDb2RlOwotICAgICBDQW5ub3VuY2VtZW50TWFuYWdlcjo6R2V0SW5zdGFuY2UoKS5Bbm5vdW5jZShTeXN0ZW0sICJ4Ym1jIiwgIk9uUXVpdCIsIHZFeGl0Q29kZSk7Ci0gCi0gICAgIC8vIEFib3J0IGFueSBhY3RpdmUgc2NyZWVuc2F2ZXIKLUBAIC0yOTIyLDcgKzI5MzAsNiBAQCB2b2lkIENBcHBsaWNhdGlvbjo6U3RvcChpbnQgZXhpdENvZGUpCi0gCi0gICAgIG1fYlN0b3AgPSB0cnVlOwotICAgICBtX0FwcEZvY3VzZWQgPSBmYWxzZTsKLS0gICAgbV9FeGl0Q29kZSA9IGV4aXRDb2RlOwotICAgICBDTG9nOjpMb2coTE9HTk9USUNFLCAic3RvcCBhbGwiKTsKLSAKLSAgICAgLy8gY2FuY2VsIGFueSBqb2JzIGZyb20gdGhlIGpvYm1hbmFnZXIKLWRpZmYgLS1naXQgYS94Ym1jL0FwcGxpY2F0aW9uLmggYi94Ym1jL0FwcGxpY2F0aW9uLmgKLWluZGV4IGE5ZDliZjUuLmU1MzZkZWIgMTAwNjQ0Ci0tLS0gYS94Ym1jL0FwcGxpY2F0aW9uLmgKLSsrKyBiL3hibWMvQXBwbGljYXRpb24uaAotQEAgLTE1OSw2ICsxNTksNyBAQCBwdWJsaWM6Ci0gICB2b2lkIFN0b3BQVlJNYW5hZ2VyKCk7Ci0gICB2b2lkIFJlaW5pdFBWUk1hbmFnZXIoKTsKLSAgIGJvb2wgSXNDdXJyZW50VGhyZWFkKCkgY29uc3Q7Ci0rICB2b2lkIFNldEV4aXRDb2RlKGludCBleGl0Q29kZSk7Ci0gICB2b2lkIFN0b3AoaW50IGV4aXRDb2RlKTsKLSAgIHZvaWQgUmVzdGFydEFwcCgpOwotICAgdm9pZCBVbmxvYWRTa2luKGJvb2wgZm9yUmVsb2FkID0gZmFsc2UpOwotZGlmZiAtLWdpdCBhL3hibWMvWEJBcHBsaWNhdGlvbkV4LmNwcCBiL3hibWMvWEJBcHBsaWNhdGlvbkV4LmNwcAotaW5kZXggMDM1YWVkMi4uMzQxMDJmNSAxMDA2NDQKLS0tLSBhL3hibWMvWEJBcHBsaWNhdGlvbkV4LmNwcAotKysrIGIveGJtYy9YQkFwcGxpY2F0aW9uRXguY3BwCi1AQCAtNDYsNiArNDYsNyBAQCBDWEJBcHBsaWNhdGlvbkV4OjpDWEJBcHBsaWNhdGlvbkV4KCkKLSAgIG1fYlN0b3AgPSBmYWxzZTsKLSAgIG1fQXBwRm9jdXNlZCA9IHRydWU7Ci0gICBtX0V4aXRDb2RlID0gRVhJVENPREVfUVVJVDsKLSsgIG1fRXhpdENvZGVTZXQgPSBmYWxzZTsKLSAgIG1fcmVuZGVyR1VJID0gZmFsc2U7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3hibWMvWEJBcHBsaWNhdGlvbkV4LmggYi94Ym1jL1hCQXBwbGljYXRpb25FeC5oCi1pbmRleCA5YmMxNGZhLi5mNjk2Yjg5IDEwMDY0NAotLS0tIGEveGJtYy9YQkFwcGxpY2F0aW9uRXguaAotKysrIGIveGJtYy9YQkFwcGxpY2F0aW9uRXguaAotQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgotICAgLy8gVmFyaWFibGVzIGZvciB0aW1pbmcKLSAgIGJvb2wgbV9iU3RvcDsKLSAgIGludCAgbV9FeGl0Q29kZTsKLSsgIGJvb2wgbV9FeGl0Q29kZVNldDsKLSAgIGJvb2wgbV9BcHBGb2N1c2VkOwotICAgYm9vbCBtX3JlbmRlckdVSTsKLSAKLWRpZmYgLS1naXQgYS94Ym1jL3BsYXRmb3JtL3Bvc2l4L21haW4uY3BwIGIveGJtYy9wbGF0Zm9ybS9wb3NpeC9tYWluLmNwcAotaW5kZXggYThiNjRlNS4uM2Q4MDAzMiAxMDA2NDQKLS0tLSBhL3hibWMvcGxhdGZvcm0vcG9zaXgvbWFpbi5jcHAKLSsrKyBiL3hibWMvcGxhdGZvcm0vcG9zaXgvbWFpbi5jcHAKLUBAIC00MSwxMiArNDEsMjcgQEAKLSAjaW5jbHVkZSAiaW5wdXQvbGludXgvTElSQy5oIgotICNlbmRpZgotICNpbmNsdWRlICJwbGF0Zm9ybS9YYm1jQ29udGV4dC5oIgotKyNpbmNsdWRlICJBcHBsaWNhdGlvbi5oIgotKwotK3ZvaWQgeGJtY190ZXJtX2hhbmRsZXIoaW50IHNpZ251bSkKLSt7Ci0rICBDTG9nOjpMb2coTE9HSU5GTywgIlJlY2VpdmVkIFNJR1RFUk0uLi4iKTsKLSsgIGlmICghZ19hcHBsaWNhdGlvbi5tX0V4aXRDb2RlU2V0KQotKyAgICBnX2FwcGxpY2F0aW9uLlNldEV4aXRDb2RlKEVYSVRDT0RFX1JFU1RBUlRBUFApOwotKyAgZ19hcHBsaWNhdGlvbi5TdG9wKEVYSVRDT0RFX1JFU1RBUlRBUFApOwotK30KLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiCi0gI2VuZGlmCi0gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKLSB7Ci0rICAvLyBTSUdURVJNIGhhbmRsZXIKLSsgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwotKyAgbWVtc2V0KCZhY3Rpb24sIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSk7Ci0rICBhY3Rpb24uc2FfaGFuZGxlciA9IHhibWNfdGVybV9oYW5kbGVyOwotKyAgc2lnYWN0aW9uKFNJR1RFUk0sICZhY3Rpb24sIE5VTEwpOwotKwotICAgLy8gc2V0IHVwIHNvbWUgeGJtYyBzcGVjaWZpYyByZWxhdGlvbnNoaXBzCi0gICBYQk1DOjpDb250ZXh0IGNvbnRleHQ7Ci0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwNS1hZGQtc3VwcG9ydC10by1yZWFkLWZyZXF1ZW5jeS1vdXRwdXQtaWYtdXNpbmctaW50ZWwtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDUtYWRkLXN1cHBvcnQtdG8tcmVhZC1mcmVxdWVuY3ktb3V0cHV0LWlmLXVzaW5nLWludGVsLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUxMGM0MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwNS1hZGQtc3VwcG9ydC10by1yZWFkLWZyZXF1ZW5jeS1vdXRwdXQtaWYtdXNpbmctaW50ZWwtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA0ZDEzNjhkMjBmMDQyMTZhZWM5NTUxZDk4NDViMzA1Zjk2YTIxMDE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlcGhhbiBSYXVlIDxzdGVwaGFuQG9wZW5lbGVjLnR2PgotRGF0ZTogTW9uLCAxIFNlcCAyMDE0IDAzOjE2OjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTBdIGFkZCBzdXBwb3J0IHRvIHJlYWQgZnJlcXVlbmN5IG91dHB1dCBpZiB1c2luZyBpbnRlbCdzCi0gcHN0YXRlIGRyaXZlcgotCi0tLS0KLSB4Ym1jL3V0aWxzL0NQVUluZm8uY3BwIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3hibWMvdXRpbHMvQ1BVSW5mby5jcHAgYi94Ym1jL3V0aWxzL0NQVUluZm8uY3BwCi1pbmRleCA1ZTJlYmJkLi5mZDA0ZDVhIDEwMDY0NAotLS0tIGEveGJtYy91dGlscy9DUFVJbmZvLmNwcAotKysrIGIveGJtYy91dGlscy9DUFVJbmZvLmNwcAotQEAgLTI3NCw2ICsyNzQsOCBAQCBDQ1BVSW5mbzo6Q0NQVUluZm8odm9pZCkKLSAgICAgbV9mUHJvY1RlbXBlcmF0dXJlID0gZm9wZW4oIi9zeXMvY2xhc3MvdGhlcm1hbC90aGVybWFsX3pvbmUwL3RlbXAiLCAiciIpOyAgLy8gT24gUmFzcGJlcnJ5IFBJcwotIAotICAgbV9mQ1BVRnJlcSA9IGZvcGVuICgiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL3NjYWxpbmdfY3VyX2ZyZXEiLCAiciIpOwotKyAgaWYgKG1fZkNQVUZyZXEgPT0gTlVMTCkKLSsgICAgbV9mQ1BVRnJlcSA9IGZvcGVuICgiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1MC9jcHVmcmVxL2NwdWluZm9fY3VyX2ZyZXEiLCAiciIpOwotICAgaWYgKCFtX2ZDUFVGcmVxKQotICAgewotICAgICBtX2NwdUluZm9Gb3JGcmVxID0gdHJ1ZTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA2LURpc2FibGUtRFZELXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwNi1EaXNhYmxlLURWRC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGRmYWMzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA2LURpc2FibGUtRFZELXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDNkM2VjMzkxMDM4YzZlZTczODk3YTdmYWI3NTNiMTFiNTg5ZGUxZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAyIE5vdiAyMDE2IDEyOjM5OjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTBdIERpc2FibGUgRFZEIHN1cHBvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluIHwgNCArLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMGQ3MGU5Yi4uMDUwYzdjYSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTEwLDggKzEwLDcgQEAgRUNfRElSUz0gXAotIAl0b29scy9FdmVudENsaWVudHMKLSAKLSBEVkRQQ09ERUNTX0RJUlM9IFwKLS0JbGliIFwKLS0JbGliL2xpYmR2ZAotKwlsaWIKLSAKLSBWaWRlb1BsYXllcl9BUkNISVZFUz14Ym1jL2NvcmVzL1ZpZGVvUGxheWVyL1ZpZGVvUGxheWVyLmEgXAotICAgICAgICAgICAgICAgICAgICB4Ym1jL2NvcmVzL1ZpZGVvUGxheWVyL0RWRENvZGVjcy9EVkRDb2RlY3MuYSBcCi1AQCAtMzQ3LDcgKzM0Niw2IEBAIGxpYmFkZG9uOiBleHBvcnRzCi0gCSQoTUFLRSkgLUMgbGliL2FkZG9ucy9saWJyYXJ5LnhibWMucHZyCi0gCSQoTUFLRSkgLUMgbGliL2FkZG9ucy9saWJyYXJ5LmtvZGkuaW5wdXRzdHJlYW0KLSBkdmRwY29kZWNzOiBkbGxsb2FkZXIKLS0JJChNQUtFKSAtQyBsaWIvbGliZHZkCi0gCi0gZHZkcGV4dGNvZGVjczoKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA3LUFsd2F5cy1jb21waWxlLWxpYmNwbHVmZi1hcy1QSUMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwNy1BbHdheXMtY29tcGlsZS1saWJjcGx1ZmYtYXMtUElDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmQ3ZWNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA3LUFsd2F5cy1jb21waWxlLWxpYmNwbHVmZi1hcy1QSUMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGQ5ODljYmRiNzY4NmMzYjk1ZGM3NDk5NjdmODliOTNlNDdmOTU1YTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzIE5vdiAyMDE2IDEzOjEwOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIEFsd2F5cyBjb21waWxlIGxpYmNwbHVmZiBhcyBQSUMKLQotRml4ZXMgZXJyb3JzIGUuZy4KLQotbGQ6IGxpYi9jcGx1ZmYvbGliY3BsdWZmLy5saWJzL2xpYmNwbHVmZi5hKHBjb250cm9sLm8pOiByZWxvY2F0aW9uIFJfWDg2XzY0X1BDMzIgYWdhaW5zdCBzeW1ib2wgYGNwX3N0b3BfcGx1Z2lucycgY2FuIG5vdCBiZSB1c2VkIHdoZW4gbWFraW5nIGEgc2hhcmVkIG9iamVjdDsgcmVjb21waWxlIHdpdGggLWZQSUMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMzEzMmRjMS4uYWI0ZWVhMyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjM4NSw3ICsyMzg1LDcgQEAgWEJfQ09ORklHX01PRFVMRShbbGliL2NwbHVmZl0sIFsKLSAgICAgLS1wcmVmaXg9IiR7cHJlZml4fSIgLS1pbmNsdWRlZGlyPSIke2luY2x1ZGVkaXJ9IiAtLWxpYmRpcj0iJHtsaWJkaXJ9IiAtLWRhdGFkaXI9IiR7ZGF0YWRpcn0iIFwKLSAgICAgLS1ob3N0PSRob3N0X2FsaWFzIFwKLSAgICAgLS1idWlsZD0kYnVpbGRfYWxpYXMgXAotLSAgICAtLXRhcmdldD0kdGFyZ2V0X2FsaWFzIENGTEFHUz0iJENGTEFHUyIgQ0M9IiRDQyIgQ1hYPSIkQ1hYIiBMREZMQUdTPSIkTERGTEFHUyIgTElCUz0iIgotKyAgICAtLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0td2l0aC1waWM9eWVzIENGTEFHUz0iJENGTEFHUyIgQ0M9IiRDQyIgQ1hYPSIkQ1hYIiBMREZMQUdTPSIkTERGTEFHUyIgTElCUz0iIgotICAgICAjTERGTEFHUz0iJExERkxBR1MgLVdsLC1yZWFkX29ubHlfcmVsb2NzLHN1cHByZXNzIgotIF0sIFswXSkKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA4LWtvZGktY29uZmlnLmNtYWtlLXVzZS1DTUFLRV9GSU5EX1JPT1RfUEFUSC10by1maXgtY3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAwOC1rb2RpLWNvbmZpZy5jbWFrZS11c2UtQ01BS0VfRklORF9ST09UX1BBVEgtdG8tZml4LWNyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzkwMTQ0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA4LWtvZGktY29uZmlnLmNtYWtlLXVzZS1DTUFLRV9GSU5EX1JPT1RfUEFUSC10by1maXgtY3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDUxY2Q4ZDVmMDg0MDEzMzYwYjI5ZmU0OTcxOTMyODhlYmRlMmY0ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6IFdlZCwgMjkgSnVsIDIwMTUgMjM6MTM6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMF0ga29kaS1jb25maWcuY21ha2U6IHVzZSBDTUFLRV9GSU5EX1JPT1RfUEFUSCB0byBmaXgKLSBjcm9zcy1jb21waWxhdGlvbgotCi1XaGVuIGNyb3NzLWNvbXBpbGluZywgdGhlIGxvY2F0aW9uIGF0IGJ1aWxkIHRpbWUgb2YgdGhlIGxpYnJhcmllcyBpcwotbm90IHRoZSBzYW1lIGFzIHRoZSBvbmUgYXQgcnVuLXRpbWUuIFRoZSBDTUFLRV9GSU5EX1JPT1RfUEFUSCB2YXJpYWJsZQotaXMgaGVyZSB0byBoYW5kbGUgdGhpcyBkaWZmZXJlbmNlLCBzbyB1c2UgaXQgaW4ga29kaS1jb25maWcuY21ha2UuCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotLS0tCi0gcHJvamVjdC9jbWFrZS9Lb2RpQ29uZmlnLmNtYWtlLmluIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcm9qZWN0L2NtYWtlL0tvZGlDb25maWcuY21ha2UuaW4gYi9wcm9qZWN0L2NtYWtlL0tvZGlDb25maWcuY21ha2UuaW4KLWluZGV4IGMwMmE2ODAuLjlkNmE1NjYgMTAwNjQ0Ci0tLS0gYS9wcm9qZWN0L2NtYWtlL0tvZGlDb25maWcuY21ha2UuaW4KLSsrKyBiL3Byb2plY3QvY21ha2UvS29kaUNvbmZpZy5jbWFrZS5pbgotQEAgLTcsMTAgKzcsMTAgQEAgaWYoTk9UIEBBUFBfTkFNRV9VQ0BfUFJFRklYKQotICAgc2V0KEBBUFBfTkFNRV9VQ0BfUFJFRklYIEBBUFBfUFJFRklYQCkKLSBlbmRpZigpCi0gaWYoTk9UIEBBUFBfTkFNRV9VQ0BfSU5DTFVERV9ESVIpCi0tICBzZXQoQEFQUF9OQU1FX1VDQF9JTkNMVURFX0RJUiBAQVBQX0lOQ0xVREVfRElSQCkKLSsgIHNldChAQVBQX05BTUVfVUNAX0lOQ0xVREVfRElSICR7Q01BS0VfRklORF9ST09UX1BBVEh9L0BBUFBfSU5DTFVERV9ESVJAKQotIGVuZGlmKCkKLSBpZihOT1QgQEFQUF9OQU1FX1VDQF9MSUJfRElSKQotLSAgc2V0KEBBUFBfTkFNRV9VQ0BfTElCX0RJUiBAQVBQX0xJQl9ESVJAKQotKyAgc2V0KEBBUFBfTkFNRV9VQ0BfTElCX0RJUiAke0NNQUtFX0ZJTkRfUk9PVF9QQVRIfS9AQVBQX0xJQl9ESVJAKQotIGVuZGlmKCkKLSBpZihOT1QgQEFQUF9OQU1FX1VDQF9EQVRBX0RJUikKLSAgIHNldChAQVBQX05BTUVfVUNAX0RBVEFfRElSIEBBUFBfREFUQV9ESVJAKQotQEAgLTE5LDYgKzE5LDcgQEAgaWYoTk9UIFdJTjMyKQotICAgc2V0KENNQUtFX0NYWF9GTEFHUyAiJEVOVntDWFhGTEFHU30gQENYWDExX1NXSVRDSEAiKQotIGVuZGlmKCkKLSBsaXN0KEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSCBAQVBQX0xJQl9ESVJAIEBBUFBfREFUQV9ESVJAL2NtYWtlKQotK2xpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfRklORF9ST09UX1BBVEh9L0BBUFBfTElCX0RJUkAgJHtDTUFLRV9GSU5EX1JPT1RfUEFUSH0vQEFQUF9EQVRBX0RJUkAvY21ha2UpCi0gCi0gc3RyaW5nKFJFUExBQ0UgIjsiICIgIiBBUkNIX0RFRklORVMgIkBBUkNIX0RFRklORVNAIikKLSBhZGRfZGVmaW5pdGlvbnMoJHtBUkNIX0RFRklORVN9IC1EQlVJTERfS09ESV9BRERPTikKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDA5LWJ1aWxkLUFkZC1zdXBwb3J0LWZvci1tdXNsLXRyaXBsZXRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDktYnVpbGQtQWRkLXN1cHBvcnQtZm9yLW11c2wtdHJpcGxldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZTczOWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMDktYnVpbGQtQWRkLXN1cHBvcnQtZm9yLW11c2wtdHJpcGxldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotRnJvbSA4YjJiYWQ1ODU4NWFmMGY4MjlmYjA2ZTE5YzliZDJiNmNhZjMwODA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgNiBOb3YgMjAxNiAxMTo1NDo0MSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA5LzEwXSBidWlsZDogQWRkIHN1cHBvcnQgZm9yIG11c2wgdHJpcGxldHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gbTQveGJtY19hcmNoLm00ICAgICAgICAgICAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCi0gdG9vbHMvZGVwZW5kcy9jb25maWd1cmUuYWMgfCAxMiArKysrKystLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhYjRlZWEzLi45MjU0NjZhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01MjYsNyArNTI2LDcgQEAgY2FzZSAkaG9zdCBpbgotICAgICAgdXNlX3gxMT1ubwotICAgICAgYnVpbGRfc2hhcmVkX2xpYj15ZXMKLSAgICAgIDs7Ci0tICBpKjg2Ki1saW51eC1nbnUqfGkqODYqLSotbGludXgtdWNsaWJjKikKLSsgIGkqODYqLWxpbnV4LWdudSp8aSo4NiotKi1saW51eC11Y2xpYmMqfGkqODYqLSotbGludXgtbXVzbCopCi0gICAgICB0YXJnZXRfcGxhdGZvcm09dGFyZ2V0X2xpbnV4Ci0gICAgICBDT1JFX1NZU1RFTV9OQU1FPWxpbnV4Ci0gICAgICBBUkNIPSJpNDg2LWxpbnV4IgotQEAgLTU0OSw3ICs1NDksNyBAQCBjYXNlICRob3N0IGluCi0gICAgICAgIGZpCi0gICAgICBmaQotICAgICAgOzsKLS0gIHg4Nl82NC0qLWxpbnV4LWdudSp8eDg2XzY0LSotbGludXgtdWNsaWJjKikKLSsgIHg4Nl82NC0qLWxpbnV4LWdudSp8eDg2XzY0LSotbGludXgtdWNsaWJjKnx4ODZfNjQtKi1saW51eC1tdXNsKikKLSAgICAgIHRhcmdldF9wbGF0Zm9ybT10YXJnZXRfbGludXgKLSAgICAgIENPUkVfU1lTVEVNX05BTUU9bGludXgKLSAgICAgIEFSQ0g9Ing4Nl82NC1saW51eCIKLUBAIC02MDEsMTcgKzYwMSwxNyBAQCBjYXNlICRob3N0IGluCi0gICAgICBERVBFTkRTX1JPT1RfRk9SX1hDT0RFPSQoZWNobyAke3ByZWZpeCUvKn0pCi0gICAgICBBQ19TVUJTVChbREVQRU5EU19ST09UX0ZPUl9YQ09ERV0pCi0gICAgICA7OwotLSAgcG93ZXJwYy0qLWxpbnV4LWdudSp8cG93ZXJwYy0qLWxpbnV4LXVjbGliYyopCi0rICBwb3dlcnBjLSotbGludXgtZ251Knxwb3dlcnBjLSotbGludXgtdWNsaWJjKnxwb3dlcnBjLSotbGludXgtbXVzbCopCi0gICAgICB0YXJnZXRfcGxhdGZvcm09dGFyZ2V0X2xpbnV4Ci0gICAgICBDT1JFX1NZU1RFTV9OQU1FPWxpbnV4Ci0gICAgICBBUkNIPSJwb3dlcnBjLWxpbnV4IgotICAgICAgOzsKLS0gIHBvd2VycGM2NCotKi1saW51eC1nbnUqfHBvd2VycGM2NCotKi1saW51eC11Y2xpYmMqKQotKyAgcG93ZXJwYzY0Ki0qLWxpbnV4LWdudSp8cG93ZXJwYzY0Ki0qLWxpbnV4LXVjbGliYyp8cG93ZXJwYzY0Ki0qLWxpbnV4LW11c2wqKQotICAgICAgdGFyZ2V0X3BsYXRmb3JtPXRhcmdldF9saW51eAotICAgICAgQ09SRV9TWVNURU1fTkFNRT1saW51eAotICAgICAgQVJDSD0icG93ZXJwYzY0LWxpbnV4IgotICAgICAgOzsKLS0gIGFybSotKi1saW51eC1nbnUqfGFybSotKi1saW51eC11Y2xpYmMqKQotKyAgYXJtKi0qLWxpbnV4LWdudSp8YXJtKi0qLWxpbnV4LXVjbGliYyp8YXJtKi0qLWxpbnV4LW11c2wqKQotICAgICAgdGFyZ2V0X3BsYXRmb3JtPXRhcmdldF9saW51eAotICAgICAgQ09SRV9TWVNURU1fTkFNRT1saW51eAotICAgICAgQVJDSD0iYXJtIgotQEAgLTYyMSw3ICs2MjEsNyBAQCBjYXNlICRob3N0IGluCi0gICAgICB1c2VfZ2w9bm8KLSAgICAgIFVTRV9TVEFUSUNfRkZNUEVHPTEKLSAgICAgIDs7Ci0tICBhYXJjaDY0Ki0qLWxpbnV4LWdudSp8YWFyY2g2NCotKi1saW51eC11Y2xpYmMqKQotKyAgYWFyY2g2NCotKi1saW51eC1nbnUqfGFhcmNoNjQqLSotbGludXgtdWNsaWJjKnxhYXJjaDY0Ki0qLWxpbnV4LW11c2wqKQotICAgICAgdGFyZ2V0X3BsYXRmb3JtPXRhcmdldF9saW51eAotICAgICAgQVJDSD0iYWFyY2g2NCIKLSAgICAgIHVzZV9hcmNoPSJhYXJjaDY0IgotZGlmZiAtLWdpdCBhL200L3hibWNfYXJjaC5tNCBiL200L3hibWNfYXJjaC5tNAotaW5kZXggZDI4ZjI2My4uZmY1ZGMyMCAxMDA2NDQKLS0tLSBhL200L3hibWNfYXJjaC5tNAotKysrIGIvbTQveGJtY19hcmNoLm00Ci1AQCAtMiwxMCArMiwxMCBAQCBBQ19ERUZVTihbWEJNQ19TRVRVUF9BUkNIX0RFRklORVNdLFsKLSAKLSAjIGJ1aWxkIGRldGVjdGlvbiBhbmQgc2V0dXAgLSB0aGlzIGlzIHRoZSBuYXRpdmUgYXJjaAotIGNhc2UgJGJ1aWxkIGluCi0tICBpKjg2Ki1saW51eC1nbnUqfGkqODYqLSotbGludXgtdWNsaWJjKikKLSsgIGkqODYqLWxpbnV4LWdudSp8aSo4NiotKi1saW51eC11Y2xpYmMqfGkqODYqLSotbGludXgtbXVzbCopCi0gICAgICBBQ19TVUJTVChOQVRJVkVfQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVgiKQotICAgICAgOzsKLS0gIHg4Nl82NC0qLWxpbnV4LWdudSp8eDg2XzY0LSotbGludXgtdWNsaWJjKikKLSsgIHg4Nl82NC0qLWxpbnV4LWdudSp8eDg2XzY0LSotbGludXgtdWNsaWJjKnx4ODZfNjQtKi1saW51eC1tdXNsKikKLSAgICAgIEFDX1NVQlNUKE5BVElWRV9BUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCIpCi0gICAgICA7OwotICAgaTM4Ni0qLWZyZWVic2QqKQotQEAgLTE3LDEzICsxNywxMyBAQCBjYXNlICRidWlsZCBpbgotICAgKjg2Ki1hcHBsZS1kYXJ3aW4qKQotICAgICAgQUNfU1VCU1QoTkFUSVZFX0FSQ0hfREVGSU5FUywgIi1EVEFSR0VUX1BPU0lYIC1EVEFSR0VUX0RBUldJTiAtRFRBUkdFVF9EQVJXSU5fT1NYIC1EX0xJTlVYIikKLSAgICAgIDs7Ci0tICBwb3dlcnBjLSotbGludXgtZ251Knxwb3dlcnBjLSotbGludXgtdWNsaWJjKikKLSsgIHBvd2VycGMtKi1saW51eC1nbnUqfHBvd2VycGMtKi1saW51eC11Y2xpYmMqfHBvd2VycGMtKi1saW51eC1tdXNsKikKLSAgICAgIEFDX1NVQlNUKE5BVElWRV9BUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCAtRF9QT1dFUlBDIikKLSAgICAgIDs7Ci0tICBwb3dlcnBjNjQtKi1saW51eC1nbnUqfHBvd2VycGM2NC0qLWxpbnV4LXVjbGliYyopCi0rICBwb3dlcnBjNjQtKi1saW51eC1nbnUqfHBvd2VycGM2NC0qLWxpbnV4LXVjbGliYyp8cG93ZXJwYzY0LSotbGludXgtbXVzbCopCi0gICAgICBBQ19TVUJTVChOQVRJVkVfQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVggLURfUE9XRVJQQzY0IikKLSAgICAgIDs7Ci0tICBhcm0qLSotbGludXgtZ251Knxhcm0qLSotbGludXgtdWNsaWJjKikKLSsgIGFybSotKi1saW51eC1nbnUqfGFybSotKi1saW51eC11Y2xpYmMqfGFybSotKi1saW51eC1tdXNsKikKLSAgICAgIEFDX1NVQlNUKE5BVElWRV9BUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCIpCi0gICAgICA7OwotICAgKikKLUBAIC0zMywxMCArMzMsMTAgQEAgZXNhYwotIAotICMgaG9zdCBkZXRlY3Rpb24gYW5kIHNldHVwIC0gdGhpcyBpcyB0aGUgdGFyZ2V0IGFyY2gKLSBjYXNlICRob3N0IGluCi0tICBpKjg2Ki1saW51eC1nbnUqfGkqODYqLSotbGludXgtdWNsaWJjKikKLSsgIGkqODYqLWxpbnV4LWdudSp8aSo4NiotKi1saW51eC11Y2xpYmMqfGkqODYqLSotbGludXgtbXVzbCopCi0gICAgICBBQ19TVUJTVChBUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCIpCi0gICAgICA7OwotLSAgeDg2XzY0LSotbGludXgtZ251Knx4ODZfNjQtKi1saW51eC11Y2xpYmMqKQotKyAgeDg2XzY0LSotbGludXgtZ251Knx4ODZfNjQtKi1saW51eC11Y2xpYmMqfHg4Nl82NC0qLWxpbnV4LW11c2wqKQotICAgICAgQUNfU1VCU1QoQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVgiKQotICAgICAgOzsKLSAgIGkzODYtKi1mcmVlYnNkKikKLUBAIC01NCwxNiArNTQsMTYgQEAgY2FzZSAkaG9zdCBpbgotICAgcG93ZXJwYy1hcHBsZS1kYXJ3aW4qKQotICAgICAgQUNfU1VCU1QoQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfREFSV0lOIC1EVEFSR0VUX0RBUldJTl9PU1ggLURfTElOVVgiKQotICAgICAgOzsKLS0gIHBvd2VycGMtKi1saW51eC1nbnUqfHBvd2VycGMtKi1saW51eC11Y2xpYmMqKQotKyAgcG93ZXJwYy0qLWxpbnV4LWdudSp8cG93ZXJwYy0qLWxpbnV4LXVjbGliYyp8cG93ZXJwYy0qLWxpbnV4LW11c2wqKQotICAgICAgQUNfU1VCU1QoQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVggLURfUE9XRVJQQyIpCi0gICAgICA7OwotLSAgcG93ZXJwYzY0Ki0qLWxpbnV4LWdudSp8cG93ZXJwYzY0Ki0qLWxpbnV4LXVjbGliYyopCi0rICBwb3dlcnBjNjQqLSotbGludXgtZ251Knxwb3dlcnBjNjQqLSotbGludXgtdWNsaWJjKnxwb3dlcnBjNjQqLSotbGludXgtbXVzbCopCi0gICAgICBBQ19TVUJTVChBUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCAtRF9QT1dFUlBDNjQiKQotICAgICAgOzsKLS0gIGFybSotKi1saW51eC1nbnUqfGFybSotKi1saW51eC11Y2xpYmMqfGFhcmNoNjQqLSotbGludXgtZ251KnxhYXJjaDY0Ki0qLWxpbnV4LXVjbGliYyopCi0rICBhcm0qLSotbGludXgtZ251Knxhcm0qLSotbGludXgtdWNsaWJjKnxhcm0qLSotbGludXgtbXVzbCp8YWFyY2g2NCotKi1saW51eC1nbnUqfGFhcmNoNjQqLSotbGludXgtdWNsaWJjKnxhYXJjaDY0Ki0qLWxpbnV4LW11c2wqKQotICAgICAgQUNfU1VCU1QoQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVgiKQotICAgICAgOzsKLS0gIG1pcHMqLSotbGludXgtZ251KnxtaXBzKi0qLWxpbnV4LXVjbGliYyopCi0rICBtaXBzKi0qLWxpbnV4LWdudSp8bWlwcyotKi1saW51eC11Y2xpYmMqfG1pcHMqLSotbGludXgtbXVzbCopCi0gICAgICBBQ19TVUJTVChBUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCIpCi0gICAgICA7OwotICAgKi0qbGludXgtYW5kcm9pZCopCi1kaWZmIC0tZ2l0IGEvdG9vbHMvZGVwZW5kcy9jb25maWd1cmUuYWMgYi90b29scy9kZXBlbmRzL2NvbmZpZ3VyZS5hYwotaW5kZXggZjQzOGU1ZC4uNDA5ZjRkNyAxMDA2NDQKLS0tLSBhL3Rvb2xzL2RlcGVuZHMvY29uZmlndXJlLmFjCi0rKysgYi90b29scy9kZXBlbmRzL2NvbmZpZ3VyZS5hYwotQEAgLTEyMCwxMyArMTIwLDEzIEBAIHBsYXRmb3JtX2NjPWdjYwotIHBsYXRmb3JtX2N4eD1nKysKLSAKLSBjYXNlICRidWlsZCBpbgotLSAgYXJtKi0qLWxpbnV4LWdudSp8YXJtKi0qLWxpbnV4LXVjbGliYyopCi0rICBhcm0qLSotbGludXgtZ251Knxhcm0qLSotbGludXgtdWNsaWJjKnxhcm0qLSotbGludXgtbXVzbCopCi0gICAgIGJ1aWxkX29zPSJsaW51eCIKLSAgIDs7Ci0tICAqaTY4NiotbGludXgtZ251KnxpKjg2Ki0qLWxpbnV4LXVjbGliYyopCi0rICAqaTY4NiotbGludXgtZ251KnxpKjg2Ki0qLWxpbnV4LXVjbGliYyp8aSo4NiotKi1saW51eC1tdXNsKikKLSAgICAgYnVpbGRfb3M9ImxpbnV4IgotICAgOzsKLS0gIHg4Nl82NCotbGludXgtZ251Knx4ODZfNjQtKi1saW51eC11Y2xpYmMqKQotKyAgeDg2XzY0Ki1saW51eC1nbnUqfHg4Nl82NC0qLWxpbnV4LXVjbGliYyp8eDg2XzY0LSotbGludXgtbXVzbCopCi0gICAgIGJ1aWxkX29zPSJsaW51eCIKLSAgIDs7Ci0gICAqZGFyd2luKikKLUBAIC0xODYsNyArMTg2LDcgQEAgY2FzZSAkaG9zdCBpbgotICAgICAjYW5kcm9pZCBidWlsZHMgYXJlIGFsd2F5cyBjcm9zcwotICAgICBjcm9zc19jb21waWxpbmc9InllcyIKLSAgIDs7Ci0tICBhcm0qLSotbGludXgtZ251Knxhcm0qLSotbGludXgtdWNsaWJjKikKLSsgIGFybSotKi1saW51eC1nbnUqfGFybSotKi1saW51eC11Y2xpYmMqfGFybSotKi1saW51eC1tdXNsKikKLSAgICAgaWYgdGVzdCAiJHVzZV9wbGF0Zm9ybSIgPSAiYXV0byI7IHRoZW4KLSAgICAgICBpZiB0ZXN0ICJ4JHVzZV9jcHUiID0gInhhdXRvIjsgdGhlbgotICAgICAgICAgdXNlX2NwdT0kaG9zdF9jcHUKLUBAIC0yMTAsMTIgKzIxMCwxMiBAQCBjYXNlICRob3N0IGluCi0gICAgICAgcGxhdGZvcm1fb3M9ImxpbnV4IgotICAgICBmaQotICAgOzsKLS0gICppNjg2Ki1saW51eC1nbnUqfGkqODYqLSotbGludXgtdWNsaWJjKikKLSsgICppNjg2Ki1saW51eC1nbnUqfGkqODYqLSotbGludXgtdWNsaWJjKnxpKjg2Ki0qLWxpbnV4LW11c2wqKQotICAgICB1c2VfY3B1PSRob3N0X2NwdQotICAgICB1c2VfdG9vbGNoYWluPSIke3VzZV90b29sY2hhaW46LS91c3J9IgotICAgICBwbGF0Zm9ybV9vcz0ibGludXgiCi0gICA7OwotLSAgeDg2XzY0Ki1saW51eC1nbnUqfHg4Nl82NC0qLWxpbnV4LXVjbGliYyopCi0rICB4ODZfNjQqLWxpbnV4LWdudSp8eDg2XzY0LSotbGludXgtdWNsaWJjKnx4ODZfNjQtKi1saW51eC1tdXNsKikKLSAgICAgdXNlX2NwdT0kaG9zdF9jcHUKLSAgICAgdXNlX3Rvb2xjaGFpbj0iJHt1c2VfdG9vbGNoYWluOi0vdXNyfSIKLSAgICAgcGxhdGZvcm1fY2ZsYWdzPSItZlBJQyAtRFBJQyIKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDEwLVJzc1JlYWRlci1GaXgtY29tcGlsZXItd2FybmluZy1jb21wYXJpbmctcG9pbnRlci10by0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAxMC1Sc3NSZWFkZXItRml4LWNvbXBpbGVyLXdhcm5pbmctY29tcGFyaW5nLXBvaW50ZXItdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzRhNWI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDEwLVJzc1JlYWRlci1GaXgtY29tcGlsZXItd2FybmluZy1jb21wYXJpbmctcG9pbnRlci10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDU1MjMzMDI0NjQ4YjU2NzNkYmYyMjM1ODY5NjhlNzFjYzRjNzA3MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNiBOb3YgMjAxNiAxODo0OTozNiAtMDgwMAotU3ViamVjdDogW1BBVENIIDEwLzEwXSBSc3NSZWFkZXI6IEZpeCBjb21waWxlciB3YXJuaW5nIGNvbXBhcmluZyBwb2ludGVyIHRvCi0gemVybwotCi1DbGFuZyBmaW5kcyB0aGlzIHdhcm5pbmcKLVJzc1JlYWRlci5jcHA6MjcyOjE5OiBlcnJvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyAoJ1RpWG1sRWxlbWVudCAqJyBhbmQgJ2ludCcpCi0gIHdoaWxlIChpdGVtTm9kZSA+IDApCi0gICAgICAgICB+fn5+fn5+fiBeIH4KLVJzc1JlYWRlci5jcHA6Mjc2OjIyOiBlcnJvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyAoJ1RpWG1sTm9kZSAqJyBhbmQgJ2ludCcpCi0gICAgd2hpbGUgKGNoaWxkTm9kZSA+IDApCi0gICAgICAgICAgIH5+fn5+fn5+fiBeIH4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHhibWMvdXRpbHMvUnNzUmVhZGVyLmNwcCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Ym1jL3V0aWxzL1Jzc1JlYWRlci5jcHAgYi94Ym1jL3V0aWxzL1Jzc1JlYWRlci5jcHAKLWluZGV4IDkxODZmNTYuLjI0OTRkYzggMTAwNjQ0Ci0tLS0gYS94Ym1jL3V0aWxzL1Jzc1JlYWRlci5jcHAKLSsrKyBiL3hibWMvdXRpbHMvUnNzUmVhZGVyLmNwcAotQEAgLTI2OSwxMSArMjY5LDExIEBAIHZvaWQgQ1Jzc1JlYWRlcjo6R2V0TmV3c0l0ZW1zKFRpWG1sRWxlbWVudCogY2hhbm5lbFhtbE5vZGUsIGludCBpRmVlZCkKLSAgIGlmIChtX3RhZ1NldC5lbXB0eSgpKQotICAgICBBZGRUYWcoInRpdGxlIik7Ci0gCi0tICB3aGlsZSAoaXRlbU5vZGUgPiAwKQotKyAgd2hpbGUgKGl0ZW1Ob2RlICE9IE5VTEwpCi0gICB7Ci0gICAgIFRpWG1sTm9kZSogY2hpbGROb2RlID0gaXRlbU5vZGUtPkZpcnN0Q2hpbGQoKTsKLSAgICAgbVRhZ0VsZW1lbnRzLmNsZWFyKCk7Ci0tICAgIHdoaWxlIChjaGlsZE5vZGUgPiAwKQotKyAgICB3aGlsZSAoY2hpbGROb2RlICE9IE5VTEwpCi0gICAgIHsKLSAgICAgICBzdGQ6OnN0cmluZyBzdHJOYW1lID0gY2hpbGROb2RlLT5WYWx1ZVN0cigpOwotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMTEtTGV0LWNvbmZpZ3VyZS1wYXNzLW9uLXVua25vd24tYXJjaGl0ZWN0dXJlcy1zZXR0aW5nLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDExLUxldC1jb25maWd1cmUtcGFzcy1vbi11bmtub3duLWFyY2hpdGVjdHVyZXMtc2V0dGluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZTQ0ZjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMTEtTGV0LWNvbmZpZ3VyZS1wYXNzLW9uLXVua25vd24tYXJjaGl0ZWN0dXJlcy1zZXR0aW5nLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gMTlhMWZmYzE0NTBiZDNlY2ZiNzQxOWQ3NGM3MzNiMmUxNmJmNDdmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhbGludCBSZWN6ZXkgPGJhbGludEBiYWxpbnRyZWN6ZXkuaHU+Ci1EYXRlOiBXZWQsIDI2IEF1ZyAyMDE1IDA4OjE0OjQxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTJdIExldCBjb25maWd1cmUgcGFzcyBvbiB1bmtub3duIGFyY2hpdGVjdHVyZXMgc2V0dGluZwotIHNhbmUgZGVmYXVsdHMKLQotVGhpcyBoZWxwcyBwb3J0aW5nIEtvZGkgdG8gbmV3IGFyY2hpdGVjdHVyZXMgd2hpbGUgZW1pdHRpbmcgd2FybmluZ3MgYWJvdXQKLWVudGVyaW5nIHVuY2hhcnRlZCB0ZXJyaXRvcnkuCi0tLS0KLSBjb25maWd1cmUuYWMgICAgfCAzICsrLQotIG00L3hibWNfYXJjaC5tNCB8IDYgKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkyNTQ2NmEuLjgzNjk2MTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY1OCw3ICs2NTgsOCBAQCBjYXNlICRob3N0IGluCi0gICAgICBVU0VfU1RBVElDX0ZGTVBFRz0xCi0gICAgICA7OwotICAgKikKLS0gICAgIEFDX01TR19FUlJPUih1bnN1cHBvcnRlZCBob3N0ICgkaG9zdCkpCi0rICAgIEFSQ0g9JGhvc3RfY3B1Ii0iJGhvc3Rfb3MKLSsgICAgQUNfTVNHX1dBUk4oW3Vuc3VwcG9ydGVkIGhvc3QgKCRob3N0KSwgZ3Vlc3NpbmcgQVJDSCBhcyAkQVJDSC5dKQotIGVzYWMKLSBBQ19TVUJTVChbQVJDSF0pCi0gCi1kaWZmIC0tZ2l0IGEvbTQveGJtY19hcmNoLm00IGIvbTQveGJtY19hcmNoLm00Ci1pbmRleCBmZjVkYzIwLi5kZmI0NWZkIDEwMDY0NAotLS0tIGEvbTQveGJtY19hcmNoLm00Ci0rKysgYi9tNC94Ym1jX2FyY2gubTQKLUBAIC0yNyw3ICsyNyw4IEBAIGNhc2UgJGJ1aWxkIGluCi0gICAgICBBQ19TVUJTVChOQVRJVkVfQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVgiKQotICAgICAgOzsKLSAgICopCi0tICAgICBBQ19NU0dfRVJST1IodW5zdXBwb3J0ZWQgbmF0aXZlIGJ1aWxkIHBsYXRmb3JtOiAkYnVpbGQpCi0rICAgICBBQ19NU0dfV0FSTihbdW5zdXBwb3J0ZWQgbmF0aXZlIGJ1aWxkIHBsYXRmb3JtOiAkYnVpbGRdKQotKyAgICAgQUNfU1VCU1QoTkFUSVZFX0FSQ0hfREVGSU5FUywgIi1EVEFSR0VUX1BPU0lYIC1EVEFSR0VUX0xJTlVYIC1EX0xJTlVYIikKLSBlc2FjCi0gCi0gCi1AQCAtNzAsNyArNzEsOCBAQCBjYXNlICRob3N0IGluCi0gICAgICBBQ19TVUJTVChBUkNIX0RFRklORVMsICItRFRBUkdFVF9QT1NJWCAtRFRBUkdFVF9MSU5VWCAtRF9MSU5VWCAtRFRBUkdFVF9BTkRST0lEIikKLSAgICAgIDs7Ci0gICAqKQotLSAgICAgQUNfTVNHX0VSUk9SKHVuc3VwcG9ydGVkIGJ1aWxkIHRhcmdldDogJGhvc3QpCi0rICAgICBBQ19NU0dfV0FSTihbdW5zdXBwb3J0ZWQgbmF0aXZlIGJ1aWxkIHBsYXRmb3JtOiAkYnVpbGRdKQotKyAgICAgQUNfU1VCU1QoQVJDSF9ERUZJTkVTLCAiLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLURfTElOVVgiKQotIGVzYWMKLSAKLSBpZiB0ZXN0ICIkdGFyZ2V0X3BsYXRmb3JtIiA9ICJ0YXJnZXRfYW5kcm9pZCIgOyB0aGVuCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktMTcvMDAxMi1SZXZlcnQtZHJvaWQtZml4LWJ1aWxkcy13aXRoLUFNTC1kaXNhYmxlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDEyLVJldmVydC1kcm9pZC1maXgtYnVpbGRzLXdpdGgtQU1MLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDcwYjNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDEyLVJldmVydC1kcm9pZC1maXgtYnVpbGRzLXdpdGgtQU1MLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA5ZTg4YWEwODYwODNiODBjMDViMmJmMDU3YjkyNjgyMTg2YzRlNmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmFsaW50IFJlY3pleSA8YmFsaW50QGJhbGludHJlY3pleS5odT4KLURhdGU6IFRodSwgNiBPY3QgMjAxNiAxODoxMjoxOCArMDIwMAotU3ViamVjdDogW1BBVENIIDEyLzEyXSBSZXZlcnQgIltkcm9pZF0gZml4IGJ1aWxkcyB3aXRoIEFNTCBkaXNhYmxlZCIKLQotVGhpcyByZXZlcnRzIGNvbW1pdCA0NzMzMzgzYjhmMWMxZGQwYjk1ZTllNTM1ODQyNWQ4YTBiN2JhOGZjLgotLS0tCi0geGJtYy91dGlscy9TeXN0ZW1JbmZvLmNwcCAgICAgICAgIHwgIDQgLS0tLQotIHhibWMvd2luZG93aW5nL2VnbC9FR0xXcmFwcGVyLmNwcCB8IDE2ICsrKysrKy0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS94Ym1jL3V0aWxzL1N5c3RlbUluZm8uY3BwIGIveGJtYy91dGlscy9TeXN0ZW1JbmZvLmNwcAotaW5kZXggZmNjNjczMy4uNTJlN2ZhMyAxMDA2NDQKLS0tLSBhL3hibWMvdXRpbHMvU3lzdGVtSW5mby5jcHAKLSsrKyBiL3hibWMvdXRpbHMvU3lzdGVtSW5mby5jcHAKLUBAIC01NywxMCArNTcsOCBAQAotICNpbmNsdWRlICJ1dGlscy9YTUxVdGlscy5oIgotICNpZiBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotICNpbmNsdWRlICJwbGF0Zm9ybS9hbmRyb2lkL2puaS9CdWlsZC5oIgotLSNpZiBkZWZpbmVkKEhBU19MSUJBTUNPREVDKQotICNpbmNsdWRlICJ1dGlscy9BTUxVdGlscy5oIgotICNlbmRpZgotLSNlbmRpZgotIAotIC8qIFBsYXRmb3JtIGlkZW50aWZpY2F0aW9uICovCi0gI2lmIGRlZmluZWQoVEFSR0VUX0RBUldJTikKLUBAIC04NzMsMTEgKzg3MSw5IEBAIGJvb2wgQ1N5c0luZm86OklzQWVyb0Rpc2FibGVkKCkKLSBib29sIENTeXNJbmZvOjpIYXNIVzNESW50ZXJsYWNlZCgpCi0gewotICNpZiBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotLSNpZiBkZWZpbmVkKEhBU19MSUJBTUNPREVDKQotICAgaWYgKGFtbF9odzNkX3ByZXNlbnQoKSkKLSAgICAgcmV0dXJuIHRydWU7Ci0gI2VuZGlmCi0tI2VuZGlmCi0gICByZXR1cm4gZmFsc2U7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3hibWMvd2luZG93aW5nL2VnbC9FR0xXcmFwcGVyLmNwcCBiL3hibWMvd2luZG93aW5nL2VnbC9FR0xXcmFwcGVyLmNwcAotaW5kZXggMzBmNTc1Ny4uNTgzZDQzYSAxMDA2NDQKLS0tLSBhL3hibWMvd2luZG93aW5nL2VnbC9FR0xXcmFwcGVyLmNwcAotKysrIGIveGJtYy93aW5kb3dpbmcvZWdsL0VHTFdyYXBwZXIuY3BwCi1AQCAtMjQsMTkgKzI0LDE1IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpZiBkZWZpbmVkKFRBUkdFVF9BTkRST0lEKQotICAgI2luY2x1ZGUgIkVHTE5hdGl2ZVR5cGVBbmRyb2lkLmgiCi0tI2lmIGRlZmluZWQoSEFTX0xJQkFNQ09ERUMpCi0gICAjaW5jbHVkZSAiRUdMTmF0aXZlVHlwZUFtbEFuZHJvaWQuaCIKLSAjZW5kaWYKLS0jZW5kaWYKLSAjaWYgZGVmaW5lZChUQVJHRVRfUkFTUEJFUlJZX1BJKQotICAgI2luY2x1ZGUgIkVHTE5hdGl2ZVR5cGVSYXNwYmVycnlQSS5oIgotICNlbmRpZgotICNpZiBkZWZpbmVkKEhBU19JTVhWUFUpCi0gICAjaW5jbHVkZSAiRUdMTmF0aXZlVHlwZUlNWC5oIgotICNlbmRpZgotLSNpZiBkZWZpbmVkKFRBUkdFVF9MSU5VWCkgJiYgZGVmaW5lZChIQVNfTElCQU1DT0RFQykKLSAjaW5jbHVkZSAiRUdMTmF0aXZlVHlwZUFtbG9naWMuaCIKLS0jZW5kaWYKLSAjaW5jbHVkZSAiRUdMV3JhcHBlci5oIgotIAotICNkZWZpbmUgQ2hlY2tFcnJvcigpIG1fcmVzdWx0ID0gZWdsR2V0RXJyb3IoKTsgaWYobV9yZXN1bHQgIT0gRUdMX1NVQ0NFU1MpIENMb2c6OkxvZyhMT0dFUlJPUiwgIkVHTCBlcnJvciBpbiAlczogJXgiLF9fRlVOQ1RJT05fXywgbV9yZXN1bHQpOwotQEAgLTkxLDE1ICs4NywxNSBAQCBib29sIENFR0xXcmFwcGVyOjpJbml0aWFsaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZpbXBsZW1lbnRhdGlvbikKLSAgIC8vIFRyeSB0byBjcmVhdGUgZWFjaCBiYWNrZW5kIGluIHNlcXVlbmNlIGFuZCBnbyB3aXRoIHRoZSBmaXJzdCBvbmUKLSAgIC8vIHRoYXQgd2Uga25vdyB3aWxsIHdvcmsKLSAgIGlmICgKLS0jaWYgZGVmaW5lZChUQVJHRVRfQU5EUk9JRCkgJiYgZGVmaW5lZChIQVNfTElCQU1DT0RFQykKLS0gICAgICAobmF0aXZlR3Vlc3MgPSBDcmVhdGVFR0xOYXRpdmVUeXBlPENFR0xOYXRpdmVUeXBlQW1sQW5kcm9pZD4oaW1wbGVtZW50YXRpb24pKQotLSNlbGlmIGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0tICAgICAgKG5hdGl2ZUd1ZXNzID0gQ3JlYXRlRUdMTmF0aXZlVHlwZTxDRUdMTmF0aXZlVHlwZUFuZHJvaWQ+KGltcGxlbWVudGF0aW9uKSkKLS0jZWxpZiBkZWZpbmVkKFRBUkdFVF9SQVNQQkVSUllfUEkpCi0rI2lmIGRlZmluZWQoVEFSR0VUX0FORFJPSUQpCi0rICAgICAgKG5hdGl2ZUd1ZXNzID0gQ3JlYXRlRUdMTmF0aXZlVHlwZTxDRUdMTmF0aXZlVHlwZUFtbEFuZHJvaWQ+KGltcGxlbWVudGF0aW9uKSkgfHwKLSsgICAgICAobmF0aXZlR3Vlc3MgPSBDcmVhdGVFR0xOYXRpdmVUeXBlPENFR0xOYXRpdmVUeXBlQW5kcm9pZD4oaW1wbGVtZW50YXRpb24pKSB8fAotKyNlbmRpZgotKyNpZiBkZWZpbmVkKFRBUkdFVF9SQVNQQkVSUllfUEkpCi0gICAgICAgKG5hdGl2ZUd1ZXNzID0gQ3JlYXRlRUdMTmF0aXZlVHlwZTxDRUdMTmF0aXZlVHlwZVJhc3BiZXJyeVBJPihpbXBsZW1lbnRhdGlvbikpCi0gI2VsaWYgZGVmaW5lZChIQVNfSU1YVlBVKQotICAgICAgIChuYXRpdmVHdWVzcyA9IENyZWF0ZUVHTE5hdGl2ZVR5cGU8Q0VHTE5hdGl2ZVR5cGVJTVg+KGltcGxlbWVudGF0aW9uKSkKLS0jZWxpZiBkZWZpbmVkKFRBUkdFVF9MSU5VWCkgJiYgZGVmaW5lZChIQVNfTElCQU1DT0RFQykKLSsjZWxzZQotICAgICAgIChuYXRpdmVHdWVzcyA9IENyZWF0ZUVHTE5hdGl2ZVR5cGU8Q0VHTE5hdGl2ZVR5cGVBbWxvZ2ljPihpbXBsZW1lbnRhdGlvbikpCi0gI2VuZGlmCi0gICAgICAgKQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMTMtRlRQUGFyc2UuY3BwLXVzZS1zdGQtc3RyaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbWVkaWFjZW50ZXIva29kaS9rb2RpLTE3LzAwMTMtRlRQUGFyc2UuY3BwLXVzZS1zdGQtc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWM5MDY2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS0xNy8wMDEzLUZUUFBhcnNlLmNwcC11c2Utc3RkLXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gNWZhMTBmZjZiMWI2MGFiZWUxNzIyOTZkOWMxZGVjOGRmYzEwNjE1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN0ZWZhbiBTYXJhZXYgPHN0ZWZhbkBzYXJhZXYuY2E+Ci1EYXRlOiBTdW4sIDcgTWF5IDIwMTcgMTc6MzA6NDcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRlRQUGFyc2UuY3BwOiB1c2Ugc3RkOjpzdHJpbmcKLQotRml4ZXMgYnVpbGQgd2l0aCBuZXdlciBnY2MgdmVyc2lvbnMuCi0KLVRha2VuIGZyb20gWzFdCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzJdCi0KLVsxXSBodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idWlsZHJvb3QvcGxhaW4vcGFja2FnZS9rb2RpLzAwMDMtRlRQUGFyc2UuY3BwLXVzZS1zdGQtc3RyaW5nLnBhdGNoP2lkPWUyZjAzYTZiZGUxOTc2NmExYWMwNDdjNWNjZmIwNDliNWM0ZjYxY2EKLVsyXSBodHRwczovL2dpdGh1Yi5jb20veGJtYy94Ym1jL2NvbW1pdC81ZmExMGZmNmIxYjYwYWJlZTE3MjI5NmQ5YzFkZWM4ZGZjMTA2MTVjCi0KLVNpZ25lZC1vZmYtYnk6IEJlcm5kIEt1aGxzIDxiZXJuZC5rdWhsc0B0LW9ubGluZS5kZT4KLS0tLQotIHhibWMvZmlsZXN5c3RlbS9GVFBQYXJzZS5jcHAgfCA0NCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3hibWMvZmlsZXN5c3RlbS9GVFBQYXJzZS5jcHAgYi94Ym1jL2ZpbGVzeXN0ZW0vRlRQUGFyc2UuY3BwCi1pbmRleCBjZmNjN2M2NGVkLi5iMGY2NzZhZTFhIDEwMDY0NAotLS0tIGEveGJtYy9maWxlc3lzdGVtL0ZUUFBhcnNlLmNwcAotKysrIGIveGJtYy9maWxlc3lzdGVtL0ZUUFBhcnNlLmNwcAotQEAgLTM0LDcgKzM0LDcgQEAgQ0ZUUFBhcnNlOjpDRlRQUGFyc2UoKQotICAgbV90aW1lID0gMDsKLSB9Ci0gCi0tc3RyaW5nIENGVFBQYXJzZTo6Z2V0TmFtZSgpCi0rc3RkOjpzdHJpbmcgQ0ZUUFBhcnNlOjpnZXROYW1lKCkKLSB7Ci0gICByZXR1cm4gbV9uYW1lOwotIH0KLUBAIC01OSwxNiArNTksMTYgQEAgdGltZV90IENGVFBQYXJzZTo6Z2V0VGltZSgpCi0gICByZXR1cm4gbV90aW1lOwotIH0KLSAKLS12b2lkIENGVFBQYXJzZTo6c2V0VGltZShzdHJpbmcgc3RyKQotK3ZvaWQgQ0ZUUFBhcnNlOjpzZXRUaW1lKHN0ZDo6c3RyaW5nIHN0cikKLSB7Ci0gICAvKiBWYXJpYWJsZXMgdXNlZCB0byBjYXB0dXJlIHBhdHRlcm5zIHZpYSB0aGUgcmVnZXhlcyAqLwotLSAgc3RyaW5nIG1vbnRoOwotLSAgc3RyaW5nIGRheTsKLS0gIHN0cmluZyB5ZWFyOwotLSAgc3RyaW5nIGhvdXI7Ci0tICBzdHJpbmcgbWludXRlOwotLSAgc3RyaW5nIHNlY29uZDsKLS0gIHN0cmluZyBhbV9vcl9wbTsKLSsgIHN0ZDo6c3RyaW5nIG1vbnRoOwotKyAgc3RkOjpzdHJpbmcgZGF5OwotKyAgc3RkOjpzdHJpbmcgeWVhcjsKLSsgIHN0ZDo6c3RyaW5nIGhvdXI7Ci0rICBzdGQ6OnN0cmluZyBtaW51dGU7Ci0rICBzdGQ6OnN0cmluZyBzZWNvbmQ7Ci0rICBzdGQ6OnN0cmluZyBhbV9vcl9wbTsKLSAKLSAgIC8qIHRpbWUgc3RydWN0IHVzZWQgdG8gc2V0IHRoZSB0aW1lX3QgdmFyaWFibGUgKi8KLSAgIHN0cnVjdCB0bSB0aW1lX3N0cnVjdCA9IHt9OwotQEAgLTMzOCwyMSArMzM4LDIxIEBAIGludCBDRlRQUGFyc2U6OmdldERheU9mV2VlayhpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgeWVhcikKLSAgIHJldHVybiBkYXlfb2Zfd2VlazsKLSB9Ci0gCi0taW50IENGVFBQYXJzZTo6RlRQUGFyc2Uoc3RyaW5nIHN0cikKLStpbnQgQ0ZUUFBhcnNlOjpGVFBQYXJzZShzdGQ6OnN0cmluZyBzdHIpCi0gewotICAgLyogVmFyaW91cyB2YXJpYWJsZSB0byBjYXB0dXJlIHBhdHRlcm5zIHZpYSB0aGUgcmVnZXhlcyAqLwotLSAgc3RyaW5nIHBlcm1pc3Npb25zOwotLSAgc3RyaW5nIGxpbmtfY291bnQ7Ci0tICBzdHJpbmcgb3duZXI7Ci0tICBzdHJpbmcgZ3JvdXA7Ci0tICBzdHJpbmcgc2l6ZTsKLS0gIHN0cmluZyBkYXRlOwotLSAgc3RyaW5nIG5hbWU7Ci0tICBzdHJpbmcgdHlwZTsKLS0gIHN0cmluZyBzdHVmZjsKLS0gIHN0cmluZyBmYWN0czsKLS0gIHN0cmluZyB2ZXJzaW9uOwotLSAgc3RyaW5nIGZpbGVfaWQ7Ci0rICBzdGQ6OnN0cmluZyBwZXJtaXNzaW9uczsKLSsgIHN0ZDo6c3RyaW5nIGxpbmtfY291bnQ7Ci0rICBzdGQ6OnN0cmluZyBvd25lcjsKLSsgIHN0ZDo6c3RyaW5nIGdyb3VwOwotKyAgc3RkOjpzdHJpbmcgc2l6ZTsKLSsgIHN0ZDo6c3RyaW5nIGRhdGU7Ci0rICBzdGQ6OnN0cmluZyBuYW1lOwotKyAgc3RkOjpzdHJpbmcgdHlwZTsKLSsgIHN0ZDo6c3RyaW5nIHN0dWZmOwotKyAgc3RkOjpzdHJpbmcgZmFjdHM7Ci0rICBzdGQ6OnN0cmluZyB2ZXJzaW9uOwotKyAgc3RkOjpzdHJpbmcgZmlsZV9pZDsKLSAKLSAgIC8qIFJlZ2V4IGZvciBzdGFuZGFyZCBVbml4IGxpc3RpbmcgZm9ybWF0cyAqLwotICAgcGNyZWNwcDo6UkUgdW5peF9yZSgiXihbLWJjZGxwc10pIiAvLyB0eXBlCi0tLSAKLTIuMTEuMAotCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1zdGFydHVwL2tvZGkuc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaS1zdGFydHVwL2tvZGkuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlkMDM5NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGktc3RhcnR1cC9rb2RpLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPUtvZGkgbWVkaWEgdGhpbmcKLQotW1NlcnZpY2VdCi1Vc2VyPXJvb3QKLVR5cGU9c2ltcGxlCi1TdWNjZXNzRXhpdFN0YXR1cz0wIDEKLUlPU2NoZWR1bGluZ0NsYXNzPXJlYWx0aW1lCi1JT1NjaGVkdWxpbmdQcmlvcml0eT0wCi0KLUV4ZWNTdGFydD0vdXNyL2Jpbi94aW5pdCAvdXNyL2Jpbi9rb2RpLXN0YW5kYWxvbmUgLS0gL3Vzci9iaW4vWCA6MCAKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1iYXNpYy50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaV8xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW1lZGlhY2VudGVyL2tvZGkva29kaV8xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1NjE4OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tZWRpYWNlbnRlci9rb2RpL2tvZGlfMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJLb2RpIE1lZGlhIENlbnRlciIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMO21kNT05MzBlMmE1ZjYzNDI1ZDhkZDcyZGJkNzM5MWM0M2M0NiIKLQotRklMRVNQQVRIID0uICIke0ZJTEVfRElSTkFNRX0va29kaS0xNzoiCi0KLURFUEVORFMgPSAiIFwKLSAgICBjbWFrZS1uYXRpdmUgXAotICAgIGN1cmwtbmF0aXZlIFwKLSAgICBncGVyZi1uYXRpdmUgXAotICAgIGpzb25zY2hlbWFidWlsZGVyLW5hdGl2ZSBcCi0gICAgbmFzbS1uYXRpdmUgXAotICAgIHN3aWctbmF0aXZlIFwKLSAgICB1bnppcC1uYXRpdmUgXAotICAgIHlhc20tbmF0aXZlIFwKLSAgICB6aXAtbmF0aXZlIFwKLSAgICBhdmFoaSBcCi0gICAgYm9vc3QgXAotICAgIGJ6aXAyIFwKLSAgICBjcm9zc2d1aWQgXAotICAgIGN1cmwgXAotICAgIGRjYWRlYyBcCi0gICAgZW5jYSBcCi0gICAgZXhwYXQgXAotICAgIGZhYWQyIFwKLSAgICBmZm1wZWcgXAotICAgIGZvbnRjb25maWcgXAotICAgIGZyaWJpZGkgXAotICAgIGdpZmxpYiBcCi0gICAgamFzcGVyIFwKLSAgICBsaWJhc3MgXAotICAgIGxpYmNkaW8gXAotICAgIGxpYmNlYyBcCi0gICAgbGlibWFkIFwKLSAgICBsaWJtaWNyb2h0dHBkIFwKLSAgICBsaWJtbXMgXAotICAgIGxpYm1tcyBcCi0gICAgbGlibW9kcGx1ZyBcCi0gICAgbGlicGNyZSBcCi0gICAgbGlicGxpc3QgXAotICAgIGxpYnNhbXBsZXJhdGUwIFwKLSAgICBsaWJzZGwtaW1hZ2UgXAotICAgIGxpYnNkbC1taXhlciBcCi0gICAgbGlic3F1aXNoIFwKLSAgICBsaWJzc2ggXAotICAgIGxpYnRpbnl4bWwgXAotICAgIGxpYnVzYjEgXAotICAgIGxpYnhzbHQgXAotICAgIGx6byBcCi0gICAgbXBlZzJkZWMgXAotICAgIHB5dGhvbiBcCi0gICAgc3FsaXRlMyBcCi0gICAgdGFnbGliIFwKLSAgICB2aXJ0dWFsL2VnbCBcCi0gICAgdmlydHVhbC9saWJzZGwgXAotICAgIHdhdnBhY2sgXAotICAgIHlhamwgXAotICAgIHpsaWIgXAotICAgICR7QGVuYWJsZV9nbGV3KGJiLCBkKX0gXAotIgotCi1QUk9WSURFUyA9ICJ4Ym1jIgotCi1TUkNSRVYgPSAiNmFiZWViZDViYTM3MTU0N2M4ZjA0MjcyMjk2NDMzZjVlNGUyOGU4NiIKLVBWID0gIjE3LjMrZ2l0ciR7U1JDUFZ9IgotQURET05TUFYgPSAiMTcuMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS94Ym1jL3hibWMuZ2l0O2JyYW5jaD1LcnlwdG9uIFwKLSAgICBodHRwczovL3JlcG8udm9pZGxpbnV4LmV1L2Rpc3RmaWxlcy8ke0JQTn0tJHtBRERPTlNQVn0tZ2VuZXJhdGVkLWFkZG9ucy50YXIueHo7bmFtZT1hZGRvbnM7dW5wYWNrPTAgXAotICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS1kb24tdC10cnktdG8tcnVuLXN0dWZmLXRvLWZpbmQtdGlueXhtbC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtaGFuZGxlLVNJR1RFUk0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LWFkZC1zdXBwb3J0LXRvLXJlYWQtZnJlcXVlbmN5LW91dHB1dC1pZi11c2luZy1pbnRlbC0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA2LURpc2FibGUtRFZELXN1cHBvcnQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA3LUFsd2F5cy1jb21waWxlLWxpYmNwbHVmZi1hcy1QSUMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA4LWtvZGktY29uZmlnLmNtYWtlLXVzZS1DTUFLRV9GSU5EX1JPT1RfUEFUSC10by1maXgtY3IucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA5LWJ1aWxkLUFkZC1zdXBwb3J0LWZvci1tdXNsLXRyaXBsZXRzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxMC1Sc3NSZWFkZXItRml4LWNvbXBpbGVyLXdhcm5pbmctY29tcGFyaW5nLXBvaW50ZXItdG8tLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxMS1MZXQtY29uZmlndXJlLXBhc3Mtb24tdW5rbm93bi1hcmNoaXRlY3R1cmVzLXNldHRpbmctLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxMi1SZXZlcnQtZHJvaWQtZml4LWJ1aWxkcy13aXRoLUFNTC1kaXNhYmxlZC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtY2hhbmdlLW9yZGVyLW9mLWRldGVjdGluZy1saWJlZ2wtYW5kLWxpYmdsZXMyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAxMy1GVFBQYXJzZS5jcHAtdXNlLXN0ZC1zdHJpbmcucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtZmlsZV9FbXUtb24tbXVzbC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItUmVtb3ZlLUZJTEVXUkFQLnBhdGNoIFwKLSIKLVNSQ19VUklbYWRkb25zLm1kNXN1bV0gPSAiNzE5NjE0ZmE3NjQwMTFhMTg2NjVkMDhhZjVjOGM5MmYiCi1TUkNfVVJJW2FkZG9ucy5zaGEyNTZzdW1dID0gIjM1MGRhNTc0MDhjMjc0NzNlYWY0MGU3ZjU0NGJjOTQ4NDFiZjEwMWRjNDM0NjA4NTI2MGM1YzRhZjBhZGFjOTciCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHB5dGhvbm5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgYnJlYWtzIGNvbXBpbGF0aW9uCi1BU05FRURFRCA9ICIiCi0KLUFDQ0VMID89ICIiCi1BQ0NFTF94ODYgPSAidmFhcGkgdmRwYXUiCi1BQ0NFTF94ODYtNjQgPSAidmFhcGkgdmRwYXUiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0FDQ0VMfSBvcGVuZ2wgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICdvcGVuZ2xlc3YyJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdzYW1iYScsICcnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLS1lbmFibGUtZ2wsLS1lbmFibGUtZ2xlcywiCi1QQUNLQUdFQ09ORklHW29wZW5nbGVzdjJdID0gIi0tZW5hYmxlLWdsZXMsLS1lbmFibGUtZ2wsdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhpbmVyYW1hIGxpYnhtdSBsaWJ4cmFuZHIgbGlieHRzdCIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW2xjbXNdID0gIi0tZW5hYmxlLWxjbXMyLC0tZGlzYWJsZS1sY21zMixsY21zIgotUEFDS0FHRUNPTkZJR1tzYW1iYV0gPSAiLS1lbmFibGUtc2FtYmEsLS1kaXNhYmxlLXNhbWJhLHNhbWJhIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZGVidWcgXAotICAgIC0tZGlzYWJsZS1saWJjYXAgXAotICAgIC0tZGlzYWJsZS1jY2FjaGUgXAotICAgIC0tZGlzYWJsZS1taWQgXAotICAgIC0tZW5hYmxlLWxpYnVzYiBcCi0gICAgLS1lbmFibGUtYWxzYSBcCi0gICAgLS1lbmFibGUtYWlycGxheSBcCi0gICAgLS1kaXNhYmxlLW9wdGljYWwtZHJpdmUgXAotICAgIC0td2l0aC1mZm1wZWc9c2hhcmVkIFwKLSAgICAtLWVuYWJsZS10ZXh0dXJlcGFja2VyPW5vIFwKLSAgICBhY19jdl9wYXRoX0pBVkFfRVhFPS9iaW4vdHJ1ZSBcCi0iCi0KLUZVTExfT1BUSU1JWkFUSU9OX2FybXY3YSA9ICItZmV4cGVuc2l2ZS1vcHRpbWl6YXRpb25zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1PMyAtZmZhc3QtbWF0aCIKLUZVTExfT1BUSU1JWkFUSU9OX2FybXY3dmUgPSAiLWZleHBlbnNpdmUtb3B0aW1pemF0aW9ucyAtZm9taXQtZnJhbWUtcG9pbnRlciAtTzMgLWZmYXN0LW1hdGgiCi1CVUlMRF9PUFRJTUlaQVRJT04gPSAiJHtGVUxMX09QVElNSVpBVElPTn0iCi0KLUxERkxBR1NfYXBwZW5kX21pcHMgPSAiIC1sYXRvbWljIgotTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgotTERGTEFHU19hcHBlbmRfYXJtID0gIiAtbGF0b21pYyIKLQotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgTElCVE9PTD0ke1NUQUdJTkdfQklORElSX0NST1NTfS8ke0hPU1RfU1lTfS1saWJ0b29sIgotCi0jIGZvciBweXRob24gbW9kdWxlcwotZXhwb3J0IEhPU1RfU1lTCi1leHBvcnQgQlVJTERfU1lTCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFBZVEhPTl9ESVIKLQotZGVmIGVuYWJsZV9nbGV3KGJiLCBkKToKLSAgICBpZiBiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCBUcnVlLCBGYWxzZSwgZCkgYW5kIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByZXR1cm4gImdsZXciCi0gICAgcmV0dXJuICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICB0YXIgeGYgJHtXT1JLRElSfS8ke0JQTn0tJHtBRERPTlNQVn0tZ2VuZXJhdGVkLWFkZG9ucy50YXIueHogLUMgJHtTfS8KLQotICAgICggZm9yIGkgaW4gJChmaW5kICR7U30gLW5hbWUgY29uZmlndXJlLmFjIC1vciAtbmFtZSBjb25maWd1cmUuaW58Z3JlcCAtdiAiLnBjIikgOyBkbwotICAgICAgIGNkICQoZGlybmFtZSAkaSkgJiYgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlIHx8IHRydWUKLSAgICBkb25lICkKLSAgICAoIGZvciBmIGluICR7U30veGJtYy9pbnRlcmZhY2VzL3B5dGhvbi9nZW5lcmF0ZWQvKi5jcHA7IGRvCi0gICAgICAgdG91Y2ggYGVjaG8gJGZ8c2VkIC1lICdzLy5jcHAkLy54bWwvZydgCi0gICAgZG9uZSApCi0KLSAgICBCT09UU1RSQVBfU1RBTkRBTE9ORT0xIG1ha2UgLWYgYm9vdHN0cmFwLm1rIEpTT05fQlVJTERFUj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L0pzb25TY2hlbWFCdWlsZGVyIgotICAgIEJPT1RTVFJBUF9TVEFOREFMT05FPTEgbWFrZSBKQVZBPS9iaW4vdHJ1ZSAtZiBjb2RlZ2VuZXJhdG9yLm1rIEpTT05fQlVJTERFUj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L0pzb25TY2hlbWFCdWlsZGVyIgotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGZvciBpIGluICQoZmluZCAuIC1uYW1lICJNYWtlZmlsZSIpIDsgZG8KLSAgICAgICAgc2VkIC1pIC1lICdzOkkvdXNyL2luY2x1ZGU6SSR7U1RBR0lOR19JTkNESVJ9OmcnICRpCi0gICAgZG9uZQotCi0gICAgZm9yIGkgaW4gJChmaW5kIC4gLW5hbWUgIioubWFrKiIgLW8gICAgLW5hbWUgIk1ha2VmaWxlIikgOyBkbwotICAgICAgICBzZWQgLWkgLWUgJ3M6SS91c3IvaW5jbHVkZTpJJHtTVEFHSU5HX0lOQ0RJUn06ZycgLWUgJ3M6LXJwYXRoIFwkKGxpYmRpcik6LXJwYXRoICR7bGliZGlyfTpnJyAkaQotICAgIGRvbmUKLX0KLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAicnBhdGhzIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94c2Vzc2lvbnMgJHtkYXRhZGlyfS9pY29ucyAke2xpYmRpcn0veGJtYyAke2RhdGFkaXJ9L3hibWMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9rb2RpLy5kZWJ1ZyAke2xpYmRpcn0va29kaS8qLy5kZWJ1ZyAke2xpYmRpcn0va29kaS8qLyovLmRlYnVnICR7bGliZGlyfS9rb2RpLyovKi8qLy5kZWJ1ZyIKLQotIyBrb2RpIHVzZXMgc29tZSBraW5kIG9mIGRsb3BlbigpIG1ldGhvZCBmb3IgbGliY2VjIHNvIHdlIG5lZWQgdG8gYWRkIGl0IG1hbnVhbGx5Ci0jIE9wZW5HTCBidWlsZHMgbmVlZCBnbHhpbmZvLCB0aGF0J3MgaW4gbWVzYS1kZW1vcwotUlJFQ09NTUVORFNfJHtQTn1fYXBwZW5kID0gIiBcCi0gICAgbGliY2VjIFwKLSAgICBweXRob24gXAotICAgIHB5dGhvbi1jdHlwZXMgXAotICAgIHB5dGhvbi1sYW5nIFwKLSAgICBweXRob24tcmUgXAotICAgIHB5dGhvbi1uZXRjbGllbnQgXAotICAgIHB5dGhvbi1odG1sIFwKLSAgICBweXRob24tZGlmZmxpYiBcCi0gICAgcHl0aG9uLWpzb24gXAotICAgIHB5dGhvbi16bGliIFwKLSAgICBweXRob24tc2hlbGwgXAotICAgIHB5dGhvbi1zcWxpdGUzIFwKLSAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgIGxpYmN1cmwgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICd4cmFuZHIgeGRweWluZm8nLCAnJywgZCl9IFwKLSIKLVJSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBcCi0gICAgZ2xpYmMtY2hhcm1hcC1pYm04NTAgXAotICAgIGdsaWJjLWdjb252LWlibTg1MCBcCi0gICAgZ2xpYmMtZ2NvbnYtdW5pY29kZSBcCi0gICAgZ2xpYmMtZ2NvbnYtdXRmLTMyIFwKLSAgICBnbGliYy1jaGFybWFwLXV0Zi04IFwKLSAgICBnbGliYy1sb2NhbGVkYXRhLWVuLXVzIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJ4Ym1jIgotCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhYy9mYWFjXzEuMjkuYmIKaW5kZXggNDc2NWM2Yy4uZDM2ZjJmNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFjL2ZhYWNfMS4yOS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWMvZmFhY18xLjI5LmJiCkBAIC0xLDkgKzEsMTIgQEAKIFNVTU1BUlkgPSAiRnJlZXdhcmUgQWR2YW5jZWQgQXVkaW8gQ29kZXIgKE1QRUcyLUFBQywgTVBFRzQtQUFDKSIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyKyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXVkaW9jb2RpbmcuY29tL2ZhYWMuaHRtbCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmZhYWMvY29kZXIuaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT1mYTFmZDZhNWZhOGNkYzg3N2Q2M2ExMjUzMGQyNzNlMCIKIAorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBpbmhlcml0IGF1dG90b29scwogCiBTUkNfVVJJID0gIiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlYzRjNDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mbHVpZHN5bnRoL2ZsdWlkc3ludGhfMS4xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJGbHVpZHN5bnRoIGlzIGEgc29mdHdhcmUgc3ludGhlc2l6ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZsdWlkc3ludGgub3JnLyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZjMTc4YmNkNDI1MDkwOTM5YThiNjM0ZDFkNmE5NTk0IgotCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgZ2xpYi0yLjAiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL0ZsdWlkU3ludGgvZmx1aWRzeW50aC5naXQ7YnJhbmNoPTEuMS54IFwKLSAgICBmaWxlOi8vMDAwMS1Vc2UtQVJNLU5FT04tYWNjZWxhcmF0aW9uLWZvci1mbG9hdC1tdWx0aXRocmVhZGVkLXNlLnBhdGNoIFwKLSIKLVNSQ1JFViA9ICJmNWEwZmVlNmY3ZjJiMmFiNGM4NjZkZjFhY2I2NDkzMzM0NjRiM2ZkIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgbGliX3BhY2thZ2UKLQotRVhUUkFfT0VDTUFLRSA9ICItRGVuYWJsZS1mbG9hdHM9T04gLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0iCi1QQUNLQUdFQ09ORklHW3NuZGZpbGVdID0gIi1EZW5hYmxlLWxpYnNuZGZpbGUtc3VwcG9ydD1PTiwtRGVuYWJsZS1saWJzbmRmaWxlLXN1cHBvcnQ9T0ZGLGxpYnNuZGZpbGUxIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItRGVuYWJsZS1qYWNrLXN1cHBvcnQ9T04sLURlbmFibGUtamFjay1zdXBwb3J0PU9GRixqYWNrIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRGVuYWJsZS1wdWxzZWF1ZGlvPU9OLC0tRGVuYWJsZS1wdWxzZWF1ZGlvPU9GRixwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1EZW5hYmxlLXBvcnRhdWRpbz1PTiwtRGVuYWJsZS1wb3J0YXVkaW89T0ZGLHBvcnRhdWRpby12MTkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aF8xLjEuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRmMzEwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoXzEuMS4xMS5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkZsdWlkc3ludGggaXMgYSBzb2Z0d2FyZSBzeW50aGVzaXplciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZmx1aWRzeW50aC5vcmcvIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmMxNzhiY2Q0MjUwOTA5MzlhOGI2MzRkMWQ2YTk1OTQiCisKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBnbGliLTIuMCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vRmx1aWRTeW50aC9mbHVpZHN5bnRoLmdpdDticmFuY2g9MS4xLnggXAorICAgIGZpbGU6Ly8wMDAxLVVzZS1BUk0tTkVPTi1hY2NlbGFyYXRpb24tZm9yLWZsb2F0LW11bHRpdGhyZWFkZWQtc2UucGF0Y2ggXAorIgorU1JDUkVWID0gImY2NWM2YmEyNWZiMmM3ZTM3Yzg5ZmM2YTRhZmM1YWE2NDVlMjA4YzIiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitFWFRSQV9PRUNNQUtFID0gIi1EZW5hYmxlLWZsb2F0cz1PTiAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc25kZmlsZV0gPSAiLURlbmFibGUtbGlic25kZmlsZS1zdXBwb3J0PU9OLC1EZW5hYmxlLWxpYnNuZGZpbGUtc3VwcG9ydD1PRkYsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi1EZW5hYmxlLWphY2stc3VwcG9ydD1PTiwtRGVuYWJsZS1qYWNrLXN1cHBvcnQ9T0ZGLGphY2siCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi1EZW5hYmxlLXB1bHNlYXVkaW89T04sLURlbmFibGUtcHVsc2VhdWRpbz1PRkYscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbcG9ydGF1ZGlvXSA9ICItRGVuYWJsZS1wb3J0YXVkaW89T04sLURlbmFibGUtcG9ydGF1ZGlvPU9GRixwb3J0YXVkaW8tdjE5IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3RyZWFtZXJfMC4xMC4zNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTAuMTAvZ3N0cmVhbWVyXzAuMTAuMzYuYmIKaW5kZXggNWY5N2EyMC4uNTZkODIyMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMC4xMC9nc3RyZWFtZXJfMC4xMC4zNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0wLjEwL2dzdHJlYW1lcl8wLjEwLjM2LmJiCkBAIC00NSw5ICs0NSw2IEBACiAjICAgIG12ICR7V09SS0RJUn0vZ3N0cmVnaXN0cnliaW5hcnkuW2NoXSAke1N9L2dzdC8KICN9CiAKLVJSRUNPTU1FTkRTXyR7UE59X3FlbXV4ODYgICAgKz0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKLVJSRUNPTU1FTkRTXyR7UE59X3FlbXV4ODYtNjQgKz0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKLQogRklMRVNfJHtQTn0gKz0gIiAke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvKi5zbyIKIEZJTEVTXyR7UE59LWRldiArPSAiICR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8qLmxhICR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8qLmEiCiBGSUxFU18ke1BOfS1kYmcgKz0gIiAke2xpYmRpcn0vZ3N0cmVhbWVyLTAuMTAvLmRlYnVnLyAke2xpYmV4ZWNkaXJ9L2dzdHJlYW1lci0wLjEwLy5kZWJ1Zy8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0LXNoYXJrXzAuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdC1zaGFya18wLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA5ZjMyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdC1zaGFya18wLjIuMS5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkdzdC1TaGFyayBUcmFjZXJzIgorREVTQ1JJUFRJT04gPSAiQmVuY2htYXJrcyBhbmQgcHJvZmlsaW5nIHRvb2xzIGZvciBHU3RyZWFtZXIiCitIT01FUEFHRSA9ICJodHRwczovL2RldmVsb3Blci5yaWRnZXJ1bi5jb20vd2lraS9pbmRleC5waHA/dGl0bGU9R3N0U2hhcmsiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTFjYWEzNjg3NDM0OTI4NzkwMDJhZDAzMjQ0NWZhOTciCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkICIKKworU1JDQlJBTkNIID89ICJtYXN0ZXIiCisKK1NSQ1JFVl9iYXNlID0gImE2MGIzOTk2ZmUzMzc2ZDQyMzM0ZmM4OTAxNGU5ZDZmNmFmNjI4OTkiCitTUkNSRVZfY29tbW9uID0gImI2NGYwM2Y2MDkwMjQ1NjI0NjA4YmViNWQyZmZmMzM1ZTIzYTAxYzAiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL1JpZGdlUnVuL2dzdC1zaGFyay5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWJhc2UgXAorICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC9nc3RyZWFtZXIvY29tbW9uLmdpdDtwcm90b2NvbD1odHRwcztkZXN0c3VmZml4PWdpdC9jb21tb247bmFtZT1jb21tb247IFwKKyAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUdfQ09ORkFSR1MgPSAiIFwKKyAgICAgICAtLWRpc2FibGUtZ3JhcGh2aXogXAorICAgICAgIC0tZW5hYmxlLWd0ay1kb2M9bm8gXAorIgorCitGSUxFU18ke1BOfSArPSAiXAorICAgICAgICR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYmdzdHNoYXJrdHJhY2Vycy5zbyAgXAorICAgICAgICR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYmdzdHNoYXJrdHJhY2Vycy5sYSBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworZG9fY29uZmlndXJlKCkgeworICAgICAgICAke1N9L2F1dG9nZW4uc2ggLS1ub2NvbmZpZ3VyZQorICAgICAgICBvZV9ydW5jb25mCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC5pbmMKaW5kZXggMTBlZTViYy4uNDU1ZDg5NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdGQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkLmluYwpAQCAtNywxOSArNywxNSBAQAogREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyIGpzb24tZ2xpYiBsaWJkYWVtb24iCiAKIFNSQ0JSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID0gIjA5N2EwODZhODYwNmRjYjM2OGM3ZDM4YzdlYzRmZWZjMjQ5NzQwMWIiCitTUkNSRVYgPSAiMzUyNmQwZmZkYmNjYzM3NWRiN2Q1ZmUzM2E3MmM2OGIxMzQ2NTdjMiIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0QGdpdGh1Yi5jb20vUmlkZ2VSdW4vZ3N0ZC0xLnguZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAotCSAgIGZpbGU6Ly8wMDAxLWdzdGQteW9jdG8tY29tcGF0aWJpbGl0eS5wYXRjaCIKLQorICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3RkLXlvY3RvLWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Mb29rLWZvci1ndGstZG9jLm1ha2UtaW4tYnVpbGRkaXIucGF0Y2ggXAorICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1QQUNLQUdFQ09ORklHX0NPTkZBUkdTID0gIiBcCi0JLS1kaXNhYmxlLWd0ay1kb2MgXAotIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWRvYwogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAotCi1kb19jb25maWd1cmUoKSB7Ci0ke1N9L2F1dG9nZW4uc2gKLW9lX3J1bmNvbmYKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCXNlZCAtaSAtZSAic3xpbmNsdWRlIFwkKHRvcF9idWlsZGRpcikvZG9jcy9ndGstZG9jLm1ha2V8fGciICR7U30vZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbQogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdGQvMDAwMS1Mb29rLWZvci1ndGstZG9jLm1ha2UtaW4tYnVpbGRkaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC8wMDAxLUxvb2stZm9yLWd0ay1kb2MubWFrZS1pbi1idWlsZGRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTI4NjE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXItMS4wL2dzdGQvMDAwMS1Mb29rLWZvci1ndGstZG9jLm1ha2UtaW4tYnVpbGRkaXIucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBhODRlOWE2ZTFkY2E2ODVlZGEwNzJkNThiNTg1NTZiNWIzNWNiNGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTAgU2VwIDIwMTggMjE6MTY6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTG9vayBmb3IgZ3RrLWRvYy5tYWtlIGluIGJ1aWxkZGlyCisKK3RoaXMgaXMgZXZpZGVudCB3aGVuIFMgIT0gQiBiZWNhdXNlIGd0a2RvY2l6ZQorZ2VuZXJhdGVzIHRoaXMgZmlsZSBhbmQgaXRzIGFjdHVhbGx5IGJ1aWx0IGludG8KK2J1aWxkIGFyZWEKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9SaWRnZVJ1bi9nc3RkLTEueC9wdWxsLzM5XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RvY3MvcmVmZXJlbmNlL2dzdGQvTWFrZWZpbGUuYW0gYi9kb2NzL3JlZmVyZW5jZS9nc3RkL01ha2VmaWxlLmFtCitpbmRleCBmODYwZmExLi42Mjg3MGRhIDEwMDY0NAorLS0tIGEvZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbQorKysrIGIvZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbQorQEAgLTY2LDcgKzY2LDcgQEAgR1RLRE9DX0xJQlM9JCh0b3BfYnVpbGRkaXIpL2dzdGQvbGliZ3N0ZC1jb3JlLmxhCisgCisgCisgIyBUaGlzIGluY2x1ZGVzIHRoZSBzdGFuZGFyZCBndGstZG9jIG1ha2UgcnVsZXMsIGNvcGllZCBieSBndGtkb2NpemUuCistaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2RvY3MvZ3RrLWRvYy5tYWtlCisraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvZG9jcy9ndGstZG9jLm1ha2UKKyAKKyAjIENvbW1lbnQgdGhpcyBvdXQgaWYgeW91IHdhbnQgJ21ha2UgY2hlY2snIHRvIHRlc3QgeW91IGRvYyBzdGF0dXMKKyAjIGFuZCBydW4gc29tZSBzYW5pdHkgY2hlY2tzCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci0xLjAvZ3N0ZC8wMDAxLWdzdGQteW9jdG8tY29tcGF0aWJpbGl0eS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkLzAwMDEtZ3N0ZC15b2N0by1jb21wYXRpYmlsaXR5LnBhdGNoCmluZGV4IGRkYzE4MzEuLmZmY2M2ZWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkLzAwMDEtZ3N0ZC15b2N0by1jb21wYXRpYmlsaXR5LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyLTEuMC9nc3RkLzAwMDEtZ3N0ZC15b2N0by1jb21wYXRpYmlsaXR5LnBhdGNoCkBAIC00LDQ3ICs0LDkgQEAKIFN1YmplY3Q6IFtQQVRDSF0gZ3N0ZDp5b2N0byBjb21wYXRpYmlsaXR5CiAKIC0tLQotIGF1dG9nZW4uc2ggICAgICAgICAgICAgICAgICAgICAgfCA4ICsrKysrKystCi0gZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbSB8IDIgKy0KICBnc3RkL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMiArLQogIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKLWluZGV4IDY2ZGJkNDIuLjc5M2VlMmYgMTAwNzU1Ci0tLS0gYS9hdXRvZ2VuLnNoCi0rKysgYi9hdXRvZ2VuLnNoCi1AQCAtMjEsNyArMjEsMTEgQEAKLSAjIEFDTE9DQUwsIEFVVE9QT0lOVCBhbmQvb3IgTElCVE9PTElaRSB0byB0aGUgcmlnaHQgdmVyc2lvbnMsIG9yIGxlYXZlIHRoZW0KLSAjIHVuc2V0IGFuZCBnZXQgdGhlIGRlZmF1bHRzCi0gCi0tZ3RrZG9jaXplIHx8IGV4aXQgMQotK3Rlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj1gZGlybmFtZSAiJDAiYAotK3Rlc3QgLW4gIiRzcmNkaXIiIHx8IHNyY2Rpcj0uCi0rCi0rb2xkZGlyPWBwd2RgCi0rY2QgIiRzcmNkaXIiCi0gCi0gYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1mb3JjZSAtLWluc3RhbGwgfHwgewotICBlY2hvICdhdXRvZ2VuLnNoIGZhaWxlZCc7Ci1AQCAtMzEsMyArMzUsNSBAQCBhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWZvcmNlIC0taW5zdGFsbCB8fCB7Ci0gZWNobwotIGVjaG8gIk5vdyBydW4gJy4vY29uZmlndXJlJyB3aXRoIHlvdXIgc3lzdGVtIHNldHRpbmdzIGZvbGxvd2VkIGJ5ICdtYWtlJyB0byBjb21waWxlIHRoaXMgbW9kdWxlLiIKLSBlY2hvCi0rCi0rY2QgIiRvbGRkaXIiCi1kaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvZ3N0ZC9NYWtlZmlsZS5hbSBiL2RvY3MvcmVmZXJlbmNlL2dzdGQvTWFrZWZpbGUuYW0KLWluZGV4IGY4NjBmYTEuLjE1M2ExM2IgMTAwNjQ0Ci0tLS0gYS9kb2NzL3JlZmVyZW5jZS9nc3RkL01ha2VmaWxlLmFtCi0rKysgYi9kb2NzL3JlZmVyZW5jZS9nc3RkL01ha2VmaWxlLmFtCi1AQCAtNjYsNyArNjYsNyBAQCBHVEtET0NfTElCUz0kKHRvcF9idWlsZGRpcikvZ3N0ZC9saWJnc3RkLWNvcmUubGEKLSAKLSAKLSAjIFRoaXMgaW5jbHVkZXMgdGhlIHN0YW5kYXJkIGd0ay1kb2MgbWFrZSBydWxlcywgY29waWVkIGJ5IGd0a2RvY2l6ZS4KLS1pbmNsdWRlICQodG9wX3NyY2RpcikvZG9jcy9ndGstZG9jLm1ha2UKLSsjIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9kb2NzL2d0ay1kb2MubWFrZQotIAotICMgQ29tbWVudCB0aGlzIG91dCBpZiB5b3Ugd2FudCAnbWFrZSBjaGVjaycgdG8gdGVzdCB5b3UgZG9jIHN0YXR1cwotICMgYW5kIHJ1biBzb21lIHNhbml0eSBjaGVja3MKIGRpZmYgLS1naXQgYS9nc3RkL01ha2VmaWxlLmFtIGIvZ3N0ZC9NYWtlZmlsZS5hbQogaW5kZXggMTNjNTUxZC4uMTFmZTIwMiAxMDA2NDQKIC0tLSBhL2dzdGQvTWFrZWZpbGUuYW0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGMxMzk0L2xpYmRjMTM5NF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRjMTM5NC9saWJkYzEzOTRfZ2l0LmJiCmluZGV4IDhhOWU5YTEuLmI2YmI0NDcgMTAwNzU1Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGMxMzk0L2xpYmRjMTM5NF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkYzEzOTQvbGliZGMxMzk0X2dpdC5iYgpAQCAtNyw3ICs3LDggQEAKICMgbGlic2RsIHRvIHByb3ZpZGUgc2RsLm00IHdpdGggQU1fUEFUSF9TREwKIERFUEVORFMgKz0gImxpYnVzYjEgbGlicmF3MTM5NCBsaWJzZGwgXAogICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieHYgdmlydHVhbC9saWJ4MTEnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ3ZpcnR1YWwvbGliZ2wgbGliZ2x1JywgJycsIGQpfSBcCisgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICd2aXJ0dWFsL2xpYmdsJywgJycsIGQpfSBcCisgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB4MTEnLCAnbGliZ2x1JywgJycsIGQpfSBcCiAiCiAKIFBWID0gIjIuMi41K2dpdHIke1NSQ1BWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib3Blbm1wdC9maWxlcy9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9wZW5tcHQvZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OTgxYjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9wZW5tcHQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsOSBAQAorIyEvYmluL3NoCisKKy4vbGlib3Blbm1wdHRlc3QgPi9kZXYvbnVsbCAyPiYxCisKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICAgZWNobyAiUEFTUzogbGlib3Blbm1wdHRlc3QiCitlbHNlCisgICBlY2hvICJGQUlMOiBsaWJvcGVubXB0dGVzdCIKK2ZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9wZW5tcHQvbGlib3Blbm1wdF8wLjMuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9wZW5tcHQvbGlib3Blbm1wdF8wLjMuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE0MjQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib3Blbm1wdC9saWJvcGVubXB0XzAuMy4xMC5iYgpAQCAtMCwwICsxLDEwNCBAQAorU1VNTUFSWSA9ICJDIGFuZCBDKysgY3Jvc3MtcGxhdGZvcm0gbGlicmFyeSBmb3IgZGVjb2RpbmcgdHJhY2tlZCBtdXNpYyBmaWxlcyAobW9kdWxlcykiCitERVNDUklQVElPTiA9ICJsaWJvcGVubXB0IGlzIGEgY3Jvc3MtcGxhdGZvcm0gQysrIGFuZCBDIGxpYnJhcnkgdG8gZGVjb2RlIHRyYWNrZWQgXAorbXVzaWMgZmlsZXMgKG1vZHVsZXMpIGludG8gYSByYXcgUENNIGF1ZGlvIHN0cmVhbS4gSXQgYWxzbyBjb21lcyB3aXRoIG9wZW5tcHQxMjMsIGEgXAorY3Jvc3MtcGxhdGZvcm0gY29tbWFuZC1saW5lIG9yIHRlcm1pbmFsIGJhc2VkIG1vZHVsZSBmaWxlIHBsYXllciwgYW5kIGxpYm9wZW5tcHRfbW9kcGx1ZywgXAorYSB3cmFwcGVyIGFyb3VuZCBsaWJvcGVubXB0IHRoYXQgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRoYXQgaXMgQUJJIGNvbXBhdGlsZSB3aXRoIFwKK2xpYm1vZHBsdWcuIGxpYm9wZW5tcHQgaXMgYmFzZWQgb24gdGhlIHBsYXllciBjb2RlIG9mIHRoZSBPcGVuTVBUIHByb2plY3QuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWIub3Blbm1wdC5vcmcvbGlib3Blbm1wdC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTgwNDE1MDU3M2YxNDliZWZlZjZjMDdlMTczZjIwYzMiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICJodHRwczovL2xpYi5vcGVubXB0Lm9yZy9maWxlcy9saWJvcGVubXB0L3NyYy9saWJvcGVubXB0LSR7UFZ9K3JlbGVhc2UuYXV0b3Rvb2xzLnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NmJiYzZmYmI1ZjI3YTU1NGNiMTQ1ZDgwNWU5ZWY5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNGExMzdiOGQxYTIwZTFiNmE1ZTY3Y2JjOTQ2N2FiN2U1ZTRlNjdkNWFhMzhhMjQ3YWZjODI1Njg1YzUzOTM5IgorCitTID0gIiR7V09SS0RJUn0vbGlib3Blbm1wdC0ke1BWfStyZWxlYXNlLmF1dG90b29scyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIGxpYm9wZW5tcHQtbW9kcGx1ZyBvcGVubXB0MTIzIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSBcCisgICAgZmxhYyBtcGcxMjMgb2dnIHNuZGZpbGUgdm9yYmlzIHZvcmJpc2ZpbGUgemxpYiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisiCisKKyMgbGlib3Blbm1wdF9tb2RwbHVnIGlzIGEgbGlicmFyeSB0aGF0IHdyYXBzIGxpYm9wZW5tcHQgY2FsbHMgaW50bworIyBmdW5jdGlvbnMgdGhhdCBhcmUgQUJJIGNvbXBhdGlibGUgd2l0aCBsaWJtb2RwbHVnLiBUaGlzIGFsbG93cyBmb3IKKyMgdXNpbmcgbW9kcGx1ZyBoZWFkZXJzIGFuZCBsaW5raW5nIGFnYWluc3QgbGlib3Blbm1wdF9tb2RwbHVnCisjIGluc3RlYWQgb2YgYWdhaW5zdCB0aGUgb3JpZ2luYWwgbGlibW9kcGx1ZyBsaWJyYXJ5LgorIyBOT1RFOiBUaGUgd3JhcHBlciBpcyBjb21wYXRpYmxlIHRvIHRoZSBBQkkgZnJvbSBsaWJtb2RwbHVnIHZlcnNpb24KKyMgMC44LjggYW5kIG5ld2VyLgorUEFDS0FHRUNPTkZJR1tsaWJvcGVubXB0LW1vZHBsdWddID0gIi0tZW5hYmxlLWxpYm9wZW5tcHRfbW9kcGx1ZywtLWRpc2FibGUtbGlib3Blbm1wdF9tb2RwbHVnIgorUEFDS0FHRUNPTkZJR1tvcGVubXB0MTIzXSAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5tcHQxMjMsLS1kaXNhYmxlLW9wZW5tcHQxMjMiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSAgICAgICAgICAgICAgPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgorCisjIFRoZXNlIHBhY2thZ2Vjb25maWdzIGFmZmVjdCBvcGVubXB0MTIzCitQQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgICAgICAgICAgPSAiLS13aXRoLWZsYWMsLS13aXRob3V0LWZsYWMsZmxhYyIKK1BBQ0tBR0VDT05GSUdbbXBnMTIzXSAgICAgICAgICAgICA9ICItLXdpdGgtbXBnMTIzLC0td2l0aG91dC1tcGcxMjMsbXBnMTIzIgorUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgICAgICAgID0gIi0td2l0aC1vZ2csLS13aXRob3V0LW9nZyxsaWJvZ2ciCitQQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gICAgICAgICAgPSAiLS13aXRoLXBvcnRhdWRpbywtLXdpdGhvdXQtcG9ydGF1ZGlvLHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dICAgICAgICAgPSAiLS13aXRoLXB1bHNlYXVkaW8sLS13aXRob3V0LXB1bHNlYXVkaW8scHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc2RsXSAgICAgICAgICAgICAgICA9ICItLXdpdGgtc2RsLC0td2l0aG91dC1zZGwsdmlydHVhbC9saWJzZGwiCitQQUNLQUdFQ09ORklHW3NkbDJdICAgICAgICAgICAgICAgPSAiLS13aXRoLXNkbDIsLS13aXRob3V0LXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzbmRmaWxlXSAgICAgICAgICAgID0gIi0td2l0aC1zbmRmaWxlLC0td2l0aG91dC1zbmRmaWxlLGxpYnNuZGZpbGUxIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdICAgICAgICAgICAgID0gIi0td2l0aC12b3JiaXMsLS13aXRob3V0LXZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW3ZvcmJpc2ZpbGVdICAgICAgICAgPSAiLS13aXRoLXZvcmJpc2ZpbGUsLS13aXRob3V0LXZvcmJpc2ZpbGUsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICAgICAgICAgID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCisKKyMgLS1kaXNhYmxlLWxpYm1vZHBsdWcgaXMgbmVjZXNzYXJ5LCBzaW5jZSBvdGhlcndpc2Ugd2UnZAorIyBoYXZlIGEgY29sbGlzaW9uIHdpdGggdGhlIGxpYm1vZHBsdWcgcGFja2FnZSwgYmVjYXVzZSBvZiB0aGUKKyMgbGlibW9kcGx1Zy5zbyBmaWxlLiAobGlibW9kcGx1Zy5zbyBmcm9tIGxpYm9wZW5tcHQgaXNpbnRlbmRlZAorIyB0byBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudCwgYW5kIGFjY29yZGluZyB0byB0aGUKKyMgZG9jdW1lbnRhdGlvbiwgaXMgbm90IGNvbXBsZXRlLikKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWRpc2FibGUtZG94eWdlbi1kb2MgXAorICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCisgICAgLS1kaXNhYmxlLWxpYm1vZHBsdWcgXAorICAgIC0td2l0aG91dC1wb3J0YXVkaW9jcHAgXAorIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgJHtQQVJBTExFTF9NQUtFfSBsaWJvcGVubXB0dGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L2xpYm9wZW5tcHR0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vdGVzdC90ZXN0Lm1wdG0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rlc3QvdGVzdC5zM20gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rlc3QvdGVzdC54bSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2xpYm9wZW5tcHQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9saWJvcGVubXB0L2xpYm9wZW5tcHRfdmVyc2lvbi5tayAke0R9JHtQVEVTVF9QQVRIfS9saWJvcGVubXB0Cit9CisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBwYWNrYWdlY29uZmlnID0gKGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikgb3IgIiIpLnNwbGl0KCkKKyAgICBpZiAoInNkbCIgaW4gcGFja2FnZWNvbmZpZykgYW5kICgic2RsMiIgaW4gcGFja2FnZWNvbmZpZyk6CisgICAgICAgIGJiLmVycm9yKCJzZGwgYW5kIHNkbDIgcGFja2FnZWNvbmZpZ3MgY2Fubm90IGJlIGJvdGggZW5hYmxlZCIpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1tb2RwbHVnICR7UE59LW9wZW5tcHQxMjMgJHtQTn0tb3Blbm1wdDEyMy1kb2MiCitGSUxFU18ke1BOfS1tb2RwbHVnID0gIiR7bGliZGlyfS9saWJvcGVubXB0X21vZHBsdWcuc28uKiIKK0ZJTEVTXyR7UE59LW9wZW5tcHQxMjMgPSAiJHtiaW5kaXJ9L29wZW5tcHQxMjMiCitGSUxFU18ke1BOfS1vcGVubXB0MTIzLWRvYyA9ICIke21hbmRpcn0vbWFuMS9vcGVubXB0MTIzKiIKKworIyBTaW5jZSB2ZXJzaW9uIDAuMywgbGlib3Blbm1wdCB1c2VzIFNlbVZlciAyLjAuMCB2ZXJzaW9uaW5nLgorIyBUaGUgU2VtVmVyIHZlcnNpb25pbmcgc2NoZW1lIGlzIGluY29tcGF0aWJsZSB3aXRoIERlYmlhbi9VYnVudHUKKyMgcGFja2FnZSB2ZXJzaW9uIG5hbWVzLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59LW1vZHBsdWcgPSAiMSIKKworUkRFUEVORFNfJHtQTn1fbGliYy1nbGliYyA9ICIgXAorICAgIGdsaWJjLWdjb252LWNwMTI1MiBcCisgICAgZ2xpYmMtZ2NvbnYtaWJtNDM3IFwKKyAgICBnbGliYy1nY29udi1pc284ODU5LTEgXAorICAgIGdsaWJjLWdjb252LWlzbzg4NTktMTUgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODdmZjUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKQEAgLTAsMCArMSw0MSBAQAorREVTQ1JJUFRJT04gPSAiTWluaURMTkEgKGFrYSBSZWFkeURMTkEpIGlzIHNlcnZlciBzb2Z0d2FyZSB3aXRoIHRoZSBhaW0gb2YgXAorYmVpbmcgZnVsbHkgY29tcGxpYW50IHdpdGggRExOQS9VUG5QLUFWIGNsaWVudHMuIgorTElDRU5TRSA9ICJHUEwtMi4wfEJTRCIKK0RFUEVORFMgPSAiZmZtcGVnIGZsYWMgbGliYXYganBlZyBzcWxpdGUzIGxpYmV4aWYgbGlib2dnIGxpYmlkM3RhZyBsaWJ2b3JiaXMiCisKKyMgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGxpYmF2IHdoaWNoIGhhcyBjb21tZXJjaWFsIGZsYWcKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitTUkNfVVJJID0gImdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL21pbmlkbG5hL2dpdDticmFuY2g9bWFzdGVyO21vZHVsZT1naXQgXAorICAgICAgICAgICBmaWxlOi8vbWluaWRsbmEtZGFlbW9uLmluaXQuZCBcCisgICAgICAgICAgIGZpbGU6Ly9taW5pZGxuYS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBUaGlzIHJlbW92ZSAiLS1leGNsdWRlPWF1dG9wb2ludCIgb3B0aW9uIGZyb20gYXV0b3JlY29uZiBhcmd1bWVudCB0byBhdm9pZAorIyBjb25maWd1cmUuYWM6MzA6IGVycm9yOiByZXF1aXJlZCBmaWxlICcuL0FCT1VULU5MUycgbm90IGZvdW5kCitFWFRSQV9BVVRPUkVDT05GID0gIiIKKworZG9faW5zdGFsbF9hcHBlbmQoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IG1pbmlkbG5hLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworIyBTeXN0ZW1kIHNjcmlwdAorICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9taW5pZGxuYS5zZXJ2aWNlICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3N5c3RlbWQvc3lzdGVtCisKKyMgU3lzdmluaXQgc2NyaXB0CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9taW5pZGxuYS1kYWVtb24uaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9taW5pZGxuYQorCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtaW5pZGxuYS5zZXJ2aWNlIgorCitJTklUU0NSSVBUX05BTUUgPSAibWluaWRsbmEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MCIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTgwOTVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBhNDI5MGJmMTg4N2Y5MjAzMjg4ODU4Y2E3NmJkZDIwYjJlZGYzMzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmFwdGlzdGUgRHVyYW5kIDxiYXB0aXN0ZS5kdXJhbmRAZ21haWwuY29tPgorRGF0ZTogU3VuLCA5IFNlcCAyMDE4IDIwOjUwOjQxICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBHZXR0ZXh0IHZlcnNpb24KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBCYXB0aXN0ZSBEdXJhbmQgPGJhcHRpc3RlLmR1cmFuZEBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmMzQzZDIxLi5hNTU2YjMzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNCw3ICsxNCw3IEBACisgIyBMaWNlbnNlIGFsb25nIHdpdGggTWluaURMTkE7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcKKyAjIFVTQS4KKy1BQ19JTklUKE1pbmlETE5BLDEuMS4zLCxtaW5pZGxuYSkKKytBQ19JTklUKE1pbmlETE5BLDEuMi4xLCxtaW5pZGxuYSkKKyAjTFRfSU5JVAorIAorIEFDX0NBTk9OSUNBTF9UQVJHRVQKK0BAIC0yOCw3ICsyOCw3IEBAIG00X2lmZGVmKFtBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlNdLCBbQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TXSkKKyAKKyBBTV9JQ09OVgorIEFNX0dOVV9HRVRURVhUKFtleHRlcm5hbF0pCistQU1fR05VX0dFVFRFWFRfVkVSU0lPTigwLjE4KQorK0FNX0dOVV9HRVRURVhUX1ZFUlNJT04oMC4xOSkKKyAKKyAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCisgQUNfUFJPR19BV0sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hL21pbmlkbG5hLWRhZW1vbi5pbml0LmQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hL21pbmlkbG5hLWRhZW1vbi5pbml0LmQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hL21pbmlkbG5hLWRhZW1vbi5pbml0LmQKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvbWluaWRsbmEtZGFlbW9uLmluaXQuZApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvbWluaWRsbmEuc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvbWluaWRsbmEuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvbWluaWRsbmEuc2VydmljZQpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS9taW5pZGxuYS5zZXJ2aWNlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hXzEuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYV8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTlkODVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYV8xLjIuMS5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgJHtCUE59LmluYworCitTUkNSRVYgPSAiYzc2MGEzMzhlMDdlYmQxMWQ2MmZlZjcwMWUzZGU4MjRhOTFmODYyNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UubWluaXVwbnBkO21kNT1iMGRhYmY5ZDhlMGY4NzE1NTRlMzA5ZDYyZWFkOGQyYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNicmFpbnovbGlibXVzaWNicmFpbnpfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY2JyYWluei9saWJtdXNpY2JyYWluel9naXQuYmIKaW5kZXggMTZlNTIxMy4uY2E5ZDk0YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY2JyYWluei9saWJtdXNpY2JyYWluel9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY2JyYWluei9saWJtdXNpY2JyYWluel9naXQuYmIKQEAgLTIyLDEwICsyMiwxMiBAQAogICAgIGdpdCBjbGVhbiAtZGZ4IC1lIC8ucGMvIC1lIC9wYXRjaGVzLyAuCiAgICAgbWtkaXIgYnVpbGQtbmF0aXZlCiAgICAgY2QgYnVpbGQtbmF0aXZlCi0gICAgY21ha2UgLURDTUFLRV9DX0ZMQUdTPSR7QlVJTERfQ0ZMQUdTfSBcCisgICAgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgXAorICAgICAgICAgIGNtYWtlIC1EQ01BS0VfQ19GTEFHUz0ke0JVSUxEX0NGTEFHU30gXAogICAgICAgICAgIC1EQ01BS0VfQ19DT01QSUxFUj0ke0JVSUxEX0NDfSBcCiAgICAgICAgICAgLURDTUFLRV9DWFhfRkxBR1M9JHtCVUlMRF9DWFhGTEFHU30gXAogICAgICAgICAgIC1EQ01BS0VfQ1hYX0NPTVBJTEVSPSR7QlVJTERfQ1hYfSBcCisgICAgICAgICAgLURDTUFLRV9FWEVfTElOS0VSX0ZMQUdTPSR7QlVJTERfTERGTEFHU30gXAogICAgICAgICAgIC4uCiAgICAgbWFrZSBtYWtlLWMtaW50ZXJmYWNlCiAgICAgY2QgLi4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9saWJtcGRjbGllbnRfMi4xNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9saWJtcGRjbGllbnRfMi4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTVlNzZmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL2xpYm1wZGNsaWVudF8yLjE2LmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQyBjbGllbnQgbGlicmFyeSBmb3IgdGhlIE11c2ljIFBsYXllciBEYWVtb24iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2YjlkZmQyZjE5N2RjNTE0ZDhlZjA2NTQ5Njg0Yjc3IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubXVzaWNwZC5vcmcvbGlicy9saWJtcGRjbGllbnQvIgorCitpbmhlcml0IG1lc29uCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL011c2ljUGxheWVyRGFlbW9uL2xpYm1wZGNsaWVudCBcCisiCitTUkNSRVYgPSAiNGU4ZDk5MGViNTIzOTU2NmVlOTQ4ZjFjZDc5YjcyNDhlMDA4NjIwYSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3AiCitQQUNLQUdFQ09ORklHW3RjcF0gPSAiLUR0Y3A9dHJ1ZSwtRHRjcD1mYWxzZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBsaWJtcGRjbGllbnQncyBWYWxhIGJpbmRpbmdzIGFyZSBvdXRkYXRlZCBhbmQgdW5tYWludGFpbmVkOyBpdAorICAgICMgaXMgbGlrZWx5IHRoYXQgbm9ib2R5IHdpbGwgZXZlciB1c2UgdGhlbSwgc28gbGV0J3Mgbm90IGluc3RhbGwKKyAgICAjIHRoZW0KKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vdmFsYQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wY18wLjMxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wY18wLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYWJlNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBjXzAuMzEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJBIG1pbmltYWxpc3QgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgTXVzaWMgUGxheWVyIERhZW1vbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm11c2ljcGQub3JnL2NsaWVudHMvbXBjLyIKKworaW5oZXJpdCBtZXNvbgorCitERVBFTkRTICs9ICIgXAorICAgIGxpYm1wZGNsaWVudCBcCisiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL011c2ljUGxheWVyRGFlbW9uL21wYyBcCisiCitTUkNSRVYgPSAiNTk4NzVhY2RmMzRlNWYwZWFjMGMxMTQ1M2M0OWRhZWY1NGY3ODQxMyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMjAuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMjAuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NTRmMzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjIwLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLVNVTU1BUlkgPSAiTXVzaWMgUGxheWVyIERhZW1vbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUhPTUVQQUdFID0iaHR0cDovL3d3dy5tdXNpY3BkLm9yZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1ERVBFTkRTICs9ICIgXAotICAgIGFsc2EtbGliIFwKLSAgICBsaWJzYW1wbGVyYXRlMCBcCi0gICAgbGlic25kZmlsZTEgXAotICAgIGxpYnZvcmJpcyBcCi0gICAgbGlib2dnIFwKLSAgICBmYWFkMiBcCi0gICAgZmZtcGVnIFwKLSAgICBjdXJsIFwKLSAgICBzcWxpdGUgXAotICAgIGJ6aXAyIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKLSAgICB0Y3Atd3JhcHBlcnMgXAotICAgIG9wZW5hbC1zb2Z0IFwKLSAgICB5YWpsIFwKLSAgICBqYWNrIFwKLSAgICBmYWFkMiBcCi0gICAgZmxhYyBcCi0gICAgbGliYW8gXAotICAgIGZsdWlkc3ludGggXAotICAgIGxpYmNkaW8gXAotICAgIHdhdnBhY2sgXAotICAgIGxpYm9wdXMgXAotICAgIG1wZzEyMyBcCi0gICAgbGlibW1zIFwKLSAgICBsaWJtb2RwbHVnIFwKLSAgICBib29zdCBcCi0gICAgaWN1IFwKLSAgICBkYnVzIFwKLSAgICBleHBhdCBcCi0gICAgemxpYiBcCi0gICAgbGlidXBucCBcCi0iCi0KLSMgV2hpbGUgdGhpcyBpdGVtIGRvZXMgbm90IHJlcXVpcmUgaXQsIGl0IGRlcGVuZHMgb24gbXBnMTIzIHdoaWNoIGRvZXMKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cubXVzaWNwZC5vcmcvZG93bmxvYWQvJHtCUE59LzAuMjAvJHtCUH0udGFyLnh6IFwKLSAgICBmaWxlOi8vbXBkLmNvbmYuaW4gXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjhkYzg3YmE5NTQ3M2ZkNzM4ZjJhZmY5YmQ2OWNjMjEyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhNTgyZGMyYWU5MGI5NGZmMzg1M2Y5ZmZkN2Q4MGIyYzJiNWZlMmUyYzM1Y2IxZGEwYjM2ZjNmM2RmYWQ0MzQiCi0KLUVYVFJBX09FQ09ORiA9ICJlbmFibGVfYnppcDI9eWVzIgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJywgJy0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpb2ZpbGVdID0gIi0tZW5hYmxlLWF1ZGlvZmlsZSwtLWRpc2FibGUtYXVkaW9maWxlLGF1ZGlvZmlsZSIKLVBBQ0tBR0VDT05GSUdbY2Rpb3BhcmFub2lhXSA9ICItLWVuYWJsZS1jZGlvLXBhcmFub2lhLC0tZGlzYWJsZS1jZGlvLXBhcmFub2lhLGxpYmNkaW8tcGFyYW5vaWEiCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgotUEFDS0FHRUNPTkZJR1tpZDN0YWddID0gIi0tZW5hYmxlLWlkMywtLWRpc2FibGUtaWQzLGxpYmlkM3RhZyIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLS1lbmFibGUtbGFtZS1lbmNvZGVyLC0tZGlzYWJsZS1sYW1lLWVuY29kZXIsbGFtZSIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCxzYW1iYSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzfGxpYnN5c3RlbWQtZGFlbW9ufGxpYnN5c3RlbWR8JyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0gICAgY2htb2QgNzc1ICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL21wZC9wbGF5bGlzdHMKLSAgICBjaG93biAtUiBtcGQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQKLSAgICBjaG93biBtcGQ6bXBkICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbXBkLmNvbmYuaW4gJHtEfS8ke3N5c2NvbmZkaXJ9L21wZC5jb25mCi0gICAgc2VkIC1pIFwKLSAgICAgICAgLWUgJ3N8JW11c2ljX2RpcmVjdG9yeSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL211c2ljfCcgXAotICAgICAgICAtZSAnc3wlcGxheWxpc3RfZGlyZWN0b3J5JXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvcGxheWxpc3RzfCcgXAotICAgICAgICAtZSAnc3wlZGJfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL21wZC5kYnwnIFwKLSAgICAgICAgLWUgJ3N8JWxvZ19maWxlJXwke2xvY2Fsc3RhdGVkaXJ9L2xvZy9tcGQubG9nfCcgXAotICAgICAgICAtZSAnc3wlc3RhdGVfZmlsZSV8JHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkL3N0YXRlfCcgXAotICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vbXBkLmNvbmYKLQotICAgIGlmIFsgLWUgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlIF0gOyB0aGVuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgICAnc3xeRXhlY1N0YXJ0PS4qfEV4ZWNTdGFydD0ke2JpbmRpcn0vbXBkIC0tbm8tZGFlbW9ufCcgXAotICAgICAgICAgICAgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21wZC5zZXJ2aWNlCi0gICAgZmkKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtcGQuc29ja2V0IgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICIgXAotICAgIC0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQgXAotICAgIC0tZ3JvdXBzIGF1ZGlvIFwKLSAgICAtLXVzZXItZ3JvdXAgbXBkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjIwLjIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL21wZF8wLjIwLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNmFkNDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL211c2ljcGQvbXBkXzAuMjAuMjIuYmIKQEAgLTAsMCArMSw5OSBAQAorU1VNTUFSWSA9ICJNdXNpYyBQbGF5ZXIgRGFlbW9uIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorSE9NRVBBR0UgPSJodHRwOi8vd3d3Lm11c2ljcGQub3JnIgorCitpbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gIiBcCisgICAgY3VybCBcCisgICAgc3FsaXRlMyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisgICAgeWFqbCBcCisgICAgYm9vc3QgXAorICAgIGljdSBcCisgICAgZGJ1cyBcCisgICAgZXhwYXQgXAorIgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9NdXNpY1BsYXllckRhZW1vbi9NUEQ7YnJhbmNoPXYwLjIwLnggXAorICAgIGZpbGU6Ly9tcGQuY29uZi5pbiBcCisiCitTUkNSRVYgPSAiOTI3NGJjMTViYzQxYmJlNDkwZmRlODQ3Zjg0MjI0NjhjYzIwMzc1ZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLycsICctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhbHNhIGFvIGJ6aXAyIGRhZW1vbiBmZm1wZWcgZmlmbyBmbGFjIGZsdWlkc3ludGggaXNvOTY2MCBqYWNrIGxpYnNhbXBsZXJhdGUgbGlid3JhcCBodHRwZCBtbXMgbXBnMTIzIG1vZHBsdWcgc25kZmlsZSB1cG5wIG9wZW5hbCBvcHVzIG9zcyByZWNvcmRlciB2b3JiaXMgd2F2cGFjayB6bGliIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0xJQ0VOU0VfRkxBR1MnLCAnY29tbWVyY2lhbCcsICdhYWMnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2FhY10gPSAiLS1lbmFibGUtYWFjLC0tZGlzYWJsZS1hYWMsZmFhZDIiCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2FvXSA9ICItLWVuYWJsZS1hbywtLWRpc2FibGUtYW8sbGliYW8iCitQQUNLQUdFQ09ORklHW2F1ZGlvZmlsZV0gPSAiLS1lbmFibGUtYXVkaW9maWxlLC0tZGlzYWJsZS1hdWRpb2ZpbGUsYXVkaW9maWxlIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjZGlvcGFyYW5vaWFdID0gIi0tZW5hYmxlLWNkaW8tcGFyYW5vaWEsLS1kaXNhYmxlLWNkaW8tcGFyYW5vaWEsbGliY2Rpby1wYXJhbm9pYSIKK1BBQ0tBR0VDT05GSUdbZGFlbW9uXSA9ICItLWVuYWJsZS1kYWVtb24sLS1kaXNhYmxlLWRhZW1vbiIKK1BBQ0tBR0VDT05GSUdbZmZtcGVnXSA9ICItLWVuYWJsZS1mZm1wZWcsLS1kaXNhYmxlLWZmbXBlZyxmZm1wZWciCitQQUNLQUdFQ09ORklHW2ZpZm9dID0gIi0tZW5hYmxlLWZpZm8sLS1kaXNhYmxlLWZpZm8iCitQQUNLQUdFQ09ORklHW2ZsYWNdID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKK1BBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1todHRwZF0gPSAiLS1lbmFibGUtaHR0cGQtb3V0cHV0LC0tZGlzYWJsZS1odHRwZC1vdXRwdXQiCitQQUNLQUdFQ09ORklHW2lkM3RhZ10gPSAiLS1lbmFibGUtaWQzLC0tZGlzYWJsZS1pZDMsbGliaWQzdGFnIgorUEFDS0FHRUNPTkZJR1tpc285NjYwXSA9ICItLWVuYWJsZS1pc285NjYwLC0tZGlzYWJsZS1pc285NjYwLGxpYmNkaW8iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGFtZV0gPSAiLS1lbmFibGUtbGFtZS1lbmNvZGVyLC0tZGlzYWJsZS1sYW1lLWVuY29kZXIsbGFtZSIKK1BBQ0tBR0VDT05GSUdbbGlic2FtcGxlcmF0ZV0gPSAiLS1lbmFibGUtbHNyLC0tZGlzYWJsZS1sc3IsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW2xpYndyYXBdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0tZW5hYmxlLW1hZCwtLWRpc2FibGUtbWFkLGxpYm1hZCIKK1BBQ0tBR0VDT05GSUdbbW1zXSA9ICItLWVuYWJsZS1tbXMsLS1kaXNhYmxlLW1tcyxsaWJtbXMiCitQQUNLQUdFQ09ORklHW21vZHBsdWddID0gIi0tZW5hYmxlLW1vZHBsdWcsLS1kaXNhYmxlLW1vZHBsdWcsbGlibW9kcGx1ZyIKK1BBQ0tBR0VDT05GSUdbbXBnMTIzXSA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCitQQUNLQUdFQ09ORklHW29wZW5hbF0gPSAiLS1lbmFibGUtb3BlbmFsLC0tZGlzYWJsZS1vcGVuYWwsb3BlbmFsLXNvZnQiCitQQUNLQUdFQ09ORklHW29wdXNdID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyBsaWJvZ2ciCitQQUNLQUdFQ09ORklHW29zc10gPSAiLS1lbmFibGUtb3NzLC0tZGlzYWJsZS1vc3MsIgorUEFDS0FHRUNPTkZJR1tyZWNvcmRlcl0gPSAiLS1lbmFibGUtcmVjb3JkZXItb3V0cHV0LC0tZGlzYWJsZS1yZWNvcmRlci1vdXRwdXQiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iY2xpZW50LC0tZGlzYWJsZS1zbWJjbGllbnQsc2FtYmEiCitQQUNLQUdFQ09ORklHW3NuZGZpbGVdID0gIi0tZW5hYmxlLXNuZGZpbGUsLS1kaXNhYmxlLXNuZGZpbGUsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW3VwbnBdID0gIi0tZW5hYmxlLXVwbnAsLS1kaXNhYmxlLXVwbnAsbGlidXBucCIKK1BBQ0tBR0VDT05GSUdbdm9yYmlzXSA9ICItLWVuYWJsZS12b3JiaXMsLS1kaXNhYmxlLXZvcmJpcyxsaWJ2b3JiaXMgbGlib2dnIgorUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSA9ICItLWVuYWJsZS13YXZwYWNrLC0tZGlzYWJsZS13YXZwYWNrLHdhdnBhY2siCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzfGxpYnN5c3RlbWQtZGFlbW9ufGxpYnN5c3RlbWR8JyAke1N9L2NvbmZpZ3VyZS5hYworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1vIG1wZCAtZCBcCisgICAgICAgICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkIFwKKyAgICAgICAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvcGxheWxpc3RzCisgICAgaW5zdGFsbCAtbTc3NSAtbyBtcGQgLWcgbXBkIC1kIFwKKyAgICAgICAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvbXVzaWMKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9tcGQuY29uZi5pbiAke0R9LyR7c3lzY29uZmRpcn0vbXBkLmNvbmYKKyAgICBzZWQgLWkgXAorICAgICAgICAtZSAnc3wlbXVzaWNfZGlyZWN0b3J5JXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvbXVzaWN8JyBcCisgICAgICAgIC1lICdzfCVwbGF5bGlzdF9kaXJlY3RvcnklfCR7bG9jYWxzdGF0ZWRpcn0vbGliL21wZC9wbGF5bGlzdHN8JyBcCisgICAgICAgIC1lICdzfCVkYl9maWxlJXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvbXBkLmRifCcgXAorICAgICAgICAtZSAnc3wlbG9nX2ZpbGUlfCR7bG9jYWxzdGF0ZWRpcn0vbG9nL21wZC5sb2d8JyBcCisgICAgICAgIC1lICdzfCVzdGF0ZV9maWxlJXwke2xvY2Fsc3RhdGVkaXJ9L2xpYi9tcGQvc3RhdGV8JyBcCisgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9tcGQuY29uZgorCisgICAgIyB3ZSBkb24ndCBuZWVkIHRoZSBpY29uCisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2ljb25zCit9CisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibXBkLnNvY2tldCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiIFwKKyAgICAtLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvbXBkIFwKKyAgICAtLWdyb3VwcyBhdWRpbyBcCisgICAgLS11c2VyLWdyb3VwIG1wZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9uY21wY18wLjMzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9tdXNpY3BkL25jbXBjXzAuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ2OGQxMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbXVzaWNwZC9uY21wY18wLjMzLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQSBjdXJzZXMgY2xpZW50IGZvciB0aGUgTXVzaWMgUGxheWVyIERhZW1vbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm11c2ljcGQub3JnL2NsaWVudHMvbmNtcGMvIgorCitpbmhlcml0IG1lc29uCisKK0RFUEVORFMgKz0gIiBcCisgICAgYm9vc3QgXAorICAgIG5jdXJzZXMgXAorICAgIGxpYm1wZGNsaWVudCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJjb2xvcnMgbG9jYWxlIG1vdXNlIG5scyByZWdleCBoZWxwX3NjcmVlbiBhcnRpc3Rfc2NyZWVuIHNlYXJjaF9zY3JlZW4gc29uZ19zY3JlZW4ga2V5X3NjcmVlbiBseXJpY3Nfc2NyZWVuIG91dHB1dHNfc2NyZWVuIgorCitQQUNLQUdFQ09ORklHW2NvbG9yc10gPSAiLURjb2xvcnM9dHJ1ZSwtRGNvbG9ycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbGlyY10gPSAiLURsaXJjPWVuYWJsZWQsLURsaXJjPWRpc2FibGVkLGxpcmMiCitQQUNLQUdFQ09ORklHW2xvY2FsZV0gPSAiLURsb2NhbGU9ZW5hYmxlZCwtRGxvY2FsZT1kaXNhYmxlZCIKK1BBQ0tBR0VDT05GSUdbbWluaV0gPSAiLURtaW5pPXRydWUsLURtaW5pPWZhbHNlIgorUEFDS0FHRUNPTkZJR1ttb3VzZV0gPSAiLURtb3VzZT1lbmFibGVkLC1EbW91c2U9ZGlzYWJsZWQiCitQQUNLQUdFQ09ORklHW25sc10gPSAiLURubHM9ZW5hYmxlZCwtRG5scz1kaXNhYmxlZCxnZXR0ZXh0LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbcmVnZXhdID0gIi1EcmVnZXg9ZW5hYmxlZCwtRHJlZ2V4PWRpc2FibGVkLHBjcmUiCisKK1BBQ0tBR0VDT05GSUdbaGVscF9zY3JlZW5dID0gIi1EaGVscF9zY3JlZW49dHJ1ZSwtRGhlbHBfc2NyZWVuPWZhbHNlIgorUEFDS0FHRUNPTkZJR1thcnRpc3Rfc2NyZWVuXSA9ICItRGFydGlzdF9zY3JlZW49dHJ1ZSwtRGFydGlzdF9zY3JlZW49ZmFsc2UiCitQQUNLQUdFQ09ORklHW3NlYXJjaF9zY3JlZW5dID0gIi1Ec2VhcmNoX3NjcmVlbj10cnVlLC1Ec2VhcmNoX3NjcmVlbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc29uZ19zY3JlZW5dID0gIi1Ec29uZ19zY3JlZW49dHJ1ZSwtRHNvbmdfc2NyZWVuPWZhbHNlIgorUEFDS0FHRUNPTkZJR1trZXlfc2NyZWVuXSA9ICItRGtleV9zY3JlZW49dHJ1ZSwtRGtleV9zY3JlZW49ZmFsc2UiCitQQUNLQUdFQ09ORklHW2x5cmljc19zY3JlZW5dID0gIi1EbHlyaWNzX3NjcmVlbj10cnVlLC1EbHlyaWNzX3NjcmVlbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb3V0cHV0c19zY3JlZW5dID0gIi1Eb3V0cHV0c19zY3JlZW49dHJ1ZSwtRG91dHB1dHNfc2NyZWVuPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjaGF0X3NjcmVlbl0gPSAiLURjaGF0X3NjcmVlbj10cnVlLC1EY2hhdF9zY3JlZW49ZmFsc2UiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL011c2ljUGxheWVyRGFlbW9uL25jbXBjIFwKKyIKK1NSQ1JFViA9ICI4ZTk4Zjg5ZmYwN2IxNDBlNjM1N2RhYjJhOWE5ZjY0MzJhZTBlNTIxIgorUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvcnRtcGR1bXAvcnRtcGR1bXAvZml4LXJhY2luZy1idWlsZC1pc3N1ZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvcnRtcGR1bXAvcnRtcGR1bXAvZml4LXJhY2luZy1idWlsZC1pc3N1ZS5wYXRjaAppbmRleCBiYjNkOGIwLi42ZTExYzk3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3J0bXBkdW1wL3J0bXBkdW1wL2ZpeC1yYWNpbmctYnVpbGQtaXNzdWUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9ydG1wZHVtcC9ydG1wZHVtcC9maXgtcmFjaW5nLWJ1aWxkLWlzc3VlLnBhdGNoCkBAIC04LDExICs4LDExIEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvbGlicnRtcC9NYWtlZmlsZQogKysrIGdpdC9saWJydG1wL01ha2VmaWxlCi1AQCAtMTA3LDYgKzEwNyw3IEBAIGluc3RhbGxfYmFzZToJbGlicnRtcC5hIGxpYnJ0bXAucGMKK0BAIC0xMTUsNiArMTE1LDcgQEAgaW5zdGFsbF9iYXNlOglsaWJydG1wLmEgbGlicnRtcC5wYwogIAljcCBsaWJydG1wLjMgJChNQU5ESVIpL21hbjMKICAKLSBpbnN0YWxsX3NvOglsaWJydG1wLiQoU09fRVhUKQorIGluc3RhbGxfc286CWxpYnJ0bXAkKFNPX0VYVCkKICsJLW1rZGlyIC1wICQoU09ESVIpCi0gCWNwIGxpYnJ0bXAuJChTT19FWFQpICQoU09ESVIpCi0gCWNkICQoU09ESVIpOyBsbiAtc2YgbGlicnRtcC4kKFNPX0VYVCkgbGlicnRtcC4kKFNPWCkKLSAKKyAJY3AgbGlicnRtcCQoU09fRVhUKSAkKFNPRElSKQorIAkkKElOU1RBTExfSU1QTElCKQorIAljZCAkKFNPRElSKTsgbG4gLXNmIGxpYnJ0bXAkKFNPX0VYVCkgbGlicnRtcC4kKFNPWCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvcnRtcGR1bXAvcnRtcGR1bXBfMi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9ydG1wZHVtcC9ydG1wZHVtcF8yLjQuYmIKaW5kZXggYzU1MTNiMC4uYTcyYjBkNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9ydG1wZHVtcC9ydG1wZHVtcF8yLjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9ydG1wZHVtcC9ydG1wZHVtcF8yLjQuYmIKQEAgLTUsOSArNSw5IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCiAKLURFUEVORFMgPSAib3BlbnNzbCB6bGliIgorREVQRU5EUyA9ICJvcGVuc3NsMTAgemxpYiIKIAotU1JDUkVWID0gIjMxMjEzMjQwNDZlNGNhMTkzNGU3ZTI4MjkzZmM4MzI2NDc1ZDUwNTMiCitTUkNSRVYgPSAiZmE4NjQ2ZGFlYjE5ZGZkMTJjMTgxZjdkMTlkZTcwOGQ2MjM3MDRjMCIKIFNSQ19VUkkgPSAiIFwKICAgICBnaXQ6Ly9naXQuZmZtcGVnLm9yZy9ydG1wZHVtcCBcCiAgICAgZmlsZTovL2ZpeC1yYWNpbmctYnVpbGQtaXNzdWUucGF0Y2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3RpbnlhbHNhL3RpbnlhbHNhLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS90aW55YWxzYS90aW55YWxzYS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTdlNGM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS90aW55YWxzYS90aW55YWxzYS5iYgpAQCAtMCwwICsxLDI0IEBACitERVNDUklQVElPTiA9ICJUaW55QUxTQSBpcyBhIHNtYWxsIGxpYnJhcnkgdG8gaW50ZXJmYWNlIHdpdGggQUxTQSBpbiBcCit0aGUgTGludXgga2VybmVsLiBJdCBpcyBhIGxpZ2h0d2VpZ2h0IGFsdGVybmF0aXZlIHRvIGxpYmFzb3VuZC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGlueWFsc2EvdGlueWFsc2EiCitTRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWRiZGVmZTQwMGQ4OTRiNTEwYTlkZTE0ODEzMTgxZDBiIgorCitTUkNSRVYgPSAiNjdiOTIxMGQzNDRjMzRlOGQxYWEwY2ZlNjM4YWJjZTcxYzUyMjFjYSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90aW55YWxzYS90aW55YWxzYSIKK1BWID0gIjEuMS4xK2dpdCR7U1JDUFZ9IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKKyMgdGlueWFsc2EgaXMgYnVpbHQgYXMgYSBzdGF0aWMgbGlicmFyeS4gRW5hYmxlIFBJQyB0byBhdm9pZCByZWxvY2F0aW9uCisjIGVycm9ycyBsaWtlIHRoZXNlOgorIworIyAgICB1bnJlc29sdmFibGUgUl9BQVJDSDY0X0FEUl9QUkVMX1BHX0hJMjEgcmVsb2NhdGlvbiBhZ2FpbnN0IHN5bWJvbCBgc3RkZXJyQEBHTElCQ18yLjE3JworQ0ZMQUdTICs9ICIgLWZQSUMgLURQSUMgIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdGlueWFsc2EvdGlueWFsc2FfMS4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3RpbnlhbHNhL3RpbnlhbHNhXzEuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmI5NWRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdGlueWFsc2EvdGlueWFsc2FfMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaW55QUxTQSBpcyBhIHNtYWxsIGxpYnJhcnkgdG8gaW50ZXJmYWNlIHdpdGggQUxTQSBpbiBcCi10aGUgTGludXgga2VybmVsLiBJdCBpcyBhIGxpZ2h0d2VpZ2h0IGFsdGVybmF0aXZlIHRvIGxpYmFzb3VuZC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGlueWFsc2EvdGlueWFsc2EiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWRiZGVmZTQwMGQ4OTRiNTEwYTlkZTE0ODEzMTgxZDBiIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gImRmMTEwOTEwODZiNTZlNWZiNzE4ODdmMmZhMzIwZTFkMmZmZWZmNTgiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGlueWFsc2EvdGlueWFsc2EuZ2l0O3Byb3RvY29sPWh0dHBzOyIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlIENDPScke0NDfScgTEQ9JyR7Q0N9JyBBUj0nJHtBUn0nCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIFwKLSAgICAgICAgUFJFRklYPSIke3ByZWZpeH0iIERFU1RESVI9IiR7RH0iIElOQ0RJUj0iJHtpbmNsdWRlZGlyfS90aW55YWxzYSIgXAotICAgICAgICBMSUJESVI9IiR7bGliZGlyfSIgQklORElSPSIke2JpbmRpcn0iIE1BTkRJUj0iJHttYW5kaXJ9IgotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGMuaW5jCmluZGV4IDhlODJiM2IuLmYxM2MwZWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLmluYwpAQCAtNSw3ICs1LDcgQEAKIExJQ0VOU0UgPSAiR1BMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1ERVBFTkRTID0gImxpYmZyaWJpZGkgbGlidG9vbCBsaWJnY3J5cHQgbGliZ2NyeXB0LW5hdGl2ZSBcCitERVBFTkRTID0gImZyaWJpZGkgbGlidG9vbCBsaWJnY3J5cHQgbGliZ2NyeXB0LW5hdGl2ZSBcCiAgICBkYnVzIGRidXMtZ2xpYiBsaWJ4bWwyIGdudXRscyBcCiAgICB0cmVtb3IgZmFhZDIgZmZtcGVnIGZsYWMgZmx1aWRzeW50aCBhbHNhLWxpYiBcCiAgICBsdWEtbmF0aXZlIGx1YSBsaWJpZG4gXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92b3JiaXMtdG9vbHMvdm9yYmlzLXRvb2xzXzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92b3JiaXMtdG9vbHMvdm9yYmlzLXRvb2xzXzEuNC4wLmJiCmluZGV4IGU0M2NiNDAuLjhlOTkxNGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdm9yYmlzLXRvb2xzL3ZvcmJpcy10b29sc18xLjQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZvcmJpcy10b29scy92b3JiaXMtdG9vbHNfMS40LjAuYmIKQEAgLTgsNyArOCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCiAKLURFUEVORFMgPSAibGlib2dnIGxpYnZvcmJpcyBjdXJsIGxpYmFvIgorREVQRU5EUyA9ICJsaWJvZ2cgbGlidm9yYmlzIgogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueGlwaC5vcmcvcmVsZWFzZXMvdm9yYmlzLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9nZ2VuYy1GaXgtbGFyZ2UtYWxsb2NhLW9uLWJhZC1BSUZGLWlucHV0LnBhdGNoIFwKQEAgLTIwLDYgKzIwLDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImZsYWMiCitQQUNLQUdFQ09ORklHID8/PSAiZmxhYyBvZ2cxMjMiCiBQQUNLQUdFQ09ORklHW2ZsYWNdID0gIiwtLXdpdGhvdXQtZmxhYyxmbGFjLGxpYmZsYWMiCiBQQUNLQUdFQ09ORklHW3NwZWV4XSA9ICIsLS13aXRob3V0LXNwZWV4LHNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1tvZ2cxMjNdID0gIi0tZW5hYmxlLW9nZzEyMywtLWRpc2FibGUtb2dnMTIzLGxpYmFvIGN1cmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2dzdC1pbnN0cnVtZW50cy9nc3QtaW5zdHJ1bWVudHNfMC4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2dzdC1pbnN0cnVtZW50cy9nc3QtaW5zdHJ1bWVudHNfMC4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZDBjNTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtc3VwcG9ydC9nc3QtaW5zdHJ1bWVudHMvZ3N0LWluc3RydW1lbnRzXzAuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9maWxpbmcgdXRpbGl0aWVzIGZvciBHU3RyZWFtZXIgMS4wIHBpcGVsaW5lcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9raXJ1c2h5ay9nc3QtaW5zdHJ1bWVudHMiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiNGNlODA5MjYzNmVlNjU3MjE0OGI1ZmEwNDQwODA3MzRjZjVhNmI4ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9raXJ1c2h5ay9nc3QtaW5zdHJ1bWVudHMuZ2l0O3Byb3RvY29sPWh0dHBzOyIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qYSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKiIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtc3VwcG9ydC9nc3QtaW5zdHJ1bWVudHMvZ3N0LWluc3RydW1lbnRzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvZ3N0LWluc3RydW1lbnRzL2dzdC1pbnN0cnVtZW50c19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVmZmE5ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvZ3N0LWluc3RydW1lbnRzL2dzdC1pbnN0cnVtZW50c19naXQuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJQcm9maWxpbmcgdXRpbGl0aWVzIGZvciBHU3RyZWFtZXIgMS4wIHBpcGVsaW5lcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9raXJ1c2h5ay9nc3QtaW5zdHJ1bWVudHMiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiM2I4NjJlNTJlNWM1M2FkMTAyM2RjNjgwOGVmZmE0Y2I3NTU3MmM0YiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9raXJ1c2h5ay9nc3QtaW5zdHJ1bWVudHMuZ2l0O3Byb3RvY29sPWh0dHBzOyIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qYSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKiIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtc3VwcG9ydC9saWJzcnRwL2xpYnNydHBfMS41LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2xpYnNydHAvbGlic3J0cF8xLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU4YzY4Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2xpYnNydHAvbGlic3J0cF8xLjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYnJhcnkgaW1wbGVtZW50aW5nIFNlY3VyZSBSVFAgKFJGQyAzNzExKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jaXNjby9saWJzcnRwIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE1YmMxNmI5ZDJlMzA1OTc0ZGRlNDdlNzMzODgzNzE0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gImU4MDZhNjZiYWQzNWY0YjIxNWI3YTgyNWMyNGVmMGVjNGNjMTk1NjkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2lzY28vbGlic3J0cC5naXQ7cHJvdG9jb2w9aHR0cHM7IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVuYW1lLWNvbmZsaWN0aW5nLXZhcmlhYmxlLW1pcHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHJtX3VudXNlZF9iaW5kaXIgIgotCi1ybV91bnVzZWRfYmluZGlyKCkgewotICAgIHJtZGlyICR7RH0vJHtiaW5kaXJ9Ci19Ci0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2xpYnNydHAvbGlic3J0cF8xLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLXN1cHBvcnQvbGlic3J0cC9saWJzcnRwXzEuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYWI1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1zdXBwb3J0L2xpYnNydHAvbGlic3J0cF8xLjYuMC5iYgpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJsaWJyYXJ5IGltcGxlbWVudGluZyBTZWN1cmUgUlRQIChSRkMgMzcxMSkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2lzY28vbGlic3J0cCIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNWJjMTZiOWQyZTMwNTk3NGRkZTQ3ZTczMzg4MzcxNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICIyYjA5MWE0ZmIyMWM5YjA2ZmM1ZDRiNTc2M2JkYWVjOTc1NDJmY2Q3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Npc2NvL2xpYnNydHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0xXzZfeF90aHJvdHRsZTsgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW5hbWUtY29uZmxpY3RpbmctdmFyaWFibGUtbWlwcy5wYXRjaCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9NQUlOVEFJTkVSUwppbmRleCBiYmIyZDFiLi45NDVlZTg2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvTUFJTlRBSU5FUlMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL01BSU5UQUlORVJTCkBAIC0yLDM0ICsyLDEyIEBACiAKIFBsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCBtZXRhLW5ldHdvcmtpbmcgdG8gdGhlIE9wZW5FbWJlZGRlZAogZGV2ZWxvcG1lbnQgbWFpbGluZyBsaXN0IChvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZykgd2l0aAotJ1ttZXRhLW5ldHdvcmtpbmddJyBpbiB0aGUgc3ViamVjdC4KKydbbWV0YS1uZXR3b3JraW5nXVt0aHVkXScgaW4gdGhlIHN1YmplY3QuCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKIAogICAgZ2l0IHNlbmQtZW1haWwgLTEgLU0gXAogICAgICAgICAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIFwKLSAgICAgICAgLS1zdWJqZWN0LXByZWZpeD1tZXRhLW5ldHdvcmtpbmddW1BBVENICisgICAgICAgIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1uZXR3b3JraW5nXVt0aHVkXVtQQVRDSAogCi1Zb3UgbWF5IGFsc28gY29udGFjdCB0aGUgbWFpbnRhaW5lcnMgZGlyZWN0bHkuCi0KLURlc2NyaXB0aW9ucyBvZiBzZWN0aW9uIGVudHJpZXM6Ci0KLSAgICAgICAgTTogTWFpbCBwYXRjaGVzIHRvOiBGdWxsTmFtZSA8YWRkcmVzc0Bkb21haW4+Ci0gICAgICAgIEY6IEZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aXRoIHdpbGRjYXJkIHBhdHRlcm5zLgotICAgICAgICAgICBBIHRyYWlsaW5nIHNsYXNoIGluY2x1ZGVzIGFsbCBmaWxlcyBhbmQgc3ViZGlyZWN0b3J5IGZpbGVzLgotICAgICAgICAgICBGOiByZWNpcGVzLWRldnRvb2xzLyAgICBhbGwgZmlsZXMgaW4gYW5kIGJlbG93IHJlY2lwZXMtZGV2dG9vbHMKLSAgICAgICAgICAgRjogcmVjaXBlcy1zZWxpbnV4LyogICAgYWxsIGZpbGVzIGluIHJlY2lwZXMtc2VsaW51eCwgYnV0IG5vdCBiZWxvdwotICAgICAgICAgICBPbmUgcGF0dGVybiBwZXIgbGluZS4gIE11bHRpcGxlIEY6IGxpbmVzIGFjY2VwdGFibGUuCi0KLVBsZWFzZSBrZWVwIHRoaXMgbGlzdCBpbiBhbHBoYWJldGljYWwgb3JkZXIuCi0KLU1haW50YWluZXJzIExpc3QgKHRyeSB0byBsb29rIGZvciBtb3N0IHByZWNpc2UgYXJlYXMgZmlyc3QpCi0KLUNPTU1PTgotTTogICAgICBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+Ci1GOiAgICAgIGNvbmYKLUY6ICAgICAgcmVjaXBlcy0qCi0KLU5FVEtJVAotTTogICAgICBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotRjogICAgICByZWNpcGVzLW5ldGtpdAorVGh1ZCBNYWludGFpbmVyOiAgICAgIEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL1JFQURNRQppbmRleCBlMWJhMjdkLi43YTRhY2E0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9SRUFETUUKQEAgLTE4LDE5ICsxOCwxOSBAQAogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCiBVUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29wZW5lbWJlZGRlZC1jb3JlLmdpdAotYnJhbmNoOiBtYXN0ZXIKK2JyYW5jaDogdGh1ZAogcmV2aXNpb246IEhFQUQKIAogRm9yIHNvbWUgcmVjaXBlcywgdGhlIG1ldGEtb2UgbGF5ZXIgaXMgcmVxdWlyZWQ6CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vcGVuZW1iZWRkZWQuZ2l0CiBzdWJkaXJlY3Rvcnk6IG1ldGEtb2UKLWJyYW5jaDogbWFzdGVyCiticmFuY2g6IHRodWQKIHJldmlzaW9uOiBIRUFECiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vcGVuZW1iZWRkZWQuZ2l0CiBzdWJkaXJlY3Rvcnk6IG1ldGEtcHl0aG9uCi1icmFuY2g6IG1hc3RlcgorYnJhbmNoOiB0aHVkCiByZXZpc2lvbjogSEVBRAogCiBNYWludGVuYW5jZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NsYXNzZXMva2VybmVsX3dpcmVsZXNzX3JlZ2RiLmJiY2xhc3MgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY2xhc3Nlcy9rZXJuZWxfd2lyZWxlc3NfcmVnZGIuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjM4MTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NsYXNzZXMva2VybmVsX3dpcmVsZXNzX3JlZ2RiLmJiY2xhc3MKQEAgLTAsMCArMSwyMCBAQAorIyBMaW51eCBrZXJuZWxzIGJlZm9yZSB2NC4xNSwgYWxsb3dlZCB0byBiZSBjb21waWxlZCB3aXRoIHN0YXRpYworIyByZWd1bGF0b3J5IGRhdGFiYXNlIGlmIGl0IHdhcyBwdXQgdW5kZXIgbmV0L3dpcmVsZXNzL2RiLnR4dC4KKyMKKyMgVGhpcyBjbGFzcyBjb3BpZXMgdGhlIHJlZ3VsYXRvcnkgcGxhaW50ZXh0IGRhdGFiYXNlIHRvIGtlcm5lbCBzb3VyY2VzIGJlZm9yZQorIyBjb21waWxpbmcuCisjCisjIFVzYWdlOgorIyAxLiBUaGUgY2xhc3Mgc2hvdWxkIGJlIGluaGVyaXRlZCBieSBrZXJuZWwgcmVjaXBlIChlLmcuIGluCisjICAgIGxpbnV4LXlvY3RvXyUuYmJhcHBlbmQpLgorIyAyLiBGb3IgTGludXgga2VybmVscyB1cCB0byB2NC4xNCwgYnVpbGQga2VybmVsIHdpdGggQ09ORklHX0VYUEVSVCBhbmQKKyMgICAgQ09ORklHX0NGRzgwMjExX0lOVEVSTkFMX1JFR0RCLgorCitERVBFTkRTICs9ICJ3aXJlbGVzcy1yZWdkYi1uYXRpdmUiCisKK1NSQ1RSRUVDT1ZFUkVEVEFTS1MgKz0gImRvX2tlcm5lbF9hZGRfcmVnZGIiCitkb19rZXJuZWxfYWRkX3JlZ2RiKCkgeworICAgIGNwICR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9jcmRhL2RiLnR4dCAke1N9L25ldC93aXJlbGVzcy9kYi50eHQKK30KK2RvX2tlcm5lbF9hZGRfcmVnZGJbZGlyc10gPSAiJHtTfSIKK2FkZHRhc2sga2VybmVsX2FkZF9yZWdkYiBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29uZmlndXJlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgppbmRleCBlNTk0YjdiLi5kMzZmZjViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKQEAgLTE3LDcgKzE3LDcgQEAKIExBWUVSREVQRU5EU19uZXR3b3JraW5nLWxheWVyICs9ICJvcGVuZW1iZWRkZWQtbGF5ZXIiCiBMQVlFUkRFUEVORFNfbmV0d29ya2luZy1sYXllciArPSAibWV0YS1weXRob24iCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9uZXR3b3JraW5nLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfbmV0d29ya2luZy1sYXllciA9ICJ0aHVkIgogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvZmlsZXMvd2FmLWNyb3NzLWFuc3dlcnMvY3Jvc3MtYW5zd2Vycy1hcm1lYi50eHQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvZmlsZXMvd2FmLWNyb3NzLWFuc3dlcnMvY3Jvc3MtYW5zd2Vycy1hcm1lYi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVjZDk5OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9maWxlcy93YWYtY3Jvc3MtYW5zd2Vycy9jcm9zcy1hbnN3ZXJzLWFybWViLnR4dApAQCAtMCwwICsxLDQwIEBACitDaGVja2luZyB1bmFtZSBzeXNuYW1lIHR5cGU6ICJMaW51eCIKK0NoZWNraW5nIHVuYW1lIHZlcnNpb24gdHlwZTogIiMgV2VkIE1heSAyMCAxMDozNDozOSBVVEMgMjAxNSIKK0NoZWNraW5nIHNpbXBsZSBDIHByb2dyYW06ICJoZWxsbyB3b3JsZCIKK3JwYXRoIGxpYnJhcnkgc3VwcG9ydDogT0sKKy1XbCwtLXZlcnNpb24tc2NyaXB0IHN1cHBvcnQ6IE9LCitDaGVja2luZyBnZXRjb25mIExGU19DRkxBR1M6IE5PCitDaGVja2luZyBjb3JyZWN0IGJlaGF2aW9yIG9mIHN0cnRvbGw6IE5PCitDaGVja2luZyBmb3Igd29ya2luZyBzdHJwdGltZTogT0sKK0NoZWNraW5nIGZvciBDOTkgdnNucHJpbnRmOiAiMSIKK0NoZWNraW5nIGZvciBIQVZFX1NIQVJFRF9NTUFQOiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfTVJFTUFQOiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfU0VDVVJFX01LU1RFTVA6IE9LCitDaGVja2luZyBmb3IgSEFWRV9JRkFDRV9HRVRJRkFERFJTOiBOTworQ2hlY2tpbmcgZm9yIEhBVkVfSUZBQ0VfSUZDT05GOiBOTworQ2hlY2tpbmcgZm9yIEhBVkVfSUZBQ0VfSUZSRVE6IE5PCitDaGVja2luZyBmb3IgbGFyZ2UgZmlsZSBzdXBwb3J0IHdpdGhvdXQgYWRkaXRpb25hbCBmbGFnczogTk8KK0NoZWNraW5nIGZvciAtRF9GSUxFX09GRlNFVF9CSVRTPTY0OiBPSworQ2hlY2tpbmcgZm9yIEhBVkVfSU5DT0hFUkVOVF9NTUFQOiBOTworQ2hlY2tpbmcgdmFsdWUgb2YgTlNJRzogIjY1IgorQ2hlY2tpbmcgdmFsdWUgb2YgX05TSUc6ICI2NSIKK0NoZWNraW5nIHZhbHVlIG9mIFNJR1JUTUFYOiAiNjQiCitDaGVja2luZyB2YWx1ZSBvZiBTSUdSVE1JTjogIjM0IgorQ2hlY2tpbmcgd2hldGhlciB0aGUgV1JGSUxFIC1rZXl0YWIgaXMgc3VwcG9ydGVkOiBPSworQ2hlY2tpbmcgZm9yIGtlcm5lbCBjaGFuZ2Ugbm90aWZ5IHN1cHBvcnQ6IE9LCitDaGVja2luZyBmb3IgTGludXgga2VybmVsIG9wbG9ja3M6IE9LCitDaGVja2luZyBmb3Iga2VybmVsIHNoYXJlIG1vZGVzOiBPSworQ2hlY2tpbmcgd2hldGhlciBQT1NJWCBjYXBhYmlsaXRpZXMgYXJlIGF2YWlsYWJsZTogT0sKK0NoZWNraW5nIGlmIGNhbiB3ZSBjb252ZXJ0IGZyb20gQ1A4NTAgdG8gVUNTLTJMRTogT0sKK0NoZWNraW5nIGlmIGNhbiB3ZSBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTJMRTogT0sKK3Zmc19maWxlaWQgY2hlY2tpbmcgZm9yIHN0YXRmcygpIGFuZCBzdHJ1Y3Qgc3RhdGZzLmZfZnNpZDogT0sKK0NoZWNraW5nIHdoZXRoZXIgd2UgY2FuIHVzZSBMaW51eCB0aHJlYWQtc3BlY2lmaWMgY3JlZGVudGlhbHMgd2l0aCAzMi1iaXQgc3lzdGVtIGNhbGxzOiBPSworQ2hlY2tpbmcgd2hldGhlciBmY250bCBsb2NraW5nIGlzIGF2YWlsYWJsZTogT0sKK0NoZWNraW5nIGZvciB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgJ3RpbWVfdCcgdHlwZTogTk8KK0NoZWNraW5nIHdoZXRoZXIgdGhlIHJlYWxwYXRoIGZ1bmN0aW9uIGFsbG93cyBhIE5VTEwgYXJndW1lbnQ6IE9LCitDaGVja2luZyBmb3IgZnRydW5jYXRlIGV4dGVuZDogT0sKK2dldGN3ZCB0YWtlcyBhIE5VTEwgYXJndW1lbnQ6IE9LCitDaGVja2luZyBmb3Igc21hbGwgb2ZmX3Q6IE5PCitDaGVja2luZyB3aGV0aGVyIGJsa2NudF90IGlzIDMyIGJpdDogTk8KK0NoZWNraW5nIHdoZXRoZXIgYmxrY250X3QgaXMgNjQgYml0OiBPSworQ2hlY2tpbmcgd2hldGhlciBmY250bCBsb2NrIHN1cHBvcnRzIG9wZW4gZmlsZSBkZXNjcmlwdGlvbiBsb2NrczogT0sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlbWFuL2JsdWVtYW4vMDAwMS1TZWFyY2gtZm9yLWN5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZW1hbi9ibHVlbWFuLzAwMDEtU2VhcmNoLWZvci1jeXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OTE3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZW1hbi9ibHVlbWFuLzAwMDEtU2VhcmNoLWZvci1jeXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNzdkYjg5MmNkZWUyNjVlOTcxMjcwYzA2Y2ExZmZiYWVlYTY0NDlhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI2IEp1biAyMDE4IDAwOjI3OjQwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFNlYXJjaCBmb3IgY3l0aG9uMworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNzI3MDg5ZDEuLjZiNTY1Y2RjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01OCw3ICs1OCw3IEBAIEFDX1NVQlNUKFtQWUdPQkpFQ1RfTElCU10pCisgCisgQUNfQVJHX1ZBUihbQ1lUSE9ORVhFQ10sIFtDeXRob24gY29tcGlsZXJdKQorIGlmIHRlc3QgIngkQ1lUSE9ORVhFQyIgPSAieCI7IHRoZW4KKy0gICBBQ19QQVRIX1BST0coW0NZVEhPTkVYRUNdLFtjeXRob25dKQorKyAgIEFDX1BBVEhfUFJPRyhbQ1lUSE9ORVhFQ10sW2N5dGhvbjNdKQorIGZpCisgQUNfU1VCU1QoW0NZVEhPTkVYRUNdKQorIEFDX01TR19DSEVDS0lORyhbZm9yIGN5dGhvbiBleGVjdXRhYmxlXSkKKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlbWFuL2JsdWVtYW5fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWVtYW4vYmx1ZW1hbl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3ZGI3OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlbWFuL2JsdWVtYW5fZ2l0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIkJsdWVtYW4gaXMgYSBHVEsrIEJsdWV0b290aCBNYW5hZ2VyIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gImJsdWV6NSBweXRob24zLXB5Z29iamVjdCBweXRob24zLWN5dGhvbi1uYXRpdmUgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3NldHRpbmdzIHB5dGhvbjNuYXRpdmUgZ3RrLWljb24tY2FjaGUKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vYmx1ZW1hbi1wcm9qZWN0L2JsdWVtYW4uZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS1TZWFyY2gtZm9yLWN5dGhvbjMucGF0Y2ggXAorIgorU1JDUkVWID0gImM0YTAzNDE3ZTgxZTIxNTQzZDQ1NjhlOGU3ZjdkZTMwNzU4MmViNTAiCitQViA9ICIyLjAuNStnaXQke1NSQ1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMtY2hlY2sgXAorICAgIC0tZGlzYWJsZS1zY2hlbWFzLWNvbXBpbGUgXAorIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LW1lY2hhbmlzbS5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgorCitSUkVDT01FTkRTXyR7UE59ICs9ICJhZHdhaXRhLWljb24tdGhlbWUiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBweXRob24zLWRidXMgXAorICAgIHBhY2thZ2Vncm91cC10b29scy1ibHVldG9vdGggXAorIgorCitQQUNLQUdFQ09ORklHW3RodW5hcl0gPSAiLS1lbmFibGUtdGh1bmFyLXNlbmR0bywtLWRpc2FibGUtdGh1bmFyLXNlbmR0bywsdGh1bmFyIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtkYXRhZGlyfS9UaHVuYXIgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAke2V4ZWNfcHJlZml4fSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9fYmx1ZW1hbi5hIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NpdmV0d2ViL2NpdmV0d2ViLzAwMDEtVW5pdHRlc3QtTGluay1saWJydC1hbmQtbGlibS11c2luZy1sLW9wdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYi8wMDAxLVVuaXR0ZXN0LUxpbmstbGlicnQtYW5kLWxpYm0tdXNpbmctbC1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVjYmMxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYi8wMDAxLVVuaXR0ZXN0LUxpbmstbGlicnQtYW5kLWxpYm0tdXNpbmctbC1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAyMWU5YTRiYjIxNDY0OGZmZDQzYzY2YjUzNWZiZjA5NmJmY2M5ZjRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjQgSnVuIDIwMTggMDA6MDQ6MzcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVW5pdHRlc3Q6IExpbmsgbGlicnQgYW5kIGxpYm0gdXNpbmcgLWwgb3B0aW9uCisKK2NtYWtlJ3J5IGZvcmNlcyBmdWxsIHBhdGggdG8gLnNvIGZpbGVzIHdoZW4gZm91bmQgdXNpbmcKK2ZpbmRfcGFja2FnZSBhbmQgc2luY2Ugd2UgaGF2ZSBwcm9wZXIgc3lzcm9vdGVkIHRvb2xjaGFpbgorLWxtIGFuZCAtbHJ0IGlzIGFsbCB3ZSBuZWVkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ3Jvc3MgY29tcGlsZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHVuaXR0ZXN0L0NNYWtlTGlzdHMudHh0IHwgMTAgKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91bml0dGVzdC9DTWFrZUxpc3RzLnR4dCBiL3VuaXR0ZXN0L0NNYWtlTGlzdHMudHh0CitpbmRleCBjNGNkZjIyOS4uZTFiNjNjYWYgMTAwNjQ0CistLS0gYS91bml0dGVzdC9DTWFrZUxpc3RzLnR4dAorKysrIGIvdW5pdHRlc3QvQ01ha2VMaXN0cy50eHQKK0BAIC01NywxNCArNTcsOCBAQCBlbHNlaWYgKFdJTjMyKQorIGVsc2UoKQorICAgc2V0KENIRUNLX0xJQlJBUklFUyAiJHtDSEVDS19JTlNUQUxMX0RJUn0vbGliL2xpYmNoZWNrLmEiKQorIGVuZGlmKCkKKy1maW5kX3BhY2thZ2UoTGliTSkKKy1pZiAoTElCTV9GT1VORCkKKy0gIHNldChDSEVDS19MSUJSQVJJRVMgIiR7Q0hFQ0tfTElCUkFSSUVTfTtMSUJNOjpMSUJNIikKKy1lbmRpZigpCistZmluZF9wYWNrYWdlKExpYlJ0KQorLWlmIChMSUJSVF9GT1VORCkKKy0gIHNldChDSEVDS19MSUJSQVJJRVMgIiR7Q0hFQ0tfTElCUkFSSUVTfTtMSUJSVDo6TElCUlQiKQorLWVuZGlmKCkKKytzZXQoQ0hFQ0tfTElCUkFSSUVTICIke0NIRUNLX0xJQlJBUklFU307LWxtIikKKytzZXQoQ0hFQ0tfTElCUkFSSUVTICIke0NIRUNLX0xJQlJBUklFU307LWxydCIpCisgCisgIyBCdWlsZCB0aGUgQyB1bml0IHRlc3RzCisgYWRkX2xpYnJhcnkoc2hhcmVkLWMtdW5pdC10ZXN0cyBTVEFUSUMgc2hhcmVkLmMpCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY2l2ZXR3ZWIvY2l2ZXR3ZWIvMDAwMS11bmRlZmluZS1tYWNyby1iZWZvcmUtcmVkZWZpbmluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYi8wMDAxLXVuZGVmaW5lLW1hY3JvLWJlZm9yZS1yZWRlZmluaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NTMzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY2l2ZXR3ZWIvY2l2ZXR3ZWIvMDAwMS11bmRlZmluZS1tYWNyby1iZWZvcmUtcmVkZWZpbmluZy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDU5ZjY1MjM1YTdhNjkwZjUwZDE2ODZlOTk3NzkwOGMwNTM2OTdkOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBdWcgMjAxOCAyMjo1OToxMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1bmRlZmluZSBtYWNybyBiZWZvcmUgcmVkZWZpbmluZworCitGaXhlcworc3JjL21haW4uYzo4OTo5OiBlcnJvcjogJ3ByaW50ZicgbWFjcm8gcmVkZWZpbmVkIFstV2Vycm9yLC1XbWFjcm8tcmVkZWZpbmVkXQorCitVcHN0cmVhbS1TdGF0czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vY2l2ZXR3ZWIvY2l2ZXR3ZWIvcHVsbC82NDldCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21haW4uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21haW4uYyBiL3NyYy9tYWluLmMKK2luZGV4IGJiY2IwYWVjLi4wMTE5MWEzYyAxMDA2NDQKKy0tLSBhL3NyYy9tYWluLmMKKysrKyBiL3NyYy9tYWluLmMKK0BAIC04Niw2ICs4Niw3IEBACisgCisgI2luY2x1ZGUgImNpdmV0d2ViLmgiCisgCisrI3VuZGVmIHByaW50ZgorICNkZWZpbmUgcHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgCURPX05PVF9VU0VfVEhJU19GVU5DVElPTl9fVVNFX2ZwcmludGYgLyogUmVxdWlyZWQgZm9yIHVuaXQgdGVzdGluZyAqLworIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NpdmV0d2ViL2NpdmV0d2ViX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY4MWY3ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJDaXZldHdlYiBlbWJlZGRlZCB3ZWIgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NpdmV0d2ViL2NpdmV0d2ViIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTZmMjhmZGNiYTBkZGE3MzVlZWQ2MmJhYzZhMzk3NTYyIgorCitTUkNSRVYgPSAiMTlmMzFiYThkZDg0NDNlODZjNzAyOGE0YjRjMzdmNGIyOTlhYTY4YyIKK1BWID0gIjEuMTArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2l2ZXR3ZWIvY2l2ZXR3ZWIuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5pdHRlc3QtTGluay1saWJydC1hbmQtbGlibS11c2luZy1sLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuZGVmaW5lLW1hY3JvLWJlZm9yZS1yZWRlZmluaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIGNpdmV0d2ViIHN1cHBvcnRzIGJ1aWxkaW5nIHdpdGggbWFrZSBvciBjbWFrZSAoYWx0aG91Z2ggY21ha2UgbGFja3MgZmV3IGZlYXR1cmVzKQoraW5oZXJpdCBjbWFrZQorCisjIERpc2FibGUgTHVhIGFuZCBEdWt0YXBlIGJlY2F1c2UgdGhleSBkbyBub3QgY29tcGlsZSBmcm9tIENNYWtlIChhcyBvZiB2MS44LCB2MS45IGFuZCB2MS4xMCkuCisjIERpc2FibGUgQVNBTiBhcyBpdCBpcyBpbmNsdWRlZCBvbmx5IGluIERlYnVnIGJ1aWxkLgorRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EQlVJTERfU0hBUkVEX0xJQlM9T04gXAorICAgIC1EQ0lWRVRXRUJfRU5BQkxFX0RVS1RBUEU9T0ZGIFwKKyAgICAtRENJVkVUV0VCX0VOQUJMRV9MVUE9T0ZGIFwKKyAgICAtRENJVkVUV0VCX0VOQUJMRV9BU0FOPU9GRiBcCisgICAgLURDSVZFVFdFQl9CVUlMRF9URVNUSU5HPU9GRiBcCisiCisKKyMgQnVpbGRpbmcgd2l0aCBuaW5qYSBmYWlscyBvbiBtaXNzaW5nIHRoaXJkX3BhcnR5L2xpYi9saWJjaGVjay5hICh3aGljaAorIyBzaG91bGQgY29tZSBmcm9tIGV4dGVybmFsIENNYWtlIHByb2plY3QpCitPRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNhY2hpbmcgaXB2NiBzZXJ2ZXIgc3NsIHdlYnNvY2tldHMiCitQQUNLQUdFQ09ORklHW2NhY2hpbmddID0gIi1EQ0lWRVRXRUJfRElTQUJMRV9DQUNISU5HPU9GRiwtRENJVkVUV0VCX0RJU0FCTEVfQ0FDSElORz1PTiwiCitQQUNLQUdFQ09ORklHW2NnaV0gPSAiLURDSVZFVFdFQl9ESVNBQkxFX0NHST1PRkYsLURDSVZFVFdFQl9ESVNBQkxFX0NHST1PTiwiCitQQUNLQUdFQ09ORklHW2NwcF0gPSAiLURDSVZFVFdFQl9FTkFCTEVfQ1hYPU9OLC1EQ0lWRVRXRUJfRU5BQkxFX0NYWD1PRkYsIgorUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLURDSVZFVFdFQl9FTkFCTEVfTUVNT1JZX0RFQlVHR0lORz1PTiwtRENJVkVUV0VCX0VOQUJMRV9NRU1PUllfREVCVUdHSU5HPU9GRiwiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi1EQ0lWRVRXRUJfRU5BQkxFX0lQVjY9T04sLURDSVZFVFdFQl9FTkFCTEVfSVBWNj1PRkYsIgorUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1EQ0lWRVRXRUJfSU5TVEFMTF9FWEVDVVRBQkxFPU9OLC1EQ0lWRVRXRUJfSU5TVEFMTF9FWEVDVVRBQkxFPU9GRiwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLURDSVZFVFdFQl9FTkFCTEVfU1NMPU9OIC1EQ0lWRVRXRUJfU1NMX09QRU5TU0xfQVBJXzFfMT1PRkYgLURDSVZFVFdFQl9FTkFCTEVfU1NMX0RZTkFNSUNfTE9BRElORz1PRkYsLURDSVZFVFdFQl9FTkFCTEVfU1NMPU9GRixvcGVuc3NsICg9MS4wLjIlKSwiCitQQUNLQUdFQ09ORklHW3dlYnNvY2tldHNdID0gIi1EQ0lWRVRXRUJfRU5BQkxFX1dFQlNPQ0tFVFM9T04sLURDSVZFVFdFQl9FTkFCTEVfV0VCU09DS0VUUz1PRkYsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYgppbmRleCA4MmEyOTdiLi5kNWQyYWI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhXzMuMTguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYV8zLjE4LmJiCkBAIC00LDcgKzQsMTAgQEAKIExJQ0VOU0UgPSAiY29weWxlZnQtbmV4dC0wLjMuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvcHlsZWZ0LW5leHQtMC4zLjA7bWQ1PTg3NDNhMmMzNTkwMzdkNGQzMjlhMzFlNzllYWJlZmZlIgogCi1ERVBFTkRTID0gInB5dGhvbi1tMmNyeXB0by1uYXRpdmUgcHl0aG9uLXR5cGluZy1uYXRpdmUgcHl0aG9uLW5hdGl2ZSBsaWJnY3J5cHQgbGlibmwgb3BlbnNzbCIKK0RFUEVORFMgPSAicHl0aG9uLW0yY3J5cHRvLW5hdGl2ZSBweXRob24tdHlwaW5nLW5hdGl2ZSBweXRob24tbmF0aXZlIGxpYm5sIFwKKyAgICAgICAgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIkRFRkFVTFRfQ1JZUFQiLCAiZ2NyeXB0IiwgImxpYmdjcnlwdCIsICIiLCBkKX0gXAorICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgiREVGQVVMVF9DUllQVCIsICJvcGVuc3NsIiwgIm9wZW5zc2wxMCIsICIiLCBkKX0gXAorICAgICAgICAgICIKIAogU1JDX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vZG8tbm90LXJ1bi1sZGNvbmZpZy1pZi1kZXN0ZGlyLWlzLXNldC5wYXRjaCBcCkBAIC0xOCwxMCArMjEsMTUgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwNDMxZmVmMzA2N2JmNTAzZGZiNDY0MDY5ZjA2MTYzYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0M2ZjYjk2NzlmOGI3NWVkODdhZDEwOTQ0YTUwNjI5MmRlZjEzZTRhZmIxOTRhZmE3YWE5MjFiMDFlOGVjZGJmIgogCi1pbmhlcml0IHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCitpbmhlcml0IHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHNpdGVpbmZvCisKKyMgImdjcnlwdCIgb3IgIm9wZW5zc2wiCitERUZBVUxUX0NSWVBUID8/PSAiZ2NyeXB0IgorCiAjIFJlY3Vyc2l2ZSBtYWtlIHByb2JsZW0KLUVYVFJBX09FTUFLRSA9ICJNQUtFRkxBR1M9IERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9L2NyZGEgTERMSUJSRUc9Jy1XbCwtcnBhdGgsJHtsaWJkaXJ9L2NyZGEgLWxyZWcnIgotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgVVNFX09QRU5TU0w9MSIKK0VYVFJBX09FTUFLRSA9ICJNQUtFRkxBR1M9IERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9L2NyZGEgTERMSUJSRUc9Jy1XbCwtcnBhdGgsJHtsaWJkaXJ9L2NyZGEgLWxyZWcnIFwKKyAgICAgICAgICAgICAgICBVREVWX1JVTEVfRElSPSR7bm9uYXJjaF9saWJkaXJ9L3VkZXYvcnVsZXMuZC8iCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAke0BvZS51dGlscy5jb25kaXRpb25hbCgiREVGQVVMVF9DUllQVCIsICJvcGVuc3NsIiwgIlVTRV9PUEVOU1NMPTEiLCAiIiwgZCl9IgogVEFSR0VUX0JJVFMgPSAiJHtTSVRFSU5GT19CSVRTfSIKIGV4cG9ydCBUQVJHRVRfQklUUwogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGFxL2RhcV8yLjAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kYXEvZGFxXzIuMC42LmJiCmluZGV4IGVjMzUxNzUuLjQyZmZiMTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kYXEvZGFxXzIuMC42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kYXEvZGFxXzIuMC42LmJiCkBAIC02LDcgKzYsNyBAQAogCiBQQVJBTExFTF9NQUtFID0gIiIKIAotREVQRU5EUyA9ICJsaWJwY2FwIGxpYnBjcmUgbGliZG5ldCIKK0RFUEVORFMgPSAibGlicGNhcCBsaWJwY3JlIGxpYmRuZXQgYmlzb24tbmF0aXZlIgogCiBTUkNfVVJJID0gImh0dHA6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjL2RhcS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ydW4tdGVzdC1wcm9ncmFtLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy8wMDAxLWZyZWVyYWRpdXMtY29ycmVjdC12ZXJzaW9uLW51bWJlci1vZi1saWJzc2wtZGVmZWN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1mcmVlcmFkaXVzLWNvcnJlY3QtdmVyc2lvbi1udW1iZXItb2YtbGlic3NsLWRlZmVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTFmNWIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1mcmVlcmFkaXVzLWNvcnJlY3QtdmVyc2lvbi1udW1iZXItb2YtbGlic3NsLWRlZmVjdC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGZlY2Y5NzRiNjNmNzJlZWIxMmQzYjQzNTIyZTk0OGNhMmJjNzA0ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMSBPY3QgMjAxOCAwOTo0NTo1MiArMDgwMAorU3ViamVjdDogW1BBVENIXSBmcmVlcmFkaXVzOiBjb3JyZWN0IHZlcnNpb24gbnVtYmVyIG9mIGxpYnNzbCBkZWZlY3QKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIKKyAgICAgICAgICAgICAgICAgL2NvbW1pdC9hZDAzOTM0N2JlY2E0ZGVkMjk3ODEzYTFkYTZlYWJiNjFmY2YyZGRkXQorCit1cHN0cmVhbSBoYXZlIHJlZmFjdG9yZWQgdGhpcyBwYXJ0IGNvZGUgaW50bworc3JjL2xpYi90bHMvYmFzZS5jLCBhbmQgcHJvYmxlbSBhbHNvIGhhdmUgZml4ZWQKK2J5IGNvbW1pdCBhZDAzOTM0N2JlY2EKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9tYWluL3Rscy5jIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFpbi90bHMuYyBiL3NyYy9tYWluL3Rscy5jCitpbmRleCBhY2JmZTc5Li5kOWM5MWYxIDEwMDY0NAorLS0tIGEvc3JjL21haW4vdGxzLmMKKysrKyBiL3NyYy9tYWluL3Rscy5jCitAQCAtNzIsMTUgKzcyLDE1IEBAIHR5cGVkZWYgc3RydWN0IGxpYnNzbF9kZWZlY3QgeworIHN0YXRpYyBsaWJzc2xfZGVmZWN0X3QgbGlic3NsX2RlZmVjdHNbXSA9CisgeworIAl7CistCQkubG93CQk9IDB4MDEwMTAxMDFmLAkJLyogMS4xLjBhICovCistCQkuaGlnaAkJPSAweDAxMDEwMTAxZiwJCS8qIDEuMS4wYSAqLworKwkJLmxvdwkJPSAweDAxMDEwMDAxZiwJCS8qIDEuMS4wYSAqLworKwkJLmhpZ2gJCT0gMHgwMTAxMDAwMWYsCQkvKiAxLjEuMGEgKi8KKyAJCS5pZAkJPSAiQ1ZFLTIwMTYtNjMwOSIsCisgCQkubmFtZQkJPSAiT0NTUCBzdGF0dXMgcmVxdWVzdCBleHRlbnNpb24iLAorIAkJLmNvbW1lbnQJPSAiRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL25ld3Mvc2VjYWR2LzIwMTYwOTI2LnR4dCIKKyAJfSwKKyAJeworLQkJLmxvdwkJPSAweDAxMDEwMTAwZiwJCS8qIDEuMS4wICAqLworLQkJLmhpZ2gJCT0gMHgwMTAxMDEwMGYsCQkvKiAxLjEuMCAgKi8KKysJCS5sb3cJCT0gMHgwMTAxMDAwMDBmLAkJLyogMS4xLjAgICovCisrCQkuaGlnaAkJPSAweDAxMDEwMDAwZiwJCS8qIDEuMS4wICAqLworIAkJLmlkCQk9ICJDVkUtMjAxNi02MzA0IiwKKyAJCS5uYW1lCQk9ICJPQ1NQIHN0YXR1cyByZXF1ZXN0IGV4dGVuc2lvbiIsCisgCQkuY29tbWVudAk9ICJGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy9zZWNhZHYvMjAxNjA5MjIudHh0IgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCmluZGV4IDMwNDk3YTYuLjM4ZTdjMzYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0xLDMgKzEsNiBAQAorRnJvbSAwNzgwYjcwNTNmYjBkMzNkNzIxYWE3MGFiMmVjZDc1Mjk5ZTViYTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTU6MDM6MzkgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhbGxvdyBjcm9zcy1jb21waWxhdGlvbgogCiBUaGUgY2hlY2tpbmcgT3BlblNTTCBsaWJyYXJ5IGFuZCBoZWFkZXIgdmVyc2lvbiBjb25zaXN0ZW5jeSB3aWxsCkBAIC04LDE3ICsxMSwyMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCit1cGRhdGUgdG8gbmV3IHZlcnNpb24gMy4wLjE3IHRvIGZpeCBwYXRjaCB3YXJuaW5nCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMgYi9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMKLWluZGV4IGViNDM1MzQuLjExM2EwNzkgMTAwNjQ0CitpbmRleCBlZmM5ZjI5Li45OGE5N2U0IDEwMDY0NAogLS0tIGEvc3JjL21vZHVsZXMvcmxtX2tyYjUvY29uZmlndXJlLmFjCiArKysgYi9zcmMvbW9kdWxlcy9ybG1fa3JiNS9jb25maWd1cmUuYWMKIEBAIC0xMzcsNyArMTM3LDggQEAgaWYgdGVzdCB4JHdpdGhfW11tb2RuYW1lICE9IHhubzsgdGhlbgogIAkJRlJfU01BUlRfQ0hFQ0tfTElCKGtyYjUsIGtyYjVfaXNfdGhyZWFkX3NhZmUpCi0gCQlpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9rcmI1X2tyYjVfaXNfdGhyZWFkX3NhZmUiID09IHh5ZXM7IHRoZW4KKyAJCWlmIHRlc3QgIngkYWNfY3ZfbGliX2tyYjVfa3JiNV9pc190aHJlYWRfc2FmZSIgPSB4eWVzOyB0aGVuCiAgCQkJQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPGtyYjUuaD5dXSwgW1tyZXR1cm4ga3JiNV9pc190aHJlYWRfc2FmZSgpID8gMCA6IDFdXSldLAogLQkJCQlba3JiNXRocmVhZHNhZmU9Ii1ES1JCNV9JU19USFJFQURfU0FGRSJdLCBbQUNfTVNHX1dBUk4oW1tsaWJrcmI1IGlzIG5vdCB0aHJlYWRzYWZlXV0pXSkKICsJCQkJW2tyYjV0aHJlYWRzYWZlPSItREtSQjVfSVNfVEhSRUFEX1NBRkUiXSwgW0FDX01TR19XQVJOKFtbbGlia3JiNSBpcyBub3QgdGhyZWFkc2FmZV1dKV0sCkBAIC0yNyw1ICszMyw1IEBACiAgCWVsc2UKICAJCWtyYjV0aHJlYWRzYWZlPSIiCiAtLSAKLTIuMTAuMgorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoCmluZGV4IGQyOWIyYWMuLjYzOGQ5NTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzL2ZyZWVyYWRpdXMtZml4LWlzc3Vlcy1yZWxhdGVkLXRvLW00LWluY2x1ZGUtcGF0aC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2gKQEAgLTEsMzIgKzEsMzMgQEAKLUZyb20gZDhlMjUxZWY5Nzg2OWFiMmMxYzgyYmQzNzQwMTZmNDAyMDgzOTk3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvcmdlIFBlcmVpcmEgPGpwZXJlaXJhbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMTY6NTE6MDcgLTAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4aW5nIGlzc3VlcyByZWxhdGVkIHRvIG00IGluY2x1ZGUgcGF0aAorRnJvbSA2OWNiNmQ0YmI1ZGQ1NmE0ODY5NWMwNTgxYTdkODUzZTQyN2IwZWEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTQ6NTQ6NDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZnJlZXJhZGl1czogRml4aW5nIGlzc3VlcyByZWxhdGVkIHRvIG00IGluY2x1ZGUgcGF0aAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KIAogWzFdOiBodHRwczovL2dpdGh1Yi5jb20vRnJlZVJBRElVUy9mcmVlcmFkaXVzLXNlcnZlci9wdWxsLzE0MjgKIAogU3VibW1pdGVkIGJ5OiBKb3JnZSBQZXJlaXJhIDxqcGVyZWlyYW5AZ21haWwuY29tPgorCitVcGRhdGUgdG8gdmVyc2lvbiAzLjAuMTcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQotIHNyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluICAgICAgICAgICAgICAgIHwgMzkgKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbW9kdWxlcy9ybG1fcGFtL2NvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICB8ICAzICsrCi0gc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgfCAgMyArKwotIHNyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbW9kdWxlcy9ybG1fcmFkdXRtcC9jb25maWcuaC5pbiAgICAgICAgICAgICAgICB8ICAzICsrCi0gc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL21vZHVsZXMvcmxtX3J1YnkvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgfCAgOSArKy0tLQotIHNyYy9tb2R1bGVzL3JsbV9zbXNvdHAvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgIHwgIDMgKysKLSAuLi4vcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4gICAgICB8ICAzICsrCi0gc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4gICAgICAgICAgICAgICAgICAgfCAgNiArKysrCi0gMTEgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCisgc3JjL21vZHVsZXMvcmxtX2V4YW1wbGUvY29uZmlnLmguaW4gfCAzNSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4gICAgIHwgIDMgKysrCisgc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlnLmguaW4gICAgfCAgMyArKysKKyBzcmMvbW9kdWxlcy9ybG1fcGVybC9jb25maWd1cmUuYWMgICB8ICAyICstCisgc3JjL21vZHVsZXMvcmxtX3JhZHV0bXAvY29uZmlnLmguaW4gfCAgMyArKysKKyBzcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUuYWMgICB8ICA4ICsrKystLS0tCisgc3JjL21vZHVsZXMvcmxtX3Ntc290cC9jb25maWcuaC5pbiAgfCAgMyArKysKKyBzcmMvbW9kdWxlcy9ybG1fdW5peC9jb25maWcuaC5pbiAgICB8ICAzICsrKworIDggZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fZXhhbXBsZS9jb25maWcuaC5pbiBiL3NyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluCi1pbmRleCAyYTgxZWY1Li5mODBkZTljIDEwMDY0NAoraW5kZXggMmE4MWVmNS4uNGRiYjhmNCAxMDA2NDQKIC0tLSBhL3NyYy9tb2R1bGVzL3JsbV9leGFtcGxlL2NvbmZpZy5oLmluCiArKysgYi9zcmMvbW9kdWxlcy9ybG1fZXhhbXBsZS9jb25maWcuaC5pbgotQEAgLTEsMzggKzEsNSBAQAorQEAgLTEsMzcgKzEsNSBAQAogIC8qIGNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwogIAogLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCkBAIC02MSwxMSArNjIsMTAgQEAKIC0KIC0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KIC0jdW5kZWYgSEFWRV9VTklTVERfSAotLQorIAogIC8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwogICN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAotIAotQEAgLTQ1LDggKzEyLDggQEAKK0BAIC00NSw2ICsxMyw5IEBACiAgLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwogICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKICAKQEAgLTc0LDIyICs3NCw3IEBACiArCiAgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KICAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCi0tCi0tLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0tI3VuZGVmIFNURENfSEVBREVSUwotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZSBiL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZQotaW5kZXggZTBjMTVkOS4uY2RmOTZkNSAxMDA3NTUKLS0tLSBhL3NyYy9tb2R1bGVzL3JsbV9sZGFwL2NvbmZpZ3VyZQotKysrIGIvc3JjL21vZHVsZXMvcmxtX2xkYXAvY29uZmlndXJlCi1AQCAtMzk5Miw3ICszOTkyLDcgQEAgc21hcnRfcHJlZml4PQotICRhc19lY2hvICIjZGVmaW5lIFdJVEhfU0FTTCAxIiA+PmNvbmZkZWZzLmgKICAKLSAJICAgIFNBU0w9c2FzbC5jCi0tICAgICAgICAgIGZpCi0rCSAgZmkKLSAJZmkKLSAKLSAJdGFyZ2V0bmFtZT1ybG1fbGRhcAogZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9wYW0vY29uZmlnLmguaW4gYi9zcmMvbW9kdWxlcy9ybG1fcGFtL2NvbmZpZy5oLmluCiBpbmRleCAzMmVmNmZmLi4xYWQyMGM1IDEwMDY0NAogLS0tIGEvc3JjL21vZHVsZXMvcmxtX3BhbS9jb25maWcuaC5pbgpAQCAtMTE4LDcgKzEwMyw3IEBACiAgLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KICAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCiBkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjCi1pbmRleCA0NGM1ZmM5Li42YjJhMDQzIDEwMDY0NAoraW5kZXggNGIzZmY0Mi4uNjljNzljYiAxMDA2NDQKIC0tLSBhL3NyYy9tb2R1bGVzL3JsbV9wZXJsL2NvbmZpZ3VyZS5hYwogKysrIGIvc3JjL21vZHVsZXMvcmxtX3BlcmwvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDcgQEAgQUNfSU5JVChybG1fcGVybC5jKQpAQCAtMTQ0LDIzICsxMjksMTEgQEAKICAvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwogICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KICAKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUgYi9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUKLWluZGV4IDE1ODY4YWIuLmM3MjhhZjIgMTAwNzU1Ci0tLS0gYS9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUKLSsrKyBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZQotQEAgLTE4NzUsNiArMTg3NSw3IEBAIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSAKLSAKLSAKLSsKLSAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY29tcGFyZV92ZXJzaW9uLmh0bWwKLSAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYyBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYwotaW5kZXggOTMwNjM4Mi4uZjFjODExOCAxMDA2NDQKK2luZGV4IDkzMDYzODIuLmFlODZhMTQgMTAwNjQ0CiAtLS0gYS9zcmMvbW9kdWxlcy9ybG1fcnVieS9jb25maWd1cmUuYWMKICsrKyBiL3NyYy9tb2R1bGVzL3JsbV9ydWJ5L2NvbmZpZ3VyZS5hYwotQEAgLTMsMTUgKzMsMTYgQEAgQUNfSU5JVChybG1fcnVieS5jKQorQEAgLTMsMTUgKzMsMTUgQEAgQUNfSU5JVChybG1fcnVieS5jKQogIEFDX1JFVklTSU9OKCRSZXZpc2lvbjogMS45ICQpCiAgQUNfREVGVU4obW9kbmFtZSxbcmxtX3J1YnldKQogIApAQCAtMTc0LDcgKzE0Nyw2IEBACiAtbTRfaW5jbHVkZShbYXhfY29tcGFyZV92ZXJzaW9uLm00XSkKIC1tNF9pbmNsdWRlKFtheF9wcm9nX3J1YnlfdmVyc2lvbi5tNF0pCiAtbTRfaW5jbHVkZShbYXhfcnVieV9kZXZlbC5tNF0pCi0rCiArbTRfaW5jbHVkZShbbTQvYXhfY29tcGFyZV92ZXJzaW9uLm00XSkKICttNF9pbmNsdWRlKFttNC9heF9wcm9nX3J1YnlfdmVyc2lvbi5tNF0pCiArbTRfaW5jbHVkZShbbTQvYXhfcnVieV9kZXZlbC5tNF0pCkBAIC0xOTUsMzMgKzE2NywxMSBAQAogIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiAgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgogIAotZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV9zcWwvZHJpdmVycy9ybG1fc3FsX215c3FsL2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4KLWluZGV4IGUwM2QxYTkuLjYyNjJjNDggMTAwNjQ0Ci0tLS0gYS9zcmMvbW9kdWxlcy9ybG1fc3FsL2RyaXZlcnMvcmxtX3NxbF9teXNxbC9jb25maWcuaC5pbgotKysrIGIvc3JjL21vZHVsZXMvcmxtX3NxbC9kcml2ZXJzL3JsbV9zcWxfbXlzcWwvY29uZmlnLmguaW4KLUBAIC0xOCw1ICsxOCw4IEBACi0gLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKLSAKLSsvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLwotKyN1bmRlZiBQQUNLQUdFX1VSTAotKwotIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0gI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgogZGlmZiAtLWdpdCBhL3NyYy9tb2R1bGVzL3JsbV91bml4L2NvbmZpZy5oLmluIGIvc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4KLWluZGV4IGRjYjlhYTIuLjcwYjQ2ODAgMTAwNjQ0CitpbmRleCBkY2I5YWEyLi4xNjEwN2I4IDEwMDY0NAogLS0tIGEvc3JjL21vZHVsZXMvcmxtX3VuaXgvY29uZmlnLmguaW4KICsrKyBiL3NyYy9tb2R1bGVzL3JsbV91bml4L2NvbmZpZy5oLmluCi1AQCAtMSw1ICsxLDggQEAKLSAvKiBjb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KLSAKLSsvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3bmFtJyBmdW5jdGlvbi4gKi8KLSsjdW5kZWYgSEFWRV9HRVRQV05BTQotKwotIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0c3BuYW0nIGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX0dFVFNQTkFNCi0gCi1AQCAtNTQsNiArNTcsOSBAQAorQEAgLTU0LDYgKzU0LDkgQEAKICAvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCiAgI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQogIApAQCAtMjMyLDUgKzE4Miw1IEBACiAgI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgogIAogLS0gCi0yLjMuNQorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZnJlZXJhZGl1c18zLjAuMTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE1NWE0MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJGcmVlUkFESVVTIGlzIGFuIEludGVybmV0IGF1dGhlbnRpY2F0aW9uIGRhZW1vbiwgd2hpY2ggaW1wbGVtZW50cyB0aGUgUkFESVVTIFwKLXByb3RvY29sLCBhcyBkZWZpbmVkIGluIFJGQyAyODY1IChhbmQgb3RoZXJzKS4gSXQgYWxsb3dzIE5ldHdvcmsgQWNjZXNzIFwKLVNlcnZlcnMgKE5BUyBib3hlcykgdG8gcGVyZm9ybSBhdXRoZW50aWNhdGlvbiBmb3IgZGlhbC11cCB1c2Vycy4gVGhlcmUgYXJlIFwKLWFsc28gUkFESVVTIGNsaWVudHMgYXZhaWxhYmxlIGZvciBXZWIgc2VydmVycywgZmlyZXdhbGxzLCBVbml4IGxvZ2lucywgYW5kIFwKLW1vcmUuICBVc2luZyBSQURJVVMgYWxsb3dzIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBhIG5ldHdvcmsgdG8gXAotYmUgY2VudHJhbGl6ZWQsIGFuZCBtaW5pbWl6ZXMgdGhlIGFtb3VudCBvZiByZS1jb25maWd1cmF0aW9uIHdoaWNoIGhhcyB0byBiZSBcCi1kb25lIHdoZW4gYWRkaW5nIG9yIGRlbGV0aW5nIG5ldyB1c2Vycy4iCi0KLVNVTU1BUlkgPSAiSGlnaC1wZXJmb3JtYW5jZSBhbmQgaGlnaGx5IGNvbmZpZ3VyYWJsZSBSQURJVVMgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlcmFkaXVzLm9yZy8iCi1TRUNUSU9OID0gIlN5c3RlbS9TZXJ2ZXJzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgb3BlbnNzbCBsaWJpZG4gbGlidG9vbCBsaWJwY2FwIGxpYnRhbGxvYyIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZXJhZGl1cy5vcmcvcHViL2ZyZWVyYWRpdXMvZnJlZXJhZGl1cy1zZXJ2ZXItJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMgXAotICAgIGZpbGU6Ly92b2xhdGlsZXMuNThfcmFkaXVzZCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtZW5ibGUtdXNlci1pbi1jb25mLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWxsb3ctY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1pc3N1ZXMtcmVsYXRlZC10by1tNC1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWxpYnRvb2wtZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItbGliY2FwLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1hdm9pZC1zZWFyY2hpbmctaG9zdC1kaXJzLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1ybG1fcHl0aG9uLWFkZC1QWV9JTkNfRElSLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRvLW5vdC11c2UtamxpYnRvb2wucGF0Y2ggXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1xdW90aW5nLWZvci1CVUlMVF9XSVRILnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtZXJyb3ItZm9yLWV4cGFuc2lvbi1vZi1tYWNyby5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtcmxtX21zY2hhcC1Vc2UtaW5jbHVkZWRpci1pbnN0ZWFkLW9mLWhhcmRjb2RpbmctdXNyLS5wYXRjaCBcCi0gICAgZmlsZTovL3JhZGl1c2Quc2VydmljZSBcCi0gICAgZmlsZTovL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjBjODFhNDQ2NGNjZjFkMDRmN2VmMTIxOGEwMjlkMzdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjY3ZDg1MDVlN2IyOTA5ZjViZGJmMzkzOGNhMDc3YzFmZTEyMjI5MGRjOTY5MzA0ZDRmM2I1OTRmN2UzYmEiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1TID0gIiR7V09SS0RJUn0vZnJlZXJhZGl1cy1zZXJ2ZXItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtc3RyaWN0LWRlcGVuZGVuY2llcyBcCi0gICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ZyZWVyYWRpdXMtJHtQVn0gXAotICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIC0td2l0aC1vcGVuc3NsLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIC0td2l0aG91dC1ybG1faXBwb29sIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9jYWNoZV9tZW1jYWNoZWQgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdW50ZXIgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdWNoYmFzZSBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fZGJtIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfdG5jIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfaWtldjIgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX29wZW5kaXJlY3RvcnkgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9yZWRpc3dobyBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2RiMiBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2ZpcmViaXJkIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZnJlZXRkcyBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2lvZGJjIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfb3JhY2xlIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfc3liYXNlIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxocHdpcHBvb2wgXAotICAgICAgICBhY19jdl9wYXRoX1BFUkw9JHtiaW5kaXJ9L3BlcmwgXAotICAgICAgICBheF9jdl9jY19idWlsdGluX2Nob29zZV9leHByPW5vIFwKLSAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3A9bm8gXAotICAgICAgICBheF9jdl9jY19idWlsdGluX2Jzd2FwNjQ9bm8gXAotICAgICAgICBheF9jdl9jY19ib3VuZGVkX2F0dHJpYnV0ZT1ubyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBwY3JlIGxpYmNhcCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLXJsbV9rcmI1LC0td2l0aG91dC1ybG1fa3JiNSxrcmI1IgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1ybG1fcGFtLC0td2l0aG91dC1ybG1fcGFtLGxpYnBhbSIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtcmxtX2xkYXAsLS13aXRob3V0LXJsbV9sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLXJsbV9zcWxfbXlzcWwsLS13aXRob3V0LXJsbV9zcWxfbXlzcWwsbXlzcWw1IgotUEFDS0FHRUNPTkZJR1tzcWxpdGVdID0gIi0td2l0aC1ybG1fc3FsX3NxbGl0ZSwtLXdpdGhvdXQtcmxtX3NxbF9zcWxpdGUsc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbdW5peG9kYmNdID0gIi0td2l0aC1ybG1fc3FsX3VuaXhvZGJjLC0td2l0aG91dC1ybG1fc3FsX3VuaXhvZGJjLHVuaXhvZGJjIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcmxtX3NxbF9wb3N0Z3Jlc3FsLC0td2l0aG91dC1ybG1fc3FsX3Bvc3RncmVzcWwscG9zdGdyZXNxbCIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgLS13aXRoLXJsbV9wZXJsLC0td2l0aG91dC1ybG1fcGVybCxwZXJsLW5hdGl2ZSBwZXJsLHBlcmwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXJsbV9weXRob24gLS13aXRoLXJsbS1weXRob24tYmluPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtLXdpdGgtcmxtLXB5dGhvbi1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LC0td2l0aG91dC1ybG1fcHl0aG9uLHB5dGhvbi1uYXRpdmUgcHl0aG9uIgotUEFDS0FHRUNPTkZJR1tyZXN0XSA9ICItLXdpdGgtcmxtX3Jlc3QsLS13aXRob3V0LXJsbV9yZXN0LGN1cmwganNvbi1jIgotUEFDS0FHRUNPTkZJR1tydWJ5XSA9ICItLXdpdGgtcmxtX3J1YnksLS13aXRob3V0LXJsbV9ydWJ5LHJ1YnkiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBUaGlzIGlzIG5vdCBhIGNwYW4gb3IgcHl0aG9uIGJhc2VkIHBhY2thZ2UsIGJ1dCBpdCBuZWVkcyBzb21lIGRlZmluaXRpb25zCi0jIGZyb20gY3Bhbi1iYXNlIGFuZCBweXRob24tZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KLSMgY29ycmVjdGx5LgotaW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uLWRpcgotCi0jIFRoZSBtb2R1bGVzIHN1YmRpcnMgYWxzbyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBieSBhdXRvcmVjb25mLiBVc2UgYXV0b2dlbi5zaAotIyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHN1YmRpcnMgY29ycmVjdGx5LgotZG9fY29uZmlndXJlICgpIHsKLSAgICAuL2F1dG9nZW4uc2gKLQotICAgICMgdGhlIGNvbmZpZ3VyZSBvZiBybG1fcGVybCBuZWVkcyB0aGlzIHRvIGdldCBjb3JyZWN0Ci0gICAgIyBtb2RfY2ZsYWdzIGFuZCBtb2RfbGRmbGFncwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBleHBvcnQgUEVSTDVMSUI9IiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCi0gICAgZmkKLQotICAgIG9lX3J1bmNvbmYKLQotICAgICMgd2UgZG9uJ3QgbmVlZCBkaGNwY2xpZW50Ci0gICAgc2VkIC1pIC1lICdzL2RoY3BjbGllbnQubWsvLycgJHtTfS9zcmMvbW9kdWxlcy9wcm90b19kaGNwL2FsbC5tawotfQotCi1JTklUU0NSSVBUX05BTUUgPSAicmFkaXVzZCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhZGl1c2Quc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJhZGl1c2QiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgcm0gLXJmICR7RH0KLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgbWtkaXIgLXAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JHtEfS8ke2xpYmRpcn0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgUj0ke0R9IElOU1RBTExTVFJJUD0iIgotCi0gICAgIyByZW1vdmUgdW5zdXBwb3J0ZWQgY29uZmlnIGZpbGVzCi0gICAgcm0gLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiL2V4cGVyaW1lbnRhbC5jb25mCi0KLSAgICAjIHJlbW92ZSBzY3JpcHRzIHRoYXQgcmVxdWlyZWQgUGVybChEQkkpCi0gICAgcm0gLXJmICR7RH0vJHtiaW5kaXJ9L3JhZHNxbHJlbGF5Ci0KLSAgICBjcCAtZiAke1dPUktESVJ9L2ZyZWVyYWRpdXMgJHtEfS9ldGMvaW5pdC5kL3JhZGl1c2QKLSAgICBybSAtZiAke0R9LyR7c2JpbmRpcn0vcmMucmFkaXVzZAotICAgIGNobW9kICt4ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmFkaXVzZAotICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy41OF9yYWRpdXNkICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy81OF9yYWRpdXNkCi0KLSAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiLwotICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKLQotICAgICMgRm9yIHN5c3RlbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFkaXVzZC5zZXJ2aWNlCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBmaQotfQotCi0jIFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiB3ZSBpbnN0YWxsL3VwZGF0ZSBvbiBhIHJ1bm5pbmcgdGFyZ2V0LgotIwotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgotICAgICAgICBpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgIyBjcmVhdGUgL3Zhci9sb2cvcmFkaXVzLCAvdmFyL3J1bi9yYWRpdXNkCi0gICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yYWRpdXNkLXZvbGF0aWxlcy5jb25mCi0gICAgICAgIGVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZmkKLQotICAgICAgICAjIEZpeCBvd25lcnNoaXAgZm9yIC9ldGMvcmFkZGIvKiwgL3Zhci9saWIvcmFkaXVzZAotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtzeXNjb25mZGlyfS9yYWRkYgotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAotICAgIGZpCi19Ci0KLSMgV2UgcmVhbGx5IG5lZWQgdGhlIHN5bWxpbmsgOigKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWtyYjUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tbGRhcCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1teXNxbCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1wZXJsID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXBvc3RncmVzcWwgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tcHl0aG9uID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXVuaXhvZGJjID0gImRldi1zbyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzICR7UE59LWxkYXAgJHtQTn0ta3JiNSAke1BOfS1wZXJsIFwKLSAgICAke1BOfS1weXRob24gJHtQTn0tbXlzcWwgJHtQTn0tcG9zdGdyZXNxbCAke1BOfS11bml4b2RiYyIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LWxkYXAgPSAiJHtsaWJkaXJ9L3JsbV9sZGFwLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9sZGFwIFwKLSIKLQotRklMRVNfJHtQTn0ta3JiNSA9ICIke2xpYmRpcn0vcmxtX2tyYjUuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL2tyYjUgXAotIgotCi1GSUxFU18ke1BOfS1wZXJsID0gIiR7bGliZGlyfS9ybG1fcGVybC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvcGVybCBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9wZXJsIFwKLSIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9ybG1fcHl0aG9uLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9weXRob24gXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uIFwKLSIKLQotRklMRVNfJHtQTn0tbXlzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfbXlzcWwuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL215c3FsIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3NxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXBvc3RncmVzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfcG9zdGdyZXNxbC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvc3FsLyovcG9zdGdyZXNxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXVuaXhvZGJjID0gIiR7bGliZGlyfS9ybG1fc3FsX3VuaXhvZGJjLnNvKiIKLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9ybG1fKi5zbyogJHtsaWJkaXJ9L3Byb3RvXypzbyoiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxN2Q1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xNy5iYgpAQCAtMCwwICsxLDIyMyBAQAorREVTQ1JJUFRJT04gPSAiRnJlZVJBRElVUyBpcyBhbiBJbnRlcm5ldCBhdXRoZW50aWNhdGlvbiBkYWVtb24sIHdoaWNoIGltcGxlbWVudHMgdGhlIFJBRElVUyBcCitwcm90b2NvbCwgYXMgZGVmaW5lZCBpbiBSRkMgMjg2NSAoYW5kIG90aGVycykuIEl0IGFsbG93cyBOZXR3b3JrIEFjY2VzcyBcCitTZXJ2ZXJzIChOQVMgYm94ZXMpIHRvIHBlcmZvcm0gYXV0aGVudGljYXRpb24gZm9yIGRpYWwtdXAgdXNlcnMuIFRoZXJlIGFyZSBcCithbHNvIFJBRElVUyBjbGllbnRzIGF2YWlsYWJsZSBmb3IgV2ViIHNlcnZlcnMsIGZpcmV3YWxscywgVW5peCBsb2dpbnMsIGFuZCBcCittb3JlLiAgVXNpbmcgUkFESVVTIGFsbG93cyBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbiBmb3IgYSBuZXR3b3JrIHRvIFwKK2JlIGNlbnRyYWxpemVkLCBhbmQgbWluaW1pemVzIHRoZSBhbW91bnQgb2YgcmUtY29uZmlndXJhdGlvbiB3aGljaCBoYXMgdG8gYmUgXAorZG9uZSB3aGVuIGFkZGluZyBvciBkZWxldGluZyBuZXcgdXNlcnMuIgorCitTVU1NQVJZID0gIkhpZ2gtcGVyZm9ybWFuY2UgYW5kIGhpZ2hseSBjb25maWd1cmFibGUgUkFESVVTIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXJhZGl1cy5vcmcvIgorU0VDVElPTiA9ICJTeXN0ZW0vU2VydmVycyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIG9wZW5zc2wgbGliaWRuIGxpYnRvb2wgbGlicGNhcCBsaWJ0YWxsb2MiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVyYWRpdXMub3JnL3B1Yi9mcmVlcmFkaXVzL2ZyZWVyYWRpdXMtc2VydmVyLSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzIFwKKyAgICBmaWxlOi8vdm9sYXRpbGVzLjU4X3JhZGl1c2QgXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtaXNzdWVzLXJlbGF0ZWQtdG8tbTQtaW5jbHVkZS1wYXRoLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWxpYmNhcC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtYXZvaWQtc2VhcmNoaW5nLWhvc3QtZGlycy5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXJsbV9tc2NoYXAtVXNlLWluY2x1ZGVkaXItaW5zdGVhZC1vZi1oYXJkY29kaW5nLXVzci0ucGF0Y2ggXAorICAgIGZpbGU6Ly9yYWRpdXNkLnNlcnZpY2UgXAorICAgIGZpbGU6Ly9yYWRpdXNkLXZvbGF0aWxlcy5jb25mIFwKKyAgICBmaWxlOi8vMDAwMS1mcmVlcmFkaXVzLWNvcnJlY3QtdmVyc2lvbi1udW1iZXItb2YtbGlic3NsLWRlZmVjdC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMWY0YWQzOGYzMjEwMWE3ZDUwZDgxOGFmYTZmMTczMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2YwMzQwNGI2ZTRhNGY0MTBlMWYxNWVhMmFiYWJmZWM3ZjhhN2FlOGE0OTgzNmQ4YTBjMTM3NDM2ZDkxM2I5NiIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK1MgPSAiJHtXT1JLRElSfS9mcmVlcmFkaXVzLXNlcnZlci0ke1BWfSIKKworRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1zdHJpY3QtZGVwZW5kZW5jaWVzIFwKKyAgICAgICAgLS13aXRoLWRvY2Rpcj0ke2RvY2Rpcn0vZnJlZXJhZGl1cy0ke1BWfSBcCisgICAgICAgIC0td2l0aC1vcGVuc3NsLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgLS13aXRoLW9wZW5zc2wtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9pcHBvb2wgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NhY2hlX21lbWNhY2hlZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fY291bnRlciBcCisgICAgICAgIC0td2l0aG91dC1ybG1fY291Y2hiYXNlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9kYm0gXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF90bmMgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF9pa2V2MiBcCisgICAgICAgIC0td2l0aG91dC1ybG1fb3BlbmRpcmVjdG9yeSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fcmVkaXMgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzd2hvIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZGIyIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZmlyZWJpcmQgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9mcmVldGRzIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfaW9kYmMgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9vcmFjbGUgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9zeWJhc2UgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbGhwd2lwcG9vbCBcCisgICAgICAgIGFjX2N2X3BhdGhfUEVSTD0ke2JpbmRpcn0vcGVybCBcCisgICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fY2hvb3NlX2V4cHI9bm8gXAorICAgICAgICBheF9jdl9jY19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcD1ubyBcCisgICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fYnN3YXA2ND1ubyBcCisgICAgICAgIGF4X2N2X2NjX2JvdW5kZWRfYXR0cmlidXRlPW5vIFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIHBjcmUgbGliY2FwIFwKKyIKKworUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtcmxtX2tyYjUsLS13aXRob3V0LXJsbV9rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXJsbV9wYW0sLS13aXRob3V0LXJsbV9wYW0sbGlicGFtIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1ybG1fbGRhcCwtLXdpdGhvdXQtcmxtX2xkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtcmxtX3NxbF9teXNxbCwtLXdpdGhvdXQtcmxtX3NxbF9teXNxbCxteXNxbDUiCitQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS13aXRoLXJsbV9zcWxfc3FsaXRlLC0td2l0aG91dC1ybG1fc3FsX3NxbGl0ZSxzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t1bml4b2RiY10gPSAiLS13aXRoLXJsbV9zcWxfdW5peG9kYmMsLS13aXRob3V0LXJsbV9zcWxfdW5peG9kYmMsdW5peG9kYmMiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1ybG1fc3FsX3Bvc3RncmVzcWwsLS13aXRob3V0LXJsbV9zcWxfcG9zdGdyZXNxbCxwb3N0Z3Jlc3FsIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLXdpdGgtcGVybD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCAtLXdpdGgtcmxtX3BlcmwsLS13aXRob3V0LXJsbV9wZXJsLHBlcmwtbmF0aXZlIHBlcmwscGVybCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcmxtX3B5dGhvbiAtLXdpdGgtcmxtLXB5dGhvbi1iaW49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIC0td2l0aC1ybG0tcHl0aG9uLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0sLS13aXRob3V0LXJsbV9weXRob24scHl0aG9uLW5hdGl2ZSBweXRob24iCitQQUNLQUdFQ09ORklHW3Jlc3RdID0gIi0td2l0aC1ybG1fcmVzdCwtLXdpdGhvdXQtcmxtX3Jlc3QsY3VybCBqc29uLWMiCitQQUNLQUdFQ09ORklHW3J1YnldID0gIi0td2l0aC1ybG1fcnVieSwtLXdpdGhvdXQtcmxtX3J1YnkscnVieSIKKworaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIFRoaXMgaXMgbm90IGEgY3BhbiBvciBweXRob24gYmFzZWQgcGFja2FnZSwgYnV0IGl0IG5lZWRzIHNvbWUgZGVmaW5pdGlvbnMKKyMgZnJvbSBjcGFuLWJhc2UgYW5kIHB5dGhvbi1kaXIgYmJjbGFzc2VzIGZvciBidWlsZGluZyBybG1fcGVybCBhbmQgcmxtX3B5dGhvbgorIyBjb3JyZWN0bHkuCitpbmhlcml0IGNwYW4tYmFzZSBweXRob24tZGlyCisKKyMgVGhlIG1vZHVsZXMgc3ViZGlycyBhbHNvIG5lZWQgdG8gYmUgcHJvY2Vzc2VkIGJ5IGF1dG9yZWNvbmYuIFVzZSBhdXRvZ2VuLnNoCisjIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUgc3ViZGlycyBjb3JyZWN0bHkuCitkb19jb25maWd1cmUgKCkgeworICAgIC4vYXV0b2dlbi5zaAorCisgICAgIyB0aGUgY29uZmlndXJlIG9mIHJsbV9wZXJsIG5lZWRzIHRoaXMgdG8gZ2V0IGNvcnJlY3QKKyAgICAjIG1vZF9jZmxhZ3MgYW5kIG1vZF9sZGZsYWdzCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGV4cG9ydCBQRVJMNUxJQj0iJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSIKKyAgICBmaQorCisgICAgb2VfcnVuY29uZgorCisgICAgIyB3ZSBkb24ndCBuZWVkIGRoY3BjbGllbnQKKyAgICBzZWQgLWkgLWUgJ3MvZGhjcGNsaWVudC5tay8vJyAke1N9L3NyYy9tb2R1bGVzL3Byb3RvX2RoY3AvYWxsLm1rCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJyYWRpdXNkIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicmFkaXVzZC5zZXJ2aWNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcmFkaXVzZCIKKworZG9faW5zdGFsbCgpIHsKKyAgICBybSAtcmYgJHtEfQorICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAorICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZAorICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBta2RpciAtcCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCisgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0ke0R9LyR7bGliZGlyfQorICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBSPSR7RH0gSU5TVEFMTFNUUklQPSIiCisKKyAgICAjIHJlbW92ZSB1bnN1cHBvcnRlZCBjb25maWcgZmlsZXMKKyAgICBybSAtZiAke0R9LyR7c3lzY29uZmRpcn0vcmFkZGIvZXhwZXJpbWVudGFsLmNvbmYKKworICAgICMgcmVtb3ZlIHNjcmlwdHMgdGhhdCByZXF1aXJlZCBQZXJsKERCSSkKKyAgICBybSAtcmYgJHtEfS8ke2JpbmRpcn0vcmFkc3FscmVsYXkKKworICAgIGNwIC1mICR7V09SS0RJUn0vZnJlZXJhZGl1cyAke0R9L2V0Yy9pbml0LmQvcmFkaXVzZAorICAgIHJtIC1mICR7RH0vJHtzYmluZGlyfS9yYy5yYWRpdXNkCisgICAgY2htb2QgK3ggJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9yYWRpdXNkCisgICAgcm0gLXJmICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9ydW4vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjU4X3JhZGl1c2QgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzU4X3JhZGl1c2QKKworICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke0R9LyR7c3lzY29uZmRpcn0vcmFkZGIvCisgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAorCisgICAgIyBGb3Igc3lzdGVtZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYWRpdXNkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisgICAgICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yYWRpdXNkLnNlcnZpY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC12b2xhdGlsZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworICAgIGZpCit9CisKKyMgVGhpcyBpcyBvbmx5IG5lZWRlZCB3aGVuIHdlIGluc3RhbGwvdXBkYXRlIG9uIGEgcnVubmluZyB0YXJnZXQuCisjCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAjIGNyZWF0ZSAvdmFyL2xvZy9yYWRpdXMsIC92YXIvcnVuL3JhZGl1c2QKKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYKKyAgICAgICAgZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKyAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorICAgICAgICBmaQorCisgICAgICAgICMgRml4IG93bmVyc2hpcCBmb3IgL2V0Yy9yYWRkYi8qLCAvdmFyL2xpYi9yYWRpdXNkCisgICAgICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke3N5c2NvbmZkaXJ9L3JhZGRiCisgICAgICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCisgICAgZmkKK30KKworIyBXZSByZWFsbHkgbmVlZCB0aGUgc3ltbGluayA6KAorSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0ta3JiNSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1sZGFwID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LW15c3FsID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXBlcmwgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tcG9zdGdyZXNxbCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1weXRob24gPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tdW5peG9kYmMgPSAiZGV2LXNvIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMgJHtQTn0tbGRhcCAke1BOfS1rcmI1ICR7UE59LXBlcmwgXAorICAgICR7UE59LXB5dGhvbiAke1BOfS1teXNxbCAke1BOfS1wb3N0Z3Jlc3FsICR7UE59LXVuaXhvZGJjIgorCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKKworRklMRVNfJHtQTn0tbGRhcCA9ICIke2xpYmRpcn0vcmxtX2xkYXAuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL2xkYXAgXAorIgorCitGSUxFU18ke1BOfS1rcmI1ID0gIiR7bGliZGlyfS9ybG1fa3JiNS5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUva3JiNSBcCisiCisKK0ZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3JsbV9wZXJsLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9wZXJsIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3BlcmwgXAorIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3JsbV9weXRob24uc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3B5dGhvbiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9weXRob24gXAorIgorCitGSUxFU18ke1BOfS1teXNxbCA9ICIke2xpYmRpcn0vcmxtX3NxbF9teXNxbC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvc3FsLyovbXlzcWwgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvc3FsIFwKKyIKKworRklMRVNfJHtQTn0tcG9zdGdyZXNxbCA9ICIke2xpYmRpcn0vcmxtX3NxbF9wb3N0Z3Jlc3FsLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9zcWwvKi9wb3N0Z3Jlc3FsIFwKKyIKKworRklMRVNfJHtQTn0tdW5peG9kYmMgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfdW5peG9kYmMuc28qIgorCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3JsbV8qLnNvKiAke2xpYmRpcn0vcHJvdG9fKnNvKiIKKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCitSREVQRU5EU18ke1BOfS11dGlscyA9ICIke1BOfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pbmV0dXRpbHMvaW5ldHV0aWxzXzEuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKaW5kZXggMTkwY2Q1Zi4uYTI3ZGJhZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIKQEAgLTQsNyArNCw3IEBACiB0YWxrZCwgdGVsbmV0LCB0ZWxuZXRkLCB0ZnRwLCB0ZnRwZCwgYW5kIHV1Y3BkLiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9pbmV0dXRpbHMiCiBTRUNUSU9OID0gIm5ldCIKLURFUEVORFMgPSAibmN1cnNlcyBuZXRiYXNlIHJlYWRsaW5lIgorREVQRU5EUyA9ICJuY3Vyc2VzIG5ldGJhc2UgcmVhZGxpbmUgdmlydHVhbC9jcnlwdCIKIAogTElDRU5TRSA9ICJHUEx2MyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9maWxlcy8wMDAxLUZpeC1lcnJvci1jYWxsLW9mLW92ZXJsb2FkZWQtZGlzdGFuY2UtaXMtYW1iaWd1b3VzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9maWxlcy8wMDAxLUZpeC1lcnJvci1jYWxsLW9mLW92ZXJsb2FkZWQtZGlzdGFuY2UtaXMtYW1iaWd1b3VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMTZlY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzLzAwMDEtRml4LWVycm9yLWNhbGwtb2Ytb3ZlcmxvYWRlZC1kaXN0YW5jZS1pcy1hbWJpZ3VvdXMucGF0Y2gKQEAgLTAsMCArMSw4OSBAQAorRnJvbSA4ZWEyZWU0NTFhMWFmN2M1YjVjOGY0YjM2YzFmNzdkNDQ0NDIwNjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgNyBTZXAgMjAxOCAxMzowMjozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggZXJyb3I6IGNhbGwgb2Ygb3ZlcmxvYWRlZCBkaXN0YW5jZSBpcyBhbWJpZ3VvdXMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhlIGJvb3N0OjppdGVyYXRvcnM6OmRpc3RhbmNlIGZ1bmN0aW9uIHRlbXBsYXRlIGlzIGFuIGFkYXB0ZWQgdmVyc2lvbgorb2Ygc3RkOjpkaXN0YW5jZSBmb3IgdGhlIEJvb3N0IGl0ZXJhdG9yIHRyYXZlcnNhbCBpbiAyLjY4IGl0IGhhcyBzdGFydGVkCit0byBmYWlsIHdpdGggYXJndW1lbnQgZGVwZW5kZW50IGxvb2t1cCBhbmQgY29tcGlsZXIgaXMgZXJyb3Jpbmcgb3V0CisKK3dpdGgKKworZXJyb3I6IGNhbGwgb2Ygb3ZlcmxvYWRlZCDigJhkaXN0YW5jZScKKworYm9vc3QgaW1wbGVtZW50YXRpb24gb2YgZGlzdGFuY2UgaXMgcHJvdGVjdGVkIGFnYWluc3QgYmVpbmcgZm91bmQgYnkgQURMCisKK1RoZSB3YXkgZnVuY3Rpb24gaXMgY2FsbGVkIGluIGxpYmRoY3AgbWVhbnMgaXQgd2lsbCBiZSBmb3VuZCB2aWEgQURMIGFuZAorYWxsIG5hbWVzcGFjZXMgd2lsbCBiZSBjb25zaWRlcmVkIHdoaWNoIGlzIHByb3ZpZGluZyBwcm9ibGVtYXRpYyBzaW5jZQoraXRzIGdldHRpbmcgaXQgZnJvbSBib3RoIHN0ZDo6IGFuZCBib29zdDo6IG5hbWVzcGFjZXMKKworc28gbGV0IGl0IG5vdCByZWx5IG9uIEFETCBieSBxdWFsaWZ5aW5nIHRoZW4gY2FsbHMgd2l0aCBzdGQ6OiBuYW1lc3BhY2UKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9pc2MtcHJvamVjdHMva2VhL3B1bGwvMTAzXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvZGhjcC9saWJkaGNwKysuY2MgfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi9kaGNwL2xpYmRoY3ArKy5jYyBiL3NyYy9saWIvZGhjcC9saWJkaGNwKysuY2MKK2luZGV4IDMzMGMwMmIuLmNlZDcwNWQgMTAwNjQ0CistLS0gYS9zcmMvbGliL2RoY3AvbGliZGhjcCsrLmNjCisrKysgYi9zcmMvbGliL2RoY3AvbGliZGhjcCsrLmNjCitAQCAtNDE5LDE0ICs0MTksMTQgQEAgc2l6ZV90IExpYkRIQ1A6OnVucGFja09wdGlvbnM2KGNvbnN0IE9wdGlvbkJ1ZmZlciYgYnVmLAorICAgICAgICAgLy8gV2UgcHJldmlvdXNseSBkaWQgdGhlIGxvb2t1cCBvbmx5IGZvciBkaGNwNiBvcHRpb24gc3BhY2UsIGJ1dCB3aXRoIHRoZQorICAgICAgICAgLy8gYWRkaXRpb24gb2YgUzQ2IG9wdGlvbnMsIHdlIG5vdyBkbyBpdCBmb3IgZXZlcnkgc3BhY2UuCisgICAgICAgICByYW5nZSA9IGlkeC5lcXVhbF9yYW5nZShvcHRfdHlwZSk7CistICAgICAgICBudW1fZGVmcyA9IGRpc3RhbmNlKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworKyAgICAgICAgbnVtX2RlZnMgPSBzdGQ6OmRpc3RhbmNlKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworIAorICAgICAgICAgLy8gU3RhbmRhcmQgb3B0aW9uIGRlZmluaXRpb25zIGRvIG5vdCBpbmNsdWRlIHRoZSBkZWZpbml0aW9uIGZvcgorICAgICAgICAgLy8gb3VyIG9wdGlvbiBvciB3ZSdyZSBzZWFyY2hpbmcgZm9yIG5vbi1zdGFuZGFyZCBvcHRpb24uIFRyeSB0bworICAgICAgICAgLy8gZmluZCB0aGUgZGVmaW5pdGlvbiBhbW9uZyBydW50aW1lIG9wdGlvbiBkZWZpbml0aW9ucy4KKyAgICAgICAgIGlmIChudW1fZGVmcyA9PSAwKSB7CisgICAgICAgICAgICAgcmFuZ2UgPSBydW50aW1lX2lkeC5lcXVhbF9yYW5nZShvcHRfdHlwZSk7CistICAgICAgICAgICAgbnVtX2RlZnMgPSBkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKysgICAgICAgICAgICBudW1fZGVmcyA9IHN0ZDo6ZGlzdGFuY2UocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7CisgICAgICAgICB9CisgCisgICAgICAgICBPcHRpb25QdHIgb3B0OworQEAgLTUzOCwxNCArNTM4LDE0IEBAIHNpemVfdCBMaWJESENQOjp1bnBhY2tPcHRpb25zNChjb25zdCBPcHRpb25CdWZmZXImIGJ1ZiwKKyAgICAgICAgIC8vIG1heSBiZSBzdGFuZGFyZCBvcHRpb25zIGluIG90aGVyIHNwYWNlcyAoZS5nLiByYWRpdXMpLiBTbyB3ZSBub3cgZG8KKyAgICAgICAgIC8vIHRoZSBsb29rdXAgZm9yIGV2ZXJ5IHNwYWNlLgorICAgICAgICAgcmFuZ2UgPSBpZHguZXF1YWxfcmFuZ2Uob3B0X3R5cGUpOworLSAgICAgICAgbnVtX2RlZnMgPSBkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKysgICAgICAgIG51bV9kZWZzID0gc3RkOjpkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKyAKKyAgICAgICAgIC8vIFN0YW5kYXJkIG9wdGlvbiBkZWZpbml0aW9ucyBkbyBub3QgaW5jbHVkZSB0aGUgZGVmaW5pdGlvbiBmb3IKKyAgICAgICAgIC8vIG91ciBvcHRpb24gb3Igd2UncmUgc2VhcmNoaW5nIGZvciBub24tc3RhbmRhcmQgb3B0aW9uLiBUcnkgdG8KKyAgICAgICAgIC8vIGZpbmQgdGhlIGRlZmluaXRpb24gYW1vbmcgcnVudGltZSBvcHRpb24gZGVmaW5pdGlvbnMuCisgICAgICAgICBpZiAobnVtX2RlZnMgPT0gMCkgeworICAgICAgICAgICAgIHJhbmdlID0gcnVudGltZV9pZHguZXF1YWxfcmFuZ2Uob3B0X3R5cGUpOworLSAgICAgICAgICAgIG51bV9kZWZzID0gZGlzdGFuY2UocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7CisrICAgICAgICAgICAgbnVtX2RlZnMgPSBzdGQ6OmRpc3RhbmNlKHJhbmdlLmZpcnN0LCByYW5nZS5zZWNvbmQpOworICAgICAgICAgfQorIAorICAgICAgICAgLy8gQ2hlY2sgaWYgb3B0aW9uIHVucGFja2luZyBtdXN0IGJlIGRlZmVycmVkCitAQCAtNjM4LDcgKzYzOCw3IEBAIHNpemVfdCBMaWJESENQOjp1bnBhY2tWZW5kb3JPcHRpb25zNihjb25zdCB1aW50MzJfdCB2ZW5kb3JfaWQsCisgICAgICAgICAgICAgICAgIGlkeC0+ZXF1YWxfcmFuZ2Uob3B0X3R5cGUpOworICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIHJldHVybmVkIG9wdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlCisgICAgICAgICAgICAgLy8gb3B0aW9uIGNvZGUuCistICAgICAgICAgICAgc2l6ZV90IG51bV9kZWZzID0gZGlzdGFuY2UocmFuZ2UuZmlyc3QsIHJhbmdlLnNlY29uZCk7CisrICAgICAgICAgICAgc2l6ZV90IG51bV9kZWZzID0gc3RkOjpkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKyAKKyAgICAgICAgICAgICBpZiAobnVtX2RlZnMgPiAxKSB7CisgICAgICAgICAgICAgICAgIC8vIE11bHRpcGxlIG9wdGlvbnMgb2YgdGhlIHNhbWUgY29kZSBhcmUgbm90IHN1cHBvcnRlZAorQEAgLTc0Niw3ICs3NDYsNyBAQCBzaXplX3QgTGliREhDUDo6dW5wYWNrVmVuZG9yT3B0aW9uczQoY29uc3QgdWludDMyX3QgdmVuZG9yX2lkLCBjb25zdCBPcHRpb25CdWZmZQorICAgICAgICAgICAgICAgICAgICAgaWR4LT5lcXVhbF9yYW5nZShvcHRfdHlwZSk7CisgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIHJldHVybmVkIG9wdGlvbiBkZWZpbml0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgLy8gdGhlIG9wdGlvbiBjb2RlLgorLSAgICAgICAgICAgICAgICBzaXplX3QgbnVtX2RlZnMgPSBkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKysgICAgICAgICAgICAgICAgc2l6ZV90IG51bV9kZWZzID0gc3RkOjpkaXN0YW5jZShyYW5nZS5maXJzdCwgcmFuZ2Uuc2Vjb25kKTsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKG51bV9kZWZzID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGlwbGUgb3B0aW9ucyBvZiB0aGUgc2FtZSBjb2RlIGFyZSBub3QKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEvZmlsZXMvMDAwMy1NYWtlZmlsZS5hbS11cGRhdGUtaG9va3NkaXItZm9yLWxlYXNlX2NtZHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzLzAwMDMtTWFrZWZpbGUuYW0tdXBkYXRlLWhvb2tzZGlyLWZvci1sZWFzZV9jbWRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MWEzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzLzAwMDMtTWFrZWZpbGUuYW0tdXBkYXRlLWhvb2tzZGlyLWZvci1sZWFzZV9jbWRzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gY2Q5MDJiOGI1ODg2ODFhMjdkNTMyMWYxZWUwNzhhMWM4ZjZlNjkzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIxIE1hciAyMDE4IDA2OjAxOjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBNYWtlZmlsZS5hbTogdXBkYXRlIGhvb2tzZGlyIGZvciBsZWFzZV9jbWRzCisKK3VwZGF0ZSBob29rc2RpciBmb3IgbGVhc2VfY21kcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKworLS0tCisgc3JjL2hvb2tzL2RoY3AvbGVhc2VfY21kcy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9ob29rcy9kaGNwL2xlYXNlX2NtZHMvTWFrZWZpbGUuYW0gYi9zcmMvaG9va3MvZGhjcC9sZWFzZV9jbWRzL01ha2VmaWxlLmFtCitpbmRleCBjZmQ2Nzc5Li4yMmNjNGE5IDEwMDY0NAorLS0tIGEvc3JjL2hvb2tzL2RoY3AvbGVhc2VfY21kcy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL2hvb2tzL2RoY3AvbGVhc2VfY21kcy9NYWtlZmlsZS5hbQorQEAgLTM3LDcgKzM3LDcgQEAgbGlibGVhc2VfY21kc19sYV9DWFhGTEFHUyA9ICQoQU1fQ1hYRkxBR1MpCisgbGlibGVhc2VfY21kc19sYV9DUFBGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCisgCisgIyBpbnN0YWxsIHRoZSBzaGFyZWQgb2JqZWN0IGludG8gJChsaWJkaXIpL2hvb2tzCistbGliX2hvb2tzZGlyID0gJChsaWJkaXIpL2hvb2tzCisrbGliX2hvb2tzZGlyID0gJChsaWJkaXIpL2tlYS9ob29rcworIGxpYl9ob29rc19MVExJQlJBUklFUyA9IGxpYmRoY3BfbGVhc2VfY21kcy5sYQorIAorIGxpYmRoY3BfbGVhc2VfY21kc19sYV9TT1VSQ0VTICA9CistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwLWRkbnMuc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEvZmlsZXMva2VhLWRoY3AtZGRucy5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYWEyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwLWRkbnMuc2VydmljZQpAQCAtMCwwICsxLDEzIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUtlYSBESENQLURETlMgU2VydmVyCitXYW50cz1uZXR3b3JrLW9ubGluZS50YXJnZXQKK0FmdGVyPW5ldHdvcmstb25saW5lLnRhcmdldAorQWZ0ZXI9dGltZS1zeW5jLnRhcmdldAorCitbU2VydmljZV0KK0V4ZWNTdGFydFByZT1AQkFTRV9CSU5ESVJAL21rZGlyIC1wIEBMT0NBTFNUQVRFRElSQC9ydW4va2VhLworRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvbWtkaXIgLXAgQExPQ0FMU1RBVEVESVJAL2tlYQorRXhlY1N0YXJ0PUBTQklORElSQC9rZWEtZGhjcC1kZG5zIC1jIEBTWVNDT05GRElSQC9rZWEva2VhLWRoY3AtZGRucy5jb25mCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEvZmlsZXMva2VhLWRoY3A0LnNlcnZpY2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwNC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMmVkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwNC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTMgQEAKK1tVbml0XQorRGVzY3JpcHRpb249S2VhIERIQ1B2NCBTZXJ2ZXIKK1dhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldAorQWZ0ZXI9bmV0d29yay1vbmxpbmUudGFyZ2V0CitBZnRlcj10aW1lLXN5bmMudGFyZ2V0CisKK1tTZXJ2aWNlXQorRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvbWtkaXIgLXAgQExPQ0FMU1RBVEVESVJAL3J1bi9rZWEvCitFeGVjU3RhcnRQcmU9QEJBU0VfQklORElSQC9ta2RpciAtcCBATE9DQUxTVEFURURJUkAva2VhCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2tlYS1kaGNwNCAtYyBAU1lTQ09ORkRJUkAva2VhL2tlYS1kaGNwNC5jb25mCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEvZmlsZXMva2VhLWRoY3A2LnNlcnZpY2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwNi5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZDIyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2ZpbGVzL2tlYS1kaGNwNi5zZXJ2aWNlCkBAIC0wLDAgKzEsMTMgQEAKK1tVbml0XQorRGVzY3JpcHRpb249S2VhIERIQ1B2NiBTZXJ2ZXIKK1dhbnRzPW5ldHdvcmstb25saW5lLnRhcmdldAorQWZ0ZXI9bmV0d29yay1vbmxpbmUudGFyZ2V0CitBZnRlcj10aW1lLXN5bmMudGFyZ2V0CisKK1tTZXJ2aWNlXQorRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvbWtkaXIgLXAgQExPQ0FMU1RBVEVESVJAL3J1bi9rZWEvCitFeGVjU3RhcnRQcmU9QEJBU0VfQklORElSQC9ta2RpciAtcCBATE9DQUxTVEFURURJUkAva2VhCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2tlYS1kaGNwNiAtYyBAU1lTQ09ORkRJUkAva2VhL2tlYS1kaGNwNi5jb25mCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9rZWFfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdkZTA3YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNC4wLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiSVNDIEtlYSBESENQIFNlcnZlciIKK0RFU0NSSVBUSU9OID0gIktlYSBpcyB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIERIQ1Agc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IElTQy4gSXQgc3VwcG9ydHMgYm90aCBESENQdjQgYW5kIERIQ1B2NiBwcm90b2NvbHMgYWxvbmcgd2l0aCB0aGVpciBleHRlbnNpb25zLCBlLmcuIHByZWZpeCBkZWxlZ2F0aW9uIGFuZCBkeW5hbWljIHVwZGF0ZXMgdG8gRE5TLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9rZWEuaXNjLm9yZyIKK1NFQ1RJT04gPSAiY29ubmVjdGl2aXR5IgorTElDRU5TRSA9ICJNUEwtMi4wICYgQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE2NjZhOWM0YmI1NWFkYmM4OTM5ZDg1NjQzMDk2YmQzIgorCitERVBFTkRTICs9ICJrZWEtbmF0aXZlIgorCitTUkNfVVJJID0gIlwKKyAgICBodHRwOi8vZnRwLmlzYy5vcmcvaXNjL2tlYS8ke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAzLU1ha2VmaWxlLmFtLXVwZGF0ZS1ob29rc2Rpci1mb3ItbGVhc2VfY21kcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtRml4LWVycm9yLWNhbGwtb2Ytb3ZlcmxvYWRlZC1kaXN0YW5jZS1pcy1hbWJpZ3VvdXMucGF0Y2ggXAorICAgIGZpbGU6Ly9rZWEtZGhjcDQuc2VydmljZSBcCisgICAgZmlsZTovL2tlYS1kaGNwNi5zZXJ2aWNlIFwKKyAgICBmaWxlOi8va2VhLWRoY3AtZGRucy5zZXJ2aWNlIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNmVlZGQ3NDkxMDE2NDI3NTdkNzg4NDMxNjA1YWFhNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGY4ZWNiOTM2NTdhZGZjNWFiOTcwYzkxNzA2NzU0ZTYwMTA4NDgyODQ5M2YwNTNmMTU5NjYxZDIxYjMxMTI4IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWEtZGhjcDQuc2VydmljZSBrZWEtZGhjcDYuc2VydmljZSBrZWEtZGhjcC1kZG5zLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBta2RpciAtcCAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyLworICAgIGxuIC1zZiAke1NUQUdJTkdfQklORElSX05BVElWRX0va2VhLW1zZy1jb21waWxlciAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyL2tlYS1tc2ctY29tcGlsZXIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZWEtZGhjcCpzZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tlYS1kaGNwKnNlcnZpY2UKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgbG9nNGNwbHVzIGJvb3N0IgorCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSwsb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tsb2c0Y3BsdXNdID0gIi0td2l0aC1sb2c0Y3BsdXM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9LCxsb2c0Y3BsdXMsbG9nNGNwbHVzIgorUEFDS0FHRUNPTkZJR1tib29zdF0gPSAiLS13aXRoLWJvb3N0LWluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWJvb3N0LWxpYi1kaXI9JHtTVEFHSU5HX0xJQkRJUn0gLS13aXRoLWJvb3N0LWxpYnM9LWxib29zdF9zeXN0ZW0sLGJvb3N0LGJvb3N0IgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9rZWEvaG9va3MvKi5hICR7bGliZGlyfS9ob29rcy8qLmEiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2hvb2tzLyouc28iCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC43LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuNy43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmI2NWRhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC43LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMRlRQIGlzIGEgc29waGlzdGljYXRlZCBmaWxlIHRyYW5zZmVyIHByb2dyYW0gd2l0aCBcCi0gICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiBJdCBzdXBwb3J0cyBGVFAsIEhUVFAsIFwKLSAgICAgICAgICAgICAgIEZJU0gsIFNGVFAsIEhUVFBTIGFuZCBGVFBTIHByb3RvY29scyIKLUhPTUVQQUdFID0gImh0dHA6Ly9sZnRwLnlhci5ydS8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGZ0cC55YXIucnUvZnRwL2xmdHAtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZ2NjLTYtY29uZmxpY3RzLXNpZ25iaXQucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNzAxZTc2NzViYWE1NjE5YzkyNjIyZWIxNDFjODMwMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTQ0MWYyMGE5YTMxN2NmYjk5YThiOGU2MjhiYTA0NTdkZjQ3MmI2ZDkzOTY0ZDE3Mzc0ZDViNWViZGY5MjgwIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLW1vZHVsZXMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4gb3BlbnNzbCB6bGliIGdudXRscyByZWFkbGluZSBleHBhdCIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtbGliaWRuLCAtLXdpdGhvdXQtbGliaWRuLCBsaWJpZG4iCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLCAtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0lOQ0RJUn0vLi4sIC0td2l0aG91dC16bGliLCB6bGliIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsIC0td2l0aG91dC1nbnV0bHMsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfSU5DRElSfS8uLiAtLXdpdGgtcmVhZGxpbmUtaW5jPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1yZWFkbGluZS1saWI9LWxyZWFkbGluZSwgLS13aXRoLXJlYWRsaW5lPW5vLCByZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdD0ke1NUQUdJTkdfSU5DRElSfS8uLiAtLXdpdGgtZXhwYXQtaW5jPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1leHBhdC1saWI9LWxleHBhdCwgLCBleHBhdCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9sZnRwLyR7UFZ9Ly5kZWJ1ZyIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwgYmFzaCByZWFkbGluZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNzkzZDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOC40LmJiCkBAIC0wLDAgKzEsMzMgQEAKK0RFU0NSSVBUSU9OID0gIkxGVFAgaXMgYSBzb3BoaXN0aWNhdGVkIGZpbGUgdHJhbnNmZXIgcHJvZ3JhbSB3aXRoIFwKKyAgICAgICAgICAgICAgIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuIEl0IHN1cHBvcnRzIEZUUCwgSFRUUCwgXAorICAgICAgICAgICAgICAgRklTSCwgU0ZUUCwgSFRUUFMgYW5kIEZUUFMgcHJvdG9jb2xzIgorSE9NRVBBR0UgPSAiaHR0cDovL2xmdHAueWFyLnJ1LyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gImh0dHA6Ly9sZnRwLnlhci5ydS9mdHAvbGZ0cC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1nY2MtNi1jb25mbGljdHMtc2lnbmJpdC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE1NmI1MDQ3ZGJmZGEwNTJkZjRjMWRmZDE5N2FhMDkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE4NTNlZGJkMDc1YjAwOGMzMTU2NzljNzg4MmI2ZGNjNjgyMWVkMjM2NWQyZWQ4NDNhNDEyYWNkM2Q0MGRhMGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbW9kdWxlcyAtLWRpc2FibGUtcnBhdGgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHpsaWIgZ251dGxzIHJlYWRsaW5lIGV4cGF0IgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwgLS13aXRob3V0LW9wZW5zc2wsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19JTkNESVJ9Ly4uLCAtLXdpdGhvdXQtemxpYiwgemxpYiIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLCAtLXdpdGhvdXQtZ251dGxzLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0lOQ0RJUn0vLi4gLS13aXRoLXJlYWRsaW5lLWluYz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtcmVhZGxpbmUtbGliPS1scmVhZGxpbmUsIC0td2l0aC1yZWFkbGluZT1ubywgcmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0lOQ0RJUn0vLi4gLS13aXRoLWV4cGF0LWluYz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtZXhwYXQtbGliPS1sZXhwYXQsICwgZXhwYXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKK30KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9sZnRwLyR7UFZ9Ly5kZWJ1ZyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwgYmFzaCByZWFkbGluZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgppbmRleCBlNTc5ZGU1Li41M2JhMjVlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCkBAIC03LDYgKzcsOCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2R1Z3NvbmcvbGliZG5ldC5naXQ7bm9icmFuY2g9MSIKIFNSQ1JFViA9ICIxMmZjYTI5YTZkNGU5OWQxYjkyM2Q2ODIwODg3ZmU3YjI0MjI2OTA0IgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJsaWJkbmV0LSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tYmVkdGxzL21iZWR0bHNfMi4xMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYzZjdmMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tYmVkdGxzL21iZWR0bHNfMi4xMy4wLmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgY3J5cHRvIGFuZCBTU0wvVExTIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJtYmVkdGxzIGlzIGEgbGVhbiBvcGVuIHNvdXJjZSBjcnlwdG8gbGlicmFyeSAgICAgICAgICBcCitmb3IgcHJvdmlkaW5nIFNTTCBhbmQgVExTIHN1cHBvcnQgaW4geW91ciBwcm9ncmFtcy4gSXQgb2ZmZXJzICAgICAgICBcCithbiBpbnR1aXRpdmUgQVBJIGFuZCBkb2N1bWVudGVkIGhlYWRlciBmaWxlcywgc28geW91IGNhbiBhY3R1YWxseSAgICBcCit1bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gSXQgZmVhdHVyZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgLSBTeW1tZXRyaWMgYWxnb3JpdGhtcywgbGlrZSBBRVMsIEJsb3dmaXNoLCBUcmlwbGUtREVTLCBERVMsIEFSQzQsICBcCisgICBDYW1lbGxpYSBhbmQgWFRFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgLSBIYXNoIGFsZ29yaXRobXMsIGxpa2UgU0hBLTEsIFNIQS0yLCBSSVBFTUQtMTYwIGFuZCBNRDUgICAgICAgICAgICBcCisgLSBFbnRyb3B5IHBvb2wgYW5kIHJhbmRvbSBnZW5lcmF0b3JzLCBsaWtlIENUUi1EUkJHIGFuZCBITUFDLURSQkcgICBcCisgLSBQdWJsaWMga2V5IGFsZ29yaXRobXMsIGxpa2UgUlNBLCBFbGxpcHRpYyBDdXJ2ZXMsIERpZmZpZS1IZWxsbWFuLCBcCisgICBFQ0RTQSBhbmQgRUNESCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgLSBTU0wgdjMgYW5kIFRMUyAxLjAsIDEuMSBhbmQgMS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgLSBBYnN0cmFjdGlvbiBsYXllcnMgZm9yIGNpcGhlcnMsIGhhc2hlcywgcHVibGljIGtleSBvcGVyYXRpb25zLCAgICBcCisgICBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBhbmQgdGhyZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vdGxzLm1iZWQub3JnLyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzAyZDUwYTYzNjlmNWYyMmVmZGI2NzRkYjkwODE2N2EiCisKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICJodHRwczovL3Rscy5tYmVkLm9yZy9kb3dubG9hZC9tYmVkdGxzLSR7UFZ9LWFwYWNoZS50Z3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NTlkOTZiYjAzMDEyY2E2ZGI0MTRhOTEzN2ZjZGJkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTNiNGU0ZDJlMTYyOWZjNDA3YWI0NzUwZDY5ZmEzMDlhMGRkYjY2NTY1ZGMzZGViNWI2MGVkZGJkZWIwNmRhIgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzaGFyZWQtbGlicyBwcm9ncmFtcyIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkLWxpYnNdID0gIi1EVVNFX1NIQVJFRF9NQkVEVExTX0xJQlJBUlk9T04sLVVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9GRiIKK1BBQ0tBR0VDT05GSUdbcHJvZ3JhbXNdID0gIi1ERU5BQkxFX1BST0dSQU1TPU9OLC1ERU5BQkxFX1BST0dSQU1TPU9GRiIKKworRVhUUkFfT0VDTUFLRSA9ICItREVOQUJMRV9URVNUSU5HPU9GRiAtRExJQl9JTlNUQUxMX0RJUjpTVFJJTkc9JHtsaWJkaXJ9IgorCitQUk9WSURFUyArPSAicG9sYXJzc2wiCitSUFJPVklERVNfJHtQTn0gPSAicG9sYXJzc2wiCisKK1BBQ0tBR0VTID0rICIke1BOfS1wcm9ncmFtcyIKK0ZJTEVTXyR7UE59LXByb2dyYW1zID0gIiR7YmluZGlyfS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM2Y2NlMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWdodHdlaWdodCBjcnlwdG8gYW5kIFNTTC9UTFMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIm1iZWR0bHMgaXMgYSBsZWFuIG9wZW4gc291cmNlIGNyeXB0byBsaWJyYXJ5ICAgICAgICAgIFwKLWZvciBwcm92aWRpbmcgU1NMIGFuZCBUTFMgc3VwcG9ydCBpbiB5b3VyIHByb2dyYW1zLiBJdCBvZmZlcnMgICAgICAgIFwKLWFuIGludHVpdGl2ZSBBUEkgYW5kIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGVzLCBzbyB5b3UgY2FuIGFjdHVhbGx5ICAgIFwKLXVuZGVyc3RhbmQgd2hhdCB0aGUgY29kZSBkb2VzLiBJdCBmZWF0dXJlczogICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAtIFN5bW1ldHJpYyBhbGdvcml0aG1zLCBsaWtlIEFFUywgQmxvd2Zpc2gsIFRyaXBsZS1ERVMsIERFUywgQVJDNCwgIFwKLSAgIENhbWVsbGlhIGFuZCBYVEVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAtIEhhc2ggYWxnb3JpdGhtcywgbGlrZSBTSEEtMSwgU0hBLTIsIFJJUEVNRC0xNjAgYW5kIE1ENSAgICAgICAgICAgIFwKLSAtIEVudHJvcHkgcG9vbCBhbmQgcmFuZG9tIGdlbmVyYXRvcnMsIGxpa2UgQ1RSLURSQkcgYW5kIEhNQUMtRFJCRyAgIFwKLSAtIFB1YmxpYyBrZXkgYWxnb3JpdGhtcywgbGlrZSBSU0EsIEVsbGlwdGljIEN1cnZlcywgRGlmZmllLUhlbGxtYW4sIFwKLSAgIEVDRFNBIGFuZCBFQ0RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAtIFNTTCB2MyBhbmQgVExTIDEuMCwgMS4xIGFuZCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAtIEFic3RyYWN0aW9uIGxheWVycyBmb3IgY2lwaGVycywgaGFzaGVzLCBwdWJsaWMga2V5IG9wZXJhdGlvbnMsICAgIFwKLSAgIHBsYXRmb3JtIGFic3RyYWN0aW9uIGFuZCB0aHJlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly90bHMubWJlZC5vcmcvIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDJkNTBhNjM2OWY1ZjIyZWZkYjY3NGRiOTA4MTY3YSIKLQotU0VDVElPTiA9ICJsaWJkZXZlbCIKLQotU1JDX1VSSSA9ICJodHRwczovL3Rscy5tYmVkLm9yZy9kb3dubG9hZC9tYmVkdGxzLSR7UFZ9LWFwYWNoZS50Z3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDRiMGUyY2I4NDRlZmRlMWU3M2QzYmNkOTczMWZlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYjhiNjJiOTk1NzgxYmNmMjJlODdhMjY1ZWQwNjI2N2Y4N2MzMDQxMTk4ZTk5NmI0NDQ0MTIyM2QxOWZhOWMzIgotCi1pbmhlcml0IGNtYWtlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJzaGFyZWQtbGlicyBwcm9ncmFtcyIKLVBBQ0tBR0VDT05GSUdbc2hhcmVkLWxpYnNdID0gIi1EVVNFX1NIQVJFRF9NQkVEVExTX0xJQlJBUlk9T04sLVVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9GRiIKLVBBQ0tBR0VDT05GSUdbcHJvZ3JhbXNdID0gIi1ERU5BQkxFX1BST0dSQU1TPU9OLC1ERU5BQkxFX1BST0dSQU1TPU9GRiIKLQotRVhUUkFfT0VDTUFLRSA9ICItREVOQUJMRV9URVNUSU5HPU9GRiAtRExJQl9JTlNUQUxMX0RJUjpTVFJJTkc9JHtsaWJkaXJ9IgotCi1QUk9WSURFUyArPSAicG9sYXJzc2wiCi1SUFJPVklERVNfJHtQTn0gPSAicG9sYXJzc2wiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1wcm9ncmFtcyIKLUZJTEVTXyR7UE59LXByb2dyYW1zID0gIiR7YmluZGlyfS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL2ZpbGVzL21pbml1cG5wZC5zZXJ2aWNlIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9maWxlcy9taW5pdXBucGQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2JmYWQwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9maWxlcy9taW5pdXBucGQuc2VydmljZQpAQCAtMCwwICsxLDE0IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUxpZ2h0d2VpZ2h0IFVQblAgSUdEIGRhZW1vbgorRG9jdW1lbnRhdGlvbj1tYW46bWluaXVwbnBkKDgpCitBZnRlcj1uZXR3b3JrLnRhcmdldAorCitbU2VydmljZV0KK1R5cGU9Zm9ya2luZworRXhlY1N0YXJ0UHJlPS9ldGMvbWluaXVwbnBkL2lwdGFibGVzX2luaXQuc2gKK0V4ZWNTdGFydD0vdXNyL3NiaW4vbWluaXVwbnBkIC1mIC9ldGMvbWluaXVwbnBkL21pbml1cG5wZC5jb25mCitFeGVjU3RvcFBvc3Q9L2V0Yy9taW5pdXBucGQvaXB0YWJsZXNfcmVtb3ZlYWxsLnNoCitQSURGaWxlPS9ydW4vbWluaXVwbnBkLnBpZAorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW5ldHdvcmsudGFyZ2V0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjAuMjAxODAyMDMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjAuMjAxODAyMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiNWNkNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC4yMDE4MDIwMy5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IFVQblAgSUdEIGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIlRoZSBtaW5pVVBuUCBkYWVtb24gaXMgYW4gVVBuUCBJR0QgKGludGVybmV0IGdhdGV3YXkgZGV2aWNlKSBcCit3aGljaCBwcm92aWRlIE5BVCB0cmF2ZXJzYWwgc2VydmljZXMgdG8gYW55IFVQblAgZW5hYmxlZCBjbGllbnQgb24gXAordGhlIG5ldHdvcmsuIgorCitTRUNUSU9OID0gIm5ldHdvcmtpbmciCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxYWMwMGM2YjlmNWMxMDZlODkyOTFlMTk2ZmUwMjM0IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBzeXN0ZW1kCisKK0RFUEVORFMgKz0gImlwdGFibGVzIG5ldC10b29scyB1dGlsLWxpbnV4IGxpYm1ubCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgorCitTUkNfVVJJID0gImh0dHA6Ly9taW5pdXBucC50dXhmYW1pbHkub3JnL2ZpbGVzL2Rvd25sb2FkLnBocD9maWxlPSR7UH0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWluaXVwbnBkLnNlcnZpY2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNGM3YzkzODkxNWVkZWVlNmNhNGM2NWRkMDIxZjIxMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjBjMTVmMmY4MzQwZmQ2OTU0NmIwMWNmZmU0YzdmY2ZmM2U2M2E3YmRmZTVhMmFmNmIyMzQ2ZjBlMDc0YmI2IgorCitJUFY2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICctLWlwdjYnLCAnJywgZCl9IgorCitkb19jb21waWxlKCkgeworICAgIGNkICR7U30KKyAgICBDT05GSUdfT1BUSU9OUz0iJHtJUFY2fSAtLWxlYXNlZmlsZSAtLXZlbmRvcmNmZyIgb2VfcnVubWFrZSAtZiBNYWtlZmlsZS5saW51eAorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAke1N9L21pbml1cG5wZCAke0R9LyR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwdGFibGVzX2luaXQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXB0YWJsZXNfcmVtb3ZlYWxsLnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19pbml0LnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQorICAgIGluc3RhbGwgLW0gMDY0NCAtYiAke1N9L21pbml1cG5wZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsICR7U30vbGludXgvbWluaXVwbnBkLmluaXQuZC5zY3JpcHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9taW5pdXBucGQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9taW5pdXBucGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KK30KKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1pbml1cG5wZC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYzNmUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgVVBuUCBJR0QgZGFlbW9uIgotREVTQ1JJUFRJT04gPSAiVGhlIG1pbmlVUG5QIGRhZW1vbiBpcyBhbiBVUG5QIElHRCAoaW50ZXJuZXQgZ2F0ZXdheSBkZXZpY2UpIFwKLXdoaWNoIHByb3ZpZGUgTkFUIHRyYXZlcnNhbCBzZXJ2aWNlcyB0byBhbnkgVVBuUCBlbmFibGVkIGNsaWVudCBvbiBcCi10aGUgbmV0d29yay4iCi0KLVNFQ1RJT04gPSAibmV0d29ya2luZyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWE3MWM3OGMzNzNjY2ZlMGZmMjA3YWYwY2Q5NjZkOTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLURFUEVORFMgKz0gImlwdGFibGVzIG5ldC10b29scyB1dGlsLWxpbnV4IGxpYm1ubCBsaWJuZXRmaWx0ZXItY29ubnRyYWNrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9taW5pdXBucC50dXhmYW1pbHkub3JnL2ZpbGVzL2Rvd25sb2FkLnBocD9maWxlPSR7UH0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9JHtQfS50YXIuZ3ogXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjFjMDdhMjE1ZGQ5YjM2MmU3NWE5ZWZjMDVlMmZiM2I0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NmFhM2EwMGUwZjU0OTA4MjZiYmEzY2I5N2U2OGNkMjc0NzllNTgzOWFkYWM0YjliY2I2NmVhZTc4NmJmYjciCi0KLUlQVjYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJy0taXB2NicsICcnLCBkKX0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgY2QgJHtTfQotICAgIENPTkZJR19PUFRJT05TPSIke0lQVjZ9IC0tbGVhc2VmaWxlIC0tdmVuZG9yY2ZnIiBvZV9ydW5tYWtlIC1mIE1ha2VmaWxlLmxpbnV4Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c2JpbmRpcn0KLSAgICBpbnN0YWxsICR7U30vbWluaXVwbnBkICR7RH0vJHtzYmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXB0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX2luaXQuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtTfS9uZXRmaWx0ZXIvaXA2dGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC1iICR7U30vbWluaXVwbnBkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgJHtTfS9saW51eC9taW5pdXBucGQuaW5pdC5kLnNjcmlwdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL21pbml1cG5wZAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMi11dGhhc2gtcmVtb3ZlLWluLXRyZWUtdmVyc2lvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMi11dGhhc2gtcmVtb3ZlLWluLXRyZWUtdmVyc2lvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMi11dGhhc2gtcmVtb3ZlLWluLXRyZWUtdmVyc2lvbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8wMDAyLXV0aGFzaC1yZW1vdmUtaW4tdHJlZS12ZXJzaW9uLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTBjMTI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApAQCAtMCwwICsxLDg5IEBACisjISAvYmluL3NoCisKKyMgQmFzZWQgb24gdGhlIERlYmlhbiBpbml0c2NyaXB0IGZvciBtb3NxdWl0dG8KKworIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICBtb3NxdWl0dG8KKyMgUmVxdWlyZWQtU3RhcnQ6ICAgJHJlbW90ZV9mcyAkc3lzbG9nCisjIFJlcXVpcmVkLVN0b3A6ICAgICRyZW1vdGVfZnMgJHN5c2xvZworIyBEZWZhdWx0LVN0YXJ0OiAgICAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgIDAgMSA2CisjIFNob3J0LURlc2NyaXB0aW9uOiAgICBtb3NxdWl0dG8gTVFUVCBtZXNzYWdlIGJyb2tlcgorIyBEZXNjcmlwdGlvbjogCisjICBUaGlzIGlzIGEgbWVzc2FnZSBicm9rZXIgdGhhdCBzdXBwb3J0cyB2ZXJzaW9uIDMuMS8zLjEuMSBvZiB0aGUgTVEgVGVsZW1ldHJ5CisjICBUcmFuc3BvcnQgKE1RVFQpIHByb3RvY29sLgorIyAgCisjICBNUVRUIHByb3ZpZGVzIGEgbWV0aG9kIG9mIGNhcnJ5aW5nIG91dCBtZXNzYWdpbmcgdXNpbmcgYSBwdWJsaXNoL3N1YnNjcmliZQorIyAgbW9kZWwuIEl0IGlzIGxpZ2h0d2VpZ2h0LCBib3RoIGluIHRlcm1zIG9mIGJhbmR3aWR0aCB1c2FnZSBhbmQgZWFzZSBvZgorIyAgaW1wbGVtZW50YXRpb24uIFRoaXMgbWFrZXMgaXQgcGFydGljdWxhcmx5IHVzZWZ1bCBhdCB0aGUgZWRnZSBvZiB0aGUgbmV0d29yaworIyAgd2hlcmUgYSBzZW5zb3Igb3Igb3RoZXIgc2ltcGxlIGRldmljZSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgYW4gYXJkdWlubyBmb3IKKyMgIGV4YW1wbGUuCisjIyMgRU5EIElOSVQgSU5GTworCitzZXQgLWUKKworUElERklMRT1ATE9DQUxTVEFURURJUkAvcnVuL21vc3F1aXR0by5waWQKK0RBRU1PTj1AU0JJTkRJUkAvbW9zcXVpdHRvCisKKyMgc3RhcnQgYW5kIHN0b3AgdGhlIG1vc3F1aXR0byBNUVRUIG1lc3NhZ2UgYnJva2VyCisKK3Rlc3QgLXggJHtEQUVNT059IHx8IGV4aXQgMAorCit1bWFzayAwMjIKKworLiBAU1lTQ09ORkRJUkAvaW5pdC5kL2Z1bmN0aW9ucworCitleHBvcnQgUEFUSD0iJHtQQVRIOiskUEFUSDp9QFNCSU5ESVJAOkBCQVNFX1NCSU5ESVJAIgorCitjYXNlICIkMSIgaW4KKyAgICBzdGFydCkKKyAgICAgICAgZWNobyAiU3RhcnRpbmcgTW9zcXVpdHRvIG1lc3NhZ2UgYnJva2VyIiAibW9zcXVpdHRvIgorICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1iYWNrZ3JvdW5kICAtLW1ha2UtcGlkZmlsZSAtLXBpZGZpbGUgJHtQSURGSUxFfSAtLWV4ZWMgJHtEQUVNT059IDsgdGhlbgorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV4aXQgMQorICAgICAgICBmaQorICAgICAgICA7OworICAgIHN0b3ApCisgICAgICAgIGVjaG8gIlN0b3BwaW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1va25vZG8gLS1waWRmaWxlICR7UElERklMRX07IHRoZW4KKyAgICAgICAgICAgIHJtIC1mICR7UElERklMRX0KKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKworCisgICAgcmVsb2FkfGZvcmNlLXJlbG9hZCkKKyAgICAgICAgaWYgWyAtZiAke1BJREZJTEV9IF0gOyB0aGVuCisgICAgICAgICAgICBlY2hvICJSZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmb3IgbW9zcXVpdHRvIgorICAgICAgICAgICAgcGlkPWBjYXQgJHtQSURGSUxFfWAKKyAgICAgICAgICAgIGtpbGwgLUhVUCAkcGlkCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVjaG8gIm1vc3F1aXR0byBkb2VzIG5vdCBzZWVtIHRvIGJlIHJ1bm5pbmciCisgICAgICAgIGZpCisgICAgICAgIDs7CisKKyAgICByZXN0YXJ0KQorICAgICAgICBlY2hvICJSZXN0YXJ0aW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1va25vZG8gLS1yZXRyeSAzMCAtLXBpZGZpbGUgJHtQSURGSUxFfTsgdGhlbgorICAgICAgICAgICAgcm0gLWYgJHtQSURGSUxFfQorICAgICAgICBmaQorICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1iYWNrZ3JvdW5kIC0tbWFrZS1waWRmaWxlIC0tcGlkZmlsZSAke1BJREZJTEV9IC0tZXhlYyAke0RBRU1PTn0gLS0gLWMgQFNZU0NPTkZESVJAL21vc3F1aXR0by9tb3NxdWl0dG8uY29uZiA7IHRoZW4KKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbHNlCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKworICAgIHN0YXR1cykKKyAgICAgICAgc3RhdHVzICR7REFFTU9OfSAmJiBleGl0IDAgfHwgZXhpdCAkPworICAgICAgICA7OworCisgICAgKikKKyAgICAgICAgZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHJlbG9hZHxmb3JjZS1yZWxvYWR8cmVzdGFydHxzdGF0dXN9IgorICAgICAgICBleGl0IDEKK2VzYWMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YWRmZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjUuMS5iYgpAQCAtMCwwICsxLDk2IEBACitTVU1NQVJZID0gIk9wZW4gc291cmNlIE1RVFQgdjMuMS8zLjEuMSBpbXBsZW1lbnRpb24iCitERVNDUklQVElPTiA9ICJNb3NxdWl0dG8gaXMgYW4gb3BlbiBzb3VyY2UgKEVjbGlwc2UgbGljZW5zZWQpIG1lc3NhZ2UgYnJva2VyIHRoYXQgaW1wbGVtZW50cyB0aGUgTVEgVGVsZW1ldHJ5IFRyYW5zcG9ydCBwcm90b2NvbCB2ZXJzaW9uIDMuMSBhbmQgMy4xLjEuIE1RVFQgcHJvdmlkZXMgYSBsaWdodHdlaWdodCBtZXRob2Qgb2YgY2Fycnlpbmcgb3V0IG1lc3NhZ2luZyB1c2luZyBhIHB1Ymxpc2gvc3Vic2NyaWJlIG1vZGVsLiAiCitIT01FUEFHRSA9ICJodHRwOi8vbW9zcXVpdHRvLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NjJkZGM4NDYxNzllOTA4ZGMwYzhlZmVjNGE0MmVmMjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9YzA5ZjEyMTkzOWYwNjNhZWI1MjM1OTcyYmU4YzcyMmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9OGQzODNjMzc5ZTkxZDIwYmExOGE1MmMzZTdkM2E5NzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm90aWNlLmh0bWw7bWQ1PWEwMGQ2ZjlhYjU0MmJlN2JhYmMyZDhiODBkNWQyYTRjIFwKKyIKK0RFUEVORFMgPSAidXRoYXNoIgorCitTUkNfVVJJID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnL2ZpbGVzL3NvdXJjZS9tb3NxdWl0dG8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjk4Yzk5OTk4YTM2YTIzNGYzYTlkOWI0MDJiOTkxZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODU1N2JjN2FlMzRkZmFmMzJhMGZiNTZkMjQ5MWI3YTdmNzMxMjY5Yzg4MzM3MjI3MjMzMDEzNTAyZGY0ZDViMCIKKworaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKKworUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCB1dWlkIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbZG5zLXNydl0gPSAiLCxjLWFyZXMiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICIsLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIldJVEhfU1lTVEVNRD15ZXMsV0lUSF9TWVNURU1EPW5vLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3dlYnNvY2tldHNdID0gIiwsbGlid2Vic29ja2V0cyIKKworRVhUUkFfT0VNQUtFID0gIiBcCisgICAgcHJlZml4PSR7cHJlZml4fSBcCisgICAgbWFuZGlyPSR7bWFuZGlyfSBcCisgICAgbG9jYWxlZGlyPSR7bG9jYWxlZGlyfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZG5zLXNydicsICdXSVRIX1NSVj15ZXMnLCAnV0lUSF9TUlY9bm8nLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NzbCcsICdXSVRIX1RMUz15ZXMgV0lUSF9UTFNfUFNLPXllcycsICdXSVRIX1RMUz1ubyBXSVRIX1RMU19QU0s9bm8nLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V1aWQnLCAnV0lUSF9VVUlEPXllcycsICdXSVRIX1VVSUQ9bm8nLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3dlYnNvY2tldHMnLCAnV0lUSF9XRUJTT0NLRVRTPXllcycsICdXSVRIX1dFQlNPQ0tFVFM9bm8nLCBkKX0gXAorICAgIFNUUklQPS9iaW4vdHJ1ZSBcCisgICAgV0lUSF9ET0NTPW5vIFwKKyIKKworZXhwb3J0IExJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VsaWInLCBUcnVlKS5yZXBsYWNlKCdsaWInLCAnJyl9IgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXJ2aWNlL3N5c3RlbWQvbW9zcXVpdHRvLnNlcnZpY2Uubm90aWZ5ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21vc3F1aXR0by5zZXJ2aWNlCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0bworICAgIGluc3RhbGwgLW0gMDY0NCAke0R9JHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYuZXhhbXBsZSBcCisgICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbW9zcXVpdHRvLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bworICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbW9zcXVpdHRvCit9CisKK1BBQ0tBR0VTICs9ICJsaWJtb3NxdWl0dG8xIGxpYm1vc3F1aXR0b3BwMSAke1BOfS1jbGllbnRzIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9tb3NxdWl0dG8gXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19wYXNzd2QgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8gXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb3NxdWl0dG8uc2VydmljZSBcCisiCisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYiCisKK0ZJTEVTX2xpYm1vc3F1aXR0bzEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0by5zby4xIgorCitGSUxFU19saWJtb3NxdWl0dG9wcDEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0b3BwLnNvLjEiCisKK0ZJTEVTXyR7UE59LWNsaWVudHMgPSAiJHtiaW5kaXJ9L21vc3F1aXR0b19wdWIgXAorICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3N1YiBcCisiCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7c3lzY29uZmRpcn0vbW9zcXVpdHRvLyouZXhhbXBsZSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1vc3F1aXR0by5zZXJ2aWNlIgorCitJTklUU0NSSVBUX05BTUUgPSAibW9zcXVpdHRvIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMzAiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1vc3F1aXR0byIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uYW5vbXNnL25hbm9tc2dfMS4xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmFub21zZy9uYW5vbXNnXzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNmI0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmFub21zZy9uYW5vbXNnXzEuMS40LmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAibmFub21zZyBzb2NrZXQgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIm5hbm9tc2cgaXMgYSBzb2NrZXQgbGlicmFyeSB0aGF0IHByb3ZpZGVzIHNldmVyYWwgY29tbW9uIFwKK2NvbW11bmljYXRpb24gcGF0dGVybnMuIEl0IGFpbXMgdG8gbWFrZSB0aGUgbmV0d29ya2luZyBsYXllciBmYXN0LCBzY2FsYWJsZSwgXAorYW5kIGVhc3kgdG8gdXNlLiBJbXBsZW1lbnRlZCBpbiBDLCBpdCB3b3JrcyBvbiBhIHdpZGUgcmFuZ2Ugb2Ygb3BlcmF0aW5nIFwKK3N5c3RlbXMgd2l0aCBubyBmdXJ0aGVyIGRlcGVuZGVuY2llcy4iCitIT01FUEFHRSA9ICJodHRwczovL25hbm9tc2cub3JnLyIKK0xJQ0VOU0UgPSAiTUlULVgiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ODdiM2ZkN2ZkMjkxZTQxOGZmNGQyYjhmMzkwNDc1NSIKKworU0VDVElPTiA9ICJsaWJzL25ldHdvcmtpbmciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uYW5vbXNnL25hbm9tc2cuZ2l0O3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gImU3ZjhhNzUxMzE2Yjk0MmQ4OTYyY2QwMjMyYzJkNjA2YzFkOWE5ZGIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKKyMgbmFub21zZyBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24gcmVxdWlyZXMgYXNjaWlkb2N0b3IsCisjIG5vdCBhc2NpaWRvYywgYW5kIGN1cnJlbnRseSB0aGVyZSdzIG5vIGFzY2lpZG9jdG9yLW5hdGl2ZQorIyByZWNpcGUgYW55d2hlcmUgaW4gb3BlbmVtYmVkZGVkLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQKK0VYVFJBX09FQ01BS0UgPSAiIC1ETk5fRU5BQkxFX0RPQz1PRkYgIgorCisjIHdlIGRvbid0IHdhbnQgbmFub21zZy10b29scyB0byBiZSByZW5hbWVkIHRvIGxpYm5hbm9tc2ctdG9vbHMKK0RFQklBTl9OT0FVVE9OQU1FXyR7UE59LXRvb2xzID0gIjEiCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyIKK0ZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS4yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTlmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuMTAuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlci1vcGVudnBuLXBsdWdpbiIKK1NFQ1RJT04gPSAibmV0L21pc2MiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTAwZDVhNTk5YmVhZDcwZGRjZDcwZGNkNzNmMmUyOWMiCisKK0RFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmV0d29ya21hbmFnZXIgb3BlbnZwbiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorCitpbmhlcml0IGdub21lYmFzZSB1c2VyYWRkIGdldHRleHQgc3lzdGVtZAorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMTE4MjI2ZWQyYmZiYWNmZDY0YWM0ZDFlMGJkMDM4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYzg2YTdhNTM5ZDc4ZGY5MDA5NTY3NmU5MTgzZjJkNDIyZmI5M2RiZmU0YjNhZmVmMjJmODE4MjVkMzAzZDYxIgorCitTID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfSIKKworUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEKK30KKworIyBDcmVhdGUgdXNlciBhbmQgZ3JvdXAgbm0tb3BlbnZwbiB0aGF0IGFyZSBuZWVkZWQgc2luY2UgdmVyc2lvbiAxLjAuNgorVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbm0tb3BlbnZwbiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL1ZQTi9ubS1vcGVudnBuLXNlcnZpY2UubmFtZSBcCisiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5hIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBuZXR3b3JrbWFuYWdlciBcCisgICAgb3BlbnZwbiBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYwNGFkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlci1vcGVudnBuLXBsdWdpbiIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTAwZDVhNTk5YmVhZDcwZGRjZDcwZGNkNzNmMmUyOWMiCi0KLURFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmV0d29ya21hbmFnZXIgb3BlbnZwbiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSB1c2VyYWRkIGdldHRleHQgc3lzdGVtZAotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiOWYzMjViZTM4NmFhOTA2ZmY5YjBiN2MwYmRmMmE1OWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2UwYjQwMDdmMjQ4ZDk2ZGY0YjhlYjVkMGY5Mzc1MzYwNDRhZjcwNTNkZWJiYmY1MjVlNjdjOWJjNWQzMDY1NCIKLQotUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLW9wZW52cG4tJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi0td2l0aC1nbm9tZSwtLXdpdGhvdXQtZ25vbWUiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhCi19Ci0KLSMgQ3JlYXRlIHVzZXIgYW5kIGdyb3VwIG5tLW9wZW52cG4gdGhhdCBhcmUgbmVlZGVkIHNpbmNlIHZlcnNpb24gMS4wLjYKLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIG5tLW9wZW52cG4iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKLSAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4vbm0tb3BlbnZwbi1zZXJ2aWNlLm5hbWUgXAotIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouYSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgbmV0d29ya21hbmFnZXIgXAotICAgIG9wZW52cG4gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtRG8tbm90LWluY2x1ZGUtbmV0LWV0aGVybmV0LmgtYW5kLWxpbnV4LWlmX2V0aGVyLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1Eby1ub3QtaW5jbHVkZS1uZXQtZXRoZXJuZXQuaC1hbmQtbGludXgtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzQxNWJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtRG8tbm90LWluY2x1ZGUtbmV0LWV0aGVybmV0LmgtYW5kLWxpbnV4LWlmX2V0aGVyLmgucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAzZjRiNjMxOTcwMTgzNDE4MjMwNGM0MDc5MTE5NzgwZjRhZTViNDliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNyBOb3YgMjAxOCAxMTozMDo0NCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaW5jbHVkZSBuZXQvZXRoZXJuZXQuaCBhbmQgbGludXgvaWZfZXRoZXIuaAorCitUaGV5IGNvbmZsaWN0IHdoZW4gdXNlZCB0b2dldGhlciBlc3BlY2lhbGx5IHdpdGggbXVzbAorcmVtb3ZpbmcgdGhlbSBzdGlsbCBrZWVwcyBpdCB3b3JraW5nIHNvIGl0IHNlZW1zIHRoZXkgYXJlIHJlZHVuZGFudAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc2hhcmVkL24tYWNkL3NyYy9uLWFjZC5jICAgICAgICAgICAgICB8IDEgLQorIHNyYy9wbGF0Zm9ybS93cGFuL25tLXdwYW4tdXRpbHMuaCAgICAgfCAyIC0tCisgc3JjL3NldHRpbmdzL25tLXNldHRpbmdzLWNvbm5lY3Rpb24uaCB8IDIgLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zaGFyZWQvbi1hY2Qvc3JjL24tYWNkLmMgYi9zaGFyZWQvbi1hY2Qvc3JjL24tYWNkLmMKK2luZGV4IDkxNjRmOTUuLjk1MzhlNTAgMTAwNjQ0CistLS0gYS9zaGFyZWQvbi1hY2Qvc3JjL24tYWNkLmMKKysrKyBiL3NoYXJlZC9uLWFjZC9zcmMvbi1hY2QuYworQEAgLTIzLDcgKzIzLDYgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPGxpbnV4L2ZpbHRlci5oPgorLSNpbmNsdWRlIDxsaW51eC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9pZl9wYWNrZXQuaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KK2RpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vd3Bhbi9ubS13cGFuLXV0aWxzLmggYi9zcmMvcGxhdGZvcm0vd3Bhbi9ubS13cGFuLXV0aWxzLmgKK2luZGV4IGY3ZDBjMDMuLmUxYzgxZjUgMTAwNjQ0CistLS0gYS9zcmMvcGxhdGZvcm0vd3Bhbi9ubS13cGFuLXV0aWxzLmgKKysrKyBiL3NyYy9wbGF0Zm9ybS93cGFuL25tLXdwYW4tdXRpbHMuaAorQEAgLTIwLDggKzIwLDYgQEAKKyAjaWZuZGVmIF9fV1BBTl9VVElMU19IX18KKyAjZGVmaW5lIF9fV1BBTl9VVElMU19IX18KKyAKKy0jaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CistCisgI2luY2x1ZGUgIm5tLWRidXMtaW50ZXJmYWNlLmgiCisgI2luY2x1ZGUgInBsYXRmb3JtL25tLW5ldGxpbmsuaCIKKyAKK2RpZmYgLS1naXQgYS9zcmMvc2V0dGluZ3Mvbm0tc2V0dGluZ3MtY29ubmVjdGlvbi5oIGIvc3JjL3NldHRpbmdzL25tLXNldHRpbmdzLWNvbm5lY3Rpb24uaAoraW5kZXggZTc5NmI3MS4uYzAxZmVmNiAxMDA2NDQKKy0tLSBhL3NyYy9zZXR0aW5ncy9ubS1zZXR0aW5ncy1jb25uZWN0aW9uLmgKKysrKyBiL3NyYy9zZXR0aW5ncy9ubS1zZXR0aW5ncy1jb25uZWN0aW9uLmgKK0BAIC0yMiw4ICsyMiw2IEBACisgI2lmbmRlZiBfX05FVFdPUktNQU5BR0VSX1NFVFRJTkdTX0NPTk5FQ1RJT05fSF9fCisgI2RlZmluZSBfX05FVFdPUktNQU5BR0VSX1NFVFRJTkdTX0NPTk5FQ1RJT05fSF9fCisgCistI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorLQorICNpbmNsdWRlICJubS1kYnVzLW9iamVjdC5oIgorICNpbmNsdWRlICJubS1jb25uZWN0aW9uLmgiCisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtc2QtbGxkcC5oLVJlbW92ZS1uZXQtZXRoZXJuZXQuaC1zZWVtcy10by1iZS1vdmVyLXNwZS5wYXRjaAppbmRleCA3MTk0NDIzLi40OWEwNzM1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAxLXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2gKQEAgLTEsOCArMSw3IEBACiBGcm9tIDE4ZjcxYzFiNDg3MzBiODYwMjgyNjUxN2YyYjViMDg4MjgzYWU5NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNjo0ODowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDUvN10gc2QtbGxkcC5oOiBSZW1vdmUgbmV0L2V0aGVybmV0Lmggc2VlbXMgdG8gYmUgb3ZlcgotIHNwZWNpZmllZAorU3ViamVjdDogW1BBVENIXSBzZC1sbGRwLmg6IFJlbW92ZSBuZXQvZXRoZXJuZXQuaCBzZWVtcyB0byBiZSBvdmVyIHNwZWNpZmllZAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCkBAIC0xNCw3ICsxMyw3IEBACiBpbmRleCAzMWUyNDQ4Li43NzIxY2MyIDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1sbGRwLmMKICsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtbGxkcC5jCi1AQCAtMjEsNiArMjEsNyBAQAorQEAgLTMsNiArMyw3IEBACiAgI2luY2x1ZGUgIm5tLXNkLWFkYXB0LmgiCiAgCiAgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgpAQCAtMjYsNyArMjUsNyBAQAogaW5kZXggM2YzNWVlYi4uNjFiMGU0NSAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWxsZHAuaAogKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtbGxkcC5oCi1AQCAtMjIsNyArMjIsNyBAQAorQEAgLTE4LDcgKzE4LDcgQEAKICAqKiovCiAgCiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeGVkLWNvbmZpZ3VyZS5hYy1GaXgtcGtnY29uZmlnLXN5c3Jvb3QtbG9jYXRpb25zLnBhdGNoCmluZGV4IDI4ODQ4ZDMuLjM1MWYyNjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeGVkLWNvbmZpZ3VyZS5hYy1GaXgtcGtnY29uZmlnLXN5c3Jvb3QtbG9jYXRpb25zLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLUZpeGVkLWNvbmZpZ3VyZS5hYy1GaXgtcGtnY29uZmlnLXN5c3Jvb3QtbG9jYXRpb25zLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAogRnJvbSA1ODNmMDQ0OGZiN2U5YWJhMmI0MTBjMDZlZWM2ZjQyMGI0MWE2YTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUGFibG8gU2FhdmVkcmEgPHBzYWF2ZWRyYUBpZ2FsaWEuY29tPgogRGF0ZTogVHVlLCAxMyBNYXIgMjAxOCAxNzozNjoyMCArMDEwMAotU3ViamVjdDogW1BBVENIIDcvN10gRml4ZWQgY29uZmlndXJlLmFjOiBGaXggcGtnY29uZmlnIHN5c3Jvb3QgbG9jYXRpb25zCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGNvbmZpZ3VyZS5hYzogRml4IHBrZ2NvbmZpZyBzeXNyb290IGxvY2F0aW9ucwogCiAtLS0KICBjb25maWd1cmUuYWMgfCAyICstCkBAIC0xMSw3ICsxMSw3IEBACiBpbmRleCA1MWU1ZWI2Li5jOWQzZTU2IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC02NjksNyArNjY5LDcgQEAgZWxzZQorQEAgLTU3Miw3ICs1NzIsNyBAQCBpZiB0ZXN0ICIkaGF2ZV9qYW5zc29uIiA9ICJ5ZXMiOyB0aGVuCiAgCUFDX0RFRklORShXSVRIX0pBTlNTT04sIDEsIFtEZWZpbmUgaWYgSkFOU1NPTiBpcyBlbmFibGVkXSkKICAKICAJQUNfQ0hFQ0tfVE9PTFMoUkVBREVMRiwgW2V1LXJlYWRlbGYgcmVhZGVsZl0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDMtRG8tbm90LWNyZWF0ZS1zZXR0aW5ncy1zZXR0aW5ncy1wcm9wZXJ0eS1kb2N1bWVudGF0aS5wYXRjaAppbmRleCA5MjQ4NWYwLi5jNTAyOTNjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMy1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAzLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2gKQEAgLTEzLDE1ICsxMywxNSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogLS0tCi0gTWFrZWZpbGUuYW0gIHwgMTggKystLS0tLS0tLS0tLS0tLS0tCi0gY29uZmlndXJlLmFjIHwgIDQgLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKyBNYWtlZmlsZS5hbSAgfCAyMCAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNvbmZpZ3VyZS5hYyB8ICA1IC0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDYzOTkyMWQuLjMxNGE2MWQgMTAwNjQ0CitpbmRleCAxZTEwMGY2Li5kMzFlM2MxIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuYW0KICsrKyBiL01ha2VmaWxlLmFtCi1AQCAtOTYxLDkgKzk2MSw3IEBAIGVuZGlmCitAQCAtMTExNSw5ICsxMTE1LDcgQEAgRVhUUkFfRElTVCArPSBcCiAgaWYgSEFWRV9JTlRST1NQRUNUSU9OCiAgCiAgbGlibm1fbm9pbnN0X2RhdGEgPSBcCkBAIC0zMSwzNyArMzEsMzkgQEAKICAJbGlibm0vbm0tc2V0dGluZ3Mta2V5ZmlsZS1kb2NzLnhtbCBcCiAgCWxpYm5tL25tLXNldHRpbmdzLWlmY2ZnLXJoLWRvY3MueG1sCiAgCi1AQCAtMzMxNywyMyArMzMxNSwxMSBAQCAkKGNsaWVudHNfY29tbW9uX2xpYm5tY19iYXNlX2xhX09CSkVDVFMpOiAkKGxpYm5tX2NvcmVfbGliX2hfcHViX21rZW51bXMpCitAQCAtMzY5MiwyNyArMzY5MCw5IEBAICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6ICQobGlibm1fbGliX2hfcHViX21rZW51bXMpCiAgJChjbGllbnRzX2NvbW1vbl9saWJubWNfYmFzZV9sYV9PQkpFQ1RTKTogY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCiAgCi0gY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MgPSBjbGllbnRzL2NvbW1vbi9zZXR0aW5ncy1kb2NzLmMKKyBjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCA9IGNsaWVudHMvY29tbW9uL3NldHRpbmdzLWRvY3MuaAogLWlmIEhBVkVfSU5UUk9TUEVDVElPTgotLSQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpOiBjbGllbnRzL2NvbW1vbi9zZXR0aW5ncy1kb2NzLnhzbCBsaWJubS9ubS1wcm9wZXJ0eS1kb2NzLnhtbCBjbGllbnRzL2NvbW1vbi8uZGlyc3RhbXAKKy0kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKTogY2xpZW50cy9jb21tb24vc2V0dGluZ3MtZG9jcy54c2wgbGlibm0vbm0tcHJvcGVydHktZG9jcy54bWwgY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCiAtCSQoQU1fVl9HRU4pICQoWFNMVFBST0MpIC0tb3V0cHV0ICRAICQ8ICQod29yZCAyLCReKQotLURJU1RDTEVBTkZJTEVTICs9ICQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpCi0tY2hlY2stbG9jYWwtc2V0dGluZ3MtZG9jczogJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykKLS0JQGlmIHRlc3QgLXogIiQkTk1UU1RfTk9fQ0hFQ0tfU0VUVElOR1NfRE9DUyIgOyB0aGVuICBcCi0tCQlpZiAhIGNtcCAtcyAiJChzcmNkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpLmluIiAiJChidWlsZGRpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykiIDsgdGhlbiBcCi0tCQkJZWNobyAiVGhlIGdlbmVyYXRlZCBmaWxlIFwiJChidWlsZGRpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYylcIiBkaWZmZXJzIGZyb20gdGhlIHNvdXJjZSBmaWxlIFwiJChzcmNkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpLmluXCIuIFlvdSBwcm9iYWJseSBzaG91bGQgY29weSB0aGUgZ2VuZXJhdGVkIGZpbGUgb3ZlciB0byB0aGUgc291cmNlIGZpbGUuIFlvdSBjYW4gc2tpcCB0aGlzIHRlc3QgYnkgc2V0dGluZyBcJCROTVRTVF9OT19DSEVDS19TRVRUSU5HU19ET0NTPXllcyI7IFwKLS0JCQlmYWxzZTsgXAorLURJU1RDTEVBTkZJTEVTICs9ICQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2gpCistY2hlY2stbG9jYWwtc2V0dGluZ3MtZG9jczogJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkKKy0JQGlmIHRlc3QgLXogIiQkTk1UU1RfTk9fQ0hFQ0tfU0VUVElOR1NfRE9DUyIgOyB0aGVuIFwKKy0JCWlmICEgY21wIC1zICIkKHNyY2RpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkuaW4iICIkKGJ1aWxkZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKSIgOyB0aGVuIFwKKy0JCQlpZiB0ZXN0ICIkJE5NX1RFU1RfUkVHRU5FUkFURSIgPT0gMSA7IHRoZW4gXAorLQkJCQljcCAtZiAiJChidWlsZGRpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkiICIkKHNyY2RpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkuaW4iOyBcCistCQkJZWxzZSBcCistCQkJCWVjaG8gIlRoZSBnZW5lcmF0ZWQgZmlsZSBcIiQoYnVpbGRkaXIpLyQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2gpXCIgZGlmZmVycyBmcm9tIHRoZSBzb3VyY2UgZmlsZSBcIiQoc3JjZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKS5pblwiLiBZb3UgcHJvYmFibHkgc2hvdWxkIGNvcHkgdGhlIGdlbmVyYXRlZCBmaWxlIG92ZXIgdG8gdGhlIHNvdXJjZSBmaWxlLiBZb3UgY2FuIHNraXAgdGhpcyB0ZXN0IGJ5IHNldHRpbmcgXCQkTk1UU1RfTk9fQ0hFQ0tfU0VUVElOR1NfRE9DUz15ZXMiLiBZb3UgY2FuIGFsc28gYXV0b21hdGljYWxseSBjb3B5IHRoZSBmaWxlIGJ5IHJlcnVubmluZyB0aGUgdGVzdCB3aXRoIFwkJE5NX1RFU1RfUkVHRU5FUkFURT0xIDsgXAorLQkJCQlmYWxzZTsgXAorLQkJCWZpOyBcCiAtCQlmaTtcCiAtCWZpCiAtY2hlY2tfbG9jYWwgKz0gY2hlY2stbG9jYWwtc2V0dGluZ3MtZG9jcwogLWVsc2UKLSsKLSAkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKTogJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykuaW4gY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCi0gCSQoQU1fVl9HRU4pIGNwICIkKHNyY2RpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykuaW4iICIkKGJ1aWxkZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19jKSIKKyAkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKTogJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkuaW4gY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCisgCSQoQU1fVl9HRU4pIGNwICIkKHNyY2RpcikvJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkuaW4iICIkKGJ1aWxkZGlyKS8kKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKSIKICBjaGVjay1sb2NhbC1zZXR0aW5ncy1kb2NzOgogLWVuZGlmCi0rCiAgRVhUUkFfRElTVCArPSBcCi0gCSQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2MpIFwKLSAJJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfYykuaW4KKyAJJChjbGllbnRzX2NvbW1vbl9zZXR0aW5nc19kb2NfaCkgXAorIAkkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKS5pbgogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzlkM2U1Ni4uNDA3MjIyZSAxMDA2NDQKK2luZGV4IDc5ZGMzYjkuLjIzZDE0YTYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEyODYsMTAgKzEyODYsNiBAQCBHVEtfRE9DX0NIRUNLKDEuMCkKK0BAIC0xMTk1LDExICsxMTk1LDYgQEAgR1RLX0RPQ19DSEVDSygxLjApCiAgIyBjaGVjayBpZiB3ZSBjYW4gYnVpbGQgc2V0dGluZyBwcm9wZXJ0eSBkb2N1bWVudGF0aW9uCiAgYnVpbGRfZG9jcz1ubwogIGlmIHRlc3QgLW4gIiRJTlRST1NQRUNUSU9OX01BS0VGSUxFIjsgdGhlbgpAQCAtNjksOSArNzEsMTAgQEAKIC0JaWYgISAiJFBZVEhPTiIgLWMgJ2Zyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR09iamVjdCcgPiYgL2Rldi9udWxsOyB0aGVuCiAtCQlBQ19NU0dfRVJST1IoWyItLWVuYWJsZS1pbnRyb3NwZWN0aW9uIGFpbXMgdG8gYnVpbGQgdGhlIHNldHRpbmdzIGRvY3VtZW50YXRpb24uIFRoaXMgcmVxdWlyZXMgR09iamVjdCBpbnRyb3NwZWN0aW9uIGZvciBweXRob24gKHB5Z29iamVjdCldKQogLQlmaQotIAorLQogIAlBQ19QQVRIX1BST0coUEVSTCwgcGVybCkKICAJaWYgdGVzdCAteiAiJFBFUkwiOyB0aGVuCisgCQlBQ19NU0dfRVJST1IoWy0tZW5hYmxlLWludHJvc3BlY3Rpb24gcmVxdWlyZXMgcGVybF0pCiAtLSAKLTIuMTQuMworMi4xNC41CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtbXVzbC1iYXNpYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtbXVzbC1iYXNpYy5wYXRjaAppbmRleCA5ZDIwOGUxLi4wMGRkYTViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAxLW11c2wtYmFzaWMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1tdXNsLWJhc2ljLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAogRnJvbSBlOTJkZTc0MDlhM2UxMDdmOTBkMTA4YTljNWQ0OWJkMDQxODI5NmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjIgTWFyIDIwMTggMTc6NTQ6MTAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIFVzdWFsIGZpeCBmb3IgbXVzbCBsaWJjCitTdWJqZWN0OiBbUEFUQ0hdIFVzdWFsIGZpeCBmb3IgbXVzbCBsaWJjCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CkBAIC0xMywxOCArMTMsMTkgQEAKIFsxXSBodHRwczovL2dpdGh1Yi5jb20vdm9pZGxpbnV4L3ZvaWQtcGFja2FnZXMvdHJlZS9tYXN0ZXIvc3JjcGtncy9OZXR3b3JrTWFuYWdlci9wYXRjaGVzCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdGRpby11dGlsLmggfCAyICsrCiAgc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3V0aWwuaCAgICAgICB8IDUgKysrKysKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKLWluZGV4IGJkMTE0NGIuLjllYWZhY2IgMTAwNjQ0CitpbmRleCA3M2MwMzI3Li5lMWNlNjRmIDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAogKysrIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotQEAgLTE5LDcgKzE5LDkgQEAKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KK0BAIC0xLDcgKzEsOSBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAjcHJhZ21hIG9uY2UKICAKICsjaWYgZGVmaW5lZChfX0dMSUJDX18pCiAgI2luY2x1ZGUgPHByaW50Zi5oPgpAQCAtMzYsNyArMzcsNyBAQAogaW5kZXggYjMxZGZkMS4uOWI3MDMyYyAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy91dGlsLmgKICsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy91dGlsLmgKLUBAIC00Niw2ICs0NiwxMSBAQAorQEAgLTI4LDYgKzI4LDExIEBACiAgI2luY2x1ZGUgIm1pc3NpbmcuaCIKICAjaW5jbHVkZSAidGltZS11dGlsLmgiCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItbXVzbC1kbG9wZW4tY29uZmlndXJlLWFjLnBhdGNoCmluZGV4IDU0OGNjY2IuLmMxNjJjMWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItbXVzbC1kbG9wZW4tY29uZmlndXJlLWFjLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItbXVzbC1kbG9wZW4tY29uZmlndXJlLWFjLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAogRnJvbSA1NzIzOWZkYTU2YjY4YThmM2U0MTNmN2I2YWY1MjkwYmEwZDg2NjM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjIgTWFyIDIwMTggMTg6MTg6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIG11c2w6IGRsb3BlbiBpcyBpbmNsdWRlZCBzbyBMRF9MSUJTPSIiIGluc3RlYWQgb2YKK1N1YmplY3Q6IFtQQVRDSF0gbXVzbDogZGxvcGVuIGlzIGluY2x1ZGVkIHNvIExEX0xJQlM9IiIgaW5zdGVhZCBvZgogIExEX0xJQlM9Im5vbmUgcmVxdWlyZWQiCiBNSU1FLVZlcnNpb246IDEuMAogQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkBAIC0yMiw3ICsyMiw3IEBACiBpbmRleCA0ODdhMjY2Li45NmFlNGY3IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMDUsNiArMzA1LDcgQEAgZG5sCitAQCAtMjM1LDYgKzIzNSw3IEBAIGRubAogIGRubCBDaGVja3MgZm9yIGxpYmRsIC0gb24gY2VydGFpbiBwbGF0Zm9ybXMgaXRzIHBhcnQgb2YgbGliYwogIGRubAogIEFDX1NFQVJDSF9MSUJTKFtkbG9wZW5dLCBbZGwgZGxkXSwgW10sIFthY19jdl9zZWFyY2hfZGxvcGVuPV0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLW11c2wtbmV0d29yay1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaAppbmRleCA1ZGQxN2I2Li45YTU4YzBlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLW11c2wtbmV0d29yay1zdXBwb3J0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDMtbXVzbC1uZXR3b3JrLXN1cHBvcnQucGF0Y2gKQEAgLTEsNyArMSw3IEBACiBGcm9tIDcxNGI0NzMxYTIzODY1M2U5YzdkODg1YzBkZWUxMDY3N2IwYTRkZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxODoyNDowNyArMDEwMAotU3ViamVjdDogW1BBVENIIDMvNF0gbXVzbDogbmV0d29yayBzdXBwb3J0CitTdWJqZWN0OiBbUEFUQ0hdIG11c2w6IG5ldHdvcmsgc3VwcG9ydAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMTUsNyArMTUsNyBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KIC0tLQogIGxpYm5tLWNvcmUvbm0tdXRpbHMuaCAgICAgICAgICAgICAgIHwgNCArKysrCi0gc3JjL3BsYXRmb3JtL3dpZmkvd2lmaS11dGlscy5oICAgICAgfCA0ICsrKysKKyBzcmMvcGxhdGZvcm0vd2lmaS9ubS13aWZpLXV0aWxzLmggICB8IDQgKysrKwogIHNyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oIHwgNSArKysrKwogIDMgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQogCkBAIC0zNSwxMCArMzUsMTAgQEAKICAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgogIAogICNpbmNsdWRlICJubS1jb3JlLWVudW0tdHlwZXMuaCIKLWRpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmggYi9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmgKK2RpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vd2lmaS9ubS13aWZpLXV0aWxzLmggYi9zcmMvcGxhdGZvcm0vd2lmaS9ubS13aWZpLXV0aWxzLmgKIGluZGV4IDcwNTcxN2IuLmRhM2VkYzQgMTAwNjQ0Ci0tLS0gYS9zcmMvcGxhdGZvcm0vd2lmaS93aWZpLXV0aWxzLmgKLSsrKyBiL3NyYy9wbGF0Zm9ybS93aWZpL3dpZmktdXRpbHMuaAorLS0tIGEvc3JjL3BsYXRmb3JtL3dpZmkvbm0td2lmaS11dGlscy5oCisrKysgYi9zcmMvcGxhdGZvcm0vd2lmaS9ubS13aWZpLXV0aWxzLmgKIEBAIC0yMiw3ICsyMiwxMSBAQAogICNpZm5kZWYgX19XSUZJX1VUSUxTX0hfXwogICNkZWZpbmUgX19XSUZJX1VUSUxTX0hfXwpAQCAtNTAsMTIgKzUwLDEyIEBACiArI2VuZGlmCiAgCiAgI2luY2x1ZGUgIm5tLWRidXMtaW50ZXJmYWNlLmgiCi0gCisgI2luY2x1ZGUgIm5tLXNldHRpbmctd2lyZWxlc3MuaCIKIGRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc29ja2V0LXV0aWwuaCBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCiBpbmRleCBkN2UyZDg1Li5kMTA5Yzg0IDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKICsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCi1AQCAtMjksNiArMjksMTEgQEAKK0BAIC0xMSw2ICsxMSwxMSBAQAogICNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2luZmluaWJhbmQuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfcGFja2V0Lmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA0LW11c2wtcHJvY2Vzcy11dGlsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaAppbmRleCBmYzU1Y2U4Li45ZTVjOTQzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA0LW11c2wtcHJvY2Vzcy11dGlsLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDQtbXVzbC1wcm9jZXNzLXV0aWwucGF0Y2gKQEAgLTEsNyArMSw3IEBACiBGcm9tIGQ1MTNjOGJmYzk4MmRiZDk3NjYxNzE3OGIwNDBjNTEyYzk1NzEwYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgotRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxODoyOTowMCArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNF0gbXVzbDogcHJvY2Vzcy11dGlsCitEYXRlOiBUaHUsIDI1IE9jdCAyMDE4IDA5OjU3OjA3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG11c2w6IHByb2Nlc3MtdXRpbAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdApAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1pbmRleCAyNzIwMzBkLi40ODVmMWRiIDEwMDY0NAoraW5kZXggMTQxMmYwMy4uNDVmNTA0OSAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwogKysrIGIvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMzYsNiArMzYsOSBAQAorQEAgLTIxLDYgKzIxLDkgQEAKICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICAjaW5jbHVkZSA8c3lzbG9nLmg+CiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtMzEsNyArMzEsNyBAQAogICNpZiAwIC8qIE5NX0lHTk9SRUQgKi8KICAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICiAgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+Ci1AQCAtMTAxNSwxMSArMTAxOCwxMyBAQCBzdGF0aWMgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKK0BAIC0xMTUzLDExICsxMTU2LDEzIEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CiAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICB9CiAgCkBAIC0zOSwyNCArMzksMjQgQEAKICAvKiBXZSB1c2UgZ2xpYmMgX19yZWdpc3Rlcl9hdGZvcmsoKSArIF9fZHNvX2hhbmRsZSBkaXJlY3RseSBoZXJlLCBhcyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGdsaWJjCiAgICogaGVhZGVycy4gX19yZWdpc3Rlcl9hdGZvcmsoKSBpcyBtb3N0bHkgZXF1aXZhbGVudCB0byBwdGhyZWFkX2F0Zm9yaygpLCBidXQgZG9lc24ndCByZXF1aXJlIHVzIHRvIGxpbmsgYWdhaW5zdAogICAqIGxpYnB0aHJlYWQsIGFzIGl0IGlzIHBhcnQgb2YgZ2xpYmMgYW55d2F5LiAqLwotIGV4dGVybiBpbnQgX19yZWdpc3Rlcl9hdGZvcmsodm9pZCAoKnByZXBhcmUpICh2b2lkKSwgdm9pZCAoKnBhcmVudCkgKHZvaWQpLCB2b2lkICgqY2hpbGQpICh2b2lkKSwgdm9pZCAqIF9fZHNvX2hhbmRsZSk7CisgZXh0ZXJuIGludCBfX3JlZ2lzdGVyX2F0Zm9yayh2b2lkICgqcHJlcGFyZSkgKHZvaWQpLCB2b2lkICgqcGFyZW50KSAodm9pZCksIHZvaWQgKCpjaGlsZCkgKHZvaWQpLCB2b2lkICpkc29faGFuZGxlKTsKICBleHRlcm4gdm9pZCogX19kc29faGFuZGxlIF9fYXR0cmlidXRlX18gKChfX3dlYWtfXykpOwogKyNlbmRpZgogIAogIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgewotICAgICAgICAgcGlkX3QgY3VycmVudF92YWx1ZTsKLUBAIC0xMDQyLDcgKzEwNDcsMTEgQEAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7Ci0gCi0gICAgICAgICAgICAgICAgIG5ld19waWQgPSBnZXRwaWQoKTsKKyAgICAgICAgIHN0YXRpYyBib29sIGluc3RhbGxlZCA9IGZhbHNlOworQEAgLTExODYsNyArMTE5MSwxMSBAQCBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKiBvbmx5IGhhbGYtZG9jdW1lbnRlZCAoZ2xpYmMgZG9lc24ndCBkb2N1bWVudCBpdCBidXQgTFNCIGRvZXMg4oCUIHRob3VnaCBvbmx5IHN1cGVyZmljaWFsbHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICogd2UnbGwgY2hlY2sgZm9yIGVycm9ycyBvbmx5IGluIHRoZSBtb3N0IGdlbmVyaWMgZmFzaGlvbiBwb3NzaWJsZS4gKi8KICAKICsjaWZkZWYgX19HTElCQ19fCi0gICAgICAgICAgICAgICAgIGlmIChfX3JlZ2lzdGVyX2F0Zm9yayhOVUxMLCBOVUxMLCByZXNldF9jYWNoZWRfcGlkLCBfX2Rzb19oYW5kbGUpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX19yZWdpc3Rlcl9hdGZvcmsoTlVMTCwgTlVMTCwgcmVzZXRfY2FjaGVkX3BpZCwgX19kc29faGFuZGxlKSAhPSAwKSB7CiArI2Vsc2UKLSsgICAgICAgICAgICAgICAgaWYgKHB0aHJlYWRfYXRmb3JrKE5VTEwsIE5VTEwsIHJlc2V0X2NhY2hlZF9waWQpICE9IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRocmVhZF9hdGZvcmsoTlVMTCwgTlVMTCwgcmVzZXRfY2FjaGVkX3BpZCkgIT0gMCkgewogKyNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9PTT8gTGV0J3MgdHJ5IGFnYWluIGxhdGVyICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld19waWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPT00/IExldCdzIHRyeSBhZ2FpbiBsYXRlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3X3BpZDsKIC0tIAotMi4xNC4zCisyLjE0LjUKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoCmluZGV4IDc1MmZlNGYuLjZiY2E5NWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDUtbXVzbC1hdm9pZC1mdXJ0aGVyLWNvbmZsaWN0cy1ieS1pbmNsdWRpbmctbmV0LWV0aGVybi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA1LW11c2wtYXZvaWQtZnVydGhlci1jb25mbGljdHMtYnktaW5jbHVkaW5nLW5ldC1ldGhlcm4ucGF0Y2gKQEAgLTE3LDEwICsxNywxMCBAQAogIDQgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1jbGllbnQuaAotaW5kZXggNWU0NmQ4ZC4uMThhNjEzZiAxMDA2NDQKK2luZGV4IGUzODg1NTIuLjljNGRkZTggMTAwNjQ0CiAtLS0gYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oCiArKysgYi9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwLWNsaWVudC5oCi1AQCAtMjEsNyArMjEsOSBAQAorQEAgLTIwLDcgKzIwLDkgQEAKICAqKiovCiAgCiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CkBAIC0zMSwxMCArMzEsMTAgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1sZWFzZS5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1sZWFzZS5oCi1pbmRleCA3YWI5OWNjLi44NWFjZGYyIDEwMDY0NAoraW5kZXggMmE2MDE0NS4uMTlkMTgxNCAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWRoY3AtbGVhc2UuaAogKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcC1sZWFzZS5oCi1AQCAtMjIsNyArMjIsOSBAQAorQEAgLTE5LDcgKzE5LDkgQEAKICAqKiovCiAgCiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CkBAIC00NSwyNCArNDUsMjQgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcDYtY2xpZW50LmggYi9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwNi1jbGllbnQuaAotaW5kZXggNzgxOWYwZC4uMzVmMzBlZSAxMDA2NDQKK2luZGV4IGZhMzZkY2EuLjJkMjUwMTAgMTAwNjQ0CiAtLS0gYS9zcmMvc3lzdGVtZC9zcmMvc3lzdGVtZC9zZC1kaGNwNi1jbGllbnQuaAogKysrIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtZGhjcDYtY2xpZW50LmgKLUBAIC0yMSw3ICsyMSw5IEBACitAQCAtMjAsNyArMjAsOSBAQAogICoqKi8KICAKICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICsjaWYgZGVmaW5lZChfX0dMSUJDX18pCiAgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgogKyNlbmRpZgorICNpbmNsdWRlIDxzdGRib29sLmg+CiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogIAotICNpbmNsdWRlICJzZC1kaGNwNi1sZWFzZS5oIgogZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWlwdjRsbC5oIGIvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtaXB2NGxsLmgKLWluZGV4IDViYTkyMDguLmM5MGVjYTYgMTAwNjQ0CitpbmRleCA3MWJkNGNmLi4xYzY2N2JhIDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWQvc3JjL3N5c3RlbWQvc2QtaXB2NGxsLmgKICsrKyBiL3NyYy9zeXN0ZW1kL3NyYy9zeXN0ZW1kL3NkLWlwdjRsbC5oCi1AQCAtMjAsNyArMjAsOSBAQAorQEAgLTE5LDcgKzE5LDkgQEAKICAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogICoqKi8KICAKQEAgLTczLDUgKzczLDUgQEAKICAKICAjaW5jbHVkZSAic2QtZXZlbnQuaCIKIC0tIAotMi4xNC4zCisyLjE0LjUKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNi1BZGQtYS1zdHJuZHVwYS1yZXBsYWNlbWVudC1mb3ItbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDYtQWRkLWEtc3RybmR1cGEtcmVwbGFjZW1lbnQtZm9yLW11c2wucGF0Y2gKaW5kZXggOGVkN2VlNi4uMDIzYTRkOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNi1BZGQtYS1zdHJuZHVwYS1yZXBsYWNlbWVudC1mb3ItbXVzbC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoCkBAIC0xOCw3ICsxOCw3IEBACiBpbmRleCAyYTAyZDkwLi5hNTdjMzYwIDEwMDY0NAogLS0tIGEvc3JjL3N5c3RlbWQvc3JjL2Jhc2ljL2luLWFkZHItdXRpbC5jCiArKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvaW4tYWRkci11dGlsLmMKLUBAIC0zMCw2ICszMCw3IEBACitAQCAtMTMsNiArMTMsNyBAQAogICNpbmNsdWRlICJpbi1hZGRyLXV0aWwuaCIKICAjaW5jbHVkZSAibWFjcm8uaCIKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgpAQCAtMzAsNyArMzAsNyBAQAogaW5kZXggNGM5NGIxOC4uYTZkYzQ0NiAxMDA2NDQKIC0tLSBhL3NyYy9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCiArKysgYi9zcmMvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaAotQEAgLTQ0LDYgKzQ0LDExIEBACitAQCAtMjYsNiArMjYsMTEgQEAKICAjZGVmaW5lIHN0cmNhc2VlcShhLGIpIChzdHJjYXNlY21wKChhKSwoYikpID09IDApCiAgI2RlZmluZSBzdHJuY2FzZWVxKGEsIGIsIG4pIChzdHJuY2FzZWNtcCgoYSksIChiKSwgKG4pKSA9PSAwKQogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjEwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5YzVkYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi1TVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9OZXR3b3JrTWFuYWdlciIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZmZkNTY4MjI3YWRhNTA2NjQwZmU5NTBhNDgyM2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibm0tdXRpbC9DT1BZSU5HO21kNT0xYzRmYTc2NWQ2ZWIzY2QyZmJkODQzNDRhMWI4MTZjZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL2FwaS9odG1sL2xpY2Vuc2UuaHRtbDttZDU9NzdiOWUzNjI2OTBjMTQ5ZGExOTZhZWZlNzcxMmRiMzAgXAotIgotCi1ERVBFTkRTID0gIiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBsaWJ4c2x0LW5hdGl2ZSBcCi0gICAgbGlibmwgXAotICAgIGRidXMgXAotICAgIGRidXMtZ2xpYiBcCi0gICAgZGJ1cy1nbGliLW5hdGl2ZSBcCi0gICAgbGliZ3VkZXYgXAotICAgIHV0aWwtbGludXggXAotICAgIGxpYm5kcCBcCi0gICAgbGlibmV3dCBcCi0gICAgcG9sa2l0IFwKLSAgICBqYW5zc29uIFwKLSAgICBjdXJsIFwKLSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIGJsdWV0b290aCBiYXNoLWNvbXBsZXRpb24gdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi1TUkNfVVJJID0gIiBcCi0gICAgJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zZC1sbGRwLmgtUmVtb3ZlLW5ldC1ldGhlcm5ldC5oLXNlZW1zLXRvLWJlLW92ZXItc3BlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRG8tbm90LWNyZWF0ZS1zZXR0aW5ncy1zZXR0aW5ncy1wcm9wZXJ0eS1kb2N1bWVudGF0aS5wYXRjaCBcCi0gICAgZmlsZTovL211c2wvMDAwMS1tdXNsLWJhc2ljLnBhdGNoIFwKLSAgICBmaWxlOi8vbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaCBcCi0gICAgZmlsZTovL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaCBcCi0gICAgZmlsZTovL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaCBcCi0gICAgZmlsZTovL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoIFwKLSAgICBmaWxlOi8vbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZTNjNzE0N2E2OTNkYTZmODBlYjIyZjEyNjA4NmExNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YWYwYjFlODU2YTM3MjVmODg3OTFmNTVjNGZiYjA0MTA1ZGMwYjIwZGJmMTgyYWFlYzhhYWQxNjQ4MWZhYzc2IgotCi1TID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1pZmNmZy1yaCBcCi0gICAgLS1kaXNhYmxlLWlmbmV0IFwKLSAgICAtLWRpc2FibGUtaWZjZmctc3VzZSBcCi0gICAgLS1kaXNhYmxlLW1vcmUtd2FybmluZ3MgXAotICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKLSAgICAtLXdpdGgtdGVzdHMgXAotICAgIC0td2l0aC1ubXR1aT15ZXMgXAotIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiByZWxhdGVkCi1HSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsID0gIkZhbHNlIgotCi0jIHN0b2xlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9zcmNwa2dzL05ldHdvcmtNYW5hZ2VyL3RlbXBsYXRlCi1DRkxBR1NfbGliYy1tdXNsX2FwcGVuZCA9ICIgXAotICAgIC1ESEFWRV9TRUNVUkVfR0VURU5WIC1Ec2VjdXJlX2dldGVudj1nZXRlbnYgXAotICAgIC1EX19VU0VfUE9TSVgxOTkzMDkgLURSVExEX0RFRVBCSU5EPTAgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vbGlibm0vLmxpYnM6JHtCfS9saWJubS1nbGliLy5saWJzOiR7Qn0vbGlibm0tdXRpbC8ubGlicyIKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5zcyBpZnVwZG93biBuZXRjb25maWcgZGhjbGllbnQgZG5zbWFzcSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiBcCi0gICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9c3lzdGVtZCAtLWVuYWJsZS1wb2xraXQsIFwKLSAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKLSAgICBwb2xraXQgXAotIgotUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgotIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKLVBBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgotIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQotUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgotUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3dpZmldID0gIi0tZW5hYmxlLXdpZmk9eWVzLC0tZW5hYmxlLXdpZmk9bm8sd2lyZWxlc3MtdG9vbHMsd3BhLXN1cHBsaWNhbnQgd2lyZWxlc3MtdG9vbHMiCi1QQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCi1QQUNLQUdFQ09ORklHW25ldGNvbmZpZ10gPSAiLS13aXRoLW5ldGNvbmZpZz15ZXMsLS13aXRoLW5ldGNvbmZpZz1ubyIKLVBBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgotCi1QQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKLSAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKLSAgJHtQTn0tYWRzbCBcCi0iCi0KLUZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgotCi1GSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZXhlY2Rpcn0gXAotICAgICR7bGliZGlyfS9wcHBkLyovbm0tcHBwZC1wbHVnaW4uc28gXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKLSAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAotICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7YmFzZV9saWJkaXJ9L3VkZXYvKiBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAotIgotUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKLSAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0tbm10dWkgPSAiIFwKLSAgICAke2JpbmRpcn0vbm10dWkgXAotICAgICR7YmluZGlyfS9ubXR1aS1lZGl0IFwKLSAgICAke2JpbmRpcn0vbm10dWktY29ubmVjdCBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWhvc3RuYW1lIFwKLSIKLQotRklMRVNfJHtQTn0tbm10dWktZG9jID0gIiBcCi0gICAgJHttYW5kaXJ9L21hbjEvbm10dWkqIFwKLSIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk5ldHdvcmtNYW5hZ2VyLnNlcnZpY2UgTmV0d29ya01hbmFnZXItZGlzcGF0Y2hlci5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4xNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2M0ZGJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyXzEuMTQuNC5iYgpAQCAtMCwwICsxLDE0MiBAQAorU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCitTRUNUSU9OID0gIm5ldC9taXNjIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmZmZDU2ODIyN2FkYTUwNjY0MGZlOTUwYTQ4MjNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm5tLXV0aWwvQ09QWUlORzttZDU9MWM0ZmE3NjVkNmViM2NkMmZiZDg0MzQ0YTFiODE2Y2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9hcGkvaHRtbC9saWNlbnNlLmh0bWw7bWQ1PTJkNTZhMWIwYzQyZTM4OGFhODZhZWY1OWIxNTRlOGMzIFwKKyIKKworREVQRU5EUyA9ICIgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgbGlieHNsdC1uYXRpdmUgXAorICAgIGxpYm5sIFwKKyAgICBsaWJndWRldiBcCisgICAgdXRpbC1saW51eCBcCisgICAgbGlibmRwIFwKKyAgICBsaWJuZXd0IFwKKyAgICBwb2xraXQgXAorICAgIGphbnNzb24gXAorICAgIGN1cmwgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgYmx1ZXRvb3RoIGJhc2gtY29tcGxldGlvbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK1NSQ19VUkkgPSAiIFwKKyAgICAke0dOT01FX01JUlJPUn0vTmV0d29ya01hbmFnZXIvJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9OZXR3b3JrTWFuYWdlci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLXNkLWxsZHAuaC1SZW1vdmUtbmV0LWV0aGVybmV0Lmgtc2VlbXMtdG8tYmUtb3Zlci1zcGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLUZpeGVkLWNvbmZpZ3VyZS5hYy1GaXgtcGtnY29uZmlnLXN5c3Jvb3QtbG9jYXRpb25zLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaW5jbHVkZS1uZXQtZXRoZXJuZXQuaC1hbmQtbGludXgtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMS1tdXNsLWJhc2ljLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDAyLW11c2wtZGxvcGVuLWNvbmZpZ3VyZS1hYy5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMy1tdXNsLW5ldHdvcmstc3VwcG9ydC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwNC1tdXNsLXByb2Nlc3MtdXRpbC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwNS1tdXNsLWF2b2lkLWZ1cnRoZXItY29uZmxpY3RzLWJ5LWluY2x1ZGluZy1uZXQtZXRoZXJuLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDA2LUFkZC1hLXN0cm5kdXBhLXJlcGxhY2VtZW50LWZvci1tdXNsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NGNlNjJmMGFhMThlZjZjNWU3NTRlYWFjNDc0OTRhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWEzZWRlNGM3ZDEyZDYyMTIwMzNjOWU0NGNiODJiNzY5MmYzODA2M2I1M2EwNjc1NjdmMDJmNTkzN2M4YzE4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLzEuMTAvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTmV0d29ya01hbmFnZXJcLSg/UDxwdmVyPjFcLjEwKFwuXGQrKSspLnRhci54eiIKKworUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtaWZjZmctcmggXAorICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCisgICAgLS13aXRoLXRlc3RzIFwKKyAgICAtLXdpdGgtbm10dWk9eWVzIFwKKyIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcmVsYXRlZAorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbCA9ICJGYWxzZSIKKworIyBzdG9sZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZGxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvc3JjcGtncy9OZXR3b3JrTWFuYWdlci90ZW1wbGF0ZQorQ0ZMQUdTX2xpYmMtbXVzbF9hcHBlbmQgPSAiIFwKKyAgICAtREhBVkVfU0VDVVJFX0dFVEVOViAtRHNlY3VyZV9nZXRlbnY9Z2V0ZW52IFwKKyAgICAtRF9fVVNFX1BPU0lYMTk5MzA5IC1EUlRMRF9ERUVQQklORD0wIFwKKyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLy5saWJzOiR7Qn0vbGlibm0tZ2xpYi8ubGliczoke0J9L2xpYm5tLXV0aWwvLmxpYnMiCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gZGhjbGllbnQgZG5zbWFzcSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiBcCisgICAgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gLS13aXRoLXNlc3Npb24tdHJhY2tpbmc9c3lzdGVtZCAtLWVuYWJsZS1wb2xraXQsIFwKKyAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsIFwKKyAgICBwb2xraXQgXAorIgorUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgorIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCitQQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKK1BBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgorIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQorUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgorUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgorUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGgtbGlibm0tZ2xpYiwsZGJ1cy1nbGliLW5hdGl2ZSBkYnVzLWdsaWIiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbd2lmaV0gPSAiLS1lbmFibGUtd2lmaT15ZXMsLS1lbmFibGUtd2lmaT1ubywsd3BhLXN1cHBsaWNhbnQiCitQQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCitQQUNLQUdFQ09ORklHW3F0NC14MTEtZnJlZV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LHF0NC14MTEtZnJlZSIKKworUEFDS0FHRVMgPSsgImxpYm5tdXRpbCBsaWJubWdsaWIgbGlibm1nbGliLXZwbiBcCisgICR7UE59LW5tdHVpICR7UE59LW5tdHVpLWRvYyBcCisgICR7UE59LWFkc2wgXAorIgorCitGSUxFU19saWJubXV0aWwgKz0gIiR7bGliZGlyfS9saWJubS11dGlsLnNvLioiCitGSUxFU19saWJubWdsaWIgKz0gIiR7bGliZGlyfS9saWJubS1nbGliLnNvLioiCitGSUxFU19saWJubWdsaWItdnBuICs9ICIke2xpYmRpcn0vbGlibm0tZ2xpYi12cG4uc28uKiIKKworRklMRVNfJHtQTn0tYWRzbCA9ICIke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvbGlibm0tZGV2aWNlLXBsdWdpbi1hZHNsLnNvIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmV4ZWNkaXJ9IFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvJHtQVn0vKi5zbyBcCisgICAgJHtub25hcmNoX2xpYmRpcn0vTmV0d29ya01hbmFnZXIvVlBOIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9jb25mLmQgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2Jhc2VfbGliZGlyfS91ZGV2LyogXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAorIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiaXB0YWJsZXMgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdkbnNtYXNxJywgZCl9IFwKKyIKK1JDT05GTElDVFNfJHtQTn0gPSAiY29ubm1hbiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vTmV0d29ya01hbmFnZXIvZ2RiLWNtZCBcCisgICAgJHtsaWJkaXJ9L3BwcGQvKi8qLmxhIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5sYSBcCisgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyR7UFZ9LyoubGEgXAorIgorCitGSUxFU18ke1BOfS1ubXR1aSA9ICIgXAorICAgICR7YmluZGlyfS9ubXR1aSBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWVkaXQgXAorICAgICR7YmluZGlyfS9ubXR1aS1jb25uZWN0IFwKKyAgICAke2JpbmRpcn0vbm10dWktaG9zdG5hbWUgXAorIgorCitGSUxFU18ke1BOfS1ubXR1aS1kb2MgPSAiIFwKKyAgICAke21hbmRpcn0vbWFuMS9ubXR1aSogXAorIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTmV0d29ya01hbmFnZXIuc2VydmljZSBOZXR3b3JrTWFuYWdlci1kaXNwYXRjaGVyLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdF82LjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZGlzdC9yZGlzdF82LjEuNS5iYgppbmRleCBjZWExZjA4Li40ZmU2ODkzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmRpc3QvcmRpc3RfNi4xLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JkaXN0L3JkaXN0XzYuMS41LmJiCkBAIC0zMCw4ICszMCwxNCBAQAogICAgICAgICAgICAgZmlsZTovL3JkaXN0LTYuMS41LW1ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIFwKICIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3JkaXN0L2ZpbGVzL3JkaXN0LyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9yZGlzdC8oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAogRVhUUkFfT0VNQUtFID0gIkJJTl9HUk9VUD1yb290IE1BTl9HUk9VUD1yb290IFJESVNUX01PREU9NzU1IFJESVNURF9NT0RFPTc1NSBNQU5fTU9ERT02NDQiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4Njk3Mi8KK0VYQ0xVREVfRlJPTV9XT1JMRF9saWJjLW11c2wgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS8wMDAxLWxkYi1SZWZ1c2UtdG8tYnVpbGQtU2FtYmEtYWdhaW5zdC1hLW5ld2VyLW1pbm9yLXZlcnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1sZGItUmVmdXNlLXRvLWJ1aWxkLVNhbWJhLWFnYWluc3QtYS1uZXdlci1taW5vci12ZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOTQ4MzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1sZGItUmVmdXNlLXRvLWJ1aWxkLVNhbWJhLWFnYWluc3QtYS1uZXdlci1taW5vci12ZXJzLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gMGJjOGJjNDE0M2E1OGY5MWY2ZDdjZTIyOGI2NzYzZjM3N2ZkZjQ1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJldyBCYXJ0bGV0dCA8YWJhcnRsZXRAc2FtYmEub3JnPgorRGF0ZTogVGh1LCAxMiBKdWwgMjAxOCAxMjozNDo1NiArMTIwMAorU3ViamVjdDogW1BBVENIXSBsZGI6IFJlZnVzZSB0byBidWlsZCBTYW1iYSBhZ2FpbnN0IGEgbmV3ZXIgbWlub3IgdmVyc2lvbiBvZgorIGxkYgorCitTYW1iYSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIG5ldyB2ZXJzaW9ucyBvZiBsZGIgKGV4Y2VwdCByZWxlYXNlIHZlcnNpb25zKQorCitPdGhlciB1c2VycyB3b3VsZCBub3Qgbm90aWNlIHRoZSBicmVha2FnZXMsIGJ1dCBTYW1iYSBtYWtlcyBtYW55Cittb3JlIGFzc3VwdGlvbnMgYWJvdXQgdGhlIExEQiBpbnRlcm5hbHMgdGhhbiBhbnkgb3RoZXIgcGFja2FnZS4KKworKFNwZWNpZmljYWxseSwgTERCIDEuMiBhbmQgMS40IGJyb2tlIGJ1aWxkcyBhZ2FpbnN0IHJlbGVhc2VkCitTYW1iYSB2ZXJzaW9ucykKKworQlVHOiBodHRwczovL2J1Z3ppbGxhLnNhbWJhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1MTkKKworU2lnbmVkLW9mZi1ieTogQW5kcmV3IEJhcnRsZXR0IDxhYmFydGxldEBzYW1iYS5vcmc+CitSZXZpZXdlZC1ieTogR2FyeSBMb2NreWVyIDxnYXJ5QGNhdGFseXN0Lm5ldC5uej4KKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDUyZWZhNzk2NTM4YWUwMDRjYTYyZWEzMmZjOGM4MzM0NzI5OTFiZTYpCistLS0KKyBsaWIvbGRiL3dzY3JpcHQgfCAzMiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9sZGIvd3NjcmlwdCBiL2xpYi9sZGIvd3NjcmlwdAoraW5kZXggZDk0MDg2Yi4uMmJiMDgzMiAxMDA2NDQKKy0tLSBhL2xpYi9sZGIvd3NjcmlwdAorKysrIGIvbGliL2xkYi93c2NyaXB0CitAQCAtNjIsMjMgKzYyLDMzIEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiID0gY29uZi5JTl9MQVVOQ0hfRElSKCkKKyAKKyAgICAgaWYgbm90IGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiOgorKyAgICAgICAgbWF4X2xkYl92ZXJzaW9uID0gW2ludCh4KSBmb3IgeCBpbiBWRVJTSU9OLnNwbGl0KCIuIildCisrICAgICAgICBtYXhfbGRiX3ZlcnNpb25bMl0gPSA5OTkKKysgICAgICAgIG1heF9sZGJfdmVyc2lvbl9kb3RzID0gIiVkLiVkLiVkIiAlIHR1cGxlKG1heF9sZGJfdmVyc2lvbikKKysKKyAgICAgICAgIGlmIGNvbmYuZW52LmRpc2FibGVfcHl0aG9uOgorLSAgICAgICAgICAgIGlmIGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKCdsZGInLCBtaW52ZXJzaW9uPVZFUlNJT04sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5aWY9J3RhbGxvYyB0ZGIgdGV2ZW50JywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZWRfZGVwcz0ncmVwbGFjZSB0YWxsb2MgdGRiIHRldmVudCcpOgorKyAgICAgICAgICAgIGlmIGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKCdsZGInLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnZlcnNpb249VkVSU0lPTiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXh2ZXJzaW9uPW1heF9sZGJfdmVyc2lvbl9kb3RzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlpZj0ndGFsbG9jIHRkYiB0ZXZlbnQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZWRfZGVwcz0ncmVwbGFjZSB0YWxsb2MgdGRiIHRldmVudCcpOgorICAgICAgICAgICAgICAgICBjb25mLmRlZmluZSgnVVNJTkdfU1lTVEVNX0xEQicsIDEpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHVzaW5nX3N5c3RlbV9weWxkYl91dGlsID0gVHJ1ZQorLSAgICAgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0JVTkRMRURfU1lTVEVNX1BLRygncHlsZGItdXRpbCcsIG1pbnZlcnNpb249VkVSU0lPTiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5aWY9J3RhbGxvYyB0ZGIgdGV2ZW50JywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWVkX2RlcHM9J3JlcGxhY2UgdGFsbG9jIHRkYiB0ZXZlbnQgbGRiJyk6CisrICAgICAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKCdweWxkYi11dGlsJywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludmVyc2lvbj1WRVJTSU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXh2ZXJzaW9uPW1heF9sZGJfdmVyc2lvbl9kb3RzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5aWY9J3RhbGxvYyB0ZGIgdGV2ZW50JywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGllZF9kZXBzPSdyZXBsYWNlIHRhbGxvYyB0ZGIgdGV2ZW50IGxkYicpOgorICAgICAgICAgICAgICAgICB1c2luZ19zeXN0ZW1fcHlsZGJfdXRpbCA9IEZhbHNlCisgCisgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGdldCBhIHB5bGRiLXV0aWwgZm9yIGFsbCB0aGUgcHl0aG9uIHZlcnNpb25zCisgICAgICAgICAgICAgIyB3ZSBhcmUgYnVpbGRpbmcgZm9yCisgICAgICAgICAgICAgaWYgY29uZi5lbnZbJ0VYVFJBX1BZVEhPTiddOgorICAgICAgICAgICAgICAgICBuYW1lID0gJ3B5bGRiLXV0aWwnICsgY29uZi5hbGxfZW52c1snZXh0cmFweXRob24nXVsnUFlUSE9OX1NPX0FCSV9GTEFHJ10KKy0gICAgICAgICAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKG5hbWUsIG1pbnZlcnNpb249VkVSU0lPTiwKKysgICAgICAgICAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKG5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW52ZXJzaW9uPVZFUlNJT04sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXh2ZXJzaW9uPW1heF9sZGJfdmVyc2lvbl9kb3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seWlmPSd0YWxsb2MgdGRiIHRldmVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWVkX2RlcHM9J3JlcGxhY2UgdGFsbG9jIHRkYiB0ZXZlbnQgbGRiJyk6CisgICAgICAgICAgICAgICAgICAgICB1c2luZ19zeXN0ZW1fcHlsZGJfdXRpbCA9IEZhbHNlCitAQCAtODYsOSArOTYsMTEgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICAgICAgICAgICBpZiB1c2luZ19zeXN0ZW1fcHlsZGJfdXRpbDoKKyAgICAgICAgICAgICAgICAgY29uZi5kZWZpbmUoJ1VTSU5HX1NZU1RFTV9QWUxEQl9VVElMJywgMSkKKyAKKy0gICAgICAgICAgICBpZiBjb25mLkNIRUNLX0JVTkRMRURfU1lTVEVNX1BLRygnbGRiJywgbWludmVyc2lvbj1WRVJTSU9OLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seWlmPSd0YWxsb2MgdGRiIHRldmVudCBweWxkYi11dGlsJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZWRfZGVwcz0ncmVwbGFjZSB0YWxsb2MgdGRiIHRldmVudCcpOgorKyAgICAgICAgICAgIGlmIGNvbmYuQ0hFQ0tfQlVORExFRF9TWVNURU1fUEtHKCdsZGInLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnZlcnNpb249VkVSU0lPTiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXh2ZXJzaW9uPW1heF9sZGJfdmVyc2lvbl9kb3RzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHlpZj0ndGFsbG9jIHRkYiB0ZXZlbnQgcHlsZGItdXRpbCcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGllZF9kZXBzPSdyZXBsYWNlIHRhbGxvYyB0ZGIgdGV2ZW50Jyk6CisgICAgICAgICAgICAgICAgIGNvbmYuZGVmaW5lKCdVU0lOR19TWVNURU1fTERCJywgMSkKKyAKKyAgICAgaWYgY29uZi5DT05GSUdfU0VUKCdVU0lOR19TWVNURU1fTERCJyk6CistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzAwMDEtcGFja2FnaW5nLUF2b2lkLXRpbWVvdXQtZm9yLW5tYmQtaWYtc3RhcnRlZC1vZmZsaW5lLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU4OWE5Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwMS1wYWNrYWdpbmctQXZvaWQtdGltZW91dC1mb3Itbm1iZC1pZi1zdGFydGVkLW9mZmxpbmUtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zYW1iYS10ZWFtL3NhbWJhL3B1bGwvNzBdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+Ci0KLUZyb20gNTBlYWM0ZmQzMDk0NGU1ZTFkODMwNjA3NTc2MzNmZTBlZDU3MjcyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+Ci1EYXRlOiBXZWQsIDMwIE5vdiAyMDE2IDE2OjI1OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhY2thZ2luZzogQXZvaWQgdGltZW91dCBmb3Igbm1iZCBpZiBzdGFydGVkIG9mZmxpbmUgd2l0aAotIHN5c3RlbWQKLQotSWYgbm8gbmV0d29yayBjb25uZWN0aW9uIGFwcGVhcnMgd2l0aGluIERlZmF1bHRUaW1lb3V0U3RhcnRTZWMKLSh+IDkwcykgYWZ0ZXIgc3RhcnR1cCwgbm1iZCBmYWlscyB0byBub3RpZnkgc3lzdGVtZCBhbmQgd2lsbAotdGhlcmVmb3JlIGdldCBraWxsZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgT2JlcnJpdHRlciA8b2JpQG9wZW5kcmVhbWJveC5vcmc+Ci0KLS0tLQotIHBhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9wYWNrYWdpbmcvc3lzdGVtZC9ubWIuc2VydmljZSBiL3BhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlCi1pbmRleCA3MWM5M2Q2Li5mM2QyZmMyIDEwMDY0NAotLS0tIGEvcGFja2FnaW5nL3N5c3RlbWQvbm1iLnNlcnZpY2UKLSsrKyBiL3BhY2thZ2luZy9zeXN0ZW1kL25tYi5zZXJ2aWNlCi1AQCAtMTAsNiArMTAsNyBAQCBFbnZpcm9ubWVudEZpbGU9LS9ldGMvc3lzY29uZmlnL3NhbWJhCi0gRXhlY1N0YXJ0PS91c3Ivc2Jpbi9ubWJkIC0tZm9yZWdyb3VuZCAtLW5vLXByb2Nlc3MtZ3JvdXAgJE5NQkRPUFRJT05TCi0gRXhlY1JlbG9hZD0vdXNyL2Jpbi9raWxsIC1IVVAgJE1BSU5QSUQKLSBMaW1pdENPUkU9aW5maW5pdHkKLStUaW1lb3V0U3RhcnRTZWM9MAotIAotIFtJbnN0YWxsXQotIFdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwNi1hdm9pZC11c2luZy1jb2xvbi1pbi10aGUtY2hlY2tpbmctbXNnLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhLzAwMDYtYXZvaWQtdXNpbmctY29sb24taW4tdGhlLWNoZWNraW5nLW1zZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmN2EzOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvMDAwNi1hdm9pZC11c2luZy1jb2xvbi1pbi10aGUtY2hlY2tpbmctbXNnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA1NDEzZjk3MjkwZDMxMjYyNjJlYjMwOWVjYmNmNzc2OTUwOWYyYTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTAgTm92IDIwMTUgMDA6NDg6MzUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzddIGF2b2lkIHVzaW5nIGNvbG9uIGluIHRoZSBjaGVja2luZyBtc2cKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWNvbG9uIGlzIHVzZWQgYXMgdGhlIHNlcGFyYXRvciB3aGVuIHBhcnNlIGZyb20KLWEgYW5zd2VycyBmaWxlLCB0aGUgY29sb24gaGVyZSBtYWtlcyBpdCBuZXZlcgotZ2V0IHRoZSByaWdodCBhbnN3ZXIuCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB3c2NyaXB0X2NvbmZpZ3VyZV9zeXN0ZW1fbWl0a3JiNSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3dzY3JpcHRfY29uZmlndXJlX3N5c3RlbV9taXRrcmI1IGIvd3NjcmlwdF9jb25maWd1cmVfc3lzdGVtX21pdGtyYjUKLWluZGV4IGE2MmQwMGIuLmEyZDg5ZjAgMTAwNjQ0Ci0tLS0gYS93c2NyaXB0X2NvbmZpZ3VyZV9zeXN0ZW1fbWl0a3JiNQotKysrIGIvd3NjcmlwdF9jb25maWd1cmVfc3lzdGVtX21pdGtyYjUKLUBAIC0yNDAsNyArMjQwLDcgQEAgY29uZi5DSEVDS19DT0RFKCcnJwotICAgICAgICAnJycsCi0gICAgICdIQVZFX1dSRklMRV9LRVlUQUInLAotICAgICBoZWFkZXJzPSdrcmI1LmgnLCBsaWI9J2tyYjUnLCBleGVjdXRlPVRydWUsCi0tICAgIG1zZz0iQ2hlY2tpbmcgd2hldGhlciB0aGUgV1JGSUxFOi1rZXl0YWIgaXMgc3VwcG9ydGVkIik7Ci0rICAgIG1zZz0iQ2hlY2tpbmcgd2hldGhlciB0aGUgV1JGSUxFIC1rZXl0YWIgaXMgc3VwcG9ydGVkIik7Ci0gIyBDaGVjayBmb3IgS1JCNV9ERVBSRUNBVEVEIGhhbmRsaW5nCi0gY29uZi5DSEVDS19DT0RFKCcnJyNkZWZpbmUgS1JCNV9ERVBSRUNBVEVEIDEKLSAgICAgICAgI2luY2x1ZGUgPGtyYjUuaD4nJycsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaAppbmRleCA3MWRiOTljLi5hNzVhYzJiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc2FtYmEtNC4zLjktcmVtb3ZlLWdldHB3ZW50X3IucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLTQuMy45LXJlbW92ZS1nZXRwd2VudF9yLnBhdGNoCkBAIC0xLDE1ICsxLDIzIEBACi1NdXNsIGRvZXMgbm90IGhhdmUgX3IgdmVyc2lvbnMgb2YgZ2V0ZW50KCkgYW5kIGdldHB3ZW50KCkgQVBJcworRnJvbSAwMmUwYjE0ZDhmYTAyNWE1ZGI0MTBkNjBhN2MwZGZlYmQ1MzZhYWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNiBOb3YgMjAxNiAyMzo0MDo1NCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBNdXNsIGRvZXMgbm90IGhhdmUgX3IgdmVyc2lvbnMgb2YgZ2V0ZW50KCkgYW5kIGdldHB3ZW50KCkKKyBBUElzCiAKIFRha2VuIGZyb20gZ2VudG9vCiBodHRwOi8vZGF0YS5ncG8uenVnYWluYS5vcmcvbXVzbC9uZXQtZnMvc2FtYmEvZmlsZXMvc2FtYmEtNC4zLjktcmVtb3ZlLWdldHB3ZW50X3IucGF0Y2gKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotSW5kZXg6IHNhbWJhLTQuNC41L3NvdXJjZTQvdG9ydHVyZS9sb2NhbC9uc3NfdGVzdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuNC41Lm9yaWcvc291cmNlNC90b3J0dXJlL2xvY2FsL25zc190ZXN0cy5jCi0rKysgc2FtYmEtNC40LjUvc291cmNlNC90b3J0dXJlL2xvY2FsL25zc190ZXN0cy5jCi1AQCAtMjQ3LDcgKzI0Nyw2IEBAIHN0YXRpYyBib29sIHRlc3RfZ2V0Z3JuYW1fcihzdHJ1Y3QgdG9ydHUKKy0tLQorIHNvdXJjZTQvdG9ydHVyZS9sb2NhbC9uc3NfdGVzdHMuYyB8IDEzICsrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc291cmNlNC90b3J0dXJlL2xvY2FsL25zc190ZXN0cy5jIGIvc291cmNlNC90b3J0dXJlL2xvY2FsL25zc190ZXN0cy5jCitpbmRleCAyY2Q2MTIyLi4wNGYxM2M2IDEwMDY0NAorLS0tIGEvc291cmNlNC90b3J0dXJlL2xvY2FsL25zc190ZXN0cy5jCisrKysgYi9zb3VyY2U0L3RvcnR1cmUvbG9jYWwvbnNzX3Rlc3RzLmMKK0BAIC0yNDcsNyArMjQ3LDYgQEAgc3RhdGljIGJvb2wgdGVzdF9nZXRncm5hbV9yKHN0cnVjdCB0b3J0dXJlX2NvbnRleHQgKnRjdHgsCiAgCXJldHVybiB0cnVlOwogIH0KICAKQEAgLTE3LDcgKzI1LDcgQEAKICBzdGF0aWMgYm9vbCB0ZXN0X2dldGdyZ2lkKHN0cnVjdCB0b3J0dXJlX2NvbnRleHQgKnRjdHgsCiAgCQkJICBnaWRfdCBnaWQsCiAgCQkJICBzdHJ1Y3QgZ3JvdXAgKmdycF9wKQotQEAgLTMzMyw2ICszMzIsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2VudW1fcGFzc3dkKHN0cnVjdCB0b3J0CitAQCAtMzMzLDYgKzMzMiw3IEBAIHN0YXRpYyBib29sIHRlc3RfZW51bV9wYXNzd2Qoc3RydWN0IHRvcnR1cmVfY29udGV4dCAqdGN0eCwKICAJcmV0dXJuIHRydWU7CiAgfQogIApAQCAtMjUsNyArMzMsNyBAQAogIHN0YXRpYyBib29sIHRlc3RfZW51bV9yX3Bhc3N3ZChzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4LAogIAkJCSAgICAgICBzdHJ1Y3QgcGFzc3dkICoqcHdkX2FycmF5X3AsCiAgCQkJICAgICAgIHNpemVfdCAqbnVtX3B3ZF9wKQotQEAgLTM4MSw2ICszODEsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2VudW1fcl9wYXNzd2Qoc3RydWN0IHRvCitAQCAtMzgxLDYgKzM4MSw3IEBAIHN0YXRpYyBib29sIHRlc3RfZW51bV9yX3Bhc3N3ZChzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4LAogIAogIAlyZXR1cm4gdHJ1ZTsKICB9CkBAIC0zMyw3ICs0MSw3IEBACiAgCiAgc3RhdGljIGJvb2wgdG9ydHVyZV9hc3NlcnRfcGFzc3dkX2VxdWFsKHN0cnVjdCB0b3J0dXJlX2NvbnRleHQgKnRjdHgsCiAgCQkJCQljb25zdCBzdHJ1Y3QgcGFzc3dkICpwMSwKLUBAIC00MzIsNyArNDMzLDcgQEAgc3RhdGljIGJvb2wgdGVzdF9wYXNzd2RfcihzdHJ1Y3QgdG9ydHVyZQorQEAgLTQzMiw3ICs0MzMsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X3Bhc3N3ZF9yKHN0cnVjdCB0b3J0dXJlX2NvbnRleHQgKnRjdHgpCiAgCXN0cnVjdCBwYXNzd2QgKnB3ZCwgcHdkMSwgcHdkMjsKICAJc2l6ZV90IG51bV9wd2Q7CiAgCkBAIC00Miw3ICs1MCw3IEBACiAgCQkJCQkJImZhaWxlZCB0byBlbnVtZXJhdGUgcGFzc3dkIik7CiAgCiAgCWZvciAoaT0wOyBpIDwgbnVtX3B3ZDsgaSsrKSB7Ci1AQCAtNDYwLDcgKzQ2MSw3IEBAIHN0YXRpYyBib29sIHRlc3RfcGFzc3dkX3JfY3Jvc3Moc3RydWN0IHQKK0BAIC00NjAsNyArNDYxLDcgQEAgc3RhdGljIGJvb2wgdGVzdF9wYXNzd2Rfcl9jcm9zcyhzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4KQogIAlzdHJ1Y3QgcGFzc3dkICpwd2QsIHB3ZDEsIHB3ZDIsIHB3ZDMsIHB3ZDQ7CiAgCXNpemVfdCBudW1fcHdkOwogIApAQCAtNTEsNyArNTksNyBAQAogIAkJCQkJCSJmYWlsZWQgdG8gZW51bWVyYXRlIHBhc3N3ZCIpOwogIAogIAlmb3IgKGk9MDsgaSA8IG51bV9wd2Q7IGkrKykgewotQEAgLTUzMSw2ICs1MzIsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2VudW1fZ3JvdXAoc3RydWN0IHRvcnR1CitAQCAtNTMxLDYgKzUzMiw3IEBAIHN0YXRpYyBib29sIHRlc3RfZW51bV9ncm91cChzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4LAogIAlyZXR1cm4gdHJ1ZTsKICB9CiAgCkBAIC01OSw3ICs2Nyw3IEBACiAgc3RhdGljIGJvb2wgdGVzdF9lbnVtX3JfZ3JvdXAoc3RydWN0IHRvcnR1cmVfY29udGV4dCAqdGN0eCwKICAJCQkgICAgICBzdHJ1Y3QgZ3JvdXAgKipncnBfYXJyYXlfcCwKICAJCQkgICAgICBzaXplX3QgKm51bV9ncnBfcCkKLUBAIC01NzksNiArNTgxLDcgQEAgc3RhdGljIGJvb2wgdGVzdF9lbnVtX3JfZ3JvdXAoc3RydWN0IHRvcgorQEAgLTU3OSw2ICs1ODEsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2VudW1fcl9ncm91cChzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4LAogIAogIAlyZXR1cm4gdHJ1ZTsKICB9CkBAIC02Nyw3ICs3NSw3IEBACiAgCiAgc3RhdGljIGJvb2wgdG9ydHVyZV9hc3NlcnRfZ3JvdXBfZXF1YWwoc3RydWN0IHRvcnR1cmVfY29udGV4dCAqdGN0eCwKICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBncm91cCAqZzEsCi1AQCAtNjM1LDcgKzYzOCw3IEBAIHN0YXRpYyBib29sIHRlc3RfZ3JvdXBfcihzdHJ1Y3QgdG9ydHVyZV8KK0BAIC02MzUsNyArNjM4LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9ncm91cF9yKHN0cnVjdCB0b3J0dXJlX2NvbnRleHQgKnRjdHgpCiAgCXN0cnVjdCBncm91cCAqZ3JwLCBncnAxLCBncnAyOwogIAlzaXplX3QgbnVtX2dycDsKICAKQEAgLTc2LDcgKzg0LDcgQEAKICAJCQkJCSAgICAgICAiZmFpbGVkIHRvIGVudW1lcmF0ZSBncm91cCIpOwogIAogIAlmb3IgKGk9MDsgaSA8IG51bV9ncnA7IGkrKykgewotQEAgLTY2Myw3ICs2NjYsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0X2dyb3VwX3JfY3Jvc3Moc3RydWN0IHRvCitAQCAtNjYzLDcgKzY2Niw3IEBAIHN0YXRpYyBib29sIHRlc3RfZ3JvdXBfcl9jcm9zcyhzdHJ1Y3QgdG9ydHVyZV9jb250ZXh0ICp0Y3R4KQogIAlzdHJ1Y3QgZ3JvdXAgKmdycCwgZ3JwMSwgZ3JwMiwgZ3JwMywgZ3JwNDsKICAJc2l6ZV90IG51bV9ncnA7CiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc2FtYmEtcGFtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NhbWJhLXBhbS5wYXRjaAppbmRleCAwY2JhY2I2Li4yN2I0MGYyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc2FtYmEtcGFtLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zYW1iYS1wYW0ucGF0Y2gKQEAgLTEsMTQgKzEsMjEgQEAKLUxpZnRlZCBmcm9tIGdlbnRvbyBhbmQgcG9ydGVkIHRvIDQuNC41CitGcm9tIDU0YTUyNzljYjMzYWJkMjNlZjdjMDk0ZDUxZjE2MDc4ZWNlMmRhMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCA2IE5vdiAyMDE2IDIzOjQwOjU0IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIExpZnRlZCBmcm9tIGdlbnRvbyBhbmQgcG9ydGVkIHRvIDQuNC41CiAKIGh0dHA6Ly9kYXRhLmdwby56dWdhaW5hLm9yZy9tdXNsL25ldC1mcy9zYW1iYS9maWxlcy9zYW1iYS00LjIuNy1wYW0ucGF0Y2gKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotSW5kZXg6IHNhbWJhLTQuNy4wL3NvdXJjZTMvd3NjcmlwdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNhbWJhLTQuNy4wLm9yaWcvc291cmNlMy93c2NyaXB0Ci0rKysgc2FtYmEtNC43LjAvc291cmNlMy93c2NyaXB0Ci1AQCAtODc1LDcgKzg3NSw3IEBAIG1zZy5tc2dfYWNjcmlnaHRzbGVuID0gc2l6ZW9mKGZkKTsKKy0tLQorIHNvdXJjZTMvd3NjcmlwdCB8IDEzICsrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc291cmNlMy93c2NyaXB0IGIvc291cmNlMy93c2NyaXB0CitpbmRleCA1NDM2ZGIyLi44NjRmNjE0IDEwMDY0NAorLS0tIGEvc291cmNlMy93c2NyaXB0CisrKysgYi9zb3VyY2UzL3dzY3JpcHQKK0BAIC04NzksNyArODc5LDcgQEAgbXNnLm1zZ19hY2NyaWdodHNsZW4gPSBzaXplb2YoZmQpOwogICAgICAgICAgaWYgY29uZi5lbnYud2l0aF9pY29udjoKICAgICAgICAgICAgICBjb25mLkRFRklORSgnSEFWRV9JQ09OVicsIDEpCiAgCkBAIC0xNyw3ICsyNCw3IEBACiAgICAgICAgICB1c2VfcGFtPVRydWUKICAgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2VjdXJpdHkvcGFtX2FwcGwuaCBwYW0vcGFtX2FwcGwuaCcpCiAgICAgICAgICBpZiBub3QgY29uZi5DT05GSUdfU0VUKCdIQVZFX1NFQ1VSSVRZX1BBTV9BUFBMX0gnKSBhbmQgbm90IGNvbmYuQ09ORklHX1NFVCgnSEFWRV9QQU1fUEFNX0FQUExfSCcpOgotQEAgLTk1Miw2ICs5NTIsMTcgQEAgaW50IGk7IGkgPSBQQU1fUkFESU9fVFlQRTsKK0BAIC05NTYsNiArOTU2LDE3IEBAIGludCBpOyBpID0gUEFNX1JBRElPX1RZUEU7CiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgaGVhZGVycyBub3QgZm91bmQuIFVzZSAtLXdpdGhvdXQtcGFtIHRvIGRpc2FibGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIlBBTSBzdXBwb3J0LiIpOwogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NtYi5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NtYi5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYjg3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc21iLmNvbmYKQEAgLTAsMCArMSwyNTQgQEAKKyMKKyMgU2FtcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFNhbWJhIHN1aXRlIGZvciBEZWJpYW4gR05VL0xpbnV4LgorIworIworIyBUaGlzIGlzIHRoZSBtYWluIFNhbWJhIGNvbmZpZ3VyYXRpb24gZmlsZS4gWW91IHNob3VsZCByZWFkIHRoZQorIyBzbWIuY29uZig1KSBtYW51YWwgcGFnZSBpbiBvcmRlciB0byB1bmRlcnN0YW5kIHRoZSBvcHRpb25zIGxpc3RlZAorIyBoZXJlLiBTYW1iYSBoYXMgYSBodWdlIG51bWJlciBvZiBjb25maWd1cmFibGUgb3B0aW9ucyBtb3N0IG9mIHdoaWNoIAorIyBhcmUgbm90IHNob3duIGluIHRoaXMgZXhhbXBsZQorIworIyBTb21lIG9wdGlvbnMgdGhhdCBhcmUgb2Z0ZW4gd29ydGggdHVuaW5nIGhhdmUgYmVlbiBpbmNsdWRlZCBhcworIyBjb21tZW50ZWQtb3V0IGV4YW1wbGVzIGluIHRoaXMgZmlsZS4KKyMgIC0gV2hlbiBzdWNoIG9wdGlvbnMgYXJlIGNvbW1lbnRlZCB3aXRoICI7IiwgdGhlIHByb3Bvc2VkIHNldHRpbmcKKyMgICAgZGlmZmVycyBmcm9tIHRoZSBkZWZhdWx0IFNhbWJhIGJlaGF2aW91cgorIyAgLSBXaGVuIGNvbW1lbnRlZCB3aXRoICIjIiwgdGhlIHByb3Bvc2VkIHNldHRpbmcgaXMgdGhlIGRlZmF1bHQKKyMgICAgYmVoYXZpb3VyIG9mIFNhbWJhIGJ1dCB0aGUgb3B0aW9uIGlzIGNvbnNpZGVyZWQgaW1wb3J0YW50CisjICAgIGVub3VnaCB0byBiZSBtZW50aW9uZWQgaGVyZQorIworIyBOT1RFOiBXaGVuZXZlciB5b3UgbW9kaWZ5IHRoaXMgZmlsZSB5b3Ugc2hvdWxkIHJ1biB0aGUgY29tbWFuZAorIyAidGVzdHBhcm0iIHRvIGNoZWNrIHRoYXQgeW91IGhhdmUgbm90IG1hZGUgYW55IGJhc2ljIHN5bnRhY3RpYyAKKyMgZXJyb3JzLiAKKworIz09PT09PT09PT09PT09PT09PT09PT09IEdsb2JhbCBTZXR0aW5ncyA9PT09PT09PT09PT09PT09PT09PT09PQorCitbZ2xvYmFsXQorCisjIyBCcm93c2luZy9JZGVudGlmaWNhdGlvbiAjIyMKKworIyBDaGFuZ2UgdGhpcyB0byB0aGUgd29ya2dyb3VwL05ULWRvbWFpbiBuYW1lIHlvdXIgU2FtYmEgc2VydmVyIHdpbGwgcGFydCBvZgorICAgd29ya2dyb3VwID0gV09SS0dST1VQCisKKyMgV2luZG93cyBJbnRlcm5ldCBOYW1lIFNlcnZpbmcgU3VwcG9ydCBTZWN0aW9uOgorIyBXSU5TIFN1cHBvcnQgLSBUZWxscyB0aGUgTk1CRCBjb21wb25lbnQgb2YgU2FtYmEgdG8gZW5hYmxlIGl0cyBXSU5TIFNlcnZlcgorIyAgIHdpbnMgc3VwcG9ydCA9IG5vCisKKyMgV0lOUyBTZXJ2ZXIgLSBUZWxscyB0aGUgTk1CRCBjb21wb25lbnRzIG9mIFNhbWJhIHRvIGJlIGEgV0lOUyBDbGllbnQKKyMgTm90ZTogU2FtYmEgY2FuIGJlIGVpdGhlciBhIFdJTlMgU2VydmVyLCBvciBhIFdJTlMgQ2xpZW50LCBidXQgTk9UIGJvdGgKKzsgICB3aW5zIHNlcnZlciA9IHcueC55LnoKKworIyBUaGlzIHdpbGwgcHJldmVudCBubWJkIHRvIHNlYXJjaCBmb3IgTmV0QklPUyBuYW1lcyB0aHJvdWdoIEROUy4KKyAgIGRucyBwcm94eSA9IG5vCisKKyMjIyMgTmV0d29ya2luZyAjIyMjCisKKyMgVGhlIHNwZWNpZmljIHNldCBvZiBpbnRlcmZhY2VzIC8gbmV0d29ya3MgdG8gYmluZCB0bworIyBUaGlzIGNhbiBiZSBlaXRoZXIgdGhlIGludGVyZmFjZSBuYW1lIG9yIGFuIElQIGFkZHJlc3MvbmV0bWFzazsKKyMgaW50ZXJmYWNlIG5hbWVzIGFyZSBub3JtYWxseSBwcmVmZXJyZWQKKzsgICBpbnRlcmZhY2VzID0gMTI3LjAuMC4wLzggZXRoMAorCisjIE9ubHkgYmluZCB0byB0aGUgbmFtZWQgaW50ZXJmYWNlcyBhbmQvb3IgbmV0d29ya3M7IHlvdSBtdXN0IHVzZSB0aGUKKyMgJ2ludGVyZmFjZXMnIG9wdGlvbiBhYm92ZSB0byB1c2UgdGhpcy4KKyMgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgZW5hYmxlIHRoaXMgZmVhdHVyZSBpZiB5b3VyIFNhbWJhIG1hY2hpbmUgaXMKKyMgbm90IHByb3RlY3RlZCBieSBhIGZpcmV3YWxsIG9yIGlzIGEgZmlyZXdhbGwgaXRzZWxmLiAgSG93ZXZlciwgdGhpcworIyBvcHRpb24gY2Fubm90IGhhbmRsZSBkeW5hbWljIG9yIG5vbi1icm9hZGNhc3QgaW50ZXJmYWNlcyBjb3JyZWN0bHkuCis7ICAgYmluZCBpbnRlcmZhY2VzIG9ubHkgPSB5ZXMKKworCisKKyMjIyMgRGVidWdnaW5nL0FjY291bnRpbmcgIyMjIworCisjIFRoaXMgdGVsbHMgU2FtYmEgdG8gdXNlIGEgc2VwYXJhdGUgbG9nIGZpbGUgZm9yIGVhY2ggbWFjaGluZQorIyB0aGF0IGNvbm5lY3RzCisgICBsb2cgZmlsZSA9IC92YXIvbG9nL3NhbWJhL2xvZy4lbQorCisjIENhcCB0aGUgc2l6ZSBvZiB0aGUgaW5kaXZpZHVhbCBsb2cgZmlsZXMgKGluIEtpQikuCisgICBtYXggbG9nIHNpemUgPSAxMDAwCisKKyMgSWYgeW91IHdhbnQgU2FtYmEgdG8gb25seSBsb2cgdGhyb3VnaCBzeXNsb2cgdGhlbiBzZXQgdGhlIGZvbGxvd2luZworIyBwYXJhbWV0ZXIgdG8gJ3llcycuCisjICAgc3lzbG9nIG9ubHkgPSBubworCisjIFdlIHdhbnQgU2FtYmEgdG8gbG9nIGEgbWluaW11bSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdG8gc3lzbG9nLiBFdmVyeXRoaW5nCisjIHNob3VsZCBnbyB0byAvdmFyL2xvZy9zYW1iYS9sb2cue3NtYmQsbm1iZH0gaW5zdGVhZC4gSWYgeW91IHdhbnQgdG8gbG9nCisjIHRocm91Z2ggc3lzbG9nIHlvdSBzaG91bGQgc2V0IHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyIHRvIHNvbWV0aGluZyBoaWdoZXIuCisgICBzeXNsb2cgPSAwCisKKyMgRG8gc29tZXRoaW5nIHNlbnNpYmxlIHdoZW4gU2FtYmEgY3Jhc2hlczogbWFpbCB0aGUgYWRtaW4gYSBiYWNrdHJhY2UKKyAgIHBhbmljIGFjdGlvbiA9IC91c3Ivc2hhcmUvc2FtYmEvcGFuaWMtYWN0aW9uICVkCisKKworIyMjIyMjIyBBdXRoZW50aWNhdGlvbiAjIyMjIyMjCisKKyMgU2VydmVyIHJvbGUuIERlZmluZXMgaW4gd2hpY2ggbW9kZSBTYW1iYSB3aWxsIG9wZXJhdGUuIFBvc3NpYmxlCisjIHZhbHVlcyBhcmUgInN0YW5kYWxvbmUgc2VydmVyIiwgIm1lbWJlciBzZXJ2ZXIiLCAiY2xhc3NpYyBwcmltYXJ5CisjIGRvbWFpbiBjb250cm9sbGVyIiwgImNsYXNzaWMgYmFja3VwIGRvbWFpbiBjb250cm9sbGVyIiwgImFjdGl2ZQorIyBkaXJlY3RvcnkgZG9tYWluIGNvbnRyb2xsZXIiLiAKKyMKKyMgTW9zdCBwZW9wbGUgd2lsbCB3YW50ICJzdGFuZGFsb25lIHNlcnZlciIgb3IgIm1lbWJlciBzZXJ2ZXIiLgorIyBSdW5uaW5nIGFzICJhY3RpdmUgZGlyZWN0b3J5IGRvbWFpbiBjb250cm9sbGVyIiB3aWxsIHJlcXVpcmUgZmlyc3QKKyMgcnVubmluZyAic2FtYmEtdG9vbCBkb21haW4gcHJvdmlzaW9uIiB0byB3aXBlIGRhdGFiYXNlcyBhbmQgY3JlYXRlIGEKKyMgbmV3IGRvbWFpbi4KKyAgIHNlcnZlciByb2xlID0gc3RhbmRhbG9uZSBzZXJ2ZXIKKworIyBJZiB5b3UgYXJlIHVzaW5nIGVuY3J5cHRlZCBwYXNzd29yZHMsIFNhbWJhIHdpbGwgbmVlZCB0byBrbm93IHdoYXQKKyMgcGFzc3dvcmQgZGF0YWJhc2UgdHlwZSB5b3UgYXJlIHVzaW5nLiAgCisgICBwYXNzZGIgYmFja2VuZCA9IHRkYnNhbQorCisgICBvYmV5IHBhbSByZXN0cmljdGlvbnMgPSB5ZXMKKworIyBUaGlzIGJvb2xlYW4gcGFyYW1ldGVyIGNvbnRyb2xzIHdoZXRoZXIgU2FtYmEgYXR0ZW1wdHMgdG8gc3luYyB0aGUgVW5peAorIyBwYXNzd29yZCB3aXRoIHRoZSBTTUIgcGFzc3dvcmQgd2hlbiB0aGUgZW5jcnlwdGVkIFNNQiBwYXNzd29yZCBpbiB0aGUKKyMgcGFzc2RiIGlzIGNoYW5nZWQuCisgICB1bml4IHBhc3N3b3JkIHN5bmMgPSB5ZXMKKworIyBGb3IgVW5peCBwYXNzd29yZCBzeW5jIHRvIHdvcmsgb24gYSBEZWJpYW4gR05VL0xpbnV4IHN5c3RlbSwgdGhlIGZvbGxvd2luZworIyBwYXJhbWV0ZXJzIG11c3QgYmUgc2V0ICh0aGFua3MgdG8gSWFuIEthaGFuIDw8a2FoYW5AaW5mb3JtYXRpay50dS1tdWVuY2hlbi5kZT4gZm9yCisjIHNlbmRpbmcgdGhlIGNvcnJlY3QgY2hhdCBzY3JpcHQgZm9yIHRoZSBwYXNzd2QgcHJvZ3JhbSBpbiBEZWJpYW4gU2FyZ2UpLgorICAgcGFzc3dkIHByb2dyYW0gPSAvdXNyL2Jpbi9wYXNzd2QgJXUKKyAgIHBhc3N3ZCBjaGF0ID0gKkVudGVyXHNuZXdccypcc3Bhc3N3b3JkOiogJW5cbiAqUmV0eXBlXHNuZXdccypcc3Bhc3N3b3JkOiogJW5cbiAqcGFzc3dvcmRcc3VwZGF0ZWRcc3N1Y2Nlc3NmdWxseSogLgorCisjIFRoaXMgYm9vbGVhbiBjb250cm9scyB3aGV0aGVyIFBBTSB3aWxsIGJlIHVzZWQgZm9yIHBhc3N3b3JkIGNoYW5nZXMKKyMgd2hlbiByZXF1ZXN0ZWQgYnkgYW4gU01CIGNsaWVudCBpbnN0ZWFkIG9mIHRoZSBwcm9ncmFtIGxpc3RlZCBpbgorIyAncGFzc3dkIHByb2dyYW0nLiBUaGUgZGVmYXVsdCBpcyAnbm8nLgorICAgcGFtIHBhc3N3b3JkIGNoYW5nZSA9IHllcworCisjIFRoaXMgb3B0aW9uIGNvbnRyb2xzIGhvdyB1bnN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24gYXR0ZW1wdHMgYXJlIG1hcHBlZAorIyB0byBhbm9ueW1vdXMgY29ubmVjdGlvbnMKKyAgIG1hcCB0byBndWVzdCA9IGJhZCB1c2VyCisKKyMjIyMjIyMjIyMgRG9tYWlucyAjIyMjIyMjIyMjIworCisjCisjIFRoZSBmb2xsb3dpbmcgc2V0dGluZ3Mgb25seSB0YWtlcyBlZmZlY3QgaWYgJ3NlcnZlciByb2xlID0gcHJpbWFyeQorIyBjbGFzc2ljIGRvbWFpbiBjb250cm9sbGVyJywgJ3NlcnZlciByb2xlID0gYmFja3VwIGRvbWFpbiBjb250cm9sbGVyJworIyBvciAnZG9tYWluIGxvZ29ucycgaXMgc2V0IAorIworCisjIEl0IHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIHVzZXIncworIyBwcm9maWxlIGRpcmVjdG9yeSBmcm9tIHRoZSBjbGllbnQgcG9pbnQgb2YgdmlldykgVGhlIGZvbGxvd2luZworIyByZXF1aXJlZCBhIFtwcm9maWxlc10gc2hhcmUgdG8gYmUgc2V0dXAgb24gdGhlIHNhbWJhIHNlcnZlciAoc2VlCisjIGJlbG93KQorOyAgIGxvZ29uIHBhdGggPSBcXCVOXHByb2ZpbGVzXCVVCisjIEFub3RoZXIgY29tbW9uIGNob2ljZSBpcyBzdG9yaW5nIHRoZSBwcm9maWxlIGluIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkKKyMgKHRoaXMgaXMgU2FtYmEncyBkZWZhdWx0KQorIyAgIGxvZ29uIHBhdGggPSBcXCVOXCVVXHByb2ZpbGUKKworIyBUaGUgZm9sbG93aW5nIHNldHRpbmcgb25seSB0YWtlcyBlZmZlY3QgaWYgJ2RvbWFpbiBsb2dvbnMnIGlzIHNldAorIyBJdCBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIGEgdXNlcidzIGhvbWUgZGlyZWN0b3J5IChmcm9tIHRoZSBjbGllbnQKKyMgcG9pbnQgb2YgdmlldykKKzsgICBsb2dvbiBkcml2ZSA9IEg6CisjICAgbG9nb24gaG9tZSA9IFxcJU5cJVUKKworIyBUaGUgZm9sbG93aW5nIHNldHRpbmcgb25seSB0YWtlcyBlZmZlY3QgaWYgJ2RvbWFpbiBsb2dvbnMnIGlzIHNldAorIyBJdCBzcGVjaWZpZXMgdGhlIHNjcmlwdCB0byBydW4gZHVyaW5nIGxvZ29uLiBUaGUgc2NyaXB0IG11c3QgYmUgc3RvcmVkCisjIGluIHRoZSBbbmV0bG9nb25dIHNoYXJlCisjIE5PVEU6IE11c3QgYmUgc3RvcmUgaW4gJ0RPUycgZmlsZSBmb3JtYXQgY29udmVudGlvbgorOyAgIGxvZ29uIHNjcmlwdCA9IGxvZ29uLmNtZAorCisjIFRoaXMgYWxsb3dzIFVuaXggdXNlcnMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgZG9tYWluIGNvbnRyb2xsZXIgdmlhIHRoZSBTQU1SCisjIFJQQyBwaXBlLiAgVGhlIGV4YW1wbGUgY29tbWFuZCBjcmVhdGVzIGEgdXNlciBhY2NvdW50IHdpdGggYSBkaXNhYmxlZCBVbml4CisjIHBhc3N3b3JkOyBwbGVhc2UgYWRhcHQgdG8geW91ciBuZWVkcworOyBhZGQgdXNlciBzY3JpcHQgPSAvdXNyL3NiaW4vYWRkdXNlciAtLXF1aWV0IC0tZGlzYWJsZWQtcGFzc3dvcmQgLS1nZWNvcyAiIiAldQorCisjIFRoaXMgYWxsb3dzIG1hY2hpbmUgYWNjb3VudHMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgZG9tYWluIGNvbnRyb2xsZXIgdmlhIHRoZSAKKyMgU0FNUiBSUEMgcGlwZS4gIAorIyBUaGUgZm9sbG93aW5nIGFzc3VtZXMgYSAibWFjaGluZXMiIGdyb3VwIGV4aXN0cyBvbiB0aGUgc3lzdGVtCis7IGFkZCBtYWNoaW5lIHNjcmlwdCAgPSAvdXNyL3NiaW4vdXNlcmFkZCAtZyBtYWNoaW5lcyAtYyAiJXUgbWFjaGluZSBhY2NvdW50IiAtZCAvdmFyL2xpYi9zYW1iYSAtcyAvYmluL2ZhbHNlICV1CisKKyMgVGhpcyBhbGxvd3MgVW5peCBncm91cHMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgZG9tYWluIGNvbnRyb2xsZXIgdmlhIHRoZSBTQU1SCisjIFJQQyBwaXBlLiAgCis7IGFkZCBncm91cCBzY3JpcHQgPSAvdXNyL3NiaW4vYWRkZ3JvdXAgLS1mb3JjZS1iYWRuYW1lICVnCisKKyMjIyMjIyMjIyMjIyBNaXNjICMjIyMjIyMjIyMjIworCisjIFVzaW5nIHRoZSBmb2xsb3dpbmcgbGluZSBlbmFibGVzIHlvdSB0byBjdXN0b21pc2UgeW91ciBjb25maWd1cmF0aW9uCisjIG9uIGEgcGVyIG1hY2hpbmUgYmFzaXMuIFRoZSAlbSBnZXRzIHJlcGxhY2VkIHdpdGggdGhlIG5ldGJpb3MgbmFtZQorIyBvZiB0aGUgbWFjaGluZSB0aGF0IGlzIGNvbm5lY3RpbmcKKzsgICBpbmNsdWRlID0gL2hvbWUvc2FtYmEvZXRjL3NtYi5jb25mLiVtCisKKyMgU29tZSBkZWZhdWx0cyBmb3Igd2luYmluZCAobWFrZSBzdXJlIHlvdSdyZSBub3QgdXNpbmcgdGhlIHJhbmdlcworIyBmb3Igc29tZXRoaW5nIGVsc2UuKQorOyAgIGlkbWFwIHVpZCA9IDEwMDAwLTIwMDAwCis7ICAgaWRtYXAgZ2lkID0gMTAwMDAtMjAwMDAKKzsgICB0ZW1wbGF0ZSBzaGVsbCA9IC9iaW4vYmFzaAorCisjIFNldHVwIHVzZXJzaGFyZSBvcHRpb25zIHRvIGVuYWJsZSBub24tcm9vdCB1c2VycyB0byBzaGFyZSBmb2xkZXJzCisjIHdpdGggdGhlIG5ldCB1c2Vyc2hhcmUgY29tbWFuZC4KKworIyBNYXhpbXVtIG51bWJlciBvZiB1c2Vyc2hhcmUuIDAgKGRlZmF1bHQpIG1lYW5zIHRoYXQgdXNlcnNoYXJlIGlzIGRpc2FibGVkLgorOyAgIHVzZXJzaGFyZSBtYXggc2hhcmVzID0gMTAwCisKKyMgQWxsb3cgdXNlcnMgd2hvJ3ZlIGJlZW4gZ3JhbnRlZCB1c2Vyc2hhcmUgcHJpdmlsZWdlcyB0byBjcmVhdGUKKyMgcHVibGljIHNoYXJlcywgbm90IGp1c3QgYXV0aGVudGljYXRlZCBvbmVzCisgICB1c2Vyc2hhcmUgYWxsb3cgZ3Vlc3RzID0geWVzCisKKyM9PT09PT09PT09PT09PT09PT09PT09PSBTaGFyZSBEZWZpbml0aW9ucyA9PT09PT09PT09PT09PT09PT09PT09PQorCitbaG9tZXNdCisgICBjb21tZW50ID0gSG9tZSBEaXJlY3RvcmllcworICAgYnJvd3NlYWJsZSA9IG5vCisKKyMgQnkgZGVmYXVsdCwgdGhlIGhvbWUgZGlyZWN0b3JpZXMgYXJlIGV4cG9ydGVkIHJlYWQtb25seS4gQ2hhbmdlIHRoZQorIyBuZXh0IHBhcmFtZXRlciB0byAnbm8nIGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlbS4KKyAgIHJlYWQgb25seSA9IHllcworCisjIEZpbGUgY3JlYXRpb24gbWFzayBpcyBzZXQgdG8gMDcwMCBmb3Igc2VjdXJpdHkgcmVhc29ucy4gSWYgeW91IHdhbnQgdG8KKyMgY3JlYXRlIGZpbGVzIHdpdGggZ3JvdXA9cncgcGVybWlzc2lvbnMsIHNldCBuZXh0IHBhcmFtZXRlciB0byAwNzc1LgorICAgY3JlYXRlIG1hc2sgPSAwNzAwCisKKyMgRGlyZWN0b3J5IGNyZWF0aW9uIG1hc2sgaXMgc2V0IHRvIDA3MDAgZm9yIHNlY3VyaXR5IHJlYXNvbnMuIElmIHlvdSB3YW50IHRvCisjIGNyZWF0ZSBkaXJzLiB3aXRoIGdyb3VwPXJ3IHBlcm1pc3Npb25zLCBzZXQgbmV4dCBwYXJhbWV0ZXIgdG8gMDc3NS4KKyAgIGRpcmVjdG9yeSBtYXNrID0gMDcwMAorCisjIEJ5IGRlZmF1bHQsIFxcc2VydmVyXHVzZXJuYW1lIHNoYXJlcyBjYW4gYmUgY29ubmVjdGVkIHRvIGJ5IGFueW9uZQorIyB3aXRoIGFjY2VzcyB0byB0aGUgc2FtYmEgc2VydmVyLgorIyBUaGUgZm9sbG93aW5nIHBhcmFtZXRlciBtYWtlcyBzdXJlIHRoYXQgb25seSAidXNlcm5hbWUiIGNhbiBjb25uZWN0CisjIHRvIFxcc2VydmVyXHVzZXJuYW1lCisjIFRoaXMgbWlnaHQgbmVlZCB0d2Vha2luZyB3aGVuIHVzaW5nIGV4dGVybmFsIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMKKyAgIHZhbGlkIHVzZXJzID0gJVMKKworIyBVbi1jb21tZW50IHRoZSBmb2xsb3dpbmcgYW5kIGNyZWF0ZSB0aGUgbmV0bG9nb24gZGlyZWN0b3J5IGZvciBEb21haW4gTG9nb25zCisjICh5b3UgbmVlZCB0byBjb25maWd1cmUgU2FtYmEgdG8gYWN0IGFzIGEgZG9tYWluIGNvbnRyb2xsZXIgdG9vLikKKztbbmV0bG9nb25dCis7ICAgY29tbWVudCA9IE5ldHdvcmsgTG9nb24gU2VydmljZQorOyAgIHBhdGggPSAvaG9tZS9zYW1iYS9uZXRsb2dvbgorOyAgIGd1ZXN0IG9rID0geWVzCis7ICAgcmVhZCBvbmx5ID0geWVzCisKKyMgVW4tY29tbWVudCB0aGUgZm9sbG93aW5nIGFuZCBjcmVhdGUgdGhlIHByb2ZpbGVzIGRpcmVjdG9yeSB0byBzdG9yZQorIyB1c2VycyBwcm9maWxlcyAoc2VlIHRoZSAibG9nb24gcGF0aCIgb3B0aW9uIGFib3ZlKQorIyAoeW91IG5lZWQgdG8gY29uZmlndXJlIFNhbWJhIHRvIGFjdCBhcyBhIGRvbWFpbiBjb250cm9sbGVyIHRvby4pCisjIFRoZSBwYXRoIGJlbG93IHNob3VsZCBiZSB3cml0YWJsZSBieSBhbGwgdXNlcnMgc28gdGhhdCB0aGVpcgorIyBwcm9maWxlIGRpcmVjdG9yeSBtYXkgYmUgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSB0aGV5IGxvZyBvbgorO1twcm9maWxlc10KKzsgICBjb21tZW50ID0gVXNlcnMgcHJvZmlsZXMKKzsgICBwYXRoID0gL2hvbWUvc2FtYmEvcHJvZmlsZXMKKzsgICBndWVzdCBvayA9IG5vCis7ICAgYnJvd3NlYWJsZSA9IG5vCis7ICAgY3JlYXRlIG1hc2sgPSAwNjAwCis7ICAgZGlyZWN0b3J5IG1hc2sgPSAwNzAwCisKK1twcmludGVyc10KKyAgIGNvbW1lbnQgPSBBbGwgUHJpbnRlcnMKKyAgIGJyb3dzZWFibGUgPSBubworICAgcGF0aCA9IC92YXIvc3Bvb2wvc2FtYmEKKyAgIHByaW50YWJsZSA9IHllcworICAgZ3Vlc3Qgb2sgPSBubworICAgcmVhZCBvbmx5ID0geWVzCisgICBjcmVhdGUgbWFzayA9IDA3MDAKKworIyBXaW5kb3dzIGNsaWVudHMgbG9vayBmb3IgdGhpcyBzaGFyZSBuYW1lIGFzIGEgc291cmNlIG9mIGRvd25sb2FkYWJsZQorIyBwcmludGVyIGRyaXZlcnMKK1twcmludCRdCisgICBjb21tZW50ID0gUHJpbnRlciBEcml2ZXJzCisgICBwYXRoID0gL3Zhci9saWIvc2FtYmEvcHJpbnRlcnMKKyAgIGJyb3dzZWFibGUgPSB5ZXMKKyAgIHJlYWQgb25seSA9IHllcworICAgZ3Vlc3Qgb2sgPSBubworIyBVbmNvbW1lbnQgdG8gYWxsb3cgcmVtb3RlIGFkbWluaXN0cmF0aW9uIG9mIFdpbmRvd3MgcHJpbnQgZHJpdmVycy4KKyMgWW91IG1heSBuZWVkIHRvIHJlcGxhY2UgJ2xwYWRtaW4nIHdpdGggdGhlIG5hbWUgb2YgdGhlIGdyb3VwIHlvdXIKKyMgYWRtaW4gdXNlcnMgYXJlIG1lbWJlcnMgb2YuCisjIFBsZWFzZSBub3RlIHRoYXQgeW91IGFsc28gbmVlZCB0byBzZXQgYXBwcm9wcmlhdGUgVW5peCBwZXJtaXNzaW9ucworIyB0byB0aGUgZHJpdmVycyBkaXJlY3RvcnkgZm9yIHRoZXNlIHVzZXJzIHRvIGhhdmUgd3JpdGUgcmlnaHRzIGluIGl0Cis7ICAgd3JpdGUgbGlzdCA9IHJvb3QsIEBscGFkbWluCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zbWJfY29uZi00LjcuMC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYS9zbWJfY29uZi00LjcuMC5wYXRjaAppbmRleCA3N2M4YjM2Li42YWUyOTI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmEvc21iX2NvbmYtNC43LjAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhL3NtYl9jb25mLTQuNy4wLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotc2FtYmE6IGNvcnJlY3QgbG9nIGZpbGVzIGxvY2F0aW9uCitGcm9tIGY5OWI2YTg2MTdkZjZhNDZmNDFmYjY4ZmZhZmIyNjA4ZGJiNjY4MWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDggTm92IDIwMTcgMTE6NTg6MDUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2FtYmE6IGNvcnJlY3QgbG9nIGZpbGVzIGxvY2F0aW9uCiAKIFdlIHVzZSAvdmFyL2xvZy9zYW1iYS4KIApAQCAtNiw5ICs5LDE1IEBACiAKIFNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KIAotLS0tIGEvcGFja2FnaW5nL1JIRUwvc2V0dXAvc21iLmNvbmYKLSsrKyBiL3BhY2thZ2luZy9SSEVML3NldHVwL3NtYi5jb25mCi1AQCAtNjMsNyArNjMsNyBAQAorLS0tCisgZXhhbXBsZXMvc21iLmNvbmYuZGVmYXVsdCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2V4YW1wbGVzL3NtYi5jb25mLmRlZmF1bHQgYi9leGFtcGxlcy9zbWIuY29uZi5kZWZhdWx0CitpbmRleCAyZjIwNzIwLi40NGMxYWE4IDEwMDY0NAorLS0tIGEvZXhhbXBsZXMvc21iLmNvbmYuZGVmYXVsdAorKysrIGIvZXhhbXBsZXMvc21iLmNvbmYuZGVmYXVsdAorQEAgLTUyLDcgKzUyLDcgQEAKICAKICAjIHRoaXMgdGVsbHMgU2FtYmEgdG8gdXNlIGEgc2VwYXJhdGUgbG9nIGZpbGUgZm9yIGVhY2ggbWFjaGluZQogICMgdGhhdCBjb25uZWN0cwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuNy42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODUxN2M1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjcuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxOCArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5zYW1iYS5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMCsgJiBMR1BMLTMuMCsgJiBHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0xHUEwtMy4wO21kNT1iZmNjZmU5NTIyNjlmZmYyYjQwN2RkMTFmMmYzMDgzYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiAiCi0KLVNBTUJBX01JUlJPUiA9ICJodHRwOi8vc2FtYmEub3JnL3NhbWJhL2Z0cCIKLU1JUlJPUlMgKz0gIlwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vbWlycm9yLmludGVybm9kZS5vbi5uZXQvcHViL3NhbWJhIFxuIFwKLSR7U0FNQkFfTUlSUk9SfSAgICBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2Z0cC5zYW1iYS5vcmcgXG4gXAotIgotCi1TUkNfVVJJID0gIiR7U0FNQkFfTUlSUk9SfS9zdGFibGUvc2FtYmEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzE2LWRvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8yMC1kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8yMS1hZGQtY29uZmlnLW9wdGlvbi13aXRob3V0LXZhbGdyaW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGFja2FnaW5nLUF2b2lkLXRpbWVvdXQtZm9yLW5tYmQtaWYtc3RhcnRlZC1vZmZsaW5lLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LWF2b2lkLXVzaW5nLWNvbG9uLWluLXRoZS1jaGVja2luZy1tc2cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmV0ZGJfZGVmaW5lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nbGliY19vbmx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ljb252LTQuNy4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Ruc3NlcnZlci00LjcuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zbWJfY29uZi00LjcuMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc2FtYmEgXAotICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgICAgICAgICBmaWxlOi8vc2FtYmEtcGFtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NhbWJhLTQuMy45LXJlbW92ZS1nZXRwd2VudF9yLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjUzMDIxYTQ1YzQ3OWNlYzFlMTM1YjAwNGEwMTc3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZWVkZTMwZmM4ZWY2NTA0ZTI0NjAyZmI3MmIwMGJhYTBhN2I3M2I1OWYxNmQyNWNiMDc3MWRjOGM3YzU3ZDZlIgotCi1pbmhlcml0IHN5c3RlbWQgd2FmLXNhbWJhIGNwYW4tYmFzZSBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kCi0jIHJlbW92ZSBkZWZhdWx0IGFkZGVkIFJERVBFTkRTIG9uIHBlcmwKLVJERVBFTkRTXyR7UE59X3JlbW92ZSA9ICJwZXJsIgotCi1ERVBFTkRTICs9ICJyZWFkbGluZSB2aXJ0dWFsL2xpYmljb252IHpsaWIgcG9wdCBsaWJ0YWxsb2MgbGlidGRiIGxpYnRldmVudCBsaWJsZGIgbGliYnNkIGxpYmFpbyBsaWJwYW0iCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgotCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCi0KLUxTQiA9ICIiCi1MU0JfbGludXhzdGRiYXNlID0gImxzYiIKLQotSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgotCi0jIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCi0jIFJlZmVyZW5jZToKLSMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCi0KLSMgVXNlIGtyYjUuICBCdWlsZCBhY3RpdmUgZG9tYWluIGNvbnRyb2xsZXIuCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB6ZXJvY29uZicsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgYWNsIGFkLWRjIGN1cHMgZ251dGxzIGxkYXAgbWl0a3JiNSBcCi0iCi0KLVJERVBFTkRTXyR7UE59LWJhc2UgKz0gIiR7TFNCfSIKLVJERVBFTkRTXyR7UE59LWN0ZGItdGVzdHMgKz0gImJhc2ggdXRpbC1saW51eC1nZXRvcHQiCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLXN1cHBvcnQsLS13aXRob3V0LWFjbC1zdXBwb3J0LGFjbCIKLVBBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCi1QQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsY3VwcyIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCi1QQUNLQUdFQ09ORklHW3Nhc2xdID0gIiwsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbZG1hcGldID0gIi0td2l0aC1kbWFwaSwtLXdpdGhvdXQtZG1hcGksZG1hcGkiCi1QQUNLQUdFQ09ORklHW3plcm9jb25mXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICIsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbbHR0bmddID0gIi0td2l0aC1sdHRuZywgLS13aXRob3V0LWx0dG5nLGx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdbYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgotCi0jIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCi0jIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86Ci0jIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCi0jIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgotIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQotIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCi0jCi0jIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCi0jIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCi0jCi1QQUNLQUdFQ09ORklHW2FkLWRjXSA9ICIsLS13aXRob3V0LWFkLWRjLCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLCIKLVBBQ0tBR0VDT05GSUdbbWl0a3JiNV0gPSAiLS13aXRoLXN5c3RlbS1taXRrcmI1IC0td2l0aC1zeXN0ZW0tbWl0a2RjPS91c3Ivc2Jpbi9rcmI1a2RjLCxrcmI1LCIKLQotU0FNQkE0X0lETUFQX01PRFVMRVM9ImlkbWFwX2FkLGlkbWFwX3JpZCxpZG1hcF9hZGV4LGlkbWFwX2hhc2gsaWRtYXBfdGRiMiIKLVNBTUJBNF9QREJfTU9EVUxFUz0icGRiX3RkYnNhbSwke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsZGFwJywgJ3BkYl9sZGFwLCcsICcnLCBkKX1wZGJfYWRzLHBkYl9zbWJwYXNzd2QscGRiX3diY19zYW0scGRiX3NhbWJhNCIKLVNBTUJBNF9BVVRIX01PRFVMRVM9ImF1dGhfdW5peCxhdXRoX3diYyxhdXRoX3NlcnZlcixhdXRoX25ldGxvZ29uZCxhdXRoX3NjcmlwdCxhdXRoX3NhbWJhNCIKLVNBTUJBNF9NT0RVTEVTPSIke1NBTUJBNF9JRE1BUF9NT0RVTEVTfSwke1NBTUJBNF9QREJfTU9EVUxFU30sJHtTQU1CQTRfQVVUSF9NT0RVTEVTfSIKLQotIyBUaGVzZSBsaWJyYXJpZXMgYXJlIHN1cHBvc2VkIHRvIHJlcGxhY2Ugb3RoZXJzIHN1cHBsaWVkIGJ5IHBhY2thZ2VzLCBidXQgZGVjb3JhdGUgdGhlIG5hbWVzIG9mCi0jIC5zbyBmaWxlcyBzbyB0aGVyZSB3aWxsIG5vdCBiZSBhIGNvbmZsaWN0LiAgVGhpcyBpcyBub3QgZG9uZSBjb25zaXN0YW50bHksIHNvIGJlIHZlcnkgY2FyZWZ1bAotIyB3aGVuIGFkZGluZyB0byB0aGlzIGxpc3QuCi0jCi1TQU1CQTRfTElCUz0iaGVpbWRhbCxjbW9ja2EsTk9ORSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1maHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcGlkZGlyPS9ydW4gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc29ja2V0cy1kaXI9L3J1bi9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9zYW1iYSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1sb2NrZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNhY2hlZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtc2hhcmVkLW1vZHVsZXM9JHtTQU1CQTRfTU9EVUxFU30gXAotICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPSR7U0FNQkE0X0xJQlN9IFwKLSAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1RBUkdFVF9BUkNIJywgJ3g4Nl82NCcsICcnLCAnLS1kaXNhYmxlLWdsdXN0ZXJmcycsIGQpfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1jbHVzdGVyLXN1cHBvcnQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcHJvZmlsaW5nLWRhdGEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wYW0gLS13aXRoLXBhbW1vZHVsZXNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAotICAgICAgICAgICAgICAgICIKLQotTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNzsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBjdGRiL2RvYy8qLiRzZWN0aW9uICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICBkb25lCi0gICAgZm9yIHNlY3Rpb24gaW4gMSA1IDcgODsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBkb2NzL21hbnBhZ2VzLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgcGFja2FnaW5nL3N5c3RlbWQvKi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1lICdzLFwoRXhlY1JlbG9hZD1cKS4qXCgva2lsbFwpLFwxJHtiYXNlX2JpbmRpcn1cMiwnIFwKLSAgICAgICAgLWUgJ3MsL2V0Yy9zeXNjb25maWcvc2FtYmEsJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhLCcgXAotICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKLQotICAgIGlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3llcycsICdubycsIGQpfSIgPSAibm8iIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZQotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLmNvbmYudG1wICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgotICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvc2FtYmEgMDc1NSByb290IHJvb3QgLSIgXAotICAgICAgICA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3NhbWJhLmNvbmYKLSAgICBpZiBbICIke0xTQn0iID0gImxzYiIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcGFja2FnaW5nL0xTQi9zYW1iYS5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEKLSAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvc3lzdi9zYW1iYS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQotICAgICAgICBzZWQgLWUgJ3MsL29wdC9zYW1iYS9iaW4sJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAtZSAncywvb3B0L3NhbWJhL3NtYi5jb25mLCR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYsZycgXAotICAgICAgICAgICAgLWUgJ3MsL29wdC9zYW1iYS9sb2csJHtsb2NhbHN0YXRlZGlyfS9sb2cvc2FtYmEsZycgXAotICAgICAgICAgICAgLWUgJ3MsL2V0Yy9pbml0LmQvc2FtYmEuc2VydmVyLCR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhLGcnIFwKLSAgICAgICAgICAgIC1lICdzLC91c3IvYmluLCR7YmFzZV9iaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhCi0gICAgZWNobyAiMTI3LjAuMC4xIGxvY2FsaG9zdCIgPiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9sbWhvc3RzCi0gICAgaW5zdGFsbCAtbTY0NCBwYWNrYWdpbmcvUkhFTC9zZXR1cC9zbWIuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZgotICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NhbWJhICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NhbWJhCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhCi0KLSAgICAjIGluc3RhbGwgY3RkYiBjb25maWcgZmlsZSBhbmQgdGVzdCBjYXNlcwotICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2N0ZGIvdGVzdHMvb25ub2RlL25vZGVzICR7RH0ke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMKLSAgICAjIHRoZSBpdGVtcyBhcmUgZnJvbSBjdGRiL3Rlc3RzL3J1bl90ZXN0cy5zaAotICAgIGZvciBkIGluIG9ubm9kZSB0YWtlb3ZlciB0b29sIGV2ZW50c2NyaXB0cyBjdW5pdCBzaW1wbGUgY29tcGxleDsgZG8KLSAgICAgICAgdGVzdGRpcj0ke0R9JHtkYXRhZGlyfS9jdGRiLXRlc3RzLyRkCi0gICAgICAgIGluc3RhbGwgLWQgJHRlc3RkaXIKLSAgICAgICAgY3AgJHtTfS9jdGRiL3Rlc3RzLyRkLyouc2ggJHRlc3RkaXIKLSAgICAgICAgY3AgLXIgJHtTfS9jdGRiL3Rlc3RzLyRkL3NjcmlwdHMgJHtTfS9jdGRiL3Rlc3RzLyRkL3N0dWJzICR0ZXN0ZGlyIHx8IHRydWUKLSAgICBkb25lCi0KLSAgICAjIGZpeCBmaWxlLXJkZXBzIHFhIHdhcm5pbmcKLSAgICBpZiBbIC1mICR7RH0ke2JpbmRpcn0vb25ub2RlIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICdzOlwoIyEvYmluL1wpYmFzaDpcMXNoOicgJHtEfSR7YmluZGlyfS9vbm5vZGUKLSAgICBmaQotCi0gICAgY2htb2QgMDc1MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzLmQKLSAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZwotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uICR7UE59LXBpZGwgXAotICAgICAgICAgICAgICR7UE59LWRzZGItbW9kdWxlcyAke1BOfS10ZXN0c3VpdGUgcmVnaXN0cnktdG9vbHMgXAotICAgICAgICAgICAgIHdpbmJpbmQgXAotICAgICAgICAgICAgICR7UE59LWNvbW1vbiAke1BOfS1iYXNlICR7UE59LWFkLWRjICR7UE59LWN0ZGItdGVzdHMgXAotICAgICAgICAgICAgIHNtYmNsaWVudCAke1BOfS1jbGllbnQgJHtQTn0tc2VydmVyICR7UE59LXRlc3QiCi0KLXB5dGhvbiBzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKLSAgICBkZWYgbW9kdWxlX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJXMtYmFzZScgJSBwbiwgJyAlcycgJSBwa2cpCi0KLSAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCi0gICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCi0gICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2xpYmRpciwgJ15wYW1fKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsICdQQU0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLQotICAgIGxpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLiokJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgcGtnbGliZGlyID0gJyVzL3NhbWJhJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBrZ2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvYXV0aCcgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLWF1dGgtJXMnLCAnU2FtYmEgJXMgYXV0aGVudGljYXRpb24gYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKLSAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvcGRiJyAlIGxpYmRpcgotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtcGRiLSVzJywgJ1NhbWJhICVzIHBhc3N3b3JkIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic2FtYmFfcG9wdWxhdGVfcGFja2FnZXMgIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tYmFzZSAke1BOfS1weXRob24gJHtQTn0tZHNkYi1tb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRhbGxvYyBweXRob24tdGRiIgotCi1GSUxFU18ke1BOfS1iYXNlID0gIiR7c2JpbmRpcn0vbm1iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vc21iZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ubWIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc21iLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LWFkLWRjID0gIiR7c2JpbmRpcn0vc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9rcmI1L3BsdWdpbnMva2RiL3NhbWJhLnNvIFwKLSAgICAgICAgICAgICAgICAgICAgIgotUkRFUEVORFNfJHtQTn0tYWQtZGMgPSAia3JiNS1rZGMiCi0KLUZJTEVTXyR7UE59LWN0ZGItdGVzdHMgPSAiJHtiaW5kaXJ9L2N0ZGJfcnVuX3Rlc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2N0ZGJfcnVuX2NsdXN0ZXJfdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGItdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKLSIKLQotRklMRVNfJHtQTn0tZHNkYi1tb2R1bGVzID0gIiR7bGliZGlyfS9zYW1iYS9sZGIiCi0KLUZJTEVTXyR7UE59LXRlc3RzdWl0ZSA9ICIke2JpbmRpcn0vZ2VudGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2t0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbWFza3Rlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9uZHJkdW1wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idG9ydHVyZSIKLQotRklMRVNfcmVnaXN0cnktdG9vbHMgPSAiJHtiaW5kaXJ9L3JlZ2RpZmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3BhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdzaGVsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVndHJlZSIKLQotRklMRVNfd2luYmluZCA9ICIke3NiaW5kaXJ9L3dpbmJpbmRkIFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3diaW5mbyBcCi0gICAgICAgICAgICAgICAgICR7YmluZGlyfS9udGxtX2F1dGggXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvaWRtYXAgXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vc2FtYmEvbnNzX2luZm8gXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vd2luYmluZF9rcmI1X2xvY2F0b3Iuc28gXAotICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93aW5iaW5kIFwKLSAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93aW5iaW5kLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotRklMRVNfc21iY2xpZW50ID0gIiR7YmluZGlyfS9jaWZzZGQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycGNjbGllbnQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjYWNscyBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNxdW90YXMgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJnZXQgXAotICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJzcG9vbCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRhciBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRyZWUgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9zbWJzcG9vbF9rcmI1X3dyYXBwZXIiCi0KLVJERVBFTkRTXyR7UE59LXBpZGxfYXBwZW5kID0gIiBwZXJsIgotRklMRVNfJHtQTn0tcGlkbCA9ICIke2JpbmRpcn0vcGlkbCAke2RhdGFkaXJ9L3Blcmw1L1BhcnNlIgotCi1SREVQRU5EU18ke1BOfS1jbGllbnQgPSAiXAotICAgIHNtYmNsaWVudCBcCi0gICAgd2luYmluZCBcCi0gICAgcmVnaXN0cnktdG9vbHMgXAotICAgICR7UE59LXBpZGwgXAotICAgICIgCi0KLUFMTE9XX0VNUFRZXyR7UE59LWNsaWVudCA9ICIxIgotCi1SREVQRU5EU18ke1BOfS1zZXJ2ZXIgPSAiXAotICAgICR7UE59IFwKLSAgICB3aW5iaW5kIFwKLSAgICByZWdpc3RyeS10b29scyBcCi0gICAgIiAKLQotQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LXRlc3QgPSAiXAotICAgICR7UE59LWN0ZGItdGVzdHMgXAotICAgICR7UE59LXRlc3RzdWl0ZSBcCi0gICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwYWMzMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjguNC5iYgpAQCAtMCwwICsxLDMxMyBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkdQTC0zLjArICYgTEdQTC0zLjArICYgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9MR1BMLTMuMDttZDU9YmZjY2ZlOTUyMjY5ZmZmMmI0MDdkZDExZjJmMzA4M2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYgIgorCitTQU1CQV9NSVJST1IgPSAiaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9mdHAiCitNSVJST1JTICs9ICJcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL21pcnJvci5pbnRlcm5vZGUub24ubmV0L3B1Yi9zYW1iYSBcbiBcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9mdHAuc2FtYmEub3JnIFxuIFwKKyIKKworU1JDX1VSSSA9ICIke1NBTUJBX01JUlJPUn0vc3RhYmxlL3NhbWJhLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zbWIuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxkYi1SZWZ1c2UtdG8tYnVpbGQtU2FtYmEtYWdhaW5zdC1hLW5ld2VyLW1pbm9yLXZlcnMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3NhbWJhLXBhbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2E1YmZiZWJkOGQ5ZWI5NTUwNmUxNjU5NGIyYmJlZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUwNDRkMTQ5ZTAxODk0YTA4YjFkMTE0YjhiNjlhZWQ3ODE3MWE3YmIxOTYwOGJkMWZkNzcxNDUzYjlhNTQwNiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2FtYmFcLSg/UDxwdmVyPjRcLjgoXC5cZCspKykudGFyLmd6IgorCitpbmhlcml0IHN5c3RlbWQgd2FmLXNhbWJhIGNwYW4tYmFzZSBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kCisjIHJlbW92ZSBkZWZhdWx0IGFkZGVkIFJERVBFTkRTIG9uIHBlcmwKK1JERVBFTkRTXyR7UE59X3JlbW92ZSA9ICJwZXJsIgorCitERVBFTkRTICs9ICJyZWFkbGluZSB2aXJ0dWFsL2xpYmljb252IHpsaWIgcG9wdCBsaWJ0YWxsb2MgbGlidGRiIGxpYnRldmVudCBsaWJic2QgbGliYWlvIGxpYnBhbSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKKworSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgorU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgorCisjIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCisjIFJlZmVyZW5jZToKKyMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCisKKyMgVXNlIGtyYjUuICBCdWlsZCBhY3RpdmUgZG9tYWluIGNvbnRyb2xsZXIuCisjCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB6ZXJvY29uZicsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgYWNsIGFkLWRjIGN1cHMgZ251dGxzIGxkYXAgbWl0a3JiNSBcCisiCisKK1JERVBFTkRTXyR7UE59LWN0ZGItdGVzdHMgKz0gImJhc2ggdXRpbC1saW51eC1nZXRvcHQiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLXN1cHBvcnQsLS13aXRob3V0LWFjbC1zdXBwb3J0LGFjbCIKK1BBQ0tBR0VDT05GSUdbZmFtXSA9ICItLXdpdGgtZmFtLC0td2l0aG91dC1mYW0sZ2FtaW4iCitQQUNLQUdFQ09ORklHW2N1cHNdID0gIi0tZW5hYmxlLWN1cHMsLS1kaXNhYmxlLWN1cHMsY3VwcyIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS13aXRoLWxkYXAsLS13aXRob3V0LWxkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIiwsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbZG1hcGldID0gIi0td2l0aC1kbWFwaSwtLXdpdGhvdXQtZG1hcGksZG1hcGkiCitQQUNLQUdFQ09ORklHW3plcm9jb25mXSA9ICItLWVuYWJsZS1hdmFoaSwtLWRpc2FibGUtYXZhaGksYXZhaGkiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICIsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kLCIKK1BBQ0tBR0VDT05GSUdbbHR0bmddID0gIi0td2l0aC1sdHRuZywgLS13aXRob3V0LWx0dG5nLGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdbYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgorCisjIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCisjIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86CisjIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCisjIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgorIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQorIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCisjCisjIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCisjIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCisjCitQQUNLQUdFQ09ORklHW2FkLWRjXSA9ICIsLS13aXRob3V0LWFkLWRjLCwiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLCIKK1BBQ0tBR0VDT05GSUdbbWl0a3JiNV0gPSAiLS13aXRoLXN5c3RlbS1taXRrcmI1IC0td2l0aC1zeXN0ZW0tbWl0a2RjPS91c3Ivc2Jpbi9rcmI1a2RjLCxrcmI1LCIKKworU0FNQkE0X0lETUFQX01PRFVMRVM9ImlkbWFwX2FkLGlkbWFwX3JpZCxpZG1hcF9hZGV4LGlkbWFwX2hhc2gsaWRtYXBfdGRiMiIKK1NBTUJBNF9QREJfTU9EVUxFUz0icGRiX3RkYnNhbSwke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsZGFwJywgJ3BkYl9sZGFwLCcsICcnLCBkKX1wZGJfYWRzLHBkYl9zbWJwYXNzd2QscGRiX3diY19zYW0scGRiX3NhbWJhNCIKK1NBTUJBNF9BVVRIX01PRFVMRVM9ImF1dGhfdW5peCxhdXRoX3diYyxhdXRoX3NlcnZlcixhdXRoX25ldGxvZ29uZCxhdXRoX3NjcmlwdCxhdXRoX3NhbWJhNCIKK1NBTUJBNF9NT0RVTEVTPSIke1NBTUJBNF9JRE1BUF9NT0RVTEVTfSwke1NBTUJBNF9QREJfTU9EVUxFU30sJHtTQU1CQTRfQVVUSF9NT0RVTEVTfSIKKworIyBUaGVzZSBsaWJyYXJpZXMgYXJlIHN1cHBvc2VkIHRvIHJlcGxhY2Ugb3RoZXJzIHN1cHBsaWVkIGJ5IHBhY2thZ2VzLCBidXQgZGVjb3JhdGUgdGhlIG5hbWVzIG9mCisjIC5zbyBmaWxlcyBzbyB0aGVyZSB3aWxsIG5vdCBiZSBhIGNvbmZsaWN0LiAgVGhpcyBpcyBub3QgZG9uZSBjb25zaXN0YW50bHksIHNvIGJlIHZlcnkgY2FyZWZ1bAorIyB3aGVuIGFkZGluZyB0byB0aGlzIGxpc3QuCisjCitTQU1CQTRfTElCUz0iaGVpbWRhbCxjbW9ja2EsbGRiLHB5bGRiLXV0aWwsTk9ORSIKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1maHMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcGlkZGlyPS9ydW4gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtc29ja2V0cy1kaXI9L3J1bi9zYW1iYSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1tb2R1bGVzZGlyPSR7bGliZGlyfS9zYW1iYSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sb2NrZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNhY2hlZGlyPSR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtc2hhcmVkLW1vZHVsZXM9JHtTQU1CQTRfTU9EVUxFU30gXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPSR7U0FNQkE0X0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1RBUkdFVF9BUkNIJywgJ3g4Nl82NCcsICcnLCAnLS1kaXNhYmxlLWdsdXN0ZXJmcycsIGQpfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1jbHVzdGVyLXN1cHBvcnQgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHJvZmlsaW5nLWRhdGEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wYW0gLS13aXRoLXBhbW1vZHVsZXNkaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAorICAgICAgICAgICAgICAgICIKKworTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNzsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBjdGRiL2RvYy8qLiRzZWN0aW9uICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICBkb25lCisgICAgZm9yIHNlY3Rpb24gaW4gMSA1IDcgODsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkb2NzL21hbnBhZ2VzLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9iaW4vZGVmYXVsdC9wYWNrYWdpbmcvc3lzdGVtZC8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vCisgICAgc2VkIC1lICdzLFwoRXhlY1JlbG9hZD1cKS4qXCgva2lsbFwpLFwxJHtiYXNlX2JpbmRpcn1cMiwnIFwKKyAgICAgICAgLWUgJ3MsL2V0Yy9zeXNjb25maWcvc2FtYmEsJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhLCcgXAorICAgICAgICAtaSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKKworICAgIGlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3llcycsICdubycsIGQpfSIgPSAibm8iIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZQorICAgIGZpCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLmNvbmYudG1wICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgorICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvc2FtYmEgMDc1NSByb290IHJvb3QgLSIgXAorICAgICAgICA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3NhbWJhLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSBwYWNrYWdpbmcvc3lzdi9zYW1iYS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQorICAgIHNlZCAtZSAncywvb3B0L3NhbWJhL2Jpbiwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgLWUgJ3MsL29wdC9zYW1iYS9zbWIuY29uZiwke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mLGcnIFwKKyAgICAgICAgLWUgJ3MsL29wdC9zYW1iYS9sb2csJHtsb2NhbHN0YXRlZGlyfS9sb2cvc2FtYmEsZycgXAorICAgICAgICAtZSAncywvZXRjL2luaXQuZC9zYW1iYS5zZXJ2ZXIsJHtzeXNjb25mZGlyfS9pbml0LmQvc2FtYmEsZycgXAorICAgICAgICAtZSAncywvdXNyL2Jpbiwke2Jhc2VfYmluZGlyfSxnJyBcCisgICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zYW1iYQorICAgIGVjaG8gIjEyNy4wLjAuMSBsb2NhbGhvc3QiID4gJHtEfSR7c3lzY29uZmRpcn0vc2FtYmEvbG1ob3N0cworICAgIGluc3RhbGwgLW02NDQgJHtXT1JLRElSfS9zbWIuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9zbWIuY29uZgorICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NhbWJhICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NhbWJhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tNjQ0IHBhY2thZ2luZy9zeXN0ZW1kL3NhbWJhLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3NhbWJhCisKKyAgICAjIGluc3RhbGwgY3RkYiBjb25maWcgZmlsZSBhbmQgdGVzdCBjYXNlcworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2N0ZGIvdGVzdHMvb25ub2RlL25vZGVzICR7RH0ke3N5c2NvbmZkaXJ9L2N0ZGIvbm9kZXMKKyAgICAjIHRoZSBpdGVtcyBhcmUgZnJvbSBjdGRiL3Rlc3RzL3J1bl90ZXN0cy5zaAorICAgIGZvciBkIGluIG9ubm9kZSB0YWtlb3ZlciB0b29sIGV2ZW50c2NyaXB0cyBjdW5pdCBzaW1wbGUgY29tcGxleDsgZG8KKyAgICAgICAgdGVzdGRpcj0ke0R9JHtkYXRhZGlyfS9jdGRiLXRlc3RzLyRkCisgICAgICAgIGluc3RhbGwgLWQgJHRlc3RkaXIKKyAgICAgICAgY3AgJHtTfS9jdGRiL3Rlc3RzLyRkLyouc2ggJHRlc3RkaXIKKyAgICAgICAgY3AgLXIgJHtTfS9jdGRiL3Rlc3RzLyRkL3NjcmlwdHMgJHtTfS9jdGRiL3Rlc3RzLyRkL3N0dWJzICR0ZXN0ZGlyIHx8IHRydWUKKyAgICBkb25lCisKKyAgICAjIGZpeCBmaWxlLXJkZXBzIHFhIHdhcm5pbmcKKyAgICBpZiBbIC1mICR7RH0ke2JpbmRpcn0vb25ub2RlIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICdzOlwoIyEvYmluL1wpYmFzaDpcMXNoOicgJHtEfSR7YmluZGlyfS9vbm5vZGUKKyAgICBmaQorCisgICAgY2htb2QgMDc1MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzLmQKKyAgICBybSAtcmYgJHtEfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uICR7UE59LXBpZGwgXAorICAgICAgICAgICAgICR7UE59LWRzZGItbW9kdWxlcyAke1BOfS10ZXN0c3VpdGUgcmVnaXN0cnktdG9vbHMgXAorICAgICAgICAgICAgIHdpbmJpbmQgXAorICAgICAgICAgICAgICR7UE59LWNvbW1vbiAke1BOfS1iYXNlICR7UE59LWFkLWRjICR7UE59LWN0ZGItdGVzdHMgXAorICAgICAgICAgICAgIHNtYmNsaWVudCAke1BOfS1jbGllbnQgJHtQTn0tc2VydmVyICR7UE59LXRlc3QiCisKK3B5dGhvbiBzYW1iYV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKKyAgICBkZWYgbW9kdWxlX2hvb2soZmlsZSwgcGtnLCBwYXR0ZXJuLCBmb3JtYXQsIGJhc2VuYW1lKToKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQorICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJXMtYmFzZScgJSBwbiwgJyAlcycgJSBwa2cpCisKKyAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcsIFRydWUpIG9yICcnCisgICAgcGFtX2xpYmRpciA9IGQuZXhwYW5kKCcke2Jhc2VfbGliZGlyfS9zZWN1cml0eScpCisgICAgcGFtX3BrZ25hbWUgPSBtbHByZWZpeCArICdwYW0tcGx1Z2luJXMnCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGFtX2xpYmRpciwgJ15wYW1fKC4qKVwuc28kJywgcGFtX3BrZ25hbWUsICdQQU0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKKworICAgIGxpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInLCBUcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuLiokJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUsIGFsbG93X2xpbmtzPVRydWUpCisgICAgcGtnbGliZGlyID0gJyVzL3NhbWJhJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBrZ2xpYmRpciwgJ15saWIoLiopXC5zbyQnLCAnbGliJXMnLCAnU2FtYmEgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWNvbW1vbicsIHByZXBlbmQ9VHJ1ZSkKKyAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvYXV0aCcgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLWF1dGgtJXMnLCAnU2FtYmEgJXMgYXV0aGVudGljYXRpb24gYmFja2VuZCcsIGhvb2s9bW9kdWxlX2hvb2ssIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSkKKyAgICBtb2R1bGVkaXIgPSAnJXMvc2FtYmEvcGRiJyAlIGxpYmRpcgorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIG1vZHVsZWRpciwgJ14oLiopXC5zbyQnLCAnc2FtYmEtcGRiLSVzJywgJ1NhbWJhICVzIHBhc3N3b3JkIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic2FtYmFfcG9wdWxhdGVfcGFja2FnZXMgIgorUEFDS0FHRVNfRFlOQU1JQyA9ICJzYW1iYS1hdXRoLS4qIHNhbWJhLXBkYi0uKiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWJhc2UgJHtQTn0tcHl0aG9uICR7UE59LWRzZGItbW9kdWxlcyIKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAicHl0YWxsb2MgcHl0aG9uLXRkYiIKKworRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAorICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9ubWJkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9zYW1iYSBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1hZC1kYyA9ICIke3NiaW5kaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9zYW1iYS5zbyBcCisgICAgICAgICAgICAgICAgICAgICIKK1JERVBFTkRTXyR7UE59LWFkLWRjID0gImtyYjUta2RjIgorCitGSUxFU18ke1BOfS1jdGRiLXRlc3RzID0gIiR7YmluZGlyfS9jdGRiX3J1bl90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9jdGRiX3J1bl9jbHVzdGVyX3Rlc3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9jdGRiL25vZGVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9jdGRiLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9jdGRiL3Rlc3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7QlBOfS1jb21tb24gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zYW1iYSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdmZzLyouc28gXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0Lyouc28gXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmRhdCBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2F1dGgvKi5zbyBcCisiCisKK0ZJTEVTXyR7UE59LWRzZGItbW9kdWxlcyA9ICIke2xpYmRpcn0vc2FtYmEvbGRiIgorCitGSUxFU18ke1BOfS10ZXN0c3VpdGUgPSAiJHtiaW5kaXJ9L2dlbnRlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NrdGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21hc2t0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmRyZHVtcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRvcnR1cmUiCisKK0ZJTEVTX3JlZ2lzdHJ5LXRvb2xzID0gIiR7YmluZGlyfS9yZWdkaWZmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWdwYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVnc2hlbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3RyZWUiCisKK0ZJTEVTX3dpbmJpbmQgPSAiJHtzYmluZGlyfS93aW5iaW5kZCBcCisgICAgICAgICAgICAgICAgICR7YmluZGlyfS93YmluZm8gXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbnRsbV9hdXRoIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL2lkbWFwIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL25zc19pbmZvIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3dpbmJpbmRfa3JiNV9sb2NhdG9yLnNvIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3dpbmJpbmQta3JiNS1sb2NhbGF1dGguc28gXAorICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC93aW5iaW5kIFwKKyAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS93aW5iaW5kLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworRklMRVNfc21iY2xpZW50ID0gIiR7YmluZGlyfS9jaWZzZGQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9ycGNjbGllbnQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJjYWNscyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNxdW90YXMgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJnZXQgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJzcG9vbCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRhciBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnRyZWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9zbWJzcG9vbF9rcmI1X3dyYXBwZXIiCisKK1JERVBFTkRTXyR7UE59LXBpZGxfYXBwZW5kID0gIiBwZXJsIgorRklMRVNfJHtQTn0tcGlkbCA9ICIke2JpbmRpcn0vcGlkbCAke2RhdGFkaXJ9L3Blcmw1L1BhcnNlIgorCitSREVQRU5EU18ke1BOfS1jbGllbnQgPSAiXAorICAgIHNtYmNsaWVudCBcCisgICAgd2luYmluZCBcCisgICAgcmVnaXN0cnktdG9vbHMgXAorICAgICR7UE59LXBpZGwgXAorICAgICIgCisKK0FMTE9XX0VNUFRZXyR7UE59LWNsaWVudCA9ICIxIgorCitSREVQRU5EU18ke1BOfS1zZXJ2ZXIgPSAiXAorICAgICR7UE59IFwKKyAgICB3aW5iaW5kIFwKKyAgICByZWdpc3RyeS10b29scyBcCisgICAgIiAKKworQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCisKK1JERVBFTkRTXyR7UE59LXRlc3QgPSAiXAorICAgICR7UE59LWN0ZGItdGVzdHMgXAorICAgICR7UE59LXRlc3RzdWl0ZSBcCisgICAgIgorCitBTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvMDAwMS1maXgtZG9fcGFja2FnZS1mYWlsZWQtc2luY2Utc25vcnQtMi45LjcuMC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC8wMDAxLWZpeC1kb19wYWNrYWdlLWZhaWxlZC1zaW5jZS1zbm9ydC0yLjkuNy4wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDdjYWVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC8wMDAxLWZpeC1kb19wYWNrYWdlLWZhaWxlZC1zaW5jZS1zbm9ydC0yLjkuNy4wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA0MzM1YzRjNjE4NzdjMGI2NWZmNGVjNzY3ZThhZDNhZDhjNzNjMzJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWmhpcXVhbiBMaSA8emhpcXVhbi5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxMyBOb3YgMjAxNSAxNzo0MDoyNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXggZG9fcGFja2FnZSBmYWlsZWQgc2luY2Ugc25vcnQgMi45LjcuMAotCi1SZW1vdmUgcmVkdW5kYW50ICcvJyBhcyBhIHdvcmtyb3VuZCBmb3IgYmVsb3cgZXJyb3I6Ci0vbGliL3JwbS9iaW4vZGVidWdlZGl0OiBjYW5vbmljYWxpemF0aW9uIHVuZXhwZWN0ZWRseSBzaHJhbmsgYnkgb25lIGNoYXJhY3RlcgotCi1JdCdzIGEgcnBtIGRlYnVnZWRpdCBidWc6Ci0qIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9zbm9ydC9tYWlsbWFuL21lc3NhZ2UvMzQxMzAyNjgvCi0qIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MzA0MTIxCi0KLVVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogWmhpcXVhbiBMaSA8emhpcXVhbi5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBzcmMvc25vcnQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zbm9ydC5oIGIvc3JjL3Nub3J0LmgKLWluZGV4IDgzMDhlNTcuLjQ5OWQxNTcgMTAwNjQ0Ci0tLS0gYS9zcmMvc25vcnQuaAotKysrIGIvc3JjL3Nub3J0LmgKLUBAIC0zOSw3ICszOSw3IEBACi0gI2luY2x1ZGUgInNmZGFxLmgiCi0gI2luY2x1ZGUgInNmX3R5cGVzLmgiCi0gI2luY2x1ZGUgInNmdXRpbC9zZmxzcS5oIgotLSNpbmNsdWRlICJzZnV0aWwvL3NmQWN0aW9uUXVldWUuaCIKLSsjaW5jbHVkZSAic2Z1dGlsL3NmQWN0aW9uUXVldWUuaCIKLSAjaW5jbHVkZSAicHJvZmlsZXIuaCIKLSAjaW5jbHVkZSAicnVsZXMuaCIKLSAjaW5jbHVkZSAidHJlZW5vZGVzLmgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXAtYWRkcmVzcy1zcGFjZS1pZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcC1hZGRyZXNzLXNwYWNlLWlkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWEwYjczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcC1hZGRyZXNzLXNwYWNlLWlkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA1YTUzMjYwYTgxOWUyODczZjU4MTY1ZTk2ODUyNTI5NzE5MTAxYzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2h1bnJvbmcgR3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KLURhdGU6IE1vbiwgNCBOb3YgMjAxMyAxMDozOTo1NiArMDgwMAotU3ViamVjdDogW1BBVENIXSBzbm9ydDogYWRkIHJlY2lwZQotCi1VcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci1jaGVja2luZyBmb3IgZGFwIGFkZHJlc3Mgc3BhY2UgaWQuLi4gY29uZmlndXJlOgotY29uZmlndXJlOiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENodW5yb25nIEd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDM0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDZmZTVkNjguLmU3NjM2Y2UgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTY5OCwyMyArNjk4LDIzIEBAIGlmIHRlc3QgIngkYWNfY3ZfZnVuY19kYXFfZHBfYWRkX2RjIiA9ICJ4eWVzIjsgdGhlbgotIAotIGZpCi0gCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGFxIGFkZHJlc3Mgc3BhY2UgSURdKQotLUFDX1JVTl9JRkVMU0UoCi0tW0FDX0xBTkdfUFJPR1JBTSgKLS1bWwotLSNpbmNsdWRlIDxkYXEuaD4KLS1dXSwKLS1bWwotLSAgIERBUV9Qa3RIZHJfdCBoZHI7Ci0tICAgaGRyLmFkZHJlc3Nfc3BhY2VfaWQgPSAwOwotLV1dKV0sCi0tW2hhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQ9InllcyJdLAotLVtoYXZlX2RhcV9hZGRyZXNzX3NwYWNlX2lkPSJubyJdKQotLUFDX01TR19SRVNVTFQoJGhhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQpCi0taWYgdGVzdCAieCRoYXZlX2RhcV9hZGRyZXNzX3NwYWNlX2lkIiA9ICJ4eWVzIjsgdGhlbgotLSAgICBBQ19ERUZJTkUoW0hBVkVfREFRX0FERFJFU1NfU1BBQ0VfSURdLFsxXSwKLS0gICAgICAgIFtEQVEgdmVyc2lvbiBzdXBwb3J0cyBhZGRyZXNzIHNwYWNlIElEIGluIGhlYWRlci5dKQotLWZpCi0rI0FDX01TR19DSEVDS0lORyhbZm9yIGRhcSBhZGRyZXNzIHNwYWNlIElEXSkKLSsjQUNfUlVOX0lGRUxTRSgKLSsjW0FDX0xBTkdfUFJPR1JBTSgKLSsjW1sKLSsjI2luY2x1ZGUgPGRhcS5oPgotKyNdXSwKLSsjW1sKLSsjICAgREFRX1BrdEhkcl90IGhkcjsKLSsjICAgaGRyLmFkZHJlc3Nfc3BhY2VfaWQgPSAwOwotKyNdXSldLAotK2hhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQ9InllcyIKLSsjW2hhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQ9Im5vIl0pCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQpCi0rI2lmIHRlc3QgIngkaGF2ZV9kYXFfYWRkcmVzc19zcGFjZV9pZCIgPSAieHllcyI7IHRoZW4KLSsjICAgIEFDX0RFRklORShbSEFWRV9EQVFfQUREUkVTU19TUEFDRV9JRF0sWzFdLAotKyMgICAgICAgIFtEQVEgdmVyc2lvbiBzdXBwb3J0cyBhZGRyZXNzIHNwYWNlIElEIGluIGhlYWRlci5dKQotKyNmaQotIAotIEFDX01TR19DSEVDS0lORyhbZm9yIGRhcSBmbG93IElEXSkKLSBBQ19SVU5fSUZFTFNFKApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtZGFxLWZsb3ctaWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtZmxvdy1pZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRkZjM3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtZmxvdy1pZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gNWFhNDJhMzEzN2M2NTdiNWVkZGQ0NjA4MzQzYWExODU0YmQ3Y2QyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpoaXF1YW4gTGkgPHpoaXF1YW4ubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTYgTm92IDIwMTUgMTA6MjM6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc25vcnQ6IDIuOS42LjAgLT4gMi45LjcuNQotCi1VcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLWZpeCB0aGUgYmVsb3cgZXJyb3I6Ci1jaGVja2luZyBmb3IgZGFxIGZsb3cgSUQuLi4gY29uZmlndXJlOgotY29uZmlndXJlOiBlcnJvcjogY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCi0KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDM0ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGU3NjM2Y2UuLjJmYmQyOTggMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTcxNiwyMyArNzE2LDIzIEBAIGhhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQ9InllcyIKLSAjICAgICAgICBbREFRIHZlcnNpb24gc3VwcG9ydHMgYWRkcmVzcyBzcGFjZSBJRCBpbiBoZWFkZXIuXSkKLSAjZmkKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgZmxvdyBJRF0pCi0tQUNfUlVOX0lGRUxTRSgKLS1bQUNfTEFOR19QUk9HUkFNKAotLVtbCi0tI2luY2x1ZGUgPGRhcS5oPgotLV1dLAotLVtbCi0tICAgREFRX1BrdEhkcl90IGhkcjsKLS0gICBoZHIuZmxvd19pZCA9IDA7Ci0tXV0pXSwKLS1baGF2ZV9kYXFfZmxvd19pZD0ieWVzIl0sCi0tW2hhdmVfZGFxX2Zsb3dfaWQ9Im5vIl0pCi0tQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfZmxvd19pZCkKLS1pZiB0ZXN0ICJ4JGhhdmVfZGFxX2Zsb3dfaWQiID0gInh5ZXMiOyB0aGVuCi0tICAgIEFDX0RFRklORShbSEFWRV9EQVFfRkxPV19JRF0sWzFdLAotLSAgICAgICAgW0RBUSB2ZXJzaW9uIHN1cHBvcnRzIGZsb3cgSUQgaW4gaGVhZGVyLl0pCi0tZmkKLSsjQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGFxIGZsb3cgSURdKQotKyNBQ19SVU5fSUZFTFNFKAotKyNbQUNfTEFOR19QUk9HUkFNKAotKyNbWwotKyMjaW5jbHVkZSA8ZGFxLmg+Ci0rI11dLAotKyNbWwotKyMgICBEQVFfUGt0SGRyX3QgaGRyOwotKyMgICBoZHIuZmxvd19pZCA9IDA7Ci0rI11dKV0sCi0raGF2ZV9kYXFfZmxvd19pZD0ieWVzIgotKyNbaGF2ZV9kYXFfZmxvd19pZD0ibm8iXSkKLSsjQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfZmxvd19pZCkKLSsjaWYgdGVzdCAieCRoYXZlX2RhcV9mbG93X2lkIiA9ICJ4eWVzIjsgdGhlbgotKyMgICAgQUNfREVGSU5FKFtIQVZFX0RBUV9GTE9XX0lEXSxbMV0sCi0rIyAgICAgICAgW0RBUSB2ZXJzaW9uIHN1cHBvcnRzIGZsb3cgSUQgaW4gaGVhZGVyLl0pCi0rI2ZpCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgREFRX1ZFUkRJQ1RfUkVUUlldKQotIEFDX1JVTl9JRkVMU0UoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1kYXEtdmVyZGljdC1yZXRyeS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcS12ZXJkaWN0LXJldHJ5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTk1OGE3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWRhcS12ZXJkaWN0LXJldHJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotRnJvbSBiOTE2NDQzZDQzZjJlMWVlYWNmYmVkMDAzMzI3NGEwMjcwZWY2MzRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWmhpcXVhbiBMaSA8emhpcXVhbi5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxNiBOb3YgMjAxNSAxMDoyMzowMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBzbm9ydDogMi45LjYuMCAtPiAyLjkuNy41Ci0KLVVwc3RyZWFtLVN0YXR1czpJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotZml4IHRoZSBiZWxvdyBlcnJvcjoKLWNoZWNraW5nIGZvciBEQVFfVkVSRElDVF9SRVRSWS4uLiBjb25maWd1cmU6Ci1jb25maWd1cmU6IGVycm9yOiBjYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKLQotLS0tCi0gY29uZmlndXJlLmluIHwgMzQgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMmZiZDI5OC4uNjI1NzNhOCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtNzM0LDIzICs3MzQsMjMgQEAgaGF2ZV9kYXFfZmxvd19pZD0ieWVzIgotICMgICAgICAgIFtEQVEgdmVyc2lvbiBzdXBwb3J0cyBmbG93IElEIGluIGhlYWRlci5dKQotICNmaQotIAotLUFDX01TR19DSEVDS0lORyhbZm9yIERBUV9WRVJESUNUX1JFVFJZXSkKLS1BQ19SVU5fSUZFTFNFKAotLVtBQ19MQU5HX1BST0dSQU0oCi0tW1sKLS0jaW5jbHVkZSA8ZGFxLmg+Ci0tXV0sCi0tW1sKLS0gICBEQVFfVmVyZGljdCB2ZXJkaWN0OwotLSAgIHZlcmRpY3QgPSBEQVFfVkVSRElDVF9SRVRSWTsKLS1dXSldLAotLVtoYXZlX2RhcV92ZXJkaWN0X3JldHJ5PSJ5ZXMiXSwKLS1baGF2ZV9kYXFfdmVyZGljdF9yZXRyeT0ibm8iXSkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX2RhcV92ZXJkaWN0X3JldHJ5KQotLWlmIHRlc3QgIngkaGF2ZV9kYXFfdmVyZGljdF9yZXRyeSIgPSAieHllcyI7IHRoZW4KLS0gICAgQUNfREVGSU5FKFtIQVZFX0RBUV9WRVJESUNUX1JFVFJZXSxbMV0sCi0tICAgICAgICBbREFRIHZlcnNpb24gc3VwcG9ydHMgREFRX1ZFUkRJQ1RfUkVUUlkgaW4gREFRX1ZlcmRpY3QuXSkKLS1maQotKyNBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBEQVFfVkVSRElDVF9SRVRSWV0pCi0rI0FDX1JVTl9JRkVMU0UoCi0rI1tBQ19MQU5HX1BST0dSQU0oCi0rI1tbCi0rIyNpbmNsdWRlIDxkYXEuaD4KLSsjXV0sCi0rI1tbCi0rIyAgIERBUV9WZXJkaWN0IHZlcmRpY3Q7Ci0rIyAgIHZlcmRpY3QgPSBEQVFfVkVSRElDVF9SRVRSWTsKLSsjXV0pXSwKLStoYXZlX2RhcV92ZXJkaWN0X3JldHJ5PSJ5ZXMiCi0rI1toYXZlX2RhcV92ZXJkaWN0X3JldHJ5PSJubyJdKQotKyNBQ19NU0dfUkVTVUxUKCRoYXZlX2RhcV92ZXJkaWN0X3JldHJ5KQotKyNpZiB0ZXN0ICJ4JGhhdmVfZGFxX3ZlcmRpY3RfcmV0cnkiID0gInh5ZXMiOyB0aGVuCi0rIyAgICBBQ19ERUZJTkUoW0hBVkVfREFRX1ZFUkRJQ1RfUkVUUlldLFsxXSwKLSsjICAgICAgICBbREFRIHZlcnNpb24gc3VwcG9ydHMgREFRX1ZFUkRJQ1RfUkVUUlkgaW4gREFRX1ZlcmRpY3QuXSkKLSsjZmkKLSAKLSAjIGFueSBzcGFyYyBwbGF0Zm9ybSBoYXMgdG8gaGF2ZSB0aGlzIG9uZSBkZWZpbmVkLgotIEFDX01TR19DSEVDS0lORyhmb3Igc3BhcmMpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnQvZGlzYWJsZS1pbmFkZHItbm9uZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWluYWRkci1ub25lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWU5ZjA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLWluYWRkci1ub25lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSBhMWZkYmNlZDQxNjZjYjBmMzVkMjNiNjNhNTkzMTJkODY4NjA0ODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2h1bnJvbmcgR3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KLURhdGU6IE1vbiwgNCBOb3YgMjAxMyAxMDozOTo1NiArMDgwMAotU3ViamVjdDogW1BBVENIXSBzbm9ydDogYWRkIHJlY2lwZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1maXggdGhlIGJlbG93IGVycm9yOgotY2hlY2tpbmcgZm9yIElOQUREUl9OT05FLi4uIGNvbmZpZ3VyZToKLWNvbmZpZ3VyZTogZXJyb3I6IGNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHVucm9uZyBHdW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgotCi0tLS0KLSBjb25maWd1cmUuaW4gfCA1MCArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggMjBkMTVlYi4uNmZlNWQ2OCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMjc0LDI1ICsyNzQsNyBAQCBBQ19DSEVDS19UWVBFUyhbaW50OF90LGludDE2X3QsaW50MzJfdCxpbnQ2NF90XSkKLSBBQ19DSEVDS19UWVBFUyhbYm9vbGVhbl0pCi0gCi0gIyBJbiBjYXNlIElOQUREUl9OT05FIGlzIG5vdCBkZWZpbmVkIChsaWtlIG9uIFNvbGFyaXMpCi0taGF2ZV9pbmFkZHJfbm9uZT0ibm8iCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgSU5BRERSX05PTkVdKQotLUFDX1JVTl9JRkVMU0UoCi0tW0FDX0xBTkdfUFJPR1JBTSgKLS1bWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLS1dXSwKLS1bWwotLQlpZiAoaW5ldF9hZGRyKCIxMCw1LDIiKSA9PSBJTkFERFJfTk9ORSk7Ci0tICAgIHJldHVybiAwOwotLV1dKV0sCi0tW2hhdmVfaW5hZGRyX25vbmU9InllcyJdLAotLVtoYXZlX2luYWRkcl9ub25lPSJubyJdKQotLUFDX01TR19SRVNVTFQoJGhhdmVfaW5hZGRyX25vbmUpCi0taWYgdGVzdCAieCRoYXZlX2luYWRkcl9ub25lIiA9ICJ4bm8iOyB0aGVuCi0tCUFDX0RFRklORShbSU5BRERSX05PTkVdLFstMV0sW0ZvciBJTkFERFJfTk9ORSBkZWZpbml0aW9uXSkKLS1maQotK2hhdmVfaW5hZGRyX25vbmU9InllcyIKLSAKLSBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1AQCAtNDIxLDIxICs0MDMsMjEgQEAgaWYgdGVzdCAieCRMUENBUCIgPSAieG5vIjsgdGhlbgotICAgZmkKLSBmaQotIAotLUFDX01TR19DSEVDS0lORyhbZm9yIHBjYXBfbGV4X2Rlc3Ryb3ldKQotLUFDX1JVTl9JRkVMU0UoCi0tW0FDX0xBTkdfUFJPR1JBTSgKLS1bWwotLSNpbmNsdWRlIDxwY2FwLmg+Ci0tXV0sCi0tW1sKLS0gICBwY2FwX2xleF9kZXN0cm95KCk7Ci0tXV0pXSwKLS1baGF2ZV9wY2FwX2xleF9kZXN0cm95PSJ5ZXMiXSwKLS1baGF2ZV9wY2FwX2xleF9kZXN0cm95PSJubyJdKQotLUFDX01TR19SRVNVTFQoJGhhdmVfcGNhcF9sZXhfZGVzdHJveSkKLS1pZiB0ZXN0ICJ4JGhhdmVfcGNhcF9sZXhfZGVzdHJveSIgPSAieHllcyI7IHRoZW4KLS0gICAgQUNfREVGSU5FKFtIQVZFX1BDQVBfTEVYX0RFU1RST1ldLFsxXSxbQ2FuIGNsZWFudXAgbGV4IGJ1ZmZlciBzdGFjayBjcmVhdGVkIGJ5IHBjYXAgYnBmIGZpbHRlcl0pCi0tZmkKLSsjQUNfTVNHX0NIRUNLSU5HKFtmb3IgcGNhcF9sZXhfZGVzdHJveV0pCi0rI0FDX1JVTl9JRkVMU0UoCi0rI1tBQ19MQU5HX1BST0dSQU0oCi0rI1tbCi0rIyNpbmNsdWRlIDxwY2FwLmg+Ci0rI11dLAotKyNbWwotKyMgICBwY2FwX2xleF9kZXN0cm95KCk7Ci0rI11dKV0sCi0raGF2ZV9wY2FwX2xleF9kZXN0cm95PSJ5ZXMiCi0rI1toYXZlX3BjYXBfbGV4X2Rlc3Ryb3k9Im5vIl0pCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfcGNhcF9sZXhfZGVzdHJveSkKLSsjaWYgdGVzdCAieCRoYXZlX3BjYXBfbGV4X2Rlc3Ryb3kiID0gInh5ZXMiOyB0aGVuCi0rIyAgICBBQ19ERUZJTkUoW0hBVkVfUENBUF9MRVhfREVTVFJPWV0sWzFdLFtDYW4gY2xlYW51cCBsZXggYnVmZmVyIHN0YWNrIGNyZWF0ZWQgYnkgcGNhcCBicGYgZmlsdGVyXSkKLSsjZmkKLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwY2FwX2xpYl92ZXJzaW9uXSkKLSBBQ19MSU5LX0lGRUxTRSgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLXJ1bi10ZXN0LXByb2dyYW0td2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0L2Rpc2FibGUtcnVuLXRlc3QtcHJvZ3JhbS13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM3OTYyZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydC9kaXNhYmxlLXJ1bi10ZXN0LXByb2dyYW0td2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjU0IEBACitGcm9tIGRjMzkwODM3YmM3YWRjMjA1YmI5NTVkMDkyMjA0MGE3ZTM2NWQ4ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIzIEp1bCAyMDE4IDEzOjU0OjA3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgcnVuIHRlc3QgcHJvZ3JhbSB3aGlsZSBjcm9zcyBjb21waWxpbmcKKworZml4IGNvbmZpZ3VyZSBlcnJvcjoKK2NvbmZpZ3VyZTogZXJyb3I6IGNhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHdoaWxlIGNyb3NzIGNvbXBpbGluZworCitVcHN0cmVhbS1TdGF0dXM6SW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5pbiB8IDE0OCArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMzYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDRiM2E1ZGIuLmE2YzU0OTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTI4NCwxOSArMjg0LDcgQEAgQUNfQ0hFQ0tfVFlQRVMoW2Jvb2xlYW5dKQorICMgSW4gY2FzZSBJTkFERFJfTk9ORSBpcyBub3QgZGVmaW5lZCAobGlrZSBvbiBTb2xhcmlzKQorIGhhdmVfaW5hZGRyX25vbmU9Im5vIgorIEFDX01TR19DSEVDS0lORyhbZm9yIElOQUREUl9OT05FXSkKKy1BQ19SVU5fSUZFTFNFKAorLVtBQ19MQU5HX1BST0dSQU0oCistW1sKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKy0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CistXV0sCistW1sKKy0JaWYgKGluZXRfYWRkcigiMTAsNSwyIikgPT0gSU5BRERSX05PTkUpOworLSAgICByZXR1cm4gMDsKKy1dXSldLAorLVtoYXZlX2luYWRkcl9ub25lPSJ5ZXMiXSwKKy1baGF2ZV9pbmFkZHJfbm9uZT0ibm8iXSkKKytoYXZlX2luYWRkcl9ub25lPSJ5ZXMiCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9pbmFkZHJfbm9uZSkKKyBpZiB0ZXN0ICJ4JGhhdmVfaW5hZGRyX25vbmUiID0gInhubyI7IHRoZW4KKyAJQUNfREVGSU5FKFtJTkFERFJfTk9ORV0sWy0xXSxbRm9yIElOQUREUl9OT05FIGRlZmluaXRpb25dKQorQEAgLTQyOSwxNiArNDE3LDcgQEAgaWYgdGVzdCAieCRMUENBUCIgPSAieG5vIjsgdGhlbgorIGZpCisgCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcGNhcF9sZXhfZGVzdHJveV0pCistQUNfUlVOX0lGRUxTRSgKKy1bQUNfTEFOR19QUk9HUkFNKAorLVtbCistI2luY2x1ZGUgPHBjYXAuaD4KKy1dXSwKKy1bWworLSAgIHBjYXBfbGV4X2Rlc3Ryb3koKTsKKy1dXSldLAorLVtoYXZlX3BjYXBfbGV4X2Rlc3Ryb3k9InllcyJdLAorLVtoYXZlX3BjYXBfbGV4X2Rlc3Ryb3k9Im5vIl0pCisraGF2ZV9wY2FwX2xleF9kZXN0cm95PSJ5ZXMiCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9wY2FwX2xleF9kZXN0cm95KQorIGlmIHRlc3QgIngkaGF2ZV9wY2FwX2xleF9kZXN0cm95IiA9ICJ4eWVzIjsgdGhlbgorICAgICBBQ19ERUZJTkUoW0hBVkVfUENBUF9MRVhfREVTVFJPWV0sWzFdLFtDYW4gY2xlYW51cCBsZXggYnVmZmVyIHN0YWNrIGNyZWF0ZWQgYnkgcGNhcCBicGYgZmlsdGVyXSkKK0BAIC03MTYsMTcgKzY5NSw3IEBAIGZpCisgQUNfQ0hFQ0tfRlVOQ1MoW2RhcV9odXBfYXBwbHldIFtkYXFfYWNxdWlyZV93aXRoX21ldGFdIFtkYXFfZHBfYWRkX2RjXSkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgcmVhbCBhZGRyZXNzZXNdKQorLUFDX1JVTl9JRkVMU0UoCistW0FDX0xBTkdfUFJPR1JBTSgKKy1bWworLSNpbmNsdWRlIDxkYXEuaD4KKy1dXSwKKy1bWworLSAgIERBUV9Qa3RIZHJfdCBoZHI7CistICAgaGRyLm5fcmVhbF9kUG9ydCA9IDA7CistXV0pXSwKKy1baGF2ZV9kYXFfcmVhbF9hZGRyZXNzZXM9InllcyJdLAorLVtoYXZlX2RhcV9yZWFsX2FkZHJlc3Nlcz0ibm8iXSkKKytoYXZlX2RhcV9yZWFsX2FkZHJlc3Nlcz0ibm8iCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfcmVhbF9hZGRyZXNzZXMpCisgaWYgdGVzdCAieCRoYXZlX2RhcV9yZWFsX2FkZHJlc3NlcyIgPSAieHllcyI7IHRoZW4KKyAgICAgQUNfREVGSU5FKFtIQVZFX0RBUV9SRUFMX0FERFJFU1NFU10sWzFdLAorQEAgLTc1NCwxNyArNzIzLDcgQEAgaWYgdGVzdCAieCRhY19jdl9mdW5jX2RhcV9kcF9hZGRfZGMiID0gInh5ZXMiOyB0aGVuCisgZmkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgYWRkcmVzcyBzcGFjZSBJRF0pCistQUNfUlVOX0lGRUxTRSgKKy1bQUNfTEFOR19QUk9HUkFNKAorLVtbCistI2luY2x1ZGUgPGRhcS5oPgorLV1dLAorLVtbCistICAgREFRX1BrdEhkcl90IGhkcjsKKy0gICBoZHIuYWRkcmVzc19zcGFjZV9pZCA9IDA7CistXV0pXSwKKy1baGF2ZV9kYXFfYWRkcmVzc19zcGFjZV9pZD0ieWVzIl0sCistW2hhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQ9Im5vIl0pCisraGF2ZV9kYXFfYWRkcmVzc19zcGFjZV9pZD0ieWVzIgorIEFDX01TR19SRVNVTFQoJGhhdmVfZGFxX2FkZHJlc3Nfc3BhY2VfaWQpCisgaWYgdGVzdCAieCRoYXZlX2RhcV9hZGRyZXNzX3NwYWNlX2lkIiA9ICJ4eWVzIjsgdGhlbgorICAgICBBQ19ERUZJTkUoW0hBVkVfREFRX0FERFJFU1NfU1BBQ0VfSURdLFsxXSwKK0BAIC03NzIsMTcgKzczMSw3IEBAIGlmIHRlc3QgIngkaGF2ZV9kYXFfYWRkcmVzc19zcGFjZV9pZCIgPSAieHllcyI7IHRoZW4KKyBmaQorIAorIEFDX01TR19DSEVDS0lORyhbZm9yIGRhcSBmbG93IElEXSkKKy1BQ19SVU5fSUZFTFNFKAorLVtBQ19MQU5HX1BST0dSQU0oCistW1sKKy0jaW5jbHVkZSA8ZGFxLmg+CistXV0sCistW1sKKy0gICBEQVFfUGt0SGRyX3QgaGRyOworLSAgIGhkci5mbG93X2lkID0gMDsKKy1dXSldLAorLVtoYXZlX2RhcV9mbG93X2lkPSJ5ZXMiXSwKKy1baGF2ZV9kYXFfZmxvd19pZD0ibm8iXSkKKytoYXZlX2RhcV9mbG93X2lkPSJ5ZXMiCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfZmxvd19pZCkKKyBpZiB0ZXN0ICJ4JGhhdmVfZGFxX2Zsb3dfaWQiID0gInh5ZXMiOyB0aGVuCisgICAgIEFDX0RFRklORShbSEFWRV9EQVFfRkxPV19JRF0sWzFdLAorQEAgLTc5MCwxOSArNzM5LDcgQEAgaWYgdGVzdCAieCRoYXZlX2RhcV9mbG93X2lkIiA9ICJ4eWVzIjsgdGhlbgorIGZpCisgCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGFxIGV4dGVuZGVkIGZsb3cgbW9kaWZpZXJzXSkKKy1BQ19SVU5fSUZFTFNFKAorLVtBQ19MQU5HX1BST0dSQU0oCistW1sKKy0jaW5jbHVkZSA8ZGFxLmg+CistXV0sCistW1sKKy0gICBEQVFfTW9kRmxvd190IG1vZDsKKy0gICBtb2QudHlwZSA9IDA7CistICAgbW9kLmxlbmd0aCA9IDA7CistICAgbW9kLnZhbHVlID0gTlVMTDsKKy1dXSldLAorLVtoYXZlX2RhcV9leHRfbW9kZmxvdz0ieWVzIl0sCistW2hhdmVfZGFxX2V4dF9tb2RmbG93PSJubyJdKQorK2hhdmVfZGFxX2V4dF9tb2RmbG93PSJubyIKKyBBQ19NU0dfUkVTVUxUKCRoYXZlX2RhcV9leHRfbW9kZmxvdykKKyBpZiB0ZXN0ICJ4JGhhdmVfZGFxX2V4dF9tb2RmbG93IiA9ICJ4eWVzIjsgdGhlbgorICAgICBDQ09ORklHRkxBR1M9IiR7Q0NPTkZJR0ZMQUdTfSAtREhBVkVfREFRX0VYVF9NT0RGTE9XIgorQEAgLTgxMSwxOSArNzQ4LDcgQEAgaWYgdGVzdCAieCRoYXZlX2RhcV9leHRfbW9kZmxvdyIgPSAieHllcyI7IHRoZW4KKyBmaQorIAorIEFDX01TR19DSEVDS0lORyhbZm9yIGRhcSBxdWVyeSBmbG93XSkKKy1BQ19SVU5fSUZFTFNFKAorLVtBQ19MQU5HX1BST0dSQU0oCistW1sKKy0jaW5jbHVkZSA8ZGFxLmg+CistXV0sCistW1sKKy0gICBEQVFfUXVlcnlGbG93X3QgbW9kOworLSAgIG1vZC50eXBlID0gMDsKKy0gICBtb2QubGVuZ3RoID0gMDsKKy0gICBtb2QudmFsdWUgPSBOVUxMOworLV1dKV0sCistW2hhdmVfZGFxX3F1ZXJ5Zmxvdz0ieWVzIl0sCistW2hhdmVfZGFxX3F1ZXJ5Zmxvdz0ibm8iXSkKKytoYXZlX2RhcV9xdWVyeWZsb3c9Im5vIgorIEFDX01TR19SRVNVTFQoJGhhdmVfZGFxX3F1ZXJ5ZmxvdykKKyBpZiB0ZXN0ICJ4JGhhdmVfZGFxX3F1ZXJ5ZmxvdyIgPSAieHllcyI7IHRoZW4KKyAgICAgQ0NPTkZJR0ZMQUdTPSIke0NDT05GSUdGTEFHU30gLURIQVZFX0RBUV9RVUVSWUZMT1ciCitAQCAtODMyLDE2ICs3NTcsNyBAQCBpZiB0ZXN0ICJ4JGhhdmVfZGFxX3F1ZXJ5ZmxvdyIgPSAieHllcyI7IHRoZW4KKyBmaQorIAorIEFDX01TR19DSEVDS0lORyhbZm9yIGRhcSBkYXRhIGNoYW5uZWwgZmxhZ3NdKQorLUFDX1JVTl9JRkVMU0UoCistW0FDX0xBTkdfUFJPR1JBTSgKKy1bWworLSNpbmNsdWRlIDxkYXEuaD4KKy1dXSwKKy1bWworLSAgIERBUV9EYXRhX0NoYW5uZWxfUGFyYW1zX3QgcGFyYW1zOworLV1dKV0sCistW2hhdmVfZGFxX2RhdGFfY2hhbm5lbF9mbGFncz0ieWVzIl0sCistW2hhdmVfZGFxX2RhdGFfY2hhbm5lbF9mbGFncz0ibm8iXSkKKytoYXZlX2RhcV9kYXRhX2NoYW5uZWxfZmxhZ3M9Im5vIgorIEFDX01TR19SRVNVTFQoJGhhdmVfZGFxX2RhdGFfY2hhbm5lbF9mbGFncykKKyBpZiB0ZXN0ICJ4JGhhdmVfZGFxX2RhdGFfY2hhbm5lbF9mbGFncyIgPSAieHllcyI7IHRoZW4KKyAgICAgQ0NPTkZJR0ZMQUdTPSIke0NDT05GSUdGTEFHU30gLURIQVZFX0RBUV9EQVRBX0NIQU5ORUxfUEFSQU1TIgorQEAgLTg1MCwxNyArNzY2LDcgQEAgaWYgdGVzdCAieCRoYXZlX2RhcV9kYXRhX2NoYW5uZWxfZmxhZ3MiID0gInh5ZXMiOyB0aGVuCisgZmkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZXBhcmF0ZSBJUCB2ZXJzaW9ucyBvbiBwaW5ob2xlIGVuZHBvaW50c10pCistQUNfUlVOX0lGRUxTRSgKKy1bQUNfTEFOR19QUk9HUkFNKAorLVtbCistI2luY2x1ZGUgPGRhcS5oPgorLV1dLAorLVtbCistICAgREFRX0RQX2tleV90IGRwS2V5OworLSAgIGRwS2V5LnNyY19hZiA9IDA7CistXV0pXSwKKy1baGF2ZV9kYXFfZGF0YV9jaGFubmVsX3NlcGFyYXRlX2lwX3ZlcnNpb25zPSJ5ZXMiXSwKKy1baGF2ZV9kYXFfZGF0YV9jaGFubmVsX3NlcGFyYXRlX2lwX3ZlcnNpb25zPSJubyJdKQorK2hhdmVfZGFxX2RhdGFfY2hhbm5lbF9zZXBhcmF0ZV9pcF92ZXJzaW9ucz0ibm8iCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfZGF0YV9jaGFubmVsX3NlcGFyYXRlX2lwX3ZlcnNpb25zKQorIGlmIHRlc3QgIngkaGF2ZV9kYXFfZGF0YV9jaGFubmVsX3NlcGFyYXRlX2lwX3ZlcnNpb25zIiA9ICJ4eWVzIjsgdGhlbgorICAgICBDQ09ORklHRkxBR1M9IiR7Q0NPTkZJR0ZMQUdTfSAtREhBVkVfREFRX0RBVEFfQ0hBTk5FTF9TRVBBUkFURV9JUF9WRVJTSU9OUyIKK0BAIC04NjksMTcgKzc3NSw3IEBAIGlmIHRlc3QgIngkaGF2ZV9kYXFfZGF0YV9jaGFubmVsX3NlcGFyYXRlX2lwX3ZlcnNpb25zIiA9ICJ4eWVzIjsgdGhlbgorIGZpCisgCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgREFRX1ZFUkRJQ1RfUkVUUlldKQorLUFDX1JVTl9JRkVMU0UoCistW0FDX0xBTkdfUFJPR1JBTSgKKy1bWworLSNpbmNsdWRlIDxkYXEuaD4KKy1dXSwKKy1bWworLSAgIERBUV9WZXJkaWN0IHZlcmRpY3Q7CistICAgdmVyZGljdCA9IERBUV9WRVJESUNUX1JFVFJZOworLV1dKV0sCistW2hhdmVfZGFxX3ZlcmRpY3RfcmV0cnk9InllcyJdLAorLVtoYXZlX2RhcV92ZXJkaWN0X3JldHJ5PSJubyJdKQorK2hhdmVfZGFxX3ZlcmRpY3RfcmV0cnk9InllcyIKKyBBQ19NU0dfUkVTVUxUKCRoYXZlX2RhcV92ZXJkaWN0X3JldHJ5KQorIGlmIHRlc3QgIngkaGF2ZV9kYXFfdmVyZGljdF9yZXRyeSIgPSAieHllcyI7IHRoZW4KKyAgICAgQUNfREVGSU5FKFtIQVZFX0RBUV9WRVJESUNUX1JFVFJZXSxbMV0sCitAQCAtODg3LDE3ICs3ODMsNyBAQCBpZiB0ZXN0ICJ4JGhhdmVfZGFxX3ZlcmRpY3RfcmV0cnkiID0gInh5ZXMiOyB0aGVuCisgZmkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgcGFja2V0IHRyYWNlXSkKKy1BQ19SVU5fSUZFTFNFKAorLVtBQ19MQU5HX1BST0dSQU0oCistW1sKKy0jaW5jbHVkZSA8ZGFxLmg+CistXV0sCistW1sKKy0gICBEQVFfUGt0SGRyX3QgaGRyOworLSAgIGhkci5mbGFncyA9IERBUV9QS1RfRkxBR19UUkFDRV9FTkFCTEVEOworLV1dKV0sCistW2hhdmVfZGFxX3BhY2tldF90cmFjZT0ieWVzIl0sCistW2hhdmVfZGFxX3BhY2tldF90cmFjZT0ibm8iXSkKKytoYXZlX2RhcV9wYWNrZXRfdHJhY2U9InllcyIKKyBBQ19NU0dfUkVTVUxUKCRoYXZlX2RhcV9wYWNrZXRfdHJhY2UpCisgaWYgdGVzdCAieCRoYXZlX2RhcV9wYWNrZXRfdHJhY2UiID0gInh5ZXMiOyB0aGVuCisgICAgIEFDX0RFRklORShbSEFWRV9EQVFfUEtUX1RSQUNFXSxbMV0sCitAQCAtOTA3LDE3ICs3OTMsNyBAQCBlbHNlCisgZmkKKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkYXEgdmVyZGljdCByZWFzb25dKQorLUFDX1JVTl9JRkVMU0UoCistW0FDX0xBTkdfUFJPR1JBTSgKKy1bWworLSNpbmNsdWRlIDxkYXEuaD4KKy1dXSwKKy1bWworLSAgIERBUV9Nb2RGbG93X3QgZmw7CistICAgZmwudHlwZSA9IERBUV9NT0RGTE9XX1RZUEVfVkVSX1JFQVNPTjsKKy1dXSldLAorLVtoYXZlX2RhcV92ZXJkaWN0X3JlYXNvbj0ieWVzIl0sCistW2hhdmVfZGFxX3ZlcmRpY3RfcmVhc29uPSJubyJdKQorK2hhdmVfZGFxX3ZlcmRpY3RfcmVhc29uPSJ5ZXMiCisgQUNfTVNHX1JFU1VMVCgkaGF2ZV9kYXFfdmVyZGljdF9yZWFzb24pCisgaWYgdGVzdCAieCRoYXZlX2RhcV92ZXJkaWN0X3JlYXNvbiIgPSAieHllcyI7IHRoZW4KKyAgICAgQUNfREVGSU5FKFtIQVZFX0RBUV9WRVJESUNUX1JFQVNPTl0sWzFdLAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjExLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk5MTM4ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zbm9ydC9zbm9ydF8yLjkuMTEuMS5iYgpAQCAtMCwwICsxLDEwMyBAQAorREVTQ1JJUFRJT04gPSAic25vcnQgLSBhIGZyZWUgbGlnaHR3ZWlnaHQgbmV0d29yayBpbnRydXNpb24gZGV0ZWN0aW9uIHN5c3RlbSBmb3IgVU5JWCBhbmQgV2luZG93cy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNub3J0Lm9yZy8iCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4ZmE4ZWY5NjZiNDhmYmY5MDk1ZTEzY2M5MjM3N2M1IgorCitERVBFTkRTID0gInh6IGxpYnBjYXAgbGlicGNyZSBkYXEgbGliZG5ldCB1dGlsLWxpbnV4IGRhcS1uYXRpdmUgbGlidGlycGMgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LnNub3J0Lm9yZy9kb3dubG9hZHMvYXJjaGl2ZS9zbm9ydC8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9zbm9ydC5pbml0IFwKKyAgICBmaWxlOi8vMDAwMS1saWJwY2FwLXNlYXJjaC1zeXNyb290LWZvci1oZWFkZXJzLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LWhvc3QtY29udGFtaW5hdGlvbi13aGVuLWVuYWJsZS1zdGF0aWMtZGFxLnBhdGNoIFwKKyAgICBmaWxlOi8vZGlzYWJsZS1ydW4tdGVzdC1wcm9ncmFtLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNzhlMzkzOGIyYjVjOGUzNThmOTQyZDBmZmNlMThjYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjZiM2FlYWM1YTEwOWY1NTUwNGJkMzcwNTY0YWM0MzFjYjE3NzM1MDc5MjlkYzQ2MTYyNjg5OGYzM2Y0NmNkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93d3cuc25vcnQub3JnL2Rvd25sb2FkcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInNub3J0LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZworCitJTklUU0NSSVBUX05BTUUgPSAic25vcnQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZ3JlIFwKKyAgICAtLWVuYWJsZS1saW51eC1zbXAtc3RhdHMgXAorICAgIC0tZW5hYmxlLXJlbG9hZCBcCisgICAgLS1lbmFibGUtcmVsb2FkLWVycm9yLXJlc3RhcnQgXAorICAgIC0tZW5hYmxlLXRhcmdldGJhc2VkIFwKKyAgICAtLWVuYWJsZS1zdGF0aWMtZGFxIFwKKyAgICAtLXdpdGgtZG5ldC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgLS13aXRoLWRuZXQtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAtLXdpdGgtbGlicGNyZS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgLS13aXRoLWxpYnBjcmUtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAtLXdpdGgtZGFxLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAtLXdpdGgtZGFxLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCisiCisKKyMgaWYgeW91IHdhbnQgdG8gZGlzYWJsZSBpdCwgeW91IG5lZWQgdG8gcGF0Y2ggY29uZmlndXJlLmluIGZpcnN0CisjIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvc2hhLmhdLCwgU0hBX0g9Im5vIikKKyMgaXMgY2FsbGVkIGV2ZW4gd2l0aCAtLXdpdGhvdXQtb3BlbnNzbC1pbmNsdWRlcworUEFDS0FHRUNPTkZJRyA/PSAib3BlbnNzbCBsem1hIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtb3BlbnNzbC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIC0td2l0aG91dC1vcGVuc3NsLWluY2x1ZGVzIC0td2l0aG91dC1vcGVuc3NsLWxpYnJhcmllcywgb3BlbnNzbCwiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0td2l0aC1sem1hLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1sem1hLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRob3V0LWx6bWEtaW5jbHVkZXMgLS13aXRob3V0LWx6bWEtbGlicmFyaWVzLCB4eiwiCisKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1MgKz0gIiAtbHRpcnBjIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Nub3J0L3J1bGVzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zbm9ydC9wcmVwcm9jX3J1bGVzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBmb3IgaSBpbiBtYXAgY29uZmlnIGNvbmYgZHRkOyBkbworICAgICAgICBjcCAke1N9L2V0Yy8qLiRpICR7RH0ke3N5c2NvbmZkaXJ9L3Nub3J0LworICAgIGRvbmUKKworICAgICMgZml4IHRoZSBoYXJkY29kZWQgcGF0aCBhbmQgbGliIG5hbWUKKyAgICAjIGNvbW1lbnQgb3V0IHRoZSBydWxlcyB0aGF0IGFyZSBub3QgcHJvdmlkZWQKKyAgICBzZWQgLWkgLWUgJ3MjL3Vzci9sb2NhbC9saWIjJHtsaWJkaXJ9IycgXAorICAgICAgICAgICAtZSAncyNcLlwuL1woLipydWxlc1wpIyR7c3lzY29uZmRpcn0vc25vcnQvXDEjJyBcCisgICAgICAgICAgIC1lICdzI1wobGlic2ZfZW5naW5lLnNvXCkjXDEuMCMnIFwKKyAgICAgICAgICAgLWUgJ3MvXlwoaW5jbHVkZSAkUlVMRV9QQVRIXCkvI1wxLycgXAorICAgICAgICAgICAtZSAncy9eXChkeW5hbWljZGV0ZWN0aW9uXCkvI1wxLycgXAorICAgICAgICAgICAtZSAnL3ByZXByb2Nlc3NvciByZXB1dGF0aW9uLywvYmxhY2tsaXN0LyBzL14vIy8nIFwKKyAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vc25vcnQvc25vcnQuY29uZgorCisgICAgY3AgJHtTfS9wcmVwcm9jX3J1bGVzLyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vc25vcnQvcHJlcHJvY19ydWxlcy8KKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3Nub3J0LmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3Nub3J0CisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nL3Nub3J0CisgICAgaW5zdGFsbCAtZCAke0R9L3Zhci9sb2cvc25vcnQKKworICAgIHNlZCAtaSAncy8tZmRlYnVnLXByZWZpeC1tYXBbXiBdKi8vZzsgcyMke1NUQUdJTkdfRElSX1RBUkdFVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLyoucGMKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNlbmdpbmUvKi5zby4qIFwKKyAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3ByZXByb2Nlc3Nvci8qLnNvLiogXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcnVsZXMvKi5zby4qIFwKKyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiIFwKKyAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY2VuZ2luZS8uZGVidWcgXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcHJlcHJvY2Vzc29yLy5kZWJ1ZyBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNydWxlcy8uZGVidWcgXAorIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljZW5naW5lLyouYSBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNwcmVwcm9jZXNzb3IvKi5hIFwKKyAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3J1bGVzLyouYSBcCisgICAgJHtsaWJkaXJ9L3Nub3J0L2R5bmFtaWNfcHJlcHJvYy8qLmEgXAorICAgICR7bGliZGlyfS9zbm9ydC9keW5hbWljX291dHB1dC8qLmEgXAorIgorRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljZW5naW5lLyoubGEgXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcHJlcHJvY2Vzc29yLyoubGEgXAorICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcnVsZXMvKi5sYSBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNlbmdpbmUvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNwcmVwcm9jZXNzb3IvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNydWxlcy8qLnNvIFwKKyAgICAke3ByZWZpeH0vc3JjL3Nub3J0X2R5bmFtaWNzcmMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Nub3J0L3Nub3J0XzIuOS43LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjcuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAzNGI4NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc25vcnQvc25vcnRfMi45LjcuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJzbm9ydCAtIGEgZnJlZSBsaWdodHdlaWdodCBuZXR3b3JrIGludHJ1c2lvbiBkZXRlY3Rpb24gc3lzdGVtIGZvciBVTklYIGFuZCBXaW5kb3dzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc25vcnQub3JnLyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzhmYThlZjk2NmI0OGZiZjkwOTVlMTNjYzkyMzc3YzUiCi0KLURFUEVORFMgPSAieHogbGlicGNhcCBsaWJwY3JlIGRhcSBsaWJkbmV0IHV0aWwtbGludXggZGFxLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCi0KLVNSQ19VUkkgPSAiICR7R0VOVE9PX01JUlJPUn0vJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCi0gICAgZmlsZTovL3Nub3J0LmluaXQgXAotICAgIGZpbGU6Ly9kaXNhYmxlLWluYWRkci1ub25lLnBhdGNoIFwKLSAgICBmaWxlOi8vZGlzYWJsZS1kYXAtYWRkcmVzcy1zcGFjZS1pZC5wYXRjaCBcCi0gICAgZmlsZTovL2Rpc2FibGUtZGFxLWZsb3ctaWQucGF0Y2ggXAotICAgIGZpbGU6Ly9kaXNhYmxlLWRhcS12ZXJkaWN0LXJldHJ5LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJwY2FwLXNlYXJjaC1zeXNyb290LWZvci1oZWFkZXJzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1maXgtZG9fcGFja2FnZS1mYWlsZWQtc2luY2Utc25vcnQtMi45LjcuMC5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1ob3N0LWNvbnRhbWluYXRpb24td2hlbi1lbmFibGUtc3RhdGljLWRhcS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImZkMjcxNzg4YzBmODg3NmJlODdhODU4YTkxNDJmMjAyIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQwM2YxMWI1MzAxYjE2NjQyMTk5YTg2YWE5MDM4OGVhYTUzZjUwMDNmODNiMGM1NTk1NzQ1YTQ5MDA0N2JlMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtcmMuZCBwa2djb25maWcKLQotSU5JVFNDUklQVF9OQU1FID0gInNub3J0IgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLWdyZSBcCi0gICAgLS1lbmFibGUtbGludXgtc21wLXN0YXRzIFwKLSAgICAtLWVuYWJsZS1yZWxvYWQgXAotICAgIC0tZW5hYmxlLXJlbG9hZC1lcnJvci1yZXN0YXJ0IFwKLSAgICAtLWVuYWJsZS10YXJnZXRiYXNlZCBcCi0gICAgLS1lbmFibGUtc3RhdGljLWRhcSBcCi0gICAgLS13aXRoLWRuZXQtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIC0td2l0aC1kbmV0LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgLS13aXRoLWxpYnBjcmUtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIC0td2l0aC1saWJwY3JlLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgLS13aXRoLWRhcS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgLS13aXRoLWRhcS1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAotIgotCi0jIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgaXQsIHlvdSBuZWVkIHRvIHBhdGNoIGNvbmZpZ3VyZS5pbiBmaXJzdAotIyBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL3NoYS5oXSwsIFNIQV9IPSJubyIpCi0jIGlzIGNhbGxlZCBldmVuIHdpdGggLS13aXRob3V0LW9wZW5zc2wtaW5jbHVkZXMKLVBBQ0tBR0VDT05GSUcgPz0gIm9wZW5zc2wgbHptYSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLW9wZW5zc2wtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAtLXdpdGhvdXQtb3BlbnNzbC1pbmNsdWRlcyAtLXdpdGhvdXQtb3BlbnNzbC1saWJyYXJpZXMsIG9wZW5zc2wsIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLXdpdGgtbHptYS1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbHptYS1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIC0td2l0aG91dC1sem1hLWluY2x1ZGVzIC0td2l0aG91dC1sem1hLWxpYnJhcmllcywgeHosIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zbm9ydC9ydWxlcwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc25vcnQvcHJlcHJvY19ydWxlcwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgZm9yIGkgaW4gbWFwIGNvbmZpZyBjb25mIGR0ZDsgZG8KLSAgICAgICAgY3AgJHtTfS9ldGMvKi4kaSAke0R9JHtzeXNjb25mZGlyfS9zbm9ydC8KLSAgICBkb25lCi0KLSAgICAjIGZpeCB0aGUgaGFyZGNvZGVkIHBhdGggYW5kIGxpYiBuYW1lCi0gICAgIyBjb21tZW50IG91dCB0aGUgcnVsZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkCi0gICAgc2VkIC1pIC1lICdzIy91c3IvbG9jYWwvbGliIyR7bGliZGlyfSMnIFwKLSAgICAgICAgICAgLWUgJ3MjXC5cLi9cKC4qcnVsZXNcKSMke3N5c2NvbmZkaXJ9L3Nub3J0L1wxIycgXAotICAgICAgICAgICAtZSAncyNcKGxpYnNmX2VuZ2luZS5zb1wpI1wxLjAjJyBcCi0gICAgICAgICAgIC1lICdzL15cKGluY2x1ZGUgJFJVTEVfUEFUSFwpLyNcMS8nIFwKLSAgICAgICAgICAgLWUgJ3MvXlwoZHluYW1pY2RldGVjdGlvblwpLyNcMS8nIFwKLSAgICAgICAgICAgLWUgJy9wcmVwcm9jZXNzb3IgcmVwdXRhdGlvbi8sL2JsYWNrbGlzdC8gcy9eLyMvJyBcCi0gICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3Nub3J0L3Nub3J0LmNvbmYKLQotICAgIGNwICR7U30vcHJlcHJvY19ydWxlcy8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3Nub3J0L3ByZXByb2NfcnVsZXMvCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9zbm9ydC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zbm9ydAotICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zbm9ydAotICAgIGluc3RhbGwgLWQgJHtEfS92YXIvbG9nL3Nub3J0Ci0KLSAgICBzZWQgLWkgJ3MvLWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSovL2c7IHMjJHtTVEFHSU5HX0RJUl9UQVJHRVR9IyNnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8qLnBjCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljZW5naW5lLyouc28uKiBcCi0gICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNwcmVwcm9jZXNzb3IvKi5zby4qIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3J1bGVzLyouc28uKiBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNlbmdpbmUvLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3ByZXByb2Nlc3Nvci8uZGVidWcgXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcnVsZXMvLmRlYnVnIFwKLSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY2VuZ2luZS8qLmEgXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcHJlcHJvY2Vzc29yLyouYSBcCi0gICAgJHtsaWJkaXJ9L3Nub3J0X2R5bmFtaWNydWxlcy8qLmEgXAotICAgICR7bGliZGlyfS9zbm9ydC9keW5hbWljX3ByZXByb2MvKi5hIFwKLSAgICAke2xpYmRpcn0vc25vcnQvZHluYW1pY19vdXRwdXQvKi5hIFwKLSIKLUZJTEVTXyR7UE59LWRldiArPSAiIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY2VuZ2luZS8qLmxhIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3ByZXByb2Nlc3Nvci8qLmxhIFwKLSAgICAke2xpYmRpcn0vc25vcnRfZHluYW1pY3J1bGVzLyoubGEgXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljZW5naW5lLyouc28gXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcHJlcHJvY2Vzc29yLyouc28gXAotICAgICR7bGliZGlyfS9zbm9ydF9keW5hbWljcnVsZXMvKi5zbyBcCi0gICAgJHtwcmVmaXh9L3NyYy9zbm9ydF9keW5hbWljc3JjIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC9maWxlcy8wMDAxLUFkZC1mb3JtYXQtc3RyaW5nLXRvLWZwcmludGYtY2FsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvMDAwMS1BZGQtZm9ybWF0LXN0cmluZy10by1mcHJpbnRmLWNhbGwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC9maWxlcy8wMDAxLUFkZC1mb3JtYXQtc3RyaW5nLXRvLWZwcmludGYtY2FsbC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcC8wMDAxLUFkZC1mb3JtYXQtc3RyaW5nLXRvLWZwcmludGYtY2FsbC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcC8wMDAxLXJlcGxhY2UtU0lHQ0xELXdpdGgtU0lHQ0hMRC1hbmQtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvMDAwMS1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQtYW5kLWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUzYmNlZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvMDAwMS1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQtYW5kLWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmNTY3NzQwY2Y2NDk3OGFjOWRiMDE0Yzc4NmI2ZDAyNjdiMjQ0ZjMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNCBNYXIgMjAxOCAyMjozMDozMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gcmVwbGFjZSBTSUdDTEQgd2l0aCBTSUdDSExEIGFuZCBpbmNsdWRlIHN5cy90eXBlcy5oCisKK0ZpeGVzCittYWluLmM6MTI5OjEwOiBlcnJvcjogJ1NJR0NMRCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1NJR0NITEQnPworICAgc2lnbmFsKFNJR0NMRCwgc2lnX2NoaWxkKTsKKyAgICAgICAgICBefn5+fn4KKyAgICAgICAgICBTSUdDSExECisKK21haW4uYzoxMjU6Mjogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ3VtYXNrJyBbLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KKyAgdW1hc2soMCk7CisgIF5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL21haW4uYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L3NyYy9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvbWFpbi5jCisrKysgZ2l0L3NyYy9tYWluLmMKK0BAIC0xMzMsOSArMTMzLDkgQEAgc3RhdGljIHZvaWQgZGFlbW9uX3N0YXJ0KGludCBpZ25zaWdjbGQpCisgCisgCWlmIChpZ25zaWdjbGQpIHsKKyAjaWZkZWYgU0lHVFNUUAorLQkJc2lnbmFsKFNJR0NMRCwgc2lnX2NoaWxkKTsKKysJCXNpZ25hbChTSUdDSExELCBzaWdfY2hpbGQpOworICNlbHNlCistCQlzaWduYWwoU0lHQ0xELCBTSUdfSUdOKTsKKysJCXNpZ25hbChTSUdDSExELCBTSUdfSUdOKTsKKyAjZW5kaWYKKyAJfQorIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvMDAwMS1zdXBwb3J0LW9wZW5zc2wtMS4xLngucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwLzAwMDEtc3VwcG9ydC1vcGVuc3NsLTEuMS54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzU1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwLzAwMDEtc3VwcG9ydC1vcGVuc3NsLTEuMS54LnBhdGNoCkBAIC0wLDAgKzEsODggQEAKK0Zyb20gNjI3ODRlOGI2ZGY4ZmYzYTkwN2MxZjgxNjE1NDgwOGJlYTlkNzA2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjUgU2VwIDIwMTggMTQ6Mzg6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydCBvcGVuc3NsIDEuMS54CisKK0xvbmcgdGltZSBubyBtYWludGFpbiBmcm9tIHVwc3RyZWFtIHNpbmNlIDIwMTMKKyhnaXQ6Ly9naXQudW1pcC5vcmcvdW1pcC91bWlwLmdpdCksIGJhY2twb3J0IGEKK2ZpeCBmcm9tIG9wZW5TVVNFCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW29wZW5TVVNFXQoraHR0cDovL2Z0cC5nd2RnLmRlL3B1Yi9vcGVuc3VzZS9zb3VyY2UvZGlzdHJpYnV0aW9uL2xlYXAvMTUuMC9yZXBvL29zcy9zcmMvbWlwdjZkLTIuMC4yLnVtaXAuMC40LWxwMTUwLjEuMi5zcmMucnBtCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9rZXlnZW4uYyB8IDEyICsrKysrKysrKysrKworIHNyYy9taC5jICAgICB8IDE3ICsrKysrKysrKysrKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMva2V5Z2VuLmMgYi9zcmMva2V5Z2VuLmMKK2luZGV4IGU0MzRhMzguLmI5MDI2NDQgMTAwNjQ0CistLS0gYS9zcmMva2V5Z2VuLmMKKysrKyBiL3NyYy9rZXlnZW4uYworQEAgLTE3Miw2ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9rZ2VuX3Rva2VuKHN0cnVjdCBpbjZfYWRkciAqYWRkciwgdWludDhfdCAqbm9uY2UsCisgCXVpbnQ4X3QgdG1wWzIwXTsKKyAjaWZkZWYgSEFWRV9MSUJDUllQVE8KKyAJdW5zaWduZWQgaW50IGxlbiA9IDIwOworKyNpZiBkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIpICYmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMTAwMDZmTAorIAlITUFDX0NUWCBjdHg7CisgCisgCUhNQUNfQ1RYX2luaXQoJmN0eCk7CitAQCAtMTgyLDYgKzE4MywxNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9rZ2VuX3Rva2VuKHN0cnVjdCBpbjZfYWRkciAqYWRkciwgdWludDhfdCAqbm9uY2UsCisgCUhNQUNfRmluYWwoJmN0eCwgdG1wLCAmbGVuKTsKKyAJSE1BQ19DVFhfY2xlYW51cCgmY3R4KTsKKyAjZWxzZQorKwlITUFDX0NUWCAqY3R4OworKwljdHggPSBITUFDX0NUWF9uZXcoKTsKKysJSE1BQ19Jbml0X2V4KGN0eCwga2V5X2NuLCBzaXplb2Yoa2V5X2NuKSwgRVZQX3NoYTEoKSwgTlVMTCk7CisrCUhNQUNfVXBkYXRlKGN0eCwgKHVuc2lnbmVkIGNoYXIgKilhZGRyLCBzaXplb2YoKmFkZHIpKTsKKysJSE1BQ19VcGRhdGUoY3R4LCBub25jZSwgTk9OQ0VfTEVOR1RIKTsKKysJSE1BQ19VcGRhdGUoY3R4LCAmaWQsIHNpemVvZihpZCkpOworKwlITUFDX0ZpbmFsKGN0eCwgdG1wLCAmbGVuKTsKKysJSE1BQ19DVFhfZnJlZShjdHgpOworKyNlbmRpZiAvLyBFbmQgb2YgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDA2ZkwKKysKKysjZWxzZQorIAlITUFDX1NIQTFfQ1RYIGN0eDsKKyAKKyAJSE1BQ19TSEExX2luaXQoJmN0eCwga2V5X2NuLCBzaXplb2Yoa2V5X2NuKSk7CitkaWZmIC0tZ2l0IGEvc3JjL21oLmMgYi9zcmMvbWguYworaW5kZXggY2JhOWEzMy4uMjEyZWI1YSAxMDA2NDQKKy0tLSBhL3NyYy9taC5jCisrKysgYi9zcmMvbWguYworQEAgLTUxOCw5ICs1MTgsMTAgQEAgc3RhdGljIGludCBjYWxjdWxhdGVfYXV0aF9kYXRhKGNvbnN0IHN0cnVjdCBpb3ZlYyAqaW92LCBpbnQgaW92bGVuLAorIAorICNpZmRlZiBIQVZFX0xJQkNSWVBUTworIAl1bnNpZ25lZCBpbnQgbGVuID0gSE1BQ19TSEExX0hBU0hfTEVOOworLQlITUFDX0NUWCBjdHg7CisgCWNvbnN0IEVWUF9NRCAqZXZwX21kID0gRVZQX3NoYTEoKTsKKyAKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDA2ZkwKKysJSE1BQ19DVFggY3R4OworIAlITUFDX0NUWF9pbml0KCZjdHgpOworIAlITUFDX0luaXRfZXgoJmN0eCwga2V5LCBITUFDX1NIQTFfS0VZX1NJWkUsIGV2cF9tZCwgTlVMTCk7CisgCitAQCAtNTMyLDYgKzUzMywyMCBAQCBzdGF0aWMgaW50IGNhbGN1bGF0ZV9hdXRoX2RhdGEoY29uc3Qgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZsZW4sCisgCUhNQUNfRmluYWwoJmN0eCwgYnVmLCAmbGVuKTsKKyAJSE1BQ19DVFhfY2xlYW51cCgmY3R4KTsKKyAjZWxzZQorKwlITUFDX0NUWCAqY3R4OworKwljdHggPSBITUFDX0NUWF9uZXcoKTsKKysJSE1BQ19Jbml0X2V4KGN0eCwga2V5LCBITUFDX1NIQTFfS0VZX1NJWkUsIGV2cF9tZCwgTlVMTCk7CisrCisrCUhNQUNfVXBkYXRlKGN0eCwgKHVpbnQ4X3QgKiljb2EsIHNpemVvZigqY29hKSk7CisrCUhNQUNfVXBkYXRlKGN0eCwgKHVpbnQ4X3QgKiljbiwgc2l6ZW9mKCpjb2EpKTsKKysJZm9yIChpID0gMDsgaSA8IGlvdmxlbjsgaSsrKSB7CisrCQlITUFDX1VwZGF0ZShjdHgsICh1aW50OF90ICopaW92W2ldLmlvdl9iYXNlLCBpb3ZbaV0uaW92X2xlbik7CisrCX0KKysJSE1BQ19GaW5hbChjdHgsIGJ1ZiwgJmxlbik7CisrCUhNQUNfQ1RYX2ZyZWUoY3R4KTsKKysjZW5kaWYKKysKKysjZWxzZQorIAlITUFDX1NIQTFfQ1RYIGN0eDsKKyAKKyAJSE1BQ19TSEExX2luaXQoJmN0eCwga2V5LCBITUFDX1NIQTFfS0VZX1NJWkUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvMDAwMi1yZXBsYWNlLVBUSFJFQURfTVVURVhfRkFTVF9OUC13aXRoLVBUSFJFQURfTVVURVhfTk9SLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcC8wMDAyLXJlcGxhY2UtUFRIUkVBRF9NVVRFWF9GQVNUX05QLXdpdGgtUFRIUkVBRF9NVVRFWF9OT1IucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC9maWxlcy8wMDAyLXJlcGxhY2UtUFRIUkVBRF9NVVRFWF9GQVNUX05QLXdpdGgtUFRIUkVBRF9NVVRFWF9OT1IucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvMDAwMi1yZXBsYWNlLVBUSFJFQURfTVVURVhfRkFTVF9OUC13aXRoLVBUSFJFQURfTVVURVhfTk9SLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvYWRkLWRlcGVuZGVuY3ktdG8tc3VwcG9ydC1wYXJhbGxlbC1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvYWRkLWRlcGVuZGVuY3ktdG8tc3VwcG9ydC1wYXJhbGxlbC1jb21waWxhdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzL2FkZC1kZXBlbmRlbmN5LXRvLXN1cHBvcnQtcGFyYWxsZWwtY29tcGlsYXRpb24ucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvYWRkLWRlcGVuZGVuY3ktdG8tc3VwcG9ydC1wYXJhbGxlbC1jb21waWxhdGlvbi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzL21pcDZkIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcC9taXA2ZApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzL21pcDZkCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwL21pcDZkCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvZmlsZXMvbWlwNmQuc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvbWlwNmQuc2VydmljZQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzL21pcDZkLnNlcnZpY2UKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL3VtaXAvbWlwNmQuc2VydmljZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmFiYzAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJNb2JpbGUgSVB2NiBhbmQgTkVNTyBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJVTUlQIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIE1vYmlsZSBJUHY2IGFuZCBORU1PIFwKK0Jhc2ljIFN1cHBvcnQgZm9yIExpbnV4LiBJdCBpcyByZWxlYXNlZCB1bmRlciB0aGUgR1BMdjIgbGljZW5zZS4gSXQgc3VwcG9ydHMgXAordGhlIGZvbGxvd2luZyBJRVRGIFJGQzogUkZDNjI3NSAoTW9iaWxlIElQdjYpLCBSRkMzOTYzIChORU1PKSwgUkZDMzc3NiBhbmQgXAorUkZDNDg3NyAoSVBzZWMgYW5kIElLRXYyKS4iCitIT01FUEFHRSA9ICJodHRwOi8vdW1pcC5vcmcvIgorU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNzNkYzMxY2NiMmViZWQ3MGRiNTRmMWU4YWViNGMzMyIKK0RFUEVORFMgPSAib3BlbnNzbCBpcHNlYy10b29scyByYWR2ZCBpbmRlbnQtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQudW1pcC5vcmcvdW1pcC91bWlwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtZGVwZW5kZW5jeS10by1zdXBwb3J0LXBhcmFsbGVsLWNvbXBpbGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcDZkIFwKKyAgICAgICAgICAgZmlsZTovL21pcDZkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtZm9ybWF0LXN0cmluZy10by1mcHJpbnRmLWNhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLVNJR0NMRC13aXRoLVNJR0NITEQtYW5kLWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1yZXBsYWNlLVBUSFJFQURfTVVURVhfRkFTVF9OUC13aXRoLVBUSFJFQURfTVVURVhfTk9SLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1vcGVuc3NsLTEuMS54LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImNiZDQ0MWM1ZGI3MTlkYjU1NGZmMmI0ZmNiMDJmZWY4OGFlMmY3OTEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS12dCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQgdXBkYXRlLXJjLmQKKworSU5JVFNDUklQVF9OQU1FID0gIm1pcDZkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgNjQgLiBzdG9wIDM2IDAgMSAyIDMgNCA1IDYgLiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1pcDZkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L21pcDZkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9taXA2ZAorCWluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L21pcDZkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWlwNmQuc2VydmljZQorCXNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWlwNmQuc2VydmljZQorfQorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW1pcDYga2VybmVsLW1vZHVsZS1pcHY2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZsYW4vdmxhbl8xLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgppbmRleCA3ZWVhNWQxLi40YzNkOTViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdmxhbi92bGFuXzEuOS5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly92Y29uZmlnLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9MDk0Y2E0N2RlMzZjMjBjNTk4YjE1YjMyYzI3MGNlMGEiCiAKLVNSQ19VUkkgPSAiaHR0cDovLyR7QlBOfS5zb3VyY2VhcmNoaXZlLmNvbS9kb3dubG9hZHMvJHtQVn0tM3VidW50dTkvJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3VidW50dS8rYXJjaGl2ZS9wcmltYXJ5Lytzb3VyY2VmaWxlcy92bGFuLzEuOS0zdWJ1bnR1MTAuNi8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tSE9NRS1pbmNsdWRlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1wcmludGYtZm9ybWF0LWFuZC1zaWxlbmNlLWZvcm1hdC1zZWN1cml0eS13YXJuaW4ucGF0Y2ggXAogIgpAQCAtMTIsNiArMTIsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gIjVmMGM2MDYwYjMzOTU2ZmIxNmUxMWExNTQ2N2RkMzk0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiOGYwYTFiZjBkMzY0Mjc2NGU1ZjY0NmUxZjNiYmM4YjFlZWVjNDc0YTc3MzkyZDlhZWI0ODY4ODQyYjRjY2EiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vdmxhbi5zb3VyY2VhcmNoaXZlLmNvbS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKwogUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKIAogaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtcmVnZGIvd2lyZWxlc3MtcmVnZGJfMjAxNi4wNi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy1yZWdkYi93aXJlbGVzcy1yZWdkYl8yMDE2LjA2LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGU5NDAxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy1yZWdkYi93aXJlbGVzcy1yZWdkYl8yMDE2LjA2LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJXaXJlbGVzcyBDZW50cmFsIFJlZ3VsYXRvcnkgRG9tYWluIERhdGFiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9SZWd1bGF0b3J5L0NSREEiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDdjNGY2ZGVhMzg0NWIwMmExOGRjMDBjOGM4NzY5OWMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImQyODJjY2U5MmI2ZTY5MmU4NjczZTJiZDk3YWRmMzNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmZWRmMWMzNTIxYjNjOGYzMjYwMmYyNWVkNzk2ZTk2ZTY4N2MzNDQxYTAwZTdjMDUwZmVkZjdmZDRmMWI4YjciCi0KLWluaGVyaXQgYmluX3BhY2thZ2UKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kIC1tMDc1NSAke0R9JHtsaWJkaXJ9L2NyZGEKLSAgICBpbnN0YWxsIC1kIC1tMDc1NSAke0R9JHtzeXNjb25mZGlyfS93aXJlbGVzcy1yZWdkYi9wdWJrZXlzCi0gICAgaW5zdGFsbCAtbSAwNjQ0IHJlZ3VsYXRvcnkuYmluICR7RH0ke2xpYmRpcn0vY3JkYS9yZWd1bGF0b3J5LmJpbgotICAgIGluc3RhbGwgLW0gMDY0NCBzZm9yc2hlZS5rZXkucHViLnBlbSAke0R9JHtzeXNjb25mZGlyfS93aXJlbGVzcy1yZWdkYi9wdWJrZXlzL3Nmb3JzaGVlLmtleS5wdWIucGVtCi19Ci0KLVJTVUdHRVNUU18ke1BOfSA9ICJjcmRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXJlZ2RiL3dpcmVsZXNzLXJlZ2RiXzIwMTguMDUuMzEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtcmVnZGIvd2lyZWxlc3MtcmVnZGJfMjAxOC4wNS4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjk5MGRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXJlZ2RiL3dpcmVsZXNzLXJlZ2RiXzIwMTguMDUuMzEuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJXaXJlbGVzcyBDZW50cmFsIFJlZ3VsYXRvcnkgRG9tYWluIERhdGFiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vZGV2ZWxvcGVycy9SZWd1bGF0b3J5L0NSREEiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDdjNGY2ZGVhMzg0NWIwMmExOGRjMDBjOGM4NzY5OWMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjBjYmJkYzIxMTg2Yzc2Y2Y1OGFiYTAxYjAzZjNkYzViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxZGZiYzNiOTc3NzEzNzMwNzdmNDMwYzNjMDUwODJmYWU4ODMxNDViMzdkYjViMmNmZDEyYzU2Njc2ZmJlN2IiCisKK2luaGVyaXQgYmluX3BhY2thZ2UgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgLW0wNzU1ICR7RH0ke25vbmFyY2hfbGliZGlyfS9jcmRhCisgICAgaW5zdGFsbCAtZCAtbTA3NTUgJHtEfSR7c3lzY29uZmRpcn0vd2lyZWxlc3MtcmVnZGIvcHVia2V5cworICAgIGluc3RhbGwgLW0gMDY0NCByZWd1bGF0b3J5LmJpbiAke0R9JHtub25hcmNoX2xpYmRpcn0vY3JkYS9yZWd1bGF0b3J5LmJpbgorICAgIGluc3RhbGwgLW0gMDY0NCBzZm9yc2hlZS5rZXkucHViLnBlbSAke0R9JHtzeXNjb25mZGlyfS93aXJlbGVzcy1yZWdkYi9wdWJrZXlzL3Nmb3JzaGVlLmtleS5wdWIucGVtCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgLUQgcmVndWxhdG9yeS5kYiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yZWd1bGF0b3J5LmRiCisgICAgaW5zdGFsbCAtbSAwNjQ0IHJlZ3VsYXRvcnkuZGIucDdzICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3JlZ3VsYXRvcnkuZGIucDdzCit9CisKKyMgSW5zdGFsbCBzdGF0aWMgcmVndWxhdG9yeSBEQiBpbiAvbGliL2Zpcm13YXJlIGZvciBrZXJuZWwgdG8gbG9hZC4KKyMgVGhpcyByZXF1aXJlcyBMaW51eCBrZXJuZWwgPj0gdjQuMTUuCisjIEZvciBrZXJuZWwgPD0gdjQuMTQsIGluaGVyaXQgdGhlIGtlcm5lbF93aXJlbGVzc19yZWdkYi5iYmNsYXNzIGluIGtlcm5lbCdzIHJlY2lwZS4KK1BBQ0tBR0VTID0rICIke1BOfS1zdGF0aWMiCitSQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LXN0YXRpYyIKKworRklMRVNfJHtQTn0tc3RhdGljID0gIiBcCisgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yZWd1bGF0b3J5LmRiIFwKKyAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3JlZ3VsYXRvcnkuZGIucDdzIFwKKyIKKworIyBOYXRpdmUgdXNlcnMgbWlnaHQgd2FudCB0byB1c2UgdGhlIHNvdXJjZSBvZiByZWd1bGF0b3J5IERCLgorIyBUaGlzIGlzIGZvciBleGFtcGxlIHVzZWQgYnkgTGludXgga2VybmVsIDw9IHY0LjE0IGFuZCBrZXJuZWxfd2lyZWxlc3NfcmVnZGIuYmJjbGFzcy4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBpbnN0YWxsIC1tIDA2NDQgLUQgZGIudHh0ICR7RH0ke2xpYmRpcn0vY3JkYS9kYi50eHQKK30KKworUlNVR0dFU1RTXyR7UE59ID0gImNyZGEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI5MDY1MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAid29sZlNTTCBMaWdodHdlaWdodCwgRW1iZWRkZWQgU1NMIExpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJ3b2xmU1NMLCBmb3JtZXJseSBDeWFTU0wsIGlzIGEgbGlnaHR3ZWlnaHQgU1NMIGxpYnJhcnkgd3JpdHRlbiBpbiBDIGFuZCBcCi0gICAgICAgICAgICAgICBvcHRpbWl6ZWQgZm9yIGVtYmVkZGVkIGFuZCBSVE9TIGVudmlyb25tZW50cy4gSXQgY2FuIGJlIFwKLSAgICAgICAgICAgICAgIFVwIHRvIDIwIHRpbWVzIHNtYWxsZXIgdGhhbiBPcGVuU1NMIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgXAotICAgICAgICAgICAgICAgYSBmdWxsIFRMUyAxLjIgY2xpZW50IGFuZCBzZXJ2ZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53b2xmc3NsLmNvbS95YVNTTC9Qcm9kdWN0cy13b2xmc3NsLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9naXRodWIuY29tL3dvbGZzc2wvd29sZnNzbC9pc3N1ZXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVBST1ZJREVTICs9ICJjeWFzc2wiCi1SUFJPVklERVNfJHtQTn0gPSAiY3lhc3NsIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gImQxOTUwMDlkY2I2MmQ4NzEyMTk1NjYxYmQxZDUwZjhkZDY4MzEwNDQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vd29sZlNTTC93b2xmc3NsLmdpdDtwcm90b2NvbD1odHRwczsgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbm8tcnVsZS10by1tYWtlLWN5YXNzbC1vcHRpb25zLmgucGF0Y2ggXAotICAgICAgICAgICIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjE0LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzMuMTQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzkwOTRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF8zLjE0LjQuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJ3b2xmU1NMIExpZ2h0d2VpZ2h0LCBFbWJlZGRlZCBTU0wgTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIndvbGZTU0wsIGZvcm1lcmx5IEN5YVNTTCwgaXMgYSBsaWdodHdlaWdodCBTU0wgbGlicmFyeSB3cml0dGVuIGluIEMgYW5kIFwKKyAgICAgICAgICAgICAgIG9wdGltaXplZCBmb3IgZW1iZWRkZWQgYW5kIFJUT1MgZW52aXJvbm1lbnRzLiBJdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgVXAgdG8gMjAgdGltZXMgc21hbGxlciB0aGFuIE9wZW5TU0wgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBcCisgICAgICAgICAgICAgICBhIGZ1bGwgVExTIDEuMiBjbGllbnQgYW5kIHNlcnZlci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndvbGZzc2wuY29tL3lhU1NML1Byb2R1Y3RzLXdvbGZzc2wuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2dpdGh1Yi5jb20vd29sZnNzbC93b2xmc3NsL2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworUFJPVklERVMgKz0gImN5YXNzbCIKK1JQUk9WSURFU18ke1BOfSA9ICJjeWFzc2wiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNSRVYgPSAiMTE5NmEzYjY0ZDlmYWJmZmM4MjczYjg3ZjZmNjlhYzBlNzVkMmViNyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93b2xmU1NML3dvbGZzc2wuZ2l0O3Byb3RvY29sPWh0dHBzOyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1uby1ydWxlLXRvLW1ha2UtY3lhc3NsLW9wdGlvbnMuaC5wYXRjaCBcCisgICAgICAgICAgIgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtcGF0aC1mb3ItcGtnLm00LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtRG8tbm90LWhhcmRjb2RlLXBhdGgtZm9yLXBrZy5tNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2YyNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzLzAwMDEtRG8tbm90LWhhcmRjb2RlLXBhdGgtZm9yLXBrZy5tNC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDZkMjQzNjVmMDgyODE4NWZkMWJiNGQxOTkyMDljYTA3ZWI5NWM0MWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNCBBdWcgMjAxOCAwNjoyNDozNiArMDAwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgcGF0aCBmb3IgcGtnLm00CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA1MGFlZDE1Li5mODE3NjdjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xMiw3ICsxMiw3IEBAIGRlZmluZShbQUNfQ0FDSEVfU0FWRV0sIClkbmwKKyBBQ19JTklUKC5hdXRvZnMtNS4xLjQpCisgCisgIyBmb3IgcGtnLWNvbmZpZyBtYWNyb3MKKy1tNF9pbmNsdWRlKFsvdXNyL3NoYXJlL2FjbG9jYWwvcGtnLm00XSkKKyttNF9pbmNsdWRlKFtwa2cubTRdKQorIAorICMKKyAjIGF1dG9mcyBpbnN0YWxscyBieSBkZWZhdWx0IGluIC91c3IKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGNlMTkzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mcy9hdXRvZnMtNS4xLjItbGlidGlycGMtYXMtbmVlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYjMxZGVjYWM0YWNiMTk0YjAyMGM2MjFkMmQxMTAxOWY2MzZhNDVlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI0IEFwciAyMDE3IDIwOjQxOjI1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9mczogVXBncmFkZSB0byA1LjEuMiByZWxlYXNlCi0KLU1ha2UgY29uZmlndXJlIGNvbXBhdGlibGUgd2l0aCAtV2wsLS1hcy1uZWVkZWQgZm9sbG93aW5nCi1odHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL1Byb2plY3Q6UXVhbGl0eV9Bc3N1cmFuY2UvQXMtbmVlZGVkI0ZhaWx1cmVfaW5fLi4yRmNvbmZpZ3VyZQotCi0yMDE2LTA3LTA1IE1hcnRpbiB2b24gR2FnZXJuCi0KLS0tLQotIGFjbG9jYWwubTQgfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAotaW5kZXggMGU0YTYyNC4uMmU2MjBjZCAxMDA2NDQKLS0tLSBhL2FjbG9jYWwubTQKLSsrKyBiL2FjbG9jYWwubTQKLUBAIC00MTUsOSArNDE1LDkgQEAgQUNfREVGVU4oW0FGX0NIRUNLX0xJQlRJUlBDXSwKLSBbCi0gIyBzYXZlIGN1cnJlbnQgZmxhZ3MKLSBhZl9jaGVja19saWJ0aXJwY19zYXZlX2NmbGFncz0iJENGTEFHUyIKLS1hZl9jaGVja19saWJ0aXJwY19zYXZlX2xkZmxhZ3M9IiRMREZMQUdTIgotK2FmX2NoZWNrX2xpYnRpcnBjX3NhdmVfbGlicz0iJExJQlMiCi0gQ0ZMQUdTPSIkQ0ZMQUdTIC1JPS91c3IvaW5jbHVkZS90aXJwYyIKLS1MREZMQUdTPSIkTERGTEFHUyAtbHRpcnBjIgotK0xJQlM9IiRMSUJTIC1sdGlycGMiCi0gCi0gQUNfVFJZX0xJTksoCi0gICAgIFsgI2luY2x1ZGUgPHJwYy9ycGMuaD4gXSwKLUBAIC00NDAsNyArNDQwLDcgQEAgQUNfQ0hFQ0tfRlVOQ1MoW2dldHJwY2J5bmFtZSBnZXRzZXJ2YnluYW1lXSkKLSAKLSAjIHJlc3RvcmUgZmxhZ3MKLSBDRkxBR1M9IiRhZl9jaGVja19saWJ0aXJwY19zYXZlX2NmbGFncyIKLS1MREZMQUdTPSIkYWZfY2hlY2tfbGlidGlycGNfc2F2ZV9sZGZsYWdzIgotK0xJQlM9IiRhZl9jaGVja19saWJ0aXJwY19zYXZlX2xpYnMiCi0gXSkKLSAKLSBBQ19ERUZVTihbQUZfV0lUSF9MSUJUSVJQQ10sCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvbGlidGlycGMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnMvbGlidGlycGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhMmQ1MDIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzL2xpYnRpcnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBjYjZhNGY2MWFkYjAyN2YyMzY2MzE4ZjJjMDhjODI2NGViZjM5MjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNSBKYW4gMjAxMyAxOTo1MzoxMCAtMDgwMAotCi0tLS0KLSBNYWtlZmlsZS5ydWxlcyB8IDIgKy0KLSBhY2xvY2FsLm00ICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKLWluZGV4IDZmYTNlMDIuLjcwOWRkMDQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5ydWxlcwotKysrIGIvTWFrZWZpbGUucnVsZXMKLUBAIC00Niw3ICs0Niw3IEBAIENGTEFHUyArPSAtRF9SRUVOVFJBTlQgLURfRklMRV9PRkZTRVRfQklUUz02NAotIExJQlMgKz0gLWxwdGhyZWFkCi0gCi0gaWZkZWYgVElSUENMSUIKLS1DRkxBR1MgKz0gLUkvdXNyL2luY2x1ZGUvdGlycGMKLStDRkxBR1MgKz0gLUk9L3Vzci9pbmNsdWRlL3RpcnBjCi0gTElCUyArPSAkKFRJUlBDTElCKQotIGVuZGlmCi0gCi1kaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKLWluZGV4IDJhOWE4MDIuLjBlNGE2MjQgMTAwNjQ0Ci0tLS0gYS9hY2xvY2FsLm00Ci0rKysgYi9hY2xvY2FsLm00Ci1AQCAtNDE2LDcgKzQxNiw3IEBAIEFDX0RFRlVOKFtBRl9DSEVDS19MSUJUSVJQQ10sCi0gIyBzYXZlIGN1cnJlbnQgZmxhZ3MKLSBhZl9jaGVja19saWJ0aXJwY19zYXZlX2NmbGFncz0iJENGTEFHUyIKLSBhZl9jaGVja19saWJ0aXJwY19zYXZlX2xkZmxhZ3M9IiRMREZMQUdTIgotLUNGTEFHUz0iJENGTEFHUyAtSS91c3IvaW5jbHVkZS90aXJwYyIKLStDRkxBR1M9IiRDRkxBR1MgLUk9L3Vzci9pbmNsdWRlL3RpcnBjIgotIExERkxBR1M9IiRMREZMQUdTIC1sdGlycGMiCi0gCi0gQUNfVFJZX0xJTksoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YzY0ZmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9hdXRvZnMvYXV0b2ZzXzUuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotU1VNTUFSWSA9ICJLZXJuZWwgYmFzZWQgYXV0b21vdW50ZXIgZm9yIGxpbnV4IgotU0VDVElPTiA9ICJ1dGlscyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1ERVBFTkRTICs9ICJsaWJ0aXJwYyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgZTJmc3Byb2dzIG9wZW5zc2wgbGlieG1sMiB1dGlsLWxpbnV4IGN5cnVzLXNhc2wgbGlibnNsMiIKLQotQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCB1cGRhdGUtcmMuZCBwa2djb25maWcKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RhZW1vbnMvYXV0b2ZzL3Y1L2F1dG9mcy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYXV0b2ZzLTUuMC43LWluY2x1ZGUtbGludXgtbmZzLmgtZGlyZWN0bHktaW4tcnBjX3N1Yi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1iYXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnRpcnBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9mcy01LjAuNy1kby1ub3QtY2hlY2stZm9yLW1vZHByb2JlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9kaXNhYmxlX2xkYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXV0b2ZzLTUuMC43LWZpeC1saWItZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtdGhlLW5lZWRlZC1zdGRhcmcuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2luZy1wa2ctY29uZmlnLXRvLWRldGVjdC1saWJ4bWwtMi4wLWFuZC1rcmI1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZvcmNlLVNUUklQLXRvLWVtdHB5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1iYXNoaXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC10aGUtWUFDQy1ydWxlLXRvLWZpeC1hLWJ1aWxkaW5nLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX19TV09SRF9UWVBFLWFuZC1fUEFUSF9OU1NXSVRDSF9DT05GLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEVDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9mcy01LjEuMi1saWJ0aXJwYy1hcy1uZWVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy1saWJuc2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tb2R1bGVzLWxvb2t1cF9tdWx0aS5jLVJlcGxhY2UtX19TX0lFWEVDLXdpdGgtU19JRVhFLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjI4Y2Y4OGY5OWVmZjU1M2E4NTAwNjU5YmE1ZDQ1YTc2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNTdlNDEzOGMyZWM4MDU4Y2E5MjE2NGQwMzU1NDZmNjhjZTRhZjkzYWNiODkzMzY5OTkzZDY3YzcwNTZhMTAiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJhdXRvZnMiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotIyBGSVhNRTogbW9kdWxlcy9NYWtlZmlsZSBoYXMgY3JhcHB5IHJ1bGVzIHRoYXQgZG9uJ3Qgb2JleSBMREZMQUdTCi0jQ0ZMQUdTICs9ICIke0xERkxBR1N9IgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLQotRVhUUkFfT0VNQUtFID0gIkRPTlRTVFJJUD0xIgotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbW91bnQtbG9ja2luZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaWdub3JlLWJ1c3kgLS13aXRoLW9wZW5sZGFwPW5vIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc2FzbD1ubyAtLXdpdGgtbGlidGlycGMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wYXRoPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSBcCi0iCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wYXRoX1JBTkxJQj0ke1JBTkxJQn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SUENHRU49cnBjZ2VuIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIHNlZCAtZSAiczpmaWxhZ2RpcjpmbGFnZGlyOiIgLWkgJHtTfS9jb25maWd1cmUuaW4KLSAgICBpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotICAgICAgICBjcCAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaWYgWyAtZCAke0R9L3J1biBdOyB0aGVuCi0gICAgICAgIHJtZGlyICR7RH0vcnVuCi0gICAgZmkKLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuCi0gICAgICAgIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotICAgIGZpCi19Ci1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImF1dG9mcy5zZXJ2aWNlIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2F1dG9mcy9hdXRvZnNfNS4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGExYmNhZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvYXV0b2ZzL2F1dG9mc181LjEuNC5iYgpAQCAtMCwwICsxLDgwIEBACitTVU1NQVJZID0gIktlcm5lbCBiYXNlZCBhdXRvbW91bnRlciBmb3IgbGludXgiCitTRUNUSU9OID0gInV0aWxzIgorTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK0RFUEVORFMgKz0gImxpYnRpcnBjIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBlMmZzcHJvZ3Mgb3BlbnNzbCBsaWJ4bWwyIHV0aWwtbGludXggY3lydXMtc2FzbCBsaWJuc2wyIgorCitDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZGFlbW9ucy9hdXRvZnMvdjUvYXV0b2ZzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvZnMtNS4wLjctaW5jbHVkZS1saW51eC1uZnMuaC1kaXJlY3RseS1pbi1ycGNfc3ViLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLWJhc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXV0b2ZzLTUuMC43LWRvLW5vdC1jaGVjay1mb3ItbW9kcHJvYmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4X2Rpc2FibGVfbGRhcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvZnMtNS4wLjctZml4LWxpYi1kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC10aGUtbmVlZGVkLXN0ZGFyZy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzaW5nLXBrZy1jb25maWctdG8tZGV0ZWN0LWxpYnhtbC0yLjAtYW5kLWtyYjUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZm9yY2UtU1RSSVAtdG8tZW10cHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJhc2hpc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXRoZS1ZQUNDLXJ1bGUtdG8tZml4LWEtYnVpbGRpbmctZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1fX1NXT1JEX1RZUEUtYW5kLV9QQVRIX05TU1dJVENIX0NPTkYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SZXBsYWNlLV9fU19JRVhFQy13aXRoLVNfSUVYRUMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLWxpYm5zbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vZHVsZXMtbG9va3VwX211bHRpLmMtUmVwbGFjZS1fX1NfSUVYRUMtd2l0aC1TX0lFWEUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtcGF0aC1mb3ItcGtnLm00LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjE3YmM5ZDM3MWNmMzlkOTlmNDAwZWJhZGZjMjI4OWJiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkMWM5OTY0YzgyODZjY2IwODI2MmFkNDdjNjBiYjYzNDM0OTI5MDJkZWY1Mzk5ZmQzNmQ3OWEwY2NiMGU3MTgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RhZW1vbnMvYXV0b2ZzL3Y1LyIKKworSU5JVFNDUklQVF9OQU1FID0gImF1dG9mcyIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCisjIEZJWE1FOiBtb2R1bGVzL01ha2VmaWxlIGhhcyBjcmFwcHkgcnVsZXMgdGhhdCBkb24ndCBvYmV5IExERkxBR1MKKyNDRkxBR1MgKz0gIiR7TERGTEFHU30iCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQ9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSwtLXdpdGhvdXQtc3lzdGVtZCxzeXN0ZW1kIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorCitFWFRSQV9PRU1BS0UgPSAiRE9OVFNUUklQPTEiCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tb3VudC1sb2NraW5nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pZ25vcmUtYnVzeSAtLXdpdGgtb3BlbmxkYXA9bm8gXAorICAgICAgICAgICAgICAgIC0td2l0aC1zYXNsPW5vIC0td2l0aC1saWJ0aXJwYyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXBhdGg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZmlmb2Rpcj0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBcCisgICAgICAgICAgICAgICAgLS13aXRoLWZsYWdkaXI9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXAorIgorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9SQU5MSUI9JHtSQU5MSUJ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfUlBDR0VOPXJwY2dlbiBcCisiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICBpZiBbICEgLWUgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgorICAgICAgICBjcCAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKKyAgICBmaQorICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC9wa2cubTQgLgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaWYgWyAtZCAke0R9L3J1biBdOyB0aGVuCisgICAgICAgIHJtZGlyICR7RH0vcnVuCisgICAgZmkKKyAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuCisgICAgICAgIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorICAgIGZpCit9CitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImF1dG9mcy5zZXJ2aWNlIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC8wMDAxLUFsbG93LXNhc2xhdXRoZC10by1iZS1idWlsdC1vdXRzaWRlLW9mLXNvdXJjZS10cmVlLXcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC8wMDAxLUFsbG93LXNhc2xhdXRoZC10by1iZS1idWlsdC1vdXRzaWRlLW9mLXNvdXJjZS10cmVlLXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5ODIyYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsLzAwMDEtQWxsb3ctc2FzbGF1dGhkLXRvLWJlLWJ1aWx0LW91dHNpZGUtb2Ytc291cmNlLXRyZWUtdy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDY1MTVmM2U3NjU2ZDk3ZDQwYTZhMWNmNGViM2FkYTE5M2E2OTgzMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEyIFNlcCAyMDE4IDIzOjE4OjEyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IHNhc2xhdXRoZCB0byBiZSBidWlsdCBvdXRzaWRlIG9mIHNvdXJjZSB0cmVlIHdoaWxlCisgY29uZmlndXJpbmcgd2l0aCBgLS1lbmFibGUtbGRhcGRiJworCitbc25pcF0KK3wgcG93ZXJwYy13cnMtbGludXgtZ2NjIFtzbmlwXSAtSS4uL2NvbW1vbgorfC4uLy4uL2dpdC9zYXNsYXV0aGQvbGFrLmM6NTg6MTA6IGZhdGFsIGVycm9yOiBjcnlwdG8tY29tcGF0Lmg6CitObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Citbc25pcF0KKworVGhlIGNyeXB0by1jb21wYXQuaCBsb2NhdGVzIGluIGdpdC9jb21tb24vLCBpdCBzaG91bGQgYmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CitgLUkuLi8uLi9naXQvY29tbW9uJworCitSZW1vdmUgdXNlbGVzcyBgLUkkKHRvcF9zcmNkaXIpLy4uL2luY2x1ZGUnIHdoaWNoIHdhcyBpbmNvcnJlY3RseQorYWRkZWQgYnkgY29tbWl0IGBmYWFlNTkwIGNsZWFudXAgbWlzYyBJTkNMVURFUyBmb3IgZGlmZmVyZW50IGJ1aWxkIHBhdGhzJworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2N5cnVzaW1hcC9jeXJ1cy1zYXNsXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzYXNsYXV0aGQvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zYXNsYXV0aGQvTWFrZWZpbGUuYW0gYi9zYXNsYXV0aGQvTWFrZWZpbGUuYW0KK2luZGV4IGQ3MjQ0YmUuLjg2NGIyOWIgMTAwNjQ0CistLS0gYS9zYXNsYXV0aGQvTWFrZWZpbGUuYW0KKysrKyBiL3Nhc2xhdXRoZC9NYWtlZmlsZS5hbQorQEAgLTM0LDcgKzM0LDcgQEAgc2FzbGNhY2hlX1NPVVJDRVMgPSBzYXNsY2FjaGUuYworIAorIEVYVFJBX0RJU1QJPSBzYXNsYXV0aGQuOCBzYXNsYXV0aGQubWRvYyBpbmNsdWRlIFwKKyAJCSAgZ2V0bmFtZWluZm8uYyBnZXRhZGRyaW5mby5jIExEQVBfU0FTTEFVVEhECistQU1fQ1BQRkxBR1MJPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS8uLi9pbmNsdWRlIC1JJCh0b3BfYnVpbGRkaXIpL2NvbW1vbgorK0FNX0NQUEZMQUdTCT0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9idWlsZGRpcikvaW5jbHVkZSAtSSQodG9wX2J1aWxkZGlyKS9jb21tb24gLUkkKHRvcF9zcmNkaXIpL2NvbW1vbgorIERFRlMgICAgICAgICAgICA9IEBERUZTQCAtRFNBU0xBVVRIRF9DT05GX0ZJTEVfREVGQVVMVD1cIkBzeXNjb25mZGlyQC9zYXNsYXV0aGQuY29uZlwiIC1JLiAtSSQoc3JjZGlyKSAtSS4uCisgCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsLzAwMDEtbWFrZWluaXQuc2gtZml4LXBhcmFsbGVsLWJ1aWxkLWlzc3VlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvMDAwMS1tYWtlaW5pdC5zaC1maXgtcGFyYWxsZWwtYnVpbGQtaXNzdWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyMzJhYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsLzAwMDEtbWFrZWluaXQuc2gtZml4LXBhcmFsbGVsLWJ1aWxkLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsOTUgQEAKK0Zyb20gYmI2OTNkYjBlMWQxZDY5M2U4Y2EzMWZjYmM0ZjQ2ZDE2NzRlZWNhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTMgU2VwIDIwMTggMTQ6MjA6NTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZWluaXQuc2g6IGZpeCBwYXJhbGxlbCBidWlsZCBpc3N1ZQorCitXaGlsZSBidWlsZGluZyBwbHVnaW5zLCBlYWNoIDxwbHVnaW4+LmMgcmVxdWlyZXMgYSA8cGx1Z2luPl9pbml0LmMsCithbmQgdGhlIDxwbHVnaW4+X2luaXQuYyBpcyBkeW5hbWljYWxseSBnZW5lcmF0ZWQgYnkgbWFrZWluaXQuc2guCisKK0J1dCB0aGUgbWFrZWluaXQuc2ggZ2VuZXJhdGVzIGFsbCAqX2luaXQuYyAoMTMgbWVjaGFuaXNtIHBsdWdpbnMsCiszIGF1eHByb3AgcGx1Z2lucykgYXQgb25lIHRpbWUsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBwbHVnaW5zLAordGhlcmUgd2lsbCBiZSBtdWx0aXBsZSBtYWtlaW5pdC5zaCBpbnZva2luZy4KKworSXQgY2F1c2VkIGEgcGFyYWxsZWwgaXNzdWUsIHRoZSAqX2luaXQuYyBmaWxlcyB3aWxsIGJlIGdlbmVyYXRlZAorcmVwZWF0ZWRseS4KKworSXQgb2NjYXNpb25hbGx5IGdlbmVyYXRlIGRhcGRiX2luaXQuYyBpbmNvcnJlY3RseQorW3NuaXAgcGx1Z2lucy9sZGFwZGJfaW5pdC5jXQorU0FTTF9DQU5PTlVTRVJfUExVR19JTklUKCBsZGFwZGIgKQorU0FTTF9DQU5PTlVTRVJfUExVR19JTklUKCBsZGFwZGIgKQorU0FTTF9DQU5PTlVTRVJfUExVR19JTklUKCBsZGFwZGIgKQorW3NuaXAgcGx1Z2lucy9sZGFwZGJfaW5pdC5jXQorCitMZXQgbWFrZWluaXQuc2ggZ2VuZXJhdGUgdGhlIGV4cGVjdGVkIDxwbHVnaW4+X2luaXQuYyB3aGljaAoraXMgZXhhY3RseSByZXF1aXJlZCBieSA8cGx1Z2luPi5jLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2N5cnVzaW1hcC9jeXJ1cy1zYXNsL3B1bGwvNTMyXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBwbHVnaW5zL01ha2VmaWxlLmFtIHwgIDIgKy0KKyBwbHVnaW5zL21ha2Vpbml0LnNoIHwgMTkgKysrKysrKysrKysrKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvTWFrZWZpbGUuYW0gYi9wbHVnaW5zL01ha2VmaWxlLmFtCitpbmRleCA5MjlmNmE0Li44MWU3ZjBiIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9NYWtlZmlsZS5hbQorKysrIGIvcGx1Z2lucy9NYWtlZmlsZS5hbQorQEAgLTE0OSw0ICsxNDksNCBAQCBwYXNzZHNzX2luaXQuYyBzYXNsZGJfaW5pdC5jIHNxbF9pbml0LmMgbGRhcGRiX2luaXQuYworIENMRUFORklMRVM9JChpbml0X3NyYykKKyAKKyAke2luaXRfc3JjfTogJChzcmNkaXIpL21ha2Vpbml0LnNoCistCSQoU0hFTEwpICQoc3JjZGlyKS9tYWtlaW5pdC5zaAorKwkkKFNIRUxMKSAkKHNyY2RpcikvbWFrZWluaXQuc2ggJEAKK2RpZmYgLS1naXQgYS9wbHVnaW5zL21ha2Vpbml0LnNoIGIvcGx1Z2lucy9tYWtlaW5pdC5zaAoraW5kZXggY2M2NWY3ZC4uMzEzMTg3NyAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvbWFrZWluaXQuc2gKKysrKyBiL3BsdWdpbnMvbWFrZWluaXQuc2gKK0BAIC0xLDcgKzEsOSBAQAorK3BsdWdpbl9pbml0PSIkMSIKKyAjIG1lY2hhbmlzbSBwbHVnaW5zCisgZm9yIG1lY2ggaW4gYW5vbnltb3VzIGNyYW1tZDUgZGlnZXN0bWQ1IHNjcmFtIGdzc2FwaXYyIGtlcmJlcm9zNCBsb2dpbiBudGxtIG90cCBwYXNzZHNzIHBsYWluIHNycCBnczI7IGRvCisrICAgIGlmIFsgJHtwbHVnaW5faW5pdH0gPSAiJHttZWNofV9pbml0LmMiIF07dGhlbgorIAorLWVjaG8gIgorKyAgICAgICAgZWNobyAiCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC00MywxMyArNDUsMTYgQEAgQk9PTCBBUElFTlRSWSBEbGxNYWluKCBIQU5ETEUgaE1vZHVsZSwKKyAKKyBTQVNMX0NMSUVOVF9QTFVHX0lOSVQoICRtZWNoICkKKyBTQVNMX1NFUlZFUl9QTFVHX0lOSVQoICRtZWNoICkKKy0iID4gJHttZWNofV9pbml0LmMKKysiICAgICAgID4gJHttZWNofV9pbml0LmMKKysgICAgICAgIGVjaG8gImdlbmVyYXRpbmcgJDEiCisrICAgIGZpICMgRW5kIG9mIGBpZiBbICR7cGx1Z2luX2luaXR9ID0gIiR7bWVjaH1faW5pdC5jIiBdO3RoZW4nCisgZG9uZQorIAorICMgYXV4cHJvcCBwbHVnaW5zCisgZm9yIGF1eHByb3AgaW4gc2FzbGRiIHNxbCBsZGFwZGI7IGRvCisrICAgIGlmIFsgJHtwbHVnaW5faW5pdH0gPSAiJHthdXhwcm9wfV9pbml0LmMiIF07dGhlbgorIAorLWVjaG8gIgorKyAgICAgICAgZWNobyAiCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC04Niw4ICs5MSwxMiBAQCBCT09MIEFQSUVOVFJZIERsbE1haW4oIEhBTkRMRSBoTW9kdWxlLAorICNlbmRpZgorIAorIFNBU0xfQVVYUFJPUF9QTFVHX0lOSVQoICRhdXhwcm9wICkKKy0iID4gJHthdXhwcm9wfV9pbml0LmMKKysiICAgICAgID4gJHthdXhwcm9wfV9pbml0LmMKKysgICAgICAgIGVjaG8gImdlbmVyYXRpbmcgJDEiCisrICAgIGZpICMgRW5kIG9mIGBpZiBbICR7cGx1Z2luX2luaXR9ID0gIiR7YXV4cHJvcH1faW5pdC5jIiBdO3RoZW4nCisgZG9uZQorIAorICMgbGRhcGRiIGlzIGFsc28gYSBjYW5vbl91c2VyIHBsdWdpbgorLWVjaG8gIlNBU0xfQ0FOT05VU0VSX1BMVUdfSU5JVCggbGRhcGRiICkiID4+IGxkYXBkYl9pbml0LmMKKytpZiBbICR7cGx1Z2luX2luaXR9ID0gImxkYXBkYl9pbml0LmMiIF07dGhlbgorKyAgICBlY2hvICJTQVNMX0NBTk9OVVNFUl9QTFVHX0lOSVQoIGxkYXBkYiApIiA+PiBsZGFwZGJfaW5pdC5jCisrZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvMDAwNC1jb25maWd1cmUuYWMtZml4LWNvbmRpdGlvbi1mb3Itc3VwcGxpbWVudC1zbnByaW50Zi1pLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvMDAwNC1jb25maWd1cmUuYWMtZml4LWNvbmRpdGlvbi1mb3Itc3VwcGxpbWVudC1zbnByaW50Zi1pLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZDA5YzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC8wMDA0LWNvbmZpZ3VyZS5hYy1maXgtY29uZGl0aW9uLWZvci1zdXBwbGltZW50LXNucHJpbnRmLWkucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA5ODA4MmY4MWRhMWI0OTg3NjA4MWZmMWFiMzQwZTk1Mjc1NWY5ODVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT0JBVEEgQWtpbyA8b2JhY2hlQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWF5IDIwMTggMTg6MzY6MjYgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY29uZGl0aW9uIGZvciBzdXBwbGltZW50IHNucHJpbnRmCisgaW1wbGVtZW50YXRpb24KKworJHNhc2xfY3Zfc25wcmludGYgbWVhbnMgcmVxdXJlbW50IG9mIHN1cHBsaW1lbnQgc25wcmludGYKK2ltcGxlbWVudGF0aW9uLCBub3QgZXhpc3RlbmNlIG9mIHN5c3RlbSBzbnByaW50ZiBpbXBsZW1lbnRhdGlvbiwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jeXJ1c2ltYXAvY3lydXMtc2FzbC9wdWxsLzUxMl0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGFjNTlmMTQuLjk4MDRlOTggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyNjQsNyArMTI2NCw3IEBAIFNOUFJJTlRGT0JKUz0iIgorIExUU05QUklOVEZPQkpTPSIiCisgQUNfQ0hFQ0tfRlVOQyhzbnByaW50ZiwgW0FDX0RFRklORShIQVZFX1NOUFJJTlRGLFtdLFtEb2VzIHRoZSBzeXN0ZW0gaGF2ZSBzbnByaW50ZigpP10pXSwgW3Nhc2xfY3Zfc25wcmludGY9eWVzXSkKKyBBQ19DSEVDS19GVU5DKHZzbnByaW50ZiwgW0FDX0RFRklORShIQVZFX1ZTTlBSSU5URixbXSxbRG9lcyB0aGUgc3lzdGVtIGhhdmUgdnNucHJpbnRmKCk/XSldLCBbc2FzbF9jdl9zbnByaW50Zj15ZXNdKQorLWlmIHRlc3QgJHNhc2xfY3Zfc25wcmludGYgPSBubzsgdGhlbgorK2lmIHRlc3QgJHNhc2xfY3Zfc25wcmludGYgPSB5ZXM7IHRoZW4KKyAgICAgICAgQUNfTElCT0JKKHNucHJpbnRmKQorICAgICAgICBTTlBSSU5URk9CSlM9InNucHJpbnRmLm8iCisgICAgICAgIExUU05QUklOVEZPQkpTPSJzbnByaW50Zi5sbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL0ZpeC1oYXJkY29kZWQtbGliZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvRml4LWhhcmRjb2RlZC1saWJkaXIucGF0Y2gKaW5kZXggM2ZhODQzMS4uZjE3MjM2MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvRml4LWhhcmRjb2RlZC1saWJkaXIucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvRml4LWhhcmRjb2RlZC1saWJkaXIucGF0Y2gKQEAgLTEsMjUgKzEsMjYgQEAKLUZpeCBoYXJkY29kZWQgbGliZGlyLgorRnJvbSAxODhhZDQ0OTc5NDcyNTk4MTFhZDMyZmFlZWU5NWMyMGY5YTQ0MDQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlJveS5MaSIgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE5IEp1bCAyMDEzIDE0OjI5OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBoYXJkY29kZWQgbGliZGlyLgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm95LkxpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBwbHVnaW5zL01ha2VmaWxlLmFtIHwgICAgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQorIHBsdWdpbnMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9wbHVnaW5zL01ha2VmaWxlLmFtIGIvcGx1Z2lucy9NYWtlZmlsZS5hbQotaW5kZXggYjAwOTE1Zi4uMjUyNjJhMSAxMDA2NDQKK2luZGV4IDJiMDJhNTIuLjkyOWY2YTQgMTAwNjQ0CiAtLS0gYS9wbHVnaW5zL01ha2VmaWxlLmFtCiArKysgYi9wbHVnaW5zL01ha2VmaWxlLmFtCi1AQCAtNjIsNyArNjIsNyBAQCBwbHVnaW5kaXIgPSBAcGx1Z2luZGlyQAorQEAgLTY1LDcgKzY1LDcgQEAgTElCX01ZU1FMID0gQExJQl9NWVNRTEAKICAKLSBjb21tb25fc291cmNlcyA9IHBsdWdpbl9jb21tb24uYyBwbHVnaW5fY29tbW9uLmgKKyBwbHVnaW5kaXIgPSBAcGx1Z2luZGlyQAogIAogLXNhc2xkaXIgPSAkKHByZWZpeCkvbGliL3Nhc2wyCiArc2FzbGRpciA9ICQobGliZGlyKS9zYXNsMgogIHNhc2xfTFRMSUJSQVJJRVMgPSBAU0FTTF9NRUNIU0AKICBFWFRSQV9MVExJQlJBUklFUyA9IGxpYnBsYWluLmxhIGxpYmFub255bW91cy5sYSBsaWJrZXJiZXJvczQubGEgbGliY3JhbW1kNS5sYSBcCiAgCWxpYmdzMi5sYSBsaWJnc3NhcGl2Mi5sYSBsaWJkaWdlc3RtZDUubGEgbGlibG9naW4ubGEgbGlic3JwLmxhIGxpYm90cC5sYSBcCi0tLSAKLTEuNy40LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvYXZvaWQtdG8tY2FsbC1BQ19UUllfUlVOLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvYXZvaWQtdG8tY2FsbC1BQ19UUllfUlVOLnBhdGNoCmluZGV4IDY0MDc3MjEuLmFhMjcxYjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL2F2b2lkLXRvLWNhbGwtQUNfVFJZX1JVTi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9hdm9pZC10by1jYWxsLUFDX1RSWV9SVU4ucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1Bdm9pZCB0byBjYWxsIEFDX1RSWV9SVU4KK0Zyb20gMjg4NDMwZDNjMmQzZjM2YTRjOWQ0MGM0ZmZmYTg1Mjg4ZjQ0NTQ5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJSb3kuTGkiIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNSBKdW4gMjAxMyAwOToyMjo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBBdm9pZCB0byBjYWxsIEFDX1RSWV9SVU4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCkBAIC02LDE4ICs5LDIwIEBACiBvbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50IGJ5IGRlZmluaXRpb24gQUNfQVJHX0VOQUJMRSBlbmFibGUtc3BuZWdvCiAKIFNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNtdWxvY2FsL3Nhc2wyLm00IHwgICAxMyArKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NtdWxvY2FsL3Nhc2wyLm00IGIvY211bG9jYWwvc2FzbDIubTQKLWluZGV4IDNjMjg0MWEuLmE1ZWNmODEgMTAwNjQ0Ci0tLS0gYS9jbXVsb2NhbC9zYXNsMi5tNAotKysrIGIvY211bG9jYWwvc2FzbDIubTQKLUBAIC0yODEsNiArMjgxLDE3IEBAIGlmIHRlc3QgIiRnc3NhcGkiICE9IG5vOyB0aGVuCi0gCistLS0KKyBtNC9zYXNsMi5tNCB8IDE1ICsrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbTQvc2FzbDIubTQgYi9tNC9zYXNsMi5tNAoraW5kZXggNTZlMDUwNC4uY2Y2MjYwNyAxMDA2NDQKKy0tLSBhL200L3Nhc2wyLm00CisrKysgYi9tNC9zYXNsMi5tNAorQEAgLTMxNCw3ICszMTQsMTggQEAgaWYgdGVzdCAiJGdzc2FwaSIgIT0gbm87IHRoZW4KICAgIGNtdV9zYXZlX0xJQlM9IiRMSUJTIgogICAgTElCUz0iJExJQlMgJEdTU0FQSUJBU0VfTElCUyIKKyAKKy0gIEFDX01TR19DSEVDS0lORyhbZm9yIFNQTkVHTyBzdXBwb3J0IGluIEdTU0FQSSBsaWJyYXJpZXNdKQogKyAgQUNfQVJHX0VOQUJMRShbc3BuZWdvXSwKICsgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtc3BuZWdvPTxESVI+XSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIFNQTkVHTyBzdXBwb3J0IGluIEdTU0FQSSBsaWJyYXJpZXMgW25vXV0pXSwKQEAgLTI5LDEwICszNCwxMSBAQAogKyAgZWxpZiB0ZXN0ICIkc3BuZWdvIiA9IHllczsgdGhlbgogKyAgICAgICBBQ19ERUZJTkUoSEFWRV9HU1NfU1BORUdPLCxbRGVmaW5lIGlmIHlvdXIgR1NTQVBJIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIFNQTkVHT10pCiArICBlbHNlCi0gICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBTUE5FR08gc3VwcG9ydCBpbiBHU1NBUEkgbGlicmFyaWVzXSkKKysgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgU1BORUdPIHN1cHBvcnQgaW4gR1NTQVBJIGxpYnJhcmllc10pCiAgICBBQ19UUllfUlVOKFsKICAjaWZkZWYgSEFWRV9HU1NBUElfSAotQEAgLTMwOCw3ICszMTksNyBAQCBpbnQgbWFpbih2b2lkKQorICNpbmNsdWRlIDxnc3NhcGkuaD4KK0BAIC0zNDEsNyArMzUyLDcgQEAgaW50IG1haW4odm9pZCkKICAJQUNfTVNHX1JFU1VMVCh5ZXMpIF0sCiAgCUFDX01TR19SRVNVTFQobm8pKQogICAgTElCUz0iJGNtdV9zYXZlX0xJQlMiCkBAIC00MSw2ICs0NywzIEBACiAgZWxzZQogICAgQUNfTVNHX1JFU1VMVChbZGlzYWJsZWRdKQogIGZpCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL2RlYmlhbl9wYXRjaGVzXzAwMDlfc2FzbGRiX2FsLmRpZmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9kZWJpYW5fcGF0Y2hlc18wMDA5X3Nhc2xkYl9hbC5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZmNWE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL2RlYmlhbl9wYXRjaGVzXzAwMDlfc2FzbGRiX2FsLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1BdXRob3I6IEZhYmlhbiBGYWdlcmhvbG0gPGZhYmJlQGRlYmlhbi5vcmc+Ci1EZXNjcmlwdGlvbjogRml4IGxpbmtpbmcgd2l0aCBsaWJzYXNsZGIuYSB3aGVuIHNhc2xhdXRoZCBpcyBidWlsdCB3aXRoIHNhc2xkYgotc3VwcG9ydC4KLS0tLSBhL3Nhc2xhdXRoZC9jb25maWd1cmUuaW4KLSsrKyBiL3Nhc2xhdXRoZC9jb25maWd1cmUuaW4KLUBAIC03Nyw3ICs3Nyw3IEBAIGlmIHRlc3QgIiRhdXRoc2FzbGRiIiAhPSBubzsgdGhlbgotICAgQUNfREVGSU5FKEFVVEhfU0FTTERCLFtdLFtJbmNsdWRlIFNBU0xkYiBTdXBwb3J0XSkKLSAgIFNBU0xfREJfUEFUSF9DSEVDSygpCi0gICBTQVNMX0RCX0NIRUNLKCkKLS0gIFNBU0xfREJfTElCPSIkU0FTTF9EQl9MSUIgLi4vc2FzbGRiLy5saWJzL2xpYnNhc2xkYi5hbCIKLSsgIFNBU0xfREJfTElCPSIkU0FTTF9EQl9MSUIgLi4vc2FzbGRiLy5saWJzL2xpYnNhc2xkYi5hIgotIGZpCi0gCi0gQUNfQVJHX0VOQUJMRShodHRwZm9ybSwgWyAgLS1lbmFibGUtaHR0cGZvcm0gICAgICAgZW5hYmxlIEhUVFAgZm9ybSBhdXRoZW50aWNhdGlvbiBbW25vXV0gXSwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL2RlYmlhbl9wYXRjaGVzXzAwMTRfYXZvaWRfcGljX292ZXJ3cml0ZS5kaWZmIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvZGViaWFuX3BhdGNoZXNfMDAxNF9hdm9pZF9waWNfb3ZlcndyaXRlLmRpZmYKaW5kZXggMmU1YjE3NS4uMDQ3OWFjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvZGViaWFuX3BhdGNoZXNfMDAxNF9hdm9pZF9waWNfb3ZlcndyaXRlLmRpZmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvZGViaWFuX3BhdGNoZXNfMDAxNF9hdm9pZF9waWNfb3ZlcndyaXRlLmRpZmYKQEAgLTEsMjcgKzEsMjggQEAKLUF1dGhvcjogRmFiaWFuIEZhZ2VyaG9sbSA8ZmFiYmVAZGViaWFuLm9yZz4KK0Zyb20gMWE1ZjMwMDRlOTA4MWVhYjYyNjNhMjljZDViZTc5MmYwNjQ0MWUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhYmlhbiBGYWdlcmhvbG0gPGZhYmJlQGRlYmlhbi5vcmc+CitEYXRlOiBXZWQsIDI0IEp1bCAyMDEzIDExOjM4OjI1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGN5cnVzLXNhc2w6IEFkZCBwYXRjaGVzIGZyb20gRGViaWFuIHRvIGZpeCBsaW5raW5nCisKIERlc2NyaXB0aW9uOiBUaGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhlIG5vbi1QSUMgdmVyc2lvbiBvZiBsaWJzYXNsZGIuYSwgd2hpY2gKIGlzIGNyZWF0ZWQgb3V0IG9mIG5vbi1QSUMgb2JqZWN0cywgaXMgbm90IGdvaW5nIHRvIG92ZXJ3cml0ZSB0aGUgUElDIHZlcnNpb24sCiB3aGljaCBpcyBjcmVhdGVkIG91dCBvZiBQSUMgb2JqZWN0cy4gVGhlIFBJQyB2ZXJzaW9uIGlzIHBsYWNlZCBpbiAubGlicywgYW5kCiB0aGUgbm9uLVBJQyB2ZXJzaW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIFRoaXMgZW5zdXJlcyB0aGF0IGJvdGggbm9uLVBJQwogYW5kIFBJQyB2ZXJzaW9ucyBhcmUgYXZhaWxhYmxlIGluIHRoZSBjb3JyZWN0IGxvY2F0aW9ucy4KKworLS0tCisgbGliL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxlLmFtCitpbmRleCBhMTU4Y2EzLi4zMTM3ZTE5IDEwMDY0NAogLS0tIGEvbGliL01ha2VmaWxlLmFtCiArKysgYi9saWIvTWFrZWZpbGUuYW0KLUBAIC03OCw3ICs3OCw3IEBAIGVuZGlmCitAQCAtOTksNyArOTksNyBAQCBlbmRpZgogIAogIGxpYnNhc2wyLmE6IGxpYnNhc2wyLmxhICQoU0FTTF9TVEFUSUNfT0JKUykKICAJQGVjaG8gYWRkaW5nIHN0YXRpYyBwbHVnaW5zIGFuZCBkZXBlbmRlbmNpZXMKIC0JJChBUikgY3J1IC5saWJzLyRAICQoU0FTTF9TVEFUSUNfT0JKUykKICsJJChBUikgY3J1ICRAICQoU0FTTF9TVEFUSUNfT0JKUykKLSAJQGZvciBpIGluIC4vbGlic2FzbDIubGEgLi4vc2FzbGRiL2xpYnNhc2xkYi5sYSAuLi9wbHVnaW5zL2xpYioubGE7IGRvIFwKKyAJQGZvciBpIGluIC4vbGlic2FzbDIubGEgLi4vY29tbW9uL2xpYnBsdWdpbl9jb21tb24ubGEgLi4vc2FzbGRiL2xpYnNhc2xkYi5sYSAuLi9wbHVnaW5zL2xpYioubGE7IGRvIFwKICAJaWYgdGVzdCAhIC1mICQkaTsgdGhlbiBjb250aW51ZTsgZmk7IC4gJCRpOyBcCiAgCWZvciBqIGluICQkZGVwZW5kZW5jeV9saWJzIGZvbzsgZG8gXAotLS0tIGEvc2FzbGRiL01ha2VmaWxlLmFtCi0rKysgYi9zYXNsZGIvTWFrZWZpbGUuYW0KLUBAIC02Myw2ICs2Myw2IEBAIGxpYnNhc2xkYl9hX1NPVVJDRVMgPQotIEVYVFJBX2xpYnNhc2xkYl9hX1NPVVJDRVMgPQotIAotIGxpYnNhc2xkYi5hOiBsaWJzYXNsZGIubGEgJChTQVNMX0RCX0JBQ0tFTkRfU1RBVElDKQotLQkkKEFSKSBjcnUgLmxpYnMvJEAgJChTQVNMX0RCX0JBQ0tFTkRfU1RBVElDKQotKwkkKEFSKSBjcnUgJEAgJChTQVNMX0RCX0JBQ0tFTkRfU1RBVElDKQotIAotIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2wvc2FzbC5oLWluY2x1ZGUtc3RkZGVmLmgtZm9yLXNpemVfdC1vbi1OZXRCU0QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9zYXNsLmgtaW5jbHVkZS1zdGRkZWYuaC1mb3Itc2l6ZV90LW9uLU5ldEJTRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNiYWI4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9zYXNsLmgtaW5jbHVkZS1zdGRkZWYuaC1mb3Itc2l6ZV90LW9uLU5ldEJTRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gOTJkNzI3ODljODExYjBkNTVmNjI0YThiYWM1Y2NjNDQxMmY1OTk2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBNdXJjaGlzb24gPG11cmNoQGFuZHJldy5jbXUuZWR1PgotRGF0ZTogVGh1LCAyMCBEZWMgMjAxMiAxODoxNDo1MCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBzYXNsLmg6ICNpbmNsdWRlIDxzdGRkZWYuaD4gZm9yIHNpemVfdCBvbiBOZXRCU0QKLQotVGhpcyBwYXRjaCB3YXMgaW1wb3J0ZWQgZnJvbSBnaXQ6Ly9naXQuY3lydXNpbWFwLm9yZy9jeXJ1cy1zYXNsCi1jb21taXQgNjdhMTg4NjkzNzk2YTE0ZTNhNzZhYzYwMzEwNDgwN2ZiYmZkZGZjNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpbmNsdWRlL3Nhc2wuaCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL3Nhc2wuaCBiL2luY2x1ZGUvc2FzbC5oCi1pbmRleCBmZWY0ZDUxLi44YjhhNjNmIDEwMDc1NQotLS0tIGEvaW5jbHVkZS9zYXNsLmgKLSsrKyBiL2luY2x1ZGUvc2FzbC5oCi1AQCAtMTIxLDYgKzEyMSw4IEBACi0gI2lmbmRlZiBTQVNMX0gKLSAjZGVmaW5lIFNBU0xfSCAxCi0gCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPiAgLyogRm9yIHNpemVfdCAqLwotKwotIC8qIEtlZXAgaW4gc3luYyB3aXRoIHdpbjMyL2NvbW1vbi5tYWsgKi8KLSAjZGVmaW5lIFNBU0xfVkVSU0lPTl9NQUpPUiAyCi0gI2RlZmluZSBTQVNMX1ZFUlNJT05fTUlOT1IgMQotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRiZmY4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgY2xpZW50L3NlcnZlciBsaWJyYXJ5IGZvciBTQVNMIGF1dGhlbnRpY2F0aW9uIgotU0VDVElPTiA9ICJsaWJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2FzZy53ZWIuY211LmVkdS9zYXNsLyIKLURFUEVORFMgPSAib3BlbnNzbCBkYiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2Y1NWUwOTc0ZTNkNmRiMDBjYTZmNTdmMmQyMDYzOTYiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmN5cnVzaW1hcC5vcmcvY3lydXMtc2FzbC9jeXJ1cy1zYXNsLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2F2b2lkLXRvLWNhbGwtQUNfVFJZX1JVTi5wYXRjaCBcCi0gICAgZmlsZTovL0ZpeC1oYXJkY29kZWQtbGliZGlyLnBhdGNoIFwKLSAgICBmaWxlOi8vZGViaWFuX3BhdGNoZXNfMDAwOV9zYXNsZGJfYWwuZGlmZiBcCi0gICAgZmlsZTovL2RlYmlhbl9wYXRjaGVzXzAwMTRfYXZvaWRfcGljX292ZXJ3cml0ZS5kaWZmIFwKLSAgICBmaWxlOi8vc2FzbC5oLWluY2x1ZGUtc3RkZGVmLmgtZm9yLXNpemVfdC1vbi1OZXRCU0QucGF0Y2ggXAotICAgIGZpbGU6Ly9zYXNsYXV0aGQuc2VydmljZSBcCi0gICAgZmlsZTovL3Nhc2xhdXRoZC5jb25mIFwKLSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtZGJsaWI9YmVya2VsZXkgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtYmRiLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1iZGItaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWJkYj1kYi01LjMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcGx1Z2luZGlyPSIke2xpYmRpcn0vc2FzbDIiIFwKLSAgICAgICAgICAgICAgICAgYW5kcmV3X2N2X3J1bnBhdGhfc3dpdGNoPW5vbmUiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJudGxtIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IGxkYXAgcGFtJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLWVuYWJsZS1nc3NhcGk9eWVzLC0tZW5hYmxlLWdzc2FwaT1ubyxrcmI1LCIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtLCIKLVBBQ0tBR0VDT05GSUdbb3BpZV0gPSAiLS13aXRoLW9waWUsLS13aXRob3V0LW9waWUsb3BpZSwiCi1QQUNLQUdFQ09ORklHW2Rlc10gPSAiLS13aXRoLWRlcywtLXdpdGhvdXQtZGVzLCwiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwPSR7U1RBR0lOR19MSUJESVJ9IC0tZW5hYmxlLWxkYXBkYiwtLXdpdGhvdXQtbGRhcCAtLWRpc2FibGUtbGRhcGRiLG9wZW5sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbnRsbV0gPSAiLS13aXRoLW50bG0sLS13aXRob3V0LW50bG0sLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLUNGTEFHUyArPSAiLWZQSUMiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBybSAtZiBhY2luY2x1ZGUubTQgY29uZmlnL2xpYnRvb2wubTQKLQotICAgICMgbWFrZSBpdCBiZSBhYmxlIHRvIHdvcmsgd2l0aCBkYiA1LjAgdmVyc2lvbgotICAgIGxvY2FsIHNlZF9maWxlcz0ic2FzbGRiL2RiX2JlcmtlbGV5LmMgdXRpbHMvZGJjb252ZXJ0ZXItMi5jIgotICAgIGZvciBzZWRfZmlsZSBpbiAkc2VkX2ZpbGVzOyBkbwotICAgICAgICBzZWQgLWkgJ3MjREJfVkVSU0lPTl9NQUpPUiA9PSA0LiojKCYpIHx8IERCX1ZFUlNJT05fTUFKT1IgPT0gNSMnICRzZWRfZmlsZQotICAgIGRvbmUKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICBjZCBpbmNsdWRlCi0gICAgJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gbWFrZW1kNS5jIC1vIG1ha2VtZDUKLSAgICB0b3VjaCBtYWtlbWQ1Lm8gbWFrZW1kNS5sbyBtYWtlbWQ1Ci0gICAgY2QgLi4KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Nhc2xhdXRoZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0KLSAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Nhc2xhdXRoZC5zZXJ2aWNlCi0gICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zYXNsYXV0aGQuc2VydmljZQotICAgICAgICBzZWQgLWkgLWUgJ3MjQFNZU0NPTkZESVJAIyR7c3lzY29uZmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2FzbGF1dGhkLnNlcnZpY2UKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAvcnVuL3Nhc2xhdXRoZC8gLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Nhc2xhdXRoZC5jb25mCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zYXNsYXV0aGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3Nhc2xhdXRoZAotICAgICAgICBzZWQgLWkgLWUgJ3MjQExPQ0FMU1RBVEVESVJAIyR7bG9jYWxzdGF0ZWRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYXNsYXV0aGQKLSAgICBmaQotfQotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWJpbiIKLVVTRVJBRERfUEFSQU1fJHtQTn0tYmluID0gIi0tc3lzdGVtIC0taG9tZT0vdmFyL3Nwb29sL21haWwgLWcgbWFpbCBjeXJ1cyIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iaW4iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluID0gInNhc2xhdXRoZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTdmNGU1ZTU1OWEwZTM3YjNmZmM0MzhjOTQ1NmU0MjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZiYzUxMzY1MTJiNTliYjc5MzY1N2YzNmZhZGRhNjM1OWNhZTNiMDhmMDFmZDE2YjNkNDA2ZjEzNDViN2JjMyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWJpbiIKLQotRklMRVNfJHtQTn0gICAgICAgICAgICs9ICIke2xpYmRpcn0vc2FzbDIvKi5zbyoiCi1GSUxFU18ke1BOfS1iaW4gICAgICAgKz0gIiR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYXNsYXV0aGQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Nhc2xhdXRoZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Nhc2xhdXRoZC5jb25mIgotRklMRVNfJHtQTn0tZGV2ICAgICAgICs9ICIke2xpYmRpcn0vc2FzbDIvKi5sYSIKLUZJTEVTXyR7UE59LWRiZyAgICAgICArPSAiJHtsaWJkaXJ9L3Nhc2wyLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3Nhc2wyLyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTRlNTVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI3LmJiCkBAIC0wLDAgKzEsOTcgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBjbGllbnQvc2VydmVyIGxpYnJhcnkgZm9yIFNBU0wgYXV0aGVudGljYXRpb24iCitTRUNUSU9OID0gImxpYnMiCitIT01FUEFHRSA9ICJodHRwOi8vYXNnLndlYi5jbXUuZWR1L3Nhc2wvIgorREVQRU5EUyA9ICJvcGVuc3NsIGRiIGdyb2ZmLW5hdGl2ZSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2Y1NWUwOTc0ZTNkNmRiMDBjYTZmNTdmMmQyMDYzOTYiCisKK1NSQ1JFViA9ICJlNDFjZmI5ODZjMWIxOTM1NzcwZGU1NTQ4NzIyNDc0NTNmZGJiMDc5IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3lydXNpbWFwL2N5cnVzLXNhc2w7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtdG8tY2FsbC1BQ19UUllfUlVOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1oYXJkY29kZWQtbGliZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbl9wYXRjaGVzXzAwMTRfYXZvaWRfcGljX292ZXJ3cml0ZS5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL3Nhc2xhdXRoZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3Nhc2xhdXRoZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtY29uZmlndXJlLmFjLWZpeC1jb25kaXRpb24tZm9yLXN1cHBsaW1lbnQtc25wcmludGYtaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LXNhc2xhdXRoZC10by1iZS1idWlsdC1vdXRzaWRlLW9mLXNvdXJjZS10cmVlLXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlaW5pdC5zaC1maXgtcGFyYWxsZWwtYnVpbGQtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3lydXNpbWFwL2N5cnVzLXNhc2wvYXJjaGl2ZXMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtZGJsaWI9YmVya2VsZXkgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcGx1Z2luZGlyPScke2xpYmRpcn0vc2FzbDInIFwKKyAgICAgICAgICAgICAgICAgYW5kcmV3X2N2X3J1bnBhdGhfc3dpdGNoPW5vbmUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJudGxtIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwIHBhbScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS1lbmFibGUtZ3NzYXBpPXllcywtLWVuYWJsZS1nc3NhcGk9bm8sa3JiNSwiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwiCitQQUNLQUdFQ09ORklHW29waWVdID0gIi0td2l0aC1vcGllLC0td2l0aG91dC1vcGllLG9waWUsIgorUEFDS0FHRUNPTkZJR1tkZXNdID0gIi0td2l0aC1kZXMsLS13aXRob3V0LWRlcywsIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcD0ke1NUQUdJTkdfTElCRElSfSAtLWVuYWJsZS1sZGFwZGIsLS13aXRob3V0LWxkYXAgLS1kaXNhYmxlLWxkYXBkYixvcGVubGRhcCwiCitQQUNLQUdFQ09ORklHW250bG1dID0gIi0tZW5hYmxlLW50bG09eWVzLC0tZW5hYmxlLW50bG09bm8sLCIKKworQ0ZMQUdTICs9ICItZlBJQyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICMgbWFrZSBpdCBiZSBhYmxlIHRvIHdvcmsgd2l0aCBkYiA1LjAgdmVyc2lvbgorICAgIGxvY2FsIHNlZF9maWxlcz0ic2FzbGRiL2RiX2JlcmtlbGV5LmMgdXRpbHMvZGJjb252ZXJ0ZXItMi5jIgorICAgIGZvciBzZWRfZmlsZSBpbiAkc2VkX2ZpbGVzOyBkbworICAgICAgICBzZWQgLWkgJ3MjREJfVkVSU0lPTl9NQUpPUiA9PSA0LiojKCYpIHx8IERCX1ZFUlNJT05fTUFKT1IgPT0gNSMnICR7U30vJHNlZF9maWxlCisgICAgZG9uZQorfQorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgIGNkIGluY2x1ZGUKKyAgICAke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSAke1N9L2luY2x1ZGUvbWFrZW1kNS5jIC1vIG1ha2VtZDUKKyAgICB0b3VjaCBtYWtlbWQ1Lm8gbWFrZW1kNS5sbyBtYWtlbWQ1CisgICAgY2QgLi4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Nhc2xhdXRoZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisKKyAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Nhc2xhdXRoZC5zZXJ2aWNlCisgICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zYXNsYXV0aGQuc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MjQFNZU0NPTkZESVJAIyR7c3lzY29uZmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2FzbGF1dGhkLnNlcnZpY2UKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvcnVuL3Nhc2xhdXRoZC8gLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Nhc2xhdXRoZC5jb25mCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zYXNsYXV0aGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3Nhc2xhdXRoZAorICAgICAgICBzZWQgLWkgLWUgJ3MjQExPQ0FMU1RBVEVESVJAIyR7bG9jYWxzdGF0ZWRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYXNsYXV0aGQKKyAgICBmaQorfQorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWJpbiIKK1VTRVJBRERfUEFSQU1fJHtQTn0tYmluID0gIi0tc3lzdGVtIC0taG9tZT0vdmFyL3Nwb29sL21haWwgLWcgbWFpbCBjeXJ1cyIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1iaW4iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluID0gInNhc2xhdXRoZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTdmNGU1ZTU1OWEwZTM3YjNmZmM0MzhjOTQ1NmU0MjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZiYzUxMzY1MTJiNTliYjc5MzY1N2YzNmZhZGRhNjM1OWNhZTNiMDhmMDFmZDE2YjNkNDA2ZjEzNDViN2JjMyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWJpbiIKKworRklMRVNfJHtQTn0gICAgICAgICAgICs9ICIke2xpYmRpcn0vc2FzbDIvKi5zbyoiCitGSUxFU18ke1BOfS1iaW4gICAgICAgKz0gIiR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9zYXNsYXV0aGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Nhc2xhdXRoZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Nhc2xhdXRoZC5jb25mIgorRklMRVNfJHtQTn0tZGV2ICAgICAgICs9ICIke2xpYmRpcn0vc2FzbDIvKi5sYSIKK0ZJTEVTXyR7UE59LWRiZyAgICAgICArPSAiJHtsaWJkaXJ9L3Nhc2wyLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3Nhc2wyLyouYSIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLW11c2wtZml4ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2wvMDAwMy1tdXNsLWZpeGVzLnBhdGNoCmluZGV4IDNjZDUyNTkuLjk1MmU0ZjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbC8wMDAzLW11c2wtZml4ZXMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sLzAwMDMtbXVzbC1maXhlcy5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgNCBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgbmV0L3BwcF9kZWZzLmgKIAotZGlmZiAtLWdpdCBhL2NsaS9jbGlfcmVhZGxpbmUuYyBiL2NsaS9jbGlfcmVhZGxpbmUuYwotaW5kZXggMjgxMmU2ZS4uNTQyOTM1YyAxMDA2NDQKLS0tLSBhL2NsaS9jbGlfcmVhZGxpbmUuYwotKysrIGIvY2xpL2NsaV9yZWFkbGluZS5jCitJbmRleDogaXBwb29sLTEuMy9jbGkvY2xpX3JlYWRsaW5lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHBvb2wtMS4zLm9yaWcvY2xpL2NsaV9yZWFkbGluZS5jCisrKysgaXBwb29sLTEuMy9jbGkvY2xpX3JlYWRsaW5lLmMKIEBAIC0xNywxMyArMTcsMTQgQEAKICAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQogICAqCkBAIC0zMyw3ICszMyw3IEBACiAgI2luY2x1ZGUgPHNpZ25hbC5oPgogIAogICNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgotQEAgLTYzMCw3ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCBjbGlfcmxfdW5pbnN0YWxsX3NpZ25hbF9oYW5kbGVycyh2b2lkKQorQEAgLTYzMCw3ICs2MzEsNyBAQCBzdGF0aWMgdm9pZCBjbGlfcmxfdW5pbnN0YWxsX3NpZ25hbF9oYW5kCiAgCiAgc3RhdGljIGludCBjbGlfcmxfaW5zdGFsbF9zaWduYWxfaGFuZGxlcnModm9pZCkKICB7CkBAIC00MiwxMSArNDIsMTEgQEAKICAKICAJcmxfY2F0Y2hfc2lnbmFscyA9IDA7CiAgCXJsX2NsZWFyX3NpZ25hbHMoKTsKLWRpZmYgLS1naXQgYS9pcHBvb2xfYXBpLmMgYi9pcHBvb2xfYXBpLmMKLWluZGV4IDJjMTBjNDcuLmQxMTI3YTkgMTAwNjQ0Ci0tLS0gYS9pcHBvb2xfYXBpLmMKLSsrKyBiL2lwcG9vbF9hcGkuYwotQEAgLTE4MSwxMCArMTgxLDEzIEBAIGludCBpcHBvb2xfYXBpX3JwY19jaGVja19yZXF1ZXN0KFNWQ1hQUlQgKnhwcnQpCitJbmRleDogaXBwb29sLTEuMy9pcHBvb2xfYXBpLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHBvb2wtMS4zLm9yaWcvaXBwb29sX2FwaS5jCisrKysgaXBwb29sLTEuMy9pcHBvb2xfYXBpLmMKK0BAIC0xODEsMTAgKzE4MSwxMyBAQCBpbnQgaXBwb29sX2FwaV9ycGNfY2hlY2tfcmVxdWVzdChTVkNYUFJUCiAgCSAqIG5vbi1sb29wYmFjayBpbnRlcmZhY2UsIHJlamVjdCB0aGUgcmVxdWVzdC4KICAJICovCiAgCWlmICgoIWlwcG9vbF9vcHRfcmVtb3RlX3JwYykgJiYKQEAgLTYzLDIxMCArNjMsMTAgQEAKICAJCX0KICAJCXN2Y2Vycl9hdXRoKHhwcnQsIEFVVEhfVE9PV0VBSyk7CiAgCQlyZXR1cm4gLUVQRVJNOwotZGlmZiAtLWdpdCBhL25ldC9wcHBfZGVmcy5oIGIvbmV0L3BwcF9kZWZzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMDZlZGE1Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9uZXQvcHBwX2RlZnMuaAotQEAgLTAsMCArMSwxOTQgQEAKLSsvKgkkSWQ6IHBwcF9kZWZzLmgsdiAxLjE3IDIwMDIvMTIvMDYgMDk6NDk6MTUgcGF1bHVzIEV4cCAkCSovCi0rCi0rLyoKLSsgKiBwcHBfZGVmcy5oIC0gUFBQIGRlZmluaXRpb25zLgotKyAqCi0rICogQ29weXJpZ2h0IChjKSAxOTg0IFBhdWwgTWFja2VycmFzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqCi0rICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9uLgotKyAqCi0rICogMy4gVGhlIG5hbWUocykgb2YgdGhlIGF1dGhvcnMgb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSB1c2VkIHRvCi0rICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKLSsgKiAgICBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rICoKLSsgKiA0LiBSZWRpc3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgUGF1bCBNYWNrZXJyYXMKLSsgKiAgICAgPHBhdWx1c0BzYW1iYS5vcmc+Ii4KLSsgKgotKyAqIFRIRSBBVVRIT1JTIE9GIFRISVMgU09GVFdBUkUgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8KLSsgKiBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKLSsgKiBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSsgKiBTUEVDSUFMLCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKLSsgKiBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLSsgKiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HCi0rICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0rICovCi0rCi0rI2lmbmRlZiBfUFBQX0RFRlNfSF8KLSsjZGVmaW5lIF9QUFBfREVGU19IXwotKwotKy8qCi0rICogVGhlIGJhc2ljIFBQUCBmcmFtZS4KLSsgKi8KLSsjZGVmaW5lIFBQUF9IRFJMRU4JNAkvKiBvY3RldHMgZm9yIHN0YW5kYXJkIHBwcCBoZWFkZXIgKi8KLSsjZGVmaW5lIFBQUF9GQ1NMRU4JMgkvKiBvY3RldHMgZm9yIEZDUyAqLwotKwotKy8qCi0rICogUGFja2V0IHNpemVzCi0rICoKLSsgKiBOb3RlIC0gbGNwIHNob3VsZG4ndCBiZSBhbGxvd2VkIHRvIG5lZ290aWF0ZSBzdHVmZiBvdXRzaWRlIHRoZXNlCi0rICoJICBsaW1pdHMuICBTZWUgbGNwLmggaW4gdGhlIHBwcGQgZGlyZWN0b3J5LgotKyAqIChYWFggLSB0aGVzZSBjb25zdGFudHMgc2hvdWxkIHNpbXBseSBiZSBzaGFyZWQgYnkgbGNwLmMgaW5zdGVhZAotKyAqCSAgb2YgbGl2aW5nIGluIGxjcC5oKQotKyAqLwotKyNkZWZpbmUJUFBQX01UVQkJMTUwMAkvKiBEZWZhdWx0IE1UVSAoc2l6ZSBvZiBJbmZvIGZpZWxkKSAqLwotKyNkZWZpbmUgUFBQX01BWE1UVQk2NTUzNSAtIChQUFBfSERSTEVOICsgUFBQX0ZDU0xFTikKLSsjZGVmaW5lIFBQUF9NSU5NVFUJNjQKLSsjZGVmaW5lIFBQUF9NUlUJCTE1MDAJLyogZGVmYXVsdCBNUlUgPSBtYXggbGVuZ3RoIG9mIGluZm8gZmllbGQgKi8KLSsjZGVmaW5lIFBQUF9NQVhNUlUJNjUwMDAJLyogTGFyZ2VzdCBNUlUgd2UgYWxsb3cgKi8KLSsjZGVmaW5lIFBQUF9NSU5NUlUJMTI4Ci0rCi0rI2RlZmluZSBQUFBfQUREUkVTUyhwKQkoKCh1X2NoYXIgKikocCkpWzBdKQotKyNkZWZpbmUgUFBQX0NPTlRST0wocCkJKCgodV9jaGFyICopKHApKVsxXSkKLSsjZGVmaW5lIFBQUF9QUk9UT0NPTChwKQkoKCgodV9jaGFyICopKHApKVsyXSA8PCA4KSArICgodV9jaGFyICopKHApKVszXSkKLSsKLSsvKgotKyAqIFNpZ25pZmljYW50IG9jdGV0IHZhbHVlcy4KLSsgKi8KLSsjZGVmaW5lCVBQUF9BTExTVEFUSU9OUwkweGZmCS8qIEFsbC1TdGF0aW9ucyBicm9hZGNhc3QgYWRkcmVzcyAqLwotKyNkZWZpbmUJUFBQX1VJCQkweDAzCS8qIFVubnVtYmVyZWQgSW5mb3JtYXRpb24gKi8KLSsjZGVmaW5lCVBQUF9GTEFHCTB4N2UJLyogRmxhZyBTZXF1ZW5jZSAqLwotKyNkZWZpbmUJUFBQX0VTQ0FQRQkweDdkCS8qIEFzeW5jaHJvbm91cyBDb250cm9sIEVzY2FwZSAqLwotKyNkZWZpbmUJUFBQX1RSQU5TCTB4MjAJLyogQXN5bmNocm9ub3VzIHRyYW5zcGFyZW5jeSBtb2RpZmllciAqLwotKwotKy8qCi0rICogUHJvdG9jb2wgZmllbGQgdmFsdWVzLgotKyAqLwotKyNkZWZpbmUgUFBQX0lQCQkweDIxCS8qIEludGVybmV0IFByb3RvY29sICovCi0rI2RlZmluZSBQUFBfQVQJCTB4MjkJLyogQXBwbGVUYWxrIFByb3RvY29sICovCi0rI2RlZmluZSBQUFBfSVBYCQkweDJiCS8qIElQWCBwcm90b2NvbCAqLwotKyNkZWZpbmUJUFBQX1ZKQ19DT01QCTB4MmQJLyogVkogY29tcHJlc3NlZCBUQ1AgKi8KLSsjZGVmaW5lCVBQUF9WSkNfVU5DT01QCTB4MmYJLyogVkogdW5jb21wcmVzc2VkIFRDUCAqLwotKyNkZWZpbmUgUFBQX0lQVjYJMHg1NwkvKiBJbnRlcm5ldCBQcm90b2NvbCBWZXJzaW9uIDYgKi8KLSsjZGVmaW5lIFBQUF9DT01QCTB4ZmQJLyogY29tcHJlc3NlZCBwYWNrZXQgKi8KLSsjZGVmaW5lIFBQUF9JUENQCTB4ODAyMQkvKiBJUCBDb250cm9sIFByb3RvY29sICovCi0rI2RlZmluZSBQUFBfQVRDUAkweDgwMjkJLyogQXBwbGVUYWxrIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9JUFhDUAkweDgwMmIJLyogSVBYIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9JUFY2Q1AJMHg4MDU3CS8qIElQdjYgQ29udHJvbCBQcm90b2NvbCAqLwotKyNkZWZpbmUgUFBQX0NDUAkJMHg4MGZkCS8qIENvbXByZXNzaW9uIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9FQ1AJCTB4ODA1MwkvKiBFbmNyeXB0aW9uIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9MQ1AJCTB4YzAyMQkvKiBMaW5rIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9QQVAJCTB4YzAyMwkvKiBQYXNzd29yZCBBdXRoZW50aWNhdGlvbiBQcm90b2NvbCAqLwotKyNkZWZpbmUgUFBQX0xRUgkJMHhjMDI1CS8qIExpbmsgUXVhbGl0eSBSZXBvcnQgcHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9DSEFQCTB4YzIyMwkvKiBDcnlwdG9ncmFwaGljIEhhbmRzaGFrZSBBdXRoLiBQcm90b2NvbCAqLwotKyNkZWZpbmUgUFBQX0NCQ1AJMHhjMDI5CS8qIENhbGxiYWNrIENvbnRyb2wgUHJvdG9jb2wgKi8KLSsjZGVmaW5lIFBQUF9FQVAJCTB4YzIyNwkvKiBFeHRlbnNpYmxlIEF1dGhlbnRpY2F0aW9uIFByb3RvY29sICovCi0rCi0rLyoKLSsgKiBWYWx1ZXMgZm9yIEZDUyBjYWxjdWxhdGlvbnMuCi0rICovCi0rI2RlZmluZSBQUFBfSU5JVEZDUwkweGZmZmYJLyogSW5pdGlhbCBGQ1MgdmFsdWUgKi8KLSsjZGVmaW5lIFBQUF9HT09ERkNTCTB4ZjBiOAkvKiBHb29kIGZpbmFsIEZDUyB2YWx1ZSAqLwotKyNkZWZpbmUgUFBQX0ZDUyhmY3MsIGMpCSgoKGZjcykgPj4gOCkgXiBmY3N0YWJbKChmY3MpIF4gKGMpKSAmIDB4ZmZdKQotKwotKy8qCi0rICogQSAzMi1iaXQgdW5zaWduZWQgaW50ZWdyYWwgdHlwZS4KLSsgKi8KLSsKLSsjaWYgIWRlZmluZWQoX19CSVRfVFlQRVNfREVGSU5FRF9fKSAmJiAhZGVmaW5lZChfQklUWVBFUykgXAotKyAmJiAhZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgKE5TX1RBUkdFVCA8IDQwKQotKyNpZmRlZglVSU5UMzJfVAotK3R5cGVkZWYgVUlOVDMyX1QJdV9pbnQzMl90OwotKyNlbHNlCi0rdHlwZWRlZiB1bnNpZ25lZCBpbnQJdV9pbnQzMl90OwotK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgIHVfaW50MTZfdDsKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSsvKgotKyAqIEV4dGVuZGVkIGFzeW5jbWFwIC0gYWxsb3dzIGFueSBjaGFyYWN0ZXIgdG8gYmUgZXNjYXBlZC4KLSsgKi8KLSt0eXBlZGVmIHVfaW50MzJfdAlleHRfYWNjbVs4XTsKLSsKLSsvKgotKyAqIFdoYXQgdG8gZG8gd2l0aCBuZXR3b3JrIHByb3RvY29sIChOUCkgcGFja2V0cy4KLSsgKi8KLStlbnVtIE5QbW9kZSB7Ci0rICAgIE5QTU9ERV9QQVNTLAkJLyogcGFzcyB0aGUgcGFja2V0IHRocm91Z2ggKi8KLSsgICAgTlBNT0RFX0RST1AsCQkvKiBzaWxlbnRseSBkcm9wIHRoZSBwYWNrZXQgKi8KLSsgICAgTlBNT0RFX0VSUk9SLAkJLyogcmV0dXJuIGFuIGVycm9yICovCi0rICAgIE5QTU9ERV9RVUVVRQkJLyogc2F2ZSBpdCB1cCBmb3IgbGF0ZXIuICovCi0rfTsKLSsKLSsvKgotKyAqIFN0YXRpc3RpY3MuCi0rICovCi0rc3RydWN0IHBwcHN0YXQJewotKyAgICB1bnNpZ25lZCBpbnQgcHBwX2lieXRlczsJLyogYnl0ZXMgcmVjZWl2ZWQgKi8KLSsgICAgdW5zaWduZWQgaW50IHBwcF9pcGFja2V0czsJLyogcGFja2V0cyByZWNlaXZlZCAqLwotKyAgICB1bnNpZ25lZCBpbnQgcHBwX2llcnJvcnM7CS8qIHJlY2VpdmUgZXJyb3JzICovCi0rICAgIHVuc2lnbmVkIGludCBwcHBfb2J5dGVzOwkvKiBieXRlcyBzZW50ICovCi0rICAgIHVuc2lnbmVkIGludCBwcHBfb3BhY2tldHM7CS8qIHBhY2tldHMgc2VudCAqLwotKyAgICB1bnNpZ25lZCBpbnQgcHBwX29lcnJvcnM7CS8qIHRyYW5zbWl0IGVycm9ycyAqLwotK307Ci0rCi0rc3RydWN0IHZqc3RhdCB7Ci0rICAgIHVuc2lnbmVkIGludCB2anNfcGFja2V0czsJLyogb3V0Ym91bmQgcGFja2V0cyAqLwotKyAgICB1bnNpZ25lZCBpbnQgdmpzX2NvbXByZXNzZWQ7IC8qIG91dGJvdW5kIGNvbXByZXNzZWQgcGFja2V0cyAqLwotKyAgICB1bnNpZ25lZCBpbnQgdmpzX3NlYXJjaGVzOwkvKiBzZWFyY2hlcyBmb3IgY29ubmVjdGlvbiBzdGF0ZSAqLwotKyAgICB1bnNpZ25lZCBpbnQgdmpzX21pc3NlczsJLyogdGltZXMgY291bGRuJ3QgZmluZCBjb25uLiBzdGF0ZSAqLwotKyAgICB1bnNpZ25lZCBpbnQgdmpzX3VuY29tcHJlc3NlZGluOyAvKiBpbmJvdW5kIHVuY29tcHJlc3NlZCBwYWNrZXRzICovCi0rICAgIHVuc2lnbmVkIGludCB2anNfY29tcHJlc3NlZGluOyAvKiBpbmJvdW5kIGNvbXByZXNzZWQgcGFja2V0cyAqLwotKyAgICB1bnNpZ25lZCBpbnQgdmpzX2Vycm9yaW47CS8qIGluYm91bmQgdW5rbm93biB0eXBlIHBhY2tldHMgKi8KLSsgICAgdW5zaWduZWQgaW50IHZqc190b3NzZWQ7CS8qIGluYm91bmQgcGFja2V0cyB0b3NzZWQgYmVjYXVzZSBvZiBlcnJvciAqLwotK307Ci0rCi0rc3RydWN0IHBwcF9zdGF0cyB7Ci0rICAgIHN0cnVjdCBwcHBzdGF0IHA7CQkvKiBiYXNpYyBQUFAgc3RhdGlzdGljcyAqLwotKyAgICBzdHJ1Y3QgdmpzdGF0IHZqOwkJLyogVkogaGVhZGVyIGNvbXByZXNzaW9uIHN0YXRpc3RpY3MgKi8KLSt9OwotKwotK3N0cnVjdCBjb21wc3RhdCB7Ci0rICAgIHVuc2lnbmVkIGludCB1bmNfYnl0ZXM7CS8qIHRvdGFsIHVuY29tcHJlc3NlZCBieXRlcyAqLwotKyAgICB1bnNpZ25lZCBpbnQgdW5jX3BhY2tldHM7CS8qIHRvdGFsIHVuY29tcHJlc3NlZCBwYWNrZXRzICovCi0rICAgIHVuc2lnbmVkIGludCBjb21wX2J5dGVzOwkvKiBjb21wcmVzc2VkIGJ5dGVzICovCi0rICAgIHVuc2lnbmVkIGludCBjb21wX3BhY2tldHM7CS8qIGNvbXByZXNzZWQgcGFja2V0cyAqLwotKyAgICB1bnNpZ25lZCBpbnQgaW5jX2J5dGVzOwkvKiBpbmNvbXByZXNzaWJsZSBieXRlcyAqLwotKyAgICB1bnNpZ25lZCBpbnQgaW5jX3BhY2tldHM7CS8qIGluY29tcHJlc3NpYmxlIHBhY2tldHMgKi8KLSsgICAgdW5zaWduZWQgaW50IHJhdGlvOwkJLyogcmVjZW50IGNvbXByZXNzaW9uIHJhdGlvIDw8IDggKi8KLSt9OwotKwotK3N0cnVjdCBwcHBfY29tcF9zdGF0cyB7Ci0rICAgIHN0cnVjdCBjb21wc3RhdCBjOwkJLyogcGFja2V0IGNvbXByZXNzaW9uIHN0YXRpc3RpY3MgKi8KLSsgICAgc3RydWN0IGNvbXBzdGF0IGQ7CQkvKiBwYWNrZXQgZGVjb21wcmVzc2lvbiBzdGF0aXN0aWNzICovCi0rfTsKLSsKLSsvKgotKyAqIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHJlY29yZHMgdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZQotKyAqIHRoZSBsYXN0IE5QIHBhY2tldCB3YXMgc2VudCBvciByZWNlaXZlZC4KLSsgKi8KLStzdHJ1Y3QgcHBwX2lkbGUgewotKyAgICB0aW1lX3QgeG1pdF9pZGxlOwkJLyogdGltZSBzaW5jZSBsYXN0IE5QIHBhY2tldCBzZW50ICovCi0rICAgIHRpbWVfdCByZWN2X2lkbGU7CQkvKiB0aW1lIHNpbmNlIGxhc3QgTlAgcGFja2V0IHJlY2VpdmVkICovCi0rfTsKLSsKLSsjaWZuZGVmIF9fUAotKyNpZmRlZiBfX1NURENfXwotKyNkZWZpbmUgX19QKHgpCXgKLSsjZWxzZQotKyNkZWZpbmUgX19QKHgpCSgpCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9QUFBfREVGU19IXyAqLwotZGlmZiAtLWdpdCBhL3VzbC91c2wuaCBiL3VzbC91c2wuaAotaW5kZXggY2RjMTZkYi4uODhkMjcxNCAxMDA2NDQKLS0tLSBhL3VzbC91c2wuaAotKysrIGIvdXNsL3VzbC5oCitJbmRleDogaXBwb29sLTEuMy91c2wvdXNsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBpcHBvb2wtMS4zLm9yaWcvdXNsL3VzbC5oCisrKysgaXBwb29sLTEuMy91c2wvdXNsLmgKIEBAIC0zOCw2ICszOCwxMCBAQAogICNpbmNsdWRlICJ1c2xfZnNtLmgiCiAgI2luY2x1ZGUgInVzbF9saXN0LmgiCkBAIC0yNzgsNiArNzgsMyBAQAogICNkZWZpbmUgVVNMX1ZFUlNJT04JIjAuNiIKICAKICAjaWZkZWYgREVCVUcKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbF8xLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lwcG9vbC9pcHBvb2xfMS4zLmJiCmluZGV4IDZlNDc0ODMuLjZmYTQ2OTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXBwb29sL2lwcG9vbF8xLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pcHBvb2wvaXBwb29sXzEuMy5iYgpAQCAtMjQsOCArMjQsNiBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWFkLXJldHVybnMtc3NpemVfdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1hcmstZmlyc3QtZWxlbWVudC1vZi1hLXN0cmluZy1hcy1udWxsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtY2xpLU1hcmstcmV0dXJuLW9mLXN0cnRvbC1hcy1sb25nLWludC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpbmstd2l0aC1saWJ0aXJwYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW11c2wtZml4ZXMucGF0Y2ggXAogICAgICAgICAgICAiCkBAIC0zNiw4ICszNCw3IEBACiAKIGluaGVyaXQgc3lzdGVtZAogCi1ERVBFTkRTID0gInJlYWRsaW5lIHBwcCBuY3Vyc2VzIGd6aXAtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKK0RFUEVORFMgPSAicmVhZGxpbmUgcHBwIG5jdXJzZXMgZ3ppcC1uYXRpdmUgcnBjc3ZjLXByb3RvLW5hdGl2ZSBsaWJ0aXJwYyIKIFJERVBFTkRTXyR7UE59ID0gInJwY2JpbmQiCiAKIEVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIEFTPScke0FTfScgTEQ9JyR7TER9JyBBUj0nJHtBUn0nIE5NPScke05NfScgU1RSSVA9JyR7U1RSSVB9JyIKQEAgLTQ1LDggKzQyLDcgQEAKICMgZW5hYmxlIHNlbGYgdGVzdHMKIEVYVFJBX09FTUFLRSArPSAiSVBQT09MX1RFU1Q9eSIKIAotQ1BQRkxBR1MgKz0gIiR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKLUNQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitDUFBGTEFHUyArPSAiJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcHBvb2wuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtbGlib3BlbmlzY3NpdXNyLUluY2x1ZGUtbGltaXQuaC1mb3ItUEFUSF9NQVgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAxLWxpYm9wZW5pc2NzaXVzci1JbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWUxYmVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtbGlib3BlbmlzY3NpdXNyLUluY2x1ZGUtbGltaXQuaC1mb3ItUEFUSF9NQVgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIGNmZWU1OGQ1ODYzYTUzNWI2MWFhNTQ2OTBhZTIwNWI4NzZmNTc5NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIyOjUzOjI5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBsaWJvcGVuaXNjc2l1c3I6IEluY2x1ZGUgbGltaXQuaCBmb3IgUEFUSF9NQVgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYm9wZW5pc2NzaXVzci9pZmFjZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJvcGVuaXNjc2l1c3IvaWZhY2UuYyBiL2xpYm9wZW5pc2NzaXVzci9pZmFjZS5jCi1pbmRleCA3OTg5OGRmLi5hNDhlZjM2IDEwMDY0NAotLS0tIGEvbGlib3BlbmlzY3NpdXNyL2lmYWNlLmMKLSsrKyBiL2xpYm9wZW5pc2NzaXVzci9pZmFjZS5jCi1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgImxpYm9wZW5pc2NzaXVzci9saWJvcGVuaXNjc2l1c3IuaCIKLSAjaW5jbHVkZSAibWlzYy5oIgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMS1xZWRpLmMtUmVtb3ZlZC11bnVzZWQtbGludXgtZXRodG9vbC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMS1xZWRpLmMtUmVtb3ZlZC11bnVzZWQtbGludXgtZXRodG9vbC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzRhYTUwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDEtcWVkaS5jLVJlbW92ZWQtdW51c2VkLWxpbnV4LWV0aHRvb2wuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb20gMTk3NzEzYWQ3ZTNlOTQ0MTAyYmJkNzkyZTFhYjllYzRhNjcxMDBjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIgRmViIDIwMTggMjM6MjU6MjEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIHFlZGkuYzogUmVtb3ZlZCB1bnVzZWQgbGludXgvZXRodG9vbC5oCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpc2NzaXVpby9zcmMvdW5peC9saWJzL3FlZGkuYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pc2NzaXVpby9zcmMvdW5peC9saWJzL3FlZGkuYyBiL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvcWVkaS5jCi1pbmRleCBiODFmZWNkLi4yNGNiODlhIDEwMDY0NAotLS0tIGEvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9xZWRpLmMKLSsrKyBiL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvcWVkaS5jCi1AQCAtNDksNyArNDksNiBAQAotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgotLSNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAyLWlkYm0uYy1JbmNsdWRlLWZjbmwuaC1mb3ItT19SRFdSLWFuZC1PX0NSRUFULWRlZmluaXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAyLWlkYm0uYy1JbmNsdWRlLWZjbmwuaC1mb3ItT19SRFdSLWFuZC1PX0NSRUFULWRlZmluaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlY2VkZTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvZmlsZXMvMDAwMi1pZGJtLmMtSW5jbHVkZS1mY25sLmgtZm9yLU9fUkRXUi1hbmQtT19DUkVBVC1kZWZpbml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSAyYjM5Zjg1ZGNmMDIwNjQ3NTQ0MDAyY2IwYjBlNzM0NzQ4MzkxZGZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMiBGZWIgMjAxOCAyMzoyNzoyNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDIvNF0gaWRibS5jOiBJbmNsdWRlIGZjbmwuaCBmb3IgT19SRFdSIGFuZCBPX0NSRUFUIGRlZmluaXRpb25zCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1c3IvaWRibS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS91c3IvaWRibS5jIGIvdXNyL2lkYm0uYwotaW5kZXggNTUzMjIwMi4uMGE1MWI4NSAxMDA2NDQKLS0tLSBhL3Vzci9pZGJtLmMKLSsrKyBiL3Vzci9pZGJtLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDItbGlib3BlbmlzY3NpdXNyLUFkZC1DRkxBR1MtdG8tbGlua2VyLWNtZGxpbmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAyLWxpYm9wZW5pc2NzaXVzci1BZGQtQ0ZMQUdTLXRvLWxpbmtlci1jbWRsaW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzZlZDYwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDItbGlib3BlbmlzY3NpdXNyLUFkZC1DRkxBR1MtdG8tbGlua2VyLWNtZGxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDI5NTcxZjcxNjkyZTI4Y2U5YTE3ZDE0NTAwOTdhOTg0OTJmM2I0NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIyOjU0OjA0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBsaWJvcGVuaXNjc2l1c3I6IEFkZCBDRkxBR1MgdG8gbGlua2VyIGNtZGxpbmUKLQotVGhpcyB3aWxsIGVuc3VyZSB0aGF0IC1mUElDIGlzIHBhc3NlZCB0byBsaW5rZXIgYXMKLXdlbGwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYm9wZW5pc2NzaXVzci9NYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZSBiL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZQotaW5kZXggOGI5YjUyMy4uNGYxZDBkNiAxMDA2NDQKLS0tLSBhL2xpYm9wZW5pc2NzaXVzci9NYWtlZmlsZQotKysrIGIvbGlib3BlbmlzY3NpdXNyL01ha2VmaWxlCi1AQCAtNDksNyArNDksNyBAQCBMSUJBREQgPQotIGFsbDogJChMSUJTKSAkKExJQlNfTUFKT1IpICQoVEVTVFMpIGRvYwotIAotICQoTElCUyk6ICQoT0JKUykKLS0JJChDQykgJChMREZMQUdTKSAtc2hhcmVkIC1XbCwtc29uYW1lPSRAIC1vICRAICQoT0JKUykgJChMSUJBREQpCi0rCSQoQ0MpICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1zaGFyZWQgLVdsLC1zb25hbWU9JEAgLW8gJEAgJChPQkpTKSAkKExJQkFERCkKLSAJbG4gLXNmICRAICQoREVWTElCKQotIAotICQoTElCU19NQUpPUik6ICQoTElCUykKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDMtYm54MnguYy1SZW9yZGVyLXRoZS1pbmNsdWRlcy10by1hdm9pZC1kdXBsaWNhdGUtZGVmaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDMtYm54MnguYy1SZW9yZGVyLXRoZS1pbmNsdWRlcy10by1hdm9pZC1kdXBsaWNhdGUtZGVmaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNlMTU1Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDAzLWJueDJ4LmMtUmVvcmRlci10aGUtaW5jbHVkZXMtdG8tYXZvaWQtZHVwbGljYXRlLWRlZmkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDliN2EzMjkwM2I1NmNlNGQ0MWYyNjRhMzQ1Y2E1OWEwYjAwZDUzYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIzOjI4OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBibngyeC5jOiBSZW9yZGVyIHRoZSBpbmNsdWRlcyB0byBhdm9pZCBkdXBsaWNhdGUgZGVmaW5lcwotIHdpdGggbXVzbAotCi1pbmNsdWRpbmcgbmljLmggYmVmb3JlIGxpbnV4L2V0aHRvb2wuaCBhdm9pZHMgcmVkZWZpbml0aW9ucyBvZgotZXRoIHN0cnVjdHMKLQotL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1tdXNsZWFiaS9pc2NzaS1pbml0aWF0b3ItdXRpbHMvMi4wLjg3Ni1yMC9yZWNpcGUtc3lzcm9vdC8KLXVzci9pbmNsdWRlL25ldGluZXQvaWZfZXRoZXIuaDoxMDQ6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKLSBzdHJ1Y3QgZXRoaGRyIHsKLSAgICAgICAgXn5+fn5+Ci1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1tdXNsZWFiaS9pc2NzaS1pbml0aWF0b3ItdXRpbHMvMi4wLgotODc2LXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2xpbnV4L2V0aHRvb2wuaDoxOTowLAotICAgICAgICAgICAgICAgICBmcm9tIHFlZGkuYzo1MjoKLS9tbnQvYS9vZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC1iZWMtbGludXgtbXVzbGVhYmkvaXNjc2ktaW5pdGlhdG9yLXV0aWxzLzIuMC44NzYtcjAvcmVjaXBlLXN5c3Jvb3QvCi11c3IvaW5jbHVkZS9saW51eC9pZl9ldGhlci5oOjE1NDo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQotIHN0cnVjdCBldGhoZHIgewotICAgICAgICBefn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGlzY3NpdWlvL3NyYy91bml4L2xpYnMvYm54MnguYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvYm54MnguYyBiL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvYm54MnguYwotaW5kZXggM2RmNmQ1Zi4uNjI1MzBkMSAxMDA2NDQKLS0tLSBhL2lzY3NpdWlvL3NyYy91bml4L2xpYnMvYm54MnguYwotKysrIGIvaXNjc2l1aW8vc3JjL3VuaXgvbGlicy9ibngyeC5jCi1AQCAtMzYsNiArMzYsNyBAQAotICAqIGJueDJ4LmMgLSBibngyeCB1c2VyIHNwYWNlIGRyaXZlcgotICAqCi0gICovCi0rI2luY2x1ZGUgIm5pYy5oIgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLUBAIC01OCw3ICs1OSw2IEBACi0gI2luY2x1ZGUgImJueDJ4LmgiCi0gI2luY2x1ZGUgImNuaWMuaCIKLSAjaW5jbHVkZSAibG9nZ2VyLmgiCi0tI2luY2x1ZGUgIm5pYy5oIgotICNpbmNsdWRlICJuaWNfaWQuaCIKLSAjaW5jbHVkZSAibmljX3V0aWxzLmgiCi0gI2luY2x1ZGUgIm9wdGlvbnMuaCIKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDQtZndwYXJhbV9wcGMuYy1Eby1ub3QtdXNlLV9fY29tcGFyX2ZuX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9maWxlcy8wMDA0LWZ3cGFyYW1fcHBjLmMtRG8tbm90LXVzZS1fX2NvbXBhcl9mbl90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2JkYzhjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2ZpbGVzLzAwMDQtZndwYXJhbV9wcGMuYy1Eby1ub3QtdXNlLV9fY29tcGFyX2ZuX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDZmOWMxYTA0ZDI1MDM4OGQxNTc0Y2ZhZjIwYTFmZjY2YTY0YmViNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIEZlYiAyMDE4IDIzOjQyOjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBmd3BhcmFtX3BwYy5jOiBEbyBub3QgdXNlIF9fY29tcGFyX2ZuX3QKLQotX19jb21wYXJfZm5fdCBpcyBub3QgZGVmaW5lZCBpbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1dGlscy9md3BhcmFtX2liZnQvZndwYXJhbV9wcGMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3V0aWxzL2Z3cGFyYW1faWJmdC9md3BhcmFtX3BwYy5jIGIvdXRpbHMvZndwYXJhbV9pYmZ0L2Z3cGFyYW1fcHBjLmMKLWluZGV4IGMyOThiOGMuLjM5MWZhYTIgMTAwNjQ0Ci0tLS0gYS91dGlscy9md3BhcmFtX2liZnQvZndwYXJhbV9wcGMuYwotKysrIGIvdXRpbHMvZndwYXJhbV9pYmZ0L2Z3cGFyYW1fcHBjLmMKLUBAIC0zNTYsNyArMzU2LDcgQEAgc3RhdGljIGludCBsb29wX2RldnMoY29uc3QgY2hhciAqZGV2dHJlZSkKLSAJICogU29ydCB0aGUgbmljcyBpbnRvICJuYXR1cmFsIiBvcmRlci4JVGhlIHByb2MgZnMKLSAJICogZGV2aWNlLXRyZWUgaGFzIHRoZW0gaW4gc29tZXdoYXQgcmFuZG9tLCBvciByZXZlcnNlZCBvcmRlci4KLSAJICovCi0tCXFzb3J0KG5pY2xpc3QsIG5pY19jb3VudCwgc2l6ZW9mKGNoYXIgKiksIChfX2NvbXBhcl9mbl90KW5pY19jbXApOwotKwlxc29ydChuaWNsaXN0LCBuaWNfY291bnQsIHNpemVvZihjaGFyICopLCBuaWNfY21wKTsKLSAKLSAJc25wcmludGYocHJlZml4LCBzaXplb2YocHJlZml4KSwgIiVzLyVzIiwgZGV2dHJlZSwgImFsaWFzZXMiKTsKLSAJZGV2X2NvdW50ID0gMDsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMC44NzYuYmIKaW5kZXggODIzMjI3Yy4uZTZhODdhMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMC44NzYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMC44NzYuYmIKQEAgLTExLDI1ICsxMSwyMSBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKIAotU1JDUkVWID89ICIyNDU4MGFkYzRjMTc0YmJjNWRkZTNhZTc1OTRhNDZkNTc2MzVlOTA2IgorU1JDUkVWID89ICJiZDc5ZTRlZDEwMDRhNjAzNWQyNTM4YTMwOGM1OTMwODkwNDIxYTIyIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9vcGVuLWlzY3NpIFwKLSAgICBmaWxlOi8vaW5pdGQuZGViaWFuIFwKLSAgICBmaWxlOi8vOTlfaXNjc2ktaW5pdGlhdG9yLXV0aWxzIFwKLSAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yIFwKLSAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgXAotICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3ItdGFyZ2V0cy5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vc2V0X2luaXRpYXRvcm5hbWUgXAotICAgIGZpbGU6Ly8wMDAxLWxpYm9wZW5pc2NzaXVzci1JbmNsdWRlLWxpbWl0LmgtZm9yLVBBVEhfTUFYLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJvcGVuaXNjc2l1c3ItQWRkLUNGTEFHUy10by1saW5rZXItY21kbGluZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtcWVkaS5jLVJlbW92ZWQtdW51c2VkLWxpbnV4LWV0aHRvb2wuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItaWRibS5jLUluY2x1ZGUtZmNubC5oLWZvci1PX1JEV1ItYW5kLU9fQ1JFQVQtZGVmaW5pdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYm54MnguYy1SZW9yZGVyLXRoZS1pbmNsdWRlcy10by1hdm9pZC1kdXBsaWNhdGUtZGVmaS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtZndwYXJhbV9wcGMuYy1Eby1ub3QtdXNlLV9fY29tcGFyX2ZuX3QucGF0Y2ggXAotIgorICAgICAgICAgICBmaWxlOi8vaW5pdGQuZGViaWFuIFwKKyAgICAgICAgICAgZmlsZTovLzk5X2lzY3NpLWluaXRpYXRvci11dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3IgXAorICAgICAgICAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zZXRfaW5pdGlhdG9ybmFtZSBcCisgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBCID0gIiR7V09SS0RJUn0vYnVpbGQiCiAKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCisKIGluaGVyaXQgdXBkYXRlLXJjLmQgc3lzdGVtZCBhdXRvdG9vbHMKIAogRVhUUkFfT0VDT05GID0gIiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuNC4yLmJiCmluZGV4IDM2NDE3YjcuLjMxYzUwZmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuNC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMva2VlcGFsaXZlZC9rZWVwYWxpdmVkXzEuNC4yLmJiCkBAIC0xNiw3ICsxNiw3IEBACiAKIERFUEVORFMgPSAibGlibmZuZXRsaW5rIG9wZW5zc2wiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAogCiBQQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCkBAIC00MSw4ICs0MSw1IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCiAKLUlOSVRTQ1JJUFRfTkFNRSA9ICJrZWVwYWxpdmVkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAicmVtb3ZlIgotCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAia2VlcGFsaXZlZC5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmV0d29ya2QtZGlzcGF0Y2hlci9uZXR3b3JrZC1kaXNwYXRjaGVyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9uZXR3b3JrZC1kaXNwYXRjaGVyL25ldHdvcmtkLWRpc3BhdGNoZXIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwYTkzOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvbmV0d29ya2QtZGlzcGF0Y2hlci9uZXR3b3JrZC1kaXNwYXRjaGVyLmJiCkBAIC0wLDAgKzEsMzQgQEAKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBmZWF0dXJlcyA9IGQuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnKQorICAgIGlmIG5vdCBmZWF0dXJlcyBvciAnc3lzdGVtZCcgbm90IGluIGZlYXR1cmVzOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgnbmV0d29ya2QtZGlzcGF0Y2hlciBuZWVkcyBzeXN0ZW1kIGluIERJU1RST19GRUFUVVJFUycpCit9CisKK1NVTU1BUlkgPSAiRGlzcGF0Y2hlciBzZXJ2aWNlIGZvciBzeXN0ZW1kLW5ldHdvcmtkIGNvbm5lY3Rpb24gc3RhdHVzIGNoYW5nZXMiCitERVNDUklQVElPTiA9ICJUaGlzIGRhZW1vbiBpcyBzaW1pbGFyIHRvIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIsIGJ1dCBpcyBtdWNoIFwKK21vcmUgbGltaXRlZCBpbiB0aGUgdHlwZXMgb2YgZXZlbnRzIGl0IHN1cHBvcnRzIGR1ZSB0byB0aGUgbGltaXRlZCBuYXR1cmUgb2YgXAorc3lzdGVtZC1uZXR3b3JrZCg4KS4iCitBVVRIT1IgPSAiQ2xheXRvbiBDcmFmdCBhbmQgb3RoZXJzIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODRkY2M5NGRhM2FkYjUyYjUzYWU0ZmEzOGZlNDllNWQiCisKK1JERVBFTkRTXyR7UE59ID0gInN5c3RlbWQgcHl0aG9uMyBweXRob24zLXB5Z29iamVjdCBweXRob24zLWRidXMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9jcmFmdHlndXkvbmV0d29ya2QtZGlzcGF0Y2hlci5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNSRVYgPSAiYzdlMjU2MjNhMTYxYjY0NjE4ZWE3Nzg1NDFjMDY0ZDJhMWRmMDg2YiIKK1BWID0gIjEuNytnaXQke1NSQ1BWfSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBOb3RoaW5nIHRvIGJ1aWxkLCBqdXN0IGEgcHl0aG9uIHNjcmlwdCB0byBpbnN0YWxsCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vbmV0d29ya2QtZGlzcGF0Y2hlciAke0R9JHtzYmluZGlyfS9uZXR3b3JrZC1kaXNwYXRjaGVyCisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vbmV0d29ya2QtZGlzcGF0Y2hlci5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9uZXR3b3JrZC1kaXNwYXRjaGVyLnNlcnZpY2UKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9uZXR3b3JrZC1kaXNwYXRjaGVyLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2NvbmYuZC9uZXR3b3JrZC1kaXNwYXRjaGVyLmNvbmYKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbmV0d29ya2QtZGlzcGF0Y2hlci5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRG8tbm90LXBva2UtYXQtYnVpbGQtaG9zdC1zLWV0Yy1vcy1yZWxlYXNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRG8tbm90LXBva2UtYXQtYnVpbGQtaG9zdC1zLWV0Yy1vcy1yZWxlYXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiOWIyNWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1Eby1ub3QtcG9rZS1hdC1idWlsZC1ob3N0LXMtZXRjLW9zLXJlbGVhc2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAyYmM1YzYzNjdhN2Y3MGNhNWJmZjE3N2VjOTViY2FkM2IxYzJiNjZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNiBTZXAgMjAxOCAxODoxNToxMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgcG9rZSBhdCBidWlsZCBob3N0J3MgL2V0Yy9vcy1yZWxlYXNlCisKK0R1cmluZyBjcm9zcyBjb21waWxlIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRhcmdldCBkaXN0cm8gYW5kIG5vdCBob3N0CitkaXN0cm8gdGhlcmVmb3JlIGRvIG5vdCBjaGVjayBmb3IgaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ3Jvc3MgY29tcGlsZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IG9wZW5ocGktMy44LjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjguMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW5ocGktMy44LjAvY29uZmlndXJlLmFjCitAQCAtMTk0LDcgKzE5NCw2IEBAIEFDX1NVQlNUKEpTT05fQ19MSUIpCisgQUNfU1VCU1QoSlNPTl9DX0lOQ0xVREUpCisgQUNfQ0hFQ0tfTElCKFtyYWJiaXRtcV0sW2FtcXBfbmV3X2Nvbm5lY3Rpb25dLFtSQUJCSVRNUV9MSUI9LWxyYWJiaXRtcV0sW1JBQkJJVE1RX0xJQj1dKQorIEFDX1NVQlNUKFJBQkJJVE1RX0xJQikKKy1BQ19DSEVDS19GSUxFKFsvZXRjL29zLXJlbGVhc2VdLFtESVNUUk89YGdyZXAgIl5JRD0iIC9ldGMvb3MtcmVsZWFzZSB8IGF3ayAtRiJcIiIgJ3sgcHJpbnQgJDIgfSdgXSkKKyAKKyBBQ19DSEVDS19IRUFERVJTKFthbXFwLmhdLFtoYXZlX3JhYmJpdG1xPXllc10sW2hhdmVfcmFiYml0bXE9bm9dKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLUZpeC1idWlsZC1mYWlsdXJlcy13aXRoLWdjYzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNDkzZjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMzk4YzZkYjY2YzY0M2VkNjEzM2NjMmIwMjhhYjFlMjdhMTdjNTI5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEgTWF5IDIwMTcgMTk6MTA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIGZhaWx1cmVzIHdpdGggZ2NjNwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcCB8IDIgKy0KLSBwbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9tY192ZW5kb3IuY3BwIGIvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfbWNfdmVuZG9yLmNwcAotaW5kZXggMmM2YzA5MC4uNTU3NzcxYyAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX21jX3ZlbmRvci5jcHAKLSsrKyBiL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX21jX3ZlbmRvci5jcHAKLUBAIC0zMjIsNyArMzIyLDcgQEAgY0lwbWlNY1ZlbmRvcjo6Q3JlYXRlUmVzb3VyY2VzKCBjSXBtaURvbWFpbiAqZG9tYWluLCBjSXBtaU1jICpzb3VyY2VfbWMsIGNJcG1pU2QKLSAgICAgICBpZiAoIGFkZHIubV9jaGFubmVsICE9IHNvdXJjZV9tYy0+R2V0Q2hhbm5lbCgpICkgCi0gICAgICAgICAgIHN0ZGxvZyA8PCAiV0FSTklORyA6IFNEUiBjaGFubmVsICIgPDwgYWRkci5tX2NoYW5uZWwgPDwgIiBOT1QgZXF1YWwgdG8gTUMgY2hhbm5lbCAiIDw8IHNvdXJjZV9tYy0+R2V0Q2hhbm5lbCgpIDw8ICJcbiI7Ci0gCi0tICAgICAgIGlmICggRmluZE9yQ3JlYXRlUmVzb3VyY2UoIGRvbWFpbiwgc291cmNlX21jLCBmcnVfaWQsIHNkciwgc2RycyApID09IGZhbHNlICkgewotKyAgICAgICBpZiAoICFGaW5kT3JDcmVhdGVSZXNvdXJjZSggZG9tYWluLCBzb3VyY2VfbWMsIGZydV9pZCwgc2RyLCBzZHJzICkgKSB7Ci0gCSAgICByZXR1cm4gZmFsc2U7Ci0gCX0KLSAgICAgIH0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAgYi9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAKLWluZGV4IGM0MzhlNzQuLjI1NTI2NzMgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9yZXNvdXJjZS5jcHAKLSsrKyBiL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX3Jlc291cmNlLmNwcAotQEAgLTczLDcgKzczLDcgQEAgY0lwbWlSZXNvdXJjZTo6U2VuZENvbW1hbmRSZWFkTG9jayggY29uc3QgY0lwbWlNc2cgJm1zZywgY0lwbWlNc2cgJnJzcCwKLSAKLSAgIGRvbWFpbi0+UmVhZExvY2soKTsKLSAKLS0gIGlmICggZG9tYWluLT5WZXJpZnlSZXNvdXJjZSggcmVzb3VyY2UgKSA9PSBmYWxzZSApCi0rICBpZiAoICFkb21haW4tPlZlcmlmeVJlc291cmNlKCByZXNvdXJjZSApICkKLSAgICAgICAgcmV0dXJuIFNBX0VSUl9IUElfTk9UX1BSRVNFTlQ7Ci0gCi0gICByZXR1cm4gcnY7Ci1AQCAtOTEsNyArOTEsNyBAQCBjSXBtaVJlc291cmNlOjpTZW5kQ29tbWFuZFJlYWRMb2NrKCBjSXBtaVJkciAqcmRyLCBjb25zdCBjSXBtaU1zZyAmbXNnLCBjSXBtaU1zZwotICAgCi0gICBkb21haW4tPlJlYWRMb2NrKCk7Ci0gICAKLS0gIGlmICggZG9tYWluLT5WZXJpZnlSZHIoIHJkciApID09IGZhbHNlICkKLSsgIGlmICggIWRvbWFpbi0+VmVyaWZ5UmRyKCByZHIgKSApCi0gICAgICAgIHJldHVybiBTQV9FUlJfSFBJX05PVF9QUkVTRU5UOwotIAotICAgcmV0dXJuIHJ2OwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1pbmNsdWRlLWlvc3RyZWFtLWZvci1jb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaW5jbHVkZS1pb3N0cmVhbS1mb3ItY291dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzhlYzI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaW5jbHVkZS1pb3N0cmVhbS1mb3ItY291dC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDhmNDdhZGMzYjkwODVkNTg5ZTYyY2I1ZWI1NjBkZDIzYTcwMzAzNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA4IFNlcCAyMDE4IDEyOjQ3OjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgaW9zdHJlYW0gZm9yIGNvdXQKKworRW5kIGNvdXQgd2l0aCBlbmRsCisKK0ZpeGVzCitwbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHA6MjQxOjM6IGVycm9yOiAnY291dCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICBjb3V0PDwiUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAgaXMgRGVmaW5lZCIKKyAgIF5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwIGIvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCitpbmRleCBiOTcxNTAyLi42MWVhZjQyIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCisrKysgYi9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAKK0BAIC0yNiw3ICsyNiw3IEBACisgICovCisgCisgI2luY2x1ZGUgInRocmVhZC5oIgorLSNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxpb3N0cmVhbT4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKK0BAIC0yMzgsNyArMjM4LDcgQEAgY1RocmVhZExvY2s6OmNUaHJlYWRMb2NrKCkKKyAgIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoICZhdHRyLCBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSApOworICAgcHRocmVhZF9tdXRleF9pbml0KCAmbV9sb2NrLCAmYXR0ciApOworICAgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSggJmF0dHIgKTsKKy0gIGNvdXQ8PCJQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUCBpcyBEZWZpbmVkIgorKyAgc3RkOjpjb3V0PDwiUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAgaXMgRGVmaW5lZCI8PHN0ZDo6ZW5kbDsKKyB9CisgI2Vsc2UKKyBzdGF0aWMgcHRocmVhZF9tdXRleF90IGxvY2tfdG1wbCA9IFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDU2ZjY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLWlwbWlkaXJlY3QtUmVwbGFjZS1fX1NUUklORy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYmU0MGIzZjExNDYwY2Y0OTViYmJlZjQ1NjkyZTc3NjNhZmRhMGMyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE0IFNlcCAyMDE3IDE3OjU2OjMxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwbWlkaXJlY3Q6IFJlcGxhY2UgX19TVFJJTkcKLQotX19TVFJJTkcgaXMgbm90IHVuaXZlcnNhbGx5IGF2YWlsYWJsZSBlLmcuCi1tdXNsIGRvZXMgbm90IGRlZmluZSBpdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHBsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaCBiL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaAotaW5kZXggOGQ3MTM4MS4uOTc4ZDVmZiAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvaXBtaWRpcmVjdC90L3Rlc3QuaAotKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3QvdGVzdC5oCi1AQCAtMjIsNyArMjIsNyBAQCBUZXN0RnVuY3Rpb24oIGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGJvb2wgZXhwciApCi0gfQotIAotIAotLSNkZWZpbmUgVGVzdChleHByKSBUZXN0RnVuY3Rpb24oIF9fU1RSSU5HKGV4cHIpLCBfX0ZJTEVfXywgX19MSU5FX18sIGV4cHIgKQotKyNkZWZpbmUgVGVzdChleHByKSBUZXN0RnVuY3Rpb24oICNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIGV4cHIgKQotIAotIAotIHN0YXRpYyBpbnQKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLXBsdWdpbnMtQ2hlY2stZm9yLVBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1wbHVnaW5zLUNoZWNrLWZvci1QVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjAzM2FjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy8wMDAxLXBsdWdpbnMtQ2hlY2stZm9yLVBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIGJlNjY1ZDk1MTNjY2E3ZThiNjRjNzlhZTQyNGNmNDRhYzE2NmIwNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAxNzowNzo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBwbHVnaW5zOiBDaGVjayBmb3IgUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAKLSBiZWZvcmUgdXNlCi0KLW11c2wgZG9lcyBub3QgZGVmaW5lIFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QCi1zbyB3ZSBjYW4gbm90IGFzc3VtZSB0aGF0IGFsbCBMaW51eCBzeXN0ZW1zIHN1cHBvcnQgUFRIUkVBRF9SRUNVUlNJVkVfTVVURVhfSU5JVElBTElaRVJfTlAKLWl0cyBhIGdsaWJjIHNwZWNpZmljIGRlZmluZSBzbyBjaGVjayBmb3IgaXQgYmVpbmcgZGVmaW5lZCBiZWZvcmUgdXNpbmcgaXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAgfCAyICstCi0gcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwIGIvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCi1pbmRleCBkNjYzYmUwLi45MjEwZmQ3IDEwMDY0NAotLS0tIGEvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci90aHJlYWQuY3BwCi0rKysgYi9wbHVnaW5zL2R5bmFtaWNfc2ltdWxhdG9yL3RocmVhZC5jcHAKLUBAIC0yMjksNyArMjI5LDcgQEAgY1RocmVhZDo6RXhpdCggdm9pZCAqcnYgKQotIC8qKgotICAqIENvbnN0cnVjdG9yCi0gICoqLwotLSNpZiAoIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KSApIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCi0rI2lmbmRlZiBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAotIGNUaHJlYWRMb2NrOjpjVGhyZWFkTG9jaygpCi0gewotICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOwotZGlmZiAtLWdpdCBhL3BsdWdpbnMvaXBtaWRpcmVjdC90aHJlYWQuY3BwIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAKLWluZGV4IDVjNTI1NTcuLjQ4ZTgzZmEgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL2lwbWlkaXJlY3QvdGhyZWFkLmNwcAotKysrIGIvcGx1Z2lucy9pcG1pZGlyZWN0L3RocmVhZC5jcHAKLUBAIC0xNjcsNyArMTY3LDcgQEAgY1RocmVhZDo6RXhpdCggdm9pZCAqcnYgKQotIC8vICAgICAgICAgICAgICAgICAgY1RocmVhZExvY2sKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIAotLSNpZiAoIGRlZmluZWQoX19zdW4pICYmIGRlZmluZWQoX19TVlI0KSApIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCi0rI2lmbmRlZiBQVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFUl9OUAotIGNUaHJlYWRMb2NrOjpjVGhyZWFkTG9jaygpCi0gewotICAgcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtc2Vzc2lvbi1jbG9zZS1zb2NrZXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvMDAwMS1zZXNzaW9uLWNsb3NlLXNvY2tldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2VmZDU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzLzAwMDEtc2Vzc2lvbi1jbG9zZS1zb2NrZXQucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBiOGJjNmJmZGI1ZTdmYjViNDZkM2E4MzBlMDQ2MzI5MzliZWU2Yjk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDkgRmViIDIwMTggMTY6MzU6MTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gc2FIcGlTZXNzaW9uQ2xvc2U6IGNsb3NlIHNvY2tldAorCitzYUhwaVNlc3Npb25DbG9zZSBsZWFrcyBmaWxlIGRlc2NyaXB0b3JzCisKK1Vwc3RyZWFtIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vb3Blbi1ocGkvb3BlbmhwaS9pc3N1ZXMvMTkxOAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBiYXNlbGliL3Nlc3Npb24uY3BwIHwgNiArKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9iYXNlbGliL3Nlc3Npb24uY3BwIGIvYmFzZWxpYi9zZXNzaW9uLmNwcAoraW5kZXggYzVlZGZjOC4uNGVjZTFiNyAxMDA2NDQKKy0tLSBhL2Jhc2VsaWIvc2Vzc2lvbi5jcHAKKysrKyBiL2Jhc2VsaWIvc2Vzc2lvbi5jcHAKK0BAIC0xMjYsNiArMTI2LDEyIEBAIGNTZXNzaW9uOjpjU2Vzc2lvbigpCisgCisgY1Nlc3Npb246On5jU2Vzc2lvbigpCisgeworKwljQ2xpZW50U3RyZWFtU29jayAqIHNvY2s7CisrCWdwb2ludGVyIHB0ciA9IHdyYXBfZ19zdGF0aWNfcHJpdmF0ZV9nZXQoICZtX3NvY2tldHMgKTsKKysJaWYgKCBwdHIgKSB7CisrCSAgICBzb2NrID0gcmVpbnRlcnByZXRfY2FzdDxjQ2xpZW50U3RyZWFtU29jayAqPihwdHIpOworKwkgICAgc29jay0+Q2xvc2UoKTsKKysJfQorICAgICB3cmFwX2dfc3RhdGljX3ByaXZhdGVfZnJlZSggJm1fc29ja2V0cyApOworIH0KKyAKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jKysxMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jKysxMS5wYXRjaAppbmRleCAwNTQ5ZDU5Li41ZWZmODZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvYysrMTEucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2MrKzExLnBhdGNoCkBAIC0xLDExICsxLDIxIEBACi1JbmRleDogb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgb3BlbmhwaS0zLjYuMS9jb25maWd1cmUuYWMKLUBAIC00NCw2ICs0NCw3IEBAIEFDX1BST0dfQ1BQCi0gQUNfUFJPR19JTlNUQUxMCi0gQUNfUFJPR19MTl9TCitGcm9tIGVkNTExNjhkZmQ2ODQ0ZGVlYWViZjdkNWY2YzY1ODk4YWFmYjYyOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyNyBBdWcgMjAxNyAxMjoxMjowNCAtMDcwMAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzI5YTMxZi4uZjdmZTBmNyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDYsNiArNDYsNyBAQCBBQ19QUk9HX0xOX1MKICBBQ19QUk9HX01BS0VfU0VUCisgQUNfUFJPR19BV0sKKyBBQ19QUk9HX0dSRVAKICtBWF9DWFhfQ09NUElMRV9TVERDWFhfMTEoW25vZXh0XSxbbWFuZGF0b3J5XSkKICAKICBlbmFibGVkX25vbjMyYml0PSJubyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jbGFuZy1jKysxMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jbGFuZy1jKysxMS5wYXRjaAppbmRleCA5YjM1YTBjLi43OTU4YTA3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvY2xhbmctYysrMTEucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2NsYW5nLWMrKzExLnBhdGNoCkBAIC0xLDMgKzEsNyBAQAorU3VwcG9ydCBidWlsZCB3aXRoIENsYW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIEluZGV4OiBvcGVuaHBpLTMuNi4xL3BsdWdpbnMvZHluYW1pY19zaW11bGF0b3IvbmV3X3NpbS5jcHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBvcGVuaHBpLTMuNi4xLm9yaWcvcGx1Z2lucy9keW5hbWljX3NpbXVsYXRvci9uZXdfc2ltLmNwcApAQCAtMTI3MywxNiArMTI3NywzIEBACiAgCiAgc3RhdGljIFNhRXJyb3JUCiAgSXBtaVJlc2V0V2F0Y2hkb2codm9pZCAqaG5kLAotSW5kZXg6IG9wZW5ocGktMy42LjEvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfYXV0aC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbmhwaS0zLjYuMS5vcmlnL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX2F1dGguaAotKysrIG9wZW5ocGktMy42LjEvcGx1Z2lucy9pcG1pZGlyZWN0L2lwbWlfYXV0aC5oCi1AQCAtMzIsNyArMzIsNyBAQCBjbGFzcyBjSXBtaUF1dGhTZwotIHsKLSBwdWJsaWM6Ci0gICB2b2lkICpkYXRhOyAvKiBOVUxMIHRvIHRlcm1pbmF0ZS4gKi8KLS0gIGludCAgIGxlbjsKLSsgIHVuc2lnbmVkIGludCAgIGxlbjsKLSB9OwotIAotIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL2Nyb3NzXzg5OTE5OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jcm9zc184OTkxOTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE2MTE0MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9jcm9zc184OTkxOTgucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbTogSGVsbXV0IEdyb2huZSA8aGVsbXV0QHN1YmRpdmkuZGU+CitTdWJqZWN0OiBmaXggY3Jvc3MgY29tcGlsYXRpb24KKworVGhlIE9IX1NFVF9TSVpFUyBtYWNybyByZWxpZXMgb24gdGhlIHVzdWFsIGF1dG9jb25mIHNpemVvZiBjYWNoZSB2YXJpYWJsZXMKK2R1cmluZyBjcm9zcyBjb21waWxhdGlvbiwgYnV0IGl0IG5ldmVyIGVuc3VyZSB0aGF0IHRoZXkgYXJlIGluaXRpYWxpemVkLgorCitwa2ctY29uZmlnIG11c3QgYmUgY2FsbGVkIHdpdGggJGFjX3Rvb2xfcHJlZml4IGFuZCBQS0dfUFJPR19QS0dfQ09ORklHIHRha2VzCitjYXJlIG9mIHRoYXQuIFNldHRpbmcgUEtHX0NPTkZJR19QQVRIIGJyZWFrcyB0aGUgcGtnLWNvbmZpZy1jcm9zcy13cmFwcGVyLgorRG9uJ3QgZG8gdGhhdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogb3BlbmhwaS0zLjguMC9hY2luY2x1ZGUubTQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuOC4wLm9yaWcvYWNpbmNsdWRlLm00CisrKysgb3BlbmhwaS0zLjguMC9hY2luY2x1ZGUubTQKK0BAIC0yMiwzMCArMjIsMzkgQEAgQUNfREVGVU4oW09IX1NFVF9TSVpFU10sCisgCisgICAgIGlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5nIiAhPSAieG5vIjsgdGhlbgorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfVUNIQVIiID0geDsgdGhlbgorKwkgICAgQUNfQ0hFQ0tfU0laRU9GKFt1bnNpZ25lZCBjaGFyXSkKKyAgICAgICAgICAgICBPSF9TSVpFT0ZfVUNIQVI9JGFjX2N2X3NpemVvZl91Y2hhcgorICAgICAgICAgZmkKKyAgICAgICAgIGlmIHRlc3QgIngkT0hfU0laRU9GX1VTSE9SVCIgPSB4OyB0aGVuCisrCSAgICBBQ19DSEVDS19TSVpFT0YoW3Vuc2lnbmVkIHNob3J0XSkKKyAgICAgICAgICAgICBPSF9TSVpFT0ZfVVNIT1JUPSRhY19jdl9zaXplb2ZfdXNob3J0CisgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfVUlOVCIgPSB4OyB0aGVuCisrCSAgICBBQ19DSEVDS19TSVpFT0YoW3Vuc2lnbmVkIGludF0pCisgICAgICAgICAgICAgT0hfU0laRU9GX1VJTlQ9JGFjX2N2X3NpemVvZl91aW50CisgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfQ0hBUiIgPSB4OyB0aGVuCisrCSAgICBBQ19DSEVDS19TSVpFT0YoW2NoYXJdKQorICAgICAgICAgICAgIE9IX1NJWkVPRl9DSEFSPSRhY19jdl9zaXplb2ZfY2hhcgorICAgICAgICAgZmkKKyAgICAgICAgIGlmIHRlc3QgIngkT0hfU0laRU9GX1NIT1JUIiA9IHg7IHRoZW4KKysJICAgIEFDX0NIRUNLX1NJWkVPRihbc2hvcnRdKQorICAgICAgICAgICAgIE9IX1NJWkVPRl9TSE9SVD0kYWNfY3Zfc2l6ZW9mX3Nob3J0CisgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfSU5UIiA9IHg7IHRoZW4KKysJICAgIEFDX0NIRUNLX1NJWkVPRihbaW50XSkKKyAgICAgICAgICAgICBPSF9TSVpFT0ZfSU5UPSRhY19jdl9zaXplb2ZfaW50CisgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfTExPTkciID0geDsgdGhlbgorKwkgICAgQUNfQ0hFQ0tfU0laRU9GKFtsb25nIGxvbmddKQorICAgICAgICAgICAgIE9IX1NJWkVPRl9MTE9ORz0kYWNfY3Zfc2l6ZW9mX2xvbmdsb25nCisgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRPSF9TSVpFT0ZfRkxPQVQiID0geDsgdGhlbgorKwkgICAgQUNfQ0hFQ0tfU0laRU9GKFtmbG9hdF0pCisgICAgICAgICAgICAgT0hfU0laRU9GX0ZMT0FUPSRhY19jdl9zaXplb2ZfZmxvYXQKKyAgICAgICAgIGZpCisgICAgICAgICBpZiB0ZXN0ICJ4JE9IX1NJWkVPRl9ET1VCTEUiID0geDsgdGhlbgorKwkgICAgQUNfQ0hFQ0tfU0laRU9GKFtkb3VibGVdKQorICAgICAgICAgICAgIE9IX1NJWkVPRl9ET1VCTEU9JGFjX2N2X3NpemVvZl9kb3VibGUKKyAgICAgICAgIGZpCisgICAgIGVsc2UKK0luZGV4OiBvcGVuaHBpLTMuOC4wL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy44LjAub3JpZy9jb25maWd1cmUuYWMKKysrKyBvcGVuaHBpLTMuOC4wL2NvbmZpZ3VyZS5hYworQEAgLTg3LDkgKzg3LDkgQEAgaGF2ZV9ydGFzX2xpYj1ubworIAorIGRubCBDaGVjayBmb3IgR0xJQgorIAorLUFDX0NIRUNLX1BST0coW2ZvdW5kX3BrZ19jb25maWddLFtwa2ctY29uZmlnXSxbeWVzXSkKKytQS0dfUFJPR19QS0dfQ09ORklHCisgCistaWYgdGVzdCAieCRmb3VuZF9wa2dfY29uZmlnIiAhPSAieHllcyI7IHRoZW4KKytpZiB0ZXN0ICJ4JFBLR19DT05GSUciID0gIngiOyB0aGVuCisgICAgIE9IX0NIRUNLX0ZBSUwocGtnLWNvbmZpZyxwa2ctY29uZmlnKQorIGZpCisgUEtHX0NGR19TRVRQQVRICitAQCAtMTA1LDcgKzEwNSw3IEBAIEdMSUI9Z2xpYi0yLjAKKyBHVEhSRUFEPWd0aHJlYWQtMi4wCisgR01PRFVMRT1nbW9kdWxlLTIuMAorIAorLWlmIHBrZy1jb25maWcgLS1hdGxlYXN0LXZlcnNpb24gJEdMSUJfUkVRVUlSRURfVkVSU0lPTiAkR0xJQjsgdGhlbgorK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC12ZXJzaW9uICRHTElCX1JFUVVJUkVEX1ZFUlNJT04gJEdMSUI7IHRoZW4KKyAgICA6CisgZWxzZQorICAgIEFDX01TR19FUlJPUihbCitAQCAtMjY4LDEyICsyNjgsMTIgQEAgZG5sCisgZG5sIFdlIHJlYWxseSBuZWVkIHRvIG1ha2UgaXBtaSBlbmFibGVtZW50IGJlIGNvbnRpZ2VudCBvbiBPcGVuSVBNSQorIGRubAorIAorLWlmIFBLR19DT05GSUdfUEFUSD0kUEtHX0NPTkZJR19QQVRIOi91c3IvbG9jYWwvbGliL3BrZ2NvbmZpZyBwa2ctY29uZmlnIC0tYXRsZWFzdC12ZXJzaW9uIDEuNC4yMCBPcGVuSVBNSTsgdGhlbgorK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC12ZXJzaW9uIDEuNC4yMCBPcGVuSVBNSTsgdGhlbgorICAgICBoYXZlX29wZW5pcG1pPXllcworICAgICBBQ19DSEVDS19MSUIoW09wZW5JUE1JXSwgW2lwbWlfc21pX3NldHVwX2Nvbl0sIFtoYXZlX29wZW5pcG1pPXllc10pCistICAgIE9QRU5JUE1JX0NGTEFHUz1gUEtHX0NPTkZJR19QQVRIPSRQS0dfQ09ORklHX1BBVEg6L3Vzci9sb2NhbC9saWIvcGtnY29uZmlnIHBrZy1jb25maWcgLS1jZmxhZ3MgT3BlbklQTUlgCisrICAgIE9QRU5JUE1JX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgT3BlbklQTUlgCisgICAgIEFDX1NVQlNUKE9QRU5JUE1JX0NGTEFHUykKKy0gICAgT1BFTklQTUlfTElCUz1gUEtHX0NPTkZJR19QQVRIPSRQS0dfQ09ORklHX1BBVEg6L3Vzci9sb2NhbC9saWIvcGtnY29uZmlnIHBrZy1jb25maWcgLS1saWJzIE9wZW5JUE1JYAorKyAgICBPUEVOSVBNSV9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgT3BlbklQTUlgCisgICAgIEFDX1NVQlNUKE9QRU5JUE1JX0xJQlMpCisgZmkKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9uby1tZDIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvbm8tbWQyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZGQyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvbm8tbWQyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Rlc2NyaXB0aW9uOiBGaXggRlRCRlMgd2l0aCBPcGVuU1NMIDEuMSBieSBob25vdXJpbmcgT1BFTlNTTF9OT19NRDIKK0F1dGhvcjogQWRyaWFuIEJ1bmsgPGJ1bmtAZGViaWFuLm9yZz4KK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzg1OTU0MworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBvcGVuaHBpLTMuOC4wL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX2F1dGguY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbmhwaS0zLjguMC5vcmlnL3BsdWdpbnMvaXBtaWRpcmVjdC9pcG1pX2F1dGguY3BwCisrKysgb3BlbmhwaS0zLjguMC9wbHVnaW5zL2lwbWlkaXJlY3QvaXBtaV9hdXRoLmNwcAorQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiaXBtaV9hdXRoLmgiCisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisgCisgCisgY0lwbWlBdXRoICoKK0BAIC0zMiw3ICszMyw3IEBAIElwbWlBdXRoRmFjdG9yeSggdElwbWlBdXRoVHlwZSB0eXBlICkKKyAgICAgICAgICAgICByZXR1cm4gbmV3IGNJcG1pQXV0aE5vbmU7CisgCisgICAgICAgIGNhc2UgZUlwbWlBdXRoVHlwZU1kMjoKKy0jaWZkZWYgSEFWRV9PUEVOU1NMX01EMl9ICisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX01EMl9IKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX01EMikKKyAgICAgICAgICAgICByZXR1cm4gbmV3IGNJcG1pQXV0aE1kMjsKKyAjZWxzZQorICAgICAgICAgICAgIGJyZWFrOworQEAgLTc4LDcgKzc5LDcgQEAgY0lwbWlBdXRoTm9uZTo6Q2hlY2soIGNJcG1pQXV0aFNnIC8qZCovWworIH0KKyAKKyAKKy0jaWZkZWYgSEFWRV9PUEVOU1NMX01EMl9ICisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX01EMl9IKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX01EMikKKyAjaW5jbHVkZSA8b3BlbnNzbC9tZDIuaD4KKyAKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLTMuNi4xLXNzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLTMuNi4xLXNzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTUyMmJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktMy42LjEtc3NsLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK0xpbmsgd2l0aCBsaWJzc2wKKworZml4ZWQgYnVpbGQgd2l0aCBvcGVuc3NsLTEuMS54CisKK1Rha2VuIGZyb20gRmVkb3JhCitodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5ocGkvYy9iZTc3ZjU0ODRiMDIwNmY4OTQ2YTg1YjI5NDI0ZWExMGJmODYzMDYzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFVua25vd24KKworZGlmZiAtdXAgb3BlbmhwaS0zLjYuMS9zc2wvTWFrZWZpbGUuYW0udGhhbiBvcGVuaHBpLTMuNi4xL3NzbC9NYWtlZmlsZS5hbQorLS0tIG9wZW5ocGktMy42LjEvc3NsL01ha2VmaWxlLmFtLnRoYW4JMjAxNy0wMi0yMSAxMjoyMToxMi4xMTQ4MTQ2OTggLTA1MDAKKysrKyBvcGVuaHBpLTMuNi4xL3NzbC9NYWtlZmlsZS5hbQkyMDE3LTAyLTIxIDEyOjIyOjQ0LjU3NjQ1NDI2MiAtMDUwMAorQEAgLTE5LDUgKzE5LDUgQEAgbGliX0xUTElCUkFSSUVTCQk9IGxpYm9wZW5ocGlfc3NsLmxhCisgbGlib3BlbmhwaV9zc2xfbGFfU09VUkNFUyA9IG9oX3NzbC5jIG9oX3NzbC5oCisgCisgbGlib3BlbmhwaV9zc2xfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gQEhQSV9MSUJfVkVSU0lPTkAKKy1saWJvcGVuaHBpX3NzbF9sYV9MSUJBREQgID0gQENSWVBUT19MSUJACisrbGlib3BlbmhwaV9zc2xfbGFfTElCQUREICA9IC1sc3NsIEBDUllQVE9fTElCQAorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktaHBpLXNoZWxsLXRocmVhZC1maXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1ocGktc2hlbGwtdGhyZWFkLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MyMWZmOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1ocGktc2hlbGwtdGhyZWFkLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLWNvbW1pdCBlOWY5YTczYzlkYmE4ZGQ1OWYzZDZjM2FjZDk5ODhlYzgzNjFkNTVhCi1BdXRob3I6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KLURhdGU6ICAgTW9uIERlYyAxNyAxNjoyMzo0NSAyMDEyIC0wNTAwCi0KLSAgICBDb3JyZWN0IGRhbmdsaW5nIGdfdGhyZWFkX2V4aXQgaW4gc2Vzc2lvbi5jCi0gICAgCi0gICAgaHBpX3NoZWxsJ3Mgc2Vzc2lvbi5jIGhhcyBpdHMgcHJvZ3Jlc3NfYmFyCi0gICAgdGhyZWFkIGNyZWF0ZWQgdXNpbmcgcHRocmVhZF9jcmVhdGUgYnV0Ci0gICAgZXhpdGVkIHVzaW5nIGdfdGhyZWFkX2V4aXQuIFVzZSBwdGhyZWFkX2V4aXQKLSAgICBpbnN0ZWFkIHRvIGF2b2lkIHVucHJlZGljdGFibGUgR0xJQiB0aHJlYWQKLSAgICBlcnJvcnMuCi0gICAgCi0gICAgVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogb3BlbmhwaS0zLjYuMS9ocGlfc2hlbGwvc2Vzc2lvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbmhwaS0zLjYuMS5vcmlnL2hwaV9zaGVsbC9zZXNzaW9uLmMKLSsrKyBvcGVuaHBpLTMuNi4xL2hwaV9zaGVsbC9zZXNzaW9uLmMKLUBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyB2b2lkKiBwcm9ncmVzc19iYXIodm9pZCAqdW51c2VkKQotIAkJaWYgKGkgPCAoUFJPR1JFU1NfQlVGX1NJWkUgLSBtZXNfbGVuIC0gMSkpIGkrKzsKLSAJCXQrKzsKLSAJfTsKLS0gICAgICAgIGdfdGhyZWFkX2V4aXQoMCk7Ci0rICAgICAgICBwdGhyZWFkX2V4aXQoMCk7Ci0gCXJldHVybiAodm9pZCAqKTE7Ci0gfQotIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktbGlieG1sMi1jcm9zcy1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktbGlieG1sMi1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IGM4NDhiMzUuLjE2MGVlZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLWxpYnhtbDItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1saWJ4bWwyLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1GaXggbGlieG1sMiBmb3IgY3Jvc3MtY29tcGlsaW5nCitGcm9tIGFmZTU0NWU3N2Y5ZDg0MWI3Nzc3ZDg1OWU3ZTgxMDg0OTJmZWNlOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNiBBcHIgMjAxNyAxNjoyMjowMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggbGlieG1sMiBmb3IgY3Jvc3MtY29tcGlsaW5nCiAKIFVzZSBwcm9wZXIgWE1MMl9JTkNMVURFIHBhdGggd2hlbiBjcm9zcy1jb21waWxpbmcKIApAQCAtNiwxNiArOSwyMCBAQAogCiBTaWduZWQtb2YtYnk6IEF3cyBJc21haWwgPGF3cy5pc21haWxAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbmhwaS0zLjYuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG9wZW5ocGktMy42LjEvY29uZmlndXJlLmFjCi1AQCAtMTc3LDcgKzE3Nyw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvbWQyLmggb3BlbnNzbC8KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjI0MmNiZi4uNGZiNmI2OSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTc5LDcgKzE3OSw3IEBAIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvbWQyLmggb3BlbnNzbC9tZDUuaCBvcGVuc3NsL2Jpby5oIG9wZW5zc2wvc3NsLmggb3BlbnNzCiAgCiAgZG5sIHhtbCBpcyB1c2VkIGZvciBYTUwtYmFzZWQgY29tbXVuaWNhdGlvbiBpbiBpbG8yX3JpYmNsIGFuZCBvYV9zb2FwCiAgQUNfQ0hFQ0tfTElCKFt4bWwyXSxbeG1sUGFyc2VNZW1vcnldLFtYTUwyX0xJQj0tbHhtbDJdLFtYTUwyX0xJQj1dKQotLUFDX0NIRUNLX0hFQURFUlMoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0sW1hNTDJfSU5DTFVERT0iLUkvdXNyL2luY2x1ZGUvbGlieG1sMiJdLFtYTUwyX0lOQ0xVREVdKQotK0FDX0NIRUNLX0hFQURFUlMoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0sW1hNTDJfSU5DTFVERT0iJFhNTDJfSU5DTFVERSJdLFtYTUwyX0lOQ0xVREVdKQorLUFDX0NIRUNLX0hFQURFUlMoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0sW1hNTDJfSU5DTFVERT0iLUkvdXNyL2luY2x1ZGUvbGlieG1sMiJdLFtYTUwyX0lOQ0xVREU9XSkKKytBQ19DSEVDS19IRUFERVJTKFtsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmhdLFtYTUwyX0lOQ0xVREU9IiRYTUwyX0lOQ0xVREUiXSxbWE1MMl9JTkNMVURFPV0pCiAgQUNfU1VCU1QoWE1MMl9MSUIpCiAgQUNfU1VCU1QoWE1MMl9JTkNMVURFKQogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktbmV0c25tcC1jcm9zcy1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktbmV0c25tcC1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IDk1YjBhYmMuLjI5M2M4ZDkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLW5ldHNubXAtY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS1uZXRzbm1wLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEzLDM2ICsxMywzMyBAQAogIGNvbmZpZ3VyZSAgICB8IDQgKystLQogIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCA4MmMzM2Y2Li43MjdlNDYxIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKK0luZGV4OiBvcGVuaHBpLTMuOC4wL2FjaW5jbHVkZS5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5ocGktMy44LjAub3JpZy9hY2luY2x1ZGUubTQKKysrKyBvcGVuaHBpLTMuOC4wL2FjaW5jbHVkZS5tNAogQEAgLTE2MCw4ICsxNjAsOCBAQCBBQ19ERUZVTihbT0hfQ0hFQ0tfTkVUU05NUF0sCiAgICAgIF0sCiAgICAgIFsKICAgICAgICAgIGhhdmVfbmV0c25tcD15ZXMKLS0gICAgICAgIFNOTVBGTEFHUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1jZmxhZ3MgfCBwZXJsIC1wIC1lICdzLy1PXFMqLy9nJ2AKKy0gICAgICAgIFNOTVBGTEFHUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1jZmxhZ3MgfCBwZXJsIC1wIC1lICdzLyAtT1xTKi8vZydgCiAtICAgICAgICBTTk1QTElCUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1saWJzYAogKyAgICAgICAgU05NUEZMQUdTPSIiCiArICAgICAgICBTTk1QTElCUz0iIgogICAgICAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgICAgIF0sCiAgICAgIFtBQ19NU0dfUkVTVUxUKG5vLiAgTm8gU05NUCBiYXNlZCBwbHVnaW5zIGNhbiBiZSBidWlsdCEpXSkKLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDAwMDY3YmMuLjM2YjkxM2MgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTE1OTQ5LDggKzE1OTQ5LDggQEAgX0FDRU9GCitJbmRleDogb3BlbmhwaS0zLjguMC9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuaHBpLTMuOC4wLm9yaWcvY29uZmlndXJlCisrKysgb3BlbmhwaS0zLjguMC9jb25maWd1cmUKK0BAIC0xNjA2Miw4ICsxNjA2Miw4IEBAIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKICAgICAgICAgIGhhdmVfbmV0c25tcD15ZXMKLS0gICAgICAgIFNOTVBGTEFHUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1jZmxhZ3MgfCBwZXJsIC1wIC1lICdzLy1PXFMqLy9nJ2AKKy0gICAgICAgIFNOTVBGTEFHUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1jZmxhZ3MgfCBwZXJsIC1wIC1lICdzLyAtT1xTKi8vZydgCiAtICAgICAgICBTTk1QTElCUz1gJHtuZXRfc25tcF9jb25maWc6LW5ldC1zbm1wLWNvbmZpZ30gLS1saWJzYAogKyAgICAgICAgU05NUEZMQUdTPSIiCiArICAgICAgICBTTk1QTElCUz0iIgogICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiAgJGFzX2VjaG8gInllcyIgPiY2OyB9CiAgCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9maWxlcy9vcGVuaHBpLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaAppbmRleCAzZTA5MTgwLi40NzIzMThiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvZmlsZXMvb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL2ZpbGVzL29wZW5ocGktdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzNmZiYWEyN2U3Mjk5ZjYzYzEzMjRiMGFkMjJiOTcwZTkzNjVkNmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1ZTBhZTE3MjU4NmY1YWViMjcwYThmOWIwMTJkZDNlMzY1MzZhMmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjQgRGVjIDIwMTQgMTA6NTQ6NTkgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gb3BlbmhwaTogdXNlIHNlcmlhbC10ZXN0cyBjb25maWcgbmVlZGVkIGJ5IHB0ZXN0CkBAIC05LDE3ICs5LDE4IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlZmF1bHQgYXV0b21ha2UgYmVoYXZpb3IgaW5jb21wYXRpYmxlIHdpdGggcHRlc3RdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgICAyICstCi0gMSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBvcGVuaHBpLTMuNi4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5ocGktMy42LjEub3JpZy9jb25maWd1cmUuYWMKLSsrKyBvcGVuaHBpLTMuNi4xL2NvbmZpZ3VyZS5hYwotQEAgLTcsNyArNyw3IEBAIGRubCAgIHZhcmlvdXMgaGFja3MgYnkgU2VhbiBEYWd1ZSA8aHR0cDoKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODlkODEwNC4uYzI5YTMxZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNyw3ICs3LDcgQEAgZG5sICAgdmFyaW91cyBoYWNrcyBieSBTZWFuIERhZ3VlIDxodHRwOi8vZGFndWUubmV0L3NlYW4+IDQvMjMvMDMKICBBQ19QUkVSRVEoMi41NykKLSBBQ19JTklUKG9wZW5ocGksIDMuNi4xKQorIEFDX0lOSVQob3BlbmhwaSwgMy44LjApCiAgQUNfQ09ORklHX1NSQ0RJUihvcGVuaHBpLnNwZWMuaW4pCiAtQU1fSU5JVF9BVVRPTUFLRShbMS44XSkKICtBTV9JTklUX0FVVE9NQUtFKFsxLjggc2VyaWFsLXRlc3RzXSkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9vcGVuaHBpXzMuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL29wZW5ocGlfMy42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZjcxZDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuaHBpL29wZW5ocGlfMy42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBQbGF0Zm9ybSBJbnRlcmZhY2UgTGlicmFyeSBhbmQgVG9vbHMiCi0KLURFU0NSSVBUSU9OID0gIlwKLU9wZW5IUEkgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBjcmVhdGVkIHdpdGggdGhlIGludGVudCBvZiBwcm92aWRpbmcgYW4gXAotaW1wbGVtZW50YXRpb24gb2YgdGhlIFNBIEZvcnVtJ3MgSGFyZHdhcmUgUGxhdGZvcm0gSW50ZXJmYWNlIChIUEkpLiBIUEkgXAotcHJvdmlkZXMgYW4gYWJzdHJhY3RlZCBpbnRlcmZhY2UgdG8gbWFuYWdpbmcgY29tcHV0ZXIgaGFyZHdhcmUsIHR5cGljYWxseSBmb3IgXAotY2hhc3NpcyBhbmQgcmFjayBiYXNlZCBzZXJ2ZXJzLiBIUEkgaW5jbHVkZXMgcmVzb3VyY2UgbW9kZWxpbmc7IGFjY2VzcyB0byBhbmQgXAotY29udHJvbCBvdmVyIHNlbnNvciwgY29udHJvbCwgd2F0Y2hkb2csIGFuZCBpbnZlbnRvcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggXAotcmVzb3VyY2VzOyBhYnN0cmFjdGVkIFN5c3RlbSBFdmVudCBMb2cgaW50ZXJmYWNlczsgaGFyZHdhcmUgZXZlbnRzIGFuZCBhbGVydHM7IFwKLWFuZCBhIG1hbmFnZWQgaG90c3dhcCBpbnRlcmZhY2UuIFwKLVwKLU9wZW5IUEkgcHJvdmlkZXMgYSBtb2R1bGFyIG1lY2hhbmlzbSBmb3IgYWRkaW5nIG5ldyBoYXJkd2FyZSBhbmQgZGV2aWNlIHN1cHBvcnQgXAotZWFzaWx5LiBNYW55IHBsdWdpbnMgZXhpc3QgaW4gdGhlIE9wZW5IUEkgc291cmNlIHRyZWUgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gXAotdmFyaW91cyB0eXBlcyBvZiBoYXJkd2FyZS4gVGhpcyBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBJUE1JIGJhc2VkIFwKLXNlcnZlcnMsIEJsYWRlIENlbnRlciwgYW5kIG1hY2hpbmVzIHdoaWNoIGV4cG9ydCBkYXRhIHZpYSBzeXNmcy4gXAotIgotCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmhwaS5zb3VyY2Vmb3JnZS5uZXQvSG9tZSIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lM2M3NzJhMzIzODY4ODhjY2I1YWUxYzBiYTk1ZjFhNCIKLQotREVQRU5EUyA9ICJuZXQtc25tcCBsaWJ4bWwyIG5jdXJzZXMgb3BlbnNzbCBnbGliLTIuMCBwb3B0IGUyZnNwcm9ncyBhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaWQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1uZXRzbm1wLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1zeXNmcy1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGktbGlieG1sMi1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGktZ2xpYi1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGktbGlua2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWZpeC1ob3N0LWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWhwaS1zaGVsbC10aHJlYWQtZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5ocGktZml4LXRlc3RmYWlsLWVycm9ycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWFkZC1saWJuZXRzbm1wLXdoZW4tbGluay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWludmFsaWRlLXNlc3Npb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1maXgtYWxpZ25tZW50LWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWZhaWx1cmVzLXdpdGgtZ2NjNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jKysxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGFuZy1jKysxMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbmFycm93aW5nLXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wbHVnaW5zLUNoZWNrLWZvci1QVEhSRUFEX1JFQ1VSU0lWRV9NVVRFWF9JTklUSUFMSVpFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXBtaWRpcmVjdC1SZXBsYWNlLV9fU1RSSU5HLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDcxOGIxNmUwZjc0OWI1YWQyMTRhOWIwNGY0NWRkMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhODEwY2I0MDFjNGJkY2ZjOTU1MWYyZTZhZmQ1YThjYTRiNDExZjVlZTNiYzYwYzE5ZjgyZmQ2ZTg0YTNkYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCi0KLUZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLnNvIC91c3IvbGliLyR7QlBOfS8qLnNvIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1saWJzID0gImRldi1zbyIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IG5vbjMyYml0IgotUEFDS0FHRUNPTkZJR1tzeXNmc10gPSAiLS1lbmFibGUtc3lzZnMsLS1kaXNhYmxlLXN5c2ZzLHN5c2ZzdXRpbHMsIgotUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0tZW5hYmxlLWVuY3J5cHRpb24sLS1kaXNhYmxlLWVuY3J5cHRpb24sbGliZ2NyeXB0LCIKLVBBQ0tBR0VDT05GSUdbbm9uMzJiaXRdID0gIi0tZW5hYmxlLW5vbjMyYml0LWludCwtLWRpc2FibGUtbm9uMzJiaXQtaW50LCwiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vb3BlbmhwaWNsaWVudC5jb25mLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L29wZW5ocGljbGllbnQuY29uZgotICAgIGluc3RhbGwgLW0gMDcwMCAke1N9L29wZW5ocGkuY29uZi5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9vcGVuaHBpLmNvbmYKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9zaW11bGF0aW9uLmRhdGEuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vc2ltdWxhdGlvbi5kYXRhCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdGVzdF9hZ2VudC5kYXRhLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3Rlc3RfYWdlbnQuZGF0YQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5ocGkuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmhwaWQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVuaHBpZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICJzLEBTQklORElSQCwke3NiaW5kaXJ9LGciIC1lICJzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGciIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbmhwaWQuc2VydmljZQotfQotCi1kb19jb21waWxlX3B0ZXN0ICgpIHsKLSAgICBmb3IgeCBpbiBgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIC1leGVjIGdyZXAgLWwgYnVpbGR0ZXN0LVRFU1RTIHt9IFw7YDsgZG8KLSAgICAgICAgZGlyPWBkaXJuYW1lICR7eH1gCi0gICAgICAgIHVwcGVyPWBkaXJuYW1lICR7ZGlyfWAKLSAgICAgICAgaWYgWyBgYmFzZW5hbWUgJHt1cHBlcn1gICE9ICJjcHAiIF07IHRoZW4KLSAgICAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtkaXJ9IGJ1aWxkdGVzdC1URVNUUwotICAgICAgICBmaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgY3AgLXJmICR7Qn0vb3BlbmhwaWQvdC9vaHBpLy5saWJzLyogJHtCfS9vcGVuaHBpZC90L29ocGkvCi0gICAgVEVTVFM9InV0aWxzIG1hcnNoYWwgb3BlbmhwaWQiCi0gICAgZm9yIHN1YnRlc3QgaW4gJHtURVNUU307IGRvCi0gICAgICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9LyR7c3VidGVzdH0vdAotICAgICAgICBjcCAtcmYgJHtCfS8ke3N1YnRlc3R9L3QvKiAke0R9JHtQVEVTVF9QQVRIfS8ke3N1YnRlc3R9L3QKLSAgICBkb25lCi0KLSAgICBmb3IgeCBpbiBgZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtbmFtZSBNYWtlZmlsZWA7IGRvCi0gICAgICAgIHNlZCAtaSAiczoke1N9OiR7UFRFU1RfUEFUSH0vOmciICR7eH07Ci0gICAgICAgIHNlZCAtaSAicy9eTWFrZWZpbGU6L01NOi9nIiAke3h9OwotICAgIGRvbmU7Ci0KLSAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9wbHVnaW5zL3dhdGNoZG9nLwotICAgIGNwIC1MICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS9saWJ3YXRjaGRvZy5zbyAke0R9JHtQVEVTVF9QQVRIfS9wbHVnaW5zL3dhdGNoZG9nLwotICAgIGNwIC1MICR7RH0vJHtsaWJkaXJ9LyR7QlBOfS9saWJzaW11bGF0b3Iuc28gJHtEfSR7UFRFU1RfUEFUSH0vcGx1Z2lucy93YXRjaGRvZy8KLSAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyAtbmFtZSAiKi5jIiAtZXhlYyBybSB7fSBcOwotICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLm8iIC1leGVjIHJtIHt9IFw7Ci0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8gLW5hbWUgIiouaCIgLWV4ZWMgcm0ge30gXDsKLX0KLQotSU5JVFNDUklQVF9OQU1FID0gIm9wZW5ocGlkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgLiBzdG9wIDcwIDAgMSAyIDMgNCA1IDYgLiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wZW5ocGlkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvb3BlbmhwaV8zLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbmhwaS9vcGVuaHBpXzMuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YjMzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5ocGkvb3BlbmhwaV8zLjguMC5iYgpAQCAtMCwwICsxLDExOSBAQAorU1VNTUFSWSA9ICJIYXJkd2FyZSBQbGF0Zm9ybSBJbnRlcmZhY2UgTGlicmFyeSBhbmQgVG9vbHMiCisKK0RFU0NSSVBUSU9OID0gIlwKK09wZW5IUEkgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBjcmVhdGVkIHdpdGggdGhlIGludGVudCBvZiBwcm92aWRpbmcgYW4gXAoraW1wbGVtZW50YXRpb24gb2YgdGhlIFNBIEZvcnVtJ3MgSGFyZHdhcmUgUGxhdGZvcm0gSW50ZXJmYWNlIChIUEkpLiBIUEkgXAorcHJvdmlkZXMgYW4gYWJzdHJhY3RlZCBpbnRlcmZhY2UgdG8gbWFuYWdpbmcgY29tcHV0ZXIgaGFyZHdhcmUsIHR5cGljYWxseSBmb3IgXAorY2hhc3NpcyBhbmQgcmFjayBiYXNlZCBzZXJ2ZXJzLiBIUEkgaW5jbHVkZXMgcmVzb3VyY2UgbW9kZWxpbmc7IGFjY2VzcyB0byBhbmQgXAorY29udHJvbCBvdmVyIHNlbnNvciwgY29udHJvbCwgd2F0Y2hkb2csIGFuZCBpbnZlbnRvcnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggXAorcmVzb3VyY2VzOyBhYnN0cmFjdGVkIFN5c3RlbSBFdmVudCBMb2cgaW50ZXJmYWNlczsgaGFyZHdhcmUgZXZlbnRzIGFuZCBhbGVydHM7IFwKK2FuZCBhIG1hbmFnZWQgaG90c3dhcCBpbnRlcmZhY2UuIFwKK1wKK09wZW5IUEkgcHJvdmlkZXMgYSBtb2R1bGFyIG1lY2hhbmlzbSBmb3IgYWRkaW5nIG5ldyBoYXJkd2FyZSBhbmQgZGV2aWNlIHN1cHBvcnQgXAorZWFzaWx5LiBNYW55IHBsdWdpbnMgZXhpc3QgaW4gdGhlIE9wZW5IUEkgc291cmNlIHRyZWUgdG8gcHJvdmlkZSBhY2Nlc3MgdG8gXAordmFyaW91cyB0eXBlcyBvZiBoYXJkd2FyZS4gVGhpcyBpbmNsdWRlcywgYnV0IGlzIG5vdCBsaW1pdGVkIHRvLCBJUE1JIGJhc2VkIFwKK3NlcnZlcnMsIEJsYWRlIENlbnRlciwgYW5kIG1hY2hpbmVzIHdoaWNoIGV4cG9ydCBkYXRhIHZpYSBzeXNmcy4gXAorIgorCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbmhwaS5zb3VyY2Vmb3JnZS5uZXQvSG9tZSIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lM2M3NzJhMzIzODY4ODhjY2I1YWUxYzBiYTk1ZjFhNCIKKworREVQRU5EUyA9ICJuZXQtc25tcCBsaWJ4bWwyIG5jdXJzZXMgb3BlbnNzbCBnbGliLTIuMCBwb3B0IGUyZnNwcm9ncyBcCisgICAgICAgICAgIGF1dG9jb25mLWFyY2hpdmUtbmF0aXZlIG9zLXJlbGVhc2UiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGlkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGktbmV0c25tcC1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGktc3lzZnMtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWxpYnhtbDItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWdsaWItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWxpbmtmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1maXgtaG9zdC1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS1maXgtdGVzdGZhaWwtZXJyb3JzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGktYWRkLWxpYm5ldHNubXAtd2hlbi1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5ocGktaW52YWxpZGUtc2Vzc2lvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLXVzZS1zZXJpYWwtdGVzdHMtY29uZmlnLW5lZWRlZC1ieS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaHBpLWZpeC1hbGlnbm1lbnQtaXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYysrMTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xhbmctYysrMTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LW5hcnJvd2luZy13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2Vzc2lvbi1jbG9zZS1zb2NrZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmhwaS0zLjYuMS1zc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcG9rZS1hdC1idWlsZC1ob3N0LXMtZXRjLW9zLXJlbGVhc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3NfODk5MTk4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLW1kMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtaW9zdHJlYW0tZm9yLWNvdXQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZmZmZGEzZGVlYThhMGQzNjcxYTcyZWVhOWQxM2E0ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzk0MzMyYTI5MTYwZGQ3NWNiNzk5YzAyN2U2MTQ2OTBjMDAyNjNiMGZhYmVkODc0MTc3MDdiZWMwNGMzODcyMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCisKK0ZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9LyR7QlBOfS8qLnNvIC91c3IvbGliLyR7QlBOfS8qLnNvIgorCitJTlNBTkVfU0tJUF8ke1BOfS1saWJzID0gImRldi1zbyIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIgorCitQQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IG5vbjMyYml0IgorUEFDS0FHRUNPTkZJR1tzeXNmc10gPSAiLS1lbmFibGUtc3lzZnMsLS1kaXNhYmxlLXN5c2ZzLHN5c2ZzdXRpbHMsIgorUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0tZW5hYmxlLWVuY3J5cHRpb24sLS1kaXNhYmxlLWVuY3J5cHRpb24sbGliZ2NyeXB0LCIKK1BBQ0tBR0VDT05GSUdbbm9uMzJiaXRdID0gIi0tZW5hYmxlLW5vbjMyYml0LWludCwtLWRpc2FibGUtbm9uMzJiaXQtaW50LCwiCisKK2V4cG9ydCBESVNUUk8KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9vcGVuaHBpY2xpZW50LmNvbmYuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vb3BlbmhwaWNsaWVudC5jb25mCisgICAgaW5zdGFsbCAtbSAwNzAwICR7U30vb3BlbmhwaS5jb25mLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L29wZW5ocGkuY29uZgorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NpbXVsYXRpb24uZGF0YS5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9zaW11bGF0aW9uLmRhdGEKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS90ZXN0X2FnZW50LmRhdGEuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vdGVzdF9hZ2VudC5kYXRhCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vb3BlbmhwaS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVuaHBpZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wZW5ocGlkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgInMsQFNCSU5ESVJALCR7c2JpbmRpcn0sZyIgLWUgInMsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZyIgXAorICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVuaHBpZC5zZXJ2aWNlCit9CisKK2RvX2NvbXBpbGVfcHRlc3QgKCkgeworICAgIGZvciB4IGluIGBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgLWV4ZWMgZ3JlcCAtbCBidWlsZHRlc3QtVEVTVFMge30gXDtgOyBkbworICAgICAgICBkaXI9YGRpcm5hbWUgJHt4fWAKKyAgICAgICAgdXBwZXI9YGRpcm5hbWUgJHtkaXJ9YAorICAgICAgICBpZiBbIGBiYXNlbmFtZSAke3VwcGVyfWAgIT0gImNwcCIgXTsgdGhlbgorICAgICAgICAgICAgb2VfcnVubWFrZSAtQyAke2Rpcn0gYnVpbGR0ZXN0LVRFU1RTCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBjcCAtcmYgJHtCfS9vcGVuaHBpZC90L29ocGkvLmxpYnMvKiAke0J9L29wZW5ocGlkL3Qvb2hwaS8KKyAgICBURVNUUz0idXRpbHMgbWFyc2hhbCBvcGVuaHBpZCIKKyAgICBmb3Igc3VidGVzdCBpbiAke1RFU1RTfTsgZG8KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vJHtzdWJ0ZXN0fS90CisgICAgICAgIGNwIC1yZiAke0J9LyR7c3VidGVzdH0vdC8qICR7RH0ke1BURVNUX1BBVEh9LyR7c3VidGVzdH0vdAorICAgIGRvbmUKKworICAgIGZvciB4IGluIGBmaW5kICR7RH0ke1BURVNUX1BBVEh9IC1uYW1lIE1ha2VmaWxlYDsgZG8KKyAgICAgICAgc2VkIC1pICJzOiR7U306JHtQVEVTVF9QQVRIfS86ZyIgJHt4fTsKKyAgICAgICAgc2VkIC1pICJzL15NYWtlZmlsZTovTU06L2ciICR7eH07CisgICAgZG9uZTsKKworICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3BsdWdpbnMvd2F0Y2hkb2cvCisgICAgY3AgLUwgJHtEfS8ke2xpYmRpcn0vJHtCUE59L2xpYndhdGNoZG9nLnNvICR7RH0ke1BURVNUX1BBVEh9L3BsdWdpbnMvd2F0Y2hkb2cvCisgICAgY3AgLUwgJHtEfS8ke2xpYmRpcn0vJHtCUE59L2xpYnNpbXVsYXRvci5zbyAke0R9JHtQVEVTVF9QQVRIfS9wbHVnaW5zL3dhdGNoZG9nLworICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vIC1uYW1lICIqLmMiIC1leGVjIHJtIHt9IFw7CisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8gLW5hbWUgIioubyIgLWV4ZWMgcm0ge30gXDsKKyAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyAtbmFtZSAiKi5oIiAtZXhlYyBybSB7fSBcOworfQorCitJTklUU0NSSVBUX05BTUUgPSAib3BlbmhwaWQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzMCAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BlbmhwaWQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtQ2F0Y2gtc3RkLWlmc3RyZWFtLWZhaWx1cmUtYnktcmVmZXJlbmNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1DYXRjaC1zdGQtaWZzdHJlYW0tZmFpbHVyZS1ieS1yZWZlcmVuY2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBmZGI4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtQ2F0Y2gtc3RkLWlmc3RyZWFtLWZhaWx1cmUtYnktcmVmZXJlbmNlLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gMzhjNTM0M2Y4NDc5OWZjNTA0MTU3NWYzZWM4MDhmNzQ3NmI2ZWVhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE2IEFwciAyMDE4IDE0OjMzOjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIENhdGNoIHN0ZDo6aWZzdHJlYW06OmZhaWx1cmUgYnkgcmVmZXJlbmNlCisKK0ZpeGVzCitlcnJvcjogY2F0Y2hpbmcgcG9seW1vcnBoaWMgdHlwZSAnY2xhc3Mgc3RkOjppb3NfYmFzZTo6ZmFpbHVyZScgYnkgdmFsdWUKK1stV2Vycm9yPWNhdGNoLXZhbHVlPV0KKyAgIH0gY2F0Y2ggKHN0ZDo6b2ZzdHJlYW06OmZhaWx1cmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2Jhc2UvY29uZi5jYyAgICAgICAgICAgfCA0ICsrLS0KKyBzcmMvZHRtL2R0bW5kL2R0bV9tYWluLmNjICB8IDIgKy0KKyBzcmMvZHRtL2R0bW5kL211bHRpY2FzdC5jYyB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNlL2NvbmYuY2MgYi9zcmMvYmFzZS9jb25mLmNjCitpbmRleCBkNTc1NWExLi40ODIwMzU3IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2UvY29uZi5jYworKysrIGIvc3JjL2Jhc2UvY29uZi5jYworQEAgLTE4OSw3ICsxODksNyBAQCBzdGQ6OnN0cmluZyBDb25mOjpSZWFkRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgcGF0aF9uYW1lLAorICAgdHJ5IHsKKyAgICAgc3RyLm9wZW4ocGF0aF9uYW1lKTsKKyAgICAgc3RyID4+IGNvbnRlbnRzOworLSAgfSBjYXRjaCAoc3RkOjppZnN0cmVhbTo6ZmFpbHVyZSkgeworKyAgfSBjYXRjaCAoc3RkOjppZnN0cmVhbTo6ZmFpbHVyZSYgZSkgeworICAgICBjb250ZW50cy5jbGVhcigpOworICAgfQorICAgcmV0dXJuIChzdHIuZmFpbCgpIHx8IGNvbnRlbnRzLmVtcHR5KCkpID8gZGVmYXVsdF9jb250ZW50cyA6IGNvbnRlbnRzOworQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIENvbmY6OldyaXRlRmlsZUF0b21pY2FsbHkoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhfbmFtZSwKKyAgIHRyeSB7CisgICAgIHN0ci5vcGVuKHRtcF9maWxlLCBzdGQ6Om9mc3RyZWFtOjpvdXQgfCBzdGQ6Om9mc3RyZWFtOjp0cnVuYyk7CisgICAgIHN0ciA8PCBjb250ZW50cyA8PCBzdGQ6OmVuZGw7CistICB9IGNhdGNoIChzdGQ6Om9mc3RyZWFtOjpmYWlsdXJlKSB7CisrICB9IGNhdGNoIChzdGQ6Om9mc3RyZWFtOjpmYWlsdXJlJiBlKSB7CisgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgIH0KKyAgIHN0ci5jbG9zZSgpOworZGlmZiAtLWdpdCBhL3NyYy9kdG0vZHRtbmQvZHRtX21haW4uY2MgYi9zcmMvZHRtL2R0bW5kL2R0bV9tYWluLmNjCitpbmRleCA1ODVlMTFlLi41Y2Y2YWQ3IDEwMDY0NAorLS0tIGEvc3JjL2R0bS9kdG1uZC9kdG1fbWFpbi5jYworKysrIGIvc3JjL2R0bS9kdG1uZC9kdG1fbWFpbi5jYworQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFVwZGF0ZU5vZGVJZEZpbGUoRFRNX0lOVEVSTk9ERV9DQiAqY2IpIHsKKyAgICAgICB0cnkgeworICAgICAgICAgc3RyLm9wZW4oUEtHTE9DQUxTVEFURURJUiAiL25vZGVfaWQiLCBzdGQ6Om9mc3RyZWFtOjpvdXQpOworICAgICAgICAgc3RyIDw8IHN0ZDo6aGV4IDw8IG5vZGVfaWQgPDwgc3RkOjplbmRsOworLSAgICAgIH0gY2F0Y2ggKHN0ZDo6b2ZzdHJlYW06OmZhaWx1cmUpIHsKKysgICAgICB9IGNhdGNoIChzdGQ6Om9mc3RyZWFtOjpmYWlsdXJlJiBlKSB7CisgICAgICAgfQorICAgICAgIHN0ci5jbG9zZSgpOworICAgICB9CitkaWZmIC0tZ2l0IGEvc3JjL2R0bS9kdG1uZC9tdWx0aWNhc3QuY2MgYi9zcmMvZHRtL2R0bW5kL211bHRpY2FzdC5jYworaW5kZXggY2FkYzAwMi4uN2MyNWZlYSAxMDA2NDQKKy0tLSBhL3NyYy9kdG0vZHRtbmQvbXVsdGljYXN0LmNjCisrKysgYi9zcmMvZHRtL2R0bW5kL211bHRpY2FzdC5jYworQEAgLTE5OSw3ICsxOTksNyBAQCBib29sIE11bHRpY2FzdDo6R2V0UGVlcnNGcm9tRmlsZShjb25zdCBzdGQ6OnN0cmluZyAmcGF0aF9uYW1lKSB7CisgICAgICAgICB9CisgICAgICAgfQorICAgICB9CistICB9IGNhdGNoIChzdGQ6Omlmc3RyZWFtOjpmYWlsdXJlKSB7CisrICB9IGNhdGNoIChzdGQ6Omlmc3RyZWFtOjpmYWlsdXJlJiBlKSB7CisgICAgIExPR19FUigiQ2F1Z2h0IHN0ZDo6aWZzdHJlYW06OmZhaWx1cmUgd2hlbiByZWFkaW5nIGZpbGUgJyVzJywgcGVlcnM9JXp1IiwKKyAgICAgICAgICAgIHBhdGhfbmFtZS5jX3N0cigpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBlZXJzXy5zaXplKCkpKTsKKyAgICAgcGVlcnNfLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLUZpeC1zdHJpbmctb3ZlcmZsb3ctaW4tc25wcmludGYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLUZpeC1zdHJpbmctb3ZlcmZsb3ctaW4tc25wcmludGYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2Nzk2ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtRml4LXN0cmluZy1vdmVyZmxvdy1pbi1zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDc2IEBACitGcm9tIGFlNzE3OGE3OGFiYTJlNTc2NmI3MDE5MTYxNzExMzQ4N2ZkN2FkMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNiBBcHIgMjAxOCAxODoyOToxNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggc3RyaW5nIG92ZXJmbG93IGluIHNucHJpbnRmCisKK0ZpeGVzIGVycm9ycyBsaWtlCitlcnJvcjogJyVzJyBkaXIKK2VjdGl2ZSBvdXRwdXQgbWF5IGJlIHRydW5jYXRlZCB3cml0aW5nIHVwIHRvIDI1NSBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMzIgWy1XZXJyb3I9Zm9ybWEKK3QtdHJ1bmNhdGlvbj1dCisgICBzbnByaW50ZihyZWludGVycHJldF9jYXN0PGNoYXIgKj4oSGVhbHRoeS5rZXkpLCBzaXplb2YoSGVhbHRoeS5rZXkpLCAiJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fgorICAgICAgICAgICAgaGx0aF9zdHIpOworICAgICAgICAgICAgfn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2xvZy9sb2dkL2xnc191dGlsLmNjICAgICAgICAgICB8IDQgKystLQorIHNyYy9yZGUvcmRlZC9yZGVfYW1mLmNjICAgICAgICAgICAgfCAyICstCisgc3JjL3NtZi9zbWZkL1NtZlVwZ3JhZGVDYW1wYWlnbi5jYyB8IDQgKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xvZy9sb2dkL2xnc191dGlsLmNjIGIvc3JjL2xvZy9sb2dkL2xnc191dGlsLmNjCitpbmRleCBhYzkzZDVhLi5jY2U4MGYzIDEwMDY0NAorLS0tIGEvc3JjL2xvZy9sb2dkL2xnc191dGlsLmNjCisrKysgYi9zcmMvbG9nL2xvZ2QvbGdzX3V0aWwuY2MKK0BAIC0yMDAsMTIgKzIwMCwxMiBAQCBjaGFyICpsZ3NfZ2V0X3RpbWUodGltZV90ICp0aW1lX2luKSB7CisgCisgICBzdHJpbmdTaXplID0gNSAqIHNpemVvZihjaGFyKTsKKyAgIHNucHJpbnRmKHNyY1N0cmluZywgKHNpemVfdClzdHJpbmdTaXplLCAiJWQiLAorLSAgICAgICAgICAgKHRpbWVTdGFtcERhdGEtPnRtX3llYXIgKyBTVEFSVF9ZRUFSKSk7CisrICAgICAgICAgICAodGltZVN0YW1wRGF0YS0+dG1feWVhciArIFNUQVJUX1lFQVIpICYgMHg0ZFUpOworIAorICAgc3RybmNweSh0aW1lU3RhbXBTdHJpbmcsIHNyY1N0cmluZywgc3RyaW5nU2l6ZSk7CisgCisgICBzdHJpbmdTaXplID0gMyAqIHNpemVvZihjaGFyKTsKKy0gIHNucHJpbnRmKHNyY1N0cmluZywgKHNpemVfdClzdHJpbmdTaXplLCAiJTAyZCIsICh0aW1lU3RhbXBEYXRhLT50bV9tb24gKyAxKSk7CisrICBzbnByaW50ZihzcmNTdHJpbmcsIChzaXplX3Qpc3RyaW5nU2l6ZSwgIiUwMmQiLCAodGltZVN0YW1wRGF0YS0+dG1fbW9uICsgMSkgJiAweDJkVSk7CisgCisgICBzdHJuY2F0KHRpbWVTdGFtcFN0cmluZywgc3JjU3RyaW5nLCBzdHJpbmdTaXplKTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvcmRlL3JkZWQvcmRlX2FtZi5jYyBiL3NyYy9yZGUvcmRlZC9yZGVfYW1mLmNjCitpbmRleCA4MWU1MjFlLi5kNTNjYzQ4IDEwMDY0NAorLS0tIGEvc3JjL3JkZS9yZGVkL3JkZV9hbWYuY2MKKysrKyBiL3NyYy9yZGUvcmRlZC9yZGVfYW1mLmNjCitAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB1aW50MzJfdCByZGVfYW1mX2hlYWx0aGNoZWNrX3N0YXJ0KFJERV9BTUZfQ0IgKnJkZV9hbWZfY2IpIHsKKyAgIFNhQW1mSGVhbHRoY2hlY2tLZXlUIEhlYWx0aHk7CisgICBTYU5hbWVUIFNhQ29tcE5hbWU7CisgICBjaGFyICpwaGx0aF9wdHI7CistICBjaGFyIGhsdGhfc3RyWzI1Nl07CisrICBjaGFyIGhsdGhfc3RyWzMyXTsKKyAKKyAgIFRSQUNFX0VOVEVSKCk7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3NtZi9zbWZkL1NtZlVwZ3JhZGVDYW1wYWlnbi5jYyBiL3NyYy9zbWYvc21mZC9TbWZVcGdyYWRlQ2FtcGFpZ24uY2MKK2luZGV4IDQ1Y2RjZTguLjY3NjFiY2YgMTAwNjQ0CistLS0gYS9zcmMvc21mL3NtZmQvU21mVXBncmFkZUNhbXBhaWduLmNjCisrKysgYi9zcmMvc21mL3NtZmQvU21mVXBncmFkZUNhbXBhaWduLmNjCitAQCAtNDQ3LDcgKzQ0Nyw3IEBAIFNhQWlzRXJyb3JUIFNtZlVwZ3JhZGVDYW1wYWlnbjo6dG9vTWFueVJlc3RhcnRzKGJvb2wgKm9fcmVzdWx0KSB7CisgICBUUkFDRV9FTlRFUigpOworICAgU2FBaXNFcnJvclQgcmMgPSBTQV9BSVNfT0s7CisgICBTYUltbUF0dHJWYWx1ZXNUXzIgKiphdHRyaWJ1dGVzOworLSAgaW50IGN1ckNudCA9IDA7CisrICBzaG9ydCBpbnQgY3VyQ250ID0gMDsKKyAKKyAgIC8qIFJlYWQgdGhlIFNtZkNhbXBSZXN0YXJ0SW5mbyBvYmplY3Qgc21mQ2FtcFJlc3RhcnRDbnQgYXR0ciAqLworICAgc3RkOjpzdHJpbmcgb2JqID0gInNtZlJlc3RhcnRJbmZvPWluZm8sIiArCitAQCAtNDczLDcgKzQ3Myw3IEBAIFNhQWlzRXJyb3JUIFNtZlVwZ3JhZGVDYW1wYWlnbjo6dG9vTWFueVJlc3RhcnRzKGJvb2wgKm9fcmVzdWx0KSB7CisgICAgIGF0dHJzbWZDYW1wUmVzdGFydENudC5zZXROYW1lKCJzbWZDYW1wUmVzdGFydENudCIpOworICAgICBhdHRyc21mQ2FtcFJlc3RhcnRDbnQuc2V0VHlwZSgiU0FfSU1NX0FUVFJfU0FVSU5UMzJUIik7CisgICAgIGNoYXIgYnVmWzVdOworLSAgICBzbnByaW50ZihidWYsIDQsICIlZCIsIGN1ckNudCk7CisrICAgIHNucHJpbnRmKGJ1ZiwgNCwgIiVoZCIsIGN1ckNudCk7CisgICAgIGF0dHJzbWZDYW1wUmVzdGFydENudC5hZGRWYWx1ZShidWYpOworICAgICBpbW9DYW1wUmVzdGFydEluZm8uYWRkVmFsdWUoYXR0cnNtZkNhbXBSZXN0YXJ0Q250KTsKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLURpc2FibGUtZm9ybWF0LW92ZXJmbG93LWlmLXN1cHBvcnRlZC1ieS1nYy5wYXRjaAppbmRleCBlZmZlMjVjLi5iZTBhNTg3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWNvbmZpZ3VyZS1EaXNhYmxlLWZvcm1hdC1vdmVyZmxvdy1pZi1zdXBwb3J0ZWQtYnktZ2MucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1jb25maWd1cmUtRGlzYWJsZS1mb3JtYXQtb3ZlcmZsb3ctaWYtc3VwcG9ydGVkLWJ5LWdjLnBhdGNoCkBAIC0xLDIwICsxLDIxIEBACi1Gcm9tIGFiMDBkNmY1NzkzYjJkODUwZjk3NWJjYjZkNWQwYWE2ZDdhOWVhYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGMyNjY4ZjdmMmVhODJhNjExMTViN2NhZTU2ZWQwODFiNDFmZjUxNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAxMjozNDozNyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IERpc2FibGUgZm9ybWF0LW92ZXJmbG93IGlmIHN1cHBvcnRlZCBieSBnY2MKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgIHwgIDYgKystLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICB8ICAyICsrCi0gbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgIHwgIDYgKy0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDIgKworIG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNCB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKICAzIGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IG00L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAogCi1JbmRleDogb3BlbnNhZi01LjE4LjAyL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNhZi01LjE4LjAyLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBvcGVuc2FmLTUuMTguMDIvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBiM2Q2NTUzLi41NjA3ZmMyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtNTIsMTAgKzUyLDEwIEBAIEFNX0NQUEZMQUdTID0gXAogIAktcHRocmVhZCBcCiAgCS1EX0dOVV9TT1VSQ0UgLURJTlRFUk5BTF9WRVJTSU9OX0lEPSciQElOVEVSTkFMX1ZFUlNJT05fSURAIicgXApAQCAtMjksMTEgKzMwLDExIEBACiAgCiAgaWYgRU5BQkxFX0dDT1YKICBBTV9DRkxBR1MgKz0gLS1jb3ZlcmFnZQotSW5kZXg6IG9wZW5zYWYtNS4xOC4wMi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc2FmLTUuMTguMDIub3JpZy9jb25maWd1cmUuYWMKLSsrKyBvcGVuc2FmLTUuMTguMDIvY29uZmlndXJlLmFjCi1AQCAtNTkzLDYgKzU5Myw4IEBAIGlmIHRlc3QgLXogIiRPU0FGX0hBUkRFTl9GTEFHUyI7IHRoZW4KK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDViODY3MzAuLjQ3ZDEwMDIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTYwMCw2ICs2MDAsOCBAQCBpZiB0ZXN0IC16ICIkT1NBRl9IQVJERU5fRkxBR1MiOyB0aGVuCiAgZmkKICBBQ19TVUJTVChPU0FGX0hBUkRFTl9GTEFHUykKICAKQEAgLTQyLDEwICs0MywxMSBAQAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICMgTGlzdCB0aGUgb3V0cHV0IE1ha2VmaWxlcwogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotSW5kZXg6IG9wZW5zYWYtNS4xOC4wMi9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgYi9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kY2FiYjkyCiAtLS0gL2Rldi9udWxsCi0rKysgb3BlbnNhZi01LjE4LjAyL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNAorKysrIGIvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CiBAQCAtMCwwICsxLDc0IEBACiArIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICsjICBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2hlY2tfY29tcGlsZV9mbGFnLmh0bWwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLVBhc3MtbGlua2VyLXNwZWNpZmljLW9wdGlvbnMtd2l0aC1XbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtY29uZmlndXJlLVBhc3MtbGlua2VyLXNwZWNpZmljLW9wdGlvbnMtd2l0aC1XbC5wYXRjaAppbmRleCA1NzU2YTAyLi5lNGJiYjRjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWNvbmZpZ3VyZS1QYXNzLWxpbmtlci1zcGVjaWZpYy1vcHRpb25zLXdpdGgtV2wucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1jb25maWd1cmUtUGFzcy1saW5rZXItc3BlY2lmaWMtb3B0aW9ucy13aXRoLVdsLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2MjQ4YjcxN2I0ODYxZDE2YjgwMjM1ZmQ4ZTU3ZDY0ZTRmNjM2NDI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NzliMmI2YTFhYTU3NGEyNmU4YjczNjA0OWM0MjA3ZDU2OGY2MGYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTMgQXByIDIwMTcgMTc6Mzk6MDcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBQYXNzIGxpbmtlciBzcGVjaWZpYyBvcHRpb25zIHdpdGggLVdsCkBAIC03LDE1ICs3LDE2IEBACiBhbmQgd2UgY2FuIHVzZSBub24tZ2NjIGNvbXBpbGVycwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGRmNGZjNTguLjAyNzcxYzYgMTAwNjQ0CitpbmRleCAxMmE1ZDVjLi41Yjg2NzMwIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC01NTMsNyArNTUzLDcgQEAgaWYgdGVzdCAteiAiJE9TQUZfSEFSREVOX0ZMQUdTIjsgdGhlbgorQEAgLTU5Niw3ICs1OTYsNyBAQCBpZiB0ZXN0IC16ICIkT1NBRl9IQVJERU5fRkxBR1MiOyB0aGVuCiAgCWlmIGVjaG8gIiR7Q0ZMQUdTfSAke0NYWEZMQUdTfSIgfCBncmVwIC1xIC0tIC1PMDsgdGhlbgogIAkJT1NBRl9IQVJERU5fRkxBR1M9IiIKICAJZmkKQEAgLTI0LDYgKzI1LDMgQEAKICBmaQogIEFDX1NVQlNUKE9TQUZfSEFSREVOX0ZMQUdTKQogIAotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1wYmVfZHVtcC5jYy1Vc2Utc3lzLXdhaXQuaC1pbnN0ZWFkLW9mLXdhaXQuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2gKaW5kZXggNzZjNDdjNi4uZTQwZDJiMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1wYmVfZHVtcC5jYy1Vc2Utc3lzLXdhaXQuaC1pbnN0ZWFkLW9mLXdhaXQuaC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1MDhlYTdjMGQ2NzI0M2ZlYjE2ODRlYWE4MzU2OWNiNjg3NTYxZDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMjFmNzdkNTkyNDE1ZjMxNjEzOGMwNWY1ODExOTJhMWYwNjFlNzM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTA6MDk6MDMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gaW1tcGJlX2R1bXAuY2M6IFVzZSBzeXMvd2FpdC5oIGluc3RlYWQgb2Ygd2FpdC5oCkBAIC03LDEyICs3LDEzIEBACiByZWRpcmVjdGluZyBpbmNvcnJlY3QgI2luY2x1ZGUgPHdhaXQuaD4gdG8gPHN5cy93YWl0Lmg+CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2ltbS9jb21tb24vaW1tcGJlX2R1bXAuY2MgYi9zcmMvaW1tL2NvbW1vbi9pbW1wYmVfZHVtcC5jYwotaW5kZXggMTAwMjIyZjM3Li4zM2U0N2NlM2MgMTAwNjQ0CitpbmRleCBlNmIzY2M1Li4zOTU2MDI4IDEwMDY0NAogLS0tIGEvc3JjL2ltbS9jb21tb24vaW1tcGJlX2R1bXAuY2MKICsrKyBiL3NyYy9pbW0vY29tbW9uL2ltbXBiZV9kdW1wLmNjCiBAQCAtMjYsMTIgKzI2LDEyIEBACkBAIC0yNyw4ICsyOCw1IEBACiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiArI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgI2luY2x1ZGUgPGxpYmdlbi5oPgotIAotICNpbmNsdWRlIDxzYUFpcy5oPgotLS0gCi0yLjE0LjEKLQorICNpbmNsdWRlIDxzZXQ+CisgI2luY2x1ZGUgPHZlY3Rvcj4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaAppbmRleCA0YTJhODI1Li5lNGEzOTc1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLXNyYy1BZGQtbWlzc2luZy1oZWFkZXItbGltaXRzLmgtZm9yLV9QT1NJWF9IT1NUX05BTUUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1zcmMtQWRkLW1pc3NpbmctaGVhZGVyLWxpbWl0cy5oLWZvci1fUE9TSVhfSE9TVF9OQU1FLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2NDQyYjU3YTg1NWUyNzNhYTVhM2Q5M2U4NTk2NzgzY2VhMTI4MDczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZmIzOTNjNjZkZjMzMTEwZmVmMGNiYWJhYzdkMzA0ZjEyZWI4MmU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMDk6Mzk6NDAgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3JjOiBBZGQgbWlzc2luZyBoZWFkZXIgbGltaXRzLmggZm9yIF9QT1NJWF9IT1NUX05BTUVfTUFYCkBAIC03LDYgKzcsNyBAQAogRG8gbm90IHVzZSB0aGUgZGVwcmVjYXRlZCBoZWFkZXJzIHVuZGVyIGluY2x1ZGUvc3lzCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9iYXNlL29zX2RlZnMuaCAgICAgICAgfCA1ICsrKy0tCiAgc3JjL21kcy9tZHNfZHRfdGNwLmMgICAgICB8IDEgLQpAQCAtMTgsNyArMTksNyBAQAogIDcgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2Uvb3NfZGVmcy5oIGIvc3JjL2Jhc2Uvb3NfZGVmcy5oCi1pbmRleCA1MGE5YmY1ZmMuLmFmNjg0Mjg2MyAxMDA2NDQKK2luZGV4IGE1NzBjNDMuLjM1NTliMTkgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzZS9vc19kZWZzLmgKICsrKyBiL3NyYy9iYXNlL29zX2RlZnMuaAogQEAgLTQ3LDE3ICs0NywxOCBAQApAQCAtNDMsNyArNDQsNyBAQAogICNpbmNsdWRlIDxwdGhyZWFkLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfZHRfdGNwLmMgYi9zcmMvbWRzL21kc19kdF90Y3AuYwotaW5kZXggMTQwN2ViMWFiLi5hODdjMjJmYWEgMTAwNjQ0CitpbmRleCAxNDA3ZWIxLi5hODdjMjJmIDEwMDY0NAogLS0tIGEvc3JjL21kcy9tZHNfZHRfdGNwLmMKICsrKyBiL3NyYy9tZHMvbWRzX2R0X3RjcC5jCiBAQCAtMjcsNyArMjcsNiBAQApAQCAtNTUsNyArNTYsNyBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfZHRfdGNwX2Rpc2MuaCBiL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKLWluZGV4IGE2MjQ5ZDczZS4uNTc0ZjUyNjgxIDEwMDY0NAoraW5kZXggYTYyNDlkNy4uNTc0ZjUyNiAxMDA2NDQKIC0tLSBhL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKICsrKyBiL3NyYy9tZHMvbWRzX2R0X3RjcF9kaXNjLmgKIEBAIC0yNCw3ICsyNCw3IEBACkBAIC02OCw3ICs2OSw3IEBACiAgLyogIG1kc19pbmRlbnRpZmlyZSArIG1kc192ZXJzaW9uICAgKyBtc2dfdHlwZSArIHNjb3BlX3R5cGUgKyBzZXJ2ZXJfdHlwZSArCiAgICAgc2VydmVyX2luc3RhbmNlX2xvd2VyICsgc2VydmVyX2luc3RhbmNlX3VwcGVyICsgc3ViX3JlZl92YWwgKyBzdWJfcmVmX3ZhbCAgKwogZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RpcGMuYyBiL3NyYy9tZHMvbWRzX2R0X3RpcGMuYwotaW5kZXggMzc3NDVlN2YwLi45YjMyNTU1NjcgMTAwNjQ0CitpbmRleCA3NzE0MTc1Li5hMGVkM2I2IDEwMDY0NAogLS0tIGEvc3JjL21kcy9tZHNfZHRfdGlwYy5jCiArKysgYi9zcmMvbWRzL21kc19kdF90aXBjLmMKIEBAIC0zNSw3ICszNSw2IEBACkBAIC04MCw3ICs4MSw3IEBACiAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KIGRpZmYgLS1naXQgYS9zcmMvbWRzL21kc19kdF90aXBjLmggYi9zcmMvbWRzL21kc19kdF90aXBjLmgKLWluZGV4IGU3M2ExMWIwOS4uNDAxZDIwOGMyIDEwMDY0NAoraW5kZXggZTczYTExYi4uNDAxZDIwOCAxMDA2NDQKIC0tLSBhL3NyYy9tZHMvbWRzX2R0X3RpcGMuaAogKysrIGIvc3JjL21kcy9tZHNfZHRfdGlwYy5oCiBAQCAtMzIsNyArMzIsNyBAQApAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgogZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2R0X3RyYW5zLmMgYi9zcmMvbWRzL21kc19kdF90cmFucy5jCi1pbmRleCA2ZjYyMWUwNGUuLjVhYWNiZDMzZSAxMDA2NDQKK2luZGV4IDZmNjIxZTAuLjVhYWNiZDMgMTAwNjQ0CiAtLS0gYS9zcmMvbWRzL21kc19kdF90cmFucy5jCiArKysgYi9zcmMvbWRzL21kc19kdF90cmFucy5jCiBAQCAtMjYsNyArMjYsNiBAQApAQCAtMTA1LDcgKzEwNiw3IEBACiAgCiAgI2RlZmluZSBNRFNfUFJPVF9UQ1AgMHhBMAogZGlmZiAtLWdpdCBhL3NyYy9udGYvbnRmZC9OdGZMb2dnZXIuY2MgYi9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjCi1pbmRleCA4NDAxNGI1NzguLjMxYjFjY2M2YyAxMDA2NDQKK2luZGV4IGZkMTdjNTguLjExMjAwMDggMTAwNjQ0CiAtLS0gYS9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjCiArKysgYi9zcmMvbnRmL250ZmQvTnRmTG9nZ2VyLmNjCiBAQCAtMjAsNyArMjAsNyBAQApAQCAtMTE3LDYgKzExOCwzIEBACiAgCiAgI2luY2x1ZGUgImJhc2Uvb3NhZl91dGlsaXR5LmgiCiAgI2luY2x1ZGUgPHNhQWlzLmg+Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAyLUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1lcnJvcnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAyLUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1lcnJvcnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk4ZTI4ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDItRml4LWZvcm1hdC10cnVuY2F0aW9uLWVycm9ycy5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSBjNTAzNGZlNDJkZjg5MjNiY2VmYzEwZTE2MzE1MTk5N2Q3MGI2MjQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTYgQXByIDIwMTggMTQ6NTY6NDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGZvcm1hdC10cnVuY2F0aW9uIGVycm9ycworCitGaXhlcyBlcnJvcnMgd2l0aCBnY2M4IGVnLgorZXJyb3I6ICcldScgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIHdyaXRpbmcgYmV0d2VlbiAxIGFuZCAxMCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgYmV0d2VlbiAwIGFuZCAyNTQgWy1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb249XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyBzcmMvYmFzZS9kYWVtb24uYyAgfCA0ICsrLS0KKyBzcmMvbWRzL21kc19jX2RiLmMgfCA4ICsrKystLS0tCisgc3JjL21kcy9tZHNfY29yZS5oIHwgNCArKy0tCisgc3JjL21kcy9tZHNfZHQyYy5oIHwgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZGFlbW9uLmMgYi9zcmMvYmFzZS9kYWVtb24uYworaW5kZXggMzYxZGQ4ZC4uNDAwMWI3MyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNlL2RhZW1vbi5jCisrKysgYi9zcmMvYmFzZS9kYWVtb24uYworQEAgLTk1LDExICs5NSwxMSBAQCBzdGF0aWMgaW50IF9fY3JlYXRlX3BpZGZpbGUoY29uc3QgY2hhciAqcGlkZmlsZSkKKyB7CisgCUZJTEUgKmZpbGUgPSBOVUxMOworIAlpbnQgZmQsIHJjID0gMDsKKy0JY2hhciBwaWRmaWxldG1wW05BTUVfTUFYXSA9IHswfTsKKysJY2hhciBwaWRmaWxldG1wW05BTUVfTUFYKzEyXSA9IHswfTsKKyAJcGlkX3QgcGlkOworIAorIAlwaWQgPSBnZXRwaWQoKTsKKy0Jc25wcmludGYocGlkZmlsZXRtcCwgTkFNRV9NQVgsICIlcy4ldS50bXAiLCBwaWRmaWxlLCBwaWQpOworKwlzbnByaW50ZihwaWRmaWxldG1wLCBOQU1FX01BWCsxMiwgIiVzLiV1LnRtcCIsIHBpZGZpbGUsIHBpZCk7CisgCisgCS8qIG9wZW4gdGhlIGZpbGUgYW5kIGFzc29jaWF0ZSBhIHN0cmVhbSB3aXRoIGl0ICovCisgCWlmICgoKGZkID0gb3BlbihwaWRmaWxldG1wLCBPX1JEV1IgfCBPX0NSRUFULCAwNjQ0KSkgPT0gLTEpIHx8CitkaWZmIC0tZ2l0IGEvc3JjL21kcy9tZHNfY19kYi5jIGIvc3JjL21kcy9tZHNfY19kYi5jCitpbmRleCBlNmI5NWNkLi4zZDRhMjIyIDEwMDY0NAorLS0tIGEvc3JjL21kcy9tZHNfY19kYi5jCisrKysgYi9zcmMvbWRzL21kc19jX2RiLmMKK0BAIC0xMjQsMTAgKzEyNCwxMCBAQCB2b2lkIGdldF9hZGVzdF9kZXRhaWxzKE1EU19ERVNUIGFkZXN0LCBjaGFyICphZGVzdF9kZXRhaWxzKQorIAl9CisgCisgCWlmIChyZW1vdGUgPT0gdHJ1ZSkKKy0JCXNucHJpbnRmKGFkZXN0X2RldGFpbHMsIE1EU19NQVhfUFJPQ0VTU19OQU1FX0xFTiwKKysJCXNucHJpbnRmKGFkZXN0X2RldGFpbHMsIE1EU19NQVhfUFJPQ0VTU19OQU1FX0xFTisyNCwKKyAJCQkgIjxyZW1fbm9kZWlkWzB4JSIgUFJJeDMyICJdOiVzPiIsIG5jc19ub2RlX2lkLCBwcm9jZXNzX25hbWUpOworIAllbHNlCistCQlzbnByaW50ZihhZGVzdF9kZXRhaWxzLCBNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU4sCisrCQlzbnByaW50ZihhZGVzdF9kZXRhaWxzLCBNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU4rMjQsCisgCQkJICI8bm9kZWlkWzB4JSIgUFJJeDMyICJdOiVzPiIsIG5jc19ub2RlX2lkLCBwcm9jZXNzX25hbWUpOworIAorIAltX01EU19MT0dfREJHKCJNRFM6REI6IGFkZXN0X2RldGFpbHM6ICVzICIsIGFkZXN0X2RldGFpbHMpOworQEAgLTIwNywxMCArMjA3LDEwIEBAIHZvaWQgZ2V0X3N1YnRuX2FkZXN0X2RldGFpbHMoTURTX1BXRV9IREwgcHdlX2hkbCwgTURTX1NWQ19JRCBzdmNfaWQsCisgCX0KKyAKKyAJaWYgKHJlbW90ZSA9PSB0cnVlKQorLQkJc25wcmludGYoYWRlc3RfZGV0YWlscywgTURTX01BWF9QUk9DRVNTX05BTUVfTEVOLAorKwkJc25wcmludGYoYWRlc3RfZGV0YWlscywgTURTX01BWF9QUk9DRVNTX05BTUVfTEVOKzI0LAorIAkJCSAiPHJlbV9ub2RlWzB4JSIgUFJJeDMyICJdOiVzPiIsIG5jc19ub2RlX2lkLCBwcm9jZXNzX25hbWUpOworIAllbHNlCistCQlzbnByaW50ZihhZGVzdF9kZXRhaWxzLCBNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU4sCisrCQlzbnByaW50ZihhZGVzdF9kZXRhaWxzLCBNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU4rMjQsCisgCQkJICI8bm9kZVsweCUiIFBSSXgzMiAiXTolcz4iLCBuY3Nfbm9kZV9pZCwgcHJvY2Vzc19uYW1lKTsKKyBkb25lOgorIAltX01EU19MT0dfREJHKCJNRFM6REI6IGFkZXN0X2RldGFpbHM6ICVzICIsIGFkZXN0X2RldGFpbHMpOworZGlmZiAtLWdpdCBhL3NyYy9tZHMvbWRzX2NvcmUuaCBiL3NyYy9tZHMvbWRzX2NvcmUuaAoraW5kZXggMzc2OTZkNC4uN2Y1MjI1ZCAxMDA2NDQKKy0tLSBhL3NyYy9tZHMvbWRzX2NvcmUuaAorKysrIGIvc3JjL21kcy9tZHNfY29yZS5oCitAQCAtMTYzLDcgKzE2Myw3IEBAIHR5cGVkZWYgc3RydWN0IG1kc19zdWJzY3JpcHRpb25fcmVzdWx0c19pbmZvIHsKKyAgIHVpbnQzMl90IG1zZ19zbmRfY250OyAvKiBNZXNzYWdlIHNlbmQgY291bnQgdG8gdGhpcyBkZXN0aW5hdGlvbiAqLworICAgdWludDMyX3QgbXNnX3Jjdl9jbnQ7IC8qIE1lc3NhZ2UgcmN2IGNvdW50IGZyb20gdGhpcyBkZXN0aW5hdGlvbiAqLworICAgY2hhciBzdWJfYWRlc3RfZGV0YWlscworLSAgICAgIFtNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU5dOyAvKiA8bm9kZVtzbG90bm9dOnByb2Nlc3NuYW1lW3BpZF0+ICovCisrICAgICAgW01EU19NQVhfUFJPQ0VTU19OQU1FX0xFTisyNF07IC8qIDxub2RlW3Nsb3Rub106cHJvY2Vzc25hbWVbcGlkXT4gKi8KKyAKKyB9IE1EU19TVUJTQ1JJUFRJT05fUkVTVUxUU19JTkZPOworIAorQEAgLTE5NCw3ICsxOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBtZHNfc3Vic2NyaXB0aW9uX2luZm8geworICAgICBjb3VudCBpcyBncmF0ZXIgdGhhbiBaRVJPIGJjYXN0IChtdWx0aS11bmljYXN0KSAqLworICAgdWludDMyX3QgcHJldl92ZXJfc3ViX2NvdW50OworICAgY2hhciBzdWJfYWRlc3RfZGV0YWlscworLSAgICAgIFtNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU5dOyAvKiA8bm9kZVtzbG90bm9dOnByb2Nlc3NuYW1lW3BpZF0+ICovCisrICAgICAgW01EU19NQVhfUFJPQ0VTU19OQU1FX0xFTisyNF07IC8qIDxub2RlW3Nsb3Rub106cHJvY2Vzc25hbWVbcGlkXT4gKi8KKyAKKyB9IE1EU19TVUJTQ1JJUFRJT05fSU5GTzsKKyAKK2RpZmYgLS1naXQgYS9zcmMvbWRzL21kc19kdDJjLmggYi9zcmMvbWRzL21kc19kdDJjLmgKK2luZGV4IDAxMjk5OWMuLjAwNmI3MjIgMTAwNjQ0CistLS0gYS9zcmMvbWRzL21kc19kdDJjLmgKKysrKyBiL3NyYy9tZHMvbWRzX2R0MmMuaAorQEAgLTE0Myw3ICsxNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBtZHRtX3NlbmRfcmVxIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICovCisgICBNRFNfREVTVCBhZGVzdDsgICAgICAvKiBNRFRNIHRvIGRvIGxvY2FsL3JlbW90ZSByb3V0aW5nLCBkZXN0aW5hdGlvbiBhZGVzdCAqLworICAgY2hhciBzdWJfYWRlc3RfZGV0YWlscworLSAgICAgIFtNRFNfTUFYX1BST0NFU1NfTkFNRV9MRU5dOyAvKiA8bm9kZVtub2RlaWRdOnByb2Nlc3NuYW1lW3BpZF0+ICovCisrICAgICAgW01EU19NQVhfUFJPQ0VTU19OQU1FX0xFTisyNF07IC8qIDxub2RlW25vZGVpZF06cHJvY2Vzc25hbWVbcGlkXT4gKi8KKyAgIE1EU19TRU5EX1BSSU9SSVRZX1RZUEUgcHJpOworICAgTURTX0NMSUVOVF9NU0dfRk9STUFUX1ZFUgorICAgICAgIG1zZ19mbXRfdmVyOyAvKiBtZXNzYWdlIGZvcm1hdCB2ZXJzaW9uIHNwZWNpZmljYXRpb24gKi8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmLzAwMDgtY2hlY2stZm9yLXNpemUtYmVmb3JlLXVzaW5nLXN0cm5jcHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDA4LWNoZWNrLWZvci1zaXplLWJlZm9yZS11c2luZy1zdHJuY3B5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5N2JiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDA4LWNoZWNrLWZvci1zaXplLWJlZm9yZS11c2luZy1zdHJuY3B5LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjk1MTBkZDgxZTNhNWU5NjE1MWFmZGIwNzAyODYzY2JmZDY0MDc2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIyIEp1biAyMDE4IDE4OjU4OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGNoZWNrIGZvciBzaXplIGJlZm9yZSB1c2luZyBzdHJuY3B5CisKK2Vuc3VyZXMgdGhhdCBzaXplIGlzIG5ldmVyIGV4ZWNlZGluZyB0aGUgc3RyaW5nIGxlbmd0aAordGhhdCBleGVjUGF0aCBjYW4gaG9sZAorCitGaXhlcworZXJyb3I6ICdfX2J1aWx0aW5fX19zdHJuY3B5X2Noaycgc3BlY2lmaWVkIHNpemUgYmV0d2VlbiAxODQ0Njc0NDA3MTU2MjA2Nzk2OCBhbmQgMTg0NDY3NDQwNzM3MDk1NTE2MTUgZXhjZWVkcyBtYXhpbXVtIG9iamVjdCBzaXplIDkyMjMzNzIwMzY4NTQ3NzU4MDcgWy1XZXJyb3I9c3RyaW5nb3Atb3ZlcmZsb3c9XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9pbW0vaW1tbmQvaW1tbmRfcHJvYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ltbS9pbW1uZC9pbW1uZF9wcm9jLmMgYi9zcmMvaW1tL2ltbW5kL2ltbW5kX3Byb2MuYworaW5kZXggMDE1OTMyYS4uYzhmMTE1ZSAxMDA2NDQKKy0tLSBhL3NyYy9pbW0vaW1tbmQvaW1tbmRfcHJvYy5jCisrKysgYi9zcmMvaW1tL2ltbW5kL2ltbW5kX3Byb2MuYworQEAgLTE5MDIsNiArMTkwMiwxMCBAQCBzdGF0aWMgaW50IGltbW5kX2ZvcmtQYmUoSU1NTkRfQ0IgKmNiKQorIAkJTE9HX0VSKCJQYXRobmFtZSB0b28gbG9uZzogJXUgbWF4IGlzIDEwMjMiLCBuZXdMZW4pOworIAkJcmV0dXJuIC0xOworIAl9CisrCWlmIChleGVjRGlyTGVuID4gMTAyMyB8fCBleGVjRGlyTGVuIDwgMCkgeworKwkJTE9HX0VSKCJFeGVjZGlyIG5hbWUgdG9vIGxvbmc6ICV1IG1heCBpcyAxMDIzIiwgZXhlY0Rpckxlbik7CisrCQlyZXR1cm4gLTE7CisrCX0KKyAKKyAJc3RybmNweShleGVjUGF0aCwgY2ItPm1Qcm9nTmFtZSwgZXhlY0Rpckxlbik7CisgCWV4ZWNQYXRoW2V4ZWNEaXJMZW5dID0gMDsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTguMDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE4LjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjU1NmNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTguMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNBRiBBSVMgc3BlY2lmaWNhdGlvbiIKLURFU0NSSVBUSU9OID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBlc3RhYmxpc2hlZCB0byBkZXZlbG9wIGEgYmFzZSBwbGF0Zm9ybSBcCi1taWRkbGV3YXJlIGNvbnNpc3RlbnQgd2l0aCBTZXJ2aWNlIEF2YWlsYWJpbGl0eSBGb3J1bSAoU0EgRm9ydW0pIFwKLXNwZWNpZmljYXRpb25zLCB1bmRlciB0aGUgTEdQTHYyLjEgbGljZW5zZS4gVGhlIE9wZW5TQUYgRm91bmRhdGlvbiB3YXMgXAotZXN0YWJsaXNoZWQgYnkgbGVhZGluZyBDb21tdW5pY2F0aW9ucyBhbmQgRW50ZXJwcmlzZSBDb21wdXRpbmcgQ29tcGFuaWVzIHRvIFwKLWZhY2lsaXRhdGUgdGhlIE9wZW5TQUYgUHJvamVjdCBhbmQgdG8gYWNjZWxlcmF0ZSB0aGUgYWRvcHRpb24gb2YgdGhlIE9wZW5TQUYgXAotY29kZSBiYXNlIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMuIFwKLVRoZSBPcGVuU0FGIHByb2plY3Qgd2FzIGxhdW5jaGVkIGluIG1pZCAyMDA3IGFuZCBoYXMgYmVlbiB1bmRlciBkZXZlbG9wbWVudCBieSBcCi1hbiBpbmZvcm1hbCBncm91cCBvZiBzdXBwb3J0ZXJzIG9mIHRoZSBPcGVuU0FGIGluaXRpYXRpdmUuIFRoZSBPcGVuU0FGIFwKLUZvdW5kYXRpb24gd2FzIGZvdW5kZWQgb24gSmFudWFyeSAyMm5kIDIwMDggd2l0aCBFbWVyc29uIE5ldHdvcmsgUG93ZXIsIFwKLUVyaWNzc29uLCBOb2tpYSBTaWVtZW5zIE5ldHdvcmtzLCBIUCBhbmQgU3VuIE1pY3Jvc3lzdGVtcyBhcyBmb3VuZGluZyBtZW1iZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNhZi5vcmciCi1TRUNUSU9OID0gImFkbWluIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIHB5dGhvbiIKLVRPT0xDSEFJTiA9ICJnY2MiCi0KLVNFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QYXNzLWxpbmtlci1zcGVjaWZpYy1vcHRpb25zLXdpdGgtV2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtRGlzYWJsZS1mb3JtYXQtb3ZlcmZsb3ctaWYtc3VwcG9ydGVkLWJ5LWdjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MjA2NGY1ZGRiYzdmNTYwYmZjNWZmOTNlYTllZWNjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOWUyNDg5N2Y5Y2ZkNjNiYjMxMTVmNjI3NWM3MDZkZTE3MDJkM2Q5YmFlMmZjNDIzMjI3ZGI3MmIyM2MzN2YwIgotCi1pbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItZiAtciBvcGVuc2FmIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICAiLXIgLWcgb3BlbnNhZiAtZCAke2RhdGFkaXJ9L29wZW5zYWYvIC1zICR7c2JpbmRpcn0vbm9sb2dpbiAtYyBcIk9wZW5TQUZcIiBvcGVuc2FmIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW5zYWZkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLCxzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1tvcGVuaHBpXSA9ICItLXdpdGgtaHBpLWludGVyZmFjZT1CMDMgLS1lbmFibGUtYWlzLXBsbSwsb3BlbmhwaSIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJyBzeXN0ZW1kJywgJycsIGQpfSIKLQotUEtHTElCRElSPSIke2xpYmRpcn0iCi0KLUxERkxBR1MgKz0gIi1XbCwtLWFzLW5lZWRlZCAtbGF0b21pYyAtV2wsLS1uby1hcy1uZWVkZWQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGNwIC1hdiAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAke0J9L2xpYi8ubGlicy8qLnNvKiAke0R9JHtsaWJkaXJ9Ci0gICAgcm0gLWZyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2NrIgotICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7ZGF0YWRpcn0vamF2YSIKLSAgICBpZiBbICEgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9vc2FmL3NlcnZpY2VzL2luZnJhc3RydWN0dXJlL25pZC9zY3JpcHRzL29wZW5zYWZkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEtHTElCRElSfS8qLmEiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE4LjA0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOC4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTM0YzYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOC4wNC5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNBRiBBSVMgc3BlY2lmaWNhdGlvbiIKK0RFU0NSSVBUSU9OID0gIk9wZW5TQUYgaXMgYW4gb3BlbiBzb3VyY2UgcHJvamVjdCBlc3RhYmxpc2hlZCB0byBkZXZlbG9wIGEgYmFzZSBwbGF0Zm9ybSBcCittaWRkbGV3YXJlIGNvbnNpc3RlbnQgd2l0aCBTZXJ2aWNlIEF2YWlsYWJpbGl0eSBGb3J1bSAoU0EgRm9ydW0pIFwKK3NwZWNpZmljYXRpb25zLCB1bmRlciB0aGUgTEdQTHYyLjEgbGljZW5zZS4gVGhlIE9wZW5TQUYgRm91bmRhdGlvbiB3YXMgXAorZXN0YWJsaXNoZWQgYnkgbGVhZGluZyBDb21tdW5pY2F0aW9ucyBhbmQgRW50ZXJwcmlzZSBDb21wdXRpbmcgQ29tcGFuaWVzIHRvIFwKK2ZhY2lsaXRhdGUgdGhlIE9wZW5TQUYgUHJvamVjdCBhbmQgdG8gYWNjZWxlcmF0ZSB0aGUgYWRvcHRpb24gb2YgdGhlIE9wZW5TQUYgXAorY29kZSBiYXNlIGluIGNvbW1lcmNpYWwgcHJvZHVjdHMuIFwKK1RoZSBPcGVuU0FGIHByb2plY3Qgd2FzIGxhdW5jaGVkIGluIG1pZCAyMDA3IGFuZCBoYXMgYmVlbiB1bmRlciBkZXZlbG9wbWVudCBieSBcCithbiBpbmZvcm1hbCBncm91cCBvZiBzdXBwb3J0ZXJzIG9mIHRoZSBPcGVuU0FGIGluaXRpYXRpdmUuIFRoZSBPcGVuU0FGIFwKK0ZvdW5kYXRpb24gd2FzIGZvdW5kZWQgb24gSmFudWFyeSAyMm5kIDIwMDggd2l0aCBFbWVyc29uIE5ldHdvcmsgUG93ZXIsIFwKK0VyaWNzc29uLCBOb2tpYSBTaWVtZW5zIE5ldHdvcmtzLCBIUCBhbmQgU3VuIE1pY3Jvc3lzdGVtcyBhcyBmb3VuZGluZyBtZW1iZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNhZi5vcmciCitTRUNUSU9OID0gImFkbWluIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIHB5dGhvbiIKK1RPT0xDSEFJTiA9ICJnY2MiCisKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1QYXNzLWxpbmtlci1zcGVjaWZpYy1vcHRpb25zLXdpdGgtV2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtRGlzYWJsZS1mb3JtYXQtb3ZlcmZsb3ctaWYtc3VwcG9ydGVkLWJ5LWdjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLUFkZC1taXNzaW5nLWhlYWRlci1saW1pdHMuaC1mb3ItX1BPU0lYX0hPU1RfTkFNRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWltbXBiZV9kdW1wLmNjLVVzZS1zeXMtd2FpdC5oLWluc3RlYWQtb2Ytd2FpdC5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2F0Y2gtc3RkLWlmc3RyZWFtLWZhaWx1cmUtYnktcmVmZXJlbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWZvcm1hdC10cnVuY2F0aW9uLWVycm9ycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1zdHJpbmctb3ZlcmZsb3ctaW4tc25wcmludGYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1jaGVjay1mb3Itc2l6ZS1iZWZvcmUtdXNpbmctc3RybmNweS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTgzNmU0M2IxM2FkMzNiZWQ5YmQwZWQzOTFlNWE2ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNTVkYzI2NDU0ODdmYjIyOTM4ZTgzODZiOTllZWY2ZWI3YWZmNDNhMjQ2Y2UzZTkyNDg4ZGFmNmVlNDYyNDdhIgorCitpbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItZiAtciBvcGVuc2FmIgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICAiLXIgLWcgb3BlbnNhZiAtZCAke2RhdGFkaXJ9L29wZW5zYWYvIC1zICR7c2JpbmRpcn0vbm9sb2dpbiAtYyBcIk9wZW5TQUZcIiBvcGVuc2FmIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW5zYWZkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLCxzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tvcGVuaHBpXSA9ICItLXdpdGgtaHBpLWludGVyZmFjZT1CMDMsLG9wZW5ocGkiCitQQUNLQUdFQ09ORklHW3BsbV0gPSAiLS1lbmFibGUtYWlzLXBsbSwtLWRpc2FibGUtYWlzLXBsbSxsaWJ2aXJ0IG9wZW5ocGkiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0iCisKK1BLR0xJQkRJUj0iJHtsaWJkaXJ9IgorCitMREZMQUdTICs9ICItV2wsLS1hcy1uZWVkZWQgLWxhdG9taWMgLVdsLC0tbm8tYXMtbmVlZGVkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBjcCAtYXYgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgJHtCfS9saWIvLmxpYnMvKi5zbyogJHtEfSR7bGliZGlyfQorICAgIHJtIC1mciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jayIKKyAgICBybSAtZnIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2RhdGFkaXJ9L2phdmEiCisgICAgaWYgWyAhIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiIF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7Qn0vb3NhZi9zZXJ2aWNlcy9pbmZyYXN0cnVjdHVyZS9uaWQvc2NyaXB0cy9vcGVuc2FmZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BLR0xJQkRJUn0vKi5hIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbiIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg2OTcwLworRVhDTFVERV9GUk9NX1dPUkxEX2xpYmMtbXVzbCA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtQ2hlY2stZm9yLWdsaWJjLWJlZm9yZS1zZXR0aW5nLUNBTlRfVVNFX1NFTkRfUkVDVl9NUy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9maWxlcy8wMDAxLUNoZWNrLWZvci1nbGliYy1iZWZvcmUtc2V0dGluZy1DQU5UX1VTRV9TRU5EX1JFQ1ZfTVMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiODZlMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtQ2hlY2stZm9yLWdsaWJjLWJlZm9yZS1zZXR0aW5nLUNBTlRfVVNFX1NFTkRfUkVDVl9NUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNjM2MTlhY2YyNTE1MWQ0ZGFkZTZkNjU3MzI3MjJlYzRhNzEwYTVhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDA5OjU0OjI1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGZvciBnbGliYyBiZWZvcmUgc2V0dGluZyBDQU5UX1VTRV9TRU5EX1JFQ1ZfTVNHCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvdXRpbC9zeXNfZGVmcy5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3V0aWwvc3lzX2RlZnMuaCBiL3NyYy91dGlsL3N5c19kZWZzLmgKLWluZGV4IGY3MjBlMmEuLjczMTRjNjMgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC9zeXNfZGVmcy5oCi0rKysgYi9zcmMvdXRpbC9zeXNfZGVmcy5oCi1AQCAtODEzLDcgKzgxMyw3IEBAIGV4dGVybiBpbnQgaW5pdGdyb3Vwcyhjb25zdCBjaGFyICosIGludCk7Ci0gI2RlZmluZSBLRVJORUxfVkVSU0lPTihhLGIsYykgKExJTlVYX1ZFUlNJT05fQ09ERSArIDEpCi0gI2VuZGlmCi0gI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDIsMCkpIFwKLS0JfHwgKF9fR0xJQkNfXyA8IDIpCi0rCXx8IChkZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA8IDIpKQotICNkZWZpbmUgQ0FOVF9VU0VfU0VORF9SRUNWX01TRwotICNkZWZpbmUgREVGX1NNVFBfQ0FDSEVfREVNQU5ECTAKLSAjZWxzZQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtbWFrZWRlZnMtYWRkLWxuc2wtYW5kLWxyZXNvbHYtdG8tU1lTTElCUy1ieS1kZWZhdWx0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L2ZpbGVzLzAwMDEtbWFrZWRlZnMtYWRkLWxuc2wtYW5kLWxyZXNvbHYtdG8tU1lTTElCUy1ieS1kZWZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTA5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvZmlsZXMvMDAwMS1tYWtlZGVmcy1hZGQtbG5zbC1hbmQtbHJlc29sdi10by1TWVNMSUJTLWJ5LWRlZmF1bHQucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA0Y2FhMThmZWI3MGY4ZjNkMTMzNjU3YzEyNTBhNTNmNGUyOTJiYjQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxMiBPY3QgMjAxOCAxMjozODowMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBtYWtlZGVmczogYWRkIC1sbnNsIGFuZCAtbHJlc29sdiB0byBTWVNMSUJTIGJ5IGRlZmF1bHQKKworV2UgZG9uJ3QgbmVlZCB0byBjaGVjayBsaWJuc2wuc28gYW5kIGxpYnJlc29sdi5zbyBzaW5jZSB0aGUgbGlibnNsMiBpcworc3BlY2lmaWVkIGluIERFUEVORFMgYW5kIGxpYnJlc29sdi5zbyBpcyBmcm9tIGMgbGliYXJhcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1ha2VkZWZzIHwgMjIgKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFrZWRlZnMgYi9tYWtlZGVmcworaW5kZXggMjY4M2JjZS4uOGYxYjNmNCAxMDA2NDQKKy0tLSBhL21ha2VkZWZzCisrKysgYi9tYWtlZGVmcworQEAgLTQ4NCwxNiArNDg0LDcgQEAgY2FzZSAiJFNZU1RFTS4kUkVMRUFTRSIgaW4KKyAJCSAgICBTWVNMSUJTPSIkU1lTTElCUyAtbGRiIgorIAkJICAgIDs7CisgCQllc2FjCistCQlmb3IgbmFtZSBpbiBuc2wgcmVzb2x2ICRHREJNX0xJQlMKKy0JCWRvCistCQkgICAgZm9yIGxpYiBpbiAkQlVJTERfU1lTUk9PVF9OU0xfUEFUSAorLQkJICAgIGRvCistCQkJdGVzdCAtZSAkbGliL2xpYiRuYW1lLmEgLW8gLWUgJGxpYi9saWIkbmFtZS5zbyAmJiB7CistCQkJICAgIFNZU0xJQlM9IiRTWVNMSUJTIC1sJG5hbWUiCistCQkJICAgIGJyZWFrCistCQkJfQorLQkJICAgIGRvbmUKKy0JCWRvbmUKKysJCVNZU0xJQlM9IiRTWVNMSUJTIC1sbnNsIC1scmVzb2x2IgorIAkJIyBLZXJuZWwgMi40IGFkZGVkIElQdjYKKyAJCWNhc2UgIiRSRUxFQVNFIiBpbgorIAkJMi5bMC0zXS4qKSBDQ0FSR1M9IiRDQ0FSR1MgLUROT19JUFY2Ijs7CitAQCAtNTYxLDE2ICs1NTIsNyBAQCBFT0YKKyAJCSAgICBTWVNMSUJTPSIkU1lTTElCUyAtbGRiIgorIAkJICAgIDs7CisgCQllc2FjCistCQlmb3IgbmFtZSBpbiBuc2wgcmVzb2x2CistCQlkbworLQkJICAgIGZvciBsaWIgaW4gJEJVSUxEX1NZU1JPT1RfTlNMX1BBVEgKKy0JCSAgICBkbworLQkJCXRlc3QgLWUgJGxpYi9saWIkbmFtZS5hIC1vIC1lICRsaWIvbGliJG5hbWUuc28gJiYgeworLQkJCSAgICBTWVNMSUJTPSIkU1lTTElCUyAtbCRuYW1lIgorLQkJCSAgICBicmVhaworLQkJCX0KKy0JCSAgICBkb25lCistCQlkb25lCisrCQlTWVNMSUJTPSIkU1lTTElCUyAtbG5zbCAtbHJlc29sdiIKKyAJCVNZU0xJQlM9IiRTWVNMSUJTIC1sZGwiCisgCQk6ICR7U0hMSUJfU1VGRklYPS5zb30KKyAJCTogJHtTSExJQl9DRkxBR1M9LWZQSUN9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4LmluYwppbmRleCAwOTQ0N2Q1Li4zZDRmMWRmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCkBAIC02LDE0ICs2LDEzIEBACiAKIEhPTUVQQUdFPSAiaHR0cDovL3d3dy5wb3N0Zml4Lm9yZyIKIFNFQ1RJT04gPSAibWFpbCIKLURFUEVORFMgPSAiZGIgaWN1IGxpYnBjcmUgb3BlbnNzbCBwb3N0Zml4LW5hdGl2ZSBcCitERVBFTkRTID0gImRiIGljdSBsaWJwY3JlIGxpYm5zbDIgb3BlbnNzbCBwb3N0Zml4LW5hdGl2ZSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgJ29wZW5sZGFwJywgJycsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzYXNsJywgJ2N5cnVzLXNhc2wnLCAnJywgZCl9IFwKICIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImRiLW5hdGl2ZSBpY3UtbmF0aXZlIG9wZW5zc2wtbmF0aXZlIGxpYnBjcmUtbmF0aXZlIgogCi1MSUNFTlNFID0gIklQTC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NDM3NWYzNzQzMTMzNmVhMWIxYjMwMDVmZTNmYTM1NCIKK0xJQ0VOU0UgPSAiSVBMLTEuMCB8IEVQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMTgxNjUxYWQ5OWE3ZGM0Y2M4YzRjZTJmNDkxZWQxYSIKIAogU1JDX1VSSSA9ICJmdHA6Ly9mdHAucG9yY3VwaW5lLm9yZy9taXJyb3JzL3Bvc3RmaXgtcmVsZWFzZS9vZmZpY2lhbC9wb3N0Zml4LSR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovL21ha2VkZWZzLnBhdGNoIFwKQEAgLTc3LDcgKzc2LDYgQEAKIGV4cG9ydCBBVVhMSUJTID0gIi1scGNyZSAtbHNzbCAtbGNyeXB0byAke0FVWExJQlMtc2FzbH0gJHtBVVhMSUJTLWxkYXB9IgogZXhwb3J0IFBPU1RDT05GID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7c2JpbmRpcl9uYXRpdmV9L3Bvc3Rjb25mIgogCi1leHBvcnQgQ0NBUkdTLW5vbmlzX2xpYmMtbXVzbCA9ICItRE5PX05JUyIKICMgT1BULERFQlVHIGlzIGFyZWFkeSBpbiBDRkxBR1MKICMgaWdub3JlIHRoZSBPUFRTPSJDQz0kQ0MiIGluIE1ha2VmaWxlIGl0IHdpbGwgbm90IHVzZSB0aGUgQ0M9JENDICRDQ0FSR1MKIEVYVFJBX09FTUFLRSArPSAiT1BUPSBERUJVRz0gT1BUUz0gIgpAQCAtOTksMjcgKzk3LDkgQEAKICAgICAgICAgICAgICJzOlwkKFNIRUxMKSBtYWtlZGVmcyk6XCQoU0hFTEwpIG1ha2VkZWZzICRTWVNURU0gJFJFTEVBU0UpOiIgXAogICAgICAgICAgICAgJHtTfS9NYWtlZmlsZS5pbgogICAgICAgICBleHBvcnQgQlVJTERfU1lTUk9PVD0iJHtTVEFHSU5HX0RJUl9IT1NUfSIKLSAgICAgICAgZXhwb3J0IEJVSUxEX1NZU1JPT1RfTlNMX1BBVEg9IiR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1NUQUdJTkdfTElCRElSfSIKICAgICBlbHNlCiAgICAgICAgICMgbmF0aXZlIGJ1aWxkCiAgICAgICAgIGV4cG9ydCBCVUlMRF9TWVNST09UPSIke1NUQUdJTkdfRElSX05BVElWRX0iCi0KLSAgICAgICAgIyB1YnVudHUgeDg2IGhvc3Q6IC9saWIveDg2XzY0LWxpbnV4LWdudSg2NCkgL2xpYi9pMzg2LWxpbnV4LWdudSAoMzIpCi0gICAgICAgICMgICAgICAgICAgICAgb24gNjQgYml0cywgMzIgbGlicyBpbiBpMzg2LWxpbnV4LWdudQotICAgICAgICAjIGxldCBtYWtlZGVmcyBmaW5kcyBuc2wgYW5kIHJlc29sdiBsaWJzLCBob3N0IENDIHdpbGwgbGluawotICAgICAgICAjIHRoZSBjb3JyZWN0IGxpYnJhcmllcwotICAgICAgICBCVUlMRF9TWVNST09UX05TTF9QQVRIPSIkKCR7Q0N9IC1wcmludC1zZWFyY2gtZGlycyAyPi9kZXYvbnVsbCB8IFwKLSAgICAgICAgICAgICAgICAgICAgICBzZWQgLW4gJy9ebGlicmFyaWVzOiA9L3MvbGlicmFyaWVzOiA9Ly9wJyB8IFwKLSAgICAgICAgICAgICAgICAgICAgICBzZWQgLWUgJ3MvOi9cbi9nJyB8IHhhcmdzIC1uMSByZWFkbGluayAtZiB8IFwKLSAgICAgICAgICAgICAgICAgICAgICBncmVwIC12ICdnY2NcfC9bMC05Ll1cKyQnIHwgc29ydCAtdSkiCi0gICAgICAgIGlmIFsgLXogIiRCVUlMRF9TWVNST09UX05TTF9QQVRIIiBdOyB0aGVuCi0gICAgICAgICAgICBCVUlMRF9TWVNST09UX05TTF9QQVRIPSIvdXNyL2xpYjY0IC9saWI2NCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvbGliL3g4Nl82NC1saW51eC1nbnUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL3Vzci9saWIgICAvbGliIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9saWIvaTM4Ni1saW51eC1nbnUiCi0gICAgICAgIGZpCi0gICAgICAgIGV4cG9ydCBCVUlMRF9TWVNST09UX05TTF9QQVRICiAgICAgZmkKIAogICAgIG9lX3J1bm1ha2UgbWFrZWZpbGVzCkBAIC0yMDcsNiArMTg3LDggQEAKICAgICBjaG93biA6cG9zdGRyb3AgJHtEfSR7c2JpbmRpcn0vcG9zdGRyb3AKICAgICBjaG1vZCBnK3MgJHtEfSR7c2JpbmRpcn0vcG9zdHF1ZXVlCiAgICAgY2htb2QgZytzICR7RH0ke3NiaW5kaXJ9L3Bvc3Rkcm9wCisKKyAgICBybSAtcmYgJHtEfS9ldGMvcG9zdGZpeC9tYWtlZGVmcy5vdXQKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewpAQCAtMjE0LDE0ICsxOTYsMTIgQEAKICAgICBsbiAtc2YgLi4vc2Jpbi9zZW5kbWFpbC5wb3N0Zml4ICR7RH0ke2JpbmRpcn0vbWFpbHEKIH0KIAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBtYWtlZGVmcy5vdXQKLSAgICBzZWQgLWkgJ3M6LWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSo6Omc7IHM6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgJHtEfS9ldGMvcG9zdGZpeC9tYWtlZGVmcy5vdXQKLX0KLQotQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCitBTFRFUk5BVElWRV8ke1BOfSArPSAic2VuZG1haWwgbWFpbHEgbmV3YWxpYXNlcyIKK0FMVEVSTkFUSVZFX1RBUkdFVFttYWlscV0gPSAiJHtiaW5kaXJ9L21haWxxIgorQUxURVJOQVRJVkVfVEFSR0VUW25ld2FsaWFzZXNdID0gIiR7YmluZGlyfS9uZXdhbGlhc2VzIgogQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke3NiaW5kaXJ9L3NlbmRtYWlsLnBvc3RmaXgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwiCisKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEyMCIKIAogQUxURVJOQVRJVkVfJHtQTn0tZG9jICs9ICJtYWlscS4xIG5ld2FsaWFzZXMuMSBzZW5kbWFpbC4xIgpAQCAtMjQ4LDEwICsyMjgsMTAgQEAKICAgICAgICAgIyBUaGlzIGNhbiBmYWlsIGRlcGVuZGluZyBvbiBob3N0IHNldHVwCiAgICAgICAgIGlmICEgbmV3YWxpYXNlcyAtQyAkRC9ldGMvcG9zdGZpeC9tYWluLmNmIC1vQSREL2V0Yy9hbGlhc2VzOyB0aGVuCiAgICAgICAgICAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdCAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0KLSAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbHNlCisgICAgICAgICAgICB0b3VjaCAkRC9ldGMvcG9zdGZpeC92aXJ0dWFsX2FsaWFzCisgICAgICAgICAgICBwb3N0bWFwIC1jICREL2V0Yy9wb3N0Zml4ICREL2V0Yy9wb3N0Zml4L3ZpcnR1YWxfYWxpYXMKICAgICAgICAgZmkKLSAgICAgICAgdG91Y2ggJEQvZXRjL3Bvc3RmaXgvdmlydHVhbF9hbGlhcwotICAgICAgICBwb3N0bWFwIC1jICREL2V0Yy9wb3N0Zml4ICREL2V0Yy9wb3N0Zml4L3ZpcnR1YWxfYWxpYXMKIAogICAgIGZpCiB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeF8zLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWFmNDA2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHBvc3RmaXguaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUNoZWNrLWZvci1nbGliYy1iZWZvcmUtc2V0dGluZy1DQU5UX1VTRV9TRU5EX1JFQ1ZfTVMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LWluc3RhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ljdS1jb25maWcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWVhMDczYTliMGJlYTViZGI1OTA0NjBhMjcwYTRhYTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDA2ODQ5NDE4ZDExOWQwOTM2Njk5N2IyYjQ4MWJiMjNmNzM3NjI5NzY5YjRlNGE1MmRhNDJmYjNhZDhiMDU3NiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxOGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuMy4xLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcG9zdGZpeC5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LWluc3RhbGwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ljdS1jb25maWcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtYWRkLWxuc2wtYW5kLWxyZXNvbHYtdG8tU1lTTElCUy1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDM4MWM2NDkyZjQxNWU0YTY5Y2Y1MDk5ZDRhY2VhNzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmNTE0ZGFlNDJiNTI3NWNiNGJjOWM2OTI4M2YxNmMwNjIwMGI3MTgxM2QwYmI2OTY1NjhjNGJhN2FlN2UzYiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicG9zdGZpeFwtKD9QPHB2ZXI+M1wuMyhcLlxkKykrKS50YXIuZ3oiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3B1cmUtZnRwZC9wdXJlLWZ0cGRfMS4wLjQyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wdXJlLWZ0cGQvcHVyZS1mdHBkXzEuMC40Mi5iYgppbmRleCBjMWYxNTA0Li5lNWM1NjE2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3B1cmUtZnRwZC9wdXJlLWZ0cGRfMS4wLjQyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHVyZS1mdHBkL3B1cmUtZnRwZF8xLjAuNDIuYmIKQEAgLTUsNyArNSw3IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwMzUyZmIyYmZlMTdmNDI2MTY4N2EwZDZlMDlmNDg5IgogCi1ERVBFTkRTID0gImxpYmNhcCIKK0RFUEVORFMgPSAibGliY2FwIHZpcnR1YWwvY3J5cHQiCiAKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQucHVyZWZ0cGQub3JnL3B1Yi9wdXJlLWZ0cGQvcmVsZWFzZXMvcHVyZS1mdHBkLSR7UFZ9LnRhci5neiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3JhZHZkL3JhZHZkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmQuaW5jCmluZGV4IDA2ZDE2YTQuLjU5YTA3ZDcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcmFkdmQvcmFkdmQuaW5jCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfcmFkdmQgXAogICAgICAgICAgICBmaWxlOi8vcmFkdmQuZGVmYXVsdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBwa2djb25maWcgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMgdXNlcmFkZCBwa2djb25maWcgc3lzdGVtZAogCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicmFkdmQuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKQEAgLTM2LDcgKzM2LDcgQEAKICAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JhZHZkCiAgICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JhZHZkCiAKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfcmFkdmQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX3JhZHZkCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3JhZHZkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3JhZHZkCiAKICAgICAjIEluc3RhbGwgc3lzdGVtZCBzZXJ2aWNlIGZpbGVzCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQpAQCAtNTQsOSArNTQsNiBAQAogICAgIGRvbmUKIH0KIAotSU5JVFNDUklQVF9OQU1FID0gInJhZHZkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMjAgODAiCi0KIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9yYWR2ZC8gLU0gLWcgbm9ncm91cCByYWR2ZCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLUJ1Zy00ODQzLXB0MS1leHRfZWRpcmVjdG9yeV91c2VyaXBfYWNsLXJlZmFjdG9yaW5nLWYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtQnVnLTQ4NDMtcHQxLWV4dF9lZGlyZWN0b3J5X3VzZXJpcF9hY2wtcmVmYWN0b3JpbmctZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDFkOWU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAxLUJ1Zy00ODQzLXB0MS1leHRfZWRpcmVjdG9yeV91c2VyaXBfYWNsLXJlZmFjdG9yaW5nLWYucGF0Y2gKQEAgLTAsMCArMSw1MDYgQEAKK0Zyb20gMDFhNDRjOTZkYmQwNDkzNmU5Y2IyNTAxNzQ1YTgzNGEwYjA5ZDUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFtb3MgSmVmZnJpZXMgPHlhZGlqQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFN1biwgMTMgTWF5IDIwMTggMDY6NTc6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQnVnIDQ4NDMgcHQxOiBleHRfZWRpcmVjdG9yeV91c2VyaXBfYWNsIHJlZmFjdG9yaW5nIGZvciBHQ0MtOAorICgjMjA0KQorCitQcm9wb3NlZCBjaGFuZ2VzIHRvIHRoaXMgaGVscGVyIHRvIGZpeCBzdHJjYXQgLyBzdHJuY2F0IGJ1ZmZlcgorb3ZlcnJlYWQgLyBvdmVyZmxvdyBpc3N1ZXMuCisKK1RoZSBhcHByb2FjaCB0YWtlcyB0aHJlZSBwYXJ0czoKKworKiBhZGRzIGEgbWFrZUhleFN0cmluZyBmdW5jdGlvbiB0byByZXBsYWNlIG1hbnkgZm9yLWxvb3BzCisgIGNhdGVuYXRpbmcgYml0cyBvZiBzdHJpbmdzIHRvZ2V0aGVyIHdpdGggaGV4IGNvbnZlcnNpb24gaW50byBhCisgIHNlY29uZCBidWZmZXIuIFJlcGxhY2luZyB3aXRoIGEgc25wcmludGYoKSBhbmQgYnVmZmVyIG92ZXJmbG93CisgIGhhbmRsaW5nLgorCisqIGEgY29weSBvZiBJcDo6QWRkcmVzczo6bG9va3VwSG9zdElwIHRvIGNvbnZlcnQgdGhlIGlucHV0CisgIHN0cmluZyBpbnRvIElQIGFkZHJlc3MgYmluYXJ5IGZvcm1hdCwgdGhlbiBnZW5lcmF0ZSB0aGUgaGV4CisgIHN0cmluZyB1c2luZyB0aGUgYWJvdmUgbmV3IGhleCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGxvb3BlZAorICBzdWItc3RyaW5nIGNvbmNhdGVuYXRpb25zIGFjcm9zcyBzZXZlcmFsIGJ1ZmZlcnMuCisgIFRoaXMgcmVtb3ZlcyBhbGwgdGhlICIwMCIgYW5kICIwMDAwIiBzdHJuY2F0KCkgY2FsbHMgYW5kCisgIGFsbG93cyBmYXIgc2ltcGxlciBjb2RlIGV2ZW4gd2l0aCBhZGRlZCBidWZmZXIgb3ZlcmZsb3cKKyAgaGFuZGxpbmcuCisKKyogcmVwbGFjZSBtdWx0aXBsZSBzdHJpbmcgcGFydCBjb25jYXRlbmF0aW9ucyB3aXRoIGEgZmV3IHNpbXBsZXIKKyAgY2FsbHMgdG8gc25wcmludGYoKSBmb3IgYWxsIHRoZSBzZWFyY2hfaXAgYnVmZmVyIGNvbnN0cnVjdGlvbnMuCisgIEFkZGluZyBidWZmZXIgb3ZlcmZsb3cgaGFuZGxpbmcgYXMgbmVlZGVkIGZvciB0aGUgbmV3IGNhbGxzLgorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgLi4uL2V4dF9lZGlyZWN0b3J5X3VzZXJpcF9hY2wuY2MgICAgICAgICAgICAgIHwgMzc2ICsrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgMjU2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaGVscGVycy9leHRlcm5hbF9hY2wvZURpcmVjdG9yeV91c2VyaXAvZXh0X2VkaXJlY3RvcnlfdXNlcmlwX2FjbC5jYyBiL2hlbHBlcnMvZXh0ZXJuYWxfYWNsL2VEaXJlY3RvcnlfdXNlcmlwL2V4dF9lZGlyZWN0b3J5X3VzZXJpcF9hY2wuY2MKK2luZGV4IDYzNjA5ZTQuLmFkMTZiZmQgMTAwNjQ0CistLS0gYS9oZWxwZXJzL2V4dGVybmFsX2FjbC9lRGlyZWN0b3J5X3VzZXJpcC9leHRfZWRpcmVjdG9yeV91c2VyaXBfYWNsLmNjCisrKysgYi9oZWxwZXJzL2V4dGVybmFsX2FjbC9lRGlyZWN0b3J5X3VzZXJpcC9leHRfZWRpcmVjdG9yeV91c2VyaXBfYWNsLmNjCitAQCAtNjcsNiArNjcsOSBAQAorICNpZmRlZiBIQVZFX0xEQVBfSAorICNpbmNsdWRlIDxsZGFwLmg+CisgI2VuZGlmCisrI2lmZGVmIEhBVkVfTkVUREJfSAorKyNpbmNsdWRlIDxuZXRkYi5oPgorKyNlbmRpZgorIAorICNpZmRlZiBIRUxQRVJfSU5QVVRfQlVGRkVSCisgI2RlZmluZSBFRFVJX01BWExFTiAgICAgSEVMUEVSX0lOUFVUX0JVRkZFUgorQEAgLTcxNCwxMSArNzE3LDE0IEBAIEJpbmRMREFQKGVkdWlfbGRhcF90ICpsLCBjaGFyICpkbiwgY2hhciAqcHcsIHVuc2lnbmVkIGludCB0KQorIAorICAgICAvKiBDb3B5IGRldGFpbHMgLSBkbiBhbmQgcHcgQ0FOIGJlIE5VTEwgZm9yIGFub255bW91cyBhbmQvb3IgVExTICovCisgICAgIGlmIChkbiAhPSBOVUxMKSB7CisrICAgICAgICBpZiAoc3RybGVuKGRuKSA+PSBzaXplb2YobC0+ZG4pKQorKyAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7IC8qIEROIHRvbyBsYXJnZSAqLworKworICAgICAgICAgaWYgKChsLT5iYXNlZG5bMF0gIT0gJ1wwJykgJiYgKHN0cnN0cihkbiwgbC0+YmFzZWRuKSA9PSBOVUxMKSkgeworICAgICAgICAgICAgIC8qIFdlIGdvdCBhIGJhc2VkbiwgYnV0IGl0J3Mgbm90IHBhcnQgb2YgZG4gKi8KKy0gICAgICAgICAgICB4c3RybmNweShsLT5kbiwgZG4sIHNpemVvZihsLT5kbikpOworLSAgICAgICAgICAgIHN0cm5jYXQobC0+ZG4sICIsIiwgMSk7CistICAgICAgICAgICAgc3RybmNhdChsLT5kbiwgbC0+YmFzZWRuLCBzdHJsZW4obC0+YmFzZWRuKSk7CisrICAgICAgICAgICAgY29uc3QgaW50IHggPSBzbnByaW50ZihsLT5kbiwgc2l6ZW9mKGwtPmRuKS0xLCAiJXMsJXMiLCBkbiwgbC0+YmFzZWRuKTsKKysgICAgICAgICAgICBpZiAoeCA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih4KSA+PSBzaXplb2YobC0+ZG4pKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAvKiBETiB0b28gbGFyZ2UgKi8KKyAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgIHhzdHJuY3B5KGwtPmRuLCBkbiwgc2l6ZW9mKGwtPmRuKSk7CisgICAgIH0KK0BAIC03NzgsMjQgKzc4NCw3MyBAQCBCaW5kTERBUChlZHVpX2xkYXBfdCAqbCwgY2hhciAqZG4sIGNoYXIgKnB3LCB1bnNpZ25lZCBpbnQgdCkKKyAgICAgfQorIH0KKyAKKysvLyBYWFg6IGR1cGxpY2F0ZSAocGFydGlhbCkgb2YgSXA6OkFkZHJlc3M6Omxvb2t1cEhvc3RJcAorKy8qKgorKyAqIENvbnZlcnQgdGhlIElQIGFkZHJlc3Mgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIHNyYyB0bworKyAqIGl0cyBiaW5hcnkgcmVwcmVzZW50YXRpb24uCisrICoKKysgKiBccmV0dXJuIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3JjIElQIGFkZHJlc3MuCisrICogICAgICAgICBNdXN0IGJlIGZyZWUnZCB1c2luZyBmcmVlYWRkcmluZm8oKS4KKysgKi8KKytzdGF0aWMgc3RydWN0IGFkZHJpbmZvICoKKyttYWtlSXBCaW5hcnkoY29uc3QgY2hhciAqc3JjKQorK3sKKysgICAgc3RydWN0IGFkZHJpbmZvIHdhbnQ7CisrICAgIG1lbXNldCgmd2FudCwgMCwgc2l6ZW9mKHdhbnQpKTsKKysgICAgd2FudC5haV9mbGFncyA9IEFJX05VTUVSSUNIT1NUOyAvLyBwcmV2ZW50IGFjdHVhbCBETlMgbG9va3VwcyEKKysKKysgICAgc3RydWN0IGFkZHJpbmZvICpkc3QgPSBudWxscHRyOworKyAgICBpZiAoZ2V0YWRkcmluZm8oc3JjLCBudWxscHRyLCAmd2FudCwgJmRzdCkgIT0gMCkgeworKyAgICAgICAgLy8gbm90IGFuIElQIGFkZHJlc3MKKysgICAgICAgIC8qIGZyZWUgYW55IG1lbW9yeSBnZXRhZGRyaW5mbygpIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gKi8KKysgICAgICAgIGlmIChkc3QpCisrICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGRzdCk7CisrICAgICAgICByZXR1cm4gbnVsbHB0cjsKKysgICAgfQorKworKyAgICByZXR1cm4gZHN0OworK30KKysKKysvKioKKysgKiBDb252ZXJ0IHNyY0xlbiBieXRlcyBmcm9tIHNyYyBpbnRvIEhFWCBhbmQgc3RvcmUgaW50byBkc3QsIHdoaWNoCisrICogaGFzIGEgbWF4aW11bSBjb250ZW50IHNpemUgb2YgZHN0U2l6ZSBpbmNsdWRpbmcgYy1zdHJpbmcgdGVybWluYXRvci4KKysgKiBUaGUgZHN0IHZhbHVlIHByb2R1Y2VkIHdpbGwgYmUgYSAwLXRlcm1pbmF0ZWQgYy1zdHJpbmcuCisrICoKKysgKiBccmV0dmFsICAgTiAgbGVuZ3RoIG9mIGRzdCB3cml0dGVuIChleGNsdWRpbmcgYy1zdHJpbmcgdGVybWluYXRvcikKKysgKiBccmV0dmFsIC0xMSAgKExEQVBfRVJSX09PQikgYnVmZmVyIG92ZXJmbG93IGRldGVjdGVkCisrICovCisrc3RhdGljIGludAorK21ha2VIZXhTdHJpbmcoY2hhciAqZHN0LCBjb25zdCBpbnQgZHN0U2l6ZSwgY29uc3QgY2hhciAqc3JjLCBjb25zdCBpbnQgc3JjTGVuKQorK3sKKysgICAgLy8gSEVYIGVuY29kaW5nIGRvdWJsZXMgdGhlIGFtb3VudCBvZiBieXRlcy9vY3RldHMgY29waWVkCisrICAgIGlmICgoc3JjTGVuKjIpID49IGRzdFNpemUpCisrICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAvLyBjYW5ub3QgY29weSB0aGF0IG1hbnkKKysKKysgICAgKmRzdCA9IDA7CisrCisrICAgIGZvciAoaW50IGsgPSAwOyBrIDwgc3JjTGVuOyArK2spIHsKKysgICAgICAgIGludCBjID0gc3RhdGljX2Nhc3Q8aW50PihzcmNba10pOworKyAgICAgICAgaWYgKGMgPCAwKQorKyAgICAgICAgICAgIGMgPSBjICsgMjU2OworKyAgICAgICAgY2hhciBoZXhjWzRdOworKyAgICAgICAgY29uc3QgaW50IGhsZW4gPSBzbnByaW50ZihoZXhjLCBzaXplb2YoaGV4YyksICIlMDJYIiwgYyk7CisrICAgICAgICBpZiAoaGxlbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihobGVuKSA+IHNpemVvZihoZXhjKSkgLy8gc2hvdWxkIGJlIGltcG9zc2libGUKKysgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COworKyAgICAgICAgc3RyY2F0KGRzdCwgaGV4Yyk7CisrICAgIH0KKysgICAgcmV0dXJuIHN0cmxlbihkc3QpOworK30KKysKKyAvKgorICAqIENvbnZlcnRJUCgpIC0gPGVkdWlfbGRhcF90PiA8aXA+CisgICoKKyAgKiBUYWtlIGFuIElQdjQgYWRkcmVzcyBpbiBkb3QtZGVjaW1hbCBvciBJUHY2IG5vdGF0aW9uLCBhbmQgY29udmVydCB0byAyLWRpZ2l0IEhFWCBzdG9yZWQgaW4gbC0+c2VhcmNoX2lwCisgICogVGhpcyBpcyB0aGUgbmV0d29ya0FkZHJlc3MgdGhhdCB3ZSBzZWFyY2ggTERBUCBmb3IuCistICoKKy0gKiBQRU5ESU5HIC0tIENIQU5HRSBPVkVSIFRPIGluZXQqX3B0b24sIGJ1dCBpbmV0Nl9wdG9uIGRvZXMgbm90IHByb3ZpZGUgdGhlIGNvcnJlY3Qgc3ludGF4CistICoKKyAgKi8KKyBzdGF0aWMgaW50CisgQ29udmVydElQKGVkdWlfbGRhcF90ICpsLCBjaGFyICppcCkKKyB7CistICAgIGNoYXIgYnVmYVtFRFVJX01BWExFTl0sIGJ1ZmJbRURVSV9NQVhMRU5dLCBvYmpbRURVSV9NQVhMRU5dOworLSAgICBjaGFyIGhleGNbNF0sICpwOworICAgICB2b2lkICp5LCAqejsKKy0gICAgc2l6ZV90IHM7CistICAgIGxvbmcgeDsKKy0gICAgaW50IGksIGosIHQsIHN3aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUHY2ICI6OiIgY3V0IG92ZXIgdG9nZ2xlICovCisgICAgIGlmIChsID09IE5VTEwpIHJldHVybiBMREFQX0VSUl9OVUxMOworICAgICBpZiAoaXAgPT0gTlVMTCkgcmV0dXJuIExEQVBfRVJSX1BBUkFNOworICAgICBpZiAoIShsLT5zdGF0dXMgJiBMREFQX0lOSVRfUykpIHJldHVybiBMREFQX0VSUl9JTklUOyAgICAgICAvKiBOb3QgaW5pdGFsaXplZCAqLworQEAgLTgzMSwxODMgKzg4NiwyMiBAQCBDb252ZXJ0SVAoZWR1aV9sZGFwX3QgKmwsIGNoYXIgKmlwKQorICAgICAgICAgICAgIGwtPnN0YXR1cyB8PSAoTERBUF9JUFY0X1MpOworICAgICAgICAgeiA9IE5VTEw7CisgICAgIH0KKy0gICAgcyA9IHN0cmxlbihpcCk7CistICAgICooYnVmYSkgPSAnXDAnOworLSAgICAqKGJ1ZmIpID0gJ1wwJzsKKy0gICAgKihvYmopID0gJ1wwJzsKKy0gICAgLyogU3RyaW5nU3BsaXQoKSB3aWxsIHplcm8gb3V0IGJ1ZmEgJiBvYmogYXQgZWFjaCBjYWxsICovCistICAgIG1lbXNldChsLT5zZWFyY2hfaXAsICdcMCcsIHNpemVvZihsLT5zZWFyY2hfaXApKTsKKy0gICAgeHN0cm5jcHkoYnVmYSwgaXAsIHNpemVvZihidWZhKSk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBUbyBhdm9pZCBzZWdmYXVsdHMsIHVzZSBidWZhIGluc3RlYWQgb2YgaXAgKi8KKy0gICAgc3dpID0gMDsKKy0gICAgaWYgKGwtPnN0YXR1cyAmIExEQVBfSVBWNl9TKSB7CistICAgICAgICAvKiBTZWFyY2ggZm9yIDo6IGluIHN0cmluZyAqLworLSAgICAgICAgaWYgKChidWZhWzBdID09ICc6JykgJiYgKGJ1ZmFbMV0gPT0gJzonKSkgeworLSAgICAgICAgICAgIC8qIGJ1ZmEgc3RhcnRzIHdpdGggYSA6Oiwgc28ganVzdCBjb3B5IGFuZCBjbGVhciAqLworLSAgICAgICAgICAgIHhzdHJuY3B5KGJ1ZmIsIGJ1ZmEsIHNpemVvZihidWZiKSk7CistICAgICAgICAgICAgKihidWZhKSA9ICdcMCc7CistICAgICAgICAgICAgKytzd2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSBidWZiICovCistICAgICAgICB9IGVsc2UgaWYgKChidWZhWzBdID09ICc6JykgJiYgKGJ1ZmFbMV0gIT0gJzonKSkgeworLSAgICAgICAgICAgIC8qIGJ1ZmEgc3RhcnRzIHdpdGggYSA6LCBhIHR5cG8gc28ganVzdCBmaWxsIGluIGEgJzonLCBjYXQgYW5kIGNsZWFyICovCistICAgICAgICAgICAgYnVmYlswXSA9ICc6JzsKKy0gICAgICAgICAgICBzdHJuY2F0KGJ1ZmIsIGJ1ZmEsIHN0cmxlbihidWZhKSk7CistICAgICAgICAgICAgKihidWZhKSA9ICdcMCc7CistICAgICAgICAgICAgKytzd2k7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgYSBidWZiICovCistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIHAgPSBzdHJzdHIoYnVmYSwgIjo6Iik7CistICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkgeworLSAgICAgICAgICAgICAgICAvKiBGb3VuZCBpdCwgYnJlYWsgYnVmYSBkb3duIGFuZCBzcGxpdCBpbnRvIGJ1ZmIgaGVyZSAqLworLSAgICAgICAgICAgICAgICAqKGJ1ZmIpID0gJ1wwJzsKKy0gICAgICAgICAgICAgICAgaSA9IHN0cmxlbihwKTsKKy0gICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmIsIHAsIGkpOworLSAgICAgICAgICAgICAgICAqcCA9ICdcMCc7CistICAgICAgICAgICAgICAgIGJ1ZmJbaV0gPSAnXDAnOworLSAgICAgICAgICAgICAgICArK3N3aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBhIGJ1ZmIgKi8KKy0gICAgICAgICAgICB9CistICAgICAgICB9CistICAgIH0KKy0gICAgcyA9IHN0cmxlbihidWZhKTsKKy0gICAgaWYgKHMgPCAxKQorLSAgICAgICAgcyA9IHN0cmxlbihidWZiKTsKKy0gICAgd2hpbGUgKHMgPiAwKSB7CistICAgICAgICBpZiAoKGwtPnN0YXR1cyAmIExEQVBfSVBWNF9TKSAmJiAoc3dpID09IDApKSB7CistICAgICAgICAgICAgLyogQnJlYWsgZG93biBJUHY0IGFkZHJlc3MgICovCistICAgICAgICAgICAgdCA9IFN0cmluZ1NwbGl0KGJ1ZmEsICcuJywgb2JqLCBzaXplb2Yob2JqKSk7CistICAgICAgICAgICAgaWYgKHQgPiAwKSB7CistICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKy0gICAgICAgICAgICAgICAgeCA9IHN0cnRvbChvYmosIChjaGFyICoqKU5VTEwsIDEwKTsKKy0gICAgICAgICAgICAgICAgaWYgKCgoeCA8IDApIHx8ICh4ID4gMjU1KSkgfHwgKChlcnJubyAhPSAwKSAmJiAoeCA9PSAwKSkgfHwgKChvYmpbMF0gIT0gJzAnKSAmJiAoeCA9PSAwKSkpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE91dCBvZiBib3VuZHMgLS0gSW52YWxpZCBhZGRyZXNzICovCistICAgICAgICAgICAgICAgIG1lbXNldChoZXhjLCAnXDAnLCBzaXplb2YoaGV4YykpOworLSAgICAgICAgICAgICAgICBpbnQgaGxlbiA9IHNucHJpbnRmKGhleGMsIHNpemVvZihoZXhjKSwgIiUwMlgiLCAoaW50KXgpOworLSAgICAgICAgICAgICAgICBzdHJuY2F0KGwtPnNlYXJjaF9pcCwgaGV4YywgaGxlbik7CistICAgICAgICAgICAgfSBlbHNlCistICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWNoZWQgZW5kIG9mIG9jdGV0ICovCistICAgICAgICB9IGVsc2UgaWYgKGwtPnN0YXR1cyAmIExEQVBfSVBWNl9TKSB7CistICAgICAgICAgICAgLyogQnJlYWsgZG93biBJUHY2IGFkZHJlc3MgKi8KKy0gICAgICAgICAgICBpZiAoc3dpID4gMSkKKy0gICAgICAgICAgICAgICAgdCA9IFN0cmluZ1NwbGl0KGJ1ZmIsICc6Jywgb2JqLCBzaXplb2Yob2JqKSk7ICAgICAgICAgICAvKiBBZnRlciAiOjoiICovCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICB0ID0gU3RyaW5nU3BsaXQoYnVmYSwgJzonLCBvYmosIHNpemVvZihvYmopKTsgICAgICAgICAgIC8qIEJlZm9yZSAiOjoiICovCistICAgICAgICAgICAgLyogQ29udmVydCBvY3RldCBieSBzaXplICh0KSAtIGFuZCBmaWxsIDAncyAqLworLSAgICAgICAgICAgIHN3aXRjaCAodCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUHY2IGlzIGFscmVhZHkgaW4gSEVYLCBjb3B5IGNvbnRlbnRzICovCistICAgICAgICAgICAgY2FzZSA0OgorLSAgICAgICAgICAgICAgICBoZXhjWzBdID0gKGNoYXIpIHRvdXBwZXIoKGludClvYmpbMF0pOworLSAgICAgICAgICAgICAgICBpID0gKGludCloZXhjWzBdOworLSAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGkpKQorLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsgICAgICAgICAgICAgICAgICAgIC8qIE91dCBvZiBib3VuZHMgKi8KKy0gICAgICAgICAgICAgICAgaGV4Y1sxXSA9IChjaGFyKSB0b3VwcGVyKChpbnQpb2JqWzFdKTsKKy0gICAgICAgICAgICAgICAgaSA9IChpbnQpaGV4Y1sxXTsKKy0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChpKSkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7ICAgICAgICAgICAgICAgICAgICAvKiBPdXQgb2YgYm91bmRzICovCistICAgICAgICAgICAgICAgIGhleGNbMl0gPSAnXDAnOworLSAgICAgICAgICAgICAgICBzdHJuY2F0KGwtPnNlYXJjaF9pcCwgaGV4YywgMik7CistICAgICAgICAgICAgICAgIGhleGNbMF0gPSAoY2hhcikgdG91cHBlcigoaW50KW9ialsyXSk7CistICAgICAgICAgICAgICAgIGkgPSAoaW50KWhleGNbMF07CistICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoaSkpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAgICAgICAgICAgICAgICAgICAgLyogT3V0IG9mIGJvdW5kcyAqLworLSAgICAgICAgICAgICAgICBoZXhjWzFdID0gKGNoYXIpIHRvdXBwZXIoKGludClvYmpbM10pOworLSAgICAgICAgICAgICAgICBpID0gKGludCloZXhjWzFdOworLSAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGkpKQorLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsgICAgICAgICAgICAgICAgICAgIC8qIE91dCBvZiBib3VuZHMgKi8KKy0gICAgICAgICAgICAgICAgaGV4Y1syXSA9ICdcMCc7CistICAgICAgICAgICAgICAgIHN0cm5jYXQobC0+c2VhcmNoX2lwLCBoZXhjLCAyKTsKKy0gICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgY2FzZSAzOgorLSAgICAgICAgICAgICAgICBoZXhjWzBdID0gJzAnOworLSAgICAgICAgICAgICAgICBoZXhjWzFdID0gKGNoYXIpIHRvdXBwZXIoKGludClvYmpbMF0pOworLSAgICAgICAgICAgICAgICBpID0gKGludCloZXhjWzFdOworLSAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGkpKQorLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsgICAgICAgICAgICAgICAgICAgIC8qIE91dCBvZiBib3VuZHMgKi8KKy0gICAgICAgICAgICAgICAgaGV4Y1syXSA9ICdcMCc7CistICAgICAgICAgICAgICAgIHN0cm5jYXQobC0+c2VhcmNoX2lwLCBoZXhjLCAyKTsKKy0gICAgICAgICAgICAgICAgaGV4Y1swXSA9IChjaGFyKSB0b3VwcGVyKChpbnQpb2JqWzFdKTsKKy0gICAgICAgICAgICAgICAgaSA9IChpbnQpaGV4Y1swXTsKKy0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChpKSkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7ICAgICAgICAgICAgICAgICAgICAvKiBPdXQgb2YgYm91bmRzICovCistICAgICAgICAgICAgICAgIGhleGNbMV0gPSAoY2hhcikgdG91cHBlcigoaW50KW9ialsyXSk7CistICAgICAgICAgICAgICAgIGkgPSAoaW50KWhleGNbMV07CistICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoaSkpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAgICAgICAgICAgICAgICAgICAgLyogT3V0IG9mIGJvdW5kcyAqLworLSAgICAgICAgICAgICAgICBoZXhjWzJdID0gJ1wwJzsKKy0gICAgICAgICAgICAgICAgc3RybmNhdChsLT5zZWFyY2hfaXAsIGhleGMsIDIpOworLSAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICBjYXNlIDI6CistICAgICAgICAgICAgICAgIHN0cm5jYXQobC0+c2VhcmNoX2lwLCAiMDAiLCAyKTsKKy0gICAgICAgICAgICAgICAgaGV4Y1swXSA9IChjaGFyKSB0b3VwcGVyKChpbnQpb2JqWzBdKTsKKy0gICAgICAgICAgICAgICAgaSA9IChpbnQpaGV4Y1swXTsKKy0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChpKSkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7ICAgICAgICAgICAgICAgICAgICAvKiBPdXQgb2YgYm91bmRzICovCistICAgICAgICAgICAgICAgIGhleGNbMV0gPSAoY2hhcikgdG91cHBlcigoaW50KW9ialsxXSk7CistICAgICAgICAgICAgICAgIGkgPSAoaW50KWhleGNbMV07CistICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoaSkpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COyAgICAgICAgICAgICAgICAgICAgLyogT3V0IG9mIGJvdW5kcyAqLworLSAgICAgICAgICAgICAgICBoZXhjWzJdID0gJ1wwJzsKKy0gICAgICAgICAgICAgICAgc3RybmNhdChsLT5zZWFyY2hfaXAsIGhleGMsIDIpOworLSAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICBjYXNlIDE6CistICAgICAgICAgICAgICAgIHN0cm5jYXQobC0+c2VhcmNoX2lwLCAiMDAiLCAyKTsKKy0gICAgICAgICAgICAgICAgaGV4Y1swXSA9ICcwJzsKKy0gICAgICAgICAgICAgICAgaGV4Y1sxXSA9IChjaGFyKSB0b3VwcGVyKChpbnQpb2JqWzBdKTsKKy0gICAgICAgICAgICAgICAgaSA9IChpbnQpaGV4Y1sxXTsKKy0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChpKSkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7ICAgICAgICAgICAgICAgICAgICAvKiBPdXQgb2YgYm91bmRzICovCistICAgICAgICAgICAgICAgIGhleGNbMl0gPSAnXDAnOworLSAgICAgICAgICAgICAgICBzdHJuY2F0KGwtPnNlYXJjaF9pcCwgaGV4YywgMik7CistICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgIGlmICh0ID4gNCkKKy0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7CistICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAvKiBDb2RlIHRvIHBhZCB0aGUgYWRkcmVzcyB3aXRoIDAncyBiZXR3ZWVuIGEgJzo6JyAqLworLSAgICAgICAgICAgIGlmICgoc3RybGVuKGJ1ZmEpID09IDApICYmIChzd2kgPT0gMSkpIHsKKy0gICAgICAgICAgICAgICAgLyogV2UgYXJlICpBVCogdGhlIHNwbGl0LCBwYWQgaW4gc29tZSAwMDAwICovCistICAgICAgICAgICAgICAgIHQgPSBzdHJsZW4oYnVmYik7CistICAgICAgICAgICAgICAgIC8qIEhvdyBtYW55ICc6JyBleGlzdCBpbiBidWZiID8gKi8KKy0gICAgICAgICAgICAgICAgaiA9IDA7CistICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0OyArK2kpIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChidWZiW2ldID09ICc6JykKKy0gICAgICAgICAgICAgICAgICAgICAgICArK2o7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgLS1qOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJlY2VkaW5nICI6OiIgZG9lc24ndCBjb3VudCAqLworLSAgICAgICAgICAgICAgICB0ID0gOCAtIChzdHJsZW4obC0+c2VhcmNoX2lwKSAvIDQpIC0gajsgICAgICAgICAvKiBSZW1haW5kZXIgKi8KKy0gICAgICAgICAgICAgICAgaWYgKHQgPiAwKSB7CistICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdDsgKytpKQorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cm5jYXQobC0+c2VhcmNoX2lwLCAiMDAwMCIsIDQpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgfQorLSAgICAgICAgfQorLSAgICAgICAgaWYgKChidWZhWzBdID09ICdcMCcpICYmIChzd2kgPiAwKSkgeworLSAgICAgICAgICAgIHMgPSBzdHJsZW4oYnVmYik7CistICAgICAgICAgICAgKytzd2k7CistICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICBzID0gc3RybGVuKGJ1ZmEpOworLSAgICB9CistICAgIHMgPSBzdHJsZW4obC0+c2VhcmNoX2lwKTsKKyAKKy0gICAgLyogQ0hFQ0sgc2l6ZXMgb2YgYWRkcmVzcywgdHJ1bmNhdGUgb3IgcGFkICovCistICAgIC8qIGlmICI6OiIgaXMgYXQgZW5kIG9mIGlwLCB0aGVuIHBhZCBhbm90aGVyIGJsb2NrIG9yIHR3byAqLworLSAgICB3aGlsZSAoKGwtPnN0YXR1cyAmIExEQVBfSVBWNl9TKSAmJiAocyA8IDMyKSkgeworLSAgICAgICAgc3RybmNhdChsLT5zZWFyY2hfaXAsICIwMDAwIiwgNCk7CistICAgICAgICBzID0gc3RybGVuKGwtPnNlYXJjaF9pcCk7CistICAgIH0KKy0gICAgaWYgKChsLT5zdGF0dXMgJiBMREFQX0lQVjZfUykgJiYgKHMgPiAzMikpIHsKKy0gICAgICAgIC8qIFRvbyBsb25nLCB0cnVuY2F0ZSAqLworLSAgICAgICAgbC0+c2VhcmNoX2lwWzMyXSA9ICdcMCc7CistICAgICAgICBzID0gc3RybGVuKGwtPnNlYXJjaF9pcCk7CistICAgIH0KKy0gICAgLyogSWYgYXQgZW5kIG9mIGlwLCBhbmQgaXRzIG5vdCBsb25nIGVub3VnaCwgdGhlbiBwYWQgYW5vdGhlciBibG9jayBvciB0d28gKi8KKy0gICAgd2hpbGUgKChsLT5zdGF0dXMgJiBMREFQX0lQVjRfUykgJiYgKHMgPCA4KSkgeworLSAgICAgICAgc3RybmNhdChsLT5zZWFyY2hfaXAsICIwMCIsIDIpOworLSAgICAgICAgcyA9IHN0cmxlbihsLT5zZWFyY2hfaXApOworLSAgICB9CistICAgIGlmICgobC0+c3RhdHVzICYgTERBUF9JUFY0X1MpICYmIChzID4gOCkpIHsKKy0gICAgICAgIC8qIFRvbyBsb25nLCB0cnVuY2F0ZSAqLworLSAgICAgICAgbC0+c2VhcmNoX2lwWzhdID0gJ1wwJzsKKy0gICAgICAgIHMgPSBzdHJsZW4obC0+c2VhcmNoX2lwKTsKKysgICAgc2l6ZV90IHMgPSBMREFQX0VSUl9JTlZBTElEOworKyAgICBpZiAoc3RydWN0IGFkZHJpbmZvICpkc3QgPSBtYWtlSXBCaW5hcnkoaXApKSB7CisrICAgICAgICBpZiAoZHN0LT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKysgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaWEgPSByZWludGVycHJldF9jYXN0PHN0cnVjdCBzb2NrYWRkcl9pbjYgKj4oZHN0LT5haV9hZGRyKTsKKysgICAgICAgICAgICBjb25zdCBjaGFyICppYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihzaWEtPnNpbjZfYWRkci5zNl9hZGRyKTsKKysgICAgICAgICAgICBzID0gbWFrZUhleFN0cmluZyhsLT5zZWFyY2hfaXAsIHNpemVvZihsLT5zZWFyY2hfaXApLCBpYSwgMTYpOyAvLyBJUHY2ID0gMTYtYnl0ZSBhZGRyZXNzCisrCisrICAgICAgICB9IGVsc2UgaWYgKGRzdC0+YWlfZmFtaWx5ID09IEFGX0lORVQpIHsKKysgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHNvY2thZGRyX2luICo+KGRzdC0+YWlfYWRkcik7CisrICAgICAgICAgICAgY29uc3QgY2hhciAqaWEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oJihzaWEtPnNpbl9hZGRyKSk7CisrICAgICAgICAgICAgcyA9IG1ha2VIZXhTdHJpbmcobC0+c2VhcmNoX2lwLCBzaXplb2YobC0+c2VhcmNoX2lwKSwgaWEsIDQpOyAgLy8gSVB2NCA9IDQtYnl0ZSBhZGRyZXNzCisrICAgICAgICB9IC8vIGVsc2UgbGVhdmUgcyB3aXRoIExEQVBfRVJSX0lOVkFMSUQgdmFsdWUKKysgICAgICAgIGZyZWVhZGRyaW5mbyhkc3QpOworICAgICB9CisgCistICAgIC8qIENvbXBsZXRlZCwgcyBpcyBsZW5ndGggb2YgYWRkcmVzcyBpbiBIRVggKi8KKyAgICAgcmV0dXJuIHM7CisgfQorIAorQEAgLTEwOTksNDggKzk5Myw0MiBAQCBTZWFyY2hGaWx0ZXJMREFQKGVkdWlfbGRhcF90ICpsLCBjaGFyICpncm91cCkKKyAgICAgfQorICAgICBpZiAoZ3JvdXAgPT0gTlVMTCkgeworICAgICAgICAgLyogTm8gZ3JvdXBNZW1iZXJzaGlwPSB0byBhZGQsIHlheSEgKi8KKy0gICAgICAgIHhzdHJuY3B5KGJ1ZmEsICIoJiIsIHNpemVvZihidWZhKSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsIGVkdWlfY29uZi5zZWFyY2hfZmlsdGVyLCBzdHJsZW4oZWR1aV9jb25mLnNlYXJjaF9maWx0ZXIpKTsKKyAgICAgICAgIC8qIG5ldHdvcmtBZGRyZXNzICovCistICAgICAgICBzbnByaW50ZihidWZiLCBzaXplb2YoYnVmYiksICIofChuZXR3b3JrQWRkcmVzcz0xXFwyMyVzKSIsIGJ1ZmMpOworICAgICAgICAgaWYgKGwtPnN0YXR1cyAmIExEQVBfSVBWNF9TKSB7CistICAgICAgICAgICAgaW50IGxuID0gc25wcmludGYoYnVmZCwgc2l6ZW9mKGJ1ZmQpLCAiKG5ldHdvcmtBZGRyZXNzPThcXDIzXFwwMFxcMDAlcykobmV0d29ya0FkZHJlc3M9OVxcMjNcXDAwXFwwMCVzKSkiLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmYywgYnVmYyk7CistICAgICAgICAgICAgc3RybmNhdChidWZiLCBidWZkLCBsbik7CisrICAgICAgICAgICAgY29uc3QgaW50IGxuID0gc25wcmludGYoYnVmZCwgc2l6ZW9mKGJ1ZmQpLCAiKG5ldHdvcmtBZGRyZXNzPThcXDIzXFwwMFxcMDAlcykobmV0d29ya0FkZHJlc3M9OVxcMjNcXDAwXFwwMCVzKSIsIGJ1ZmMsIGJ1ZmMpOworKyAgICAgICAgICAgIGlmIChsbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsbikgPj0gc2l6ZW9mKGJ1ZmQpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COworKworICAgICAgICAgfSBlbHNlIGlmIChsLT5zdGF0dXMgJiBMREFQX0lQVjZfUykgeworLSAgICAgICAgICAgIGludCBsbiA9IHNucHJpbnRmKGJ1ZmQsIHNpemVvZihidWZkKSwgIihuZXR3b3JrQWRkcmVzcz0xMFxcMjNcXDAwXFwwMCVzKShuZXR3b3JrQWRkcmVzcz0xMVxcMjNcXDAwXFwwMCVzKSkiLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmYywgYnVmYyk7CistICAgICAgICAgICAgc3RybmNhdChidWZiLCBidWZkLCBsbik7CistICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICBzdHJuY2F0KGJ1ZmIsICIpIiwgMSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsIGJ1ZmIsIHN0cmxlbihidWZiKSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsICIpIiwgMSk7CisrICAgICAgICAgICAgY29uc3QgaW50IGxuID0gc25wcmludGYoYnVmZCwgc2l6ZW9mKGJ1ZmQpLCAiKG5ldHdvcmtBZGRyZXNzPTEwXFwyM1xcMDBcXDAwJXMpKG5ldHdvcmtBZGRyZXNzPTExXFwyM1xcMDBcXDAwJXMpIiwgYnVmYywgYnVmYyk7CisrICAgICAgICAgICAgaWYgKGxuIDwgMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxuKSA+PSBzaXplb2YoYnVmZCkpCisrICAgICAgICAgICAgICAgIHJldHVybiBMREFQX0VSUl9PT0I7CisrICAgICAgICB9CisrICAgICAgICBjb25zdCBpbnQgeCA9IHNucHJpbnRmKGJ1ZmEsIHNpemVvZihidWZhKSwgIigmJXMofChuZXR3b3JrQWRkcmVzcz0xXFwyMyVzKSVzKSkiLCBlZHVpX2NvbmYuc2VhcmNoX2ZpbHRlciwgYnVmYywgYnVmZCk7CisrICAgICAgICBpZiAoeCA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih4KSA+PSBzaXplb2YoYnVmYSkpCisrICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsKKysKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIC8qIE5lZWRzIGdyb3VwTWVtYmVyc2hpcD0gdG8gYWRkLi4uICovCistICAgICAgICB4c3RybmNweShidWZhLCAiKCYoJiIsIHNpemVvZihidWZhKSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsIGVkdWlfY29uZi5zZWFyY2hfZmlsdGVyLCBzdHJsZW4oZWR1aV9jb25mLnNlYXJjaF9maWx0ZXIpKTsKKyAgICAgICAgIC8qIGdyb3VwTWVtYmVyc2hpcCAtLSBOT1RFOiBTcXVpZCAqTVVTVCogcHJvdmlkZSAiY249IiBmcm9tIHNxdWlkLmNvbmYgKi8KKy0gICAgICAgIHNucHJpbnRmKGJ1ZmcsIHNpemVvZihidWZnKSwgIihncm91cE1lbWJlcnNoaXA9JXMiLCBncm91cCk7CisgICAgICAgICBpZiAoKGwtPmJhc2VkblswXSAhPSAnXDAnKSAmJiAoc3Ryc3RyKGdyb3VwLCBsLT5iYXNlZG4pID09IE5VTEwpKSB7CistICAgICAgICAgICAgc3RybmNhdChidWZnLCAiLCIsIDEpOworLSAgICAgICAgICAgIHN0cm5jYXQoYnVmZywgbC0+YmFzZWRuLCBzdHJsZW4obC0+YmFzZWRuKSk7CisrICAgICAgICAgICAgY29uc3QgaW50IGxuID0gc25wcmludGYoYnVmZywgc2l6ZW9mKGJ1ZmcpLCAiLCVzIiwgbC0+YmFzZWRuKTsKKysgICAgICAgICAgICBpZiAobG4gPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4obG4pID49IHNpemVvZihidWZkKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsKKyAgICAgICAgIH0KKy0gICAgICAgIHN0cm5jYXQoYnVmZywgIikiLCAxKTsKKy0gICAgICAgIHN0cm5jYXQoYnVmYSwgYnVmZywgc3RybGVuKGJ1ZmcpKTsKKyAgICAgICAgIC8qIG5ldHdvcmtBZGRyZXNzICovCistICAgICAgICBzbnByaW50ZihidWZiLCBzaXplb2YoYnVmYiksICIofChuZXR3b3JrQWRkcmVzcz0xXFwyMyVzKSIsIGJ1ZmMpOworICAgICAgICAgaWYgKGwtPnN0YXR1cyAmIExEQVBfSVBWNF9TKSB7CistICAgICAgICAgICAgaW50IGxuID0gc25wcmludGYoYnVmZCwgc2l6ZW9mKGJ1ZmQpLCAiKG5ldHdvcmtBZGRyZXNzPThcXDIzXFwwMFxcMDAlcykobmV0d29ya0FkZHJlc3M9OVxcMjNcXDAwXFwwMCVzKSkiLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmYywgYnVmYyk7CistICAgICAgICAgICAgc3RybmNhdChidWZiLCBidWZkLCBsbik7CisrICAgICAgICAgICAgY29uc3QgaW50IGxuID0gc25wcmludGYoYnVmZCwgc2l6ZW9mKGJ1ZmQpLCAiKG5ldHdvcmtBZGRyZXNzPThcXDIzXFwwMFxcMDAlcykobmV0d29ya0FkZHJlc3M9OVxcMjNcXDAwXFwwMCVzKSIsIGJ1ZmMsIGJ1ZmMpOworKyAgICAgICAgICAgIGlmIChsbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsbikgPj0gc2l6ZW9mKGJ1ZmQpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COworICAgICAgICAgfSBlbHNlIGlmIChsLT5zdGF0dXMgJiBMREFQX0lQVjZfUykgeworLSAgICAgICAgICAgIGludCBsbiA9IHNucHJpbnRmKGJ1ZmQsIHNpemVvZihidWZkKSwgIihuZXR3b3JrQWRkcmVzcz0xMFxcMjNcXDAwXFwwMCVzKShuZXR3b3JrQWRkcmVzcz0xMVxcMjNcXDAwXFwwMCVzKSkiLCBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmYywgYnVmYyk7CistICAgICAgICAgICAgc3RybmNhdChidWZiLCBidWZkLCBsbik7CistICAgICAgICB9IGVsc2UKKy0gICAgICAgICAgICBzdHJuY2F0KGJ1ZmIsICIpIiwgMSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsIGJ1ZmIsIHN0cmxlbihidWZiKSk7CistICAgICAgICBzdHJuY2F0KGJ1ZmEsICIpKSIsIDIpOworKyAgICAgICAgICAgIGNvbnN0IGludCBsbiA9IHNucHJpbnRmKGJ1ZmQsIHNpemVvZihidWZkKSwgIihuZXR3b3JrQWRkcmVzcz0xMFxcMjNcXDAwXFwwMCVzKShuZXR3b3JrQWRkcmVzcz0xMVxcMjNcXDAwXFwwMCVzKSIsIGJ1ZmMsIGJ1ZmMpOworKyAgICAgICAgICAgIGlmIChsbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsbikgPj0gc2l6ZW9mKGJ1ZmQpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTERBUF9FUlJfT09COworKyAgICAgICAgfQorKyAgICAgICAgY29uc3QgaW50IHggPSBzbnByaW50ZihidWZhLCBzaXplb2YoYnVmYSksICIoJigmJXMoZ3JvdXBNZW1iZXJzaGlwPSVzJXMpKHwobmV0d29ya0FkZHJlc3M9MVxcMjMlcyklcykpKSIsIGVkdWlfY29uZi5zZWFyY2hfZmlsdGVyLCBncm91cCwgYnVmZywgYnVmYywgYnVmZCk7CisrICAgICAgICBpZiAoeCA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih4KSA+PSBzaXplb2YoYnVmYSkpCisrICAgICAgICAgICAgcmV0dXJuIExEQVBfRVJSX09PQjsKKyAgICAgfQorICAgICBzID0gc3RybGVuKGJ1ZmEpOworICAgICB4c3RybmNweShsLT5zZWFyY2hfZmlsdGVyLCBidWZhLCBzaXplb2YobC0+c2VhcmNoX2ZpbHRlcikpOworQEAgLTEyMTIsMTAgKzExMDAsMTAgQEAgc3RhdGljIGludAorIFNlYXJjaElQTERBUChlZHVpX2xkYXBfdCAqbCkKKyB7CisgICAgIGJlcl9sZW5fdCBpLCB4OworLSAgICBiZXJfbGVuX3QgaiwgazsKKy0gICAgYmVyX2xlbl90IHksIHo7CistICAgIGludCBjOworLSAgICBjaGFyIGJ1ZmFbRURVSV9NQVhMRU5dLCBidWZiW0VEVUlfTUFYTEVOXSwgaGV4Y1s0XTsKKysgICAgYmVyX2xlbl90IGo7CisrICAgIGJlcl9sZW5fdCB6OworKyAgICBjaGFyIGJ1ZmFbRURVSV9NQVhMRU5dOworKyAgICBjaGFyIGJ1ZmJbRURVSV9NQVhMRU5dOworICAgICBMREFQTWVzc2FnZSAqZW50OworICAgICBpZiAobCA9PSBOVUxMKSByZXR1cm4gTERBUF9FUlJfTlVMTDsKKyAgICAgaWYgKGwtPmxwID09IE5VTEwpIHJldHVybiBMREFQX0VSUl9QT0lOVEVSOworQEAgLTEyNzMsMTkgKzExNjEsMTEgQEAgU2VhcmNoSVBMREFQKGVkdWlfbGRhcF90ICpsKQorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJ1ZmEgaXMgdGhlIGFkZHJlc3MsIGp1c3QgY29tcGFyZSBpdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwtPnN0YXR1cyAmIExEQVBfSVBWNF9TKSB8fCAobC0+c3RhdHVzICYgTERBUF9JUFY2X1MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBsb29raW5nIGZvciBJUHY0ICovCistICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IHo7ICsraykgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gKGludCkgYnVmYVtrXTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGMgKyAyNTY7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBobGVuID0gc25wcmludGYoaGV4Yywgc2l6ZW9mKGhleGMpLCAiJTAyWCIsIGMpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0cm5jcHkoYnVmYiwgaGV4Yywgc2l6ZW9mKGJ1ZmIpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNhdChidWZiLCBoZXhjLCBobGVuKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHN0cmxlbihidWZiKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYmxlbiA9IG1ha2VIZXhTdHJpbmcoYnVmYiwgc2l6ZW9mKGJ1ZmIpLCBidWZhLCB6KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbiA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBibGVuOworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbXBhcmUgdmFsdWUgd2l0aCBJUCAqLworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1jbXAobC0+c2VhcmNoX2lwLCBidWZiLCB5KSA9PSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWNtcChsLT5zZWFyY2hfaXAsIGJ1ZmIsIGJsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UgZ290IGEgbWF0Y2ghIC0gU2NhbiAnYmVyJyBmb3IgJ2NuJyB2YWx1ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeiA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihiZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgejsgKytqKSB7CitAQCAtMTMwOCwxOSArMTE4OCwxMSBAQCBTZWFyY2hJUExEQVAoZWR1aV9sZGFwX3QgKmwpCisgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnVmYSArIDIgaXMgdGhlIGFkZHJlc3MgKHNraXAgMiBkaWdpdCBwb3J0KSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGwtPnN0YXR1cyAmIExEQVBfSVBWNF9TKSB8fCAobC0+c3RhdHVzICYgTERBUF9JUFY2X1MpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBsb29raW5nIGZvciBJUHY0ICovCistICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMjsgayA8IHo7ICsraykgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gKGludCkgYnVmYVtrXTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGMgKyAyNTY7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBobGVuID0gc25wcmludGYoaGV4Yywgc2l6ZW9mKGhleGMpLCAiJTAyWCIsIGMpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAyKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0cm5jcHkoYnVmYiwgaGV4Yywgc2l6ZW9mKGJ1ZmIpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybmNhdChidWZiLCBoZXhjLCBobGVuKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHN0cmxlbihidWZiKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYmxlbiA9IG1ha2VIZXhTdHJpbmcoYnVmYiwgc2l6ZW9mKGJ1ZmIpLCAmYnVmYVsyXSwgeik7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJsZW4gPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmxlbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb21wYXJlIHZhbHVlIHdpdGggSVAgKi8KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVtY21wKGwtPnNlYXJjaF9pcCwgYnVmYiwgeSkgPT0gMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1jbXAobC0+c2VhcmNoX2lwLCBidWZiLCBibGVuKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlIGdvdCBhIG1hdGNoISAtIFNjYW4gJ2JlcicgZm9yICdjbicgdmFsdWVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBsZGFwX2NvdW50X3ZhbHVlc19sZW4oYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHo7ICsraikgeworQEAgLTEzNDMsMTkgKzEyMTUsMTEgQEAgU2VhcmNoSVBMREFQKGVkdWlfbGRhcF90ICpsKQorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJ1ZmEgKyAyIGlzIHRoZSBhZGRyZXNzIChza2lwIDIgZGlnaXQgcG9ydCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShsLT5zdGF0dXMgJiBMREFQX0lQVjZfUykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm90IGxvb2tpbmcgZm9yIElQdjYgKi8KKy0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGsgPSAyOyBrIDwgejsgKytrKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAoaW50KSBidWZhW2tdOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gYyArIDI1NjsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhsZW4gPSBzbnByaW50ZihoZXhjLCBzaXplb2YoaGV4YyksICIlMDJYIiwgYyk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDIpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RybmNweShidWZiLCBoZXhjLCBzaXplb2YoYnVmYikpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJuY2F0KGJ1ZmIsIGhleGMsIGhsZW4pOworLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICB5ID0gc3RybGVuKGJ1ZmIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBibGVuID0gbWFrZUhleFN0cmluZyhidWZiLCBzaXplb2YoYnVmYiksICZidWZhWzJdLCB6KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxlbiA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBibGVuOworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvbXBhcmUgdmFsdWUgd2l0aCBJUCAqLworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZW1jbXAobC0+c2VhcmNoX2lwLCBidWZiLCB5KSA9PSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWNtcChsLT5zZWFyY2hfaXAsIGJ1ZmIsIGJsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UgZ290IGEgbWF0Y2ghIC0gU2NhbiAnYmVyJyBmb3IgJ2NuJyB2YWx1ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeiA9IGxkYXBfY291bnRfdmFsdWVzX2xlbihiZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgejsgKytqKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDEtU3F1aWROZXctdXNlLW5vZXhjZXB0LWluc3RlYWQtb2YtdGhyb3ctZm9yLUMtMTEtY29tcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS1TcXVpZE5ldy11c2Utbm9leGNlcHQtaW5zdGVhZC1vZi10aHJvdy1mb3ItQy0xMS1jb21wLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDgyZjgwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvZmlsZXMvMDAwMS1TcXVpZE5ldy11c2Utbm9leGNlcHQtaW5zdGVhZC1vZi10aHJvdy1mb3ItQy0xMS1jb21wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSAyN2UxMDY2N2JmMjdiYWY1ZjExOWE3OTFlMzQ3M2JiOTQzNWE3ODZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjMgQXByIDIwMTcgMTA6Mjg6MjggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gU3F1aWROZXc6IHVzZSBub2V4Y2VwdCBpbnN0ZWFkIG9mIHRocm93IGZvciBDKysxMSBjb21waWxlcnMKLQotRml4ZXMgZXJyb3JzIHdpdGggZ2NjNyB3aGljaCBpcyBtb3JlIHBlZGFudGljIGFib3V0IGMrKzExCi1jb25mb3JtYW5jZSByZWdhcmRpbmcgZGVwcmVjYXRlZCBmZWF0dXJlcwotCi1pbmNsdWRlL1NxdWlkTmV3Lmg6MjE6NTE6IGVycm9yOiBkeW5hbWljIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucyBhcmUgZGVwcmVjYXRlZCBpbiBDKysxMQotX1NRVUlEX0VYVEVSTk5FV18gdm9pZCAqb3BlcmF0b3IgbmV3W10gKHNpemVfdCBzaXplKSB0aHJvdyAoc3RkOjpiYWRfYWxsb2MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gaW5jbHVkZS9TcXVpZE5ldy5oIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL1NxdWlkTmV3LmggYi9pbmNsdWRlL1NxdWlkTmV3LmgKLWluZGV4IDM5ZmNlZTAuLmM5NjAzNDcgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL1NxdWlkTmV3LmgKLSsrKyBiL2luY2x1ZGUvU3F1aWROZXcuaAotQEAgLTE4LDE5ICsxOCwxOSBAQAotICAqLwotICNpbmNsdWRlIDxuZXc+Ci0gCi0tX1NRVUlEX0VYVEVSTk5FV18gdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB0aHJvdyAoc3RkOjpiYWRfYWxsb2MpCi0rX1NRVUlEX0VYVEVSTk5FV18gdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSBub2V4Y2VwdChmYWxzZSkKLSB7Ci0gICAgIHJldHVybiB4bWFsbG9jKHNpemUpOwotIH0KLS1fU1FVSURfRVhURVJOTkVXXyB2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqYWRkcmVzcykgdGhyb3coKQotK19TUVVJRF9FWFRFUk5ORVdfIHZvaWQgb3BlcmF0b3IgZGVsZXRlICh2b2lkICphZGRyZXNzKSBub2V4Y2VwdCh0cnVlKQotIHsKLSAgICAgeGZyZWUoYWRkcmVzcyk7Ci0gfQotLV9TUVVJRF9FWFRFUk5ORVdfIHZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgdGhyb3cgKHN0ZDo6YmFkX2FsbG9jKQotK19TUVVJRF9FWFRFUk5ORVdfIHZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc2l6ZSkgbm9leGNlcHQoZmFsc2UpCi0gewotICAgICByZXR1cm4geG1hbGxvYyhzaXplKTsKLSB9Ci0tX1NRVUlEX0VYVEVSTk5FV18gdm9pZCBvcGVyYXRvciBkZWxldGVbXSAodm9pZCAqYWRkcmVzcykgdGhyb3coKQotK19TUVVJRF9FWFRFUk5ORVdfIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQgKmFkZHJlc3MpIG5vZXhjZXB0KHRydWUpCi0gewotICAgICB4ZnJlZShhZGRyZXNzKTsKLSB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzLzAwMDItc21ibGliLWZpeC1idWZmZXItb3Zlci1yZWFkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAyLXNtYmxpYi1maXgtYnVmZmVyLW92ZXItcmVhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGYwYzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy8wMDAyLXNtYmxpYi1maXgtYnVmZmVyLW92ZXItcmVhZC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGE2YjFlMGZkMTQzMTE1ODcxODZlNDBkMDliZmY1YzhjM2FhZGEyZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbW9zIEplZmZyaWVzIDxzcXVpZDNAdHJlZW5ldC5jby5uej4KK0RhdGU6IFNhdCwgMjUgSnVsIDIwMTUgMDU6NTM6MTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc21ibGliOiBmaXggYnVmZmVyIG92ZXItcmVhZAorCitXaGVuIHBhcnNpbmcgU01CIExhbk1hbmFnZXIgcGFja2V0cyB3aXRoIGludmFsaWQgcHJvdG9jb2wgSUQgYW5kIHRoZQorZGVmYXVsdCBzZXQgb2YgU3F1aWQgc3VwcG9ydGVkIHByb3RvY29scy4gSXQgbWF5IGFjY2VzcyBtZW1vcnkgb3V0c2lkZQordGhlIGJ1ZmZlciBzdG9yaW5nIHByb3RvY29sIG5hbWVzLgorCitzbWJsaWIgaXMgb25seSB1c2VkIGJ5IGFscmVhZHkgZGVwcmVjYXRlZCBoZWxwZXJzIHdoaWNoIGFyZSBkZXByZWNhdGVkCitkdWUgdG8gZmFyIG1vcmUgc2lnbmlmaWNhbnQgTlRMTSBwcm90b2NvbCBpc3N1ZXMuIEl0IHdpbGwgYWxzbyBvbmx5CityZXN1bHQgaW4gcGFja2V0cyBiZWluZyByZWplY3RlZCBsYXRlciB3aXRoIGludmFsaWQgcHJvdG9jb2wgbmFtZXMuIFNvCit0aGlzIGlzIGEgbWlub3IgYnVnIHJhdGhlciB0aGFuIGEgdnVsbmVyYWJpbGl0eS4KKworIERldGVjdGVkIGJ5IENvdmVyaXR5IFNjYW4uIElzc3VlIDEyNTYxNjUKKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIGxpYi9zbWJsaWIvc21ibGliLXV0aWwuYyB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL3NtYmxpYi9zbWJsaWItdXRpbC5jIGIvbGliL3NtYmxpYi9zbWJsaWItdXRpbC5jCitpbmRleCA2MTM5YWUyLi5lNzIyY2JiIDEwMDY0NAorLS0tIGEvbGliL3NtYmxpYi9zbWJsaWItdXRpbC5jCisrKysgYi9saWIvc21ibGliL3NtYmxpYi11dGlsLmMKK0BAIC0yMDQsNyArMjA0LDExIEBAIGludCBTTUJfRmlndXJlX1Byb3RvY29sKGNvbnN0IGNoYXIgKmRpYWxlY3RzW10sIGludCBwcm90X2luZGV4KQorIHsKKyAgICAgaW50IGk7CisgCistICAgIGlmIChkaWFsZWN0cyA9PSBTTUJfUHJvdHMpIHsgLyogVGhlIGpvYnMgaXMgZWFzeSwganVzdCBpbmRleCBpbnRvIHRhYmxlICovCisrICAgIC8vIHByb3RfaW5kZXggbWF5IGJlIGEgdmFsdWUgb3V0c2lkZSB0aGUgdGFibGUgU01CX1R5cGVzW10KKysgICAgLy8gd2hpY2ggaG9sZHMgZGF0YSBhdCBvZmZzZXRzIDAgdG8gMTEKKysgICAgaW50IG91clR5cGUgPSAocHJvdF9pbmRleCA8IDAgfHwgcHJvdF9pbmRleCA+IDExKTsKKysKKysgICAgaWYgKG91clR5cGUgJiYgZGlhbGVjdHMgPT0gU01CX1Byb3RzKSB7IC8qIFRoZSBqb2JzIGlzIGVhc3ksIGp1c3QgaW5kZXggaW50byB0YWJsZSAqLworIAorICAgICAgICAgcmV0dXJuKFNNQl9UeXBlc1twcm90X2luZGV4XSk7CisgICAgIH0gZWxzZSB7IC8qIFNlYXJjaCB0aHJvdWdoIFNNQl9Qcm90cyBsb29raW5nIGZvciBhIG1hdGNoICovCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL2djYzctZml4ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL2ZpbGVzL2djYzctZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZWNhNDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9maWxlcy9nY2M3LWZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSA2NjBmY2U5Y2ZhMDBhNTdlNWI3Y2VjNDYxMTZhMzFlMjE1OTVjMzA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgSnVuIDIwMTcgMjM6NDc6MDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3F1aWQ6IFVwZ3JhZGUgdG8gMy41LjI2Ci0KLS4uLy4uL3NxdWlkLTMuNS4yNi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjOiBJbiBmdW5jdGlvbiAndm9pZCBzcXVpZGFpb19pbml0KCknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4vLi4vc3F1aWQtMy41LjI2L3NyYy9EaXNrSU8vRGlza1RocmVhZHMvRGlza1RocmVhZHMuaDozMDo1MDogZXJyb3I6ICcqJyBpbiBib29sZWFuIGNvbnRleHQsIHN1Z2dlc3QgJyYmJyBpbnN0ZWFkIFstV2Vycm9yPWludC1pbi1ib29sLWNvbnRleHRdICAgICAgI2RlZmluZSBOVU1USFJFQURTIChDb25maWcuY2FjaGVTd2FwLm5fY29uZmlndXJlZCoxNikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBzcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL0Rpc2tJTy9EaXNrVGhyZWFkcy9haW9wcy5jYyBiL3NyYy9EaXNrSU8vRGlza1RocmVhZHMvYWlvcHMuY2MKLWluZGV4IGI0NGFkZmEuLmUxMWY5NDggMTAwNjQ0Ci0tLS0gYS9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCi0rKysgYi9zcmMvRGlza0lPL0Rpc2tUaHJlYWRzL2Fpb3BzLmNjCi1AQCAtMjkwLDcgKzI5MCw3IEBAIHNxdWlkYWlvX2luaXQodm9pZCkKLSAgICAgLyogQ3JlYXRlIHRocmVhZHMgYW5kIGdldCB0aGVtIHRvIHNpdCBpbiB0aGVpciB3YWl0IGxvb3AgKi8KLSAgICAgc3F1aWRhaW9fdGhyZWFkX3Bvb2wgPSBtZW1Qb29sQ3JlYXRlKCJhaW9fdGhyZWFkIiwgc2l6ZW9mKHNxdWlkYWlvX3RocmVhZF90KSk7Ci0gCi0tICAgIGFzc2VydChOVU1USFJFQURTKTsKLSsgICAgYXNzZXJ0KE5VTVRIUkVBRFMgIT0gMCk7Ci0gCi0gICAgIGZvciAoaSA9IDA7IGkgPCBOVU1USFJFQURTOyArK2kpIHsKLSAgICAgICAgIHRocmVhZHAgPSAoc3F1aWRhaW9fdGhyZWFkX3QgKilzcXVpZGFpb190aHJlYWRfcG9vbC0+YWxsb2MoKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlZTk2YWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGx5LWZlYXR1cmVkIGh0dHAgcHJveHkgYW5kIHdlYi1jYWNoZSBkYWVtb24gZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiQSBmdWxseS1mZWF0dXJlZCBodHRwIHByb3h5IGFuZCB3ZWItY2FjaGUgZGFlbW9uIGZvciBMaW51eC4gXAotU3F1aWQgb2ZmZXJzIGEgcmljaCBhY2Nlc3MgY29udHJvbCwgYXV0aG9yaXphdGlvbiBhbmQgbG9nZ2luZyBlbnZpcm9ubWVudCB0byBcCi1kZXZlbG9wIHdlYiBwcm94eSBhbmQgY29udGVudCBzZXJ2aW5nIGFwcGxpY2F0aW9ucy4gXAotU3F1aWQgb2ZmZXJzIGEgcmljaCBzZXQgb2YgdHJhZmZpYyBvcHRpbWl6YXRpb24gb3B0aW9ucywgbW9zdCBvZiB3aGljaCBhcmUgXAotZW5hYmxlZCBieSBkZWZhdWx0IGZvciBzaW1wbGVyIGluc3RhbGxhdGlvbiBhbmQgaGlnaCBwZXJmb3JtYW5jZS4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcXVpZC1jYWNoZS5vcmciCi1TRUNUSU9OID0gIndlYiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAxKX0iCi1NSU5fVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5zcXVpZC1jYWNoZS5vcmcvVmVyc2lvbnMvdiR7TUFKX1ZFUn0vJHtNSU5fVkVSfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9TZXQtdXAtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1NraXAtQUNfUlVOX0lGRUxTRS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtZmxhd2VkLWR5bmFtaWMtbGRiLWxpbmstdGVzdC1pbi1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3F1aWQtdXNlLXNlcmlhbC10ZXN0cy1jb25maWctbmVlZGVkLWJ5LXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc3F1aWQgXAotICAgICAgICAgICBmaWxlOi8vc2V0X3N5c3Jvb3RfcGF0Y2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3F1aWQtZG9uLXQtZG8tc3F1aWQtY29uZi10ZXN0cy1hdC1idWlsZC10aW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3F1aWROZXctdXNlLW5vZXhjZXB0LWluc3RlYWQtb2YtdGhyb3ctZm9yLUMtMTEtY29tcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNy1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRvb2xzLmNjLWZpeGVkLXVudXNlZC1yZXN1bHQtd2FybmluZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9yZW1vdmVfdG9vbGNoYWluLWNsYW5nID0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYzE4MzBjZDM2MWUwNzc4MTRhYTM5YmNjMzY5MWQ4YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MWQ4ODQ1ODYzZGNkMDI2Yzg1NjUwOGNkMTU5OWQ0MTdjODk0N2ZmZDk2ZTg2ZTI0MDg1Zjk4OTNjYjhiOGMyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDkyZTJkNmQzMmVjNWMxYWFkMGUwNjA5YTE0MWNlOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcnJvcnMvQ09QWVJJR0hUO21kNT04ODYxMTMwZmFlOTE0MDBiY2Y5OWI2NmYxMzMxNzJiMyBcCi0gICAgICAgICAgICAgICAgICAgIgotREVQRU5EUyA9ICJsaWJ0b29sIGtyYjUgb3BlbmxkYXAgZGIgY3lydXMtc2FzbCBvcGVuc3NsIGV4cGF0IGxpYnhtbDIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIHB0ZXN0IHBlcmxuYXRpdmUKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NxdWlkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3F1aWQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAncG93ZXJwYycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwcycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwc2VsJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1tsaWJuZXRmaWx0ZXItY29ubnRyYWNrXSA9ICItLXdpdGgtbmV0ZmlsdGVyLWNvbm50cmFjaz0ke2luY2x1ZGVkaXJ9LCAtLXdpdGhvdXQtbmV0ZmlsdGVyLWNvbm50cmFjaywgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKLVBBQ0tBR0VDT05GSUdbbm9hdG9taWNzXSA9ICJzcXVpZF9jdl9nbnVfYXRvbWljcz1ubyxzcXVpZF9jdl9nbnVfYXRvbWljcz15ZXMsLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLUJBU0lDX0FVVEggPSAiREIgU0FTTCBMREFQIgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotQkFTSUNfQVVUSCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnUEFNJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtZGVmYXVsdC11c2VyPXNxdWlkIC0tZW5hYmxlLWF1dGgtYmFzaWM9JyR7QkFTSUNfQVVUSH0nIFwKLSAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxvZ2Rpcj0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8ke0JQTn0gXAotICAgICAgICAgICAgICAgICAnUEVSTD0ke1VTUkJJTlBBVEh9L2VudiBwZXJsJyIKLQotZXhwb3J0IEJVSUxEQ1hYRkxBR1M9IiR7QlVJTERfQ1hYRkxBR1N9IgotCi1URVNURElSID0gInRlc3Qtc3VpdGUiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBTWVNST09UPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtcmYgJHtTfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9Ci0KLSAgICAjIGRvIE5PVCBuZWVkIHRvIHJlYnVpbGQgTWFrZWZpbGUgaXRzZWxmCi0gICAgc2VkIC1pICdzL15NYWtlZmlsZTouKiQvTWFrZWZpbGU6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBBZGQgc3F1aWQtY29uZi10ZXN0cyBmb3IgcnVudGltZSB0ZXN0cwotICAgIHNlZCAtZSAncy9eXChydW50ZXN0LVRFU1RTOlwpL1wxIHNxdWlkLWNvbmYtdGVzdHMvJyBcCi0gICAgICAgIC1lICJzL1wobGlzdD0nIFwkKFRFU1RTKVwpL1wxIHNxdWlkLWNvbmYtdGVzdHMvIiBcCi0gICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLQotICAgICMgRW5zdXJlIHRoZSBwYXRoIGZvciBjb21tYW5kIHRydWUgaXMgY29ycmVjdAotICAgIHNlZCAtaSAnczpeVFJVRSA9IC4qJDpUUlVFID0gL2Jpbi90cnVlOicgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gMDc1NSBzcXVpZCBzcXVpZCAtIiA+PiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IDA3NTAgc3F1aWQgc3F1aWQgLSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8ke0JQTn0uY29uZgotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3NxdWlkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3NxdWlkCi0KLSAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuLyR7QlBOfSIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8ke0JQTn0iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZyIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSAke2RhdGFkaXJ9L2Vycm9ycyAke2RhdGFkaXJ9L2ljb25zIgotRklMRVNfJHtQTn0tZGJnICs9ICIvdXNyL3NyYy9kZWJ1ZyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS8qLnR4dCIKLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9zcXVpZC9zcXVpZF8zLjUuMjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU1N2M0YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfMy41LjI3LmJiCkBAIC0wLDAgKzEsMTE1IEBACitTVU1NQVJZID0gIkEgZnVsbHktZmVhdHVyZWQgaHR0cCBwcm94eSBhbmQgd2ViLWNhY2hlIGRhZW1vbiBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJBIGZ1bGx5LWZlYXR1cmVkIGh0dHAgcHJveHkgYW5kIHdlYi1jYWNoZSBkYWVtb24gZm9yIExpbnV4LiBcCitTcXVpZCBvZmZlcnMgYSByaWNoIGFjY2VzcyBjb250cm9sLCBhdXRob3JpemF0aW9uIGFuZCBsb2dnaW5nIGVudmlyb25tZW50IHRvIFwKK2RldmVsb3Agd2ViIHByb3h5IGFuZCBjb250ZW50IHNlcnZpbmcgYXBwbGljYXRpb25zLiBcCitTcXVpZCBvZmZlcnMgYSByaWNoIHNldCBvZiB0cmFmZmljIG9wdGltaXphdGlvbiBvcHRpb25zLCBtb3N0IG9mIHdoaWNoIGFyZSBcCitlbmFibGVkIGJ5IGRlZmF1bHQgZm9yIHNpbXBsZXIgaW5zdGFsbGF0aW9uIGFuZCBoaWdoIHBlcmZvcm1hbmNlLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNxdWlkLWNhY2hlLm9yZyIKK1NFQ1RJT04gPSAid2ViIgorTElDRU5TRSA9ICJHUEx2MisiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDEpfSIKK01JTl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNxdWlkLWNhY2hlLm9yZy9WZXJzaW9ucy92JHtNQUpfVkVSfS8ke01JTl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL1NldC11cC1mb3ItY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1BQ19SVU5fSUZFTFNFLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1mbGF3ZWQtZHluYW1pYy1sZGItbGluay10ZXN0LWluLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zcXVpZC11c2Utc2VyaWFsLXRlc3RzLWNvbmZpZy1uZWVkZWQtYnktcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zcXVpZCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXRfc3lzcm9vdF9wYXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zcXVpZC1kb24tdC1kby1zcXVpZC1jb25mLXRlc3RzLWF0LWJ1aWxkLXRpbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdG9vbHMuY2MtZml4ZWQtdW51c2VkLXJlc3VsdC13YXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQnVnLTQ4NDMtcHQxLWV4dF9lZGlyZWN0b3J5X3VzZXJpcF9hY2wtcmVmYWN0b3JpbmctZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNtYmxpYi1maXgtYnVmZmVyLW92ZXItcmVhZC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9yZW1vdmVfdG9vbGNoYWluLWNsYW5nID0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMTdhM2VkM2E0MGNkNTljMjNmNDhiODUzOWRhZmNkOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjdkYTEzNGVhZjBmNzk2MmJhNTg4MTc5M2QxMDY3NzJmYjA1ZmVmYTRhZWE3ZDk1NjllZWMwNDEyYzUyNDMzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDkyZTJkNmQzMmVjNWMxYWFkMGUwNjA5YTE0MWNlOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcnJvcnMvQ09QWVJJR0hUO21kNT04ODYxMTMwZmFlOTE0MDBiY2Y5OWI2NmYxMzMxNzJiMyBcCisgICAgICAgICAgICAgICAgICAgIgorREVQRU5EUyA9ICJsaWJ0b29sIGtyYjUgb3BlbmxkYXAgZGIgY3lydXMtc2FzbCBvcGVuc3NsIGV4cGF0IGxpYnhtbDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIHB0ZXN0IHBlcmxuYXRpdmUKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NxdWlkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3F1aWQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAncG93ZXJwYycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwcycsICdub2F0b21pY3MnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0FSQ0gnLCAnbWlwc2VsJywgJ25vYXRvbWljcycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorUEFDS0FHRUNPTkZJR1tsaWJuZXRmaWx0ZXItY29ubnRyYWNrXSA9ICItLXdpdGgtbmV0ZmlsdGVyLWNvbm50cmFjaz0ke2luY2x1ZGVkaXJ9LCAtLXdpdGhvdXQtbmV0ZmlsdGVyLWNvbm50cmFjaywgbGlibmV0ZmlsdGVyLWNvbm50cmFjayIKK1BBQ0tBR0VDT05GSUdbbm9hdG9taWNzXSA9ICJzcXVpZF9jdl9nbnVfYXRvbWljcz1ubyxzcXVpZF9jdl9nbnVfYXRvbWljcz15ZXMsLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW3dlcnJvcl0gPSAiLS1lbmFibGUtc3RyaWN0LWVycm9yLWNoZWNraW5nLC0tZGlzYWJsZS1zdHJpY3QtZXJyb3ItY2hlY2tpbmcsIgorCitCQVNJQ19BVVRIID0gIkRCIFNBU0wgTERBUCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK0JBU0lDX0FVVEggKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ1BBTScsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWRlZmF1bHQtdXNlcj1zcXVpZCAtLWVuYWJsZS1hdXRoLWJhc2ljPScke0JBU0lDX0FVVEh9JyBcCisgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1sb2dkaXI9JHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IFwKKyAgICAgICAgICAgICAgICAgJ1BFUkw9JHtVU1JCSU5QQVRIfS9lbnYgcGVybCciCisKK2V4cG9ydCBCVUlMRENYWEZMQUdTPSIke0JVSUxEX0NYWEZMQUdTfSIKKworVEVTVERJUiA9ICJ0ZXN0LXN1aXRlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBjcCAtcmYgJHtCfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkIE1ha2VmaWxlIGl0c2VsZgorICAgIHNlZCAtaSAncy9eTWFrZWZpbGU6LiokL01ha2VmaWxlOi8nICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKworICAgICMgQWRkIHNxdWlkLWNvbmYtdGVzdHMgZm9yIHJ1bnRpbWUgdGVzdHMKKyAgICBzZWQgLWUgJ3MvXlwocnVudGVzdC1URVNUUzpcKS9cMSBzcXVpZC1jb25mLXRlc3RzLycgXAorICAgICAgICAtZSAicy9cKGxpc3Q9JyBcJChURVNUUylcKS9cMSBzcXVpZC1jb25mLXRlc3RzLyIgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIEVuc3VyZSB0aGUgcGF0aCBmb3IgY29tbWFuZCB0cnVlIGlzIGNvcnJlY3QKKyAgICBzZWQgLWkgJ3M6XlRSVUUgPSAuKiQ6VFJVRSA9IC9iaW4vdHJ1ZTonICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59IDA3NTUgc3F1aWQgc3F1aWQgLSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8ke0JQTn0uY29uZgorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nLyR7QlBOfSAwNzUwIHNxdWlkIHNxdWlkIC0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvJHtCUE59LmNvbmYKKyAgICBmaQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zcXVpZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zcXVpZAorCisgICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cvJHtCUE59IgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2ciCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0gJHtkYXRhZGlyfS9lcnJvcnMgJHtkYXRhZGlyfS9pY29ucyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiL3Vzci9zcmMvZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vKi50eHQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS92YmxhZGVfMjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZibGFkZS92YmxhZGVfMjIuYmIKaW5kZXggZDdiMWRmYS4uYTUxYThjMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92YmxhZGUvdmJsYWRlXzIyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdmJsYWRlL3ZibGFkZV8yMi5iYgpAQCAtMTYsNiArMTYsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjUxMGQ5OGJhMGYyMzEyODRhNWZiZTJkYTExY2IyZDZlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5OTAzNzhmMjczZjEwZWI0MzFlNDI5NTRhODcxYWVkNTI3MTQwMzViYmFiMjhjNTRjZWY2MDBjNDU4MzU2YmIiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hb2V0b29scy9maWxlcy92YmxhZGUvIgorCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkXzMuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy92c2Z0cGQvdnNmdHBkXzMuMC4zLmJiCmluZGV4IDdhMjAzNTYuLjJlM2UwZTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdnNmdHBkL3ZzZnRwZF8zLjAuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3ZzZnRwZC92c2Z0cGRfMy4wLjMuYmIKQEAgLTI0LDYgKzI0LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzZGVwdXRpbC5jLUZpeC13aXRoLW11c2wtd2hpY2gtZG9lcy1ub3QtaGF2ZS11dG1weC5wYXRjaCBcCiAgICAgICAgICAgICIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi92L3ZzZnRwZC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLm9yaWdcLnRhciIKKwogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTYwNjdhZDk1MGIyODMzNjYxM2FlZDlkZDQ3YjEyNzEgXAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlSSUdIVDttZDU9MDQyNTFiMmViMGYyOThkYWUzNzZkOTI0NTRmNmY3MmUgXAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTY1NGRmMjA0MmQ0NGI4Y2FjOGE1NjU0ZmM1YmU2M2ViIgpAQCAtNDQsNyArNDcsNyBAQAogCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS92c2Z0cGQuY29uZiIKIExERkxBR1NfYXBwZW5kID0iIC1sY3J5cHQgLWxjYXAiCi0KK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9HTlVfU09VUkNFIC1pbmNsdWRlIGZjbnRsLmgiCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIAogZG9fY29uZmlndXJlKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2gKaW5kZXggNTc3NGU2Mi4uNTRlMGI5OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCkBAIC0xLDM0ICsxLDM2IEBACi1Gcm9tIGNjNmRiYWJlYTBlNDUyZWJjOTM2ODJkZjg2MGE3OWVkOWE0NTcyMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZkNjA2ZjExMDFjMWExNzJmYjZkNzM4ZDZmMTg2NWFhNjE4NDllNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CiBEYXRlOiBGcmksIDIwIE9jdCAyMDE3IDAwOjA0OjE5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIENNYWtlTGlzdHMudHh0OiBGaXggZ3JwY19jcHBfcGx1Z2luIHBhdGggZHVyaW5nCi0gY3Jvc3MtY29tcGlsYXRpb24KKyBjcm9zcy1jb21waWxpbmcgb3IgbmF0aXZlIGJ1aWxkCiAKIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBGaXJhZ28gPGFsZXhleV9maXJhZ29AbWVudG9yLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEhpcmFtIExldyA8bGV3QGF2YXN0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEphbiBLYWlzcmxpayA8amFuLmthaXNybGlrQGF2YXN0LmNvbT4KIC0tLQogIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICB8IDkgKysrKysrKystCiAgdGVtcGxhdGVzL0NNYWtlTGlzdHMudHh0LnRlbXBsYXRlIHwgOSArKysrKysrKy0KICAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBmOWNkNjMwLi45NjYzOTM0IDEwMDY0NAoraW5kZXggYTU5ZmQ4MS4uY2Q5MDQyNCAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTMyOCw2ICszMjgsMTMgQEAgZnVuY3Rpb24ocHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHApCitAQCAtMTYwLDYgKzE2MCwxMyBAQCBmdW5jdGlvbihwcm90b2J1Zl9nZW5lcmF0ZV9ncnBjX2NwcCkKICAgICAgcmV0dXJuKCkKICAgIGVuZGlmKCkKLQotKyAgI2lmIGNyb3NzLWNvbXBpbGluZywgZmluZCBob3N0IHBsdWdpbgorIAorKyAgI2lmIGNyb3NzLWNvbXBpbGluZyBvciBuYXRpdmVzZGssIGZpbmQgaG9zdCBwbHVnaW4KICsgIGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQogKyAgICAgIGZpbmRfcHJvZ3JhbShnUlBDX0NQUF9QTFVHSU4gZ3JwY19jcHBfcGx1Z2luKQogKyAgZWxzZSgpCiArICAgICAgc2V0KGdSUENfQ1BQX1BMVUdJTiAkPFRBUkdFVF9GSUxFOmdycGNfY3BwX3BsdWdpbj4pCiArICBlbmRpZigpCiArCi0gICBzZXQoX3Byb3RvYnVmX2luY2x1ZGVfcGF0aCAtSSAuIC1JICR7UFJPVE9CVUZfV0VMTEtOT1dOX0lNUE9SVF9ESVJ9KQorICAgc2V0KF9wcm90b2J1Zl9pbmNsdWRlX3BhdGggLUkgLiAtSSAke19nUlBDX1BST1RPQlVGX1dFTExLTk9XTl9JTkNMVURFX0RJUn0pCiAgICBmb3JlYWNoKEZJTCAke0FSR059KQogICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KEFCU19GSUwgJHtGSUx9IEFCU09MVVRFKQotQEAgLTM0NSw3ICszNTIsNyBAQCBmdW5jdGlvbihwcm90b2J1Zl9nZW5lcmF0ZV9ncnBjX2NwcCkKK0BAIC0xNzcsNyArMTg0LDcgQEAgZnVuY3Rpb24ocHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHApCiAgICAgICAgQ09NTUFORCAke19nUlBDX1BST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFfQogICAgICAgIEFSR1MgLS1ncnBjX291dD1nZW5lcmF0ZV9tb2NrX2NvZGU9dHJ1ZToke19nUlBDX1BST1RPX0dFTlNfRElSfQogICAgICAgICAgICAgLS1jcHBfb3V0PSR7X2dSUENfUFJPVE9fR0VOU19ESVJ9CkBAIC0zOCwyNCArNDAsMjQgQEAKICAgICAgICAgICAgICR7UkVMX0ZJTH0KICAgICAgICBERVBFTkRTICR7QUJTX0ZJTH0gJHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0N9IGdycGNfY3BwX3BsdWdpbgogZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZSBiL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZQotaW5kZXggNjRkYWYwNC4uYTdlODYyOSAxMDA2NDQKK2luZGV4IGRlMTNkMDIuLmIyMmJkNWMgMTAwNjQ0CiAtLS0gYS90ZW1wbGF0ZXMvQ01ha2VMaXN0cy50eHQudGVtcGxhdGUKICsrKyBiL3RlbXBsYXRlcy9DTWFrZUxpc3RzLnR4dC50ZW1wbGF0ZQotQEAgLTM3Myw2ICszNzMsMTMgQEAKK0BAIC0yMDksNiArMjA5LDEzIEBACiAgICAgICAgcmV0dXJuKCkKICAgICAgZW5kaWYoKQotCi0rICAgICNpZiBjcm9zcy1jb21waWxpbmcsIGZpbmQgaG9zdCBwbHVnaW4KKyAKKysgICAgI2lmIGNyb3NzLWNvbXBpbGluZyBvciBuYXRpdmVzZGssIGZpbmQgaG9zdCBwbHVnaW4KICsgICAgaWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCiArICAgICAgICBmaW5kX3Byb2dyYW0oZ1JQQ19DUFBfUExVR0lOIGdycGNfY3BwX3BsdWdpbikKICsgICAgZWxzZSgpCiArICAgICAgICBzZXQoZ1JQQ19DUFBfUExVR0lOICQ8VEFSR0VUX0ZJTEU6Z3JwY19jcHBfcGx1Z2luPikKICsgICAgZW5kaWYoKQogKwotICAgICBzZXQoX3Byb3RvYnVmX2luY2x1ZGVfcGF0aCAtSSAuIC1JIDwldGV4dD4ke1BST1RPQlVGX1dFTExLTk9XTl9JTVBPUlRfRElSfTwvJXRleHQ+KQorICAgICBzZXQoX3Byb3RvYnVmX2luY2x1ZGVfcGF0aCAtSSAuIC1JIDwldGV4dD4ke19nUlBDX1BST1RPQlVGX1dFTExLTk9XTl9JTkNMVURFX0RJUn08LyV0ZXh0PikKICAgICAgZm9yZWFjaChGSUwgPCV0ZXh0PiR7QVJHTn08LyV0ZXh0PikKICAgICAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KEFCU19GSUwgPCV0ZXh0PiR7RklMfTwvJXRleHQ+IEFCU09MVVRFKQotQEAgLTM5MCw3ICszOTcsNyBAQAorQEAgLTIyNiw3ICsyMzMsNyBAQAogICAgICAgICAgQ09NTUFORCA8JXRleHQ+JHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRX08LyV0ZXh0PgogICAgICAgICAgQVJHUyAtLWdycGNfb3V0PTwldGV4dD5nZW5lcmF0ZV9tb2NrX2NvZGU9dHJ1ZToke19nUlBDX1BST1RPX0dFTlNfRElSfTwvJXRleHQ+CiAgICAgICAgICAgICAgIC0tY3BwX291dD08JXRleHQ+JHtfZ1JQQ19QUk9UT19HRU5TX0RJUn08LyV0ZXh0PgpAQCAtNjQsNSArNjYsNiBAQAogICAgICAgICAgICAgICA8JXRleHQ+JHtfcHJvdG9idWZfaW5jbHVkZV9wYXRofTwvJXRleHQ+CiAgICAgICAgICAgICAgIDwldGV4dD4ke1JFTF9GSUx9PC8ldGV4dD4KICAgICAgICAgIERFUEVORFMgPCV0ZXh0PiR7QUJTX0ZJTH08LyV0ZXh0PiA8JXRleHQ+JHtfZ1JQQ19QUk9UT0JVRl9QUk9UT0N9PC8ldGV4dD4gZ3JwY19jcHBfcGx1Z2luCi0tLQorLS0gCiAyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2gKaW5kZXggZjhkOTY1Mi4uNDU5ZGM0NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gOGU5YmY5NjJhNDVhODJmMWMyZWI1ODU4ZTI5ZmE4OWEzYTYwYjU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjI3OWUzMGJlNTc5NmU5YjE4NTU0NTU0M2VhNTRmZTY4NjMzY2JkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhleSBGaXJhZ28gPGFsZXhleV9maXJhZ29AbWVudG9yLmNvbT4KIERhdGU6IE1vbiwgMzAgT2N0IDIwMTcgMjM6MjQ6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIENNYWtlTGlzdHMudHh0OiBGaXggbGlicmFyaWVzIGluc3RhbGxhdGlvbiBmb3IgTGludXgKK1N1YmplY3Q6IFtQQVRDSF0gQ01ha2VMaXN0cy50eHQ6IEZpeCBsaWJyYXJpZXMgaW5zdGFsbGF0aW9uIGZvciBMaW51eAogCiAqIFNldCBsaWJzIHZlcnNpb25zIGFzIGluIE1ha2VmaWxlCiAKQEAgLTksMjEgKzksMTkgQEAKIAogJSUgb3JpZ2luYWwgcGF0Y2g6IDAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCiAtLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBDTWFrZUxpc3RzLnR4dCA9PiBDTWFrZUxpc3RzLnR4dC5vcmlnIHwgIDAKLSAyIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykKLSBjb3B5IENNYWtlTGlzdHMudHh0ID0+IENNYWtlTGlzdHMudHh0Lm9yaWcgKDEwMCUpCisgQ01ha2VMaXN0cy50eHQgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiMWE0OWRmLi4xM2U2NGFjIDEwMDY0NAoraW5kZXggYTU5ZmQ4MThlMy4uNTA2NmY0NGEzMiAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAogQEAgLTMwLDYgKzMwLDE1IEBAIHNldChQQUNLQUdFX1RBUk5BTUUgICAiJHtQQUNLQUdFX05BTUV9LSR7UEFDS0FHRV9WRVJTSU9OfSIpCiAgc2V0KFBBQ0tBR0VfQlVHUkVQT1JUICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjL2lzc3Vlcy8iKQogIHByb2plY3QoJHtQQUNLQUdFX05BTUV9IEMgQ1hYKQogIAotK3NldCAoQ09SRV9WRVJTSU9OX01BSk9SICI0IikKLStzZXQgKENPUkVfVkVSU0lPTiAiNC4wLjAiKQorK3NldCAoQ09SRV9WRVJTSU9OX01BSk9SICI2IikKKytzZXQgKENPUkVfVkVSU0lPTiAiNi4wLjAiKQogKwogK3NldCAoQ1BQX1ZFUlNJT05fTUFKT1IgIjEiKQogK3NldCAoQ1BQX1ZFUlNJT04gIiR7UEFDS0FHRV9WRVJTSU9OfSIpCkBAIC0zMSwxMCArMjksMjEgQEAKICtzZXQgKENTSEFSUF9WRVJTSU9OX01BSk9SICIxIikKICtzZXQgKENTSEFSUF9WRVJTSU9OICIke1BBQ0tBR0VfVkVSU0lPTn0iKQogKwotIHNldChnUlBDX0lOU1RBTExfQklORElSICIke0NNQUtFX0lOU1RBTExfUFJFRklYfS9iaW4iIENBQ0hFIFBBVEggIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIikKLSBzZXQoZ1JQQ19JTlNUQUxMX0xJQkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliIiBDQUNIRSBQQVRIICJJbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciBsaWJyYXJpZXMiKQotIHNldChnUlBDX0lOU1RBTExfSU5DTFVERURJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vaW5jbHVkZSIgQ0FDSEUgUEFUSCAiSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBmb3IgaGVhZGVycyIpCi1AQCAtODQxLDYgKzg1MCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKKyBzZXQoZ1JQQ19JTlNUQUxMX0JJTkRJUiAiYmluIiBDQUNIRSBTVFJJTkcgIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIikKKyBzZXQoZ1JQQ19JTlNUQUxMX0xJQkRJUiAibGliIiBDQUNIRSBTVFJJTkcgIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGxpYnJhcmllcyIpCisgc2V0KGdSUENfSU5TVEFMTF9JTkNMVURFRElSICJpbmNsdWRlIiBDQUNIRSBTVFJJTkcgIkluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIGhlYWRlcnMiKQorQEAgLTcwMiw2ICs3MTEsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCisgICBlbmRpZigpCisgZW5kaWYoKQorIAorK2lmKF9nUlBDX1BMQVRGT1JNX0xJTlVYKQorKyAgc2V0X3Byb3BlcnR5KFRBUkdFVCBhZGRyZXNzX3NvcnRpbmcgUFJPUEVSVFkgVkVSU0lPTiAke0NPUkVfVkVSU0lPTn0pCisrICBzZXRfcHJvcGVydHkoVEFSR0VUIGFkZHJlc3Nfc29ydGluZyBQUk9QRVJUWSBTT1ZFUlNJT04gJHtDT1JFX1ZFUlNJT05fTUFKT1J9KQorK2VuZGlmKCkKKyAKKyB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhhZGRyZXNzX3NvcnRpbmcKKyAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KK0BAIC04MjUsNiArODM4LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQogICAgZW5kaWYoKQogIGVuZGlmKCkKICAKQEAgLTQ1LDcgKzU0LDcgQEAKICAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncHIKICAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KLUBAIC0xMjIxLDYgKzEyMzQsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCitAQCAtMTI1OSw2ICsxMjc2LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQogICAgZW5kaWYoKQogIGVuZGlmKCkKICAKQEAgLTU2LDcgKzY1LDcgQEAKICAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjCiAgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+Ci1AQCAtMTUzNSw2ICsxNTUyLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorQEAgLTE2MzMsNiArMTY1NCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKICAgIGVuZGlmKCkKICBlbmRpZigpCiAgCkBAIC02Nyw3ICs3Niw3IEBACiAgCiAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwY19jcm9uZXQKICAgIFBVQkxJQyAkPElOU1RBTExfSU5URVJGQUNFOiR7Z1JQQ19JTlNUQUxMX0lOQ0xVREVESVJ9PiAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZT4KLUBAIC0yMzc3LDYgKzIzOTgsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCitAQCAtMjU3NSw2ICsyNjAwLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQogICAgZW5kaWYoKQogIGVuZGlmKCkKICAKQEAgLTc4LDcgKzg3LDcgQEAKICAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjX3Vuc2VjdXJlCiAgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+Ci1AQCAtMjU5Miw2ICsyNjE3LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorQEAgLTI3OTEsNiArMjgyMCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKICAgIGVuZGlmKCkKICBlbmRpZigpCiAgCkBAIC04OSw3ICs5OCw3IEBACiAgCiAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwYysrCiAgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+Ci1AQCAtMzA3OCw2ICszMTA3LDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQorQEAgLTMzNTcsNiArMzM5MCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKICAgIGVuZGlmKCkKICBlbmRpZigpCiAgCkBAIC0xMDAsNyArMTA5LDcgQEAKICAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjKytfY3JvbmV0CiAgICBQVUJMSUMgJDxJTlNUQUxMX0lOVEVSRkFDRToke2dSUENfSU5TVEFMTF9JTkNMVURFRElSfT4gJDxCVUlMRF9JTlRFUkZBQ0U6JHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2luY2x1ZGU+Ci1AQCAtMzI4Miw2ICszMzE1LDExIEBAIHByb3RvYnVmX2dlbmVyYXRlX2dycGNfY3BwKAorQEAgLTM2MzAsNiArMzY2NywxMSBAQCBwcm90b2J1Zl9nZW5lcmF0ZV9ncnBjX2NwcCgKICAgIHNyYy9wcm90by9ncnBjL3N0YXR1cy9zdGF0dXMucHJvdG8KICApCiAgCkBAIC0xMTIsNyArMTIxLDcgQEAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjKytfZXJyb3JfZGV0YWlscwogICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgogICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0KLUBAIC0zNDA4LDYgKzM0NDYsMTEgQEAgcHJvdG9idWZfZ2VuZXJhdGVfZ3JwY19jcHAoCitAQCAtMzc2Miw2ICszODA0LDExIEBAIHByb3RvYnVmX2dlbmVyYXRlX2dycGNfY3BwKAogICAgc3JjL3Byb3RvL2dycGMvcmVmbGVjdGlvbi92MWFscGhhL3JlZmxlY3Rpb24ucHJvdG8KICApCiAgCkBAIC0xMjQsNyArMTMzLDcgQEAKICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhncnBjKytfcmVmbGVjdGlvbgogICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgogICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0KLUBAIC0zODI3LDYgKzM4NzAsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCitAQCAtNDI2NSw2ICs0MzEyLDEwIEBAIGlmKFdJTjMyIEFORCBNU1ZDKQogICAgZW5kaWYoKQogIGVuZGlmKCkKICAKQEAgLTEzNSw3ICsxNDQsNyBAQAogIAogIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGMrK191bnNlY3VyZQogICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgotQEAgLTQxNDAsNiArNDE4NywxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKK0BAIC00NjQ5LDYgKzQ3MDAsMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCiAgICBlbmRpZigpCiAgZW5kaWYoKQogIApAQCAtMTQ2LDcgKzE1NSw3IEBACiAgCiAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoZ3JwY19wbHVnaW5fc3VwcG9ydAogICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgotQEAgLTQ2NDksNiArNDcwMCwxMCBAQCBpZihXSU4zMiBBTkQgTVNWQykKK0BAIC01MTg0LDYgKzUyMzksMTAgQEAgaWYoV0lOMzIgQU5EIE1TVkMpCiAgICBlbmRpZigpCiAgZW5kaWYoKQogIApAQCAtMTU3LDEwICsxNjYsNiBAQAogIAogIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKGdycGNfY3NoYXJwX2V4dAogICAgUFVCTElDICQ8SU5TVEFMTF9JTlRFUkZBQ0U6JHtnUlBDX0lOU1RBTExfSU5DTFVERURJUn0+ICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9pbmNsdWRlPgotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQub3JpZwotc2ltaWxhcml0eSBpbmRleCAxMDAlCi1jb3B5IGZyb20gQ01ha2VMaXN0cy50eHQKLWNvcHkgdG8gQ01ha2VMaXN0cy50eHQub3JpZwogLS0gCi0yLjE2LjEKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwNC1DTWFrZUxpc3RzLnR4dC1GaW5kLWMtYXJlcy1pbi10YXJnZXQtc3lzcm9vdC1hbG9uZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDA0LUNNYWtlTGlzdHMudHh0LUZpbmQtYy1hcmVzLWluLXRhcmdldC1zeXNyb290LWFsb25lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTg1MDIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDA0LUNNYWtlTGlzdHMudHh0LUZpbmQtYy1hcmVzLWluLXRhcmdldC1zeXNyb290LWFsb25lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBhNDk4YjU2YmE5Njk0ODAxNWYwZjI3ODRiMmFiODI5Njk0NjcxNmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMSBGZWIgMjAxOCAyMzoyODoxNyAtMDgwMAotU3ViamVjdDogW1BBVENIIDQvNF0gQ01ha2VMaXN0cy50eHQ6IEZpbmQgYy1hcmVzIGluIHRhcmdldCBzeXNyb290IGFsb25lCi0KLUN1cnJlbnQgY29kZSBsZXRzIGl0IGxvb2sgaW50byBuYXRpdmUgc3lzcm9vdCBhcyB3ZWxsCi13aGljaCBpcyB0aGVuIHByZWZlcnJlZCBkdXJpbmcgY3Jvc3MgY29tcGlsZSBhbmQgaXQgYWRkcwotYWJzb2x1dGUgcGF0aCB0byBsaWJjYXJlcyBpbnRvIGxpbmtlciBmbGFncwotb24gaGV0ZXJvZ2Vub3VzIGFyY2hpdGVjdHVyZXMgbGlua2VyIGNvbXBsYWlucyBhbmQgYnVpbGQKLWZhaWxzCi0KLXwgL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LWJlYy1saW51eC1nbnVlYWJpL2dycGMvMS44LjUtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9saWIvbGliCi1jYXJlcy5zby4yLjIuMDogZmlsZSBub3QgcmVjb2duaXplZDogRmlsZSBmb3JtYXQgbm90IHJlY29nbml6ZWQKLXwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCA2ICsrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAxZDdlZWYxLi4wNTg0MjNkIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTUzLDEwICsxNTMsOCBAQCBpZigiJHtnUlBDX0NBUkVTX1BST1ZJREVSfSIgU1RSRVFVQUwgIm1vZHVsZSIpCi0gICAgIHNldChnUlBDX0lOU1RBTEwgRkFMU0UpCi0gICBlbmRpZigpCi0gZWxzZWlmKCIke2dSUENfQ0FSRVNfUFJPVklERVJ9IiBTVFJFUVVBTCAicGFja2FnZSIpCi0tICBmaW5kX3BhY2thZ2UoYy1hcmVzIFJFUVVJUkVEIENPTkZJRykKLS0gIGlmKFRBUkdFVCBjLWFyZXM6OmNhcmVzKQotLSAgICBzZXQoX2dSUENfQ0FSRVNfTElCUkFSSUVTIGMtYXJlczo6Y2FyZXMpCi0tICBlbmRpZigpCi0rICBmaW5kX3BhY2thZ2UoYy1hcmVzIFJFUVVJUkVEKQotKyAgc2V0KF9nUlBDX0NBUkVTX0xJQlJBUklFUyBjYXJlcykKLSAgIHNldChfZ1JQQ19GSU5EX0NBUkVTICJpZihOT1QgYy1hcmVzX0ZPVU5EKVxuICBmaW5kX3BhY2thZ2UoYy1hcmVzIENPTkZJRylcbmVuZGlmKCkiKQotIGVuZGlmKCkKLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwY18xLjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMzY3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS4xNC4xLmJiCkBAIC0wLDAgKzEsNDIgQEAKK0RFU0NSSVBUSU9OID0gIkEgaGlnaCBwZXJmb3JtYW5jZSwgb3BlbiBzb3VyY2UsIGdlbmVyYWwtcHVycG9zZSBSUEMgZnJhbWV3b3JrLiBcCitQcm92aWRlcyBnUlBDIGxpYnJhcmllcyBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzIHdyaXR0ZW4gb24gdG9wIG9mIHNoYXJlZCBDIGNvcmUgbGlicmFyeSBcCisoQysrLCBOb2RlLmpzLCBQeXRob24sIFJ1YnksIE9iamVjdGl2ZS1DLCBQSFAsIEMjKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFwYWNoZS0yIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK0RFUEVORFMgPSAiZ2ZsYWdzIGMtYXJlcyBwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYtYyBwcm90b2J1Zi1jLW5hdGl2ZSBvcGVuc3NsIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGVzdCBncnBjLW5hdGl2ZSAiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGdycGMtbmF0aXZlICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJkODAyMGNiNmRhYTg3ZjFhM2JiM2IwYzI5OWJjMDgxYzRhM2RlMWU4IgorQlJBTkNIID0gInYxLjE0LngiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9JHtCUkFOQ0h9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIgorCisjIEZpeGVzIGJ1aWxkIHdpdGggb2xkZXIgY29tcGlsZXJzIDQuOCBlc3BlY2lhbGx5IG9uIHVidW50dSAxNC4wNAorQ1hYRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVdsLC0tbm8tYXMtbmVlZGVkIgorCitpbmhlcml0IGNtYWtlCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRGdSUENfQ0FSRVNfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1pMSUJfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1NTTF9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfUFJPVE9CVUZfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX0dGTEFHU19QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfSU5TVEFMTD1PTiBcCisgICAgLURDTUFLRV9DUk9TU0NPTVBJTElORz1PTiBcCisgICAgLURCVUlMRF9TSEFSRURfTElCUz1PTiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NZU1JPT1RfRElSU19CTEFDS0xJU1RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke2xpYmRpcn0vY21ha2UvZ3JwYyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS44LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS44LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ODNlYzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuOC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBoaWdoIHBlcmZvcm1hbmNlLCBvcGVuIHNvdXJjZSwgZ2VuZXJhbC1wdXJwb3NlIFJQQyBmcmFtZXdvcmsuIFwKLVByb3ZpZGVzIGdSUEMgbGlicmFyaWVzIGZvciBtdWx0aXBsZSBsYW5ndWFnZXMgd3JpdHRlbiBvbiB0b3Agb2Ygc2hhcmVkIEMgY29yZSBsaWJyYXJ5IFwKLShDKyssIE5vZGUuanMsIFB5dGhvbiwgUnVieSwgT2JqZWN0aXZlLUMsIFBIUCwgQyMpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dycGMvZ3JwYyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIiCi0KLURFUEVORFMgPSAiZ2ZsYWdzIGMtYXJlcyBwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYtYyBwcm90b2J1Zi1jLW5hdGl2ZSBvcGVuc3NsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndGVzdCBncnBjLW5hdGl2ZSAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMvYXJjaGl2ZS92JHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtQ01ha2VMaXN0cy50eHQtRmluZC1jLWFyZXMtaW4tdGFyZ2V0LXN5c3Jvb3QtYWxvbmUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjU2NWZhNjc4N2U0MmY0OTY5Mzk1ODcwYzJhZDQzNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGY5MTY4ZGE3NjBmZDJlZTk3MGM3NGM5ZDFiNjMzNzdlMDAyNGJlMjQ4ZGVhYTg0NGU3ODRkMGRmNDc1OTlkZSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRGdSUENfQ0FSRVNfUFJPVklERVI9cGFja2FnZSBcCi0gICAgLURnUlBDX1pMSUJfUFJPVklERVI9cGFja2FnZSBcCi0gICAgLURnUlBDX1NTTF9QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfUFJPVE9CVUZfUFJPVklERVI9cGFja2FnZSBcCi0gICAgLURnUlBDX0dGTEFHU19QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfSU5TVEFMTD0xIFwKLSAgICAtREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKLSAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuNDEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMi40LjQxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGJjOGIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuNDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxMiBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLVNVTU1BUlkgPSAiUHJvdmlkZXMgYSB3cmFwcGVyIGluIFB5dGhvbiB0byBMREFQIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBMREFQIFwKLShMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sKSB0aHJvdWdoIFB5dGhvbiBvcGVyYXRpb25zIFwKLWluc3RlYWQgb2YgQyBBUEkuIFRoZSBtb2R1bGUgbWFpbmx5IGFjdHMgYXMgYSB3cmFwcGVyIGZvciB0aGUgXAotT3BlbkxEQVAgMi54IGxpYnJhcmllcy4gRXJyb3JzIHdpbGwgYXBwZWFyIGFzIGV4Y2VwdGlvbnMuIgotCi1MSUNFTlNFID0gIlBTRiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLWxkYXAub3JnLyIKLURFUEVORFMgPSAicHl0aG9uIG9wZW5sZGFwIGN5cnVzLXNhc2wiCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tbGRhcCIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWE0MWM4MmVkZmZhMDQ5MTIwMDdjYWUxZDIwY2FjNTU1IgotU1JDX1VSSVttZDVzdW1dID0gIjE4ZGIyZDAwOTE1MGVjMTg2NDcxMGZlYTNlZDc2MTczIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkNDMwZWNmMDQwZjJmYzcwNGVlMzE2ZDMzOTBjYjFmNTQxOWMxOTEzNzFlMWUxMzFiYWVmNTRhMGU0MmNlZjAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczpebGlicmFyeV9kaXJzID0uKjo6JyBzZXR1cC5jZmcKLSAgICBzZWQgLWkgLWUgJ3M6XmluY2x1ZGVfZGlycyA9Lio6aW5jbHVkZV9kaXJzID0gPS91c3IvaW5jbHVkZS9zYXNsLzonIHNldHVwLmNmZwotfQotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzIuNC40NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuNDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRlOGE1MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGRhcF8yLjQuNDUuYmIKQEAgLTAsMCArMSwyOSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCisoTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCitpbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKK09wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKKworTElDRU5TRSA9ICJQU0YiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCitERVBFTkRTID0gInB5dGhvbiBvcGVubGRhcCBjeXJ1cy1zYXNsIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWxkYXAiCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zNmNlOWQ3MjZkMDMyMWI3M2MxNTIxNzA0ZDA3ZGIxYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MTA4ZTE4OWE0NGVlYThiYzdkMWNjMjgxYzIyMjk3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjRmZGUxODBhNTM3NzJlMjNlZGMwMzFjNGRkNjRhYzFhZjRhM2VhZGU3OGYwMGQ5ZDUxMDkzN2Q1NjJmNjRlIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6XmxpYnJhcnlfZGlycyA9Lio6Oicgc2V0dXAuY2ZnCisgICAgc2VkIC1pIC1lICdzOl5pbmNsdWRlX2RpcnMgPS4qOmluY2x1ZGVfZGlycyA9ID0vdXNyL2luY2x1ZGUvc2FzbC86JyBzZXR1cC5jZmcKK30KKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy9jb3Jvc3luYy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZWY5ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy9jb3Jvc3luYy5jb25mCkBAIC0wLDAgKzEsNTggQEAKKyMgU3RhcnRpbmcgcG9pbnQgZm9yIGNsdXN0ZXIgd2l0aCBwYWNlbWFrZXIvb3BlbmFpcworY29tcGF0aWJpbGl0eTogbm9uZQorCitjb3Jvc3luYyB7CisJIHVzZXI6ICByb290CisJIGdyb3VwOiByb290Cit9CisKK2Fpc2V4ZWMgeworCXdpdGggUGFjZW1ha2VyCisJdXNlcjogIHJvb3QKKwlncm91cDogcm9vdAorfQorCitzZXJ2aWNlIHsKKwluYW1lOiBwYWNlbWFrZXIKKwl2ZXI6IDEKK30KKwordG90ZW0geworCXZlcnNpb246IDIKKwlzZWNhdXRoOiBvZmYKKwl0aHJlYWRzOiAwCisJaW50ZXJmYWNlIHsKKwkJcmluZ251bWJlcjogMAorCQkjIENsdXN0ZXIgbmV0d29yayBhZGRyZXNzCisJCWJpbmRuZXRhZGRyOiAxOTIuMTY4LjEwLjAKKwkJIyBTaG91bGQgYmUgZmluZSBpbiBtb3N0IGNhc2VzLCBkb24ndCBmb3JnZXQgdG8gYWxsb3cKKwkJIyBwYWNrZXRzIGZvciB0aGlzIGFkZHJlc3MvcG9ydCBpbiBuZXRmaWx0ZXIgaWYgdGhlcmUKKwkJIyBpcyByZXN0cmljdGl2ZSBwb2xpY3kgc2V0IGZvciBjbHVzdGVyIG5ldHdvcmsKKwkJbWNhc3RhZGRyOiAyMjYuOTQuMS4xCisJCW1jYXN0cG9ydDogNTQwNQorCX0KK30KKworbG9nZ2luZyB7CisJZmlsZWxpbmU6IG9mZgorCXRvX3N0ZGVycjogbm8KKwl0b19sb2dmaWxlOiB5ZXMKKwl0b19zeXNsb2c6IHllcworCWxvZ2ZpbGU6IC92YXIvbG9nL2NsdXN0ZXIvY29yb3N5bmMubG9nCisJZGVidWc6IG9mZgorCXRpbWVzdGFtcDogb24KKwlsb2dnZXJfc3Vic3lzIHsKKwkJc3Vic3lzOiBBTUYKKwkJZGVidWc6IG9mZgorCX0KK30KKworYW1mIHsKKwltb2RlOiBkaXNhYmxlZAorfQorCitxdW9ydW0geworCSMgUXVvcnVtIGZvciB0aGUgUGFjZW1ha2VyIENsdXN0ZXIgUmVzb3VyY2UgTWFuYWdlcgorCXByb3ZpZGVyOiBjb3Jvc3luY192b3RlcXVvcnVtCisJZXhwZWN0ZWRfdm90ZXM6IDEKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzIuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NzNmYTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAotQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCi0KLVNSQ19VUkkgPSAiaHR0cDovL2J1aWxkLmNsdXN0ZXJsYWJzLm9yZy9jb3Jvc3luYy9yZWxlYXNlcy8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjBlZGUxMzAxOGFhZGM4YTA0NjE4M2JjNTkzYjBlMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWU3ZTQyMmU4ZDJmN2FmOGU1MzE1ZmEzMjliMWRiZDExNzVmZmYzMmVmYWE1NWU4MDU0NTg0YzgwYTJjNTk3IgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NWViNGNlMjQwMzNhZGI2MDg4ZGQxZDZmZmM1ZTVkIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSBuc3MgbGlicWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb3Jvc3luYy5zZXJ2aWNlIGNvcm9zeW5jLW5vdGlmeWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncWRldmljZScsICdjb3Jvc3luYy1xZGV2aWNlLnNlcnZpY2UnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsICdjb3Jvc3luYy1xbmV0ZC5zZXJ2aWNlJywgJycsIGQpfSBcCi0iCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb3Jvc3luYy1kYWVtb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICBkYnVzIHFkZXZpY2UgcW5ldGQgc25tcCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgotUEFDS0FHRUNPTkZJR1txZGV2aWNlXSA9ICItLWVuYWJsZS1xZGV2aWNlcywtLWRpc2FibGUtcWRldmljZXMiCi1QQUNLQUdFQ09ORklHW3FuZXRkXSA9ICItLWVuYWJsZS1xbmV0ZCwtLWRpc2FibGUtcW5ldGQiCi1QQUNLQUdFQ09ORklHW3JkbWFdID0gIi0tZW5hYmxlLXJkbWEsLS1kaXNhYmxlLXJkbWEiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKLUVYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgKCBjZCAke1N9Ci0gICAgJHtTfS9hdXRvZ2VuLnNoICkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCi0KLSAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotCi0gICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCBkKX0gXTsgdGhlbgotICAgICAgICBjaG93biAtUiBjb3JvcW5ldGQ6Y29yb3FuZXRkICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9xbmV0ZAotICAgICAgICBlY2hvICJkIGNvcm9xbmV0ZCBjb3JvcW5ldGQgMDc3MCAvdmFyL3J1bi9jb3Jvc3luYy1xbmV0ZCBub25lIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotICAgIGZpCi0KLSAgICBpZiBbICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsZCl9IF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgotCi0gICAgICAgIGlmIFsgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgZCl9IF07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbmYvdG1wZmlsZXMuZC9jb3Jvc3luYy1xbmV0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZmkKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3N5c3Zpbml0LXBpZG9mJywgJ3Byb2NwcycsIGQpfSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvQ09ST1NZTkMtTUlCLnR4dCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNvcm9xbmV0ZCIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWQgLyAtTSAtcyAvYmluL25vbG9naW4gLWMgJ1VzZXIgZm9yIGNvcm9zeW5jLXFuZXRkJyAtZyBjb3JvcW5ldGQgY29yb3FuZXRkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2EzZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjQuYmIKQEAgLTAsMCArMSw4MCBAQAorU1VNTUFSWSA9ICJUaGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgYW5kIEFwcGxpY2F0aW9uIFByb2dyYW1taW5nIEludGVyZmFjZXMiCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIEV4ZWN1dGl2ZSwgc2V2ZXJhbCBkZWZhdWx0IFwKK0FQSXMgYW5kIGxpYnJhcmllcywgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzLCBhbmQgYW4gaW5pdCBzY3JpcHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2Nvcm9zeW5jLmdpdGh1Yi5pby9jb3Jvc3luYy8iCisKK1NFQ1RJT04gPSAiYmFzZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXNlcmFkZAorCitTUkNfVVJJID0gImh0dHA6Ly9idWlsZC5jbHVzdGVybGFicy5vcmcvY29yb3N5bmMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2Nvcm9zeW5jLmNvbmYgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5ZGIyOWZmNGJjMDM1OTM2OTQ2YmU0NGZjOGJlNWNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjliZDQ3MDdiYjI3MWRmMTZmOGQ1NDNlYzc4MmViNGMzNWVjMDMzMGI3YmU2OTZiNzk3ZGE0YmQ4ZjA1OGEyNWQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkK1wuKD8hOTkpXGQrKFwuXGQrKSspIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NWViNGNlMjQwMzNhZGI2MDg4ZGQxZDZmZmM1ZTVkIgorCitERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSBuc3MgbGlicWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb3Jvc3luYy5zZXJ2aWNlIGNvcm9zeW5jLW5vdGlmeWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncWRldmljZScsICdjb3Jvc3luYy1xZGV2aWNlLnNlcnZpY2UnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxbmV0ZCcsICdjb3Jvc3luYy1xbmV0ZC5zZXJ2aWNlJywgJycsIGQpfSBcCisiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJjb3Jvc3luYy1kYWVtb24iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBkYnVzIHFkZXZpY2UgcW5ldGQgc25tcCBcCisiCisKK1BBQ0tBR0VDT05GSUdbZGJ1c10gPSAiLS1lbmFibGUtZGJ1cywtLWRpc2FibGUtZGJ1cyxkYnVzIgorUEFDS0FHRUNPTkZJR1txZGV2aWNlXSA9ICItLWVuYWJsZS1xZGV2aWNlcywtLWRpc2FibGUtcWRldmljZXMiCitQQUNLQUdFQ09ORklHW3FuZXRkXSA9ICItLWVuYWJsZS1xbmV0ZCwtLWRpc2FibGUtcW5ldGQiCitQQUNLQUdFQ09ORklHW3JkbWFdID0gIi0tZW5hYmxlLXJkbWEsLS1kaXNhYmxlLXJkbWEiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKK0VYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgKCBjZCAke1N9CisgICAgJHtTfS9hdXRvZ2VuLnNoICkKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vY29yb3N5bmMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vY29yb3N5bmMvY29yb3N5bmMuY29uZi5leGFtcGxlCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCisKKyAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYworCisgICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCBkKX0gXTsgdGhlbgorICAgICAgICBjaG93biAtUiBjb3JvcW5ldGQ6Y29yb3FuZXRkICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9xbmV0ZAorICAgICAgICBlY2hvICJkIGNvcm9xbmV0ZCBjb3JvcW5ldGQgMDc3MCAvdmFyL3J1bi9jb3Jvc3luYy1xbmV0ZCBub25lIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYworICAgIGZpCisKKyAgICBpZiBbICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsZCl9IF07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgorICAgIGZpCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbGNyc28vLmRlYnVnIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9DT1JPU1lOQy1NSUIudHh0IgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY29yb3FuZXRkIgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZCAvIC1NIC1zIC9iaW4vbm9sb2dpbiAtYyAnVXNlciBmb3IgY29yb3N5bmMtcW5ldGQnIC1nIGNvcm9xbmV0ZCBjb3JvcW5ldGQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy1pbi1nbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItbWFjcm9zLWluLWdsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmOWEwYTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy1pbi1nbC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGE1NWFiOGEwNzc3MDI5NmJmNmE2MjJkZjE0ZjJmMDQ0NWJlMTYzMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxOSBBdWcgMjAxOCAxNTo1ODo0OSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IgbWFjcm9zIGluIGdsaWJjIDIuMjUrCisKK3N5cy9zeXNtYWNyb3MuaCB3YXMgaW5jbHVkZWQgdGhvdWdoIHN5cy90eXBlcy5oIHVudGlsIDIuMjgKK2dsaWJjIHJlbGVhc2UgcmVtb3ZlZCBpdCB0aGVyZWZvcmUgaXQgbXVzdCBiZSBpbmNsdWRlZAorZXhwbGljaXRseSBub3cuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRsbV9jb250cm9sZC9hY3Rpb24uYyB8IDIgKysKKyBsaWJkbG0vbGliZGxtLmMgICAgICAgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZGxtX2NvbnRyb2xkL2FjdGlvbi5jIGIvZGxtX2NvbnRyb2xkL2FjdGlvbi5jCitpbmRleCA4NDYzN2YxLi4yYjhhZDZjIDEwMDY0NAorLS0tIGEvZGxtX2NvbnRyb2xkL2FjdGlvbi5jCisrKysgYi9kbG1fY29udHJvbGQvYWN0aW9uLmMKK0BAIC04LDYgKzgsOCBAQAorIAorICNpbmNsdWRlICJkbG1fZGFlbW9uLmgiCisgCisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKysKKyAjaW5jbHVkZSA8Y29yb3N5bmMvY29yb3R5cGVzLmg+CisgI2luY2x1ZGUgPGNvcm9zeW5jL2NtYXAuaD4KKyAKK2RpZmYgLS1naXQgYS9saWJkbG0vbGliZGxtLmMgYi9saWJkbG0vbGliZGxtLmMKK2luZGV4IGE5ZTYxOTUuLjQ5OWViNmEgMTAwNjQ0CistLS0gYS9saWJkbG0vbGliZGxtLmMKKysrKyBiL2xpYmRsbS9saWJkbG0uYworQEAgLTE0LDYgKzE0LDcgQEAKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1kbG0tZml4LWNvbXBpbGUtZXJyb3Itc2luY2UteG1sMi1jb25maWctc2hvdWxkLW5vdC1iLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLWRsbS1maXgtY29tcGlsZS1lcnJvci1zaW5jZS14bWwyLWNvbmZpZy1zaG91bGQtbm90LWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyZjMxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1kbG0tZml4LWNvbXBpbGUtZXJyb3Itc2luY2UteG1sMi1jb25maWctc2hvdWxkLW5vdC1iLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gOTEwN2YzYmQ2OGFlZjZhZTQ1NmEzY2FkNjY0MjIzYjRmM2QwMDEzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDE3OjA0OjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRsbTogZml4IGNvbXBpbGUgZXJyb3Igc2luY2UgeG1sMi1jb25maWcgc2hvdWxkIG5vdCBiZSB1c2VkCisKK3htbDItY29uZmlnIGlzIGRpc2FibGVkLCBzbyBjaGFuZ2UgTWFrZWZpbGUgdG8gdXNlIHBrZ2NvbmZpZwordG8gZmluZCBsaWJ4bWwyLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGZlbmNlL01ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ZlbmNlL01ha2VmaWxlIGIvZmVuY2UvTWFrZWZpbGUKK2luZGV4IDc3YmYwZmQuLmNjYTBiMmMgMTAwNjQ0CistLS0gYS9mZW5jZS9NYWtlZmlsZQorKysrIGIvZmVuY2UvTWFrZWZpbGUKK0BAIC0zMCwxMSArMzAsMTEgQEAgQklOX0NGTEFHUyArPSAtRF9HTlVfU09VUkNFIC1PMiAtZ2dkYiBcCisgCS1mZGlhZ25vc3RpY3Mtc2hvdy1vcHRpb24gXAorIAorIEJJTl9DRkxBR1MgKz0gLWZQSUUgLURQSUUKKy1CSU5fQ0ZMQUdTICs9IGB4bWwyLWNvbmZpZyAtLWNmbGFnc2AKKytCSU5fQ0ZMQUdTICs9IGBwa2ctY29uZmlnIGxpYnhtbC0yLjAgLS1jZmxhZ3NgCisgQklOX0NGTEFHUyArPSAtSS4uL2luY2x1ZGUKKyAKKyBCSU5fTERGTEFHUyArPSAtV2wsLXosbm93IC1XbCwteixyZWxybyAtcGllCistQklOX0xERkxBR1MgKz0gYHhtbDItY29uZmlnIC0tbGlic2AKKytCSU5fTERGTEFHUyArPSBgcGtnLWNvbmZpZyBsaWJ4bWwtMi4wIC0tbGlic2AKKyBCSU5fTERGTEFHUyArPSAtbGRsCisgCisgYWxsOiAkKEJJTl9UQVJHRVQpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1kbG0tZml4LXBhY2thZ2UtcWEtZXJyb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtLzAwMDEtZGxtLWZpeC1wYWNrYWdlLXFhLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMzg0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtLzAwMDEtZGxtLWZpeC1wYWNrYWdlLXFhLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMWZiNjg0MzNiZGU5N2Q1NzFmYzc4MWI1MmM5NTIxYjE3ZmJiOGRmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDE3OjQyOjQzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRsbTogZml4IHBhY2thZ2UgcWEgZXJyb3IKKworcGFzcyBMREZMQUcgdG8gbWFrZWZpbGUgdG8gZml4IGJlbG93IGVycm9yOgorZG9fcGFja2FnZV9xYTogUUEgSXNzdWU6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OgorL3BhY2thZ2VzLXNwbGl0L2RsbS91c3Ivc2Jpbi9kbG1fc3Rvbml0aCcgW2xkZmxhZ3NdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGZlbmNlL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZmVuY2UvTWFrZWZpbGUgYi9mZW5jZS9NYWtlZmlsZQoraW5kZXggY2NhMGIyYy4uMmIzOTYzYyAxMDA2NDQKKy0tLSBhL2ZlbmNlL01ha2VmaWxlCisrKysgYi9mZW5jZS9NYWtlZmlsZQorQEAgLTMzLDcgKzMzLDcgQEAgQklOX0NGTEFHUyArPSAtZlBJRSAtRFBJRQorIEJJTl9DRkxBR1MgKz0gYHBrZy1jb25maWcgbGlieG1sLTIuMCAtLWNmbGFnc2AKKyBCSU5fQ0ZMQUdTICs9IC1JLi4vaW5jbHVkZQorIAorLUJJTl9MREZMQUdTICs9IC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKKytCSU5fTERGTEFHUyArPSAkKExERkxBR1MpIC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKKyBCSU5fTERGTEFHUyArPSBgcGtnLWNvbmZpZyBsaWJ4bWwtMi4wIC0tbGlic2AKKyBCSU5fTERGTEFHUyArPSAtbGRsCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vcmVzcGVjdC1sZGZsYWdzLWFsc28tZnJvbS1iaW5fbGRmbGFncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vcmVzcGVjdC1sZGZsYWdzLWFsc28tZnJvbS1iaW5fbGRmbGFncy5wYXRjaAppbmRleCA2OWIyZjkwLi42ZjAxYjIxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtL3Jlc3BlY3QtbGRmbGFncy1hbHNvLWZyb20tYmluX2xkZmxhZ3MucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS9yZXNwZWN0LWxkZmxhZ3MtYWxzby1mcm9tLWJpbl9sZGZsYWdzLnBhdGNoCkBAIC0xLDcgKzEsMjMgQEAKLWRpZmYgLXVOciBkbG0tNC4wLjIub3JpZy9kbG1fY29udHJvbGQvTWFrZWZpbGUgZGxtLTQuMC4yL2RsbV9jb250cm9sZC9NYWtlZmlsZQotLS0tIGRsbS00LjAuMi5vcmlnL2RsbV9jb250cm9sZC9NYWtlZmlsZQkyMDE3LTA0LTA0IDEwOjQ5OjIzLjY2MTMyMDI2MCArMDIwMAotKysrIGRsbS00LjAuMi9kbG1fY29udHJvbGQvTWFrZWZpbGUJMjAxNy0wNC0wNCAxMDo1MDozNi4xMjEzMjY0MjkgKzAyMDAKLUBAIC01NSw3ICs1NSw3IEBACitGcm9tIDM0YTkxODI4MTRhZTU2NWQ2ZjQzMGY4NWNmZTgwYzA1ZmE5ZjJkZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNCBKdWwgMjAxOCAxNzo1NTozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSByZXNwZWN0LWxkZmxhZ3MtYWxzby1mcm9tLWJpbl9sZGZsYWdzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1zcGVjaWZpY10KKwordXBkYXRlIG9yaWdpbmFsIHBhdGNoIHRvIHZlcnNpb24gNC4wLjcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGRsbV9jb250cm9sZC9NYWtlZmlsZSB8IDQgKystLQorIGRsbV90b29sL01ha2VmaWxlICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RsbV9jb250cm9sZC9NYWtlZmlsZSBiL2RsbV9jb250cm9sZC9NYWtlZmlsZQoraW5kZXggY2Y1NTZjOS4uMzM4MTczMCAxMDA2NDQKKy0tLSBhL2RsbV9jb250cm9sZC9NYWtlZmlsZQorKysrIGIvZGxtX2NvbnRyb2xkL01ha2VmaWxlCitAQCAtNTUsMTEgKzU1LDExIEBAIEJJTl9DRkxBR1MgKz0gLURfR05VX1NPVVJDRSAtTzIgLWdnZGIgXAogIEJJTl9DRkxBR1MgKz0gLWZQSUUgLURQSUUKICBCSU5fQ0ZMQUdTICs9IC1JLi4vaW5jbHVkZSAtSS4uL2xpYmRsbQogIApAQCAtMTAsMTAgKzI2LDE2IEBACiAgQklOX0xERkxBR1MgKz0gLWxwdGhyZWFkIC1scnQgLWxjcGcgLWxjbWFwIC1sY2ZnIC1scXVvcnVtCiAgCiAgTElCX0NGTEFHUyArPSAkKEJJTl9DRkxBR1MpCi1kaWZmIC11TnIgZGxtLTQuMC4yLm9yaWcvZGxtX3Rvb2wvTWFrZWZpbGUgZGxtLTQuMC4yL2RsbV90b29sL01ha2VmaWxlCi0tLS0gZGxtLTQuMC4yLm9yaWcvZGxtX3Rvb2wvTWFrZWZpbGUJMjAxMy0wNy0zMSAxNzo1MDoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBkbG0tNC4wLjIvZGxtX3Rvb2wvTWFrZWZpbGUJMjAxNy0wNC0wNCAxMDo1MDo0NC42MTczMjcxNTMgKzAyMDAKLUBAIC0zMiw3ICszMiw3IEBACistTElCX0xERkxBR1MgKz0gLVdsLC16LHJlbHJvIC1waWUKKytMSUJfTERGTEFHUyArPSAkKExERkxBR1MpIC1XbCwteixyZWxybyAtcGllCisgCisgaWZlcSAoJChVU0VfU0RfTk9USUZZKSx5ZXMpCisgCUJJTl9DRkxBR1MgKz0gJChzaGVsbCBwa2ctY29uZmlnIC0tY2ZsYWdzIGxpYnN5c3RlbWQpIFwKK2RpZmYgLS1naXQgYS9kbG1fdG9vbC9NYWtlZmlsZSBiL2RsbV90b29sL01ha2VmaWxlCitpbmRleCBjMTZkOGY1Li5hNDhhMjZmIDEwMDY0NAorLS0tIGEvZGxtX3Rvb2wvTWFrZWZpbGUKKysrKyBiL2RsbV90b29sL01ha2VmaWxlCitAQCAtMzIsNyArMzIsNyBAQCBCSU5fQ0ZMQUdTICs9IC1EX0dOVV9TT1VSQ0UgLU8yIC1nZ2RiIFwKICBCSU5fQ0ZMQUdTICs9IC1mUElFIC1EUElFCiAgQklOX0NGTEFHUyArPSAtSS4uL2luY2x1ZGUgLUkuLi9saWJkbG0gLUkuLi9kbG1fY29udHJvbGQKICAKQEAgLTIyLDE1ICs0NCw2IEBACiAgQklOX0xERkxBR1MgKz0gLUwuLi9saWJkbG0gLUwuLi9kbG1fY29udHJvbGQKICBCSU5fTERGTEFHUyArPSAtbHB0aHJlYWQgLWxkbG0gLWxkbG1jb250cm9sCiAgCi1kaWZmIC11TnIgZGxtLTQuMC4yLm9yaWcvZGxtX2NvbnRyb2xkL01ha2VmaWxlIGRsbS00LjAuMi9kbG1fY29udHJvbGQvTWFrZWZpbGUKLS0tLSBkbG0tNC4wLjIub3JpZy9kbG1fY29udHJvbGQvTWFrZWZpbGUJMjAxNy0wNC0wNCAxMTowMjo1OC41NzgzODk2NDEgKzAyMDAKLSsrKyBkbG0tNC4wLjIvZGxtX2NvbnRyb2xkL01ha2VmaWxlCTIwMTctMDQtMDQgMTE6MDc6NTUuNjcyNDE0OTM1ICswMjAwCi1AQCAtNTksNyArNTksNyBAQAotIEJJTl9MREZMQUdTICs9IC1scHRocmVhZCAtbHJ0IC1sY3BnIC1sY21hcCAtbGNmZyAtbHF1b3J1bQotIAotIExJQl9DRkxBR1MgKz0gJChCSU5fQ0ZMQUdTKQotLUxJQl9MREZMQUdTICs9IC1XbCwteixyZWxybyAtcGllCi0rTElCX0xERkxBR1MgKz0gJChMREZMQUdTKSAtV2wsLXoscmVscm8gLXBpZQotIAotIGlmZXEgKCQoVVNFX1NEX05PVElGWSkseWVzKQotIAlCSU5fQ0ZMQUdTICs9ICQoc2hlbGwgcGtnLWNvbmZpZyAtLWNmbGFncyBsaWJzeXN0ZW1kLWRhZW1vbikgXAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFlNDExZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiZGxtIGNvbnRyb2wgZGFlbW9uIGFuZCB0b29sIgotCi1TRUNUSU9OID0gInV0aWxzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL2NsdXN0ZXIvd2lraS9Ib21lUGFnZSIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXQuZmVkb3JhaG9zdGVkLm9yZy9jZ2l0L2RsbS5naXQvc25hcHNob3QvJHtCUH0udGFyLnh6IFwKLSAgICBmaWxlOi8vcmVzcGVjdC1sZGZsYWdzLWFsc28tZnJvbS1iaW5fbGRmbGFncy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmMyZWU2MDkzYWE2YWEwYTg4YWFhZDgzZTk5OGEzZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiODliYzU1N2FhZmZiYWIwYWMwMDUzOTgwMjVmMjQ3NzE4YTU1ODljZmY2NTc0ZDkwMmVhZmZlMmIyMGU2ODNlIgotCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MiAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5saWNlbnNlO21kNT04ZjBiYmNkZDY3OGRmMWJjZTk4NjM0OTJiNmM4ODMyZCIKLQotREVQRU5EUyA9ICJjb3Jvc3luYyBzeXN0ZW1kIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGxtLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKLQotZXhwb3J0IEVYVFJBX09FTUFLRSA9ICIiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgInMvbGlic3lzdGVtZC1kYWVtb24vbGlic3lzdGVtZC9nIiAke1N9L2RsbV9jb250cm9sZC9NYWtlZmlsZQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBvZV9ydW5tYWtlICdDQz0ke0NDfScKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9kbG0uc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9kbG0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2RsbS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kbG0KLQotICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9kbG0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGZpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci19Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNzg2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC43LmJiCkBAIC0wLDAgKzEsNjQgQEAKK0RFU0NSSVBUSU9OID0gImRsbSBjb250cm9sIGRhZW1vbiBhbmQgdG9vbCIKKworU0VDVElPTiA9ICJ1dGlscyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9jbHVzdGVyL3dpa2kvSG9tZVBhZ2UiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9kbG0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3Jlc3BlY3QtbGRmbGFncy1hbHNvLWZyb20tYmluX2xkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kbG0tZml4LWNvbXBpbGUtZXJyb3Itc2luY2UteG1sMi1jb25maWctc2hvdWxkLW5vdC1iLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGxtLWZpeC1wYWNrYWdlLXFhLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy1pbi1nbC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImFhNjA0YTEwZDVhYzJkMzQxNGViODllYzY5ODRjZDEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzOWRkZmM4MjM2OTI3MmE2OGQ1NjgxNjY4OTczNmMwMGI4ZjFiNmIyODY5YTZiNjZiN2RiZjZkYWQ4NjQ2OWEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3BhZ3VyZS5pby9kbG0vcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJkbG0tKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MiAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5saWNlbnNlO21kNT04ZjBiYmNkZDY3OGRmMWJjZTk4NjM0OTJiNmM4ODMyZCIKKworREVQRU5EUyA9ICJjb3Jvc3luYyBzeXN0ZW1kIgorCitpbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitQQUNLQUdFQ09ORklHID8/PSAiIgorCitQQUNLQUdFQ09ORklHW3BhY2VtYWtlcl0gPSAiLCxwYWNlbWFrZXIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkbG0uc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgorCitleHBvcnQgRVhUUkFfT0VNQUtFID0gIiIKKworRE9OVEJVSUxEID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhY2VtYWtlcicsICcnLCAnZmVuY2UnLCBkKX0iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgInMvbGlic3lzdGVtZC1kYWVtb24vbGlic3lzdGVtZC9nIiAke1N9L2RsbV9jb250cm9sZC9NYWtlZmlsZQorICAgIHNlZCAtaSAtZSAicy8gJHtET05UQlVJTER9Ly9nIiAke1N9L01ha2VmaWxlCit9CisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UgJ0NDPSR7Q0N9JworfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2RsbS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2RsbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvZGxtLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RsbQorCisgICAgIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pbml0L2RsbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgZmkKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KK30KKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvMDAwMS1rZXJuZWwtZXZlbnQtbmV0bGlua19hY2stbm93LXJlcXVpcmVzLTQtYXJndW1lbnRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvMDAwMS1rZXJuZWwtZXZlbnQtbmV0bGlua19hY2stbm93LXJlcXVpcmVzLTQtYXJndW1lbnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDI2ZDM1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzLzAwMDEta2VybmVsLWV2ZW50LW5ldGxpbmtfYWNrLW5vdy1yZXF1aXJlcy00LWFyZ3VtZW50cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gY2JjNWY4MTUxMDE3ZjQ1MjMxYjc1YTgyNmYxODM1NGE4MWMyODdjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDA3OjUyOjU5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGtlcm5lbC9ldmVudDogbmV0bGlua19hY2soKSBub3cgcmVxdWlyZXMgNCBhcmd1bWVudHMKLQotc2VlIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvOTY3MDE4MS8KLQotZXZlbnQuYzozMjo0OiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJ25ldGxpbmtfYWNrJwotfCAgICAgbmV0bGlua19hY2soc2tiLCBubGgsIDApOwotfCAgICAgXn5+fn5+fn5+fn4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGtlcm5lbC9ldmVudC5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9ldmVudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyLm9yaWcva2VybmVsL2V2ZW50LmMKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2V2ZW50LmMKLUBAIC02LDYgKzYsNyBAQAotICAqIFNvbWUgZnVuY3Rpb25zIGFyZSBiYXNlZCBvbiBhdWRpdCBjb2RlLgotICAqLwotIAotKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgotICNpbmNsdWRlIDxuZXQvdGNwLmg+Ci0gI2luY2x1ZGUgImlldF91LmgiCi1AQCAtMjksNyArMzAsMTEgQEAgc3RhdGljIHZvaWQgZXZlbnRfcmVjdl9za2Ioc3RydWN0IHNrX2J1ZgotIAkJaWV0ZF9waWQgPSBORVRMSU5LX0NCKHNrYikucG9ydGlkOwotIAkJV0FSTl9PTihpZXRkX3BpZCA9PSAwKTsKLSAJCWlmIChubGgtPm5sbXNnX2ZsYWdzICYgTkxNX0ZfQUNLKQotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgMTIsIDApCi0rCQkJbmV0bGlua19hY2soc2tiLCBubGgsIDAsIE5VTEwpOwotKyNlbHNlCi0gCQkJbmV0bGlua19hY2soc2tiLCBubGgsIDApOwotKyNlbmRpZgotIAkJc2tiX3B1bGwoc2tiLCBybGVuKTsKLSAJfQotIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzL2FjY2Vzcy1za192Nl9kYWRkci1pZmYtSVBWNi1kZWZpbmVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvYWNjZXNzLXNrX3Y2X2RhZGRyLWlmZi1JUFY2LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NDQyMzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvYWNjZXNzLXNrX3Y2X2RhZGRyLWlmZi1JUFY2LWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1UaGUgZWxlbWVudCBza2NfdjZfZGFkZHIgKGluIHN0cnVjdCBzb2NrX2NvbW1vbikgaXMgZGVmaW5lZCBpbiAKLWtlcm5lbCBzb3VyY2Ugb25seSB3aGVuIENPTkZJR19JUFY2IGlzIGVuYWJsZWQuIEhlbmNlLCBhY2Nlc3MgCi1za192Nl9kYWRkciBlbGVtZW50IChpLmUgX19za19jb21tb24uc2tjX3Y2X2RhZGRyKSBvbmx5IHdoZW4gQ09ORklHX0lQVjYgCi1pcyBkZWZpbmVkOyB0byBmaXggYmVsb3cgZXJyb3IgaW4gd29ybGQgYnVpbGQ6Ci0KLS0tIHNuaXAgLS0KLS9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS9pbmNsdWRlL25ldC9zb2NrLmg6MzMwOjMzOiBlcnJvcjogJ3N0cnVjdCBzb2NrX2NvbW1vbicgaGFzIG5vIG1lbWJlciBuYW1lZCAnc2tjX3Y2X2RhZGRyJwotLS0gQ1VUIC0tCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0KLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9jb25uLmMJMjAxNS0xMi0yOSAyMTo1Nzo1MC41NDc5MzIyMTcgLTA4MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Nvbm4uYwkyMDE1LTEyLTI5IDIyOjQ3OjI1LjI1NDY1NzYyNyAtMDgwMAotQEAgLTQ2LDEwICs0NiwxMiBAQCB2b2lkIGNvbm5faW5mb19zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxCi0gCQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAJCQkJICIlcEk0IiwgJmluZXRfc2soc2spLT5pbmV0X2RhZGRyKTsKLSAJCQlicmVhazsKLSsjaWYgZGVmaW5lZChDT05GSUdfSVBWNikKLSAJCWNhc2UgQUZfSU5FVDY6Ci0gCQkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlslcEk2XSIsCi0gCQkJCSAmKHNrKS0+c2tfdjZfZGFkZHIpOwotIAkJCWJyZWFrOwotKyNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19JUFY2KSAqLwotIAkJZGVmYXVsdDoKLSAJCQlicmVhazsKLSAJCX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzL2J1aWxkX3dpdGhfdXBkYXRlZF9iaW9fc3RydWN0X29mX2xpbnV4X3Y0LjNfYW5kX2Fib3ZlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvYnVpbGRfd2l0aF91cGRhdGVkX2Jpb19zdHJ1Y3Rfb2ZfbGludXhfdjQuM19hbmRfYWJvdmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZTM4YmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvYnVpbGRfd2l0aF91cGRhdGVkX2Jpb19zdHJ1Y3Rfb2ZfbGludXhfdjQuM19hbmRfYWJvdmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRGVzY3JpcHRpb246IEZpeCBzb3VyY2UgdG8gY29tcGlsZSB3aXRoIDQuMysga2VybmVscwotICBjb21taXQgNDI0NmEwYjYzYmQ4ZjU2YTE0NjliMTJlYWZlYjg3NWIxMDQxYTQ1MQotICAgIGJsb2NrOiBhZGQgYSBiaV9lcnJvciBmaWVsZCB0byBzdHJ1Y3QgYmlvCi0gIC0+IFJlbW92ZXMgQklPX1VQVE9EQVRFIGFuZCBlcnJvciBhcmd1bWVudCB0byBiaW9fZW5kaW8uCi0gIGNvbW1pdCBiNTRmZmI3M2NhZGNkY2ZmOWNjMWFlMGUxMWY1MDI0MDdlM2UyZTRjCi0gICAgYmxvY2s6IHJlbW92ZSBiaW9fZ2V0X25yX3ZlY3MoKQotICAtPiBSZW1vdmVkIHRoYXQgY2FsbCAoYWx3YXlzIHVzZSBCSU9fTUFYX1BBR0VTKQotICBjb21taXQgNjc2ZDIzNjkwZmI2MmI1ZDUxYmE1ZDY1OTkzNWU5ZjdkOWRhOWY4ZQotICAgIG5ldDogRml4IHVzZSBhZnRlciBmcmVlIGJ5IHJlbW92aW5nIGxlbmd0aCBhcmcgZnJvbSBza19kYXRhX3JlYWR5IGNhbGxiYWNrcy4KLSAgLT4gUmVtb3ZlcyBsZW4gYXJndW1lbnQgZnJvbSBza19kYXRhX3JlYWR5KCkgY2FsbGJhY2suCi1BdXRob3I6IFN0ZWZhbiBCYWRlciA8c3RlZmFuLmJhZGVyQGNhbm9uaWNhbC5jb20+Ci0KLVRoZSBvcmlnaW5hbCBwYXRjaCBpcyBhdCBodHRwOi8vbGF1bmNocGFkbGlicmFyaWFuLm5ldC8yMjc0Nzg4ODUvaXNjc2l0YXJnZXRfMS40LjIwLjMrc3ZuNTAyLTJ1YnVudHUyXzEuNC4yMC4zK3N2bjUwMi0ydWJ1bnR1My5kaWZmLmd6LAotdGhvc2UgY2hhbmdlcyB3ZXJlIHRha2VuIHVzaW5nICNpZnMgdG8gYWxsb3cgY29tcGlsYXRpb24gb2YgaXNjc2l0YXJnZXQgCi1wYWNrYWdlIHdpdGgga2VybmVsIHZlcnNpb25zIDwgNC4zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xhdW5jaHBhZGxpYnJhcmlhbi5uZXQvMjI3NDc4ODg1L2lzY3NpdGFyZ2V0XzEuNC4yMC4zK3N2bjUwMi0ydWJ1bnR1Ml8xLjQuMjAuMytzdm41MDItMnVidW50dTMuZGlmZi5nel0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotCi1kaWZmIC1OYXVycCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9ibG9jay1pby5jIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvYmxvY2staW8uYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2Jsb2NrLWlvLmMJMjAxNC0wNS0wNiAxMzo1OTo1NS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Jsb2NrLWlvLmMJMjAxNy0wMS0xOSAwMDo0NjoyOC4yNjM5NTExMTUgLTA4MDAKLUBAIC0yOSwxNCArMjksMjMgQEAgc3RydWN0IHRpb193b3JrIHsKLSAJc3RydWN0IGNvbXBsZXRpb24gdGlvX2NvbXBsZXRlOwotIH07Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKQotK3N0YXRpYyB2b2lkIGJsb2NraW9fYmlvX2VuZGlvKHN0cnVjdCBiaW8gKmJpbykKLSsjZWxzZQotIHN0YXRpYyB2b2lkIGJsb2NraW9fYmlvX2VuZGlvKHN0cnVjdCBiaW8gKmJpbywgaW50IGVycm9yKQotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgMywgMCkgKi8KLSB7Ci0gCXN0cnVjdCB0aW9fd29yayAqdGlvX3dvcmsgPSBiaW8tPmJpX3ByaXZhdGU7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKQotKwlpZiAoYmlvLT5iaV9lcnJvcikKLSsJCWF0b21pY19zZXQoJnRpb193b3JrLT5lcnJvciwgYmlvLT5iaV9lcnJvcik7Ci0rI2Vsc2UKLSAJZXJyb3IgPSB0ZXN0X2JpdChCSU9fVVBUT0RBVEUsICZiaW8tPmJpX2ZsYWdzKSA/IGVycm9yIDogLUVJTzsKLSAKLSAJaWYgKGVycm9yKQotIAkJYXRvbWljX3NldCgmdGlvX3dvcmstPmVycm9yLCBlcnJvcik7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIAotIAkvKiBJZiBsYXN0IGJpbyBzaWduYWwgY29tcGxldGlvbiAqLwotIAlpZiAoYXRvbWljX2RlY19hbmRfdGVzdCgmdGlvX3dvcmstPmJpb3NfcmVtYWluaW5nKSkKLUBAIC02MSwxNCArNzAsMjAgQEAgYmxvY2tpb19tYWtlX3JlcXVlc3Qoc3RydWN0IGlldF92b2x1bWUgKgotIAl1MzIgc2l6ZSA9IHRpby0+c2l6ZTsKLSAJdTMyIHRpb19pbmRleCA9IDA7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKQotKwlpbnQgbWF4X3BhZ2VzID0gYmRldl9xID8gQklPX01BWF9QQUdFUyA6IDE7Ci0rI2Vsc2UKLSAJaW50IG1heF9wYWdlcyA9IDE7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIAlpbnQgZXJyID0gMDsKLSAKLSAJbG9mZl90IHBwb3MgPSB0aW8tPm9mZnNldDsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgMywgMCkKLSAJLyogQ2FsY3VsYXRlIG1heF9wYWdlcyBmb3IgYmlvX2FsbG9jIChtZW1vcnkgc2F2ZXIpICovCi0gCWlmIChiZGV2X3EpCi0gCQltYXhfcGFnZXMgPSBiaW9fZ2V0X25yX3ZlY3MoYmlvX2RhdGEtPmJkZXYpOwotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIAotIAl0aW9fd29yayA9IGt6YWxsb2Moc2l6ZW9mICgqdGlvX3dvcmspLCBHRlBfS0VSTkVMKTsKLSAJaWYgKCF0aW9fd29yaykKLWRpZmYgLU5hdXJwIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2Nvbm4uYyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Nvbm4uYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2Nvbm4uYwkyMDE3LTAxLTE5IDAwOjM5OjA5LjczNzExNzc3OCAtMDgwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvY29ubi5jCTIwMTctMDEtMTkgMDA6NTI6MzAuMDM3MjIzOTAxIC0wODAwCi1AQCAtODksMTMgKzg5LDIxIEBAIHN0YXRpYyB2b2lkIGlldF9zdGF0ZV9jaGFuZ2Uoc3RydWN0IHNvY2sKLSAJdGFyZ2V0LT5udGhyZWFkX2luZm8ub2xkX3N0YXRlX2NoYW5nZShzayk7Ci0gfQotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgMywgMCkKLStzdGF0aWMgdm9pZCBpZXRfZGF0YV9yZWFkeShzdHJ1Y3Qgc29jayAqc2spCi0rI2Vsc2UKLSBzdGF0aWMgdm9pZCBpZXRfZGF0YV9yZWFkeShzdHJ1Y3Qgc29jayAqc2ssIGludCBsZW4pCi0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIHsKLSAJc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4gPSBzay0+c2tfdXNlcl9kYXRhOwotIAlzdHJ1Y3QgaXNjc2lfdGFyZ2V0ICp0YXJnZXQgPSBjb25uLT5zZXNzaW9uLT50YXJnZXQ7Ci0gCi0gCW50aHJlYWRfd2FrZXVwKHRhcmdldCk7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKQotKwl0YXJnZXQtPm50aHJlYWRfaW5mby5vbGRfZGF0YV9yZWFkeShzayk7Ci0rI2Vsc2UKLSAJdGFyZ2V0LT5udGhyZWFkX2luZm8ub2xkX2RhdGFfcmVhZHkoc2ssIGxlbik7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIH0KLSAKLSAvKgotZGlmZiAtTmF1cnAgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvaXNjc2kuaCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2lzY3NpLmgKLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9pc2NzaS5oCTIwMTQtMDUtMDYgMTM6NTk6NTUuMDAwMDAwMDAwIC0wNzAwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9pc2NzaS5oCTIwMTctMDEtMTkgMDA6NDg6MDIuMTAyODM3MjYwIC0wODAwCi1AQCAtODEsNyArODEsMTEgQEAgc3RydWN0IG5ldHdvcmtfdGhyZWFkX2luZm8gewotIAlzcGlubG9ja190IG50aHJlYWRfbG9jazsKLSAKLSAJdm9pZCAoKm9sZF9zdGF0ZV9jaGFuZ2UpKHN0cnVjdCBzb2NrICopOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgMywgMCkKLSsJdm9pZCAoKm9sZF9kYXRhX3JlYWR5KShzdHJ1Y3Qgc29jayAqKTsKLSsjZWxzZQotIAl2b2lkICgqb2xkX2RhdGFfcmVhZHkpKHN0cnVjdCBzb2NrICosIGludCk7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCAzLCAwKSAqLwotIAl2b2lkICgqb2xkX3dyaXRlX3NwYWNlKShzdHJ1Y3Qgc29jayAqKTsKLSB9OwotIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvYnVpbGRfd2l0aF91cGRhdGVkX2ludGVyZmFjZXNfb2ZfbGludXhfdjQuOF9hbmRfYWJvdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy9idWlsZF93aXRoX3VwZGF0ZWRfaW50ZXJmYWNlc19vZl9saW51eF92NC44X2FuZF9hYm92ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUwOGE1ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy9idWlsZF93aXRoX3VwZGF0ZWRfaW50ZXJmYWNlc19vZl9saW51eF92NC44X2FuZF9hYm92ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3NSArMCwwIEBACi1SZXNvbHZlIGJ1aWxkIGVycm9yIHdpdGggbGludXgga2VybmVsIDQuOAotCi1UaGUgYmVsb3cgY2hhbmdlcyBpbiBrZXJuZWwgc291cmNlLCB0cmlnZ2VyZWQgaXNjc2l0YXJnZXQKLWJ1aWxkIGZhaWwgd2l0aCBsaW51eCBrZXJuZWwgdjQuOC4KLQotMS4gQW4gZXh0cmEgJ2ZsYWdzJyBhcmd1bWVudCBoYXMgYmVlbiBwYXNzZWQgdG8gdmZzX3JlYWR2L3Zmc193cml0ZXYKLSAgIHN5c2NhbGxzIGluIHY0LjguIFNvLCBzZXQgdGhpcyBhcmd1bWVudCB0byAiMCIgZm9yIG5vdwotICAgKGFzIHRoZXJlIGlzIG5vIHJlYWwgbmVlZCBmb3IgdGhhdCkuCi0gICBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvNzkzYjgwZWYxNGFmNTZkMjBjOTk4MjY1Mjg3NjQ4YWQzNDIzOWI2ZgotICAgU29sdmVzOgotICAgLS0gc25pcCAtLQotVE9QRElSL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvaXNjc2l0YXJnZXQvMS40LjIwLjMrc3ZuNTAyLXIwL2lzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvbnRocmVhZC5jOiBJbiBmdW5jdGlvbiAnd3JpdGVfZGF0YSc6Ci1UT1BESVIvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9pc2NzaXRhcmdldC8xLjQuMjAuMytzdm41MDItcjAvaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9udGhyZWFkLmM6MzUwOjk6IGVycm9yOiB0b28gZmV3IGFyZ3VtZW50cyB0byBmdW5jdGlvbiAndmZzX3dyaXRldicKLSAgIHJlcyA9IHZmc193cml0ZXYoZmlsZSwgKHN0cnVjdCBpb3ZlYyBfX3VzZXIgKikgaW9wLCBjb3VudCwgJm9mZik7Ci0gICAgICAgICBefn5+fn5+fn5+Ci0gICAtLSBzbmlwIC0tCi0KLTIuIFJlZGVmaW5lIGRyb3BwZWQgUEFHRV9DQUNIRV8qIGFuZCBwYWdlX2NhY2hlX3tnZXQscmVsZWFzZX0gZGVmaW5pdGlvbnMsCi0gICBhcyB0aGV5IGhhdmUgYmVlbiBkcm9wcGVkIHdpdGggdjQuOAotICAgUmVmOiBodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvY29tbWl0LzFmYTY0ZjE5OGI5ZjhkNmVjMGY3YWVjN2MxOGRjOTQ2ODQzOTExNDAKLSAgIFNvbHZlczoKLSAgIC0tIHNuaXAgLS0KLVRPUERJUi90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2lzY3NpdGFyZ2V0LzEuNC4yMC4zK3N2bjUwMi1yMC9pc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL3BhcmFtLmM6IEluIGZ1bmN0aW9uICdzZXNzX3BhcmFtX2NoZWNrJzoKLVRPUERJUi90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2lzY3NpdGFyZ2V0LzEuNC4yMC4zK3N2bjUwMi1yMC9pc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL3BhcmFtLmM6NDg6NDE6IGVycm9yOiAnUEFHRV9DQUNIRV9TSVpFJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSAgICAgICAodTMyKSAoKElTQ1NJX0NPTk5fSU9WX01BWCAtIDEpICogUEFHRV9DQUNIRV9TSVpFKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLSAgIC0tIHNuaXAgLS0KLQotMy4gUmVwbGFjZSBjcnlwdG9faGFzaCBpbnRlcmZhY2VzIHdpdGggY3J5cHRvX2FoYXNoIGludGVyZmFjZXMsCi0gICBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvODk2NTQ1MDk4Nzc3NTY0MjEyYjllOTFhZjRjOTczZjA5NDY0OWFhNwotICAgUmVmOiBodHRwczovL3d3dy5yZWRoYXQuY29tL2FyY2hpdmVzL2RtLWRldmVsLzIwMTYtSmFudWFyeS9tc2cwMDI0NC5odG1sCi0gICBTb2x2ZXM6Ci0gICAtLSBzbmlwIC0tCi1UT1BESVIvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9pc2NzaXRhcmdldC8xLjQuMjAuMytzdm41MDItcjAvaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9kaWdlc3QuYzogSW4gZnVuY3Rpb24gJ2RpZ2VzdF9pbml0JzoKLVRPUERJUi90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2lzY3NpdGFyZ2V0LzEuNC4yMC4zK3N2bjUwMi1yMC9pc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2RpZ2VzdC5jOjQyOjIzOiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2NyeXB0b19hbGxvY19oYXNoJyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KLSAgIGNvbm4tPnJ4X2hhc2gudGZtID0gY3J5cHRvX2FsbG9jX2hhc2goImNyYzMyYyIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+Ci1UT1BESVIvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9pc2NzaXRhcmdldC8xLjQuMjAuMytzdm41MDItcjAvaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9kaWdlc3QuYzogSW4gZnVuY3Rpb24gJ2RpZ2VzdF9jbGVhbnVwJzoKLVRPUERJUi90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2lzY3NpdGFyZ2V0LzEuNC4yMC4zK3N2bjUwMi1yMC9pc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2RpZ2VzdC5jOjc3OjM6IGVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnY3J5cHRvX2ZyZWVfaGFzaCcgWy1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCi0gICBjcnlwdG9fZnJlZV9oYXNoKGNvbm4tPnR4X2hhc2gudGZtKTsKLSAgIF5+fn5+fn5+fn5+fn5+fn4KLSAgIC0tIHNuaXAgLS0KLQotNC4gVGhlIGVhcmxpZXIgInJ3IiBwYXJhbWV0ZXIgaGFzIGJlZW4gc2V0IGluICJiaV9ydyIgd2l0aGluCi0gICBiaW8gc3RydWN0dXJlLCBoZW5jZSByZW1vdmUgInJ3IiBhcmd1bWVudC4KLSAgIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2NvbW1pdC80ZTQ5ZWE0YTNkMjc2MzY1YmY3Mzk2YzliNzdiNGQxZDU5MjM4MzVhCi0gICBTb2x2ZXM6Ci0tLSBzbmlwIC0tCi1UT1BESVIvdG1wLWdsaWJjL3dvcmsvcWVtdXg4Ni1vZS1saW51eC9pc2NzaXRhcmdldC8xLjQuMjAuMytzdm41MDItcjAvaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9ibG9jay1pby5jOjE0MDoxNDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdzdWJtaXRfYmlvJyBtYWtlcyBwb2ludGVyIGZyb20gaW50ZWdlciB3aXRob3V0IGEgY2FzdCBbLVdpbnQtY29udmVyc2lvbl0KLSAgIHN1Ym1pdF9iaW8ocncsIGJpbyk7Ci0gICAgICAgICAgICAgIF5+Ci0tLSBzbmlwIC0tCi0KLTUuIFRoZSAnbGVuJyBhcmd1bWVudCBmcm9tIHNrX2RhdGFfcmVhZHkoKSBjYWxsYmFjayBoYXMgYmVlbiByZW1vdmVkIGluCi0gICBsaW51eCBrZXJuZWwgdjQuMyBhbmQgYWJvdmUuCi0gICBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvNjc2ZDIzNjkwZmI2MmI1ZDUxYmE1ZDY1OTkzNWU5ZjdkOWRhOWY4ZQotICAgU29sdmVzOgotLS0gc25pcCAtLQotVE9QRElSL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvaXNjc2l0YXJnZXQvMS40LjIwLjMrc3ZuNTAyLXIwL2lzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvY29ubi5jOiBJbiBmdW5jdGlvbiAnaWV0X3NvY2tldF9iaW5kJzoKLVRPUERJUi90bXAtZ2xpYmMvd29yay9xZW11eDg2LW9lLWxpbnV4L2lzY3NpdGFyZ2V0LzEuNC4yMC4zK3N2bjUwMi1yMC9pc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Nvbm4uYzoxNDM6Mzg6IGVycm9yOiBhc3NpZ25tZW50IGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10KLSAgdGFyZ2V0LT5udGhyZWFkX2luZm8ub2xkX2RhdGFfcmVhZHkgPSBjb25uLT5zb2NrLT5zay0+c2tfZGF0YV9yZWFkeTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotVE9QRElSL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvaXNjc2l0YXJnZXQvMS40LjIwLjMrc3ZuNTAyLXIwL2lzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvY29ubi5jOjE0NDozMjogZXJyb3I6IGFzc2lnbm1lbnQgZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzXQotICBjb25uLT5zb2NrLT5zay0+c2tfZGF0YV9yZWFkeSA9IGlldF9kYXRhX3JlYWR5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi0tLSBzbmlwIC0tCi0KLTYuCi0gICBBLiBUaGUgInNpemUiIGFyZ3VtZW50IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSBzb2NrX3JlY3Ztc2cgc3lzY2FsbCBpbiB2NC44LAotICAgICAgYXMgYWxsIGNhbGxlcnMgaGF2ZSBpdCBlcXVhbCB0byBtc2dfZGF0YV9sZWZ0KG1zZykuCi0gICBCLiAnc3RydWN0IHVzZXJfbXNnaGRyJyBpcyBiZWluZyB1c2VkIGZvciB1c2VybGFuZC1zaWRlIG1zZ2hkciBpbnN0ZWFkCi0gICAgICBvZiAnc3RydWN0IG1zZ2hkcicsIHdoaWNoIGlzIHVzZWQgZm9yIGtlcm5lbC1zaWRlIG1zZ2hkciBpbiBsaW51eCB2My4xOQotICAgICAgYW5kIGFib3ZlLCBzbyB0eXBlY2FzZSBpdCB3aGlsZSBjYWxsaW5nIHNvY2tfcmVjdm1zZyBzeXNjYWxsLgotICAgUmVmOiBodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvY29tbWl0LzJkYTYyOTA2YjFlMjk4Njk1ZTFiYjcyNTkyNzA0MWNkNTk5NDJjOTgKLSAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2NvbW1pdC82NjY1NDdmZjU5MWNlYmRlZGM0Njc5YmY2YjFiM2YzMzgzYThkZWEzCi0gICBTb2x2ZXM6Ci0gICAtLSBzbmlwIC0tCi1UT1BESVIvdG1wLWdsaWJjL3dvcmstc2hhcmVkL3FlbXV4ODYva2VybmVsLXNvdXJjZS9pbmNsdWRlL2xpbnV4L25ldC5oOjIyMjo1OiBub3RlOiBleHBlY3RlZCAnc3RydWN0IG1zZ2hkciAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSAnc3RydWN0IHVzZXJfbXNnaGRyIConCi0gaW50IHNvY2tfcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIGludCBmbGFncyk7Ci0gICAgIF5+fn5+fn5+fn5+fgotVE9QRElSL3RtcC1nbGliYy93b3JrL3FlbXV4ODYtb2UtbGludXgvaXNjc2l0YXJnZXQvMS40LjIwLjMrc3ZuNTAyLXIwL2lzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvbnRocmVhZC5jOjEyOTo4OiBlcnJvcjogdG9vIG1hbnkgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICdzb2NrX3JlY3Ztc2cnCi0gIHJlcyA9IHNvY2tfcmVjdm1zZyhjb25uLT5zb2NrLCAmbXNnLCBsZW4sIE1TR19ET05UV0FJVCB8IE1TR19OT1NJR05BTCk7Ci0gICAgICAgIF5+fn5+fn5+fn5+fgotICAgLS0gc25pcCAtLQotCi1EZXRhaWxlZCBlcnJvciBsb2cgaXMgYXQ6IGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy84MzMzNC8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLQotZGlmZiAtTmF1cnAgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvYmxvY2staW8uYyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Jsb2NrLWlvLmMKLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9ibG9jay1pby5jCTIwMTctMDEtMTkgMjA6MTk6MjcuNDAwNTA3MzU0IC0wODAwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9ibG9jay1pby5jCTIwMTctMDEtMTkgMjA6MzI6MjIuOTc3OTg4NTkzIC0wODAwCi1AQCAtMTA0LDcgKzEwNCwxMSBAQCBibG9ja2lvX21ha2VfcmVxdWVzdChzdHJ1Y3QgaWV0X3ZvbHVtZSAqCi0gCQkvKiBiaV9zZWN0b3IgaXMgQUxXQVlTIGluIHVuaXRzIG9mIDUxMiBieXRlcyAqLwotIAkJYmlvLT5iaV9pdGVyLmJpX3NlY3RvciA9IHBwb3MgPj4gOTsKLSAJCWJpby0+YmlfYmRldiA9IGJpb19kYXRhLT5iZGV2OwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJCWJpby0+YmlfZW5kX2lvID0gKGJpb19lbmRfaW9fdCAqKSBibG9ja2lvX2Jpb19lbmRpbzsKLSsjZWxzZQotIAkJYmlvLT5iaV9lbmRfaW8gPSBibG9ja2lvX2Jpb19lbmRpbzsKLSsjZW5kaWYKLSAJCWJpby0+YmlfcHJpdmF0ZSA9IHRpb193b3JrOwotIAotIAkJaWYgKHRpb19iaW8pCi1AQCAtMTM5LDcgKzE0MywxMiBAQCBibG9ja2lvX21ha2VfcmVxdWVzdChzdHJ1Y3QgaWV0X3ZvbHVtZSAqCi0gCQl0aW9fYmlvID0gdGlvX2Jpby0+YmlfbmV4dDsKLSAJCWJpby0+YmlfbmV4dCA9IE5VTEw7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwkJYmlvX3NldF9vcF9hdHRycyhiaW8sIFJFUV9PUF9XUklURSwgMCk7Ci0rCQlzdWJtaXRfYmlvKGJpbyk7Ci0rI2Vsc2UKLSAJCXN1Ym1pdF9iaW8ocncsIGJpbyk7Ci0rI2VuZGlmCi0gCX0KLSAKLSAJYmxrX2ZpbmlzaF9wbHVnKCZwbHVnKTsKLWRpZmYgLU5hdXJwIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2Nvbm4uYyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Nvbm4uYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2Nvbm4uYwkyMDE3LTAxLTE5IDIwOjE5OjI3LjQwMDUwNzM1NCAtMDgwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvY29ubi5jCTIwMTctMDEtMTkgMjA6MzI6MjIuOTc4OTg4NjE0IC0wODAwCi1AQCAtMTQ4LDggKzE0OCwxNCBAQCBzdGF0aWMgdm9pZCBpZXRfc29ja2V0X2JpbmQoc3RydWN0IGlzY3NpCi0gCXRhcmdldC0+bnRocmVhZF9pbmZvLm9sZF9zdGF0ZV9jaGFuZ2UgPSBjb25uLT5zb2NrLT5zay0+c2tfc3RhdGVfY2hhbmdlOwotIAljb25uLT5zb2NrLT5zay0+c2tfc3RhdGVfY2hhbmdlID0gaWV0X3N0YXRlX2NoYW5nZTsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCXRhcmdldC0+bnRocmVhZF9pbmZvLm9sZF9kYXRhX3JlYWR5ID0gKHZvaWQgKCopIChzdHJ1Y3Qgc29jayAqKSkgXAotKwkJCQkJCWNvbm4tPnNvY2stPnNrLT5za19kYXRhX3JlYWR5OwotKwljb25uLT5zb2NrLT5zay0+c2tfZGF0YV9yZWFkeSA9ICh2b2lkICgqKSAoc3RydWN0IHNvY2sgKikpIGlldF9kYXRhX3JlYWR5OwotKyNlbHNlCi0gCXRhcmdldC0+bnRocmVhZF9pbmZvLm9sZF9kYXRhX3JlYWR5ID0gY29ubi0+c29jay0+c2stPnNrX2RhdGFfcmVhZHk7Ci0gCWNvbm4tPnNvY2stPnNrLT5za19kYXRhX3JlYWR5ID0gaWV0X2RhdGFfcmVhZHk7Ci0rI2VuZGlmCi0gCi0gCXRhcmdldC0+bnRocmVhZF9pbmZvLm9sZF93cml0ZV9zcGFjZSA9IGNvbm4tPnNvY2stPnNrLT5za193cml0ZV9zcGFjZTsKLSAJY29ubi0+c29jay0+c2stPnNrX3dyaXRlX3NwYWNlID0gaWV0X3dyaXRlX3NwYWNlOwotZGlmZiAtTmF1cnAgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvZGlnZXN0LmMgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9kaWdlc3QuYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2RpZ2VzdC5jCTIwMTQtMDUtMDYgMTM6NTk6NTUuMDAwMDAwMDAwIC0wNzAwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9kaWdlc3QuYwkyMDE3LTAxLTE5IDIwOjMyOjIyLjk3ODk4ODYxNCAtMDgwMAotQEAgLTMwLDYgKzMwLDkgQEAgdm9pZCBkaWdlc3RfYWxnX2F2YWlsYWJsZSh1bnNpZ25lZCBpbnQgKgotIGludCBkaWdlc3RfaW5pdChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKLSB7Ci0gCWludCBlcnIgPSAwOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJc3RydWN0IGNyeXB0b19haGFzaCAqdGZtOwotKyNlbmRpZgotIAotIAlpZiAoIShjb25uLT5oZGlnZXN0X3R5cGUgJiBESUdFU1RfQUxMKSkKLSAJCWNvbm4tPmhkaWdlc3RfdHlwZSA9IERJR0VTVF9OT05FOwotQEAgLTM5LDE1ICs0Miw0MCBAQCBpbnQgZGlnZXN0X2luaXQoc3RydWN0IGlzY3NpX2Nvbm4gKmNvbm4pCi0gCi0gCWlmIChjb25uLT5oZGlnZXN0X3R5cGUgJiBESUdFU1RfQ1JDMzJDIHx8Ci0gCSAgICBjb25uLT5kZGlnZXN0X3R5cGUgJiBESUdFU1RfQ1JDMzJDKSB7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwkJdGZtID0gY3J5cHRvX2FsbG9jX2FoYXNoKCJjcmMzMmMiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKLSsJCWlmIChJU19FUlIodGZtKSkgewotKwkJCXRmbSA9IE5VTEw7Ci0rI2Vsc2UKLSAJCWNvbm4tPnJ4X2hhc2gudGZtID0gY3J5cHRvX2FsbG9jX2hhc2goImNyYzMyYyIsIDAsCi0gCQkJCQkJICAgICAgQ1JZUFRPX0FMR19BU1lOQyk7Ci0gCQljb25uLT5yeF9oYXNoLmZsYWdzID0gMDsKLSAJCWlmIChJU19FUlIoY29ubi0+cnhfaGFzaC50Zm0pKSB7Ci0gCQkJY29ubi0+cnhfaGFzaC50Zm0gPSBOVUxMOwotKyNlbmRpZgotIAkJCWVyciA9IC1FTk9NRU07Ci0gCQkJZ290byBvdXQ7Ci0gCQl9Ci0tCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwkJY29ubi0+cnhfaGFzaCA9IGFoYXNoX3JlcXVlc3RfYWxsb2ModGZtLCBHRlBfS0VSTkVMKTsKLSsJCWlmICghY29ubi0+cnhfaGFzaCkgewotKwkJCXByX2VycigiYWhhc2hfcmVxdWVzdF9hbGxvYygpIGZhaWxlZCBmb3IgY29ubi0+cnhfaGFzaFxuIik7Ci0rCQkJY3J5cHRvX2ZyZWVfYWhhc2godGZtKTsKLSsJCQllcnIgPSAtRU5PTUVNOwotKwkJCWdvdG8gb3V0OwotKwkJfQotKwkJYWhhc2hfcmVxdWVzdF9zZXRfY2FsbGJhY2soY29ubi0+cnhfaGFzaCwgMCwgTlVMTCwgTlVMTCk7Ci0rCQljb25uLT50eF9oYXNoID0gYWhhc2hfcmVxdWVzdF9hbGxvYyh0Zm0sIEdGUF9LRVJORUwpOwotKwkJaWYoIWNvbm4tPnR4X2hhc2gpIHsKLSsJCQlwcl9lcnIoImFoYXNoX3JlcXVlc3RfYWxsb2MoKSBmYWlsZWQgZm9yIGNvbm4tPnR4X2hhc2hcbiIpOwotKwkJCWFoYXNoX3JlcXVlc3RfZnJlZShjb25uLT5yeF9oYXNoKTsKLSsJCQljb25uLT5yeF9oYXNoID0gTlVMTDsKLSsJCQljcnlwdG9fZnJlZV9haGFzaCh0Zm0pOwotKwkJCWVyciA9IC1FTk9NRU07Ci0rCQkJZ290byBvdXQ7Ci0rCQl9Ci0rCQlhaGFzaF9yZXF1ZXN0X3NldF9jYWxsYmFjayhjb25uLT50eF9oYXNoLCAwLCBOVUxMLCBOVUxMKTsKLSsjZWxzZQotIAkJY29ubi0+dHhfaGFzaC50Zm0gPSBjcnlwdG9fYWxsb2NfaGFzaCgiY3JjMzJjIiwgMCwKLSAJCQkJCQkgICAgICBDUllQVE9fQUxHX0FTWU5DKTsKLSAJCWNvbm4tPnR4X2hhc2guZmxhZ3MgPSAwOwotQEAgLTU2LDYgKzg0LDcgQEAgaW50IGRpZ2VzdF9pbml0KHN0cnVjdCBpc2NzaV9jb25uICpjb25uKQotIAkJCWVyciA9IC1FTk9NRU07Ci0gCQkJZ290byBvdXQ7Ci0gCQl9Ci0rI2VuZGlmCi0gCX0KLSAKLSBvdXQ6Ci1AQCAtNzMsMTAgKzEwMiwyMSBAQCBvdXQ6Ci0gICovCi0gdm9pZCBkaWdlc3RfY2xlYW51cChzdHJ1Y3QgaXNjc2lfY29ubiAqY29ubikKLSB7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwlhaGFzaF9yZXF1ZXN0X2ZyZWUoY29ubi0+dHhfaGFzaCk7Ci0rCWlmIChjb25uLT5yeF9oYXNoKSB7Ci0rCQlzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm07Ci0rCQl0Zm0gPSBjcnlwdG9fYWhhc2hfcmVxdGZtKGNvbm4tPnJ4X2hhc2gpOwotKwkJYWhhc2hfcmVxdWVzdF9mcmVlKGNvbm4tPnJ4X2hhc2gpOwotKwkJY3J5cHRvX2ZyZWVfYWhhc2godGZtKTsKLSsJfQotKwotKyNlbHNlCi0gCWlmIChjb25uLT50eF9oYXNoLnRmbSkKLSAJCWNyeXB0b19mcmVlX2hhc2goY29ubi0+dHhfaGFzaC50Zm0pOwotIAlpZiAoY29ubi0+cnhfaGFzaC50Zm0pCi0gCQljcnlwdG9fZnJlZV9oYXNoKGNvbm4tPnJ4X2hhc2gudGZtKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLyoqCi1AQCAtMTYwLDggKzIwMCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19kYmdfc2ltdWxhdGVfZGF0YV9kCi0gCX0KLSB9Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotK3N0YXRpYyB2b2lkIGRpZ2VzdF9oZWFkZXIoc3RydWN0IGFoYXNoX3JlcXVlc3QgKmhhc2gsIHN0cnVjdCBpc2NzaV9wZHUgKnBkdSwKLSsJCQkgIHU4ICpjcmMpCi0rI2Vsc2UKLSBzdGF0aWMgdm9pZCBkaWdlc3RfaGVhZGVyKHN0cnVjdCBoYXNoX2Rlc2MgKmhhc2gsIHN0cnVjdCBpc2NzaV9wZHUgKnBkdSwKLSAJCQkgIHU4ICpjcmMpCi0rI2VuZGlmCi0gewotIAlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2dbMl07Ci0gCXVuc2lnbmVkIGludCBuYnl0ZXMgPSBzaXplb2Yoc3RydWN0IGlzY3NpX2hkcik7Ci1AQCAtMTc0LDE2ICsyMTksMjcgQEAgc3RhdGljIHZvaWQgZGlnZXN0X2hlYWRlcihzdHJ1Y3QgaGFzaF9kZQotIAkJbmJ5dGVzICs9IHBkdS0+YWhzc2l6ZTsKLSAJfQotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJY3J5cHRvX2FoYXNoX2luaXQoaGFzaCk7Ci0rCWFoYXNoX3JlcXVlc3Rfc2V0X2NyeXB0KGhhc2gsIHNnLCBjcmMsIG5ieXRlcyk7Ci0rCWNyeXB0b19haGFzaF91cGRhdGUoaGFzaCk7Ci0rCWNyeXB0b19haGFzaF9kaWdlc3QoaGFzaCk7Ci0rI2Vsc2UKLSAJY3J5cHRvX2hhc2hfaW5pdChoYXNoKTsKLSAJY3J5cHRvX2hhc2hfdXBkYXRlKGhhc2gsIHNnLCBuYnl0ZXMpOwotIAljcnlwdG9faGFzaF9maW5hbChoYXNoLCBjcmMpOwotKyNlbmRpZgotIH0KLSAKLSBpbnQgZGlnZXN0X3J4X2hlYWRlcihzdHJ1Y3QgaXNjc2lfY21uZCAqY21uZCkKLSB7Ci0gCXUzMiBjcmM7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwlkaWdlc3RfaGVhZGVyKGNtbmQtPmNvbm4tPnJ4X2hhc2gsICZjbW5kLT5wZHUsICh1OCAqKSAmY3JjKTsKLSsjZWxzZQotIAlkaWdlc3RfaGVhZGVyKCZjbW5kLT5jb25uLT5yeF9oYXNoLCAmY21uZC0+cGR1LCAodTggKikgJmNyYyk7Ci0rI2VuZGlmCi0gCWlmIChjcmMgIT0gY21uZC0+aGRpZ2VzdCkKLSAJCXJldHVybiAtRUlPOwotIAotQEAgLTE5MiwxMSArMjQ4LDIwIEBAIGludCBkaWdlc3RfcnhfaGVhZGVyKHN0cnVjdCBpc2NzaV9jbW5kICoKLSAKLSB2b2lkIGRpZ2VzdF90eF9oZWFkZXIoc3RydWN0IGlzY3NpX2NtbmQgKmNtbmQpCi0gewotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJZGlnZXN0X2hlYWRlcihjbW5kLT5jb25uLT50eF9oYXNoLCAmY21uZC0+cGR1LCAodTggKikgJmNtbmQtPmhkaWdlc3QpOwotKyNlbHNlCi0gCWRpZ2VzdF9oZWFkZXIoJmNtbmQtPmNvbm4tPnR4X2hhc2gsICZjbW5kLT5wZHUsICh1OCAqKSAmY21uZC0+aGRpZ2VzdCk7Ci0rI2VuZGlmCi0gfQotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLStzdGF0aWMgdm9pZCBkaWdlc3RfZGF0YShzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqaGFzaCwgc3RydWN0IGlzY3NpX2NtbmQgKmNtbmQsCi0rCQkJc3RydWN0IHRpbyAqdGlvLCB1MzIgb2Zmc2V0LCB1OCAqY3JjKQotKyNlbHNlCi0gc3RhdGljIHZvaWQgZGlnZXN0X2RhdGEoc3RydWN0IGhhc2hfZGVzYyAqaGFzaCwgc3RydWN0IGlzY3NpX2NtbmQgKmNtbmQsCi0gCQkJc3RydWN0IHRpbyAqdGlvLCB1MzIgb2Zmc2V0LCB1OCAqY3JjKQotKyNlbmRpZgotIHsKLSAJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZyA9IGNtbmQtPmNvbm4tPmhhc2hfc2c7Ci0gCXUzMiBzaXplLCBsZW5ndGgsIG5wYWdlczsKLUBAIC0yMTQsNyArMjc5LDExIEBAIHN0YXRpYyB2b2lkIGRpZ2VzdF9kYXRhKHN0cnVjdCBoYXNoX2Rlc2MKLSAJQlVHX09OKG5wYWdlcyA+IElTQ1NJX0NPTk5fSU9WX01BWCk7Ci0gCi0gCXNnX2luaXRfdGFibGUoc2csIEFSUkFZX1NJWkUoY21uZC0+Y29ubi0+aGFzaF9zZykpOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJY3J5cHRvX2FoYXNoX2luaXQoaGFzaCk7Ci0rI2Vsc2UKLSAJY3J5cHRvX2hhc2hfaW5pdChoYXNoKTsKLSsjZW5kaWYKLSAKLSAJZm9yIChpID0gMDsgc2l6ZSA+IDA7IGkrKykgewotIAkJbGVuZ3RoID0gbWluX3QodTMyLCBQQUdFX0NBQ0hFX1NJWkUgLSBvZmZzZXQsIHNpemUpOwotQEAgLTIyNSw4ICsyOTQsMTQgQEAgc3RhdGljIHZvaWQgZGlnZXN0X2RhdGEoc3RydWN0IGhhc2hfZGVzYwotIAotIAlzZ19tYXJrX2VuZCgmc2dbaSAtIDFdKTsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCWFoYXNoX3JlcXVlc3Rfc2V0X2NyeXB0KGhhc2gsIHNnLCBjcmMsIG5ieXRlcyk7Ci0rCWNyeXB0b19haGFzaF91cGRhdGUoaGFzaCk7Ci0rCWNyeXB0b19haGFzaF9kaWdlc3QoaGFzaCk7Ci0rI2Vsc2UKLSAJY3J5cHRvX2hhc2hfdXBkYXRlKGhhc2gsIHNnLCBuYnl0ZXMpOwotIAljcnlwdG9faGFzaF9maW5hbChoYXNoLCBjcmMpOwotKyNlbmRpZgotIH0KLSAKLSBpbnQgZGlnZXN0X3J4X2RhdGEoc3RydWN0IGlzY3NpX2NtbmQgKmNtbmQpCi1AQCAtMjUxLDggKzMyNiwxMSBAQCBpbnQgZGlnZXN0X3J4X2RhdGEoc3RydWN0IGlzY3NpX2NtbmQgKmNtCi0gCQl0aW8gPSBjbW5kLT50aW87Ci0gCQlvZmZzZXQgPSAwOwotIAl9Ci0tCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwlkaWdlc3RfZGF0YShjbW5kLT5jb25uLT5yeF9oYXNoLCBjbW5kLCB0aW8sIG9mZnNldCwgKHU4ICopICZjcmMpOwotKyNlbHNlCi0gCWRpZ2VzdF9kYXRhKCZjbW5kLT5jb25uLT5yeF9oYXNoLCBjbW5kLCB0aW8sIG9mZnNldCwgKHU4ICopICZjcmMpOwotKyNlbmRpZgotIAotIAlpZiAoIWNtbmQtPmNvbm4tPnJlYWRfb3ZlcmZsb3cgJiYKLSAJICAgIChjbW5kX29wY29kZShjbW5kKSAhPSBJU0NTSV9PUF9QRFVfUkVKRUNUKSkgewotQEAgLTI2OSw2ICszNDcsMTEgQEAgdm9pZCBkaWdlc3RfdHhfZGF0YShzdHJ1Y3QgaXNjc2lfY21uZCAqYwotIAlzdHJ1Y3QgaXNjc2lfZGF0YV9vdXRfaGRyICpyZXEgPSAoc3RydWN0IGlzY3NpX2RhdGFfb3V0X2hkciAqKSZjbW5kLT5wZHUuYmhzOwotIAotIAlhc3NlcnQodGlvKTsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCWRpZ2VzdF9kYXRhKGNtbmQtPmNvbm4tPnR4X2hhc2gsIGNtbmQsIHRpbywKLSsJCSAgICBiZTMyX3RvX2NwdShyZXEtPmJ1ZmZlcl9vZmZzZXQpLCAodTggKikgJmNtbmQtPmRkaWdlc3QpOwotKyNlbHNlCi0gCWRpZ2VzdF9kYXRhKCZjbW5kLT5jb25uLT50eF9oYXNoLCBjbW5kLCB0aW8sCi0gCQkgICAgYmUzMl90b19jcHUocmVxLT5idWZmZXJfb2Zmc2V0KSwgKHU4ICopICZjbW5kLT5kZGlnZXN0KTsKLSsjZW5kaWYKLSB9Ci1kaWZmIC1OYXVycCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9pc2NzaS5oIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvaXNjc2kuaAotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2lzY3NpLmgJMjAxNy0wMS0xOSAyMDoxOToyNy40MDA1MDczNTQgLTA4MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2lzY3NpLmgJMjAxNy0wMS0xOSAyMDozMjoyMi45Nzk5ODg2MzQgLTA4MDAKLUBAIC0xNCw2ICsxNCw3IEBACi0gI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KLSAjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSsjaW5jbHVkZSA8Y3J5cHRvL2hhc2guaD4KLSAjaW5jbHVkZSA8bGludXgvY3J5cHRvLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3NjYXR0ZXJsaXN0Lmg+Ci0gI2luY2x1ZGUgPG5ldC9zb2NrLmg+Ci1AQCAtMjc1LDggKzI3NiwxMyBAQCBzdHJ1Y3QgaXNjc2lfY29ubiB7Ci0gCXUzMiB3cml0ZV9vZmZzZXQ7Ci0gCWludCB3cml0ZV9zdGF0ZTsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCXN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpyeF9oYXNoOwotKwlzdHJ1Y3QgYWhhc2hfcmVxdWVzdCAqdHhfaGFzaDsKLSsjZWxzZQotIAlzdHJ1Y3QgaGFzaF9kZXNjIHJ4X2hhc2g7Ci0gCXN0cnVjdCBoYXNoX2Rlc2MgdHhfaGFzaDsKLSsjZW5kaWYKLSAJc3RydWN0IHNjYXR0ZXJsaXN0IGhhc2hfc2dbSVNDU0lfQ09OTl9JT1ZfTUFYXTsKLSB9OwotIAotQEAgLTU1Miw0ICs1NTgsMTAgQEAgZW51bSBjbW5kX2ZsYWdzIHsKLSAjZGVmaW5lIFBST0RVQ1RfSUQJIlZJUlRVQUwtRElTSyIKLSAjZGVmaW5lIFBST0RVQ1RfUkVWCSIwIgotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsjZGVmaW5lIFBBR0VfQ0FDSEVfU0hJRlQJUEFHRV9TSElGVAotKyNkZWZpbmUgUEFHRV9DQUNIRV9TSVpFCVBBR0VfU0laRQotKyNkZWZpbmUgUEFHRV9DQUNIRV9NQVNLCVBBR0VfTUFTSwotKyNlbmRpZgotKwotICNlbmRpZgkvKiBfX0lTQ1NJX0hfXyAqLwotZGlmZiAtTmF1cnAgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvbnRocmVhZC5jIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvbnRocmVhZC5jCi0tLS0gaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvbnRocmVhZC5jCTIwMTctMDEtMTkgMjA6MTk6MjcuMjc2NTA0OTI4IC0wODAwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9udGhyZWFkLmMJMjAxNy0wMS0xOSAyMDozMjoyMi45Nzk5ODg2MzQgLTA4MDAKLUBAIC0xNTUsNyArMTU1LDEyIEBAIHN0YXRpYyBpbnQgZG9fcmVjdihzdHJ1Y3QgaXNjc2lfY29ubiAqY28KLSAKLSAJb2xkZnMgPSBnZXRfZnMoKTsKLSAJc2V0X2ZzKGdldF9kcygpKTsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCXJlcyA9IHNvY2tfcmVjdm1zZyhjb25uLT5zb2NrLCAoc3RydWN0IG1zZ2hkciAqKSAmbXNnLCBcCi0rCQkJCU1TR19ET05UV0FJVCB8IE1TR19OT1NJR05BTCk7Ci0rI2Vsc2UKLSAJcmVzID0gc29ja19yZWN2bXNnKGNvbm4tPnNvY2ssICZtc2csIGxlbiwgTVNHX0RPTlRXQUlUIHwgTVNHX05PU0lHTkFMKTsKLSsjZW5kaWYKLSAJc2V0X2ZzKG9sZGZzKTsKLSAKLSAJaWYgKHJlcyA8PSAwKSB7Ci1AQCAtMzc2LDcgKzM4MSwxMSBAQCBzdGF0aWMgaW50IHdyaXRlX2RhdGEoc3RydWN0IGlzY3NpX2Nvbm4KLSAJCQk7Ci0gCQlvbGRmcyA9IGdldF9mcygpOwotIAkJc2V0X2ZzKEtFUk5FTF9EUyk7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwkJcmVzID0gdmZzX3dyaXRldihmaWxlLCAoc3RydWN0IGlvdmVjIF9fdXNlciAqKSBpb3AsIGNvdW50LCAmb2ZmLCAwKTsKLSsjZWxzZQotIAkJcmVzID0gdmZzX3dyaXRldihmaWxlLCAoc3RydWN0IGlvdmVjIF9fdXNlciAqKSBpb3AsIGNvdW50LCAmb2ZmKTsKLSsjZW5kaWYKLSAJCXNldF9mcyhvbGRmcyk7Ci0gCQlkcHJpbnRrKERfREFUQSwgIiUjTHg6JXU6ICVkKCVsZClcbiIsCi0gCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgY29ubi0+c2Vzc2lvbi0+c2lkLCBjb25uLT5jaWQsCi1AQCAtNTAzLDcgKzUxMiwxMSBAQCBzdGF0aWMgaW50IHR4X2RkaWdlc3Qoc3RydWN0IGlzY3NpX2NtbmQKLSAJaW92Lmlvdl9iYXNlID0gKGNoYXIgKikgKCZjbW5kLT5kZGlnZXN0KSArIChzaXplb2YodTMyKSAtIHJlc3QpOwotIAlpb3YuaW92X2xlbiA9IHJlc3Q7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwlyZXMgPSBrZXJuZWxfc2VuZG1zZyhjbW5kLT5jb25uLT5zb2NrLCAoc3RydWN0IG1zZ2hkciAqKSAmbXNnLCAmaW92LCAxLCByZXN0KTsKLSsjZWxzZQotIAlyZXMgPSBrZXJuZWxfc2VuZG1zZyhjbW5kLT5jb25uLT5zb2NrLCAmbXNnLCAmaW92LCAxLCByZXN0KTsKLSsjZW5kaWYKLSAKLSAJaWYgKHJlcyA+IDApIHsKLSAJCWNtbmQtPmNvbm4tPndyaXRlX3NpemUgLT0gcmVzOwotQEAgLTcwMiw3ICs3MTUsMTIgQEAgc3RhdGljIHZvaWQgY2xvc2VfY29ubihzdHJ1Y3QgaXNjc2lfY29ubgotIAotIAl3cml0ZV9sb2NrX2JoKCZjb25uLT5zb2NrLT5zay0+c2tfY2FsbGJhY2tfbG9jayk7Ci0gCWNvbm4tPnNvY2stPnNrLT5za19zdGF0ZV9jaGFuZ2UgPSB0YXJnZXQtPm50aHJlYWRfaW5mby5vbGRfc3RhdGVfY2hhbmdlOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJY29ubi0+c29jay0+c2stPnNrX2RhdGFfcmVhZHkgPSAodm9pZCAoKikgKHN0cnVjdCBzb2NrICopKSBcCi0rCQkJCQl0YXJnZXQtPm50aHJlYWRfaW5mby5vbGRfZGF0YV9yZWFkeTsKLSsjZWxzZQotIAljb25uLT5zb2NrLT5zay0+c2tfZGF0YV9yZWFkeSA9IHRhcmdldC0+bnRocmVhZF9pbmZvLm9sZF9kYXRhX3JlYWR5OwotKyNlbmRpZgotIAljb25uLT5zb2NrLT5zay0+c2tfd3JpdGVfc3BhY2UgPSB0YXJnZXQtPm50aHJlYWRfaW5mby5vbGRfd3JpdGVfc3BhY2U7Ci0gCXdyaXRlX3VubG9ja19iaCgmY29ubi0+c29jay0+c2stPnNrX2NhbGxiYWNrX2xvY2spOwotIAotZGlmZiAtTmF1cnAgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvdm9sdW1lLmMgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC92b2x1bWUuYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL3ZvbHVtZS5jCTIwMTctMDEtMTkgMjA6MTk6MjcuMjc2NTA0OTI4IC0wODAwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC92b2x1bWUuYwkyMDE3LTAxLTE5IDIwOjMyOjIyLjk3OTk4ODYzNCAtMDgwMAotQEAgLTg0LDEyICs4NCwyNSBAQCBzdGF0aWMgaW50IHNldF9zY3Npc24oc3RydWN0IGlldF92b2x1bWUKLSAvKiBHZW5lcmF0ZSBhIE1ENSBoYXNoIG9mIHRoZSB0YXJnZXQgSVFOIGFuZCBMVU4gbnVtYmVyICovCi0gc3RhdGljIHZvaWQgZ2VuX3Njc2lpZChzdHJ1Y3QgaWV0X3ZvbHVtZSAqdm9sdW1lKQotIHsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDgsIDApCi0rCXN0cnVjdCBhaGFzaF9yZXF1ZXN0ICpoYXNoOwotKwlzdHJ1Y3QgY3J5cHRvX2FoYXNoICp0Zm07Ci0rI2Vsc2UKLSAJc3RydWN0IGhhc2hfZGVzYyBoYXNoOwotKyNlbmRpZgotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJdGZtID0gY3J5cHRvX2FsbG9jX2FoYXNoKCJtZDUiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKLSsjZWxzZQotIAloYXNoLnRmbSA9IGNyeXB0b19hbGxvY19oYXNoKCJtZDUiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKLSAJaGFzaC5mbGFncyA9IDA7Ci0rI2VuZGlmCi0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotKwlpZiAoIUlTX0VSUih0Zm0pKSB7Ci0rI2Vsc2UKLSAJaWYgKCFJU19FUlIoaGFzaC50Zm0pKSB7Ci0rI2VuZGlmCi0gCQlzdHJ1Y3Qgc2NhdHRlcmxpc3Qgc2dbMl07Ci0gCQl1bnNpZ25lZCBpbnQgbmJ5dGVzID0gMDsKLSAKLUBAIC0xMDIsMTEgKzExNSwxOSBAQCBzdGF0aWMgdm9pZCBnZW5fc2NzaWlkKHN0cnVjdCBpZXRfdm9sdW1lCi0gCQlzZ19zZXRfYnVmKCZzZ1sxXSwgJnZvbHVtZS0+bHVuLCBzaXplb2Yodm9sdW1lLT5sdW4pKTsKLSAJCW5ieXRlcyArPSBzaXplb2Yodm9sdW1lLT5sdW4pOwotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSsJCWNyeXB0b19haGFzaF9pbml0KGhhc2gpOwotKwkJYWhhc2hfcmVxdWVzdF9zZXRfY3J5cHQoaGFzaCwgc2csIHZvbHVtZS0+c2NzaV9pZCwgbmJ5dGVzKTsKLSsJCWNyeXB0b19haGFzaF91cGRhdGUoaGFzaCk7Ci0rCQljcnlwdG9fYWhhc2hfZGlnZXN0KGhhc2gpOwotKwkJY3J5cHRvX2ZyZWVfYWhhc2godGZtKTsKLSsjZWxzZQotIAkJY3J5cHRvX2hhc2hfaW5pdCgmaGFzaCk7Ci0gCQljcnlwdG9faGFzaF91cGRhdGUoJmhhc2gsIHNnLCBuYnl0ZXMpOwotIAkJY3J5cHRvX2hhc2hfZmluYWwoJmhhc2gsIHZvbHVtZS0+c2NzaV9pZCk7Ci0gCi0gCQljcnlwdG9fZnJlZV9oYXNoKGhhc2gudGZtKTsKLSsjZW5kaWYKLSAJfSBlbHNlIHsKLSAJCS8qIElmIG5vIE1ENSBhdmFpbGFibGUgc2V0IElEIHRvIFRJRCBhbmQgTFVOICovCi0gCQltZW1jcHkodm9sdW1lLT5zY3NpX2lkLCAmdm9sdW1lLT50YXJnZXQtPnRpZCwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzL2ZpeC1jYWxsLXRyYWNlLW9mLWFoYXNoLUFQSS1jYWxsaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvZml4LWNhbGwtdHJhY2Utb2YtYWhhc2gtQVBJLWNhbGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTY4MzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvZml4LWNhbGwtdHJhY2Utb2YtYWhhc2gtQVBJLWNhbGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1UaGUgcHJldmlvdXMgYnVpbGRfd2l0aF91cGRhdGVkX2ludGVyZmFjZXNfb2ZfbGludXhfdjQuOF9hbmRfYWJvdmUucGF0Y2gKLWRvZXMgbm90IGFsbG9jIHN0cnVjdCBhaGFzaF9yZXF1ZXN0IGJlZm9yZSB1c2luZyBpdC4gVGhpcyB3aWxsIGNhdXNlIHRoZQota2VybmVsIGNhbGwgdHJhY2UgYmVsb3cgd2hlbiBjYWxsaW5nIGdlbl9zY3NpaWQgb24ga2VybmVsIDQuOCBvciBsYXRlcgotdmVyc2lvbi4KLQotVGhpcyBwYXRjaCBub3JtYWxpemVzIHRoZSBjYWxsaW5nIG9mIGFoYXNoIEFQSSBhY2NvcmRpbmcgdG8gdGhlIGV4YW1wbGUKLWluIGtlcm5lbCBkb2MgRG9jdW1lbnRhdGlvbi9jcnlwdG8vYXBpLWludHJvLnR4dC4KLQotQlVHOiB1bmFibGUgdG8gaGFuZGxlIGtlcm5lbCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgYXQgMDAwMDAwMDAwMDAwMDAyMAotSVA6IFs8ZmZmZmZmZmZhMDAwOGQ0NT5dIHZvbHVtZV9hZGQrMHg2MjUvMHg3ZjAgW2lzY3NpX3RyZ3RdCi1QR0QgZGQ3NzA2NyBQVUQgZGQ3YzA2NyBQTUQgMCAKLU9vcHM6IDAwMDAgWyMxXSBQUkVFTVBUIFNNUAotTW9kdWxlcyBsaW5rZWQgaW46IGlzY3NpX3RyZ3QoTykKLUNQVTogMCBQSUQ6IDM1MCBDb21tOiBpZXRkIFRhaW50ZWQ6IEcgICAgICAgICAgIE8gICAgNC44LjEyLXlvY3RvLXN0YW5kYXJkICMxCi1IYXJkd2FyZSBuYW1lOiBRRU1VIFN0YW5kYXJkIFBDIChpNDQwRlggKyBQSUlYLCAxOTk2KSwgQklPUyByZWwtMS45LjMtMC1nZTJmYzQxZS1wcmVidWlsdC5xZW11LXByb2plY3Qub3JnIDA0LzAxLzIwMTQKLXRhc2s6IGZmZmY4ODAwMGRmZTJjMDAgdGFzay5zdGFjazogZmZmZjg4MDAwZGU4ODAwMAotUklQOiAwMDEwOls8ZmZmZmZmZmZhMDAwOGQ0NT5dICBbPGZmZmZmZmZmYTAwMDhkNDU+XSB2b2x1bWVfYWRkKzB4NjI1LzB4N2YwIFtpc2NzaV90cmd0XQotUlNQOiAwMDE4OmZmZmY4ODAwMGRlOGJkOTAgIEVGTEFHUzogMDAwMDAyMDYKLVJBWDogMDAwMDAwMDAwMDAwZGRmYSBSQlg6IGZmZmY4ODAwMGRkZDFkNzggUkNYOiBmZmZmZWEwMDAwMDAwMDAwCi1SRFg6IDAwMDAwMDAwMDAwMDA2MDAgUlNJOiAwMDAwMDAwMDAwMDAwMDAwIFJESTogZmZmZjg4MDAwZGRkMWMxNAotUkJQOiBmZmZmODgwMDBkZThiZTM4IFIwODogZmZmZjg4MDAwZGU0NDE4MCBSMDk6IGZmZmY4ODAwMGRlOGJkZDAKLVIxMDogMDAwMDAwMDAwMDAwMDAyYyBSMTE6IDAwMDAwMDAwMDAwMDAwMDAgUjEyOiBmZmZmODgwMDBkZGZhNjAwCi1SMTM6IDAwMDAwMDAwMDAwMDAwMDAgUjE0OiAwMDAwMDAwMDAwMDAwMDAwIFIxNTogZmZmZjg4MDAwZGU5MjIwMAotRlM6ICAwMDAwN2Y3Njc1NDhiNzAwKDAwMDApIEdTOmZmZmY4ODAwMGZjMDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMAotQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwotQ1IyOiAwMDAwMDAwMDAwMDAwMDIwIENSMzogMDAwMDAwMDAwZGQyZDAwMCBDUjQ6IDAwMDAwMDAwMDAwMDA2ZjAKLVN0YWNrOgotIGZmZmY4ODAwMGRlOGJkZDAgZmZmZjg4MDAwZGMxYjNkMCBmZmZmODgwMDBkZGZhNjUwIGZmZmY4ODAwMGRkZmE2NjAKLSBmZmZmODgwMDBkZjhmMDAwIGZmZmY4ODAwMGRkZDFjMDAgZmZmZjg4MDAwZGU0NDE4MCAwMDAwMDAwMDAwMDAwMDAwCi0gZmZmZmVhMDAwMDM3NzQ0MCAwMDAwMDAwZjAwMDAwYzE0IDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMAotQ2FsbCBUcmFjZToKLSBbPGZmZmZmZmZmYTAwMDY1NDc+XSBpb2N0bCsweDIxNy8weDM5MCBbaXNjc2lfdHJndF0KLSBbPGZmZmZmZmZmODExOTI1NzQ+XSBkb192ZnNfaW9jdGwrMHg5NC8weDVjMAotIFs8ZmZmZmZmZmY4MTE3ZmY3Mz5dID8gdmZzX3JlYWQrMHhmMy8weDEyMAotIFs8ZmZmZmZmZmY4MTE5MmIxOT5dIFN5U19pb2N0bCsweDc5LzB4OTAKLSBbPGZmZmZmZmZmODE5MWE0NWI+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTMvMHg4ZgotQ29kZTogNGMgMDEgZTAgMGYgODIgYTIgMDEgMDAgMDAgNDggYjkgMDAgMDAgMDAgODAgZmYgNzcgMDAgMDAgNDggMDEKLWM4IDQ1IDMxIGY2IDQ4IGI5IDAwIDAwIDAwIDAwIDAwIGVhIGZmIGZmIDg5IDU0IDI0IDY4IDQ4IGMxIGU4IDBjIDw0OT4KLThiIDU2IDIwIDRjIDg5IDQ0IDI0IDIwIDRjIDg5IGY3IDQ4IGMxIGUwIDA2IGM3IDQ0IDI0IDZjIDA0IAotUklQICBbPGZmZmZmZmZmYTAwMDhkNDU+XSB2b2x1bWVfYWRkKzB4NjI1LzB4N2YwIFtpc2NzaV90cmd0XQotIFJTUCA8ZmZmZjg4MDAwZGU4YmQ5MD4KLUNSMjogMDAwMDAwMDAwMDAwMDAyMAotZW5kIHRyYWNlIGNkMjAxNjI5N2RmMjE2MzUgXQotaWV0ZF9yZXNwb25zZV9yZWN2IDIwMCAwIC01Ci1JbnB1dC9vdXRwdXQgZXJyb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lIHdoaWNoCi1oYXMgbm90IGJlZW4gbWVyZ2VkIHVwc3RyZWFtLl0KLQotU2lnbmVkLW9mZi1ieTogWmhlIEhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLQotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmlnL2tlcm5lbC92b2x1bWUuYwkyMDE3LTAxLTE4IDA4OjU3OjU2Ljc1MjE4NzQwMiArMDgwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvdm9sdW1lLmMJMjAxNy0wMS0xOCAwOTowMjo0NC4xNjQxOTUyMzQgKzA4MDAKLUBAIC05MywxMyArOTMsMTQgQEAgc3RhdGljIHZvaWQgZ2VuX3Njc2lpZChzdHJ1Y3QgaWV0X3ZvbHVtZQotIAotICNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkKLSAJdGZtID0gY3J5cHRvX2FsbG9jX2FoYXNoKCJtZDUiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKLSsJaGFzaCA9IGFoYXNoX3JlcXVlc3RfYWxsb2ModGZtLCBHRlBfQVRPTUlDKTsKLSAjZWxzZQotIAloYXNoLnRmbSA9IGNyeXB0b19hbGxvY19oYXNoKCJtZDUiLCAwLCBDUllQVE9fQUxHX0FTWU5DKTsKLSAJaGFzaC5mbGFncyA9IDA7Ci0gI2VuZGlmCi0gCi0gI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotLQlpZiAoIUlTX0VSUih0Zm0pKSB7Ci0rCWlmICh0Zm0gJiYgIUlTX0VSUih0Zm0pKSB7Ci0gI2Vsc2UKLSAJaWYgKCFJU19FUlIoaGFzaC50Zm0pKSB7Ci0gI2VuZGlmCi1AQCAtMTE2LDEwICsxMTcsMTMgQEAgc3RhdGljIHZvaWQgZ2VuX3Njc2lpZChzdHJ1Y3QgaWV0X3ZvbHVtZQotIAkJbmJ5dGVzICs9IHNpemVvZih2b2x1bWUtPmx1bik7Ci0gCi0gI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LCA4LCAwKQotLQkJY3J5cHRvX2FoYXNoX2luaXQoaGFzaCk7Ci0rCQlhaGFzaF9yZXF1ZXN0X3NldF9jYWxsYmFjayhoYXNoLCAwLCBOVUxMLCBOVUxMKTsKLSAJCWFoYXNoX3JlcXVlc3Rfc2V0X2NyeXB0KGhhc2gsIHNnLCB2b2x1bWUtPnNjc2lfaWQsIG5ieXRlcyk7Ci0tCQljcnlwdG9fYWhhc2hfdXBkYXRlKGhhc2gpOwotIAkJY3J5cHRvX2FoYXNoX2RpZ2VzdChoYXNoKTsKLSsJCWNyeXB0b19haGFzaF9pbml0KGhhc2gpOwotKwkJY3J5cHRvX2FoYXNoX3VwZGF0ZShoYXNoKTsKLSsJCWNyeXB0b19haGFzaF9maW5hbChoYXNoKTsKLSsJCWFoYXNoX3JlcXVlc3RfZnJlZShoYXNoKTsKLSAJCWNyeXB0b19mcmVlX2FoYXNoKHRmbSk7Ci0gI2Vsc2UKLSAJCWNyeXB0b19oYXNoX2luaXQoJmhhc2gpOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvZml4LWVycm9ycy1vYnNlcnZlZC13aXRoLWxpbnV4LTMuMTktYW5kLWdyZWF0ZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy9maXgtZXJyb3JzLW9ic2VydmVkLXdpdGgtbGludXgtMy4xOS1hbmQtZ3JlYXRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2YTFkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9maWxlcy9maXgtZXJyb3JzLW9ic2VydmVkLXdpdGgtbGludXgtMy4xOS1hbmQtZ3JlYXRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyNyArMCwwIEBACi1EZXNjcmlwdGlvbjogRml4IHNvdXJjZSB0byBjb21waWxlIG9uIDMuMTkga2VybmVscwotQXV0aG9yOiBTdGVmYW4gQmFkZXIgPHN0ZWZhbi5iYWRlckBjYW5vbmljYWwuY29tPgotRm9yd2FyZDogbm8KLQotRml4ZXMgYmVsb3cgaW5jb25zaXN0ZW50IGNyYXNoIHdoZW4gdHJ5aW5nIHRvIGxvZ2luIHRvIGlTQ1NJIHRhcmdldAotc2VydmVyLCBvYnNlcnZlZCB3aXRoIGxpbnV4IGtlcm5lbCB2NC4xLgotCi0tLSBzbmlwIC0tCi1DUFU6IDEgUElEOiAyOTg4MyBDb21tOiBpc3RkMSBUYWludGVkOiBHICAgICAgICAgICBPICAgIDQuMS4zNS1ydDQwLXlvY3RvLXN0YW5kYXJkICMxCi1IYXJkd2FyZSBuYW1lOiBUbyBiZSBmaWxsZWQgYnkgTy5FLk0uIFRvIGJlIGZpbGxlZCBieSBPLkUuTS4vTGFybmUgQ1JCLCBCSU9TIDQuNi41LjQgMDkvMTgvMjAxNAotdGFzazogZmZmZjg4MDIwZjFmMzBjMCB0aTogZmZmZjg4MDBkN2YzYzAwMCB0YXNrLnRpOiBmZmZmODgwMGQ3ZjNjMDAwCi1SSVA6IDAwMTA6WzxmZmZmZmZmZjgxNDBkMWFlPl0gIFs8ZmZmZmZmZmY4MTQwZDFhZT5dIGNvcHlfdG9faXRlcisweDNlLzB4MjgwCi1SU1A6IDAwMTg6ZmZmZjg4MDBkN2YzZjcyOCAgRUZMQUdTOiAwMDAxMDI0NgotUkFYOiAwMDAwMDAwMGQ3ZjNmOTI4IFJCWDogMDAwMDAwMDAwMDAwMDAzMCBSQ1g6IDAwMDAwMDAwMDAwMDAwMzAKLVJEWDogZmZmZjg4MDBkN2YzZjkwMCBSU0k6IDAwMDAwMDAwMDAwMDAwMzAgUkRJOiBmZmZmODgwMGQxNTAxZTgyCi1SQlA6IGZmZmY4ODAwZDdmM2Y3NjggUjA4OiAwMDAwMDAwMGMxMjdkNDY3IFIwOTogMDAwMDAwMDAwMDAwMDAwMAotUjEwOiBmZmZmODgwMjBmMjllMTE4IFIxMTogMDAwMDAwMDAwMDAwMDAwNCBSMTI6IGZmZmY4ODAwZDdmM2Y5MDAKLVIxMzogMDAwMDAwMDAwMDAwMDAzMCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDEgUjE1OiAwMDAwMDAwMDAwMDAwMjQ2Ci1GUzogIDAwMDA3Zjg2ZjljNGM3MDAoMDAwMCkgR1M6ZmZmZjg4MDIxZWM4MDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMGY3NzMzNzAwCi1DUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzCi1DUjI6IDAwMDAwMDAwMDAwMDAyNGUgQ1IzOiAwMDAwMDAwMGQzOGIwMDAwIENSNDogMDAwMDAwMDAwMDA0MDZlMAotU3RhY2s6Ci1mZmZmODgwMjE0ZjE0ZWMwIGZmZmY4ODAwZDE1MDFlODIgZmZmZjg4MDBkN2YzZjc0OCAwMDAwMDAwMDAwMDAwMDMwCi1mZmZmODgwMjBmMTIyNTAwIDAwMDAwMDAwMDAwMDAwMzAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDMwCi1mZmZmODgwMGQ3ZjNmN2M4IGZmZmZmZmZmODE4MDY5ODEgZmZmZjg4MDBkN2YzZjc5OCBmZmZmZmZmZjgxMDVkNzJhCi1DYWxsIFRyYWNlOgotWzxmZmZmZmZmZjgxODA2OTgxPl0gc2tiX2NvcHlfZGF0YWdyYW1faXRlcisweDcxLzB4MmIwCi1bPGZmZmZmZmZmODEwNWQ3MmE+XSA/IF9fbG9jYWxfYmhfZW5hYmxlX2lwKzB4NGEvMHhiMAotWzxmZmZmZmZmZjgxODZjOWMwPl0gdGNwX3JlY3Ztc2crMHg1ZTAvMHhiYjAKLVs8ZmZmZmZmZmY4MTg5OGRlZD5dIGluZXRfcmVjdm1zZysweDhkLzB4YjAKLVs8ZmZmZmZmZmY4MTdmNDlmMz5dIHNvY2tfcmVjdm1zZysweDEzLzB4MjAKLVs8ZmZmZmZmZmZhMDE2NTVjMz5dIGRvX3JlY3YrMHhlMy8weDFmMCBbaXNjc2lfdHJndF0KLVs8ZmZmZmZmZmY4MTE1MzA5Nz5dID8gX19tb2Rfem9uZV9wYWdlX3N0YXRlKzB4NzcvMHhiMAotWzxmZmZmZmZmZjgxNDE3NjEzPl0gPyBfX3RoaXNfY3B1X3ByZWVtcHRfY2hlY2srMHgxMy8weDIwCi1bPGZmZmZmZmZmODExNTMwOTc+XSA/IF9fbW9kX3pvbmVfcGFnZV9zdGF0ZSsweDc3LzB4YjAKLVs8ZmZmZmZmZmY4MTQwZmVkNT5dID8gZmluZF9uZXh0X2JpdCsweDE1LzB4MzAKLVs8ZmZmZmZmZmY4MTNmYThlMD5dID8gY3B1bWFza19uZXh0X2FuZCsweDMwLzB4NTAKLVs8ZmZmZmZmZmY4MTEzZjc4NT5dID8gX19hbGxvY19wYWdlc19ub2RlbWFzaysweDE2NS8weDk4MAotWzxmZmZmZmZmZjgxMDdlMzcwPl0gPyBwcmVlbXB0X2NvdW50X2FkZCsweGQwLzB4ZjAKLVs8ZmZmZmZmZmY4MTk1ZGE4Yj5dID8gX3Jhd19zcGluX2xvY2srMHgxYi8weDYwCi1bPGZmZmZmZmZmODEwOWNmYTg+XSA/IGNwdWFjY3RfY2hhcmdlKzB4NTgvMHg3MAotWzxmZmZmZmZmZjgxMDg5MDM5Pl0gPyB1cGRhdGVfY3VycisweGI5LzB4MTkwCi1bPGZmZmZmZmZmODE0MTc2MTM+XSA/IF9fdGhpc19jcHVfcHJlZW1wdF9jaGVjaysweDEzLzB4MjAKLVs8ZmZmZmZmZmY4MTEyYjQzZj5dID8gX19wZXJmX2V2ZW50X3Rhc2tfc2NoZWRfaW4rMHg0Zi8weDkwCi1bPGZmZmZmZmZmODE5NWRiYmQ+XSA/IF9yYXdfc3Bpbl91bmxvY2tfaXJxKzB4MWQvMHg0MAotWzxmZmZmZmZmZjgxMDdlMjIzPl0gPyBmaW5pc2hfdGFza19zd2l0Y2grMHg2My8weGUwCi1bPGZmZmZmZmZmODE5NTllM2I+XSA/IF9fc2NoZWR1bGUrMHgzOGIvMHg5ODAKLVs8ZmZmZmZmZmY4MTA3ZTM3MD5dID8gcHJlZW1wdF9jb3VudF9hZGQrMHhkMC8weGYwCi1bPGZmZmZmZmZmYTAxNjVjNjU+XSBpc3RkKzB4NGQ1LzB4MTM5MCBbaXNjc2lfdHJndF0KLVs8ZmZmZmZmZmY4MTk1OWUzYj5dID8gX19zY2hlZHVsZSsweDM4Yi8weDk4MAotWzxmZmZmZmZmZmEwMTY1NzkwPl0gPyBudGhyZWFkX3dha2V1cCsweDQwLzB4NDAgW2lzY3NpX3RyZ3RdCi1bPGZmZmZmZmZmYTAxNjU3OTA+XSA/IG50aHJlYWRfd2FrZXVwKzB4NDAvMHg0MCBbaXNjc2lfdHJndF0KLVs8ZmZmZmZmZmY4MTA3NzQ4Yj5dIGt0aHJlYWQrMHhiYi8weGUwCi1bPGZmZmZmZmZmODE5NTAwMDA+XSA/IHdpcmVsZXNzX2Rldl9zZXFfc2hvdysweDEwMC8weDE4MAotWzxmZmZmZmZmZjgxMDc3M2QwPl0gPyBrdGhyZWFkX3dvcmtlcl9mbisweDE3MC8weDE3MAotWzxmZmZmZmZmZjgxOTVlN2EyPl0gcmV0X2Zyb21fZm9yaysweDQyLzB4NzAKLVs8ZmZmZmZmZmY4MTA3NzNkMD5dID8ga3RocmVhZF93b3JrZXJfZm4rMHgxNzAvMHgxNzAKLUNvZGU6IDVhIDEwIDQ4IDg5IDdkIGM4IDQ4IDM5IGYzIDQ4IDBmIDQ3IGRlIDQ4IDg1IGRiIDBmIDg0IDZmIDAxIDAwIDAwIDhiIDAyIDQ5IDg5Ci1kNCA0YyA4YiA3MiAwOCA0YyA4YiA3YSAxOCBhOCAwNCAwZiA4NSBhMiAwMCAwMCAwMCA8NGQ+IDhiIDZmIDA4IDRkIDI5IGY1IDQ5IDM5IGRkIDRjIDBmIDQ3IGViIGE4IDAyIDBmIDg1IDVjIDAxIDAwIAotUlNQIDxmZmZmODgwMGQ3ZjNmNzI4PgotQ1IyOiAwMDAwMDAwMDAwMDAwMjRlCi0tLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KLS0tIHNuaXAgLS0KLQotVGhlIG9yaWdpbmFsIHBhdGNoIGlzIGF0Ci1odHRwOi8vbGF1bmNocGFkbGlicmFyaWFuLm5ldC8yMTgxMDA1MDkvaXNjc2l0YXJnZXRfMS40LjIwLjMrc3ZuNDk5LTB1YnVudHUyXzEuNC4yMC4zK3N2bjQ5OS0wdWJ1bnR1Mi4xLmRpZmYuZ3osCi10aG9zZSBjaGFuZ2VzIHdlcmUgdGFrZW4gdXNpbmcgI2lmcywgaW5vcmRlciB0byBhbGxvdyBjb21waWxhdGlvbiBvZiAKLWlzY3NpdGFyZ2V0IHBhY2thZ2Ugd2l0aCBsaW51eCBrZXJuZWxzIDwgMy4xOS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9sYXVuY2hwYWRsaWJyYXJpYW4ubmV0LzIxODEwMDUwOS9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm40OTktMHVidW50dTJfMS40LjIwLjMrc3ZuNDk5LTB1YnVudHUyLjEuZGlmZi5nel0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotCi1kaWZmIC1OYXVycCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9jb25uLmMgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9jb25uLmMKLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9jb25uLmMJMjAxNy0wMS0xOCAyMjoyNzowMi43MTMxNjc0MzYgLTA4MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2Nvbm4uYwkyMDE3LTAxLTE4IDIzOjEzOjExLjkwOTIxNDM3OSAtMDgwMAotQEAgLTEyOSw3ICsxMjksMTEgQEAgc3RhdGljIHZvaWQgaWV0X3NvY2tldF9iaW5kKHN0cnVjdCBpc2NzaQotIAotIAlkcHJpbnRrKERfR0VORVJJQywgIiVsbHVcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpIHNlc3Npb24tPnNpZCk7Ci0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJY29ubi0+c29jayA9IFNPQ0tFVF9JKGZpbGVfaW5vZGUoY29ubi0+ZmlsZSkpOwotKyNlbHNlCi0gCWNvbm4tPnNvY2sgPSBTT0NLRVRfSShjb25uLT5maWxlLT5mX2RlbnRyeS0+ZF9pbm9kZSk7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAJY29ubi0+c29jay0+c2stPnNrX3VzZXJfZGF0YSA9IGNvbm47Ci0gCi0gCXdyaXRlX2xvY2tfYmgoJmNvbm4tPnNvY2stPnNrLT5za19jYWxsYmFja19sb2NrKTsKLWRpZmYgLU5hdXJwIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2ZpbGUtaW8uYyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2ZpbGUtaW8uYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2ZpbGUtaW8uYwkyMDE0LTA1LTA2IDEzOjU5OjU1LjAwMDAwMDAwMCAtMDcwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvZmlsZS1pby5jCTIwMTctMDEtMTggMjM6NTQ6MzguNTA1NzE3MDc5IC0wODAwCi1AQCAtNjksNyArNjksMTEgQEAgc3RhdGljIGludCBmaWxlaW9fbWFrZV9yZXF1ZXN0KHN0cnVjdCBpZQotIHN0YXRpYyBpbnQgZmlsZWlvX3N5bmMoc3RydWN0IGlldF92b2x1bWUgKmx1LCBzdHJ1Y3QgdGlvICp0aW8pCi0gewotIAlzdHJ1Y3QgZmlsZWlvX2RhdGEgKnAgPSBsdS0+cHJpdmF0ZTsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKQotKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gZmlsZV9pbm9kZShwLT5maWxwKTsKLSsjZWxzZQotIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gcC0+ZmlscC0+Zl9kZW50cnktPmRfaW5vZGU7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBpbm9kZS0+aV9tYXBwaW5nOwotIAlsb2ZmX3QgcHBvcywgY291bnQ7Ci0gCWludCByZXM7Ci1AQCAtMjEzLDcgKzIxNywxMSBAQCBzdGF0aWMgaW50IGZpbGVpb19hdHRhY2goc3RydWN0IGlldF92b2x1Ci0gCQllcHJpbnRrKCIlZFxuIiwgZXJyKTsKLSAJCWdvdG8gb3V0OwotIAl9Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJaW5vZGUgPSBmaWxlX2lub2RlKHAtPmZpbHApOwotKyNlbHNlCi0gCWlub2RlID0gcC0+ZmlscC0+Zl9kZW50cnktPmRfaW5vZGU7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAKLSAJaWYgKFNfSVNSRUcoaW5vZGUtPmlfbW9kZSkpCi0gCQk7Ci1kaWZmIC1OYXVycCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9pc2NzaS5jIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvaXNjc2kuYwotLS0tIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL2lzY3NpLmMJMjAxNC0wNS0wNiAxMzo1OTo1NS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL2lzY3NpLmMJMjAxNy0wMS0xOCAyMzozNzozNi40NjI5NzAzMjYgLTA4MDAKLUBAIC00ODksOCArNDg5LDEyIEBAIHN0YXRpYyB2b2lkIGNtbmRfc2tpcF9wZHUoc3RydWN0IGlzY3NpX2MKLSAJfQotIAljb25uLT5yZWFkX2lvdltpXS5pb3ZfYmFzZSA9IGFkZHI7Ci0gCWNvbm4tPnJlYWRfaW92W2ldLmlvdl9sZW4gPSBzaXplOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApCi0rCWlvdl9pdGVyX2luaXQoJmNvbm4tPnJlYWRfbXNnLm1zZ19pdGVyLCBSRUFELCBjb25uLT5yZWFkX2lvdiwgKytpLCBjb25uLT5yZWFkX3NpemUpOwotKyNlbHNlCi0gCWNvbm4tPnJlYWRfbXNnLm1zZ19pb3YgPSBjb25uLT5yZWFkX2lvdjsKLSAJY29ubi0+cmVhZF9tc2cubXNnX2lvdmxlbiA9ICsraTsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKSAqLwotIH0KLSAKLSBzdGF0aWMgdm9pZCBpc2NzaV9jbW5kX3JlamVjdChzdHJ1Y3QgaXNjc2lfY21uZCAqcmVxLCBpbnQgcmVhc29uKQotQEAgLTcxOCw3ICs3MjIsOSBAQCBzdGF0aWMgaW50IGNtbmRfcmVjdl9wZHUoc3RydWN0IGlzY3NpX2NvCi0gCWlkeCA9IG9mZnNldCA+PiBQQUdFX0NBQ0hFX1NISUZUOwotIAlvZmZzZXQgJj0gflBBR0VfQ0FDSEVfTUFTSzsKLSAKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywgMTksIDApCi0gCWNvbm4tPnJlYWRfbXNnLm1zZ19pb3YgPSBjb25uLT5yZWFkX2lvdjsKLSsjZW5kaWYJLyogTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCWNvbm4tPnJlYWRfc2l6ZSA9IHNpemUgPSAoc2l6ZSArIDMpICYgLTQ7Ci0gCWNvbm4tPnJlYWRfb3ZlcmZsb3cgPSAwOwotIAotQEAgLTczMCwxNiArNzM2LDI1IEBAIHN0YXRpYyBpbnQgY21uZF9yZWN2X3BkdShzdHJ1Y3QgaXNjc2lfY28KLSAJCWNvbm4tPnJlYWRfaW92W2ldLmlvdl9iYXNlID0gIGFkZHIgKyBvZmZzZXQ7Ci0gCQlpZiAob2Zmc2V0ICsgc2l6ZSA8PSBQQUdFX0NBQ0hFX1NJWkUpIHsKLSAJCQljb25uLT5yZWFkX2lvdltpXS5pb3ZfbGVuID0gc2l6ZTsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKQotKwkJCWlvdl9pdGVyX2luaXQoJmNvbm4tPnJlYWRfbXNnLm1zZ19pdGVyLCBSRUFELCBjb25uLT5yZWFkX2lvdiwgKytpLCBjb25uLT5yZWFkX3NpemUpOwotKyNlbHNlCi0gCQkJY29ubi0+cmVhZF9tc2cubXNnX2lvdmxlbiA9ICsraTsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKSAqLwotIAkJCWJyZWFrOwotIAkJfQotIAkJY29ubi0+cmVhZF9pb3ZbaV0uaW92X2xlbiA9IFBBR0VfQ0FDSEVfU0laRSAtIG9mZnNldDsKLSAJCXNpemUgLT0gY29ubi0+cmVhZF9pb3ZbaV0uaW92X2xlbjsKLSAJCW9mZnNldCA9IDA7Ci0gCQlpZiAoKytpID49IElTQ1NJX0NPTk5fSU9WX01BWCkgewotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSAJCQljb25uLT5yZWFkX21zZy5tc2dfaW92bGVuID0gaTsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCQkJY29ubi0+cmVhZF9vdmVyZmxvdyA9IHNpemU7Ci0gCQkJY29ubi0+cmVhZF9zaXplIC09IHNpemU7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJCQlpb3ZfaXRlcl9pbml0KCZjb25uLT5yZWFkX21zZy5tc2dfaXRlciwgUkVBRCwgY29ubi0+cmVhZF9pb3YsIGksIGNvbm4tPnJlYWRfc2l6ZSk7Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAJCQlicmVhazsKLSAJCX0KLSAKLUBAIC05MTgsNyArOTMzLDkgQEAgc3RhdGljIGludCBub3Bfb3V0X3N0YXJ0KHN0cnVjdCBpc2NzaV9jbwotIAotIAlpZiAoKHNpemUgPSBjbW5kLT5wZHUuZGF0YXNpemUpKSB7Ci0gCQlzaXplID0gKHNpemUgKyAzKSAmIC00OwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSAJCWNvbm4tPnJlYWRfbXNnLm1zZ19pb3YgPSBjb25uLT5yZWFkX2lvdjsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCQlpZiAoY21uZC0+cGR1LmJocy5pdHQgIT0gY3B1X3RvX2JlMzIoSVNDU0lfUkVTRVJWRURfVEFHKSkgewotIAkJCXN0cnVjdCB0aW8gKnRpbzsKLSAJCQlpbnQgcGdfY250ID0gZ2V0X3BnY250KHNpemUpOwotQEAgLTk0Niw3ICs5NjMsMTEgQEAgc3RhdGljIGludCBub3Bfb3V0X3N0YXJ0KHN0cnVjdCBpc2NzaV9jbwotIAkJfQotIAkJYXNzZXJ0KCFzaXplKTsKLSAJCWNvbm4tPnJlYWRfb3ZlcmZsb3cgPSBzaXplOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApCi0rCQlpb3ZfaXRlcl9pbml0KCZjb25uLT5yZWFkX21zZy5tc2dfaXRlciwgUkVBRCwgY29ubi0+cmVhZF9pb3YsIGksIGNvbm4tPnJlYWRfc2l6ZSk7Ci0rI2Vsc2UKLSAJCWNvbm4tPnJlYWRfbXNnLm1zZ19pb3ZsZW4gPSBpOwotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCX0KLSAKLSBvdXQ6Ci1AQCAtOTg2LDcgKzEwMDcsMTEgQEAgc3RhdGljIHZvaWQgc2NzaV9jbW5kX3N0YXJ0KHN0cnVjdCBpc2NzaQotIAkJc2V0X2NtbmRfbHVuaXQocmVxKTsKLSAKLSAJc3dpdGNoIChyZXFfaGRyLT5zY2JbMF0pIHsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKQotKwljYXNlIFNFUlZJQ0VfQUNUSU9OX0lOXzE2OgotKyNlbHNlCi0gCWNhc2UgU0VSVklDRV9BQ1RJT05fSU46Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAJCWlmICgocmVxX2hkci0+c2NiWzFdICYgMHgxZikgIT0gMHgxMCkKLSAJCQlnb3RvIGVycm9yOwotIAljYXNlIElOUVVJUlk6Ci1kaWZmIC1OYXVycCBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9udGhyZWFkLmMgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC9udGhyZWFkLmMKLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC9udGhyZWFkLmMJMjAxNC0wNS0wNiAxMzo1OTo1NS4wMDAwMDAwMDAgLTA3MDAKLSsrKyBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDIva2VybmVsL250aHJlYWQuYwkyMDE3LTAxLTE4IDIzOjQ1OjAzLjI5MTAzMzg4MSAtMDgwMAotQEAgLTQyLDkgKzQyLDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpc2NzaV9jb25uX2luaXRfcmVhZCgKLSAJbGVuID0gKGxlbiArIDMpICYgLTQ7IC8vIFhYWCA/Pz8KLSAJY29ubi0+cmVhZF9pb3ZbMF0uaW92X2Jhc2UgPSBkYXRhOwotIAljb25uLT5yZWFkX2lvdlswXS5pb3ZfbGVuID0gbGVuOwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSAJY29ubi0+cmVhZF9tc2cubXNnX2lvdiA9IGNvbm4tPnJlYWRfaW92OwotIAljb25uLT5yZWFkX21zZy5tc2dfaW92bGVuID0gMTsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCWNvbm4tPnJlYWRfc2l6ZSA9IChsZW4gKyAzKSAmIC00OwotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApCi0rCWlvdl9pdGVyX2luaXQoJmNvbm4tPnJlYWRfbXNnLm1zZ19pdGVyLCBSRUFELCBjb25uLT5yZWFkX2lvdiwgMSwgY29ubi0+cmVhZF9zaXplKTsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKSAqLwotIH0KLSAKLSBzdGF0aWMgdm9pZCBpc2NzaV9jb25uX3JlYWRfYWhzKHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBzdHJ1Y3QgaXNjc2lfY21uZCAqY21uZCkKLUBAIC04MywxNCArODgsMzEgQEAgc3RhdGljIGludCBpc19kYXRhX2F2YWlsYWJsZShzdHJ1Y3QgaXNjcwotIAotIHN0YXRpYyB2b2lkIGZvcndhcmRfaW92KHN0cnVjdCBtc2doZHIgKm1zZywgaW50IGxlbikKLSB7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJc3RydWN0IGlvdmVjICppb3Y7Ci0rCi0rCXdoaWxlIChtc2ctPm1zZ19pdGVyLmlvdi0+aW92X2xlbiA8PSBsZW4pIHsKLSsJCWxlbiAtPSBtc2ctPm1zZ19pdGVyLmlvdi0+aW92X2xlbjsKLSsJCW1zZy0+bXNnX2l0ZXIuaW92Kys7Ci0rCQltc2ctPm1zZ19pdGVyLm5yX3NlZ3MtLTsKLSsJfQotKyNlbHNlCi0gCXdoaWxlIChtc2ctPm1zZ19pb3YtPmlvdl9sZW4gPD0gbGVuKSB7Ci0gCQlsZW4gLT0gbXNnLT5tc2dfaW92LT5pb3ZfbGVuOwotIAkJbXNnLT5tc2dfaW92Kys7Ci0gCQltc2ctPm1zZ19pb3ZsZW4tLTsKLSAJfQotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCi0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJLyogWFhYOiBkaXNjYXJkcyBjb25zdCAuLi4gKi8KLSsJaW92ID0gbXNnLT5tc2dfaXRlci5pb3Y7Ci0rCWlvdi0+aW92X2Jhc2UgPSAoY2hhciAqKSBtc2ctPm1zZ19pdGVyLmlvdi0+aW92X2Jhc2UgKyBsZW47Ci0rCWlvdi0+aW92X2xlbiAtPSBsZW47Ci0rI2Vsc2UKLSAJbXNnLT5tc2dfaW92LT5pb3ZfYmFzZSA9IChjaGFyICopIG1zZy0+bXNnX2lvdi0+aW92X2Jhc2UgKyBsZW47Ci0gCW1zZy0+bXNnX2lvdi0+aW92X2xlbiAtPSBsZW47Ci0rI2VuZGlmCS8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSB9Ci0gCi0gc3RhdGljIGludCBkb19yZWN2KHN0cnVjdCBpc2NzaV9jb25uICpjb25uLCBpbnQgc3RhdGUpCi1AQCAtOTgsNiArMTIwLDkgQEAgc3RhdGljIGludCBkb19yZWN2KHN0cnVjdCBpc2NzaV9jb25uICpjbwotIAltbV9zZWdtZW50X3Qgb2xkZnM7Ci0gCXN0cnVjdCBtc2doZHIgbXNnOwotIAlzdHJ1Y3QgaW92ZWMgaW92W0lTQ1NJX0NPTk5fSU9WX01BWF07Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJc2l6ZV90IGlvdmxlbiA9IElTQ1NJX0NPTk5fSU9WX01BWDsKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKSAqLwotIAlpbnQgaSwgbGVuLCByZXM7Ci0gCi0gCWlmICghdGVzdF9iaXQoQ09OTl9BQ1RJVkUsICZjb25uLT5zdGF0ZSkpIHsKLUBAIC0xMTAsMTIgKzEzNSwyMyBAQCBzdGF0aWMgaW50IGRvX3JlY3Yoc3RydWN0IGlzY3NpX2Nvbm4gKmNvCi0gCQlnb3RvIG91dDsKLSAJfQotIAotKyNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApCi0rCWlmIChjb25uLT5yZWFkX21zZy5tc2dfaXRlci5ucl9zZWdzIDwgaW92bGVuKQotKwkJaW92bGVuID0gY29ubi0+cmVhZF9tc2cubXNnX2l0ZXIubnJfc2VnczsKLSsKLSsJZm9yIChpID0gMCwgbGVuID0gMDsgaSA8IGlvdmxlbjsgaSsrKSB7Ci0rCQlpb3ZbaV0gPSBjb25uLT5yZWFkX21zZy5tc2dfaXRlci5pb3ZbaV07Ci0rCQlsZW4gKz0gaW92W2ldLmlvdl9sZW47Ci0rCX0KLSsJaW92X2l0ZXJfaW5pdCgmbXNnLm1zZ19pdGVyLCBSRUFELCBpb3YsIGlvdmxlbiwgbGVuKTsKLSsjZWxzZQotIAltc2cubXNnX2lvdiA9IGlvdjsKLSAJbXNnLm1zZ19pb3ZsZW4gPSBtaW5fdChzaXplX3QsIGNvbm4tPnJlYWRfbXNnLm1zZ19pb3ZsZW4sIElTQ1NJX0NPTk5fSU9WX01BWCk7Ci0gCWZvciAoaSA9IDAsIGxlbiA9IDA7IGkgPCBtc2cubXNnX2lvdmxlbjsgaSsrKSB7Ci0gCQlpb3ZbaV0gPSBjb25uLT5yZWFkX21zZy5tc2dfaW92W2ldOwotIAkJbGVuICs9IGlvdltpXS5pb3ZfbGVuOwotIAl9Ci0rI2VuZGlmIC8qIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkgKi8KLSAKLSAJb2xkZnMgPSBnZXRfZnMoKTsKLSAJc2V0X2ZzKGdldF9kcygpKTsKLWRpZmYgLU5hdXJwIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL3RhcmdldF9kaXNrLmMgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyL2tlcm5lbC90YXJnZXRfZGlzay5jCi0tLS0gaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNTAyX29yZy9rZXJuZWwvdGFyZ2V0X2Rpc2suYwkyMDE0LTA1LTA2IDEzOjU5OjU1LjAwMDAwMDAwMCAtMDcwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvdGFyZ2V0X2Rpc2suYwkyMDE3LTAxLTE4IDIzOjQ1OjUxLjQ1MTAxMDQxNyAtMDgwMAotQEAgLTYwNiw3ICs2MDYsMTEgQEAgc3RhdGljIGludCBkaXNrX2V4ZWN1dGVfY21uZChzdHJ1Y3QgaXNjcwotIAljYXNlIFJFUVVFU1RfU0VOU0U6Ci0gCQlzZW5kX2RhdGFfcnNwKGNtbmQsIGJ1aWxkX3JlcXVlc3Rfc2Vuc2VfcmVzcG9uc2UpOwotIAkJYnJlYWs7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJY2FzZSBTRVJWSUNFX0FDVElPTl9JTl8xNjoKLSsjZWxzZQotIAljYXNlIFNFUlZJQ0VfQUNUSU9OX0lOOgotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCQlzZW5kX2RhdGFfcnNwKGNtbmQsIGJ1aWxkX3NlcnZpY2VfYWN0aW9uX2luX3Jlc3BvbnNlKTsKLSAJCWJyZWFrOwotIAljYXNlIFJFQURfNjoKLWRpZmYgLU5hdXJwIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMl9vcmcva2VybmVsL3ZvbHVtZS5jIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvdm9sdW1lLmMKLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm41MDJfb3JnL2tlcm5lbC92b2x1bWUuYwkyMDE0LTA1LTA2IDEzOjU5OjU1LjAwMDAwMDAwMCAtMDcwMAotKysrIGlzY3NpdGFyZ2V0LTEuNC4yMC4zK3N2bjUwMi9rZXJuZWwvdm9sdW1lLmMJMjAxNy0wMS0xOCAyMzo0NzowNy45NTc1NjE2MDAgLTA4MDAKLUBAIC0zOTgsNyArMzk4LDExIEBAIGludCBpc192b2x1bWVfcmVzZXJ2ZWQoc3RydWN0IGlldF92b2x1bWUKLSAJCWNhc2UgUkVBRF9DQVBBQ0lUWToKLSAJCQkvKiBhbGxvd2VkIGNvbW1hbmRzIHdoZW4gcmVzZXJ2ZWQgKi8KLSAJCQlicmVhazsKLSsjaWYgTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKQotKwkJY2FzZSBTRVJWSUNFX0FDVElPTl9JTl8xNjoKLSsjZWxzZQotIAkJY2FzZSBTRVJWSUNFX0FDVElPTl9JTjoKLSsjZW5kaWYgLyogTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDMsIDE5LCAwKSAqLwotIAkJCWlmICgoc2NiWzFdICYgMHgxRikgPT0gMHgxMCkKLSAJCQkJYnJlYWs7Ci0gCQkJLyogZmFsbCB0aHJvdWdoICovCi1AQCAtNDY1LDcgKzQ2OSwxMSBAQCBpbnQgaXNfdm9sdW1lX3Jlc2VydmVkKHN0cnVjdCBpZXRfdm9sdW1lCi0gCQlpZiAoZXhjbF9hY2Nlc3Nfcm8gJiYgIXJlZ2lzdGVyZWQpCi0gCQkJZXJyID0gLUVCVVNZOwotIAkJYnJlYWs7Ci0rI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTigzLCAxOSwgMCkKLSsJY2FzZSBTRVJWSUNFX0FDVElPTl9JTl8xNjoKLSsjZWxzZQotIAljYXNlIFNFUlZJQ0VfQUNUSU9OX0lOOgotKyNlbmRpZiAvKiBMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oMywgMTksIDApICovCi0gCQlpZiAoKHNjYlsxXSAmIDB4MUYpID09IDB4MTApCi0gCQkJYnJlYWs7Ci0gCQkvKiBmYWxsIHRocm91Z2ggKi8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2lzY3NpdGFyZ2V0L2ZpbGVzL3VzZS1rZXJuZWwtbWFrZWZpbGUtdG8tZ2V0LWtlcm5lbC12ZXJzaW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvdXNlLWtlcm5lbC1tYWtlZmlsZS10by1nZXQta2VybmVsLXZlcnNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YmQwNDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvZmlsZXMvdXNlLWtlcm5lbC1tYWtlZmlsZS10by1nZXQta2VybmVsLXZlcnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1HZXQgbGludXgga2VybmVsIHZlcnNpb24gZnJvbSBNYWtlZmlsZSBvZiBrZXJuZWwgc291cmNlCi0KLVdlIGdldCBiZWxvdyBtZXNzYWdlcyB3aGlsZSBidWlsZGluZyBpc2NzaXRhcmdldCwKLQotLS0gc25pcCAtLQoteDg2XzY0LXBva3ktbGludXgtZ2NjOiBlcnJvcjoKLS9DR0U3X1NIREQvcHJvamVjdF95b2N0b18xLjgvcG9reS9idWlsZC90bXAvd29yay1zaGFyZWQvcWVtdXg4Ni02NC9rZXJuZWwtc291cmNlL2luY2x1ZGUvbGludXgvdmVyc2lvbi5oOgotTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQoteDg2XzY0LXBva3ktbGludXgtZ2NjOiBmYXRhbCBlcnJvcjogbm8gaW5wdXQgZmlsZXMKLWNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCi0vYmluL3NoOiBsaW5lIDA6IFs6IHRvbyBtYW55IGFyZ3VtZW50cwotL2Jpbi9zaDogbGluZSAwOiBbOiB0b28gbWFueSBhcmd1bWVudHMKLS9iaW4vc2g6IGxpbmUgMDogWzogdG9vIG1hbnkgYXJndW1lbnRzCi0vYmluL3NoOiBsaW5lIDA6IFs6IHRvbyBtYW55IGFyZ3VtZW50cwotL2Jpbi9zaDogbGluZSAwOiBbOiB0b28gbWFueSBhcmd1bWVudHMKLS9iaW4vc2g6IGxpbmUgMDogWzogdG9vIG1hbnkgYXJndW1lbnRzCi0vYmluL3NoOiBsaW5lIDA6IFs6IHRvbyBtYW55IGFyZ3VtZW50cwotL2Jpbi9zaDogbGluZSAwOiBbOiB0b28gbWFueSBhcmd1bWVudHMKLS9iaW4vc2g6IGxpbmUgMDogWzogdG9vIG1hbnkgYXJndW1lbnRzCi0vYmluL3NoOiBsaW5lIDA6IFs6IHRvbyBtYW55IGFyZ3VtZW50cwotL2Jpbi9zaDogbGluZSAwOiBbOiB0b28gbWFueSBhcmd1bWVudHMKLS9iaW4vc2g6IGxpbmUgMDogWzogdG9vIG1hbnkgYXJndW1lbnRzCi0tLSBDVVQgLS0KLQotVGhlc2UgbWVzc2FnZXMgYXJlIGR1ZSB0byBhYnNlbmNlIG9mIGluY2x1ZGUvbGludXgvdmVyc2lvbi5oIGZpbGUgaW4gCi1rZXJuZWwgc291cmNlIGRpcmVjdG9yeSBhbmQgZmFpbGVkIHRvIGNvbXB1dGUgbGludXgga2VybmVsIHZlcnNpb24uCi1TbywgdXNlIGtlcm5lbCBzb3VyY2UgTWFrZWZpbGUgKCBpLmUgJChLU1JDKS9NYWtlZmlsZSkgdG8gZmluZCBvdXQgCi1hY3R1YWwga2VybmVsIHZlcnNpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0KLS0tLSBpc2NzaXRhcmdldC0xLjQuMjAuMytzdm40OTlfb3JnL01ha2VmaWxlCTIwMTQtMDEtMjcgMDA6MDA6NDUuMDAwMDAwMDAwICswNTMwCi0rKysgaXNjc2l0YXJnZXQtMS40LjIwLjMrc3ZuNDk5L01ha2VmaWxlCTIwMTUtMDctMjMgMTA6NDQ6NDcuMDEzNjAwMjg1ICswNTMwCi1AQCAtMTgsMjcgKzE4LDExIEBAIGlmZXEgKCQoS1NSQyksKQotIGVuZGlmCi0gCi0gCi0taWZuZXEgKCQod2lsZGNhcmQgJChLU1JDKS9pbmNsdWRlL2dlbmVyYXRlZC91dHNyZWxlYXNlLmgpLCkKLS0JVkVSU0lPTl9GSUxFIDo9ICQoS1NSQykvaW5jbHVkZS9nZW5lcmF0ZWQvdXRzcmVsZWFzZS5oCi0tZWxzZQotLSAgaWZuZXEgKCQod2lsZGNhcmQgJChLU1JDKS9pbmNsdWRlL2xpbnV4L3V0c3JlbGVhc2UuaCksKQotLQkgIFZFUlNJT05fRklMRSA6PSAkKEtTUkMpL2luY2x1ZGUvbGludXgvdXRzcmVsZWFzZS5oCi0tICBlbHNlCi0tCSAgVkVSU0lPTl9GSUxFIDo9ICQoS1NSQykvaW5jbHVkZS9saW51eC92ZXJzaW9uLmgKLS0gIGVuZGlmCi0tZW5kaWYKLS0KLS1LVkVSIDo9ICQoc2hlbGwgJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLUUgLWRNICQoVkVSU0lPTl9GSUxFKSB8IFwKLS0JZ3JlcCBVVFNfUkVMRUFTRSB8IGF3ayAneyBwcmludCAkJDMgfScgfCBzZWQgJ3MvXCIvL2cnKQotLQotIEtNT0QgOj0gL2xpYi9tb2R1bGVzLyQoS1ZFUikvZXh0cmEKLS0KLS1LTUFKIDo9ICQoc2hlbGwgZWNobyAkKEtWRVIpIHwgXAotLQlzZWQgLWUgJ3MvXlwoWzAtOV1bMC05XSpcKVwuWzAtOV1bMC05XSpcLlswLTldWzAtOV0qLiovXDEvJykKLS1LTUlOIDo9ICQoc2hlbGwgZWNobyAkKEtWRVIpIHwgXAotLQlzZWQgLWUgJ3MvXlswLTldWzAtOV0qXC5cKFswLTldWzAtOV0qXClcLlswLTldWzAtOV0qLiovXDEvJykKLS1LUkVWIDo9ICQoc2hlbGwgZWNobyAkKEtWRVIpIHwgXAotLQlzZWQgLWUgJ3MvXlswLTldWzAtOV0qXC5bMC05XVswLTldKlwuXChbMC05XVswLTldKlwpLiovXDEvJykKLStLTUFKIDo9ICQoc2hlbGwgY2F0ICQoS1NSQykvTWFrZWZpbGUgfCBncmVwIF5WRVJTSU9OIHwgZ2F3ayAtRiAiICIgJ3sgcHJpbnQgJCRORiB9JykKLStLTUlOIDo9ICQoc2hlbGwgY2F0ICQoS1NSQykvTWFrZWZpbGUgfCBncmVwIF5QQVRDSExFVkVMIHwgZ2F3ayAtRiAiICIgJ3sgcHJpbnQgJCRORiB9JykKLStLUkVWIDo9ICQoc2hlbGwgY2F0ICQoS1NSQykvTWFrZWZpbGUgfCBncmVwIF5TVUJMRVZFTCB8IGdhd2sgLUYgIiAiICd7IHByaW50ICQkTkYgfScpCi0rS1ZFUiA6PSAke0tNQUp9LiR7S01JTn0uJHtLUkVWfQotIAotIGt2ZXJfZXEgPSAkKHNoZWxsIFsgJChLTUFKKSAtZXEgJCgxKSAtYSAkKEtNSU4pIC1lcSAkKDIpIC1hICQoS1JFVikgLWVxICQoMykgXSAmJiBcCi0gCWVjaG8gMSB8fCBlY2hvIDApCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9pc2NzaXRhcmdldC9pc2NzaXRhcmdldF8xLjQuMjAuMytzdm41MDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMTM1OTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvaXNjc2l0YXJnZXQvaXNjc2l0YXJnZXRfMS40LjIwLjMrc3ZuNTAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiaVNDU0kgRW50ZXJwcmlzZSBUYXJnZXQgaXMgYWltZWQgdG8gZGV2ZWxvcCBhbiBcCi0gICAgICAgICAgICAgICBvcGVuIHNvdXJjZSBpU0NTSSB0YXJnZXQgd2l0aCBwcm9mZXNzaW9uYWwgZmVhdHVyZXMsIFwKLSAgICAgICAgICAgICAgIHRoYXQgd29ya3Mgd2VsbCBpbiBlbnRlcnByaXNlIGVudmlyb25tZW50IHVuZGVyIHJlYWwgXAotICAgICAgICAgICAgICAgd29ya2xvYWQsIGFuZCBpcyBzY2FsYWJsZSBhbmQgdmVyc2F0aWxlIGVub3VnaCB0byBtZWV0IHRoZSBcCi0gICAgICAgICAgICAgICBjaGFsbGVuZ2Ugb2YgZnV0dXJlIHN0b3JhZ2UgbmVlZHMgYW5kIGRldmVsb3BtZW50cy4iCi1IT01FUEFHRSA9ICJodHRwOi8vaXNjc2l0YXJnZXQuc291cmNlZm9yZ2UubmV0LyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTIzM2VkYTQ1YzgwN2FhMjlhZWFhNmQ5NGJjNDhhMiIKLURFUEVORFMgPSAib3BlbnNzbCB2aXJ0dWFsL2tlcm5lbCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmhlYW5ldC5pZS9taXJyb3JzL3VidW50dS9wb29sL3VuaXZlcnNlL2kvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly91c2Uta2VybmVsLW1ha2VmaWxlLXRvLWdldC1rZXJuZWwtdmVyc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZXJyb3JzLW9ic2VydmVkLXdpdGgtbGludXgtMy4xOS1hbmQtZ3JlYXRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2Nlc3Mtc2tfdjZfZGFkZHItaWZmLUlQVjYtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZF93aXRoX3VwZGF0ZWRfYmlvX3N0cnVjdF9vZl9saW51eF92NC4zX2FuZF9hYm92ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZF93aXRoX3VwZGF0ZWRfaW50ZXJmYWNlc19vZl9saW51eF92NC44X2FuZF9hYm92ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY2FsbC10cmFjZS1vZi1haGFzaC1BUEktY2FsbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWtlcm5lbC1ldmVudC1uZXRsaW5rX2Fjay1ub3ctcmVxdWlyZXMtNC1hcmd1bWVudHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjliYzgyM2JiYWJkM2M3NzIyMDhjMDBkNWYyZDA4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzE5NmNjYjc4YTQzMjY2ZGNlMjg1ODdiZmUzMGQ4YWI0ZGI3NTY2ZDdiY2U5NjA1N2RmYmI4NDEwMGJhYmI1IgotCi1pbmhlcml0IG1vZHVsZQotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi0jIG1ha2Vfc2NyaXB0cyByZXF1aXJlcyBrZXJuZWwgc291cmNlIGRpcmVjdG9yeSB0byBjcmVhdGUKLSMga2VybmVsIHNjcmlwdHMKLWRvX21ha2Vfc2NyaXB0c1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZSBLU1JDPSR7U1RBR0lOR19LRVJORUxfRElSfSBMREZMQUdTPScnIFY9MSBrZXJuZWwKLSAgICBvZV9ydW5tYWtlIEtTUkM9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9IHVzcgotfQotCi1kb19pbnN0YWxsKCkgewotICAgICMgTW9kdWxlCi0gICAgaW5zdGFsbCAtZCAke0R9L2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC9pc2NzaQotICAgIGluc3RhbGwgLW0gMDY0NCBrZXJuZWwvaXNjc2lfdHJndC5rbyBcCi0gICAgJHtEfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvaXNjc2kvaXNjc2lfdHJndC5rbwotCi0gICAgIyBVc2Vyc3BhY2UgdXRpbGl0aWVzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSB1c3IvaWV0ZCAke0R9JHtzYmluZGlyfS9pZXRkCi0gICAgaW5zdGFsbCAtbSAwNzU1IHVzci9pZXRhZG0gJHtEfSR7c2JpbmRpcn0vaWV0YWRtCi0KLSAgICAjIENvbmZpZyBmaWxlcywgaW5pdCBzY3JpcHRzCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vaWV0Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IGV0Yy9pZXRkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2lldC9pZXRkLmNvbmYKLSAgICBpbnN0YWxsIC1tIDA2NDQgZXRjL2luaXRpYXRvcnMuYWxsb3cgJHtEfSR7c3lzY29uZmRpcn0vaWV0L2luaXRpYXRvcnMuYWxsb3cKLSAgICBpbnN0YWxsIC1tIDA2NDQgZXRjL3RhcmdldHMuYWxsb3cgJHtEfSR7c3lzY29uZmRpcn0vaWV0L3RhcmdldHMuYWxsb3cKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgZXRjL2luaXRkL2luaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pc2NzaS10YXJnZXQKLSAgICBpbnN0YWxsIC1tIDA2NDQgZXRjL2luaXRpYXRvcnMuZGVueSAke0R9JHtzeXNjb25mZGlyfS9pZXQvaW5pdGlhdG9ycy5kZW55Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlzY3NpLXRyZ3QiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWNyYzMyYyBrZXJuZWwtbW9kdWxlLWxpYmNyYzMyYyIKLQotUE5CTEFDS0xJU1RbaXNjc2l0YXJnZXRdID0gImVycm9yOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnaW5pdF90aW1lcic7IGRpZCB5b3UgbWVhbiAnaW5pdF90aW1lcnMnPzsgNC4xNSBrZXJuZWwgaXNzdWVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvY29ubnRyYWNrLXRvb2xzL2Nvbm50cmFjay10b29sc18xLjQuNC5iYgppbmRleCA4YjM0OTBkLi40NjE2OGIwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvY29ubnRyYWNrLXRvb2xzL2Nvbm50cmFjay10b29sc18xLjQuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvY29ubnRyYWNrLXRvb2xzL2Nvbm50cmFjay10b29sc18xLjQuNC5iYgpAQCAtNCwxMSArNCw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKIAogREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayBsaWJuZXRmaWx0ZXItY3R0aW1lb3V0IFwKLSAgICAgICAgICAgbGlibmV0ZmlsdGVyLWN0aGVscGVyIGxpYm5ldGZpbHRlci1xdWV1ZSBiaXNvbi1uYXRpdmUiCisgICAgICAgICAgIGxpYm5ldGZpbHRlci1jdGhlbHBlciBsaWJuZXRmaWx0ZXItcXVldWUgYmlzb24tbmF0aXZlIGxpYnRpcnBjIgogCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCitFWFRSQV9PRUNPTkYgKz0gIkxJQlM9LWx0aXJwYyBDUFBGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9jb25udHJhY2stdG9vbHMvZmlsZXMvY29ubnRyYWNrLXRvb2xzLSR7UFZ9LnRhci5iejI7bmFtZT10YXIgXAogICAgIGZpbGU6Ly9jb25udHJhY2stZmFpbG92ZXIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzXzIuMC4xMC00LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2VidGFibGVzL2VidGFibGVzXzIuMC4xMC00LmJiCmluZGV4IGI5ZGNlNjkuLmYwNWJkNjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9lYnRhYmxlcy9lYnRhYmxlc18yLjAuMTAtNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvZWJ0YWJsZXMvZWJ0YWJsZXNfMi4wLjEwLTQuYmIKQEAgLTM2LDYgKzM2LDE1IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNTA2NzQyYTNkNDRiOTkyNTk1NTQyNWE2NTljMWE4ZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM2ZjdiNDg0ZjIwN2RjNzEyYmZjYTgxNjQ1ZjQ1MTIwY2I2YWVlMzM4MGU3N2ExNzcxZTljMzRhOWE0NDU1ZCIKIAorIyBJdCBpcyB1c2luZyAnLScgYnV0IG5vdCAnLicgYXMgZGVsaW1pdGVyIGZvciB0aGUgdmVyc2lvbiBpbiB0aGUgcmVsZWFzZXMgcGFnZSwKKyMgd2hpY2ggY2F1c2VzIHRoZSB2ZXJzaW9uIGNvbXBhcmlzb24gdW5tYXRjaGVkLgorI1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lYnRhYmxlcy9maWxlcy9lYnRhYmxlcy8iCisjVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZWJ0YWJsZXMtKD9QPHB2ZXI+XGQrKFwtXGQrKSspIgorCitSRUNJUEVfVVBTVFJFQU1fVkVSU0lPTiA9ICIyLjAuMTAtNCIKK1JFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkRlYyAxNSwgMjAxMSIKK0NIRUNLX0RBVEUgPSAiTWF5IDI1LCAyMDE4IgorCiBTID0gIiR7V09SS0RJUn0vZWJ0YWJsZXMtdiR7UFZ9IgogCiBpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubC8wMDAxLURlY2xhcmUtdGhlLWRlZmluZS12aXNpdmlsaXR5LWF0dHJpYnV0ZS10b2dldGhlci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubC8wMDAxLURlY2xhcmUtdGhlLWRlZmluZS12aXNpdmlsaXR5LWF0dHJpYnV0ZS10b2dldGhlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgyYjIzOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmwvMDAwMS1EZWNsYXJlLXRoZS1kZWZpbmUtdmlzaXZpbGl0eS1hdHRyaWJ1dGUtdG9nZXRoZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQ5ICswLDAgQEAKLUZyb20gYmQwMWY3ODVkYTUyMjJkMDY2MmJlMzE4MmZlMjY1MGUxYzEyZjQzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEwIEFwciAyMDE3IDE0OjA3OjA3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlY2xhcmUgdGhlIGRlZmluZSB2aXNpdmlsaXR5IGF0dHJpYnV0ZSB0b2dldGhlcgotCi1jbGFuZyBpZ25vcmVzIHRoZSB2aXNpYmlsaXR5IGF0dHJpYnV0ZSBpZiBpdHMgbm90Ci1kZWZpbmVkIGJlZm9yZSB0aGUgZGVmaW5pdGlvbi4gQXMgYSByZXN1bHQgdGhlc2UKLXN5bWJvbHMgYmVjb21lIGhpZGRlbiBhbmQgY29uc3VtZXJzIG9mIHRoaXMgbGlicmFyeQotZmFpbCB0byBsaW5rIGR1ZSB0byB0aGVzZSBtaXNzaW5nIHN5bWJvbHMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGRveHlnZW4uY2ZnLmluICB8ICAgMiArLQotIGluY2x1ZGUvdXRpbHMuaCB8ICAgNSArLS0KLSBzcmMvYmF0Y2guYyAgICAgfCAgMjEgKysrKy0tLS0tLS0KLSBzcmMvY2hhaW4uYyAgICAgfCAxMDIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvY29tbW9uLmMgICAgfCAgMjEgKysrKy0tLS0tLS0KLSBzcmMvZXhwci5jICAgICAgfCAgNTEgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9nZW4uYyAgICAgICB8ICAzOSArKysrKysrLS0tLS0tLS0tLS0tCi0gc3JjL29iamVjdC5jICAgIHwgIDk5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9ydWxlLmMgICAgICB8IDExNCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9ydWxlc2V0LmMgICB8ICA0OCArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvc2V0LmMgICAgICAgfCAgOTYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvc2V0X2VsZW0uYyAgfCAgNzIgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvdGFibGUuYyAgICAgfCAgOTAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvdHJhY2UuYyAgICAgfCAgMjcgKysrKystLS0tLS0tLS0KLSBzcmMvdWRhdGEuYyAgICAgfCAgNDggKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMTUgZmlsZXMgY2hhbmdlZCwgMjc5IGluc2VydGlvbnMoKyksIDU1NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RveHlnZW4uY2ZnLmluIGIvZG94eWdlbi5jZmcuaW4KLWluZGV4IDIzZmNhZDQuLmU0OWYyOGQgMTAwNjQ0Ci0tLS0gYS9kb3h5Z2VuLmNmZy5pbgotKysrIGIvZG94eWdlbi5jZmcuaW4KLUBAIC03Miw3ICs3Miw3IEBAIFJFQ1VSU0lWRSAgICAgICAgICAgICAgPSBZRVMKLSBFWENMVURFICAgICAgICAgICAgICAgID0gCi0gRVhDTFVERV9TWU1MSU5LUyAgICAgICA9IE5PCi0gRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICovLmdpdC8qIC4qLmQKLS1FWENMVURFX1NZTUJPTFMgICAgICAgID0gRVhQT1JUX1NZTUJPTAotK0VYQ0xVREVfU1lNQk9MUyAgICAgICAgPQotIEVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAKLSBFWEFNUExFX1BBVFRFUk5TICAgICAgID0gCi0gRVhBTVBMRV9SRUNVUlNJVkUgICAgICA9IE5PCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy5oIGIvaW5jbHVkZS91dGlscy5oCi1pbmRleCAyZjVjZjM0Li5mZjgyMDdlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS91dGlscy5oCi0rKysgYi9pbmNsdWRlL3V0aWxzLmgKLUBAIC05LDEwICs5LDkgQEAKLSAKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0gI2lmZGVmIEhBVkVfVklTSUJJTElUWV9ISURERU4KLS0jCWRlZmluZSBfX3Zpc2libGUJX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLS0jCWRlZmluZSBFWFBPUlRfU1lNQk9MKHgpCXR5cGVvZih4KSAoeCkgX192aXNpYmxlOwotKyMJZGVmaW5lIF9fRVhQT1JURUQJX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSAjZWxzZQotLSMJZGVmaW5lIEVYUE9SVF9TWU1CT0wKLSsjCWRlZmluZSBfX0VYUE9SVAotICNlbmRpZgotIAotICNkZWZpbmUgX19ub3JldHVybglfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQotZGlmZiAtLWdpdCBhL3NyYy9iYXRjaC5jIGIvc3JjL2JhdGNoLmMKLWluZGV4IDVlZTNmZDcuLjNiZWRkMjYgMTAwNjQ0Ci0tLS0gYS9zcmMvYmF0Y2guYwotKysrIGIvc3JjL2JhdGNoLmMKLUBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIG5mdG5sX2JhdGNoX2FkZF9wYWdlKHN0cnVjdCBuZnRubF9iYXRjaF9wYWdlICpwYWdlLAotIAlsaXN0X2FkZF90YWlsKCZwYWdlLT5oZWFkLCAmYmF0Y2gtPnBhZ2VfbGlzdCk7Ci0gfQotIAotLXN0cnVjdCBuZnRubF9iYXRjaCAqbmZ0bmxfYmF0Y2hfYWxsb2ModWludDMyX3QgcGdfc2l6ZSwgdWludDMyX3QgcGdfb3ZlcnJ1bl9zaXplKQotK3N0cnVjdCBuZnRubF9iYXRjaCBfX0VYUE9SVEVEICpuZnRubF9iYXRjaF9hbGxvYyh1aW50MzJfdCBwZ19zaXplLCB1aW50MzJfdCBwZ19vdmVycnVuX3NpemUpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfYmF0Y2ggKmJhdGNoOwotIAlzdHJ1Y3QgbmZ0bmxfYmF0Y2hfcGFnZSAqcGFnZTsKLUBAIC04MCw5ICs4MCw4IEBAIGVycjE6Ci0gCWZyZWUoYmF0Y2gpOwotIAlyZXR1cm4gTlVMTDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9iYXRjaF9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9iYXRjaF9mcmVlKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2JhdGNoX2ZyZWUoc3RydWN0IG5mdG5sX2JhdGNoICpiYXRjaCkKLSB7Ci0gCXN0cnVjdCBuZnRubF9iYXRjaF9wYWdlICpwYWdlLCAqbmV4dDsKLSAKLUBAIC05NCw5ICs5Myw4IEBAIHZvaWQgbmZ0bmxfYmF0Y2hfZnJlZShzdHJ1Y3QgbmZ0bmxfYmF0Y2ggKmJhdGNoKQotIAotIAlmcmVlKGJhdGNoKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9iYXRjaF9mcmVlKTsKLSAKLS1pbnQgbmZ0bmxfYmF0Y2hfdXBkYXRlKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfYmF0Y2hfdXBkYXRlKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfYmF0Y2hfcGFnZSAqcGFnZTsKLSAJc3RydWN0IG5sbXNnaGRyICpsYXN0X25saDsKLUBAIC0xMTksMjEgKzExNywxOCBAQCBpbnQgbmZ0bmxfYmF0Y2hfdXBkYXRlKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0gZXJyMToKLSAJcmV0dXJuIC0xOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2JhdGNoX3VwZGF0ZSk7Ci0gCi0tdm9pZCAqbmZ0bmxfYmF0Y2hfYnVmZmVyKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0rdm9pZCBfX0VYUE9SVEVEICpuZnRubF9iYXRjaF9idWZmZXIoc3RydWN0IG5mdG5sX2JhdGNoICpiYXRjaCkKLSB7Ci0gCXJldHVybiBtbmxfbmxtc2dfYmF0Y2hfY3VycmVudChiYXRjaC0+Y3VycmVudF9wYWdlLT5iYXRjaCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfYmF0Y2hfYnVmZmVyKTsKLSAKLS11aW50MzJfdCBuZnRubF9iYXRjaF9idWZmZXJfbGVuKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF9iYXRjaF9idWZmZXJfbGVuKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0gewotIAlyZXR1cm4gbW5sX25sbXNnX2JhdGNoX3NpemUoYmF0Y2gtPmN1cnJlbnRfcGFnZS0+YmF0Y2gpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2JhdGNoX2J1ZmZlcl9sZW4pOwotIAotLWludCBuZnRubF9iYXRjaF9pb3ZlY19sZW4oc3RydWN0IG5mdG5sX2JhdGNoICpiYXRjaCkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9iYXRjaF9pb3ZlY19sZW4oc3RydWN0IG5mdG5sX2JhdGNoICpiYXRjaCkKLSB7Ci0gCWludCBudW1fcGFnZXMgPSBiYXRjaC0+bnVtX3BhZ2VzOwotIAotQEAgLTE0Myw5ICsxMzgsOCBAQCBpbnQgbmZ0bmxfYmF0Y2hfaW92ZWNfbGVuKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gpCi0gCi0gCXJldHVybiBudW1fcGFnZXM7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfYmF0Y2hfaW92ZWNfbGVuKTsKLSAKLS12b2lkIG5mdG5sX2JhdGNoX2lvdmVjKHN0cnVjdCBuZnRubF9iYXRjaCAqYmF0Y2gsIHN0cnVjdCBpb3ZlYyAqaW92LAotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9iYXRjaF9pb3ZlYyhzdHJ1Y3QgbmZ0bmxfYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKLSAJCSAgICAgICB1aW50MzJfdCBpb3ZsZW4pCi0gewotIAlzdHJ1Y3QgbmZ0bmxfYmF0Y2hfcGFnZSAqcGFnZTsKLUBAIC0xNjAsNCArMTU0LDMgQEAgdm9pZCBuZnRubF9iYXRjaF9pb3ZlYyhzdHJ1Y3QgbmZ0bmxfYmF0Y2ggKmJhdGNoLCBzdHJ1Y3QgaW92ZWMgKmlvdiwKLSAJCWkrKzsKLSAJfQotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2JhdGNoX2lvdmVjKTsKLWRpZmYgLS1naXQgYS9zcmMvY2hhaW4uYyBiL3NyYy9jaGFpbi5jCi1pbmRleCAyOTg2MGM1Li4zNjJmYTBkIDEwMDY0NAotLS0tIGEvc3JjL2NoYWluLmMKLSsrKyBiL3NyYy9jaGFpbi5jCi1AQCAtODcsMTMgKzg3LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpuZnRubF9ob29rbnVtMnN0cihpbnQgZmFtaWx5LCBpbnQgaG9va251bSkKLSAJcmV0dXJuICJ1bmtub3duIjsKLSB9Ci0gCi0tc3RydWN0IG5mdG5sX2NoYWluICpuZnRubF9jaGFpbl9hbGxvYyh2b2lkKQotK3N0cnVjdCBuZnRubF9jaGFpbiBfX0VYUE9SVEVEICpuZnRubF9jaGFpbl9hbGxvYyh2b2lkKQotIHsKLSAJcmV0dXJuIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IG5mdG5sX2NoYWluKSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfY2hhaW5fZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjKQotIHsKLSAJaWYgKGMtPmZsYWdzICYgKDEgPDwgTkZUTkxfQ0hBSU5fTkFNRSkpCi0gCQl4ZnJlZShjLT5uYW1lKTsKLUBAIC0xMDUsMTUgKzEwNCwxMyBAQCB2b2lkIG5mdG5sX2NoYWluX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjKQotIAkJeGZyZWUoYy0+ZGV2KTsKLSAJeGZyZWUoYyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fZnJlZSk7Ci0gCi0tYm9vbCBuZnRubF9jaGFpbl9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotK2Jvb2wgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIGMtPmZsYWdzICYgKDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5faXNfc2V0KTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3Vuc2V0KHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0cikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fdW5zZXQoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJaWYgKCEoYy0+ZmxhZ3MgJiAoMSA8PCBhdHRyKSkpCi0gCQlyZXR1cm47Ci1AQCAtMTQ3LDcgKzE0NCw2IEBAIHZvaWQgbmZ0bmxfY2hhaW5fdW5zZXQoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIAotIAljLT5mbGFncyAmPSB+KDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fdW5zZXQpOwotIAotIHN0YXRpYyB1aW50MzJfdCBuZnRubF9jaGFpbl92YWxpZGF0ZVtORlROTF9DSEFJTl9NQVggKyAxXSA9IHsKLSAJW05GVE5MX0NIQUlOX0hPT0tOVU1dCT0gc2l6ZW9mKHVpbnQzMl90KSwKLUBAIC0xNTksNyArMTU1LDcgQEAgc3RhdGljIHVpbnQzMl90IG5mdG5sX2NoYWluX3ZhbGlkYXRlW05GVE5MX0NIQUlOX01BWCArIDFdID0gewotIAlbTkZUTkxfQ0hBSU5fRkFNSUxZXQkJPSBzaXplb2YodWludDMyX3QpLAotIH07Ci0gCi0taW50IG5mdG5sX2NoYWluX3NldF9kYXRhKHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsCi0gCQkJIGNvbnN0IHZvaWQgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKQotIHsKLSAJbmZ0bmxfYXNzZXJ0X2F0dHJfZXhpc3RzKGF0dHIsIE5GVE5MX0NIQUlOX01BWCk7Ci1AQCAtMjI2LDQ1ICsyMjIsMzggQEAgaW50IG5mdG5sX2NoYWluX3NldF9kYXRhKHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwKLSAJYy0+ZmxhZ3MgfD0gKDEgPDwgYXR0cik7Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX3NldF9kYXRhKTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3NldChzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IHZvaWQgKmRhdGEpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX3NldChzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IHZvaWQgKmRhdGEpCi0gewotIAluZnRubF9jaGFpbl9zZXRfZGF0YShjLCBhdHRyLCBkYXRhLCBuZnRubF9jaGFpbl92YWxpZGF0ZVthdHRyXSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fc2V0KTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3NldF91MzIoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCBkYXRhKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9zZXRfdTMyKHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwgdWludDMyX3QgZGF0YSkKLSB7Ci0gCW5mdG5sX2NoYWluX3NldF9kYXRhKGMsIGF0dHIsICZkYXRhLCBzaXplb2YodWludDMyX3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9zZXRfdTMyKTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3NldF9zMzIoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyLCBpbnQzMl90IGRhdGEpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX3NldF9zMzIoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyLCBpbnQzMl90IGRhdGEpCi0gewotIAluZnRubF9jaGFpbl9zZXRfZGF0YShjLCBhdHRyLCAmZGF0YSwgc2l6ZW9mKGludDMyX3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9zZXRfczMyKTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3NldF91NjQoc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyLCB1aW50NjRfdCBkYXRhKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9zZXRfdTY0KHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwgdWludDY0X3QgZGF0YSkKLSB7Ci0gCW5mdG5sX2NoYWluX3NldF9kYXRhKGMsIGF0dHIsICZkYXRhLCBzaXplb2YodWludDY0X3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9zZXRfdTY0KTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX3NldF91OChzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsIHVpbnQ4X3QgZGF0YSkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fc2V0X3U4KHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwgdWludDhfdCBkYXRhKQotIHsKLSAJbmZ0bmxfY2hhaW5fc2V0X2RhdGEoYywgYXR0ciwgJmRhdGEsIHNpemVvZih1aW50OF90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fc2V0X3U4KTsKLSAKLS1pbnQgbmZ0bmxfY2hhaW5fc2V0X3N0cihzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IGNoYXIgKnN0cikKLStpbnQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9zZXRfc3RyKHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0ciwgY29uc3QgY2hhciAqc3RyKQotIHsKLSAJcmV0dXJuIG5mdG5sX2NoYWluX3NldF9kYXRhKGMsIGF0dHIsIHN0ciwgc3RybGVuKHN0cikgKyAxKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9zZXRfc3RyKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9jaGFpbl9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9jaGFpbl9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsCi0gCQkJCSB1aW50MzJfdCAqZGF0YV9sZW4pCi0gewotIAlpZiAoIShjLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLUBAIC0zMTAsMjIgKzI5OSwxOSBAQCBjb25zdCB2b2lkICpuZnRubF9jaGFpbl9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIsCi0gCX0KLSAJcmV0dXJuIE5VTEw7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fZ2V0X2RhdGEpOwotIAotLWNvbnN0IHZvaWQgKm5mdG5sX2NoYWluX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9jaGFpbl9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci0gCXJldHVybiBuZnRubF9jaGFpbl9nZXRfZGF0YShjLCBhdHRyLCAmZGF0YV9sZW4pOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX2dldCk7Ci0gCi0tY29uc3QgY2hhciAqbmZ0bmxfY2hhaW5fZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0rY29uc3QgY2hhciBfX0VYUE9SVEVEICpuZnRubF9jaGFpbl9nZXRfc3RyKGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiBuZnRubF9jaGFpbl9nZXQoYywgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fZ2V0X3N0cik7Ci0gCi0tdWludDMyX3QgbmZ0bmxfY2hhaW5fZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9nZXRfdTMyKGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAljb25zdCB1aW50MzJfdCAqdmFsID0gbmZ0bmxfY2hhaW5fZ2V0X2RhdGEoYywgYXR0ciwgJmRhdGFfbGVuKTsKLUBAIC0zMzQsOSArMzIwLDggQEAgdWludDMyX3QgbmZ0bmxfY2hhaW5fZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXJldHVybiB2YWwgPyAqdmFsIDogMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9nZXRfdTMyKTsKLSAKLS1pbnQzMl90IG5mdG5sX2NoYWluX2dldF9zMzIoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotK2ludDMyX3QgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9nZXRfczMyKGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAljb25zdCBpbnQzMl90ICp2YWwgPSBuZnRubF9jaGFpbl9nZXRfZGF0YShjLCBhdHRyLCAmZGF0YV9sZW4pOwotQEAgLTM0NSw5ICszMzAsOCBAQCBpbnQzMl90IG5mdG5sX2NoYWluX2dldF9zMzIoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIAotIAlyZXR1cm4gdmFsID8gKnZhbCA6IDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fZ2V0X3MzMik7Ci0gCi0tdWludDY0X3QgbmZ0bmxfY2hhaW5fZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0rdWludDY0X3QgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9nZXRfdTY0KGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAljb25zdCB1aW50NjRfdCAqdmFsID0gbmZ0bmxfY2hhaW5fZ2V0X2RhdGEoYywgYXR0ciwgJmRhdGFfbGVuKTsKLUBAIC0zNTYsOSArMzQwLDggQEAgdWludDY0X3QgbmZ0bmxfY2hhaW5fZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXJldHVybiB2YWwgPyAqdmFsIDogMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9nZXRfdTY0KTsKLSAKLS11aW50OF90IG5mdG5sX2NoYWluX2dldF91OChjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0rdWludDhfdCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX2dldF91OChjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQxNl90IGF0dHIpCi0gewotIAl1aW50MzJfdCBkYXRhX2xlbjsKLSAJY29uc3QgdWludDhfdCAqdmFsID0gbmZ0bmxfY2hhaW5fZ2V0X2RhdGEoYywgYXR0ciwgJmRhdGFfbGVuKTsKLUBAIC0zNjcsOSArMzUwLDggQEAgdWludDhfdCBuZnRubF9jaGFpbl9nZXRfdTgoY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MTZfdCBhdHRyKQotIAotIAlyZXR1cm4gdmFsID8gKnZhbCA6IDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fZ2V0X3U4KTsKLSAKLS12b2lkIG5mdG5sX2NoYWluX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsIGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYykKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjKQotIHsKLSAJaWYgKGMtPmZsYWdzICYgKDEgPDwgTkZUTkxfQ0hBSU5fVEFCTEUpKQotIAkJbW5sX2F0dHJfcHV0X3N0cnoobmxoLCBORlRBX0NIQUlOX1RBQkxFLCBjLT50YWJsZSk7Ci1AQCAtNDA0LDcgKzM4Niw2IEBAIHZvaWQgbmZ0bmxfY2hhaW5fbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgY29uc3Qgc3RydWN0IG5mdG5sX2NoCi0gCWlmIChjLT5mbGFncyAmICgxIDw8IE5GVE5MX0NIQUlOX1RZUEUpKQotIAkJbW5sX2F0dHJfcHV0X3N0cnoobmxoLCBORlRBX0NIQUlOX1RZUEUsIGMtPnR5cGUpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX25sbXNnX2J1aWxkX3BheWxvYWQpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfY2hhaW5fcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIHsKLUBAIC01MjksNyArNTEwLDcgQEAgc3RhdGljIGludCBuZnRubF9jaGFpbl9wYXJzZV9ob29rKHN0cnVjdCBubGF0dHIgKmF0dHIsIHN0cnVjdCBuZnRubF9jaGFpbiAqYykKLSAJcmV0dXJuIDA7Ci0gfQotIAotLWludCBuZnRubF9jaGFpbl9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX2NoYWluICpjKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMpCi0gewotIAlzdHJ1Y3QgbmxhdHRyICp0YltORlRBX0NIQUlOX01BWCsxXSA9IHt9OwotIAlzdHJ1Y3QgbmZnZW5tc2cgKm5mZyA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChubGgpOwotQEAgLTU5MCw3ICs1NzEsNiBAQCBpbnQgbmZ0bmxfY2hhaW5fbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9jaGFpbiAqYykKLSAKLSAJcmV0dXJuIHJldDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9ubG1zZ19wYXJzZSk7Ci0gCi0gc3RhdGljIGlubGluZSBpbnQgbmZ0bmxfc3RyMmhvb2tudW0oaW50IGZhbWlseSwgY29uc3QgY2hhciAqaG9vaykKLSB7Ci1AQCAtNzMyLDE5ICs3MTIsMTcgQEAgc3RhdGljIGludCBuZnRubF9jaGFpbl9kb19wYXJzZShzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXAKLSAJcmV0dXJuIHJldDsKLSB9Ci0gCi0taW50IG5mdG5sX2NoYWluX3BhcnNlKHN0cnVjdCBuZnRubF9jaGFpbiAqYywgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fcGFyc2Uoc3RydWN0IG5mdG5sX2NoYWluICpjLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLSAJCSAgICBjb25zdCBjaGFyICpkYXRhLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gewotIAlyZXR1cm4gbmZ0bmxfY2hhaW5fZG9fcGFyc2UoYywgdHlwZSwgZGF0YSwgZXJyLCBORlROTF9QQVJTRV9CVUZGRVIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX3BhcnNlKTsKLSAKLS1pbnQgbmZ0bmxfY2hhaW5fcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX2NoYWluICpjLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLSAJCQkgRklMRSAqZnAsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF9jaGFpbl9kb19wYXJzZShjLCB0eXBlLCBmcCwgZXJyLCBORlROTF9QQVJTRV9GSUxFKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9wYXJzZV9maWxlKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX2NoYWluX2V4cG9ydChjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywgaW50IHR5cGUpCi1AQCAtODQxLDEzICs4MTksMTIgQEAgc3RhdGljIGludCBuZnRubF9jaGFpbl9jbWRfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJcmV0dXJuIG9mZnNldDsKLSB9Ci0gCi0taW50IG5mdG5sX2NoYWluX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbiAqYywKLStpbnQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsCi0gCQkJIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQotIHsKLSAJcmV0dXJuIG5mdG5sX2NoYWluX2NtZF9zbnByaW50ZihidWYsIHNpemUsIGMsIG5mdG5sX2ZsYWcyY21kKGZsYWdzKSwgdHlwZSwKLSAJCQkJICAgICAgZmxhZ3MpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX3NucHJpbnRmKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX2NoYWluX2RvX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKmMsCi0gCQkJCSAgIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi1AQCAtODU1LDE5ICs4MzIsMTggQEAgc3RhdGljIGludCBuZnRubF9jaGFpbl9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpjLAotIAlyZXR1cm4gbmZ0bmxfY2hhaW5fc25wcmludGYoYnVmLCBzaXplLCBjLCB0eXBlLCBmbGFncyk7Ci0gfQotIAotLWludCBuZnRubF9jaGFpbl9mcHJpbnRmKEZJTEUgKmZwLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW4gKmMsIHVpbnQzMl90IHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fZnByaW50ZihGSUxFICpmcCwgY29uc3Qgc3RydWN0IG5mdG5sX2NoYWluICpjLCB1aW50MzJfdCB0eXBlLAotIAkJCXVpbnQzMl90IGZsYWdzKQotIHsKLSAJcmV0dXJuIG5mdG5sX2ZwcmludGYoZnAsIGMsIE5GVE5MX0NNRF9VTlNQRUMsIHR5cGUsIGZsYWdzLAotIAkJCSAgIG5mdG5sX2NoYWluX2RvX3NucHJpbnRmKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9mcHJpbnRmKTsKLSAKLSBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCB7Ci0gCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLSB9OwotIAotLXN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpuZnRubF9jaGFpbl9saXN0X2FsbG9jKHZvaWQpCi0rc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgX19FWFBPUlRFRCAqbmZ0bmxfY2hhaW5fbGlzdF9hbGxvYyh2b2lkKQotIHsKLSAJc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgKmxpc3Q7Ci0gCi1AQCAtODc5LDkgKzg1NSw4IEBAIHN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpuZnRubF9jaGFpbl9saXN0X2FsbG9jKHZvaWQpCi0gCi0gCXJldHVybiBsaXN0OwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX2xpc3RfYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfY2hhaW5fbGlzdF9mcmVlKHN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpsaXN0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9saXN0X2ZyZWUoc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgKmxpc3QpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfY2hhaW4gKnIsICp0bXA7Ci0gCi1AQCAtODkxLDMzICs4NjYsMjggQEAgdm9pZCBuZnRubF9jaGFpbl9saXN0X2ZyZWUoc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgKmxpc3QpCi0gCX0KLSAJeGZyZWUobGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fbGlzdF9mcmVlKTsKLSAKLS1pbnQgbmZ0bmxfY2hhaW5fbGlzdF9pc19lbXB0eShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqbGlzdCkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9saXN0X2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpsaXN0KQotIHsKLSAJcmV0dXJuIGxpc3RfZW1wdHkoJmxpc3QtPmxpc3QpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX2xpc3RfaXNfZW1wdHkpOwotIAotLXZvaWQgbmZ0bmxfY2hhaW5fbGlzdF9hZGQoc3RydWN0IG5mdG5sX2NoYWluICpyLCBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fbGlzdF9hZGQoc3RydWN0IG5mdG5sX2NoYWluICpyLCBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqbGlzdCkKLSB7Ci0gCWxpc3RfYWRkKCZyLT5oZWFkLCAmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fbGlzdF9hZGQpOwotIAotLXZvaWQgbmZ0bmxfY2hhaW5fbGlzdF9hZGRfdGFpbChzdHJ1Y3QgbmZ0bmxfY2hhaW4gKnIsIHN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpsaXN0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9jaGFpbiAqciwgc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgKmxpc3QpCi0gewotIAlsaXN0X2FkZF90YWlsKCZyLT5oZWFkLCAmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fbGlzdF9hZGRfdGFpbCk7Ci0gCi0tdm9pZCBuZnRubF9jaGFpbl9saXN0X2RlbChzdHJ1Y3QgbmZ0bmxfY2hhaW4gKnIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2NoYWluX2xpc3RfZGVsKHN0cnVjdCBuZnRubF9jaGFpbiAqcikKLSB7Ci0gCWxpc3RfZGVsKCZyLT5oZWFkKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9saXN0X2RlbCk7Ci0gCi0taW50IG5mdG5sX2NoYWluX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqY2hhaW5fbGlzdCwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9jaGFpbl9saXN0X2ZvcmVhY2goc3RydWN0IG5mdG5sX2NoYWluX2xpc3QgKmNoYWluX2xpc3QsCi0gCQkJICAgaW50ICgqY2IpKHN0cnVjdCBuZnRubF9jaGFpbiAqciwgdm9pZCAqZGF0YSksCi0gCQkJICAgdm9pZCAqZGF0YSkKLSB7Ci1AQCAtOTMxLDE0ICs5MDEsMTMgQEAgaW50IG5mdG5sX2NoYWluX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqY2hhaW5fbGlzdCwKLSAJfQotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9jaGFpbl9saXN0X2ZvcmVhY2gpOwotIAotIHN0cnVjdCBuZnRubF9jaGFpbl9saXN0X2l0ZXIgewotIAljb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdAkqbGlzdDsKLSAJc3RydWN0IG5mdG5sX2NoYWluCQkqY3VyOwotIH07Ci0gCi0tc3RydWN0IG5mdG5sX2NoYWluX2xpc3RfaXRlciAqCi0rc3RydWN0IG5mdG5sX2NoYWluX2xpc3RfaXRlciBfX0VYUE9SVEVEICoKLSBuZnRubF9jaGFpbl9saXN0X2l0ZXJfY3JlYXRlKGNvbnN0IHN0cnVjdCBuZnRubF9jaGFpbl9saXN0ICpsKQotIHsKLSAJc3RydWN0IG5mdG5sX2NoYWluX2xpc3RfaXRlciAqaXRlcjsKLUBAIC05NTUsOSArOTI0LDggQEAgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdCAqbCkKLSAKLSAJcmV0dXJuIGl0ZXI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fbGlzdF9pdGVyX2NyZWF0ZSk7Ci0gCi0tc3RydWN0IG5mdG5sX2NoYWluICpuZnRubF9jaGFpbl9saXN0X2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyICppdGVyKQotK3N0cnVjdCBuZnRubF9jaGFpbiBfX0VYUE9SVEVEICpuZnRubF9jaGFpbl9saXN0X2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX2NoYWluICpyID0gaXRlci0+Y3VyOwotIAotQEAgLTk3MSwxMCArOTM5LDggQEAgc3RydWN0IG5mdG5sX2NoYWluICpuZnRubF9jaGFpbl9saXN0X2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyICppdGUKLSAKLSAJcmV0dXJuIHI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfY2hhaW5fbGlzdF9pdGVyX25leHQpOwotIAotLXZvaWQgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyX2Rlc3Ryb3koc3RydWN0IG5mdG5sX2NoYWluX2xpc3RfaXRlciAqaXRlcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfY2hhaW5fbGlzdF9pdGVyX2Rlc3Ryb3koc3RydWN0IG5mdG5sX2NoYWluX2xpc3RfaXRlciAqaXRlcikKLSB7Ci0gCXhmcmVlKGl0ZXIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2NoYWluX2xpc3RfaXRlcl9kZXN0cm95KTsKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uLmMgYi9zcmMvY29tbW9uLmMKLWluZGV4IGE5NTg4M2MuLjY4YmNlMmUgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uLmMKLSsrKyBiL3NyYy9jb21tb24uYwotQEAgLTQzLDE1ICs0MywxNCBAQCBzdGF0aWMgc3RydWN0IG5sbXNnaGRyICpfX25mdG5sX25sbXNnX2J1aWxkX2hkcihjaGFyICpidWYsIHVpbnQxNl90IHR5cGUsCi0gCXJldHVybiBubGg7Ci0gfQotIAotLXN0cnVjdCBubG1zZ2hkciAqbmZ0bmxfbmxtc2dfYnVpbGRfaGRyKGNoYXIgKmJ1ZiwgdWludDE2X3QgdHlwZSwgdWludDE2X3QgZmFtaWx5LAotK3N0cnVjdCBubG1zZ2hkciBfX0VYUE9SVEVEICpuZnRubF9ubG1zZ19idWlsZF9oZHIoY2hhciAqYnVmLCB1aW50MTZfdCB0eXBlLCB1aW50MTZfdCBmYW1pbHksCi0gCQkJCSAgICAgICB1aW50MTZfdCBmbGFncywgdWludDMyX3Qgc2VxKQotIHsKLSAJcmV0dXJuIF9fbmZ0bmxfbmxtc2dfYnVpbGRfaGRyKGJ1ZiwgKE5GTkxfU1VCU1lTX05GVEFCTEVTIDw8IDgpIHwgdHlwZSwKLSAJCQkJICAgICAgIGZhbWlseSwgZmxhZ3MsIHNlcSwgMCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfbmxtc2dfYnVpbGRfaGRyKTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICpuZnRubF9wYXJzZV9lcnJfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyIF9fRVhQT1JURUQgKm5mdG5sX3BhcnNlX2Vycl9hbGxvYyh2b2lkKQotIHsKLSAJc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyOwotIAotQEAgLTYzLDE1ICs2MiwxMyBAQCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICpuZnRubF9wYXJzZV9lcnJfYWxsb2Modm9pZCkKLSAKLSAJcmV0dXJuIGVycjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9wYXJzZV9lcnJfYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfcGFyc2VfZXJyX2ZyZWUoc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9wYXJzZV9lcnJfZnJlZShzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gewotIAl4ZnJlZShlcnIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3BhcnNlX2Vycl9mcmVlKTsKLSAKLS1pbnQgbmZ0bmxfcGFyc2VfcGVycm9yKGNvbnN0IGNoYXIgKm1zZywgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3BhcnNlX3BlcnJvcihjb25zdCBjaGFyICptc2csIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXN3aXRjaCAoZXJyLT5lcnJvcikgewotIAljYXNlIE5GVE5MX1BBUlNFX0VCQURJTlBVVDoKLUBAIC04OSw3ICs4Niw2IEBAIGludCBuZnRubF9wYXJzZV9wZXJyb3IoY29uc3QgY2hhciAqbXNnLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gCQlyZXR1cm4gZnByaW50ZihzdGRlcnIsICIlczogVW5kZWZpbmVkIGVycm9yXG4iLCBtc2cpOwotIAl9Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcGFyc2VfcGVycm9yKTsKLSAKLSBpbnQgbmZ0bmxfY21kX2hlYWRlcl9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCB1aW50MzJfdCBjbWQsIHVpbnQzMl90IHR5cGUsCi0gCQkJICAgIHVpbnQzMl90IGZsYWdzKQotQEAgLTE2NSwyMSArMTYxLDE5IEBAIGludCBuZnRubF9jbWRfZm9vdGVyX2ZwcmludGYoRklMRSAqZnAsIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdHlwZSwKLSAJCQkgICBuZnRubF9jbWRfZm9vdGVyX2ZwcmludGZfY2IpOwotIH0KLSAKLS1zdHJ1Y3Qgbmxtc2doZHIgKm5mdG5sX2JhdGNoX2JlZ2luKGNoYXIgKmJ1ZiwgdWludDMyX3Qgc2VxKQotK3N0cnVjdCBubG1zZ2hkciBfX0VYUE9SVEVEICpuZnRubF9iYXRjaF9iZWdpbihjaGFyICpidWYsIHVpbnQzMl90IHNlcSkKLSB7Ci0gCXJldHVybiBfX25mdG5sX25sbXNnX2J1aWxkX2hkcihidWYsIE5GTkxfTVNHX0JBVENIX0JFR0lOLCBBRl9VTlNQRUMsCi0gCQkJCSAgICAgICAwLCBzZXEsIE5GTkxfU1VCU1lTX05GVEFCTEVTKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9iYXRjaF9iZWdpbik7Ci0gCi0tc3RydWN0IG5sbXNnaGRyICpuZnRubF9iYXRjaF9lbmQoY2hhciAqYnVmLCB1aW50MzJfdCBzZXEpCi0rc3RydWN0IG5sbXNnaGRyIF9fRVhQT1JURUQgKm5mdG5sX2JhdGNoX2VuZChjaGFyICpidWYsIHVpbnQzMl90IHNlcSkKLSB7Ci0gCXJldHVybiBfX25mdG5sX25sbXNnX2J1aWxkX2hkcihidWYsIE5GTkxfTVNHX0JBVENIX0VORCwgQUZfVU5TUEVDLAotIAkJCQkgICAgICAgMCwgc2VxLCBORk5MX1NVQlNZU19ORlRBQkxFUyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfYmF0Y2hfZW5kKTsKLSAKLS1pbnQgbmZ0bmxfYmF0Y2hfaXNfc3VwcG9ydGVkKHZvaWQpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfYmF0Y2hfaXNfc3VwcG9ydGVkKHZvaWQpCi0gewotIAlzdHJ1Y3QgbW5sX3NvY2tldCAqbmw7Ci0gCXN0cnVjdCBtbmxfbmxtc2dfYmF0Y2ggKmI7Ci1AQCAtMjM2LDQgKzIzMCwzIEBAIGVycjoKLSAJbW5sX25sbXNnX2JhdGNoX3N0b3AoYik7Ci0gCXJldHVybiAtMTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9iYXRjaF9pc19zdXBwb3J0ZWQpOwotZGlmZiAtLWdpdCBhL3NyYy9leHByLmMgYi9zcmMvZXhwci5jCi1pbmRleCAxMGJhMmM0Li5jN2ViMmI0IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIuYwotKysrIGIvc3JjL2V4cHIuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAKLSAjaW5jbHVkZSA8bGlibmZ0bmwvZXhwci5oPgotIAotLXN0cnVjdCBuZnRubF9leHByICpuZnRubF9leHByX2FsbG9jKGNvbnN0IGNoYXIgKm5hbWUpCi0rc3RydWN0IG5mdG5sX2V4cHIgX19FWFBPUlRFRCAqbmZ0bmxfZXhwcl9hbGxvYyhjb25zdCBjaGFyICpuYW1lKQotIHsKLSAJc3RydWN0IG5mdG5sX2V4cHIgKmV4cHI7Ci0gCXN0cnVjdCBleHByX29wcyAqb3BzOwotQEAgLTQzLDI0ICs0MywyMSBAQCBzdHJ1Y3QgbmZ0bmxfZXhwciAqbmZ0bmxfZXhwcl9hbGxvYyhjb25zdCBjaGFyICpuYW1lKQotIAotIAlyZXR1cm4gZXhwcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2FsbG9jKTsKLSAKLS12b2lkIG5mdG5sX2V4cHJfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfZXhwcl9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByKQotIHsKLSAJaWYgKGV4cHItPm9wcy0+ZnJlZSkKLSAJCWV4cHItPm9wcy0+ZnJlZShleHByKTsKLSAKLSAJeGZyZWUoZXhwcik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZXhwcl9mcmVlKTsKLSAKLS1ib29sIG5mdG5sX2V4cHJfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotK2Jvb2wgX19FWFBPUlRFRCBuZnRubF9leHByX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLSB7Ci0gCXJldHVybiBleHByLT5mbGFncyAmICgxIDw8IHR5cGUpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfaXNfc2V0KTsKLSAKLS1pbnQgbmZ0bmxfZXhwcl9zZXQoc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfZXhwcl9zZXQoc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUsCi0gCQkgICBjb25zdCB2b2lkICpkYXRhLCB1aW50MzJfdCBkYXRhX2xlbikKLSB7Ci0gCXN3aXRjaCh0eXBlKSB7Ci1AQCAtNzMsNDMgKzcwLDM3IEBAIGludCBuZnRubF9leHByX3NldChzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSwKLSAJZXhwci0+ZmxhZ3MgfD0gKDEgPDwgdHlwZSk7Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfc2V0KTsKLSAKLS12b2lkCi0rdm9pZCBfX0VYUE9SVEVECi0gbmZ0bmxfZXhwcl9zZXRfdTgoc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUsIHVpbnQ4X3QgZGF0YSkKLSB7Ci0gCW5mdG5sX2V4cHJfc2V0KGV4cHIsIHR5cGUsICZkYXRhLCBzaXplb2YodWludDhfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfc2V0X3U4KTsKLSAKLS12b2lkCi0rdm9pZCBfX0VYUE9SVEVECi0gbmZ0bmxfZXhwcl9zZXRfdTE2KHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlLCB1aW50MTZfdCBkYXRhKQotIHsKLSAJbmZ0bmxfZXhwcl9zZXQoZXhwciwgdHlwZSwgJmRhdGEsIHNpemVvZih1aW50MTZfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfc2V0X3UxNik7Ci0gCi0tdm9pZAotK3ZvaWQgX19FWFBPUlRFRAotIG5mdG5sX2V4cHJfc2V0X3UzMihzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSwgdWludDMyX3QgZGF0YSkKLSB7Ci0gCW5mdG5sX2V4cHJfc2V0KGV4cHIsIHR5cGUsICZkYXRhLCBzaXplb2YodWludDMyX3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX3NldF91MzIpOwotIAotLXZvaWQKLSt2b2lkIF9fRVhQT1JURUQKLSBuZnRubF9leHByX3NldF91NjQoc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUsIHVpbnQ2NF90IGRhdGEpCi0gewotIAluZnRubF9leHByX3NldChleHByLCB0eXBlLCAmZGF0YSwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZXhwcl9zZXRfdTY0KTsKLSAKLS1pbnQgbmZ0bmxfZXhwcl9zZXRfc3RyKHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlLCBjb25zdCBjaGFyICpzdHIpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfZXhwcl9zZXRfc3RyKHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlLCBjb25zdCBjaGFyICpzdHIpCi0gewotIAlyZXR1cm4gbmZ0bmxfZXhwcl9zZXQoZXhwciwgdHlwZSwgc3RyLCBzdHJsZW4oc3RyKSArIDEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfc2V0X3N0cik7Ci0gCi0tY29uc3Qgdm9pZCAqbmZ0bmxfZXhwcl9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9leHByX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwKLSAJCQkgICAgICB1aW50MTZfdCB0eXBlLCB1aW50MzJfdCAqZGF0YV9sZW4pCi0gewotIAljb25zdCB2b2lkICpyZXQ7Ci1AQCAtMTI5LDkgKzEyMCw4IEBAIGNvbnN0IHZvaWQgKm5mdG5sX2V4cHJfZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLAotIAotIAlyZXR1cm4gcmV0OwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfZ2V0KTsKLSAKLS11aW50OF90IG5mdG5sX2V4cHJfZ2V0X3U4KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotK3VpbnQ4X3QgX19FWFBPUlRFRCBuZnRubF9leHByX2dldF91OChjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLSB7Ci0gCWNvbnN0IHZvaWQgKmRhdGE7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotQEAgLTE0NSw5ICsxMzUsOCBAQCB1aW50OF90IG5mdG5sX2V4cHJfZ2V0X3U4KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotIAotIAlyZXR1cm4gKigodWludDhfdCAqKWRhdGEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfZ2V0X3U4KTsKLSAKLS11aW50MTZfdCBuZnRubF9leHByX2dldF91MTYoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUpCi0rdWludDE2X3QgX19FWFBPUlRFRCBuZnRubF9leHByX2dldF91MTYoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUpCi0gewotIAljb25zdCB2b2lkICpkYXRhOwotIAl1aW50MzJfdCBkYXRhX2xlbjsKLUBAIC0xNjEsOSArMTUwLDggQEAgdWludDE2X3QgbmZ0bmxfZXhwcl9nZXRfdTE2KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotIAotIAlyZXR1cm4gKigodWludDE2X3QgKilkYXRhKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2dldF91MTYpOwotIAotLXVpbnQzMl90IG5mdG5sX2V4cHJfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLSt1aW50MzJfdCBfX0VYUE9SVEVEIG5mdG5sX2V4cHJfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLSB7Ci0gCWNvbnN0IHZvaWQgKmRhdGE7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotQEAgLTE3Nyw5ICsxNjUsOCBAQCB1aW50MzJfdCBuZnRubF9leHByX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsIHVpbnQxNl90IHR5cGUpCi0gCi0gCXJldHVybiAqKCh1aW50MzJfdCAqKWRhdGEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfZ2V0X3UzMik7Ci0gCi0tdWludDY0X3QgbmZ0bmxfZXhwcl9nZXRfdTY0KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotK3VpbnQ2NF90IF9fRVhQT1JURUQgbmZ0bmxfZXhwcl9nZXRfdTY0KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotIHsKLSAJY29uc3Qgdm9pZCAqZGF0YTsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci1AQCAtMTkzLDE3ICsxODAsMTUgQEAgdWludDY0X3QgbmZ0bmxfZXhwcl9nZXRfdTY0KGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLCB1aW50MTZfdCB0eXBlKQotIAotIAlyZXR1cm4gKigodWludDY0X3QgKilkYXRhKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2dldF91NjQpOwotIAotLWNvbnN0IGNoYXIgKm5mdG5sX2V4cHJfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLStjb25zdCBjaGFyIF9fRVhQT1JURUQgKm5mdG5sX2V4cHJfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwgdWludDE2X3QgdHlwZSkKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAotIAlyZXR1cm4gKGNvbnN0IGNoYXIgKiluZnRubF9leHByX2dldChleHByLCB0eXBlLCAmZGF0YV9sZW4pOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfZ2V0X3N0cik7Ci0gCi0tYm9vbCBuZnRubF9leHByX2NtcChjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZTEsIGNvbnN0IHN0cnVjdCBuZnRubF9leHByICplMikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfZXhwcl9jbXAoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUxLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZTIpCi0gewotIAlpZiAoZTEtPmZsYWdzICE9IGUyLT5mbGFncyB8fAotIAkgICAgc3RyY21wKGUxLT5vcHMtPm5hbWUsIGUyLT5vcHMtPm5hbWUpICE9IDApCi1AQCAtMjExLDcgKzE5Niw2IEBAIGJvb2wgbmZ0bmxfZXhwcl9jbXAoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUxLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZTIpCi0gCi0gCXJldHVybiBlMS0+b3BzLT5jbXAoZTEsIGUyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2NtcCk7Ci0gCi0gdm9pZCBuZnRubF9leHByX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9leHByICpleHByKQotIHsKLUBAIC0yNzUsNyArMjU5LDcgQEAgZXJyMToKLSAJcmV0dXJuIE5VTEw7Ci0gfQotIAotLWludCBuZnRubF9leHByX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF9leHByICpleHByLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2V4cHJfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIsCi0gCQkJdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi0gewotIAlpbnQgcmV0OwotQEAgLTI4OSw0ICsyNzMsMyBAQCBpbnQgbmZ0bmxfZXhwcl9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwKLSAKLSAJcmV0dXJuIG9mZnNldDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX3NucHJpbnRmKTsKLWRpZmYgLS1naXQgYS9zcmMvZ2VuLmMgYi9zcmMvZ2VuLmMKLWluZGV4IDIxMzU2MmUuLjhiNDVjYWEgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2VuLmMKLSsrKyBiL3NyYy9nZW4uYwotQEAgLTI5LDI1ICsyOSwyMiBAQCBzdHJ1Y3QgbmZ0bmxfZ2VuIHsKLSAJdWludDMyX3QgZmxhZ3M7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfZ2VuICpuZnRubF9nZW5fYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfZ2VuIF9fRVhQT1JURUQgKm5mdG5sX2dlbl9hbGxvYyh2b2lkKQotIHsKLSAJcmV0dXJuIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IG5mdG5sX2dlbikpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2dlbl9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9nZW5fZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4pCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2dlbl9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF9nZW4gKmdlbikKLSB7Ci0gCXhmcmVlKGdlbik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZ2VuX2ZyZWUpOwotIAotLWJvb2wgbmZ0bmxfZ2VuX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0rYm9vbCBfX0VYUE9SVEVEIG5mdG5sX2dlbl9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX2dlbiAqZ2VuLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIGdlbi0+ZmxhZ3MgJiAoMSA8PCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9nZW5faXNfc2V0KTsKLSAKLS12b2lkIG5mdG5sX2dlbl91bnNldChzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2dlbl91bnNldChzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0gewotIAlpZiAoIShnZW4tPmZsYWdzICYgKDEgPDwgYXR0cikpKQotIAkJcmV0dXJuOwotQEAgLTU4LDEzICs1NSwxMiBAQCB2b2lkIG5mdG5sX2dlbl91bnNldChzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0gCX0KLSAJZ2VuLT5mbGFncyAmPSB+KDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZ2VuX3Vuc2V0KTsKLSAKLSBzdGF0aWMgdWludDMyX3QgbmZ0bmxfZ2VuX3ZhbGlkYXRlW05GVE5MX0dFTl9NQVggKyAxXSA9IHsKLSAJW05GVE5MX0dFTl9JRF0JPSBzaXplb2YodWludDMyX3QpLAotIH07Ci0gCi0taW50IG5mdG5sX2dlbl9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfZ2VuX3NldF9kYXRhKHN0cnVjdCBuZnRubF9nZW4gKmdlbiwgdWludDE2X3QgYXR0ciwKLSAJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCB1aW50MzJfdCBkYXRhX2xlbikKLSB7Ci0gCW5mdG5sX2Fzc2VydF9hdHRyX2V4aXN0cyhhdHRyLCBORlROTF9HRU5fTUFYKTsKLUBAIC03OCwyMSArNzQsMTggQEAgaW50IG5mdG5sX2dlbl9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIsCi0gCWdlbi0+ZmxhZ3MgfD0gKDEgPDwgYXR0cik7Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2dlbl9zZXRfZGF0YSk7Ci0gCi0taW50IG5mdG5sX2dlbl9zZXQoc3RydWN0IG5mdG5sX2dlbiAqZ2VuLCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2dlbl9zZXQoc3RydWN0IG5mdG5sX2dlbiAqZ2VuLCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhKQotIHsKLSAJcmV0dXJuIG5mdG5sX2dlbl9zZXRfZGF0YShnZW4sIGF0dHIsIGRhdGEsIG5mdG5sX2dlbl92YWxpZGF0ZVthdHRyXSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZ2VuX3NldCk7Ci0gCi0tdm9pZCBuZnRubF9nZW5fc2V0X3UzMihzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90IHZhbCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfZ2VuX3NldF91MzIoc3RydWN0IG5mdG5sX2dlbiAqZ2VuLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCB2YWwpCi0gewotIAluZnRubF9nZW5fc2V0X2RhdGEoZ2VuLCBhdHRyLCAmdmFsLCBzaXplb2YodWludDMyX3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9nZW5fc2V0X3UzMik7Ci0gCi0tY29uc3Qgdm9pZCAqbmZ0bmxfZ2VuX2dldF9kYXRhKGNvbnN0IHN0cnVjdCBuZnRubF9nZW4gKmdlbiwgdWludDE2X3QgYXR0ciwKLStjb25zdCB2b2lkIF9fRVhQT1JURUQgKm5mdG5sX2dlbl9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIsCi0gCQkJICAgICAgIHVpbnQzMl90ICpkYXRhX2xlbikKLSB7Ci0gCWlmICghKGdlbi0+ZmxhZ3MgJiAoMSA8PCBhdHRyKSkpCi1AQCAtMTA1LDIxICs5OCwxOCBAQCBjb25zdCB2b2lkICpuZnRubF9nZW5fZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX2dlbiAqZ2VuLCB1aW50MTZfdCBhdHRyLAotIAl9Ci0gCXJldHVybiBOVUxMOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2dlbl9nZXRfZGF0YSk7Ci0gCi0tY29uc3Qgdm9pZCAqbmZ0bmxfZ2VuX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9nZW5fZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF9nZW4gKmdlbiwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAlyZXR1cm4gbmZ0bmxfZ2VuX2dldF9kYXRhKGdlbiwgYXR0ciwgJmRhdGFfbGVuKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9nZW5fZ2V0KTsKLSAKLS11aW50MzJfdCBuZnRubF9nZW5fZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF9nZW5fZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQxNl90IGF0dHIpCi0gewotIAljb25zdCB2b2lkICpyZXQgPSBuZnRubF9nZW5fZ2V0KGdlbiwgYXR0cik7Ci0gCXJldHVybiByZXQgPT0gTlVMTCA/IDAgOiAqKCh1aW50MzJfdCAqKXJldCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfZ2VuX2dldF91MzIpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfZ2VuX3BhcnNlX2F0dHJfY2IoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgdm9pZCAqZGF0YSkKLSB7Ci1AQCAtMTQwLDcgKzEzMCw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfZ2VuX3BhcnNlX2F0dHJfY2IoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgdm9pZCAqZGF0YSkKLSAJcmV0dXJuIE1OTF9DQl9PSzsKLSB9Ci0gCi0taW50IG5mdG5sX2dlbl9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX2dlbiAqZ2VuKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2dlbl9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX2dlbiAqZ2VuKQotIHsKLSAJc3RydWN0IG5sYXR0ciAqdGJbTkZUQV9HRU5fTUFYICsgMV0gPSB7fTsKLSAJc3RydWN0IG5mZ2VubXNnICpuZmcgPSBtbmxfbmxtc2dfZ2V0X3BheWxvYWQobmxoKTsKLUBAIC0xNTQsNyArMTQ0LDYgQEAgaW50IG5mdG5sX2dlbl9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX2dlbiAqZ2VuKQotIAl9Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2dlbl9ubG1zZ19wYXJzZSk7Ci0gCi0gc3RhdGljIGludCBuZnRubF9nZW5fc25wcmludGZfZGVmYXVsdChjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4pCi1AQCAtMTg2LDEzICsxNzUsMTIgQEAgc3RhdGljIGludCBuZnRubF9nZW5fY21kX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCXJldHVybiBvZmZzZXQ7Ci0gfQotIAotLWludCBuZnRubF9nZW5fc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX2dlbiAqZ2VuLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2dlbl9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sCi0gCQkgICAgICAgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi0gezsKLSAJcmV0dXJuIG5mdG5sX2dlbl9jbWRfc25wcmludGYoYnVmLCBzaXplLCBnZW4sIG5mdG5sX2ZsYWcyY21kKGZsYWdzKSwgdHlwZSwKLSAJCQkJICAgIGZsYWdzKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9nZW5fc25wcmludGYpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfZ2VuX2RvX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKmdlbiwKLSAJCQkJIHVpbnQzMl90IGNtZCwgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi1AQCAtMjAwLDEwICsxODgsOSBAQCBzdGF0aWMgaW50IG5mdG5sX2dlbl9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpnZW4sCi0gCXJldHVybiBuZnRubF9nZW5fc25wcmludGYoYnVmLCBzaXplLCBnZW4sIHR5cGUsIGZsYWdzKTsKLSB9Ci0gCi0taW50IG5mdG5sX2dlbl9mcHJpbnRmKEZJTEUgKmZwLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZ2VuICpnZW4sIHVpbnQzMl90IHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfZ2VuX2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9nZW4gKmdlbiwgdWludDMyX3QgdHlwZSwKLSAJCSAgICAgIHVpbnQzMl90IGZsYWdzKQotIHsKLSAJcmV0dXJuIG5mdG5sX2ZwcmludGYoZnAsIGdlbiwgTkZUTkxfQ01EX1VOU1BFQywgdHlwZSwgZmxhZ3MsCi0gCQkJICAgbmZ0bmxfZ2VuX2RvX3NucHJpbnRmKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9nZW5fZnByaW50Zik7Ci1kaWZmIC0tZ2l0IGEvc3JjL29iamVjdC5jIGIvc3JjL29iamVjdC5jCi1pbmRleCBlMWE1YWM0Li5kNDA5YzZkIDEwMDY0NAotLS0tIGEvc3JjL29iamVjdC5jCi0rKysgYi9zcmMvb2JqZWN0LmMKLUBAIC0zOSwxMyArMzksMTIgQEAgc3RhdGljIHN0cnVjdCBvYmpfb3BzICpuZnRubF9vYmpfb3BzX2xvb2t1cCh1aW50MzJfdCB0eXBlKQotIAlyZXR1cm4gb2JqX29wc1t0eXBlXTsKLSB9Ci0gCi0tc3RydWN0IG5mdG5sX29iaiAqbmZ0bmxfb2JqX2FsbG9jKHZvaWQpCi0rc3RydWN0IG5mdG5sX29iaiBfX0VYUE9SVEVEICpuZnRubF9vYmpfYWxsb2Modm9pZCkKLSB7Ci0gCXJldHVybiBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBuZnRubF9vYmopKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfb2JqX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqb2JqKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9vYmpfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmopCi0gewotIAlpZiAob2JqLT5mbGFncyAmICgxIDw8IE5GVE5MX09CSl9UQUJMRSkpCi0gCQl4ZnJlZShvYmotPnRhYmxlKTsKLUBAIC01NCwyMCArNTMsMTggQEAgdm9pZCBuZnRubF9vYmpfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmopCi0gCi0gCXhmcmVlKG9iaik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2ZyZWUpOwotIAotLWJvb2wgbmZ0bmxfb2JqX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIpCi0rYm9vbCBfX0VYUE9SVEVEIG5mdG5sX29ial9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIG9iai0+ZmxhZ3MgJiAoMSA8PCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfaXNfc2V0KTsKLSAKLSBzdGF0aWMgdWludDMyX3QgbmZ0bmxfb2JqX3ZhbGlkYXRlW05GVE5MX09CSl9NQVggKyAxXSA9IHsKLSAJW05GVE5MX09CSl9GQU1JTFldCT0gc2l6ZW9mKHVpbnQzMl90KSwKLSAJW05GVE5MX09CSl9VU0VdCQk9IHNpemVvZih1aW50MzJfdCksCi0gfTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX29ial9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsCi0gCQkJY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyX3QgZGF0YV9sZW4pCi0gewotIAlpZiAoYXR0ciA8IE5GVE5MX09CSl9NQVgpCi1AQCAtMTAwLDQ1ICs5NywzOCBAQCB2b2lkIG5mdG5sX29ial9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsCi0gCX0KLSAJb2JqLT5mbGFncyB8PSAoMSA8PCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfc2V0X2RhdGEpOwotIAotLXZvaWQgbmZ0bmxfb2JqX3NldChzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIGNvbnN0IHZvaWQgKmRhdGEpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX29ial9zZXQoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhKQotIHsKLSAJbmZ0bmxfb2JqX3NldF9kYXRhKG9iaiwgYXR0ciwgZGF0YSwgbmZ0bmxfb2JqX3ZhbGlkYXRlW2F0dHJdKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfc2V0KTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfdTgoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyLCB1aW50OF90IHZhbCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX3NldF91OChzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIHVpbnQ4X3QgdmFsKQotIHsKLSAJbmZ0bmxfb2JqX3NldF9kYXRhKG9iaiwgYXR0ciwgJnZhbCwgc2l6ZW9mKHVpbnQ4X3QpKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfc2V0X3U4KTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfdTE2KHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0ciwgdWludDE2X3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9vYmpfc2V0X3UxNihzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIHVpbnQxNl90IHZhbCkKLSB7Ci0gCW5mdG5sX29ial9zZXRfZGF0YShvYmosIGF0dHIsICZ2YWwsIHNpemVvZih1aW50MTZfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9zZXRfdTE2KTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfdTMyKHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0ciwgdWludDMyX3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9vYmpfc2V0X3UzMihzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90IHZhbCkKLSB7Ci0gCW5mdG5sX29ial9zZXRfZGF0YShvYmosIGF0dHIsICZ2YWwsIHNpemVvZih1aW50MzJfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9zZXRfdTMyKTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfdTY0KHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0ciwgdWludDY0X3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9vYmpfc2V0X3U2NChzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIHVpbnQ2NF90IHZhbCkKLSB7Ci0gCW5mdG5sX29ial9zZXRfZGF0YShvYmosIGF0dHIsICZ2YWwsIHNpemVvZih1aW50NjRfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9zZXRfdTY0KTsKLSAKLS12b2lkIG5mdG5sX29ial9zZXRfc3RyKHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0ciwgY29uc3QgY2hhciAqc3RyKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9vYmpfc2V0X3N0cihzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsIGNvbnN0IGNoYXIgKnN0cikKLSB7Ci0gCW5mdG5sX29ial9zZXRfZGF0YShvYmosIGF0dHIsIHN0ciwgMCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX3NldF9zdHIpOwotIAotLWNvbnN0IHZvaWQgKm5mdG5sX29ial9nZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9vYmpfZ2V0X2RhdGEoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyLAotIAkJCSAgICAgICB1aW50MzJfdCAqZGF0YV9sZW4pCi0gewotIAlpZiAoIShvYmotPmZsYWdzICYgKDEgPDwgYXR0cikpKQotQEAgLTE2OCw1MCArMTU4LDQzIEBAIGNvbnN0IHZvaWQgKm5mdG5sX29ial9nZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIsCi0gCX0KLSAJcmV0dXJuIE5VTEw7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2dldF9kYXRhKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9vYmpfZ2V0KHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0cikKLStjb25zdCB2b2lkIF9fRVhQT1JURUQgKm5mdG5sX29ial9nZXQoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci0gCXJldHVybiBuZnRubF9vYmpfZ2V0X2RhdGEob2JqLCBhdHRyLCAmZGF0YV9sZW4pOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9nZXQpOwotIAotLXVpbnQ4X3QgbmZ0bmxfb2JqX2dldF91OChzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIpCi0rdWludDhfdCBfX0VYUE9SVEVEIG5mdG5sX29ial9nZXRfdTgoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJY29uc3Qgdm9pZCAqcmV0ID0gbmZ0bmxfb2JqX2dldChvYmosIGF0dHIpOwotIAlyZXR1cm4gcmV0ID09IE5VTEwgPyAwIDogKigodWludDhfdCAqKXJldCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2dldF91OCk7Ci0gCi0tdWludDE2X3QgbmZ0bmxfb2JqX2dldF91MTYoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotK3VpbnQxNl90IF9fRVhQT1JURUQgbmZ0bmxfb2JqX2dldF91MTYoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJY29uc3Qgdm9pZCAqcmV0ID0gbmZ0bmxfb2JqX2dldChvYmosIGF0dHIpOwotIAlyZXR1cm4gcmV0ID09IE5VTEwgPyAwIDogKigodWludDE2X3QgKilyZXQpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9nZXRfdTE2KTsKLSAKLS11aW50MzJfdCBuZnRubF9vYmpfZ2V0X3UzMihzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF9vYmpfZ2V0X3UzMihzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIHVpbnQxNl90IGF0dHIpCi0gewotIAljb25zdCB2b2lkICpyZXQgPSBuZnRubF9vYmpfZ2V0KG9iaiwgYXR0cik7Ci0gCXJldHVybiByZXQgPT0gTlVMTCA/IDAgOiAqKCh1aW50MzJfdCAqKXJldCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2dldF91MzIpOwotIAotLXVpbnQ2NF90IG5mdG5sX29ial9nZXRfdTY0KHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0cikKLSt1aW50NjRfdCBfX0VYUE9SVEVEIG5mdG5sX29ial9nZXRfdTY0KHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDE2X3QgYXR0cikKLSB7Ci0gCWNvbnN0IHZvaWQgKnJldCA9IG5mdG5sX29ial9nZXQob2JqLCBhdHRyKTsKLSAJcmV0dXJuIHJldCA9PSBOVUxMID8gMCA6ICooKHVpbnQ2NF90ICopcmV0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfZ2V0X3U2NCk7Ci0gCi0tY29uc3QgY2hhciAqbmZ0bmxfb2JqX2dldF9zdHIoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotK2NvbnN0IGNoYXIgX19FWFBPUlRFRCAqbmZ0bmxfb2JqX2dldF9zdHIoc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIG5mdG5sX29ial9nZXQob2JqLCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfZ2V0X3N0cik7Ci0gCi0tdm9pZCBuZnRubF9vYmpfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsCi0gCQkJCSAgIGNvbnN0IHN0cnVjdCBuZnRubF9vYmogKm9iaikKLSB7Ci0gCWlmIChvYmotPmZsYWdzICYgKDEgPDwgTkZUTkxfT0JKX1RBQkxFKSkKLUBAIC0yMjgsNyArMjExLDYgQEAgdm9pZCBuZnRubF9vYmpfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKLSAJCW1ubF9hdHRyX25lc3RfZW5kKG5saCwgbmVzdCk7Ci0gCX0KLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfbmxtc2dfYnVpbGRfcGF5bG9hZCk7Ci0gCi0gc3RhdGljIGludCBuZnRubF9vYmpfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIHsKLUBAIC0yNTgsNyArMjQwLDcgQEAgc3RhdGljIGludCBuZnRubF9vYmpfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIAlyZXR1cm4gTU5MX0NCX09LOwotIH0KLSAKLS1pbnQgbmZ0bmxfb2JqX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmopCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfb2JqX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmopCi0gewotIAlzdHJ1Y3QgbmZnZW5tc2cgKm5mZyA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChubGgpOwotIAlzdHJ1Y3QgbmxhdHRyICp0YltORlRBX09CSl9NQVggKyAxXSA9IHt9OwotQEAgLTI5OSw3ICsyODEsNiBAQCBpbnQgbmZ0bmxfb2JqX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmopCi0gCi0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX29ial9ubG1zZ19wYXJzZSk7Ci0gCi0gI2lmZGVmIEpTT05fUEFSU0lORwotIHN0YXRpYyBpbnQgbmZ0bmxfamFuc3Nvbl9wYXJzZV9vYmooc3RydWN0IG5mdG5sX29iaiAqdCwganNvbl90ICp0cmVlLAotQEAgLTM3NywxOSArMzU4LDE3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfb2JqX2RvX3BhcnNlKHN0cnVjdCBuZnRubF9vYmogKm9iaiwgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0gCXJldHVybiByZXQ7Ci0gfQotIAotLWludCBuZnRubF9vYmpfcGFyc2Uoc3RydWN0IG5mdG5sX29iaiAqb2JqLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9vYmpfcGFyc2Uoc3RydWN0IG5mdG5sX29iaiAqb2JqLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLSAJCSAgICAgIGNvbnN0IGNoYXIgKmRhdGEsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF9vYmpfZG9fcGFyc2Uob2JqLCB0eXBlLCBkYXRhLCBlcnIsIE5GVE5MX1BBUlNFX0JVRkZFUik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX3BhcnNlKTsKLSAKLS1pbnQgbmZ0bmxfb2JqX3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX29iaiAqb2JqLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9vYmpfcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJCSAgIEZJTEUgKmZwLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gewotIAlyZXR1cm4gbmZ0bmxfb2JqX2RvX3BhcnNlKG9iaiwgdHlwZSwgZnAsIGVyciwgTkZUTkxfUEFSU0VfRklMRSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfb2JqX2V4cG9ydChjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAkJCSAgICBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosCi1AQCAtNDY5LDEzICs0NDgsMTIgQEAgc3RhdGljIGludCBuZnRubF9vYmpfY21kX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCXJldHVybiBvZmZzZXQ7Ci0gfQotIAotLWludCBuZnRubF9vYmpfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqb2JqLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX29ial9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICpvYmosCi0gCQkgICAgICAgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfb2JqX2NtZF9zbnByaW50ZihidWYsIHNpemUsIG9iaiwgbmZ0bmxfZmxhZzJjbWQoZmxhZ3MpLAotIAkJCQkgICAgICB0eXBlLCBmbGFncyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX3NucHJpbnRmKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX29ial9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpvYmosCi0gCQkJCSB1aW50MzJfdCBjbWQsIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQotQEAgLTQ4MywxOSArNDYxLDE4IEBAIHN0YXRpYyBpbnQgbmZ0bmxfb2JqX2RvX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKm9iaiwKLSAJcmV0dXJuIG5mdG5sX29ial9zbnByaW50ZihidWYsIHNpemUsIG9iaiwgdHlwZSwgZmxhZ3MpOwotIH0KLSAKLS1pbnQgbmZ0bmxfb2JqX2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9vYmogKm9iaiwgdWludDMyX3QgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9vYmpfZnByaW50ZihGSUxFICpmcCwgY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqb2JqLCB1aW50MzJfdCB0eXBlLAotIAkJICAgICAgdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfZnByaW50ZihmcCwgb2JqLCBORlROTF9DTURfVU5TUEVDLCB0eXBlLCBmbGFncywKLSAJCQkgICAgIG5mdG5sX29ial9kb19zbnByaW50Zik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2ZwcmludGYpOwotIAotIHN0cnVjdCBuZnRubF9vYmpfbGlzdCB7Ci0gCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLSB9OwotIAotLXN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbmZ0bmxfb2JqX2xpc3RfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgX19FWFBPUlRFRCAqbmZ0bmxfb2JqX2xpc3RfYWxsb2Modm9pZCkKLSB7Ci0gCXN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdDsKLSAKLUBAIC01MDcsOSArNDg0LDggQEAgc3RydWN0IG5mdG5sX29ial9saXN0ICpuZnRubF9vYmpfbGlzdF9hbGxvYyh2b2lkKQotIAotIAlyZXR1cm4gbGlzdDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfbGlzdF9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9vYmpfbGlzdF9mcmVlKHN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKmxpc3QpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfb2JqICpyLCAqdG1wOwotIAotQEAgLTUxOSwzNCArNDk1LDI5IEBAIHZvaWQgbmZ0bmxfb2JqX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKmxpc3QpCi0gCX0KLSAJeGZyZWUobGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfZnJlZSk7Ci0gCi0taW50IG5mdG5sX29ial9saXN0X2lzX2VtcHR5KHN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdCkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9vYmpfbGlzdF9pc19lbXB0eShzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKmxpc3QpCi0gewotIAlyZXR1cm4gbGlzdF9lbXB0eSgmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfaXNfZW1wdHkpOwotIAotLXZvaWQgbmZ0bmxfb2JqX2xpc3RfYWRkKHN0cnVjdCBuZnRubF9vYmogKnIsIHN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX2xpc3RfYWRkKHN0cnVjdCBuZnRubF9vYmogKnIsIHN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdCkKLSB7Ci0gCWxpc3RfYWRkKCZyLT5oZWFkLCAmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfYWRkKTsKLSAKLS12b2lkIG5mdG5sX29ial9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9vYmogKnIsCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX29ial9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9vYmogKnIsCi0gCQkJICAgICAgIHN0cnVjdCBuZnRubF9vYmpfbGlzdCAqbGlzdCkKLSB7Ci0gCWxpc3RfYWRkX3RhaWwoJnItPmhlYWQsICZsaXN0LT5saXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfbGlzdF9hZGRfdGFpbCk7Ci0gCi0tdm9pZCBuZnRubF9vYmpfbGlzdF9kZWwoc3RydWN0IG5mdG5sX29iaiAqdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX2xpc3RfZGVsKHN0cnVjdCBuZnRubF9vYmogKnQpCi0gewotIAlsaXN0X2RlbCgmdC0+aGVhZCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfZGVsKTsKLSAKLS1pbnQgbmZ0bmxfb2JqX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKnRhYmxlX2xpc3QsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfb2JqX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKnRhYmxlX2xpc3QsCi0gCQkJICAgICBpbnQgKCpjYikoc3RydWN0IG5mdG5sX29iaiAqdCwgdm9pZCAqZGF0YSksCi0gCQkJICAgICB2b2lkICpkYXRhKQotIHsKLUBAIC01NjAsMTQgKzUzMSwxMyBAQCBpbnQgbmZ0bmxfb2JqX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKnRhYmxlX2xpc3QsCi0gCX0KLSAJcmV0dXJuIDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfZm9yZWFjaCk7Ci0gCi0gc3RydWN0IG5mdG5sX29ial9saXN0X2l0ZXIgewotIAlzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QJKmxpc3Q7Ci0gCXN0cnVjdCBuZnRubF9vYmoJKmN1cjsKLSB9OwotIAotLXN0cnVjdCBuZnRubF9vYmpfbGlzdF9pdGVyICoKLStzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3RfaXRlciBfX0VYUE9SVEVEICoKLSBuZnRubF9vYmpfbGlzdF9pdGVyX2NyZWF0ZShzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3QgKmwpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3RfaXRlciAqaXRlcjsKLUBAIC01ODQsOSArNTU0LDggQEAgbmZ0bmxfb2JqX2xpc3RfaXRlcl9jcmVhdGUoc3RydWN0IG5mdG5sX29ial9saXN0ICpsKQotIAotIAlyZXR1cm4gaXRlcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9vYmpfbGlzdF9pdGVyX2NyZWF0ZSk7Ci0gCi0tc3RydWN0IG5mdG5sX29iaiAqbmZ0bmxfb2JqX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9vYmpfbGlzdF9pdGVyICppdGVyKQotK3N0cnVjdCBuZnRubF9vYmogX19FWFBPUlRFRCAqbmZ0bmxfb2JqX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9vYmpfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX29iaiAqciA9IGl0ZXItPmN1cjsKLSAKLUBAIC02MDAsMTAgKzU2OSw4IEBAIHN0cnVjdCBuZnRubF9vYmogKm5mdG5sX29ial9saXN0X2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3RfaXRlciAqaXRlcikKLSAKLSAJcmV0dXJuIHI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfaXRlcl9uZXh0KTsKLSAKLS12b2lkIG5mdG5sX29ial9saXN0X2l0ZXJfZGVzdHJveShzdHJ1Y3QgbmZ0bmxfb2JqX2xpc3RfaXRlciAqaXRlcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfb2JqX2xpc3RfaXRlcl9kZXN0cm95KHN0cnVjdCBuZnRubF9vYmpfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJeGZyZWUoaXRlcik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfb2JqX2xpc3RfaXRlcl9kZXN0cm95KTsKLWRpZmYgLS1naXQgYS9zcmMvcnVsZS5jIGIvc3JjL3J1bGUuYwotaW5kZXggNmMyMjE0MS4uYWQ4NjA5ZiAxMDA2NDQKLS0tLSBhL3NyYy9ydWxlLmMKLSsrKyBiL3NyYy9ydWxlLmMKLUBAIC01Miw3ICs1Miw3IEBAIHN0cnVjdCBuZnRubF9ydWxlIHsKLSAJc3RydWN0IGxpc3RfaGVhZCBleHByX2xpc3Q7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfcnVsZSAqbmZ0bmxfcnVsZV9hbGxvYyh2b2lkKQotK3N0cnVjdCBuZnRubF9ydWxlIF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfYWxsb2Modm9pZCkKLSB7Ci0gCXN0cnVjdCBuZnRubF9ydWxlICpyOwotIAotQEAgLTY0LDkgKzY0LDggQEAgc3RydWN0IG5mdG5sX3J1bGUgKm5mdG5sX3J1bGVfYWxsb2Modm9pZCkKLSAKLSAJcmV0dXJuIHI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9ydWxlX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLSB7Ci0gCXN0cnVjdCBuZnRubF9leHByICplLCAqdG1wOwotIAotQEAgLTgyLDE1ICs4MSwxMyBAQCB2b2lkIG5mdG5sX3J1bGVfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLSAKLSAJeGZyZWUocik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9mcmVlKTsKLSAKLS1ib29sIG5mdG5sX3J1bGVfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyKQotK2Jvb2wgX19FWFBPUlRFRCBuZnRubF9ydWxlX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiByLT5mbGFncyAmICgxIDw8IGF0dHIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfaXNfc2V0KTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfdW5zZXQoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfdW5zZXQoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIpCi0gewotIAlpZiAoIShyLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLSAJCXJldHVybjsKLUBAIC0xMTYsNyArMTEzLDYgQEAgdm9pZCBuZnRubF9ydWxlX3Vuc2V0KHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyKQotIAotIAlyLT5mbGFncyAmPSB+KDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV91bnNldCk7Ci0gCi0gc3RhdGljIHVpbnQzMl90IG5mdG5sX3J1bGVfdmFsaWRhdGVbTkZUTkxfUlVMRV9NQVggKyAxXSA9IHsKLSAJW05GVE5MX1JVTEVfSEFORExFXQkJPSBzaXplb2YodWludDY0X3QpLAotQEAgLTEyNyw3ICsxMjMsNyBAQCBzdGF0aWMgdWludDMyX3QgbmZ0bmxfcnVsZV92YWxpZGF0ZVtORlROTF9SVUxFX01BWCArIDFdID0gewotIAlbTkZUTkxfUlVMRV9JRF0JCQk9IHNpemVvZih1aW50MzJfdCksCi0gfTsKLSAKLS1pbnQgbmZ0bmxfcnVsZV9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3NldF9kYXRhKHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyLAotIAkJCWNvbnN0IHZvaWQgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKQotIHsKLSAJbmZ0bmxfYXNzZXJ0X2F0dHJfZXhpc3RzKGF0dHIsIE5GVE5MX1JVTEVfTUFYKTsKLUBAIC0xODMsMzMgKzE3OSwyOCBAQCBpbnQgbmZ0bmxfcnVsZV9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwKLSAJci0+ZmxhZ3MgfD0gKDEgPDwgYXR0cik7Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfc2V0X2RhdGEpOwotIAotLWludCBuZnRubF9ydWxlX3NldChzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwgY29uc3Qgdm9pZCAqZGF0YSkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3NldChzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwgY29uc3Qgdm9pZCAqZGF0YSkKLSB7Ci0gCXJldHVybiBuZnRubF9ydWxlX3NldF9kYXRhKHIsIGF0dHIsIGRhdGEsIG5mdG5sX3J1bGVfdmFsaWRhdGVbYXR0cl0pOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfc2V0KTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfc2V0X3UzMihzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwgdWludDMyX3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3NldF91MzIoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90IHZhbCkKLSB7Ci0gCW5mdG5sX3J1bGVfc2V0X2RhdGEociwgYXR0ciwgJnZhbCwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9zZXRfdTMyKTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfc2V0X3U2NChzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwgdWludDY0X3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3NldF91NjQoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIsIHVpbnQ2NF90IHZhbCkKLSB7Ci0gCW5mdG5sX3J1bGVfc2V0X2RhdGEociwgYXR0ciwgJnZhbCwgc2l6ZW9mKHVpbnQ2NF90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9zZXRfdTY0KTsKLSAKLS1pbnQgbmZ0bmxfcnVsZV9zZXRfc3RyKHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyLCBjb25zdCBjaGFyICpzdHIpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9zZXRfc3RyKHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyLCBjb25zdCBjaGFyICpzdHIpCi0gewotIAlyZXR1cm4gbmZ0bmxfcnVsZV9zZXRfZGF0YShyLCBhdHRyLCBzdHIsIHN0cmxlbihzdHIpICsgMSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9zZXRfc3RyKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9ydWxlX2dldF9kYXRhKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyLAotK2NvbnN0IHZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfcnVsZV9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwKLSAJCQkJICAgdWludDMyX3QgKmRhdGFfbGVuKQotIHsKLSAJaWYgKCEoci0+ZmxhZ3MgJiAoMSA8PCBhdHRyKSkpCi1AQCAtMjQ2LDIyICsyMzcsMTkgQEAgY29uc3Qgdm9pZCAqbmZ0bmxfcnVsZV9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0ciwKLSAJfQotIAlyZXR1cm4gTlVMTDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2dldF9kYXRhKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9ydWxlX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLStjb25zdCB2b2lkIF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci0gCXJldHVybiBuZnRubF9ydWxlX2dldF9kYXRhKHIsIGF0dHIsICZkYXRhX2xlbik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9nZXQpOwotIAotLWNvbnN0IGNoYXIgKm5mdG5sX3J1bGVfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLStjb25zdCBjaGFyIF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiBuZnRubF9ydWxlX2dldChyLCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2dldF9zdHIpOwotIAotLXVpbnQzMl90IG5mdG5sX3J1bGVfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSt1aW50MzJfdCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAljb25zdCB1aW50MzJfdCAqdmFsID0gbmZ0bmxfcnVsZV9nZXRfZGF0YShyLCBhdHRyLCAmZGF0YV9sZW4pOwotQEAgLTI3MCw5ICsyNTgsOCBAQCB1aW50MzJfdCBuZnRubF9ydWxlX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXJldHVybiB2YWwgPyAqdmFsIDogMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2dldF91MzIpOwotIAotLXVpbnQ2NF90IG5mdG5sX3J1bGVfZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSt1aW50NjRfdCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAljb25zdCB1aW50NjRfdCAqdmFsID0gbmZ0bmxfcnVsZV9nZXRfZGF0YShyLCBhdHRyLCAmZGF0YV9sZW4pOwotQEAgLTI4MSw5ICsyNjgsOCBAQCB1aW50NjRfdCBuZnRubF9ydWxlX2dldF91NjQoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXJldHVybiB2YWwgPyAqdmFsIDogMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2dldF91NjQpOwotIAotLXVpbnQ4X3QgbmZ0bmxfcnVsZV9nZXRfdTgoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQxNl90IGF0dHIpCi0rdWludDhfdCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfZ2V0X3U4KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci0gCWNvbnN0IHVpbnQ4X3QgKnZhbCA9IG5mdG5sX3J1bGVfZ2V0X2RhdGEociwgYXR0ciwgJmRhdGFfbGVuKTsKLUBAIC0yOTIsOSArMjc4LDggQEAgdWludDhfdCBuZnRubF9ydWxlX2dldF91OChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgdWludDE2X3QgYXR0cikKLSAKLSAJcmV0dXJuIHZhbCA/ICp2YWwgOiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfZ2V0X3U4KTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwcjsKLSAJc3RydWN0IG5sYXR0ciAqbmVzdCwgKm5lc3QyOwotQEAgLTMzNSwxMyArMzIwLDExIEBAIHZvaWQgbmZ0bmxfcnVsZV9ubG1zZ19idWlsZF9wYXlsb2FkKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLSAJaWYgKHItPmZsYWdzICYgKDEgPDwgTkZUTkxfUlVMRV9JRCkpCi0gCQltbmxfYXR0cl9wdXRfdTMyKG5saCwgTkZUQV9SVUxFX0lELCBodG9ubChyLT5pZCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfbmxtc2dfYnVpbGRfcGF5bG9hZCk7Ci0gCi0tdm9pZCBuZnRubF9ydWxlX2FkZF9leHByKHN0cnVjdCBuZnRubF9ydWxlICpyLCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9hZGRfZXhwcihzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIpCi0gewotIAlsaXN0X2FkZF90YWlsKCZleHByLT5oZWFkLCAmci0+ZXhwcl9saXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2FkZF9leHByKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3J1bGVfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIHsKLUBAIC00NDEsNyArNDI0LDcgQEAgc3RhdGljIGludCBuZnRubF9ydWxlX3BhcnNlX2NvbXBhdChzdHJ1Y3QgbmxhdHRyICpuZXN0LCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLSAJcmV0dXJuIDA7Ci0gfQotIAotLWludCBuZnRubF9ydWxlX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLSB7Ci0gCXN0cnVjdCBubGF0dHIgKnRiW05GVEFfUlVMRV9NQVgrMV0gPSB7fTsKLSAJc3RydWN0IG5mZ2VubXNnICpuZmcgPSBtbmxfbmxtc2dfZ2V0X3BheWxvYWQobmxoKTsKLUBAIC01MTAsNyArNDkzLDYgQEAgaW50IG5mdG5sX3J1bGVfbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9ydWxlICpyKQotIAotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX25sbXNnX3BhcnNlKTsKLSAKLSAjaWZkZWYgSlNPTl9QQVJTSU5HCi0gaW50IG5mdG5sX2phbnNzb25fcGFyc2VfcnVsZShzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwganNvbl90ICp0cmVlLAotQEAgLTY1OCwxOSArNjQwLDE3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfcnVsZV9kb19wYXJzZShzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0gCi0gCXJldHVybiByZXQ7Ci0gfQotLWludCBuZnRubF9ydWxlX3BhcnNlKHN0cnVjdCBuZnRubF9ydWxlICpyLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3BhcnNlKHN0cnVjdCBuZnRubF9ydWxlICpyLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLSAJCSAgIGNvbnN0IGNoYXIgKmRhdGEsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF9ydWxlX2RvX3BhcnNlKHIsIHR5cGUsIGRhdGEsIGVyciwgTkZUTkxfUEFSU0VfQlVGRkVSKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX3BhcnNlKTsKLSAKLS1pbnQgbmZ0bmxfcnVsZV9wYXJzZV9maWxlKHN0cnVjdCBuZnRubF9ydWxlICpyLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX3J1bGUgKnIsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJCUZJTEUgKmZwLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gewotIAlyZXR1cm4gbmZ0bmxfcnVsZV9kb19wYXJzZShyLCB0eXBlLCBmcCwgZXJyLCBORlROTF9QQVJTRV9GSUxFKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfcnVsZV9leHBvcnQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJCQkgICAgIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLAotQEAgLTgxOSwxMyArNzk5LDEyIEBAIHN0YXRpYyBpbnQgbmZ0bmxfcnVsZV9jbWRfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJcmV0dXJuIG9mZnNldDsKLSB9Ci0gCi0taW50IG5mdG5sX3J1bGVfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwKLSAJCQl1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncykKLSB7Ci0gCXJldHVybiBuZnRubF9ydWxlX2NtZF9zbnByaW50ZihidWYsIHNpemUsIHIsIG5mdG5sX2ZsYWcyY21kKGZsYWdzKSwgdHlwZSwKLSAJCQkJICAgICBmbGFncyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9zbnByaW50Zik7Ci0gCi0gc3RhdGljIGludCBuZnRubF9ydWxlX2RvX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKnIsCi0gCQkJCSAgdWludDMyX3QgY21kLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncykKLUBAIC04MzMsMTUgKzgxMiwxNCBAQCBzdGF0aWMgaW50IG5mdG5sX3J1bGVfZG9fc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgdm9pZCAqciwKLSAJcmV0dXJuIG5mdG5sX3J1bGVfc25wcmludGYoYnVmLCBzaXplLCByLCB0eXBlLCBmbGFncyk7Ci0gfQotIAotLWludCBuZnRubF9ydWxlX2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyLCB1aW50MzJfdCB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfZnByaW50ZihGSUxFICpmcCwgY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsIHVpbnQzMl90IHR5cGUsCi0gCQkgICAgICAgdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfZnByaW50ZihmcCwgciwgTkZUTkxfQ01EX1VOU1BFQywgdHlwZSwgZmxhZ3MsCi0gCQkJICAgbmZ0bmxfcnVsZV9kb19zbnByaW50Zik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9mcHJpbnRmKTsKLSAKLS1pbnQgbmZ0bmxfZXhwcl9mb3JlYWNoKHN0cnVjdCBuZnRubF9ydWxlICpyLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX2V4cHJfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKmNiKShzdHJ1Y3QgbmZ0bmxfZXhwciAqZSwgdm9pZCAqZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQotIHsKLUBAIC04NTUsNyArODMzLDYgQEAgaW50IG5mdG5sX2V4cHJfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfcnVsZSAqciwKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2ZvcmVhY2gpOwotIAotIHN0cnVjdCBuZnRubF9leHByX2l0ZXIgewotIAljb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZQkqcjsKLUBAIC04NzMsNyArODUwLDcgQEAgc3RhdGljIHZvaWQgbmZ0bmxfZXhwcl9pdGVyX2luaXQoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIsCi0gCQkJCSAgICAgICBoZWFkKTsKLSB9Ci0gCi0tc3RydWN0IG5mdG5sX2V4cHJfaXRlciAqbmZ0bmxfZXhwcl9pdGVyX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcikKLStzdHJ1Y3QgbmZ0bmxfZXhwcl9pdGVyIF9fRVhQT1JURUQgKm5mdG5sX2V4cHJfaXRlcl9jcmVhdGUoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfZXhwcl9pdGVyICppdGVyOwotIAotQEAgLTg4NSw5ICs4NjIsOCBAQCBzdHJ1Y3QgbmZ0bmxfZXhwcl9pdGVyICpuZnRubF9leHByX2l0ZXJfY3JlYXRlKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyKQotIAotIAlyZXR1cm4gaXRlcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2l0ZXJfY3JlYXRlKTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfZXhwciAqbmZ0bmxfZXhwcl9pdGVyX25leHQoc3RydWN0IG5mdG5sX2V4cHJfaXRlciAqaXRlcikKLStzdHJ1Y3QgbmZ0bmxfZXhwciBfX0VYUE9SVEVEICpuZnRubF9leHByX2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfZXhwcl9pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX2V4cHIgKmV4cHIgPSBpdGVyLT5jdXI7Ci0gCi1AQCAtOTAxLDE1ICs4NzcsMTMgQEAgc3RydWN0IG5mdG5sX2V4cHIgKm5mdG5sX2V4cHJfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9leHByX2l0ZXIgKml0ZXIpCi0gCi0gCXJldHVybiBleHByOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX2V4cHJfaXRlcl9uZXh0KTsKLSAKLS12b2lkIG5mdG5sX2V4cHJfaXRlcl9kZXN0cm95KHN0cnVjdCBuZnRubF9leHByX2l0ZXIgKml0ZXIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX2V4cHJfaXRlcl9kZXN0cm95KHN0cnVjdCBuZnRubF9leHByX2l0ZXIgKml0ZXIpCi0gewotIAl4ZnJlZShpdGVyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9leHByX2l0ZXJfZGVzdHJveSk7Ci0gCi0tYm9vbCBuZnRubF9ydWxlX2NtcChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcjEsIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyMikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9jbXAoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIxLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZSAqcjIpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfZXhwcl9pdGVyIGl0MSwgaXQyOwotIAlzdHJ1Y3QgbmZ0bmxfZXhwciAqZTEsICplMjsKLUBAIC05MzgsMTMgKzkxMiwxMiBAQCBib29sIG5mdG5sX3J1bGVfY21wKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlICpyMSwgY29uc3Qgc3RydWN0IG5mdG5sX3J1bGUgKnIyKQotIAotIAlyZXR1cm4gZXE7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9jbXApOwotIAotIHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgewotIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpuZnRubF9ydWxlX2xpc3RfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0IF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfbGlzdF9hbGxvYyh2b2lkKQotIHsKLSAJc3RydWN0IG5mdG5sX3J1bGVfbGlzdCAqbGlzdDsKLSAKLUBAIC05NTYsOSArOTI5LDggQEAgc3RydWN0IG5mdG5sX3J1bGVfbGlzdCAqbmZ0bmxfcnVsZV9saXN0X2FsbG9jKHZvaWQpCi0gCi0gCXJldHVybiBsaXN0OwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfbGlzdF9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9ydWxlX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpsaXN0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9ydWxlX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpsaXN0KQotIHsKLSAJc3RydWN0IG5mdG5sX3J1bGUgKnIsICp0bXA7Ci0gCi1AQCAtOTY4LDMzICs5NDAsMjggQEAgdm9pZCBuZnRubF9ydWxlX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpsaXN0KQotIAl9Ci0gCXhmcmVlKGxpc3QpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfbGlzdF9mcmVlKTsKLSAKLS1pbnQgbmZ0bmxfcnVsZV9saXN0X2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmxpc3QpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9saXN0X2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmxpc3QpCi0gewotIAlyZXR1cm4gbGlzdF9lbXB0eSgmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9saXN0X2lzX2VtcHR5KTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfbGlzdF9hZGQoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmxpc3QpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfbGlzdF9hZGQoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmxpc3QpCi0gewotIAlsaXN0X2FkZCgmci0+aGVhZCwgJmxpc3QtPmxpc3QpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfbGlzdF9hZGQpOwotIAotLXZvaWQgbmZ0bmxfcnVsZV9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9ydWxlICpyLCBzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpsaXN0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9ydWxlX2xpc3RfYWRkX3RhaWwoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmxpc3QpCi0gewotIAlsaXN0X2FkZF90YWlsKCZyLT5oZWFkLCAmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9saXN0X2FkZF90YWlsKTsKLSAKLS12b2lkIG5mdG5sX3J1bGVfbGlzdF9kZWwoc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVfbGlzdF9kZWwoc3RydWN0IG5mdG5sX3J1bGUgKnIpCi0gewotIAlsaXN0X2RlbCgmci0+aGVhZCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9saXN0X2RlbCk7Ci0gCi0taW50IG5mdG5sX3J1bGVfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKnJ1bGVfbGlzdCwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpydWxlX2xpc3QsCi0gCQkJICBpbnQgKCpjYikoc3RydWN0IG5mdG5sX3J1bGUgKnIsIHZvaWQgKmRhdGEpLAotIAkJCSAgdm9pZCAqZGF0YSkKLSB7Ci1AQCAtMTAwOCwxNCArOTc1LDEzIEBAIGludCBuZnRubF9ydWxlX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpydWxlX2xpc3QsCi0gCX0KLSAJcmV0dXJuIDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9saXN0X2ZvcmVhY2gpOwotIAotIHN0cnVjdCBuZnRubF9ydWxlX2xpc3RfaXRlciB7Ci0gCWNvbnN0IHN0cnVjdCBuZnRubF9ydWxlX2xpc3QJKmxpc3Q7Ci0gCXN0cnVjdCBuZnRubF9ydWxlCQkqY3VyOwotIH07Ci0gCi0tc3RydWN0IG5mdG5sX3J1bGVfbGlzdF9pdGVyICoKLStzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0X2l0ZXIgX19FWFBPUlRFRCAqCi0gbmZ0bmxfcnVsZV9saXN0X2l0ZXJfY3JlYXRlKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlX2xpc3QgKmwpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0X2l0ZXIgKml0ZXI7Ci1AQCAtMTAzMiwxNSArOTk4LDEzIEBAIG5mdG5sX3J1bGVfbGlzdF9pdGVyX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0ICpsKQotIAotIAlyZXR1cm4gaXRlcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2xpc3RfaXRlcl9jcmVhdGUpOwotIAotLXN0cnVjdCBuZnRubF9ydWxlICpuZnRubF9ydWxlX2xpc3RfaXRlcl9jdXIoc3RydWN0IG5mdG5sX3J1bGVfbGlzdF9pdGVyICppdGVyKQotK3N0cnVjdCBuZnRubF9ydWxlIF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfbGlzdF9pdGVyX2N1cihzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0X2l0ZXIgKml0ZXIpCi0gewotIAlyZXR1cm4gaXRlci0+Y3VyOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVfbGlzdF9pdGVyX2N1cik7Ci0gCi0tc3RydWN0IG5mdG5sX3J1bGUgKm5mdG5sX3J1bGVfbGlzdF9pdGVyX25leHQoc3RydWN0IG5mdG5sX3J1bGVfbGlzdF9pdGVyICppdGVyKQotK3N0cnVjdCBuZnRubF9ydWxlIF9fRVhQT1JURUQgKm5mdG5sX3J1bGVfbGlzdF9pdGVyX25leHQoc3RydWN0IG5mdG5sX3J1bGVfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX3J1bGUgKnIgPSBpdGVyLT5jdXI7Ci0gCi1AQCAtMTA1NCwxMCArMTAxOCw4IEBAIHN0cnVjdCBuZnRubF9ydWxlICpuZnRubF9ydWxlX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9ydWxlX2xpc3RfaXRlciAqaXRlcikKLSAKLSAJcmV0dXJuIHI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZV9saXN0X2l0ZXJfbmV4dCk7Ci0gCi0tdm9pZCBuZnRubF9ydWxlX2xpc3RfaXRlcl9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlX2xpc3RfaXRlciAqaXRlcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfcnVsZV9saXN0X2l0ZXJfZGVzdHJveShjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZV9saXN0X2l0ZXIgKml0ZXIpCi0gewotIAl4ZnJlZShpdGVyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlX2xpc3RfaXRlcl9kZXN0cm95KTsKLWRpZmYgLS1naXQgYS9zcmMvcnVsZXNldC5jIGIvc3JjL3J1bGVzZXQuYwotaW5kZXggNmVmMjk1Ni4uMTBkNDhmNiAxMDA2NDQKLS0tLSBhL3NyYy9ydWxlc2V0LmMKLSsrKyBiL3NyYy9ydWxlc2V0LmMKLUBAIC01NSwxMyArNTUsMTIgQEAgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCB7Ci0gCXVpbnQxNl90IGZsYWdzOwotIH07Ci0gCi0tc3RydWN0IG5mdG5sX3J1bGVzZXQgKm5mdG5sX3J1bGVzZXRfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfcnVsZXNldCBfX0VYUE9SVEVEICpuZnRubF9ydWxlc2V0X2FsbG9jKHZvaWQpCi0gewotIAlyZXR1cm4gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbmZ0bmxfcnVsZXNldCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVzZXRfYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfcnVsZXNldF9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9ydWxlc2V0X2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIpCi0gewotIAlpZiAoci0+ZmxhZ3MgJiAoMSA8PCBORlROTF9SVUxFU0VUX1RBQkxFTElTVCkpCi0gCQluZnRubF90YWJsZV9saXN0X2ZyZWUoci0+dGFibGVfbGlzdCk7Ci1AQCAtNzMsMTUgKzcyLDEzIEBAIHZvaWQgbmZ0bmxfcnVsZXNldF9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyKQotIAkJbmZ0bmxfcnVsZV9saXN0X2ZyZWUoci0+cnVsZV9saXN0KTsKLSAJeGZyZWUocik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZXNldF9mcmVlKTsKLSAKLS1ib29sIG5mdG5sX3J1bGVzZXRfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyLCB1aW50MTZfdCBhdHRyKQotK2Jvb2wgX19FWFBPUlRFRCBuZnRubF9ydWxlc2V0X2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqciwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiByLT5mbGFncyAmICgxIDw8IGF0dHIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVzZXRfaXNfc2V0KTsKLSAKLS12b2lkIG5mdG5sX3J1bGVzZXRfdW5zZXQoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfdW5zZXQoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIpCi0gewotIAlpZiAoIShyLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLSAJCXJldHVybjsKLUBAIC0xMDIsOSArOTksOCBAQCB2b2lkIG5mdG5sX3J1bGVzZXRfdW5zZXQoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIpCi0gCX0KLSAJci0+ZmxhZ3MgJj0gfigxIDw8IGF0dHIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVzZXRfdW5zZXQpOwotIAotLXZvaWQgbmZ0bmxfcnVsZXNldF9zZXQoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIsIHZvaWQgKmRhdGEpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfc2V0KHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyLCB1aW50MTZfdCBhdHRyLCB2b2lkICpkYXRhKQotIHsKLSAJc3dpdGNoIChhdHRyKSB7Ci0gCWNhc2UgTkZUTkxfUlVMRVNFVF9UQUJMRUxJU1Q6Ci1AQCAtMTI4LDkgKzEyNCw4IEBAIHZvaWQgbmZ0bmxfcnVsZXNldF9zZXQoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIsIHZvaWQgKmRhdGEpCi0gCX0KLSAJci0+ZmxhZ3MgfD0gKDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZXNldF9zZXQpOwotIAotLXZvaWQgKm5mdG5sX3J1bGVzZXRfZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyLCB1aW50MTZfdCBhdHRyKQotK3ZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfcnVsZXNldF9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIHVpbnQxNl90IGF0dHIpCi0gewotIAlpZiAoIShyLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLSAJCXJldHVybiBOVUxMOwotQEAgLTE0OCw5ICsxNDMsOCBAQCB2b2lkICpuZnRubF9ydWxlc2V0X2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqciwgdWludDE2X3QgYXR0cikKLSAJCXJldHVybiBOVUxMOwotIAl9Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZXNldF9nZXQpOwotIAotLXZvaWQgbmZ0bmxfcnVsZXNldF9jdHhfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfY3R4ICpjdHgpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfY3R4X2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4KQotIHsKLSAJc3dpdGNoIChjdHgtPnR5cGUpIHsKLSAJY2FzZSBORlROTF9SVUxFU0VUX1RBQkxFOgotQEAgLTE3MSwxNSArMTY1LDEzIEBAIHZvaWQgbmZ0bmxfcnVsZXNldF9jdHhfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfY3R4ICpjdHgpCi0gCQlicmVhazsKLSAJfQotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVzZXRfY3R4X2ZyZWUpOwotIAotLWJvb2wgbmZ0bmxfcnVsZXNldF9jdHhfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9wYXJzZV9jdHggKmN0eCwgdWludDE2X3QgYXR0cikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfcnVsZXNldF9jdHhfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9wYXJzZV9jdHggKmN0eCwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiBjdHgtPmZsYWdzICYgKDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZXNldF9jdHhfaXNfc2V0KTsKLSAKLS12b2lkICpuZnRubF9ydWxlc2V0X2N0eF9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4LCB1aW50MTZfdCBhdHRyKQotK3ZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfcnVsZXNldF9jdHhfZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF9wYXJzZV9jdHggKmN0eCwgdWludDE2X3QgYXR0cikKLSB7Ci0gCWlmICghKGN0eC0+ZmxhZ3MgJiAoMSA8PCBhdHRyKSkpCi0gCQlyZXR1cm4gTlVMTDsKLUBAIC0yMDMsMTQgKzE5NSwxMiBAQCB2b2lkICpuZnRubF9ydWxlc2V0X2N0eF9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4LCB1aW50MTZfdCBhdHRyKQotIAkJcmV0dXJuIE5VTEw7Ci0gCX0KLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X2N0eF9nZXQpOwotIAotLXVpbnQzMl90IG5mdG5sX3J1bGVzZXRfY3R4X2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4LCB1aW50MTZfdCBhdHRyKQotK3VpbnQzMl90IF9fRVhQT1JURUQgbmZ0bmxfcnVsZXNldF9jdHhfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfY3R4ICpjdHgsIHVpbnQxNl90IGF0dHIpCi0gewotIAljb25zdCB2b2lkICpyZXQgPSBuZnRubF9ydWxlc2V0X2N0eF9nZXQoY3R4LCBhdHRyKTsKLSAJcmV0dXJuIHJldCA9PSBOVUxMID8gMCA6ICooKHVpbnQzMl90ICopcmV0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X2N0eF9nZXRfdTMyKTsKLSAKLSAjaWYgZGVmaW5lZChKU09OX1BBUlNJTkcpCi0gc3RhdGljIHZvaWQgbmZ0bmxfcnVsZXNldF9jdHhfc2V0KHN0cnVjdCBuZnRubF9wYXJzZV9jdHggKmN0eCwgdWludDE2X3QgYXR0ciwKLUBAIC01OTMsMjIgKzU4MywyMCBAQCBuZnRubF9ydWxlc2V0X2RvX3BhcnNlKGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLCBjb25zdCB2b2lkICpkYXRhLAotIAlyZXR1cm4gcmV0OwotIH0KLSAKLS1pbnQgbmZ0bmxfcnVsZXNldF9wYXJzZV9maWxlX2NiKGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLCBGSUxFICpmcCwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9ydWxlc2V0X3BhcnNlX2ZpbGVfY2IoZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsIEZJTEUgKmZwLAotIAkJCSAgICAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVyciwgdm9pZCAqZGF0YSwKLSAJCQkgICAgICBpbnQgKCpjYikoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4KSkKLSB7Ci0gCXJldHVybiBuZnRubF9ydWxlc2V0X2RvX3BhcnNlKHR5cGUsIGZwLCBlcnIsIE5GVE5MX1BBUlNFX0ZJTEUsIGRhdGEsIGNiKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X3BhcnNlX2ZpbGVfY2IpOwotIAotLWludCBuZnRubF9ydWxlc2V0X3BhcnNlX2J1ZmZlcl9jYihlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwgY29uc3QgY2hhciAqYnVmZmVyLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfcGFyc2VfYnVmZmVyX2NiKGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLCBjb25zdCBjaGFyICpidWZmZXIsCi0gCQkJCXN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVyciwgdm9pZCAqZGF0YSwKLSAJCQkJaW50ICgqY2IpKGNvbnN0IHN0cnVjdCBuZnRubF9wYXJzZV9jdHggKmN0eCkpCi0gewotIAlyZXR1cm4gbmZ0bmxfcnVsZXNldF9kb19wYXJzZSh0eXBlLCBidWZmZXIsIGVyciwgTkZUTkxfUEFSU0VfQlVGRkVSLCBkYXRhLAotIAkJCQkgICAgY2IpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3J1bGVzZXRfcGFyc2VfYnVmZmVyX2NiKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3J1bGVzZXRfY2IoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4KQotIHsKLUBAIC02NzEsMTkgKzY1OSwxNyBAQCBzdGF0aWMgaW50IG5mdG5sX3J1bGVzZXRfY2IoY29uc3Qgc3RydWN0IG5mdG5sX3BhcnNlX2N0eCAqY3R4KQotIAlyZXR1cm4gMDsKLSB9Ci0gCi0taW50IG5mdG5sX3J1bGVzZXRfcGFyc2Uoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfcGFyc2Uoc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJICAgICAgY29uc3QgY2hhciAqZGF0YSwgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotIHsKLSAJcmV0dXJuIG5mdG5sX3J1bGVzZXRfcGFyc2VfYnVmZmVyX2NiKHR5cGUsIGRhdGEsIGVyciwgciwgbmZ0bmxfcnVsZXNldF9jYik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfcnVsZXNldF9wYXJzZSk7Ci0gCi0taW50IG5mdG5sX3J1bGVzZXRfcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqcnMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqcnMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJCSAgIEZJTEUgKmZwLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCi0gewotIAlyZXR1cm4gbmZ0bmxfcnVsZXNldF9wYXJzZV9maWxlX2NiKHR5cGUsIGZwLCBlcnIsIHJzLCBuZnRubF9ydWxlc2V0X2NiKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBjb25zdCBjaGFyICpuZnRubF9ydWxlc2V0X29fb3BlbnRhZyh1aW50MzJfdCB0eXBlKQotIHsKLUBAIC05MjgsNyArOTE0LDcgQEAgc3RhdGljIGludCBuZnRubF9ydWxlc2V0X2NtZF9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAl9Ci0gfQotIAotLWludCBuZnRubF9ydWxlc2V0X3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3J1bGVzZXRfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX3J1bGVzZXQgKnIsCi0gCQkJIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQotIHsKLSAJc3dpdGNoICh0eXBlKSB7Ci1AQCAtOTQzLDcgKzkyOSw2IEBAIGludCBuZnRubF9ydWxlc2V0X3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpyCi0gCQlyZXR1cm4gLTE7Ci0gCX0KLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X3NucHJpbnRmKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3J1bGVzZXRfZnByaW50Zl90YWJsZXMoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9ydWxlc2V0ICpycywKLSAJCQkJICAgICAgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi1AQCAtMTE1NywxMCArMTE0Miw5IEBAIHN0YXRpYyBpbnQgbmZ0bmxfcnVsZXNldF9jbWRfZnByaW50ZihGSUxFICpmcCwgY29uc3Qgc3RydWN0IG5mdG5sX3J1bGVzZXQgKnJzLAotIAlyZXR1cm4gbGVuOwotIH0KLSAKLS1pbnQgbmZ0bmxfcnVsZXNldF9mcHJpbnRmKEZJTEUgKmZwLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqcnMsIHVpbnQzMl90IHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfcnVsZXNldF9mcHJpbnRmKEZJTEUgKmZwLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfcnVsZXNldCAqcnMsIHVpbnQzMl90IHR5cGUsCi0gCQkJdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfcnVsZXNldF9jbWRfZnByaW50ZihmcCwgcnMsIG5mdG5sX2ZsYWcyY21kKGZsYWdzKSwgdHlwZSwKLSAJCQkJICAgICAgIGZsYWdzKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9ydWxlc2V0X2ZwcmludGYpOwotZGlmZiAtLWdpdCBhL3NyYy9zZXQuYyBiL3NyYy9zZXQuYwotaW5kZXggY2NlNWU2My4uMzNhNjc5NCAxMDA2NDQKLS0tLSBhL3NyYy9zZXQuYwotKysrIGIvc3JjL3NldC5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxsaWJuZnRubC9zZXQuaD4KLSAjaW5jbHVkZSA8bGlibmZ0bmwvZXhwci5oPgotIAotLXN0cnVjdCBuZnRubF9zZXQgKm5mdG5sX3NldF9hbGxvYyh2b2lkKQotK3N0cnVjdCBuZnRubF9zZXQgX19FWFBPUlRFRCAqbmZ0bmxfc2V0X2FsbG9jKHZvaWQpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfc2V0ICpzOwotIAotQEAgLTM4LDkgKzM4LDggQEAgc3RydWN0IG5mdG5sX3NldCAqbmZ0bmxfc2V0X2FsbG9jKHZvaWQpCi0gCUlOSVRfTElTVF9IRUFEKCZzLT5lbGVtZW50X2xpc3QpOwotIAlyZXR1cm4gczsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfc2V0X2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcykKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcykKLSB7Ci0gCXN0cnVjdCBuZnRubF9zZXRfZWxlbSAqZWxlbSwgKnRtcDsKLSAKLUBAIC01NSwxNSArNTQsMTMgQEAgdm9pZCBuZnRubF9zZXRfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotIAl9Ci0gCXhmcmVlKHMpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9mcmVlKTsKLSAKLS1ib29sIG5mdG5sX3NldF9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIHMtPmZsYWdzICYgKDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2lzX3NldCk7Ci0gCi0tdm9pZCBuZnRubF9zZXRfdW5zZXQoc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X3Vuc2V0KHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIpCi0gewotIAlpZiAoIShzLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLSAJCXJldHVybjsKLUBAIC05Nyw3ICs5NCw2IEBAIHZvaWQgbmZ0bmxfc2V0X3Vuc2V0KHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXMtPmZsYWdzICY9IH4oMSA8PCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfdW5zZXQpOwotIAotIHN0YXRpYyB1aW50MzJfdCBuZnRubF9zZXRfdmFsaWRhdGVbTkZUTkxfU0VUX01BWCArIDFdID0gewotIAlbTkZUTkxfU0VUX0ZMQUdTXQkJPSBzaXplb2YodWludDMyX3QpLAotQEAgLTExMyw3ICsxMDksNyBAQCBzdGF0aWMgdWludDMyX3QgbmZ0bmxfc2V0X3ZhbGlkYXRlW05GVE5MX1NFVF9NQVggKyAxXSA9IHsKLSAJW05GVE5MX1NFVF9HQ19JTlRFUlZBTF0JPSBzaXplb2YodWludDMyX3QpLAotIH07Ci0gCi0taW50IG5mdG5sX3NldF9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhLAotIAkJICAgICAgIHVpbnQzMl90IGRhdGFfbGVuKQotIHsKLSAJbmZ0bmxfYXNzZXJ0X2F0dHJfZXhpc3RzKGF0dHIsIE5GVE5MX1NFVF9NQVgpOwotQEAgLTE4NiwzMyArMTgyLDI4IEBAIGludCBuZnRubF9zZXRfc2V0X2RhdGEoc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwgY29uc3Qgdm9pZCAqZGF0YSwKLSAJcy0+ZmxhZ3MgfD0gKDEgPDwgYXR0cik7Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9zZXRfZGF0YSk7Ci0gCi0taW50IG5mdG5sX3NldF9zZXQoc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwgY29uc3Qgdm9pZCAqZGF0YSkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9zZXRfc2V0KHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IHZvaWQgKmRhdGEpCi0gewotIAlyZXR1cm4gbmZ0bmxfc2V0X3NldF9kYXRhKHMsIGF0dHIsIGRhdGEsIG5mdG5sX3NldF92YWxpZGF0ZVthdHRyXSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X3NldCk7Ci0gCi0tdm9pZCBuZnRubF9zZXRfc2V0X3UzMihzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCB2YWwpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9zZXRfdTMyKHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90IHZhbCkKLSB7Ci0gCW5mdG5sX3NldF9zZXQocywgYXR0ciwgJnZhbCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X3NldF91MzIpOwotIAotLXZvaWQgbmZ0bmxfc2V0X3NldF91NjQoc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwgdWludDY0X3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9zZXRfc2V0X3U2NChzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyLCB1aW50NjRfdCB2YWwpCi0gewotIAluZnRubF9zZXRfc2V0KHMsIGF0dHIsICZ2YWwpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9zZXRfdTY0KTsKLSAKLS1pbnQgbmZ0bmxfc2V0X3NldF9zdHIoc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwgY29uc3QgY2hhciAqc3RyKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9zZXRfc3RyKHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IGNoYXIgKnN0cikKLSB7Ci0gCXJldHVybiBuZnRubF9zZXRfc2V0X2RhdGEocywgYXR0ciwgc3RyLCBzdHJsZW4oc3RyKSArIDEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9zZXRfc3RyKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9zZXRfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwKLStjb25zdCB2b2lkIF9fRVhQT1JURUQgKm5mdG5sX3NldF9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyLAotIAkJCSAgICAgICB1aW50MzJfdCAqZGF0YV9sZW4pCi0gewotIAlpZiAoIShzLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLUBAIC0yNjcsMjIgKzI1OCwxOSBAQCBjb25zdCB2b2lkICpuZnRubF9zZXRfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0ciwKLSAJfQotIAlyZXR1cm4gTlVMTDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZ2V0X2RhdGEpOwotIAotLWNvbnN0IHZvaWQgKm5mdG5sX3NldF9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLStjb25zdCB2b2lkIF9fRVhQT1JURUQgKm5mdG5sX3NldF9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAlyZXR1cm4gbmZ0bmxfc2V0X2dldF9kYXRhKHMsIGF0dHIsICZkYXRhX2xlbik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2dldCk7Ci0gCi0tY29uc3QgY2hhciAqbmZ0bmxfc2V0X2dldF9zdHIoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLStjb25zdCBjaGFyIF9fRVhQT1JURUQgKm5mdG5sX3NldF9nZXRfc3RyKGNvbnN0IHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIpCi0gewotIAlyZXR1cm4gbmZ0bmxfc2V0X2dldChzLCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZ2V0X3N0cik7Ci0gCi0tdWludDMyX3QgbmZ0bmxfc2V0X2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLSt1aW50MzJfdCBfX0VYUE9SVEVEIG5mdG5sX3NldF9nZXRfdTMyKGNvbnN0IHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIpCi0gewotIAl1aW50MzJfdCBkYXRhX2xlbjsKLSAJY29uc3QgdWludDMyX3QgKnZhbCA9IG5mdG5sX3NldF9nZXRfZGF0YShzLCBhdHRyLCAmZGF0YV9sZW4pOwotQEAgLTI5MSw5ICsyNzksOCBAQCB1aW50MzJfdCBuZnRubF9zZXRfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyKQotIAotIAlyZXR1cm4gdmFsID8gKnZhbCA6IDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2dldF91MzIpOwotIAotLXVpbnQ2NF90IG5mdG5sX3NldF9nZXRfdTY0KGNvbnN0IHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQxNl90IGF0dHIpCi0rdWludDY0X3QgX19FWFBPUlRFRCBuZnRubF9zZXRfZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3QgZGF0YV9sZW47Ci0gCWNvbnN0IHVpbnQ2NF90ICp2YWwgPSBuZnRubF9zZXRfZ2V0X2RhdGEocywgYXR0ciwgJmRhdGFfbGVuKTsKLUBAIC0zMDIsNyArMjg5LDYgQEAgdWludDY0X3QgbmZ0bmxfc2V0X2dldF91NjQoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywgdWludDE2X3QgYXR0cikKLSAKLSAJcmV0dXJuIHZhbCA/ICp2YWwgOiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9nZXRfdTY0KTsKLSAKLSBzdHJ1Y3QgbmZ0bmxfc2V0ICpuZnRubF9zZXRfY2xvbmUoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqc2V0KQotIHsKLUBAIC0zNTEsNyArMzM3LDcgQEAgbmZ0bmxfc2V0X25sbXNnX2J1aWxkX2Rlc2NfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3NldCAqcykKLSAJbW5sX2F0dHJfbmVzdF9lbmQobmxoLCBuZXN0KTsKLSB9Ci0gCi0tdm9pZCBuZnRubF9zZXRfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3NldCAqcykKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9zZXQgKnMpCi0gewotIAlpZiAocy0+ZmxhZ3MgJiAoMSA8PCBORlROTF9TRVRfVEFCTEUpKQotIAkJbW5sX2F0dHJfcHV0X3N0cnoobmxoLCBORlRBX1NFVF9UQUJMRSwgcy0+dGFibGUpOwotQEAgLTM4Myw3ICszNjksNiBAQCB2b2lkIG5mdG5sX3NldF9ubG1zZ19idWlsZF9wYXlsb2FkKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotIAlpZiAocy0+ZmxhZ3MgJiAoMSA8PCBORlROTF9TRVRfVVNFUkRBVEEpKQotIAkJbW5sX2F0dHJfcHV0KG5saCwgTkZUQV9TRVRfVVNFUkRBVEEsIHMtPnVzZXIubGVuLCBzLT51c2VyLmRhdGEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9ubG1zZ19idWlsZF9wYXlsb2FkKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3NldF9wYXJzZV9hdHRyX2NiKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHZvaWQgKmRhdGEpCi0gewotQEAgLTQ2Myw3ICs0NDgsNyBAQCBzdGF0aWMgaW50IG5mdG5sX3NldF9kZXNjX3BhcnNlKHN0cnVjdCBuZnRubF9zZXQgKnMsCi0gCXJldHVybiAwOwotIH0KLSAKLS1pbnQgbmZ0bmxfc2V0X25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3NldCAqcykKLSB7Ci0gCXN0cnVjdCBubGF0dHIgKnRiW05GVEFfU0VUX01BWCsxXSA9IHt9OwotIAlzdHJ1Y3QgbmZnZW5tc2cgKm5mZyA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChubGgpOwotQEAgLTU0Niw3ICs1MzEsNiBAQCBpbnQgbmZ0bmxfc2V0X25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotIAotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfbmxtc2dfcGFyc2UpOwotIAotICNpZmRlZiBKU09OX1BBUlNJTkcKLSBzdGF0aWMgaW50IG5mdG5sX2phbnNzb25fcGFyc2Vfc2V0X2luZm8oc3RydWN0IG5mdG5sX3NldCAqcywganNvbl90ICp0cmVlLAotQEAgLTcxOCwxOSArNzAyLDE3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X2RvX3BhcnNlKHN0cnVjdCBuZnRubF9zZXQgKnMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAotIAlyZXR1cm4gcmV0OwotIH0KLS1pbnQgbmZ0bmxfc2V0X3BhcnNlKHN0cnVjdCBuZnRubF9zZXQgKnMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9wYXJzZShzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLSAJCSAgY29uc3QgY2hhciAqZGF0YSwgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotIHsKLSAJcmV0dXJuIG5mdG5sX3NldF9kb19wYXJzZShzLCB0eXBlLCBkYXRhLCBlcnIsIE5GVE5MX1BBUlNFX0JVRkZFUik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X3BhcnNlKTsKLSAKLS1pbnQgbmZ0bmxfc2V0X3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX3NldCAqcywgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX3NldCAqcywgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0gCQkgICAgICAgRklMRSAqZnAsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF9zZXRfZG9fcGFyc2UocywgdHlwZSwgZnAsIGVyciwgTkZUTkxfUEFSU0VfRklMRSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X3NucHJpbnRmX2pzb24oY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJCQkJICAgY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcywKLUBAIC05MTgsMTMgKzkwMCwxMiBAQCBzdGF0aWMgaW50IG5mdG5sX3NldF9jbWRfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJcmV0dXJuIG9mZnNldDsKLSB9Ci0gCi0taW50IG5mdG5sX3NldF9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzLAotIAkJICAgICAgIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQotIHsKLSAJcmV0dXJuIG5mdG5sX3NldF9jbWRfc25wcmludGYoYnVmLCBzaXplLCBzLCBuZnRubF9mbGFnMmNtZChmbGFncyksIHR5cGUsCi0gCQkJCSAgICBmbGFncyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X3NucHJpbnRmKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3NldF9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpzLAotIAkJCQkgdWludDMyX3QgY21kLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncykKLUBAIC05MzIsMjUgKzkxMywyMyBAQCBzdGF0aWMgaW50IG5mdG5sX3NldF9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpzLAotIAlyZXR1cm4gbmZ0bmxfc2V0X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgcywgdHlwZSwgZmxhZ3MpOwotIH0KLSAKLS1pbnQgbmZ0bmxfc2V0X2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQzMl90IHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9zZXQgKnMsIHVpbnQzMl90IHR5cGUsCi0gCQkgICAgICB1aW50MzJfdCBmbGFncykKLSB7Ci0gCXJldHVybiBuZnRubF9mcHJpbnRmKGZwLCBzLCBORlROTF9DTURfVU5TUEVDLCB0eXBlLCBmbGFncywKLSAJCQkgICBuZnRubF9zZXRfZG9fc25wcmludGYpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9mcHJpbnRmKTsKLSAKLS12b2lkIG5mdG5sX3NldF9lbGVtX2FkZChzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCBzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmVsZW0pCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX2FkZChzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCBzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmVsZW0pCi0gewotIAlsaXN0X2FkZF90YWlsKCZlbGVtLT5oZWFkLCAmcy0+ZWxlbWVudF9saXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbV9hZGQpOwotIAotIHN0cnVjdCBuZnRubF9zZXRfbGlzdCB7Ci0gCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLSB9OwotIAotLXN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbmZ0bmxfc2V0X2xpc3RfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgX19FWFBPUlRFRCAqbmZ0bmxfc2V0X2xpc3RfYWxsb2Modm9pZCkKLSB7Ci0gCXN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdDsKLSAKLUBAIC05NjIsOSArOTQxLDggQEAgc3RydWN0IG5mdG5sX3NldF9saXN0ICpuZnRubF9zZXRfbGlzdF9hbGxvYyh2b2lkKQotIAotIAlyZXR1cm4gbGlzdDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfbGlzdF9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF9zZXRfbGlzdF9mcmVlKHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKmxpc3QpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfc2V0ICpzLCAqdG1wOwotIAotQEAgLTk3NCwzMyArOTUyLDI4IEBAIHZvaWQgbmZ0bmxfc2V0X2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKmxpc3QpCi0gCX0KLSAJeGZyZWUobGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfZnJlZSk7Ci0gCi0taW50IG5mdG5sX3NldF9saXN0X2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdCkKLStpbnQgX19FWFBPUlRFRCBuZnRubF9zZXRfbGlzdF9pc19lbXB0eShjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKmxpc3QpCi0gewotIAlyZXR1cm4gbGlzdF9lbXB0eSgmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfaXNfZW1wdHkpOwotIAotLXZvaWQgbmZ0bmxfc2V0X2xpc3RfYWRkKHN0cnVjdCBuZnRubF9zZXQgKnMsIHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2xpc3RfYWRkKHN0cnVjdCBuZnRubF9zZXQgKnMsIHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdCkKLSB7Ci0gCWxpc3RfYWRkKCZzLT5oZWFkLCAmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfYWRkKTsKLSAKLS12b2lkIG5mdG5sX3NldF9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9zZXQgKnMsIHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqbGlzdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2xpc3RfYWRkX3RhaWwoc3RydWN0IG5mdG5sX3NldCAqcywgc3RydWN0IG5mdG5sX3NldF9saXN0ICpsaXN0KQotIHsKLSAJbGlzdF9hZGRfdGFpbCgmcy0+aGVhZCwgJmxpc3QtPmxpc3QpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9saXN0X2FkZF90YWlsKTsKLSAKLS12b2lkIG5mdG5sX3NldF9saXN0X2RlbChzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9zZXRfbGlzdF9kZWwoc3RydWN0IG5mdG5sX3NldCAqcykKLSB7Ci0gCWxpc3RfZGVsKCZzLT5oZWFkKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfbGlzdF9kZWwpOwotIAotLWludCBuZnRubF9zZXRfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqc2V0X2xpc3QsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKnNldF9saXN0LAotIAkJCSBpbnQgKCpjYikoc3RydWN0IG5mdG5sX3NldCAqdCwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfc2V0ICpjdXIsICp0bXA7Ci1AQCAtMTAxMywxNCArOTg2LDEzIEBAIGludCBuZnRubF9zZXRfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF9zZXRfbGlzdCAqc2V0X2xpc3QsCi0gCX0KLSAJcmV0dXJuIDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfZm9yZWFjaCk7Ci0gCi0gc3RydWN0IG5mdG5sX3NldF9saXN0X2l0ZXIgewotIAljb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QJKmxpc3Q7Ci0gCXN0cnVjdCBuZnRubF9zZXQJCSpjdXI7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfc2V0X2xpc3RfaXRlciAqCi0rc3RydWN0IG5mdG5sX3NldF9saXN0X2l0ZXIgX19FWFBPUlRFRCAqCi0gbmZ0bmxfc2V0X2xpc3RfaXRlcl9jcmVhdGUoY29uc3Qgc3RydWN0IG5mdG5sX3NldF9saXN0ICpsKQotIHsKLSAJc3RydWN0IG5mdG5sX3NldF9saXN0X2l0ZXIgKml0ZXI7Ci1AQCAtMTAzNywxNiArMTAwOSwxNCBAQCBuZnRubF9zZXRfbGlzdF9pdGVyX2NyZWF0ZShjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKmwpCi0gCi0gCXJldHVybiBpdGVyOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9saXN0X2l0ZXJfY3JlYXRlKTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfc2V0ICoKLStzdHJ1Y3QgbmZ0bmxfc2V0IF9fRVhQT1JURUQgKgotIG5mdG5sX3NldF9saXN0X2l0ZXJfY3VyKGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJcmV0dXJuIGl0ZXItPmN1cjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfbGlzdF9pdGVyX2N1cik7Ci0gCi0tc3RydWN0IG5mdG5sX3NldCAqbmZ0bmxfc2V0X2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9zZXRfbGlzdF9pdGVyICppdGVyKQotK3N0cnVjdCBuZnRubF9zZXQgX19FWFBPUlRFRCAqbmZ0bmxfc2V0X2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF9zZXRfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX3NldCAqcyA9IGl0ZXItPmN1cjsKLSAKLUBAIC0xMDYwLDEzICsxMDMwLDExIEBAIHN0cnVjdCBuZnRubF9zZXQgKm5mdG5sX3NldF9saXN0X2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3RfaXRlciAqaXRlcikKLSAKLSAJcmV0dXJuIHM7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfaXRlcl9uZXh0KTsKLSAKLS12b2lkIG5mdG5sX3NldF9saXN0X2l0ZXJfZGVzdHJveShjb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3RfaXRlciAqaXRlcikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2xpc3RfaXRlcl9kZXN0cm95KGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJeGZyZWUoaXRlcik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2xpc3RfaXRlcl9kZXN0cm95KTsKLSAKLSBzdGF0aWMgc3RydWN0IG5mdG5sX3NldCAqbmZ0bmxfc2V0X2xvb2t1cChjb25zdCBjaGFyICp0aGlzX3NldF9uYW1lLAotIAkJCQkgICAgICBzdHJ1Y3QgbmZ0bmxfc2V0X2xpc3QgKnNldF9saXN0KQotZGlmZiAtLWdpdCBhL3NyYy9zZXRfZWxlbS5jIGIvc3JjL3NldF9lbGVtLmMKLWluZGV4IDQzM2I4OTYuLmJkMWU4OTUgMTAwNjQ0Ci0tLS0gYS9zcmMvc2V0X2VsZW0uYwotKysrIGIvc3JjL3NldF9lbGVtLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPGxpYm5mdG5sL3J1bGUuaD4KLSAjaW5jbHVkZSA8bGlibmZ0bmwvZXhwci5oPgotIAotLXN0cnVjdCBuZnRubF9zZXRfZWxlbSAqbmZ0bmxfc2V0X2VsZW1fYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gX19FWFBPUlRFRCAqbmZ0bmxfc2V0X2VsZW1fYWxsb2Modm9pZCkKLSB7Ci0gCXN0cnVjdCBuZnRubF9zZXRfZWxlbSAqczsKLSAKLUBAIC0zNyw5ICszNyw4IEBAIHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqbmZ0bmxfc2V0X2VsZW1fYWxsb2Modm9pZCkKLSAKLSAJcmV0dXJuIHM7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fYWxsb2MpOwotIAotLXZvaWQgbmZ0bmxfc2V0X2VsZW1fZnJlZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX2ZyZWUoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzKQotIHsKLSAJaWYgKHMtPmZsYWdzICYgKDEgPDwgTkZUTkxfU0VUX0VMRU1fQ0hBSU4pKQotIAkJeGZyZWUocy0+ZGF0YS5jaGFpbik7Ci1AQCAtNTUsMTUgKzU0LDEzIEBAIHZvaWQgbmZ0bmxfc2V0X2VsZW1fZnJlZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMpCi0gCi0gCXhmcmVlKHMpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtX2ZyZWUpOwotIAotLWJvb2wgbmZ0bmxfc2V0X2VsZW1faXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1faXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiBzLT5mbGFncyAmICgxIDw8IGF0dHIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtX2lzX3NldCk7Ci0gCi0tdm9pZCBuZnRubF9zZXRfZWxlbV91bnNldChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX3Vuc2V0KHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLSB7Ci0gCWlmICghKHMtPmZsYWdzICYgKDEgPDwgYXR0cikpKQotIAkJcmV0dXJuOwotQEAgLTk0LDkgKzkxLDggQEAgdm9pZCBuZnRubF9zZXRfZWxlbV91bnNldChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIpCi0gCi0gCXMtPmZsYWdzICY9IH4oMSA8PCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbV91bnNldCk7Ci0gCi0taW50IG5mdG5sX3NldF9lbGVtX3NldChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1fc2V0KHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0ciwKLSAJCSAgICAgICBjb25zdCB2b2lkICpkYXRhLCB1aW50MzJfdCBkYXRhX2xlbikKLSB7Ci0gCXN3aXRjaChhdHRyKSB7Ci1AQCAtMTQ3LDI3ICsxNDMsMjMgQEAgaW50IG5mdG5sX3NldF9lbGVtX3NldChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIsCi0gCXMtPmZsYWdzIHw9ICgxIDw8IGF0dHIpOwotIAlyZXR1cm4gLTE7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fc2V0KTsKLSAKLS12b2lkIG5mdG5sX3NldF9lbGVtX3NldF91MzIoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCB2YWwpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX3NldF91MzIoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCB2YWwpCi0gewotIAluZnRubF9zZXRfZWxlbV9zZXQocywgYXR0ciwgJnZhbCwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fc2V0X3UzMik7Ci0gCi0tdm9pZCBuZnRubF9zZXRfZWxlbV9zZXRfdTY0KHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0ciwgdWludDY0X3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF9zZXRfZWxlbV9zZXRfdTY0KHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0ciwgdWludDY0X3QgdmFsKQotIHsKLSAJbmZ0bmxfc2V0X2VsZW1fc2V0KHMsIGF0dHIsICZ2YWwsIHNpemVvZih1aW50NjRfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtX3NldF91NjQpOwotIAotLWludCBuZnRubF9zZXRfZWxlbV9zZXRfc3RyKHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0ciwgY29uc3QgY2hhciAqc3RyKQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX3NldF9zdHIoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyLCBjb25zdCBjaGFyICpzdHIpCi0gewotIAlyZXR1cm4gbmZ0bmxfc2V0X2VsZW1fc2V0KHMsIGF0dHIsIHN0ciwgc3RybGVuKHN0cikgKyAxKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbV9zZXRfc3RyKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF9zZXRfZWxlbV9nZXQoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCAqZGF0YV9sZW4pCi0rY29uc3Qgdm9pZCBfX0VYUE9SVEVEICpuZnRubF9zZXRfZWxlbV9nZXQoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyLCB1aW50MzJfdCAqZGF0YV9sZW4pCi0gewotIAlpZiAoIShzLT5mbGFncyAmICgxIDw8IGF0dHIpKSkKLSAJCXJldHVybiBOVUxMOwotQEAgLTIwNSwzMSArMTk3LDI3IEBAIGNvbnN0IHZvaWQgKm5mdG5sX3NldF9lbGVtX2dldChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90Ci0gCX0KLSAJcmV0dXJuIE5VTEw7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fZ2V0KTsKLSAKLS1jb25zdCBjaGFyICpuZnRubF9zZXRfZWxlbV9nZXRfc3RyKHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLStjb25zdCBjaGFyIF9fRVhQT1JURUQgKm5mdG5sX3NldF9lbGVtX2dldF9zdHIoc3RydWN0IG5mdG5sX3NldF9lbGVtICpzLCB1aW50MTZfdCBhdHRyKQotIHsKLSAJdWludDMyX3Qgc2l6ZTsKLSAKLSAJcmV0dXJuIG5mdG5sX3NldF9lbGVtX2dldChzLCBhdHRyLCAmc2l6ZSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fZ2V0X3N0cik7Ci0gCi0tdWludDMyX3QgbmZ0bmxfc2V0X2VsZW1fZ2V0X3UzMihzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF9zZXRfZWxlbV9nZXRfdTMyKHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IHNpemU7Ci0gCXVpbnQzMl90IHZhbCA9ICooKHVpbnQzMl90ICopbmZ0bmxfc2V0X2VsZW1fZ2V0KHMsIGF0dHIsICZzaXplKSk7Ci0gCXJldHVybiB2YWw7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fZ2V0X3UzMik7Ci0gCi0tdWludDY0X3QgbmZ0bmxfc2V0X2VsZW1fZ2V0X3U2NChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnMsIHVpbnQxNl90IGF0dHIpCi0rdWludDY0X3QgX19FWFBPUlRFRCBuZnRubF9zZXRfZWxlbV9nZXRfdTY0KHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqcywgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IHNpemU7Ci0gCXVpbnQ2NF90IHZhbCA9ICooKHVpbnQ2NF90ICopbmZ0bmxfc2V0X2VsZW1fZ2V0KHMsIGF0dHIsICZzaXplKSk7Ci0gCXJldHVybiB2YWw7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fZ2V0X3U2NCk7Ci0gCi0gc3RydWN0IG5mdG5sX3NldF9lbGVtICpuZnRubF9zZXRfZWxlbV9jbG9uZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmVsZW0pCi0gewotQEAgLTMxNSw3ICszMDMsNyBAQCBzdGF0aWMgc3RydWN0IG5sYXR0ciAqbmZ0bmxfc2V0X2VsZW1fYnVpbGQoc3RydWN0IG5sbXNnaGRyICpubGgsCi0gCXJldHVybiBuZXN0MjsKLSB9Ci0gCi0tdm9pZCBuZnRubF9zZXRfZWxlbXNfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3NldCAqcykKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1zX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9zZXQgKnMpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmVsZW07Ci0gCXN0cnVjdCBubGF0dHIgKm5lc3QxOwotQEAgLTMzMiw3ICszMjAsNiBAQCB2b2lkIG5mdG5sX3NldF9lbGVtc19ubG1zZ19idWlsZF9wYXlsb2FkKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0Ci0gCi0gCW1ubF9hdHRyX25lc3RfZW5kKG5saCwgbmVzdDEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtc19ubG1zZ19idWlsZF9wYXlsb2FkKTsKLSAKLSBzdGF0aWMgaW50IG5mdG5sX3NldF9lbGVtX3BhcnNlX2F0dHJfY2IoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgdm9pZCAqZGF0YSkKLSB7Ci1AQCAtNTAzLDcgKzQ5MCw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X2VsZW1zX3BhcnNlKHN0cnVjdCBuZnRubF9zZXQgKnMsIGNvbnN0IHN0cnVjdCBubGF0dHIgKm5lc3QpCi0gCXJldHVybiByZXQ7Ci0gfQotIAotLWludCBuZnRubF9zZXRfZWxlbXNfbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9zZXQgKnMpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1zX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotIHsKLSAJc3RydWN0IG5sYXR0ciAqdGJbTkZUQV9TRVRfRUxFTV9MSVNUX01BWCsxXSA9IHt9OwotIAlzdHJ1Y3QgbmZnZW5tc2cgKm5mZyA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChubGgpOwotQEAgLTU0Niw3ICs1MzMsNiBAQCBpbnQgbmZ0bmxfc2V0X2VsZW1zX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfc2V0ICpzKQotIAotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbXNfbmxtc2dfcGFyc2UpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X2VsZW1fanNvbl9wYXJzZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmUsIGNvbnN0IHZvaWQgKmpzb24sCi0gCQkJCSAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVyciwKLUBAIC01ODcsMTkgKzU3MywxNyBAQCBuZnRubF9zZXRfZWxlbV9kb19wYXJzZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmUsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAotIAlyZXR1cm4gcmV0OwotIH0KLS1pbnQgbmZ0bmxfc2V0X2VsZW1fcGFyc2Uoc3RydWN0IG5mdG5sX3NldF9lbGVtICplLCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF9zZXRfZWxlbV9wYXJzZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmUsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJICAgICAgIGNvbnN0IGNoYXIgKmRhdGEsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF9zZXRfZWxlbV9kb19wYXJzZShlLCB0eXBlLCBkYXRhLCBlcnIsIE5GVE5MX1BBUlNFX0JVRkZFUik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fcGFyc2UpOwotIAotLWludCBuZnRubF9zZXRfZWxlbV9wYXJzZV9maWxlKHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqZSwgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1fcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmUsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJCSAgICBGSUxFICpmcCwgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotIHsKLSAJcmV0dXJuIG5mdG5sX3NldF9lbGVtX2RvX3BhcnNlKGUsIHR5cGUsIGZwLCBlcnIsIE5GVE5MX1BBUlNFX0ZJTEUpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtX3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X2VsZW1fc25wcmludGZfanNvbihjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAkJCQkJY29uc3Qgc3RydWN0IG5mdG5sX3NldF9lbGVtICplLAotQEAgLTcxOSwxNCArNzAzLDEzIEBAIHN0YXRpYyBpbnQgbmZ0bmxfc2V0X2VsZW1fY21kX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCXJldHVybiBvZmZzZXQ7Ci0gfQotIAotLWludCBuZnRubF9zZXRfZWxlbV9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCQkJICAgIGNvbnN0IHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqZSwKLSAJCQkgICAgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfc2V0X2VsZW1fY21kX3NucHJpbnRmKGJ1Ziwgc2l6ZSwgZSwgbmZ0bmxfZmxhZzJjbWQoZmxhZ3MpLAotIAkJCQkJIHR5cGUsIGZsYWdzKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbV9zbnByaW50Zik7Ci0gCi0gc3RhdGljIGludCBuZnRubF9zZXRfZWxlbV9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICplLAotIAkJCQkgICAgICB1aW50MzJfdCBjbWQsIHVpbnQzMl90IHR5cGUsCi1AQCAtNzM1LDE1ICs3MTgsMTQgQEAgc3RhdGljIGludCBuZnRubF9zZXRfZWxlbV9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICplLAotIAlyZXR1cm4gbmZ0bmxfc2V0X2VsZW1fc25wcmludGYoYnVmLCBzaXplLCBlLCB0eXBlLCBmbGFncyk7Ci0gfQotIAotLWludCBuZnRubF9zZXRfZWxlbV9mcHJpbnRmKEZJTEUgKmZwLCBzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKnNlLCB1aW50MzJfdCB0eXBlLAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtX2ZwcmludGYoRklMRSAqZnAsIHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqc2UsIHVpbnQzMl90IHR5cGUsCi0gCQkJIHVpbnQzMl90IGZsYWdzKQotIHsKLSAJcmV0dXJuIG5mdG5sX2ZwcmludGYoZnAsIHNlLCBORlROTF9DTURfVU5TUEVDLCB0eXBlLCBmbGFncywKLSAJCQkgICBuZnRubF9zZXRfZWxlbV9kb19zbnByaW50Zik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1fZnByaW50Zik7Ci0gCi0taW50IG5mdG5sX3NldF9lbGVtX2ZvcmVhY2goc3RydWN0IG5mdG5sX3NldCAqcywKLStpbnQgX19FWFBPUlRFRCBuZnRubF9zZXRfZWxlbV9mb3JlYWNoKHN0cnVjdCBuZnRubF9zZXQgKnMsCi0gCQkJIGludCAoKmNiKShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKmUsIHZvaWQgKmRhdGEpLAotIAkJCSB2b2lkICpkYXRhKQotIHsKLUBAIC03NTcsNyArNzM5LDYgQEAgaW50IG5mdG5sX3NldF9lbGVtX2ZvcmVhY2goc3RydWN0IG5mdG5sX3NldCAqcywKLSAJfQotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbV9mb3JlYWNoKTsKLSAKLSBzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgewotIAljb25zdCBzdHJ1Y3QgbmZ0bmxfc2V0CQkqc2V0OwotQEAgLTc2NSw3ICs3NDYsNyBAQCBzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgewotIAlzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0JCSpjdXI7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgKgotK3N0cnVjdCBuZnRubF9zZXRfZWxlbXNfaXRlciBfX0VYUE9SVEVEICoKLSBuZnRubF9zZXRfZWxlbXNfaXRlcl9jcmVhdGUoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcykKLSB7Ci0gCXN0cnVjdCBuZnRubF9zZXRfZWxlbXNfaXRlciAqaXRlcjsKLUBAIC03ODQsMTYgKzc2NSwxNCBAQCBuZnRubF9zZXRfZWxlbXNfaXRlcl9jcmVhdGUoY29uc3Qgc3RydWN0IG5mdG5sX3NldCAqcykKLSAKLSAJcmV0dXJuIGl0ZXI7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1zX2l0ZXJfY3JlYXRlKTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfc2V0X2VsZW0gKgotK3N0cnVjdCBuZnRubF9zZXRfZWxlbSBfX0VYUE9SVEVEICoKLSBuZnRubF9zZXRfZWxlbXNfaXRlcl9jdXIoY29uc3Qgc3RydWN0IG5mdG5sX3NldF9lbGVtc19pdGVyICppdGVyKQotIHsKLSAJcmV0dXJuIGl0ZXItPmN1cjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF9zZXRfZWxlbXNfaXRlcl9jdXIpOwotIAotLXN0cnVjdCBuZnRubF9zZXRfZWxlbSAqbmZ0bmxfc2V0X2VsZW1zX2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgKml0ZXIpCi0rc3RydWN0IG5mdG5sX3NldF9lbGVtIF9fRVhQT1JURUQgKm5mdG5sX3NldF9lbGVtc19pdGVyX25leHQoc3RydWN0IG5mdG5sX3NldF9lbGVtc19pdGVyICppdGVyKQotIHsKLSAJc3RydWN0IG5mdG5sX3NldF9lbGVtICpzID0gaXRlci0+Y3VyOwotIAotQEAgLTgwNiwxMyArNzg1LDExIEBAIHN0cnVjdCBuZnRubF9zZXRfZWxlbSAqbmZ0bmxfc2V0X2VsZW1zX2l0ZXJfbmV4dChzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgKml0Ci0gCi0gCXJldHVybiBzOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3NldF9lbGVtc19pdGVyX25leHQpOwotIAotLXZvaWQgbmZ0bmxfc2V0X2VsZW1zX2l0ZXJfZGVzdHJveShzdHJ1Y3QgbmZ0bmxfc2V0X2VsZW1zX2l0ZXIgKml0ZXIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3NldF9lbGVtc19pdGVyX2Rlc3Ryb3koc3RydWN0IG5mdG5sX3NldF9lbGVtc19pdGVyICppdGVyKQotIHsKLSAJeGZyZWUoaXRlcik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1zX2l0ZXJfZGVzdHJveSk7Ci0gCi0gc3RhdGljIGJvb2wgbmZ0bmxfYXR0cl9uZXN0X292ZXJmbG93KHN0cnVjdCBubG1zZ2hkciAqbmxoLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgbmxhdHRyICpmcm9tLAotQEAgLTgzMSw3ICs4MDgsNyBAQCBzdGF0aWMgYm9vbCBuZnRubF9hdHRyX25lc3Rfb3ZlcmZsb3coc3RydWN0IG5sbXNnaGRyICpubGgsCi0gCXJldHVybiBmYWxzZTsKLSB9Ci0gCi0taW50IG5mdG5sX3NldF9lbGVtc19ubG1zZ19idWlsZF9wYXlsb2FkX2l0ZXIoc3RydWN0IG5sbXNnaGRyICpubGgsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfc2V0X2VsZW1zX25sbXNnX2J1aWxkX3BheWxvYWRfaXRlcihzdHJ1Y3Qgbmxtc2doZHIgKm5saCwKLSAJCQkJCSAgIHN0cnVjdCBuZnRubF9zZXRfZWxlbXNfaXRlciAqaXRlcikKLSB7Ci0gCXN0cnVjdCBuZnRubF9zZXRfZWxlbSAqZWxlbTsKLUBAIC04NjEsNCArODM4LDMgQEAgaW50IG5mdG5sX3NldF9lbGVtc19ubG1zZ19idWlsZF9wYXlsb2FkX2l0ZXIoc3RydWN0IG5sbXNnaGRyICpubGgsCi0gCi0gCXJldHVybiByZXQ7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfc2V0X2VsZW1zX25sbXNnX2J1aWxkX3BheWxvYWRfaXRlcik7Ci1kaWZmIC0tZ2l0IGEvc3JjL3RhYmxlLmMgYi9zcmMvdGFibGUuYwotaW5kZXggYTdkNWE4Zi4uMGU5OWYzYyAxMDA2NDQKLS0tLSBhL3NyYy90YWJsZS5jCi0rKysgYi9zcmMvdGFibGUuYwotQEAgLTM2LDI4ICszNiwyNSBAQCBzdHJ1Y3QgbmZ0bmxfdGFibGUgewotIAl1aW50MzJfdAlmbGFnczsKLSB9OwotIAotLXN0cnVjdCBuZnRubF90YWJsZSAqbmZ0bmxfdGFibGVfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfdGFibGUgX19FWFBPUlRFRCAqbmZ0bmxfdGFibGVfYWxsb2Modm9pZCkKLSB7Ci0gCXJldHVybiBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBuZnRubF90YWJsZSkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2FsbG9jKTsKLSAKLS12b2lkIG5mdG5sX3RhYmxlX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCkKLSB7Ci0gCWlmICh0LT5mbGFncyAmICgxIDw8IE5GVE5MX1RBQkxFX05BTUUpKQotIAkJeGZyZWUodC0+bmFtZSk7Ci0gCi0gCXhmcmVlKHQpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2ZyZWUpOwotIAotLWJvb2wgbmZ0bmxfdGFibGVfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfaXNfc2V0KGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXJldHVybiB0LT5mbGFncyAmICgxIDw8IGF0dHIpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2lzX3NldCk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV91bnNldChzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQxNl90IGF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX3Vuc2V0KHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLSB7Ci0gCWlmICghKHQtPmZsYWdzICYgKDEgPDwgYXR0cikpKQotIAkJcmV0dXJuOwotQEAgLTc0LDE0ICs3MSwxMyBAQCB2b2lkIG5mdG5sX3RhYmxlX3Vuc2V0KHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLSAJfQotIAl0LT5mbGFncyAmPSB+KDEgPDwgYXR0cik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfdW5zZXQpOwotIAotIHN0YXRpYyB1aW50MzJfdCBuZnRubF90YWJsZV92YWxpZGF0ZVtORlROTF9UQUJMRV9NQVggKyAxXSA9IHsKLSAJW05GVE5MX1RBQkxFX0ZMQUdTXQk9IHNpemVvZih1aW50MzJfdCksCi0gCVtORlROTF9UQUJMRV9GQU1JTFldCT0gc2l6ZW9mKHVpbnQzMl90KSwKLSB9OwotIAotLWludCBuZnRubF90YWJsZV9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQxNl90IGF0dHIsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfc2V0X2RhdGEoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLAotIAkJCSBjb25zdCB2b2lkICpkYXRhLCB1aW50MzJfdCBkYXRhX2xlbikKLSB7Ci0gCW5mdG5sX2Fzc2VydF9hdHRyX2V4aXN0cyhhdHRyLCBORlROTF9UQUJMRV9NQVgpOwotQEAgLTEwOSwzMyArMTA1LDI4IEBAIGludCBuZnRubF90YWJsZV9zZXRfZGF0YShzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQxNl90IGF0dHIsCi0gCXQtPmZsYWdzIHw9ICgxIDw8IGF0dHIpOwotIAlyZXR1cm4gMDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9zZXRfZGF0YSk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9zZXQoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9zZXQoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLCBjb25zdCB2b2lkICpkYXRhKQotIHsKLSAJbmZ0bmxfdGFibGVfc2V0X2RhdGEodCwgYXR0ciwgZGF0YSwgbmZ0bmxfdGFibGVfdmFsaWRhdGVbYXR0cl0pOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX3NldCk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9zZXRfdTMyKHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0ciwgdWludDMyX3QgdmFsKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9zZXRfdTMyKHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0ciwgdWludDMyX3QgdmFsKQotIHsKLSAJbmZ0bmxfdGFibGVfc2V0X2RhdGEodCwgYXR0ciwgJnZhbCwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfc2V0X3UzMik7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9zZXRfdTgoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLCB1aW50OF90IHZhbCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfc2V0X3U4KHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0ciwgdWludDhfdCB2YWwpCi0gewotIAluZnRubF90YWJsZV9zZXRfZGF0YSh0LCBhdHRyLCAmdmFsLCBzaXplb2YodWludDhfdCkpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX3NldF91OCk7Ci0gCi0taW50IG5mdG5sX3RhYmxlX3NldF9zdHIoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLCBjb25zdCBjaGFyICpzdHIpCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfc2V0X3N0cihzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQxNl90IGF0dHIsIGNvbnN0IGNoYXIgKnN0cikKLSB7Ci0gCXJldHVybiBuZnRubF90YWJsZV9zZXRfZGF0YSh0LCBhdHRyLCBzdHIsIHN0cmxlbihzdHIpICsgMSk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfc2V0X3N0cik7Ci0gCi0tY29uc3Qgdm9pZCAqbmZ0bmxfdGFibGVfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLAotK2NvbnN0IHZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfdGFibGVfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLAotIAkJCQkgdWludDMyX3QgKmRhdGFfbGVuKQotIHsKLSAJaWYgKCEodC0+ZmxhZ3MgJiAoMSA8PCBhdHRyKSkpCi1AQCAtMTU3LDQzICsxNDgsMzcgQEAgY29uc3Qgdm9pZCAqbmZ0bmxfdGFibGVfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyLAotIAl9Ci0gCXJldHVybiBOVUxMOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2dldF9kYXRhKTsKLSAKLS1jb25zdCB2b2lkICpuZnRubF90YWJsZV9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyKQotK2NvbnN0IHZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfdGFibGVfZ2V0KGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLSB7Ci0gCXVpbnQzMl90IGRhdGFfbGVuOwotIAlyZXR1cm4gbmZ0bmxfdGFibGVfZ2V0X2RhdGEodCwgYXR0ciwgJmRhdGFfbGVuKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9nZXQpOwotIAotLXVpbnQzMl90IG5mdG5sX3RhYmxlX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyKQotK3VpbnQzMl90IF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQxNl90IGF0dHIpCi0gewotIAljb25zdCB2b2lkICpyZXQgPSBuZnRubF90YWJsZV9nZXQodCwgYXR0cik7Ci0gCXJldHVybiByZXQgPT0gTlVMTCA/IDAgOiAqKCh1aW50MzJfdCAqKXJldCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfZ2V0X3UzMik7Ci0gCi0tdWludDhfdCBuZnRubF90YWJsZV9nZXRfdTgoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyKQotK3VpbnQ4X3QgX19FWFBPUlRFRCBuZnRubF90YWJsZV9nZXRfdTgoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyKQotIHsKLSAJY29uc3Qgdm9pZCAqcmV0ID0gbmZ0bmxfdGFibGVfZ2V0KHQsIGF0dHIpOwotIAlyZXR1cm4gcmV0ID09IE5VTEwgPyAwIDogKigodWludDhfdCAqKXJldCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfZ2V0X3U4KTsKLSAKLS1jb25zdCBjaGFyICpuZnRubF90YWJsZV9nZXRfc3RyKGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDE2X3QgYXR0cikKLStjb25zdCBjaGFyIF9fRVhQT1JURUQgKm5mdG5sX3RhYmxlX2dldF9zdHIoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCB1aW50MTZfdCBhdHRyKQotIHsKLSAJcmV0dXJuIG5mdG5sX3RhYmxlX2dldCh0LCBhdHRyKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9nZXRfc3RyKTsKLSAKLS12b2lkIG5mdG5sX3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsIGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfbmxtc2dfYnVpbGRfcGF5bG9hZChzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0KQotIHsKLSAJaWYgKHQtPmZsYWdzICYgKDEgPDwgTkZUTkxfVEFCTEVfTkFNRSkpCi0gCQltbmxfYXR0cl9wdXRfc3RyeihubGgsIE5GVEFfVEFCTEVfTkFNRSwgdC0+bmFtZSk7Ci0gCWlmICh0LT5mbGFncyAmICgxIDw8IE5GVE5MX1RBQkxFX0ZMQUdTKSkKLSAJCW1ubF9hdHRyX3B1dF91MzIobmxoLCBORlRBX1RBQkxFX0ZMQUdTLCBodG9ubCh0LT50YWJsZV9mbGFncykpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfdGFibGVfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIHsKLUBAIC0yMTksNyArMjA0LDcgQEAgc3RhdGljIGludCBuZnRubF90YWJsZV9wYXJzZV9hdHRyX2NiKGNvbnN0IHN0cnVjdCBubGF0dHIgKmF0dHIsIHZvaWQgKmRhdGEpCi0gCXJldHVybiBNTkxfQ0JfT0s7Ci0gfQotIAotLWludCBuZnRubF90YWJsZV9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3RhYmxlICp0KQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX25sbXNnX3BhcnNlKGNvbnN0IHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQpCi0gewotIAlzdHJ1Y3QgbmxhdHRyICp0YltORlRBX1RBQkxFX01BWCsxXSA9IHt9OwotIAlzdHJ1Y3QgbmZnZW5tc2cgKm5mZyA9IG1ubF9ubG1zZ19nZXRfcGF5bG9hZChubGgpOwotQEAgLTI0OSw3ICsyMzQsNiBAQCBpbnQgbmZ0bmxfdGFibGVfbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF90YWJsZSAqdCkKLSAKLSAJcmV0dXJuIDA7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfbmxtc2dfcGFyc2UpOwotIAotICNpZmRlZiBKU09OX1BBUlNJTkcKLSBpbnQgbmZ0bmxfamFuc3Nvbl9wYXJzZV90YWJsZShzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIGpzb25fdCAqdHJlZSwKLUBAIC0zMzAsMTkgKzMxNCwxNyBAQCBzdGF0aWMgaW50IG5mdG5sX3RhYmxlX2RvX3BhcnNlKHN0cnVjdCBuZnRubF90YWJsZSAqdCwgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cAotIAlyZXR1cm4gcmV0OwotIH0KLSAKLS1pbnQgbmZ0bmxfdGFibGVfcGFyc2Uoc3RydWN0IG5mdG5sX3RhYmxlICp0LCBlbnVtIG5mdG5sX3BhcnNlX3R5cGUgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9wYXJzZShzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJICAgIGNvbnN0IGNoYXIgKmRhdGEsIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycikKLSB7Ci0gCXJldHVybiBuZnRubF90YWJsZV9kb19wYXJzZSh0LCB0eXBlLCBkYXRhLCBlcnIsIE5GVE5MX1BBUlNFX0JVRkZFUik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfcGFyc2UpOwotIAotLWludCBuZnRubF90YWJsZV9wYXJzZV9maWxlKHN0cnVjdCBuZnRubF90YWJsZSAqdCwgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfcGFyc2VfZmlsZShzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAotIAkJCSBGSUxFICpmcCwgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQotIHsKLSAJcmV0dXJuIG5mdG5sX3RhYmxlX2RvX3BhcnNlKHQsIHR5cGUsIGZwLCBlcnIsIE5GVE5MX1BBUlNFX0ZJTEUpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX3BhcnNlX2ZpbGUpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfdGFibGVfZXhwb3J0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCQkJICAgICAgY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LCBpbnQgdHlwZSkKLUBAIC00MDAsMTMgKzM4MiwxMiBAQCBzdGF0aWMgaW50IG5mdG5sX3RhYmxlX2NtZF9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLAotIAlyZXR1cm4gb2Zmc2V0OwotIH0KLSAKLS1pbnQgbmZ0bmxfdGFibGVfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlICp0LAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwKLSAJCQkgdWludDMyX3QgdHlwZSwgdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfdGFibGVfY21kX3NucHJpbnRmKGJ1Ziwgc2l6ZSwgdCwgbmZ0bmxfZmxhZzJjbWQoZmxhZ3MpLCB0eXBlLAotIAkJCQkgICAgICBmbGFncyk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfc25wcmludGYpOwotIAotIHN0YXRpYyBpbnQgbmZ0bmxfdGFibGVfZG9fc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgdm9pZCAqdCwKLSAJCQkJICAgdWludDMyX3QgY21kLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncykKLUBAIC00MTQsMTkgKzM5NSwxOCBAQCBzdGF0aWMgaW50IG5mdG5sX3RhYmxlX2RvX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHZvaWQgKnQsCi0gCXJldHVybiBuZnRubF90YWJsZV9zbnByaW50ZihidWYsIHNpemUsIHQsIHR5cGUsIGZsYWdzKTsKLSB9Ci0gCi0taW50IG5mdG5sX3RhYmxlX2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZSAqdCwgdWludDMyX3QgdHlwZSwKLStpbnQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9mcHJpbnRmKEZJTEUgKmZwLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfdGFibGUgKnQsIHVpbnQzMl90IHR5cGUsCi0gCQkJdWludDMyX3QgZmxhZ3MpCi0gewotIAlyZXR1cm4gbmZ0bmxfZnByaW50ZihmcCwgdCwgTkZUTkxfQ01EX1VOU1BFQywgdHlwZSwgZmxhZ3MsCi0gCQkJICAgbmZ0bmxfdGFibGVfZG9fc25wcmludGYpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2ZwcmludGYpOwotIAotIHN0cnVjdCBuZnRubF90YWJsZV9saXN0IHsKLSAJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwotIH07Ci0gCi0tc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKm5mdG5sX3RhYmxlX2xpc3RfYWxsb2Modm9pZCkKLStzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCBfX0VYUE9SVEVEICpuZnRubF90YWJsZV9saXN0X2FsbG9jKHZvaWQpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCAqbGlzdDsKLSAKLUBAIC00MzgsOSArNDE4LDggQEAgc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKm5mdG5sX3RhYmxlX2xpc3RfYWxsb2Modm9pZCkKLSAKLSAJcmV0dXJuIGxpc3Q7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfbGlzdF9hbGxvYyk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9saXN0X2ZyZWUoc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKmxpc3QpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCAqbGlzdCkKLSB7Ci0gCXN0cnVjdCBuZnRubF90YWJsZSAqciwgKnRtcDsKLSAKLUBAIC00NTAsMzMgKzQyOSwyOCBAQCB2b2lkIG5mdG5sX3RhYmxlX2xpc3RfZnJlZShzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCAqbGlzdCkKLSAJfQotIAl4ZnJlZShsaXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9saXN0X2ZyZWUpOwotIAotLWludCBuZnRubF90YWJsZV9saXN0X2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICpsaXN0KQotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX2xpc3RfaXNfZW1wdHkoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKmxpc3QpCi0gewotIAlyZXR1cm4gbGlzdF9lbXB0eSgmbGlzdC0+bGlzdCk7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfbGlzdF9pc19lbXB0eSk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9saXN0X2FkZChzdHJ1Y3QgbmZ0bmxfdGFibGUgKnIsIHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICpsaXN0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9saXN0X2FkZChzdHJ1Y3QgbmZ0bmxfdGFibGUgKnIsIHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICpsaXN0KQotIHsKLSAJbGlzdF9hZGQoJnItPmhlYWQsICZsaXN0LT5saXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9saXN0X2FkZCk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF90YWJsZSAqciwgc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKmxpc3QpCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX2xpc3RfYWRkX3RhaWwoc3RydWN0IG5mdG5sX3RhYmxlICpyLCBzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCAqbGlzdCkKLSB7Ci0gCWxpc3RfYWRkX3RhaWwoJnItPmhlYWQsICZsaXN0LT5saXN0KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9saXN0X2FkZF90YWlsKTsKLSAKLS12b2lkIG5mdG5sX3RhYmxlX2xpc3RfZGVsKHN0cnVjdCBuZnRubF90YWJsZSAqdCkKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfdGFibGVfbGlzdF9kZWwoc3RydWN0IG5mdG5sX3RhYmxlICp0KQotIHsKLSAJbGlzdF9kZWwoJnQtPmhlYWQpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2xpc3RfZGVsKTsKLSAKLS1pbnQgbmZ0bmxfdGFibGVfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICp0YWJsZV9saXN0LAotK2ludCBfX0VYUE9SVEVEIG5mdG5sX3RhYmxlX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdCAqdGFibGVfbGlzdCwKLSAJCQkgICBpbnQgKCpjYikoc3RydWN0IG5mdG5sX3RhYmxlICp0LCB2b2lkICpkYXRhKSwKLSAJCQkgICB2b2lkICpkYXRhKQotIHsKLUBAIC00OTAsMTQgKzQ2NCwxMyBAQCBpbnQgbmZ0bmxfdGFibGVfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICp0YWJsZV9saXN0LAotIAl9Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RhYmxlX2xpc3RfZm9yZWFjaCk7Ci0gCi0gc3RydWN0IG5mdG5sX3RhYmxlX2xpc3RfaXRlciB7Ci0gCWNvbnN0IHN0cnVjdCBuZnRubF90YWJsZV9saXN0CSpsaXN0OwotIAlzdHJ1Y3QgbmZ0bmxfdGFibGUJCSpjdXI7Ci0gfTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdF9pdGVyICoKLStzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdF9pdGVyIF9fRVhQT1JURUQgKgotIG5mdG5sX3RhYmxlX2xpc3RfaXRlcl9jcmVhdGUoY29uc3Qgc3RydWN0IG5mdG5sX3RhYmxlX2xpc3QgKmwpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdF9pdGVyICppdGVyOwotQEAgLTUxNCw5ICs0ODcsOCBAQCBuZnRubF90YWJsZV9saXN0X2l0ZXJfY3JlYXRlKGNvbnN0IHN0cnVjdCBuZnRubF90YWJsZV9saXN0ICpsKQotIAotIAlyZXR1cm4gaXRlcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9saXN0X2l0ZXJfY3JlYXRlKTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfdGFibGUgKm5mdG5sX3RhYmxlX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF90YWJsZV9saXN0X2l0ZXIgKml0ZXIpCi0rc3RydWN0IG5mdG5sX3RhYmxlIF9fRVhQT1JURUQgKm5mdG5sX3RhYmxlX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF90YWJsZV9saXN0X2l0ZXIgKml0ZXIpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfdGFibGUgKnIgPSBpdGVyLT5jdXI7Ci0gCi1AQCAtNTMwLDEwICs1MDIsOCBAQCBzdHJ1Y3QgbmZ0bmxfdGFibGUgKm5mdG5sX3RhYmxlX2xpc3RfaXRlcl9uZXh0KHN0cnVjdCBuZnRubF90YWJsZV9saXN0X2l0ZXIgKml0ZQotIAotIAlyZXR1cm4gcjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF90YWJsZV9saXN0X2l0ZXJfbmV4dCk7Ci0gCi0tdm9pZCBuZnRubF90YWJsZV9saXN0X2l0ZXJfZGVzdHJveShjb25zdCBzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdF9pdGVyICppdGVyKQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90YWJsZV9saXN0X2l0ZXJfZGVzdHJveShjb25zdCBzdHJ1Y3QgbmZ0bmxfdGFibGVfbGlzdF9pdGVyICppdGVyKQotIHsKLSAJeGZyZWUoaXRlcik7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdGFibGVfbGlzdF9pdGVyX2Rlc3Ryb3kpOwotZGlmZiAtLWdpdCBhL3NyYy90cmFjZS5jIGIvc3JjL3RyYWNlLmMKLWluZGV4IGJkMDVkM2MuLjQ3MzllZjkgMTAwNjQ0Ci0tLS0gYS9zcmMvdHJhY2UuYwotKysrIGIvc3JjL3RyYWNlLmMKLUBAIC01MiwxNCArNTIsMTIgQEAgc3RydWN0IG5mdG5sX3RyYWNlIHsKLSAJdWludDMyX3QgZmxhZ3M7Ci0gfTsKLSAKLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RyYWNlX2FsbG9jKTsKLS1zdHJ1Y3QgbmZ0bmxfdHJhY2UgKm5mdG5sX3RyYWNlX2FsbG9jKHZvaWQpCi0rc3RydWN0IG5mdG5sX3RyYWNlIF9fRVhQT1JURUQgKm5mdG5sX3RyYWNlX2FsbG9jKHZvaWQpCi0gewotIAlyZXR1cm4gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbmZ0bmxfdHJhY2UpKTsKLSB9Ci0gCi0tRVhQT1JUX1NZTUJPTChuZnRubF90cmFjZV9mcmVlKTsKLS12b2lkIG5mdG5sX3RyYWNlX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0KQotK3ZvaWQgX19FWFBPUlRFRCBuZnRubF90cmFjZV9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF90cmFjZSAqdCkKLSB7Ci0gCXhmcmVlKHQtPmNoYWluKTsKLSAJeGZyZWUodC0+dGFibGUpOwotQEAgLTcwLDggKzY4LDcgQEAgdm9pZCBuZnRubF90cmFjZV9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF90cmFjZSAqdCkKLSAJeGZyZWUodCk7Ci0gfQotIAotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdHJhY2VfaXNfc2V0KTsKLS1ib29sIG5mdG5sX3RyYWNlX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnQsIHVpbnQxNl90IGF0dHIpCi0rYm9vbCBfX0VYUE9SVEVEIG5mdG5sX3RyYWNlX2lzX3NldChjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnQsIHVpbnQxNl90IGF0dHIpCi0gewotIAlyZXR1cm4gdC0+ZmxhZ3MgJiAoMSA8PCBhdHRyKTsKLSB9Ci1AQCAtMTMwLDggKzEyNyw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfdHJhY2VfcGFyc2VfYXR0cl9jYihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCB2b2lkICpkYXRhKQotIAlyZXR1cm4gTU5MX0NCX09LOwotIH0KLSAKLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RyYWNlX2dldF9kYXRhKTsKLS1jb25zdCB2b2lkICpuZnRubF90cmFjZV9nZXRfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLAotK2NvbnN0IHZvaWQgX19FWFBPUlRFRCAqbmZ0bmxfdHJhY2VfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0cmFjZSwKLSAJCQkJIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbikKLSB7Ci0gCWVudW0gbmZ0bmxfdHJhY2VfYXR0ciBhdHRyID0gdHlwZTsKLUBAIC0yMDEsOCArMTk3LDcgQEAgY29uc3Qgdm9pZCAqbmZ0bmxfdHJhY2VfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0cmFjZSwKLSAJcmV0dXJuIE5VTEw7Ci0gfQotIAotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdHJhY2VfZ2V0X3N0cik7Ci0tY29uc3QgY2hhciAqbmZ0bmxfdHJhY2VfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotK2NvbnN0IGNoYXIgX19FWFBPUlRFRCAqbmZ0bmxfdHJhY2VfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotIHsKLSAJaWYgKCFuZnRubF90cmFjZV9pc19zZXQodHJhY2UsIHR5cGUpKQotIAkJcmV0dXJuIE5VTEw7Ci1AQCAtMjE2LDggKzIxMSw3IEBAIGNvbnN0IGNoYXIgKm5mdG5sX3RyYWNlX2dldF9zdHIoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0cmFjZSwgdWludDE2X3QgdHlwZSkKLSAJcmV0dXJuIE5VTEw7Ci0gfQotIAotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdHJhY2VfZ2V0X3UxNik7Ci0tdWludDE2X3QgbmZ0bmxfdHJhY2VfZ2V0X3UxNihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotK3VpbnQxNl90IF9fRVhQT1JURUQgbmZ0bmxfdHJhY2VfZ2V0X3UxNihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotIHsKLSAJY29uc3QgdWludDE2X3QgKmQ7Ci0gCXVpbnQzMl90IGRsZW47Ci1AQCAtMjI5LDggKzIyMyw3IEBAIHVpbnQxNl90IG5mdG5sX3RyYWNlX2dldF91MTYoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0cmFjZSwgdWludDE2X3QgdHlwZSkKLSAJcmV0dXJuIDA7Ci0gfQotIAotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdHJhY2VfZ2V0X3UzMik7Ci0tdWludDMyX3QgbmZ0bmxfdHJhY2VfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotK3VpbnQzMl90IF9fRVhQT1JURUQgbmZ0bmxfdHJhY2VfZ2V0X3UzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotIHsKLSAJY29uc3QgdWludDMyX3QgKmQ7Ci0gCXVpbnQzMl90IGRsZW47Ci1AQCAtMjQyLDggKzIzNSw3IEBAIHVpbnQzMl90IG5mdG5sX3RyYWNlX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3RyYWNlICp0cmFjZSwgdWludDE2X3QgdHlwZSkKLSAJcmV0dXJuIDA7Ci0gfQotIAotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdHJhY2VfZ2V0X3U2NCk7Ci0tdWludDY0X3QgbmZ0bmxfdHJhY2VfZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotK3VpbnQ2NF90IF9fRVhQT1JURUQgbmZ0bmxfdHJhY2VfZ2V0X3U2NChjb25zdCBzdHJ1Y3QgbmZ0bmxfdHJhY2UgKnRyYWNlLCB1aW50MTZfdCB0eXBlKQotIHsKLSAJY29uc3QgdWludDY0X3QgKmQ7Ci0gCXVpbnQzMl90IGRsZW47Ci1AQCAtMzIzLDkgKzMxNSw4IEBAIHN0YXRpYyBpbnQgbmZ0bmxfdHJhY2VfcGFyc2VfdmVyZGljdChjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAotIAl9Ci0gCXJldHVybiAwOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3RyYWNlX25sbXNnX3BhcnNlKTsKLSAKLS1pbnQgbmZ0bmxfdHJhY2Vfbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF90cmFjZSAqdCkKLStpbnQgX19FWFBPUlRFRCBuZnRubF90cmFjZV9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX3RyYWNlICp0KQotIHsKLSAJc3RydWN0IG5mZ2VubXNnICpuZmcgPSBtbmxfbmxtc2dfZ2V0X3BheWxvYWQobmxoKTsKLSAJc3RydWN0IG5sYXR0ciAqdGJbTkZUQV9UUkFDRV9NQVgrMV0gPSB7fTsKLWRpZmYgLS1naXQgYS9zcmMvdWRhdGEuYyBiL3NyYy91ZGF0YS5jCi1pbmRleCBkNjc5ZGQwLi43ZTJkZTBmIDEwMDY0NAotLS0tIGEvc3JjL3VkYXRhLmMKLSsrKyBiL3NyYy91ZGF0YS5jCi1AQCAtMTYsNyArMTYsNyBAQAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0tc3RydWN0IG5mdG5sX3VkYXRhX2J1ZiAqbmZ0bmxfdWRhdGFfYnVmX2FsbG9jKHVpbnQzMl90IGRhdGFfc2l6ZSkKLStzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmIF9fRVhQT1JURUQgKm5mdG5sX3VkYXRhX2J1Zl9hbGxvYyh1aW50MzJfdCBkYXRhX3NpemUpCi0gewotIAlzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWY7Ci0gCi1AQCAtMjgsNDcgKzI4LDQwIEBAIHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKm5mdG5sX3VkYXRhX2J1Zl9hbGxvYyh1aW50MzJfdCBkYXRhX3NpemUpCi0gCi0gCXJldHVybiBidWY7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdWRhdGFfYnVmX2FsbG9jKTsKLSAKLS12b2lkIG5mdG5sX3VkYXRhX2J1Zl9mcmVlKGNvbnN0IHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZikKLSt2b2lkIF9fRVhQT1JURUQgbmZ0bmxfdWRhdGFfYnVmX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhX2J1ZiAqYnVmKQotIHsKLSAJeGZyZWUoYnVmKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9idWZfZnJlZSk7Ci0gCi0tdWludDMyX3QgbmZ0bmxfdWRhdGFfYnVmX2xlbihjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0rdWludDMyX3QgX19FWFBPUlRFRCBuZnRubF91ZGF0YV9idWZfbGVuKGNvbnN0IHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZikKLSB7Ci0gCXJldHVybiAodWludDMyX3QpKGJ1Zi0+ZW5kIC0gYnVmLT5kYXRhKTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9idWZfbGVuKTsKLSAKLS12b2lkICpuZnRubF91ZGF0YV9idWZfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0rdm9pZCBfX0VYUE9SVEVEICpuZnRubF91ZGF0YV9idWZfZGF0YShjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0gewotIAlyZXR1cm4gKHZvaWQgKilidWYtPmRhdGE7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdWRhdGFfYnVmX2RhdGEpOwotIAotLXZvaWQgbmZ0bmxfdWRhdGFfYnVmX3B1dChzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYsIGNvbnN0IHZvaWQgKmRhdGEsCi0rdm9pZCBfX0VYUE9SVEVEIG5mdG5sX3VkYXRhX2J1Zl9wdXQoc3RydWN0IG5mdG5sX3VkYXRhX2J1ZiAqYnVmLCBjb25zdCB2b2lkICpkYXRhLAotIAkJCSB1aW50MzJfdCBsZW4pCi0gewotIAltZW1jcHkoYnVmLT5kYXRhLCBkYXRhLCBsZW4gPD0gYnVmLT5zaXplID8gbGVuIDogYnVmLT5zaXplKTsKLSAJYnVmLT5lbmQgPSBidWYtPmRhdGEgKyBsZW47Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdWRhdGFfYnVmX3B1dCk7Ci0gCi0tc3RydWN0IG5mdG5sX3VkYXRhICpuZnRubF91ZGF0YV9zdGFydChjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0rc3RydWN0IG5mdG5sX3VkYXRhIF9fRVhQT1JURUQgKm5mdG5sX3VkYXRhX3N0YXJ0KGNvbnN0IHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZikKLSB7Ci0gCXJldHVybiAoc3RydWN0IG5mdG5sX3VkYXRhICopYnVmLT5kYXRhOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3VkYXRhX3N0YXJ0KTsKLSAKLS1zdHJ1Y3QgbmZ0bmxfdWRhdGEgKm5mdG5sX3VkYXRhX2VuZChjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0rc3RydWN0IG5mdG5sX3VkYXRhIF9fRVhQT1JURUQgKm5mdG5sX3VkYXRhX2VuZChjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYpCi0gewotIAlyZXR1cm4gKHN0cnVjdCBuZnRubF91ZGF0YSAqKWJ1Zi0+ZW5kOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3VkYXRhX2VuZCk7Ci0gCi0tYm9vbCBuZnRubF91ZGF0YV9wdXQoc3RydWN0IG5mdG5sX3VkYXRhX2J1ZiAqYnVmLCB1aW50OF90IHR5cGUsIHVpbnQzMl90IGxlbiwKLStib29sIF9fRVhQT1JURUQgbmZ0bmxfdWRhdGFfcHV0KHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZiwgdWludDhfdCB0eXBlLCB1aW50MzJfdCBsZW4sCi0gCQkgICAgIGNvbnN0IHZvaWQgKnZhbHVlKQotIHsKLSAJc3RydWN0IG5mdG5sX3VkYXRhICphdHRyOwotQEAgLTg1LDU1ICs3OCw0NyBAQCBib29sIG5mdG5sX3VkYXRhX3B1dChzdHJ1Y3QgbmZ0bmxfdWRhdGFfYnVmICpidWYsIHVpbnQ4X3QgdHlwZSwgdWludDMyX3QgbGVuLAotIAotIAlyZXR1cm4gdHJ1ZTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9wdXQpOwotIAotLWJvb2wgbmZ0bmxfdWRhdGFfcHV0X3N0cnooc3RydWN0IG5mdG5sX3VkYXRhX2J1ZiAqYnVmLCB1aW50OF90IHR5cGUsCi0rYm9vbCBfX0VYUE9SVEVEIG5mdG5sX3VkYXRhX3B1dF9zdHJ6KHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZiwgdWludDhfdCB0eXBlLAotIAkJCSAgY29uc3QgY2hhciAqc3RyeikKLSB7Ci0gCXJldHVybiBuZnRubF91ZGF0YV9wdXQoYnVmLCB0eXBlLCBzdHJsZW4oc3RyeikgKyAxLCBzdHJ6KTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9wdXRfc3Ryeik7Ci0gCi0tYm9vbCBuZnRubF91ZGF0YV9wdXRfdTMyKHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZiwgdWludDhfdCB0eXBlLAotK2Jvb2wgX19FWFBPUlRFRCBuZnRubF91ZGF0YV9wdXRfdTMyKHN0cnVjdCBuZnRubF91ZGF0YV9idWYgKmJ1ZiwgdWludDhfdCB0eXBlLAotIAkJCSB1aW50MzJfdCBkYXRhKQotIHsKLSAJcmV0dXJuIG5mdG5sX3VkYXRhX3B1dChidWYsIHR5cGUsIHNpemVvZihkYXRhKSwgJmRhdGEpOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3VkYXRhX3B1dF91MzIpOwotIAotLXVpbnQ4X3QgbmZ0bmxfdWRhdGFfdHlwZShjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGEgKmF0dHIpCi0rdWludDhfdCBfX0VYUE9SVEVEIG5mdG5sX3VkYXRhX3R5cGUoY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotIHsKLSAJcmV0dXJuIGF0dHItPnR5cGU7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdWRhdGFfdHlwZSk7Ci0gCi0tdWludDhfdCBuZnRubF91ZGF0YV9sZW4oY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotK3VpbnQ4X3QgX19FWFBPUlRFRCBuZnRubF91ZGF0YV9sZW4oY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotIHsKLSAJcmV0dXJuIGF0dHItPmxlbjsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9sZW4pOwotIAotLXZvaWQgKm5mdG5sX3VkYXRhX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGEgKmF0dHIpCi0rdm9pZCBfX0VYUE9SVEVEICpuZnRubF91ZGF0YV9nZXQoY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotIHsKLSAJcmV0dXJuICh2b2lkICopYXR0ci0+dmFsdWU7Ci0gfQotLUVYUE9SVF9TWU1CT0wobmZ0bmxfdWRhdGFfZ2V0KTsKLSAKLS11aW50MzJfdCBuZnRubF91ZGF0YV9nZXRfdTMyKGNvbnN0IHN0cnVjdCBuZnRubF91ZGF0YSAqYXR0cikKLSt1aW50MzJfdCBfX0VYUE9SVEVEIG5mdG5sX3VkYXRhX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotIHsKLSAJdWludDMyX3QgKmRhdGEgPSAodWludDMyX3QgKilhdHRyLT52YWx1ZTsKLSAKLSAJcmV0dXJuICpkYXRhOwotIH0KLS1FWFBPUlRfU1lNQk9MKG5mdG5sX3VkYXRhX2dldF91MzIpOwotIAotLXN0cnVjdCBuZnRubF91ZGF0YSAqbmZ0bmxfdWRhdGFfbmV4dChjb25zdCBzdHJ1Y3QgbmZ0bmxfdWRhdGEgKmF0dHIpCi0rc3RydWN0IG5mdG5sX3VkYXRhIF9fRVhQT1JURUQgKm5mdG5sX3VkYXRhX25leHQoY29uc3Qgc3RydWN0IG5mdG5sX3VkYXRhICphdHRyKQotIHsKLSAJcmV0dXJuIChzdHJ1Y3QgbmZ0bmxfdWRhdGEgKikmYXR0ci0+dmFsdWVbYXR0ci0+bGVuXTsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9uZXh0KTsKLSAKLS1pbnQgbmZ0bmxfdWRhdGFfcGFyc2UoY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyX3QgZGF0YV9sZW4sIG5mdG5sX3VkYXRhX2NiX3QgY2IsCi0raW50IF9fRVhQT1JURUQgbmZ0bmxfdWRhdGFfcGFyc2UoY29uc3Qgdm9pZCAqZGF0YSwgdWludDMyX3QgZGF0YV9sZW4sIG5mdG5sX3VkYXRhX2NiX3QgY2IsCi0gCQkgICAgICB2b2lkICpjYl9kYXRhKQotIHsKLSAJaW50IHJldCA9IDA7Ci1AQCAtMTQ3LDQgKzEzMiwzIEBAIGludCBuZnRubF91ZGF0YV9wYXJzZShjb25zdCB2b2lkICpkYXRhLCB1aW50MzJfdCBkYXRhX2xlbiwgbmZ0bmxfdWRhdGFfY2JfdCBjYiwKLSAKLSAJcmV0dXJuIHJldDsKLSB9Ci0tRVhQT1JUX1NZTUJPTChuZnRubF91ZGF0YV9wYXJzZSk7Ci0tLSAKLTIuMTEuMCAoQXBwbGUgR2l0LTgxKQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmwvMDAwMS1Nb3ZlLWV4cG9ydHMtYmVmb3JlLXN5bWJvbC1kZWZpbml0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDEtTW92ZS1leHBvcnRzLWJlZm9yZS1zeW1ib2wtZGVmaW5pdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTVmZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDEtTW92ZS1leHBvcnRzLWJlZm9yZS1zeW1ib2wtZGVmaW5pdGlvbi5wYXRjaApAQCAtMCwwICsxLDI4OSBAQAorRnJvbSAyMWViNTlmYmQwNzFlYmZmYjg0OTUyMzI3NjY4MjQ5NDRmYjUyMWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA3IE5vdiAyMDE4IDIxOjE5OjUzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1vdmUgZXhwb3J0cyBiZWZvcmUgc3ltYm9sIGRlZmluaXRpb24KKworQmFzZWQgb24gNzk2NjAyMCAoInNyYzogRml4IGV4cG9ydGluZyBzeW1ib2xzIHdpdGggY2xhbmciKSwgd2hlbgorRVhQT1JUX1NZTUJPTCBpcyBsb2NhdGVkIGFmdGVyIGZ1bmN0aW9uIGRlZmluaXRpb24sIGNsYW5nIHdvbid0IHByb3Blcmx5CitleHBvcnQgdGhlIGZ1bmN0aW9uLCByZXN1bHRpbmcgaW4gYSBsaWJyYXJ5IHdpdGggbm8gc3ltYm9scyB3aGVuIGJ1aWx0IHdpdGgKK2NsYW5nLgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CistLS0KKyBzcmMvZmxvd3RhYmxlLmMgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZmxvd3RhYmxlLmMgYi9zcmMvZmxvd3RhYmxlLmMKK2luZGV4IGMxZGRhZTQuLmQ3NDM0ZTMgMTAwNjQ0CistLS0gYS9zcmMvZmxvd3RhYmxlLmMKKysrKyBiL3NyYy9mbG93dGFibGUuYworQEAgLTM0LDEyICszNCwxMyBAQCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlIHsKKyAJdWludDMyX3QJCWZsYWdzOworIH07CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfYWxsb2MpOworIHN0cnVjdCBuZnRubF9mbG93dGFibGUgKm5mdG5sX2Zsb3d0YWJsZV9hbGxvYyh2b2lkKQorIHsKKyAJcmV0dXJuIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSkpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9hbGxvYyk7CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfZnJlZSk7Cisgdm9pZCBuZnRubF9mbG93dGFibGVfZnJlZShjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjKQorIHsKKyAJaW50IGk7CitAQCAtNTYsMTQgKzU3LDE0IEBAIHZvaWQgbmZ0bmxfZmxvd3RhYmxlX2ZyZWUoY29uc3Qgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYykKKyAJfQorIAl4ZnJlZShjKTsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfZnJlZSk7CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfaXNfc2V0KTsKKyBib29sIG5mdG5sX2Zsb3d0YWJsZV9pc19zZXQoY29uc3Qgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYywgdWludDE2X3QgYXR0cikKKyB7CisgCXJldHVybiBjLT5mbGFncyAmICgxIDw8IGF0dHIpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9pc19zZXQpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3Vuc2V0KTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV91bnNldChzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCB1aW50MTZfdCBhdHRyKQorIHsKKyAJaW50IGk7CitAQCAtOTYsNyArOTcsNiBAQCB2b2lkIG5mdG5sX2Zsb3d0YWJsZV91bnNldChzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCB1aW50MTZfdCBhdHRyKQorIAorIAljLT5mbGFncyAmPSB+KDEgPDwgYXR0cik7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3Vuc2V0KTsKKyAKKyBzdGF0aWMgdWludDMyX3QgbmZ0bmxfZmxvd3RhYmxlX3ZhbGlkYXRlW05GVE5MX0ZMT1dUQUJMRV9NQVggKyAxXSA9IHsKKyAJW05GVE5MX0ZMT1dUQUJMRV9IT09LTlVNXQk9IHNpemVvZih1aW50MzJfdCksCitAQCAtMTA1LDYgKzEwNSw3IEBAIHN0YXRpYyB1aW50MzJfdCBuZnRubF9mbG93dGFibGVfdmFsaWRhdGVbTkZUTkxfRkxPV1RBQkxFX01BWCArIDFdID0geworIAlbTkZUTkxfRkxPV1RBQkxFX0ZMQUdTXQkJPSBzaXplb2YodWludDMyX3QpLAorIH07CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfc2V0X2RhdGEpOworIGludCBuZnRubF9mbG93dGFibGVfc2V0X2RhdGEoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYywgdWludDE2X3QgYXR0ciwKKyAJCQkgICAgIGNvbnN0IHZvaWQgKmRhdGEsIHVpbnQzMl90IGRhdGFfbGVuKQorIHsKK0BAIC0xNzAsMzIgKzE3MSwzMiBAQCBpbnQgbmZ0bmxfZmxvd3RhYmxlX3NldF9kYXRhKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIsCisgCWMtPmZsYWdzIHw9ICgxIDw8IGF0dHIpOworIAlyZXR1cm4gMDsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfc2V0X2RhdGEpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3NldCk7Cisgdm9pZCBuZnRubF9mbG93dGFibGVfc2V0KHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IHZvaWQgKmRhdGEpCisgeworIAluZnRubF9mbG93dGFibGVfc2V0X2RhdGEoYywgYXR0ciwgZGF0YSwgbmZ0bmxfZmxvd3RhYmxlX3ZhbGlkYXRlW2F0dHJdKTsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfc2V0KTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9zZXRfdTMyKTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9zZXRfdTMyKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIsIHVpbnQzMl90IGRhdGEpCisgeworIAluZnRubF9mbG93dGFibGVfc2V0X2RhdGEoYywgYXR0ciwgJmRhdGEsIHNpemVvZih1aW50MzJfdCkpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9zZXRfdTMyKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9zZXRfczMyKTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9zZXRfczMyKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIsIGludDMyX3QgZGF0YSkKKyB7CisgCW5mdG5sX2Zsb3d0YWJsZV9zZXRfZGF0YShjLCBhdHRyLCAmZGF0YSwgc2l6ZW9mKGludDMyX3QpKTsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfc2V0X3MzMik7CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfc2V0X3N0cik7CisgaW50IG5mdG5sX2Zsb3d0YWJsZV9zZXRfc3RyKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIsIGNvbnN0IGNoYXIgKnN0cikKKyB7CisgCXJldHVybiBuZnRubF9mbG93dGFibGVfc2V0X2RhdGEoYywgYXR0ciwgc3RyLCBzdHJsZW4oc3RyKSArIDEpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9zZXRfc3RyKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9nZXRfZGF0YSk7CisgY29uc3Qgdm9pZCAqbmZ0bmxfZmxvd3RhYmxlX2dldF9kYXRhKGNvbnN0IHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsCisgCQkJCSAgICAgdWludDE2X3QgYXR0ciwgdWludDMyX3QgKmRhdGFfbGVuKQorIHsKK0BAIC0yMjksMjEgKzIzMCwyMSBAQCBjb25zdCB2b2lkICpuZnRubF9mbG93dGFibGVfZ2V0X2RhdGEoY29uc3Qgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYywKKyAJfQorIAlyZXR1cm4gTlVMTDsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfZ2V0X2RhdGEpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2dldCk7CisgY29uc3Qgdm9pZCAqbmZ0bmxfZmxvd3RhYmxlX2dldChjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCB1aW50MTZfdCBhdHRyKQorIHsKKyAJdWludDMyX3QgZGF0YV9sZW47CisgCXJldHVybiBuZnRubF9mbG93dGFibGVfZ2V0X2RhdGEoYywgYXR0ciwgJmRhdGFfbGVuKTsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfZ2V0KTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9nZXRfc3RyKTsKKyBjb25zdCBjaGFyICpuZnRubF9mbG93dGFibGVfZ2V0X3N0cihjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCB1aW50MTZfdCBhdHRyKQorIHsKKyAJcmV0dXJuIG5mdG5sX2Zsb3d0YWJsZV9nZXQoYywgYXR0cik7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2dldF9zdHIpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2dldF91MzIpOworIHVpbnQzMl90IG5mdG5sX2Zsb3d0YWJsZV9nZXRfdTMyKGNvbnN0IHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIpCisgeworIAl1aW50MzJfdCBkYXRhX2xlbjsKK0BAIC0yNTMsOCArMjU0LDggQEAgdWludDMyX3QgbmZ0bmxfZmxvd3RhYmxlX2dldF91MzIoY29uc3Qgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYywgdWludDE2X3QgYXR0cikKKyAKKyAJcmV0dXJuIHZhbCA/ICp2YWwgOiAwOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9nZXRfdTMyKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9nZXRfczMyKTsKKyBpbnQzMl90IG5mdG5sX2Zsb3d0YWJsZV9nZXRfczMyKGNvbnN0IHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIHVpbnQxNl90IGF0dHIpCisgeworIAl1aW50MzJfdCBkYXRhX2xlbjsKK0BAIC0yNjQsOCArMjY1LDggQEAgaW50MzJfdCBuZnRubF9mbG93dGFibGVfZ2V0X3MzMihjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCB1aW50MTZfdCBhdHRyKQorIAorIAlyZXR1cm4gdmFsID8gKnZhbCA6IDA7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2dldF9zMzIpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQpOworIHZvaWQgbmZ0bmxfZmxvd3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsCisgCQkJCQkgY29uc3Qgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYykKKyB7CitAQCAtMzAxLDcgKzMwMiw2IEBAIHZvaWQgbmZ0bmxfZmxvd3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQoc3RydWN0IG5sbXNnaGRyICpubGgsCisgCWlmIChjLT5mbGFncyAmICgxIDw8IE5GVE5MX0ZMT1dUQUJMRV9TSVpFKSkKKyAJCW1ubF9hdHRyX3B1dF91MzIobmxoLCBORlRBX0ZMT1dUQUJMRV9TSVpFLCBodG9ubChjLT5zaXplKSk7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX25sbXNnX2J1aWxkX3BheWxvYWQpOworIAorIHN0YXRpYyBpbnQgbmZ0bmxfZmxvd3RhYmxlX3BhcnNlX2F0dHJfY2IoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwgdm9pZCAqZGF0YSkKKyB7CitAQCAtNDEyLDYgKzQxMiw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfZmxvd3RhYmxlX3BhcnNlX2hvb2soc3RydWN0IG5sYXR0ciAqYXR0ciwgc3RydWN0IG5mdG5sX2Zsb3d0YWJsCisgCXJldHVybiAwOworIH0KKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9ubG1zZ19wYXJzZSk7CisgaW50IG5mdG5sX2Zsb3d0YWJsZV9ubG1zZ19wYXJzZShjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYykKKyB7CisgCXN0cnVjdCBubGF0dHIgKnRiW05GVEFfRkxPV1RBQkxFX01BWCArIDFdID0ge307CitAQCAtNDYwLDcgKzQ2MSw2IEBAIGludCBuZnRubF9mbG93dGFibGVfbmxtc2dfcGFyc2UoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZnRubF9mbG93dGFiCisgCisgCXJldHVybiByZXQ7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX25sbXNnX3BhcnNlKTsKKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqbmZ0bmxfaG9va251bTJzdHIoaW50IGZhbWlseSwgaW50IGhvb2tudW0pCisgeworQEAgLTYxMiwyMCArNjEyLDIwIEBAIHN0YXRpYyBpbnQgbmZ0bmxfZmxvd3RhYmxlX2RvX3BhcnNlKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsCisgCXJldHVybiByZXQ7CisgfQorIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3BhcnNlKTsKKyBpbnQgbmZ0bmxfZmxvd3RhYmxlX3BhcnNlKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsIGVudW0gbmZ0bmxfcGFyc2VfdHlwZSB0eXBlLAorIAkJCSAgY29uc3QgY2hhciAqZGF0YSwgc3RydWN0IG5mdG5sX3BhcnNlX2VyciAqZXJyKQorIHsKKyAJcmV0dXJuIG5mdG5sX2Zsb3d0YWJsZV9kb19wYXJzZShjLCB0eXBlLCBkYXRhLCBlcnIsIE5GVE5MX1BBUlNFX0JVRkZFUik7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3BhcnNlKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9wYXJzZV9maWxlKTsKKyBpbnQgbmZ0bmxfZmxvd3RhYmxlX3BhcnNlX2ZpbGUoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqYywKKyAJCQkgICAgICAgZW51bSBuZnRubF9wYXJzZV90eXBlIHR5cGUsCisgCQkJICAgICAgIEZJTEUgKmZwLCBzdHJ1Y3QgbmZ0bmxfcGFyc2VfZXJyICplcnIpCisgeworIAlyZXR1cm4gbmZ0bmxfZmxvd3RhYmxlX2RvX3BhcnNlKGMsIHR5cGUsIGZwLCBlcnIsIE5GVE5MX1BBUlNFX0ZJTEUpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9wYXJzZV9maWxlKTsKKyAKKyBzdGF0aWMgaW50IG5mdG5sX2Zsb3d0YWJsZV9leHBvcnQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKKyAJCQkJICBjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpjLCBpbnQgdHlwZSkKK0BAIC03MjAsNiArNzIwLDcgQEAgc3RhdGljIGludCBuZnRubF9mbG93dGFibGVfY21kX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCisgCXJldHVybiBvZmZzZXQ7CisgfQorIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX3NucHJpbnRmKTsKKyBpbnQgbmZ0bmxfZmxvd3RhYmxlX3NucHJpbnRmKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGNvbnN0IHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsCisgCQkJIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQorIHsKK0BAIC03MjksNyArNzMwLDYgQEAgaW50IG5mdG5sX2Zsb3d0YWJsZV9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmwKKyAJcmV0dXJuIG5mdG5sX2Zsb3d0YWJsZV9jbWRfc25wcmludGYoYnVmLCBzaXplLCBjLCBuZnRubF9mbGFnMmNtZChmbGFncyksCisgCQkJCQkgICAgdHlwZSwgZmxhZ3MpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9zbnByaW50Zik7CisgCisgc3RhdGljIGludCBuZnRubF9mbG93dGFibGVfZG9fc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgdm9pZCAqYywKKyAJCQkJICAgdWludDMyX3QgY21kLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncykKK0BAIC03MzcsMTggKzczNywxOSBAQCBzdGF0aWMgaW50IG5mdG5sX2Zsb3d0YWJsZV9kb19zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCB2b2lkICpjLAorIAlyZXR1cm4gbmZ0bmxfZmxvd3RhYmxlX3NucHJpbnRmKGJ1Ziwgc2l6ZSwgYywgdHlwZSwgZmxhZ3MpOworIH0KKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9mcHJpbnRmKTsKKyBpbnQgbmZ0bmxfZmxvd3RhYmxlX2ZwcmludGYoRklMRSAqZnAsIGNvbnN0IHN0cnVjdCBuZnRubF9mbG93dGFibGUgKmMsCisgCQkJICAgIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQorIHsKKyAJcmV0dXJuIG5mdG5sX2ZwcmludGYoZnAsIGMsIE5GVE5MX0NNRF9VTlNQRUMsIHR5cGUsIGZsYWdzLAorIAkJCSAgIG5mdG5sX2Zsb3d0YWJsZV9kb19zbnByaW50Zik7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2ZwcmludGYpOworIAorIHN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCB7CisgCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKyB9OworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfYWxsb2MpOworIHN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCAqbmZ0bmxfZmxvd3RhYmxlX2xpc3RfYWxsb2Modm9pZCkKKyB7CisgCXN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCAqbGlzdDsKK0BAIC03NjEsOCArNzYyLDggQEAgc3RydWN0IG5mdG5sX2Zsb3d0YWJsZV9saXN0ICpuZnRubF9mbG93dGFibGVfbGlzdF9hbGxvYyh2b2lkKQorIAorIAlyZXR1cm4gbGlzdDsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfbGlzdF9hbGxvYyk7CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfbGlzdF9mcmVlKTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9saXN0X2ZyZWUoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZV9saXN0ICpsaXN0KQorIHsKKyAJc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqcywgKnRtcDsKK0BAIC03NzMsMzQgKzc3NCwzNCBAQCB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9saXN0X2ZyZWUoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZV9saXN0ICpsaXN0KQorIAl9CisgCXhmcmVlKGxpc3QpOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9saXN0X2ZyZWUpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfaXNfZW1wdHkpOworIGludCBuZnRubF9mbG93dGFibGVfbGlzdF9pc19lbXB0eShjb25zdCBzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlX2xpc3QgKmxpc3QpCisgeworIAlyZXR1cm4gbGlzdF9lbXB0eSgmbGlzdC0+bGlzdCk7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfaXNfZW1wdHkpOworIAorK0VYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfYWRkKTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9saXN0X2FkZChzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlICpzLAorIAkJCSAgICAgIHN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCAqbGlzdCkKKyB7CisgCWxpc3RfYWRkKCZzLT5oZWFkLCAmbGlzdC0+bGlzdCk7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfYWRkKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9saXN0X2FkZF90YWlsKTsKKyB2b2lkIG5mdG5sX2Zsb3d0YWJsZV9saXN0X2FkZF90YWlsKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKnMsCisgCQkJCSAgIHN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCAqbGlzdCkKKyB7CisgCWxpc3RfYWRkX3RhaWwoJnMtPmhlYWQsICZsaXN0LT5saXN0KTsKKyB9CistRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfbGlzdF9hZGRfdGFpbCk7CisgCisrRVhQT1JUX1NZTUJPTChuZnRubF9mbG93dGFibGVfbGlzdF9kZWwpOworIHZvaWQgbmZ0bmxfZmxvd3RhYmxlX2xpc3RfZGVsKHN0cnVjdCBuZnRubF9mbG93dGFibGUgKnMpCisgeworIAlsaXN0X2RlbCgmcy0+aGVhZCk7CisgfQorLUVYUE9SVF9TWU1CT0wobmZ0bmxfZmxvd3RhYmxlX2xpc3RfZGVsKTsKKyAKKytFWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9saXN0X2ZvcmVhY2gpOworIGludCBuZnRubF9mbG93dGFibGVfbGlzdF9mb3JlYWNoKHN0cnVjdCBuZnRubF9mbG93dGFibGVfbGlzdCAqZmxvd3RhYmxlX2xpc3QsCisgCQkJCSBpbnQgKCpjYikoc3RydWN0IG5mdG5sX2Zsb3d0YWJsZSAqdCwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpCisgeworQEAgLTgxNCw0ICs4MTUsMyBAQCBpbnQgbmZ0bmxfZmxvd3RhYmxlX2xpc3RfZm9yZWFjaChzdHJ1Y3QgbmZ0bmxfZmxvd3RhYmxlX2xpc3QgKmZsb3d0YWJsZV9saXN0LAorIAl9CisgCXJldHVybiAwOworIH0KKy1FWFBPUlRfU1lNQk9MKG5mdG5sX2Zsb3d0YWJsZV9saXN0X2ZvcmVhY2gpOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDEtYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDEtYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmU2ODE3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubC8wMDAxLWF2b2lkLW5hbWluZy1sb2NhbC1mdW5jdGlvbi1hcy1vbmUtb2YtcHJpbnRmLWZhbWlseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxNCArMCwwIEBACi1Gcm9tIGY4NDBjYzBkYTU3MWQ5OGJlYjE3ODU1YzE3N2U5OTg2YmQwOTZiNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxMTo0NjowOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBuYW1pbmcgbG9jYWwgZnVuY3Rpb24gYXMgb25lIG9mIHByaW50ZiBmYW1pbHkKLQotRml4ZXMgYnVpbGQgaXNzdWVzIHdpdGggY2xhbmcKLWVycm9yOiBubyBtZW1iZXIgbmFtZWQgJ19fYnVpbHRpbl9fX3NucHJpbnRmX2NoaycgaW4gJ3N0cnVjdCBleHByX29wcycKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvZXhwcl9vcHMuaCAgIHwgMiArLQotIGluY2x1ZGUvb2JqLmggICAgICAgIHwgMiArLQotIHNyYy9idWZmZXIuYyAgICAgICAgIHwgMiArLQotIHNyYy9leHByLmMgICAgICAgICAgIHwgNCArKy0tCi0gc3JjL2V4cHIvYml0d2lzZS5jICAgfCAyICstCi0gc3JjL2V4cHIvYnl0ZW9yZGVyLmMgfCAyICstCi0gc3JjL2V4cHIvY21wLmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvY291bnRlci5jICAgfCAyICstCi0gc3JjL2V4cHIvY3QuYyAgICAgICAgfCAyICstCi0gc3JjL2V4cHIvZHVwLmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvZHluc2V0LmMgICAgfCAyICstCi0gc3JjL2V4cHIvZXh0aGRyLmMgICAgfCAyICstCi0gc3JjL2V4cHIvZmliLmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvZndkLmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvaGFzaC5jICAgICAgfCAyICstCi0gc3JjL2V4cHIvaW1tZWRpYXRlLmMgfCAyICstCi0gc3JjL2V4cHIvbGltaXQuYyAgICAgfCAyICstCi0gc3JjL2V4cHIvbG9nLmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvbG9va3VwLmMgICAgfCAyICstCi0gc3JjL2V4cHIvbWFzcS5jICAgICAgfCAyICstCi0gc3JjL2V4cHIvbWF0Y2guYyAgICAgfCAyICstCi0gc3JjL2V4cHIvbWV0YS5jICAgICAgfCAyICstCi0gc3JjL2V4cHIvbmF0LmMgICAgICAgfCAyICstCi0gc3JjL2V4cHIvbnVtZ2VuLmMgICAgfCAyICstCi0gc3JjL2V4cHIvb2JqcmVmLmMgICAgfCAyICstCi0gc3JjL2V4cHIvcGF5bG9hZC5jICAgfCAyICstCi0gc3JjL2V4cHIvcXVldWUuYyAgICAgfCAyICstCi0gc3JjL2V4cHIvcXVvdGEuYyAgICAgfCAyICstCi0gc3JjL2V4cHIvcmFuZ2UuYyAgICAgfCAyICstCi0gc3JjL2V4cHIvcmVkaXIuYyAgICAgfCAyICstCi0gc3JjL2V4cHIvcmVqZWN0LmMgICAgfCAyICstCi0gc3JjL2V4cHIvcnQuYyAgICAgICAgfCAyICstCi0gc3JjL2V4cHIvdGFyZ2V0LmMgICAgfCAyICstCi0gc3JjL29iai9jb3VudGVyLmMgICAgfCAyICstCi0gc3JjL29iai9jdF9oZWxwZXIuYyAgfCAyICstCi0gc3JjL29iai9xdW90YS5jICAgICAgfCAyICstCi0gc3JjL29iamVjdC5jICAgICAgICAgfCA0ICsrLS0KLSAzNyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwcl9vcHMuaCBiL2luY2x1ZGUvZXhwcl9vcHMuaAotaW5kZXggZTYzOTM5MC4uYzRmZTA1MCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZXhwcl9vcHMuaAotKysrIGIvaW5jbHVkZS9leHByX29wcy5oCi1AQCAtMTgsNyArMTgsNyBAQCBzdHJ1Y3QgZXhwcl9vcHMgewotIAljb25zdCB2b2lkICooKmdldCkoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUsIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbik7Ci0gCWludCAJKCpwYXJzZSkoc3RydWN0IG5mdG5sX2V4cHIgKmUsIHN0cnVjdCBubGF0dHIgKmF0dHIpOwotIAl2b2lkCSgqYnVpbGQpKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZSk7Ci0tCWludAkoKnNucHJpbnRmKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZSk7Ci0rCWludAkoKnNucHJpbnRmXykoY2hhciAqYnVmLCBzaXplX3QgbGVuLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncywgY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUpOwotIAlpbnQJKCpqc29uX3BhcnNlKShzdHJ1Y3QgbmZ0bmxfZXhwciAqZSwganNvbl90ICpkYXRhLAotIAkJCSAgICAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycik7Ci0gfTsKLWRpZmYgLS1naXQgYS9pbmNsdWRlL29iai5oIGIvaW5jbHVkZS9vYmouaAotaW5kZXggZDkwOTE5Zi4uNzcyY2FmZiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvb2JqLmgKLSsrKyBiL2luY2x1ZGUvb2JqLmgKLUBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBvYmpfb3BzIHsKLSAJY29uc3Qgdm9pZCAqKCpnZXQpKGNvbnN0IHN0cnVjdCBuZnRubF9vYmogKmUsIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbik7Ci0gCWludAkoKnBhcnNlKShzdHJ1Y3QgbmZ0bmxfb2JqICplLCBzdHJ1Y3QgbmxhdHRyICphdHRyKTsKLSAJdm9pZAkoKmJ1aWxkKShzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqZSk7Ci0tCWludAkoKnNucHJpbnRmKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICplKTsKLSsJaW50CSgqc25wcmludGZfKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICplKTsKLSAJaW50CSgqanNvbl9wYXJzZSkoc3RydWN0IG5mdG5sX29iaiAqZSwganNvbl90ICpkYXRhLAotIAkJCSAgICAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycik7Ci0gfTsKLWRpZmYgLS1naXQgYS9zcmMvYnVmZmVyLmMgYi9zcmMvYnVmZmVyLmMKLWluZGV4IGY5ZDVhODMuLmRiNjU2ZTIgMTAwNjQ0Ci0tLS0gYS9zcmMvYnVmZmVyLmMKLSsrKyBiL3NyYy9idWZmZXIuYwotQEAgLTIwNiw3ICsyMDYsNyBAQCBpbnQgbmZ0bmxfYnVmX2V4cHIoc3RydWN0IG5mdG5sX2J1ZiAqYiwgaW50IHR5cGUsIHVpbnQzMl90IGZsYWdzLAotIAljYXNlIE5GVE5MX09VVFBVVF9KU09OOgotIAkJbmZ0bmxfYnVmX3B1dChiLCAieyIpOwotIAkJbmZ0bmxfYnVmX3N0cihiLCB0eXBlLCBleHByLT5vcHMtPm5hbWUsIFRZUEUpOwotLQkJcmV0ID0gZXhwci0+b3BzLT5zbnByaW50ZihiLT5idWYgKyBiLT5vZmYsIGItPmxlbiwgdHlwZSwgZmxhZ3MsCi0rCQlyZXQgPSBleHByLT5vcHMtPnNucHJpbnRmXyhiLT5idWYgKyBiLT5vZmYsIGItPmxlbiwgdHlwZSwgZmxhZ3MsCi0gCQkJCQkgIGV4cHIpOwotIAkJaWYgKHJldCA+IDApCi0gCQkJbmZ0bmxfYnVmX3VwZGF0ZShiLCByZXQpOwotZGlmZiAtLWdpdCBhL3NyYy9leHByLmMgYi9zcmMvZXhwci5jCi1pbmRleCBjN2ViMmI0Li4yNGY4ZjhjIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIuYwotKysrIGIvc3JjL2V4cHIuYwotQEAgLTI2NSwxMCArMjY1LDEwIEBAIGludCBfX0VYUE9SVEVEIG5mdG5sX2V4cHJfc25wcmludGYoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IG5mdG5sX2V4Ci0gCWludCByZXQ7Ci0gCXVuc2lnbmVkIGludCBvZmZzZXQgPSAwLCBsZW4gPSBzaXplOwotIAotLQlpZiAoIWV4cHItPm9wcy0+c25wcmludGYpCi0rCWlmICghZXhwci0+b3BzLT5zbnByaW50Zl8pCi0gCQlyZXR1cm4gMDsKLSAKLS0JcmV0ID0gZXhwci0+b3BzLT5zbnByaW50ZihidWYrb2Zmc2V0LCBsZW4sIHR5cGUsIGZsYWdzLCBleHByKTsKLSsJcmV0ID0gZXhwci0+b3BzLT5zbnByaW50Zl8oYnVmK29mZnNldCwgbGVuLCB0eXBlLCBmbGFncywgZXhwcik7Ci0gCVNOUFJJTlRGX0JVRkZFUl9TSVpFKHJldCwgc2l6ZSwgbGVuLCBvZmZzZXQpOwotIAotIAlyZXR1cm4gb2Zmc2V0OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2JpdHdpc2UuYyBiL3NyYy9leHByL2JpdHdpc2UuYwotaW5kZXggMGZlYmM5ZC4uOWI0OGU3OSAxMDA2NDQKLS0tLSBhL3NyYy9leHByL2JpdHdpc2UuYwotKysrIGIvc3JjL2V4cHIvYml0d2lzZS5jCi1AQCAtMjk5LDYgKzI5OSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19iaXR3aXNlID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfYml0d2lzZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2JpdHdpc2VfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2JpdHdpc2VfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfYml0d2lzZV9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfYml0d2lzZV9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2JpdHdpc2VfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2J5dGVvcmRlci5jIGIvc3JjL2V4cHIvYnl0ZW9yZGVyLmMKLWluZGV4IDM4MDUzMDcuLjA3OTU4MmYgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9ieXRlb3JkZXIuYwotKysrIGIvc3JjL2V4cHIvYnl0ZW9yZGVyLmMKLUBAIC0zMTQsNiArMzE0LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2J5dGVvcmRlciA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX2J5dGVvcmRlcl9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2J5dGVvcmRlcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfYnl0ZW9yZGVyX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX2J5dGVvcmRlcl9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfYnl0ZW9yZGVyX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfYnl0ZW9yZGVyX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9jbXAuYyBiL3NyYy9leHByL2NtcC5jCi1pbmRleCAzNTNlOTA3Li45OWI0OTdjIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvY21wLmMKLSsrKyBiL3NyYy9leHByL2NtcC5jCi1AQCAtMjg0LDYgKzI4NCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19jbXAgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9jbXBfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9jbXBfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2NtcF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9jbXBfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2NtcF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2NtcF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvY291bnRlci5jIGIvc3JjL2V4cHIvY291bnRlci5jCi1pbmRleCAyMTkwMWU4Li45ZmQ3NjU1IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvY291bnRlci5jCi0rKysgYi9zcmMvZXhwci9jb3VudGVyLmMKLUBAIC0yMDAsNiArMjAwLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2NvdW50ZXIgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9jb3VudGVyX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfY291bnRlcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfY291bnRlcl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9jb3VudGVyX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9jb3VudGVyX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfY291bnRlcl9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvY3QuYyBiL3NyYy9leHByL2N0LmMKLWluZGV4IGNkZDA4ZTkuLjZjZTU0NzggMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9jdC5jCi0rKysgYi9zcmMvZXhwci9jdC5jCi1AQCAtMzU2LDYgKzM1Niw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19jdCA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX2N0X2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfY3RfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2N0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX2N0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9jdF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2N0X2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9kdXAuYyBiL3NyYy9leHByL2R1cC5jCi1pbmRleCA5YWEzMzJiLi4yZjQ5MWQ4IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvZHVwLmMKLSsrKyBiL3NyYy9leHByL2R1cC5jCi1AQCAtMjA2LDYgKzIwNiw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19kdXAgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9kdXBfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9kdXBfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2R1cF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9kdXBfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2R1cF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2R1cF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvZHluc2V0LmMgYi9zcmMvZXhwci9keW5zZXQuYwotaW5kZXggZjdiOTllYS4uNzU4ZjA3YyAxMDA2NDQKLS0tLSBhL3NyYy9leHByL2R5bnNldC5jCi0rKysgYi9zcmMvZXhwci9keW5zZXQuYwotQEAgLTM2OCw2ICszNjgsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfZHluc2V0ID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfZHluc2V0X2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfZHluc2V0X3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9keW5zZXRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfZHluc2V0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9keW5zZXRfc25wcmludGYsCi0gCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9keW5zZXRfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2V4dGhkci5jIGIvc3JjL2V4cHIvZXh0aGRyLmMKLWluZGV4IGQ0ZjE2NjUuLmE4MzQ3ODIgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9leHRoZHIuYwotKysrIGIvc3JjL2V4cHIvZXh0aGRyLmMKLUBAIC0zNTYsNiArMzU2LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2V4dGhkciA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX2V4dGhkcl9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2V4dGhkcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfZXh0aGRyX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX2V4dGhkcl9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfZXh0aGRyX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfZXh0aGRyX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9maWIuYyBiL3NyYy9leHByL2ZpYi5jCi1pbmRleCBmM2JlMDgxLi4zYzM1M2IyIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvZmliLmMKLSsrKyBiL3NyYy9leHByL2ZpYi5jCi1AQCAtMjcyLDYgKzI3Miw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19maWIgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9maWJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9maWJfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2ZpYl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9maWJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2ZpYl9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2ZpYl9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvZndkLmMgYi9zcmMvZXhwci9md2QuYwotaW5kZXggYzMwZDQ5NC4uZjZlNDFmMSAxMDA2NDQKLS0tLSBhL3NyYy9leHByL2Z3ZC5jCi0rKysgYi9zcmMvZXhwci9md2QuYwotQEAgLTE4MCw2ICsxODAsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfZndkID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfZndkX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfZndkX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9md2RfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfZndkX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9md2Rfc25wcmludGYsCi0gCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9md2RfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2hhc2guYyBiL3NyYy9leHByL2hhc2guYwotaW5kZXggZDg3MDUxMC4uNWFjYjY2YSAxMDA2NDQKLS0tLSBhL3NyYy9leHByL2hhc2guYwotKysrIGIvc3JjL2V4cHIvaGFzaC5jCi1AQCAtMzMyLDYgKzMzMiw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19oYXNoID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfaGFzaF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2hhc2hfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2hhc2hfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfaGFzaF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfaGFzaF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2hhc2hfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2ltbWVkaWF0ZS5jIGIvc3JjL2V4cHIvaW1tZWRpYXRlLmMKLWluZGV4IDBiMTg4Y2MuLjk0YmQ2ZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9pbW1lZGlhdGUuYwotKysrIGIvc3JjL2V4cHIvaW1tZWRpYXRlLmMKLUBAIC0zMTYsNiArMzE2LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2ltbWVkaWF0ZSA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX2ltbWVkaWF0ZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2ltbWVkaWF0ZV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfaW1tZWRpYXRlX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX2ltbWVkaWF0ZV9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfaW1tZWRpYXRlX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfaW1tZWRpYXRlX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9saW1pdC5jIGIvc3JjL2V4cHIvbGltaXQuYwotaW5kZXggODU2YWIxOC4uZTcxZmMyZiAxMDA2NDQKLS0tLSBhL3NyYy9leHByL2xpbWl0LmMKLSsrKyBiL3NyYy9leHByL2xpbWl0LmMKLUBAIC0yODUsNiArMjg1LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2xpbWl0ID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfbGltaXRfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9saW1pdF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfbGltaXRfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfbGltaXRfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2xpbWl0X3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfbGltaXRfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL2xvZy5jIGIvc3JjL2V4cHIvbG9nLmMKLWluZGV4IGI2NDIyNTUuLjcxZGQ4M2EgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9sb2cuYwotKysrIGIvc3JjL2V4cHIvbG9nLmMKLUBAIC0zNTIsNiArMzUyLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2xvZyA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX2xvZ19nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX2xvZ19wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfbG9nX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX2xvZ19zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbG9nX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfbG9nX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9sb29rdXAuYyBiL3NyYy9leHByL2xvb2t1cC5jCi1pbmRleCA4NjE4MTVmLi42MDQ5OTEzIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvbG9va3VwLmMKLSsrKyBiL3NyYy9leHByL2xvb2t1cC5jCi1AQCAtMjkzLDYgKzI5Myw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19sb29rdXAgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9sb29rdXBfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9sb29rdXBfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX2xvb2t1cF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9sb29rdXBfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2xvb2t1cF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2xvb2t1cF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbWFzcS5jIGIvc3JjL2V4cHIvbWFzcS5jCi1pbmRleCA3YzIzNWQzLi5hZGVjMzI1IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvbWFzcS5jCi0rKysgYi9zcmMvZXhwci9tYXNxLmMKLUBAIC0yMjgsNiArMjI4LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX21hc3EgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9tYXNxX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbWFzcV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfbWFzcV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9tYXNxX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9tYXNxX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfbWFzcV9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbWF0Y2guYyBiL3NyYy9leHByL21hdGNoLmMKLWluZGV4IGRkMDllMWUuLmYwZDg4NjggMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9tYXRjaC5jCi0rKysgYi9zcmMvZXhwci9tYXRjaC5jCi1AQCAtMjQ5LDYgKzI0OSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19tYXRjaCA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX21hdGNoX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbWF0Y2hfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX21hdGNoX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX21hdGNoX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9tYXRjaF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UgCT0gbmZ0bmxfZXhwcl9tYXRjaF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbWV0YS5jIGIvc3JjL2V4cHIvbWV0YS5jCi1pbmRleCAyYzc1ODQxLi45MDdhNjc3IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvbWV0YS5jCi0rKysgYi9zcmMvZXhwci9tZXRhLmMKLUBAIC0yOTAsNiArMjkwLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX21ldGEgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9tZXRhX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbWV0YV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfbWV0YV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9tZXRhX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9tZXRhX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZSAJPSBuZnRubF9leHByX21ldGFfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL25hdC5jIGIvc3JjL2V4cHIvbmF0LmMKLWluZGV4IDI5YmMzYTIuLmQ0NzYyODMgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9uYXQuYwotKysrIGIvc3JjL2V4cHIvbmF0LmMKLUBAIC0zODMsNiArMzgzLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX25hdCA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX25hdF9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX25hdF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfbmF0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX25hdF9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbmF0X3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfbmF0X2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9udW1nZW4uYyBiL3NyYy9leHByL251bWdlbi5jCi1pbmRleCBhMTVmMDNhLi4yOGVmNzQxIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvbnVtZ2VuLmMKLSsrKyBiL3NyYy9leHByL251bWdlbi5jCi1AQCAtMjY0LDYgKzI2NCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19uZyA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX25nX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbmdfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX25nX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX25nX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9uZ19zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX25nX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9vYmpyZWYuYyBiL3NyYy9leHByL29ianJlZi5jCi1pbmRleCA0Y2ZhM2NiLi5jMzk0MjkwIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvb2JqcmVmLmMKLSsrKyBiL3NyYy9leHByL29ianJlZi5jCi1AQCAtMjc4LDYgKzI3OCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19vYmpyZWYgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9vYmpyZWZfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9vYmpyZWZfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX29ianJlZl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9vYmpyZWZfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX29ianJlZl9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX29ianJlZl9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcGF5bG9hZC5jIGIvc3JjL2V4cHIvcGF5bG9hZC5jCi1pbmRleCA5MWUxNTg3Li44OTRhYzA4IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvcGF5bG9hZC5jCi0rKysgYi9zcmMvZXhwci9wYXlsb2FkLmMKLUBAIC0zNDgsNiArMzQ4LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX3BheWxvYWQgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9wYXlsb2FkX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcGF5bG9hZF9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfcGF5bG9hZF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9wYXlsb2FkX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9wYXlsb2FkX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfcGF5bG9hZF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcXVldWUuYyBiL3NyYy9leHByL3F1ZXVlLmMKLWluZGV4IDhhOWRlZGEuLjM4OWFmODMgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9xdWV1ZS5jCi0rKysgYi9zcmMvZXhwci9xdWV1ZS5jCi1AQCAtMjc2LDYgKzI3Niw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19xdWV1ZSA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX3F1ZXVlX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcXVldWVfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX3F1ZXVlX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX3F1ZXVlX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9xdWV1ZV9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3F1ZXVlX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9xdW90YS5jIGIvc3JjL2V4cHIvcXVvdGEuYwotaW5kZXggNjY3ZTZlMS4uZmY1ZDE4MiAxMDA2NDQKLS0tLSBhL3NyYy9leHByL3F1b3RhLmMKLSsrKyBiL3NyYy9leHByL3F1b3RhLmMKLUBAIC0yMDMsNiArMjAzLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX3F1b3RhID0gewotIAkuZ2V0CQk9IG5mdG5sX2V4cHJfcXVvdGFfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9xdW90YV9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfcXVvdGFfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfcXVvdGFfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX3F1b3RhX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfcXVvdGFfanNvbl9wYXJzZSwKLSB9OwotZGlmZiAtLWdpdCBhL3NyYy9leHByL3JhbmdlLmMgYi9zcmMvZXhwci9yYW5nZS5jCi1pbmRleCA4YzhjZTEyLi4zNGQ0MjJiIDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvcmFuZ2UuYwotKysrIGIvc3JjL2V4cHIvcmFuZ2UuYwotQEAgLTI4Myw2ICsyODMsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfcmFuZ2UgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9yYW5nZV9nZXQsCi0gCS5wYXJzZQkJPSBuZnRubF9leHByX3JhbmdlX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9yYW5nZV9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9yYW5nZV9zbnByaW50ZiwKLSsJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfcmFuZ2Vfc25wcmludGYsCi0gCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9yYW5nZV9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcmVkaXIuYyBiL3NyYy9leHByL3JlZGlyLmMKLWluZGV4IDQzNTM4ZDUuLjhhMjFmOTMgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9yZWRpci5jCi0rKysgYi9zcmMvZXhwci9yZWRpci5jCi1AQCAtMjQyLDYgKzI0Miw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19yZWRpciA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX3JlZGlyX2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcmVkaXJfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX3JlZGlyX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX3JlZGlyX3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9yZWRpcl9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3JlZGlyX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci9yZWplY3QuYyBiL3NyYy9leHByL3JlamVjdC5jCi1pbmRleCAxMWQ4YjIwLi5iMTBlNzI5IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvcmVqZWN0LmMKLSsrKyBiL3NyYy9leHByL3JlamVjdC5jCi1AQCAtMjAwLDYgKzIwMCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19yZWplY3QgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl9yZWplY3RfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9yZWplY3RfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX3JlamVjdF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9yZWplY3Rfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX3JlamVjdF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3JlamVjdF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcnQuYyBiL3NyYy9leHByL3J0LmMKLWluZGV4IDUwODhlNjYuLjlmNDRiMjkgMTAwNjQ0Ci0tLS0gYS9zcmMvZXhwci9ydC5jCi0rKysgYi9zcmMvZXhwci9ydC5jCi1AQCAtMjM4LDYgKzIzOCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19ydCA9IHsKLSAJLmdldAkJPSBuZnRubF9leHByX3J0X2dldCwKLSAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcnRfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX3J0X2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9leHByX3J0X3NucHJpbnRmLAotKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9ydF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3J0X2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci90YXJnZXQuYyBiL3NyYy9leHByL3RhcmdldC5jCi1pbmRleCBlZDRiZjdkLi4yZWY0MDc4IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIvdGFyZ2V0LmMKLSsrKyBiL3NyYy9leHByL3RhcmdldC5jCi1AQCAtMjQ5LDYgKzI0OSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc190YXJnZXQgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfZXhwcl90YXJnZXRfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl90YXJnZXRfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9leHByX3RhcmdldF9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl90YXJnZXRfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9leHByX3RhcmdldF9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3RhcmdldF9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL29iai9jb3VudGVyLmMgYi9zcmMvb2JqL2NvdW50ZXIuYwotaW5kZXggYmVhZGM5My4uOGM0Y2MyNSAxMDA2NDQKLS0tLSBhL3NyYy9vYmovY291bnRlci5jCi0rKysgYi9zcmMvb2JqL2NvdW50ZXIuYwotQEAgLTE3OSw2ICsxNzksNiBAQCBzdHJ1Y3Qgb2JqX29wcyBvYmpfb3BzX2NvdW50ZXIgPSB7Ci0gCS5nZXQJCT0gbmZ0bmxfb2JqX2NvdW50ZXJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfb2JqX2NvdW50ZXJfcGFyc2UsCi0gCS5idWlsZAkJPSBuZnRubF9vYmpfY291bnRlcl9idWlsZCwKLS0JLnNucHJpbnRmCT0gbmZ0bmxfb2JqX2NvdW50ZXJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfY291bnRlcl9zbnByaW50ZiwKLSAJLmpzb25fcGFyc2UJPSBuZnRubF9vYmpfY291bnRlcl9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL29iai9jdF9oZWxwZXIuYyBiL3NyYy9vYmovY3RfaGVscGVyLmMKLWluZGV4IGQ2ZDMxMTEuLjRjN2M4OGIgMTAwNjQ0Ci0tLS0gYS9zcmMvb2JqL2N0X2hlbHBlci5jCi0rKysgYi9zcmMvb2JqL2N0X2hlbHBlci5jCi1AQCAtMjA1LDYgKzIwNSw2IEBAIHN0cnVjdCBvYmpfb3BzIG9ial9vcHNfY3RfaGVscGVyID0gewotIAkuZ2V0CQk9IG5mdG5sX29ial9jdF9oZWxwZXJfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfb2JqX2N0X2hlbHBlcl9wYXJzZSwKLSAJLmJ1aWxkCQk9IG5mdG5sX29ial9jdF9oZWxwZXJfYnVpbGQsCi0tCS5zbnByaW50Zgk9IG5mdG5sX29ial9jdF9oZWxwZXJfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfY3RfaGVscGVyX3NucHJpbnRmLAotIAkuanNvbl9wYXJzZQk9IG5mdG5sX29ial9xdW90YV9qc29uX3BhcnNlLAotIH07Ci1kaWZmIC0tZ2l0IGEvc3JjL29iai9xdW90YS5jIGIvc3JjL29iai9xdW90YS5jCi1pbmRleCBkNTc1N2IyLi5lOTU5ZmY4IDEwMDY0NAotLS0tIGEvc3JjL29iai9xdW90YS5jCi0rKysgYi9zcmMvb2JqL3F1b3RhLmMKLUBAIC0yMDAsNiArMjAwLDYgQEAgc3RydWN0IG9ial9vcHMgb2JqX29wc19xdW90YSA9IHsKLSAJLmdldAkJPSBuZnRubF9vYmpfcXVvdGFfZ2V0LAotIAkucGFyc2UJCT0gbmZ0bmxfb2JqX3F1b3RhX3BhcnNlLAotIAkuYnVpbGQJCT0gbmZ0bmxfb2JqX3F1b3RhX2J1aWxkLAotLQkuc25wcmludGYJPSBuZnRubF9vYmpfcXVvdGFfc25wcmludGYsCi0rCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfcXVvdGFfc25wcmludGYsCi0gCS5qc29uX3BhcnNlCT0gbmZ0bmxfb2JqX3F1b3RhX2pzb25fcGFyc2UsCi0gfTsKLWRpZmYgLS1naXQgYS9zcmMvb2JqZWN0LmMgYi9zcmMvb2JqZWN0LmMKLWluZGV4IGQ0MDljNmQuLmI5MzhjOTcgMTAwNjQ0Ci0tLS0gYS9zcmMvb2JqZWN0LmMKLSsrKyBiL3NyYy9vYmplY3QuYwotQEAgLTM4OSw3ICszODksNyBAQCBzdGF0aWMgaW50IG5mdG5sX29ial9leHBvcnQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKLSAJCW5mdG5sX2J1Zl91MzIoJmIsIHR5cGUsIG9iai0+dXNlLCBVU0UpOwotIAotIAlpZiAob2JqLT5vcHMpCi0tCQlyZXQgPSBvYmotPm9wcy0+c25wcmludGYoYnVmICsgYi5sZW4sIHNpemUgLSBiLmxlbiwgdHlwZSwKLSsJCXJldCA9IG9iai0+b3BzLT5zbnByaW50Zl8oYnVmICsgYi5sZW4sIHNpemUgLSBiLmxlbiwgdHlwZSwKLSAJCQkJCSBmbGFncywgb2JqKTsKLSAKLSAJYi5sZW4gKz0gcmV0OwotQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgaW50IG5mdG5sX29ial9zbnByaW50Zl9kZmx0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCi0gCVNOUFJJTlRGX0JVRkZFUl9TSVpFKHJldCwgc2l6ZSwgbGVuLCBvZmZzZXQpOwotIAotIAlpZiAob2JqLT5vcHMpIHsKLS0JCXJldCA9IG9iai0+b3BzLT5zbnByaW50ZihidWYgKyBvZmZzZXQsIG9mZnNldCwgdHlwZSwgZmxhZ3MsIG9iaik7Ci0rCQlyZXQgPSBvYmotPm9wcy0+c25wcmludGZfKGJ1ZiArIG9mZnNldCwgb2Zmc2V0LCB0eXBlLCBmbGFncywgb2JqKTsKLSAJCVNOUFJJTlRGX0JVRkZFUl9TSVpFKHJldCwgc2l6ZSwgbGVuLCBvZmZzZXQpOwotIAl9Ci0gCXJldCA9IHNucHJpbnRmKGJ1ZiArIG9mZnNldCwgb2Zmc2V0LCAiXSIpOwotLS0gCi0yLjEyLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDItYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sLzAwMDItYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ZThmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmwvMDAwMi1hdm9pZC1uYW1pbmctbG9jYWwtZnVuY3Rpb24tYXMtb25lLW9mLXByaW50Zi1mYW1pbHkucGF0Y2gKQEAgLTAsMCArMSw1NDkgQEAKK0Zyb20gNWVhOWZhOWQzNDUwMDVmMmY1M2IxYjU5OGVkYjg1ZjVmMjRjYTlkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNyBOb3YgMjAxOCAxOTo0MTo1NCArMDAwMAorU3ViamVjdDogW1BBVENIXSBhdm9pZCBuYW1pbmcgbG9jYWwgZnVuY3Rpb24gYXMgb25lIG9mIHByaW50ZiBmYW1pbHkKKworRml4ZXMgYnVpbGQgaXNzdWVzIHdpdGggY2xhbmcKK2Vycm9yOiBubyBtZW1iZXIgbmFtZWQgJ19fYnVpbHRpbl9fX3NucHJpbnRmX2NoaycgaW4gJ3N0cnVjdCBleHByX29wcycKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KKy0tLQorIGluY2x1ZGUvZXhwcl9vcHMuaCAgICAgIHwgMiArLQorIGluY2x1ZGUvb2JqLmggICAgICAgICAgIHwgMiArLQorIHNyYy9leHByLmMgICAgICAgICAgICAgIHwgNCArKy0tCisgc3JjL2V4cHIvYml0d2lzZS5jICAgICAgfCAyICstCisgc3JjL2V4cHIvYnl0ZW9yZGVyLmMgICAgfCAyICstCisgc3JjL2V4cHIvY21wLmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvY29ubmxpbWl0LmMgICAgfCAyICstCisgc3JjL2V4cHIvY291bnRlci5jICAgICAgfCAyICstCisgc3JjL2V4cHIvY3QuYyAgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvZHVwLmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvZHluc2V0LmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvZXh0aGRyLmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvZmliLmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvZmxvd19vZmZsb2FkLmMgfCAyICstCisgc3JjL2V4cHIvZndkLmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvaGFzaC5jICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvaW1tZWRpYXRlLmMgICAgfCAyICstCisgc3JjL2V4cHIvbGltaXQuYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbG9nLmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbG9va3VwLmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvbWFzcS5jICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbWF0Y2guYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbWV0YS5jICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbmF0LmMgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvbnVtZ2VuLmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvb2JqcmVmLmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvcGF5bG9hZC5jICAgICAgfCAyICstCisgc3JjL2V4cHIvcXVldWUuYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvcXVvdGEuYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvcmFuZ2UuYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvcmVkaXIuYyAgICAgICAgfCAyICstCisgc3JjL2V4cHIvcmVqZWN0LmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvcnQuYyAgICAgICAgICAgfCAyICstCisgc3JjL2V4cHIvc29ja2V0LmMgICAgICAgfCAyICstCisgc3JjL2V4cHIvdGFyZ2V0LmMgICAgICAgfCAyICstCisgc3JjL29iai9jb3VudGVyLmMgICAgICAgfCAyICstCisgc3JjL29iai9jdF9oZWxwZXIuYyAgICAgfCAyICstCisgc3JjL29iai9saW1pdC5jICAgICAgICAgfCAyICstCisgc3JjL29iai9xdW90YS5jICAgICAgICAgfCAyICstCisgc3JjL29iamVjdC5jICAgICAgICAgICAgfCA0ICsrLS0KKyA0MCBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwcl9vcHMuaCBiL2luY2x1ZGUvZXhwcl9vcHMuaAoraW5kZXggZTYzOTM5MC4uYzRmZTA1MCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvZXhwcl9vcHMuaAorKysrIGIvaW5jbHVkZS9leHByX29wcy5oCitAQCAtMTgsNyArMTgsNyBAQCBzdHJ1Y3QgZXhwcl9vcHMgeworIAljb25zdCB2b2lkICooKmdldCkoY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUsIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbik7CisgCWludCAJKCpwYXJzZSkoc3RydWN0IG5mdG5sX2V4cHIgKmUsIHN0cnVjdCBubGF0dHIgKmF0dHIpOworIAl2b2lkCSgqYnVpbGQpKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZSk7CistCWludAkoKnNucHJpbnRmKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZSk7CisrCWludAkoKnNucHJpbnRmXykoY2hhciAqYnVmLCBzaXplX3QgbGVuLCB1aW50MzJfdCB0eXBlLCB1aW50MzJfdCBmbGFncywgY29uc3Qgc3RydWN0IG5mdG5sX2V4cHIgKmUpOworIAlpbnQJKCpqc29uX3BhcnNlKShzdHJ1Y3QgbmZ0bmxfZXhwciAqZSwganNvbl90ICpkYXRhLAorIAkJCSAgICAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycik7CisgfTsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL29iai5oIGIvaW5jbHVkZS9vYmouaAoraW5kZXggNGE3MjhjOC4uNGMyMGJkMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvb2JqLmgKKysrKyBiL2luY2x1ZGUvb2JqLmgKK0BAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBvYmpfb3BzIHsKKyAJY29uc3Qgdm9pZCAqKCpnZXQpKGNvbnN0IHN0cnVjdCBuZnRubF9vYmogKmUsIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90ICpkYXRhX2xlbik7CisgCWludAkoKnBhcnNlKShzdHJ1Y3QgbmZ0bmxfb2JqICplLCBzdHJ1Y3QgbmxhdHRyICphdHRyKTsKKyAJdm9pZAkoKmJ1aWxkKShzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgY29uc3Qgc3RydWN0IG5mdG5sX29iaiAqZSk7CistCWludAkoKnNucHJpbnRmKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICplKTsKKysJaW50CSgqc25wcmludGZfKShjaGFyICpidWYsIHNpemVfdCBsZW4sIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfb2JqICplKTsKKyAJaW50CSgqanNvbl9wYXJzZSkoc3RydWN0IG5mdG5sX29iaiAqZSwganNvbl90ICpkYXRhLAorIAkJCSAgICAgIHN0cnVjdCBuZnRubF9wYXJzZV9lcnIgKmVycik7CisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci5jIGIvc3JjL2V4cHIuYworaW5kZXggNjI1NjVlMC4uMjQ4OWMzMCAxMDA2NDQKKy0tLSBhL3NyYy9leHByLmMKKysrKyBiL3NyYy9leHByLmMKK0BAIC0yODUsMTAgKzI4NSwxMCBAQCBpbnQgbmZ0bmxfZXhwcl9zbnByaW50ZihjaGFyICpidWYsIHNpemVfdCBzaXplLCBjb25zdCBzdHJ1Y3QgbmZ0bmxfZXhwciAqZXhwciwKKyAJaWYgKHNpemUpCisgCQlidWZbMF0gPSAnXDAnOworIAorLQlpZiAoIWV4cHItPm9wcy0+c25wcmludGYpCisrCWlmICghZXhwci0+b3BzLT5zbnByaW50Zl8pCisgCQlyZXR1cm4gMDsKKyAKKy0JcmV0ID0gZXhwci0+b3BzLT5zbnByaW50ZihidWYgKyBvZmZzZXQsIHJlbWFpbiwgdHlwZSwgZmxhZ3MsIGV4cHIpOworKwlyZXQgPSBleHByLT5vcHMtPnNucHJpbnRmXyhidWYgKyBvZmZzZXQsIHJlbWFpbiwgdHlwZSwgZmxhZ3MsIGV4cHIpOworIAlTTlBSSU5URl9CVUZGRVJfU0laRShyZXQsIHJlbWFpbiwgb2Zmc2V0KTsKKyAKKyAJcmV0dXJuIG9mZnNldDsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9iaXR3aXNlLmMgYi9zcmMvZXhwci9iaXR3aXNlLmMKK2luZGV4IGE4OTczNGIuLmY4MzYwYjEgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9iaXR3aXNlLmMKKysrKyBiL3NyYy9leHByL2JpdHdpc2UuYworQEAgLTI5OSw2ICsyOTksNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfYml0d2lzZSA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2JpdHdpc2VfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9iaXR3aXNlX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9iaXR3aXNlX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2JpdHdpc2Vfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2JpdHdpc2Vfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9iaXR3aXNlX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9ieXRlb3JkZXIuYyBiL3NyYy9leHByL2J5dGVvcmRlci5jCitpbmRleCA0N2MwNGNmLi42MWY3MzNmIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvYnl0ZW9yZGVyLmMKKysrKyBiL3NyYy9leHByL2J5dGVvcmRlci5jCitAQCAtMzE0LDYgKzMxNCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19ieXRlb3JkZXIgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9ieXRlb3JkZXJfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9ieXRlb3JkZXJfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2J5dGVvcmRlcl9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9ieXRlb3JkZXJfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2J5dGVvcmRlcl9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2J5dGVvcmRlcl9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvY21wLmMgYi9zcmMvZXhwci9jbXAuYworaW5kZXggYjI2ZDBlYi4uNTIyYzdiZSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL2NtcC5jCisrKysgYi9zcmMvZXhwci9jbXAuYworQEAgLTI4NCw2ICsyODQsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfY21wID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfY21wX2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfY21wX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9jbXBfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfY21wX3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9jbXBfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9jbXBfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL2Nvbm5saW1pdC5jIGIvc3JjL2V4cHIvY29ubmxpbWl0LmMKK2luZGV4IDYwOTY1YjUuLjRlNDE4NjYgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9jb25ubGltaXQuYworKysrIGIvc3JjL2V4cHIvY29ubmxpbWl0LmMKK0BAIC0yMDIsNiArMjAyLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2Nvbm5saW1pdCA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2Nvbm5saW1pdF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX2Nvbm5saW1pdF9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfY29ubmxpbWl0X2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2Nvbm5saW1pdF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfY29ubmxpbWl0X3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfY29ubmxpbWl0X2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9jb3VudGVyLmMgYi9zcmMvZXhwci9jb3VudGVyLmMKK2luZGV4IDIxOTAxZTguLjlmZDc2NTUgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9jb3VudGVyLmMKKysrKyBiL3NyYy9leHByL2NvdW50ZXIuYworQEAgLTIwMCw2ICsyMDAsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfY291bnRlciA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2NvdW50ZXJfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9jb3VudGVyX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9jb3VudGVyX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2NvdW50ZXJfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2NvdW50ZXJfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9jb3VudGVyX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9jdC5jIGIvc3JjL2V4cHIvY3QuYworaW5kZXggMzllOWJlNi4uYjM2M2Y3YyAxMDA2NDQKKy0tLSBhL3NyYy9leHByL2N0LmMKKysrKyBiL3NyYy9leHByL2N0LmMKK0BAIC0zNTcsNiArMzU3LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2N0ID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfY3RfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9jdF9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfY3RfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfY3Rfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2N0X3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfY3RfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL2R1cC5jIGIvc3JjL2V4cHIvZHVwLmMKK2luZGV4IGVkOGU2MjAuLjhkNjAzZTMgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9kdXAuYworKysrIGIvc3JjL2V4cHIvZHVwLmMKK0BAIC0yMDYsNiArMjA2LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2R1cCA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2R1cF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX2R1cF9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfZHVwX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2R1cF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfZHVwX3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfZHVwX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9keW5zZXQuYyBiL3NyYy9leHByL2R5bnNldC5jCitpbmRleCAxNjBkMGUxLi5hNDNmNGRhIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvZHluc2V0LmMKKysrKyBiL3NyYy9leHByL2R5bnNldC5jCitAQCAtMzY4LDYgKzM2OCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19keW5zZXQgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9keW5zZXRfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9keW5zZXRfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2R5bnNldF9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9keW5zZXRfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2R5bnNldF9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2R5bnNldF9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvZXh0aGRyLmMgYi9zcmMvZXhwci9leHRoZHIuYworaW5kZXggNzVjYWZiYy4uODllYTdmNSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL2V4dGhkci5jCisrKysgYi9zcmMvZXhwci9leHRoZHIuYworQEAgLTM4NSw2ICszODUsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfZXh0aGRyID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfZXh0aGRyX2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfZXh0aGRyX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9leHRoZHJfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfZXh0aGRyX3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9leHRoZHJfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9leHRoZHJfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL2ZpYi5jIGIvc3JjL2V4cHIvZmliLmMKK2luZGV4IGI5MjJiMjYuLmVjZTQ2NDUgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9maWIuYworKysrIGIvc3JjL2V4cHIvZmliLmMKK0BAIC0yNzQsNiArMjc0LDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2ZpYiA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2ZpYl9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX2ZpYl9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfZmliX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2ZpYl9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfZmliX3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfZmliX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9mbG93X29mZmxvYWQuYyBiL3NyYy9leHByL2Zsb3dfb2ZmbG9hZC5jCitpbmRleCBhMjAwMWM5Li45Y2RiYzIxIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvZmxvd19vZmZsb2FkLmMKKysrKyBiL3NyYy9leHByL2Zsb3dfb2ZmbG9hZC5jCitAQCAtMTc5LDYgKzE3OSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19mbG93ID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfZmxvd19nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX2Zsb3dfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2Zsb3dfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfZmxvd19zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfZmxvd19zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2Zsb3dfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL2Z3ZC5jIGIvc3JjL2V4cHIvZndkLmMKK2luZGV4IDkwMjE2MDYuLjcxNzhmNDMgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9md2QuYworKysrIGIvc3JjL2V4cHIvZndkLmMKK0BAIC0yMzMsNiArMjMzLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX2Z3ZCA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2Z3ZF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX2Z3ZF9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfZndkX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2Z3ZF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfZndkX3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfZndkX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9oYXNoLmMgYi9zcmMvZXhwci9oYXNoLmMKK2luZGV4IDQxNTUzN2UuLjE4NmM1YjAgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9oYXNoLmMKKysrKyBiL3NyYy9leHByL2hhc2guYworQEAgLTM4Myw2ICszODMsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfaGFzaCA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2hhc2hfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9oYXNoX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9oYXNoX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2hhc2hfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2hhc2hfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9oYXNoX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9pbW1lZGlhdGUuYyBiL3NyYy9leHByL2ltbWVkaWF0ZS5jCitpbmRleCBiMDU3MGJkLi45MWNjYmRjIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvaW1tZWRpYXRlLmMKKysrKyBiL3NyYy9leHByL2ltbWVkaWF0ZS5jCitAQCAtMzE2LDYgKzMxNiw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19pbW1lZGlhdGUgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9pbW1lZGlhdGVfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9pbW1lZGlhdGVfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2ltbWVkaWF0ZV9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9pbW1lZGlhdGVfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2ltbWVkaWF0ZV9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2ltbWVkaWF0ZV9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbGltaXQuYyBiL3NyYy9leHByL2xpbWl0LmMKK2luZGV4IDg1NmFiMTguLmU3MWZjMmYgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9saW1pdC5jCisrKysgYi9zcmMvZXhwci9saW1pdC5jCitAQCAtMjg1LDYgKzI4NSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19saW1pdCA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX2xpbWl0X2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbGltaXRfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2xpbWl0X2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX2xpbWl0X3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9saW1pdF9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2xpbWl0X2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9sb2cuYyBiL3NyYy9leHByL2xvZy5jCitpbmRleCA4NmQ5NjUxLi41NzY5YzFjIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvbG9nLmMKKysrKyBiL3NyYy9leHByL2xvZy5jCitAQCAtMzUzLDYgKzM1Myw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19sb2cgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9sb2dfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9sb2dfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX2xvZ19idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9sb2dfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX2xvZ19zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX2xvZ19qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbG9va3VwLmMgYi9zcmMvZXhwci9sb29rdXAuYworaW5kZXggNWZjYjgxZi4uYjJmMGRkNiAxMDA2NDQKKy0tLSBhL3NyYy9leHByL2xvb2t1cC5jCisrKysgYi9zcmMvZXhwci9sb29rdXAuYworQEAgLTI5Miw2ICsyOTIsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfbG9va3VwID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfbG9va3VwX2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfbG9va3VwX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9sb29rdXBfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfbG9va3VwX3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9sb29rdXBfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9sb29rdXBfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL21hc3EuYyBiL3NyYy9leHByL21hc3EuYworaW5kZXggN2MyMzVkMy4uYWRlYzMyNSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL21hc3EuYworKysrIGIvc3JjL2V4cHIvbWFzcS5jCitAQCAtMjI4LDYgKzIyOCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19tYXNxID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfbWFzcV9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX21hc3FfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX21hc3FfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfbWFzcV9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbWFzcV9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX21hc3FfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL21hdGNoLmMgYi9zcmMvZXhwci9tYXRjaC5jCitpbmRleCBkZDA5ZTFlLi5mMGQ4ODY4IDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvbWF0Y2guYworKysrIGIvc3JjL2V4cHIvbWF0Y2guYworQEAgLTI0OSw2ICsyNDksNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfbWF0Y2ggPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9tYXRjaF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX21hdGNoX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9tYXRjaF9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9tYXRjaF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbWF0Y2hfc25wcmludGYsCisgCS5qc29uX3BhcnNlIAk9IG5mdG5sX2V4cHJfbWF0Y2hfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL21ldGEuYyBiL3NyYy9leHByL21ldGEuYworaW5kZXggZGU4MjEwNS4uOTFmMWViYiAxMDA2NDQKKy0tLSBhL3NyYy9leHByL21ldGEuYworKysrIGIvc3JjL2V4cHIvbWV0YS5jCitAQCAtMjkxLDYgKzI5MSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19tZXRhID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfbWV0YV9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX21ldGFfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX21ldGFfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfbWV0YV9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbWV0YV9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UgCT0gbmZ0bmxfZXhwcl9tZXRhX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9uYXQuYyBiL3NyYy9leHByL25hdC5jCitpbmRleCA5MjcxMzAzLi40MjdjMjgyIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvbmF0LmMKKysrKyBiL3NyYy9leHByL25hdC5jCitAQCAtMzg0LDYgKzM4NCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19uYXQgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9uYXRfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9uYXRfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX25hdF9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9uYXRfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX25hdF9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX25hdF9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvbnVtZ2VuLmMgYi9zcmMvZXhwci9udW1nZW4uYworaW5kZXggNTMzNmZkZS4uOGUwNDc5YSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL251bWdlbi5jCisrKysgYi9zcmMvZXhwci9udW1nZW4uYworQEAgLTMxMyw2ICszMTMsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfbmcgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9uZ19nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX25nX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9uZ19idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9uZ19zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfbmdfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9uZ19qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvb2JqcmVmLmMgYi9zcmMvZXhwci9vYmpyZWYuYworaW5kZXggNjRlZTg2My4uNDUwNDQ4OCAxMDA2NDQKKy0tLSBhL3NyYy9leHByL29ianJlZi5jCisrKysgYi9zcmMvZXhwci9vYmpyZWYuYworQEAgLTI3OCw2ICsyNzgsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfb2JqcmVmID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfb2JqcmVmX2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfb2JqcmVmX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9vYmpyZWZfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfb2JqcmVmX3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9vYmpyZWZfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9vYmpyZWZfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL3BheWxvYWQuYyBiL3NyYy9leHByL3BheWxvYWQuYworaW5kZXggOTFlMTU4Ny4uODk0YWMwOCAxMDA2NDQKKy0tLSBhL3NyYy9leHByL3BheWxvYWQuYworKysrIGIvc3JjL2V4cHIvcGF5bG9hZC5jCitAQCAtMzQ4LDYgKzM0OCw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19wYXlsb2FkID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfcGF5bG9hZF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX3BheWxvYWRfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX3BheWxvYWRfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfcGF5bG9hZF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfcGF5bG9hZF9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3BheWxvYWRfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL3F1ZXVlLmMgYi9zcmMvZXhwci9xdWV1ZS5jCitpbmRleCBhMzkyYTI3Li5lZTI2YzEwIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvcXVldWUuYworKysrIGIvc3JjL2V4cHIvcXVldWUuYworQEAgLTI3NSw2ICsyNzUsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfcXVldWUgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9xdWV1ZV9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX3F1ZXVlX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9xdWV1ZV9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9xdWV1ZV9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfcXVldWVfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9xdWV1ZV9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcXVvdGEuYyBiL3NyYy9leHByL3F1b3RhLmMKK2luZGV4IDY2N2U2ZTEuLmZmNWQxODIgMTAwNjQ0CistLS0gYS9zcmMvZXhwci9xdW90YS5jCisrKysgYi9zcmMvZXhwci9xdW90YS5jCitAQCAtMjAzLDYgKzIwMyw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc19xdW90YSA9IHsKKyAJLmdldAkJPSBuZnRubF9leHByX3F1b3RhX2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcXVvdGFfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX3F1b3RhX2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9leHByX3F1b3RhX3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9xdW90YV9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3F1b3RhX2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci9yYW5nZS5jIGIvc3JjL2V4cHIvcmFuZ2UuYworaW5kZXggYjI3ODlmZi4uODkxMGY4YSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL3JhbmdlLmMKKysrKyBiL3NyYy9leHByL3JhbmdlLmMKK0BAIC0yODMsNiArMjgzLDYgQEAgc3RydWN0IGV4cHJfb3BzIGV4cHJfb3BzX3JhbmdlID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfcmFuZ2VfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl9yYW5nZV9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX2V4cHJfcmFuZ2VfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfcmFuZ2Vfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX3JhbmdlX3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX2V4cHJfcmFuZ2VfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL3JlZGlyLmMgYi9zcmMvZXhwci9yZWRpci5jCitpbmRleCBiMmFhMzQ1Li40MWI3N2FiIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvcmVkaXIuYworKysrIGIvc3JjL2V4cHIvcmVkaXIuYworQEAgLTI0Miw2ICsyNDIsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfcmVkaXIgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9yZWRpcl9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX3JlZGlyX3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9yZWRpcl9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9yZWRpcl9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfcmVkaXJfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9yZWRpcl9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvcmVqZWN0LmMgYi9zcmMvZXhwci9yZWplY3QuYworaW5kZXggMTFkOGIyMC4uYjEwZTcyOSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL3JlamVjdC5jCisrKysgYi9zcmMvZXhwci9yZWplY3QuYworQEAgLTIwMCw2ICsyMDAsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfcmVqZWN0ID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfcmVqZWN0X2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfcmVqZWN0X3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9yZWplY3RfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfcmVqZWN0X3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9yZWplY3Rfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9yZWplY3RfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9leHByL3J0LmMgYi9zcmMvZXhwci9ydC5jCitpbmRleCBjM2M5MmM3Li42ODhhMDQyIDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvcnQuYworKysrIGIvc3JjL2V4cHIvcnQuYworQEAgLTIzNSw2ICsyMzUsNiBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfcnQgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl9ydF9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9leHByX3J0X3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9ydF9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl9ydF9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX2V4cHJfcnRfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfZXhwcl9ydF9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL2V4cHIvc29ja2V0LmMgYi9zcmMvZXhwci9zb2NrZXQuYworaW5kZXggZGIxNjBhMS4uNGM1MDAxMSAxMDA2NDQKKy0tLSBhL3NyYy9leHByL3NvY2tldC5jCisrKysgYi9zcmMvZXhwci9zb2NrZXQuYworQEAgLTIwNCw1ICsyMDQsNSBAQCBzdHJ1Y3QgZXhwcl9vcHMgZXhwcl9vcHNfc29ja2V0ID0geworIAkuZ2V0CQk9IG5mdG5sX2V4cHJfc29ja2V0X2dldCwKKyAJLnBhcnNlCQk9IG5mdG5sX2V4cHJfc29ja2V0X3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfZXhwcl9zb2NrZXRfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX2V4cHJfc29ja2V0X3NucHJpbnRmLAorKwkuc25wcmludGZfCT0gbmZ0bmxfZXhwcl9zb2NrZXRfc25wcmludGYsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvZXhwci90YXJnZXQuYyBiL3NyYy9leHByL3RhcmdldC5jCitpbmRleCBlZDRiZjdkLi4yZWY0MDc4IDEwMDY0NAorLS0tIGEvc3JjL2V4cHIvdGFyZ2V0LmMKKysrKyBiL3NyYy9leHByL3RhcmdldC5jCitAQCAtMjQ5LDYgKzI0OSw2IEBAIHN0cnVjdCBleHByX29wcyBleHByX29wc190YXJnZXQgPSB7CisgCS5nZXQJCT0gbmZ0bmxfZXhwcl90YXJnZXRfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfZXhwcl90YXJnZXRfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9leHByX3RhcmdldF9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfZXhwcl90YXJnZXRfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9leHByX3RhcmdldF9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9leHByX3RhcmdldF9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL29iai9jb3VudGVyLmMgYi9zcmMvb2JqL2NvdW50ZXIuYworaW5kZXggMzMyYmIyYi4uZWRlYjdiZSAxMDA2NDQKKy0tLSBhL3NyYy9vYmovY291bnRlci5jCisrKysgYi9zcmMvb2JqL2NvdW50ZXIuYworQEAgLTE4Miw2ICsxODIsNiBAQCBzdHJ1Y3Qgb2JqX29wcyBvYmpfb3BzX2NvdW50ZXIgPSB7CisgCS5nZXQJCT0gbmZ0bmxfb2JqX2NvdW50ZXJfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfb2JqX2NvdW50ZXJfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9vYmpfY291bnRlcl9idWlsZCwKKy0JLnNucHJpbnRmCT0gbmZ0bmxfb2JqX2NvdW50ZXJfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfY291bnRlcl9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9vYmpfY291bnRlcl9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL29iai9jdF9oZWxwZXIuYyBiL3NyYy9vYmovY3RfaGVscGVyLmMKK2luZGV4IDYyNTY5ZmUuLjY5NzU3ZmYgMTAwNjQ0CistLS0gYS9zcmMvb2JqL2N0X2hlbHBlci5jCisrKysgYi9zcmMvb2JqL2N0X2hlbHBlci5jCitAQCAtMjA4LDYgKzIwOCw2IEBAIHN0cnVjdCBvYmpfb3BzIG9ial9vcHNfY3RfaGVscGVyID0geworIAkuZ2V0CQk9IG5mdG5sX29ial9jdF9oZWxwZXJfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfb2JqX2N0X2hlbHBlcl9wYXJzZSwKKyAJLmJ1aWxkCQk9IG5mdG5sX29ial9jdF9oZWxwZXJfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX29ial9jdF9oZWxwZXJfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfY3RfaGVscGVyX3NucHJpbnRmLAorIAkuanNvbl9wYXJzZQk9IG5mdG5sX29ial9xdW90YV9qc29uX3BhcnNlLAorIH07CitkaWZmIC0tZ2l0IGEvc3JjL29iai9saW1pdC5jIGIvc3JjL29iai9saW1pdC5jCitpbmRleCA3ZjhiY2Y3Li4yNTAxOGI2IDEwMDY0NAorLS0tIGEvc3JjL29iai9saW1pdC5jCisrKysgYi9zcmMvb2JqL2xpbWl0LmMKK0BAIC0yMzYsNiArMjM2LDYgQEAgc3RydWN0IG9ial9vcHMgb2JqX29wc19saW1pdCA9IHsKKyAJLmdldAkJPSBuZnRubF9vYmpfbGltaXRfZ2V0LAorIAkucGFyc2UJCT0gbmZ0bmxfb2JqX2xpbWl0X3BhcnNlLAorIAkuYnVpbGQJCT0gbmZ0bmxfb2JqX2xpbWl0X2J1aWxkLAorLQkuc25wcmludGYJPSBuZnRubF9vYmpfbGltaXRfc25wcmludGYsCisrCS5zbnByaW50Zl8JPSBuZnRubF9vYmpfbGltaXRfc25wcmludGYsCisgCS5qc29uX3BhcnNlCT0gbmZ0bmxfb2JqX2xpbWl0X2pzb25fcGFyc2UsCisgfTsKK2RpZmYgLS1naXQgYS9zcmMvb2JqL3F1b3RhLmMgYi9zcmMvb2JqL3F1b3RhLmMKK2luZGV4IDZkMzY3ODQuLmVjYWE4YjEgMTAwNjQ0CistLS0gYS9zcmMvb2JqL3F1b3RhLmMKKysrKyBiL3NyYy9vYmovcXVvdGEuYworQEAgLTIwMyw2ICsyMDMsNiBAQCBzdHJ1Y3Qgb2JqX29wcyBvYmpfb3BzX3F1b3RhID0geworIAkuZ2V0CQk9IG5mdG5sX29ial9xdW90YV9nZXQsCisgCS5wYXJzZQkJPSBuZnRubF9vYmpfcXVvdGFfcGFyc2UsCisgCS5idWlsZAkJPSBuZnRubF9vYmpfcXVvdGFfYnVpbGQsCistCS5zbnByaW50Zgk9IG5mdG5sX29ial9xdW90YV9zbnByaW50ZiwKKysJLnNucHJpbnRmXwk9IG5mdG5sX29ial9xdW90YV9zbnByaW50ZiwKKyAJLmpzb25fcGFyc2UJPSBuZnRubF9vYmpfcXVvdGFfanNvbl9wYXJzZSwKKyB9OworZGlmZiAtLWdpdCBhL3NyYy9vYmplY3QuYyBiL3NyYy9vYmplY3QuYworaW5kZXggZDgyNzhmMy4uOTY1NGI3YiAxMDA2NDQKKy0tLSBhL3NyYy9vYmplY3QuYworKysrIGIvc3JjL29iamVjdC5jCitAQCAtNDI5LDcgKzQyOSw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfb2JqX2V4cG9ydChjaGFyICpidWYsIHNpemVfdCBzaXplLAorIAkJbmZ0bmxfYnVmX3U2NCgmYiwgdHlwZSwgb2JqLT5oYW5kbGUsIEhBTkRMRSk7CisgCisgCWlmIChvYmotPm9wcykKKy0JCXJldCA9IG9iai0+b3BzLT5zbnByaW50ZihidWYgKyBiLmxlbiwgc2l6ZSAtIGIubGVuLCB0eXBlLAorKwkJcmV0ID0gb2JqLT5vcHMtPnNucHJpbnRmXyhidWYgKyBiLmxlbiwgc2l6ZSAtIGIubGVuLCB0eXBlLAorIAkJCQkJIGZsYWdzLCBvYmopOworIAorIAliLmxlbiArPSByZXQ7CitAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBpbnQgbmZ0bmxfb2JqX3NucHJpbnRmX2RmbHQoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKKyAJU05QUklOVEZfQlVGRkVSX1NJWkUocmV0LCByZW1haW4sIG9mZnNldCk7CisgCisgCWlmIChvYmotPm9wcykgeworLQkJcmV0ID0gb2JqLT5vcHMtPnNucHJpbnRmKGJ1ZiArIG9mZnNldCwgb2Zmc2V0LCB0eXBlLCBmbGFncywKKysJCXJldCA9IG9iai0+b3BzLT5zbnByaW50Zl8oYnVmICsgb2Zmc2V0LCBvZmZzZXQsIHR5cGUsIGZsYWdzLAorIAkJCQkJIG9iaik7CisgCQlTTlBSSU5URl9CVUZGRVJfU0laRShyZXQsIHJlbWFpbiwgb2Zmc2V0KTsKKyAJfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sXzEuMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sXzEuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTAxYzBhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggbmZ0YWJsZXMgTmV0bGluaydzIEFQSSBvdmVyIGxpYm1ubCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03OTgwODM5N2MzMzU1ZjE2M2MwMTI2MTYxMjVjOWUyNiIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAibGlibW5sIgotUFYgLj0gIitnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICI0Yjg5YzBjYjA4ODNmNjM4ZmYxYWJiYzJmZjQ3YzQzY2RjMjZhYWM1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQubmV0ZmlsdGVyLm9yZy9saWJuZnRubCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURlY2xhcmUtdGhlLWRlZmluZS12aXNpdmlsaXR5LWF0dHJpYnV0ZS10b2dldGhlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLW5hbWluZy1sb2NhbC1mdW5jdGlvbi1hcy1vbmUtb2YtcHJpbnRmLWZhbWlseS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4MjE4Mzg2NzE2OGViNjY0NDkyNmM0OGI5OTFiOGFhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YmI2NmVjYmM2NGI4NTA4MjQ5NDAyZjAwOTM4MjlmNDQxNzc3NzBhZDk5ZjYwNDJiODZiM2E0NjdkOTYzOTgyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Nzk1OWE3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sXzEuMS4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggbmZ0YWJsZXMgTmV0bGluaydzIEFQSSBvdmVyIGxpYm1ubCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03OTgwODM5N2MzMzU1ZjE2M2MwMTI2MTYxMjVjOWUyNiIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAibGlibW5sIgorUFYgLj0gIitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJkMzc5ZGZjYjZjOTRkY2I5M2E4ZjE2ODk2NTcyZDZlMTYyMTM4ZTBmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQubmV0ZmlsdGVyLm9yZy9saWJuZnRubCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vdmUtZXhwb3J0cy1iZWZvcmUtc3ltYm9sLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1hdm9pZC1uYW1pbmctbG9jYWwtZnVuY3Rpb24tYXMtb25lLW9mLXByaW50Zi1mYW1pbHkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtcGF5bG9hZC1leHBsaWNpdC1uZXR3b3JrLWN0eC1hc3NpZ25tZW50LWZvci1pY21wLWljbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDAxLXBheWxvYWQtZXhwbGljaXQtbmV0d29yay1jdHgtYXNzaWdubWVudC1mb3ItaWNtcC1pY20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YTNkNTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtcGF5bG9hZC1leHBsaWNpdC1uZXR3b3JrLWN0eC1hc3NpZ25tZW50LWZvci1pY21wLWljbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi1Gcm9tIDAwMTE5ODU1NTRlMjY5ZTFjYzhmOGU1YjQxZWI5ZGNkNzk1ZWJlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcnR1cm8gQm9ycmVybyBHb256YWxleiA8YXJ0dXJvQGRlYmlhbi5vcmc+Ci1EYXRlOiBXZWQsIDI1IEphbiAyMDE3IDEyOjUxOjA4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBheWxvYWQ6IGV4cGxpY2l0IG5ldHdvcmsgY3R4IGFzc2lnbm1lbnQgZm9yIGljbXAvaWNtcDYgaW4KLSBzcGVjaWFsIGZhbWlsaWVzCi0KLUluIHRoZSBpbmV0LCBicmlkZ2UgYW5kIG5ldGRldiBmYW1pbGllcywgd2UgY2FuIGFkZCBydWxlcyBsaWtlIHRoZXNlOgotCi0lIG5mdCBhZGQgcnVsZSBpbmV0IHQgYyBpcCBwcm90b2NvbCBpY21wIGljbXAgdHlwZSBlY2hvLXJlcXVlc3QKLSUgbmZ0IGFkZCBydWxlIGluZXQgdCBjIGlwNiBuZXh0aGRyIGljbXB2NiBpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QKLQotSG93ZXZlciwgd2hlbiB3ZSBwcmludCB0aGUgcnVsZXNldDoKLQotJSBuZnQgbGlzdCBydWxlc2V0Ci10YWJsZSBpbmV0IHQgewotCWNoYWluIGMgewotCQlpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QKLQkJaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotCX0KLX0KLQotVGhlc2UgcnVsZXMgd2Ugb2J0YWluIGNhbid0IGJlIGFkZGVkIGFnYWluOgotCi0lIG5mdCBhZGQgcnVsZSBpbmV0IHQgYyBpY21wIHR5cGUgZWNoby1yZXF1ZXN0Ci08Y21kbGluZT46MToxOS0yNzogRXJyb3I6IGNvbmZsaWN0aW5nIHByb3RvY29scyBzcGVjaWZpZWQ6IGluZXQtc2VydmljZSB2cy4gaWNtcAotYWRkIHJ1bGUgaW5ldCB0IGMgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eCi0KLSUgbmZ0IGFkZCBydWxlIGluZXQgdCBjIGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdAotPGNtZGxpbmU+OjE6MTktMjk6IEVycm9yOiBjb25mbGljdGluZyBwcm90b2NvbHMgc3BlY2lmaWVkOiBpbmV0LXNlcnZpY2UgdnMuIGljbXB2NgotYWRkIHJ1bGUgaW5ldCB0IGMgaWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXgotCi1TaW5jZSBJIHdvdWxkbid0IGV4cGVjdCBhbiBJUCBwYWNrZXQgY2FycnlpbmcgSUNNUHY2LCBvciBJUHY2IHBhY2tldAotY2FycnlpbmcgSUNNUCwgaWYgdGhlIGxpbmsgbGF5ZXIgaXMgaW5ldCwgdGhlIG5ldHdvcmsgbGF5ZXIgcHJvdG9jb2wgY29udGV4dAotY2FuIGJlIHNhZmVseSB1cGRhdGUgdG8gJ2lwJyBvciAnaXA2Jy4KLQotTW9yZW92ZXIsIG5mdCBjdXJyZW50bHkgZ2VuZXJhdGVzIGEgJ21ldGEgbmZwcm90byBpcHZYJyBkZXBlZGVuY3kgd2hlbgotdXNpbmcgaWNtcCBvciBpY21wNiBpbiB0aGUgaW5ldCBmYW1pbHksIGFuZCBzaW1pbGFyIGluIG5ldGRldiBhbmQgYnJpZGdlCi1mYW1pbGllcy4KLQotV2hpbGUgYXQgaXQsIGEgYml0IG9mIGNvZGUgZmFjdG9yaXphdGlvbiBpcyBpbnRyb2R1Y2VkLgotCi1GaXhlczogaHR0cHM6Ly9idWd6aWxsYS5uZXRmaWx0ZXIub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczCi1TaWduZWQtb2ZmLWJ5OiBBcnR1cm8gQm9ycmVybyBHb256YWxleiA8YXJ0dXJvQGRlYmlhbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wYXlsb2FkLmMgICAgICAgICAgICAgICAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHRlc3RzL3B5L2FueS9pY21wWC50Lm5ldGRldiAgICAgICAgIHwgIDggKysrKysKLSB0ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYucGF5bG9hZCB8IDM2ICsrKysrKysrKysrKysrKysrKysKLSB0ZXN0cy9weS9icmlkZ2UvaWNtcFgudCAgICAgICAgICAgICB8ICA4ICsrKysrCi0gdGVzdHMvcHkvYnJpZGdlL2ljbXBYLnQucGF5bG9hZCAgICAgfCAzNiArKysrKysrKysrKysrKysrKysrCi0gdGVzdHMvcHkvaW5ldC9pY21wWC50ICAgICAgICAgICAgICAgfCAgOCArKysrKwotIHRlc3RzL3B5L2luZXQvaWNtcFgudC5wYXlsb2FkICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKwotIDcgZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHkvYW55L2ljbXBYLnQubmV0ZGV2LnBheWxvYWQKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHkvYnJpZGdlL2ljbXBYLnQKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHkvYnJpZGdlL2ljbXBYLnQucGF5bG9hZAotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9weS9pbmV0L2ljbXBYLnQKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHkvaW5ldC9pY21wWC50LnBheWxvYWQKLQotZGlmZiAtLWdpdCBhL3NyYy9wYXlsb2FkLmMgYi9zcmMvcGF5bG9hZC5jCi1pbmRleCBhZjUzM2IyLi43NGY4MjU0IDEwMDY0NAotLS0tIGEvc3JjL3BheWxvYWQuYwotKysrIGIvc3JjL3BheWxvYWQuYwotQEAgLTIyMyw2ICsyMjMsMzQgQEAgc3RhdGljIGludCBwYXlsb2FkX2FkZF9kZXBlbmRlbmN5KHN0cnVjdCBldmFsX2N0eCAqY3R4LAotIAlyZXR1cm4gMDsKLSB9Ci0gCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19kZXNjICoKLStwYXlsb2FkX2dlbl9zcGVjaWFsX2RlcGVuZGVuY3koc3RydWN0IGV2YWxfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBleHByICpleHByKQotK3sKLSsJc3dpdGNoIChleHByLT5wYXlsb2FkLmJhc2UpIHsKLSsJY2FzZSBQUk9UT19CQVNFX0xMX0hEUjoKLSsJCXN3aXRjaCAoY3R4LT5wY3R4LmZhbWlseSkgewotKwkJY2FzZSBORlBST1RPX0lORVQ6Ci0rCQkJcmV0dXJuICZwcm90b19pbmV0OwotKwkJY2FzZSBORlBST1RPX0JSSURHRToKLSsJCQlyZXR1cm4gJnByb3RvX2V0aDsKLSsJCWNhc2UgTkZQUk9UT19ORVRERVY6Ci0rCQkJcmV0dXJuICZwcm90b19uZXRkZXY7Ci0rCQlkZWZhdWx0OgotKwkJCWJyZWFrOwotKwkJfQotKwkJYnJlYWs7Ci0rCWNhc2UgUFJPVE9fQkFTRV9UUkFOU1BPUlRfSERSOgotKwkJaWYgKGV4cHItPnBheWxvYWQuZGVzYyA9PSAmcHJvdG9faWNtcCkKLSsJCQlyZXR1cm4gJnByb3RvX2lwOwotKwkJaWYgKGV4cHItPnBheWxvYWQuZGVzYyA9PSAmcHJvdG9faWNtcDYpCi0rCQkJcmV0dXJuICZwcm90b19pcDY7Ci0rCQlyZXR1cm4gJnByb3RvX2luZXRfc2VydmljZTsKLSsJZGVmYXVsdDoKLSsJCWJyZWFrOwotKwl9Ci0rCXJldHVybiBOVUxMOwotK30KLSsKLSAvKioKLSAgKiBwYXlsb2FkX2dlbl9kZXBlbmRlbmN5IC0gZ2VuZXJhdGUgbWF0Y2ggZXhwcmVzc2lvbiBvbiBwYXlsb2FkIGRlcGVuZGVuY3kKLSAgKgotQEAgLTI3Niw0NiArMzA0LDggQEAgaW50IHBheWxvYWRfZ2VuX2RlcGVuZGVuY3koc3RydWN0IGV2YWxfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBleHByICpleHByLAotIAotIAlkZXNjID0gY3R4LT5wY3R4LnByb3RvY29sW2V4cHItPnBheWxvYWQuYmFzZSAtIDFdLmRlc2M7Ci0gCS8qIFNwZWNpYWwgY2FzZSBmb3IgbWl4ZWQgSVB2NC9JUHY2IGFuZCBicmlkZ2UgdGFibGVzICovCi0tCWlmIChkZXNjID09IE5VTEwpIHsKLS0JCXN3aXRjaCAoY3R4LT5wY3R4LmZhbWlseSkgewotLQkJY2FzZSBORlBST1RPX0lORVQ6Ci0tCQkJc3dpdGNoIChleHByLT5wYXlsb2FkLmJhc2UpIHsKLS0JCQljYXNlIFBST1RPX0JBU0VfTExfSERSOgotLQkJCQlkZXNjID0gJnByb3RvX2luZXQ7Ci0tCQkJCWJyZWFrOwotLQkJCWNhc2UgUFJPVE9fQkFTRV9UUkFOU1BPUlRfSERSOgotLQkJCQlkZXNjID0gJnByb3RvX2luZXRfc2VydmljZTsKLS0JCQkJYnJlYWs7Ci0tCQkJZGVmYXVsdDoKLS0JCQkJYnJlYWs7Ci0tCQkJfQotLQkJCWJyZWFrOwotLQkJY2FzZSBORlBST1RPX0JSSURHRToKLS0JCQlzd2l0Y2ggKGV4cHItPnBheWxvYWQuYmFzZSkgewotLQkJCWNhc2UgUFJPVE9fQkFTRV9MTF9IRFI6Ci0tCQkJCWRlc2MgPSAmcHJvdG9fZXRoOwotLQkJCQlicmVhazsKLS0JCQljYXNlIFBST1RPX0JBU0VfVFJBTlNQT1JUX0hEUjoKLS0JCQkJZGVzYyA9ICZwcm90b19pbmV0X3NlcnZpY2U7Ci0tCQkJCWJyZWFrOwotLQkJCWRlZmF1bHQ6Ci0tCQkJCWJyZWFrOwotLQkJCX0KLS0JCQlicmVhazsKLS0JCWNhc2UgTkZQUk9UT19ORVRERVY6Ci0tCQkJc3dpdGNoIChleHByLT5wYXlsb2FkLmJhc2UpIHsKLS0JCQljYXNlIFBST1RPX0JBU0VfTExfSERSOgotLQkJCQlkZXNjID0gJnByb3RvX25ldGRldjsKLS0JCQkJYnJlYWs7Ci0tCQkJY2FzZSBQUk9UT19CQVNFX1RSQU5TUE9SVF9IRFI6Ci0tCQkJCWRlc2MgPSAmcHJvdG9faW5ldF9zZXJ2aWNlOwotLQkJCQlicmVhazsKLS0JCQlkZWZhdWx0OgotLQkJCQlicmVhazsKLS0JCQl9Ci0tCQkJYnJlYWs7Ci0tCQl9Ci0tCX0KLSsJaWYgKGRlc2MgPT0gTlVMTCkKLSsJCWRlc2MgPSBwYXlsb2FkX2dlbl9zcGVjaWFsX2RlcGVuZGVuY3koY3R4LCBleHByKTsKLSAKLSAJaWYgKGRlc2MgPT0gTlVMTCkKLSAJCXJldHVybiBleHByX2Vycm9yKGN0eC0+bXNncywgZXhwciwKLWRpZmYgLS1naXQgYS90ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYgYi90ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hMzI3Y2U2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi90ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYKLUBAIC0wLDAgKzEsOCBAQAotKzppbmdyZXNzO3R5cGUgZmlsdGVyIGhvb2sgaW5ncmVzcyBkZXZpY2UgbG8gcHJpb3JpdHkgMAotKwotKypuZXRkZXY7dGVzdC1uZXRkZXY7aW5ncmVzcwotKwotK2lwIHByb3RvY29sIGljbXAgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdDtvaztpY21wIHR5cGUgZWNoby1yZXF1ZXN0Ci0raWNtcCB0eXBlIGVjaG8tcmVxdWVzdDtvawotK2lwNiBuZXh0aGRyIGljbXB2NiBpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3Q7b2s7aWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0Ci0raWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0O29rCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHkvYW55L2ljbXBYLnQubmV0ZGV2LnBheWxvYWQgYi90ZXN0cy9weS9hbnkvaWNtcFgudC5uZXRkZXYucGF5bG9hZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjhiODEwN2MKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL3B5L2FueS9pY21wWC50Lm5ldGRldi5wYXlsb2FkCi1AQCAtMCwwICsxLDM2IEBACi0rIyBpcCBwcm90b2NvbCBpY21wIGljbXAgdHlwZSBlY2hvLXJlcXVlc3QKLStuZXRkZXYgdGVzdC1uZXRkZXYgaW5ncmVzcwotKyAgWyBtZXRhIGxvYWQgcHJvdG9jb2wgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwOCBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgOSA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDAxIF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgdHJhbnNwb3J0IGhlYWRlciArIDAgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwOCBdCi0rCi0rIyBpY21wIHR5cGUgZWNoby1yZXF1ZXN0Ci0rbmV0ZGV2IHRlc3QtbmV0ZGV2IGluZ3Jlc3MKLSsgIFsgbWV0YSBsb2FkIHByb3RvY29sID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDkgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwMSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKwotKyMgaXA2IG5leHRoZHIgaWNtcHY2IGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdAotK25ldGRldiB0ZXN0LW5ldGRldiBpbmdyZXNzCi0rICBbIG1ldGEgbG9hZCBwcm90b2NvbCA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDBkZDg2IF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgbmV0d29yayBoZWFkZXIgKyA2ID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwM2EgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCB0cmFuc3BvcnQgaGVhZGVyICsgMCA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDgwIF0KLSsKLSsjIGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdAotK25ldGRldiB0ZXN0LW5ldGRldiBpbmdyZXNzCi0rICBbIG1ldGEgbG9hZCBwcm90b2NvbCA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDBkZDg2IF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgbmV0d29yayBoZWFkZXIgKyA2ID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwM2EgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCB0cmFuc3BvcnQgaGVhZGVyICsgMCA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDgwIF0KLSsKLWRpZmYgLS1naXQgYS90ZXN0cy9weS9icmlkZ2UvaWNtcFgudCBiL3Rlc3RzL3B5L2JyaWRnZS9pY21wWC50Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGMwYTU5NwotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvcHkvYnJpZGdlL2ljbXBYLnQKLUBAIC0wLDAgKzEsOCBAQAotKzppbnB1dDt0eXBlIGZpbHRlciBob29rIGlucHV0IHByaW9yaXR5IDAKLSsKLSsqYnJpZGdlO3Rlc3QtYnJpZGdlO2lucHV0Ci0rCi0raXAgcHJvdG9jb2wgaWNtcCBpY21wIHR5cGUgZWNoby1yZXF1ZXN0O29rO2ljbXAgdHlwZSBlY2hvLXJlcXVlc3QKLStpY21wIHR5cGUgZWNoby1yZXF1ZXN0O29rCi0raXA2IG5leHRoZHIgaWNtcHY2IGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdDtvaztpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QKLStpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3Q7b2sKLWRpZmYgLS1naXQgYS90ZXN0cy9weS9icmlkZ2UvaWNtcFgudC5wYXlsb2FkIGIvdGVzdHMvcHkvYnJpZGdlL2ljbXBYLnQucGF5bG9hZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE5ZWZkZDgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL3B5L2JyaWRnZS9pY21wWC50LnBheWxvYWQKLUBAIC0wLDAgKzEsMzYgQEAKLSsjIGlwIHByb3RvY29sIGljbXAgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotK2JyaWRnZSB0ZXN0LWJyaWRnZSBpbnB1dAotKyAgWyBwYXlsb2FkIGxvYWQgMmIgQCBsaW5rIGhlYWRlciArIDEyID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDkgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwMSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKwotKyMgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotK2JyaWRnZSB0ZXN0LWJyaWRnZSBpbnB1dAotKyAgWyBwYXlsb2FkIGxvYWQgMmIgQCBsaW5rIGhlYWRlciArIDEyID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDkgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwMSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKwotKyMgaXA2IG5leHRoZHIgaWNtcHY2IGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdAotK2JyaWRnZSB0ZXN0LWJyaWRnZSBpbnB1dAotKyAgWyBwYXlsb2FkIGxvYWQgMmIgQCBsaW5rIGhlYWRlciArIDEyID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMGRkODYgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDYgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAzYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwODAgXQotKwotKyMgaWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0Ci0rYnJpZGdlIHRlc3QtYnJpZGdlIGlucHV0Ci0rICBbIHBheWxvYWQgbG9hZCAyYiBAIGxpbmsgaGVhZGVyICsgMTIgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwZGQ4NiBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDNhIF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgdHJhbnNwb3J0IGhlYWRlciArIDAgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDA4MCBdCi0rCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHkvaW5ldC9pY21wWC50IGIvdGVzdHMvcHkvaW5ldC9pY21wWC50Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWI0NjdhMQotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvcHkvaW5ldC9pY21wWC50Ci1AQCAtMCwwICsxLDggQEAKLSs6aW5wdXQ7dHlwZSBmaWx0ZXIgaG9vayBpbnB1dCBwcmlvcml0eSAwCi0rCi0rKmluZXQ7dGVzdC1pbmV0O2lucHV0Ci0rCi0raXAgcHJvdG9jb2wgaWNtcCBpY21wIHR5cGUgZWNoby1yZXF1ZXN0O29rO2ljbXAgdHlwZSBlY2hvLXJlcXVlc3QKLStpY21wIHR5cGUgZWNoby1yZXF1ZXN0O29rCi0raXA2IG5leHRoZHIgaWNtcHY2IGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdDtvaztpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QKLStpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3Q7b2sKLWRpZmYgLS1naXQgYS90ZXN0cy9weS9pbmV0L2ljbXBYLnQucGF5bG9hZCBiL3Rlc3RzL3B5L2luZXQvaWNtcFgudC5wYXlsb2FkCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODFjYTc3NAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvcHkvaW5ldC9pY21wWC50LnBheWxvYWQKLUBAIC0wLDAgKzEsMzYgQEAKLSsjIGlwIHByb3RvY29sIGljbXAgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotK2luZXQgdGVzdC1pbmV0IGlucHV0Ci0rICBbIG1ldGEgbG9hZCBuZnByb3RvID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDIgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDkgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwMSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKwotKyMgaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotK2luZXQgdGVzdC1pbmV0IGlucHV0Ci0rICBbIG1ldGEgbG9hZCBuZnByb3RvID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDIgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDkgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwMSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDggXQotKwotKyMgaXA2IG5leHRoZHIgaWNtcHY2IGljbXB2NiB0eXBlIGVjaG8tcmVxdWVzdAotK2luZXQgdGVzdC1pbmV0IGlucHV0Ci0rICBbIG1ldGEgbG9hZCBuZnByb3RvID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMGEgXQotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDYgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAzYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwODAgXQotKwotKyMgaWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0Ci0raW5ldCB0ZXN0LWluZXQgaW5wdXQKLSsgIFsgbWV0YSBsb2FkIG5mcHJvdG8gPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAwYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDNhIF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgdHJhbnNwb3J0IGhlYWRlciArIDAgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDA4MCBdCi0rCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvZmlsZXMvMDAwMi1wcm90by1BZGQtc29tZS1leG90aWMtSUNNUHY2LXR5cGVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDItcHJvdG8tQWRkLXNvbWUtZXhvdGljLUlDTVB2Ni10eXBlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ5ZTlkMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvZmlsZXMvMDAwMi1wcm90by1BZGQtc29tZS1leG90aWMtSUNNUHY2LXR5cGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLUZyb20gOWFkZThmYjc1Zjg5NjMzNzViNDViM2YyOTczYjhiYjdhYTY2YWQ3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBoaWwgU3V0dGVyIDxwaGlsQG53bC5jYz4KLURhdGU6IFRodSwgMTYgTWFyIDIwMTcgMTM6NDM6MjAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHJvdG86IEFkZCBzb21lIGV4b3RpYyBJQ01QdjYgdHlwZXMKLQotVGhpcyBhZGRzIHN1cHBvcnQgZm9yIG1hdGNoaW5nIG9uIGludmVyc2UgTkQgbWVzc2FnZXMgYXMgZGVmaW5lZCBieQotUkZDMzEyMiAobm90IGltcGxlbWVudGVkIGluIExpbnV4KSBhbmQgTUxEdjIgYXMgZGVmaW5lZCBieSBSRkMzODEwLgotCi1Ob3RlIHRoYXQgSUNNUFY2X01MRDJfUkVQT1JUIG1hY3JvIGlzIGRlZmluZWQgaW4gbGludXgvaWNtcHY2LmggYnV0Ci1pbmNsdWRpbmcgdGhhdCBoZWFkZXIgbGVhZHMgdG8gY29uZmxpY3RzIHdpdGggc3ltYm9scyBkZWZpbmVkIGluCi1uZXRpbmV0L2ljbXA2LmguCi0KLUluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSwgIm1sZC1saXN0ZW5lci1kb25lIiBpcyBpbnRyb2R1Y2VkIGFzIGFuIGFsaWFzCi1mb3IgIm1sZC1saXN0ZW5lci1yZWR1Y3Rpb24iLgotCi1TaWduZWQtb2ZmLWJ5OiBQaGlsIFN1dHRlciA8cGhpbEBud2wuY2M+Ci1TaWduZWQtb2ZmLWJ5OiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wcm90by5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKysrCi0gdGVzdHMvcHkvaXA2L2ljbXB2Ni50ICAgICAgICAgICAgIHwgIDggKysrKysrLS0KLSB0ZXN0cy9weS9pcDYvaWNtcHY2LnQucGF5bG9hZC5pcDYgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Byb3RvLmMgYi9zcmMvcHJvdG8uYwotaW5kZXggZmI5NjUzMC4uNzllOWRiZiAxMDA2NDQKLS0tLSBhL3NyYy9wcm90by5jCi0rKysgYi9zcmMvcHJvdG8uYwotQEAgLTYzMiw2ICs2MzIsMTAgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faXAgPSB7Ci0gCi0gI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KLSAKLSsjZGVmaW5lIElORF9ORUlHSEJPUl9TT0xJQ0lUCTE0MQotKyNkZWZpbmUgSU5EX05FSUdIQk9SX0FEVkVSVAkxNDIKLSsjZGVmaW5lIElDTVBWNl9NTEQyX1JFUE9SVAkxNDMKLSsKLSBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bWJvbF90YWJsZSBpY21wNl90eXBlX3RibCA9IHsKLSAJLmJhc2UJCT0gQkFTRV9ERUNJTUFMLAotIAkuc3ltYm9scwk9IHsKLUBAIC02NDMsNiArNjQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1ib2xfdGFibGUgaWNtcDZfdHlwZV90YmwgPSB7Ci0gCQlTWU1CT0woImVjaG8tcmVwbHkiLAkJCUlDTVA2X0VDSE9fUkVQTFkpLAotIAkJU1lNQk9MKCJtbGQtbGlzdGVuZXItcXVlcnkiLAkJTUxEX0xJU1RFTkVSX1FVRVJZKSwKLSAJCVNZTUJPTCgibWxkLWxpc3RlbmVyLXJlcG9ydCIsCQlNTERfTElTVEVORVJfUkVQT1JUKSwKLSsJCVNZTUJPTCgibWxkLWxpc3RlbmVyLWRvbmUiLAkJTUxEX0xJU1RFTkVSX1JFRFVDVElPTiksCi0gCQlTWU1CT0woIm1sZC1saXN0ZW5lci1yZWR1Y3Rpb24iLAlNTERfTElTVEVORVJfUkVEVUNUSU9OKSwKLSAJCVNZTUJPTCgibmQtcm91dGVyLXNvbGljaXQiLAkJTkRfUk9VVEVSX1NPTElDSVQpLAotIAkJU1lNQk9MKCJuZC1yb3V0ZXItYWR2ZXJ0IiwJCU5EX1JPVVRFUl9BRFZFUlQpLAotQEAgLTY1MCw2ICs2NTUsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bWJvbF90YWJsZSBpY21wNl90eXBlX3RibCA9IHsKLSAJCVNZTUJPTCgibmQtbmVpZ2hib3ItYWR2ZXJ0IiwJCU5EX05FSUdIQk9SX0FEVkVSVCksCi0gCQlTWU1CT0woIm5kLXJlZGlyZWN0IiwJCQlORF9SRURJUkVDVCksCi0gCQlTWU1CT0woInJvdXRlci1yZW51bWJlcmluZyIsCQlJQ01QNl9ST1VURVJfUkVOVU1CRVJJTkcpLAotKwkJU1lNQk9MKCJpbmQtbmVpZ2hib3Itc29saWNpdCIsCQlJTkRfTkVJR0hCT1JfU09MSUNJVCksCi0rCQlTWU1CT0woImluZC1uZWlnaGJvci1hZHZlcnQiLAkJSU5EX05FSUdIQk9SX0FEVkVSVCksCi0rCQlTWU1CT0woIm1sZDItbGlzdGVuZXItcmVwb3J0IiwJCUlDTVBWNl9NTEQyX1JFUE9SVCksCi0gCQlTWU1CT0xfTElTVF9FTkQKLSAJfSwKLSB9OwotZGlmZiAtLWdpdCBhL3Rlc3RzL3B5L2lwNi9pY21wdjYudCBiL3Rlc3RzL3B5L2lwNi9pY21wdjYudAotaW5kZXggYWZiZDQ1MS4uYTg5OGZlMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5L2lwNi9pY21wdjYudAotKysrIGIvdGVzdHMvcHkvaXA2L2ljbXB2Ni50Ci1AQCAtMTEsNyArMTEsOCBAQCBpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgZWNoby1yZXBseSBhY2NlcHQ7b2sKLSBpY21wdjYgdHlwZSBtbGQtbGlzdGVuZXItcXVlcnkgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgbWxkLWxpc3RlbmVyLXJlcG9ydCBhY2NlcHQ7b2sKLS1pY21wdjYgdHlwZSBtbGQtbGlzdGVuZXItcmVkdWN0aW9uIGFjY2VwdDtvawotK2ljbXB2NiB0eXBlIG1sZC1saXN0ZW5lci1kb25lIGFjY2VwdDtvawotK2ljbXB2NiB0eXBlIG1sZC1saXN0ZW5lci1yZWR1Y3Rpb24gYWNjZXB0O29rO2ljbXB2NiB0eXBlIG1sZC1saXN0ZW5lci1kb25lIGFjY2VwdAotIGljbXB2NiB0eXBlIG5kLXJvdXRlci1zb2xpY2l0IGFjY2VwdDtvawotIGljbXB2NiB0eXBlIG5kLXJvdXRlci1hZHZlcnQgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgbmQtbmVpZ2hib3Itc29saWNpdCBhY2NlcHQ7b2sKLUBAIC0xOSw4ICsyMCwxMSBAQCBpY21wdjYgdHlwZSBuZC1uZWlnaGJvci1hZHZlcnQgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgbmQtcmVkaXJlY3QgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgcGFyYW1ldGVyLXByb2JsZW0gYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgcm91dGVyLXJlbnVtYmVyaW5nIGFjY2VwdDtvawotK2ljbXB2NiB0eXBlIGluZC1uZWlnaGJvci1zb2xpY2l0IGFjY2VwdDtvawotK2ljbXB2NiB0eXBlIGluZC1uZWlnaGJvci1hZHZlcnQgYWNjZXB0O29rCi0raWNtcHY2IHR5cGUgbWxkMi1saXN0ZW5lci1yZXBvcnQgYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUge2Rlc3RpbmF0aW9uLXVucmVhY2hhYmxlLCB0aW1lLWV4Y2VlZGVkLCBuZC1yb3V0ZXItc29saWNpdH0gYWNjZXB0O29rCi0taWNtcHY2IHR5cGUge3JvdXRlci1yZW51bWJlcmluZywgbWxkLWxpc3RlbmVyLXJlZHVjdGlvbiwgdGltZS1leGNlZWRlZCwgbmQtcm91dGVyLXNvbGljaXR9IGFjY2VwdDtvawotK2ljbXB2NiB0eXBlIHtyb3V0ZXItcmVudW1iZXJpbmcsIG1sZC1saXN0ZW5lci1kb25lLCB0aW1lLWV4Y2VlZGVkLCBuZC1yb3V0ZXItc29saWNpdH0gYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUge21sZC1saXN0ZW5lci1xdWVyeSwgdGltZS1leGNlZWRlZCwgbmQtcm91dGVyLWFkdmVydH0gYWNjZXB0O29rCi0gaWNtcHY2IHR5cGUgIT0ge21sZC1saXN0ZW5lci1xdWVyeSwgdGltZS1leGNlZWRlZCwgbmQtcm91dGVyLWFkdmVydH0gYWNjZXB0O29rCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcHkvaXA2L2ljbXB2Ni50LnBheWxvYWQuaXA2IGIvdGVzdHMvcHkvaXA2L2ljbXB2Ni50LnBheWxvYWQuaXA2Ci1pbmRleCA5ZmUyNDk2Li4zMGY1OGNhIDEwMDY0NAotLS0tIGEvdGVzdHMvcHkvaXA2L2ljbXB2Ni50LnBheWxvYWQuaXA2Ci0rKysgYi90ZXN0cy9weS9pcDYvaWNtcHY2LnQucGF5bG9hZC5pcDYKLUBAIC01NCw2ICs1NCwxNCBAQCBpcDYgdGVzdC1pcDYgaW5wdXQKLSAgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwODMgXQotICAgWyBpbW1lZGlhdGUgcmVnIDAgYWNjZXB0IF0KLSAKLSsjIGljbXB2NiB0eXBlIG1sZC1saXN0ZW5lci1kb25lIGFjY2VwdAotK2lwNiB0ZXN0LWlwNiBpbnB1dAotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDYgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAzYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwODQgXQotKyAgWyBpbW1lZGlhdGUgcmVnIDAgYWNjZXB0IF0KLSsKLSAjIGljbXB2NiB0eXBlIG1sZC1saXN0ZW5lci1yZWR1Y3Rpb24gYWNjZXB0Ci0gaXA2IHRlc3QtaXA2IGlucHV0Ci0gICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi1AQCAtMTE4LDYgKzEyNiwzMCBAQCBpcDYgdGVzdC1pcDYgaW5wdXQKLSAgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwOGEgXQotICAgWyBpbW1lZGlhdGUgcmVnIDAgYWNjZXB0IF0KLSAKLSsjIGljbXB2NiB0eXBlIGluZC1uZWlnaGJvci1zb2xpY2l0IGFjY2VwdAotK2lwNiB0ZXN0LWlwNiBpbnB1dAotKyAgWyBwYXlsb2FkIGxvYWQgMWIgQCBuZXR3b3JrIGhlYWRlciArIDYgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAzYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwOGQgXQotKyAgWyBpbW1lZGlhdGUgcmVnIDAgYWNjZXB0IF0KLSsKLSsjIGljbXB2NiB0eXBlIGluZC1uZWlnaGJvci1hZHZlcnQgYWNjZXB0Ci0raXA2IHRlc3QtaXA2IGlucHV0Ci0rICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDNhIF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgdHJhbnNwb3J0IGhlYWRlciArIDAgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDA4ZSBdCi0rICBbIGltbWVkaWF0ZSByZWcgMCBhY2NlcHQgXQotKwotKyMgaWNtcHY2IHR5cGUgbWxkMi1saXN0ZW5lci1yZXBvcnQgYWNjZXB0Ci0raXA2IHRlc3QtaXA2IGlucHV0Ci0rICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi0rICBbIGNtcCBlcSByZWcgMSAweDAwMDAwMDNhIF0KLSsgIFsgcGF5bG9hZCBsb2FkIDFiIEAgdHJhbnNwb3J0IGhlYWRlciArIDAgPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDA4ZiBdCi0rICBbIGltbWVkaWF0ZSByZWcgMCBhY2NlcHQgXQotKwotICMgaWNtcHY2IHR5cGUge2Rlc3RpbmF0aW9uLXVucmVhY2hhYmxlLCB0aW1lLWV4Y2VlZGVkLCBuZC1yb3V0ZXItc29saWNpdH0gYWNjZXB0Ci0gX19zZXQlZCB0ZXN0LWlwNiAzCi0gX19zZXQlZCB0ZXN0LWlwNiAwCi1AQCAtMTI5LDcgKzE2MSw3IEBAIGlwNiB0ZXN0LWlwNiBpbnB1dAotICAgWyBsb29rdXAgcmVnIDEgc2V0IF9fc2V0JWQgXQotICAgWyBpbW1lZGlhdGUgcmVnIDAgYWNjZXB0IF0KLSAKLS0jIGljbXB2NiB0eXBlIHtyb3V0ZXItcmVudW1iZXJpbmcsIG1sZC1saXN0ZW5lci1yZWR1Y3Rpb24sIHRpbWUtZXhjZWVkZWQsIG5kLXJvdXRlci1zb2xpY2l0fSBhY2NlcHQKLSsjIGljbXB2NiB0eXBlIHtyb3V0ZXItcmVudW1iZXJpbmcsIG1sZC1saXN0ZW5lci1kb25lLCB0aW1lLWV4Y2VlZGVkLCBuZC1yb3V0ZXItc29saWNpdH0gYWNjZXB0Ci0gX19zZXQlZCB0ZXN0LWlwNiAzCi0gX19zZXQlZCB0ZXN0LWlwNiAwCi0gCWVsZW1lbnQgMDAwMDAwOGEgIDogMCBbZW5kXQllbGVtZW50IDAwMDAwMDg0ICA6IDAgW2VuZF0JZWxlbWVudCAwMDAwMDAwMyAgOiAwIFtlbmRdCWVsZW1lbnQgMDAwMDAwODUgIDogMCBbZW5kXQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDMtcGF5bG9hZC1zcGxpdC1sbC1wcm90by1kZXBlbmRlbmN5LWludG8taGVscGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDMtcGF5bG9hZC1zcGxpdC1sbC1wcm90by1kZXBlbmRlbmN5LWludG8taGVscGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGNhYzMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDAzLXBheWxvYWQtc3BsaXQtbGwtcHJvdG8tZGVwZW5kZW5jeS1pbnRvLWhlbHBlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gOGQ4Y2ZlNWFkNmNhNDYwYTUyNjJmYjE1ZmRiZWYzNjAxMDU4Yzc4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLURhdGU6IFRodSwgMTggTWF5IDIwMTcgMTM6MzA6NTQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIHBheWxvYWQ6IHNwbGl0IGxsIHByb3RvIGRlcGVuZGVuY3kgaW50byBoZWxwZXIKLQotd2lsbCBiZSByZS11c2VkIGluIGZvbGxvdXAgcGF0Y2ggZm9yIGljbXAvaWNtcHY2IGRlcGVuZW5jeQotaGFuZGxpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wYXlsb2FkLmMgfCAyOSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wYXlsb2FkLmMgYi9zcmMvcGF5bG9hZC5jCi1pbmRleCA1NTEyOGZlLi4zMWU1YTAyIDEwMDY0NAotLS0tIGEvc3JjL3BheWxvYWQuYwotKysrIGIvc3JjL3BheWxvYWQuYwotQEAgLTIyNCwyMSArMjI0LDI4IEBAIHN0YXRpYyBpbnQgcGF5bG9hZF9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgZXZhbF9jdHggKmN0eCwKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19kZXNjICoKLStwYXlsb2FkX2dldF9nZXRfbGxfaGRyKGNvbnN0IHN0cnVjdCBldmFsX2N0eCAqY3R4KQotK3sKLSsJc3dpdGNoIChjdHgtPnBjdHguZmFtaWx5KSB7Ci0rCWNhc2UgTkZQUk9UT19JTkVUOgotKwkJcmV0dXJuICZwcm90b19pbmV0OwotKwljYXNlIE5GUFJPVE9fQlJJREdFOgotKwkJcmV0dXJuICZwcm90b19ldGg7Ci0rCWNhc2UgTkZQUk9UT19ORVRERVY6Ci0rCQlyZXR1cm4gJnByb3RvX25ldGRldjsKLSsJZGVmYXVsdDoKLSsJCWJyZWFrOwotKwl9Ci0rCi0rCXJldHVybiBOVUxMOwotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgKgotIHBheWxvYWRfZ2VuX3NwZWNpYWxfZGVwZW5kZW5jeShzdHJ1Y3QgZXZhbF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IGV4cHIgKmV4cHIpCi0gewotIAlzd2l0Y2ggKGV4cHItPnBheWxvYWQuYmFzZSkgewotIAljYXNlIFBST1RPX0JBU0VfTExfSERSOgotLQkJc3dpdGNoIChjdHgtPnBjdHguZmFtaWx5KSB7Ci0tCQljYXNlIE5GUFJPVE9fSU5FVDoKLS0JCQlyZXR1cm4gJnByb3RvX2luZXQ7Ci0tCQljYXNlIE5GUFJPVE9fQlJJREdFOgotLQkJCXJldHVybiAmcHJvdG9fZXRoOwotLQkJY2FzZSBORlBST1RPX05FVERFVjoKLS0JCQlyZXR1cm4gJnByb3RvX25ldGRldjsKLS0JCWRlZmF1bHQ6Ci0tCQkJYnJlYWs7Ci0tCQl9Ci0tCQlicmVhazsKLSsJCXJldHVybiBwYXlsb2FkX2dldF9nZXRfbGxfaGRyKGN0eCk7Ci0gCWNhc2UgUFJPVE9fQkFTRV9UUkFOU1BPUlRfSERSOgotIAkJaWYgKGV4cHItPnBheWxvYWQuZGVzYyA9PSAmcHJvdG9faWNtcCkKLSAJCQlyZXR1cm4gJnByb3RvX2lwOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDQtc3JjLWFsbG93LXVwZGF0ZS1vZi1uZXQtYmFzZS13Li1tZXRhLWw0cHJvdG8taWNtcHY2LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDQtc3JjLWFsbG93LXVwZGF0ZS1vZi1uZXQtYmFzZS13Li1tZXRhLWw0cHJvdG8taWNtcHY2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODBlZGIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA0LXNyYy1hbGxvdy11cGRhdGUtb2YtbmV0LWJhc2Utdy4tbWV0YS1sNHByb3RvLWljbXB2Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gOWExZjJiYmYzY2QyNDE3ZTBjMTBkMTg1NzhlMjI0YWJlMjA3MWQ2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLURhdGU6IFR1ZSwgMjEgTWFyIDIwMTcgMTk6NDc6MjIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIHNyYzogYWxsb3cgdXBkYXRlIG9mIG5ldCBiYXNlIHcuIG1ldGEgbDRwcm90byBpY21wdjYKLQotbmZ0IGFkZCBydWxlIGlwNiBmIGkgbWV0YSBsNHByb3RvIGlwdjYtaWNtcCBpY21wdjYgdHlwZSBuZC1yb3V0ZXItYWR2ZXJ0Ci08Y21kbGluZT46MTo1MC02MDogRXJyb3I6IGNvbmZsaWN0aW5nIHByb3RvY29scyBzcGVjaWZpZWQ6IHVua25vd24gdnMuIGljbXB2NgotCi1hZGQgaWNtcHY2IHRvIG5leHRoZHIgbGlzdCBzbyBiYXNlIGdldHMgdXBkYXRlZCBjb3JyZWN0bHkuCi0KLVJlcG9ydGVkLWJ5OiBUaG9tYXMgV29lcm5lciA8dHdvZXJuZXJAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wcm90by5jICAgICAgICAgICAgICAgICB8IDEgKwotIHRlc3RzL3B5L2FueS9tZXRhLnQgICAgICAgICB8IDEgKwotIHRlc3RzL3B5L2FueS9tZXRhLnQucGF5bG9hZCB8IDcgKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvcHJvdG8uYyBiL3NyYy9wcm90by5jCi1pbmRleCA3OWU5ZGJmLi5mY2RmYmU3IDEwMDY0NAotLS0tIGEvc3JjL3Byb3RvLmMKLSsrKyBiL3NyYy9wcm90by5jCi1AQCAtNzc5LDYgKzc3OSw3IEBAIGNvbnN0IHN0cnVjdCBwcm90b19kZXNjIHByb3RvX2luZXRfc2VydmljZSA9IHsKLSAJCVBST1RPX0xJTksoSVBQUk9UT19UQ1AsCQkmcHJvdG9fdGNwKSwKLSAJCVBST1RPX0xJTksoSVBQUk9UT19EQ0NQLAkmcHJvdG9fZGNjcCksCi0gCQlQUk9UT19MSU5LKElQUFJPVE9fU0NUUCwJJnByb3RvX3NjdHApLAotKwkJUFJPVE9fTElOSyhJUFBST1RPX0lDTVBWNiwJJnByb3RvX2ljbXA2KSwKLSAJfSwKLSAJLnRlbXBsYXRlcwk9IHsKLSAJCVswXQk9IFBST1RPX01FVEFfVEVNUExBVEUoImw0cHJvdG8iLCAmaW5ldF9wcm90b2NvbF90eXBlLCBORlRfTUVUQV9MNFBST1RPLCA4KSwKLWRpZmYgLS1naXQgYS90ZXN0cy9weS9hbnkvbWV0YS50IGIvdGVzdHMvcHkvYW55L21ldGEudAotaW5kZXggYzNhYzBhNC4uMmZmOTQyZiAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5L2FueS9tZXRhLnQKLSsrKyBiL3Rlc3RzL3B5L2FueS9tZXRhLnQKLUBAIC0zOCw2ICszOCw3IEBAIG1ldGEgbDRwcm90byB7IDMzLCA1NSwgNjcsIDg4fTtvazttZXRhIGw0cHJvdG8geyAzMywgNTUsIDY3LCA4OH0KLSBtZXRhIGw0cHJvdG8gIT0geyAzMywgNTUsIDY3LCA4OH07b2sKLSBtZXRhIGw0cHJvdG8geyAzMy01NX07b2sKLSBtZXRhIGw0cHJvdG8gIT0geyAzMy01NX07b2sKLSttZXRhIGw0cHJvdG8gaXB2Ni1pY21wIGljbXB2NiB0eXBlIG5kLXJvdXRlci1hZHZlcnQ7b2s7aWNtcHY2IHR5cGUgbmQtcm91dGVyLWFkdmVydAotIAotIG1ldGEgcHJpb3JpdHkgcm9vdDtvawotIG1ldGEgcHJpb3JpdHkgbm9uZTtvawotZGlmZiAtLWdpdCBhL3Rlc3RzL3B5L2FueS9tZXRhLnQucGF5bG9hZCBiL3Rlc3RzL3B5L2FueS9tZXRhLnQucGF5bG9hZAotaW5kZXggZTQzMjY1Ni4uODcxZjFhZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3B5L2FueS9tZXRhLnQucGF5bG9hZAotKysrIGIvdGVzdHMvcHkvYW55L21ldGEudC5wYXlsb2FkCi1AQCAtMTg3LDYgKzE4NywxMyBAQCBpcCB0ZXN0LWlwNCBpbnB1dAotICAgWyBieXRlb3JkZXIgcmVnIDEgPSBodG9uKHJlZyAxLCAyLCAxKSBdCi0gICBbIGxvb2t1cCByZWcgMSBzZXQgX19zZXQlZCAweDEgXQotIAotKyMgbWV0YSBsNHByb3RvIGlwdjYtaWNtcCBpY21wdjYgdHlwZSBuZC1yb3V0ZXItYWR2ZXJ0Ci0raXAgdGVzdC1pcDQgaW5wdXQKLSsgIFsgbWV0YSBsb2FkIGw0cHJvdG8gPT4gcmVnIDEgXQotKyAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMDAzYSBdCi0rICBbIHBheWxvYWQgbG9hZCAxYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAwID0+IHJlZyAxIF0KLSsgIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwODYgXQotKwotICMgbWV0YSBtYXJrIDB4NAotIGlwIHRlc3QtaXA0IGlucHV0Ci0gICBbIG1ldGEgbG9hZCBtYXJrID0+IHJlZyAxIF0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA1LXNyYy1pcHY2LXN3aXRjaC1pbXBsaWNpdC1kZXBlbmRlbmNpZXMtdG8tbWV0YS1sNHByb3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvZmlsZXMvMDAwNS1zcmMtaXB2Ni1zd2l0Y2gtaW1wbGljaXQtZGVwZW5kZW5jaWVzLXRvLW1ldGEtbDRwcm90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjAwYWUwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA1LXNyYy1pcHY2LXN3aXRjaC1pbXBsaWNpdC1kZXBlbmRlbmNpZXMtdG8tbWV0YS1sNHByb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1Gcm9tIDIzNjZlZDlmZmNiNGY1ZjUzNDFmMTBmMGExZDFhNDY4OGQzN2FkODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+Ci1EYXRlOiBXZWQsIDIyIE1hciAyMDE3IDE1OjA4OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBzcmM6IGlwdjY6IHN3aXRjaCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMgdG8gbWV0YSBsNHByb3RvCi0KLXdoZW4gdXNpbmcgcnVsZSBsaWtlCi0KLWlwNiBmaWx0ZXIgaW5wdXQgdGNwIGRwb3J0IDIyCi1uZnQgZ2VuZXJhdGVzOgotICBbIHBheWxvYWQgbG9hZCAxYiBAIG5ldHdvcmsgaGVhZGVyICsgNiA9PiByZWcgMSBdCi0gIFsgY21wIGVxIHJlZyAxIDB4MDAwMDAwMDYgXQotICBbIHBheWxvYWQgbG9hZCAyYiBAIHRyYW5zcG9ydCBoZWFkZXIgKyAyID0+IHJlZyAxIF0KLSAgWyBjbXAgZXEgcmVnIDEgMHgwMDAwMTYwMCBdCi0KLXdoaWNoIGlzOiBpcDYgZmlsdGVyIGlucHV0IGlwNiBuZXh0aGRyIHRjcCBkcG9ydCAyMgotSU9XLCBzdWNoIGEgcnVsZSB3b24ndCBtYXRjaCBpZiBlLmcuIGEgZnJhZ21lbnQgaGVhZGVyIGlzIGluIHBsYWNlLgotCi1UaGlzIGNoYW5nZXMgaXA2X3Byb3RvIHRvIHVzZSAnbWV0YSBsNHByb3RvJyB3aGljaCBpcyB0aGUgcHJvdG9jb2wgaGVhZGVyCi1mb3VuZCBieSBleHRoZHIgd2Fsay4KLQotQSBzaWRlIGVmZmVjdCBpcyB0aGF0IGZvciBicmlkZ2Ugd2UgZ2V0IGEgc2hvcnRlciBkZXBlbmRlbmN5IGNoYWluIGFzIGl0Ci1ubyBsb25nZXIgbmVlZHMgdG8gcHJlcGVuZCAnZXRoZXIgcHJvdG8gaXB2NicgZm9yIG9sZCAnaXA2IG5leHRoZHInIGRlcC4KLQotT25seSBwcm9ibGVtOgotCi1pcDYgbmV4dGhkciB0Y3AgdGNwIGRwb3J0IDIyCi13aWxsIG5vdyBpbmplY3QgYSAodXNlbGVzcykgbWV0YSBsNCBkZXBlbmRlbmN5IGFzIGlwNiBuZXh0aGRyIGlzIG5vCi1sb25nZXIgZmxhZ2dlZCBhcyBFWFBSX0ZfUFJPVE9DT0wsIHRvIGF2b2lkIHRoaXMgYWRkIGEgc21hbGwgaGVscGVyCi10aGF0IHNraXBzIHRoZSB1bm5lZGVkIG1ldGEgZGVwZW5kZW5jeSBpbiB0aGF0IGNhc2UuCi0KLVNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wYXlsb2FkLmMgfCAxOSArKysrKysrKysrKysrKysrKystCi0gc3JjL3Byb3RvLmMgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3BheWxvYWQuYyBiL3NyYy9wYXlsb2FkLmMKLWluZGV4IDMxZTVhMDIuLjM4ZGIxNWUgMTAwNjQ0Ci0tLS0gYS9zcmMvcGF5bG9hZC5jCi0rKysgYi9zcmMvcGF5bG9hZC5jCi1AQCAtMTE3LDYgKzExNywyMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJfb3BzIHBheWxvYWRfZXhwcl9vcHMgPSB7Ci0gCS5wY3R4X3VwZGF0ZQk9IHBheWxvYWRfZXhwcl9wY3R4X3VwZGF0ZSwKLSB9OwotIAotKy8qCi0rICogaXB2NiBpcyBzcGVjaWFsIGNhc2UsIHdlIG5vcm1hbGx5IHVzZSAnbWV0YSBsNHByb3RvJyB0byBmZXRjaCB0aGUgbGFzdAotKyAqIGw0IGhlYWRlciBvZiB0aGUgaXB2NiBleHRlbnNpb24gaGVhZGVyIGNoYWluIHNvIHdlIHdpbGwgYWxzbyBtYXRjaAotKyAqIHRjcCBhZnRlciBhIGZyYWdtZW50YXRpb24gaGVhZGVyLCBmb3IgaW5zdGFuY2UuCi0rICoKLSsgKiBJZiB1c2VyIHNwZWNpZmljYWxseSBhc2tzIGZvciBuZXh0aGRyIHgsIHRyZWF0IGlzIGFzIGEgZnVsbAotKyAqIGRlcGVuZGVuY3kgcmF0aGVyIHRoYW4gaW5qZWN0aW5nIGFub3RoZXIgKHVzZWxlc3MpIG1ldGEgbDQgb25lLgotKyAqLwotK3N0YXRpYyBib29sIHByb3RvX2tleV9pc19wcm90b2NvbChjb25zdCBzdHJ1Y3QgcHJvdG9fZGVzYyAqZGVzYywgdW5zaWduZWQgaW50IHR5cGUpCi0rewotKwlpZiAodHlwZSA9PSBkZXNjLT5wcm90b2NvbF9rZXkgfHwKLSsJICAgIChkZXNjID09ICZwcm90b19pcDYgJiYgdHlwZSA9PSBJUDZIRFJfTkVYVEhEUikpCi0rCQlyZXR1cm4gdHJ1ZTsKLSsKLSsJcmV0dXJuIGZhbHNlOwotK30KLSsKLSBzdHJ1Y3QgZXhwciAqcGF5bG9hZF9leHByX2FsbG9jKGNvbnN0IHN0cnVjdCBsb2NhdGlvbiAqbG9jLAotIAkJCQljb25zdCBzdHJ1Y3QgcHJvdG9fZGVzYyAqZGVzYywKLSAJCQkJdW5zaWduZWQgaW50IHR5cGUpCi1AQCAtMTI5LDcgKzE0Niw3IEBAIHN0cnVjdCBleHByICpwYXlsb2FkX2V4cHJfYWxsb2MoY29uc3Qgc3RydWN0IGxvY2F0aW9uICpsb2MsCi0gCWlmIChkZXNjICE9IE5VTEwpIHsKLSAJCXRtcGwgPSAmZGVzYy0+dGVtcGxhdGVzW3R5cGVdOwotIAkJYmFzZSA9IGRlc2MtPmJhc2U7Ci0tCQlpZiAodHlwZSA9PSBkZXNjLT5wcm90b2NvbF9rZXkpCi0rCQlpZiAocHJvdG9fa2V5X2lzX3Byb3RvY29sKGRlc2MsIHR5cGUpKQotIAkJCWZsYWdzID0gRVhQUl9GX1BST1RPQ09MOwotIAl9IGVsc2UgewotIAkJdG1wbCA9ICZwcm90b191bmtub3duX3RlbXBsYXRlOwotZGlmZiAtLWdpdCBhL3NyYy9wcm90by5jIGIvc3JjL3Byb3RvLmMKLWluZGV4IGZjZGZiZTcuLjNiMjBhNWYgMTAwNjQ0Ci0tLS0gYS9zcmMvcHJvdG8uYwotKysrIGIvc3JjL3Byb3RvLmMKLUBAIC03MDcsNyArNzA3LDYgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faWNtcDYgPSB7Ci0gY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faXA2ID0gewotIAkubmFtZQkJPSAiaXA2IiwKLSAJLmJhc2UJCT0gUFJPVE9fQkFTRV9ORVRXT1JLX0hEUiwKLS0JLnByb3RvY29sX2tleQk9IElQNkhEUl9ORVhUSERSLAotIAkucHJvdG9jb2xzCT0gewotIAkJUFJPVE9fTElOSyhJUFBST1RPX0VTUCwJCSZwcm90b19lc3ApLAotIAkJUFJPVE9fTElOSyhJUFBST1RPX0FILAkJJnByb3RvX2FoKSwKLUBAIC03MjAsNiArNzE5LDcgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faXA2ID0gewotIAkJUFJPVE9fTElOSyhJUFBST1RPX0lDTVBWNiwJJnByb3RvX2ljbXA2KSwKLSAJfSwKLSAJLnRlbXBsYXRlcwk9IHsKLSsJCVswXQk9IFBST1RPX01FVEFfVEVNUExBVEUoImw0cHJvdG8iLCAmaW5ldF9wcm90b2NvbF90eXBlLCBORlRfTUVUQV9MNFBST1RPLCA4KSwKLSAJCVtJUDZIRFJfVkVSU0lPTl0JPSBIRFJfQklURklFTEQoInZlcnNpb24iLCAmaW50ZWdlcl90eXBlLCAwLCA0KSwKLSAJCVtJUDZIRFJfRFNDUF0JCT0gSERSX0JJVEZJRUxEKCJkc2NwIiwgJmRzY3BfdHlwZSwgNCwgNiksCi0gCQlbSVA2SERSX0VDTl0JCT0gSERSX0JJVEZJRUxEKCJlY24iLCAmZWNuX3R5cGUsIDEwLCAyKSwKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA2LXBheWxvYWQtZW5mb3JjZS1pcC1pcDYtcHJvdG9jb2wtZGVwZW5kaW5nLW9uLWljbXAtb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvZmlsZXMvMDAwNi1wYXlsb2FkLWVuZm9yY2UtaXAtaXA2LXByb3RvY29sLWRlcGVuZGluZy1vbi1pY21wLW9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDA3NmQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA2LXBheWxvYWQtZW5mb3JjZS1pcC1pcDYtcHJvdG9jb2wtZGVwZW5kaW5nLW9uLWljbXAtb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi1Gcm9tIGYyMWE3YTQ4NDliNTBjMzAzNDFlYzU3MTgxM2JkN2ZlMzcwNDBhZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+Ci1EYXRlOiBUaHUsIDE4IE1heSAyMDE3IDEzOjMwOjU0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBwYXlsb2FkOiBlbmZvcmNlIGlwL2lwNiBwcm90b2NvbCBkZXBlbmRpbmcgb24gaWNtcCBvcgotIGljbXB2NgotCi1BZnRlciBzb21lIGRpc2N1c3Npb24gd2l0aCBQYWJsbyB3ZSBhZ3JlZWQgdG8gdHJlYXQgaWNtcC9pY21wdjYgc3BlY2lhbGx5LgotCi1pbiB0aGUgY2FzZSBvZiBhIHJ1bGUgbGlrZSAndGNwIGRwb3J0IDIyJyB0aGUgaW5ldCwgYnJpZGdlIGFuZCBuZXRkZXYKLWZhbWlsaWVzIG9ubHkgY2FyZSBhYm91dCB0aGUgbG93ZXIgbGF5ZXIgcHJvdG9jb2wuCi0KLUluIHRoZSBpY21wdjYgY2FzZSBob3dldmVyIHdlJ2QgbGlrZSB0byBhbHNvIGVuZm9yY2UgYW4gaXB2NiBwcm90b2NvbCBjaGVjawotKGFuZCBpcHY0IGNoZWNrIGluIGljbXAgY2FzZSkuCi0KLVRoaXMgZXh0ZW5kcyBwYXlsb2FkX2dlbl9zcGVjaWFsX2RlcGVuZGVuY3koKSB0byBjb25zaWRlciB0aGlzLgotV2l0aCB0aGlzIHBhdGNoOgotCi1hZGQgcnVsZSAkcGYgZmlsdGVyIGlucHV0IG1ldGEgbDRwcm90byBpY21wdjYKLWFkZCBydWxlICRwZiBmaWx0ZXIgaW5wdXQgbWV0YSBsNHByb3RvIGljbXB2NiBpY21wdjYgdHlwZSBlY2hvLXJlcXVlc3QKLWFkZCBydWxlICRwZiBmaWx0ZXIgaW5wdXQgaWNtcHY2IHR5cGUgZWNoby1yZXF1ZXN0Ci0KLXdpbGwgd29yayBpbiBhbGwgdGFibGVzIGFuZCBhbGwgZmFtaWxpZXMuCi1Gb3IgaW5ldC9icmlkZ2UvbmV0ZGV2LCBhbiBpcHY2IHByb3RvY29sIGRlcGVuZGVuY3kgaXMgYWRkZWQ7IHRoaXMgd2lsbAotbm90IG1hdGNoIGlwdjQgcGFja2V0cyB3aXRoIGlwLT5wcm90b2NvbCA9PSBpY21wdjYsIEVYQ0VQVCBpbiB0aGUgY2FzZQotb2YgdGhlIGlwIGZhbWlseS4KLQotSXRzIHN0aWxsIHBvc3NpYmxlIHRvIG1hdGNoIGljbXB2Ni1pbi1pcHY0IGluIGluZXQvYnJpZGdlL25ldGRldiB3aXRoIGFuCi1leHBsaWNpdCBkZXBlbmRlbmN5OgotCi1hZGQgcnVsZSBpbmV0IGYgaSBpcCBwcm90b2NvbCBpcHY2LWljbXAgbWV0YSBsNHByb3RvIGlwdjYtaWNtcCBpY21wdjYgdHlwZSAuLi4KLQotSW1wbGljaXQgZGVwZW5kZW5jaWVzIHdvbid0IGdldCByZW1vdmVkIGF0IHRoZSBtb21lbnQsIHNvCi0gIGJyaWRnZSAuLi4gaWNtcCB0eXBlIGVjaG8tcmVxdWVzdAotd2lsbCBiZSBzaG93biBhcwotICBldGhlciB0eXBlIGlwIG1ldGEgbDRwcm90byAxIGljbXAgdHlwZSBlY2hvLXJlcXVlc3QKLQotU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBXZXN0cGhhbCA8ZndAc3RybGVuLmRlPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci0gc3JjL3BheWxvYWQuYyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3BheWxvYWQuYyBiL3NyYy9wYXlsb2FkLmMKLWluZGV4IDM4ZGIxNWUuLjg3OTZlZTUgMTAwNjQ0Ci0tLS0gYS9zcmMvcGF5bG9hZC5jCi0rKysgYi9zcmMvcGF5bG9hZC5jCi1AQCAtMjY0LDEwICsyNjQsMjkgQEAgcGF5bG9hZF9nZW5fc3BlY2lhbF9kZXBlbmRlbmN5KHN0cnVjdCBldmFsX2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgZXhwciAqZXhwcikKLSAJY2FzZSBQUk9UT19CQVNFX0xMX0hEUjoKLSAJCXJldHVybiBwYXlsb2FkX2dldF9nZXRfbGxfaGRyKGN0eCk7Ci0gCWNhc2UgUFJPVE9fQkFTRV9UUkFOU1BPUlRfSERSOgotLQkJaWYgKGV4cHItPnBheWxvYWQuZGVzYyA9PSAmcHJvdG9faWNtcCkKLS0JCQlyZXR1cm4gJnByb3RvX2lwOwotLQkJaWYgKGV4cHItPnBheWxvYWQuZGVzYyA9PSAmcHJvdG9faWNtcDYpCi0tCQkJcmV0dXJuICZwcm90b19pcDY7Ci0rCQlpZiAoZXhwci0+cGF5bG9hZC5kZXNjID09ICZwcm90b19pY21wIHx8Ci0rCQkgICAgZXhwci0+cGF5bG9hZC5kZXNjID09ICZwcm90b19pY21wNikgewotKwkJCWNvbnN0IHN0cnVjdCBwcm90b19kZXNjICpkZXNjLCAqZGVzY191cHBlcjsKLSsJCQlzdHJ1Y3Qgc3RtdCAqbnN0bXQ7Ci0rCi0rCQkJZGVzYyA9IGN0eC0+cGN0eC5wcm90b2NvbFtQUk9UT19CQVNFX0xMX0hEUl0uZGVzYzsKLSsJCQlpZiAoIWRlc2MpIHsKLSsJCQkJZGVzYyA9IHBheWxvYWRfZ2V0X2dldF9sbF9oZHIoY3R4KTsKLSsJCQkJaWYgKCFkZXNjKQotKwkJCQkJYnJlYWs7Ci0rCQkJfQotKwotKwkJCWRlc2NfdXBwZXIgPSAmcHJvdG9faXA2OwotKwkJCWlmIChleHByLT5wYXlsb2FkLmRlc2MgPT0gJnByb3RvX2ljbXApCi0rCQkJCWRlc2NfdXBwZXIgPSAmcHJvdG9faXA7Ci0rCi0rCQkJaWYgKHBheWxvYWRfYWRkX2RlcGVuZGVuY3koY3R4LCBkZXNjLCBkZXNjX3VwcGVyLAotKwkJCQkJCSAgIGV4cHIsICZuc3RtdCkgPCAwKQotKwkJCQlyZXR1cm4gTlVMTDsKLSsKLSsJCQlsaXN0X2FkZF90YWlsKCZuc3RtdC0+bGlzdCwgJmN0eC0+c3RtdC0+bGlzdCk7Ci0rCQkJcmV0dXJuIGRlc2NfdXBwZXI7Ci0rCQl9Ci0gCQlyZXR1cm4gJnByb3RvX2luZXRfc2VydmljZTsKLSAJZGVmYXVsdDoKLSAJCWJyZWFrOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDctc3JjLWlwLXN3aXRjaC1pbXBsaWNpdC1kZXBlbmRlbmNpZXMtdG8tbWV0YS1sNHByb3RvLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDA3LXNyYy1pcC1zd2l0Y2gtaW1wbGljaXQtZGVwZW5kZW5jaWVzLXRvLW1ldGEtbDRwcm90by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNzI0MzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDctc3JjLWlwLXN3aXRjaC1pbXBsaWNpdC1kZXBlbmRlbmNpZXMtdG8tbWV0YS1sNHByb3RvLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gMDgyNWM1N2Q1NzFiYjcxMjFlNzA0OGUxOThiOWIwMjNmN2U3ZjM1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLURhdGU6IFN1biwgNyBNYXkgMjAxNyAwMzo1MzozMCArMDIwMAotU3ViamVjdDogW1BBVENIXSBzcmM6IGlwOiBzd2l0Y2ggaW1wbGljaXQgZGVwZW5kZW5jaWVzIHRvIG1ldGEgbDRwcm90byB0b28KLQotYWZ0ZXIgaXA2IG5leHRoZHIgYWxzbyBzd2l0Y2ggaXAgdG8gbWV0YSBsNHByb3RvIGluc3RlYWQgb2YgaXAgcHJvdG9jb2wuCi0KLVdoaWxlIGl0cyBuZWVkZWQgZm9yIGlwdjYgKGR1ZSB0byBleHRlbnNpb24gaGVhZGVycykgdGhpcyBpc24ndCBuZWVkZWQKLWZvciBpcCBidXQgaXQgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdAotCi10Y3AgZHBvcnQgMjIKLQotcHJvZHVjZXMgc2FtZSBleHByZXNzaW9ucyBmb3IgaXAvaXA2L2luZXQgZmFtaWxpZXMuCi0KLVNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIHNyYy9wYXlsb2FkLmMgfCAxNyArKysrKysrKysrKy0tLS0tLQotIHNyYy9wcm90by5jICAgfCAgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcGF5bG9hZC5jIGIvc3JjL3BheWxvYWQuYwotaW5kZXggODc5NmVlNS4uMTFiNmRmMyAxMDA2NDQKLS0tLSBhL3NyYy9wYXlsb2FkLmMKLSsrKyBiL3NyYy9wYXlsb2FkLmMKLUBAIC0xMTgsMTcgKzExOCwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJfb3BzIHBheWxvYWRfZXhwcl9vcHMgPSB7Ci0gfTsKLSAKLSAvKgotLSAqIGlwdjYgaXMgc3BlY2lhbCBjYXNlLCB3ZSBub3JtYWxseSB1c2UgJ21ldGEgbDRwcm90bycgdG8gZmV0Y2ggdGhlIGxhc3QKLS0gKiBsNCBoZWFkZXIgb2YgdGhlIGlwdjYgZXh0ZW5zaW9uIGhlYWRlciBjaGFpbiBzbyB3ZSB3aWxsIGFsc28gbWF0Y2gKLSsgKiBXZSBub3JtYWxseSB1c2UgJ21ldGEgbDRwcm90bycgdG8gZmV0Y2ggdGhlIGxhc3QgbDQgaGVhZGVyIG9mIHRoZQotKyAqIGlwdjYgZXh0ZW5zaW9uIGhlYWRlciBjaGFpbiBzbyB3ZSB3aWxsIGFsc28gbWF0Y2gKLSAgKiB0Y3AgYWZ0ZXIgYSBmcmFnbWVudGF0aW9uIGhlYWRlciwgZm9yIGluc3RhbmNlLgotKyAqIEZvciBjb25zaXN0ZW5jeSB3ZSBhbHNvIHVzZSBtZXRhIGw0cHJvdG8gZm9yIGlwdjQuCi0gICoKLS0gKiBJZiB1c2VyIHNwZWNpZmljYWxseSBhc2tzIGZvciBuZXh0aGRyIHgsIHRyZWF0IGlzIGFzIGEgZnVsbAotLSAqIGRlcGVuZGVuY3kgcmF0aGVyIHRoYW4gaW5qZWN0aW5nIGFub3RoZXIgKHVzZWxlc3MpIG1ldGEgbDQgb25lLgotKyAqIElmIHVzZXIgc3BlY2lmaWNhbGx5IGFza3MgZm9yIG5leHRoZHIgeCwgZG9uJ3QgYWRkIGFub3RoZXIgKHVzZWxlc3MpCi0rICogbWV0YSBkZXBlbmRlbmN5LgotICAqLwotIHN0YXRpYyBib29sIHByb3RvX2tleV9pc19wcm90b2NvbChjb25zdCBzdHJ1Y3QgcHJvdG9fZGVzYyAqZGVzYywgdW5zaWduZWQgaW50IHR5cGUpCi0gewotLQlpZiAodHlwZSA9PSBkZXNjLT5wcm90b2NvbF9rZXkgfHwKLS0JICAgIChkZXNjID09ICZwcm90b19pcDYgJiYgdHlwZSA9PSBJUDZIRFJfTkVYVEhEUikpCi0rCWlmICh0eXBlID09IGRlc2MtPnByb3RvY29sX2tleSkKLSsJCXJldHVybiB0cnVlOwotKwotKwlpZiAoZGVzYyA9PSAmcHJvdG9faXA2ICYmIHR5cGUgPT0gSVA2SERSX05FWFRIRFIpCi0rCQlyZXR1cm4gdHJ1ZTsKLSsJaWYgKGRlc2MgPT0gJnByb3RvX2lwICYmIHR5cGUgPT0gSVBIRFJfUFJPVE9DT0wpCi0gCQlyZXR1cm4gdHJ1ZTsKLSAKLSAJcmV0dXJuIGZhbHNlOwotZGlmZiAtLWdpdCBhL3NyYy9wcm90by5jIGIvc3JjL3Byb3RvLmMKLWluZGV4IDNiMjBhNWYuLjJhZmVkZjcgMTAwNjQ0Ci0tLS0gYS9zcmMvcHJvdG8uYwotKysrIGIvc3JjL3Byb3RvLmMKLUBAIC01ODcsNyArNTg3LDYgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faXAgPSB7Ci0gCS5uYW1lCQk9ICJpcCIsCi0gCS5iYXNlCQk9IFBST1RPX0JBU0VfTkVUV09SS19IRFIsCi0gCS5jaGVja3N1bV9rZXkJPSBJUEhEUl9DSEVDS1NVTSwKLS0JLnByb3RvY29sX2tleQk9IElQSERSX1BST1RPQ09MLAotIAkucHJvdG9jb2xzCT0gewotIAkJUFJPVE9fTElOSyhJUFBST1RPX0lDTVAsCSZwcm90b19pY21wKSwKLSAJCVBST1RPX0xJTksoSVBQUk9UT19FU1AsCQkmcHJvdG9fZXNwKSwKLUBAIC02MDAsNiArNTk5LDcgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faXAgPSB7Ci0gCQlQUk9UT19MSU5LKElQUFJPVE9fU0NUUCwJJnByb3RvX3NjdHApLAotIAl9LAotIAkudGVtcGxhdGVzCT0gewotKwkJWzBdCT0gUFJPVE9fTUVUQV9URU1QTEFURSgibDRwcm90byIsICZpbmV0X3Byb3RvY29sX3R5cGUsIE5GVF9NRVRBX0w0UFJPVE8sIDgpLAotIAkJW0lQSERSX1ZFUlNJT05dCQk9IEhEUl9CSVRGSUVMRCgidmVyc2lvbiIsICZpbnRlZ2VyX3R5cGUsIDAsIDQpLAotIAkJW0lQSERSX0hEUkxFTkdUSF0JPSBIRFJfQklURklFTEQoImhkcmxlbmd0aCIsICZpbnRlZ2VyX3R5cGUsIDQsIDQpLAotIAkJW0lQSERSX0RTQ1BdICAgICAgICAgICAgPSBIRFJfQklURklFTEQoImRzY3AiLCAmZHNjcF90eXBlLCA4LCA2KSwKLUBAIC03NzksNiArNzc5LDcgQEAgY29uc3Qgc3RydWN0IHByb3RvX2Rlc2MgcHJvdG9faW5ldF9zZXJ2aWNlID0gewotIAkJUFJPVE9fTElOSyhJUFBST1RPX1RDUCwJCSZwcm90b190Y3ApLAotIAkJUFJPVE9fTElOSyhJUFBST1RPX0RDQ1AsCSZwcm90b19kY2NwKSwKLSAJCVBST1RPX0xJTksoSVBQUk9UT19TQ1RQLAkmcHJvdG9fc2N0cCksCi0rCQlQUk9UT19MSU5LKElQUFJPVE9fSUNNUCwJJnByb3RvX2ljbXApLAotIAkJUFJPVE9fTElOSyhJUFBST1RPX0lDTVBWNiwJJnByb3RvX2ljbXA2KSwKLSAJfSwKLSAJLnRlbXBsYXRlcwk9IHsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy9maXgtdG8tZ2VuZXJhdGUtbnRmLjgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvZmlsZXMvZml4LXRvLWdlbmVyYXRlLW50Zi44LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGNlOTBhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy9maXgtdG8tZ2VuZXJhdGUtbnRmLjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1bUEFUQ0hdIGRpc2FibGUgdG8gbWFrZSBudGYuOCBtYW4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSREQjJNQU4gZG8gbm90IHN1cHBvcnQgdGhlIHhpbmNsdWRlIHBhcmFtZXRlciB3aGV0aGVyIGl0IGlzCi1kb2Nib29rMngtbWFuIG9yIG90aGVyLCBzbyBkaXNhYmxlIHRvIG1ha2UgbnRmLjggbWFuCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGRvYy9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RvYy9NYWtlZmlsZS5hbSBiL2RvYy9NYWtlZmlsZS5hbQotaW5kZXggYTkyZGU3Zi4uNTM3YzM2YiAxMDA2NDQKLS0tLSBhL2RvYy9NYWtlZmlsZS5hbQotKysrIGIvZG9jL01ha2VmaWxlLmFtCi1AQCAtMSw1ICsxLDUgQEAKLSBpZiBCVUlMRF9NQU4KLS1tYW5fTUFOUyA9IG5mdC44Ci0rI21hbl9NQU5TID0gbmZ0LjgKLSBlbmRpZgotIAotIGlmIEJVSUxEX1BERgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL25mdGFibGVzXzAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhNzk5NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRmaWx0ZXIgVGFibGVzIHVzZXJzcGFjZSB1dGlsbGl0ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDFhNzhmZGQ4NzlhMjYzYTVlMGI0MmQxZmM1NjVlNzkiCi1TRUNUSU9OID0gIm5ldCIKLQotREVQRU5EUyA9ICJsaWJtbmwgbGlibmZ0bmwgcmVhZGxpbmUgZ21wIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIFwKLSAgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzL2ZpbGVzLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZml4LXRvLWdlbmVyYXRlLW50Zi44LnBhdGNoIFwKLSAgICAgICAgICAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXlsb2FkLWV4cGxpY2l0LW5ldHdvcmstY3R4LWFzc2lnbm1lbnQtZm9yLWljbXAtaWNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcHJvdG8tQWRkLXNvbWUtZXhvdGljLUlDTVB2Ni10eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtcGF5bG9hZC1zcGxpdC1sbC1wcm90by1kZXBlbmRlbmN5LWludG8taGVscGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtc3JjLWFsbG93LXVwZGF0ZS1vZi1uZXQtYmFzZS13Li1tZXRhLWw0cHJvdG8taWNtcHY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtc3JjLWlwdjYtc3dpdGNoLWltcGxpY2l0LWRlcGVuZGVuY2llcy10by1tZXRhLWw0cHJvdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXBheWxvYWQtZW5mb3JjZS1pcC1pcDYtcHJvdG9jb2wtZGVwZW5kaW5nLW9uLWljbXAtb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1zcmMtaXAtc3dpdGNoLWltcGxpY2l0LWRlcGVuZGVuY2llcy10by1tZXRhLWw0cHJvdG8tLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMwMDVlNzZhMTVhMDI5YWZhYmE3MWQ3ZGIyMWQwNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmU2MzkyMzlkODAxY2U1ODkwMzk3ZjZmNDM5MWM1OGE5MzRiZmMyN2Q4YjdkNWVmOTIyNjkyZGU1ZWM0ZWQ0MyIKLQotQVNORUVERUQgPSAiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9uZnRhYmxlc18wLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9uZnRhYmxlc18wLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWRmNGY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL25mdGFibGVzXzAuOS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiTmV0ZmlsdGVyIFRhYmxlcyB1c2Vyc3BhY2UgdXRpbGxpdGVzIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDFhNzhmZGQ4NzlhMjYzYTVlMGI0MmQxZmM1NjVlNzkiCisKK0RFUEVORFMgPSAibGlibW5sIGxpYm5mdG5sIHJlYWRsaW5lIGdtcCBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL25mdGFibGVzL2ZpbGVzLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZDRkY2I2MWRmODBhYTU0NGIyZTE0MmU5MWQ5Mzc2MzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ4MTgxYjVmY2I5Y2E1NzJmNDQ0YmVkNTQwMTg3NDk1ODg1MjJlZTk3ZTRjMjE5MjI2NDhiYjc4ZDdlN2U5MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbWFucGFnZXMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbbWFuXSA9ICItLWVuYWJsZS0tbWFuLWRvYywgLS1kaXNhYmxlLW1hbi1kb2MiCisKK0FTTkVFREVEID0gIiIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtaXJjL3puYy96bmNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtaXJjL3puYy96bmNfZ2l0LmJiCmluZGV4IGMyZDcxNTYuLjhjNjk3OWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWlyYy96bmMvem5jX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1pcmMvem5jL3puY19naXQuYmIKQEAgLTUsMTMgKzUsMTMgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgaWN1IgogCi1QViA9ICIxLjYuMCIKK1BWID0gIjEuNy4xIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vem5jL3puYy5naXQ7bmFtZT16bmMgXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ppbWxvY28vQ3NvY2tldC5naXQ7ZGVzdHN1ZmZpeD1naXQvdGhpcmRfcGFydHkvQ3NvY2tldDtuYW1lPUNzb2NrZXQgXAogICAgICAgICAgICIKLVNSQ1JFVl96bmMgPSAiZjQ3ZTg0NjVlZmE0ZTFjZDk0OGI5Y2FhZTkzYWM0MDFiNDM1NWRmOCIKLVNSQ1JFVl9Dc29ja2V0ID0gIjA3YjQ0MzczOTYxMjI2NTBlNWI4ZmIzZDAxNGU4MjBhNWRlY2Y0ZWUiCitTUkNSRVZfem5jID0gImM0MjY4OThiM2ExYjg5OWRmZThhOGIyYTNlZWI0YjE4ZDhiZTFiZjIiCitTUkNSRVZfQ3NvY2tldCA9ICJlOGQ5ZTBiYjI0OGM1MjFjMmM3ZmEwMWUxYzZhMTE2ZDkyOWM0MWI0IgogCiAjIFRoaXMgY29uc3RydWN0cyBhIGNvbXBvc2l0ZSByZXZpc2lvbiBiYXNlZCBvbiBtdWx0aXBsZSBTUkNSRVYncy4KICMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnBjL25ldGtpdC1ycGNfMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnBjL25ldGtpdC1ycGNfMC4xNy5iYgppbmRleCA5NDg3ZmRjLi5lYmU4NjdkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXJwYy9uZXRraXQtcnBjXzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1ycGMvbmV0a2l0LXJwY18wLjE3LmJiCkBAIC00LDE1ICs0LDE1IEBACiBMSUNFTlNFID0gIlNQTC0xLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ycGNpbmZvL3JwY2luZm8uYztiZWdpbmxpbmU9MjtlbmRsaW5lPTM7bWQ1PTNlNjMzOWUzY2UyNjZlMTEyMmM1YmEyOTNlMDRiYzg5IgogCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgorREVQRU5EUyArPSAibGlidGlycGMiCiBTUkNfVVJJID0gImh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvJHtCUE59LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9nY2M0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBjZ2VuLUZpeC1wcmludGYtZm9ybWF0cy5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NzIxMjcyMDQ4MmVhMWFlYTkxODJhOTg2NTNhOTY0MiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjFkNjNiNDE0MTYyMjM3YTcyODY3MDYxZjFiZDNlMzc1MmEwZDk2MmNkNWQzMGI1ZTkzM2RkYWQ4YTE0ZDNiIgotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi1MSUJTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMiCitDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitMSUJTICs9ICItbHRpcnBjIgogCiBkb19jb25maWd1cmUgKCkgewogICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yc2gvbmV0a2l0LXJzaF8wLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yc2gvbmV0a2l0LXJzaF8wLjE3LmJiCmluZGV4IDM5OTBmN2IuLjAzZGQ5NjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnNoL25ldGtpdC1yc2hfMC4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXJzaC9uZXRraXQtcnNoXzAuMTcuYmIKQEAgLTIsNyArMiw3IEBACiBTRUNUSU9OID0gIm5ldCIKIEhPTUVQQUdFPSJmdHA6Ly9mdHAudWsubGludXgub3JnL3B1Yi9saW51eC9OZXR3b3JraW5nL25ldGtpdCIKIExJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgotREVQRU5EUyA9ICJ4aW5ldGQgbGliZ2NyeXB0IgorREVQRU5EUyA9ICJ4aW5ldGQgbGliZ2NyeXB0IHZpcnR1YWwvY3J5cHQiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3JzaC9yc2guYztlbmRsaW5lPTMyO21kNT00ODdiM2M2MzdiZGMxODFkMzJiMmE4NTQzZDQxYjYwNiIKIApAQCAtMTAwLDMgKzEwMCw2IEBACiAKIFJERVBFTkRTXyR7UE59LXNlcnZlciA9ICJ4aW5ldGQiCiBSREVQRU5EU18ke1BOfS1zZXJ2ZXIgKz0gInRjcC13cmFwcGVycyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg2OTYzLworRVhDTFVERV9GUk9NX1dPUkxEX2xpYmMtbXVzbCA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1ydXNlcnMvbmV0a2l0LXJ1c2Vycy8wMDAxLUxpbmstd2l0aC1saWJ0aXJwYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnVzZXJzL25ldGtpdC1ydXNlcnMvMDAwMS1MaW5rLXdpdGgtbGlidGlycGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU5MjY0NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnVzZXJzL25ldGtpdC1ydXNlcnMvMDAwMS1MaW5rLXdpdGgtbGlidGlycGMucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorRnJvbSA1NzQ2YjY4YmE5ZGRhODc1ODZiM2FjODhmZTg0MDMxY2JjMDAxNWY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWF5IDIwMTggMTI6MjA6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTGluayB3aXRoIGxpYnRpcnBjCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDIgKy0KKyBycGMucnVzZXJzZC9ydXNlcnNfcHJvYy5jIHwgNyArLS0tLS0tCisgcnBjLnJ1c2Vyc2QvcnVzZXJzZC5jICAgICB8IDYgKy0tLS0tCisgcnVwL3J1cC5jICAgICAgICAgICAgICAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDg1ZjZjYTYuLjJkMmQ0YjcgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTE0Nyw3ICsxNDcsNyBAQCBlbHNlCisgZmkKKyAKKyBMREZMQUdTPQorLUxJQlM9CisrTElCUz0iLWx0aXJwYyIKKyAKKyBybSAtZiBfX2NvbmZ0ZXN0KgorIAorZGlmZiAtLWdpdCBhL3JwYy5ydXNlcnNkL3J1c2Vyc19wcm9jLmMgYi9ycGMucnVzZXJzZC9ydXNlcnNfcHJvYy5jCitpbmRleCA5YWU2MzA2Li5mOWUyMzdjIDEwMDY0NAorLS0tIGEvcnBjLnJ1c2Vyc2QvcnVzZXJzX3Byb2MuYworKysrIGIvcnBjLnJ1c2Vyc2QvcnVzZXJzX3Byb2MuYworQEAgLTU3LDEyICs1Nyw3IEBAIGNoYXIgcnBfcmNzaWRbXSA9CisgCSNkZWZpbmUgUlVUX1RJTUUgdXRfdGltZQorICNlbmRpZgorIAorLS8qIEdsaWJjIHN0cmlrZXMgYWdhaW4gKi8KKy0jaWZkZWYgX19HTElCQ19fCistCSNpbmNsdWRlIDxycGNzdmMvcnVzZXJzLmg+CistI2Vsc2UKKy0JI2luY2x1ZGUgInJ1c2Vycy5oIgorLSNlbmRpZiAKKysjaW5jbHVkZSAicnVzZXJzLmgiCisgCisgdm9pZCBydXNlcnNfc2VydmljZShzdHJ1Y3Qgc3ZjX3JlcSAqcnFzdHAsIFNWQ1hQUlQgKnRyYW5zcCk7CisgCitkaWZmIC0tZ2l0IGEvcnBjLnJ1c2Vyc2QvcnVzZXJzZC5jIGIvcnBjLnJ1c2Vyc2QvcnVzZXJzZC5jCitpbmRleCA3NjJiZTliLi5kZDM1NWFjIDEwMDY0NAorLS0tIGEvcnBjLnJ1c2Vyc2QvcnVzZXJzZC5jCisrKysgYi9ycGMucnVzZXJzZC9ydXNlcnNkLmMKK0BAIC0zOCwxMSArMzgsNyBAQCBjaGFyIHJ1c2Vyc2RfcmNzaWRbXSA9CisgI2luY2x1ZGUgPHJwYy9wbWFwX2NsbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGdycC5oPgorLSNpZmRlZiBfX0dMSUJDX18KKy0JI2luY2x1ZGUgPHJwY3N2Yy9ydXNlcnMuaD4KKy0jZWxzZQorLQkjaW5jbHVkZSAicnVzZXJzLmgiCistI2VuZGlmCisrI2luY2x1ZGUgInJ1c2Vycy5oIgorIAorICNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisgCitkaWZmIC0tZ2l0IGEvcnVwL3J1cC5jIGIvcnVwL3J1cC5jCitpbmRleCBlNTY2OWZmLi44ODdmODlkIDEwMDY0NAorLS0tIGEvcnVwL3J1cC5jCisrKysgYi9ydXAvcnVwLmMKK0BAIC00OCw3ICs0OCw3IEBAIGNoYXIgcmNzaWRbXSA9ICIkSWQ6IHJ1cC5jLHYgMS44IDIwMDAvMDcvMjIgMTk6NTE6NDAgZGhvbGxhbmQgRXhwICQiOworIAorICN1bmRlZiBGU0hJRlQJCQkvKiBVc2UgcHJvdG9jb2wncyBzaGlmdCBhbmQgc2NhbGUgdmFsdWVzICovCisgI3VuZGVmIEZTQ0FMRQorLSNpbmNsdWRlIDxycGNzdmMvcnN0YXQuaD4KKysjaW5jbHVkZSAicnN0YXQuaCIKKyAKKyAjaW5jbHVkZSAiLi4vdmVyc2lvbi5oIgorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1ydXNlcnMvbmV0a2l0LXJ1c2Vyc18wLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1ydXNlcnMvbmV0a2l0LXJ1c2Vyc18wLjE3LmJiCmluZGV4IDQ1OWUzOWUuLjliOGFmMjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcnVzZXJzL25ldGtpdC1ydXNlcnNfMC4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXJ1c2Vycy9uZXRraXQtcnVzZXJzXzAuMTcuYmIKQEAgLTksNiArOSw3IEBACiBTUkNfVVJJID0gImh0dHA6Ly9odHRwLmRlYmlhbi5uZXQvZGViaWFuL3Bvb2wvbWFpbi9uLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgaHR0cDovL2h0dHAuZGViaWFuLm5ldC9kZWJpYW4vcG9vbC9tYWluL24vJHtCUE59LyR7QlBOfV8ke1BWfS04LmRpZmYuZ3o7bmFtZT1wYXRjaDggXAogICAgICAgICAgICBmaWxlOi8vcnBjLnJ1c2Vyc2QtTWFrZWZpbGUtZml4LXBhcmFsbGVsLWJ1aWxkLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay13aXRoLWxpYnRpcnBjLnBhdGNoIFwKICIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGM5OWE4MGI5ZmRlMmFiNDI3Yzg3NGY4OGYxYzE2MDIiCkBAIC0xOCwxMCArMTksMTQgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCiAKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xJQlMgKz0gIi1sdGlycGMiCisKIGRvX2NvbmZpZ3VyZSAoKSB7CiAgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9CiAgICAgZWNobyAiTERGTEFHUz0ke0xERkxBR1N9IiA+PiBNQ09ORklHCiAgICAgZWNobyAiVVNFX0dMSUJDPTEiID4+IE1DT05GSUcKKyAgICBlY2hvICJMSUJTPSR7TElCU30iID4+IE1DT05GSUcKIH0KIAogZG9faW5zdGFsbCAoKSB7CkBAIC02OCwzICs3Myw2IEBACiAgICAgICAgICAgICAke2JpbmRpcn0vLmRlYnVnICR7c2JpbmRpcn0vLmRlYnVnIgogCiBSREVQRU5EU18ke1BOfS1zZXJ2ZXIgPSAidGNwLXdyYXBwZXJzIHhpbmV0ZCBycGNiaW5kIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NjIvCitFWENMVURFX0ZST01fV09STERfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9maWxlcy8wMDAxLXRlbG5ldC10ZWxuZXRkLUZpeC1kZWFkbG9jay1vbi1jbGVhbnVwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvZmlsZXMvMDAwMS10ZWxuZXQtdGVsbmV0ZC1GaXgtZGVhZGxvY2stb24tY2xlYW51cC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDU3ODVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvZmlsZXMvMDAwMS10ZWxuZXQtdGVsbmV0ZC1GaXgtZGVhZGxvY2stb24tY2xlYW51cC5wYXRjaApAQCAtMCwwICsxLDExNCBAQAorRnJvbSAwNmVkNmE2YmYyNWEyMjkwMjg0NjA5N2Q2YjZjOTdlMDcwYzJjMzI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VpaWNoaSBJc2hpdHN1a2EgPGlzaGl0c3VrYS5zY0BuY29zLm5lYy5jby5qcD4KK0RhdGU6IEZyaSwgMSBKdW4gMjAxOCAxNDoyNzozNSArMDkwMAorU3ViamVjdDogW1BBVENIXSB0ZWxuZXRkOiBGaXggZGVhZGxvY2sgb24gY2xlYW51cAorCitUaGUgY2xlYW51cCBmdW5jdGlvbiBpbiB0ZWxuZXRkIGlzIGNhbGxlZCBib3RoIGRpcmVjdGx5IGFuZCBvbiBTSUdDSExECitzaWduYWxzLiBUaGlzLCB1bmZvcnR1bmF0ZWx5LCB0cmlnZ2VyZWQgYSBkZWFkbG9jayBpbiBlZ2xpYmMgMi45IHdoaWxlCitydW5uaW5nIG9uIGEgMi42LjMxLjExIGtlcm5lbC4KKworV2hhdCB3ZSB3ZXJlIHNlZWluZyBpcyBoYW5ncyBsaWtlIHRoZXNlOgorCisgIChnZGIpIGJ0CisgICMwICAweGI3NzAyNDI0IGluIF9fa2VybmVsX3ZzeXNjYWxsICgpCisgICMxICAweGI3NjU4ZTYxIGluIF9fbGxsX2xvY2tfd2FpdF9wcml2YXRlICgpIGZyb20gLi9saWIvbGliYy5zby42CisgICMyICAweGI3NjdlN2I1IGluIF9MX2xvY2tfMTUgKCkgZnJvbSAuL2xpYi9saWJjLnNvLjYKKyAgIzMgIDB4Yjc2N2U2ZTAgaW4gdXRtcG5hbWUgKCkgZnJvbSAuL2xpYi9saWJjLnNvLjYKKyAgIzQgIDB4Yjc2YmNkZTcgaW4gbG9nb3V0ICgpIGZyb20gLi9saWIvbGlidXRpbC5zby4xCisgICM1ICAweDA4MDRjODI3IGluIGNsZWFudXAgKCkKKyAgIzYgIDxzaWduYWwgaGFuZGxlciBjYWxsZWQ+CisgICM3ICAweGI3NzAyNDI0IGluIF9fa2VybmVsX3ZzeXNjYWxsICgpCisgICM4ICAweGI3NjQxMDAzIGluIF9fZmNudGxfbm9jYW5jZWwgKCkgZnJvbSAuL2xpYi9saWJjLnNvLjYKKyAgIzkgIDB4Yjc2N2UwYzMgaW4gZ2V0dXRsaW5lX3JfZmlsZSAoKSBmcm9tIC4vbGliL2xpYmMuc28uNgorICAjMTAgMHhiNzY3ZDY3NSBpbiBnZXR1dGxpbmVfciAoKSBmcm9tIC4vbGliL2xpYmMuc28uNgorICAjMTEgMHhiNzZiY2U0MiBpbiBsb2dvdXQgKCkgZnJvbSAuL2xpYi9saWJ1dGlsLnNvLjEKKyAgIzEyIDB4MDgwNGM4MjcgaW4gY2xlYW51cCAoKQorICAjMTMgMHgwODA0YTBiNSBpbiB0ZWxuZXQgKCkKKyAgIzE0IDB4MDgwNGE5YzMgaW4gbWFpbiAoKQorCithbmQgd2hhdCBoYXMgaGFwcGVuZWQgaGVyZSBpcyB0aGF0IHRoZSB1c2VyIGNsb3NlcyB0aGUgdGVsbmV0IHNlc3Npb24KK3ZpYSB0aGUgZXNjYXBlIGNoYXJhY3Rlci4gVGhpcyBjYXVzZXMgdGVsbmV0ZCB0byBjYWxsIGNsZWFudXAgaW4gZnJhbWUKK3RoZSBTSUdDSExEIHNpZ25hbCBpcyBkZWxpdmVyZWQgd2hpbGUgdGVsbmV0ZCBpcyBleGVjdXRpbmcgY2xlYW51cC4KKworVGVsbmV0ZCB0aGVuIGNhbGxzIHRoZSBzaWduYWwgaGFuZGxlciBmb3IgU0lHQ0hMRCwgd2hpY2ggaXMgY2xlYW51cCgpLgorT3VjaC4gVGhlIGFjdHVhbCBkZWFkbG9jayBpcyBpbiBsaWJjLiBnZXR1dGxpbmVfciBpbiBmcmFtZSAjMTAgZ2V0cyB0aGUKK19fbGliY191dG1wX2xvY2sgbG9jaywgYW5kIHV0bXBuYW1lIGFib3ZlIGRvZXMgdGhlIHNhbWUgdGhpbmcgaW4gZnJhbWUKKworVGhlIGZpeCByZWdpc3RlcnMgdGhlIFNJR0NITEQgaGFuZGxlciBhcyBjbGVhbnVwX3NpZ2hhbmRsZXIsIGFuZCBtYWtlcworY2xlYW51cCBkaXNhYmxlIHRoZSBTSUdDSExEIHNpZ25hbCBiZWZvcmUgY2FsbGluZyBjbGVhbnVwX3NpZ2hhbmRsZXIuCisKK1NpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KKworVGhlIHBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBVYnVudHUgbmV0a2l0LXRlbG5ldCBwYWNrYWdlLgorKGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL25ldGtpdC10ZWxuZXQvK2J1Zy81MDc0NTUpCisKK0EgcHJldmlvdXMgcGF0Y2ggZGVjbGFyaW5nIGF0dHJpYnV0ZXMgb2YgZnVuY3Rpb25zLCBidXQgaXQgaXMgbm90IHVzZWQKK2luIHVwc3RyZWFtLgorCitTaWduZWQtb2ZmLWJ5OiBTZWlpY2hpIElzaGl0c3VrYSA8aXNoaXRzdWthLnNjQG5jb3MubmVjLmNvLmpwPgorLS0tCisgdGVsbmV0ZC9leHQuaCAgICAgIHwgIDEgKworIHRlbG5ldGQvc3lzX3Rlcm0uYyB8IDE3ICsrKysrKysrKysrKysrKystCisgdGVsbmV0ZC90ZWxuZXRkLmMgIHwgIDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZWxuZXRkL2V4dC5oIGIvdGVsbmV0ZC9leHQuaAoraW5kZXggYjk4ZDZlYy4uMDhmOWQwNyAxMDA2NDQKKy0tLSBhL3RlbG5ldGQvZXh0LmgKKysrKyBiL3RlbG5ldGQvZXh0LmgKK0BAIC05Nyw2ICs5Nyw3IEBAIHZvaWQgYWRkX3NsYyhpbnQsIGludCwgaW50KTsKKyB2b2lkIGNoZWNrX3NsYyh2b2lkKTsKKyB2b2lkIGNoYW5nZV9zbGMoaW50LCBpbnQsIGludCk7Cisgdm9pZCBjbGVhbnVwKGludCk7Cisrdm9pZCBjbGVhbnVwX3NpZ2hhbmRsZXIoaW50KTsKKyB2b2lkIGNsaWVudHN0YXQoaW50LCBpbnQsIGludCk7Cisgdm9pZCBjb3B5X3Rlcm1idWYoY2hhciAqLCBpbnQpOworIHZvaWQgZGVmZXJzbGModm9pZCk7CitkaWZmIC0tZ2l0IGEvdGVsbmV0ZC9zeXNfdGVybS5jIGIvdGVsbmV0ZC9zeXNfdGVybS5jCitpbmRleCA1YjRhYTg0Li5jNGZiMGY3IDEwMDY0NAorLS0tIGEvdGVsbmV0ZC9zeXNfdGVybS5jCisrKysgYi90ZWxuZXRkL3N5c190ZXJtLmMKK0BAIC03MTksNyArNzE5LDcgQEAgc3RhdGljIHZvaWQgYWRkYXJnKHN0cnVjdCBhcmd2X3N0dWZmICphdnMsIGNvbnN0IGNoYXIgKnZhbCkgeworICAqIFRoaXMgaXMgdGhlIHJvdXRpbmUgdG8gY2FsbCB3aGVuIHdlIGFyZSBhbGwgdGhyb3VnaCwgdG8KKyAgKiBjbGVhbiB1cCBhbnl0aGluZyB0aGF0IG5lZWRzIHRvIGJlIGNsZWFuZWQgdXAuCisgICovCistdm9pZCBjbGVhbnVwKGludCBzaWcpIHsKKyt2b2lkIGNsZWFudXBfc2lnaGFuZGxlcihpbnQgc2lnKSB7CisgICAgIGNoYXIgKnA7CisgICAgICh2b2lkKXNpZzsKKyAKK0BAIC03NDIsMyArNzQyLDE4IEBAIHZvaWQgY2xlYW51cChpbnQgc2lnKSB7CisgICAgIHNodXRkb3duKG5ldCwgMik7CisgICAgIGV4aXQoMCk7CisgfQorKworK3ZvaWQgY2xlYW51cChpbnQgc2lnKSB7CisrICAgIHNpZ3NldF90IG1hc2ssIG9sZG1hc2s7CisrCisrICAgIC8qIFNldCB1cCB0aGUgbWFzayBvZiBzaWduYWxzIHRvIHRlbXBvcmFyaWx5IGJsb2NrLiAqLworKyAgICBzaWdlbXB0eXNldCAoJm1hc2spOworKyAgICBzaWdhZGRzZXQgKCZtYXNrLCBTSUdDSExEKTsKKysKKysgICAgLyogQmxvY2sgU0lHQ0hMRCB3aGlsZSBydW5uaW5nIGNsZWFudXAgKi8KKysgICAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJm1hc2ssICZvbGRtYXNrKTsKKysKKysgICAgY2xlYW51cF9zaWdoYW5kbGVyKHNpZyk7CisrICAgIC8qIFRlY2huaWNhbGx5IG5vdCBuZWVkZWQgc2luY2UgY2xlYW51cF9zaWdoYW5kbGVyIGV4aXRzICovCisrICAgIHNpZ3Byb2NtYXNrIChTSUdfVU5CTE9DSywgJm1hc2ssIE5VTEwpOworK30KK2RpZmYgLS1naXQgYS90ZWxuZXRkL3RlbG5ldGQuYyBiL3RlbG5ldGQvdGVsbmV0ZC5jCitpbmRleCA5YWNlODM4Li43ODg5MTljIDEwMDY0NAorLS0tIGEvdGVsbmV0ZC90ZWxuZXRkLmMKKysrKyBiL3RlbG5ldGQvdGVsbmV0ZC5jCitAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgdGVsbmV0KGludCBmLCBpbnQgcCkKKyAgICAgc2lnbmFsKFNJR1RUT1UsIFNJR19JR04pOworICNlbmRpZgorICAgICAKKy0gICAgc2lnbmFsKFNJR0NITEQsIGNsZWFudXApOworKyAgICBzaWduYWwoU0lHQ0hMRCwgY2xlYW51cF9zaWdoYW5kbGVyKTsKKyAgICAgCisgI2lmZGVmIFRJT0NOT1RUWQorICAgICB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgppbmRleCA4MDdiNTY2Li5kYjRiMWM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvbmV0a2l0LXRlbG5ldF8wLjE3LmJiCkBAIC01LDE0ICs1LDE4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3RlbG5ldC90ZWxuZXQuY2M7YmVnaW5saW5lPTI7ZW5kbGluZT0zO21kNT03ODA4NjhlN2I1NjYzMTNlNzBjYjcwMTU2MGNhOTVlZiIKIAotU1JDX1VSSSA9ICJmdHA6Ly9mdHAudWsubGludXgub3JnL3B1Yi9saW51eC9OZXR3b3JraW5nL25ldGtpdC8ke0JQfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwOi8vZnRwLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvTmV0d29ya2luZy9uZXRraXQvJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL1RvLWF2aW9kLWJ1ZmZlci1vdmVyZmxvdy1pbi10ZWxuZXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vV2FybmluZy1maXgtaW4tdGhlLXN0ZXAtb2YtaW5zdGFsbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly90ZWxuZXQteGluZXRkIFwKICAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS10ZWxuZXQtdGVsbmV0ZC1GaXgtcHJpbnQtZm9ybWF0LXN0cmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZWxuZXQtdGVsbmV0ZC1GaXgtZGVhZGxvY2stb24tY2xlYW51cC5wYXRjaCBcCiAgICAgICAgICAgICIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGtpdC10ZWxuZXQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC5vcmlnXC50YXIiCisKIEVYVFJBX09FTUFLRSA9ICJJTlNUQUxMUk9PVD0ke0R9IFNCSU5ESVI9JHtzYmluZGlyfSBEQUVNT05NT0RFPTc1NSBcCiAgICAgTUFOTU9ERT02NDQgTUFORElSPSR7bWFuZGlyfSIKIApAQCAtNDYsMTYgKzUwLDE2IEBACiAgICAgaW5zdGFsbCAtcCAtbTY0NCAke1dPUktESVJ9L3RlbG5ldC14aW5ldGQgJHtEfS9ldGMveGluZXRkLmQvdGVsbmV0CiB9CiAKLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0jIS9iaW4vc2gKLSAgICB1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAke2JpbmRpcn0vdGVsbmV0IHRlbG5ldCB0ZWxuZXQuJHtQTn0gMTAwCi19Citpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotcGtnX3ByZXJtXyR7UE59ICgpIHsKLSMhL2Jpbi9zaAotICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgdGVsbmV0IHRlbG5ldC4ke1BOfSAxMDAKLX0KK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInRlbG5ldCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZWxuZXRdID0gIiR7YmluZGlyfS90ZWxuZXQiCitBTFRFUk5BVElWRV9UQVJHRVRbdGVsbmV0XSA9ICIke2JpbmRpcn0vdGVsbmV0LiR7UE59IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZDZiZWFiYWFmNTNmZTZlMzgyYzQyY2UzZmFhMDVhMzYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM4MGQ1Yzc4MzgzNjFhMzI4ZmI2YjYwMDE2ZDUwM2RlZjljZTUzYWQzYzU4OWYzYjA4ZmY3MWEyYmI4OGUwMCIKIEZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2luLiogJHtsaWJkaXJ9LyogJHtzeXNjb25mZGlyfS94aW5ldGQuZC8qIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NTQvCitFWENMVURFX0ZST01fV09STERfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9iYWJlbGQvYmFiZWxkXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmMDI4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjguMy5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkJhYmVsIGlzIGEgbG9vcC1hdm9pZGluZyBkaXN0YW5jZS12ZWN0b3Igcm91dGluZyBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gIlwKK0JhYmVsIGlzIGEgbG9vcC1hdm9pZGluZyBkaXN0YW5jZS12ZWN0b3Igcm91dGluZyBwcm90b2NvbCBmb3IgSVB2NiBhbmQgXAorSVB2NCB3aXRoIGZhc3QgY29udmVyZ2VuY2UgcHJvcGVydGllcy4gSXQgaXMgYmFzZWQgb24gdGhlIGlkZWFzIGluIERTRFYsIEFPRFYgXAorYW5kIENpc2NvJ3MgRUlHUlAsIGJ1dCBpcyBkZXNpZ25lZCB0byB3b3JrIHdlbGwgbm90IG9ubHkgaW4gd2lyZWQgbmV0d29ya3MgXAorYnV0IGFsc28gaW4gd2lyZWxlc3MgbWVzaCBuZXR3b3JrcywgYW5kIGhhcyBiZWVuIGV4dGVuZGVkIHdpdGggc3VwcG9ydCBcCitmb3Igb3ZlcmxheSBuZXR3b3Jrcy4gQmFiZWwgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVjb21pbmcgYW4gSUVURiBTdGFuZGFyZC4gXAorIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuaXJpZi5mci9+amNoL3NvZnR3YXJlL2JhYmVsLyIKK1NFQ1RJT04gPSAibmV0IgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTQxMWE0OGFjM2MyZTllMDkxMWI4ZGQ5YWVkMjZmNzU0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vamVjaC9iYWJlbGQuZ2l0O3Byb3RvY29sPWdpdCIKK1NSQ1JFViA9ICI1MzUxODQxNzNmY2RlNWRkYzQzMDIwY2QxOTdkMDFkMWVhMGU5YThiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGJhYmVsZAorfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwubWluaW1hbCBQUkVGSVg9JHtEfQorfQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzLzAwMDEtbGliZmRjb3JlLXNjdHAuYy11cGRhdGUtdGhlLW9sZC1zY3RwLWFwaS1jaGVjay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZmlsZXMvMDAwMS1saWJmZGNvcmUtc2N0cC5jLXVwZGF0ZS10aGUtb2xkLXNjdHAtYXBpLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZTI0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvZnJlZWRpYW1ldGVyL2ZpbGVzLzAwMDEtbGliZmRjb3JlLXNjdHAuYy11cGRhdGUtdGhlLW9sZC1zY3RwLWFwaS1jaGVjay5wYXRjaApAQCAtMCwwICsxLDk3IEBACitGcm9tIGQ1MjdhMGI3YjYzZTQzMjYzMzg0NTQwYjU1MjU3MTQ0ODRiYjA4OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAzIFNlcCAyMDE4IDE0OjQwOjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmZkY29yZS9zY3RwLmM6IHVwZGF0ZSB0aGUgb2xkIHNjdHAgYXBpIGNoZWNrCisKK1RoZSBpbml0aWFsIHNjdHAgYXBpIGNoZWNrIGZvciBmcmVlZGlhbWV0ZXIgYXMgYmVsb3c6CisgPT09CisgY29tbWl0IGQzYzVlOTkxY2I1MzJlYTA5Njg0ZDY5ZmI0ZDBkNThlOWJjMzlhMGMKKyAgQXV0aG9yOiBTZWJhc3RpZW4gRGVjdWdpcyA8c2RlY3VnaXNAZnJlZWRpYW1ldGVyLm5ldD4KKyAgRGF0ZTogICBNb24gSnVuIDMgMTI6MDU6MzcgMjAxMyArMDgwMAorICAgIAorICAgIEFkZCBzb21lIGNvbXBsaWFuY3kgdG8gUkZDNjQ1OC4gTm90IHRlc3RlZCBob3dldmVyIGFzIFVidW50dSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgeWV0CisgICAgCisgICAgW3NuaXBdCisgICAgKy8qIFVzZSBvbGQgZHJhZnQtaWV0Zi10c3Z3Zy1zY3Rwc29ja2V0LTE3IEFQSSA/IElmIG5vdCBkZWZpbmVkLCBSRkM2NDU4IEFQSSB3aWxsIGJlIHVzZWQgKi8KKyAgICArLyogI2RlZmluZSBPTERfU0NUUF9TT0NLRVRfQVBJICovCisgICAgKworICAgICsvKiBBdXRvbWF0aWNhbGx5IGZhbGxiYWNrIHRvIG9sZCBBUEkgaWYgc29tZSBvZiB0aGUgbmV3IHN5bWJvbHMgYXJlIG5vdCBkZWZpbmVkICovCisgICAgKyNpZiAoIWRlZmluZWQoU0NUUF9DT05ORUNUWF80X0FSR1MpIHx8ICghZGVmaW5lZChTQ1RQX1JFQ1ZSQ1ZJTkZPKSkgfHwgKCFkZWZpbmVkKFNDVFBfU05ESU5GTykpKQorICAgICsjIGRlZmluZSBPTERfU0NUUF9TT0NLRVRfQVBJCisgICAgKyNlbmRpZgorID09PQorCitTQ1RQX1JFQ1ZSQ1ZJTkZPIGlzIGRlZmluZWQgaW4gPGxpbnV4L3NjdHAuaD4sCitidXQgPGxpbnV4L3NjdHAuaD4gaXMndCBpbmNsdWRlZCBpbiB0aGUgc291cmNlIGNvZGUKK3ByZXZpb3VseS4gU28gZGVmaW5lZChTQ1RQX1JFQ1ZSQ1ZJTkZPKSBjYW4gYmUgMCAKK2FuZCBpdCBtYWtlIG9sZCBzY3RwIHNvY2tldCBhcGkgZGVmaW5pdG9uIGluIGVmZmVjdCAKK2FzIGJlbG93OgorICMgZGVmaW5lIE9MRF9TQ1RQX1NPQ0tFVF9BUEkKKworQWZ0ZXIgbGtzY3RwLXRvb2xzIHVwZ3JhZGUgdG8gMS4wLjE4LCB0aGVyZSBpcyBiZWxvdworY29tbWl0IGludHJvZHVjZWQ6Cis9PT0KK2NvbW1pdCAzYzhiZDBkMjZiNjQ2MTFjNjkwZjMzZjU4MDJjNzM0YjA2NDJjMWQ4CitBdXRob3I6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgQXByIDE3IDIwOjE3OjE0IDIwMTggLTAzMDAKKworICAgIHNjdHAuaDogbWFrZSB1c2Uga2VybmVsIFVBUEkgaGVhZGVyCisKKyAgICBhbmQgd2l0aCB0aGF0LCByZW1vdmUgdG9ucyBvZiBkdXBsaWNhdGVkIGRlY2xhcmF0aW9ucy4gVGhlc2Ugd2VyZQorICAgIGxhZ2dpbmcgYmVoaW5kIHRoZSBrZXJuZWwgaGVhZGVyLCB3aGljaCBpcyBhbHdheXMgdGhlIG1vc3QgdXBkYXRlZCBvbmUsCisgICAgYW5kIGFzIHRoZSBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIGJlIHJ1biBvbmx5IG9uIExpbnV4LCB0aGVyZSBpcyBubworICAgIHJlYXNvbiB0aGF0IHdlIGNhbm5vdCByZS11c2Ugd2hhdCBpcyBpbiB0aGVyZS4KKworICAgIFRoYXQgc2FpZCwgdGhpcyBwYXRjaCBkcm9wcyBhbGwgZHVwbGljYXRlZCBkZWNsYXJhdGlvbnMgYW5kIGluY2x1ZGVzCisgICAgbGludXgvc2N0cC5oIHRvIGJyaW5nIHRoZW0gaW50byBsa3NjdHAtdG9vbHMuCisKKyAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWxvIFJpY2FyZG8gTGVpdG5lciA8bWFyY2Vsby5sZWl0bmVyQGdtYWlsLmNvbT4KKworIFtzbmlwXQorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorKyNpbmNsdWRlIDxsaW51eC9zY3RwLmg+CisgW3NuaXBdCis9PT0KKworQW5kIGFib3ZlIGxvZ2ljIG1ha2UgZGVmaW5lZChTQ1RQX1JFQ1ZSQ1ZJTkZPKSB0bworYmUgMSBhbmQgdGhlIG9sZCBzY3RwIHNvY2tldCBhcGkgbWFjcm8gYXMgYmVsb3cKK3dvbid0IGJlIGRlZmluZWQuCisgIyBkZWZpbmUgT0xEX1NDVFBfU09DS0VUX0FQSQorCitBbmQgaXQgZW5jb3V0ZXJzIGJlbG93IGJ1aWxkIGVycm9yOgorfCAvYnVpbGQvZnJlZWRpYW1ldGVyLzEuMi4xLXIwL2ZyZWVEaWFtZXRlci0xLjIuMS9saWJmZGNvcmUvc2N0cC5jOjEyNjI6OTogZXJyb3I6ICdTQ1RQX1NFTkRfRkFJTEVEX0VWRU5UJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnU0NUUF9TRU5EX0ZBSUxFRCc/CisgICAgY2FzZSBTQ1RQX1NFTkRfRkFJTEVEX0VWRU5UOgorICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICAgICAgICAgU0NUUF9TRU5EX0ZBSUxFRAorfCAvYnVpbGQvZnJlZWRpYW1ldGVyLzEuMi4xLXIwL2ZyZWVEaWFtZXRlci0xLjIuMS9saWJmZGNvcmUvc2N0cC5jOjEyNjI6OTogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KK3wgL2J1aWxkL2ZyZWVkaWFtZXRlci8xLjIuMS1yMC9mcmVlRGlhbWV0ZXItMS4yLjEvbGliZmRjb3JlL3NjdHAuYzoxMjc0Ojk6IGVycm9yOiAnU0NUUF9OT1RJRklDQVRJT05TX1NUT1BQRURfRVZFTlQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTQ1RQX0FVVEhFTlRJQ0FUSU9OX0VWRU5UJz8KKyAgICBjYXNlIFNDVFBfTk9USUZJQ0FUSU9OU19TVE9QUEVEX0VWRU5UOgorCitVcGRhdGUgdGhlIG9sZCBzY3RwIHNvY2tldCBhcGkgY2hlY2sgdG8gZml4Cit0aGUgYWJvdmUgYnVpbGQgZXJyb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliZmRjb3JlL3NjdHAuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmZkY29yZS9zY3RwLmMgYi9saWJmZGNvcmUvc2N0cC5jCitpbmRleCBjODBhNDk3Li44MzQ0MGM3IDEwMDY0NAorLS0tIGEvbGliZmRjb3JlL3NjdHAuYworKysrIGIvbGliZmRjb3JlL3NjdHAuYworQEAgLTQ4LDcgKzQ4LDcgQEAKKyAvKiAjZGVmaW5lIE9MRF9TQ1RQX1NPQ0tFVF9BUEkgKi8KKyAKKyAvKiBBdXRvbWF0aWNhbGx5IGZhbGxiYWNrIHRvIG9sZCBBUEkgaWYgc29tZSBvZiB0aGUgbmV3IHN5bWJvbHMgYXJlIG5vdCBkZWZpbmVkICovCistI2lmICghZGVmaW5lZChTQ1RQX0NPTk5FQ1RYXzRfQVJHUykgfHwgKCFkZWZpbmVkKFNDVFBfUkVDVlJDVklORk8pKSB8fCAoIWRlZmluZWQoU0NUUF9TTkRJTkZPKSkpIAorKyNpZiAoIWRlZmluZWQoU0NUUF9DT05ORUNUWF80X0FSR1MpIHx8ICghZGVmaW5lZChTQ1RQX05PVElGSUNBVElPTlNfU1RPUFBFRF9FVkVOVCkpIHx8ICghZGVmaW5lZChTQ1RQX1NORElORk8pKSkKKyAjIGRlZmluZSBPTERfU0NUUF9TT0NLRVRfQVBJCisgI2VuZGlmCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9mcmVlZGlhbWV0ZXIvZnJlZWRpYW1ldGVyXzEuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9mcmVlZGlhbWV0ZXJfMS4yLjEuYmIKaW5kZXggYzU1NmViNC4uYjg4MThmYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9mcmVlZGlhbWV0ZXJfMS4yLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2ZyZWVkaWFtZXRlci9mcmVlZGlhbWV0ZXJfMS4yLjEuYmIKQEAgLTcsNyArNyw3IEBACiAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRpYW1ldGVyLm5ldCIKIAotREVQRU5EUyA9ICJmbGV4IGJpc29uIGNtYWtlLW5hdGl2ZSBsaWJnY3J5cHQgZ251dGxzIGxpYmlkbiBsa3NjdHAtdG9vbHMgdmlydHVhbC9rZXJuZWwiCitERVBFTkRTID0gImZsZXggYmlzb24gY21ha2UtbmF0aXZlIGxpYmdjcnlwdCBnbnV0bHMgbGliaWRuIGxrc2N0cC10b29scyB2aXJ0dWFsL2tlcm5lbCBiaXNvbi1uYXRpdmUiCiAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKQEAgLTIwLDYgKzIwLDcgQEAKICAgICBmaWxlOi8vZnJlZWRpYW1ldGVyLmluaXQgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnZmlsZTovL2luc3RhbGxfdGVzdC5wYXRjaCBmaWxlOi8vcnVuLXB0ZXN0IGZpbGU6Ly9wYXNzLXB0ZXN0LWVudi5wYXRjaCcsICcnLCBkKX0gXAogICAgIGZpbGU6Ly9mcmVlRGlhbWV0ZXIuY29uZiBcCisgICAgZmlsZTovLzAwMDEtbGliZmRjb3JlLXNjdHAuYy11cGRhdGUtdGhlLW9sZC1zY3RwLWFwaS1jaGVjay5wYXRjaCBcCiAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNjFiMTA2MmFhMTQ0YjVmMTJlZWQ1MTQ2MTFlNmQ2OTciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1CVUctYTI1ODQtRml4LXNubXB0cmFwLXRvLXVzZS1jbGllbnRhZGRyLWZyb20tc25tcC5jLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtQlVHLWEyNTg0LUZpeC1zbm1wdHJhcC10by11c2UtY2xpZW50YWRkci1mcm9tLXNubXAuYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE0Yjc2MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1CVUctYTI1ODQtRml4LXNubXB0cmFwLXRvLXVzZS1jbGllbnRhZGRyLWZyb20tc25tcC5jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBhOTI2MjhhMTYzZWJmMWVhNjIyMjA2ODQ3MzYzMDA0NjFjMDAzODc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiBNb24sIDI2IEphbiAyMDE1IDIwOjI2OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJVRyNhMjU4NDogRml4IHNubXB0cmFwIHRvIHVzZSBjbGllbnRhZGRyIGZyb20gc25tcC5jb25mLgotIFRoYW5rcyB0byByaXp3YW4KLQotVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKLSsrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotQEAgLTI4Niw2ICsyODYsMjcgQEAgbmV0c25tcF91ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KLSAgICAgfSBlbHNlIHsKLSsgICAgICAgIGNoYXIgICAgICAgICAgICpjbGllbnRfc29ja2V0ID0gTlVMTDsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBUaGlzIGlzIGEgY2xpZW50IHNlc3Npb24uICBJZiB3ZSd2ZSBiZWVuIGdpdmVuIGEKLSsgICAgICAgICAqIGNsaWVudCBhZGRyZXNzIHRvIHNlbmQgZnJvbSwgdGhlbiBiaW5kIHRvIHRoYXQuCi0rICAgICAgICAgKiBPdGhlcndpc2UgdGhlIHNlbmQgd2lsbCB1c2UgInNvbWV0aGluZyBzZW5zaWJsZSIuCi0rICAgICAgICAgKi8KLSsKLSsgICAgICAgIGNsaWVudF9zb2NrZXQgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0NMSUVOVF9BRERSKTsKLSsgICAgICAgIGlmIChjbGllbnRfc29ja2V0KSB7Ci0rICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiBjbGllbnRfYWRkcjsKLSsgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX2luNl8yKCZjbGllbnRfYWRkciwgY2xpZW50X3NvY2tldCwgTlVMTCk7Ci0rICAgICAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xpZW50X2FkZHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKLSsgICAgICAgICAgICBpZiAoIHJjICE9IDAgKSB7Ci0rICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VkcDYiLCAiZmFpbGVkIHRvIGJpbmQgZm9yIGNsaWVudGFkZHI6ICVkICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKLSsgICAgICAgICAgICAgICAgbmV0c25tcF9zb2NrZXRiYXNlX2Nsb3NlKHQpOwotKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSAgICAgICAgIC8qCi0gICAgICAgICAgKiBUaGlzIGlzIGEgY2xpZW50IHNlc3Npb24uICBTYXZlIHRoZSBhZGRyZXNzIGluIHRoZQotICAgICAgICAgICogdHJhbnNwb3J0LXNwZWNpZmljIGRhdGEgcG9pbnRlciBmb3IgbGF0ZXIgdXNlIGJ5IG5ldHNubXBfdWRwNl9zZW5kLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtUmVtb3ZlLVU2NC10eXBlZGVmLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtUmVtb3ZlLVU2NC10eXBlZGVmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzE0YWIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLVJlbW92ZS1VNjQtdHlwZWRlZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1MjQgKzAsMCBAQAotbmV0LXNubXA6IHJlbW92ZSBVNjQgdHlwZWRlZgotCi1Gcm9tIGdpdDovL2dpdC5jb2RlLnNmLm5ldC9wL25ldC1zbm1wL2NvZGUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAodW5tb2RpZmllZCkKLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDQ3N2I0MzA3ZWYxMmRkY2UzYjZhOTIwNWUwYmRkZGJmYjJlMGU5YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6IFNhdCwgMjAgRmViIDIwMTYgMTg6NTg6MTggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIFJlbW92ZSBVNjQgdHlwZWRlZgotCi1UaGUgVTY0IHR5cGVkZWYgY29uZmxpY3RzIHdpdGggYSB0eXBlZGVmIGluIGEgUGVybCBoZWFkZXIgZmlsZS4gSGVuY2UKLXJlbW92ZSB0aGUgVTY0IHR5cGVkZWYgZnJvbSB0aGUgTmV0LVNOTVAgaGVhZGVyIGZpbGVzLiBUaGlzIHBhdGNoIGRvZXMKLW5vdCBtb2RpZnkgdGhlIE5ldC1TTk1QIEFCSS4KLS0tLQotIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jICAgICAgICAgIHwgIDE2ICstCi0gYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmggICAgICAgICAgfCAgNDggKy0KLSAuLi4vbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jICB8ICAzMiArLQotIC4uLi9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMgICAgICAgIHwgICAyICstCi0gLi4uL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMgICAgICAgfCAgMjggKy0KLSAuLi4vaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaCAgICAgICB8ICAyOCArLQotIC4uLi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyAgICAgIHwgIDU2ICstCi0gLi4uL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMgfCAgMjggKy0KLSAuLi4vaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCB8IDkyMSArKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAuLi4vaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jICAgICAgICAgICAgICAgICB8ICA1NiArLQotIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oICAgICAgICAgICAgIHwgIDQyICstCi0gaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmggICAgICAgICAgICAgICAgICAgfCAgMzQgKy0KLSBzbm1wbGliL2ludDY0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzOCArLQotIHNubXBsaWIvcmVhZF9jb25maWcuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCi0gdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDE1aW50NjRfY2xpYi5jICAgICAgfCAgMTAgKy0KLSAxNSBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgMTA3MSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYwotKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCi1AQCAtNzIyLDcgKzcyMiw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIG9uIHQKLSAgKi8KLSBpbnQKLSBpZkhDSW5PY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ0luT2N0ZXRzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDSW5PY3RldHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENJbk9jdGV0c192YWxfcHRyKTsKLUBAIC03NzksNyArNzc5LDcgQEAgVGhlIG51bWJlciBvZiBwYWNrZXRzLCBkZWxpdmVyZWQgYnkgdGhpcwotICAqLwotIGludAotIGlmSENJblVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5VY2FzdFBrdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJblVjYXN0UGt0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ0luVWNhc3RQa3RzX3ZhbF9wdHIpOwotQEAgLTgzOCw3ICs4MzgsNyBAQCBUaGUgbnVtYmVyIG9mIHBhY2tldHMsIGRlbGl2ZXJlZCBieSB0aGlzCi0gICovCi0gaW50Ci0gaWZIQ0luTXVsdGljYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ0luTXVsdGljYXN0UGt0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJbk11bHRpY2FzdFBrdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENJbk11bHRpY2FzdFBrdHNfdmFsX3B0cik7Ci1AQCAtODk3LDcgKzg5Nyw3IEBAIFRoZSBudW1iZXIgb2YgcGFja2V0cywgZGVsaXZlcmVkIGJ5IHRoaXMKLSAgKi8KLSBpbnQKLSBpZkhDSW5Ccm9hZGNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5Ccm9hZGNhc3RQa3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ0luQnJvYWRjYXN0UGt0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ0luQnJvYWRjYXN0UGt0c192YWxfcHRyKTsKLUBAIC05NTUsNyArOTU1LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgbwotICAqLwotIGludAotIGlmSENPdXRPY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENPdXRPY3RldHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpOwotQEAgLTEwMTMsNyArMTAxMyw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyB0aGF0IGhpZ2hlci0KLSAgKi8KLSBpbnQKLSBpZkhDT3V0VWNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0VWNhc3RQa3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKTsKLUBAIC0xMDc0LDcgKzEwNzQsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgdGhhdCBoaWdoZXItCi0gICovCi0gaW50Ci0gaWZIQ091dE11bHRpY2FzdFBrdHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0TXVsdGljYXN0UGt0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0TXVsdGljYXN0UGt0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsX3B0cik7Ci1AQCAtMTEzNCw3ICsxMTM0LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHRoYXQgaGlnaGVyLQotICAqLwotIGludAotIGlmSENPdXRCcm9hZGNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOwotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAotKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi1AQCAtMTQzLDI4ICsxNDMsMjggQEAgY29uZmlnX3JlcXVpcmUoaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlXwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZk91dEJyb2FkY2FzdFBrdHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDSW5PY3RldHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDSW5PY3RldHNfdmFsX3B0cik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlmSENJbk9jdGV0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENJblVjYXN0UGt0c192YWxfcHRyKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ0luVWNhc3RQa3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luTXVsdGljYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ0luTXVsdGljYXN0UGt0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfZ2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0T2N0ZXRzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlmSENPdXRPY3RldHNfdmFsX3B0cik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppZkhDT3V0T2N0ZXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dFVjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpZkhDT3V0VWNhc3RQa3RzX3ZhbF9wdHIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaWZIQ091dFVjYXN0UGt0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX2dldChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c19nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaWZMaW5rVXBEb3duVHJhcEVuYWJsZV9nZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTI4NCw4NiArMjg0LDg2IEBAIGNvbmZpZ19yZXF1aXJlKGlmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV8KLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5PY3RldHNfdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbk9jdGV0c192YWwpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luT2N0ZXRzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5PY3RldHNfdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDSW5PY3RldHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk9jdGV0c191bmRvKGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJblVjYXN0UGt0c192YWwpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ0luVWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDSW5VY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJblVjYXN0UGt0c191bmRvKGlmWFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5NdWx0aWNhc3RQa3RzX3ZhbCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbk11bHRpY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbk11bHRpY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDSW5Ccm9hZGNhc3RQa3RzX3ZhbCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENJbkJyb2FkY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENJbkJyb2FkY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRPY3RldHNfY2hlY2tfdmFsdWUoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0T2N0ZXRzX3ZhbCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgaWZIQ091dE9jdGV0c192YWwpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE9jdGV0c191bmRvX3NldHVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE9jdGV0c19zZXQoaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgaWZIQ091dE9jdGV0c192YWwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0T2N0ZXRzX3ZhbCk7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0T2N0ZXRzX3VuZG8oaWZYVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOwotIAotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dFVjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0IGlmSENPdXRVY2FzdFBrdHNfdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0VWNhc3RQa3RzX3ZhbCk7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0VWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0VWNhc3RQa3RzX3NldChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0VWNhc3RQa3RzX3ZhbCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0IGlmSENPdXRVY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRVY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX2NoZWNrX3ZhbHVlKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRNdWx0aWNhc3RQa3RzX3VuZG9fc2V0dXAoaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfc2V0KGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0IGlmSENPdXRNdWx0aWNhc3RQa3RzX3ZhbCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBpZkhDT3V0TXVsdGljYXN0UGt0c192YWwpOwotICAgICBpbnQgICAgICAgICAgICAgaWZIQ091dE11bHRpY2FzdFBrdHNfdW5kbyhpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7Ci0gCi0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c19jaGVja192YWx1ZShpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3ZhbCk7Ci0gICAgIGludCAgICAgICAgICAgICBpZkhDT3V0QnJvYWRjYXN0UGt0c191bmRvX3NldHVwKGlmWFRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3NldChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCBpZkhDT3V0QnJvYWRjYXN0UGt0c192YWwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgaWZIQ091dEJyb2FkY2FzdFBrdHNfdmFsKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlmSENPdXRCcm9hZGNhc3RQa3RzX3VuZG8oaWZYVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwotIAotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCi0rKysgbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCi1AQCAtNzI5LDcyICs3MjksNzIgQEAgX2lmWFRhYmxlX2dldF9jb2x1bW4oaWZYVGFibGVfcm93cmVxX2N0eAotICAgICAgICAgICogaWZIQ0luT2N0ZXRzKDYpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lGSENJTk9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaWZIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICByYyA9IGlmSENJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLSAgICAgICAgICAqIGlmSENJblVjYXN0UGt0cyg3KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JRkhDSU5VQ0FTVFBLVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0tICAgICAgICByYyA9IGlmSENJblVjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpZkhDSW5VY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi0gICAgICAgICAgKiBpZkhDSW5NdWx0aWNhc3RQa3RzKDgpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lGSENJTk1VTFRJQ0FTVFBLVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0tICAgICAgICByYyA9IGlmSENJbk11bHRpY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgIHJjID0gaWZIQ0luTXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLSAgICAgICAgICAqIGlmSENJbkJyb2FkY2FzdFBrdHMoOSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSUZIQ0lOQlJPQURDQVNUUEtUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaWZIQ0luQnJvYWRjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpZkhDSW5Ccm9hZGNhc3RQa3RzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotICAgICAgICAgICogaWZIQ091dE9jdGV0cygxMCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSUZIQ09VVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaWZIQ091dE9jdGV0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpZkhDT3V0T2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotICAgICAgICAgICogaWZIQ091dFVjYXN0UGt0cygxMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSUZIQ09VVFVDQVNUUEtUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaWZIQ091dFVjYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpZkhDT3V0VWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotICAgICAgICAgICogaWZIQ091dE11bHRpY2FzdFBrdHMoMTIpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lGSENPVVRNVUxUSUNBU1RQS1RTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotLSAgICAgICAgcmMgPSBpZkhDT3V0TXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpZkhDT3V0TXVsdGljYXN0UGt0c19nZXQocm93cmVxX2N0eCwgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLSAgICAgICAgICAqIGlmSENPdXRCcm9hZGNhc3RQa3RzKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JRkhDT1VUQlJPQURDQVNUUEtUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaWZIQ091dEJyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgIHJjID0gaWZIQ091dEJyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1JbmRleDogbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKLUBAIC0yNjQsNyArMjY0LDcgQEAgX2NhbGN1bGF0ZV9lbnRyaWVzKG5ldHNubXBfc3lzdGVtc3RhdHNfZQotICAgICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXQotICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSkgewotIAotLSAgICAgICAgVTY0IHRtcCwgdG1wMiwgdG1wMzsKLSsgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgdG1wLCB0bXAyLCB0bXAzOwotICAgICAgICAgdG1wID0gZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHM7Ci0gICAgICAgICB1NjRJbmNyKCZ0bXAsICZlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zKTsKLSAgICAgICAgIHU2NEluY3IoJnRtcCwgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzKTsKLUluZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYwotQEAgLTI3MCw3ICsyNzAsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByCi0gICovCi0gaW50Ci0gaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cik7Ci1AQCAtMzk1LDcgKzM5NSw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGkKLSAgKi8KLSBpbnQKLSBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKTsKLUBAIC04NjIsNyArODYyLDcgQEAgVGhlIG51bWJlciBvZiBpbnB1dCBkYXRhZ3JhbXMgZm9yIHdoaWNoCi0gICovCi0gaW50Ci0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7Ci1AQCAtMTI2Nyw3ICsxMjY3LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bAotICAqLwotIGludAotIGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpOwotQEAgLTEzOTYsNyArMTM5Niw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG8KLSAgKi8KLSBpbnQKLSBpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKTsKLUBAIC0xNTMyLDcgKzE1MzIsNyBAQCBUaGUgbnVtYmVyIG9mIGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlCi0gICovCi0gaW50Ci0gaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7Ci1AQCAtMTk5OSw3ICsxOTk5LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCB0aAotICAqLwotIGludAotIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOwotQEAgLTIxMjMsNyArMjEyMyw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIGluIElQIGRhdGFncmEKLSAgKi8KLSBpbnQKLSBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKLUBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgcmVjCi0gICovCi0gaW50Ci0gaXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cik7Ci1AQCAtMjM3Miw3ICsyMzcyLDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVjZWl2ZWQgaW4gSQotICAqLwotIGludAotIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOwotQEAgLTI0OTcsNyArMjQ5Nyw3IEBAIFRoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyB0cmEKLSAgKi8KLSBpbnQKLSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKTsKLUBAIC0yNjIxLDcgKzI2MjEsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyB0cmFuc21pdHRlZCBpCi0gICovCi0gaW50Ci0gaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7Ci1AQCAtMjc0Myw3ICsyNzQzLDcgQEAgVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlYwotICAqLwotIGludAotIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpOwotQEAgLTI4NjUsNyArMjg2NSw3IEBAIFRoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmEKLSAgKi8KLSBpbnQKLSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKLUluZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAotQEAgLTUwLDcgKzUwLDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTU4LDcgKzU4LDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5IZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtODcsNyArODcsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKLSAgICAgaW50ICAgICAgICAgICAgCi0gICAgICAgICBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21SZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTExMSw3ICsxMTEsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtMTE5LDcgKzExOSw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKLUBAIC0xMjgsNyArMTI4LDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7Ci0gICAgIGludCAgICAgICAgICAgIAotICAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dERpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTE1Niw3ICsxNTYsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtMTY0LDcgKzE2NCw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtMTcyLDcgKzE3Miw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLUBAIC0xODAsNyArMTgwLDcgQEAgZXh0ZXJuICAgICAgICAgICJDIiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtMTg4LDcgKzE4OCw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi1AQCAtMTk2LDcgKzE5Niw3IEBAIGV4dGVybiAgICAgICAgICAiQyIgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTIwNCw3ICsyMDQsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7Ci0gICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotQEAgLTIxMiw3ICsyMTIsNyBAQCBleHRlcm4gICAgICAgICAgIkMiIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKLSAgICAgaW50ICAgICAgICAgICAgCi0gICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi1JbmRleDogbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKLUBAIC03MjIsMTAgKzcyMiwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ0luUmVjZWl2ZXMoNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTlJFQ0VJVkVTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtNzQxLDkgKzc0MSw5IEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKLSAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5PY3RldHMoNikvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTk9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTgxMCwxMCArODEwLDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKLSAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lORk9SV0RBVEFHUkFNUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTg2OSwxMCArODY5LDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKLSAgICAgICAgICAqIGlwSWZTdGF0c0hDSW5EZWxpdmVycygxOSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtODg5LDEwICs4ODksMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAotICAgICAgICAgICogaXBJZlN0YXRzSENPdXRSZXF1ZXN0cygyMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRSRVFVRVNUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRSZXF1ZXN0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTkwOSwxMCArOTA5LDEwIEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKLSAgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcygyNCkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRGT1JXREFUQUdSQU1TOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtOTc5LDEwICs5NzksMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAotICAgICAgICAgICogaXBJZlN0YXRzSENPdXRUcmFuc21pdHMoMzEpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUVFJBTlNNSVRTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtOTk5LDkgKzk5OSw5IEBAIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwSWZTdGF0c1RhYmwKLSAgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzKDMzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLS0gICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTAxOCwxMCArMTAxOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzKDM1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOTUNBU1RQS1RTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTAzOCwxMCArMTAzOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHMoMzcpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTEwNTgsMTAgKzEwNTgsMTAgQEAgX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibAotICAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMoMzkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RQS1RTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTA3OCwxMCArMTA3OCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzKDQxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUT0NURVRTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTA5OCwxMCArMTA5OCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzKDQzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOQkNBU1RQS1RTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTExOCwxMCArMTExOCwxMCBAQCBfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcElmU3RhdHNUYWJsCi0gICAgICAgICAgKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyg0NSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRCQ0FTVFBLVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUluZGV4OiBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCi0rKysgbmV0LXNubXAtNS43LjMvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYwotQEAgLTQ1Miw3ICs0NTIsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIGlucHV0IElQIGRhdGFncmFtcyByCi0gICovCi0gaW50Ci0gaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOwotQEAgLTU3OSw3ICs1NzksNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBpbiBpCi0gICovCi0gaW50Ci0gaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOwotQEAgLTEwNTgsNyArMTA1OCw3IEBAIFRoZSBudW1iZXIgb2YgaW5wdXQgZGF0YWdyYW1zIGZvciB3aGljaAotIGludAotIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi1AQCAtMTQ3NCw3ICsxNDc0LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bAotICAqLwotIGludAotIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKLUBAIC0xNjAyLDcgKzE2MDIsNyBAQCBUaGUgdG90YWwgbnVtYmVyIG9mIElQIGRhdGFncmFtcyB3aGljaCBsCi0gICovCi0gaW50Ci0gaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOwotQEAgLTE4MDksNyArMTgwOSw3IEBAIFRoZSBudW1iZXIgb2YgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGUKLSBpbnQKLSBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotQEAgLTIyODgsNyArMjI4OCw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGgKLSAgKi8KLSBpbnQKLSBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cik7Ci1AQCAtMjQxNSw3ICsyNDE1LDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgaW4gSVAgZGF0YWdyYQotICAqLwotIGludAotIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICppcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKLUBAIC0yNTM5LDcgKzI1MzksNyBAQCBUaGUgbnVtYmVyIG9mIElQIG11bHRpY2FzdCBkYXRhZ3JhbXMgcmVjCi0gICovCi0gaW50Ci0gaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOwotQEAgLTI2NjUsNyArMjY2NSw3IEBAIFRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIEkKLSBpbnQKLSBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKLSB7Ci0gICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLwotQEAgLTI3OTAsNyArMjc5MCw3IEBAIFRoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyB0cmEKLSAgKi8KLSBpbnQKLSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cik7Ci1AQCAtMjkyMSw3ICsyOTIxLDcgQEAgVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaQotIGludAotIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi1AQCAtMzA0Niw3ICszMDQ2LDcgQEAgVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlYwotICAqLwotIGludAotIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpCi0gewotICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KLSAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyKTsKLUBAIC0zMTcwLDcgKzMxNzAsNyBAQCBUaGUgbnVtYmVyIG9mIElQIGJyb2FkY2FzdCBkYXRhZ3JhbXMgdHJhCi0gICovCi0gaW50Ci0gaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKQotIHsKLSAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCi0gICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOwotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZXQtc25tcC01LjcuMy5vcmlnL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCi1AQCAtMTQ0LDkzICsxNDQsMjIgQEAgY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZQotICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKLSAgICAgICovCi0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCk7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKTsKLSAKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKLSAgICAgdm9pZAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOwotIAotICAgICBpcFN5c3RlbVN0YXRzVGFibGVfZGF0YSAqaXBTeXN0ZW1TdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7Ci0gICAgIHZvaWQgICAgICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwU3lzdGVtU3RhdHNUYWJsZV9kYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGF0YSk7Ci0tCi0tCi0tICAgICAgICAgCi0tICAgICAgICAgCi0tICAgICAgICAgCi0tICAgICAgICAgCi0tICAgICAgICAgCi0tICAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAotKyAgICBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAotICAgICAgICAgKiBpcFN5c3RlbVN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4Ci0gICAgICAgICAoaXBTeXN0ZW1TdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwotIAotQEAgLTI2NSwyMjYgKzE5NCw1MCBAQCBjb25maWdfcmVxdWlyZShpcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlCi0gICAgICAqIGluZGV4ZXMKLSAgICAgICovCi0gCi0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOwotICAgICBpbnQgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbk9jdGV0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkhkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKmlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOwotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkhkckVycm9yc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSW5Ob1JvdXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNJblVua25vd25Qcm90b3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNJblVua25vd25Qcm90b3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c1JlYXNtUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOwotQEAgLTQ5Miw2OTAgKzI0NSwxNDIgQEAgY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWFzbU9Lc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzUmVhc21GYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY291bnRlcjY0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdSZXFkc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0RnJhZ09Lc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3NfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdGYWlsc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRPY3RldHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSW5NY2FzdE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSsgICAgaW50IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0luQmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c19nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0cik7Ci0tICAgIGludAotLSAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0rICAgIGludCBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpOwotLSAgICBpbnQKLS0gICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV9nZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1JlZnJlc2hSYXRlX2dldChpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKLS0KLS0KLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4Ci0rICAgIGludCBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRibF9pZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJUFZlcnNpb25fdmFsKTsKLS0gICAgaW50Ci0tICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICAKLS0gICAgICAgIAotLSAgICAgICAgCi0tICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXQoaXBTeXN0ZW1TdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgotKyAgICBpbnQgaXBTeXN0ZW1TdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcFN5c3RlbVN0YXRzSVBWZXJzaW9uX3ZhbCk7Ci0gCi0tCi0tCi0gICAgIC8qCi0gICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAgICogU0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucwotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwotKysrIG5ldC1zbm1wLTUuNy4zL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jCi1AQCAtNjc0LDEwICs2NzQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlcyg0KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTlJFQ0VJVkVTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtNjk0LDEwICs2OTQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5PY3RldHMoNikvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5PQ1RFVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUBAIC03NjQsMTAgKzc2NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCi0gICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXMoMTMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lORk9SV0RBVEFHUkFNUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTgyNCwxMCArODI0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKLSAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnMoMTkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOREVMSVZFUlM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUBAIC04NDQsMTAgKzg0NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCi0gICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRSZXF1ZXN0cygyMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUUkVRVUVTVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUBAIC04NzQsMTAgKzg3NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCi0gICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zKDI0KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRGT1JXREFUQUdSQU1TOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtOTQ0LDEwICs5NDQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzKDMxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRUUkFOU01JVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUBAIC05NjQsMTAgKzk2NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCi0gICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHMoMzMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTk4NCwxMCArOTg0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKLSAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzKDM1KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTk1DQVNUUEtUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTEwMDQsMTAgKzEwMDQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0cygzNykvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCi0gICAgICAgICAgKi8KLSAgICAgY2FzZSBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5NQ0FTVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTEwMjQsMTAgKzEwMjQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzKDM5KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVFBLVFM6Ci0tICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKLSsgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7Ci0gICAgICAgICByYyA9IGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBjb3VudGVyNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgLyoKLUBAIC0xMDQ0LDEwICsxMDQ0LDEwIEBAIF9pcFN5c3RlbVN0YXRzVGFibGVfZ2V0X2NvbHVtbihpcFN5c3RlbVMKLSAgICAgICAgICAqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzKDQxKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKLSAgICAgICAgICAqLwotICAgICBjYXNlIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVE9DVEVUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotQEAgLTEwNjQsMTAgKzEwNjQsMTAgQEAgX2lwU3lzdGVtU3RhdHNUYWJsZV9nZXRfY29sdW1uKGlwU3lzdGVtUwotICAgICAgICAgICogaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHMoNDMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOQkNBU1RQS1RTOgotLSAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7Ci0rICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7Ci0gICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OwotICAgICAgICAgcmMgPSBpcFN5c3RlbVN0YXRzSENJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgY291bnRlcjY0ICopIHZhci0+dmFsLnN0cmluZyk7Ci0gICAgICAgICBicmVhazsKLSAKLSAgICAgICAgIC8qCi1AQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBTeXN0ZW1TCi0gICAgICAgICAgKiBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHMoNDUpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAotICAgICAgICAgICovCi0gICAgIGNhc2UgQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVEJDQVNUUEtUUzoKLS0gICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOwotKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOwotICAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKLSAgICAgICAgIHJjID0gaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2YXItPnZhbC5zdHJpbmcpOwotICAgICAgICAgYnJlYWs7Ci0gCi0gICAgICAgICAvKgotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaAotKysrIG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCi1AQCAtNTgsNDUgKzU4LDQ1IEBAIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaXBzdGF0c19zIHsKLSAgICAgKiBvdGhlciBjb2x1bW5zLCB3aGVuIHVuZGVybHlpbmcgT1MgZG9lcyBub3QgcHJvdmlkZSB0aGVtLgotICAgICAqIEFsd2F5cyBmaWxsIGF0IGxlYXN0IDMyIGJpdHMsIHRoZSB0YWJsZSBpcyBwZXJpb2RpY2FsbHkgcG9sbGVkIC0+IDMyIGJpdAotICAgICAqIG92ZXJmbG93IHNoYWxsIGJlIGRldGVjdGVkIGFuZCA2NCBiaXQgdmFsdWUgc2hvdWxkIGJlIGNvbXB1dGVkIGF1dG9tYXRpY2FsbHkuICovCi0tICAgVTY0ICAgICAgICAgICAgIEhDSW5SZWNlaXZlczsKLS0gICBVNjQgICAgICAgICAgICAgSENJbk9jdGV0czsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDSW5SZWNlaXZlczsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDSW5PY3RldHM7Ci0gICAgdV9sb25nICAgICAgICAgIEluSGRyRXJyb3JzOwotLSAgIFU2NCAgICAgICAgICAgICBIQ0luTm9Sb3V0ZXM7IAotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbk5vUm91dGVzOyAKLSAgICB1X2xvbmcgICAgICAgICAgSW5BZGRyRXJyb3JzOwotICAgIHVfbG9uZyAgICAgICAgICBJblVua25vd25Qcm90b3M7Ci0gICAgdV9sb25nICAgICAgICAgIEluVHJ1bmNhdGVkUGt0czsKLSAgICAKLSAgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gSENJbk5vUm91dGVzIGFuZCBIQ091dEZvcndEYXRhZ3JhbXMgKi8KLS0gICBVNjQgICAgICAgICAgICAgSENJbkZvcndEYXRhZ3JhbXM7IAotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbkZvcndEYXRhZ3JhbXM7IAotICAgIAotICAgIHVfbG9uZyAgICAgICAgICBSZWFzbVJlcWRzOwotICAgIHVfbG9uZyAgICAgICAgICBSZWFzbU9LczsKLSAgICB1X2xvbmcgICAgICAgICAgUmVhc21GYWlsczsKLSAgICB1X2xvbmcgICAgICAgICAgSW5EaXNjYXJkczsKLS0gICBVNjQgICAgICAgICAgICAgSENJbkRlbGl2ZXJzOwotLSAgIFU2NCAgICAgICAgICAgICBIQ091dFJlcXVlc3RzOwotLSAgIFU2NCAgICAgICAgICAgICBIQ091dE5vUm91dGVzOwotLSAgIFU2NCAgICAgICAgICAgICBIQ091dEZvcndEYXRhZ3JhbXM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDT3V0RGlzY2FyZHM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ0luRGVsaXZlcnM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dFJlcXVlc3RzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXROb1JvdXRlczsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0Rm9yd0RhdGFncmFtczsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RGlzY2FyZHM7Ci0gICAgCi0gICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzKi8KLS0gICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnUmVxZHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ09LczsKLS0gICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnRmFpbHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDT3V0RnJhZ0NyZWF0ZXM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dEZyYWdSZXFkczsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RnJhZ09LczsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0RnJhZ0ZhaWxzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRGcmFnQ3JlYXRlczsKLSAgICAKLSAgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gCi0gICAgICogSENPdXRSZXF1ZXN0cyArSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcwotICAgICAqIC0gSENPdXRGcmFnUmVxZHMgLSBIQ091dE5vUm91dGVzICAtIEhDT3V0RGlzY2FyZHMgKi8KLS0gICBVNjQgICAgICAgICAgICAgSENPdXRUcmFuc21pdHM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dFRyYW5zbWl0czsKLSAgICAKLS0gICBVNjQgICAgICAgICAgICAgSENPdXRPY3RldHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDSW5NY2FzdFBrdHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDSW5NY2FzdE9jdGV0czsKLS0gICBVNjQgICAgICAgICAgICAgSENPdXRNY2FzdFBrdHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDT3V0TWNhc3RPY3RldHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDSW5CY2FzdFBrdHM7Ci0tICAgVTY0ICAgICAgICAgICAgIEhDT3V0QmNhc3RQa3RzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRPY3RldHM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ0luTWNhc3RQa3RzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbk1jYXN0T2N0ZXRzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENPdXRNY2FzdFBrdHM7Ci0rICAgc3RydWN0IGNvdW50ZXI2NCBIQ091dE1jYXN0T2N0ZXRzOwotKyAgIHN0cnVjdCBjb3VudGVyNjQgSENJbkJjYXN0UGt0czsKLSsgICBzdHJ1Y3QgY291bnRlcjY0IEhDT3V0QmNhc3RQa3RzOwotIAotICAgIC8qIEFycmF5IG9mIGF2YWlsYWJsZSBjb2x1bW5zLiovCi0gICAgaW50ICAgICAgICAgICAgIGNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9MQVNUKzFdOwotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotKysrIG5ldC1zbm1wLTUuNy4zL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi1AQCAtNSwzMSArNSwyOSBAQAotIGV4dGVybiAgICAgICAgICAiQyIgewotICNlbmRpZgotIAotLSAgICB0eXBlZGVmIHN0cnVjdCBjb3VudGVyNjQgVTY0OwotLQotICNkZWZpbmUgSTY0Q0hBUlNaIDIxCi0gCi0tICAgIHZvaWQgICAgICAgICAgICBkaXZCeTEwKFU2NCwgVTY0ICosIHVuc2lnbmVkIGludCAqKTsKLS0gICAgdm9pZCAgICAgICAgICAgIG11bHRCeTEwKFU2NCwgVTY0ICopOwotLSAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTE2KFU2NCAqLCB1bnNpZ25lZCBpbnQpOwotLSAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTMyKFU2NCAqLCB1bnNpZ25lZCBpbnQpOwotKyAgICB2b2lkICAgICAgICAgICAgZGl2QnkxMChzdHJ1Y3QgY291bnRlcjY0LCBzdHJ1Y3QgY291bnRlcjY0ICosIHVuc2lnbmVkIGludCAqKTsKLSsgICAgdm9pZCAgICAgICAgICAgIG11bHRCeTEwKHN0cnVjdCBjb3VudGVyNjQsIHN0cnVjdCBjb3VudGVyNjQgKik7Ci0rICAgIHZvaWQgICAgICAgICAgICBpbmNyQnlVMTYoc3RydWN0IGNvdW50ZXI2NCAqLCB1bnNpZ25lZCBpbnQpOwotKyAgICB2b2lkICAgICAgICAgICAgaW5jckJ5VTMyKHN0cnVjdCBjb3VudGVyNjQgKiwgdW5zaWduZWQgaW50KTsKLSAgICAgTkVUU05NUF9JTVBPUlQKLS0gICAgdm9pZCAgICAgICAgICAgIHplcm9VNjQoVTY0ICopOwotLSAgICBpbnQgICAgICAgICAgICAgaXNaZXJvVTY0KGNvbnN0IFU2NCAqKTsKLSsgICAgdm9pZCAgICAgICAgICAgIHplcm9VNjQoc3RydWN0IGNvdW50ZXI2NCAqKTsKLSsgICAgaW50ICAgICAgICAgICAgIGlzWmVyb1U2NChjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICopOwotICAgICBORVRTTk1QX0lNUE9SVAotLSAgICB2b2lkICAgICAgICAgICAgcHJpbnRVNjQoY2hhciAqLCBjb25zdCBVNjQgKik7Ci0rICAgIHZvaWQgICAgICAgICAgICBwcmludFU2NChjaGFyICosIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKik7Ci0gICAgIE5FVFNOTVBfSU1QT1JUCi0tICAgIHZvaWQgICAgICAgICAgICBwcmludEk2NChjaGFyICosIGNvbnN0IFU2NCAqKTsKLS0gICAgaW50ICAgICAgICAgICAgIHJlYWQ2NChVNjQgKiwgY29uc3QgY2hhciAqKTsKLSsgICAgdm9pZCAgICAgICAgICAgIHByaW50STY0KGNoYXIgKiwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqKTsKLSsgICAgaW50ICAgICAgICAgICAgIHJlYWQ2NChzdHJ1Y3QgY291bnRlcjY0ICosIGNvbnN0IGNoYXIgKik7Ci0gICAgIE5FVFNOTVBfSU1QT1JUCi0tICAgIHZvaWQgICAgICAgICAgICB1NjRTdWJ0cmFjdChjb25zdCBVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dHdvLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogcHU2NG91dCk7Ci0tICAgIHZvaWQgICAgICAgICAgICB1NjRJbmNyKFU2NCAqIHB1NjRvdXQsIGNvbnN0IFU2NCAqIHB1NjRvbmUpOwotLSAgICB2b2lkICAgICAgICAgICAgdTY0VXBkYXRlQ291bnRlcihVNjQgKiBwdTY0b3V0LCBjb25zdCBVNjQgKiBwdTY0b25lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVNjQgKiBwdTY0dHdvKTsKLS0gICAgdm9pZCAgICAgICAgICAgIHU2NENvcHkoVTY0ICogcHU2NG9uZSwgY29uc3QgVTY0ICogcHU2NHR3byk7Ci0rICAgIHZvaWQgICAgICAgICAgICB1NjRTdWJ0cmFjdChjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvdW50ZXI2NCAqcHU2NG91dCk7Ci0rICAgIHZvaWQgICAgICAgICAgICB1NjRJbmNyKHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvdXQsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUpOwotKyAgICB2b2lkICAgICAgICAgICAgdTY0VXBkYXRlQ291bnRlcihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b3V0LCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvKTsKLSsgICAgdm9pZCAgICAgICAgICAgIHU2NENvcHkoc3RydWN0IGNvdW50ZXI2NCAqcHU2NG9uZSwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqcHU2NHR3byk7Ci0gCi0tICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2M2NF9jaGVja19mb3JfMzJiaXRfd3JhcChVNjQgKm9sZF92YWwsIFU2NCAqbmV3X3ZhbCwKLSsgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrX2Zvcl8zMmJpdF93cmFwKHN0cnVjdCBjb3VudGVyNjQgKm9sZF92YWwsIHN0cnVjdCBjb3VudGVyNjQgKm5ld192YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWRqdXN0KTsKLSAgICAgTkVUU05NUF9JTVBPUlQKLSAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZShzdHJ1Y3QgY291bnRlcjY0ICpwcmV2X3ZhbCwKLUluZGV4OiBuZXQtc25tcC01LjcuMy9zbm1wbGliL2ludDY0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZXQtc25tcC01LjcuMy5vcmlnL3NubXBsaWIvaW50NjQuYwotKysrIG5ldC1zbm1wLTUuNy4zL3NubXBsaWIvaW50NjQuYwotQEAgLTMzLDcgKzMzLDcgQEAKLSAgKiBAcGFyYW1bb3V0XSBwdVIgICBSZW1haW5kZXIuCi0gICovCi0gdm9pZAotLWRpdkJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFEsIHVuc2lnbmVkIGludCAqcHVSKQotK2RpdkJ5MTAoc3RydWN0IGNvdW50ZXI2NCB1NjQsIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRRLCB1bnNpZ25lZCBpbnQgKnB1UikKLSB7Ci0gICAgIHVuc2lnbmVkIGxvbmcgICB1bFQ7Ci0gICAgIHVuc2lnbmVkIGxvbmcgICB1bFE7Ci1AQCAtODMsNyArODMsNyBAQCBkaXZCeTEwKFU2NCB1NjQsIFU2NCAqIHB1NjRRLCB1bnNpZ25lZCBpCi0gICogQHBhcmFtW291dF0gcHU2NFAgUHJvZHVjdC4KLSAgKi8KLSB2b2lkCi0tbXVsdEJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFApCi0rbXVsdEJ5MTAoc3RydWN0IGNvdW50ZXI2NCB1NjQsIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRQKQotIHsKLSAgICAgdW5zaWduZWQgbG9uZyAgIHVsVDsKLSAgICAgdW5zaWduZWQgbG9uZyAgIHVsUDsKLUBAIC0xMzAsNyArMTMwLDcgQEAgbXVsdEJ5MTAoVTY0IHU2NCwgVTY0ICogcHU2NFApCi0gICoKLSAgKi8KLSB2b2lkCi0taW5jckJ5VTE2KFU2NCAqIHB1NjQsIHVuc2lnbmVkIGludCB1MTYpCi0raW5jckJ5VTE2KHN0cnVjdCBjb3VudGVyNjQgKnB1NjQsIHVuc2lnbmVkIGludCB1MTYpCi0gewotICAgICBpbmNyQnlVMzIocHU2NCwgdTE2KTsKLSB9Ci1AQCAtMTQzLDcgKzE0Myw3IEBAIGluY3JCeVUxNihVNjQgKiBwdTY0LCB1bnNpZ25lZCBpbnQgdTE2KQotICAqCi0gICovCi0gdm9pZAotLWluY3JCeVUzMihVNjQgKiBwdTY0LCB1bnNpZ25lZCBpbnQgdTMyKQotK2luY3JCeVUzMihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0LCB1bnNpZ25lZCBpbnQgdTMyKQotIHsKLSAgICAgdWludDMyX3QgdG1wOwotIAotQEAgLTE2MSw3ICsxNjEsNyBAQCBpbmNyQnlVMzIoVTY0ICogcHU2NCwgdW5zaWduZWQgaW50IHUzMikKLSAgKiBAcGFyYW1bb3V0XSBwdTY0b3V0IHB1NjRvbmUgLSBwdTY0dHdvLgotICAqLwotIHZvaWQKLS11NjRTdWJ0cmFjdChjb25zdCBVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dHdvLCBVNjQgKiBwdTY0b3V0KQotK3U2NFN1YnRyYWN0KGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjR0d28sIHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvdXQpCi0gewotICAgICBpbnQgY2Fycnk7Ci0gCi1AQCAtMTc3LDcgKzE3Nyw3IEBAIHU2NFN1YnRyYWN0KGNvbnN0IFU2NCAqIHB1NjRvbmUsIGNvbnN0IFUKLSAgKiBAcGFyYW1baW4sb3V0XSBwdTY0b3V0IHB1NjRvdXQgKz0gcHU2NG9uZS4KLSAgKi8KLSB2b2lkCi0tdTY0SW5jcihVNjQgKiBwdTY0b3V0LCBjb25zdCBVNjQgKiBwdTY0b25lKQotK3U2NEluY3Ioc3RydWN0IGNvdW50ZXI2NCAqcHU2NG91dCwgY29uc3Qgc3RydWN0IGNvdW50ZXI2NCAqcHU2NG9uZSkKLSB7Ci0gICAgIHB1NjRvdXQtPmhpZ2ggPSAodWludDMyX3QpKHB1NjRvdXQtPmhpZ2ggKyBwdTY0b25lLT5oaWdoKTsKLSAgICAgaW5jckJ5VTMyKHB1NjRvdXQsIHB1NjRvbmUtPmxvdyk7Ci1AQCAtMTkxLDkgKzE5MSw5IEBAIHU2NEluY3IoVTY0ICogcHU2NG91dCwgY29uc3QgVTY0ICogcHU2NG8KLSAgKiBAcGFyYW1bb3V0XSBwdTY0b3V0IHB1NjRvdXQgKz0gKHB1NjRvbmUgLSBwdTY0dHdvKQotICAqLwotIHZvaWQKLS11NjRVcGRhdGVDb3VudGVyKFU2NCAqIHB1NjRvdXQsIGNvbnN0IFU2NCAqIHB1NjRvbmUsIGNvbnN0IFU2NCAqIHB1NjR0d28pCi0rdTY0VXBkYXRlQ291bnRlcihzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b3V0LCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0b25lLCBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0dHdvKQotIHsKLS0gICAgVTY0IHRtcDsKLSsgICAgc3RydWN0IGNvdW50ZXI2NCB0bXA7Ci0gCi0gICAgIHU2NFN1YnRyYWN0KHB1NjRvbmUsIHB1NjR0d28sICZ0bXApOwotICAgICB1NjRJbmNyKHB1NjRvdXQsICZ0bXApOwotQEAgLTIwOCw3ICsyMDgsNyBAQCBuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodTY0Y29weSwgbmV0c25tCi0gICogQHBhcmFtW291dF0gcHU2NG9uZSBXaGVyZSB0byBzdG9yZSB0aGUgY29weSAtICpwdTY0b25lID0gKnB1NjR0d28uCi0gICovCi0gdm9pZAotLXU2NENvcHkoVTY0ICogcHU2NG9uZSwgY29uc3QgVTY0ICogcHU2NHR3bykKLSt1NjRDb3B5KHN0cnVjdCBjb3VudGVyNjQgKnB1NjRvbmUsIGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjR0d28pCi0gewotICAgICAqcHU2NG9uZSA9ICpwdTY0dHdvOwotIH0KLUBAIC0yMjAsNyArMjIwLDcgQEAgdTY0Q29weShVNjQgKiBwdTY0b25lLCBjb25zdCBVNjQgKiBwdTY0dAotICAqIEBwYXJhbVtpbl0gcHU2NCBOdW1iZXIgdG8gYmUgemVyb2VkLgotICAqLwotIHZvaWQKLS16ZXJvVTY0KFU2NCAqIHB1NjQpCi0remVyb1U2NChzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQotIHsKLSAgICAgcHU2NC0+bG93ID0gMDsKLSAgICAgcHU2NC0+aGlnaCA9IDA7Ci1AQCAtMjMyLDcgKzIzMiw3IEBAIHplcm9VNjQoVTY0ICogcHU2NCkKLSAgKiBAcGFyYW1baW5dIHB1NjQgTnVtYmVyIHRvIGJlIGNoZWNrZWQuCi0gICovCi0gaW50Ci0taXNaZXJvVTY0KGNvbnN0IFU2NCAqIHB1NjQpCi0raXNaZXJvVTY0KGNvbnN0IHN0cnVjdCBjb3VudGVyNjQgKnB1NjQpCi0gewotICAgICByZXR1cm4gcHU2NC0+bG93ID09IDAgJiYgcHU2NC0+aGlnaCA9PSAwOwotIH0KLUBAIC0zOTAsMTAgKzM5MCwxMCBAQCBuZXRzbm1wX2M2NF9jaGVjazMyX2FuZF91cGRhdGUoc3RydWN0IGNvCi0gLyoqIENvbnZlcnQgYW4gdW5zaWduZWQgNjQtYml0IG51bWJlciB0byBBU0NJSS4gKi8KLSB2b2lkCi0gcHJpbnRVNjQoY2hhciAqYnVmLCAvKiBjaGFyIFtJNjRDSEFSU1orMV07ICovCi0tICAgICAgICAgY29uc3QgVTY0ICogcHU2NCkKLSsgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQotIHsKLS0gICAgVTY0ICAgICAgICAgICAgIHU2NGE7Ci0tICAgIFU2NCAgICAgICAgICAgICB1NjRiOwotKyAgICBzdHJ1Y3QgY291bnRlcjY0IHU2NGE7Ci0rICAgIHN0cnVjdCBjb3VudGVyNjQgdTY0YjsKLSAKLSAgICAgY2hhciAgICAgICAgICAgIGFSZXNbSTY0Q0hBUlNaICsgMV07Ci0gICAgIHVuc2lnbmVkIGludCAgICB1OwotQEAgLTQxNCw5ICs0MTQsOSBAQCBwcmludFU2NChjaGFyICpidWYsIC8qIGNoYXIgW0k2NENIQVJTWisxCi0gLyoqIENvbnZlcnQgYSBzaWduZWQgNjQtYml0IG51bWJlciB0byBBU0NJSS4gKi8KLSB2b2lkCi0gcHJpbnRJNjQoY2hhciAqYnVmLCAvKiBjaGFyIFtJNjRDSEFSU1orMV07ICovCi0tICAgICAgICAgY29uc3QgVTY0ICogcHU2NCkKLSsgICAgICAgICBjb25zdCBzdHJ1Y3QgY291bnRlcjY0ICpwdTY0KQotIHsKLS0gICAgVTY0ICAgICAgICAgICAgIHU2NGE7Ci0rICAgIHN0cnVjdCBjb3VudGVyNjQgdTY0YTsKLSAKLSAgICAgaWYgKHB1NjQtPmhpZ2ggJiAweDgwMDAwMDAwKSB7Ci0gICAgICAgICB1NjRhLmhpZ2ggPSAodWludDMyX3QpIH5wdTY0LT5oaWdoOwotQEAgLTQyOSwxMSArNDI5LDExIEBAIHByaW50STY0KGNoYXIgKmJ1ZiwgLyogY2hhciBbSTY0Q0hBUlNaKzEKLSAgICAgfQotIH0KLSAKLS0vKiogQ29udmVydCBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciBmcm9tIEFTQ0lJIHRvIFU2NC4gKi8KLSsvKiogQ29udmVydCBhIHNpZ25lZCA2NC1iaXQgaW50ZWdlciBmcm9tIEFTQ0lJIHRvIHN0cnVjdCBjb3VudGVyNjQuICovCi0gaW50Ci0tcmVhZDY0KFU2NCAqIGk2NCwgY29uc3QgY2hhciAqc3RyKQotK3JlYWQ2NChzdHJ1Y3QgY291bnRlcjY0ICppNjQsIGNvbnN0IGNoYXIgKnN0cikKLSB7Ci0tICAgIFU2NCAgICAgICAgICAgICBpNjRwOwotKyAgICBzdHJ1Y3QgY291bnRlcjY0IGk2NHA7Ci0gICAgIHVuc2lnbmVkIGludCAgICB1OwotICAgICBpbnQgICAgICAgICAgICAgc2lnbiA9IDA7Ci0gICAgIGludCAgICAgICAgICAgICBvayA9IDA7Ci1JbmRleDogbmV0LXNubXAtNS43LjMvc25tcGxpYi9yZWFkX2NvbmZpZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy9zbm1wbGliL3JlYWRfY29uZmlnLmMKLSsrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3JlYWRfY29uZmlnLmMKLUBAIC0yMjcwLDEwICsyMjcwLDEwIEBAIHJlYWRfY29uZmlnX3JlYWRfbWVtb3J5KGludCB0eXBlLCBjaGFyICoKLSAgICAgICAgIHJldHVybiByZWFkZnJvbTsKLSAKLSAgICAgY2FzZSBBU05fQ09VTlRFUjY0OgotLSAgICAgICAgaWYgKCpsZW4gPCBzaXplb2YoVTY0KSkKLSsgICAgICAgIGlmICgqbGVuIDwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKQotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICAgICAgKmxlbiA9IHNpemVvZihVNjQpOwotLSAgICAgICAgcmVhZDY0KChVNjQgKikgZGF0YXB0ciwgcmVhZGZyb20pOwotKyAgICAgICAgKmxlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSsgICAgICAgIHJlYWQ2NCgoc3RydWN0IGNvdW50ZXI2NCAqKSBkYXRhcHRyLCByZWFkZnJvbSk7Ci0gICAgICAgICByZWFkZnJvbSA9IHNraXBfdG9rZW4ocmVhZGZyb20pOwotICAgICAgICAgcmV0dXJuIHJlYWRmcm9tOwotICAgICB9Ci1JbmRleDogbmV0LXNubXAtNS43LjMvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDE1aW50NjRfY2xpYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTVpbnQ2NF9jbGliLmMKLSsrKyBuZXQtc25tcC01LjcuMy90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTVpbnQ2NF9jbGliLmMKLUBAIC0xLDQgKzEsNCBAQAotLS8qIEhFQURFUiBUZXN0aW5nIDY0LWJpdCBpbnRlZ2VyIG9wZXJhdGlvbnMgKFU2NCkuICovCi0rLyogSEVBREVSIFRlc3RpbmcgNjQtYml0IGludGVnZXIgb3BlcmF0aW9ucyAoc3RydWN0IGNvdW50ZXI2NCkuICovCi0gCi0gaW50IGksIGo7Ci0gY2hhciBidWZbMjJdOwotQEAgLTE1LDcgKzE1LDcgQEAgc3RhdGljIGNvbnN0IGludDY0X3QgaW50dmFsW10gPSB7Ci0gfTsKLSAKLSBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGludHZhbFswXSk7ICsraSkgewotLSAgICBVNjQgYSwgYjsKLSsgICAgc3RydWN0IGNvdW50ZXI2NCBhLCBiOwotICAgICBhLmxvdyA9ICh1aW50MzJfdClpbnR2YWxbaV07Ci0gICAgIGEuaGlnaCA9ICh1aW50MzJfdCkoaW50dmFsW2ldID4+IDMyKTsKLSAgICAgcHJpbnRJNjQoYnVmLCAmYSk7Ci1AQCAtMjcsNyArMjcsNyBAQCBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGluCi0gCi0gZm9yIChpID0gMDsgaSA8IHNpemVvZihpbnR2YWwpL3NpemVvZihpbnR2YWxbMF0pOyArK2kpIHsKLSAgICAgZm9yIChqID0gaTsgaiA8IHNpemVvZihpbnR2YWwpL3NpemVvZihpbnR2YWxbMF0pOyArK2opIHsKLS0gICAgICAgIFU2NCBhLCBiOwotKyAgICAgICAgc3RydWN0IGNvdW50ZXI2NCBhLCBiOwotICAgICAgICAgdWludDY0X3QgZDsKLSAgICAgICAgIGEubG93ID0gKHVpbnQzMl90KWludHZhbFtpXTsKLSAgICAgICAgIGEuaGlnaCA9ICh1aW50MzJfdCkoaW50dmFsW2ldID4+IDMyKTsKLUBAIC00Myw3ICs0Myw3IEBAIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW4KLSAgICAgICAgIAotIGZvciAoaSA9IDA7IGkgPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW50dmFsWzBdKTsgKytpKSB7Ci0gICAgIGZvciAoaiA9IGk7IGogPCBzaXplb2YoaW50dmFsKS9zaXplb2YoaW50dmFsWzBdKTsgKytqKSB7Ci0tICAgICAgICBVNjQgYSwgYiwgYzsKLSsgICAgICAgIHN0cnVjdCBjb3VudGVyNjQgYSwgYiwgYzsKLSAgICAgICAgIHVpbnQ2NF90IGQ7Ci0gICAgICAgICBhLmxvdyA9ICh1aW50MzJfdClpbnR2YWxbaV07Ci0gICAgICAgICBhLmhpZ2ggPSAodWludDMyX3QpKGludHZhbFtpXSA+PiAzMik7Ci1AQCAtNTgsNyArNTgsNyBAQCBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGludHZhbCkvc2l6ZW9mKGluCi0gfQotICAgICAgICAgCi0gewotLSAgICBVNjQgb2xkX3ZhbCwgbmV3X3ZhbDsKLSsgICAgc3RydWN0IGNvdW50ZXI2NCBvbGRfdmFsLCBuZXdfdmFsOwotICAgICBvbGRfdmFsLmxvdyA9IDc7Ci0gICAgIG9sZF92YWwuaGlnaCA9IDA7Ci0gICAgIG5ld192YWwgPSBvbGRfdmFsOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtY29uZmlnX29zX2hlYWRlcnMtRXJyb3ItRml4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtY29uZmlnX29zX2hlYWRlcnMtRXJyb3ItRml4LnBhdGNoCmluZGV4IDQ0MzU5YmUuLmJmYzU1YTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19oZWFkZXJzLUVycm9yLUZpeC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1jb25maWdfb3NfaGVhZGVycy1FcnJvci1GaXgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI2MWEyMjA5NmM3OWY4ZTZlZjdiMzg3NTE0YTc0ZDIwOGU0ZTU5NDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdhZTJjZThkYmYxYzU0ZDRlMmRiNGE1ZjQ5Mzk3YTIzOWJhYWRjNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBMaSB4aW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+CiBEYXRlOiBGcmksIDIxIEF1ZyAyMDE1IDE4OjIzOjEzICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ19vc19oZWFkZXJzOiBFcnJvciBGaXgKQEAgLTEzLDE1ICsxMywxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IExpIFhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogbmV0LXNubXAtNS43LjMvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZXQtc25tcC01LjcuMy5vcmlnL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCi0rKysgbmV0LXNubXAtNS43LjMvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKLUBAIC00ODQsOCArNDg0LDggQEAgdGhlbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKK2luZGV4IGFmOTk3NDYuLjgzYjJlMzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycworKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKK0BAIC00ODksOCArNDg5LDggQEAgdGhlbgogICAgICB1bnNldCBhY19jdl9oZWFkZXJfcGtnX2gKICAgICAgbmV0c25tcF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCiAgICAgIG5ldHNubXBfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19saWJzMi1FcnJvci1GaXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1jb25maWdfb3NfbGliczItRXJyb3ItRml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODY2YTk1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ19vc19saWJzMi1FcnJvci1GaXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGUyNGZjZDE0MGYzZjZkZDE4ZmQ4MzZiMTk3YzZkNGJiNzczZTUwZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/UmFmYT1DMz1BQmw9MjBDYXJyPUMzPUE5Pz0gPGZ1bm1hbkB2aWRlb2xhbi5vcmc+Ci1EYXRlOiBXZWQsIDQgTm92IDIwMTUgMTY6NDk6MzAgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlnX29zX2xpYnMyOiBFcnJvciBGaXgKLQotRVJST1I6IFRoaXMgYXV0b2NvbmYgbG9nIGluZGljYXRlcyBlcnJvcnMsIGl0IGxvb2tlZCBhdCBob3N0IGluY2x1ZGUKLWFuZC9vciBsaWJyYXJ5IHBhdGhzIHdoaWxlIGRldGVybWluaW5nIHN5c3RlbSBjYXBhYmlsaXRpZXMuCi0tLS0KLSBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczIgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCi1pbmRleCA0NzQ5MWUyLi5lMzY0N2Y5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCi0rKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKLUBAIC0yMjYsMTAgKzIyNiwxMCBAQCBpZiB0ZXN0ICJ4JHdpdGhfbmwiICE9ICJ4bm8iOyB0aGVuCi0gICAgIGNhc2UgJHRhcmdldF9vcyBpbgotICAgICBsaW51eCopICMgQ2hlY2sgZm9yIGxpYm5sIChsaW51eCkKLSAgICAgICAgIG5ldHNubXBfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotLSAgICAgICAgQ1BQRkxBR1M9Ii1JL3Vzci9pbmNsdWRlL2xpYm5sMyAkQ1BQRkxBR1MiCi0rICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTIgotICAgICAgICAgTkVUU05NUF9TRUFSQ0hfTElCUyhubF9jb25uZWN0LCBubC0zLAotICAgICAgICAgICAgIFtBQ19DSEVDS19IRUFERVJTKG5ldGxpbmsvbmV0bGluay5oKQotLSAgICAgICAgICAgIEVYVEVSTkFMX01JQkdST1VQX0lOQ0xVREVTPSIkRVhURVJOQUxfTUlCR1JPVVBfSU5DTFVERVMgLUkvdXNyL2luY2x1ZGUvbGlibmwzIl0sCi0rICAgICAgICAgICAgRVhURVJOQUxfTUlCR1JPVVBfSU5DTFVERVM9IiRFWFRFUk5BTF9NSUJHUk9VUF9JTkNMVURFUyJdLAotICAgICAgICAgICAgIFtDUFBGTEFHUz0iJG5ldHNubXBfc2F2ZV9DUFBGTEFHUyJdLCBbXSwgW10sIFtMTUlCTElCU10pCi0gICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9uZXRsaW5rX25ldGxpbmtfaCIgIT0geHllczsgdGhlbgotICAgICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMobmxfY29ubmVjdCwgbmwsIFsKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtY29uZmlndXJlLWZpeC1jaGVjay1mb3ItZW5hYmxlLXBlcmwtY2MtY2hlY2tzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtY29uZmlndXJlLWZpeC1jaGVjay1mb3ItZW5hYmxlLXBlcmwtY2MtY2hlY2tzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODdlOWVlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWNvbmZpZ3VyZS1maXgtY2hlY2stZm9yLWVuYWJsZS1wZXJsLWNjLWNoZWNrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYzYzMDRhM2U0Yjg0NDFmZjBhNjQ2NGMwZjFmNmM1MjI5MDkyZmEzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNjo0MDowMyArMDgwMAotU3ViamVjdDogW1BBVENIIDEvNF0gY29uZmlndXJlOiBmaXggY2hlY2sgZm9yIC0tZW5hYmxlLXBlcmwtY2MtY2hlY2tzCi0KLVRoaXMgcGF0Y2ggY29tZXMgZnJvbSBnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9uZXQtc25tcC9jb2RlLAotdGhlIGNvbW1pdCBpcyA4ZjQzMWQ0MTBiODAzNjAzZGM4MDlkODJlMDg5MzUwOTYxNWQ5YTExLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCi1pbmRleCAyM2Y4YzdlLi40NzVjODQzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KLSsrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCi1AQCAtODQsNyArODQsNyBAQCBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gCi0gICAgICMgICAgICAgV2hhdCBjb21waWxlciB3YXMgdXNlZCB0byBidWlsZCB0aGUgcGVybCBiaW5hcnk/Ci0gICAgICMKLS0gICAgaWYgdGVzdCAieGVuYWJsZV9wZXJsX2NjX2NoZWNrcyIgIT0gInhubyIgOyB0aGVuCi0rICAgIGlmIHRlc3QgIngkZW5hYmxlX3BlcmxfY2NfY2hlY2tzIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgY2NdKQotICAgICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICAgICBQRVJMQ0M9YCRteXBlcmwgLVY6Y2MgfCAkbXlwZXJsIC1uIC1lICdwcmludCBpZiAocy9eXHMqY2M9LihbLT1cd1xzXC9dKykuO1xzKi8kMS8pOydgCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWdldF9waWRfZnJvbV9pbm9kZS1JbmNsdWRlLWxpbWl0LmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1nZXRfcGlkX2Zyb21faW5vZGUtSW5jbHVkZS1saW1pdC5oLnBhdGNoCmluZGV4IDYwY2U4MDkuLmJmMTMzYjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLWdldF9waWRfZnJvbV9pbm9kZS1JbmNsdWRlLWxpbWl0LmgucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtZ2V0X3BpZF9mcm9tX2lub2RlLUluY2x1ZGUtbGltaXQuaC5wYXRjaApAQCAtMSwyMiArMSwyMyBAQAotRnJvbSA3MTM2ZDU5M2JhOTZiNjQ1MzcwNjk2MzdjMzI4YmM2NWUxYjY2YjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5OGM2ZWRiYTQ4MzViNTE1ZDkzMzU0MjQxMWQ4MDg3OTMyN2VlZTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjIgSnVsIDIwMTYgMTg6MzQ6MzkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gZ2V0X3BpZF9mcm9tX2lub2RlOiBJbmNsdWRlIGxpbWl0LmgKIAogUEFUSF9NQVggYW5kIE5BTUVfTUFYIGFyZSByZXF1aXJlZCBieSB0aGlzIGZpbGUKIAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQogIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCi1pbmRleCA4ZTE1N2FlLi5hNDk0ZWM3IDEwMDY0NAoraW5kZXggYWVlOTA3ZC4uN2FiYWVjMiAxMDA2NDQKIC0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKICsrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKLUBAIC01LDYgKzUsNyBAQAorQEAgLTYsNiArNiw3IEBACiAgI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICAKICAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTI0LDYgKzI1LDMgQEAKICAjaW5jbHVkZSA8c3RkaW8uaD4KICAjaWYgSEFWRV9TVERMSUJfSAogICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1yZW1vdmUtY29uZmlndXJlLW9wdGlvbnMtZnJvbS12ZXJzaW9uaW5mby5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLXJlbW92ZS1jb25maWd1cmUtb3B0aW9ucy1mcm9tLXZlcnNpb25pbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNTQwOTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1yZW1vdmUtY29uZmlndXJlLW9wdGlvbnMtZnJvbS12ZXJzaW9uaW5mby5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGY1OTIzOThiMWM2NTlmODQxNjhmNWM4NGY2M2FmM2I3MTQ1NGI4ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI4IFNlcCAyMDE4IDIyOjU5OjIzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBjb25maWd1cmUgb3B0aW9ucyBmcm9tIHZlcnNpb25pbmZvCisKK0NvbmZpZ3VyZSBvcHRpb25zIGNvbnRhaW5zIGhvc3QgYnVpbGQgcGF0aHMgd2hpY2ggYnJlYWtzCitiaW5hcnkgcmVwcm9kdWNpYmlsaXR5LgorCitJdCBpcyBubyBoYXJtIHRvIHJlbW92ZSBpdCBmcm9tIHZlcnNpb24gaW5mby4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcyBjb21waWxlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCitpbmRleCBhNTE1MWMxLi4xMTYwMzgyIDEwMDY0NAorLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYworKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYworQEAgLTkyLDcgKzkyLDcgQEAgdmFyX2V4dGVuc2libGVfdmVyc2lvbihzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisgICAgIGNoYXIgICAgICAgICAgICpjcHRyOworICAgICB0aW1lX3QgICAgICAgICAgY3VydGltZTsKKy0jaWZkZWYgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUworKyNpZiAwCisgICAgIHN0YXRpYyBjaGFyICAgICBjb25maWdfb3B0c1tdID0gTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUzsKKyAjZW5kaWYKKyAKK0BAIC0xMjYsNyArMTI2LDcgQEAgdmFyX2V4dGVuc2libGVfdmVyc2lvbihzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKKyAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOworICAgICBjYXNlIFZFUkNPTkZJRzoKKy0jaWZkZWYgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUworKyNpZiAwCisgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihjb25maWdfb3B0cyk7CisgICAgICAgICBpZiAoKnZhcl9sZW4gPiAxMDI0KQorICAgICAgICAgICAgICp2YXJfbGVuID0gMTAyNDsgICAgLyogbWliIGltcG9zZWQgcmVzdHJpY3Rpb24gKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtc25tcGxpYi1VRFBJUHY2LXRyYW5zcG9ydC1BZGQtYS1taXNzaW5nLXJldHVybi1zdGF0ZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLXNubXBsaWItVURQSVB2Ni10cmFuc3BvcnQtQWRkLWEtbWlzc2luZy1yZXR1cm4tc3RhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyN2FhMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtc25tcGxpYi1VRFBJUHY2LXRyYW5zcG9ydC1BZGQtYS1taXNzaW5nLXJldHVybi1zdGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMWVlNzIxMDJmYmU3MjJkMjMyZDc0YWJjNDY2MGE4YjEzNGNlYzhkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogU2F0LCAyMyBNYXkgMjAxNSAwNzozMjo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBzbm1wbGliLCBVRFBJUHY2IHRyYW5zcG9ydDogQWRkIGEgbWlzc2luZyByZXR1cm4gc3RhdGVtZW50Ci0KLURldGVjdGVkIGJ5IENvdmVyaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLUluZGV4OiBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMKLSsrKyBuZXQtc25tcC01LjcuMy9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwotQEAgLTMwNSw2ICszMDUsNyBAQCBuZXRzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOwotICAgICAgICAgICAgICAgICBuZXRzbm1wX3NvY2tldGJhc2VfY2xvc2UodCk7Ci0gICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIC8qCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1zbm1wbGliLWtleXRvb2xzLmMtRG9uLXQtY2hlY2stZm9yLXJldHVybi1mcm9tLUVWUF9NLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDEtc25tcGxpYi1rZXl0b29scy5jLURvbi10LWNoZWNrLWZvci1yZXR1cm4tZnJvbS1FVlBfTS5wYXRjaAppbmRleCBhZjI0MmZhLi43NzhiNDAxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1zbm1wbGliLWtleXRvb2xzLmMtRG9uLXQtY2hlY2stZm9yLXJldHVybi1mcm9tLUVWUF9NLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLXNubXBsaWIta2V5dG9vbHMuYy1Eb24tdC1jaGVjay1mb3ItcmV0dXJuLWZyb20tRVZQX00ucGF0Y2gKQEAgLTEsNyArMSw4IEBACi1Gcm9tIGQzMDI3YTIyN2JjMGY2MDNhNWI2NTBkMDFmOTdlZTFkZWM1MTViZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg5NTM4YTk3MzExOWYxYmY5NzZiM2E2ZGYxNTdlYTk0MGNmMzJlYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogRnJpLCAxOCBTZXAgMjAxNSAwMDoyODo0NSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBzbm1wbGliL2tleXRvb2xzLmM6IERvbid0IGNoZWNrIGZvciByZXR1cm4gZnJvbQorCiAgRVZQX01EX0NUWF9pbml0KCkKIAogRVZQX01EX0NUWF9pbml0KCkgQVBJIHJldHVybnMgdm9pZCwgaXQgZml4ZXMgZXJyb3JzIHdpdGggbmV3IGNvbXBpbGVycwpAQCAtOSwxNiArMTAsMTYgQEAKIHNubXBsaWIva2V5dG9vbHMuYzogSW4gZnVuY3Rpb24gJ2dlbmVyYXRlX0t1JzogZXJyb3I6IGludmFsaWQgdXNlIG9mIHZvaWQgZXhwcmVzc2lvbgogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTMxNy9dCiAgc25tcGxpYi9rZXl0b29scy5jIHwgMyArLS0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zbm1wbGliL2tleXRvb2xzLmMgYi9zbm1wbGliL2tleXRvb2xzLmMKLWluZGV4IDBjY2IzYTYuLjg4MGZjMTQgMTAwNjQ0CitpbmRleCAyY2YwMjQwLi41MGZkM2VhIDEwMDY0NAogLS0tIGEvc25tcGxpYi9rZXl0b29scy5jCiArKysgYi9zbm1wbGliL2tleXRvb2xzLmMKLUBAIC0xNTMsOCArMTUzLDcgQEAgZ2VuZXJhdGVfS3UoY29uc3Qgb2lkICogaGFzaHR5cGUsIHVfaW50IGhhc2h0eXBlX2xlbiwKK0BAIC0xODYsOCArMTg2LDcgQEAgZ2VuZXJhdGVfS3UoY29uc3Qgb2lkICogaGFzaHR5cGUsIHVfaW50IGhhc2h0eXBlX2xlbiwKICAgICAgY3R4ID0gRVZQX01EX0NUWF9jcmVhdGUoKTsKICAjZWxzZQogICAgICBjdHggPSBtYWxsb2Moc2l6ZW9mKCpjdHgpKTsKQEAgLTI2LDggKzI3LDUgQEAKIC0gICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICsgICAgRVZQX01EX0NUWF9pbml0KGN0eCk7CiAgI2VuZGlmCi0gI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1Ci0gICAgIGlmIChJU1RSQU5TRk9STShoYXNodHlwZSwgSE1BQ01ENUF1dGgpKSB7Ci0tLSAKLTIuNS4yCi0KKyAgICAgaWYgKCFFVlBfRGlnZXN0SW5pdChjdHgsIGhhc2hmbikpCisgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMi1jb25maWd1cmUtZml4LWEtY2MtY2hlY2staXNzdWUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMi1jb25maWd1cmUtZml4LWEtY2MtY2hlY2staXNzdWUucGF0Y2gKaW5kZXggOTk5OTc2ZC4uNDc4MjcxNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDItY29uZmlndXJlLWZpeC1hLWNjLWNoZWNrLWlzc3VlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAyLWNvbmZpZ3VyZS1maXgtYS1jYy1jaGVjay1pc3N1ZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOTRlN2U0OTY5YmM4NGM5NDVkZmVhMTJkNjdhMWUxMGY2MTk3Mzk0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTM2MzFkZjNkNjc0MzExM2UxY2Q2MzU3OTkyNWUxNWJjY2U4NTg2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNjo0NTozNCArMDgwMAogU3ViamVjdDogW1BBVENIIDIvNF0gY29uZmlndXJlOiBmaXggYSBjYyBjaGVjayBpc3N1ZS4KQEAgLTgsNiArOCw3IEBACiBjYW4ndCBnZXQgY29ycmV0bHkgdGhlIGNjJ3MgdmFsdWUuCiAKIFNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKQEAgLTI1LDYgKzI2LDMgQEAKICAgICAgICAgIGNoYW5nZXF1b3RlKFssIF0pCiAgICAgICAgICBpZiB0ZXN0ICJ4JFBFUkxDQyIgIT0gIngiIDsgdGhlbgogICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoWyRQRVJMQ0NdKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMy1DSEFOR0VTLUJVRy0yNzEyLUZpeC1QZXJsLW1vZHVsZS1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAzLUNIQU5HRVMtQlVHLTI3MTItRml4LVBlcmwtbW9kdWxlLWNvbXBpbGF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTUxMjM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAzLUNIQU5HRVMtQlVHLTI3MTItRml4LVBlcmwtbW9kdWxlLWNvbXBpbGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLUZyb20gZTU3ZmM4MDlhZDZhZTUyMjY3MGYzZGMxNTdhYWRkZTIwZDk2OGNhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNzowNTowMyArMDgwMAotU3ViamVjdDogW1BBVENIIDMvNF0gQ0hBTkdFUzogQlVHOiAyNzEyOiBGaXggUGVybCBtb2R1bGUgY29tcGlsYXRpb24KLQotQXZvaWQgdGhhdCBidWlsZGluZyB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGZhaWxzIGFzIGZvbGxvd3M6Ci0KLUVSUk9SIGZyb20gZXZhbHVhdGlvbiBvZiAvc291cmNlcy9uZXQtc25tcC01LjcuMy9wZXJsL0FTTi9NYWtlZmlsZS5QTDogQml6YXJyZSBcIGNvcHkgb2YgSEFTSCBpbiBsaXN0IGFzc2lnbm1lbnQgYXQgL3Vzci9saWIvcGVybDUvc2l0ZV9wZXJsLzUuMjQuMC9DYXJwLnBtIGxpbmVcIDIyOS4KLQotU2VlIGFsc28gaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9idWdzLzI3MTIvLgotCi1UaGlzIHBhdGNoIGNvbWVzIGZyb20gZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvbmV0LXNubXAvY29kZSwKLXRoZSBjb21taXQgaXMgNGU3OTM0NjFlOTZhMmI0ZmQ4MTE0MmFiMzEyZDA3NGQ1Yzg4NDFmYS4KLQotU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwZXJsL0FTTi9NYWtlZmlsZS5QTCAgICAgICAgICAgICAgICAgfCA0ICstLS0KLSBwZXJsL01ha2VmaWxlLlBMICAgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KLSBwZXJsL09JRC9NYWtlZmlsZS5QTCAgICAgICAgICAgICAgICAgfCA1ICstLS0tCi0gcGVybC9TTk1QL01ha2VmaWxlLlBMICAgICAgICAgICAgICAgIHwgNSArLS0tLQotIHBlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMICAgICAgICB8IDUgKy0tLS0KLSBwZXJsL2FnZW50L01ha2VmaWxlLlBMICAgICAgICAgICAgICAgfCA1ICstLS0tCi0gcGVybC9hZ2VudC9TdXBwb3J0L01ha2VmaWxlLlBMICAgICAgIHwgNSArLS0tLQotIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCB8IDUgKy0tLS0KLSBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwgICAgICAgfCA1ICstLS0tCi0gOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcGVybC9BU04vTWFrZWZpbGUuUEwgYi9wZXJsL0FTTi9NYWtlZmlsZS5QTAotaW5kZXggNDU3Njc4MS4uYzMzZDhiYSAxMDA2NDQKLS0tLSBhL3BlcmwvQVNOL01ha2VmaWxlLlBMCi0rKysgYi9wZXJsL0FTTi9NYWtlZmlsZS5QTAotQEAgLTcsOSArNyw3IEBAIG15ICRsaWJfdmVyc2lvbjsKLSAjIFNlZSBsaWIvRXh0VXRpbHMvTWFrZU1ha2VyLnBtIGZvciBkZXRhaWxzIG9mIGhvdyB0byBpbmZsdWVuY2UKLSAjIHRoZSBjb250ZW50cyBvZiB0aGUgTWFrZWZpbGUgdGhhdCBpcyB3cml0dGVuLgotIAotLSVNYWtlUGFyYW1zID0gSW5pdE1ha2VQYXJhbXMoKTsKLS0KLS1Xcml0ZU1ha2VmaWxlKCVNYWtlUGFyYW1zKTsKLStXcml0ZU1ha2VmaWxlKEluaXRNYWtlUGFyYW1zKCkpOwotIAotIENoZWNrX1ZlcnNpb24oKTsKLSAKLWRpZmYgLS1naXQgYS9wZXJsL01ha2VmaWxlLlBMIGIvcGVybC9NYWtlZmlsZS5QTAotaW5kZXggMzFmZGM0MC4uNDhhYmEyYSAxMDA2NDQKLS0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKLSsrKyBiL3BlcmwvTWFrZWZpbGUuUEwKLUBAIC0zLDkgKzMsNyBAQCB1c2UgQ29uZmlnOwotIHVzZSBHZXRvcHQ6Okxvbmc7Ci0gcmVxdWlyZSA1OwotIAotLSVNYWtlUGFyYW1zID0gSW5pdE1ha2VQYXJhbXMoKTsKLS0KLS1Xcml0ZU1ha2VmaWxlKCVNYWtlUGFyYW1zKTsKLStXcml0ZU1ha2VmaWxlKEluaXRNYWtlUGFyYW1zKCkpOwotIAotIHN1YiBJbml0TWFrZVBhcmFtcyB7Ci0gICAgICRuc2NvbmZpZz0ibmV0LXNubXAtY29uZmlnIjsgIyBpbiBwYXRoIGJ5IGRlZmF1bHQKLWRpZmYgLS1naXQgYS9wZXJsL09JRC9NYWtlZmlsZS5QTCBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCi1pbmRleCA2YmIxNjE2Li4yNTg5OTg1IDEwMDY0NAotLS0tIGEvcGVybC9PSUQvTWFrZWZpbGUuUEwKLSsrKyBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCi1AQCAtNiwxMSArNiw4IEBAIHJlcXVpcmUgNTsKLSB1c2UgQ29uZmlnOwotIHVzZSBHZXRvcHQ6Okxvbmc7Ci0gbXkgJGxpYl92ZXJzaW9uOwotLW15ICVNYWtlUGFyYW1zID0gKCk7Ci0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gQ2hlY2tfVmVyc2lvbigpOwotIAotZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9NYWtlZmlsZS5QTCBiL3BlcmwvU05NUC9NYWtlZmlsZS5QTAotaW5kZXggZTYxN2NiNy4uOGFhYjlhOSAxMDA2NDQKLS0tLSBhL3BlcmwvU05NUC9NYWtlZmlsZS5QTAotKysrIGIvcGVybC9TTk1QL01ha2VmaWxlLlBMCi1AQCAtMywxNSArMywxMiBAQCByZXF1aXJlIDU7Ci0gdXNlIENvbmZpZzsKLSB1c2UgR2V0b3B0OjpMb25nOwotIG15ICRsaWJfdmVyc2lvbjsKLS1teSAlTWFrZVBhcmFtcyA9ICgpOwotIG15ICRvcHRzOwotIAotICMgU2VlIGxpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gZm9yIGRldGFpbHMgb2YgaG93IHRvIGluZmx1ZW5jZQotICMgdGhlIGNvbnRlbnRzIG9mIHRoZSBNYWtlZmlsZSB0aGF0IGlzIHdyaXR0ZW4uCi0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gQ2hlY2tfVmVyc2lvbigpOwotIAotZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMIGIvcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwKLWluZGV4IDg3NGVlMjEuLjdlOWU1OGUgMTAwNjQ0Ci0tLS0gYS9wZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTAotKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwKLUBAIC0zLDExICszLDggQEAgcmVxdWlyZSA1OwotIHVzZSBDb25maWc7Ci0gdXNlIEdldG9wdDo6TG9uZzsKLSBteSAkbGliX3ZlcnNpb247Ci0tbXkgJU1ha2VQYXJhbXMgPSAoKTsKLSAKLS0lTWFrZVBhcmFtcyA9IEluaXRNYWtlUGFyYW1zKCk7Ci0tCi0tV3JpdGVNYWtlZmlsZSglTWFrZVBhcmFtcyk7Ci0rV3JpdGVNYWtlZmlsZShJbml0TWFrZVBhcmFtcygpKTsKLSAKLSBDaGVja19WZXJzaW9uKCk7Ci0gCi1kaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9NYWtlZmlsZS5QTCBiL3BlcmwvYWdlbnQvTWFrZWZpbGUuUEwKLWluZGV4IDRmN2JlZTMuLjAwM2MwZDEgMTAwNjQ0Ci0tLS0gYS9wZXJsL2FnZW50L01ha2VmaWxlLlBMCi0rKysgYi9wZXJsL2FnZW50L01ha2VmaWxlLlBMCi1AQCAtMywxMSArMyw4IEBAIHJlcXVpcmUgNTsKLSB1c2UgQ29uZmlnOwotIHVzZSBHZXRvcHQ6Okxvbmc7Ci0gbXkgJGxpYl92ZXJzaW9uOwotLW15ICVNYWtlUGFyYW1zID0gKCk7Ci0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gQ2hlY2tfVmVyc2lvbigpOwotIAotZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTCBiL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTAotaW5kZXggNDg4MTViNi4uMjMyNWUxMCAxMDA2NDQKLS0tLSBhL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTAotKysrIGIvcGVybC9hZ2VudC9TdXBwb3J0L01ha2VmaWxlLlBMCi1AQCAtMywxNCArMywxMSBAQCByZXF1aXJlIDU7Ci0gdXNlIENvbmZpZzsKLSB1c2UgR2V0b3B0OjpMb25nOwotIG15ICRsaWJfdmVyc2lvbjsKLS1teSAlTWFrZVBhcmFtcyA9ICgpOwotIAotICMgU2VlIGxpYi9FeHRVdGlscy9NYWtlTWFrZXIucG0gZm9yIGRldGFpbHMgb2YgaG93IHRvIGluZmx1ZW5jZQotICMgdGhlIGNvbnRlbnRzIG9mIHRoZSBNYWtlZmlsZSB0aGF0IGlzIHdyaXR0ZW4uCi0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gQ2hlY2tfVmVyc2lvbigpOwotIAotZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAotaW5kZXggZWQ2NDgzYS4uMzFjZmJlZSAxMDA2NDQKLS0tLSBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAotKysrIGIvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCi1AQCAtMywxMSArMyw4IEBAIHJlcXVpcmUgNTsKLSB1c2UgQ29uZmlnOwotIHVzZSBHZXRvcHQ6Okxvbmc7Ci0gbXkgJGxpYl92ZXJzaW9uOwotLW15ICVNYWtlUGFyYW1zID0gKCk7Ci0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gQ2hlY2tfVmVyc2lvbigpOwotIAotZGlmZiAtLWdpdCBhL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCBiL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAotaW5kZXggN2M2NzFiOC4uMDFjOGRkMCAxMDA2NDQKLS0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTAotKysrIGIvcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCi1AQCAtMywxMSArMyw4IEBAIHJlcXVpcmUgNTsKLSB1c2UgQ29uZmlnOwotIHVzZSBHZXRvcHQ6Okxvbmc7Ci0gbXkgJGxpYl92ZXJzaW9uOwotLW15ICVNYWtlUGFyYW1zID0gKCk7Ci0gCi0tJU1ha2VQYXJhbXMgPSBJbml0TWFrZVBhcmFtcygpOwotLQotLVdyaXRlTWFrZWZpbGUoJU1ha2VQYXJhbXMpOwotK1dyaXRlTWFrZWZpbGUoSW5pdE1ha2VQYXJhbXMoKSk7Ci0gCi0gCi0gc3ViIEluaXRNYWtlUGFyYW1zIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wLzAwMDQtY29uZmlndXJlLWZpeC1pbmNvcnJlY3QtdmFyaWFibGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwNC1jb25maWd1cmUtZml4LWluY29ycmVjdC12YXJpYWJsZS5wYXRjaAppbmRleCAyYjAzZjllLi5hM2Q4NGIyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwNC1jb25maWd1cmUtZml4LWluY29ycmVjdC12YXJpYWJsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwNC1jb25maWd1cmUtZml4LWluY29ycmVjdC12YXJpYWJsZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNGFkOThlZjEyNWViNGU3ZDdhMWE5MzE0NjA0MjAwMmY3ODI1NGQzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjNjNWNkNGRmN2NlOGU1NjM5Yzk5YjdiOTE4ZTQxZmI4OWU5NjllMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxNzoxMDoyMCArMDgwMAogU3ViamVjdDogW1BBVENIIDQvNF0gY29uZmlndXJlOiBmaXggaW5jb3JyZWN0IHZhcmlhYmxlCkBAIC04LDE1ICs4LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KICBNYWtlZmlsZS5pbiB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGNmY2RmNzMuLjE2NGRmMDUgMTAwNjQ0CitpbmRleCA5ZGJkZGUxLi41ZmRjNzYwIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTcxLDcgKzE3MSw3IEBAIE9USEVSQ0xFQU5UT0RPUz1wZXJsY2xlYW4gQFBZVEhPTkNMRUFOVEFSR1NAIGNsZWFuZmVhdHVyZXMgcGVybGNsZWFuZmVhdHVyZXMgcHl0CitAQCAtMTczLDcgKzE3Myw3IEBAIE9USEVSQ0xFQU5UT0RPUz1wZXJsY2xlYW4gQFBZVEhPTkNMRUFOVEFSR1NAIGNsZWFuZmVhdHVyZXMgcGVybGNsZWFuZmVhdHVyZXMgcHl0CiAgIwogICMgb3ZlcnJpZGUgTERfUlVOX1BBVEggdG8gYXZvaWQgZGVwZW5kZW5jaWVzIG9uIHRoZSBidWlsZCBkaXJlY3RvcnkKICBwZXJsbW9kdWxlczogcGVybG1ha2VmaWxlcyBzdWJkaXJzCkBAIC0yNSw2ICsyNiwzIEBACiAgICAgICAgICBpZiB0ZXN0ICQkPyAhPSAwIDsgdGhlbiBcCiAgICAgICAgICAgICBleGl0IDEgOyBcCiAgICAgICAgICBmaQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvZG9udC1yZXR1cm4taW5jb21wbGV0ZWx5LXBhcnNlZC12YXJiaW5kcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9kb250LXJldHVybi1pbmNvbXBsZXRlbHktcGFyc2VkLXZhcmJpbmRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmQwZjkzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9kb250LXJldHVybi1pbmNvbXBsZXRlbHktcGFyc2VkLXZhcmJpbmRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLUZyb20gNmI5M2U2ODZiZGI2YTkwOGQwMDU5NTYwODY0NmEwNTUyN2E1MzI2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIHhpbiA8bGl4aW4uZm5zdEBjbi5mdWppdHN1LmNvbT4KLURhdGU6IEZyaSwgMjEgQXVnIDIwMTUgMTI6Mzk6MTIgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGhlIHNubXBfcGR1X3BhcnNlKCkgZnVuY3Rpb24gY291bGQgbGVhdmUgaW5jb21wbGV0ZWx5IHBhcnNlZAotIHZhckJpbmQgdmFyaWFibGVzIGluIHRoZSBsaXN0IG9mIHZhcmlhYmxlcyBpbiBjYXNlIHRoZSBwYXJzaW5nIG9mIHRoZSBTTk1QCi0gUERVIGZhaWxlZC4gSWYgbGF0ZXIgcHJvY2Vzc2luZyB0cmllcyB0byBvcGVyYXRlIG9uIHRoZSBzdGFsZSBhbmQKLSBpbmNvbXBsZXRlbHkgcHJvY2Vzc2VkIHZhckJpbmQgKGUuZy4gd2hlbiBwcmludGluZyB0aGUgdmFyaWFibGVzKSwgdGhpcyBjYW4KLSBsZWFkIHRvIGUuZy4gY3Jhc2hlcyBvciwgcG9zc2libHksIGV4ZWN1dGlvbiBvZiBhcmJpdHJhcnkgY29kZQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtuZXQtc25tcF0KLQotV3JpdHRlbi1ieTogUm9iZXJ0IFN0b3J5Ci0tLS0KLSBzbm1wbGliL3NubXBfYXBpLmMgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9hcGkuYyBiL3NubXBsaWIvc25tcF9hcGkuYwotaW5kZXggMTkxZGViZi4uMTVhMmQzOSAxMDA2NDQKLS0tLSBhL3NubXBsaWIvc25tcF9hcGkuYwotKysrIGIvc25tcGxpYi9zbm1wX2FwaS5jCi1AQCAtNDM1MCwxMCArNDM1MCw5IEBAIHNubXBfcGR1X3BhcnNlKG5ldHNubXBfcGR1ICpwZHUsIHVfY2hhciAqIGRhdGEsIHNpemVfdCAqIGxlbmd0aCkKLSAgICAgdV9jaGFyICAgICAgICAgIHR5cGU7Ci0gICAgIHVfY2hhciAgICAgICAgICBtc2dfdHlwZTsKLSAgICAgdV9jaGFyICAgICAgICAgKnZhcl92YWw7Ci0tICAgIGludCAgICAgICAgICAgICBiYWR0eXBlID0gMDsKLSAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICAgc2l6ZV90ICAgICAgICAgIGZvdXI7Ci0tICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdnAgPSBOVUxMOwotKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZwID0gTlVMTCwgKnZwbGFzdCA9IE5VTEw7Ci0gICAgIG9pZCAgICAgICAgICAgICBvYmppZFtNQVhfT0lEX0xFTl07Ci0gICAgIHVfY2hhciAgICAgICAgICpwOwotIAotQEAgLTQ0OTMsMzEgKzQ0OTIsMTcgQEAgc25tcF9wZHVfcGFyc2UobmV0c25tcF9wZHUgKnBkdSwgdV9jaGFyICogZGF0YSwgc2l6ZV90ICogbGVuZ3RoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBU05fU0VRVUVOQ0UgfCBBU05fQ09OU1RSVUNUT1IpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YXJiaW5kcyIpOwotICAgICBpZiAoZGF0YSA9PSBOVUxMKQotLSAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgZ290byBmYWlsOwotIAotICAgICAvKgotICAgICAgKiBnZXQgZWFjaCB2YXJCaW5kIHNlcXVlbmNlIAotICAgICAgKi8KLSAgICAgd2hpbGUgKChpbnQpICpsZW5ndGggPiAwKSB7Ci0tICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZwdGVtcDsKLS0gICAgICAgIHZwdGVtcCA9IChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKikgbWFsbG9jKHNpemVvZigqdnB0ZW1wKSk7Ci0tICAgICAgICBpZiAoTlVMTCA9PSB2cHRlbXApIHsKLS0gICAgICAgICAgICByZXR1cm4gLTE7Ci0tICAgICAgICB9Ci0tICAgICAgICBpZiAoTlVMTCA9PSB2cCkgewotLSAgICAgICAgICAgIHBkdS0+dmFyaWFibGVzID0gdnB0ZW1wOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICB2cC0+bmV4dF92YXJpYWJsZSA9IHZwdGVtcDsKLS0gICAgICAgIH0KLS0gICAgICAgIHZwID0gdnB0ZW1wOwotKyAgICAgICAgdnAgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdmFyaWFibGVfbGlzdCk7Ci0rICAgICAgICBpZiAoTlVMTCA9PSB2cCkKLSsgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gCi0tICAgICAgICB2cC0+bmV4dF92YXJpYWJsZSA9IE5VTEw7Ci0tICAgICAgICB2cC0+dmFsLnN0cmluZyA9IE5VTEw7Ci0gICAgICAgICB2cC0+bmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKLS0gICAgICAgIHZwLT5uYW1lID0gTlVMTDsKLS0gICAgICAgIHZwLT5pbmRleCA9IDA7Ci0tICAgICAgICB2cC0+ZGF0YSA9IE5VTEw7Ci0tICAgICAgICB2cC0+ZGF0YUZyZWVIb29rID0gTlVMTDsKLSAgICAgICAgIERFQlVHRFVNUFNFQ1RJT04oInJlY3YiLCAiVmFyQmluZCIpOwotICAgICAgICAgZGF0YSA9IHNubXBfcGFyc2VfdmFyX29wKGRhdGEsIG9iamlkLCAmdnAtPm5hbWVfbGVuZ3RoLCAmdnAtPnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwLT52YWxfbGVuLCAmdmFyX3ZhbCwgbGVuZ3RoKTsKLUBAIC00NjA0LDcgKzQ1ODksNyBAQCBzbm1wX3BkdV9wYXJzZShuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgKiBsZW5ndGgpCi0gICAgICAgICAgICAgICAgIHZwLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKSBtYWxsb2ModnAtPnZhbF9sZW4pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpZiAodnAtPnZhbC5zdHJpbmcgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV9zdHJpbmcodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCB2cC0+dmFsLnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cC0+dmFsX2xlbik7Ci1AQCAtNDYxOSw3ICs0NjA0LDcgQEAgc25tcF9wZHVfcGFyc2UobmV0c25tcF9wZHUgKnBkdSwgdV9jaGFyICogZGF0YSwgc2l6ZV90ICogbGVuZ3RoKQotICAgICAgICAgICAgIHZwLT52YWxfbGVuICo9IHNpemVvZihvaWQpOwotICAgICAgICAgICAgIHZwLT52YWwub2JqaWQgPSAob2lkICopIG1hbGxvYyh2cC0+dmFsX2xlbik7Ci0gICAgICAgICAgICAgaWYgKHZwLT52YWwub2JqaWQgPT0gTlVMTCkgewotLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbWVtbW92ZSh2cC0+dmFsLm9iamlkLCBvYmppZCwgdnAtPnZhbF9sZW4pOwotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTQ2MzEsNyArNDYxNiw3IEBAIHNubXBfcGR1X3BhcnNlKG5ldHNubXBfcGR1ICpwZHUsIHVfY2hhciAqIGRhdGEsIHNpemVfdCAqIGxlbmd0aCkKLSAgICAgICAgIGNhc2UgQVNOX0JJVF9TVFI6Ci0gICAgICAgICAgICAgdnAtPnZhbC5iaXRzdHJpbmcgPSAodV9jaGFyICopIG1hbGxvYyh2cC0+dmFsX2xlbik7Ci0gICAgICAgICAgICAgaWYgKHZwLT52YWwuYml0c3RyaW5nID09IE5VTEwpIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHAgPSBhc25fcGFyc2VfYml0c3RyaW5nKHZhcl92YWwsICZsZW4sICZ2cC0+dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT52YWwuYml0c3RyaW5nLCAmdnAtPnZhbF9sZW4pOwotQEAgLTQ2NDAsMTIgKzQ2MjUsMzAgQEAgc25tcF9wZHVfcGFyc2UobmV0c25tcF9wZHUgKnBkdSwgdV9jaGFyICogZGF0YSwgc2l6ZV90ICogbGVuZ3RoKQotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiYmFkIHR5cGUgcmV0dXJuZWQgKCV4KVxuIiwgdnAtPnR5cGUpOwotLSAgICAgICAgICAgIGJhZHR5cGUgPSAtMTsKLSsgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBERUJVR0lOREVOVEFERCgtNCk7Ci0rCi0rICAgICAgICBpZiAoTlVMTCA9PSB2cGxhc3QpIHsKLSsgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcyA9IHZwOwotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICB2cGxhc3QtPm5leHRfdmFyaWFibGUgPSB2cDsKLSsgICAgICAgIH0KLSsgICAgICAgIHZwbGFzdCA9IHZwOwotKyAgICAgICAgdnAgPSBOVUxMOwotKwotICAgICB9Ci0tICAgIHJldHVybiBiYWR0eXBlOwotKyAgICByZXR1cm4gMDsKLSsKLSsgIGZhaWw6Ci0rICAgIERFQlVHTVNHVEwoKCJyZWN2IiwgImVycm9yIHdoaWxlIHBhcnNpbmcgVmFyQmluZExpc3RcbiIpKTsKLSsgICAgLyoqIGlmIHdlIHdlcmUgcGFyc2luZyBhIHZhciwgcmVtb3ZlIGl0IGZyb20gdGhlIHBkdSBhbmQgZnJlZSBpdCAqLwotKyAgICBpZiAodnApCi0rICAgICAgICBzbm1wX2ZyZWVfdmFyKHZwKTsKLSsKLSsgICAgcmV0dXJuIC0xOwotKwotIH0KLSAKLSAvKgotLS0gCi0xLjguNC4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9maXgtbGlidG9vbC1maW5pc2gucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvZml4LWxpYnRvb2wtZmluaXNoLnBhdGNoCmluZGV4IGQyOWJlMzMuLmZjM2FjMmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9maXgtbGlidG9vbC1maW5pc2gucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL2ZpeC1saWJ0b29sLWZpbmlzaC5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMGJlY2I0ODQzYTQwOTEwZDVlYzlhYTExOTY5ZDQ5MDVhMjIwMzdjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJSb3kuTGkiIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNiBKYW4gMjAxNSAxNDoxNDowMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZXQtc25tcDogZml4ICJsaWJ0b29sIC0tZmluaXNoIgorCiBMSUJfTERDT05GSUdfQ01EIGZhaWxlZCBzaW5jZSBpdCBpcyB1c2luZyBhIGhvc3QgZGlyICQobGliZGlyKQogd2hpY2ggaXMgL3Vzci9saWI2NCBkb2VzIG5vdCBleGlzdCBvbiBob3N0IHdoZW4gY29tcGlsZSA2NGJpdAogaW1hZ2UuCkBAIC05LDEyICsxNCwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjcm9zcyBjb21waWxlIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKIC0tLQotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL01ha2VmaWxlLnRvcAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvTWFrZWZpbGUudG9wCi0rKysgbmV0LXNubXAtNS43LjMvTWFrZWZpbGUudG9wCi1AQCAtODcsNyArODcsNyBAQCBMSUJSRVZJU0lPTiA9IDMKKyBNYWtlZmlsZS50b3AgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS50b3AgYi9NYWtlZmlsZS50b3AKK2luZGV4IDVkNGY5YmMuLmQwZWQzMWMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS50b3AKKysrKyBiL01ha2VmaWxlLnRvcAorQEAgLTg5LDcgKzg5LDcgQEAgTElCUkVWSVNJT04gPSAwCiAgTElCX0xEX0NNRCAgICAgID0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKExJTktDQykgJChDRkxBR1MpIC1ycGF0aCAkKGxpYmRpcikgLXZlcnNpb24taW5mbyAkKExJQkNVUlJFTlQpOiQoTElCUkVWSVNJT04pOiQoTElCQUdFKSAtbwogIExJQl9FWFRFTlNJT04gICA9IGxhCiAgTElCX1ZFUlNJT04gICAgID0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKaW5kZXggZmJkMjc0Yi4uNWNiYjYwZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU0N2M2MGRjN2Y2NDk5NTlmNjNlNTZiYzYyMzU1ZGU0YmRmZDczZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ2MTljZDlmYzAxZjMzNmZmMGZmNTViMThmOTExMjc4OWViNGQ4NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJpYW4gRmxvcmVhIDxtYXJpYW4uZmxvcmVhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDIwIEp1bCAyMDE3IDE2OjU1OjI0ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG5ldCBzbm1wOiBmaXggZW5naW5lQm9vdHMgdmFsdWUgb24gU0lHSFVQCkBAIC03LDE2ICs3LDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBGbG9yZWEgPG1hcmlhbi5mbG9yZWFAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYWdlbnQvc25tcGQuYyAgICB8IDEgKwogIHNubXBsaWIvc25tcHYzLmMgfCA0ICsrLS0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IG5ldC1zbm1wLTUuNy4zL2FnZW50L3NubXBkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZXQtc25tcC01LjcuMy5vcmlnL2FnZW50L3NubXBkLmMKLSsrKyBuZXQtc25tcC01LjcuMy9hZ2VudC9zbm1wZC5jCi1AQCAtMTI1Myw2ICsxMjUzLDcgQEAgcmVjZWl2ZSh2b2lkKQorZGlmZiAtLWdpdCBhL2FnZW50L3NubXBkLmMgYi9hZ2VudC9zbm1wZC5jCitpbmRleCA2NTY2MzU0Li5lYjBkNGI0IDEwMDY0NAorLS0tIGEvYWdlbnQvc25tcGQuYworKysrIGIvYWdlbnQvc25tcGQuYworQEAgLTEyMzksNiArMTIzOSw3IEBAIHJlY2VpdmUodm9pZCkKICAJICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCiAgCQkgICAgIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7CiAgICAgICAgICAgICAgdXBkYXRlX2NvbmZpZygpOwpAQCAtMjQsMTEgKzI1LDExIEBACiAgICAgICAgICAgICAgc2VuZF9lYXN5X3RyYXAoU05NUF9UUkFQX0VOVEVSUFJJU0VTUEVDSUZJQywgMyk7CiAgI2lmIEhBVkVfU0lHSE9MRAogICAgICAgICAgICAgIHNpZ3JlbHNlKFNJR0hVUCk7Ci1JbmRleDogbmV0LXNubXAtNS43LjMvc25tcGxpYi9zbm1wdjMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldC1zbm1wLTUuNy4zLm9yaWcvc25tcGxpYi9zbm1wdjMuYwotKysrIG5ldC1zbm1wLTUuNy4zL3NubXBsaWIvc25tcHYzLmMKLUBAIC05ODQsOSArOTg0LDkgQEAgaW5pdF9zbm1wdjNfcG9zdF9jb25maWcoaW50IG1ham9yaWQsIGludAorZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHYzLmMgYi9zbm1wbGliL3NubXB2My5jCitpbmRleCA3NzFiYTNiLi41ZGUwNWU3IDEwMDY0NAorLS0tIGEvc25tcGxpYi9zbm1wdjMuYworKysrIGIvc25tcGxpYi9zbm1wdjMuYworQEAgLTEwNjAsOSArMTA2MCw5IEBAIGluaXRfc25tcHYzX3Bvc3RfY29uZmlnKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAogICAgICAvKgogICAgICAgKiBpZiBvdXIgZW5naW5lSUQgaGFzIGNoYW5nZWQgYXQgYWxsLCB0aGUgYm9vdHMgcmVjb3JkIG11c3QgYmUgc2V0IHRvIDEgCiAgICAgICAqLwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLWFnZW50eC1jcmFzaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1hZ2VudHgtY3Jhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZWQ4OTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLWFnZW50eC1jcmFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLURlc2NyaXB0aW9uOiBmaXggc25tcGQgY3Jhc2ggdmlhIEFnZW50WCBjb25uZWN0aW9uCi0KLSB0YWtlbiBmcm9tIEZlZG9yYSwgbmV0LXNubXAtNS43LWFnZW50eC1jcmFzaC5wYXRjaAotCi1iejcyOTczOCAtIG5ldC1zbm1wIGR1bXBzIGNvcmUgaW4gbmV0c25tcF9vaWRfZmluZF9wcmVmaXgKLWJ6MTAzODAxMSAtIG5ldC1zbm1wOiBzbm1wZCBjcmFzaGVzL2hhbmdzIHdoZW4gQWdlbnRYIHN1YmFnZW50IHRpbWVzLW91dAotCi1jb21taXQgZjkzMDRjODNmNzYyMDJkYjBlNjg0MjY5Y2ExYWYzMmU0M2NkOWRiNAotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgNyAxNDo1Mzo0NCAyMDEyICswMTAwCi0KLSAgICBDSEFOR0VTOiBQQVRDSCAxNjMzNjcwOiBmaXhlZCBzbm1wZCBjcmFzaGluZyB3aGVuIGFuIEFnZW50WCBzdWJhZ2VudAotICAgIGRpc2Nvbm5lY3QgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nIG9mIGEgcmVxdWVzdC4KLQotICAgIEkgZml4ZWQgYWxzbyB0aGUgbWVtb3J5IGxlYWsgcmVwb3J0ZWQgaW4gdGhlIHRyYWNrZXIgY29tbWVudHMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWmh1IFlhbmp1biA8eWFuanVuLnpodUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICAgICAgIHwgNSArKysrKwotIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyB8IDkgKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCi1pbmRleCBjNDJhNDJhLi5iYWVlYmFmIDEwMDY0NAotLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCi0rKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKLUBAIC0yMTksNiArMjE5LDkgQEAgYWdlbnR4X2dvdF9yZXNwb25zZShpbnQgb3BlcmF0aW9uLAotICAgICBpZiAoIWNhY2hlKSB7Ci0gICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJyZXNwb25zZSB0b28gbGF0ZSBvbiBzZXNzaW9uICU4cFxuIiwKLSAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24pKTsKLSsgICAgICAgIC8qIHJlc3BvbnNlIGlzIHRvbyBsYXRlLCBmcmVlIHRoZSBjYWNoZSAqLwotKyAgICAgICAgaWYgKG1hZ2ljKQotKyAgICAgICAgICAgIG5ldHNubXBfZnJlZV9kZWxlZ2F0ZWRfY2FjaGUoKG5ldHNubXBfZGVsZWdhdGVkX2NhY2hlKikgbWFnaWMpOwotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgcmVxdWVzdHMgPSBjYWNoZS0+cmVxdWVzdHM7Ci1AQCAtNjA2LDYgKzYwOSw4IEBAIGFnZW50eF9tYXN0ZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICByZXN1bHQgPSBzbm1wX2FzeW5jX3NlbmQoYXhfc2Vzc2lvbiwgcGR1LCBhZ2VudHhfZ290X3Jlc3BvbnNlLCBjYl9kYXRhKTsKLSAgICAgaWYgKHJlc3VsdCA9PSAwKSB7Ci0gICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0rICAgICAgICBpZiAoY2JfZGF0YSkKLSsgICAgICAgICAgICBuZXRzbm1wX2ZyZWVfZGVsZWdhdGVkX2NhY2hlKChuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZSopIGNiX2RhdGEpOwotICAgICB9Ci0gCi0gICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwotaW5kZXggZjE2ZjM5Mi4uYjg0Yjg1ZSAxMDA2NDQKLS0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwotKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCi1AQCAtMTMzLDExICsxMzMsMTYgQEAgY2xvc2VfYWdlbnR4X3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwgaW50IHNlc3NpZCkKLSAgICAgICAgICAqIHJlcXVlc3RzLCBzbyB0aGF0IHRoZSBkZWxlZ2F0ZWQgcmVxdWVzdCB3aWxsIGJlIGNvbXBsZXRlZCBhbmQKLSAgICAgICAgICAqIGZ1cnRoZXIgcmVxdWVzdHMgY2FuIGJlIHByb2Nlc3NlZAotICAgICAgICAgICovCi0tICAgICAgICBuZXRzbm1wX3JlbW92ZV9kZWxlZ2F0ZWRfcmVxdWVzdHNfZm9yX3Nlc3Npb24oc2Vzc2lvbik7Ci0rCXdoaWxlIChuZXRzbm1wX3JlbW92ZV9kZWxlZ2F0ZWRfcmVxdWVzdHNfZm9yX3Nlc3Npb24oc2Vzc2lvbikpIHsKLSsJCURFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIkNvbnRpbnVlIHJlbW92aW5nIGRlbGVnYXRlZCByZXFlc3RzXG4iKSk7Ci0rCX0KLSsKLSAgICAgICAgIGlmIChzZXNzaW9uLT5zdWJzZXNzaW9uICE9IE5VTEwpIHsKLSAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnN1YnNlc3Npb24gPSBzZXNzaW9uLT5zdWJzZXNzaW9uOwotICAgICAgICAgICAgIGZvcig7IHN1YnNlc3Npb247IHN1YnNlc3Npb24gPSBzdWJzZXNzaW9uLT5uZXh0KSB7Ci0tICAgICAgICAgICAgICAgIG5ldHNubXBfcmVtb3ZlX2RlbGVnYXRlZF9yZXF1ZXN0c19mb3Jfc2Vzc2lvbihzdWJzZXNzaW9uKTsKLSsgICAgICAgICAgICAgICAgd2hpbGUgKG5ldHNubXBfcmVtb3ZlX2RlbGVnYXRlZF9yZXF1ZXN0c19mb3Jfc2Vzc2lvbihzdWJzZXNzaW9uKSkgewotKwkJCURFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIkNvbnRpbnVlIHJlbW92aW5nIGRlbGVnYXRlZCBzdWJzZXNzaW9uIHJlcWVzdHNcbiIpKTsKLSsJCX0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtZml4LWZvci1kaXNhYmxlLWRlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoCmluZGV4IDI1ZWI5YzkuLjRjZDhmZDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC1maXgtZm9yLWRpc2FibGUtZGVzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyNzBlOTUyZjU4YTdlNWRkZWFiZTVhMTVlM2RkYWFhZGY0MDAxN2QwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwNjg5NTJjMGUwY2RkYTVhOTEyNTBiOTFjNWZjYzliODViNDNkYWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjIgSnVuIDIwMTcgMTA6MjU6MDggKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbmV0LXNubXA6IGZpeCBmb3IgLS1kaXNhYmxlLWRlcwpAQCAtOSwxNSArOSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW25ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNubXBsaWIvc2NhcGkuYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zbm1wbGliL3NjYXBpLmMgYi9zbm1wbGliL3NjYXBpLmMKLWluZGV4IDE2YWM4MjkuLjI3MTY4NGIgMTAwNjQ0CitpbmRleCA4YWQxZDcwLi40M2NhZGRmIDEwMDY0NAogLS0tIGEvc25tcGxpYi9zY2FwaS5jCiArKysgYi9zbm1wbGliL3NjYXBpLmMKLUBAIC03OSw3ICs3OSw5IEBAIG5ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc2NhcGksIHVzbV9zdXBwb3J0KQorQEAgLTg0LDcgKzg0LDkgQEAgbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9zY2FwaSwgdXNtX3N1cHBvcnQpCiAgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgogICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgogICNpbmNsdWRlIDxvcGVuc3NsL3JhbmQuaD4KQEAgLTI3LDYgKzI4LDMgQEAKICAjaWZkZWYgSEFWRV9BRVMKICAjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4KICAjZW5kaWYKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvbmV0LXNubXAtdGVzdGluZy1hZGQtdGhlLW91dHB1dC1mb3JtYXQtZm9yLXB0ZXN0LnBhdGNoCmluZGV4IDhmODMzNmEuLjdjYmFmMGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wL25ldC1zbm1wLXRlc3RpbmctYWRkLXRoZS1vdXRwdXQtZm9ybWF0LWZvci1wdGVzdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNGJiNDAyNGIzOTVmMTlkMzZhYjM1NjllMjc3M2VhODBkOGNjNTI2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODI3ZmUzYjAyNTNhYWIzMzQ3MjgyOGY0MGFkMDU5MzRjYzAyNjFiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDE0IEphbiAyMDE1IDE1OjEwOjA2ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHRlc3Rpbmc6IGFkZCB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgcHRlc3QKQEAgLTYsMTUgKzYsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0aW5nL1JVTlRFU1RTIHwgICAgNCArKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBuZXQtc25tcC01LjcuMy90ZXN0aW5nL1JVTlRFU1RTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0LXNubXAtNS43LjMub3JpZy90ZXN0aW5nL1JVTlRFU1RTCi0rKysgbmV0LXNubXAtNS43LjMvdGVzdGluZy9SVU5URVNUUwotQEAgLTI5LDEzICsyOSwxNyBAQCBmYWlsZWRfY291bnQ9MAorLS0tCisgdGVzdGluZy9SVU5URVNUUyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RpbmcvUlVOVEVTVFMgYi90ZXN0aW5nL1JVTlRFU1RTCitpbmRleCA2NzE1ODMxLi5hMmI2ZmI4IDEwMDc1NQorLS0tIGEvdGVzdGluZy9SVU5URVNUUworKysrIGIvdGVzdGluZy9SVU5URVNUUworQEAgLTE3LDEzICsxNywxNyBAQCBmYWlsZWRfY291bnQ9MAogIHJtIC1mIGZhaWxlZF90ZXN0cwogIGZvciBpIGluICIke3NyY2Rpcn0iL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVCokMSo7IGRvCiAgICAgIGVjaG8gIlJVTk5JTkcgJGkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlYTBhNTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLVNVTU1BUlkgPSAiVmFyaW91cyB0b29scyByZWxhdGluZyB0byB0aGUgU2ltcGxlIE5ldHdvcmsgTWFuYWdlbWVudCBQcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0LXNubXAub3JnLyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJCU0QiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MztlbmRsaW5lPTg7bWQ1PTdmN2YwMGJhNjM5YWM4ZThkZWI1YTYyMmVhMjQ2MzRlIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlibmwgcGNpdXRpbHMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L25ldC1zbm1wL25ldC1zbm1wLSR7UFZ9LnppcCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3NubXBkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc25tcHRyYXBkLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzdGVtZC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NubXBkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc25tcHRyYXBkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmV0LXNubXAtYWRkLWtub2Itd2hldGhlci1ubGlzdC5oLWFyZS1jaGVja2VkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1saWJ0b29sLWZpbmlzaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtcmV0dXJuLWluY29tcGxldGVseS1wYXJzZWQtdmFyYmluZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWdfb3NfaGVhZGVycy1FcnJvci1GaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWdfb3NfbGliczItRXJyb3ItRml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc25tcGxpYi1rZXl0b29scy5jLURvbi10LWNoZWNrLWZvci1yZXR1cm4tZnJvbS1FVlBfTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC1hZ2VudHgtY3Jhc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZXRfcGlkX2Zyb21faW5vZGUtSW5jbHVkZS1saW1pdC5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWEyNTg0LUZpeC1zbm1wdHJhcC10by11c2UtY2xpZW50YWRkci1mcm9tLXNubXAuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNubXBsaWItVURQSVB2Ni10cmFuc3BvcnQtQWRkLWEtbWlzc2luZy1yZXR1cm4tc3RhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtZml4LWNoZWNrLWZvci1lbmFibGUtcGVybC1jYy1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtZml4LWEtY2MtY2hlY2staXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1DSEFOR0VTLUJVRy0yNzEyLUZpeC1QZXJsLW1vZHVsZS1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS1maXgtaW5jb3JyZWN0LXZhcmlhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25ldC1zbm1wLTUuNy4yLWZpeC1lbmdpbmVCb290cy12YWx1ZS1vbi1TSUdIVVAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmV0LXNubXAtZml4LWZvci1kaXNhYmxlLWRlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1VNjQtdHlwZWRlZi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZjY4MmJkNzBjNzE3ZWZkZDlmMTViNjg2ZDA3YmFlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGRmYzc5YjY1MzliNzFhNmZmMzM1NzQ2Y2U2M2QyZGEyMjM5MDYyYWQ0MTg3MmZmZjQzNTRjYWZlZDA3YTNlIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc2l0ZWluZm8gc3lzdGVtZCBwa2djb25maWcgcGVybG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgPSAiSU5TVEFMTF9QUkVGSVg9JHtEfSBPVEhFUkxERkxBR1M9JyR7TERGTEFHU30nIEhPU1RfQ1BQRkxBR1M9JyR7QlVJTERfQ1BQRkxBR1N9JyIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi1DQ0FDSEUgPSAiIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0td2l0aC1lbGYsIC0td2l0aG91dC1lbGYsIGVsZnV0aWxzIgotUEFDS0FHRUNPTkZJR1tsaWJubF0gPSAiLS13aXRoLW5sLCAtLXdpdGhvdXQtbmwsIGxpYm5sIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwsIgotCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gIi0tZW5hYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRoLXBlcmwtbW9kdWxlcz15ZXMsIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIC0td2l0aC1wZXJsLW1vZHVsZXM9bm8sXAotICAgICAgICAgICAgICAgICAgICAgICBwZXJsLCBwZXJsIHBlcmwtbGliIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFudWFscyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRlZmF1bHRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaW5zdGFsbC1wcmVmaXg9JHtEfSBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PSR7bG9jYWxzdGF0ZWRpcn0vbGliL25ldC1zbm1wIFwKLSAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctLXdpdGgtZW5kaWFubmVzcz1saXR0bGUnLCAnLS13aXRoLWVuZGlhbm5lc3M9YmlnJywgZCl9IFwKLSIKLQotIyBuZXQtc25tcCBuZWVkcyB0byBoYXZlIG1pYi1tb2R1bGVzPXNtdXggZW5hYmxlZCB0byBlbmFibGUgcXVhZ2dhIHRvIHN1cHBvcnQgc25tcAotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbWliLW1vZHVsZXM9c211eCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiIFwKLSAgICBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyBcCi0gICAgYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gXAotICAgIGFjX2N2X0VUQ19NTlRUQUI9L2V0Yy9tdGFiIFwKLSAgICBsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzIFwKLSIKLWV4cG9ydCBQRVJMUFJPRz0iJHtiaW5kaXJ9L2VudiBwZXJsIgotUEVSTFBST0dfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAnIC1JJHtXT1JLRElSfScsICcnLCBkKX0iCi0KLUhBU19QRVJMID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAnMScsICcwJywgZCl9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgInN8SS91c3IvaW5jbHVkZXxJJHtTVEFHSU5HX0lOQ0RJUn18ZyIgXAotICAgICAgICAiJHtTfSIvY29uZmlndXJlIFwKLSAgICAgICAgIiR7U30iL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMgotCi0gICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KLSAgICAgICAgIyB0aGlzIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgd2hlbiBwYWNrYWdlIHBlcmwgaGFzIGFueSBjaGFuZ2UuCi0gICAgICAgIGNwIC1mICR7U1RBR0lOR19ESVJfVEFSR0VUfS91c3IvbGliKi9wZXJsLyovQ29uZmlnLnBtICR7V09SS0RJUn0vCi0gICAgICAgIGNwIC1mICR7U1RBR0lOR19ESVJfVEFSR0VUfS91c3IvbGliKi9wZXJsLyovQ29uZmlnX2hlYXZ5LnBsICR7V09SS0RJUn0vCi0gICAgICAgIHNlZCAtZSAic0BsaWJwdGggPT4gJy91c3IvbGliLipAbGlicHRoID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtsaWJkaXJ9ICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfScsQGciIFwKLSAgICAgICAgICAgIC1lICJzQHByaXZsaWJleHAgPT4gJy91c3JAcHJpdmxpYmV4cCA9PiAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzckBnIiBcCi0gICAgICAgICAgICAtZSAic0BzY3JpcHRkaXIgPT4gJy91c3JAc2NyaXB0ZGlyID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyQGciIFwKLSAgICAgICAgICAgIC1lICJzQHNpdGVhcmNoZXhwID0+ICcvdXNyQHNpdGVhcmNoZXhwID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyQGciIFwKLSAgICAgICAgICAgIC1lICJzQHNpdGVsaWJleHAgPT4gJy91c3JAc2l0ZWFyY2hleHAgPT4gJyR7U1RBR0lOR19ESVJfVEFSR0VUfS91c3JAZyIgXAotICAgICAgICAgICAgLWUgInNAdmVuZG9yYXJjaGV4cCA9PiAnL3VzckB2ZW5kb3JhcmNoZXhwID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyQGciIFwKLSAgICAgICAgICAgIC1lICJzQHZlbmRvcmxpYmV4cCA9PiAnL3VzckB2ZW5kb3JsaWJleHAgPT4gJyR7U1RBR0lOR19ESVJfVEFSR0VUfS91c3JAZyIgXAotICAgICAgICAgICAgLWkgJHtXT1JLRElSfS9Db25maWcucG0KLSAgICBmaQotCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KLSAgICAgICAgc2VkIC1lICJzQF5OU0NfSU5DTFVERURJUj0uKkBOU0NfSU5DTFVERURJUj0ke1NUQUdJTkdfRElSX1RBUkdFVH1cJFx7aW5jbHVkZWRpclx9QGciIFwKLSAgICAgICAgICAgIC1lICJzQF5OU0NfTElCRElSPS1MLipATlNDX0xJQkRJUj0tTCR7U1RBR0lOR19ESVJfVEFSR0VUfVwkXHtsaWJkaXJcfUBnIiBcCi0gICAgICAgICAgICAtaSAke0J9L25ldC1zbm1wLWNvbmZpZwotICAgIGZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc25tcAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zbm1wZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc25tcGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zbm1wLwotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc25tcHRyYXBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc25tcC8KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc25tcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NubXB0cmFwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkICAgIC1lICJzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9LkBnIiBcCi0gICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIKLSAgICBzZWQgICAgLWUgInNAXk5TQ19TUkNESVI9LipATlNDX1NSQ0RJUj0uQGciIFwKLSAgICAgICAgICAgLWUgInNAXChbXiBdKi1mZGVidWctcHJlZml4LW1hcD1bXiBdKlwpXDEqQEBnIiBcCi0gICAgICAgICAgIC1lICJzQFwoW14gXSotLXN5c3Jvb3Q9W14gXSpcKVwxKkBAZyIgXAotICAgICAgICAgICAtZSAic0BcKFteIF0qLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1bXiBdKlwpXDEqQEBnIiBcCi0gICAgICAgICAgIC1lICJzQFwoW14gXSotLXdpdGgtaW5zdGFsbC1wcmVmaXg9W14gXSpcKVwxKkBAZyIgXAotICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZwotCi0gICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KLSAgICAgICAgc2VkIC1lICJzQF5OU0NfSU5DTFVERURJUj0uKkBOU0NfSU5DTFVERURJUj1cJFx7aW5jbHVkZWRpclx9QGciIFwKLSAgICAgICAgICAgIC1lICJzQF5OU0NfTElCRElSPS1MLipATlNDX0xJQkRJUj0tTFwkXHtsaWJkaXJcfUBnIiBcCi0gICAgICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZwotICAgIGZpCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQotICAgIGZvciBpIGluICR7U30vZGlzdCAke1N9L2luY2x1ZGUgJHtCfS9pbmNsdWRlICR7U30vbWlicyAke1N9L2NvbmZpZ3VyZSBcCi0gICAgICAgICR7Qn0vbmV0LXNubXAtY29uZmlnICR7U30vdGVzdGluZzsgZG8KLSAgICAgICAgaWYgWyAtZSAiJGkiIF07IHRoZW4KLSAgICAgICAgICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICIkaSIgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgZmkKLSAgICBkb25lCi0gICAgZWNobyBgYXV0b2NvbmYgLVZ8YXdrICcvYXV0b2NvbmYve3ByaW50ICRORn0nYCA+ICR7RH0ke1BURVNUX1BBVEh9L2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgotCi0gICAgcm1kbGlzdD0iJHtEfSR7UFRFU1RfUEFUSH0vZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkIgotICAgIGZvciBpIGluICRybWRsaXN0OyBkbwotICAgICAgICBpZiBbIC1kICIkaSIgXTsgdGhlbgotICAgICAgICAgICAgcm0gLXJmICIkaSIKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAibmV0X3NubXBfc3lzcm9vdF9wcmVwcm9jZXNzIgotU05NUF9EQkdESVIgPSAiL3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSIKLQotbmV0X3NubXBfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLSAgICBpZiBbIC1lICR7RH0ke2JpbmRpcn0vbmV0LXNubXAtY29uZmlnIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgICAgICBzZWQgLWUgInNALUkvdXNyL2luY2x1ZGVALUkke1NUQUdJTkdfSU5DRElSfUBnIiBcCi0gICAgICAgICAgICAtZSAic0BecHJlZml4PS4qQHByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9QGciIFwKLSAgICAgICAgICAgIC1lICJzQF5leGVjX3ByZWZpeD0uKkBleGVjX3ByZWZpeD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn1AZyIgXAotICAgICAgICAgICAgLWUgInNAXmluY2x1ZGVkaXI9LipAaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfUBnIiBcCi0gICAgICAgICAgICAtZSAic0BebGliZGlyPS4qQGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfUBnIiBcCi0gICAgICAgICAgICAtZSAic0BeTlNDX1NSQ0RJUj0uKkBOU0NfU1JDRElSPSR7U31AZyIgXAotICAgICAgICAgICAgLWUgInNALWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U05NUF9EQkdESVJ9QC1mZGVidWctcHJlZml4LW1hcD0ke1dPUktESVJ9PSR7U05NUF9EQkdESVJ9QGciIFwKLSAgICAgICAgICAgIC1lICJzQC1mZGVidWctcHJlZml4LW1hcD0gLWZkZWJ1Zy1wcmVmaXgtbWFwPUAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9OQVRJVkV9PSBcCi0gICAgICAgICAgICAgICAgICAtZmRlYnVnLXByZWZpeC1tYXA9JHtTVEFHSU5HX0RJUl9IT1NUfT1AZyIgXAotICAgICAgICAgICAgLWUgInNALS1zeXNyb290PUAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfUBnIiBcCi0gICAgICAgICAgICAtZSAic0AtLXdpdGgtbGlidG9vbC1zeXNyb290PUAtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH1AZyIgXAotICAgICAgICAgICAgLWUgInNALS13aXRoLWluc3RhbGwtcHJlZml4PUAtLXdpdGgtaW5zdGFsbC1wcmVmaXg9JHtEfUBnIiBcCi0gICAgICAgICAgLWkgICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vbmV0LXNubXAtY29uZmlnCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LWxpYnMgJHtQTn0tbWlicyAke1BOfS1zZXJ2ZXIgJHtQTn0tY2xpZW50IFwKLSAgICAgICAgICAgICAke1BOfS1zZXJ2ZXItc25tcGQgJHtQTn0tc2VydmVyLXNubXB0cmFwZCBcCi0gICAgICAgICAgICAgJHtQTn0tbGliLW5ldHNubXAgJHtQTn0tbGliLWFnZW50ICR7UE59LWxpYi1oZWxwZXJzIFwKLSAgICAgICAgICAgICAke1BOfS1saWItbWlicyAke1BOfS1saWItdHJhcGQiCi0KLSMgcGVybCBtb2R1bGUKLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJyR7UE59LXBlcmwtbW9kdWxlcycsICcnLCBkKX0iCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1zZXJ2ZXIgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LWxpYnMgPSAiMSIKLQotRklMRVNfJHtQTn0tcGVybC1tb2R1bGVzID0gIiR7bGliZGlyfS9wZXJsLyoiCi0KLUZJTEVTXyR7UE59LWxpYnMgPSAiIgotRklMRVNfJHtQTn0tbWlicyA9ICIke2RhdGFkaXJ9L3NubXAvbWlicyIKLUZJTEVTXyR7UE59LXNlcnZlci1zbm1wZCA9ICIke3NiaW5kaXJ9L3NubXBkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NubXAvc25tcGQuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc25tcGQuc2VydmljZSBcCi0iCi0KLUZJTEVTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgPSAiJHtzYmluZGlyfS9zbm1wdHJhcGQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NubXAvc25tcHRyYXBkLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NubXB0cmFwZC5zZXJ2aWNlIFwKLSIKLQotRklMRVNfJHtQTn0tbGliLW5ldHNubXAgPSAiJHtsaWJkaXJ9L2xpYm5ldHNubXAke1NPTElCU30iCi1GSUxFU18ke1BOfS1saWItYWdlbnQgPSAiJHtsaWJkaXJ9L2xpYm5ldHNubXBhZ2VudCR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWxpYi1oZWxwZXJzID0gIiR7bGliZGlyfS9saWJuZXRzbm1waGVscGVycyR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWxpYi1taWJzID0gIiR7bGliZGlyfS9saWJuZXRzbm1wbWlicyR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWxpYi10cmFwZCA9ICIke2xpYmRpcn0vbGlibmV0c25tcHRyYXBkJHtTT0xJQlN9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1jbGllbnQgPSAiJHtiaW5kaXJ9LyogJHtkYXRhZGlyfS9zbm1wLyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy8gJHtzYmluZGlyfS8uZGVidWcvICR7YmluZGlyfS8uZGVidWcvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vbWliMmMgJHtiaW5kaXJ9L21pYjJjLXVwZGF0ZSIKLQotQ09ORkZJTEVTXyR7UE59LXNlcnZlci1zbm1wZCA9ICIke3N5c2NvbmZkaXJ9L3NubXAvc25tcGQuY29uZiIKLUNPTkZGSUxFU18ke1BOfS1zZXJ2ZXItc25tcHRyYXBkID0gIiR7c3lzY29uZmRpcn0vc25tcC9zbm1wdHJhcGQuY29uZiIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXItc25tcGQiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tc2VydmVyLXNubXBkID0gInNubXBkIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2VydmVyLXNubXBkID0gInN0YXJ0IDkwIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kJywgJy0td2l0aG91dC1zeXN0ZW1kJywgZCl9IgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlci1zbm1wZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LXNlcnZlci1zbm1wdHJhcGQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zZXJ2ZXItc25tcGQgPSAic25tcGQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zZXJ2ZXItc25tcHRyYXBkID0gICJzbm1wdHJhcGQuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAnbmV0LXNubXAtcGVybC1tb2R1bGVzJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICJuZXQtc25tcC1jbGllbnQiCi1SREVQRU5EU18ke1BOfS1zZXJ2ZXItc25tcGQgKz0gIm5ldC1zbm1wLW1pYnMiCi1SREVQRU5EU18ke1BOfS1zZXJ2ZXItc25tcHRyYXBkICs9ICJuZXQtc25tcC1zZXJ2ZXItc25tcGQgJHtQTn0tbGliLXRyYXBkIgotUkRFUEVORFNfJHtQTn0tc2VydmVyICs9ICJuZXQtc25tcC1zZXJ2ZXItc25tcGQgbmV0LXNubXAtc2VydmVyLXNubXB0cmFwZCIKLVJERVBFTkRTXyR7UE59LWNsaWVudCArPSAibmV0LXNubXAtbWlicyBuZXQtc25tcC1saWJzIgotUkRFUEVORFNfJHtQTn0tbGlicyArPSAibGlicGNpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWxpYi1uZXRzbm1wIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWxpYi1hZ2VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1saWItaGVscGVycyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1saWItbWlicyBcCi0iCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtdGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAotIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIm5ldC1zbm1wLWNsaWVudCAoPSAke0VYVEVORFBLR1Z9KSBuZXQtc25tcC1zZXJ2ZXIgKD0gJHtFWFRFTkRQS0dWfSkiCi1SUkVDT01NRU5EU18ke1BOfS1kYmcgPSAibmV0LXNubXAtY2xpZW50ICg9ICR7RVhURU5EUEtHVn0pIG5ldC1zbm1wLXNlcnZlciAoPSAke0VYVEVORFBLR1Z9KSIKLQotUlBST1ZJREVTXyR7UE59LXNlcnZlci1zbm1wZCArPSAiJHtQTn0tc2VydmVyLXNubXBkLXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0tc2VydmVyLXNubXBkICs9ICIke1BOfS1zZXJ2ZXItc25tcGQtc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0tc2VydmVyLXNubXBkICs9ICIke1BOfS1zZXJ2ZXItc25tcGQtc3lzdGVtZCIKLQotUlBST1ZJREVTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wdHJhcGQtc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfS1zZXJ2ZXItc25tcHRyYXBkICs9ICIke1BOfS1zZXJ2ZXItc25tcHRyYXBkLXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wdHJhcGQtc3lzdGVtZCIKLQotTEVBRF9TT05BTUUgPSAibGlibmV0c25tcC5zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcF81LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0N2Y5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS44LmJiCkBAIC0wLDAgKzEsMjYxIEBACitTVU1NQVJZID0gIlZhcmlvdXMgdG9vbHMgcmVsYXRpbmcgdG8gdGhlIFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy8iCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT03ZjdmMDBiYTYzOWFjOGU4ZGViNWE2MjJlYTI0NjM0ZSIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYm5sIHBjaXV0aWxzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9uZXQtc25tcC9uZXQtc25tcC0ke1BWfS56aXAgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9zbm1wZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3NubXB0cmFwZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3NubXBkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc25tcHRyYXBkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmV0LXNubXAtYWRkLWtub2Itd2hldGhlci1ubGlzdC5oLWFyZS1jaGVja2VkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1saWJ0b29sLWZpbmlzaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC10ZXN0aW5nLWFkZC10aGUtb3V0cHV0LWZvcm1hdC1mb3ItcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlnX29zX2hlYWRlcnMtRXJyb3ItRml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc25tcGxpYi1rZXl0b29scy5jLURvbi10LWNoZWNrLWZvci1yZXR1cm4tZnJvbS1FVlBfTS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdldF9waWRfZnJvbV9pbm9kZS1JbmNsdWRlLWxpbWl0LmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUtZml4LWEtY2MtY2hlY2staXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUtZml4LWluY29ycmVjdC12YXJpYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXQtc25tcC01LjcuMi1maXgtZW5naW5lQm9vdHMtdmFsdWUtb24tU0lHSFVQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25ldC1zbm1wLWZpeC1mb3ItZGlzYWJsZS1kZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtY29uZmlndXJlLW9wdGlvbnMtZnJvbS12ZXJzaW9uaW5mby5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YWFlNTk0OGRmN2VmZGU2MjY2MTNkNmE0YjNjZDlkNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjI5MTM4NWI4ZWQ4NGYwNTg5MGZlNDE5NzAwNWRhZjdlN2VlN2IwODJjMmUzOTBmYTExNGE5NDc3YTU2MDQyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbmV0LXNubXAvZmlsZXMvbmV0LXNubXAvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25ldC1zbm1wLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzaXRlaW5mbyBzeXN0ZW1kIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCisKK0VYVFJBX09FTUFLRSA9ICJJTlNUQUxMX1BSRUZJWD0ke0R9IE9USEVSTERGTEFHUz0nJHtMREZMQUdTfScgSE9TVF9DUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIgorCitQQVJBTExFTF9NQUtFID0gIiIKK0NDQUNIRSA9ICIiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tlbGZ1dGlsc10gPSAiLS13aXRoLWVsZiwgLS13aXRob3V0LWVsZiwgZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLXdpdGgtbmwsIC0td2l0aG91dC1ubCwgbGlibmwiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCwiCisKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtZW1iZWRkZWQtcGVybCAtLXdpdGgtcGVybC1tb2R1bGVzPXllcywgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRoLXBlcmwtbW9kdWxlcz1ubyxcCisgICAgICAgICAgICAgICAgICAgICAgIHBlcmwsIHBlcmwgcGVybC1saWIiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1tYW51YWxzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGVmYXVsdHMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1pbnN0YWxsLXByZWZpeD0ke0R9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmV0LXNubXAgXAorICAgICAgICAgICAgICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy0td2l0aC1lbmRpYW5uZXNzPWxpdHRsZScsICctLXdpdGgtZW5kaWFubmVzcz1iaWcnLCBkKX0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCisiCisKKyMgbmV0LXNubXAgbmVlZHMgdG8gaGF2ZSBtaWItbW9kdWxlcz1zbXV4IGVuYWJsZWQgdG8gZW5hYmxlIHF1YWdnYSB0byBzdXBwb3J0IHNubXAKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLW1pYi1tb2R1bGVzPXNtdXgiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCisgICAgYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8gXAorICAgIGFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPW5vIFwKKyAgICBhY19jdl9FVENfTU5UVEFCPS9ldGMvbXRhYiBcCisgICAgbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyBcCisiCitleHBvcnQgUEVSTFBST0c9IiR7YmluZGlyfS9lbnYgcGVybCIKK1BFUkxQUk9HX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJyAtSSR7V09SS0RJUn0nLCAnJywgZCl9IgorCitIQVNfUEVSTCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJzEnLCAnMCcsIGQpfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICJzfEkvdXNyL2luY2x1ZGV8SSR7U1RBR0lOR19JTkNESVJ9fGciIFwKKyAgICAgICAgIiR7U30iL2NvbmZpZ3VyZSBcCisgICAgICAgICIke1N9Ii9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKKworICAgIGlmIFsgIiR7SEFTX1BFUkx9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgICMgdGhpcyBtYXkgbmVlZCB0byBiZSBjaGFuZ2VkIHdoZW4gcGFja2FnZSBwZXJsIGhhcyBhbnkgY2hhbmdlLgorICAgICAgICBjcCAtZiAke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyL2xpYiovcGVybC8qL0NvbmZpZy5wbSAke1dPUktESVJ9LworICAgICAgICBjcCAtZiAke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyL2xpYiovcGVybC8qL0NvbmZpZ19oZWF2eS5wbCAke1dPUktESVJ9LworICAgICAgICBzZWQgLWUgInNAbGlicHRoID0+ICcvdXNyL2xpYi4qQGxpYnB0aCA9PiAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfSAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nLEBnIiBcCisgICAgICAgICAgICAtZSAic0Bwcml2bGliZXhwID0+ICcvdXNyQHByaXZsaWJleHAgPT4gJyR7U1RBR0lOR19ESVJfVEFSR0VUfS91c3JAZyIgXAorICAgICAgICAgICAgLWUgInNAc2NyaXB0ZGlyID0+ICcvdXNyQHNjcmlwdGRpciA9PiAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzckBnIiBcCisgICAgICAgICAgICAtZSAic0BzaXRlYXJjaGV4cCA9PiAnL3VzckBzaXRlYXJjaGV4cCA9PiAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzckBnIiBcCisgICAgICAgICAgICAtZSAic0BzaXRlbGliZXhwID0+ICcvdXNyQHNpdGVhcmNoZXhwID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyQGciIFwKKyAgICAgICAgICAgIC1lICJzQHZlbmRvcmFyY2hleHAgPT4gJy91c3JAdmVuZG9yYXJjaGV4cCA9PiAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzckBnIiBcCisgICAgICAgICAgICAtZSAic0B2ZW5kb3JsaWJleHAgPT4gJy91c3JAdmVuZG9ybGliZXhwID0+ICcke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyQGciIFwKKyAgICAgICAgICAgIC1pICR7V09SS0RJUn0vQ29uZmlnLnBtCisgICAgZmkKKworfQorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7SEFTX1BFUkx9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgIHNlZCAtZSAic0BeTlNDX0lOQ0xVREVESVI9LipATlNDX0lOQ0xVREVESVI9JHtTVEFHSU5HX0RJUl9UQVJHRVR9XCRce2luY2x1ZGVkaXJcfUBnIiBcCisgICAgICAgICAgICAtZSAic0BeTlNDX0xJQkRJUj0tTC4qQE5TQ19MSUJESVI9LUwke1NUQUdJTkdfRElSX1RBUkdFVH1cJFx7bGliZGlyXH1AZyIgXAorICAgICAgICAgICAgLWkgJHtCfS9uZXQtc25tcC1jb25maWcKKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NubXAKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc25tcGQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3NubXBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc25tcC8KKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3NubXB0cmFwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NubXAvCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NubXBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbm1wdHJhcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAgICAtZSAic0BeTlNDX1NSQ0RJUj0uKkBOU0NfU1JDRElSPS5AZyIgXAorICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNyZWF0ZS12My11c2VyCisgICAgc2VkICAgIC1lICJzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9LkBnIiBcCisgICAgICAgICAgIC1lICJzQFwoW14gXSotZmRlYnVnLXByZWZpeC1tYXA9W14gXSpcKVwxKkBAZyIgXAorICAgICAgICAgICAtZSAic0BcKFteIF0qLS1zeXNyb290PVteIF0qXClcMSpAQGciIFwKKyAgICAgICAgICAgLWUgInNAXChbXiBdKi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9W14gXSpcKVwxKkBAZyIgXAorICAgICAgICAgICAtZSAic0BcKFteIF0qLS13aXRoLWluc3RhbGwtcHJlZml4PVteIF0qXClcMSpAQGciIFwKKyAgICAgICAgLWkgJHtEfSR7YmluZGlyfS9uZXQtc25tcC1jb25maWcKKworICAgIGlmIFsgIiR7SEFTX1BFUkx9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgIHNlZCAtZSAic0BeTlNDX0lOQ0xVREVESVI9LipATlNDX0lOQ0xVREVESVI9XCRce2luY2x1ZGVkaXJcfUBnIiBcCisgICAgICAgICAgICAtZSAic0BeTlNDX0xJQkRJUj0tTC4qQE5TQ19MSUJESVI9LUxcJFx7bGliZGlyXH1AZyIgXAorICAgICAgICAgICAgLWkgJHtEfSR7YmluZGlyfS9uZXQtc25tcC1jb25maWcKKyAgICBmaQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBmb3IgaSBpbiAke1N9L2Rpc3QgJHtTfS9pbmNsdWRlICR7Qn0vaW5jbHVkZSAke1N9L21pYnMgJHtTfS9jb25maWd1cmUgXAorICAgICAgICAke0J9L25ldC1zbm1wLWNvbmZpZyAke1N9L3Rlc3Rpbmc7IGRvCisgICAgICAgIGlmIFsgLWUgIiRpIiBdOyB0aGVuCisgICAgICAgICAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAiJGkiICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIGZpCisgICAgZG9uZQorICAgIGVjaG8gYGF1dG9jb25mIC1WfGF3ayAnL2F1dG9jb25mL3twcmludCAkTkZ9J2AgPiAke0R9JHtQVEVTVF9QQVRIfS9kaXN0L2F1dG9jb25mLXZlcnNpb24KKworICAgIHJtZGxpc3Q9IiR7RH0ke1BURVNUX1BBVEh9L2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZCIKKyAgICBmb3IgaSBpbiAkcm1kbGlzdDsgZG8KKyAgICAgICAgaWYgWyAtZCAiJGkiIF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1yZiAiJGkiCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gIm5ldF9zbm1wX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK1NOTVBfREJHRElSID0gIi91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCisKK25ldF9zbm1wX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisgICAgaWYgWyAtZSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZyBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7YmluZGlyfS9uZXQtc25tcC1jb25maWcgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICAgICAgc2VkIC1lICJzQC1JL3Vzci9pbmNsdWRlQC1JJHtTVEFHSU5HX0lOQ0RJUn1AZyIgXAorICAgICAgICAgICAgLWUgInNAXnByZWZpeD0uKkBwcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fUBnIiBcCisgICAgICAgICAgICAtZSAic0BeZXhlY19wcmVmaXg9LipAZXhlY19wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9QGciIFwKKyAgICAgICAgICAgIC1lICJzQF5pbmNsdWRlZGlyPS4qQGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn1AZyIgXAorICAgICAgICAgICAgLWUgInNAXmxpYmRpcj0uKkBsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn1AZyIgXAorICAgICAgICAgICAgLWUgInNAXk5TQ19TUkNESVI9LipATlNDX1NSQ0RJUj0ke1N9QGciIFwKKyAgICAgICAgICAgIC1lICJzQC1mZGVidWctcHJlZml4LW1hcD0ke1NOTVBfREJHRElSfUAtZmRlYnVnLXByZWZpeC1tYXA9JHtXT1JLRElSfT0ke1NOTVBfREJHRElSfUBnIiBcCisgICAgICAgICAgICAtZSAic0AtZmRlYnVnLXByZWZpeC1tYXA9IC1mZGVidWctcHJlZml4LW1hcD1ALWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19ESVJfTkFUSVZFfT0gXAorICAgICAgICAgICAgICAgICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19ESVJfSE9TVH09QGciIFwKKyAgICAgICAgICAgIC1lICJzQC0tc3lzcm9vdD1ALS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH1AZyIgXAorICAgICAgICAgICAgLWUgInNALS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ALS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9QGciIFwKKyAgICAgICAgICAgIC1lICJzQC0td2l0aC1pbnN0YWxsLXByZWZpeD1ALS13aXRoLWluc3RhbGwtcHJlZml4PSR7RH1AZyIgXAorICAgICAgICAgIC1pICAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L25ldC1zbm1wLWNvbmZpZworICAgIGZpCit9CisKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAibmV0X3NubXBfcGFja2FnZV9wcmVwcm9jZXNzIgorbmV0X3NubXBfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKyAgICBzZWQgLWUgJ3NAJHtSRUNJUEVfU1lTUk9PVH1AQGcnIFwKKyAgICAgICAtaSAke1BLR0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZworfQorCitQQUNLQUdFUyArPSAiJHtQTn0tbGlicyAke1BOfS1taWJzICR7UE59LXNlcnZlciAke1BOfS1jbGllbnQgXAorICAgICAgICAgICAgICR7UE59LXNlcnZlci1zbm1wZCAke1BOfS1zZXJ2ZXItc25tcHRyYXBkIFwKKyAgICAgICAgICAgICAke1BOfS1saWItbmV0c25tcCAke1BOfS1saWItYWdlbnQgJHtQTn0tbGliLWhlbHBlcnMgXAorICAgICAgICAgICAgICR7UE59LWxpYi1taWJzICR7UE59LWxpYi10cmFwZCIKKworIyBwZXJsIG1vZHVsZQorUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAnJHtQTn0tcGVybC1tb2R1bGVzJywgJycsIGQpfSIKKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXNlcnZlciA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tbGlicyA9ICIxIgorCitGSUxFU18ke1BOfS1wZXJsLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3BlcmwvKiIKKworRklMRVNfJHtQTn0tbGlicyA9ICIiCitGSUxFU18ke1BOfS1taWJzID0gIiR7ZGF0YWRpcn0vc25tcC9taWJzIgorRklMRVNfJHtQTn0tc2VydmVyLXNubXBkID0gIiR7c2JpbmRpcn0vc25tcGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc25tcC9zbm1wZC5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbm1wZC5zZXJ2aWNlIFwKKyIKKworRklMRVNfJHtQTn0tc2VydmVyLXNubXB0cmFwZCA9ICIke3NiaW5kaXJ9L3NubXB0cmFwZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc25tcC9zbm1wdHJhcGQuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc25tcHRyYXBkLnNlcnZpY2UgXAorIgorCitGSUxFU18ke1BOfS1saWItbmV0c25tcCA9ICIke2xpYmRpcn0vbGlibmV0c25tcCR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWxpYi1hZ2VudCA9ICIke2xpYmRpcn0vbGlibmV0c25tcGFnZW50JHtTT0xJQlN9IgorRklMRVNfJHtQTn0tbGliLWhlbHBlcnMgPSAiJHtsaWJkaXJ9L2xpYm5ldHNubXBoZWxwZXJzJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tbGliLW1pYnMgPSAiJHtsaWJkaXJ9L2xpYm5ldHNubXBtaWJzJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tbGliLXRyYXBkID0gIiR7bGliZGlyfS9saWJuZXRzbm1wdHJhcGQke1NPTElCU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWNsaWVudCA9ICIke2JpbmRpcn0vKiAke2RhdGFkaXJ9L3NubXAvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vLmRlYnVnLyAke3NiaW5kaXJ9Ly5kZWJ1Zy8gJHtiaW5kaXJ9Ly5kZWJ1Zy8iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9taWIyYyAke2JpbmRpcn0vbWliMmMtdXBkYXRlIgorCitDT05GRklMRVNfJHtQTn0tc2VydmVyLXNubXBkID0gIiR7c3lzY29uZmRpcn0vc25tcC9zbm1wZC5jb25mIgorQ09ORkZJTEVTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgPSAiJHtzeXNjb25mZGlyfS9zbm1wL3NubXB0cmFwZC5jb25mIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlci1zbm1wZCIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zZXJ2ZXItc25tcGQgPSAic25tcGQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zZXJ2ZXItc25tcGQgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS13aXRoLXN5c3RlbWQnLCAnLS13aXRob3V0LXN5c3RlbWQnLCBkKX0iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyLXNubXBkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tc2VydmVyLXNubXB0cmFwZCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlci1zbm1wZCA9ICJzbm1wZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgPSAgInNubXB0cmFwZC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsICduZXQtc25tcC1wZXJsLW1vZHVsZXMnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gKz0gIm5ldC1zbm1wLWNsaWVudCIKK1JERVBFTkRTXyR7UE59LXNlcnZlci1zbm1wZCArPSAibmV0LXNubXAtbWlicyIKK1JERVBFTkRTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIm5ldC1zbm1wLXNlcnZlci1zbm1wZCAke1BOfS1saWItdHJhcGQiCitSREVQRU5EU18ke1BOfS1zZXJ2ZXIgKz0gIm5ldC1zbm1wLXNlcnZlci1zbm1wZCBuZXQtc25tcC1zZXJ2ZXItc25tcHRyYXBkIgorUkRFUEVORFNfJHtQTn0tY2xpZW50ICs9ICJuZXQtc25tcC1taWJzIG5ldC1zbm1wLWxpYnMiCitSREVQRU5EU18ke1BOfS1saWJzICs9ICJsaWJwY2kgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tbGliLW5ldHNubXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tbGliLWFnZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWxpYi1oZWxwZXJzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWxpYi1taWJzIFwKKyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS10ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisiCitSREVQRU5EU18ke1BOfS1kZXYgPSAibmV0LXNubXAtY2xpZW50ICg9ICR7RVhURU5EUEtHVn0pIG5ldC1zbm1wLXNlcnZlciAoPSAke0VYVEVORFBLR1Z9KSIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICJuZXQtc25tcC1jbGllbnQgKD0gJHtFWFRFTkRQS0dWfSkgbmV0LXNubXAtc2VydmVyICg9ICR7RVhURU5EUEtHVn0pIgorCitSUFJPVklERVNfJHtQTn0tc2VydmVyLXNubXBkICs9ICIke1BOfS1zZXJ2ZXItc25tcGQtc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfS1zZXJ2ZXItc25tcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wZC1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfS1zZXJ2ZXItc25tcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wZC1zeXN0ZW1kIgorCitSUFJPVklERVNfJHtQTn0tc2VydmVyLXNubXB0cmFwZCArPSAiJHtQTn0tc2VydmVyLXNubXB0cmFwZC1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wdHJhcGQtc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0tc2VydmVyLXNubXB0cmFwZCArPSAiJHtQTn0tc2VydmVyLXNubXB0cmFwZC1zeXN0ZW1kIgorCitMRUFEX1NPTkFNRSA9ICJsaWJuZXRzbm1wLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25vcG9sbC9ub3BvbGxfMC40LjIuYjI5Ny5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9ub3BvbGwvbm9wb2xsXzAuNC4yLmIyOTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNzc4OTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25vcG9sbC9ub3BvbGxfMC40LjIuYjI5Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlblNvdXJjZSBXZWJTb2NrZXQgVG9vbGtpdCIKLURFU0NSSVBUSU9OID0gIm5vUG9sbCBpcyBhIE9wZW5Tb3VyY2UgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIChSRkMgNjQ1NSksIFwKLXdyaXR0ZW4gaW4gYW5zaSBDLCB0aGF0IGFsbG93cyBidWlsZGluZyBwdXJlIFdlYlNvY2tldCBzb2x1dGlvbnMgb3IgdG8gXAotcHJvdmlkZSBXZWJTb2NrZXQgc3VwcG9ydCB0byBleGlzdGluZyBUQ1Agb3JpZW50ZWQgYXBwbGljYXRpb25zLlwKLVwKLW5vUG9sbCBwcm92aWRlcyBzdXBwb3J0IGZvciBXZWJTb2NrZXQgKHdzOi8vKSBhbmQgVExTIChzZWN1cmUpIFdlYlNvY2tldCAod3NzOi8vKSxcCi1hbGxvd2luZyBtZXNzYWdlIGJhc2VkIChoYW5kbGVyIG5vdGlmaWVkKSBwcm9ncmFtbWluZyBvciBzdHJlYW0gb3JpZW50ZWQgYWNjZXNzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hc3BsLmVzL25vcG9sbC8iCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA1MDQxMjQ2NzhjMWIzMTU4MTQ2ZTA2MzAyMjkyOTggXAotICAgICAgICAgICAgICAgICAgICIKLURFUEVORFMgPSAib3BlbnNzbCIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5hc3BsLmVzL25vcG9sbC9kb3dubG9hZHMvbm9wb2xsLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhjNDExY2QwZjNjMDQ3OWFlZDI4YzRjZjdiMTE0ZmJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1ZmJmOGFhYTE2YTc3YjBmMjY1ZDhjODQ3ZWIwNmNiM2U2OGYyYjFhNTA3Mzc0NjZkYWU4MTE4MTYxODY1NGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ub3BvbGwtZG9jIgotCi1MREZMQUdTICs9ICItbHB0aHJlYWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbm9wb2xsL25vcG9sbF8wLjQuNi5iNDAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25vcG9sbC9ub3BvbGxfMC40LjYuYjQwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzU3ZDI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25vcG9sbC9ub3BvbGxfMC40LjYuYjQwMC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIk9wZW5Tb3VyY2UgV2ViU29ja2V0IFRvb2xraXQiCitERVNDUklQVElPTiA9ICJub1BvbGwgaXMgYSBPcGVuU291cmNlIFdlYlNvY2tldCBpbXBsZW1lbnRhdGlvbiAoUkZDIDY0NTUpLCBcCit3cml0dGVuIGluIGFuc2kgQywgdGhhdCBhbGxvd3MgYnVpbGRpbmcgcHVyZSBXZWJTb2NrZXQgc29sdXRpb25zIG9yIHRvIFwKK3Byb3ZpZGUgV2ViU29ja2V0IHN1cHBvcnQgdG8gZXhpc3RpbmcgVENQIG9yaWVudGVkIGFwcGxpY2F0aW9ucy5cCitcCitub1BvbGwgcHJvdmlkZXMgc3VwcG9ydCBmb3IgV2ViU29ja2V0ICh3czovLykgYW5kIFRMUyAoc2VjdXJlKSBXZWJTb2NrZXQgKHdzczovLyksXAorYWxsb3dpbmcgbWVzc2FnZSBiYXNlZCAoaGFuZGxlciBub3RpZmllZCkgcHJvZ3JhbW1pbmcgb3Igc3RyZWFtIG9yaWVudGVkIGFjY2Vzcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNwbC5lcy9ub3BvbGwvIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYwNTA0MTI0Njc4YzFiMzE1ODE0NmUwNjMwMjI5Mjk4IFwKKyAgICAgICAgICAgICAgICAgICAiCitERVBFTkRTID0gIm9wZW5zc2wiCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYXNwbC5lcy9ub3BvbGwvZG93bmxvYWRzL25vcG9sbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZDMzM2YxNThiNWQ1YTg5NzVhNjE0OWU2ZWY4ZGI2MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjFiMjBmMWQwNTI1ZjMwY2RkMmE0ZmMzODZkMzI4YjRjZjk4YzZkMTFjZWY1MWZlNjJjZDk0OTFiYTE5YWQ5IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtbm9wb2xsLWRvYyIKKworTERGTEFHUyArPSAiLWxwdGhyZWFkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5mbG93L29wZW5mbG93LzAwMDEtZ2VuZXJhdGUtbm90LXN0YXRpYy1nZXRfZGgtZnVuY3Rpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5mbG93L29wZW5mbG93LzAwMDEtZ2VuZXJhdGUtbm90LXN0YXRpYy1nZXRfZGgtZnVuY3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhY2FlODAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmZsb3cvb3BlbmZsb3cvMDAwMS1nZW5lcmF0ZS1ub3Qtc3RhdGljLWdldF9kaC1mdW5jdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAwZmU2NzcwYjYxN2FmN2U0MDBhYmM2Zjg2NTJjMTQxN2Q0YzM1NzVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOCBTZXAgMjAxOCAyMjo0OToxNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBnZW5lcmF0ZSBub3Qgc3RhdGljIGdldF9kaCogZnVuY3Rpb25zCisKK0ZpeGVzIGJ1aWxkIHdpdGggT3BlblNTTCAxLjEueAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9hdXRvbWFrZS5tayB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2F1dG9tYWtlLm1rIGIvbGliL2F1dG9tYWtlLm1rCitpbmRleCBiZmJlYjk0Li5iNTM5MDlhIDEwMDY0NAorLS0tIGEvbGliL2F1dG9tYWtlLm1rCisrKysgYi9saWIvYXV0b21ha2UubWsKK0BAIC0xMTMsOCArMTEzLDkgQEAgbGliL2RocGFyYW1zLmM6IGxpYi9kaDEwMjQucGVtIGxpYi9kaDIwNDgucGVtIGxpYi9kaDQwOTYucGVtCisgCShlY2hvICcjaW5jbHVkZSAibGliL2RocGFyYW1zLmgiJyAmJgkJCQlcCisgCSBvcGVuc3NsIGRocGFyYW0gLUMgLWluICQoc3JjZGlyKS9saWIvZGgxMDI0LnBlbSAtbm9vdXQgJiYJXAorIAkgb3BlbnNzbCBkaHBhcmFtIC1DIC1pbiAkKHNyY2RpcikvbGliL2RoMjA0OC5wZW0gLW5vb3V0ICYmCVwKKy0JIG9wZW5zc2wgZGhwYXJhbSAtQyAtaW4gJChzcmNkaXIpL2xpYi9kaDQwOTYucGVtIC1ub291dCkJXAorLQl8IHNlZCAncy9cKGdldF9kaFswLTldKlwpKCkvXDEodm9pZCkvJyA+IGxpYi9kaHBhcmFtcy5jLnRtcAorKwkgb3BlbnNzbCBkaHBhcmFtIC1DIC1pbiAkKHNyY2RpcikvbGliL2RoNDA5Ni5wZW0gLW5vb3V0KSB8IAlcCisrCSBzZWQgLWUgJ3MvXChnZXRfZGhbMC05XSpcKSgpL1wxKHZvaWQpLycgCQkJXAorKwkgICAgIC1lICdzL3N0YXRpYyBESCBcKmdldF9kaC9ESCBcKmdldF9kaC8nID4gbGliL2RocGFyYW1zLmMudG1wCisgCW12IGxpYi9kaHBhcmFtcy5jLnRtcCBsaWIvZGhwYXJhbXMuYworIGVuZGlmCisgCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmZsb3cvb3BlbmZsb3dfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5mbG93L29wZW5mbG93X2dpdC5iYgppbmRleCBlY2ViNDVlLi5iNmNlZjA3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmZsb3cvb3BlbmZsb3dfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVuZmxvdy9vcGVuZmxvd19naXQuYmIKQEAgLTYsNCArNiw1IEBACiBTUkNfVVJJICs9ICJcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNoZWNrLWFuZC11c2Utc3RybGNweS1mcm9tLWxpYmMtYmVmb3JlLWRlZmluaW5nLW93bi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYi1uZXRkZXYtQWRqdXN0LWhlYWRlci1pbmNsdWRlLXNlcXVlbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuZXJhdGUtbm90LXN0YXRpYy1nZXRfZGgtZnVuY3Rpb25zLnBhdGNoIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwLzAwMDEtbDJ0cF9hcGkuYy1pbmNsdWRlLXJwYy1jbG50LmgtZm9yLXJlc3VsdHByb2NfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDAxLWwydHBfYXBpLmMtaW5jbHVkZS1ycGMtY2xudC5oLWZvci1yZXN1bHRwcm9jX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMWE5N2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwLzAwMDEtbDJ0cF9hcGkuYy1pbmNsdWRlLXJwYy1jbG50LmgtZm9yLXJlc3VsdHByb2NfdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gOGYyOTlkZjRkZDFjYTg1N2UzNDg1OWMzNzdhMjliMTgzYzYzMDk2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIxIFNlcCAyMDE3IDEzOjA1OjAzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGwydHBfYXBpLmM6IGluY2x1ZGUgcnBjL2NsbnQuaCBmb3IgJ3Jlc3VsdHByb2NfdCcKLQotRml4ZXMKLQotfCAvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvb3BlbmwydHAvMS44LXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL3RpcnBjL3JwYy9wbWFwX2NsbnQuaDo4MToxMjogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdyZXN1bHRwcm9jX3QnOyBkaWQgeW91IG1lYW4gJ3JwY3Byb2NfdCc/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgcmVzdWx0cHJvY190KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGwydHBfYXBpLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2wydHBfYXBpLmMgYi9sMnRwX2FwaS5jCi1pbmRleCBmMDk0NmZkLi5mNzc4ODFjIDEwMDY0NAotLS0tIGEvbDJ0cF9hcGkuYwotKysrIGIvbDJ0cF9hcGkuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHJwYy90eXBlcy5oPgotICNpbmNsdWRlIDxycGMveGRyLmg+Ci0rI2luY2x1ZGUgPHJwYy9jbG50Lmg+Ci0gI2luY2x1ZGUgPHJwYy9wbWFwX2NsbnQuaD4KLSAvLyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvMDAwMi11c2VyLWlwdjYtc3RydWN0dXJlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDAyLXVzZXItaXB2Ni1zdHJ1Y3R1cmVzLnBhdGNoCmluZGV4IDNmOGJjYWEuLmJkOWJjYjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDAyLXVzZXItaXB2Ni1zdHJ1Y3R1cmVzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDAyLXVzZXItaXB2Ni1zdHJ1Y3R1cmVzLnBhdGNoCkBAIC00LDYgKzQsOSBAQAogU3ViamVjdDogW1BBVENIIDIvMl0gdXNlciBpcHY2IHN0cnVjdHVyZXMKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBkYXRlIGZvciBpcHY2IGFkZHJlc3MgY29tcGFyZQorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQogIGwydHBfYXBpLmMgfCA4ICsrKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKQEAgLTE4LDggKzIxLDggQEAKICAJaWYgKCghbDJ0cF9vcHRfcmVtb3RlX3JwYykgJiYKIC0JICAgICgoeHBydC0+eHBfcmFkZHIuc2luX2FkZHIuc19hZGRyICE9IGh0b25sKElOQUREUl9MT09QQkFDSykpICYmCiAtCSAgICAgKHhwcnQtPnhwX3JhZGRyLnNpbl9hZGRyLnNfYWRkciAhPSBodG9ubChJTkFERFJfQU5ZKSkpKSB7Ci0rCSAgICAoKHhwcnQtPnhwX3JhZGRyLnNpbjZfYWRkci5zNl9hZGRyICE9IGh0b25sKElOQUREUl9MT09QQkFDSykpICYmCi0rCSAgICAgKHhwcnQtPnhwX3JhZGRyLnNpbjZfYWRkci5zNl9hZGRyICE9IGh0b25sKElOQUREUl9BTlkpKSkpIHsKKysJICAgICgobWVtY21wKCZ4cHJ0LT54cF9yYWRkci5zaW42X2FkZHIsICZpbjZhZGRyX2xvb3BiYWNrLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSkgIT0gMCkgJiYKKysJICAgICAobWVtY21wKCZ4cHJ0LT54cF9yYWRkci5zaW42X2FkZHIsICZpbjZhZGRyX2FueSwgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpICE9IDApKSkgewogKwkJY2hhciBzdHJhZGRyW0lORVQ2X0FERFJTVFJMRU5dOwogKwkJaW5ldF9udG9wKEFGX0lORVQ2LCAmeHBydC0+eHBfcmFkZHIuc2luNl9hZGRyLCBzdHJhZGRyLCBzaXplb2Yoc3RyYWRkcikpOwogIAkJaWYgKGwydHBfb3B0X3RyYWNlX2ZsYWdzICYgTDJUUF9ERUJVR19BUEkpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDA0LUFkanVzdC1mb3ItbGludXgta2VybmVsLWhlYWRlcnMtYXNzdW1wdGlvbnMtb24tZ2xpYmMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHAvMDAwNC1BZGp1c3QtZm9yLWxpbnV4LWtlcm5lbC1oZWFkZXJzLWFzc3VtcHRpb25zLW9uLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmNiYTY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cC8wMDA0LUFkanVzdC1mb3ItbGludXgta2VybmVsLWhlYWRlcnMtYXNzdW1wdGlvbnMtb24tZ2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGVkZTRhZThlMjVmOWZiNzQ2YTZmNGUwNzZkMGVmMDI5OTM4ZDI4ODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBNYXIgMjAxNyAxMTo0Njo1NiAtMDcwMAotU3ViamVjdDogW1BBVENIIDQvNF0gQWRqdXN0IGZvciBsaW51eC1rZXJuZWwgaGVhZGVycyBhc3N1bXB0aW9ucyBvbiBnbGliYwotCi1GaXhlcyBidWlsZCBpc3N1ZXMgZS5nLgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gL21udC9hL2J1aWxkL3RtcC1tdXNsL3dvcmsvY29ydGV4YTdoZi1uZW9uLXZmcHY0LW9lLWxpbnV4LW11c2xlYWJpL29wZW5sMnRwLzEuOC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9pZl9wcHBveC5oOjI0OgotL21udC9hL2J1aWxkL3RtcC1tdXNsL3dvcmsvY29ydGV4YTdoZi1uZW9uLXZmcHY0LW9lLWxpbnV4LW11c2xlYWJpL29wZW5sMnRwLzEuOC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9saW51eC9pZi5oOjk3OjI6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyCi0gICAgICAgIElGRl9MT1dFUl9VUCAgICAgICAgICAgICAgICAgICAgPSAxPDwxNiwgLyogX192b2xhdGlsZV9fICovCi0gICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHBsdWdpbnMvcHBwX3VuaXguYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wbHVnaW5zL3BwcF91bml4LmMgYi9wbHVnaW5zL3BwcF91bml4LmMKLWluZGV4IDg2OTA2NmYuLjVjMWU0NGYgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5zL3BwcF91bml4LmMKLSsrKyBiL3BsdWdpbnMvcHBwX3VuaXguYwotQEAgLTIxLDYgKzIxLDExIEBACi0gICogUGx1Z2luIHRvIHVzZSB0aGUgc3RhbmRhcmQgVU5JWCBwcHBkCi0gICovCi0gCi0rLyogaGFjayB0byBtYWtlIHN1cmUga2VybmVsIGhlYWRlcnMgdW5kZXJzdGFuZCB0aGF0IGxpYmMgKG11c2wpCi0rICogZG9lcyBkZWZpbmUgSUZGX0xPV0VSX1VQIGV0IGFsLgotKyAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTX0xPV0VSX1VQX0RPUk1BTlRfRUNITyAwCi0rCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmwydHAvb3BlbmwydHBfMS44LmJiCmluZGV4IDFmNmI0ZGUuLjkwZThiMTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubDJ0cC9vcGVubDJ0cF8xLjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sMnRwL29wZW5sMnRwXzEuOC5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXNsL0xJQ0VOU0U7bWQ1PTljMTM4N2EzYzUyMTNhYTQwNjcxNDM4YWYzZTAwNzkzIFwKICAgICAgICAgICAgICAgICAgICAgIgogCi1ERVBFTkRTID0gInBvcHQgZmxleCByZWFkbGluZSIKK0RFUEVORFMgPSAicG9wdCBmbGV4IHJlYWRsaW5lIHJwY3N2Yy1wcm90by1uYXRpdmUgYmlzb24tbmF0aXZlIgogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVubDJ0cC5vcmcvcmVsZWFzZXMvJHtCUH0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLW1vZGlmeS1DRkxBR1MtdG8tYXZpb2QtYnVpbGQtZXJyb3IucGF0Y2ggXApAQCAtMzQsMTIgKzM0LDcgQEAKICAgICAgICAgICAgZmlsZTovL29wZW5sMnRwZC1lbmFibGUtdGVzdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL2ZpeF9saW51eF80LjE1X2NvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUFkanVzdC1mb3ItbGludXgta2VybmVsLWhlYWRlcnMtYXNzdW1wdGlvbnMtb24tZ2xpYmMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi11c2VyLWlwdjYtc3RydWN0dXJlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWwydHBfYXBpLmMtaW5jbHVkZS1ycGMtY2xudC5oLWZvci1yZXN1bHRwcm9jX3QucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZTNkMDhkZWRmYjllNmE5YTFlMjRmNjc2NmY2ZGFkZDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM5NzcwNGQ0Yjk2M2E4N2ZiYzBlNzQxNjY4ZDQ1MzA5MzM5OTE1MTVhZTlhYjBkZmZkMTFiNTQ0NGY0ODYwZiIKQEAgLTQ5LDEwICs0NCwxMCBAQAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm9wZW5sMnRwZC5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotQ1BQRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHRpcnBjIgorREVQRU5EUyArPSAibGlidGlycGMiCitDUFBGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1MgKz0gIi1sdGlycGMiCiAKIFBBUkFMTEVMX01BS0UgPSAiIgogRVhUUkFfT0VNQUtFID0gJ0NGTEFHUz0iJHtDRkxBR1N9IC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUiIENQUEZMQUdTPSIke0NQUEZMQUdTfSIgT1BUX0NGTEFHUz0iJHtDRkxBR1N9IicKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9yYWRpdXNjbGllbnQtbmcvcmFkaXVzY2xpZW50LW5nXzAuNS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JhZGl1c2NsaWVudC1uZy9yYWRpdXNjbGllbnQtbmdfMC41LjYuYmIKaW5kZXggOTVmYWE2NS4uNzgwNDIzZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JhZGl1c2NsaWVudC1uZy9yYWRpdXNjbGllbnQtbmdfMC41LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3JhZGl1c2NsaWVudC1uZy9yYWRpdXNjbGllbnQtbmdfMC41LjYuYmIKQEAgLTE3LDYgKzE3LDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCiAKK0RFUEVORFMgKz0gInZpcnR1YWwvY3J5cHQiCisKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0YXRpYyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3Rzb2Nrcy90c29ja3NfMS44YmV0YTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvdHNvY2tzL3Rzb2Nrc18xLjhiZXRhNS5iYgppbmRleCBiMjc1N2Y2Li43MjViYTE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvdHNvY2tzL3Rzb2Nrc18xLjhiZXRhNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvdHNvY2tzL3Rzb2Nrc18xLjhiZXRhNS5iYgpAQCAtMTgsMTEgKzE4LDE0IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCitMSUJTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sc3NwX25vbnNoYXJlZCIKK0xJQlNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIC1sY19ub25zaGFyZWQiCisKIFMgPSAiJHtXT1JLRElSfS90c29ja3MtMS44IgogCiBGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiAke2JpbmRpcn0vdHNvY2tzIgogRklMRVNfJHtQTn0tZGV2ID0gIiIKIElOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKIAotRVhUUkFfT0VNQUtFID0gIlNIQ0M9JyR7Q0N9IC1mUElDICR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFID0gIlNIQ0M9JyR7Q0N9IC1mUElDICR7TERGTEFHU30nIExJQlM9JyR7TElCU30nIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXMvY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCmluZGV4IDVkZDRjN2QuLjhjYWRiMmIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCkBAIC0xLDIzICsxLDI3IEBACi1Gcm9tIDdlMWFlNjg3OTE2ZmQ1ODc4ZWU3NTVhZmJkZWE2YjEwNDk0ZTBiOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+Ci1EYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDIzOjIxOjI1ICswMzAwCitGcm9tIDEyNDE0MzA0MjQ1Y2NlNmVmMGU4Yjk1NDc5NDliZTUxMDk4NDUzNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNCBKdWwgMjAxOCAxMzozMzozMyArMDgwMAogU3ViamVjdDogW1BBVENIXSBjbWFrZTogSW5zdGFsbCBsaWJjYXJlcy5wYwogCiBQcmVwYXJlIGFuZCBpbnN0YWxsIGxpYmNhcmVzLnBjIGZpbGUgZHVyaW5nIGNtYWtlIGJ1aWxkLCBzbyBsaWJyYXJpZXMKIHVzaW5nIHBrZy1jb25maWcgdG8gZmluZCBsaWJjYXJlcyB3aWxsIG5vdCBmYWlsLgogCiBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgRmlyYWdvIDxhbGV4ZXlfZmlyYWdvQG1lbnRvci5jb20+CisKK3VwZGF0ZSB0byAxLjE0LjAsIGZpeCBwYXRjaCB3YXJuaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgQ01ha2VMaXN0cy50eHQgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCiAgbGliY2FyZXMucGMuY21ha2VpbiB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspCisgMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNhcmVzLnBjLmNtYWtlaW4KIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDM2NGI2YzcuLjAwMTZiNjcgMTAwNjQ0CitpbmRleCA2MGE4ODBjLi43MWVhYTUzIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTczLDIxICsxNzMsMjkgQEAgQUREX0RFRklOSVRJT05TKCR7U1lTRkxBR1N9KQorQEAgLTE5MywyMiArMTkzLDMwIEBAIEFERF9ERUZJTklUSU9OUygke1NZU0ZMQUdTfSkKICAKICAKICAjIFRlbGwgQy1BcmVzIGFib3V0IGxpYnJhcmllcyB0byBkZXBlbmQgb24KQEAgLTQzLDMyICs0NywzNSBAQAogIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgd3MyXzMyKQogKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sd3MyXzMyIikKICBFTkRJRiAoKQorIAogK3N0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENBUkVTX1BSSVZBVEVfTElCUyAiJHtDQVJFU19QUklWQVRFX0xJQlNfTElTVH0iKQogIAotIAogICMgV2hlbiBjaGVja2luZyBmb3Igc3ltYm9scywgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBwcm9wZXIKLUBAIC00ODksNiArNDk3LDEzIEBAIENPTkZJR1VSRV9GSUxFIChhcmVzX2J1aWxkLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfYnVpbGQuaCkKKyAjIGhlYWRlcnMsIGxpYnJhcmllcywgYW5kIGRlZmluaXRpb25zIGZvciB0aGUgZGV0ZWN0aW9uIHRvIHdvcmsgcHJvcGVybHkKK0BAIC01MTQsNiArNTIyLDE1IEBAIENPTkZJR1VSRV9GSUxFIChhcmVzX2J1aWxkLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfYnVpbGQuaCkKICAjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KICBDT05GSUdVUkVfRklMRSAoYXJlc19jb25maWcuaC5jbWFrZSAke1BST0pFQ1RfQklOQVJZX0RJUn0vYXJlc19jb25maWcuaCkKICAKICsjIFBhc3MgcmVxdWlyZWQgQ0ZMQUdTIHRvIHBrZy1jb25maWcgaW4gY2FzZSBvZiBzdGF0aWMgbGlicmFyeQogK0lGIChDQVJFU19TVEFUSUMpCi0rCVNFVCAoQ1BQRkxBR19DQVJFU19TVEFUSUNMSUIgIi1EQ0FSRVNfU1RBVElDTElCIikKKysgICAgICAgU0VUIChDUFBGTEFHX0NBUkVTX1NUQVRJQ0xJQiAiLURDQVJFU19TVEFUSUNMSUIiKQogK0VORElGKCkKICsKICsjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KICtDT05GSUdVUkVfRklMRSAobGliY2FyZXMucGMuY21ha2VpbiAke1BST0pFQ1RfQklOQVJZX0RJUn0vbGliY2FyZXMucGMgQE9OTFkpCisrCisrCiAgCiAgIyBUUkFOU0ZPUk1fTUFLRUZJTEVfSU5DCiAgIwotQEAgLTYyNSw2ICs2NDAsMTIgQEAgSUYgKENBUkVTX0lOU1RBTEwpCi0gCUlOU1RBTEwgKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vJHtQUk9KRUNUX05BTUV9LWNvbmZpZy5jbWFrZSIgREVTVElOQVRJT04gJHtDTUFLRUNPTkZJR19JTlNUQUxMX0RJUn0pCitAQCAtNjY0LDYgKzY4MSwxMiBAQCBJRiAoQ0FSRVNfSU5TVEFMTCkKKyAJSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgREVTVElOQVRJT04gIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCiAgRU5ESUYgKCkKICAKICsjIHBrZy1jb25maWcgZmlsZQogK0lGIChDQVJFU19JTlNUQUxMKQotKwlTRVQgKFBLR0NPTkZJR19JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKLSsJSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgREVTVElOQVRJT04gJHtQS0dDT05GSUdfSU5TVEFMTF9ESVJ9KQorKyAgICAgICBTRVQgKFBLR0NPTkZJR19JTlNUQUxMX0RJUiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKKysgICAgICAgSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgREVTVElOQVRJT04gJHtQS0dDT05GSUdfSU5TVEFMTF9ESVJ9KQogK0VORElGICgpCiArCiAgIyBMZWdhY3kgY2hhaW4tYnVpbGRpbmcgdmFyaWFibGVzIChwcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBjb2RlKS4KQEAgLTc2LDcgKzgzLDcgQEAKICBTRVQgKENBUkVTX0ZPVU5EIDEgQ0FDSEUgSU5URVJOQUwgIkNBUkVTIExJQlJBUlkgRk9VTkQiKQogZGlmZiAtLWdpdCBhL2xpYmNhcmVzLnBjLmNtYWtlaW4gYi9saWJjYXJlcy5wYy5jbWFrZWluCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjI5ZmVkZQoraW5kZXggMDAwMDAwMC4uMzU3OTI1NgogLS0tIC9kZXYvbnVsbAogKysrIGIvbGliY2FyZXMucGMuY21ha2VpbgogQEAgLTAsMCArMSwyMCBAQApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZTQ5N2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KLVNVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWY0YjAyNjg4MDgzNGViMDFjMDM1YzVlNWNiNDdjY2FjIgotU1JDUkVWID0gIjNiZTE5MjQyMjFlMTMyNmRmNTIwZjg0OThkNzA0YTVjNGM4ZDBjY2UiCi1QViA9ICIxLjEzLjArZ2l0ciR7U1JDUFZ9IgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2MtYXJlcy9jLWFyZXMuZ2l0IFwKLSAgICBmaWxlOi8vY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0rICIke1BOfS11dGlscyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxNTQzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE0LjAuYmIKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBMRyBFbGVjdHJvbmljcywgSW5jLgorU1VNTUFSWSA9ICJjLWFyZXMgaXMgYSBDIGxpYnJhcnkgdGhhdCByZXNvbHZlcyBuYW1lcyBhc3luY2hyb25vdXNseS4iCitIT01FUEFHRSA9ICJodHRwOi8vZGFuaWVsLmhheHguc2UvcHJvamVjdHMvYy1hcmVzLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZmI5OTc0NTRjOGQ2MmFhNmE0N2YwN2E4Y2Q0OGIwMDYiCisKK1BWID0gIjEuMTQuMCtnaXRyJHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vYy1hcmVzL2MtYXJlcy5naXQgXAorICAgIGZpbGU6Ly9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIxN2RjMWIzMTAyZTBkZmMzZTdlMzEzNjk5ODkwMTMxNTRlZTE3ODkzIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJjYXJlcy0oP1A8cHZlcj5cZCtfKFxkXz8pKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyIKKworRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NlbHQwNTEvY2VsdDA1MS8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLXRvb2xzLXN1cHBvcnQtb3B0aW9uYWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NlbHQwNTEvY2VsdDA1MS8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLXRvb2xzLXN1cHBvcnQtb3B0aW9uYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA4MDllZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2VsdDA1MS9jZWx0MDUxLzAwMDEtY29uZmlndXJlLmFjLW1ha2UtdG9vbHMtc3VwcG9ydC1vcHRpb25hbC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDg2ZGY0MjAwYzljMzNkOTk5ZGYwZThjYzNjOTc3MWYxN2EyOTdlYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDE1OjAxOjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogbWFrZSB0b29scyBzdXBwb3J0IG9wdGlvbmFsCisKKyogYWRkIC0tZW5hYmxlLXRvb2xzIG9wdGlvbgorKiBYSVBIX1BBVEhfT0dHIG1hY3JvIGlzIHByb3ZpZGVkIGJ5IGxpYm9nZyBzbyB3ZSBjYW5ub3QgY2FsbAorICBpdCB3aXRob3V0IHRoZSBsaWJvZ2cgZGVwZW5kZW5jeQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgOCArKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZDRiMWEzZi4uN2Q2YjJkYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjgsOCArNjgsMTQgQEAgQUNfTVNHX1JFU1VMVCgkaGFzX2FsbG9jYSkKKyAKKyBBQ19DSEVDS19IRUFERVJTKHN5cy9zb3VuZGNhcmQuaCBzeXMvYXVkaW9pby5oKQorIAorLVhJUEhfUEFUSF9PR0coW3Rvb2xzPSJ0b29scyJdLCBbdG9vbHM9IiJdKQorK0FDX0FSR19FTkFCTEUodG9vbHMsIFsgIC0tZW5hYmxlLXRvb2xzICAgICAgICAgIENvbXBpbGUgb2dnIHRvb2xzXSwKKytbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXM7IHRoZW4KKysgIFt0b29scz0idG9vbHMiXQorK2Vsc2UKKysgIFt0b29scz0iIl0KKytmaV0sCisgQUNfU1VCU1QodG9vbHMpCisrKQorIAorIEFDX0NIRUNLX0xJQihtLCBzaW4pCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NlbHQwNTEvY2VsdDA1MS8wMDAxLXRlc3RzLUluY2x1ZGUtZW50Y29kZS5jLWludG8tdGVzdC1zb3VyY2VzLXRvLXByb3ZpZGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NlbHQwNTEvY2VsdDA1MS8wMDAxLXRlc3RzLUluY2x1ZGUtZW50Y29kZS5jLWludG8tdGVzdC1zb3VyY2VzLXRvLXByb3ZpZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M4OTNmMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2VsdDA1MS9jZWx0MDUxLzAwMDEtdGVzdHMtSW5jbHVkZS1lbnRjb2RlLmMtaW50by10ZXN0LXNvdXJjZXMtdG8tcHJvdmlkZS5wYXRjaApAQCAtMCwwICsxLDU1IEBACitGcm9tIDYxZmJkZGRiNjYwYzU5NDRhYzIzYjgyMDc1NGE3YzRjZjRlZWUwOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA4IEp1biAyMDE4IDE5OjI5OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBJbmNsdWRlIGVudGNvZGUuYyBpbnRvIHRlc3Qgc291cmNlcyB0byBwcm92aWRlCisgZGVmaW5pdGlvbnMgb2YgZnVuY3Rpb25zIGUuZy4gZWNfaWxvZygpCisKK0ZpeGVzIGxpbmsgZXJyb3JzIGluIHRlc3RzCit8IC91c3Ivc3JjL2RlYnVnL2NlbHQwNTEvMC41LjEuMytnaXRBVVRPSU5DKzU1NTVhYWU4NDMtcjAvZ2l0L3Rlc3RzLy4uL2xpYmNlbHQvcmFuZ2VkZWMuYzoyMDI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGVjX2lsb2cnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdGVzdHMvY3dyczMyLXRlc3QuYyAgfCAxICsKKyB0ZXN0cy9lY3Rlc3QuYyAgICAgICB8IDIgKy0KKyB0ZXN0cy9sYXBsYWNlLXRlc3QuYyB8IDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9jd3JzMzItdGVzdC5jIGIvdGVzdHMvY3dyczMyLXRlc3QuYworaW5kZXggM2E5NWRmMi4uYTE1OWFiMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2N3cnMzMi10ZXN0LmMKKysrKyBiL3Rlc3RzL2N3cnMzMi10ZXN0LmMKK0BAIC04LDYgKzgsNyBAQAorICNpbmNsdWRlICJyYW5nZWVuYy5jIgorICNpbmNsdWRlICJyYW5nZWRlYy5jIgorICNpbmNsdWRlICJjd3JzLmMiCisrI2luY2x1ZGUgImVudGNvZGUuYyIKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2RlZmluZSBOTUFYICgxMCkKKyAjZGVmaW5lIE1NQVggKDkpCitkaWZmIC0tZ2l0IGEvdGVzdHMvZWN0ZXN0LmMgYi90ZXN0cy9lY3Rlc3QuYworaW5kZXggYWEzNTQ1My4uOTRlYjlhMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2VjdGVzdC5jCisrKysgYi90ZXN0cy9lY3Rlc3QuYworQEAgLTUsNyArNSw3IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxtYXRoLmg+CistI2luY2x1ZGUgImVudGNvZGUuaCIKKysjaW5jbHVkZSAiZW50Y29kZS5jIgorICNpbmNsdWRlICJlbnRlbmMuYyIKKyAjaW5jbHVkZSAiZW50ZGVjLmMiCisgI2luY2x1ZGUgInJhbmdlZW5jLmMiCitkaWZmIC0tZ2l0IGEvdGVzdHMvbGFwbGFjZS10ZXN0LmMgYi90ZXN0cy9sYXBsYWNlLXRlc3QuYworaW5kZXggM2Y5OGFiMy4uOGUxZmI0ZSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xhcGxhY2UtdGVzdC5jCisrKysgYi90ZXN0cy9sYXBsYWNlLXRlc3QuYworQEAgLTYsNiArNiw3IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlICJsYXBsYWNlLmMiCisgI2luY2x1ZGUgInN0YWNrX2FsbG9jLmgiCisrI2luY2x1ZGUgImVudGNvZGUuYyIKKyAjaW5jbHVkZSAiZW50ZW5jLmMiCisgI2luY2x1ZGUgImVudGRlYy5jIgorICNpbmNsdWRlICJyYW5nZWVuYy5jIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jZWx0MDUxL2NlbHQwNTFfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jZWx0MDUxL2NlbHQwNTFfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNjgwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NlbHQwNTEvY2VsdDA1MV9naXQuYmIKQEAgLTAsMCArMSwzMyBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisKK1NVTU1BUlkgPSAiVGhlIENFTFQgY29kZWMgaXMgYSBjb21wcmVzc2lvbiBhbGdvcml0aG0gZm9yIGF1ZGlvIgorREVTQ1JJUFRJT04gPSAiVGhlIENFTFQgY29kZWMgaXMgYSBjb21wcmVzc2lvbiBhbGdvcml0aG0gZm9yIFwKK2F1ZGlvLiBMaWtlIE1QMywgVm9yYmlzLCBhbmQgQUFDIGl0IGlzIHN1aXRhYmxlIGZvciB0cmFuc21pdHRpbmcgbXVzaWMgXAord2l0aCBoaWdoIHF1YWxpdHkuIFVubGlrZSB0aGVzZSBmb3JtYXRzIENFTFQgaW1wb3NlcyB2ZXJ5IGxpdHRsZSBkZWxheSBcCitvbiB0aGUgc2lnbmFsLCBldmVuIGxlc3MgdGhhbiBpcyB0eXBpY2FsIGZvciBzcGVlY2ggY2VudHJpYyBmb3JtYXRzIFwKK2xpa2UgU3BlZXgsIEdTTSwgb3IgRy43MjkuIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM3NWY2MGFiMzYwZDE3ZjAxNzI3MzcwMzZmZjE1NWIyIgorCitQViA9ICIwLjUuMS4zK2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiNTU1NWFhZTg0M2Y1NzI0MWQwMDVlMzMwYjljYjY1NjAyZDU2ZGIwZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueGlwaC5vcmcvY2VsdC5naXQ7YnJhbmNoPWNvbXBhdC12MC41LjE7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtbWFrZS10b29scy1zdXBwb3J0LW9wdGlvbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtSW5jbHVkZS1lbnRjb2RlLmMtaW50by10ZXN0LXNvdXJjZXMtdG8tcHJvdmlkZS5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHID8/PSAiIgorCitQQUNLQUdFQ09ORklHW29nZ10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzLGxpYm9nZywiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueS9hcm1fZWFiaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueS9hcm1fZWFiaS5wYXRjaAppbmRleCA5MmEyZGJkLi45Zjk0M2NkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnkvYXJtX2VhYmkucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaHJvbnkvY2hyb255L2FybV9lYWJpLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotICAgIGNocm9ueTogZml4IGJ1aWxkIGZhaWx1cmUgZm9yIGFybWE5CitGcm9tIDljYTQ4YTZmZWYxZGExYmIwZGQ2N2FiOTQyNTZjN2UyNDBkYTE4MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDkgTWFyIDIwMTcgMTA6NTg6MDYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gICAgIGNocm9ueTogZml4IGJ1aWxkIGZhaWx1cmUgZm9yIGFybWE5CiAKICAgICBFbGltaW5hdGUgcmVmZXJlbmNlcyB0byBzeXNjYWxscyBub3QgYXZhaWxhYmxlCiAgICAgZm9yIEFSTV9FQUJJLiAgQWxzbyBhZGQgYSBkZXBlbmRlbmN5IG9uIGxpYnNlY2NvbXAKQEAgLTE2LDkgKzE5LDE1IEBACiAKICAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgSm9zbHluIDxyb2JlcnQuam9zbHluQHJlZHJlY3RhbmdsZS5vcmc+CiAKKy0tLQorIHN5c19saW51eC5jIHwgMTkgKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzX2xpbnV4LmMgYi9zeXNfbGludXguYworaW5kZXggZjRiNTMyZC4uZDA1ZmEyNCAxMDA2NDQKIC0tLSBhL3N5c19saW51eC5jCiArKysgYi9zeXNfbGludXguYwotQEAgLTQ2NSwxNCArNDY1LDE0IEBAIFNZU19MaW51eF9FbmFibGVTeXN0ZW1DYWxsRmlsdGVyKGludCBsZXYKK0BAIC00ODIsMTQgKzQ4MiwxNCBAQCBTWVNfTGludXhfRW5hYmxlU3lzdGVtQ2FsbEZpbHRlcihpbnQgbGV2ZWwpCiAgICBjb25zdCBpbnQgc3lzY2FsbHNbXSA9IHsKICAgICAgLyogQ2xvY2sgKi8KICAgICAgU0NNUF9TWVMoYWRqdGltZXgpLCBTQ01QX1NZUyhjbG9ja19nZXR0aW1lKSwgU0NNUF9TWVMoZ2V0dGltZW9mZGF5KSwKQEAgLTM2LDggKzQ1LDggQEAKICAgICAgU0NNUF9TWVMobXByb3RlY3QpLCBTQ01QX1NZUyhtcmVtYXApLCBTQ01QX1NZUyhtdW5tYXApLCBTQ01QX1NZUyhzaG1kdCksCiAgICAgIC8qIEZpbGVzeXN0ZW0gKi8KICAgICAgU0NNUF9TWVMoYWNjZXNzKSwgU0NNUF9TWVMoY2htb2QpLCBTQ01QX1NZUyhjaG93biksIFNDTVBfU1lTKGNob3duMzIpLAotQEAgLTQ4MywxNCArNDgzLDIxIEBACi0gICAgIFNDTVBfU1lTKGJpbmQpLCBTQ01QX1NZUyhjb25uZWN0KSwgU0NNUF9TWVMoZ2V0c29ja25hbWUpLAorQEAgLTUwMCwxNCArNTAwLDIxIEBAIFNZU19MaW51eF9FbmFibGVTeXN0ZW1DYWxsRmlsdGVyKGludCBsZXZlbCkKKyAgICAgU0NNUF9TWVMoYmluZCksIFNDTVBfU1lTKGNvbm5lY3QpLCBTQ01QX1NZUyhnZXRzb2NrbmFtZSksIFNDTVBfU1lTKGdldHNvY2tvcHQpLAogICAgICBTQ01QX1NZUyhyZWN2ZnJvbSksIFNDTVBfU1lTKHJlY3ZtbXNnKSwgU0NNUF9TWVMocmVjdm1zZyksCiAgICAgIFNDTVBfU1lTKHNlbmRtbXNnKSwgU0NNUF9TWVMoc2VuZG1zZyksIFNDTVBfU1lTKHNlbmR0byksCiAtICAgIC8qIFRPRE86IGNoZWNrIHNvY2tldGNhbGwgYXJndW1lbnRzICovCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaHJvbnkvY2hyb255XzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI5MGEzNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Nocm9ueS9jaHJvbnlfMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLVNVTU1BUlkgPSAiVmVyc2F0aWxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJDaHJvbnkgY2FuIHN5bmNocm9uaXplIHRoZSBzeXN0ZW0gY2xvY2sgd2l0aCBOVFAgXAotc2VydmVycywgcmVmZXJlbmNlIGNsb2NrcyAoZS5nLiBHUFMgcmVjZWl2ZXIpLCBhbmQgbWFudWFsIGlucHV0IHVzaW5nIFwKLXdyaXN0d2F0Y2ggYW5kIGtleWJvYXJkLiBJdCBjYW4gYWxzbyBvcGVyYXRlIGFzIGFuIE5UUHY0IChSRkMgNTkwNSkgXAotc2VydmVyIGFuZCBwZWVyIHRvIHByb3ZpZGUgYSB0aW1lIHNlcnZpY2UgdG8gb3RoZXIgY29tcHV0ZXJzIGluIHRoZSBcCi1uZXR3b3JrLiBcCi1cCi1JdCBpcyBkZXNpZ25lZCB0byBwZXJmb3JtIHdlbGwgaW4gYSB3aWRlIHJhbmdlIG9mIGNvbmRpdGlvbnMsIFwKLWluY2x1ZGluZyBpbnRlcm1pdHRlbnQgbmV0d29yayBjb25uZWN0aW9ucywgaGVhdmlseSBjb25nZXN0ZWQgXAotbmV0d29ya3MsIGNoYW5naW5nIHRlbXBlcmF0dXJlcyAob3JkaW5hcnkgY29tcHV0ZXIgY2xvY2tzIGFyZSBcCi1zZW5zaXRpdmUgdG8gdGVtcGVyYXR1cmUpLCBhbmQgc3lzdGVtcyB0aGF0IGRvIG5vdCBydW4gY29udGludW91c2x5LCBvciBcCi1ydW4gb24gYSB2aXJ0dWFsIG1hY2hpbmUuIFwKLVwKLVR5cGljYWwgYWNjdXJhY3kgYmV0d2VlbiB0d28gbWFjaGluZXMgb24gYSBMQU4gaXMgaW4gdGVucywgb3IgYSBmZXcgXAotaHVuZHJlZHMsIG9mIG1pY3Jvc2Vjb25kczsgb3ZlciB0aGUgSW50ZXJuZXQsIGFjY3VyYWN5IGlzIHR5cGljYWxseSBcCi13aXRoaW4gYSBmZXcgbWlsbGlzZWNvbmRzLiBXaXRoIGEgZ29vZCBoYXJkd2FyZSByZWZlcmVuY2UgY2xvY2sgXAotc3ViLW1pY3Jvc2Vjb25kIGFjY3VyYWN5IGlzIHBvc3NpYmxlLiBcCi1cCi1Ud28gcHJvZ3JhbXMgYXJlIGluY2x1ZGVkIGluIGNocm9ueTogY2hyb255ZCBpcyBhIGRhZW1vbiB0aGF0IGNhbiBiZSBcCi1zdGFydGVkIGF0IGJvb3QgdGltZSBhbmQgY2hyb255YyBpcyBhIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcHJvZ3JhbSBcCi13aGljaCBjYW4gYmUgdXNlZCB0byBtb25pdG9yIGNocm9ueWQncyBwZXJmb3JtYW5jZSBhbmQgdG8gY2hhbmdlIFwKLXZhcmlvdXMgb3BlcmF0aW5nIHBhcmFtZXRlcnMgd2hpbHN0IGl0IGlzIHJ1bm5pbmcuIFwKLVwKLVRoaXMgcmVjaXBlIHByb2R1Y2VzIHR3byBiaW5hcnkgcGFja2FnZXM6ICdjaHJvbnknIHdoaWNoIGNvbnRhaW5zIGNocm9ueWQsIFwKLXRoZSBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHRoZSBpbml0IHNjcmlwdCwgYW5kICdjaHJvbnljJyB3aGljaCBjb250YWlucyBcCi10aGUgY2xpZW50IHByb2dyYW0gb25seS4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vY2hyb255LnR1eGZhbWlseS5vcmcvIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC50dXhmYW1pbHkub3JnL2Nocm9ueS9jaHJvbnktJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vY2hyb255LmNvbmYgXAotICAgIGZpbGU6Ly9jaHJvbnlkIFwKLSAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImY0YzRlYjBkYzkyZjM1ZWU0YmI3ZDNkY2Q4MDI5ZWNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyOWY2NzE4ZGQ4YzNlY2UzZWVlNzhiZTFmNDgyMWNiYmViNjI2MDhlN2QyM2YyNWRhMjkzY2ZhNDMzYzQxMTYiCi0KLURFUEVORFMgPSAicHBzLXRvb2xzIgotCi0jIE5vdGU6IERlc3BpdGUgYmVpbmcgYnVpbHQgdmlhICcuL2NvbmZpZ3VyZTsgbWFrZTsgbWFrZSBpbnN0YWxsJywKLSMgICAgICAgY2hyb255IGRvZXMgbm90IHVzZSBHTlUgQXV0b3Rvb2xzLgotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLSMgQ29uZmlndXJhdGlvbiBvcHRpb25zOgotIyAtIEZvciBjb21tYW5kIGxpbmUgZWRpdGluZyBzdXBwb3J0IGluIGNocm9ueWMsIHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIKLSMgICAnZWRpdGxpbmUnIG9yICdyZWFkbGluZScgYnV0IG5vdCBib3RoLiAgZWRpdGxpbmUgaXMgc21hbGxlciwgYnV0Ci0jICAgbWFueSBzeXN0ZW1zIGFscmVhZHkgaGF2ZSByZWFkbGluZSBmb3Igb3RoZXIgcHVycG9zZXMgc28geW91IG1pZ2h0IHdhbnQKLSMgICB0byBjaG9vc2UgdGhhdCBpbnN0ZWFkLiAgSG93ZXZlciwgYmV3YXJlIGxpY2Vuc2UgaW5jb21wYXRpYmlsaXR5Ci0jICAgc2luY2UgY2hyb255IGlzIEdQTHYyIGFuZCByZWFkbGluZSB2ZXJzaW9ucyBhZnRlciA2LjAgYXJlIEdQTHYzKy4KLSMgICBZb3UgY2FuIG9mIGNvdXJzZSBjaG9vc2UgbmVpdGhlciwgYnV0IGlmIHlvdSdyZSB0aGF0IHRpZ2h0IG9uIHNwYWNlCi0jICAgY29uc2lkZXIgZHJvcHBpbmcgY2hyb255YyBlbnRpcmVseSAoeW91IGNhbiB1c2UgaXQgcmVtb3RlbHkgd2l0aAotIyAgIGFwcHJvcHJpYXRlIGNocm9ueS5jb25mIG9wdGlvbnMpLgotIyAtIFNlY3VyaXR5LXJlbGF0ZWQ6Ci0jICAgLSAnc2VjaGFzaCcgaXMgb21pdHRlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgcHVsbHMgaW4gbnNzIHdoaWNoIGlzIGh1Z2UuCi0jICAgLSAncHJpdmRyb3AnIGFsbG93cyBjaHJvbnlkIHRvIHJ1biBhcyBub24tcm9vdDsgd291bGQgbmVlZCBjaGFuZ2VzIHRvCi0jICAgICBjaHJvbnkuY29uZiBhbmQgaW5pdCBzY3JpcHQuCi0jICAgLSAnc2NmaWx0ZXInIGVuYWJsZXMgc3VwcG9ydCBmb3Igc3lzdGVtIGNhbGwgZmlsdGVyaW5nLCBidXQgcmVxdWlyZXMgdGhlCi0jICAgICBrZXJuZWwgdG8gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkLgotUEFDS0FHRUNPTkZJRyA/Pz0gImVkaXRsaW5lIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aG91dC1lZGl0bGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2VkaXRsaW5lXSA9ICIsLS13aXRob3V0LWVkaXRsaW5lLGxpYmVkaXQiCi1QQUNLQUdFQ09ORklHW3NlY2hhc2hdID0gIi0td2l0aG91dC10b21jcnlwdCwtLWRpc2FibGUtc2VjaGFzaCxuc3MiCi1QQUNLQUdFQ09ORklHW3ByaXZkcm9wXSA9ICIsLS1kaXNhYmxlLXByaXZkcm9wLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbc2NmaWx0ZXJdID0gIi0tZW5hYmxlLXNjZmlsdGVyLC0td2l0aG91dC1zZWNjb21wLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcywtLXdpdGhvdXQtbnNzLG5zcyIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotCi0jIC0tZGlzYWJsZS1zdGF0aWMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGNocm9ueSdzIGNvbmZpZ3VyZSBzY3JpcHQuCi1ESVNBQkxFX1NUQVRJQyA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSAtLWJpbmRpcj0ke2JpbmRpcn0gLS1zYmluZGlyPSR7c2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IC0tZGF0YXJvb3RkaXI9JHtkYXRhZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotfQotCi1kb19pbnN0YWxsKCkgewotICAgICMgQmluYXJpZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jaHJvbnljICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY2hyb255ZCAke0R9JHtzYmluZGlyfQotCi0gICAgIyBDb25maWcgZmlsZQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Nocm9ueS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLSAgICAjIFN5c3RlbSBWIGluaXQgc2NyaXB0Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2Nocm9ueWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICAjIHN5c3RlbWQgdW5pdCBjb25maWd1cmF0aW9uIGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvY2hyb255ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCi0gICAgIyBWYXJpYWJsZSBkYXRhIChmb3IgZHJpZnQgYW5kL29yIHJ0YyBmaWxlKQotICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2Nocm9ueQotCi0gICAgIyBMb2cgZmlsZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jaHJvbnkKLQotICAgICMgRml4IGhhcmQtY29kZWQgcGF0aHMgaW4gY29uZmlnIGZpbGVzIGFuZCBpbml0IHNjcmlwdHMKLSAgICBzZWQgLWkgLWUgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgLWUgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgXAotICAgICAgICAgICAtZSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnIC1lICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnIFwKLSAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYgXAotICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2hyb255ZCBcCi0gICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jaHJvbnlkCi0gICAgc2VkIC1pICdzIV5FbnZpcm9ubWVudEZpbGU9LiohRW52aXJvbm1lbnRGaWxlPS0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2hyb255ZCEnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQotfQotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L2Nocm9ueWQgJHtzeXNjb25mZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IgotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYiCi1JTklUU0NSSVBUX05BTUUgPSAiY2hyb255ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjaHJvbnlkLnNlcnZpY2UiCi0KLSMgSXQncyBwcm9iYWJseSBhIGJhZCBpZGVhIHRvIHJ1biBjaHJvbnkgYW5kIGFub3RoZXIgdGltZSBkYWVtb24gb24KLSMgdGhlIHNhbWUgc3lzdGVtLiAgc3lzdGVtZCBpbmNsdWRlcyB0aGUgU05UUCBjbGllbnQgJ3RpbWVzeW5jZCcsIHdoaWNoCi0jIHdpbGwgYmUgZGlzYWJsZWQgYnkgY2hyb255ZC5zZXJ2aWNlLCBob3dldmVyIGl0IHdpbGwgcmVtYWluIG9uIHRoZSByb290ZnMKLSMgd2FzdGluZyAxNTAga0IgdW5sZXNzIHlvdSBwdXQgJ1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3BuLXN5c3RlbWQgPSAidGltZXN5bmNkIicKLSMgaW4gYSBjb25mIGZpbGUgb3IgYmJhcHBlbmQgc29tZXdoZXJlLgotUkNPTkZMSUNUU18ke1BOfSA9ICJudHAgbnRpbWVkIgotCi0jIFNlcGFyYXRlIHRoZSBjbGllbnQgcHJvZ3JhbSBpbnRvIGl0cyBvd24gcGFja2FnZQotUEFDS0FHRVMgPSsgImNocm9ueWMiCi1GSUxFU19jaHJvbnljID0gIiR7YmluZGlyfS9jaHJvbnljIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaHJvbnkvY2hyb255XzMuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueV8zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4NjM3MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2hyb255L2Nocm9ueV8zLjMuYmIKQEAgLTAsMCArMSwxMzQgQEAKK1NVTU1BUlkgPSAiVmVyc2F0aWxlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJDaHJvbnkgY2FuIHN5bmNocm9uaXplIHRoZSBzeXN0ZW0gY2xvY2sgd2l0aCBOVFAgXAorc2VydmVycywgcmVmZXJlbmNlIGNsb2NrcyAoZS5nLiBHUFMgcmVjZWl2ZXIpLCBhbmQgbWFudWFsIGlucHV0IHVzaW5nIFwKK3dyaXN0d2F0Y2ggYW5kIGtleWJvYXJkLiBJdCBjYW4gYWxzbyBvcGVyYXRlIGFzIGFuIE5UUHY0IChSRkMgNTkwNSkgXAorc2VydmVyIGFuZCBwZWVyIHRvIHByb3ZpZGUgYSB0aW1lIHNlcnZpY2UgdG8gb3RoZXIgY29tcHV0ZXJzIGluIHRoZSBcCituZXR3b3JrLiBcCitcCitJdCBpcyBkZXNpZ25lZCB0byBwZXJmb3JtIHdlbGwgaW4gYSB3aWRlIHJhbmdlIG9mIGNvbmRpdGlvbnMsIFwKK2luY2x1ZGluZyBpbnRlcm1pdHRlbnQgbmV0d29yayBjb25uZWN0aW9ucywgaGVhdmlseSBjb25nZXN0ZWQgXAorbmV0d29ya3MsIGNoYW5naW5nIHRlbXBlcmF0dXJlcyAob3JkaW5hcnkgY29tcHV0ZXIgY2xvY2tzIGFyZSBcCitzZW5zaXRpdmUgdG8gdGVtcGVyYXR1cmUpLCBhbmQgc3lzdGVtcyB0aGF0IGRvIG5vdCBydW4gY29udGludW91c2x5LCBvciBcCitydW4gb24gYSB2aXJ0dWFsIG1hY2hpbmUuIFwKK1wKK1R5cGljYWwgYWNjdXJhY3kgYmV0d2VlbiB0d28gbWFjaGluZXMgb24gYSBMQU4gaXMgaW4gdGVucywgb3IgYSBmZXcgXAoraHVuZHJlZHMsIG9mIG1pY3Jvc2Vjb25kczsgb3ZlciB0aGUgSW50ZXJuZXQsIGFjY3VyYWN5IGlzIHR5cGljYWxseSBcCit3aXRoaW4gYSBmZXcgbWlsbGlzZWNvbmRzLiBXaXRoIGEgZ29vZCBoYXJkd2FyZSByZWZlcmVuY2UgY2xvY2sgXAorc3ViLW1pY3Jvc2Vjb25kIGFjY3VyYWN5IGlzIHBvc3NpYmxlLiBcCitcCitUd28gcHJvZ3JhbXMgYXJlIGluY2x1ZGVkIGluIGNocm9ueTogY2hyb255ZCBpcyBhIGRhZW1vbiB0aGF0IGNhbiBiZSBcCitzdGFydGVkIGF0IGJvb3QgdGltZSBhbmQgY2hyb255YyBpcyBhIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcHJvZ3JhbSBcCit3aGljaCBjYW4gYmUgdXNlZCB0byBtb25pdG9yIGNocm9ueWQncyBwZXJmb3JtYW5jZSBhbmQgdG8gY2hhbmdlIFwKK3ZhcmlvdXMgb3BlcmF0aW5nIHBhcmFtZXRlcnMgd2hpbHN0IGl0IGlzIHJ1bm5pbmcuIFwKK1wKK1RoaXMgcmVjaXBlIHByb2R1Y2VzIHR3byBiaW5hcnkgcGFja2FnZXM6ICdjaHJvbnknIHdoaWNoIGNvbnRhaW5zIGNocm9ueWQsIFwKK3RoZSBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHRoZSBpbml0IHNjcmlwdCwgYW5kICdjaHJvbnljJyB3aGljaCBjb250YWlucyBcCit0aGUgY2xpZW50IHByb2dyYW0gb25seS4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vY2hyb255LnR1eGZhbWlseS5vcmcvIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC50dXhmYW1pbHkub3JnL2Nocm9ueS9jaHJvbnktJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vY2hyb255LmNvbmYgXAorICAgIGZpbGU6Ly9jaHJvbnlkIFwKKyAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjgxYWI2MmNmNWQ2MGI0YjNmYThjZDJjMWIyNjdmZmQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkMWZiMmQ1ODc1MDMyZjJkNWE4NmYzNzcwMzc0Yzg3ZWU0Yzk0MTkxNmY2NDE3MWU4MWY3Njg0ZjJhNzMxMjgiCisKK0RFUEVORFMgPSAicHBzLXRvb2xzIgorCisjIE5vdGU6IERlc3BpdGUgYmVpbmcgYnVpbHQgdmlhICcuL2NvbmZpZ3VyZTsgbWFrZTsgbWFrZSBpbnN0YWxsJywKKyMgICAgICAgY2hyb255IGRvZXMgbm90IHVzZSBHTlUgQXV0b3Rvb2xzLgoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKKyMgQ29uZmlndXJhdGlvbiBvcHRpb25zOgorIyAtIEZvciBjb21tYW5kIGxpbmUgZWRpdGluZyBzdXBwb3J0IGluIGNocm9ueWMsIHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIKKyMgICAnZWRpdGxpbmUnIG9yICdyZWFkbGluZScgYnV0IG5vdCBib3RoLiAgZWRpdGxpbmUgaXMgc21hbGxlciwgYnV0CisjICAgbWFueSBzeXN0ZW1zIGFscmVhZHkgaGF2ZSByZWFkbGluZSBmb3Igb3RoZXIgcHVycG9zZXMgc28geW91IG1pZ2h0IHdhbnQKKyMgICB0byBjaG9vc2UgdGhhdCBpbnN0ZWFkLiAgSG93ZXZlciwgYmV3YXJlIGxpY2Vuc2UgaW5jb21wYXRpYmlsaXR5CisjICAgc2luY2UgY2hyb255IGlzIEdQTHYyIGFuZCByZWFkbGluZSB2ZXJzaW9ucyBhZnRlciA2LjAgYXJlIEdQTHYzKy4KKyMgICBZb3UgY2FuIG9mIGNvdXJzZSBjaG9vc2UgbmVpdGhlciwgYnV0IGlmIHlvdSdyZSB0aGF0IHRpZ2h0IG9uIHNwYWNlCisjICAgY29uc2lkZXIgZHJvcHBpbmcgY2hyb255YyBlbnRpcmVseSAoeW91IGNhbiB1c2UgaXQgcmVtb3RlbHkgd2l0aAorIyAgIGFwcHJvcHJpYXRlIGNocm9ueS5jb25mIG9wdGlvbnMpLgorIyAtIFNlY3VyaXR5LXJlbGF0ZWQ6CisjICAgLSAnc2VjaGFzaCcgaXMgb21pdHRlZCBieSBkZWZhdWx0IGJlY2F1c2UgaXQgcHVsbHMgaW4gbnNzIHdoaWNoIGlzIGh1Z2UuCisjICAgLSAncHJpdmRyb3AnIGFsbG93cyBjaHJvbnlkIHRvIHJ1biBhcyBub24tcm9vdDsgd291bGQgbmVlZCBjaGFuZ2VzIHRvCisjICAgICBjaHJvbnkuY29uZiBhbmQgaW5pdCBzY3JpcHQuCisjICAgLSAnc2NmaWx0ZXInIGVuYWJsZXMgc3VwcG9ydCBmb3Igc3lzdGVtIGNhbGwgZmlsdGVyaW5nLCBidXQgcmVxdWlyZXMgdGhlCisjICAgICBrZXJuZWwgdG8gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkLgorUEFDS0FHRUNPTkZJRyA/Pz0gImVkaXRsaW5lIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aG91dC1lZGl0bGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2VkaXRsaW5lXSA9ICIsLS13aXRob3V0LWVkaXRsaW5lLGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW3NlY2hhc2hdID0gIi0td2l0aG91dC10b21jcnlwdCwtLWRpc2FibGUtc2VjaGFzaCxuc3MiCitQQUNLQUdFQ09ORklHW3ByaXZkcm9wXSA9ICIsLS1kaXNhYmxlLXByaXZkcm9wLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbc2NmaWx0ZXJdID0gIi0tZW5hYmxlLXNjZmlsdGVyLC0td2l0aG91dC1zZWNjb21wLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcywtLXdpdGhvdXQtbnNzLG5zcyIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgorCisjIC0tZGlzYWJsZS1zdGF0aWMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IGNocm9ueSdzIGNvbmZpZ3VyZSBzY3JpcHQuCitESVNBQkxFX1NUQVRJQyA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfSAtLWJpbmRpcj0ke2JpbmRpcn0gLS1zYmluZGlyPSR7c2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IC0tZGF0YXJvb3RkaXI9JHtkYXRhZGlyfSBcCisgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsKCkgeworICAgICMgQmluYXJpZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9jaHJvbnljICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY2hyb255ZCAke0R9JHtzYmluZGlyfQorCisgICAgIyBDb25maWcgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Nocm9ueS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKyAgICAjIFN5c3RlbSBWIGluaXQgc2NyaXB0CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2Nocm9ueWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisKKyAgICAjIHN5c3RlbWQgdW5pdCBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvY2hyb255ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCisgICAgIyBWYXJpYWJsZSBkYXRhIChmb3IgZHJpZnQgYW5kL29yIHJ0YyBmaWxlKQorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2Nocm9ueQorCisgICAgIyBMb2cgZmlsZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jaHJvbnkKKworICAgICMgRml4IGhhcmQtY29kZWQgcGF0aHMgaW4gY29uZmlnIGZpbGVzIGFuZCBpbml0IHNjcmlwdHMKKyAgICBzZWQgLWkgLWUgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgLWUgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgXAorICAgICAgICAgICAtZSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnIC1lICdzIS91c3IvYmluLyEke2JpbmRpcn0vIWcnIFwKKyAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYgXAorICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2hyb255ZCBcCisgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQorICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jaHJvbnlkCisgICAgc2VkIC1pICdzIV5FbnZpcm9ubWVudEZpbGU9LiohRW52aXJvbm1lbnRGaWxlPS0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2hyb255ZCEnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nocm9ueWQuc2VydmljZQorfQorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L2Nocm9ueWQgJHtzeXNjb25mZGlyfSAke2xvY2Fsc3RhdGVkaXJ9IgorQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY2hyb255LmNvbmYiCitJTklUU0NSSVBUX05BTUUgPSAiY2hyb255ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjaHJvbnlkLnNlcnZpY2UiCisKKyMgSXQncyBwcm9iYWJseSBhIGJhZCBpZGVhIHRvIHJ1biBjaHJvbnkgYW5kIGFub3RoZXIgdGltZSBkYWVtb24gb24KKyMgdGhlIHNhbWUgc3lzdGVtLiAgc3lzdGVtZCBpbmNsdWRlcyB0aGUgU05UUCBjbGllbnQgJ3RpbWVzeW5jZCcsIHdoaWNoCisjIHdpbGwgYmUgZGlzYWJsZWQgYnkgY2hyb255ZC5zZXJ2aWNlLCBob3dldmVyIGl0IHdpbGwgcmVtYWluIG9uIHRoZSByb290ZnMKKyMgd2FzdGluZyAxNTAga0IgdW5sZXNzIHlvdSBwdXQgJ1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3BuLXN5c3RlbWQgPSAidGltZXN5bmNkIicKKyMgaW4gYSBjb25mIGZpbGUgb3IgYmJhcHBlbmQgc29tZXdoZXJlLgorUkNPTkZMSUNUU18ke1BOfSA9ICJudHAgbnRpbWVkIgorCisjIFNlcGFyYXRlIHRoZSBjbGllbnQgcHJvZ3JhbSBpbnRvIGl0cyBvd24gcGFja2FnZQorUEFDS0FHRVMgPSsgImNocm9ueWMiCitGSUxFU19jaHJvbnljID0gIiR7YmluZGlyfS9jaHJvbnljIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdGRiL2N0ZGIvMDEtc3VwcG9ydC1jcm9zcy1jb21waWxlLWZvci1saW51eC1vcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiLzAxLXN1cHBvcnQtY3Jvc3MtY29tcGlsZS1mb3ItbGludXgtb3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MTk1YjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdGRiL2N0ZGIvMDEtc3VwcG9ydC1jcm9zcy1jb21waWxlLWZvci1saW51eC1vcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXN1cHBvcnQgY3Jvc3MtY29tcGlsZSBmb3IgbGludXgtb3MuCi0KLVNpZ25lZC1vZmYtYnk6IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgotCi1kaWZmIC1OdXJwIGN0ZGItMi41LjEub3JpZy9jb25maWd1cmUgY3RkYi0yLjUuMS9jb25maWd1cmUKLS0tLSBjdGRiLTIuNS4xLm9yaWcvY29uZmlndXJlCTIwMTUtMDUtMDcgMTY6MjQ6MjguNTQ1MDAwMjM4ICswOTAwCi0rKysgY3RkYi0yLjUuMS9jb25maWd1cmUJMjAxNS0wNS0wNyAxNjoyODoyMC44OTQwMDAyNDQgKzA5MDAKLUBAIC0xMDY5MiwxMCArMTA2OTIsMTYgQEAgaWYgdGVzdCB4IiRsaWJyZXBsYWNlX2N2X0hBVkVfR0VUQUREUklORgotIAkjIHNlZSBidWcgNTkxMCwgdXNlIG91ciByZXBsYWNlbWVudHMgaWYgd2UgZGV0ZWN0Ci0gCSMgYSBicm9rZW4gc3lzdGVtLgotIAlpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0rCQljYXNlICIkdGFyZ2V0X29zIiBpbgotKwkJKmxpbnV4KikKLSsJCQk7OwotKwkJKikKLSAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLSBhc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gd2hpbGUgY3Jvc3MgY29tcGlsaW5nCi0gU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSsJCQk7OwotKwkJZXNhYwotIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYi8wMi1saW5rLXJlcF9zbnByaW50Zi1mb3ItbHRkYnRvb2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYi8wMi1saW5rLXJlcF9zbnByaW50Zi1mb3ItbHRkYnRvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyOTRmZTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdGRiL2N0ZGIvMDItbGluay1yZXBfc25wcmludGYtZm9yLWx0ZGJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotbGluayByZXBfc25wcmludGYgZnJvbSBsaWIvcmVwbGFjZS9zbnByaW50Zi5vIGZvciBsdGRidG9vbAotCi1TaWduZWQtb2ZmLWJ5OiBCaWFuIE5haW1lbmcgPGJpYW5ubUBjbi5mdWppdHN1LmNvbT4KLQotSW5kZXg6IGN0ZGItMi41LjYvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdGRiLTIuNS42Lm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBjdGRiLTIuNS42L01ha2VmaWxlLmluCi1AQCAtMTc2LDcgKzE3Niw3IEBAIGJpbi9jdGRiOiAkKENUREJfQ0xJRU5UX09CSikgdG9vbHMvY3RkYi4KLSAJQGVjaG8gTGlua2luZyAkQAotIAkkKFdSQVBQRVIpICQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCB0b29scy9jdGRiLm8gdG9vbHMvY3RkYl92YWN1dW0ubyAkKENUREJfQ0xJRU5UX09CSikgJChMSUJfRkxBR1MpCi0gCi0tYmluL2x0ZGJ0b29sOiB0b29scy9sdGRidG9vbC5vICQoVERCX09CSikKLStiaW4vbHRkYnRvb2w6IHRvb2xzL2x0ZGJ0b29sLm8gJChUREJfT0JKKSBsaWIvcmVwbGFjZS9zbnByaW50Zi5vCi0gCUBlY2hvIExpbmtpbmcgJEAKLSAJJChXUkFQUEVSKSAkKENDKSAkKENGTEFHUykgLW8gJEAgJCsgJChMSUJfRkxBR1MpCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYi9zZXJ2aWNlLWVuc3VyZS10aGUtUElELWRpcmVjdG9yeS1pcy1jcmVhdGVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdGRiL2N0ZGIvc2VydmljZS1lbnN1cmUtdGhlLVBJRC1kaXJlY3RvcnktaXMtY3JlYXRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdlOTg3Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYi9zZXJ2aWNlLWVuc3VyZS10aGUtUElELWRpcmVjdG9yeS1pcy1jcmVhdGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSBmMDJmZjczODNmMWNjMGMxMTg3MzIzNTJjY2JhZTQ3NmM3YjNiM2JhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTcgTm92IDIwMTUgMTY6MTc6MDAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2VydmljZTogZW5zdXJlIHRoZSBQSUQgZGlyZWN0b3J5IGlzIGNyZWF0ZWQKLQotU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZy9jdGRiLnNlcnZpY2UgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy9jdGRiLnNlcnZpY2UgYi9jb25maWcvY3RkYi5zZXJ2aWNlCi1pbmRleCBlYTM3YzMwLi44NTM3MTA1IDEwMDY0NAotLS0tIGEvY29uZmlnL2N0ZGIuc2VydmljZQotKysrIGIvY29uZmlnL2N0ZGIuc2VydmljZQotQEAgLTUsNiArNSw3IEBAIEFmdGVyPW5ldHdvcmsudGFyZ2V0Ci0gW1NlcnZpY2VdCi0gVHlwZT1mb3JraW5nCi0gTGltaXRDT1JFPWluZmluaXR5Ci0rUnVudGltZURpcmVjdG9yeT0vcnVuL2N0ZGIKLSBQSURGaWxlPS9ydW4vY3RkYi9jdGRiZC5waWQKLSBFeGVjU3RhcnQ9L3Vzci9zYmluL2N0ZGJkX3dyYXBwZXIgL3J1bi9jdGRiL2N0ZGJkLnBpZCBzdGFydAotIEV4ZWNTdG9wPS91c3Ivc2Jpbi9jdGRiZF93cmFwcGVyIC9ydW4vY3RkYi9jdGRiZC5waWQgc3RvcAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N0ZGIvY3RkYl8yLjUuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiXzIuNS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWE2MDY0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3RkYi9jdGRiXzIuNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ1REQiBpcyBhIGNsdXN0ZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIFREQiBkYXRhYmFzZSBcCi11c2VkIGJ5IFNhbWJhIGFuZCBvdGhlciBwcm9qZWN0cyB0byBzdG9yZSB0ZW1wb3JhcnkgZGF0YS4gSWYgYW4gXAotYXBwbGljYXRpb24gaXMgYWxyZWFkeSB1c2luZyBUREIgZm9yIHRlbXBvcmFyeSBkYXRhIGl0IGlzIHZlcnkgZWFzeSBcCi10byBjb252ZXJ0IHRoYXQgYXBwbGljYXRpb24gdG8gYmUgY2x1c3RlciBhd2FyZSBhbmQgdXNlIENUREIgaW5zdGVhZC4iCi1IT01FUEFHRSA9ICJodHRwczovL2N0ZGIuc2FtYmEub3JnLyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCsgJiBMR1BMLTMuMCsgJiBHUEwtMy4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvTEdQTC0zLjA7bWQ1PWJmY2NmZTk1MjI2OWZmZjJiNDA3ZGQxMWYyZjMwODNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2IFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnNhbWJhLm9yZy9wdWIvJHtCUE59LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMS1zdXBwb3J0LWNyb3NzLWNvbXBpbGUtZm9yLWxpbnV4LW9zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAyLWxpbmstcmVwX3NucHJpbnRmLWZvci1sdGRidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXJ2aWNlLWVuc3VyZS10aGUtUElELWRpcmVjdG9yeS1pcy1jcmVhdGVkLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmM1MDEwOWY5MGE0Yzc5MDEyNGMzNWU0YmEyMzRhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzFjZGQ3ZWZjYzkxYWZjNjI5ZjIxNDA4MjgxYmJhNWRhMTA3YjljMTdlNzRiZGVlMmYyOGE1MzJkMTRmODc0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlidGRiXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtdGRiLC0td2l0aC1pbmNsdWRlZC10ZGIsbGlidGRiIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotREVQRU5EUyArPSAicG9wdCBsaWJ0ZXZlbnQgbGlidGFsbG9jIGxpYmxkYiIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKLQotIyBjdGRiZF93cmFwcGVyIHJlcXVpcmVzIHBncmVwLCBoZW5jZSBwcm9jcHMKLVJERVBFTkRTXyR7UE59ICs9ICJwcm9jcHMiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb25maWcvY3RkYi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jdGRiLnNlcnZpY2UKLSAgICBzZWQgLWkgLWUgJ3MsXChbPVwgXVwpL3J1bi8sXDEke2xvY2Fsc3RhdGVkaXJ9L3J1bi8sJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jdGRiLnNlcnZpY2UKLQotICAgIHJtIC1yICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotIyBUaGUgc3lzdGVtZCBzZXJ2aWNlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQsIGFzIHRoZSBzZXJ2aWNlIHdpbGwgZmFpbCB0bwotIyBzdGFydCB3aXRob3V0IC9ldGMvY3RkYi9ub2Rlcy4gSWYgdGhlIHVzZXIgc3VwcGxpZXMgdGhpcywgdGhleSBjYW4gcmUtZW5hYmxlCi0jIHRoZSBzZXJ2aWNlLgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImN0ZGIuc2VydmljZSIKLQotIyBvbm5vZGUgaXMgYSBzaGVsbCBzY3JpcHQgd2l0aCBiYXNoaXNtcyBhbmQgYmFzaCAjIQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N1cmxwcC9jdXJscHBfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2N1cmxwcC9jdXJscHBfMC44LjEuYmIKaW5kZXggMzQwZjU3ZC4uNzk5Y2Y4NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jdXJscHAvY3VybHBwXzAuOC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY3VybHBwL2N1cmxwcF8wLjguMS5iYgpAQCAtMiw3ICsyLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuY3VybHBwLm9yZy8iCiBTRUNUSU9OID0gImxpYmRldmVsIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT1mZDBjOWFkZjI4NWE2OWFhM2I0ZmFmMzQzODRlMTAyOSIKIAogREVQRU5EUyA9ICJjdXJsIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiY3VybC1uYXRpdmUiCkBAIC0xNSwxOSArMTUsNCBAQAogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBiaW5jb25maWcKIAotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHNlZCAtaSAncywke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2N1cmxwcC5wYwotfQotCi1QQUNLQUdFUyA9KyAibGliY3VybHBwIGxpYmN1cmxwcC1kZXYgbGliY3VybHBwLXN0YXRpY2RldiIKLQotRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi0KLUZJTEVTX2xpYiR7QlBOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZyBcCi0gICAgJHtiaW5kaXJ9LyotY29uZmlnIFwKLSIKLQotRklMRVNfbGliJHtCUE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGliKi5hIgotCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS9sdWEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcS9sdWEucGF0Y2gKaW5kZXggMDk5MWRkOC4uMWJmMGY3NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3EvbHVhLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxL2x1YS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKIEZyb20gYmUxYjNkMmQwZjE2MDhjYmE1ZWZlZTczZDZhYWM1YWQwNzA5MDQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEpvZSBNYWNEb25hbGQgPGpvZV9tYWNkb25hbGRAbWVudG9yLmNvbT4KIERhdGU6IFR1ZSwgOSBTZXAgMjAxNCAxMDoyNDo1OCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0NjVmOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZG5zbWFzcV8yLjc4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIGRuc21hc3EuaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vbHVhLnBhdGNoIFwKLSAgICBmaWxlOi8vQ1ZFLTIwMTctMTUxMDcucGF0Y2ggXAotIgotCi1TUkNfVVJJW2Ruc21hc3EtMi43OC5tZDVzdW1dID0gIjNiYjk3ZjI2NGM3Mzg1M2Y4MDJiZjcwNjEwMTUwNzg4IgotU1JDX1VSSVtkbnNtYXNxLTIuNzguc2hhMjU2c3VtXSA9ICJjOTJlNWQ3OGFhNjM1MzM1NGQwMmFhYmY3NDU5MGQwODk4MGJiMTM4NWQ4YTAwYjgwZWY5YmM4MDQzMGFhMWRjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNtYXNxL2Ruc21hc3FfMi43OS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2YjlhOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9kbnNtYXNxXzIuNzkuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIGRuc21hc3EuaW5jCisKK1NSQ19VUklbZG5zbWFzcS0yLjc5Lm1kNXN1bV0gPSAiNWQ3MTIwYTQ2ZDBjMTZhMzM0ZjQ2NzU3ZDdlMmJhNTUiCitTUkNfVVJJW2Ruc21hc3EtMi43OS5zaGEyNTZzdW1dID0gIjc3NTEyZGQ2ZjMxZmZkOTY3MThlOGRjYmJmNTRmMDJjMDgzZjA1MWQ0Y2NhNzA5YmQzMjU0MGFlYTI2OWY3ODkiCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovL2x1YS5wYXRjaCBcCisiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9maWxlcy9DVkUtMjAxNy0xNTEwNy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zbWFzcS9maWxlcy9DVkUtMjAxNy0xNTEwNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAxMTAxYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2Ruc21hc3EvZmlsZXMvQ1ZFLTIwMTctMTUxMDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotRnJvbSA1YTU2ZTFiNzhhNzUzZDMyOTU1NjRkYWRkYzljZTM4OWNjNjlmZDY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2ltb24gS2VsbGV5IDxzaW1vbkB0aGVrZWxsZXlzLm9yZy51az4KLURhdGU6IEZyaSwgMTkgSmFuIDIwMTggMTI6MjY6MDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRE5TU0VDIGZpeCBmb3Igd2lsZGNhcmQgTlNFQyByZWNvcmRzLiBDVkUtMjAxNy0xNTEwNyBhcHBsaWVzLgotCi1JdCdzIE9LIGZvciBOU0VDIHJlY29yZHMgdG8gYmUgZXhwYW5kZWQgZnJvbSB3aWxkY2FyZHMsCi1idXQgaW4gdGhhdCBjYXNlLCB0aGUgcHJvb2Ygb2Ygbm9uLWV4aXN0ZW5jZSBpcyBvbmx5IHZhbGlkCi1zdGFydGluZyBhdCB0aGUgd2lsZGNhcmQgbmFtZSwgKi48ZG9tYWluPiBOT1QgdGhlIG5hbWUgZXhwYW5kZWQKLWZyb20gdGhlIHdpbGRjYXJkLiBXaXRob3V0IHRoaXMgY2hlY2sgaXQncyBwb3NzaWJsZSBmb3IgYW4KLWF0dGFja2VyIHRvIGNyYWZ0IGFuIE5TRUMgd2hpY2ggd3JvbmdseSBwcm92ZXMgbm9uLWV4aXN0ZW5jZQotaW4gYSBkb21haW4gd2hpY2ggaW5jbHVkZXMgYSB3aWxkY2FyZCBmb3IgTlNFQy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL3RoZWtlbGxleXMub3JnLnVrL2dpdHdlYi8/cD1kbnNtYXNxLmdpdDthPWNvbW1pdDtoPTRmZTY3NDRhMjIwZWRkZDNmMTc0OWI0MGNhYzNkZmM1MTA3ODdkZTZdCi1DVkU6IENWRS0yMDE3LTE1MTA3Ci1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gQ0hBTkdFTE9HICAgIHwgIDQ0ICsrKysrKysrKysrKysrKysrKysKLSBzcmMvZG5zc2VjLmMgfCAxMTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VMT0cgYi9DSEFOR0VMT0cKLWluZGV4IDA3NWZlMWE2Li41MjI2ZGNlOCAxMDA2NDQKLS0tLSBhL0NIQU5HRUxPRwotKysrIGIvQ0hBTkdFTE9HCi1AQCAtMSwzICsxLDQ3IEBACi0rdmVyc2lvbiAyLjc5Ci0rCUZpeCBwYXJzaW5nIG9mIENOQU1FIGFyZ3VtZW50cywgd2hpY2ggYXJlIGNvbmZ1c2VkIGJ5IGV4dHJhIHNwYWNlcy4KLSsJVGhhbmtzIHRvIERpZWdvIEFndWlycmUgZm9yIHNwb3R0aW5nIHRoZSBidWcuCi0rCi0rCVdoZXJlIGF2YWlsYWJsZSwgdXNlIElQX1VOSUNBU1RfSUYgb3IgSVBWNl9VTklDQVNUX0lGIHRvIGJpbmQKLSsJdXBzdHJlYW0gc2VydmVycyB0byBhbiBpbnRlcmZhY2UsIHJhdGhlciB0aGFuIFNPX0JJTkRUT0RFVklDRS4KLSsJVGhhbmtzIHRvIEJlbmlhbWlubyBHYWx2YW5pIGZvciB0aGUgcGF0Y2guCi0rCi0rCUFsd2F5cyByZXR1cm4gYSBTRVJWRkFJTCBhbnN3ZXIgdG8gRE5TIHF1ZXJpZXMgd2l0aG91dCB0aGUKLSsJcmVjdXJzaW9uIGRlc2lyZWQgYml0IHNldCwgVU5MRVNTIGFjdGluZyBhcyBhbiBhdXRob3JpdGF0aXZlCi0rCUROUyBzZXJ2ZXIuIFRoaXMgYXZvaWRzIGEgcG90ZW50aWFsIHJvdXRlIHRvIGNhY2hlIHNub29waW5nLgotKwotKwlBZGQgc3VwcG9ydCBmb3IgRWQyNTUxOSBzaWduYXR1cmVzIGluIEROU1NFQyB2YWxpZGF0aW9uLgotKwotKwlObyBsb25nZXIgc3VwcG9ydCBSU0EvTUQ1IHNpZ25hdHVyZXMgaW4gRE5TU0VDIHZhbGlkYXRpb24sCi0rCXNpbmNlIHRoZXNlIGFyZSBub3Qgc2VjdXJlLiBUaGlzIGJlaGF2aW91ciBpcyBtYW5kYXRlZCBpbgotKwlSRkMtNjk0NC4KLSsKLSsJRml4IGluY29ycmVjdCBlcnJvciBleGl0IGNvZGUgZnJvbSBkaGNwX3JlbGVhc2U2IHV0aWxpdHkuCi0rCVRoYW5rcyBHYXVkZW56IFN0ZWlubGluIGZvciB0aGUgYnVnIHJlcG9ydC4KLSsKLSsJVXNlIFNJR0lOVCAoaW5zdGVhZCBvZiBvdmVybG9hZGluZyBTSUdIVVApIHRvIHR1cm4gb24gRE5TU0VDCi0rCXRpbWUgdmFsaWRhdGlvbiB3aGVuIC0tZG5zc2VjLW5vLXRpbWVjaGVjayBpcyBpbiB1c2UuCi0rCU5vdGUgdGhhdCB0aGlzIGlzIGFuIGluY29tcGF0aWJsZSBjaGFuZ2UgZnJvbSBlYXJsaWVyIHJlbGVhc2VzLgotKwotKwlBbGxvdyBtb3JlIHRoYW4gb25lIC0tYnJpZGdlLWludGVyZmFjZSBvcHRpb24gdG8gcmVmZXIgdG8gYW4KLSsJaW50ZXJmYWNlLCBzbyB0aGF0IHdlIGNhbiB1c2UKLSsJLS1icmlkZ2UtaW50ZXJmYWNlPWludDEsYWxpYXMxCi0rCS0tYnJpZGdlLWludGVyZmFjZT1pbnQxLGFsaWFzMgotKwlhcyBhbiBhbHRlcm5hdGl2ZSB0bwotKwktLWJyaWRnZS1pbnRlcmZhY2U9aW50MSxhbGlhczEsYWxpYXMyCi0rCVRoYW5rcyB0byBOZWlsIEplcnJhbSBmb3Igd29yayBvbiB0aGlzLgotKwotKwlGaXggZm9yIEROU1NFQyB3aXRoIHdpbGRjYXJkLWRlcml2ZWQgTlNFQyByZWNvcmRzLgotKwlJdCdzIE9LIGZvciBOU0VDIHJlY29yZHMgdG8gYmUgZXhwYW5kZWQgZnJvbSB3aWxkY2FyZHMsCi0rCWJ1dCBpbiB0aGF0IGNhc2UsIHRoZSBwcm9vZiBvZiBub24tZXhpc3RlbmNlIGlzIG9ubHkgdmFsaWQKLSsJc3RhcnRpbmcgYXQgdGhlIHdpbGRjYXJkIG5hbWUsICouPGRvbWFpbj4gTk9UIHRoZSBuYW1lIGV4cGFuZGVkCi0rCWZyb20gdGhlIHdpbGRjYXJkLiBXaXRob3V0IHRoaXMgY2hlY2sgaXQncyBwb3NzaWJsZSBmb3IgYW4KLSsJYXR0YWNrZXIgdG8gY3JhZnQgYW4gTlNFQyB3aGljaCB3cm9uZ2x5IHByb3ZlcyBub24tZXhpc3RlbmNlLgotKwlUaGFua3MgdG8gUmFscGggRG9sbWFucyBmb3IgZmluZGluZyB0aGlzLCBhbmQgY28tb3JkaW5hdGluZyAKLSsJdGhlIHZ1bG5lcmFiaWxpdHkgdHJhY2tpbmcgYW5kIGZpeCByZWxlYXNlLgotKwlDVkUtMjAxNy0xNTEwNyBhcHBsaWVzLgotKwotKwotIHZlcnNpb24gMi43OAotICAgICAgICAgRml4IGxvZ2ljIG9mIGFwcGVuZGluZyAiLjxsYXllcj4iIHRvIFBYRSBiYXNlbmFtZS4gVGhhbmtzIHRvIENocmlzCi0gCU5vdmFrb3ZpYyBmb3IgdGhlIHBhdGNoLgotZGlmZiAtLWdpdCBhL3NyYy9kbnNzZWMuYyBiL3NyYy9kbnNzZWMuYwotaW5kZXggYTc0ZDAxYWIuLjE0MTdiZTU2IDEwMDY0NAotLS0tIGEvc3JjL2Ruc3NlYy5jCi0rKysgYi9zcmMvZG5zc2VjLmMKLUBAIC00MjQsMTUgKzQyNCwxNyBAQCBzdGF0aWMgdm9pZCBmcm9tX3dpcmUoY2hhciAqbmFtZSkKLSBzdGF0aWMgaW50IGNvdW50X2xhYmVscyhjaGFyICpuYW1lKQotIHsKLSAgIGludCBpOwotLQotKyAgY2hhciAqcDsKLSsgIAotICAgaWYgKCpuYW1lID09IDApCi0gICAgIHJldHVybiAwOwotIAotLSAgZm9yIChpID0gMDsgKm5hbWU7IG5hbWUrKykKLS0gICAgaWYgKCpuYW1lID09ICcuJykKLSsgIGZvciAocCA9IG5hbWUsIGkgPSAwOyAqcDsgcCsrKQotKyAgICBpZiAoKnAgPT0gJy4nKQotICAgICAgIGkrKzsKLSAKLS0gIHJldHVybiBpKzE7Ci0rICAvKiBEb24ndCBjb3VudCBlbXB0eSBmaXJzdCBsYWJlbC4gKi8KLSsgIHJldHVybiAqbmFtZSA9PSAnLicgPyBpIDogaSsxOwotIH0KLSAKLSAvKiBJbXBsZW1lbnQgUkZDMTk4MiB3cmFwcGVkIGNvbXBhcmUgZm9yIDMyLWJpdCBudW1iZXJzICovCi1AQCAtMTQwNSw4ICsxNDA3LDggQEAgc3RhdGljIGludCBob3N0bmFtZV9jbXAoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikKLSAgICAgfQotIH0KLSAKLS1zdGF0aWMgaW50IHByb3ZlX25vbl9leGlzdGVuY2VfbnNlYyhzdHJ1Y3QgZG5zX2hlYWRlciAqaGVhZGVyLCBzaXplX3QgcGxlbiwgdW5zaWduZWQgY2hhciAqKm5zZWNzLCBpbnQgbnNlY19jb3VudCwKLS0JCQkJICAgIGNoYXIgKndvcmtzcGFjZTEsIGNoYXIgKndvcmtzcGFjZTIsIGNoYXIgKm5hbWUsIGludCB0eXBlLCBpbnQgKm5vbnMpCi0rc3RhdGljIGludCBwcm92ZV9ub25fZXhpc3RlbmNlX25zZWMoc3RydWN0IGRuc19oZWFkZXIgKmhlYWRlciwgc2l6ZV90IHBsZW4sIHVuc2lnbmVkIGNoYXIgKipuc2VjcywgdW5zaWduZWQgY2hhciAqKmxhYmVscywgaW50IG5zZWNfY291bnQsCi0rCQkJCSAgICBjaGFyICp3b3Jrc3BhY2UxX2luLCBjaGFyICp3b3Jrc3BhY2UyLCBjaGFyICpuYW1lLCBpbnQgdHlwZSwgaW50ICpub25zKQotIHsKLSAgIGludCBpLCByYywgcmRsZW47Ci0gICB1bnNpZ25lZCBjaGFyICpwLCAqcHNhdmU7Ci1AQCAtMTQxOSw2ICsxNDIxLDkgQEAgc3RhdGljIGludCBwcm92ZV9ub25fZXhpc3RlbmNlX25zZWMoc3RydWN0IGRuc19oZWFkZXIgKmhlYWRlciwgc2l6ZV90IHBsZW4sIHVuc2kKLSAgIC8qIEZpbmQgTlNFQyByZWNvcmQgdGhhdCBwcm92ZXMgbmFtZSBkb2Vzbid0IGV4aXN0ICovCi0gICBmb3IgKGkgPSAwOyBpIDwgbnNlY19jb3VudDsgaSsrKQotICAgICB7Ci0rICAgICAgY2hhciAqd29ya3NwYWNlMSA9IHdvcmtzcGFjZTFfaW47Ci0rICAgICAgaW50IHNpZ19sYWJlbHMsIG5hbWVfbGFiZWxzOwotKwotICAgICAgIHAgPSBuc2Vjc1tpXTsKLSAgICAgICBpZiAoIWV4dHJhY3RfbmFtZShoZWFkZXIsIHBsZW4sICZwLCB3b3Jrc3BhY2UxLCAxLCAxMCkpCi0gCXJldHVybiAwOwotQEAgLTE0MjcsNyArMTQzMiwyNyBAQCBzdGF0aWMgaW50IHByb3ZlX25vbl9leGlzdGVuY2VfbnNlYyhzdHJ1Y3QgZG5zX2hlYWRlciAqaGVhZGVyLCBzaXplX3QgcGxlbiwgdW5zaQotICAgICAgIHBzYXZlID0gcDsKLSAgICAgICBpZiAoIWV4dHJhY3RfbmFtZShoZWFkZXIsIHBsZW4sICZwLCB3b3Jrc3BhY2UyLCAxLCAxMCkpCi0gCXJldHVybiAwOwotLSAgICAgIAotKwotKyAgICAgIC8qIElmIE5TRUMgY29tZXMgZnJvbSB3aWxkY2FyZCBleHBhbnNpb24sIHVzZSBvcmlnaW5hbCB3aWxkY2FyZAotKwkgYXMgbmFtZSBmb3IgY29tcHV0YXRpb24uICovCi0rICAgICAgc2lnX2xhYmVscyA9ICpsYWJlbHNbaV07Ci0rICAgICAgbmFtZV9sYWJlbHMgPSBjb3VudF9sYWJlbHMod29ya3NwYWNlMSk7Ci0rCi0rICAgICAgaWYgKHNpZ19sYWJlbHMgPCBuYW1lX2xhYmVscykKLSsJewotKwkgIGludCBrOwotKwkgIGZvciAoayA9IG5hbWVfbGFiZWxzIC0gc2lnX2xhYmVsczsgayAhPSAwOyBrLS0pCi0rCSAgICB7Ci0rCSAgICAgIHdoaWxlICgqd29ya3NwYWNlMSAhPSAnLicgJiYgKndvcmtzcGFjZTEgIT0gMCkKLSsJCXdvcmtzcGFjZTErKzsKLSsJICAgICAgaWYgKGsgIT0gMSAmJiAqd29ya3NwYWNlMSA9PSAnLicpCi0rCQl3b3Jrc3BhY2UxKys7Ci0rCSAgICB9Ci0rCSAgCi0rCSAgd29ya3NwYWNlMS0tOwotKwkgICp3b3Jrc3BhY2UxID0gJyonOwotKwl9Ci0rCSAgCi0gICAgICAgcmMgPSBob3N0bmFtZV9jbXAod29ya3NwYWNlMSwgbmFtZSk7Ci0gICAgICAgCi0gICAgICAgaWYgKHJjID09IDApCi1AQCAtMTgyNSwyNCArMTg1MCwyNiBAQCBzdGF0aWMgaW50IHByb3ZlX25vbl9leGlzdGVuY2VfbnNlYzMoc3RydWN0IGRuc19oZWFkZXIgKmhlYWRlciwgc2l6ZV90IHBsZW4sIHVucwotIAotIHN0YXRpYyBpbnQgcHJvdmVfbm9uX2V4aXN0ZW5jZShzdHJ1Y3QgZG5zX2hlYWRlciAqaGVhZGVyLCBzaXplX3QgcGxlbiwgY2hhciAqa2V5bmFtZSwgY2hhciAqbmFtZSwgaW50IHF0eXBlLCBpbnQgcWNsYXNzLCBjaGFyICp3aWxkbmFtZSwgaW50ICpub25zKQotIHsKLS0gIHN0YXRpYyB1bnNpZ25lZCBjaGFyICoqbnNlY3NldCA9IE5VTEw7Ci0tICBzdGF0aWMgaW50IG5zZWNzZXRfc3ogPSAwOwotKyAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKipuc2Vjc2V0ID0gTlVMTCwgKipycnNpZ19sYWJlbHMgPSBOVUxMOwotKyAgc3RhdGljIGludCBuc2Vjc2V0X3N6ID0gMCwgcnJzaWdfbGFiZWxzX3N6ID0gMDsKLSAgIAotICAgaW50IHR5cGVfZm91bmQgPSAwOwotLSAgdW5zaWduZWQgY2hhciAqcCA9IHNraXBfcXVlc3Rpb25zKGhlYWRlciwgcGxlbik7Ci0rICB1bnNpZ25lZCBjaGFyICphdXRoX3N0YXJ0LCAqcCA9IHNraXBfcXVlc3Rpb25zKGhlYWRlciwgcGxlbik7Ci0gICBpbnQgdHlwZSwgY2xhc3MsIHJkbGVuLCBpLCBuc2Vjc19mb3VuZDsKLSAgIAotICAgLyogTW92ZSB0byBOUyBzZWN0aW9uICovCi0gICBpZiAoIXAgfHwgIShwID0gc2tpcF9zZWN0aW9uKHAsIG50b2hzKGhlYWRlci0+YW5jb3VudCksIGhlYWRlciwgcGxlbikpKQotICAgICByZXR1cm4gMDsKLSsKLSsgIGF1dGhfc3RhcnQgPSBwOwotICAgCi0gICBmb3IgKG5zZWNzX2ZvdW5kID0gMCwgaSA9IG50b2hzKGhlYWRlci0+bnNjb3VudCk7IGkgIT0gMDsgaS0tKQotICAgICB7Ci0gICAgICAgdW5zaWduZWQgY2hhciAqcHN0YXJ0ID0gcDsKLSAgICAgICAKLS0gICAgICBpZiAoIShwID0gc2tpcF9uYW1lKHAsIGhlYWRlciwgcGxlbiwgMTApKSkKLSsgICAgICBpZiAoIWV4dHJhY3RfbmFtZShoZWFkZXIsIHBsZW4sICZwLCBkYWVtb24tPndvcmtzcGFjZW5hbWUsIDEsIDEwKSkKLSAJcmV0dXJuIDA7Ci0tICAgICAgCi0rCSAgCi0gICAgICAgR0VUU0hPUlQodHlwZSwgcCk7IAotICAgICAgIEdFVFNIT1JUKGNsYXNzLCBwKTsKLSAgICAgICBwICs9IDQ7IC8qIFRUTCAqLwotQEAgLTE4NTksNyArMTg4Niw2OSBAQCBzdGF0aWMgaW50IHByb3ZlX25vbl9leGlzdGVuY2Uoc3RydWN0IGRuc19oZWFkZXIgKmhlYWRlciwgc2l6ZV90IHBsZW4sIGNoYXIgKmtleQotIAkgIGlmICghZXhwYW5kX3dvcmtzcGFjZSgmbnNlY3NldCwgJm5zZWNzZXRfc3osIG5zZWNzX2ZvdW5kKSkKLSAJICAgIHJldHVybiAwOyAKLSAJICAKLS0JICBuc2Vjc2V0W25zZWNzX2ZvdW5kKytdID0gcHN0YXJ0OwotKwkgIGlmICh0eXBlID09IFRfTlNFQykKLSsJICAgIHsKLSsJICAgICAgLyogSWYgd2UncmUgbG9va2luZyBmb3IgTlNFQ3MsIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgU0lHcywgdG8gCi0rCQkgZXh0cmFjdCB0aGUgbGFiZWxzIHZhbHVlLCB3aGljaCB3ZSBuZWVkIGluIGNhc2UgdGhlIE5TRUNzCi0rCQkgYXJlIHRoZSByZXN1bHQgb2Ygd2lsZGNhcmQgZXhwYW5zaW9uLgotKwkJIE5vdGUgdGhhdCB0aGUgTlNFQyBtYXkgbm90IGhhdmUgYmVlbiB2YWxpZGF0ZWQgeWV0Ci0rCQkgc28gaWYgdGhlcmUgYXJlIG11bHRpcGxlIFNJR3MsIG1ha2Ugc3VyZSB0aGUgbGFiZWwgdmFsdWUKLSsJCSBpcyB0aGUgc2FtZSBpbiBhbGwsIHRvIGF2b2lkIGJlIGR1cGVkIGJ5IGEgcm9ndWUgb25lLgotKwkJIElmIHRoZXJlIGFyZSBubyBTSUdzLCB0aGF0J3MgYW4gZXJyb3IgKi8KLSsJICAgICAgdW5zaWduZWQgY2hhciAqcDEgPSBhdXRoX3N0YXJ0OwotKwkgICAgICBpbnQgcmVzLCBqLCByZGxlbjEsIHR5cGUxLCBjbGFzczE7Ci0rCSAgICAgIAotKwkgICAgICBpZiAoIWV4cGFuZF93b3Jrc3BhY2UoJnJyc2lnX2xhYmVscywgJnJyc2lnX2xhYmVsc19zeiwgbnNlY3NfZm91bmQpKQotKwkJcmV0dXJuIDA7Ci0rCSAgICAgIAotKwkgICAgICBycnNpZ19sYWJlbHNbbnNlY3NfZm91bmRdID0gTlVMTDsKLSsJICAgICAgCi0rCSAgICAgIGZvciAoaiA9IG50b2hzKGhlYWRlci0+bnNjb3VudCk7IGogIT0gMDsgai0tKQotKwkJewotKwkJICBpZiAoIShyZXMgPSBleHRyYWN0X25hbWUoaGVhZGVyLCBwbGVuLCAmcDEsIGRhZW1vbi0+d29ya3NwYWNlbmFtZSwgMCwgMTApKSkKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgIEdFVFNIT1JUKHR5cGUxLCBwMSk7IAotKwkJICAgR0VUU0hPUlQoY2xhc3MxLCBwMSk7Ci0rCQkgICBwMSArPSA0OyAvKiBUVEwgKi8KLSsJCSAgIEdFVFNIT1JUKHJkbGVuMSwgcDEpOwotKwotKwkJICAgaWYgKCFDSEVDS19MRU4oaGVhZGVyLCBwMSwgcGxlbiwgcmRsZW4xKSkKLSsJCSAgICAgcmV0dXJuIDA7Ci0rCQkgICAKLSsJCSAgIGlmIChyZXMgPT0gMSAmJiBjbGFzczEgPT0gcWNsYXNzICYmIHR5cGUxID09IFRfUlJTSUcpCi0rCQkgICAgIHsKLSsJCSAgICAgICBpbnQgdHlwZV9jb3ZlcmVkOwotKwkJICAgICAgIHVuc2lnbmVkIGNoYXIgKnBzYXYgPSBwMTsKLSsJCSAgICAgICAKLSsJCSAgICAgICBpZiAocmRsZW4gPCAxOCkKLSsJCQkgcmV0dXJuIDA7IC8qIGJhZCBwYWNrZXQgKi8KLSsKLSsJCSAgICAgICBHRVRTSE9SVCh0eXBlX2NvdmVyZWQsIHAxKTsKLSsKLSsJCSAgICAgICBpZiAodHlwZV9jb3ZlcmVkID09IFRfTlNFQykKLSsJCQkgewotKwkJCSAgIHAxKys7IC8qIGFsZ28gKi8KLSsJCQkgICAKLSsJCQkgICAvKiBsYWJlbHMgZmllbGQgbXVzdCBiZSB0aGUgc2FtZSBpbiBldmVyeSBTSUcgd2UgZmluZC4gKi8KLSsJCQkgICBpZiAoIXJyc2lnX2xhYmVsc1tuc2Vjc19mb3VuZF0pCi0rCQkJICAgICBycnNpZ19sYWJlbHNbbnNlY3NfZm91bmRdID0gcDE7Ci0rCQkJICAgZWxzZSBpZiAoKnJyc2lnX2xhYmVsc1tuc2Vjc19mb3VuZF0gIT0gKnAxKSAvKiBhbGdvICovCi0rCQkJICAgICByZXR1cm4gMDsKLSsJCQkgICB9Ci0rCQkgICAgICAgcDEgPSBwc2F2OwotKwkJICAgICB9Ci0rCQkgICAKLSsJCSAgIGlmICghQUREX1JETEVOKGhlYWRlciwgcDEsIHBsZW4sIHJkbGVuMSkpCi0rCQkgICAgIHJldHVybiAwOwotKwkJfQotKwotKwkgICAgICAvKiBNdXN0IGhhdmUgZm91bmQgYXQgbGVhc3Qgb25lIHNpZy4gKi8KLSsJICAgICAgaWYgKCFycnNpZ19sYWJlbHNbbnNlY3NfZm91bmRdKQotKwkJcmV0dXJuIDA7Ci0rCSAgICB9Ci0rCi0rCSAgbnNlY3NldFtuc2Vjc19mb3VuZCsrXSA9IHBzdGFydDsgICAKLSAJfQotICAgICAgIAotICAgICAgIGlmICghQUREX1JETEVOKGhlYWRlciwgcCwgcGxlbiwgcmRsZW4pKQotQEAgLTE4NjcsNyArMTk1Niw3IEBAIHN0YXRpYyBpbnQgcHJvdmVfbm9uX2V4aXN0ZW5jZShzdHJ1Y3QgZG5zX2hlYWRlciAqaGVhZGVyLCBzaXplX3QgcGxlbiwgY2hhciAqa2V5Ci0gICAgIH0KLSAgIAotICAgaWYgKHR5cGVfZm91bmQgPT0gVF9OU0VDKQotLSAgICByZXR1cm4gcHJvdmVfbm9uX2V4aXN0ZW5jZV9uc2VjKGhlYWRlciwgcGxlbiwgbnNlY3NldCwgbnNlY3NfZm91bmQsIGRhZW1vbi0+d29ya3NwYWNlbmFtZSwga2V5bmFtZSwgbmFtZSwgcXR5cGUsIG5vbnMpOwotKyAgICByZXR1cm4gcHJvdmVfbm9uX2V4aXN0ZW5jZV9uc2VjKGhlYWRlciwgcGxlbiwgbnNlY3NldCwgcnJzaWdfbGFiZWxzLCBuc2Vjc19mb3VuZCwgZGFlbW9uLT53b3Jrc3BhY2VuYW1lLCBrZXluYW1lLCBuYW1lLCBxdHlwZSwgbm9ucyk7Ci0gICBlbHNlIGlmICh0eXBlX2ZvdW5kID09IFRfTlNFQzMpCi0gICAgIHJldHVybiBwcm92ZV9ub25fZXhpc3RlbmNlX25zZWMzKGhlYWRlciwgcGxlbiwgbnNlY3NldCwgbnNlY3NfZm91bmQsIGRhZW1vbi0+d29ya3NwYWNlbmFtZSwga2V5bmFtZSwgbmFtZSwgcXR5cGUsIHdpbGRuYW1lLCBub25zKTsKLSAgIGVsc2UKLS0tIAotMi4xOS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4zMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4zMy5iYgppbmRleCA1ZWJkYTE5Li44ODJkNWQ1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RvdmVjb3QvZG92ZWNvdF8yLjIuMzMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjMzLmJiCkBAIC0xNSwxMSArMTUsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gImQ2MWQxZTkyM2EyMmY5MDYyY2M5ZjQ3Njk2ODgyNjY2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU5NDgzZDY4YTc2OThkNzAxYmMwNjEyNGZjZjZlMWIxZjE2MzgwYzI5ODZjN2VjMGNmNGUxNDc1YjlkMGMyMTgiCiAKLURFUEVORFMgPSAib3BlbnNzbCB4eiB6bGliIGJ6aXAyIGxpYmNhcCBpY3UiCi0KLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKK0RFUEVORFMgPSAib3BlbnNzbCB4eiB6bGliIGJ6aXAyIGxpYmNhcCBpY3UgbGlidGlycGMiCitDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitMREZMQUdTICs9ICItbHRpcnBjIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzLzAwMDEtTWFrZWZpbGUuaW4tZml4LXBlcm1pc3Npb24tYml0cy1mb3ItZHJiZC5zZXJ2aWNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQtdXRpbHMvMDAwMS1NYWtlZmlsZS5pbi1maXgtcGVybWlzc2lvbi1iaXRzLWZvci1kcmJkLnNlcnZpY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwZGQxZjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQtdXRpbHMvMDAwMS1NYWtlZmlsZS5pbi1maXgtcGVybWlzc2lvbi1iaXRzLWZvci1kcmJkLnNlcnZpY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU3ViamVjdDogIE1ha2VmaWxlLmluOiBmaXggcGVybWlzc2lvbiBiaXRzIGZvciBkcmJkLnNlcnZpY2UKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2NyaXB0cy9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NjcmlwdHMvTWFrZWZpbGUuaW4gYi9zY3JpcHRzL01ha2VmaWxlLmluCi1pbmRleCA0MDJiOTNiLi40YTQ1NDA3IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9NYWtlZmlsZS5pbgotKysrIGIvc2NyaXB0cy9NYWtlZmlsZS5pbgotQEAgLTY1LDcgKzY1LDcgQEAgZW5kaWYKLSAjIHllcywgZGViaWFuIGFwcGFyZW50bHkgYWxsb3dzIGluc3RhbGxpbmcgYm90aCB0eXBlcyBmcm9tIHRoZSBzYW1lIHBhY2thZ2UKLSBpZm5lcSAoJChpbml0c2NyaXB0dHlwZSksc3lzdikJCSMgInN5c3RlbWQiIG9yICJib3RoIgotIAlpbnN0YWxsIC1kICQoREVTVERJUikkKHN5c3RlbWR1bml0ZGlyKQotLQlpbnN0YWxsIC1tIDc1NSBkcmJkLnNlcnZpY2UgJChERVNURElSKSQoc3lzdGVtZHVuaXRkaXIpLwotKwlpbnN0YWxsIC1tIDY0NCBkcmJkLnNlcnZpY2UgJChERVNURElSKSQoc3lzdGVtZHVuaXRkaXIpLwotIAlpbnN0YWxsIC1kICQoREVTVERJUikvbGliL2RyYmQvCi0gCWluc3RhbGwgLW0gNzU1IGRyYmQgJChERVNURElSKS9saWIvZHJiZC8KLSAJaW5zdGFsbCAtZCAkKERFU1RESVIpJCh0bXBmaWxlc2RpcikvCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzLzAwMDEtZHJiZC1kcmJkLXRvb2xzLW9ubHktcm1tb2QtaWYtRFJCRC1pcy1hLW1vZHVsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzLzAwMDEtZHJiZC1kcmJkLXRvb2xzLW9ubHktcm1tb2QtaWYtRFJCRC1pcy1hLW1vZHVsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGYzYWRmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQtdXRpbHMvMDAwMS1kcmJkLWRyYmQtdG9vbHMtb25seS1ybW1vZC1pZi1EUkJELWlzLWEtbW9kdWxlLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK1N1YmplY3Q6IGRyYmQtdG9vbHM6IG9ubHkgcm1tb2QgaWYgRFJCRCBpcyBhIG1vZHVsZQorCitBY2NvdW50IGZvciB0aGUgY2FzZSBpZiB0aGUgRFJCRCBkcml2ZSBpcyBidWlsdCBpbnRvCit0aGUga2VybmVsLiBPdGhlcndpc2UsIGVycm9ycywgbGlrZSB0aGUgZm9sbG93aW5nLAord2lsbCBvY2N1cjoKKworcm9vdEBsb2NhbGhvc3Q6fiMgL2V0Yy9pbml0LmQvZHJiZCBzdG9wCisgICAgU3RvcHBpbmcgYWxsIERSQkQgcmVzb3VyY2VzOiBFUlJPUjogTW9kdWxlIGRyYmQgCisgICAgZG9lcyBub3QgZXhpc3QgaW4gL3Byb2MvbW9kdWxlcworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL0xJTkJJVC9kcmJkLXV0aWxzL3B1bGwvMl0KKworU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KKworWyByZWZyZXNoIHRvIDguNC40OiBzcXVhc2ggQXdzJyBhbmQgSmFzb24ncyBwYXRjaGVzIF0KK1NpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGViZWF1IDxtaWNoZWwudGhlYmVhdUB3aW5kcml2ZXIuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBzY3JpcHRzL2RyYmQgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL2RyYmQgYi9zY3JpcHRzL2RyYmQKK2luZGV4IDIwYmY2MjguLmRlNTg5ZGMgMTAwNzU1CistLS0gYS9zY3JpcHRzL2RyYmQKKysrKyBiL3NjcmlwdHMvZHJiZAorQEAgLTI0MSw3ICsyNDEsOSBAQCBjYXNlICIkMSIgaW4KKyAJCWlmIFsgLWQgL3N5cy9tb2R1bGUvZHJiZC9ob2xkZXJzIF07IHRoZW4KKyAJCQkoY2QgL3N5cy9tb2R1bGUvZHJiZC9ob2xkZXJzOyBmb3IgdHIgaW4gKjsgZG8gWyAtZCAke3RyfSBdICYmICR7Uk1NT0R9ICR7dHJ9OyBkb25lKQorIAkJZmkKKy0JCSRSTU1PRCBkcmJkICYmIGJyZWFrCisrCQlpZiBbICEgLXogIiQoY2F0IC9wcm9jL21vZHVsZXMgfCBncmVwIC13IGRyYmQpIiBdOyB0aGVuCisrCQkJJFJNTU9EIGRyYmQgJiYgYnJlYWsKKysJCWZpCisgCSAgICBmaQorIAlkb25lCisgCXJ1bl9ob29rIHN0b3AKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kcmJkL2RyYmQtdXRpbHNfOC45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc184LjkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmMWNmZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc184LjkuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzdHJpYnV0ZWQgYmxvY2sgZGV2aWNlIGRyaXZlciBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJEUkJEIG1pcnJvcnMgYSBibG9jayBkZXZpY2Ugb3ZlciB0aGUgbmV0d29yayB0byBhbm90aGVyIG1hY2hpbmUuXAotRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKLVRoaW5rIG9mIGl0IGFzIG5ldHdvcmtlZCByYWlkIDEuIEl0IGlzIGEgYnVpbGRpbmcgYmxvY2sgZm9yXAotc2V0dGluZyB1cCBoaWdoIGF2YWlsYWJpbGl0eSAoSEEpIGNsdXN0ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZHJiZC5vcmcvIgotU0VDVElPTiA9ICJhZG1pbiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTU3NGM2OTY1YWU1ZjU4M2U1NTg4MGUzOTdmYmIwMTgiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5saW5iaXQuY29tL2Rvd25sb2Fkcy9kcmJkL3V0aWxzL2FyY2hpdmUvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuaW4tZml4LXBlcm1pc3Npb24tYml0cy1mb3ItZHJiZC5zZXJ2aWNlLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzZlZDZkMzE5MGNkNzdiMDA4OTBmMzM2NTM1MzEyNGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk3Yjc3YzliM2Y4OGRlMmU3ZGFlNDU5MjM0ZjI3NTNlYTRmYzI4MDUyODJiMmQyNzZlMzVjZjUxZTI5MjkxMyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRyYmQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWluaXRkaXI9L2V0Yy9pbml0LmQgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1wYWNlbWFrZXIgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcmdtYW5hZ2VyICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWJhc2hjb21wbGV0aW9uICAgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kaXN0cm8gZGViaWFuICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaW5pdHNjcmlwdHR5cGU9Ym90aCAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN5c3RlbWR1bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1tYW51YWxcCi0gICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgZG9uJ3QgaW5zdGFsbCBlbXB0eSAvdmFyL2xvY2sgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBiYXNlLWZpbGVzCi0gICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xvY2sKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkiCi0KLSMgVGhlIGRyYmQgaXRlbXMgYXJlIGV4cGxpY2l0bHkgcHV0IHVuZGVyIC9saWIgd2hlbiBpbnN0YWxsZWQuCi0jCi1GSUxFU18ke1BOfSArPSAiL3J1biIKLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZHJiZC8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMWU4NTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjUuMC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIkRpc3RyaWJ1dGVkIGJsb2NrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKK0RSQkQgbWlycm9ycyBhIGJsb2NrIGRldmljZSBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgbWFjaGluZS5cCitUaGluayBvZiBpdCBhcyBuZXR3b3JrZWQgcmFpZCAxLiBJdCBpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvclwKK3NldHRpbmcgdXAgaGlnaCBhdmFpbGFiaWxpdHkgKEhBKSBjbHVzdGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRyYmQub3JnLyIKK1NFQ1RJT04gPSAiYWRtaW4iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHM7bmFtZT1kcmJkLXV0aWxzIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MSU5CSVQvZHJiZC1oZWFkZXJzO25hbWU9ZHJiZC1oZWFkZXJzO2Rlc3RzdWZmaXg9Z2l0L2RyYmQtaGVhZGVycyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRyYmQtZHJiZC10b29scy1vbmx5LXJtbW9kLWlmLURSQkQtaXMtYS1tb2R1bGUucGF0Y2ggXAorICAgICAgICAgICIKKyMgdjkuNS4wCitTUkNSRVZfZHJiZC11dGlscyA9ICJlZTEyNjY1MjYzODMyOGI1NWRjNmJmZjQ3ZDA3ZDYxNjFhYjc2OGRiIgorU1JDUkVWX2RyYmQtaGVhZGVycyA9ICJiNDdjYzExYmNhYmUxYTY1YzQwYWQyM2Y3MWRjYWYyZGE2NDE5NjMwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xJTkJJVC9kcmJkLXV0aWxzL3JlbGVhc2VzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZHJiZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZAorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaW5pdGRpcj0vZXRjL2luaXQuZCAgICBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXBhY2VtYWtlciAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1yZ21hbmFnZXIgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYmFzaGNvbXBsZXRpb24gICAgICBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRpc3RybyBkZWJpYW4gICAgICAgICAgXAorICAgICAgICAgICAgICAgIC0td2l0aC1pbml0c2NyaXB0dHlwZT1ib3RoICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LW1hbnVhbCBcCisgICAgICAgICAgICAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgbW92ZSB0aGUgdGhlIGZpbGUgdW5kZXIgZm9sZGVyIC9saWIvZHJiZC8gdG8gL3Vzci9saWIvZHJiZCB3aGVuIHVzcm1lcmdlIGVuYWJsZWQKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZm9yIG1fZmlsZSBpbiBgZmluZCAke1N9IC1uYW1lICdNYWtlZmlsZS5pbidgOyBkbworICAgICAgICAgICAgc2VkIC1pIC1lICJzO1wkKERFU1RESVIpXC9saWJcL2RyYmQ7XCQoREVTVERJUilcJHtub25hcmNoX2xpYmRpcn1cL2RyYmQ7ZyIgJG1fZmlsZQorICAgICAgICBkb25lCisgICAgICAgICMgbW92ZSB0aGUgdGhlIGZpbGUgdW5kZXIgZm9sZGVyIC9saWIvdWRldi8gdG8gL3Vzci9saWIvdWRldiB3aGVuIHVzcm1lcmdlIGVuYWJsZWQKKyAgICAgICAgc2VkIC1pIC1lICJzO2RlZmF1bHRfdWRldmRpcj0vbGliL3VkZXY7ZGVmYXVsdF91ZGV2ZGlyPVwke3ByZWZpeH0vbGliL3VkZXY7ZyIgJHtTfS9jb25maWd1cmUuYWMKKyAgICBmaQorCit9Citkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGRvbid0IGluc3RhbGwgZW1wdHkgL3Zhci9sb2NrIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggYmFzZS1maWxlcworICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2NrCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLWV4cG9ydGVyIHBlcmwtbW9kdWxlLWNvbnN0YW50IHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIHBlcmwtbW9kdWxlLWV4cG9ydGVyLWhlYXZ5IgorCisjIFRoZSBkcmJkIGl0ZW1zIGFyZSBleHBsaWNpdGx5IHB1dCB1bmRlciAvbGliIHdoZW4gaW5zdGFsbGVkLgorIworRklMRVNfJHtQTn0gKz0gIi9ydW4iCitGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9kcmJkIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9kcmJkIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGJnICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9lc210cC9lc210cF8xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2VzbXRwL2VzbXRwXzEuMi5iYgppbmRleCAyZGE3M2U3Li42NjMxNjFhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2VzbXRwL2VzbXRwXzEuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2VzbXRwL2VzbXRwXzEuMi5iYgpAQCAtMTgsMTAgKzE4LDEyIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotQUxURVJOQVRJVkVfJHtQTn0gPSAic2VuZG1haWwiCi0KK0FMVEVSTkFUSVZFXyR7UE59ICs9ICJzZW5kbWFpbCBtYWlscSBuZXdhbGlhc2VzIgorQUxURVJOQVRJVkVfVEFSR0VUW21haWxxXSA9ICIke2JpbmRpcn0vbWFpbHEiCitBTFRFUk5BVElWRV9UQVJHRVRbbmV3YWxpYXNlc10gPSAiJHtiaW5kaXJ9L25ld2FsaWFzZXMiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbc2VuZG1haWxdID0gIiR7c2JpbmRpcn0vc2VuZG1haWwiCiBBTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9lc210cCIKKwogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAiCiAKIEFMVEVSTkFUSVZFXyR7UE59LWRvYyArPSAibWFpbHEuMSBuZXdhbGlhc2VzLjEgc2VuZG1haWwuMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbC8wMl9yZW1vdmVfU1NMdjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWwvMDJfcmVtb3ZlX1NTTHYzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1Y2ZhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWwvMDJfcmVtb3ZlX1NTTHYzLnBhdGNoCkBAIC0wLDAgKzEsMTU3NiBAQAorRGVzY3JpcHRpb246IDxzaG9ydCBzdW1tYXJ5IG9mIHRoZSBwYXRjaD4KKyBUT0RPOiBQdXQgYSBzaG9ydCBzdW1tYXJ5IG9uIHRoZSBsaW5lIGFib3ZlIGFuZCByZXBsYWNlIHRoaXMgcGFyYWdyYXBoCisgd2l0aCBhIGxvbmdlciBleHBsYW5hdGlvbiBvZiB0aGlzIGNoYW5nZS4gQ29tcGxldGUgdGhlIG1ldGEtaW5mb3JtYXRpb24KKyB3aXRoIG90aGVyIHJlbGV2YW50IGZpZWxkcyAoc2VlIGJlbG93IGZvciBkZXRhaWxzKS4gVG8gbWFrZSBpdCBlYXNpZXIsIHRoZQorIGluZm9ybWF0aW9uIGJlbG93IGhhcyBiZWVuIGV4dHJhY3RlZCBmcm9tIHRoZSBjaGFuZ2Vsb2cuIEFkanVzdCBpdCBvciBkcm9wCisgaXQuCisgLgorIGZldGNobWFpbCAoNi4zLjI2LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworIC4KKyAgICogTmV3IG1haW50YWluZXIgKGNsb3NlczogIzgwMDc1MCkuCisgICAqIEJhY2twb3J0IHVwc3RyZWFtIGZpeCBmb3IgU1NMdjMgcmVtb3ZhbCAoY2xvc2VzOiAjODA0NjA0KSBhbmQgZG8gbm90CisgICAgIHJlY29tbWVuZCBTU0x2MyAoY2xvc2VzOiAjODAxMTc4KS4KKyAgICogUmVtb3ZlIHF1aWx0IGFuZCBpdHMgdXNhZ2UuCisgICAqIEFkZCBkaC1weXRob24gdG8gYnVpbGQgZGVwZW5kcy4KKyAgICogVXBkYXRlIHVwc3RyZWFtIFVSTHMuCisgICAqIFVwZGF0ZSB3YXRjaCBmaWxlLgorICAgKiBVcGRhdGUgU3RhbmRhcmRzLVZlcnNpb24gdG8gMy45LjYgLgorQXV0aG9yOiBMYXN6bG8gQm9zem9ybWVueWkgKEdDUykgPGdjc0BkZWJpYW4ub3JnPgorQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvODAwNzUwCitCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84MDExNzgKK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzgwNDYwNAorCistLS0KK1RoZSBpbmZvcm1hdGlvbiBhYm92ZSBzaG91bGQgZm9sbG93IHRoZSBQYXRjaCBUYWdnaW5nIEd1aWRlbGluZXMsIHBsZWFzZQorY2hlY2tvdXQgaHR0cDovL2RlcC5kZWJpYW4ubmV0L2RlcHMvZGVwMy8gdG8gbGVhcm4gYWJvdXQgdGhlIGZvcm1hdC4gSGVyZQorYXJlIHRlbXBsYXRlcyBmb3Igc3VwcGxlbWVudGFyeSBmaWVsZHMgdGhhdCB5b3UgbWlnaHQgd2FudCB0byBhZGQ6CisKK09yaWdpbjogPHZlbmRvcnx1cHN0cmVhbXxvdGhlcj4sIDx1cmwgb2Ygb3JpZ2luYWwgcGF0Y2g+CitCdWc6IDx1cmwgaW4gdXBzdHJlYW0gYnVndHJhY2tlcj4KK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzxidWdudW1iZXI+CitCdWctVWJ1bnR1OiBodHRwczovL2xhdW5jaHBhZC5uZXQvYnVncy88YnVnbnVtYmVyPgorRm9yd2FyZGVkOiA8bm98bm90LW5lZWRlZHx1cmwgcHJvdmluZyB0aGF0IGl0IGhhcyBiZWVuIGZvcndhcmRlZD4KK1Jldmlld2VkLUJ5OiA8bmFtZSBhbmQgZW1haWwgb2Ygc29tZW9uZSB3aG8gYXBwcm92ZWQgdGhlIHBhdGNoPgorTGFzdC1VcGRhdGU6IDxZWVlZLU1NLUREPgorCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL01ha2VmaWxlLmFtCisrKysgZmV0Y2htYWlsLTYuMy4yNi9NYWtlZmlsZS5hbQorQEAgLTMxLDcgKzMxLDcgQEAgbGliZm1fYV9TT1VSQ0VTPQl4bWFsbG9jLmMgYmFzZTY0LmMgcmZjOAorIAkJCXNlcnZwb3J0LmMgbnRsbS5oIHNtYmJ5dGVvcmRlci5oIHNtYmRlcy5oIHNtYm1kNC5oIFwKKyAJCQlzbWJlbmNyeXB0Lmggc21iZGVzLmMgc21iZW5jcnlwdC5jIHNtYm1kNC5jIHNtYnV0aWwuYyBcCisgCQkJbGliZXNtdHAvZ2V0aG9zdGJ5bmFtZS5oIGxpYmVzbXRwL2dldGhvc3RieW5hbWUuYyBcCistCQkJc21idHlwZXMuaCBmbV9nZXRhZGRyaW5mby5jIHRscy5jIHJmYzgyMnZhbGlkLmMgXAorKwkJCXNtYnR5cGVzLmggZm1fZ2V0YWRkcmluZm8uYyBzdGFydHRscy5jIHJmYzgyMnZhbGlkLmMgXAorIAkJCXhtYWxsb2MuaCBzZHVtcC5oIHNkdW1wLmMgeDUwOV9uYW1lX21hdGNoLmMgXAorIAkJCWZtX3N0cmwuaCBtZDVjLmMKKyBpZiBOVExNX0VOQUJMRQorLS0tIGZldGNobWFpbC02LjMuMjYub3JpZy9NYWtlZmlsZS5pbgorKysrIGZldGNobWFpbC02LjMuMjYvTWFrZWZpbGUuaW4KK0BAIC05NywxNCArOTcsMTQgQEAgYW1fX2xpYmZtX2FfU09VUkNFU19ESVNUID0geG1hbGxvYy5jIGJhcworIAlyZmMyMDQ3ZS5jIHNlcnZwb3J0LmMgbnRsbS5oIHNtYmJ5dGVvcmRlci5oIHNtYmRlcy5oIHNtYm1kNC5oIFwKKyAJc21iZW5jcnlwdC5oIHNtYmRlcy5jIHNtYmVuY3J5cHQuYyBzbWJtZDQuYyBzbWJ1dGlsLmMgXAorIAlsaWJlc210cC9nZXRob3N0YnluYW1lLmggbGliZXNtdHAvZ2V0aG9zdGJ5bmFtZS5jIHNtYnR5cGVzLmggXAorLQlmbV9nZXRhZGRyaW5mby5jIHRscy5jIHJmYzgyMnZhbGlkLmMgeG1hbGxvYy5oIHNkdW1wLmggc2R1bXAuYyBcCisrCWZtX2dldGFkZHJpbmZvLmMgc3RhcnR0bHMuYyByZmM4MjJ2YWxpZC5jIHhtYWxsb2MuaCBzZHVtcC5oIHNkdW1wLmMgXAorIAl4NTA5X25hbWVfbWF0Y2guYyBmbV9zdHJsLmggbWQ1Yy5jIG50bG1zdWJyLmMKKyBATlRMTV9FTkFCTEVfVFJVRUBhbV9fb2JqZWN0c18xID0gbnRsbXN1YnIuJChPQkpFWFQpCisgYW1fbGliZm1fYV9PQkpFQ1RTID0geG1hbGxvYy4kKE9CSkVYVCkgYmFzZTY0LiQoT0JKRVhUKSBcCisgCXJmYzgyMi4kKE9CSkVYVCkgcmVwb3J0LiQoT0JKRVhUKSByZmMyMDQ3ZS4kKE9CSkVYVCkgXAorIAlzZXJ2cG9ydC4kKE9CSkVYVCkgc21iZGVzLiQoT0JKRVhUKSBzbWJlbmNyeXB0LiQoT0JKRVhUKSBcCisgCXNtYm1kNC4kKE9CSkVYVCkgc21idXRpbC4kKE9CSkVYVCkgZ2V0aG9zdGJ5bmFtZS4kKE9CSkVYVCkgXAorLQlmbV9nZXRhZGRyaW5mby4kKE9CSkVYVCkgdGxzLiQoT0JKRVhUKSByZmM4MjJ2YWxpZC4kKE9CSkVYVCkgXAorKwlmbV9nZXRhZGRyaW5mby4kKE9CSkVYVCkgc3RhcnR0bHMuJChPQkpFWFQpIHJmYzgyMnZhbGlkLiQoT0JKRVhUKSBcCisgCXNkdW1wLiQoT0JKRVhUKSB4NTA5X25hbWVfbWF0Y2guJChPQkpFWFQpIG1kNWMuJChPQkpFWFQpIFwKKyAJJChhbV9fb2JqZWN0c18xKQorIGxpYmZtX2FfT0JKRUNUUyA9ICQoYW1fbGliZm1fYV9PQkpFQ1RTKQorQEAgLTQ4Myw3ICs0ODMsNyBAQCBsaWJmbV9hX1NPVVJDRVMgPSB4bWFsbG9jLmMgYmFzZTY0LmMgcmZjCisgCXNlcnZwb3J0LmMgbnRsbS5oIHNtYmJ5dGVvcmRlci5oIHNtYmRlcy5oIHNtYm1kNC5oIFwKKyAJc21iZW5jcnlwdC5oIHNtYmRlcy5jIHNtYmVuY3J5cHQuYyBzbWJtZDQuYyBzbWJ1dGlsLmMgXAorIAlsaWJlc210cC9nZXRob3N0YnluYW1lLmggbGliZXNtdHAvZ2V0aG9zdGJ5bmFtZS5jIHNtYnR5cGVzLmggXAorLQlmbV9nZXRhZGRyaW5mby5jIHRscy5jIHJmYzgyMnZhbGlkLmMgeG1hbGxvYy5oIHNkdW1wLmggc2R1bXAuYyBcCisrCWZtX2dldGFkZHJpbmZvLmMgc3RhcnR0bHMuYyByZmM4MjJ2YWxpZC5jIHhtYWxsb2MuaCBzZHVtcC5oIHNkdW1wLmMgXAorIAl4NTA5X25hbWVfbWF0Y2guYyBmbV9zdHJsLmggbWQ1Yy5jICQoYW1fX2FwcGVuZF8xKQorIGxpYmZtX2FfTElCQUREID0gJChFWFRSQU9CSikKKyBsaWJmbV9hX0RFUEVOREVOQ0lFUyA9ICQoRVhUUkFPQkopCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL05FV1MKKysrKyBmZXRjaG1haWwtNi4zLjI2L05FV1MKK0BAIC01MSw4ICs1MSw2IEBAIHJlbW92ZWQgZnJvbSBhIDYuNC4wIG9yIG5ld2VyIHJlbGVhc2UuKQorICogVGhlIC0tYnNtdHAgLSBtb2RlIG9mIG9wZXJhdGlvbiBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgorICogR2l2ZW4gdGhhdCBPcGVuU1NMIGlzIHNldmVyZWx5IHVuZGVyZG9jdW1lbnRlZCwgYW5kIG5lZWRzIGxpY2Vuc2UgZXhjZXB0aW9ucywKKyAgIGZldGNobWFpbCBtYXkgc3dpdGNoIHRvIGEgZGlmZmVyZW50IFNTTCBsaWJyYXJ5LgorLSogU1NMdjIgc3VwcG9ydCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBhIGZ1dHVyZSBmZXRjaG1haWwgcmVsZWFzZS4gSXQgaGFzIGJlZW4KKy0gIG9ic29sZXRlIGZvciBtb3JlIHRoYW4gYSBkZWNhZGUuCisgCisgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKy0tLSBmZXRjaG1haWwtNi4zLjI2Lm9yaWcvUkVBRE1FLlNTTAorKysrIGZldGNobWFpbC02LjMuMjYvUkVBRE1FLlNTTAorQEAgLTExLDM2ICsxMSw0NSBAQCBzcGVjaWZpYyB0byBmZXRjaG1haWwuCisgSW4gY2FzZSBvZiB0cm91YmxlcywgbWFpbCB0aGUgUkVBRE1FLlNTTC1TRVJWRVIgZmlsZSB0byB5b3VyIElTUCBhbmQgCisgaGF2ZSB0aGVtIGNoZWNrIHRoZWlyIHNlcnZlciBjb25maWd1cmF0aW9uIGFnYWluc3QgaXQuCisgCistVW5mb3J0dW5hdGVseSwgZmV0Y2htYWlsIGNvbmZ1c2VzIFNTTC9UTFMgcHJvdG9jb2wgbGV2ZWxzIHdpdGggd2hldGhlciAKKy1hIHNlcnZpY2UgbmVlZHMgdG8gdXNlIGluLWJhbmQgbmVnb3RpYXRpb24gKFNUTFMvU1RBUlRUTFMgZm9yIFBPUDMvSU1BUDQpIG9yIGlzIAorLXRvdGFsbHkgU1NMLXdyYXBwZWQgb24gYSBzZXBhcmF0ZSBwb3J0LiAgRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgdGhpcyBjYW5ub3QgCistYmUgZml4ZWQgaW4gYSBidWdmaXggcmVsZWFzZS4KKytVbmZvcnR1bmF0ZWx5LCBmZXRjaG1haWwgY29uZnVzZXMgU1NML1RMUyBwcm90b2NvbCBsZXZlbHMgd2l0aCB3aGV0aGVyIGEKKytzZXJ2aWNlIG5lZWRzIHRvIHVzZSBpbi1iYW5kIG5lZ290aWF0aW9uIChTVExTL1NUQVJUVExTIGZvciBQT1AzL0lNQVA0KQorK29yIGlzIHRvdGFsbHkgU1NMLXdyYXBwZWQgb24gYSBzZXBhcmF0ZSBwb3J0LiAgRm9yIGNvbXBhdGliaWxpdHkKKytyZWFzb25zLCB0aGlzIGNhbm5vdCBiZSBmaXhlZCBpbiBhIGJ1Z2ZpeCBvciBtaW5vciByZWxlYXNlLgorKworK0Fsc28sIGZldGNobWFpbCA2LjQuMCBhbmQgbmV3ZXIgcmVsZWFzZXMgY2hhbmdlZCBzb21lIG9mIHRoZSBzZW1hbnRpY3MKKythcyB0aGUgcmVzdWx0IG9mIGEgYnVnLWZpeCwgYW5kIHdpbGwgYXV0by1uZWdvdGlhdGUgVExTdjEgb3IgbmV3ZXIgb25seS4KKytJZiB5b3VyIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMsIHlvdSBtYXkgaGF2ZSB0byBzcGVjaWZ5IC0tc3NscHJvdG8KKytzc2wzLiAgVGhpcyBpcyBpbiBvcmRlciB0byBwcmVmZXIgdGhlIG5ld2VyIFRMUyBwcm90b2NvbHMsIGJlY2F1c2UgU1NMdjIKKythbmQgdjMgYXJlIGJyb2tlbi4KKyAKKy0JLS0gTWF0dGhpYXMgQW5kcmVlLCAyMDA5LTA1LTA5CisrICAgICAgIC0tIE1hdHRoaWFzIEFuZHJlZSwgMjAxNS0wMS0xNgorIAorIAorIFF1aWNrc3RhcnQKKyAtLS0tLS0tLS0tCisgCisrVXNlIGFuIHVwLXRvLWRhdGUgcmVsZWFzZSBvZiBPcGVuU1NMIDEuMC4xIG9yIG5ld2VyLCBzbyBhcyB0byBnZXQKKytUTFN2MS4yIHN1cHBvcnQuCisrCisgRm9yIHVzZSBvZiBTU0wgb3IgVExTIHdpdGggaW4tYmFuZCBuZWdvdGlhdGlvbiBvbiB0aGUgcmVndWxhciBzZXJ2aWNlJ3MgcG9ydCwgCisgaS4gZS4gd2l0aCBTVExTIG9yIFNUQVJUVExTLCB1c2UgdGhlc2UgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAKKy0gICAgLS1zc2xwcm90byB0bHMxIC0tc3NsY2VydGNrCisrICAgIC0tc3NscHJvdG8gYXV0byAtLXNzbGNlcnRjaworIAorIG9yIHRoZXNlIG9wdGlvbnMgaW4gdGhlIHJjZmlsZSAoYWZ0ZXIgdGhlIHJlc3BlY3RpdmUgInVzZXIiLi4uIG9wdGlvbnMpCisgCistICAgICAgc3NscHJvdG8gdGxzMSAgIHNzbGNlcnRjaworKyAgICAgIHNzbHByb3RvIGF1dG8gICBzc2xjZXJ0Y2sKKyAKKyAKKyBGb3IgdXNlIG9mIFNTTCBvciBUTFMgb24gYSBzZXBhcmF0ZSBwb3J0LCBpZiB0aGUgd2hvbGUgVENQIGNvbm5lY3Rpb24gaXMgCistU1NMLWVuY3J5cHRlZCBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZywgdXNlIHRoZXNlIGNvbW1hbmQgbGluZSBvcHRpb25zIChpbiB0aGUgCistcmNmaWxlLCBvbWl0IGFsbCBsZWFkaW5nICItLSIpOgorK1NTTC1lbmNyeXB0ZWQgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmcgKFNTTC0gb3IgVExTLXdyYXBwZWQpLCB1c2UgdGhlc2UKKytjb21tYW5kIGxpbmUgb3B0aW9ucyAoaW4gdGhlIHJjZmlsZSwgb21pdCBhbGwgbGVhZGluZyAiLS0iKToKKyAKKy0gICAgLS1zc2wgLS1zc2xwcm90byBzc2wzIC0tc3NsY2VydGNrCisrICAgIC0tc3NsIC0tc3NscHJvdG8gYXV0byAtLXNzbGNlcnRjaworIAorIG9yIHRoZXNlIG9wdGlvbnMgaW4gdGhlIHJjZmlsZSAoYWZ0ZXIgdGhlIHJlc3BlY3RpdmUgInVzZXIiLi4uIG9wdGlvbnMpCisgCistICAgICAgc3NsICAgc3NscHJvdG8gc3NsMyAgIHNzbGNlcnRjaworKyAgICAgIHNzbCAgIHNzbHByb3RvIGF1dG8gICBzc2xjZXJ0Y2sKKyAKKyAKKyBCYWNrZ3JvdW5kIGFuZCB1c2UgKGxvbmcgdmVyc2lvbiA6LSkpCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL2NvbmZpZy5oLmluCisrKysgZmV0Y2htYWlsLTYuMy4yNi9jb25maWcuaC5pbgorQEAgLTQ5LDkgKzQ5LDkgQEAKKyAgICBkb24ndC4gKi8KKyAjdW5kZWYgSEFWRV9ERUNMX0hfRVJSTk8KKyAKKy0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFNTTHYyX2NsaWVudF9tZXRob2QnLCBhbmQgdG8gMAorKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgU1NMdjNfY2xpZW50X21ldGhvZCcsIGFuZCB0byAwCisgICAgaWYgeW91IGRvbid0LiAqLworLSN1bmRlZiBIQVZFX0RFQ0xfU1NMVjJfQ0xJRU5UX01FVEhPRAorKyN1bmRlZiBIQVZFX0RFQ0xfU1NMVjNfQ0xJRU5UX01FVEhPRAorIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgc3RyZXJyb3InLCBhbmQgdG8gMCBpZiB5b3UKKyAgICBkb24ndC4gKi8KKy0tLSBmZXRjaG1haWwtNi4zLjI2Lm9yaWcvY29uZmlndXJlCisrKysgZmV0Y2htYWlsLTYuMy4yNi9jb25maWd1cmUKK0BAIC0xLDEzICsxLDExIEBACisgIyEgL2Jpbi9zaAorICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KKy0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgZmV0Y2htYWlsIDYuMy4yNi4KKysjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgZmV0Y2htYWlsIDYuMy4yNi4KKyAjCisgIyBSZXBvcnQgYnVncyB0byA8ZmV0Y2htYWlsLXVzZXJzQGxpc3RzLmJlcmxpb3MuZGU+LgorICMKKyAjCistIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCistIyAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4KKysjIENvcHlyaWdodCAoQykgMTk5Mi0xOTk2LCAxOTk4LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworICMKKyAjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitAQCAtMTM2LDYgKzEzNCwzMSBAQCBleHBvcnQgTEFOR1VBR0UKKyAjIENEUEFUSC4KKyAodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICisgCisrIyBVc2UgYSBwcm9wZXIgaW50ZXJuYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gZW5zdXJlIHdlIGRvbid0IGZhbGwKKysgICMgaW50byBhbiBpbmZpbml0ZSBsb29wLCBjb250aW51b3VzbHkgcmUtZXhlY3V0aW5nIG91cnNlbHZlcy4KKysgIGlmIHRlc3QgeCIke19hc19jYW5fcmVleGVjfSIgIT0geG5vICYmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuCisrICAgIF9hc19jYW5fcmVleGVjPW5vOyBleHBvcnQgX2FzX2Nhbl9yZWV4ZWM7CisrICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCisrIyBuZXV0cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KKysjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgorKyMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KKytCQVNIX0VOVj0vZGV2L251bGwKKytFTlY9L2Rldi9udWxsCisrKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCisrY2FzZSAkLSBpbiAjICgoKCgKKysgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OworKyAgKnYqICkgYXNfb3B0cz0tdiA7OworKyAgKngqICkgYXNfb3B0cz0teCA7OworKyAgKiApIGFzX29wdHM9IDs7CisrZXNhYworK2V4ZWMgJENPTkZJR19TSEVMTCAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CisrIyBBZG1pdHRlZGx5LCB0aGlzIGlzIHF1aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxscyBiYWlsCisrIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgorKyRhc19lY2hvICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMIiA+JjIKKythc19mbl9leGl0IDI1NQorKyAgZmkKKysgICMgV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIHByb3BhZ2F0ZSB0byBvdGhlciBzdWJwcm9jZXNzZXMuCisrICAgICAgICAgIHsgX2FzX2Nhbl9yZWV4ZWM9OyB1bnNldCBfYXNfY2FuX3JlZXhlYzt9CisgaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgorICAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBlbXVsYXRlIHNoCitAQCAtMTY5LDcgKzE5Miw4IEBAIGlmICggc2V0IHg7IGFzX2ZuX3JldF9zdWNjZXNzIHkgJiYgdGVzdAorIGVsc2UKKyAgIGV4aXRjb2RlPTE7IGVjaG8gcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHdlcmUgbm90IHNhdmVkLgorIGZpCistdGVzdCB4XCRleGl0Y29kZSA9IHgwIHx8IGV4aXQgMSIKKyt0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxCisrdGVzdCAteCAvIHx8IGV4aXQgMSIKKyAgIGFzX3N1Z2dlc3RlZD0iICBhc19saW5lbm9fMT0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzFhPVwkTElORU5PCisgICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCisgICBldmFsICd0ZXN0IFwieFwkYXNfbGluZW5vXzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIiAmJgorQEAgLTIxNCwyMSArMjM4LDI1IEBAIElGUz0kYXNfc2F2ZV9JRlMKKyAKKyAKKyAgICAgICBpZiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhlbiA6CistICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3ZpZGUgYQorLQkjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbworLQkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgorLQkjIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCistCUJBU0hfRU5WPS9kZXYvbnVsbAorLQlFTlY9L2Rldi9udWxsCistCSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorLQlleHBvcnQgQ09ORklHX1NIRUxMCistCWNhc2UgJC0gaW4gIyAoKCgoCistCSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CistCSAgKnYqICkgYXNfb3B0cz0tdiA7OworLQkgICp4KiApIGFzX29wdHM9LXggOzsKKy0JICAqICkgYXNfb3B0cz0gOzsKKy0JZXNhYworLQlleGVjICIkQ09ORklHX1NIRUxMIiAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CisrICBleHBvcnQgQ09ORklHX1NIRUxMCisrICAgICAgICAgICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCisrIyBuZXV0cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KKysjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgorKyMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KKytCQVNIX0VOVj0vZGV2L251bGwKKytFTlY9L2Rldi9udWxsCisrKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCisrY2FzZSAkLSBpbiAjICgoKCgKKysgICp2KngqIHwgKngqdiogKSBhc19vcHRzPS12eCA7OworKyAgKnYqICkgYXNfb3B0cz0tdiA7OworKyAgKngqICkgYXNfb3B0cz0teCA7OworKyAgKiApIGFzX29wdHM9IDs7CisrZXNhYworK2V4ZWMgJENPTkZJR19TSEVMTCAkYXNfb3B0cyAiJGFzX215c2VsZiIgJHsxKyIkQCJ9CisrIyBBZG1pdHRlZGx5LCB0aGlzIGlzIHF1aXRlIHBhcmFub2lkLCBzaW5jZSBhbGwgdGhlIGtub3duIHNoZWxscyBiYWlsCisrIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgorKyRhc19lY2hvICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMIiA+JjIKKytleGl0IDI1NQorIGZpCisgCisgICAgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKK0BAIC0zMzEsNiArMzU5LDE0IEBAICRhc19lY2hvIFgiJGFzX2RpciIgfAorIAorIAorIH0gIyBhc19mbl9ta2Rpcl9wCisrCisrIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIFRlc3QgaWYgRklMRSBpcyBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZS4KKythc19mbl9leGVjdXRhYmxlX3AgKCkKKyt7CisrICB0ZXN0IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiCisrfSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAorICMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorQEAgLTQ1Miw2ICs0ODgsMTAgQEAgYXNfY3JfYWxudW09JGFzX2NyX0xldHRlcnMkYXNfY3JfZGlnaXRzCisgICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIgfHwKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogY2Fubm90IGNyZWF0ZSAkYXNfbWUubGluZW5vOyByZXJ1biB3aXRoIGEgUE9TSVggc2hlbGwiID4mMjsgYXNfZm5fZXhpdCAxOyB9CisgCisrICAjIElmIHdlIGhhZCB0byByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCwgd2UncmUgZW5zdXJlZCB0byBoYXZlCisrICAjIGFscmVhZHkgZG9uZSB0aGF0LCBzbyBlbnN1cmUgd2UgZG9uJ3QgdHJ5IHRvIGRvIHNvIGFnYWluIGFuZCBmYWxsCisrICAjIGluIGFuIGluZmluaXRlIGxvb3AuICBUaGlzIGhhcyBhbHJlYWR5IGhhcHBlbmVkIGluIHByYWN0aWNlLgorKyAgX2FzX2Nhbl9yZWV4ZWM9bm87IGV4cG9ydCBfYXNfY2FuX3JlZXhlYworICAgIyBEb24ndCB0cnkgdG8gZXhlYyBhcyBpdCBjaGFuZ2VzICRbMF0sIGNhdXNpbmcgYWxsIHNvcnQgb2YgcHJvYmxlbXMKKyAgICMgKHRoZSBkaXJuYW1lIG9mICRbMF0gaXMgbm90IHRoZSBwbGFjZSB3aGVyZSB3ZSBtaWdodCBmaW5kIHRoZQorICAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KK0BAIC00ODYsMTYgKzUyNiwxNiBAQCBpZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CisgICAgICMgMSkgT24gTVNZUywgYm90aCBgbG4gLXMgZmlsZSBkaXInIGFuZCBgbG4gZmlsZSBkaXInIGZhaWwuCisgICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgorLSAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXAnLgorKyAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXBSJy4KKyAgICAgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAorLSAgICAgIGFzX2xuX3M9J2NwIC1wJworKyAgICAgIGFzX2xuX3M9J2NwIC1wUicKKyAgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgIGFzX2xuX3M9bG4KKyAgIGVsc2UKKy0gICAgYXNfbG5fcz0nY3AgLXAnCisrICAgIGFzX2xuX3M9J2NwIC1wUicKKyAgIGZpCisgZWxzZQorLSAgYXNfbG5fcz0nY3AgLXAnCisrICBhc19sbl9zPSdjcCAtcFInCisgZmkKKyBybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCisgcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorQEAgLTUwNywyOCArNTQ3LDggQEAgZWxzZQorICAgYXNfbWtkaXJfcD1mYWxzZQorIGZpCisgCistaWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorLSAgYXNfdGVzdF94PSd0ZXN0IC14JworLWVsc2UKKy0gIGlmIGxzIC1kTCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgorLSAgICBhc19sc19MX29wdGlvbj1MCistICBlbHNlCistICAgIGFzX2xzX0xfb3B0aW9uPQorLSAgZmkKKy0gIGFzX3Rlc3RfeD0nCistICAgIGV2YWwgc2ggLWMgJ1wnJworLSAgICAgIGlmIHRlc3QgLWQgIiQxIjsgdGhlbgorLQl0ZXN0IC1kICIkMS8uIjsKKy0gICAgICBlbHNlCistCWNhc2UgJDEgaW4gIygKKy0JLSopc2V0ICIuLyQxIjs7CistCWVzYWM7CistCWNhc2UgYGxzIC1sZCckYXNfbHNfTF9vcHRpb24nICIkMSIgMj4vZGV2L251bGxgIGluICMoKAorLQk/Pz9bc3hdKik6OzsqKWZhbHNlOztlc2FjO2ZpCistICAgICdcJycgc2gKKy0gICcKKy1maQorLWFzX2V4ZWN1dGFibGVfcD0kYXNfdGVzdF94CisrYXNfdGVzdF94PSd0ZXN0IC14JworK2FzX2V4ZWN1dGFibGVfcD1hc19mbl9leGVjdXRhYmxlX3AKKyAKKyAjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCisgYXNfdHJfY3BwPSJldmFsIHNlZCAneSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKK0BAIC03NDIsNiArNzYyLDcgQEAgaW5mb2RpcgorIGRvY2RpcgorIG9sZGluY2x1ZGVkaXIKKyBpbmNsdWRlZGlyCisrcnVuc3RhdGVkaXIKKyBsb2NhbHN0YXRlZGlyCisgc2hhcmVkc3RhdGVkaXIKKyBzeXNjb25mZGlyCitAQCAtODQxLDYgKzg2Miw3IEBAIGRhdGFkaXI9JyR7ZGF0YXJvb3RkaXJ9JworIHN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCisgc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCisgbG9jYWxzdGF0ZWRpcj0nJHtwcmVmaXh9L3ZhcicKKytydW5zdGF0ZWRpcj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4nCisgaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCisgb2xkaW5jbHVkZWRpcj0nL3Vzci9pbmNsdWRlJworIGRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKK0BAIC0xMDkzLDYgKzExMTUsMTUgQEAgZG8KKyAgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQorICAgICBzaWxlbnQ9eWVzIDs7CisgCisrICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpIHwgLS1ydW5zdGF0ZWQgXAorKyAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEgfCAtLXJ1bnN0IHwgLS1ydW5zIFwKKysgIHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQorKyAgICBhY19wcmV2PXJ1bnN0YXRlZGlyIDs7CisrICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCisrICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8IC0tcnVucz0qIFwKKysgIHwgLS1ydW49KiB8IC0tcnU9KiB8IC0tcj0qKQorKyAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisrCisgICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8IC0tc2JpIHwgLS1zYikKKyAgICAgYWNfcHJldj1zYmluZGlyIDs7CisgICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXAorQEAgLTEyMzAsNyArMTI2MSw3IEBAIGZpCisgZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCisgCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKKyAJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKKy0JCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyCisrCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpciBydW5zdGF0ZWRpcgorIGRvCisgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKyAgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCitAQCAtMTI1OCw4ICsxMjg5LDYgQEAgdGFyZ2V0PSR0YXJnZXRfYWxpYXMKKyBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4KKyAgIGlmIHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhlbgorICAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKKy0gICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KKy0gICAgSWYgYSBjcm9zcyBjb21waWxlciBpcyBkZXRlY3RlZCB0aGVuIGNyb3NzIGNvbXBpbGUgbW9kZSB3aWxsIGJlIHVzZWQiID4mMgorICAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhlbgorICAgICBjcm9zc19jb21waWxpbmc9eWVzCisgICBmaQorQEAgLTEzODUsNiArMTQxNCw3IEBAIEZpbmUgdHVuaW5nIG9mIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3IKKyAgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQorICAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL2NvbV0KKyAgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KKysgIC0tcnVuc3RhdGVkaXI9RElSICAgICAgIG1vZGlmaWFibGUgcGVyLXByb2Nlc3MgZGF0YSBbTE9DQUxTVEFURURJUi9ydW5dCisgICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgW0VQUkVGSVgvbGliXQorICAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQorICAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KK0BAIC0xNTQ4LDkgKzE1NzgsOSBAQCB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0CisgaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgorICAgY2F0IDw8XF9BQ0VPRgorIGZldGNobWFpbCBjb25maWd1cmUgNi4zLjI2CistZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4CisrZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5CisgCistQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBUaGlzIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KKyBfQUNFT0YKK0BAIC0xODI3LDcgKzE4NTcsNyBAQCAkYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKKyAgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAmJiB7CisgCSB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyB8fAorLQkgJGFzX3Rlc3RfeCBjb25mdGVzdCRhY19leGVleHQKKysJIHRlc3QgLXggY29uZnRlc3QkYWNfZXhlZXh0CisgICAgICAgIH07IHRoZW4gOgorICAgYWNfcmV0dmFsPTAKKyBlbHNlCitAQCAtMjAzMCw3ICsyMDYwLDggQEAgaW50CisgbWFpbiAoKQorIHsKKyBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpID49IDApXTsKKy10ZXN0X2FycmF5IFswXSA9IDAKKyt0ZXN0X2FycmF5IFswXSA9IDA7CisrcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworIAorICAgOworICAgcmV0dXJuIDA7CitAQCAtMjA0Niw3ICsyMDc3LDggQEAgaW50CisgbWFpbiAoKQorIHsKKyBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpIDw9ICRhY19taWQpXTsKKy10ZXN0X2FycmF5IFswXSA9IDAKKyt0ZXN0X2FycmF5IFswXSA9IDA7CisrcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworIAorICAgOworICAgcmV0dXJuIDA7CitAQCAtMjA3Miw3ICsyMTA0LDggQEAgaW50CisgbWFpbiAoKQorIHsKKyBzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpIDwgMCldOworLXRlc3RfYXJyYXkgWzBdID0gMAorK3Rlc3RfYXJyYXkgWzBdID0gMDsKKytyZXR1cm4gdGVzdF9hcnJheSBbMF07CisgCisgICA7CisgICByZXR1cm4gMDsKK0BAIC0yMDg4LDcgKzIxMjEsOCBAQCBpbnQKKyBtYWluICgpCisgeworIHN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkMikgPj0gJGFjX21pZCldOworLXRlc3RfYXJyYXkgWzBdID0gMAorK3Rlc3RfYXJyYXkgWzBdID0gMDsKKytyZXR1cm4gdGVzdF9hcnJheSBbMF07CisgCisgICA7CisgICByZXR1cm4gMDsKK0BAIC0yMTIyLDcgKzIxNTYsOCBAQCBpbnQKKyBtYWluICgpCisgeworIHN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkMikgPD0gJGFjX21pZCldOworLXRlc3RfYXJyYXkgWzBdID0gMAorK3Rlc3RfYXJyYXkgWzBdID0gMDsKKytyZXR1cm4gdGVzdF9hcnJheSBbMF07CisgCisgICA7CisgICByZXR1cm4gMDsKK0BAIC0yMTk1LDcgKzIyMzAsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkCisgcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KKyAKKyBJdCB3YXMgY3JlYXRlZCBieSBmZXRjaG1haWwgJGFzX21lIDYuMy4yNiwgd2hpY2ggd2FzCistZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisrZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisgCisgICAkICQwICRACisgCitAQCAtMjY4OSw3ICsyNzI0LDcgQEAgY2FzZSAkYXNfZGlyLyBpbiAjKCgKKyAgICAgIyBieSBkZWZhdWx0LgorICAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCisgICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistCWlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCI7IH07IHRoZW4KKysJaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgorIAkgIGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCisgCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgCSAgICAjIEFJWCBpbnN0YWxsLiAgSXQgaGFzIGFuIGluY29tcGF0aWJsZSBjYWxsaW5nIGNvbnZlbnRpb24uCitAQCAtMjg1OCw3ICsyODkzLDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBhY19jdl9wcm9nX1NUUklQPSIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTI4OTgsNyArMjkzMyw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0ic3RyaXAiCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtMjk0OSw3ICsyOTg0LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19wcm9nIGluIG1rZGlyIGdta2RpcjsgZG8KKyAJIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLQkgICB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB9IHx8IGNvbnRpbnVlCisrCSAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgfHwgY29udGludWUKKyAJICAgY2FzZSBgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC0tdmVyc2lvbiAyPiYxYCBpbiAjKAorIAkgICAgICdta2RpciAoR05VIGNvcmV1dGlscykgJyogfCBcCisgCSAgICAgJ21rZGlyIChjb3JldXRpbHMpICcqIHwgXAorQEAgLTMwMDIsNyArMzAzNyw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcHJvZ19BV0s9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTMyOTUsNyArMzMzMCw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcGF0aF9QWVRIT049IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtMzQ2Niw3ICszNTAxLDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBhY19jdl9wcm9nX0FXSz0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtMzUxMiw3ICszNTQ3LDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKK0BAIC0zNTUyLDcgKzM1ODcsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9ImdjYyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKK0BAIC0zNjA1LDcgKzM2NDAsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtMzY0Niw3ICszNjgxLDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBpZiB0ZXN0ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA9ICIvdXNyL3VjYi9jYyI7IHRoZW4KKyAgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKyAgICAgICAgY29udGludWUKK0BAIC0zNzA0LDcgKzM3MzksNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTM3NDgsNyArMzc4Myw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtNDE5NCw4ICs0MjI5LDcgQEAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjXworIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgorK3N0cnVjdCBzdGF0OworIC8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgc3RvbGVuIGZyb20gUkNTIDUuNydzIHNyYy9jb25mLnNoLiAgKi8KKyBzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CisgRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKK0BAIC00NzUxLDcgKzQ3ODUsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfUkFOTElCPSIke2FjX3Rvb2xfcHJlZml4fXJhbmxpYiIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKK0BAIC00NzkxLDcgKzQ4MjUsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtNDg1OSw3ICs0ODkzLDcgQEAgZG8KKyAgICAgZm9yIGFjX3Byb2cgaW4gZ3JlcCBnZ3JlcDsgZG8KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorLSAgICAgIHsgdGVzdCAtZiAiJGFjX3BhdGhfR1JFUCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfR1JFUCI7IH0gfHwgY29udGludWUKKysgICAgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX0dSRVAiIHx8IGNvbnRpbnVlCisgIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0dSRVAKKyBjYXNlIGAiJGFjX3BhdGhfR1JFUCIgLS12ZXJzaW9uIDI+JjFgIGluCitAQCAtNDkyNSw3ICs0OTU5LDcgQEAgZG8KKyAgICAgZm9yIGFjX3Byb2cgaW4gZWdyZXA7IGRvCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgIGFjX3BhdGhfRUdSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCistICAgICAgeyB0ZXN0IC1mICIkYWNfcGF0aF9FR1JFUCIgJiYgJGFzX3Rlc3RfeCAiJGFjX3BhdGhfRUdSRVAiOyB9IHx8IGNvbnRpbnVlCisrICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9FR1JFUCIgfHwgY29udGludWUKKyAjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9FR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VHUkVQCisgY2FzZSBgIiRhY19wYXRoX0VHUkVQIiAtLXZlcnNpb24gMj4mMWAgaW4KK0BAIC01MTMyLDggKzUxNjYsOCBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorLSMJICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorLQkgICRhY19pbmNsdWRlc19kZWZhdWx0CisrIyAgICAgICAgIGRlZmluZSBfX0VYVEVOU0lPTlNfXyAxCisrICAgICAgICAgICRhY19pbmNsdWRlc19kZWZhdWx0CisgaW50CisgbWFpbiAoKQorIHsKK0BAIC01NTEzLDExICs1NTQ3LDExIEBAIGVsc2UKKyBpbnQKKyBtYWluICgpCisgeworLS8qIEZJWE1FOiBJbmNsdWRlIHRoZSBjb21tZW50cyBzdWdnZXN0ZWQgYnkgUGF1bC4gKi8KKysKKyAjaWZuZGVmIF9fY3BsdXNwbHVzCistICAvKiBVbHRyaXggbWlwcyBjYyByZWplY3RzIHRoaXMuICAqLworKyAgLyogVWx0cml4IG1pcHMgY2MgcmVqZWN0cyB0aGlzIHNvcnQgb2YgdGhpbmcuICAqLworICAgdHlwZWRlZiBpbnQgY2hhcnNldFsyXTsKKy0gIGNvbnN0IGNoYXJzZXQgY3M7CisrICBjb25zdCBjaGFyc2V0IGNzID0geyAwLCAwIH07CisgICAvKiBTdW5PUyA0LjEuMSBjYyByZWplY3RzIHRoaXMuICAqLworICAgY2hhciBjb25zdCAqY29uc3QgKnBjcGNjOworICAgY2hhciAqKnBwYzsKK0BAIC01NTM0LDggKzU1NjgsOSBAQCBtYWluICgpCisgICArK3BjcGNjOworICAgcHBjID0gKGNoYXIqKikgcGNwY2M7CisgICBwY3BjYyA9IChjaGFyIGNvbnN0ICpjb25zdCAqKSBwcGM7CistICB7IC8qIFNDTyAzLjJ2NCBjYyByZWplY3RzIHRoaXMuICAqLworLSAgICBjaGFyICp0OworKyAgeyAvKiBTQ08gMy4ydjQgY2MgcmVqZWN0cyB0aGlzIHNvcnQgb2YgdGhpbmcuICAqLworKyAgICBjaGFyIHR4OworKyAgICBjaGFyICp0ID0gJnR4OworICAgICBjaGFyIGNvbnN0ICpzID0gMCA/IChjaGFyICopIDAgOiAoY2hhciBjb25zdCAqKSAwOworIAorICAgICAqdCsrID0gMDsKK0BAIC01NTUxLDEwICs1NTg2LDEwIEBAIG1haW4gKCkKKyAgICAgaXB0ciBwID0gMDsKKyAgICAgKytwOworICAgfQorLSAgeyAvKiBBSVggWEwgQyAxLjAyLjAuMCByZWplY3RzIHRoaXMgc2F5aW5nCisrICB7IC8qIEFJWCBYTCBDIDEuMDIuMC4wIHJlamVjdHMgdGhpcyBzb3J0IG9mIHRoaW5nLCBzYXlpbmcKKyAgICAgICAgImsuYyIsIGxpbmUgMi4yNzogMTUwNi0wMjUgKFMpIE9wZXJhbmQgbXVzdCBiZSBhIG1vZGlmaWFibGUgbHZhbHVlLiAqLworLSAgICBzdHJ1Y3QgcyB7IGludCBqOyBjb25zdCBpbnQgKmFwWzNdOyB9OworLSAgICBzdHJ1Y3QgcyAqYjsgYi0+aiA9IDU7CisrICAgIHN0cnVjdCBzIHsgaW50IGo7IGNvbnN0IGludCAqYXBbM107IH0gYng7CisrICAgIHN0cnVjdCBzICpiID0gJmJ4OyBiLT5qID0gNTsKKyAgIH0KKyAgIHsgLyogVUxUUklYLTMyIFYzLjEgKFJldiA5KSB2Y2MgcmVqZWN0cyB0aGlzICovCisgICAgIGNvbnN0IGludCBmb28gPSAxMDsKK0BAIC01NjAwLDcgKzU2MzUsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3Byb2dfTEVYPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKK0BAIC01NjMyLDcgKzU2NjcsOCBAQCBhIHsgRUNITzsgfQorIGIgeyBSRUpFQ1Q7IH0KKyBjIHsgeXltb3JlICgpOyB9CisgZCB7IHl5bGVzcyAoMSk7IH0KKy1lIHsgeXlsZXNzIChpbnB1dCAoKSAhPSAwKTsgfQorK2UgeyAvKiBJUklYIDYuNSBmbGV4IDIuNS40IHVuZGVycXVvdGVzIGl0cyB5eWxlc3MgYXJndW1lbnQuICAqLworKyAgICB5eWxlc3MgKChpbnB1dCAoKSAhPSAwKSk7IH0KKyBmIHsgdW5wdXQgKHl5dGV4dFswXSk7IH0KKyAuIHsgQkVHSU4gSU5JVElBTDsgfQorICUlCitAQCAtNTc5Miw3ICs1ODI4LDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBhY19jdl9wcm9nX1lBQ0M9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTYwNDQsNyArNjA4MCw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcGF0aF9HTVNHRk1UPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTg1NDgsNyArODU4NCw3IEBAIGRvCisgICBJRlM9JGFzX3NhdmVfSUZTCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgYWNfY3ZfcGF0aF9wcm9jbWFpbD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKK0BAIC04NTkwLDcgKzg2MjYsNyBAQCBkbworICAgSUZTPSRhc19zYXZlX0lGUworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgIGFjX2N2X3BhdGhfc2VuZG1haWw9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCitAQCAtODYzMiw3ICs4NjY4LDcgQEAgZG8KKyAgIElGUz0kYXNfc2F2ZV9JRlMKKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICBhY19jdl9wYXRoX21haWxkcm9wPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorQEAgLTEwMTIxLDE2ICsxMDE1NywxNiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb25zaWRlciByZS1yCisgZmkKKyAKKyBjYXNlICIkTElCUyIgaW4gKi1sc3NsKikKKy0JYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiU1NMdjJfY2xpZW50X21ldGhvZCIgImFjX2N2X2hhdmVfZGVjbF9TU0x2Ml9jbGllbnRfbWV0aG9kIiAiI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CisrCWFjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlNTTHYzX2NsaWVudF9tZXRob2QiICJhY19jdl9oYXZlX2RlY2xfU1NMdjNfY2xpZW50X21ldGhvZCIgIiNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPgorICIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9TU0x2Ml9jbGllbnRfbWV0aG9kIiA9IHh5ZXM7IHRoZW4gOgorK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1NTTHYzX2NsaWVudF9tZXRob2QiID0geHllczsgdGhlbiA6CisgICBhY19oYXZlX2RlY2w9MQorIGVsc2UKKyAgIGFjX2hhdmVfZGVjbD0wCisgZmkKKyAKKyBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBIQVZFX0RFQ0xfU1NMVjJfQ0xJRU5UX01FVEhPRCAkYWNfaGF2ZV9kZWNsCisrI2RlZmluZSBIQVZFX0RFQ0xfU1NMVjNfQ0xJRU5UX01FVEhPRCAkYWNfaGF2ZV9kZWNsCisgX0FDRU9GCisgCisgCTs7CitAQCAtMTEzMzQsMTYgKzExMzcwLDE2IEBAIGlmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKKyAgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxlIGRpcicgZmFpbC4KKyAgICAgIyAyKSBESkdQUCA8IDIuMDQgaGFzIG5vIHN5bWxpbmtzOyBgbG4gLXMnIGNyZWF0ZXMgYSB3cmFwcGVyIGV4ZWN1dGFibGUuCistICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcCcuCisrICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgorICAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CistICAgICAgYXNfbG5fcz0nY3AgLXAnCisrICAgICAgYXNfbG5fcz0nY3AgLXBSJworICAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgYXNfbG5fcz1sbgorICAgZWxzZQorLSAgICBhc19sbl9zPSdjcCAtcCcKKysgICAgYXNfbG5fcz0nY3AgLXBSJworICAgZmkKKyBlbHNlCistICBhc19sbl9zPSdjcCAtcCcKKysgIGFzX2xuX3M9J2NwIC1wUicKKyBmaQorIHJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5kaXIvY29uZiQkLmZpbGUgY29uZiQkLmZpbGUKKyBybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCitAQCAtMTE0MDMsMjggKzExNDM5LDE2IEBAIGVsc2UKKyAgIGFzX21rZGlyX3A9ZmFsc2UKKyBmaQorIAorLWlmIHRlc3QgLXggLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0gIGFzX3Rlc3RfeD0ndGVzdCAteCcKKy1lbHNlCistICBpZiBscyAtZEwgLyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0gICAgYXNfbHNfTF9vcHRpb249TAorLSAgZWxzZQorLSAgICBhc19sc19MX29wdGlvbj0KKy0gIGZpCistICBhc190ZXN0X3g9JworLSAgICBldmFsIHNoIC1jICdcJycKKy0gICAgICBpZiB0ZXN0IC1kICIkMSI7IHRoZW4KKy0JdGVzdCAtZCAiJDEvLiI7CistICAgICAgZWxzZQorLQljYXNlICQxIGluICMoCistCS0qKXNldCAiLi8kMSI7OworLQllc2FjOworLQljYXNlIGBscyAtbGQnJGFzX2xzX0xfb3B0aW9uJyAiJDEiIDI+L2Rldi9udWxsYCBpbiAjKCgKKy0JPz8/W3N4XSopOjs7KilmYWxzZTs7ZXNhYztmaQorLSAgICAnXCcnIHNoCistICAnCistZmkKKy1hc19leGVjdXRhYmxlX3A9JGFzX3Rlc3RfeAorKworKyMgYXNfZm5fZXhlY3V0YWJsZV9wIEZJTEUKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBUZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCisrYXNfZm5fZXhlY3V0YWJsZV9wICgpCisreworKyAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorK30gIyBhc19mbl9leGVjdXRhYmxlX3AKKythc190ZXN0X3g9J3Rlc3QgLXgnCisrYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1dGFibGVfcAorIAorICMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KKyBhc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorQEAgLTExNDQ2LDcgKzExNDcwLDcgQEAgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaQorICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCisgYWNfbG9nPSIKKyBUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IGZldGNobWFpbCAkYXNfbWUgNi4zLjI2LCB3aGljaCB3YXMKKy1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKytnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKyAKKyAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKKyAgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVBREVSUworQEAgLTExNTEyLDEwICsxMTUzNiwxMCBAQCBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0CisgYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKKyBhY19jc192ZXJzaW9uPSJcXAorIGZldGNobWFpbCBjb25maWcuc3RhdHVzIDYuMy4yNgorLWNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCwKKytjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCisgICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKKyAKKy1Db3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIFRoaXMgY29uZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisgCitAQCAtMTE2MDYsNyArMTE2MzAsNyBAQCBmaQorIF9BQ0VPRgorIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIGlmIFwkYWNfY3NfcmVjaGVjazsgdGhlbgorLSAgc2V0IFggJyRTSEVMTCcgJyQwJyAkYWNfY29uZmlndXJlX2FyZ3MgXCRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLW5vLWNyZWF0ZSAtLW5vLXJlY3Vyc2lvbgorKyAgc2V0IFggJFNIRUxMICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24KKyAgIHNoaWZ0CisgICBcJGFzX2VjaG8gInJ1bm5pbmcgQ09ORklHX1NIRUxMPSRTSEVMTCBcJCoiID4mNgorICAgQ09ORklHX1NIRUxMPSckU0hFTEwnCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGZldGNobWFpbC02LjMuMjYvY29uZmlndXJlLmFjCitAQCAtODAyLDcgKzgwMiw3IEBAIGVsc2UKKyBmaQorIAorIGNhc2UgIiRMSUJTIiBpbiAqLWxzc2wqKQorLQlBQ19DSEVDS19ERUNMUyhbU1NMdjJfY2xpZW50X21ldGhvZF0sLCxbI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+XSkKKysJQUNfQ0hFQ0tfREVDTFMoW1NTTHYzX2NsaWVudF9tZXRob2RdLCwsWyNpbmNsdWRlIDxvcGVuc3NsL3NzbC5oPl0pCisgCTs7CisgZXNhYworIAorLS0tIGZldGNobWFpbC02LjMuMjYub3JpZy9mZXRjaG1haWwtRkFRLmh0bWwKKysrKyBmZXRjaG1haWwtNi4zLjI2L2ZldGNobWFpbC1GQVEuaHRtbAorQEAgLTY2Nyw4ICs2NjcsOCBAQCBiZWNhdXNlIHRoZXJlIGlzIG5vdCBjdXJyZW50bHkgYSBzdGFuZGFyCisgYWxzbyB1c2VzIHRoaXMgbWV0aG9kLCBzbyB0aGUgdHdvIHdpbGwgaW50ZXJvcGVyYXRlIGhhcHBpbHkuIFRoZXkKKyBiZXR0ZXIsIGJlY2F1c2UgdGhpcyBpcyBob3cgQ3JhaWcgZ2V0cyBoaXMgbWFpbCA7LSk8L3A+CisgCistPHA+RmluYWxseSwgeW91IGNhbiB1c2UgPGEgaHJlZj0iI0s1Ij5TU0w8L2E+IGZvciBjb21wbGV0ZQorLWVuZC10by1lbmQgZW5jcnlwdGlvbiBpZiB5b3UgaGF2ZSBhbiBTU0wtZW5hYmxlZCBtYWlsc2VydmVyLjwvcD4KKys8cD5GaW5hbGx5LCB5b3UgY2FuIHVzZSA8YSBocmVmPSIjSzUiPlNTTCBvciBUTFM8L2E+IGZvciBjb21wbGV0ZQorK2VuZC10by1lbmQgZW5jcnlwdGlvbiBpZiB5b3UgaGF2ZSBhIFRMUy1lbmFibGVkIG1haWxzZXJ2ZXIuPC9wPgorIAorIDxoMj48YSBpZD0iRzExIiBuYW1lPSJHMTEiPkcxMS4gSXMgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbiBuZWVkZWQKKyB0byB1c2UgYSBkeW5hbWljIElQIGFkZHJlc3M/PC9hPjwvaDI+CitAQCAtMjEyMCw3ICsyMTIwLDcgQEAgU1NMPzwvYT48L2gyPgorIAorIDxwPllvdSdsbCBuZWVkIHRvIGhhdmUgdGhlIDxhCisgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iPk9wZW5TU0w8L2E+IGxpYnJhcmllcyBpbnN0YWxsZWQsIGFuZCB0aGV5Cistc2hvdWxkIGF0IGxlYXN0IGJlIHZlcnNpb24gMC45LjcuCisrc2hvdWxkIGF0IGxlYXN0IGJlIHZlcnNpb24gMC45LjgsIHdpdGggMS4wLjEgcHJlZmVycmVkLgorIENvbmZpZ3VyZSB3aXRoIC0td2l0aC1zc2wuIElmIHlvdSBoYXZlIHRoZSBPcGVuU1NMIGxpYnJhcmllcworIGluc3RhbGxlZCBpbiBjb21tb25seS11c2VkIGRlZmF1bHQgbG9jYXRpb25zLCB0aGlzIHdpbGwKKyBzdWZmaWNlLiBJZiB5b3UgaGF2ZSB0aGVtIGluc3RhbGxlZCBpbiBhIG5vbi1kZWZhdWx0IGxvY2F0aW9uLAorQEAgLTIxMzAsNyArMjEzMCw3IEBAIHRvIC0td2l0aC1zc2wgYWZ0ZXIgYW4gZXF1YWwgc2lnbi48L3A+CisgPHA+RmV0Y2htYWlsIGJpbmFyaWVzIGJ1aWx0IHRoaXMgd2F5IHN1cHBvcnQgPGNvZGU+c3NsPC9jb2RlPiwKKyA8Y29kZT5zc2xrZXk8L2NvZGU+LCBhbmQgPGNvZGU+c3NsY2VydDwvY29kZT4gb3B0aW9ucyB0aGF0IGNvbnRyb2wKKyBTU0wgZW5jcnlwdGlvbiwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB1c2UgPGNvZGU+dGxzPC9jb2RlPiBpZiB0aGUKKy1zZXJ2ZXIgb2ZmZXJzIGl0LiBZb3Ugd2lsbCBuZWVkIHRvIGhhdmUgYW4gU1NMLWVuYWJsZWQgbWFpbHNlcnZlciB0bworK3NlcnZlciBvZmZlcnMgaXQuIFlvdSB3aWxsIG5lZWQgdG8gaGF2ZSBhbiBTU0wvVExTLWVuYWJsZWQgbWFpbHNlcnZlciB0bworIHVzZSB0aGVzZSBvcHRpb25zLiBTZWUgdGhlIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzIGFuZCBzb21lIHdvcmRzCisgb2YgY2FyZSBvbiB0aGUgbGltaXRlZCBzZWN1cml0eSBwcm92aWRlZC48L3A+CisgCitAQCAtMjE1NSwxMyArMjE1NSwxNCBAQCBwb2xsIE1ZU0VSVkVSIHBvcnQgOTkzIHBsdWdpbiAib3BlbnNzbCBzCisgICAgICAgICBwcm90b2NvbCBpbWFwIHVzZXJuYW1lIE1ZVVNFUk5BTUUgcGFzc3dvcmQgTVlQQVNTV09SRAorIDwvcHJlPgorIAorLTxwPllvdSBzaG91bGQgbm90ZSB0aGF0IFNTTCBpcyBvbmx5IHNlY3VyZSBhZ2FpbnN0IGEgIm1hbi1pbi10aGUtbWlkZGxlIgorLWF0dGFjayBpZiB0aGUgY2xpZW50IGlzIGFibGUgdG8gdmVyaWZ5IHRoYXQgdGhlIHBlZXIncyBwdWJsaWMga2V5IGlzIHRoZQorLWNvcnJlY3Qgb25lLCBhbmQgaGFzIG5vdCBiZWVuIHN1YnN0aXR1dGVkIGJ5IGFuIGF0dGFja2VyLiBmZXRjaG1haWwgY2FuIGRvCistdGhpcyBpbiBvbmUgb2YgdHdvIHdheXM6IGJ5IHZlcmlmeWluZyB0aGUgU1NMIGNlcnRpZmljYXRlLCBvciBieSBjaGVja2luZworLXRoZSBmaW5nZXJwcmludCBvZiB0aGUgcGVlcidzIHB1YmxpYyBrZXkuPC9wPgorKzxwPllvdSBzaG91bGQgbm90ZSB0aGF0IFNTTCBvciBUTFMgYXJlIG9ubHkgc2VjdXJlIGFnYWluc3QgYQorKyJtYW4taW4tdGhlLW1pZGRsZSIgYXR0YWNrIGlmIHRoZSBjbGllbnQgaXMgYWJsZSB0byB2ZXJpZnkgdGhhdCB0aGUKKytwZWVyJ3MgcHVibGljIGtleSBpcyB0aGUgY29ycmVjdCBvbmUsIGFuZCBoYXMgbm90IGJlZW4gc3Vic3RpdHV0ZWQgYnkgYW4KKythdHRhY2tlci4gZmV0Y2htYWlsIGNhbiBkbyB0aGlzIGluIG9uZSBvZiB0d28gd2F5czogYnkgdmVyaWZ5aW5nIHRoZSBTU0wKKytjZXJ0aWZpY2F0ZSwgb3IgYnkgY2hlY2tpbmcgdGhlIGZpbmdlcnByaW50IG9mIHRoZSBwZWVyJ3MgcHVibGljCisra2V5LjwvcD4KKyAKKy08cD5UaGVyZSBhcmUgdGhyZWUgcGFydHMgdG8gU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbjogY2hlY2tpbmcgdGhhdCB0aGUKKys8cD5UaGVyZSBhcmUgdGhyZWUgcGFydHMgdG8gVExTIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbjogY2hlY2tpbmcgdGhhdCB0aGUKKyBkb21haW4gbmFtZSBpbiB0aGUgY2VydGlmaWNhdGUgbWF0Y2hlcyB0aGUgaG9zdG5hbWUgeW91IGFza2VkIHRvIGNvbm5lY3QgdG87CisgY2hlY2tpbmcgdGhhdCB0aGUgY2VydGlmaWNhdGUgZXhwaXJ5IGRhdGUgaGFzIG5vdCBwYXNzZWQ7IGFuZCBjaGVja2luZyB0aGF0CisgdGhlIGNlcnRpZmljYXRlIGhhcyBiZWVuIHNpZ25lZCBieSBhIGtub3duIENlcnRpZmljYXRlIEF1dGhvcml0eSAoQ0EpLiBUaGlzCitAQCAtMjIyNyw4ICsyMjI4LDEyIEBAIHdpbGwgYXV0b21hdGljYWxseSBhdHRlbXB0IFRMUyBuZWdvdGlhdGkKKyB0aW1lLiAgVGhpcyBjYW4gaG93ZXZlciBjYXVzZSBwcm9ibGVtcyBpZiB0aGUgdXBzdHJlYW0gZGlkbid0IGNvbmZpZ3VyZQorIGhpcyBjZXJ0aWZpY2F0ZXMgcHJvcGVybHkuPC9wPgorIAorLTxwPkluIG9yZGVyIHRvIHByZXZlbnQgZmV0Y2htYWlsIGZyb20gdHJ5aW5nIFRMUyAoU1RMUywgU1RBUlRUTFMpCistbmVnb3RpYXRpb24sIGFkZCB0aGlzIG9wdGlvbjo8L3A+CisrPHA+SW4gb3JkZXIgdG8gcHJldmVudCBmZXRjaG1haWwgNi40LjAgYW5kIG5ld2VyIHZlcnNpb25zIGZyb20gdHJ5aW5nCisrU1RMUyBvciBTVEFSVFRMUyBuZWdvdGlhdGlvbiwgYWRkIHRoaXMgb3B0aW9uOjwvcD4KKys8cHJlPnNzbHByb3RvICcnPC9wcmU+CisrCisrPHA+SW4gb3JkZXIgdG8gcHJldmVudCBvbGRlciBmZXRjaG1haWwgdmVyc2lvbnMgZnJvbSB0cnlpbmcgVExTIChTVExTLCBTVEFSVFRMUykKKytuZWdvdGlhdGlvbiB3aGVyZSB0aGUgYWJvdmUgZG9lcyBub3Qgd29yaywgdHJ5IHRoaXMgb3B0aW9uOjwvcD4KKyAKKyA8cHJlPnNzbHByb3RvIHNzbDIzPC9wcmU+CisgCitAQCAtMjg3NiwxNSArMjg4MSwyMiBAQCBuZWVkIHRvIHNheSBzb21ldGhpbmcgbGlrZSAnPGNvZGU+ZW52ZWxvCisgCisgPHByZT4KKyBSZWNlaXZlZDogZnJvbSBzZW5kMTAzLnlhaG9vbWFpbC5jb20gKHNlbmQxMDMueWFob29tYWlsLmNvbSBbMjA1LjE4MC42MC45Ml0pCistICAgIGJ5IGlzZXJ2LnR0bnMubmV0ICg4LjguNS84LjguNSkgd2l0aCBTTVRQIGlkIFJBQTEwMDg4CistICAgIGZvciAmbHQ7a3N0dXJnZW9uQGZiY2VnLm9yZyZndDs7IFdlZCwgOSBTZXAgMTk5OCAxNzowMTo1OSAtMDcwMAorKyAgICBieSBpc2Vydi5leGFtcGxlLm5ldCAoOC44LjUvOC44LjUpIHdpdGggU01UUCBpZCBSQUExMDA4OAorKyAgICBmb3IgJmx0O2tzdHVyZ2VvbkBmYmNlZy5leGFtcGxlLm9yZyZndDs7IFdlZCwgOSBTZXAgMTk5OCAxNzowMTo1OSAtMDcwMAorIDwvcHJlPgorIAorLTxwPml0IGNoZWNrcyB0byBzZWUgaWYgJ2lzZXJ2LnR0bnMubmV0JyBpcyBhIEROUyBhbGlhcyBvZiB5b3VyCistbWFpbHNlcnZlciBiZWZvcmUgYWNjZXB0aW5nICdrc3R1cmdlb25AZmJjZWcub3JnJyBhcyBhbiBlbnZlbG9wZQorKzxwPml0IGNoZWNrcyB0byBzZWUgaWYgJ2lzZXJ2LmV4YW1wbGUubmV0JyBpcyBhIEROUyBhbGlhcyBvZiB5b3VyCisrbWFpbHNlcnZlciBiZWZvcmUgYWNjZXB0aW5nICdrc3R1cmdlb25AZmJjZWcuZXhhbXBsZS5vcmcnIGFzIGFuIGVudmVsb3BlCisgYWRkcmVzcy4gVGhpcyBjaGVjayBtaWdodCBmYWlsIGlmIHlvdXIgRE5TIHdlcmUgbWlzY29uZmlndXJlZCwgb3IKKy1pZiB5b3Ugd2VyZSB1c2luZyAnbm8gZG5zJyBhbmQgaGFkIGZhaWxlZCB0byBkZWNsYXJlIGlzZXJ2LnR0bnMubmV0CistYXMgYW4gYWxpYXMgb2YgeW91ciBzZXJ2ZXIuPC9wPgorK2lmIHlvdSB3ZXJlIHVzaW5nICdubyBkbnMnIGFuZCBoYWQgZmFpbGVkIHRvIGRlY2xhcmUgaXNlcnYuZXhhbXBsZS5uZXQKKythcyBhbiBhbGlhcyBvZiB5b3VyIHNlcnZlci4gVGhlIHR5cGljYWwgaGludCBpcyBsb2dnaW5nIHNpbWlsYXIgdG86CisrPGNvZGU+bGluZSByZWplY3RlZCwgaXNlcnYuZXhhbXBsZS5uZXQgaXMgbm90IGFuIGFsaWFzIG9mIHRoZSBtYWlsc2VydmVyPC9jb2RlPiwKKytpZiB5b3UgdXNlIGZldGNobWFpbCBpbiB2ZXJib3NlIG1vZGUuPC9wPgorKworKzxwPjxzdHJvbmc+V29ya2Fyb3VuZDo8L3N0cm9uZz4gWW91IGNhbiBzcGVjaWZ5IHRoZSBhbGlhcyBleHBsaWNpdGx5LCB3aXRoIDxjb2RlPmFrYQorKyAgICA8ZW0+aXNlcnYuZXhhbXBsZS5uZXQ8L2VtPjwvY29kZT4gc3RhdGVtZW50cyBpbiB0aGUgcmNmaWxlLiBSZXBsYWNlCisrPGVtPmlzZXJ2LmV4YW1wbGUubmV0PC9lbT4gYnkgdGhlIG5hbWUgeW91IGZpbmQgaW4gPHN0cm9uZz55b3VyPC9zdHJvbmc+CisrJ2J5JyBwYXJ0IG9mIHRoZSAnUmVjZWl2ZWQ6JyBsaW5lLjwvcD4KKyAKKyA8aDI+PGEgaWQ9Ik04IiBuYW1lPSJNOCI+TTguIFVzZXJzIGFyZSBnZXR0aW5nIG11bHRpcGxlIGNvcGllcyBvZgorIG1lc3NhZ2VzLjwvYT48L2gyPgorQEAgLTMyMzcsNiArMzI0OSw4IEBAIEhheWVzIG1vZGUgZXNjYXBlICIrKysiLjwvcD4KKyA8aDI+PGEgaWQ9Ilg4IiBuYW1lPSJYOCI+WDguIEEgc3B1cmlvdXMgKSBpcyBiZWluZyBhcHBlbmRlZCB0byBteQorIG1lc3NhZ2VzLjwvYT48L2gyPgorIAorKzxwPjxlbT5GZXRjaG1haWwgNi4zLjUgYW5kIG5ld2VyIHJlbGVhc2VzIGFyZSBzdXBwb3NlZCB0byBmaXggdGhpcy48L2VtPjwvcD4KKysKKyA8cD5EdWUgdG8gdGhlIHByb2JsZW0gZGVzY3JpYmVkIGluIDxhIGhyZWY9IiNTMiI+UzI8L2E+LCB0aGUKKyBJTUFQIHN1cHBvcnQgaW4gZmV0Y2htYWlsIGNhbm5vdCBmb2xsb3cgdGhlIElNQVAgcHJvdG9jb2wgMTAwJm5ic3A7JS4KKyBNb3N0IG9mIHRoZSB0aW1lIGl0IGRvZXNuJ3QgbWF0dGVyLCBidXQgaWYgeW91IGNvbWJpbmUgaXQgd2l0aCBhbgorQEAgLTMyNzksOCArMzI5Myw2IEBAIGl0IGF0IHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UgaXQgZm9yd2FyZHMKKyBvbiwgeW91J2xsIGdldCBhIG1lc3NhZ2UgYWJvdXQgYWN0dWFsICE9IGV4cGVjdGVkLjwvbGk+CisgPC9vbD4KKyAKKy08cD5UaGVyZSBpcyBubyBmaXggZm9yIHRoaXMuPC9wPgorLQorIDxoMj48YSBpZD0iWDkiIG5hbWU9Ilg5Ij5YOS4gTWlzc2luZyAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyIgaGVhZGVyCisgCXdpdGggRG9taW5vIElNQVA8L2E+PC9oMj4KKyAKKy0tLSBmZXRjaG1haWwtNi4zLjI2Lm9yaWcvZmV0Y2htYWlsLmMKKysrKyBmZXRjaG1haWwtNi4zLjI2L2ZldGNobWFpbC5jCitAQCAtNTQsNiArNTQsMTAgQEAKKyAjZGVmaW5lIEVORVRVTlJFQUNIICAgMTI4ICAgICAgIC8qIEludGVyYWN0aXZlIGRvZXNuJ3Qga25vdyB0aGlzICovCisgI2VuZGlmIC8qIEVORVRVTlJFQUNIICovCisgCisrI2lmZGVmIFNTTF9FTkFCTEUKKysjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4JLyogZm9yIE9QRU5TU0xfTk9fU1NMMiBhbmQgLi4uX1NTTDMgY2hlY2tzICovCisrI2VuZGlmCisrCisgLyogcHJvdG90eXBlcyBmb3IgaW50ZXJuYWwgZnVuY3Rpb25zICovCisgc3RhdGljIGludCBsb2FkX3BhcmFtcyhpbnQsIGNoYXIgKiosIGludCk7Cisgc3RhdGljIHZvaWQgZHVtcF9wYXJhbXMgKHN0cnVjdCBydW5jdGwgKnJ1bnAsIHN0cnVjdCBxdWVyeSAqLCBmbGFnIGltcGxpY2l0KTsKK0BAIC0xMzgsNyArMTQyLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRjb3B5cmlnaHQoRklMRSAqZnApIHsKKyAJCSAgICJDb3B5cmlnaHQgKEMpIDIwMDQgTWF0dGhpYXMgQW5kcmVlLCBFcmljIFMuIFJheW1vbmQsXG4iCisgCQkgICAiICAgICAgICAgICAgICAgICAgIFJvYmVydCBNLiBGdW5rLCBHcmFoYW0gV2lsc29uXG4iCisgCQkgICAiQ29weXJpZ2h0IChDKSAyMDA1IC0gMjAxMiBTdW5pbCBTaGV0eWVcbiIKKy0JCSAgICJDb3B5cmlnaHQgKEMpIDIwMDUgLSAyMDEzIE1hdHRoaWFzIEFuZHJlZVxuIgorKwkJICAgIkNvcHlyaWdodCAoQykgMjAwNSAtIDIwMTUgTWF0dGhpYXMgQW5kcmVlXG4iCisgCQkgICApKTsKKyAJZnByaW50ZihmcCwgR1RfKCJGZXRjaG1haWwgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3VcbiIKKyAJCSAgICJhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLiBGb3IgZGV0YWlscyxcbiIKK0BAIC0yNjIsNiArMjY2LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICNlbmRpZiAvKiBPRE1SX0VOQUJMRSAqLworICNpZmRlZiBTU0xfRU5BQkxFCisgCSIrU1NMIgorKyNpZiAoSEFWRV9ERUNMX1NTTFYzX0NMSUVOVF9NRVRIT0QgKyAwID09IDApIHx8IGRlZmluZWQoT1BFTlNTTF9OT19TU0wzKQorKwkiLVNTTHYzIgorKyNlbmRpZgorICNlbmRpZgorICNpZmRlZiBPUElFX0VOQUJMRQorIAkiK09QSUUiCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL2ZldGNobWFpbC5oCisrKysgZmV0Y2htYWlsLTYuMy4yNi9mZXRjaG1haWwuaAorQEAgLTc3MSw5ICs3NzEsOSBAQCBpbnQgc2VydnBvcnQoY29uc3QgY2hhciAqc2VydmljZSk7CisgaW50IGZtX2dldGFkZHJpbmZvKGNvbnN0IGNoYXIgKm5vZGUsIGNvbnN0IGNoYXIgKnNlcnYsIGNvbnN0IHN0cnVjdCBhZGRyaW5mbyAqaGludHMsIHN0cnVjdCBhZGRyaW5mbyAqKnJlcyk7Cisgdm9pZCBmbV9mcmVlYWRkcmluZm8oc3RydWN0IGFkZHJpbmZvICphaSk7CisgCistLyogcHJvdG90eXBlcyBmcm9tIHRscy5jICovCistaW50IG1heWJlX3RscyhzdHJ1Y3QgcXVlcnkgKmN0bCk7CistaW50IG11c3RfdGxzKHN0cnVjdCBxdWVyeSAqY3RsKTsKKysvKiBwcm90b3R5cGVzIGZyb20gc3RhcnR0bHMuYyAqLworK2ludCBtYXliZV9zdGFydHRscyhzdHJ1Y3QgcXVlcnkgKmN0bCk7CisraW50IG11c3Rfc3RhcnR0bHMoc3RydWN0IHF1ZXJ5ICpjdGwpOworIAorIC8qIHByb3RvdHlwZSBmcm9tIHJmYzgyMnZhbGlkLmMgKi8KKyBpbnQgcmZjODIyX3ZhbGlkX21zZ2lkKGNvbnN0IHVuc2lnbmVkIGNoYXIgKik7CistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL2ZldGNobWFpbC5tYW4KKysrKyBmZXRjaG1haWwtNi4zLjI2L2ZldGNobWFpbC5tYW4KK0BAIC00MTIsMjMgKzQxMiwyMiBAQCBmcm9tLiBUaGUgZm9sZGVyIGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4KKyAuQiBcLVwtc3NsCisgKEtleXdvcmQ6IHNzbCkKKyAuYnIKKy1DYXVzZXMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIG1haWwgc2VydmVyIHRvIGJlIGVuY3J5cHRlZAorLXZpYSBTU0wuICBDb25uZWN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIHNwZWNpZmllZCBiYXNlIHByb3RvY29sIG92ZXIgYQorLWNvbm5lY3Rpb24gc2VjdXJlZCBieSBTU0wuIFRoaXMgb3B0aW9uIGRlZmVhdHMgb3Bwb3J0dW5pc3RpYyBzdGFydHRscworLW5lZ290aWF0aW9uLiBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gdXNlIFwtXC1zc2xwcm90byAnU1NMMycKKy1cLVwtc3NsY2VydGNrIHRvIHZhbGlkYXRlIHRoZSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHRoZSBzZXJ2ZXIgYW5kCistZGVmZWF0IHRoZSBvYnNvbGV0ZSBTU0x2MiBuZWdvdGlhdGlvbi4gTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4KKy10aGUgXGZJUkVBRE1FLlNTTFxmUCBmaWxlIHRoYXQgc2hpcHMgd2l0aCBmZXRjaG1haWwuCistLklQCistTm90ZSB0aGF0IGZldGNobWFpbCBtYXkgc3RpbGwgdHJ5IHRvIG5lZ290aWF0ZSBTU0wgdGhyb3VnaCBzdGFydHRscyBldmVuCistaWYgdGhpcyBvcHRpb24gaXMgb21pdHRlZC4gWW91IGNhbiB1c2UgdGhlIFwtXC1zc2xwcm90byBvcHRpb24gdG8gZGVmZWF0CistdGhpcyBiZWhhdmlvciBvciB0ZWxsIGZldGNobWFpbCB0byBuZWdvdGlhdGUgYSBwYXJ0aWN1bGFyIFNTTCBwcm90b2NvbC4KKytDYXVzZXMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIG1haWwgc2VydmVyIHRvIGJlIGVuY3J5cHRlZCB2aWEgU1NMLCBieQorK25lZ290aWF0aW5nIFNTTCBkaXJlY3RseSBhZnRlciBjb25uZWN0aW5nIChTU0wtd3JhcHBlZCBtb2RlKS4gIEl0IGlzCisraGlnaGx5IHJlY29tbWVuZGVkIHRvIHVzZSBcLVwtc3NsY2VydGNrIHRvIHZhbGlkYXRlIHRoZSBjZXJ0aWZpY2F0ZXMKKytwcmVzZW50ZWQgYnkgdGhlIHNlcnZlci4gIFBsZWFzZSBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIFwtXC1zc2xwcm90bworK2JlbG93ISAgTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIFxmSVJFQURNRS5TU0xcZlAgZmlsZSB0aGF0Cisrc2hpcHMgd2l0aCBmZXRjaG1haWwuCisrLklQCisrTm90ZSB0aGF0IGV2ZW4gaWYgdGhpcyBvcHRpb24gaXMgb21pdHRlZCwgZmV0Y2htYWlsIG1heSBzdGlsbCBuZWdvdGlhdGUKKytTU0wgaW4tYmFuZCBmb3IgUE9QMyBvciBJTUFQLCB0aHJvdWdoIHRoZSBTVExTIG9yIFNUQVJUVExTIGZlYXR1cmUuICBZb3UKKytjYW4gdXNlIHRoZSBcLVwtc3NscHJvdG8gb3B0aW9uIHRvIG1vZGlmeSB0aGF0IGJlaGF2aW9yLgorIC5JUAorIElmIG5vIHBvcnQgaXMgc3BlY2lmaWVkLCB0aGUgY29ubmVjdGlvbiBpcyBhdHRlbXB0ZWQgdG8gdGhlIHdlbGwga25vd24KKyBwb3J0IG9mIHRoZSBTU0wgdmVyc2lvbiBvZiB0aGUgYmFzZSBwcm90b2NvbC4gIFRoaXMgaXMgZ2VuZXJhbGx5IGEKKyBkaWZmZXJlbnQgcG9ydCB0aGFuIHRoZSBwb3J0IHVzZWQgYnkgdGhlIGJhc2UgcHJvdG9jb2wuICBGb3IgSU1BUCwgdGhpcworIGlzIHBvcnQgMTQzIGZvciB0aGUgY2xlYXIgcHJvdG9jb2wgYW5kIHBvcnQgOTkzIGZvciB0aGUgU1NMIHNlY3VyZWQKKy1wcm90b2NvbCwgZm9yIFBPUDMsIGl0IGlzIHBvcnQgMTEwIGZvciB0aGUgY2xlYXIgdGV4dCBhbmQgcG9ydCA5OTUgZm9yCisrcHJvdG9jb2w7IGZvciBQT1AzLCBpdCBpcyBwb3J0IDExMCBmb3IgdGhlIGNsZWFyIHRleHQgYW5kIHBvcnQgOTk1IGZvcgorIHRoZSBlbmNyeXB0ZWQgdmFyaWFudC4KKyAuSVAKKyBJZiB5b3VyIHN5c3RlbSBsYWNrcyB0aGUgY29ycmVzcG9uZGluZyBlbnRyaWVzIGZyb20gL2V0Yy9zZXJ2aWNlcywgc2VlCitAQCAtNDcwLDM5ICs0NjksNzMgQEAgY2F1c2Ugc29tZSBjb21wbGljYXRpb25zIGluIGRhZW1vbiBtb2RlLgorIC5JUAorIEFsc28gc2VlIFwtXC1zc2xjZXJ0IGFib3ZlLgorIC5UUAorLS5CIFwtXC1zc2xwcm90byA8bmFtZT4KKy0oS2V5d29yZDogc3NscHJvdG8pCisrLkIgXC1cLXNzbHByb3RvIDx2YWx1ZT4KKysoS2V5d29yZDogc3NscHJvdG8sIE5PVEU6IHNlbWFudGljIGNoYW5nZXMgc2luY2UgdjYuNC4wKQorIC5icgorLUZvcmNlcyBhbiBTU0wvVExTIHByb3RvY29sLiBQb3NzaWJsZSB2YWx1ZXMgYXJlIFxmQicnXGZQLAorLVwmJ1xmQlNTTDJcZlAnIChub3Qgc3VwcG9ydGVkIG9uIGFsbCBzeXN0ZW1zKSwKKy1cJidcZkJTU0wyM1xmUCcsICh1c2Ugb2YgdGhlc2UgdHdvIHZhbHVlcyBpcyBkaXNjb3VyYWdlZAorLWFuZCBzaG91bGQgb25seSBiZSB1c2VkIGFzIGEgbGFzdCByZXNvcnQpIFwmJ1xmQlNTTDNcZlAnLCBhbmQKKy1cJidcZkJUTFMxXGZQJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBpZiB0aGlzIG9wdGlvbiBpcyB1bnNldCBpczogZm9yCistY29ubmVjdGlvbnMgd2l0aG91dCBcLVwtc3NsLCB1c2UgXCYnXGZCVExTMVxmUCcgc28gdGhhdCBmZXRjaG1haWwgd2lsbAorLW9wcG9ydHVuaXN0aWNhbGx5IHRyeSBTVEFSVFRMUyBuZWdvdGlhdGlvbiB3aXRoIFRMUzEuIFlvdSBjYW4gY29uZmlndXJlCistdGhpcyBvcHRpb24gZXhwbGljaXRseSBpZiB0aGUgZGVmYXVsdCBoYW5kc2hha2UgKFRMUzEgaWYgXC1cLXNzbCBpcyBub3QKKy11c2VkKSBkb2VzIG5vdCB3b3JrIGZvciB5b3VyIHNlcnZlci4KKy0uSVAKKy1Vc2UgdGhpcyBvcHRpb24gd2l0aCAnXGZCVExTMVxmUCcgdmFsdWUgdG8gZW5mb3JjZSBhIFNUQVJUVExTCistY29ubmVjdGlvbi4gSW4gdGhpcyBtb2RlLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gYWxzbyB1c2UKKy1cLVwtc3NsY2VydGNrIChzZWUgYmVsb3cpLiAgTm90ZSB0aGF0IHRoaXMgd2lsbCB0aGVuIGNhdXNlIGZldGNobWFpbAorLXY2LjMuMTkgdG8gZm9yY2UgU1RBUlRUTFMgbmVnb3RpYXRpb24gZXZlbiBpZiBpdCBpcyBub3QgYWR2ZXJ0aXNlZCBieQorLXRoZSBzZXJ2ZXIuCistLklQCistVG8gZGVmZWF0IG9wcG9ydHVuaXN0aWMgVExTdjEgbmVnb3RpYXRpb24gd2hlbiB0aGUgc2VydmVyIGFkdmVydGlzZXMKKy1TVEFSVFRMUyBvciBTVExTLCBhbmQgdXNlIGEgY2xlYXJ0ZXh0IGNvbm5lY3Rpb24gdXNlIFxmQicnXGZQLiAgVGhpcworLW9wdGlvbiwgZXZlbiBpZiB0aGUgYXJndW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZywgd2lsbCBhbHNvIHN1cHByZXNzIHRoZQorLWRpYWdub3N0aWMgJ1NFUlZFUjogb3Bwb3J0dW5pc3RpYyB1cGdyYWRlIHRvIFRMUy4nIG1lc3NhZ2UgaW4gdmVyYm9zZQorLW1vZGUuIFRoZSBkZWZhdWx0IGlzIHRvIHRyeSBhcHByb3ByaWF0ZSBwcm90b2NvbHMgZGVwZW5kaW5nIG9uIGNvbnRleHQuCisrVGhpcyBvcHRpb24gaGFzIGEgZHVhbCB1c2UsIG91dCBvZiBoaXN0b3JpYyBmZXRjaG1haWwgYmVoYXZpb3VyLiBJdAorK2NvbnRyb2xzIGJvdGggdGhlIFNTTC9UTFMgcHJvdG9jb2wgdmVyc2lvbiBhbmQsIGlmIFwtXC1zc2wgaXMgbm90Cisrc3BlY2lmaWVkLCB0aGUgU1RBUlRUTFMgYmVoYXZpb3VyICh1cGdyYWRpbmcgdGhlIHByb3RvY29sIHRvIGFuIFNTTCBvcgorK1RMUyBjb25uZWN0aW9uIGluLWJhbmQpLiBTb21lIG90aGVyIG9wdGlvbnMgbWF5IGhvd2V2ZXIgbWFrZSBUTFMKKyttYW5kYXRvcnkuCisrLlBQCisrT25seSBpZiB0aGlzIG9wdGlvbiBhbmQgXC1cLXNzbCBhcmUgYm90aCBtaXNzaW5nIGZvciBhIHBvbGwsIHRoZXJlIHdpbGwKKytiZSBvcHBvcnR1bmlzdGljIFRMUyBmb3IgUE9QMyBhbmQgSU1BUCwgd2hlcmUgZmV0Y2htYWlsIHdpbGwgYXR0ZW1wdCB0bworK3VwZ3JhZGUgdG8gVExTdjEgb3IgbmV3ZXIuCisrLlBQCisrUmVjb2duaXplZCB2YWx1ZXMgZm9yIFwtXC1zc2xwcm90byBhcmUgZ2l2ZW4gYmVsb3cuIFlvdSBzaG91bGQgbm9ybWFsbHkKKytjaG9zZSBvbmUgb2YgdGhlIGF1dG8tbmVnb3RpYXRpbmcgb3B0aW9ucywgaS4gZS4gJ1xmQmF1dG9cZlAnIG9yIG9uZSBvZgorK3RoZSBvcHRpb25zIGVuZGluZyBpbiBhIHBsdXMgKFxmQitcZlApIGNoYXJhY3Rlci4gTm90ZSB0aGF0IGRlcGVuZGluZworK29uIE9wZW5TU0wgbGlicmFyeSB2ZXJzaW9uIGFuZCBjb25maWd1cmF0aW9uLCBzb21lIG9wdGlvbnMgY2F1c2UKKytydW4tdGltZSBlcnJvcnMgYmVjYXVzZSB0aGUgcmVxdWVzdGVkIFNTTCBvciBUTFMgdmVyc2lvbnMgYXJlIG5vdAorK3N1cHBvcnRlZCBieSB0aGUgcGFydGljdWxhciBpbnN0YWxsZWQgT3BlblNTTCBsaWJyYXJ5LgorKy5SUworKy5JUCAiXGZCJydcZlAsIHRoZSBlbXB0eSBzdHJpbmciCisrRGlzYWJsZSBTVEFSVFRMUy4gSWYgXC1cLXNzbCBpcyBnaXZlbiBmb3IgdGhlIHNhbWUgc2VydmVyLCBsb2cgYW4gZXJyb3IKKythbmQgcHJldGVuZCB0aGF0ICdcZkJhdXRvXGZQJyBoYWQgYmVlbiB1c2VkIGluc3RlYWQuCisrLklQICdcZkJhdXRvXGZQJworKyhkZWZhdWx0KS4gU2luY2UgdjYuNC4wLiBSZXF1aXJlIFRMUy4gQXV0by1uZWdvdGlhdGUgVExTdjEgb3IgbmV3ZXIsIGRpc2FibGUgU1NMdjMgZG93bmdyYWRlLgorKyhmZXRjaG1haWwgNi4zLjI2IGFuZCBvbGRlciBoYXZlIGF1dG8tbmVnb3RpYXRlZCBhbGwgcHJvdG9jb2xzIHRoYXQKKyt0aGVpciBPcGVuU1NMIGxpYnJhcnkgc3VwcG9ydGVkLCBpbmNsdWRpbmcgdGhlIGJyb2tlbiBTU0x2MykuCisrLklQICJcJidcZkJTU0wyM1xmUCcKKytzZWUgJ1xmQmF1dG9cZlAnLgorKy5JUCBcJidcZkJTU0wzXGZQJworK1JlcXVpcmUgU1NMdjMgZXhhY3RseS4gU1NMdjMgaXMgYnJva2VuLCBub3Qgc3VwcG9ydGVkIG9uIGFsbCBzeXN0ZW1zLCBhdm9pZCBpdAorK2lmIHBvc3NpYmxlLiAgVGhpcyB3aWxsIG1ha2UgZmV0Y2htYWlsIG5lZ290aWF0ZSBTU0x2MyBvbmx5LCBhbmQgaXMgdGhlCisrb25seSB3YXkgYmVzaWRlcyAnXGZCU1NMMytcZlAnIHRvIGhhdmUgZmV0Y2htYWlsIDYuNC4wIG9yIG5ld2VyIHBlcm1pdCBTU0x2My4KKysuSVAgXCYnXGZCU1NMMytcZlAnCisrc2FtZSBhcyAnXGZCYXV0b1xmUCcsIGJ1dCBwZXJtaXQgU1NMdjMgYXMgd2VsbC4gVGhpcyBpcyB0aGUgb25seSB3YXkKKytiZXNpZGVzICdcZkJTU0wzXGZQJyB0byBoYXZlIGZldGNobWFpbCA2LjQuMCBvciBuZXdlciBwZXJtaXQgU1NMdjMuCisrLklQIFwmJ1xmQlRMUzFcZlAnCisrUmVxdWlyZSBUTFN2MS4gVGhpcyBkb2VzIG5vdCBuZWdvdGlhdGUgVExTdjEuMSBvciBuZXdlciwgYW5kIGlzCisrZGlzY291cmFnZWQuIFJlcGxhY2UgYnkgVExTMSsgdW5sZXNzIHRoZSBsYXR0ZXIgY2hva2VzIHlvdXIgc2VydmVyLgorKy5JUCBcJidcZkJUTFMxK1xmUCcKKytTaW5jZSB2Ni40LjAuIFNlZSAnZkJhdXRvXGZQJy4KKysuSVAgXCYnXGZCVExTMS4xXGZQJworK1NpbmNlIHY2LjQuMC4gUmVxdWlyZSBUTFMgdjEuMSBleGFjdGx5LgorKy5JUCBcJidcZkJUTFMxLjErXGZQJworK1NpbmNlIHY2LjQuMC4gUmVxdWlyZSBUTFMuIEF1dG8tbmVnb3RpYXRlIFRMU3YxLjEgb3IgbmV3ZXIuCisrLklQIFwmJ1xmQlRMUzEuMlxmUCcKKytTaW5jZSB2Ni40LjAuIFJlcXVpcmUgVExTIHYxLjIgZXhhY3RseS4KKysuSVAgJ1xmQlRMUzEuMitcZlAnCisrU2luY2UgdjYuNC4wLiBSZXF1aXJlIFRMUy4gQXV0by1uZWdvdGlhdGUgVExTdjEuMiBvciBuZXdlci4KKysuSVAgIlVucmVjb2duaXplZCBwYXJhbWV0ZXJzIgorK2FyZSB0cmVhdGVkIHRoZSBzYW1lIGFzICdcZkJhdXRvXGZQJy4KKysuUkUKKysuSVAKKytOT1RFOiB5b3Ugc2hvdWxkIGhhcmRseSBldmVyIG5lZWQgdG8gdXNlIGFueXRoaW5nIG90aGVyIHRoYW4gJycgKHRvCisrZm9yY2UgYW4gdW5lbmNyeXB0ZWQgY29ubmVjdGlvbikgb3IgJ2F1dG8nICh0byBlbmZvcmNlIFRMUykuCisgLlRQCisgLkIgXC1cLXNzbGNlcnRjaworIChLZXl3b3JkOiBzc2xjZXJ0Y2spCisgLmJyCistQ2F1c2VzIGZldGNobWFpbCB0byBzdHJpY3RseSBjaGVjayB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGFnYWluc3QgYSBzZXQgb2YKKy1sb2NhbCB0cnVzdGVkIGNlcnRpZmljYXRlcyAoc2VlIHRoZSBcZkJzc2xjZXJ0ZmlsZVxmUCBhbmQgXGZCc3NsY2VydHBhdGhcZlAKKy1vcHRpb25zKS4gSWYgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZSBjYW5ub3QgYmUgb2J0YWluZWQgb3IgaXMgbm90IHNpZ25lZCBieSBvbmUKKy1vZiB0aGUgdHJ1c3RlZCBvbmVzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSwgdGhlIFNTTCBjb25uZWN0aW9uIHdpbGwgZmFpbCwKKy1yZWdhcmRsZXNzIG9mIHRoZSBcZkJzc2xmaW5nZXJwcmludFxmUCBvcHRpb24uCisrQ2F1c2VzIGZldGNobWFpbCB0byByZXF1aXJlIHRoYXQgU1NML1RMUyBiZSB1c2VkIGFuZCBkaXNjb25uZWN0IGlmIGl0CisrY2FuIG5vdCBzdWNjZXNzZnVsbHkgbmVnb3RpYXRlIFNTTCBvciBUTFMsIG9yIGlmIGl0IGNhbm5vdCBzdWNjZXNzZnVsbHkKKyt2ZXJpZnkgYW5kIHZhbGlkYXRlIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgZm9sbG93IGl0IHRvIGEgdHJ1c3QgYW5jaG9yIChvcgorK3RydXN0ZWQgcm9vdCBjZXJ0aWZpY2F0ZSkuIFRoZSB0cnVzdCBhbmNob3JzIGFyZSBnaXZlbiBhcyBhIHNldCBvZiBsb2NhbAorK3RydXN0ZWQgY2VydGlmaWNhdGVzIChzZWUgdGhlIFxmQnNzbGNlcnRmaWxlXGZQIGFuZCBcZkJzc2xjZXJ0cGF0aFxmUAorK29wdGlvbnMpLiBJZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBvYnRhaW5lZCBvciBpcyBub3Qgc2lnbmVkCisrYnkgb25lIG9mIHRoZSB0cnVzdGVkIG9uZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpLCBmZXRjaG1haWwgd2lsbAorK2Rpc2Nvbm5lY3QsIHJlZ2FyZGxlc3Mgb2YgdGhlIFxmQnNzbGZpbmdlcnByaW50XGZQIG9wdGlvbi4KKyAuSVAKKyBOb3RlIHRoYXQgQ1JMIChjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzKSBhcmUgb25seSBzdXBwb3J0ZWQgaW4KKyBPcGVuU1NMIDAuOS43IGFuZCBuZXdlciEgWW91ciBzeXN0ZW0gY2xvY2sgc2hvdWxkIGFsc28gYmUgcmVhc29uYWJseQorQEAgLTEyMDIsMzEgKzEyMzUsMzMgQEAgY2FwYWJpbGl0eSByZXNwb25zZS4gU3BlY2lmeSBhIHVzZXIgb3B0aQorIHVzZXJuYW1lIGFuZCB0aGUgcGFydCB0byB0aGUgcmlnaHQgYXMgdGhlIE5UTE0gZG9tYWluLgorIAorIC5TUyBTZWN1cmUgU29ja2V0IExheWVycyAoU1NMKSBhbmQgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpCisrLlBQIEFsbCByZXRyaWV2YWwgcHJvdG9jb2xzIGNhbiB1c2UgU1NMIG9yIFRMUyB3cmFwcGluZyBmb3IgdGhlCisrdHJhbnNwb3J0LiBBZGRpdGlvbmFsbHksIFBPUDMgYW5kIElNQVAgcmV0cml2YWwgY2FuIGFsc28gbmVnb3RpYXRlCisrU1NML1RMUyBieSBtZWFucyBvZiBTVEFSVFRMUyAob3IgU1RMUykuCisgLlBQCisgTm90ZSB0aGF0IGZldGNobWFpbCBjdXJyZW50bHkgdXNlcyB0aGUgT3BlblNTTCBsaWJyYXJ5LCB3aGljaCBpcworIHNldmVyZWx5IHVuZGVyZG9jdW1lbnRlZCwgc28gZmFpbHVyZXMgbWF5IG9jY3VyIGp1c3QgYmVjYXVzZSB0aGUKKyBwcm9ncmFtbWVycyBhcmUgbm90IGF3YXJlIG9mIE9wZW5TU0wncyByZXF1aXJlbWVudCBvZiB0aGUgZGF5LgorIEZvciBpbnN0YW5jZSwgc2luY2UgdjYuMy4xNiwgZmV0Y2htYWlsIGNhbGxzCisgT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKSwgd2hpY2ggaXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgY2VydGlmaWNhdGVzCistdXNpbmcgU0hBMjU2IG9uIE9wZW5TU0wgMC45LjggLS0gdGhpcyBpbmZvcm1hdGlvbiBpcyBkZWVwbHkgaGlkZGVuIGluIHRoZQorLWRvY3VtZW50YXRpb24gYW5kIG5vdCBhdCBhbGwgb2J2aW91cy4gIFBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8gcmVwb3J0Cistc3VidGxlIFNTTCBmYWlsdXJlcy4KKy0uUFAKKy1Zb3UgY2FuIGFjY2VzcyBTU0wgZW5jcnlwdGVkIHNlcnZpY2VzIGJ5IHNwZWNpZnlpbmcgdGhlIFwtXC1zc2wgb3B0aW9uLgorLVlvdSBjYW4gYWxzbyBkbyB0aGlzIHVzaW5nIHRoZSAic3NsIiB1c2VyIG9wdGlvbiBpbiB0aGUgLmZldGNobWFpbHJjCistZmlsZS4gV2l0aCBTU0wgZW5jcnlwdGlvbiBlbmFibGVkLCBxdWVyaWVzIGFyZSBpbml0aWF0ZWQgb3ZlciBhCistY29ubmVjdGlvbiBhZnRlciBuZWdvdGlhdGluZyBhbiBTU0wgc2Vzc2lvbiwgYW5kIHRoZSBjb25uZWN0aW9uIGZhaWxzIGlmCistU1NMIGNhbm5vdCBiZSBuZWdvdGlhdGVkLiAgU29tZSBzZXJ2aWNlcywgc3VjaCBhcyBQT1AzIGFuZCBJTUFQLCBoYXZlCisrdXNpbmcgU0hBMjU2IG9uIE9wZW5TU0wgMC45LjggLS0gdGhpcyBpbmZvcm1hdGlvbiBpcyBkZWVwbHkgaGlkZGVuIGluCisrdGhlIGRvY3VtZW50YXRpb24gYW5kIG5vdCBhdCBhbGwgb2J2aW91cy4gIFBsZWFzZSBkbyBub3QgaGVzaXRhdGUgdG8KKytyZXBvcnQgc3VidGxlIFNTTCBmYWlsdXJlcy4KKysuUFAKKytZb3UgY2FuIGFjY2VzcyBTU0wgZW5jcnlwdGVkIHNlcnZpY2VzIGJ5IHNwZWNpZnlpbmcgdGhlIG9wdGlvbnMgc3RhcnRpbmcKKyt3aXRoIFwtXC1zc2wsIHN1Y2ggYXMgXC1cLXNzbCwgXC1cLXNzbHByb3RvLCBcLVwtc3NsY2VydGNrLCBhbmQgb3RoZXJzLgorK1lvdSBjYW4gYWxzbyBkbyB0aGlzIHVzaW5nIHRoZSBjb3JyZXNwb25kaW5nIHVzZXIgb3B0aW9ucyBpbiB0aGUgLmZldGNobWFpbHJjCisrZmlsZS4gIFNvbWUgc2VydmljZXMsIHN1Y2ggYXMgUE9QMyBhbmQgSU1BUCwgaGF2ZQorIGRpZmZlcmVudCB3ZWxsIGtub3duIHBvcnRzIGRlZmluZWQgZm9yIHRoZSBTU0wgZW5jcnlwdGVkIHNlcnZpY2VzLiAgVGhlCisgZW5jcnlwdGVkIHBvcnRzIHdpbGwgYmUgc2VsZWN0ZWQgYXV0b21hdGljYWxseSB3aGVuIFNTTCBpcyBlbmFibGVkIGFuZAorLW5vIGV4cGxpY2l0IHBvcnQgaXMgc3BlY2lmaWVkLiBUaGUgXC1cLXNzbHByb3RvICdTU0wzJyBvcHRpb24gc2hvdWxkIGJlCistdXNlZCB0byBzZWxlY3QgdGhlIFNTTHYzIHByb3RvY29sIChkZWZhdWx0IGlmIHVuc2V0OiB2MiBvciB2MykuICBBbHNvLAorLXRoZSBcLVwtc3NsY2VydGNrIGNvbW1hbmQgbGluZSBvciBzc2xjZXJ0Y2sgcnVuIGNvbnRyb2wgZmlsZSBvcHRpb24KKy1zaG91bGQgYmUgdXNlZCB0byBmb3JjZSBzdHJpY3QgY2VydGlmaWNhdGUgY2hlY2tpbmcgLSBzZWUgYmVsb3cuCisrbm8gZXhwbGljaXQgcG9ydCBpcyBzcGVjaWZpZWQuICAgQWxzbywgdGhlIFwtXC1zc2xjZXJ0Y2sgY29tbWFuZCBsaW5lIG9yCisrc3NsY2VydGNrIHJ1biBjb250cm9sIGZpbGUgb3B0aW9uIHNob3VsZCBiZSB1c2VkIHRvIGZvcmNlIHN0cmljdAorK2NlcnRpZmljYXRlIGNoZWNraW5nIC0gc2VlIGJlbG93LgorIC5QUAorIElmIFNTTCBpcyBub3QgY29uZmlndXJlZCwgZmV0Y2htYWlsIHdpbGwgdXN1YWxseSBvcHBvcnR1bmlzdGljYWxseSB0cnkgdG8gdXNlCistU1RBUlRUTFMuIFNUQVJUVExTIGNhbiBiZSBlbmZvcmNlZCBieSB1c2luZyBcLVwtc3NscHJvdG8gIlRMUzEiLiBUTFMKKy1jb25uZWN0aW9ucyB1c2UgdGhlIHNhbWUgcG9ydCBhcyB0aGUgdW5lbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUKKytTVEFSVFRMUy4gU1RBUlRUTFMgY2FuIGJlIGVuZm9yY2VkIGJ5IHVzaW5nIFwtXC1zc2xwcm90b1x+YXV0byBhbmQKKytkZWZlYXRlZCBieSB1c2luZyBcLVwtc3NscHJvdG9cficnLgorK1RMUyBjb25uZWN0aW9ucyB1c2UgdGhlIHNhbWUgcG9ydCBhcyB0aGUgdW5lbmNyeXB0ZWQgdmVyc2lvbiBvZiB0aGUKKyBwcm90b2NvbCBhbmQgbmVnb3RpYXRlIFRMUyB2aWEgc3BlY2lhbCBjb21tYW5kLiBUaGUgXC1cLXNzbGNlcnRjaworIGNvbW1hbmQgbGluZSBvciBzc2xjZXJ0Y2sgcnVuIGNvbnRyb2wgZmlsZSBvcHRpb24gc2hvdWxkIGJlIHVzZWQgdG8KKyBmb3JjZSBzdHJpY3QgY2VydGlmaWNhdGUgY2hlY2tpbmcgLSBzZWUgYmVsb3cuCistLS0gZmV0Y2htYWlsLTYuMy4yNi5vcmlnL2ltYXAuYworKysrIGZldGNobWFpbC02LjMuMjYvaW1hcC5jCitAQCAtNDA1LDYgKzQwNSw4IEBAIHN0YXRpYyBpbnQgaW1hcF9nZXRhdXRoKGludCBzb2NrLCBzdHJ1Y3QKKyAvKiBhcHBseSBmb3IgY29ubmVjdGlvbiBhdXRob3JpemF0aW9uICovCisgeworICAgICBpbnQgb2sgPSAwOworKyAgICBjaGFyICpjb21tb25uYW1lOworKworICAgICAodm9pZClncmVldGluZzsKKyAKKyAgICAgLyoKK0BAIC00MjksMjUgKzQzMSwyMSBAQCBzdGF0aWMgaW50IGltYXBfZ2V0YXV0aChpbnQgc29jaywgc3RydWN0CisgICAgICAgICByZXR1cm4oUFNfU1VDQ0VTUyk7CisgICAgIH0KKyAKKy0jaWZkZWYgU1NMX0VOQUJMRQorLSAgICBpZiAobWF5YmVfdGxzKGN0bCkpIHsKKy0JY2hhciAqY29tbW9ubmFtZTsKKy0KKy0JY29tbW9ubmFtZSA9IGN0bC0+c2VydmVyLnBvbGxuYW1lOworLQlpZiAoY3RsLT5zZXJ2ZXIudmlhKQorLQkgICAgY29tbW9ubmFtZSA9IGN0bC0+c2VydmVyLnZpYTsKKy0JaWYgKGN0bC0+c3NsY29tbW9ubmFtZSkKKy0JICAgIGNvbW1vbm5hbWUgPSBjdGwtPnNzbGNvbW1vbm5hbWU7CisrICAgIGNvbW1vbm5hbWUgPSBjdGwtPnNlcnZlci5wb2xsbmFtZTsKKysgICAgaWYgKGN0bC0+c2VydmVyLnZpYSkKKysJY29tbW9ubmFtZSA9IGN0bC0+c2VydmVyLnZpYTsKKysgICAgaWYgKGN0bC0+c3NsY29tbW9ubmFtZSkKKysJY29tbW9ubmFtZSA9IGN0bC0+c3NsY29tbW9ubmFtZTsKKyAKKy0JaWYgKHN0cnN0cihjYXBhYmlsaXRpZXMsICJTVEFSVFRMUyIpCistCQl8fCBtdXN0X3RscyhjdGwpKSAvKiBpZiBUTFMgaXMgbWFuZGF0b3J5LCBpZ25vcmUgY2FwYWJpbGl0aWVzICovCisrI2lmZGVmIFNTTF9FTkFCTEUKKysgICAgaWYgKG1heWJlX3N0YXJ0dGxzKGN0bCkpIHsKKysJaWYgKChzdHJzdHIoY2FwYWJpbGl0aWVzLCAiU1RBUlRUTFMiKSAmJiBtYXliZV9zdGFydHRscyhjdGwpKQorKwkJfHwgbXVzdF9zdGFydHRscyhjdGwpKSAvKiBpZiBUTFMgaXMgbWFuZGF0b3J5LCBpZ25vcmUgY2FwYWJpbGl0aWVzICovCisgCXsKKy0JICAgIC8qIFVzZSAidGxzMSIgcmF0aGVyIHRoYW4gY3RsLT5zc2xwcm90byBiZWNhdXNlIHRsczEgaXMgdGhlIG9ubHkKKy0JICAgICAqIHByb3RvY29sIHRoYXQgd2lsbCB3b3JrIHdpdGggU1RBUlRUTFMuICBEb24ndCBuZWVkIHRvIHdvcnJ5CistCSAgICAgKiB3aGV0aGVyIFRMUyBpcyBtYW5kYXRvcnkgb3Igb3Bwb3J0dW5pc3RpYyB1bmxlc3MgU1NMT3BlbigpIGZhaWxzCistCSAgICAgKiAoc2VlIGJlbG93KS4gKi8KKysJICAgIC8qIERvbid0IG5lZWQgdG8gd29ycnkgd2hldGhlciBUTFMgaXMgbWFuZGF0b3J5IG9yCisrCSAgICAgKiBvcHBvcnR1bmlzdGljIHVubGVzcyBTU0xPcGVuKCkgZmFpbHMgKHNlZSBiZWxvdykuICovCisgCSAgICBpZiAoZ2VuX3RyYW5zYWN0KHNvY2ssICJTVEFSVFRMUyIpID09IFBTX1NVQ0NFU1MKKy0JCSAgICAmJiAoc2V0X3RpbWVvdXQobXl0aW1lb3V0KSwgU1NMT3Blbihzb2NrLCBjdGwtPnNzbGNlcnQsIGN0bC0+c3Nsa2V5LCAidGxzMSIsIGN0bC0+c3NsY2VydGNrLAorKwkJICAgICYmIChzZXRfdGltZW91dChteXRpbWVvdXQpLCBTU0xPcGVuKHNvY2ssIGN0bC0+c3NsY2VydCwgY3RsLT5zc2xrZXksIGN0bC0+c3NscHJvdG8sIGN0bC0+c3NsY2VydGNrLAorIAkJCWN0bC0+c3NsY2VydGZpbGUsIGN0bC0+c3NsY2VydHBhdGgsIGN0bC0+c3NsZmluZ2VycHJpbnQsIGNvbW1vbm5hbWUsCisgCQkJY3RsLT5zZXJ2ZXIucG9sbG5hbWUsICZjdGwtPnJlbW90ZW5hbWUpKSAhPSAtMSkKKyAJICAgIHsKK0BAIC00NzAsNyArNDY4LDcgQEAgc3RhdGljIGludCBpbWFwX2dldGF1dGgoaW50IHNvY2ssIHN0cnVjdAorIAkJeworIAkJICAgIHJlcG9ydChzdGRvdXQsIEdUXygiJXM6IHVwZ3JhZGUgdG8gVExTIHN1Y2NlZWRlZC5cbiIpLCBjb21tb25uYW1lKTsKKyAJCX0KKy0JICAgIH0gZWxzZSBpZiAobXVzdF90bHMoY3RsKSkgeworKwkgICAgfSBlbHNlIGlmIChtdXN0X3N0YXJ0dGxzKGN0bCkpIHsKKyAJCS8qIENvbmZpZyByZXF1aXJlZCBUTFMgYnV0IHdlIGNvdWxkbid0IGd1YXJhbnRlZSBpdCwgc28gd2UgbXVzdAorIAkJICogc3RvcC4gKi8KKyAJCXNldF90aW1lb3V0KDApOworQEAgLTQ5Miw2ICs0OTAsMTAgQEAgc3RhdGljIGludCBpbWFwX2dldGF1dGgoaW50IHNvY2ssIHN0cnVjdAorIAkJLyogVXNhYmxlLiAgUHJvY2VlZCB3aXRoIGF1dGhlbnRpY2F0aW5nIGluc2VjdXJlbHkuICovCisgCSAgICB9CisgCX0KKysgICAgfSBlbHNlIHsKKysJaWYgKHN0cnN0cihjYXBhYmlsaXRpZXMsICJTVEFSVFRMUyIpICYmIG91dGxldmVsID49IE9fVkVSQk9TRSkgeworKwkgICAgcmVwb3J0KHN0ZG91dCwgR1RfKCIlczogV0FSTklORzogc2VydmVyIG9mZmVyZWQgU1RBUlRUTFMgYnV0IHNzbHByb3RvICcnIGdpdmVuLlxuIiksIGNvbW1vbm5hbWUpOworKwl9CisgICAgIH0KKyAjZW5kaWYgLyogU1NMX0VOQUJMRSAqLworIAorLS0tIGZldGNobWFpbC02LjMuMjYub3JpZy9wby9NYWtldmFycworKysrIGZldGNobWFpbC02LjMuMjYvcG8vTWFrZXZhcnMKK0BAIC00NiwzICs0NiwxNSBAQCBNU0dJRF9CVUdTX0FERFJFU1MgPSBmZXRjaG1haWwtZGV2ZWxAbGlzCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKKyAjIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCisgRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMgPQorKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIHRoZSAkKERPTUFJTikucG90IGZpbGUgY29udGFpbnMgbWVzc2FnZXMgd2l0aCBhbiAnbXNnY3R4dCcKKysjIGNvbnRleHQuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZCAibm8iLiAgU2V0IHRoaXMgdG8geWVzIGlmIHRoZQorKyMgcGFja2FnZSB1c2VzIGZ1bmN0aW9ucyB0YWtpbmcgYWxzbyBhIG1lc3NhZ2UgY29udGV4dCwgbGlrZSBwZ2V0dGV4dCgpLCBvcgorKyMgaWYgaW4gJChYR0VUVEVYVF9PUFRJT05TKSB5b3UgZGVmaW5lIGtleXdvcmRzIHdpdGggYSBjb250ZXh0IGFyZ3VtZW50LgorK1VTRV9NU0dDVFhUID0gbm8KKysKKysjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byBtc2dtZXJnZS4KKysjIFVzZWZ1bCBvcHRpb25zIGFyZSBpbiBwYXJ0aWN1bGFyOgorKyMgICAtLXByZXZpb3VzICAgICAgICAgICAgdG8ga2VlcCBwcmV2aW91cyBtc2dpZHMgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywKKysjICAgLS1xdWlldCAgICAgICAgICAgICAgIHRvIHJlZHVjZSB0aGUgdmVyYm9zaXR5LgorK01TR01FUkdFX09QVElPTlMgPQorLS0tIGZldGNobWFpbC02LjMuMjYub3JpZy9wb3AzLmMKKysrKyBmZXRjaG1haWwtNi4zLjI2L3BvcDMuYworQEAgLTI4MSw2ICsyODEsNyBAQCBzdGF0aWMgaW50IHBvcDNfZ2V0YXV0aChpbnQgc29jaywgc3RydWN0CisgI2VuZGlmIC8qIE9QSUVfRU5BQkxFICovCisgI2lmZGVmIFNTTF9FTkFCTEUKKyAgICAgZmxhZyBjb25uZWN0aW9uX21heV9oYXZlX3Rsc19lcnJvcnMgPSBGQUxTRTsKKysgICAgY2hhciAqY29tbW9ubmFtZTsKKyAjZW5kaWYgLyogU1NMX0VOQUJMRSAqLworIAorICAgICBkb25lX2NhcGEgPSBGQUxTRTsKK0BAIC0zOTMsNyArMzk0LDcgQEAgc3RhdGljIGludCBwb3AzX2dldGF1dGgoaW50IHNvY2ssIHN0cnVjdAorIAkJKGN0bC0+c2VydmVyLmF1dGhlbnRpY2F0ZSA9PSBBX0tFUkJFUk9TX1Y1KSB8fAorIAkJKGN0bC0+c2VydmVyLmF1dGhlbnRpY2F0ZSA9PSBBX09UUCkgfHwKKyAJCShjdGwtPnNlcnZlci5hdXRoZW50aWNhdGUgPT0gQV9DUkFNX01ENSkgfHwKKy0JCW1heWJlX3RscyhjdGwpKQorKwkJbWF5YmVfc3RhcnR0bHMoY3RsKSkKKyAJeworIAkgICAgaWYgKChvayA9IGNhcGFfcHJvYmUoc29jaykpICE9IFBTX1NVQ0NFU1MpCisgCQkvKiB3ZSBhcmUgaW4gU1RBR0VfR0VUQVVUSCA9PiBmYWlsdXJlIGlzIFBTX0FVVEhGQUlMISAqLworQEAgLTQwNiwxMiArNDA3LDEyIEBAIHN0YXRpYyBpbnQgcG9wM19nZXRhdXRoKGludCBzb2NrLCBzdHJ1Y3QKKyAJCSAgICAob2sgPT0gUFNfU09DS0VUICYmICFjdGwtPndlaGF2ZWF1dGhlZCkpCisgCQl7CisgI2lmZGVmIFNTTF9FTkFCTEUKKy0JCSAgICBpZiAobXVzdF90bHMoY3RsKSkgeworKwkJICAgIGlmIChtdXN0X3N0YXJ0dGxzKGN0bCkpIHsKKyAJCQkvKiBmYWlsIHdpdGggbWFuZGF0b3J5IFNUTFMgd2l0aG91dCByZXBvbGwgKi8KKyAJCQlyZXBvcnQoc3RkZXJyLCBHVF8oIlRMUyBpcyBtYW5kYXRvcnkgZm9yIHRoaXMgc2Vzc2lvbiwgYnV0IHNlcnZlciByZWZ1c2VkIENBUEEgY29tbWFuZC5cbiIpKTsKKyAJCQlyZXBvcnQoc3RkZXJyLCBHVF8oIlRoZSBDQVBBIGNvbW1hbmQgaXMgaG93ZXZlciBuZWNlc3NhcnkgZm9yIFRMUy5cbiIpKTsKKyAJCQlyZXR1cm4gb2s7CistCQkgICAgfSBlbHNlIGlmIChtYXliZV90bHMoY3RsKSkgeworKwkJICAgIH0gZWxzZSBpZiAobWF5YmVfc3RhcnR0bHMoY3RsKSkgeworIAkJCS8qIGRlZmVhdCBvcHBvcnR1bmlzdGljIFNUTFMgKi8KKyAJCQl4ZnJlZShjdGwtPnNzbHByb3RvKTsKKyAJCQljdGwtPnNzbHByb3RvID0geHN0cmR1cCgiIik7CitAQCAtNDMxLDI0ICs0MzIsMTkgQEAgc3RhdGljIGludCBwb3AzX2dldGF1dGgoaW50IHNvY2ssIHN0cnVjdAorIAl9CisgCisgI2lmZGVmIFNTTF9FTkFCTEUKKy0JaWYgKG1heWJlX3RscyhjdGwpKSB7CistCSAgICBjaGFyICpjb21tb25uYW1lOworKwljb21tb25uYW1lID0gY3RsLT5zZXJ2ZXIucG9sbG5hbWU7CisrCWlmIChjdGwtPnNlcnZlci52aWEpCisrCSAgICBjb21tb25uYW1lID0gY3RsLT5zZXJ2ZXIudmlhOworKwlpZiAoY3RsLT5zc2xjb21tb25uYW1lKQorKwkgICAgY29tbW9ubmFtZSA9IGN0bC0+c3NsY29tbW9ubmFtZTsKKyAKKy0JICAgIGNvbW1vbm5hbWUgPSBjdGwtPnNlcnZlci5wb2xsbmFtZTsKKy0JICAgIGlmIChjdGwtPnNlcnZlci52aWEpCistCQljb21tb25uYW1lID0gY3RsLT5zZXJ2ZXIudmlhOworLQkgICAgaWYgKGN0bC0+c3NsY29tbW9ubmFtZSkKKy0JCWNvbW1vbm5hbWUgPSBjdGwtPnNzbGNvbW1vbm5hbWU7CistCistCSAgIGlmIChoYXNfc3RscworLQkJICAgfHwgbXVzdF90bHMoY3RsKSkgLyogaWYgVExTIGlzIG1hbmRhdG9yeSwgaWdub3JlIGNhcGFiaWxpdGllcyAqLworKwlpZiAobWF5YmVfc3RhcnR0bHMoY3RsKSkgeworKwkgICBpZiAoaGFzX3N0bHMgfHwgbXVzdF9zdGFydHRscyhjdGwpKSAvKiBpZiBUTFMgaXMgbWFuZGF0b3J5LCBpZ25vcmUgY2FwYWJpbGl0aWVzICovCisgCSAgIHsKKy0JICAgICAgIC8qIFVzZSAidGxzMSIgcmF0aGVyIHRoYW4gY3RsLT5zc2xwcm90byBiZWNhdXNlIHRsczEgaXMgdGhlIG9ubHkKKy0JCSogcHJvdG9jb2wgdGhhdCB3aWxsIHdvcmsgd2l0aCBTVEFSVFRMUy4gIERvbid0IG5lZWQgdG8gd29ycnkKKy0JCSogd2hldGhlciBUTFMgaXMgbWFuZGF0b3J5IG9yIG9wcG9ydHVuaXN0aWMgdW5sZXNzIFNTTE9wZW4oKSBmYWlscworLQkJKiAoc2VlIGJlbG93KS4gKi8KKysJICAgICAgIC8qIERvbid0IG5lZWQgdG8gd29ycnkgd2hldGhlciBUTFMgaXMgbWFuZGF0b3J5IG9yCisrCQkqIG9wcG9ydHVuaXN0aWMgdW5sZXNzIFNTTE9wZW4oKSBmYWlscyAoc2VlIGJlbG93KS4gKi8KKyAJICAgICAgIGlmIChnZW5fdHJhbnNhY3Qoc29jaywgIlNUTFMiKSA9PSBQU19TVUNDRVNTCistCQkgICAgICAgJiYgKHNldF90aW1lb3V0KG15dGltZW91dCksIFNTTE9wZW4oc29jaywgY3RsLT5zc2xjZXJ0LCBjdGwtPnNzbGtleSwgInRsczEiLCBjdGwtPnNzbGNlcnRjaywKKysJCSAgICAgICAmJiAoc2V0X3RpbWVvdXQobXl0aW1lb3V0KSwgU1NMT3Blbihzb2NrLCBjdGwtPnNzbGNlcnQsIGN0bC0+c3Nsa2V5LCBjdGwtPnNzbHByb3RvLCBjdGwtPnNzbGNlcnRjaywKKyAJCQkgICBjdGwtPnNzbGNlcnRmaWxlLCBjdGwtPnNzbGNlcnRwYXRoLCBjdGwtPnNzbGZpbmdlcnByaW50LCBjb21tb25uYW1lLAorIAkJCSAgIGN0bC0+c2VydmVyLnBvbGxuYW1lLCAmY3RsLT5yZW1vdGVuYW1lKSkgIT0gLTEpCisgCSAgICAgICB7CitAQCAtNDc1LDcgKzQ3MSw3IEBAIHN0YXRpYyBpbnQgcG9wM19nZXRhdXRoKGludCBzb2NrLCBzdHJ1Y3QKKyAJCSAgIHsKKyAJCSAgICAgICByZXBvcnQoc3Rkb3V0LCBHVF8oIiVzOiB1cGdyYWRlIHRvIFRMUyBzdWNjZWVkZWQuXG4iKSwgY29tbW9ubmFtZSk7CisgCQkgICB9CistCSAgICAgICB9IGVsc2UgaWYgKG11c3RfdGxzKGN0bCkpIHsKKysJICAgICAgIH0gZWxzZSBpZiAobXVzdF9zdGFydHRscyhjdGwpKSB7CisgCQkgICAvKiBDb25maWcgcmVxdWlyZWQgVExTIGJ1dCB3ZSBjb3VsZG4ndCBndWFyYW50ZWUgaXQsIHNvIHdlIG11c3QKKyAJCSAgICAqIHN0b3AuICovCisgCQkgICBzZXRfdGltZW91dCgwKTsKK0BAIC00OTUsNyArNDkxLDExIEBAIHN0YXRpYyBpbnQgcG9wM19nZXRhdXRoKGludCBzb2NrLCBzdHJ1Y3QKKyAJCSAgIH0KKyAJICAgICAgIH0KKyAJICAgfQorLQl9IC8qIG1heWJlX3RscygpICovCisrCX0gZWxzZSB7IC8qIG1heWJlX3N0YXJ0dGxzKCkgKi8KKysJICAgIGlmIChoYXNfc3RscyAmJiBvdXRsZXZlbCA+PSBPX1ZFUkJPU0UpIHsKKysJCXJlcG9ydChzdGRvdXQsIEdUXygiJXM6IFdBUk5JTkc6IHNlcnZlciBvZmZlcmVkIFNUTFMsIGJ1dCBzc2xwcm90byAnJyBnaXZlbi5cbiIpLCBjb21tb25uYW1lKTsKKysJICAgIH0KKysJfSAvKiBtYXliZV9zdGFydHRscygpICovCisgI2VuZGlmIC8qIFNTTF9FTkFCTEUgKi8KKyAKKyAJLyoKKy0tLSBmZXRjaG1haWwtNi4zLjI2Lm9yaWcvc29ja2V0LmMKKysrKyBmZXRjaG1haWwtNi4zLjI2L3NvY2tldC5jCitAQCAtODc2LDcgKzg3Niw5IEBAIGludCBTU0xPcGVuKGludCBzb2NrLCBjaGFyICpteWNlcnQsIGNoYXIKKyB7CisgICAgICAgICBzdHJ1Y3Qgc3RhdCByYW5kc3RhdDsKKyAgICAgICAgIGludCBpOworKwlpbnQgYXZvaWRfc3NsX3ZlcnNpb25zID0gU1NMX09QX05PX1NTTHYyIHwgU1NMX09QX05PX1NTTHYzOworIAlsb25nIHNzbG9wdHMgPSBTU0xfT1BfQUxMOworKwlpbnQgc3NsZV9jb25uZWN0ID0gMDsKKyAKKyAJU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOworIAlTU0xfbGlicmFyeV9pbml0KCk7CitAQCAtOTA2LDI1ICs5MDgsNTcgQEAgaW50IFNTTE9wZW4oaW50IHNvY2ssIGNoYXIgKm15Y2VydCwgY2hhcgorIAkvKiBNYWtlIHN1cmUgYSBjb25uZWN0aW9uIHJlZmVycmluZyB0byBhbiBvbGRlciBjb250ZXh0IGlzIG5vdCBsZWZ0ICovCisgCV9zc2xfY29udGV4dFtzb2NrXSA9IE5VTEw7CisgCWlmKG15cHJvdG8pIHsKKy0JCWlmKCFzdHJjYXNlY21wKCJzc2wyIixteXByb3RvKSkgeworLSNpZiBIQVZFX0RFQ0xfU1NMVjJfQ0xJRU5UX01FVEhPRCArIDAgPiAwCistCQkJX2N0eFtzb2NrXSA9IFNTTF9DVFhfbmV3KFNTTHYyX2NsaWVudF9tZXRob2QoKSk7CisrCQlpZighc3RyY2FzZWNtcCgic3NsMyIsbXlwcm90bykpIHsKKysjaWYgKEhBVkVfREVDTF9TU0xWM19DTElFTlRfTUVUSE9EID4gMCkgJiYgKDAgPT0gT1BFTlNTTF9OT19TU0wzICsgMCkKKysJCQlfY3R4W3NvY2tdID0gU1NMX0NUWF9uZXcoU1NMdjNfY2xpZW50X21ldGhvZCgpKTsKKysJCQlhdm9pZF9zc2xfdmVyc2lvbnMgJj0gflNTTF9PUF9OT19TU0x2MzsKKyAjZWxzZQorLQkJCXJlcG9ydChzdGRlcnIsIEdUXygiWW91ciBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgU1NMdjIuXG4iKSk7CisrCQkJcmVwb3J0KHN0ZGVyciwgR1RfKCJZb3VyIE9wZW5TU0wgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IFNTTHYzLlxuIikpOworIAkJCXJldHVybiAtMTsKKyAjZW5kaWYKKy0JCX0gZWxzZSBpZighc3RyY2FzZWNtcCgic3NsMyIsbXlwcm90bykpIHsKKy0JCQlfY3R4W3NvY2tdID0gU1NMX0NUWF9uZXcoU1NMdjNfY2xpZW50X21ldGhvZCgpKTsKKysJCX0gZWxzZSBpZighc3RyY2FzZWNtcCgic3NsMysiLG15cHJvdG8pKSB7CisrCQkJYXZvaWRfc3NsX3ZlcnNpb25zICY9IH5TU0xfT1BfTk9fU1NMdjM7CisrCQkJbXlwcm90byA9IE5VTEw7CisgCQl9IGVsc2UgaWYoIXN0cmNhc2VjbXAoInRsczEiLG15cHJvdG8pKSB7CisgCQkJX2N0eFtzb2NrXSA9IFNTTF9DVFhfbmV3KFRMU3YxX2NsaWVudF9tZXRob2QoKSk7CistCQl9IGVsc2UgaWYgKCFzdHJjYXNlY21wKCJzc2wyMyIsbXlwcm90bykpIHsKKysJCX0gZWxzZSBpZighc3RyY2FzZWNtcCgidGxzMSsiLG15cHJvdG8pKSB7CisrCQkJbXlwcm90byA9IE5VTEw7CisrI2lmIGRlZmluZWQoVExTMV8xX1ZFUlNJT04pICYmIFRMU19NQVhfVkVSU0lPTiA+PSBUTFMxXzFfVkVSU0lPTgorKwkJfSBlbHNlIGlmKCFzdHJjYXNlY21wKCJ0bHMxLjEiLG15cHJvdG8pKSB7CisrCQkJX2N0eFtzb2NrXSA9IFNTTF9DVFhfbmV3KFRMU3YxXzFfY2xpZW50X21ldGhvZCgpKTsKKysJCX0gZWxzZSBpZighc3RyY2FzZWNtcCgidGxzMS4xKyIsbXlwcm90bykpIHsKKysJCQlteXByb3RvID0gTlVMTDsKKysJCQlhdm9pZF9zc2xfdmVyc2lvbnMgfD0gU1NMX09QX05PX1RMU3YxOworKyNlbHNlCisrCQl9IGVsc2UgaWYoIXN0cmNhc2VjbXAoInRsczEuMSIsbXlwcm90bykgfHwgIXN0cmNhc2VjbXAoInRsczEuMSsiLCBteXByb3RvKSkgeworKwkJCXJlcG9ydChzdGRlcnIsIEdUXygiWW91ciBPcGVuU1NMIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCBUTFMgdjEuMS5cbiIpKTsKKysJCQlyZXR1cm4gLTE7CisrI2VuZGlmCisrI2lmIGRlZmluZWQoVExTMV8yX1ZFUlNJT04pICYmIFRMU19NQVhfVkVSU0lPTiA+PSBUTFMxXzJfVkVSU0lPTgorKwkJfSBlbHNlIGlmKCFzdHJjYXNlY21wKCJ0bHMxLjIiLG15cHJvdG8pKSB7CisrCQkJX2N0eFtzb2NrXSA9IFNTTF9DVFhfbmV3KFRMU3YxXzJfY2xpZW50X21ldGhvZCgpKTsKKysJCX0gZWxzZSBpZighc3RyY2FzZWNtcCgidGxzMS4yKyIsbXlwcm90bykpIHsKKysJCQlteXByb3RvID0gTlVMTDsKKysJCQlhdm9pZF9zc2xfdmVyc2lvbnMgfD0gU1NMX09QX05PX1RMU3YxOworKwkJCWF2b2lkX3NzbF92ZXJzaW9ucyB8PSBTU0xfT1BfTk9fVExTdjFfMTsKKysjZWxzZQorKwkJfSBlbHNlIGlmKCFzdHJjYXNlY21wKCJ0bHMxLjIiLG15cHJvdG8pIHx8ICFzdHJjYXNlY21wKCJ0bHMxLjIrIiwgbXlwcm90bykpIHsKKysJCQlyZXBvcnQoc3RkZXJyLCBHVF8oIllvdXIgT3BlblNTTCB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgVExTIHYxLjIuXG4iKSk7CisrCQkJcmV0dXJuIC0xOworKyNlbmRpZgorKwkJfSBlbHNlIGlmICghc3RyY2FzZWNtcCgic3NsMjMiLG15cHJvdG8pIHx8IDAgPT0gc3RyY2FzZWNtcCgiYXV0byIsbXlwcm90bykpIHsKKyAJCQlteXByb3RvID0gTlVMTDsKKyAJCX0gZWxzZSB7CistCQkJcmVwb3J0KHN0ZGVycixHVF8oIkludmFsaWQgU1NMIHByb3RvY29sICclcycgc3BlY2lmaWVkLCB1c2luZyBkZWZhdWx0IChTU0x2MjMpLlxuIiksIG15cHJvdG8pOworKwkJCXJlcG9ydChzdGRlcnIsR1RfKCJJbnZhbGlkIFNTTCBwcm90b2NvbCAnJXMnIHNwZWNpZmllZCwgdXNpbmcgZGVmYXVsdCBhdXRvc2VsZWN0IChTU0wyMykuXG4iKSwgbXlwcm90byk7CisgCQkJbXlwcm90byA9IE5VTEw7CisgCQl9CisgCX0KKy0JaWYoIW15cHJvdG8pIHsKKysJLy8gZG8gbm90IGNvbWJpbmUgaW50byBhbiBlbHNlIHsgfSBhcyBteXByb3RvIG1heSBiZSBudWxsZWQKKysJLy8gYWJvdmUhCisrCWlmICghbXlwcm90bykgeworKwkJLy8gU1NMdjIzIGlzIGEgbWlzbm9tZXIgYW5kIHdpbGwgaW4gZmFjdCB1c2UgdGhlIGJlc3QKKysJCS8vIGF2YWlsYWJsZSBwcm90b2NvbCwgc3ViamVjdCB0byBTU0xfT1BfTk8qCisrCQkvLyBjb25zdHJhaW50cy4KKyAJCV9jdHhbc29ja10gPSBTU0xfQ1RYX25ldyhTU0x2MjNfY2xpZW50X21ldGhvZCgpKTsKKyAJfQorIAlpZihfY3R4W3NvY2tdID09IE5VTEwpIHsKK0BAIC05MzgsNyArOTcyLDcgQEAgaW50IFNTTE9wZW4oaW50IHNvY2ssIGNoYXIgKm15Y2VydCwgY2hhcgorIAkJc3Nsb3B0cyAmPSB+IFNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFM7CisgCX0KKyAKKy0JU1NMX0NUWF9zZXRfb3B0aW9ucyhfY3R4W3NvY2tdLCBzc2xvcHRzKTsKKysJU1NMX0NUWF9zZXRfb3B0aW9ucyhfY3R4W3NvY2tdLCBzc2xvcHRzIHwgYXZvaWRfc3NsX3ZlcnNpb25zKTsKKyAKKyAJaWYgKGNlcnRjaykgeworIAkJU1NMX0NUWF9zZXRfdmVyaWZ5KF9jdHhbc29ja10sIFNTTF9WRVJJRllfUEVFUiwgU1NMX2NrX3ZlcmlmeV9jYWxsYmFjayk7CitAQCAtMTAwOCw4ICsxMDQyLDE4IEBAIGludCBTU0xPcGVuKGludCBzb2NrLCBjaGFyICpteWNlcnQsIGNoYXIKKyAJfQorIAorIAlpZiAoU1NMX3NldF9mZChfc3NsX2NvbnRleHRbc29ja10sIHNvY2spID09IDAgCistCSAgICB8fCBTU0xfY29ubmVjdChfc3NsX2NvbnRleHRbc29ja10pIDwgMSkgeworKwkgICAgfHwgKHNzbGVfY29ubmVjdCA9IFNTTF9jb25uZWN0KF9zc2xfY29udGV4dFtzb2NrXSkpIDwgMSkgeworKwkJaW50IGUgPSBlcnJubzsKKysJCXVuc2lnbmVkIGxvbmcgc3NsZV9lcnJfZnJvbV9xdWV1ZSA9IEVSUl9wZWVrX2Vycm9yKCk7CisrCQl1bnNpZ25lZCBsb25nIHNzbGVfZXJyX2Zyb21fZ2V0X2Vycm9yID0gU1NMX2dldF9lcnJvcihfc3NsX2NvbnRleHRbc29ja10sIHNzbGVfY29ubmVjdCk7CisgCQlFUlJfcHJpbnRfZXJyb3JzX2ZwKHN0ZGVycik7CisrCQlpZiAoU1NMX0VSUk9SX1NZU0NBTEwgPT0gc3NsZV9lcnJfZnJvbV9nZXRfZXJyb3IgJiYgMCA9PSBzc2xlX2Vycl9mcm9tX3F1ZXVlKSB7CisrCQkgICAgaWYgKDAgPT0gc3NsZV9jb25uZWN0KSB7CisrCQkJcmVwb3J0KHN0ZGVyciwgR1RfKCJTZXJ2ZXIgc2h1dCBkb3duIGNvbm5lY3Rpb24gcHJlbWF0dXJlbHkgZHVyaW5nIFNTTF9jb25uZWN0KCkuXG4iKSk7CisrCQkgICAgfSBlbHNlIGlmIChzc2xlX2Nvbm5lY3QgPCAwKSB7CisrCQkJcmVwb3J0KHN0ZGVyciwgR1RfKCJTeXN0ZW0gZXJyb3IgZHVyaW5nIFNTTF9jb25uZWN0KCk6ICVzXG4iKSwgc3RyZXJyb3IoZSkpOworKwkJICAgIH0KKysJCX0KKyAJCVNTTF9mcmVlKCBfc3NsX2NvbnRleHRbc29ja10gKTsKKyAJCV9zc2xfY29udGV4dFtzb2NrXSA9IE5VTEw7CisgCQlTU0xfQ1RYX2ZyZWUoX2N0eFtzb2NrXSk7CitAQCAtMTAxNyw2ICsxMDYxLDI0IEBAIGludCBTU0xPcGVuKGludCBzb2NrLCBjaGFyICpteWNlcnQsIGNoYXIKKyAJCXJldHVybigtMSk7CisgCX0KKyAKKysJaWYgKG91dGxldmVsID49IE9fVkVSQk9TRSkgeworKwkgICAgU1NMX0NJUEhFUiBjb25zdCAqc2M7CisrCSAgICBpbnQgYml0c21heCwgYml0c3VzZWQ7CisrCisrCSAgICBjb25zdCBjaGFyICp2ZXI7CisrCisrCSAgICB2ZXIgPSBTU0xfZ2V0X3ZlcnNpb24oX3NzbF9jb250ZXh0W3NvY2tdKTsKKysKKysJICAgIHNjID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihfc3NsX2NvbnRleHRbc29ja10pOworKwkgICAgaWYgKCFzYykgeworKwkJcmVwb3J0IChzdGRlcnIsIEdUXygiQ2Fubm90IG9idGFpbiBjdXJyZW50IFNTTC9UTFMgY2lwaGVyIC0gbm8gc2Vzc2lvbiBlc3RhYmxpc2hlZD9cbiIpKTsKKysJICAgIH0gZWxzZSB7CisrCQliaXRzdXNlZCA9IFNTTF9DSVBIRVJfZ2V0X2JpdHMoc2MsICZiaXRzbWF4KTsKKysJCXJlcG9ydChzdGRvdXQsIEdUXygiU1NML1RMUzogdXNpbmcgcHJvdG9jb2wgJXMsIGNpcGhlciAlcywgJWQvJWQgc2VjcmV0L3Byb2Nlc3NlZCBiaXRzXG4iKSwKKysJCQl2ZXIsIFNTTF9DSVBIRVJfZ2V0X25hbWUoc2MpLCBiaXRzdXNlZCwgYml0c21heCk7CisrCSAgICB9CisrCX0KKysKKyAJLyogUGFyYW5vaWE6IHdhcyB0aGUgY2FsbGJhY2sgbm90IGNhbGxlZCBhcyB3ZSBleHBlY3RlZD8gKi8KKyAJaWYgKCFfZGVwdGgwY2spIHsKKyAJCXJlcG9ydChzdGRlcnIsIEdUXygiQ2VydGlmaWNhdGUvZmluZ2VycHJpbnQgdmVyaWZpY2F0aW9uIHdhcyBzb21laG93IHNraXBwZWQhXG4iKSk7CistLS0gL2Rldi9udWxsCisrKysgZmV0Y2htYWlsLTYuMy4yNi9zdGFydHRscy5jCitAQCAtMCwwICsxLDM3IEBACisrLyoqIFxmaWxlIHRscy5jIC0gY29sbGVjdCBjb21tb24gVExTIGZ1bmN0aW9uYWxpdHkgCisrICogXGF1dGhvciBNYXR0aGlhcyBBbmRyZWUKKysgKiBcZGF0ZSAyMDA2CisrICovCisrCisrI2luY2x1ZGUgImZldGNobWFpbC5oIgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaWZkZWYgSEFWRV9TVFJJTkdTX0gKKysjaW5jbHVkZSA8c3RyaW5ncy5oPgorKyNlbmRpZgorKworKy8qKiByZXR1cm4gdHJ1ZSBpZiB1c2VyIGFsbG93ZWQgb3Bwb3J0dW5pc3RpYyBTVEFSVFRMUy9TVExTICovCisraW50IG1heWJlX3N0YXJ0dGxzKHN0cnVjdCBxdWVyeSAqY3RsKSB7CisrI2lmZGVmIFNTTF9FTkFCTEUKKysgICAgICAgICAvKiBvcHBvcnR1bmlzdGljICBvciBmb3JjZWQgVExTICovCisrICAgIHJldHVybiAoIWN0bC0+c3NscHJvdG8gfHwgc3RybGVuKGN0bC0+c3NscHJvdG8pKQorKwkmJiAhY3RsLT51c2Vfc3NsOworKyNlbHNlCisrICAgICh2b2lkKWN0bDsKKysgICAgcmV0dXJuIDA7CisrI2VuZGlmCisrfQorKworKy8qKiByZXR1cm4gdHJ1ZSBpZiB1c2VyIHJlcXVpcmVzIFNUQVJUVExTL1NUTFMsIG5vdGUgdGhvdWdoIHRoYXQgdGhpcworKyAqIGNvZGUgbXVzdCBhbHdheXMgdXNlIGEgbG9naWNhbCBBTkQgd2l0aCBtYXliZV90bHMoKS4gKi8KKytpbnQgbXVzdF9zdGFydHRscyhzdHJ1Y3QgcXVlcnkgKmN0bCkgeworKyNpZmRlZiBTU0xfRU5BQkxFCisrICAgIHJldHVybiBtYXliZV9zdGFydHRscyhjdGwpCisrCSYmIChjdGwtPnNzbGZpbmdlcnByaW50IHx8IGN0bC0+c3NsY2VydGNrCisrCQl8fCAoY3RsLT5zc2xwcm90byAmJiAhc3RyY2FzZWNtcChjdGwtPnNzbHByb3RvLCAidGxzMSIpKSk7CisrI2Vsc2UKKysgICAgKHZvaWQpY3RsOworKyAgICByZXR1cm4gMDsKKysjZW5kaWYKKyt9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi4zLjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuMy4yNi5iYgppbmRleCAxZDc4Mjg4Li41YWY1ZDBkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi4zLjI2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbF82LjMuMjYuYmIKQEAgLTcsNyArNyw5IEBACiAKIERFUEVORFMgPSAib3BlbnNzbCIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMl9yZW1vdmVfU1NMdjMucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiNjFiNjZmYWFkMDQ0YWZhMjZlMTQyYmIxNzkxYWEyYjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzliNGM1NGNkYmFmMDJjMWE5YTY5MWQ5OTQ4ZmNiMWE3N2ExNTkxYTgxM2U5MDQyODNhOGI2MTRiNzU3ZTg1MCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcC1wZXJsXzEuNTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwLXBlcmxfMS41MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUxNDdiZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwLXBlcmxfMS41MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotIwotU1VNTUFSWSA9ICJHZW9JUCBwZXJsIEFQSSBsaWJyYXJ5IHRvIGFjY2VzcyBsb2NhdGlvbiBkYXRhYmFzZSIKLURFU0NSSVBUSU9OID0gInBlcmwgbGlicmFyeSBmb3IgY291bnRyeS9jaXR5L29yZ2FuaXphdGlvbiB0byBJUCBhZGRyZXNzIG9yIGhvc3RuYW1lIG1hcHBpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1heG1pbmQuY29tL2FwcC9pcC1sb2NhdGlvbiIKLVNFQ1RJT04gPSAibGliZGV2ZWwiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjdhMzZmNTVlOGJhNjJhYWRkNzRlNGYwODg2YTQwNWUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiNDdmN2Q0OWJkMTVjZmMyZTVmOGMwZjVjNDA2OGRjOGJiMGUxMGU5NiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYXhtaW5kL2dlb2lwLWFwaS1wZXJsLmdpdDtwcm90b2NvbD1odHRwczsgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1ERVBFTkRTICs9ICJnZW9pcCIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLUVYVFJBX0NQQU5GTEFHUyA9ICJMSUJTPSctTCR7U1RBR0lOR19MSUJESVJ9JyBJTkM9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0nIgotCi0KLSMgcGVybCBzY3JpcHRzIGFuZCBzb21lIHNwZWNpYWwgc21hbGwgZGF0YSBmaWxlcwotIwotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAtbSAwNzU1ICR7RH0ke1BURVNUX1BBVEh9L3QvZGF0YQotCi0gICAgaW5zdGFsbCAke1N9L3QvKi50KiAke0R9JHtQVEVTVF9QQVRIfS90Ci0gICAgaW5zdGFsbCAke1N9L3QvZGF0YS8qICR7RH0ke1BURVNUX1BBVEh9L3QvZGF0YQotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9HZW8vSVAvLmRlYnVnIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwLXBlcmxfMS41MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXAtcGVybF8xLjUxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNWMzYTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwLXBlcmxfMS41MS5iYgpAQCAtMCwwICsxLDM1IEBACisjCisjIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKyMKK1NVTU1BUlkgPSAiR2VvSVAgcGVybCBBUEkgbGlicmFyeSB0byBhY2Nlc3MgbG9jYXRpb24gZGF0YWJhc2UiCitERVNDUklQVElPTiA9ICJwZXJsIGxpYnJhcnkgZm9yIGNvdW50cnkvY2l0eS9vcmdhbml6YXRpb24gdG8gSVAgYWRkcmVzcyBvciBob3N0bmFtZSBtYXBwaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tYXhtaW5kLmNvbS9hcHAvaXAtbG9jYXRpb24iCitTRUNUSU9OID0gImxpYmRldmVsIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU0ZjNlYTZlOWIyOGFmODhkYzAzMjExOTBhMWY4MjUwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gIjRjZGZkYzM4ZWNhMjM3YzE5YzIyYThiOTA0OTA0NDZjZTZkOTcwZmEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWF4bWluZC9nZW9pcC1hcGktcGVybC5naXQ7cHJvdG9jb2w9aHR0cHM7IFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworREVQRU5EUyArPSAiZ2VvaXAiCisKK2luaGVyaXQgY3BhbiBwdGVzdAorCitFWFRSQV9DUEFORkxBR1MgPSAiTElCUz0nLUwke1NUQUdJTkdfTElCRElSfScgSU5DPSctSSR7U1RBR0lOR19JTkNESVJ9JyIKKworCisjIHBlcmwgc2NyaXB0cyBhbmQgc29tZSBzcGVjaWFsIHNtYWxsIGRhdGEgZmlsZXMKKyMKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGluc3RhbGwgLWQgLW0gMDc1NSAke0R9JHtQVEVTVF9QQVRIfS90L2RhdGEKKworICAgIGluc3RhbGwgJHtTfS90LyoudCogJHtEfSR7UFRFU1RfUEFUSH0vdAorICAgIGluc3RhbGwgJHtTfS90L2RhdGEvKiAke0R9JHtQVEVTVF9QQVRIfS90L2RhdGEKK30KKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vR2VvL0lQLy5kZWJ1ZyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcF8xLjYuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwXzEuNi4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzUyN2QwYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2dlb2lwL2dlb2lwXzEuNi4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBjb3VudHJ5L2NpdHkvb3JnYW5pemF0aW9uIHRvIElQIGFkZHJlc3Mgb3IgaG9zdG5hbWUgbWFwcGluZyIKLURFU0NSSVBUSU9OID0gIkdlb0lQIGlzIGEgQyBsaWJyYXJ5IHRoYXQgZW5hYmxlcyB0aGUgdXNlciB0byBmaW5kIHRoZSBjb3VudHJ5IHRoYXQgYW55IElQIFwKLWFkZHJlc3Mgb3IgaG9zdG5hbWUgb3JpZ2luYXRlcyBmcm9tLiBJdCB1c2VzIGEgZmlsZSBiYXNlZCBkYXRhYmFzZSB0aGF0IGlzIFwKLWFjY3VyYXRlIGFzIG9mIE1hcmNoIDIwMDMuIFRoaXMgZGF0YWJhc2Ugc2ltcGx5IGNvbnRhaW5zIElQIGJsb2NrcyBhcyBrZXlzLCBhbmQgXAotY291bnRyaWVzIGFzIHZhbHVlcy4gVGhpcyBkYXRhYmFzZSBzaG91bGQgYmUgbW9yZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgdGhhbiBcCi11c2luZyByZXZlcnNlIEROUyBsb29rdXBzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2Rldi5tYXhtaW5kLmNvbS9nZW9pcC8iCi1TRUNUSU9OID0gImxpYmRldmVsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWF4bWluZC9nZW9pcC1hcGktYy5naXQgXAotICAgICAgICAgICBodHRwOi8vZ2VvbGl0ZS5tYXhtaW5kLmNvbS9kb3dubG9hZC9nZW9pcC9kYXRhYmFzZS9HZW9MaXRlQ291bnRyeS9HZW9JUC5kYXQuZ3o7YXBwbHk9bm87bmFtZT1HZW9JUC1kYXQgXAotICAgICAgICAgICBodHRwOi8vZ2VvbGl0ZS5tYXhtaW5kLmNvbS9kb3dubG9hZC9nZW9pcC9kYXRhYmFzZS9HZW9JUHY2LmRhdC5nejthcHBseT1ubztuYW1lPUdlb0lQdjYtZGF0IFwKLSAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvTGl0ZUNpdHkuZGF0Lmd6O2FwcGx5PW5vO25hbWU9R2VvTGl0ZUNpdHktZGF0IFwKLSAgICAgICAgICAgaHR0cDovL2dlb2xpdGUubWF4bWluZC5jb20vZG93bmxvYWQvZ2VvaXAvZGF0YWJhc2UvR2VvTGl0ZUNpdHl2Ni1iZXRhL0dlb0xpdGVDaXR5djYuZGF0Lmd6O2FwcGx5PW5vO25hbWU9R2VvTGl0ZUNpdHl2Ni1kYXQgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ1JFViA9ICIzMTY5YThhODg4MDhjOGRmODYyZTBiMDM1NWY5OWM3MzhjY2U5ZjdlIgotCi1TUkNfVVJJW0dlb0lQLWRhdC5tZDVzdW1dID0gIjM3Yzg0ZWFkMzMyZGRhMDM2MmE1YWM3YjA0OWI3MmQ0IgotU1JDX1VSSVtHZW9JUC1kYXQuc2hhMjU2c3VtXSA9ICI3OWZmMTA5OWU5NmMyZGMxYzI1MzljOWExOGFhYTEzYTlhZmQwODVjYWU0NzdkZjYwZDk1ZjE2NDRkNDJiYzA3IgotCi1TUkNfVVJJW0dlb0lQdjYtZGF0Lm1kNXN1bV0gPSAiZTc1Yjg0YTQwNDRlODFkNmQ0NDg0ZTMzODE2YmM3NjIiCi1TUkNfVVJJW0dlb0lQdjYtZGF0LnNoYTI1NnN1bV0gPSAiYTAwOWIwZjIxOTY4ZDI4NjhlNmRkMTlkMTRmM2MzYjhjZDYwYWU4NGE0YmZjMjk3MGRmMzRkNzcxYTA0ODExZSIKLQotU1JDX1VSSVtHZW9MaXRlQ2l0eS1kYXQubWQ1c3VtXSA9ICI0YjY1ODhkMGJmZTFhZjIyZTI2N2FjOTBhYTk3Zjc2OSIKLVNSQ19VUklbR2VvTGl0ZUNpdHktZGF0LnNoYTI1NnN1bV0gPSAiOGE2NDY3MDMzYTUyOGY2OGIxYTk3ZGUyNGQ5ZDBjZTg2YzhlOGU4MzY4MzgyMGUxNmU0MzNkZGJkM2Y3MTJmNyIKLQotU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5tZDVzdW1dID0gImFkMGNiNDI1MThhZjdmNzUyNDk5NDI1ZGNhMDk1MmJiIgotU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5zaGEyNTZzdW1dID0gImVkYTY3ZjQyMDRiYTlmYTUyMDRhNTNjZGI2MjkxNjdjY2E5Mzk0YzcxMmY1Mzc4YmM3MjNhOGMyOWMwYjQ0MGYiCi0KLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTAzODgyNzY3NDlhNTQyYjBkNjExNjAxZmE3YzFkY2M4ICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBtYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAKLSAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVAuZGF0ICR7RH0vJHtkYXRhZGlyfS9HZW9JUC8KLSAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVB2Ni5kYXQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQLwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9MaXRlQ2l0eS5kYXQgJHtEfS8ke2RhdGFkaXJ9L0dlb0lQLwotICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9MaXRlQ2l0eXY2LmRhdCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAvCi0gICAgbG4gLXMgR2VvTGl0ZUNpdHkuZGF0ICR7RH0ke2RhdGFkaXJ9L0dlb0lQL0dlb0lQQ2l0eS5kYXQKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWRhdGFiYXNlIgotRklMRVNfJHtQTn0tZGF0YWJhc2UgPSAiIgotRklMRVNfJHtQTn0tZGF0YWJhc2UgKz0gIiR7ZGF0YWRpcn0vR2VvSVAvKiIKLQotIyBXZSBjYW5ub3QgZG8gbXVjaCBsb29raW5nIHVwIHdpdGhvdXQgZGF0YWJhc2VzLgotIwotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWRhdGFiYXNlIgotCi1pbmhlcml0IHB0ZXN0Ci0KLWRvX2NvbmZpZ3VyZV9wdGVzdCgpIHsKLSAgICBzZWQgLWkgLWUgInMvbm9pbnN0X1BST0dSQU1TID0gL3Rlc3RfUFJPR1JBTVMgPSAvZyIgXAotICAgICAgICAtZSAnczpTUkNESVI9XFwiJCh0b3Bfc3JjZGlyKVxcIjpTUkNESVI9XFwiJCh0ZXN0ZGlyKVxcIjonIFwKLSAgICAgICAgJHtTfS90ZXN0L01ha2VmaWxlLmFtCi0KLSAgICBpZiAhIGdyZXAgIl50ZXN0ZGlyID0gIiAke1N9L3Rlc3QvTWFrZWZpbGUuYW0gOyB0aGVuCi0gICAgICAgIHNlZCAtZSAnL0VYVFJBX1BST0dSQU1TID0gL2l0ZXN0ZGlyID0gJHtQVEVTVF9QQVRIfS90ZXN0cycgXAotICAgICAgICAgICAgLWkgJHtTfS90ZXN0L01ha2VmaWxlLmFtCi0gICAgZmkKLQotICAgIHNlZCAtaSAtZSAiczovdXNyL2xvY2FsL3NoYXJlOi91c3Ivc2hhcmU6ZyIgXAotICAgICAgICAke1N9L3Rlc3QvYmVuY2htYXJrLmMKLQotICAgIHNlZCAtaSAtZSAnczoiLi4vZGF0YS86Ii91c3Ivc2hhcmUvR2VvSVAvOmcnIFwKLSAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtY2l0eS5jIFwKLSAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtaXNwLmMgXAotICAgICAgICAke1N9L3Rlc3QvdGVzdC1nZW9pcC1hc251bS5jIFwKLSAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtbmV0c3BlZWQuYyBcCi0gICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLW9yZy5jIFwKLSAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtcmVnaW9uLmMKLX0KLQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgLUMgdGVzdCBERVNURElSPSR7RH0gIGluc3RhbGwtdGVzdFBST0dSQU1TCi0gICAgaW5zdGFsbCAke1N9L3Rlc3QvKi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXBfMS42LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9nZW9pcC9nZW9pcF8xLjYuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3MWMyZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZ2VvaXAvZ2VvaXBfMS42LjEyLmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBjb3VudHJ5L2NpdHkvb3JnYW5pemF0aW9uIHRvIElQIGFkZHJlc3Mgb3IgaG9zdG5hbWUgbWFwcGluZyIKK0RFU0NSSVBUSU9OID0gIkdlb0lQIGlzIGEgQyBsaWJyYXJ5IHRoYXQgZW5hYmxlcyB0aGUgdXNlciB0byBmaW5kIHRoZSBjb3VudHJ5IHRoYXQgYW55IElQIFwKK2FkZHJlc3Mgb3IgaG9zdG5hbWUgb3JpZ2luYXRlcyBmcm9tLiBJdCB1c2VzIGEgZmlsZSBiYXNlZCBkYXRhYmFzZSB0aGF0IGlzIFwKK2FjY3VyYXRlIGFzIG9mIE1hcmNoIDIwMDMuIFRoaXMgZGF0YWJhc2Ugc2ltcGx5IGNvbnRhaW5zIElQIGJsb2NrcyBhcyBrZXlzLCBhbmQgXAorY291bnRyaWVzIGFzIHZhbHVlcy4gVGhpcyBkYXRhYmFzZSBzaG91bGQgYmUgbW9yZSBjb21wbGV0ZSBhbmQgYWNjdXJhdGUgdGhhbiBcCit1c2luZyByZXZlcnNlIEROUyBsb29rdXBzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2Rldi5tYXhtaW5kLmNvbS9nZW9pcC8iCitTRUNUSU9OID0gImxpYmRldmVsIgorCitHRU9JUF9EQVRBQkFTRV9WRVJTSU9OID0gIjIwMTgxMjA1IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWF4bWluZC9nZW9pcC1hcGktYy5naXQgXAorICAgICAgICAgICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnL0dlb0lQLmRhdC4ke0dFT0lQX0RBVEFCQVNFX1ZFUlNJT059Lmd6O2FwcGx5PW5vO25hbWU9R2VvSVAtZGF0OyBcCisgICAgICAgICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvR2VvSVB2Ni5kYXQuJHtHRU9JUF9EQVRBQkFTRV9WRVJTSU9OfS5nejthcHBseT1ubztuYW1lPUdlb0lQdjYtZGF0OyBcCisgICAgICAgICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvR2VvTGl0ZUNpdHkuZGF0LiR7R0VPSVBfREFUQUJBU0VfVkVSU0lPTn0uZ3o7YXBwbHk9bm87bmFtZT1HZW9MaXRlQ2l0eS1kYXQ7IFwKKyAgICAgICAgICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy9HZW9MaXRlQ2l0eXY2LmRhdC4ke0dFT0lQX0RBVEFCQVNFX1ZFUlNJT059Lmd6O2FwcGx5PW5vO25hbWU9R2VvTGl0ZUNpdHl2Ni1kYXQ7IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNSRVYgPSAiNGI1MjZlNzMzMWNhMWQ2OTJiNzRhMDUwOWRkY2M3MjU2MjJlZDMxYSIKKworU1JDX1VSSVtHZW9JUC1kYXQubWQ1c3VtXSA9ICJkNTM4ZTU3YWQ5MjY4ZmRjNzk1NWM2Y2Y5YTM3YzRhOSIKK1NSQ19VUklbR2VvSVAtZGF0LnNoYTI1NnN1bV0gPSAiYjljMDVlYjhiZmNmOTBhNmRkZmRjNjgxNWNhZjQwYThkYjI3MTBmMGNlM2RkNDhmYmQ2YzI0ZDQ4NWFlMDQ0OSIKKworU1JDX1VSSVtHZW9JUHY2LWRhdC5tZDVzdW1dID0gIjUyZDZhYTBhYWMxYWRiZmE1ZWI3ZmE0NzQyMTk3YzExIgorU1JDX1VSSVtHZW9JUHY2LnNoYTI1NnN1bV0gPSAiNDE2YWM5MmZjYzM1YTIxZDVlZmJiMzJlNWM4OGU2MDljMzdhZWMxYWExYWY2MjQ3ZDA4OGI4ZGExYWY2ZTliZiIKKworU1JDX1VSSVtHZW9MaXRlQ2l0eS1kYXQubWQ1c3VtXSA9ICJkNzAwYzEzNzIzMmY4ZTA3N2FjOGRiODU3N2Y2OTlkOSIKK1NSQ19VUklbR2VvTGl0ZUNpdHktZGF0LnNoYTI1NnN1bV0gPSAiOTBkYjJlNTIxOTVlM2QxYmNkYjJjMjc4OTIwOTAwNmQwOWRlNWM3NDI4MTJkYmQ5YTFiMzZjMTI2NzVlYzRjZCIKKworU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5tZDVzdW1dID0gIjY3MzRjY2RjNjQ0ZmMwYmE3NmViMjc2ZGNlNzNkMDA1IgorU1JDX1VSSVtHZW9MaXRlQ2l0eXY2LWRhdC5zaGEyNTZzdW1dID0gImM5NWE5ZDI2NDNiN2Y1M2Q3YWJlZWQyMTE0Mzg4ODcwZTEzZmJiYWQ0NjUzZjQ1MGE0OWVmYTdlNGI4NmFjYTQiCisKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTAzODgyNzY3NDlhNTQyYjBkNjExNjAxZmE3YzFkY2M4ICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgICIKKworZG9faW5zdGFsbCgpIHsKKyAgICBtYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vR2VvSVAKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vR2VvSVAuZGF0LiR7R0VPSVBfREFUQUJBU0VfVkVSU0lPTn0gJHtEfS8ke2RhdGFkaXJ9L0dlb0lQL0dlb0lQLmRhdAorICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9JUHY2LmRhdC4ke0dFT0lQX0RBVEFCQVNFX1ZFUlNJT059ICR7RH0vJHtkYXRhZGlyfS9HZW9JUC9HZW9JUHY2LmRhdAorICAgIGluc3RhbGwgJHtXT1JLRElSfS9HZW9MaXRlQ2l0eS5kYXQuJHtHRU9JUF9EQVRBQkFTRV9WRVJTSU9OfSAke0R9LyR7ZGF0YWRpcn0vR2VvSVAvR2VvTGl0ZUNpdHkuZGF0CisgICAgaW5zdGFsbCAke1dPUktESVJ9L0dlb0xpdGVDaXR5djYuZGF0LiR7R0VPSVBfREFUQUJBU0VfVkVSU0lPTn0gJHtEfS8ke2RhdGFkaXJ9L0dlb0lQL0dlb0xpdGVDaXR5djYuZGF0CisgICAgbG4gLXMgR2VvTGl0ZUNpdHkuZGF0ICR7RH0ke2RhdGFkaXJ9L0dlb0lQL0dlb0lQQ2l0eS5kYXQKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWRhdGFiYXNlIgorRklMRVNfJHtQTn0tZGF0YWJhc2UgPSAiIgorRklMRVNfJHtQTn0tZGF0YWJhc2UgKz0gIiR7ZGF0YWRpcn0vR2VvSVAvKiIKKworIyBXZSBjYW5ub3QgZG8gbXVjaCBsb29raW5nIHVwIHdpdGhvdXQgZGF0YWJhc2VzLgorIworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWRhdGFiYXNlIgorCitpbmhlcml0IHB0ZXN0CisKK2RvX2NvbmZpZ3VyZV9wdGVzdCgpIHsKKyAgICBzZWQgLWkgLWUgInMvbm9pbnN0X1BST0dSQU1TID0gL3Rlc3RfUFJPR1JBTVMgPSAvZyIgXAorICAgICAgICAtZSAnczpTUkNESVI9XFwiJCh0b3Bfc3JjZGlyKVxcIjpTUkNESVI9XFwiJCh0ZXN0ZGlyKVxcIjonIFwKKyAgICAgICAgJHtTfS90ZXN0L01ha2VmaWxlLmFtCisKKyAgICBpZiAhIGdyZXAgIl50ZXN0ZGlyID0gIiAke1N9L3Rlc3QvTWFrZWZpbGUuYW0gOyB0aGVuCisgICAgICAgIHNlZCAtZSAnL0VYVFJBX1BST0dSQU1TID0gL2l0ZXN0ZGlyID0gJHtQVEVTVF9QQVRIfS90ZXN0cycgXAorICAgICAgICAgICAgLWkgJHtTfS90ZXN0L01ha2VmaWxlLmFtCisgICAgZmkKKworICAgIHNlZCAtaSAtZSAiczovdXNyL2xvY2FsL3NoYXJlOi91c3Ivc2hhcmU6ZyIgXAorICAgICAgICAke1N9L3Rlc3QvYmVuY2htYXJrLmMKKworICAgIHNlZCAtaSAtZSAnczoiLi4vZGF0YS86Ii91c3Ivc2hhcmUvR2VvSVAvOmcnIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtY2l0eS5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtaXNwLmMgXAorICAgICAgICAke1N9L3Rlc3QvdGVzdC1nZW9pcC1hc251bS5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtbmV0c3BlZWQuYyBcCisgICAgICAgICR7U30vdGVzdC90ZXN0LWdlb2lwLW9yZy5jIFwKKyAgICAgICAgJHtTfS90ZXN0L3Rlc3QtZ2VvaXAtcmVnaW9uLmMKK30KKworCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdCBERVNURElSPSR7RH0gIGluc3RhbGwtdGVzdFBST0dSQU1TCisgICAgaW5zdGFsbCAke1N9L3Rlc3QvKi50eHQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaHRwZGF0ZS9odHBkYXRlLzAwMDEtTWFrZS1lbnZpcm9ubWVudC12YXJpYWJsZXMtYXNzaWdubWVudHMtdG8tYmUtd2Vhay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaHRwZGF0ZS9odHBkYXRlLzAwMDEtTWFrZS1lbnZpcm9ubWVudC12YXJpYWJsZXMtYXNzaWdubWVudHMtdG8tYmUtd2Vhay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWU0NGMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9odHBkYXRlL2h0cGRhdGUvMDAwMS1NYWtlLWVudmlyb25tZW50LXZhcmlhYmxlcy1hc3NpZ25tZW50cy10by1iZS13ZWFrLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMDQ2MDNmNTJkNzkzZjk2NDY1M2U2YTk4NTk0NDQwMGZlNGZhODdlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEzIEp1biAyMDE4IDE3OjUwOjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzc2lnbm1lbnRzIHRvIGJlIHdlYWsKKworU28gdGhhdCBPRSBjYW4gb3ZlcnJpZGUgdGhlbSBmb3IgY3Jvc3MgYnVpbGRzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDFjODBjMDkuLjg4NDEyNmMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yLDExICsyLDExIEBAIHByZWZpeCA9ICQoREVTVERJUikvdXNyCisgYmluZGlyID0gJHtwcmVmaXh9L2JpbgorIG1hbmRpciA9ICR7cHJlZml4fS9zaGFyZS9tYW4KKyAKKy1DQyA9IGdjYworK0NDID89IGdjYworIENGTEFHUyArPSAtV2FsbCAtc3RkPWM5OSAtcGVkYW50aWMgLU8yCisgCistSU5TVEFMTCA9IC91c3IvYmluL2luc3RhbGwgLWMKKy1TVFJJUCA9IC91c3IvYmluL3N0cmlwIC1zCisrSU5TVEFMTCA/PSAvdXNyL2Jpbi9pbnN0YWxsIC1jCisrU1RSSVAgPz0gL3Vzci9iaW4vc3RyaXAgLXMKKyAKKyBhbGw6IGh0cGRhdGUKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaHRwZGF0ZS9odHBkYXRlLzAwMDEtUmVwbGFjZS1udHBfYWRqdGltZS13aXRoLWFkanRpbWV4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9odHBkYXRlL2h0cGRhdGUvMDAwMS1SZXBsYWNlLW50cF9hZGp0aW1lLXdpdGgtYWRqdGltZXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NhOGM2YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaHRwZGF0ZS9odHBkYXRlLzAwMDEtUmVwbGFjZS1udHBfYWRqdGltZS13aXRoLWFkanRpbWV4LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNzU2NDZhMmQyZGYxNGZkYmM0YTAxZTIyMmE3NzlhZmFjOTQ4NjFkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE0IEp1biAyMDE4IDIwOjExOjA4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgbnRwX2FkanRpbWUgd2l0aCBhZGp0aW1leC4KKworbnRwX2FkanRpbWUgaW4gZ2xpYmMgaXMgYW4gYWxpYXMgdG8gYWRqdGltZXggYW5kCittdXNsIGRvZXMgbm90IHByb3ZpZGUgbnRwX2FkanRpbWUgYXQgYWxsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgaHRwZGF0ZS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h0cGRhdGUuYyBiL2h0cGRhdGUuYworaW5kZXggNDE3MWVmZS4uZmYwYmY4ZCAxMDA2NDQKKy0tLSBhL2h0cGRhdGUuYworKysrIGIvaHRwZGF0ZS5jCitAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBpbnQgaHRwZGF0ZV9hZGp0aW1leCggZG91YmxlIGRyaWZ0ICkgeworIAorIAkvKiBSZWFkIGN1cnJlbnQga2VybmVsIGZyZXF1ZW5jeSAqLworIAl0bXgubW9kZXMgPSAwOworLQludHBfYWRqdGltZSgmdG14KTsKKysJYWRqdGltZXgoJnRteCk7CisgCisgCS8qIENhbGN1bGF0ZSBuZXcgZnJlcXVlbmN5ICovCisgCWZyZXEgPSAobG9uZykoNjU1MzZlNiAqIGRyaWZ0KTsKK0BAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIGludCBodHBkYXRlX2FkanRpbWV4KCBkb3VibGUgZHJpZnQgKSB7CisgCisgCS8qIEJlY29tZSByb290ICovCisgCXN3dWlkKDApOworLQlyZXR1cm4oIG50cF9hZGp0aW1lKCZ0bXgpICk7CisrCXJldHVybiggYWRqdGltZXgoJnRteCkgKTsKKyAKKyB9CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2h0cGRhdGUvaHRwZGF0ZV8xLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaHRwZGF0ZS9odHBkYXRlXzEuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNjc4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2h0cGRhdGUvaHRwZGF0ZV8xLjIuMC5iYgpAQCAtMCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkhUVFAgYmFzZWQgdGltZSBzeW5jaHJvbml6YXRpb24gdG9vbCIKKworREVTQ1JJUFRJT04gPSAiVGhlICBIVFRQIFRpbWUgUHJvdG9jb2wgKEhUUCkgaXMgdXNlZCB0byBzeW5jaHJvbml6ZSBhIGNvbXB1dGVyJ3MgdGltZSB3aXRoXAorIHdlYiBzZXJ2ZXJzIGFzIHJlZmVyZW5jZSB0aW1lIHNvdXJjZS4gVGhpcyBwcm9ncmFtIGNhbiBiZSB1c2VkIGluc3RlYWRcCisgbnRwZGF0ZSBvciBzaW1pbGFyLCBpbiBuZXR3b3JrcyB0aGF0IGhhcyBhIGZpcmV3YWxsIGJsb2NraW5nIHRoZSBOVFAgcG9ydC5cCisgSHRwZGF0ZSB3aWxsIHN5bmNocm9uaXplIHRoZSBjb21wdXRlciB0aW1lIHRvIEdyZWVud2ljaCBNZWFuIFRpbWUgKEdNVCksXAorIHVzaW5nIHRoZSB0aW1lc3RhbXBzIGZyb20gSFRUUCBoZWFkZXJzIGZvdW5kIGluIHdlYiBzZXJ2ZXJzIHJlc3BvbnNlICh0aGVcCisgSEVBRCBtZXRob2Qgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgaW5mb3JtYXRpb24pLlwKKyBIdHBkYXRlIHdvcmtzIHRocm91Z2ggcHJveHkgc2VydmVycy4gQWNjdXJhY3kgb2YgaHRwZGF0ZSB3aWxsIGJlIHVzdWFsbHlcCisgd2l0aGluIDAuNSBzZWNvbmRzIChiZXR0ZXIgd2l0aCBtdWx0aXBsZSBzZXJ2ZXJzKS5cCisiCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudmVydmVzdC5vcmcvaHRwLyIKKworTElDRU5TRSA9ICJHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2h0cGRhdGUuYztiZWdpbmxpbmU9MjY7ZW5kbGluZT0zMDttZDU9ZDcwMThhNGQyYzVhNmVhYjM5MjcwOWEwNWU1ZTE2OGEiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy52ZXJ2ZXN0Lm9yZy9odHAvYXJjaGl2ZS9jL2h0cGRhdGUtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1lbnZpcm9ubWVudC12YXJpYWJsZXMtYXNzaWdubWVudHMtdG8tYmUtd2Vhay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtbnRwX2FkanRpbWUtd2l0aC1hZGp0aW1leC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZDVjYTY5YmUwNmVkZjVkNTM1YjUyYjVmNzkwZGE0ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmIyY2YzZWM0NWIwZWVkZWNkZGQzYWQyYTNkNzU0YWM1Nzk0MmFlN2RjYmFjNDEwZDI1NDkzNWYwYmRiYzAzIgorCitkb19jb25maWd1cmUgKCkgeworCToKK30KKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgJ0lOU1RBTEw9aW5zdGFsbCcgJ1NUUklQPWVjaG8nICdERVNURElSPSR7RH0nCit9CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lmZW5zbGF2ZS9pZmVuc2xhdmVfMi45LmJiCmluZGV4IGVhMjhiMzQuLjEyNWI1OWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaWZlbnNsYXZlL2lmZW5zbGF2ZV8yLjkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pZmVuc2xhdmUvaWZlbnNsYXZlXzIuOS5iYgpAQCAtNSw5ICs1LDExIEBACiBMSUNFTlNFID0gIkdQTHYzIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YWNjODk4MTI5MzhjZjlhZDZiMWRlYmMzN2NlYTAyNTMiCiAKK2luaGVyaXQgbWFucGFnZXMKK01BTl9QS0cgPSAiJHtQTn0iCiAKIFNSQ1JFViA9ICI0MmJmYmI5YmViOTI0NjcyY2E4NmI4NmU5Njc5YWMzZDZiODdkOTkyIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2lmZW5zbGF2ZS5naXQiCitTUkNfVVJJID0gImdpdDovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2lmZW5zbGF2ZS5naXQ7cHJvdG9jb2w9aHR0cHMiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTIzLDUgKzI1LDMgQEAKIAogRklMRVNfJHtQTn0tZG9jX3JlbW92ZSA9ICIke21hbmRpcn0iCiBGSUxFU18ke1BOfSArPSAiJHttYW5kaXJ9L21hbjgvaWZlbnNsYXZlLjgiCi0KLVJERVBFTkRTXyR7UE59ID0gIm1hbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHMvMDAwMS1EaXNhYmxlLWdjYzgtc3BlY2lmaWMtd2FybmluZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzLzAwMDEtRGlzYWJsZS1nY2M4LXNwZWNpZmljLXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYTkxMDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzLzAwMDEtRGlzYWJsZS1nY2M4LXNwZWNpZmljLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gMjgyZDQ5MmU0Y2FiN2I0ZDljNzMyMWY0YzBjNTViNjE1OTQ4ZTI4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDExIE1heSAyMDE4IDE0OjA5OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgZ2NjOCBzcGVjaWZpYyB3YXJuaW5ncworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYmlwc2VjL2lwc2VjX2R1bXBfcG9saWN5LmMgfCAgNSArKysrKworIHNyYy9saWJpcHNlYy9wZmtleV9kdW1wLmMgICAgICAgIHwgIDUgKysrKysKKyBzcmMvcmFjb29uL2lzYWttcC5jICAgICAgICAgICAgICB8IDExICsrKysrKysrKystCisgMyBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliaXBzZWMvaXBzZWNfZHVtcF9wb2xpY3kuYyBiL3NyYy9saWJpcHNlYy9pcHNlY19kdW1wX3BvbGljeS5jCitpbmRleCA0ZDBlYjc3Li5jM2ZjODQyIDEwMDY0NAorLS0tIGEvc3JjL2xpYmlwc2VjL2lwc2VjX2R1bXBfcG9saWN5LmMKKysrKyBiL3NyYy9saWJpcHNlYy9pcHNlY19kdW1wX3BvbGljeS5jCitAQCAtMjc1LDYgKzI3NSwxMCBAQCBpcHNlY19kdW1wX3BvbGljeTEocG9saWN5LCBkZWxpbWl0ZXIsIHdpdGhwb3J0cykKKyAJcmV0dXJuIGJ1ZjsKKyB9CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA4KQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtdHJ1bmNhdGlvbiIKKysjZW5kaWYKKyBzdGF0aWMgY2hhciAqCisgaXBzZWNfZHVtcF9pcHNlY3JlcXVlc3QoYnVmLCBsZW4sIHhpc3IsIGJvdW5kLCB3aXRocG9ydHMpCisgCWNoYXIgKmJ1ZjsKK0BAIC00MTksMyArNDIzLDQgQEAgc2V0X2FkZHJlc3MoYnVmLCBsZW4sIHNhLCB3aXRocG9ydHMpCisgCisgCXJldHVybiBidWY7CisgfQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmlwc2VjL3Bma2V5X2R1bXAuYyBiL3NyYy9saWJpcHNlYy9wZmtleV9kdW1wLmMKK2luZGV4IDQ2MjdlYmMuLjQ1MWU1MzUgMTAwNjQ0CistLS0gYS9zcmMvbGliaXBzZWMvcGZrZXlfZHVtcC5jCisrKysgYi9zcmMvbGliaXBzZWMvcGZrZXlfZHVtcC5jCitAQCAtNjkxLDYgKzY5MSwxMCBAQCBzdHJfaXBwb3J0KHNhKQorIC8qCisgICogc2V0ICIvcHJlZml4W3BvcnQgbnVtYmVyXSIgdG8gYnVmZmVyLgorICAqLworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gOCkKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LXRydW5jYXRpb24iCisrI2VuZGlmCisgc3RhdGljIGNoYXIgKgorIHN0cl9wcmVmcG9ydChmYW1pbHksIHByZWYsIHBvcnQsIHVscCkKKyAJdV9pbnQgZmFtaWx5LCBwcmVmLCBwb3J0LCB1bHA7CitAQCAtNzM1LDYgKzczOSw3IEBAIHN0cl9wcmVmcG9ydChmYW1pbHksIHByZWYsIHBvcnQsIHVscCkKKyAKKyAJcmV0dXJuIGJ1ZjsKKyB9CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyAKKyBzdGF0aWMgdm9pZAorIHN0cl91cHBlcnNwZWModWxwLCBwMSwgcDIpCitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9pc2FrbXAuYyBiL3NyYy9yYWNvb24vaXNha21wLmMKK2luZGV4IDdmZjUzYTMuLjRhZGRmMjQgMTAwNjQ0CistLS0gYS9zcmMvcmFjb29uL2lzYWttcC5jCisrKysgYi9zcmMvcmFjb29uL2lzYWttcC5jCitAQCAtMzEyNCw3ICszMTI0LDEyIEBAIHNjcmlwdF9ob29rKGlwaDEsIHNjcmlwdCkKKyAjZW5kaWYKKyAKKyAJLyogbG9jYWwgYWRkcmVzcyAqLworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gOCkKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3RyaW5nb3AtdHJ1bmNhdGlvbiIKKysjZW5kaWYKKyAJR0VUTkFNRUlORk8oaXBoMS0+bG9jYWwsIGFkZHJzdHIsIHBvcnRzdHIpOworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgCisgCWlmIChzY3JpcHRfZW52X2FwcGVuZCgmZW52cCwgJmVudmMsICJMT0NBTF9BRERSIiwgYWRkcnN0cikgIT0gMCkgeworIAkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLCAiQ2Fubm90IHNldCBMT0NBTF9BRERSXG4iKTsKK0BAIC0zMTM4LDggKzMxNDMsMTIgQEAgc2NyaXB0X2hvb2soaXBoMSwgc2NyaXB0KQorIAorIAkvKiBQZWVyIGFkZHJlc3MgKi8KKyAJaWYgKGlwaDEtPnJlbW90ZSAhPSBOVUxMKSB7CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA+PSA4KQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC10cnVuY2F0aW9uIgorKyNlbmRpZgorIAkJR0VUTkFNRUlORk8oaXBoMS0+cmVtb3RlLCBhZGRyc3RyLCBwb3J0c3RyKTsKKy0KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorIAkJaWYgKHNjcmlwdF9lbnZfYXBwZW5kKCZlbnZwLCAmZW52YywgCisgCQkgICAgIlJFTU9URV9BRERSIiwgYWRkcnN0cikgIT0gMCkgeworIAkJCXBsb2coTExWX0VSUk9SLCBMT0NBVElPTiwgTlVMTCwgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzLzAwMDEtaXBzZWMtdG9vbHMtYWRkLW9wZW5zc2wtMS4xLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzLzAwMDEtaXBzZWMtdG9vbHMtYWRkLW9wZW5zc2wtMS4xLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI4Mjc0NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHMvMDAwMS1pcHNlYy10b29scy1hZGQtb3BlbnNzbC0xLjEtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDEwODYgQEAKK0Zyb20gYjU3MjM1MGE5MjIxODdkNDNkZDQ2MjljM2I0M2UxOTk3OWZhZTNlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVuZWFzIFUgZGUgUXVlaXJveiA8Y290ZTIwMDQtZ2l0aHViQHlhaG9vLmNvbT4KK0RhdGU6IFR1ZSwgMjUgU2VwIDIwMTggMTU6MzA6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gaXBzZWMtdG9vbHM6IGFkZCBvcGVuc3NsIDEuMSBzdXBwb3J0CisKK1RvOiBlcXVlaXJvekB0cm9pYW5ldC5jb20uYnIKKworVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBjYWxscyB0byBvcGVuc3NsIDEuMSBBUEksIGFuZCBhZGRzIGEKK2NvbXBhdGliaWxpdHkgbGF5ZXIgc28gaXQgY29tcGlsZXMgd2l0aCAoYXQgbGVhc3QpIG9wZW5zc2wgMS4wLjIsIEkKK2hhdmVuJ3QgdGVzdGVkIGl0IHdpdGggbG93ZXIgdmVyc2lvbnMsIGJ1dCBhbGwgdGhhdCdzIG5lZWRlZCBpcyB0byBlZGl0Cit0aGUgb3BlbnNzbF9jb21wYXQuKiBmaWxlcyBhbmQgYWRkIHRoZSBtaXNzaW5nIGZ1bmN0aW9ucyB0aGVyZS0tdGhleSdyZQordXN1YWxseSB0cml2aWFsLgorCitTaWduZWQtb2ZmLWJ5OiBFbmVhcyBVIGRlIFF1ZWlyb3ogPGNvdGUyMDA0LWdpdGh1YkB5YWhvby5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL2lwc2VjLXRvb2xzL21haWxtYW4vbWVzc2FnZS8zNjMyNzk2My9dCitodHRwczovL2dpdGh1Yi5jb20vb3BlbndydC9wYWNrYWdlcy9ibG9iL21hc3Rlci9uZXQvaXBzZWMtdG9vbHMvcGF0Y2hlcy8wMTUtb3BlbnNzbC0xLjEucGF0Y2gKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JhY29vbi9NYWtlZmlsZS5hbSAgICAgIHwgIDEwICstLQorIHNyYy9yYWNvb24vYWxnb3JpdGhtLmMgICAgICB8ICAgNiArLQorIHNyYy9yYWNvb24vY3J5cHRvX29wZW5zc2wuYyB8IDE5NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL3JhY29vbi9jcnlwdG9fb3BlbnNzbC5oIHwgICAyICstCisgc3JjL3JhY29vbi9lYXl0ZXN0LmMgICAgICAgIHwgICA3ICstCisgc3JjL3JhY29vbi9pcHNlY19kb2kuYyAgICAgIHwgICAyICstCisgc3JjL3JhY29vbi9vcGVuc3NsX2NvbXBhdC5jIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL3JhY29vbi9vcGVuc3NsX2NvbXBhdC5oIHwgIDQ1ICsrKysrKysrKysKKyBzcmMvcmFjb29uL3BsYWlucnNhLWdlbi5jICAgfCAgNDEgKysrKystLS0tCisgc3JjL3JhY29vbi9wcnNhX3Bhci55ICAgICAgIHwgIDI4ICsrKystLQorIHNyYy9yYWNvb24vcnNhbGlzdC5jICAgICAgICB8ICAgNSArLQorIDExIGZpbGVzIGNoYW5nZWQsIDQzMCBpbnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9yYWNvb24vb3BlbnNzbF9jb21wYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcmFjb29uL29wZW5zc2xfY29tcGF0LmgKKworZGlmZiAtLWdpdCBhL3NyYy9yYWNvb24vTWFrZWZpbGUuYW0gYi9zcmMvcmFjb29uL01ha2VmaWxlLmFtCitpbmRleCAwNjYyOTU3Li4yNzJiMDA5IDEwMDY0NAorLS0tIGEvc3JjL3JhY29vbi9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3JhY29vbi9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBAIHNiaW5fUFJPR1JBTVMgPSByYWNvb24gcmFjb29uY3RsIHBsYWlucnNhLWdlbgorIG5vaW5zdF9QUk9HUkFNUyA9IGVheXRlc3QKKyBpbmNsdWRlX3JhY29vbl9IRUFERVJTID0gcmFjb29uY3RsLmggdmFyLmggdm1idWYuaCBtaXNjLmggZ2NtYWxsb2MuaCBhZG1pbi5oIFwKKyAJc2NoZWR1bGUuaCBzb2NrbWlzYy5oIGlzYWttcF92YXIuaCBpc2FrbXAuaCBpc2FrbXBfeGF1dGguaCBcCistCWlzYWttcF9jZmcuaCBpc2FrbXBfdW5pdHkuaCBpcHNlY19kb2kuaCBldnQuaAorKwlpc2FrbXBfY2ZnLmggaXNha21wX3VuaXR5LmggaXBzZWNfZG9pLmggZXZ0Lmggb3BlbnNzbF9jb21wYXQuaAorIGxpYl9MVExJQlJBUklFUyA9IGxpYnJhY29vbi5sYQorIAorIGFkbWluc29ja2Rpcj0ke2xvY2Fsc3RhdGVkaXJ9L3JhY29vbgorQEAgLTMyLDcgKzMyLDcgQEAgcmFjb29uX1NPVVJDRVMgPSBcCisgCWdzc2FwaS5jIGRuc3NlYy5jIGdldGNlcnRzYnluYW1lLmMgcHJpdnNlcC5jIFwKKyAJcGZrZXkuYyBhZG1pbi5jIGV2dC5jIGlwc2VjX2RvaS5jIG9ha2xleS5jIGdyYWJteWFkZHIuYyB2ZW5kb3JpZC5jIFwKKyAJcG9saWN5LmMgbG9jYWxjb25mLmMgcmVtb3RlY29uZi5jIGNyeXB0b19vcGVuc3NsLmMgYWxnb3JpdGhtLmMgXAorLQlwcm9wb3NhbC5jIHNhaW5mby5jIHN0cm5hbWVzLmMgXAorKwlvcGVuc3NsX2NvbXBhdC5jIHByb3Bvc2FsLmMgc2FpbmZvLmMgc3RybmFtZXMuYyBcCisgCXBsb2cuYyBsb2dnZXIuYyBzY2hlZHVsZS5jIHN0cjJ2YWwuYyBcCisgCXNhZmVmaWxlLmMgYmFja3Vwc2EuYyBnZW5saXN0LmMgcnNhbGlzdC5jIFwKKyAJY2Z0b2tlbi5sIGNmcGFyc2UueSBwcnNhX3Rvay5sIHByc2FfcGFyLnkgCitAQCAtNTEsMTIgKzUxLDEyIEBAIGxpYnJhY29vbl9sYV9TT1VSQ0VTID0ga21wc3RhdC5jIHZtYnVmLmMgc29ja21pc2MuYyBtaXNjLmMKKyBsaWJyYWNvb25fbGFfQ0ZMQUdTID0gLUROT1VTRV9QUklWU0VQICQoQU1fQ0ZMQUdTKQorIAorIHBsYWlucnNhX2dlbl9TT1VSQ0VTID0gcGxhaW5yc2EtZ2VuLmMgcGxvZy5jIFwKKy0JY3J5cHRvX29wZW5zc2wuYyBsb2dnZXIuYyAKKysJY3J5cHRvX29wZW5zc2wuYyBsb2dnZXIuYyBvcGVuc3NsX2NvbXBhdC5jCisgRVhUUkFfcGxhaW5yc2FfZ2VuX1NPVVJDRVMgPSAkKE1JU1NJTkdfQUxHT1MpCisgcGxhaW5yc2FfZ2VuX0xEQUREID0gJChDUllQVE9CSlMpIHZtYnVmLm8gbWlzYy5vCisgcGxhaW5yc2FfZ2VuX0RFUEVOREVOQ0lFUyA9ICQoQ1JZUFRPQkpTKSB2bWJ1Zi5vIG1pc2MubworIAorLWVheXRlc3RfU09VUkNFUyA9IGVheXRlc3QuYyBwbG9nLmMgbG9nZ2VyLmMKKytlYXl0ZXN0X1NPVVJDRVMgPSBlYXl0ZXN0LmMgcGxvZy5jIGxvZ2dlci5jIG9wZW5zc2xfY29tcGF0LmMKKyBFWFRSQV9lYXl0ZXN0X1NPVVJDRVMgPSBtaXNzaW5nL2NyeXB0by9zaGEyL3NoYTIuYworIGVheXRlc3RfTERBREQgPQljcnlwdG9fb3BlbnNzbF90ZXN0Lm8gdm1idWYubyBzdHIydmFsLm8gbWlzY19ub3Bsb2cubyBcCisgCSQoQ1JZUFRPQkpTKQorQEAgLTc1LDcgKzc1LDcgQEAgbm9pbnN0X0hFQURFUlMgPSBcCisgCWRlYnVncm0uaCAgICAgICAgIGlzYWttcC5oICAgICAgbWlzYy5oICAgICAgICAgIHNhaW5mby5oIFwKKyAJZGhncm91cC5oICAgICAgICAgaXNha21wX2FnZy5oICBuZXRkYl9kbnNzZWMuaCAgc2NoZWR1bGUuaCBcCisgCWlzYWttcF9jZmcuaCAgICAgIGlzYWttcF94YXV0aC5oIGlzYWttcF91bml0eS5oIGlzYWttcF9mcmFnLmggXAorLQl0aHJvdHRsZS5oCSAgcHJpdnNlcC5oIFwKKysJdGhyb3R0bGUuaAkgIHByaXZzZXAuaCAgICAgb3BlbnNzbF9jb21wYXQuaCBcCisgCWNmcGFyc2VfcHJvdG8uaAkgIGNmdG9rZW5fcHJvdG8uaCBnZW5saXN0LmggICAgIHJzYWxpc3QuaCBcCisgCW1pc3NpbmcvY3J5cHRvL3NoYTIvc2hhMi5oIG1pc3NpbmcvY3J5cHRvL3Jpam5kYWVsL3Jpam5kYWVsX2xvY2FsLmggXAorIAltaXNzaW5nL2NyeXB0by9yaWpuZGFlbC9yaWpuZGFlbC1hcGktZnN0LmggXAorZGlmZiAtLWdpdCBhL3NyYy9yYWNvb24vYWxnb3JpdGhtLmMgYi9zcmMvcmFjb29uL2FsZ29yaXRobS5jCitpbmRleCAzZmQ1MGY2Li42NmM4NzRiIDEwMDY0NAorLS0tIGEvc3JjL3JhY29vbi9hbGdvcml0aG0uYworKysrIGIvc3JjL3JhY29vbi9hbGdvcml0aG0uYworQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgc3RydWN0IGVuY19hbGdvcml0aG0gb2FrbGV5X2VuY2RlZltdID0geworIHsgImFlcyIsCWFsZ3R5cGVfYWVzLAlPQUtMRVlfQVRUUl9FTkNfQUxHX0FFUywJMTYsCisgCQllYXlfYWVzX2VuY3J5cHQsCWVheV9hZXNfZGVjcnlwdCwKKyAJCWVheV9hZXNfd2Vha2tleSwJZWF5X2Flc19rZXlsZW4sIH0sCistI2lmZGVmIEhBVkVfT1BFTlNTTF9DQU1FTExJQV9ICisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0NBTUVMTElBX0gpICYmICEgZGVmaW5lZChPUEVOU1NMX05PX0NBTUVMTElBKQorIHsgImNhbWVsbGlhIiwJYWxndHlwZV9jYW1lbGxpYSwJT0FLTEVZX0FUVFJfRU5DX0FMR19DQU1FTExJQSwJMTYsCisgCQllYXlfY2FtZWxsaWFfZW5jcnlwdCwJZWF5X2NhbWVsbGlhX2RlY3J5cHQsCisgCQllYXlfY2FtZWxsaWFfd2Vha2tleSwJZWF5X2NhbWVsbGlhX2tleWxlbiwgfSwKK0BAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHN0cnVjdCBlbmNfYWxnb3JpdGhtIGlwc2VjX2VuY2RlZltdID0geworIHsgInR3b2Zpc2giLAlhbGd0eXBlX3R3b2Zpc2gsCUlQU0VDRE9JX0VTUF9UV09GSVNILAkJMTYsCisgCQlOVUxMLAkJCU5VTEwsCisgCQlOVUxMLAkJCWVheV90d29maXNoX2tleWxlbiwgfSwKKy0jaWZkZWYgSEFWRV9PUEVOU1NMX0lERUFfSAorKyNpZiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9JREVBX0gpICYmICEgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpCisgeyAiM2lkZWEiLAlhbGd0eXBlXzNpZGVhLAkJSVBTRUNET0lfRVNQXzNJREVBLAkJOCwKKyAJCU5VTEwsCQkJTlVMTCwKKyAJCU5VTEwsCQkJTlVMTCwgfSwKK0BAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHN0cnVjdCBlbmNfYWxnb3JpdGhtIGlwc2VjX2VuY2RlZltdID0geworIHsgInJjNCIsCWFsZ3R5cGVfcmM0LAkJSVBTRUNET0lfRVNQX1JDNCwJCTgsCisgCQlOVUxMLAkJCU5VTEwsCisgCQlOVUxMLAkJCU5VTEwsIH0sCistI2lmZGVmIEhBVkVfT1BFTlNTTF9DQU1FTExJQV9ICisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0NBTUVMTElBX0gpICYmICEgZGVmaW5lZChPUEVOU1NMX05PX0NBTUVMTElBKQorIHsgImNhbWVsbGlhIiwJYWxndHlwZV9jYW1lbGxpYSwJSVBTRUNET0lfRVNQX0NBTUVMTElBLAkJMTYsCisgCQlOVUxMLAkJCU5VTEwsCisgCQlOVUxMLAkJCWVheV9jYW1lbGxpYV9rZXlsZW4sIH0sCitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9jcnlwdG9fb3BlbnNzbC5jIGIvc3JjL3JhY29vbi9jcnlwdG9fb3BlbnNzbC5jCitpbmRleCA1NWIwNzZhLi44ZmIzNThmIDEwMDY0NAorLS0tIGEvc3JjL3JhY29vbi9jcnlwdG9fb3BlbnNzbC5jCisrKysgYi9zcmMvcmFjb29uL2NyeXB0b19vcGVuc3NsLmMKK0BAIC05MCw2ICs5MCw3IEBACisgI2VuZGlmCisgI2VuZGlmCisgI2luY2x1ZGUgInBsb2cuaCIKKysjaW5jbHVkZSAib3BlbnNzbF9jb21wYXQuaCIKKyAKKyAjZGVmaW5lIFVTRV9ORVdfREVTX0FQSQorIAorQEAgLTMxNiw5ICszMTcsMTIgQEAgZWF5X2NtcF9hc24xZG4objEsIG4yKQorIAkJCWkgPSBpZHgrMTsKKyAJCQlnb3RvIGVuZDsKKyAJCX0KKy0JCWlmICgoZWEtPnZhbHVlLT5sZW5ndGggPT0gMSAmJiBlYS0+dmFsdWUtPmRhdGFbMF0gPT0gJyonKSB8fAorLQkJICAgIChlYi0+dmFsdWUtPmxlbmd0aCA9PSAxICYmIGViLT52YWx1ZS0+ZGF0YVswXSA9PSAnKicpKSB7CistCSAgICAJCWlmIChPQkpfY21wKGVhLT5vYmplY3QsZWItPm9iamVjdCkpIHsKKysJCUFTTjFfU1RSSU5HICpzYSA9IFg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YShlYSk7CisrCQlBU04xX1NUUklORyAqc2IgPSBYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGEoZWIpOworKwkJaWYgKChBU04xX1NUUklOR19sZW5ndGgoc2EpID09IDEgJiYgQVNOMV9TVFJJTkdfZ2V0MF9kYXRhKHNhKVswXSA9PSAnKicpIHx8CisrCQkgICAgKEFTTjFfU1RSSU5HX2xlbmd0aChzYikgPT0gMSAmJiBBU04xX1NUUklOR19nZXQwX2RhdGEoc2IpWzBdID09ICcqJykpIHsKKysJICAgIAkJaWYgKE9CSl9jbXAoWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3QoZWEpLAorKwkJCQkgICAgWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3QoZWIpKSkgeworIAkJCQlpID0gaWR4KzE7CisgCQkJCWdvdG8gZW5kOworIAkgICAgCQl9CitAQCAtNDMwLDcgKzQzNCw3IEBAIGNiX2NoZWNrX2NlcnRfbG9jYWwob2ssIGN0eCkKKyAKKyAJaWYgKCFvaykgeworIAkJWDUwOV9OQU1FX29uZWxpbmUoCistCQkJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZShjdHgtPmN1cnJlbnRfY2VydCksCisrCQkJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZShYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KGN0eCkpLAorIAkJCQlidWYsCisgCQkJCTI1Nik7CisgCQkvKgorQEAgLTQzOCw3ICs0NDIsOCBAQCBjYl9jaGVja19jZXJ0X2xvY2FsKG9rLCBjdHgpCisgCQkgKiBvayBpZiB0aGV5IGFyZSBzZWxmIHNpZ25lZC4gQnV0IHdlIHNob3VsZCBzdGlsbCB3YXJuCisgCQkgKiB0aGUgdXNlci4KKyAgCQkgKi8KKy0JCXN3aXRjaCAoY3R4LT5lcnJvcikgeworKwkJaW50IGN0eF9lcnJvciA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpOworKwkJc3dpdGNoIChjdHhfZXJyb3IpIHsKKyAJCWNhc2UgWDUwOV9WX0VSUl9DRVJUX0hBU19FWFBJUkVEOgorIAkJY2FzZSBYNTA5X1ZfRVJSX0RFUFRIX1pFUk9fU0VMRl9TSUdORURfQ0VSVDoKKyAJCWNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX0NBOgorQEAgLTQ1Myw5ICs0NTgsOSBAQCBjYl9jaGVja19jZXJ0X2xvY2FsKG9rLCBjdHgpCisgCQl9CisgCQlwbG9nKGxvZ190YWcsIExPQ0FUSU9OLCBOVUxMLAorIAkJCSIlcyglZCkgYXQgZGVwdGg6JWQgU3ViamVjdE5hbWU6JXNcbiIsCistCQkJWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoY3R4LT5lcnJvciksCistCQkJY3R4LT5lcnJvciwKKy0JCQljdHgtPmVycm9yX2RlcHRoLAorKwkJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKGN0eF9lcnJvciksCisrCQkJY3R4X2Vycm9yLAorKwkJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpLAorIAkJCWJ1Zik7CisgCX0KKyAJRVJSX2NsZWFyX2Vycm9yKCk7CitAQCAtNDc3LDEwICs0ODIsMTEgQEAgY2JfY2hlY2tfY2VydF9yZW1vdGUob2ssIGN0eCkKKyAKKyAJaWYgKCFvaykgeworIAkJWDUwOV9OQU1FX29uZWxpbmUoCistCQkJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZShjdHgtPmN1cnJlbnRfY2VydCksCisrCQkJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZShYNTA5X1NUT1JFX0NUWF9nZXRfY3VycmVudF9jZXJ0KGN0eCkpLAorIAkJCQlidWYsCisgCQkJCTI1Nik7CistCQlzd2l0Y2ggKGN0eC0+ZXJyb3IpIHsKKysJCWludCBjdHhfZXJyb3I9WDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGN0eCk7CisrCQlzd2l0Y2ggKGN0eF9lcnJvcikgeworIAkJY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19HRVRfQ1JMOgorIAkJCW9rID0gMTsKKyAJCQlsb2dfdGFnID0gTExWX1dBUk5JTkc7CitAQCAtNDkwLDkgKzQ5Niw5IEBAIGNiX2NoZWNrX2NlcnRfcmVtb3RlKG9rLCBjdHgpCisgCQl9CisgCQlwbG9nKGxvZ190YWcsIExPQ0FUSU9OLCBOVUxMLAorIAkJCSIlcyglZCkgYXQgZGVwdGg6JWQgU3ViamVjdE5hbWU6JXNcbiIsCistCQkJWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoY3R4LT5lcnJvciksCistCQkJY3R4LT5lcnJvciwKKy0JCQljdHgtPmVycm9yX2RlcHRoLAorKwkJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKGN0eF9lcnJvciksCisrCQkJY3R4X2Vycm9yLAorKwkJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpLAorIAkJCWJ1Zik7CisgCX0KKyAJRVJSX2NsZWFyX2Vycm9yKCk7CitAQCAtNTE2LDE0ICs1MjIsMTUgQEAgZWF5X2dldF94NTA5YXNuMXN1YmplY3RuYW1lKGNlcnQpCisgCWlmICh4NTA5ID09IE5VTEwpCisgCQlnb3RvIGVycm9yOworIAorKwlYNTA5X05BTUUgKnN1YmplY3RfbmFtZSA9IFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh4NTA5KTsKKyAJLyogZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgKi8KKy0JbGVuID0gaTJkX1g1MDlfTkFNRSh4NTA5LT5jZXJ0X2luZm8tPnN1YmplY3QsIE5VTEwpOworKwlsZW4gPSBpMmRfWDUwOV9OQU1FKHN1YmplY3RfbmFtZSwgTlVMTCk7CisgCW5hbWUgPSB2bWFsbG9jKGxlbik7CisgCWlmICghbmFtZSkKKyAJCWdvdG8gZXJyb3I7CisgCS8qIGdldCB0aGUgbmFtZSAqLworIAlicCA9ICh1bnNpZ25lZCBjaGFyICopIG5hbWUtPnY7CistCWxlbiA9IGkyZF9YNTA5X05BTUUoeDUwOS0+Y2VydF9pbmZvLT5zdWJqZWN0LCAmYnApOworKwlsZW4gPSBpMmRfWDUwOV9OQU1FKHN1YmplY3RfbmFtZSwgJmJwKTsKKyAKKyAJWDUwOV9mcmVlKHg1MDkpOworIAorQEAgLTY2MSwxNSArNjY4LDE2IEBAIGVheV9nZXRfeDUwOWFzbjFpc3N1ZXJuYW1lKGNlcnQpCisgCWlmICh4NTA5ID09IE5VTEwpCisgCQlnb3RvIGVycm9yOworIAorKwlYNTA5X05BTUUgKmlzc3Vlcl9uYW1lID0gWDUwOV9nZXRfaXNzdWVyX25hbWUoeDUwOSk7CisgCS8qIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lICovCistCWxlbiA9IGkyZF9YNTA5X05BTUUoeDUwOS0+Y2VydF9pbmZvLT5pc3N1ZXIsIE5VTEwpOworKwlsZW4gPSBpMmRfWDUwOV9OQU1FKGlzc3Vlcl9uYW1lLCBOVUxMKTsKKyAJbmFtZSA9IHZtYWxsb2MobGVuKTsKKyAJaWYgKG5hbWUgPT0gTlVMTCkKKyAJCWdvdG8gZXJyb3I7CisgCisgCS8qIGdldCB0aGUgbmFtZSAqLworIAlicCA9ICh1bnNpZ25lZCBjaGFyICopIG5hbWUtPnY7CistCWxlbiA9IGkyZF9YNTA5X05BTUUoeDUwOS0+Y2VydF9pbmZvLT5pc3N1ZXIsICZicCk7CisrCWxlbiA9IGkyZF9YNTA5X05BTUUoaXNzdWVyX25hbWUsICZicCk7CisgCisgCVg1MDlfZnJlZSh4NTA5KTsKKyAKK0BAIC04NTAsNyArODU4LDcgQEAgZWF5X2NoZWNrX3g1MDlzaWduKHNvdXJjZSwgc2lnLCBjZXJ0KQorIAkJcmV0dXJuIC0xOworIAl9CisgCistCXJlcyA9IGVheV9yc2FfdmVyaWZ5KHNvdXJjZSwgc2lnLCBldnAtPnBrZXkucnNhKTsKKysJcmVzID0gZWF5X3JzYV92ZXJpZnkoc291cmNlLCBzaWcsIEVWUF9QS0VZX2dldDBfUlNBKGV2cCkpOworIAorIAlFVlBfUEtFWV9mcmVlKGV2cCk7CisgCVg1MDlfZnJlZSh4NTA5KTsKK0BAIC05OTIsNyArMTAwMCw3IEBAIGVheV9nZXRfeDUwOXNpZ24oc3JjLCBwcml2a2V5KQorIAlpZiAoZXZwID09IE5VTEwpCisgCQlyZXR1cm4gTlVMTDsKKyAKKy0Jc2lnID0gZWF5X3JzYV9zaWduKHNyYywgZXZwLT5wa2V5LnJzYSk7CisrCXNpZyA9IGVheV9yc2Ffc2lnbihzcmMsIEVWUF9QS0VZX2dldDBfUlNBKGV2cCkpOworIAorIAlFVlBfUEtFWV9mcmVlKGV2cCk7CisgCitAQCAtMTA3OSw3ICsxMDg3LDExIEBAIGVheV9zdHJlcnJvcigpCisgCWludCBsaW5lLCBmbGFnczsKKyAJdW5zaWduZWQgbG9uZyBlczsKKyAKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTAorKwllcyA9IDA7IC8qIGV2ZW4gd2hlbiBhbGxvd2VkIGJ5IE9QRU5TU0xfQVBJX0NPTVBBVCwgaXQgaXMgZGVmaW5lZCBhcyAwICovCisrI2Vsc2UKKyAJZXMgPSBDUllQVE9fdGhyZWFkX2lkKCk7CisrI2VuZGlmCisgCisgCXdoaWxlICgobCA9IEVSUl9nZXRfZXJyb3JfbGluZV9kYXRhKCZmaWxlLCAmbGluZSwgJmRhdGEsICZmbGFncykpICE9IDApeworIAkJbiA9IHNucHJpbnRmKGVidWYgKyBsZW4sIHNpemVvZihlYnVmKSAtIGxlbiwKK0BAIC0xMTAwLDcgKzExMTIsNyBAQCB2Y2hhcl90ICoKKyBldnBfY3J5cHQodmNoYXJfdCAqZGF0YSwgdmNoYXJfdCAqa2V5LCB2Y2hhcl90ICppdiwgY29uc3QgRVZQX0NJUEhFUiAqZSwgaW50IGVuYykKKyB7CisgCXZjaGFyX3QgKnJlczsKKy0JRVZQX0NJUEhFUl9DVFggY3R4OworKwlFVlBfQ0lQSEVSX0NUWCAqY3R4OworIAorIAlpZiAoIWUpCisgCQlyZXR1cm4gTlVMTDsKK0BAIC0xMTExLDcgKzExMjMsNyBAQCBldnBfY3J5cHQodmNoYXJfdCAqZGF0YSwgdmNoYXJfdCAqa2V5LCB2Y2hhcl90ICppdiwgY29uc3QgRVZQX0NJUEhFUiAqZSwgaW50IGVuYworIAlpZiAoKHJlcyA9IHZtYWxsb2MoZGF0YS0+bCkpID09IE5VTEwpCisgCQlyZXR1cm4gTlVMTDsKKyAKKy0JRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKysJY3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7CisgCisgCXN3aXRjaChFVlBfQ0lQSEVSX25pZChlKSl7CisgCWNhc2UgTklEX2JmX2NiYzoKK0BAIC0xMTI1LDU0ICsxMTM3LDQxIEBAIGV2cF9jcnlwdCh2Y2hhcl90ICpkYXRhLCB2Y2hhcl90ICprZXksIHZjaGFyX3QgKml2LCBjb25zdCBFVlBfQ0lQSEVSICplLCBpbnQgZW5jCisgCQkvKiBYWFg6IGNhbiB3ZSBkbyB0aGF0IGFsc28gZm9yIGFsZ29zIHdpdGggYSBmaXhlZCBrZXkgc2l6ZSA/CisgCQkgKi8KKyAJCS8qIGluaXQgY29udGV4dCB3aXRob3V0IGtleS9pdgorLSAgICAgICAgICovCistICAgICAgICBpZiAoIUVWUF9DaXBoZXJJbml0KCZjdHgsIGUsIE5VTEwsIE5VTEwsIGVuYykpCistICAgICAgICB7CistICAgICAgICAgICAgT3BlblNTTF9CVUcoKTsKKy0gICAgICAgICAgICB2ZnJlZShyZXMpOworLSAgICAgICAgICAgIHJldHVybiBOVUxMOworLSAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgKi8KKysJCWlmICghRVZQX0NpcGhlckluaXQoY3R4LCBlLCBOVUxMLCBOVUxMLCBlbmMpKQorKwkJCWdvdG8gb3V0OworIAkJCistICAgICAgICAvKiB1cGRhdGUga2V5IHNpemUKKy0gICAgICAgICAqLworLSAgICAgICAgaWYgKCFFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aCgmY3R4LCBrZXktPmwpKQorLSAgICAgICAgeworLSAgICAgICAgICAgIE9wZW5TU0xfQlVHKCk7CistICAgICAgICAgICAgdmZyZWUocmVzKTsKKy0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIC8qIGZpbmFsaXplIGNvbnRleHQgaW5pdCB3aXRoIGRlc2lyZWQga2V5IHNpemUKKy0gICAgICAgICAqLworLSAgICAgICAgaWYgKCFFVlBfQ2lwaGVySW5pdCgmY3R4LCBOVUxMLCAodV9jaGFyICopIGtleS0+diwKKysJCS8qIHVwZGF0ZSBrZXkgc2l6ZQorKwkJICovCisrCQlpZiAoIUVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVuZ3RoKGN0eCwga2V5LT5sKSkKKysJCQlnb3RvIG91dDsKKysKKysJCS8qIGZpbmFsaXplIGNvbnRleHQgaW5pdCB3aXRoIGRlc2lyZWQga2V5IHNpemUKKysJCSAqLworKwkJaWYgKCFFVlBfQ2lwaGVySW5pdChjdHgsIE5VTEwsICh1X2NoYXIgKikga2V5LT52LAorIAkJCQkJCQkodV9jaGFyICopIGl2LT52LCBlbmMpKQorLSAgICAgICAgeworLSAgICAgICAgICAgIE9wZW5TU0xfQlVHKCk7CistICAgICAgICAgICAgdmZyZWUocmVzKTsKKy0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKy0JCX0KKysJCQlnb3RvIG91dDsKKyAJCWJyZWFrOworIAlkZWZhdWx0OgorLQkJaWYgKCFFVlBfQ2lwaGVySW5pdCgmY3R4LCBlLCAodV9jaGFyICopIGtleS0+diwgCistCQkJCQkJCSh1X2NoYXIgKikgaXYtPnYsIGVuYykpIHsKKy0JCQlPcGVuU1NMX0JVRygpOworLQkJCXZmcmVlKHJlcyk7CistCQkJcmV0dXJuIE5VTEw7CistCQl9CisrCQlpZiAoIUVWUF9DaXBoZXJJbml0KGN0eCwgZSwgKHVfY2hhciAqKSBrZXktPnYsCisrCQkJCQkJCSh1X2NoYXIgKikgaXYtPnYsIGVuYykpCisrICAgICAgICAgICAgCQlnb3RvIG91dDsKKyAJfQorIAorIAkvKiBkaXNhYmxlIG9wZW5zc2wgcGFkZGluZyAqLworLQlFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZygmY3R4LCAwKTsgCisrCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKGN0eCwgMCk7CisgCQorLQlpZiAoIUVWUF9DaXBoZXIoJmN0eCwgKHVfY2hhciAqKSByZXMtPnYsICh1X2NoYXIgKikgZGF0YS0+diwgZGF0YS0+bCkpIHsKKy0JCU9wZW5TU0xfQlVHKCk7CistCQl2ZnJlZShyZXMpOworLQkJcmV0dXJuIE5VTEw7CistCX0KKysJaWYgKCFFVlBfQ2lwaGVyKGN0eCwgKHVfY2hhciAqKSByZXMtPnYsICh1X2NoYXIgKikgZGF0YS0+diwgZGF0YS0+bCkpCisrCQlnb3RvIG91dDsKKyAKKy0JRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKKysJRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworIAorIAlyZXR1cm4gcmVzOworK291dDoKKysJRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworKwlPcGVuU1NMX0JVRygpOworKwl2ZnJlZShyZXMpOworKwlyZXR1cm4gTlVMTDsKKyB9CisgCisgaW50CitAQCAtMTIzMCw3ICsxMjI5LDcgQEAgZWF5X2Rlc19rZXlsZW4obGVuKQorIAlyZXR1cm4gZXZwX2tleWxlbihsZW4sIEVWUF9kZXNfY2JjKCkpOworIH0KKyAKKy0jaWZkZWYgSEFWRV9PUEVOU1NMX0lERUFfSAorKyNpZiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9JREVBX0gpICYmICEgZGVmaW5lZChPUEVOU1NMX05PX0lERUEpCisgLyoKKyAgKiBJREVBLUNCQworICAqLworQEAgLTE1ODcsNyArMTU4Niw3IEBAIGVheV9hZXNfa2V5bGVuKGxlbikKKyAJcmV0dXJuIGxlbjsKKyB9CisgCistI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0NBTUVMTElBX0gpCisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0NBTUVMTElBX0gpICYmICEgZGVmaW5lZChPUEVOU1NMX05PX0NBTUVMTElBKQorIC8qCisgICogQ0FNRUxMSUEtQ0JDCisgICovCitAQCAtMTY4MCw5ICsxNjc5LDkgQEAgZWF5X2htYWNfaW5pdChrZXksIG1kKQorIAl2Y2hhcl90ICprZXk7CisgCWNvbnN0IEVWUF9NRCAqbWQ7CisgeworLQlITUFDX0NUWCAqYyA9IHJhY29vbl9tYWxsb2Moc2l6ZW9mKCpjKSk7CisrCUhNQUNfQ1RYICpjID0gSE1BQ19DVFhfbmV3KCk7CisgCistCUhNQUNfSW5pdChjLCBrZXktPnYsIGtleS0+bCwgbWQpOworKwlITUFDX0luaXRfZXgoYywga2V5LT52LCBrZXktPmwsIG1kLCBOVUxMKTsKKyAKKyAJcmV0dXJuIChjYWRkcl90KWM7CisgfQorQEAgLTE3NjEsOCArMTc2MCw3IEBAIGVheV9obWFjc2hhMl81MTJfZmluYWwoYykKKyAKKyAJSE1BQ19GaW5hbCgoSE1BQ19DVFggKiljLCAodW5zaWduZWQgY2hhciAqKSByZXMtPnYsICZsKTsKKyAJcmVzLT5sID0gbDsKKy0JSE1BQ19jbGVhbnVwKChITUFDX0NUWCAqKWMpOworLQkodm9pZClyYWNvb25fZnJlZShjKTsKKysJSE1BQ19DVFhfZnJlZSgoSE1BQ19DVFggKiljKTsKKyAKKyAJaWYgKFNIQTUxMl9ESUdFU1RfTEVOR1RIICE9IHJlcy0+bCkgeworIAkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLAorQEAgLTE4MTEsOCArMTgwOSw3IEBAIGVheV9obWFjc2hhMl8zODRfZmluYWwoYykKKyAKKyAJSE1BQ19GaW5hbCgoSE1BQ19DVFggKiljLCAodW5zaWduZWQgY2hhciAqKSByZXMtPnYsICZsKTsKKyAJcmVzLT5sID0gbDsKKy0JSE1BQ19jbGVhbnVwKChITUFDX0NUWCAqKWMpOworLQkodm9pZClyYWNvb25fZnJlZShjKTsKKysJSE1BQ19DVFhfZnJlZSgoSE1BQ19DVFggKiljKTsKKyAKKyAJaWYgKFNIQTM4NF9ESUdFU1RfTEVOR1RIICE9IHJlcy0+bCkgeworIAkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLAorQEAgLTE4NjEsOCArMTg1OCw3IEBAIGVheV9obWFjc2hhMl8yNTZfZmluYWwoYykKKyAKKyAJSE1BQ19GaW5hbCgoSE1BQ19DVFggKiljLCAodW5zaWduZWQgY2hhciAqKSByZXMtPnYsICZsKTsKKyAJcmVzLT5sID0gbDsKKy0JSE1BQ19jbGVhbnVwKChITUFDX0NUWCAqKWMpOworLQkodm9pZClyYWNvb25fZnJlZShjKTsKKysJSE1BQ19DVFhfZnJlZSgoSE1BQ19DVFggKiljKTsKKyAKKyAJaWYgKFNIQTI1Nl9ESUdFU1RfTEVOR1RIICE9IHJlcy0+bCkgeworIAkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLAorQEAgLTE5MTIsOCArMTkwOCw3IEBAIGVheV9obWFjc2hhMV9maW5hbChjKQorIAorIAlITUFDX0ZpbmFsKChITUFDX0NUWCAqKWMsICh1bnNpZ25lZCBjaGFyICopIHJlcy0+diwgJmwpOworIAlyZXMtPmwgPSBsOworLQlITUFDX2NsZWFudXAoKEhNQUNfQ1RYICopYyk7CistCSh2b2lkKXJhY29vbl9mcmVlKGMpOworKwlITUFDX0NUWF9mcmVlKChITUFDX0NUWCAqKWMpOworIAorIAlpZiAoU0hBX0RJR0VTVF9MRU5HVEggIT0gcmVzLT5sKSB7CisgCQlwbG9nKExMVl9FUlJPUiwgTE9DQVRJT04sIE5VTEwsCitAQCAtMTk2Miw4ICsxOTU3LDcgQEAgZWF5X2htYWNtZDVfZmluYWwoYykKKyAKKyAJSE1BQ19GaW5hbCgoSE1BQ19DVFggKiljLCAodW5zaWduZWQgY2hhciAqKSByZXMtPnYsICZsKTsKKyAJcmVzLT5sID0gbDsKKy0JSE1BQ19jbGVhbnVwKChITUFDX0NUWCAqKWMpOworLQkodm9pZClyYWNvb25fZnJlZShjKTsKKysJSE1BQ19DVFhfZnJlZSgoSE1BQ19DVFggKiljKTsKKyAKKyAJaWYgKE1ENV9ESUdFU1RfTEVOR1RIICE9IHJlcy0+bCkgeworIAkJcGxvZyhMTFZfRVJST1IsIExPQ0FUSU9OLCBOVUxMLAorQEAgLTIyNjYsNiArMjI2MCw3IEBAIGVheV9kaF9nZW5lcmF0ZShwcmltZSwgZywgcHVibGVuLCBwdWIsIHByaXYpCisgCXVfaW50MzJfdCBnOworIHsKKyAJQklHTlVNICpwID0gTlVMTDsKKysJQklHTlVNICpCTmcgPSBOVUxMOworIAlESCAqZGggPSBOVUxMOworIAlpbnQgZXJyb3IgPSAtMTsKKyAKK0BAIC0yMjc2LDI1ICsyMjcxLDI4IEBAIGVheV9kaF9nZW5lcmF0ZShwcmltZSwgZywgcHVibGVuLCBwdWIsIHByaXYpCisgCisgCWlmICgoZGggPSBESF9uZXcoKSkgPT0gTlVMTCkKKyAJCWdvdG8gZW5kOworLQlkaC0+cCA9IHA7CistCXAgPSBOVUxMOwkvKiBwIGlzIG5vdyBwYXJ0IG9mIGRoIHN0cnVjdHVyZSAqLworLQlkaC0+ZyA9IE5VTEw7CistCWlmICgoZGgtPmcgPSBCTl9uZXcoKSkgPT0gTlVMTCkKKysJaWYgKChCTmcgPSBCTl9uZXcoKSkgPT0gTlVMTCkKKyAJCWdvdG8gZW5kOworLQlpZiAoIUJOX3NldF93b3JkKGRoLT5nLCBnKSkKKysJaWYgKCFCTl9zZXRfd29yZChCTmcsIGcpKQorIAkJZ290byBlbmQ7CisrCWlmICghIERIX3NldDBfcHFnKGRoLCBwLCBOVUxMLCBCTmcpKQorKwkJZ290byBlbmQ7CisrCUJOZyA9IE5VTEw7CisrCXAgPSBOVUxMOwkvKiBwIGlzIG5vdyBwYXJ0IG9mIGRoIHN0cnVjdHVyZSAqLworIAorIAlpZiAocHVibGVuICE9IDApCistCQlkaC0+bGVuZ3RoID0gcHVibGVuOworKwkJREhfc2V0X2xlbmd0aChkaCwgcHVibGVuKTsKKyAKKyAJLyogZ2VuZXJhdGUgcHVibGljIGFuZCBwcml2YXRlIG51bWJlciAqLworIAlpZiAoIURIX2dlbmVyYXRlX2tleShkaCkpCisgCQlnb3RvIGVuZDsKKyAKKyAJLyogY29weSByZXN1bHRzIHRvIGJ1ZmZlcnMgKi8KKy0JaWYgKGVheV9ibjJ2KHB1YiwgZGgtPnB1Yl9rZXkpIDwgMCkKKysJQklHTlVNICpwdWJfa2V5LCAqcHJpdl9rZXk7CisrCURIX2dldDBfa2V5KGRoLCAoY29uc3QgQklHTlVNKiopICZwdWJfa2V5LCAoY29uc3QgQklHTlVNKiopICZwcml2X2tleSk7CisrCWlmIChlYXlfYm4ydihwdWIsIHB1Yl9rZXkpIDwgMCkKKyAJCWdvdG8gZW5kOworLQlpZiAoZWF5X2JuMnYocHJpdiwgZGgtPnByaXZfa2V5KSA8IDApIHsKKysJaWYgKGVheV9ibjJ2KHByaXYsIHByaXZfa2V5KSA8IDApIHsKKyAJCXZmcmVlKCpwdWIpOworIAkJZ290byBlbmQ7CisgCX0KK0BAIC0yMzA2LDYgKzIzMDQsOCBAQCBlbmQ6CisgCQlESF9mcmVlKGRoKTsKKyAJaWYgKHAgIT0gMCkKKyAJCUJOX2ZyZWUocCk7CisrCWlmIChCTmcgIT0gMCkKKysJCUJOX2ZyZWUoQk5nKTsKKyAJcmV0dXJuKGVycm9yKTsKKyB9CisgCitAQCAtMjMxOSw2ICsyMzE5LDEwIEBAIGVheV9kaF9jb21wdXRlKHByaW1lLCBnLCBwdWIsIHByaXYsIHB1YjIsIGtleSkKKyAJaW50IGw7CisgCXVuc2lnbmVkIGNoYXIgKnYgPSBOVUxMOworIAlpbnQgZXJyb3IgPSAtMTsKKysJQklHTlVNICpwID0gQk5fbmV3KCk7CisrCUJJR05VTSAqQk5nID0gQk5fbmV3KCk7CisrCUJJR05VTSAqcHViX2tleSA9IEJOX25ldygpOworKwlCSUdOVU0gKnByaXZfa2V5ID0gQk5fbmV3KCk7CisgCisgCS8qIG1ha2UgcHVibGljIG51bWJlciB0byBjb21wdXRlICovCisgCWlmIChlYXlfdjJibigmZGhfcHViLCBwdWIyKSA8IDApCitAQCAtMjMyNywxOSArMjMzMSwyMSBAQCBlYXlfZGhfY29tcHV0ZShwcmltZSwgZywgcHViLCBwcml2LCBwdWIyLCBrZXkpCisgCS8qIG1ha2UgREggc3RydWN0dXJlICovCisgCWlmICgoZGggPSBESF9uZXcoKSkgPT0gTlVMTCkKKyAJCWdvdG8gZW5kOworLQlpZiAoZWF5X3YyYm4oJmRoLT5wLCBwcmltZSkgPCAwKQorKwlpZiAocCA9PSBOVUxMIHx8IEJOZyA9PSBOVUxMIHx8IHB1Yl9rZXkgPT0gTlVMTCB8fCBwcml2X2tleSA9PSBOVUxMKQorIAkJZ290byBlbmQ7CistCWlmIChlYXlfdjJibigmZGgtPnB1Yl9rZXksIHB1YikgPCAwKQorKworKwlpZiAoZWF5X3YyYm4oJnAsIHByaW1lKSA8IDApCisgCQlnb3RvIGVuZDsKKy0JaWYgKGVheV92MmJuKCZkaC0+cHJpdl9rZXksIHByaXYpIDwgMCkKKysJaWYgKGVheV92MmJuKCZwdWJfa2V5LCBwdWIpIDwgMCkKKyAJCWdvdG8gZW5kOworLQlkaC0+bGVuZ3RoID0gcHViMi0+bCAqIDg7CistCistCWRoLT5nID0gTlVMTDsKKy0JaWYgKChkaC0+ZyA9IEJOX25ldygpKSA9PSBOVUxMKQorKwlpZiAoZWF5X3YyYm4oJnByaXZfa2V5LCBwcml2KSA8IDApCisgCQlnb3RvIGVuZDsKKy0JaWYgKCFCTl9zZXRfd29yZChkaC0+ZywgZykpCisrCWlmICghQk5fc2V0X3dvcmQoQk5nLCBnKSkKKyAJCWdvdG8gZW5kOworKwlESF9zZXQwX2tleShkaCwgcHViX2tleSwgcHJpdl9rZXkpOworKwlESF9zZXRfbGVuZ3RoKGRoLCBwdWIyLT5sICogOCk7CisrCURIX3NldDBfcHFnKGRoLCBwLCBOVUxMLCBCTmcpOworKwlwdWJfa2V5ID0gcHJpdl9rZXkgPSBwID0gQk5nID0gTlVMTDsKKyAKKyAJaWYgKCh2ID0gcmFjb29uX2NhbGxvYyhwcmltZS0+bCwgc2l6ZW9mKHVfY2hhcikpKSA9PSBOVUxMKQorIAkJZ290byBlbmQ7CitAQCAtMjM1MCw2ICsyMzU2LDE0IEBAIGVheV9kaF9jb21wdXRlKHByaW1lLCBnLCBwdWIsIHByaXYsIHB1YjIsIGtleSkKKyAJZXJyb3IgPSAwOworIAorIGVuZDoKKysJaWYgKHAgIT0gTlVMTCkKKysJCUJOX2ZyZWUocCk7CisrCWlmIChCTmcgIT0gTlVMTCkKKysJCUJOX2ZyZWUoQk5nKTsKKysJaWYgKHB1Yl9rZXkgIT0gTlVMTCkKKysJCUJOX2ZyZWUocHViX2tleSk7CisrCWlmIChwcml2X2tleSAhPSBOVUxMKQorKwkJQk5fZnJlZShwcml2X2tleSk7CisgCWlmIChkaF9wdWIgIT0gTlVMTCkKKyAJCUJOX2ZyZWUoZGhfcHViKTsKKyAJaWYgKGRoICE9IE5VTEwpCitAQCAtMjQwMCwxMiArMjQxNCwxNCBAQCBlYXlfYm4ydih2YXIsIGJuKQorIHZvaWQKKyBlYXlfaW5pdCgpCisgeworKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKyAJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKKyAJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3MoKTsKKyAjaWZkZWYgSEFWRV9PUEVOU1NMX0VOR0lORV9ICisgCUVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcygpOworIAlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlKCk7CisgI2VuZGlmCisrI2VuZGlmCisgfQorIAorIHZjaGFyX3QgKgorQEAgLTI1MDQsOCArMjUyMCw3IEBAIGJpbmJ1Zl9wdWJrZXkycnNhKHZjaGFyX3QgKmJpbmJ1ZikKKyAJCWdvdG8gb3V0OworIAl9CisgCQorLQlyc2FfcHViLT5uID0gbW9kOworLQlyc2FfcHViLT5lID0gZXhwOworKwlSU0Ffc2V0MF9rZXkocnNhX3B1YiwgbW9kLCBleHAsIE5VTEwpOworIAorIG91dDoKKyAJcmV0dXJuIHJzYV9wdWI7CitAQCAtMjU4Miw1ICsyNTk3LDUgQEAgZWF5X3JhbmRvbSgpCisgY29uc3QgY2hhciAqCisgZWF5X3ZlcnNpb24oKQorIHsKKy0JcmV0dXJuIFNTTGVheV92ZXJzaW9uKFNTTEVBWV9WRVJTSU9OKTsKKysJcmV0dXJuIE9wZW5TU0xfdmVyc2lvbihPUEVOU1NMX1ZFUlNJT04pOworIH0KK2RpZmYgLS1naXQgYS9zcmMvcmFjb29uL2NyeXB0b19vcGVuc3NsLmggYi9zcmMvcmFjb29uL2NyeXB0b19vcGVuc3NsLmgKK2luZGV4IDY2ZmFjNzMuLmVlNWI3NjUgMTAwNjQ0CistLS0gYS9zcmMvcmFjb29uL2NyeXB0b19vcGVuc3NsLmgKKysrKyBiL3NyYy9yYWNvb24vY3J5cHRvX29wZW5zc2wuaAorQEAgLTEyNCw3ICsxMjQsNyBAQCBleHRlcm4gdmNoYXJfdCAqZWF5X2Flc19kZWNyeXB0IF9fUCgodmNoYXJfdCAqLCB2Y2hhcl90ICosIHZjaGFyX3QgKikpOworIGV4dGVybiBpbnQgZWF5X2Flc193ZWFra2V5IF9fUCgodmNoYXJfdCAqKSk7CisgZXh0ZXJuIGludCBlYXlfYWVzX2tleWxlbiBfX1AoKGludCkpOworIAorLSNpZiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9DQU1FTExJQV9IKQorKyNpZiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9DQU1FTExJQV9IKSAmJiAhIGRlZmluZWQoT1BFTlNTTF9OT19DQU1FTExJQSkKKyAvKiBDYW1lbGxpYSAqLworIGV4dGVybiB2Y2hhcl90ICplYXlfY2FtZWxsaWFfZW5jcnlwdCBfX1AoKHZjaGFyX3QgKiwgdmNoYXJfdCAqLCB2Y2hhcl90ICopKTsKKyBleHRlcm4gdmNoYXJfdCAqZWF5X2NhbWVsbGlhX2RlY3J5cHQgX19QKCh2Y2hhcl90ICosIHZjaGFyX3QgKiwgdmNoYXJfdCAqKSk7CitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9lYXl0ZXN0LmMgYi9zcmMvcmFjb29uL2VheXRlc3QuYworaW5kZXggZDYwOWU0Zi4uZDJkMjBkYSAxMDA2NDQKKy0tLSBhL3NyYy9yYWNvb24vZWF5dGVzdC5jCisrKysgYi9zcmMvcmFjb29uL2VheXRlc3QuYworQEAgLTYyLDYgKzYyLDcgQEAKKyAjaW5jbHVkZSAiZGhncm91cC5oIgorICNpbmNsdWRlICJjcnlwdG9fb3BlbnNzbC5oIgorICNpbmNsdWRlICJnbnVjLmgiCisrI2luY2x1ZGUgIm9wZW5zc2xfY29tcGF0LmgiCisgCisgI2luY2x1ZGUgInBhY2thZ2VfdmVyc2lvbi5oIgorIAorQEAgLTEwMyw3ICsxMDQsNyBAQCByc2FfdmVyaWZ5X3dpdGhfcHVia2V5KHNyYywgc2lnLCBwdWJrZXlfdHh0KQorIAkJcHJpbnRmICgiUEVNX3JlYWRfUFVCS0VZKCk6ICVzXG4iLCBlYXlfc3RyZXJyb3IoKSk7CisgCQlyZXR1cm4gLTE7CisgCX0KKy0JZXJyb3IgPSBlYXlfY2hlY2tfcnNhc2lnbihzcmMsIHNpZywgZXZwLT5wa2V5LnJzYSk7CisrCWVycm9yID0gZWF5X2NoZWNrX3JzYXNpZ24oc3JjLCBzaWcsIEVWUF9QS0VZX2dldDBfUlNBKGV2cCkpOworIAorIAlyZXR1cm4gZXJyb3I7CisgfQorQEAgLTY5OCw3ICs2OTksNyBAQCBjaXBoZXJ0ZXN0KGFjLCBhdikKKyAJCQkgIGVheV9jYXN0X2VuY3J5cHQsIGVheV9jYXN0X2RlY3J5cHQpIDwgMCkKKyAJICByZXR1cm4gLTE7CisgCQorLSNpZmRlZiBIQVZFX09QRU5TU0xfSURFQV9ICisrI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMX0lERUFfSCkgJiYgISBkZWZpbmVkKE9QRU5TU0xfTk9fSURFQSkKKyAJaWYgKGNpcGhlcnRlc3RfMSAoIklERUEiLAorIAkJCSAgJmRhdGEsIDgsCisgCQkJICAma2V5LCBrZXkubCwKK0BAIC03MTUsNyArNzE2LDcgQEAgY2lwaGVydGVzdChhYywgYXYpCisgCQkJICBlYXlfcmM1X2VuY3J5cHQsIGVheV9yYzVfZGVjcnlwdCkgPCAwKQorIAkgIHJldHVybiAtMTsKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfQ0FNRUxMSUFfSCkKKysjaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfQ0FNRUxMSUFfSCkgJiYgISBkZWZpbmVkKE9QRU5TU0xfTk9fQ0FNRUxMSUEpCisgCWlmIChjaXBoZXJ0ZXN0XzEgKCJDQU1FTExJQSIsCisgCQkJICAmZGF0YSwgMTYsCisgCQkJICAma2V5LCBrZXkubCwKK2RpZmYgLS1naXQgYS9zcmMvcmFjb29uL2lwc2VjX2RvaS5jIGIvc3JjL3JhY29vbi9pcHNlY19kb2kuYworaW5kZXggMDhlNDMyNS4uN2IxNjA0ZCAxMDA2NDQKKy0tLSBhL3NyYy9yYWNvb24vaXBzZWNfZG9pLmMKKysrKyBiL3NyYy9yYWNvb24vaXBzZWNfZG9pLmMKK0BAIC03MTUsNyArNzE1LDcgQEAgb3V0OgorIAkvKiBrZXkgbGVuZ3RoIG11c3Qgbm90IGJlIHNwZWNpZmllZCBvbiBzb21lIGFsZ29yaXRobXMgKi8KKyAJaWYgKGtleWxlbikgeworIAkJaWYgKHNhLT5lbmN0eXBlID09IE9BS0xFWV9BVFRSX0VOQ19BTEdfREVTCistI2lmZGVmIEhBVkVfT1BFTlNTTF9JREVBX0gKKysjaWYgZGVmaW5lZChIQVZFX09QRU5TU0xfSURFQV9IKSAmJiAhIGRlZmluZWQoT1BFTlNTTF9OT19JREVBKQorIAkJIHx8IHNhLT5lbmN0eXBlID09IE9BS0xFWV9BVFRSX0VOQ19BTEdfSURFQQorICNlbmRpZgorIAkJIHx8IHNhLT5lbmN0eXBlID09IE9BS0xFWV9BVFRSX0VOQ19BTEdfM0RFUykgeworZGlmZiAtLWdpdCBhL3NyYy9yYWNvb24vb3BlbnNzbF9jb21wYXQuYyBiL3NyYy9yYWNvb24vb3BlbnNzbF9jb21wYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg2NGI1ZmIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9yYWNvb24vb3BlbnNzbF9jb21wYXQuYworQEAgLTAsMCArMSwyMTMgQEAKKysvKgorKyAqIENvcHlyaWdodCAyMDE2IFRoZSBPcGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKysgKgorKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBPcGVuU1NMIGxpY2Vuc2UgKHRoZSAiTGljZW5zZSIpLiAgWW91IG1heSBub3QgdXNlCisrICogdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgY2FuIG9idGFpbiBhIGNvcHkKKysgKiBpbiB0aGUgZmlsZSBMSUNFTlNFIGluIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIG9yIGF0CisrICogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorKyAqLworKworKyNpbmNsdWRlICJvcGVuc3NsX2NvbXBhdC5oIgorKworKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrCisrc3RhdGljIHZvaWQgKk9QRU5TU0xfemFsbG9jKHNpemVfdCBudW0pCisreworKyAgICB2b2lkICpyZXQgPSBPUEVOU1NMX21hbGxvYyhudW0pOworKworKyAgICBpZiAocmV0ICE9IE5VTEwpCisrICAgICAgICBtZW1zZXQocmV0LCAwLCBudW0pOworKyAgICByZXR1cm4gcmV0OworK30KKysKKytpbnQgUlNBX3NldDBfa2V5KFJTQSAqciwgQklHTlVNICpuLCBCSUdOVU0gKmUsIEJJR05VTSAqZCkKKyt7CisrICAgIC8qIElmIHRoZSBmaWVsZHMgbiBhbmQgZSBpbiByIGFyZSBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBpbnB1dAorKyAgICAgKiBwYXJhbWV0ZXJzIE1VU1QgYmUgbm9uLU5VTEwgZm9yIG4gYW5kIGUuICBkIG1heSBiZQorKyAgICAgKiBsZWZ0IE5VTEwgKGluIGNhc2Ugb25seSB0aGUgcHVibGljIGtleSBpcyB1c2VkKS4KKysgICAgICovCisrICAgIGlmICgoci0+biA9PSBOVUxMICYmIG4gPT0gTlVMTCkKKysgICAgICAgIHx8IChyLT5lID09IE5VTEwgJiYgZSA9PSBOVUxMKSkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAobiAhPSBOVUxMKSB7CisrICAgICAgICBCTl9mcmVlKHItPm4pOworKyAgICAgICAgci0+biA9IG47CisrICAgIH0KKysgICAgaWYgKGUgIT0gTlVMTCkgeworKyAgICAgICAgQk5fZnJlZShyLT5lKTsKKysgICAgICAgIHItPmUgPSBlOworKyAgICB9CisrICAgIGlmIChkICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoci0+ZCk7CisrICAgICAgICByLT5kID0gZDsKKysgICAgfQorKworKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IFJTQV9zZXQwX2ZhY3RvcnMoUlNBICpyLCBCSUdOVU0gKnAsIEJJR05VTSAqcSkKKyt7CisrICAgIC8qIElmIHRoZSBmaWVsZHMgcCBhbmQgcSBpbiByIGFyZSBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBpbnB1dAorKyAgICAgKiBwYXJhbWV0ZXJzIE1VU1QgYmUgbm9uLU5VTEwuCisrICAgICAqLworKyAgICBpZiAoKHItPnAgPT0gTlVMTCAmJiBwID09IE5VTEwpCisrICAgICAgICB8fCAoci0+cSA9PSBOVUxMICYmIHEgPT0gTlVMTCkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKHAgIT0gTlVMTCkgeworKyAgICAgICAgQk5fZnJlZShyLT5wKTsKKysgICAgICAgIHItPnAgPSBwOworKyAgICB9CisrICAgIGlmIChxICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoci0+cSk7CisrICAgICAgICByLT5xID0gcTsKKysgICAgfQorKworKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IFJTQV9zZXQwX2NydF9wYXJhbXMoUlNBICpyLCBCSUdOVU0gKmRtcDEsIEJJR05VTSAqZG1xMSwgQklHTlVNICppcW1wKQorK3sKKysgICAgLyogSWYgdGhlIGZpZWxkcyBkbXAxLCBkbXExIGFuZCBpcW1wIGluIHIgYXJlIE5VTEwsIHRoZSBjb3JyZXNwb25kaW5nIGlucHV0CisrICAgICAqIHBhcmFtZXRlcnMgTVVTVCBiZSBub24tTlVMTC4KKysgICAgICovCisrICAgIGlmICgoci0+ZG1wMSA9PSBOVUxMICYmIGRtcDEgPT0gTlVMTCkKKysgICAgICAgIHx8IChyLT5kbXExID09IE5VTEwgJiYgZG1xMSA9PSBOVUxMKQorKyAgICAgICAgfHwgKHItPmlxbXAgPT0gTlVMTCAmJiBpcW1wID09IE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmIChkbXAxICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoci0+ZG1wMSk7CisrICAgICAgICByLT5kbXAxID0gZG1wMTsKKysgICAgfQorKyAgICBpZiAoZG1xMSAhPSBOVUxMKSB7CisrICAgICAgICBCTl9mcmVlKHItPmRtcTEpOworKyAgICAgICAgci0+ZG1xMSA9IGRtcTE7CisrICAgIH0KKysgICAgaWYgKGlxbXAgIT0gTlVMTCkgeworKyAgICAgICAgQk5fZnJlZShyLT5pcW1wKTsKKysgICAgICAgIHItPmlxbXAgPSBpcW1wOworKyAgICB9CisrCisrICAgIHJldHVybiAxOworK30KKysKKyt2b2lkIFJTQV9nZXQwX2tleShjb25zdCBSU0EgKnIsCisrICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICoqbiwgY29uc3QgQklHTlVNICoqZSwgY29uc3QgQklHTlVNICoqZCkKKyt7CisrICAgIGlmIChuICE9IE5VTEwpCisrICAgICAgICAqbiA9IHItPm47CisrICAgIGlmIChlICE9IE5VTEwpCisrICAgICAgICAqZSA9IHItPmU7CisrICAgIGlmIChkICE9IE5VTEwpCisrICAgICAgICAqZCA9IHItPmQ7CisrfQorKworK3ZvaWQgUlNBX2dldDBfZmFjdG9ycyhjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKnAsIGNvbnN0IEJJR05VTSAqKnEpCisreworKyAgICBpZiAocCAhPSBOVUxMKQorKyAgICAgICAgKnAgPSByLT5wOworKyAgICBpZiAocSAhPSBOVUxMKQorKyAgICAgICAgKnEgPSByLT5xOworK30KKysKKyt2b2lkIFJTQV9nZXQwX2NydF9wYXJhbXMoY29uc3QgUlNBICpyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKipkbXAxLCBjb25zdCBCSUdOVU0gKipkbXExLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKippcW1wKQorK3sKKysgICAgaWYgKGRtcDEgIT0gTlVMTCkKKysgICAgICAgICpkbXAxID0gci0+ZG1wMTsKKysgICAgaWYgKGRtcTEgIT0gTlVMTCkKKysgICAgICAgICpkbXExID0gci0+ZG1xMTsKKysgICAgaWYgKGlxbXAgIT0gTlVMTCkKKysgICAgICAgICppcW1wID0gci0+aXFtcDsKKyt9CisrCisraW50IERIX3NldDBfcHFnKERIICpkaCwgQklHTlVNICpwLCBCSUdOVU0gKnEsIEJJR05VTSAqZykKKyt7CisrICAgIC8qIElmIHRoZSBmaWVsZHMgcCBhbmQgZyBpbiBkIGFyZSBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBpbnB1dAorKyAgICAgKiBwYXJhbWV0ZXJzIE1VU1QgYmUgbm9uLU5VTEwuICBxIG1heSByZW1haW4gTlVMTC4KKysgICAgICovCisrICAgIGlmICgoZGgtPnAgPT0gTlVMTCAmJiBwID09IE5VTEwpCisrICAgICAgICB8fCAoZGgtPmcgPT0gTlVMTCAmJiBnID09IE5VTEwpKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIGlmIChwICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoZGgtPnApOworKyAgICAgICAgZGgtPnAgPSBwOworKyAgICB9CisrICAgIGlmIChxICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoZGgtPnEpOworKyAgICAgICAgZGgtPnEgPSBxOworKyAgICB9CisrICAgIGlmIChnICE9IE5VTEwpIHsKKysgICAgICAgIEJOX2ZyZWUoZGgtPmcpOworKyAgICAgICAgZGgtPmcgPSBnOworKyAgICB9CisrCisrICAgIGlmIChxICE9IE5VTEwpIHsKKysgICAgICAgIGRoLT5sZW5ndGggPSBCTl9udW1fYml0cyhxKTsKKysgICAgfQorKworKyAgICByZXR1cm4gMTsKKyt9CisrCisrdm9pZCBESF9nZXQwX2tleShjb25zdCBESCAqZGgsIGNvbnN0IEJJR05VTSAqKnB1Yl9rZXksIGNvbnN0IEJJR05VTSAqKnByaXZfa2V5KQorK3sKKysgICAgaWYgKHB1Yl9rZXkgIT0gTlVMTCkKKysgICAgICAgICpwdWJfa2V5ID0gZGgtPnB1Yl9rZXk7CisrICAgIGlmIChwcml2X2tleSAhPSBOVUxMKQorKyAgICAgICAgKnByaXZfa2V5ID0gZGgtPnByaXZfa2V5OworK30KKysKKytpbnQgREhfc2V0MF9rZXkoREggKmRoLCBCSUdOVU0gKnB1Yl9rZXksIEJJR05VTSAqcHJpdl9rZXkpCisreworKyAgICAvKiBJZiB0aGUgZmllbGQgcHViX2tleSBpbiBkaCBpcyBOVUxMLCB0aGUgY29ycmVzcG9uZGluZyBpbnB1dAorKyAgICAgKiBwYXJhbWV0ZXJzIE1VU1QgYmUgbm9uLU5VTEwuICBUaGUgcHJpdl9rZXkgZmllbGQgbWF5CisrICAgICAqIGJlIGxlZnQgTlVMTC4KKysgICAgICovCisrICAgIGlmIChkaC0+cHViX2tleSA9PSBOVUxMICYmIHB1Yl9rZXkgPT0gTlVMTCkKKysgICAgICAgIHJldHVybiAwOworKworKyAgICBpZiAocHViX2tleSAhPSBOVUxMKSB7CisrICAgICAgICBCTl9mcmVlKGRoLT5wdWJfa2V5KTsKKysgICAgICAgIGRoLT5wdWJfa2V5ID0gcHViX2tleTsKKysgICAgfQorKyAgICBpZiAocHJpdl9rZXkgIT0gTlVMTCkgeworKyAgICAgICAgQk5fZnJlZShkaC0+cHJpdl9rZXkpOworKyAgICAgICAgZGgtPnByaXZfa2V5ID0gcHJpdl9rZXk7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCBESF9zZXRfbGVuZ3RoKERIICpkaCwgbG9uZyBsZW5ndGgpCisreworKyAgICBkaC0+bGVuZ3RoID0gbGVuZ3RoOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrSE1BQ19DVFggKkhNQUNfQ1RYX25ldyh2b2lkKQorK3sKKysgICAgcmV0dXJuIE9QRU5TU0xfemFsbG9jKHNpemVvZihITUFDX0NUWCkpOworK30KKysKKyt2b2lkIEhNQUNfQ1RYX2ZyZWUoSE1BQ19DVFggKmN0eCkKKyt7CisrICAgIEhNQUNfQ1RYX2NsZWFudXAoY3R4KTsKKysgICAgT1BFTlNTTF9mcmVlKGN0eCk7CisrfQorKworK1JTQSAqRVZQX1BLRVlfZ2V0MF9SU0EoRVZQX1BLRVkgKnBrZXkpCisreworKyAgICBpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9SU0EpIHsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrICAgIHJldHVybiBwa2V5LT5wa2V5LnJzYTsKKyt9CisrCisrCisrI2VuZGlmIC8qIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgKi8KK2RpZmYgLS1naXQgYS9zcmMvcmFjb29uL29wZW5zc2xfY29tcGF0LmggYi9zcmMvcmFjb29uL29wZW5zc2xfY29tcGF0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45ZTE1MmMyCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvcmFjb29uL29wZW5zc2xfY29tcGF0LmgKK0BAIC0wLDAgKzEsNDUgQEAKKysjaWZuZGVmIE9QRU5TU0xfQ09NUEFUX0gKKysjZGVmaW5lIE9QRU5TU0xfQ09NUEFUX0gKKysKKysjaW5jbHVkZSA8b3BlbnNzbC9vcGVuc3Nsdi5oPgorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKysKKysjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKysKKytpbnQgUlNBX3NldDBfa2V5KFJTQSAqciwgQklHTlVNICpuLCBCSUdOVU0gKmUsIEJJR05VTSAqZCk7CisraW50IFJTQV9zZXQwX2ZhY3RvcnMoUlNBICpyLCBCSUdOVU0gKnAsIEJJR05VTSAqcSk7CisraW50IFJTQV9zZXQwX2NydF9wYXJhbXMoUlNBICpyLCBCSUdOVU0gKmRtcDEsIEJJR05VTSAqZG1xMSwgQklHTlVNICppcW1wKTsKKyt2b2lkIFJTQV9nZXQwX2tleShjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKm4sIGNvbnN0IEJJR05VTSAqKmUsIGNvbnN0IEJJR05VTSAqKmQpOworK3ZvaWQgUlNBX2dldDBfZmFjdG9ycyhjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKnAsIGNvbnN0IEJJR05VTSAqKnEpOworK3ZvaWQgUlNBX2dldDBfY3J0X3BhcmFtcyhjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKmRtcDEsIGNvbnN0IEJJR05VTSAqKmRtcTEsIGNvbnN0IEJJR05VTSAqKmlxbXApOworKworK2ludCBESF9zZXQwX3BxZyhESCAqZGgsIEJJR05VTSAqcCwgQklHTlVNICpxLCBCSUdOVU0gKmcpOworK3ZvaWQgREhfZ2V0MF9rZXkoY29uc3QgREggKmRoLCBjb25zdCBCSUdOVU0gKipwdWJfa2V5LCBjb25zdCBCSUdOVU0gKipwcml2X2tleSk7CisraW50IERIX3NldDBfa2V5KERIICpkaCwgQklHTlVNICpwdWJfa2V5LCBCSUdOVU0gKnByaXZfa2V5KTsKKytpbnQgREhfc2V0X2xlbmd0aChESCAqZGgsIGxvbmcgbGVuZ3RoKTsKKysKKytITUFDX0NUWCAqSE1BQ19DVFhfbmV3KHZvaWQpOworK3ZvaWQgSE1BQ19DVFhfZnJlZShITUFDX0NUWCogY3R4KTsKKysKKytSU0EgKkVWUF9QS0VZX2dldDBfUlNBKEVWUF9QS0VZICpwa2V5KTsKKysKKysjZGVmaW5lIEFTTjFfU1RSSU5HX2xlbmd0aChzKSBzLT5sZW5ndGgKKysjZGVmaW5lIEFTTjFfU1RSSU5HX2dldDBfZGF0YShzKSBzLT5kYXRhCisrCisrI2RlZmluZSBYNTA5X2dldF9zdWJqZWN0X25hbWUoeCkgeC0+Y2VydF9pbmZvLT5zdWJqZWN0CisrI2RlZmluZSBYNTA5X2dldF9pc3N1ZXJfbmFtZSh4KSB4LT5jZXJ0X2luZm8tPmlzc3VlcgorKyNkZWZpbmUgWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhKG4pIG4tPnZhbHVlCisrI2RlZmluZSBYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdChuKSBuLT5vYmplY3QKKysjZGVmaW5lIFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KSBjdHgtPmN1cnJlbnRfY2VydAorKyNkZWZpbmUgWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGN0eCkgY3R4LT5lcnJvcgorKyNkZWZpbmUgWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yX2RlcHRoKGN0eCkgY3R4LT5lcnJvcl9kZXB0aAorKworKyNkZWZpbmUgT1BFTlNTTF9WRVJTSU9OIFNTTEVBWV9WRVJTSU9OCisrI2RlZmluZSBPcGVuU1NMX3ZlcnNpb24gU1NMZWF5X3ZlcnNpb24KKysKKysjZW5kaWYgLyogT1BFTlNTTF9WRVJTSU9OX05VTUJFUiAqLworKworKyNlbmRpZiAvKiBPUEVOU1NMX0NPTVBBVF9IICovCitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9wbGFpbnJzYS1nZW4uYyBiL3NyYy9yYWNvb24vcGxhaW5yc2EtZ2VuLmMKK2luZGV4IGNhZDE4NjEuLmI5NDliMDggMTAwNjQ0CistLS0gYS9zcmMvcmFjb29uL3BsYWlucnNhLWdlbi5jCisrKysgYi9zcmMvcmFjb29uL3BsYWlucnNhLWdlbi5jCitAQCAtNjAsNiArNjAsNyBAQAorICNpbmNsdWRlICJ2bWJ1Zi5oIgorICNpbmNsdWRlICJwbG9nLmgiCisgI2luY2x1ZGUgImNyeXB0b19vcGVuc3NsLmgiCisrI2luY2x1ZGUgIm9wZW5zc2xfY29tcGF0LmgiCisgCisgI2luY2x1ZGUgInBhY2thZ2VfdmVyc2lvbi5oIgorIAorQEAgLTkwLDEyICs5MSwxNCBAQCBtaXhfYjY0X3B1YmtleShjb25zdCBSU0EgKmtleSkKKyAJY2hhciAqYmluYnVmOworIAlsb25nIGJpbmxlbiwgcmV0OworIAl2Y2hhcl90ICpyZXM7CistCQorLQliaW5sZW4gPSAxICsgQk5fbnVtX2J5dGVzKGtleS0+ZSkgKyBCTl9udW1fYnl0ZXMoa2V5LT5uKTsKKysJY29uc3QgQklHTlVNICplLCAqbjsKKysKKysJUlNBX2dldDBfa2V5KGtleSwgJm4sICZlLCBOVUxMKTsKKysJYmlubGVuID0gMSArIEJOX251bV9ieXRlcyhlKSArIEJOX251bV9ieXRlcyhuKTsKKyAJYmluYnVmID0gbWFsbG9jKGJpbmxlbik7CisgCW1lbXNldChiaW5idWYsIDAsIGJpbmxlbik7CistCWJpbmJ1ZlswXSA9IEJOX2JuMmJpbihrZXktPmUsICh1bnNpZ25lZCBjaGFyICopICZiaW5idWZbMV0pOworLQlyZXQgPSBCTl9ibjJiaW4oa2V5LT5uLCAodW5zaWduZWQgY2hhciAqKSAoJmJpbmJ1ZltiaW5idWZbMF0gKyAxXSkpOworKwliaW5idWZbMF0gPSBCTl9ibjJiaW4oZSwgKHVuc2lnbmVkIGNoYXIgKikgJmJpbmJ1ZlsxXSk7CisrCXJldCA9IEJOX2JuMmJpbihuLCAodW5zaWduZWQgY2hhciAqKSAoJmJpbmJ1ZltiaW5idWZbMF0gKyAxXSkpOworIAlpZiAoMSArIGJpbmJ1ZlswXSArIHJldCAhPSBiaW5sZW4pIHsKKyAJCXBsb2coTExWX0VSUk9SLCBMT0NBVElPTiwgTlVMTCwKKyAJCSAgICAgIlB1YmtleSBnZW5lcmF0aW9uIGZhaWxlZC4gVGhpcyBpcyByZWFsbHkgc3RyYW5nZS4uLlxuIik7CitAQCAtMTMxLDE2ICsxMzQsMjAgQEAgcHJpbnRfcnNhX2tleShGSUxFICpmcCwgY29uc3QgUlNBICprZXkpCisgCQorIAlmcHJpbnRmKGZwLCAiIyA6IFBVQiAwcyVzXG4iLCBwdWJrZXk2NC0+dik7CisgCWZwcmludGYoZnAsICI6IFJTQVx0e1xuIik7CistCWZwcmludGYoZnAsICJcdCMgUlNBICVkIGJpdHNcbiIsIEJOX251bV9iaXRzKGtleS0+bikpOworKwljb25zdCBCSUdOVU0gKm4sICplLCAqZCwgKnAsICpxLCAqZG1wMSwgKmRtcTEsICppcW1wOworKwlSU0FfZ2V0MF9rZXkoa2V5LCAmbiwgJmUsICZkKTsKKysJUlNBX2dldDBfZmFjdG9ycyhrZXksICZwLCAmcSk7CisrCVJTQV9nZXQwX2NydF9wYXJhbXMoa2V5LCAmZG1wMSwgJmRtcTEsICZpcW1wKTsKKysJZnByaW50ZihmcCwgIlx0IyBSU0EgJWQgYml0c1xuIiwgQk5fbnVtX2JpdHMobikpOworIAlmcHJpbnRmKGZwLCAiXHQjIHB1YmtleT0wcyVzXG4iLCBwdWJrZXk2NC0+dik7CistCWZwcmludGYoZnAsICJcdE1vZHVsdXM6IDB4JXNcbiIsIGxvd2VyY2FzZShCTl9ibjJoZXgoa2V5LT5uKSkpOworLQlmcHJpbnRmKGZwLCAiXHRQdWJsaWNFeHBvbmVudDogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPmUpKSk7CistCWZwcmludGYoZnAsICJcdFByaXZhdGVFeHBvbmVudDogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPmQpKSk7CistCWZwcmludGYoZnAsICJcdFByaW1lMTogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPnApKSk7CistCWZwcmludGYoZnAsICJcdFByaW1lMjogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPnEpKSk7CistCWZwcmludGYoZnAsICJcdEV4cG9uZW50MTogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPmRtcDEpKSk7CistCWZwcmludGYoZnAsICJcdEV4cG9uZW50MjogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChrZXktPmRtcTEpKSk7CistCWZwcmludGYoZnAsICJcdENvZWZmaWNpZW50OiAweCVzXG4iLCBsb3dlcmNhc2UoQk5fYm4yaGV4KGtleS0+aXFtcCkpKTsKKysJZnByaW50ZihmcCwgIlx0TW9kdWx1czogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChuKSkpOworKwlmcHJpbnRmKGZwLCAiXHRQdWJsaWNFeHBvbmVudDogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChlKSkpOworKwlmcHJpbnRmKGZwLCAiXHRQcml2YXRlRXhwb25lbnQ6IDB4JXNcbiIsIGxvd2VyY2FzZShCTl9ibjJoZXgoZCkpKTsKKysJZnByaW50ZihmcCwgIlx0UHJpbWUxOiAweCVzXG4iLCBsb3dlcmNhc2UoQk5fYm4yaGV4KHApKSk7CisrCWZwcmludGYoZnAsICJcdFByaW1lMjogMHglc1xuIiwgbG93ZXJjYXNlKEJOX2JuMmhleChxKSkpOworKwlmcHJpbnRmKGZwLCAiXHRFeHBvbmVudDE6IDB4JXNcbiIsIGxvd2VyY2FzZShCTl9ibjJoZXgoZG1wMSkpKTsKKysJZnByaW50ZihmcCwgIlx0RXhwb25lbnQyOiAweCVzXG4iLCBsb3dlcmNhc2UoQk5fYm4yaGV4KGRtcTEpKSk7CisrCWZwcmludGYoZnAsICJcdENvZWZmaWNpZW50OiAweCVzXG4iLCBsb3dlcmNhc2UoQk5fYm4yaGV4KGlxbXApKSk7CisgCWZwcmludGYoZnAsICIgIH1cbiIpOworIAorIAl2ZnJlZShwdWJrZXk2NCk7CitAQCAtMjAzLDExICsyMTAsMTMgQEAgaW50CisgZ2VuX3JzYV9rZXkoRklMRSAqZnAsIHNpemVfdCBiaXRzLCB1bnNpZ25lZCBsb25nIGV4cCkKKyB7CisgCWludCByZXQ7CistCVJTQSAqa2V5OworKwlSU0EgKmtleSA9IFJTQV9uZXcoKTsKKysJQklHTlVNICplID0gQk5fbmV3KCk7CisgCistCWtleSA9IFJTQV9nZW5lcmF0ZV9rZXkoYml0cywgZXhwLCBOVUxMLCBOVUxMKTsKKy0JaWYgKCFrZXkpIHsKKysJQk5fc2V0X3dvcmQoZSwgZXhwKTsKKysJaWYgKCEgUlNBX2dlbmVyYXRlX2tleV9leChrZXksIGJpdHMsIGUsIE5VTEwpKSB7CisgCQlmcHJpbnRmKHN0ZGVyciwgIlJTQV9nZW5lcmF0ZV9rZXkoKTogJXNcbiIsIGVheV9zdHJlcnJvcigpKTsKKysJCVJTQV9mcmVlKGtleSk7CisgCQlyZXR1cm4gLTE7CisgCX0KKyAJCitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9wcnNhX3Bhci55IGIvc3JjL3JhY29vbi9wcnNhX3Bhci55CitpbmRleCAxOTg3ZTRkLi4yN2NlNGM2IDEwMDY0NAorLS0tIGEvc3JjL3JhY29vbi9wcnNhX3Bhci55CisrKysgYi9zcmMvcmFjb29uL3Byc2FfcGFyLnkKK0BAIC02OCw2ICs2OCw3IEBACisgI2luY2x1ZGUgImlzYWttcF92YXIuaCIKKyAjaW5jbHVkZSAiaGFuZGxlci5oIgorICNpbmNsdWRlICJjcnlwdG9fb3BlbnNzbC5oIgorKyNpbmNsdWRlICJvcGVuc3NsX2NvbXBhdC5oIgorICNpbmNsdWRlICJzb2NrbWlzYy5oIgorICNpbmNsdWRlICJyc2FsaXN0LmgiCisgCitAQCAtODUsNyArODYsMTggQEAgY2hhciAqcHJzYV9jdXJfZm5hbWUgPSBOVUxMOworIHN0cnVjdCBnZW5saXN0ICpwcnNhX2N1cl9saXN0ID0gTlVMTDsKKyBlbnVtIHJzYV9rZXlfdHlwZSBwcnNhX2N1cl90eXBlID0gUlNBX1RZUEVfQU5ZOworIAorLXN0YXRpYyBSU0EgKnJzYV9jdXI7Cisrc3RydWN0IG15X3JzYV9zdCB7CisrCUJJR05VTSAqbjsKKysJQklHTlVNICplOworKwlCSUdOVU0gKmQ7CisrCUJJR05VTSAqcDsKKysJQklHTlVNICpxOworKwlCSUdOVU0gKmRtcDE7CisrCUJJR05VTSAqZG1xMTsKKysJQklHTlVNICppcW1wOworK307CisrCisrc3RhdGljIHN0cnVjdCBteV9yc2Ffc3QgKnJzYV9jdXI7CisgCisgdm9pZAorIHByc2FlcnJvcihjb25zdCBjaGFyICpzLCAuLi4pCitAQCAtMjAxLDggKzIxMywxMiBAQCByc2Ffc3RhdGVtZW50OgorIAkJCQlyc2FfY3VyLT5pcW1wID0gTlVMTDsKKyAJCQl9CisgCQl9CistCQkkJCA9IHJzYV9jdXI7CistCQlyc2FfY3VyID0gUlNBX25ldygpOworKwkJUlNBICogcnNhX3RtcCA9IFJTQV9uZXcoKTsKKysJCVJTQV9zZXQwX2tleShyc2FfdG1wLCByc2FfY3VyLT5uLCByc2FfY3VyLT5lLCByc2FfY3VyLT5kKTsKKysJCVJTQV9zZXQwX2ZhY3RvcnMocnNhX3RtcCwgcnNhX2N1ci0+cCwgcnNhX2N1ci0+cSk7CisrCQlSU0Ffc2V0MF9jcnRfcGFyYW1zKHJzYV90bXAsIHJzYV9jdXItPmRtcDEsIHJzYV9jdXItPmRtcTEsIHJzYV9jdXItPmlxbXApOworKwkJJCQgPSByc2FfdG1wOworKwkJbWVtc2V0KHJzYV9jdXIsIDAsIHNpemVvZihzdHJ1Y3QgbXlfcnNhX3N0KSk7CisgCX0KKyAJfCBUQUdfUFVCIEJBU0U2NAorIAl7CitAQCAtMzUxLDEwICszNjcsMTIgQEAgcHJzYV9wYXJzZV9maWxlKHN0cnVjdCBnZW5saXN0ICpsaXN0LCBjaGFyICpmbmFtZSwgZW51bSByc2Ffa2V5X3R5cGUgdHlwZSkKKyAJcHJzYV9jdXJfZm5hbWUgPSBmbmFtZTsKKyAJcHJzYV9jdXJfbGlzdCA9IGxpc3Q7CisgCXByc2FfY3VyX3R5cGUgPSB0eXBlOworLQlyc2FfY3VyID0gUlNBX25ldygpOworKwlyc2FfY3VyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgbXlfcnNhX3N0KSk7CisrCW1lbXNldChyc2FfY3VyLCAwLCBzaXplb2Yoc3RydWN0IG15X3JzYV9zdCkpOworIAlyZXQgPSBwcnNhcGFyc2UoKTsKKyAJaWYgKHJzYV9jdXIpIHsKKy0JCVJTQV9mcmVlKHJzYV9jdXIpOworKwkJbWVtc2V0KHJzYV9jdXIsIDAsIHNpemVvZihzdHJ1Y3QgbXlfcnNhX3N0KSk7CisrCQlmcmVlKHJzYV9jdXIpOworIAkJcnNhX2N1ciA9IE5VTEw7CisgCX0KKyAJZmNsb3NlIChmcCk7CitkaWZmIC0tZ2l0IGEvc3JjL3JhY29vbi9yc2FsaXN0LmMgYi9zcmMvcmFjb29uL3JzYWxpc3QuYworaW5kZXggZjE1MmM4Mi4uOTZlODM2MyAxMDA2NDQKKy0tLSBhL3NyYy9yYWNvb24vcnNhbGlzdC5jCisrKysgYi9zcmMvcmFjb29uL3JzYWxpc3QuYworQEAgLTUyLDYgKzUyLDcgQEAKKyAjaW5jbHVkZSAiZ2VubGlzdC5oIgorICNpbmNsdWRlICJyZW1vdGVjb25mLmgiCisgI2luY2x1ZGUgImNyeXB0b19vcGVuc3NsLmgiCisrI2luY2x1ZGUgIm9wZW5zc2xfY29tcGF0LmgiCisgCisgI2lmbmRlZiBMSVNUX0ZJUlNUCisgI2RlZmluZSBMSVNUX0ZJUlNUKGhlYWQpICAgICAgICAoKGhlYWQpLT5saF9maXJzdCkKK0BAIC05OCw3ICs5OSw5IEBAIHJzYV9rZXlfZHVwKHN0cnVjdCByc2Ffa2V5ICprZXkpCisgCQlyZXR1cm4gTlVMTDsKKyAKKyAJaWYgKGtleS0+cnNhKSB7CistCQluZXctPnJzYSA9IGtleS0+cnNhLT5kICE9IE5VTEwgPyBSU0FQcml2YXRlS2V5X2R1cChrZXktPnJzYSkgOiBSU0FQdWJsaWNLZXlfZHVwKGtleS0+cnNhKTsKKysJCWNvbnN0IEJJR05VTSAqZDsKKysJCVJTQV9nZXQwX2tleShrZXktPnJzYSwgTlVMTCwgTlVMTCwgJmQpOworKwkJbmV3LT5yc2EgPSAoZCAhPSBOVUxMID8gUlNBUHJpdmF0ZUtleV9kdXAoa2V5LT5yc2EpIDogUlNBUHVibGljS2V5X2R1cChrZXktPnJzYSkpOworIAkJaWYgKG5ldy0+cnNhID09IE5VTEwpCisgCQkJZ290byBkdXBfZXJyb3I7CisgCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29sc18wLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXBzZWMtdG9vbHMvaXBzZWMtdG9vbHNfMC44LjIuYmIKaW5kZXggNWNiZWIxNS4uYTZkNDczYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHNlYy10b29scy9pcHNlYy10b29sc18wLjguMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwc2VjLXRvb2xzL2lwc2VjLXRvb2xzXzAuOC4yLmJiCkBAIC0yNSw2ICsyNSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1oZWFkZXItaXNzdWVzLWZvdW5kLXdpdGgtbXVzbC1saWJjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY2ZwYXJzZS1jbGVhci1tZW1vcnktZXF1YWwtdG8tc2l6ZS1vZi1hcnJheS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtQ1ZFLTIwMTYtMTAzOTYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWdjYzgtc3BlY2lmaWMtd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHNlYy10b29scy1hZGQtb3BlbnNzbC0xLjEtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNTNlYzE0YTBhM2VjZTY0ZTA5ZTVlMzRiMzM1MGI0MSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWI2YjM4NzE2ZTJmM2E4YTcyZjFmNTQ5Yzk0NDRjMmJjMjhkNTJjOTUzNjc5MjY5MDU2NGM3NGZlNzIyZjJkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vMDAwMS1Nb2RpZnktdGhlLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vMDAwMS1Nb2RpZnktdGhlLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IDdjM2RmZTQuLmQ3YjAyNjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtLzAwMDEtTW9kaWZ5LXRoZS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbS8wMDAxLU1vZGlmeS10aGUtTWFrZWZpbGUtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEsMTggKzEsMjIgQEAKLUZyb20gNTgyOTIxNzUxMTViYWU3YTRjMzYwMGQzMDIyZTU5ZWE1NzIxMzAyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppYW5jaHVhbiBXYW5nIDxqaWFuY2h1YW4ud2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMiBKYW4gMjAxNSAxNTo1MzoyMyArMDgwMAorRnJvbSA4MDEyMjQyNTcwMTU3ODhkM2FmZjAyNmJmMmFlMWNkODUzMWQ0ZmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjUgSnVsIDIwMTggMTM6MTI6MDQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gTW9kaWZ5IHRoZSBNYWtlZmlsZSBmb3IgY3Jvc3MgY29tcGlsZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+CisKK3VwZGF0ZSB0byB2ZXJzaW9uIDEuMjkKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgfCAyMyArKysrKystLS0tLS0tLS0tLS0tLS0tLQorIE1ha2VmaWxlICAgICAgICAgfCA5ICsrKystLS0tLQogIGxpYmlwdnMvTWFrZWZpbGUgfCAgMyArLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBlNGUwM2NjLi40NjFjMDIxIDEwMDY0NAoraW5kZXggOTFhMjk5MS4uOTA2MDg2ZCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTM1LDEwICszNSw5IEBAIEFSQ0gJCT0gJChzaGVsbCB1bmFtZSAtbSkKQEAgLTIzLDU3ICsyNywyOSBAQAogIElOQ0xVREUJCT0KICBTQklOCQk9ICQoQlVJTERfUk9PVCkvc2JpbgogLU1BTkRJUgkJPSB1c3IvbWFuCi0rTUFORElSCQk9IHVzci9zaGFyZS9tYW4KKytNQU5ESVIgICAgICAgICAgPSB1c3Ivc2hhcmUvbWFuCiAgTUFOCQk9ICQoQlVJTERfUk9PVCkvJChNQU5ESVIpL21hbjgKICBJTklUCQk9ICQoQlVJTERfUk9PVCkvZXRjL3JjLmQvaW5pdC5kCiAgTUtESVIJCT0gbWtkaXIKLUBAIC02MiwxNyArNjEsNyBAQCBSUE1CVUlMRCA9ICQoc2hlbGwJCQkJXAotIAkJZWNobyAiL2Jpbi9ycG0iOwkJXAotIAlmaSApCi0gCi0taWZlcSAoLCQoRk9SQ0VfR0VUT1BUKSkKLS1MSUJfU0VBUkNIID0gL2xpYjY0IC91c3IvbGliNjQgL3Vzci9sb2NhbC9saWI2NCAvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliCi0tUE9QVF9MSUIgPSAkKHNoZWxsIGZvciBpIGluICQoTElCX1NFQVJDSCk7IGRvIFwKLS0gIGlmIFsgLWYgJCRpL2xpYnBvcHQuYSBdOyB0aGVuIFwKLS0gICAgaWYgbm0gJCRpL2xpYnBvcHQuYSB8IGZncmVwIC1xIHBvcHRHZXRDb250ZXh0OyB0aGVuIFwKLS0JZWNobyAiLWxwb3B0IjsgXAotLQlicmVhazsgXAotLSAgICBmaTsgXAotLSAgZmk7IFwKLS1kb25lKQotLWVuZGlmCi0rUE9QVF9MSUIgPSAtbHBvcHQKLSAKLSBpZm5lcSAoLCQoUE9QVF9MSUIpKQotIFBPUFRfREVGSU5FID0gLURIQVZFX1BPUFQKLUBAIC04MSw3ICs3MCw3IEBAIGVuZGlmCi0gT0JKUwkJPSBpcHZzYWRtLm8gY29uZmlnX3N0cmVhbS5vIGR5bmFtaWNfYXJyYXkubwotIExJQlMJCT0gJChQT1BUX0xJQikKLSBpZm5lcSAoMCwkKEhBVkVfTkwpKQotLUxJQlMJCSs9IC1sbmwKLStMSUJTCQkrPSAtbG5sLTMgLWxubC1nZW5sLTMKLSBlbmRpZgotIERFRklORVMJCT0gLURWRVJTSU9OPVwiJChWRVJTSU9OKVwiIC1EU0NIRURVTEVSUz1cIiQoU0NIRURVTEVSUylcIiBcCi0gCQkgIC1EUEVfTElTVD1cIiQoUEVfTElTVClcIiAkKFBPUFRfREVGSU5FKQotQEAgLTkxLDEzICs4MCwxMyBAQCBERUZJTkVTCQkrPSAkKHNoZWxsIGlmIFsgISAtZiAuLi9pcF92cy5oIF07IHRoZW4JXAorQEAgLTgxLDEzICs4MCwxMyBAQCBERUZJTkVTCQkrPSAkKHNoZWxsIGlmIFsgISAtZiAuLi9pcF92cy5oIF07IHRoZW4JXAogIAogIC5QSE9OWQk9IGFsbCBjbGVhbiBpbnN0YWxsIGRpc3QgZGlzdGNsZWFuIHJwbSBycG1zCiAgCiAtYWxsOiAgICAgICAgICAgIGxpYnMgaXB2c2FkbQotK2FsbDogaXB2c2FkbQorK2FsbDogICAgICAgICAgICBpcHZzYWRtCiAgCiAgbGliczoKICAJCW1ha2UgLUMgbGliaXB2cwogIAogLWlwdnNhZG06CSQoT0JKUykgJChTVEFUSUNfTElCUykKIC0JCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAkXiAkKExJQlMpCi0raXB2c2FkbToJJChPQkpTKSBsaWJzCisraXB2c2FkbTogICAgICAgJChPQkpTKSBsaWJzCiArCQkkKENDKSAkKENGTEFHUykgLW8gJEAgJChPQkpTKSAkKFNUQVRJQ19MSUJTKSAkKExJQlMpCiAgCiAgaW5zdGFsbDogICAgICAgIGFsbAogIAkJaWYgWyAhIC1kICQoU0JJTikgXTsgdGhlbiAkKE1LRElSKSAtcCAkKFNCSU4pOyBmaQogZGlmZiAtLWdpdCBhL2xpYmlwdnMvTWFrZWZpbGUgYi9saWJpcHZzL01ha2VmaWxlCi1pbmRleCBhNTI3YTdmLi5iNzMwMGVjIDEwMDY0NAoraW5kZXggZjg0NWM4Yi4uZGFmYWIzMCAxMDA2NDQKIC0tLSBhL2xpYmlwdnMvTWFrZWZpbGUKICsrKyBiL2xpYmlwdnMvTWFrZWZpbGUKIEBAIC0xLDYgKzEsNSBAQApAQCAtODMsNyArNTksNyBAQAogIENGTEFHUwkJPSAtV2FsbCAtV3VudXNlZCAtV3N0cmljdC1wcm90b3R5cGVzIC1nIC1mUElDCiAgaWZuZXEgKDAsJChIQVZFX05MKSkKICBDRkxBR1MJCSs9IC1ETElCSVBWU19VU0VfTkwKLUBAIC0xOCw3ICsxNyw3IEBAIFNIQVJFRF9MSUIJPSBsaWJpcHZzLnNvCitAQCAtMzAsNyArMjksNyBAQCBTSEFSRURfTElCCT0gbGliaXB2cy5zbwogIGFsbDoJCSQoU1RBVElDX0xJQikgJChTSEFSRURfTElCKQogIAogICQoU1RBVElDX0xJQik6CWxpYmlwdnMubyBpcF92c19ubF9wb2xpY3kubwpAQCAtOTMsNSArNjksNSBAQAogICQoU0hBUkVEX0xJQik6CWxpYmlwdnMubyBpcF92c19ubF9wb2xpY3kubwogIAkJJChDQykgLXNoYXJlZCAtV2wsLXNvbmFtZSwkQCAtbyAkQCAkXgogLS0gCi0xLjkuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vMDAwMi1SZXBsYWNlLW5sX2hhbmRsZS10by1ubF9zb2NrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vMDAwMi1SZXBsYWNlLW5sX2hhbmRsZS10by1ubF9zb2NrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODk2ZDZkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtLzAwMDItUmVwbGFjZS1ubF9oYW5kbGUtdG8tbmxfc29jay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMjY4NjIxMzI1OWIxNWRmOWNmMWQ5NjljNWExNGQ2MmYxNGNmYmFhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppYW5jaHVhbiBXYW5nIDxqaWFuY2h1YW4ud2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA4IEphbiAyMDE1IDE3OjM3OjExICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZXBsYWNlIG5sX2hhbmRsZSB0byBubF9zb2NrLgotCi1UaGUgbmxfaGFuZGxlIHdhcyByZXBsYWNlIHdpdGggbmxfc29jayBpbiB0aGUgbGlibmwtMy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSmlhbmNodWFuIFdhbmcgPGppYW5jaHVhbi53YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJpcHZzL2xpYmlwdnMuYyB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliaXB2cy9saWJpcHZzLmMgYi9saWJpcHZzL2xpYmlwdnMuYwotaW5kZXggYTE1N2UxOC4uMjFhOWJmYSAxMDA2NDQKLS0tLSBhL2xpYmlwdnMvbGliaXB2cy5jCi0rKysgYi9saWJpcHZzL2xpYmlwdnMuYwotQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIHZvaWQqIGlwdnNfZnVuYyA9IE5VTEw7Ci0gc3RydWN0IGlwX3ZzX2dldGluZm8gaXB2c19pbmZvOwotIAotICNpZmRlZiBMSUJJUFZTX1VTRV9OTAotLXN0YXRpYyBzdHJ1Y3QgbmxfaGFuZGxlICpzb2NrID0gTlVMTDsKLStzdGF0aWMgc3RydWN0IG5sX3NvY2sgKnNvY2sgPSBOVUxMOwotIHN0YXRpYyBpbnQgZmFtaWx5LCB0cnlfbmwgPSAxOwotICNlbmRpZgotIAotQEAgLTczLDcgKzczLDcgQEAgaW50IGlwdnNfbmxfc2VuZF9tZXNzYWdlKHN0cnVjdCBubF9tc2cgKm1zZywgbmxfcmVjdm1zZ19tc2dfY2JfdCBmdW5jLCB2b2lkICphcmcKLSB7Ci0gCWludCBlcnIgPSBFSU5WQUw7Ci0gCi0tCXNvY2sgPSBubF9oYW5kbGVfYWxsb2MoKTsKLSsJc29jayA9IG5sX3NvY2tldF9hbGxvYygpOwotIAlpZiAoIXNvY2spIHsKLSAJCW5sbXNnX2ZyZWUobXNnKTsKLSAJCXJldHVybiAtMTsKLUBAIC04OCw3ICs4OCw3IEBAIGludCBpcHZzX25sX3NlbmRfbWVzc2FnZShzdHJ1Y3QgbmxfbXNnICptc2csIG5sX3JlY3Ztc2dfbXNnX2NiX3QgZnVuYywgdm9pZCAqYXJnCi0gCi0gCS8qIFRvIHRlc3QgY29ubmVjdGlvbnMgYW5kIHNldCB0aGUgZmFtaWx5ICovCi0gCWlmIChtc2cgPT0gTlVMTCkgewotLQkJbmxfaGFuZGxlX2Rlc3Ryb3koc29jayk7Ci0rCQlubF9zb2NrZXRfZnJlZShzb2NrKTsKLSAJCXNvY2sgPSBOVUxMOwotIAkJcmV0dXJuIDA7Ci0gCX0KLUBAIC0xMDQsMTIgKzEwNCwxMiBAQCBpbnQgaXB2c19ubF9zZW5kX21lc3NhZ2Uoc3RydWN0IG5sX21zZyAqbXNnLCBubF9yZWN2bXNnX21zZ19jYl90IGZ1bmMsIHZvaWQgKmFyZwotIAotIAlubG1zZ19mcmVlKG1zZyk7Ci0gCi0tCW5sX2hhbmRsZV9kZXN0cm95KHNvY2spOwotKwlubF9zb2NrZXRfZnJlZShzb2NrKTsKLSAKLSAJcmV0dXJuIDA7Ci0gCi0gZmFpbF9nZW5sOgotLQlubF9oYW5kbGVfZGVzdHJveShzb2NrKTsKLSsJbmxfc29ja2V0X2ZyZWUoc29jayk7Ci0gCXNvY2sgPSBOVUxMOwotIAlubG1zZ19mcmVlKG1zZyk7Ci0gCWVycm5vID0gZXJyOwotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtL21ha2VmaWxlLWFkZC1sZGZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKaW5kZXggMWJmMWVlZC4uYTJjNTIzNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG0vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2gKQEAgLTEsMTkgKzEsMzMgQEAKLUFkZCBMREZMQUdTIHZhcmlhYmxlIHRvIE1ha2VmaWxlLCBtYWtlIHN1cmUgdGhlIGV4dHJhIGxpbmtlciBmbGFncyBjYW4gYmUgcGFzc2VkLgorRnJvbSA4YWZmMWU5NjVlYzE3MjYyZjNhNWIzNzZmN2ViM2UwNTNkODE5MDVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTg6MTg6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIExERkxBR1MgdmFyaWFibGUgdG8gTWFrZWZpbGUsIG1ha2Ugc3VyZSB0aGUgZXh0cmEgbGlua2VyCisgZmxhZ3MgY2FuIGJlIHBhc3NlZC4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIAorVXBkYXRlIHRvIHZlcnNpb24gMS4yOQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA0NjFjMDIxLi44YmM5Y2RlIDEwMDY0NAoraW5kZXggZjI5YmJhZS4uODFiZWI1YSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTg2LDcgKzg2LDcgQEAgbGliczoKICAJCW1ha2UgLUMgbGliaXB2cwogIAotIGlwdnNhZG06CSQoT0JKUykgbGlicworIGlwdnNhZG06ICAgICAgICQoT0JKUykgbGlicwogLQkJJChDQykgJChDRkxBR1MpIC1vICRAICQoT0JKUykgJChTVEFUSUNfTElCUykgJChMSUJTKQogKwkJJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLW8gJEAgJChPQkpTKSAkKFNUQVRJQ19MSUJTKSAkKExJQlMpCiAgCiAgaW5zdGFsbDogICAgICAgIGFsbAogIAkJaWYgWyAhIC1kICQoU0JJTikgXTsgdGhlbiAkKE1LRElSKSAtcCAkKFNCSU4pOyBmaQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9pcHZzYWRtL2lwdnNhZG1fMS4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1YTlmNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBWaXJ0dWFsIFNlcnZlciBhZG1pbmlzdHJhdGlvbiBVdGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC12cy5vcmcvc29mdHdhcmUvaW5kZXguaHRtbCIKLURFU0NSSVBUSU9OID0gIklwdnNhZG0gIGlzICB1c2VkICB0byBzZXQgdXAsIG1haW50YWluIG9yIGluc3BlY3QgdGhlIHZpcnR1YWwgc2VydmVyIFwKLXRhYmxlIGluIHRoZSBMaW51eCBrZXJuZWwuIFRoZSBMaW51eCBWaXJ0dWFsICBTZXJ2ZXIgIGNhbiAgYmUgIHVzZWQgIHRvIFwKLWJ1aWxkICBzY2FsYWJsZSAgbmV0d29yayAgc2VydmljZXMgIGJhc2VkICBvbiAgYSBjbHVzdGVyIG9mIHR3byBvciBtb3JlIG5vZGVzLiBcCi1UaGUgYWN0aXZlIG5vZGUgb2YgdGhlIGNsdXN0ZXIgcmVkaXJlY3RzIHNlcnZpY2UgcmVxdWVzdHMgIHRvICBhIFwKLWNvbGxlY3Rpb24gIG9mICBzZXJ2ZXIgIGhvc3RzICB0aGF0IHdpbGwgYWN0dWFsbHkgcGVyZm9ybSB0aGUgc2VydmljZXMuIFwKLVN1cHBvcnRlZCBmZWF0dXJlcyBpbmNsdWRlIHR3byBwcm90b2NvbHMgKFRDUCBhbmQgVURQKSwgIHRocmVlICBwYWNrZXQtZm9yd2FyZGluZyBcCi1tZXRob2RzIChOQVQsIHR1bm5lbGluZywgYW5kIGRpcmVjdCByb3V0aW5nKSwgYW5kIGVpZ2h0IGxvYWQgYmFsYW5jaW5nIGFsZ29yaXRobXMgXAotKHJvdW5kIHJvYmluLCB3ZWlnaHRlZCByb3VuZCByb2JpbiwgIGxlYXN0LWNvbm5lYy10aW9uLCB3ZWlnaHRlZCBsZWFzdC1jb25uZWN0aW9uLCBcCi1sb2NhbGl0eS1iYXNlZCAgbGVhc3QtY29ubmVjdGlvbiwgbG9jYWxpdHktYmFzZWQgbGVhc3QtY29ubmVjdGlvbiB3aXRoIHJlcGxpY2F0aW9uLCBcCi1kZXN0aW5hdGlvbi1oYXNoaW5nLCBhbmQgc291cmNlLWhhc2hpbmcpLiIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00MDtlbmRsaW5lPTU2O21kNT1hNTRjYmEzN2I2NDkyNGFhNTAwODg4MTYwNzk0Mjg5MiIKLQotREVQRU5EUyArPSAibGlibmwgcG9wdCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpbnV4dmlydHVhbHNlcnZlci5vcmcvc29mdHdhcmUva2VybmVsLTIuNi8ke0JQfS50YXIuZ3ogXAotICAgICAgICBmaWxlOi8vMDAwMS1Nb2RpZnktdGhlLU1ha2VmaWxlLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDItUmVwbGFjZS1ubF9oYW5kbGUtdG8tbmxfc29jay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly8wMDAzLWlwdnNhZG0tcmVtb3ZlLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYWMzYmEzZjYyY2Q0ZGVhMmRhMzUzYWVkZGQzNTNhOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZDZjNDZmZWNiMWM1MzJhODkyNjE2YjQ0NDVjNzNiNzE3MzBlODc5MGQ1NjMwZjYwMjY5ZmQ5Y2JlZTBlYjJkIgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgXAotICAgIENDPSIke0NDfSAtSSR7U1RBR0lOR19JTkNESVJ9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlibmwzIC1MJHtTVEFHSU5HX0xJQkRJUn0iIFwKLSAgICBhbGwKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlICdCVUlMRF9ST09UPSR7RH0nIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvaXB2c2FkbS9pcHZzYWRtXzEuMjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmM2MxNmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2lwdnNhZG0vaXB2c2FkbV8xLjI5LmJiCkBAIC0wLDAgKzEsNDEgQEAKK1NVTU1BUlkgPSAiTGludXggVmlydHVhbCBTZXJ2ZXIgYWRtaW5pc3RyYXRpb24gVXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtdnMub3JnL3NvZnR3YXJlL2luZGV4Lmh0bWwiCitERVNDUklQVElPTiA9ICJJcHZzYWRtICBpcyAgdXNlZCAgdG8gc2V0IHVwLCBtYWludGFpbiBvciBpbnNwZWN0IHRoZSB2aXJ0dWFsIHNlcnZlciBcCit0YWJsZSBpbiB0aGUgTGludXgga2VybmVsLiBUaGUgTGludXggVmlydHVhbCAgU2VydmVyICBjYW4gIGJlICB1c2VkICB0byBcCitidWlsZCAgc2NhbGFibGUgIG5ldHdvcmsgIHNlcnZpY2VzICBiYXNlZCAgb24gIGEgY2x1c3RlciBvZiB0d28gb3IgbW9yZSBub2Rlcy4gXAorVGhlIGFjdGl2ZSBub2RlIG9mIHRoZSBjbHVzdGVyIHJlZGlyZWN0cyBzZXJ2aWNlIHJlcXVlc3RzICB0byAgYSBcCitjb2xsZWN0aW9uICBvZiAgc2VydmVyICBob3N0cyAgdGhhdCB3aWxsIGFjdHVhbGx5IHBlcmZvcm0gdGhlIHNlcnZpY2VzLiBcCitTdXBwb3J0ZWQgZmVhdHVyZXMgaW5jbHVkZSB0d28gcHJvdG9jb2xzIChUQ1AgYW5kIFVEUCksICB0aHJlZSAgcGFja2V0LWZvcndhcmRpbmcgXAorbWV0aG9kcyAoTkFULCB0dW5uZWxpbmcsIGFuZCBkaXJlY3Qgcm91dGluZyksIGFuZCBlaWdodCBsb2FkIGJhbGFuY2luZyBhbGdvcml0aG1zIFwKKyhyb3VuZCByb2Jpbiwgd2VpZ2h0ZWQgcm91bmQgcm9iaW4sICBsZWFzdC1jb25uZWMtdGlvbiwgd2VpZ2h0ZWQgbGVhc3QtY29ubmVjdGlvbiwgXAorbG9jYWxpdHktYmFzZWQgIGxlYXN0LWNvbm5lY3Rpb24sIGxvY2FsaXR5LWJhc2VkIGxlYXN0LWNvbm5lY3Rpb24gd2l0aCByZXBsaWNhdGlvbiwgXAorZGVzdGluYXRpb24taGFzaGluZywgYW5kIHNvdXJjZS1oYXNoaW5nKS4iCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDA7ZW5kbGluZT01NjttZDU9YjRlNDAwNjlmMTU1OThkMGUzZmUyYWExNzdlNWVjNzciCisKK0RFUEVORFMgKz0gImxpYm5sIHBvcHQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2lwdnNhZG0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgZmlsZTovLzAwMDEtTW9kaWZ5LXRoZS1NYWtlZmlsZS1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAzLWlwdnNhZG0tcmVtb3ZlLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OGIzNTAzMGI0NzY2YjNlNDRhZDE1YWFjZGVmNjVjNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTdmNWNkNDU5YzNlZWY4MWVkMGNhMzJlNTNiZjMyMGVkNmIxMzJmZTdlZDZlYTVlNDRhYTZiMWZiZDJhN2RlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwvaXB2c2FkbSIKKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlIFwKKyAgICBDQz0iJHtDQ30gLUkke1NUQUdJTkdfSU5DRElSfSAtSSR7U1RBR0lOR19JTkNESVJ9L2xpYm5sMyAtTCR7U1RBR0lOR19MSUJESVJ9IiBcCisgICAgYWxsCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgc2VkIC1pIC1lICJzO1NCSU5cdFx0PSBcJChCVUlMRF9ST09UKS9zYmluO1NCSU5cdFx0PSBcJChCVUlMRF9ST09UKS8kYmFzZV9zYmluZGlyOyIgJHtTfS9NYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgJ0JVSUxEX1JPT1Q9JHtEfScgaW5zdGFsbAorfQorCitpbmhlcml0IHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiLzAwMDEtbGlibGRiLWZpeC1jb25maWctZXJyb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvMDAwMS1saWJsZGItZml4LWNvbmZpZy1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODE4ZDU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiLzAwMDEtbGlibGRiLWZpeC1jb25maWctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSBiYzRmZjdlMzdjZTEyMGMyNTdlNTJhODFmZTM0NzU0OTlkZmQyNTczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTA6MTA6MjQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlibGRiOiBmaXggY29uZmlnIGVycm9yCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyB3c2NyaXB0IHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0CitpbmRleCBiMGFmN2I2Li44YWQ5Zjk2IDEwMDY0NAorLS0tIGEvd3NjcmlwdAorKysrIGIvd3NjcmlwdAorQEAgLTExNSw0MCArMTE1LDQwIEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seWlmPSd0YWxsb2MgdGRiIHRldmVudCBweWxkYi11dGlsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWVkX2RlcHM9J3JlcGxhY2UgdGFsbG9jIHRkYiB0ZXZlbnQnKToKKyAgICAgICAgICAgICAgICAgY29uZi5kZWZpbmUoJ1VTSU5HX1NZU1RFTV9MREInLCAxKQorKyAgICBpZiBub3QgT3B0aW9ucy5vcHRpb25zLndpdGhvdXRfbGRiX2xtZGI6CisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19DT0RFKCdyZXR1cm4gIShzaXplb2Yoc2l6ZV90KSA+PSA4KScsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIQVZFXzY0X0JJVF9TSVpFX1RfRk9SX0xNREIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlPVRydWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nQ2hlY2tpbmcgZm9yIGEgNjQtYml0IGhvc3QgdG8gJworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VwcG9ydCBsbWRiJyk6CisrICAgICAgICAgICAgTG9ncy53YXJuKCItLXdpdGhvdXQtbGRiLWxtZGIgaW1wbGllZCBhcyB0aGlzICIKKysgICAgICAgICAgICAgICAgICAgICAgImhvc3QgaXMgbm90IDY0LWJpdCIpCisrCisrICAgICAgICAgICAgaWYgbm90IGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiIGFuZCBcCisrICAgICAgICAgICAgICAgbm90IE9wdGlvbnMub3B0aW9ucy53aXRob3V0X2FkX2RjIGFuZCBcCisrICAgICAgICAgICAgICAgY29uZi5DT05GSUdfR0VUKCdFTkFCTEVfU0VMRlRFU1QnKToKKysgICAgICAgICAgICAgICAgTG9ncy53YXJuKCJOT1RFOiBTb21lIEFEIERDIHBhcnRzIG9mIHNlbGZ0ZXN0IHdpbGwgZmFpbCIpCisgCistICAgIGlmIG5vdCBjb25mLkNIRUNLX0NPREUoJ3JldHVybiAhKHNpemVvZihzaXplX3QpID49IDgpJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAiSEFWRV82NF9CSVRfU0laRV9UX0ZPUl9MTURCIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlPVRydWUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdDaGVja2luZyBmb3IgYSA2NC1iaXQgaG9zdCB0byAnCistICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnQgbG1kYicpOgorLSAgICAgICAgTG9ncy53YXJuKCItLXdpdGhvdXQtbGRiLWxtZGIgaW1wbGllZCBhcyB0aGlzICIKKy0gICAgICAgICAgICAgICAgICAiaG9zdCBpcyBub3QgNjQtYml0IikKKy0KKy0gICAgICAgIGlmIG5vdCBjb25mLmVudi5zdGFuZGFsb25lX2xkYiBhbmQgXAorLSAgICAgICAgICAgbm90IE9wdGlvbnMub3B0aW9ucy53aXRob3V0X2FkX2RjIGFuZCBcCistICAgICAgICAgICBjb25mLkNPTkZJR19HRVQoJ0VOQUJMRV9TRUxGVEVTVCcpOgorLSAgICAgICAgICAgIExvZ3Mud2FybigiTk9URTogU29tZSBBRCBEQyBwYXJ0cyBvZiBzZWxmdGVzdCB3aWxsIGZhaWwiKQorLQorLSAgICAgICAgY29uZi5lbnYuUkVRVUlSRV9MTURCID0gRmFsc2UKKy0gICAgZWxzZToKKy0gICAgICAgIGlmIGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiOgorLSAgICAgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy53aXRob3V0X2xkYl9sbWRiOgorLSAgICAgICAgICAgICAgICBjb25mLmVudi5SRVFVSVJFX0xNREIgPSBGYWxzZQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIGNvbmYuZW52LlJFUVVJUkVfTE1EQiA9IFRydWUKKy0gICAgICAgIGVsaWYgT3B0aW9ucy5vcHRpb25zLndpdGhvdXRfYWRfZGM6CisgICAgICAgICAgICAgY29uZi5lbnYuUkVRVUlSRV9MTURCID0gRmFsc2UKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgaWYgT3B0aW9ucy5vcHRpb25zLndpdGhvdXRfbGRiX2xtZGI6CistICAgICAgICAgICAgICAgIGlmIG5vdCBPcHRpb25zLm9wdGlvbnMud2l0aG91dF9hZF9kYyBhbmQgXAorLSAgICAgICAgICAgICAgICAgICBjb25mLkNPTkZJR19HRVQoJ0VOQUJMRV9TRUxGVEVTVCcpOgorLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVXRpbHMuV2FmRXJyb3IoJy0td2l0aG91dC1sZGItbG1kYiBjb25mbGljdHMgJworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGggLS1lbmFibGUtc2VsZnRlc3Qgd2hpbGUgJworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkaW5nIHRoZSBBRCBEQycpCistCisrICAgICAgICAgICAgaWYgY29uZi5lbnYuc3RhbmRhbG9uZV9sZGI6CisrICAgICAgICAgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy53aXRob3V0X2xkYl9sbWRiOgorKyAgICAgICAgICAgICAgICAgICAgY29uZi5lbnYuUkVRVUlSRV9MTURCID0gRmFsc2UKKysgICAgICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgICAgIGNvbmYuZW52LlJFUVVJUkVfTE1EQiA9IFRydWUKKysgICAgICAgICAgICBlbGlmIE9wdGlvbnMub3B0aW9ucy53aXRob3V0X2FkX2RjOgorICAgICAgICAgICAgICAgICBjb25mLmVudi5SRVFVSVJFX0xNREIgPSBGYWxzZQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIGNvbmYuZW52LlJFUVVJUkVfTE1EQiA9IFRydWUKKysgICAgICAgICAgICAgICAgaWYgT3B0aW9ucy5vcHRpb25zLndpdGhvdXRfbGRiX2xtZGI6CisrICAgICAgICAgICAgICAgICAgICBpZiBub3QgT3B0aW9ucy5vcHRpb25zLndpdGhvdXRfYWRfZGMgYW5kIFwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbmYuQ09ORklHX0dFVCgnRU5BQkxFX1NFTEZURVNUJyk6CisrICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVXRpbHMuV2FmRXJyb3IoJy0td2l0aG91dC1sZGItbG1kYiBjb25mbGljdHMgJworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aXRoIC0tZW5hYmxlLXNlbGZ0ZXN0IHdoaWxlICcKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnVpbGRpbmcgdGhlIEFEIERDJykKKysKKysgICAgICAgICAgICAgICAgICAgIGNvbmYuZW52LlJFUVVJUkVfTE1EQiA9IEZhbHNlCisrICAgICAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgICAgICBjb25mLmVudi5SRVFVSVJFX0xNREIgPSBUcnVlCisgCisgCisgICAgIGlmIGNvbmYuQ09ORklHX1NFVCgnVVNJTkdfU1lTVEVNX0xEQicpOgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvYXZvaWQtb3BlbmxkYXAtdW5sZXNzLXdhbnRlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9hdm9pZC1vcGVubGRhcC11bmxlc3Mtd2FudGVkLnBhdGNoCmluZGV4IDhhYjA5NGYuLmIzMGFmZWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9hdm9pZC1vcGVubGRhcC11bmxlc3Mtd2FudGVkLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9hdm9pZC1vcGVubGRhcC11bmxlc3Mtd2FudGVkLnBhdGNoCkBAIC0xLDYgKzEsMTYgQEAKLS0tLSBhL3dzY3JpcHQJMjAxNS0xMS0xOCAxMjo0MzozMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL3dzY3JpcHQJMjAxNS0xMS0xOCAxMjo0NjoyNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC01OCw5ICs1OCw3IEBACitGcm9tIDYzNTcwYjk4ZWY2M2M5MWQ4NTA4NDc4ZmNiZTZiODljOTBjODM5OGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHJlaHNhY2tAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxOSBOb3YgMjAxNSAyMDo0NTo1NiArMDEwMAorCistLS0KKyB3c2NyaXB0IHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKK2luZGV4IGU3YzA1ZDIuLjE2MzM1OTMgMTAwNjQ0CistLS0gYS93c2NyaXB0CisrKysgYi93c2NyaXB0CitAQCAtMTYxLDkgKzE2MSw3IEBAIGRlZiBjb25maWd1cmUoY29uZik6CiAgICAgIGlmIGNvbmYuZW52LnN0YW5kYWxvbmVfbGRiOgogICAgICAgICAgY29uZi5DSEVDS19YU0xUUFJPQ19NQU5QQUdFUygpCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2gKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBmZGQzMTJjLi5lZTQ5MzZhCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEsMTIgKzEsMjEgQEAKK0Zyb20gZjRjZGEzYTcxMzExZTQ0OTZiNzI1YmM1ZjQ2YWY5MzQxM2VjN2ExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAxNyBKdWwgMjAxNSAxMTo1ODo0OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBsaWJsZGI6IGFkZCBuZXcgcmVjaXBlCisKIFNvbWUgbW9kdWxlcyBzdWNoIGFzIGR5bmFtaWMgbGlicmFyeSBtYXliZSBjYW5uJ3QgYmUgaW1wb3J0ZWQgd2hpbGUgY3Jvc3MgY29tcGlsZSwKIHdlIGp1c3QgY2hlY2sgd2hldGhlciBkb2VzIHRoZSBtb2R1bGUgZXhpc3QuCiAKIFNpZ25lZC1vZmYtYnk6IEJpYW4gTmFpbWVuZyA8Ymlhbm5tQGNuLmZ1aml0c3UuY29tPgogCi1JbmRleDogbGRiLTEuMS4yNi9idWlsZHRvb2xzL3dhZnNhbWJhL3NhbWJhX2J1bmRsZWQucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsZGItMS4xLjI2Lm9yaWcvYnVpbGR0b29scy93YWZzYW1iYS9zYW1iYV9idW5kbGVkLnB5Ci0rKysgbGRiLTEuMS4yNi9idWlsZHRvb2xzL3dhZnNhbWJhL3NhbWJhX2J1bmRsZWQucHkKKy0tLQorIGJ1aWxkdG9vbHMvd2Fmc2FtYmEvc2FtYmFfYnVuZGxlZC5weSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZHRvb2xzL3dhZnNhbWJhL3NhbWJhX2J1bmRsZWQucHkgYi9idWlsZHRvb2xzL3dhZnNhbWJhL3NhbWJhX2J1bmRsZWQucHkKK2luZGV4IDI1M2Q2MDQuLjM5OGNjNmEgMTAwNjQ0CistLS0gYS9idWlsZHRvb2xzL3dhZnNhbWJhL3NhbWJhX2J1bmRsZWQucHkKKysrKyBiL2J1aWxkdG9vbHMvd2Fmc2FtYmEvc2FtYmFfYnVuZGxlZC5weQogQEAgLTIsNiArMiw3IEBACiAgCiAgaW1wb3J0IHN5cwpAQCAtMTUsNyArMjQsNyBAQAogIGZyb20gQ29uZmlndXJlIGltcG9ydCBjb25mCiAgZnJvbSBzYW1iYV91dGlscyBpbXBvcnQgVE9fTElTVAogIAotQEAgLTIzMCwxNyArMjMxLDMyIEBAIGRlZiBDSEVDS19CVU5ETEVEX1NZU1RFTV9QWVRIT04oY29uZiwgbGkKK0BAIC0yNDksMTcgKzI1MCwzMiBAQCBkZWYgQ0hFQ0tfQlVORExFRF9TWVNURU1fUFlUSE9OKGNvbmYsIGxpYm5hbWUsIG1vZHVsZW5hbWUsIG1pbnZlcnNpb249JzAuMC4wJyk6CiAgICAgICMgdmVyc2lvbnMKICAgICAgbWludmVyc2lvbiA9IG1pbmltdW1fbGlicmFyeV92ZXJzaW9uKGNvbmYsIGxpYm5hbWUsIG1pbnZlcnNpb24pCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvbGlibGRiLWZpeC1tdXNsLWxpYmMtY29uZmxpY3QtdHlwZS1lcnJvci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9saWJsZGItZml4LW11c2wtbGliYy1jb25mbGljdC10eXBlLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NGZhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvbGlibGRiLWZpeC1tdXNsLWxpYmMtY29uZmxpY3QtdHlwZS1lcnJvci5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDViZDdiNWQwNDQzNWJkNTkzMzQ5ODI1OTczY2UzMjI5MGY1ZjYwNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNSBKdWwgMjAxOCAwOTo1NToyNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBsaWJsZGI6IGZpeCBtdXNsIGxpYmMgY29uZmxpY3RpbmcgdHlwZXMgZXJyb3IKKworL3RoaXJkX3BhcnR5L2Ntb2NrYS9jbW9ja2EuaDoxMjY6Mjg6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ3VpbnRwdHJfdCcKKyAgICAgICAgICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgordXNlIF9fREVGSU5FRF91aW50cHRyX3QgaW4gYWxsdHlwZXMuaCB0byBjaGVjayBpZiB1aW50cHRyIGFscmVhZHkgZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRoaXJkX3BhcnR5L2Ntb2NrYS9jbW9ja2EuaCB8IDcgKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9jbW9ja2EvY21vY2thLmggYi90aGlyZF9wYXJ0eS9jbW9ja2EvY21vY2thLmgKK2luZGV4IDRmZDgyYTkuLjU0NDNhMDggMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9jbW9ja2EvY21vY2thLmgKKysrKyBiL3RoaXJkX3BhcnR5L2Ntb2NrYS9jbW9ja2EuaAorQEAgLTExMCw3ICsxMTAsNyBAQCB0eXBlZGVmIHVpbnRtYXhfdCBMYXJnZXN0SW50ZWdyYWxUeXBlOworICAgICAoKExhcmdlc3RJbnRlZ3JhbFR5cGUpKHZhbHVlKSkKKyAKKyAvKiBTbWFsbGVzdCBpbnRlZ3JhbCB0eXBlIGNhcGFibGUgb2YgaG9sZGluZyBhIHBvaW50ZXIuICovCistI2lmICFkZWZpbmVkKF9VSU5UUFRSX1QpICYmICFkZWZpbmVkKF9VSU5UUFRSX1RfREVGSU5FRCkKKysjaWYgIWRlZmluZWQoX19ERUZJTkVEX3VpbnRwdHJfdCkgCisgIyBpZiBkZWZpbmVkKF9XSU4zMikKKyAgICAgLyogV0lOMzIgaXMgYW4gSUxQMzIgcGxhdGZvcm0gKi8KKyAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludHB0cl90OworQEAgLTEzNCw5ICsxMzQsOCBAQCB0eXBlZGVmIHVpbnRtYXhfdCBMYXJnZXN0SW50ZWdyYWxUeXBlOworICMgIGVuZGlmIC8qIF9fV09SRFNJWkUgKi8KKyAjIGVuZGlmIC8qIF9XSU4zMiAqLworIAorLSMgZGVmaW5lIF9VSU5UUFRSX1QKKy0jIGRlZmluZSBfVUlOVFBUUl9UX0RFRklORUQKKy0jZW5kaWYgLyogIWRlZmluZWQoX1VJTlRQVFJfVCkgfHwgIWRlZmluZWQoX1VJTlRQVFJfVF9ERUZJTkVEKSAqLworKyMgZGVmaW5lIF9fREVGSU5FRF91aW50cHRyX3QKKysjZW5kaWYgLyogIWRlZmluZWQoX19ERUZJTkVEX3VpbnRwdHJfdCkgCisgCisgLyogUGVyZm9ybSBhbiB1bnNpZ25lZCBjYXN0IHRvIHVpbnRwdHJfdC4gKi8KKyAjZGVmaW5lIGNhc3RfdG9fcG9pbnRlcl9pbnRlZ3JhbF90eXBlKHZhbHVlKSBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9saWJsZGItZml4LW11c2wtbGliYy11bmtvd24tdHlwZS1lcnJvci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9saWJsZGItZml4LW11c2wtbGliYy11bmtvd24tdHlwZS1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGU3ZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiL2xpYmxkYi1maXgtbXVzbC1saWJjLXVua293bi10eXBlLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZDkwNTM0NDY5YzVjNDNiZjJhOTdlNTY5OGE1ZGRiNGI3NDcxZjkyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDEwOjUzOjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmxkYjogZml4IG11c2wgbGliYyB1bmtvb3duIHR5cGUgZXJyb3IKKwordGV2ZW50Lmg6MTQ0MDo4OiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3BpZF90JzsgZGlkIHlvdSBtZWFuICdkaXZfdCc/CisgICAgICAgIHBpZF90ICpwaWQsCisgICAgICAgICBefn5+fgorICAgICAgICAgZGl2X3QKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi90ZXZlbnQvdGV2ZW50LmggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL3RldmVudC90ZXZlbnQuaCBiL2xpYi90ZXZlbnQvdGV2ZW50LmgKK2luZGV4IGFhNmZlMGQuLjI1NzI2OTYgMTAwNjQ0CistLS0gYS9saWIvdGV2ZW50L3RldmVudC5oCisrKysgYi9saWIvdGV2ZW50L3RldmVudC5oCitAQCAtMzIsNiArMzIsOCBAQAorICNpbmNsdWRlIDx0YWxsb2MuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyBzdHJ1Y3QgdGV2ZW50X2NvbnRleHQ7Cisgc3RydWN0IHRldmVudF9vcHM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9vcHRpb25zLTEuMy4xLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiL29wdGlvbnMtMS4zLjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZTI1M2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiL29wdGlvbnMtMS4zLjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotRnJvbSBhNGRhM2FiNGQ3NjAxM2FhYTczMWQ0M2Q1MmNjY2ExZWJkMzdjMzk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjEgU2VwIDIwMTYgMTA6MDY6MzkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzFdIGxkYjogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciBwYWNrYWdlcwotCi1BZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6Ci0gLSBhY2wKLSAtIGF0dHIKLSAtIGxpYmFpbwotIC0gbGliYnNkCi0gLSBsaWJjYXAKLSAtIHZhbGdyaW5kCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UgZGV0ZXJtaW5pc3RpYyBidWlsZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSB8ICA2ICsrLQotIGxpYi9yZXBsYWNlL3dzY3JpcHQgICAgICAgICAgICAgICAgICB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIHdzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwotIDMgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUgYi9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLWluZGV4IDIwMzU0NzQuLjEwZjlhZTcgMTAwNjQ0Ci0tLS0gYS9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLSsrKyBiL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotQEAgLTEsNiArMSwxMCBAQAotICMhL3Vzci9iaW4vZW52IHB5dGhvbgotIAotLWNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0raW1wb3J0IE9wdGlvbnMKLSsKLStpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKLSsKLSBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwd25hbV9yIGdldHB3dWlkX3IgZ2V0cHdlbnRfcicpCi0gCi0gIyBzb2xhcmlzIHZhcmllbnRzIG9mIGdldFhYZW50X3IKLWRpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAotaW5kZXggMmY5NGQ0OS4uNjhiMmQzYSAxMDA2NDQKLS0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKLSsrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLUBAIC0yMyw2ICsyMyw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICAgb3B0LlBSSVZBVEVfRVhURU5TSU9OX0RFRkFVTFQoJycpCi0gICAgIG9wdC5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKLSAKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hY2wnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhY2wiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2FjbCcpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYWNsJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGFjbCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2FjbCcsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYXR0cicsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGF0dHIiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2F0dHInKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWF0dHInLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYXR0ciIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2F0dHInLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmFpbycsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmFpbyIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYWlvJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJhaW8nLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYWlvIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYWlvJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJic2QnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJic2QiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYnNkJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmJzZCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmJzZCcsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliY2FwJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliY2FwIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmNhcCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJjYXAiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJjYXAnLCBkZWZhdWx0PUZhbHNlKQotKwotIEBVdGlscy5ydW5fb25jZQotIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCi1AQCAtMzIsMTIgKzY3LDI1IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuREVGSU5FKCdIQVZFX0xJQlJFUExBQ0UnLCAxKQotICAgICBjb25mLkRFRklORSgnTElCUkVQTEFDRV9ORVRXT1JLX0NIRUNLUycsIDEpCi0gCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGFjbC9saWJhY2wuaCBjb21wYXQuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIGF0dHIveGF0dHIuaCBjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggY29tcGF0LmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2NvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93Lmggc3lzL2FjbC5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIGF0dHIvYXR0cmlidXRlcy5oIHN5cy9jYXBhYmlsaXR5Lmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvYXR0cmlidXRlcy5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYWNsOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggc3lzL2FjbC5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hdHRyOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL2F0dHJpYnV0ZXMuaCBhdHRyL3hhdHRyLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmFpbzoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKLSsgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0rCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQotQEAgLTczLDcgKzEyMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCi0gCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX3ZhbGdyaW5kOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCi0rCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCi1AQCAtMjY2LDIyICszMTYsMjAgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKLSAKLSAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCi0gCi0tICAgIHN0cmxjcHlfaW5fYnNkID0gRmFsc2UKLS0KLS0gICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6Ci0tICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpOgotLSAgICAgICAgICAgIHN0cmxjcHlfaW5fYnNkID0gVHJ1ZQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGVfaW5pdCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotLQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJic2Q6Ci0rICAgICAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0Ci0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCi0rICAgICAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgotKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlX2luaXQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLSsKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKLSsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKLSAKLSAgICAgY29uZi5DSEVDS19DT0RFKCcnJwotICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWNyZWQgY3JlZDsKLUBAIC02MzIsNyArNjgwLDcgQEAgcmVtb3ZlZWEgc2V0ZWEKLSAgICAgIyBsb29rIGZvciBhIG1ldGhvZCBvZiBmaW5kaW5nIHRoZSBsaXN0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcwotICAgICBmb3IgbWV0aG9kIGluIFsnSEFWRV9JRkFDRV9HRVRJRkFERFJTJywgJ0hBVkVfSUZBQ0VfQUlYJywgJ0hBVkVfSUZBQ0VfSUZDT05GJywgJ0hBVkVfSUZBQ0VfSUZSRVEnXToKLSAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcnCi0tICAgICAgICBpZiBzdHJsY3B5X2luX2JzZDoKLSsgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYnNkOgotICAgICAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcgYnNkJwotICAgICAgICAgaWYgY29uZi5DSEVDS19DT0RFKCcnJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkZWZpbmUgJXMgMQotZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCA4YWU1YmUzLi5hMTc4Y2M0IDEwMDY0NAotLS0tIGEvd3NjcmlwdAotKysrIGIvd3NjcmlwdAotQEAgLTMxLDYgKzMxLDEzIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgotICAgICBvcHQuUkVDVVJTRSgnbGliL3JlcGxhY2UnKQotICAgICBvcHQudG9vbF9vcHRpb25zKCdweXRob24nKSAjIG9wdGlvbnMgZm9yIGRpc2FibGluZyBweWMgb3IgcHlvIGNvbXBpbGF0aW9uCi0gCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdmFsZ3JpbmQnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiZW5hYmxlIHVzZSBvZiB2YWxncmluZCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oImRpc2FibGUgdXNlIG9mIHZhbGdyaW5kIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQotKwotIGRlZiBjb25maWd1cmUoY29uZik6Ci0gICAgIGNvbmYuUkVDVVJTRSgnbGliL3RkYicpCi0gICAgIGNvbmYuUkVDVVJTRSgnbGliL3RldmVudCcpCi0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvb3B0aW9ucy0xLjQuMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibGRiL2xpYmxkYi9vcHRpb25zLTEuNC4xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1N2FmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGIvb3B0aW9ucy0xLjQuMS5wYXRjaApAQCAtMCwwICsxLDE4NCBAQAorRnJvbSBmZmZmZDI5YmM2MzAzZDYwYjNkNzcwNDhmYmJmNjc3NmY2ZmJiZTAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTY6NDA6MzEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGRiOiBBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHBhY2thZ2VzCisKK0FkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKKyAtIGFjbAorIC0gYXR0cgorIC0gbGliYWlvCisgLSBsaWJic2QKKyAtIGxpYmNhcAorIC0gdmFsZ3JpbmQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBkZXRlcm1pbmlzdGljIGJ1aWxkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcGRhdGUgdG8gdmVyc2lvbiAxLjQuMSwgYW5kIGZpeCBvbmUgY29uZmlndXJlIGVycm9yCisKK0Nyb3NzIGFuc3dlcnMgZmlsZSBjcm9zcy1hbnN3ZXJzLWk1ODYudHh0IGlzIGluY29tcGxldGUgd2l0aCAKKyJDaGVja2luZyBmb3IgYSA2NC1iaXQgaG9zdCB0byBzdXBwb3J0IGxtZGI6IFVOS05PV04iCisKK3dlIGRvbid0IHN1cHBvcnQgbG1kYiwgc28gb25seSBjaGVjayB3aGVuIGxtZGIgaXMgc3VwcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL3JlcGxhY2Uvd3NjcmlwdCB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgd3NjcmlwdCAgICAgICAgICAgICB8ICA2ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDc3IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvd3NjcmlwdCBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKK2luZGV4IGZkMDBhNDIuLjQzNDE5MmUgMTAwNjQ0CistLS0gYS9saWIvcmVwbGFjZS93c2NyaXB0CisrKysgYi9saWIvcmVwbGFjZS93c2NyaXB0CitAQCAtMjMsNiArMjMsNDEgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6CisgICAgIG9wdC5QUklWQVRFX0VYVEVOU0lPTl9ERUZBVUxUKCcnKQorICAgICBvcHQuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCisgCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYWNsJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgYWNsIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hY2wnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWFjbCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBhY2wiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hY2wnLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWF0dHInLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhdHRyIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1hdHRyJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGF0dHIiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJywgZGVmYXVsdD1GYWxzZSkKKysKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJhaW8nLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJhaW8iKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYWlvJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmFpbyIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliYnNkJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliYnNkIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmJzZCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJic2QiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmNhcCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmNhcCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliY2FwJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJjYXAnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliY2FwIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliY2FwJywgZGVmYXVsdD1GYWxzZSkKKysKKyBAVXRpbHMucnVuX29uY2UKKyBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLlJFQ1VSU0UoJ2J1aWxkdG9vbHMvd2Fmc2FtYmEnKQorQEAgLTMyLDEyICs2NywyNSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLkRFRklORSgnSEFWRV9MSUJSRVBMQUNFJywgMSkKKyAgICAgY29uZi5ERUZJTkUoJ0xJQlJFUExBQ0VfTkVUV09SS19DSEVDS1MnLCAxKQorIAorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBhY2wvbGliYWNsLmggY29tcGF0LmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGNvbXBhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdmY250bC5oIGZubWF0Y2guaCBnbG9iLmggaGlzdG9yeS5oIGtyYjUuaCBsYW5naW5mby5oJykKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCdsaWJhaW8uaCBsb2NhbGUuaCBuZGlyLmggcHdkLmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3NoYWRvdy5oIHN5cy9hY2wuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBhdHRyL2F0dHJpYnV0ZXMuaCBzeXMvY2FwYWJpbGl0eS5oIHN5cy9kaXIuaCBzeXMvZXBvbGwuaCcpCisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCcpCisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2F0dHJpYnV0ZXMuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2FjbDoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYWNsL2xpYmFjbC5oIHN5cy9hY2wuaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfYXR0cjoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYXR0ci9hdHRyaWJ1dGVzLmggYXR0ci94YXR0ci5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJhaW86CisrICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJjYXA6CisrICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQorKworICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3BvcnQuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZjbnRsLmggc3lzL2ZpbGlvLmggc3lzL2ZpbHN5cy5oIHN5cy9mcy9zNXBhcmFtLmggc3lzL2ZzL3Z4L3F1b3RhLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9pZC5oIHN5cy9pb2N0bC5oIHN5cy9pcGMuaCBzeXMvbW1hbi5oIHN5cy9tb2RlLmggc3lzL25kaXIuaCBzeXMvcHJpdi5oJykKK0BAIC0xMDgsNyArMTU2LDkgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmlsZWlvLmggc3lzL2ZpbGVzeXMuaCBzeXMvZHVzdGF0Lmggc3lzL3N5c21hY3Jvcy5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCd4ZnMvbGlieGZzLmggbmV0Z3JvdXAuaCcpCisgCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQorKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX3ZhbGdyaW5kOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCisrCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCitAQCAtMzQwLDIyICszOTAsMjAgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAKKyAgICAgY29uZi5DSEVDS19GVU5DUygncHJjdGwgZGlybmFtZSBiYXNlbmFtZScpCisgCistICAgIHN0cmxjcHlfaW5fYnNkID0gRmFsc2UKKy0KKy0gICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CistICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpOgorLSAgICAgICAgICAgIHN0cmxjcHlfaW5fYnNkID0gVHJ1ZQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGVfaW5pdCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJic2Q6CisrICAgICAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCisrICAgICAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlX2luaXQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKKysgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKyAKKyAgICAgY29uZi5DSEVDS19DT0RFKCcnJworICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWNyZWQgY3JlZDsKK0BAIC02OTksNyArNzQ3LDcgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKKyAgICAgIyBsb29rIGZvciBhIG1ldGhvZCBvZiBmaW5kaW5nIHRoZSBsaXN0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcworICAgICBmb3IgbWV0aG9kIGluIFsnSEFWRV9JRkFDRV9HRVRJRkFERFJTJywgJ0hBVkVfSUZBQ0VfQUlYJywgJ0hBVkVfSUZBQ0VfSUZDT05GJywgJ0hBVkVfSUZBQ0VfSUZSRVEnXToKKyAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcnCistICAgICAgICBpZiBzdHJsY3B5X2luX2JzZDoKKysgICAgICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYnNkOgorICAgICAgICAgICAgIGJzZF9mb3Jfc3RybGNweSA9ICcgYnNkJworICAgICAgICAgaWYgY29uZi5DSEVDS19DT0RFKCcnJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkZWZpbmUgJXMgMQorZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0CitpbmRleCBhZDkxYmM2Li4yZDIwZmVlIDEwMDY0NAorLS0tIGEvd3NjcmlwdAorKysrIGIvd3NjcmlwdAorQEAgLTM2LDYgKzM2LDEyIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgorICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNhYmxlIG5ldyBMTURCIGJhY2tlbmQgZm9yIExEQicsCisgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3dpdGhvdXRfbGRiX2xtZGInLCBkZWZhdWx0PUZhbHNlKQorIAorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oImVuYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJkaXNhYmxlIHVzZSBvZiB2YWxncmluZCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX3ZhbGdyaW5kJywgZGVmYXVsdD1GYWxzZSkKKyAKKyBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLlJFQ1VSU0UoJ2xpYi90ZGInKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGJfMS4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGJfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlMTRjZGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiXzEuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgotSE9NRVBBR0UgPSAiaHR0cDovL2xkYi5zYW1iYS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIExHUEwtMi4xKyAmIEdQTC0zLjArIgotCi1ERVBFTkRTICs9ICJsaWJ0ZGIgbGlidGFsbG9jIGxpYnRldmVudCBwb3B0IgotUkRFUEVORFNfcHlsZGIgKz0gInB5dGhvbiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2FtYmEub3JnL2Z0cC9sZGIvbGRiLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcHRpb25zLTEuMy4xLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICIsLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCi1QQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLQotU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGRhcCcsICcnLCAnZmlsZTovL2F2b2lkLW9wZW5sZGFwLXVubGVzcy13YW50ZWQucGF0Y2gnLCBkKX0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3B5bGRiLmg7ZW5kbGluZT0yNDttZDU9ZGZiZDIzOGNlY2FkNzY5NTdmN2Y4NjBmYmU5YWRhZGUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbWFuL2xkYi4zLnhtbDtiZWdpbmxpbmU9MjYxO2VuZGxpbmU9MjYyO21kNT0xMzdmOWZkNjEwNDBjMTUwNWQxYWExMDE5NjYzZmQwOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9sZGJkdW1wLmM7ZW5kbGluZT0xOTttZDU9YTdkNGZjNWQxZjc1Njc2YjQ5ZGY0OTE1NzVhODZhNDIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNTIzM2YyMDJiY2EyN2Y2Y2U4NDc0ZmI4YWU2NTk4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTlmMmM5ZjU1YWUwZjQ2YWE1ZWJhZWEwYmYxYTQ3ZWMxYWMxMzVlMWQ3OGFmMGY2MzE4Y2Y1MGJmNjJjYmQyIgotCi1pbmhlcml0IHdhZi1zYW1iYQotCi1TID0gIiR7V09SS0RJUn0vbGRiLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1jbW9ja2EgXAotICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbW9kdWxlc2Rpcj0ke2xpYmRpcn0vbGRiL21vZHVsZXMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdmF0ZWxpYmRpcj0ke2xpYmRpcn0vbGRiIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyA9KyAicHlsZGIgcHlsZGItZGJnIHB5bGRiLWRldiIKLQotTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGRiLyoiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcvKiBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8uZGVidWcvKiBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9sZGIvLmRlYnVnLyogXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGRiL21vZHVsZXMvbGRiLy5kZWJ1Zy8qIgotCi1GSUxFU19weWxkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHlsZGItdXRpbC5zby4qIFwKLSAgICAgICAgICAgICAgIgotRklMRVNfcHlsZGItZGJnID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8uZGVidWcvbGlicHlsZGItdXRpbC5zby4qIgotRklMRVNfcHlsZGItZGV2ID0gIiR7bGliZGlyfS9saWJweWxkYi11dGlsLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJsZGIvbGlibGRiXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjN2U1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYmxkYi9saWJsZGJfMS40LjEuYmIKQEAgLTAsMCArMSw2OCBAQAorU1VNTUFSWSA9ICJIaWVyYXJjaGljYWwsIHJlZmVyZW5jZSBjb3VudGVkIG1lbW9yeSBwb29sIHN5c3RlbSB3aXRoIGRlc3RydWN0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL2xkYi5zYW1iYS5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMy4wKyAmIExHUEwtMi4xKyAmIEdQTC0zLjArIgorCitERVBFTkRTICs9ICJsaWJ0ZGIgbGlidGFsbG9jIGxpYnRldmVudCBwb3B0IgorUkRFUEVORFNfcHlsZGIgKz0gInB5dGhvbiBzYW1iYSIKKworU1JDX1VSSSA9ICJodHRwOi8vc2FtYmEub3JnL2Z0cC9sZGIvbGRiLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtaW1wb3J0LXRhcmdldC1tb2R1bGUtd2hpbGUtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcHRpb25zLTEuNC4xLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlibGRiLWZpeC1jb25maWctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlibGRiLWZpeC1tdXNsLWxpYmMtdW5rb3duLXR5cGUtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlibGRiLWZpeC1tdXNsLWxpYmMtY29uZmxpY3QtdHlwZS1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgorUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCisKK1NSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAnJywgJ2ZpbGU6Ly9hdm9pZC1vcGVubGRhcC11bmxlc3Mtd2FudGVkLnBhdGNoJywgZCl9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9weWxkYi5oO2VuZGxpbmU9MjQ7bWQ1PWRmYmQyMzhjZWNhZDc2OTU3ZjdmODYwZmJlOWFkYWRlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21hbi9sZGIuMy54bWw7YmVnaW5saW5lPTI2MTtlbmRsaW5lPTI2MjttZDU9MTM3ZjlmZDYxMDQwYzE1MDVkMWFhMTAxOTY2M2ZkMDggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvbGRiZHVtcC5jO2VuZGxpbmU9MTk7bWQ1PWE3ZDRmYzVkMWY3NTY3NmI0OWRmNDkxNTc1YTg2YTQyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTU5YTFiMWE1NmRjY2NmNDEwZDFiYmE5MTFiZTYwNzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmRmMTNhYTI1YjM3NmIzMTRjZTI0MTgyYzM3NjkxOTU5MDE5NTIzZGUzY2M1MzU2YzQwYzFhMzMzYjA4OTBhMiIKKworaW5oZXJpdCB3YWYtc2FtYmEgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCitTID0gIiR7V09SS0RJUn0vbGRiLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1jbW9ja2EgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbW9kdWxlc2Rpcj0ke2xpYmRpcn0vbGRiL21vZHVsZXMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdmF0ZWxpYmRpcj0ke2xpYmRpcn0vbGRiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1sZGItbG1kYiBcCisgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyA9KyAicHlsZGIgcHlsZGItZGJnIHB5bGRiLWRldiIKKworTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGRiLyoiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8uZGVidWcvKiBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9sZGIvLmRlYnVnLyogXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGRiL21vZHVsZXMvbGRiLy5kZWJ1Zy8qIgorCitGSUxFU19weWxkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHlsZGItdXRpbC5zby4qIFwKKyAgICAgICAgICAgICAgIgorRklMRVNfcHlsZGItZGJnID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWcgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8uZGVidWcvbGlicHlsZGItdXRpbC5zby4qIgorRklMRVNfcHlsZGItZGV2ID0gIiR7bGliZGlyfS9saWJweWxkYi11dGlsLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jL2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy9hdm9pZC1hdHRyLXVubGVzcy13YW50ZWQucGF0Y2gKaW5kZXggYTNlZTljYy4uZGIzZGRjZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jL2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2MvYXZvaWQtYXR0ci11bmxlc3Mtd2FudGVkLnBhdGNoCkBAIC0xLDIwICsxLDIwIEBACiAtLS0gYS9saWIvcmVwbGFjZS93c2NyaXB0CTIwMTUtMTEtMTMgMTY6MDQ6MDQuMDAwMDAwMDAwICswMTAwCiArKysgYi9saWIvcmVwbGFjZS93c2NyaXB0CTIwMTUtMTEtMTMgMTY6MjM6MjAuMDAwMDAwMDAwICswMTAwCi1AQCAtNjM2LDggKzYzNiw2IEBACitAQCAtODM3LDggKzgzNyw2IEBAIGRlZiBidWlsZChibGQpOgogICAgICBpZiBub3QgYmxkLkNPTkZJR19TRVQoJ0hBVkVfSU5FVF9BVE9OJyk6ICAgICBSRVBMQUNFX1NPVVJDRSArPSAnIGluZXRfYXRvbi5jJwogICAgICBpZiBub3QgYmxkLkNPTkZJR19TRVQoJ0hBVkVfSU5FVF9OVE9QJyk6ICAgICBSRVBMQUNFX1NPVVJDRSArPSAnIGluZXRfbnRvcC5jJwogICAgICBpZiBub3QgYmxkLkNPTkZJR19TRVQoJ0hBVkVfSU5FVF9QVE9OJyk6ICAgICBSRVBMQUNFX1NPVVJDRSArPSAnIGluZXRfcHRvbi5jJwogLSAgICBpZiBub3QgYmxkLkNPTkZJR19TRVQoJ0hBVkVfR0VUWEFUVFInKSBvciBibGQuQ09ORklHX1NFVCgnWEFUVFJfQURESVRJT05BTF9PUFRJT05TJyk6CiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUExBQ0VfU09VUkNFICs9ICcgeGF0dHIuYycKICAKLSAgICAgYmxkLlNBTUJBX0xJQlJBUlkoJ3JlcGxhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9UkVQTEFDRV9TT1VSQ0UsCi1AQCAtNjQ4LDcgKzY0Niw3IEBACisgICAgIGlmIG5vdCBibGQuQ09ORklHX1NFVCgnSEFWRV9DTE9TRUZST00nKToKKyAgICAgICAgIFJFUExBQ0VfU09VUkNFICs9ICcgY2xvc2Vmcm9tLmMnCitAQCAtODUyLDcgKzg1MCw3IEBAIGRlZiBidWlsZChibGQpOgogICAgICAgICAgICAgICAgICAgICAgICAjIGF0IHRoZSBtb21lbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICMgaGlkZV9zeW1ib2xzPWJsZC5CVUlMVElOX0xJQlJBUlkoJ3JlcGxhY2UnKSwKICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZV9saWJyYXJ5PVRydWUsCiAtICAgICAgICAgICAgICAgICAgICAgIGRlcHM9J2NyeXB0IGRsIG5zbCBzb2NrZXQgcnQgYXR0cicgKyBleHRyYV9saWJzKQogKyAgICAgICAgICAgICAgICAgICAgICBkZXBzPSdjcnlwdCBkbCBuc2wgc29ja2V0IHJ0ICcgKyBleHRyYV9saWJzKQogIAotICAgICBibGQuU0FNQkFfU1VCU1lTVEVNKCdyZXBsYWNlLXRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9JycndGVzdC90ZXN0c3VpdGUuYyB0ZXN0L3N0cnB0aW1lLmMKKyAgICAgcmVwbGFjZV90ZXN0X2NmbGFncz0iLVduby1mb3JtYXQtemVyby1sZW5ndGgiCisgICAgIGlmIGJsZC5DT05GSUdfU0VUKCdIQVZFX1dOT19GT1JNQVRfVFJVTkNBVElPTicpOgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jL29wdGlvbnMtMi4xLjEwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jL29wdGlvbnMtMi4xLjEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2YyMWU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy9vcHRpb25zLTIuMS4xMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi1Gcm9tIGVmYzFiMDIxNDRmMjNmZGY4NGRiYzVmZjE1MzA3ODE1ZTBmMmE0MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxMToxMTozNSArMDgwMAotU3ViamVjdDogW1BBVENIXSB0YWxsb2M6IEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgcGFja2FnZXMKLQotQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgotIC0gYWNsCi0gLSBhdHRyCi0gLSBsaWJhaW8KLSAtIGxpYmJzZAotIC0gbGliY2FwCi0gLSB2YWxncmluZAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIGRldGVybWluaXN0aWMgYnVpbGQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0KLU1vZGlmaWVkIHRvIGFwcGx5IHRvIHZlcnNpb24gMi4xLjEwLgotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSB8ICA2ICsrLQotIGxpYi9yZXBsYWNlL3dzY3JpcHQgICAgICAgICAgICAgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQotIHdzY3JpcHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLQotIDMgZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLUluZGV4OiB0YWxsb2MtMi4xLjExL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRhbGxvYy0yLjEuMTEub3JpZy9saWIvcmVwbGFjZS9zeXN0ZW0vd3NjcmlwdF9jb25maWd1cmUKLSsrKyB0YWxsb2MtMi4xLjExL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotQEAgLTEsNiArMSwxMCBAQAotICMhL3Vzci9iaW4vZW52IHB5dGhvbgotIAotLWNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2NhcGFiaWxpdHkuaCcpCi0raW1wb3J0IE9wdGlvbnMKLSsKLStpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmNhcDoKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKLSsKLSBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwd25hbV9yIGdldHB3dWlkX3IgZ2V0cHdlbnRfcicpCi0gCi0gIyBzb2xhcmlzIHZhcmllbnRzIG9mIGdldFhYZW50X3IKLUluZGV4OiB0YWxsb2MtMi4xLjExL2xpYi9yZXBsYWNlL3dzY3JpcHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0YWxsb2MtMi4xLjExLm9yaWcvbGliL3JlcGxhY2Uvd3NjcmlwdAotKysrIHRhbGxvYy0yLjEuMTEvbGliL3JlcGxhY2Uvd3NjcmlwdAotQEAgLTIzLDYgKzIzLDQxIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgotICAgICBvcHQuUFJJVkFURV9FWFRFTlNJT05fREVGQVVMVCgnJykKLSAgICAgb3B0LlJFQ1VSU0UoJ2J1aWxkdG9vbHMvd2Fmc2FtYmEnKQotIAotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWFjbCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGFjbCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfYWNsJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1hY2wnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgYWNsIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfYWNsJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1hdHRyJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgYXR0ciIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfYXR0cicpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtYXR0cicsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBhdHRyIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfYXR0cicsIGRlZmF1bHQ9RmFsc2UpCi0rCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliYWlvJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliYWlvIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJhaW8nKQotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmFpbycsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJhaW8iKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJhaW8nLCBkZWZhdWx0PUZhbHNlKQotKwotKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmJzZCcsCi0rICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmJzZCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliYnNkJykKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJic2QnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliYnNkIiksCi0rICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliYnNkJywgZGVmYXVsdD1GYWxzZSkKLSsKLSsgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJjYXAnLAotKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJjYXAiKSwKLSsgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmNhcCcpCi0rICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliY2FwJywKLSsgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmNhcCIpLAotKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmNhcCcsIGRlZmF1bHQ9RmFsc2UpCi0rCi0gQFV0aWxzLnJ1bl9vbmNlCi0gZGVmIGNvbmZpZ3VyZShjb25mKToKLSAgICAgY29uZi5SRUNVUlNFKCdidWlsZHRvb2xzL3dhZnNhbWJhJykKLUBAIC0zMiwxMiArNjcsMjUgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKLSAgICAgY29uZi5ERUZJTkUoJ0hBVkVfTElCUkVQTEFDRScsIDEpCi0gICAgIGNvbmYuREVGSU5FKCdMSUJSRVBMQUNFX05FVFdPUktfQ0hFQ0tTJywgMSkKLSAKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdsaW51eC90eXBlcy5oIGNyeXB0LmggbG9jYWxlLmggYWNsL2xpYmFjbC5oIGNvbXBhdC5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdhY2wvbGliYWNsLmggYXR0ci94YXR0ci5oIGNvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBjb21wYXQuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnZmNudGwuaCBmbm1hdGNoLmggZ2xvYi5oIGhpc3RvcnkuaCBrcmI1LmggbGFuZ2luZm8uaCcpCi0tICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmggbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCBzeXMvYWNsLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggYXR0ci9hdHRyaWJ1dGVzLmggc3lzL2NhcGFiaWxpdHkuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCi0rICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93LmgnKQotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKLSsKLSsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hY2w6Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBzeXMvYWNsLmgnKQotKwotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2F0dHI6Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2F0dHIvYXR0cmlidXRlcy5oIGF0dHIveGF0dHIuaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYWlvOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaWJhaW8uaCcpCi0rCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliY2FwOgotKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKLSsKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdwb3J0LmgnKQotICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9mY250bC5oIHN5cy9maWxpby5oIHN5cy9maWxzeXMuaCBzeXMvZnMvczVwYXJhbS5oIHN5cy9mcy92eC9xdW90YS5oJykKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvaWQuaCBzeXMvaW9jdGwuaCBzeXMvaXBjLmggc3lzL21tYW4uaCBzeXMvbW9kZS5oIHN5cy9uZGlyLmggc3lzL3ByaXYuaCcpCi1AQCAtNzMsNyArMTIxLDkgQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKLSAKLSAgICAgY29uZi5DSEVDS19DT0RFKCcnLCBoZWFkZXJzPSdycGMvcnBjLmggcnBjc3ZjL3lwX3Byb3QuaCcsIGRlZmluZT0nSEFWRV9SUENTVkNfWVBfUFJPVF9IJykKLSAKLS0gICAgY29uZi5DSEVDS19IRUFERVJTKCd2YWxncmluZC5oIHZhbGdyaW5kL3ZhbGdyaW5kLmggdmFsZ3JpbmQvbWVtY2hlY2suaCcpCi0rICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfdmFsZ3JpbmQ6Ci0rICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKLSsKLSAgICAgY29uZi5DSEVDS19IRUFERVJTKCduc3NfY29tbW9uLmggbnNzd2l0Y2guaCBuc19hcGkuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2V4dGF0dHIuaCBzeXMvZWEuaCBzeXMvcHJvcGxpc3QuaCBzeXMvY2RlZnMuaCcpCi0gICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndXRtcC5oIHV0bXB4LmggbGFzdGxvZy5oJykKLUBAIC0yNjcsMjEgKzMxNywyMSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgotICAgICBjb25mLkNIRUNLX0ZVTkNTKCdwcmN0bCBkaXJuYW1lIGJhc2VuYW1lJykKLSAKLSAgICAgc3RybGNweV9pbl9ic2QgPSBGYWxzZQotLQotLSAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0Ci0tICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLS0gICAgICAgIGlmIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAotKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2xpYmJzZDoKLSsgICAgICAgICMgbGliYnNkIG9uIHNvbWUgcGxhdGZvcm1zIHByb3ZpZGVzIHN0cmxjcHkgYW5kIHN0cmxjYXQKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLSsgICAgICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpOgotLSAgICAgICAgICAgIHN0cmxjcHlfaW5fYnNkID0gVHJ1ZQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6Ci0tICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGVfaW5pdCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotKyAgICAgICAgICAgICAgICBzdHJsY3B5X2luX2JzZCA9IFRydWUKLSsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdzZXRwcm9jdGl0bGUnLCBoZWFkZXJzPSdzZXRwcm9jdGl0bGUuaCcpOgotKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQotKyAgICAgICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlX2luaXQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKLSAKLS0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ2Nsb3NlZnJvbScpOgotLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCi0rICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6Ci0rICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCi0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKLSAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7Ci1JbmRleDogdGFsbG9jLTIuMS4xMS93c2NyaXB0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGFsbG9jLTIuMS4xMS5vcmlnL3dzY3JpcHQKLSsrKyB0YWxsb2MtMi4xLjExL3dzY3JpcHQKLUBAIC0zMiw3ICszMiwxMiBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKLSAgICAgICAgIG9wdC5hZGRfb3B0aW9uKCctLWVuYWJsZS10YWxsb2MtY29tcGF0MScsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiQnVpbGQgdGFsbG9jIDEueC54IGNvbXBhdCBsaWJyYXJ5IFtGYWxzZV0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J1RBTExPQ19DT01QQVQxJywgZGVmYXVsdD1GYWxzZSkKLS0KLSsgICAgICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdmFsZ3JpbmQnLAotKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oImVuYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV92YWxncmluZCcpCi0rICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LXZhbGdyaW5kJywKLSsgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJkaXNhYmxlIHVzZSBvZiB2YWxncmluZCIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV92YWxncmluZCcsIGRlZmF1bHQ9RmFsc2UpCi0gCi0gZGVmIGNvbmZpZ3VyZShjb25mKToKLSAgICAgY29uZi5SRUNVUlNFKCdsaWIvcmVwbGFjZScpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2Mvb3B0aW9ucy0yLjEuMTQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2Mvb3B0aW9ucy0yLjEuMTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0NWQzNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvYy9vcHRpb25zLTIuMS4xNC5wYXRjaApAQCAtMCwwICsxLDE3MiBAQAorRnJvbSAzMTlhMmExYmI0NmFlMzVmYTlkNjY4NzhjYjA4Mjg1MDM1ZjBiZDVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTU6NDE6MzEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGFsbG9jOiBBZGQgY29uZmlndXJlIG9wdGlvbnMgZm9yIHBhY2thZ2VzCisKK0FkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKKyAtIGFjbAorIC0gYXR0cgorIC0gbGliYWlvCisgLSBsaWJic2QKKyAtIGxpYmNhcAorIC0gdmFsZ3JpbmQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBkZXRlcm1pbmlzdGljIGJ1aWxkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorCitNb2RpZmllZCB0byBhcHBseSB0byB2ZXJzaW9uIDIuMS4xMC4KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitNb2RpZmllZCB0cCBhcHBseSB0byB2ZXJzaW9uIDIuMS4xNAorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9yZXBsYWNlL3dzY3JpcHQgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHdzY3JpcHQgICAgICAgICAgICAgfCAgNyArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvcmVwbGFjZS93c2NyaXB0IGIvbGliL3JlcGxhY2Uvd3NjcmlwdAoraW5kZXggZmQwMGE0Mi4uYTc3YzA1OCAxMDA2NDQKKy0tLSBhL2xpYi9yZXBsYWNlL3dzY3JpcHQKKysrKyBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKK0BAIC0yMiw2ICsyMiw0MSBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKKyAgICAgb3B0LkJVSUxUSU5fREVGQVVMVCgnTk9ORScpCisgICAgIG9wdC5QUklWQVRFX0VYVEVOU0lPTl9ERUZBVUxUKCcnKQorICAgICBvcHQuUkVDVVJTRSgnYnVpbGR0b29scy93YWZzYW1iYScpCisrICAgCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtYWNsJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgYWNsIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hY2wnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWFjbCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBhY2wiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hY2wnLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWF0dHInLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBhdHRyIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1hdHRyJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGF0dHIiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9hdHRyJywgZGVmYXVsdD1GYWxzZSkKKysKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aC1saWJhaW8nLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRW5hYmxlIHVzZSBvZiBsaWJhaW8iKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycpCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGhvdXQtbGliYWlvJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkRpc2FibGUgdXNlIG9mIGxpYmFpbyIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0nZW5hYmxlX2xpYmFpbycsIGRlZmF1bHQ9RmFsc2UpCisrCisrICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtbGliYnNkJywKKysgICAgICAgICAgICAgICAgICAgaGVscD0oIkVuYWJsZSB1c2Ugb2YgbGliYnNkIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnKQorKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRob3V0LWxpYmJzZCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJEaXNhYmxlIHVzZSBvZiBsaWJic2QiKSwKKysgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9J2VuYWJsZV9saWJic2QnLCBkZWZhdWx0PUZhbHNlKQorKworKyAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLWxpYmNhcCcsCisrICAgICAgICAgICAgICAgICAgIGhlbHA9KCJFbmFibGUgdXNlIG9mIGxpYmNhcCIpLAorKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfbGliY2FwJykKKysgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC1saWJjYXAnLAorKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB1c2Ugb2YgbGliY2FwIiksCisrICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfbGliY2FwJywgZGVmYXVsdD1GYWxzZSkKKyAKKyBAVXRpbHMucnVuX29uY2UKKyBkZWYgY29uZmlndXJlKGNvbmYpOgorQEAgLTMyLDEyICs2NywyNSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgorICAgICBjb25mLkRFRklORSgnSEFWRV9MSUJSRVBMQUNFJywgMSkKKyAgICAgY29uZi5ERUZJTkUoJ0xJQlJFUExBQ0VfTkVUV09SS19DSEVDS1MnLCAxKQorIAorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBhY2wvbGliYWNsLmggY29tcGF0LmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGNvbXBhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnZmNudGwuaCBmbm1hdGNoLmggZ2xvYi5oIGhpc3RvcnkuaCBrcmI1LmggbGFuZ2luZm8uaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmggbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKKy0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCBzeXMvYWNsLmgnKQorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggYXR0ci9hdHRyaWJ1dGVzLmggc3lzL2NhcGFiaWxpdHkuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCisrICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc2hhZG93LmgnKQorKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggc3lzL2Rpci5oIHN5cy9lcG9sbC5oJykKKysKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9hY2w6CisrICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBzeXMvYWNsLmgnKQorKworKyAgICBpZiBPcHRpb25zLm9wdGlvbnMuZW5hYmxlX2F0dHI6CisrICAgICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2F0dHIvYXR0cmlidXRlcy5oIGF0dHIveGF0dHIuaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliYWlvOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdsaWJhaW8uaCcpCisrCisrICAgIGlmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliY2FwOgorKyAgICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKKysKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdwb3J0LmgnKQorICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9mY250bC5oIHN5cy9maWxpby5oIHN5cy9maWxzeXMuaCBzeXMvZnMvczVwYXJhbS5oIHN5cy9mcy92eC9xdW90YS5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvaWQuaCBzeXMvaW9jdGwuaCBzeXMvaXBjLmggc3lzL21tYW4uaCBzeXMvbW9kZS5oIHN5cy9uZGlyLmggc3lzL3ByaXYuaCcpCitAQCAtMTA4LDcgKzE1Niw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZpbGVpby5oIHN5cy9maWxlc3lzLmggc3lzL2R1c3RhdC5oIHN5cy9zeXNtYWNyb3MuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygneGZzL2xpYnhmcy5oIG5ldGdyb3VwLmgnKQorIAorLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV92YWxncmluZDoKKysgICAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygndmFsZ3JpbmQuaCB2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmgnKQorKworICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ25zc19jb21tb24uaCBuc3N3aXRjaC5oIG5zX2FwaS5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZXh0YXR0ci5oIHN5cy9lYS5oIHN5cy9wcm9wbGlzdC5oIHN5cy9jZGVmcy5oJykKKyAgICAgY29uZi5DSEVDS19IRUFERVJTKCd1dG1wLmggdXRtcHguaCBsYXN0bG9nLmgnKQorQEAgLTM0MiwyMCArMzkyLDIwIEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgCisgICAgIHN0cmxjcHlfaW5fYnNkID0gRmFsc2UKKyAKKy0gICAgIyBsaWJic2Qgb24gc29tZSBwbGF0Zm9ybXMgcHJvdmlkZXMgc3RybGNweSBhbmQgc3RybGNhdAorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CistICAgICAgICBpZiBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzdHJsY3B5IHN0cmxjYXQnLCAnYnNkJywgaGVhZGVycz0nYnNkL3N0cmluZy5oJywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tsaWJjPVRydWUpOgorLSAgICAgICAgICAgIHN0cmxjcHlfaW5fYnNkID0gVHJ1ZQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorLSAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignZ2V0cGVlcmVpZCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DU19JTignc2V0cHJvY3RpdGxlJywgJ3NldHByb2N0aXRsZScsIGhlYWRlcnM9J3NldHByb2N0aXRsZS5oJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKy0gICAgaWYgbm90IGNvbmYuQ0hFQ0tfRlVOQ1MoJ3NldHByb2N0aXRsZV9pbml0Jyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGVfaW5pdCcsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6CistICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKysgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV9saWJic2Q6CisrICAgICAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc3RybGNweSBzdHJsY2F0Jyk6CisrICAgICAgICAgICAgaWYgY29uZi5DSEVDS19GVU5DU19JTignc3RybGNweSBzdHJsY2F0JywgJ2JzZCcsIGhlYWRlcnM9J2JzZC9zdHJpbmcuaCcsCisrICAgICAgICAgICAgICAgIGNoZWNrbGliYz1UcnVlKToKKysgICAgICAgICAgICAgICAgc3RybGNweV9pbl9ic2QgPSBUcnVlCisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnZ2V0cGVlcmVpZCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2dldHBlZXJlaWQnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKKysgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnYnNkJywgaGVhZGVycz0nc3lzL3R5cGVzLmggYnNkL3VuaXN0ZC5oJykKKysgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzZXRwcm9jdGl0bGVfaW5pdCcpOgorKyAgICAgICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZV9pbml0JywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCisrICAgICAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnY2xvc2Vmcm9tJyk6CisrICAgICAgICAgICAgY29uZi5DSEVDS19GVU5DU19JTignY2xvc2Vmcm9tJywgJ2JzZCcsIGhlYWRlcnM9J2JzZC91bmlzdGQuaCcpCisgCisgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKKyAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7CitkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKK2luZGV4IDE4ZjcyNmUuLmZlZDhhYjkgMTAwNjQ0CistLS0gYS93c2NyaXB0CisrKysgYi93c2NyaXB0CitAQCAtMzIsNiArMzIsMTMgQEAgZGVmIHNldF9vcHRpb25zKG9wdCk6CisgICAgICAgICBvcHQuYWRkX29wdGlvbignLS1lbmFibGUtdGFsbG9jLWNvbXBhdDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0oIkJ1aWxkIHRhbGxvYyAxLngueCBjb21wYXQgbGlicmFyeSBbRmFsc2VdIiksCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdUQUxMT0NfQ09NUEFUMScsIGRlZmF1bHQ9RmFsc2UpCisrICAgICAgICBvcHQuYWRkX29wdGlvbignLS13aXRoLXZhbGdyaW5kJywKKysgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJlbmFibGUgdXNlIG9mIHZhbGdyaW5kIiksCisrICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQorKyAgICAgICAgb3B0LmFkZF9vcHRpb24oJy0td2l0aG91dC12YWxncmluZCcsCisrICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiZGlzYWJsZSB1c2Ugb2YgdmFsZ3JpbmQiKSwKKysgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnLCBkZWZhdWx0PUZhbHNlKQorKworIAorIAorIGRlZiBjb25maWd1cmUoY29uZik6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvY18yLjEuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2NfMi4xLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDhjZjRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGFsbG9jL2xpYnRhbGxvY18yLjEuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vdGFsbG9jLnNhbWJhLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90YWxsb2MuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI3O21kNT1hMzAxNzEyNzgyY2FkNmRkNmQ1MjI4YmZhNzgyNTI0OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9weXRhbGxvYy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTJjNDk4Y2M2ZjIyNjM2NzI0ODMyMzdiMjBmNDZiNDNkIgotCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RhbGxvYy90YWxsb2MtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMi4xLjEwLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0NTI1OTZmOTA0Y2EyYjEwMzIyYmRhYWJmMTQ3YTcyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzllYjM1NTU2YTBhZjk5OTEyM2M0ZDg4M2U3OWJlMDVmZjlmMDBhYjRmOWU0YWMyZTU3NzVmOWM1ZWVlZWQzIgotCi1pbmhlcml0IHdhZi1zYW1iYQotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgotUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLVNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F0dHInLCAnJywgJ2ZpbGU6Ly9hdm9pZC1hdHRyLXVubGVzcy13YW50ZWQucGF0Y2gnLCBkKX0iCi0KLVMgPSAiJHtXT1JLRElSfS90YWxsb2MtJHtQVn0iCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAotICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2lsZW50LXJ1bGVzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAicHl0YWxsb2MgcHl0YWxsb2MtZGJnIHB5dGFsbG9jLWRldiIKLQotRklMRVNfcHl0YWxsb2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyogXAotICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28uMiBcCi0gICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicHl0YWxsb2MtdXRpbC5zby4yLjEuMSBcCi0gICAgICAgICAgICAgICAgICIKLUZJTEVTX3B5dGFsbG9jLWRiZyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vLmRlYnVnL2xpYnB5dGFsbG9jLXV0aWwuc28uMi4xLjEiCi1GSUxFU19weXRhbGxvYy1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28iCi1SREVQRU5EU19weXRhbGxvYyA9ICJweXRob24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRhbGxvYy9saWJ0YWxsb2NfMi4xLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jXzIuMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTQ2M2E2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0YWxsb2MvbGlidGFsbG9jXzIuMS4xNC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vdGFsbG9jLnNhbWJhLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90YWxsb2MuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI3O21kNT1hMzAxNzEyNzgyY2FkNmRkNmQ1MjI4YmZhNzgyNTI0OSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9weXRhbGxvYy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTJjNDk4Y2M2ZjIyNjM2NzI0ODMyMzdiMjBmNDZiNDNkIgorCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RhbGxvYy90YWxsb2MtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMi4xLjE0LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDc4ZGEwMmUzMDkzMTYyMzFhNDk3YTlmMTdhOTgwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTg1NjAyNzU2YTYyOGJhYzUwN2ZhOGFmOGI5ZGY5MmFjZTY5ZDI3YzBhZGQ1ZGFiOTMxOTBhZDdjMzM2N2NlIgorCitpbmhlcml0IHdhZi1zYW1iYQorCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgorUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCisKK1NSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F0dHInLCAnJywgJ2ZpbGU6Ly9hdm9pZC1hdHRyLXVubGVzcy13YW50ZWQucGF0Y2gnLCBkKX0iCisKK1MgPSAiJHtXT1JLRElSfS90YWxsb2MtJHtQVn0iCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2lsZW50LXJ1bGVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCisgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAicHl0YWxsb2MgcHl0YWxsb2MtZGV2IgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJweXRhbGxvYy1kYmciCisKK0ZJTEVTX3B5dGFsbG9jID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIFwKKyAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJweXRhbGxvYy11dGlsLnNvLjIgXAorICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28uMi4xLjEgXAorICAgICAgICAgICAgICAgICAiCitGSUxFU19weXRhbGxvYy1kZXYgPSAiJHtsaWJkaXJ9L2xpYnB5dGFsbG9jLXV0aWwuc28iCitSREVQRU5EU19weXRhbGxvYyA9ICJweXRob24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKaW5kZXggMjcyOTIxZS4uMzY1YjkyZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApAQCAtMSwxMCArMSw3IEBACi1Gcm9tIDI0OTExZjM2YmNiMDA0MTJlNWRjNGNkMTFmZGExMzllMDlkNTg3OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIdWFuZyBRaXl1IDxodWFuZ3F5LmZuc3RAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBUdWUsIDEgQXVnIDIwMTcgMDM6MTI6MDkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSAxMGFjNWU1ZmRkYTQ0YWRjYzJhMTU5YjZmOWEyZDUxYTUxMzYxMDU3IE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+IERhdGU6IFdlZCwgMjEKLSBTZXAgMjAxNiAxMDo0NjoxOSArMDgwMCBTdWJqZWN0OiBbUEFUQ0hdIHRkYjogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvcgotIHBhY2thZ2VzCitGcm9tIDZkZTFhZmZkZGRlNDAwM2E5NTY1MjNjMzMwZWNmMjRlMjJlMDk0YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOSBKdWwgMjAxOCAxNjoyMDozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSB0ZGI6IEFkZCBjb25maWd1cmUgb3B0aW9ucyBmb3IgcGFja2FnZXMKIAogQWRkIGNvbmZpZ3VyZSBvcHRpb25zIGZvciB0aGUgZm9sbG93aW5nIHBhY2thZ2VzOgogIC0gYWNsCkBAIC0yMSwzMCArMTgsMTYgQEAKIFVwZGF0ZSBmb3IgbGlidGRiXzEuMy4xNC4KIAogU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlIHwgIDYgKystCi0gbGliL3JlcGxhY2Uvd3NjcmlwdCAgICAgICAgICAgICAgICAgIHwgODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gd3NjcmlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKystCi0gMyBmaWxlcyBjaGFuZ2VkLCA3OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZSBiL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotaW5kZXggMjAzNTQ3NC4uMTBmOWFlNyAxMDA2NDQKLS0tLSBhL2xpYi9yZXBsYWNlL3N5c3RlbS93c2NyaXB0X2NvbmZpZ3VyZQotKysrIGIvbGliL3JlcGxhY2Uvc3lzdGVtL3dzY3JpcHRfY29uZmlndXJlCi1AQCAtMSw2ICsxLDEwIEBACi0gIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gCi0tY29uZi5DSEVDS19IRUFERVJTKCdzeXMvY2FwYWJpbGl0eS5oJykKLStpbXBvcnQgT3B0aW9ucwotKwotK2lmIE9wdGlvbnMub3B0aW9ucy5lbmFibGVfbGliY2FwOgotKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9jYXBhYmlsaXR5LmgnKQotKwotIGNvbmYuQ0hFQ0tfRlVOQ1MoJ2dldHB3bmFtX3IgZ2V0cHd1aWRfciBnZXRwd2VudF9yJykKLSAKLSAjIHNvbGFyaXMgdmFyaWVudHMgb2YgZ2V0WFhlbnRfcgorVXBkYXRlIGZvciBsaWJ0ZGJfMS4zLjE2CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL3JlcGxhY2Uvd3NjcmlwdCB8IDg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgd3NjcmlwdCAgICAgICAgICAgICB8ICA2ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCiBkaWZmIC0tZ2l0IGEvbGliL3JlcGxhY2Uvd3NjcmlwdCBiL2xpYi9yZXBsYWNlL3dzY3JpcHQKLWluZGV4IDdjNTBlMWQuLjE1ZGY1YzMgMTAwNjQ0CitpbmRleCBmZDAwYTQyLi4yZGY4M2NkIDEwMDY0NAogLS0tIGEvbGliL3JlcGxhY2Uvd3NjcmlwdAogKysrIGIvbGliL3JlcGxhY2Uvd3NjcmlwdAogQEAgLTIzLDYgKzIzLDQxIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgpAQCAtOTYsNyArNzksNyBAQAogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBhY2wvbGliYWNsLmggY29tcGF0LmgnKQogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2FjbC9saWJhY2wuaCBhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCiArICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGludXgvdHlwZXMuaCBjcnlwdC5oIGxvY2FsZS5oIGNvbXBhdC5oJykKLSsgICAgY29uZi5DSEVDS19IRUFERVJTKCdjb21wYXQuaCBjdHlwZS5oIGR1c3RhdC5oJykKKysgICAgY29uZi5DSEVDS19IRUFERVJTKCdhdHRyL3hhdHRyLmggY29tcGF0LmggY3R5cGUuaCBkdXN0YXQuaCcpCiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnZmNudGwuaCBmbm1hdGNoLmggZ2xvYi5oIGhpc3RvcnkuaCBrcmI1LmggbGFuZ2luZm8uaCcpCiAtICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbGliYWlvLmggbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKIC0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCBzeXMvYWNsLmgnKQpAQCAtMTIwLDkgKzEwMyw5IEBACiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygncG9ydC5oJykKICAgICAgY29uZi5DSEVDS19IRUFERVJTKCdzeXMvZmNudGwuaCBzeXMvZmlsaW8uaCBzeXMvZmlsc3lzLmggc3lzL2ZzL3M1cGFyYW0uaCBzeXMvZnMvdngvcXVvdGEuaCcpCiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2lkLmggc3lzL2lvY3RsLmggc3lzL2lwYy5oIHN5cy9tbWFuLmggc3lzL21vZGUuaCBzeXMvbmRpci5oIHN5cy9wcml2LmgnKQotQEAgLTczLDcgKzEyMSw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6Ci0gCi0gICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJywgaGVhZGVycz0ncnBjL3JwYy5oIHJwY3N2Yy95cF9wcm90LmgnLCBkZWZpbmU9J0hBVkVfUlBDU1ZDX1lQX1BST1RfSCcpCitAQCAtMTA4LDcgKzE1Niw5IEBAIGRlZiBjb25maWd1cmUoY29uZik6CisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnc3lzL2ZpbGVpby5oIHN5cy9maWxlc3lzLmggc3lzL2R1c3RhdC5oIHN5cy9zeXNtYWNyb3MuaCcpCisgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygneGZzL2xpYnhmcy5oIG5ldGdyb3VwLmgnKQogIAogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3ZhbGdyaW5kLmggdmFsZ3JpbmQvdmFsZ3JpbmQuaCB2YWxncmluZC9tZW1jaGVjay5oJykKICsgICAgaWYgT3B0aW9ucy5vcHRpb25zLmVuYWJsZV92YWxncmluZDoKQEAgLTEzMSwxOCArMTE0LDIxIEBACiAgICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbnNzX2NvbW1vbi5oIG5zc3dpdGNoLmggbnNfYXBpLmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9leHRhdHRyLmggc3lzL2VhLmggc3lzL3Byb3BsaXN0Lmggc3lzL2NkZWZzLmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3V0bXAuaCB1dG1weC5oIGxhc3Rsb2cuaCcpCi1AQCAtMjUxLDE3ICszMDEsMTggQEAgZGVmIGNvbmZpZ3VyZShjb25mKToKK0BAIC0zNDIsMjAgKzM5MiwxOSBAQCBkZWYgY29uZmlndXJlKGNvbmYpOgogIAotICAgICBjb25mLkNIRUNLX0ZVTkNTKCdwcmN0bCBkaXJuYW1lIGJhc2VuYW1lJykKKyAgICAgc3RybGNweV9pbl9ic2QgPSBGYWxzZQogIAogLSAgICAjIGxpYmJzZCBvbiBzb21lIHBsYXRmb3JtcyBwcm92aWRlcyBzdHJsY3B5IGFuZCBzdHJsY2F0CiAtICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdzdHJsY3B5IHN0cmxjYXQnKToKLS0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAotLSAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSkKKy0gICAgICAgIGlmIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3N0cmxjcHkgc3RybGNhdCcsICdic2QnLCBoZWFkZXJzPSdic2Qvc3RyaW5nLmgnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2xpYmM9VHJ1ZSk6CistICAgICAgICAgICAgc3RybGNweV9pbl9ic2QgPSBUcnVlCiAtICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdnZXRwZWVyZWlkJyk6CiAtICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdnZXRwZWVyZWlkJywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCiAtICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTX0lOKCdzZXRwcm9jdGl0bGUnLCAnc2V0cHJvY3RpdGxlJywgaGVhZGVycz0nc2V0cHJvY3RpdGxlLmgnKToKIC0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZScsICdic2QnLCBoZWFkZXJzPSdzeXMvdHlwZXMuaCBic2QvdW5pc3RkLmgnKQorLSAgICBpZiBub3QgY29uZi5DSEVDS19GVU5DUygnc2V0cHJvY3RpdGxlX2luaXQnKToKKy0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ3NldHByb2N0aXRsZV9pbml0JywgJ2JzZCcsIGhlYWRlcnM9J3N5cy90eXBlcy5oIGJzZC91bmlzdGQuaCcpCiAtCiAtICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKIC0gICAgICAgIGNvbmYuQ0hFQ0tfRlVOQ1NfSU4oJ2Nsb3NlZnJvbScsICdic2QnLCBoZWFkZXJzPSdic2QvdW5pc3RkLmgnKQpAQCAtMTU4LDE4ICsxNDQsMTggQEAKICsKICsgICAgICAgIGlmIG5vdCBjb25mLkNIRUNLX0ZVTkNTKCdjbG9zZWZyb20nKToKICsgICAgICAgICAgICBjb25mLkNIRUNLX0ZVTkNTX0lOKCdjbG9zZWZyb20nLCAnYnNkJywgaGVhZGVycz0nYnNkL3VuaXN0ZC5oJykKKysgICAgCiAgCiAgICAgIGNvbmYuQ0hFQ0tfQ09ERSgnJycKICAgICAgICAgICAgICAgICAgc3RydWN0IHVjcmVkIGNyZWQ7CiBkaWZmIC0tZ2l0IGEvd3NjcmlwdCBiL3dzY3JpcHQKLWluZGV4IDFjOTY1NWEuLjhjMjBkM2IgMTAwNjQ0CitpbmRleCA2NTA1NjQ4Li42NjA4NDgxIDEwMDY0NAogLS0tIGEvd3NjcmlwdAogKysrIGIvd3NjcmlwdAotQEAgLTYyLDcgKzYyLDEyIEBAIGRlZiBzZXRfb3B0aW9ucyhvcHQpOgotICAgICAgICAgICAgICAgICAgICBoZWxwPSgiRGlzYWJsZSB0aGUgdXNlIG9mIHB0aHJlYWQgcm9idXN0IG11dGV4ZXMiKSwKK0BAIC02Myw2ICs2MywxMiBAQCBkZWYgc2V0X29wdGlvbnMob3B0KToKICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0nZGlzYWJsZV90ZGJfbXV0ZXhfbG9ja2luZycsCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UpCi0tCisgCiArICAgIG9wdC5hZGRfb3B0aW9uKCctLXdpdGgtdmFsZ3JpbmQnLAogKyAgICAgICAgICAgICAgICAgICBoZWxwPSgiZW5hYmxlIHVzZSBvZiB2YWxncmluZCIpLAogKyAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSdlbmFibGVfdmFsZ3JpbmQnKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjMuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMmEzMDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3RkYi5zYW1iYS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay14c2x0cHJvYy1tYW5wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MGVjZTM5OTZhY2M4ZDg1YjZmNzEzMTk5ZGE5NzFhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGExYmYzODMzNjAxYmQ5ZjEwYWZmMzYzY2I3NTA4NjBhZWY5Y2U1YjQ2MTc5ODkyMzk5MjMxOTJmOTQ2NzI4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbCwtLXdpdGhvdXQtYWNsLGFjbCIKLVBBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKLVBBQ0tBR0VDT05GSUdbbGliYWlvXSA9ICItLXdpdGgtbGliYWlvLC0td2l0aG91dC1saWJhaW8sbGliYWlvIgotUEFDS0FHRUNPTkZJR1tsaWJic2RdID0gIi0td2l0aC1saWJic2QsLS13aXRob3V0LWxpYmJzZCxsaWJic2QiCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLVMgPSAiJHtXT1JLRElSfS90ZGItJHtQVn0iCi0KLWluaGVyaXQgd2FmLXNhbWJhCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbi10ZGIgcHl0aG9uLXRkYi1kYmciCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19weXRob24tdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgotRklMRVNfcHl0aG9uLXRkYi1kYmcgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1Zy8qIgotUkRFUEVORFNfcHl0aG9uLXRkYiA9ICJweXRob24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS4zLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTc5ZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuMy4xNi5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gIlRoZSB0ZGIgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90ZGIuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0zLjArICYgR1BMLTMuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rvb2xzL3RkYmR1bXAuYztlbmRsaW5lPTE4O21kNT1iNTljZDQ1YWE4NjI0NTc4MTI2YThjOThmNDgwMThjNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3RkYi5oO2VuZGxpbmU9Mjc7bWQ1PWY1YmI1NDQ2NDFkMzA4MTgyMWJjYzFkZDU4MzEwYmU2IgorCitTUkNfVVJJID0gImh0dHBzOi8vc2FtYmEub3JnL2Z0cC90ZGIvdGRiLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2QwNmQ4NzA5MTg4ZTA3ZGY4NTNkOWU5MWRiODg5MjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmEzZmMyNjE2NTY3ZjIzOTkzOTg0YWRhM2NlYTk3ZDk1M2EyNzY2OWZmZDFiZmJiZTk2MWYyNmUwY2Y5NmNjNSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTID0gIiR7V09SS0RJUn0vdGRiLSR7UFZ9IgorCitpbmhlcml0IHdhZi1zYW1iYQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9Tk9ORSBcCisgICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9XAorICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInRkYi10b29scyBweXRob24tdGRiIgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJweXRob24tdGRiLWRiZyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKK0ZJTEVTX3RkYi10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX3B5dGhvbi10ZGIgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCitSREVQRU5EU19weXRob24tdGRiID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudC8wMDAxLWxpYnRldmVudC1maXgtbXVzbC1saWJjLWNvbXBpbGUtZXJyb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvMDAwMS1saWJ0ZXZlbnQtZml4LW11c2wtbGliYy1jb21waWxlLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzYWVkYTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnQvMDAwMS1saWJ0ZXZlbnQtZml4LW11c2wtbGliYy1jb21waWxlLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gN2JhMWRlOTA5YzU4N2I2NzczYTM5YmE5ZjZmOTg5MDk4N2YzNWIyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDExOjMwOjUzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRldmVudDogZml4IG11c2wgbGliYyBjb21waWxlIGVycm9yCisKK2xpYmxkYiBkZXBlbmQgb24gbGlidGV2ZW50LCAgYnVpbGQgbGlibGRiIHdpdGggbXVzbCBsaWJjLAord2lsbCByZXBvcnQgZXJyb3I6Cit0ZXZlbnQuaDoxNDQwOjg6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAncGlkX3QnOyBkaWQgeW91IG1lYW4gJ2Rpdl90Jz8KKworYWRkIG1pc3NpbmcgaGVhZGVycyB0byBmaXggaXQuCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXZlbnQuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXZlbnQuaCBiL3RldmVudC5oCitpbmRleCBhYTZmZTBkLi4yNTcyNjk2IDEwMDY0NAorLS0tIGEvdGV2ZW50LmgKKysrKyBiL3RldmVudC5oCitAQCAtMzIsNiArMzIsOCBAQAorICNpbmNsdWRlIDx0YWxsb2MuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAKKyBzdHJ1Y3QgdGV2ZW50X2NvbnRleHQ7Cisgc3RydWN0IHRldmVudF9vcHM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudF8wLjkuMzYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnRfMC45LjM2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTFiMjIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGV2ZW50L2xpYnRldmVudF8wLjkuMzYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vdGV2ZW50LnNhbWJhLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYzKyIKLQotREVQRU5EUyArPSAibGlidGFsbG9jIGxpYnRpcnBjIgotUkRFUEVORFNfcHl0aG9uLXRldmVudCA9ICJweXRob24iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RldmVudC90ZXZlbnQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMC45LjM2LnBhdGNoIFwKLSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3RldmVudC5oO2VuZGxpbmU9MjY7bWQ1PTRlNDU4ZDY1OGNiMjVlMjFlZmMxNmY3MjBlNzhiODVhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODdkNjdiY2E3NWIyMzE4MTQ0MzVjNDdiZWMwYWZmOGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQyYjZiZTNmZDE2MDFlZDdmMTc2ZTk5MTExZTMyMmM1N2Q1OGU0MjVjYzE0OWVlODBjN2RkNGZlZDI2M2I0YyIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCi1QQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCi1QQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKLVBBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgotUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgotCi1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdHRyJywgJycsICdmaWxlOi8vYXZvaWQtYXR0ci11bmxlc3Mtd2FudGVkLnBhdGNoJywgZCl9IgotCi1TID0gIiR7V09SS0RJUn0vdGV2ZW50LSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9Tk9ORSBcCi0gICAgICAgICAgICAgICAgIC0tYnVpbHRpbi1saWJyYXJpZXM9cmVwbGFjZSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9XAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZ2V0dGV4dCBcCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAicHl0aG9uLXRldmVudCBweXRob24tdGV2ZW50LWRiZyIKLQotRklMRVNfcHl0aG9uLXRldmVudCA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiIKLUZJTEVTX3B5dGhvbi10ZXZlbnQtZGJnID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRldmVudC9saWJ0ZXZlbnRfMC45LjM3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZXZlbnQvbGlidGV2ZW50XzAuOS4zNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGYyNTFjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZXZlbnQvbGlidGV2ZW50XzAuOS4zNy5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkhpZXJhcmNoaWNhbCwgcmVmZXJlbmNlIGNvdW50ZWQgbWVtb3J5IHBvb2wgc3lzdGVtIHdpdGggZGVzdHJ1Y3RvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vdGV2ZW50LnNhbWJhLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYzKyIKKworREVQRU5EUyArPSAibGlidGFsbG9jIGxpYnRpcnBjIgorUkRFUEVORFNfcHl0aG9uLXRldmVudCA9ICJweXRob24iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RldmVudC90ZXZlbnQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wdGlvbnMtMC45LjM2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlidGV2ZW50LWZpeC1tdXNsLWxpYmMtY29tcGlsZS1lcnJvci5wYXRjaCBcCisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXZlbnQuaDtlbmRsaW5lPTI2O21kNT00ZTQ1OGQ2NThjYjI1ZTIxZWZjMTZmNzIwZTc4Yjg1YSIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4NTljZDQwODFmZGIyYTc2YjFjYjRiZjFjODAzYTU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2ODM0NWVkNjVlYWMwMzc4NWNmNzdiOTUyMzhlN2RjNjZjYmI0NzNhNDI4MTE2OTNhNmIwOTE2ZTVkYWU3ZTAiCisKK2luaGVyaXQgd2FmLXNhbWJhCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgorUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgorUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCitQQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKKworU1JDX1VSSSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXR0cicsICcnLCAnZmlsZTovL2F2b2lkLWF0dHItdW5sZXNzLXdhbnRlZC5wYXRjaCcsIGQpfSIKKworUyA9ICIke1dPUktESVJ9L3RldmVudC0ke1BWfSIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdldHRleHQgXAorICAgICAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gInB5dGhvbi10ZXZlbnQiCisKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gInB5dGhvbi10ZXZlbnQtZGJnIgorCitGSUxFU19weXRob24tdGV2ZW50ID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtYnVpbGQtMGIwZGNlN2EzNmZiLWFjdHVhbGx5LWJlbG9uZ3MtdG8tdjQuMTkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHMvMDAwMS1idWlsZC0wYjBkY2U3YTM2ZmItYWN0dWFsbHktYmVsb25ncy10by12NC4xOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTk5YjFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtYnVpbGQtMGIwZGNlN2EzNmZiLWFjdHVhbGx5LWJlbG9uZ3MtdG8tdjQuMTkucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBlNTk1MmEwY2RmYThiMWI1NmE1ODIzNTc0ODM1ZjFmNzcxZjE0YWUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyY2VsbyBSaWNhcmRvIExlaXRuZXIgPG1hcmNlbG8ubGVpdG5lckBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IEF1ZyAyMDE4IDA5OjUzOjAwIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiAwYjBkY2U3YTM2ZmIgYWN0dWFsbHkgYmVsb25ncyB0byB2NC4xOQorCitUeXBvIG9yIG5vdCwgdGhpcyBjb21taXQgYWN0dWFsbHkgYmVsb25ncyB0byB2NC4xOSBhbmQgbWFkZSBtZSB3b25kZXIgd2h5CitvbiB2NC4xOCBpdCBkaWRuJ3QgZmluZCB0aGlzIGZlYXR1cmUuCisKK0ZpeGVzOiA4MTdmMGJmYTI0OGYgKCJidWlsZDogYWRkIHR3byBkZWZpbmVzIGZvciBQZWVyIEFkZHJlc3MgUGFyYW1ldGVycyBleHRlbnNpb25zIG9uIHNjdHBfcGFkZHJwYXJhbXMiKQorU2lnbmVkLW9mZi1ieTogTWFyY2VsbyBSaWNhcmRvIExlaXRuZXIgPG1hcmNlbG8ubGVpdG5lckBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogWGluIExvbmcgPGx1Y2llbi54aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmNTU3NzVhLi41ZGU1Yzc2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMDEsNyArMTAxLDcgQEAgTEtTQ1RQX0NIRUNLX1RZUEUoW3N0cnVjdCBzY3RwX3ByaW5mb10sIFtIQVZFX1NDVFBfU0VORFZdKQorICMgYWRkZWQgb24gdjQuMTYsIDMwZjZlYmY2NWJjNAorIExLU0NUUF9DSEVDS19ERUNMKFtTQ1RQX0FVVEhfTk9fQVVUSF0sIFtIQVZFX1NDVFBfQVVUSF9OT19BVVRIXSkKKyAKKy0jIE5ldyBtZW1iZXJzIHRvIHNjdHBfcGFkZHJwYXJhbXMsIGFkZGVkIG9uIHY0LjE4LCAwYjBkY2U3YTM2ZmIKKysjIE5ldyBtZW1iZXJzIHRvIHNjdHBfcGFkZHJwYXJhbXMsIGFkZGVkIG9uIHY0LjE5LCAwYjBkY2U3YTM2ZmIKKyBMS1NDVFBfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc2N0cF9wYWRkcnBhcmFtcy5zcHBfaXB2Nl9mbG93bGFiZWxdLAorIAkJICAgIFtIQVZFX1NDVFBfU1BQX0lQVjZfRkxPV0xBQkVMXSkKKyBMS1NDVFBfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc2N0cF9wYWRkcnBhcmFtcy5zcHBfZHNjcF0sCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWJ1aWxkLWZpeC1uZXRpbmV0LXNjdHAuaC1ub3QtdG8tYmUtaW5zdGFsbGVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtYnVpbGQtZml4LW5ldGluZXQtc2N0cC5oLW5vdC10by1iZS1pbnN0YWxsZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNjNmM0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWJ1aWxkLWZpeC1uZXRpbmV0LXNjdHAuaC1ub3QtdG8tYmUtaW5zdGFsbGVkLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMzc4NTYwMDUwYThmOTM3ODZjNTkwY2M5OWE1NTQ2MTY2NjIwNWI2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgQXVnIDIwMTggMDE6MTM6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IGZpeCBuZXRpbmV0L3NjdHAuaCBub3QgdG8gYmUgaW5zdGFsbGVkCisKK0FmdGVyIGxpYmNuZXRpbmV0X0hFQURFUlMgd2FzIHNldCB0byBzY3RwLmguaW4sIG5ldGluZXQvc2N0cC5oIGNhbgorbm8gbG9uZ2VyIGJlIGluc3RhbGxlZCBpbnRvICR7aW5jbHVkZWRpcn0uCisKK1NpbmNlICJBQ19DT05GSUdfSEVBREVSUyhbc3JjL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmhdKSIgaXMgYWxyZWFkeQorYWRkZWQgaW50byBjb25maWd1cmUuYWMsIHRoZXJlJ3Mgbm8gbmVlZCB0byBnZW5lcmF0ZSBzY3RwLmggYnkKK2F1dG9tYWtlLgorCitTbyB3ZSBzaW1wbHkgc2V0IGxpYmNuZXRpbmV0X0hFQURFUlMgYmFjayB0byBzY3RwLmguCisKK0ZpeGVzOiA5NjA3ZGQ4NWU3MGEgKCJuZXRpbmV0L3NjdHAuaDogZHluYW1pY2FsbHkgYnVpbGQgYmFzZWQgb24gc3lzdGVtIHNldHVwIikKK1NpZ25lZC1vZmYtYnk6IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgorLS0tCisgc3JjL2luY2x1ZGUvbmV0aW5ldC9NYWtlZmlsZS5hbSB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbmV0aW5ldC9NYWtlZmlsZS5hbSBiL3NyYy9pbmNsdWRlL25ldGluZXQvTWFrZWZpbGUuYW0KK2luZGV4IGNhMGFhYzIuLjk2NWRiOGMgMTAwNjQ0CistLS0gYS9zcmMvaW5jbHVkZS9uZXRpbmV0L01ha2VmaWxlLmFtCisrKysgYi9zcmMvaW5jbHVkZS9uZXRpbmV0L01ha2VmaWxlLmFtCitAQCAtMTEsNSArMTEsNCBAQCBsaWJjbmV0aW5ldGRpciA9ICQoaW5jbHVkZWRpcikvbmV0aW5ldAorICMgQVBJLgorIGluY2x1ZGVfSEVBREVSUyA9CisgCistbGliY25ldGluZXRfSEVBREVSUyA9IHNjdHAuaC5pbgorLUJVSUxUX1NPVVJDRVMgPSBzY3RwLmgKKytsaWJjbmV0aW5ldF9IRUFERVJTID0gc2N0cC5oCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWJ1aWxkLWZpeC1wcm9iaW5nLWZvci1IQVZFX1NDVFBfU0VORFYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHMvMDAwMS1idWlsZC1maXgtcHJvYmluZy1mb3ItSEFWRV9TQ1RQX1NFTkRWLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5Yzg5ODMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHMvMDAwMS1idWlsZC1maXgtcHJvYmluZy1mb3ItSEFWRV9TQ1RQX1NFTkRWLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gNTk2ZWZkNjYzMWI4MzA2OWQ0MTc4MmZiMGVlMmQ2Y2Y3NmE1MGRmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNCBBdWcgMjAxOCAwOTo1Mjo1OSAtMDMwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZml4IHByb2JpbmcgZm9yIEhBVkVfU0NUUF9TRU5EVgorCitTb21laG93IGl0IHdhcyB1c2luZyBhIHR5cGUgdGhhdCBpcyBub24tZXhpc3RlbnQuIFRoZSByaWdodCBvbmUgaXMKK3NjdHBfcHJpbmZvLCBpbnRyb2R1Y2VkIG9uIGVkNjNhZmI4YTMxOCAoInNjdHA6IGFkZCBzdXBwb3J0IGZvciBQUi1TQ1RQCitJbmZvcm1hdGlvbiBmb3Igc2VuZG1zZyIpLCBwcmVzZW50IG9uIHY0LjE3LgorCitGaXhlczogMWI3OThmMWNhM2I1ICgiYnVpbGQ6IGFkZCBkZWZpbmUgSEFWRV9TQ1RQX0FVVEhfTk9fQVVUSCIpCitTaWduZWQtb2ZmLWJ5OiBNYXJjZWxvIFJpY2FyZG8gTGVpdG5lciA8bWFyY2Vsby5sZWl0bmVyQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA1ICsrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZGFkNjU4Yy4uZjU1Nzc1YSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTQsOSArOTQsOCBAQCBMS1NDVFBfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc2N0cF9wZGFwaV9ldmVudC5wZGFwaV9zdHJlYW1dLAorIExLU0NUUF9DSEVDS19NRU1CRVIoW3N0cnVjdCBzY3RwX3BkYXBpX2V2ZW50LnBkYXBpX3NlcV0sCisgCQkgICAgW0hBVkVfU0NUUF9QREFQSV9FVkVOVF9QREFQSV9TRVFdKQorIAorLSMgUFItU0NUUCBmaWVsZCB1c2VkIHRvIHByb2JlIGZvciBzZW5kdi9yZWN2diBzdXBwb3J0LCBhZGRlZCBvbiB2NC4xNworLUxLU0NUUF9DSEVDS19NRU1CRVIoW3N0cnVjdCBzZW5kdl9wcmluZm8uc2N0cF9wcmluZm9dLAorLQkJICAgIFtIQVZFX1NDVFBfU0VORFZdKQorKyMgUFItU0NUUCBzdHJ1Y3QgdXNlZCB0byBwcm9iZSBmb3Igc2VuZHYvcmVjdnYgc3VwcG9ydCwgYWRkZWQgb24gdjQuMTcKKytMS1NDVFBfQ0hFQ0tfVFlQRShbc3RydWN0IHNjdHBfcHJpbmZvXSwgW0hBVkVfU0NUUF9TRU5EVl0pCisgCisgIyBUaGlzIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBwZWVyIGRvZXMgbm90IHN1cHBvcnQgU0NUUCBhdXRoZW50aWNhdGlvbiwKKyAjIGFkZGVkIG9uIHY0LjE2LCAzMGY2ZWJmNjViYzQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtYnVpbGQtcmVtb3ZlLXY0LjEyLXNlY29uZGFyeS1kZWZpbmVzLWluLWZhdm9yLW9mLUhBVi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWJ1aWxkLXJlbW92ZS12NC4xMi1zZWNvbmRhcnktZGVmaW5lcy1pbi1mYXZvci1vZi1IQVYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyY2RhNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWJ1aWxkLXJlbW92ZS12NC4xMi1zZWNvbmRhcnktZGVmaW5lcy1pbi1mYXZvci1vZi1IQVYucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSBkYjZkMTViZjEyYTAxMjNlNDMyMGU1ZmQ3Y2I2ODgzMzFkZWExYmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyY2VsbyBSaWNhcmRvIExlaXRuZXIgPG1hcmNlbG8ubGVpdG5lckBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IEF1ZyAyMDE4IDA5OjUyOjU4IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiByZW1vdmUgdjQuMTIgc2Vjb25kYXJ5IGRlZmluZXMgaW4gZmF2b3Igb2YKKyBIQVZFX1NDVFBfU1RSRUFNX1JFQ09ORklHCisKK1RoZXNlIHdlcmUgYmFja3VwcywgY29tbWVudGVkIG91dCBzaW5jZSBiZWdpbm5pbmcuCitIQVZFX1NDVFBfU1RSRUFNX1JFQ09ORklHIGlzIGVub3VnaCB0byBpZGVudGlmeSB0aGF0IHRoZXNlIGFyZSB0aGVyZSwgc28KK2xldHMgdXNlIG9ubHkgb25lLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJjZWxvIFJpY2FyZG8gTGVpdG5lciA8bWFyY2Vsby5sZWl0bmVyQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8IDggLS0tLS0tLS0KKyBzcmMvaW5jbHVkZS9uZXRpbmV0L3NjdHAuaC5pbiB8IDIgLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAyYWUzNmVjLi5kYWQ2NThjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04MiwxNCArODIsNiBAQCBBQ19DSEVDS19GVU5DUyhbYnplcm8gZ2V0aG9zdGJ5bmFtZSBnZXR0aW1lb2ZkYXkgbWVtbW92ZSBtZW1zZXQgc2VsZWN0IHNvY2tldCBcCisgTEtTQ1RQX0NIRUNLX01FTUJFUihbc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlLnNjdHBfc3RyZWFtX3Jlc2V0X2V2ZW50XSwKKyAJCSAgICBbSEFWRV9TQ1RQX1NUUkVBTV9SRVNFVF9FVkVOVF0pCisgCistIyBTdXBwb3J0IGZvciBhc3NvYyByZXNldCBldmVudCwgYWRkZWQgb24gdjQuMTIsIGM5NTEyOWQxMjdjNgorLSNMS1NDVFBfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUuc2N0cF9hc3NvY19yZXNldF9ldmVudF0sIFwKKy0jCQkgICAgW0hBVkVfU0NUUF9BU1NPQ19SRVNFVF9FVkVOVF0pCistCistIyBTdXBwb3J0IGZvciBzdHJlYW0gY2hhbmdlIGV2ZW50LCBhZGRlZCBvbiB2NC4xMiwgYjQ0NDE1M2ZiNWE2CistI0xLU0NUUF9DSEVDS19NRU1CRVIoW3N0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZS5zY3RwX3N0cmVhbV9jaGFuZ2VfZXZlbnRdLCBcCistIwkJICAgIFtIQVZFX1NDVFBfU1RSRUFNX0NIQU5HRV9FVkVOVF0pCistCisgIyBSRkMgNjUyNSAoU3RyZWFtIFJlY29uZiksIGZpbmlzaGVkIG9uIHY0LjEyLCBjMGQ4YmFiNmFlNTEKKyBMS1NDVFBfQ0hFQ0tfREVDTChbU0NUUF9SRUNPTkZJR19TVVBQT1JURURdLCBbSEFWRV9TQ1RQX1NUUkVBTV9SRUNPTkZJR10pCisgCitkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmguaW4gYi9zcmMvaW5jbHVkZS9uZXRpbmV0L3NjdHAuaC5pbgoraW5kZXggYzA0OTA3Ny4uMjAwOWYxYyAxMDA2NDQKKy0tLSBhL3NyYy9pbmNsdWRlL25ldGluZXQvc2N0cC5oLmluCisrKysgYi9zcmMvaW5jbHVkZS9uZXRpbmV0L3NjdHAuaC5pbgorQEAgLTYxLDggKzYxLDYgQEAgZXh0ZXJuICJDIiB7CisgI2RlZmluZSBIQVZFX1NDVFBfQ0FOU0VUX1BSSU1BUlkKKyAKKyAjdW5kZWYgSEFWRV9TQ1RQX1NUUkVBTV9SRVNFVF9FVkVOVAorLSN1bmRlZiBIQVZFX1NDVFBfQVNTT0NfUkVTRVRfRVZFTlQKKy0jdW5kZWYgSEFWRV9TQ1RQX1NUUkVBTV9DSEFOR0VfRVZFTlQKKyAjdW5kZWYgSEFWRV9TQ1RQX1NUUkVBTV9SRUNPTkZJRworICN1bmRlZiBIQVZFX1NDVFBfUEVFTE9GRl9GTEFHUworICN1bmRlZiBIQVZFX1NDVFBfUERBUElfRVZFTlRfUERBUElfU1RSRUFNCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtQ1VSUkVOVC1SRVZJU0lPTi1hbmQtQUdFLWZvci1saWJzY3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtYWRkLUNVUlJFTlQtUkVWSVNJT04tYW5kLUFHRS1mb3ItbGlic2N0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYzliZjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xrc2N0cC10b29scy9sa3NjdHAtdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtYWRkLUNVUlJFTlQtUkVWSVNJT04tYW5kLUFHRS1mb3ItbGlic2N0LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gN2RlMmJkN2U3NjlmMTA1MjFlM2QwYzJjYjQyYzZmNmI5YjUwNWRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTYgQXVnIDIwMTggMTQ6MTI6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgQ1VSUkVOVCBSRVZJU0lPTiBhbmQgQUdFIGZvciBsaWJzY3RwIGFuZAorIGxpYndpdGhzY3RwCisKK0FkZCBDVVJSRU5UIFJFVklTSU9OIGFuZCBBR0UgZm9yIGxpYnNjdHAgYW5kIGxpYndpdGhzY3RwIGluCitjb25maWd1cmUuYWMgdG8gdXBkYXRlIHRoZXNlIDIgbGlicmFyeSB2ZXJzaW9uIGluZm9ybWF0aW9uLgorCitDb21wYXRpYmxlIHdpdGggYmVmb3JlLCB0aGV5IHdpbGwgc3RhcnQgZnJvbSAxOjE4OjAuIEJ1dCBlYWNoCit3aWxsIGdldCB1cGRhdGVkIGFjY29yZGluZyB0byB0aGVpciBkZWZpbml0aW9ucyBpbiB0aGUgZnV0dXJlLgorCitTaWduZWQtb2ZmLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CitBY2tlZC1ieTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgIHwgNyArKysrKysrCisgc3JjL2xpYi9NYWtlZmlsZS5hbSAgICAgIHwgNyArKysrKy0tCisgc3JjL3dpdGhzY3RwL01ha2VmaWxlLmFtIHwgMyArKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDI3NWVmNGUuLjJhZTM2ZWMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE0LDYgKzE0LDEzIEBAIGRubCByZWR1Y2UgY2x1dHRlciBpbiB0aGUgcm9vdDsgaWYgd2UgcHV0IGl0IGJlbG93IEFNX0lOSVRfQVVUT01BS0UsCisgZG5sIGNvbmZpZ3VyZSB3aWxsIGZhaWwgLi4uKQorIAorIEFDX0lOSVQoW2xrc2N0cC10b29sc10sIFsxLjAuMThdLCBbXSwgW10sIFtodHRwOi8vd3d3Lmxrc2N0cC5vcmcvXSkKKytBQ19TVUJTVChMSUJTQ1RQX0NVUlJFTlQsIDEpCisrQUNfU1VCU1QoTElCU0NUUF9SRVZJU0lPTiwgMTgpCisrQUNfU1VCU1QoTElCU0NUUF9BR0UsIDApCisrQUNfU1VCU1QoTElCV0lUSFNDVFBfQ1VSUkVOVCwgMSkKKytBQ19TVUJTVChMSUJXSVRIU0NUUF9SRVZJU0lPTiwgMTgpCisrQUNfU1VCU1QoTElCV0lUSFNDVFBfQUdFLCAwKQorKworIEFDX0NPTkZJR19BVVhfRElSKGJpbikKKyBBQ19DT05GSUdfU1JDRElSKFtzcmMvYXBwcy9zY3RwX2Rhcm4uY10pCisgQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKK2RpZmYgLS1naXQgYS9zcmMvbGliL01ha2VmaWxlLmFtIGIvc3JjL2xpYi9NYWtlZmlsZS5hbQoraW5kZXggNjEwMGM1Ni4uMWQ2MjE3NSAxMDA2NDQKKy0tLSBhL3NyYy9saWIvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9saWIvTWFrZWZpbGUuYW0KK0BAIC04LDUgKzgsOCBAQCBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9zcmMvaW5jbHVkZQorIAorIGxpYl9MVExJQlJBUklFUyA9IGxpYnNjdHAubGEKKyAKKy1saWJzY3RwX2xhX1NPVVJDRVMgPSBiaW5keC5jIGNvbm5lY3R4LmMgcGVlbG9mZi5jIG9wdF9pbmZvLmMgYWRkcnMuYyBzZW5kbXNnLmMgcmVjdm1zZy5jIFZlcnNpb25zLm1hcAorLWxpYnNjdHBfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gMToxNzowIC1XbCwtLXZlcnNpb24tc2NyaXB0PSQoc3JjZGlyKS9WZXJzaW9ucy5tYXAKKytsaWJzY3RwX2xhX1NPVVJDRVMgPSBiaW5keC5jIGNvbm5lY3R4LmMgcGVlbG9mZi5jIG9wdF9pbmZvLmMgXAorKwkJYWRkcnMuYyBzZW5kbXNnLmMgcmVjdm1zZy5jIFZlcnNpb25zLm1hcAorK2xpYnNjdHBfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gXAorKwkJQExJQlNDVFBfQ1VSUkVOVEA6QExJQlNDVFBfUkVWSVNJT05AOkBMSUJTQ1RQX0FHRUAgXAorKwkJLVdsLC0tdmVyc2lvbi1zY3JpcHQ9JChzcmNkaXIpL1ZlcnNpb25zLm1hcAorZGlmZiAtLWdpdCBhL3NyYy93aXRoc2N0cC9NYWtlZmlsZS5hbSBiL3NyYy93aXRoc2N0cC9NYWtlZmlsZS5hbQoraW5kZXggNzBiMWNjYS4uMWY2Y2EzNyAxMDA2NDQKKy0tLSBhL3NyYy93aXRoc2N0cC9NYWtlZmlsZS5hbQorKysrIGIvc3JjL3dpdGhzY3RwL01ha2VmaWxlLmFtCitAQCAtMTQsNyArMTQsOCBAQCBBTV9DUFBGTEFHUz0tSSQodG9wX3NyY2Rpcikvc3JjL2luY2x1ZGUKKyBwa2dsaWJfTFRMSUJSQVJJRVMgPSBsaWJ3aXRoc2N0cC5sYQorIGxpYndpdGhzY3RwX2xhX1NPVVJDRVMgPSBzY3RwX2xvYWRfbGlicy5jIHNjdHBfc29ja2V0LmMgc2N0cF9iaW5kLmMgXAorIAlzY3RwX3NvY2tvcHQuYyBzY3RwX3NvY2tldC5oCistbGlid2l0aHNjdHBfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gMToxNzowIC1sZGwKKytsaWJ3aXRoc2N0cF9sYV9MREZMQUdTID0gLXZlcnNpb24taW5mbyBcCisrCUBMSUJXSVRIU0NUUF9DVVJSRU5UQDpATElCV0lUSFNDVFBfUkVWSVNJT05AOkBMSUJXSVRIU0NUUF9BR0VAIC1sZGwKKyAKKyBwa2dkb2NfREFUQSA9IHNjdHBfbG9hZF9saWJzLmMgc2N0cF9zb2NrZXQuYyBzY3RwX2JpbmQuYyBcCisgCXNjdHBfc29ja29wdC5jIHNjdHBfc29ja2V0LmggY2hlY2tzY3RwLmMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtdGVzdF8xX3RvXzFfZXZlbnRzLmMtaW5pdGlhbGl6ZS1ldmVudC1wcm9wZXJseS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLXRlc3RfMV90b18xX2V2ZW50cy5jLWluaXRpYWxpemUtZXZlbnQtcHJvcGVybHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIxZTZmNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLXRlc3RfMV90b18xX2V2ZW50cy5jLWluaXRpYWxpemUtZXZlbnQtcHJvcGVybHkucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBlMWU2NzBkZWZiODRkNTFlZmRkMTI0ZTVmM2ZhMTY2YTFhNGI3YzFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjUgU2VwIDIwMTggMTE6Mzk6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdF8xX3RvXzFfZXZlbnRzLmM6IGluaXRpYWxpemUgZXZlbnQgcHJvcGVybHkKKworSW5pdGlhbGl6ZSBldmVudCBwcm9wZXJseSB0byBhdm9pZCBiZWxvdworU2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gcnVuIGJlbG93IHRlc3QKK3JlbGF0ZWQgdG8gQVVUSF9OT19BVVRILgorCisgIyAuL3Rlc3RfMV90b18xX2V2ZW50cwordGVzdF8xX3RvXzFfZXZlbnRzLmMgMSBQQVNTIDogQ09NTV9VUCBub3RpZmljYXRpb24gb24gY2xpZW50IHNvY2tldCAtIFNVQ0NFU1MKK3Rlc3RfMV90b18xX2V2ZW50cy5jIDIgUEFTUyA6IENPTU1fVVAgbm90aWZpY2F0aW9uIG9uIHNlcnZlciBzb2NrZXQgLSBTVUNDRVNTCit0ZXN0XzFfdG9fMV9ldmVudHMuYyAzIEJST0sgOiBHb3QgYSBkYXRhbXNnLCBleHBlY3Rpbmcgbm90aWZpY2F0aW9uCitEVU1QX0NPUkUgc2N0cHV0aWwuYzogMTg3CitbIDE0NjguNzMzOTM4XSB0ZXN0XzFfdG9fMV9ldmVbMjM3Nl06IHNlZ2ZhdWx0IGF0IDAgaXAgMDAwMDU2MWE0YTNkNTA3OSBzcCAwMDAwN2ZmZDQ5MTAxNTgwIGVycm9yIDYgaW4gdGVzdF8xX3RvXzFfZXZlbnRzWzU2MWE0YTNkNDAwMCsyMDAwXQorWyAxNDY4LjczNDQ3OV0gQ29kZTogZmYgYmYgMGEgMDAgMDAgMDAgZTggZTYgZWYgZmYgZmYgYjkgYzkgMDAgMDAgMDAgNDggOGQgMTUgNjEgMTMgMDAgMDAgYmYgMDEgMDAgMDAgMDAgMzEgYzAgNDggOGQgMzUgYzcgMGYgMDAgMDAgZTggOTcgZjAKK1NlZ21lbnRhdGlvbiBmYXVsdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2V2ZW50cy5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2V2ZW50cy5jIGIvc3JjL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfZXZlbnRzLmMKK2luZGV4IDQ2NDM5YmYuLmEwODY4MzIgMTAwNjQ0CistLS0gYS9zcmMvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ldmVudHMuYworKysrIGIvc3JjL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfZXZlbnRzLmMKK0BAIC05Miw5ICs5MiwxMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCS8qIENyZWF0ZSB0aGUgY2xpZW50IHNvY2tldC4gICovCisgCWNsdF9zayA9IHRlc3Rfc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFApOworIAorKwltZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsKKyAJZXZlbnQuc2N0cF9kYXRhX2lvX2V2ZW50ID0gMTsKKyAJZXZlbnQuc2N0cF9hc3NvY2lhdGlvbl9ldmVudCA9IDE7CisgCWV2ZW50LnNjdHBfc2h1dGRvd25fZXZlbnQgPSAxOworKwlldmVudC5zY3RwX2F1dGhlbnRpY2F0aW9uX2V2ZW50ID0gMTsKKyAJbGVuID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2V2ZW50X3N1YnNjcmliZSk7CisgCXRlc3Rfc2V0c29ja29wdChzdnJfc2ssIFNDVFBfRVZFTlRTLCAmZXZlbnQsIGxlbik7CisgCXRlc3Rfc2V0c29ja29wdChjbHRfc2ssIFNDVFBfRVZFTlRTLCAmZXZlbnQsIGxlbik7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLXdpdGhzY3RwLXVzZS1QQUNLQUdFX1ZFUlNJT04taW4td2l0aHNjdHAuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29scy8wMDAxLXdpdGhzY3RwLXVzZS1QQUNLQUdFX1ZFUlNJT04taW4td2l0aHNjdHAuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTM3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzLzAwMDEtd2l0aHNjdHAtdXNlLVBBQ0tBR0VfVkVSU0lPTi1pbi13aXRoc2N0cC5oLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gN2MwZWY0ZDQ0MWIzODMzZTcyMWRmNThmNTZlMmNiOGM4MWIzNGRmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpbiBMb25nIDxsdWNpZW4ueGluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTYgQXVnIDIwMTggMTQ6MTI6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2l0aHNjdHA6IHVzZSBAUEFDS0FHRV9WRVJTSU9OQCBpbiB3aXRoc2N0cC5oCisKK3VzZSBAUEFDS0FHRV9WRVJTSU9OQCB0byByZXBsYWNlIHRoZSBoYXJkY29kZSB2ZXJzaW9uLgorCitTaWduZWQtb2ZmLWJ5OiBYaW4gTG9uZyA8bHVjaWVuLnhpbkBnbWFpbC5jb20+CitBY2tlZC1ieTogTmVpbCBIb3JtYW4gPG5ob3JtYW5AdHV4ZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUucnVsZXMgICAgICAgICAgIHwgMyArKy0KKyBzcmMvd2l0aHNjdHAvd2l0aHNjdHAuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucnVsZXMgYi9NYWtlZmlsZS5ydWxlcworaW5kZXggODNmNWYwYy4uZDM2OTNmYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnJ1bGVzCisrKysgYi9NYWtlZmlsZS5ydWxlcworQEAgLTE1LDQgKzE1LDUgQEAKKyBlZGl0ID0gQHNlZCBcCisgCS1lICJzfFxAYmluZGlyXEB8JChiaW5kaXIpfCIgXAorIAktZSAic3xcQGxpYmRpclxAfCQobGliZGlyKXwiIFwKKy0JLWUgInN8XEBQQUNLQUdFXEB8JChQQUNLQUdFKXwiCisrCS1lICJzfFxAUEFDS0FHRVxAfCQoUEFDS0FHRSl8IiBcCisrCS1lICJzfFxAUEFDS0FHRV9WRVJTSU9OXEB8JChQQUNLQUdFX1ZFUlNJT04pfCIKK2RpZmYgLS1naXQgYS9zcmMvd2l0aHNjdHAvd2l0aHNjdHAuaW4gYi9zcmMvd2l0aHNjdHAvd2l0aHNjdHAuaW4KK2luZGV4IDdmMTgyYmEuLmZkYTVlYmMgMTAwNjQ0CistLS0gYS9zcmMvd2l0aHNjdHAvd2l0aHNjdHAuaW4KKysrKyBiL3NyYy93aXRoc2N0cC93aXRoc2N0cC5pbgorQEAgLTIsNyArMiw4IEBACisgIyAtKi0gc2ggLSotCisgTElCRElSPUBsaWJkaXJAL0BQQUNLQUdFQAorIEJJTkRJUj1AYmluZGlyQAorLWV4cG9ydCBMRF9QUkVMT0FEPSR7TElCRElSfS9saWJ3aXRoc2N0cC5zby4xLjAuMTcKKytMSUJWRVI9QFBBQ0tBR0VfVkVSU0lPTkAKKytleHBvcnQgTERfUFJFTE9BRD0ke0xJQkRJUn0vbGlid2l0aHNjdHAuc28uJHtMSUJWRVJ9CisgaWYgISAke0JJTkRJUn0vY2hlY2tzY3RwIDI+IC9kZXYvbnVsbAorIHRoZW4KKyAgICAgJHtCSU5ESVJ9L2NoZWNrc2N0cDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzXzEuMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29sc18xLjAuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMWNjOTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzXzEuMC4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIExpbnV4IEtlcm5lbCBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wgKGxrc2N0cCkgcHJvamVjdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9sa3NjdHAub3JnIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORy5saWI7bWQ1PTBhMWI3OWFmOTUxYzQyYTljODU3MzUzM2ZiYmE5YTkyIFwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MGM1NmRiMDE0M2Y0ZjgwYzM2OWVlM2FmNzQyNWFmNmUgXAotIgotCi1TUkNSRVYgPSAiNzM2YjkxZDM0MGUzZjI1MTk3MTRmMjkzMGVkNjNiMTY0ZDM2MzUxMSIKLQotUFYgLj0gIitnaXQke1NSQ1BWfSIKLUxLX1JFTCA9ICIxLjAuMTciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL3NjdHAvbGtzY3RwLXRvb2xzLmdpdCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgZmlsZTovL3Y0dGVzdC5zaCBcCi0gICAgZmlsZTovL3Y2dGVzdC5zaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnIHB0ZXN0Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Y0dGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Y2dGVzdC5zaCAke0R9JHtQVEVTVF9QQVRIfQotICAgIGZvciB0ZXN0Y2FzZSBpbiBgZmluZCAke0J9L3NyYy9hcHBzLy5saWJzICR7Qn0vc3JjL2Z1bmNfdGVzdHMvLmxpYnMgLW1heGRlcHRoIDEgLXR5cGUgZiAtZXhlY3V0YWJsZWA7IGRvCi0gICAgICAgIGluc3RhbGwgJHRlc3RjYXNlICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgZG9uZQotfQotCi1TT0xJQlZFUlNJT049IiR7TEtfUkVMfSIKLVNPTElCTUFKT1JWRVJTSU9OPSIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0td2l0aHNjdHAgJHtQTn0tdXRpbHMiCi0KLUZJTEVTXyR7UE59ID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYnNjdHAuc28uJHtTT0xJQlZFUlNJT059IFwKLSAgICAke2xpYmRpcn0vbGlic2N0cC5zby4ke1NPTElCTUFKT1JWRVJTSU9OfSBcCi0iCi0KLUZJTEVTXyR7UE59LXdpdGhzY3RwID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xrc2N0cC10b29scy9saWJ3aXRoc2N0cC5zby4ke1NPTElCVkVSU0lPTn0gXAotICAgICR7bGliZGlyfS9sa3NjdHAtdG9vbHMvbGlid2l0aHNjdHAuc28uJHtTT0xJQk1BSk9SVkVSU0lPTn0gXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYnNjdHAuc28gXAotICAgICR7bGliZGlyfS9sa3NjdHAtdG9vbHMvbGlid2l0aHNjdHAuc28gXAotICAgICR7ZGF0YWRpcn0vbGtzY3RwLXRvb2xzLyouYyBcCi0gICAgJHtkYXRhZGlyfS9sa3NjdHAtdG9vbHMvKi5oIFwKLSIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLVJSRUNPTU1FTkRTXyR7UE59LXV0aWxzICs9ICJrZXJuZWwtbW9kdWxlLXNjdHAiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAia2VybmVsLW1vZHVsZS1zY3RwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sa3NjdHAtdG9vbHMvbGtzY3RwLXRvb2xzXzEuMC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29sc18xLjAuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjZWE2YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGtzY3RwLXRvb2xzL2xrc2N0cC10b29sc18xLjAuMTguYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJUaGUgTGludXggS2VybmVsIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbCAobGtzY3RwKSBwcm9qZWN0IgorSE9NRVBBR0UgPSAiaHR0cDovL2xrc2N0cC5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HLmxpYjttZDU9MGExYjc5YWY5NTFjNDJhOWM4NTczNTMzZmJiYTlhOTIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0wYzU2ZGIwMTQzZjRmODBjMzY5ZWUzYWY3NDI1YWY2ZSBcCisiCisKK1NSQ1JFViA9ICIxYjA3N2FmNjJkODNkNTNjMzRiMWJkZThiYWQ2NjQ4MTQ5ZDVlZGY5IgorCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorTEtfUkVMID0gIjEuMC4xOCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vc2N0cC9sa3NjdHAtdG9vbHMuZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS13aXRoc2N0cC11c2UtUEFDS0FHRV9WRVJTSU9OLWluLXdpdGhzY3RwLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtQ1VSUkVOVC1SRVZJU0lPTi1hbmQtQUdFLWZvci1saWJzY3QucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1uZXRpbmV0LXNjdHAuaC1ub3QtdG8tYmUtaW5zdGFsbGVkLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1idWlsZC1yZW1vdmUtdjQuMTItc2Vjb25kYXJ5LWRlZmluZXMtaW4tZmF2b3Itb2YtSEFWLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1idWlsZC1maXgtcHJvYmluZy1mb3ItSEFWRV9TQ1RQX1NFTkRWLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1idWlsZC0wYjBkY2U3YTM2ZmItYWN0dWFsbHktYmVsb25ncy10by12NC4xOS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdGVzdF8xX3RvXzFfZXZlbnRzLmMtaW5pdGlhbGl6ZS1ldmVudC1wcm9wZXJseS5wYXRjaCBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgZmlsZTovL3Y0dGVzdC5zaCBcCisgICAgZmlsZTovL3Y2dGVzdC5zaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGJpbmNvbmZpZyBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS92NHRlc3Quc2ggJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS92NnRlc3Quc2ggJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBmb3IgdGVzdGNhc2UgaW4gYGZpbmQgJHtCfS9zcmMvYXBwcy8ubGlicyAke0J9L3NyYy9mdW5jX3Rlc3RzLy5saWJzIC1tYXhkZXB0aCAxIC10eXBlIGYgLWV4ZWN1dGFibGVgOyBkbworICAgICAgICBpbnN0YWxsICR0ZXN0Y2FzZSAke0R9JHtQVEVTVF9QQVRIfQorICAgIGRvbmUKK30KKworU09MSUJWRVJTSU9OPSIke0xLX1JFTH0iCitTT0xJQk1BSk9SVkVSU0lPTj0iMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXdpdGhzY3RwICR7UE59LXV0aWxzIgorCitGSUxFU18ke1BOfSA9ICIgXAorICAgICR7bGliZGlyfS9saWJzY3RwLnNvLiR7U09MSUJWRVJTSU9OfSBcCisgICAgJHtsaWJkaXJ9L2xpYnNjdHAuc28uJHtTT0xJQk1BSk9SVkVSU0lPTn0gXAorIgorCitGSUxFU18ke1BOfS13aXRoc2N0cCA9ICIgXAorICAgICR7bGliZGlyfS9sa3NjdHAtdG9vbHMvbGlid2l0aHNjdHAuc28uJHtTT0xJQlZFUlNJT059IFwKKyAgICAke2xpYmRpcn0vbGtzY3RwLXRvb2xzL2xpYndpdGhzY3RwLnNvLiR7U09MSUJNQUpPUlZFUlNJT059IFwKKyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorICAgICR7bGliZGlyfS9saWJzY3RwLnNvIFwKKyAgICAke2xpYmRpcn0vbGtzY3RwLXRvb2xzL2xpYndpdGhzY3RwLnNvIFwKKyAgICAke2RhdGFkaXJ9L2xrc2N0cC10b29scy8qLmMgXAorICAgICR7ZGF0YWRpcn0vbGtzY3RwLXRvb2xzLyouaCBcCisiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitSUkVDT01NRU5EU18ke1BOfS11dGlscyArPSAia2VybmVsLW1vZHVsZS1zY3RwIgorUlJFQ09NTUVORFNfJHtQTn0tcHRlc3QgKz0gImtlcm5lbC1tb2R1bGUtc2N0cCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29scy8wMDAxLUZpeC1wb3RlbnRpYWwtc3RyaW5nLXRydW5jYXRpb24taW4tc3RybmNweS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29scy8wMDAxLUZpeC1wb3RlbnRpYWwtc3RyaW5nLXRydW5jYXRpb24taW4tc3RybmNweS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjIxZDhmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzLzAwMDEtRml4LXBvdGVudGlhbC1zdHJpbmctdHJ1bmNhdGlvbi1pbi1zdHJuY3B5LnBhdGNoCkBAIC0wLDAgKzEsMTM5IEBACitGcm9tIDU4YjZkOWEyZWZlMTAxZTViODBmZDcwOGU2Zjg0YzdjYTc3OWNlOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBNYXkgMjAxOCAyMDoyNzo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggcG90ZW50aWFsIHN0cmluZyB0cnVuY2F0aW9uIGluIHN0cm5jcHkoKQorCitHQ0MgOCBjb21wbGFpbnMgYWJvdXQgdGhlIHN0cmluZyB0cnVuY2F0aW9uIGR1cmluZyBjb3B5CisKK2Vycm9yOiAnc3RybmNweScgc3BlY2lmaWVkIGJvdW5kIDE2IGVxdWFscyBkZXN0aW5hdGlvbiBzaXplCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGVwcmljYXRlZCBjb21wb25lbnRdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9saXN0ZW4tcGFja2V0LmMgfCAzICsrLQorIHRlc3RzL2xpc3Rlbi5jICAgICAgICB8IDMgKystCisgdGVzdHMvdGVzdDIuYyAgICAgICAgIHwgNCArKy0tCisgdGVzdHMvdGVzdDMuYyAgICAgICAgIHwgMyArKy0KKyB0ZXN0cy90ZXN0NC5jICAgICAgICAgfCAzICsrLQorIHRlc3RzL3Rlc3Q1LmMgICAgICAgICB8IDMgKystCisgdGVzdHMvdGVzdDYuYyAgICAgICAgIHwgMyArKy0KKyB0ZXN0cy90ZXN0Ny5jICAgICAgICAgfCAzICsrLQorIDggZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2xpc3Rlbi1wYWNrZXQuYyBiL3Rlc3RzL2xpc3Rlbi1wYWNrZXQuYworaW5kZXggZTQwYWY4MS4uZWFlMGM3MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xpc3Rlbi1wYWNrZXQuYworKysrIGIvdGVzdHMvbGlzdGVuLXBhY2tldC5jCitAQCAtNTAsNyArNTAsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAJCXJldHVybiAxOworIAl9CisgCistCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBpZmFjZSwgSUZfTkFNRVNJWkUpOworKwlzdHJuY3B5KHJlcS5pZnJfbmFtZSwgaWZhY2UsIElGX05BTUVTSVpFIC0gMSk7CisrCXJlcS5pZnJfbmFtZVtJRl9OQU1FU0laRSAtIDFdID0gJ1wwJzsKKyAJcmV0ID0gaW9jdGwoc2QsIFNJT0NHSUZJTkRFWCwgJnJlcSk7CisgCWlmIChyZXQgPCAwKQorIAkJcGVycm9yKCJpb2N0bDogU0lPQ0dJRklOREVYIik7CitkaWZmIC0tZ2l0IGEvdGVzdHMvbGlzdGVuLmMgYi90ZXN0cy9saXN0ZW4uYworaW5kZXggNzVjMzIwYi4uNWNlMWVkOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2xpc3Rlbi5jCisrKysgYi90ZXN0cy9saXN0ZW4uYworQEAgLTQ3LDcgKzQ3LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgCQlyZXR1cm4gMTsKKyAJfQorIAorLQlzdHJuY3B5KHJlcS5pZnJfbmFtZSwgaWZhY2UsIElGTkFNU0laKTsKKysJc3RybmNweShyZXEuaWZyX25hbWUsIGlmYWNlLCBJRk5BTVNJWiAtIDEpOworKwlyZXEuaWZyX25hbWVbSUZfTkFNRVNJWkUgLSAxXSA9ICdcMCc7CisgCXJldCA9IGlvY3RsKHNkLCBTSU9DR0lGSFdBRERSLCAmcmVxKTsKKyAJaWYgKHJldCA8IDApCisgCQlwZXJyb3IoImlvY3RsOiBTSU9DR0lGSFdBRERSIik7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdDIuYyBiL3Rlc3RzL3Rlc3QyLmMKK2luZGV4IDU4ZWI3NGIuLjVkMDI4MzggMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0Mi5jCisrKysgYi90ZXN0cy90ZXN0Mi5jCitAQCAtNDUsOCArNDUsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAJCXBlcnJvcigic29ja2V0Iik7CisgCQlyZXR1cm4gMTsKKyAJfQorLQorLQlzdHJuY3B5KHJlcS5pZnJfbmFtZSwgYXJndlsxXSA/OiAid3BhbjAiLCBJRl9OQU1FU0laRSk7CisrCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBhcmd2WzFdID86ICJ3cGFuMCIsIElGX05BTUVTSVpFIC0gMSk7CisrCXJlcS5pZnJfbmFtZVtJRl9OQU1FU0laRSAtIDFdID0gJ1wwJzsKKyAJcmV0ID0gaW9jdGwoc2QsIFNJT0NHSUZIV0FERFIsICZyZXEpOworIAlpZiAocmV0IDwgMCkKKyAJCXBlcnJvcigiaW9jdGw6IFNJT0NHSUZIV0FERFIiKTsKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0My5jIGIvdGVzdHMvdGVzdDMuYworaW5kZXggZmIzNjYyNy4uMmY1MGE1YSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3QzLmMKKysrKyBiL3Rlc3RzL3Rlc3QzLmMKK0BAIC00Niw3ICs0Niw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworIAkJcmV0dXJuIDE7CisgCX0KKyAKKy0Jc3RybmNweShyZXEuaWZyX25hbWUsIGFyZ3ZbMV0gPzogIndwYW4wIiwgSUZfTkFNRVNJWkUpOworKwlzdHJuY3B5KHJlcS5pZnJfbmFtZSwgYXJndlsxXSA/OiAid3BhbjAiLCBJRl9OQU1FU0laRSAtIDEpOworKwlyZXEuaWZyX25hbWVbSUZfTkFNRVNJWkUgLSAxXSA9ICdcMCc7CisgCXJldCA9IGlvY3RsKHNkLCBTSU9DR0lGSFdBRERSLCAmcmVxKTsKKyAJaWYgKHJldCA8IDApCisgCQlwZXJyb3IoImlvY3RsOiBTSU9DR0lGSFdBRERSIik7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdDQuYyBiL3Rlc3RzL3Rlc3Q0LmMKK2luZGV4IDMzYzI3NGMuLjg3MzcxNDkgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0NC5jCisrKysgYi90ZXN0cy90ZXN0NC5jCitAQCAtNDYsNyArNDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAJCXJldHVybiAxOworIAl9CisgCistCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBhcmd2WzFdID86ICJ3cGFuMCIsIElGX05BTUVTSVpFKTsKKysJc3RybmNweShyZXEuaWZyX25hbWUsIGFyZ3ZbMV0gPzogIndwYW4wIiwgSUZfTkFNRVNJWkUgLSAxKTsKKysJcmVxLmlmcl9uYW1lW0lGX05BTUVTSVpFIC0gMV0gPSAnXDAnOworIAlyZXQgPSBpb2N0bChzZCwgU0lPQ0dJRkhXQUREUiwgJnJlcSk7CisgCWlmIChyZXQgPCAwKQorIAkJcGVycm9yKCJpb2N0bDogU0lPQ0dJRkhXQUREUiIpOworZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3Q1LmMgYi90ZXN0cy90ZXN0NS5jCitpbmRleCA0NDM5ZGZhLi4yOGRiNTYyIDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdDUuYworKysrIGIvdGVzdHMvdGVzdDUuYworQEAgLTQ1LDcgKzQ1LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KSB7CisgCQlyZXR1cm4gMTsKKyAJfQorIAorLQlzdHJuY3B5KHJlcS5pZnJfbmFtZSwgYXJndlsxXSA/OiAid3BhbjAiLCBJRl9OQU1FU0laRSk7CisrCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBhcmd2WzFdID86ICJ3cGFuMCIsIElGX05BTUVTSVpFIC0gMSk7CisrCXJlcS5pZnJfbmFtZVtJRl9OQU1FU0laRSAtIDFdID0gJ1wwJzsKKyAJcmV0ID0gaW9jdGwoc2QsIFNJT0NHSUZBRERSLCAmcmVxKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCXBlcnJvcigiaW9jdGw6IFNJT0NHSUZBRERSIik7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdDYuYyBiL3Rlc3RzL3Rlc3Q2LmMKK2luZGV4IGUzNzViZmIuLmNlN2RlNTkgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0Ni5jCisrKysgYi90ZXN0cy90ZXN0Ni5jCitAQCAtNDUsNyArNDUsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKyAJCXJldHVybiAxOworIAl9CisgCistCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBhcmd2WzFdID86ICJ3cGFuMCIsIElGX05BTUVTSVpFKTsKKysJc3RybmNweShyZXEuaWZyX25hbWUsIGFyZ3ZbMV0gPzogIndwYW4wIiwgSUZfTkFNRVNJWkUgLSAxKTsKKysJcmVxLmlmcl9uYW1lW0lGX05BTUVTSVpFIC0gMV0gPSAnXDAnOworIAlyZXQgPSBpb2N0bChzZCwgU0lPQ0dJRkFERFIsICZyZXEpOworIAlpZiAocmV0IDwgMCkgeworIAkJcGVycm9yKCJpb2N0bDogU0lPQ0dJRkFERFIiKTsKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0Ny5jIGIvdGVzdHMvdGVzdDcuYworaW5kZXggZTlhNWE1NS4uMzdkYTIyZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3Q3LmMKKysrKyBiL3Rlc3RzL3Rlc3Q3LmMKK0BAIC01OCw3ICs1OCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworIAlpZiAocmV0KQorIAkJcGVycm9yKCJzZXRzb2Nrb3B0Iik7CisgCistCXN0cm5jcHkocmVxLmlmcl9uYW1lLCBhcmd2WzFdID86ICJ3cGFuMCIsIElGX05BTUVTSVpFKTsKKysJc3RybmNweShyZXEuaWZyX25hbWUsIGFyZ3ZbMV0gPzogIndwYW4wIiwgSUZfTkFNRVNJWkUgLSAxKTsKKysJcmVxLmlmcl9uYW1lW0lGX05BTUVTSVpFIC0gMV0gPSAnXDAnOworIAlyZXQgPSBpb2N0bChzZCwgU0lPQ0dJRkhXQUREUiwgJnJlcSk7CisgCWlmIChyZXQgPCAwKQorIAkJcGVycm9yKCJpb2N0bDogU0lPQ0dJRkhXQUREUiIpOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29sc19naXQuYmIKaW5kZXggZDBmZTU5Yy4uYjcwYzQzZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xvd3Bhbi10b29scy9sb3dwYW4tdG9vbHNfZ2l0LmJiCkBAIC0xNSw2ICsxNSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1pei5jLVVuZGVmLWRwcmludGYtYmVmb3JlLXJlZGVmaW5pbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbmV3bGluZS1mcm9tLWZvcm1hdC1saW5lLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29vcmRpbmF0b3ItRml4LXN0cm5jcHktcmFuZ2Utd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1wb3RlbnRpYWwtc3RyaW5nLXRydW5jYXRpb24taW4tc3RybmNweS5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICIxYzJkODY3NGNjNmY0YjExNjZhMDY2ZTg4MjJlMjk1YzEwNWFlN2EyIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkM2QxNzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGhpZ2gtcGVyZm9ybWFuY2UgbWVtb3J5IG9iamVjdCBjYWNoaW5nIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlwKLSBtZW1jYWNoZWQgb3B0aW1pemVzIHNwZWNpZmljIGhpZ2gtbG9hZCBzZXJ2aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCBcCi0gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXRzIHZlcnNhdGlsZSBuby1sb2NraW5nIG1lbW9yeSBhY2Nlc3Mgc3lzdGVtLiBDbGllbnRzIFwKLSBhcmUgYXZhaWxhYmxlIGluIHNldmVyYWwgZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdG8gc3VpdCB0aGUgbmVlZHMgXAotIG9mIHRoZSBzcGVjaWZpYyBhcHBsaWNhdGlvbi4gVHJhZGl0aW9uYWxseSB0aGlzIGhhcyBiZWVuIHVzZWQgaW4gbW9kX3BlcmwgXAotIGFwcHMgdG8gYXZvaWQgc3RvcmluZyBsYXJnZSBjaHVua3Mgb2YgZGF0YSBpbiBBcGFjaGUgbWVtb3J5LCBhbmQgdG8gc2hhcmUgXAotIHRoaXMgYnVyZGVuIGFjcm9zcyBzZXZlcmFsIG1hY2hpbmVzLiIKLVNFQ1RJT04gPSAid2ViIgotSE9NRVBBR0UgPSAiaHR0cDovL21lbWNhY2hlZC5vcmcvIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdlNWRlZDczNjNkMzM1ZTFiYjE4MDEzY2EwODA0NmZmIgotCi1pbmhlcml0IGF1dG90b29scwotCi1ERVBFTkRTICs9ICJsaWJldmVudCIKLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAotICAgIHBlcmwtbW9kdWxlLXRpZS1oYXNoIGJhc2ggXAotICAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lbWNhY2hlZC5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21lbWNhY2hlZC1hZGQtaHVnZXRsYmZzLWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjgxMzI2NTEzZjYwZDdiYTQ4MmY4MTMxOTc1Y2Q1NWFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMwMDFmODEyMDI0YmI0NjFiNWU0ZDdkMDUwNmRhYWI2M2RmZjk2MTRlZWEyNmY0NjUzNmMzYjdlMWU2MDFjMzIiCi0KLSMgc2V0IHRoZSBzYW1lIENPTVBBVElCTEVfSE9TVCBhcyBsaWJodWdldGxiZnMKLUNPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JwotCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCi0gICAgaWYgZW5kaWFubmVzcyA9PSAnbGUnOgotICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1saXR0bGUiKQotICAgIGVsc2U6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCdFWFRSQV9PRUNPTkYnLCAiIGFjX2N2X2NfZW5kaWFuPWJpZyIpCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2h1Z2V0bGJmc10gPSAiLS1lbmFibGUtaHVnZXRsYmZzLCAtLWRpc2FibGUtaHVnZXRsYmZzLCBsaWJodWdldGxiZnMiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQKLQotSU5JVFNDUklQVF9OQU1FID0gIm1lbWNhY2hlZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L3NjcmlwdHMvbWVtY2FjaGVkLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21lbWNhY2hlZAotICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC10b29sICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3N0YXJ0LW1lbWNhY2hlZCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjUuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjYWZjOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjUuMTAuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBIGhpZ2gtcGVyZm9ybWFuY2UgbWVtb3J5IG9iamVjdCBjYWNoaW5nIHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlwKKyBtZW1jYWNoZWQgb3B0aW1pemVzIHNwZWNpZmljIGhpZ2gtbG9hZCBzZXJ2aW5nIGFwcGxpY2F0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCBcCisgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgaXRzIHZlcnNhdGlsZSBuby1sb2NraW5nIG1lbW9yeSBhY2Nlc3Mgc3lzdGVtLiBDbGllbnRzIFwKKyBhcmUgYXZhaWxhYmxlIGluIHNldmVyYWwgZGlmZmVyZW50IHByb2dyYW1taW5nIGxhbmd1YWdlcywgdG8gc3VpdCB0aGUgbmVlZHMgXAorIG9mIHRoZSBzcGVjaWZpYyBhcHBsaWNhdGlvbi4gVHJhZGl0aW9uYWxseSB0aGlzIGhhcyBiZWVuIHVzZWQgaW4gbW9kX3BlcmwgXAorIGFwcHMgdG8gYXZvaWQgc3RvcmluZyBsYXJnZSBjaHVua3Mgb2YgZGF0YSBpbiBBcGFjaGUgbWVtb3J5LCBhbmQgdG8gc2hhcmUgXAorIHRoaXMgYnVyZGVuIGFjcm9zcyBzZXZlcmFsIG1hY2hpbmVzLiIKK1NFQ1RJT04gPSAid2ViIgorSE9NRVBBR0UgPSAiaHR0cDovL21lbWNhY2hlZC5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdlNWRlZDczNjNkMzM1ZTFiYjE4MDEzY2EwODA0NmZmIgorCitpbmhlcml0IGF1dG90b29scworCitERVBFTkRTICs9ICJsaWJldmVudCIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsIHBlcmwtbW9kdWxlLXBvc2l4IHBlcmwtbW9kdWxlLWF1dG9sb2FkZXIgXAorICAgIHBlcmwtbW9kdWxlLXRpZS1oYXNoIGJhc2ggXAorICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lbWNhY2hlZC5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21lbWNhY2hlZC1hZGQtaHVnZXRsYmZzLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjg0NjI2MTZiNTU0MTgzYTc1ODQ1YjAzYzU2ODM3Y2NhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5NGMwNjBkYmQ5NmQ1NDZjNzRhYjg1YTNjYzM5ODRkMDA5YjQ0MjM3NjdhYzMzZTA1ZGQyMzQwYzAxZjFjNGIiCisKKyMgc2V0IHRoZSBzYW1lIENPTVBBVElCTEVfSE9TVCBhcyBsaWJodWdldGxiZnMKK0NPTVBBVElCTEVfSE9TVCA9ICcoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JworCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCisgICAgaWYgZW5kaWFubmVzcyA9PSAnbGUnOgorICAgICAgICBkLmFwcGVuZFZhcignRVhUUkFfT0VDT05GJywgIiBhY19jdl9jX2VuZGlhbj1saXR0bGUiKQorICAgIGVsc2U6CisgICAgICAgIGQuYXBwZW5kVmFyKCdFWFRSQV9PRUNPTkYnLCAiIGFjX2N2X2NfZW5kaWFuPWJpZyIpCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2h1Z2V0bGJmc10gPSAiLS1lbmFibGUtaHVnZXRsYmZzLCAtLWRpc2FibGUtaHVnZXRsYmZzLCBsaWJodWdldGxiZnMiCisKK2luaGVyaXQgdXBkYXRlLXJjLmQKKworSU5JVFNDUklQVF9OQU1FID0gIm1lbWNhY2hlZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L3NjcmlwdHMvbWVtY2FjaGVkLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21lbWNhY2hlZAorICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL21lbWNhY2hlZC10b29sICR7RH0vdXNyL3NoYXJlL21lbWNhY2hlZC9zY3JpcHRzCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zY3JpcHRzL3N0YXJ0LW1lbWNhY2hlZCAke0R9L3Vzci9zaGFyZS9tZW1jYWNoZWQvc2NyaXB0cworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uYmQvbmJkXzMuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZC9uYmRfMy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFkNzViZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZC9uYmRfMy4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk5ldHdvcmsgQmxvY2sgRGV2aWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL25iZC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNzNkMTE2NDRhMjhiOWYzMzUyOTJjZGIzYmRjNGI3NGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTQ0MjBmNzRjYjE2ZGM2MDlhOTMwMmVkMWVmZDY1MzA2NGJlZDdhODM1N2U5ZDczZGFhYmMzMzYwOGUzZjJhMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VTID0gIiR7UE59LWNsaWVudCAke1BOfS1zZXJ2ZXIgJHtQTn0tZGJnICR7UE59LXRyZHVtcCAke1BOfS1kb2MiCi0KLUZJTEVTXyR7UE59LWNsaWVudCA9ICIke3NiaW5kaXJ9LyR7QlBOfS1jbGllbnQiCi1GSUxFU18ke1BOfS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyR7QlBOfS1zZXJ2ZXIiCi1GSUxFU18ke1BOfS10cmR1bXAgPSAiJHtiaW5kaXJ9LyR7QlBOfS10cmR1bXAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZC9uYmRfMy4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmJkL25iZF8zLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjAyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZC9uYmRfMy4xNy5iYgpAQCAtMCwwICsxLDE5IEBACitERVNDUklQVElPTiA9ICJOZXR3b3JrIEJsb2NrIERldmljZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9uYmQuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjk4Yjc0YzY1NWVkOTRhNjY2ODZjNWJhMTk0ODBkOThlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NWM2YmIxYTNhYjMzYjk1M2FmOTliNzNmYjQ4MzNlMTIzYmQyNTQzMzUxM2IzMmQ1N2RiZWIxYTBhMGQxODkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9ICIke1BOfS1jbGllbnQgJHtQTn0tc2VydmVyICR7UE59LWRiZyAke1BOfS10cmR1bXAgJHtQTn0tZG9jIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8ke0JQTn0tY2xpZW50IgorRklMRVNfJHtQTn0tc2VydmVyID0gIiR7YmluZGlyfS8ke0JQTn0tc2VydmVyIgorRklMRVNfJHtQTn0tdHJkdW1wID0gIiR7YmluZGlyfS8ke0JQTn0tdHJkdW1wIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIKaW5kZXggY2ViYzFkOS4uZWM0ODc5NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiCkBAIC0xOSwxMyArMTksMTAgQEAKIAogRVhUUkFfT0VDT05GICs9ICJQRVJMPSR7VVNSQklOUEFUSH0vcGVybCIKIAotTERGTEFHUyArPSAiLWZ1c2UtbGQ9Z29sZCIKLUxERkxBR1NfcmVtb3ZlX3Jpc2N2NjQgPSAiLWZ1c2UtbGQ9Z29sZCIKLQotVE9PTENIQUlOID0gImdjYyIKLQogVVNFX05MUyA9ICJ5ZXMiCiAKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIgorCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvZ2V0dGV4dC5oICR7U30vaW5jbHVkZQogICAgICR7U30vYXV0b2dlbi5zaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjYXQvbmV0Y2F0LW9wZW5ic2QvMDAwMS1idW5kbGUtb3duLWJhc2U2NC1lbmNvZGUtZGVjb2RlLWZ1bmN0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2F0L25ldGNhdC1vcGVuYnNkLzAwMDEtYnVuZGxlLW93bi1iYXNlNjQtZW5jb2RlLWRlY29kZS1mdW5jdGlvbnMucGF0Y2gKaW5kZXggMDk2NmI2NS4uOTI5ZjYzZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjYXQvbmV0Y2F0LW9wZW5ic2QvMDAwMS1idW5kbGUtb3duLWJhc2U2NC1lbmNvZGUtZGVjb2RlLWZ1bmN0aW9ucy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNhdC9uZXRjYXQtb3BlbmJzZC8wMDAxLWJ1bmRsZS1vd24tYmFzZTY0LWVuY29kZS1kZWNvZGUtZnVuY3Rpb25zLnBhdGNoCkBAIC0xLDQwICsxLDQ3IEBACi1Gcm9tIGNjZDE2NmI3M2VhYWU0ZGQxZTE3ODVjNjNjZWI5YjMwMzU2OGVkNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAxMTozMDo0OSAtMDcwMAorRnJvbSAzZGE0OGVjMTNhNDRiNzFjYTUxYWRiYzgwM2I0MmMxYjI5YTQzZjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTQ6MDM6NTEgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gYnVuZGxlIG93biBiYXNlNjQgZW5jb2RlL2RlY29kZSBmdW5jdGlvbnMKIAogTm90IGFsbCBsaWJjIGltcGxlbWVudGF0aW9ucyBwcm92aWRlIGl0LgogYXMgYW4gYXNpZGUgbGlicmVzb2x2IGlzIG5vIGxvbmdlciBuZWVkZWQKIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1VwZGF0ZSB0byB2ZXJzaW9uIDEuMTkwLTIKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZSB8ICAgNCArLQogIGJhc2U2NC5jIHwgMzEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIG5ldGNhdC5jIHwgICAyICsKKyBuZXRjYXQuYyB8ICAgMyArCiAgc29ja3MuYyAgfCAgIDMgKwotIDQgZmlsZXMgY2hhbmdlZCwgMzIwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgNCBmaWxlcyBjaGFuZ2VkLCAzMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFzZTY0LmMKIAotSW5kZXg6IG5ldGNhdC1vcGVuYnNkLTEuMTA1L01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmV0Y2F0LW9wZW5ic2QtMS4xMDUub3JpZy9NYWtlZmlsZQotKysrIG5ldGNhdC1vcGVuYnNkLTEuMTA1L01ha2VmaWxlCi1AQCAtMSw5ICsxLDkgQEAKLSAjICAgICAgICRPcGVuQlNEOiBNYWtlZmlsZSx2IDEuNiAyMDAxLzA5LzAyIDE4OjQ1OjQxIGpha29iIEV4cCAkCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggODI0N2NmZC4uYjhkODU0NyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEsMTAgKzEsMTAgQEAKKyAjCSRPcGVuQlNEOiBNYWtlZmlsZSx2IDEuNyAyMDE1LzA5LzExIDIxOjA3OjAxIGJlY2sgRXhwICQKICAKICBQUk9HPQluYwogLVNSQ1M9CW5ldGNhdC5jIGF0b21pY2lvLmMgc29ja3MuYwogK1NSQ1M9CW5ldGNhdC5jIGF0b21pY2lvLmMgc29ja3MuYyBiYXNlNjQuYwogIAotLUxJQlM9ICBgcGtnLWNvbmZpZyAtLWxpYnMgbGliYnNkYCAtbHJlc29sdgotK0xJQlM9ICBgcGtnLWNvbmZpZyAtLWxpYnMgbGliYnNkYAorIFBLR19DT05GSUcgPz0gcGtnLWNvbmZpZworLUxJQlM9ICBgJChQS0dfQ09ORklHKSAtLWxpYnMgbGliYnNkYCAtbHJlc29sdgorK0xJQlM9ICBgJChQS0dfQ09ORklHKSAtLWxpYnMgbGliYnNkYAogIE9CSlM9ICAkKFNSQ1M6LmM9Lm8pCiAgQ0ZMQUdTPSAgLWcgLU8yCiAgTERGTEFHUz0gIC1XbCwtLW5vLWFkZC1uZWVkZWQKLUluZGV4OiBuZXRjYXQtb3BlbmJzZC0xLjEwNS9iYXNlNjQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL2Jhc2U2NC5jIGIvYmFzZTY0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iMGVlNmMyCiAtLS0gL2Rldi9udWxsCi0rKysgbmV0Y2F0LW9wZW5ic2QtMS4xMDUvYmFzZTY0LmMKKysrKyBiL2Jhc2U2NC5jCiBAQCAtMCwwICsxLDMxMyBAQAogKy8qCiArICogQ29weXJpZ2h0IChjKSAxOTk2LTE5OTkgYnkgSW50ZXJuZXQgU29mdHdhcmUgQ29uc29ydGl1bS4KQEAgLTM0OSwzMSArMzU2LDM0IEBACiArCiArCXJldHVybiAodGFyaW5kZXgpOwogK30KLUluZGV4OiBuZXRjYXQtb3BlbmJzZC0xLjEwNS9uZXRjYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5ldGNhdC1vcGVuYnNkLTEuMTA1Lm9yaWcvbmV0Y2F0LmMKLSsrKyBuZXRjYXQtb3BlbmJzZC0xLjEwNS9uZXRjYXQuYwotQEAgLTE2OSw2ICsxNjksOSBAQCBzdGF0aWMgaW50IGNvbm5lY3Rfd2l0aF90aW1lb3V0KGludCBmZCwKLSAgICAgICAgIHNvY2tsZW5fdCBzYWxlbiwgaW50IGN0aW1lb3V0KTsKK2RpZmYgLS1naXQgYS9uZXRjYXQuYyBiL25ldGNhdC5jCitpbmRleCBhMGZiNTFiLi45YzRlZDIzIDEwMDY0NAorLS0tIGEvbmV0Y2F0LmMKKysrKyBiL25ldGNhdC5jCitAQCAtMjQwLDYgKzI0MCw5IEBAIHN0YXRpYyBpbnQgY29ubmVjdF93aXRoX3RpbWVvdXQoaW50IGZkLCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKnNhLAorIAogIHN0YXRpYyB2b2lkIHF1aXQoKTsKICAKLStpbnQJYjY0X250b3AodV9jaGFyIGNvbnN0ICpzcmMsIHNpemVfdCBzcmNsZW5ndGgsIGNoYXIgKnRhcmdldCwgc2l6ZV90IHRhcmdzaXplKTsKLStpbnQJYjY0X3B0b24oY2hhciBjb25zdCAqc3JjLCB1X2NoYXIgKnRhcmdldCwgc2l6ZV90IHRhcmdzaXplKTsKKytpbnQgICAgYjY0X250b3AodV9jaGFyIGNvbnN0ICpzcmMsIHNpemVfdCBzcmNsZW5ndGgsIGNoYXIgKnRhcmdldCwgc2l6ZV90IHRhcmdzaXplKTsKKytpbnQgICAgYjY0X3B0b24oY2hhciBjb25zdCAqc3JjLCB1X2NoYXIgKnRhcmdldCwgc2l6ZV90IHRhcmdzaXplKTsKICsKICBpbnQKICBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgewotSW5kZXg6IG5ldGNhdC1vcGVuYnNkLTEuMTA1L3NvY2tzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZXRjYXQtb3BlbmJzZC0xLjEwNS5vcmlnL3NvY2tzLmMKLSsrKyBuZXRjYXQtb3BlbmJzZC0xLjEwNS9zb2Nrcy5jCitkaWZmIC0tZ2l0IGEvc29ja3MuYyBiL3NvY2tzLmMKK2luZGV4IDkwNjhmMzkuLmM1NzZmNmIgMTAwNjQ0CistLS0gYS9zb2Nrcy5jCisrKysgYi9zb2Nrcy5jCiBAQCAtNTMsNiArNTMsOSBAQAogICNkZWZpbmUgU09DS1NfRE9NQUlOCTMKICAjZGVmaW5lIFNPQ0tTX0lQVjYJNAogIAotK2ludAliNjRfbnRvcCh1X2NoYXIgY29uc3QgKnNyYywgc2l6ZV90IHNyY2xlbmd0aCwgY2hhciAqdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpOwotK2ludAliNjRfcHRvbihjaGFyIGNvbnN0ICpzcmMsIHVfY2hhciAqdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpOworK2ludCAgICBiNjRfbnRvcCh1X2NoYXIgY29uc3QgKnNyYywgc2l6ZV90IHNyY2xlbmd0aCwgY2hhciAqdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpOworK2ludCAgICBiNjRfcHRvbihjaGFyIGNvbnN0ICpzcmMsIHVfY2hhciAqdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpOwogKwogIGludAlyZW1vdGVfY29ubmVjdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IGFkZHJpbmZvKTsKICBpbnQJc29ja3NfY29ubmVjdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IGFkZHJpbmZvLAogIAkgICAgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVjdCBhZGRyaW5mbywgaW50LAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNhdC9uZXRjYXQtb3BlbmJzZF8xLjEwNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2F0L25ldGNhdC1vcGVuYnNkXzEuMTA1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDc0MjBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2F0L25ldGNhdC1vcGVuYnNkXzEuMTA1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotcmVxdWlyZSBuZXRjYXQuaW5jCi1TVU1NQVJZID0gIk9wZW5CU0QgTmV0Y2F0IgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5kZWJpYW4ub3JnIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1lZTZiYmFhY2I1ZGI1ZjI5NzM4MThmMDkwMmMzYWU2ZiIKLQotREVQRU5EUyArPSAiZ2xpYi0yLjAgbGliYnNkIgotZG9fcGF0Y2hbZGVwZW5kc10gPSAicXVpbHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmV0Y2F0LW9wZW5ic2QvbmV0Y2F0LW9wZW5ic2RfJHtQVn0ub3JpZy50YXIuZ3o7bmFtZT1uZXRjYXQgXAotICAgICAgICAgICAke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRjYXQtb3BlbmJzZC9uZXRjYXQtb3BlbmJzZF8ke1BWfS03LmRlYmlhbi50YXIuZ3o7bmFtZT1uZXRjYXQtcGF0Y2g7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVuZGxlLW93bi1iYXNlNjQtZW5jb2RlLWRlY29kZS1mdW5jdGlvbnMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbmV0Y2F0Lm1kNXN1bV0gPSAiN2U2N2IyMmYxYWQ0MWExYjdlZmZiYjU5ZmYyOGZjYTEiCi1TUkNfVVJJW25ldGNhdC5zaGEyNTZzdW1dID0gIjQwNjUzZmU2NmMxNTE2ODc2YjYxYjA3ZTA5M2Q4MjZlMmE1NDYzYzVkOTk0ZjFiN2U2Y2UzMjhmM2VkYjIxMWUiCi1TUkNfVVJJW25ldGNhdC1wYXRjaC5tZDVzdW1dID0gImU5MTRmOGViN2VkYTVjNzVjNjc5ZGQ3Nzc4N2FjNzZiIgotU1JDX1VSSVtuZXRjYXQtcGF0Y2guc2hhMjU2c3VtXSA9ICJlZWU3NTkzMjdmZmVhMjkzZTgxZDBkZGU2NzkyMWI3ZmNmY2FkMjc5ZmZkN2EyYzlkMDM3YmJjOGY4ODJiMzYzIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgKz0gIidMREZMQUdTPSR7TERGTEFHU30nIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1uZXRjYXRfZG9fcGF0Y2goKSB7Ci0gICAgY2QgJHtTfQotICAgIHF1aWx0IHBvcCAtYSB8fCB0cnVlCi0gICAgaWYgWyAtZCAke1N9Ly5wYy1uZXRjYXQgXTsgdGhlbgotICAgICAgICAgICAgcm0gLXJmICR7U30vLnBjCi0gICAgICAgICAgICBtdiAke1N9Ly5wYy1uZXRjYXQgJHtTfS8ucGMKLSAgICAgICAgICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKLSAgICAgICAgICAgIHJtIC1yZiAke1N9Ly5wYyAke1N9L2RlYmlhbgotICAgIGZpCi0gICAgUVVJTFRfUEFUQ0hFUz0ke1N9L2RlYmlhbi9wYXRjaGVzIHF1aWx0IHB1c2ggLWEKLSAgICBtdiAke1N9Ly5wYyAke1N9Ly5wYy1uZXRjYXQKLX0KLQotZG9fdW5wYWNrW2NsZWFuZGlyc10gKz0gIiR7U30iCi0KLXB5dGhvbiBkb19wYXRjaCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ25ldGNhdF9kb19wYXRjaCcsIGQpCi0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdwYXRjaF9kb19wYXRjaCcsIGQpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgY2QgJHtTfQotICAgIHBrZ3JlbD00Ci0gICAgb2VfcnVubWFrZSBDRkxBR1M9IiRDRkxBR1MgLURERUJJQU5fVkVSU0lPTj1cIlxcXCIke3BrZ3JlbH1cXFwiXCIiCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9uYyAke0R9JHtiaW5kaXJ9L25jLiR7QlBOfQotfQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNhdC9uZXRjYXQtb3BlbmJzZF8xLjE5MC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2F0L25ldGNhdC1vcGVuYnNkXzEuMTkwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZmMwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNhdC9uZXRjYXQtb3BlbmJzZF8xLjE5MC5iYgpAQCAtMCwwICsxLDU2IEBACityZXF1aXJlIG5ldGNhdC5pbmMKK1NVTU1BUlkgPSAiT3BlbkJTRCBOZXRjYXQiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmRlYmlhbi5vcmciCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYzOWU2MGFlNGVhOWZkYjU1OWM4MzNiZTJlNTlkZTk5IgorCitERVBFTkRTICs9ICJnbGliLTIuMCBsaWJic2QiCitkb19wYXRjaFtkZXBlbmRzXSA9ICJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvdWJ1bnR1LythcmNoaXZlL3ByaW1hcnkvK3NvdXJjZWZpbGVzL25ldGNhdC1vcGVuYnNkLzEuMTkwLTIvbmV0Y2F0LW9wZW5ic2RfJHtQVn0ub3JpZy50YXIuZ3o7bmFtZT1uZXRjYXQgXAorICAgICAgICAgICBodHRwczovL2xhdW5jaHBhZC5uZXQvdWJ1bnR1LythcmNoaXZlL3ByaW1hcnkvK3NvdXJjZWZpbGVzL25ldGNhdC1vcGVuYnNkLzEuMTkwLTIvbmV0Y2F0LW9wZW5ic2RfJHtQVn0tMi5kZWJpYW4udGFyLnh6O25hbWU9bmV0Y2F0LXBhdGNoO3N1YmRpcj0ke0JQfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1bmRsZS1vd24tYmFzZTY0LWVuY29kZS1kZWNvZGUtZnVuY3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW25ldGNhdC5tZDVzdW1dID0gImRkMzJmZDFkNzkwM2I1NDFhZDg3MDk3OTQ1MzliOTU5IgorU1JDX1VSSVtuZXRjYXQuc2hhMjU2c3VtXSA9ICI2OGNjYzQ0ODM5MmMwNWVjNTFiYWVkMDE2N2E3MmI4YzY1MDQ1NGY5OTBiODk1ZDZlNjg3N2Q0MTZhMzhlNTM2IgorU1JDX1VSSVtuZXRjYXQtcGF0Y2gubWQ1c3VtXSA9ICI3ODA1OGI3YWYwMTcwNjU0Yjg3N2IwMmMzNzcxNmNkZiIKK1NSQ19VUklbbmV0Y2F0LXBhdGNoLnNoYTI1NnN1bV0gPSAiODgwODhhZjNmNTIwYzc4MjVlNTliYzEzM2Q2NWU3MGZjNGEzMDEzOWQ0NTFjNmZhYWJiZDlmMjQwYmM3ODM3NCIKKworaW5oZXJpdCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFICs9ICInTERGTEFHUz0ke0xERkxBR1N9JyIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworbmV0Y2F0X2RvX3BhdGNoKCkgeworICAgIGNkICR7U30KKyAgICBxdWlsdCBwb3AgLWEgfHwgdHJ1ZQorICAgIGlmIFsgLWQgJHtTfS8ucGMtbmV0Y2F0IF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1yZiAke1N9Ly5wYworICAgICAgICAgICAgbXYgJHtTfS8ucGMtbmV0Y2F0ICR7U30vLnBjCisgICAgICAgICAgICBRVUlMVF9QQVRDSEVTPSR7U30vZGViaWFuL3BhdGNoZXMgcXVpbHQgcG9wIC1hCisgICAgICAgICAgICBybSAtcmYgJHtTfS8ucGMKKyAgICBmaQorICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwdXNoIC1hCisgICAgbXYgJHtTfS8ucGMgJHtTfS8ucGMtbmV0Y2F0Cit9CisKK2RvX3VucGFja1tjbGVhbmRpcnNdICs9ICIke1N9IgorCitweXRob24gZG9fcGF0Y2goKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCduZXRjYXRfZG9fcGF0Y2gnLCBkKQorICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygncGF0Y2hfZG9fcGF0Y2gnLCBkKQorfQorCitkb19jb21waWxlKCkgeworICAgIGNkICR7U30KKyAgICBwa2dyZWw9NAorICAgIG9lX3J1bm1ha2UgQ0ZMQUdTPSIkQ0ZMQUdTIC1EREVCSUFOX1ZFUlNJT049XCJcXFwiJHtwa2dyZWx9XFxcIlwiIgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vbmMgJHtEfSR7YmluZGlyfS9uYy4ke0JQTn0KK30KK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfMC4yLjguYmIKaW5kZXggOWE2ZjYwZS4uYTRhOWM5MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiCkBAIC0xMiw2ICsxMiw4IEBACiBTUkNfVVJJID0gImdpdDovL3BhZ3VyZS5pby9uZXRjZi5naXQ7cHJvdG9jb2w9aHR0cHMgXAogIgogCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJyZWxlYXNlLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCiBERVBFTkRTICs9ICJhdWdlYXMgbGlibmwgbGlieHNsdCBsaWJ4bWwyIGdudWxpYiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9maWxlcy8wMDAxLW5ldGxpYi5jLU1vdmUtaW5jbHVkaW5nLXNjaGVkLmgtb3V0LW9nLWZ1bmN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL2ZpbGVzLzAwMDEtbmV0bGliLmMtTW92ZS1pbmNsdWRpbmctc2NoZWQuaC1vdXQtb2ctZnVuY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1NzM3YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9maWxlcy8wMDAxLW5ldGxpYi5jLU1vdmUtaW5jbHVkaW5nLXNjaGVkLmgtb3V0LW9nLWZ1bmN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNTFhMDkyZWJiMzZkY2M2MTgwY2ViOTNhOTc3NzI1OGU4MjZkOTk5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI2IFNlcCAyMDE4IDE4OjExOjEwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5ldGxpYi5jOiBNb3ZlIGluY2x1ZGluZyBzY2hlZC5oIG91dCBvZyBmdW5jdGlvbgorCitUaGUgc2h1dGRvd25fY29udHJvbCgpIGhhcyB0aGlzIGNvZGUgd2hlcmUgc3lzdGVtIGhlYWRlcnMgYXJlIGJlaW5nCitpbmNsdWRlZCBpbnNpZGUgZnVuY3Rpb24gYm9keSBhbmQgdGhpcyByZXN1bHRzIGluIGNvbXBpbGUgZXJyb3JzIG9uIG11c2wKK2VzcGVjaWFsbHkgd2hlbiBzY2hlZC5oIGlzIGluY2x1ZGVkIGJlY2F1c2Ugc2NoZWQuaCBkZWZpbmVzIGEgbWFjcm8KK3doaWNoIGRlZmluZXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoaXMgbWVhbnMgaXQgZW5kcyB1cCBiZWluZyBhIHN0YXRpYworZnVuY3Rpb24gaW5zaWRlIGFub3RoZXIgZnVuY3Rpb24gYW5kIGNvbXBpbGVyIGNhbGxzIGl0IG91dAorCitJbiBmdW5jdGlvbiAnYmluZF90b19zcGVjaWZpY19wcm9jZXNzb3InOgorfAorL21udC9hL3lvZS9idWlsZC90bXAvd29yay9pNTg2LXlvZS1saW51eC1tdXNsL25ldHBlcmYvMi43LjArZ2l0OTk5LXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL3NjaGVkLmg6MTAyOjE6CitlcnJvcjogaW52YWxpZCBzdG9yYWdlIGNsYXNzIGZvciBmdW5jdGlvbiAnX19DUFVfQU5EX1MnCit8ICBfX0NQVV9vcF9mdW5jX1MoQU5ELCAmKQorfCAgXn5+fn5+fn5+fn5+fn5+CisKK01vdmluZyB0aGUgZGVmaW5pdGlvbiBvdXQgb2YgZnVuY3Rpb24gZGVmaW5pdGlvbiBmaXhlcyB0aGUgcHJvYmxlbQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9uZXRsaWIuYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbmV0bGliLmMgYi9zcmMvbmV0bGliLmMKK2luZGV4IDkyNTg0MjQuLjYwYjAzMmQgMTAwNjQ0CistLS0gYS9zcmMvbmV0bGliLmMKKysrKyBiL3NyYy9uZXRsaWIuYworQEAgLTIyNjIsNiArMjI2MiwxMCBAQCBzaHV0ZG93bl9jb250cm9sKCkKKyAKKyB9CisgCisrI2lmIEhBVkVfU0NIRURfU0VUQUZGSU5JVFkKKysjaW5jbHVkZSA8c2NoZWQuaD4KKysjZW5kaWYKKysKKyAvKgorICAgYmluZF90b19zcGVjaWZpY19wcm9jZXNzb3Igd2lsbCBiaW5kIHRoZSBjYWxsaW5nIHByb2Nlc3MgdG8gdGhlCisgICBwcm9jZXNzb3IgaW4gInByb2Nlc3NvciIgIEl0IGhhcyBsb3RzIG9mIHVnbHkgaWZkZWZzIHRvIGRlYWwgd2l0aAorQEAgLTIzMDgsNyArMjMxMiw2IEBAIGJpbmRfdG9fc3BlY2lmaWNfcHJvY2Vzc29yKGludCBwcm9jZXNzb3JfYWZmaW5pdHksIGludCB1c2VfY3B1X21hcCkKKyAgICAgIHZhbHVlIHdpbGwgbm90IHRlbGwgeW91IGlmIHlvdSBhcmUgYm91bmQgdnMgdW5ib3VuZC4gKi8KKyAgIGJpbmRwcm9jZXNzb3IoQklORFBST0NFU1MsZ2V0cGlkKCksKGNwdV90KW1hcHBlZF9hZmZpbml0eSk7CisgI2VsaWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorLSNpbmNsdWRlIDxzY2hlZC5oPgorICAgLyogaW4gdGhlb3J5IHRoaXMgc2hvdWxkIGNvdmVyIHN5c3RlbXMgd2l0aCBtb3JlIENQVXMgdGhhbiBiaXRzIGluIGEKKyAgICAgIGxvbmcsIHdpdGhvdXQgaGF2aW5nIHRvIHNwZWNpZnkgX19VU0VfR05VLiAgd2UgImNoZWF0IiBieSB0YWtpbmcKKyAgICAgIGRlZmluZXMgZnJvbSAvdXNyL2luY2x1ZGUvYml0cy9zY2hlZC5oLCB3aGljaCB3ZSBhc3MtdS1tZSBpcwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiCmluZGV4IGYwZTBmOWMuLjg5MjFlYTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl9naXQuYmIKQEAgLTgsMTAgKzgsMTIgQEAKIAogUFYgPSAiMi43LjArZ2l0JHtTUkNQVn0iCiAKLVNSQ19VUkk9ImdpdDovL2dpdGh1Yi5jb20vSGV3bGV0dFBhY2thcmQvbmV0cGVyZi5naXQgXAotICAgICAgICAgZmlsZTovL2NwdV9zZXQucGF0Y2ggXAotICAgICAgICAgZmlsZTovL3Zmb3JrLnBhdGNoIFwKLSAgICAgICAgIGZpbGU6Ly9pbml0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0hld2xldHRQYWNrYXJkL25ldHBlcmYuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2NwdV9zZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdmZvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5ldGxpYi5jLU1vdmUtaW5jbHVkaW5nLXNjaGVkLmgtb3V0LW9nLWZ1bmN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiZjQ4MmJhYjQ5ZmNlZGVlNDZmYzViNzU1ZGExMjdmNjA4MzI1Y2QxMyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXAtdG9vbHNfNC4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc180LjIuMy5iYgppbmRleCA0ZTI3ZTMyLi5iYjQwMTY2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc180LjIuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cC10b29sc180LjIuMy5iYgpAQCAtMjAsNyArMjAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ERVBFTkRTID0gImxpYnRpcnBjIGxpYm5zbDIiCitERVBFTkRTID0gImxpYnRpcnBjIGxpYm5zbDIgdmlydHVhbC9jcnlwdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRvbWFpbm5hbWUuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wLzAwMDEtcGx1Z2lucy1NYWtlZmlsZS5hbS1maXgtZm9yLWF1dG9tYWtlLTEuMTYuMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wLzAwMDEtcGx1Z2lucy1NYWtlZmlsZS5hbS1maXgtZm9yLWF1dG9tYWtlLTEuMTYuMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmY3ZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3AvMDAwMS1wbHVnaW5zLU1ha2VmaWxlLmFtLWZpeC1mb3ItYXV0b21ha2UtMS4xNi4xLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gZDIyZGRjNzNmMDBlZDA1NjAzMmE2MzVlZTgzNzkzMDVlYzgzYmY4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBKdWwgMjAxOCAxMjowMjo1MCArMDgwMAorU3ViamVjdDogW1BBVENIXSBwbHVnaW5zL01ha2VmaWxlLmFtOiBmaXggZm9yIGF1dG9tYWtlIDEuMTYuMQorCitGaXhlZDoKK3wgaTU4Ni1wb2t5LWxpbnV4LWdjYzogZXJyb3I6IG5ldGZsb3dQbHVnaW4ubzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCBpNTg2LXBva3ktbGludXgtZ2NjOiBlcnJvcjogdW5yZWNvZ25pemVkIGNvbW1hbmQgbGluZSBvcHRpb24gJy1mbGF0X25hbWVzcGFjZSc7IGRpZCB5b3UgbWVhbiAnLVduYW1lc3BhY2VzJz8KK3wgaTU4Ni1wb2t5LWxpbnV4LWdjYzogZmF0YWwgZXJyb3I6IG5vIGlucHV0IGZpbGVzCisKK1RoZSBwcmV2aW91cyBjb2RlIG1ha2UgdGhpbmdzIGNvbXBsaWNhdGVkLCBidXQgd2UgZG9uJ3QgaGF2ZSB0bywgbGV0IGxpYnRvb2wgZG8KK21vc3Qgb2YgdGhlIHRoaW5ncyBjYW4gZml4IHRoZSBwcm9ibGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW250b3AgaXMgbm90IGxvbmdlciBtYWludGFpbmVkIGFueSBtb3JlLCB3ZSBuZWVkIGNvbnNpZGVyIG1vdmluZyB0byBudG9wbmddCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgcGx1Z2lucy9NYWtlZmlsZS5hbSB8IDM0ICsrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvTWFrZWZpbGUuYW0gYi9wbHVnaW5zL01ha2VmaWxlLmFtCitpbmRleCA2NDQ5MmUwLi5iY2QwYzEwIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9NYWtlZmlsZS5hbQorKysrIGIvcGx1Z2lucy9NYWtlZmlsZS5hbQorQEAgLTY5LDQwICs2OSwxOCBAQCBsaWJzZmxvd1BsdWdpbl9sYV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKyAjIGJ5IGRlZmF1bHQgbnRvcCBsb29rcyBmb3IgcGx1Z2lucyBpbiB0aGUgcGx1Z2lucy8gc3ViZGlyZWN0b3J5CisgIworIAorLQorLS5saWJzL2xpYm5ldGZsb3dQbHVnaW4uc29AU09fVkVSU0lPTl9QQVRDSEA6CistCUBpZiB0ZXN0IC1mIGxpYm5ldGZsb3dQbHVnaW5fbGEtbmV0Zmxvd1BsdWdpbi5vOyB0aGVuIFwKKy0JJChDQykgQE1BS0VfU0hBUkVEX0xJQlJBUllfUEFSTUAgLW8gLmxpYnMvbGlibmV0Zmxvd1BsdWdpbi5zb0BTT19WRVJTSU9OX1BBVENIQCBsaWJuZXRmbG93UGx1Z2luX2xhLW5ldGZsb3dQbHVnaW4ubzsgXAorLQllbHNlIFwKKy0JJChDQykgQE1BS0VfU0hBUkVEX0xJQlJBUllfUEFSTUAgLW8gLmxpYnMvbGlibmV0Zmxvd1BsdWdpbi5zb0BTT19WRVJTSU9OX1BBVENIQCBuZXRmbG93UGx1Z2luLm87IFwKKy0JZmkKKy0KKy1uZXRmbG93UGx1Z2luLnNvJChFWEVFWFQpOiAubGlicy9saWJuZXRmbG93UGx1Z2luLnNvQFNPX1ZFUlNJT05fUEFUQ0hACistCUAkKExOX1MpIC5saWJzL2xpYm5ldGZsb3dQbHVnaW4uc28gbmV0Zmxvd1BsdWdpbi5zbworK25ldGZsb3dQbHVnaW4uc28kKEVYRUVYVCk6IGxpYm5ldGZsb3dQbHVnaW4ubGEKKysJQCQoTE5fUykgLWYgLmxpYnMvbGlibmV0Zmxvd1BsdWdpbi5zbyBuZXRmbG93UGx1Z2luLnNvCisgCisgIyMjIyMjIyMjIyMjIyMjCisgCistLmxpYnMvbGlicnJkUGx1Z2luLnNvQFNPX1ZFUlNJT05fUEFUQ0hAOgorLQlAaWYgdGVzdCAtZiBsaWJycmRQbHVnaW5fbGEtcnJkUGx1Z2luLm87IHRoZW4gXAorLQkkKENDKSBATUFLRV9TSEFSRURfTElCUkFSWV9QQVJNQCAtbyAubGlicy9saWJycmRQbHVnaW4uc29AU09fVkVSU0lPTl9QQVRDSEAgbGlicnJkUGx1Z2luX2xhLXJyZFBsdWdpbi5vOyBcCistCWVsc2UgXAorLQkkKENDKSBATUFLRV9TSEFSRURfTElCUkFSWV9QQVJNQCAtbyAubGlicy9saWJycmRQbHVnaW4uc29AU09fVkVSU0lPTl9QQVRDSEAgcnJkUGx1Z2luLm87IFwKKy0JZmkKKy0KKy1ycmRQbHVnaW4uc28kKEVYRUVYVCk6IC5saWJzL2xpYnJyZFBsdWdpbi5zb0BTT19WRVJTSU9OX1BBVENIQAorLQlAJChMTl9TKSAubGlicy9saWJycmRQbHVnaW4uc28gcnJkUGx1Z2luLnNvCisrcnJkUGx1Z2luLnNvJChFWEVFWFQpOiBsaWJycmRQbHVnaW4ubGEKKysJQCQoTE5fUykgLWYgLmxpYnMvbGlicnJkUGx1Z2luLnNvIHJyZFBsdWdpbi5zbworIAorICMjIyMjIyMjIyMjIyMjIworIAorLS5saWJzL2xpYnNmbG93UGx1Z2luLnNvQFNPX1ZFUlNJT05fUEFUQ0hAOgorLQlAaWYgdGVzdCAtZiBsaWJzZmxvd1BsdWdpbl9sYS1zZmxvd1BsdWdpbi5vOyB0aGVuIFwKKy0JJChDQykgQE1BS0VfU0hBUkVEX0xJQlJBUllfUEFSTUAgLW8gLmxpYnMvbGlic2Zsb3dQbHVnaW4uc29AU09fVkVSU0lPTl9QQVRDSEAgbGlic2Zsb3dQbHVnaW5fbGEtc2Zsb3dQbHVnaW4ubzsgXAorLQllbHNlIFwKKy0JJChDQykgQE1BS0VfU0hBUkVEX0xJQlJBUllfUEFSTUAgLW8gLmxpYnMvbGlic2Zsb3dQbHVnaW4uc29AU09fVkVSU0lPTl9QQVRDSEAgc2Zsb3dQbHVnaW4ubzsgXAorLQlmaQorLQorLXNmbG93UGx1Z2luLnNvJChFWEVFWFQpOiAubGlicy9saWJzZmxvd1BsdWdpbi5zb0BTT19WRVJTSU9OX1BBVENIQAorLQlAJChMTl9TKSAubGlicy9saWJzZmxvd1BsdWdpbi5zbyBzZmxvd1BsdWdpbi5zbworK3NmbG93UGx1Z2luLnNvJChFWEVFWFQpOiBsaWJzZmxvd1BsdWdpbi5sYQorKwlAJChMTl9TKSAtZiAubGlicy9saWJzZmxvd1BsdWdpbi5zbyBzZmxvd1BsdWdpbi5zbworIAorICMjIyMjIyMjIyMjIyMjIworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiCmluZGV4IDI5OGZiZWMuLjJhN2E3ZjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wXzUuMC4xLmJiCkBAIC0xNywxMCArMTcsMTMgQEAKICAgICAgICAgICAgZmlsZTovL250b3Auc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly91c2Utc3RhdGljLWlubGluZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5EUEktSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtTWFrZWZpbGUuYW0tZml4LWZvci1hdXRvbWFrZS0xLjE2LjEucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMTcxMGI2OTI1YThhNWZmZTFhNDFiOGI1MTJlYmQ2OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZThlODRjYjE0ZDIxNzNiZWFjYTRkNGNiOTkxYTE0ZDg0YTRiZWY4NGVjMzdiMjI3NmJjMzYzZjQ1YzUyZWY4IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbnRvcC9maWxlcy9udG9wL1N0YWJsZSIKKwogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVzZXJhZGQgcHl0aG9ubmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCiAKIERFUEVORFMgPSAiZ2VvaXAgcnJkdG9vbCBweXRob24gemxpYiBsaWJwY2FwIGdkYm0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvcmVwcm9kdWNpYmlsaXR5LWZpeGVkLXBhdGgtdG8tcG9zaXgtc2hlbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvcmVwcm9kdWNpYmlsaXR5LWZpeGVkLXBhdGgtdG8tcG9zaXgtc2hlbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxZGI3NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cC9yZXByb2R1Y2liaWxpdHktZml4ZWQtcGF0aC10by1wb3NpeC1zaGVsbC5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gbnRwLTQuMi44cDEyLm9yaWdpbmFsL3NudHAvbGlib3B0cy9tNC9saWJvcHRzLm00CTIwMTgtMTEtMTIgMTc6NTQ6NTcuNzQ3MjIwODQ2ICsxMzAwCisrKysgbnRwLTQuMi44cDEyL3NudHAvbGlib3B0cy9tNC9saWJvcHRzLm00CTIwMTgtMTEtMTIgMTg6MDA6NTAuNjI2MjExNjQxICsxMzAwCitAQCAtMTE0LDEyICsxMTQsNiBAQAorICAgQUNfUFJPR19TRUQKKyAgIFt3aGlsZSA6CisgICBkbworLSAgICAgIFBPU0lYX1NIRUxMPWB3aGljaCBiYXNoYAorLSAgICAgIHRlc3QgLXggIiRQT1NJWF9TSEVMTCIgJiYgYnJlYWsKKy0gICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggZGFzaGAKKy0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCistICAgICAgUE9TSVhfU0hFTEw9L3Vzci94cGc0L2Jpbi9zaAorLSAgICAgIHRlc3QgLXggIiRQT1NJWF9TSEVMTCIgJiYgYnJlYWsKKyAgICAgICBQT1NJWF9TSEVMTD1gL2Jpbi9zaCAtYyAnCisgICAgICAgICAgIGV4ZWMgMj4vZGV2L251bGwKKyAgICAgICAgICAgaWYgISB0cnVlIDsgdGhlbiBleGl0IDEgOyBmaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwL3JlcHJvZHVjaWJpbGl0eS1yZXNwZWN0LXNvdXJjZS1kYXRlLWVwb2NoLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwL3JlcHJvZHVjaWJpbGl0eS1yZXNwZWN0LXNvdXJjZS1kYXRlLWVwb2NoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZTcxYzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvcmVwcm9kdWNpYmlsaXR5LXJlc3BlY3Qtc291cmNlLWRhdGUtZXBvY2gucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorLS0tIG50cC00LjIuOHAxMi5vcmlnaW5hbC9zY3JpcHRzL2J1aWxkL21rdmVyLmluCTIwMTgtMTEtMTIgMTQ6MDY6NDkuMzMzMDIwNDMwICsxMzAwCisrKysgbnRwLTQuMi44cDEyL3NjcmlwdHMvYnVpbGQvbWt2ZXIuaW4JMjAxOC0xMS0xMiAxNDoxNTowNC45NDc0ODAxNjcgKzEzMDAKK0BAIC0xNSw3ICsxNSwxMiBAQAorICAqKSBDb25mU3RyPSIke0NvbmZTdHJ9LUBWRVJfU1VGRklYQCIgOzsKKyBlc2FjCisgCistQ29uZlN0cj0iJENvbmZTdHIgYExDX1RJTUU9QyBUWj1VVEMgZGF0ZWAiCisraWYgWyAtbiAiJFNPVVJDRV9EQVRFX0VQT0NIIiBdOyB0aGVuCisrICAgQ29uZlN0cj0iJENvbmZTdHIgYExDX1RJTUU9QyBUWj1VVEMgZGF0ZSAtZEAkU09VUkNFX0RBVEVfRVBPQ0ggMj4vZGV2L251bGxgIiB8fAorKyAgIENvbmZTdHI9IiRDb25mU3RyIGBMQ19USU1FPUMgVFo9VVRDIGRhdGUgLXIgJFNPVVJDRV9EQVRFX0VQT0NIYCIKKytlbHNlCisrICAgQ29uZlN0cj0iJENvbmZTdHIgYExDX1RJTUU9QyBUWj1VVEMgZGF0ZWAiCisrZmkKKyAKKyBpZiBbICEgLWYgLnZlcnNpb24gXTsgdGhlbgorICAgZWNobyAwID4gLnZlcnNpb24KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY5OGZhMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHBfNC4yLjhwMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrIFRpbWUgUHJvdG9jb2wgZGFlbW9uIGFuZCB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgTmV0d29yayBUaW1lIFByb3RvY29sIChOVFApIGlzIHVzZWQgdG8gXAotc3luY2hyb25pemUgdGhlIHRpbWUgb2YgYSBjb21wdXRlciBjbGllbnQgb3Igc2VydmVyIHRvIFwKLWFub3RoZXIgc2VydmVyIG9yIHJlZmVyZW5jZSB0aW1lIHNvdXJjZSwgc3VjaCBhcyBhIHJhZGlvIFwKLW9yIHNhdGVsbGl0ZSByZWNlaXZlciBvciBtb2RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vc3VwcG9ydC5udHAub3JnIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIk5UUCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ZTg3N2ExZDU2N2E2YTU4OTk2ZDJiNjZlM2UzODcwMDMiCi0KLURFUEVORFMgPSAibGliZXZlbnQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5lZWNpcy51ZGVsLmVkdS9+bnRwL250cF9zcG9vbC9udHA0L250cC00LjIvbnRwLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9udHAtNC4yLjRfcDYtbmFuby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkIFwKLSAgICAgICAgICAgZmlsZTovL250cC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL250cGRhdGUgXAotICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5kZWZhdWx0IFwKLSAgICAgICAgICAgZmlsZTovL250cGRhdGUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc250cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NudHAgXAotICAgICAgICAgICBmaWxlOi8vbnRwZC5saXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAwOTUwY2EyODU1NTc5NTQxODk2NTEzZTc4Mjk1MzYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxNGEzOWY3NTM2ODgyNTJkNjgzZmY5MDcwMzVmZmZmMTA2YmE4ZDNkYjIxMzA5Yjc0MmUwOWI1YzNjZDI3OGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcKLQotIyBUaGUgYWNfY3ZfaGVhZGVyX3JlYWRsaW5lX2hpc3RvcnkgaXMgdG8gc3RvcCBudHBkYyBkZXBlbmRpbmcgb24gZWl0aGVyCi0jIHJlYWRsaW5lIG9yIGN1cnNlcwotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbmV0LXNubXAtY29uZmlnPW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LW50cHNubXBkIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX3JlYWRsaW5lX2hpc3RvcnlfaD1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC15aWVsZGluZ19zZWxlY3Q9eWVzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2ZpbGU9cmVkaGF0IFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgIgotQ0ZMQUdTX2FwcGVuZCA9ICIgLURQVFlTX0FSRV9HRVRQVCAtRFBUWVNfQVJFX1NFQVJDSEVEIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotTlRQX1VTRVJfSE9NRSA/PSAiL3Zhci9saWIvbnRwIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUtZGlyICR7TlRQX1VTRVJfSE9NRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCBudHAiCi0KLSMgTkI6IGRlYnVnIGlzIGRlZmF1bHQtZW5hYmxlZCBieSBOVFA7IGtlZXAgaXQgZGVmYXVsdC1lbmFibGVkIGhlcmUuCi1QQUNLQUdFQ09ORklHID8/PSAiY2FwIGRlYnVnIHJlZmNsb2NrcyBvcGVuc3NsIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wtbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2wtaW5jZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWNyeXB0bywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtb3BlbnNzbCAtLXdpdGhvdXQtY3J5cHRvLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2NhcF0gPSAiLS1lbmFibGUtbGludXhjYXBzLC0tZGlzYWJsZS1saW51eGNhcHMsbGliY2FwIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLWxpbmVlZGl0bGlicywtLXdpdGhvdXQtbGluZWVkaXRsaWJzLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tyZWZjbG9ja3NdID0gIi0tZW5hYmxlLWFsbC1jbG9ja3MsLS1kaXNhYmxlLWFsbC1jbG9ja3MscHBzLXRvb2xzIgotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWdnaW5nLC0tZGlzYWJsZS1kZWJ1Z2dpbmciCi1QQUNLQUdFQ09ORklHW21kbnNdID0gImFjX2N2X2hlYWRlcl9kbnNfc2RfaD15ZXMsYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPW5vLG1kbnMiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vbnRwLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9udHBkYXRlICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0KLSAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtOVFBfVVNFUl9IT01FfQotICAgIGNob3duIG50cDpudHAgJHtEfSR7TlRQX1VTRVJfSE9NRX0KLQotICAgICMgRml4IGhhcmRjb2RlZCBwYXRocyBpbiBzY3JpcHRzCi0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL250cGQgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLSAgICBzZWQgLWkgJ3MhL3Vzci9iaW4vISR7YmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL250cGQgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLSAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL250cGQgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL250cGQgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLSAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAnMXMsIyEuKnBlcmwgLXcsIyEgJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7c2JpbmRpcn0vbnRwdHJhY2UKLSAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQotICAgIHNlZCAtaSAnMXMsIyEuKnBlcmwsIyEgJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7c2JpbmRpcn0vbnRwLXdhaXQKLSAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAotICAgIHNlZCAtaSAnMXMsIyEuKnBlcmwgLXcsIyEgJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7c2JpbmRpcn0vY2FsY190aWNrYWRqCi0gICAgc2VkIC1pICcvdXNlL2kgdXNlIHdhcm5pbmdzOycgJHtEfSR7c2JpbmRpcn0vY2FsY190aWNrYWRqCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHBkYXRlLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9udHBkYXRlCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc250cCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kCi0gICAgbG4gLXMgJHtiaW5kaXJ9L250cGRhdGUtc3luYyAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vbnRwLXVuaXRzLmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkLmxpc3QgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZC82MC1udHBkLmxpc3QKLQotICAgICMgUmVtb3ZlIGFuIGVtcHR5IGxpYmV4ZWNkaXIuCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KLX0KLQotUEFDS0FHRVMgKz0gIm50cGRhdGUgc250cCAke1BOfS10aWNrYWRqICR7UE59LXV0aWxzIgotIyBOT1RFOiB5b3UgZG9uJ3QgbmVlZCBudHBkYXRlLCB1c2UgIm50cGQgLXEgLWcgLXgiCi0KLSMgbnRwIG9yaWdpbmFsbHkgaW5jbHVkZXMgdGlja2Fkai4gSXQncyBzcGxpdCBvZmYgZm9yIGluY2x1c2lvbiBpbiBzbWFsbCBmaXJtd2FyZSBpbWFnZXMgb24gcGxhdGZvcm1zCi0jIHdpdGggd29ua3kgY2xvY2tzIChlLmcuIE9wZW5TbHVnKQotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tdGlja2FkaiIKLSMgbnRwZCByZXF1aXJlIGxpYmdjYyBmb3IgZXhlY3V0aW9uCi1SREVQRU5EU18ke1BOfSArPSAibGliZ2NjIgotIyBIYW5kbGUgbW92ZSBmcm9tIGJpbiB0byB1dGlscyBwYWNrYWdlCi1SUFJPVklERVNfJHtQTn0tdXRpbHMgPSAiJHtQTn0tYmluIgotUlJFUExBQ0VTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKLVJDT05GTElDVFNfJHtQTn0tdXRpbHMgPSAiJHtQTn0tYmluIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IG50cGRhdGUgc250cCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudHBkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfbnRwZGF0ZSA9ICJudHBkYXRlLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0Vfc250cCA9ICJzbnRwLnNlcnZpY2UiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi0KLVJQUk9WSURFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCi1SUkVQTEFDRVNfbnRwZGF0ZSArPSAibnRwZGF0ZS1zeXN0ZW1kIgotUkNPTkZMSUNUU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCi0KLVJTVUdHRVNUU18ke1BOfSA9ICJpYW5hLWV0YyIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9udHBkLm50cCAke3N5c2NvbmZkaXJ9L250cC5jb25mICR7c3lzY29uZmRpcn0vaW5pdC5kL250cGQgJHtsaWJkaXJ9IFwKLSAgICAke05UUF9VU0VSX0hPTUV9IFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vbnRwLXVuaXRzLmQvNjAtbnRwZC5saXN0ICR7bGliZXhlY2Rpcn1cCi0iCi1GSUxFU18ke1BOfS10aWNrYWRqID0gIiR7c2JpbmRpcn0vdGlja2FkaiIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7c2JpbmRpcn0gJHtkYXRhZGlyfS9udHAvbGliIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgKz0gInBlcmwiCi1GSUxFU19udHBkYXRlID0gIiR7c2JpbmRpcn0vbnRwZGF0ZSBcCi0gICAgJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvbnRwZGF0ZS1zeW5jIFwKLSAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIFwKLSAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9udHBkYXRlLnNlcnZpY2UgXAotIgotRklMRVNfc250cCA9ICIke3NiaW5kaXJ9L3NudHAgXAotICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc250cCBcCi0gICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc250cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L250cC5jb25mIgotQ09ORkZJTEVTX250cGRhdGUgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJudHBkIgotIyBObyBkZXBlbmRlbmNpZXMsIHNvIGp1c3QgZ28gaW4gYXQgdGhlIHN0YW5kYXJkIGxldmVsICgyMCkKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1wa2dfcG9zdGluc3RfbnRwZGF0ZSgpIHsKLSAgICBpZiAhIGdyZXAgLXEgLXMgbnRwZGF0ZSAkRC92YXIvc3Bvb2wvY3Jvbi9yb290OyB0aGVuCi0gICAgICAgIGVjaG8gImFkZGluZyBjcm9udGFiIgotICAgICAgICB0ZXN0IC1kICREL3Zhci9zcG9vbC9jcm9uIHx8IG1rZGlyIC1wICREL3Zhci9zcG9vbC9jcm9uCi0gICAgICAgIGVjaG8gIjMwICogKiAqICogICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBzaWxlbnQiID4+ICREL3Zhci9zcG9vbC9jcm9uL3Jvb3QKLSAgICBmaQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJudHBkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW250cGRdID0gIiR7c2JpbmRpcn0vbnRwZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2U0MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEyLmJiCkBAIC0wLDAgKzEsMTc1IEBACitTVU1NQVJZID0gIk5ldHdvcmsgVGltZSBQcm90b2NvbCBkYWVtb24gYW5kIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wgKE5UUCkgaXMgdXNlZCB0byBcCitzeW5jaHJvbml6ZSB0aGUgdGltZSBvZiBhIGNvbXB1dGVyIGNsaWVudCBvciBzZXJ2ZXIgdG8gXAorYW5vdGhlciBzZXJ2ZXIgb3IgcmVmZXJlbmNlIHRpbWUgc291cmNlLCBzdWNoIGFzIGEgcmFkaW8gXAorb3Igc2F0ZWxsaXRlIHJlY2VpdmVyIG9yIG1vZGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdXBwb3J0Lm50cC5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiTlRQIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1lODc3YTFkNTY3YTZhNTg5OTZkMmI2NmUzZTM4NzAwMyIKKworREVQRU5EUyA9ICJsaWJldmVudCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVlY2lzLnVkZWwuZWR1L35udHAvbnRwX3Nwb29sL250cDQvbnRwLTQuMi9udHAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1maXhlZC1wYXRoLXRvLXBvc2l4LXNoZWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1yZXNwZWN0LXNvdXJjZS1kYXRlLWVwb2NoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL250cGQgXAorICAgICAgICAgICBmaWxlOi8vbnRwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZSBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL250cGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zbnRwLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc250cCBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkLmxpc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTUyMmQ2NjU3NGJhZTE0YWJiMjYyMjc0NmRhZDJiZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzA5YjIyMmI1MDEzZDc3ZDI2YmZmZjUzMmI1ZWE0NzBhODAzOTQ5N2VmMjlkMDkzNjM5MzFjMDM2Y2IzMDQ1NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZworCisjIFRoZSBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeSBpcyB0byBzdG9wIG50cGRjIGRlcGVuZGluZyBvbiBlaXRoZXIKKyMgcmVhZGxpbmUgb3IgY3Vyc2VzCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1uZXQtc25tcC1jb25maWc9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbnRwc25tcGQgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeV9oPW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXlpZWxkaW5nX3NlbGVjdD15ZXMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG9jZmlsZT1yZWRoYXQgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnBhdGggXAorICAgICAgICAgICAgICAgICAiCitDRkxBR1NfYXBwZW5kID0gIiAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitOVFBfVVNFUl9IT01FID89ICIvdmFyL2xpYi9udHAiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZS1kaXIgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIG50cCIKKworIyBOQjogZGVidWcgaXMgZGVmYXVsdC1lbmFibGVkIGJ5IE5UUDsga2VlcCBpdCBkZWZhdWx0LWVuYWJsZWQgaGVyZS4KK1BBQ0tBR0VDT05GSUcgPz89ICJjYXAgZGVidWcgcmVmY2xvY2tzIG9wZW5zc2wgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtY3J5cHRvLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1jcnlwdG8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1saW51eGNhcHMsLS1kaXNhYmxlLWxpbnV4Y2FwcyxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtbGluZWVkaXRsaWJzLC0td2l0aG91dC1saW5lZWRpdGxpYnMscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3JlZmNsb2Nrc10gPSAiLS1lbmFibGUtYWxsLWNsb2NrcywtLWRpc2FibGUtYWxsLWNsb2NrcyxwcHMtdG9vbHMiCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1Z2dpbmcsLS1kaXNhYmxlLWRlYnVnZ2luZyIKK1BBQ0tBR0VDT05GSUdbbWRuc10gPSAiYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPXllcyxhY19jdl9oZWFkZXJfZG5zX3NkX2g9bm8sbWRucyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHAuY29uZiAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGRhdGUgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKKworICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke05UUF9VU0VSX0hPTUV9CisgICAgY2hvd24gbnRwOm50cCAke0R9JHtOVFBfVVNFUl9IT01FfQorCisgICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdXNyL2Jpbi8hJHtiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCisgICAgc2VkIC1pICcxcywjIS4qcGVybCwjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0CisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKyAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cGRhdGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKyAgICBsbiAtcyAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkYXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQubGlzdCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdAorCisgICAgIyBSZW1vdmUgYW4gZW1wdHkgbGliZXhlY2Rpci4KKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorfQorCitQQUNLQUdFUyArPSAibnRwZGF0ZSBzbnRwICR7UE59LXRpY2thZGogJHtQTn0tdXRpbHMiCisjIE5PVEU6IHlvdSBkb24ndCBuZWVkIG50cGRhdGUsIHVzZSAibnRwZCAtcSAtZyAteCIKKworIyBudHAgb3JpZ2luYWxseSBpbmNsdWRlcyB0aWNrYWRqLiBJdCdzIHNwbGl0IG9mZiBmb3IgaW5jbHVzaW9uIGluIHNtYWxsIGZpcm13YXJlIGltYWdlcyBvbiBwbGF0Zm9ybXMKKyMgd2l0aCB3b25reSBjbG9ja3MgKGUuZy4gT3BlblNsdWcpCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS10aWNrYWRqIgorIyBudHBkIHJlcXVpcmUgbGliZ2NjIGZvciBleGVjdXRpb24KK1JERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCisjIEhhbmRsZSBtb3ZlIGZyb20gYmluIHRvIHV0aWxzIHBhY2thZ2UKK1JQUk9WSURFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCitSUkVQTEFDRVNfJHtQTn0tdXRpbHMgPSAiJHtQTn0tYmluIgorUkNPTkZMSUNUU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gbnRwZGF0ZSBzbnRwIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm50cGQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV9udHBkYXRlID0gIm50cGRhdGUuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV9zbnRwID0gInNudHAuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfc250cCA9ICJkaXNhYmxlIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorCitSUFJPVklERVNfbnRwZGF0ZSArPSAibnRwZGF0ZS1zeXN0ZW1kIgorUlJFUExBQ0VTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKK1JDT05GTElDVFNfbnRwZGF0ZSArPSAibnRwZGF0ZS1zeXN0ZW1kIgorCitSU1VHR0VTVFNfJHtQTn0gPSAiaWFuYS1ldGMiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vbnRwZC5udHAgJHtzeXNjb25mZGlyfS9udHAuY29uZiAke3N5c2NvbmZkaXJ9L2luaXQuZC9udHBkICR7bGliZGlyfSBcCisgICAgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCAke2xpYmV4ZWNkaXJ9XAorIgorRklMRVNfJHtQTn0tdGlja2FkaiA9ICIke3NiaW5kaXJ9L3RpY2thZGoiCitGSUxFU18ke1BOfS11dGlscyA9ICIke3NiaW5kaXJ9ICR7ZGF0YWRpcn0vbnRwL2xpYiIKK1JERVBFTkRTXyR7UE59LXV0aWxzICs9ICJwZXJsIgorRklMRVNfbnRwZGF0ZSA9ICIke3NiaW5kaXJ9L250cGRhdGUgXAorICAgICR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kL250cGRhdGUtc3luYyBcCisgICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBcCisgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbnRwZGF0ZS5zZXJ2aWNlIFwKKyIKK0ZJTEVTX3NudHAgPSAiJHtzYmluZGlyfS9zbnRwIFwKKyAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3NudHAgXAorICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NudHAuc2VydmljZSBcCisgICAgICAgICAgICAgIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9udHAuY29uZiIKK0NPTkZGSUxFU19udHBkYXRlID0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC9udHBkYXRlIgorCitJTklUU0NSSVBUX05BTUUgPSAibnRwZCIKKyMgTm8gZGVwZW5kZW5jaWVzLCBzbyBqdXN0IGdvIGluIGF0IHRoZSBzdGFuZGFyZCBsZXZlbCAoMjApCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworcGtnX3Bvc3RpbnN0X250cGRhdGUoKSB7CisgICAgaWYgISBncmVwIC1xIC1zIG50cGRhdGUgJEQvdmFyL3Nwb29sL2Nyb24vcm9vdDsgdGhlbgorICAgICAgICBlY2hvICJhZGRpbmcgY3JvbnRhYiIKKyAgICAgICAgdGVzdCAtZCAkRC92YXIvc3Bvb2wvY3JvbiB8fCBta2RpciAtcCAkRC92YXIvc3Bvb2wvY3JvbgorICAgICAgICBlY2hvICIzMCAqICogKiAqICAgICR7YmluZGlyfS9udHBkYXRlLXN5bmMgc2lsZW50IiA+PiAkRC92YXIvc3Bvb2wvY3Jvbi9yb290CisgICAgZmkKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAibnRwZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtudHBkXSA9ICIke3NiaW5kaXJ9L250cGQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnMvMDAwMS11dGlsLmgtZW5kaWFuLmgtaXMtYXZhaWxhYmxlLW9uLW11c2wtb24tbGludXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnMvMDAwMS11dGlsLmgtZW5kaWFuLmgtaXMtYXZhaWxhYmxlLW9uLW11c2wtb24tbGludXgucGF0Y2gKaW5kZXggODI1ZTJiZi4uZmJkYzRlOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zLzAwMDEtdXRpbC5oLWVuZGlhbi5oLWlzLWF2YWlsYWJsZS1vbi1tdXNsLW9uLWxpbnV4LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNucy8wMDAxLXV0aWwuaC1lbmRpYW4uaC1pcy1hdmFpbGFibGUtb24tbXVzbC1vbi1saW51eC5wYXRjaApAQCAtMTMsMTAgKzEzLDEwIEBACiAgIyAgaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgogICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4KIAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKIAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQogIGluY2x1ZGUvbGliaXNucy91dGlsLmggfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuLWlzbnMvb3Blbi1pc25zXzAuOTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmE3NTEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgSm9lIE1hY0RvbmFsZCA8am9lX21hY2RvbmFsZEBtZW50b3IuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gImlTTlMgZGFlbW9uIGFuZCB1dGlsaXR5IHByb2dyYW1zIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgUkZDNDE3MSwgdGhlIEludGVybmV0IFwKLVN0b3JhZ2UgTmFtZSBTZXJ2aWNlIChpU05TKS4gIFRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgdGhlIGlTTlMgc2VydmVyLCBcCi1zdXBwb3J0aW5nIHBlcnNpc3RlbiBzdG9yYWdlIG9mIHJlZ2lzdHJhdGlvbnMsIGlzbnNhZG0sIGEgY29tbWFuZCBsaW5lIFwKLXV0aWxpdHkgZm9yIG1hbmFnaW5nIG5vZGVzLCBhbmQgaXNuc2RkLCBhIGNvcnJlc3BvbmRpbmcgZGlzY292ZXJ5IGRhZW1vbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9nb256b2xlZW1hbi9vcGVuLWlzbnMvIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzIxYmY0MWYyODBjZjgwNTA4NmRkNWE3MjBiMzc3ODUiCi1TRUNUSU9OID0gIm5ldCIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9vcGVuLWlzbnMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11dGlsLmgtZW5kaWFuLmgtaXMtYXZhaWxhYmxlLW9uLW11c2wtb24tbGludXgucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA/PSAiMDk5NTQ0MDRlOTQ4ZTQxZWIwZmNlOGUyODgzNjAxOGI0Y2UzZDIwZCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBzeXN0ZW1kIGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQKLQotRVhUUkFfT0VDT05GID0gIiAtLXByZWZpeD0ke3ByZWZpeH0gLS1lbmFibGUtc2hhcmVkIgotRVhUUkFfT0VNQUtFICs9ICJTWVNURU1ERElSPSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgb2VfcnVubWFrZSBJTkNESVI9JHtEfSR7aW5jbHVkZWRpcn0vbGliaXNucy8gaW5zdGFsbF9oZHJzCi0gICAgb2VfcnVubWFrZSBMSUJESVI9JHtEfSR7bGliZGlyfSBpbnN0YWxsX2xpYgotCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9ldGMvb3BlbmlzbnMuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmlzbnMKLSAgICBzZWQgLWkgJ3N8ZGFlbW9uIGlzbnNkfHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLW9rbm9kbyAtLWV4ZWMgJHtzYmluZGlyfS9pc25zZCAtLXwnIFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5pc25zCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0gJHtzeXN0ZW1kX3VuaXRkaXJ9IgotCi1JTklUU0NSSVBUX05BTUUgPSAib3BlbmlzbnMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3Blbi1pc25zL29wZW4taXNuc18wLjk4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNjRmODkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW4taXNucy9vcGVuLWlzbnNfMC45OC5iYgpAQCAtMCwwICsxLDQwIEBACisjIENvcHlyaWdodCAoQykgMjAxNiBKb2UgTWFjRG9uYWxkIDxqb2VfbWFjZG9uYWxkQG1lbnRvci5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAiaVNOUyBkYWVtb24gYW5kIHV0aWxpdHkgcHJvZ3JhbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBSRkM0MTcxLCB0aGUgSW50ZXJuZXQgXAorU3RvcmFnZSBOYW1lIFNlcnZpY2UgKGlTTlMpLiAgVGhlIGRpc3RyaWJ1dGlvbiBpbmNsdWRlcyB0aGUgaVNOUyBzZXJ2ZXIsIFwKK3N1cHBvcnRpbmcgcGVyc2lzdGVuIHN0b3JhZ2Ugb2YgcmVnaXN0cmF0aW9ucywgaXNuc2FkbSwgYSBjb21tYW5kIGxpbmUgXAordXRpbGl0eSBmb3IgbWFuYWdpbmcgbm9kZXMsIGFuZCBpc25zZGQsIGEgY29ycmVzcG9uZGluZyBkaXNjb3ZlcnkgZGFlbW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2dvbnpvbGVlbWFuL29wZW4taXNucy8iCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjFiZjQxZjI4MGNmODA1MDg2ZGQ1YTcyMGIzNzc4NSIKK1NFQ1RJT04gPSAibmV0IgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuLWlzY3NpL29wZW4taXNucyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXV0aWwuaC1lbmRpYW4uaC1pcy1hdmFpbGFibGUtb24tbXVzbC1vbi1saW51eC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gImU4NDM3NGNlN2QxZjVmYzU4YTRjMGZjNzUxZTA3NWIyY2M3NTJjMzQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgc3lzdGVtZCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kCisKK0VYVFJBX09FQ09ORiA9ICIgLS1wcmVmaXg9JHtwcmVmaXh9IC0tZW5hYmxlLXNoYXJlZCIKK0VYVFJBX09FTUFLRSArPSAiU1lTVEVNRERJUj0ke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG9lX3J1bm1ha2UgSU5DRElSPSR7RH0ke2luY2x1ZGVkaXJ9L2xpYmlzbnMvIGluc3RhbGxfaGRycworICAgIG9lX3J1bm1ha2UgTElCRElSPSR7RH0ke2xpYmRpcn0gaW5zdGFsbF9saWIKKworICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7U30vZXRjL29wZW5pc25zLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5pc25zCisgICAgc2VkIC1pICdzfGRhZW1vbiBpc25zZHxzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1leGVjICR7c2JpbmRpcn0vaXNuc2QgLS18JyBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVuaXNucworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9ICR7c3lzdGVtZF91bml0ZGlyfSIKKworSU5JVFNDUklQVF9OQU1FID0gIm9wZW5pc25zIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy8wMDAxLWxhbnNlcnYtUmVuYW1lLXN0cnVjdC1wYXJhbWV0ZXItcHJpbnRmLWZvci1uYW1lc3BhY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUwNTdmYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzLzAwMDEtbGFuc2Vydi1SZW5hbWUtc3RydWN0LXBhcmFtZXRlci1wcmludGYtZm9yLW5hbWVzcGFjZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxOCArMCwwIEBACi1Gcm9tIDhiNTFhNmJmNWE0ODI5ZDhhZGQ1MzVhMDk4YzBjMDZhMDQ5YTk5NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyNiBBdWcgMjAxNyAyMjo1MDo1NyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsYW5zZXJ2OiBSZW5hbWUgc3RydWN0IHBhcmFtZXRlciBwcmludGYgZm9yIG5hbWVzcGFjZQotIGNvbGxpc2lvbgotCi1UaGlzIGNvbWVzIHRvIGZvcmUgd2hlbiB3ZSB1c2UgaGFyZGVuaW5nIGZsYWdzIHdoZXJlIHByaW50ZgotaXMgdHJlYXRlZCBhcyBtYWNybyBhbmQgZ2V0cyByZXBsYWNlZCB3aXRoIHByaW50Zl9jaGsKLQotRml4ZXMgZXJyb3JzIGxpa2UKLQotZXJyb3I6IG5vIG1lbWJlciBuYW1lZCAnX19wcmludGZfY2hrJyBpbiAnc3RydWN0IGVtdV9vdXRfcycKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxhbnNlcnYvT3BlbklQTUkvc2Vydi5oIHwgICAyICstCi0gbGFuc2Vydi9lbXVfY21kLmMgICAgICAgfCAxMzIgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbGFuc2Vydi9pcG1pX3NpbS5jICAgICAgfCAgMTAgKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sYW5zZXJ2L09wZW5JUE1JL3NlcnYuaCBiL2xhbnNlcnYvT3BlbklQTUkvc2Vydi5oCi1pbmRleCBkMTJkNjNhLi44NTU1Yzg1IDEwMDY0NAotLS0tIGEvbGFuc2Vydi9PcGVuSVBNSS9zZXJ2LmgKLSsrKyBiL2xhbnNlcnYvT3BlbklQTUkvc2Vydi5oCi1AQCAtNTIyLDcgKzUyMiw3IEBAIHVpbnQ4X3QgaXBtYl9jaGVja3N1bSh1aW50OF90ICpkYXRhLCBpbnQgc2l6ZSwgdWludDhfdCBzdGFydCk7Ci0gdHlwZWRlZiBzdHJ1Y3QgZW11X2RhdGFfcyBlbXVfZGF0YV90OwotIHR5cGVkZWYgc3RydWN0IGVtdV9vdXRfcwotIHsKLS0gICAgdm9pZCAoKnByaW50Zikoc3RydWN0IGVtdV9vdXRfcyAqb3V0LCBjaGFyICpmb3JtYXQsIC4uLik7Ci0rICAgIHZvaWQgKCplcHJpbnRmKShzdHJ1Y3QgZW11X291dF9zICpvdXQsIGNoYXIgKmZvcm1hdCwgLi4uKTsKLSAgICAgdm9pZCAqZGF0YTsKLSB9IGVtdV9vdXRfdDsKLSAKLWRpZmYgLS1naXQgYS9sYW5zZXJ2L2VtdV9jbWQuYyBiL2xhbnNlcnYvZW11X2NtZC5jCi1pbmRleCBjYTQ0MDMyLi41NGI2ZjdiIDEwMDY0NAotLS0tIGEvbGFuc2Vydi9lbXVfY21kLmMKLSsrKyBiL2xhbnNlcnYvZW11X2NtZC5jCi1AQCAtNzYsNyArNzYsNyBAQCBlbXVfZ2V0X3VjaGFyKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywgdW5zaWduZWQgY2hhciAqdmFsLCBjaGFyICplcnJzdHIsCi0gCWlmIChlbXB0eV9vaykKLSAJICAgIHJldHVybiBFTk9TUEM7Ci0gCWlmIChlcnJzdHIpCi0tCSAgICBvdXQtPnByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAgICAgaWYgKHN0clswXSA9PSAnXCcnKSB7Ci1AQCAtODYsNyArODYsNyBAQCBlbXVfZ2V0X3VjaGFyKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywgdW5zaWduZWQgY2hhciAqdmFsLCBjaGFyICplcnJzdHIsCi0gICAgICp2YWwgPSBzdHJ0b3VsKHN0ciwgJnRtcHN0ciwgMCk7Ci0gICAgIGlmICgqdG1wc3RyICE9ICdcMCcpIHsKLSAJaWYgKGVycnN0cikKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAKLUBAIC0xMDgsNyArMTA4LDcgQEAgZW11X2dldF91Y2hhcl93aXRoX3ZhbHMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2tzLAotIAlpZiAoZW1wdHlfb2spCi0gCSAgICByZXR1cm4gRU5PU1BDOwotIAlpZiAoZXJyc3RyKQotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOwotIAlyZXR1cm4gRUlOVkFMOwotICAgICB9Ci0gICAgIGlmIChzdHJbMF0gPT0gJ1wnJykgewotQEAgLTEzMSw3ICsxMzEsNyBAQCBlbXVfZ2V0X3VjaGFyX3dpdGhfdmFscyhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsCi0gICAgICp2YWwgPSBzdHJ0b3VsKHN0ciwgJnRtcHN0ciwgMCk7Ci0gICAgIGlmICgqdG1wc3RyICE9ICdcMCcpIHsKLSAJaWYgKGVycnN0cikKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAgb3V0OgotQEAgLTE1MCwxMiArMTUwLDEyIEBAIGVtdV9nZXRfYml0bWFzayhlbXVfb3V0X3QgKm91dCwgY2hhciAqKnRva3MsIHVpbnQxNl90ICp2YWwsIGNoYXIgKmVycnN0ciwKLSAJaWYgKGVtcHR5X29rKQotIAkgICAgcmV0dXJuIEVOT1NQQzsKLSAJaWYgKGVycnN0cikKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipObyAlcyBnaXZlblxuIiwgZXJyc3RyKTsKLSAJcmV0dXJuIEVJTlZBTDsKLSAgICAgfQotICAgICBpZiAoc3RybGVuKHN0cikgIT0gc2l6ZSkgewotIAlpZiAoZXJyc3RyKQotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKippbnZhbGlkIG51bWJlciBvZiBiaXRzIGluICVzXG4iLCBlcnJzdHIpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqaW52YWxpZCBudW1iZXIgb2YgYml0cyBpbiAlc1xuIiwgZXJyc3RyKTsKLSAJcmV0dXJuIEVJTlZBTDsKLSAgICAgfQotICAgICAqdmFsID0gMDsKLUBAIC0xNjYsNyArMTY2LDcgQEAgZW11X2dldF9iaXRtYXNrKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywgdWludDE2X3QgKnZhbCwgY2hhciAqZXJyc3RyLAotIAkgICAgKnZhbCB8PSAxIDw8IGk7Ci0gCX0gZWxzZSB7Ci0gCSAgICBpZiAoZXJyc3RyKQotLQkJb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIGJpdCB2YWx1ZSAnJWMnIGluICVzXG4iLCBzdHJbal0sCi0rCQlvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIGJpdCB2YWx1ZSAnJWMnIGluICVzXG4iLCBzdHJbal0sCi0gCQkJICAgIGVycnN0cik7Ci0gCSAgICByZXR1cm4gRUlOVkFMOwotIAl9Ci1AQCAtMTg0LDEzICsxODQsMTMgQEAgZW11X2dldF91aW50KGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcywgdW5zaWduZWQgaW50ICp2YWwsIGNoYXIgKmVycnN0cikKLSAgICAgc3RyID0gbXlzdHJ0b2soTlVMTCwgIiBcdFxuIiwgdG9rcyk7Ci0gICAgIGlmICghc3RyKSB7Ci0gCWlmIChlcnJzdHIpCi0tCSAgICBvdXQtPnByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAgICAgKnZhbCA9IHN0cnRvdWwoc3RyLCAmdG1wc3RyLCAwKTsKLSAgICAgaWYgKCp0bXBzdHIgIT0gJ1wwJykgewotIAlpZiAoZXJyc3RyKQotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkICVzIGdpdmVuXG4iLCBlcnJzdHIpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCAlcyBnaXZlblxuIiwgZXJyc3RyKTsKLSAJcmV0dXJuIEVJTlZBTDsKLSAgICAgfQotIAotQEAgLTIwNiw3ICsyMDYsNyBAQCBlbXVfZ2V0X2J5dGVzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcHRyLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjaGFyICplcnJzdHIsCi0gCi0gICAgIGlmICghdG9rKSB7Ci0gCWlmIChlcnJzdHIpCi0tCSAgICBvdXQtPnByaW50ZihvdXQsICIqKk5vICVzIGdpdmVuXG4iLCBlcnJzdHIpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqTm8gJXMgZ2l2ZW5cbiIsIGVycnN0cik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAgICAgaWYgKCp0b2sgPT0gJyInKSB7Ci1AQCAtMjE1LDcgKzIxNSw3IEBAIGVtdV9nZXRfYnl0ZXMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2twdHIsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIGNoYXIgKmVycnN0ciwKLSAJdG9rKys7Ci0gCWVuZCA9IHN0cmxlbih0b2spIC0gMTsKLSAJaWYgKHRva1tlbmRdICE9ICciJykgewotLQkgIG91dC0+cHJpbnRmKG91dCwgIioqQVNDSUkgJXMgZG9lc24ndCBlbmQgaW4gJ1wiJyIsIGVycnN0cik7Ci0rCSAgb3V0LT5lcHJpbnRmKG91dCwgIioqQVNDSUkgJXMgZG9lc24ndCBlbmQgaW4gJ1wiJyIsIGVycnN0cik7Ci0gCSAgICByZXR1cm4gRUlOVkFMOwotIAl9Ci0gCWlmIChlbmQgPiAobGVuIC0gMSkpCi1AQCAtMjI4LDcgKzIyOCw3IEBAIGVtdV9nZXRfYnl0ZXMoZW11X291dF90ICpvdXQsIGNoYXIgKip0b2twdHIsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIGNoYXIgKmVycnN0ciwKLSAJY2hhciAgICAgICAgIGNbM107Ci0gCS8qIEhFWCBwdyAqLwotIAlpZiAoc3RybGVuKHRvaykgIT0gMzIpIHsKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqSEVYICVzIG5vdCAzMiBIRVggY2hhcmFjdGVycyBsb25nIiwgZXJyc3RyKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkhFWCAlcyBub3QgMzIgSEVYIGNoYXJhY3RlcnMgbG9uZyIsIGVycnN0cik7Ci0gCSAgICByZXR1cm4gRUlOVkFMOwotIAl9Ci0gCWNbMl0gPSAnXDAnOwotQEAgLTIzOSw3ICsyMzksNyBAQCBlbXVfZ2V0X2J5dGVzKGVtdV9vdXRfdCAqb3V0LCBjaGFyICoqdG9rcHRyLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBjaGFyICplcnJzdHIsCi0gCSAgICB0b2srKzsKLSAJICAgIGRhdGFbaV0gPSBzdHJ0b3VsKGMsICZlbmQsIDE2KTsKLSAJICAgIGlmICgqZW5kICE9ICdcMCcpIHsKLS0JCW91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBIRVggY2hhcmFjdGVyIGluICVzIiwgZXJyc3RyKTsKLSsJCW91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgSEVYIGNoYXJhY3RlciBpbiAlcyIsIGVycnN0cik7Ci0gCQlyZXR1cm4gLTE7Ci0gCSAgICB9Ci0gCX0KLUBAIC0yNjMsMTIgKzI2MywxMiBAQCByZWFkX2NvbW1hbmRfZmlsZShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBjb25zdCBjaGFyICpjb21tYW5kX2ZpbGUpCi0gCi0gCWJ1ZmZlciA9IG1hbGxvYyhJTlBVVF9CVUZGRVJfU0laRSk7Ci0gCWlmICghYnVmZmVyKSB7Ci0tCSAgICBvdXQtPnByaW50ZihvdXQsICJDb3VsZCBub3QgYWxsb2NhdGUgYnVmZmVyIG1lbW9yeVxuIik7Ci0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiQ291bGQgbm90IGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnlcbiIpOwotIAkgICAgcnYgPSBFTk9NRU07Ci0gCSAgICBnb3RvIG91dDsKLSAJfQotIAl3aGlsZSAoZmdldHMoYnVmZmVyK3BvcywgSU5QVVRfQlVGRkVSX1NJWkUtcG9zLCBmKSkgewotLQkgICAgb3V0LT5wcmludGYob3V0LCAiJXMiLCBidWZmZXIrcG9zKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIlcyIsIGJ1ZmZlcitwb3MpOwotIAkgICAgaWYgKGJ1ZmZlcltwb3NdID09ICcjJykKLSAJCWNvbnRpbnVlOwotIAkgICAgcG9zID0gc3RybGVuKGJ1ZmZlcik7Ci1AQCAtMzE4LDcgKzMxOCw3IEBAIHNlbF9lbmFibGUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotICAgICBydiA9IGlwbWlfbWNfZW5hYmxlX3NlbChtYywgbWF4X3JlY29yZHMsIGZsYWdzKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBlbmFibGUgc2VsLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBlbmFibGUgc2VsLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMzQzLDkgKzM0Myw5IEBAIHNlbF9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotICAgICBydiA9IGlwbWlfbWNfYWRkX3RvX3NlbChtYywgcmVjb3JkX3R5cGUsIGRhdGEsICZyKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2VsLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2VsLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIGVsc2UKLS0Jb3V0LT5wcmludGYob3V0LCAiQWRkZWQgcmVjb3JkICVkXG4iLCByKTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIkFkZGVkIHJlY29yZCAlZFxuIiwgcik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMzYxLDE0ICszNjEsMTQgQEAgbWFpbl9zZHJfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAJaWYgKHJ2ID09IEVOT1NQQykKLSAJICAgIGJyZWFrOwotIAlpZiAocnYpIHsKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7Ci0gCSAgICByZXR1cm4gcnY7Ci0gCX0KLSAgICAgfQotIAotICAgICBydiA9IGlwbWlfbWNfYWRkX21haW5fc2RyKG1jLCBkYXRhLCBpKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2RyLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2RyLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMzg5LDE0ICszODksMTQgQEAgZGV2aWNlX3Nkcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAlpZiAocnYgPT0gRU5PU1BDKQotIAkgICAgYnJlYWs7Ci0gCWlmIChydikgewotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3IgMHgleCBpbiBkYXRhIGJ5dGUgJWRcbiIsIHJ2LCBpKTsKLSAJICAgIHJldHVybiBydjsKLSAJfQotICAgICB9Ci0gCi0gICAgIHJ2ID0gaXBtaV9tY19hZGRfZGV2aWNlX3NkcihtYywgbHVuLCBkYXRhLCBpKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2RyLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2RyLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtNDM5LDcgKzQzOSw3IEBAIHNlbnNvcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotICAgICB3aGlsZSAodG9rKSB7Ci0gCWlmIChzdHJjbXAodG9rLCAicG9sbCIpID09IDApIHsKLSAJICAgIGlmIChoYW5kbGVyKSB7Ci0tCQlvdXQtPnByaW50ZihvdXQsICIqKnBvbGwgZ2l2ZW4gdHdpY2UgaW4gc2Vuc29yXG4iLCB0b2spOwotKwkJb3V0LT5lcHJpbnRmKG91dCwgIioqcG9sbCBnaXZlbiB0d2ljZSBpbiBzZW5zb3JcbiIsIHRvayk7Ci0gCQlyZXR1cm4gLTE7Ci0gCSAgICB9Ci0gCi1AQCAtNDQ5LDI3ICs0NDksMjcgQEAgc2Vuc29yX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCi0gCi0gCSAgICB0b2sgPSBteXN0cnRvayhOVUxMLCAiIFx0XG4iLCB0b2tzKTsKLSAJICAgIGlmICghdG9rKSB7Ci0tCQlvdXQtPnByaW50ZihvdXQsICIqKk5vIHBvbGxlZCBzZW5zb3IgaGFuZGxlciBnaXZlblxuIiwgdG9rKTsKLSsJCW91dC0+ZXByaW50ZihvdXQsICIqKk5vIHBvbGxlZCBzZW5zb3IgaGFuZGxlciBnaXZlblxuIiwgdG9rKTsKLSAJCXJldHVybiAtMTsKLSAJICAgIH0KLSAKLSAJICAgIGhhbmRsZXIgPSBpcG1pX3NlbnNvcl9maW5kX2hhbmRsZXIodG9rKTsKLSAJICAgIGlmICghaGFuZGxlcikgewotLQkJb3V0LT5wcmludGYob3V0LCAiKipJbnZhbGlkIHNlbnNvciBoYW5kbGVyOiAlc1xuIiwgdG9rKTsKLSsJCW91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgc2Vuc29yIGhhbmRsZXI6ICVzXG4iLCB0b2spOwotIAkJcmV0dXJuIC0xOwotIAkgICAgfQotIAotIAkgICAgcnYgPSBoYW5kbGVyLT5pbml0KG1jLCBsdW4sIG51bSwgdG9rcywgaGFuZGxlci0+Y2JfZGF0YSwgJnJjYl9kYXRhLAotIAkJCSAgICAgICAmZXJyc3RyKTsKLSAJICAgIGlmIChydikgewotLQkJb3V0LT5wcmludGYob3V0LCAiKipFcnJvciBpbml0aWFsaXppbmcgc2Vuc29yIGhhbmRsZXI6ICVzXG4iLCAKLSsJCW91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIGluaXRpYWxpemluZyBzZW5zb3IgaGFuZGxlcjogJXNcbiIsIAotIAkJCSAgICBlcnJzdHIpOwotIAkJcmV0dXJuIHJ2OwotIAkgICAgfQotIAl9IGVsc2UgaWYgKHN0cmNtcCh0b2ssICJldmVudC1vbmx5IikgPT0gMCkgewotIAkgICAgZXZlbnRfb25seSA9IDE7Ci0gCX0gZWxzZSB7Ci0tCSAgICBvdXQtPnByaW50ZihvdXQsICIqKlVua25vd24gc2Vuc29yIG9wdGlvbjogJXNcbiIsIHRvayk7Ci0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipVbmtub3duIHNlbnNvciBvcHRpb246ICVzXG4iLCB0b2spOwotIAkgICAgcmV0dXJuIC0xOwotIAl9Ci0gCi1AQCAtNDc3LDcgKzQ3Nyw3IEBAIHNlbnNvcl9hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotICAgICB9Ci0gCi0gICAgIGlmIChoYW5kbGVyICYmIGV2ZW50X29ubHkpIHsKLS0Jb3V0LT5wcmludGYob3V0LCAiKipBbiBldmVudC1vbmx5IHNlbnNvciBjYW5ub3QgYmUgcG9sbGVkXG4iKTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIioqQW4gZXZlbnQtb25seSBzZW5zb3IgY2Fubm90IGJlIHBvbGxlZFxuIik7Ci0gCXJldHVybiAtMTsKLSAgICAgfQotIAotQEAgLTQ4OCw3ICs0ODgsNyBAQCBzZW5zb3JfYWRkKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAJaWYgKCFydiAmJiBoYW5kbGVyLT5wb3N0aW5pdCkgewotIAkgICAgcnYgPSBoYW5kbGVyLT5wb3N0aW5pdChyY2JfZGF0YSwgJmVycnN0cik7Ci0gCSAgICBpZiAocnYpIHsKLS0JCW91dC0+cHJpbnRmKG91dCwgIioqRXJyb3IgaW4gc2Vuc29yIGhhbmRsZXIgcG9zdGluaXQ6ICVzXG4iLCAKLSsJCW91dC0+ZXByaW50ZihvdXQsICIqKkVycm9yIGluIHNlbnNvciBoYW5kbGVyIHBvc3Rpbml0OiAlc1xuIiwgCi0gCQkJICAgIGVycnN0cik7Ci0gCSAgICB9Ci0gCX0KLUBAIC00OTYsNyArNDk2LDcgQEAgc2Vuc29yX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCi0gCXJ2ID0gaXBtaV9tY19hZGRfc2Vuc29yKG1jLCBsdW4sIG51bSwgdHlwZSwgY29kZSwgZXZlbnRfb25seSk7Ci0gICAgIH0KLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2Vuc29yLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBhZGQgdG8gc2Vuc29yLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtNTMyLDcgKzUzMiw3IEBAIHNlbnNvcl9zZXRfYml0KGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgcnYgPSBpcG1pX21jX3NlbnNvcl9zZXRfYml0KG1jLCBsdW4sIG51bSwgYml0LCB2YWx1ZSwgZ2VuX2V2ZW50KTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGJpdCwgZXJyb3IgMHgleFxuIiwgcnYpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciBiaXQsIGVycm9yIDB4JXhcbiIsIHJ2KTsKLSAgICAgcmV0dXJuIHJ2OwotIH0KLSAKLUBAIC01NjMsNyArNTYzLDcgQEAgc2Vuc29yX3NldF9iaXRfY2xyX3Jlc3QoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKioKLSAKLSAgICAgcnYgPSBpcG1pX21jX3NlbnNvcl9zZXRfYml0X2Nscl9yZXN0KG1jLCBsdW4sIG51bSwgYml0LCBnZW5fZXZlbnQpOwotICAgICBpZiAocnYpCi0tCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgYml0LCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGJpdCwgZXJyb3IgMHgleFxuIiwgcnYpOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotQEAgLTU5NCw3ICs1OTQsNyBAQCBzZW5zb3Jfc2V0X3ZhbHVlKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgcnYgPSBpcG1pX21jX3NlbnNvcl9zZXRfdmFsdWUobWMsIGx1biwgbnVtLCB2YWx1ZSwgZ2VuX2V2ZW50KTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHZhbHVlLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHZhbHVlLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtNjM3LDcgKzYzNyw3IEBAIHNlbnNvcl9zZXRfaHlzdGVyZXNpcyhlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRvCi0gICAgIHJ2ID0gaXBtaV9tY19zZW5zb3Jfc2V0X2h5c3RlcmVzaXMobWMsIGx1biwgbnVtLCBzdXBwb3J0LCBwb3NpdGl2ZSwKLSAJCQkJICAgICAgIG5lZ2F0aXZlKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIGh5c3RlcmVzaXMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgaHlzdGVyZXNpcywgZXJyb3IgMHgleFxuIiwgcnYpOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotQEAgLTY4Miw3ICs2ODIsNyBAQCBzZW5zb3Jfc2V0X3RocmVzaG9sZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRvawotICAgICBydiA9IGlwbWlfbWNfc2Vuc29yX3NldF90aHJlc2hvbGQobWMsIGx1biwgbnVtLCBzdXBwb3J0LAotIAkJCQkgICAgICBlbmFibGVkLCAxLCB0aHJlc2hvbGRzKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2Vuc29yIHRocmVzaG9sZHMsIGVycm9yIDB4JXhcbiIsIHJ2KTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdGhyZXNob2xkcywgZXJyb3IgMHgleFxuIiwgcnYpOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotQEAgLTc1OSw3ICs3NTksNyBAQCBzZW5zb3Jfc2V0X2V2ZW50X3N1cHBvcnQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKgotIAkJCQkJICBhc3NlcnRfc3VwcG9ydCwgZGVhc3NlcnRfc3VwcG9ydCwKLSAJCQkJCSAgYXNzZXJ0X2VuYWJsZWQsIGRlYXNzZXJ0X2VuYWJsZWQpOwotICAgICBpZiAocnYpCi0tCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBzZW5zb3IgdGhyZXNob2xkcywgZXJyb3IgMHgleFxuIiwgcnYpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHNlbnNvciB0aHJlc2hvbGRzLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtODE5LDcgKzgxOSw3IEBAIG1jX2FkZChlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCi0gCWVsc2UgaWYgKHN0cmNtcCgicGVyc2lzdF9zZHIiLCB0b2spID09IDApCi0gCSAgICBmbGFncyB8PSBJUE1JX01DX1BFUlNJU1RfU0RSOwotIAllbHNlIHsKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBNQyBmbGFnOiAlc1xuIiwgdG9rKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICIqKkludmFsaWQgTUMgZmxhZzogJXNcbiIsIHRvayk7Ci0gCSAgICByZXR1cm4gLTE7Ci0gCX0KLSAgICAgfQotQEAgLTgzMyw3ICs4MzMsNyBAQCBtY19hZGQoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAkJCSBkZXZpY2VfcmV2aXNpb24sIG1ham9yX2Z3X3JldiwgbWlub3JfZndfcmV2LAotIAkJCSBkZXZpY2Vfc3VwcG9ydCwgbWZnX2lkLCBwcm9kdWN0X2lkLCBmbGFncyk7Ci0gICAgIGlmIChydikKLS0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRoZSBNQywgZXJyb3IgMHgleFxuIiwgcnYpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIHRoZSBNQywgZXJyb3IgMHgleFxuIiwgcnYpOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotQEAgLTg5MCw3ICs4OTAsNyBAQCBtY19zZXRfcG93ZXIoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotICAgICBydiA9IGlwbWlfbWNfc2V0X3Bvd2VyKG1jLCBwb3dlciwgZ2VuX2ludCk7Ci0gICAgIGlmIChydikKLS0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IHBvd2VyLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgcG93ZXIsIGVycm9yIDB4JXhcbiIsIHJ2KTsKLSAgICAgcmV0dXJuIHJ2OwotIH0KLSAKLUBAIC05MTYsNyArOTE2LDcgQEAgbWNfYWRkX2ZydV9kYXRhKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgdG9rID0gbXlzdHJ0b2soTlVMTCwgIiBcdFxuIiwgdG9rcyk7Ci0gICAgIGlmICghdG9rKSB7Ci0tCW91dC0+cHJpbnRmKG91dCwgIioqTm8gRlJVIGRhdGEgdHlwZSBnaXZlbiIpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipObyBGUlUgZGF0YSB0eXBlIGdpdmVuIik7Ci0gCXJldHVybiAtMTsKLSAgICAgfQotICAgICBpZiAoc3RyY21wKHRvaywgImZpbGUiKSA9PSAwKSB7Ci1AQCAtOTI5LDEzICs5MjksMTMgQEAgbWNfYWRkX2ZydV9kYXRhKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAJcnYgPSBnZXRfZGVsaW1fc3RyKHRva3MsICZmcnVmbiwgJmVycnN0cik7Ci0gCWlmIChydikgewotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipFcnJvciB3aXRoIEZSVSBmaWxlbmFtZTogJWQiLCBzdHJlcnJvcihydikpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3Igd2l0aCBGUlUgZmlsZW5hbWU6ICVkIiwgc3RyZXJyb3IocnYpKTsKLSAJICAgIHJldHVybiBydjsKLSAJfQotIAlydiA9IGlwbWlfbWNfYWRkX2ZydV9maWxlKG1jLCBkZXZpZCwgbGVuZ3RoLCBmaWxlX29mZnNldCwKLSAJCQkJICAodm9pZCAqKSBmcnVmbik7Ci0gCWlmIChydikKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCBGUlUgZmlsZSwgZXJyb3IgMHgleFxuIiwgcnYpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGFkZCBGUlUgZmlsZSwgZXJyb3IgMHgleFxuIiwgcnYpOwotIAkKLSAgICAgfSBlbHNlIGlmIChzdHJjbXAodG9rLCAiZGF0YSIpID09IDApIHsKLSAJZm9yIChpPTA7IGk8bGVuZ3RoOyBpKyspIHsKLUBAIC05NDMsMTQgKzk0MywxNCBAQCBtY19hZGRfZnJ1X2RhdGEoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAkgICAgaWYgKHJ2ID09IEVOT1NQQykKLSAJCWJyZWFrOwotIAkgICAgaWYgKHJ2KSB7Ci0tCQlvdXQtPnByaW50ZihvdXQsICIqKkVycm9yIDB4JXggaW4gZGF0YSBieXRlICVkXG4iLCBydiwgaSk7Ci0rCQlvdXQtPmVwcmludGYob3V0LCAiKipFcnJvciAweCV4IGluIGRhdGEgYnl0ZSAlZFxuIiwgcnYsIGkpOwotIAkJcmV0dXJuIHJ2OwotIAkgICAgfQotIAl9Ci0gCi0gCXJ2ID0gZW11X2dldF91Y2hhcihvdXQsIHRva3MsICZkYXRhW2ldLCAiZGF0YSBieXRlIiwgMSk7Ci0gCWlmIChydiAhPSBFTk9TUEMpIHsKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIioqRXJyb3I6IGlucHV0IGRhdGEgdG9vIGxvbmcgZm9yIEZSVVxuIiwgcnYsIGkpOwotKwkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqRXJyb3I6IGlucHV0IGRhdGEgdG9vIGxvbmcgZm9yIEZSVVxuIiwgcnYsIGkpOwotIAkgICAgcmV0dXJuIEVJTlZBTDsKLSAJfQotIAotQEAgLTk1OCw5ICs5NTgsOSBAQCBtY19hZGRfZnJ1X2RhdGEoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotIAlydiA9IGlwbWlfbWNfYWRkX2ZydV9kYXRhKG1jLCBkZXZpZCwgbGVuZ3RoLCBOVUxMLCBkYXRhKTsKLSAJaWYgKHJ2KQotLQkgICAgb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gYWRkIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIH0gZWxzZSB7Ci0tCW91dC0+cHJpbnRmKG91dCwgIioqRlJVIHR5cGUgbm90IGdpdmVuLCBuZWVkIGZpbGUgb3IgZGF0YVxuIik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKkZSVSB0eXBlIG5vdCBnaXZlbiwgbmVlZCBmaWxlIG9yIGRhdGFcbiIpOwotIAlydiA9IEVJTlZBTDsKLSAgICAgfQotICAgICByZXR1cm4gcnY7Ci1AQCAtOTgxLDI4ICs5ODEsMjggQEAgbWNfZHVtcF9mcnVfZGF0YShlbXVfb3V0X3QgKm91dCwgZW11X2RhdGFfdCAqZW11LCBsbWNfZGF0YV90ICptYywgY2hhciAqKnRva3MpCi0gCi0gICAgIHJ2ID0gaXBtaV9tY19nZXRfZnJ1X2RhdGFfbGVuKG1jLCBkZXZpZCwgJmxlbmd0aCk7Ci0gICAgIGlmIChydikgewotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0gCWdvdG8gb3V0OwotICAgICB9Ci0gCi0gICAgIGRhdGEgPSBtYWxsb2MobGVuZ3RoKTsKLSAgICAgaWYgKCFkYXRhKSB7Ci0tCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIG91dCBvZiBtZW1vcnlcbiIsIHJ2KTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIGR1bXAgRlJVIGRhdGEsIG91dCBvZiBtZW1vcnlcbiIsIHJ2KTsKLSAJZ290byBvdXQ7Ci0gICAgIH0KLSAKLSAgICAgcnYgPSBpcG1pX21jX2dldF9mcnVfZGF0YShtYywgZGV2aWQsIGxlbmd0aCwgZGF0YSk7Ci0gICAgIGlmIChydikgewotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBkdW1wIEZSVSBkYXRhLCBlcnJvciAweCV4XG4iLCBydik7Ci0gCWdvdG8gb3V0OwotICAgICB9Ci0gCi0gICAgIGZvciAoaT0wOyBpPGxlbmd0aDsgaSsrKSB7Ci0gCWlmICgoaSA+IDApICYmICgoaSAlIDgpID09IDApKQotLQkgICAgb3V0LT5wcmludGYob3V0LCAiXG4iKTsKLS0Jb3V0LT5wcmludGYob3V0LCAiIDB4JTIuMngiLCBkYXRhW2ldKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICJcbiIpOwotKwlvdXQtPmVwcmludGYob3V0LCAiIDB4JTIuMngiLCBkYXRhW2ldKTsKLSAgICAgfQotLSAgICBvdXQtPnByaW50ZihvdXQsICJcbiIpOwotKyAgICBvdXQtPmVwcmludGYob3V0LCAiXG4iKTsKLSAKLSAgb3V0OgotICAgICBpZiAoZGF0YSkKLUBAIC0xMDIxLDcgKzEwMjEsNyBAQCBtY19zZXRibWMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAlyZXR1cm4gcnY7Ci0gICAgIHJ2ID0gaXBtaV9lbXVfc2V0X2JtY19tYyhlbXUsIGlwbWIpOwotICAgICBpZiAocnYpCi0tCW91dC0+cHJpbnRmKG91dCwgIioqSW52YWxpZCBJUE1CIGFkZHJlc3NcbiIpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipJbnZhbGlkIElQTUIgYWRkcmVzc1xuIik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMTAzMiw3ICsxMDMyLDcgQEAgYXRjYV9lbmFibGUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotICAgICBydiA9IGlwbWlfZW11X2F0Y2FfZW5hYmxlKGVtdSk7Ci0gICAgIGlmIChydikKLS0Jb3V0LT5wcmludGYob3V0LCAiKipVbmFibGUgdG8gZW5hYmxlIEFUQ0EgbW9kZSwgZXJyb3IgMHgleFxuIiwgcnYpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gZW5hYmxlIEFUQ0EgbW9kZSwgZXJyb3IgMHgleFxuIiwgcnYpOwotICAgICByZXR1cm4gcnY7Ci0gfQotIAotQEAgLTEwNTYsNyArMTA1Niw3IEBAIGF0Y2Ffc2V0X3NpdGUoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAotICAgICBydiA9IGlwbWlfZW11X2F0Y2Ffc2V0X3NpdGUoZW11LCBod19hZGRyZXNzLCBzaXRlX3R5cGUsIHNpdGVfbnVtYmVyKTsKLSAgICAgaWYgKHJ2KQotLQlvdXQtPnByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2l0ZSB0eXBlLCBlcnJvciAweCV4XG4iLCBydik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICIqKlVuYWJsZSB0byBzZXQgc2l0ZSB0eXBlLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMTA3Miw3ICsxMDcyLDcgQEAgbWNfc2V0X251bV9sZWRzKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgcnYgPSBpcG1pX21jX3NldF9udW1fbGVkcyhtYywgY291bnQpOwotICAgICBpZiAocnYpCi0tCW91dC0+cHJpbnRmKG91dCwgIioqVW5hYmxlIHRvIHNldCBudW1iZXIgb2YgTEVEcywgZXJyb3IgMHgleFxuIiwgcnYpOwotKwlvdXQtPmVwcmludGYob3V0LCAiKipVbmFibGUgdG8gc2V0IG51bWJlciBvZiBMRURzLCBlcnJvciAweCV4XG4iLCBydik7Ci0gICAgIHJldHVybiBydjsKLSB9Ci0gCi1AQCAtMTA4NSw3ICsxMDg1LDcgQEAgcmVhZF9jbWRzKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgZXJyID0gZ2V0X2RlbGltX3N0cih0b2tzLCAmZmlsZW5hbWUsICZlcnJzdHIpOwotICAgICBpZiAoZXJyKSB7Ci0tCW91dC0+cHJpbnRmKG91dCwgIkNvdWxkIG5vdCBnZXQgaW5jbHVkZSBmaWxlbmFtZTogJXNcbiIsIGVycnN0cik7Ci0rCW91dC0+ZXByaW50ZihvdXQsICJDb3VsZCBub3QgZ2V0IGluY2x1ZGUgZmlsZW5hbWU6ICVzXG4iLCBlcnJzdHIpOwotIAlyZXR1cm4gZXJyOwotICAgICB9Ci0gCi1AQCAtMTA5Nyw3ICsxMDk3LDcgQEAgcmVhZF9jbWRzKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAgICAgewotIAljaGFyICpuZiA9IG1hbGxvYyhzdHJsZW4oQkFTRV9DT05GX1NUUikgKyBzdHJsZW4oZmlsZW5hbWUpICsgMik7Ci0gCWlmICghbmYpIHsKLS0JICAgIG91dC0+cHJpbnRmKG91dCwgIk91dCBvZiBtZW1vcnkgaW4gaW5jbHVkZVxuIiwgZXJyc3RyKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICJPdXQgb2YgbWVtb3J5IGluIGluY2x1ZGVcbiIsIGVycnN0cik7Ci0gCSAgICBnb3RvIG91dF9lcnI7Ci0gCX0KLSAJc3RyY3B5KG5mLCBCQVNFX0NPTkZfU1RSKTsKLUBAIC0xMTA3LDcgKzExMDcsNyBAQCByZWFkX2NtZHMoZW11X291dF90ICpvdXQsIGVtdV9kYXRhX3QgKmVtdSwgbG1jX2RhdGFfdCAqbWMsIGNoYXIgKip0b2tzKQotIAlmaWxlbmFtZSA9IG5mOwotIAllcnIgPSByZWFkX2NvbW1hbmRfZmlsZShvdXQsIGVtdSwgZmlsZW5hbWUpOwotIAlpZiAoZXJyKSB7Ci0tCSAgICBvdXQtPnByaW50ZihvdXQsICJDb3VsZCBub3QgcmVhZCBpbmNsdWRlIGZpbGUgJXNcbiIsIGZpbGVuYW1lKTsKLSsJICAgIG91dC0+ZXByaW50ZihvdXQsICJDb3VsZCBub3QgcmVhZCBpbmNsdWRlIGZpbGUgJXNcbiIsIGZpbGVuYW1lKTsKLSAJfQotICAgICB9Ci0gCi1AQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgZGVidWdfY21kKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAJfSBlbHNlIGlmIChzdHJjbXAodG9rLCAic29sIikgPT0gMCkgewotIAkgICAgbGV2ZWwgfD0gREVCVUdfU09MOwotIAl9IGVsc2UgewotLQkgICAgb3V0LT5wcmludGYob3V0LCAiSW52YWxpZCBkZWJ1ZyBsZXZlbCAnJXMnLCBvcHRpb25zIGFyZSAncmF3JyBhbmQgJ21zZydcbiIsCi0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiSW52YWxpZCBkZWJ1ZyBsZXZlbCAnJXMnLCBvcHRpb25zIGFyZSAncmF3JyBhbmQgJ21zZydcbiIsCi0gCQkgICB0b2spOwotIAkgICAgcmV0dXJuIEVJTlZBTDsKLSAJfQotQEAgLTExNjgsNyArMTE2OCw3IEBAIHBlcnNpc3RfY21kKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAJfSBlbHNlIGlmIChzdHJjbXAodG9rLCAib2ZmIikgPT0gMCkgewotIAkgICAgcGVyc2lzdF9lbmFibGUgPSAwOwotIAl9IGVsc2UgewotLQkgICAgb3V0LT5wcmludGYob3V0LCAiSW52YWxpZCBwZXJzaXN0IHZhbGUgJyVzJywgb3B0aW9ucyBhcmUgJ29uJyBhbmQgJ29mZidcbiIsCi0rCSAgICBvdXQtPmVwcmludGYob3V0LCAiSW52YWxpZCBwZXJzaXN0IHZhbGUgJyVzJywgb3B0aW9ucyBhcmUgJ29uJyBhbmQgJ29mZidcbiIsCi0gCQkgICB0b2spOwotIAkgICAgcmV0dXJuIEVJTlZBTDsKLSAJfQotQEAgLTExOTQsMTggKzExOTQsMTggQEAgZG9fZGVmaW5lKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGxtY19kYXRhX3QgKm1jLCBjaGFyICoqdG9rcykKLSAKLSAgICAgbmFtZSA9IG15c3RydG9rKE5VTEwsICIgXHRcbiIsIHRva3MpOwotICAgICBpZiAoIW5hbWUpIHsKLS0Jb3V0LT5wcmludGYob3V0LCAiTm8gdmFyaWFibGUgbmFtZSBnaXZlbiBmb3IgZGVmaW5lXG4iKTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIk5vIHZhcmlhYmxlIG5hbWUgZ2l2ZW4gZm9yIGRlZmluZVxuIik7Ci0gCXJldHVybiBFSU5WQUw7Ci0gICAgIH0KLSAgICAgZXJyID0gZ2V0X2RlbGltX3N0cih0b2tzLCAmdmFsdWUsICZlcnJzdHIpOwotICAgICBpZiAoZXJyKSB7Ci0tCW91dC0+cHJpbnRmKG91dCwgIkNvdWxkIG5vdCBnZXQgdmFyaWFibGUgJXMgdmFsdWU6ICVzXG4iLCBuYW1lLCBlcnJzdHIpOwotKwlvdXQtPmVwcmludGYob3V0LCAiQ291bGQgbm90IGdldCB2YXJpYWJsZSAlcyB2YWx1ZTogJXNcbiIsIG5hbWUsIGVycnN0cik7Ci0gCXJldHVybiBlcnI7Ci0gICAgIH0KLSAgICAgZXJyID0gYWRkX3ZhcmlhYmxlKG5hbWUsIHZhbHVlKTsKLSAgICAgaWYgKGVycikgewotIAlmcmVlKHZhbHVlKTsKLS0Jb3V0LT5wcmludGYob3V0LCAiT3V0IG9mIG1lbW9yeSBzZXR0aW5nIHZhcmlhYmxlICVzXG4iLCBuYW1lKTsKLSsJb3V0LT5lcHJpbnRmKG91dCwgIk91dCBvZiBtZW1vcnkgc2V0dGluZyB2YXJpYWJsZSAlc1xuIiwgbmFtZSk7Ci0gCXJldHVybiBlcnI7Ci0gICAgIH0KLSAgICAgcmV0dXJuIDA7Ci1AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaXBtaV9lbXVfY21kKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGNoYXIgKmNtZF9zdHIpCi0gCQkgICAgcmV0dXJuIHJ2OwotIAkJcnYgPSBpcG1pX2VtdV9nZXRfbWNfYnlfYWRkcihlbXUsIGlwbWIsICZtYyk7Ci0gCQlpZiAocnYpIHsKLS0JCSAgICBvdXQtPnByaW50ZihvdXQsICIqKkludmFsaWQgTUMgYWRkcmVzc1xuIik7Ci0rCQkgICAgb3V0LT5lcHJpbnRmKG91dCwgIioqSW52YWxpZCBNQyBhZGRyZXNzXG4iKTsKLSAJCSAgICByZXR1cm4gcnY7Ci0gCQl9Ci0gCSAgICB9Ci1AQCAtMTMxMiw3ICsxMzEyLDcgQEAgaXBtaV9lbXVfY21kKGVtdV9vdXRfdCAqb3V0LCBlbXVfZGF0YV90ICplbXUsIGNoYXIgKmNtZF9zdHIpCi0gCX0KLSAgICAgfQotIAotLSAgICBvdXQtPnByaW50ZihvdXQsICIqKlVua25vd24gY29tbWFuZDogJXNcbiIsIGNtZCk7Ci0rICAgIG91dC0+ZXByaW50ZihvdXQsICIqKlVua25vd24gY29tbWFuZDogJXNcbiIsIGNtZCk7Ci0gCi0gIG91dDoKLSAgICAgcmV0dXJuIHJ2OwotZGlmZiAtLWdpdCBhL2xhbnNlcnYvaXBtaV9zaW0uYyBiL2xhbnNlcnYvaXBtaV9zaW0uYwotaW5kZXggOTQ3MmNjZS4uMzBjNGYyNyAxMDA2NDQKLS0tLSBhL2xhbnNlcnYvaXBtaV9zaW0uYwotKysrIGIvbGFuc2Vydi9pcG1pX3NpbS5jCi1AQCAtNjA3LDggKzYwNyw4IEBAIGlzaW1fbG9nKHN5c19kYXRhX3QgKnN5cywgaW50IGxvZ3R5cGUsIG1zZ190ICptc2csIGNvbnN0IGNoYXIgKmZvcm1hdCwKLSAKLSAgICAgY29uID0gZGF0YS0+Y29uc29sZXM7Ci0gICAgIHdoaWxlIChjb24pIHsKLS0JY29uLT5vdXQucHJpbnRmKCZjb24tPm91dCwgIiVzIiwgc3RyKTsKLS0JY29uLT5vdXQucHJpbnRmKCZjb24tPm91dCwgIlxuIik7Ci0rCWNvbi0+b3V0LmVwcmludGYoJmNvbi0+b3V0LCAiJXMiLCBzdHIpOwotKwljb24tPm91dC5lcHJpbnRmKCZjb24tPm91dCwgIlxuIik7Ci0gCWNvbiA9IGNvbi0+bmV4dDsKLSAgICAgfQotICNpZiBIQVZFX1NZU0xPRwotQEAgLTk1Niw3ICs5NTYsNyBAQCBjb25zb2xlX2JpbmRfcmVhZHkoaW50IGZkLCB2b2lkICpjYl9kYXRhLCBvc19obmRfZmRfaWRfdCAqaWQpCi0gICAgIG5ld2Nvbi0+c2h1dGRvd25fb25fY2xvc2UgPSAwOwotICAgICBuZXdjb24tPnRlbG5ldCA9IDE7Ci0gICAgIG5ld2Nvbi0+dG5fcG9zID0gMDsKLS0gICAgbmV3Y29uLT5vdXQucHJpbnRmID0gZW11X3ByaW50ZjsKLSsgICAgbmV3Y29uLT5vdXQuZXByaW50ZiA9IGVtdV9wcmludGY7Ci0gICAgIG5ld2Nvbi0+b3V0LmRhdGEgPSBuZXdjb247Ci0gCi0gICAgIHNldHNvY2tvcHQocnYsIElQUFJPVE9fVENQLCBUQ1BfTk9ERUxBWSwgKGNoYXIgKikmdmFsLCBzaXplb2YodmFsKSk7Ci1AQCAtMTQ2MywxMCArMTQ2MywxMCBAQCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCi0gICAgIHN0ZGlvX2NvbnNvbGUudGVsbmV0ID0gMDsKLSAgICAgc3RkaW9fY29uc29sZS50bl9wb3MgPSAwOwotICAgICBpZiAobm9zdGRpbykgewotLQlzdGRpb19jb25zb2xlLm91dC5wcmludGYgPSBkdW1teV9wcmludGY7Ci0rCXN0ZGlvX2NvbnNvbGUub3V0LmVwcmludGYgPSBkdW1teV9wcmludGY7Ci0gCXN0ZGlvX2NvbnNvbGUub3V0LmRhdGEgPSAmc3RkaW9fY29uc29sZTsKLSAgICAgfSBlbHNlIHsKLS0Jc3RkaW9fY29uc29sZS5vdXQucHJpbnRmID0gZW11X3ByaW50ZjsKLSsJc3RkaW9fY29uc29sZS5vdXQuZXByaW50ZiA9IGVtdV9wcmludGY7Ci0gCXN0ZGlvX2NvbnNvbGUub3V0LmRhdGEgPSAmc3RkaW9fY29uc29sZTsKLSAgICAgfQotICAgICBzdGRpb19jb25zb2xlLm5leHQgPSBOVUxMOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaWd1aS1ub3QtY29tcGlsZS1weWMtcHlvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9maWxlcy9vcGVuaXBtaWd1aS1ub3QtY29tcGlsZS1weWMtcHlvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OTQwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL29wZW5pcG1pZ3VpLW5vdC1jb21waWxlLXB5Yy1weW8ucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorb3BlbmlwbWkgbG9hZCBzd2lnL3B5dGhvbi8ubGlicy9fT3BlbklQTUkuc28gdG8gY3JlYXRlIC5weWMgYW5kIC5weW8gZmlsZXMuCitJdCBmYWlscyB3aGVuIG11bHRpbGliIGlzIGVuYWJsZToKKworfCBJbXBvcnRFcnJvcjogLi4uL2xpYjMyLW9wZW5pcG1pLzIuMC4yNS1yMC9PcGVuSVBNSS0yLjAuMjUvc3dpZy9weXRob24vLmxpYnMvX09wZW5JUE1JLnNvOiB3cm9uZyBFTEYgY2xhc3M6IEVMRkNMQVNTMzIKKworRG9uJ3QgY29tcGlsZSBhbmQgaW5zdGFsbCAucHljIGFuZCAucHlvIGZpbGVzIHRvIGZpeCB0aGUgZmFpbHVyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitkaWZmIC0tZ2l0IGEvc3dpZy9weXRob24vb3BlbmlwbWlndWkvTWFrZWZpbGUuYW0gYi9zd2lnL3B5dGhvbi9vcGVuaXBtaWd1aS9NYWtlZmlsZS5hbQoraW5kZXggNTcwZTdiOS4uODgyNThiZiAxMDA2NDQKKy0tLSBhL3N3aWcvcHl0aG9uL29wZW5pcG1pZ3VpL01ha2VmaWxlLmFtCisrKysgYi9zd2lnL3B5dGhvbi9vcGVuaXBtaWd1aS9NYWtlZmlsZS5hbQorQEAgLTM0LDkgKzM0LDkgQEAgbG9jYWxjb3B5OgorIAkJZmkgXAorIAlkb25lCisgCistYWxsLWxvY2FsOiBsb2NhbGNvcHkgJChQWUNfRklMRVMpICQoUFlPX0ZJTEVTKQorK2FsbC1sb2NhbDogbG9jYWxjb3B5CisgCistaW5zdGFsbC1leGVjLWxvY2FsOiAkKEVYVFJBX0RJU1QpICQoUFlDX0ZJTEVTKSAkKFBZT19GSUxFUykKKytpbnN0YWxsLWV4ZWMtbG9jYWw6ICQoRVhUUkFfRElTVCkKKyAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChQWVRIT05fSU5TVEFMTF9ESVIpL29wZW5pcG1pZ3VpCisgCSQoSU5TVEFMTF9EQVRBKSAkXiAkKERFU1RESVIpJChQWVRIT05fSU5TVEFMTF9ESVIpL29wZW5pcG1pZ3VpCisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGY2M2M1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVNVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKLXRvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKLWFuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgotCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIG5jdXJzZXMgXAotICAgIG5ldC1zbm1wIFwKLSAgICBvcGVuc3NsIFwKLSAgICBwb3B0IFwKLSAgICBweXRob24gXAotICAgIHN3aWctbmF0aXZlIFwKLSAgICAiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSAmIEJTRCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT00YjMxOGQ0MTYwZWI2OWM4ZWU1MzQ1MmZlYjFiNGNkZiBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vb3BlbmlwbWkvT3BlbklQTUktJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zeW1saW5rLWluc3RhbGwtZXJyb3ItaW4tY21kbGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1uby1vcGVuaXBtaWd1aS1tYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktcmVtb3ZlLWhvc3QtcGF0aC1mcm9tLWxhX0xERkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaXBtaS1pbml0LWZpeC10aGUtYXJndW1lbnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvLW5vdC1pbnN0YWxsLXB5Yy1hbmQtcHlvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfc3lzX3R5cGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLWhlbHBlciBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sYW5zZXJ2LVJlbmFtZS1zdHJ1Y3QtcGFyYW1ldGVyLXByaW50Zi1mb3ItbmFtZXNwYWNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vT3BlbklQTUktJHtQVn0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNThmOTU0MmNiZmNiNWZlMjUwYjc3Y2Y4ODM0NWUxZWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmNhMzlhMjcwNzEyNzhhOGI3NDYxMDE4MWVkZThkZjUxZTE1NWU1ZTkwMzFiYzhlYWEzNjk5ZDE3MjAyOTJiNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcGVybD0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwnIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24nIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uaW5zdGFsbD0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZ2xpYnZlcj0yLjAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnZGJtIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICJhY19jdl9oZWFkZXJfZ2RibV9oPXllcyxhY19jdl9oZWFkZXJfZ2RibV9oPW5vLGdkYm0sIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tcGVybCAke1BOfS1weXRob24iCi0KLUZJTEVTXyR7UE59LXBlcmwgPSAiIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAotICAgICIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKLSAgICAiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0KLSAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLQotICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAotICAgIAotICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCi0gICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCi0gICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KLSAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCi0gICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgotICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCi0gICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBlY2hvICJTQUw6IEQgPSAkRCIKLSAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKLSAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgotICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCi0gICAgdGhlbgotICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAotICAgIGZpCi0gCi0gICAgIyBmb3Igc3lzdGVtZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQotfQotCi1JTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyOGViZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNS5iYgpAQCAtMCwwICsxLDExMCBAQAorU1VNTUFSWSA9ICJJUE1JIChJbnRlbGxpZ2VudCBQbGF0Zm9ybSBNYW5hZ2VtZW50IEludGVyZmFjZSkgbGlicmFyeSBhbmQgdG9vbHMiCitERVNDUklQVElPTiA9ICJPcGVuSVBNSSBpcyBhbiBlZmZvcnQgdG8gY3JlYXRlIGEgZnVsbC1mdW5jdGlvbiBJUE1JIHN5c3RlbSwgXAordG8gYWxsb3cgZnVsbCBhY2Nlc3MgdG8gYWxsIElQTUkgaW5mb3JtYXRpb24gb24gYSBzZXJ2ZXIgXAorYW5kIHRvIGFic3RyYWN0IGl0IHRvIGEgbGV2ZWwgdGhhdCB3aWxsIG1ha2UgaXQgZWFzeSB0byB1c2UiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9vcGVuaXBtaS5zb3VyY2Vmb3JnZS5uZXQiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMCBcCisgICAgbmN1cnNlcyBcCisgICAgbmV0LXNubXAgXAorICAgIG9wZW5zc2wgXAorICAgIHBvcHQgXAorICAgIHB5dGhvbiBcCisgICAgc3dpZy1uYXRpdmUgXAorICAgICIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xICYgQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTRiMzE4ZDQxNjBlYjY5YzhlZTUzNDUyZmViMWI0Y2RmIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9vcGVuaXBtaS9PcGVuSVBNSS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG8tbm90LWluc3RhbGwtcHljLWFuZC1weW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWlndWktbm90LWNvbXBpbGUtcHljLXB5by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1oZWxwZXIgXAorICAgICAgICAgICBmaWxlOi8vaXBtaS5zZXJ2aWNlIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vT3BlbklQTUktJHtQVn0iCitTUkNfVVJJW21kNXN1bV0gPSAiMTQ2MWFjNGQ3OGZjNTE2NjQ2ZmQwYTZlNjA1YThiMDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjBmMWEwZWM3MzI0MDk5MzBiN2EzMWE2ZGFhNmNmMzliNTg1ZjUyMDU5YjYyYTVmMDkyYjdlY2UyMWFhNzVhNSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc3RhdGljIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcGVybD0nJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24nIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uaW5zdGFsbD0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZ2xpYnZlcj0yLjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnZGJtIgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICJhY19jdl9oZWFkZXJfZ2RibV9oPXllcyxhY19jdl9oZWFkZXJfZ2RibV9oPW5vLGdkYm0sIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcGVybCAke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXBlcmwgPSAiIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAorICAgICIKKworRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiBcCisgICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKKyAgICAiCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisKKyAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgorICAgIGF1dG90b29sc19kb19jb25maWd1cmUKKworICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAorICAgIAorICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCisgICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCisgICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KKyAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCisgICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgorICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCisgICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBlY2hvICJTQUw6IEQgPSAkRCIKKyAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCisgICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKKyAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgorICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCisgICAgdGhlbgorICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAorICAgIGZpCisgCisgICAgIyBmb3Igc3lzdGVtZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQorfQorCitJTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2FkOTk4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbnZwbi5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWI2NDQ5MWVjOThlYjZjNjQ5M2FjNWU0MTE4ZjEwNyIKLURFUEVORFMgPSAibHpvIG9wZW5zc2wgaXByb3V0ZTIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TUkNfVVJJID0gImh0dHA6Ly9zd3VwZGF0ZS5vcGVudnBuLm9yZy9jb21tdW5pdHkvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4gXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbkAuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuLXZvbGF0aWxlLmNvbmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MDVhNzlkMDA1NTU4ZDk0ZmExZTJiNzRlNDQxM2U5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYWU4ODNkOTUyMmM5ZmE2ZDE4OWU1ZTRhYWEwNThhOTNlZGQzZDBiODk3ZTNjMjY2NDEwN2M0Nzg1MDk5ZmMzIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gKz0gIm9wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2Ugb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotQ0ZMQUdTICs9ICItZm5vLWlubGluZSIKLQotIyBJIHdhbnQgb3BlbnZwbiB0byBiZSBhYmxlIHRvIHJlYWQgcGFzc3dvcmQgZnJvbSBmaWxlIChocncpCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWlwcm91dGUyIgotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcnLCAnLS1kaXNhYmxlLXBsdWdpbi1hdXRoLXBhbScsIGQpfSIKLQotIyBFeHBsaWNpdGx5IHNwZWNpZnkgSVBST1VURSB0byBieXBhc3MgdGhlIGNvbmZpZ3VyZS10aW1lIGNoZWNrIGZvciAvc2Jpbi9pcCBvbiB0aGUgaG9zdC4KLUVYVFJBX09FQ09ORiArPSAiSVBST1VURT0ke2Jhc2Vfc2JpbmRpcn0vaXAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vb3BlbnZwbiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLXNlcnZlciAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stc2VydmVyLmNvbmYKLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3NhbXBsZS9zYW1wbGUtY29uZmlnLWZpbGVzL2xvb3BiYWNrLWNsaWVudCAgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvbG9vcGJhY2stY2xpZW50LmNvbmYKLSAgICBpbnN0YWxsIC1kbSA3NTUgJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3NhbXBsZS9zYW1wbGUta2V5cy8qICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYgotICAgICAgICBpbnN0YWxsIC1kIC1tIDcxMCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL29wZW52cG4KLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vb3BlbnZwbi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgICAgIHNlZCAtaSAtZSAncyNATE9DQUxTVEFURURJUkAjJHtsb2NhbHN0YXRlZGlyfSNnJyAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIgJHtQTn0tc2FtcGxlICIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW52cG4vcGx1Z2lucy8uZGVidWciCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQgXAotICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tc2FtcGxlICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlLyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmZDQ2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC42LmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIFNTTCBWUE4gc29sdXRpb24gdmlhIHR1biBkZXZpY2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL29wZW52cG4uc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2FlZTU5NmVkMmRlZWZlM2U4YTg2MWUyNDI5MmFiYmEiCitERVBFTkRTID0gImx6byBvcGVuc3NsIGlwcm91dGUyICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgdXBkYXRlLXJjLmQKKworU1JDX1VSSSA9ICJodHRwOi8vc3d1cGRhdGUub3BlbnZwbi5vcmcvY29tbXVuaXR5L3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuIFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG5ALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbi12b2xhdGlsZS5jb25mIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTcxZDU3ZTI5Yjc4YjRiOTAyZWIyZjRhYWUyZjA1YTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM4ZGJkMzdmY2Y4ZWI5MzgyYzUzNjI4ZGIyMjI1OGM0MWJhOTU1MDE2NTUxOWQ5MjAwZThiZWJhZWY0Y2JlMiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICJvcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIG9wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCitJTklUU0NSSVBUX05BTUVfJHtQTn0gPSAib3BlbnZwbiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gInN0YXJ0IDEwIDIgMyA0IDUgLiBzdG9wIDcwIDAgMSA2IC4iCisKK0NGTEFHUyArPSAiLWZuby1pbmxpbmUiCisKKyMgSSB3YW50IG9wZW52cG4gdG8gYmUgYWJsZSB0byByZWFkIHBhc3N3b3JkIGZyb20gZmlsZSAoaHJ3KQorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1pcHJvdXRlMiIKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJywgJy0tZGlzYWJsZS1wbHVnaW4tYXV0aC1wYW0nLCBkKX0iCisKKyMgRXhwbGljaXRseSBzcGVjaWZ5IElQUk9VVEUgdG8gYnlwYXNzIHRoZSBjb25maWd1cmUtdGltZSBjaGVjayBmb3IgL3NiaW4vaXAgb24gdGhlIGhvc3QuCitFWFRSQV9PRUNPTkYgKz0gIklQUk9VVEU9JHtiYXNlX3NiaW5kaXJ9L2lwIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L29wZW52cG4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vb3BlbnZwbgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1zZXJ2ZXIgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLXNlcnZlci5jb25mCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9zYW1wbGUvc2FtcGxlLWNvbmZpZy1maWxlcy9sb29wYmFjay1jbGllbnQgICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL2xvb3BiYWNrLWNsaWVudC5jb25mCisgICAgaW5zdGFsbCAtZG0gNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L29wZW52cG4vc2FtcGxlL3NhbXBsZS1rZXlzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9zYW1wbGUvc2FtcGxlLWtleXMvKiAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vb3BlbnZwbkAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stY2xpZW50LnNlcnZpY2UKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfQorICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIKKyAgICAgICAgaW5zdGFsbCAtZCAtbSA3MTAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9vcGVudnBuCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wZW52cG4tdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL29wZW52cG4uY29uZgorICAgICAgICBzZWQgLWkgLWUgJ3MjQExPQ0FMU1RBVEVESVJAIyR7bG9jYWxzdGF0ZWRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiICR7UE59LXNhbXBsZSAiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtdHVuIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9vcGVudnBuL3BsdWdpbnMvLmRlYnVnIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXNhbXBsZSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1SZW1vdmUtbWFuLWZpbGVzLXdoaWNoLWNhbnQtYmUtYnVpbHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1SZW1vdmUtbWFuLWZpbGVzLXdoaWNoLWNhbnQtYmUtYnVpbHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI1OTU2MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLVJlbW92ZS1tYW4tZmlsZXMtd2hpY2gtY2FudC1iZS1idWlsdC5wYXRjaApAQCAtMCwwICsxLDEwMyBAQAorRnJvbSA1YThhMmY4MWVmODY1MGYwNmQxZDlkMjY4YWRkNjEyYWI0NjAyNWYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTIgSnVuIDIwMTggMjI6NTc6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIG1hbiBmaWxlcyB3aGljaCBjYW50IGJlIGJ1aWx0CisKK1JlbW92ZSBuZWVkIGZvciBwYW5kb2MtcHJlYnVpbHQgZHVyaW5nIGNyb3NzIGJ1aWxkCisKK0ZpeGVzIGVycm9ycworCit8IENNYWtlIEVycm9yIGF0IGxpYmlidW1hZC9tYW4vY21ha2VfaW5zdGFsbC5jbWFrZToxMDUgKGZpbGUpOgorfCAgIGZpbGUgSU5TVEFMTCBjYW5ub3QgZmluZAorfCAgICIvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtYmVjLWxpbnV4LW11c2wvcmRtYS1jb3JlLzE4LjEtcjAvZ2l0L2J1aWxkbGliL3BhbmRvYy1wcmVidWlsdC80MWJiYjBiZWQ3YTc4MWJlNTllOGMwZGNkOGI3Mjc4YWYyY2U2ODgyIi4KK3wgQ2FsbCBTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6Cit8ICAgY21ha2VfaW5zdGFsbC5jbWFrZTo0OCAoaW5jbHVkZSkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmlidW1hZC9tYW4vQ01ha2VMaXN0cy50eHQgICAgICB8ICAxIC0KKyBsaWJpYnZlcmJzL21hbi9DTWFrZUxpc3RzLnR4dCAgICAgfCAxNSAtLS0tLS0tLS0tLS0tLS0KKyBwcm92aWRlcnMvbWx4NS9tYW4vQ01ha2VMaXN0cy50eHQgfCAgMSAtCisgMyBmaWxlcyBjaGFuZ2VkLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmlidW1hZC9tYW4vQ01ha2VMaXN0cy50eHQgYi9saWJpYnVtYWQvbWFuL0NNYWtlTGlzdHMudHh0CitpbmRleCAxODU1ODRhMC4uYWM0NWE0ZTkgMTAwNjQ0CistLS0gYS9saWJpYnVtYWQvbWFuL0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJpYnVtYWQvbWFuL0NNYWtlTGlzdHMudHh0CitAQCAtMTUsNyArMTUsNiBAQCByZG1hX21hbl9wYWdlcygKKyAgIHVtYWRfZ2V0X21hZF9hZGRyLjMKKyAgIHVtYWRfZ2V0X3BrZXkuMworICAgdW1hZF9nZXRfcG9ydC4zCistICB1bWFkX2luaXQuMy5tZAorICAgdW1hZF9vcGVuX3BvcnQuMworICAgdW1hZF9wb2xsLjMKKyAgIHVtYWRfcmVjdi4zCitkaWZmIC0tZ2l0IGEvbGliaWJ2ZXJicy9tYW4vQ01ha2VMaXN0cy50eHQgYi9saWJpYnZlcmJzL21hbi9DTWFrZUxpc3RzLnR4dAoraW5kZXggODZkZDQ5ZGUuLmI1NDY3NWJlIDEwMDY0NAorLS0tIGEvbGliaWJ2ZXJicy9tYW4vQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYmlidmVyYnMvbWFuL0NNYWtlTGlzdHMudHh0CitAQCAtNSw3ICs1LDYgQEAgcmRtYV9tYW5fcGFnZXMoCisgICBpYnZfYWxsb2NfcGQuMworICAgaWJ2X2FsbG9jX3RkLjMKKyAgIGlidl9hc3luY3dhdGNoLjEKKy0gIGlidl9hdHRhY2hfbWNhc3QuMy5tZAorICAgaWJ2X2JpbmRfbXcuMworICAgaWJ2X2NyZWF0ZV9haC4zCisgICBpYnZfY3JlYXRlX2FoX2Zyb21fd2MuMworQEAgLTE0LDcgKzEzLDYgQEAgcmRtYV9tYW5fcGFnZXMoCisgICBpYnZfY3JlYXRlX2NxX2V4LjMKKyAgIGlidl9tb2RpZnlfY3EuMworICAgaWJ2X2NyZWF0ZV9mbG93LjMKKy0gIGlidl9jcmVhdGVfZmxvd19hY3Rpb24uMy5tZAorICAgaWJ2X2NyZWF0ZV9xcC4zCisgICBpYnZfY3JlYXRlX3FwX2V4LjMKKyAgIGlidl9jcmVhdGVfcndxX2luZF90YWJsZS4zCitAQCAtMjMsMTUgKzIxLDkgQEAgcmRtYV9tYW5fcGFnZXMoCisgICBpYnZfY3JlYXRlX3dxLjMKKyAgIGlidl9kZXZpY2VzLjEKKyAgIGlidl9kZXZpbmZvLjEKKy0gIGlidl9ldmVudF90eXBlX3N0ci4zLm1kCistICBpYnZfZm9ya19pbml0LjMubWQKKyAgIGlidl9nZXRfYXN5bmNfZXZlbnQuMworICAgaWJ2X2dldF9jcV9ldmVudC4zCistICBpYnZfZ2V0X2RldmljZV9ndWlkLjMubWQKKyAgIGlidl9nZXRfZGV2aWNlX2xpc3QuMworLSAgaWJ2X2dldF9kZXZpY2VfbmFtZS4zLm1kCistICBpYnZfZ2V0X3NycV9udW0uMy5tZAorLSAgaWJ2X2luY19ya2V5LjMubWQKKyAgIGlidl9tb2RpZnlfcXAuMworICAgaWJ2X21vZGlmeV9xcF9yYXRlX2xpbWl0LjMKKyAgIGlidl9tb2RpZnlfc3JxLjMKK0BAIC00NiwxOSArMzgsMTIgQEAgcmRtYV9tYW5fcGFnZXMoCisgICBpYnZfcG9zdF9zcnFfcmVjdi4zCisgICBpYnZfcXVlcnlfZGV2aWNlLjMKKyAgIGlidl9xdWVyeV9kZXZpY2VfZXguMworLSAgaWJ2X3F1ZXJ5X2dpZC4zLm1kCistICBpYnZfcXVlcnlfcGtleS4zLm1kCisgICBpYnZfcXVlcnlfcG9ydC4zCisgICBpYnZfcXVlcnlfcXAuMworICAgaWJ2X3F1ZXJ5X3J0X3ZhbHVlc19leC4zCisgICBpYnZfcXVlcnlfc3JxLjMKKy0gIGlidl9yYXRlX3RvX21icHMuMy5tZAorLSAgaWJ2X3JhdGVfdG9fbXVsdC4zLm1kCisgICBpYnZfcmNfcGluZ3BvbmcuMQorICAgaWJ2X3JlZ19tci4zCistICBpYnZfcmVxX25vdGlmeV9jcS4zLm1kCistICBpYnZfcmVyZWdfbXIuMy5tZAorLSAgaWJ2X3Jlc2l6ZV9jcS4zLm1kCisgICBpYnZfc3JxX3Bpbmdwb25nLjEKKyAgIGlidl91Y19waW5ncG9uZy4xCisgICBpYnZfdWRfcGluZ3BvbmcuMQorZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9tbHg1L21hbi9DTWFrZUxpc3RzLnR4dCBiL3Byb3ZpZGVycy9tbHg1L21hbi9DTWFrZUxpc3RzLnR4dAoraW5kZXggY2RjNzExNWUuLjg3NmI2ZmNmIDEwMDY0NAorLS0tIGEvcHJvdmlkZXJzL21seDUvbWFuL0NNYWtlTGlzdHMudHh0CisrKysgYi9wcm92aWRlcnMvbWx4NS9tYW4vQ01ha2VMaXN0cy50eHQKK0BAIC0xLDUgKzEsNCBAQAorIHJkbWFfbWFuX3BhZ2VzKAorLSAgbWx4NWR2X2Zsb3dfYWN0aW9uX2VzcC4zLm1kCisgICBtbHg1ZHZfZ2V0X2Nsb2NrX2luZm8uMworICAgbWx4NWR2X2luaXRfb2JqLjMKKyAgIG1seDVkdl9xdWVyeV9kZXZpY2UuMworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtU19JRlNPQ0staXMtZGVmaW5lZC1pbi1ib3RoLWdsaWJjLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1TX0lGU09DSy1pcy1kZWZpbmVkLWluLWJvdGgtZ2xpYmMtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDRjOWI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtU19JRlNPQ0staXMtZGVmaW5lZC1pbi1ib3RoLWdsaWJjLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBmMmRmMWRiMTFmM2E5NTgwNzc0MzAwZTcwM2I2ZjUzZGJjZGIyOGVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOCBKdW4gMjAxOCAyMDoxNzo1NyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBTX0lGU09DSyBpcyBkZWZpbmVkIGluIGJvdGggZ2xpYmMvbXVzbAorCitGaXhlcworCitwcmVsb2FkLmM6MTE4Mzo0NjogZXJyb3I6ICdfX1NfSUZTT0NLJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnU19JRlNPQ0snPworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYnJkbWFjbS9wcmVsb2FkLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJyZG1hY20vcHJlbG9hZC5jIGIvbGlicmRtYWNtL3ByZWxvYWQuYworaW5kZXggMGYyYWEyNTAuLmQ0NmJlYjFiIDEwMDY0NAorLS0tIGEvbGlicmRtYWNtL3ByZWxvYWQuYworKysrIGIvbGlicmRtYWNtL3ByZWxvYWQuYworQEAgLTExODAsNyArMTE4MCw3IEBAIGludCBfX2Z4c3RhdChpbnQgdmVyLCBpbnQgc29ja2V0LCBzdHJ1Y3Qgc3RhdCAqYnVmKQorIAlpZiAoZmRfZ2V0KHNvY2tldCwgJmZkKSA9PSBmZF9yc29ja2V0KSB7CisgCQlyZXQgPSByZWFsLmZ4c3RhdCh2ZXIsIHNvY2tldCwgYnVmKTsKKyAJCWlmICghcmV0KQorLQkJCWJ1Zi0+c3RfbW9kZSA9IChidWYtPnN0X21vZGUgJiB+U19JRk1UKSB8IF9fU19JRlNPQ0s7CisrCQkJYnVmLT5zdF9tb2RlID0gKGJ1Zi0+c3RfbW9kZSAmIH5TX0lGTVQpIHwgU19JRlNPQ0s7CisgCX0gZWxzZSB7CisgCQlyZXQgPSByZWFsLmZ4c3RhdCh2ZXIsIGZkLCBidWYpOworIAl9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1pbmNsdWRlLWVuZGlhbi5oLWZvci1odG9sZTMyLWFuZC1mcmllbmRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtaW5jbHVkZS1lbmRpYW4uaC1mb3ItaHRvbGUzMi1hbmQtZnJpZW5kcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTMzNTI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtaW5jbHVkZS1lbmRpYW4uaC1mb3ItaHRvbGUzMi1hbmQtZnJpZW5kcy5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDY1YjlhNDdjMDdiZTQ2MTFiNGZiYmNhZmZmMTk5MzE4NmJjYjA1MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMiBKdW4gMjAxOCAxOToxNTo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBlbmRpYW4uaCBmb3IgaHRvbGUzMiBhbmQgZnJpZW5kcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcHJvdmlkZXJzL2hucy9obnNfcm9jZV91LmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Byb3ZpZGVycy9obnMvaG5zX3JvY2VfdS5oIGIvcHJvdmlkZXJzL2hucy9obnNfcm9jZV91LmgKK2luZGV4IGJkNjZjNmU3Li5iMDc0MjRkYiAxMDA2NDQKKy0tLSBhL3Byb3ZpZGVycy9obnMvaG5zX3JvY2VfdS5oCisrKysgYi9wcm92aWRlcnMvaG5zL2huc19yb2NlX3UuaAorQEAgLTM0LDYgKzM0LDcgQEAKKyAjZGVmaW5lIF9ITlNfUk9DRV9VX0gKKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPGVuZGlhbi5oPgorICNpbmNsdWRlIDx1dGlsL2NvbXBpbGVyLmg+CisgCisgI2luY2x1ZGUgPGluZmluaWJhbmQvZHJpdmVyLmg+CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMi1SZW1vdmUtdW51c2VkLWluY2x1ZGUtZm9yLWV4ZWNpbmZvLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMi1SZW1vdmUtdW51c2VkLWluY2x1ZGUtZm9yLWV4ZWNpbmZvLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3Zjk2NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAyLVJlbW92ZS11bnVzZWQtaW5jbHVkZS1mb3ItZXhlY2luZm8uaC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDNkOWNhZTE1YzY5YzBiMzI2MGEwMjRhZDVkNjgwMmE4ZDg1NTE1YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxMiBKdW4gMjAxOCAxOToxODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gUmVtb3ZlIHVudXNlZCBpbmNsdWRlIGZvciBleGVjaW5mby5oCisKK0ZpeGVzIGJ1aWxkIG9uIG11c2wKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHByb3ZpZGVycy9xZWRyL3FlbHJfdmVyYnMuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wcm92aWRlcnMvcWVkci9xZWxyX3ZlcmJzLmMgYi9wcm92aWRlcnMvcWVkci9xZWxyX3ZlcmJzLmMKK2luZGV4IGUzYjAxZjI4Li4yZWUxYzgzMiAxMDA2NDQKKy0tLSBhL3Byb3ZpZGVycy9xZWRyL3FlbHJfdmVyYnMuYworKysrIGIvcHJvdmlkZXJzL3FlZHIvcWVscl92ZXJicy5jCitAQCAtNTQsNyArNTQsNiBAQAorIAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXhlY2luZm8uaD4KKyAKKyAjZGVmaW5lIFFFTFJfU1FFX0VMRU1FTlRfU0laRQkoc2l6ZW9mKHN0cnVjdCByZG1hX3NxX3NnZSkpCisgI2RlZmluZSBRRUxSX1JRRV9FTEVNRU5UX1NJWkUJKHNpemVvZihzdHJ1Y3QgcmRtYV9ycV9zZ2UpKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDItbmVpZ2guYy1Eby1ub3QtaW5jbHVkZS1uZXQtaWZfcGFja2V0LmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMi1uZWlnaC5jLURvLW5vdC1pbmNsdWRlLW5ldC1pZl9wYWNrZXQuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODg3ZjIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDItbmVpZ2guYy1Eby1ub3QtaW5jbHVkZS1uZXQtaWZfcGFja2V0LmgucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSA4MjQ4NmY3ZTFlZTJhYTA3YTVjMTJjYjM1NzgzNDk5M2FhOGMxZDIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgOCBKdW4gMjAxOCAyMDoxOToxMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBuZWlnaC5jOiBEbyBub3QgaW5jbHVkZSBuZXQvaWZfcGFja2V0LmgKKworVGhpcyBoZWFkZXIgaXMgZ2xpYmMgc3BlY2lmaWMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJpYnZlcmJzL25laWdoLmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliaWJ2ZXJicy9uZWlnaC5jIGIvbGliaWJ2ZXJicy9uZWlnaC5jCitpbmRleCAyMTE3N2RiMC4uY2ZjNTkzYTAgMTAwNjQ0CistLS0gYS9saWJpYnZlcmJzL25laWdoLmMKKysrKyBiL2xpYmlidmVyYnMvbmVpZ2guYworQEAgLTIsNyArMiw2IEBACisgICovCisgCisgI2luY2x1ZGUgImNvbmZpZy5oIgorLSNpbmNsdWRlIDxuZXQvaWZfcGFja2V0Lmg+CisgI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisgI2luY2x1ZGUgPGVuZGlhbi5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlXzE4LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMTguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQ4NjRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlXzE4LjEuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2Ugc3VwcG9ydCBmb3IgSW5maW5pQmFuZC9SRE1BIHZlcmJzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyB0aGUgdXNlcnNwYWNlIGNvbXBvbmVudHMgZm9yIHRoZSBMaW51eCBLZXJuZWwncyBkcml2ZXJzIEluZmluaWJhbmQvUkRNQSBzdWJzeXN0ZW0uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImxpYm5sIgorUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmUuZ2l0O2JyYW5jaD1zdGFibGUtdjE4IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU19JRlNPQ0staXMtZGVmaW5lZC1pbi1ib3RoLWdsaWJjLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uZWlnaC5jLURvLW5vdC1pbmNsdWRlLW5ldC1pZl9wYWNrZXQuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtZW5kaWFuLmgtZm9yLWh0b2xlMzItYW5kLWZyaWVuZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SZW1vdmUtdW51c2VkLWluY2x1ZGUtZm9yLWV4ZWNpbmZvLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbWFuLWZpbGVzLXdoaWNoLWNhbnQtYmUtYnVpbHQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNzg0NGIzZmJlNTEyMDYyM2Q2M2IyOWVjYjQzZWI4M2E2MTEyOTY1OCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyNEZWZhdWx0IER1YWwgTGljZW5zZSBodHRwczovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmUvYmxvYi9tYXN0ZXIvQ09QWUlORy5tZAorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuQlNEX0ZCO21kNT0wZWMxOGJhZTFhOWRmOTJjOGQ2YWUwMWY5NGEyODlhZSBcCisJCSAgIGZpbGU6Ly9DT1BZSU5HLkdQTDI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCisKK0ZJTEVTX1NPTElCU0RFViA9ICIiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgorCitpbmhlcml0IGNtYWtlCisKK09FQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9QUk9HUkFNID0gIkJPVEgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3NwaWNlLXByb3RvY29sX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2UtcHJvdG9jb2xfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZDBhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3NwaWNlLXByb3RvY29sX2dpdC5iYgpAQCAtMCwwICsxLDI4IEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKworU1VNTUFSWSA9ICJTaW1wbGUgUHJvdG9jb2wgZm9yIEluZGVwZW5kZW50IENvbXB1dGluZyBFbnZpcm9ubWVudHMiCitERVNDUklQVElPTiA9ICJTUElDRSAodGhlIFNpbXBsZSBQcm90b2NvbCBmb3IgSW5kZXBlbmRlbnQgQ29tcHV0aW5nIFwKK0Vudmlyb25tZW50cykgaXMgYSByZW1vdGUtZGlzcGxheSBzeXN0ZW0gYnVpbHQgZm9yIHZpcnR1YWwgXAorZW52aXJvbm1lbnRzIHdoaWNoIGFsbG93cyB1c2VycyB0byB2aWV3IGEgY29tcHV0aW5nICdkZXNrdG9wJyBcIAorZW52aXJvbm1lbnQgLSBub3Qgb25seSBvbiBpdHMgY29tcHV0ZXItc2VydmVyIG1hY2hpbmUsIGJ1dCBhbHNvIGZyb20gXAorYW55d2hlcmUgb24gdGhlIEludGVybmV0IGFuZCB1c2luZyBhIHdpZGUgdmFyaWV0eSBvZiBtYWNoaW5lIFwKK2FyY2hpdGVjdHVyZXMuIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIzNzMxMWNiNTYwNGYzZTVjYzJmYjBmZDIzNTI3ZTk1IgorCitQViA9ICIwLjEyLjEzK2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiODc0NDE1MjRmNGU3Yjc5NjU4ZTQyYmQ4ZjFmNmMzZTNjODY0OWFhNSIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3NwaWNlL3NwaWNlLXByb3RvY29sIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS8wMDAxLUNvbnZlcnQtcHRocmVhZF90LXRvLWJlLW51bWVyaWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3NwaWNlLzAwMDEtQ29udmVydC1wdGhyZWFkX3QtdG8tYmUtbnVtZXJpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDViN2M4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS8wMDAxLUNvbnZlcnQtcHRocmVhZF90LXRvLWJlLW51bWVyaWMucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSAwNzI2Y2U2ZDZmNTJlMTM1ZTI4ZjE1Y2E4MzkyNTY4Yzg0OTA5YjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTYgSnVuIDIwMTggMTY6MjE6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ29udmVydCBwdGhyZWFkX3QgdG8gYmUgbnVtZXJpYworCit0eXBlY2FzdCBwdGhyZWFkX3QgdG8gdW5zaWduZWQgbG9uZworcHRocmVhZF90IGlzIGltcGxlbWVudGVkIGFzIGEgc3RydWN0IHBvaW50IGluIG11c2wgYW5kIGl0cyBhcyBwZXIgc3RhbmRhcmQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzZXJ2ZXIvcmVkLWNoYW5uZWwuYyB8IDUgKysrLS0KKyBzZXJ2ZXIvcmVkLWNsaWVudC5jICB8IDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvcmVkLWNoYW5uZWwuYyBiL3NlcnZlci9yZWQtY2hhbm5lbC5jCitpbmRleCAxYjM4ZjA0ZC4uMTFkYzY2N2IgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvcmVkLWNoYW5uZWwuYworKysrIGIvc2VydmVyL3JlZC1jaGFubmVsLmMKK0BAIC0xOTIsNyArMTkyLDcgQEAgcmVkX2NoYW5uZWxfY29uc3RydWN0ZWQoR09iamVjdCAqb2JqZWN0KQorIHsKKyAgICAgUmVkQ2hhbm5lbCAqc2VsZiA9IFJFRF9DSEFOTkVMKG9iamVjdCk7CisgCistICAgIHJlZF9jaGFubmVsX2RlYnVnKHNlbGYsICJ0aHJlYWRfaWQgMHglbHgiLCBzZWxmLT5wcml2LT50aHJlYWRfaWQpOworKyAgICByZWRfY2hhbm5lbF9kZWJ1ZyhzZWxmLCAidGhyZWFkX2lkIDB4JWx4IiwgKHVuc2lnbmVkIGxvbmcpc2VsZi0+cHJpdi0+dGhyZWFkX2lkKTsKKyAKKyAgICAgUmVkQ2hhbm5lbENsYXNzICprbGFzcyA9IFJFRF9DSEFOTkVMX0dFVF9DTEFTUyhzZWxmKTsKKyAKK0BAIC00NzUsNyArNDc1LDggQEAgdm9pZCByZWRfY2hhbm5lbF9yZW1vdmVfY2xpZW50KFJlZENoYW5uZWwgKmNoYW5uZWwsIFJlZENoYW5uZWxDbGllbnQgKnJjYykKKyAgICAgICAgIHJlZF9jaGFubmVsX3dhcm5pbmcoY2hhbm5lbCwgImNoYW5uZWwtPnRocmVhZF9pZCAoMHglbHgpICE9IHB0aHJlYWRfc2VsZiAoMHglbHgpLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklmIG9uZSBvZiB0aGUgdGhyZWFkcyBpcyAhPSBpby10aHJlYWQgJiYgIT0gdmNwdS10aHJlYWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXMgbWlnaHQgYmUgYSBCVUciLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsLT5wcml2LT50aHJlYWRfaWQsIHB0aHJlYWRfc2VsZigpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpY2hhbm5lbC0+cHJpdi0+dGhyZWFkX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylwdGhyZWFkX3NlbGYoKSk7CisgICAgIH0KKyAgICAgc3BpY2VfcmV0dXJuX2lmX2ZhaWwoY2hhbm5lbCk7CisgICAgIGxpbmsgPSBnX2xpc3RfZmluZChjaGFubmVsLT5wcml2LT5jbGllbnRzLCByY2MpOworZGlmZiAtLWdpdCBhL3NlcnZlci9yZWQtY2xpZW50LmMgYi9zZXJ2ZXIvcmVkLWNsaWVudC5jCitpbmRleCBkZGZjNTQwMC4uNzY5ODY2NDAgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvcmVkLWNsaWVudC5jCisrKysgYi9zZXJ2ZXIvcmVkLWNsaWVudC5jCitAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgcmVkX2NsaWVudF9taWdyYXRlKFJlZENsaWVudCAqY2xpZW50KQorICAgICAgICAgc3BpY2Vfd2FybmluZygiY2xpZW50LT50aHJlYWRfaWQgKDB4JWx4KSAhPSBwdGhyZWFkX3NlbGYgKDB4JWx4KS4iCisgICAgICAgICAgICAgICAgICAgICAgICJJZiBvbmUgb2YgdGhlIHRocmVhZHMgaXMgIT0gaW8tdGhyZWFkICYmICE9IHZjcHUtdGhyZWFkLCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiB0aGlzIG1pZ2h0IGJlIGEgQlVHIiwKKy0gICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT50aHJlYWRfaWQsIHB0aHJlYWRfc2VsZigpKTsKKysgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpY2xpZW50LT50aHJlYWRfaWQsICh1bnNpZ25lZCBsb25nKXB0aHJlYWRfc2VsZigpKTsKKyAgICAgfQorICAgICBGT1JFQUNIX0NIQU5ORUxfQ0xJRU5UKGNsaWVudCwgcmNjKSB7CisgICAgICAgICBpZiAocmVkX2NoYW5uZWxfY2xpZW50X2lzX2Nvbm5lY3RlZChyY2MpKSB7CitAQCAtMTk5LDggKzE5OSw4IEBAIHZvaWQgcmVkX2NsaWVudF9kZXN0cm95KFJlZENsaWVudCAqY2xpZW50KQorICAgICAgICAgc3BpY2Vfd2FybmluZygiY2xpZW50LT50aHJlYWRfaWQgKDB4JWx4KSAhPSBwdGhyZWFkX3NlbGYgKDB4JWx4KS4iCisgICAgICAgICAgICAgICAgICAgICAgICJJZiBvbmUgb2YgdGhlIHRocmVhZHMgaXMgIT0gaW8tdGhyZWFkICYmICE9IHZjcHUtdGhyZWFkLCIKKyAgICAgICAgICAgICAgICAgICAgICAgIiB0aGlzIG1pZ2h0IGJlIGEgQlVHIiwKKy0gICAgICAgICAgICAgICAgICAgICAgY2xpZW50LT50aHJlYWRfaWQsCistICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfc2VsZigpKTsKKysgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpY2xpZW50LT50aHJlYWRfaWQsCisrICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXB0aHJlYWRfc2VsZigpKTsKKyAgICAgfQorICAgICByZWRfY2xpZW50X3NldF9kaXNjb25uZWN0aW5nKGNsaWVudCk7CisgICAgIEZPUkVBQ0hfQ0hBTk5FTF9DTElFTlQoY2xpZW50LCByY2MpIHsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2UvMDAwMS1zcGljZS1maXgtY29tcGlsZS1mYWlsLXByb2JsZW0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3NwaWNlLzAwMDEtc3BpY2UtZml4LWNvbXBpbGUtZmFpbC1wcm9ibGVtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmOWQ1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3NwaWNlLzAwMDEtc3BpY2UtZml4LWNvbXBpbGUtZmFpbC1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gNzAyMzczMmM2NWI0ZGM1MDljNDZhNTRmYjc3MTVkYTI3NWI1NTk3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEzIFNlcCAyMDE4IDEyOjM5OjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNwaWNlOiBmaXggY29tcGlsZSBmYWlsIHByb2JsZW0KKworY29tcGlsZSBlcnJvcjoKK2Zvcm1hdCAnJWQnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnaW50JywgYnV0IGFyZ3VtZW50IDYgaGFzIAordHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnIFstV2Vycm9yPWZvcm1hdD1dCisKK3NwaWNlIGNvbXBpbGUgZmFpbGVkIG9uIDMyYml0IHN5c3RlbSwgc2luY2UgdXBzdHJlYW0gY29tbWl0Cis5NTQxY2QyZmUoaW4gVjAuMTQuMSkgY2hhbmdlICVsZCB0byAlUFJJZFBUUiwgJVBSSWRQVFIgaXMgJWQsIGJ1dCBhcmd1bWVudAorc3RybS50b3RhbF9vdXQgaXMgdUxvbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vZ2l0aHViLmNvbS9mcmVlZGVza3RvcC9zcGljZS9wdWxsLzFdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzZXJ2ZXIvcmVkLXJlcGxheS1xeGwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NlcnZlci9yZWQtcmVwbGF5LXF4bC5jIGIvc2VydmVyL3JlZC1yZXBsYXktcXhsLmMKK2luZGV4IDFmY2U3NmMuLmJkMzNiNTggMTAwNjQ0CistLS0gYS9zZXJ2ZXIvcmVkLXJlcGxheS1xeGwuYworKysrIGIvc2VydmVyL3JlZC1yZXBsYXktcXhsLmMKK0BAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIHJlcGxheV90IHJlYWRfYmluYXJ5KFNwaWNlUmVwbGF5ICpyZXBsYXksIGNvbnN0IGNoYXIgKnByZWZpeCwgc2l6ZV90ICpzaXoKKyAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgfQorICAgICAgICAgaWYgKChyZXQgPSBpbmZsYXRlKCZzdHJtLCBaX05PX0ZMVVNIKSkgIT0gWl9TVFJFQU1fRU5EKSB7CistICAgICAgICAgICAgc3BpY2VfZXJyb3IoImluZmxhdGUgZXJyb3IgJWQgKGRpc2M6ICUiIFBSSWRQVFIgIikiLCByZXQsICpzaXplIC0gc3RybS50b3RhbF9vdXQpOworKyAgICAgICAgICAgIHNwaWNlX2Vycm9yKCJpbmZsYXRlIGVycm9yICVkIChkaXNjOiAlbGQpIiwgcmV0LCAqc2l6ZSAtIHN0cm0udG90YWxfb3V0KTsKKyAgICAgICAgICAgICBpZiAocmV0ID09IFpfREFUQV9FUlJPUikgeworICAgICAgICAgICAgICAgICAvKiBsYXN0IG9wZXJhdGlvbiBtYXkgYmUgd3JvbmcuIHNpbmNlIHdlIGRvIHRoZSByZWNvcmRpbmcKKyAgICAgICAgICAgICAgICAgICogaW4gcmVkX3dvcmtlciwgd2hlbiB0aGVyZSBpcyBhIHNodXRkb3duIGZyb20gdGhlIHZjcHUvaW8gdGhyZWFkCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2VfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFkNDZjMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2VfZ2l0LmJiCkBAIC0wLDAgKzEsNTcgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworCitTVU1NQVJZID0gIlNpbXBsZSBQcm90b2NvbCBmb3IgSW5kZXBlbmRlbnQgQ29tcHV0aW5nIEVudmlyb25tZW50cyIKK0RFU0NSSVBUSU9OID0gIlNQSUNFICh0aGUgU2ltcGxlIFByb3RvY29sIGZvciBJbmRlcGVuZGVudCBDb21wdXRpbmcgXAorRW52aXJvbm1lbnRzKSBpcyBhIHJlbW90ZS1kaXNwbGF5IHN5c3RlbSBidWlsdCBmb3IgdmlydHVhbCBcCitlbnZpcm9ubWVudHMgd2hpY2ggYWxsb3dzIHVzZXJzIHRvIHZpZXcgYSBjb21wdXRpbmcgJ2Rlc2t0b3AnIFwgCitlbnZpcm9ubWVudCAtIG5vdCBvbmx5IG9uIGl0cyBjb21wdXRlci1zZXJ2ZXIgbWFjaGluZSwgYnV0IGFsc28gZnJvbSBcCithbnl3aGVyZSBvbiB0aGUgSW50ZXJuZXQgYW5kIHVzaW5nIGEgd2lkZSB2YXJpZXR5IG9mIG1hY2hpbmUgXAorYXJjaGl0ZWN0dXJlcy4iCisKK0xJQ0VOU0UgPSAiQlNEICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1BWID0gIjAuMTQuMStnaXQke1NSQ1BWfSIKKworU1JDUkVWX3NwaWNlID0gImVhYTA3ZWYxNWNmYzNiZjU3YTY5ZGEyNTc2YWY2NmYwMjg3ODc3NzQiCitTUkNSRVZfc3BpY2UtY29tbW9uID0gIjZiOTNiM2ZjZTg5MDliODM2ZWYxZDE0MzRkMTkxOTAwZDhhYTAwYmUiCisKK1NSQ1JFVl9GT1JNQVQgPSAic3BpY2Vfc3BpY2UtY29tbW9uIgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvc3BpY2Uvc3BpY2U7bmFtZT1zcGljZSBcCisgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvc3BpY2Uvc3BpY2UtY29tbW9uO2Rlc3RzdWZmaXg9Z2l0L3N1YnByb2plY3RzL3NwaWNlLWNvbW1vbjtuYW1lPXNwaWNlLWNvbW1vbiBcCisgICAgZmlsZTovLzAwMDEtQ29udmVydC1wdGhyZWFkX3QtdG8tYmUtbnVtZXJpYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtc3BpY2UtZml4LWNvbXBpbGUtZmFpbC1wcm9ibGVtLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob25uYXRpdmUgcHl0aG9uLWRpciBwa2djb25maWcKKworREVQRU5EUyArPSAic3BpY2UtcHJvdG9jb2wganBlZyBwaXhtYW4gYWxzYS1saWIgZ2xpYi0yLjAgcHl0aG9uLXB5cGFyc2luZy1uYXRpdmUgcHl0aG9uLXNpeC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgorCitleHBvcnQgUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24iCitleHBvcnQgUFlUSE9OUEFUSD0iJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcyIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRUNPTkZJRyA/PSAic2FzbCIKKworUEFDS0FHRUNPTkZJR1tjZWx0MDUxXSA9ICItLWVuYWJsZS1jZWx0MDUxLC0tZGlzYWJsZS1jZWx0MDUxLGNlbHQwNTEiCitQQUNLQUdFQ09ORklHW3NtYXJ0Y2FyZF0gPSAiLS1lbmFibGUtc21hcnRjYXJkLC0tZGlzYWJsZS1zbWFydGNhcmQsbGliY2FjYXJkLCIKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCwiCitQQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLS1lbmFibGUtY2xpZW50LC0tZGlzYWJsZS1jbGllbnQsLCIKK1BBQ0tBR0VDT05GSUdbZ3VpXSA9ICItLWVuYWJsZS1ndWksLS1kaXNhYmxlLWd1aSwsIgorUEFDS0FHRUNPTkZJR1tvcHVzXSA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLW9wZW5nbCwtLWRpc2FibGUtb3BlbmdsLCwiCitQQUNLQUdFQ09ORklHW3hpbmVyYW1hXSA9ICItLWVuYWJsZS14aW5lcmFtYSwtLWRpc2FibGUteGluZXJhbWEsbGlieGluZXJhbWEsIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2KS4qLWxpbnV4JworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0VYVFJBX09FQ09ORl90b29sY2hhaW4tY2xhbmcgKz0gIi0tZGlzYWJsZS13ZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3VzYnJlZGlyX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2UvdXNicmVkaXJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZWE3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3NwaWNlL3VzYnJlZGlyX2dpdC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gInVzYnJlZGlyIGxpYnJhcmllcyBhbmQgdXRpbGl0aWVzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRiNTRhMWZkNTVhNDQ4ODY1YTBiMzJkNDE1OTg3NTlkIFwKKyIKKworREVQRU5EUyA9ICJsaWJ1c2IxIgorCitTUkNSRVYgPSAiMzlhYTNjNjlmNjFiYmEyODg1NmEzZWVmM2ZlNGFiMzdhMzk2OGU4OCIKK1BWID0gIjAuNy4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvc3BpY2UvdXNicmVkaXIgXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL2ZpbGVzL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9maWxlcy9maXgtZnVudGlvbi1wYXJhbWV0ZXIucGF0Y2gKaW5kZXggYmU2NjBkMS4uNTk0NTUwNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL2ZpbGVzL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vZmlsZXMvZml4LWZ1bnRpb24tcGFyYW1ldGVyLnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogVHVlLCA0IE1hciAyMDE0IDE0OjM4OjQyICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGZpeCB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyCiAKLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIE9yaWdpbmFsIG9wZW5zc2xfZGlmZmllX2hlbGxtYW5fY3JlYXRlIGhhcyB0aHJlZSBwYXJhbWV0ZXJzLCBidXQKIGl0IGlzIHJlYXNzaWduZWQgYSBmdW5jdGlvbiBwb2ludGVyIHdoaWNoIGhhcyBvbmUgcGFyYW1ldGVyLCBhbmQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS42LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZmUxZjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIGZvciB0aGUgXAotTGludXggb3BlcmF0aW5nIHN5c3RlbS4iCi1TVU1NQVJZID0gInN0cm9uZ1N3YW4gaXMgYW4gT3BlblNvdXJjZSBJUHNlYyBpbXBsZW1lbnRhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3Ryb25nc3dhbi5vcmciCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZ21wIG9wZW5zc2wgZmxleC1uYXRpdmUgZmxleCBiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnN0cm9uZ3N3YW4ub3JnL3N0cm9uZ3N3YW4tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZnVudGlvbi1wYXJhbWV0ZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1vcnkuaC1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NmFhM2FhMThmYmM0YmQ1MjhmOWEwMzQ1Y2U3OTkxMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMGE2MGEzMGViZjNjNTM0YzIyMzU1OWUxNjg2NDk3YTIxZGVkNzA5YTVkNjA1YzUxMjNjMmY1MmJjYzIyZTkyIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgLS13aXRob3V0LWxpYi1wcmVmaXggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgotCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJjaGFyb24gY3VybCBnbXAgb3BlbnNzbCBzdHJva2Ugc3FsaXRlMyBcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkYXAnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thZXNuaV0gPSAiLS1lbmFibGUtYWVzbmksLS1kaXNhYmxlLWFlc25pLCwke1BOfS1wbHVnaW4tYWVzbmkiCi1QQUNLQUdFQ09ORklHW2NoYXJvbl0gPSAiLS1lbmFibGUtY2hhcm9uLC0tZGlzYWJsZS1jaGFyb24sIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsJHtQTn0tcGx1Z2luLWN1cmwiCi1QQUNLQUdFQ09ORklHW2dtcF0gPSAiLS1lbmFibGUtZ21wLC0tZGlzYWJsZS1nbXAsZ21wLCR7UE59LXBsdWdpbi1nbXAiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsb3BlbmxkYXAsJHtQTn0tcGx1Z2luLWxkYXAiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCwtLWRpc2FibGUtbXlzcWwsbXlzcWw1LCR7UE59LXBsdWdpbi1teXNxbCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsLCR7UE59LXBsdWdpbi1vcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2VwXSA9ICItLWVuYWJsZS1zY2VwY2xpZW50LC0tZGlzYWJsZS1zY2VwY2xpZW50LCIKLVBBQ0tBR0VDT05GSUdbc291cF0gPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCwke1BOfS1wbHVnaW4tc291cCIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMywke1BOfS1wbHVnaW4tc3FsaXRlIgotUEFDS0FHRUNPTkZJR1tzdHJva2VdID0gIi0tZW5hYmxlLXN0cm9rZSwtLWRpc2FibGUtc3Ryb2tlLCwke1BOfS1wbHVnaW4tc3Ryb2tlIgotUEFDS0FHRUNPTkZJR1tzd2FuY3RsXSA9ICItLWVuYWJsZS1zd2FuY3RsLC0tZGlzYWJsZS1zd2FuY3RsLCxsaWJnY2MiCi0KLSMgcmVxdWlyZXMgc3dhbmN0bAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kLWNoYXJvbl0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCxzeXN0ZW1kLCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCBwa2djb25maWcKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1pcHNlYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGJnICs9ICIke2JpbmRpcn0vLmRlYnVnICR7bGliZGlyfS9pcHNlYy8uZGVidWcgJHtsaWJleGVjZGlyfS9pcHNlYy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9pcHNlYy9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9pcHNlYy8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vaXBzZWMvKi5hIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8qLmNvbmYgJHtzeXNjb25mZGlyfS9pcHNlYy5kLyouY29uZiAke3N5c2NvbmZkaXJ9L3N0cm9uZ3N3YW4uZC8qLmNvbmYiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wbHVnaW5zIgotQUxMT1dfRU1QVFlfJHtQTn0tcGx1Z2lucyA9ICIxIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qJCIKLU5PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgotCi1weXRob24gc3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICgpIHsKLSAgICBzeXNjb25mZGlyID0gZC5leHBhbmQoJyR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kL2NoYXJvbicpCi0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9pcHNlYy9wbHVnaW5zJykKLSAgICBkYmdsaWJkaXIgPSBvcy5wYXRoLmpvaW4obGliZGlyLCAnLmRlYnVnJykKLQotICAgIGRlZiBhZGRfcGx1Z2luX2NvbmYoZiwgcGtnLCBmaWxlX3JlZ2V4LCBvdXRwdXRfcGF0dGVybiwgbW9kdWxlbmFtZSk6Ci0gICAgICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcsIFRydWUpCi0gICAgICAgIG9sZGZpbGVzID0gZC5nZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBUcnVlKQotICAgICAgICBuZXdmaWxlID0gJy8nICsgb3MucGF0aC5yZWxwYXRoKGYsIGR2YXIpCi0KLSAgICAgICAgaWYgbm90IG9sZGZpbGVzOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBuZXdmaWxlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZC5zZXRWYXIoJ0NPTkZGSUxFU18nICsgcGtnLCBvbGRmaWxlcyArICIgIiArIG5ld2ZpbGUpCi0KLSAgICBzcGxpdF9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c2NvbmZkaXIsICcoLiopXC5jb25mJywgJyR7UE59LXBsdWdpbi0lcycsICdzdHJvbmdTd2FuICVzIHBsdWdpbicsIHByZXBlbmQ9VHJ1ZSwgaG9vaz1hZGRfcGx1Z2luX2NvbmYpCi0KLSAgICBzcGxpdF9kYmdfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBkYmdsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLnNvJywgJyR7UE59LXBsdWdpbi0lcy1kYmcnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZWJ1Z2dpbmcgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRiZycpCi0gICAgc3BsaXRfZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5sYScsICcke1BOfS1wbHVnaW4tJXMtZGV2JywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luIC0gRGV2ZWxvcG1lbnQgZmlsZXMnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgc3BsaXRfc3RhdGljZGV2X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5hJywgJyR7UE59LXBsdWdpbi0lcy1zdGF0aWNkZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcyAoU3RhdGljIExpYnJhcmllcyknLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JyR7UE59LXN0YXRpY2RldicpCi0KLSAgICBpZiBzcGxpdF9wYWNrYWdlczoKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nLCBUcnVlKQotICAgICAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1wbHVnaW5zJywgJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kYmcnLCAnICcgKyAnICcuam9pbihzcGxpdF9kYmdfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1kZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9kZXZfcGFja2FnZXMpKQotICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHBuICsgJy1zdGF0aWNkZXYnLCAnICcgKyAnICcuam9pbihzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMpKQotfQotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3N0cm9uZ3N3YW5fcGx1Z2lucyAiCi0KLSMgSW5zdGFsbCBzb21lIGRlZmF1bHQgcGx1Z2lucyBiYXNlZCBvbiBkZWZhdWx0IHN0cm9uZ1N3YW4gLi9jb25maWd1cmUgb3B0aW9ucwotIyBTZWUgaHR0cHM6Ly93aWtpLnN0cm9uZ3N3YW4ub3JnL3Byb2plY3RzL3N0cm9uZ3N3YW4vd2lraS9QbHVnaW5saXN0Ci1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UE59LXBsdWdpbi1hZXMgXAotICAgICR7UE59LXBsdWdpbi1hdHRyIFwKLSAgICAke1BOfS1wbHVnaW4tY21hYyBcCi0gICAgJHtQTn0tcGx1Z2luLWNvbnN0cmFpbnRzIFwKLSAgICAke1BOfS1wbHVnaW4tZGVzIFwKLSAgICAke1BOfS1wbHVnaW4tZG5za2V5IFwKLSAgICAke1BOfS1wbHVnaW4taG1hYyBcCi0gICAgJHtQTn0tcGx1Z2luLWtlcm5lbC1uZXRsaW5rIFwKLSAgICAke1BOfS1wbHVnaW4tbWQ1IFwKLSAgICAke1BOfS1wbHVnaW4tbm9uY2UgXAotICAgICR7UE59LXBsdWdpbi1wZW0gXAotICAgICR7UE59LXBsdWdpbi1wZ3AgXAotICAgICR7UE59LXBsdWdpbi1wa2NzMSBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3M3IFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczggXAotICAgICR7UE59LXBsdWdpbi1wa2NzMTIgXAotICAgICR7UE59LXBsdWdpbi1wdWJrZXkgXAotICAgICR7UE59LXBsdWdpbi1yYW5kb20gXAotICAgICR7UE59LXBsdWdpbi1yYzIgXAotICAgICR7UE59LXBsdWdpbi1yZXNvbHZlIFwKLSAgICAke1BOfS1wbHVnaW4tcmV2b2NhdGlvbiBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTEgXAotICAgICR7UE59LXBsdWdpbi1zaGEyIFwKLSAgICAke1BOfS1wbHVnaW4tc29ja2V0LWRlZmF1bHQgXAotICAgICR7UE59LXBsdWdpbi1zc2hrZXkgXAotICAgICR7UE59LXBsdWdpbi11cGRvd24gXAotICAgICR7UE59LXBsdWdpbi12aWNpIFwKLSAgICAke1BOfS1wbHVnaW4teDUwOSBcCi0gICAgJHtQTn0tcGx1Z2luLXhhdXRoLWdlbmVyaWMgXAotICAgICR7UE59LXBsdWdpbi14Y2JjIFwKLSAgICAke1BOfS1wbHVnaW4tY3VydmUyNTUxOSBcCi0gICAgIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N3YW5jdGwnLCAnJHtCUE59LXN3YW5jdGwuc2VydmljZScsICcke0JQTn0uc2VydmljZScsIGQpfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhiYjE3YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuNy4xLmJiCkBAIC0wLDAgKzEsMTM0IEBACitERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCitMaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKK1NVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjg2YjdlOTMyMWNkZTA3NWNmMzgyMjY4ZmQyODJlMGIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwNmY5YzkxMjZlMmEyZjRlN2E4NzRiNWUxYmQyYWJlYzFiYmJiMTkzYzhiM2IzYTRjNmNjZDhjMmQ0NTRiZWMiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInN0cm9uZ3N3YW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCisiCisKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLycsICctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLCBkKX0iCisKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNoYXJvbiBjdXJsIGdtcCBvcGVuc3NsIHN0cm9rZSBzcWxpdGUzIFwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Flc25pXSA9ICItLWVuYWJsZS1hZXNuaSwtLWRpc2FibGUtYWVzbmksLCR7UE59LXBsdWdpbi1hZXNuaSIKK1BBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgorUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCitQQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCitQQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKKworIyByZXF1aXJlcyBzd2FuY3RsCitQQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZworCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCitBTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgorTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisKK3B5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgeworICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQorICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQorCisgICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKKyAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJywgVHJ1ZSkKKyAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2csIFRydWUpCisgICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKKworICAgICAgICBpZiBub3Qgb2xkZmlsZXM6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKKworICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKKworICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKKyAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKKyAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKKworICAgIGlmIHNwbGl0X3BhY2thZ2VzOgorICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicsIFRydWUpCisgICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKKworIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCisjIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQTn0tcGx1Z2luLWFlcyBcCisgICAgJHtQTn0tcGx1Z2luLWF0dHIgXAorICAgICR7UE59LXBsdWdpbi1jbWFjIFwKKyAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAorICAgICR7UE59LXBsdWdpbi1kZXMgXAorICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAorICAgICR7UE59LXBsdWdpbi1obWFjIFwKKyAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAorICAgICR7UE59LXBsdWdpbi1tZDUgXAorICAgICR7UE59LXBsdWdpbi1ub25jZSBcCisgICAgJHtQTn0tcGx1Z2luLXBlbSBcCisgICAgJHtQTn0tcGx1Z2luLXBncCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczcgXAorICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCisgICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCisgICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCisgICAgJHtQTn0tcGx1Z2luLXJjMiBcCisgICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAorICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKKyAgICAke1BOfS1wbHVnaW4tc2hhMSBcCisgICAgJHtQTn0tcGx1Z2luLXNoYTIgXAorICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCisgICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCisgICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCisgICAgJHtQTn0tcGx1Z2luLXZpY2kgXAorICAgICR7UE59LXBsdWdpbi14NTA5IFwKKyAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCisgICAgJHtQTn0tcGx1Z2luLXhjYmMgXAorICAgICR7UE59LXBsdWdpbi1jdXJ2ZTI1NTE5IFwKKyAgICAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0tc3dhbmN0bC5zZXJ2aWNlJywgJyR7QlBOfS5zZXJ2aWNlJywgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS4zNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3R1bm5lbC9zdHVubmVsXzUuMzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjODQ3OGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvZ3JhbSBmb3IgcHJvdmlkaW5nIHVuaXZlcnNhbCBUTFMvU1NMIHR1bm5lbGluZyBzZXJ2aWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHVubmVsLm9yZy8iCi1ERVNDUklQVElPTiA9ICJTU0wgZW5jcnlwdGlvbiB3cmFwcGVyIGJldHdlZW4gcmVtb3RlIGNsaWVudCBhbmQgbG9jYWwgKGluZXRkLXN0YXJ0YWJsZSkgb3IgcmVtb3RlIHNlcnZlci4iCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04NjZjZGM3NDU5ZDkxZTA5MmIxNzQzODhmYWI4ZDI4MyIKLURFUEVORFMgPSAib3BlbnNzbCB6bGliIHRjcC13cmFwcGVycyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLnN0dW5uZWwub3JnL3N0dW5uZWwvYXJjaGl2ZS81LngvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1vcGVuc3NsLW5vLWRlcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MDc5ZjVmYWZiY2NhZjg4YjdkOTJiMjI3ZDc4MjQ5YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmEzODZhZTRjODI1ZjM1ZjM1MTU3YzI4NWU3NDAyYTZkNTg3NzlhZDhjMzgyMmY3NGE5ZDM1NWI1NGFiYTFkIgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zc2w9JyR7U1RBR0lOR19FWEVDUFJFRklYRElSfScgLS1kaXNhYmxlLWZpcHMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHN5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQsLS1kaXNhYmxlLXN5c3RlbWQsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0dW5uZWwvc3R1bm5lbF81LjQ5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS40OS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2E3N2NmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHVubmVsL3N0dW5uZWxfNS40OS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlByb2dyYW0gZm9yIHByb3ZpZGluZyB1bml2ZXJzYWwgVExTL1NTTCB0dW5uZWxpbmcgc2VydmljZSIKK0RFU0NSSVBUSU9OID0gIlNTTCBlbmNyeXB0aW9uIHdyYXBwZXIgYmV0d2VlbiByZW1vdGUgY2xpZW50IGFuZCBsb2NhbCAoaW5ldGQtc3RhcnRhYmxlKSBvciByZW1vdGUgc2VydmVyLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LnN0dW5uZWwub3JnLyIKK1NFQ1RJT04gPSAibmV0IgorIyBOb3RlOiBMaW5raW5nIHN0dW5uZWwgc3RhdGljYWxseSBvciBkeW5hbWljYWxseSB3aXRoIG90aGVyIG1vZHVsZXMgaXMgbWFraW5nCisjIGEgY29tYmluZWQgd29yayBiYXNlZCBvbiBzdHVubmVsLiBUaHVzLCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNvdmVyIHRoZSB3aG9sZSBjb21iaW5hdGlvbi4KK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNmI3ZmU3Mzc5YzljMmQ3ZGI2YzgwZjdiZDQxZTA2ZCIKKworREVQRU5EUyA9ICJhdXRvY29uZi1hcmNoaXZlIGxpYm5zbDIgb3BlbnNzbCIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuc3R1bm5lbC5vcmcvc3R1bm5lbC9hcmNoaXZlLzUueC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LW9wZW5zc2wtbm8tZGVzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjBiNDEyNDBlNTU4NWVjN2Q1NWNhMzQzZmVlZDU1MzBmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNjY0MTIxM2E4MjE3NWMxOWYyM2ZkZTFjM2QxYzg0MTczODM4NTI4OWViN2NhMTU1NGY0YTU4Yjk2ZDk1NWUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgc3lzdGVtZCcsIGQpfSBsaWJ3cmFwIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1tsaWJ3cmFwXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCwtLWRpc2FibGUtc3lzdGVtZCxzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zc2w9JyR7U1RBR0lOR19FWEVDUFJFRklYRElSfScgLS1kaXNhYmxlLWZpcHMiCisKKyMgV2hlbiBjcm9zcyBjb21waWxpbmcsIGNvbmZpZ3VyZSBkZWZhdWx0cyB0byBub2JvZHksIGJ1dCBwcm92aWRlcyBubyBvcHRpb24gdG8gY2hhbmdlIGl0LgorRVhUUkFfT0VNQUtFICs9ICJERUZBVUxUX0dST1VQPSdub2dyb3VwJyIKKworIyBzdHVubmVsMyBpcyBhIFBlcmwgd3JhcHBlciB0byBhbGxvdyB1c2Ugb2YgdGhlIGxlZ2FjeSBzdHVubmVsIDMueCBjb21tYW5kbGluZQorIyBzeW50YXggd2l0aCBzdHVubmVsID49IDQuMDUKK1BBQ0tBR0VTID0rICJzdHVubmVsMyIKK0ZJTEVTX3N0dW5uZWwzID0gIiR7YmluZGlyfS9zdHVubmVsMyIKK1JERVBFTkRTX3N0dW5uZWwzICs9ICIke1BOfSBwZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5L2Rpc2FibGUtZG9jdW1lbnRhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGlueXByb3h5L3Rpbnlwcm94eS9kaXNhYmxlLWRvY3VtZW50YXRpb24ucGF0Y2gKaW5kZXggMDFkMDIzNi4uOTE1MDhkNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5L2Rpc2FibGUtZG9jdW1lbnRhdGlvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHkvZGlzYWJsZS1kb2N1bWVudGF0aW9uLnBhdGNoCkBAIC0xLDE5ICsxLDQwIEBACi0tLS0gYS9jb25maWd1cmUuYWMJMjAxNi0wMS0wMSAxNzo0MjoyNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE3LTA0LTIwIDE0OjAzOjM3LjIzODI1NDQ3MSArMDIwMAotQEAgLTI4NCwyNCArMjg0LDEyIEBACi0gQUNfU1VCU1QoTElCUykKLSBBQ19TVUJTVChBRERJVElPTkFMX09CSkVDVFMpCitGcm9tIGI3MWViMzg0NTIyYjVjZTQ2MjlkZWU2ZThiZTI1N2ZiNDg4MGZlZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAbGluYXJvLm9yZz4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTQ6MjU6MTggKzAyMDAKKworLS0tCisgTWFrZWZpbGUuYW0gIHwgMSAtCisgY29uZmlndXJlLmFjIHwgOSAtLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZTkxMTNjMi4uMmZlM2Q1NCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTIsNyArMiw2IEBAIFNVQkRJUlMgPSBcCisgCXNyYyBcCisgCWRhdGEgXAorIAlldGMgXAorLQlkb2NzIFwKKyAJbTRtYWNyb3MgXAorIAl0ZXN0cworIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNDhlZTBiMi4uYTFhNWZhMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTk0LDEwICsxOTQsNiBAQCBBQ19TVUJTVChBRERJVElPTkFMX09CSkVDVFMpCisgQUNfUEFUSF9QUk9HKFhTTFRQUk9DLCB4c2x0cHJvYywgbm8pCisgQU1fQ09ORElUSU9OQUwoSEFWRV9YU0xUUFJPQywgdGVzdCAieCRYU0xUUFJPQyIgIT0gInhubyIpCiAgCiAtIyBDaGVjayBmb3IgYXNjaWlkb2MKIC1BQ19QQVRIX1BST0coQTJYLCBhMngsIG5vKQogLUFNX0NPTkRJVElPTkFMKEhBVkVfQTJYLCB0ZXN0ICJ4JEEyWCIgIT0gInhubyIpCi0taWYgdGVzdCB4IiRBMlgiID0geCJubyI7IHRoZW4KLS0gIEFDX01TR19FUlJPUihbVGVzdCBmb3IgYXNjaWlkb2MgZmFpbGVkLiBTZWUgdGhlIGZpbGUgJ0lOU1RBTEwnIGZvciBoZWxwLl0pCi0tZmkKIC0KLSBBQ19DT05GSUdfRklMRVMoWwotIE1ha2VmaWxlCi0gc3JjL01ha2VmaWxlCisgIyBjaGVja2luZyB4bWxsaW50CisgQUNfUEFUSF9QUk9HKFhNTExJTlQsIHhtbGxpbnQsIG5vKQorIGlmIHRlc3QgIngkWE1MTElOVCIgIT0gInhubyI7IHRoZW4KK0BAIC0yMTksMTEgKzIxNSw2IEBAIHNyYy9NYWtlZmlsZQogIGRhdGEvTWFrZWZpbGUKICBkYXRhL3RlbXBsYXRlcy9NYWtlZmlsZQogIGV0Yy9NYWtlZmlsZQpAQCAtMjUsMTMgKzQ2LDMgQEAKICBtNG1hY3Jvcy9NYWtlZmlsZQogIHRlc3RzL01ha2VmaWxlCiAgdGVzdHMvc2NyaXB0cy9NYWtlZmlsZQotLS0tIGEvTWFrZWZpbGUuYW0JMjAxNi0wMS0wMSAxNzo0MjoyNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBiL01ha2VmaWxlLmFtCTIwMTctMDQtMjAgMTQ6MDM6NTMuODQyODIyOTk3ICswMjAwCi1AQCAtMiw3ICsyLDYgQEAKLSAJc3JjIFwKLSAJZGF0YSBcCi0gCWV0YyBcCi0tCWRvY3MgXAotIAltNG1hY3JvcyBcCi0gCXRlc3RzCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHkvdGlueXByb3h5LnNlcnZpY2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHkvdGlueXByb3h5LnNlcnZpY2UKaW5kZXggZWEwNzlmOS4uZGY0Mjc0NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5L3Rpbnlwcm94eS5zZXJ2aWNlCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdGlueXByb3h5L3Rpbnlwcm94eS90aW55cHJveHkuc2VydmljZQpAQCAtOCw3ICs4LDcgQEAKIEV4ZWNTdGFydFByZT0vYmluL2Nob3duIC1SIG5vYm9keS50aW55cHJveHkgL3Zhci9sb2cvdGlueXByb3h5CiBFeGVjU3RhcnRQcmU9L2Jpbi9ta2RpciAtcCAvdmFyL3J1bi90aW55cHJveHkKIEV4ZWNTdGFydFByZT0vYmluL2Nob3duIC1SIG5vYm9keS50aW55cHJveHkgL3Zhci9ydW4vdGlueXByb3h5Ci1FeGVjU3RhcnQ9L3Vzci9zYmluL3Rpbnlwcm94eSAtZAorRXhlY1N0YXJ0PS91c3IvYmluL3Rpbnlwcm94eSAtZAogCiBbSW5zdGFsbF0KIFdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHlfMS4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDRkY2YzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuMTAuMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGh0dHAocykgcHJveHkgZGFlbW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly90aW55cHJveHkuZ2l0aHViLmlvLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuZ3ogXAorCQkgICBmaWxlOi8vZGlzYWJsZS1kb2N1bWVudGF0aW9uLnBhdGNoIFwKKwkJICAgZmlsZTovL3Rpbnlwcm94eS5zZXJ2aWNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDIzMDQ3YzhkYzUzYTE1ZTE5Zjc4ZTIzODE5ODU0OWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjAyMDk1NWU2YTBlZjBlZjg5OGFkNWJiMTdhNDQ4YzQ3ZjllNGMwMDNjNDY0YjRhZTdjNGRiYTA2MzI3MjA1NSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorCS0tZW5hYmxlLWZpbHRlciBcCisJLS1lbmFibGUtdHJhbnNwYXJlbnQgXAorCS0tZW5hYmxlLXJldmVyc2UgXAorCS0tZW5hYmxlLXVwc3RyZWFtIFwKKwktLWVuYWJsZS14dGlueXByb3h5IFwKKwkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgdXNlcmFkZAorCisjVXNlciBzcGVjaWZpYworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tdXNlci1ncm91cCAtLWdpZCBub2dyb3VwIHRpbnlwb3h5IgorCitTWVNURU1EX1BBQ0tBR0VTICs9ICIke0JQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidGlueXByb3h5LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImVuYWJsZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90aW55cHJveHkuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCWZpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHlfMS44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3Rpbnlwcm94eS90aW55cHJveHlfMS44LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MTkyZGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC90aW55cHJveHkvdGlueXByb3h5XzEuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWdodHdlaWdodCBodHRwKHMpIHByb3h5IGRhZW1vbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vdGlueXByb3h5LmdpdGh1Yi5pby8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKLQkJICAgZmlsZTovL2Rpc2FibGUtZG9jdW1lbnRhdGlvbi5wYXRjaCBcCi0JCSAgIGZpbGU6Ly90aW55cHJveHkuc2VydmljZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiNjBmN2QwOGUwODIxZWQxYTNlMmNmMWU1Nzc4Y2FjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyMzRjODc5YTEyOWZlZWU2MWVmYTk4YmFjMTRhMWEzZTQ2ZTVjZjA4ZjAxNjk2YTIxNjk0MDg3MmFhNzBmYWYiCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLQktLWVuYWJsZS1maWx0ZXIgXAotCS0tZW5hYmxlLXRyYW5zcGFyZW50IFwKLQktLWRpc2FibGUtcmVnZXhjaGVjayBcCi0JLS1lbmFibGUtcmV2ZXJzZSBcCi0JLS1lbmFibGUtdXBzdHJlYW0gXAotCS0tZW5hYmxlLXh0aW55cHJveHkgXAotCSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZCB1c2VyYWRkCi0KLSNVc2VyIHNwZWNpZmljCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby11c2VyLWdyb3VwIC0tZ2lkIG5vZ3JvdXAgdGlueXBveHkiCi0KLVNZU1RFTURfUEFDS0FHRVMgKz0gIiR7QlBOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ0aW55cHJveHkuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rpbnlwcm94eS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0JZmkKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC91ZnRwL3VmdHBfNC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjZmOWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC91ZnRwL3VmdHBfNC45LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbmNyeXB0ZWQgVURQIGJhc2VkIEZUUCB3aXRoIG11bHRpY2FzdCIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3VmdHAtbXVsdGljYXN0IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3VmdHAtbXVsdGljYXN0L3NvdXJjZS10YXIvdWZ0cC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjMxZDZiYTc4MjBkODlhNzEyZmU3ZDcyN2FiMGY4ZTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU5MjE1YWYwMzE1MjU3YzZjYzRmNDBmYmM2MTYxMDU3ZTg2MWJlMWZmZjEwYTM4YTU1NjRmNjk5ZTk5Yzc4ZiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VmdHAvdWZ0cF80LjkuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuOS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYmRkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VmdHAvdWZ0cF80LjkuOC5iYgpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJFbmNyeXB0ZWQgVURQIGJhc2VkIEZUUCB3aXRoIG11bHRpY2FzdCIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3VmdHAtbXVsdGljYXN0IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3VmdHAtbXVsdGljYXN0L3NvdXJjZS10YXIvdWZ0cC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZjdhNWFmZmQzMDAwYjVhYWZiYjEzZGY0OTcxOWI2YzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTk4YzYzMThlNDk3MTI0ZDc3N2NhNzFlYWU3NTJkMjEzMjA3YzM1ZGU5Zjc4MmM4YmNhYWY4MmVjZTIwZTU5OSIKKworREVQRU5EUyA9ICJvcGVuc3NsIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay9maWxlcy9saWJnY3J5cHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay9maWxlcy9saWJnY3J5cHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTU4ZjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvZmlsZXMvbGliZ2NyeXB0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotdXNlIE9SIFBLR19DT05GSUcgc2NoZW1lIGZvciBsaWJnY3J5cHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIE9FIHNwZWNpZmljCi0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0KLUluZGV4OiB3aXJlc2hhcmstMi40LjQvbTQvbGliZ2NyeXB0Lm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2lyZXNoYXJrLTIuNC40Lm9yaWcvbTQvbGliZ2NyeXB0Lm00Ci0rKysgd2lyZXNoYXJrLTIuNC40L200L2xpYmdjcnlwdC5tNAotQEAgLTI3LDExICsyNywxMSBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiIpCi0gICBpZiB0ZXN0IHgkbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KLSAgICAgIGlmIHRlc3QgeCR7TElCR0NSWVBUX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCi0tICAgICAgICBMSUJHQ1JZUFRfQ09ORklHPSRsaWJnY3J5cHRfY29uZmlnX3ByZWZpeC9iaW4vbGliZ2NyeXB0LWNvbmZpZwotKyAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0kbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXgvbGliZ2NyeXB0LnBjCi0gICAgICBmaQotICAgZmkKLSAKLS0gIEFDX1BBVEhfUFJPRyhMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQtY29uZmlnLCBubykKLSsgIEFDX1BBVEhfUFJPRyhMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQucGMsIG5vKQotICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjIuMCwkMSkKLSAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHJlcV9saWJnY3J5cHRfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAotQEAgLTUwLDcgKzUwLDcgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotICAgICByZXFfbWljcm89YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKLSAgICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAotLSAgICBsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb249YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKLSsgICAgbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uPWAkUEtHX0NPTkZJRyAtLW1vZHZlcnNpb24gbGliZ2NyeXB0YAotICAgICBtYWpvcj1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAotICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKLSAgICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKLUBAIC04Miw3ICs4Miw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCi0gICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgbGliZ2NyeXB0LCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQotICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZQotICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KLS0gICAgICAgIHRtcD1gJExJQkdDUllQVF9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCi0rICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tYXBpLXZlcnNpb24gbGliZ2NyeXB0IDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJHQ1JZUFQgQVBJIHZlcnNpb25dKQotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgotQEAgLTk1LDggKzk1LDggQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKLSAgICAgIGZpCi0gICBmaQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLS0gICAgTElCR0NSWVBUX0NGTEFHUz1gJExJQkdDUllQVF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWxpYnNgCi0rICAgIExJQkdDUllQVF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIGxpYmdjcnlwdGAKLSsgICAgTElCR0NSWVBUX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBsaWJnY3J5cHRgCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCi0gICBlbHNlCi0gICAgIExJQkdDUllQVF9DRkxBR1M9IiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFyay8wMDAxLUFkZC1saWJtLXRvLWxpbmstZm9yLWZtb2QtQVBJLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrLzAwMDEtQWRkLWxpYm0tdG8tbGluay1mb3ItZm1vZC1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY1ZWY5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFyay8wMDAxLUFkZC1saWJtLXRvLWxpbmstZm9yLWZtb2QtQVBJLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMWE2YTVkMmJjYjFhZGVjOWJhMTM4YzJlYmVlN2JiYzk5NDYyMGFmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEyIEp1biAyMDE4IDIzOjIzOjQ0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBsaWJtIHRvIGxpbmsgZm9yIGZtb2QoKSBBUEkKKworZml4ZXMKK2xkOiBDTWFrZUZpbGVzL3RzaGFyay5kaXIvdWkvY2xpL3RhcC1jb21wYXJlc3RhdC5jLm86IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gc3ltYm9sICdmbW9kQEBHTElCQ18yLjIuNScKK3wgL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcmUyLTY0LWJlYy1saW51eC93aXJlc2hhcmsvMV8yLjYuMS1yMC9yZWNpcGUtc3lzcm9vdC9saWIvbGlibS5zby42OiBlcnJvciBhZGRpbmcgc3ltYm9sczogRFNPIG1pc3NpbmcgZnJvbSBjb21tYW5kIGxpbmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCA3OTUwZTg1Li5hY2VlMTQwIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMjQ5NCw2ICsyNDk0LDcgQEAgaWYoQlVJTERfdHNoYXJrKQorIAkJJHtMSUJFUEFOX0xJQlN9CisgCQkke0FQUExFX0NPUkVfRk9VTkRBVElPTl9MSUJSQVJZfQorIAkJJHtBUFBMRV9TWVNURU1fQ09ORklHVVJBVElPTl9MSUJSQVJZfQorKwkJbQorIAkpCisgCXNldCh0c2hhcmtfRklMRVMKKyAJCWNhcHR1cmVfb3B0cy5jCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi40LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi40LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxYTdhYTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAid2lyZXNoYXJrIC0gYSBwb3B1bGFyIG5ldHdvcmsgcHJvdG9jb2wgYW5hbHl6ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndpcmVzaGFyay5vcmciCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlMjcxMjM0YmExYTEzYzZlNTEyZTc2Yjk0YWMyZjc3IgotCi1ERVBFTkRTID0gInBjcmUgZXhwYXQgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmdjcnlwdCBsaWJncGctZXJyb3IiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly8xLmFzLmRsLndpcmVzaGFyay5vcmcvc3JjL2FsbC12ZXJzaW9ucy8ke0JQfS50YXIueHoiCi1TUkNfVVJJICs9ICJmaWxlOi8vbGliZ2NyeXB0LnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8xLmFzLmRsLndpcmVzaGFyay5vcmcvc3JjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjVmOTNhYTZhMmIzZmRkOWQxZjAxYTQ5Zjg0ZDIyNGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI4ZWQ3ODI4YzE1N2U0ZmZiOTFmYjhjNDFmYTVhMmYzN2ZkNDQyNTkxNzU5NTFhNWMzNzg0OGJmNjQxZjVlOCIKLQotUEUgPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi1QQUNLQUdFQ09ORklHID89ICJsaWJwY2FwIGdudXRscyBsaWJubCBsaWJjYXAgc2JjIgotUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImd0azIgZ3JhcGhpY3MiLCAiIiwgZCl9IgotCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLS13aXRoLWxpYmNhcD0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciwgLS13aXRoLWxpYmNhcD1ubyAtLWVuYWJsZS1wY2FwLW5nLWRlZmF1bHQgLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi0td2l0aC1wY2FwPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyIC0td2l0aC1wY2FwLXJlbW90ZSwgLS13aXRoLXBjYXA9bm8gLS1lbmFibGUtcGNhcC1uZy1kZWZhdWx0ICAsIGxpYnBjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnNtaV0gPSAiLS13aXRoLWxpYnNtaT15ZXMsIC0td2l0aC1saWJzbWk9bm8sIGxpYnNtaSIKLVBBQ0tBR0VDT05GSUdbbGlibmxdID0gIi0td2l0aC1saWJubD15ZXMsIC0td2l0aC1saWJubD1ubywgbGlibmwiCi1QQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLS13aXRoLXBvcnRhdWRpbz15ZXMsIC0td2l0aC1wb3J0YXVkaW89bm8sIHBvcnRhdWRpby12MTkiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwgLCBndGsrIgotUEFDS0FHRUNPTkZJR1tndGszXSA9ICItLXdpdGgtZ3RrPTMsICwgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2dyYXBoaWNzXSA9ICItLWVuYWJsZS13aXJlc2hhcmssIC0td2l0aC1ndGs9bm8gLS1kaXNhYmxlLXdpcmVzaGFyaywiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscz15ZXMsIC0td2l0aC1nbnV0bHM9bm8sIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsPXllcywgLS13aXRoLXNzbD1ubywgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjU9eWVzLCAtLXdpdGgta3JiNT1ubywga3JiNSIKLVBBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhPXllcywgLS13aXRoLWx1YT1ubywgbHVhIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj15ZXMsIC0td2l0aC16bGliPW5vLCB6bGliIgotUEFDS0FHRUNPTkZJR1tnZW9pcF0gPSAiLS13aXRoLWdlb2lwPXllcywgLS13aXRoLWdlb2lwPW5vLCBnZW9pcCIKLVBBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLS13aXRoLXBsdWdpbnM9eWVzLCAtLXdpdGgtcGx1Z2lucz1ubyIKLVBBQ0tBR0VDT05GSUdbc2JjXSA9ICItLXdpdGgtc2JjPXllcywgLS13aXRoLXNiYz1ubywgc2JjIgotUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIi0td2l0aC1saWJzc2g9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IsIC0td2l0aC1saWJzc2g9bm8sIGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6ND0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciwgLS13aXRoLWx6ND1ubywgbHo0IgotCi0jIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKLVBBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItLXdpdGgtYy1hcmVzPXllcywgLS13aXRoLWMtYXJlcz1ubywgYy1hcmVzIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJnY3J5cHQtcHJlZml4PSR7UEtHX0NPTkZJR19ESVJ9IC0td2l0aC1xdD1ubyAtLWVuYWJsZS10c2hhcmsgLS1lbmFibGUtcmF3c2hhcmsiCi0KLUxERkxBR1NfYXBwZW5kID0gIiAtbGdwZy1lcnJvciIKLQotIyBDdXJyZW50bHkgd2lyZXNoYXJrIGRvZXMgbm90IGluc3RhbGwgaGVhZGVyIGZpbGVzCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2NyeXB0Ci0JaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgotCWluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL2Rpc3NlY3RvcnMKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9mdHlwZXMKLQlpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi93bWVtCi0KLQlpbnN0YWxsIGNvbmZpZy5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0KLQlpbnN0YWxsICR7U30vcmVnaXN0ZXIuaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59Ci0JaW5zdGFsbCAtRCAke1N9L2VwYW4vKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbgotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2NyeXB0LyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vY3J5cHQKLQlpbnN0YWxsIC1EICR7U30vZXBhbi9kZmlsdGVyLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZGZpbHRlcgotCWluc3RhbGwgLUQgJHtTfS9lcGFuL2Rpc3NlY3RvcnMvKi5oICR7RH0vJHtpbmNsdWRlZGlyfS8ke0JQTn0vZXBhbi9kaXNzZWN0b3JzCi0JaW5zdGFsbCAtRCAke1N9L2VwYW4vZnR5cGVzLyouaCAke0R9LyR7aW5jbHVkZWRpcn0vJHtCUE59L2VwYW4vZnR5cGVzCi0JaW5zdGFsbCAtRCAke1N9L2VwYW4vd21lbS8qLmggJHtEfS8ke2luY2x1ZGVkaXJ9LyR7QlBOfS9lcGFuL3dtZW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuNi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzIuNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NTUwMmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMi42LjQuYmIKQEAgLTAsMCArMSw5NCBAQAorREVTQ1JJUFRJT04gPSAid2lyZXNoYXJrIC0gYSBwb3B1bGFyIG5ldHdvcmsgcHJvdG9jb2wgYW5hbHl6ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LndpcmVzaGFyay5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlMjcxMjM0YmExYTEzYzZlNTEyZTc2Yjk0YWMyZjc3IgorCitERVBFTkRTID0gInBjcmUgZXhwYXQgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmdjcnlwdCBsaWJncGctZXJyb3IgbGlieG1sMiBiaXNvbi1uYXRpdmUiCisKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgd2lyZXNoYXJrLW5hdGl2ZSBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly8xLmFzLmRsLndpcmVzaGFyay5vcmcvc3JjL2FsbC12ZXJzaW9ucy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbGlibS10by1saW5rLWZvci1mbW9kLUFQSS5wYXRjaCBcCisgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly8xLmFzLmRsLndpcmVzaGFyay5vcmcvc3JjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGFhN2I4YzhjZTBiNmNlNDI1NmEwODE0OTM4MTlkNmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA2YjAwN2U2MzQzZjE0OGI4YjkzNDQzYjJmY2ZjOWJiMzIwNDMxMWNkMjY4NTY1ZDU0ZDFiNzE2NjBiYzg2MSIKKworUEUgPSAiMSIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCisjIE9wdGlvbnM6IGd0ayssIGd0ayszIGFuZCBxdDUKK0dUSyA9ICJndGsrMyIKKworUEFDS0FHRUNPTkZJRyA/PSAibGlicGNhcCBnbnV0bHMgbGlibmwgbGliY2FwIHNiYyIKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiICR7R1RLfSIsICIiLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImxpYnBjYXAgZ251dGxzIHNzbCBsaWJzc2giCisKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItREVOQUJMRV9DQVA9T04sLURFTkFCTEVfQ0FQPU9GRiAtREVOQUJMRV9QQ0FQX05HX0RFRkFVTFQ9T04sIGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbbGlicGNhcF0gPSAiLURFTkFCTEVfUENBUD1PTiwtREVOQUJMRV9QQ0FQPU9GRiAtREVOQUJMRV9QQ0FQX05HX0RFRkFVTFQ9T04gLCBsaWJwY2FwIgorUEFDS0FHRUNPTkZJR1tsaWJzbWldID0gIi1ERU5BQkxFX1NNST1PTiwtREVOQUJMRV9TTUk9T0ZGLGxpYnNtaSIKK1BBQ0tBR0VDT05GSUdbbGlibmxdID0gIiwsbGlibmwiCitQQUNLQUdFQ09ORklHW3BvcnRhdWRpb10gPSAiLURFTkFCTEVfUE9SVEFVRElPPU9OLC1ERU5BQkxFX1BPUlRBVURJTz1PRkYsIHBvcnRhdWRpby12MTkiCitQQUNLQUdFQ09ORklHW2d0aytdID0gIi1ERU5BQkxFX0dUSz1PTiAtREJVSUxEX3dpcmVzaGFya19ndGs9T04sIC1ERU5BQkxFX0dUSz1PRkYsIGd0aysiCitQQUNLQUdFQ09ORklHW2d0ayszXSA9ICItREVOQUJMRV9HVEszPU9OIC1EQlVJTERfd2lyZXNoYXJrX2d0az1PTiwgLURFTkFCTEVfR1RLMz1PRkYsIGd0ayszIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1ERU5BQkxFX0dOVVRMUz1PTiwtREVOQUJMRV9HTlVUTFM9T0ZGLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItREVOQUJMRV9LUkI1PU9OLC1ERU5BQkxFX0tSQjU9T0ZGLCBrcmI1IgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi1ERU5BQkxFX0xVQT1PTiwtREVOQUJMRV9MVUE9T0ZGLCBsdWEiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1ERU5BQkxFX1pMSUI9T04sLURFTkFCTEVfWkxJQj1PRkYsIHpsaWIiCitQQUNLQUdFQ09ORklHW2dlb2lwXSA9ICIsLCBnZW9pcCIKK1BBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLURFTkFCTEVfUExVR0lOUz1PTiwtREVOQUJMRV9QTFVHSU5TPU9GRiIKK1BBQ0tBR0VDT05GSUdbc2JjXSA9ICItREVOQUJMRV9TQkM9T04sLURFTkFCTEVfU0JDPU9GRiwgc2JjIgorUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIiwsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItREVOQUJMRV9MWjQ9T04sLURFTkFCTEVfTFo0PU9GRiwgbHo0IgorCisjIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKK1BBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItREVOQUJMRV9DQVJFUz1PTiwtREVOQUJMRV9DQVJFUz1PRkYsIGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04gLURCVUlMRF93aXJlc2hhcms9T04sIC1ERU5BQkxFX1FUNT1PRkYgLURCVUlMRF93aXJlc2hhcms9T0ZGLCBxdGJhc2UiCisKK0VYVFJBX09FQ01BS0UgKz0gIi1ERU5BQkxFX05FVExJTks9T04gXAorICAgICAgICAgICAgICAgICAgLURCVUlMRF9tbWRicmVzb2x2ZT1PRkYgXAorICAgICAgICAgICAgICAgICAgLURCVUlMRF9yYW5kcGt0ZHVtcD1PRkYgXAorICAgICAgICAgICAgICAgICAgLURCVUlMRF9hbmRyb2lkZHVtcD1PRkYgXAorICAgICAgICAgICAgICAgICAgLURCVUlMRF9kY2VycGNpZGwyd3JzPU9GRiBcCisgICAgICAgICAgICAgICAgICAtRE1fSU5DTFVERV9ESVI9JHtpbmNsdWRlZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRE1fTElCUkFSWT0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICAiCitDRkxBR1NfYXBwZW5kID0gIiAtbG0iCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlmb3IgZiBpbiBsZW1vbgorCWRvCisJCWluc3RhbGwgLW0gMDc1NSAke0J9L3J1bi8kZiAke0R9JHtiaW5kaXJ9CisJZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bGliZGlyfSAke0R9JHtiaW5kaXJ9IC10eXBlIGYgLWV4ZWN1dGFibGVgCisJZG8KKwkJY2hycGF0aCAtLWRlbGV0ZSAkZgorCWRvbmUKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gInRzaGFyayIKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1ndGsiCisKK0ZJTEVTX3RzaGFyayA9ICIke2JpbmRpcn0vdHNoYXJrICR7bWFuZGlyfS9tYW4xL3RzaGFyay4qIgorRklMRVNfJHtQTn0tZ3RrID0gIiR7YmluZGlyfS93aXJlc2hhcmstZ3RrICR7ZGF0YWRpcn0vaWNvbnMgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyAke2RhdGFkaXJ9L3dpcmVzaGFyayAke2RhdGFkaXJ9L21pbWUgXAorICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL3dpcmVzaGFyay4qICIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgorCitSREVQRU5EU190c2hhcmsgPSAid2lyZXNoYXJrIgorUkRFUEVORFNfJHtQTn0tZ3RrID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIiR7R1RLfSIsICIiLCBkKX0gd2lyZXNoYXJrIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKaW5kZXggN2NkZTBhMi4uZGUzNTFmMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9SRUFETUUKQEAgLTEsMTQgKzEsMjIgQEAKK21ldGEtb2UKKz09PT09PT0KKwogVGhpcyBsYXllciBkZXBlbmRzIG9uOgogCi1VUkk6IGdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL29lLWNvcmUuZ2l0Ci1icmFuY2g6IG1hc3RlcgorVVJJOiBnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9vcGVuZW1iZWRkZWQtY29yZS5naXQKK2JyYW5jaDogdGh1ZCAKIHJldmlzaW9uOiBIRUFECiAKLVNlbmQgcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoICdbbWV0YS1vZV0nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLW9lXVt0aHVkXScgaW4gdGhlIHN1YmplY3QnCiAKIFdoZW4gc2VuZGluZyBzaW5nbGUgcGF0Y2hlcywgcGxlYXNlIHVzZSBzb21ldGhpbmcgbGlrZToKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1vZV1bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtb2VbdGh1ZF1bUEFUQ0gnCiAKLVlvdSBhcmUgZW5jb3VyYWdlZCB0byBmb3JrIHRoZSBtaXJyb3Igb24gZ2l0aHViIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS8gdG8gc2hhcmUgeW91ciBwYXRjaGVzLCB0aGlzIGlzIHByZWZlcnJlZCBmb3IgcGF0Y2ggc2V0cyBjb25zaXN0aW5nIG9mIG1vcmUgdGhhbiBvbmUgcGF0Y2guIE90aGVyIHNlcnZpY2VzIGxpa2UgZ2l0b3Jpb3VzLCByZXBvLm9yLmN6IG9yIHNlbGYgaG9zdGVkIHNldHVwcyBhcmUgb2YgY291cnNlIGFjY2VwdGVkIGFzIHdlbGwsICdnaXQgZmV0Y2ggPHJlbW90ZT4nIHdvcmtzIHRoZSBzYW1lIG9uIGFsbCBvZiB0aGVtLiBXZSByZWNvbW1lbmQgZ2l0aHViIGJlY2F1c2UgaXQgaXMgZnJlZSwgZWFzeSB0byB1c2UsIGhhcyBiZWVuIHByb3ZlbiB0byBiZSByZWxpYWJsZSBhbmQgaGFzIGEgcmVhbGx5IGdvb2Qgd2ViIEdVSS4KK1lvdSBhcmUgZW5jb3VyYWdlZCB0byBmb3JrIHRoZSBtaXJyb3Igb24gR2l0SHViIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb3BlbmVtYmVkZGVkLWNvcmUKK3RvIHNoYXJlIHlvdXIgcGF0Y2hlcywgdGhpcyBpcyBwcmVmZXJyZWQgZm9yIHBhdGNoIHNldHMgY29uc2lzdGluZyBvZiBtb3JlIHRoYW4gb25lIHBhdGNoLgogCi1NYWluIGxheWVyIG1haW50YWluZXI6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitPdGhlciBzZXJ2aWNlcyBsaWtlIGdpdG9yaW91cywgcmVwby5vci5jeiBvciBzZWxmLWhvc3RlZCBzZXR1cHMgYXJlIG9mIGNvdXJzZSBhY2NlcHRlZCBhcyB3ZWxsLAorJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBHaXRIdWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5Cit0byB1c2UsIGhhcyBiZWVuIHByb3ZlbiB0byBiZSByZWxpYWJsZSBhbmQgaGFzIGEgcmVhbGx5IGdvb2Qgd2ViIEdVSS4KKworVGh1ZCBtYWludGFpbmVyOiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jbGFzc2VzL2RvczJ1bml4LmJiY2xhc3MgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhZDk5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLSMgQ2xhc3MgZm9yIHVzZSB0byBjb252ZXJ0IGFsbCBDUkxGIGxpbmUgdGVybWluYXRvcnMgdG8gTEYKLSMgcHJvdmlkZWQgdGhhdCBzb21lIHByb2plY3RzIGFyZSBiZWluZyBkZXZlbG9wZWQvbWFpbnRhaW5lZAotIyBvbiBXaW5kb3dzIHNvIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbGluZSB0ZXJtaW5hdG9ycyhDUkxGKSB2cwotIyBvbiBMaW51eChMRiksIHdoaWNoIGNhbiBjYXVzZSBhbm5veWluZyBwYXRjaGluZyBlcnJvcnMgZHVyaW5nCi0jIGdpdCBwdXNoL2NoZWNrb3V0IHByb2Nlc3Nlcy4KLQotZG9fY29udmVydF9jcmxmX3RvX2xmW2RlcGVuZHNdICs9ICJkb3MydW5peC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLQotIyBDb252ZXJ0IENSTEYgbGluZSB0ZXJtaW5hdG9ycyB0byBMRgotZG9fY29udmVydF9jcmxmX3RvX2xmICgpIHsKLSAgICBmaW5kICR7U30gLXR5cGUgZiAtZXhlYyBkb3MydW5peCB7fSBcOwotfQotCi1hZGR0YXNrIGNvbnZlcnRfY3JsZl90b19sZiBhZnRlciBkb191bnBhY2sgYmVmb3JlIGRvX3BhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvc2NhbmNvZGUuYmJjbGFzcyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY2xhc3Nlcy9zY2FuY29kZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMTY2MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NsYXNzZXMvc2NhbmNvZGUuYmJjbGFzcwpAQCAtMCwwICsxLDM1IEBACisjIFdlIHVzZSBzY2FuY29kZSB1dGxpdHkgZm9yIGV4dGFjdGluZyBsaWNlbmNlIGluZm9ybWF0aW9uLgorIyBzY2FuY29kZSBpdHNlbGYgaXMgYW4gT1NTIFV0bGl0aXR5LgorIyBGb3IgbW9yZSBpbmZvcm1haXRvbiBodHRwczovL2dpdGh1Yi5jb20vbmV4Qi9zY2FuY29kZS10b29sa2l0CisKK1NDQU5DT0RFX0ZPUk1BVCA/PSAiaHRtbC1hcHAiCitFWFQgPSAiJHtAJ2h0bWwnIGlmIGQuZ2V0VmFyKCdTQ0FOQ09ERV9GT1JNQVQnLCBUcnVlKSA9PSAnaHRtbC1hcHAnIGVsc2UgJ2pzb24nfSIKK1NDQU5DT0RFX1RPT0xLSVQgPSAiJHtAZ2V0X3NjYW5jb2RlX3Rvb2xraXQoZCl9IgorU0NBTkNPREVfVEFHID0gInYyLjIuMSIKK1NDQU5DT0RFX0dJVF9MT0NBVElPTiA/PSAiaHR0cHM6Ly9naXRodWIuY29tL25leEIvc2NhbmNvZGUtdG9vbGtpdC5naXQiCitTQ0FOQ09ERV9TUkNfTE9DQVRJT04gPz0gIiR7RExfRElSfS9zY2FuY29kZSIKKworZGVmIGdldF9zY2FuY29kZV90b29sa2l0KGQpOgorICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5nZXRWYXIoJ1NDQU5DT0RFX1NSQ19MT0NBVElPTicsIFRydWUpICsgIi5sb2NrIikKKyAgICBpZiAobm90IG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCdTQ0FOQ09ERV9TUkNfTE9DQVRJT04nLCBUcnVlKSkpOgorICAgICAgICBvcy5zeXN0ZW0oImdpdCBjbG9uZSAlcyAlcyAtYiAlcyIgJSAoZC5nZXRWYXIoJ1NDQU5DT0RFX0dJVF9MT0NBVElPTicsIFRydWUpLCBkLmdldFZhcignU0NBTkNPREVfU1JDX0xPQ0FUSU9OJywgVHJ1ZSksIGQuZ2V0VmFyKCdTQ0FOQ09ERV9UQUcnLCBUcnVlKSkpCisgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKyAgICByZXR1cm4gKGQuZ2V0VmFyKCdTQ0FOQ09ERV9TUkNfTE9DQVRJT04nLCBUcnVlKSkKKworZG9fc2NhbmNvZGUoKSB7CisJbWtkaXIgLXAgJHtERVBMT1lfRElSX0lNQUdFfS9zY2FuY29kZQorCWNkICR7U0NBTkNPREVfVE9PTEtJVH0KKwlpZiBbIC1kICIke1N9IiBdOyB0aGVuCisJCS4vc2NhbmNvZGUgJHtTfSAtLWZvcm1hdCAgJHtTQ0FOQ09ERV9GT1JNQVR9ICR7REVQTE9ZX0RJUl9JTUFHRX0vc2NhbmNvZGUvJHtQTn0uJHtFWFR9CisJZmkKK30KKworYWRkdGFzayBzY2FuY29kZSBhZnRlciBkb19wYXRjaAorCitkb19zY2FuY29kZV9vc3MoKSB7CisgICAgZWNobyAiV2UgYXJlIGRvbmUgcnVubmluZyBzY2FuY29kZSIKK30KKworZG9fc2NhbmNvZGVfb3NzW3JlY3JkZXB0YXNrXSA9ICJkb19zY2FuY29kZV9vc3MgZG9fc2NhbmNvZGUiCitkb19zY2FuY29kZV9vc3Nbbm9zdGFtcF0gPSAiMSIKK2FkZHRhc2sgZG9fc2NhbmNvZGVfb3NzIGFmdGVyIGRvX3NjYW5jb2RlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCmluZGV4IDFhNDM1NzUuLjIzYzEwY2UgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mCkBAIC0yOSw3ICsyOSw3IEBACiAKIExBWUVSREVQRU5EU19vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJ0aHVkIgogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCkBAIC03NywzICs3Nyw1IEBACiAgIHNvdXJjZS1oYW4tc2Fucy1rci1mb250cy0+Zm9udGNvbmZpZyBcCiAgIHNvdXJjZS1oYW4tc2Fucy10dy1mb250cy0+Zm9udGNvbmZpZyBcCiAiCisKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tbWV0YS1vZS1wdGVzdC1pbWFnZSA9ICIgJHtQVEVTVFRFU1RTVUlURX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfb2Vfc291cmNlcy5weSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9vZV9zb3VyY2VzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxN2M3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfb2Vfc291cmNlcy5weQpAQCAtMCwwICsxLDMwIEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGdsb2IgYXMgZworaW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKKworY2xhc3MgTWV0YU9FU291cmNlTWlycm9yaW5nKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIyBDYW4gd2UgZG93bmxvYWQgZXZlcnl0aGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQgU291cmNlcyBNaXJyb3Igb3ZlciBodHRwIG9ubHkKKyAgICBkZWYgdGVzdF9vZV9zb3VyY2VfbWlycm9yKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK0JCX0FMTE9XRURfTkVUV09SS1MgPSAiIHNvdXJjZXMub3BlbmVtYmVkZGVkLm9yZyIKK01JUlJPUlMgPSAiIgorRExfRElSID0gIiR7VE1QRElSfS90ZXN0X29lX2Rvd25sb2FkcyIKK1BSRU1JUlJPUlMgPSAiXFwKKyAgICBienI6Ly8uKi8uKiAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxcbiBcXAorICAgIGN2czovLy4qLy4qICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXFxuIFxcCisgICAgZ2l0Oi8vLiovLiogICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcXG4gXFwKKyAgICBnaXRzbTovLy4qLy4qIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxcbiBcXAorICAgIGhnOi8vLiovLiogICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXFxuIFxcCisgICAgb3NjOi8vLiovLiogICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcXG4gXFwKKyAgICBwNDovLy4qLy4qICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxcbiBcXAorICAgIHN2bjovLy4qLy4qICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXFxuIFxcCisgICAgZnRwOi8vLiovLiogICAgICBodHRwOi8vc291cmNlcy5vcGVuZW1iZWRkZWQub3JnLyBcXG4gXFwKKyAgICBodHRwOi8vLiovLiogICAgIGh0dHA6Ly9zb3VyY2VzLm9wZW5lbWJlZGRlZC5vcmcvIFxcbiBcXAorICAgIGh0dHBzOi8vLiovLiogICAgaHR0cDovL3NvdXJjZXMub3BlbmVtYmVkZGVkLm9yZy8gXFxuIgorICAgICIiIikKKworICAgICAgICBiaXRiYWtlKCJ3b3JsZCAtLXJ1bmFsbCBmZXRjaCIpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL0tocm9ub3MgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL0tocm9ub3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmZWRmNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvS2hyb25vcwpAQCAtMCwwICsxLDM1IEBACitDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorCitQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CitvZiB0aGlzIHNvZnR3YXJlIHNvdXJjZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIk1hdGVyaWFscyIpLAordG8gZGVhbCBpbiB0aGUgTWF0ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KK3RoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIGNvbXBpbGUsIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAorc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBNYXRlcmlhbHMsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0bword2hvbSB0aGUgTWF0ZXJpYWxzIGFyZSBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQKK2NvbmRpdGlvbnM6CisKK0FsbCBtb2RpZmljYXRpb25zIHRvIHRoZSBNYXRlcmlhbHMgdXNlZCB0byBjcmVhdGUgYSBiaW5hcnkgdGhhdCBpcworZGlzdHJpYnV0ZWQgdG8gdGhpcmQgcGFydGllcyBzaGFsbCBiZSBwcm92aWRlZCB0byBLaHJvbm9zIHdpdGggYW4KK3VucmVzdHJpY3RlZCBsaWNlbnNlIHRvIHVzZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGltcGxlbWVudGluZyBidWcgZml4ZXMgYW5kCitlbmhhbmNlbWVudHMgdG8gdGhlIE1hdGVyaWFsczsKKworSWYgdGhlIGJpbmFyeSBpcyB1c2VkIGFzIHBhcnQgb2YgYW4gT3BlbkNMKFRNKSBpbXBsZW1lbnRhdGlvbiwgd2hldGhlciBiaW5hcnkKK2lzIGRpc3RyaWJ1dGVkIHRvZ2V0aGVyIHdpdGggb3Igc2VwYXJhdGVseSB0byB0aGF0IGltcGxlbWVudGF0aW9uLCB0aGVuCityZWNpcGllbnQgbXVzdCBiZWNvbWUgYW4gT3BlbkNMIEFkb3B0ZXIgYW5kIGZvbGxvdyB0aGUgcHVibGlzaGVkIE9wZW5DTAorY29uZm9ybWFuY2UgcHJvY2VzcyBmb3IgdGhhdCBpbXBsZW1lbnRhdGlvbiwgZGV0YWlscyBhdDoKK2h0dHA6Ly93d3cua2hyb25vcy5vcmcvY29uZm9ybWFuY2UvOworCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhlIE9wZW5DTCB0cmFkZW1hcmsgbGljZW5zZSwgYW5kIHRoaXMgcGVybWlzc2lvbgorbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCitNYXRlcmlhbHMuCisKK1RIRSBNQVRFUklBTFMgQVJFIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCitBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgTUFURVJJQUxTIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KK1RIRSBNQVRFUklBTFMuCisKK09wZW5DTCBpcyBhIHRyYWRlbWFyayBvZiBBcHBsZSBJbmMuIHVzZWQgdW5kZXIgbGljZW5zZSBieSBLaHJvbm9zLgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL01pbmktWE1MLUxpY2Vuc2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL01pbmktWE1MLUxpY2Vuc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQwYWE3OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvTWluaS1YTUwtTGljZW5zZQpAQCAtMCwwICsxLDUwNyBAQAorCQkJICAgTWluaS1YTUwgTGljZW5zZQorCQkJICBTZXB0ZW1iZXIgMTgsIDIwMTAKKworCitUaGUgTWluaS1YTUwgbGlicmFyeSBhbmQgaW5jbHVkZWQgcHJvZ3JhbXMgYXJlIHByb3ZpZGVkIHVuZGVyIHRoZQordGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIChMR1BMMikKK3dpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisgIDEuIFN0YXRpYyBsaW5raW5nIG9mIGFwcGxpY2F0aW9ucyB0byB0aGUgTWluaS1YTUwgbGlicmFyeQorZG9lcyBub3QgY29uc3RpdHV0ZSBhIGRlcml2YXRpdmUgd29yayBhbmQgZG9lcyBub3QgcmVxdWlyZQordGhlIGF1dGhvciB0byBwcm92aWRlIHNvdXJjZSBjb2RlIGZvciB0aGUgYXBwbGljYXRpb24sIHVzZQordGhlIHNoYXJlZCBNaW5pLVhNTCBsaWJyYXJpZXMsIG9yIGxpbmsgdGhlaXIgYXBwbGljYXRpb25zCithZ2FpbnN0IGEgdXNlci1zdXBwbGllZCB2ZXJzaW9uIG9mIE1pbmktWE1MLgorCitJZiB5b3UgbGluayB0aGUgYXBwbGljYXRpb24gdG8gYSBtb2RpZmllZCB2ZXJzaW9uIG9mCitNaW5pLVhNTCwgdGhlbiB0aGUgY2hhbmdlcyB0byBNaW5pLVhNTCBtdXN0IGJlIHByb3ZpZGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhlIExHUEwyIGluIHNlY3Rpb25zIDEsIDIsIGFuZCA0LgorCisgIDIuIFlvdSBkbyBub3QgaGF2ZSB0byBwcm92aWRlIGEgY29weSBvZiB0aGUgTWluaS1YTUwgbGljZW5zZQord2l0aCBwcm9ncmFtcyB0aGF0IGFyZSBsaW5rZWQgdG8gdGhlIE1pbmktWE1MIGxpYnJhcnksIG5vcgorZG8geW91IGhhdmUgdG8gaWRlbnRpZnkgdGhlIE1pbmktWE1MIGxpY2Vuc2UgaW4geW91cgorcHJvZ3JhbSBvciBkb2N1bWVudGF0aW9uIGFzIHJlcXVpcmVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUKK0xHUEwyLgorCisKKwwJCSAgR05VIExJQlJBUlkgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorCQkJIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKwkgIENvcHlyaWdodCAoQykgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKyAgICAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgICAgICBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworICAgIFtUaGlzIGlzIHRoZSBmaXJzdCByZWxlYXNlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IEdQTC4gIEl0IGlzCisgICBudW1iZXJlZCAyIGJlY2F1c2UgaXQgZ29lcyB3aXRoIHZlcnNpb24gMiBvZiB0aGUgb3JkaW5hcnkgR1BMLl0KKworCQkJICAgICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2VzIGFyZSBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UKK2ZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KKworICBUaGlzIGxpY2Vuc2UsIHRoZSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQorc3BlY2lhbGx5IGRlc2lnbmF0ZWQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlLCBhbmQgdG8gYW55CitvdGhlciBsaWJyYXJpZXMgd2hvc2UgYXV0aG9ycyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91IGNhbiB1c2UgaXQgZm9yCit5b3VyIGxpYnJhcmllcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmCit5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnksIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKK29yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0IHdlIGdhdmUKK3lvdS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZSBzb3VyY2UKK2NvZGUuICBJZiB5b3UgbGluayBhIHByb2dyYW0gd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQorY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzIHNvIHRoYXQgdGhleSBjYW4gcmVsaW5rIHRoZW0KK3dpdGggdGhlIGxpYnJhcnksIGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCByZWNvbXBpbGluZworaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCisKKyAgT3VyIG1ldGhvZCBvZiBwcm90ZWN0aW5nIHlvdXIgcmlnaHRzIGhhcyB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQKK3RoZSBsaWJyYXJ5LCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCitwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgbGlicmFyeS4KKworICBBbHNvLCBmb3IgZWFjaCBkaXN0cmlidXRvcidzIHByb3RlY3Rpb24sIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorbGlicmFyeS4gIElmIHRoZSBsaWJyYXJ5IGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbAordmVyc2lvbiwgc28gdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbgordGhlIG9yaWdpbmFsIGF1dGhvcnMnIHJlcHV0YXRpb25zLgorDAorICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IGNvbXBhbmllcyBkaXN0cmlidXRpbmcgZnJlZQorc29mdHdhcmUgd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgdGh1cyBpbiBlZmZlY3QKK3RyYW5zZm9ybWluZyB0aGUgcHJvZ3JhbSBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlLiAgVG8gcHJldmVudCB0aGlzLAord2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzCitmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2hpY2ggd2FzIGRlc2lnbmVkIGZvciB1dGlsaXR5IHByb2dyYW1zLiAgVGhpcworbGljZW5zZSwgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gY2VydGFpbgorZGVzaWduYXRlZCBsaWJyYXJpZXMuICBUaGlzIGxpY2Vuc2UgaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5CitvbmU7IGJlIHN1cmUgdG8gcmVhZCBpdCBpbiBmdWxsLCBhbmQgZG9uJ3QgYXNzdW1lIHRoYXQgYW55dGhpbmcgaW4gaXQgaXMKK3RoZSBzYW1lIGFzIGluIHRoZSBvcmRpbmFyeSBsaWNlbnNlLgorCisgIFRoZSByZWFzb24gd2UgaGF2ZSBhIHNlcGFyYXRlIHB1YmxpYyBsaWNlbnNlIGZvciBzb21lIGxpYnJhcmllcyBpcyB0aGF0Cit0aGV5IGJsdXIgdGhlIGRpc3RpbmN0aW9uIHdlIHVzdWFsbHkgbWFrZSBiZXR3ZWVuIG1vZGlmeWluZyBvciBhZGRpbmcgdG8gYQorcHJvZ3JhbSBhbmQgc2ltcGx5IHVzaW5nIGl0LiAgTGlua2luZyBhIHByb2dyYW0gd2l0aCBhIGxpYnJhcnksIHdpdGhvdXQKK2NoYW5naW5nIHRoZSBsaWJyYXJ5LCBpcyBpbiBzb21lIHNlbnNlIHNpbXBseSB1c2luZyB0aGUgbGlicmFyeSwgYW5kIGlzCithbmFsb2dvdXMgdG8gcnVubmluZyBhIHV0aWxpdHkgcHJvZ3JhbSBvciBhcHBsaWNhdGlvbiBwcm9ncmFtLiAgSG93ZXZlciwgaW4KK2EgdGV4dHVhbCBhbmQgbGVnYWwgc2Vuc2UsIHRoZSBsaW5rZWQgZXhlY3V0YWJsZSBpcyBhIGNvbWJpbmVkIHdvcmssIGEKK2Rlcml2YXRpdmUgb2YgdGhlIG9yaWdpbmFsIGxpYnJhcnksIGFuZCB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQordHJlYXRzIGl0IGFzIHN1Y2guCisKKyAgQmVjYXVzZSBvZiB0aGlzIGJsdXJyZWQgZGlzdGluY3Rpb24sIHVzaW5nIHRoZSBvcmRpbmFyeSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBmb3IgbGlicmFyaWVzIGRpZCBub3QgZWZmZWN0aXZlbHkgcHJvbW90ZSBzb2Z0d2FyZQorc2hhcmluZywgYmVjYXVzZSBtb3N0IGRldmVsb3BlcnMgZGlkIG5vdCB1c2UgdGhlIGxpYnJhcmllcy4gIFdlCitjb25jbHVkZWQgdGhhdCB3ZWFrZXIgY29uZGl0aW9ucyBtaWdodCBwcm9tb3RlIHNoYXJpbmcgYmV0dGVyLgorCisgIEhvd2V2ZXIsIHVucmVzdHJpY3RlZCBsaW5raW5nIG9mIG5vbi1mcmVlIHByb2dyYW1zIHdvdWxkIGRlcHJpdmUgdGhlCit1c2VycyBvZiB0aG9zZSBwcm9ncmFtcyBvZiBhbGwgYmVuZWZpdCBmcm9tIHRoZSBmcmVlIHN0YXR1cyBvZiB0aGUKK2xpYnJhcmllcyB0aGVtc2VsdmVzLiAgVGhpcyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8KK3Blcm1pdCBkZXZlbG9wZXJzIG9mIG5vbi1mcmVlIHByb2dyYW1zIHRvIHVzZSBmcmVlIGxpYnJhcmllcywgd2hpbGUKK3ByZXNlcnZpbmcgeW91ciBmcmVlZG9tIGFzIGEgdXNlciBvZiBzdWNoIHByb2dyYW1zIHRvIGNoYW5nZSB0aGUgZnJlZQorbGlicmFyaWVzIHRoYXQgYXJlIGluY29ycG9yYXRlZCBpbiB0aGVtLiAgKFdlIGhhdmUgbm90IHNlZW4gaG93IHRvIGFjaGlldmUKK3RoaXMgYXMgcmVnYXJkcyBjaGFuZ2VzIGluIGhlYWRlciBmaWxlcywgYnV0IHdlIGhhdmUgYWNoaWV2ZWQgaXQgYXMgcmVnYXJkcworY2hhbmdlcyBpbiB0aGUgYWN0dWFsIGZ1bmN0aW9ucyBvZiB0aGUgTGlicmFyeS4pICBUaGUgaG9wZSBpcyB0aGF0IHRoaXMKK3dpbGwgbGVhZCB0byBmYXN0ZXIgZGV2ZWxvcG1lbnQgb2YgZnJlZSBsaWJyYXJpZXMuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuICBQYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYQorIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKK2Zvcm1lciBjb250YWlucyBjb2RlIGRlcml2ZWQgZnJvbSB0aGUgbGlicmFyeSwgd2hpbGUgdGhlIGxhdHRlciBvbmx5Cit3b3JrcyB0b2dldGhlciB3aXRoIHRoZSBsaWJyYXJ5LgorCisgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgYSBsaWJyYXJ5IHRvIGJlIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJhdGhlciB0aGFuIGJ5IHRoaXMgc3BlY2lhbCBvbmUuCisMCisJCSAgR05VIExJQlJBUlkgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIEFncmVlbWVudCBhcHBsaWVzIHRvIGFueSBzb2Z0d2FyZSBsaWJyYXJ5IHdoaWNoCitjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3Igb3RoZXIgYXV0aG9yaXplZAorcGFydHkgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWJyYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChhbHNvIGNhbGxlZCAidGhpcyBMaWNlbnNlIikuICBFYWNoIGxpY2Vuc2VlIGlzCithZGRyZXNzZWQgYXMgInlvdSIuCisKKyAgQSAibGlicmFyeSIgbWVhbnMgYSBjb2xsZWN0aW9uIG9mIHNvZnR3YXJlIGZ1bmN0aW9ucyBhbmQvb3IgZGF0YQorcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCisod2hpY2ggdXNlIHNvbWUgb2YgdGhvc2UgZnVuY3Rpb25zIGFuZCBkYXRhKSB0byBmb3JtIGV4ZWN1dGFibGVzLgorCisgIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCit3aGljaCBoYXMgYmVlbiBkaXN0cmlidXRlZCB1bmRlciB0aGVzZSB0ZXJtcy4gIEEgIndvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5IiBtZWFucyBlaXRoZXIgdGhlIExpYnJhcnkgb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlcgorY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKK3BvcnRpb24gb2YgaXQsIGVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQKK3N0cmFpZ2h0Zm9yd2FyZGx5IGludG8gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMKK2luY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCisKKyAgIlNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKK2FsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lhdGVkCitpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvIGNvbnRyb2wgY29tcGlsYXRpb24KK2FuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCisKKyAgQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgYSBwcm9ncmFtIHVzaW5nIHRoZSBMaWJyYXJ5IGlzIG5vdCByZXN0cmljdGVkLCBhbmQgb3V0cHV0IGZyb20KK3N1Y2ggYSBwcm9ncmFtIGlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQKK29uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKK3dyaXRpbmcgaXQpLiAgV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBMaWJyYXJ5IGRvZXMKK2FuZCB3aGF0IHRoZSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUgTGlicmFyeSBkb2VzLgorCisgIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIExpYnJhcnkncworY29tcGxldGUgc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQKK3lvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuCithcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdAorYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkKK3dhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlCitMaWJyYXJ5LgorCisgIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksCithbmQgeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhCitmZWUuCisMCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIExpYnJhcnkgb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4KKworICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8KKyAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQorICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMKKyAgICB0aGUgZmFjaWxpdHksIG90aGVyIHRoYW4gYXMgYW4gYXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlIGZhY2lsaXR5CisgICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsCisgICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yCisgICAgdGFibGUsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zIHdoYXRldmVyIHBhcnQgb2YKKyAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuCisKKyAgICAoRm9yIGV4YW1wbGUsIGEgZnVuY3Rpb24gaW4gYSBsaWJyYXJ5IHRvIGNvbXB1dGUgc3F1YXJlIHJvb3RzIGhhcworICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUKKyAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQorICAgIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGZ1bmN0aW9uIG9yIHRhYmxlIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0CisgICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUKKyAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQorCitUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCitpZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LAorYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCit0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCitzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAorb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCit0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQorZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlCitpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgTGlicmFyeS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQord2l0aCB0aGUgTGlicmFyeSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnkpIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbwordGhpcywgeW91IG11c3QgYWx0ZXIgYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlLCBzbwordGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLAoraW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQorb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaGFzIGFwcGVhcmVkLCB0aGVuIHlvdSBjYW4gc3BlY2lmeQordGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbgordGhlc2Ugbm90aWNlcy4KKwwKKyAgT25jZSB0aGlzIGNoYW5nZSBpcyBtYWRlIGluIGEgZ2l2ZW4gY29weSwgaXQgaXMgaXJyZXZlcnNpYmxlIGZvcgordGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwKK3N1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuCisKKyAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mCit0aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuCisKKyAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3IKK2Rlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtCit1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhY2NvbXBhbnkKK2l0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gKK211c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQorbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgorCisgIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5Citmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZQorc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvCitkaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90Citjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgorCisgIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlCitMaWJyYXJ5LCBidXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIHRoZSBMaWJyYXJ5IGJ5IGJlaW5nIGNvbXBpbGVkIG9yCitsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQord29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZAordGhlcmVmb3JlIGZhbGxzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5CitjcmVhdGVzIGFuIGV4ZWN1dGFibGUgdGhhdCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIExpYnJhcnkgKGJlY2F1c2UgaXQKK2NvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlCitsaWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KK1NlY3Rpb24gNiBzdGF0ZXMgdGVybXMgZm9yIGRpc3RyaWJ1dGlvbiBvZiBzdWNoIGV4ZWN1dGFibGVzLgorCisgIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlCit0aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnksIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgbWF5IGJlIGEKK2Rlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90LgorV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUKK2xpbmtlZCB3aXRob3V0IHRoZSBMaWJyYXJ5LCBvciBpZiB0aGUgd29yayBpcyBpdHNlbGYgYSBsaWJyYXJ5LiAgVGhlCit0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3LgorCisgIElmIHN1Y2ggYW4gb2JqZWN0IGZpbGUgdXNlcyBvbmx5IG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhCitzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUKK2Z1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QKK2ZpbGUgaXMgdW5yZXN0cmljdGVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgbGVnYWxseSBhIGRlcml2YXRpdmUKK3dvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlCitMaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQorCisgIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5CitkaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4KK0FueSBleGVjdXRhYmxlcyBjb250YWluaW5nIHRoYXQgd29yayBhbHNvIGZhbGwgdW5kZXIgU2VjdGlvbiA2LAord2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLgorDAorICA2LiBBcyBhbiBleGNlcHRpb24gdG8gdGhlIFNlY3Rpb25zIGFib3ZlLCB5b3UgbWF5IGFsc28gY29tcGlsZSBvcgorbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGEKK3dvcmsgY29udGFpbmluZyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSwgYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCit1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSwgcHJvdmlkZWQgdGhhdCB0aGUgdGVybXMgcGVybWl0Cittb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UKK2VuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLgorCisgIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQorTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZSBjb3ZlcmVkIGJ5Cit0aGlzIExpY2Vuc2UuICBZb3UgbXVzdCBzdXBwbHkgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmIHRoZSB3b3JrCitkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQorY29weXJpZ2h0IG5vdGljZSBmb3IgdGhlIExpYnJhcnkgYW1vbmcgdGhlbSwgYXMgd2VsbCBhcyBhIHJlZmVyZW5jZQorZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIEFsc28sIHlvdSBtdXN0IGRvIG9uZQorb2YgdGhlc2UgdGhpbmdzOgorCisgICAgYSkgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcKKyAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXIKKyAgICBjaGFuZ2VzIHdlcmUgdXNlZCBpbiB0aGUgd29yayAod2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlcgorICAgIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUpOyBhbmQsIGlmIHRoZSB3b3JrIGlzIGFuIGV4ZWN1dGFibGUgbGlua2VkCisgICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0CisgICAgdXNlcyB0aGUgTGlicmFyeSIsIGFzIG9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSwgc28gdGhhdCB0aGUKKyAgICB1c2VyIGNhbiBtb2RpZnkgdGhlIExpYnJhcnkgYW5kIHRoZW4gcmVsaW5rIHRvIHByb2R1Y2UgYSBtb2RpZmllZAorICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kCisgICAgdGhhdCB0aGUgdXNlciB3aG8gY2hhbmdlcyB0aGUgY29udGVudHMgb2YgZGVmaW5pdGlvbnMgZmlsZXMgaW4gdGhlCisgICAgTGlicmFyeSB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBhYmxlIHRvIHJlY29tcGlsZSB0aGUgYXBwbGljYXRpb24KKyAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikKKworICAgIGIpIEFjY29tcGFueSB0aGUgd29yayB3aXRoIGEgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0CisgICAgbGVhc3QgdGhyZWUgeWVhcnMsIHRvIGdpdmUgdGhlIHNhbWUgdXNlciB0aGUgbWF0ZXJpYWxzCisgICAgc3BlY2lmaWVkIGluIFN1YnNlY3Rpb24gNmEsIGFib3ZlLCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZQorICAgIHRoYW4gdGhlIGNvc3Qgb2YgcGVyZm9ybWluZyB0aGlzIGRpc3RyaWJ1dGlvbi4KKworICAgIGMpIElmIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd29yayBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5CisgICAgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlIGFib3ZlCisgICAgc3BlY2lmaWVkIG1hdGVyaWFscyBmcm9tIHRoZSBzYW1lIHBsYWNlLgorCisgICAgZCkgVmVyaWZ5IHRoYXQgdGhlIHVzZXIgaGFzIGFscmVhZHkgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZXNlCisgICAgbWF0ZXJpYWxzIG9yIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZW50IHRoaXMgdXNlciBhIGNvcHkuCisKKyAgRm9yIGFuIGV4ZWN1dGFibGUsIHRoZSByZXF1aXJlZCBmb3JtIG9mIHRoZSAid29yayB0aGF0IHVzZXMgdGhlCitMaWJyYXJ5IiBtdXN0IGluY2x1ZGUgYW55IGRhdGEgYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvcgorcmVwcm9kdWNpbmcgdGhlIGV4ZWN1dGFibGUgZnJvbSBpdC4gIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24sCit0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5CitkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkgZm9ybSkgd2l0aCB0aGUgbWFqb3IKK2NvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24KK3doaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMKK3RoZSBleGVjdXRhYmxlLgorCisgIEl0IG1heSBoYXBwZW4gdGhhdCB0aGlzIHJlcXVpcmVtZW50IGNvbnRyYWRpY3RzIHRoZSBsaWNlbnNlCityZXN0cmljdGlvbnMgb2Ygb3RoZXIgcHJvcHJpZXRhcnkgbGlicmFyaWVzIHRoYXQgZG8gbm90IG5vcm1hbGx5CithY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90Cit1c2UgYm90aCB0aGVtIGFuZCB0aGUgTGlicmFyeSB0b2dldGhlciBpbiBhbiBleGVjdXRhYmxlIHRoYXQgeW91CitkaXN0cmlidXRlLgorDAorICA3LiBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQorZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZAorbGlicmFyeSwgcHJvdmlkZWQgdGhhdCB0aGUgc2VwYXJhdGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGJhc2VkIG9uCit0aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UKK3Blcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6CisKKyAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yaworICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkKKyAgICBmYWNpbGl0aWVzLiAgVGhpcyBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAgICBTZWN0aW9ucyBhYm92ZS4KKworICAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IG9mIHRoZSBmYWN0CisgICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcKKyAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuCisKKyAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUKK3RoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55CithdHRlbXB0IG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIGxpbmsgd2l0aCwgb3IKK2Rpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cgorcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLAorb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcwordGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCisgIDkuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKyAgMTAuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK0xpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5CitzdWJqZWN0IHRvIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorDAorICAxMS4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAoraW5mcmluZ2VtZW50IG9yIGZvciBhbnkgb3RoZXIgcmVhc29uIChub3QgbGltaXRlZCB0byBwYXRlbnQgaXNzdWVzKSwKK2NvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKK290aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKK2V4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90CitkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCitMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CittYXkgbm90IGRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50CitsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBMaWJyYXJ5IGJ5CithbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KK3RoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8KK3JlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkuCisKK0lmIGFueSBwb3J0aW9uIG9mIHRoaXMgc2VjdGlvbiBpcyBoZWxkIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhbnkKK3BhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSwKK2FuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyIGNpcmN1bXN0YW5jZXMuCisKK0l0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKK3BhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55CitzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCitpbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisKKyAgMTIuIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgTGlicmFyeSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgTGlicmFyeSB1bmRlciB0aGlzIExpY2Vuc2UgbWF5IGFkZAorYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZyB0aG9zZSBjb3VudHJpZXMsCitzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMKK2V4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmCit3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICAxMy4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcKK3ZlcnNpb25zIG9mIHRoZSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuCitTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sCitidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8gYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIExpYnJhcnkKK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZAorImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZAorY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBMaWJyYXJ5IGRvZXMgbm90IHNwZWNpZnkgYQorbGljZW5zZSB2ZXJzaW9uIG51bWJlciwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisMCisgIDE0LiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgTGlicmFyeSBpbnRvIG90aGVyIGZyZWUKK3Byb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGVzZSwKK3dyaXRlIHRvIHRoZSBhdXRob3IgdG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzCitjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzIG1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91cgorZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscyBvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cworb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcKK2FuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCisKKwkJCSAgICBOTyBXQVJSQU5UWQorCisgIDE1LiBCRUNBVVNFIFRIRSBMSUJSQVJZIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTworV0FSUkFOVFkgRk9SIFRIRSBMSUJSQVJZLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4KK0VYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SCitPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIExJQlJBUlkgIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQorS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCitJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKK1BVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRQorTElCUkFSWSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgTElCUkFSWSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUKK1RIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxNi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTgorV1JJVElORyBXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkKK0FORC9PUiBSRURJU1RSSUJVVEUgVEhFIExJQlJBUlkgQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VCitGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SCitDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRQorTElCUkFSWSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORworUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEKK0ZBSUxVUkUgT0YgVEhFIExJQlJBUlkgVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBTT0ZUV0FSRSksIEVWRU4gSUYKK1NVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRVMuCisKKwkJICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKwwKKyAgICAgQXBwZW5kaXg6IEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMKKworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBsaWJyYXJ5LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQKK2V2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZS4gIFlvdSBjYW4gZG8gc28gYnkgcGVybWl0dGluZworcmVkaXN0cmlidXRpb24gdW5kZXIgdGhlc2UgdGVybXMgKG9yLCBhbHRlcm5hdGl2ZWx5LCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCitvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4KKworICBUbyBhcHBseSB0aGVzZSB0ZXJtcywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgbGlicmFyeS4gIEl0IGlzCitzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QgdGhlCisiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIGxpYnJhcnkncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0Fsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLgorCitZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgorc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgbGlicmFyeSwgaWYKK25lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKKworICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZQorICBsaWJyYXJ5IGBGcm9iJyAoYSBsaWJyYXJ5IGZvciB0d2Vha2luZyBrbm9icykgd3JpdHRlbiBieSBKYW1lcyBSYW5kb20gSGFja2VyLgorCisgIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk5MAorICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQorCitUaGF0J3MgYWxsIHRoZXJlIGlzIHRvIGl0IQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9ib25uaWUvYm9ubmllKytfMS4wM2UuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Jvbm5pZS9ib25uaWUrK18xLjAzZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMxMjE3ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Jvbm5pZS9ib25uaWUrK18xLjAzZS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiVGVzdHMgbGFyZ2UgZmlsZSBJTyBhbmQgY3JlYXRpb24vZGVsZXRpb24gb2Ygc21hbGwgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmNva2VyLmNvbS5hdS9ib25uaWUrKy8iCi1TRUNUSU9OID0gImJlbmNobWFyay90ZXN0cyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb3B5cmlnaHQudHh0O21kNT1jZDRkZGU5NWE2YjlkMTIyZjBhOTE1MGFlOWNjM2VlMCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNva2VyLmNvbS5hdS9ib25uaWUrKy8ke0JQTn0tJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL2djYy00LjMtZml4ZXMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc1MGFhNWI1MDUxMjYzYTk5YzZjMTk1ODg4Yzc0OTY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiMzg2NjExNjYzNGJmNjU3NjBiNjgwNmJlNGFmYTdlMjRhMWNhZDZmMTQ1Yzg3NmRmODcyMWYwMWJhMmUyY2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1TQ1JJUFRTID0gImJvbl9jc3YyaHRtbCBib25fY3N2MnR4dCIKLUVYRVMgPSAiYm9ubmllKysgemNhdiIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke0VYRVN9ICR7RH0vJHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1NDUklQVFN9ICR7RH0vJHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTID0rICJib25uaWUtc2NyaXB0cyIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfSIKLUZJTEVTX2Jvbm5pZS1zY3JpcHRzID0gIiR7YmluZGlyfSIKLQotUkRFUEVORFNfYm9ubmllLXNjcmlwdHMgKz0gInBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Jvbm5pZS9ib25uaWUrK18xLjA0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9ib25uaWUvYm9ubmllKytfMS4wNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzU4M2YwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9ib25uaWUvYm9ubmllKytfMS4wNC5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlRlc3RzIGxhcmdlIGZpbGUgSU8gYW5kIGNyZWF0aW9uL2RlbGV0aW9uIG9mIHNtYWxsIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jb2tlci5jb20uYXUvYm9ubmllKysvIgorU0VDVElPTiA9ICJiZW5jaG1hcmsvdGVzdHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29weXJpZ2h0LnR4dDttZDU9Y2Q0ZGRlOTVhNmI5ZDEyMmYwYTkxNTBhZTljYzNlZTAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jb2tlci5jb20uYXUvYm9ubmllKysvJHtCUE59XyR7UFZ9LnRneiBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMTQxNGFhYjg2ZTJkYjFiNDY5MWJkNGJlODIwMzEwMTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA3YmQyY2U1MzYwYzdjOThiOTFiMGZkYzJiZWQ1YzkzMjBiNWM5Njk5ZjdkNGEzZDFjODZiMjU2ODk2YzE1ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1NDUklQVFMgPSAiYm9uX2NzdjJodG1sIGJvbl9jc3YydHh0IgorRVhFUyA9ICJib25uaWUrKyB6Y2F2IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7RVhFU30gJHtEfS8ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U0NSSVBUU30gJHtEfS8ke2JpbmRpcn0KK30KKworUEFDS0FHRVMgPSsgImJvbm5pZS1zY3JpcHRzIgorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9IgorRklMRVNfYm9ubmllLXNjcmlwdHMgPSAiJHtiaW5kaXJ9IgorCitSREVQRU5EU19ib25uaWUtc2NyaXB0cyArPSAicGVybCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYm9ubmllL2ZpbGVzL2djYy00LjMtZml4ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Jvbm5pZS9maWxlcy9nY2MtNC4zLWZpeGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2YxYjc0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYm9ubmllL2ZpbGVzL2djYy00LjMtZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1JbmNsdWRlcyBzdHJpbmcuaCB0byBvbmUgb2YgdGhlIHNvdXJjZSBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3IuXQotLS0tCi0gemNhdi5jcHAgfCAgICAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotSW5kZXg6IGJvbm5pZSsrLTEuMDNhL3pjYXYuY3BwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYm9ubmllKystMS4wM2Eub3JpZy96Y2F2LmNwcAotKysrIGJvbm5pZSsrLTEuMDNhL3pjYXYuY3BwCi1AQCAtMTUsNiArMTUsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICNlbHNlCi0gI2luY2x1ZGUgPHZlY3Rvci5oPgotICNlbmRpZgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAvLyBSZWFkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIG1lZ2FieXRlcyBvZiBkYXRhIGZyb20gdGhlIGZkIGFuZCByZXR1cm4gdGhlCi0gLy8gYW1vdW50IG9mIHRpbWUgZWxhcHNlZCBpbiBzZWNvbmRzLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kYmVuY2gvZGJlbmNoXzQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZGJlbmNoL2RiZW5jaF80LjAuYmIKaW5kZXggMTkxNWU0Yy4uZmI2YTk2ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9kYmVuY2gvZGJlbmNoXzQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2RiZW5jaC9kYmVuY2hfNC4wLmJiCkBAIC0xNCwxMiArMTQsMTMgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAotUEFDS0FHRVMgPSsgInRiZW5jaCB0YmVuY2gtZGJnIgorUEFDS0FHRVMgPSsgInRiZW5jaCIKKworUlBST1ZJREVTXyR7UE59LWRiZyArPSAidGJlbmNoLWRiZyIKIAogVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCiAKIEZJTEVTX3RiZW5jaCA9ICIke2JpbmRpcn0vdGJlbmNoKiAke3ByZWZpeH0vc2hhcmUvY2xpZW50LnR4dCIKLUZJTEVTX3RiZW5jaC1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcvdGJlbmNoKiIKIAogU1JDX1VSSVttZDVzdW1dID0gIjFmZTU2ZmY3MWI5YTQxNmY4ODg5ZDcxNTBhYzU0ZGE0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwMDE4OTNmMzRlNjhhM2NmZWI1ZDQyNGUxZjJiZmVmMDA1ZGY5NmEyMmQ4NmYzNWRjNzcwYzViY2NmM2FhOGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maWxlcy8wMDAxLXVwZGF0ZS10aGUtaW50ZXJwcmV0ZXItcGF0aHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maWxlcy8wMDAxLXVwZGF0ZS10aGUtaW50ZXJwcmV0ZXItcGF0aHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzI3YjlmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZmlvL2ZpbGVzLzAwMDEtdXBkYXRlLXRoZS1pbnRlcnByZXRlci1wYXRocy5wYXRjaApAQCAtMCwwICsxLDk0IEBACitGcm9tIDU1MDc4ZTQ5NGJkZjdkYTdkZDljYjc2MDc3ZmE3YWMyYTY2YjZkZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMCBKdWwgMjAxOCAwMjozMzoyNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1cGRhdGUgdGhlIGludGVycHJldGVyIHBhdGhzCisKK1VwZGF0ZSB0aGUgaW50ZXJwcmV0ZXIgcGF0aCB0byBtYWtlIGl0IG1vcmUKK2NvbXBhdGlibGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CistLS0KKyB0b29scy9maW9fanNvbnBsdXNfY2xhdDJjc3YgICAgIHwgMiArLQorIHRvb2xzL2Zpb2xvZ3BhcnNlci5weSAgICAgICAgICAgfCAyICstCisgdG9vbHMvZ2VuZmlvICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9oaXN0L2Zpb2xvZ3BhcnNlcl9oaXN0LnB5IHwgMiArLQorIHRvb2xzL2hpc3QvaGFsZi1iaW5zLnB5ICAgICAgICAgfCAyICstCisgdG9vbHMvcGxvdC9maW8yZ251cGxvdCAgICAgICAgICB8IDIgKy0KKyB0L3N0ZWFkeXN0YXRlX3Rlc3RzLnB5IHwgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvZmlvX2pzb25wbHVzX2NsYXQyY3N2IGIvdG9vbHMvZmlvX2pzb25wbHVzX2NsYXQyY3N2CitpbmRleCA3OGEwMDdlNS4uMDUyNGI2ZTYgMTAwNzU1CistLS0gYS90b29scy9maW9fanNvbnBsdXNfY2xhdDJjc3YKKysrKyBiL3Rvb2xzL2Zpb19qc29ucGx1c19jbGF0MmNzdgorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24yLjcKKysjIS91c3IvYmluL2VudiBweXRob24KKyAjIE5vdGU6IHRoaXMgc2NyaXB0IGlzIHB5dGhvbjIgYW5kIHB5dGhvbjMgY29tcGF0aWJsZS4KKyAjCisgIyBmaW9fanNvbnBsdXNfY2xhdDJjc3YKK2RpZmYgLS1naXQgYS90b29scy9maW9sb2dwYXJzZXIucHkgYi90b29scy9maW9sb2dwYXJzZXIucHkKK2luZGV4IGNjMjlmMWM3Li5lYTYwZTc4MyAxMDA3NTUKKy0tLSBhL3Rvb2xzL2Zpb2xvZ3BhcnNlci5weQorKysrIGIvdG9vbHMvZmlvbG9ncGFyc2VyLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbjIuNworKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorICMgTm90ZTogdGhpcyBzY3JpcHQgaXMgcHl0aG9uMiBhbmQgcHl0aG9uIDMgY29tcGF0aWJsZS4KKyAjCisgIyBmaW9sb2dwYXJzZXIucHkKK2RpZmYgLS1naXQgYS90b29scy9nZW5maW8gYi90b29scy9nZW5maW8KK2luZGV4IDI4NmQ4MTRkLi44NTE4YmJjYyAxMDA3NTUKKy0tLSBhL3Rvb2xzL2dlbmZpbworKysrIGIvdG9vbHMvZ2VuZmlvCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2Jhc2gKKysjIS9iaW4vYmFzaAorICMKKyAjICBDb3B5cmlnaHQgKEMpIDIwMTMgZU5vdmFuY2UgU0FTIDxsaWNlbnNpbmdAZW5vdmFuY2UuY29tPgorICMgIEF1dGhvcjogRXJ3YW4gVmVsdSAgPGVyd2FuQGVub3ZhbmNlLmNvbT4KK2RpZmYgLS1naXQgYS90b29scy9oaXN0L2Zpb2xvZ3BhcnNlcl9oaXN0LnB5IGIvdG9vbHMvaGlzdC9maW9sb2dwYXJzZXJfaGlzdC5weQoraW5kZXggODkxMGQ1ZmEuLmI3N2MyOTMzIDEwMDc1NQorLS0tIGEvdG9vbHMvaGlzdC9maW9sb2dwYXJzZXJfaGlzdC5weQorKysrIGIvdG9vbHMvaGlzdC9maW9sb2dwYXJzZXJfaGlzdC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24yLjcKKysjIS91c3IvYmluL2VudiBweXRob24KKyAiIiIgCisgICAgIFV0aWxpdHkgZm9yIGNvbnZlcnRpbmcgKl9jbGF0X2hpc3QqIGZpbGVzIGdlbmVyYXRlZCBieSBmaW8gaW50byBsYXRlbmN5IHN0YXRpc3RpY3MuCisgICAgIAorZGlmZiAtLWdpdCBhL3Rvb2xzL2hpc3QvaGFsZi1iaW5zLnB5IGIvdG9vbHMvaGlzdC9oYWxmLWJpbnMucHkKK2luZGV4IDFiYmE4ZmY3Li41OGQ1M2UzNiAxMDA3NTUKKy0tLSBhL3Rvb2xzL2hpc3QvaGFsZi1iaW5zLnB5CisrKysgYi90b29scy9oaXN0L2hhbGYtYmlucy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24yLjcKKysjIS91c3IvYmluL2VudiBweXRob24KKyAiIiIgQ3V0IHRoZSBudW1iZXIgYmlucyBpbiBoYWxmIGluIGZpbyBoaXN0b2dyYW0gb3V0cHV0LiBFeGFtcGxlIHVzYWdlOgorIAorICAgICAgICAgJCBoYWxmLWJpbnMucHkgLWMgMiBvdXRwdXRfY2xhdF9oaXN0LjEubG9nID4gc21hbGxlcl9jbGF0X2hpc3QuMS5sb2cKK2RpZmYgLS1naXQgYS90b29scy9wbG90L2ZpbzJnbnVwbG90IGIvdG9vbHMvcGxvdC9maW8yZ251cGxvdAoraW5kZXggNGQxODE1Y2YuLjUwOTE0MWFmIDEwMDc1NQorLS0tIGEvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorKysrIGIvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24yLjcKKysjIS91c3IvYmluL2VudiBweXRob24KKyAjIE5vdGU6IHRoaXMgc2NyaXB0IGlzIHB5dGhvbjIgYW5kIHB5dGhvbjMgY29tcGF0aWJsZS4KKyAjCisgIyAgQ29weXJpZ2h0IChDKSAyMDEzIGVOb3ZhbmNlIFNBUyA8bGljZW5zaW5nQGVub3ZhbmNlLmNvbT4KK2RpZmYgLS1naXQgYS90L3N0ZWFkeXN0YXRlX3Rlc3RzLnB5IGIvdC9zdGVhZHlzdGF0ZV90ZXN0cy5weQoraW5kZXggNTAyNTRkY2MuLjk1ZTdkZmRlIDEwMDc1NQorLS0tIGEvdC9zdGVhZHlzdGF0ZV90ZXN0cy5weQorKysrIGIvdC9zdGVhZHlzdGF0ZV90ZXN0cy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24yLjcKKysjIS91c3IvYmluL2VudiBweXRob24KKyAjIE5vdGU6IHRoaXMgc2NyaXB0IGlzIHB5dGhvbjIgYW5kIHB5dGhvbiAzIGNvbXBhdGlibGUuCisgIworICMgc3RlYWR5c3RhdGVfdGVzdHMucHkKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZmlvL2Zpb18yLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMi45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2I1MTNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZmlvL2Zpb18yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkZpbGVzeXN0ZW0gYW5kIGhhcmR3YXJlIGJlbmNobWFyayBhbmQgc3RyZXNzIHRvb2wiCi1ERVNDUklQVElPTiA9ICJmaW8gaXMgYW4gSS9PIHRvb2wgbWVhbnQgdG8gYmUgdXNlZCBib3RoIGZvciBiZW5jaG1hcmsgYW5kIFwKLXN0cmVzcy9oYXJkd2FyZSB2ZXJpZmljYXRpb24uIEl0IGhhcyBzdXBwb3J0IGZvciBhIG51bWJlciBvZiBJL08gZW5naW5lcywgXAotSS9PIHByaW9yaXRpZXMgKGZvciBuZXdlciBMaW51eCBrZXJuZWxzKSwgcmF0ZSBJL08sIGZvcmtlZCBvciB0aHJlYWRlZCBqb2JzLCBcCi1hbmQgbXVjaCBtb3JlLiBJdCBjYW4gd29yayBvbiBibG9jayBkZXZpY2VzIGFzIHdlbGwgYXMgZmlsZXMuIGZpbyBhY2NlcHRzIFwKLWpvYiBkZXNjcmlwdGlvbnMgaW4gYSBzaW1wbGUtdG8tdW5kZXJzdGFuZCB0ZXh0IGZvcm1hdC4gU2V2ZXJhbCBleGFtcGxlIGpvYiBcCi1maWxlcyBhcmUgaW5jbHVkZWQuIGZpbyBkaXNwbGF5cyBhbGwgc29ydHMgb2YgSS9PIHBlcmZvcm1hbmNlIGluZm9ybWF0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMvZmlvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rlc3RzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgotCi1ERVBFTkRTID0gImxpYmFpbyB6bGliIgotCi1QQUNLQUdFQ09ORklHX05VTUEgPSAibnVtYSIKLSMgQVJNIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IE5VTUEKLVBBQ0tBR0VDT05GSUdfTlVNQV9hcm0gPSAiIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtQQUNLQUdFQ09ORklHX05VTUF9IgotUEFDS0FHRUNPTkZJR1tudW1hXSA9ICIsLS1kaXNhYmxlLW51bWEsbnVtYWN0bCIKLQotIyByZXYgZm9yIHYyLjkKLVNSQ1JFViA9ICJmZThkMGY0YzU0ZjBjMzA4YzlhMDJhNGUzYzJmNTA4NGU4YmY1NDYxIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Zpby5naXQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgYXZvaWRzIGJ1aWxkIGJyZWFrcyB3aGVuIHVzaW5nIG5vLXN0YXRpYy1saWJzLmluYwotRElTQUJMRV9TVEFUSUMgPSAiIgotCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBMREZMQUdTPScke0xERkxBR1N9JyIKLQotZG9fY29uZmlndXJlKCkgewotICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gcHJlZml4PSR7cHJlZml4fSBtYW5kaXI9JHttYW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7ZG9jZGlyfS8ke1BOfQotICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vZXhhbXBsZXMgJHtEfS8ke2RvY2Rpcn0vJHtQTn0vCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZmlvL2Zpb18zLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZWI0MmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xMi5iYgpAQCAtMCwwICsxLDQ1IEBACitTVU1NQVJZID0gIkZpbGVzeXN0ZW0gYW5kIGhhcmR3YXJlIGJlbmNobWFyayBhbmQgc3RyZXNzIHRvb2wiCitERVNDUklQVElPTiA9ICJmaW8gaXMgYW4gSS9PIHRvb2wgbWVhbnQgdG8gYmUgdXNlZCBib3RoIGZvciBiZW5jaG1hcmsgYW5kIFwKK3N0cmVzcy9oYXJkd2FyZSB2ZXJpZmljYXRpb24uIEl0IGhhcyBzdXBwb3J0IGZvciBhIG51bWJlciBvZiBJL08gZW5naW5lcywgXAorSS9PIHByaW9yaXRpZXMgKGZvciBuZXdlciBMaW51eCBrZXJuZWxzKSwgcmF0ZSBJL08sIGZvcmtlZCBvciB0aHJlYWRlZCBqb2JzLCBcCithbmQgbXVjaCBtb3JlLiBJdCBjYW4gd29yayBvbiBibG9jayBkZXZpY2VzIGFzIHdlbGwgYXMgZmlsZXMuIGZpbyBhY2NlcHRzIFwKK2pvYiBkZXNjcmlwdGlvbnMgaW4gYSBzaW1wbGUtdG8tdW5kZXJzdGFuZCB0ZXh0IGZvcm1hdC4gU2V2ZXJhbCBleGFtcGxlIGpvYiBcCitmaWxlcyBhcmUgaW5jbHVkZWQuIGZpbyBkaXNwbGF5cyBhbGwgc29ydHMgb2YgSS9PIHBlcmZvcm1hbmNlIGluZm9ybWF0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMvZmlvIgorU0VDVElPTiA9ICJjb25zb2xlL3Rlc3RzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImxpYmFpbyB6bGliIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIGJhc2giCisKK1BBQ0tBR0VDT05GSUdfTlVNQSA9ICJudW1hIgorIyBBUk0gZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgTlVNQQorUEFDS0FHRUNPTkZJR19OVU1BX2FybSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke1BBQ0tBR0VDT05GSUdfTlVNQX0iCitQQUNLQUdFQ09ORklHW251bWFdID0gIiwtLWRpc2FibGUtbnVtYSxudW1hY3RsIgorCisjIHJldiBmb3IgdjMuOAorU1JDUkVWID0gIjE2NTAwYjVhMGIwM2VlMDE0MmQ1OTJiYjc0YTQ2OTQzYTIyM2IwNmUiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwuZGsvZmlvLmdpdCBcCisgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLXRoZS1pbnRlcnByZXRlci1wYXRocy5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgYXZvaWRzIGJ1aWxkIGJyZWFrcyB3aGVuIHVzaW5nIG5vLXN0YXRpYy1saWJzLmluYworRElTQUJMRV9TVEFUSUMgPSAiIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBMREZMQUdTPScke0xERkxBR1N9JyIKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3B0aW1pemF0aW9ucyIKKworZG9fY29uZmlndXJlKCkgeworICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gcHJlZml4PSR7cHJlZml4fSBtYW5kaXI9JHttYW5kaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZG9jZGlyfS8ke1BOfQorICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vZXhhbXBsZXMgJHtEfS8ke2RvY2Rpcn0vJHtQTn0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKaW5kZXggYjcyY2VkMC4uOTkwNTBlNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9nbG1hcmsyX2dpdC5iYgpAQCAtMzYsOCArMzYsOCBAQAogCiBQQUNLQUdFQ09ORklHW3gxMS1nbF0gPSAiLCx2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGlieDExIgogUEFDS0FHRUNPTkZJR1t4MTEtZ2xlczJdID0gIiwsdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2xpYngxMSIKLVBBQ0tBR0VDT05GSUdbZHJtLWdsXSA9ICIsLHZpcnR1YWwvbGliZ2wgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tkcm0tZ2xlczJdID0gIiwsdmlydHVhbC9saWJnbGVzMiBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2RybS1nbF0gPSAiLCx2aXJ0dWFsL2xpYmdsIGxpYmRybSB2aXJ0dWFsL2xpYmdibSIKK1BBQ0tBR0VDT05GSUdbZHJtLWdsZXMyXSA9ICIsLHZpcnR1YWwvbGliZ2xlczIgbGliZHJtIHZpcnR1YWwvbGliZ2JtIgogUEFDS0FHRUNPTkZJR1t3YXlsYW5kLWdsXSA9ICIsLHZpcnR1YWwvbGliZ2wgd2F5bGFuZCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZC1nbGVzMl0gPSAiLCx2aXJ0dWFsL2xpYmdsZXMyIHdheWxhbmQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ2NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ2NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2NGE0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lvem9uZTMvaW96b25lM180NjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlc3lzdGVtIGFuZCBEaXNrIEJlbmNobWFya2luZyBUb29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pb3pvbmUub3JnLyIKLUFVVEhPUiA9ICJEb24gQ2FwcHMgPGRvbi5jYXBwczJAdmVyaXpvbi5uZXQ+LCBXaWxsaWFtIEQuIE5vcmNvdHQgPHdub3Jjb3R0QHVzLm9yYWNsZS5jb20+IgotU0VDVElPTiA9ICJjb25zb2xlL3Rlc3RzIgotTElDRU5TRSA9ICJpb3pvbmUzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW96b25lLmM7YmVnaW5saW5lPTM3O2VuZGxpbmU9NDg7bWQ1PTczMzEyNjAwOTE4NjhkY2FkMGY5ZWRlYTczNWI1ZjRiIFwKLSAgICBmaWxlOi8vaW96b25lLmM7YmVnaW5saW5lPTI2MDtlbmRsaW5lPTI2NjttZDU9NzdmOWVlNTFlNDViNTdhN2U3NTE5YzRmYTBiNGYwMGIgXAotIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lmlvem9uZS5vcmcvc3JjL2N1cnJlbnQvJHtCUE59XyR7UFZ9LnRhciBcCi0gICAgZmlsZTovL3BhcmFsbGVsaXNtLnBhdGNoIFwKLSAgICBmaWxlOi8vY29weXJpZ2h0LnR4dCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYzkyNGU1ZTQ2ZmIxY2Y4MTQ1ZjQyMGU4ZTU3ZWI5NTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmUzZDcyOTE2ZTdkNzM0MGE3YzUwNWZjMGMzZDI4NTUzZmNjNWZmMmRhZjQxZDgxMTM2OGU1NWJkNGU2YTI5MyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9zcmMvY3VycmVudC8iCi0KLSMKLSMgQWxsIG90aGVyIGFyY2hlcyBjYW4gdXNlIHRoZSBkZWZhdWx0IE9FTUFLRSBleGNlcHQgdGhvc2UKLSMgZXhwbGljaXRseSBsaXN0ZWQgYmVsb3cuIEFub3RoZXIsIHRoZSBpb3pvbmUzIE1ha2VmaWxlCi0jIG5lZWRzIHRvIGJlIHRvbGQgYWJvdXQgdGhlIGNyb3NzLWNvbXBpbGVyIGV4cGxpY2l0bHkgaGVyZS4KLSMKLUVYVFJBX09FTUFLRV9wb3dlcnBjID0gImxpbnV4LXBvd2VycGMgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLUVYVFJBX09FTUFLRV9wb3dlcnBjNjQgPSAibGludXgtcG93ZXJwYzY0IENDPScke0NDfScgR0NDPScke0NDfSciCi1FWFRSQV9PRU1BS0VfeDg2LTY0ID0gImxpbnV4LUFNRDY0IENDPScke0NDfScgR0NDPScke0NDfSciCi1FWFRSQV9PRU1BS0VfYXJtID0gImxpbnV4LWFybSBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgotRVhUUkFfT0VNQUtFID0gImxpbnV4IENDPScke0NDfScgR0NDPScke0NDfSciCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAke0R9JHttYW5kaXJ9L21hbjEgXAotICAgICAgICAgICAgICAgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaW96b25lICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9maWxlb3AgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9kb2NzL2lvem9uZS4xICR7RH0ke21hbmRpcn0vbWFuMS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jb3B5cmlnaHQudHh0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8qLmRlbSAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vY2xpZW50X2xpc3QgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L0dudXBsb3QudHh0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L0dlbmVyYXRlX0dyYXBocyAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZ2VuZ251cGxvdC5zaCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcmVwb3J0LnBsICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9kb2NzL0lvem9uZV9wcy5neiAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9kb2NzL0lPem9uZV9tc3dvcmRfOTgucGRmICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvUnVuX3J1bGVzLmRvYyAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kb2MvJHtQTn0vY29weXJpZ2h0LnR4dCIKLQotIyBMSUNFTlNFOgotIwotIyAgQ29weXJpZ2h0IDE5OTEsIDE5OTIsIDE5OTQsIDE5OTgsIDE5OTksIDIwMDIgICBXaWxsaWFtIEQuIE5vcmNvdHQKLSMKLSMgIExpY2Vuc2UgdG8gZnJlZWx5IHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGlzIGhlcmVieSBncmFudGVkCi0jICBieSB0aGUgYXV0aG9yLCBzdWJqZWN0IHRvIHRoZSBjb25kaXRpb24gdGhhdCB0aGlzIGNvcHlyaWdodCBub3RpY2UKLSMgIHJlbWFpbnMgaW50YWN0LiAgVGhlIGF1dGhvciByZXRhaW5zIHRoZSBleGNsdXNpdmUgcmlnaHQgdG8gcHVibGlzaAotIyAgZGVyaXZhdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGlzIHdvcmssIGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvCi0jICByZXZpc2VkIHZlcnNpb25zIG9mIHRoaXMgd29yay4KLSMKLQotIwotIyBCZWxvdyBpcyBhdXRob3IgcmVwbHkgdG8gcXVlc3Rpb24gYWJvdXQgZGlzdHJpYnV0aW5nIGlvem9uZTMgaW4KLSMgT3BlbkVtYmVkZGVkOgotIwotIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMKLSMgTWFyY2luLAotIwotIyAgICAgUmUtZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBhcyBsb25nIGFzIHRoZSBjb3B5cmlnaHQgaXMKLSMgICAgIG1haW50YWluZWQgYW5kIHRoZSBzb3VyY2UgY29kZSBpcyBub3QgY2hhbmdlZC4gSSBkbyBub3QKLSMgICAgIHNlZSBhIHByb2JsZW0gd2l0aCB5b3VyIG1vZHMgdG8gZW5hYmxlIGZpbGVvcCBmb3IgTGludXgtYXJtLAotIyAgICAgYXMgdGhlc2UgbW9kcyBoYXZlIGJlZW4gcmV0dXJuZWQgdG8gdGhlIElvem9uZSBmb2xrcywKLSMgICAgIGFuZCB0aGV5IGhhdmUgYmVlbiBhY2NlcHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBuZXh0Ci0jICAgICByZWxlYXNlIDotKQotIwotIyBUaGFuayB5b3UgZm9yIHlvdXIgY29udHJpYnV0aW9uLAotIyBEb24gQ2FwcHMKLSMKLSMgLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQotIyBGcm9tOiAiTWFyY2luIEp1c3praWV3aWN6IiA8ZmlybWFAaHJ3Lm9uZS5wbD4KLSMgVG86ICJEb24gQ2FwcHMiIDxkb24uY2FwcHMyQHZlcml6b24ubmV0PjsgIldpbGxpYW0gRC4gTm9yY290dCIKLSMgPHdub3Jjb3R0QHVzLm9yYWNsZS5jb20+Ci0jIFNlbnQ6IFN1bmRheSwgT2N0b2JlciAyOSwgMjAwNiA0OjU1IFBNCi0jIFN1YmplY3Q6IGlvem9uZTMgMjYzIHBhdGNoIGZvciBhcm0gYW5kIExpY2Vuc2UgcXVlc3Rpb24KLSMKLSMKLSMgPiBNb3JuaW5nCi0jID4KLSMgPiBJIHdhbnQgdG8gaW5jbHVkZSBpb3pvbmUzIGluIE9wZW5FbWJlZGRlZCBbMV0gbWV0YWRhdGEgdG8gZ2l2ZSBpdCBmb3IKLSMgPiBvdGhlciBkZXZlbG9wZXJzLiBDdXJyZW50bHkgT0UgaXMgdXNlZCB0byBidWlsZCBmZXcgZGlzdHJpYnV0aW9ucyBmb3IKLSMgPiBtaXNjIHBsYXRmb3JtczogQVJNLCBTSDMsIFNINCwgeDg2LCBQb3dlclBDIGFuZCBkaWZmZXJlbnQgdHlwZXMgb2YKLSMgPiBtYWNoaW5lcyAoUERBLCBzZXR0b3Bib3gsIGRldmJvYXJkcywgZGVza3RvcHMsIHRoaW4gY2xpZW50cywgcm91dGVycykuCi0jID4KLSMgPiBBY2NvcmRpbmcgdG8geW91ciBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGlvbnMgaXMgZm9yYmlkZGVuLiBQYWNrYWdpbmcKLSMgPiBpb3pvbmUzIGluIE9wZW5FbWJlZGRlZCB3aWxsIG5vdCBpbnZvbHZlIGFueSBzb3VyY2UgY29kZSBjaGFuZ2VzLiBCdXQKLSMgPiB3aGVuIEkgd2FzIGJ1aWxkaW5nIGl0IGZvciBBUk0gSSBkaXNjb3ZlcmVkIHRoYXQgZmlsZW9wIGJpbmFyeSB3YXMgbm90Ci0jID4gYnVpbHQgLSBzbyBJIGNyZWF0ZWQgcGF0Y2ggZm9yIGl0IChhdHRhY2hlZCkuIE5vdCB5ZXQgdGVzdGVkIGl0IG9uIHRhcmdldAotIyA+IGRldmljZS4KLSMgPgotIyA+IFRodXMsIEkgc2VlayB5b3VyIHdyaXR0ZW4gcGVybWlzc2lvbiB2aWEgZS1tYWlsIHRvIGRpc3RyaWJ1dGUgYSBwYWNrYWdlIG9mCi0jID4gdGhlIHVubW9kaWZpZWQgc291cmNlIGNvZGUgYW5kIGFsc28gYSBwYWNrYWdlIG9mIHRoZSBwcmUtY29tcGlsZWQgYmluYXJ5LgotIyA+IFlvdXIgY29weXJpZ2h0IHN0YXRlbWVudCB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBwYWNrYWdlLgotIyA+Ci0jID4KLSMgPiAxLiBodHRwOi8vd3d3Lm9wZW5lbWJlZGRlZC5vcmcvCi0jID4KLSMgPiBSZWdhcmRzCi0jID4gLS0KLSMgPiBKSUQ6IGhydy1qYWJiZXIub3JnCi0jID4gT3BlbkVtYmVkZGVkIGRldmVsb3Blci9jb25zdWx0YW50Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ4NC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ4NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjE4Yjg3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg0LmJiCkBAIC0wLDAgKzEsMTE5IEBACitTVU1NQVJZID0gIkZpbGVzeXN0ZW0gYW5kIERpc2sgQmVuY2htYXJraW5nIFRvb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmlvem9uZS5vcmcvIgorQVVUSE9SID0gIkRvbiBDYXBwcyA8ZG9uLmNhcHBzMkB2ZXJpem9uLm5ldD4sIFdpbGxpYW0gRC4gTm9yY290dCA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4iCitTRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCitMSUNFTlNFID0gImlvem9uZTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9Mzc7ZW5kbGluZT00ODttZDU9NzMzMTI2MDA5MTg2OGRjYWQwZjllZGVhNzM1YjVmNGIgXAorICAgIGZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9MjY5O2VuZGxpbmU9Mjc1O21kNT03N2Y5ZWU1MWU0NWI1N2E3ZTc1MTljNGZhMGI0ZjAwYiBcCisiCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaW96b25lLm9yZy9zcmMvY3VycmVudC8ke0JQTn1fJHtQVn0udGFyIFwKKyAgICBmaWxlOi8vcGFyYWxsZWxpc20ucGF0Y2ggXAorICAgIGZpbGU6Ly9jb3B5cmlnaHQudHh0IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYTZiODhhYjgzNzkzY2I2ODA5Y2EwNjk0OWE2YWIwMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODE2ZTZhZTJmMDIwMDNmMmE2ZDE5ZDQ3ZmNkOWE1MGZkZDgwNzhkYTRmMzVmZTNkNGI5Y2FmOTFjM2Q3MjE2IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3pvbmUzXyg/UDxwdmVyPlxkKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L3NyYy9jdXJyZW50LyIKKworIworIyBBbGwgb3RoZXIgYXJjaGVzIGNhbiB1c2UgdGhlIGRlZmF1bHQgT0VNQUtFIGV4Y2VwdCB0aG9zZQorIyBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdy4gQW5vdGhlciwgdGhlIGlvem9uZTMgTWFrZWZpbGUKKyMgbmVlZHMgdG8gYmUgdG9sZCBhYm91dCB0aGUgY3Jvc3MtY29tcGlsZXIgZXhwbGljaXRseSBoZXJlLgorIworRVhUUkFfT0VNQUtFX3Bvd2VycGMgPSAibGludXgtcG93ZXJwYyBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX3Bvd2VycGM2NCA9ICJsaW51eC1wb3dlcnBjNjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKK0VYVFJBX09FTUFLRV94ODYtNjQgPSAibGludXgtQU1ENjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKK0VYVFJBX09FTUFLRV9hcm0gPSAibGludXgtYXJtIENDPScke0NDfScgR0NDPScke0NDfSciCitFWFRSQV9PRU1BS0UgPSAibGludXggQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICR7RH0ke21hbmRpcn0vbWFuMSBcCisgICAgICAgICAgICAgICAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pb3pvbmUgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2ZpbGVvcCAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvaW96b25lLjEgJHtEfSR7bWFuZGlyfS9tYW4xLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvcHlyaWdodC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KKworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouZGVtICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jbGllbnRfbGlzdCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vR251cGxvdC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vR2VuZXJhdGVfR3JhcGhzICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9nZW5nbnVwbG90LnNoICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9yZXBvcnQucGwgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSW96b25lX3BzLmd6ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSU96b25lX21zd29yZF85OC5wZGYgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9SdW5fcnVsZXMuZG9jICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RvYy8ke1BOfS9jb3B5cmlnaHQudHh0IgorCisjIExJQ0VOU0U6CisjCisjICBDb3B5cmlnaHQgMTk5MSwgMTk5MiwgMTk5NCwgMTk5OCwgMTk5OSwgMjAwMiAgIFdpbGxpYW0gRC4gTm9yY290dAorIworIyAgTGljZW5zZSB0byBmcmVlbHkgdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgaXMgaGVyZWJ5IGdyYW50ZWQKKyMgIGJ5IHRoZSBhdXRob3IsIHN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZQorIyAgcmVtYWlucyBpbnRhY3QuICBUaGUgYXV0aG9yIHJldGFpbnMgdGhlIGV4Y2x1c2l2ZSByaWdodCB0byBwdWJsaXNoCisjICBkZXJpdmF0aXZlIHdvcmtzIGJhc2VkIG9uIHRoaXMgd29yaywgaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8KKyMgIHJldmlzZWQgdmVyc2lvbnMgb2YgdGhpcyB3b3JrLgorIworCisjCisjIEJlbG93IGlzIGF1dGhvciByZXBseSB0byBxdWVzdGlvbiBhYm91dCBkaXN0cmlidXRpbmcgaW96b25lMyBpbgorIyBPcGVuRW1iZWRkZWQ6CisjCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBNYXJjaW4sCisjCisjICAgICBSZS1kaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIGFzIGxvbmcgYXMgdGhlIGNvcHlyaWdodCBpcworIyAgICAgbWFpbnRhaW5lZCBhbmQgdGhlIHNvdXJjZSBjb2RlIGlzIG5vdCBjaGFuZ2VkLiBJIGRvIG5vdAorIyAgICAgc2VlIGEgcHJvYmxlbSB3aXRoIHlvdXIgbW9kcyB0byBlbmFibGUgZmlsZW9wIGZvciBMaW51eC1hcm0sCisjICAgICBhcyB0aGVzZSBtb2RzIGhhdmUgYmVlbiByZXR1cm5lZCB0byB0aGUgSW96b25lIGZvbGtzLAorIyAgICAgYW5kIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIG5leHQKKyMgICAgIHJlbGVhc2UgOi0pCisjCisjIFRoYW5rIHlvdSBmb3IgeW91ciBjb250cmlidXRpb24sCisjIERvbiBDYXBwcworIworIyAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCisjIEZyb206ICJNYXJjaW4gSnVzemtpZXdpY3oiIDxmaXJtYUBocncub25lLnBsPgorIyBUbzogIkRvbiBDYXBwcyIgPGRvbi5jYXBwczJAdmVyaXpvbi5uZXQ+OyAiV2lsbGlhbSBELiBOb3Jjb3R0IgorIyA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4KKyMgU2VudDogU3VuZGF5LCBPY3RvYmVyIDI5LCAyMDA2IDQ6NTUgUE0KKyMgU3ViamVjdDogaW96b25lMyAyNjMgcGF0Y2ggZm9yIGFybSBhbmQgTGljZW5zZSBxdWVzdGlvbgorIworIworIyA+IE1vcm5pbmcKKyMgPgorIyA+IEkgd2FudCB0byBpbmNsdWRlIGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIFsxXSBtZXRhZGF0YSB0byBnaXZlIGl0IGZvcgorIyA+IG90aGVyIGRldmVsb3BlcnMuIEN1cnJlbnRseSBPRSBpcyB1c2VkIHRvIGJ1aWxkIGZldyBkaXN0cmlidXRpb25zIGZvcgorIyA+IG1pc2MgcGxhdGZvcm1zOiBBUk0sIFNIMywgU0g0LCB4ODYsIFBvd2VyUEMgYW5kIGRpZmZlcmVudCB0eXBlcyBvZgorIyA+IG1hY2hpbmVzIChQREEsIHNldHRvcGJveCwgZGV2Ym9hcmRzLCBkZXNrdG9wcywgdGhpbiBjbGllbnRzLCByb3V0ZXJzKS4KKyMgPgorIyA+IEFjY29yZGluZyB0byB5b3VyIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aW9ucyBpcyBmb3JiaWRkZW4uIFBhY2thZ2luZworIyA+IGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIHdpbGwgbm90IGludm9sdmUgYW55IHNvdXJjZSBjb2RlIGNoYW5nZXMuIEJ1dAorIyA+IHdoZW4gSSB3YXMgYnVpbGRpbmcgaXQgZm9yIEFSTSBJIGRpc2NvdmVyZWQgdGhhdCBmaWxlb3AgYmluYXJ5IHdhcyBub3QKKyMgPiBidWlsdCAtIHNvIEkgY3JlYXRlZCBwYXRjaCBmb3IgaXQgKGF0dGFjaGVkKS4gTm90IHlldCB0ZXN0ZWQgaXQgb24gdGFyZ2V0CisjID4gZGV2aWNlLgorIyA+CisjID4gVGh1cywgSSBzZWVrIHlvdXIgd3JpdHRlbiBwZXJtaXNzaW9uIHZpYSBlLW1haWwgdG8gZGlzdHJpYnV0ZSBhIHBhY2thZ2Ugb2YKKyMgPiB0aGUgdW5tb2RpZmllZCBzb3VyY2UgY29kZSBhbmQgYWxzbyBhIHBhY2thZ2Ugb2YgdGhlIHByZS1jb21waWxlZCBiaW5hcnkuCisjID4gWW91ciBjb3B5cmlnaHQgc3RhdGVtZW50IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UuCisjID4KKyMgPgorIyA+IDEuIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KKyMgPgorIyA+IFJlZ2FyZHMKKyMgPiAtLQorIyA+IEpJRDogaHJ3LWphYmJlci5vcmcKKyMgPiBPcGVuRW1iZWRkZWQgZGV2ZWxvcGVyL2NvbnN1bHRhbnQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaXBlcmYzL2lwZXJmM18zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZDA4MTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBiZW5jaG1hcmsgdG9vbCIKLURFU0NSSVBUSU9OID0gIlwKLWlwZXJmIGlzIGEgdG9vbCBmb3IgYWN0aXZlIG1lYXN1cmVtZW50cyBvZiB0aGUgbWF4aW11bSBhY2hpZXZhYmxlIGJhbmR3aWR0aCBcCi1vbiBJUCBuZXR3b3Jrcy4gSXQgc3VwcG9ydHMgdHVuaW5nIG9mIHZhcmlvdXMgcGFyYW1ldGVycyByZWxhdGVkIHRvIHRpbWluZywgXAotcHJvdG9jb2xzLCBhbmQgYnVmZmVycy4gRm9yIGVhY2ggdGVzdCBpdCByZXBvcnRzIHRoZSBiYW5kd2lkdGgsIGxvc3MsIGFuZCBcCi1vdGhlciBwYXJhbWV0ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb2Z0d2FyZS5lcy5uZXQvaXBlcmYvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi9pc3N1ZXMiCi1BVVRIT1IgPSAiRVNORVQgPGluZm9AZXMubmV0PiwgTGF3cmVuY2UgQmVya2VsZXkgTmF0aW9uYWwgTGFib3JhdG9yeSA8d2Vic3VwcG9ydEBsYmwuZ292PiIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDA5ODIyM2U0NGJkZDE5NTg1MzE1ZWU3NWNkOWQyZDciCi0KLURFUEVORFMgPSAib3BlbnNzbCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VzbmV0L2lwZXJmLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvbWFrZS1mb3JlaWduLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUmVtb3ZlLXBnLWZyb20tcHJvZmlsZV9DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICI4OGQ5MDdmN2ZiNThiZmFiNWQwODZjNWRhNjBjOTIyZTFjNTgyYzkyIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwotCi1QQUNLQUdFQ09ORklHW2xrc2N0cF0gPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPXllcyxhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm8sbGtzY3RwLXRvb2xzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtb3BlbnNzbD0ke1JFQ0lQRV9TWVNST09UfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lwZXJmMy9pcGVyZjNfMy42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTExZDgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pcGVyZjMvaXBlcmYzXzMuNi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIk5ldHdvcmsgYmVuY2htYXJrIHRvb2wiCitERVNDUklQVElPTiA9ICJcCitpcGVyZiBpcyBhIHRvb2wgZm9yIGFjdGl2ZSBtZWFzdXJlbWVudHMgb2YgdGhlIG1heGltdW0gYWNoaWV2YWJsZSBiYW5kd2lkdGggXAorb24gSVAgbmV0d29ya3MuIEl0IHN1cHBvcnRzIHR1bmluZyBvZiB2YXJpb3VzIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aW1pbmcsIFwKK3Byb3RvY29scywgYW5kIGJ1ZmZlcnMuIEZvciBlYWNoIHRlc3QgaXQgcmVwb3J0cyB0aGUgYmFuZHdpZHRoLCBsb3NzLCBhbmQgXAorb3RoZXIgcGFyYW1ldGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc29mdHdhcmUuZXMubmV0L2lwZXJmLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZXNuZXQvaXBlcmYvaXNzdWVzIgorQVVUSE9SID0gIkVTTkVUIDxpbmZvQGVzLm5ldD4sIExhd3JlbmNlIEJlcmtlbGV5IE5hdGlvbmFsIExhYm9yYXRvcnkgPHdlYnN1cHBvcnRAbGJsLmdvdj4iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE5YTAzNjEzNmI3NDg0NTNlODM5YzBlYjg5MDZlZjJlIgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9lc25ldC9pcGVyZi5naXQgXAorICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtZm9yZWlnbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1wZy1mcm9tLXByb2ZpbGVfQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiODhmM2FkODdmMzg3NjIwODFhNmQ3MTI3ODkwZmY1YzNhMDUyYjA2YSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJR1tsa3NjdHBdID0gImFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD15ZXMsYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vLGxrc2N0cC10b29scyIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLW9wZW5zc2w9JHtSRUNJUEVfU1lTUk9PVH0ke3ByZWZpeH0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwMS1pbmNsdWRlLXN0ZGRlZi5oLWZvci1wdHJkaWZmX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLWluY2x1ZGUtc3RkZGVmLmgtZm9yLXB0cmRpZmZfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODQ0MTRjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwMS1pbmNsdWRlLXN0ZGRlZi5oLWZvci1wdHJkaWZmX3QucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSAzNTFkMWRlMDlkZDgwMDQ5YjdhMmNiMDJjNTc1MDYzNWQwMzg5ODczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgSnVuIDIwMTggMTk6MjU6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRkZWYuaCBmb3IgcHRyZGlmZl90CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIG1vcmVjb3JlLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL21vcmVjb3JlLmMgYi9tb3JlY29yZS5jCitpbmRleCA2NTYzYmJkLi4wZWVmNzgyIDEwMDY0NAorLS0tIGEvbW9yZWNvcmUuYworKysrIGIvbW9yZWNvcmUuYworQEAgLTE5LDYgKzE5LDcgQEAKKyAKKyAjZGVmaW5lIF9HTlVfU09VUkNFCisgCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8bWFsbG9jLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLXJ1bl90ZXN0LnB5LW5vdC11c2UtaGFyZC1jb2RlZC1wYXRoLS4tb2JqLWh1Z2VhZG0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLXJ1bl90ZXN0LnB5LW5vdC11c2UtaGFyZC1jb2RlZC1wYXRoLS4tb2JqLWh1Z2VhZG0ucGF0Y2gKaW5kZXggMzA4MmQ3ZS4uNTNmMzVhYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwMS1ydW5fdGVzdC5weS1ub3QtdXNlLWhhcmQtY29kZWQtcGF0aC0uLW9iai1odWdlYWRtLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDEtcnVuX3Rlc3QucHktbm90LXVzZS1oYXJkLWNvZGVkLXBhdGgtLi1vYmotaHVnZWFkbS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYTg1ZmM0MzI0M2Y4YmZhZDEyZDMwNmE0YTBlMjMwZmI4YjNlODI4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDA3NzUzMmIwN2UyNjgzNDdjYjg1NTdiZTZkNzAxNDhkNWYwZTg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFdlZCwgMjEgQXVnIDIwMTMgMTU6NDQ6NTcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gcnVuX3Rlc3QucHk6IG5vdCB1c2UgaGFyZCBjb2RlZCBwYXRoIC4uL29iai9odWdlYWRtCkBAIC05LDE1ICs5LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAogCiBTaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CisKIC0tLQotIHRlc3RzL3J1bl90ZXN0cy5weSB8ICAgMTIgKysrKysrKysrKystCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQorIHRlc3RzL3J1bl90ZXN0cy5weSB8IDEyICsrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS90ZXN0cy9ydW5fdGVzdHMucHkgYi90ZXN0cy9ydW5fdGVzdHMucHkKLWluZGV4IGQ5YTZiMzUuLmE5YmFiOGYgMTAwNzU1CitpbmRleCAzYzk1YTAzLi41NjBkZjZiIDEwMDc1NQogLS0tIGEvdGVzdHMvcnVuX3Rlc3RzLnB5CiArKysgYi90ZXN0cy9ydW5fdGVzdHMucHkKLUBAIC0yMzIsOSArMjMyLDE5IEBAIGRlZiBnZXRfcGFnZXNpemVzKCk6CitAQCAtMjM0LDkgKzIzNCwxOSBAQCBkZWYgZ2V0X3BhZ2VzaXplcygpOgogICAgICBVc2UgbGliaHVnZXRsYmZzJyBodWdlYWRtIHV0aWxpdHkgdG8gZ2V0IGEgbGlzdCBvZiBwYWdlIHNpemVzIHRoYXQgaGF2ZQogICAgICBhY3RpdmUgbW91bnQgcG9pbnRzIGFuZCBhdCBsZWFzdCBvbmUgaHVnZSBwYWdlIGFsbG9jYXRlZCB0byB0aGUgcG9vbC4KICAgICAgIiIiCkBAIC0zOCw2ICszOSwzIEBACiAgICAgIGlmIHJjICE9IDAgb3Igb3V0ID09ICIiOiByZXR1cm4gc2l6ZXMKICAKICAgICAgZm9yIHNpemUgaW4gb3V0LnNwbGl0KCJcbiIpOiBzaXplcy5hZGQoaW50KHNpemUpKQotLS0gCi0xLjcuMy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDItTWFyay1nbGliYy1zcGVjaWZpYy1jb2RlLXNvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwMi1NYXJrLWdsaWJjLXNwZWNpZmljLWNvZGUtc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNiMTg0YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDItTWFyay1nbGliYy1zcGVjaWZpYy1jb2RlLXNvLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMGY1NDgyODY4NDhjNzBhYTMyNWM2NzQ4ZDgwZTg2NTEzODliNDkzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIEp1biAyMDE4IDE5OjMyOjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1hcmsgZ2xpYmMgc3BlY2lmaWMgY29kZSBzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyBtb3JlY29yZS5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tb3JlY29yZS5jIGIvbW9yZWNvcmUuYworaW5kZXggMGVlZjc4Mi4uZDQ4NTA5YyAxMDA2NDQKKy0tLSBhL21vcmVjb3JlLmMKKysrKyBiL21vcmVjb3JlLmMKK0BAIC0zNjQsNiArMzY0LDcgQEAgdm9pZCBodWdldGxiZnNfc2V0dXBfbW9yZWNvcmUodm9pZCkKKyAKKyAJSU5GTygic2V0dXBfbW9yZWNvcmUoKTogaGVhcGFkZHIgPSAweCVseFxuIiwgaGVhcGFkZHIpOworIAorKyNpZmRlZiBfX0dMSUJDX18KKyAJaGVhcHRvcCA9IGhlYXBiYXNlID0gKHZvaWQgKiloZWFwYWRkcjsKKyAJaWYgKF9faHVnZXRsYl9vcHRzLnRocF9tb3JlY29yZSkKKyAJCV9fbW9yZWNvcmUgPSAmdGhwX21vcmVjb3JlOworQEAgLTM3MSw3ICszNzIsNiBAQCB2b2lkIGh1Z2V0bGJmc19zZXR1cF9tb3JlY29yZSh2b2lkKQorIAkJX19tb3JlY29yZSA9ICZodWdldGxiZnNfbW9yZWNvcmU7CisgCisgCS8qIFNldCBzb21lIGFsbG9jYXRvciBvcHRpb25zIG1vcmUgYXBwcm9wcmlhdGUgZm9yIGh1Z2VwYWdlcyAqLworLQorIAlpZiAoX19odWdldGxiX29wdHMuc2hyaW5rX29rKQorIAkJbWFsbG9wdChNX1RSSU1fVEhSRVNIT0xELCBocGFnZV9zaXplICsgaHBhZ2Vfc2l6ZSAvIDIpOworIAllbHNlCitAQCAtMzgxLDQgKzM4MSw1IEBAIHZvaWQgaHVnZXRsYmZzX3NldHVwX21vcmVjb3JlKHZvaWQpCisgCSAqIFRoaXMgZG9lc24ndCBhcHBlYXIgdG8gcHJvaGliaXQgbWFsbG9jKCkgZnJvbSBmYWxsaW5nIGJhY2sKKyAJICogdG8gbW1hcCgpIGlmIHdlIHJ1biBvdXQgb2YgaHVnZXBhZ2VzLiAqLworIAltYWxsb3B0KE1fTU1BUF9NQVgsIDApOworKyNlbmRpZgorIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDMtYWxsb2MuYy1Bdm9pZC1zeXNjb25mLV9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUtb24tbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDMtYWxsb2MuYy1Bdm9pZC1zeXNjb25mLV9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUtb24tbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2E3ZTgwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwMy1hbGxvYy5jLUF2b2lkLXN5c2NvbmYtX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRS1vbi1sLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOWZmMDRkN2FjYzcwMDM4N2UzODM3ZjhhYjExYTQxZWZlYTVlZThiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIEp1biAyMDE4IDE5OjQ0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbG9jLmM6IEF2b2lkIHN5c2NvbmYoX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSkgb24gbGludXgKKworbXVzbCBkb2VzIG5vdCBoYXZlIGl0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIGFsbG9jLmMgfCAxNSArKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYWxsb2MuYyBiL2FsbG9jLmMKK2luZGV4IGJjZTk0NjQuLmNmN2ViNDAgMTAwNjQ0CistLS0gYS9hbGxvYy5jCisrKysgYi9hbGxvYy5jCitAQCAtMjQ1LDYgKzI0NSwxOSBAQCB2b2lkIGZyZWVfaHVnZV9wYWdlcyh2b2lkICpwdHIpCisgCV9fZnJlZV9odWdlX3BhZ2VzKHB0ciwgMSk7CisgfQorIAorK3N0YXRpYyBzaXplX3QgZ2V0X2NhY2hlbGluZV9zaXplKCkgeworKyNpZiBkZWZpbmVkKF9fbGludXhfXykKKysJRklMRSAqIGZwID0gZm9wZW4oIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY2FjaGUvaW5kZXgwL2NvaGVyZW5jeV9saW5lX3NpemUiLCAiciIpOworKwl1bnNpZ25lZCBpbnQgbGluZV9zaXplID0gMDsKKysJaWYgKGZwKSB7CisrCQlmc2NhbmYoZnAsICIlZCIsICZsaW5lX3NpemUpOworKwkJZmNsb3NlKGZwKTsKKysJfQorKwlyZXR1cm4gbGluZV9zaXplOworKyNlbHNlCisrCXJldHVybiBzeXNjb25mKF9TQ19MRVZFTDJfQ0FDSEVfTElORVNJWkUpOworKyNlbmRpZgorK30KKyAvKgorICAqIE9mZnNldCB0aGUgYnVmZmVyIHVzaW5nIGJ5dGVzIHdhc3RlZCBkdWUgdG8gYWxpZ25tZW50IHRvIGF2b2lkIHVzaW5nIHRoZQorICAqIHNhbWUgY2FjaGUgbGluZXMgZm9yIHRoZSBzdGFydCBvZiBldmVyeSBidWZmZXIgcmV0dXJuZWQgYnkKK0BAIC0yNjEsNyArMjc0LDcgQEAgdm9pZCAqY2FjaGVjb2xvcih2b2lkICpidWYsIHNpemVfdCBsZW4sIHNpemVfdCBjb2xvcl9ieXRlcykKKyAKKyAJLyogTG9va3VwIG91ciBjYWNoZWxpbmUgc2l6ZSBvbmNlICovCisgCWlmIChjYWNoZWxpbmVfc2l6ZSA9PSAwKSB7CistCQljYWNoZWxpbmVfc2l6ZSA9IHN5c2NvbmYoX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRSk7CisrCQljYWNoZWxpbmVfc2l6ZSA9IGdldF9jYWNoZWxpbmVfc2l6ZSgpOworIAkJbGluZW1vZCA9IHRpbWUoTlVMTCk7CisgCX0KKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDQtc2htLmMtTWFyay1nbGliYy1zcGVjaWZpYy1jaGFuZ2VzLXNvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwNC1zaG0uYy1NYXJrLWdsaWJjLXNwZWNpZmljLWNoYW5nZXMtc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg3NzZlOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDQtc2htLmMtTWFyay1nbGliYy1zcGVjaWZpYy1jaGFuZ2VzLXNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gOWNlMzIzNDMyYTdmNGQ5OWY2MTc5NzBjN2UzNWI2MDdiOWJiZjg0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIEp1biAyMDE4IDE5OjQ4OjA0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNobS5jOiBNYXJrIGdsaWJjIHNwZWNpZmljIGNoYW5nZXMgc28KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tCisgc2htLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NobS5jIGIvc2htLmMKK2luZGV4IDFmODJjYWIuLjk0NDdiNjMgMTAwNjQ0CistLS0gYS9zaG0uYworKysrIGIvc2htLmMKK0BAIC00OCwxMCArNDgsMTEgQEAKKyAgKiBzeXN0ZW0gc2htZ2V0KCkgbWF5IGJlIHBlcmZvcm1lZCB3aXRob3V0IHdvcnJ5IGFzIHRoZXJlIGlzIG5vIGR5bmFtaWMKKyAgKiBjYWxsIGNoYWluLgorICAqLworKyNpZmRlZiBfX0dMSUJDX18KKyBleHRlcm4gdm9pZCAqZGxzeW0gKHZvaWQgKl9fcmVzdHJpY3QgX19oYW5kbGUsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUpCisgCQlfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkgX19USFJPVyBfX25vbm51bGwgKCgyKSk7CisgZXh0ZXJuIGNoYXIgKmRsZXJyb3IgKHZvaWQpIF9fYXR0cmlidXRlX18oKHdlYWspKSBfX1RIUk9XOworLQorKyNlbmRpZgorIAorIC8qIGNhbGwgc3lzY2FsbCBzaG1nZXQgdGhyb3VnaCB0aGUgZ2VuZXJpYyBzeXNjYWxsIG1lY2hhbmlzbSAqLworIHN0YXRpYyBpbnQgc3lzY2FsbF9zaG1nZXQoa2V5X3Qga2V5LCBzaXplX3Qgc2l6ZSwgaW50IHNobWZsZykKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDUtSW5jbHVkZS1kaXJlbnQuaC1mb3ItaW5vX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDA1LUluY2x1ZGUtZGlyZW50LmgtZm9yLWlub190LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MTc0MjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDA1LUluY2x1ZGUtZGlyZW50LmgtZm9yLWlub190LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYmI4YzM3MGFhYWYyNWIxZmUxZmJmOTg0ZTczMTc3MDE4MDI2Y2I5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIEp1biAyMDE4IDE5OjUxOjAyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgZGlyZW50LmggZm9yIGlub190CisKK0ZpeGVzCitlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ2lub190JzsgZGlkIHlvdSBtZWFuICdpbnQnPworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyB0ZXN0cy9odWdldGVzdHMuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvaHVnZXRlc3RzLmggYi90ZXN0cy9odWdldGVzdHMuaAoraW5kZXggOGIxZDhkOS4uMDU2MDQyYyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2h1Z2V0ZXN0cy5oCisrKysgYi90ZXN0cy9odWdldGVzdHMuaAorQEAgLTIyLDYgKzIyLDcgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGRpcmVudC5oPgorIAorICNpbmNsdWRlICJsaWJodWdldGxiZnNfcHJpdnV0aWxzLmgiCisgI2luY2x1ZGUgImxpYmh1Z2V0bGJmc190ZXN0cHJvYmVzLmgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDA2LWluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwNi1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWFkMjFmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvMDAwNi1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDVmNjRhYThjNDdjMmQzYTE1NWE5N2UyNjJmODljYzQ3Mzk0YTY5ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMSBKdW4gMjAxOCAxOTo1ODo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGxpbWl0cy5oIGZvciBQQVRIX01BWAorCitGaXhlcworCitlcnJvcjogJ1BBVEhfTUFYJyB1bmRlY2xhcmVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLQorIGh1Z2VhZG0uYyAgICAgICAgICAgICAgICB8IDEgKworIHRlc3RzL2dldGh1Z2VwYWdlc2l6ZXMuYyB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9odWdlYWRtLmMgYi9odWdlYWRtLmMKK2luZGV4IGZlNDIxMWQuLjhkYjI3NGMgMTAwNjQ0CistLS0gYS9odWdlYWRtLmMKKysrKyBiL2h1Z2VhZG0uYworQEAgLTMzLDYgKzMzLDcgQEAKKyAjaW5jbHVkZSA8Z3JwLmg+CisgI2luY2x1ZGUgPHB3ZC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2V0aHVnZXBhZ2VzaXplcy5jIGIvdGVzdHMvZ2V0aHVnZXBhZ2VzaXplcy5jCitpbmRleCA5NTUxYjM4Li4yNjQ1ZTNmIDEwMDY0NAorLS0tIGEvdGVzdHMvZ2V0aHVnZXBhZ2VzaXplcy5jCisrKysgYi90ZXN0cy9nZXRodWdlcGFnZXNpemVzLmMKK0BAIC0yOSw2ICsyOSw3IEBACisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxodWdldGxiZnMuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImh1Z2V0ZXN0cy5oIgorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvRm9yY2UtdGV4dC1zZWdtZW50LWFsaWdubWVudC10by0weDA4MDAwMDAwLWZvci1pMzg2LS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL0ZvcmNlLXRleHQtc2VnbWVudC1hbGlnbm1lbnQtdG8tMHgwODAwMDAwMC1mb3ItaTM4Ni0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjk3NGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvRm9yY2UtdGV4dC1zZWdtZW50LWFsaWdubWVudC10by0weDA4MDAwMDAwLWZvci1pMzg2LS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLUZyb20gM2M2ZjhkMGUzYzA2OTRmNzkyNDRlYzZhZDVhZDliYTNjYTI2YmMwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlhbmcgU2hpIDx5YW5nLnNoaUBsaW5hcm8ub3JnPgotRGF0ZTogTW9uLCA3IERlYyAyMDE1IDE0OjEyOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZvcmNlIHRleHQgc2VnbWVudCBhbGlnbm1lbnQgdG8gMHgwODAwMDAwMCBmb3IgaTM4NiB3aXRoIGdvbGQKLSBsaW5rZXIKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1XaGVuIGJ1aWxkIGxpYmh1Z2V0bGJmcyB0ZXN0cyB3aXRoIGdvbGQgbGlua2VyIGZvciBpMzg2LCB0aGUgYmVsb3cgZXJyb3Igb2NjdXJzOgotCi1pNTg2LW9lLWxpbnV4LWdjYyAgLW0zMiAtbWFyY2g9aTU4NiAtV2wsLU8xIC1XbCwtLWhhc2gtc3R5bGU9Z251Ci0tV2wsLS1hcy1uZWVkZWQKLS0tc3lzcm9vdD0vaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2IC1JLi4KLS1PMgotLVdhbGwgLWcgLW8gb2JqMzIvbGlua2h1Z2VfcncubyAtYyBsaW5raHVnZV9ydy5jCi18IGk1ODYtb2UtbGludXgtZ2NjICAtbTMyIC1tYXJjaD1pNTg2IC1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUKLS1XbCwtLWFzLW5lZWRlZAotLS1zeXNyb290PS9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYKLS1CLi9vYmozMgotLVdsLC1PMSAtV2wsLS1oYXNoLXN0eWxlPWdudSAtV2wsLS1hcy1uZWVkZWQgLVdsLC16LG5vZXhlY3N0YWNrIC1sZGwKLS1MLi4vb2JqMzIKLS1vIG9iajMyL2xpbmtodWdlX3J3IC1XbCwtLW5vLWFzLW5lZWRlZCAtbHB0aHJlYWQgLWxkbCAtbGh1Z2V0bGJmc19wcml2dXRpbHMKLS1XbCwtLWh1Z2V0bGJmcy1hbGlnbiBvYmozMi9saW5raHVnZV9ydy5vIG9iajMyL3Rlc3R1dGlscy5vCi18IGk1ODYtb2UtbGludXgtbGQ6IGludGVybmFsIGVycm9yIGluIGRvX3dyaXRlLCBhdAotL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvd29yay94ODZfNjQtb2UtbGludXgvYmludXRpbHMtY3Jvc3MtaTU4Ni8yLjI1LXIwL2dpdC9nb2xkL291dHB1dC5jYzo0NjQKLXwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLUJ1dCwgaXQgd29ya3Mgd2VsbCB3aXRoIEdOVSBsaW5rZXIuIC0taHVnZXRsYmZzLWFsaWduIGZsYWcgcGFzc2VzCi0iLXpjb21tb24tcGFnZS1zaXplPSRTTElDRV9TSVpFIC16bWF4LXBhZ2Utc2l6ZT0kU0xJQ0VfU0laRSIsIHRoYXQgYXJlIHN1cHBvcnRlZCBieSBnb2xkIGxpbmtlciB0b28uCi1CdXQsIGl0IGxvb2tzIGdvbGQgbGlua2VyIGRlYWwgd2l0aCB0aGVtIGluIGEgZGlmZmVyZW50IHdheSBmcm9tIGdudSBsaW5rZXIgZm9yIGk1ODYuCi0KLVRoZSByZWFkZWxmIHNob3dzIHRoZSBiZWxvdyByZXN1bHQgd2l0aCBHTlUgbGlua2VyOgotCi1FbGYgZmlsZSB0eXBlIGlzIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLUVudHJ5IHBvaW50IDB4ODA0OGZiZAotVGhlcmUgYXJlIDggcHJvZ3JhbSBoZWFkZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgNTIKLQotUHJvZ3JhbSBIZWFkZXJzOgotICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgotICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDA4MDAwMDM0IDB4MDgwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKLSAgSU5URVJQICAgICAgICAgMHgwNDgxMzQgMHgwODA0ODEzNCAweDA4MDQ4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0gICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjJdCi0gIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDgwMDAwMDAgMHgwODAwMDAwMCAweDVhNWJjIDB4NWE1YmMgUiBFIDB4NDAwMDAwCi0gIExPQUQgICAgICAgICAgIDB4MDVhNWJjIDB4MDg0NWE1YmMgMHgwODQ1YTViYyAweDEwMjhjIDB4MjAyY2MgUlcgMHg0MDAwMDAKLSAgRFlOQU1JQyAgICAgICAgMHgwNWE1ZDAgMHgwODQ1YTVkMCAweDA4NDVhNWQwIDB4MDAwZTggMHgwMDBlOCBSVyAgMHg0Ci0gIE5PVEUgICAgICAgICAgIDB4MDQ4MTQ4IDB4MDgwNDgxNDggMHgwODA0ODE0OCAweDAwMDQ0IDB4MDAwNDQgUiAgIDB4NAotICBHTlVfRUhfRlJBTUUgICAweDA1OWU1YyAweDA4MDU5ZTVjIDB4MDgwNTllNWMgMHgwMDA5YyAweDAwMDljIFIgICAweDQKLSAgR05VX1NUQUNLICAgICAgMHgwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAgMHgwMDAwMCBSVyAgMHgxMAotCi0iLS1yZWxheCIgbGlua2VyIG9wdGlvbiBkb2Vzbid0IHNvbHZlIHRoaXMgcHJvYmxlbS4KLUZvcmNlZCB0ZXh0c2VnbWVudCBhbGlnbm1lbnQgdG8gMHgwODAwMDAwMCB3aXRoIGdvbGQgbGlua2VyLCB0aGUgYnVpbGQgd2lsbCBwYXNzIGFuZAotcmVhZGVsZiBzaG93cyB0aGUgc2FtZSByZXN1bHQgd2l0aCBHTlUgbGlua2VyOgotCi1FbGYgZmlsZSB0eXBlIGlzIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLUVudHJ5IHBvaW50IDB4ODA0OGZiZAotVGhlcmUgYXJlIDggcHJvZ3JhbSBoZWFkZXJzLCBzdGFydGluZyBhdCBvZmZzZXQgNTIKLQotUHJvZ3JhbSBIZWFkZXJzOgotICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgotICBQSERSICAgICAgICAgICAweDAwMDAzNCAweDA4MDAwMDM0IDB4MDgwMDAwMzQgMHgwMDEwMCAweDAwMTAwIFIgRSAweDQKLSAgSU5URVJQICAgICAgICAgMHgwNDgxMzQgMHgwODA0ODEzNCAweDA4MDQ4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0gICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjJdCi0gIExPQUQgICAgICAgICAgIDB4MDAwMDAwIDB4MDgwMDAwMDAgMHgwODAwMDAwMCAweDVhNWJjIDB4NWE1YmMgUiBFIDB4NDAwMDAwCi0gIExPQUQgICAgICAgICAgIDB4MDVhNWJjIDB4MDg0NWE1YmMgMHgwODQ1YTViYyAweDEwMjhjIDB4MjAyY2MgUlcgMHg0MDAwMDAKLSAgRFlOQU1JQyAgICAgICAgMHgwNWE1ZDAgMHgwODQ1YTVkMCAweDA4NDVhNWQwIDB4MDAwZTggMHgwMDBlOCBSVyAgMHg0Ci0gIE5PVEUgICAgICAgICAgIDB4MDQ4MTQ4IDB4MDgwNDgxNDggMHgwODA0ODE0OCAweDAwMDQ0IDB4MDAwNDQgUiAgIDB4NAotICBHTlVfRUhfRlJBTUUgICAweDA1OWU1YyAweDA4MDU5ZTVjIDB4MDgwNTllNWMgMHgwMDA5YyAweDAwMDljIFIgICAweDQKLSAgR05VX1NUQUNLICAgICAgMHgwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAgMHgwMDAwMCBSVyAgMHgxMAotCi1UaGUgZml4IGp1c3QgaGF2ZSBpbXBhY3Qgb24gaHVnZWxpbmtfcncgdGVzdCBjYXNlLCB3aGljaCBuZWVkcyAtLWh1Z2V0bGJmcy1hbGlnbiBmbGFnLgotCi1TaWduZWQtb2ZmLWJ5OiBZYW5nIFNoaSA8eWFuZy5zaGlAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEVyaWMgQiBNdW5zb24gPGVtdW5zb25AbWdlYm0ubmV0PgotLS0tCi0gbGQuaHVnZXRsYmZzIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9sZC5odWdldGxiZnMgYi9sZC5odWdldGxiZnMKLWluZGV4IDQ0MTc0NDIuLjMyYmM2ZmIgMTAwNzU1Ci0tLS0gYS9sZC5odWdldGxiZnMKLSsrKyBiL2xkLmh1Z2V0bGJmcwotQEAgLTk4LDYgKzk4LDcgQEAgaWYgWyAiJEhUTEJfQUxJR04iID09ICJzbGljZSIgXTsgdGhlbgotIAkjIG90aGVyd2lzZSBpdCB3aWxsIGJlIE5VTEwuCi0gCWNhc2UgIiRFTVUiIGluCi0gCWFybWVsZipfbGludXhfZWFiaSkJSFRMQk9QVFM9IiRIVExCT1BUUyAtVHRleHQtc2VnbWVudD0kU0xJQ0VfU0laRSIgOzsKLSsJZWxmX2kzODYpCQlIVExCT1BUUz0iJEhUTEJPUFRTIC1UdGV4dC1zZWdtZW50PTB4MDgwMDAwMDAiIDs7Ci0gCWVzYWMKLSBmaQotIAotLS0gCi0yLjAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy9saWJodWdldGxiZnMtYXZvaWQtc2VhcmNoLWhvc3QtbGlicmFyeS1wYXRoLWZvci1jcm9zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvbGliaHVnZXRsYmZzLWF2b2lkLXNlYXJjaC1ob3N0LWxpYnJhcnktcGF0aC1mb3ItY3Jvcy5wYXRjaAppbmRleCBiM2ZkODQzLi5mOTVlOWU4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy9saWJodWdldGxiZnMtYXZvaWQtc2VhcmNoLWhvc3QtbGlicmFyeS1wYXRoLWZvci1jcm9zLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL2xpYmh1Z2V0bGJmcy1hdm9pZC1zZWFyY2gtaG9zdC1saWJyYXJ5LXBhdGgtZm9yLWNyb3MucGF0Y2gKQEAgLTEsMTkgKzEsMjAgQEAKLUZyb20gMGEyODc3NDAwYTA4NmU5ZDZkZGQzMmE4MDQ2MmI3YTkzMTkyMWRjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODJhNGY2MGFiMjRkZmYxMjFmNWY5ZDNiYmNkOWE4YTI4YmI3Y2FlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENodW5yb25nIEd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CiBEYXRlOiBTdW4sIDggU2VwIDIwMTMgMjM6MjE6NDkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliaHVnZXRsYmZzOiBhdm9pZCBzZWFyY2ggaG9zdCBsaWJyYXJ5IHBhdGggZm9yIGNyb3NzIAorU3ViamVjdDogW1BBVENIXSBsaWJodWdldGxiZnM6IGF2b2lkIHNlYXJjaCBob3N0IGxpYnJhcnkgcGF0aCBmb3IgY3Jvc3MKICBjb21waWxhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENodW5yb25nIEd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+CisKIC0tLQotIGxkc2NyaXB0cy9lbGYzMnBwY2xpbnV4LnhCICAgfCAgICAyICstCi0gbGRzY3JpcHRzL2VsZjMycHBjbGludXgueEJEVCB8ICAgIDIgKy0KLSBsZHNjcmlwdHMvZWxmNjRwcGMueEIgICAgICAgIHwgICAgMiArLQotIGxkc2NyaXB0cy9lbGY2NHBwYy54QkRUICAgICAgfCAgICAyICstCi0gbGRzY3JpcHRzL2VsZl94ODZfNjQueEIgICAgICB8ICAgIDIgKy0KLSBsZHNjcmlwdHMvZWxmX3g4Nl82NC54QkRUICAgIHwgICAgMiArLQorIGxkc2NyaXB0cy9lbGYzMnBwY2xpbnV4LnhCICAgfCAyICstCisgbGRzY3JpcHRzL2VsZjMycHBjbGludXgueEJEVCB8IDIgKy0KKyBsZHNjcmlwdHMvZWxmNjRwcGMueEIgICAgICAgIHwgMiArLQorIGxkc2NyaXB0cy9lbGY2NHBwYy54QkRUICAgICAgfCAyICstCisgbGRzY3JpcHRzL2VsZl94ODZfNjQueEIgICAgICB8IDIgKy0KKyBsZHNjcmlwdHMvZWxmX3g4Nl82NC54QkRUICAgIHwgMiArLQogIDYgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGRzY3JpcHRzL2VsZjMycHBjbGludXgueEIgYi9sZHNjcmlwdHMvZWxmMzJwcGNsaW51eC54QgpAQCAtOTQsNiArOTUsMyBAQAogIElOUFVUKC1saHVnZXRsYmZzKTsKICAvKiBEbyB3ZSBuZWVkIGFueSBvZiB0aGVzZSBmb3IgZWxmPwogICAgIF9fRFlOQU1JQyA9IDA7ICAgICovCi0tLSAKLTEuNy45LjcKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvbGliaHVnZXRsYmZzLWVsZl9pMzg2LWF2b2lkLXNlYXJjaC1ob3N0LWxpYnJhcnktcGF0aC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL2xpYmh1Z2V0bGJmcy1lbGZfaTM4Ni1hdm9pZC1zZWFyY2gtaG9zdC1saWJyYXJ5LXBhdGgucGF0Y2gKaW5kZXggMTU2NjQ4OC4uN2NjMTgwYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvbGliaHVnZXRsYmZzLWVsZl9pMzg2LWF2b2lkLXNlYXJjaC1ob3N0LWxpYnJhcnktcGF0aC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy9saWJodWdldGxiZnMtZWxmX2kzODYtYXZvaWQtc2VhcmNoLWhvc3QtbGlicmFyeS1wYXRoLnBhdGNoCkBAIC0xLDE0ICsxLDE2IEBACi1Gcm9tIDg4OWU1Mjc1M2QzMDE3OWJhNGFjOTQwMDIzY2I0ZWQ1NjE0MzZhYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGI1ODg3NjkzZDkwYzQzMDI5MWI2NDRjMmY1NzEzYjVmZGQxNzc3Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCA0IE5vdiAyMDE0IDAwOjQ5OjExIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmh1Z2V0bGJmcy9lbGZfaTM4NjogYXZvaWQgc2VhcmNoIGhvc3QgbGlicmFyeSBwYXRoIGZvciBjcm9zcyBjb21waWxhdGlvbgorU3ViamVjdDogW1BBVENIXSBsaWJodWdldGxiZnMvZWxmX2kzODY6IGF2b2lkIHNlYXJjaCBob3N0IGxpYnJhcnkgcGF0aCBmb3IKKyBjcm9zcyBjb21waWxhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxkc2NyaXB0cy9lbGZfaTM4Ni54QiAgIHwgICAgMSAtCi0gbGRzY3JpcHRzL2VsZl9pMzg2LnhCRFQgfCAgICAxIC0KKyBsZHNjcmlwdHMvZWxmX2kzODYueEIgICB8IDEgLQorIGxkc2NyaXB0cy9lbGZfaTM4Ni54QkRUIHwgMSAtCiAgMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGRzY3JpcHRzL2VsZl9pMzg2LnhCIGIvbGRzY3JpcHRzL2VsZl9pMzg2LnhCCkBAIC0zNSw2ICszNywzIEBACiAgSU5QVVQoLWxodWdldGxiZnMpOwogIC8qIERvIHdlIG5lZWQgYW55IG9mIHRoZXNlIGZvciBlbGY/CiAgICAgX19EWU5BTUlDID0gMDsgICAgKi8KLS0tCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL3NraXAtY2hlY2tpbmctTElCMzItYW5kLUxJQjY0LWlmLXRoZXktcG9pbnQtdG8tdGhlLXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy9za2lwLWNoZWNraW5nLUxJQjMyLWFuZC1MSUI2NC1pZi10aGV5LXBvaW50LXRvLXRoZS1zLnBhdGNoCmluZGV4IDA3YTk5NzEuLmExM2M1MzggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzL3NraXAtY2hlY2tpbmctTElCMzItYW5kLUxJQjY0LWlmLXRoZXktcG9pbnQtdG8tdGhlLXMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvc2tpcC1jaGVja2luZy1MSUIzMi1hbmQtTElCNjQtaWYtdGhleS1wb2ludC10by10aGUtcy5wYXRjaApAQCAtMSwxNyArMSwyMCBAQAotRnJvbSAzNTVjMDE0NTczZGU3Zjk1MjAyY2M3YzgxOWY4MWYwZjIzMGU0YTFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxODNhNGRhZmUxNDExOTdkZTU4NDBmMmU0OGMyNjZlZjIwOTMwN2FhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgogRGF0ZTogTW9uLCAxOCBKdW4gMjAxMiAxNjozNzowNSArMDgwMAogU3ViamVjdDogW1BBVENIXSBza2lwIGNoZWNraW5nIExJQjMyIGFuZCBMSUI2NCBpZiB0aGV5IHBvaW50IHRvIHRoZSBzYW1lIHBsYWNlCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KKwogLS0tCisgTWFrZWZpbGUgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggOTE1MDJlMS4uYmZiMzQxNCAxMDA2NDQKK2luZGV4IDUxZTQxZjAuLjM3M2RmM2MgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC0xNjcsNyArMTY3LDYgQEAgUkVBTExJQjMyID0gJChyZWFscGF0aCAkKFBSRUZJWCkvJChMSUIzMikpCitAQCAtMTc3LDcgKzE3Nyw2IEBAIFJFQUxMSUIzMiA9ICQocmVhbHBhdGggJChQUkVGSVgpLyQoTElCMzIpKQogIFJFQUxMSUI2NCA9ICQocmVhbHBhdGggJChQUkVGSVgpLyQoTElCNjQpKQogIGlmbmVxICgkKHJlYWxwYXRoICQoUFJFRklYKSksKQogIGlmZXEgKCQoUkVBTExJQjMyKSwkKFJFQUxMSUI2NCkpCkBAIC0xOSw1ICsyMiwzIEBACiAgZW5kaWYKICBlbmRpZgogIAotLS0gCi0xLjkuMgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvZmlsZXMvdGVzdHMtTWFrZWZpbGUtaW5zdGFsbC1zdGF0aWMtNEctZWRnZS10ZXN0Y2FzZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy90ZXN0cy1NYWtlZmlsZS1pbnN0YWxsLXN0YXRpYy00Ry1lZGdlLXRlc3RjYXNlcy5wYXRjaAppbmRleCAyNDlmNmUxLi5iOGIyZjhlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy90ZXN0cy1NYWtlZmlsZS1pbnN0YWxsLXN0YXRpYy00Ry1lZGdlLXRlc3RjYXNlcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy90ZXN0cy1NYWtlZmlsZS1pbnN0YWxsLXN0YXRpYy00Ry1lZGdlLXRlc3RjYXNlcy5wYXRjaApAQCAtMSwxMiArMSwyMyBAQAorRnJvbSBmMWFkOGZmODg3ZjE2ZGFlZThkMDZlY2EzZGYwZjI1NDFiZmRhYWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorRGF0ZTogTW9uLCAyMyBTZXAgMjAxMyAwODowMDo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBsaWJodWdldGxiZnM6IGFkZCByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKIAogVEVTVFNfNjQgaXMgZW1wdHksIGluc3RhbGwgd2lsbCBmYWlsIGR1ZSB0byBtaXNzaW5nIGZpbGUgb3BlcmFuZAogCiBTaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CiAKLS0tLSBhL3Rlc3RzL01ha2VmaWxlb2xkCTIwMTMtMTAtMTIgMDI6MzI6NTUuMjYyMzkxOTk4IC0wNTAwCi0rKysgYi90ZXN0cy9NYWtlZmlsZQkyMDEzLTEwLTEyIDAyOjMzOjQ1LjkyOTM5NDcyMiAtMDUwMAotQEAgLTI5Miw3ICsyOTIsNyBAQAorLS0tCisgdGVzdHMvTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCitpbmRleCAwNzNkZjk2Li4wY2EzNzE2IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlCitAQCAtMjk1LDcgKzI5NSw3IEBAIG9iajY0L2luc3RhbGw6CiAgCSQoSU5TVEFMTCkgLW0gNzU1IHdyYXBwZXItdXRpbHMuc2ggJChERVNURElSKSQoSU5TVF9URVNUU0RJUjY0KS9vYmo2NAogIAkkKElOU1RBTEwpIC1tIDc1NSAkKEhFTFBFUlM6JT1vYmo2NC8lKSAkKERFU1RESVIpJChJTlNUX1RFU1RTRElSNjQpL29iajY0CiAgCSQoSU5TVEFMTCkgLW0gNzU1ICQoSEVMUEVSX0xJQlM6JT1vYmo2NC8lKSAkKERFU1RESVIpJChJTlNUX1RFU1RTRElSNjQpL29iajY0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYgppbmRleCBhNjM0OTRhLi42NmZkOGUyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIKQEAgLTMsMTQgKzMsMTQgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MR1BMLTIuMTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCiAKLURFUEVORFMgPSAic3lzZnN1dGlscyBwZXJsIgotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybCBweXRob24gcHl0aG9uLWlvIHB5dGhvbi1sYW5nIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1yZXNvdXJjZSAke1BOfS1wZXJsIgorREVQRU5EUyA9ICJzeXNmc3V0aWxzIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHB5dGhvbi1pbyBweXRob24tbGFuZyBweXRob24tc3VicHJvY2VzcyBweXRob24tcmVzb3VyY2UiCiBSREVQRU5EU18ke1BOfS10ZXN0cyArPSAiYmFzaCIKIAotUFYgPSAiMi4yMCIKK1BWID0gIjIuMjEiCiBQRSA9ICIxIgogCi1TUkNSRVYgPSAiZTQ0MTgwMDcyYjc5NmMwZTI4ZTUzYzRkMDFlZjYyNzljYWFhMmE5OSIKK1NSQ1JFViA9ICI3M2QwNmU2OTEwOGYyMzE2OTZlOWM1YzQ0ZjRiNDI2OTBmYzVkNzUyIgogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgIGZpbGU6Ly9za2lwLWNoZWNraW5nLUxJQjMyLWFuZC1MSUI2NC1pZi10aGV5LXBvaW50LXRvLXRoZS1zLnBhdGNoIFwKQEAgLTE4LDkgKzE4LDE2IEBACiAgICAgZmlsZTovL3Rlc3RzLU1ha2VmaWxlLWluc3RhbGwtc3RhdGljLTRHLWVkZ2UtdGVzdGNhc2VzLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMS1ydW5fdGVzdC5weS1ub3QtdXNlLWhhcmQtY29kZWQtcGF0aC0uLW9iai1odWdlYWRtLnBhdGNoIFwKICAgICBmaWxlOi8vbGliaHVnZXRsYmZzLWVsZl9pMzg2LWF2b2lkLXNlYXJjaC1ob3N0LWxpYnJhcnktcGF0aC5wYXRjaCBcCi0gICAgZmlsZTovL0ZvcmNlLXRleHQtc2VnbWVudC1hbGlnbm1lbnQtdG8tMHgwODAwMDAwMC1mb3ItaTM4Ni0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkZGVmLmgtZm9yLXB0cmRpZmZfdC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItTWFyay1nbGliYy1zcGVjaWZpYy1jb2RlLXNvLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1hbGxvYy5jLUF2b2lkLXN5c2NvbmYtX1NDX0xFVkVMMl9DQUNIRV9MSU5FU0laRS1vbi1sLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1zaG0uYy1NYXJrLWdsaWJjLXNwZWNpZmljLWNoYW5nZXMtc28ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA1LUluY2x1ZGUtZGlyZW50LmgtZm9yLWlub190LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCiAiCiAKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxwb3dlcnBjfHBvd2VycGM2NHxhYXJjaDY0fGFybSkuKi1saW51eCoiCkBAIC00MywxNCArNTAsNiBAQAogICAgIGlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCBkKX0iIF07IHRoZW4KICAgICAgIHNlZCAtaSAncy9DVVNUT01fTERTQ1JJUFRTID0geWVzL0NVU1RPTV9MRFNDUklQVFMgPSBuby8nICBNYWtlZmlsZQogICAgIGZpCi0KLSAgICAjIGZpeHVwIHBlcmwgbW9kdWxlIGRpcmVjdG9yeSBoYXJkY29kZWQgdG8gcGVybDUKLSAgICBzZWQgLWkgJ3MvcGVybDUvcGVybC9nJyAgTWFrZWZpbGUKLQotICAgICMgZml4dXAgdG8gaW5zdGFsbCBwZXJsIG1vZHVsZSB1bmRlciAkKExJQkRJUikvcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9UTEJDCi0gICAgIyB0byBhdm9pZCBiZWxvdyBlcnJvcgotICAgICMgQ2FuJ3QgbG9jYXRlIFRMQkMvT3BDb2xsZWN0LnBtIGluIEBJTkMKLSAgICBzZWQgLWkgJy9eUE1ESVIvIHM6cGVybDpwZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9OmcnIE1ha2VmaWxlCiB9CiAKIGRvX2luc3RhbGwoKSB7CkBAIC02MSwxMSArNjAsMTAgQEAKIH0KIAogCi1QQUNLQUdFUyA9KyAiJHtQTn0tcGVybCAke1BOfS10ZXN0cyAiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgIgogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLnNvIgogRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0iCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9saWJodWdldGxiZnMvdGVzdHMvb2JqMzIvLmRlYnVnICR7bGliZGlyfS9saWJodWdldGxiZnMvdGVzdHMvb2JqNjQvLmRlYnVnIgotRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcGVybCIKIEZJTEVTXyR7UE59LXRlc3RzICs9ICIke2xpYmRpcn0vbGliaHVnZXRsYmZzL3Rlc3RzIgogCiBJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1zcmMtTWFrZWZpbGUtdXNlLWxpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaC0zLjAtYTkvMDAwMS1zcmMtTWFrZWZpbGUtdXNlLWxpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRjZWY5NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS8wMDAxLXNyYy1NYWtlZmlsZS11c2UtbGliZGlyLWluc3RlYWQtb2YtaGFyZGNvZGVkLWxpYi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGVhNjgzYTBkYmFhMzBhMGJmMTAxYWRiMDlhMWEyNTMxYzcxMTJjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNyBBdWcgMjAxOCAxMTowMjo0NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcmMvTWFrZWZpbGU6IHVzZSBsaWJkaXIgaW5zdGVhZCBvZiBoYXJkY29kZWQgL2xpYgorCit1c2UgbGliZGlyIGluc3RlYWQgb2YgaGFyZGNvZGVkIC9saWIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL01ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQoraW5kZXggNDY3OGQ1NC4uYjczZGRiNiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZQorKysrIGIvc3JjL01ha2VmaWxlCitAQCAtMTQxLDEwICsxNDEsMTAgQEAgaW5zdGFsbC10YXJnZXQ6CisgCWlmIFsgISAtZCAkKEJBU0UpIF07IHRoZW4gbWtkaXIgJChCQVNFKTsgZmkKKyAJaWYgWyAhIC1kICQoQkFTRSkvYmluIF07IHRoZW4gbWtkaXIgJChCQVNFKS9iaW47IGZpCisgCWlmIFsgISAtZCAkKEJBU0UpL2luY2x1ZGUgXTsgdGhlbiBta2RpciAkKEJBU0UpL2luY2x1ZGU7IGZpCistCWlmIFsgISAtZCAkKEJBU0UpL2xpYiBdOyB0aGVuIG1rZGlyICQoQkFTRSkvbGliOyBmaQorKwlpZiBbICEgLWQgJChERVNURElSKSQobGliZGlyKSBdOyB0aGVuIG1rZGlyICQoREVTVERJUikkKGxpYmRpcik7IGZpCisgCWNwICQoRVhFUykgJChCQVNFKS9iaW4KKyAJY3AgJChJTkNTKSAkKEJBU0UpL2luY2x1ZGUKKy0JY3AgJE8vbG1iZW5jaC5hICQoQkFTRSkvbGliL2xpYm1iZW5jaC5hCisrCWNwICRPL2xtYmVuY2guYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYm1iZW5jaC5hCisgCWNkIC4uL2RvYzsgZW52IE1BS0VGTEFHUz0iJChNQUtFRkxBR1MpIiBtYWtlIENDPSIke0NDfSIgT1M9IiR7T1N9IiBCQVNFPSIkKEJBU0UpIiBpbnN0YWxsCisgCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoLTMuMC1hOS91c2UtYmFzZV9saWJkaXItaW5zdGVhZC1vZi1oYXJkY29kZWQtbGliLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2ZTk0NjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2gtMy4wLWE5L3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDczZmRjNThjYTRlYjllMmYyNGQ4NTRiM2FmM2E0ZTVkYWFjNWEzM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBGcmksIDIyIE5vdiAyMDEzIDE1OjIwOjA4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBiYXNlX2xpYmRpciBpbnN0ZWFkIG9mIGhhcmRjb2RlZCAvbGliCi0KLVVwc3RyZWFtIFN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgotCi0tLS0KLSBzcmMvTWFrZWZpbGUgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBjN2E4Yzc5Li5jN2U0ZTNjIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC0xNDMsMTAgKzE0MywxMCBAQCBpbnN0YWxsLXRhcmdldDoKLSAJaWYgWyAhIC1kICQoQkFTRSkgXTsgdGhlbiBta2RpciAkKEJBU0UpOyBmaQotIAlpZiBbICEgLWQgJChCQVNFKS9iaW4gXTsgdGhlbiBta2RpciAkKEJBU0UpL2JpbjsgZmkKLSAJaWYgWyAhIC1kICQoQkFTRSkvaW5jbHVkZSBdOyB0aGVuIG1rZGlyICQoQkFTRSkvaW5jbHVkZTsgZmkKLS0JaWYgWyAhIC1kICQoQkFTRSkvbGliIF07IHRoZW4gbWtkaXIgJChCQVNFKS9saWI7IGZpCi0rCWlmIFsgISAtZCAkKEJBU0UpJChiYXNlX2xpYmRpcikgXTsgdGhlbiBta2RpciAkKEJBU0UpJChiYXNlX2xpYmRpcik7IGZpCi0gCWNwICQoRVhFUykgJChCQVNFKS9iaW4KLSAJY3AgJChJTkNTKSAkKEJBU0UpL2luY2x1ZGUKLS0JY3AgJE8vbG1iZW5jaC5hICQoQkFTRSkvbGliL2xpYm1iZW5jaC5hCi0rCWNwICRPL2xtYmVuY2guYSAkKEJBU0UpJChiYXNlX2xpYmRpcikKLSAJY2QgLi4vZG9jOyBlbnYgTUFLRUZMQUdTPSIkKE1BS0VGTEFHUykiIG1ha2UgQ0M9IiR7Q0N9IiBPUz0iJHtPU30iIEJBU0U9IiQoQkFTRSkiIGluc3RhbGwKLSAKLSAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoXzMuMC1hOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbG1iZW5jaC9sbWJlbmNoXzMuMC1hOS5iYgppbmRleCAwM2IzNzIxLi44ZTZlODAzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xtYmVuY2gvbG1iZW5jaF8zLjAtYTkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9sbWJlbmNoL2xtYmVuY2hfMy4wLWE5LmJiCkBAIC03LDkgKzcsOSBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyIKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgotTERMSUJTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMgIgorREVQRU5EUyArPSAibGlidGlycGMiCitDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCitMRExJQlMgKz0gIiAtbHRpcnBjICIKIAogUFIgPSAicjIiCiAKQEAgLTE5LDE3ICsxOSwyMCBAQAogICAgICAgICAgICBmaWxlOi8vdXBkYXRlLXJlc3VsdHMtc2NyaXB0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL29iZXktcmFubGliLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jb25maWctc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1iYXNlX2xpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbG1iZW5jaF9yZXN1bHRfaHRtbF9yZXBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWxtYmVuY2gtbWVtb3J5LWNoZWNrLWZhaWx1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1nY2Mtb3B0aW1pemUtYXdheS10aGUtbG9vcHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sYXRfaHR0cC5jLUFkZC1wcmludGYtZm9ybWF0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLW11c2wtZGVmaW5lLWd1YXJkLWJlZm9yZS1yZWRlZmluaW5nLXNvY2tsZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWJ1aWxkLUFkanVzdC1DRkxBR1MtTERGTEFHUy10by1hcHBlbmQtdmFsdWVzLXBhc3NlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtTWFrZWZpbGUtdXNlLWxpYmRpci1pbnN0ZWFkLW9mLWhhcmRjb2RlZC1saWIucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYjMzNTFhMzI5NGRiNjZhNzJlMjg2NGExOTlkMzdjYmYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JkNTc3N2QxNWY0NGVhYjc2NjZkY2FjNDE4MDU0YzNjMDlkZjk5ODI2OTYxYTM5N2Q5YWNmNDNkOGEyYTU1MSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xtYmVuY2gvZmlsZXMvZGV2ZWxvcG1lbnQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG1iZW5jaC0oP1A8cHZlcj5cZCsoXC5cZCspKy1bYS16XStcZCspIgorCiBFWFRSQV9PRU1BS0UgPSAnQ0M9IiR7Q0N9IiBBUj0iJHtBUn0iIFJBTkxJQj0iJHtSQU5MSUJ9IiBDRkxBR1M9IiR7Q0ZMQUdTfSIgXAogICAgICAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30iIExETElCUz0iJHtMRExJQlN9IiBMRD0iJHtMRH0iIE9TPSIke1RBUkdFVF9TWVN9IiBcCiAgICAgICAgICAgICAgICAgVEFSR0VUPSIke1RBUkdFVF9PU30iIEJBU0U9IiR7cHJlZml4fSIgTUFORElSPSIke21hbmRpcn0iJwpAQCAtNjMsNiArNjYsNyBAQAogICAgIGZpCiAKICAgICBvZV9ydW5tYWtlIEJBU0U9IiR7RH0ke3ByZWZpeH0iIE1BTkRJUj0iJHtEfSR7bWFuZGlyfSIgXAorICAgICAgICAgICAgREVTVERJUj0iJHtEfSIgXAogICAgICAgICAgICAgLUMgc3JjIGluc3RhbGwKICAgICBtdiAke0R9JHtiaW5kaXJ9L2xpbmUgJHtEfSR7YmluZGlyfS9sbV9saW5lCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbG1iZW5jaC1ydW4gJHtEfSR7YmluZGlyfS8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbmJlbmNoLWJ5dGUvbmJlbmNoLWJ5dGVfMi4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL25iZW5jaC1ieXRlL25iZW5jaC1ieXRlXzIuMi4zLmJiCmluZGV4IGRhMmNiNGIuLjIyYmIwNDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbmJlbmNoLWJ5dGUvbmJlbmNoLWJ5dGVfMi4yLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9uYmVuY2gtYnl0ZS9uYmVuY2gtYnl0ZV8yLjIuMy5iYgpAQCAtMTYsNyArMTYsNyBAQAogCiBFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKIAotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7Q0ZMQUdTfSAke0xERkxBR1N9IgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCiBkb19jb21waWxlKCkgewogICAgIG9lX3J1bm1ha2UKIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzcuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOTBhNzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfNy44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIlBob3Jvbml4IFRlc3QgU3VpdGUiCi1ERVNDUklQVElPTiA9ICJUaGUgUGhvcm9uaXggVGVzdCBTdWl0ZSBpcyBkZXNpZ25lZCB0byBjYXJyeSBvdXQgYm90aCBxdWFsaXRhdGl2ZSBcCi1hbmQgcXVhbnRpdGF0aXZlIGJlbmNobWFya3MgaW4gYSBjbGVhbiwgcmVwcm9kdWNpYmxlLCBhbmQgZWFzeS10by11c2UgbWFubmVyLiIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLVNFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnBob3Jvbml4LXRlc3Qtc3VpdGUuY29tL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NTA4NDNiZDkyNTI4MjNlN2UyNGJjMDg0OTc3MzAwMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZDZjODY5ODQxZjI4ZTRhYzFlOGE1ZTRjZGEwNWZhZmNlOWE1MjNhNmI0ZjBmM2E0NzgwNWVmZDMwNDk0ZDg4IgotCi1TID0gIiR7V09SS0RJUn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSIKLQotaW5oZXJpdCBzeXN0ZW1kIGFsbGFyY2gKLQotZG9faW5zdGFsbCgpIHsKLSAgICBERVNURElSPSR7RH0gLi9pbnN0YWxsLXNoICR7ZXhlY19wcmVmaXh9Ci0KLSAgICBpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIvdXNyL2xpYi9zeXN0ZW1kIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBtdiAke0R9L3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIvCi0gICAgZmkKLX0KLQotIyBJdCBpcyBub3QgYWR2aXNhYmxlIHRvIGVuYWJsZSB0aGVzZSBzZXJ2aWNlcyBieSBkZWZhdWx0IHNpbmNlIHRoZXkgY2FuIGNhdXNlCi0jIGNvbnRpbnVhbCB0YXJnZXQgcmVib290cyBpZiB0aGV5IGVuY291bnRlciBuZXR3b3JrIHByb2JsZW1zLgotIwotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBob3JvbWF0aWMtY2xpZW50LnNlcnZpY2UgcGhvcm9tYXRpYy1zZXJ2ZXIuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhL3Bob3Jvbml4LXRlc3Qtc3VpdGUuYXBwZGF0YS54bWwgXAotICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzL3Bob3Jvbml4LXRlc3Qtc3VpdGUucG5nIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNjR4NjQvbWltZXR5cGVzL2FwcGxpY2F0aW9uLXgtb3BlbmJlbmNobWFya2luZy5wbmcgXAotICAgICR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9vcGVuYmVuY2htYXJraW5nLW1pbWUueG1sIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV84LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzguMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZmE1MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL3Bob3Jvbml4LXRlc3Qtc3VpdGUvcGhvcm9uaXgtdGVzdC1zdWl0ZV84LjAuMS5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIlBob3Jvbml4IFRlc3QgU3VpdGUiCitERVNDUklQVElPTiA9ICJUaGUgUGhvcm9uaXggVGVzdCBTdWl0ZSBpcyBkZXNpZ25lZCB0byBjYXJyeSBvdXQgYm90aCBxdWFsaXRhdGl2ZSBcCithbmQgcXVhbnRpdGF0aXZlIGJlbmNobWFya3MgaW4gYSBjbGVhbiwgcmVwcm9kdWNpYmxlLCBhbmQgZWFzeS10by11c2UgbWFubmVyLiIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK1NFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnBob3Jvbml4LXRlc3Qtc3VpdGUuY29tL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZGMzYTBlNDkwZTkwOWYxODgzNzlhOWUwNWZkNDc4MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzA2NTQ5MTA5YzcyNTRiYWYzMWVkYjM4NTI2NWIxOTU1N2I1NjkyMjE3ZDJkZmNmOTZmNmZiMTdkZThlODQyIgorCitTID0gIiR7V09SS0RJUn0vcGhvcm9uaXgtdGVzdC1zdWl0ZSIKKworaW5oZXJpdCBzeXN0ZW1kIGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICBERVNURElSPSR7RH0gLi9pbnN0YWxsLXNoICR7ZXhlY19wcmVmaXh9CisKKyAgICBpZiBbICIke3N5c3RlbWRfdW5pdGRpcn0iICE9ICIvdXNyL2xpYi9zeXN0ZW1kIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBtdiAke0R9L3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vKiAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIvCisgICAgZmkKK30KKworIyBJdCBpcyBub3QgYWR2aXNhYmxlIHRvIGVuYWJsZSB0aGVzZSBzZXJ2aWNlcyBieSBkZWZhdWx0IHNpbmNlIHRoZXkgY2FuIGNhdXNlCisjIGNvbnRpbnVhbCB0YXJnZXQgcmVib290cyBpZiB0aGV5IGVuY291bnRlciBuZXR3b3JrIHByb2JsZW1zLgorIworU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBob3JvbWF0aWMtY2xpZW50LnNlcnZpY2UgcGhvcm9tYXRpYy1zZXJ2ZXIuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkgdXRpbC1saW51eC1sc2NwdSBvcy1yZWxlYXNlIGxzYiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9waG9yb25peC10ZXN0LXN1aXRlIFwKKyAgICAke2RhdGFkaXJ9L2FwcGRhdGEvcGhvcm9uaXgtdGVzdC1zdWl0ZS5hcHBkYXRhLnhtbCBcCisgICAgJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvcGhvcm9uaXgtdGVzdC1zdWl0ZS5wbmcgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci82NHg2NC9taW1ldHlwZXMvYXBwbGljYXRpb24teC1vcGVuYmVuY2htYXJraW5nLnBuZyBcCisgICAgJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL29wZW5iZW5jaG1hcmtpbmctbWltZS54bWwgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcy1zdWl0ZS9zLXN1aXRlX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcy1zdWl0ZS9zLXN1aXRlX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2QxNzI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9zLXN1aXRlL3Mtc3VpdGVfZ2l0LmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiU21hbGwgY29sbGVjdGlvbiBvZiBiZW5jaG1hcmtzIGZvciBzdG9yYWdlIEkvTyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iNTI5YWFhNmEwYzUwZjE1ZDI5Zjg5NjA5YjVjMjJmMyIKKworU1JDUkVWID0gIjc5Njk4ZjY0NWJmYjI4ZDBkOTY2NDg0ZGRhZDNhMWVmYjU2MjI0NmQiCitQViA9ICIwLjArZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vQWxnb2Rldi1naXRodWIvUy5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworIyBpbnN0YWxsaW5nIGluIC9vcHQvUy1zdWl0ZSBzaW5jZSB0aGUgcGFja2FnZSBoYXMKKyMgZGVwZW5kZW5jaWVzIHRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLgorZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vb3B0L1Mtc3VpdGUKKyAgICBmb3IgaSBpbiAkKGZpbmQgJHtTfS8qIC10eXBlIGQpOyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0vb3B0L1Mtc3VpdGUvJChiYXNlbmFtZSAkaSkKKyAgICAgICAgaW5zdGFsbCAtbTA3NTUgLXAgJHtTfS8kKGJhc2VuYW1lICRpKS8qICR7RH0vb3B0L1Mtc3VpdGUvJChiYXNlbmFtZSAkaSkKKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1tMDc1NSAke1N9L2NvbmZpZ19wYXJhbXMuc2ggJHtEfS9vcHQvUy1zdWl0ZQorICAgIGluc3RhbGwgLW0wNzU1ICR7U30vZGVmX2NvbmZpZ19wYXJhbXMuc2ggJHtEfS9vcHQvUy1zdWl0ZQorfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIGJjIGNvcmV1dGlscyBnYXdrIGcrKyBnY2MgZmlvIGxpYmFpbyBsaWJhaW8tZGV2IHN5c3N0YXQiCisKK0ZJTEVTXyR7UE59ID0gIi9vcHQvUy1zdWl0ZS8iCisKKyMgYWRkZWQgdG8gSU5TQU5FX1NLSVAgc2luY2Ugcy1zdWl0ZSBoYXZlIGFuIHJ1bnRpbWUKKyMgZGVwZW5kZW5jeSAoUkRFUEVORFMpIG9uIGxpYmFpby1kZXYuCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LWRlcHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNjNjJhOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTGludXggdXNlci1zcGFjZSBhcHBsaWNhdGlvbiB0byBtb2RpZnkgdGhlIEVGSSBCb290IE1hbmFnZXIuIgotU1VNTUFSWSA9ICJFRkkgQm9vdCBNYW5hZ2VyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2VmaWJvb3RtZ3IiCi1TRUNUSU9OID0gImJhc2UiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLURFUEVORFMgPSAicGNpdXRpbHMgemxpYiBlZml2YXIiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLVNSQ1JFViA9ICI1YzE0ZGEyMjgwMjU3NmE5OWViYjg1NGY3YWExNzRmNzk2ZjdiMDMxIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2VmaWJvb3RtZ3IuZ2l0O3Byb3RvY29sPWh0dHBzIFwKLSAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRU1BS0UgPSAiJ0VGSURJUj0vJyAnQ0M9JHtDQ30nICdDRkxBR1M9JHtDRkxBR1N9IC1JJHtTfS9zcmMvaW5jbHVkZSBgcGtnLWNvbmZpZyAtLWNmbGFncyBlZml2YXJgJyIKLQotQ0ZMQUdTX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1Xbm8tZXJyb3IiCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSAke0J9L3NyYy9lZmlib290bWdyICR7RH0vJHtzYmluZGlyfS9lZmlib290bWdyCi19Ci0KLUNMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaWJvb3RtZ3IvZWZpYm9vdG1ncl8wLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDk3ZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZmlib290bWdyL2VmaWJvb3RtZ3JfMC4xNi5iYgpAQCAtMCwwICsxLDI3IEBACitERVNDUklQVElPTiA9ICJMaW51eCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIHRvIG1vZGlmeSB0aGUgRUZJIEJvb3QgTWFuYWdlci4iCitTVU1NQVJZID0gIkVGSSBCb290IE1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nciIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKKworREVQRU5EUyA9ICJwY2l1dGlscyB6bGliIGVmaXZhciIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworU1JDUkVWID0gImE1MTAzMjUxYTExNjYzYWRkZGM4NWM4NmUwYjhkM2QzYjczY2JiNGEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpYm9vdG1nci5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnCisKK0VYVFJBX09FTUFLRSA9ICInRUZJRElSPS8nICdDQz0ke0NDfScgJ0NGTEFHUz0ke0NGTEFHU30gLUkke1N9L3NyYy9pbmNsdWRlIGBwa2ctY29uZmlnIC0tY2ZsYWdzIGVmaXZhcmAnIgorCitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1lcnJvciIKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1ICR7Qn0vc3JjL2VmaWJvb3RtZ3IgJHtEfS8ke3NiaW5kaXJ9L2VmaWJvb3RtZ3IKK30KKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMS1lZml2YXItZHAuaC1BZGQtV3Vua25vd24tYXR0cmlidXRlcy13aGVuLXVzaW5nLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGNlMTMyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGQ2NWMzMjVkZDg2ODFlZGYyZWUzMzMyZWViMGE1NDcyMjljN2ZmYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyNCBBdWcgMjAxNyAxNTo1NDo0NyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBlZml2YXItZHAuaDogQWRkIC1XdW5rbm93bi1hdHRyaWJ1dGVzIHdoZW4gdXNpbmcgY2xhbmcKLQotY2hhbmdlICFkcCBjaGVjayB0byBhIGNvbXBhcmlzaW9uIGFnYWluc3QgTlVMTCB0byBzaWxlbnQgY2xhbmcgd2FybmluZwotbm9ubnVsbCBwYXJhbWV0ZXIgJ2RwJyB3aWxsIGV2YWx1YXRlIHRvICd0cnVlJyBvbiBmaXJzdCBlbmNvdW50ZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaCBiL3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAotaW5kZXggM2E1MDliNy4uYzE0MGU4ZCAxMDA2NDQKLS0tLSBhL3NyYy9pbmNsdWRlL2VmaXZhci9lZml2YXItZHAuaAotKysrIGIvc3JjL2luY2x1ZGUvZWZpdmFyL2VmaXZhci1kcC5oCi1AQCAtNzgzLDkgKzc4MywxNCBAQCBleHRlcm4gaW50IGVmaWRwX2FwcGVuZF9pbnN0YW5jZShjb25zdF9lZmlkcCBkcCwgY29uc3RfZWZpZHAgZHBpLCBlZmlkcCAqb3V0KTsKLSAgKiB0aG91Z2ggb2xkZXIgb3Igb3RoZXIgY29tcGlsZXJzIG1pZ2h0IGp1c3QgaWdub3JlIHRoYXQgYXR0cmlidXRlIGlmIHRoZXkKLSAgKiBkb24ndCBzdXBwb3J0IGl0LiAgVWdoLgotICAqLwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA2Ci0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV25vbm51bGwtY29tcGFyZSIKLSAjZW5kaWYKLSsjaWYgZGVmaW5lZChfX2NsYW5nX18pCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Vua25vd24tYXR0cmlidXRlcyIKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcG9pbnRlci1ib29sLWNvbnZlcnNpb24iCi0rI2VuZGlmCi0gCi0gc3RhdGljIGlubGluZSBpbnQxNl90Ci0gX19hdHRyaWJ1dGVfXygoX19hcnRpZmljaWFsX18pKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDEtbWFrZWd1aWRzLURvLW5vdC11c2UtX19ic3dhcF9jb25zdGFudF8tMTYtMzItbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTZlYjA2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci8wMDAxLW1ha2VndWlkcy1Eby1ub3QtdXNlLV9fYnN3YXBfY29uc3RhbnRfLTE2LTMyLW1hY3Jvcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZGQ0MjkxMjY1YjdiM2Q3ZDdmZmExZDhhZGYzMjc4MWFlMjVkYmZlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDE1IEp1bCAyMDE3IDAwOjI5OjQyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ha2VndWlkczogRG8gbm90IHVzZSBfX2Jzd2FwX2NvbnN0YW50X3sxNnwzMn0gbWFjcm9zCi0KLW5vdCBhdmFpbGFibGUgb24gbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBzcmMvbWFrZWd1aWRzLmMgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlZ3VpZHMuYyBiL3NyYy9tYWtlZ3VpZHMuYwotaW5kZXggZGEyZjVmNy4uZGFmODIxYSAxMDA2NDQKLS0tLSBhL3NyYy9tYWtlZ3VpZHMuYwotKysrIGIvc3JjL21ha2VndWlkcy5jCi1AQCAtMTU1LDEzICsxNTUsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICNpZiBCWVRFX09SREVSID09IEJJR19FTkRJQU5cblwKLSAjZGVmaW5lIGNwdV90b19iZTMyKG4pIChuKVxuXAotICNkZWZpbmUgY3B1X3RvX2JlMTYobikgKG4pXG5cCi0tI2RlZmluZSBjcHVfdG9fbGUzMihuKSAoX19ic3dhcF9jb25zdGFudF8zMihuKSlcblwKLS0jZGVmaW5lIGNwdV90b19sZTE2KG4pIChfX2Jzd2FwX2NvbnN0YW50XzE2KG4pKVxuXAotKyNkZWZpbmUgY3B1X3RvX2xlMzIobikgKCh1aW50MzJfdCkgKChuKT4+MjQgfCAobik+PjgmMHhmZjAwIHwgKG4pPDw4JjB4ZmYwMDAwIHwgKG4pPDwyNCkpXG5cCi0rI2RlZmluZSBjcHVfdG9fbGUxNihuKSAoKHVpbnQxNl90KSAoKG4pPDw4IHwgKG4pPj44KSlcblwKLSAjZWxzZVxuXAotICNkZWZpbmUgY3B1X3RvX2xlMzIobikgKG4pXG5cCi0gI2RlZmluZSBjcHVfdG9fbGUxNihuKSAobilcblwKLS0jZGVmaW5lIGNwdV90b19iZTMyKG4pIChfX2Jzd2FwX2NvbnN0YW50XzMyKG4pKVxuXAotLSNkZWZpbmUgY3B1X3RvX2JlMTYobikgKF9fYnN3YXBfY29uc3RhbnRfMTYobikpXG5cCi0rI2RlZmluZSBjcHVfdG9fYmUzMihuKSAoKHVpbnQzMl90KSAoKG4pPj4yNCB8IChuKT4+OCYweGZmMDAgfCAobik8PDgmMHhmZjAwMDAgfCAobik8PDI0KSlcblwKLSsjZGVmaW5lIGNwdV90b19iZTE2KG4pICgodWludDE2X3QpICgobik8PDggfCAobik+PjgpKVxuXAotICNlbmRpZlxuXAotICIiIik7Ci0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyLzAwMDMtZWZpdmFyLWZpeC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMxMDVmZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkZWE0YTU1NzE0MjQ5YjI3MzRhMzY3MDExMjBmZDIyYzkxYzY0ZWMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogU2F0LCA3IE1heSAyMDE2IDAyOjA2OjQ3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmaXggZWZpdmFyLnBjIG5vdCBmb3VuZAotCi1JdCBmaXhlcyBlZml2YXIucGMgbm90IGZvdW5kOgotLi4uCi18IGluc3RhbGwgLWQgLW0gNzU1IGVmaXZhci8wLjIzLXIwL2ltYWdlL3Vzci9saWIvcGtnY29uZmlnLwotfCBpbnN0YWxsIC1tIDY0NCBlZml2YXIucGMgZWZpdmFyLzAuMjMtcjAvaW1hZ2UvdXNyL2xpYi9wa2djb25maWcvCi07ICBpbnN0YWxsIC1tIDY0NCBlZmlib290LnBjIGVmaXZhci8wLjIzLXIwL2ltYWdlL3Vzci9saWIvcGtnY29uZmlnLwotOwotfCBpbnN0YWxsOiBjYW5ub3Qgc3RhdCAnZWZpdmFyLnBjJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCBpbnN0YWxsOiBjYW5ub3Qgc3RhdCAnZWZpYm9vdC5wYyc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLXwgbWFrZVsxXTogKioqIFtpbnN0YWxsXSBFcnJvciAxCi18IG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGBlZml2YXIvMC4yMy1yMC9naXQvc3JjJwotfCBtYWtlOiAqKiogW2luc3RhbGxdIEVycm9yIDIKLXwgRVJST1I6IG9lX3J1bm1ha2UgZmFpbGVkCi0uLi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gc3JjL01ha2VmaWxlIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCi1pbmRleCBkY2M3ZmM4Li42OTFhYThhIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlCi0rKysgYi9zcmMvTWFrZWZpbGUKLUBAIC05NCw3ICs5NCw5IEBAIGluc3RhbGwgOiBhbGwKLSAJCWxuIC1mcyAkKHgpLjEuJChWRVJTSU9OKSAkKERFU1RESVIpJChsaWJkaXIpLyQoeCkgO1wKLSAJCSkKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoUENESVIpCi0tCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoUENESVIpIDspCi0rCSQoZm9yZWFjaCB4LCAkKFBDVEFSR0VUUyksICQoSU5TVEFMTCkgLW0gNjQ0ICQoVE9QRElSKS9zcmMvJCh4KS5pbiAkKERFU1RESVIpJChQQ0RJUikvJCh4KSA7XAotKwkJc2VkIC1pIC1lICJzOkBATElCRElSQEA6JChsaWJkaXIpOmciIC1lICJzOkBAVkVSU0lPTkBAOiQoVkVSU0lPTik6ZyIgXAotKwkJCSQoREVTVERJUikkKFBDRElSKS8kKHgpOyApCi0gCSQoSU5TVEFMTCkgLWQgLW0gNzU1ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2VmaXZhcgotIAkkKGZvcmVhY2ggeCwgJCh3aWxkY2FyZCAkKFRPUERJUikvc3JjL2luY2x1ZGUvZWZpdmFyLyouaCksICQoSU5TVEFMTCkgLW0gNjQ0ICQoeCkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZWZpdmFyLyQobm90ZGlyICQoeCkpOykKLSAJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQoYmluZGlyKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaAppbmRleCBmODhhZjFmLi4wNDNiMDdhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXIvYWxsb3ctbXVsdGktZGVmaW5pdGlvbnMtZm9yLW5hdGl2ZS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gYzgwMWRjYjAzZDQyZWI1MzNhOWJlYWQwYjM5N2Q3Y2U0ZmM1YTZmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxMCBBdWcgMjAxNiAxNzo0OTo1MCArMDgwMAorRnJvbSBjMTAzNjhiMzk3NDgzYTJmYzdiNDkzYzA5OWQ4NDE2ZDkwMmY4Y2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAzMSBKdWwgMjAxOCAxNDoxODozNSArMDgwMAogU3ViamVjdDogW1BBVENIXSBhbGxvdyBtdWx0aSBkZWZpbml0aW9ucyBmb3IgbmF0aXZlCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMTQsMTIgKzE0LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlLnJ1bGVzIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9NYWtlLnJ1bGVzIGIvTWFrZS5ydWxlcwotaW5kZXggODhiOWFhNy4uNzk5MzMyZiAxMDA2NDQKK2luZGV4IDA0MjU4NWIuLjI1N2JhNDUgMTAwNjQ0CiAtLS0gYS9NYWtlLnJ1bGVzCiArKysgYi9NYWtlLnJ1bGVzCiBAQCAtMjAsNiArMjAsNyBAQCBpbmNsdWRlICQoVE9QRElSKS9NYWtlLnZlcnNpb24KQEAgLTI4LDUgKzI5LDggQEAKICAJICAtV2wsLS12ZXJzaW9uLXNjcmlwdD0kKE1BUCkgXAogKwkgIC1XbCwteixtdWxkZWZzIFwKICAJICAtbyAkQCAkXiAkKExETElCUykKKyAJbG4gLXZmcyAkQCAkQC4xCiAgCi0gJS5hYml4bWwgOiAlLnNvCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhci9tdXNsLXN0cm5kdXBhLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NjRhYzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyL211c2wtc3RybmR1cGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIDgwMDBiOWFmYzg1ODQ3MjkxMmFhY2U5ODUwMDRiNDRmOGViNDY3ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxOCBBdWcgMjAxNyAwOTo0OTo0OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBzdXBwb3J0IG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBzcmMvbGludXguYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saW51eC5jIGIvc3JjL2xpbnV4LmMKLWluZGV4IDM0ZWQ0NzkuLjEzMDRmMmIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGludXguYwotKysrIGIvc3JjL2xpbnV4LmMKLUBAIC00MCw2ICs0MCwxMCBAQAotICNpbmNsdWRlIDxlZml2YXIuaD4KLSAjaW5jbHVkZSA8ZWZpYm9vdC5oPgotIAotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rI2RlZmluZSBzdHJuZHVwYSh4LHMpIHN0cm5jcHkoYWxsb2NhKHN0cmxlbih4KSsxKSx4LHMpCi0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgImRwLmgiCi0gI2luY2x1ZGUgImxpbnV4LmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWZpdmFyL2VmaXZhcl8wLjMxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkNGNkYzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIHRvIG1hbmlwdWxhdGUgVUVGSSB2YXJpYWJsZXMiCi1ERVNDUklQVElPTiA9ICJlZml2YXIgcHJvdmlkZXMgYSBzaW1wbGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgVUVGSSB2YXJpYWJsZSBmYWNpbGl0eSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NjI2YmIxZTIwMTg5Y2ZhOTVmMmM1MDhiYTI4NjM5MyIKLQotREVQRU5EUyA9ICJwb3B0IgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBlZml2YXItbmF0aXZlIgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1TUkNSRVYgPSAiMTEzMjQ3OTljNjgxOTMxMTZlMWRkNWY5NGI0MTY1OTFiZDMyNGY5MCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9lZml2YXIuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LW11bHRpLWRlZmluaXRpb25zLWZvci1uYXRpdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZ3VpZHMtRG8tbm90LXVzZS1fX2Jzd2FwX2NvbnN0YW50Xy0xNi0zMi1tYWNyb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVmaXZhci1kcC5oLUFkZC1XdW5rbm93bi1hdHRyaWJ1dGVzLXdoZW4tdXNpbmctY2xhbmcucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLWVmaXZhci1maXgtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJ2ZpbGU6Ly8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSMgU2V0dGluZyBDUk9TU19DT01QSUxFIGJyZWFrcyBwa2djb25maWcsIHNvIGp1c3Qgc2V0IEFSCi1FWFRSQV9PRU1BS0UgPSAiQVI9JHtUQVJHRVRfUFJFRklYfWdjYy1hciIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOi1XZXJyb3I6OmcgJHtTfS9nY2Muc3BlY3MKLX0KLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyBzcmMgbWFrZWd1aWRzCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9zcmMvbWFrZWd1aWRzICR7RH0ke2JpbmRpcn0vbWFrZWd1aWRzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VmaXZhci9lZml2YXJfMC4zNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU4OGVlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZml2YXIvZWZpdmFyXzAuMzYuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJUb29scyB0byBtYW5pcHVsYXRlIFVFRkkgdmFyaWFibGVzIgorREVTQ1JJUFRJT04gPSAiZWZpdmFyIHByb3ZpZGVzIGEgc2ltcGxlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgdG8gdGhlIFVFRkkgdmFyaWFibGUgZmFjaWxpdHkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpdmFyIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjYyNmJiMWUyMDE4OWNmYTk1ZjJjNTA4YmEyODYzOTMiCisKK0RFUEVORFMgPSAicG9wdCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZWZpdmFyLW5hdGl2ZSIKKworaW5oZXJpdCBwa2djb25maWcKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKKworU1JDUkVWID0gImVmMzQ0OTIyM2VjZDFlN2IxMDk4YzUyM2Q2NmIyZjk2MGZlODM5ZWEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvZWZpdmFyLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1tdWx0aS1kZWZpbml0aW9ucy1mb3ItbmF0aXZlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1lZml2YXItZml4LWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJ2ZpbGU6Ly8wMDA0LWZpeC11bmtub3ctb3B0aW9uLWZvci1nb2xkLWxpbmtlci5wYXRjaCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWhvc3QtZ2NjLTQuNi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgczotV2Vycm9yOjpnICR7U30vZ2NjLnNwZWNzCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgeworICAgIG9lX3J1bm1ha2UgLUMgc3JjIG1ha2VndWlkcyBDQ19GT1JfQlVJTEQ9IiR7QlVJTERfQ0N9IgorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vc3JjL21ha2VndWlkcyAke0R9JHtiaW5kaXJ9L21ha2VndWlkcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1jaDM0MWFfc3BpLUF2b2lkLWRlcHJlY2F0ZWQtbGlidXNiLWZ1bmN0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb20vMDAwMS1jaDM0MWFfc3BpLUF2b2lkLWRlcHJlY2F0ZWQtbGlidXNiLWZ1bmN0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjgwMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLWNoMzQxYV9zcGktQXZvaWQtZGVwcmVjYXRlZC1saWJ1c2ItZnVuY3Rpb25zLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZTVmNjgxODlhYjM2MDJiMTA0MmNjODQyM2ZkNmEzYTIzYWJkNTQ1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggSmFtZXMgPHRoZXJhY2VybWFzdGVyQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTQgQXByIDIwMTggMjI6NTk6NTcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gY2gzNDFhX3NwaTogQXZvaWQgZGVwcmVjYXRlZCBsaWJ1c2IgZnVuY3Rpb25zCisKK2xpYnVzYiAxLjAuMjIgbWFya2VkIGxpYnVzYl9zZXRfZGVidWcgYXMgZGVwcmVjYXRlZC4gRm9yIHN1Y2ggdmVyc2lvbnMKK29mIGxpYnVzYiwgdXNlIGxpYnVzYl9zZXRfb3B0aW9uIGluc3RlYWQuCisKK0NoYW5nZS1JZDogSWI3MWViZTgxMjMxNmVhZjQ5MTM2OTc5YTk0MmE5NDZlZjllNGQ0ODcKK1NpZ25lZC1vZmYtYnk6IEFsZXggSmFtZXMgPHRoZXJhY2VybWFzdGVyQGdtYWlsLmNvbT4KK1Jldmlld2VkLW9uOiBodHRwczovL3Jldmlldy5jb3JlYm9vdC5vcmcvMjU2ODEKK1Rlc3RlZC1ieTogTmljbyBIdWJlciA8bmljby5oQGdteC5kZT4KK1Jldmlld2VkLWJ5OiBEYXZpZCBIZW5kcmlja3MgPGRhdmlkLmhlbmRyaWNrc0BnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyBjaDM0MWFfc3BpLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jaDM0MWFfc3BpLmMgYi9jaDM0MWFfc3BpLmMKK2luZGV4IDZlYjI4MDQuLmQ4ODA1MTAgMTAwNjQ0CistLS0gYS9jaDM0MWFfc3BpLmMKKysrKyBiL2NoMzQxYV9zcGkuYworQEAgLTQ0NCw3ICs0NDQsMTIgQEAgaW50IGNoMzQxYV9zcGlfaW5pdCh2b2lkKQorIAkJcmV0dXJuIC0xOworIAl9CisgCistCWxpYnVzYl9zZXRfZGVidWcoTlVMTCwgMyk7IC8vIEVuYWJsZSBpbmZvcm1hdGlvbiwgd2FybmluZyBhbmQgZXJyb3IgbWVzc2FnZXMgKG9ubHkpLgorKwkvKiBFbmFibGUgaW5mb3JtYXRpb24sIHdhcm5pbmcsIGFuZCBlcnJvciBtZXNzYWdlcyAob25seSkuICovCisrI2lmIExJQlVTQl9BUElfVkVSU0lPTiA8IDB4MDEwMDAxMDYKKysJbGlidXNiX3NldF9kZWJ1ZyhOVUxMLCAzKTsKKysjZWxzZQorKwlsaWJ1c2Jfc2V0X29wdGlvbihOVUxMLCBMSUJVU0JfT1BUSU9OX0xPR19MRVZFTCwgTElCVVNCX0xPR19MRVZFTF9JTkZPKTsKKysjZW5kaWYKKyAKKyAJdWludDE2X3QgdmlkID0gZGV2c19jaDM0MWFfc3BpWzBdLnZlbmRvcl9pZDsKKyAJdWludDE2X3QgcGlkID0gZGV2c19jaDM0MWFfc3BpWzBdLmRldmljZV9pZDsKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjAuYmIKaW5kZXggOWVhYzg3Ni4uMWMxNzI0NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjAuYmIKQEAgLTgsNiArOCw3IEBACiBTUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWQuZmxhc2hyb20ub3JnL3JlbGVhc2VzL2ZsYXNocm9tLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vc3N0MjYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wbGF0Zm9ybS1BZGQtcmlzY3YtdG8ta25vd24tcGxhdGZvcm1zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2gzNDFhX3NwaS1Bdm9pZC1kZXByZWNhdGVkLWxpYnVzYi1mdW5jdGlvbnMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiNDJkOTk5OTkwYzczNWQ4ODY1MzYyN2NlZmNjMTNiOWEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzcwMmZhMjE1YmE1ZmI1YWY4ZTU0Yzg1MmQyMzk4OTljZmExMzg5MTk0YzFlNTFjYjJhMTcwYzRkYzlkZWU2NCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNC4wLmJiCmluZGV4IDQ1NGE2OWYuLmZmYWI1ZDYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy40LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29yc18zLjQuMC5iYgpAQCAtMTYsNiArMTYsMTQgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxZTlmMTE3Y2JmYTExYmUxOTU1YWRjOTZkZjcxZWFkYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMzM0YzFjMmIwNmY3MjkwZTNlNjZiZGFlMzMwYTVkMzYwNTQ3MDFmZmQ0N2E1ZGRlN2EwNmY5YTc0MDJjYjRlIgogCisjIEl0IGlzIHVzaW5nICctJyBidXQgbm90ICcuJyBhcyBkZWxpbWl0ZXIgZm9yIHRoZSB2ZXJzaW9uIGluIHRoZSByZWxlYXNlcyBwYWdlLAorIyB3aGljaCBjYXVzZXMgdGhlIHZlcnNpb24gY29tcGFyaXNvbiB1bm1hdGNoZWQuCisjVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncm9lY2svbG0tc2Vuc29ycy9yZWxlYXNlcyIKKworUkVDSVBFX1VQU1RSRUFNX1ZFUlNJT04gPSAiMy40LjAiCitSRUNJUEVfVVBTVFJFQU1fREFURSA9ICJKdW4gMjUsIDIwMTUiCitDSEVDS19EQVRFID0gIk1heSAyOCwgMjAxOCIKKwogaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCkBAIC02OCwxNCArNzYsMTYgQEAKICAgICBmaQogfQogCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICIke1BOfS1saWJzZW5zb3JzLWRiZyAke1BOfS1zZW5zb3JzLWRiZyAke1BOfS1zZW5zb3JkLWRiZyAke1BOfS1pc2F0b29scy1kYmciCisKICMgbGlic2Vuc29ycyBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnNlbnNvcnMgJHtQTn0tbGlic2Vuc29ycy1kYmcgJHtQTn0tbGlic2Vuc29ycy1kZXYgJHtQTn0tbGlic2Vuc29ycy1zdGF0aWNkZXYgJHtQTn0tbGlic2Vuc29ycy1kb2MiCitQQUNLQUdFUyA9KyAiJHtQTn0tbGlic2Vuc29ycyAke1BOfS1saWJzZW5zb3JzLWRldiAke1BOfS1saWJzZW5zb3JzLXN0YXRpY2RldiAke1BOfS1saWJzZW5zb3JzLWRvYyIKIAogIyBzZW5zb3JzIGNvbW1hbmQgcGFja2FnZXMKLVBBQ0tBR0VTID0rICIke1BOfS1zZW5zb3JzICR7UE59LXNlbnNvcnMtZGJnICR7UE59LXNlbnNvcnMtZG9jIgorUEFDS0FHRVMgPSsgIiR7UE59LXNlbnNvcnMgJHtQTn0tc2Vuc29ycy1kb2MiCiAKICMgc2Vuc29yZCBsb2dnaW5nIGRhZW1vbgotUEFDS0FHRVMgPSsgIiR7UE59LXNlbnNvcmQgJHtQTn0tc2Vuc29yZC1kYmcgJHtQTn0tc2Vuc29yZC1kb2MiCitQQUNLQUdFUyA9KyAiJHtQTn0tc2Vuc29yZCAke1BOfS1zZW5zb3JkLWRvYyIKIAogIyBmYW5jb250cm9sIHNjcmlwdAogUEFDS0FHRVMgPSsgIiR7UE59LWZhbmNvbnRyb2wgJHtQTn0tZmFuY29udHJvbC1kb2MiCkBAIC05MCwxMSArMTAwLDExIEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tcHdtY29uZmlnICR7UE59LXB3bWNvbmZpZy1kb2MiCiAKICMgaXNhZHVtcCBhbmQgaXNhc2V0IGhlbHBlciBwcm9ncmFtCi1QQUNLQUdFUyA9KyAiJHtQTn0taXNhdG9vbHMgJHtQTn0taXNhdG9vbHMtZGJnICR7UE59LWlzYXRvb2xzLWRvYyIKK1BBQ0tBR0VTID0rICIke1BOfS1pc2F0b29scyAke1BOfS1pc2F0b29scy1kb2MiCisKIAogIyBsaWJzZW5zb3JzIGZpbGVzCiBGSUxFU18ke1BOfS1saWJzZW5zb3JzID0gIiR7bGliZGlyfS9saWJzZW5zb3JzLnNvLiogJHtzeXNjb25mZGlyfS9zZW5zb3JzMy5jb25mICR7c3lzY29uZmRpcn0vc2Vuc29ycy5kIgotRklMRVNfJHtQTn0tbGlic2Vuc29ycy1kYmcgPSAiJHtsaWJkaXJ9Ly5kZWJ1ZyAke3ByZWZpeH0vc3JjL2RlYnVnIgogRklMRVNfJHtQTn0tbGlic2Vuc29ycy1kZXYgPSAiJHtsaWJkaXJ9L2xpYnNlbnNvcnMuc28gJHtpbmNsdWRlZGlyfSIKIEZJTEVTXyR7UE59LWxpYnNlbnNvcnMtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJzZW5zb3JzLmEiCiBGSUxFU18ke1BOfS1saWJzZW5zb3JzLWRvYyA9ICIke21hbmRpcn0vbWFuMyIKQEAgLTEwMiwxMyArMTEyLDExIEBACiAKICMgc2Vuc29ycyBjb21tYW5kIGZpbGVzCiBGSUxFU18ke1BOfS1zZW5zb3JzID0gIiR7YmluZGlyfS9zZW5zb3JzIgotRklMRVNfJHtQTn0tc2Vuc29ycy1kYmcgPSAiJHtiaW5kaXJ9Ly5kZWJ1Zy9zZW5zb3JzIgogRklMRVNfJHtQTn0tc2Vuc29ycy1kb2MgPSAiJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCiBSREVQRU5EU18ke1BOfS1zZW5zb3JzID0gIiR7UE59LWxpYnNlbnNvcnMiCiAKICMgc2Vuc29yZCBsb2dnaW5nIGRhZW1vbgogRklMRVNfJHtQTn0tc2Vuc29yZCA9ICIke3NiaW5kaXJ9L3NlbnNvcmQgJHtzeXNjb25mZGlyfS9pbml0LmQvc2Vuc29yZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlbnNvcmQuc2VydmljZSIKLUZJTEVTXyR7UE59LXNlbnNvcmQtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvc2Vuc29yZCIKIEZJTEVTXyR7UE59LXNlbnNvcmQtZG9jID0gIiR7bWFuZGlyfS9tYW44L3NlbnNvcmQuOCIKIFJERVBFTkRTXyR7UE59LXNlbnNvcmQgPSAiJHtQTn0tc2Vuc29ycyBycmR0b29sIgogUlJFQ09NTUVORFNfJHtQTn0tc2Vuc29yZCA9ICJsbXNlbnNvcnMtY29uZmlnLXNlbnNvcmQiCkBAIC0xMzYsNSArMTQ0LDQgQEAKIAogIyBpc2FkdW1wIGFuZCBpc2FzZXQgaGVscGVyIHByb2dyYW0gZmlsZXMKIEZJTEVTXyR7UE59LWlzYXRvb2xzID0gIiR7c2JpbmRpcn0vaXNhKiIKLUZJTEVTXyR7UE59LWlzYXRvb2xzLWRiZyA9ICIke3NiaW5kaXJ9Ly5kZWJ1Zy9pc2EqIgogRklMRVNfJHtQTn0taXNhdG9vbHMtZG9jID0gIiR7bWFuZGlyfS9tYW44L2lzYSoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sc3NjaS9sc3Njc2lfMC4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI4Y2JhZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NpL2xzc2NzaV8wLjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgbHNzY3NpIGNvbW1hbmQgbGlzdHMgaW5mb3JtYXRpb24gYWJvdXQgU0NTSSBkZXZpY2VzIGluIExpbnV4IgotSE9NRVBBR0UgPSAiaHR0cDovL3NnLmRhbm55LmN6L3Njc2kvbHNzY3NpLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyIgotU0VDVElPTiA9ICJiYXNlIgotTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zY3NpLyR7QlB9LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRhMzllM2IwOWNkNDIyZTJjYWUzZWRiYWY1NmIzMTc2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyNWQwMDlhMWFmNDJiYzViMmZjYTY2NGM0NGM5ZWNkZmQ3NTQzNTZlNGE0NGY1YzZhY2VkMjQyMGFmYWRkNTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NzaS9sc3Njc2lfMC4zMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbHNzY3NpL2xzc2NzaV8wLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMzRjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xzc2NzaS9sc3Njc2lfMC4zMC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlRoZSBsc3Njc2kgY29tbWFuZCBsaXN0cyBpbmZvcm1hdGlvbiBhYm91dCBTQ1NJIGRldmljZXMgaW4gTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2NzaS9sc3Njc2kuaHRtbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitTRUNUSU9OID0gImJhc2UiCitMSUNfRklMRVNfQ0hLU1VNPSJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NnLmRhbm55LmN6L3Njc2kvJHtCUH0udGd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjk4YTcwMGNkNTBiYjRiZTEzODJkNjE4ZjdiMDM4ZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjE5YTIxODc0MDVmMDJjNWY1NzY4MmYzNDc4YmZmYzc1MzI2ODAzY2QwODgzOWUzOWQ0MzQyNTBjNTUxOGIxNSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUyA9ICIke1dPUktESVJ9L2xzc2NzaS0wMzByMTU0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9maWxlcy8wMDAxLU1ha2VmaWxlLWZpeC1iYXNoLWNvbXBsZXRpb24taW5zdGFsbC1wYXRoLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9maWxlcy8wMDAxLU1ha2VmaWxlLWZpeC1iYXNoLWNvbXBsZXRpb24taW5zdGFsbC1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NGUxNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL252bWUtY2xpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtZml4LWJhc2gtY29tcGxldGlvbi1pbnN0YWxsLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBlZjY0MDMyYjM0MTkwMDc5YWFiNTkxYzY0YTI1Zjc1MzVhOTc3MzkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RlZmFuIFdpZWhsZXIgPHN0ZWZhbi53aWVobGVyQG1pc3NpbmdsaW5rZWxlY3Ryb25pY3MuY29tPgorRGF0ZTogVHVlLCA5IE9jdCAyMDE4IDExOjI2OjM0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBmaXggYmFzaCBjb21wbGV0aW9uIGluc3RhbGwgcGF0aAorCitDaGFuZ2UgcGF0aCB0byBiYXNoLWNvbXBsZXRpb24gdXBzdHJlYW0gcmVjb21tZW5kYXRpb24gdXNlZCBieSBtb3N0CitkaXN0cmlidXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCisKK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBXaWVobGVyIDxzdGVmYW4ud2llaGxlckBtaXNzaW5nbGlua2VsZWN0cm9uaWNzLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGZhNTg3ZGQuLjQzM2JjNDEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC02OSw4ICs2OSw4IEBAIGluc3RhbGwtYmluOiBkZWZhdWx0CisgCSQoSU5TVEFMTCkgLW0gNzU1IG52bWUgJChERVNURElSKSQoU0JJTkRJUikKKyAKKyBpbnN0YWxsLWJhc2gtY29tcGxldGlvbjoKKy0JJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL2Jhc2hfY29tcGxldGlvbi5kCistCSQoSU5TVEFMTCkgLW0gNjQ0IC1UIC4vY29tcGxldGlvbnMvYmFzaC1udm1lLWNvbXBsZXRpb24uc2ggJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9iYXNoX2NvbXBsZXRpb24uZC9udm1lCisrCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMKKysJJChJTlNUQUxMKSAtbSA2NDQgLVQgLi9jb21wbGV0aW9ucy9iYXNoLW52bWUtY29tcGxldGlvbi5zaCAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy9udm1lCisgCisgaW5zdGFsbDogaW5zdGFsbC1iaW4gaW5zdGFsbC1tYW4gaW5zdGFsbC1iYXNoLWNvbXBsZXRpb24KKyAKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL252bWUtY2xpL252bWUtY2xpXzEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjdlNmNkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJOVk1lIG1hbmFnZW1lbnQgY29tbWFuZCBsaW5lIGludGVyZmFjZSIKK0FVVEhPUiA9ICJTdGVmYW4gV2llaGxlciA8c3RlZmFuLndpZWhsZXJAbWlzc2luZ2xpbmtlbGVjdHJvbmljcy5jb20+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LW52bWUvbnZtZS1jbGkiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODI2NDUzNWMwYzRlOWM2YzMzNTYzNWM0MDI2YTgwMjIiCitERVBFTkRTID0gInV0aWwtbGludXgiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1maXgtYmFzaC1jb21wbGV0aW9uLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI2NDJkNDI2ZmFmOGE2N2VkMDFlOTBmN2MzNWMwZDk2N2Y4Y2M1MmEzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGJhc2gtY29tcGxldGlvbgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9sZXhfc3lzX3R5cGVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy9sZXhfc3lzX3R5cGVzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMtMDE4L2xleF9zeXNfdHlwZXMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMvbGV4X3N5c190eXBlcy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9tYWtlZmlsZV9maXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzL21ha2VmaWxlX2ZpeC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLTAxOC9tYWtlZmlsZV9maXgucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMvbWFrZWZpbGVfZml4LnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMtMDE4L21ha2VmaWxlX3JhY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzL21ha2VmaWxlX3JhY2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy0wMTgvbWFrZWZpbGVfcmFjZS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlscy9tYWtlZmlsZV9yYWNlLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHNfMDE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDY0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkxpbnV4IGtlcm5lbCB1c2VybGFuZCB1dGlsaXRpZXMgZm9yIHRoZSBQQ01DSUEgc3Vic3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL3BjbWNpYS8iCitTRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitERVBFTkRTID0gInVkZXYgc3lzZnN1dGlscyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJ1ZGV2IG1vZHVsZS1pbml0LXRvb2xzIgorCitQUiA9ICJyMSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9wY21jaWEvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlX2ZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZV9yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xleF9zeXNfdHlwZXMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODg1NDMxYzNjZWZiNzZmZmRhZDhjYjk4NTEzNGU5OTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdjMjdiZThmMDRlZjRkNTM1YmNmYTk4ODU2NzMxNmNjNTc2NTlmZTY5MDY4MzI3NDg2ZGFiNTM3OTFlNjU1OCIKKworaW5oZXJpdCBwa2djb25maWcKKworZXhwb3J0IEhPU1RDQyA9ICIke0JVSUxEX0NDfSIKK2V4cG9ydCBldGNkaXIgPSAiJHtzeXNjb25mZGlyfSIKK2V4cG9ydCBzYmluZGlyID0gIiR7YmFzZV9zYmluZGlyfSIKK2V4cG9ydCBwY21jaWFjb25mZGlyID0gIiR7c3lzY29uZmRpcn0vcGNtY2lhIgorZXhwb3J0IHVkZXZkaXIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorZXhwb3J0IHVkZXZydWxlc2RpciA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCIKK2V4cG9ydCBVREVWID0gIjEiCitMRCA9ICIke0NDfSIKK0NGTEFHUyA9KyAiLUkke1N9L3NyYyIKK0NGTEFHUyA9KyAiLURQQ01DSUFVVElMU19WRVJTSU9OPVxcIiR7UFZ9XFwiIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgJ1NUUklQPWVjaG8nICdMSUJfT0JKUz0tbGMgLWxzeXNmcycgJ0xFWD1mbGV4JyIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9wY21jaWEvY29uZmlnLm9wdHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZC9ob3N0YXBkLUNWRS0yMDE4LTE0NTI2LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvaG9zdGFwZC1DVkUtMjAxOC0xNDUyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjJmYzM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvaG9zdGFwZC1DVkUtMjAxOC0xNDUyNi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitob3N0YXBkLTIuNjogRml4IENWRS0yMDE4LTE0NTI2CisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly93MS5maS9zZWN1cml0eS8yMDE4LTEvdW5hdXRoZW50aWNhdGVkLWVhcG9sLWtleS1kZWNyeXB0aW9uLnR4dAorCit3cGE6IElnbm9yZSB1bmF1dGhlbnRpY2F0ZWQgZW5jcnlwdGVkIEVBUE9MLUtleSBkYXRhCisKK0lnbm9yZSB1bmF1dGhlbnRpY2F0ZWQgZW5jcnlwdGVkIEVBUE9MLUtleSBkYXRhIGluIHN1cHBsaWNhbnQKK3Byb2Nlc3NpbmcuIFdoZW4gdXNpbmcgV1BBMiwgdGhlc2UgYXJlIGZyYW1lcyB0aGF0IGhhdmUgdGhlIEVuY3J5cHRlZAorZmxhZyBzZXQsIGJ1dCBub3QgdGhlIE1JQyBmbGFnLgorCitXaGVuIHVzaW5nIFdQQTIsIEVBUE9MLUtleSBmcmFtZXMgdGhhdCBoYWQgdGhlIEVuY3J5cHRlZCBmbGFnIHNldCBidXQKK25vdCB0aGUgTUlDIGZsYWcsIGhhZCB0aGVpciBkYXRhIGZpZWxkIGRlY3J5cHRlZCB3aXRob3V0IGZpcnN0IHZlcmlmeWluZwordGhlIE1JQy4gSW4gY2FzZSB0aGUgZGF0YSBmaWVsZCB3YXMgZW5jcnlwdGVkIHVzaW5nIFJDNCAoaS5lLiwgd2hlbgorbmVnb3RpYXRpbmcgVEtJUCBhcyB0aGUgcGFpcndpc2UgY2lwaGVyKSwgdGhpcyBtZWFudCB0aGF0Cit1bmF1dGhlbnRpY2F0ZWQgYnV0IGRlY3J5cHRlZCBkYXRhIHdvdWxkIHRoZW4gYmUgcHJvY2Vzc2VkLiBBbiBhZHZlcnNhcnkKK2NvdWxkIGFidXNlIHRoaXMgYXMgYSBkZWNyeXB0aW9uIG9yYWNsZSB0byByZWNvdmVyIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgoraW4gdGhlIGRhdGEgZmllbGQgb2YgRUFQT0wtS2V5IG1lc3NhZ2VzIChlLmcuLCB0aGUgZ3JvdXAga2V5KS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly93MS5maS9jZ2l0L2hvc3RhcC9jb21taXQvc3JjL3Jzbl9zdXBwL3dwYS5jP2lkPTNlMzRjZmRmZjZiMTkyZmUzMzdjNmZiM2Y0ODdmNzNlOTY1ODI5NjFdCitDVkU6IENWRS0yMDE4LTE0NTI2CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL3NyYy9yc25fc3VwcC93cGEuYyBiL3NyYy9yc25fc3VwcC93cGEuYworaW5kZXggM2M0Nzg3OS4uNmJkZjkyMyAxMDA2NDQKKy0tLSBhL3NyYy9yc25fc3VwcC93cGEuYworKysrIGIvc3JjL3Jzbl9zdXBwL3dwYS5jCitAQCAtMjAxNiw2ICsyMDE2LDE3IEBAIGludCB3cGFfc21fcnhfZWFwb2woc3RydWN0IHdwYV9zbSAqc20sIGNvbnN0IHU4ICpzcmNfYWRkciwKKworIAlpZiAoKHNtLT5wcm90byA9PSBXUEFfUFJPVE9fUlNOIHx8IHNtLT5wcm90byA9PSBXUEFfUFJPVE9fT1NFTikgJiYKKyAJICAgIChrZXlfaW5mbyAmIFdQQV9LRVlfSU5GT19FTkNSX0tFWV9EQVRBKSkgeworKwkJLyoKKysJCSAqIE9ubHkgZGVjcnlwdCB0aGUgS2V5IERhdGEgZmllbGQgaWYgdGhlIGZyYW1lJ3MgYXV0aGVudGljaXR5CisrCQkgKiB3YXMgdmVyaWZpZWQuIFdoZW4gdXNpbmcgQUVTLVNJViAoRklMUyksIHRoZSBNSUMgZmxhZyBpcyBub3QKKysJCSAqIHNldCwgc28gdGhpcyBjaGVjayBzaG91bGQgb25seSBiZSBwZXJmb3JtZWQgaWYgbWljX2xlbiAhPSAwCisrCQkgKiB3aGljaCBpcyB0aGUgY2FzZSBpbiB0aGlzIGNvZGUgYnJhbmNoLgorKwkJICovCisrCQlpZiAoIShrZXlfaW5mbyAmIFdQQV9LRVlfSU5GT19NSUMpKSB7CisrCQkJd3BhX21zZyhzbS0+Y3R4LT5tc2dfY3R4LCBNU0dfV0FSTklORywKKysJCQkJIldQQTogSWdub3JlIEVBUE9MLUtleSB3aXRoIGVuY3J5cHRlZCBidXQgdW5hdXRoZW50aWNhdGVkIGRhdGEiKTsKKysJCQlnb3RvIG91dDsKKysJCX0KKyAJCWlmICh3cGFfc3VwcGxpY2FudF9kZWNyeXB0X2tleV9kYXRhKHNtLCBrZXksIHZlciwga2V5X2RhdGEsCisgCQkJCQkJICAgICZrZXlfZGF0YV9sZW4pKQorIAkJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGRfMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGRfMi42LmJiCmluZGV4IDI1MGFkZDguLjQyYWFlNDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjYuYmIKQEAgLTE4LDYgKzE4LDcgQEAKICAgICBmaWxlOi8vMDAwNS1GaXgtUFRLLXJla2V5aW5nLXRvLWdlbmVyYXRlLWEtbmV3LUFOb25jZS5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDYtVERMUy1SZWplY3QtVFBLLVRLLXJlY29uZmlndXJhdGlvbi5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDctRlQtRG8tbm90LWFsbG93LW11bHRpcGxlLVJlYXNzb2NpYXRpb24tUmVzcG9uc2UtZnJhbS5wYXRjaCBcCisgICAgZmlsZTovL2hvc3RhcGQtQ1ZFLTIwMTgtMTQ1MjYucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZWFhNTZkY2U5YmQ4ZjFkMTk1ZWI2MjU5NmVhYjM0YzciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE2LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE2LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3NDhjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuMS5iYgpAQCAtMCwwICsxLDE4OCBAQAorU1VNTUFSWSA9ICJBIG5ldHdvcmsgYXV0aGVudGljYXRpb24gcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJLZXJiZXJvcyBpcyBhIHN5c3RlbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMgYW5kIHNlcnZpY2VzIG9uIGEgbmV0d29yay4gXAorIEtlcmJlcm9zIGlzIGEgdHJ1c3RlZCB0aGlyZC1wYXJ0eSBzZXJ2aWNlLiAgVGhhdCBtZWFucyB0aGF0IHRoZXJlIGlzIGEgXAorIHRoaXJkIHBhcnR5ICh0aGUgS2VyYmVyb3Mgc2VydmVyKSB0aGF0IGlzIHRydXN0ZWQgYnkgYWxsIHRoZSBlbnRpdGllcyBvbiBcCisgdGhlIG5ldHdvcmsgKHVzZXJzIGFuZCBzZXJ2aWNlcywgdXN1YWxseSBjYWxsZWQgInByaW5jaXBhbHMiKS4gXAorIC4gXAorIFRoaXMgaXMgdGhlIE1JVCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgS2VyYmVyb3MgVjUuIFwKKyAuIFwKKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIEtlcmJlcm9zIGtleSBzZXJ2ZXIgKEtEQykuICBUaGUgS0RDIG1hbmFnZXMgYWxsIFwKKyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBmb3IgYSBLZXJiZXJvcyByZWFsbSwgaG9sZHMgdGhlIG1hc3RlciBrZXlzIFwKKyBmb3IgdGhlIHJlYWxtLCBhbmQgcmVzcG9uZHMgdG8gYXV0aGVudGljYXRpb24gcmVxdWVzdHMuICBUaGlzIHBhY2thZ2UgXAorIHNob3VsZCBiZSBpbnN0YWxsZWQgb24gYm90aCBtYXN0ZXIgYW5kIHNsYXZlIEtEQ3MuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd2ViLm1pdC5lZHUvS2VyYmVyb3MvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vLi4vTk9USUNFO21kNT03Zjk1YmMzZDhkMDM1MWFhNDgxZDU2ZDVlOWRlMjBjMyIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIG5jdXJzZXMgdXRpbC1saW51eCBlMmZzcHJvZ3MgZTJmc3Byb2dzLW5hdGl2ZSBvcGVuc3NsIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHBlcmxuYXRpdmUgc3lzdGVtZCB1cGRhdGUtcmMuZAorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICJodHRwOi8vd2ViLm1pdC5lZHUva2VyYmVyb3MvZGlzdC8ke0JQTn0vJHtTSFJUX1ZFUn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWNsb2NhbC1BZGQtcGFyYW1ldGVyLXRvLWRpc2FibGUta2V5dXRpbHMtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi1zdXBwcmVzcy11c3ItbGliLWluLWtyYjUtY29uZmlnLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zc2NvbXBpbGVfbm0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXRjL2luaXQuZC9rcmI1LWtkYyBcCisgICAgICAgICAgIGZpbGU6Ly9ldGMvaW5pdC5kL2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9kZWZhdWx0L2tyYjUta2RjIFwKKyAgICAgICAgICAgZmlsZTovL2V0Yy9kZWZhdWx0L2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL2tyYjUta2RjLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiODQ4ZTliODBkNmFhYWE3OThlM2YzZGYyNGI4M2M0MDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE0ZmZlMzk0ZTNhZDBjNzMwNTY0MDc0ZWM0NGYxZGExMTkxNTlkOTQyODFiYmVjNTQxZGMyOTE2OGQyMTExNyIKKworQ1ZFX1BST0RVQ1QgPSAia2VyYmVyb3MiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQfS9zcmMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1saWJlZGl0LC0td2l0aG91dC1saWJlZGl0LGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1jcnlwdG8taW1wbD1vcGVuc3NsLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trZXl1dGlsc10gPSAiLS1lbmFibGUta2V5dXRpbHMsLS1kaXNhYmxlLWtleXV0aWxzLGtleXV0aWxzIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCisKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10Y2wgLS13aXRoLXN5c3RlbS1ldCAtLWRpc2FibGUtcnBhdGgiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAia3JiNV9jdl9hdHRyX2NvbnN0cnVjdG9yX2Rlc3RydWN0b3I9eWVzIGFjX2N2X2Z1bmNfcmVnY29tcD15ZXMgXAorICAgICAgICAgICAgICAgICAgYWNfY3ZfcHJpbnRmX3Bvc2l0aW9uYWw9eWVzIGFjX2N2X2ZpbGVfX2V0Y19lbnZpcm9ubWVudD15ZXMgXAorICAgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZXRjX1RJTUVaT05FPW5vIgorCitDRkxBR1NfYXBwZW5kID0gIiAtZlBJQyAtRERFU1RSVUNUT1JfQVRUUl9XT1JLUz0xIC1JJHtTVEFHSU5HX0lOQ0RJUn0vZXQiCitDRkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiIC1EX1JFRU5UUkFOVCAtcHRocmVhZCIKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKworZG9fY29uZmlndXJlKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZQorICAgIGF1dG9yZWNvbmYKKyAgICBvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuCisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9zY2xpZW50CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9zaW1fY2xpZW50CisgICAgcm0gLWYgJHtEfSR7YmluZGlyfS91dWNsaWVudAorICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L2tyYjUtc2VuZC1wcgorICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L3NpbV9zZXJ2ZXIKKyAgICBybSAtZiAke0R9JHtzYmluZGlyfS9zc2VydmVyCisgICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0vdXVzZXJ2ZXIKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2V0Yy9pbml0LmQvKiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2V0Yy9kZWZhdWx0LyogJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9rcmI1a2RjIG5vbmUiIFwKKyAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy84N19rcmI1CisKKyAgICAgICAgZWNobyAiUlVOX0tBRE1JTkQ9dHJ1ZSIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIKKyAgICBmaQorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkIC9ydW4va3JiNWtkYyAtIC0gLSAtIiBcCisgICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYKKworICAgICAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ldGMvZGVmYXVsdC8qICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0CisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tyYjUta2RjLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBmaQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgICAke1BOfS1nc3Mtc2FtcGxlcyBcCisgICAgICAgICAgICAgJHtQTn0tazV0bHMgXAorICAgICAgICAgICAgICR7UE59LWtkYyBcCisgICAgICAgICAgICAgJHtQTn0ta2RjLWxkYXAgXAorICAgICAgICAgICAgICR7UE59LWtwcm9wZCBcCisgICAgICAgICAgICAgJHtQTn0tb3RwIFwKKyAgICAgICAgICAgICAke1BOfS1wa2luaXQgXAorICAgICAgICAgICAgICR7UE59LXVzZXIgXAorICAgICAgICAgICAgIGxpYmdzc2FwaS1rcmI1IFwKKyAgICAgICAgICAgICBsaWJnc3NycGMgXAorICAgICAgICAgICAgIGxpYms1Y3J5cHRvIFwKKyAgICAgICAgICAgICBsaWJrYWRtNWNsbnQtbWl0IFwKKyAgICAgICAgICAgICBsaWJrYWRtNXNydi1taXQgXAorICAgICAgICAgICAgIGxpYmtkYjUgXAorICAgICAgICAgICAgIGxpYmtyYWQgXAorICAgICAgICAgICAgIGxpYmtyYjUgXAorICAgICAgICAgICAgIGxpYmtyYjVzdXBwb3J0IFwKKyAgICAgICAgICAgICBsaWJ2ZXJ0byIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9wcmVhdXRoL3Rlc3Quc28iCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZXhhbXBsZXMiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvKi8uZGVidWciCisKK0ZJTEVTXyR7UE59LWFkbWluLXNlcnZlciA9ICIke3NiaW5kaXJ9L2thZG1pbi5sb2NhbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rYWRtaW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2twcm9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tyYjUtYWRtaW4tc2VydmVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWdzcy1zYW1wbGVzID0gIiR7YmluZGlyfS9nc3MtY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZ3NzLXNlcnZlciIKKworRklMRVNfJHtQTn0tazV0bHMgPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy90bHMvazV0bHMuc28iCisKK0ZJTEVTXyR7UE59LWtkYyA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9kYjIuc28gXAorICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0va3JiNWtkYyBcCisgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rZGI1X3V0aWwgXAorICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3Byb3Bsb2cgXAorICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3JiNWtkYyBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kZWZhdWx0L2tyYjUta2RjIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzg3X2tyYjUgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tyYjUta2RjIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQva3JiNS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tyYjUta2RjLnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59LWtkYy1sZGFwID0gIiR7bGliZGlyfS9rcmI1L2xpYmtkYl9sZGFwJHtTT0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9rcmI1L3BsdWdpbnMva2RiL2tsZGFwLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va2RiNV9sZGFwX3V0aWwiCisKK0ZJTEVTXyR7UE59LWtwcm9wZCA9ICIke3NiaW5kaXJ9L2twcm9wZCIKK0ZJTEVTXyR7UE59LW90cCA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3ByZWF1dGgvb3RwLnNvIgorRklMRVNfJHtQTn0tcGtpbml0ID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvcHJlYXV0aC9wa2luaXQuc28iCitGSUxFU18ke1BOfS11c2VyID0gIiR7YmluZGlyfS9rKiIKKworRklMRVNfbGliZ3NzYXBpLWtyYjUgPSAiJHtsaWJkaXJ9L2xpYmdzc2FwaV9rcmI1JHtTT0xJQlN9IgorRklMRVNfbGliZ3NzcnBjID0gIiR7bGliZGlyfS9saWJnc3NycGMke1NPTElCU30iCitGSUxFU19saWJrNWNyeXB0byA9ICIke2xpYmRpcn0vbGliazVjcnlwdG8ke1NPTElCU30iCitGSUxFU19saWJrYWRtNWNsbnQtbWl0ID0gIiR7bGliZGlyfS9saWJrYWRtNWNsbnRfbWl0JHtTT0xJQlN9IgorRklMRVNfbGlia2FkbTVzcnYtbWl0ID0gIiR7bGliZGlyfS9saWJrYWRtNXNydl9taXQke1NPTElCU30iCitGSUxFU19saWJrZGI1ID0gIiR7bGliZGlyfS9saWJrZGI1JHtTT0xJQlN9IgorRklMRVNfbGlia3JhZCA9ICIke2xpYmRpcn0vbGlia3JhZCR7U09MSUJTfSIKK0ZJTEVTX2xpYmtyYjUgPSAiJHtsaWJkaXJ9L2xpYmtyYjUke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2F1dGhkYXRhIFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9saWJrcmI1IgorRklMRVNfbGlia3JiNXN1cHBvcnQgPSAiJHtsaWJkaXJ9L2xpYmtyYjVzdXBwb3J0JHtTT0xJQlN9IgorRklMRVNfbGlidmVydG8gPSAiJHtsaWJkaXJ9L2xpYnZlcnRvJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1rYWRtaW4tc2VydmVyID0gIiR7UE59LWtkYyIKK1JERVBFTkRTXyR7UE59LWtwcm9wZCA9ICIke1BOfS1rZGMiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tYWRtaW4tc2VydmVyICR7UE59LWtkYyIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1hZG1pbi1zZXJ2ZXIgPSAia3JiNS1hZG1pbi1zZXJ2ZXIiCitJTklUU0NSSVBUX05BTUVfJHtQTn0ta2RjID0gImtyYjUta2RjIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWFkbWluLXNlcnZlciAke1BOfS1rZGMiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tYWRtaW4tc2VydmVyID0gImtyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0ta2RjID0gImtyYjUta2RjLnNlcnZpY2UiCisKK3BrZ19wb3N0aW5zdF8ke1BOfS1rZGMgKCkgeworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYKKyAgICAgICAgZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKyAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorICAgICAgICBmaQorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tyYjUva3JiNV8xLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTUyNDBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkva3JiNS9rcmI1XzEuMTYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotU1VNTUFSWSA9ICJBIG5ldHdvcmsgYXV0aGVudGljYXRpb24gcHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJLZXJiZXJvcyBpcyBhIHN5c3RlbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMgYW5kIHNlcnZpY2VzIG9uIGEgbmV0d29yay4gXAotIEtlcmJlcm9zIGlzIGEgdHJ1c3RlZCB0aGlyZC1wYXJ0eSBzZXJ2aWNlLiAgVGhhdCBtZWFucyB0aGF0IHRoZXJlIGlzIGEgXAotIHRoaXJkIHBhcnR5ICh0aGUgS2VyYmVyb3Mgc2VydmVyKSB0aGF0IGlzIHRydXN0ZWQgYnkgYWxsIHRoZSBlbnRpdGllcyBvbiBcCi0gdGhlIG5ldHdvcmsgKHVzZXJzIGFuZCBzZXJ2aWNlcywgdXN1YWxseSBjYWxsZWQgInByaW5jaXBhbHMiKS4gXAotIC4gXAotIFRoaXMgaXMgdGhlIE1JVCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgS2VyYmVyb3MgVjUuIFwKLSAuIFwKLSBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIEtlcmJlcm9zIGtleSBzZXJ2ZXIgKEtEQykuICBUaGUgS0RDIG1hbmFnZXMgYWxsIFwKLSBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBmb3IgYSBLZXJiZXJvcyByZWFsbSwgaG9sZHMgdGhlIG1hc3RlciBrZXlzIFwKLSBmb3IgdGhlIHJlYWxtLCBhbmQgcmVzcG9uZHMgdG8gYXV0aGVudGljYXRpb24gcmVxdWVzdHMuICBUaGlzIHBhY2thZ2UgXAotIHNob3VsZCBiZSBpbnN0YWxsZWQgb24gYm90aCBtYXN0ZXIgYW5kIHNsYXZlIEtEQ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd2ViLm1pdC5lZHUvS2VyYmVyb3MvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vLi4vTk9USUNFO21kNT01OWI4ZGE2NTJmMDcxODZiNDQ3ODJhODQ1NDU3NGYzMCIKLURFUEVORFMgPSAibmN1cnNlcyB1dGlsLWxpbnV4IGUyZnNwcm9ncyBlMmZzcHJvZ3MtbmF0aXZlIG9wZW5zc2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBiaW5jb25maWcgcGVybG5hdGl2ZSBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi1TUkNfVVJJID0gImh0dHA6Ly93ZWIubWl0LmVkdS9rZXJiZXJvcy9kaXN0LyR7QlBOfS8ke1NIUlRfVkVSfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2xvY2FsLUFkZC1wYXJhbWV0ZXItdG8tZGlzYWJsZS1rZXl1dGlscy1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLXN1cHByZXNzLXVzci1saWItaW4ta3JiNS1jb25maWcucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzY29tcGlsZV9ubS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ldGMvaW5pdC5kL2tyYjUta2RjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9pbml0LmQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2RlZmF1bHQva3JiNS1rZGMgXAotICAgICAgICAgICBmaWxlOi8vZXRjL2RlZmF1bHQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8va3JiNS1rZGMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9rcmI1LWFkbWluLXNlcnZlci5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyM2M1ZTlmMDc2NDJkYjRhNjdmN2E1YjYxNjhiMTMxOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYWViMTI1ZjgzYjBmYjRjZGIyZjk5ZjA4ODE0MDYzMWJiNDdkOTc1OTgyZGUwOTU2ZDE4Yzg1ODQyOTY5ZTA4IgotCi1DVkVfUFJPRFVDVCA9ICJrZXJiZXJvcyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlB9L3NyYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLWxpYmVkaXQsLS13aXRob3V0LWxpYmVkaXQsbGliZWRpdCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLWNyeXB0by1pbXBsPW9wZW5zc2wsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2tleXV0aWxzXSA9ICItLWVuYWJsZS1rZXl1dGlscywtLWRpc2FibGUta2V5dXRpbHMsa2V5dXRpbHMiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lLC0td2l0aG91dC1yZWFkbGluZSxyZWFkbGluZSIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRjbCAtLXdpdGgtc3lzdGVtLWV0IC0tZGlzYWJsZS1ycGF0aCIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJrcmI1X2N2X2F0dHJfY29uc3RydWN0b3JfZGVzdHJ1Y3Rvcj15ZXMgYWNfY3ZfZnVuY19yZWdjb21wPXllcyBcCi0gICAgICAgICAgICAgICAgICBhY19jdl9wcmludGZfcG9zaXRpb25hbD15ZXMgYWNfY3ZfZmlsZV9fZXRjX2Vudmlyb25tZW50PXllcyBcCi0gICAgICAgICAgICAgICAgICBhY19jdl9maWxlX19ldGNfVElNRVpPTkU9bm8iCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1mUElDIC1EREVTVFJVQ1RPUl9BVFRSX1dPUktTPTEgLUkke1NUQUdJTkdfSU5DRElSfS9ldCIKLUNGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgLURfUkVFTlRSQU5UIC1wdGhyZWFkIgotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgYXV0b3JlY29uZgotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3NjbGllbnQKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3NpbV9jbGllbnQKLSAgICBybSAtZiAke0R9JHtiaW5kaXJ9L3V1Y2xpZW50Ci0gICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0va3JiNS1zZW5kLXByCi0gICAgcm0gLWYgJHtEfSR7c2JpbmRpcn0vc2ltX3NlcnZlcgotICAgIHJtIC1mICR7RH0ke3NiaW5kaXJ9L3NzZXJ2ZXIKLSAgICBybSAtZiAke0R9JHtzYmluZGlyfS91dXNlcnZlcgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZXRjL2luaXQuZC8qICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZXRjL2RlZmF1bHQvKiAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdAotCi0gICAgICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotICAgICAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2tyYjVrZGMgbm9uZSIgXAotICAgICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzg3X2tyYjUKLQotICAgICAgICBlY2hvICJSVU5fS0FETUlORD10cnVlIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC9rcmI1LWFkbWluLXNlcnZlcgotICAgIGZpCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgICAgIGVjaG8gImQgL3J1bi9rcmI1a2RjIC0gLSAtIC0iIFwKLSAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2tyYjUuY29uZgotCi0gICAgICAgIG1rZGlyIC1wICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2V0Yy9kZWZhdWx0LyogJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tyYjUtYWRtaW4tc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va3JiNS1rZGMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICAgICR7UE59LWdzcy1zYW1wbGVzIFwKLSAgICAgICAgICAgICAke1BOfS1rNXRscyBcCi0gICAgICAgICAgICAgJHtQTn0ta2RjIFwKLSAgICAgICAgICAgICAke1BOfS1rZGMtbGRhcCBcCi0gICAgICAgICAgICAgJHtQTn0ta3Byb3BkIFwKLSAgICAgICAgICAgICAke1BOfS1vdHAgXAotICAgICAgICAgICAgICR7UE59LXBraW5pdCBcCi0gICAgICAgICAgICAgJHtQTn0tdXNlciBcCi0gICAgICAgICAgICAgbGliZ3NzYXBpLWtyYjUgXAotICAgICAgICAgICAgIGxpYmdzc3JwYyBcCi0gICAgICAgICAgICAgbGliazVjcnlwdG8gXAotICAgICAgICAgICAgIGxpYmthZG01Y2xudC1taXQgXAotICAgICAgICAgICAgIGxpYmthZG01c3J2LW1pdCBcCi0gICAgICAgICAgICAgbGlia2RiNSBcCi0gICAgICAgICAgICAgbGlia3JhZCBcCi0gICAgICAgICAgICAgbGlia3JiNSBcCi0gICAgICAgICAgICAgbGlia3JiNXN1cHBvcnQgXAotICAgICAgICAgICAgIGxpYnZlcnRvIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3ByZWF1dGgvdGVzdC5zbyIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9leGFtcGxlcyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy8qLy5kZWJ1ZyIKLQotRklMRVNfJHtQTn0tYWRtaW4tc2VydmVyID0gIiR7c2JpbmRpcn0va2FkbWluLmxvY2FsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2thZG1pbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c2JpbmRpcn0va3Byb3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC9rcmI1LWFkbWluLXNlcnZlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva3JiNS1hZG1pbi1zZXJ2ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0va3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSIKLQotRklMRVNfJHtQTn0tZ3NzLXNhbXBsZXMgPSAiJHtiaW5kaXJ9L2dzcy1jbGllbnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9nc3Mtc2VydmVyIgotCi1GSUxFU18ke1BOfS1rNXRscyA9ICIke2xpYmRpcn0va3JiNS9wbHVnaW5zL3Rscy9rNXRscy5zbyIKLQotRklMRVNfJHtQTn0ta2RjID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMva2RiL2RiMi5zbyBcCi0gICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9rcmI1a2RjIFwKLSAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2tkYjVfdXRpbCBcCi0gICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rcHJvcGxvZyBcCi0gICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rcmI1a2RjIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQva3JiNS1rZGMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvODdfa3JiNSBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva3JiNS1rZGMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9rcmI1LmNvbmYgXAotICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0va3JiNS1rZGMuc2VydmljZSIKLQotRklMRVNfJHtQTn0ta2RjLWxkYXAgPSAiJHtsaWJkaXJ9L2tyYjUvbGlia2RiX2xkYXAke1NPTElCU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9rZGIva2xkYXAuc28gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9rZGI1X2xkYXBfdXRpbCIKLQotRklMRVNfJHtQTn0ta3Byb3BkID0gIiR7c2JpbmRpcn0va3Byb3BkIgotRklMRVNfJHtQTn0tb3RwID0gIiR7bGliZGlyfS9rcmI1L3BsdWdpbnMvcHJlYXV0aC9vdHAuc28iCi1GSUxFU18ke1BOfS1wa2luaXQgPSAiJHtsaWJkaXJ9L2tyYjUvcGx1Z2lucy9wcmVhdXRoL3BraW5pdC5zbyIKLUZJTEVTXyR7UE59LXVzZXIgPSAiJHtiaW5kaXJ9L2sqIgotCi1GSUxFU19saWJnc3NhcGkta3JiNSA9ICIke2xpYmRpcn0vbGliZ3NzYXBpX2tyYjUke1NPTElCU30iCi1GSUxFU19saWJnc3NycGMgPSAiJHtsaWJkaXJ9L2xpYmdzc3JwYyR7U09MSUJTfSIKLUZJTEVTX2xpYms1Y3J5cHRvID0gIiR7bGliZGlyfS9saWJrNWNyeXB0byR7U09MSUJTfSIKLUZJTEVTX2xpYmthZG01Y2xudC1taXQgPSAiJHtsaWJkaXJ9L2xpYmthZG01Y2xudF9taXQke1NPTElCU30iCi1GSUxFU19saWJrYWRtNXNydi1taXQgPSAiJHtsaWJkaXJ9L2xpYmthZG01c3J2X21pdCR7U09MSUJTfSIKLUZJTEVTX2xpYmtkYjUgPSAiJHtsaWJkaXJ9L2xpYmtkYjUke1NPTElCU30iCi1GSUxFU19saWJrcmFkID0gIiR7bGliZGlyfS9saWJrcmFkJHtTT0xJQlN9IgotRklMRVNfbGlia3JiNSA9ICIke2xpYmRpcn0vbGlia3JiNSR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9rcmI1L3BsdWdpbnMvYXV0aGRhdGEgXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2xpYmtyYjUiCi1GSUxFU19saWJrcmI1c3VwcG9ydCA9ICIke2xpYmRpcn0vbGlia3JiNXN1cHBvcnQke1NPTElCU30iCi1GSUxFU19saWJ2ZXJ0byA9ICIke2xpYmRpcn0vbGlidmVydG8ke1NPTElCU30iCi0KLVJERVBFTkRTXyR7UE59LWthZG1pbi1zZXJ2ZXIgPSAiJHtQTn0ta2RjIgotUkRFUEVORFNfJHtQTn0ta3Byb3BkID0gIiR7UE59LWtkYyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1hZG1pbi1zZXJ2ZXIgJHtQTn0ta2RjIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LWFkbWluLXNlcnZlciA9ICJrcmI1LWFkbWluLXNlcnZlciIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1rZGMgPSAia3JiNS1rZGMiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tYWRtaW4tc2VydmVyICR7UE59LWtkYyIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1hZG1pbi1zZXJ2ZXIgPSAia3JiNS1hZG1pbi1zZXJ2ZXIuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1rZGMgPSAia3JiNS1rZGMuc2VydmljZSIKLQotcGtnX3Bvc3RpbnN0XyR7UE59LWtkYyAoKSB7Ci0gICAgaWYgWyAteiAiJEQiIF07IHRoZW4KLSAgICAgICAgaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2tyYjUuY29uZgotICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgotICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCi0gICAgICAgIGZpCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI0LmJiCmluZGV4IDVlMGYzYTUuLmE1ODM4ZDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZXYvbGliZXZfNC4yNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmV2L2xpYmV2XzQuMjQuYmIKQEAgLTksOCArOSw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiOTQ0NTlhNWEyMmRiMDQxZGVjNmY5ODQyNGQ2ZWZlNTQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTczNTkzZDM0NzlhYmRmNjU3Njc0YTU1YWZlNWY3ODYyNGIwZTQ0MDYxNGUyYjhjYjNhMDdmMTZkNGQ3ZjgyMSIKIAotUyA9ICIke1dPUktESVJ9LyR7UE59LSR7UFZ9IgotCiBpbmhlcml0IGF1dG90b29scwogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1waWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmltb2JpbGVkZXZpY2UvZmlsZXMvaW5saW5lLXdpdGhvdXQtZGVmaW5pdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliaW1vYmlsZWRldmljZS9maWxlcy9pbmxpbmUtd2l0aG91dC1kZWZpbml0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTc4OTVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliaW1vYmlsZWRldmljZS9maWxlcy9pbmxpbmUtd2l0aG91dC1kZWZpbml0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRml4IGxpbmsgZXJyb3Igd2l0aCBnY2MgNSB0b29sY2hhaW5zCi0KLSBhZmMuYzoyNTg6IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdkZWJ1Z19idWZmZXInCi0gY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLWRlYnVnLmggaGVhZGVyIHdhcyBkZWNsYXJpbmcgdGhpbmdzIGlubGluZSB3aXRob3V0IHByb3ZpZGluZyBhIGRlZmluaXRpb24uCi1GaWxlcyB0aGF0IGluY2x1ZGVkIHRoaXMgaGVhZGVyIHRoZW4gZmFpbGVkIHRvIGxpbmsgYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZwotZXh0ZXJuYWwgc3ltYm9sIGluIGRlYnVnLmMsIGJlY2F1c2UgdGhlIGxpbmtlciB0b29rIHRoZSAnaW5saW5lJyBrZXl3b3JkCi1zZXJpb3VzbHkgcmF0aGVyIHRoYW4gaWdub3JpbmcgaXQuCi0KLS0tLSBsaWJpbW9iaWxlZGV2aWNlLTEuMS40L3NyYy9kZWJ1Zy5oLm9yaWcJMjAxNS0xMC0wMyAxNjoyNDowOC43NTg3NDAzODYgLTA3MDAKLSsrKyBsaWJpbW9iaWxlZGV2aWNlLTEuMS40L3NyYy9kZWJ1Zy5oCTIwMTUtMTAtMDMgMTY6MjQ6MjIuNzA2NzQwMzU1IC0wNzAwCi1AQCAtNDQsMTQgKzQ0LDE0IEBACi0gI2RlZmluZSBkZWJ1Z19wbGlzdChhKQotICNlbmRpZgotIAotLUxJQklNT0JJTEVERVZJQ0VfSU5URVJOQUwgaW5saW5lIHZvaWQgZGVidWdfaW5mb19yZWFsKGNvbnN0IGNoYXIgKmZ1bmMsCi0rTElCSU1PQklMRURFVklDRV9JTlRFUk5BTCB2b2lkIGRlYnVnX2luZm9fcmVhbChjb25zdCBjaGFyICpmdW5jLAotIAkJCQkJCQkJCQkJY29uc3QgY2hhciAqZmlsZSwKLSAJCQkJCQkJCQkJCWludAlsaW5lLAotIAkJCQkJCQkJCQkJY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwotIAotLUxJQklNT0JJTEVERVZJQ0VfSU5URVJOQUwgaW5saW5lIHZvaWQgZGVidWdfYnVmZmVyKGNvbnN0IGNoYXIgKmRhdGEsIGNvbnN0IGludCBsZW5ndGgpOwotLUxJQklNT0JJTEVERVZJQ0VfSU5URVJOQUwgaW5saW5lIHZvaWQgZGVidWdfYnVmZmVyX3RvX2ZpbGUoY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqZGF0YSwgY29uc3QgaW50IGxlbmd0aCk7Ci0tTElCSU1PQklMRURFVklDRV9JTlRFUk5BTCBpbmxpbmUgdm9pZCBkZWJ1Z19wbGlzdF9yZWFsKGNvbnN0IGNoYXIgKmZ1bmMsCi0rTElCSU1PQklMRURFVklDRV9JTlRFUk5BTCB2b2lkIGRlYnVnX2J1ZmZlcihjb25zdCBjaGFyICpkYXRhLCBjb25zdCBpbnQgbGVuZ3RoKTsKLStMSUJJTU9CSUxFREVWSUNFX0lOVEVSTkFMIHZvaWQgZGVidWdfYnVmZmVyX3RvX2ZpbGUoY29uc3QgY2hhciAqZmlsZSwgY29uc3QgY2hhciAqZGF0YSwgY29uc3QgaW50IGxlbmd0aCk7Ci0rTElCSU1PQklMRURFVklDRV9JTlRFUk5BTCB2b2lkIGRlYnVnX3BsaXN0X3JlYWwoY29uc3QgY2hhciAqZnVuYywKLSAJCQkJCQkJCQkJCWNvbnN0IGNoYXIgKmZpbGUsCi0gCQkJCQkJCQkJCQlpbnQJbGluZSwKLSAJCQkJCQkJCQkJCXBsaXN0X3QgcGxpc3QpOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJpbW9iaWxlZGV2aWNlL2xpYmltb2JpbGVkZXZpY2VfMS4xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmltb2JpbGVkZXZpY2UvbGliaW1vYmlsZWRldmljZV8xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhY2E5Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmltb2JpbGVkZXZpY2UvbGliaW1vYmlsZWRldmljZV8xLjEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwcm90b2NvbCBsaWJyYXJ5IHRvIGFjY2VzcyBhbiBpUGhvbmUgb3IgaVBvZCBUb3VjaCBpbiBMaW51eCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YWIxN2I0MTY0MDU2NDQzNGRkYTg1YzA2YjcxMjRmNyBcCi0iCi0KLUhPTUVQQUdFID0iaHR0cDovL3d3dy5saWJpbW9iaWxlZGV2aWNlLm9yZy8iCi0KLURFUEVORFMgPSAibGlicGxpc3QgdXNibXV4ZCBsaWJ0YXNuMSBnbnV0bHMgbGliZ2NyeXB0IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3d3dy5saWJpbW9iaWxlZGV2aWNlLm9yZy9kb3dubG9hZHMvbGliaW1vYmlsZWRldmljZS0ke1BWfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vY29uZmlndXJlLWZpeC1sYXJnZWZpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly9pbmxpbmUtd2l0aG91dC1kZWZpbml0aW9uLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmMjhjYmM2YTJlMzBkMzQ2ODUwNDljMGFiZGU1MTgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NDk5Y2ZhYTYxNzJmNTY2ZWU2YjA3ODM2MDVhY2ZmZTQ4NGZiN2RkYzNiMDk4ODFhYjdhYzU4NjY3ZWU1YjgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aG91dC1jeXRob24gIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJpbW9iaWxlZGV2aWNlL2xpYmltb2JpbGVkZXZpY2VfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJpbW9iaWxlZGV2aWNlL2xpYmltb2JpbGVkZXZpY2VfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwOGI5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmltb2JpbGVkZXZpY2UvbGliaW1vYmlsZWRldmljZV9naXQuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBIHByb3RvY29sIGxpYnJhcnkgdG8gYWNjZXNzIGFuIGlQaG9uZSBvciBpUG9kIFRvdWNoIGluIExpbnV4IgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWViYjVjNTBhYjdjYWI0YmFlZmZiYTE0OTc3MDMwYzA3IFwKKyAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTZhYjE3YjQxNjQwNTY0NDM0ZGRhODVjMDZiNzEyNGY3IFwKKyIKKworSE9NRVBBR0UgPSJodHRwOi8vd3d3LmxpYmltb2JpbGVkZXZpY2Uub3JnLyIKKworREVQRU5EUyA9ICJsaWJwbGlzdCB1c2JtdXhkIGxpYnVzYm11eGQgbGlidGFzbjEgZ251dGxzIGxpYmdjcnlwdCIKKworU1JDUkVWID0gImZiNzFhZWVmMTA0ODhlZDdiMGU2MGExYzhhNTUzMTkzMzAxNDI4YzAiCitQViA9ICIxLjIuMCtnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vbGliaW1vYmlsZWRldmljZS9saWJpbW9iaWxlZGV2aWNlO3Byb3RvY29sPWh0dHBzIFwKKyAgICBmaWxlOi8vY29uZmlndXJlLWZpeC1sYXJnZWZpbGUucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRob3V0LWN5dGhvbiAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjE0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4OWVmOWQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtYmltL2xpYm1iaW1fMS4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJtYmltIGlzIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IE1CSU0gcHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJsaWJtYmltIGlzIGEgZ2xpYi1iYXNlZCBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYm1iaW0vIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmd1ZGV2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY2xhbmcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjJlZDgwOWU2NWM4NTM1M2QzYWI1OWUzNzI4OTBlNTQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhOGQ1MmE5NWExOGNiYWJhZThmMTVmODNmMTU3MjMxNmU4ODhiNjUwNGY5NDZlNjY0NWQyNDQwNTEyN2FiNWIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI2MGMwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibWJpbS9saWJtYmltXzEuMTYuMC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gImxpYm1iaW0gaXMgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIGRldmljZXMgYnkgTUJJTSBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gImxpYm1iaW0gaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIE1vYmlsZSBJbnRlcmZhY2UgQnJvYWRiYW5kIE1vZGVsIChNQklNKSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlibWJpbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliZ3VkZXYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24KKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNzZlYTRkODM4MTk4OTkxOWIxZDliOTFjODE4ZmVkODAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzhjYTUwYmVlZGRkNGI0MzMwOWRmNWI2OTg5MTcyNjgzMDNiZjE3NmNlYTU4ZmU0ZmU1M2Q1YmYwZTkzZmFjMiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcC8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF8tZGVmaW5pdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5kcC9saWJuZHAvMDAwMS1pbmNsdWRlLXN5cy1zZWxlY3QuaC1mb3ItZmRfLWRlZmluaXRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWFhOTRlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcC8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF8tZGVmaW5pdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1Gcm9tIDk0ZTlhMDgyZDc2NDE0ZjgyNzk0YjBjOTgxN2QwYzI0ZTM4NjgyNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLeWxpZSBNY0NsYWluIDxzb21hc2lzQGV4aGVyYm8ub3JnPgotRGF0ZTogU2F0LCAyMSBNYXkgMjAxNiAyMToyNDozNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBuZHB0b29sOiBGaXggY29tcGlsYXRpb24gb24gbXVzbCBsaWJjCi0KLUZEX1pFUk8sIGZkX3NldCwgZXRjIGFyZSBkZWZpbmVkIHdpdGhpbiBzeXMvc2VsZWN0Lmggb24gbXVzbC4KLQotU2lnbmVkLW9mZi1ieTogS3lsaWUgTWNDbGFpbiA8c29tYXNpc0BleGhlcmJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEppcmkgUGlya28gPGppcmlAbWVsbGFub3guY29tPgotLS0tCi0gdXRpbHMvbmRwdG9vbC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS91dGlscy9uZHB0b29sLmMgYi91dGlscy9uZHB0b29sLmMKLWluZGV4IDFkOTZmNGMuLjk2NDc5ZmEgMTAwNjQ0Ci0tLS0gYS91dGlscy9uZHB0b29sLmMKLSsrKyBiL3V0aWxzL25kcHRvb2wuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPG5kcC5oPgotKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+Ci0gCi0gZW51bSB2ZXJib3NpdHlfbGV2ZWwgewotIAlWRVJCMSwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5kcC9saWJuZHBfMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTQ4Nzk4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIElQdjYgTmVpZ2hib3IgRGlzY292ZXJ5IFByb3RvY29sIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYm5kcC5vcmcvIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vanBpcmtvL2xpYm5kcCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF8tZGVmaW5pdGlvbnMucGF0Y2ggXAotICAgICAgICAgICAiCi0jIHRhZyBmb3IgdjEuNgotU1JDUkVWID0gIjJmNzIxYzRmZjUxOWYzOGY0NjY5NWE2MGQ5ZjlkODhmMzViZjNjMWQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuZHAvbGlibmRwXzEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhN2ExZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibmRwL2xpYm5kcF8xLjcuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBJUHY2IE5laWdoYm9yIERpc2NvdmVyeSBQcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJuZHAub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2pwaXJrby9saWJuZHAgXAorICAgICAgICAgICAiCisjIHRhZyBmb3IgdjEuNgorU1JDUkVWID0gIjk2Njc0ZTdkNGY0ZDU2OWMyYzk2MWU4NjVjYzE2MTUyZGZhYjVmMDkiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuZXQvbGlibmV0XzEuMi1yYzMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5ldC9saWJuZXRfMS4yLXJjMy5iYgppbmRleCBkZmMyMDQ5Li5jOTkxMzQ0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5ldC9saWJuZXRfMS4yLXJjMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5ldC9saWJuZXRfMS4yLXJjMy5iYgpAQCAtMTUsNiArMTUsOSBAQAogU1JDX1VSSVttZDVzdW1dID0gImYwNTFlNmU1YmRlY2RkYjkwZjc3YzcwMWMyY2ExODA0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyYzM4MDc4NWFkNDQxODMwMDVlNjU0YjQ3Y2MxMjQ4NWVlMDIyOGQ3ZmE2YjBhODcxMDlmZjc2MTRiZTRhNjMiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJuZXQtZGV2L2ZpbGVzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYm5ldC0oP1A8cHZlcj5cZCsoXC5cZCspKy0qW2Etel0qXGQqKVwudGFyIgorCiBTID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyBiaW5jb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaS8wMDAxLXFtaS1uZXR3b3JrLURvbi10LWNyZWF0ZS1pbnZhbGlkLXdkcy1zdGFydC1uZXR3b3JrLXcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWkvMDAwMS1xbWktbmV0d29yay1Eb24tdC1jcmVhdGUtaW52YWxpZC13ZHMtc3RhcnQtbmV0d29yay13LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMzBkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWkvMDAwMS1xbWktbmV0d29yay1Eb24tdC1jcmVhdGUtaW52YWxpZC13ZHMtc3RhcnQtbmV0d29yay13LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gODI2OWY0ZDg2OTI3ZmJlMTllNzg3NzZhMTI3MzY2ODBmZTkxNjliNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkcmlhbiBCdW5rIDxidW5rQHN0dXN0YS5kZT4KK0RhdGU6IE1vbiwgMSBPY3QgMjAxOCAxNjo1MzozMSArMDMwMAorU3ViamVjdDogW1BBVENIXSBxbWktbmV0d29yazogRG9uJ3QgY3JlYXRlIGludmFsaWQgLS13ZHMtc3RhcnQtbmV0d29yayB3aGVuCisgQVBOIGlzIG5vdCBzZXQKKworSW4gMS4yMC4yIHRoZSB3YXJuaW5nIGZvciB0aGlzIHdhcyB0dXJuZWQgaW50byBhbiBlcnJvci4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMjg5ZDhhZDY0MTk4OTVlMmUxZmJhM2Q3OGE1NGEwZGI2NWRhNTIxZCkKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgdXRpbHMvcW1pLW5ldHdvcmsuaW4gfCAxMiArKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdXRpbHMvcW1pLW5ldHdvcmsuaW4gYi91dGlscy9xbWktbmV0d29yay5pbgoraW5kZXggYmY3YmVkOS4uYTllNTI5OSAxMDA3NTUKKy0tLSBhL3V0aWxzL3FtaS1uZXR3b3JrLmluCisrKysgYi91dGlscy9xbWktbmV0d29yay5pbgorQEAgLTMzNCwxMSArMzM0LDEzIEBAIHN0YXJ0X25ldHdvcmsgKCkKKyAKKyAgICAgc2V0dXBfZGF0YV9mb3JtYXQKKyAKKy0gICAgU1RBUlRfTkVUV09SS19BUkdTPSJhcG49JyRBUE4nIgorLSAgICBpZiBbIC1uICIkQVBOX1VTRVIiIF07IHRoZW4KKy0gICAgICAgIFNUQVJUX05FVFdPUktfQVJHUz0iJHtTVEFSVF9ORVRXT1JLX0FSR1N9LHVzZXJuYW1lPSckQVBOX1VTRVInIgorLSAgICAgICAgaWYgWyAtbiAiJEFQTl9QQVNTIiBdOyB0aGVuCistICAgICAgICAgICAgU1RBUlRfTkVUV09SS19BUkdTPSIke1NUQVJUX05FVFdPUktfQVJHU30scGFzc3dvcmQ9JyRBUE5fUEFTUyciCisrICAgIGlmIFsgLW4gIiRBUE4iIF07IHRoZW4KKysgICAgICAgIFNUQVJUX05FVFdPUktfQVJHUz0iYXBuPSckQVBOJyIKKysgICAgICAgIGlmIFsgLW4gIiRBUE5fVVNFUiIgXTsgdGhlbgorKyAgICAgICAgICAgIFNUQVJUX05FVFdPUktfQVJHUz0iJHtTVEFSVF9ORVRXT1JLX0FSR1N9LHVzZXJuYW1lPSckQVBOX1VTRVInIgorKyAgICAgICAgICAgIGlmIFsgLW4gIiRBUE5fUEFTUyIgXTsgdGhlbgorKyAgICAgICAgICAgICAgICBTVEFSVF9ORVRXT1JLX0FSR1M9IiR7U1RBUlRfTkVUV09SS19BUkdTfSxwYXNzd29yZD0nJEFQTl9QQVNTJyIKKysgICAgICAgICAgICBmaQorICAgICAgICAgZmkKKyAgICAgZmkKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjIwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMDFjYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAibGlicW1pIGlzIGEgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIGRldmljZXMgYnkgUU1JIHByb3RvY29sIgotREVTQ1JJUFRJT04gPSAibGlicW1pIGlzIGEgZ2xpYi1iYXNlZCBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBRdWFsY29tbSBNU00gSW50ZXJmYWNlIChRTUkpIHByb3RvY29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJxbWkiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJndWRldiBsaWJtYmltIGdsaWItMi4wLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc5N2UzNjU1MjFkZjc2Yjc3YjA2N2U2MzE3NjE4YjQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxNDI4Y2QzNzQ5YzU2MjQ2NTY1MTIzZjcwN2ZlZTUxMjM4NjUxYTIyYzYwYmRjODVlYmNlOTczODg2MjZlYjQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4yMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGJjODFjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjAuMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gImxpYnFtaSBpcyBhIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IFFNSSBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gImxpYnFtaSBpcyBhIGdsaWItYmFzZWQgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlicW1pIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1xbWktbmV0d29yay1Eb24tdC1jcmVhdGUtaW52YWxpZC13ZHMtc3RhcnQtbmV0d29yay13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGV0ZWN0LWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjU4NDIxNDQ3NmFiNzVjMzk0MTYwY2I4NWZiY2NhYTFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MzQ1OWNhOGJmZTEyMTNmODA0Nzg1OGQ0OTQ2ZmMxZjU4ZTE2NGQ0ZjQ4OGE3YTY5MDRlZGVlMjVlMmNhNDQiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IG1iaW0iCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIiwtLXdpdGhvdXQtdWRldixsaWJndWRldiIKK1BBQ0tBR0VDT05GSUdbbWJpbV0gPSAiLS1lbmFibGUtbWJpbS1xbXV4LC0tZGlzYWJsZS1tYmltLXFtdXgsbGlibWJpbSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidG9ycmVudC9saWJ0b3JyZW50L2Rvbi10LXJ1bi1jb2RlLXdoaWxlLWNvbmZpZ3VyaW5nLXBhY2thZ2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnRvcnJlbnQvbGlidG9ycmVudC9kb24tdC1ydW4tY29kZS13aGlsZS1jb25maWd1cmluZy1wYWNrYWdlLnBhdGNoCmluZGV4IDc5ZDRmMjkuLjhkODg2N2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidG9ycmVudC9saWJ0b3JyZW50L2Rvbi10LXJ1bi1jb2RlLXdoaWxlLWNvbmZpZ3VyaW5nLXBhY2thZ2UucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ0b3JyZW50L2xpYnRvcnJlbnQvZG9uLXQtcnVuLWNvZGUtd2hpbGUtY29uZmlndXJpbmctcGFja2FnZS5wYXRjaApAQCAtNCw5MSArNCwyNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiAKLUluZGV4OiBsaWJ0b3JyZW50LTAuMTMuMy9zY3JpcHRzL2NoZWNrcy5tNAorSW5kZXg6IGdpdC9zY3JpcHRzL2NvbW1vbi5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnRvcnJlbnQtMC4xMy4zLm9yaWcvc2NyaXB0cy9jaGVja3MubTQJMjAxMi0wNS0xNCAxNDoxNzowNC4wMDAwMDAwMDAgKzAzMDAKLSsrKyBsaWJ0b3JyZW50LTAuMTMuMy9zY3JpcHRzL2NoZWNrcy5tNAkyMDEzLTAyLTEwIDE1OjI4OjM3LjQxNDQ0NTUyNCArMDIwMAotQEAgLTk1LDQwICs5NSw2IEBACi0KLSBBQ19ERUZVTihbVE9SUkVOVF9DSEVDS19LUVVFVUVfU09DS0VUX09OTFldLCBbCi0gICBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBrcXVldWUgc3VwcG9ydHMgcGlwZXMgYW5kIHB0eXMpCi0tCi0tICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCi0tICAgICAgI2luY2x1ZGUgPGZjbnRsLmg+Ci0tICAgICAgI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0gICAgICAjaW5jbHVkZSA8c3lzL2V2ZW50Lmg+Ci0tICAgICAgI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0tICAgICAgaW50IG1haW4oKSB7Ci0tICAgICAgICBzdHJ1Y3Qga2V2ZW50IGV2QDw6QDJAOj5ALCBldl9vdXRAPDpAMkA6PkA7Ci0tICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHMgPSB7IDAsIDAgfTsKLS0gICAgICAgIGludCBwZmRAPDpAMkA6PkAsIHB0eUA8OkAyQDo+QCwga2ZkLCBuOwotLSAgICAgICAgY2hhciBidWZmZXJAPDpAOTAwMUA6PkA7Ci0tICAgICAgICBpZiAocGlwZShwZmQpID09IC0xKSByZXR1cm4gMTsKLS0gICAgICAgIGlmIChmY250bChwZmRAPDpAMUA6PkAsIEZfU0VURkwsIE9fTk9OQkxPQ0spID09IC0xKSByZXR1cm4gMjsKLS0gICAgICAgIHdoaWxlICgobiA9IHdyaXRlKHBmZEA8OkAxQDo+QCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkpID09IHNpemVvZihidWZmZXIpKTsKLS0gICAgICAgIGlmICgocHR5QDw6QDBAOj5APXBvc2l4X29wZW5wdChPX1JEV1IgfCBPX05PQ1RUWSkpID09IC0xKSByZXR1cm4gMzsKLS0gICAgICAgIGlmICgocHR5QDw6QDFAOj5APWdyYW50cHQocHR5QDw6QDBAOj5AKSkgPT0gLTEpIHJldHVybiA0OwotLSAgICAgICAgRVZfU0VUKGV2KzAsIHBmZEA8OkAxQDo+QCwgRVZGSUxUX1dSSVRFLCBFVl9BREQgfCBFVl9FTkFCTEUsIDAsIDAsIE5VTEwpOwotLSAgICAgICAgRVZfU0VUKGV2KzEsIHB0eUA8OkAxQDo+QCwgRVZGSUxUX1JFQUQsIEVWX0FERCB8IEVWX0VOQUJMRSwgMCwgMCwgTlVMTCk7Ci0tICAgICAgICBpZiAoKGtmZCA9IGtxdWV1ZSgpKSA9PSAtMSkgcmV0dXJuIDU7Ci0tICAgICAgICBpZiAoKG4gPSBrZXZlbnQoa2ZkLCBldiwgMiwgTlVMTCwgMCwgTlVMTCkpID09IC0xKSByZXR1cm4gNjsKLS0gICAgICAgIGlmIChldl9vdXRAPDpAMEA6PkAuZmxhZ3MgJiBFVl9FUlJPUikgcmV0dXJuIDc7Ci0tICAgICAgICBpZiAoZXZfb3V0QDw6QDFAOj5ALmZsYWdzICYgRVZfRVJST1IpIHJldHVybiA4OwotLSAgICAgICAgcmVhZChwZmRAPDpAMEA6PkAsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwotLSAgICAgICAgaWYgKChuID0ga2V2ZW50KGtmZCwgTlVMTCwgMCwgZXZfb3V0LCAyLCAmdHMpKSA8IDEpIHJldHVybiA5OwotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgICAgfQotLSAgICAgIF0pXSwKLS0gICAgWwotLSAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotLSAgICBdLCBbCi0tICAgICAgQUNfREVGSU5FKEtRVUVVRV9TT0NLRVRfT05MWSwgMSwga3F1ZXVlIG9ubHkgc3VwcG9ydHMgc29ja2V0cy4pCi0tICAgICAgQUNfTVNHX1JFU1VMVChubykKLS0gICAgXSkKLSBdKQotCi0gQUNfREVGVU4oW1RPUlJFTlRfV0lUSF9LUVVFVUVdLCBbCi1JbmRleDogbGlidG9ycmVudC0wLjEzLjMvc2NyaXB0cy9jb21tb24ubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ0b3JyZW50LTAuMTMuMy5vcmlnL3NjcmlwdHMvY29tbW9uLm00CTIwMTItMDUtMTQgMTQ6MTc6MDQuMDAwMDAwMDAwICswMzAwCi0rKysgbGlidG9ycmVudC0wLjEzLjMvc2NyaXB0cy9jb21tb24ubTQJMjAxMy0wMi0xMCAxNToyNzo1NS44NzQ0NDY3NDEgKzAyMDAKLUBAIC0yMjIsMzggKzIyMiwxMCBAQAotCistLS0gZ2l0Lm9yaWcvc2NyaXB0cy9jb21tb24ubTQKKysrKyBnaXQvc2NyaXB0cy9jb21tb24ubTQKK0BAIC0xNTMsNyArMTUzLDcgQEAgZG5sICAgTmVlZCB0byBmaXggdGhpcyBzbyB0aGF0IGl0IHVzZXMgdAogIEFDX0RFRlVOKFtUT1JSRU5UX0NIRUNLX0VYRUNJTkZPXSwgWwogICAgQUNfTVNHX0NIRUNLSU5HKGZvciBleGVjaW5mby5oKQotLQotLSAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwotLSAgICAgICNpbmNsdWRlIDxleGVjaW5mby5oPgotLSAgICAgIGludCBtYWluKCkgeyBiYWNrdHJhY2UoKHZvaWQqKikwLCAwKTsgYmFja3RyYWNlX3N5bWJvbHMoKGNoYXIqKikwLCAwKTsgcmV0dXJuIDA7fQotLSAgICAgIF0pXSwKLS0gICAgWwotLSAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotLSAgICAgIEFDX0RFRklORShVU0VfRVhFQ0lORk8sIDEsIFVzZSBleGVjaW5mby5oKQotLSAgICBdLCBbCi0tICAgICAgQUNfTVNHX1JFU1VMVChubykKLS0gIF0pCi0gXSkKLQorIAorLSAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKKysgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCisgICAgICAgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgICAgICAgaW50IG1haW4oKSB7IGJhY2t0cmFjZSgodm9pZCoqKTAsIDApOyBiYWNrdHJhY2Vfc3ltYm9scygoY2hhcioqKTAsIDApOyByZXR1cm4gMDt9CisgICAgICAgXSldLAorQEAgLTE2OCw3ICsxNjgsNyBAQCBBQ19ERUZVTihbVE9SUkVOVF9DSEVDS19FWEVDSU5GT10sIFsKICBBQ19ERUZVTihbVE9SUkVOVF9DSEVDS19BTElHTkVEXSwgWwogICAgQUNfTVNHX0NIRUNLSU5HKHRoZSBieXRlIGFsaWdubWVudCkKLS0KKyAKIC0gIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKLS0gICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLS0gICAgICBpbnQgbWFpbigpIHsKLS0gICAgICAgIGNoYXIgYnVmQDw6QDhAOj5AID0geyAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwIH07Ci0tCWludCBpOwotLSAgICAgICAgZm9yIChpID0gMTsgaSA8IDQ7ICsraSkKLS0JICBpZiAoKih1aW50MzJfdCopKGJ1ZiArIGkpID09IDApIHJldHVybiAtMTsKLS0JcmV0dXJuIDA7Ci0tCX0KLS0gICAgICBdKV0sCi0tICAgIFsKLS0gICAgICBBQ19NU0dfUkVTVUxUKG5vbmUgbmVlZGVkKQotLSAgICBdLCBbCi0tICAgICAgQUNfREVGSU5FKFVTRV9BTElHTkVELCAxLCBSZXF1aXJlIGJ5dGUgYWxpZ25tZW50KQotLSAgICAgIEFDX01TR19SRVNVTFQocmVxdWlyZWQpCi0tICBdKQotIF0pCi0KLQorKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFsKKyAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAgICAgICBpbnQgbWFpbigpIHsKKyAgICAgICAgIGNoYXIgYnVmQDw6QDhAOj5AID0geyAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwIH07CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnRvcnJlbnQvbGlidG9ycmVudF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnRvcnJlbnQvbGlidG9ycmVudF9naXQuYmIKaW5kZXggOTJlNjUyOC4uYjJkZmZjZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ0b3JyZW50L2xpYnRvcnJlbnRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidG9ycmVudC9saWJ0b3JyZW50X2dpdC5iYgpAQCAtMTEsOSArMTEsOSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbXBsZW1lbnQtNjRiaXQtYXRvbWljLWZvci1taXBzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLTY0Yml0LWF0b21pYy1oZWxwZXJzLWZvci1wcGMtMzItYml0LnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDUkVWID0gImMxNjdjNWE5ZTBiY2YwZGYyM2FlNWVmZDkxMzk2YWFlMGUzN2ViODciCitTUkNSRVYgPSAiMDc0ZjZlYzUxYTJlNGJjNWM2MTQwYjRkYWQxM2M5YmI1NmYzZjBkYyIKIAotUFYgPSAiMC4xMy42K2dpdCR7U1JDUFZ9IgorUFYgPSAiMC4xMy43K2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4xMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTQ2ODVhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIG11bHRpLXBsYXRmb3JtIHN1cHBvcnQgbGlicmFyeSB3aXRoIGEgZm9jdXMgb24gYXN5bmNocm9ub3VzIEkvTyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJ1di9saWJ1diIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2lzc3VlcyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmI1ZWEwZDY1MWY0YzM1MTkzMjcxNzE5MDYwNDU3NzUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiNzQ1MmVmNGUwNmE0Zjk5ZWUyNmI2OTRjNjU0NzY0MDE1MzRmMjcyNSIKLUJSQU5DSCA9ICJ2MS54IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2LmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9JHtCUkFOQ0h9OyIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlKCkgewotICAgICR7U30vYXV0b2dlbi5zaCB8fCBiYm5vdGUgIiR7UE59IGZhaWxlZCB0byBhdXRvZ2VuLnNoIgotICAgIG9lX3J1bmNvbmYKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMjAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4yMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMWZmOWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMjAuMy5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkEgbXVsdGktcGxhdGZvcm0gc3VwcG9ydCBsaWJyYXJ5IHdpdGggYSBmb2N1cyBvbiBhc3luY2hyb25vdXMgSS9PIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvaXNzdWVzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjg5MDJhNDMwZTMyMjAwMjYzZDE4MmQ0NDkyNGQ0NyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI4Y2ZkNjdlNTkxOTUyNTFkZmY3OTNlZTQ3YzE4NWM5ZDZhOGYzODE4IgorQlJBTkNIID0gInYxLngiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH07IgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9hdXRvZ2VuLnNoIHx8IGJibm90ZSAiJHtQTn0gZmFpbGVkIHRvIGF1dG9nZW4uc2giCisgICAgb2VfcnVuY29uZgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzIuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwMGYzYTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMi4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkNhbm9uaWNhbCBsaWJ3ZWJzb2NrZXRzLm9yZyB3ZWJzb2NrZXQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGlid2Vic29ja2V0cy5vcmcvIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzMzkzYTY1NzgzMGQ0YTExOGM1YTZlZDM1YmE1M2QwIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiNzM1NTc1MDliZDE1Zjk1YTFhZDA4MWE2ZjRmYWI0OGZmNzc0MzIxNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93YXJtY2F0L2xpYndlYnNvY2tldHMuZ2l0O3Byb3RvY29sPWh0dHBzOyIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlidXYgY2xpZW50IHNlcnZlciBodHRwMiBzc2wiCi1QQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLURMV1NfV0lUSE9VVF9DTElFTlQ9T0ZGLC1ETFdTX1dJVEhPVVRfQ0xJRU5UPU9OLCIKLVBBQ0tBR0VDT05GSUdbaHR0cDJdID0gIi1ETFdTX1dJVEhfSFRUUDI9T04sLURMV1NfV0lUSF9IVFRQMj1PRkYsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExXU19JUFY2PU9OLC1ETFdTX0lQVjY9T0ZGLCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi1ETFdTX1dJVEhfTElCRVY9T04sLURMV1NfV0lUSF9MSUJFVj1PRkYsbGliZXYiCi1QQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItRExXU19XSVRIX0xJQlVWPU9OLC1ETFdTX1dJVEhfTElCVVY9T0ZGLGxpYnV2IgotUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1ETFdTX1dJVEhPVVRfU0VSVkVSPU9GRiwtRExXU19XSVRIT1VUX1NFUlZFUj1PTiwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLURMV1NfV0lUSF9TU0w9T04sLURMV1NfV0lUSF9TU0w9T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3Rlc3RhcHBzXSA9ICItRExXU19XSVRIT1VUX1RFU1RBUFBTPU9GRiwtRExXU19XSVRIT1VUX1RFU1RBUFBTPU9OLCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RhcHBzIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LXRlc3RhcHBzICs9ICIke2RhdGFkaXJ9L2xpYndlYnNvY2tldHMtdGVzdC1zZXJ2ZXIvKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzMuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMy4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4NDE0OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzMuMC4wLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQ2Fub25pY2FsIGxpYndlYnNvY2tldHMub3JnIHdlYnNvY2tldCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJ3ZWJzb2NrZXRzLm9yZy8iCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGNlODdmM2ZhY2I2ZjkxMWMxNDJjOGJlZjliZmIzODAiCisKK0RFUEVORFMgPSAiemxpYiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICJlYWE5MzVhODBhZGIzOGI1Y2M0ZDA5Y2UwNmVjOTg3Yjg3ZGNkZGZhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dhcm1jYXQvbGlid2Vic29ja2V0cy5naXQ7cHJvdG9jb2w9aHR0cHM7IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID89ICJsaWJ1diBjbGllbnQgc2VydmVyIGh0dHAyIHNzbCIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICItRExXU19XSVRIT1VUX0NMSUVOVD1PRkYsLURMV1NfV0lUSE9VVF9DTElFTlQ9T04sIgorUEFDS0FHRUNPTkZJR1todHRwMl0gPSAiLURMV1NfV0lUSF9IVFRQMj1PTiwtRExXU19XSVRIX0hUVFAyPU9GRiwiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi1ETFdTX0lQVjY9T04sLURMV1NfSVBWNj1PRkYsIgorUEFDS0FHRUNPTkZJR1tsaWJldl0gPSAiLURMV1NfV0lUSF9MSUJFVj1PTiwtRExXU19XSVRIX0xJQkVWPU9GRixsaWJldiIKK1BBQ0tBR0VDT05GSUdbbGlidXZdID0gIi1ETFdTX1dJVEhfTElCVVY9T04sLURMV1NfV0lUSF9MSUJVVj1PRkYsbGlidXYiCitQQUNLQUdFQ09ORklHW3NlcnZlcl0gPSAiLURMV1NfV0lUSE9VVF9TRVJWRVI9T0ZGLC1ETFdTX1dJVEhPVVRfU0VSVkVSPU9OLCIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItRExXU19XSVRIX1NTTD1PTiwtRExXU19XSVRIX1NTTD1PRkYsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGVzdGFwcHNdID0gIi1ETFdTX1dJVEhPVVRfVEVTVEFQUFM9T0ZGLC1ETFdTX1dJVEhPVVRfVEVTVEFQUFM9T04sIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdGFwcHMiCisKK0ZJTEVTXyR7UE59LXRlc3RhcHBzICs9ICIke2RhdGFkaXJ9L2xpYndlYnNvY2tldHMtdGVzdC1zZXJ2ZXIvKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlci9lbnVtLWNvbnZlcnNpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXIvZW51bS1jb252ZXJzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2ZiMGYzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlci9lbnVtLWNvbnZlcnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1GaXhlcyBlcnJvcnMgZm91bmQgYnQgQ2xhbmcKLQotfCAuLi8uLi9Nb2RlbU1hbmFnZXItMS42LjQvc3JjL21tLWJlYXJlci1xbWkuYzo3NzQ6NTA6IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gZW51bWVyYXRpb24gdHlwZSAnTU1CZWFyZXJTdGF0dXMnIHRvIGRpZmZlcmVudCBlbnVtZXJhdGlvbiB0eXBlICdNTUJlYXJlckNvbm5lY3Rpb25TdGF0dXMnIFstV2Vycm9yLC1XZW51bS1jb252ZXJzaW9uXQotfCAgICAgICAgIE1NQmVhcmVyQ29ubmVjdGlvblN0YXR1cyBiZWFyZXJfc3RhdHVzID0gbW1fYmFzZV9iZWFyZXJfZ2V0X3N0YXR1cyAoTU1fQkFTRV9CRUFSRVIgKHNlbGYpKTsKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fiAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLXwgMSBlcnJvciBnZW5lcmF0ZWQuCi0KLQotSW5kZXg6IE1vZGVtTWFuYWdlci0xLjYuNC9zcmMvbW0tYmVhcmVyLXFtaS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTW9kZW1NYW5hZ2VyLTEuNi40Lm9yaWcvc3JjL21tLWJlYXJlci1xbWkuYwotKysrIE1vZGVtTWFuYWdlci0xLjYuNC9zcmMvbW0tYmVhcmVyLXFtaS5jCi1AQCAtNzcxLDcgKzc3MSw3IEBAIHBhY2tldF9zZXJ2aWNlX3N0YXR1c19pbmRpY2F0aW9uX2NiIChRbWkKLSAgICAgICAgICAgICAmY29ubmVjdGlvbl9zdGF0dXMsCi0gICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICBOVUxMKSkgewotLSAgICAgICAgTU1CZWFyZXJDb25uZWN0aW9uU3RhdHVzIGJlYXJlcl9zdGF0dXMgPSBtbV9iYXNlX2JlYXJlcl9nZXRfc3RhdHVzIChNTV9CQVNFX0JFQVJFUiAoc2VsZikpOwotKyAgICAgICAgTU1CZWFyZXJDb25uZWN0aW9uU3RhdHVzIGJlYXJlcl9zdGF0dXMgPSAoTU1CZWFyZXJDb25uZWN0aW9uU3RhdHVzKW1tX2Jhc2VfYmVhcmVyX2dldF9zdGF0dXMgKE1NX0JBU0VfQkVBUkVSIChzZWxmKSk7Ci0gCi0gICAgICAgICBpZiAoY29ubmVjdGlvbl9zdGF0dXMgPT0gUU1JX1dEU19DT05ORUNUSU9OX1NUQVRVU19ESVNDT05ORUNURUQgJiYKLSAgICAgICAgICAgICBiZWFyZXJfc3RhdHVzICE9IE1NX0JFQVJFUl9DT05ORUNUSU9OX1NUQVRVU19ESVNDT05ORUNURUQgJiYKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjYuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYwY2Q0Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIk1vZGVtTWFuYWdlciBpcyBhIGRhZW1vbiBjb250cm9sbGluZyBicm9hZGJhbmQgZGV2aWNlcy9jb25uZWN0aW9ucyIKLURFU0NSSVBUSU9OID0gIk1vZGVtTWFuYWdlciBpcyBhIERCdXMtYWN0aXZhdGVkIGRhZW1vbiB3aGljaCBjb250cm9scyBtb2JpbGUgYnJvYWRiYW5kICgyRy8zRy80RykgZGV2aWNlcyBhbmQgY29ubmVjdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL01vZGVtTWFuYWdlci8iCi1MSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gYmFzaC1jb21wbGV0aW9uCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGliZ3VkZXYgZGJ1cy1nbGliIGludGx0b29sLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9lbnVtLWNvbnZlcnNpb24ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjA2NDg4MTg2YzdkZDUzZjgxMDQxODNiODZmN2ExNTY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZDViNGNiMWU0ZDc2NDM2NDNhMjhjY2JmYzRiYjM1NGJmYTljYjg5YTc3ZWExNjBlYmRmNzkyNjE3MWM2NjgiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBwb2xraXQgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywsIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0td2l0aC1wb2xraXQ9eWVzLC0td2l0aC1wb2xraXQ9bm8scG9sa2l0IgotIyBTdXBwb3J0IFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wuCi1QQUNLQUdFQ09ORklHW21iaW1dID0gIi0td2l0aC1tYmltLC0tZW5hYmxlLW1iaW09bm8sbGlibWJpbSIKLSMgU3VwcG9ydCBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbC4KLVBBQ0tBR0VDT05GSUdbcW1pXSA9ICItLXdpdGgtcW1pLC0td2l0aG91dC1xbWksbGlicW1pIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlciBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiIFwKLSAgICAke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLyoubGEgXAotIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmEgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvLmRlYnVnIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTW9kZW1NYW5hZ2VyLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS44LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjNGI2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjguMi5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk1vZGVtTWFuYWdlciBpcyBhIGRhZW1vbiBjb250cm9sbGluZyBicm9hZGJhbmQgZGV2aWNlcy9jb25uZWN0aW9ucyIKK0RFU0NSSVBUSU9OID0gIk1vZGVtTWFuYWdlciBpcyBhIERCdXMtYWN0aXZhdGVkIGRhZW1vbiB3aGljaCBjb250cm9scyBtb2JpbGUgYnJvYWRiYW5kICgyRy8zRy80RykgZGV2aWNlcyBhbmQgY29ubmVjdGlvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL01vZGVtTWFuYWdlci8iCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gYmFzaC1jb21wbGV0aW9uCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgbGliZ3VkZXYgZGJ1cy1nbGliIGludGx0b29sLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImE0OWM5ZjczZTQ2YzdiODllNWVmZWRkYTI1MGQyMmMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2ZjJhNWYwZWQxNTUzMmI0YzRjMTg1Yjc1NmZkYzAzMjZlN2MyMDI3Y2VhMjZhMTI2NGY5MWUwOTgyNjBmODAiCisKK1MgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBwb2xraXQgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywsIgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0td2l0aC1wb2xraXQ9eWVzLC0td2l0aC1wb2xraXQ9bm8scG9sa2l0IgorIyBTdXBwb3J0IFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wuCitQQUNLQUdFQ09ORklHW21iaW1dID0gIi0td2l0aC1tYmltLC0td2l0aC1tYmltPW5vLGxpYm1iaW0iCisjIFN1cHBvcnQgV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wuCitQQUNLQUdFQ09ORklHW3FtaV0gPSAiLS13aXRoLXFtaSwtLXdpdGhvdXQtcW1pLGxpYnFtaSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLXVkZXYtYmFzZS1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAorIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmxhIFwKKyIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgXAorICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvKi5hIFwKKyIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLy5kZWJ1ZyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk1vZGVtTWFuYWdlci5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWFhMjc3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzLzAwMDEtY29uZmlnLm1rLWFsbG93LXByZWZpeC1tYW5kaXItbG9jYWxlZGlyLWZyb20tZW52aXJvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gMGJlMzgzMDEyNDlkNzk3ZWMxZjU5MDcxY2M4NjhjZWRhNmQ0NzIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwRHJhc3ppaz89IDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Ci1EYXRlOiBUdWUsIDEyIEFwciAyMDE2IDEyOjUwOjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBjb25maWcubWs6IGFsbG93IHByZWZpeCAvIG1hbmRpciAvIGxvY2FsZWRpciBmcm9tCi0gZW52aXJvbm1lbnQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotV2Ugd2FudCB0byBjb250cm9sIHRoZW0gdXNpbmcgT0UgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkLXNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFuZHJlLmRyYXN6aWtAamNpLmNvbT4KLS0tLQotIGNvbmZpZy5tayB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy5tayBiL2NvbmZpZy5tawotaW5kZXggNzFmMTdlNS4uODFkOTcwMiAxMDA2NDQKLS0tLSBhL2NvbmZpZy5tawotKysrIGIvY29uZmlnLm1rCi1AQCAtMjQ5LDcgKzI0OSw3IEBAIGlmZXEgKCQoV0lUSF9ET0NTKSx5ZXMpCi0gZW5kaWYKLSAKLSBJTlNUQUxMPz1pbnN0YWxsCi0tcHJlZml4PS91c3IvbG9jYWwKLS1tYW5kaXI9JHtwcmVmaXh9L3NoYXJlL21hbgotLWxvY2FsZWRpcj0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCi0rcHJlZml4Pz0vdXNyL2xvY2FsCi0rbWFuZGlyPz0ke3ByZWZpeH0vc2hhcmUvbWFuCi0rbG9jYWxlZGlyPz0ke3ByZWZpeH0vc2hhcmUvbG9jYWxlCi0gU1RSSVA/PXN0cmlwCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmEyN2IyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0CisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotIyEgL2Jpbi9zaAotCi0jIEJhc2VkIG9uIHRoZSBEZWJpYW4gaW5pdHNjcmlwdCBmb3IgbW9zcXVpdHRvCi0KLSMjIyBCRUdJTiBJTklUIElORk8KLSMgUHJvdmlkZXM6ICAgICAgICAgbW9zcXVpdHRvCi0jIFJlcXVpcmVkLVN0YXJ0OiAgICRyZW1vdGVfZnMgJHN5c2xvZwotIyBSZXF1aXJlZC1TdG9wOiAgICAkcmVtb3RlX2ZzICRzeXNsb2cKLSMgRGVmYXVsdC1TdGFydDogICAgMiAzIDQgNQotIyBEZWZhdWx0LVN0b3A6ICAgICAwIDEgNgotIyBTaG9ydC1EZXNjcmlwdGlvbjogICAgbW9zcXVpdHRvIE1RVFQgdjMuMSBtZXNzYWdlIGJyb2tlcgotIyBEZXNjcmlwdGlvbjogCi0jICBUaGlzIGlzIGEgbWVzc2FnZSBicm9rZXIgdGhhdCBzdXBwb3J0cyB2ZXJzaW9uIDMuMSBvZiB0aGUgTVEgVGVsZW1ldHJ5Ci0jICBUcmFuc3BvcnQgKE1RVFQpIHByb3RvY29sLgotIyAgCi0jICBNUVRUIHByb3ZpZGVzIGEgbWV0aG9kIG9mIGNhcnJ5aW5nIG91dCBtZXNzYWdpbmcgdXNpbmcgYSBwdWJsaXNoL3N1YnNjcmliZQotIyAgbW9kZWwuIEl0IGlzIGxpZ2h0d2VpZ2h0LCBib3RoIGluIHRlcm1zIG9mIGJhbmR3aWR0aCB1c2FnZSBhbmQgZWFzZSBvZgotIyAgaW1wbGVtZW50YXRpb24uIFRoaXMgbWFrZXMgaXQgcGFydGljdWxhcmx5IHVzZWZ1bCBhdCB0aGUgZWRnZSBvZiB0aGUgbmV0d29yawotIyAgd2hlcmUgYSBzZW5zb3Igb3Igb3RoZXIgc2ltcGxlIGRldmljZSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgYW4gYXJkdWlubyBmb3IKLSMgIGV4YW1wbGUuCi0jIyMgRU5EIElOSVQgSU5GTwotCi1zZXQgLWUKLQotUElERklMRT1ATE9DQUxTVEFURURJUkAvcnVuL21vc3F1aXR0by5waWQKLURBRU1PTj1AU0JJTkRJUkAvbW9zcXVpdHRvCi0KLSMgc3RhcnQgYW5kIHN0b3AgdGhlIG1vc3F1aXR0byBNUVRUIG1lc3NhZ2UgYnJva2VyCi0KLXRlc3QgLXggJHtEQUVNT059IHx8IGV4aXQgMAotCi11bWFzayAwMjIKLQotLiBAU1lTQ09ORkRJUkAvaW5pdC5kL2Z1bmN0aW9ucwotCi1leHBvcnQgUEFUSD0iJHtQQVRIOiskUEFUSDp9QFNCSU5ESVJAOkBCQVNFX1NCSU5ESVJAIgotCi1jYXNlICIkMSIgaW4KLSAgICBzdGFydCkKLSAgICAgICAgZWNobyAiU3RhcnRpbmcgTW9zcXVpdHRvIG1lc3NhZ2UgYnJva2VyIiAibW9zcXVpdHRvIgotICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1iYWNrZ3JvdW5kICAtLW1ha2UtcGlkZmlsZSAtLXBpZGZpbGUgJHtQSURGSUxFfSAtLWV4ZWMgJHtEQUVNT059IDsgdGhlbgotICAgICAgICAgICAgZXhpdCAwCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGV4aXQgMQotICAgICAgICBmaQotICAgICAgICA7OwotICAgIHN0b3ApCi0gICAgICAgIGVjaG8gIlN0b3BwaW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKLSAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1va25vZG8gLS1waWRmaWxlICR7UElERklMRX07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICR7UElERklMRX0KLSAgICAgICAgICAgIGV4aXQgMAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBleGl0IDEKLSAgICAgICAgZmkKLSAgICAgICAgOzsKLQotCi0gICAgcmVsb2FkfGZvcmNlLXJlbG9hZCkKLSAgICAgICAgaWYgWyAtZiAke1BJREZJTEV9IF0gOyB0aGVuCi0gICAgICAgICAgICBlY2hvICJSZWxvYWRpbmcgY29uZmlndXJhdGlvbiBmb3IgbW9zcXVpdHRvIgotICAgICAgICAgICAgcGlkPWBjYXQgJHtQSURGSUxFfWAKLSAgICAgICAgICAgIGtpbGwgLUhVUCAkcGlkCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVjaG8gIm1vc3F1aXR0byBkb2VzIG5vdCBzZWVtIHRvIGJlIHJ1bm5pbmciCi0gICAgICAgIGZpCi0gICAgICAgIDs7Ci0KLSAgICByZXN0YXJ0KQotICAgICAgICBlY2hvICJSZXN0YXJ0aW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKLSAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1va25vZG8gLS1yZXRyeSAzMCAtLXBpZGZpbGUgJHtQSURGSUxFfTsgdGhlbgotICAgICAgICAgICAgcm0gLWYgJHtQSURGSUxFfQotICAgICAgICBmaQotICAgICAgICBpZiBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1va25vZG8gLS1iYWNrZ3JvdW5kIC0tbWFrZS1waWRmaWxlIC0tcGlkZmlsZSAke1BJREZJTEV9IC0tZXhlYyAke0RBRU1PTn0gLS0gLWMgQFNZU0NPTkZESVJAL21vc3F1aXR0by9tb3NxdWl0dG8uY29uZiA7IHRoZW4KLSAgICAgICAgICAgIGV4aXQgMAotICAgICAgICBlbHNlCi0gICAgICAgICAgICBleGl0IDEKLSAgICAgICAgZmkKLSAgICAgICAgOzsKLQotICAgIHN0YXR1cykKLSAgICAgICAgc3RhdHVzICR7REFFTU9OfSAmJiBleGl0IDAgfHwgZXhpdCAkPwotICAgICAgICA7OwotCi0gICAgKikKLSAgICAgICAgZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHJlbG9hZHxmb3JjZS1yZWxvYWR8cmVzdGFydHxzdGF0dXN9IgotICAgICAgICBleGl0IDEKLWVzYWMKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5zZXJ2aWNlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWY2OGZhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Nb3NxdWl0dG8gLSBsaWdodHdlaWdodCBzZXJ2ZXIgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1RVFQgYW5kIE1RVFQtU04gcHJvdG9jb2xzCi1Db25kaXRpb25QYXRoRXhpc3RzPS9ldGMvbW9zcXVpdHRvL21vc3F1aXR0by5jb25mCi1BZnRlcj1uZXR3b3JrLnRhcmdldAotCi1bU2VydmljZV0KLVR5cGU9c2ltcGxlCi1FeGVjU3RhcnRQcmU9L2Jpbi9ybSAtZiAvdmFyL3J1bi9tb3NxdWl0dG8ucGlkCi1FeGVjU3RhcnQ9L3Vzci9zYmluL21vc3F1aXR0byAtYyAvZXRjL21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgotRXhlY1JlbG9hZD0vYmluL2tpbGwgLUhVUCAkTUFJTlBJRAotUElERmlsZT0vdmFyL3J1bi9tb3NxdWl0dG8ucGlkCi1SZXN0YXJ0PW9uLWZhaWx1cmUKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjQuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzY2UzODEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBzb3VyY2UgTVFUVCB2My4xLzMuMS4xIGltcGxlbWVudGlvbiIKLURFU0NSSVBUSU9OID0gIk1vc3F1aXR0byBpcyBhbiBvcGVuIHNvdXJjZSAoRWNsaXBzZSBsaWNlbnNlZCkgbWVzc2FnZSBicm9rZXIgdGhhdCBpbXBsZW1lbnRzIHRoZSBNUSBUZWxlbWV0cnkgVHJhbnNwb3J0IHByb3RvY29sIHZlcnNpb24gMy4xIGFuZCAzLjEuMS4gTVFUVCBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1ldGhvZCBvZiBjYXJyeWluZyBvdXQgbWVzc2FnaW5nIHVzaW5nIGEgcHVibGlzaC9zdWJzY3JpYmUgbW9kZWwuICIKLUhPTUVQQUdFID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02MmRkYzg0NjE3OWU5MDhkYzBjOGVmZWM0YTQyZWYyMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAotIgotREVQRU5EUyA9ICJ1dGhhc2giCi0KLVNSQ19VUkkgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvZmlsZXMvc291cmNlL21vc3F1aXR0by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWcubWstYWxsb3ctcHJlZml4LW1hbmRpci1sb2NhbGVkaXItZnJvbS1lbnZpcm9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXRoYXNoLXJlbW92ZS1pbi10cmVlLXZlcnNpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmIwOTY2ZTkzZjExOGJjNzFhZDdiNjE2MDBhNmMyZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU2YjFmYTczMWQxMmJhYWQ0YjhiMjJmN2I2YThhZjUwYmE4ODFmYzcxMWI4MWU5OTE5ZWMxMDNjZjI5NDJkMSIKLQotaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCB1dWlkIgotCi1QQUNLQUdFQ09ORklHW2Rucy1zcnZdID0gIiwsYy1hcmVzIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIiwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLCx1dGlsLWxpbnV4IgotRVhUUkFfT0VNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Rucy1zcnYnLCAnV0lUSF9TUlY9eWVzJywgJ1dJVEhfU1JWPW5vJywgZCl9IFwKLSAgICAgICAgICAgICAgICBTVFJJUD0vYmluL3RydWUgXAotICAgICAgICAgICAgICAgIFdJVEhfRE9DUz1ubyBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3NsJywgJ1dJVEhfVExTPXllcyBXSVRIX1RMU19QU0s9eWVzJywgJ1dJVEhfVExTPW5vIFdJVEhfVExTX1BTSz1ubycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXVpZCcsICdXSVRIX1VVSUQ9eWVzJywgJ1dJVEhfVVVJRD1ubycsIGQpfSIKLQotZXhwb3J0IExJQl9TVUZGSVg9IiR7QGQuZ2V0VmFyKCdiYXNlbGliJywgVHJ1ZSkucmVwbGFjZSgnbGliJywgJycpfSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0KLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IGxpYi9saWJtb3NxdWl0dG8uYSAke0R9JHtsaWJkaXJ9LwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tb3NxdWl0dG8uc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21vc3F1aXR0by5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tb3NxdWl0dG8KLSAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAtZSAncyxAQkFTRV9TQklORElSQCwke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bwotfQotCi1QQUNLQUdFUyArPSAibGlibW9zcXVpdHRvMSBsaWJtb3NxdWl0dG9wcDEgJHtQTn0tY2xpZW50cyIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19wYXNzd2QgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb3NxdWl0dG8uc2VydmljZSBcCi0iCi0KLUZJTEVTX2xpYm1vc3F1aXR0bzEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0by5zby4xIgotCi1GSUxFU19saWJtb3NxdWl0dG9wcDEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0b3BwLnNvLjEiCi0KLUZJTEVTXyR7UE59LWNsaWVudHMgPSAiJHtiaW5kaXJ9L21vc3F1aXR0b19wdWIgXAotICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3N1YiBcCi0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtb3NxdWl0dG8uc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gIm1vc3F1aXR0byIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDMwIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtb3NxdWl0dG8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L29iZXgvb3Blbm9iZXhfMS43LjIuYmIKaW5kZXggMWI1NjY4NS4uM2ZiOGNiMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vYmV4L29wZW5vYmV4XzEuNy4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2JleC9vcGVub2JleF8xLjcuMi5iYgpAQCAtMiwyOSArMiwyNiBAQAogT2JqZWN0IEV4Y2hhbmdlIChPQkVYKSBwcm90b2NvbC4iCiBIT01FUEFHRSA9ICJodHRwOi8vb3Blbm9iZXgudHJpcS5uZXQiCiBTRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gInZpcnR1YWwvbGlidXNiMCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV6NScsJ2JsdWV6NScsJ2JsdWV6NCcsZCl9IgotCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAogIgogCitERVBFTkRTID0gInZpcnR1YWwvbGlidXNiMCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2JsdWV6NScsJ2JsdWV6NScsJ2JsdWV6NCcsZCl9IgorCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LyR7UFZ9LyR7QlB9LVNvdXJjZS50YXIuZ3ogXAogIgotCiBTUkNfVVJJW21kNXN1bV0gPSAiZjZlMGI2Y2I3ZGNmZDczMTQ2MGE3ZTlhOTE0MjlhM2EiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU4ODYwYWFlYTUyZjBmY2UwYzhlNGI2NDU1MGRhYWFlMDZkZjI2ODllMDU4MzQ2OTdiN2U4YzdkNzNkZDRmYyIKIAotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQogUyA9ICIke1dPUktESVJ9LyR7QlB9LVNvdXJjZSIKIAoraW5oZXJpdCBjbWFrZSBwa2djb25maWcKKwogRVhUUkFfT0VDT05GID0gIiAtRENNQUtFX1NLSVBfUlBBVEg9T04gIgogRVhUUkFfT0VDTUFLRSArPSAiLURCVUlMRF9ET0NVTUVOVEFUSU9OPU9GRiIKIAotIy0tZW5hYmxlLWFwcHMgLS1lbmFibGUtc3lzbG9nCi0KIEFTTkVFREVEID0gIiIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpAQCAtMzQsNyArMzEsNyBAQAogUEFDS0FHRVMgPSsgIm9wZW5vYmV4LWFwcHMiCiBGSUxFU18ke1BOfS1hcHBzID0gIiR7YmluZGlyfS8qIgogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9vcGVub2JleC1jb25maWcgJHtsaWJkaXJ9L2NtYWtlIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vb3Blbm9iZXgtY29uZmlnIgogREVCSUFOX05PQVVUT05BTUVfJHtQTn0tYXBwcyA9ICIxIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWMzODBjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlBhaG8gTVFUVCAtIEMgbGlicmFyaWVzIGZvciB0aGUgTVFUVCBhbmQgTVFUVC1TTiBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJDbGllbnQgaW1wbGVtZW50YXRpb24gb2Ygb3BlbiBhbmQgc3RhbmRhcmQgbWVzc2FnaW5nIHByb3RvY29scyBmb3IgTWFjaGluZS10by1NYWNoaW5lIChNMk0pIGFuZCBJbnRlcm5ldCBvZiBUaGluZ3MgKElvVCkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYWhvLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9M2FkZmNjNzBmNWFlYjdhNDRmM2Y5YjQ5NWFhMWZiZjMgXAotICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9NjU5YzhlOTJhNDBiNmRmMWQ5ZTNkY2NmNWFlNDVhMDggXAotICAgICAgICBmaWxlOi8vbm90aWNlLmh0bWw7bWQ1PWEwMGQ2ZjlhYjU0MmJlN2JhYmMyZDhiODBkNWQyYTRjIFwKLSAgICAgICAgZmlsZTovL2Fib3V0Lmh0bWw7bWQ1PWRjZGU0MzhkNzNjZjQyMzkzZGE5ZDQwZmFiYzBjOWJjIFwKLSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VjbGlwc2UvcGFoby5tcXR0LmM7cHJvdG9jb2w9aHR0cCIKLQotU1JDUkVWID0gImU4ZDM0ZGEyNGFkODA3ZjVlNjk4YjMyN2Q2NzU5MWZkNGI0YmZhN2UiCi0KLURFUEVORFMgPSAib3BlbnNzbCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9vdXRwdXQgLXNvIGxpYnBhaG8tbXF0dDNhICR7RH0ke2xpYmRpcn0KLSAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2FzICR7RH0ke2xpYmRpcn0KLSAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2MgICR7RH0ke2xpYmRpcn0KLSAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2NzICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0gICAgaW5zdGFsbCAtbSA2NDQgc3JjL01RVFRBc3luYy5oICR7RH0ke2luY2x1ZGVkaXJ9Ci0gICAgaW5zdGFsbCAtbSA2NDQgc3JjL01RVFRDbGllbnQuaCAke0R9JHtpbmNsdWRlZGlyfQotICAgIGluc3RhbGwgLW0gNjQ0IHNyYy9NUVRUQ2xpZW50UGVyc2lzdGVuY2UuaCAke0R9JHtpbmNsdWRlZGlyfQotfQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2E5YjVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjIuMS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlBhaG8gTVFUVCAtIEMgbGlicmFyaWVzIGZvciB0aGUgTVFUVCBhbmQgTVFUVC1TTiBwcm90b2NvbHMiCitERVNDUklQVElPTiA9ICJDbGllbnQgaW1wbGVtZW50YXRpb24gb2Ygb3BlbiBhbmQgc3RhbmRhcmQgbWVzc2FnaW5nIHByb3RvY29scyBmb3IgTWFjaGluZS10by1NYWNoaW5lIChNMk0pIGFuZCBJbnRlcm5ldCBvZiBUaGluZ3MgKElvVCkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYWhvLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9M2FkZmNjNzBmNWFlYjdhNDRmM2Y5YjQ5NWFhMWZiZjMgXAorICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9NjU5YzhlOTJhNDBiNmRmMWQ5ZTNkY2NmNWFlNDVhMDggXAorICAgICAgICBmaWxlOi8vbm90aWNlLmh0bWw7bWQ1PWEwMGQ2ZjlhYjU0MmJlN2JhYmMyZDhiODBkNWQyYTRjIFwKKyAgICAgICAgZmlsZTovL2Fib3V0Lmh0bWw7bWQ1PWRjZGU0MzhkNzNjZjQyMzkzZGE5ZDQwZmFiYzBjOWJjIFwKKyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VjbGlwc2UvcGFoby5tcXR0LmM7cHJvdG9jb2w9aHR0cCIKKworU1JDUkVWID0gIjA5ZmUwNzQ0ZTAyZjMxN2I5MDdlOTZkZDVhZmNjMDIyMjRkZGJiODUiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9vdXRwdXQgLXNvIGxpYnBhaG8tbXF0dDNhICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2FzICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2MgICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL291dHB1dCAtc28gbGlicGFoby1tcXR0M2NzICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgc3JjL01RVFRBc3luYy5oICR7RH0ke2luY2x1ZGVkaXJ9CisgICAgaW5zdGFsbCAtbSA2NDQgc3JjL01RVFRDbGllbnQuaCAke0R9JHtpbmNsdWRlZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0IHNyYy9NUVRUQ2xpZW50UGVyc2lzdGVuY2UuaCAke0R9JHtpbmNsdWRlZGlyfQorfQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J0b3JyZW50L3J0b3JyZW50X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiCmluZGV4IGM3MzFjZjcuLjliYjgxYzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcnRvcnJlbnQvcnRvcnJlbnRfZ2l0LmJiCkBAIC04LDkgKzgsMTAgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yYWtzaGFzYS9ydG9ycmVudCBcCiAgICAgZmlsZTovL2Rvbi10LXJ1bi1jb2RlLXdoaWxlLWNvbmZpZ3VyaW5nLXBhY2thZ2UucGF0Y2ggXAogIgotU1JDUkVWID0gIjIyNmU2NzBkZWNmOTJlN2FkYWE4NDVhNjk4MmFjYTRmMTY0ZWE3NDAiCisjIHYwLjkuNworU1JDUkVWID0gIjMyNzE2NGY5ZDg2YWFmY2QyNTAwYTMxN2Q0ODUzNzRkZjMyZWE2MjIiCiAKLVBWID0gIjAuOS42K2dpdCR7U1JDUFZ9IgorUFYgPSAiMC45LjcrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4NjUwZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkEgc2VyaWFsIHRvIG5ldHdvcmsgcHJveHkiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc2VyMm5ldC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9zZXIybmV0L3NlcjJuZXQvc2VyMm5ldC0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1NjIyNzRkNzgzNTM0Mjc2YTlmZWFjOTEzYjdkOGM0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkODQ2MDY2ZTI3YzMwNzI1NjU5OTA3NDVkMDMwMzU3YWEwYzI3OGY5NmI3ZDFkNGY1OTAyMzM0N2MxZGI4ODI0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDc3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjUuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIHNlcmlhbCB0byBuZXR3b3JrIHByb3h5IgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3NlcjJuZXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmFlMzAxOWI0YzZkYzQxMzhjMjE3ODY0YmQwNDMzMWYiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3Qvc2VyMm5ldC9zZXIybmV0L3NlcjJuZXQtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTEwZTdjOGM5N2U1YmFkZTVlODVjZTZlODliZGYxZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmE5ZTFkNjBhODlmZDdlZDA3NTU1M2I0YTIwNzQzNTI5MDIyMDNmN2ZiZDliNjViMTUwNDhjMDVmMGUzZjNiZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdC0wLjkuMy8wMDAxLUZvcmNpYmx5LWRpc2FibGUtY2hlY2stZm9yLVF0NS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdC0wLjkuMy8wMDAxLUZvcmNpYmx5LWRpc2FibGUtY2hlY2stZm9yLVF0NS5wYXRjaAppbmRleCBmY2MyZjA4Li5hNzdjZDI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwMS1Gb3JjaWJseS1kaXNhYmxlLWNoZWNrLWZvci1RdDUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDEtRm9yY2libHktZGlzYWJsZS1jaGVjay1mb3ItUXQ1LnBhdGNoCkBAIC0xLDkgKzEsMTAgQEAKLUZyb20gYjNkYTBkODY3N2I3ZTg0NjczNjdhMzAzYzE4NTUxYzU2ZWQyMGUxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTU1NDRkOGU1NDM0MzZlNDEzMzc5NDIyYjcwMmY2ZjU2YWM3ZWI4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KIERhdGU6IFR1ZSwgMTIgQXByIDIwMTYgMTc6MzA6MTUgLTA0MDAKIFN1YmplY3Q6IFtQQVRDSF0gRm9yY2libHkgZGlzYWJsZSBjaGVjayBmb3IgUXQ1LgogCiBTaWduZWQtb2ZmLWJ5OiBQaGlsaXAgQmFsaXN0ZXIgPHBoaWxpcEBiYWxpc3Rlci5vcmc+CisKIC0tLQogIGJ1aWxkL2NtYWtlL0RlZmluZU9wdGlvbnMuY21ha2UgfCAzIC0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQpAQCAtMjIsNiArMjMsMyBAQAogIGlmKCR7V0lUSF9RVDR9IEFORCAke1dJVEhfUVQ1fSBBTkQgJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSBMRVNTIDMpCiAgICAjIGNtYWtlIDwgMy4wLjAgY2F1c2VzIGNvbmZsaWN0IHdoZW4gYnVpbGRpbmcgYm90aCBRdDQgYW5kIFF0NQogICAgc2V0KFdJVEhfUVQ0IE9GRikKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDEtVEhSSUZULTM4MjgtSW4tY21ha2UtYXZvaWQtdXNlLW9mLWJvdGgtcXVvdGVkLXBhdGhzLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdC0wLjkuMy8wMDAxLVRIUklGVC0zODI4LUluLWNtYWtlLWF2b2lkLXVzZS1vZi1ib3RoLXF1b3RlZC1wYXRocy0ucGF0Y2gKaW5kZXggN2NjOGQxNy4uMTgyZWFjYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDEtVEhSSUZULTM4MjgtSW4tY21ha2UtYXZvaWQtdXNlLW9mLWJvdGgtcXVvdGVkLXBhdGhzLS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwMS1USFJJRlQtMzgyOC1Jbi1jbWFrZS1hdm9pZC11c2Utb2YtYm90aC1xdW90ZWQtcGF0aHMtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiYzU3NzgyMGFkMjU3OTU1NDNiMzFmMTIzZTMwOWNkYWViYzdkNmM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOGUyNTRhMmY0YmE0OTQxMmU1NDE1OThjNzIxNTk4NjlhNzc3MGY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ29keSBQIFNjaGFmZXIgPGRldkBjb2R5cHMuY29tPgogRGF0ZTogTW9uLCAxNiBNYXkgMjAxNiAxNToyMToxMCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvMl0gVEhSSUZULTM4MjggSW4gY21ha2UgYXZvaWQgdXNlIG9mIGJvdGggcXVvdGVkIHBhdGhzIGFuZAorU3ViamVjdDogW1BBVENIXSBUSFJJRlQtMzgyOCBJbiBjbWFrZSBhdm9pZCB1c2Ugb2YgYm90aCBxdW90ZWQgcGF0aHMgYW5kCiAgU1lTVEVNIHdpdGggaW5jbHVkZV9kaXJlY3RvcmllcygpCiAKIFRoaXMgYWxsb3dzIHVzIHRvIGF2b2lkIGlzc3VlcyB3aGVyZSB0aGVyZSBhcmUgbm8gcGF0aHMgdG8gYmUgYWRkZWQgdG8KQEAgLTExLDYgKzExLDcgQEAKIFNwZWNpZmljYWxseSwgZ2NjLTYgcmVxdWlyZXMgdGhhdCBsaWJyYXJpZXMgc3RvcCBwYXNzaW5nIHBhdGhzIGxpa2UKICcvdXNyL2luY2x1ZGUnIChvciB0aGV5IHdpbGwgZ2V0IGxpYnN0ZGMrKyBidWlsZCBlcnJvcnMpLCBzbyB0aGVzZSBwYXRocwogd2lsbCBiZSBlbXB0eSBtb3JlIG9mdGVuIGluIHRoZSBmdXR1cmUuCisKIC0tLQogIGxpYi9jcHAvQ01ha2VMaXN0cy50eHQgICAgICB8IDggKysrKy0tLS0KICBsaWIvY3BwL3Rlc3QvQ01ha2VMaXN0cy50eHQgfCAyICstCkBAIC0xMDUsNiArMTA2LDMgQEAKICAKICAjTWFrZSBzdXJlIGdlbi1jcHAgZmlsZXMgY2FuIGJlIGluY2x1ZGVkCiAgaW5jbHVkZV9kaXJlY3RvcmllcygiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9IikKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDItVEhSSUZULTM4MzEtaW4tdGVzdC1jcHAtZXhwbGljaXRseS11c2Utc2lnbmVkLWNoYXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwMi1USFJJRlQtMzgzMS1pbi10ZXN0LWNwcC1leHBsaWNpdGx5LXVzZS1zaWduZWQtY2hhci5wYXRjaAppbmRleCBmMTNhZGJiLi4zNzcxNWMyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwMi1USFJJRlQtMzgzMS1pbi10ZXN0LWNwcC1leHBsaWNpdGx5LXVzZS1zaWduZWQtY2hhci5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwMi1USFJJRlQtMzgzMS1pbi10ZXN0LWNwcC1leHBsaWNpdGx5LXVzZS1zaWduZWQtY2hhci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjZjYWQwNTgwZTUzOTFjMzdhZjdmNjBhZGRkYjcxYmYxYTQwM2RjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2IwNWE3NDQzMmYwOGVmMzRkMGY4NzQzZGQ2NDM4YWQwMTJlM2I1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENvZHkgUCBTY2hhZmVyIDxkZXZAY29keXBzLmNvbT4KIERhdGU6IEZyaSwgOSBTZXAgMjAxNiAxNTo1MDoyNiAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gVEhSSUZULTM4MzEgaW4gdGVzdC9jcHAgZXhwbGljaXRseSB1c2UgYHNpZ25lZCBjaGFyYAorU3ViamVjdDogW1BBVENIXSBUSFJJRlQtMzgzMSBpbiB0ZXN0L2NwcCBleHBsaWNpdGx5IHVzZSBgc2lnbmVkIGNoYXJgCiAKIGBjaGFyYCdzIHNpZ25lZC1uZXNzIGlzIGltcGxpbWVudGF0aW9uIGRlcGVuZGVudCwgYW5kIGluIHRoZSBjYXNlIHdoZXJlCiBgY2hhcmAgd2FzIG5vdCBzaWduZWQsIHdlIHByZXZpb3VzbHkgcmVjaWV2ZWQgZXJyb3JzIGxpa2UKQEAgLTksMTUgKzksMTYgQEAKICAgICB0aHJpZnQvMC45LjMtcjAvZ2l0L3Rlc3QvY3BwL3NyYy9UZXN0Q2xpZW50LmNwcDo0MDQ6MTU6IGVycm9yOiBuYXJyb3dpbmcgY29udmVyc2lvbiBvZiAnLTEyNycgZnJvbSAnaW50JyB0byAnY2hhcicgaW5zaWRlIHsgfSBbLVduYXJyb3dpbmddCiAKIChUaGlzIGV4YW1wbGUgZnJvbSBnY2MtNiBvbiBhcm0pCisKIC0tLQogIHRlc3QvY3BwL3NyYy9UZXN0Q2xpZW50LmNwcCB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS90ZXN0L2NwcC9zcmMvVGVzdENsaWVudC5jcHAgYi90ZXN0L2NwcC9zcmMvVGVzdENsaWVudC5jcHAKLWluZGV4IGU3MDk4OTkuLjRhOTYxZjggMTAwNjQ0CitpbmRleCA3YzQyNWE5Li43MTQ1ZWJiIDEwMDY0NAogLS0tIGEvdGVzdC9jcHAvc3JjL1Rlc3RDbGllbnQuY3BwCiArKysgYi90ZXN0L2NwcC9zcmMvVGVzdENsaWVudC5jcHAKLUBAIC0zODMsNyArMzgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KSB7CitAQCAtMzgxLDcgKzM4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewogICAgICAgKiBCSU5BUlkgVEVTVAogICAgICAgKi8KICAgICAgcHJpbnRmKCJ0ZXN0QmluYXJ5KFstMTI4Li4xMjddKSA9IHsiKTsKQEAgLTI2LDcgKzI3LDcgQEAKICAgICAgICAgID0gey0xMjgsIC0xMjcsIC0xMjYsIC0xMjUsIC0xMjQsIC0xMjMsIC0xMjIsIC0xMjEsIC0xMjAsIC0xMTksIC0xMTgsIC0xMTcsIC0xMTYsIC0xMTUsIC0xMTQsCiAgICAgICAgICAgICAtMTEzLCAtMTEyLCAtMTExLCAtMTEwLCAtMTA5LCAtMTA4LCAtMTA3LCAtMTA2LCAtMTA1LCAtMTA0LCAtMTAzLCAtMTAyLCAtMTAxLCAtMTAwLCAtOTksCiAgICAgICAgICAgICAtOTgsICAtOTcsICAtOTYsICAtOTUsICAtOTQsICAtOTMsICAtOTIsICAtOTEsICAtOTAsICAtODksICAtODgsICAtODcsICAtODYsICAtODUsICAtODQsCi1AQCAtNDA0LDcgKzQwNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgeworQEAgLTQwMiw3ICs0MDIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpIHsKICAgICAgICAgICAgIDEyN307CiAgICAgIHRyeSB7CiAgICAgICAgc3RyaW5nIGJpbl9yZXN1bHQ7CkBAIC0zNSw2ICszNiwzIEBACiAgICAgICAgaWYgKGJpbl9yZXN1bHQuc2l6ZSgpICE9IDI1NikgewogICAgICAgICAgcHJpbnRmKCJ9XG4qKiogRkFJTEVEICoqKlxuIik7CiAgICAgICAgICBwcmludGYoImludmFsaWQgbGVuZ3RoOiAlbHVcbiIsIGJpbl9yZXN1bHQuc2l6ZSgpKTsKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDQtVEhSSUZULTMyMDctZW5hYmxlLWJ1aWxkLXdpdGgtT3BlblNTTC0xLjEuMC1zZXJpZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwNC1USFJJRlQtMzIwNy1lbmFibGUtYnVpbGQtd2l0aC1PcGVuU1NMLTEuMS4wLXNlcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDBjZmFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDQtVEhSSUZULTMyMDctZW5hYmxlLWJ1aWxkLXdpdGgtT3BlblNTTC0xLjEuMC1zZXJpZXMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA1ZjJjN2U1MGI5OWQ3MjE3NzI1MGM0NDIzNmM0MWI5OWJmYzE2MWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CitEYXRlOiBUaHUsIDcgSnVuIDIwMTggMTU6MjE6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzZdICUlIG9yaWdpbmFsIHBhdGNoOgorIDAwMDQtVEhSSUZULTMyMDctZW5hYmxlLWJ1aWxkLXdpdGgtT3BlblNTTC0xLjEuMC1zZXJpZXMucGF0Y2gKKworLS0tCisgbGliL2NwcC9zcmMvdGhyaWZ0L3RyYW5zcG9ydC9UU1NMU29ja2V0LmNwcCB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL2NwcC9zcmMvdGhyaWZ0L3RyYW5zcG9ydC9UU1NMU29ja2V0LmNwcCBiL2xpYi9jcHAvc3JjL3RocmlmdC90cmFuc3BvcnQvVFNTTFNvY2tldC5jcHAKK2luZGV4IDk4YzUzMjYuLjNkYTllNDUgMTAwNjQ0CistLS0gYS9saWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwCisrKysgYi9saWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlIDx0aHJpZnQvdHJhbnNwb3J0L1BsYXRmb3JtU29ja2V0Lmg+CisgCisgI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fTk9fVEhSRUFEX0lEIDB4MTAwMDAwMDBMCisrI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fV0lUSF9UTFN2MV8xX0FORF9UTFN2MV8yIDB4MTAxMDAwMDBMCisgCisgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKKyB1c2luZyBuYW1lc3BhY2UgYXBhY2hlOjp0aHJpZnQ6OmNvbmN1cnJlbmN5OworQEAgLTE0MywxMCArMTQ0LDE1IEBAIFNTTENvbnRleHQ6OlNTTENvbnRleHQoY29uc3QgU1NMUHJvdG9jb2wmIHByb3RvY29sKSB7CisgICAgIGN0eF8gPSBTU0xfQ1RYX25ldyhTU0x2M19tZXRob2QoKSk7CisgICB9IGVsc2UgaWYgKHByb3RvY29sID09IFRMU3YxXzApIHsKKyAgICAgY3R4XyA9IFNTTF9DVFhfbmV3KFRMU3YxX21ldGhvZCgpKTsKKysjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gT1BFTlNTTF9WRVJTSU9OX1dJVEhfVExTdjFfMV9BTkRfVExTdjFfMikKKyAgIH0gZWxzZSBpZiAocHJvdG9jb2wgPT0gVExTdjFfMSkgeworICAgICBjdHhfID0gU1NMX0NUWF9uZXcoVExTdjFfMV9tZXRob2QoKSk7CisgICB9IGVsc2UgaWYgKHByb3RvY29sID09IFRMU3YxXzIpIHsKKyAgICAgY3R4XyA9IFNTTF9DVFhfbmV3KFRMU3YxXzJfbWV0aG9kKCkpOworKyNlbHNlCisrICAvL1N1cHBvcnQgZm9yIHRoaXMgdmVyc2lvbnMgd2lsbCBlbmQgb24gMjAxNi0xMi0zMQorKyAgLy9odHRwczovL3d3dy5vcGVuc3NsLm9yZy9hYm91dC9yZWxlYXNlc3RyYXQuaHRtbAorKyNlbmRpZgorICAgfSBlbHNlIHsKKyAgICAgLy8vIFVOS05PV04gUFJPVE9DT0whCisgICAgIHRocm93IFRTU0xFeGNlcHRpb24oIlNTTF9DVFhfbmV3OiBVbmtub3duIHByb3RvY29sIik7CistLSAKKzIuMTkuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnQtMC45LjMvMDAwNS1USFJJRlQtMzg3OC1Db21waWxlLWVycm9yLWluLVRTU0xTb2NrZXQuY3BwLXdpdGgtbmV3LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDUtVEhSSUZULTM4NzgtQ29tcGlsZS1lcnJvci1pbi1UU1NMU29ja2V0LmNwcC13aXRoLW5ldy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDQ4MmIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDUtVEhSSUZULTM4NzgtQ29tcGlsZS1lcnJvci1pbi1UU1NMU29ja2V0LmNwcC13aXRoLW5ldy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDgxZjM2ZTcxNzQwOTdhMWYxZjNlN2Y5NGE5NzU3NGIyZWM2ODU3N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSmFtZXMgRS4gS2luZywgSUlJIiA8amltLmtpbmdAc2ltcGxpdml0eS5jb20+CitEYXRlOiBUaHUsIDI5IFNlcCAyMDE2IDE1OjA0OjA5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIFRIUklGVC0zODc4OiBmaXggaW50ZXJvcCB3aXRoIG5ld2VyIE9wZW5TU0wgbGlicmFyaWVzCisKKy0tLQorIGxpYi9jcHAvc3JjL3RocmlmdC90cmFuc3BvcnQvVFNTTFNvY2tldC5jcHAgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliL2NwcC9zcmMvdGhyaWZ0L3RyYW5zcG9ydC9UU1NMU29ja2V0LmNwcCBiL2xpYi9jcHAvc3JjL3RocmlmdC90cmFuc3BvcnQvVFNTTFNvY2tldC5jcHAKK2luZGV4IDNkYTllNDUuLjBhM2ExMjQgMTAwNjQ0CistLS0gYS9saWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwCisrKysgYi9saWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwCitAQCAtOTcsNyArOTcsMTIgQEAgdm9pZCBpbml0aWFsaXplT3BlblNTTCgpIHsKKyAgIFNTTF9saWJyYXJ5X2luaXQoKTsKKyAgIFNTTF9sb2FkX2Vycm9yX3N0cmluZ3MoKTsKKyAgIC8vIHN0YXRpYyBsb2NraW5nCisrICAvLyBuZXdlciB2ZXJzaW9ucyBvZiBPcGVuU1NMIGNoYW5nZWQgQ1JZUFRPX251bV9sb2NrcyAtIHNlZSBUSFJJRlQtMzg3OAorKyNpZmRlZiBDUllQVE9fbnVtX2xvY2tzCisrICBtdXRleGVzID0gYm9vc3Q6OnNoYXJlZF9hcnJheTxNdXRleD4obmV3IE11dGV4W0NSWVBUT19udW1fbG9ja3MoKV0pOworKyNlbHNlCisgICBtdXRleGVzID0gYm9vc3Q6OnNoYXJlZF9hcnJheTxNdXRleD4obmV3IE11dGV4WyA6OkNSWVBUT19udW1fbG9ja3MoKV0pOworKyNlbmRpZgorICAgaWYgKG11dGV4ZXMgPT0gTlVMTCkgeworICAgICB0aHJvdyBUVHJhbnNwb3J0RXhjZXB0aW9uKFRUcmFuc3BvcnRFeGNlcHRpb246OklOVEVSTkFMX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbml0aWFsaXplT3BlblNTTCgpIGZhaWxlZCwgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0LTAuOS4zLzAwMDYtVEhSSUZULTM3MzYtQysrLWxpYnJhcnktYnVpbGQtZmFpbHMtaWYtT3BlblNTTC1kb2VzLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdC0wLjkuMy8wMDA2LVRIUklGVC0zNzM2LUMrKy1saWJyYXJ5LWJ1aWxkLWZhaWxzLWlmLU9wZW5TU0wtZG9lcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhYTJmYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdC0wLjkuMy8wMDA2LVRIUklGVC0zNzM2LUMrKy1saWJyYXJ5LWJ1aWxkLWZhaWxzLWlmLU9wZW5TU0wtZG9lcy0ucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA0Y2Q0OWY0NzBjYTk4MzM2OTQ1MWQxMTQxYWNjODBmZTExMTVjYWI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTm9idWFraSBTdWtlZ2F3YSA8bnN1a2VAYXBhY2hlLm9yZz4KK0RhdGU6IFN1biwgMTMgTWFyIDIwMTYgMDg6NTU6MzggKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gVEhSSUZULTM3MzYgQysrIGxpYnJhcnkgYnVpbGQgZmFpbHMgaWYgT3BlblNTTCBkb2VzIG5vdAorCisgc3VycnBvdCBTU0x2MworCistLS0KKyBsaWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwIHwgMiArKworIGxpYi9jcHAvdGVzdC9TZWN1cml0eVRlc3QuY3BwICAgICAgICAgICAgICAgfCA4ICsrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWIvY3BwL3NyYy90aHJpZnQvdHJhbnNwb3J0L1RTU0xTb2NrZXQuY3BwIGIvbGliL2NwcC9zcmMvdGhyaWZ0L3RyYW5zcG9ydC9UU1NMU29ja2V0LmNwcAoraW5kZXggMGEzYTEyNC4uM2U3OTM1NCAxMDA2NDQKKy0tLSBhL2xpYi9jcHAvc3JjL3RocmlmdC90cmFuc3BvcnQvVFNTTFNvY2tldC5jcHAKKysrKyBiL2xpYi9jcHAvc3JjL3RocmlmdC90cmFuc3BvcnQvVFNTTFNvY2tldC5jcHAKK0BAIC0xNDUsOCArMTQ1LDEwIEBAIHN0YXRpYyBjaGFyIHVwcGVyY2FzZShjaGFyIGMpOworIFNTTENvbnRleHQ6OlNTTENvbnRleHQoY29uc3QgU1NMUHJvdG9jb2wmIHByb3RvY29sKSB7CisgICBpZiAocHJvdG9jb2wgPT0gU1NMVExTKSB7CisgICAgIGN0eF8gPSBTU0xfQ1RYX25ldyhTU0x2MjNfbWV0aG9kKCkpOworKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wzCisgICB9IGVsc2UgaWYgKHByb3RvY29sID09IFNTTHYzKSB7CisgICAgIGN0eF8gPSBTU0xfQ1RYX25ldyhTU0x2M19tZXRob2QoKSk7CisrI2VuZGlmCisgICB9IGVsc2UgaWYgKHByb3RvY29sID09IFRMU3YxXzApIHsKKyAgICAgY3R4XyA9IFNTTF9DVFhfbmV3KFRMU3YxX21ldGhvZCgpKTsKKyAjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gT1BFTlNTTF9WRVJTSU9OX1dJVEhfVExTdjFfMV9BTkRfVExTdjFfMikKK2RpZmYgLS1naXQgYS9saWIvY3BwL3Rlc3QvU2VjdXJpdHlUZXN0LmNwcCBiL2xpYi9jcHAvdGVzdC9TZWN1cml0eVRlc3QuY3BwCitpbmRleCAyMTNlZmQ0Li4wODExMGU3IDEwMDY0NAorLS0tIGEvbGliL2NwcC90ZXN0L1NlY3VyaXR5VGVzdC5jcHAKKysrKyBiL2xpYi9jcHAvdGVzdC9TZWN1cml0eVRlc3QuY3BwCitAQCAtMjM5LDYgKzIzOSwxNCBAQCBCT09TVF9BVVRPX1RFU1RfQ0FTRShzc2xfc2VjdXJpdHlfbWF0cml4KQorICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIH0KKyAKKysjaWZkZWYgT1BFTlNTTF9OT19TU0wzCisrICAgICAgICAgICAgICAgIGlmIChzaSA9PSAyIHx8IGNpID09IDIpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgYWxsIFNTTHYzIGNhc2VzIC0gcHJvdG9jb2wgbm90IHN1cHBvcnRlZAorKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysjZW5kaWYKKysKKyAgICAgICAgICAgICAgICAgYm9vc3Q6Om11dGV4OjpzY29wZWRfbG9jayBsb2NrKG1NdXRleCk7CisgCisgICAgICAgICAgICAgICAgIEJPT1NUX1RFU1RfTUVTU0FHRShib29zdDo6Zm9ybWF0KCJURVNUOiBTZXJ2ZXIgPSAlMSUsIENsaWVudCA9ICUyJSIpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnRfMC45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RocmlmdC90aHJpZnRfMC45LjMuYmIKaW5kZXggYWE5MzI4My4uN2FiNzQwMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90aHJpZnQvdGhyaWZ0XzAuOS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdGhyaWZ0L3RocmlmdF8wLjkuMy5iYgpAQCAtMTIsNiArMTIsOSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Gb3JjaWJseS1kaXNhYmxlLWNoZWNrLWZvci1RdDUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1USFJJRlQtMzgyOC1Jbi1jbWFrZS1hdm9pZC11c2Utb2YtYm90aC1xdW90ZWQtcGF0aHMtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItVEhSSUZULTM4MzEtaW4tdGVzdC1jcHAtZXhwbGljaXRseS11c2Utc2lnbmVkLWNoYXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1USFJJRlQtMzIwNy1lbmFibGUtYnVpbGQtd2l0aC1PcGVuU1NMLTEuMS4wLXNlcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVRIUklGVC0zODc4LUNvbXBpbGUtZXJyb3ItaW4tVFNTTFNvY2tldC5jcHAtd2l0aC1uZXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1USFJJRlQtMzczNi1DKystbGlicmFyeS1idWlsZC1mYWlscy1pZi1PcGVuU1NMLWRvZXMtLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjg4ZDY2N2E4YWU4NzBkNWFkZWNhOGNiN2Q2Nzk1NDQyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91bWlwL2ZpbGVzLzAwMDEtcmVwbGFjZS1TSUdDTEQtd2l0aC1TSUdDSExELWFuZC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTkyMDU2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC9maWxlcy8wMDAxLXJlcGxhY2UtU0lHQ0xELXdpdGgtU0lHQ0hMRC1hbmQtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gZjU2Nzc0MGNmNjQ5NzhhYzlkYjAxNGM3ODZiNmQwMjY3YjI0NGYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDQgTWFyIDIwMTggMjI6MzA6MzAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIHJlcGxhY2UgU0lHQ0xEIHdpdGggU0lHQ0hMRCBhbmQgaW5jbHVkZSBzeXMvdHlwZXMuaAotCi1GaXhlcwotbWFpbi5jOjEyOToxMDogZXJyb3I6ICdTSUdDTEQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTSUdDSExEJz8KLSAgIHNpZ25hbChTSUdDTEQsIHNpZ19jaGlsZCk7Ci0gICAgICAgICAgXn5+fn5+Ci0gICAgICAgICAgU0lHQ0hMRAotCi1tYWluLmM6MTI1OjI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICd1bWFzaycgWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCi0gIHVtYXNrKDApOwotICBefn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9tYWluLmMgfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCi1pbmRleCAzY2Y0MDcyLi5jZDM0MTk2IDEwMDY0NAotLS0tIGEvc3JjL21haW4uYwotKysrIGIvc3JjL21haW4uYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8cHRocmVhZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC0xMjYsOSArMTI3LDkgQEAgc3RhdGljIHZvaWQgZGFlbW9uX3N0YXJ0KGludCBpZ25zaWdjbGQpCi0gCi0gCWlmIChpZ25zaWdjbGQpIHsKLSAjaWZkZWYgU0lHVFNUUAotLQkJc2lnbmFsKFNJR0NMRCwgc2lnX2NoaWxkKTsKLSsJCXNpZ25hbChTSUdDSExELCBzaWdfY2hpbGQpOwotICNlbHNlCi0tCQlzaWduYWwoU0lHQ0xELCBTSUdfSUdOKTsKLSsJCXNpZ25hbChTSUdDSExELCBTSUdfSUdOKTsKLSAjZW5kaWYKLSAJfQotIH0KLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdW1pcC91bWlwXzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMxMjBiZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VtaXAvdW1pcF8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIk1vYmlsZSBJUHY2IGFuZCBORU1PIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlVNSVAgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgTW9iaWxlIElQdjYgYW5kIE5FTU8gXAotQmFzaWMgU3VwcG9ydCBmb3IgTGludXguIEl0IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBHUEx2MiBsaWNlbnNlLiBJdCBzdXBwb3J0cyBcCi10aGUgZm9sbG93aW5nIElFVEYgUkZDOiBSRkM2Mjc1IChNb2JpbGUgSVB2NiksIFJGQzM5NjMgKE5FTU8pLCBSRkMzNzc2IGFuZCBcCi1SRkM0ODc3IChJUHNlYyBhbmQgSUtFdjIpLiIKLUhPTUVQQUdFID0gImh0dHA6Ly91bWlwLm9yZy8iCi1TRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3M2RjMzFjY2IyZWJlZDcwZGI1NGYxZThhZWI0YzMzIgotREVQRU5EUyA9ICJycG0gaW5kZW50LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2psYW56YS91bWlwIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1kZXBlbmRlbmN5LXRvLXN1cHBvcnQtcGFyYWxsZWwtY29tcGlsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwNmQgXAotICAgICAgICAgICBmaWxlOi8vbWlwNmQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1mb3JtYXQtc3RyaW5nLXRvLWZwcmludGYtY2FsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2UtU0lHQ0xELXdpdGgtU0lHQ0hMRC1hbmQtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXJlcGxhY2UtUFRIUkVBRF9NVVRFWF9GQVNUX05QLXdpdGgtUFRIUkVBRF9NVVRFWF9OT1IucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiN2Q2NzIwOWNkMWJiYTJkZDBlMTgzYTBmYTA3ZWVlZjA3OTY0ZGQxNCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXZ0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgc3lzdGVtZCB1cGRhdGUtcmMuZAotCi1JTklUU0NSSVBUX05BTUUgPSAibWlwNmQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA2NCAuIHN0b3AgMzYgMCAxIDIgMyA0IDUgNiAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWlwNmQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vbWlwNmQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21pcDZkCi0JaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vbWlwNmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9taXA2ZC5zZXJ2aWNlCi0Jc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9taXA2ZC5zZXJ2aWNlCi19Ci0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbWlwNiBrZXJuZWwtbW9kdWxlLWlwdjYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VzYm11eGQvdXNibXV4ZF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3VzYm11eGQvdXNibXV4ZF9naXQuYmIKaW5kZXggNDM2NWFhNC4uNzI4NDIzNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS91c2JtdXhkL3VzYm11eGRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvdXNibXV4ZC91c2JtdXhkX2dpdC5iYgpAQCAtMSwyNCArMSwyMSBAQAogREVTQ1JJUFRJT04gPSAiVGhpcyBkYWVtb24gaXMgaW4gY2hhcmdlIG9mIG11bHRpcGxleGluZyBjb25uZWN0aW9ucyBvdmVyIFVTQiB0byBhbiBpUGhvbmUgb3IgaVBvZCB0b3VjaC4iCiBMSUNFTlNFID0gIkdQTHYzICYgR1BMdjIgJiBMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWViYjVjNTBhYjdjYWI0YmFlZmZiYTE0OTc3MDMwYzA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PTZhYjE3YjQxNjQwNTY0NDM0ZGRhODVjMDZiNzEyNGY3IgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKLURFUEVORFMgPSAidWRldiBsaWJ1c2IxIgorREVQRU5EUyA9ICJ1ZGV2IGxpYnVzYjEgbGlicGxpc3QiCiAKLWluaGVyaXQgY21ha2UgcGtnY29uZmlnIGdpdHBrZ3YKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnaXRwa2d2IHN5c3RlbWQKIAogUEtHViA9ICIke0dJVFBLR1ZUQUd9IgogCi1TUkNSRVYgPSAiOTE5NTg3NTgwYzVlNzdmMzkzNmYzNDMyMTE1ZDJlMTBjN2JhYzdjNSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnN1a2ltYXNoaXRhLmNvbS91c2JtdXhkLmdpdDtwcm90b2NvbD1odHRwIgorU1JDUkVWID0gImVlODU5MzhjMjEwNDNlZjVmN2NkNGRmYmM3Njc3ZjM4NTgxNGQ0ZDgiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliaW1vYmlsZWRldmljZS91c2JtdXhkO3Byb3RvY29sPWh0dHBzIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1wcmVmbGlnaHQiCisKIEZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvIgogCi0jIGZpeCB1c2JtdXhkIGluc3RhbGxpbmcgZmlsZXMgdG8gL3Vzci9saWI2NCBvbiA2NGJpdCBob3N0czoKLUVYVFJBX09FQ01BS0UgPSAiLURMSUJfU1VGRklYPSR7QGQuZ2V0VmFyKCdiYXNlbGliJykucmVwbGFjZSgnbGliJywgJycpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbcGxpc3RdID0gIi1EV0FOVF9QTElTVD0xLC1EV0FOVF9QTElTVD0wLGxpYnBsaXN0IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInVzYm11eGQuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2ZGlhbF8xLjYxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZkaWFsXzEuNjEuYmIKaW5kZXggM2E3MWZiOS4uNTE1NDIwOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZkaWFsXzEuNjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZkaWFsXzEuNjEuYmIKQEAgLTMwLDMgKzMwLDUgQEAKIGRvX2luc3RhbGwoKSB7CiAgICAgb2VfcnVubWFrZSBwcmVmaXg9JHtEfS91c3IgUFBQRElSPSR7RH0vZXRjL3BwcC9wZWVycyBpbnN0YWxsCiB9CisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NTkvCitFWENMVURFX0ZST01fV09STERfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXMvMDAwMS1Gb3J3YXJkLXBvcnQtdG8tT3BlblNTTC0xLjEueC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2c3RyZWFtcy8wMDAxLUZvcndhcmQtcG9ydC10by1PcGVuU1NMLTEuMS54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTJlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXMvMDAwMS1Gb3J3YXJkLXBvcnQtdG8tT3BlblNTTC0xLjEueC5wYXRjaApAQCAtMCwwICsxLDU1NyBAQAorRnJvbSAwYzM1NzQ5ODkxYmY4MzRjMWYzYzFjNGMzMzAyNjZiZDJmNDczM2NjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgOSBTZXAgMjAxOCAxMDo0MDowOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGb3J3YXJkIHBvcnQgdG8gT3BlblNTTCAxLjEueAorCisqIGltcG9ydCBwYXRjaCBmcm9tIGRlYmlhbgoraHR0cHM6Ly9zb3VyY2VzLmRlYmlhbi5vcmcvc3JjL3d2c3RyZWFtcy80LjYuMS0xNC9kZWJpYW4vcGF0Y2hlcy93dnN0cmVhbXNfb3BlbnNzbDEuMS5wYXRjaAorQXV0aG9yOiBSZWluZXIgSGVycm1hbm4gPHJlaW5lckByZWluZXItaC5kZT4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9hcGVud2Fyci93dnN0cmVhbXMvcHVsbC8yXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNyeXB0by93dmNybC5jYyAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNyeXB0by93dmRpZmZpZWhlbGxtYW4uY2MgfCAzMCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBjcnlwdG8vd3ZkaWdlc3QuY2MgICAgICAgIHwgMTYgKysrKysrKystLS0tLS0tLQorIGNyeXB0by93dm9jc3AuY2MgICAgICAgICAgfCAzNSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNyeXB0by93dng1MDkuY2MgICAgICAgICAgfCAzMSArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgY3J5cHRvL3d2eDUwOW1nci5jYyAgICAgICB8IDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIGluY2x1ZGUvd3ZkaWZmaWVoZWxsbWFuLmggfCAgMiArLQorIGluY2x1ZGUvd3ZkaWdlc3QuaCAgICAgICAgfCAxNCArKysrKystLS0tLS0tLQorIGluY2x1ZGUvd3Z0cmlwbGVkZXMuaCAgICAgfCAxMCArKysrKy0tLS0tCisgOSBmaWxlcyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jcnlwdG8vd3ZjcmwuY2MgYi9jcnlwdG8vd3ZjcmwuY2MKK2luZGV4IGZhMDBjNzYuLjg4MGFkODUgMTAwNjQ0CistLS0gYS9jcnlwdG8vd3ZjcmwuY2MKKysrKyBiL2NyeXB0by93dmNybC5jYworQEAgLTM1NywzMSArMzU3LDE5IEBAIGJvb2wgV3ZDUkw6OmlzcmV2b2tlZChXdlN0cmluZ1Bhcm0gc2VyaWFsX251bWJlcikgY29uc3QKKyAJQVNOMV9JTlRFR0VSICpzZXJpYWwgPSBzZXJpYWxfdG9faW50KHNlcmlhbF9udW1iZXIpOworIAlpZiAoc2VyaWFsKQorIAl7CistCSAgICBYNTA5X1JFVk9LRUQgbWF5YmVyZXZva2VkOworLQkgICAgbWF5YmVyZXZva2VkLnNlcmlhbE51bWJlciA9IHNlcmlhbDsKKy0JICAgIGlmIChjcmwtPmNybC0+cmV2b2tlZCkKKy0JICAgIHsKKy0JCWludCBpZHggPSBza19YNTA5X1JFVk9LRURfZmluZChjcmwtPmNybC0+cmV2b2tlZCwgCistCQkJCQkgICAgICAgJm1heWJlcmV2b2tlZCk7CistCQlBU04xX0lOVEVHRVJfZnJlZShzZXJpYWwpOworLQkJaWYgKGlkeCA+PSAwKQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiQ2VydGlmaWNhdGUgaXMgcmV2b2tlZC5cbiIpOworLQkJICAgIHJldHVybiB0cnVlOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZGVidWcoIkNlcnRpZmljYXRlIGlzIG5vdCByZXZva2VkLlxuIik7CistCQkgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgICAgICAgICB9CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCQlBU04xX0lOVEVHRVJfZnJlZShzZXJpYWwpOworLQkJZGVidWcoIkNSTCBkb2VzIG5vdCBoYXZlIHJldm9rZWQgbGlzdC5cbiIpOworLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistCSAgICB9CistCSAgICAKKysJICAgIFg1MDlfUkVWT0tFRCAqcmV2b2tlZF9lbnRyeSA9IE5VTEw7CisrCSAgICBpbnQgaWR4ID0gWDUwOV9DUkxfZ2V0MF9ieV9zZXJpYWwoY3JsLCAmcmV2b2tlZF9lbnRyeSwgc2VyaWFsKTsKKysJICAgIEFTTjFfSU5URUdFUl9mcmVlKHNlcmlhbCk7CisrCSAgICBpZiAoaWR4ID49IDEgfHwgcmV2b2tlZF9lbnRyeSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGRlYnVnKCJDZXJ0aWZpY2F0ZSBpcyByZXZva2VkLlxuIik7CisrCSAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGRlYnVnKCJDZXJ0aWZpY2F0ZSBpcyBub3QgcmV2b2tlZC5cbiIpOworKwkgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgICAgICB9CisgCX0KKyAJZWxzZQorIAkgICAgZGVidWcoV3ZMb2c6Oldhcm5pbmcsICJDYW4ndCBjb252ZXJ0IHNlcmlhbCBudW1iZXIgdG8gQVNOMSBmb3JtYXQuICIKK2RpZmYgLS1naXQgYS9jcnlwdG8vd3ZkaWZmaWVoZWxsbWFuLmNjIGIvY3J5cHRvL3d2ZGlmZmllaGVsbG1hbi5jYworaW5kZXggN2MwYmYzMi4uMTVjZDEwNCAxMDA2NDQKKy0tLSBhL2NyeXB0by93dmRpZmZpZWhlbGxtYW4uY2MKKysrKyBiL2NyeXB0by93dmRpZmZpZWhlbGxtYW4uY2MKK0BAIC0zOSwyNCArMzksMjUgQEAgV3ZEaWZmaWVIZWxsbWFuOjpXdkRpZmZpZUhlbGxtYW4oY29uc3QgdW5zaWduZWQgY2hhciAqX2tleSwgaW50IF9rZXlsZW4sCisgeworICAgICBpbnQgcHJvYmxlbXM7CisgICAgIGludCBjaGVjazsKKy0gICAgeworKworIAlpbmZvID0gREhfbmV3KCk7CistCWluZm8tPnAgPSBCTl9iaW4yYm4oX2tleSwgX2tleWxlbiwgTlVMTCk7CisrCUJJR05VTSAqcCA9IEJOX2JpbjJibihfa2V5LCBfa2V5bGVuLCBOVUxMKTsKKyAvLyAJaW5mby0+cC0+dG9wID0gMDsKKyAvLyAJaW5mby0+cC0+ZG1heCA9IF9rZXlsZW4gKiA4IC8gQk5fQklUUzI7CisgLy8gCWluZm8tPnAtPm5lZyA9IDA7CisgLy8gCWluZm8tPnAtPmZsYWdzID0gMDsKKyAKKy0JaW5mby0+ZyA9IEJOX25ldygpOworLQlCTl9zZXRfd29yZChpbmZvLT5nLCBnZW5lcmF0b3IpOworKwlCSUdOVU0gKmcgPSBCTl9uZXcoKTsKKysJQk5fc2V0X3dvcmQoZywgZ2VuZXJhdG9yKTsKKyAvLyAJaW5mby0+Zy0+ZCA9ICZnZW5lcmF0b3I7CisgLy8gIAlpbmZvLT5nLT50b3AgPSAwOworIC8vICAJaW5mby0+Zy0+ZG1heCA9IDE7CisgLy8gIAlpbmZvLT5nLT5uZWcgPSAwOworIC8vICAJaW5mby0+Zy0+ZmxhZ3MgPSAwOworLSAgICB9CisgCistICAgIGNoZWNrID0gQk5fbW9kX3dvcmQoaW5mby0+cCwgMjQpOworKwlESF9zZXQwX3BxZyhpbmZvLCBwLCBOVUxMLCBnKTsKKysKKysgICAgY2hlY2sgPSBCTl9tb2Rfd29yZChwLCAyNCk7CisgICAgIERIX2NoZWNrKGluZm8sICZwcm9ibGVtcyk7CisgICAgIGlmIChwcm9ibGVtcyAmIERIX0NIRUNLX1BfTk9UX1BSSU1FKQorICAJbG9nKFd2TG9nOjpFcnJvciwgIlVzaW5nIGEgY29tcG9zaXRlIG51bWJlciBmb3IgYXV0aGVudGljYXRpb24uXG4iKTsKK0BAIC02NCw3ICs2NSw3IEBAIFd2RGlmZmllSGVsbG1hbjo6V3ZEaWZmaWVIZWxsbWFuKGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9rZXksIGludCBfa2V5bGVuLAorIAlsb2coV3ZMb2c6OkVycm9yLCJVc2luZyBhbiB1bnNhZmUgcHJpbWUgbnVtYmVyIGZvciBhdXRoZW50aWNhdGlvbi5cbiIpOworICAgICBpZiAocHJvYmxlbXMgJiBESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SKQorIAlsb2coV3ZMb2c6OkVycm9yLCAiQ2FuIHlvdSBqdXN0IHVzZSAyIGluc3RlYWQgb2YgJXMgKCVzKSEhXG4iLAorLQkgICAgQk5fYm4yaGV4KGluZm8tPmcpLCBjaGVjayk7CisrCSAgICBCTl9ibjJoZXgoZyksIGNoZWNrKTsKKyAgICAgaWYgKHByb2JsZW1zICYgREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUikKKyAJbG9nKFd2TG9nOjpOb3RpY2UsICJVc2luZyBhIHN0cmFuZ2UgYXJndW1lbnQgZm9yIGRpZmZpZS1oZWxsbWFuLlxuIik7CisgICAgIERIX2dlbmVyYXRlX2tleShpbmZvKTsKK0BAIC03MiwxOCArNzMsMjMgQEAgV3ZEaWZmaWVIZWxsbWFuOjpXdkRpZmZpZUhlbGxtYW4oY29uc3QgdW5zaWduZWQgY2hhciAqX2tleSwgaW50IF9rZXlsZW4sCisgCisgaW50IFd2RGlmZmllSGVsbG1hbjo6cHViX2tleV9sZW4oKQorIHsKKy0gICAgcmV0dXJuIEJOX251bV9ieXRlcyhpbmZvLT5wdWJfa2V5KTsKKysgICAgY29uc3QgQklHTlVNICpwdWJfa2V5ID0gTlVMTDsKKysJREhfZ2V0MF9rZXkoaW5mbywgJnB1Yl9rZXksIE5VTEwpOworKyAgICByZXR1cm4gQk5fbnVtX2J5dGVzKHB1Yl9rZXkpOworIH0KKyAKKyBpbnQgV3ZEaWZmaWVIZWxsbWFuOjpnZXRfcHVibGljX3ZhbHVlKFd2QnVmICZvdXRidWYsIGludCBsZW4pCisgeworLSAgICBpbnQga2V5X2xlbiA9IEJOX251bV9ieXRlcyhpbmZvLT5wdWJfa2V5KTsKKysJY29uc3QgQklHTlVNICpwdWJfa2V5ID0gTlVMTDsKKysJREhfZ2V0MF9rZXkoaW5mbywgJnB1Yl9rZXksIE5VTEwpOworKworKyAgICBpbnQga2V5X2xlbiA9IEJOX251bV9ieXRlcyhwdWJfa2V5KTsKKyAgICAgaWYgKGtleV9sZW4gPCBsZW4pCisgCWxlbiA9IGtleV9sZW47CisgCisgICAgIC8vIGFsbG9jYSBpcyBzdGFjayBhbGxvY2F0ZWQsIGRvbid0IGZyZWUgaXQuCisgICAgIHVuc2lnbmVkIGNoYXIgKmZvbyA9ICh1bnNpZ25lZCBjaGFyKilhbGxvY2Eoa2V5X2xlbik7CistICAgIEJOX2JuMmJpbihpbmZvLT5wdWJfa2V5LCBmb28pOworKyAgICBCTl9ibjJiaW4ocHViX2tleSwgZm9vKTsKKyAgICAgb3V0YnVmLnB1dChmb28sIGxlbik7CisgCisgICAgIHJldHVybiBsZW47CitAQCAtOTEsOCArOTcsMTAgQEAgaW50IFd2RGlmZmllSGVsbG1hbjo6Z2V0X3B1YmxpY192YWx1ZShXdkJ1ZiAmb3V0YnVmLCBpbnQgbGVuKQorIAorIGJvb2wgV3ZEaWZmaWVIZWxsbWFuOjpjcmVhdGVfc2VjcmV0KFd2QnVmICZpbmJ1Ziwgc2l6ZV90IGluX2xlbiwgV3ZCdWYmIG91dGJ1ZikKKyB7CisrICAgY29uc3QgQklHTlVNICpwdWJfa2V5ID0gTlVMTDsKKysgICBESF9nZXQwX2tleShpbmZvLCAmcHViX2tleSwgTlVMTCk7CisgICAgIHVuc2lnbmVkIGNoYXIgKmZvbyA9ICh1bnNpZ25lZCBjaGFyICopYWxsb2NhKERIX3NpemUoaW5mbykpOworLSAgIGxvZygiTXkgcHVibGljIHZhbHVlXG4lc1xuWW91ciBwdWJsaWMgdmFsdWVcbiVzXG4iLEJOX2JuMmhleChpbmZvLT5wdWJfa2V5KSwKKysgICBsb2coIk15IHB1YmxpYyB2YWx1ZVxuJXNcbllvdXIgcHVibGljIHZhbHVlXG4lc1xuIixCTl9ibjJoZXgocHViX2tleSksCisgICAgICAgIGhleGR1bXBfYnVmZmVyKGluYnVmLnBlZWsoMCwgaW5fbGVuKSwgaW5fbGVuLCBmYWxzZSkpOworICAgICBpbnQgbGVuID0gREhfY29tcHV0ZV9rZXkgKGZvbywgQk5fYmluMmJuKGluYnVmLmdldChpbl9sZW4pLCBpbl9sZW4sIE5VTEwpLCAKKyAJCQkgICAgICBpbmZvKTsKK2RpZmYgLS1naXQgYS9jcnlwdG8vd3ZkaWdlc3QuY2MgYi9jcnlwdG8vd3ZkaWdlc3QuY2MKK2luZGV4IDE1MGVkZWUuLjczZWJiNWQgMTAwNjQ0CistLS0gYS9jcnlwdG8vd3ZkaWdlc3QuY2MKKysrKyBiL2NyeXB0by93dmRpZ2VzdC5jYworQEAgLTEzLDEwICsxMywxMCBAQAorIAorIC8qKioqKiBXdkVWUE1ERGlnZXN0ICoqKioqLworIAorLVd2RVZQTUREaWdlc3Q6Old2RVZQTUREaWdlc3QoY29uc3QgZW52X21kX3N0ICpfZXZwbWQpIDoKKytXdkVWUE1ERGlnZXN0OjpXdkVWUE1ERGlnZXN0KGNvbnN0IEVWUF9NRCpfZXZwbWQpIDoKKyAgICAgZXZwbWQoX2V2cG1kKSwgYWN0aXZlKGZhbHNlKQorIHsKKy0gICAgZXZwY3R4ID0gbmV3IEVWUF9NRF9DVFg7CisrICAgIGV2cGN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisgICAgIF9yZXNldCgpOworIH0KKyAKK0BAIC0yNCw3ICsyNCw3IEBAIFd2RVZQTUREaWdlc3Q6Old2RVZQTUREaWdlc3QoY29uc3QgZW52X21kX3N0ICpfZXZwbWQpIDoKKyBXdkVWUE1ERGlnZXN0Ojp+V3ZFVlBNRERpZ2VzdCgpCisgeworICAgICBjbGVhbnVwKCk7CistICAgIGRlbGV0ZSBldnBjdHg7CisrICAgIEVWUF9NRF9DVFhfZnJlZShldnBjdHgpOworIH0KKyAKKyAKK0BAIC02MCw3ICs2MCw3IEBAIGJvb2wgV3ZFVlBNRERpZ2VzdDo6X3Jlc2V0KCkKKyAgICAgLy8gdGhlIHR5cGVjYXN0IGlzIG5lY2Vzc2FyeSBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCBkaWZmZXJlbnQKKyAgICAgLy8gdmVyc2lvbnMgb2Ygb3BlbnNzbC4gIE5vbmUgb2YgdGhlbSAqYWN0dWFsbHkqIGNoYW5nZSB0aGUgY29udGVudHMgb2YKKyAgICAgLy8gdGhlIHBvaW50ZXIuCistICAgIEVWUF9EaWdlc3RJbml0KGV2cGN0eCwgKGVudl9tZF9zdCAqKWV2cG1kKTsKKysgICAgRVZQX0RpZ2VzdEluaXQoZXZwY3R4LCBldnBtZCk7CisgICAgIGFjdGl2ZSA9IHRydWU7CisgICAgIHJldHVybiB0cnVlOworIH0KK0BAIC03OSw3ICs3OSw3IEBAIHZvaWQgV3ZFVlBNRERpZ2VzdDo6Y2xlYW51cCgpCisgCisgc2l6ZV90IFd2RVZQTUREaWdlc3Q6OmRpZ2VzdHNpemUoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIEVWUF9NRF9zaXplKChlbnZfbWRfc3QgKilldnBtZCk7CisrICAgIHJldHVybiBFVlBfTURfc2l6ZShldnBtZCk7CisgfQorIAorIAorQEAgLTEwNCwxNCArMTA0LDE0IEBAIFd2SE1BQ0RpZ2VzdDo6V3ZITUFDRGlnZXN0KFd2RVZQTUREaWdlc3QgKl9kaWdlc3QsCisgeworICAgICBrZXkgPSBuZXcgdW5zaWduZWQgY2hhcltrZXlzaXplXTsKKyAgICAgbWVtY3B5KGtleSwgX2tleSwga2V5c2l6ZSk7CistICAgIGhtYWNjdHggPSBuZXcgSE1BQ19DVFg7CisrICAgIGhtYWNjdHggPSBITUFDX0NUWF9uZXcoKTsKKyAgICAgX3Jlc2V0KCk7CisgfQorIAorIFd2SE1BQ0RpZ2VzdDo6fld2SE1BQ0RpZ2VzdCgpCisgeworICAgICBjbGVhbnVwKCk7CistICAgIGRlbGV0ZSBobWFjY3R4OworKyAgICBITUFDX0NUWF9mcmVlKGhtYWNjdHgpOworICAgICBkZWxldGV2IGtleTsKKyAgICAgZGVsZXRlIGRpZ2VzdDsKKyB9CitAQCAtMTQ1LDcgKzE0NSw3IEBAIGJvb2wgV3ZITUFDRGlnZXN0OjpfZmluaXNoKFd2QnVmICZvdXRidWYpCisgYm9vbCBXdkhNQUNEaWdlc3Q6Ol9yZXNldCgpCisgeworICAgICBjbGVhbnVwKCk7CistICAgIEhNQUNfSW5pdChobWFjY3R4LCBrZXksIGtleXNpemUsIChlbnZfbWRfc3QgKilkaWdlc3QtPmdldGV2cG1kKCkpOworKyAgICBITUFDX0luaXQoaG1hY2N0eCwga2V5LCBrZXlzaXplLCBkaWdlc3QtPmdldGV2cG1kKCkpOworICAgICBhY3RpdmUgPSB0cnVlOworICAgICByZXR1cm4gdHJ1ZTsKKyB9CitkaWZmIC0tZ2l0IGEvY3J5cHRvL3d2b2NzcC5jYyBiL2NyeXB0by93dm9jc3AuY2MKK2luZGV4IGRkYjJkZTQuLjdkNWRhMDcgMTAwNjQ0CistLS0gYS9jcnlwdG8vd3ZvY3NwLmNjCisrKysgYi9jcnlwdG8vd3ZvY3NwLmNjCitAQCAtMTE4LDkgKzExOCwxMCBAQCBib29sIFd2T0NTUFJlc3A6OmNoZWNrX25vbmNlKGNvbnN0IFd2T0NTUFJlcSAmcmVxKSBjb25zdAorIAorIGJvb2wgV3ZPQ1NQUmVzcDo6c2lnbmVkYnljZXJ0KGNvbnN0IFd2WDUwOSAmY2VydCkgY29uc3QKKyB7CistICAgIEVWUF9QS0VZICpza2V5ID0gWDUwOV9nZXRfcHVia2V5KGNlcnQuY2VydCk7CistICAgIGludCBpID0gT0NTUF9CQVNJQ1JFU1BfdmVyaWZ5KGJzLCBza2V5LCAwKTsKKy0gICAgRVZQX1BLRVlfZnJlZShza2V5KTsKKysgICAgU1RBQ0tfT0YoWDUwOSkgKnNrID0gc2tfWDUwOV9uZXdfbnVsbCgpOworKyAgICBza19YNTA5X3B1c2goc2ssIGNlcnQuY2VydCk7CisrICAgIGludCBpID0gT0NTUF9iYXNpY192ZXJpZnkoYnMsIHNrLCBOVUxMLCBPQ1NQX05PVkVSSUZZKTsKKysgICAgc2tfWDUwOV9mcmVlKHNrKTsKKyAKKyAgICAgaWYoaSA+IDApCisgICAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0xMzEsMzMgKzEzMiwxNSBAQCBib29sIFd2T0NTUFJlc3A6OnNpZ25lZGJ5Y2VydChjb25zdCBXdlg1MDkgJmNlcnQpIGNvbnN0CisgCisgV3ZYNTA5IFd2T0NTUFJlc3A6OmdldF9zaWduaW5nX2NlcnQoKSBjb25zdAorIHsKKy0gICAgaWYgKCFicyB8fCAhc2tfWDUwOV9udW0oYnMtPmNlcnRzKSkKKysgICAgY29uc3QgU1RBQ0tfT0YoWDUwOSkgKmNlcnRzID0gT0NTUF9yZXNwX2dldDBfY2VydHMoYnMpOworKyAgICBpZiAoIWJzIHx8ICFza19YNTA5X251bShjZXJ0cykpCisgICAgICAgICByZXR1cm4gV3ZYNTA5KCk7CisgCistICAgIC8vIG5vdGU6IHRoZSBmb2xsb3dpbmcgYml0IG9mIGNvZGUgaXMgdGFrZW4gYWxtb3N0IHZlcmJhdGltIGZyb20KKy0gICAgLy8gb2NzcF92ZnkuYyBpbiBPcGVuU1NMIDAuOS44LiBDb3B5cmlnaHQgYW5kIGF0dHJpYnV0aW9uIHNob3VsZCAKKy0gICAgLy8gcHJvcGVybHkgYmVsb25nIHRvIHRoZW0KKy0KKy0gICAgT0NTUF9SRVNQSUQgKmlkID0gYnMtPnRic1Jlc3BvbnNlRGF0YS0+cmVzcG9uZGVySWQ7CistCistICAgIGlmIChpZC0+dHlwZSA9PSBWX09DU1BfUkVTUElEX05BTUUpCistICAgIHsKKy0gICAgICAgIFg1MDkgKnggPSBYNTA5X2ZpbmRfYnlfc3ViamVjdChicy0+Y2VydHMsIGlkLT52YWx1ZS5ieU5hbWUpOworLSAgICAgICAgaWYgKHgpCistICAgICAgICAgICAgcmV0dXJuIFd2WDUwOShYNTA5X2R1cCh4KSk7CisrICAgIFg1MDkgKnNpZ25lciA9IE5VTEw7CisrICAgIGlmIChPQ1NQX3Jlc3BfZ2V0MF9zaWduZXIoYnMsICZzaWduZXIsIE5VTEwpID09IDEpIHsKKysgICAgICAgIHJldHVybiBXdlg1MDkoWDUwOV9kdXAoc2lnbmVyKSk7CisgICAgIH0KKyAKKy0gICAgaWYgKGlkLT52YWx1ZS5ieUtleS0+bGVuZ3RoICE9IFNIQV9ESUdFU1RfTEVOR1RIKSByZXR1cm4gTlVMTDsKKy0gICAgdW5zaWduZWQgY2hhciB0bXBoYXNoW1NIQV9ESUdFU1RfTEVOR1RIXTsKKy0gICAgdW5zaWduZWQgY2hhciAqa2V5aGFzaCA9IGlkLT52YWx1ZS5ieUtleS0+ZGF0YTsKKy0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBza19YNTA5X251bShicy0+Y2VydHMpOyBpKyspCistICAgIHsKKy0gICAgICAgIFg1MDkgKnggPSBza19YNTA5X3ZhbHVlKGJzLT5jZXJ0cywgaSk7CistICAgICAgICBYNTA5X3B1YmtleV9kaWdlc3QoeCwgRVZQX3NoYTEoKSwgdG1waGFzaCwgTlVMTCk7CistICAgICAgICBpZighbWVtY21wKGtleWhhc2gsIHRtcGhhc2gsIFNIQV9ESUdFU1RfTEVOR1RIKSkKKy0gICAgICAgICAgICByZXR1cm4gV3ZYNTA5KFg1MDlfZHVwKHgpKTsKKy0gICAgfQorLSAgICAKKyAgICAgcmV0dXJuIFd2WDUwOSgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9jcnlwdG8vd3Z4NTA5LmNjIGIvY3J5cHRvL3d2eDUwOS5jYworaW5kZXggZTQ5MjVjZS4uOTg0MTU2YyAxMDA2NDQKKy0tLSBhL2NyeXB0by93dng1MDkuY2MKKysrKyBiL2NyeXB0by93dng1MDkuY2MKK0BAIC05NzQsNyArOTc0LDcgQEAgc3RhdGljIHZvaWQgYWRkX2FpYShXdlN0cmluZ1Bhcm0gdHlwZSwgV3ZTdHJpbmcgaWRlbnRpZmllciwKKyAgICAgc2tfQUNDRVNTX0RFU0NSSVBUSU9OX3B1c2goYWluZm8sIGFjYyk7CisgICAgIGFjYy0+bWV0aG9kID0gT0JKX3R4dDJvYmoodHlwZS5jc3RyKCksIDApOworICAgICBhY2MtPmxvY2F0aW9uLT50eXBlID0gR0VOX1VSSTsKKy0gICAgYWNjLT5sb2NhdGlvbi0+ZC5pYTUgPSBNX0FTTjFfSUE1U1RSSU5HX25ldygpOworKyAgICBhY2MtPmxvY2F0aW9uLT5kLmlhNSA9IEFTTjFfSUE1U1RSSU5HX25ldygpOworICAgICB1bnNpZ25lZCBjaGFyICpjaWRlbnQgCisgCT0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGlkZW50aWZpZXIuZWRpdCgpKTsKKyAgICAgQVNOMV9TVFJJTkdfc2V0KGFjYy0+bG9jYXRpb24tPmQuaWE1LCBjaWRlbnQsIGlkZW50aWZpZXIubGVuKCkpOworQEAgLTEwNTksNyArMTA1OSw3IEBAIHZvaWQgV3ZYNTA5OjpzZXRfY3JsX3VybHMoV3ZTdHJpbmdMaXN0ICZ1cmxzKQorICAgICAgICAgR0VORVJBTF9OQU1FUyAqdXJpcyA9IEdFTkVSQUxfTkFNRVNfbmV3KCk7CisgICAgICAgICBHRU5FUkFMX05BTUUgKnVyaSA9IEdFTkVSQUxfTkFNRV9uZXcoKTsKKyAgICAgICAgIHVyaS0+dHlwZSA9IEdFTl9VUkk7CistICAgICAgICB1cmktPmQuaWE1ID0gTV9BU04xX0lBNVNUUklOR19uZXcoKTsKKysgICAgICAgIHVyaS0+ZC5pYTUgPSBBU04xX0lBNVNUUklOR19uZXcoKTsKKyAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNpZGVudAorIAkgICAgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oaSgpLmVkaXQoKSk7ICAgIAorICAgICAgICAgQVNOMV9TVFJJTkdfc2V0KHVyaS0+ZC5pYTUsIGNpZGVudCwgaSgpLmxlbigpKTsKK0BAIC0xMTYyLDEwICsxMTYyLDExIEBAIFd2U3RyaW5nIFd2WDUwOTo6Z2V0X2V4dGVuc2lvbihpbnQgbmlkKSBjb25zdAorICNlbHNlCisgICAgICAgICAgICAgWDUwOVYzX0VYVF9NRVRIT0QgKm1ldGhvZCA9IFg1MDlWM19FWFRfZ2V0KGV4dCk7CisgI2VuZGlmCisrICAgICAgICAgICAgQVNOMV9PQ1RFVF9TVFJJTkcgKmV4dF9kYXRhX3N0ciA9IFg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dCk7CisgICAgICAgICAgICAgaWYgKCFtZXRob2QpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBXdkR5bkJ1ZiBidWY7CistICAgICAgICAgICAgICAgIGJ1Zi5wdXQoZXh0LT52YWx1ZS0+ZGF0YSwgZXh0LT52YWx1ZS0+bGVuZ3RoKTsKKysgICAgICAgICAgICAgICAgYnVmLnB1dChleHRfZGF0YV9zdHItPmRhdGEsIGV4dF9kYXRhX3N0ci0+bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgcmV0dmFsID0gYnVmLmdldHN0cigpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlCitAQCAtMTE3NiwyMSArMTE3NywyMSBAQCBXdlN0cmluZyBXdlg1MDk6OmdldF9leHRlbnNpb24oaW50IG5pZCkgY29uc3QKKyAgICAgICAgICAgICAgICAgLy8gZXZlbiB0aG91Z2ggaXQncyBjb25zdCAoYXQgbGVhc3QgYXMgb2YgdmVyc2lvbiAwLjkuOGUpLiAKKyAgICAgICAgICAgICAgICAgLy8gZ2FoLgorICNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MDA5MDgwMGZMCistICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBleHRfdmFsdWVfZGF0YSA9IGV4dC0+dmFsdWUtPmRhdGE7CisrICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKiBleHRfdmFsdWVfZGF0YSA9IGV4dF9kYXRhX3N0ci0+ZGF0YTsKKyAjZWxzZQorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpleHRfdmFsdWVfZGF0YSA9IGV4dC0+dmFsdWUtPmRhdGE7CisgI2VuZGlmCisgICAgICAgICAgICAgICAgIGlmIChtZXRob2QtPml0KQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBleHRfZGF0YSA9IEFTTjFfaXRlbV9kMmkoTlVMTCwgJmV4dF92YWx1ZV9kYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dC0+dmFsdWUtPmxlbmd0aCwgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGFfc3RyLT5sZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTjFfSVRFTV9wdHIobWV0aG9kLT5pdCkpOworICAgICAgICAgICAgICAgICAgICAgVFJBQ0UoIkFwcGxpZWQgZ2VuZXJpYyBjb252ZXJzaW9uIVxuIik7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBleHRfZGF0YSA9IG1ldGhvZC0+ZDJpKE5VTEwsICZleHRfdmFsdWVfZGF0YSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0LT52YWx1ZS0+bGVuZ3RoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X2RhdGFfc3RyLT5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgVFJBQ0UoIkFwcGxpZWQgbWV0aG9kIHNwZWNpZmljIGNvbnZlcnNpb24hXG4iKTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAKK0BAIC0xMzI1LDEzICsxMzI2LDEzIEBAIGJvb2wgV3ZYNTA5Ojp2ZXJpZnkoV3ZCdWYgJm9yaWdpbmFsLCBXdlN0cmluZ1Bhcm0gc2lnbmF0dXJlKSBjb25zdAorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAKKyAgICAgLyogVmVyaWZ5IHRoZSBzaWduYXR1cmUgKi8KKy0gICAgRVZQX01EX0NUWCBzaWdfY3R4OworLSAgICBFVlBfVmVyaWZ5SW5pdCgmc2lnX2N0eCwgRVZQX3NoYTEoKSk7CistICAgIEVWUF9WZXJpZnlVcGRhdGUoJnNpZ19jdHgsIG9yaWdpbmFsLnBlZWsoMCwgb3JpZ2luYWwudXNlZCgpKSwKKysgICAgRVZQX01EX0NUWCAqc2lnX2N0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrICAgIEVWUF9WZXJpZnlJbml0KHNpZ19jdHgsIEVWUF9zaGExKCkpOworKyAgICBFVlBfVmVyaWZ5VXBkYXRlKHNpZ19jdHgsIG9yaWdpbmFsLnBlZWsoMCwgb3JpZ2luYWwudXNlZCgpKSwKKyAJCSAgICAgb3JpZ2luYWwudXNlZCgpKTsKKy0gICAgaW50IHNpZ19lcnIgPSBFVlBfVmVyaWZ5RmluYWwoJnNpZ19jdHgsIHNpZ19idWYsIHNpZ19zaXplLCBwayk7CisrICAgIGludCBzaWdfZXJyID0gRVZQX1ZlcmlmeUZpbmFsKHNpZ19jdHgsIHNpZ19idWYsIHNpZ19zaXplLCBwayk7CisgICAgIEVWUF9QS0VZX2ZyZWUocGspOworLSAgICBFVlBfTURfQ1RYX2NsZWFudXAoJnNpZ19jdHgpOyAvLyBBZ2Fpbiwgbm90IG15IGZhdWx0Li4uIAorKyAgICBFVlBfTURfQ1RYX2ZyZWUoc2lnX2N0eCk7IC8vIEFnYWluLCBub3QgbXkgZmF1bHQuLi4gCisgICAgIGlmIChzaWdfZXJyICE9IDEpIAorICAgICB7CisgICAgICAgICBkZWJ1ZygiVmVyaWZ5IGZhaWxlZCFcbiIpOworQEAgLTE0NTAsMTkgKzE0NTEsMTkgQEAgdm9pZCBXdlg1MDk6OnNldF9za2koKQorIHsKKyAgICAgQ0hFQ0tfQ0VSVF9FWElTVFNfU0VUKCJza2kiKTsKKyAKKy0gICAgQVNOMV9PQ1RFVF9TVFJJTkcgKm9jdCA9IE1fQVNOMV9PQ1RFVF9TVFJJTkdfbmV3KCk7CistICAgIEFTTjFfQklUX1NUUklORyAqcGsgPSBjZXJ0LT5jZXJ0X2luZm8tPmtleS0+cHVibGljX2tleTsKKysgICAgQVNOMV9PQ1RFVF9TVFJJTkcgKm9jdCA9IEFTTjFfT0NURVRfU1RSSU5HX25ldygpOworKyAgICBBU04xX0JJVF9TVFJJTkcgKnBrID0gWDUwOV9nZXQwX3B1YmtleV9iaXRzdHIoY2VydCk7CisgICAgIHVuc2lnbmVkIGNoYXIgcGtleV9kaWdbRVZQX01BWF9NRF9TSVpFXTsKKyAgICAgdW5zaWduZWQgaW50IGRpZ2xlbjsKKyAKKyAgICAgRVZQX0RpZ2VzdChway0+ZGF0YSwgcGstPmxlbmd0aCwgcGtleV9kaWcsICZkaWdsZW4sIEVWUF9zaGExKCksIE5VTEwpOworIAorLSAgICBNX0FTTjFfT0NURVRfU1RSSU5HX3NldChvY3QsIHBrZXlfZGlnLCBkaWdsZW4pOworKyAgICBBU04xX09DVEVUX1NUUklOR19zZXQob2N0LCBwa2V5X2RpZywgZGlnbGVuKTsKKyAgICAgWDUwOV9FWFRFTlNJT04gKmV4dCA9IFg1MDlWM19FWFRfaTJkKE5JRF9zdWJqZWN0X2tleV9pZGVudGlmaWVyLCAwLCAKKyAJCQkJCW9jdCk7CisgICAgIFg1MDlfYWRkX2V4dChjZXJ0LCBleHQsIC0xKTsKKyAgICAgWDUwOV9FWFRFTlNJT05fZnJlZShleHQpOworLSAgICBNX0FTTjFfT0NURVRfU1RSSU5HX2ZyZWUob2N0KTsKKysgICAgQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZShvY3QpOworIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9jcnlwdG8vd3Z4NTA5bWdyLmNjIGIvY3J5cHRvL3d2eDUwOW1nci5jYworaW5kZXggZjI0OWVlYy4uMTU2ZDNhNCAxMDA2NDQKKy0tLSBhL2NyeXB0by93dng1MDltZ3IuY2MKKysrKyBiL2NyeXB0by93dng1MDltZ3IuY2MKK0BAIC0zNTAsNiArMzUwLDggQEAgYm9vbCBXdlg1MDlNZ3I6OnNpZ25jZXJ0KFd2WDUwOSAmdW5zaWduZWRjZXJ0KSBjb25zdAorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgCisrICAgIHVpbnQzMl90IGV4X2ZsYWdzID0gWDUwOV9nZXRfZXh0ZW5zaW9uX2ZsYWdzKGNlcnQpOworKyAgICB1aW50MzJfdCBleF9rdXNhZ2UgPSBYNTA5X2dldF9rZXlfdXNhZ2UoY2VydCk7CisgICAgIGlmIChjZXJ0ID09IHVuc2lnbmVkY2VydC5jZXJ0KQorICAgICB7CisgCWRlYnVnKCJTZWxmIFNpZ25pbmchXG4iKTsKK0BAIC0zNjIsOCArMzY0LDggQEAgYm9vbCBXdlg1MDlNZ3I6OnNpZ25jZXJ0KFd2WDUwOSAmdW5zaWduZWRjZXJ0KSBjb25zdAorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgI2VuZGlmCistICAgIGVsc2UgaWYgKCEoKGNlcnQtPmV4X2ZsYWdzICYgRVhGTEFHX0tVU0FHRSkgJiYgCistICAgICAgICAgICAgICAgKGNlcnQtPmV4X2t1c2FnZSAmIEtVX0tFWV9DRVJUX1NJR04pKSkKKysgICAgZWxzZSBpZiAoISgoZXhfZmxhZ3MgJiBFWEZMQUdfS1VTQUdFKSAmJiAKKysgICAgICAgICAgICAgICAoZXhfa3VzYWdlICYgS1VfS0VZX0NFUlRfU0lHTikpKQorICAgICB7CisgCWRlYnVnKCJUaGlzIENlcnRpZmljYXRlIGlzIG5vdCBhbGxvd2VkIHRvIHNpZ24gY2VydGlmaWNhdGVzIVxuIik7CisgCXJldHVybiBmYWxzZTsKK0BAIC0zOTAsNiArMzkyLDggQEAgYm9vbCBXdlg1MDlNZ3I6OnNpZ25jZXJ0KFd2WDUwOSAmdW5zaWduZWRjZXJ0KSBjb25zdAorIAorIGJvb2wgV3ZYNTA5TWdyOjpzaWduY3JsKFd2Q1JMICZjcmwpIGNvbnN0CisgeworKyAgICB1aW50MzJfdCBleF9mbGFncyA9IFg1MDlfZ2V0X2V4dGVuc2lvbl9mbGFncyhjZXJ0KTsKKysgICAgdWludDMyX3QgZXhfa3VzYWdlID0gWDUwOV9nZXRfa2V5X3VzYWdlKGNlcnQpOworICAgICBpZiAoIWlzb2soKSB8fCAhY3JsLmlzb2soKSkKKyAgICAgeworICAgICAgICAgZGVidWcoV3ZMb2c6Oldhcm5pbmcsICJBc2tlZCB0byBzaWduIENSTCwgYnV0IGNlcnRpZmljYXRlIG9yIENSTCAob3IgIgorQEAgLTQwMywxMiArNDA3LDEyIEBAIGJvb2wgV3ZYNTA5TWdyOjpzaWduY3JsKFd2Q1JMICZjcmwpIGNvbnN0CisgICAgICAgICAgICAgICAiQ1JMcyFcbiIpOworICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CistICAgIGVsc2UgaWYgKCEoKGNlcnQtPmV4X2ZsYWdzICYgRVhGTEFHX0tVU0FHRSkgJiYgCistCSAgKGNlcnQtPmV4X2t1c2FnZSAmIEtVX0NSTF9TSUdOKSkpCisrICAgIGVsc2UgaWYgKCEoKGV4X2ZsYWdzICYgRVhGTEFHX0tVU0FHRSkgJiYgCisrCSAgKGV4X2t1c2FnZSAmIEtVX0NSTF9TSUdOKSkpCisgICAgIHsKKyAJZGVidWcoIkNlcnRpZmljYXRlIG5vdCBhbGxvd2VkIHRvIHNpZ24gQ1JMcyEgKCVzICVzKVxuIiwgCistICAgICAgICAgICAgICAoY2VydC0+ZXhfZmxhZ3MgJiBFWEZMQUdfS1VTQUdFKSwKKy0JICAgICAgKGNlcnQtPmV4X2t1c2FnZSAmIEtVX0NSTF9TSUdOKSk7CisrICAgICAgICAgICAgICAoZXhfZmxhZ3MgJiBFWEZMQUdfS1VTQUdFKSwKKysJICAgICAgKGV4X2t1c2FnZSAmIEtVX0NSTF9TSUdOKSk7CisgCXJldHVybiBmYWxzZTsKKyAgICAgfQorICNlbmRpZgorQEAgLTQ1NCw3ICs0NTgsNiBAQCBXdlN0cmluZyBXdlg1MDlNZ3I6OnNpZ24oV3ZCdWYgJmRhdGEpIGNvbnN0CisgeworICAgICBhc3NlcnQocnNhKTsKKyAKKy0gICAgRVZQX01EX0NUWCBzaWdfY3R4OworICAgICB1bnNpZ25lZCBjaGFyIHNpZ19idWZbNDA5Nl07CisgICAgIAorICAgICBFVlBfUEtFWSAqcGsgPSBFVlBfUEtFWV9uZXcoKTsKK0BAIC00NjcsMjAgKzQ3MCwyMiBAQCBXdlN0cmluZyBXdlg1MDlNZ3I6OnNpZ24oV3ZCdWYgJmRhdGEpIGNvbnN0CisgCXJldHVybiBXdlN0cmluZzo6bnVsbDsKKyAgICAgfQorICAgICAKKy0gICAgRVZQX1NpZ25Jbml0KCZzaWdfY3R4LCBFVlBfc2hhMSgpKTsKKy0gICAgRVZQX1NpZ25VcGRhdGUoJnNpZ19jdHgsIGRhdGEucGVlaygwLCBkYXRhLnVzZWQoKSksIGRhdGEudXNlZCgpKTsKKysgICAgRVZQX01EX0NUWCAqc2lnX2N0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrICAgIEVWUF9TaWduSW5pdChzaWdfY3R4LCBFVlBfc2hhMSgpKTsKKysgICAgRVZQX1NpZ25VcGRhdGUoc2lnX2N0eCwgZGF0YS5wZWVrKDAsIGRhdGEudXNlZCgpKSwgZGF0YS51c2VkKCkpOworICAgICB1bnNpZ25lZCBpbnQgc2lnX2xlbiA9IHNpemVvZihzaWdfYnVmKTsKKy0gICAgaW50IHNpZ19lcnIgPSBFVlBfU2lnbkZpbmFsKCZzaWdfY3R4LCBzaWdfYnVmLCAKKysgICAgaW50IHNpZ19lcnIgPSBFVlBfU2lnbkZpbmFsKHNpZ19jdHgsIHNpZ19idWYsIAorIAkJCQkmc2lnX2xlbiwgcGspOworICAgICBpZiAoc2lnX2VyciAhPSAxKQorICAgICB7CisgCWRlYnVnKCJFcnJvciB3aGlsZSBzaWduaW5nLlxuIik7CisgCUVWUF9QS0VZX2ZyZWUocGspOworKwlFVlBfTURfQ1RYX2ZyZWUoc2lnX2N0eCk7CisgCXJldHVybiBXdlN0cmluZzo6bnVsbDsKKyAgICAgfQorIAorICAgICBFVlBfUEtFWV9mcmVlKHBrKTsKKy0gICAgRVZQX01EX0NUWF9jbGVhbnVwKCZzaWdfY3R4KTsgLy8gdGhpcyBpc24ndCBteSBmYXVsdCA6Ly8KKysgICAgRVZQX01EX0NUWF9mcmVlKHNpZ19jdHgpOyAvLyB0aGlzIGlzbid0IG15IGZhdWx0IDovLworICAgICBXdkR5bkJ1ZiBidWY7CisgICAgIGJ1Zi5wdXQoc2lnX2J1Ziwgc2lnX2xlbik7CisgICAgIGRlYnVnKCJTaWduYXR1cmUgc2l6ZTogJXNcbiIsIGJ1Zi51c2VkKCkpOworZGlmZiAtLWdpdCBhL2luY2x1ZGUvd3ZkaWZmaWVoZWxsbWFuLmggYi9pbmNsdWRlL3d2ZGlmZmllaGVsbG1hbi5oCitpbmRleCBhZjc1ZmZhLi5hMmQwMDFmIDEwMDY0NAorLS0tIGEvaW5jbHVkZS93dmRpZmZpZWhlbGxtYW4uaAorKysrIGIvaW5jbHVkZS93dmRpZmZpZWhlbGxtYW4uaAorQEAgLTI3LDcgKzI3LDcgQEAgcHVibGljOgorICAgICBib29sIGNyZWF0ZV9zZWNyZXQoV3ZCdWYgJmluYnVmLCBzaXplX3QgaW5fbGVuLCBXdkJ1ZiYgb3V0YnVmKTsKKyAKKyBwcm90ZWN0ZWQ6CistICAgIHN0cnVjdCBkaF9zdCAqaW5mbzsKKysgICAgREggKmluZm87CisgICAgIEJOX1VMT05HIGdlbmVyYXRvcjsKKyAKKyBwcml2YXRlOgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvd3ZkaWdlc3QuaCBiL2luY2x1ZGUvd3ZkaWdlc3QuaAoraW5kZXggZmRjMzliZC4uZjJlZWQ0MCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvd3ZkaWdlc3QuaAorKysrIGIvaW5jbHVkZS93dmRpZ2VzdC5oCitAQCAtOSwxMCArOSw4IEBACisgCisgI2luY2x1ZGUgInd2ZW5jb2Rlci5oIgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAKKy1zdHJ1Y3QgZW52X21kX3N0OworLXN0cnVjdCBlbnZfbWRfY3R4X3N0OworLXN0cnVjdCBobWFjX2N0eF9zdDsKKyAKKyAvKioKKyAgKiBTdXBlcmNsYXNzIGZvciBhbGwgbWVzc2FnZSBkaWdlc3RzLgorQEAgLTQ1LDggKzQzLDggQEAgcHVibGljOgorIGNsYXNzIFd2RVZQTUREaWdlc3QgOiBwdWJsaWMgV3ZEaWdlc3QKKyB7CisgICAgIGZyaWVuZCBjbGFzcyBXdkhNQUNEaWdlc3Q7CistICAgIGNvbnN0IGVudl9tZF9zdCAqZXZwbWQ7CistICAgIGVudl9tZF9jdHhfc3QgKmV2cGN0eDsKKysgICAgY29uc3QgRVZQX01EICpldnBtZDsKKysgICAgRVZQX01EX0NUWCAqZXZwY3R4OworICAgICBib29sIGFjdGl2ZTsKKyAKKyBwdWJsaWM6CitAQCAtNTQsMTMgKzUyLDEzIEBAIHB1YmxpYzoKKyAgICAgdmlydHVhbCBzaXplX3QgZGlnZXN0c2l6ZSgpIGNvbnN0OworIAorIHByb3RlY3RlZDoKKy0gICAgV3ZFVlBNRERpZ2VzdChjb25zdCBlbnZfbWRfc3QgKl9ldnBtZCk7CisrICAgIFd2RVZQTUREaWdlc3QoY29uc3QgRVZQX01EICpfZXZwbWQpOworICAgICB2aXJ0dWFsIGJvb2wgX2VuY29kZShXdkJ1ZiAmaW5idWYsIFd2QnVmICZvdXRidWYsCisgICAgICAgICBib29sIGZsdXNoKTsgLy8gY29uc3VtZXMgaW5wdXQKKyAgICAgdmlydHVhbCBib29sIF9maW5pc2goV3ZCdWYgJm91dGJ1Zik7IC8vIG91dHB1dHMgZGlnZXN0CisgICAgIHZpcnR1YWwgYm9vbCBfcmVzZXQoKTsgLy8gc3VwcG9ydGVkOiByZXNldHMgZGlnZXN0IHZhbHVlCisgICAgIAorLSAgICBjb25zdCBlbnZfbWRfc3QgKmdldGV2cG1kKCkKKysgICAgY29uc3QgRVZQX01EICpnZXRldnBtZCgpCisgICAgICAgICB7IHJldHVybiBldnBtZDsgfQorIAorIHByaXZhdGU6CitAQCAtMTA0LDcgKzEwMiw3IEBAIGNsYXNzIFd2SE1BQ0RpZ2VzdCA6IHB1YmxpYyBXdkRpZ2VzdAorICAgICBXdkVWUE1ERGlnZXN0ICpkaWdlc3Q7CisgICAgIHVuc2lnbmVkIGNoYXIgKmtleTsKKyAgICAgc2l6ZV90IGtleXNpemU7CistICAgIGhtYWNfY3R4X3N0ICpobWFjY3R4OworKyAgICBITUFDX0NUWCAqaG1hY2N0eDsKKyAgICAgYm9vbCBhY3RpdmU7CisgCisgcHVibGljOgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvd3Z0cmlwbGVkZXMuaCBiL2luY2x1ZGUvd3Z0cmlwbGVkZXMuaAoraW5kZXggMTg1ZmU4YS4uYTQ0MmU3YSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvd3Z0cmlwbGVkZXMuaAorKysrIGIvaW5jbHVkZS93dnRyaXBsZWRlcy5oCitAQCAtNzAsMTEgKzcwLDExIEBAIHByb3RlY3RlZDoKKyAKKyBwcml2YXRlOgorICAgICBNb2RlIG1vZGU7CistICAgIGRlc19jYmxvY2sga2V5OworLSAgICBkZXNfa2V5X3NjaGVkdWxlIGRlc2tleTE7CistICAgIGRlc19rZXlfc2NoZWR1bGUgZGVza2V5MjsKKy0gICAgZGVzX2tleV9zY2hlZHVsZSBkZXNrZXkzOworLSAgICBkZXNfY2Jsb2NrIGl2ZWM7IC8vIGluaXRpYWxpemF0aW9uIHZlY3RvcgorKyAgICBERVNfY2Jsb2NrIGtleTsKKysgICAgREVTX2tleV9zY2hlZHVsZSBkZXNrZXkxOworKyAgICBERVNfa2V5X3NjaGVkdWxlIGRlc2tleTI7CisrICAgIERFU19rZXlfc2NoZWR1bGUgZGVza2V5MzsKKysgICAgREVTX2NibG9jayBpdmVjOyAvLyBpbml0aWFsaXphdGlvbiB2ZWN0b3IKKyAgICAgaW50IGl2ZWNvZmY7IC8vIGN1cnJlbnQgb2Zmc2V0IGludG8gaW5pdHZlYworIH07CisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXMvMDVfZ2NjLmRpZmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXMvMDVfZ2NjLmRpZmYKaW5kZXggOGU0ZmQwMy4uNjE2ODQzZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZzdHJlYW1zLzA1X2djYy5kaWZmCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2c3RyZWFtcy8wNV9nY2MuZGlmZgpAQCAtMSwxNiArMSwzIEBACi1JbmRleDogd3ZzdHJlYW1zLTQuNi4xL2NyeXB0by93dng1MDkuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3dnN0cmVhbXMtNC42LjEub3JpZy9jcnlwdG8vd3Z4NTA5LmNjCTIwMTEtMDUtMjAgMDA6MDI6MzguMTE5MTM2NTg0ICswMjAwCi0rKysgd3ZzdHJlYW1zLTQuNi4xL2NyeXB0by93dng1MDkuY2MJMjAxMS0wNS0yMCAwMDowMjoyNi4wMzUxMzY1ODkgKzAyMDAKLUBAIC0xMTU3LDcgKzExNTcsNyBAQAotICAgICAgICAgCi0gICAgICAgICBpZiAoZXh0KQotICAgICAgICAgewotLSAgICAgICAgICAgIFg1MDlWM19FWFRfTUVUSE9EICptZXRob2QgPSBYNTA5VjNfRVhUX2dldChleHQpOwotKyAgICAgICAgICAgIFg1MDlWM19FWFRfTUVUSE9EICptZXRob2QgPSAoWDUwOVYzX0VYVF9NRVRIT0QgKilYNTA5VjNfRVhUX2dldChleHQpOwotICAgICAgICAgICAgIGlmICghbWV0aG9kKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgV3ZEeW5CdWYgYnVmOwogSW5kZXg6IHd2c3RyZWFtcy00LjYuMS9pcHN0cmVhbXMvd3Z1bml4ZGdzb2NrZXQuY2MKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSB3dnN0cmVhbXMtNC42LjEub3JpZy9pcHN0cmVhbXMvd3Z1bml4ZGdzb2NrZXQuY2MJMjAxMS0wNS0yMCAwMDowMjozOC4zOTExMzY1ODQgKzAyMDAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2c3RyZWFtcy9vcGVuc3NsLWJ1aWxkZml4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZzdHJlYW1zL29wZW5zc2wtYnVpbGRmaXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3MDA1YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2c3RyZWFtcy9vcGVuc3NsLWJ1aWxkZml4LnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKK0luZGV4OiB3dnN0cmVhbXMtNC42LjEvY3J5cHRvL3d2eDUwOS5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHd2c3RyZWFtcy00LjYuMS5vcmlnL2NyeXB0by93dng1MDkuY2MKKysrKyB3dnN0cmVhbXMtNC42LjEvY3J5cHRvL3d2eDUwOS5jYworQEAgLTExNTcsNyArMTE1NywxMSBAQCBXdlN0cmluZyBXdlg1MDk6OmdldF9leHRlbnNpb24oaW50IG5pZCkKKyAgICAgICAgIAorICAgICAgICAgaWYgKGV4dCkKKyAgICAgICAgIHsKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAwMDAwTAorKyAgICAgICAgICAgIGNvbnN0IFg1MDlWM19FWFRfTUVUSE9EICptZXRob2QgPSBYNTA5VjNfRVhUX2dldChleHQpOworKyNlbHNlCisgICAgICAgICAgICAgWDUwOVYzX0VYVF9NRVRIT0QgKm1ldGhvZCA9IFg1MDlWM19FWFRfZ2V0KGV4dCk7CisrI2VuZGlmCisgICAgICAgICAgICAgaWYgKCFtZXRob2QpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBXdkR5bkJ1ZiBidWY7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXNfNC42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3d2ZGlhbC93dnN0cmVhbXNfNC42LjEuYmIKaW5kZXggZTNkNWU3ZC4uYjlmNjJkYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93dmRpYWwvd3ZzdHJlYW1zXzQuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3ZkaWFsL3d2c3RyZWFtc180LjYuMS5iYgpAQCAtMjEsNiArMjEsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNS1jaGVjay1mb3ItbGliZXhlY2luZm8tZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItd3ZydWxlcy5tay1Vc2UtX0RFRkFVTFRfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtYnVpbGRmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Gb3J3YXJkLXBvcnQtdG8tT3BlblNTTC0xLjEueC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjI3NjBkYWMzMWE0M2Q0NTJhMTlhMzE0N2JmZGU1NzFjIgpAQCAtMzQsMjMgKzM2LDIxIEBACiAKIEVYVFJBX09FQ09ORiA9ICIgLS13aXRob3V0LXRjbCAtLXdpdGhvdXQtcXQgLS13aXRob3V0LXBhbSAtLXdpdGhvdXQtdmFsZ3JpbmQiCiAKLVBBQ0tBR0VTX3ByZXBlbmQgPSAibGlidW5pY29uZiBsaWJ1bmljb25mLWRiZyAiCi1QQUNLQUdFU19wcmVwZW5kID0gInVuaWNvbmZkIHVuaWNvbmZkLWRiZyAiCi1QQUNLQUdFU19wcmVwZW5kID0gImxpYnd2c3RyZWFtcy1iYXNlIGxpYnd2c3RyZWFtcy1iYXNlLWRiZyAiCi1QQUNLQUdFU19wcmVwZW5kID0gImxpYnd2c3RyZWFtcy1leHRyYXMgbGlid3ZzdHJlYW1zLWV4dHJhcy1kYmcgIgorUEFDS0FHRVNfcHJlcGVuZCA9ICJsaWJ1bmljb25mICIKK1BBQ0tBR0VTX3ByZXBlbmQgPSAidW5pY29uZmQgIgorUEFDS0FHRVNfcHJlcGVuZCA9ICJsaWJ3dnN0cmVhbXMtYmFzZSAiCitQQUNLQUdFU19wcmVwZW5kID0gImxpYnd2c3RyZWFtcy1leHRyYXMgIgogUEFDS0FHRVNfcHJlcGVuZCA9ICIke1BOfS12YWxncmluZCAiCiAKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gImxpYnVuaWNvbmYtZGJnIHVuaWNvbmZkLWRiZyBsaWJ3dnN0cmVhbXMtYmFzZS1kYmcgbGlid3ZzdHJlYW1zLWV4dHJhcy1kYmciCisKIEZJTEVTX2xpYnVuaWNvbmYgICAgID0gIiR7bGliZGlyfS9saWJ1bmljb25mLnNvLioiCi1GSUxFU19saWJ1bmljb25mLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnL2xpYnVuaWNvbmYuc28uKiIKIAogRklMRVNfdW5pY29uZmQgICAgID0gIiR7c2JpbmRpcn0vdW5pY29uZmQgJHtzeXNjb25mZGlyfS91bmljb25mLmNvbmYgJHtsb2NhbHN0YXRlZGlyfS91bmljb25mIgotRklMRVNfdW5pY29uZmQtZGJnID0gIiR7c2JpbmRpcn0vLmRlYnVnL3VuaWNvbmZkIgogCiBGSUxFU19saWJ3dnN0cmVhbXMtYmFzZSAgICAgPSAiJHtsaWJkaXJ9L2xpYnd2dXRpbHMuc28uKiIKLUZJTEVTX2xpYnd2c3RyZWFtcy1iYXNlLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnL2xpYnd2dXRpbHMuc28uKiIKIAogRklMRVNfbGlid3ZzdHJlYW1zLWV4dHJhcyAgICAgPSAiJHtsaWJkaXJ9L2xpYnd2YmFzZS5zby4qICR7bGliZGlyfS9saWJ3dnN0cmVhbXMuc28uKiIKLUZJTEVTX2xpYnd2c3RyZWFtcy1leHRyYXMtZGJnID0gIiR7bGliZGlyfS8uZGVidWcvbGlid3ZiYXNlLnNvLiogJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJ3dnN0cmVhbXMuc28uKiIKIAogRklMRVNfJHtQTn0tdmFsZ3JpbmQgPSAiJHtsaWJkaXJ9L3ZhbGdyaW5kL3d2c3RyZWFtcy5zdXBwIgogUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jcHB6bXFfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3Bwem1xX2dpdC5iYgppbmRleCA0OTIwYmNlLi45YWZmNTljIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jcHB6bXFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2NwcHptcV9naXQuYmIKQEAgLTExLDEwICsxMSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vdXNyL2luY2x1ZGUKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vem1xLmhwcCAke0R9L3Vzci9pbmNsdWRlLwotfQoraW5oZXJpdCBjbWFrZQogCiBQQUNLQUdFUyA9ICIke1BOfS1kZXYiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGwvMDAwMS1kaGNwLWluY2x1ZGUtaWZfYXJwLmgtZnJvbS1saWJjLWluc3RlYWQtb2YtbGludXgtaGVhLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbC8wMDAxLWRoY3AtaW5jbHVkZS1pZl9hcnAuaC1mcm9tLWxpYmMtaW5zdGVhZC1vZi1saW51eC1oZWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRhNjU0MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGwvMDAwMS1kaGNwLWluY2x1ZGUtaWZfYXJwLmgtZnJvbS1saWJjLWluc3RlYWQtb2YtbGludXgtaGVhLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZDgyMzZkMWQ3ODlmNDk2YTE5M2RhZTVkMmExNWQ3MDZiODFmNjQ4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9NYXJ0aW49MjBIdW5kZWI9QzM9QjhsbD89IDxtYXJ0aW5AZ2Vhbml4LmNvbT4KK0RhdGU6IFRodSwgMTIgSnVsIDIwMTggMTA6MTk6NTAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGhjcDogaW5jbHVkZSBpZl9hcnAuaCBmcm9tIGxpYmMgaW5zdGVhZCBvZiBsaW51eCBoZWFkZXJzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CitUbzogZWxsQGxpc3RzLjAxLm9yZworCitDb21waWxhdGlvbiB3aXRoIG11c2wgbGliYyBmYWlscyBkdWUgdG8gcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QKK2FycHtyZXEscmVxX29sZCxoZHJ9JyBpbiBsaW51eC9pZl9hcnAuaCwgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWZpbmVkIGFuZAoraW5jbHVkZWQgaW4gbmV0L2lmX2FycC5oICh0aHJvdWdoIG5ldC9ldGhlcm5ldC5oIC0+IG5ldC9pZl9ldGhlci5oKS4KKworVGhlIG9ubHkgc3ltYm9scyB1c2VkIGZyb20gaWZfYXJwLmggaXMgQVJQSFJEX0VUSEVSLCBzbyBpdCBzaG91bGQgYmUKK3NhZmUgdG8gYXZvaWQgdGhlIGNvbXBpbGUgZXJyb3IgYnkgaW5jbHVkaW5nIHRoZSBpZl9hcnAuaCBoZWFkZXIgZnJvbQordGhlIGMtbGlicmFyeSBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWxsLzIwMTgtSnVseS8wMDEyNDQuaHRtbF0KK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBIdW5kZWLDuGxsIDxtYXJ0aW5AZ2Vhbml4LmNvbT4KKy0tLQorIGVsbC9kaGNwLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9lbGwvZGhjcC5jIGIvZWxsL2RoY3AuYworaW5kZXggNmM5MDM3MC4uMGQ5OWY3NCAxMDA2NDQKKy0tLSBhL2VsbC9kaGNwLmMKKysrKyBiL2VsbC9kaGNwLmMKK0BAIC0yNyw3ICsyNyw3IEBACisgI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyAjaW5jbHVkZSA8bmV0L2V0aGVybmV0Lmg+CisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgorKyNpbmNsdWRlIDxuZXQvaWZfYXJwLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHRpbWUuaD4KKyAKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGwvMDAwMS1lbGwtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbC8wMDAxLWVsbC1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNzJhOTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbC8wMDAxLWVsbC1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDRmOGM2ODc1N2IwNWQxMjM5MmNkMWE4YWVkMTc0Y2I4ZTU2ZjgwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCA1IEFwciAyMDE4IDE3OjE5OjQ0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVsbDogZml4IGJ1aWxkIHdpdGggbXVzbCBsaWJjCi0KLW11c2wgbGliYyBkb2Vzbid0IGltcGxlbWVudCBURU1QX0ZBSUxVUkVfUkVUUlkuIFVzZSB0aGUKLVRFTVBfRkFJTFVSRV9SRVRSWSBmcm9tIGdsaWJjIHRvIGZpeCBidWlsZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lbGwvMjAxOC1BcHJpbC8wMDEyMDkuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBlbGwvZGJ1cy5oIHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9lbGwvZGJ1cy5oIGIvZWxsL2RidXMuaAotaW5kZXggYTdjMDhkMi4uM2ZmNWUwZiAxMDA2NDQKLS0tLSBhL2VsbC9kYnVzLmgKLSsrKyBiL2VsbC9kYnVzLmgKLUBAIC0yOCw2ICsyOCwxNiBAQAotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gCi0rLyogdGFrZW4gZnJvbSBnbGliYyB1bmlzdGQuaCBmb3IgbXVzbCBzdXBwb3J0ICovCi0rI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKLSsjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSAgICAgICAgICAgICBcCi0rICAoX19leHRlbnNpb25fXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAoeyBsb25nIGludCBfX3Jlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsgICAgICBcCi0rICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOyAgXAotKyAgICAgICBfX3Jlc3VsdDsgfSkpCi0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi0tLSAKLTIuNC4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MjRiZDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZICA9ICJFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiRUxMIGlzIGEgREJVUyBsaWJyYXJ5IHdoaWNoIHByb3ZpZGVzIERCVVMgYmluZGluZ3MuIgotTElDRU5TRSAgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLVNFQ1RJT04gPSAibGlicyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiYjRhZWEwNmZhYmIyYWYxYWYwMWY4NjFmOGYzOTRjNzU5NTBiNmQ0NyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saWJzL2VsbC9lbGwuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZWxsLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbWtkaXIgJHtTfS9idWlsZC1hdXgKLX0KLQotREVQRU5EUyA9ICJkYnVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDI4Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjguYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkVMTCBpcyBhIERCVVMgbGlicmFyeSB3aGljaCBwcm92aWRlcyBEQlVTIGJpbmRpbmdzLiIKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCitTRUNUSU9OID0gImxpYnMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImQ1NzIyODFjYWVkZWYzNTdjMzkyYTdjOWFhNjVhM2IyMWExOGNmZGIiCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlicy9lbGwvZWxsLmdpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7U30vYnVpbGQtYXV4Cit9CisKK0RFUEVORFMgPSAiZGJ1cyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbS8wMDAxLUdsaWItVGhyZWFkcy1Qcml2YXRlLUZpeC1nb2JqLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4OTkwMjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDgzOGZlODRjMmRkY2M5YWY1MWMzNGY3NTFkZWZiZjNkZDBiYThhMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLamVsbCBBaGxzdGVkdCA8a2plbGxhaGxzdGVkdEBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIERlYyAyMDE3IDIwOjAwOjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEdsaWI6OlRocmVhZHM6OlByaXZhdGU6IEZpeCBnb2JqKCkKLQotQnVnIDc5MTcxMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vR05PTUUvZ2xpYm1tL2NvbW1pdC8zN2Q1N2FlOTU3MmI3ZDc0YWEzODVhMzAzMTNlY2VhZTdmMmQzZmNlXQotIGdsaWIvZ2xpYm1tL3RocmVhZHMuaCB8IDIgKy0KLSBnbGliL3NyYy90aHJlYWRzLmhnICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nbGliL2dsaWJtbS90aHJlYWRzLmggYi9nbGliL2dsaWJtbS90aHJlYWRzLmgKLWluZGV4IGY3ZTJiODJhLi4yYzBjYmU4YyAxMDA2NDQKLS0tLSBhL2dsaWIvZ2xpYm1tL3RocmVhZHMuaAotKysrIGIvZ2xpYi9nbGlibW0vdGhyZWFkcy5oCi1AQCAtNjU3LDcgKzY1Nyw3IEBAIHB1YmxpYzoKLSAgICAqLwotICAgaW5saW5lIHZvaWQgcmVwbGFjZShUKiBkYXRhKTsKLSAKLS0gIEdQcml2YXRlKiBnb2JqKCkgeyByZXR1cm4gZ29iamVjdF87IH0KLSsgIEdQcml2YXRlKiBnb2JqKCkgeyByZXR1cm4gJmdvYmplY3RfOyB9Ci0gCi0gcHJpdmF0ZToKLSAgIEdQcml2YXRlIGdvYmplY3RfOwotZGlmZiAtLWdpdCBhL2dsaWIvc3JjL3RocmVhZHMuaGcgYi9nbGliL3NyYy90aHJlYWRzLmhnCi1pbmRleCA4NmQ3YTE3Yi4uYzgyYTYxMzAgMTAwNjQ0Ci0tLS0gYS9nbGliL3NyYy90aHJlYWRzLmhnCi0rKysgYi9nbGliL3NyYy90aHJlYWRzLmhnCi1AQCAtNjI4LDcgKzYyOCw3IEBAIHB1YmxpYzoKLSAgICAqLwotICAgaW5saW5lIHZvaWQgcmVwbGFjZShUKiBkYXRhKTsKLSAKLS0gIEdQcml2YXRlKiBnb2JqKCkgeyByZXR1cm4gZ29iamVjdF87IH0KLSsgIEdQcml2YXRlKiBnb2JqKCkgeyByZXR1cm4gJmdvYmplY3RfOyB9Ci0gCi0gcHJpdmF0ZToKLSAgIEdQcml2YXRlIGdvYmplY3RfOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWJtbV8yLjU0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3MDY0MzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiQysrIGJpbmRpbmdzIGZvciB0aGUgZ2xpYiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ndGttbS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDJkZmZmZWJjNTZmZWM3NTI3YWFjNTNiN2E4OWQxZDggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAibW0tY29tbW9uIGdsaWItMi4wIGxpYnNpZ2MrKy0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZnRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGlibW0vJHtTSFJUX1ZFUn0vZ2xpYm1tLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL3JlbW92ZS1leGFtcGxlcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtR2xpYi1UaHJlYWRzLVByaXZhdGUtRml4LWdvYmoucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImRlZTVlYmUzMDlmNTk3NmMzZGFjZmNmNWM0M2EwNjJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjYzI4YzczMmIwNGQ3MGVkMzRmMGM5MjM1NDMxMjkwODNjZmI5MDU4MGVhNGEyYjRiZTViMzg4MDJiZjZhNGEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNAotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbAotCi0gICAgaW5zdGFsbCAtbSAwNjQ0IGdsaWIvZ2xpYm1tY29uZmlnLmggJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgc2NyaXB0cy9nbGlibW1fY2hlY2tfcGVybC5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyB8fCB0cnVlCi0KLSAgICBmb3IgaSBpbiBnZW5lcmF0ZV93cmFwX2luaXQucGwgZ21tcHJvYzsgZG8KLSAgICAgICAgc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vZ2xpYm1tLTIuNC9wcm9jLyRpCi0gICAgZG9uZQotfQotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2dsaWJtbS0qICR7bGliZGlyfS9nbGlibW0tMi40L2luY2x1ZGUvICR7bGliZGlyfS9nbGlibW0tMi40L3Byb2MvICR7bGliZGlyfS9naW9tbS0yLjQvaW5jbHVkZS8iCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGlibW1fMi41Ni4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjA0OGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYm1tXzIuNTYuMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkMrKyBiaW5kaW5ncyBmb3IgdGhlIGdsaWIgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrbW0ub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQyZGZmZmViYzU2ZmVjNzUyN2FhYzUzYjdhODlkMWQ4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcudG9vbHM7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gIm1tLWNvbW1vbiBnbGliLTIuMCBsaWJzaWdjKystMi4wIGdsaWItMi4wLW5hdGl2ZSIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGZ0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xpYm1tLyR7U0hSVF9WRVJ9L2dsaWJtbS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9yZW1vdmUtZXhhbXBsZXMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjVhYTdhNjAwODRmZTNlMDFkNzQ2Yzk2ZjRhMTE1MzAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlNzRmY2JhMGQyNDU0NTFjNThmYzhhMTk2ZTlkMTAzNzg5YmM1MTBlMWVlZTFhOWIxZTgxNmM1MjA5ZTc5YTkiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNAorICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbAorCisgICAgaW5zdGFsbCAtbSAwNjQ0IGdsaWIvZ2xpYm1tY29uZmlnLmggJHtEfSR7ZGF0YWRpcn0vZ2xpYm1tLTIuNC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgc2NyaXB0cy9nbGlibW1fY2hlY2tfcGVybC5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLyB8fCB0cnVlCisKKyAgICBmb3IgaSBpbiBnZW5lcmF0ZV93cmFwX2luaXQucGwgZ21tcHJvYzsgZG8KKyAgICAgICAgc2VkIC1pIC1lICcxcywuKiwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmRpcn0vZ2xpYm1tLTIuNC9wcm9jLyRpCisgICAgZG9uZQorfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2dsaWJtbS0qICR7bGliZGlyfS9nbGlibW0tMi40L2luY2x1ZGUvICR7bGliZGlyfS9nbGlibW0tMi40L3Byb2MvICR7bGliZGlyfS9naW9tbS0yLjQvaW5jbHVkZS8iCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgorU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9pbWFnZXMvbWV0YS1vZS1pbWFnZS1iYXNlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtb2UtaW1hZ2UtYmFzZS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjkyZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtb2UtaW1hZ2UtYmFzZS5iYgpAQCAtMCwwICsxLDcgQEAKK1NVTU1BUlkgPSAibWV0YS1vZSBidWlsZCB0ZXN0IGltYWdlIgorCitJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QiCisKK0xJQ0VOU0UgPSAiTUlUIgorCitpbmhlcml0IGNvcmUtaW1hZ2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLW9lLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtb2UtaW1hZ2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU2NTU0OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLW9lLWltYWdlLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSAgbWV0YS1vZS1pbWFnZS1iYXNlLmJiCisKK1NVTU1BUlkgPSAibWV0YS1vZSBidWlsZCB0ZXN0IGltYWdlIgorCitJTUFHRV9JTlNUQUxMICs9ICJwYWNrYWdlZ3JvdXAtbWV0YS1vZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLW9lLXB0ZXN0LWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtb2UtcHRlc3QtaW1hZ2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE2NmI5YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLW9lLXB0ZXN0LWltYWdlLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSAgbWV0YS1vZS1pbWFnZS1iYXNlLmJiCisKK1NVTU1BUlkgPSAibWV0YS1vZSBwdGVzdCB0ZXN0IGltYWdlIgorCitJTUFHRV9JTlNUQUxMICs9ICJwYWNrYWdlZ3JvdXAtbWV0YS1vZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MWNhYTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLWluaGVyaXQgZ25vbWViYXNlCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQ2ZjJhNDM1ODk0ODBkMjMxNTY3MmRhMGI1ODM5YjU2IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjBkMWU3NDY2Y2E0YzgzYzkyZTI5ZjllOGRmY2M4ZTU3MjFmZGYxMzM3ZjUzMTU3YmVkOTdiZTNiNzNiMzJhOCIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbW0tY29tbW9uL21tLWNvbW1vbl8wLjkuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5MWYzMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL21tLWNvbW1vbi9tbS1jb21tb25fMC45LjEyLmJiCkBAIC0wLDAgKzEsOSBAQAoraW5oZXJpdCBnbm9tZWJhc2UKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmUxYzYxNTg3ZGI5ODljNzY3NzM3NWE3MjliOTQ2NzIiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZWZmZGNjZTFlNWI1Mjc0Mjg4NGMyMzNlYzYwNGJmNmZkZWQxMmVlYTlkYTA3N2NlN2E2MmMwMmM4N2U3YzBiIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbmRjdGwvbmRjdGxfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbmRjdGwvbmRjdGxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0OGYxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9uZGN0bC9uZGN0bF9naXQuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJsaWJudmRpbW0gdXRpbGl0eSBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVXRpbGl0eSBsaWJyYXJ5IGZvciBtYW5hZ2luZyB0aGUgbGlibnZkaW1tIFwKKyhub24tdm9sYXRpbGUgbWVtb3J5IGRldmljZSkgc3ViLXN5c3RlbSBpbiB0aGUgTGludXgga2VybmVsLiBcCitUaGUgTElCTlZESU1NIHN1YnN5c3RlbSBwcm92aWRlcyBzdXBwb3J0IGZvciB0aHJlZSB0eXBlcyBvZiBcCitOVkRJTU1zLCBuYW1lbHksUE1FTSwgQkxLLCBhbmQgTlZESU1NIGRldmljZXMgdGhhdCBjYW4gXAorc2ltdWx0YW5lb3VzbHkgc3VwcG9ydCBib3RoIFBNRU0gYW5kIEJMSyBtb2RlIGFjY2Vzcy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdC5rZXJuZWwub3JnL2NnaXQvbGludXgva2VybmVsL2dpdC9udmRpbW0vbnZkaW1tLmdpdC90cmVlL0RvY3VtZW50YXRpb24vbnZkaW1tL252ZGltbS50eHQ/aD1saWJudmRpbW0tZm9yLW5leHQiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU2NjY1MTgwOWNhYzVkYTYwYzhiODBlOWU0ZTc5ZTA4IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1vZHVsZS1iYXNlIGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kCisKKyMgdjYyCitTUkNSRVYgPSAiMTFmNTYwZjQwNDhjMWQzOGI3MDExYTQ5NTY2ODcxYTFlOGEwN2M5NCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wbWVtL25kY3RsLmdpdCIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCBrbW9kIHVkZXYganNvbi1jIgorCitQViA9ICJ2NjIrZ2l0JHtTUkNQVn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXRlc3QgLS1lbmFibGUtZGVzdHJ1Y3RpdmUgLS1kaXNhYmxlLWRvY3MiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLXVuaXQtZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sIC0td2l0aG91dC1zeXN0ZW1kLXVuaXQtZGlyLCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgJHtTfS9hdXRvZ2VuLnNoCit9CisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZGN0bC1tb25pdG9yLnNlcnZpY2UiCisKK0NPTVBBVElCTEVfSE9TVD0nKHg4Nl82NCkuKicKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL29wZW5jbC1oZWFkZXJzL29wZW5jbC1oZWFkZXJzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL29wZW5jbC1oZWFkZXJzL29wZW5jbC1oZWFkZXJzX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWMxYmVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvb3BlbmNsLWhlYWRlcnMvb3BlbmNsLWhlYWRlcnNfZ2l0LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgID0gIk9wZW5DTCBBUEkgSGVhZGVycyIKK0RFU0NSSVBUSU9OID0gIk9wZW5DTCBjb21wdXRlIEFQSSBoZWFkZXJzIGZyb20gS2hyb25vcyBHcm91cCIKK0xJQ0VOU0UgID0gIktocm9ub3MiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kY2VmYzkwZjRjM2M2ODllYzBjMjQ4OTA2NGU3MjczYiIKK1NFQ1RJT04gPSAiYmFzZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI0MGM1ZDIyNmM3YzA3MDZmMDE3Njg4NGU5Yjk0YjM4ODY2NzljOTgzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9PcGVuQ0wtSGVhZGVycy5naXQiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9DTC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9DTC8qLmggJHtEfSR7aW5jbHVkZWRpcn0vQ0wKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL29wZW5jbC1pY2QtbG9hZGVyL29wZW5jbC1pY2QtbG9hZGVyX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL29wZW5jbC1pY2QtbG9hZGVyL29wZW5jbC1pY2QtbG9hZGVyX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzQ5YzhkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvb3BlbmNsLWljZC1sb2FkZXIvb3BlbmNsLWljZC1sb2FkZXJfZ2l0LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgID0gIk9wZW5DTCBJQ0QgTG9hZGVyIgorREVTQ1JJUFRJT04gPSAiT3BlbkNMIGNvbXB1dGUgSUNEIExvYWRlciBmcm9tIEtocm9ub3MgR3JvdXAiCitMSUNFTlNFICA9ICJLaHJvbm9zIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWVjNzI0NzMyY2U3MzI2OTQ4NjU3NGM3MThlZjBjNzliIgorU0VDVElPTiA9ICJiYXNlIgorCitpbmhlcml0IHBrZ2NvbmZpZyBjbWFrZQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImIzNDJmZjdiN2Y3MGE0YjNmMmNmYzUzMjE1YWY4ZmEyMGFkYzNkODYiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL09wZW5DTC1JQ0QtTG9hZGVyLmdpdCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vYmluL2ljZF9sb2FkZXJfdGVzdCAke0R9JHtiaW5kaXJ9LworCWNocnBhdGggLWQgJHtEfSR7YmluZGlyfS9pY2RfbG9hZGVyX3Rlc3QKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9saWIvbGliSWNkTG9nLnNvICR7RH0ke2xpYmRpcn0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vbGliL2xpYk9wZW5DTERyaXZlclN0dWIuc28gJHtEfSR7bGliZGlyfS8KKwljaHJwYXRoIC1kICR7RH0ke2xpYmRpcn0vbGliT3BlbkNMRHJpdmVyU3R1Yi5zbworCWluc3RhbGwgLW0gMDY0NCAke0J9L2xpYi9saWJPcGVuQ0wuc28uMS4yICR7RH0ke2xpYmRpcn0vCisJY2QgJHtEfSR7bGliZGlyfQorCWxuIC1zIGxpYk9wZW5DTC5zby4xLjIgbGliT3BlbkNMLnNvLjEKKwlsbiAtcyBsaWJPcGVuQ0wuc28uMSBsaWJPcGVuQ0wuc28KK30KKworUEFDS0FHRVMgPSAib3BlbmNsLWljZC1sb2FkZXIgb3BlbmNsLWljZC1sb2FkZXItZGV2IgorUEFDS0FHRVMgKz0gImxpYmljZGxvZyBsaWJpY2Rsb2ctZGJnIgorUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRSA9ICJkZWJ1Zy13aXRob3V0LXNyYyIKKworRklMRVNfJHtQTn0gPSAiIFwKKwkke2JpbmRpcn0vaWNkX2xvYWRlcl90ZXN0IFwKKwkke2xpYmRpcn0vbGliT3BlbkNMRHJpdmVyU3R1Yi5zbyBcCisJJHtsaWJkaXJ9L2xpYk9wZW5DTC5zby4xLjIgXAorIgorRklMRVNfJHtQTn0tZGV2ID0gIiBcCisJJHtsaWJkaXJ9L2xpYk9wZW5DTC5zbyBcCisJJHtsaWJkaXJ9L2xpYk9wZW5DTC5zby4xIFwKKyIKKworRklMRVNfbGliaWNkbG9nID0gIiR7bGliZGlyfS9saWJJY2RMb2cuc28iCitGSUxFU19saWJpY2Rsb2ctZGJnID0gIiR7bGliZGlyfS8uZGVidWcvbGliSWNkTG9nLnNvIgorCitERVBFTkRTID0gIm9wZW5jbC1oZWFkZXJzIgorUkRFUEVORFNfJHtQTn0gPSAibGliaWNkbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1vZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhiNGJiZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmIKQEAgLTAsMCArMSwyNTMgQEAKK1NVTU1BUlkgPSAiTWV0YS1vZSBwdGVzdCBwYWNrYWdlZ3JvdXBzIgorCitpbmhlcml0IHBhY2thZ2Vncm91cAorCitQUk9WSURFUyA9ICIke1BBQ0tBR0VTfSIKK1BBQ0tBR0VTID0gJyBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWJlbmNobWFya3MgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWNvbm5lY3Rpdml0eSBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtY29yZSBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtY3J5cHRvIFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1ic3AgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWRicyBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHMgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkIFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWwgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLW11bHRpbWVkaWEgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLW5hdmlnYXRpb24gXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLXNlY3VyaXR5IFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0IFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS10ZXN0IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJwYWNrYWdlZ3JvdXAtbWV0YS1vZS1nbm9tZSIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgInBhY2thZ2Vncm91cC1tZXRhLW9lLWdyYXBoaWNzIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICJwYWNrYWdlZ3JvdXAtbWV0YS1vZS1wdGVzdCIsICIiLCBkKX0gXAorJworCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZSA9ICJcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtYmVuY2htYXJrcyBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5IFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1jb3JlIFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1jcnlwdG8gXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWJzcCBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtZGJzIFwKKyAgICBwYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29scyBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtZXh0ZW5kZWQgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLWtlcm5lbCBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtbXVsdGltZWRpYSBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2UtbmF2aWdhdGlvbiBcCisgICAgcGFja2FnZWdyb3VwLW1ldGEtb2Utc2VjdXJpdHkgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnQgXAorICAgIHBhY2thZ2Vncm91cC1tZXRhLW9lLXRlc3QgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgInBhY2thZ2Vncm91cC1tZXRhLW9lLWdub21lIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAicGFja2FnZWdyb3VwLW1ldGEtb2UtZ3JhcGhpY3MiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgInBhY2thZ2Vncm91cC1tZXRhLW9lLXB0ZXN0IiwgIiIsIGQpfSBcCisiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWJlbmNobWFya3MgPSAiXAorICAgIGFuYWx5emUtc3VzcGVuZCBkaHJ5c3RvbmUgaXBlcmYyIGxpbnBhY2sgcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCisgICAgdGlvYmVuY2ggYm9ubmllKysgZmlvIGlwZXJmMiBpcGVyZjMgbG1iZW5jaCBzLXN1aXRlIHdoZXRzdG9uZSBcCisgICAgbGliYy1iZW5jaCBtZW10ZXN0ZXIgc3lzYmVuY2ggZGJlbmNoIGlvem9uZTMgbGliaHVnZXRsYmZzIFwKKyAgICBuYmVuY2gtYnl0ZSB0aW55bWVtYmVuY2ggXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIHdheWxhbmQgb3BlbmdsIiwgImdsbWFyazIiLCAiIiwgZCl9IFwKKyIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5ID0iXAorICAgIGdhbW11IGhvc3RhcGQgaXJzc2kga3JiNSBsaWJldiBsaWJpbW9iaWxlZGV2aWNlIFwKKyAgICBsaWJtYmltIGxpYm10cCBsaWJuZHAgbGlicW1pIGxpYnRvcnJlbnQgXAorICAgIGxpYnV2IGxpYndlYnNvY2tldHMgbGludXhwdHAgbGlyYyBsb3VkbW91dGggXAorICAgIG1vZGVtbWFuYWdlciBtb3NoICBcCisgICAgcGFoby1tcXR0LWMgcGhvbmV0LXV0aWxzIHJhYmJpdG1xLWMgcmZraWxsIHJ0b3JyZW50IFwKKyAgICBzZXIybmV0IHNtc3Rvb2xzMyB0ZWxlcGF0aHktZ2xpYiB0ZWxlcGF0aHktaWRsZSB0aHJpZnQgXAorICAgIHVzYm11eGQgd3ZzdHJlYW1zIHphYmJpeCB6ZXJvbXEgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIm9iZXgtZGF0YS1zZXJ2ZXIiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB1bHNlYWRpbyBibHVlejQiLCAibGlibWlrbW9kIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJibHVlejQiLCAib2JleGZ0cCBvcGVub2JleCBsaWJuZXQgd3ZkaWFsIiwgIiIsIGQpfSBcCisgICAgIgorCisjIGRyYWN1dCBuZWVkcyBkcmFjdXQKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWNvcmUgPSJcCisgICAgZGJ1cy1kYWVtb24tcHJveHkgbGliZGJ1cy1jKysgZWdnZGJ1cyBcCisgICAgZWxsIGdsaWJtbSBsaWJzaWdjKystMi4wIGxpYnhtbCsrIGRpc3Ryby1mZWVkLWNvbmZpZ3MgXAorICAgIG1tLWNvbW1vbiBvcGVuY2wtaGVhZGVycyBvcGVuY2wtaWNkLWxvYWRlciBcCisgICAgcHJveHktbGliaW50bCB1c2xlZXAgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdGVtZCIsICJkYnVzLWJyb2tlciBuZGN0bCIsICIiLCBkKX0gXAorICAgICIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY3J5cHRvID0iXAorICAgIGJvdGFuIGNyeXB0c2V0dXAgbGlia2NhcGkgbGlibWNyeXB0IFwKKyAgICBsaWJzb2RpdW0gcGtjczExLWhlbHBlciBcCisgICAgIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtYnNwID0iXAorICAgIGFjcGl0b29sIGNwdWZyZXF1dGlscyBlZGFjLXV0aWxzIGVmaWJvb3RtZ3IgXAorICAgIGVmaXZhciBmbGFzaHJvbSBsbXNlbnNvcnMgbG1zZW5zb3JzLWNvbmZpZyBcCisgICAgbHNzY3NpIG52bWUtY2xpIHBjbWNpYXV0aWxzIHBvaW50ZXJjYWwgXAorICAgICIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRicyA9IlwKKyAgICBsZXZlbGRiIGxpYmRiaSBtYXJpYWRiIG1hcmlhZGItbmF0aXZlIFwKKyAgICBteXNxbC1weXRob24gcG9zdGdyZXNxbCBwc3Fsb2RiYyByb2Nrc2RiIHNvY2kgXAorICAgIHNxbGl0ZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJibHVlejQiLCAibW9uZ29kYiIsICIiLCBkKX0gXAorICAgICIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHMgPSJcCisgICAgYW5kcm9pZC10b29scyBhbmRyb2lkLXRvb2xzLWNvbmYgYm9vdGNoYXJ0IGJyZWFrcGFkIFwKKyAgICBjYXBucHJvdG8gY2dkYiBjc2NvcGUgY3RhZ3MgXAorICAgIGRlYm9vdHN0cmFwIGRlamFnbnUgZG1hbGxvYyBmbGF0YnVmZmVycyBcCisgICAgZ2lmbGliIGljb24tc2xpY2VyIGlwdHJhZi1uZyBqcSBqc29uY3BwIGpzb25ycGMganNvbi1zcGlyaXQgXAorICAgIGtjb25maWctZnJvbnRlbmRzIGxlbW9uIGxpYmVkaXQgbGliZ2VlIGxpYnNvbWJvazMgXAorICAgIGxpYnVib3ggbG9nNGNwbHVzIGxzaHcgbHRyYWNlIGx1YSBtY3BwIG1lbXN0YXQgbWVyY3VyaWFsIFwKKyAgICBtcGljaCBtc2dwYWNrLWMgbmxvaG1hbm4tanNvbiBub2RlanMgb3Blbm9jZCBwYXgtdXRpbHMgXAorICAgIGlwYy1ydW4gbGliZGJkLW15c3FsLXBlcmwgbGliZGJpLXBlcmwgbGliaW8tcHR5LXBlcmwgcGhwIFwKKyAgICBwcm90b2J1ZiBwcm90b2J1Zi1jIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhIFwKKyAgICBweXRob24tY3B1c2V0IHB5dGhvbi1kaXN0dXRpbHMtZXh0cmEgcHl0aG9uLWZ1dHVyZXMgcHl0aG9uLXB5Z29iamVjdCBcCisgICAgcmFwaWRqc29uIHNlcmlhbGNoZWNrIHNpcDMgc2lwIHRjbGFwIHVmdHJhY2UgdXctaW1hcCB2YWxpanNvbiBcCisgICAgeG1scnBjLWMgeWFqbCB5YXNtIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJnZWFueSBnZWFueS1wbHVnaW5zIGdsYWRlIHRrIiwgIiIsIGQpfSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1leHRlbmRlZCA9IlwKKyAgICBieWFjYyBjZmVuZ2luZSBjZmVuZ2luZS1tYXN0ZXJmaWxlcyBjbXBpLWJpbmRpbmdzIFwKKyAgICBkZHJlc2N1ZSBkaWFsb2cgZHVtYi1pbml0IGVuc2NyaXB0IGZsdWVudGJpdCBcCisgICAgaGF2ZWdlZCBoZXhlZGl0IGhpcmVkaXMgaHBsaXAgaHdsb2MgaW5kZW50IGlvdG9wIGlzb21kNXN1bSBcCisgICAgamFuc3NvbiBrb25rcmV0Y21waSBsY2Rwcm9jIGxpYmJsb2NrZGV2IGxpYmNlYyBsaWJjb25maWcgXAorICAgIGxpYmRpdmVjb21wdXRlciBsaWJwbGlzdCBsaWJ1c2JtdXhkIFwKKyAgICBsaWJsb2NrZmlsZSBsaWJsb2dnaW5nIGxpYmxvZ25vcm0gbGlibW9kYnVzIGxpYm1vZGJ1cyBcCisgICAgbGlicHdxdWFsaXR5IGxpYnFiIGxpYnVpbyBcCisgICAgbG9ja2ZpbGUtcHJvZ3MgbG9nd2F0Y2ggbHBybmcgbWFpbHggbWQ1ZGVlcCBcCisgICAgbW96anMgbXJhYSBuYW5hIG5pY3N0YXQgXAorICAgIHA3emlwIHA4cGxhdGZvcm0gbGliZmlsZS1mbm1hdGNoLXBlcmwgcG9sa2l0IFwKKyAgICBwb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZSBwb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrIFwKKyAgICByYXJwZCByZWRpcyBycmR0b29sIGxpYmZhc3Rqc29uIGxpYnJlbHAgcnN5c2xvZyBzYW5sb2NrIFwKKyAgICBzYmxpbS1jbXBpLWRldmVsIHNibGltLXNmYy1jb21tb24gc2JsaW0tc2ZjYyBcCisgICAgc2NzaXJhc3Rvb2xzIHNncGlvIHNtYXJ0bW9udG9vbHMgc25hcHB5IGNhbi1pc290cCBcCisgICAgY2FuLXV0aWxzIGxpYnNvY2tldGNhbiB0aXBjdXRpbHMgdGlwdG9wIFwKKyAgICB0bXV4IHVtbC11dGlsaXRpZXMgdXBtIHZsb2NrIHZvbHVtZS1rZXkgd2lwZSB6bG9nIHpyYW0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIHdheWxhbmQgb3BlbmdsIiwgImJvaW5jLWNsaWVudCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIiBsaWJneGltIHQxbGliIGdudXBsb3QgbGlid21mIGd0a21hdGh2aWV3IiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJibHVleiIsICJjb2xsZWN0ZCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicGFtIiwgInBhbS1wbHVnaW4tY2NyZWRzIHBhbS1wbHVnaW4tbGRhcGRiIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAicGFtLXNzaC1hZ2VudC1hdXRoIG9wZW53c21hbiBzYmxpbS1zZmNiICIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQlBBVEgiLCAibWV0YS1weXRob24iLCAib3BlbmxtaS10b29scyIsICIiLCBkKX0gXAorICAgICIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZ25vbWUgPSJcCisgICAgYXRrbW0gZ25vbWUtY29tbW9uIGdub21lLWRvYy11dGlscy1zdHViIGd0a21tIFwKKyAgICBndGttbTMgcHl4ZGcgdnRlOSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1ncmFwaGljcyA9IlwKKyAgICBiYWJsIGNhaXJvbW0gZGlldHNwbGFzaCBkaXJlY3RmYiBkaXJlY3RmYi1leGFtcGxlcyBkbmZkcmFnb3JhIFwKKyAgICBmYmdyYWIgZmJpZGEgZm9udGZvcmdlIGZ2d20gZ2VnbCBnaW1wIGdsbSBncGhvdG8yIGxpYmdwaG90bzIgXAorICAgIGd0a3BlcmYgamFzcGVyIGxlcHRvbmljYSBsaWJtbmcgbGlic2RsMi1pbWFnZSBsaWJzZGwyLW1peGVyIGxpYnNkbDItbmV0IFwKKyAgICBsaWJzZGwtZ2Z4IGxpYnNkbC1pbWFnZSBsaWJzZGwtbWl4ZXIgbGlic2RsLW5ldCBsaWJzZGwtdHRmIFwKKyAgICBsaWJ2bmNzZXJ2ZXIgbGlieXVpIGxpYnl1aS1uY3Vyc2VzIGx4ZG0gbnVtbG9ja3ggb3BlbmJveCBvcGVuanBlZyBcCisgICAgcGFja2FnZWdyb3VwLWZvbnRzLXRydWV0eXBlIHBhbmdvbW0gcXJlbmNvZGUgdGFrYW8tZm9udHMgdGVybWludXMtZm9udCBcCisgICAgdGVzc2VyYWN0IHRlc3NlcmFjdC1sYW5nIHRpZ2Vydm5jIHRzbGliIHNvdXJjZS1oYW4tc2Fucy1jbi1mb250cyBcCisgICAgc291cmNlLWhhbi1zYW5zLWpwLWZvbnRzIHNvdXJjZS1oYW4tc2Fucy1rci1mb250cyBzb3VyY2UtaGFuLXNhbnMtdHctZm9udHMgdHRmLWFieXNzaW5pY2EgXAorICAgIGxpYnZkcGF1IHgxMXZuYyB4Y3Vyc29yZ2VuIHhkb3Rvb2wgXAorICAgIGJkZnRvcGNmIGljZWF1dGggc2Vzc3JlZyBzZXR4a2JtYXAgdHdtIHhjbG9jayB4Zm9udHNlbCB4Z2FtbWEgeGtiZXZkIHhrYnByaW50IHhrYnV0aWxzIFwKKyAgICB4bHNhdG9tcyB4bHNjbGllbnRzIHhsc2ZvbnRzIHhtYWcgeG1lc3NhZ2UgeHJkYiB4cmVmcmVzaCB4c2V0bW9kZSB4c2V0cm9vdCB4c3RkY21hcCBcCisgICAgeHRlcm0geHdkIHh3dWQgeGJpdG1hcHMgeG9yZy1zZ21sLWRvY3Rvb2xzIFwKKyAgICBmb250LWFkb2JlLTEwMGRwaSBmb250LWFkb2JlLXV0b3BpYS0xMDBkcGkgXAorICAgIGZvbnQtYmgtMTAwZHBpIGZvbnQtYmgtbHVjaWRhdHlwZXdyaXRlci0xMDBkcGkgZm9udC1iaXRzdHJlYW0tMTAwZHBpIGZvbnQtY3Vyc29yLW1pc2MgXAorICAgIGZvbnQtbWlzYy1taXNjIHhvcmctZm9udHMtMTAwZHBpIGxpYmxieHV0aWwgbGlieGF3IGxpYnhrYnVpIGxpYnhwcmVzZW50IHhzZXJ2ZXItY29tbW9uIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICJmcmVlZ2x1dCBsaWJzZGwyLXR0ZiIsICIiLCBkKX0gXAorICAgICIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Uta2VybmVsID0iXAorICAgIGFnZW50LXByb3h5IGJwZnRvb2wgYnJvYWRjb20tYnQtZmlybXdhcmUgY3B1cG93ZXIgXAorICAgIGNyYXNoIGlwbWl0b29sIG1pbmljb3JlZHVtcGVyIG9wcm9maWxlIFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLW11bHRpbWVkaWEgPSJcCisgICAgYWxzYS1vc3MgYXVkaW9maWxlIGNkcmtpdCBlc291bmQgaWQzbGliIFwKKyAgICBhMmptaWRpZCBqYWNrIGxpYmFzcyBsaWJidXJuIGxpYmNkaW8gbGliY2Rpby1wYXJhbm9pYSBcCisgICAgbGliZHZkcmVhZCBsaWJtbXMgbGlibW9kcGx1ZyBsaWJvcHVzIGxpdmU1NTUgXAorICAgIG1wbGF5ZXItY29tbW9uIG9wdXMtdG9vbHMgXAorICAgIHNvdW5kLXRoZW1lLWZyZWVkZXNrdG9wIHY0bC11dGlscyB5YXZ0YSB3YXZwYWNrIGxpYnZweCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAieHBleHQgcGF2dWNvbnRyb2wgeHNwIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdWxzZWFkaW8gYmx1ZXo0IiwgImxpYm1pa21vZCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgImxpYm1hZCBmYWFkMiBtcHYiLCAiIiwgZCl9IFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLW5hdmlnYXRpb24gPSJcCisgICAgZ2VvY2x1ZSBnZW9zIGxpYnNwYXRpYWxpdGUgcHJvaiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAib3JyZXJ5IiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJibHV6NCIsICJncHNkIGdwc2QtbWFjaGluZS1jb25mIiwgIiIsIGQpfSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zZWN1cml0eSA9IlwKKyAgICB0b21veW8tdG9vbHMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicGFtIiwgInBhc3N3ZHFjIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJibHV6NSIsICJubWFwIiwgIiIsIGQpfSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zaGVsbHMgPSJcCisgICAgZGFzaCB0Y3NoIHpzaCBcCisgICAgIgorCitORTEwID0gIiIKK05FMTBfYWFyY2g2NCA9ICJuZTEwIgorTkUxMF9hcm03ID0gIm5lMTAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnQgPSJcCisgICAgYW50aHkgYXNpbyBhdG9wIGF1Z2VhcyBhdnJvLWMgYmR3Z2MgZnJhbWUgZ3JhaWwgXAorICAgIGNjaWQgY2VyZXMtc29sdmVyIGNrZXJtaXQgY3BwcmVzdCBjdGFwaS1jb21tb24gZGFlbW9uaXplIFwKKyAgICBkYWVtb250b29scyBkZWJzdW1zIGRldm1lbTIgZGZ1LXV0aWwgZGZ1LXV0aWwtbmF0aXZlIGRpZ2l0ZW1wIFwKKyAgICBkc3RhdCBlamVjdCBlbmNhIGVwZWcgZXNwZWFrIGVzcGVhay1kYXRhIGZic2V0IGZic2V0LW1vZGVzIFwKKyAgICBmZnR3IGZsdGstbmF0aXZlIGdkIGdmbGFncyBnbG9nIGdudWxpYiBncGVyZnRvb2xzIFwKKyAgICBncG0gZ3JhZG0gZ3NsIGdzb2FwIGhkZHRlbXAgaGlkYXBpIGh0b3AgaHVuc3BlbGwgaHdkYXRhIGlrc2VtZWwgXAorICAgIGxpYmluaWggaW5vdGlmeS10b29scyBqb2UgbGNtcyBsY292IGxpYmF0YXNtYXJ0IGxpYmJ5dGVzaXplIFwKKyAgICBsaWJjZXJlYWwgbGliY3l1c2JzZXJpYWwgbGliZWUgbGliZWlnZW4gbGliZXN0ciBsaWJmdGRpIGxpYmdpdDIgXAorICAgIGxpYmdwaW9kIGxpYmlpbyBsaWJqcy1qcXVlcnkgbGlianMtc2l6emxlIGxpYmxpbmVicmVhayBsaWJtaWNyb2h0dHBkIFwKKyAgICBsaWJteG1sIGxpYm5paCBsaWJvYXV0aCBsaWJvbCBsaWJvb3AgbGlicDExIGxpYnJhdzEzOTQgbGlic21pIGxpYnNvYyBsaWJzc2gyIFwKKyAgICBsaWJzc2ggbGlidGFyIGxpYnRlYW0gbGlidGlueXhtbDIgbGlidGlueXhtbCBsaWJ1c2JnIGxpYnVzYi1jb21wYXQgbGlidXRlbXB0ZXIgXAorICAgIGxpbmtzIGxpby11dGlscyBsb2NrZGV2IGxvZzRjIGxvZzRjcHAgbG9nd2FybiBsaWJkZXZtYXBwZXIgbHZtMiBcCisgICAgbWFpbGNhcCBtYnVmZmVyIG1nIG1pbmluaSBcCisgICAgbXVsdGlwYXRoLXRvb2xzIG5hbm8gbmVvbiBubW9uIG51bWFjdGwgb25pZyBvcGVuY3Qgb3BlbmxkYXAgXAorICAgIG9wZW5zYyB3YnhtbDIgcDkxMG5kIHBjc2MtbGl0ZSBwaWNvY29tIGxpYm90ciBwaWRnaW4gXAorICAgIHBuZ2NoZWNrIHBvY28gcG9wcGxlciBwb3BwbGVyLWRhdGEgcG9ydGF1ZGlvLXYxOSBwcHMtdG9vbHMgXAorICAgIHB2IHB4YXJlZ3MgcmFwdG9yMiByZGZpbmQgcmVhZC1lZGlkIHJzbmFwc2hvdCBzM2MyNHh4LWdwaW8gczNjNjR4eC1ncGlvIFwKKyAgICBzamYyNDEwLWxpbnV4LW5hdGl2ZSBzYXR5ciBzZHBhcm0gcHR5LWZvcndhcmQtbmF0aXZlIHNlcmlhbC1mb3J3YXJkIFwKKyAgICBzZzMtdXRpbHMgc2hhcnV0aWxzIHNtZW0gc3BpdG9vbHMgc3JlY29yZCBzc2lhcGkgc3RhcnQtc3RvcC1kYWVtb24gc3RtMzJmbGFzaCBcCisgICAgc3lzbG9nLW5nIHN5c3RlbS1jb25maWcta2V5Ym9hcmQgdGJiIHRoaW4tcHJvdmlzaW9uaW5nLXRvb2xzIHRva3lvY2FiaW5ldCBcCisgICAgdHJlZSB1ZGlza3MgdWRpc2tzMiB1aHViY3RsIHVuaXhvZGJjIHVwb3dlciB1cmlwYXJzZXIgdXNiLW1vZGVzd2l0Y2ggXAorICAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEgdXNicGF0aCB1dGhhc2ggdXRvdWNoLWV2ZW11IHV0b3VjaC1mcmFtZSBcCisgICAgdmltIHZpbS10aW55IHdlYnNvY2tldHBwIHdtaWNvbmZpZyB4ZGVsdGEzIHhkZy11c2VyLWRpcnMgeG1sc3RhcmxldCBcCisgICAgemJhciB6aWxlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJnZWlzIHRvc2NvdGVybSB1aW0gc3luZXJneSB1dG91Y2gtbXR2aWV3IGxpbmtzLXgxMSBmbHRrIHBpZGdpbi1vdHIiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB1bHNlYWRpbyBibHVlejQiLCAibGliY2FuYmVycmEiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSBwYW0iLCAieG9yZ3hyZHAgeHJkcCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYmx1ZXo0IiwgInByb2NtYWlsIiwgIiIsIGQpfSBcCisgICAgJHtORTEwfSBcCisgICAgIgorCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0LWVnbCA9IlwKKyAgICBmcmVlcmRwIGxpYm5pY2Ugb3BlbmN2IFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXRlc3QgPSJcCisgICAgY2F0Y2gyIGNwcHVuaXQgY3VuaXQgY3h4dGVzdCBldnRlc3QgZmItdGVzdCBcCisgICAgZnd0cyBndGVzdCBwbS1xYSBzdHJlc3MtbmcgdGVzdGZsb2F0IFwKKyAgICAiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXB0ZXN0ID0gIlwKKyAgICB6ZXJvbXEtcHRlc3QgXAorICAgIGxpYnhtbC1wdGVzdCBcCisgICAgc29jaS1wdGVzdCBcCisgICAgbGV2ZWxkYi1wdGVzdCBcCisgICAgcHNxbG9kYmMtcHRlc3QgXAorICAgIGx1YS1wdGVzdCBcCisgICAgcHJvdG9idWYtcHRlc3QgXAorICAgIGxpYmRiaS1wdGVzdCBcCisgICAgcnN5c2xvZy1wdGVzdCBcCisgICAgb3Byb2ZpbGUtcHRlc3QgXAorICAgIGxpYnRlYW0tcHRlc3QgXAorICAgIHV0aGFzaC1wdGVzdCBcCisgICAgbWNlbG9nLXB0ZXN0IFwKKyAgICBvcGVubGRhcC1wdGVzdCBcCisgICAgbGliZWUtcHRlc3QgXAorICAgIG51bWFjdGwtcHRlc3QgXAorICAgIHBvY28tcHRlc3QgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL2ZpbGVzLzAwMDItRml4LWJ1aWxkLXdpdGgtZ2xpYmMtMi4yOC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL2ZpbGVzLzAwMDItRml4LWJ1aWxkLXdpdGgtZ2xpYmMtMi4yOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjM4Zjc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvZmlsZXMvMDAwMi1GaXgtYnVpbGQtd2l0aC1nbGliYy0yLjI4LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMGMwMzQ1MzAzYjc5NzFkNmNlYzQ3OGZkOGI4MWQ2NGJjMWZiZTBmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIxIEF1ZyAyMDE4IDIzOjI2OjQ1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoID49IGdsaWJjIDIuMjgKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworU3RvbGVuIGZyb20gWzFdCisKK1sxXSBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDIxOTEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBzcmMvbGlicGx5LXNwbGFzaC1jb3JlL3BseS10ZXJtaW5hbC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGlicGx5LXNwbGFzaC1jb3JlL3BseS10ZXJtaW5hbC5jIGIvc3JjL2xpYnBseS1zcGxhc2gtY29yZS9wbHktdGVybWluYWwuYworaW5kZXggYTA5NTRmMi4uZjNiMzJmZSAxMDA2NDQKKy0tLSBhL3NyYy9saWJwbHktc3BsYXNoLWNvcmUvcGx5LXRlcm1pbmFsLmMKKysrKyBiL3NyYy9saWJwbHktc3BsYXNoLWNvcmUvcGx5LXRlcm1pbmFsLmMKK0BAIC0zMiw2ICszMiw3IEBACisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjaW5jbHVkZSA8dGVybWlvcy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8d2NoYXIuaD4KKy0tIAorMi4xNC40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL3BseW1vdXRoXzAuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIKaW5kZXggN2U4ZDZlMy4uYTViMTZjOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjIuYmIKQEAgLTE5LDYgKzE5LDcgQEAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wbHltb3V0aC9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCiAgICAgZmlsZTovLzAwMDEtTWFrZS1mdWxsLXBhdGgtdG8tc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50LWNvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItRml4LWJ1aWxkLXdpdGgtZ2xpYmMtMi4yOC5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZmY0MjA5OTRkZWI3ZWEyMDNkZjY3OGRmOTJlN2FiN2QiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmYwY2U4MjA0MmNmOWM3ZWFkZDI1MTdhMWY3NGM4YTg1ZmE4Njk5NzgxZDlmMjk0YTA2ZWFkZTI5ZmJlZDU3ZiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3gvT0UtcGF0aC1jaGFuZ2VzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveC9PRS1wYXRoLWNoYW5nZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQyYzIyZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3gvT0UtcGF0aC1jaGFuZ2VzLnBhdGNoCkBAIC0wLDAgKzEsMTk1IEBACitkaWZmIC0tZ2l0IGEvdG95cy9uZXQvbWljcm9jb20uYyBiL3RveXMvbmV0L21pY3JvY29tLmMKK2luZGV4IGQzNGUxZmUuLmEzNjllNmMgMTAwNjQ0CistLS0gYS90b3lzL25ldC9taWNyb2NvbS5jCisrKysgYi90b3lzL25ldC9taWNyb2NvbS5jCitAQCAtMiw3ICsyLDcgQEAKKyAgKgorICAqIENvcHlyaWdodCAyMDE3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QuCisgCistVVNFX01JQ1JPQ09NKE5FV1RPWShtaWNyb2NvbSwgIjwxPjFzOlgiLCBUT1lGTEFHX0JJTikpCisrVVNFX01JQ1JPQ09NKE5FV1RPWShtaWNyb2NvbSwgIjwxPjFzOlgiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisgCisgY29uZmlnIE1JQ1JPQ09NCisgICBib29sICJtaWNyb2NvbSIKK2RpZmYgLS1naXQgYS90b3lzL290aGVyL2Jsb2NrZGV2LmMgYi90b3lzL290aGVyL2Jsb2NrZGV2LmMKK2luZGV4IDM4ZTA5OTMuLmM1ZDlmY2QgMTAwNjQ0CistLS0gYS90b3lzL290aGVyL2Jsb2NrZGV2LmMKKysrKyBiL3RveXMvb3RoZXIvYmxvY2tkZXYuYworQEAgLTQsNyArNCw3IEBACisgICoKKyAgKiBObyBTdGFuZGFyZC4KKyAKKy1VU0VfQkxPQ0tERVYoTkVXVE9ZKGJsb2NrZGV2LCAiPDE+MShzZXRybykoc2V0cncpKGdldHJvKShnZXRzcykoZ2V0YnN6KShzZXRic3opIzwwKGdldHN6KShnZXRzaXplKShnZXRzaXplNjQpKGZsdXNoYnVmcykocmVyZWFkcHQpIixUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisrVVNFX0JMT0NLREVWKE5FV1RPWShibG9ja2RldiwgIjwxPjEoc2V0cm8pKHNldHJ3KShnZXRybykoZ2V0c3MpKGdldGJzeikoc2V0YnN6KSM8MChnZXRzeikoZ2V0c2l6ZSkoZ2V0c2l6ZTY0KShmbHVzaGJ1ZnMpKHJlcmVhZHB0KSIsVE9ZRkxBR19TQklOKSkKKyAKKyBjb25maWcgQkxPQ0tERVYKKyAgIGJvb2wgImJsb2NrZGV2IgorZGlmZiAtLWdpdCBhL3RveXMvb3RoZXIvY2hydC5jIGIvdG95cy9vdGhlci9jaHJ0LmMKK2luZGV4IGExYzM3YTAuLmQ2ZGIzYTUgMTAwNjQ0CistLS0gYS90b3lzL290aGVyL2NocnQuYworKysrIGIvdG95cy9vdGhlci9jaHJ0LmMKK0BAIC00LDcgKzQsNyBAQAorICAqCisgICogTm90ZTogLWlicmZvIGZsYWdzIHNvcnRlZCB0byBtYXRjaCBTQ0hFRCBwb3NpdGlvbnMgZm9yIGhpZ2hlc3RfYml0KCkKKyAKKy1VU0VfQ0hSVChORVdUT1koY2hydCwgIl5tcCM8MGlSYnJmb1shaWJyZm9dIiwgVE9ZRkxBR19VU1J8VE9ZRkxBR19TQklOKSkKKytVU0VfQ0hSVChORVdUT1koY2hydCwgIl5tcCM8MGlSYnJmb1shaWJyZm9dIiwgVE9ZRkxBR19VU1J8VE9ZRkxBR19CSU4pKQorIAorIGNvbmZpZyBDSFJUCisgICBib29sICJjaHJ0IgorZGlmZiAtLWdpdCBhL3RveXMvb3RoZXIvaHdjbG9jay5jIGIvdG95cy9vdGhlci9od2Nsb2NrLmMKK2luZGV4IDFkMzEzZTMuLjQxMjU4MmQgMTAwNjQ0CistLS0gYS90b3lzL290aGVyL2h3Y2xvY2suYworKysrIGIvdG95cy9vdGhlci9od2Nsb2NrLmMKK0BAIC00LDcgKzQsNyBAQAorICAqCisgICogTm8gc3RhbmRhcmQsIGJ1dCBzZWUgRG9jdW1lbnRhdGlvbi9ydGMudHh0IGluIHRoZSBsaW51eCBrZXJuZWwgc291cmNlLi4KKyAgKgorLVVTRV9IV0NMT0NLKE5FV1RPWShod2Nsb2NrLCAiPjAoZmFzdClmKHJ0Yyk6dSh1dGMpbChsb2NhbHRpbWUpdChzeXN0eilzKGhjdG9zeXMpcihzaG93KXcoc3lzdG9oYylbLXVsXVshcnRzd10iLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisrVVNFX0hXQ0xPQ0soTkVXVE9ZKGh3Y2xvY2ssICI+MChmYXN0KWYocnRjKTp1KHV0YylsKGxvY2FsdGltZSl0KHN5c3R6KXMoaGN0b3N5cylyKHNob3cpdyhzeXN0b2hjKVstdWxdWyFydHN3XSIsIFRPWUZMQUdfU0JJTikpCisgCisgY29uZmlnIEhXQ0xPQ0sKKyAgIGJvb2wgImh3Y2xvY2siCitkaWZmIC0tZ2l0IGEvdG95cy9vdGhlci9tb2RpbmZvLmMgYi90b3lzL290aGVyL21vZGluZm8uYworaW5kZXggMTE3OGQ2Ny4uOTY2YTlkZSAxMDA2NDQKKy0tLSBhL3RveXMvb3RoZXIvbW9kaW5mby5jCisrKysgYi90b3lzL290aGVyL21vZGluZm8uYworQEAgLTQsNyArNCw3IEBACisgICoKKyAgKiBUT0RPOiBjbGVhbnVwCisgCistVVNFX01PRElORk8oTkVXVE9ZKG1vZGluZm8sICI8MWI6azpGOjAiLCBUT1lGTEFHX0JJTikpCisrVVNFX01PRElORk8oTkVXVE9ZKG1vZGluZm8sICI8MWI6azpGOjAiLCBUT1lGTEFHX1NCSU4pKQorIAorIGNvbmZpZyBNT0RJTkZPCisgICBib29sICJtb2RpbmZvIgorZGlmZiAtLWdpdCBhL3RveXMvb3RoZXIvcG1hcC5jIGIvdG95cy9vdGhlci9wbWFwLmMKK2luZGV4IGFiYjBhMzMuLjJhY2VmMDIgMTAwNjQ0CistLS0gYS90b3lzL290aGVyL3BtYXAuYworKysrIGIvdG95cy9vdGhlci9wbWFwLmMKK0BAIC01LDcgKzUsNyBAQAorICAqCisgICogTm8gU3RhbmRhcmQuCisgCistVVNFX1BNQVAoTkVXVE9ZKHBtYXAsICI8MXhxIiwgVE9ZRkxBR19CSU4pKQorK1VTRV9QTUFQKE5FV1RPWShwbWFwLCAiPDF4cSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOKSkKKyAKKyBjb25maWcgUE1BUAorICAgYm9vbCAicG1hcCIKK2RpZmYgLS1naXQgYS90b3lzL290aGVyL3ByaW50ZW52LmMgYi90b3lzL290aGVyL3ByaW50ZW52LmMKK2luZGV4IGU4YmNmMjkuLjY1ZjYyZWQgMTAwNjQ0CistLS0gYS90b3lzL290aGVyL3ByaW50ZW52LmMKKysrKyBiL3RveXMvb3RoZXIvcHJpbnRlbnYuYworQEAgLTIsNyArMiw3IEBACisgICoKKyAgKiBDb3B5cmlnaHQgMjAxMiBHZW9yZ2kgQ2hvcmJhZHpoaXlza2kgPGdlb3JnaUB1bml4c29sLm9yZz4KKyAKKy1VU0VfUFJJTlRFTlYoTkVXVE9ZKHByaW50ZW52LCAiMChudWxsKSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOKSkKKytVU0VfUFJJTlRFTlYoTkVXVE9ZKHByaW50ZW52LCAiMChudWxsKSIsIFRPWUZMQUdfQklOKSkKKyAKKyBjb25maWcgUFJJTlRFTlYKKyAgIGJvb2wgInByaW50ZW52IgorZGlmZiAtLWdpdCBhL3RveXMvb3RoZXIvdGFza3NldC5jIGIvdG95cy9vdGhlci90YXNrc2V0LmMKK2luZGV4IDhmZmRhYjcuLjg5ZmQ1MjggMTAwNjQ0CistLS0gYS90b3lzL290aGVyL3Rhc2tzZXQuYworKysrIGIvdG95cy9vdGhlci90YXNrc2V0LmMKK0BAIC0yLDcgKzIsNyBAQAorICAqCisgICogQ29weXJpZ2h0IDIwMTIgRWxpZSBEZSBCcmF1d2VyIDxlbGllZGVicmF1d2VyQGdtYWlsLmNvbT4KKyAKKy1VU0VfVEFTS1NFVChORVdUT1kodGFza3NldCwgIjwxXnBhIiwgVE9ZRkxBR19CSU58VE9ZRkxBR19TVEFZUk9PVCkpCisrVVNFX1RBU0tTRVQoTkVXVE9ZKHRhc2tzZXQsICI8MV5wYSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOfFRPWUZMQUdfU1RBWVJPT1QpKQorIFVTRV9OUFJPQyhORVdUT1kobnByb2MsICIoYWxsKSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOKSkKKyAKKyBjb25maWcgTlBST0MKK2RpZmYgLS1naXQgYS90b3lzL290aGVyL3RpbWVvdXQuYyBiL3RveXMvb3RoZXIvdGltZW91dC5jCitpbmRleCA5YjkzNDY2Li5lMWQwZjRkIDEwMDY0NAorLS0tIGEvdG95cy9vdGhlci90aW1lb3V0LmMKKysrKyBiL3RveXMvb3RoZXIvdGltZW91dC5jCitAQCAtNCw3ICs0LDcgQEAKKyAgKgorICAqIE5vIHN0YW5kYXJkCisgCistVVNFX1RJTUVPVVQoTkVXVE9ZKHRpbWVvdXQsICI8Ml52azpzOiAiLCBUT1lGTEFHX0JJTikpCisrVVNFX1RJTUVPVVQoTkVXVE9ZKHRpbWVvdXQsICI8Ml52azpzOiAiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisgCisgY29uZmlnIFRJTUVPVVQKKyAgIGJvb2wgInRpbWVvdXQiCitkaWZmIC0tZ2l0IGEvdG95cy9vdGhlci90cnVuY2F0ZS5jIGIvdG95cy9vdGhlci90cnVuY2F0ZS5jCitpbmRleCAxNDJkM2M3Li40MGViMWU1IDEwMDY0NAorLS0tIGEvdG95cy9vdGhlci90cnVuY2F0ZS5jCisrKysgYi90b3lzL290aGVyL3RydW5jYXRlLmMKK0BAIC0yLDcgKzIsNyBAQAorICAqCisgICogQ29weXJpZ2h0IDIwMTEgUm9iIExhbmRsZXkgPHJvYkBsYW5kbGV5Lm5ldD4KKyAKKy1VU0VfVFJVTkNBVEUoTkVXVE9ZKHRydW5jYXRlLCAiPDFzOnxjIiwgVE9ZRkxBR19CSU4pKQorK1VTRV9UUlVOQ0FURShORVdUT1kodHJ1bmNhdGUsICI8MXM6fGMiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisgCisgY29uZmlnIFRSVU5DQVRFCisgICBib29sICJ0cnVuY2F0ZSIKK2RpZmYgLS1naXQgYS90b3lzL3Bvc2l4L25pY2UuYyBiL3RveXMvcG9zaXgvbmljZS5jCitpbmRleCA0YjU4N2VlLi45ZjdiMTE5IDEwMDY0NAorLS0tIGEvdG95cy9wb3NpeC9uaWNlLmMKKysrKyBiL3RveXMvcG9zaXgvbmljZS5jCitAQCAtNCw3ICs0LDcgQEAKKyAgKgorICAqIFNlZSBodHRwOi8vb3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL25pY2UuaHRtbAorIAorLVVTRV9OSUNFKE5FV1RPWShuaWNlLCAiXjwxbiMiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisrVVNFX05JQ0UoTkVXVE9ZKG5pY2UsICJePDFuIyIsIFRPWUZMQUdfQklOKSkKKyAKKyBjb25maWcgTklDRQorICAgYm9vbCAibmljZSIKK2RpZmYgLS1naXQgYS90b3lzL3Bvc2l4L25sLmMgYi90b3lzL3Bvc2l4L25sLmMKK2luZGV4IDliMDJiZmEuLjQxZTFiODkgMTAwNjQ0CistLS0gYS90b3lzL3Bvc2l4L25sLmMKKysrKyBiL3RveXMvcG9zaXgvbmwuYworQEAgLTcsNyArNyw3IEBACisgICogVGhpcyBpbXBsZW1lbnRzIGEgc3Vic2V0OiBvbmx5IG9uZSBsb2dpY2FsIHBhZ2UgKC1pcCksIG5vIHNlY3Rpb25zICgtZGZoKS4KKyAgKiB0b2RvOiAtbHYKKyAKKy1VU0VfTkwoTkVXVE9ZKG5sLCAidiM8MT0xbCNiOm46czp3IzwwPTZFIiwgVE9ZRkxBR19CSU4pKQorK1VTRV9OTChORVdUT1kobmwsICJ2IzwxPTFsI2I6bjpzOncjPDA9NkUiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTikpCisgCisgY29uZmlnIE5MCisgICBib29sICJubCIKK2RpZmYgLS1naXQgYS90b3lzL3Bvc2l4L3Bhc3RlLmMgYi90b3lzL3Bvc2l4L3Bhc3RlLmMKK2luZGV4IGVhMDRmMDIuLjg5NzJmNzEgMTAwNjQ0CistLS0gYS90b3lzL3Bvc2l4L3Bhc3RlLmMKKysrKyBiL3RveXMvcG9zaXgvcGFzdGUuYworQEAgLTYsNyArNiw3IEBACisgICoKKyAgKiBEZXZpYXRpb25zIGZyb20gcG9zaXg6IHRoZSBGSUxFIGFyZ3VtZW50IGlzbid0IG1hbmRhdG9yeSwgbm9uZSA9PSAnLScKKyAKKy1VU0VfUEFTVEUoTkVXVE9ZKHBhc3RlLCAiZDpzIiwgVE9ZRkxBR19CSU58VE9ZRkxBR19MT0NBTEUpKQorK1VTRV9QQVNURShORVdUT1kocGFzdGUsICJkOnMiLCBUT1lGTEFHX1VTUnxUT1lGTEFHX0JJTnxUT1lGTEFHX0xPQ0FMRSkpCisgCisgY29uZmlnIFBBU1RFCisgICBib29sICJwYXN0ZSIKK2RpZmYgLS1naXQgYS90b3lzL3Bvc2l4L3BzLmMgYi90b3lzL3Bvc2l4L3BzLmMKK2luZGV4IGFlZjJhN2YuLmI1NTllMDkgMTAwNjQ0CistLS0gYS90b3lzL3Bvc2l4L3BzLmMKKysrKyBiL3RveXMvcG9zaXgvcHMuYworQEAgLTQ0LDcgKzQ0LDcgQEAKKyAgKiBUT0RPOiB0b3A6IHRocmVhZCBzdXBwb3J0IGFuZCBTTVAKKyAgKiBUT0RPOiBwZ3JlcCAtZiBvbmx5IHNlYXJjaGVzIHRoZSBhbW91bnQgb2YgY21kbGluZSB0aGF0IGZpdHMgaW4gdG95YnVmLgorIAorLVVTRV9QUyhORVdUT1kocHMsICJrKHNvcnQpKlAocHBpZCkqYUFkZWZsTW5vKk8qcChwaWQpKnMqdCpUdSpVKmcqRyp3Wlshb2xdWytBZV1bIW9PXSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOfFRPWUZMQUdfTE9DQUxFKSkKKytVU0VfUFMoTkVXVE9ZKHBzLCAiayhzb3J0KSpQKHBwaWQpKmFBZGVmbE1ubypPKnAocGlkKSpzKnQqVHUqVSpnKkcqd1pbIW9sXVsrQWVdWyFvT10iLCBUT1lGTEFHX0JJTnxUT1lGTEFHX0xPQ0FMRSkpCisgLy8gc3RheXJvb3QgYmVjYXVzZSBpb3RvcCBuZWVkcyByb290IHRvIHJlYWQgb3RoZXIgcHJvY2VzcycgcHJvYy8kJC9pbworIFVTRV9UT1AoTkVXVE9ZKHRvcCwgIj4wbSIgIk8qSGsqbypwKnUqcyM8MWQjPTM8MW4jPDFicVshb09dIiwgVE9ZRkxBR19VU1J8VE9ZRkxBR19CSU58VE9ZRkxBR19MT0NBTEUpKQorIFVTRV9JT1RPUChORVdUT1koaW90b3AsICI+MEFhS08iICJrKm8qcCp1KnMjPDE9N2QjPTM8MW4jPDFicSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOfFRPWUZMQUdfU1RBWVJPT1R8VE9ZRkxBR19MT0NBTEUpKQorZGlmZiAtLWdpdCBhL3RveXMvcG9zaXgvc2VkLmMgYi90b3lzL3Bvc2l4L3NlZC5jCitpbmRleCBjZjdkMTVlLi4xMzBhYzA4IDEwMDY0NAorLS0tIGEvdG95cy9wb3NpeC9zZWQuYworKysrIGIvdG95cy9wb3NpeC9zZWQuYworQEAgLTEwLDcgKzEwLDcgQEAKKyAgKiBUT0RPOiBoYW5kbGUgZXJyb3IgcmV0dXJuIGZyb20gZW1pdCgpLCBlcnJvcl9tc2cvZXhpdCBjb25zaXN0ZW50bHkKKyAgKiAgICAgICBXaGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvIGZvciAtaSB3aGVuIHdyaXRlIGZhaWxzPyBTa2lwIHRvIG5leHQ/CisgCistVVNFX1NFRChORVdUT1koc2VkLCAiKGhlbHApKHZlcnNpb24pZSpmKmluRXJbK0VyXSIsIFRPWUZMQUdfVVNSfFRPWUZMQUdfQklOfFRPWUZMQUdfTE9DQUxFfFRPWUZMQUdfTk9IRUxQKSkKKytVU0VfU0VEKE5FV1RPWShzZWQsICIoaGVscCkodmVyc2lvbillKmYqaW5FclsrRXJdIiwgVE9ZRkxBR19CSU58VE9ZRkxBR19MT0NBTEV8VE9ZRkxBR19OT0hFTFApKQorIAorIGNvbmZpZyBTRUQKKyAgIGJvb2wgInNlZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfMC43LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS90b3lib3gvdG95Ym94XzAuNy41LmJiCmluZGV4IDM0N2MyODUuLjdlOGU3YjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3RveWJveC90b3lib3hfMC43LjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvdG95Ym94L3RveWJveF8wLjcuNS5iYgpAQCAtMSwxMSArMSwxMyBAQAogU1VNTUFSWSA9ICJUb3lib3ggY29tYmluZXMgY29tbW9uIHV0aWxpdGllcyB0b2dldGhlciBpbnRvIGEgc2luZ2xlIGV4ZWN1dGFibGUuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5sYW5kbGV5Lm5ldC90b3lib3gvIgotREVQRU5EUyA9ICJhdHRyIgorREVQRU5EUyA9ICJhdHRyIHZpcnR1YWwvY3J5cHQiCiAKIExJQ0VOU0UgPSAiQlNELTAtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjBiOGIzZGQ2NDMxYmNhYTI0NWRhMGEwOGJkMGQ1MTEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5sYW5kbGV5Lm5ldC90b3lib3gvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGFuZGxleS5uZXQvdG95Ym94L2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL09FLXBhdGgtY2hhbmdlcy5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhOGJiNTAyYTFiZTk0MWYwNmRkMjY0NGZmZjI1ZjU0NyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRhNDUwYWMxZWFiMWRmYzM1MmZlZTkxNWVhNjEyOWI5YTQzNDljMTg4NWYxMzk0YjYxYmQyZDg5YTQ2YzA0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS91c2xlZXAvdXNsZWVwXzEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3VzbGVlcC91c2xlZXBfMS4wLmJiCmluZGV4IDllOWM3ZWQuLjM3MGRkNGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3VzbGVlcC91c2xlZXBfMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3VzbGVlcC91c2xlZXBfMS4wLmJiCkBAIC0yMiwzICsyMiwxMiBAQAogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3VzbGVlcCAgICR7RH0ke2Jhc2VfYmluZGlyfQogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3VzbGVlcC4xICR7RH0ke21hbmRpcn0vbWFuMQogfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAidXNsZWVwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXNsZWVwXSA9ICIke2Jhc2VfYmluZGlyfS91c2xlZXAiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ1c2xlZXAuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1c2xlZXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXNsZWVwLjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mjg1M2QwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjcuMC5iYgpAQCAtMCwwICsxLDU1IEBACisjIENvcHlyaWdodCAoQykgMjAxOCBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitERVNDUklQVElPTiA9ICJDcnlwdG8gYW5kIFRMUyBmb3IgQysrMTEiCitIT01FUEFHRSA9ICJodHRwczovL2JvdGFuLnJhbmRvbWJpdC5uZXQiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudHh0O21kNT1iZjM2MWZjNjNkZjNmYTI1NjUyZWU4MmM0M2I3NjAxYSIKK1NFQ1RJT04gPSAibGlicyIKKworCisjdjIuNy4wCitTUkNSRVYgPSAiNTg3NDAwMGQ0MmMzMzhlYzk1YTdmZjI0Y2RjMGM2NGU3MGY5NjdiNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yYW5kb21iaXQvYm90YW4uZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHB5dGhvbjNuYXRpdmUgc2l0ZWluZm8gbGliX3BhY2thZ2UKKworQ1BVID89ICIke1RBUkdFVF9BUkNIfSIKK0NQVV94ODYgPSAieDg2XzMyIgorQ1BVX2FybXY3YSA9ICJhcm12NyIKK0NQVV9hcm12N3ZlID0gImFybXY3IgorCitkb19jb25maWd1cmUoKSB7CisJcHl0aG9uMyAke1N9L2NvbmZpZ3VyZS5weSBcCisJLS1wcmVmaXg9IiR7RH0ke3ByZWZpeH0iIFwKKwktLWNwdT0iJHtDUFV9IiBcCisJLS1jYy1iaW49IiR7Q1hYfSIgXAorCS0tY3h4ZmxhZ3M9IiR7Q1hYRkxBR1N9IiBcCisJLS1sZGZsYWdzPSIke0xERkxBR1N9IiBcCisJLS13aXRoLWVuZGlhbj0ke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdsaXR0bGUnLCAnYmlnJywgZCl9IFwKKwkke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCIiLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKwktLXdpdGgtc3lzcm9vdC1kaXI9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKKwktLXdpdGgtYnVpbGQtZGlyPSIke0J9IiBcCisJLS1vcHRpbWl6ZS1mb3Itc2l6ZSBcCisJLS13aXRoLXN0YWNrLXByb3RlY3RvciBcCisJLS1lbmFibGUtc2hhcmVkLWxpYnJhcnkgXAorCS0td2l0aC1weXRob24tdmVyc2lvbnM9MyBcCisJJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKKwlzZWQgLWkgLWUgInN8JHtEfXx8ZyIgJHtEfSR7bGliZGlyfS9wa2djb25maWcvYm90YW4tMi5wYworfQorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uMyIKKworRklMRVNfJHtQTn0tcHl0aG9uMyA9ICIke2xpYmRpcn0vcHl0aG9uMyIKKworUkRFUEVORFNfJHtQTn0tcHl0aG9uMyArPSAicHl0aG9uMyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMS43LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2NyeXB0c2V0dXAvY3J5cHRzZXR1cF8xLjcuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEzYjc2NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2NyeXB0c2V0dXAvY3J5cHRzZXR1cF8xLjcuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiTWFuYWdlIHBsYWluIGRtLWNyeXB0IGFuZCBMVUtTIGVuY3J5cHRlZCB2b2x1bWVzIgotREVTQ1JJUFRJT04gPSAiQ3J5cHRzZXR1cCBpcyB1c2VkIHRvIGNvbnZlbmllbnRseSBzZXR1cCBkbS1jcnlwdCBtYW5hZ2VkIFwKLWRldmljZS1tYXBwZXIgbWFwcGluZ3MuIFRoZXNlIGluY2x1ZGUgcGxhaW4gZG0tY3J5cHQgdm9sdW1lcyBhbmQgXAotTFVLUyB2b2x1bWVzLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IExVS1MgdXNlcyBhIG1ldGFkYXRhIGhlYWRlciBcCi1hbmQgY2FuIGhlbmNlIG9mZmVyIG1vcmUgZmVhdHVyZXMgdGhhbiBwbGFpbiBkbS1jcnlwdC4gT24gdGhlIG90aGVyIFwKLWhhbmQsIHRoZSBoZWFkZXIgaXMgdmlzaWJsZSBhbmQgdnVsbmVyYWJsZSB0byBkYW1hZ2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0c2V0dXAvIgotU0VDVElPTiA9ICJjb25zb2xlIgotTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjEwN2RkMjgzYjFkZmViNjZjOWIzZTZiZTMxMjMyNiIKLQotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGxpYmRldm1hcHBlciBwb3B0IGxpYmdjcnlwdCIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS92MS43LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwNThlZDM1YzViNzc2MDMyYzJhMDM2ODM4ZjllMjJhNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2NmODkzZWY3OWEzOGZiOTJkNjFmMDNjMTdiOTY0OTgyMTE5ZjUzMTljZGFhODVhMTMzNWI4NTU4Y2NhMDE2IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIFVzZSBvcGVuc3NsIGJlY2F1c2UgbGliZ2NyeXB0IGRyb3BzIHJvb3QgcHJpdmlsZWdlcwotIyBpZiBsaWJnY3J5cHQgaXMgbGlua2VkIHdpdGggbGliY2FwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9b3BlbnNzbCwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9Z2NyeXB0LCxsaWJnY3J5cHQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtYWVzLWdlbmVyaWMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1kbS1jcnlwdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW1kNSBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWNiYyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXNoYTI1Ni1nZW5lcmljIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUteHRzIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXRpYyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4wLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2NyeXB0c2V0dXAvY3J5cHRzZXR1cF8yLjAuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzdiYzZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4wLjQuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJNYW5hZ2UgcGxhaW4gZG0tY3J5cHQgYW5kIExVS1MgZW5jcnlwdGVkIHZvbHVtZXMiCitERVNDUklQVElPTiA9ICJDcnlwdHNldHVwIGlzIHVzZWQgdG8gY29udmVuaWVudGx5IHNldHVwIGRtLWNyeXB0IG1hbmFnZWQgXAorZGV2aWNlLW1hcHBlciBtYXBwaW5ncy4gVGhlc2UgaW5jbHVkZSBwbGFpbiBkbS1jcnlwdCB2b2x1bWVzIGFuZCBcCitMVUtTIHZvbHVtZXMuIFRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgTFVLUyB1c2VzIGEgbWV0YWRhdGEgaGVhZGVyIFwKK2FuZCBjYW4gaGVuY2Ugb2ZmZXIgbW9yZSBmZWF0dXJlcyB0aGFuIHBsYWluIGRtLWNyeXB0LiBPbiB0aGUgb3RoZXIgXAoraGFuZCwgdGhlIGhlYWRlciBpcyB2aXNpYmxlIGFuZCB2dWxuZXJhYmxlIHRvIGRhbWFnZS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vY3J5cHRzZXR1cC9jcnlwdHNldHVwIgorU0VDVElPTiA9ICJjb25zb2xlIgorTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjEwN2RkMjgzYjFkZmViNjZjOWIzZTZiZTMxMjMyNiIKKworREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGxpYmRldm1hcHBlciBwb3B0IGxpYmdjcnlwdCBqc29uLWMiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vdjIuMC8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZWQ0MmIzMWY2N2QwNWIwNWUzOTJkMTk0M2Q0NjdiOGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQzYTNjNzAzMzI5M2UwYzk3ZjBhZDA1MDFmZDViNGQ0OTEzYWU0OTdjYmY3MGNjYTA2NjMzY2NjNTRiNTczNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworIyBVc2Ugb3BlbnNzbCBiZWNhdXNlIGxpYmdjcnlwdCBkcm9wcyByb290IHByaXZpbGVnZXMKKyMgaWYgbGliZ2NyeXB0IGlzIGxpbmtlZCB3aXRoIGxpYmNhcCBzdXBwb3J0CitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPW9wZW5zc2wsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPWdjcnlwdCwsbGliZ2NyeXB0IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWFlcy1nZW5lcmljIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtZG0tY3J5cHQgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1tZDUgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1jYmMgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1zaGEyNTYtZ2VuZXJpYyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXh0cyBcCisiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zdGF0aWMiCisKK0ZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2NyeXB0c2V0dXAuY29uZicsICcnLCBkKX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vZW5naW5lLXBrY3MxMS9lbmdpbmUtcGtjczExXzAuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9lbmdpbmUtcGtjczExL2VuZ2luZS1wa2NzMTFfMC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNzlmMzUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9lbmdpbmUtcGtjczExL2VuZ2luZS1wa2NzMTFfMC4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkEgUEtDUyIKLURFU0NSSVBUSU9OID0gIlwKLUVuZ2luZV9wa2NzMTEgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYW4gZW5naW5lIGZvciBPcGVuU1NMLiBJdCBjYW4gYmUgXAotbG9hZGVkIHVzaW5nIGNvZGUsIGNvbmZpZyBmaWxlIG9yIGNvbW1hbmQgbGluZSBhbmQgd2lsbCBwYXNzIGFueSBmdW5jdGlvbiBcCi1jYWxsIGJ5IG9wZW5zc2wgdG8gYSBQS0NTIGNhcmRzIGFuZCBzb2Z0d2FyZSBmb3IgdXNpbmcgc21hcnQgY2FyZHMgaW4gUEtDUyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9PcGVuU0MvZW5naW5lX3BrY3MxMSIKLVNFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvZW5naW5lX3BrY3MxMS5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTk3M2ExOWY4YTYxMDVkZTA0N2YyYWRmYmJmYzA0YzMzIgotREVQRU5EUyA9ICJvcGVuc3NsIGxpYnAxMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy9lbmdpbmVfcGtjczExLmdpdCIKLVNSQ1JFViA9ICIxMzJmY2YyYzhiMzE5ZjlmNGIyZWJkYzhkY2I1NGZmNDk2ZGMwNTE5IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAtLWxpYmRpciAke2xpYmRpcn0vZW5naW5lcyBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2VuZ2luZXMvbGlicGtjczExLmxhCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZW5naW5lcy9saWJwa2NzMTEke1NPTElCU0RFVn0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9lbmdpbmVzLy5kZWJ1Zy8iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJvcGVuc3NsIGxpYnAxMSBvcGVuc2MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYmtjYXBpL2xpYmtjYXBpX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vbGlia2NhcGkvbGlia2NhcGlfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5M2RkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYmtjYXBpL2xpYmtjYXBpX2dpdC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkxpbnV4IEtlcm5lbCBDcnlwdG8gQVBJIFVzZXIgU3BhY2UgSW50ZXJmYWNlIExpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmNocm9ub3guZGUvbGlia2NhcGkuaHRtbCIKK0xJQ0VOU0UgPSAiQlNEIHwgR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQwNDIxY2YyMzE0MjNiZGExMGNlYTY5MWI2MTNlODY2IgorCitERVBFTkRTID0gImxpYnRvb2wiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisjIFVzZSB2MS4xLjMgd2l0aCBjaGFuZ2VzIG9uIHRvcCBmb3IgYnVpbGRpbmcgaW4gT0UKK1NSQ1JFViA9ICIxYzczNmM0M2ViNzFmYmI1NjQwZDAwZWZhZjM0YTFlZGYxOTcyYzQ5IgorUFYgPSAiMS4xLjMrZ2l0JHtTUkNQVn0iCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2xpYmtjYXBpLmdpdCBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3Rlc3RhcHBdID0gIi0tZW5hYmxlLWtjYXBpLXRlc3QsLCwiCitQQUNLQUdFQ09ORklHW2FwcHNdID0gIi0tZW5hYmxlLWtjYXBpLXNwZWVkIC0tZW5hYmxlLWtjYXBpLWhhc2hlciAtLWVuYWJsZS1rY2FwaS1ybmdhcHAgLS1lbmFibGUta2NhcGktZW5jYXBwIC0tZW5hYmxlLWtjYXBpLWRnc3RhcHAsLCwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgYmluZGlyIGNvbnRhaW5zIHRlc3RhcHAgYW5kIGFwcHMuICBIb3dldmVyIGl0IGlzIGFsd2F5cyBjcmVhdGVkLCBldmVuCisgICAgIyB3aGVuIG5vIGJpbmFyaWVzIGFyZSBpbnN0YWxsZWQgKGVtcHR5IGJpbl9QUk9HUkFNUyBpbiBNYWtlZmlsZS5hbSksCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7YmluZGlyfQorfQorCitDUFBGTEFHU19hcHBlbmRfbGliYy1tdXNsX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1lcnJvcj1zaWduLWNvbXBhcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYm1jcnlwdC9saWJtY3J5cHRfMi41LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2xpYm1jcnlwdC9saWJtY3J5cHRfMi41LjguYmIKaW5kZXggMmExMzNjNi4uYmU0MTNhMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9saWJtY3J5cHQvbGlibWNyeXB0XzIuNS44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vbGlibWNyeXB0L2xpYm1jcnlwdF8yLjUuOC5iYgpAQCAtOSw0ICs5LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwODIxODMwZDkzMGE4NmE1YzY5MTEwODM3YzU1YjdkYSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGViNmMwNzRiYmFiMTY4YWM0N2I5NDdjMTk1ZmY4Y2VmOWQ1MWEyMTFjZGQxOGNhOWM5ZWYzNGQyN2EzNzNlIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbWNyeXB0L2ZpbGVzL0xpYm1jcnlwdC8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJMaWJtY3J5cHQvKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKwogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgYmluY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3MWJkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIHVzaW5nIFBLQ1MiCi1ERVNDUklQVElPTiA9ICJwa2NzMTEtaGVscGVyIGlzIGEgbGlicmFyeSB0aGF0IHNpbXBsaWZpZXMgdGhlIGludGVyYWN0aW9uIHdpdGggUEtDUyBcCi1wcm92aWRlcnMgZm9yIGVuZC11c2VyIGFwcGxpY2F0aW9ucyB1c2luZyBhIHNpbXBsZSBBUEkgYW5kIG9wdGlvbmFsIE9wZW5TU0wgXAotZW5naW5lLiBUaGUgbGlicmFyeSBhbGxvd3MgdXNpbmcgbXVsdGlwbGUgUEtDUyBlbnVtZXJhdGluZyBhdmFpbGFibGUgdG9rZW4gXAotY2VydGlmaWNhdGVzLCBvciBzZWxlY3RpbmcgYSBjZXJ0aWZpY2F0ZSBkaXJlY3RseSBieSBzZXJpYWxpemVkIGlkLCBoYW5kbGluZyBcCi1jYXJkIHJlbW92YWwgYW5kIGNhcmQgaW5zZXJ0IGV2ZW50cywgaGFuZGxpbmcgY2FyZCBpZS1pbnNlcnQgdG8gYSBkaWZmZXJlbnQgXAotc2xvdCwgc3VwcG9ydGluZyBzZXNzaW9uIGV4cGlyYXRpb24gYW5kIG11Y2ggbW9yZSBhbGwgdXNpbmcgYSBzaW1wbGUgQVBJLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc2MtcHJvamVjdC5vcmcvcGtjczExLWhlbHBlci8iCi1TRUNUSU9OID0gIkRldmVsb3BtZW50L0xpYnJhcmllcyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NDk0ODgxMDYzMWJjYWMxNDJhZjUzZDMyZGY1YjZlZTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OGE3MWQwNDc1ZDA4ZWVlNzZkOGI2ZDBjNmRiZWM1NDMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9Zjc5ZjkwZWE3YTEwNjc5NmFmODBiNWQwNWYxZjhkYTEgXAotIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQy8ke0JQTn0uZ2l0IgotU1JDX1VSSVttZDVzdW1dID0gIjlmNjJhZjlmNDc1OTAxYjg5MzU1MjY2MTQxMzA2NjczIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5NGVjNTljOTNlN2M1NmM1MjhmMzM1ZDkzNTM4NDllMmU3Yzk0YTZiMWI0MWM4OTYwNDY5NGU3MzgxMTMzODYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiZTdhZGY4ZjM1YmUyMzJhNGYwNGM1M2I0YWM0MDliZTUyNzkyMDkzZSIKLQotREVQRU5EUyA9ICJ6bGliIG5ldHRsZSBnbnV0bHMgZ21wIG9wZW5zc2wgbnNzIG5zcHIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXN0YXRpYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzFmMmVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNS4xLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciB1c2luZyBQS0NTIgorREVTQ1JJUFRJT04gPSAicGtjczExLWhlbHBlciBpcyBhIGxpYnJhcnkgdGhhdCBzaW1wbGlmaWVzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIFBLQ1MgXAorcHJvdmlkZXJzIGZvciBlbmQtdXNlciBhcHBsaWNhdGlvbnMgdXNpbmcgYSBzaW1wbGUgQVBJIGFuZCBvcHRpb25hbCBPcGVuU1NMIFwKK2VuZ2luZS4gVGhlIGxpYnJhcnkgYWxsb3dzIHVzaW5nIG11bHRpcGxlIFBLQ1MgZW51bWVyYXRpbmcgYXZhaWxhYmxlIHRva2VuIFwKK2NlcnRpZmljYXRlcywgb3Igc2VsZWN0aW5nIGEgY2VydGlmaWNhdGUgZGlyZWN0bHkgYnkgc2VyaWFsaXplZCBpZCwgaGFuZGxpbmcgXAorY2FyZCByZW1vdmFsIGFuZCBjYXJkIGluc2VydCBldmVudHMsIGhhbmRsaW5nIGNhcmQgaWUtaW5zZXJ0IHRvIGEgZGlmZmVyZW50IFwKK3Nsb3QsIHN1cHBvcnRpbmcgc2Vzc2lvbiBleHBpcmF0aW9uIGFuZCBtdWNoIG1vcmUgYWxsIHVzaW5nIGEgc2ltcGxlIEFQSS4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL3BrY3MxMS1oZWxwZXIvIgorU0VDVElPTiA9ICJEZXZlbG9wbWVudC9MaWJyYXJpZXMiCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTMwZjEwZDIyY2ZiMWJhOThjY2Q3MTRhNDFhZDMzMTFhIFwKKyAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PThhNzFkMDQ3NWQwOGVlZTc2ZDhiNmQwYzZkYmVjNTQzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTY2YjdhMzdjM2MxMDQ4M2MxZmQ4NjAwNzcyNjEwNGQ3IFwKKyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvJHtCUE59LmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKyMgdjEuMjUuMQorU1JDUkVWID0gIjI3MTNjYjA5ZGNkOTAxMDRjYjdiY2ViNWYxNGNkNmY5MDgzNGY3YjEiCisKK0RFUEVORFMgPSAiemxpYiBuZXR0bGUgZ251dGxzIGdtcCBvcGVuc3NsIG5zcyBuc3ByIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCmluZGV4IDVkYTM0NDguLjRkN2FjM2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCkBAIC0xOCwxOSArMTgsMTYgQEAKICBzcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL0xJQlJBUlkvc3JjL2JpZF9mdW5jdGlvbnMuaCBiL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9MSUJSQVJZL3NyYy9iaWRfZnVuY3Rpb25zLmgKLWluZGV4IDJiM2Y3NmRiODYuLmNjODAzMDU3NzUgMTAwNzU1Ci0tLS0gYS9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCi0rKysgYi9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCi1AQCAtNDIsNyArNDIsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgorSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L0ludGVsUkRGUE1hdGhMaWIyMFUxL0xJQlJBUlkvc3JjL2JpZF9mdW5jdGlvbnMuaAorKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvSW50ZWxSREZQTWF0aExpYjIwVTEvTElCUkFSWS9zcmMvYmlkX2Z1bmN0aW9ucy5oCitAQCAtNDMsNyArNDMsNyBAQAogIAorICNpZiAwIC8vIE1vbmdvREIgTW9kaWZpY2F0aW9uIC0tIGp1c3QgYCNpbmNsdWRlIDxzdGRkZWYuaD5gCiAgLy8gRml4IHN5c3RlbSBoZWFkZXIgaXNzdWUgb24gU3VuIHNvbGFyaXMgYW5kIGRlZmluZSByZXF1aXJlZCB0eXBlIGJ5IG91cnNlbHZlcwogLSNpZiAhZGVmaW5lZChfV0NIQVJfVCkgJiYgIWRlZmluZWQoX1dDSEFSX1RfREVGSU5FRCkgJiYgIWRlZmluZWQoX19RTlhfXykKICsjaWYgIWRlZmluZWQoX1dDSEFSX1QpICYmICFkZWZpbmVkKF9XQ0hBUl9UX0RFRklORUQpICYmICFkZWZpbmVkKF9fUU5YX18pICYmICFkZWZpbmVkKF9fREVGSU5FRF93Y2hhcl90KQogIHR5cGVkZWYgaW50ICAgd2NoYXJfdDsKICAjZW5kaWYKLSAKLS0tIAotMi4xNC4xCi0KKyAjZWxzZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1TdXBwb3J0LWRlcHJlY2F0ZWQtcmVzb2x2ZXItZnVuY3Rpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1TdXBwb3J0LWRlcHJlY2F0ZWQtcmVzb2x2ZXItZnVuY3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MDQxMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVN1cHBvcnQtZGVwcmVjYXRlZC1yZXNvbHZlci1mdW5jdGlvbnMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA1OTk0MDIzYTAzNjM0ZGZjMDMxODk3NmMyOTNlNzM5MWZlNmFhMDYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgQXVnIDIwMTggMTI6NTY6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFN1cHBvcnQgZGVwcmVjYXRlZCByZXNvbHZlciBmdW5jdGlvbnMKKworTmVlZGVkIGZvciAgbXVzbCBsaWJjCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tb25nby91dGlsL2Ruc19xdWVyeV9wb3NpeC1pbXBsLmggfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9tb25nby91dGlsL2Ruc19xdWVyeV9wb3NpeC1pbXBsLmggYi9zcmMvbW9uZ28vdXRpbC9kbnNfcXVlcnlfcG9zaXgtaW1wbC5oCitpbmRleCBkMTk5NTgwMTBjLi5iYmNhMzMwOWVkIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvZG5zX3F1ZXJ5X3Bvc2l4LWltcGwuaAorKysrIGIvc3JjL21vbmdvL3V0aWwvZG5zX3F1ZXJ5X3Bvc2l4LWltcGwuaAorQEAgLTUzLDYgKzUzLDEyIEBACisgCisgI2luY2x1ZGUgPGJvb3N0L25vbmNvcHlhYmxlLmhwcD4KKyAKKysjaWZuZGVmIHJlc19uaW5pdAorKyNkZWZpbmUgcmVzX25jbG9zZShhcmcpCisrI2RlZmluZSByZXNfbmluaXQoYXJnKSAgICByZXNfaW5pdCgpCisrI2RlZmluZSByZXNfbnNlYXJjaChzdGEsIG5hbSwgY2xhcywgdHlwLCBhbnMsIGFsZW4pICByZXNfc2VhcmNoKG5hbSwgY2xhcywgdHlwLCBhbnMsIGFsZW4pCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIG1vbmdvIHsKKyBuYW1lc3BhY2UgZG5zIHsKKyAvLyBUaGUgYW5vbnltb3VzIG5hbWVzcGFjZSBpcyBzYWZlLCBpbiB0aGlzIGhlYWRlciwgYXMgaXQgaXMgbm90IHJlYWxseSBhIGhlYWRlci4gIEl0IGlzIG9ubHkgdXNlZAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCmluZGV4IGFhMDFlOTUuLmE2ZDcyMWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2gKQEAgLTEzLDcgKzEzLDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9TQ29uc3RydWN0CiArKysgZ2l0L1NDb25zdHJ1Y3QKLUBAIC01NDgsNiArNTQ4LDcgQEAgZGVmIHZhcmlhYmxlX2FyY2hfY29udmVydGVyKHZhbCk6CitAQCAtNTY0LDYgKzU2NCw3IEBAIGRlZiB2YXJpYWJsZV9hcmNoX2NvbnZlcnRlcih2YWwpOgogICAgICAgICAgJ2FtZDY0JzogICd4ODZfNjQnLAogICAgICAgICAgJ2VtdDY0JzogICAneDg2XzY0JywKICAgICAgICAgICd4ODYnOiAgICAnaTM4NicsCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgIH0KICAgICAgdmFsID0gdmFsLmxvd2VyKCkKICAKLUBAIC02MjcsNyArNjI4LDggQEAgZW52X3ZhcnMuQWRkKAorQEAgLTY1Miw3ICs2NTMsOCBAQCBlbnZfdmFycy5BZGQoCiAgKQogIAogIGVudl92YXJzLkFkZCgnQ0MnLApAQCAtMzEsNyArMzEsNyBAQAogIAogIGVudl92YXJzLkFkZCgnQ0NGTEFHUycsCiAgICAgIGhlbHA9J1NldHMgZmxhZ3MgZm9yIHRoZSBDIGFuZCBDKysgY29tcGlsZXInLAotQEAgLTY0Nyw3ICs2NDksOCBAQCBlbnZfdmFycy5BZGQoJ0NQUFBBVEgnLAorQEAgLTY3Miw3ICs2NzQsOCBAQCBlbnZfdmFycy5BZGQoJ0NQUFBBVEgnLAogICAgICBjb252ZXJ0ZXI9dmFyaWFibGVfc2hsZXhfY29udmVydGVyKQogIAogIGVudl92YXJzLkFkZCgnQ1hYJywKQEAgLTQxLDE5ICs0MSwxOSBAQAogIAogIGVudl92YXJzLkFkZCgnQ1hYRkxBR1MnLAogICAgICBoZWxwPSdTZXRzIGZsYWdzIGZvciB0aGUgQysrIGNvbXBpbGVyJywKLUBAIC04OTUsNiArODk4LDcgQEAgZW52RGljdCA9IGRpY3QoQlVJTERfUk9PVD1idWlsZERpciwKK0BAIC05NjEsNiArOTY0LDcgQEAgZW52RGljdCA9IGRpY3QoQlVJTERfUk9PVD1idWlsZERpciwKICAgICAgICAgICAgICAgICApCiAgCiAgZW52ID0gRW52aXJvbm1lbnQodmFyaWFibGVzPWVudl92YXJzLCAqKmVudkRpY3QpCiArZW52LlByZXBlbmRFTlZQYXRoKCdQQVRIJywgb3MuZ2V0ZW52KCdQQVRIJykpCiAgZGVsIGVudkRpY3QKICAKLSBlbnYuQWRkTWV0aG9kKGVudl9vc19pc193cmFwcGVyLCAnVGFyZ2V0T1NJcycpCisgZW52LkFkZE1ldGhvZChtb25nb19wbGF0Zm9ybS5lbnZfb3NfaXNfd3JhcHBlciwgJ1RhcmdldE9TSXMnKQogSW5kZXg6IGdpdC9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvc3JjL21vbmdvL3V0aWwvU0NvbnNjcmlwdAogKysrIGdpdC9zcmMvbW9uZ28vdXRpbC9TQ29uc2NyaXB0Ci1AQCAtMjc0LDYgKzI3NCw4IEBAIGlmIGVudlsnTU9OR09fQUxMT0NBVE9SJ10gPT0gJ3RjbWFsbG9jJzoKK0BAIC0zMjksNiArMzI5LDggQEAgaWYgZW52WydNT05HT19BTExPQ0FUT1InXSA9PSAndGNtYWxsb2MnOgogICAgICAgICAgICAgICAgICAnTU9OR09fSEFWRV9HUEVSRlRPT0xTX1NJWkVfQ0xBU1NfU1RBVFMnCiAgICAgICAgICAgICAgXQogICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCmluZGV4IGY4YzQxOWQuLmMxN2ViZjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2gKQEAgLTksMzQgKzksMjUgQEAKICBzcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAgfCA2ICsrKystLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAgYi9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAKLWluZGV4IDkxMDAxNTIxNWUuLmJmOGMxZmZkMTUgMTAwNjQ0Ci0tLS0gYS9zcmMvbW9uZ28vdXRpbC9wcm9jZXNzaW5mb19saW51eC5jcHAKLSsrKyBiL3NyYy9tb25nby91dGlsL3Byb2Nlc3NpbmZvX2xpbnV4LmNwcAotQEAgLTQwLDcgKzQwLDcgQEAKLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KK0luZGV4OiBnaXQvc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL21vbmdvL3V0aWwvcHJvY2Vzc2luZm9fbGludXguY3BwCisrKysgZ2l0L3NyYy9tb25nby91dGlsL3Byb2Nlc3NpbmZvX2xpbnV4LmNwcAorQEAgLTQ0LDEwICs0NCwxMCBAQAogICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaWZkZWYgX19VQ0xJQkNfXwotKyNpZm5kZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gI2Vsc2UKKyAjaWZkZWYgX19CSU9OSUNfXworICNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorLSNlbGlmIF9fVUNMSUJDX18KKy0jaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKy0jZWxzZQorKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQogICNpbmNsdWRlIDxnbnUvbGliYy12ZXJzaW9uLmg+Ci1AQCAtNDUxLDExICs0NTEsMTMgQEAgZG91YmxlIFByb2Nlc3NJbmZvOjpnZXRTeXN0ZW1NZW1vcnlQcmVzc3VyZVBlcmNlbnRhZ2UoKSB7Ci0gfQorKyNlbHNlCisrI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgI2VuZGlmCiAgCi0gdm9pZCBQcm9jZXNzSW5mbzo6Z2V0RXh0cmFJbmZvKEJTT05PYmpCdWlsZGVyJiBpbmZvKSB7Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICBMaW51eFByb2MgcChfcGlkKTsKLSAgICAgaWYgKHAuX21hal9mbHQgPD0gc3RkOjpudW1lcmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSkKLSAgICAgICAgIGluZm8uYXBwZW5kTnVtYmVyKCJwYWdlX2ZhdWx0cyIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocC5fbWFqX2ZsdCkpOwotICAgICBlbHNlCi0gICAgICAgICBpbmZvLmFwcGVuZE51bWJlcigicGFnZV9mYXVsdHMiLCBzdGF0aWNfY2FzdDxkb3VibGU+KHAuX21hal9mbHQpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLyoqCi1AQCAtNDkxLDcgKzQ5Myw3IEBAIHZvaWQgUHJvY2Vzc0luZm86OlN5c3RlbUluZm86OmNvbGxlY3RTeXN0ZW1JbmZvKCkgeworICNpbmNsdWRlIDxib29zdC9maWxlc3lzdGVtLmhwcD4KK0BAIC01MDMsNyArNTAzLDcgQEAgdm9pZCBQcm9jZXNzSW5mbzo6U3lzdGVtSW5mbzo6Y29sbGVjdFN5cwogICAgICBzdHJpbmdzdHJlYW0gc3M7CiAgICAgIHNzIDw8ICJ1Q2xpYmMtIiA8PCBfX1VDTElCQ19NQUpPUl9fIDw8ICIuIiA8PCBfX1VDTElCQ19NSU5PUl9fIDw8ICIuIiA8PCBfX1VDTElCQ19TVUJMRVZFTF9fOwogICAgICBiRXh0cmEuYXBwZW5kKCJsaWJjVmVyc2lvbiIsIHNzLnN0cigpKTsKQEAgLTQ1LDYgKzM2LDMgQEAKICAgICAgYkV4dHJhLmFwcGVuZCgibGliY1ZlcnNpb24iLCBnbnVfZ2V0X2xpYmNfdmVyc2lvbigpKTsKICAjZW5kaWYKICAgICAgaWYgKCF2ZXJTaWcuZW1wdHkoKSkKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCmluZGV4IDM4OWIzMDIuLjk5ZWRhZDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtbG9uZy1sb25nLWluc3RlYWQtb2YtaW50NjRfdC5wYXRjaApAQCAtNDQsNyArNDQsNyBAQAogIAogICAgICAgICAgICAgIGlmICghcGFyc2VOdW1iZXJGcm9tU3RyaW5nKHN0cmluZ1ZhbHVlLCAmdmFsdWUpLmlzT0soKSkgewogICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7Ci1AQCAtNDI2LDcgKzQyNiw3IEBAIFN0YXR1cyBwYXJzZVByb2NEaXNrU3RhdHMoY29uc3Qgc3RkOjp2ZWMKK0BAIC01MjIsNyArNTIyLDcgQEAgU3RhdHVzIHBhcnNlUHJvY0Rpc2tTdGF0cyhjb25zdCBzdGQ6OnZlYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNPTk9iakJ1aWxkZXIqIGJ1aWxkZXIpIHsKICAgICAgYm9vbCBmb3VuZEtleXMgPSBmYWxzZTsKQEAgLTUzLDcgKzUzLDcgQEAKICAgICAgc3RhdHMucmVzZXJ2ZShrRGlza0ZpZWxkQ291bnQpOwogIAogICAgICB1c2luZyBzdHJpbmdfc3BsaXRfaXRlcmF0b3IgPSBib29zdDo6c3BsaXRfaXRlcmF0b3I8U3RyaW5nRGF0YTo6Y29uc3RfaXRlcmF0b3I+OwotQEAgLTUwMSw3ICs1MDEsNyBAQCBTdGF0dXMgcGFyc2VQcm9jRGlza1N0YXRzKGNvbnN0IHN0ZDo6dmVjCitAQCAtNTk3LDcgKzU5Nyw3IEBAIFN0YXR1cyBwYXJzZVByb2NEaXNrU3RhdHMoY29uc3Qgc3RkOjp2ZWMKICAKICAgICAgICAgICAgICAgICAgU3RyaW5nRGF0YSBzdHJpbmdWYWx1ZSgoKnBhcnRJdCkuYmVnaW4oKSwgKCpwYXJ0SXQpLmVuZCgpKTsKICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLXN0cmVycm9yX3Itb25seS1vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMzRkOTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2Utc3RyZXJyb3Jfci1vbmx5LW9uLWdsaWJjLXN5c3RlbXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGE0ZGZjOTJmZjM0MmU1OTU5NmFiNjQyNjdhOGQ0ZjIyZjE3M2MyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEyOjQwOjQxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBVc2Ugc3RyZXJyb3JfciBvbmx5IG9uIGdsaWJjIHN5c3RlbXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9tb25nby91dGlsL2xvZy5jcHAgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbW9uZ28vdXRpbC9sb2cuY3BwIGIvc3JjL21vbmdvL3V0aWwvbG9nLmNwcAotaW5kZXggMTk1N2ViNDc5MS4uZGRmMzkwODgxOCAxMDA2NDQKLS0tLSBhL3NyYy9tb25nby91dGlsL2xvZy5jcHAKLSsrKyBiL3NyYy9tb25nby91dGlsL2xvZy5jcHAKLUBAIC0xMDEsNyArMTAxLDcgQEAgc3RyaW5nIGVycm5vV2l0aERlc2NyaXB0aW9uKGludCBlcnJOdW1iZXIpIHsKLSAgICAgY2hhciBidWZba0J1Zmxlbl07Ci0gICAgIGNoYXIqIG1zZ3tudWxscHRyfTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfR05VX1NPVVJDRSkKLSsjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAgIG1zZyA9IHN0cmVycm9yX3IoZXJyTnVtYmVyLCBidWYsIGtCdWZsZW4pOwotICNlbGlmIGRlZmluZWQoX1dJTjMyKQotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODVmYTUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA5ODU0Mzg4OWY3YmEzOGMwMmViN2NkOTgyMmY0NWUyN2Q2MTllZGQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgQXVnIDIwMTggMTM6MDc6MDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBkZWZhdWx0IHN0YWNrIHNpemUgdG8gMjU2SworCitPbiBtdXNsIGRlZmF1bHQgc3RhY2sgc2l6ZSBpcyB+ODBLIHdoaWNoIGlzIHRvbyBsb3cKK2ZvciBtb25nb2RiCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgLi4uL3BsYXRmb3JtL3N0YWNrX2xvY2F0b3JfcHRocmVhZF9nZXRhdHRyX25wLmNwcCAgICAgIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbW9uZ28vcGxhdGZvcm0vc3RhY2tfbG9jYXRvcl9wdGhyZWFkX2dldGF0dHJfbnAuY3BwIGIvc3JjL21vbmdvL3BsYXRmb3JtL3N0YWNrX2xvY2F0b3JfcHRocmVhZF9nZXRhdHRyX25wLmNwcAoraW5kZXggNjQ4ZDI2YTQxYy4uNmUzOThmMDBjOSAxMDA2NDQKKy0tLSBhL3NyYy9tb25nby9wbGF0Zm9ybS9zdGFja19sb2NhdG9yX3B0aHJlYWRfZ2V0YXR0cl9ucC5jcHAKKysrKyBiL3NyYy9tb25nby9wbGF0Zm9ybS9zdGFja19sb2NhdG9yX3B0aHJlYWRfZ2V0YXR0cl9ucC5jcHAKK0BAIC0zNSw2ICszNSwxNiBAQAorICNpbmNsdWRlICJtb25nby91dGlsL2Fzc2VydF91dGlsLmgiCisgI2luY2x1ZGUgIm1vbmdvL3V0aWwvc2NvcGVndWFyZC5oIgorIAorK19fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkKKytzdGF0aWMgdm9pZCBzZXRfZGVmYXVsdF9zdGFja19zaXplKHZvaWQpCisreworKyAgICBwdGhyZWFkX2F0dHJfdCBhdHRyOworKyAgICBpbnZhcmlhbnQocHRocmVhZF9hdHRyX2luaXQoJmF0dHIpID09IDApOworKyAgICBpbnZhcmlhbnQocHRocmVhZF9hdHRyX3NldHN0YWNrc2l6ZSgmYXR0ciwgMjU2KjEwMjQpID09IDApOworKyAgICBwdGhyZWFkX3NldGF0dHJfZGVmYXVsdF9ucCgmYXR0cik7CisrICAgIGludmFyaWFudChwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cikgPT0gMCk7CisrfQorKworIG5hbWVzcGFjZSBtb25nbyB7CisgCisgU3RhY2tMb2NhdG9yOjpTdGFja0xvY2F0b3IoKSB7CistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLWRfc3RhdGUuY3BwLUFkZC1taXNzaW5nLWRlcGVuZGVubmN5LW9uLWxvY2FsX3NoYXJkaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNDg4YWQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1kX3N0YXRlLmNwcC1BZGQtbWlzc2luZy1kZXBlbmRlbm5jeS1vbi1sb2NhbF9zaGFyZGluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA1NzU5ODc4ZTVkMjc4ZjExYTEwNjNlOGZjY2QxZTZiN2I1NGNhYWRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNjoyNTozNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZF9zdGF0ZS5jcHA6IEFkZCBtaXNzaW5nIGRlcGVuZGVubmN5IG9uCi0gbG9jYWxfc2hhcmRpbmdfaW5mbwotCi1GaXhlcwotfCBzcmMvbW9uZ28vcy9kX3N0YXRlLmNwcDo4MTogZXJyb3I6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gJ21vbmdvOjplbmFibGVMb2NhbFNoYXJkaW5nSW5mbyhtb25nbzo6U2VydmljZUNvbnRleHQqLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKG1vbmdvOjpPcGVyYXRpb25Db250ZXh0Kiwgc3RkOjpfX2N4eDExOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgc3RkOjphbGxvY2F0b3I8Y2hhcj4gPiBjb25zdCYpPiknCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbW9uZ28vcy9TQ29uc2NyaXB0IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLUluZGV4OiBnaXQvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9tb25nby9zL1NDb25zY3JpcHQKLSsrKyBnaXQvc3JjL21vbmdvL3MvU0NvbnNjcmlwdAotQEAgLTMxNyw1ICszMTcsNiBAQCBlbnYuTGlicmFyeSgKLSAgICAgICAgICIkQlVJTERfRElSL21vbmdvL2RiL3Mvc2hhcmRpbmciLAotICAgICAgICAgIiRCVUlMRF9ESVIvbW9uZ28vZXhlY3V0b3IvbmV0d29ya19pbnRlcmZhY2VfZmFjdG9yeSIsCi0gICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2NsaWVudC9zaGFyZF9sb2NhbCIsCi0rICAgICAgICAiJEJVSUxEX0RJUi9tb25nby9zL2xvY2FsX3NoYXJkaW5nX2luZm8iLAotICAgICBdLAotICkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtQ29uZGl0aW9uYWxpemUtZ2xpYmMtc3BlY2lmaWMtc3RyZXJyb3Jfci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU5MWY5NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAzLUNvbmRpdGlvbmFsaXplLWdsaWJjLXNwZWNpZmljLXN0cmVycm9yX3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDQ1OGY4MGY0ODJhMjAxYjQyN2ExYzkyMjM1ODA0ZDBjM2Y5OGZkNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyIFNlcCAyMDE3IDEzOjAxOjExIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBDb25kaXRpb25hbGl6ZSBnbGliYyBzcGVjaWZpYyBzdHJlcnJvcl9yCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSAuLi4vYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwICAgIHwgMTEgKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3RoaXJkX3BhcnR5L2FzaW8tYXNpby0xLTExLTAvYXNpby9pbmNsdWRlL2FzaW8vaW1wbC9lcnJvcl9jb2RlLmlwcCBiL3NyYy90aGlyZF9wYXJ0eS9hc2lvLWFzaW8tMS0xMS0wL2FzaW8vaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKLWluZGV4IDRlN2JhZGIxNGEuLjBlZWFlODg0ZTIgMTAwNjQ0Ci0tLS0gYS9zcmMvdGhpcmRfcGFydHkvYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwCi0rKysgYi9zcmMvdGhpcmRfcGFydHkvYXNpby1hc2lvLTEtMTEtMC9hc2lvL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwCi1AQCAtOTcsMTcgKzk3LDE0IEBAIHB1YmxpYzoKLSAjaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX1FOWF9fKSB8fCBkZWZpbmVkKF9fU1lNQklBTjMyX18pCi0gICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgIHJldHVybiBzdHJlcnJvcih2YWx1ZSk7Ci0tI2VsaWYgZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIFwKLS0gIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykgXAotLSAgfHwgZGVmaW5lZChfQUlYKSB8fCBkZWZpbmVkKF9faHB1eCkgfHwgZGVmaW5lZChfX29zZl9fKSBcCi0tICB8fCBkZWZpbmVkKF9fQU5EUk9JRF9fKQotKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9HTlVfU09VUkNFKQotKyAgICBjaGFyIGJ1ZlsyNTZdID0gIiI7Ci0rICAgIHJldHVybiBzdHJlcnJvcl9yKHZhbHVlLCBidWYsIHNpemVvZihidWYpKTsKLSsjZWxzZQotICAgICBjaGFyIGJ1ZlsyNTZdID0gIiI7Ci0gICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgIHN0cmVycm9yX3IodmFsdWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICByZXR1cm4gYnVmOwotLSNlbHNlCi0tICAgIGNoYXIgYnVmWzI1Nl0gPSAiIjsKLS0gICAgcmV0dXJuIHN0cmVycm9yX3IodmFsdWUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICNlbmRpZgotICNlbmRpZiAvLyBkZWZpbmVkKEFTSU9fV0lORE9XUykKLSAgIH0KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaAppbmRleCBlODcxZjJiLi5hMmUxZjc5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCkBAIC04LDExICs4LDExIEBACiAgc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL2J1aWxkX2xpbnV4L3dpcmVkdGlnZXJfY29uZmlnLmggYi9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oCi1pbmRleCAxMTIyZTFlMzE5Li5mZGZkNDg2ODdiIDEwMDY0NAotLS0tIGEvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaAotKysrIGIvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaAotQEAgLTEwMSw3ICsxMDEsNyBAQAorSW5kZXg6IGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvYnVpbGRfbGludXgvd2lyZWR0aWdlcl9jb25maWcuaAorKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9idWlsZF9saW51eC93aXJlZHRpZ2VyX2NvbmZpZy5oCitAQCAtMTA0LDcgKzEwNCw3IEBACiAgI2RlZmluZSBIQVZFX1NUUklOR19IIDEKICAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdXEnIGZ1bmN0aW9uLiAqLwpAQCAtMjEsNiArMjEsMyBAQAogIAogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3luY19maWxlX3JhbmdlJyBmdW5jdGlvbi4gKi8KICAvKiAjdW5kZWYgSEFWRV9TWU5DX0ZJTEVfUkFOR0UgKi8KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoCmluZGV4IDkwNDZiYjIuLmMwNjg5ODcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiL2FybTY0LXN1cHBvcnQucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApAQCAtNyw3ICs3LDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9TQ29uc3RydWN0CiArKysgZ2l0L1NDb25zdHJ1Y3QKLUBAIC05OTAsNiArOTkwLDcgQEAgZWxpZiBlbmRpYW4gPT0gImJpZyI6CitAQCAtMTA1NSw2ICsxMDU1LDcgQEAgZWxpZiBlbmRpYW4gPT0gImJpZyI6CiAgcHJvY2Vzc29yX21hY3JvcyA9IHsKICAgICAgJ2FybScgICAgIDogeyAnZW5kaWFuJzogJ2xpdHRsZScsICdkZWZpbmVzJzogKCdfX2FybV9fJywpIH0sCiAgICAgICdhYXJjaDY0JyA6IHsgJ2VuZGlhbic6ICdsaXR0bGUnLCAnZGVmaW5lcyc6ICgnX19hcm02NF9fJywgJ19fYWFyY2g2NF9fJyl9LApAQCAtMTksNyArMTksNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9TQ29uc2NyaXB0CiArKysgZ2l0L3NyYy90aGlyZF9wYXJ0eS9JbnRlbFJERlBNYXRoTGliMjBVMS9TQ29uc2NyaXB0Ci1AQCAtMzAxLDcgKzMwMSw3IEBAIGlmIHByb2Nlc3NvciA9PSAnaTM4Nic6CitAQCAtMzA4LDcgKzMwOCw3IEBAIGlmIHByb2Nlc3NvciA9PSAnaTM4Nic6CiAgZWxpZiBwcm9jZXNzb3IgPT0gJ2FybSc6CiAgICAgIGNwcF9kZWZpbmVzWydJQTMyJ10gPSAnMScKICAgICAgY3BwX2RlZmluZXNbJ2lhMzInXSA9ICcxJwpAQCAtMzIsNyArMzIsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL3NyYy90aGlyZF9wYXJ0eS93aXJlZHRpZ2VyL1NDb25zY3JpcHQKICsrKyBnaXQvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAotQEAgLTEzOSw3ICsxMzksNyBAQCBjb25kaXRpb25fbWFwID0geworQEAgLTE1MSw3ICsxNTEsNyBAQCBjb25kaXRpb25fbWFwID0gewogICAgICAnUE9TSVhfSE9TVCcgICA6IG5vdCBlbnYuVGFyZ2V0T1NJcygnd2luZG93cycpLAogICAgICAnV0lORE9XU19IT1NUJyA6IGVudi5UYXJnZXRPU0lzKCd3aW5kb3dzJyksCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaAppbmRleCA1YzVjMjBjLi4yM2Q0OTIzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9kaXNhYmxlLWh3LWNyYzMyLW9uLWFybTY0LXMzOTB4LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiL2Rpc2FibGUtaHctY3JjMzItb24tYXJtNjQtczM5MHgucGF0Y2gKQEAgLTUsNyArNSw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvU0NvbnNjcmlwdAogKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9TQ29uc2NyaXB0Ci1AQCAtMTY5LDcgKzE2OSw5IEBAIGlmIHVzZVNuYXBweToKK0BAIC0xODEsNyArMTgxLDkgQEAgaWYgdXNlU25hcHB5OgogICMgSWYgbm90IGF2YWlsYWJsZSBhdCBydW50aW1lLCB3ZSBmYWxsIGJhY2sgdG8gc29mdHdhcmUgaW4gc29tZSBjYXNlcy4KICAjCiAgIyBPbiB6U2VyaWVzIHdlIG1heSBkaXNhYmxlIGJlY2F1c2UgU0xFUyAxMSBrZXJuZWwgZG9lIG5vdCBzdXBwb3J0IHRoZSBpbnN0cnVjdGlvbnMuCkBAIC0zMiw3ICszMiw3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvc3JjL3RoaXJkX3BhcnR5L3dpcmVkdGlnZXIvc3JjL2NoZWNrc3VtL3pzZXJpZXMvY3JjMzItczM5MHguYwogKysrIGdpdC9zcmMvdGhpcmRfcGFydHkvd2lyZWR0aWdlci9zcmMvY2hlY2tzdW0venNlcmllcy9jcmMzMi1zMzkweC5jCi1AQCAtNzgsNiArNzgsNyBAQCB1bnNpZ25lZCBpbnQgX193dF9jcmMzMmNfbGUodW5zaWduZWQgaW50CitAQCAtNzcsNiArNzcsNyBAQCB1bnNpZ25lZCBpbnQgX193dF9jcmMzMmNfbGUodW5zaWduZWQgaW50CiAgCQlyZXR1cm4gY3JjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgCX0KICAKQEAgLTQwLDcgKzQwLDcgQEAKICAvKiBNYWluIENSQy0zMiBmdW5jdGlvbnMgKi8KICBERUZJTkVfQ1JDMzJfVlgoX193dF9jcmMzMmNfbGVfdngsIF9fd3RfY3JjMzJjX2xlX3ZnZm1fMTYsIF9fd3RfY3JjMzJjX2xlKQogIAotQEAgLTkwLDYgKzkxLDcgQEAgX193dF9jaGVja3N1bV9odyhjb25zdCB2b2lkICpjaHVuaywgc2l6ZQorQEAgLTg5LDYgKzkwLDcgQEAgX193dF9jaGVja3N1bV9odyhjb25zdCB2b2lkICpjaHVuaywgc2l6ZQogIHsKICAJcmV0dXJuICh+X193dF9jcmMzMmNfbGVfdngoMHhmZmZmZmZmZiwgY2h1bmssIGxlbikpOwogIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiX2dpdC5iYgppbmRleCBiYjNmZjNiLi5kMzlhYjBhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCkBAIC0zLDQ4ICszLDQ0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HTlUtQUdQTC0zLjAudHh0O21kNT03M2YxZWIyMDUxN2M1NWJmOTQ5M2I3ZGQ2ZTQ4MDc4OCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9BUEFDSEUtMi4wLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCiAKLURFUEVORFMgPSAib3BlbnNzbCBsaWJwY3JlIGxpYnBjYXAgemxpYiBweXRob24gYm9vc3QiCitERVBFTkRTID0gIm9wZW5zc2wgbGlicGNyZSBsaWJwY2FwIHpsaWIgYm9vc3QgY3VybCBweXRob24gXAorICAgICAgICAgICBweXRob24tc2V0dXB0b29scy1uYXRpdmUgcHl0aG9uLXR5cGluZy1uYXRpdmUgXAorICAgICAgICAgICBweXRob24tcHl5YW1sLW5hdGl2ZSBweXRob24tY2hlZXRhaC1uYXRpdmUgXAorICAgICAgICAgICAiCiAKLWluaGVyaXQgc2NvbnMgZG9zMnVuaXggc2l0ZWluZm8KK2luaGVyaXQgc2NvbnMgZG9zMnVuaXggc2l0ZWluZm8gcHl0aG9ubmF0aXZlCiAKLVBWID0gIjMuNC4xMytnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJmYmRlZjJjY2M1M2UwZmNjOWFmYjU3MDA2MzYzM2Q5OTJiMmFhZTQyIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21vbmdvZGIvbW9uZ28uZ2l0O2JyYW5jaD12My40IFwKK1BWID0gIjQuMC4xK2dpdCR7U1JDUFZ9IgorI3Y0LjAuMQorU1JDUkVWID0gIjU0ZjE1ODJmYzZlYjAxZGU0ZDRjNDJmMjZmYzEzM2U2MjNmMDY1ZmIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXY0LjAgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZF9zdGF0ZS5jcHAtQWRkLW1pc3NpbmctZGVwZW5kZW5uY3ktb24tbG9jYWxfc2hhcmRpbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1zdHJlcnJvcl9yLW9ubHktb24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1Db25kaXRpb25hbGl6ZS1nbGliYy1zcGVjaWZpYy1zdHJlcnJvcl9yLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2FybTY0LXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ody1jcmMzMi1vbi1hcm02NC1zMzkweC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtZGVwcmVjYXRlZC1yZXNvbHZlci1mdW5jdGlvbnMucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2ggXAogICAgICAgICAgICAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi0jIFdpcmVkdGlnZXIgc3VwcG9ydHMgb25seSA2NC1iaXQgcGxhdGZvcm1zCi1QQUNLQUdFQ09ORklHX3g4Ni02NCA/Pz0gInRjbWFsbG9jIHdpcmVkdGlnZXIiCi1QQUNLQUdFQ09ORklHX2FhcmNoNjQgPz89ICJ0Y21hbGxvYyB3aXJlZHRpZ2VyIgorQ09NUEFUSUJMRV9IT1NUID89ICcoeDg2XzY0fGkuODZ8cG93ZXJwYzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4JworCitDT01QQVRJQkxFX0hPU1RfYXJtID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX3g4NiA9ICJudWxsIgorCiBQQUNLQUdFQ09ORklHID8/PSAidGNtYWxsb2MiCiAjIGdwZXJmdG9vbHMgY29tcGlsYXRpb24gZmFpbHMgZm9yIGFybSBiZWxvdyB2NyBiZWNhdXNlIG9mIG1pc3Npbmcgc3VwcG9ydCBvZgogIyBkbWIgb3BlcmF0aW9uLiBTbyB3ZSB1c2Ugc3lzdGVtLWFsbG9jYXRvciBpbnN0ZWFkIG9mIHRjbWFsbG9jCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9hcm12NiA9ICJ0Y21hbGxvYyIKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y21hbGxvYyIKIAotI3N0ZDo6Y3VycmVudF9leGNlcHRpb24gaXMgdW5kZWZpbmVkIGZvciBhcm0gPCB2NgotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjdhID0gIighLiphcm12N2EpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjd2ZSA9ICIoIS4qYXJtdjd2ZSkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9wb3dlcnBjID0gIighLipwcGMpLioiCi0KIFBBQ0tBR0VDT05GSUdbdGNtYWxsb2NdID0gIi0tdXNlLXN5c3RlbS10Y21hbGxvYywtLWFsbG9jYXRvcj1zeXN0ZW0sZ3BlcmZ0b29scywiCi1QQUNLQUdFQ09ORklHW3dpcmVkdGlnZXJdID0gIi0td2lyZWR0aWdlcj1vbiwtLXdpcmVkdGlnZXI9b2ZmLCwiCiAKIEVYVFJBX09FU0NPTlMgPSAiLS1wcmVmaXg9JHtEfSR7cHJlZml4fSBcCiAgICAgICAgICAgICAgICAgIExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gXApAQCAtNTgsNiArNTQsNyBAQAogICAgICAgICAgICAgICAgICAtLWpzLWVuZ2luZT1ub25lIFwKICAgICAgICAgICAgICAgICAgLS1ub3N0cmlwIFwKICAgICAgICAgICAgICAgICAgLS1lbmRpYW49JHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1NJVEVJTkZPX0VORElBTk5FU1MnLCAnbGUnLCAnbGl0dGxlJywgJ2JpZycsIGQpfSBcCisgICAgICAgICAgICAgICAgIC0td2lyZWR0aWdlcj0ke0BbJ29mZicsJ29uJ11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0gXAogICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKICAgICAgICAgICAgICAgICAgbW9uZ29kIG1vbmdvcyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzUuNS42Mi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV81LjUuNTkuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi1uYXRpdmVfNS41LjYyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLmluYwppbmRleCA5OWU3MDUwLi44Y2E1YjJiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMKQEAgLTE4LDkgKzE4LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly9jaGFuZ2UtY2MtdG8tY2MtdmVyc2lvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtdWNvbnRleHQtb24tbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzNzVkNTc3ZTk1MzliODM5ZjQ0ZDg1N2U3MGY4MmI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU2YTM2NWFmNzFiOGE5ZWM4YmZlZTA4MDFlMmRlYzk1MDExZGE4ZWU3NTA3OTg2Y2EzMjliZTExMjk2NDExZGIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzY2VjNGFmYzA2YjQ2ODY4N2VmNTc2YzkwMTQ4ZDEwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzI2OWNlMjBiNDViMTc3MjM5ZmQxZTNkNmQ5NDI4YTk0MTMxNzExZjEyNzU4ZWJmNWY2NTIyMjI3OGJiMTEwIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpYURCL3NlcnZlci9yZWxlYXNlcyIKIAogUyA9ICIke1dPUktESVJ9L21hcmlhZGItJHtQVn0iCiAKQEAgLTE2MSwxMyArMTYyLDE1IEBACiB9CiAKIFBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfSBcCi0gICAgbGlibXlzcWxjbGllbnQtciBsaWJteXNxbGNsaWVudC1yLWRldiBsaWJteXNxbGNsaWVudC1yLXN0YXRpY2RldiBsaWJteXNxbGNsaWVudC1yLWRiZyBcCi0gICAgbGlibXlzcWxjbGllbnQgbGlibXlzcWxjbGllbnQtZGV2IGxpYm15c3FsY2xpZW50LXN0YXRpY2RldiBsaWJteXNxbGNsaWVudC1kYmcgXAorICAgIGxpYm15c3FsY2xpZW50LXIgbGlibXlzcWxjbGllbnQtci1kZXYgbGlibXlzcWxjbGllbnQtci1zdGF0aWNkZXYgXAorICAgIGxpYm15c3FsY2xpZW50IGxpYm15c3FsY2xpZW50LWRldiBsaWJteXNxbGNsaWVudC1zdGF0aWNkZXYgXAogICAgIGxpYm15c3FsZCBsaWJteXNxbGQtZGV2ICR7UE59LWNsaWVudCAke1BOfS1zZXJ2ZXIgJHtQTn0tc2V0dXBkYiAke1BOfS1sZWZ0b3ZlcnMiCiBDT05GRklMRVNfJHtQTn0tc2VydmVyICs9ICIke3N5c2NvbmZkaXJ9L215LmNuZiAke3N5c2NvbmZkaXJ9L215LmNuZi5kL3NlcnZlci5jbmYiCiBDT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke3N5c2NvbmZkaXJ9L215LmNuZi5kL215c3FsLWNsaWVudHMuY25mIgogQ09ORkZJTEVTX2xpYm15c3FsY2xpZW50ICs9ICIke3N5c2NvbmZkaXJ9L215LmNuZi5kL2NsaWVudC5jbmYiCiAKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gImxpYm15c3FsY2xpZW50LXItZGJnIGxpYm15c3FsY2xpZW50LWRiZyIKKwogRklMRVNfJHtQTn0gPSAiICIKIFJERVBFTkRTXyR7UE59ID0gIiR7UE59LWNsaWVudCAke1BOfS1zZXJ2ZXIiCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpAQCAtMjAwLDggKzIwMyw2IEBACiAgICAgJHtiaW5kaXJ9L215c3FsX2NvbmZpZyIKIEZJTEVTX2xpYm15c3FsY2xpZW50LXN0YXRpY2RldiA9ICJcCiAgICAgJHtsaWJkaXJ9LyouYSIKLUZJTEVTX2xpYm15c3FsY2xpZW50LWRiZyA9ICIke2xpYmRpcn0vcGx1Z2luLy5kZWJ1Zy8gXAotICAgICR7ZGF0YWRpcn0vbXlzcWwtdGVzdC9saWIvTXkvU2FmZVByb2Nlc3MvLmRlYnVnL215X3NhZmVfcHJvY2VzcyIKIAogIyBBdm9pZCB3YXJuaW5ncyBhYm91dCBoYV94dHJhZGIuc28uMC4wLjAgYW5kIGhhX2lubm9kYl9wbHVnaW4uc28uMC4wLjAKICMgd2hpY2ggYXJlIGludGVudGlvbmFsbHkgbm9uLVBJQyBvbiAzMi1iaXQgeDg2IChzZWUgZS5nLgpAQCAtMjEyLDcgKzIxMyw2IEBACiBGSUxFU19saWJteXNxbGNsaWVudC1yLWRldiA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYm15c3FsY2xpZW50X3Iuc28iCiBGSUxFU19saWJteXNxbGNsaWVudC1yLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXlzcWxjbGllbnRfci5hIgotRklMRVNfbGlibXlzcWxjbGllbnQtci1kYmcgPSAiJHtsaWJkaXJ9L3BsdWdpbi8uZGVidWdsaWJteXNxbGNsaWVudF9yLnNvLioiCiAKIEZJTEVTX2xpYm15c3FsZCA9ICJcCiAgICAgJHtsaWJkaXJ9L2xpYm15c3FsZC5zby4qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzUuNS41OS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl81LjUuNjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl81LjUuNTkuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl81LjUuNjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVN5bmMtb3VyLWNvcHktb2YtdGhlLXRpbWV6b25lLWxpYnJhcnktd2l0aC1JQU5BLXJlbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1TeW5jLW91ci1jb3B5LW9mLXRoZS10aW1lem9uZS1saWJyYXJ5LXdpdGgtSUFOQS1yZWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkOGM0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1TeW5jLW91ci1jb3B5LW9mLXRoZS10aW1lem9uZS1saWJyYXJ5LXdpdGgtSUFOQS1yZWxlLnBhdGNoCkBAIC0wLDAgKzEsMTE2NCBAQAorRnJvbSAxMmJmYjc3OGNlNjg4ZmM2NjJhNmNiMzVmNjI5ODczNGZjZjQ4NTZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgorRGF0ZTogRnJpLCAxOSBPY3QgMjAxOCAxOTozNjozNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBTeW5jIG91ciBjb3B5IG9mIHRoZSB0aW1lem9uZSBsaWJyYXJ5IHdpdGggSUFOQSByZWxlYXNlCisgdHpjb2RlMjAxOGYuCisKK0Fib3V0IGhhbGYgb2YgdGhpcyBpcyBwdXJlbHkgY29zbWV0aWMgY2hhbmdlcyB0byByZWR1Y2UgdGhlIGRpZmYgYmV0d2Vlbgorb3VyIGNvZGUgYW5kIHRoZWlycywgbGlrZSBpbnNlcnRpbmcgImNvbnN0IiBtYXJrZXJzIHdoZXJlIHRoZXkgaGF2ZSB0aGVtLgorCitUaGUgb3RoZXIgaGFsZiBpcyB0cmFja2luZyBhY3R1YWwgY29kZSBjaGFuZ2VzIGluIHppYy5jIGFuZCBsb2NhbHRpbWUuYy4KK0kgZG9uJ3QgdGhpbmsgYW55IG9mIHRoZXNlIHJlcHJlc2VudCBuZWFyLXRlcm0gY29tcGF0aWJpbGl0eSBoYXphcmRzLCBidXQKK2l0IHNlZW1zIGJlc3QgdG8gc3RheSB1cCB0byBkYXRlLgorCitJIGFsc28gZml4ZWQgbG9uZ3N0YW5kaW5nIGJ1Z3MgaW4gb3VyIGNvZGUgZm9yIHByb2R1Y2luZyB0aGUKK2tub3duX2FiYnJldnMudHh0IGxpc3QsIHdoaWNoIGJ5IGNoYW5jZSBoYWRuJ3QgYmVlbiBleHBvc2VkIGJlZm9yZSwKK2J1dCB3aGljaCByZXN1bHRlZCBpbiBzb21lIGdhcmJhZ2Ugb3V0cHV0IGFmdGVyIGFwcGx5aW5nIHRoZSB1cHN0cmVhbQorY2hhbmdlcyBpbiB6aWMuYy4gIE5vdGFibHksIGJlY2F1c2UgdXBzdHJlYW0gcmVtb3ZlZCB0aGVpciBvbGQgcGhvbnkKK3RyYW5zaXRpb25zIGF0IHRoZSBCaWcgQmFuZywgaXQncyBub3cgbmVjZXNzYXJ5IHRvIGNvcGUgd2l0aCBUWmlmIGZpbGVzCitjb250YWluaW5nIG5vIERTVCB0cmFuc2l0aW9uIHRpbWVzIGF0IGFsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIHNyYy90aW1lem9uZS9SRUFETUUgICAgICB8ICAgMiArLQorIHNyYy90aW1lem9uZS9sb2NhbHRpbWUuYyB8IDEyNiArKysrKysrKysrKystLS0tLS0KKyBzcmMvdGltZXpvbmUvcGd0ei5oICAgICAgfCAgMTAgKy0KKyBzcmMvdGltZXpvbmUvcHJpdmF0ZS5oICAgfCAgIDMgKworIHNyYy90aW1lem9uZS9zdHJmdGltZS5jICB8ICAxMCArLQorIHNyYy90aW1lem9uZS90emZpbGUuaCAgICB8ICAgNyArLQorIHNyYy90aW1lem9uZS96aWMuYyAgICAgICB8IDMzMCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMjkxIGluc2VydGlvbnMoKyksIDE5NyBkZWxldGlvbnMoLSkKKworSW5kZXg6IHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvUkVBRE1FCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9zdGdyZXNxbC0xMC41Lm9yaWcvc3JjL3RpbWV6b25lL1JFQURNRQorKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvUkVBRE1FCitAQCAtNTUsNyArNTUsNyBAQCBtYXRjaCBwcm9wZXJseSBvbiB0aGUgb2xkIHZlcnNpb24uCisgVGltZSBab25lIGNvZGUKKyA9PT09PT09PT09PT09PQorIAorLVRoZSBjb2RlIGluIHRoaXMgZGlyZWN0b3J5IGlzIGN1cnJlbnRseSBzeW5jZWQgd2l0aCB0emNvZGUgcmVsZWFzZSAyMDE4ZS4KKytUaGUgY29kZSBpbiB0aGlzIGRpcmVjdG9yeSBpcyBjdXJyZW50bHkgc3luY2VkIHdpdGggdHpjb2RlIHJlbGVhc2UgMjAxOGYuCisgVGhlcmUgYXJlIG1hbnkgY29zbWV0aWMgKGFuZCBub3Qgc28gY29zbWV0aWMpIGRpZmZlcmVuY2VzIGZyb20gdGhlCisgb3JpZ2luYWwgdHpjb2RlIGxpYnJhcnksIGJ1dCBkaWZmcyBpbiB0aGUgdXBzdHJlYW0gdmVyc2lvbiBzaG91bGQgdXN1YWxseQorIGJlIHByb3BhZ2F0ZWQgdG8gb3VyIHZlcnNpb24uICBIZXJlIGFyZSBzb21lIG5vdGVzIGFib3V0IHRoYXQuCitJbmRleDogcG9zdGdyZXNxbC0xMC41L3NyYy90aW1lem9uZS9sb2NhbHRpbWUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RncmVzcWwtMTAuNS5vcmlnL3NyYy90aW1lem9uZS9sb2NhbHRpbWUuYworKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvbG9jYWx0aW1lLmMKK0BAIC0xLDMgKzEsNSBAQAorKy8qIENvbnZlcnQgdGltZXN0YW1wIGZyb20gcGdfdGltZV90IHRvIHN0cnVjdCBwZ190bS4gICovCisrCisgLyoKKyAgKiBUaGlzIGZpbGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4sIHNvIGNsYXJpZmllZCBhcyBvZgorICAqIDE5OTYtMDYtMDUgYnkgQXJ0aHVyIERhdmlkIE9sc29uLgorQEAgLTExNyw3ICsxMTksNyBAQCBpbml0X3R0aW5mbyhzdHJ1Y3QgdHRpbmZvICpzLCBpbnQzMiBnbXRvCisgfQorIAorIHN0YXRpYyBpbnQzMgorLWRldHpjb2RlKGNvbnN0IGNoYXIgKmNvZGVwKQorK2RldHpjb2RlKGNvbnN0IGNoYXIgKmNvbnN0IGNvZGVwKQorIHsKKyAJaW50MzIJCXJlc3VsdDsKKyAJaW50CQkJaTsKK0BAIC0xNDMsNyArMTQ1LDcgQEAgZGV0emNvZGUoY29uc3QgY2hhciAqY29kZXApCisgfQorIAorIHN0YXRpYyBpbnQ2NAorLWRldHpjb2RlNjQoY29uc3QgY2hhciAqY29kZXApCisrZGV0emNvZGU2NChjb25zdCBjaGFyICpjb25zdCBjb2RlcCkKKyB7CisgCXVpbnQ2NAkJcmVzdWx0OworIAlpbnQJCQlpOworQEAgLTI1OCw4ICsyNjAsMTMgQEAgdHpsb2FkYm9keShjaGFyIGNvbnN0ICpuYW1lLCBjaGFyICpjYW5vbgorIAkJaW50MzIJCWNoYXJjbnQgPSBkZXR6Y29kZSh1cC0+dHpoZWFkLnR6aF9jaGFyY250KTsKKyAJCWNoYXIgY29uc3QgKnAgPSB1cC0+YnVmICsgdHpoZWFkc2l6ZTsKKyAKKysJCS8qCisrCQkgKiBBbHRob3VnaCB0emZpbGUoNSkgY3VycmVudGx5IHJlcXVpcmVzIHR5cGVjbnQgdG8gYmUgbm9uemVybywKKysJCSAqIHN1cHBvcnQgZnV0dXJlIGZvcm1hdHMgdGhhdCBtYXkgYWxsb3cgemVybyB0eXBlY250IGluIGZpbGVzIHRoYXQKKysJCSAqIGhhdmUgYSBUWiBzdHJpbmcgYW5kIG5vIHRyYW5zaXRpb25zLgorKwkJICovCisgCQlpZiAoISgwIDw9IGxlYXBjbnQgJiYgbGVhcGNudCA8IFRaX01BWF9MRUFQUworLQkJCSAgJiYgMCA8IHR5cGVjbnQgJiYgdHlwZWNudCA8IFRaX01BWF9UWVBFUworKwkJCSAgJiYgMCA8PSB0eXBlY250ICYmIHR5cGVjbnQgPCBUWl9NQVhfVFlQRVMKKyAJCQkgICYmIDAgPD0gdGltZWNudCAmJiB0aW1lY250IDwgVFpfTUFYX1RJTUVTCisgCQkJICAmJiAwIDw9IGNoYXJjbnQgJiYgY2hhcmNudCA8IFRaX01BWF9DSEFSUworIAkJCSAgJiYgKHR0aXNzdGRjbnQgPT0gdHlwZWNudCB8fCB0dGlzc3RkY250ID09IDApCitAQCAtNDE2LDggKzQyMyw3IEBAIHR6bG9hZGJvZHkoY2hhciBjb25zdCAqbmFtZSwgY2hhciAqY2Fub24KKyAJCXN0cnVjdCBzdGF0ZSAqdHMgPSAmbHNwLT51LnN0OworIAorIAkJdXAtPmJ1ZltucmVhZCAtIDFdID0gJ1wwJzsKKy0JCWlmICh0enBhcnNlKCZ1cC0+YnVmWzFdLCB0cywgZmFsc2UpCistCQkJJiYgdHMtPnR5cGVjbnQgPT0gMikKKysJCWlmICh0enBhcnNlKCZ1cC0+YnVmWzFdLCB0cywgZmFsc2UpKQorIAkJeworIAkJCS8qCisgCQkJICogQXR0ZW1wdCB0byByZXVzZSBleGlzdGluZyBhYmJyZXZpYXRpb25zLiBXaXRob3V0IHRoaXMsCitAQCAtNDMwLDcgKzQzNiw3IEBAIHR6bG9hZGJvZHkoY2hhciBjb25zdCAqbmFtZSwgY2hhciAqY2Fub24KKyAJCQlpbnQJCQlnb3RhYmJyID0gMDsKKyAJCQlpbnQJCQljaGFyY250ID0gc3AtPmNoYXJjbnQ7CisgCistCQkJZm9yIChpID0gMDsgaSA8IDI7IGkrKykKKysJCQlmb3IgKGkgPSAwOyBpIDwgdHMtPnR5cGVjbnQ7IGkrKykKKyAJCQl7CisgCQkJCWNoYXIJICAgKnRzYWJiciA9IHRzLT5jaGFycyArIHRzLT50dGlzW2ldLnR0X2FiYnJpbmQ7CisgCQkJCWludAkJCWo7CitAQCAtNDU1LDcgKzQ2MSw3IEBAIHR6bG9hZGJvZHkoY2hhciBjb25zdCAqbmFtZSwgY2hhciAqY2Fub24KKyAJCQkJCX0KKyAJCQkJfQorIAkJCX0KKy0JCQlpZiAoZ290YWJiciA9PSAyKQorKwkJCWlmIChnb3RhYmJyID09IHRzLT50eXBlY250KQorIAkJCXsKKyAJCQkJc3AtPmNoYXJjbnQgPSBjaGFyY250OworIAorQEAgLTQ3MCw3ICs0NzYsOCBAQCB0emxvYWRib2R5KGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgKmNhbm9uCisgCQkJCQlzcC0+dGltZWNudC0tOworIAorIAkJCQlmb3IgKGkgPSAwOyBpIDwgdHMtPnRpbWVjbnQ7IGkrKykKKy0JCQkJCWlmIChzcC0+YXRzW3NwLT50aW1lY250IC0gMV0gPCB0cy0+YXRzW2ldKQorKwkJCQkJaWYgKHNwLT50aW1lY250ID09IDAKKysJCQkJCQl8fCBzcC0+YXRzW3NwLT50aW1lY250IC0gMV0gPCB0cy0+YXRzW2ldKQorIAkJCQkJCWJyZWFrOworIAkJCQl3aGlsZSAoaSA8IHRzLT50aW1lY250CisgCQkJCQkgICAmJiBzcC0+dGltZWNudCA8IFRaX01BWF9USU1FUykKK0BAIC00ODEsMTEgKzQ4OCwxMyBAQCB0emxvYWRib2R5KGNoYXIgY29uc3QgKm5hbWUsIGNoYXIgKmNhbm9uCisgCQkJCQlzcC0+dGltZWNudCsrOworIAkJCQkJaSsrOworIAkJCQl9CistCQkJCXNwLT50dGlzW3NwLT50eXBlY250KytdID0gdHMtPnR0aXNbMF07CistCQkJCXNwLT50dGlzW3NwLT50eXBlY250KytdID0gdHMtPnR0aXNbMV07CisrCQkJCWZvciAoaSA9IDA7IGkgPCB0cy0+dHlwZWNudDsgaSsrKQorKwkJCQkJc3AtPnR0aXNbc3AtPnR5cGVjbnQrK10gPSB0cy0+dHRpc1tpXTsKKyAJCQl9CisgCQl9CisgCX0KKysJaWYgKHNwLT50eXBlY250ID09IDApCisrCQlyZXR1cm4gRUlOVkFMOworIAlpZiAoc3AtPnRpbWVjbnQgPiAxKQorIAl7CisgCQlmb3IgKGkgPSAxOyBpIDwgc3AtPnRpbWVjbnQ7ICsraSkKK0BAIC01MDcsNiArNTE2LDE4IEBAIHR6bG9hZGJvZHkoY2hhciBjb25zdCAqbmFtZSwgY2hhciAqY2Fub24KKyAJfQorIAorIAkvKgorKwkgKiBJbmZlciBzcC0+ZGVmYXVsdHR5cGUgZnJvbSB0aGUgZGF0YS4gIEFsdGhvdWdoIHRoaXMgZGVmYXVsdCB0eXBlIGlzCisrCSAqIGFsd2F5cyB6ZXJvIGZvciBkYXRhIGZyb20gcmVjZW50IHR6ZGIgcmVsZWFzZXMsIHRoaW5ncyBhcmUgdHJpY2tpZXIgZm9yCisrCSAqIGRhdGEgZnJvbSB0emRiIDIwMThlIG9yIGVhcmxpZXIuCisrCSAqCisrCSAqIFRoZSBmaXJzdCBzZXQgb2YgaGV1cmlzdGljcyB3b3JrIGFyb3VuZCBidWdzIGluIDMyLWJpdCBkYXRhIGdlbmVyYXRlZAorKwkgKiBieSB0emRiIDIwMTNjIG9yIGVhcmxpZXIuICBUaGUgd29ya2Fyb3VuZCBpcyBmb3Igem9uZXMgbGlrZQorKwkgKiBBdXN0cmFsaWEvTWFjcXVhcmllIHdoZXJlIHRpbWVzdGFtcHMgYmVmb3JlIHRoZSBmaXJzdCB0cmFuc2l0aW9uIGhhdmUgYQorKwkgKiB0aW1lIHR5cGUgdGhhdCBpcyBub3QgdGhlIGVhcmxpZXN0IHN0YW5kYXJkLXRpbWUgdHlwZS4gIFNlZToKKysJICogaHR0cHM6Ly9tbS5pY2Fubi5vcmcvcGlwZXJtYWlsL3R6LzIwMTMtTWF5LzAxOTM2OC5odG1sCisrCSAqLworKworKwkvKgorIAkgKiBJZiB0eXBlIDAgaXMgdW51c2VkIGluIHRyYW5zaXRpb25zLCBpdCdzIHRoZSB0eXBlIHRvIHVzZSBmb3IgZWFybHkKKyAJICogdGltZXMuCisgCSAqLworQEAgLTUyOSw2ICs1NTAsMTEgQEAgdHpsb2FkYm9keShjaGFyIGNvbnN0ICpuYW1lLCBjaGFyICpjYW5vbgorIAl9CisgCisgCS8qCisrCSAqIFRoZSBuZXh0IGhldXJpc3RpY3MgYXJlIGZvciBkYXRhIGdlbmVyYXRlZCBieSB0emRiIDIwMThlIG9yIGVhcmxpZXIsCisrCSAqIGZvciB6b25lcyBsaWtlIEVTVDVFRFQgd2hlcmUgdGhlIGZpcnN0IHRyYW5zaXRpb24gaXMgdG8gRFNULgorKwkgKi8KKysKKysJLyoKKyAJICogSWYgbm8gcmVzdWx0IHlldCwgZmluZCB0aGUgZmlyc3Qgc3RhbmRhcmQgdHlwZS4gSWYgdGhlcmUgaXMgbm9uZSwgcHVudAorIAkgKiB0byB0eXBlIHplcm8uCisgCSAqLworQEAgLTU0Miw3ICs1NjgsMTQgQEAgdHpsb2FkYm9keShjaGFyIGNvbnN0ICpuYW1lLCBjaGFyICpjYW5vbgorIAkJCQlicmVhazsKKyAJCQl9CisgCX0KKysKKysJLyoKKysJICogQSBzaW1wbGUgJ3NwLT5kZWZhdWx0dHlwZSA9IDA7JyB3b3VsZCBzdWZmaWNlIGhlcmUgaWYgd2UgZGlkbid0IGhhdmUgdG8KKysJICogd29ycnkgYWJvdXQgMjAxOGUtb3ItZWFybGllciBkYXRhLiAgRXZlbiBzaW1wbGVyIHdvdWxkIGJlIHRvIHJlbW92ZSB0aGUKKysJICogZGVmYXVsdHR5cGUgbWVtYmVyIGFuZCBqdXN0IHVzZSAwIGluIGl0cyBwbGFjZS4KKysJICovCisgCXNwLT5kZWZhdWx0dHlwZSA9IGk7CisrCisgCXJldHVybiAwOworIH0KKyAKK0BAIC02MDEsMTAgKzYzNCwxMSBAQCBzdGF0aWMgY29uc3QgaW50IHllYXJfbGVuZ3Roc1syXSA9IHsKKyB9OworIAorIC8qCistICogR2l2ZW4gYSBwb2ludGVyIGludG8gYSB0aW1lIHpvbmUgc3RyaW5nLCBzY2FuIHVudGlsIGEgY2hhcmFjdGVyIHRoYXQgaXMgbm90CistICogYSB2YWxpZCBjaGFyYWN0ZXIgaW4gYSB6b25lIG5hbWUgaXMgZm91bmQuIFJldHVybiBhIHBvaW50ZXIgdG8gdGhhdAorLSAqIGNoYXJhY3Rlci4KKysgKiBHaXZlbiBhIHBvaW50ZXIgaW50byBhIHRpbWV6b25lIHN0cmluZywgc2NhbiB1bnRpbCBhIGNoYXJhY3RlciB0aGF0IGlzIG5vdAorKyAqIGEgdmFsaWQgY2hhcmFjdGVyIGluIGEgdGltZSB6b25lIGFiYnJldmlhdGlvbiBpcyBmb3VuZC4KKysgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoYXQgY2hhcmFjdGVyLgorICAqLworKworIHN0YXRpYyBjb25zdCBjaGFyICoKKyBnZXR6bmFtZShjb25zdCBjaGFyICpzdHJwKQorIHsKK0BAIC02MTcsMTUgKzY1MSwxNyBAQCBnZXR6bmFtZShjb25zdCBjaGFyICpzdHJwKQorIH0KKyAKKyAvKgorLSAqIEdpdmVuIGEgcG9pbnRlciBpbnRvIGFuIGV4dGVuZGVkIHRpbWUgem9uZSBzdHJpbmcsIHNjYW4gdW50aWwgdGhlIGVuZGluZworLSAqIGRlbGltaXRlciBvZiB0aGUgem9uZSBuYW1lIGlzIGxvY2F0ZWQuIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlbGltaXRlci4KKysgKiBHaXZlbiBhIHBvaW50ZXIgaW50byBhbiBleHRlbmRlZCB0aW1lem9uZSBzdHJpbmcsIHNjYW4gdW50aWwgdGhlIGVuZGluZworKyAqIGRlbGltaXRlciBvZiB0aGUgdGltZSB6b25lIGFiYnJldmlhdGlvbiBpcyBsb2NhdGVkLgorKyAqIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlbGltaXRlci4KKyAgKgorICAqIEFzIHdpdGggZ2V0em5hbWUgYWJvdmUsIHRoZSBsZWdhbCBjaGFyYWN0ZXIgc2V0IGlzIGFjdHVhbGx5IHF1aXRlCisgICogcmVzdHJpY3RlZCwgd2l0aCBvdGhlciBjaGFyYWN0ZXJzIHByb2R1Y2luZyB1bmRlZmluZWQgcmVzdWx0cy4KKyAgKiBXZSBkb24ndCBkbyBhbnkgY2hlY2tpbmcgaGVyZTsgY2hlY2tpbmcgaXMgZG9uZSBsYXRlciBpbiBjb21tb24tY2FzZSBjb2RlLgorICAqLworKworIHN0YXRpYyBjb25zdCBjaGFyICoKKy1nZXRxem5hbWUoY29uc3QgY2hhciAqc3RycCwgaW50IGRlbGltKQorK2dldHF6bmFtZShjb25zdCBjaGFyICpzdHJwLCBjb25zdCBpbnQgZGVsaW0pCisgeworIAlpbnQJCQljOworIAorQEAgLTYzNSwxMyArNjcxLDE0IEBAIGdldHF6bmFtZShjb25zdCBjaGFyICpzdHJwLCBpbnQgZGVsaW0pCisgfQorIAorIC8qCistICogR2l2ZW4gYSBwb2ludGVyIGludG8gYSB0aW1lIHpvbmUgc3RyaW5nLCBleHRyYWN0IGEgbnVtYmVyIGZyb20gdGhhdCBzdHJpbmcuCisrICogR2l2ZW4gYSBwb2ludGVyIGludG8gYSB0aW1lem9uZSBzdHJpbmcsIGV4dHJhY3QgYSBudW1iZXIgZnJvbSB0aGF0IHN0cmluZy4KKyAgKiBDaGVjayB0aGF0IHRoZSBudW1iZXIgaXMgd2l0aGluIGEgc3BlY2lmaWVkIHJhbmdlOyBpZiBpdCBpcyBub3QsIHJldHVybgorICAqIE5VTEwuCisgICogT3RoZXJ3aXNlLCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbm90IHBhcnQgb2YgdGhlIG51bWJlci4KKyAgKi8KKysKKyBzdGF0aWMgY29uc3QgY2hhciAqCistZ2V0bnVtKGNvbnN0IGNoYXIgKnN0cnAsIGludCAqbnVtcCwgaW50IG1pbiwgaW50IG1heCkKKytnZXRudW0oY29uc3QgY2hhciAqc3RycCwgaW50ICpjb25zdCBudW1wLCBjb25zdCBpbnQgbWluLCBjb25zdCBpbnQgbWF4KQorIHsKKyAJY2hhcgkJYzsKKyAJaW50CQkJbnVtOworQEAgLTY2MywxNCArNzAwLDE1IEBAIGdldG51bShjb25zdCBjaGFyICpzdHJwLCBpbnQgKm51bXAsIGludAorIH0KKyAKKyAvKgorLSAqIEdpdmVuIGEgcG9pbnRlciBpbnRvIGEgdGltZSB6b25lIHN0cmluZywgZXh0cmFjdCBhIG51bWJlciBvZiBzZWNvbmRzLAorKyAqIEdpdmVuIGEgcG9pbnRlciBpbnRvIGEgdGltZXpvbmUgc3RyaW5nLCBleHRyYWN0IGEgbnVtYmVyIG9mIHNlY29uZHMsCisgICogaW4gaGhbOm1tWzpzc11dIGZvcm0sIGZyb20gdGhlIHN0cmluZy4KKyAgKiBJZiBhbnkgZXJyb3Igb2NjdXJzLCByZXR1cm4gTlVMTC4KKyAgKiBPdGhlcndpc2UsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBub3QgcGFydCBvZiB0aGUgbnVtYmVyCisgICogb2Ygc2Vjb25kcy4KKyAgKi8KKysKKyBzdGF0aWMgY29uc3QgY2hhciAqCistZ2V0c2Vjcyhjb25zdCBjaGFyICpzdHJwLCBpbnQzMiAqc2Vjc3ApCisrZ2V0c2Vjcyhjb25zdCBjaGFyICpzdHJwLCBpbnQzMiAqY29uc3Qgc2Vjc3ApCisgeworIAlpbnQJCQludW07CisgCitAQCAtNzA0LDEzICs3NDIsMTQgQEAgZ2V0c2Vjcyhjb25zdCBjaGFyICpzdHJwLCBpbnQzMiAqc2Vjc3ApCisgfQorIAorIC8qCistICogR2l2ZW4gYSBwb2ludGVyIGludG8gYSB0aW1lIHpvbmUgc3RyaW5nLCBleHRyYWN0IGFuIG9mZnNldCwgaW4KKysgKiBHaXZlbiBhIHBvaW50ZXIgaW50byBhIHRpbWV6b25lIHN0cmluZywgZXh0cmFjdCBhbiBvZmZzZXQsIGluCisgICogWystXWhoWzptbVs6c3NdXSBmb3JtLCBmcm9tIHRoZSBzdHJpbmcuCisgICogSWYgYW55IGVycm9yIG9jY3VycywgcmV0dXJuIE5VTEwuCisgICogT3RoZXJ3aXNlLCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbm90IHBhcnQgb2YgdGhlIHRpbWUuCisgICovCisrCisgc3RhdGljIGNvbnN0IGNoYXIgKgorLWdldG9mZnNldChjb25zdCBjaGFyICpzdHJwLCBpbnQzMiAqb2Zmc2V0cCkKKytnZXRvZmZzZXQoY29uc3QgY2hhciAqc3RycCwgaW50MzIgKmNvbnN0IG9mZnNldHApCisgeworIAlib29sCQluZWcgPSBmYWxzZTsKKyAKK0BAIC03MzAsMTMgKzc2OSwxNCBAQCBnZXRvZmZzZXQoY29uc3QgY2hhciAqc3RycCwgaW50MzIgKm9mZnNlCisgfQorIAorIC8qCistICogR2l2ZW4gYSBwb2ludGVyIGludG8gYSB0aW1lIHpvbmUgc3RyaW5nLCBleHRyYWN0IGEgcnVsZSBpbiB0aGUgZm9ybQorKyAqIEdpdmVuIGEgcG9pbnRlciBpbnRvIGEgdGltZXpvbmUgc3RyaW5nLCBleHRyYWN0IGEgcnVsZSBpbiB0aGUgZm9ybQorICAqIGRhdGVbL3RpbWVdLiBTZWUgUE9TSVggc2VjdGlvbiA4IGZvciB0aGUgZm9ybWF0IG9mICJkYXRlIiBhbmQgInRpbWUiLgorICAqIElmIGEgdmFsaWQgcnVsZSBpcyBub3QgZm91bmQsIHJldHVybiBOVUxMLgorICAqIE90aGVyd2lzZSwgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIG5vdCBwYXJ0IG9mIHRoZSBydWxlLgorICAqLworKworIHN0YXRpYyBjb25zdCBjaGFyICoKKy1nZXRydWxlKGNvbnN0IGNoYXIgKnN0cnAsIHN0cnVjdCBydWxlICpydWxlcCkKKytnZXRydWxlKGNvbnN0IGNoYXIgKnN0cnAsIHN0cnVjdCBydWxlICpjb25zdCBydWxlcCkKKyB7CisgCWlmICgqc3RycCA9PSAnSicpCisgCXsKK0BAIC03OTUsOSArODM1LDEwIEBAIGdldHJ1bGUoY29uc3QgY2hhciAqc3RycCwgc3RydWN0IHJ1bGUgKnIKKyAgKiBHaXZlbiBhIHllYXIsIGEgcnVsZSwgYW5kIHRoZSBvZmZzZXQgZnJvbSBVVCBhdCB0aGUgdGltZSB0aGF0IHJ1bGUgdGFrZXMKKyAgKiBlZmZlY3QsIGNhbGN1bGF0ZSB0aGUgeWVhci1yZWxhdGl2ZSB0aW1lIHRoYXQgcnVsZSB0YWtlcyBlZmZlY3QuCisgICovCisrCisgc3RhdGljIGludDMyCistdHJhbnN0aW1lKGludCB5ZWFyLCBjb25zdCBzdHJ1Y3QgcnVsZSAqcnVsZXAsCistCQkgIGludDMyIG9mZnNldCkKKyt0cmFuc3RpbWUoY29uc3QgaW50IHllYXIsIGNvbnN0IHN0cnVjdCBydWxlICpjb25zdCBydWxlcCwKKysJCSAgY29uc3QgaW50MzIgb2Zmc2V0KQorIHsKKyAJYm9vbAkJbGVhcHllYXI7CisgCWludDMyCQl2YWx1ZTsKK0BAIC05ODEsNyArMTAyMiw3IEBAIHR6cGFyc2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXRlICoKKyAJCXsKKyAJCQlkc3RuYW1lID0gbmFtZTsKKyAJCQluYW1lID0gZ2V0em5hbWUobmFtZSk7CistCQkJZHN0bGVuID0gbmFtZSAtIGRzdG5hbWU7CS8qIGxlbmd0aCBvZiBEU1Qgem9uZSBuYW1lICovCisrCQkJZHN0bGVuID0gbmFtZSAtIGRzdG5hbWU7CS8qIGxlbmd0aCBvZiBEU1QgYWJici4gKi8KKyAJCX0KKyAJCWlmICghZHN0bGVuKQorIAkJCXJldHVybiBmYWxzZTsKK0BAIC0xMDIzLDggKzEwNjQsOCBAQCB0enBhcnNlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzdGF0ZSAqCisgCQkJLyoKKyAJCQkgKiBUd28gdHJhbnNpdGlvbnMgcGVyIHllYXIsIGZyb20gRVBPQ0hfWUVBUiBmb3J3YXJkLgorIAkJCSAqLworLQkJCWluaXRfdHRpbmZvKCZzcC0+dHRpc1swXSwgLWRzdG9mZnNldCwgdHJ1ZSwgc3RkbGVuICsgMSk7CistCQkJaW5pdF90dGluZm8oJnNwLT50dGlzWzFdLCAtc3Rkb2Zmc2V0LCBmYWxzZSwgMCk7CisrCQkJaW5pdF90dGluZm8oJnNwLT50dGlzWzBdLCAtc3Rkb2Zmc2V0LCBmYWxzZSwgMCk7CisrCQkJaW5pdF90dGluZm8oJnNwLT50dGlzWzFdLCAtZHN0b2Zmc2V0LCB0cnVlLCBzdGRsZW4gKyAxKTsKKyAJCQlzcC0+ZGVmYXVsdHR5cGUgPSAwOworIAkJCXRpbWVjbnQgPSAwOworIAkJCWphbmZpcnN0ID0gMDsKK0BAIC0xMDczLDE5ICsxMTE0LDE1IEBAIHR6cGFyc2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXRlICoKKyAJCQkJCWlmICghaW5jcmVtZW50X292ZXJmbG93X3RpbWUKKyAJCQkJCQkoJnNwLT5hdHNbdGltZWNudF0sCisgCQkJCQkJIGphbm9mZnNldCArIHN0YXJ0dGltZSkpCistCQkJCQkJc3AtPnR5cGVzW3RpbWVjbnQrK10gPSByZXZlcnNlZDsKKy0JCQkJCWVsc2UgaWYgKGphbm9mZnNldCkKKy0JCQkJCQlzcC0+ZGVmYXVsdHR5cGUgPSByZXZlcnNlZDsKKysJCQkJCQlzcC0+dHlwZXNbdGltZWNudCsrXSA9ICFyZXZlcnNlZDsKKyAJCQkJCXNwLT5hdHNbdGltZWNudF0gPSBqYW5maXJzdDsKKyAJCQkJCWlmICghaW5jcmVtZW50X292ZXJmbG93X3RpbWUKKyAJCQkJCQkoJnNwLT5hdHNbdGltZWNudF0sCisgCQkJCQkJIGphbm9mZnNldCArIGVuZHRpbWUpKQorIAkJCQkJeworLQkJCQkJCXNwLT50eXBlc1t0aW1lY250KytdID0gIXJldmVyc2VkOworKwkJCQkJCXNwLT50eXBlc1t0aW1lY250KytdID0gcmV2ZXJzZWQ7CisgCQkJCQkJeWVhcmxpbSA9IHllYXIgKyBZRUFSU1BFUlJFUEVBVCArIDE7CisgCQkJCQl9CistCQkJCQllbHNlIGlmIChqYW5vZmZzZXQpCistCQkJCQkJc3AtPmRlZmF1bHR0eXBlID0gIXJldmVyc2VkOworIAkJCQl9CisgCQkJCWlmIChpbmNyZW1lbnRfb3ZlcmZsb3dfdGltZQorIAkJCQkJKCZqYW5maXJzdCwgamFub2Zmc2V0ICsgeWVhcnNlY3MpKQorQEAgLTEwOTQsNyArMTEzMSwxMCBAQCB0enBhcnNlKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzdGF0ZSAqCisgCQkJfQorIAkJCXNwLT50aW1lY250ID0gdGltZWNudDsKKyAJCQlpZiAoIXRpbWVjbnQpCisrCQkJeworKwkJCQlzcC0+dHRpc1swXSA9IHNwLT50dGlzWzFdOworIAkJCQlzcC0+dHlwZWNudCA9IDE7CS8qIFBlcnBldHVhbCBEU1QuICAqLworKwkJCX0KKyAJCQllbHNlIGlmIChZRUFSU1BFUlJFUEVBVCA8IHllYXIgLSB5ZWFyYmVnKQorIAkJCQlzcC0+Z29iYWNrID0gc3AtPmdvYWhlYWQgPSB0cnVlOworIAkJfQorQEAgLTExNjMsNyArMTIwMyw2IEBAIHR6cGFyc2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXRlICoKKyAJCQkJCSAqIG90aGVyd2lzZSwgYWRkIHRoZSBzdGFuZGFyZCB0aW1lIG9mZnNldCB0byB0aGUKKyAJCQkJCSAqIHRyYW5zaXRpb24gdGltZS4KKyAJCQkJCSAqLworLQorIAkJCQkJLyoKKyAJCQkJCSAqIFRyYW5zaXRpb25zIGZyb20gRFNUIHRvIEREU1Qgd2lsbCBlZmZlY3RpdmVseSBkaXNhcHBlYXIKKyAJCQkJCSAqIHNpbmNlIFBPU0lYIHByb3ZpZGVzIGZvciBvbmx5IG9uZSBEU1Qgb2Zmc2V0LgorQEAgLTEyMTcsNyArMTI1Niw3IEBAIHR6cGFyc2UoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXRlICoKKyB9CisgCisgc3RhdGljIHZvaWQKKy1nbXRsb2FkKHN0cnVjdCBzdGF0ZSAqc3ApCisrZ210bG9hZChzdHJ1Y3Qgc3RhdGUgKmNvbnN0IHNwKQorIHsKKyAJaWYgKHR6bG9hZChnbXQsIE5VTEwsIHNwLCB0cnVlKSAhPSAwKQorIAkJdHpwYXJzZShnbXQsIHNwLCB0cnVlKTsKK0BAIC0xMjMyLDcgKzEyNzEsNyBAQCBnbXRsb2FkKHN0cnVjdCBzdGF0ZSAqc3ApCisgICovCisgc3RhdGljIHN0cnVjdCBwZ190bSAqCisgbG9jYWxzdWIoc3RydWN0IHN0YXRlIGNvbnN0ICpzcCwgcGdfdGltZV90IGNvbnN0ICp0aW1lcCwKKy0JCSBzdHJ1Y3QgcGdfdG0gKnRtcCkKKysJCSBzdHJ1Y3QgcGdfdG0gKmNvbnN0IHRtcCkKKyB7CisgCWNvbnN0IHN0cnVjdCB0dGluZm8gKnR0aXNwOworIAlpbnQJCQlpOworQEAgLTEzMDAsNiArMTMzOSwxMSBAQCBsb2NhbHN1YihzdHJ1Y3Qgc3RhdGUgY29uc3QgKnNwLCBwZ190aW1lCisgCX0KKyAJdHRpc3AgPSAmc3AtPnR0aXNbaV07CisgCisrCS8qCisrCSAqIFRvIGdldCAod3JvbmcpIGJlaGF2aW9yIHRoYXQncyBjb21wYXRpYmxlIHdpdGggU3lzdGVtIFYgUmVsZWFzZSAyLjAKKysJICogeW91J2QgcmVwbGFjZSB0aGUgc3RhdGVtZW50IGJlbG93IHdpdGggdCArPSB0dGlzcC0+dHRfZ210b2ZmOworKwkgKiB0aW1lc3ViKCZ0LCAwTCwgc3AsIHRtcCk7CisrCSAqLworIAlyZXN1bHQgPSB0aW1lc3ViKCZ0LCB0dGlzcC0+dHRfZ210b2ZmLCBzcCwgdG1wKTsKKyAJaWYgKHJlc3VsdCkKKyAJeworQEAgLTEzMjIsOCArMTM2NiwxMCBAQCBwZ19sb2NhbHRpbWUoY29uc3QgcGdfdGltZV90ICp0aW1lcCwgY29uCisgICoKKyAgKiBFeGNlcHQgd2UgaGF2ZSBhIHByaXZhdGUgInN0cnVjdCBzdGF0ZSIgZm9yIEdNVCwgc28gbm8gc3AgaXMgcGFzc2VkIGluLgorICAqLworKworIHN0YXRpYyBzdHJ1Y3QgcGdfdG0gKgorLWdtdHN1YihwZ190aW1lX3QgY29uc3QgKnRpbWVwLCBpbnQzMiBvZmZzZXQsIHN0cnVjdCBwZ190bSAqdG1wKQorK2dtdHN1YihwZ190aW1lX3QgY29uc3QgKnRpbWVwLCBpbnQzMiBvZmZzZXQsCisrCSAgIHN0cnVjdCBwZ190bSAqdG1wKQorIHsKKyAJc3RydWN0IHBnX3RtICpyZXN1bHQ7CisgCitAQCAtMTMzNyw2ICsxMzgzLDcgQEAgZ210c3ViKHBnX3RpbWVfdCBjb25zdCAqdGltZXAsIGludDMyIG9mZgorIAkJZ210X2lzX3NldCA9IHRydWU7CisgCQlnbXRsb2FkKGdtdHB0cik7CisgCX0KKysKKyAJcmVzdWx0ID0gdGltZXN1Yih0aW1lcCwgb2Zmc2V0LCBnbXRwdHIsIHRtcCk7CisgCisgCS8qCitAQCAtMTM2MSw2ICsxNDA4LDcgQEAgcGdfZ210aW1lKGNvbnN0IHBnX3RpbWVfdCAqdGltZXApCisgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgbGVhcCB5ZWFycyB0aHJvdWdoIHRoZSBlbmQgb2YgdGhlIGdpdmVuIHllYXIKKyAgKiB3aGVyZSwgdG8gbWFrZSB0aGUgbWF0aCBlYXN5LCB0aGUgYW5zd2VyIGZvciB5ZWFyIHplcm8gaXMgZGVmaW5lZCBhcyB6ZXJvLgorICAqLworKworIHN0YXRpYyBpbnQKKyBsZWFwc190aHJ1X2VuZF9vZl9ub25uZWcoaW50IHkpCisgeworSW5kZXg6IHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvcGd0ei5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9zdGdyZXNxbC0xMC41Lm9yaWcvc3JjL3RpbWV6b25lL3BndHouaAorKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvcGd0ei5oCitAQCAtNDksMTAgKzQ5LDE2IEBAIHN0cnVjdCBzdGF0ZQorIAlwZ190aW1lX3QJYXRzW1RaX01BWF9USU1FU107CisgCXVuc2lnbmVkIGNoYXIgdHlwZXNbVFpfTUFYX1RJTUVTXTsKKyAJc3RydWN0IHR0aW5mbyB0dGlzW1RaX01BWF9UWVBFU107CistCWNoYXIJCWNoYXJzW0JJR0dFU1QoQklHR0VTVChUWl9NQVhfQ0hBUlMgKyAxLCAzIC8qIHNpemVvZiBnbXQgKi8gKSwKKysJY2hhcgkJY2hhcnNbQklHR0VTVChCSUdHRVNUKFRaX01BWF9DSEFSUyArIDEsIDQgLyogc2l6ZW9mIGdtdCAqLyApLAorIAkJCQkJCQkgICgyICogKFRaX1NUUkxFTl9NQVggKyAxKSkpXTsKKyAJc3RydWN0IGxzaW5mbyBsc2lzW1RaX01BWF9MRUFQU107CistCWludAkJCWRlZmF1bHR0eXBlOwkvKiBmb3IgZWFybHkgdGltZXMgb3IgaWYgbm8gdHJhbnNpdGlvbnMgKi8KKysKKysJLyoKKysJICogVGhlIHRpbWUgdHlwZSB0byB1c2UgZm9yIGVhcmx5IHRpbWVzIG9yIGlmIG5vIHRyYW5zaXRpb25zLiBJdCBpcyBhbHdheXMKKysJICogemVybyBmb3IgcmVjZW50IHR6ZGIgcmVsZWFzZXMuIEl0IG1pZ2h0IGJlIG5vbnplcm8gZm9yIGRhdGEgZnJvbSB0emRiCisrCSAqIDIwMThlIG9yIGVhcmxpZXIuCisrCSAqLworKwlpbnQJCQlkZWZhdWx0dHlwZTsKKyB9OworIAorIAorSW5kZXg6IHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvcHJpdmF0ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9zdGdyZXNxbC0xMC41Lm9yaWcvc3JjL3RpbWV6b25lL3ByaXZhdGUuaAorKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvcHJpdmF0ZS5oCitAQCAtMSw0ICsxLDcgQEAKKysvKiBQcml2YXRlIGhlYWRlciBmb3IgdHpkYiBjb2RlLiAgKi8KKysKKyAjaWZuZGVmIFBSSVZBVEVfSAorKworICNkZWZpbmUgUFJJVkFURV9ICisgCisgLyoKK0luZGV4OiBwb3N0Z3Jlc3FsLTEwLjUvc3JjL3RpbWV6b25lL3N0cmZ0aW1lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwb3N0Z3Jlc3FsLTEwLjUub3JpZy9zcmMvdGltZXpvbmUvc3RyZnRpbWUuYworKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvc3RyZnRpbWUuYworQEAgLTEsNCArMSw0IEBACistLyogQ29udmVydCBhIGJyb2tlbi1kb3duIHRpbWVzdGFtcCB0byBhIHN0cmluZy4gKi8KKysvKiBDb252ZXJ0IGEgYnJva2VuLWRvd24gdGltZXN0YW1wIHRvIGEgc3RyaW5nLiAgKi8KKyAKKyAvKgorICAqIENvcHlyaWdodCAxOTg5IFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuCitAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBjaGFyICpfYWRkKGNvbnN0IGNoYXIgKiwgY2hhciAqLAorIHN0YXRpYyBjaGFyICpfY29udihpbnQsIGNvbnN0IGNoYXIgKiwgY2hhciAqLCBjb25zdCBjaGFyICopOworIHN0YXRpYyBjaGFyICpfZm10KGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IHBnX3RtICosIGNoYXIgKiwgY29uc3QgY2hhciAqLAorIAkgZW51bSB3YXJuICopOworLXN0YXRpYyBjaGFyICpfeWNvbnYoaW50LCBpbnQsIGJvb2wsIGJvb2wsIGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKytzdGF0aWMgY2hhciAqX3ljb252KGludCwgaW50LCBib29sLCBib29sLCBjaGFyICosIGNoYXIgY29uc3QgKik7CisgCisgCisgc2l6ZV90CitAQCAtNDQxLDcgKzQ0MSw4IEBAIF9mbXQoY29uc3QgY2hhciAqZm9ybWF0LCBjb25zdCBzdHJ1Y3QgcGcKKyAKKyAJCQkJCS8qCisgCQkJCQkgKiBDOTkgYW5kIGxhdGVyIHNheSB0aGF0ICVaIG11c3QgYmUgcmVwbGFjZWQgYnkgdGhlIGVtcHR5CistCQkJCQkgKiBzdHJpbmcgaWYgdGhlIHRpbWUgem9uZSBpcyBub3QgZGV0ZXJtaW5hYmxlLgorKwkJCQkJICogc3RyaW5nIGlmIHRoZSB0aW1lIHpvbmUgYWJicmV2aWF0aW9uIGlzIG5vdAorKwkJCQkJICogZGV0ZXJtaW5hYmxlLgorIAkJCQkJICovCisgCQkJCQljb250aW51ZTsKKyAJCQkJY2FzZSAneic6CitAQCAtNTE5LDYgKzUyMCw3IEBAIF9hZGQoY29uc3QgY2hhciAqc3RyLCBjaGFyICpwdCwgY29uc3QgY2gKKyAgKiBzYW1lIG91dHB1dCBhcyAlWSwgYW5kIHRoYXQgJVkgY29udGFpbnMgYXQgbGVhc3QgNCBieXRlcywKKyAgKiB3aXRoIG1vcmUgb25seSBpZiBuZWNlc3NhcnkuCisgICovCisrCisgc3RhdGljIGNoYXIgKgorIF95Y29udihpbnQgYSwgaW50IGIsIGJvb2wgY29udmVydF90b3AsIGJvb2wgY29udmVydF95eSwKKyAJICAgY2hhciAqcHQsIGNvbnN0IGNoYXIgKnB0bGltKQorQEAgLTUyNiw3ICs1MjgsNyBAQCBfeWNvbnYoaW50IGEsIGludCBiLCBib29sIGNvbnZlcnRfdG9wLCBiCisgCWludAkJCWxlYWQ7CisgCWludAkJCXRyYWlsOworIAorLSNkZWZpbmUgRElWSVNPUiAxMDAKKysjZGVmaW5lIERJVklTT1IJMTAwCisgCXRyYWlsID0gYSAlIERJVklTT1IgKyBiICUgRElWSVNPUjsKKyAJbGVhZCA9IGEgLyBESVZJU09SICsgYiAvIERJVklTT1IgKyB0cmFpbCAvIERJVklTT1I7CisgCXRyYWlsICU9IERJVklTT1I7CitJbmRleDogcG9zdGdyZXNxbC0xMC41L3NyYy90aW1lem9uZS90emZpbGUuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBvc3RncmVzcWwtMTAuNS5vcmlnL3NyYy90aW1lem9uZS90emZpbGUuaAorKysrIHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvdHpmaWxlLmgKK0BAIC0xLDQgKzEsNyBAQAorKy8qIExheW91dCBhbmQgbG9jYXRpb24gb2YgVFppZiBmaWxlcy4gICovCisrCisgI2lmbmRlZiBUWkZJTEVfSAorKworICNkZWZpbmUgVFpGSUxFX0gKKyAKKyAvKgorQEAgLTIxLDE0ICsyNCwxNCBAQAorICAqIEluZm9ybWF0aW9uIGFib3V0IHRpbWUgem9uZSBmaWxlcy4KKyAgKi8KKyAKKy0jZGVmaW5lIFRaREVGQVVMVAkibG9jYWx0aW1lIgorKyNkZWZpbmUgVFpERUZBVUxUCSIvZXRjL2xvY2FsdGltZSIKKyAjZGVmaW5lIFRaREVGUlVMRVMJInBvc2l4cnVsZXMiCisgCisgLyoKKyAgKiBFYWNoIGZpbGUgYmVnaW5zIHdpdGguIC4gLgorICAqLworIAorLSNkZWZpbmUgVFpfTUFHSUMJIlRaaWYiCisrI2RlZmluZQlUWl9NQUdJQwkiVFppZiIKKyAKKyBzdHJ1Y3QgdHpoZWFkCisgeworSW5kZXg6IHBvc3RncmVzcWwtMTAuNS9zcmMvdGltZXpvbmUvemljLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwb3N0Z3Jlc3FsLTEwLjUub3JpZy9zcmMvdGltZXpvbmUvemljLmMKKysrKyBwb3N0Z3Jlc3FsLTEwLjUvc3JjL3RpbWV6b25lL3ppYy5jCitAQCAtMSwzICsxLDUgQEAKKysvKiBDb21waWxlIC56aSB0aW1lIHpvbmUgZGF0YSBpbnRvIFRaaWYgYmluYXJ5IGZpbGVzLiAgKi8KKysKKyAvKgorICAqIFRoaXMgZmlsZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwgc28gY2xhcmlmaWVkIGFzIG9mCisgICogMjAwNi0wNy0xNyBieSBBcnRodXIgRGF2aWQgT2xzb24uCitAQCAtMTMwLDggKzEzMiw3IEBAIHN0YXRpYyB2b2lkIGFkamxlYXAodm9pZCk7Cisgc3RhdGljIHZvaWQgYXNzb2NpYXRlKHZvaWQpOworIHN0YXRpYyB2b2lkIGRvbGluayhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgYm9vbCk7Cisgc3RhdGljIGNoYXIgKipnZXRmaWVsZHMoY2hhciAqYnVmKTsKKy1zdGF0aWMgemljX3QgZ2V0aG1zKGNvbnN0IGNoYXIgKnN0cmluZywgY29uc3QgY2hhciAqZXJyc3RyaW5nLAorLQkgICBib29sKTsKKytzdGF0aWMgemljX3QgZ2V0aG1zKGNvbnN0IGNoYXIgKnN0cmluZywgY29uc3QgY2hhciAqZXJyc3RyaW5nKTsKKyBzdGF0aWMgemljX3QgZ2V0c3Rkb2ZmKGNoYXIgKiwgYm9vbCAqKTsKKyBzdGF0aWMgdm9pZCBpbmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUpOworIHN0YXRpYyB2b2lkIGlubGVhcChjaGFyICoqZmllbGRzLCBpbnQgbmZpZWxkcyk7CitAQCAtMTYyLDcgKzE2Myw3IEBAIGVudW0KKyBQRVJDRU5UX1pfTEVOX0JPVU5EID0gc2l6ZW9mICIrOTk1OTU5IiAtIDF9OworIAorIC8qIElmIHRydWUsIHdvcmsgYXJvdW5kIGEgYnVnIGluIFF0IDUuNi4xIGFuZCBlYXJsaWVyLCB3aGljaCBtaXNoYW5kbGVzCistICAgdHogYmluYXJ5IGZpbGVzIHdob3NlIFBPU0lYLVRaLXN0eWxlIHN0cmluZ3MgY29udGFpbiAnPCc7IHNlZQorKyAgIFRaaWYgZmlsZXMgd2hvc2UgUE9TSVgtVFotc3R5bGUgc3RyaW5ncyBjb250YWluICc8Jzsgc2VlCisgICAgUVRCVUctNTMwNzEgPGh0dHBzOi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUVRCVUctNTMwNzE+LiAgVGhpcworICAgIHdvcmthcm91bmQgd2lsbCBubyBsb25nZXIgYmUgbmVlZGVkIHdoZW4gUXQgNS42LjEgYW5kIGVhcmxpZXIgYXJlCisgICAgb2Jzb2xldGUsIHNheSBpbiB0aGUgeWVhciAyMDIxLiAgKi8KK0BAIC0yMTEsNyArMjEyLDcgQEAgc3RhdGljIGludAl0eXBlY250OworICNkZWZpbmUgWkZfUlVMRQkJMworICNkZWZpbmUgWkZfRk9STUFUCTQKKyAjZGVmaW5lIFpGX1RJTFlFQVIJNQorLSNkZWZpbmUgWkZfVElMTU9OVEggNgorKyNkZWZpbmUgWkZfVElMTU9OVEgJNgorICNkZWZpbmUgWkZfVElMREFZCTcKKyAjZGVmaW5lIFpGX1RJTFRJTUUJOAorICNkZWZpbmUgWk9ORV9NSU5GSUVMRFMJNQorQEAgLTIyNCwxMiArMjI1LDEyIEBAIHN0YXRpYyBpbnQJdHlwZWNudDsKKyAjZGVmaW5lIFpGQ19HTVRPRkYJMAorICNkZWZpbmUgWkZDX1JVTEUJMQorICNkZWZpbmUgWkZDX0ZPUk1BVAkyCistI2RlZmluZSBaRkNfVElMWUVBUiAzCisrI2RlZmluZSBaRkNfVElMWUVBUgkzCisgI2RlZmluZSBaRkNfVElMTU9OVEgJNAorICNkZWZpbmUgWkZDX1RJTERBWQk1CistI2RlZmluZSBaRkNfVElMVElNRSA2CistI2RlZmluZSBaT05FQ19NSU5GSUVMRFMgMworLSNkZWZpbmUgWk9ORUNfTUFYRklFTERTIDcKKysjZGVmaW5lIFpGQ19USUxUSU1FCTYKKysjZGVmaW5lIFpPTkVDX01JTkZJRUxEUwkzCisrI2RlZmluZSBaT05FQ19NQVhGSUVMRFMJNworIAorIC8qCisgICogV2hpY2ggZmlsZXMgYXJlIHdoaWNoIG9uIGEgUnVsZSBsaW5lLgorQEAgLTI0NCw3ICsyNDUsNyBAQCBzdGF0aWMgaW50CXR5cGVjbnQ7CisgI2RlZmluZSBSRl9UT0QJCTcKKyAjZGVmaW5lIFJGX1NURE9GRgk4CisgI2RlZmluZSBSRl9BQkJSVkFSCTkKKy0jZGVmaW5lIFJVTEVfRklFTERTIDEwCisrI2RlZmluZSBSVUxFX0ZJRUxEUwkxMAorIAorIC8qCisgICogV2hpY2ggZmllbGRzIGFyZSB3aGljaCBvbiBhIExpbmsgbGluZS4KK0BAIC0yNTIsNyArMjUzLDcgQEAgc3RhdGljIGludAl0eXBlY250OworIAorICNkZWZpbmUgTEZfRlJPTQkJMQorICNkZWZpbmUgTEZfVE8JCTIKKy0jZGVmaW5lIExJTktfRklFTERTIDMKKysjZGVmaW5lIExJTktfRklFTERTCTMKKyAKKyAvKgorICAqIFdoaWNoIGZpZWxkcyBhcmUgd2hpY2ggb24gYSBMZWFwIGxpbmUuCitAQCAtMjY0LDcgKzI2NSw3IEBAIHN0YXRpYyBpbnQJdHlwZWNudDsKKyAjZGVmaW5lIExQX1RJTUUJCTQKKyAjZGVmaW5lIExQX0NPUlIJCTUKKyAjZGVmaW5lIExQX1JPTEwJCTYKKy0jZGVmaW5lIExFQVBfRklFTERTIDcKKysjZGVmaW5lIExFQVBfRklFTERTCTcKKyAKKyAvKgorICAqIFllYXIgc3lub255bXMuCitAQCAtOTk4LDQ4ICs5OTksNiBAQCBkb2xpbmsoY2hhciBjb25zdCAqZnJvbWZpZWxkLCBjaGFyIGNvbnN0Cisgc3RhdGljIHppY190IGNvbnN0IG1pbl90aW1lID0gTUlOVkFMKHppY190LCBUSU1FX1RfQklUU19JTl9GSUxFKTsKKyBzdGF0aWMgemljX3QgY29uc3QgbWF4X3RpbWUgPSBNQVhWQUwoemljX3QsIFRJTUVfVF9CSVRTX0lOX0ZJTEUpOworIAorLS8qCistICogRXN0aW1hdGVkIHRpbWUgb2YgdGhlIEJpZyBCYW5nLCBpbiBzZWNvbmRzIHNpbmNlIHRoZSBQT1NJWCBlcG9jaC4KKy0gKiByb3VuZGVkIGRvd253YXJkIHRvIHRoZSBuZWdhdGlvbiBvZiBhIHBvd2VyIG9mIHR3byB0aGF0IGlzCistICogY29tZm9ydGFibHkgb3V0c2lkZSB0aGUgZXJyb3IgYm91bmRzLgorLSAqCistICogRm9yIHRoZSB0aW1lIG9mIHRoZSBCaWcgQmFuZywgc2VlOgorLSAqCistICogQWRlIFBBUiwgQWdoYW5pbSBOLCBBcm1pdGFnZS1DYXBsYW4gQyBldCBhbC4gIFBsYW5jayAyMDEzIHJlc3VsdHMuCistICogSS4gT3ZlcnZpZXcgb2YgcHJvZHVjdHMgYW5kIHNjaWVudGlmaWMgcmVzdWx0cy4KKy0gKiBhclhpdjoxMzAzLjUwNjIgMjAxMy0wMy0yMCAyMDoxMDowMSBVVEMKKy0gKiA8aHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzEzMDMuNTA2MnYxPiBbUERGXQorLSAqCistICogUGFnZSAzNiwgVGFibGUgOSwgcm93IEFnZS9HeXIsIGNvbHVtbiBQbGFuY2srV1AraGlnaEwrQkFPIDY4JSBsaW1pdHMKKy0gKiBnaXZlcyB0aGUgdmFsdWUgMTMuNzk4IHBsdXMtb3ItbWludXMgMC4wMzcgYmlsbGlvbiB5ZWFycy4KKy0gKiBNdWx0aXBseWluZyB0aGlzIGJ5IDEwMDAwMDAwMDAgYW5kIHRoZW4gYnkgMzE1NTc2MDAgKHRoZSBudW1iZXIgb2YKKy0gKiBzZWNvbmRzIGluIGFuIGFzdHJvbm9taWNhbCB5ZWFyKSBnaXZlcyBhIHZhbHVlIHRoYXQgaXMgY29tZm9ydGFibHkKKy0gKiBsZXNzIHRoYW4gMioqNTksIHNvIEJJR19CQU5HIGlzIC0gMioqNTkuCistICoKKy0gKiBCSUdfQkFORyBpcyBhcHByb3hpbWF0ZSwgYW5kIG1heSBjaGFuZ2UgaW4gZnV0dXJlIHZlcnNpb25zLgorLSAqIFBsZWFzZSBkbyBub3QgcmVseSBvbiBpdHMgZXhhY3QgdmFsdWUuCistICovCistCistI2lmbmRlZiBCSUdfQkFORworLSNkZWZpbmUgQklHX0JBTkcgKC0gKCgoemljX3QpIDEpIDw8IDU5KSkKKy0jZW5kaWYKKy0KKy0vKiBJZiB0cnVlLCB3b3JrIGFyb3VuZCBHTk9NRSBidWcgNzMwMzMyCistICAgPGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAzMzI+CistICAgYnkgcmVmdXNpbmcgdG8gb3V0cHV0IHRpbWUgc3RhbXBzIGJlZm9yZSBCSUdfQkFORy4KKy0gICBTdWNoIHRpbWUgc3RhbXBzIGFyZSBwaHlzaWNhbGx5IHN1c3BlY3QgYW55d2F5LgorLQorLSAgIFRoZSBHTk9NRSBidWcgaXMgc2NoZWR1bGVkIHRvIGJlIGZpeGVkIGluIEdOT01FIDMuMjIsIGFuZCBpZiBzbworLSAgIHRoaXMgd29ya2Fyb3VuZCB3aWxsIG5vIGxvbmdlciBiZSBuZWVkZWQgd2hlbiBHTk9NRSAzLjIxIGFuZAorLSAgIGVhcmxpZXIgYXJlIG9ic29sZXRlLCBzYXkgaW4gdGhlIHllYXIgMjAyMS4gICovCistZW51bQorLXsKKy1XT1JLX0FST1VORF9HTk9NRV9CVUdfNzMwMzMyID0gdHJ1ZX07CistCistc3RhdGljIGNvbnN0IHppY190IGVhcmx5X3RpbWUgPSAoV09SS19BUk9VTkRfR05PTUVfQlVHXzczMDMzMgorLQkJCQkJCQkJID8gQklHX0JBTkcKKy0JCQkJCQkJCSA6IE1JTlZBTCh6aWNfdCwgVElNRV9UX0JJVFNfSU5fRklMRSkpOworLQorIC8qIFJldHVybiB0cnVlIGlmIE5BTUUgaXMgYSBkaXJlY3RvcnkuICAqLworIHN0YXRpYyBib29sCisgaXRzZGlyKGNoYXIgY29uc3QgKm5hbWUpCitAQCAtMTI4MSw4ICsxMjQwLDkgQEAgaW5maWxlKGNvbnN0IGNoYXIgKm5hbWUpCisgICogQSBudWxsIHN0cmluZyBtYXBzIHRvIHplcm8uCisgICogQ2FsbCBlcnJvciB3aXRoIGVycnN0cmluZyBhbmQgcmV0dXJuIHplcm8gb24gZXJyb3JzLgorICAqLworKworIHN0YXRpYyB6aWNfdAorLWdldGhtcyhjaGFyIGNvbnN0ICpzdHJpbmcsIGNoYXIgY29uc3QgKmVycnN0cmluZywgYm9vbCBzaWduYWJsZSkKKytnZXRobXMoY2hhciBjb25zdCAqc3RyaW5nLCBjaGFyIGNvbnN0ICplcnJzdHJpbmcpCisgeworIAkvKiBQRzogbWFrZSBoaCBiZSBpbnQgbm90IHppY190IHRvIGF2b2lkIHNzY2FuZiBwb3J0YWJpbGl0eSBpc3N1ZXMgKi8KKyAJaW50CQkJaGg7CitAQCAtMTI5OSw5ICsxMjU5LDcgQEAgZ2V0aG1zKGNoYXIgY29uc3QgKnN0cmluZywgY2hhciBjb25zdCAqZQorIAorIAlpZiAoc3RyaW5nID09IE5VTEwgfHwgKnN0cmluZyA9PSAnXDAnKQorIAkJcmV0dXJuIDA7CistCWlmICghc2lnbmFibGUpCistCQlzaWduID0gMTsKKy0JZWxzZSBpZiAoKnN0cmluZyA9PSAnLScpCisrCWlmICgqc3RyaW5nID09ICctJykKKyAJeworIAkJc2lnbiA9IC0xOworIAkJKytzdHJpbmc7CitAQCAtMTM4NCw3ICsxMzQyLDcgQEAgZ2V0c3Rkb2ZmKGNoYXIgKmZpZWxkLCBib29sICppc2RzdCkKKyAJCQkJYnJlYWs7CisgCQl9CisgCX0KKy0Jc3Rkb2ZmID0gZ2V0aG1zKGZpZWxkLCBfKCJpbnZhbGlkIHNhdmVkIHRpbWUiKSwgdHJ1ZSk7CisrCXN0ZG9mZiA9IGdldGhtcyhmaWVsZCwgXygiaW52YWxpZCBzYXZlZCB0aW1lIikpOworIAkqaXNkc3QgPSBkc3QgPCAwID8gc3Rkb2ZmICE9IDAgOiBkc3Q7CisgCXJldHVybiBzdGRvZmY7CisgfQorQEAgLTEzOTksMTAgKzEzNTcsMjkgQEAgaW5ydWxlKGNoYXIgKipmaWVsZHMsIGludCBuZmllbGRzKQorIAkJZXJyb3IoXygid3JvbmcgbnVtYmVyIG9mIGZpZWxkcyBvbiBSdWxlIGxpbmUiKSk7CisgCQlyZXR1cm47CisgCX0KKy0JaWYgKCpmaWVsZHNbUkZfTkFNRV0gPT0gJ1wwJykKKysJc3dpdGNoICgqZmllbGRzW1JGX05BTUVdKQorIAl7CistCQllcnJvcihfKCJuYW1lbGVzcyBydWxlIikpOworLQkJcmV0dXJuOworKwkJY2FzZSAnXDAnOgorKwkJY2FzZSAnICc6CisrCQljYXNlICdcZic6CisrCQljYXNlICdcbic6CisrCQljYXNlICdccic6CisrCQljYXNlICdcdCc6CisrCQljYXNlICdcdic6CisrCQljYXNlICcrJzoKKysJCWNhc2UgJy0nOgorKwkJY2FzZSAnMCc6CisrCQljYXNlICcxJzoKKysJCWNhc2UgJzInOgorKwkJY2FzZSAnMyc6CisrCQljYXNlICc0JzoKKysJCWNhc2UgJzUnOgorKwkJY2FzZSAnNic6CisrCQljYXNlICc3JzoKKysJCWNhc2UgJzgnOgorKwkJY2FzZSAnOSc6CisrCQkJZXJyb3IoXygiSW52YWxpZCBydWxlIG5hbWUgXCIlc1wiIiksIGZpZWxkc1tSRl9OQU1FXSk7CisrCQkJcmV0dXJuOworIAl9CisgCXIucl9maWxlbmFtZSA9IGZpbGVuYW1lOworIAlyLnJfbGluZW51bSA9IGxpbmVudW07CitAQCAtMTUwNyw3ICsxNDg0LDcgQEAgaW56c3ViKGNoYXIgKipmaWVsZHMsIGludCBuZmllbGRzLCBib29sCisgCX0KKyAJei56X2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgCXouel9saW5lbnVtID0gbGluZW51bTsKKy0Jei56X2dtdG9mZiA9IGdldGhtcyhmaWVsZHNbaV9nbXRvZmZdLCBfKCJpbnZhbGlkIFVUIG9mZnNldCIpLCB0cnVlKTsKKysJei56X2dtdG9mZiA9IGdldGhtcyhmaWVsZHNbaV9nbXRvZmZdLCBfKCJpbnZhbGlkIFVUIG9mZnNldCIpKTsKKyAJaWYgKChjcCA9IHN0cmNocihmaWVsZHNbaV9mb3JtYXRdLCAnJScpKSAhPSBOVUxMKQorIAl7CisgCQlpZiAoKCorK2NwICE9ICdzJyAmJiAqY3AgIT0gJ3onKSB8fCBzdHJjaHIoY3AsICclJykKK0BAIC0xNjQ5LDcgKzE2MjYsNyBAQCBpbmxlYXAoY2hhciAqKmZpZWxkcywgaW50IG5maWVsZHMpCisgCQlyZXR1cm47CisgCX0KKyAJdCA9IGRheW9mZiAqIFNFQ1NQRVJEQVk7CistCXRvZCA9IGdldGhtcyhmaWVsZHNbTFBfVElNRV0sIF8oImludmFsaWQgdGltZSBvZiBkYXkiKSwgZmFsc2UpOworKwl0b2QgPSBnZXRobXMoZmllbGRzW0xQX1RJTUVdLCBfKCJpbnZhbGlkIHRpbWUgb2YgZGF5IikpOworIAljcCA9IGZpZWxkc1tMUF9DT1JSXTsKKyAJeworIAkJYm9vbAkJcG9zaXRpdmU7CitAQCAtMTc1Nyw3ICsxNzM0LDcgQEAgcnVsZXN1YihzdHJ1Y3QgcnVsZSAqcnAsIGNvbnN0IGNoYXIgKmxveQorIAkJCQlicmVhazsKKyAJCX0KKyAJfQorLQlycC0+cl90b2QgPSBnZXRobXMoZHAsIF8oImludmFsaWQgdGltZSBvZiBkYXkiKSwgZmFsc2UpOworKwlycC0+cl90b2QgPSBnZXRobXMoZHAsIF8oImludmFsaWQgdGltZSBvZiBkYXkiKSk7CisgCWZyZWUoZHApOworIAorIAkvKgorQEAgLTE5NDIsNyArMTkxOSw0MyBAQCBpczMyKGNvbnN0IHppY190IHgpCisgfQorIAorIHN0YXRpYyB2b2lkCistd3JpdGV6b25lKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZywgY2hhciB2ZXJzaW9uKQorK3N3YXB0eXBlcyhpbnQgaSwgaW50IGopCisreworKwl7CisrCQl6aWNfdAkJdCA9IGdtdG9mZnNbaV07CisrCisrCQlnbXRvZmZzW2ldID0gZ210b2Zmc1tqXTsKKysJCWdtdG9mZnNbal0gPSB0OworKwl9CisrCXsKKysJCWNoYXIJCXQgPSBpc2RzdHNbaV07CisrCisrCQlpc2RzdHNbaV0gPSBpc2RzdHNbal07CisrCQlpc2RzdHNbal0gPSB0OworKwl9CisrCXsKKysJCXVuc2lnbmVkIGNoYXIgdCA9IGFiYnJpbmRzW2ldOworKworKwkJYWJicmluZHNbaV0gPSBhYmJyaW5kc1tqXTsKKysJCWFiYnJpbmRzW2pdID0gdDsKKysJfQorKwl7CisrCQlib29sCQl0ID0gdHRpc3N0ZHNbaV07CisrCisrCQl0dGlzc3Rkc1tpXSA9IHR0aXNzdGRzW2pdOworKwkJdHRpc3N0ZHNbal0gPSB0OworKwl9CisrCXsKKysJCWJvb2wJCXQgPSB0dGlzZ210c1tpXTsKKysKKysJCXR0aXNnbXRzW2ldID0gdHRpc2dtdHNbal07CisrCQl0dGlzZ210c1tqXSA9IHQ7CisrCX0KKyt9CisrCisrc3RhdGljIHZvaWQKKyt3cml0ZXpvbmUoY29uc3QgY2hhciAqY29uc3QgbmFtZSwgY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nLCBjaGFyIHZlcnNpb24sCisrCQkgIGludCBkZWZhdWx0dHlwZSkKKyB7CisgCUZJTEUJICAgKmZwOworIAlwdHJkaWZmX3QJaSwKK0BAIC0xOTc3LDE0ICsxOTkwLDEyIEBAIHdyaXRlem9uZShjb25zdCBjaGFyICpjb25zdCBuYW1lLCBjb25zdAorIAorIAkJdG9pID0gMDsKKyAJCWZyb21pID0gMDsKKy0JCXdoaWxlIChmcm9taSA8IHRpbWVjbnQgJiYgYXR0eXBlc1tmcm9taV0uYXQgPCBlYXJseV90aW1lKQorLQkJCSsrZnJvbWk7CisgCQlmb3IgKDsgZnJvbWkgPCB0aW1lY250OyArK2Zyb21pKQorIAkJeworLQkJCWlmICh0b2kgPiAxICYmICgoYXR0eXBlc1tmcm9taV0uYXQgKworLQkJCQkJCQkgZ210b2Zmc1thdHR5cGVzW3RvaSAtIDFdLnR5cGVdKSA8PQorLQkJCQkJCQkoYXR0eXBlc1t0b2kgLSAxXS5hdCArCistCQkJCQkJCSBnbXRvZmZzW2F0dHlwZXNbdG9pIC0gMl0udHlwZV0pKSkKKysJCQlpZiAodG9pICE9IDAgJiYgKChhdHR5cGVzW2Zyb21pXS5hdCArCisrCQkJCQkJCSAgZ210b2Zmc1thdHR5cGVzW3RvaSAtIDFdLnR5cGVdKSA8PQorKwkJCQkJCQkgKGF0dHlwZXNbdG9pIC0gMV0uYXQgKyBnbXRvZmZzW3RvaSA9PSAxID8gMAorKwkJCQkJCQkJCQkJCQkJCTogYXR0eXBlc1t0b2kgLSAyXS50eXBlXSkpKQorIAkJCXsKKyAJCQkJYXR0eXBlc1t0b2kgLSAxXS50eXBlID0KKyAJCQkJCWF0dHlwZXNbZnJvbWldLnR5cGU7CitAQCAtMjAxOSw4ICsyMDMwLDggQEAgd3JpdGV6b25lKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIGNvbnN0CisgCX0KKyAKKyAJLyoKKy0JICogV29yayBhcm91bmQgUVRCVUctNTMwNzEgZm9yIHRpbWUgc3RhbXBzIGxlc3MgdGhhbiB5MjAzOF9ib3VuZGFyeSAtIDEsCistCSAqIGJ5IGluc2VydGluZyBhIG5vLW9wIHRyYW5zaXRpb24gYXQgdGltZSB5MjAzOF9ib3VuZGFyeSAtIDEuIFRoaXMgd29ya3MKKysJICogV29yayBhcm91bmQgUVRCVUctNTMwNzEgZm9yIHRpbWVzdGFtcHMgbGVzcyB0aGFuIHkyMDM4X2JvdW5kYXJ5IC0gMSwgYnkKKysJICogaW5zZXJ0aW5nIGEgbm8tb3AgdHJhbnNpdGlvbiBhdCB0aW1lIHkyMDM4X2JvdW5kYXJ5IC0gMS4gVGhpcyB3b3JrcworIAkgKiBvbmx5IGZvciB0aW1lc3RhbXBzIGJlZm9yZSB0aGUgYm91bmRhcnksIHdoaWNoIHNob3VsZCBiZSBnb29kIGVub3VnaCBpbgorIAkgKiBwcmFjdGljZSBhcyBRVEJVRy01MzA3MSBzaG91bGQgYmUgbG9uZy1kZWFkIGJ5IDIwMzguCisgCSAqLworQEAgLTIxMTYsNyArMjEyNyw4IEBAIHdyaXRlem9uZShjb25zdCBjaGFyICpjb25zdCBuYW1lLCBjb25zdAorIAkJaW50CQkJdGhpc2xlYXBpLAorIAkJCQkJdGhpc2xlYXBjbnQsCisgCQkJCQl0aGlzbGVhcGxpbTsKKy0JCWludAkJCXdyaXRldHlwZVtUWl9NQVhfVFlQRVNdOworKwkJaW50CQkJb2xkMDsKKysJCWNoYXIJCW9taXR0eXBlW1RaX01BWF9UWVBFU107CisgCQlpbnQJCQl0eXBlbWFwW1RaX01BWF9UWVBFU107CisgCQlpbnQJCQl0aGlzdHlwZWNudDsKKyAJCWNoYXIJCXRoaXNjaGFyc1tUWl9NQVhfQ0hBUlNdOworQEAgLTIxNDQsMjggKzIxNTYsMTkgQEAgd3JpdGV6b25lKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIGNvbnN0CisgCQkJZXJyb3IoXygidG9vIG1hbnkgdHJhbnNpdGlvbiB0aW1lcyIpKTsKKyAJCXRoaXN0aW1lbGltID0gdGhpc3RpbWVpICsgdGhpc3RpbWVjbnQ7CisgCQl0aGlzbGVhcGxpbSA9IHRoaXNsZWFwaSArIHRoaXNsZWFwY250OworLQkJZm9yIChpID0gMDsgaSA8IHR5cGVjbnQ7ICsraSkKKy0JCQl3cml0ZXR5cGVbaV0gPSB0aGlzdGltZWNudCA9PSB0aW1lY250OworLQkJaWYgKHRoaXN0aW1lY250ID09IDApCistCQl7CistCQkJLyoKKy0JCQkgKiBObyB0cmFuc2l0aW9uIHRpbWVzIGZhbGwgaW4gdGhlIGN1cnJlbnQgKDMyLSBvciA2NC1iaXQpIHdpbmRvdy4KKy0JCQkgKi8KKy0JCQlpZiAodHlwZWNudCAhPSAwKQorLQkJCQl3cml0ZXR5cGVbdHlwZWNudCAtIDFdID0gdHJ1ZTsKKy0JCX0KKy0JCWVsc2UKKy0JCXsKKy0JCQlmb3IgKGkgPSB0aGlzdGltZWkgLSAxOyBpIDwgdGhpc3RpbWVsaW07ICsraSkKKy0JCQkJaWYgKGkgPj0gMCkKKy0JCQkJCXdyaXRldHlwZVt0eXBlc1tpXV0gPSB0cnVlOworKwkJbWVtc2V0KG9taXR0eXBlLCB0cnVlLCB0eXBlY250KTsKKysJCW9taXR0eXBlW2RlZmF1bHR0eXBlXSA9IGZhbHNlOworKwkJZm9yIChpID0gdGhpc3RpbWVpOyBpIDwgdGhpc3RpbWVsaW07IGkrKykKKysJCQlvbWl0dHlwZVt0eXBlc1tpXV0gPSBmYWxzZTsKKysKKysJCS8qCisrCQkgKiBSZW9yZGVyIHR5cGVzIHRvIG1ha2UgREVGQVVMVFRZUEUgdHlwZSAwLiBVc2UgVFlQRU1BUCB0byBzd2FwIE9MRDAKKysJCSAqIGFuZCBERUZBVUxUVFlQRSBzbyB0aGF0IERFRkFVTFRUWVBFIGFwcGVhcnMgYXMgdHlwZSAwIGluIHRoZSBvdXRwdXQKKysJCSAqIGluc3RlYWQgb2YgT0xEMC4gIFRZUEVNQVAgYWxzbyBvbWl0cyB1bnVzZWQgdHlwZXMuCisrCQkgKi8KKysJCW9sZDAgPSBzdHJsZW4ob21pdHR5cGUpOworKwkJc3dhcHR5cGVzKG9sZDAsIGRlZmF1bHR0eXBlKTsKKyAKKy0JCQkvKgorLQkJCSAqIEZvciBBbWVyaWNhL0dvZHRoYWIgYW5kIEFudGFyY3RpY2EvUGFsbWVyCistCQkJICovCistCQkJaWYgKHRoaXN0aW1laSA9PSAwKQorLQkJCQl3cml0ZXR5cGVbMF0gPSB0cnVlOworLQkJfQorICNpZm5kZWYgTEVBVkVfU09NRV9QUkVfMjAxMV9TWVNURU1TX0lOX1RIRV9MVVJDSAorIAorIAkJLyoKK0BAIC0yMTg3LDggKzIxOTAsOCBAQCB3cml0ZXpvbmUoY29uc3QgY2hhciAqY29uc3QgbmFtZSwgY29uc3QKKyAJCQkJCW1ydWRzdCA9IHR5cGVzW2ldOworIAkJCQllbHNlCisgCQkJCQltcnVzdGQgPSB0eXBlc1tpXTsKKy0JCQlmb3IgKGkgPSAwOyBpIDwgdHlwZWNudDsgKytpKQorLQkJCQlpZiAod3JpdGV0eXBlW2ldKQorKwkJCWZvciAoaSA9IG9sZDA7IGkgPCB0eXBlY250OyBpKyspCisrCQkJCWlmICghb21pdHR5cGVbaV0pCisgCQkJCXsKKyAJCQkJCWlmIChpc2RzdHNbaV0pCisgCQkJCQkJaGlkc3QgPSBpOworQEAgLTIyMDUsNyArMjIwOCw3IEBAIHdyaXRlem9uZShjb25zdCBjaGFyICpjb25zdCBuYW1lLCBjb25zdAorIAkJCQkJCQkgICB0dGlzc3Rkc1ttcnVkc3RdLAorIAkJCQkJCQkgICB0dGlzZ210c1ttcnVkc3RdKTsKKyAJCQkJaXNkc3RzW21ydWRzdF0gPSAxOworLQkJCQl3cml0ZXR5cGVbdHlwZV0gPSB0cnVlOworKwkJCQlvbWl0dHlwZVt0eXBlXSA9IGZhbHNlOworIAkJCX0KKyAJCQlpZiAoaGlzdGQgPj0gMCAmJiBtcnVzdGQgPj0gMCAmJiBoaXN0ZCAhPSBtcnVzdGQgJiYKKyAJCQkJZ210b2Zmc1toaXN0ZF0gIT0gZ210b2Zmc1ttcnVzdGRdKQorQEAgLTIyMTcsMjIgKzIyMjAsMjYgQEAgd3JpdGV6b25lKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIGNvbnN0CisgCQkJCQkJCSAgIHR0aXNzdGRzW21ydXN0ZF0sCisgCQkJCQkJCSAgIHR0aXNnbXRzW21ydXN0ZF0pOworIAkJCQlpc2RzdHNbbXJ1c3RkXSA9IDA7CistCQkJCXdyaXRldHlwZVt0eXBlXSA9IHRydWU7CisrCQkJCW9taXR0eXBlW3R5cGVdID0gZmFsc2U7CisgCQkJfQorIAkJfQorICNlbmRpZgkJCQkJCQkvKiAhZGVmaW5lZAorIAkJCQkJCQkJICogTEVBVkVfU09NRV9QUkVfMjAxMV9TWVNURU1TX0lOX1RIRV9MVVJDSCAqLworIAkJdGhpc3R5cGVjbnQgPSAwOworLQkJZm9yIChpID0gMDsgaSA8IHR5cGVjbnQ7ICsraSkKKy0JCQl0eXBlbWFwW2ldID0gd3JpdGV0eXBlW2ldID8gdGhpc3R5cGVjbnQrKyA6IC0xOworKwkJZm9yIChpID0gb2xkMDsgaSA8IHR5cGVjbnQ7IGkrKykKKysJCQlpZiAoIW9taXR0eXBlW2ldKQorKwkJCQl0eXBlbWFwW2kgPT0gb2xkMCA/IGRlZmF1bHR0eXBlCisrCQkJCQkJOiBpID09IGRlZmF1bHR0eXBlID8gb2xkMCA6IGldCisrCQkJCQk9IHRoaXN0eXBlY250Kys7CisrCisgCQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIGluZG1hcCAvIHNpemVvZiBpbmRtYXBbMF07ICsraSkKKyAJCQlpbmRtYXBbaV0gPSAtMTsKKyAJCXRoaXNjaGFyY250ID0gMDsKKy0JCWZvciAoaSA9IDA7IGkgPCB0eXBlY250OyArK2kpCisrCQlmb3IgKGkgPSBvbGQwOyBpIDwgdHlwZWNudDsgaSsrKQorIAkJeworIAkJCWNoYXIJICAgKnRoaXNhYmJyOworIAorLQkJCWlmICghd3JpdGV0eXBlW2ldKQorKwkJCWlmIChvbWl0dHlwZVtpXSkKKyAJCQkJY29udGludWU7CisgCQkJaWYgKGluZG1hcFthYmJyaW5kc1tpXV0gPj0gMCkKKyAJCQkJY29udGludWU7CitAQCAtMjI2NywyMyArMjI3NCwxNiBAQCB3cml0ZXpvbmUoY29uc3QgY2hhciAqY29uc3QgbmFtZSwgY29uc3QKKyAJCURPKHR6aF90eXBlY250KTsKKyAJCURPKHR6aF9jaGFyY250KTsKKyAjdW5kZWYgRE8KKy0JCWZvciAoaSA9IHRoaXN0aW1laTsgaSA8IHRoaXN0aW1lbGltOyArK2kpCistCQkJaWYgKHBhc3MgPT0gMSkKKyAKKy0JCQkJLyoKKy0JCQkJICogT3V0cHV0IGFuIElOVDMyX01JTiAidHJhbnNpdGlvbiIgaWYgYXBwcm9wcmlhdGU7IHNlZSBhYm92ZS4KKy0JCQkJICovCistCQkJCXB1dHR6Y29kZSgoKGF0c1tpXSA8IFBHX0lOVDMyX01JTikgPworLQkJCQkJCSAgIFBHX0lOVDMyX01JTiA6IGF0c1tpXSksIGZwKTsKKy0JCQllbHNlCisrCQkvKiBQRzogcHJpbnQgY3VycmVudCB0aW1lem9uZSBhYmJyZXZpYXRpb25zIGlmIHJlcXVlc3RlZCAqLworKwkJaWYgKHByaW50X2FiYnJldnMgJiYgcGFzcyA9PSAyKQorKwkJeworKwkJCS8qIFByaW50ICJ0eXBlIiBkYXRhIGZvciBwZXJpb2RzIGVuZGluZyBhZnRlciBwcmludF9jdXRvZmYgKi8KKysJCQlmb3IgKGkgPSB0aGlzdGltZWk7IGkgPCB0aGlzdGltZWxpbTsgKytpKQorIAkJCXsKKy0JCQkJcHV0dHpjb2RlNjQoYXRzW2ldLCBmcCk7CistCistCQkJCS8qIFByaW50IGN1cnJlbnQgdGltZXpvbmUgYWJicmV2aWF0aW9ucyBpZiByZXF1ZXN0ZWQgKi8KKy0JCQkJaWYgKHByaW50X2FiYnJldnMgJiYKKy0JCQkJCShpID09IHRoaXN0aW1lbGltIC0gMSB8fCBhdHNbaSArIDFdID4gcHJpbnRfY3V0b2ZmKSkKKysJCQkJaWYgKGkgPT0gdGhpc3RpbWVsaW0gLSAxIHx8IGF0c1tpICsgMV0gPiBwcmludF9jdXRvZmYpCisgCQkJCXsKKy0JCQkJCXVuc2lnbmVkIGNoYXIgdG0gPSB0eXBlbWFwW3R5cGVzW2ldXTsKKysJCQkJCXVuc2lnbmVkIGNoYXIgdG0gPSB0eXBlc1tpXTsKKyAJCQkJCWNoYXIJICAgKnRoaXNhYmJyZXYgPSAmdGhpc2NoYXJzW2luZG1hcFthYmJyaW5kc1t0bV1dXTsKKyAKKyAJCQkJCS8qIGZpbHRlciBvdXQgYXNzb3J0ZWQganVuayBlbnRyaWVzICovCitAQCAtMjI5NSw2ICsyMjk1LDMyIEBAIHdyaXRlem9uZShjb25zdCBjaGFyICpjb25zdCBuYW1lLCBjb25zdAorIAkJCQkJCQkJaXNkc3RzW3RtXSA/ICJcdEQiIDogIiIpOworIAkJCQl9CisgCQkJfQorKwkJCS8qIFByaW50IHRoZSBkZWZhdWx0IHR5cGUgaWYgd2UgaGF2ZSBubyB0cmFuc2l0aW9ucyBhdCBhbGwgKi8KKysJCQlpZiAodGhpc3RpbWVpID49IHRoaXN0aW1lbGltKQorKwkJCXsKKysJCQkJdW5zaWduZWQgY2hhciB0bSA9IGRlZmF1bHR0eXBlOworKwkJCQljaGFyCSAgICp0aGlzYWJicmV2ID0gJnRoaXNjaGFyc1tpbmRtYXBbYWJicmluZHNbdG1dXV07CisrCisrCQkJCS8qIGZpbHRlciBvdXQgYXNzb3J0ZWQganVuayBlbnRyaWVzICovCisrCQkJCWlmIChzdHJjbXAodGhpc2FiYnJldiwgR1JBTkRQQVJFTlRFRCkgIT0gMCAmJgorKwkJCQkJc3RyY21wKHRoaXNhYmJyZXYsICJ6enoiKSAhPSAwKQorKwkJCQkJZnByaW50ZihzdGRvdXQsICIlc1x0IiBJTlQ2NF9GT1JNQVQgIiVzXG4iLAorKwkJCQkJCQl0aGlzYWJicmV2LAorKwkJCQkJCQlnbXRvZmZzW3RtXSwKKysJCQkJCQkJaXNkc3RzW3RtXSA/ICJcdEQiIDogIiIpOworKwkJCX0KKysJCX0KKysKKysJCWZvciAoaSA9IHRoaXN0aW1laTsgaSA8IHRoaXN0aW1lbGltOyArK2kpCisrCQkJaWYgKHBhc3MgPT0gMSkKKysKKysJCQkJLyoKKysJCQkJICogT3V0cHV0IGFuIElOVDMyX01JTiAidHJhbnNpdGlvbiIgaWYgYXBwcm9wcmlhdGU7IHNlZSBhYm92ZS4KKysJCQkJICovCisrCQkJCXB1dHR6Y29kZSgoKGF0c1tpXSA8IFBHX0lOVDMyX01JTikgPworKwkJCQkJCSAgIFBHX0lOVDMyX01JTiA6IGF0c1tpXSksIGZwKTsKKysJCQllbHNlCisrCQkJCXB1dHR6Y29kZTY0KGF0c1tpXSwgZnApOworIAkJZm9yIChpID0gdGhpc3RpbWVpOyBpIDwgdGhpc3RpbWVsaW07ICsraSkKKyAJCXsKKyAJCQl1bnNpZ25lZCBjaGFyIHVjOworQEAgLTIzMDIsOCArMjMyOCw4IEBAIHdyaXRlem9uZShjb25zdCBjaGFyICpjb25zdCBuYW1lLCBjb25zdAorIAkJCXVjID0gdHlwZW1hcFt0eXBlc1tpXV07CisgCQkJZndyaXRlKCZ1Yywgc2l6ZW9mIHVjLCAxLCBmcCk7CisgCQl9CistCQlmb3IgKGkgPSAwOyBpIDwgdHlwZWNudDsgKytpKQorLQkJCWlmICh3cml0ZXR5cGVbaV0pCisrCQlmb3IgKGkgPSBvbGQwOyBpIDwgdHlwZWNudDsgaSsrKQorKwkJCWlmICghb21pdHR5cGVbaV0pCisgCQkJeworIAkJCQlwdXR0emNvZGUoZ210b2Zmc1tpXSwgZnApOworIAkJCQlwdXRjKGlzZHN0c1tpXSwgZnApOworQEAgLTIzNDYsMTIgKzIzNzIsMTMgQEAgd3JpdGV6b25lKGNvbnN0IGNoYXIgKmNvbnN0IG5hbWUsIGNvbnN0CisgCQkJCXB1dHR6Y29kZTY0KHRvZG8sIGZwKTsKKyAJCQlwdXR0emNvZGUoY29ycltpXSwgZnApOworIAkJfQorLQkJZm9yIChpID0gMDsgaSA8IHR5cGVjbnQ7ICsraSkKKy0JCQlpZiAod3JpdGV0eXBlW2ldKQorKwkJZm9yIChpID0gb2xkMDsgaSA8IHR5cGVjbnQ7IGkrKykKKysJCQlpZiAoIW9taXR0eXBlW2ldKQorIAkJCQlwdXRjKHR0aXNzdGRzW2ldLCBmcCk7CistCQlmb3IgKGkgPSAwOyBpIDwgdHlwZWNudDsgKytpKQorLQkJCWlmICh3cml0ZXR5cGVbaV0pCisrCQlmb3IgKGkgPSBvbGQwOyBpIDwgdHlwZWNudDsgaSsrKQorKwkJCWlmICghb21pdHR5cGVbaV0pCisgCQkJCXB1dGModHRpc2dtdHNbaV0sIGZwKTsKKysJCXN3YXB0eXBlcyhvbGQwLCBkZWZhdWx0dHlwZSk7CisgCX0KKyAJZnByaW50ZihmcCwgIlxuJXNcbiIsIHN0cmluZyk7CisgCWNsb3NlX2ZpbGUoZnAsIGRpcmVjdG9yeSwgbmFtZSk7CitAQCAtMjc1Nyw2ICsyNzg0LDcgQEAgb3V0em9uZShjb25zdCBzdHJ1Y3Qgem9uZSAqenBmaXJzdCwgcHRyZAorIAl6aWNfdAkJb25lID0gMTsKKyAJemljX3QJCXkyMDM4X2JvdW5kYXJ5ID0gb25lIDw8IDMxOworIAl6aWNfdAkJbWF4X3llYXIwOworKwlpbnQJCQlkZWZhdWx0dHlwZSA9IC0xOworIAorIAltYXhfYWJicl9sZW4gPSAyICsgbWF4X2Zvcm1hdF9sZW4gKyBtYXhfYWJicnZhcl9sZW47CisgCW1heF9lbnZ2YXJfbGVuID0gMiAqIG1heF9hYmJyX2xlbiArIDUgKiA5OworQEAgLTI4ODAsOSArMjkwOCw5IEBAIG91dHpvbmUoY29uc3Qgc3RydWN0IHpvbmUgKnpwZmlyc3QsIHB0cmQKKyAJCSAqLworIAkJc3Rkb2ZmID0gMDsKKyAJCXpwID0gJnpwZmlyc3RbaV07CistCQl1c2VzdGFydCA9IGkgPiAwICYmICh6cCAtIDEpLT56X3VudGlsdGltZSA+IGVhcmx5X3RpbWU7CisrCQl1c2VzdGFydCA9IGkgPiAwICYmICh6cCAtIDEpLT56X3VudGlsdGltZSA+IG1pbl90aW1lOworIAkJdXNldW50aWwgPSBpIDwgKHpvbmVjb3VudCAtIDEpOworLQkJaWYgKHVzZXVudGlsICYmIHpwLT56X3VudGlsdGltZSA8PSBlYXJseV90aW1lKQorKwkJaWYgKHVzZXVudGlsICYmIHpwLT56X3VudGlsdGltZSA8PSBtaW5fdGltZSkKKyAJCQljb250aW51ZTsKKyAJCWdtdG9mZiA9IHpwLT56X2dtdG9mZjsKKyAJCWVhdCh6cC0+el9maWxlbmFtZSwgenAtPnpfbGluZW51bSk7CitAQCAtMjkwMSw3ICsyOTI5LDcgQEAgb3V0em9uZShjb25zdCBzdHJ1Y3Qgem9uZSAqenBmaXJzdCwgcHRyZAorIAkJCQl1c2VzdGFydCA9IGZhbHNlOworIAkJCX0KKyAJCQllbHNlCistCQkJCWFkZHR0KGVhcmx5X3RpbWUsIHR5cGUpOworKwkJCQlkZWZhdWx0dHlwZSA9IHR5cGU7CisgCQl9CisgCQllbHNlCisgCQkJZm9yICh5ZWFyID0gbWluX3llYXI7IHllYXIgPD0gbWF4X3llYXI7ICsreWVhcikKK0BAIC0zMDMyLDYgKzMwNjAsOCBAQCBvdXR6b25lKGNvbnN0IHN0cnVjdCB6b25lICp6cGZpcnN0LCBwdHJkCisgCQkJCQlvZmZzZXQgPSBvYWRkKHpwLT56X2dtdG9mZiwgcnAtPnJfc3Rkb2ZmKTsKKyAJCQkJCXR5cGUgPSBhZGR0eXBlKG9mZnNldCwgYWIsIHJwLT5yX2lzZHN0LAorIAkJCQkJCQkJICAgcnAtPnJfdG9kaXNzdGQsIHJwLT5yX3RvZGlzZ210KTsKKysJCQkJCWlmIChkZWZhdWx0dHlwZSA8IDAgJiYgIXJwLT5yX2lzZHN0KQorKwkJCQkJCWRlZmF1bHR0eXBlID0gdHlwZTsKKyAJCQkJCWlmIChycC0+cl9oaXllYXIgPT0gWklDX01BWAorIAkJCQkJCSYmICEoMCA8PSBsYXN0YXRtYXgKKyAJCQkJCQkJICYmIGt0aW1lIDwgYXR0eXBlc1tsYXN0YXRtYXhdLmF0KSkKK0BAIC0zMDUwLDExICszMDgwLDE1IEBAIG91dHpvbmUoY29uc3Qgc3RydWN0IHpvbmUgKnpwZmlyc3QsIHB0cmQKKyAJCQlpZiAoKnN0YXJ0YnVmID09ICdcMCcpCisgCQkJCWVycm9yKF8oImNhbm5vdCBkZXRlcm1pbmUgdGltZSB6b25lIGFiYnJldmlhdGlvbiB0byB1c2UganVzdCBhZnRlciB1bnRpbCB0aW1lIikpOworIAkJCWVsc2UKKy0JCQkJYWRkdHQoc3RhcnR0aW1lLAorLQkJCQkJICBhZGR0eXBlKHN0YXJ0b2ZmLCBzdGFydGJ1ZiwKKy0JCQkJCQkJICBzdGFydG9mZiAhPSB6cC0+el9nbXRvZmYsCistCQkJCQkJCSAgc3RhcnR0dGlzc3RkLAorLQkJCQkJCQkgIHN0YXJ0dHRpc2dtdCkpOworKwkJCXsKKysJCQkJYm9vbAkJaXNkc3QgPSBzdGFydG9mZiAhPSB6cC0+el9nbXRvZmY7CisrCisrCQkJCXR5cGUgPSBhZGR0eXBlKHN0YXJ0b2ZmLCBzdGFydGJ1ZiwgaXNkc3QsCisrCQkJCQkJCSAgIHN0YXJ0dHRpc3N0ZCwgc3RhcnR0dGlzZ210KTsKKysJCQkJaWYgKGRlZmF1bHR0eXBlIDwgMCAmJiAhaXNkc3QpCisrCQkJCQlkZWZhdWx0dHlwZSA9IHR5cGU7CisrCQkJCWFkZHR0KHN0YXJ0dGltZSwgdHlwZSk7CisrCQkJfQorIAkJfQorIAorIAkJLyoKK0BAIC0zMDcxLDYgKzMxMDUsOCBAQCBvdXR6b25lKGNvbnN0IHN0cnVjdCB6b25lICp6cGZpcnN0LCBwdHJkCisgCQkJCXN0YXJ0dGltZSA9IHRhZGQoc3RhcnR0aW1lLCAtZ210b2ZmKTsKKyAJCX0KKyAJfQorKwlpZiAoZGVmYXVsdHR5cGUgPCAwKQorKwkJZGVmYXVsdHR5cGUgPSAwOworIAlpZiAoMCA8PSBsYXN0YXRtYXgpCisgCQlhdHR5cGVzW2xhc3RhdG1heF0uZG9udG1lcmdlID0gdHJ1ZTsKKyAJaWYgKGRvX2V4dGVuZCkKK0BAIC0zMTAwLDcgKzMxMzYsNyBAQCBvdXR6b25lKGNvbnN0IHN0cnVjdCB6b25lICp6cGZpcnN0LCBwdHJkCisgCQkJYXR0eXBlc1t0aW1lY250IC0gMV0uZG9udG1lcmdlID0gdHJ1ZTsKKyAJCX0KKyAJfQorLQl3cml0ZXpvbmUoenBmaXJzdC0+el9uYW1lLCBlbnZ2YXIsIHZlcnNpb24pOworKwl3cml0ZXpvbmUoenBmaXJzdC0+el9uYW1lLCBlbnZ2YXIsIHZlcnNpb24sIGRlZmF1bHR0eXBlKTsKKyAJZnJlZShzdGFydGJ1Zik7CisgCWZyZWUoYWIpOworIAlmcmVlKGVudnZhcik7CitAQCAtMzEwOSwyMSArMzE0NSw2IEBAIG91dHpvbmUoY29uc3Qgc3RydWN0IHpvbmUgKnpwZmlyc3QsIHB0cmQKKyBzdGF0aWMgdm9pZAorIGFkZHR0KHppY190IHN0YXJ0dGltZSwgaW50IHR5cGUpCisgeworLQlpZiAoc3RhcnR0aW1lIDw9IGVhcmx5X3RpbWUKKy0JCXx8ICh0aW1lY250ID09IDEgJiYgYXR0eXBlc1swXS5hdCA8IGVhcmx5X3RpbWUpKQorLQl7CistCQlnbXRvZmZzWzBdID0gZ210b2Zmc1t0eXBlXTsKKy0JCWlzZHN0c1swXSA9IGlzZHN0c1t0eXBlXTsKKy0JCXR0aXNzdGRzWzBdID0gdHRpc3N0ZHNbdHlwZV07CistCQl0dGlzZ210c1swXSA9IHR0aXNnbXRzW3R5cGVdOworLQkJaWYgKGFiYnJpbmRzW3R5cGVdICE9IDApCistCQkJc3RyY3B5KGNoYXJzLCAmY2hhcnNbYWJicmluZHNbdHlwZV1dKTsKKy0JCWFiYnJpbmRzWzBdID0gMDsKKy0JCWNoYXJjbnQgPSBzdHJsZW4oY2hhcnMpICsgMTsKKy0JCXR5cGVjbnQgPSAxOworLQkJdGltZWNudCA9IDA7CistCQl0eXBlID0gMDsKKy0JfQorIAlhdHR5cGVzID0gZ3Jvd2FsbG9jKGF0dHlwZXMsIHNpemVvZiAqYXR0eXBlcywgdGltZWNudCwgJnRpbWVjbnRfYWxsb2MpOworIAlhdHR5cGVzW3RpbWVjbnRdLmF0ID0gc3RhcnR0aW1lOworIAlhdHR5cGVzW3RpbWVjbnRdLmRvbnRtZXJnZSA9IGZhbHNlOworQEAgLTMzNjEsNyArMzM4Miw3IEBAIGlzX2FscGhhKGNoYXIgYSkKKyB9CisgCisgLyogSWYgQSBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyIGluIHRoZSBDIGxvY2FsZSwgcmV0dXJuIGl0cyBsb3dlcmNhc2UKKy0gKiBjb3VudGVycGFydC4gIE90aGVyd2lzZSwgcmV0dXJuIEEuICAqLworKyAgIGNvdW50ZXJwYXJ0LiAgT3RoZXJ3aXNlLCByZXR1cm4gQS4gICovCisgc3RhdGljIGNoYXIKKyBsb3dlcml0KGNoYXIgYSkKKyB7CitAQCAtMzYyOCw2ICszNjQ5LDE4IEBAIHJweXRpbWUoY29uc3Qgc3RydWN0IHJ1bGUgKnJwLCB6aWNfdCB3YW4KKyAJZGF5b2ZmID0gMDsKKyAJbSA9IFRNX0pBTlVBUlk7CisgCXkgPSBFUE9DSF9ZRUFSOworKwlpZiAoeSA8IHdhbnRlZHkpCisrCXsKKysJCXdhbnRlZHkgLT0geTsKKysJCWRheW9mZiA9ICh3YW50ZWR5IC8gWUVBUlNQRVJSRVBFQVQpICogKFNFQ1NQRVJSRVBFQVQgLyBTRUNTUEVSREFZKTsKKysJCXdhbnRlZHkgJT0gWUVBUlNQRVJSRVBFQVQ7CisrCQl3YW50ZWR5ICs9IHk7CisrCX0KKysJZWxzZSBpZiAod2FudGVkeSA8IDApCisrCXsKKysJCWRheW9mZiA9ICh3YW50ZWR5IC8gWUVBUlNQRVJSRVBFQVQpICogKFNFQ1NQRVJSRVBFQVQgLyBTRUNTUEVSREFZKTsKKysJCXdhbnRlZHkgJT0gWUVBUlNQRVJSRVBFQVQ7CisrCX0KKyAJd2hpbGUgKHdhbnRlZHkgIT0geSkKKyAJeworIAkJaWYgKHdhbnRlZHkgPiB5KQorQEAgLTM3MDYsNyArMzczOSw2IEBAIHdpbGwgbm90IHdvcmsgd2l0aCBwcmUtMjAwNCB2ZXJzaW9ucyBvZgorIAlpZiAoZGF5b2ZmID4gbWF4X3RpbWUgLyBTRUNTUEVSREFZKQorIAkJcmV0dXJuIG1heF90aW1lOworIAl0ID0gKHppY190KSBkYXlvZmYgKiBTRUNTUEVSREFZOworLQorIAlyZXR1cm4gdGFkZCh0LCBycC0+cl90b2QpOworIH0KKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVVwZGF0ZS10aW1lLXpvbmUtZGF0YS1maWxlcy10by10emRhdGEtcmVsZWFzZS0yMDE4Zi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVVwZGF0ZS10aW1lLXpvbmUtZGF0YS1maWxlcy10by10emRhdGEtcmVsZWFzZS0yMDE4Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWU3NjNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXBkYXRlLXRpbWUtem9uZS1kYXRhLWZpbGVzLXRvLXR6ZGF0YS1yZWxlYXNlLTIwMThmLnBhdGNoCkBAIC0wLDAgKzEsNjQ1MiBAQAorRnJvbSAxMzg3N2QzMGYyZWM5M2Y2MDQzOTM3Zjc2YWYyMDdkY2M2MTRhNGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVG9tIExhbmUgPHRnbEBzc3MucGdoLnBhLnVzPgorRGF0ZTogRnJpLCAxOSBPY3QgMjAxOCAxNzowMTozNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBVcGRhdGUgdGltZSB6b25lIGRhdGEgZmlsZXMgdG8gdHpkYXRhIHJlbGVhc2UgMjAxOGYuCisKK0RTVCBsYXcgY2hhbmdlcyBpbiBDaGlsZSwgRmlqaSwgYW5kIFJ1c3NpYSAoVm9sZ29ncmFkKS4KK0hpc3RvcmljYWwgY29ycmVjdGlvbnMgZm9yIENoaW5hLCBKYXBhbiwgTWFjYXUsIGFuZCBOb3J0aCBLb3JlYS4KKworTm90ZTogbGlrZSB0aGUgcHJldmlvdXMgdHpkYXRhIHVwZGF0ZSwgdGhpcyBpbnZvbHZlcyBhIGRlcHJlc3NpbmdseQorbGFyZ2UgYW1vdW50IG9mIHNlbWFudGljYWxseS1tZWFuaW5nbGVzcyBjaHVybiBpbiB0emRhdGEuemkuICBUaGF0CitpcyBhIGNvbnNlcXVlbmNlIG9mIHVwc3RyZWFtJ3MgZGF0YSBjb21wcmVzc2lvbiBtZXRob2QgYXNzaWduaW5nCit1bnN0YWJsZSBhYmJyZXZpYXRpb25zIHRvIERTVCBydWxlc2V0cy4gIEkgY29tcGxhaW5lZCBhYm91dCB0aGF0Cit0byB0aGVtIGxhc3QgdGltZSwgYW5kIHRoaXMgdmVyc2lvbiBub3cgdXNlcyBhbiBhc3NpZ25tZW50IG1ldGhvZAordGhhdCBwYXlzIHNvbWUgaGVlZCB0byBub3QgY2hhbmdpbmcgYWJicmV2aWF0aW9ucyB1bm5lY2Vzc2FyaWx5LgorU28gaG9wZWZ1bGx5LCB0aGF0J2xsIGJlIGJldHRlciBnb2luZyBmb3J3YXJkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgc3JjL3RpbWV6b25lL2RhdGEvdHpkYXRhLnppICAgICAgfCA1MjczICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL3RpbWV6b25lL2tub3duX2FiYnJldnMudHh0ICAgfCAgICAxICsKKyBzcmMvdGltZXpvbmUvdHpuYW1lcy9BbWVyaWNhLnR4dCB8ICAgIDMgKworIHNyYy90aW1lem9uZS90em5hbWVzL0FzaWEudHh0ICAgIHwgICAgNCArCisgc3JjL3RpbWV6b25lL3R6bmFtZXMvRGVmYXVsdCAgICAgfCAgICAzICsKKyBzcmMvdGltZXpvbmUvdHpuYW1lcy9QYWNpZmljLnR4dCB8ICAgIDMgKworIDYgZmlsZXMgY2hhbmdlZCwgMjY2MCBpbnNlcnRpb25zKCspLCAyNjI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RpbWV6b25lL2RhdGEvdHpkYXRhLnppIGIvc3JjL3RpbWV6b25lL2RhdGEvdHpkYXRhLnppCitpbmRleCBjNDcwMTEyLi42ZDk4OTAyIDEwMDY0NAorLS0tIGEvc3JjL3RpbWV6b25lL2RhdGEvdHpkYXRhLnppCisrKysgYi9zcmMvdGltZXpvbmUvZGF0YS90emRhdGEuemkKK0BAIC0xLDM2ICsxLDM2IEBACistIyB2ZXJzaW9uIDIwMThlCisrIyB2ZXJzaW9uIDIwMThmCisgIyBUaGlzIHppYyBpbnB1dCBmaWxlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLgorLVIgQSAxOTE2IG8gLSBKdW4gMTQgMjNzIDEgUworLVIgQSAxOTE2IDE5MTkgLSBPIFN1bj49MSAyM3MgMCAtCistUiBBIDE5MTcgbyAtIE1hciAyNCAyM3MgMSBTCistUiBBIDE5MTggbyAtIE1hciA5IDIzcyAxIFMKKy1SIEEgMTkxOSBvIC0gTWFyIDEgMjNzIDEgUworLVIgQSAxOTIwIG8gLSBGIDE0IDIzcyAxIFMKKy1SIEEgMTkyMCBvIC0gTyAyMyAyM3MgMCAtCistUiBBIDE5MjEgbyAtIE1hciAxNCAyM3MgMSBTCistUiBBIDE5MjEgbyAtIEp1biAyMSAyM3MgMCAtCistUiBBIDE5MzkgbyAtIFMgMTEgMjNzIDEgUworLVIgQSAxOTM5IG8gLSBOIDE5IDEgMCAtCistUiBBIDE5NDQgMTk0NSAtIEFwIE0+PTEgMiAxIFMKKy1SIEEgMTk0NCBvIC0gTyA4IDIgMCAtCistUiBBIDE5NDUgbyAtIFMgMTYgMSAwIC0KKy1SIEEgMTk3MSBvIC0gQXAgMjUgMjNzIDEgUworLVIgQSAxOTcxIG8gLSBTIDI2IDIzcyAwIC0KKy1SIEEgMTk3NyBvIC0gTWF5IDYgMCAxIFMKKy1SIEEgMTk3NyBvIC0gTyAyMSAwIDAgLQorLVIgQSAxOTc4IG8gLSBNYXIgMjQgMSAxIFMKKy1SIEEgMTk3OCBvIC0gUyAyMiAzIDAgLQorLVIgQSAxOTgwIG8gLSBBcCAyNSAwIDEgUworLVIgQSAxOTgwIG8gLSBPIDMxIDIgMCAtCisrUiBkIDE5MTYgbyAtIEp1biAxNCAyM3MgMSBTCisrUiBkIDE5MTYgMTkxOSAtIE8gU3VuPj0xIDIzcyAwIC0KKytSIGQgMTkxNyBvIC0gTWFyIDI0IDIzcyAxIFMKKytSIGQgMTkxOCBvIC0gTWFyIDkgMjNzIDEgUworK1IgZCAxOTE5IG8gLSBNYXIgMSAyM3MgMSBTCisrUiBkIDE5MjAgbyAtIEYgMTQgMjNzIDEgUworK1IgZCAxOTIwIG8gLSBPIDIzIDIzcyAwIC0KKytSIGQgMTkyMSBvIC0gTWFyIDE0IDIzcyAxIFMKKytSIGQgMTkyMSBvIC0gSnVuIDIxIDIzcyAwIC0KKytSIGQgMTkzOSBvIC0gUyAxMSAyM3MgMSBTCisrUiBkIDE5MzkgbyAtIE4gMTkgMSAwIC0KKytSIGQgMTk0NCAxOTQ1IC0gQXAgTT49MSAyIDEgUworK1IgZCAxOTQ0IG8gLSBPIDggMiAwIC0KKytSIGQgMTk0NSBvIC0gUyAxNiAxIDAgLQorK1IgZCAxOTcxIG8gLSBBcCAyNSAyM3MgMSBTCisrUiBkIDE5NzEgbyAtIFMgMjYgMjNzIDAgLQorK1IgZCAxOTc3IG8gLSBNYXkgNiAwIDEgUworK1IgZCAxOTc3IG8gLSBPIDIxIDAgMCAtCisrUiBkIDE5NzggbyAtIE1hciAyNCAxIDEgUworK1IgZCAxOTc4IG8gLSBTIDIyIDMgMCAtCisrUiBkIDE5ODAgbyAtIEFwIDI1IDAgMSBTCisrUiBkIDE5ODAgbyAtIE8gMzEgMiAwIC0KKyBaIEFmcmljYS9BbGdpZXJzIDA6MTI6MTIgLSBMTVQgMTg5MSBNYXIgMTUgMDoxCisgMDo5OjIxIC0gUE1UIDE5MTEgTWFyIDExCistMCBBIFdFJXNUIDE5NDAgRiAyNSAyCistMSBBIENFJXNUIDE5NDYgTyA3CisrMCBkIFdFJXNUIDE5NDAgRiAyNSAyCisrMSBkIENFJXNUIDE5NDYgTyA3CisgMCAtIFdFVCAxOTU2IEphIDI5CisgMSAtIENFVCAxOTYzIEFwIDE0CistMCBBIFdFJXNUIDE5NzcgTyAyMQorLTEgQSBDRSVzVCAxOTc5IE8gMjYKKy0wIEEgV0Ulc1QgMTk4MSBNYXkKKyswIGQgV0Ulc1QgMTk3NyBPIDIxCisrMSBkIENFJXNUIDE5NzkgTyAyNgorKzAgZCBXRSVzVCAxOTgxIE1heQorIDEgLSBDRVQKKyBaIEF0bGFudGljL0NhcGVfVmVyZGUgLTE6MzQ6NCAtIExNVCAxOTEyIEphIDEgMnUKKyAtMiAtIC0wMiAxOTQyIFMKK0BAIC01Miw0NCArNTIsNDQgQEAgTGkgQWZyaWNhL0FiaWRqYW4gQWZyaWNhL0xvbWUKKyBMaSBBZnJpY2EvQWJpZGphbiBBZnJpY2EvTm91YWtjaG90dAorIExpIEFmcmljYS9BYmlkamFuIEFmcmljYS9PdWFnYWRvdWdvdQorIExpIEFmcmljYS9BYmlkamFuIEF0bGFudGljL1N0X0hlbGVuYQorLVIgQiAxOTQwIG8gLSBKdWwgMTUgMCAxIFMKKy1SIEIgMTk0MCBvIC0gTyAxIDAgMCAtCistUiBCIDE5NDEgbyAtIEFwIDE1IDAgMSBTCistUiBCIDE5NDEgbyAtIFMgMTYgMCAwIC0KKy1SIEIgMTk0MiAxOTQ0IC0gQXAgMSAwIDEgUworLVIgQiAxOTQyIG8gLSBPIDI3IDAgMCAtCistUiBCIDE5NDMgMTk0NSAtIE4gMSAwIDAgLQorLVIgQiAxOTQ1IG8gLSBBcCAxNiAwIDEgUworLVIgQiAxOTU3IG8gLSBNYXkgMTAgMCAxIFMKKy1SIEIgMTk1NyAxOTU4IC0gTyAxIDAgMCAtCistUiBCIDE5NTggbyAtIE1heSAxIDAgMSBTCistUiBCIDE5NTkgMTk4MSAtIE1heSAxIDEgMSBTCistUiBCIDE5NTkgMTk2NSAtIFMgMzAgMyAwIC0KKy1SIEIgMTk2NiAxOTk0IC0gTyAxIDMgMCAtCistUiBCIDE5ODIgbyAtIEp1bCAyNSAxIDEgUworLVIgQiAxOTgzIG8gLSBKdWwgMTIgMSAxIFMKKy1SIEIgMTk4NCAxOTg4IC0gTWF5IDEgMSAxIFMKKy1SIEIgMTk4OSBvIC0gTWF5IDYgMSAxIFMKKy1SIEIgMTk5MCAxOTk0IC0gTWF5IDEgMSAxIFMKKy1SIEIgMTk5NSAyMDEwIC0gQXAgbGFzdEYgMHMgMSBTCistUiBCIDE5OTUgMjAwNSAtIFMgbGFzdFRoIDI0IDAgLQorLVIgQiAyMDA2IG8gLSBTIDIxIDI0IDAgLQorLVIgQiAyMDA3IG8gLSBTIFRoPj0xIDI0IDAgLQorLVIgQiAyMDA4IG8gLSBBdSBsYXN0VGggMjQgMCAtCistUiBCIDIwMDkgbyAtIEF1IDIwIDI0IDAgLQorLVIgQiAyMDEwIG8gLSBBdSAxMCAyNCAwIC0KKy1SIEIgMjAxMCBvIC0gUyA5IDI0IDEgUworLVIgQiAyMDEwIG8gLSBTIGxhc3RUaCAyNCAwIC0KKy1SIEIgMjAxNCBvIC0gTWF5IDE1IDI0IDEgUworLVIgQiAyMDE0IG8gLSBKdW4gMjYgMjQgMCAtCistUiBCIDIwMTQgbyAtIEp1bCAzMSAyNCAxIFMKKy1SIEIgMjAxNCBvIC0gUyBsYXN0VGggMjQgMCAtCisrUiBLIDE5NDAgbyAtIEp1bCAxNSAwIDEgUworK1IgSyAxOTQwIG8gLSBPIDEgMCAwIC0KKytSIEsgMTk0MSBvIC0gQXAgMTUgMCAxIFMKKytSIEsgMTk0MSBvIC0gUyAxNiAwIDAgLQorK1IgSyAxOTQyIDE5NDQgLSBBcCAxIDAgMSBTCisrUiBLIDE5NDIgbyAtIE8gMjcgMCAwIC0KKytSIEsgMTk0MyAxOTQ1IC0gTiAxIDAgMCAtCisrUiBLIDE5NDUgbyAtIEFwIDE2IDAgMSBTCisrUiBLIDE5NTcgbyAtIE1heSAxMCAwIDEgUworK1IgSyAxOTU3IDE5NTggLSBPIDEgMCAwIC0KKytSIEsgMTk1OCBvIC0gTWF5IDEgMCAxIFMKKytSIEsgMTk1OSAxOTgxIC0gTWF5IDEgMSAxIFMKKytSIEsgMTk1OSAxOTY1IC0gUyAzMCAzIDAgLQorK1IgSyAxOTY2IDE5OTQgLSBPIDEgMyAwIC0KKytSIEsgMTk4MiBvIC0gSnVsIDI1IDEgMSBTCisrUiBLIDE5ODMgbyAtIEp1bCAxMiAxIDEgUworK1IgSyAxOTg0IDE5ODggLSBNYXkgMSAxIDEgUworK1IgSyAxOTg5IG8gLSBNYXkgNiAxIDEgUworK1IgSyAxOTkwIDE5OTQgLSBNYXkgMSAxIDEgUworK1IgSyAxOTk1IDIwMTAgLSBBcCBsYXN0RiAwcyAxIFMKKytSIEsgMTk5NSAyMDA1IC0gUyBsYXN0VGggMjQgMCAtCisrUiBLIDIwMDYgbyAtIFMgMjEgMjQgMCAtCisrUiBLIDIwMDcgbyAtIFMgVGg+PTEgMjQgMCAtCisrUiBLIDIwMDggbyAtIEF1IGxhc3RUaCAyNCAwIC0KKytSIEsgMjAwOSBvIC0gQXUgMjAgMjQgMCAtCisrUiBLIDIwMTAgbyAtIEF1IDEwIDI0IDAgLQorK1IgSyAyMDEwIG8gLSBTIDkgMjQgMSBTCisrUiBLIDIwMTAgbyAtIFMgbGFzdFRoIDI0IDAgLQorK1IgSyAyMDE0IG8gLSBNYXkgMTUgMjQgMSBTCisrUiBLIDIwMTQgbyAtIEp1biAyNiAyNCAwIC0KKytSIEsgMjAxNCBvIC0gSnVsIDMxIDI0IDEgUworK1IgSyAyMDE0IG8gLSBTIGxhc3RUaCAyNCAwIC0KKyBaIEFmcmljYS9DYWlybyAyOjU6OSAtIExNVCAxOTAwIE8KKy0yIEIgRUUlc1QKKy1SIEMgMTkyMCAxOTQyIC0gUyAxIDAgMDoyMCAtCistUiBDIDE5MjAgMTk0MiAtIEQgMzEgMCAwIC0KKysyIEsgRUUlc1QKKytSIEdIIDE5MjAgMTk0MiAtIFMgMSAwIDA6MjAgLQorK1IgR0ggMTkyMCAxOTQyIC0gRCAzMSAwIDAgLQorIFogQWZyaWNhL0FjY3JhIC0wOjA6NTIgLSBMTVQgMTkxOAorLTAgQyBHTVQvKzAwMjAKKyswIEdIIEdNVC8rMDAyMAorIFogQWZyaWNhL0Jpc3NhdSAtMToyOjIwIC0gTE1UIDE5MTIgSmEgMSAxdQorIC0xIC0gLTAxIDE5NzUKKyAwIC0gR01UCitAQCAtMTExLDk5ICsxMTEsOTkgQEAgWiBBZnJpY2EvTW9ucm92aWEgLTA6NDM6OCAtIExNVCAxODgyCisgLTA6NDM6OCAtIE1NVCAxOTE5IE1hcgorIC0wOjQ0OjMwIC0gTU1UIDE5NzIgSmEgNworIDAgLSBHTVQKKy1SIEQgMTk1MSBvIC0gTyAxNCAyIDEgUworLVIgRCAxOTUyIG8gLSBKYSAxIDAgMCAtCistUiBEIDE5NTMgbyAtIE8gOSAyIDEgUworLVIgRCAxOTU0IG8gLSBKYSAxIDAgMCAtCistUiBEIDE5NTUgbyAtIFMgMzAgMCAxIFMKKy1SIEQgMTk1NiBvIC0gSmEgMSAwIDAgLQorLVIgRCAxOTgyIDE5ODQgLSBBcCAxIDAgMSBTCistUiBEIDE5ODIgMTk4NSAtIE8gMSAwIDAgLQorLVIgRCAxOTg1IG8gLSBBcCA2IDAgMSBTCistUiBEIDE5ODYgbyAtIEFwIDQgMCAxIFMKKy1SIEQgMTk4NiBvIC0gTyAzIDAgMCAtCistUiBEIDE5ODcgMTk4OSAtIEFwIDEgMCAxIFMKKy1SIEQgMTk4NyAxOTg5IC0gTyAxIDAgMCAtCistUiBEIDE5OTcgbyAtIEFwIDQgMCAxIFMKKy1SIEQgMTk5NyBvIC0gTyA0IDAgMCAtCistUiBEIDIwMTMgbyAtIE1hciBsYXN0RiAxIDEgUworLVIgRCAyMDEzIG8gLSBPIGxhc3RGIDIgMCAtCisrUiBMIDE5NTEgbyAtIE8gMTQgMiAxIFMKKytSIEwgMTk1MiBvIC0gSmEgMSAwIDAgLQorK1IgTCAxOTUzIG8gLSBPIDkgMiAxIFMKKytSIEwgMTk1NCBvIC0gSmEgMSAwIDAgLQorK1IgTCAxOTU1IG8gLSBTIDMwIDAgMSBTCisrUiBMIDE5NTYgbyAtIEphIDEgMCAwIC0KKytSIEwgMTk4MiAxOTg0IC0gQXAgMSAwIDEgUworK1IgTCAxOTgyIDE5ODUgLSBPIDEgMCAwIC0KKytSIEwgMTk4NSBvIC0gQXAgNiAwIDEgUworK1IgTCAxOTg2IG8gLSBBcCA0IDAgMSBTCisrUiBMIDE5ODYgbyAtIE8gMyAwIDAgLQorK1IgTCAxOTg3IDE5ODkgLSBBcCAxIDAgMSBTCisrUiBMIDE5ODcgMTk4OSAtIE8gMSAwIDAgLQorK1IgTCAxOTk3IG8gLSBBcCA0IDAgMSBTCisrUiBMIDE5OTcgbyAtIE8gNCAwIDAgLQorK1IgTCAyMDEzIG8gLSBNYXIgbGFzdEYgMSAxIFMKKytSIEwgMjAxMyBvIC0gTyBsYXN0RiAyIDAgLQorIFogQWZyaWNhL1RyaXBvbGkgMDo1Mjo0NCAtIExNVCAxOTIwCistMSBEIENFJXNUIDE5NTkKKysxIEwgQ0Ulc1QgMTk1OQorIDIgLSBFRVQgMTk4MgorLTEgRCBDRSVzVCAxOTkwIE1heSA0CisrMSBMIENFJXNUIDE5OTAgTWF5IDQKKyAyIC0gRUVUIDE5OTYgUyAzMAorLTEgRCBDRSVzVCAxOTk3IE8gNAorKzEgTCBDRSVzVCAxOTk3IE8gNAorIDIgLSBFRVQgMjAxMiBOIDEwIDIKKy0xIEQgQ0Ulc1QgMjAxMyBPIDI1IDIKKysxIEwgQ0Ulc1QgMjAxMyBPIDI1IDIKKyAyIC0gRUVUCistUiBFIDE5ODIgbyAtIE8gMTAgMCAxIC0KKy1SIEUgMTk4MyBvIC0gTWFyIDIxIDAgMCAtCistUiBFIDIwMDggbyAtIE8gbGFzdFN1biAyIDEgLQorLVIgRSAyMDA5IG8gLSBNYXIgbGFzdFN1biAyIDAgLQorK1IgTVUgMTk4MiBvIC0gTyAxMCAwIDEgLQorK1IgTVUgMTk4MyBvIC0gTWFyIDIxIDAgMCAtCisrUiBNVSAyMDA4IG8gLSBPIGxhc3RTdW4gMiAxIC0KKytSIE1VIDIwMDkgbyAtIE1hciBsYXN0U3VuIDIgMCAtCisgWiBJbmRpYW4vTWF1cml0aXVzIDM6NTAgLSBMTVQgMTkwNworLTQgRSArMDQvKzA1CistUiBGIDE5MzkgbyAtIFMgMTIgMCAxIFMKKy1SIEYgMTkzOSBvIC0gTiAxOSAwIDAgLQorLVIgRiAxOTQwIG8gLSBGIDI1IDAgMSBTCistUiBGIDE5NDUgbyAtIE4gMTggMCAwIC0KKy1SIEYgMTk1MCBvIC0gSnVuIDExIDAgMSBTCistUiBGIDE5NTAgbyAtIE8gMjkgMCAwIC0KKy1SIEYgMTk2NyBvIC0gSnVuIDMgMTIgMSBTCistUiBGIDE5NjcgbyAtIE8gMSAwIDAgLQorLVIgRiAxOTc0IG8gLSBKdW4gMjQgMCAxIFMKKy1SIEYgMTk3NCBvIC0gUyAxIDAgMCAtCistUiBGIDE5NzYgMTk3NyAtIE1heSAxIDAgMSBTCistUiBGIDE5NzYgbyAtIEF1IDEgMCAwIC0KKy1SIEYgMTk3NyBvIC0gUyAyOCAwIDAgLQorLVIgRiAxOTc4IG8gLSBKdW4gMSAwIDEgUworLVIgRiAxOTc4IG8gLSBBdSA0IDAgMCAtCistUiBGIDIwMDggbyAtIEp1biAxIDAgMSBTCistUiBGIDIwMDggbyAtIFMgMSAwIDAgLQorLVIgRiAyMDA5IG8gLSBKdW4gMSAwIDEgUworLVIgRiAyMDA5IG8gLSBBdSAyMSAwIDAgLQorLVIgRiAyMDEwIG8gLSBNYXkgMiAwIDEgUworLVIgRiAyMDEwIG8gLSBBdSA4IDAgMCAtCistUiBGIDIwMTEgbyAtIEFwIDMgMCAxIFMKKy1SIEYgMjAxMSBvIC0gSnVsIDMxIDAgMCAtCistUiBGIDIwMTIgMjAxMyAtIEFwIGxhc3RTdW4gMiAxIFMKKy1SIEYgMjAxMiBvIC0gSnVsIDIwIDMgMCAtCistUiBGIDIwMTIgbyAtIEF1IDIwIDIgMSBTCistUiBGIDIwMTIgbyAtIFMgMzAgMyAwIC0KKy1SIEYgMjAxMyBvIC0gSnVsIDcgMyAwIC0KKy1SIEYgMjAxMyBvIC0gQXUgMTAgMiAxIFMKKy1SIEYgMjAxMyBtYSAtIE8gbGFzdFN1biAzIDAgLQorLVIgRiAyMDE0IDIwMjEgLSBNYXIgbGFzdFN1biAyIDEgUworLVIgRiAyMDE0IG8gLSBKdW4gMjggMyAwIC0KKy1SIEYgMjAxNCBvIC0gQXUgMiAyIDEgUworLVIgRiAyMDE1IG8gLSBKdW4gMTQgMyAwIC0KKy1SIEYgMjAxNSBvIC0gSnVsIDE5IDIgMSBTCistUiBGIDIwMTYgbyAtIEp1biA1IDMgMCAtCistUiBGIDIwMTYgbyAtIEp1bCAxMCAyIDEgUworLVIgRiAyMDE3IG8gLSBNYXkgMjEgMyAwIC0KKy1SIEYgMjAxNyBvIC0gSnVsIDIgMiAxIFMKKy1SIEYgMjAxOCBvIC0gTWF5IDEzIDMgMCAtCistUiBGIDIwMTggbyAtIEp1biAxNyAyIDEgUworLVIgRiAyMDE5IG8gLSBNYXkgNSAzIDAgLQorLVIgRiAyMDE5IG8gLSBKdW4gOSAyIDEgUworLVIgRiAyMDIwIG8gLSBBcCAxOSAzIDAgLQorLVIgRiAyMDIwIG8gLSBNYXkgMjQgMiAxIFMKKy1SIEYgMjAyMSBvIC0gQXAgMTEgMyAwIC0KKy1SIEYgMjAyMSBvIC0gTWF5IDE2IDIgMSBTCistUiBGIDIwMjIgbyAtIE1heSA4IDIgMSBTCistUiBGIDIwMjMgbyAtIEFwIDIzIDIgMSBTCistUiBGIDIwMjQgbyAtIEFwIDE0IDIgMSBTCistUiBGIDIwMjUgbyAtIEFwIDYgMiAxIFMKKy1SIEYgMjAyNiBtYSAtIE1hciBsYXN0U3VuIDIgMSBTCistUiBGIDIwMzYgbyAtIE8gMTkgMyAwIC0KKy1SIEYgMjAzNyBvIC0gTyA0IDMgMCAtCisrNCBNVSArMDQvKzA1CisrUiBNIDE5MzkgbyAtIFMgMTIgMCAxIFMKKytSIE0gMTkzOSBvIC0gTiAxOSAwIDAgLQorK1IgTSAxOTQwIG8gLSBGIDI1IDAgMSBTCisrUiBNIDE5NDUgbyAtIE4gMTggMCAwIC0KKytSIE0gMTk1MCBvIC0gSnVuIDExIDAgMSBTCisrUiBNIDE5NTAgbyAtIE8gMjkgMCAwIC0KKytSIE0gMTk2NyBvIC0gSnVuIDMgMTIgMSBTCisrUiBNIDE5NjcgbyAtIE8gMSAwIDAgLQorK1IgTSAxOTc0IG8gLSBKdW4gMjQgMCAxIFMKKytSIE0gMTk3NCBvIC0gUyAxIDAgMCAtCisrUiBNIDE5NzYgMTk3NyAtIE1heSAxIDAgMSBTCisrUiBNIDE5NzYgbyAtIEF1IDEgMCAwIC0KKytSIE0gMTk3NyBvIC0gUyAyOCAwIDAgLQorK1IgTSAxOTc4IG8gLSBKdW4gMSAwIDEgUworK1IgTSAxOTc4IG8gLSBBdSA0IDAgMCAtCisrUiBNIDIwMDggbyAtIEp1biAxIDAgMSBTCisrUiBNIDIwMDggbyAtIFMgMSAwIDAgLQorK1IgTSAyMDA5IG8gLSBKdW4gMSAwIDEgUworK1IgTSAyMDA5IG8gLSBBdSAyMSAwIDAgLQorK1IgTSAyMDEwIG8gLSBNYXkgMiAwIDEgUworK1IgTSAyMDEwIG8gLSBBdSA4IDAgMCAtCisrUiBNIDIwMTEgbyAtIEFwIDMgMCAxIFMKKytSIE0gMjAxMSBvIC0gSnVsIDMxIDAgMCAtCisrUiBNIDIwMTIgMjAxMyAtIEFwIGxhc3RTdW4gMiAxIFMKKytSIE0gMjAxMiBvIC0gSnVsIDIwIDMgMCAtCisrUiBNIDIwMTIgbyAtIEF1IDIwIDIgMSBTCisrUiBNIDIwMTIgbyAtIFMgMzAgMyAwIC0KKytSIE0gMjAxMyBvIC0gSnVsIDcgMyAwIC0KKytSIE0gMjAxMyBvIC0gQXUgMTAgMiAxIFMKKytSIE0gMjAxMyBtYSAtIE8gbGFzdFN1biAzIDAgLQorK1IgTSAyMDE0IDIwMjEgLSBNYXIgbGFzdFN1biAyIDEgUworK1IgTSAyMDE0IG8gLSBKdW4gMjggMyAwIC0KKytSIE0gMjAxNCBvIC0gQXUgMiAyIDEgUworK1IgTSAyMDE1IG8gLSBKdW4gMTQgMyAwIC0KKytSIE0gMjAxNSBvIC0gSnVsIDE5IDIgMSBTCisrUiBNIDIwMTYgbyAtIEp1biA1IDMgMCAtCisrUiBNIDIwMTYgbyAtIEp1bCAxMCAyIDEgUworK1IgTSAyMDE3IG8gLSBNYXkgMjEgMyAwIC0KKytSIE0gMjAxNyBvIC0gSnVsIDIgMiAxIFMKKytSIE0gMjAxOCBvIC0gTWF5IDEzIDMgMCAtCisrUiBNIDIwMTggbyAtIEp1biAxNyAyIDEgUworK1IgTSAyMDE5IG8gLSBNYXkgNSAzIDAgLQorK1IgTSAyMDE5IG8gLSBKdW4gOSAyIDEgUworK1IgTSAyMDIwIG8gLSBBcCAxOSAzIDAgLQorK1IgTSAyMDIwIG8gLSBNYXkgMjQgMiAxIFMKKytSIE0gMjAyMSBvIC0gQXAgMTEgMyAwIC0KKytSIE0gMjAyMSBvIC0gTWF5IDE2IDIgMSBTCisrUiBNIDIwMjIgbyAtIE1heSA4IDIgMSBTCisrUiBNIDIwMjMgbyAtIEFwIDIzIDIgMSBTCisrUiBNIDIwMjQgbyAtIEFwIDE0IDIgMSBTCisrUiBNIDIwMjUgbyAtIEFwIDYgMiAxIFMKKytSIE0gMjAyNiBtYSAtIE1hciBsYXN0U3VuIDIgMSBTCisrUiBNIDIwMzYgbyAtIE8gMTkgMyAwIC0KKytSIE0gMjAzNyBvIC0gTyA0IDMgMCAtCisgWiBBZnJpY2EvQ2FzYWJsYW5jYSAtMDozMDoyMCAtIExNVCAxOTEzIE8gMjYKKy0wIEYgV0Ulc1QgMTk4NCBNYXIgMTYKKyswIE0gV0Ulc1QgMTk4NCBNYXIgMTYKKyAxIC0gQ0VUIDE5ODYKKy0wIEYgV0Ulc1QKKyswIE0gV0Ulc1QKKyBaIEFmcmljYS9FbF9BYWl1biAtMDo1Mjo0OCAtIExNVCAxOTM0CisgLTEgLSAtMDEgMTk3NiBBcCAxNAorLTAgRiBXRSVzVAorKzAgTSBXRSVzVAorIFogQWZyaWNhL01hcHV0byAyOjEwOjIwIC0gTE1UIDE5MDMgTWFyCisgMiAtIENBVAorIExpIEFmcmljYS9NYXB1dG8gQWZyaWNhL0JsYW50eXJlCitAQCAtMjEzLDE1ICsyMTMsMTUgQEAgTGkgQWZyaWNhL01hcHV0byBBZnJpY2EvSGFyYXJlCisgTGkgQWZyaWNhL01hcHV0byBBZnJpY2EvS2lnYWxpCisgTGkgQWZyaWNhL01hcHV0byBBZnJpY2EvTHVidW1iYXNoaQorIExpIEFmcmljYS9NYXB1dG8gQWZyaWNhL0x1c2FrYQorLVIgRyAxOTk0IG8gLSBNYXIgMjEgMCAtMSBXQVQKKy1SIEcgMTk5NCAyMDE3IC0gUyBTdW4+PTEgMiAwIENBVAorLVIgRyAxOTk1IDIwMTcgLSBBcCBTdW4+PTEgMiAtMSBXQVQKKytSIE5BIDE5OTQgbyAtIE1hciAyMSAwIC0xIFdBVAorK1IgTkEgMTk5NCAyMDE3IC0gUyBTdW4+PTEgMiAwIENBVAorK1IgTkEgMTk5NSAyMDE3IC0gQXAgU3VuPj0xIDIgLTEgV0FUCisgWiBBZnJpY2EvV2luZGhvZWsgMTo4OjI0IC0gTE1UIDE4OTIgRiA4CisgMTozMCAtICswMTMwIDE5MDMgTWFyCisgMiAtIFNBU1QgMTk0MiBTIDIwIDIKKyAyIDEgU0FTVCAxOTQzIE1hciAyMSAyCisgMiAtIFNBU1QgMTk5MCBNYXIgMjEKKy0yIEcgJXMKKysyIE5BICVzCisgWiBBZnJpY2EvTGFnb3MgMDoxMzozNiAtIExNVCAxOTE5IFMKKyAxIC0gV0FUCisgTGkgQWZyaWNhL0xhZ29zIEFmcmljYS9CYW5ndWkKK0BAIC0yNDEsNTIgKzI0MSw1MiBAQCBaIEFmcmljYS9TYW9fVG9tZSAwOjI2OjU2IC0gTE1UIDE4ODQKKyAxIC0gV0FUCisgWiBJbmRpYW4vTWFoZSAzOjQxOjQ4IC0gTE1UIDE5MDYgSnVuCisgNCAtICswNAorLVIgSCAxOTQyIDE5NDMgLSBTIFN1bj49MTUgMiAxIC0KKy1SIEggMTk0MyAxOTQ0IC0gTWFyIFN1bj49MTUgMiAwIC0KKytSIFNBIDE5NDIgMTk0MyAtIFMgU3VuPj0xNSAyIDEgLQorK1IgU0EgMTk0MyAxOTQ0IC0gTWFyIFN1bj49MTUgMiAwIC0KKyBaIEFmcmljYS9Kb2hhbm5lc2J1cmcgMTo1MiAtIExNVCAxODkyIEYgOAorIDE6MzAgLSBTQVNUIDE5MDMgTWFyCistMiBIIFNBU1QKKysyIFNBIFNBU1QKKyBMaSBBZnJpY2EvSm9oYW5uZXNidXJnIEFmcmljYS9NYXNlcnUKKyBMaSBBZnJpY2EvSm9oYW5uZXNidXJnIEFmcmljYS9NYmFiYW5lCistUiBJIDE5NzAgbyAtIE1heSAxIDAgMSBTCistUiBJIDE5NzAgMTk4NSAtIE8gMTUgMCAwIC0KKy1SIEkgMTk3MSBvIC0gQXAgMzAgMCAxIFMKKy1SIEkgMTk3MiAxOTg1IC0gQXAgbGFzdFN1biAwIDEgUworK1IgU0QgMTk3MCBvIC0gTWF5IDEgMCAxIFMKKytSIFNEIDE5NzAgMTk4NSAtIE8gMTUgMCAwIC0KKytSIFNEIDE5NzEgbyAtIEFwIDMwIDAgMSBTCisrUiBTRCAxOTcyIDE5ODUgLSBBcCBsYXN0U3VuIDAgMSBTCisgWiBBZnJpY2EvS2hhcnRvdW0gMjoxMDo4IC0gTE1UIDE5MzEKKy0yIEkgQ0Elc1QgMjAwMCBKYSAxNSAxMgorKzIgU0QgQ0Elc1QgMjAwMCBKYSAxNSAxMgorIDMgLSBFQVQgMjAxNyBOCisgMiAtIENBVAorIFogQWZyaWNhL0p1YmEgMjo2OjI4IC0gTE1UIDE5MzEKKy0yIEkgQ0Elc1QgMjAwMCBKYSAxNSAxMgorKzIgU0QgQ0Elc1QgMjAwMCBKYSAxNSAxMgorIDMgLSBFQVQKKy1SIEogMTkzOSBvIC0gQXAgMTUgMjNzIDEgUworLVIgSiAxOTM5IG8gLSBOIDE4IDIzcyAwIC0KKy1SIEogMTk0MCBvIC0gRiAyNSAyM3MgMSBTCistUiBKIDE5NDEgbyAtIE8gNiAwIDAgLQorLVIgSiAxOTQyIG8gLSBNYXIgOSAwIDEgUworLVIgSiAxOTQyIG8gLSBOIDIgMyAwIC0KKy1SIEogMTk0MyBvIC0gTWFyIDI5IDIgMSBTCistUiBKIDE5NDMgbyAtIEFwIDE3IDIgMCAtCistUiBKIDE5NDMgbyAtIEFwIDI1IDIgMSBTCistUiBKIDE5NDMgbyAtIE8gNCAyIDAgLQorLVIgSiAxOTQ0IDE5NDUgLSBBcCBNPj0xIDIgMSBTCistUiBKIDE5NDQgbyAtIE8gOCAwIDAgLQorLVIgSiAxOTQ1IG8gLSBTIDE2IDAgMCAtCistUiBKIDE5NzcgbyAtIEFwIDMwIDBzIDEgUworLVIgSiAxOTc3IG8gLSBTIDI0IDBzIDAgLQorLVIgSiAxOTc4IG8gLSBNYXkgMSAwcyAxIFMKKy1SIEogMTk3OCBvIC0gTyAxIDBzIDAgLQorLVIgSiAxOTg4IG8gLSBKdW4gMSAwcyAxIFMKKy1SIEogMTk4OCAxOTkwIC0gUyBsYXN0U3VuIDBzIDAgLQorLVIgSiAxOTg5IG8gLSBNYXIgMjYgMHMgMSBTCistUiBKIDE5OTAgbyAtIE1heSAxIDBzIDEgUworLVIgSiAyMDA1IG8gLSBNYXkgMSAwcyAxIFMKKy1SIEogMjAwNSBvIC0gUyAzMCAxcyAwIC0KKy1SIEogMjAwNiAyMDA4IC0gTWFyIGxhc3RTdW4gMnMgMSBTCistUiBKIDIwMDYgMjAwOCAtIE8gbGFzdFN1biAycyAwIC0KKytSIG4gMTkzOSBvIC0gQXAgMTUgMjNzIDEgUworK1IgbiAxOTM5IG8gLSBOIDE4IDIzcyAwIC0KKytSIG4gMTk0MCBvIC0gRiAyNSAyM3MgMSBTCisrUiBuIDE5NDEgbyAtIE8gNiAwIDAgLQorK1IgbiAxOTQyIG8gLSBNYXIgOSAwIDEgUworK1IgbiAxOTQyIG8gLSBOIDIgMyAwIC0KKytSIG4gMTk0MyBvIC0gTWFyIDI5IDIgMSBTCisrUiBuIDE5NDMgbyAtIEFwIDE3IDIgMCAtCisrUiBuIDE5NDMgbyAtIEFwIDI1IDIgMSBTCisrUiBuIDE5NDMgbyAtIE8gNCAyIDAgLQorK1IgbiAxOTQ0IDE5NDUgLSBBcCBNPj0xIDIgMSBTCisrUiBuIDE5NDQgbyAtIE8gOCAwIDAgLQorK1IgbiAxOTQ1IG8gLSBTIDE2IDAgMCAtCisrUiBuIDE5NzcgbyAtIEFwIDMwIDBzIDEgUworK1IgbiAxOTc3IG8gLSBTIDI0IDBzIDAgLQorK1IgbiAxOTc4IG8gLSBNYXkgMSAwcyAxIFMKKytSIG4gMTk3OCBvIC0gTyAxIDBzIDAgLQorK1IgbiAxOTg4IG8gLSBKdW4gMSAwcyAxIFMKKytSIG4gMTk4OCAxOTkwIC0gUyBsYXN0U3VuIDBzIDAgLQorK1IgbiAxOTg5IG8gLSBNYXIgMjYgMHMgMSBTCisrUiBuIDE5OTAgbyAtIE1heSAxIDBzIDEgUworK1IgbiAyMDA1IG8gLSBNYXkgMSAwcyAxIFMKKytSIG4gMjAwNSBvIC0gUyAzMCAxcyAwIC0KKytSIG4gMjAwNiAyMDA4IC0gTWFyIGxhc3RTdW4gMnMgMSBTCisrUiBuIDIwMDYgMjAwOCAtIE8gbGFzdFN1biAycyAwIC0KKyBaIEFmcmljYS9UdW5pcyAwOjQwOjQ0IC0gTE1UIDE4ODEgTWF5IDEyCisgMDo5OjIxIC0gUE1UIDE5MTEgTWFyIDExCistMSBKIENFJXNUCisrMSBuIENFJXNUCisgWiBBbnRhcmN0aWNhL0Nhc2V5IDAgLSAtMDAgMTk2OQorIDggLSArMDggMjAwOSBPIDE4IDIKKyAxMSAtICsxMSAyMDEwIE1hciA1IDIKK0BAIC0zMTQsMTAgKzMxNCwxMCBAQCBaIEFudGFyY3RpY2EvRHVtb250RFVydmlsbGUgMCAtIC0wMCAxOTQ3CisgMTAgLSArMTAKKyBaIEFudGFyY3RpY2EvU3lvd2EgMCAtIC0wMCAxOTU3IEphIDI5CisgMyAtICswMworLVIgSyAyMDA1IG1hIC0gTWFyIGxhc3RTdW4gMXUgMiArMDIKKy1SIEsgMjAwNCBtYSAtIE8gbGFzdFN1biAxdSAwICswMAorK1IgVHIgMjAwNSBtYSAtIE1hciBsYXN0U3VuIDF1IDIgKzAyCisrUiBUciAyMDA0IG1hIC0gTyBsYXN0U3VuIDF1IDAgKzAwCisgWiBBbnRhcmN0aWNhL1Ryb2xsIDAgLSAtMDAgMjAwNSBGIDEyCistMCBLICVzCisrMCBUciAlcworIFogQW50YXJjdGljYS9Wb3N0b2sgMCAtIC0wMCAxOTU3IEQgMTYKKyA2IC0gKzA2CisgWiBBbnRhcmN0aWNhL1JvdGhlcmEgMCAtIC0wMCAxOTc2IEQKK0BAIC0zMjUsMzMgKzMyNSwzMyBAQCBaIEFudGFyY3RpY2EvUm90aGVyYSAwIC0gLTAwIDE5NzYgRAorIFogQXNpYS9LYWJ1bCA0OjM2OjQ4IC0gTE1UIDE4OTAKKyA0IC0gKzA0IDE5NDUKKyA0OjMwIC0gKzA0MzAKKy1SIEwgMjAxMSBvIC0gTWFyIGxhc3RTdW4gMnMgMSAtCistUiBMIDIwMTEgbyAtIE8gbGFzdFN1biAycyAwIC0KKytSIEFNIDIwMTEgbyAtIE1hciBsYXN0U3VuIDJzIDEgLQorK1IgQU0gMjAxMSBvIC0gTyBsYXN0U3VuIDJzIDAgLQorIFogQXNpYS9ZZXJldmFuIDI6NTggLSBMTVQgMTkyNCBNYXkgMgorIDMgLSArMDMgMTk1NyBNYXIKKy00IE0gKzA0LyswNSAxOTkxIE1hciAzMSAycworLTMgTSArMDMvKzA0IDE5OTUgUyAyNCAycworKzQgUiArMDQvKzA1IDE5OTEgTWFyIDMxIDJzCisrMyBSICswMy8rMDQgMTk5NSBTIDI0IDJzCisgNCAtICswNCAxOTk3CistNCBNICswNC8rMDUgMjAxMQorLTQgTCArMDQvKzA1CistUiBOIDE5OTcgMjAxNSAtIE1hciBsYXN0U3VuIDQgMSAtCistUiBOIDE5OTcgMjAxNSAtIE8gbGFzdFN1biA1IDAgLQorKzQgUiArMDQvKzA1IDIwMTEKKys0IEFNICswNC8rMDUKKytSIEFaIDE5OTcgMjAxNSAtIE1hciBsYXN0U3VuIDQgMSAtCisrUiBBWiAxOTk3IDIwMTUgLSBPIGxhc3RTdW4gNSAwIC0KKyBaIEFzaWEvQmFrdSAzOjE5OjI0IC0gTE1UIDE5MjQgTWF5IDIKKyAzIC0gKzAzIDE5NTcgTWFyCistNCBNICswNC8rMDUgMTk5MSBNYXIgMzEgMnMKKy0zIE0gKzAzLyswNCAxOTkyIFMgbGFzdFN1biAycworKzQgUiArMDQvKzA1IDE5OTEgTWFyIDMxIDJzCisrMyBSICswMy8rMDQgMTk5MiBTIGxhc3RTdW4gMnMKKyA0IC0gKzA0IDE5OTYKKy00IE8gKzA0LyswNSAxOTk3CistNCBOICswNC8rMDUKKy1SIFAgMjAwOSBvIC0gSnVuIDE5IDIzIDEgLQorLVIgUCAyMDA5IG8gLSBEIDMxIDI0IDAgLQorKzQgRSArMDQvKzA1IDE5OTcKKys0IEFaICswNC8rMDUKKytSIEJEIDIwMDkgbyAtIEp1biAxOSAyMyAxIC0KKytSIEJEIDIwMDkgbyAtIEQgMzEgMjQgMCAtCisgWiBBc2lhL0RoYWthIDY6MTo0MCAtIExNVCAxODkwCisgNTo1MzoyMCAtIEhNVCAxOTQxIE8KKyA2OjMwIC0gKzA2MzAgMTk0MiBNYXkgMTUKKyA1OjMwIC0gKzA1MzAgMTk0MiBTCisgNjozMCAtICswNjMwIDE5NTEgUyAzMAorIDYgLSArMDYgMjAwOQorLTYgUCArMDYvKzA3CisrNiBCRCArMDYvKzA3CisgWiBBc2lhL1RoaW1waHUgNTo1ODozNiAtIExNVCAxOTQ3IEF1IDE1CisgNTozMCAtICswNTMwIDE5ODcgTworIDYgLSArMDYKK0BAIC0zNjYsMTAzICszNjYsMTI3IEBAIFogQXNpYS9ZYW5nb24gNjoyNDo0NyAtIExNVCAxODgwCisgNjozMCAtICswNjMwIDE5NDIgTWF5CisgOSAtICswOSAxOTQ1IE1heSAzCisgNjozMCAtICswNjMwCistUiBRIDE5NDAgbyAtIEp1biAzIDAgMSBECistUiBRIDE5NDAgMTk0MSAtIE8gMSAwIDAgUworLVIgUSAxOTQxIG8gLSBNYXIgMTYgMCAxIEQKKy1SIFIgMTk4NiBvIC0gTWF5IDQgMCAxIEQKKy1SIFIgMTk4NiAxOTkxIC0gUyBTdW4+PTExIDAgMCBTCistUiBSIDE5ODcgMTk5MSAtIEFwIFN1bj49MTAgMCAxIEQKKytSIFNoIDE5NDAgbyAtIEp1biAxIDAgMSBECisrUiBTaCAxOTQwIG8gLSBPIDEyIDI0IDAgUworK1IgU2ggMTk0MSBvIC0gTWFyIDE1IDAgMSBECisrUiBTaCAxOTQxIG8gLSBOIDEgMjQgMCBTCisrUiBTaCAxOTQyIG8gLSBKYSAzMSAwIDEgRAorK1IgU2ggMTk0NSBvIC0gUyAxIDI0IDAgUworK1IgU2ggMTk0NiBvIC0gTWF5IDE1IDAgMSBECisrUiBTaCAxOTQ2IG8gLSBTIDMwIDI0IDAgUworK1IgU2ggMTk0NyBvIC0gQXAgMTUgMCAxIEQKKytSIFNoIDE5NDcgbyAtIE8gMzEgMjQgMCBTCisrUiBTaCAxOTQ4IDE5NDkgLSBNYXkgMSAwIDEgRAorK1IgU2ggMTk0OCAxOTQ5IC0gUyAzMCAyNCAwIFMKKytSIENOIDE5ODYgbyAtIE1heSA0IDIgMSBECisrUiBDTiAxOTg2IDE5OTEgLSBTIFN1bj49MTEgMiAwIFMKKytSIENOIDE5ODcgMTk5MSAtIEFwIFN1bj49MTEgMiAxIEQKKyBaIEFzaWEvU2hhbmdoYWkgODo1OjQzIC0gTE1UIDE5MDEKKy04IFEgQyVzVCAxOTQ5CistOCBSIEMlc1QKKys4IFNoIEMlc1QgMTk0OSBNYXkgMjgKKys4IENOIEMlc1QKKyBaIEFzaWEvVXJ1bXFpIDU6NTA6MjAgLSBMTVQgMTkyOAorIDYgLSArMDYKKy1SIFMgMTk0MSBvIC0gQXAgMSAzOjMwIDEgUworLVIgUyAxOTQxIG8gLSBTIDMwIDM6MzAgMCAtCistUiBTIDE5NDYgbyAtIEFwIDIwIDM6MzAgMSBTCistUiBTIDE5NDYgbyAtIEQgMSAzOjMwIDAgLQorLVIgUyAxOTQ3IG8gLSBBcCAxMyAzOjMwIDEgUworLVIgUyAxOTQ3IG8gLSBEIDMwIDM6MzAgMCAtCistUiBTIDE5NDggbyAtIE1heSAyIDM6MzAgMSBTCistUiBTIDE5NDggMTk1MSAtIE8gbGFzdFN1biAzOjMwIDAgLQorLVIgUyAxOTUyIG8gLSBPIDI1IDM6MzAgMCAtCistUiBTIDE5NDkgMTk1MyAtIEFwIFN1bj49MSAzOjMwIDEgUworLVIgUyAxOTUzIG8gLSBOIDEgMzozMCAwIC0KKy1SIFMgMTk1NCAxOTY0IC0gTWFyIFN1bj49MTggMzozMCAxIFMKKy1SIFMgMTk1NCBvIC0gTyAzMSAzOjMwIDAgLQorLVIgUyAxOTU1IDE5NjQgLSBOIFN1bj49MSAzOjMwIDAgLQorLVIgUyAxOTY1IDE5NzYgLSBBcCBTdW4+PTE2IDM6MzAgMSBTCistUiBTIDE5NjUgMTk3NiAtIE8gU3VuPj0xNiAzOjMwIDAgLQorLVIgUyAxOTczIG8gLSBEIDMwIDM6MzAgMSBTCistUiBTIDE5NzkgbyAtIE1heSBTdW4+PTggMzozMCAxIFMKKy1SIFMgMTk3OSBvIC0gTyBTdW4+PTE2IDM6MzAgMCAtCisrUiBISyAxOTQxIG8gLSBBcCAxIDM6MzAgMSBTCisrUiBISyAxOTQxIG8gLSBTIDMwIDM6MzAgMCAtCisrUiBISyAxOTQ2IG8gLSBBcCAyMCAzOjMwIDEgUworK1IgSEsgMTk0NiBvIC0gRCAxIDM6MzAgMCAtCisrUiBISyAxOTQ3IG8gLSBBcCAxMyAzOjMwIDEgUworK1IgSEsgMTk0NyBvIC0gRCAzMCAzOjMwIDAgLQorK1IgSEsgMTk0OCBvIC0gTWF5IDIgMzozMCAxIFMKKytSIEhLIDE5NDggMTk1MSAtIE8gbGFzdFN1biAzOjMwIDAgLQorK1IgSEsgMTk1MiBvIC0gTyAyNSAzOjMwIDAgLQorK1IgSEsgMTk0OSAxOTUzIC0gQXAgU3VuPj0xIDM6MzAgMSBTCisrUiBISyAxOTUzIG8gLSBOIDEgMzozMCAwIC0KKytSIEhLIDE5NTQgMTk2NCAtIE1hciBTdW4+PTE4IDM6MzAgMSBTCisrUiBISyAxOTU0IG8gLSBPIDMxIDM6MzAgMCAtCisrUiBISyAxOTU1IDE5NjQgLSBOIFN1bj49MSAzOjMwIDAgLQorK1IgSEsgMTk2NSAxOTc2IC0gQXAgU3VuPj0xNiAzOjMwIDEgUworK1IgSEsgMTk2NSAxOTc2IC0gTyBTdW4+PTE2IDM6MzAgMCAtCisrUiBISyAxOTczIG8gLSBEIDMwIDM6MzAgMSBTCisrUiBISyAxOTc5IG8gLSBNYXkgU3VuPj04IDM6MzAgMSBTCisrUiBISyAxOTc5IG8gLSBPIFN1bj49MTYgMzozMCAwIC0KKyBaIEFzaWEvSG9uZ19Lb25nIDc6MzY6NDIgLSBMTVQgMTkwNCBPIDMwCistOCBTIEhLJXNUIDE5NDEgRCAyNQorKzggSEsgSEslc1QgMTk0MSBEIDI1CisgOSAtIEpTVCAxOTQ1IFMgMTUKKy04IFMgSEslc1QKKy1SIFQgMTk0NiBvIC0gTWF5IDE1IDAgMSBECistUiBUIDE5NDYgbyAtIE8gMSAwIDAgUworLVIgVCAxOTQ3IG8gLSBBcCAxNSAwIDEgRAorLVIgVCAxOTQ3IG8gLSBOIDEgMCAwIFMKKy1SIFQgMTk0OCAxOTUxIC0gTWF5IDEgMCAxIEQKKy1SIFQgMTk0OCAxOTUxIC0gTyAxIDAgMCBTCistUiBUIDE5NTIgbyAtIE1hciAxIDAgMSBECistUiBUIDE5NTIgMTk1NCAtIE4gMSAwIDAgUworLVIgVCAxOTUzIDE5NTkgLSBBcCAxIDAgMSBECistUiBUIDE5NTUgMTk2MSAtIE8gMSAwIDAgUworLVIgVCAxOTYwIDE5NjEgLSBKdW4gMSAwIDEgRAorLVIgVCAxOTc0IDE5NzUgLSBBcCAxIDAgMSBECistUiBUIDE5NzQgMTk3NSAtIE8gMSAwIDAgUworLVIgVCAxOTc5IG8gLSBKdWwgMSAwIDEgRAorLVIgVCAxOTc5IG8gLSBPIDEgMCAwIFMKKys4IEhLIEhLJXNUCisrUiBmIDE5NDYgbyAtIE1heSAxNSAwIDEgRAorK1IgZiAxOTQ2IG8gLSBPIDEgMCAwIFMKKytSIGYgMTk0NyBvIC0gQXAgMTUgMCAxIEQKKytSIGYgMTk0NyBvIC0gTiAxIDAgMCBTCisrUiBmIDE5NDggMTk1MSAtIE1heSAxIDAgMSBECisrUiBmIDE5NDggMTk1MSAtIE8gMSAwIDAgUworK1IgZiAxOTUyIG8gLSBNYXIgMSAwIDEgRAorK1IgZiAxOTUyIDE5NTQgLSBOIDEgMCAwIFMKKytSIGYgMTk1MyAxOTU5IC0gQXAgMSAwIDEgRAorK1IgZiAxOTU1IDE5NjEgLSBPIDEgMCAwIFMKKytSIGYgMTk2MCAxOTYxIC0gSnVuIDEgMCAxIEQKKytSIGYgMTk3NCAxOTc1IC0gQXAgMSAwIDEgRAorK1IgZiAxOTc0IDE5NzUgLSBPIDEgMCAwIFMKKytSIGYgMTk3OSBvIC0gSnVsIDEgMCAxIEQKKytSIGYgMTk3OSBvIC0gTyAxIDAgMCBTCisgWiBBc2lhL1RhaXBlaSA4OjYgLSBMTVQgMTg5NgorIDggLSBDU1QgMTkzNyBPCisgOSAtIEpTVCAxOTQ1IFMgMjEgMQorLTggVCBDJXNUCistUiBVIDE5NjEgMTk2MiAtIE1hciBTdW4+PTE2IDM6MzAgMSBECistUiBVIDE5NjEgMTk2NCAtIE4gU3VuPj0xIDM6MzAgMCBTCistUiBVIDE5NjMgbyAtIE1hciBTdW4+PTE2IDAgMSBECistUiBVIDE5NjQgbyAtIE1hciBTdW4+PTE2IDM6MzAgMSBECistUiBVIDE5NjUgbyAtIE1hciBTdW4+PTE2IDAgMSBECistUiBVIDE5NjUgbyAtIE8gMzEgMCAwIFMKKy1SIFUgMTk2NiAxOTcxIC0gQXAgU3VuPj0xNiAzOjMwIDEgRAorLVIgVSAxOTY2IDE5NzEgLSBPIFN1bj49MTYgMzozMCAwIFMKKy1SIFUgMTk3MiAxOTc0IC0gQXAgU3VuPj0xNSAwIDEgRAorLVIgVSAxOTcyIDE5NzMgLSBPIFN1bj49MTUgMCAwIFMKKy1SIFUgMTk3NCAxOTc3IC0gTyBTdW4+PTE1IDM6MzAgMCBTCistUiBVIDE5NzUgMTk3NyAtIEFwIFN1bj49MTUgMzozMCAxIEQKKy1SIFUgMTk3OCAxOTgwIC0gQXAgU3VuPj0xNSAwIDEgRAorLVIgVSAxOTc4IDE5ODAgLSBPIFN1bj49MTUgMCAwIFMKKy1aIEFzaWEvTWFjYXUgNzozNDoyMCAtIExNVCAxOTExIEQgMzEgMTZ1CistOCBVIEMlc1QKKy1SIFYgMTk3NSBvIC0gQXAgMTMgMCAxIFMKKy1SIFYgMTk3NSBvIC0gTyAxMiAwIDAgLQorLVIgViAxOTc2IG8gLSBNYXkgMTUgMCAxIFMKKy1SIFYgMTk3NiBvIC0gTyAxMSAwIDAgLQorLVIgViAxOTc3IDE5ODAgLSBBcCBTdW4+PTEgMCAxIFMKKy1SIFYgMTk3NyBvIC0gUyAyNSAwIDAgLQorLVIgViAxOTc4IG8gLSBPIDIgMCAwIC0KKy1SIFYgMTk3OSAxOTk3IC0gUyBsYXN0U3VuIDAgMCAtCistUiBWIDE5ODEgMTk5OCAtIE1hciBsYXN0U3VuIDAgMSBTCisrOCBmIEMlc1QKKytSIF8gMTk0MiAxOTQzIC0gQXAgMzAgMjMgMSAtCisrUiBfIDE5NDIgbyAtIE4gMTcgMjMgMCAtCisrUiBfIDE5NDMgbyAtIFMgMzAgMjMgMCBTCisrUiBfIDE5NDYgbyAtIEFwIDMwIDIzcyAxIEQKKytSIF8gMTk0NiBvIC0gUyAzMCAyM3MgMCBTCisrUiBfIDE5NDcgbyAtIEFwIDE5IDIzcyAxIEQKKytSIF8gMTk0NyBvIC0gTiAzMCAyM3MgMCBTCisrUiBfIDE5NDggbyAtIE1heSAyIDIzcyAxIEQKKytSIF8gMTk0OCBvIC0gTyAzMSAyM3MgMCBTCisrUiBfIDE5NDkgMTk1MCAtIEFwIFNhdD49MSAyM3MgMSBECisrUiBfIDE5NDkgMTk1MCAtIE8gbGFzdFNhdCAyM3MgMCBTCisrUiBfIDE5NTEgbyAtIE1hciAzMSAyM3MgMSBECisrUiBfIDE5NTEgbyAtIE8gMjggMjNzIDAgUworK1IgXyAxOTUyIDE5NTMgLSBBcCBTYXQ+PTEgMjNzIDEgRAorK1IgXyAxOTUyIG8gLSBOIDEgMjNzIDAgUworK1IgXyAxOTUzIDE5NTQgLSBPIGxhc3RTYXQgMjNzIDAgUworK1IgXyAxOTU0IDE5NTYgLSBNYXIgU2F0Pj0xNyAyM3MgMSBECisrUiBfIDE5NTUgbyAtIE4gNSAyM3MgMCBTCisrUiBfIDE5NTYgMTk2NCAtIE4gU3VuPj0xIDM6MzAgMCBTCisrUiBfIDE5NTcgMTk2NCAtIE1hciBTdW4+PTE4IDM6MzAgMSBECisrUiBfIDE5NjUgMTk3MyAtIEFwIFN1bj49MTYgMzozMCAxIEQKKytSIF8gMTk2NSAxOTY2IC0gTyBTdW4+PTE2IDI6MzAgMCBTCisrUiBfIDE5NjcgMTk3NiAtIE8gU3VuPj0xNiAzOjMwIDAgUworK1IgXyAxOTczIG8gLSBEIDMwIDM6MzAgMSBECisrUiBfIDE5NzUgMTk3NiAtIEFwIFN1bj49MTYgMzozMCAxIEQKKytSIF8gMTk3OSBvIC0gTWF5IDEzIDM6MzAgMSBECisrUiBfIDE5NzkgbyAtIE8gU3VuPj0xNiAzOjMwIDAgUworK1ogQXNpYS9NYWNhdSA3OjM0OjEwIC0gTE1UIDE5MDQgTyAzMAorKzggLSBDU1QgMTk0MSBEIDIxIDIzCisrOSBfICswOS8rMTAgMTk0NSBTIDMwIDI0CisrOCBfIEMlc1QKKytSIENZIDE5NzUgbyAtIEFwIDEzIDAgMSBTCisrUiBDWSAxOTc1IG8gLSBPIDEyIDAgMCAtCisrUiBDWSAxOTc2IG8gLSBNYXkgMTUgMCAxIFMKKytSIENZIDE5NzYgbyAtIE8gMTEgMCAwIC0KKytSIENZIDE5NzcgMTk4MCAtIEFwIFN1bj49MSAwIDEgUworK1IgQ1kgMTk3NyBvIC0gUyAyNSAwIDAgLQorK1IgQ1kgMTk3OCBvIC0gTyAyIDAgMCAtCisrUiBDWSAxOTc5IDE5OTcgLSBTIGxhc3RTdW4gMCAwIC0KKytSIENZIDE5ODEgMTk5OCAtIE1hciBsYXN0U3VuIDAgMSBTCisgWiBBc2lhL05pY29zaWEgMjoxMzoyOCAtIExNVCAxOTIxIE4gMTQKKy0yIFYgRUUlc1QgMTk5OCBTCistMiBPIEVFJXNUCisrMiBDWSBFRSVzVCAxOTk4IFMKKysyIEUgRUUlc1QKKyBaIEFzaWEvRmFtYWd1c3RhIDI6MTU6NDggLSBMTVQgMTkyMSBOIDE0CistMiBWIEVFJXNUIDE5OTggUworLTIgTyBFRSVzVCAyMDE2IFMgOAorKzIgQ1kgRUUlc1QgMTk5OCBTCisrMiBFIEVFJXNUIDIwMTYgUyA4CisgMyAtICswMyAyMDE3IE8gMjkgMXUKKy0yIE8gRUUlc1QKKysyIEUgRUUlc1QKKyBMaSBBc2lhL05pY29zaWEgRXVyb3BlL05pY29zaWEKKyBaIEFzaWEvVGJpbGlzaSAyOjU5OjExIC0gTE1UIDE4ODAKKyAyOjU5OjExIC0gVEJNVCAxOTI0IE1heSAyCisgMyAtICswMyAxOTU3IE1hcgorLTQgTSArMDQvKzA1IDE5OTEgTWFyIDMxIDJzCistMyBNICswMy8rMDQgMTk5MgorLTMgVyArMDMvKzA0IDE5OTQgUyBsYXN0U3VuCistNCBXICswNC8rMDUgMTk5NiBPIGxhc3RTdW4KKys0IFIgKzA0LyswNSAxOTkxIE1hciAzMSAycworKzMgUiArMDMvKzA0IDE5OTIKKyszIGUgKzAzLyswNCAxOTk0IFMgbGFzdFN1bgorKzQgZSArMDQvKzA1IDE5OTYgTyBsYXN0U3VuCisgNCAxICswNSAxOTk3IE1hciBsYXN0U3VuCistNCBXICswNC8rMDUgMjAwNCBKdW4gMjcKKy0zIE0gKzAzLyswNCAyMDA1IE1hciBsYXN0U3VuIDIKKys0IGUgKzA0LyswNSAyMDA0IEp1biAyNworKzMgUiArMDMvKzA0IDIwMDUgTWFyIGxhc3RTdW4gMgorIDQgLSArMDQKKyBaIEFzaWEvRGlsaSA4OjIyOjIwIC0gTE1UIDE5MTIKKyA4IC0gKzA4IDE5NDIgRiAyMSAyMworQEAgLTUwNCw3MiArNTI4LDcyIEBAIFogQXNpYS9KYXlhcHVyYSA5OjIyOjQ4IC0gTE1UIDE5MzIgTgorIDkgLSArMDkgMTk0NCBTCisgOTozMCAtICswOTMwIDE5NjQKKyA5IC0gV0lUCistUiBYIDE5NzggMTk4MCAtIE1hciAyMSAwIDEgLQorLVIgWCAxOTc4IG8gLSBPIDIxIDAgMCAtCistUiBYIDE5NzkgbyAtIFMgMTkgMCAwIC0KKy1SIFggMTk4MCBvIC0gUyAyMyAwIDAgLQorLVIgWCAxOTkxIG8gLSBNYXkgMyAwIDEgLQorLVIgWCAxOTkyIDE5OTUgLSBNYXIgMjIgMCAxIC0KKy1SIFggMTk5MSAxOTk1IC0gUyAyMiAwIDAgLQorLVIgWCAxOTk2IG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMTk5NiBvIC0gUyAyMSAwIDAgLQorLVIgWCAxOTk3IDE5OTkgLSBNYXIgMjIgMCAxIC0KKy1SIFggMTk5NyAxOTk5IC0gUyAyMiAwIDAgLQorLVIgWCAyMDAwIG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAwMCBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDAxIDIwMDMgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAwMSAyMDAzIC0gUyAyMiAwIDAgLQorLVIgWCAyMDA0IG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAwNCBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDA1IG8gLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAwNSBvIC0gUyAyMiAwIDAgLQorLVIgWCAyMDA4IG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAwOCBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDA5IDIwMTEgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAwOSAyMDExIC0gUyAyMiAwIDAgLQorLVIgWCAyMDEyIG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAxMiBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDEzIDIwMTUgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAxMyAyMDE1IC0gUyAyMiAwIDAgLQorLVIgWCAyMDE2IG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAxNiBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDE3IDIwMTkgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAxNyAyMDE5IC0gUyAyMiAwIDAgLQorLVIgWCAyMDIwIG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAyMCBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDIxIDIwMjMgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAyMSAyMDIzIC0gUyAyMiAwIDAgLQorLVIgWCAyMDI0IG8gLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAyNCBvIC0gUyAyMSAwIDAgLQorLVIgWCAyMDI1IDIwMjcgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAyNSAyMDI3IC0gUyAyMiAwIDAgLQorLVIgWCAyMDI4IDIwMjkgLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAyOCAyMDI5IC0gUyAyMSAwIDAgLQorLVIgWCAyMDMwIDIwMzEgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAzMCAyMDMxIC0gUyAyMiAwIDAgLQorLVIgWCAyMDMyIDIwMzMgLSBNYXIgMjEgMCAxIC0KKy1SIFggMjAzMiAyMDMzIC0gUyAyMSAwIDAgLQorLVIgWCAyMDM0IDIwMzUgLSBNYXIgMjIgMCAxIC0KKy1SIFggMjAzNCAyMDM1IC0gUyAyMiAwIDAgLQorLVIgWCAyMDM2IG1hIC0gTWFyIDIxIDAgMSAtCistUiBYIDIwMzYgbWEgLSBTIDIxIDAgMCAtCisrUiBpIDE5NzggMTk4MCAtIE1hciAyMSAwIDEgLQorK1IgaSAxOTc4IG8gLSBPIDIxIDAgMCAtCisrUiBpIDE5NzkgbyAtIFMgMTkgMCAwIC0KKytSIGkgMTk4MCBvIC0gUyAyMyAwIDAgLQorK1IgaSAxOTkxIG8gLSBNYXkgMyAwIDEgLQorK1IgaSAxOTkyIDE5OTUgLSBNYXIgMjIgMCAxIC0KKytSIGkgMTk5MSAxOTk1IC0gUyAyMiAwIDAgLQorK1IgaSAxOTk2IG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMTk5NiBvIC0gUyAyMSAwIDAgLQorK1IgaSAxOTk3IDE5OTkgLSBNYXIgMjIgMCAxIC0KKytSIGkgMTk5NyAxOTk5IC0gUyAyMiAwIDAgLQorK1IgaSAyMDAwIG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAwMCBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDAxIDIwMDMgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAwMSAyMDAzIC0gUyAyMiAwIDAgLQorK1IgaSAyMDA0IG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAwNCBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDA1IG8gLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAwNSBvIC0gUyAyMiAwIDAgLQorK1IgaSAyMDA4IG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAwOCBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDA5IDIwMTEgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAwOSAyMDExIC0gUyAyMiAwIDAgLQorK1IgaSAyMDEyIG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAxMiBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDEzIDIwMTUgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAxMyAyMDE1IC0gUyAyMiAwIDAgLQorK1IgaSAyMDE2IG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAxNiBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDE3IDIwMTkgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAxNyAyMDE5IC0gUyAyMiAwIDAgLQorK1IgaSAyMDIwIG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAyMCBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDIxIDIwMjMgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAyMSAyMDIzIC0gUyAyMiAwIDAgLQorK1IgaSAyMDI0IG8gLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAyNCBvIC0gUyAyMSAwIDAgLQorK1IgaSAyMDI1IDIwMjcgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAyNSAyMDI3IC0gUyAyMiAwIDAgLQorK1IgaSAyMDI4IDIwMjkgLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAyOCAyMDI5IC0gUyAyMSAwIDAgLQorK1IgaSAyMDMwIDIwMzEgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAzMCAyMDMxIC0gUyAyMiAwIDAgLQorK1IgaSAyMDMyIDIwMzMgLSBNYXIgMjEgMCAxIC0KKytSIGkgMjAzMiAyMDMzIC0gUyAyMSAwIDAgLQorK1IgaSAyMDM0IDIwMzUgLSBNYXIgMjIgMCAxIC0KKytSIGkgMjAzNCAyMDM1IC0gUyAyMiAwIDAgLQorK1IgaSAyMDM2IG1hIC0gTWFyIDIxIDAgMSAtCisrUiBpIDIwMzYgbWEgLSBTIDIxIDAgMCAtCisgWiBBc2lhL1RlaHJhbiAzOjI1OjQ0IC0gTE1UIDE5MTYKKyAzOjI1OjQ0IC0gVE1UIDE5NDYKKyAzOjMwIC0gKzAzMzAgMTk3NyBOCistNCBYICswNC8rMDUgMTk3OQorLTM6MzAgWCArMDMzMC8rMDQzMAorLVIgWSAxOTgyIG8gLSBNYXkgMSAwIDEgLQorLVIgWSAxOTgyIDE5ODQgLSBPIDEgMCAwIC0KKy1SIFkgMTk4MyBvIC0gTWFyIDMxIDAgMSAtCistUiBZIDE5ODQgMTk4NSAtIEFwIDEgMCAxIC0KKy1SIFkgMTk4NSAxOTkwIC0gUyBsYXN0U3VuIDFzIDAgLQorLVIgWSAxOTg2IDE5OTAgLSBNYXIgbGFzdFN1biAxcyAxIC0KKy1SIFkgMTk5MSAyMDA3IC0gQXAgMSAzcyAxIC0KKy1SIFkgMTk5MSAyMDA3IC0gTyAxIDNzIDAgLQorKzQgaSArMDQvKzA1IDE5NzkKKyszOjMwIGkgKzAzMzAvKzA0MzAKKytSIElRIDE5ODIgbyAtIE1heSAxIDAgMSAtCisrUiBJUSAxOTgyIDE5ODQgLSBPIDEgMCAwIC0KKytSIElRIDE5ODMgbyAtIE1hciAzMSAwIDEgLQorK1IgSVEgMTk4NCAxOTg1IC0gQXAgMSAwIDEgLQorK1IgSVEgMTk4NSAxOTkwIC0gUyBsYXN0U3VuIDFzIDAgLQorK1IgSVEgMTk4NiAxOTkwIC0gTWFyIGxhc3RTdW4gMXMgMSAtCisrUiBJUSAxOTkxIDIwMDcgLSBBcCAxIDNzIDEgLQorK1IgSVEgMTk5MSAyMDA3IC0gTyAxIDNzIDAgLQorIFogQXNpYS9CYWdoZGFkIDI6NTc6NDAgLSBMTVQgMTg5MAorIDI6NTc6MzYgLSBCTVQgMTkxOAorIDMgLSArMDMgMTk4MiBNYXkKKy0zIFkgKzAzLyswNAorKzMgSVEgKzAzLyswNAorIFIgWiAxOTQwIG8gLSBKdW4gMSAwIDEgRAorIFIgWiAxOTQyIDE5NDQgLSBOIDEgMCAwIFMKKyBSIFogMTk0MyBvIC0gQXAgMSAyIDEgRAorQEAgLTY1OSwxNjMgKzY4MywxNjMgQEAgUiBaIDIwMTMgbWEgLSBPIGxhc3RTdW4gMiAwIFMKKyBaIEFzaWEvSmVydXNhbGVtIDI6MjA6NTQgLSBMTVQgMTg4MAorIDI6MjA6NDAgLSBKTVQgMTkxOAorIDIgWiBJJXNUCistUiBhIDE5NDggbyAtIE1heSBTYXQ+PTEgMjQgMSBECistUiBhIDE5NDggMTk1MSAtIFMgU3VuPj05IDAgMCBTCistUiBhIDE5NDkgbyAtIEFwIFNhdD49MSAyNCAxIEQKKy1SIGEgMTk1MCAxOTUxIC0gTWF5IFNhdD49MSAyNCAxIEQKKytSIEpQIDE5NDggbyAtIE1heSBTYXQ+PTEgMjQgMSBECisrUiBKUCAxOTQ4IDE5NTEgLSBTIFNhdD49OCAyNSAwIFMKKytSIEpQIDE5NDkgbyAtIEFwIFNhdD49MSAyNCAxIEQKKytSIEpQIDE5NTAgMTk1MSAtIE1heSBTYXQ+PTEgMjQgMSBECisgWiBBc2lhL1Rva3lvIDk6MTg6NTkgLSBMTVQgMTg4NyBEIDMxIDE1dQorLTkgYSBKJXNUCistUiBiIDE5NzMgbyAtIEp1biA2IDAgMSBTCistUiBiIDE5NzMgMTk3NSAtIE8gMSAwIDAgLQorLVIgYiAxOTc0IDE5NzcgLSBNYXkgMSAwIDEgUworLVIgYiAxOTc2IG8gLSBOIDEgMCAwIC0KKy1SIGIgMTk3NyBvIC0gTyAxIDAgMCAtCistUiBiIDE5NzggbyAtIEFwIDMwIDAgMSBTCistUiBiIDE5NzggbyAtIFMgMzAgMCAwIC0KKy1SIGIgMTk4NSBvIC0gQXAgMSAwIDEgUworLVIgYiAxOTg1IG8gLSBPIDEgMCAwIC0KKy1SIGIgMTk4NiAxOTg4IC0gQXAgRj49MSAwIDEgUworLVIgYiAxOTg2IDE5OTAgLSBPIEY+PTEgMCAwIC0KKy1SIGIgMTk4OSBvIC0gTWF5IDggMCAxIFMKKy1SIGIgMTk5MCBvIC0gQXAgMjcgMCAxIFMKKy1SIGIgMTk5MSBvIC0gQXAgMTcgMCAxIFMKKy1SIGIgMTk5MSBvIC0gUyAyNyAwIDAgLQorLVIgYiAxOTkyIG8gLSBBcCAxMCAwIDEgUworLVIgYiAxOTkyIDE5OTMgLSBPIEY+PTEgMCAwIC0KKy1SIGIgMTk5MyAxOTk4IC0gQXAgRj49MSAwIDEgUworLVIgYiAxOTk0IG8gLSBTIEY+PTE1IDAgMCAtCistUiBiIDE5OTUgMTk5OCAtIFMgRj49MTUgMHMgMCAtCistUiBiIDE5OTkgbyAtIEp1bCAxIDBzIDEgUworLVIgYiAxOTk5IDIwMDIgLSBTIGxhc3RGIDBzIDAgLQorLVIgYiAyMDAwIDIwMDEgLSBNYXIgbGFzdFRoIDBzIDEgUworLVIgYiAyMDAyIDIwMTIgLSBNYXIgbGFzdFRoIDI0IDEgUworLVIgYiAyMDAzIG8gLSBPIDI0IDBzIDAgLQorLVIgYiAyMDA0IG8gLSBPIDE1IDBzIDAgLQorLVIgYiAyMDA1IG8gLSBTIGxhc3RGIDBzIDAgLQorLVIgYiAyMDA2IDIwMTEgLSBPIGxhc3RGIDBzIDAgLQorLVIgYiAyMDEzIG8gLSBEIDIwIDAgMCAtCistUiBiIDIwMTQgbWEgLSBNYXIgbGFzdFRoIDI0IDEgUworLVIgYiAyMDE0IG1hIC0gTyBsYXN0RiAwcyAwIC0KKys5IEpQIEolc1QKKytSIEogMTk3MyBvIC0gSnVuIDYgMCAxIFMKKytSIEogMTk3MyAxOTc1IC0gTyAxIDAgMCAtCisrUiBKIDE5NzQgMTk3NyAtIE1heSAxIDAgMSBTCisrUiBKIDE5NzYgbyAtIE4gMSAwIDAgLQorK1IgSiAxOTc3IG8gLSBPIDEgMCAwIC0KKytSIEogMTk3OCBvIC0gQXAgMzAgMCAxIFMKKytSIEogMTk3OCBvIC0gUyAzMCAwIDAgLQorK1IgSiAxOTg1IG8gLSBBcCAxIDAgMSBTCisrUiBKIDE5ODUgbyAtIE8gMSAwIDAgLQorK1IgSiAxOTg2IDE5ODggLSBBcCBGPj0xIDAgMSBTCisrUiBKIDE5ODYgMTk5MCAtIE8gRj49MSAwIDAgLQorK1IgSiAxOTg5IG8gLSBNYXkgOCAwIDEgUworK1IgSiAxOTkwIG8gLSBBcCAyNyAwIDEgUworK1IgSiAxOTkxIG8gLSBBcCAxNyAwIDEgUworK1IgSiAxOTkxIG8gLSBTIDI3IDAgMCAtCisrUiBKIDE5OTIgbyAtIEFwIDEwIDAgMSBTCisrUiBKIDE5OTIgMTk5MyAtIE8gRj49MSAwIDAgLQorK1IgSiAxOTkzIDE5OTggLSBBcCBGPj0xIDAgMSBTCisrUiBKIDE5OTQgbyAtIFMgRj49MTUgMCAwIC0KKytSIEogMTk5NSAxOTk4IC0gUyBGPj0xNSAwcyAwIC0KKytSIEogMTk5OSBvIC0gSnVsIDEgMHMgMSBTCisrUiBKIDE5OTkgMjAwMiAtIFMgbGFzdEYgMHMgMCAtCisrUiBKIDIwMDAgMjAwMSAtIE1hciBsYXN0VGggMHMgMSBTCisrUiBKIDIwMDIgMjAxMiAtIE1hciBsYXN0VGggMjQgMSBTCisrUiBKIDIwMDMgbyAtIE8gMjQgMHMgMCAtCisrUiBKIDIwMDQgbyAtIE8gMTUgMHMgMCAtCisrUiBKIDIwMDUgbyAtIFMgbGFzdEYgMHMgMCAtCisrUiBKIDIwMDYgMjAxMSAtIE8gbGFzdEYgMHMgMCAtCisrUiBKIDIwMTMgbyAtIEQgMjAgMCAwIC0KKytSIEogMjAxNCBtYSAtIE1hciBsYXN0VGggMjQgMSBTCisrUiBKIDIwMTQgbWEgLSBPIGxhc3RGIDBzIDAgLQorIFogQXNpYS9BbW1hbiAyOjIzOjQ0IC0gTE1UIDE5MzEKKy0yIGIgRUUlc1QKKysyIEogRUUlc1QKKyBaIEFzaWEvQWxtYXR5IDU6Nzo0OCAtIExNVCAxOTI0IE1heSAyCisgNSAtICswNSAxOTMwIEp1biAyMQorLTYgTSArMDYvKzA3IDE5OTEgTWFyIDMxIDJzCistNSBNICswNS8rMDYgMTk5MiBKYSAxOSAycworLTYgTSArMDYvKzA3IDIwMDQgTyAzMSAycworKzYgUiArMDYvKzA3IDE5OTEgTWFyIDMxIDJzCisrNSBSICswNS8rMDYgMTk5MiBKYSAxOSAycworKzYgUiArMDYvKzA3IDIwMDQgTyAzMSAycworIDYgLSArMDYKKyBaIEFzaWEvUXl6eWxvcmRhIDQ6MjE6NTIgLSBMTVQgMTkyNCBNYXkgMgorIDQgLSArMDQgMTkzMCBKdW4gMjEKKyA1IC0gKzA1IDE5ODEgQXAKKyA1IDEgKzA2IDE5ODEgTworIDYgLSArMDYgMTk4MiBBcAorLTUgTSArMDUvKzA2IDE5OTEgTWFyIDMxIDJzCistNCBNICswNC8rMDUgMTk5MSBTIDI5IDJzCistNSBNICswNS8rMDYgMTk5MiBKYSAxOSAycworLTYgTSArMDYvKzA3IDE5OTIgTWFyIDI5IDJzCistNSBNICswNS8rMDYgMjAwNCBPIDMxIDJzCisrNSBSICswNS8rMDYgMTk5MSBNYXIgMzEgMnMKKys0IFIgKzA0LyswNSAxOTkxIFMgMjkgMnMKKys1IFIgKzA1LyswNiAxOTkyIEphIDE5IDJzCisrNiBSICswNi8rMDcgMTk5MiBNYXIgMjkgMnMKKys1IFIgKzA1LyswNiAyMDA0IE8gMzEgMnMKKyA2IC0gKzA2CisgWiBBc2lhL0FxdG9iZSAzOjQ4OjQwIC0gTE1UIDE5MjQgTWF5IDIKKyA0IC0gKzA0IDE5MzAgSnVuIDIxCisgNSAtICswNSAxOTgxIEFwCisgNSAxICswNiAxOTgxIE8KKyA2IC0gKzA2IDE5ODIgQXAKKy01IE0gKzA1LyswNiAxOTkxIE1hciAzMSAycworLTQgTSArMDQvKzA1IDE5OTIgSmEgMTkgMnMKKy01IE0gKzA1LyswNiAyMDA0IE8gMzEgMnMKKys1IFIgKzA1LyswNiAxOTkxIE1hciAzMSAycworKzQgUiArMDQvKzA1IDE5OTIgSmEgMTkgMnMKKys1IFIgKzA1LyswNiAyMDA0IE8gMzEgMnMKKyA1IC0gKzA1CisgWiBBc2lhL0FxdGF1IDM6MjE6NCAtIExNVCAxOTI0IE1heSAyCisgNCAtICswNCAxOTMwIEp1biAyMQorIDUgLSArMDUgMTk4MSBPCisgNiAtICswNiAxOTgyIEFwCistNSBNICswNS8rMDYgMTk5MSBNYXIgMzEgMnMKKy00IE0gKzA0LyswNSAxOTkyIEphIDE5IDJzCistNSBNICswNS8rMDYgMTk5NCBTIDI1IDJzCistNCBNICswNC8rMDUgMjAwNCBPIDMxIDJzCisrNSBSICswNS8rMDYgMTk5MSBNYXIgMzEgMnMKKys0IFIgKzA0LyswNSAxOTkyIEphIDE5IDJzCisrNSBSICswNS8rMDYgMTk5NCBTIDI1IDJzCisrNCBSICswNC8rMDUgMjAwNCBPIDMxIDJzCisgNSAtICswNQorIFogQXNpYS9BdHlyYXUgMzoyNzo0NCAtIExNVCAxOTI0IE1heSAyCisgMyAtICswMyAxOTMwIEp1biAyMQorIDUgLSArMDUgMTk4MSBPCisgNiAtICswNiAxOTgyIEFwCistNSBNICswNS8rMDYgMTk5MSBNYXIgMzEgMnMKKy00IE0gKzA0LyswNSAxOTkyIEphIDE5IDJzCistNSBNICswNS8rMDYgMTk5OSBNYXIgMjggMnMKKy00IE0gKzA0LyswNSAyMDA0IE8gMzEgMnMKKys1IFIgKzA1LyswNiAxOTkxIE1hciAzMSAycworKzQgUiArMDQvKzA1IDE5OTIgSmEgMTkgMnMKKys1IFIgKzA1LyswNiAxOTk5IE1hciAyOCAycworKzQgUiArMDQvKzA1IDIwMDQgTyAzMSAycworIDUgLSArMDUKKyBaIEFzaWEvT3JhbCAzOjI1OjI0IC0gTE1UIDE5MjQgTWF5IDIKKyAzIC0gKzAzIDE5MzAgSnVuIDIxCisgNSAtICswNSAxOTgxIEFwCisgNSAxICswNiAxOTgxIE8KKyA2IC0gKzA2IDE5ODIgQXAKKy01IE0gKzA1LyswNiAxOTg5IE1hciAyNiAycworLTQgTSArMDQvKzA1IDE5OTIgSmEgMTkgMnMKKy01IE0gKzA1LyswNiAxOTkyIE1hciAyOSAycworLTQgTSArMDQvKzA1IDIwMDQgTyAzMSAycworKzUgUiArMDUvKzA2IDE5ODkgTWFyIDI2IDJzCisrNCBSICswNC8rMDUgMTk5MiBKYSAxOSAycworKzUgUiArMDUvKzA2IDE5OTIgTWFyIDI5IDJzCisrNCBSICswNC8rMDUgMjAwNCBPIDMxIDJzCisgNSAtICswNQorLVIgYyAxOTkyIDE5OTYgLSBBcCBTdW4+PTcgMHMgMSAtCistUiBjIDE5OTIgMTk5NiAtIFMgbGFzdFN1biAwIDAgLQorLVIgYyAxOTk3IDIwMDUgLSBNYXIgbGFzdFN1biAyOjMwIDEgLQorLVIgYyAxOTk3IDIwMDQgLSBPIGxhc3RTdW4gMjozMCAwIC0KKytSIEtHIDE5OTIgMTk5NiAtIEFwIFN1bj49NyAwcyAxIC0KKytSIEtHIDE5OTIgMTk5NiAtIFMgbGFzdFN1biAwIDAgLQorK1IgS0cgMTk5NyAyMDA1IC0gTWFyIGxhc3RTdW4gMjozMCAxIC0KKytSIEtHIDE5OTcgMjAwNCAtIE8gbGFzdFN1biAyOjMwIDAgLQorIFogQXNpYS9CaXNoa2VrIDQ6NTg6MjQgLSBMTVQgMTkyNCBNYXkgMgorIDUgLSArMDUgMTkzMCBKdW4gMjEKKy02IE0gKzA2LyswNyAxOTkxIE1hciAzMSAycworLTUgTSArMDUvKzA2IDE5OTEgQXUgMzEgMgorLTUgYyArMDUvKzA2IDIwMDUgQXUgMTIKKys2IFIgKzA2LyswNyAxOTkxIE1hciAzMSAycworKzUgUiArMDUvKzA2IDE5OTEgQXUgMzEgMgorKzUgS0cgKzA1LyswNiAyMDA1IEF1IDEyCisgNiAtICswNgorLVIgZCAxOTQ4IG8gLSBKdW4gMSAwIDEgRAorLVIgZCAxOTQ4IG8gLSBTIDEzIDAgMCBTCistUiBkIDE5NDkgbyAtIEFwIDMgMCAxIEQKKy1SIGQgMTk0OSAxOTUxIC0gUyBTdW4+PTggMCAwIFMKKy1SIGQgMTk1MCBvIC0gQXAgMSAwIDEgRAorLVIgZCAxOTUxIG8gLSBNYXkgNiAwIDEgRAorLVIgZCAxOTU1IG8gLSBNYXkgNSAwIDEgRAorLVIgZCAxOTU1IG8gLSBTIDkgMCAwIFMKKy1SIGQgMTk1NiBvIC0gTWF5IDIwIDAgMSBECistUiBkIDE5NTYgbyAtIFMgMzAgMCAwIFMKKy1SIGQgMTk1NyAxOTYwIC0gTWF5IFN1bj49MSAwIDEgRAorLVIgZCAxOTU3IDE5NjAgLSBTIFN1bj49MTggMCAwIFMKKy1SIGQgMTk4NyAxOTg4IC0gTWF5IFN1bj49OCAyIDEgRAorLVIgZCAxOTg3IDE5ODggLSBPIFN1bj49OCAzIDAgUworK1IgS1IgMTk0OCBvIC0gSnVuIDEgMCAxIEQKKytSIEtSIDE5NDggbyAtIFMgMTMgMCAwIFMKKytSIEtSIDE5NDkgbyAtIEFwIDMgMCAxIEQKKytSIEtSIDE5NDkgMTk1MSAtIFMgU3VuPj04IDAgMCBTCisrUiBLUiAxOTUwIG8gLSBBcCAxIDAgMSBECisrUiBLUiAxOTUxIG8gLSBNYXkgNiAwIDEgRAorK1IgS1IgMTk1NSBvIC0gTWF5IDUgMCAxIEQKKytSIEtSIDE5NTUgbyAtIFMgOSAwIDAgUworK1IgS1IgMTk1NiBvIC0gTWF5IDIwIDAgMSBECisrUiBLUiAxOTU2IG8gLSBTIDMwIDAgMCBTCisrUiBLUiAxOTU3IDE5NjAgLSBNYXkgU3VuPj0xIDAgMSBECisrUiBLUiAxOTU3IDE5NjAgLSBTIFN1bj49MTggMCAwIFMKKytSIEtSIDE5ODcgMTk4OCAtIE1heSBTdW4+PTggMiAxIEQKKytSIEtSIDE5ODcgMTk4OCAtIE8gU3VuPj04IDMgMCBTCisgWiBBc2lhL1Nlb3VsIDg6Mjc6NTIgLSBMTVQgMTkwOCBBcAorIDg6MzAgLSBLU1QgMTkxMgorIDkgLSBKU1QgMTk0NSBTIDgKKyA5IC0gS1NUIDE5NTQgTWFyIDIxCistODozMCBkIEslc1QgMTk2MSBBdSAxMAorLTkgZCBLJXNUCisrODozMCBLUiBLJXNUIDE5NjEgQXUgMTAKKys5IEtSIEslc1QKKyBaIEFzaWEvUHlvbmd5YW5nIDg6MjMgLSBMTVQgMTkwOCBBcAorIDg6MzAgLSBLU1QgMTkxMgorIDkgLSBKU1QgMTk0NSBBdSAyNAorIDkgLSBLU1QgMjAxNSBBdSAxNQorLTg6MzAgLSBLU1QgMjAxOCBNYXkgNQorKzg6MzAgLSBLU1QgMjAxOCBNYXkgNCAyMzozMAorIDkgLSBLU1QKKy1SIGUgMTkyMCBvIC0gTWFyIDI4IDAgMSBTCistUiBlIDE5MjAgbyAtIE8gMjUgMCAwIC0KKy1SIGUgMTkyMSBvIC0gQXAgMyAwIDEgUworLVIgZSAxOTIxIG8gLSBPIDMgMCAwIC0KKy1SIGUgMTkyMiBvIC0gTWFyIDI2IDAgMSBTCistUiBlIDE5MjIgbyAtIE8gOCAwIDAgLQorLVIgZSAxOTIzIG8gLSBBcCAyMiAwIDEgUworLVIgZSAxOTIzIG8gLSBTIDE2IDAgMCAtCistUiBlIDE5NTcgMTk2MSAtIE1heSAxIDAgMSBTCistUiBlIDE5NTcgMTk2MSAtIE8gMSAwIDAgLQorLVIgZSAxOTcyIG8gLSBKdW4gMjIgMCAxIFMKKy1SIGUgMTk3MiAxOTc3IC0gTyAxIDAgMCAtCistUiBlIDE5NzMgMTk3NyAtIE1heSAxIDAgMSBTCistUiBlIDE5NzggbyAtIEFwIDMwIDAgMSBTCistUiBlIDE5NzggbyAtIFMgMzAgMCAwIC0KKy1SIGUgMTk4NCAxOTg3IC0gTWF5IDEgMCAxIFMKKy1SIGUgMTk4NCAxOTkxIC0gTyAxNiAwIDAgLQorLVIgZSAxOTg4IG8gLSBKdW4gMSAwIDEgUworLVIgZSAxOTg5IG8gLSBNYXkgMTAgMCAxIFMKKy1SIGUgMTk5MCAxOTkyIC0gTWF5IDEgMCAxIFMKKy1SIGUgMTk5MiBvIC0gTyA0IDAgMCAtCistUiBlIDE5OTMgbWEgLSBNYXIgbGFzdFN1biAwIDEgUworLVIgZSAxOTkzIDE5OTggLSBTIGxhc3RTdW4gMCAwIC0KKy1SIGUgMTk5OSBtYSAtIE8gbGFzdFN1biAwIDAgLQorK1IgbCAxOTIwIG8gLSBNYXIgMjggMCAxIFMKKytSIGwgMTkyMCBvIC0gTyAyNSAwIDAgLQorK1IgbCAxOTIxIG8gLSBBcCAzIDAgMSBTCisrUiBsIDE5MjEgbyAtIE8gMyAwIDAgLQorK1IgbCAxOTIyIG8gLSBNYXIgMjYgMCAxIFMKKytSIGwgMTkyMiBvIC0gTyA4IDAgMCAtCisrUiBsIDE5MjMgbyAtIEFwIDIyIDAgMSBTCisrUiBsIDE5MjMgbyAtIFMgMTYgMCAwIC0KKytSIGwgMTk1NyAxOTYxIC0gTWF5IDEgMCAxIFMKKytSIGwgMTk1NyAxOTYxIC0gTyAxIDAgMCAtCisrUiBsIDE5NzIgbyAtIEp1biAyMiAwIDEgUworK1IgbCAxOTcyIDE5NzcgLSBPIDEgMCAwIC0KKytSIGwgMTk3MyAxOTc3IC0gTWF5IDEgMCAxIFMKKytSIGwgMTk3OCBvIC0gQXAgMzAgMCAxIFMKKytSIGwgMTk3OCBvIC0gUyAzMCAwIDAgLQorK1IgbCAxOTg0IDE5ODcgLSBNYXkgMSAwIDEgUworK1IgbCAxOTg0IDE5OTEgLSBPIDE2IDAgMCAtCisrUiBsIDE5ODggbyAtIEp1biAxIDAgMSBTCisrUiBsIDE5ODkgbyAtIE1heSAxMCAwIDEgUworK1IgbCAxOTkwIDE5OTIgLSBNYXkgMSAwIDEgUworK1IgbCAxOTkyIG8gLSBPIDQgMCAwIC0KKytSIGwgMTk5MyBtYSAtIE1hciBsYXN0U3VuIDAgMSBTCisrUiBsIDE5OTMgMTk5OCAtIFMgbGFzdFN1biAwIDAgLQorK1IgbCAxOTk5IG1hIC0gTyBsYXN0U3VuIDAgMCAtCisgWiBBc2lhL0JlaXJ1dCAyOjIyIC0gTE1UIDE4ODAKKy0yIGUgRUUlc1QKKy1SIGYgMTkzNSAxOTQxIC0gUyAxNCAwIDA6MjAgLQorLVIgZiAxOTM1IDE5NDEgLSBEIDE0IDAgMCAtCisrMiBsIEVFJXNUCisrUiBOQiAxOTM1IDE5NDEgLSBTIDE0IDAgMDoyMCAtCisrUiBOQiAxOTM1IDE5NDEgLSBEIDE0IDAgMCAtCisgWiBBc2lhL0t1YWxhX0x1bXB1ciA2OjQ2OjQ2IC0gTE1UIDE5MDEKKyA2OjU1OjI1IC0gU01UIDE5MDUgSnVuCisgNyAtICswNyAxOTMzCitAQCAtODI3LDk4ICs4NTEsOTggQEAgWiBBc2lhL0t1YWxhX0x1bXB1ciA2OjQ2OjQ2IC0gTE1UIDE5MDEKKyA4IC0gKzA4CisgWiBBc2lhL0t1Y2hpbmcgNzoyMToyMCAtIExNVCAxOTI2IE1hcgorIDc6MzAgLSArMDczMCAxOTMzCistOCBmICswOC8rMDgyMCAxOTQyIEYgMTYKKys4IE5CICswOC8rMDgyMCAxOTQyIEYgMTYKKyA5IC0gKzA5IDE5NDUgUyAxMgorIDggLSArMDgKKyBaIEluZGlhbi9NYWxkaXZlcyA0OjU0IC0gTE1UIDE4ODAKKyA0OjU0IC0gTU1UIDE5NjAKKyA1IC0gKzA1CistUiBnIDE5ODMgMTk4NCAtIEFwIDEgMCAxIC0KKy1SIGcgMTk4MyBvIC0gTyAxIDAgMCAtCistUiBnIDE5ODUgMTk5OCAtIE1hciBsYXN0U3VuIDAgMSAtCistUiBnIDE5ODQgMTk5OCAtIFMgbGFzdFN1biAwIDAgLQorLVIgZyAyMDAxIG8gLSBBcCBsYXN0U2F0IDIgMSAtCistUiBnIDIwMDEgMjAwNiAtIFMgbGFzdFNhdCAyIDAgLQorLVIgZyAyMDAyIDIwMDYgLSBNYXIgbGFzdFNhdCAyIDEgLQorLVIgZyAyMDE1IDIwMTYgLSBNYXIgbGFzdFNhdCAyIDEgLQorLVIgZyAyMDE1IDIwMTYgLSBTIGxhc3RTYXQgMCAwIC0KKytSIFggMTk4MyAxOTg0IC0gQXAgMSAwIDEgLQorK1IgWCAxOTgzIG8gLSBPIDEgMCAwIC0KKytSIFggMTk4NSAxOTk4IC0gTWFyIGxhc3RTdW4gMCAxIC0KKytSIFggMTk4NCAxOTk4IC0gUyBsYXN0U3VuIDAgMCAtCisrUiBYIDIwMDEgbyAtIEFwIGxhc3RTYXQgMiAxIC0KKytSIFggMjAwMSAyMDA2IC0gUyBsYXN0U2F0IDIgMCAtCisrUiBYIDIwMDIgMjAwNiAtIE1hciBsYXN0U2F0IDIgMSAtCisrUiBYIDIwMTUgMjAxNiAtIE1hciBsYXN0U2F0IDIgMSAtCisrUiBYIDIwMTUgMjAxNiAtIFMgbGFzdFNhdCAwIDAgLQorIFogQXNpYS9Ib3ZkIDY6NjozNiAtIExNVCAxOTA1IEF1CisgNiAtICswNiAxOTc4CistNyBnICswNy8rMDgKKys3IFggKzA3LyswOAorIFogQXNpYS9VbGFhbmJhYXRhciA3Ojc6MzIgLSBMTVQgMTkwNSBBdQorIDcgLSArMDcgMTk3OAorLTggZyArMDgvKzA5CisrOCBYICswOC8rMDkKKyBaIEFzaWEvQ2hvaWJhbHNhbiA3OjM4IC0gTE1UIDE5MDUgQXUKKyA3IC0gKzA3IDE5NzgKKyA4IC0gKzA4IDE5ODMgQXAKKy05IGcgKzA5LysxMCAyMDA4IE1hciAzMQorLTggZyArMDgvKzA5CisrOSBYICswOS8rMTAgMjAwOCBNYXIgMzEKKys4IFggKzA4LyswOQorIFogQXNpYS9LYXRobWFuZHUgNTo0MToxNiAtIExNVCAxOTIwCisgNTozMCAtICswNTMwIDE5ODYKKyA1OjQ1IC0gKzA1NDUKKy1SIGggMjAwMiBvIC0gQXAgU3VuPj0yIDAgMSBTCistUiBoIDIwMDIgbyAtIE8gU3VuPj0yIDAgMCAtCistUiBoIDIwMDggbyAtIEp1biAxIDAgMSBTCistUiBoIDIwMDggMjAwOSAtIE4gMSAwIDAgLQorLVIgaCAyMDA5IG8gLSBBcCAxNSAwIDEgUworK1IgUEsgMjAwMiBvIC0gQXAgU3VuPj0yIDAgMSBTCisrUiBQSyAyMDAyIG8gLSBPIFN1bj49MiAwIDAgLQorK1IgUEsgMjAwOCBvIC0gSnVuIDEgMCAxIFMKKytSIFBLIDIwMDggMjAwOSAtIE4gMSAwIDAgLQorK1IgUEsgMjAwOSBvIC0gQXAgMTUgMCAxIFMKKyBaIEFzaWEvS2FyYWNoaSA0OjI4OjEyIC0gTE1UIDE5MDcKKyA1OjMwIC0gKzA1MzAgMTk0MiBTCisgNTozMCAxICswNjMwIDE5NDUgTyAxNQorIDU6MzAgLSArMDUzMCAxOTUxIFMgMzAKKyA1IC0gKzA1IDE5NzEgTWFyIDI2CistNSBoIFBLJXNUCistUiBpIDE5OTkgMjAwNSAtIEFwIEY+PTE1IDAgMSBTCistUiBpIDE5OTkgMjAwMyAtIE8gRj49MTUgMCAwIC0KKy1SIGkgMjAwNCBvIC0gTyAxIDEgMCAtCistUiBpIDIwMDUgbyAtIE8gNCAyIDAgLQorLVIgaSAyMDA2IDIwMDcgLSBBcCAxIDAgMSBTCistUiBpIDIwMDYgbyAtIFMgMjIgMCAwIC0KKy1SIGkgMjAwNyBvIC0gUyBUaD49OCAyIDAgLQorLVIgaSAyMDA4IDIwMDkgLSBNYXIgbGFzdEYgMCAxIFMKKy1SIGkgMjAwOCBvIC0gUyAxIDAgMCAtCistUiBpIDIwMDkgbyAtIFMgRj49MSAxIDAgLQorLVIgaSAyMDEwIG8gLSBNYXIgMjYgMCAxIFMKKy1SIGkgMjAxMCBvIC0gQXUgMTEgMCAwIC0KKy1SIGkgMjAxMSBvIC0gQXAgMSAwOjEgMSBTCistUiBpIDIwMTEgbyAtIEF1IDEgMCAwIC0KKy1SIGkgMjAxMSBvIC0gQXUgMzAgMCAxIFMKKy1SIGkgMjAxMSBvIC0gUyAzMCAwIDAgLQorLVIgaSAyMDEyIDIwMTQgLSBNYXIgbGFzdFRoIDI0IDEgUworLVIgaSAyMDEyIG8gLSBTIDIxIDEgMCAtCistUiBpIDIwMTMgbyAtIFMgRj49MjEgMCAwIC0KKy1SIGkgMjAxNCAyMDE1IC0gTyBGPj0yMSAwIDAgLQorLVIgaSAyMDE1IG8gLSBNYXIgbGFzdEYgMjQgMSBTCistUiBpIDIwMTYgbWEgLSBNYXIgU2F0Pj0yMiAxIDEgUworLVIgaSAyMDE2IG1hIC0gTyBsYXN0U2F0IDEgMCAtCisrNSBQSyBQSyVzVAorK1IgUCAxOTk5IDIwMDUgLSBBcCBGPj0xNSAwIDEgUworK1IgUCAxOTk5IDIwMDMgLSBPIEY+PTE1IDAgMCAtCisrUiBQIDIwMDQgbyAtIE8gMSAxIDAgLQorK1IgUCAyMDA1IG8gLSBPIDQgMiAwIC0KKytSIFAgMjAwNiAyMDA3IC0gQXAgMSAwIDEgUworK1IgUCAyMDA2IG8gLSBTIDIyIDAgMCAtCisrUiBQIDIwMDcgbyAtIFMgVGg+PTggMiAwIC0KKytSIFAgMjAwOCAyMDA5IC0gTWFyIGxhc3RGIDAgMSBTCisrUiBQIDIwMDggbyAtIFMgMSAwIDAgLQorK1IgUCAyMDA5IG8gLSBTIEY+PTEgMSAwIC0KKytSIFAgMjAxMCBvIC0gTWFyIDI2IDAgMSBTCisrUiBQIDIwMTAgbyAtIEF1IDExIDAgMCAtCisrUiBQIDIwMTEgbyAtIEFwIDEgMDoxIDEgUworK1IgUCAyMDExIG8gLSBBdSAxIDAgMCAtCisrUiBQIDIwMTEgbyAtIEF1IDMwIDAgMSBTCisrUiBQIDIwMTEgbyAtIFMgMzAgMCAwIC0KKytSIFAgMjAxMiAyMDE0IC0gTWFyIGxhc3RUaCAyNCAxIFMKKytSIFAgMjAxMiBvIC0gUyAyMSAxIDAgLQorK1IgUCAyMDEzIG8gLSBTIEY+PTIxIDAgMCAtCisrUiBQIDIwMTQgMjAxNSAtIE8gRj49MjEgMCAwIC0KKytSIFAgMjAxNSBvIC0gTWFyIGxhc3RGIDI0IDEgUworK1IgUCAyMDE2IG1hIC0gTWFyIFNhdD49MjIgMSAxIFMKKytSIFAgMjAxNiBtYSAtIE8gbGFzdFNhdCAxIDAgLQorIFogQXNpYS9HYXphIDI6MTc6NTIgLSBMTVQgMTkwMCBPCisgMiBaIEVFVC9FRVNUIDE5NDggTWF5IDE1CistMiBCIEVFJXNUIDE5NjcgSnVuIDUKKysyIEsgRUUlc1QgMTk2NyBKdW4gNQorIDIgWiBJJXNUIDE5OTYKKy0yIGIgRUUlc1QgMTk5OQorLTIgaSBFRSVzVCAyMDA4IEF1IDI5CisrMiBKIEVFJXNUIDE5OTkKKysyIFAgRUUlc1QgMjAwOCBBdSAyOQorIDIgLSBFRVQgMjAwOCBTCistMiBpIEVFJXNUIDIwMTAKKysyIFAgRUUlc1QgMjAxMAorIDIgLSBFRVQgMjAxMCBNYXIgMjcgMDoxCistMiBpIEVFJXNUIDIwMTEgQXUKKysyIFAgRUUlc1QgMjAxMSBBdQorIDIgLSBFRVQgMjAxMgorLTIgaSBFRSVzVAorKzIgUCBFRSVzVAorIFogQXNpYS9IZWJyb24gMjoyMDoyMyAtIExNVCAxOTAwIE8KKyAyIFogRUVUL0VFU1QgMTk0OCBNYXkgMTUKKy0yIEIgRUUlc1QgMTk2NyBKdW4gNQorKzIgSyBFRSVzVCAxOTY3IEp1biA1CisgMiBaIEklc1QgMTk5NgorLTIgYiBFRSVzVCAxOTk5CistMiBpIEVFJXNUCistUiBqIDE5MzYgbyAtIE4gMSAwIDEgLQorLVIgaiAxOTM3IG8gLSBGIDEgMCAwIC0KKy1SIGogMTk1NCBvIC0gQXAgMTIgMCAxIC0KKy1SIGogMTk1NCBvIC0gSnVsIDEgMCAwIC0KKy1SIGogMTk3OCBvIC0gTWFyIDIyIDAgMSAtCistUiBqIDE5NzggbyAtIFMgMjEgMCAwIC0KKysyIEogRUUlc1QgMTk5OQorKzIgUCBFRSVzVAorK1IgUEggMTkzNiBvIC0gTiAxIDAgMSBECisrUiBQSCAxOTM3IG8gLSBGIDEgMCAwIFMKKytSIFBIIDE5NTQgbyAtIEFwIDEyIDAgMSBECisrUiBQSCAxOTU0IG8gLSBKdWwgMSAwIDAgUworK1IgUEggMTk3OCBvIC0gTWFyIDIyIDAgMSBECisrUiBQSCAxOTc4IG8gLSBTIDIxIDAgMCBTCisgWiBBc2lhL01hbmlsYSAtMTU6NTYgLSBMTVQgMTg0NCBEIDMxCisgODo0IC0gTE1UIDE4OTkgTWF5IDExCistOCBqICswOC8rMDkgMTk0MiBNYXkKKy05IC0gKzA5IDE5NDQgTgorLTggaiArMDgvKzA5CisrOCBQSCBQJXNUIDE5NDIgTWF5CisrOSAtIEpTVCAxOTQ0IE4KKys4IFBIIFAlc1QKKyBaIEFzaWEvUWF0YXIgMzoyNjo4IC0gTE1UIDE5MjAKKyA0IC0gKzA0IDE5NzIgSnVuCisgMyAtICswMworQEAgLTk0NSw1MiArOTY5LDUyIEBAIFogQXNpYS9Db2xvbWJvIDU6MTk6MjQgLSBMTVQgMTg4MAorIDY6MzAgLSArMDYzMCAxOTk2IE8gMjYgMDozMAorIDYgLSArMDYgMjAwNiBBcCAxNSAwOjMwCisgNTozMCAtICswNTMwCistUiBrIDE5MjAgMTkyMyAtIEFwIFN1bj49MTUgMiAxIFMKKy1SIGsgMTkyMCAxOTIzIC0gTyBTdW4+PTEgMiAwIC0KKy1SIGsgMTk2MiBvIC0gQXAgMjkgMiAxIFMKKy1SIGsgMTk2MiBvIC0gTyAxIDIgMCAtCistUiBrIDE5NjMgMTk2NSAtIE1heSAxIDIgMSBTCistUiBrIDE5NjMgbyAtIFMgMzAgMiAwIC0KKy1SIGsgMTk2NCBvIC0gTyAxIDIgMCAtCistUiBrIDE5NjUgbyAtIFMgMzAgMiAwIC0KKy1SIGsgMTk2NiBvIC0gQXAgMjQgMiAxIFMKKy1SIGsgMTk2NiAxOTc2IC0gTyAxIDIgMCAtCistUiBrIDE5NjcgMTk3OCAtIE1heSAxIDIgMSBTCistUiBrIDE5NzcgMTk3OCAtIFMgMSAyIDAgLQorLVIgayAxOTgzIDE5ODQgLSBBcCA5IDIgMSBTCistUiBrIDE5ODMgMTk4NCAtIE8gMSAyIDAgLQorLVIgayAxOTg2IG8gLSBGIDE2IDIgMSBTCistUiBrIDE5ODYgbyAtIE8gOSAyIDAgLQorLVIgayAxOTg3IG8gLSBNYXIgMSAyIDEgUworLVIgayAxOTg3IDE5ODggLSBPIDMxIDIgMCAtCistUiBrIDE5ODggbyAtIE1hciAxNSAyIDEgUworLVIgayAxOTg5IG8gLSBNYXIgMzEgMiAxIFMKKy1SIGsgMTk4OSBvIC0gTyAxIDIgMCAtCistUiBrIDE5OTAgbyAtIEFwIDEgMiAxIFMKKy1SIGsgMTk5MCBvIC0gUyAzMCAyIDAgLQorLVIgayAxOTkxIG8gLSBBcCAxIDAgMSBTCistUiBrIDE5OTEgMTk5MiAtIE8gMSAwIDAgLQorLVIgayAxOTkyIG8gLSBBcCA4IDAgMSBTCistUiBrIDE5OTMgbyAtIE1hciAyNiAwIDEgUworLVIgayAxOTkzIG8gLSBTIDI1IDAgMCAtCistUiBrIDE5OTQgMTk5NiAtIEFwIDEgMCAxIFMKKy1SIGsgMTk5NCAyMDA1IC0gTyAxIDAgMCAtCistUiBrIDE5OTcgMTk5OCAtIE1hciBsYXN0TSAwIDEgUworLVIgayAxOTk5IDIwMDYgLSBBcCAxIDAgMSBTCistUiBrIDIwMDYgbyAtIFMgMjIgMCAwIC0KKy1SIGsgMjAwNyBvIC0gTWFyIGxhc3RGIDAgMSBTCistUiBrIDIwMDcgbyAtIE4gRj49MSAwIDAgLQorLVIgayAyMDA4IG8gLSBBcCBGPj0xIDAgMSBTCistUiBrIDIwMDggbyAtIE4gMSAwIDAgLQorLVIgayAyMDA5IG8gLSBNYXIgbGFzdEYgMCAxIFMKKy1SIGsgMjAxMCAyMDExIC0gQXAgRj49MSAwIDEgUworLVIgayAyMDEyIG1hIC0gTWFyIGxhc3RGIDAgMSBTCistUiBrIDIwMDkgbWEgLSBPIGxhc3RGIDAgMCAtCisrUiBTIDE5MjAgMTkyMyAtIEFwIFN1bj49MTUgMiAxIFMKKytSIFMgMTkyMCAxOTIzIC0gTyBTdW4+PTEgMiAwIC0KKytSIFMgMTk2MiBvIC0gQXAgMjkgMiAxIFMKKytSIFMgMTk2MiBvIC0gTyAxIDIgMCAtCisrUiBTIDE5NjMgMTk2NSAtIE1heSAxIDIgMSBTCisrUiBTIDE5NjMgbyAtIFMgMzAgMiAwIC0KKytSIFMgMTk2NCBvIC0gTyAxIDIgMCAtCisrUiBTIDE5NjUgbyAtIFMgMzAgMiAwIC0KKytSIFMgMTk2NiBvIC0gQXAgMjQgMiAxIFMKKytSIFMgMTk2NiAxOTc2IC0gTyAxIDIgMCAtCisrUiBTIDE5NjcgMTk3OCAtIE1heSAxIDIgMSBTCisrUiBTIDE5NzcgMTk3OCAtIFMgMSAyIDAgLQorK1IgUyAxOTgzIDE5ODQgLSBBcCA5IDIgMSBTCisrUiBTIDE5ODMgMTk4NCAtIE8gMSAyIDAgLQorK1IgUyAxOTg2IG8gLSBGIDE2IDIgMSBTCisrUiBTIDE5ODYgbyAtIE8gOSAyIDAgLQorK1IgUyAxOTg3IG8gLSBNYXIgMSAyIDEgUworK1IgUyAxOTg3IDE5ODggLSBPIDMxIDIgMCAtCisrUiBTIDE5ODggbyAtIE1hciAxNSAyIDEgUworK1IgUyAxOTg5IG8gLSBNYXIgMzEgMiAxIFMKKytSIFMgMTk4OSBvIC0gTyAxIDIgMCAtCisrUiBTIDE5OTAgbyAtIEFwIDEgMiAxIFMKKytSIFMgMTk5MCBvIC0gUyAzMCAyIDAgLQorK1IgUyAxOTkxIG8gLSBBcCAxIDAgMSBTCisrUiBTIDE5OTEgMTk5MiAtIE8gMSAwIDAgLQorK1IgUyAxOTkyIG8gLSBBcCA4IDAgMSBTCisrUiBTIDE5OTMgbyAtIE1hciAyNiAwIDEgUworK1IgUyAxOTkzIG8gLSBTIDI1IDAgMCAtCisrUiBTIDE5OTQgMTk5NiAtIEFwIDEgMCAxIFMKKytSIFMgMTk5NCAyMDA1IC0gTyAxIDAgMCAtCisrUiBTIDE5OTcgMTk5OCAtIE1hciBsYXN0TSAwIDEgUworK1IgUyAxOTk5IDIwMDYgLSBBcCAxIDAgMSBTCisrUiBTIDIwMDYgbyAtIFMgMjIgMCAwIC0KKytSIFMgMjAwNyBvIC0gTWFyIGxhc3RGIDAgMSBTCisrUiBTIDIwMDcgbyAtIE4gRj49MSAwIDAgLQorK1IgUyAyMDA4IG8gLSBBcCBGPj0xIDAgMSBTCisrUiBTIDIwMDggbyAtIE4gMSAwIDAgLQorK1IgUyAyMDA5IG8gLSBNYXIgbGFzdEYgMCAxIFMKKytSIFMgMjAxMCAyMDExIC0gQXAgRj49MSAwIDEgUworK1IgUyAyMDEyIG1hIC0gTWFyIGxhc3RGIDAgMSBTCisrUiBTIDIwMDkgbWEgLSBPIGxhc3RGIDAgMCAtCisgWiBBc2lhL0RhbWFzY3VzIDI6MjU6MTIgLSBMTVQgMTkyMAorLTIgayBFRSVzVAorKzIgUyBFRSVzVAorIFogQXNpYS9EdXNoYW5iZSA0OjM1OjEyIC0gTE1UIDE5MjQgTWF5IDIKKyA1IC0gKzA1IDE5MzAgSnVuIDIxCistNiBNICswNi8rMDcgMTk5MSBNYXIgMzEgMnMKKys2IFIgKzA2LyswNyAxOTkxIE1hciAzMSAycworIDUgMSArMDUvKzA2IDE5OTEgUyA5IDJzCisgNSAtICswNQorIFogQXNpYS9CYW5na29rIDY6NDI6NCAtIExNVCAxODgwCitAQCAtMTAwMCw4ICsxMDI0LDggQEAgTGkgQXNpYS9CYW5na29rIEFzaWEvUGhub21fUGVuaAorIExpIEFzaWEvQmFuZ2tvayBBc2lhL1ZpZW50aWFuZQorIFogQXNpYS9Bc2hnYWJhdCAzOjUzOjMyIC0gTE1UIDE5MjQgTWF5IDIKKyA0IC0gKzA0IDE5MzAgSnVuIDIxCistNSBNICswNS8rMDYgMTk5MSBNYXIgMzEgMgorLTQgTSArMDQvKzA1IDE5OTIgSmEgMTkgMgorKzUgUiArMDUvKzA2IDE5OTEgTWFyIDMxIDIKKys0IFIgKzA0LyswNSAxOTkyIEphIDE5IDIKKyA1IC0gKzA1CisgWiBBc2lhL0R1YmFpIDM6NDE6MTIgLSBMTVQgMTkyMAorIDQgLSArMDQKK0BAIC0xMDExLDEyICsxMDM1LDEyIEBAIFogQXNpYS9TYW1hcmthbmQgNDoyNzo1MyAtIExNVCAxOTI0IE1heSAyCisgNSAtICswNSAxOTgxIEFwCisgNSAxICswNiAxOTgxIE8KKyA2IC0gKzA2IDE5ODIgQXAKKy01IE0gKzA1LyswNiAxOTkyCisrNSBSICswNS8rMDYgMTk5MgorIDUgLSArMDUKKyBaIEFzaWEvVGFzaGtlbnQgNDozNzoxMSAtIExNVCAxOTI0IE1heSAyCisgNSAtICswNSAxOTMwIEp1biAyMQorLTYgTSArMDYvKzA3IDE5OTEgTWFyIDMxIDIKKy01IE0gKzA1LyswNiAxOTkyCisrNiBSICswNi8rMDcgMTk5MSBNYXIgMzEgMgorKzUgUiArMDUvKzA2IDE5OTIKKyA1IC0gKzA1CisgWiBBc2lhL0hvX0NoaV9NaW5oIDc6Njo0MCAtIExNVCAxOTA2IEp1bAorIDc6NjozMCAtIFBMTVQgMTkxMSBNYXkKK0BAIC0xMDI4LDE3NiArMTA1MiwxNzYgQEAgWiBBc2lhL0hvX0NoaV9NaW5oIDc6Njo0MCAtIExNVCAxOTA2IEp1bAorIDcgLSArMDcgMTk1OSBEIDMxIDIzCisgOCAtICswOCAxOTc1IEp1biAxMworIDcgLSArMDcKKy1SIGwgMTkxNyBvIC0gSmEgMSAwOjEgMSBECistUiBsIDE5MTcgbyAtIE1hciAyNSAyIDAgUworLVIgbCAxOTQyIG8gLSBKYSAxIDIgMSBECistUiBsIDE5NDIgbyAtIE1hciAyOSAyIDAgUworLVIgbCAxOTQyIG8gLSBTIDI3IDIgMSBECistUiBsIDE5NDMgMTk0NCAtIE1hciBsYXN0U3VuIDIgMCBTCistUiBsIDE5NDMgbyAtIE8gMyAyIDEgRAorK1IgQVUgMTkxNyBvIC0gSmEgMSAwOjEgMSBECisrUiBBVSAxOTE3IG8gLSBNYXIgMjUgMiAwIFMKKytSIEFVIDE5NDIgbyAtIEphIDEgMiAxIEQKKytSIEFVIDE5NDIgbyAtIE1hciAyOSAyIDAgUworK1IgQVUgMTk0MiBvIC0gUyAyNyAyIDEgRAorK1IgQVUgMTk0MyAxOTQ0IC0gTWFyIGxhc3RTdW4gMiAwIFMKKytSIEFVIDE5NDMgbyAtIE8gMyAyIDEgRAorIFogQXVzdHJhbGlhL0RhcndpbiA4OjQzOjIwIC0gTE1UIDE4OTUgRgorIDkgLSBBQ1NUIDE4OTkgTWF5CistOTozMCBsIEFDJXNUCistUiBtIDE5NzQgbyAtIE8gbGFzdFN1biAycyAxIEQKKy1SIG0gMTk3NSBvIC0gTWFyIFN1bj49MSAycyAwIFMKKy1SIG0gMTk4MyBvIC0gTyBsYXN0U3VuIDJzIDEgRAorLVIgbSAxOTg0IG8gLSBNYXIgU3VuPj0xIDJzIDAgUworLVIgbSAxOTkxIG8gLSBOIDE3IDJzIDEgRAorLVIgbSAxOTkyIG8gLSBNYXIgU3VuPj0xIDJzIDAgUworLVIgbSAyMDA2IG8gLSBEIDMgMnMgMSBECistUiBtIDIwMDcgMjAwOSAtIE1hciBsYXN0U3VuIDJzIDAgUworLVIgbSAyMDA3IDIwMDggLSBPIGxhc3RTdW4gMnMgMSBECisrOTozMCBBVSBBQyVzVAorK1IgQVcgMTk3NCBvIC0gTyBsYXN0U3VuIDJzIDEgRAorK1IgQVcgMTk3NSBvIC0gTWFyIFN1bj49MSAycyAwIFMKKytSIEFXIDE5ODMgbyAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFXIDE5ODQgbyAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBBVyAxOTkxIG8gLSBOIDE3IDJzIDEgRAorK1IgQVcgMTk5MiBvIC0gTWFyIFN1bj49MSAycyAwIFMKKytSIEFXIDIwMDYgbyAtIEQgMyAycyAxIEQKKytSIEFXIDIwMDcgMjAwOSAtIE1hciBsYXN0U3VuIDJzIDAgUworK1IgQVcgMjAwNyAyMDA4IC0gTyBsYXN0U3VuIDJzIDEgRAorIFogQXVzdHJhbGlhL1BlcnRoIDc6NDM6MjQgLSBMTVQgMTg5NSBECistOCBsIEFXJXNUIDE5NDMgSnVsCistOCBtIEFXJXNUCisrOCBBVSBBVyVzVCAxOTQzIEp1bAorKzggQVcgQVclc1QKKyBaIEF1c3RyYWxpYS9FdWNsYSA4OjM1OjI4IC0gTE1UIDE4OTUgRAorLTg6NDUgbCArMDg0NS8rMDk0NSAxOTQzIEp1bAorLTg6NDUgbSArMDg0NS8rMDk0NQorLVIgbiAxOTcxIG8gLSBPIGxhc3RTdW4gMnMgMSBECistUiBuIDE5NzIgbyAtIEYgbGFzdFN1biAycyAwIFMKKy1SIG4gMTk4OSAxOTkxIC0gTyBsYXN0U3VuIDJzIDEgRAorLVIgbiAxOTkwIDE5OTIgLSBNYXIgU3VuPj0xIDJzIDAgUworLVIgbyAxOTkyIDE5OTMgLSBPIGxhc3RTdW4gMnMgMSBECistUiBvIDE5OTMgMTk5NCAtIE1hciBTdW4+PTEgMnMgMCBTCisrODo0NSBBVSArMDg0NS8rMDk0NSAxOTQzIEp1bAorKzg6NDUgQVcgKzA4NDUvKzA5NDUKKytSIEFRIDE5NzEgbyAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFRIDE5NzIgbyAtIEYgbGFzdFN1biAycyAwIFMKKytSIEFRIDE5ODkgMTk5MSAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFRIDE5OTAgMTk5MiAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBIbyAxOTkyIDE5OTMgLSBPIGxhc3RTdW4gMnMgMSBECisrUiBIbyAxOTkzIDE5OTQgLSBNYXIgU3VuPj0xIDJzIDAgUworIFogQXVzdHJhbGlhL0JyaXNiYW5lIDEwOjEyOjggLSBMTVQgMTg5NQorLTEwIGwgQUUlc1QgMTk3MQorLTEwIG4gQUUlc1QKKysxMCBBVSBBRSVzVCAxOTcxCisrMTAgQVEgQUUlc1QKKyBaIEF1c3RyYWxpYS9MaW5kZW1hbiA5OjU1OjU2IC0gTE1UIDE4OTUKKy0xMCBsIEFFJXNUIDE5NzEKKy0xMCBuIEFFJXNUIDE5OTIgSnVsCistMTAgbyBBRSVzVAorLVIgcCAxOTcxIDE5ODUgLSBPIGxhc3RTdW4gMnMgMSBECistUiBwIDE5ODYgbyAtIE8gMTkgMnMgMSBECistUiBwIDE5ODcgMjAwNyAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHAgMTk3MiBvIC0gRiAyNyAycyAwIFMKKy1SIHAgMTk3MyAxOTg1IC0gTWFyIFN1bj49MSAycyAwIFMKKy1SIHAgMTk4NiAxOTkwIC0gTWFyIFN1bj49MTUgMnMgMCBTCistUiBwIDE5OTEgbyAtIE1hciAzIDJzIDAgUworLVIgcCAxOTkyIG8gLSBNYXIgMjIgMnMgMCBTCistUiBwIDE5OTMgbyAtIE1hciA3IDJzIDAgUworLVIgcCAxOTk0IG8gLSBNYXIgMjAgMnMgMCBTCistUiBwIDE5OTUgMjAwNSAtIE1hciBsYXN0U3VuIDJzIDAgUworLVIgcCAyMDA2IG8gLSBBcCAyIDJzIDAgUworLVIgcCAyMDA3IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKy1SIHAgMjAwOCBtYSAtIEFwIFN1bj49MSAycyAwIFMKKy1SIHAgMjAwOCBtYSAtIE8gU3VuPj0xIDJzIDEgRAorKzEwIEFVIEFFJXNUIDE5NzEKKysxMCBBUSBBRSVzVCAxOTkyIEp1bAorKzEwIEhvIEFFJXNUCisrUiBBUyAxOTcxIDE5ODUgLSBPIGxhc3RTdW4gMnMgMSBECisrUiBBUyAxOTg2IG8gLSBPIDE5IDJzIDEgRAorK1IgQVMgMTk4NyAyMDA3IC0gTyBsYXN0U3VuIDJzIDEgRAorK1IgQVMgMTk3MiBvIC0gRiAyNyAycyAwIFMKKytSIEFTIDE5NzMgMTk4NSAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBBUyAxOTg2IDE5OTAgLSBNYXIgU3VuPj0xNSAycyAwIFMKKytSIEFTIDE5OTEgbyAtIE1hciAzIDJzIDAgUworK1IgQVMgMTk5MiBvIC0gTWFyIDIyIDJzIDAgUworK1IgQVMgMTk5MyBvIC0gTWFyIDcgMnMgMCBTCisrUiBBUyAxOTk0IG8gLSBNYXIgMjAgMnMgMCBTCisrUiBBUyAxOTk1IDIwMDUgLSBNYXIgbGFzdFN1biAycyAwIFMKKytSIEFTIDIwMDYgbyAtIEFwIDIgMnMgMCBTCisrUiBBUyAyMDA3IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKytSIEFTIDIwMDggbWEgLSBBcCBTdW4+PTEgMnMgMCBTCisrUiBBUyAyMDA4IG1hIC0gTyBTdW4+PTEgMnMgMSBECisgWiBBdXN0cmFsaWEvQWRlbGFpZGUgOToxNDoyMCAtIExNVCAxODk1IEYKKyA5IC0gQUNTVCAxODk5IE1heQorLTk6MzAgbCBBQyVzVCAxOTcxCistOTozMCBwIEFDJXNUCistUiBxIDE5NjcgbyAtIE8gU3VuPj0xIDJzIDEgRAorLVIgcSAxOTY4IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKy1SIHEgMTk2OCAxOTg1IC0gTyBsYXN0U3VuIDJzIDEgRAorLVIgcSAxOTY5IDE5NzEgLSBNYXIgU3VuPj04IDJzIDAgUworLVIgcSAxOTcyIG8gLSBGIGxhc3RTdW4gMnMgMCBTCistUiBxIDE5NzMgMTk4MSAtIE1hciBTdW4+PTEgMnMgMCBTCistUiBxIDE5ODIgMTk4MyAtIE1hciBsYXN0U3VuIDJzIDAgUworLVIgcSAxOTg0IDE5ODYgLSBNYXIgU3VuPj0xIDJzIDAgUworLVIgcSAxOTg2IG8gLSBPIFN1bj49MTUgMnMgMSBECistUiBxIDE5ODcgMTk5MCAtIE1hciBTdW4+PTE1IDJzIDAgUworLVIgcSAxOTg3IG8gLSBPIFN1bj49MjIgMnMgMSBECistUiBxIDE5ODggMTk5MCAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHEgMTk5MSAxOTk5IC0gTyBTdW4+PTEgMnMgMSBECistUiBxIDE5OTEgMjAwNSAtIE1hciBsYXN0U3VuIDJzIDAgUworLVIgcSAyMDAwIG8gLSBBdSBsYXN0U3VuIDJzIDEgRAorLVIgcSAyMDAxIG1hIC0gTyBTdW4+PTEgMnMgMSBECistUiBxIDIwMDYgbyAtIEFwIFN1bj49MSAycyAwIFMKKy1SIHEgMjAwNyBvIC0gTWFyIGxhc3RTdW4gMnMgMCBTCistUiBxIDIwMDggbWEgLSBBcCBTdW4+PTEgMnMgMCBTCisrOTozMCBBVSBBQyVzVCAxOTcxCisrOTozMCBBUyBBQyVzVAorK1IgQVQgMTk2NyBvIC0gTyBTdW4+PTEgMnMgMSBECisrUiBBVCAxOTY4IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKytSIEFUIDE5NjggMTk4NSAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFUIDE5NjkgMTk3MSAtIE1hciBTdW4+PTggMnMgMCBTCisrUiBBVCAxOTcyIG8gLSBGIGxhc3RTdW4gMnMgMCBTCisrUiBBVCAxOTczIDE5ODEgLSBNYXIgU3VuPj0xIDJzIDAgUworK1IgQVQgMTk4MiAxOTgzIC0gTWFyIGxhc3RTdW4gMnMgMCBTCisrUiBBVCAxOTg0IDE5ODYgLSBNYXIgU3VuPj0xIDJzIDAgUworK1IgQVQgMTk4NiBvIC0gTyBTdW4+PTE1IDJzIDEgRAorK1IgQVQgMTk4NyAxOTkwIC0gTWFyIFN1bj49MTUgMnMgMCBTCisrUiBBVCAxOTg3IG8gLSBPIFN1bj49MjIgMnMgMSBECisrUiBBVCAxOTg4IDE5OTAgLSBPIGxhc3RTdW4gMnMgMSBECisrUiBBVCAxOTkxIDE5OTkgLSBPIFN1bj49MSAycyAxIEQKKytSIEFUIDE5OTEgMjAwNSAtIE1hciBsYXN0U3VuIDJzIDAgUworK1IgQVQgMjAwMCBvIC0gQXUgbGFzdFN1biAycyAxIEQKKytSIEFUIDIwMDEgbWEgLSBPIFN1bj49MSAycyAxIEQKKytSIEFUIDIwMDYgbyAtIEFwIFN1bj49MSAycyAwIFMKKytSIEFUIDIwMDcgbyAtIE1hciBsYXN0U3VuIDJzIDAgUworK1IgQVQgMjAwOCBtYSAtIEFwIFN1bj49MSAycyAwIFMKKyBaIEF1c3RyYWxpYS9Ib2JhcnQgOTo0OToxNiAtIExNVCAxODk1IFMKKyAxMCAtIEFFU1QgMTkxNiBPIDEgMgorIDEwIDEgQUVEVCAxOTE3IEYKKy0xMCBsIEFFJXNUIDE5NjcKKy0xMCBxIEFFJXNUCisrMTAgQVUgQUUlc1QgMTk2NworKzEwIEFUIEFFJXNUCisgWiBBdXN0cmFsaWEvQ3VycmllIDk6MzU6MjggLSBMTVQgMTg5NSBTCisgMTAgLSBBRVNUIDE5MTYgTyAxIDIKKyAxMCAxIEFFRFQgMTkxNyBGCistMTAgbCBBRSVzVCAxOTcxIEp1bAorLTEwIHEgQUUlc1QKKy1SIHIgMTk3MSAxOTg1IC0gTyBsYXN0U3VuIDJzIDEgRAorLVIgciAxOTcyIG8gLSBGIGxhc3RTdW4gMnMgMCBTCistUiByIDE5NzMgMTk4NSAtIE1hciBTdW4+PTEgMnMgMCBTCistUiByIDE5ODYgMTk5MCAtIE1hciBTdW4+PTE1IDJzIDAgUworLVIgciAxOTg2IDE5ODcgLSBPIFN1bj49MTUgMnMgMSBECistUiByIDE5ODggMTk5OSAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHIgMTk5MSAxOTk0IC0gTWFyIFN1bj49MSAycyAwIFMKKy1SIHIgMTk5NSAyMDA1IC0gTWFyIGxhc3RTdW4gMnMgMCBTCistUiByIDIwMDAgbyAtIEF1IGxhc3RTdW4gMnMgMSBECistUiByIDIwMDEgMjAwNyAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHIgMjAwNiBvIC0gQXAgU3VuPj0xIDJzIDAgUworLVIgciAyMDA3IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKy1SIHIgMjAwOCBtYSAtIEFwIFN1bj49MSAycyAwIFMKKy1SIHIgMjAwOCBtYSAtIE8gU3VuPj0xIDJzIDEgRAorKzEwIEFVIEFFJXNUIDE5NzEgSnVsCisrMTAgQVQgQUUlc1QKKytSIEFWIDE5NzEgMTk4NSAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFWIDE5NzIgbyAtIEYgbGFzdFN1biAycyAwIFMKKytSIEFWIDE5NzMgMTk4NSAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBBViAxOTg2IDE5OTAgLSBNYXIgU3VuPj0xNSAycyAwIFMKKytSIEFWIDE5ODYgMTk4NyAtIE8gU3VuPj0xNSAycyAxIEQKKytSIEFWIDE5ODggMTk5OSAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFWIDE5OTEgMTk5NCAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBBViAxOTk1IDIwMDUgLSBNYXIgbGFzdFN1biAycyAwIFMKKytSIEFWIDIwMDAgbyAtIEF1IGxhc3RTdW4gMnMgMSBECisrUiBBViAyMDAxIDIwMDcgLSBPIGxhc3RTdW4gMnMgMSBECisrUiBBViAyMDA2IG8gLSBBcCBTdW4+PTEgMnMgMCBTCisrUiBBViAyMDA3IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKytSIEFWIDIwMDggbWEgLSBBcCBTdW4+PTEgMnMgMCBTCisrUiBBViAyMDA4IG1hIC0gTyBTdW4+PTEgMnMgMSBECisgWiBBdXN0cmFsaWEvTWVsYm91cm5lIDk6Mzk6NTIgLSBMTVQgMTg5NSBGCistMTAgbCBBRSVzVCAxOTcxCistMTAgciBBRSVzVAorLVIgcyAxOTcxIDE5ODUgLSBPIGxhc3RTdW4gMnMgMSBECistUiBzIDE5NzIgbyAtIEYgMjcgMnMgMCBTCistUiBzIDE5NzMgMTk4MSAtIE1hciBTdW4+PTEgMnMgMCBTCistUiBzIDE5ODIgbyAtIEFwIFN1bj49MSAycyAwIFMKKy1SIHMgMTk4MyAxOTg1IC0gTWFyIFN1bj49MSAycyAwIFMKKy1SIHMgMTk4NiAxOTg5IC0gTWFyIFN1bj49MTUgMnMgMCBTCistUiBzIDE5ODYgbyAtIE8gMTkgMnMgMSBECistUiBzIDE5ODcgMTk5OSAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHMgMTk5MCAxOTk1IC0gTWFyIFN1bj49MSAycyAwIFMKKy1SIHMgMTk5NiAyMDA1IC0gTWFyIGxhc3RTdW4gMnMgMCBTCistUiBzIDIwMDAgbyAtIEF1IGxhc3RTdW4gMnMgMSBECistUiBzIDIwMDEgMjAwNyAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHMgMjAwNiBvIC0gQXAgU3VuPj0xIDJzIDAgUworLVIgcyAyMDA3IG8gLSBNYXIgbGFzdFN1biAycyAwIFMKKy1SIHMgMjAwOCBtYSAtIEFwIFN1bj49MSAycyAwIFMKKy1SIHMgMjAwOCBtYSAtIE8gU3VuPj0xIDJzIDEgRAorKzEwIEFVIEFFJXNUIDE5NzEKKysxMCBBViBBRSVzVAorK1IgQU4gMTk3MSAxOTg1IC0gTyBsYXN0U3VuIDJzIDEgRAorK1IgQU4gMTk3MiBvIC0gRiAyNyAycyAwIFMKKytSIEFOIDE5NzMgMTk4MSAtIE1hciBTdW4+PTEgMnMgMCBTCisrUiBBTiAxOTgyIG8gLSBBcCBTdW4+PTEgMnMgMCBTCisrUiBBTiAxOTgzIDE5ODUgLSBNYXIgU3VuPj0xIDJzIDAgUworK1IgQU4gMTk4NiAxOTg5IC0gTWFyIFN1bj49MTUgMnMgMCBTCisrUiBBTiAxOTg2IG8gLSBPIDE5IDJzIDEgRAorK1IgQU4gMTk4NyAxOTk5IC0gTyBsYXN0U3VuIDJzIDEgRAorK1IgQU4gMTk5MCAxOTk1IC0gTWFyIFN1bj49MSAycyAwIFMKKytSIEFOIDE5OTYgMjAwNSAtIE1hciBsYXN0U3VuIDJzIDAgUworK1IgQU4gMjAwMCBvIC0gQXUgbGFzdFN1biAycyAxIEQKKytSIEFOIDIwMDEgMjAwNyAtIE8gbGFzdFN1biAycyAxIEQKKytSIEFOIDIwMDYgbyAtIEFwIFN1bj49MSAycyAwIFMKKytSIEFOIDIwMDcgbyAtIE1hciBsYXN0U3VuIDJzIDAgUworK1IgQU4gMjAwOCBtYSAtIEFwIFN1bj49MSAycyAwIFMKKytSIEFOIDIwMDggbWEgLSBPIFN1bj49MSAycyAxIEQKKyBaIEF1c3RyYWxpYS9TeWRuZXkgMTA6NDo1MiAtIExNVCAxODk1IEYKKy0xMCBsIEFFJXNUIDE5NzEKKy0xMCBzIEFFJXNUCisrMTAgQVUgQUUlc1QgMTk3MQorKzEwIEFOIEFFJXNUCisgWiBBdXN0cmFsaWEvQnJva2VuX0hpbGwgOToyNTo0OCAtIExNVCAxODk1IEYKKyAxMCAtIEFFU1QgMTg5NiBBdSAyMworIDkgLSBBQ1NUIDE4OTkgTWF5CistOTozMCBsIEFDJXNUIDE5NzEKKy05OjMwIHMgQUMlc1QgMjAwMAorLTk6MzAgcCBBQyVzVAorLVIgdCAxOTgxIDE5ODQgLSBPIGxhc3RTdW4gMiAxIC0KKy1SIHQgMTk4MiAxOTg1IC0gTWFyIFN1bj49MSAyIDAgLQorLVIgdCAxOTg1IG8gLSBPIGxhc3RTdW4gMiAwOjMwIC0KKy1SIHQgMTk4NiAxOTg5IC0gTWFyIFN1bj49MTUgMiAwIC0KKy1SIHQgMTk4NiBvIC0gTyAxOSAyIDA6MzAgLQorLVIgdCAxOTg3IDE5OTkgLSBPIGxhc3RTdW4gMiAwOjMwIC0KKy1SIHQgMTk5MCAxOTk1IC0gTWFyIFN1bj49MSAyIDAgLQorLVIgdCAxOTk2IDIwMDUgLSBNYXIgbGFzdFN1biAyIDAgLQorLVIgdCAyMDAwIG8gLSBBdSBsYXN0U3VuIDIgMDozMCAtCistUiB0IDIwMDEgMjAwNyAtIE8gbGFzdFN1biAyIDA6MzAgLQorLVIgdCAyMDA2IG8gLSBBcCBTdW4+PTEgMiAwIC0KKy1SIHQgMjAwNyBvIC0gTWFyIGxhc3RTdW4gMiAwIC0KKy1SIHQgMjAwOCBtYSAtIEFwIFN1bj49MSAyIDAgLQorLVIgdCAyMDA4IG1hIC0gTyBTdW4+PTEgMiAwOjMwIC0KKys5OjMwIEFVIEFDJXNUIDE5NzEKKys5OjMwIEFOIEFDJXNUIDIwMDAKKys5OjMwIEFTIEFDJXNUCisrUiBMSCAxOTgxIDE5ODQgLSBPIGxhc3RTdW4gMiAxIC0KKytSIExIIDE5ODIgMTk4NSAtIE1hciBTdW4+PTEgMiAwIC0KKytSIExIIDE5ODUgbyAtIE8gbGFzdFN1biAyIDA6MzAgLQorK1IgTEggMTk4NiAxOTg5IC0gTWFyIFN1bj49MTUgMiAwIC0KKytSIExIIDE5ODYgbyAtIE8gMTkgMiAwOjMwIC0KKytSIExIIDE5ODcgMTk5OSAtIE8gbGFzdFN1biAyIDA6MzAgLQorK1IgTEggMTk5MCAxOTk1IC0gTWFyIFN1bj49MSAyIDAgLQorK1IgTEggMTk5NiAyMDA1IC0gTWFyIGxhc3RTdW4gMiAwIC0KKytSIExIIDIwMDAgbyAtIEF1IGxhc3RTdW4gMiAwOjMwIC0KKytSIExIIDIwMDEgMjAwNyAtIE8gbGFzdFN1biAyIDA6MzAgLQorK1IgTEggMjAwNiBvIC0gQXAgU3VuPj0xIDIgMCAtCisrUiBMSCAyMDA3IG8gLSBNYXIgbGFzdFN1biAyIDAgLQorK1IgTEggMjAwOCBtYSAtIEFwIFN1bj49MSAyIDAgLQorK1IgTEggMjAwOCBtYSAtIE8gU3VuPj0xIDIgMDozMCAtCisgWiBBdXN0cmFsaWEvTG9yZF9Ib3dlIDEwOjM2OjIwIC0gTE1UIDE4OTUgRgorIDEwIC0gQUVTVCAxOTgxIE1hcgorLTEwOjMwIHQgKzEwMzAvKzExMzAgMTk4NSBKdWwKKy0xMDozMCB0ICsxMDMwLysxMQorKzEwOjMwIExIICsxMDMwLysxMTMwIDE5ODUgSnVsCisrMTA6MzAgTEggKzEwMzAvKzExCisgWiBBbnRhcmN0aWNhL01hY3F1YXJpZSAwIC0gLTAwIDE4OTkgTgorIDEwIC0gQUVTVCAxOTE2IE8gMSAyCisgMTAgMSBBRURUIDE5MTcgRgorLTEwIGwgQUUlc1QgMTkxOSBBcCAxIDBzCisrMTAgQVUgQUUlc1QgMTkxOSBBcCAxIDBzCisgMCAtIC0wMCAxOTQ4IE1hciAyNQorLTEwIGwgQUUlc1QgMTk2NworLTEwIHEgQUUlc1QgMjAxMCBBcCA0IDMKKysxMCBBVSBBRSVzVCAxOTY3CisrMTAgQVQgQUUlc1QgMjAxMCBBcCA0IDMKKyAxMSAtICsxMQorIFogSW5kaWFuL0NocmlzdG1hcyA3OjI6NTIgLSBMTVQgMTg5NSBGCisgNyAtICswNworIFogSW5kaWFuL0NvY29zIDY6Mjc6NDAgLSBMTVQgMTkwMAorIDY6MzAgLSArMDYzMAorLVIgdSAxOTk4IDE5OTkgLSBOIFN1bj49MSAyIDEgLQorLVIgdSAxOTk5IDIwMDAgLSBGIGxhc3RTdW4gMyAwIC0KKy1SIHUgMjAwOSBvIC0gTiAyOSAyIDEgLQorLVIgdSAyMDEwIG8gLSBNYXIgbGFzdFN1biAzIDAgLQorLVIgdSAyMDEwIDIwMTMgLSBPIFN1bj49MjEgMiAxIC0KKy1SIHUgMjAxMSBvIC0gTWFyIFN1bj49MSAzIDAgLQorLVIgdSAyMDEyIDIwMTMgLSBKYSBTdW4+PTE4IDMgMCAtCistUiB1IDIwMTQgbyAtIEphIFN1bj49MTggMiAwIC0KKy1SIHUgMjAxNCBtYSAtIE4gU3VuPj0xIDIgMSAtCistUiB1IDIwMTUgbWEgLSBKYSBTdW4+PTE0IDMgMCAtCisrUiBGSiAxOTk4IDE5OTkgLSBOIFN1bj49MSAyIDEgLQorK1IgRkogMTk5OSAyMDAwIC0gRiBsYXN0U3VuIDMgMCAtCisrUiBGSiAyMDA5IG8gLSBOIDI5IDIgMSAtCisrUiBGSiAyMDEwIG8gLSBNYXIgbGFzdFN1biAzIDAgLQorK1IgRkogMjAxMCAyMDEzIC0gTyBTdW4+PTIxIDIgMSAtCisrUiBGSiAyMDExIG8gLSBNYXIgU3VuPj0xIDMgMCAtCisrUiBGSiAyMDEyIDIwMTMgLSBKYSBTdW4+PTE4IDMgMCAtCisrUiBGSiAyMDE0IG8gLSBKYSBTdW4+PTE4IDIgMCAtCisrUiBGSiAyMDE0IG1hIC0gTiBTdW4+PTEgMiAxIC0KKytSIEZKIDIwMTUgbWEgLSBKYSBTdW4+PTEzIDMgMCAtCisgWiBQYWNpZmljL0ZpamkgMTE6NTU6NDQgLSBMTVQgMTkxNSBPIDI2CistMTIgdSArMTIvKzEzCisrMTIgRkogKzEyLysxMworIFogUGFjaWZpYy9HYW1iaWVyIC04OjU5OjQ4IC0gTE1UIDE5MTIgTworIC05IC0gLTA5CisgWiBQYWNpZmljL01hcnF1ZXNhcyAtOToxOCAtIExNVCAxOTEyIE8KK0BAIC0xMjM5LDUwICsxMjYzLDUwIEBAIFogUGFjaWZpYy9OYXVydSAxMTo3OjQwIC0gTE1UIDE5MjEgSmEgMTUKKyA5IC0gKzA5IDE5NDQgQXUgMTUKKyAxMTozMCAtICsxMTMwIDE5NzkgTWF5CisgMTIgLSArMTIKKy1SIHYgMTk3NyAxOTc4IC0gRCBTdW4+PTEgMCAxIC0KKy1SIHYgMTk3OCAxOTc5IC0gRiAyNyAwIDAgLQorLVIgdiAxOTk2IG8gLSBEIDEgMnMgMSAtCistUiB2IDE5OTcgbyAtIE1hciAyIDJzIDAgLQorK1IgTkMgMTk3NyAxOTc4IC0gRCBTdW4+PTEgMCAxIC0KKytSIE5DIDE5NzggMTk3OSAtIEYgMjcgMCAwIC0KKytSIE5DIDE5OTYgbyAtIEQgMSAycyAxIC0KKytSIE5DIDE5OTcgbyAtIE1hciAyIDJzIDAgLQorIFogUGFjaWZpYy9Ob3VtZWEgMTE6NTo0OCAtIExNVCAxOTEyIEphIDEzCistMTEgdiArMTEvKzEyCistUiB3IDE5MjcgbyAtIE4gNiAyIDEgUworLVIgdyAxOTI4IG8gLSBNYXIgNCAyIDAgTQorLVIgdyAxOTI4IDE5MzMgLSBPIFN1bj49OCAyIDA6MzAgUworLVIgdyAxOTI5IDE5MzMgLSBNYXIgU3VuPj0xNSAyIDAgTQorLVIgdyAxOTM0IDE5NDAgLSBBcCBsYXN0U3VuIDIgMCBNCistUiB3IDE5MzQgMTk0MCAtIFMgbGFzdFN1biAyIDA6MzAgUworLVIgdyAxOTQ2IG8gLSBKYSAxIDAgMCBTCistUiB3IDE5NzQgbyAtIE4gU3VuPj0xIDJzIDEgRAorLVIgeCAxOTc0IG8gLSBOIFN1bj49MSAyOjQ1cyAxIC0KKy1SIHcgMTk3NSBvIC0gRiBsYXN0U3VuIDJzIDAgUworLVIgeCAxOTc1IG8gLSBGIGxhc3RTdW4gMjo0NXMgMCAtCistUiB3IDE5NzUgMTk4OCAtIE8gbGFzdFN1biAycyAxIEQKKy1SIHggMTk3NSAxOTg4IC0gTyBsYXN0U3VuIDI6NDVzIDEgLQorLVIgdyAxOTc2IDE5ODkgLSBNYXIgU3VuPj0xIDJzIDAgUworLVIgeCAxOTc2IDE5ODkgLSBNYXIgU3VuPj0xIDI6NDVzIDAgLQorLVIgdyAxOTg5IG8gLSBPIFN1bj49OCAycyAxIEQKKy1SIHggMTk4OSBvIC0gTyBTdW4+PTggMjo0NXMgMSAtCistUiB3IDE5OTAgMjAwNiAtIE8gU3VuPj0xIDJzIDEgRAorLVIgeCAxOTkwIDIwMDYgLSBPIFN1bj49MSAyOjQ1cyAxIC0KKy1SIHcgMTk5MCAyMDA3IC0gTWFyIFN1bj49MTUgMnMgMCBTCistUiB4IDE5OTAgMjAwNyAtIE1hciBTdW4+PTE1IDI6NDVzIDAgLQorLVIgdyAyMDA3IG1hIC0gUyBsYXN0U3VuIDJzIDEgRAorLVIgeCAyMDA3IG1hIC0gUyBsYXN0U3VuIDI6NDVzIDEgLQorLVIgdyAyMDA4IG1hIC0gQXAgU3VuPj0xIDJzIDAgUworLVIgeCAyMDA4IG1hIC0gQXAgU3VuPj0xIDI6NDVzIDAgLQorKzExIE5DICsxMS8rMTIKKytSIE5aIDE5MjcgbyAtIE4gNiAyIDEgUworK1IgTlogMTkyOCBvIC0gTWFyIDQgMiAwIE0KKytSIE5aIDE5MjggMTkzMyAtIE8gU3VuPj04IDIgMDozMCBTCisrUiBOWiAxOTI5IDE5MzMgLSBNYXIgU3VuPj0xNSAyIDAgTQorK1IgTlogMTkzNCAxOTQwIC0gQXAgbGFzdFN1biAyIDAgTQorK1IgTlogMTkzNCAxOTQwIC0gUyBsYXN0U3VuIDIgMDozMCBTCisrUiBOWiAxOTQ2IG8gLSBKYSAxIDAgMCBTCisrUiBOWiAxOTc0IG8gLSBOIFN1bj49MSAycyAxIEQKKytSIGsgMTk3NCBvIC0gTiBTdW4+PTEgMjo0NXMgMSAtCisrUiBOWiAxOTc1IG8gLSBGIGxhc3RTdW4gMnMgMCBTCisrUiBrIDE5NzUgbyAtIEYgbGFzdFN1biAyOjQ1cyAwIC0KKytSIE5aIDE5NzUgMTk4OCAtIE8gbGFzdFN1biAycyAxIEQKKytSIGsgMTk3NSAxOTg4IC0gTyBsYXN0U3VuIDI6NDVzIDEgLQorK1IgTlogMTk3NiAxOTg5IC0gTWFyIFN1bj49MSAycyAwIFMKKytSIGsgMTk3NiAxOTg5IC0gTWFyIFN1bj49MSAyOjQ1cyAwIC0KKytSIE5aIDE5ODkgbyAtIE8gU3VuPj04IDJzIDEgRAorK1IgayAxOTg5IG8gLSBPIFN1bj49OCAyOjQ1cyAxIC0KKytSIE5aIDE5OTAgMjAwNiAtIE8gU3VuPj0xIDJzIDEgRAorK1IgayAxOTkwIDIwMDYgLSBPIFN1bj49MSAyOjQ1cyAxIC0KKytSIE5aIDE5OTAgMjAwNyAtIE1hciBTdW4+PTE1IDJzIDAgUworK1IgayAxOTkwIDIwMDcgLSBNYXIgU3VuPj0xNSAyOjQ1cyAwIC0KKytSIE5aIDIwMDcgbWEgLSBTIGxhc3RTdW4gMnMgMSBECisrUiBrIDIwMDcgbWEgLSBTIGxhc3RTdW4gMjo0NXMgMSAtCisrUiBOWiAyMDA4IG1hIC0gQXAgU3VuPj0xIDJzIDAgUworK1IgayAyMDA4IG1hIC0gQXAgU3VuPj0xIDI6NDVzIDAgLQorIFogUGFjaWZpYy9BdWNrbGFuZCAxMTozOTo0IC0gTE1UIDE4NjggTiAyCistMTE6MzAgdyBOWiVzVCAxOTQ2CistMTIgdyBOWiVzVAorKzExOjMwIE5aIE5aJXNUIDE5NDYKKysxMiBOWiBOWiVzVAorIFogUGFjaWZpYy9DaGF0aGFtIDEyOjEzOjQ4IC0gTE1UIDE4NjggTiAyCisgMTI6MTUgLSArMTIxNSAxOTQ2CistMTI6NDUgeCArMTI0NS8rMTM0NQorKzEyOjQ1IGsgKzEyNDUvKzEzNDUKKyBMaSBQYWNpZmljL0F1Y2tsYW5kIEFudGFyY3RpY2EvTWNNdXJkbworLVIgeSAxOTc4IG8gLSBOIDEyIDAgMDozMCAtCistUiB5IDE5NzkgMTk5MSAtIE1hciBTdW4+PTEgMCAwIC0KKy1SIHkgMTk3OSAxOTkwIC0gTyBsYXN0U3VuIDAgMDozMCAtCisrUiBDSyAxOTc4IG8gLSBOIDEyIDAgMDozMCAtCisrUiBDSyAxOTc5IDE5OTEgLSBNYXIgU3VuPj0xIDAgMCAtCisrUiBDSyAxOTc5IDE5OTAgLSBPIGxhc3RTdW4gMCAwOjMwIC0KKyBaIFBhY2lmaWMvUmFyb3RvbmdhIC0xMDozOTo0IC0gTE1UIDE5MDEKKyAtMTA6MzAgLSAtMTAzMCAxOTc4IE4gMTIKKy0tMTAgeSAtMTAvLTA5MzAKKystMTAgQ0sgLTEwLy0wOTMwCisgWiBQYWNpZmljL05pdWUgLTExOjE5OjQwIC0gTE1UIDE5MDEKKyAtMTE6MjAgLSAtMTEyMCAxOTUxCisgLTExOjMwIC0gLTExMzAgMTk3OCBPCitAQCAtMTMxMSw1NzAgKzEzMzUsNTcwIEBAIFogUGFjaWZpYy9QYWdvX1BhZ28gMTI6Mzc6MTIgLSBMTVQgMTg5MiBKdWwgNQorIC0xMToyMjo0OCAtIExNVCAxOTExCisgLTExIC0gU1NUCisgTGkgUGFjaWZpYy9QYWdvX1BhZ28gUGFjaWZpYy9NaWR3YXkKKy1SIHogMjAxMCBvIC0gUyBsYXN0U3VuIDAgMSAtCistUiB6IDIwMTEgbyAtIEFwIFNhdD49MSA0IDAgLQorLVIgeiAyMDExIG8gLSBTIGxhc3RTYXQgMyAxIC0KKy1SIHogMjAxMiBtYSAtIEFwIFN1bj49MSA0IDAgLQorLVIgeiAyMDEyIG1hIC0gUyBsYXN0U3VuIDMgMSAtCisrUiBXUyAyMDEwIG8gLSBTIGxhc3RTdW4gMCAxIC0KKytSIFdTIDIwMTEgbyAtIEFwIFNhdD49MSA0IDAgLQorK1IgV1MgMjAxMSBvIC0gUyBsYXN0U2F0IDMgMSAtCisrUiBXUyAyMDEyIG1hIC0gQXAgU3VuPj0xIDQgMCAtCisrUiBXUyAyMDEyIG1hIC0gUyBsYXN0U3VuIDMgMSAtCisgWiBQYWNpZmljL0FwaWEgMTI6MzM6NCAtIExNVCAxODkyIEp1bCA1CisgLTExOjI2OjU2IC0gTE1UIDE5MTEKKyAtMTE6MzAgLSAtMTEzMCAxOTUwCistLTExIHogLTExLy0xMCAyMDExIEQgMjkgMjQKKy0xMyB6ICsxMy8rMTQKKystMTEgV1MgLTExLy0xMCAyMDExIEQgMjkgMjQKKysxMyBXUyArMTMvKzE0CisgWiBQYWNpZmljL0d1YWRhbGNhbmFsIDEwOjM5OjQ4IC0gTE1UIDE5MTIgTworIDExIC0gKzExCisgWiBQYWNpZmljL0Zha2FvZm8gLTExOjI0OjU2IC0gTE1UIDE5MDEKKyAtMTEgLSAtMTEgMjAxMSBEIDMwCisgMTMgLSArMTMKKy1SICEgMTk5OSBvIC0gTyA3IDJzIDEgLQorLVIgISAyMDAwIG8gLSBNYXIgMTkgMnMgMCAtCistUiAhIDIwMDAgMjAwMSAtIE4gU3VuPj0xIDIgMSAtCistUiAhIDIwMDEgMjAwMiAtIEphIGxhc3RTdW4gMiAwIC0KKy1SICEgMjAxNiBvIC0gTiBTdW4+PTEgMiAxIC0KKy1SICEgMjAxNyBvIC0gSmEgU3VuPj0xNSAzIDAgLQorK1IgVE8gMTk5OSBvIC0gTyA3IDJzIDEgLQorK1IgVE8gMjAwMCBvIC0gTWFyIDE5IDJzIDAgLQorK1IgVE8gMjAwMCAyMDAxIC0gTiBTdW4+PTEgMiAxIC0KKytSIFRPIDIwMDEgMjAwMiAtIEphIGxhc3RTdW4gMiAwIC0KKytSIFRPIDIwMTYgbyAtIE4gU3VuPj0xIDIgMSAtCisrUiBUTyAyMDE3IG8gLSBKYSBTdW4+PTE1IDMgMCAtCisgWiBQYWNpZmljL1RvbmdhdGFwdSAxMjoxOToyMCAtIExNVCAxOTAxCisgMTI6MjAgLSArMTIyMCAxOTQxCisgMTMgLSArMTMgMTk5OQorLTEzICEgKzEzLysxNAorKzEzIFRPICsxMy8rMTQKKyBaIFBhY2lmaWMvRnVuYWZ1dGkgMTE6NTY6NTIgLSBMTVQgMTkwMQorIDEyIC0gKzEyCisgWiBQYWNpZmljL1dha2UgMTE6NjoyOCAtIExNVCAxOTAxCisgMTIgLSArMTIKKy1SICQgMTk4MyBvIC0gUyAyNSAwIDEgLQorLVIgJCAxOTg0IDE5OTEgLSBNYXIgU3VuPj0yMyAwIDAgLQorLVIgJCAxOTg0IG8gLSBPIDIzIDAgMSAtCistUiAkIDE5ODUgMTk5MSAtIFMgU3VuPj0yMyAwIDEgLQorLVIgJCAxOTkyIDE5OTMgLSBKYSBTdW4+PTIzIDAgMCAtCistUiAkIDE5OTIgbyAtIE8gU3VuPj0yMyAwIDEgLQorK1IgVlUgMTk4MyBvIC0gUyAyNSAwIDEgLQorK1IgVlUgMTk4NCAxOTkxIC0gTWFyIFN1bj49MjMgMCAwIC0KKytSIFZVIDE5ODQgbyAtIE8gMjMgMCAxIC0KKytSIFZVIDE5ODUgMTk5MSAtIFMgU3VuPj0yMyAwIDEgLQorK1IgVlUgMTk5MiAxOTkzIC0gSmEgU3VuPj0yMyAwIDAgLQorK1IgVlUgMTk5MiBvIC0gTyBTdW4+PTIzIDAgMSAtCisgWiBQYWNpZmljL0VmYXRlIDExOjEzOjE2IC0gTE1UIDE5MTIgSmEgMTMKKy0xMSAkICsxMS8rMTIKKysxMSBWVSArMTEvKzEyCisgWiBQYWNpZmljL1dhbGxpcyAxMjoxNToyMCAtIExNVCAxOTAxCisgMTIgLSArMTIKKy1SICUgMTkxNiBvIC0gTWF5IDIxIDJzIDEgQlNUCistUiAlIDE5MTYgbyAtIE8gMSAycyAwIEdNVAorLVIgJSAxOTE3IG8gLSBBcCA4IDJzIDEgQlNUCistUiAlIDE5MTcgbyAtIFMgMTcgMnMgMCBHTVQKKy1SICUgMTkxOCBvIC0gTWFyIDI0IDJzIDEgQlNUCistUiAlIDE5MTggbyAtIFMgMzAgMnMgMCBHTVQKKy1SICUgMTkxOSBvIC0gTWFyIDMwIDJzIDEgQlNUCistUiAlIDE5MTkgbyAtIFMgMjkgMnMgMCBHTVQKKy1SICUgMTkyMCBvIC0gTWFyIDI4IDJzIDEgQlNUCistUiAlIDE5MjAgbyAtIE8gMjUgMnMgMCBHTVQKKy1SICUgMTkyMSBvIC0gQXAgMyAycyAxIEJTVAorLVIgJSAxOTIxIG8gLSBPIDMgMnMgMCBHTVQKKy1SICUgMTkyMiBvIC0gTWFyIDI2IDJzIDEgQlNUCistUiAlIDE5MjIgbyAtIE8gOCAycyAwIEdNVAorLVIgJSAxOTIzIG8gLSBBcCBTdW4+PTE2IDJzIDEgQlNUCistUiAlIDE5MjMgMTkyNCAtIFMgU3VuPj0xNiAycyAwIEdNVAorLVIgJSAxOTI0IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkyNSAxOTI2IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTI1IDE5MzggLSBPIFN1bj49MiAycyAwIEdNVAorLVIgJSAxOTI3IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkyOCAxOTI5IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTMwIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkzMSAxOTMyIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTMzIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkzNCBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTM1IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkzNiAxOTM3IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTM4IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTkzOSBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTM5IG8gLSBOIFN1bj49MTYgMnMgMCBHTVQKKy1SICUgMTk0MCBvIC0gRiBTdW4+PTIzIDJzIDEgQlNUCistUiAlIDE5NDEgbyAtIE1heSBTdW4+PTIgMXMgMiBCRFNUCistUiAlIDE5NDEgMTk0MyAtIEF1IFN1bj49OSAxcyAxIEJTVAorLVIgJSAxOTQyIDE5NDQgLSBBcCBTdW4+PTIgMXMgMiBCRFNUCistUiAlIDE5NDQgbyAtIFMgU3VuPj0xNiAxcyAxIEJTVAorLVIgJSAxOTQ1IG8gLSBBcCBNPj0yIDFzIDIgQkRTVAorLVIgJSAxOTQ1IG8gLSBKdWwgU3VuPj05IDFzIDEgQlNUCistUiAlIDE5NDUgMTk0NiAtIE8gU3VuPj0yIDJzIDAgR01UCistUiAlIDE5NDYgbyAtIEFwIFN1bj49OSAycyAxIEJTVAorLVIgJSAxOTQ3IG8gLSBNYXIgMTYgMnMgMSBCU1QKKy1SICUgMTk0NyBvIC0gQXAgMTMgMXMgMiBCRFNUCistUiAlIDE5NDcgbyAtIEF1IDEwIDFzIDEgQlNUCistUiAlIDE5NDcgbyAtIE4gMiAycyAwIEdNVAorLVIgJSAxOTQ4IG8gLSBNYXIgMTQgMnMgMSBCU1QKKy1SICUgMTk0OCBvIC0gTyAzMSAycyAwIEdNVAorLVIgJSAxOTQ5IG8gLSBBcCAzIDJzIDEgQlNUCistUiAlIDE5NDkgbyAtIE8gMzAgMnMgMCBHTVQKKy1SICUgMTk1MCAxOTUyIC0gQXAgU3VuPj0xNCAycyAxIEJTVAorLVIgJSAxOTUwIDE5NTIgLSBPIFN1bj49MjEgMnMgMCBHTVQKKy1SICUgMTk1MyBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTUzIDE5NjAgLSBPIFN1bj49MiAycyAwIEdNVAorLVIgJSAxOTU0IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTk1NSAxOTU2IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTU3IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTk1OCAxOTU5IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorLVIgJSAxOTYwIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKy1SICUgMTk2MSAxOTYzIC0gTWFyIGxhc3RTdW4gMnMgMSBCU1QKKy1SICUgMTk2MSAxOTY4IC0gTyBTdW4+PTIzIDJzIDAgR01UCistUiAlIDE5NjQgMTk2NyAtIE1hciBTdW4+PTE5IDJzIDEgQlNUCistUiAlIDE5NjggbyAtIEYgMTggMnMgMSBCU1QKKy1SICUgMTk3MiAxOTgwIC0gTWFyIFN1bj49MTYgMnMgMSBCU1QKKy1SICUgMTk3MiAxOTgwIC0gTyBTdW4+PTIzIDJzIDAgR01UCistUiAlIDE5ODEgMTk5NSAtIE1hciBsYXN0U3VuIDF1IDEgQlNUCistUiAlIDE5ODEgMTk4OSAtIE8gU3VuPj0yMyAxdSAwIEdNVAorLVIgJSAxOTkwIDE5OTUgLSBPIFN1bj49MjIgMXUgMCBHTVQKKytSIEcgMTkxNiBvIC0gTWF5IDIxIDJzIDEgQlNUCisrUiBHIDE5MTYgbyAtIE8gMSAycyAwIEdNVAorK1IgRyAxOTE3IG8gLSBBcCA4IDJzIDEgQlNUCisrUiBHIDE5MTcgbyAtIFMgMTcgMnMgMCBHTVQKKytSIEcgMTkxOCBvIC0gTWFyIDI0IDJzIDEgQlNUCisrUiBHIDE5MTggbyAtIFMgMzAgMnMgMCBHTVQKKytSIEcgMTkxOSBvIC0gTWFyIDMwIDJzIDEgQlNUCisrUiBHIDE5MTkgbyAtIFMgMjkgMnMgMCBHTVQKKytSIEcgMTkyMCBvIC0gTWFyIDI4IDJzIDEgQlNUCisrUiBHIDE5MjAgbyAtIE8gMjUgMnMgMCBHTVQKKytSIEcgMTkyMSBvIC0gQXAgMyAycyAxIEJTVAorK1IgRyAxOTIxIG8gLSBPIDMgMnMgMCBHTVQKKytSIEcgMTkyMiBvIC0gTWFyIDI2IDJzIDEgQlNUCisrUiBHIDE5MjIgbyAtIE8gOCAycyAwIEdNVAorK1IgRyAxOTIzIG8gLSBBcCBTdW4+PTE2IDJzIDEgQlNUCisrUiBHIDE5MjMgMTkyNCAtIFMgU3VuPj0xNiAycyAwIEdNVAorK1IgRyAxOTI0IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkyNSAxOTI2IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTI1IDE5MzggLSBPIFN1bj49MiAycyAwIEdNVAorK1IgRyAxOTI3IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkyOCAxOTI5IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTMwIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkzMSAxOTMyIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTMzIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkzNCBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTM1IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkzNiAxOTM3IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTM4IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTkzOSBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTM5IG8gLSBOIFN1bj49MTYgMnMgMCBHTVQKKytSIEcgMTk0MCBvIC0gRiBTdW4+PTIzIDJzIDEgQlNUCisrUiBHIDE5NDEgbyAtIE1heSBTdW4+PTIgMXMgMiBCRFNUCisrUiBHIDE5NDEgMTk0MyAtIEF1IFN1bj49OSAxcyAxIEJTVAorK1IgRyAxOTQyIDE5NDQgLSBBcCBTdW4+PTIgMXMgMiBCRFNUCisrUiBHIDE5NDQgbyAtIFMgU3VuPj0xNiAxcyAxIEJTVAorK1IgRyAxOTQ1IG8gLSBBcCBNPj0yIDFzIDIgQkRTVAorK1IgRyAxOTQ1IG8gLSBKdWwgU3VuPj05IDFzIDEgQlNUCisrUiBHIDE5NDUgMTk0NiAtIE8gU3VuPj0yIDJzIDAgR01UCisrUiBHIDE5NDYgbyAtIEFwIFN1bj49OSAycyAxIEJTVAorK1IgRyAxOTQ3IG8gLSBNYXIgMTYgMnMgMSBCU1QKKytSIEcgMTk0NyBvIC0gQXAgMTMgMXMgMiBCRFNUCisrUiBHIDE5NDcgbyAtIEF1IDEwIDFzIDEgQlNUCisrUiBHIDE5NDcgbyAtIE4gMiAycyAwIEdNVAorK1IgRyAxOTQ4IG8gLSBNYXIgMTQgMnMgMSBCU1QKKytSIEcgMTk0OCBvIC0gTyAzMSAycyAwIEdNVAorK1IgRyAxOTQ5IG8gLSBBcCAzIDJzIDEgQlNUCisrUiBHIDE5NDkgbyAtIE8gMzAgMnMgMCBHTVQKKytSIEcgMTk1MCAxOTUyIC0gQXAgU3VuPj0xNCAycyAxIEJTVAorK1IgRyAxOTUwIDE5NTIgLSBPIFN1bj49MjEgMnMgMCBHTVQKKytSIEcgMTk1MyBvIC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTUzIDE5NjAgLSBPIFN1bj49MiAycyAwIEdNVAorK1IgRyAxOTU0IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTk1NSAxOTU2IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTU3IG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTk1OCAxOTU5IC0gQXAgU3VuPj0xNiAycyAxIEJTVAorK1IgRyAxOTYwIG8gLSBBcCBTdW4+PTkgMnMgMSBCU1QKKytSIEcgMTk2MSAxOTYzIC0gTWFyIGxhc3RTdW4gMnMgMSBCU1QKKytSIEcgMTk2MSAxOTY4IC0gTyBTdW4+PTIzIDJzIDAgR01UCisrUiBHIDE5NjQgMTk2NyAtIE1hciBTdW4+PTE5IDJzIDEgQlNUCisrUiBHIDE5NjggbyAtIEYgMTggMnMgMSBCU1QKKytSIEcgMTk3MiAxOTgwIC0gTWFyIFN1bj49MTYgMnMgMSBCU1QKKytSIEcgMTk3MiAxOTgwIC0gTyBTdW4+PTIzIDJzIDAgR01UCisrUiBHIDE5ODEgMTk5NSAtIE1hciBsYXN0U3VuIDF1IDEgQlNUCisrUiBHIDE5ODEgMTk4OSAtIE8gU3VuPj0yMyAxdSAwIEdNVAorK1IgRyAxOTkwIDE5OTUgLSBPIFN1bj49MjIgMXUgMCBHTVQKKyBaIEV1cm9wZS9Mb25kb24gLTA6MToxNSAtIExNVCAxODQ3IEQgMSAwcworLTAgJSAlcyAxOTY4IE8gMjcKKyswIEcgJXMgMTk2OCBPIDI3CisgMSAtIEJTVCAxOTcxIE8gMzEgMnUKKy0wICUgJXMgMTk5NgorLTAgTyBHTVQvQlNUCisrMCBHICVzIDE5OTYKKyswIEUgR01UL0JTVAorIExpIEV1cm9wZS9Mb25kb24gRXVyb3BlL0plcnNleQorIExpIEV1cm9wZS9Mb25kb24gRXVyb3BlL0d1ZXJuc2V5CisgTGkgRXVyb3BlL0xvbmRvbiBFdXJvcGUvSXNsZV9vZl9NYW4KKy1SICYgMTk3MSBvIC0gTyAzMSAydSAtMSAtCistUiAmIDE5NzIgMTk4MCAtIE1hciBTdW4+PTE2IDJ1IDAgLQorLVIgJiAxOTcyIDE5ODAgLSBPIFN1bj49MjMgMnUgLTEgLQorLVIgJiAxOTgxIG1hIC0gTWFyIGxhc3RTdW4gMXUgMCAtCistUiAmIDE5ODEgMTk4OSAtIE8gU3VuPj0yMyAxdSAtMSAtCistUiAmIDE5OTAgMTk5NSAtIE8gU3VuPj0yMiAxdSAtMSAtCistUiAmIDE5OTYgbWEgLSBPIGxhc3RTdW4gMXUgLTEgLQorK1IgSUUgMTk3MSBvIC0gTyAzMSAydSAtMSAtCisrUiBJRSAxOTcyIDE5ODAgLSBNYXIgU3VuPj0xNiAydSAwIC0KKytSIElFIDE5NzIgMTk4MCAtIE8gU3VuPj0yMyAydSAtMSAtCisrUiBJRSAxOTgxIG1hIC0gTWFyIGxhc3RTdW4gMXUgMCAtCisrUiBJRSAxOTgxIDE5ODkgLSBPIFN1bj49MjMgMXUgLTEgLQorK1IgSUUgMTk5MCAxOTk1IC0gTyBTdW4+PTIyIDF1IC0xIC0KKytSIElFIDE5OTYgbWEgLSBPIGxhc3RTdW4gMXUgLTEgLQorIFogRXVyb3BlL0R1YmxpbiAtMDoyNSAtIExNVCAxODgwIEF1IDIKKyAtMDoyNToyMSAtIERNVCAxOTE2IE1heSAyMSAycworIC0wOjI1OjIxIDEgSVNUIDE5MTYgTyAxIDJzCistMCAlICVzIDE5MjEgRCA2CistMCAlIEdNVC9JU1QgMTk0MCBGIDI1IDJzCisrMCBHICVzIDE5MjEgRCA2CisrMCBHIEdNVC9JU1QgMTk0MCBGIDI1IDJzCisgMCAxIElTVCAxOTQ2IE8gNiAycworIDAgLSBHTVQgMTk0NyBNYXIgMTYgMnMKKyAwIDEgSVNUIDE5NDcgTiAyIDJzCisgMCAtIEdNVCAxOTQ4IEFwIDE4IDJzCistMCAlIEdNVC9JU1QgMTk2OCBPIDI3CistMSAmIElTVC9HTVQKKy1SIE8gMTk3NyAxOTgwIC0gQXAgU3VuPj0xIDF1IDEgUworLVIgTyAxOTc3IG8gLSBTIGxhc3RTdW4gMXUgMCAtCistUiBPIDE5NzggbyAtIE8gMSAxdSAwIC0KKy1SIE8gMTk3OSAxOTk1IC0gUyBsYXN0U3VuIDF1IDAgLQorLVIgTyAxOTgxIG1hIC0gTWFyIGxhc3RTdW4gMXUgMSBTCistUiBPIDE5OTYgbWEgLSBPIGxhc3RTdW4gMXUgMCAtCistUiAnIDE5NzcgMTk4MCAtIEFwIFN1bj49MSAxcyAxIFMKKy1SICcgMTk3NyBvIC0gUyBsYXN0U3VuIDFzIDAgLQorLVIgJyAxOTc4IG8gLSBPIDEgMXMgMCAtCistUiAnIDE5NzkgMTk5NSAtIFMgbGFzdFN1biAxcyAwIC0KKy1SICcgMTk4MSBtYSAtIE1hciBsYXN0U3VuIDFzIDEgUworLVIgJyAxOTk2IG1hIC0gTyBsYXN0U3VuIDFzIDAgLQorLVIgKCAxOTE2IG8gLSBBcCAzMCAyMyAxIFMKKy1SICggMTkxNiBvIC0gTyAxIDEgMCAtCistUiAoIDE5MTcgMTkxOCAtIEFwIE0+PTE1IDJzIDEgUworLVIgKCAxOTE3IDE5MTggLSBTIE0+PTE1IDJzIDAgLQorLVIgKCAxOTQwIG8gLSBBcCAxIDJzIDEgUworLVIgKCAxOTQyIG8gLSBOIDIgMnMgMCAtCistUiAoIDE5NDMgbyAtIE1hciAyOSAycyAxIFMKKy1SICggMTk0MyBvIC0gTyA0IDJzIDAgLQorLVIgKCAxOTQ0IDE5NDUgLSBBcCBNPj0xIDJzIDEgUworLVIgKCAxOTQ0IG8gLSBPIDIgMnMgMCAtCistUiAoIDE5NDUgbyAtIFMgMTYgMnMgMCAtCistUiAoIDE5NzcgMTk4MCAtIEFwIFN1bj49MSAycyAxIFMKKy1SICggMTk3NyBvIC0gUyBsYXN0U3VuIDJzIDAgLQorLVIgKCAxOTc4IG8gLSBPIDEgMnMgMCAtCistUiAoIDE5NzkgMTk5NSAtIFMgbGFzdFN1biAycyAwIC0KKy1SICggMTk4MSBtYSAtIE1hciBsYXN0U3VuIDJzIDEgUworLVIgKCAxOTk2IG1hIC0gTyBsYXN0U3VuIDJzIDAgLQorLVIgVyAxOTc3IDE5ODAgLSBBcCBTdW4+PTEgMCAxIFMKKy1SIFcgMTk3NyBvIC0gUyBsYXN0U3VuIDAgMCAtCistUiBXIDE5NzggbyAtIE8gMSAwIDAgLQorLVIgVyAxOTc5IDE5OTUgLSBTIGxhc3RTdW4gMCAwIC0KKy1SIFcgMTk4MSBtYSAtIE1hciBsYXN0U3VuIDAgMSBTCistUiBXIDE5OTYgbWEgLSBPIGxhc3RTdW4gMCAwIC0KKy1SIE0gMTkxNyBvIC0gSnVsIDEgMjMgMSBNU1QKKy1SIE0gMTkxNyBvIC0gRCAyOCAwIDAgTU1UCistUiBNIDE5MTggbyAtIE1heSAzMSAyMiAyIE1EU1QKKy1SIE0gMTkxOCBvIC0gUyAxNiAxIDEgTVNUCistUiBNIDE5MTkgbyAtIE1heSAzMSAyMyAyIE1EU1QKKy1SIE0gMTkxOSBvIC0gSnVsIDEgMHUgMSBNU0QKKy1SIE0gMTkxOSBvIC0gQXUgMTYgMCAwIE1TSworLVIgTSAxOTIxIG8gLSBGIDE0IDIzIDEgTVNECistUiBNIDE5MjEgbyAtIE1hciAyMCAyMyAyICswNQorLVIgTSAxOTIxIG8gLSBTIDEgMCAxIE1TRAorLVIgTSAxOTIxIG8gLSBPIDEgMCAwIC0KKy1SIE0gMTk4MSAxOTg0IC0gQXAgMSAwIDEgUworLVIgTSAxOTgxIDE5ODMgLSBPIDEgMCAwIC0KKy1SIE0gMTk4NCAxOTk1IC0gUyBsYXN0U3VuIDJzIDAgLQorLVIgTSAxOTg1IDIwMTAgLSBNYXIgbGFzdFN1biAycyAxIFMKKy1SIE0gMTk5NiAyMDEwIC0gTyBsYXN0U3VuIDJzIDAgLQorLVogV0VUIDAgTyBXRSVzVAorLVogQ0VUIDEgKCBDRSVzVAorLVogTUVUIDEgKCBNRSVzVAorLVogRUVUIDIgTyBFRSVzVAorLVIgKSAxOTQwIG8gLSBKdW4gMTYgMCAxIFMKKy1SICkgMTk0MiBvIC0gTiAyIDMgMCAtCistUiApIDE5NDMgbyAtIE1hciAyOSAyIDEgUworLVIgKSAxOTQzIG8gLSBBcCAxMCAzIDAgLQorLVIgKSAxOTc0IG8gLSBNYXkgNCAwIDEgUworLVIgKSAxOTc0IG8gLSBPIDIgMCAwIC0KKy1SICkgMTk3NSBvIC0gTWF5IDEgMCAxIFMKKy1SICkgMTk3NSBvIC0gTyAyIDAgMCAtCistUiApIDE5NzYgbyAtIE1heSAyIDAgMSBTCistUiApIDE5NzYgbyAtIE8gMyAwIDAgLQorLVIgKSAxOTc3IG8gLSBNYXkgOCAwIDEgUworLVIgKSAxOTc3IG8gLSBPIDIgMCAwIC0KKy1SICkgMTk3OCBvIC0gTWF5IDYgMCAxIFMKKy1SICkgMTk3OCBvIC0gTyAxIDAgMCAtCistUiApIDE5NzkgbyAtIE1heSA1IDAgMSBTCistUiApIDE5NzkgbyAtIFMgMzAgMCAwIC0KKy1SICkgMTk4MCBvIC0gTWF5IDMgMCAxIFMKKy1SICkgMTk4MCBvIC0gTyA0IDAgMCAtCistUiApIDE5ODEgbyAtIEFwIDI2IDAgMSBTCistUiApIDE5ODEgbyAtIFMgMjcgMCAwIC0KKy1SICkgMTk4MiBvIC0gTWF5IDIgMCAxIFMKKy1SICkgMTk4MiBvIC0gTyAzIDAgMCAtCistUiApIDE5ODMgbyAtIEFwIDE4IDAgMSBTCistUiApIDE5ODMgbyAtIE8gMSAwIDAgLQorLVIgKSAxOTg0IG8gLSBBcCAxIDAgMSBTCisrMCBHIEdNVC9JU1QgMTk2OCBPIDI3CisrMSBJRSBJU1QvR01UCisrUiBFIDE5NzcgMTk4MCAtIEFwIFN1bj49MSAxdSAxIFMKKytSIEUgMTk3NyBvIC0gUyBsYXN0U3VuIDF1IDAgLQorK1IgRSAxOTc4IG8gLSBPIDEgMXUgMCAtCisrUiBFIDE5NzkgMTk5NSAtIFMgbGFzdFN1biAxdSAwIC0KKytSIEUgMTk4MSBtYSAtIE1hciBsYXN0U3VuIDF1IDEgUworK1IgRSAxOTk2IG1hIC0gTyBsYXN0U3VuIDF1IDAgLQorK1IgVy0gMTk3NyAxOTgwIC0gQXAgU3VuPj0xIDFzIDEgUworK1IgVy0gMTk3NyBvIC0gUyBsYXN0U3VuIDFzIDAgLQorK1IgVy0gMTk3OCBvIC0gTyAxIDFzIDAgLQorK1IgVy0gMTk3OSAxOTk1IC0gUyBsYXN0U3VuIDFzIDAgLQorK1IgVy0gMTk4MSBtYSAtIE1hciBsYXN0U3VuIDFzIDEgUworK1IgVy0gMTk5NiBtYSAtIE8gbGFzdFN1biAxcyAwIC0KKytSIGMgMTkxNiBvIC0gQXAgMzAgMjMgMSBTCisrUiBjIDE5MTYgbyAtIE8gMSAxIDAgLQorK1IgYyAxOTE3IDE5MTggLSBBcCBNPj0xNSAycyAxIFMKKytSIGMgMTkxNyAxOTE4IC0gUyBNPj0xNSAycyAwIC0KKytSIGMgMTk0MCBvIC0gQXAgMSAycyAxIFMKKytSIGMgMTk0MiBvIC0gTiAyIDJzIDAgLQorK1IgYyAxOTQzIG8gLSBNYXIgMjkgMnMgMSBTCisrUiBjIDE5NDMgbyAtIE8gNCAycyAwIC0KKytSIGMgMTk0NCAxOTQ1IC0gQXAgTT49MSAycyAxIFMKKytSIGMgMTk0NCBvIC0gTyAyIDJzIDAgLQorK1IgYyAxOTQ1IG8gLSBTIDE2IDJzIDAgLQorK1IgYyAxOTc3IDE5ODAgLSBBcCBTdW4+PTEgMnMgMSBTCisrUiBjIDE5NzcgbyAtIFMgbGFzdFN1biAycyAwIC0KKytSIGMgMTk3OCBvIC0gTyAxIDJzIDAgLQorK1IgYyAxOTc5IDE5OTUgLSBTIGxhc3RTdW4gMnMgMCAtCisrUiBjIDE5ODEgbWEgLSBNYXIgbGFzdFN1biAycyAxIFMKKytSIGMgMTk5NiBtYSAtIE8gbGFzdFN1biAycyAwIC0KKytSIGUgMTk3NyAxOTgwIC0gQXAgU3VuPj0xIDAgMSBTCisrUiBlIDE5NzcgbyAtIFMgbGFzdFN1biAwIDAgLQorK1IgZSAxOTc4IG8gLSBPIDEgMCAwIC0KKytSIGUgMTk3OSAxOTk1IC0gUyBsYXN0U3VuIDAgMCAtCisrUiBlIDE5ODEgbWEgLSBNYXIgbGFzdFN1biAwIDEgUworK1IgZSAxOTk2IG1hIC0gTyBsYXN0U3VuIDAgMCAtCisrUiBSIDE5MTcgbyAtIEp1bCAxIDIzIDEgTVNUCisrUiBSIDE5MTcgbyAtIEQgMjggMCAwIE1NVAorK1IgUiAxOTE4IG8gLSBNYXkgMzEgMjIgMiBNRFNUCisrUiBSIDE5MTggbyAtIFMgMTYgMSAxIE1TVAorK1IgUiAxOTE5IG8gLSBNYXkgMzEgMjMgMiBNRFNUCisrUiBSIDE5MTkgbyAtIEp1bCAxIDB1IDEgTVNECisrUiBSIDE5MTkgbyAtIEF1IDE2IDAgMCBNU0sKKytSIFIgMTkyMSBvIC0gRiAxNCAyMyAxIE1TRAorK1IgUiAxOTIxIG8gLSBNYXIgMjAgMjMgMiArMDUKKytSIFIgMTkyMSBvIC0gUyAxIDAgMSBNU0QKKytSIFIgMTkyMSBvIC0gTyAxIDAgMCAtCisrUiBSIDE5ODEgMTk4NCAtIEFwIDEgMCAxIFMKKytSIFIgMTk4MSAxOTgzIC0gTyAxIDAgMCAtCisrUiBSIDE5ODQgMTk5NSAtIFMgbGFzdFN1biAycyAwIC0KKytSIFIgMTk4NSAyMDEwIC0gTWFyIGxhc3RTdW4gMnMgMSBTCisrUiBSIDE5OTYgMjAxMCAtIE8gbGFzdFN1biAycyAwIC0KKytaIFdFVCAwIEUgV0Ulc1QKKytaIENFVCAxIGMgQ0Ulc1QKKytaIE1FVCAxIGMgTUUlc1QKKytaIEVFVCAyIEUgRUUlc1QKKytSIHEgMTk0MCBvIC0gSnVuIDE2IDAgMSBTCisrUiBxIDE5NDIgbyAtIE4gMiAzIDAgLQorK1IgcSAxOTQzIG8gLSBNYXIgMjkgMiAxIFMKKytSIHEgMTk0MyBvIC0gQXAgMTAgMyAwIC0KKytSIHEgMTk3NCBvIC0gTWF5IDQgMCAxIFMKKytSIHEgMTk3NCBvIC0gTyAyIDAgMCAtCisrUiBxIDE5NzUgbyAtIE1heSAxIDAgMSBTCisrUiBxIDE5NzUgbyAtIE8gMiAwIDAgLQorK1IgcSAxOTc2IG8gLSBNYXkgMiAwIDEgUworK1IgcSAxOTc2IG8gLSBPIDMgMCAwIC0KKytSIHEgMTk3NyBvIC0gTWF5IDggMCAxIFMKKytSIHEgMTk3NyBvIC0gTyAyIDAgMCAtCisrUiBxIDE5NzggbyAtIE1heSA2IDAgMSBTCisrUiBxIDE5NzggbyAtIE8gMSAwIDAgLQorK1IgcSAxOTc5IG8gLSBNYXkgNSAwIDEgUworK1IgcSAxOTc5IG8gLSBTIDMwIDAgMCAtCisrUiBxIDE5ODAgbyAtIE1heSAzIDAgMSBTCisrUiBxIDE5ODAgbyAtIE8gNCAwIDAgLQorK1IgcSAxOTgxIG8gLSBBcCAyNiAwIDEgUworK1IgcSAxOTgxIG8gLSBTIDI3IDAgMCAtCisrUiBxIDE5ODIgbyAtIE1heSAyIDAgMSBTCisrUiBxIDE5ODIgbyAtIE8gMyAwIDAgLQorK1IgcSAxOTgzIG8gLSBBcCAxOCAwIDEgUworK1IgcSAxOTgzIG8gLSBPIDEgMCAwIC0KKytSIHEgMTk4NCBvIC0gQXAgMSAwIDEgUworIFogRXVyb3BlL1RpcmFuZSAxOjE5OjIwIC0gTE1UIDE5MTQKKyAxIC0gQ0VUIDE5NDAgSnVuIDE2CistMSApIENFJXNUIDE5ODQgSnVsCistMSBPIENFJXNUCisrMSBxIENFJXNUIDE5ODQgSnVsCisrMSBFIENFJXNUCisgWiBFdXJvcGUvQW5kb3JyYSAwOjY6NCAtIExNVCAxOTAxCisgMCAtIFdFVCAxOTQ2IFMgMzAKKyAxIC0gQ0VUIDE5ODUgTWFyIDMxIDIKKy0xIE8gQ0Ulc1QKKy1SICogMTkyMCBvIC0gQXAgNSAycyAxIFMKKy1SICogMTkyMCBvIC0gUyAxMyAycyAwIC0KKy1SICogMTk0NiBvIC0gQXAgMTQgMnMgMSBTCistUiAqIDE5NDYgMTk0OCAtIE8gU3VuPj0xIDJzIDAgLQorLVIgKiAxOTQ3IG8gLSBBcCA2IDJzIDEgUworLVIgKiAxOTQ4IG8gLSBBcCAxOCAycyAxIFMKKy1SICogMTk4MCBvIC0gQXAgNiAwIDEgUworLVIgKiAxOTgwIG8gLSBTIDI4IDAgMCAtCisrMSBFIENFJXNUCisrUiBhIDE5MjAgbyAtIEFwIDUgMnMgMSBTCisrUiBhIDE5MjAgbyAtIFMgMTMgMnMgMCAtCisrUiBhIDE5NDYgbyAtIEFwIDE0IDJzIDEgUworK1IgYSAxOTQ2IDE5NDggLSBPIFN1bj49MSAycyAwIC0KKytSIGEgMTk0NyBvIC0gQXAgNiAycyAxIFMKKytSIGEgMTk0OCBvIC0gQXAgMTggMnMgMSBTCisrUiBhIDE5ODAgbyAtIEFwIDYgMCAxIFMKKytSIGEgMTk4MCBvIC0gUyAyOCAwIDAgLQorIFogRXVyb3BlL1ZpZW5uYSAxOjU6MjEgLSBMTVQgMTg5MyBBcAorLTEgKCBDRSVzVCAxOTIwCistMSAqIENFJXNUIDE5NDAgQXAgMSAycworLTEgKCBDRSVzVCAxOTQ1IEFwIDIgMnMKKysxIGMgQ0Ulc1QgMTkyMAorKzEgYSBDRSVzVCAxOTQwIEFwIDEgMnMKKysxIGMgQ0Ulc1QgMTk0NSBBcCAyIDJzCisgMSAxIENFU1QgMTk0NSBBcCAxMiAycworIDEgLSBDRVQgMTk0NgorLTEgKiBDRSVzVCAxOTgxCistMSBPIENFJXNUCisrMSBhIENFJXNUIDE5ODEKKysxIEUgQ0Ulc1QKKyBaIEV1cm9wZS9NaW5zayAxOjUwOjE2IC0gTE1UIDE4ODAKKyAxOjUwIC0gTU1UIDE5MjQgTWF5IDIKKyAyIC0gRUVUIDE5MzAgSnVuIDIxCisgMyAtIE1TSyAxOTQxIEp1biAyOAorLTEgKCBDRSVzVCAxOTQ0IEp1bCAzCistMyBNIE1TSy9NU0QgMTk5MAorKzEgYyBDRSVzVCAxOTQ0IEp1bCAzCisrMyBSIE1TSy9NU0QgMTk5MAorIDMgLSBNU0sgMTk5MSBNYXIgMzEgMnMKKy0yIE0gRUUlc1QgMjAxMSBNYXIgMjcgMnMKKysyIFIgRUUlc1QgMjAxMSBNYXIgMjcgMnMKKyAzIC0gKzAzCistUiArIDE5MTggbyAtIE1hciA5IDBzIDEgUworLVIgKyAxOTE4IDE5MTkgLSBPIFNhdD49MSAyM3MgMCAtCistUiArIDE5MTkgbyAtIE1hciAxIDIzcyAxIFMKKy1SICsgMTkyMCBvIC0gRiAxNCAyM3MgMSBTCistUiArIDE5MjAgbyAtIE8gMjMgMjNzIDAgLQorLVIgKyAxOTIxIG8gLSBNYXIgMTQgMjNzIDEgUworLVIgKyAxOTIxIG8gLSBPIDI1IDIzcyAwIC0KKy1SICsgMTkyMiBvIC0gTWFyIDI1IDIzcyAxIFMKKy1SICsgMTkyMiAxOTI3IC0gTyBTYXQ+PTEgMjNzIDAgLQorLVIgKyAxOTIzIG8gLSBBcCAyMSAyM3MgMSBTCistUiArIDE5MjQgbyAtIE1hciAyOSAyM3MgMSBTCistUiArIDE5MjUgbyAtIEFwIDQgMjNzIDEgUworLVIgKyAxOTI2IG8gLSBBcCAxNyAyM3MgMSBTCistUiArIDE5MjcgbyAtIEFwIDkgMjNzIDEgUworLVIgKyAxOTI4IG8gLSBBcCAxNCAyM3MgMSBTCistUiArIDE5MjggMTkzOCAtIE8gU3VuPj0yIDJzIDAgLQorLVIgKyAxOTI5IG8gLSBBcCAyMSAycyAxIFMKKy1SICsgMTkzMCBvIC0gQXAgMTMgMnMgMSBTCistUiArIDE5MzEgbyAtIEFwIDE5IDJzIDEgUworLVIgKyAxOTMyIG8gLSBBcCAzIDJzIDEgUworLVIgKyAxOTMzIG8gLSBNYXIgMjYgMnMgMSBTCistUiArIDE5MzQgbyAtIEFwIDggMnMgMSBTCistUiArIDE5MzUgbyAtIE1hciAzMSAycyAxIFMKKy1SICsgMTkzNiBvIC0gQXAgMTkgMnMgMSBTCistUiArIDE5MzcgbyAtIEFwIDQgMnMgMSBTCistUiArIDE5MzggbyAtIE1hciAyNyAycyAxIFMKKy1SICsgMTkzOSBvIC0gQXAgMTYgMnMgMSBTCistUiArIDE5MzkgbyAtIE4gMTkgMnMgMCAtCistUiArIDE5NDAgbyAtIEYgMjUgMnMgMSBTCistUiArIDE5NDQgbyAtIFMgMTcgMnMgMCAtCistUiArIDE5NDUgbyAtIEFwIDIgMnMgMSBTCistUiArIDE5NDUgbyAtIFMgMTYgMnMgMCAtCistUiArIDE5NDYgbyAtIE1heSAxOSAycyAxIFMKKy1SICsgMTk0NiBvIC0gTyA3IDJzIDAgLQorK1IgYiAxOTE4IG8gLSBNYXIgOSAwcyAxIFMKKytSIGIgMTkxOCAxOTE5IC0gTyBTYXQ+PTEgMjNzIDAgLQorK1IgYiAxOTE5IG8gLSBNYXIgMSAyM3MgMSBTCisrUiBiIDE5MjAgbyAtIEYgMTQgMjNzIDEgUworK1IgYiAxOTIwIG8gLSBPIDIzIDIzcyAwIC0KKytSIGIgMTkyMSBvIC0gTWFyIDE0IDIzcyAxIFMKKytSIGIgMTkyMSBvIC0gTyAyNSAyM3MgMCAtCisrUiBiIDE5MjIgbyAtIE1hciAyNSAyM3MgMSBTCisrUiBiIDE5MjIgMTkyNyAtIE8gU2F0Pj0xIDIzcyAwIC0KKytSIGIgMTkyMyBvIC0gQXAgMjEgMjNzIDEgUworK1IgYiAxOTI0IG8gLSBNYXIgMjkgMjNzIDEgUworK1IgYiAxOTI1IG8gLSBBcCA0IDIzcyAxIFMKKytSIGIgMTkyNiBvIC0gQXAgMTcgMjNzIDEgUworK1IgYiAxOTI3IG8gLSBBcCA5IDIzcyAxIFMKKytSIGIgMTkyOCBvIC0gQXAgMTQgMjNzIDEgUworK1IgYiAxOTI4IDE5MzggLSBPIFN1bj49MiAycyAwIC0KKytSIGIgMTkyOSBvIC0gQXAgMjEgMnMgMSBTCisrUiBiIDE5MzAgbyAtIEFwIDEzIDJzIDEgUworK1IgYiAxOTMxIG8gLSBBcCAxOSAycyAxIFMKKytSIGIgMTkzMiBvIC0gQXAgMyAycyAxIFMKKytSIGIgMTkzMyBvIC0gTWFyIDI2IDJzIDEgUworK1IgYiAxOTM0IG8gLSBBcCA4IDJzIDEgUworK1IgYiAxOTM1IG8gLSBNYXIgMzEgMnMgMSBTCisrUiBiIDE5MzYgbyAtIEFwIDE5IDJzIDEgUworK1IgYiAxOTM3IG8gLSBBcCA0IDJzIDEgUworK1IgYiAxOTM4IG8gLSBNYXIgMjcgMnMgMSBTCisrUiBiIDE5MzkgbyAtIEFwIDE2IDJzIDEgUworK1IgYiAxOTM5IG8gLSBOIDE5IDJzIDAgLQorK1IgYiAxOTQwIG8gLSBGIDI1IDJzIDEgUworK1IgYiAxOTQ0IG8gLSBTIDE3IDJzIDAgLQorK1IgYiAxOTQ1IG8gLSBBcCAyIDJzIDEgUworK1IgYiAxOTQ1IG8gLSBTIDE2IDJzIDAgLQorK1IgYiAxOTQ2IG8gLSBNYXkgMTkgMnMgMSBTCisrUiBiIDE5NDYgbyAtIE8gNyAycyAwIC0KKyBaIEV1cm9wZS9CcnVzc2VscyAwOjE3OjMwIC0gTE1UIDE4ODAKKyAwOjE3OjMwIC0gQk1UIDE4OTIgTWF5IDEgMTIKKyAwIC0gV0VUIDE5MTQgTiA4CisgMSAtIENFVCAxOTE2IE1heQorLTEgKCBDRSVzVCAxOTE4IE4gMTEgMTF1CistMCArIFdFJXNUIDE5NDAgTWF5IDIwIDJzCistMSAoIENFJXNUIDE5NDQgUyAzCistMSArIENFJXNUIDE5NzcKKy0xIE8gQ0Ulc1QKKy1SICwgMTk3OSBvIC0gTWFyIDMxIDIzIDEgUworLVIgLCAxOTc5IG8gLSBPIDEgMSAwIC0KKy1SICwgMTk4MCAxOTgyIC0gQXAgU2F0Pj0xIDIzIDEgUworLVIgLCAxOTgwIG8gLSBTIDI5IDEgMCAtCistUiAsIDE5ODEgbyAtIFMgMjcgMiAwIC0KKysxIGMgQ0Ulc1QgMTkxOCBOIDExIDExdQorKzAgYiBXRSVzVCAxOTQwIE1heSAyMCAycworKzEgYyBDRSVzVCAxOTQ0IFMgMworKzEgYiBDRSVzVCAxOTc3CisrMSBFIENFJXNUCisrUiBCRyAxOTc5IG8gLSBNYXIgMzEgMjMgMSBTCisrUiBCRyAxOTc5IG8gLSBPIDEgMSAwIC0KKytSIEJHIDE5ODAgMTk4MiAtIEFwIFNhdD49MSAyMyAxIFMKKytSIEJHIDE5ODAgbyAtIFMgMjkgMSAwIC0KKytSIEJHIDE5ODEgbyAtIFMgMjcgMiAwIC0KKyBaIEV1cm9wZS9Tb2ZpYSAxOjMzOjE2IC0gTE1UIDE4ODAKKyAxOjU2OjU2IC0gSU1UIDE4OTQgTiAzMAorIDIgLSBFRVQgMTk0MiBOIDIgMworLTEgKCBDRSVzVCAxOTQ1CisrMSBjIENFJXNUIDE5NDUKKyAxIC0gQ0VUIDE5NDUgQXAgMiAzCisgMiAtIEVFVCAxOTc5IE1hciAzMSAyMworLTIgLCBFRSVzVCAxOTgyIFMgMjYgMworLTIgKCBFRSVzVCAxOTkxCistMiBXIEVFJXNUIDE5OTcKKy0yIE8gRUUlc1QKKy1SIC4gMTk0NSBvIC0gQXAgTT49MSAycyAxIFMKKy1SIC4gMTk0NSBvIC0gTyAxIDJzIDAgLQorLVIgLiAxOTQ2IG8gLSBNYXkgNiAycyAxIFMKKy1SIC4gMTk0NiAxOTQ5IC0gTyBTdW4+PTEgMnMgMCAtCistUiAuIDE5NDcgMTk0OCAtIEFwIFN1bj49MTUgMnMgMSBTCistUiAuIDE5NDkgbyAtIEFwIDkgMnMgMSBTCisrMiBCRyBFRSVzVCAxOTgyIFMgMjYgMworKzIgYyBFRSVzVCAxOTkxCisrMiBlIEVFJXNUIDE5OTcKKysyIEUgRUUlc1QKKytSIENaIDE5NDUgbyAtIEFwIE0+PTEgMnMgMSBTCisrUiBDWiAxOTQ1IG8gLSBPIDEgMnMgMCAtCisrUiBDWiAxOTQ2IG8gLSBNYXkgNiAycyAxIFMKKytSIENaIDE5NDYgMTk0OSAtIE8gU3VuPj0xIDJzIDAgLQorK1IgQ1ogMTk0NyAxOTQ4IC0gQXAgU3VuPj0xNSAycyAxIFMKKytSIENaIDE5NDkgbyAtIEFwIDkgMnMgMSBTCisgWiBFdXJvcGUvUHJhZ3VlIDA6NTc6NDQgLSBMTVQgMTg1MAorIDA6NTc6NDQgLSBQTVQgMTg5MSBPCistMSAoIENFJXNUIDE5NDUgTWF5IDkKKy0xIC4gQ0Ulc1QgMTk0NiBEIDEgMworKzEgYyBDRSVzVCAxOTQ1IE1heSA5CisrMSBDWiBDRSVzVCAxOTQ2IEQgMSAzCisgMSAtMSBHTVQgMTk0NyBGIDIzIDIKKy0xIC4gQ0Ulc1QgMTk3OQorLTEgTyBDRSVzVAorLVIgLyAxOTE2IG8gLSBNYXkgMTQgMjMgMSBTCistUiAvIDE5MTYgbyAtIFMgMzAgMjMgMCAtCistUiAvIDE5NDAgbyAtIE1heSAxNSAwIDEgUworLVIgLyAxOTQ1IG8gLSBBcCAyIDJzIDEgUworLVIgLyAxOTQ1IG8gLSBBdSAxNSAycyAwIC0KKy1SIC8gMTk0NiBvIC0gTWF5IDEgMnMgMSBTCistUiAvIDE5NDYgbyAtIFMgMSAycyAwIC0KKy1SIC8gMTk0NyBvIC0gTWF5IDQgMnMgMSBTCistUiAvIDE5NDcgbyAtIEF1IDEwIDJzIDAgLQorLVIgLyAxOTQ4IG8gLSBNYXkgOSAycyAxIFMKKy1SIC8gMTk0OCBvIC0gQXUgOCAycyAwIC0KKysxIENaIENFJXNUIDE5NzkKKysxIEUgQ0Ulc1QKKytSIEQgMTkxNiBvIC0gTWF5IDE0IDIzIDEgUworK1IgRCAxOTE2IG8gLSBTIDMwIDIzIDAgLQorK1IgRCAxOTQwIG8gLSBNYXkgMTUgMCAxIFMKKytSIEQgMTk0NSBvIC0gQXAgMiAycyAxIFMKKytSIEQgMTk0NSBvIC0gQXUgMTUgMnMgMCAtCisrUiBEIDE5NDYgbyAtIE1heSAxIDJzIDEgUworK1IgRCAxOTQ2IG8gLSBTIDEgMnMgMCAtCisrUiBEIDE5NDcgbyAtIE1heSA0IDJzIDEgUworK1IgRCAxOTQ3IG8gLSBBdSAxMCAycyAwIC0KKytSIEQgMTk0OCBvIC0gTWF5IDkgMnMgMSBTCisrUiBEIDE5NDggbyAtIEF1IDggMnMgMCAtCisgWiBFdXJvcGUvQ29wZW5oYWdlbiAwOjUwOjIwIC0gTE1UIDE4OTAKKyAwOjUwOjIwIC0gQ01UIDE4OTQKKy0xIC8gQ0Ulc1QgMTk0MiBOIDIgMnMKKy0xICggQ0Ulc1QgMTk0NSBBcCAyIDIKKy0xIC8gQ0Ulc1QgMTk4MAorLTEgTyBDRSVzVAorKzEgRCBDRSVzVCAxOTQyIE4gMiAycworKzEgYyBDRSVzVCAxOTQ1IEFwIDIgMgorKzEgRCBDRSVzVCAxOTgwCisrMSBFIENFJXNUCisgWiBBdGxhbnRpYy9GYXJvZSAtMDoyNzo0IC0gTE1UIDE5MDggSmEgMTEKKyAwIC0gV0VUIDE5ODEKKy0wIE8gV0Ulc1QKKy1SIDogMTk5MSAxOTkyIC0gTWFyIGxhc3RTdW4gMiAxIEQKKy1SIDogMTk5MSAxOTkyIC0gUyBsYXN0U3VuIDIgMCBTCistUiA6IDE5OTMgMjAwNiAtIEFwIFN1bj49MSAyIDEgRAorLVIgOiAxOTkzIDIwMDYgLSBPIGxhc3RTdW4gMiAwIFMKKy1SIDogMjAwNyBtYSAtIE1hciBTdW4+PTggMiAxIEQKKy1SIDogMjAwNyBtYSAtIE4gU3VuPj0xIDIgMCBTCisrMCBFIFdFJXNUCisrUiBUaCAxOTkxIDE5OTIgLSBNYXIgbGFzdFN1biAyIDEgRAorK1IgVGggMTk5MSAxOTkyIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBUaCAxOTkzIDIwMDYgLSBBcCBTdW4+PTEgMiAxIEQKKytSIFRoIDE5OTMgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworK1IgVGggMjAwNyBtYSAtIE1hciBTdW4+PTggMiAxIEQKKytSIFRoIDIwMDcgbWEgLSBOIFN1bj49MSAyIDAgUworIFogQW1lcmljYS9EYW5tYXJrc2hhdm4gLTE6MTQ6NDAgLSBMTVQgMTkxNiBKdWwgMjgKKyAtMyAtIC0wMyAxOTgwIEFwIDYgMgorLS0zIE8gLTAzLy0wMiAxOTk2CisrLTMgRSAtMDMvLTAyIDE5OTYKKyAwIC0gR01UCisgWiBBbWVyaWNhL1Njb3Jlc2J5c3VuZCAtMToyNzo1MiAtIExNVCAxOTE2IEp1bCAyOAorIC0yIC0gLTAyIDE5ODAgQXAgNiAyCistLTIgKCAtMDIvLTAxIDE5ODEgTWFyIDI5CistLTEgTyAtMDEvKzAwCisrLTIgYyAtMDIvLTAxIDE5ODEgTWFyIDI5CisrLTEgRSAtMDEvKzAwCisgWiBBbWVyaWNhL0dvZHRoYWIgLTM6MjY6NTYgLSBMTVQgMTkxNiBKdWwgMjgKKyAtMyAtIC0wMyAxOTgwIEFwIDYgMgorLS0zIE8gLTAzLy0wMgorKy0zIEUgLTAzLy0wMgorIFogQW1lcmljYS9UaHVsZSAtNDozNTo4IC0gTE1UIDE5MTYgSnVsIDI4CistLTQgOiBBJXNUCisrLTQgVGggQSVzVAorIFogRXVyb3BlL1RhbGxpbm4gMTozOSAtIExNVCAxODgwCisgMTozOSAtIFRNVCAxOTE4IEYKKy0xICggQ0Ulc1QgMTkxOSBKdWwKKysxIGMgQ0Ulc1QgMTkxOSBKdWwKKyAxOjM5IC0gVE1UIDE5MjEgTWF5CisgMiAtIEVFVCAxOTQwIEF1IDYKKyAzIC0gTVNLIDE5NDEgUyAxNQorLTEgKCBDRSVzVCAxOTQ0IFMgMjIKKy0zIE0gTVNLL01TRCAxOTg5IE1hciAyNiAycworKzEgYyBDRSVzVCAxOTQ0IFMgMjIKKyszIFIgTVNLL01TRCAxOTg5IE1hciAyNiAycworIDIgMSBFRVNUIDE5ODkgUyAyNCAycworLTIgKCBFRSVzVCAxOTk4IFMgMjIKKy0yIE8gRUUlc1QgMTk5OSBPIDMxIDQKKysyIGMgRUUlc1QgMTk5OCBTIDIyCisrMiBFIEVFJXNUIDE5OTkgTyAzMSA0CisgMiAtIEVFVCAyMDAyIEYgMjEKKy0yIE8gRUUlc1QKKy1SIDsgMTk0MiBvIC0gQXAgMiAyNCAxIFMKKy1SIDsgMTk0MiBvIC0gTyA0IDEgMCAtCistUiA7IDE5ODEgMTk4MiAtIE1hciBsYXN0U3VuIDIgMSBTCistUiA7IDE5ODEgMTk4MiAtIFMgbGFzdFN1biAzIDAgLQorKzIgRSBFRSVzVAorK1IgRkkgMTk0MiBvIC0gQXAgMiAyNCAxIFMKKytSIEZJIDE5NDIgbyAtIE8gNCAxIDAgLQorK1IgRkkgMTk4MSAxOTgyIC0gTWFyIGxhc3RTdW4gMiAxIFMKKytSIEZJIDE5ODEgMTk4MiAtIFMgbGFzdFN1biAzIDAgLQorIFogRXVyb3BlL0hlbHNpbmtpIDE6Mzk6NDkgLSBMTVQgMTg3OCBNYXkgMzEKKyAxOjM5OjQ5IC0gSE1UIDE5MjEgTWF5CistMiA7IEVFJXNUIDE5ODMKKy0yIE8gRUUlc1QKKysyIEZJIEVFJXNUIDE5ODMKKysyIEUgRUUlc1QKKyBMaSBFdXJvcGUvSGVsc2lua2kgRXVyb3BlL01hcmllaGFtbgorLVIgPCAxOTE2IG8gLSBKdW4gMTQgMjNzIDEgUworLVIgPCAxOTE2IDE5MTkgLSBPIFN1bj49MSAyM3MgMCAtCistUiA8IDE5MTcgbyAtIE1hciAyNCAyM3MgMSBTCistUiA8IDE5MTggbyAtIE1hciA5IDIzcyAxIFMKKy1SIDwgMTkxOSBvIC0gTWFyIDEgMjNzIDEgUworLVIgPCAxOTIwIG8gLSBGIDE0IDIzcyAxIFMKKy1SIDwgMTkyMCBvIC0gTyAyMyAyM3MgMCAtCistUiA8IDE5MjEgbyAtIE1hciAxNCAyM3MgMSBTCistUiA8IDE5MjEgbyAtIE8gMjUgMjNzIDAgLQorLVIgPCAxOTIyIG8gLSBNYXIgMjUgMjNzIDEgUworLVIgPCAxOTIyIDE5MzggLSBPIFNhdD49MSAyM3MgMCAtCistUiA8IDE5MjMgbyAtIE1heSAyNiAyM3MgMSBTCistUiA8IDE5MjQgbyAtIE1hciAyOSAyM3MgMSBTCistUiA8IDE5MjUgbyAtIEFwIDQgMjNzIDEgUworLVIgPCAxOTI2IG8gLSBBcCAxNyAyM3MgMSBTCistUiA8IDE5MjcgbyAtIEFwIDkgMjNzIDEgUworLVIgPCAxOTI4IG8gLSBBcCAxNCAyM3MgMSBTCistUiA8IDE5MjkgbyAtIEFwIDIwIDIzcyAxIFMKKy1SIDwgMTkzMCBvIC0gQXAgMTIgMjNzIDEgUworLVIgPCAxOTMxIG8gLSBBcCAxOCAyM3MgMSBTCistUiA8IDE5MzIgbyAtIEFwIDIgMjNzIDEgUworLVIgPCAxOTMzIG8gLSBNYXIgMjUgMjNzIDEgUworLVIgPCAxOTM0IG8gLSBBcCA3IDIzcyAxIFMKKy1SIDwgMTkzNSBvIC0gTWFyIDMwIDIzcyAxIFMKKy1SIDwgMTkzNiBvIC0gQXAgMTggMjNzIDEgUworLVIgPCAxOTM3IG8gLSBBcCAzIDIzcyAxIFMKKy1SIDwgMTkzOCBvIC0gTWFyIDI2IDIzcyAxIFMKKy1SIDwgMTkzOSBvIC0gQXAgMTUgMjNzIDEgUworLVIgPCAxOTM5IG8gLSBOIDE4IDIzcyAwIC0KKy1SIDwgMTk0MCBvIC0gRiAyNSAyIDEgUworLVIgPCAxOTQxIG8gLSBNYXkgNSAwIDIgTQorLVIgPCAxOTQxIG8gLSBPIDYgMCAxIFMKKy1SIDwgMTk0MiBvIC0gTWFyIDkgMCAyIE0KKy1SIDwgMTk0MiBvIC0gTiAyIDMgMSBTCistUiA8IDE5NDMgbyAtIE1hciAyOSAyIDIgTQorLVIgPCAxOTQzIG8gLSBPIDQgMyAxIFMKKy1SIDwgMTk0NCBvIC0gQXAgMyAyIDIgTQorLVIgPCAxOTQ0IG8gLSBPIDggMSAxIFMKKy1SIDwgMTk0NSBvIC0gQXAgMiAyIDIgTQorLVIgPCAxOTQ1IG8gLSBTIDE2IDMgMCAtCistUiA8IDE5NzYgbyAtIE1hciAyOCAxIDEgUworLVIgPCAxOTc2IG8gLSBTIDI2IDEgMCAtCisrUiBGIDE5MTYgbyAtIEp1biAxNCAyM3MgMSBTCisrUiBGIDE5MTYgMTkxOSAtIE8gU3VuPj0xIDIzcyAwIC0KKytSIEYgMTkxNyBvIC0gTWFyIDI0IDIzcyAxIFMKKytSIEYgMTkxOCBvIC0gTWFyIDkgMjNzIDEgUworK1IgRiAxOTE5IG8gLSBNYXIgMSAyM3MgMSBTCisrUiBGIDE5MjAgbyAtIEYgMTQgMjNzIDEgUworK1IgRiAxOTIwIG8gLSBPIDIzIDIzcyAwIC0KKytSIEYgMTkyMSBvIC0gTWFyIDE0IDIzcyAxIFMKKytSIEYgMTkyMSBvIC0gTyAyNSAyM3MgMCAtCisrUiBGIDE5MjIgbyAtIE1hciAyNSAyM3MgMSBTCisrUiBGIDE5MjIgMTkzOCAtIE8gU2F0Pj0xIDIzcyAwIC0KKytSIEYgMTkyMyBvIC0gTWF5IDI2IDIzcyAxIFMKKytSIEYgMTkyNCBvIC0gTWFyIDI5IDIzcyAxIFMKKytSIEYgMTkyNSBvIC0gQXAgNCAyM3MgMSBTCisrUiBGIDE5MjYgbyAtIEFwIDE3IDIzcyAxIFMKKytSIEYgMTkyNyBvIC0gQXAgOSAyM3MgMSBTCisrUiBGIDE5MjggbyAtIEFwIDE0IDIzcyAxIFMKKytSIEYgMTkyOSBvIC0gQXAgMjAgMjNzIDEgUworK1IgRiAxOTMwIG8gLSBBcCAxMiAyM3MgMSBTCisrUiBGIDE5MzEgbyAtIEFwIDE4IDIzcyAxIFMKKytSIEYgMTkzMiBvIC0gQXAgMiAyM3MgMSBTCisrUiBGIDE5MzMgbyAtIE1hciAyNSAyM3MgMSBTCisrUiBGIDE5MzQgbyAtIEFwIDcgMjNzIDEgUworK1IgRiAxOTM1IG8gLSBNYXIgMzAgMjNzIDEgUworK1IgRiAxOTM2IG8gLSBBcCAxOCAyM3MgMSBTCisrUiBGIDE5MzcgbyAtIEFwIDMgMjNzIDEgUworK1IgRiAxOTM4IG8gLSBNYXIgMjYgMjNzIDEgUworK1IgRiAxOTM5IG8gLSBBcCAxNSAyM3MgMSBTCisrUiBGIDE5MzkgbyAtIE4gMTggMjNzIDAgLQorK1IgRiAxOTQwIG8gLSBGIDI1IDIgMSBTCisrUiBGIDE5NDEgbyAtIE1heSA1IDAgMiBNCisrUiBGIDE5NDEgbyAtIE8gNiAwIDEgUworK1IgRiAxOTQyIG8gLSBNYXIgOSAwIDIgTQorK1IgRiAxOTQyIG8gLSBOIDIgMyAxIFMKKytSIEYgMTk0MyBvIC0gTWFyIDI5IDIgMiBNCisrUiBGIDE5NDMgbyAtIE8gNCAzIDEgUworK1IgRiAxOTQ0IG8gLSBBcCAzIDIgMiBNCisrUiBGIDE5NDQgbyAtIE8gOCAxIDEgUworK1IgRiAxOTQ1IG8gLSBBcCAyIDIgMiBNCisrUiBGIDE5NDUgbyAtIFMgMTYgMyAwIC0KKytSIEYgMTk3NiBvIC0gTWFyIDI4IDEgMSBTCisrUiBGIDE5NzYgbyAtIFMgMjYgMSAwIC0KKyBaIEV1cm9wZS9QYXJpcyAwOjk6MjEgLSBMTVQgMTg5MSBNYXIgMTUgMDoxCisgMDo5OjIxIC0gUE1UIDE5MTEgTWFyIDExIDA6MQorLTAgPCBXRSVzVCAxOTQwIEp1biAxNCAyMworLTEgKCBDRSVzVCAxOTQ0IEF1IDI1CistMCA8IFdFJXNUIDE5NDUgUyAxNiAzCistMSA8IENFJXNUIDE5NzcKKy0xIE8gQ0Ulc1QKKy1SID0gMTk0NiBvIC0gQXAgMTQgMnMgMSBTCistUiA9IDE5NDYgbyAtIE8gNyAycyAwIC0KKy1SID0gMTk0NyAxOTQ5IC0gTyBTdW4+PTEgMnMgMCAtCistUiA9IDE5NDcgbyAtIEFwIDYgM3MgMSBTCistUiA9IDE5NDcgbyAtIE1heSAxMSAycyAyIE0KKy1SID0gMTk0NyBvIC0gSnVuIDI5IDMgMSBTCistUiA9IDE5NDggbyAtIEFwIDE4IDJzIDEgUworLVIgPSAxOTQ5IG8gLSBBcCAxMCAycyAxIFMKKy1SID4gMTk0NSBvIC0gTWF5IDI0IDIgMiBNCistUiA+IDE5NDUgbyAtIFMgMjQgMyAxIFMKKy1SID4gMTk0NSBvIC0gTiAxOCAycyAwIC0KKyswIEYgV0Ulc1QgMTk0MCBKdW4gMTQgMjMKKysxIGMgQ0Ulc1QgMTk0NCBBdSAyNQorKzAgRiBXRSVzVCAxOTQ1IFMgMTYgMworKzEgRiBDRSVzVCAxOTc3CisrMSBFIENFJXNUCisrUiBERSAxOTQ2IG8gLSBBcCAxNCAycyAxIFMKKytSIERFIDE5NDYgbyAtIE8gNyAycyAwIC0KKytSIERFIDE5NDcgMTk0OSAtIE8gU3VuPj0xIDJzIDAgLQorK1IgREUgMTk0NyBvIC0gQXAgNiAzcyAxIFMKKytSIERFIDE5NDcgbyAtIE1heSAxMSAycyAyIE0KKytSIERFIDE5NDcgbyAtIEp1biAyOSAzIDEgUworK1IgREUgMTk0OCBvIC0gQXAgMTggMnMgMSBTCisrUiBERSAxOTQ5IG8gLSBBcCAxMCAycyAxIFMKKytSIFNvIDE5NDUgbyAtIE1heSAyNCAyIDIgTQorK1IgU28gMTk0NSBvIC0gUyAyNCAzIDEgUworK1IgU28gMTk0NSBvIC0gTiAxOCAycyAwIC0KKyBaIEV1cm9wZS9CZXJsaW4gMDo1MzoyOCAtIExNVCAxODkzIEFwCistMSAoIENFJXNUIDE5NDUgTWF5IDI0IDIKKy0xID4gQ0Ulc1QgMTk0NgorLTEgPSBDRSVzVCAxOTgwCistMSBPIENFJXNUCisrMSBjIENFJXNUIDE5NDUgTWF5IDI0IDIKKysxIFNvIENFJXNUIDE5NDYKKysxIERFIENFJXNUIDE5ODAKKysxIEUgQ0Ulc1QKKyBMaSBFdXJvcGUvWnVyaWNoIEV1cm9wZS9CdXNpbmdlbgorIFogRXVyb3BlL0dpYnJhbHRhciAtMDoyMToyNCAtIExNVCAxODgwIEF1IDIgMHMKKy0wICUgJXMgMTk1NyBBcCAxNCAyCisrMCBHICVzIDE5NTcgQXAgMTQgMgorIDEgLSBDRVQgMTk4MgorLTEgTyBDRSVzVAorLVIgPyAxOTMyIG8gLSBKdWwgNyAwIDEgUworLVIgPyAxOTMyIG8gLSBTIDEgMCAwIC0KKy1SID8gMTk0MSBvIC0gQXAgNyAwIDEgUworLVIgPyAxOTQyIG8gLSBOIDIgMyAwIC0KKy1SID8gMTk0MyBvIC0gTWFyIDMwIDAgMSBTCistUiA/IDE5NDMgbyAtIE8gNCAwIDAgLQorLVIgPyAxOTUyIG8gLSBKdWwgMSAwIDEgUworLVIgPyAxOTUyIG8gLSBOIDIgMCAwIC0KKy1SID8gMTk3NSBvIC0gQXAgMTIgMHMgMSBTCistUiA/IDE5NzUgbyAtIE4gMjYgMHMgMCAtCistUiA/IDE5NzYgbyAtIEFwIDExIDJzIDEgUworLVIgPyAxOTc2IG8gLSBPIDEwIDJzIDAgLQorLVIgPyAxOTc3IDE5NzggLSBBcCBTdW4+PTEgMnMgMSBTCistUiA/IDE5NzcgbyAtIFMgMjYgMnMgMCAtCistUiA/IDE5NzggbyAtIFMgMjQgNCAwIC0KKy1SID8gMTk3OSBvIC0gQXAgMSA5IDEgUworLVIgPyAxOTc5IG8gLSBTIDI5IDIgMCAtCistUiA/IDE5ODAgbyAtIEFwIDEgMCAxIFMKKy1SID8gMTk4MCBvIC0gUyAyOCAwIDAgLQorKzEgRSBDRSVzVAorK1IgZyAxOTMyIG8gLSBKdWwgNyAwIDEgUworK1IgZyAxOTMyIG8gLSBTIDEgMCAwIC0KKytSIGcgMTk0MSBvIC0gQXAgNyAwIDEgUworK1IgZyAxOTQyIG8gLSBOIDIgMyAwIC0KKytSIGcgMTk0MyBvIC0gTWFyIDMwIDAgMSBTCisrUiBnIDE5NDMgbyAtIE8gNCAwIDAgLQorK1IgZyAxOTUyIG8gLSBKdWwgMSAwIDEgUworK1IgZyAxOTUyIG8gLSBOIDIgMCAwIC0KKytSIGcgMTk3NSBvIC0gQXAgMTIgMHMgMSBTCisrUiBnIDE5NzUgbyAtIE4gMjYgMHMgMCAtCisrUiBnIDE5NzYgbyAtIEFwIDExIDJzIDEgUworK1IgZyAxOTc2IG8gLSBPIDEwIDJzIDAgLQorK1IgZyAxOTc3IDE5NzggLSBBcCBTdW4+PTEgMnMgMSBTCisrUiBnIDE5NzcgbyAtIFMgMjYgMnMgMCAtCisrUiBnIDE5NzggbyAtIFMgMjQgNCAwIC0KKytSIGcgMTk3OSBvIC0gQXAgMSA5IDEgUworK1IgZyAxOTc5IG8gLSBTIDI5IDIgMCAtCisrUiBnIDE5ODAgbyAtIEFwIDEgMCAxIFMKKytSIGcgMTk4MCBvIC0gUyAyOCAwIDAgLQorIFogRXVyb3BlL0F0aGVucyAxOjM0OjUyIC0gTE1UIDE4OTUgUyAxNAorIDE6MzQ6NTIgLSBBTVQgMTkxNiBKdWwgMjggMDoxCistMiA/IEVFJXNUIDE5NDEgQXAgMzAKKy0xID8gQ0Ulc1QgMTk0NCBBcCA0CistMiA/IEVFJXNUIDE5ODEKKy0yIE8gRUUlc1QKKy1SIEAgMTkxOCBvIC0gQXAgMSAzIDEgUworLVIgQCAxOTE4IG8gLSBTIDE2IDMgMCAtCistUiBAIDE5MTkgbyAtIEFwIDE1IDMgMSBTCistUiBAIDE5MTkgbyAtIE4gMjQgMyAwIC0KKy1SIEAgMTk0NSBvIC0gTWF5IDEgMjMgMSBTCistUiBAIDE5NDUgbyAtIE4gMSAwIDAgLQorLVIgQCAxOTQ2IG8gLSBNYXIgMzEgMnMgMSBTCistUiBAIDE5NDYgMTk0OSAtIE8gU3VuPj0xIDJzIDAgLQorLVIgQCAxOTQ3IDE5NDkgLSBBcCBTdW4+PTQgMnMgMSBTCistUiBAIDE5NTAgbyAtIEFwIDE3IDJzIDEgUworLVIgQCAxOTUwIG8gLSBPIDIzIDJzIDAgLQorLVIgQCAxOTU0IDE5NTUgLSBNYXkgMjMgMCAxIFMKKy1SIEAgMTk1NCAxOTU1IC0gTyAzIDAgMCAtCistUiBAIDE5NTYgbyAtIEp1biBTdW4+PTEgMCAxIFMKKy1SIEAgMTk1NiBvIC0gUyBsYXN0U3VuIDAgMCAtCistUiBAIDE5NTcgbyAtIEp1biBTdW4+PTEgMSAxIFMKKy1SIEAgMTk1NyBvIC0gUyBsYXN0U3VuIDMgMCAtCistUiBAIDE5ODAgbyAtIEFwIDYgMSAxIFMKKysyIGcgRUUlc1QgMTk0MSBBcCAzMAorKzEgZyBDRSVzVCAxOTQ0IEFwIDQKKysyIGcgRUUlc1QgMTk4MQorKzIgRSBFRSVzVAorK1IgaCAxOTE4IG8gLSBBcCAxIDMgMSBTCisrUiBoIDE5MTggbyAtIFMgMTYgMyAwIC0KKytSIGggMTkxOSBvIC0gQXAgMTUgMyAxIFMKKytSIGggMTkxOSBvIC0gTiAyNCAzIDAgLQorK1IgaCAxOTQ1IG8gLSBNYXkgMSAyMyAxIFMKKytSIGggMTk0NSBvIC0gTiAxIDAgMCAtCisrUiBoIDE5NDYgbyAtIE1hciAzMSAycyAxIFMKKytSIGggMTk0NiAxOTQ5IC0gTyBTdW4+PTEgMnMgMCAtCisrUiBoIDE5NDcgMTk0OSAtIEFwIFN1bj49NCAycyAxIFMKKytSIGggMTk1MCBvIC0gQXAgMTcgMnMgMSBTCisrUiBoIDE5NTAgbyAtIE8gMjMgMnMgMCAtCisrUiBoIDE5NTQgMTk1NSAtIE1heSAyMyAwIDEgUworK1IgaCAxOTU0IDE5NTUgLSBPIDMgMCAwIC0KKytSIGggMTk1NiBvIC0gSnVuIFN1bj49MSAwIDEgUworK1IgaCAxOTU2IG8gLSBTIGxhc3RTdW4gMCAwIC0KKytSIGggMTk1NyBvIC0gSnVuIFN1bj49MSAxIDEgUworK1IgaCAxOTU3IG8gLSBTIGxhc3RTdW4gMyAwIC0KKytSIGggMTk4MCBvIC0gQXAgNiAxIDEgUworIFogRXVyb3BlL0J1ZGFwZXN0IDE6MTY6MjAgLSBMTVQgMTg5MCBPCistMSAoIENFJXNUIDE5MTgKKy0xIEAgQ0Ulc1QgMTk0MSBBcCA4CistMSAoIENFJXNUIDE5NDUKKy0xIEAgQ0Ulc1QgMTk4MCBTIDI4IDJzCistMSBPIENFJXNUCistUiBbIDE5MTcgMTkxOSAtIEYgMTkgMjMgMSAtCistUiBbIDE5MTcgbyAtIE8gMjEgMSAwIC0KKy1SIFsgMTkxOCAxOTE5IC0gTiAxNiAxIDAgLQorLVIgWyAxOTIxIG8gLSBNYXIgMTkgMjMgMSAtCistUiBbIDE5MjEgbyAtIEp1biAyMyAxIDAgLQorLVIgWyAxOTM5IG8gLSBBcCAyOSAyMyAxIC0KKy1SIFsgMTkzOSBvIC0gTyAyOSAyIDAgLQorLVIgWyAxOTQwIG8gLSBGIDI1IDIgMSAtCistUiBbIDE5NDAgMTk0MSAtIE4gU3VuPj0yIDFzIDAgLQorLVIgWyAxOTQxIDE5NDIgLSBNYXIgU3VuPj0yIDFzIDEgLQorLVIgWyAxOTQzIDE5NDYgLSBNYXIgU3VuPj0xIDFzIDEgLQorLVIgWyAxOTQyIDE5NDggLSBPIFN1bj49MjIgMXMgMCAtCistUiBbIDE5NDcgMTk2NyAtIEFwIFN1bj49MSAxcyAxIC0KKy1SIFsgMTk0OSBvIC0gTyAzMCAxcyAwIC0KKy1SIFsgMTk1MCAxOTY2IC0gTyBTdW4+PTIyIDFzIDAgLQorLVIgWyAxOTY3IG8gLSBPIDI5IDFzIDAgLQorKzEgYyBDRSVzVCAxOTE4CisrMSBoIENFJXNUIDE5NDEgQXAgOAorKzEgYyBDRSVzVCAxOTQ1CisrMSBoIENFJXNUIDE5ODAgUyAyOCAycworKzEgRSBDRSVzVAorK1IgdyAxOTE3IDE5MTkgLSBGIDE5IDIzIDEgLQorK1IgdyAxOTE3IG8gLSBPIDIxIDEgMCAtCisrUiB3IDE5MTggMTkxOSAtIE4gMTYgMSAwIC0KKytSIHcgMTkyMSBvIC0gTWFyIDE5IDIzIDEgLQorK1IgdyAxOTIxIG8gLSBKdW4gMjMgMSAwIC0KKytSIHcgMTkzOSBvIC0gQXAgMjkgMjMgMSAtCisrUiB3IDE5MzkgbyAtIE8gMjkgMiAwIC0KKytSIHcgMTk0MCBvIC0gRiAyNSAyIDEgLQorK1IgdyAxOTQwIDE5NDEgLSBOIFN1bj49MiAxcyAwIC0KKytSIHcgMTk0MSAxOTQyIC0gTWFyIFN1bj49MiAxcyAxIC0KKytSIHcgMTk0MyAxOTQ2IC0gTWFyIFN1bj49MSAxcyAxIC0KKytSIHcgMTk0MiAxOTQ4IC0gTyBTdW4+PTIyIDFzIDAgLQorK1IgdyAxOTQ3IDE5NjcgLSBBcCBTdW4+PTEgMXMgMSAtCisrUiB3IDE5NDkgbyAtIE8gMzAgMXMgMCAtCisrUiB3IDE5NTAgMTk2NiAtIE8gU3VuPj0yMiAxcyAwIC0KKytSIHcgMTk2NyBvIC0gTyAyOSAxcyAwIC0KKyBaIEF0bGFudGljL1JleWtqYXZpayAtMToyOCAtIExNVCAxOTA4CistLTEgWyAtMDEvKzAwIDE5NjggQXAgNyAxcworKy0xIHcgLTAxLyswMCAxOTY4IEFwIDcgMXMKKyAwIC0gR01UCistUiBcIDE5MTYgbyAtIEp1biAzIDI0IDEgUworLVIgXCAxOTE2IDE5MTcgLSBTIDMwIDI0IDAgLQorLVIgXCAxOTE3IG8gLSBNYXIgMzEgMjQgMSBTCistUiBcIDE5MTggbyAtIE1hciA5IDI0IDEgUworLVIgXCAxOTE4IG8gLSBPIDYgMjQgMCAtCistUiBcIDE5MTkgbyAtIE1hciAxIDI0IDEgUworLVIgXCAxOTE5IG8gLSBPIDQgMjQgMCAtCistUiBcIDE5MjAgbyAtIE1hciAyMCAyNCAxIFMKKy1SIFwgMTkyMCBvIC0gUyAxOCAyNCAwIC0KKy1SIFwgMTk0MCBvIC0gSnVuIDE0IDI0IDEgUworLVIgXCAxOTQyIG8gLSBOIDIgMnMgMCAtCistUiBcIDE5NDMgbyAtIE1hciAyOSAycyAxIFMKKy1SIFwgMTk0MyBvIC0gTyA0IDJzIDAgLQorLVIgXCAxOTQ0IG8gLSBBcCAyIDJzIDEgUworLVIgXCAxOTQ0IG8gLSBTIDE3IDJzIDAgLQorLVIgXCAxOTQ1IG8gLSBBcCAyIDIgMSBTCistUiBcIDE5NDUgbyAtIFMgMTUgMSAwIC0KKy1SIFwgMTk0NiBvIC0gTWFyIDE3IDJzIDEgUworLVIgXCAxOTQ2IG8gLSBPIDYgMnMgMCAtCistUiBcIDE5NDcgbyAtIE1hciAxNiAwcyAxIFMKKy1SIFwgMTk0NyBvIC0gTyA1IDBzIDAgLQorLVIgXCAxOTQ4IG8gLSBGIDI5IDJzIDEgUworLVIgXCAxOTQ4IG8gLSBPIDMgMnMgMCAtCistUiBcIDE5NjYgMTk2OCAtIE1heSBTdW4+PTIyIDBzIDEgUworLVIgXCAxOTY2IG8gLSBTIDI0IDI0IDAgLQorLVIgXCAxOTY3IDE5NjkgLSBTIFN1bj49MjIgMHMgMCAtCistUiBcIDE5NjkgbyAtIEp1biAxIDBzIDEgUworLVIgXCAxOTcwIG8gLSBNYXkgMzEgMHMgMSBTCistUiBcIDE5NzAgbyAtIFMgbGFzdFN1biAwcyAwIC0KKy1SIFwgMTk3MSAxOTcyIC0gTWF5IFN1bj49MjIgMHMgMSBTCistUiBcIDE5NzEgbyAtIFMgbGFzdFN1biAwcyAwIC0KKy1SIFwgMTk3MiBvIC0gTyAxIDBzIDAgLQorLVIgXCAxOTczIG8gLSBKdW4gMyAwcyAxIFMKKy1SIFwgMTk3MyAxOTc0IC0gUyBsYXN0U3VuIDBzIDAgLQorLVIgXCAxOTc0IG8gLSBNYXkgMjYgMHMgMSBTCistUiBcIDE5NzUgbyAtIEp1biAxIDBzIDEgUworLVIgXCAxOTc1IDE5NzcgLSBTIGxhc3RTdW4gMHMgMCAtCistUiBcIDE5NzYgbyAtIE1heSAzMCAwcyAxIFMKKy1SIFwgMTk3NyAxOTc5IC0gTWF5IFN1bj49MjIgMHMgMSBTCistUiBcIDE5NzggbyAtIE8gMSAwcyAwIC0KKy1SIFwgMTk3OSBvIC0gUyAzMCAwcyAwIC0KKytSIEkgMTkxNiBvIC0gSnVuIDMgMjQgMSBTCisrUiBJIDE5MTYgMTkxNyAtIFMgMzAgMjQgMCAtCisrUiBJIDE5MTcgbyAtIE1hciAzMSAyNCAxIFMKKytSIEkgMTkxOCBvIC0gTWFyIDkgMjQgMSBTCisrUiBJIDE5MTggbyAtIE8gNiAyNCAwIC0KKytSIEkgMTkxOSBvIC0gTWFyIDEgMjQgMSBTCisrUiBJIDE5MTkgbyAtIE8gNCAyNCAwIC0KKytSIEkgMTkyMCBvIC0gTWFyIDIwIDI0IDEgUworK1IgSSAxOTIwIG8gLSBTIDE4IDI0IDAgLQorK1IgSSAxOTQwIG8gLSBKdW4gMTQgMjQgMSBTCisrUiBJIDE5NDIgbyAtIE4gMiAycyAwIC0KKytSIEkgMTk0MyBvIC0gTWFyIDI5IDJzIDEgUworK1IgSSAxOTQzIG8gLSBPIDQgMnMgMCAtCisrUiBJIDE5NDQgbyAtIEFwIDIgMnMgMSBTCisrUiBJIDE5NDQgbyAtIFMgMTcgMnMgMCAtCisrUiBJIDE5NDUgbyAtIEFwIDIgMiAxIFMKKytSIEkgMTk0NSBvIC0gUyAxNSAxIDAgLQorK1IgSSAxOTQ2IG8gLSBNYXIgMTcgMnMgMSBTCisrUiBJIDE5NDYgbyAtIE8gNiAycyAwIC0KKytSIEkgMTk0NyBvIC0gTWFyIDE2IDBzIDEgUworK1IgSSAxOTQ3IG8gLSBPIDUgMHMgMCAtCisrUiBJIDE5NDggbyAtIEYgMjkgMnMgMSBTCisrUiBJIDE5NDggbyAtIE8gMyAycyAwIC0KKytSIEkgMTk2NiAxOTY4IC0gTWF5IFN1bj49MjIgMHMgMSBTCisrUiBJIDE5NjYgbyAtIFMgMjQgMjQgMCAtCisrUiBJIDE5NjcgMTk2OSAtIFMgU3VuPj0yMiAwcyAwIC0KKytSIEkgMTk2OSBvIC0gSnVuIDEgMHMgMSBTCisrUiBJIDE5NzAgbyAtIE1heSAzMSAwcyAxIFMKKytSIEkgMTk3MCBvIC0gUyBsYXN0U3VuIDBzIDAgLQorK1IgSSAxOTcxIDE5NzIgLSBNYXkgU3VuPj0yMiAwcyAxIFMKKytSIEkgMTk3MSBvIC0gUyBsYXN0U3VuIDBzIDAgLQorK1IgSSAxOTcyIG8gLSBPIDEgMHMgMCAtCisrUiBJIDE5NzMgbyAtIEp1biAzIDBzIDEgUworK1IgSSAxOTczIDE5NzQgLSBTIGxhc3RTdW4gMHMgMCAtCisrUiBJIDE5NzQgbyAtIE1heSAyNiAwcyAxIFMKKytSIEkgMTk3NSBvIC0gSnVuIDEgMHMgMSBTCisrUiBJIDE5NzUgMTk3NyAtIFMgbGFzdFN1biAwcyAwIC0KKytSIEkgMTk3NiBvIC0gTWF5IDMwIDBzIDEgUworK1IgSSAxOTc3IDE5NzkgLSBNYXkgU3VuPj0yMiAwcyAxIFMKKytSIEkgMTk3OCBvIC0gTyAxIDBzIDAgLQorK1IgSSAxOTc5IG8gLSBTIDMwIDBzIDAgLQorIFogRXVyb3BlL1JvbWUgMDo0OTo1NiAtIExNVCAxODY2IFMgMjIKKyAwOjQ5OjU2IC0gUk1UIDE4OTMgTyAzMSAyMzo0OTo1NgorLTEgXCBDRSVzVCAxOTQzIFMgMTAKKy0xICggQ0Ulc1QgMTk0NCBKdW4gNAorLTEgXCBDRSVzVCAxOTgwCistMSBPIENFJXNUCisrMSBJIENFJXNUIDE5NDMgUyAxMAorKzEgYyBDRSVzVCAxOTQ0IEp1biA0CisrMSBJIENFJXNUIDE5ODAKKysxIEUgQ0Ulc1QKKyBMaSBFdXJvcGUvUm9tZSBFdXJvcGUvVmF0aWNhbgorIExpIEV1cm9wZS9Sb21lIEV1cm9wZS9TYW5fTWFyaW5vCistUiBdIDE5ODkgMTk5NiAtIE1hciBsYXN0U3VuIDJzIDEgUworLVIgXSAxOTg5IDE5OTYgLSBTIGxhc3RTdW4gMnMgMCAtCisrUiBMViAxOTg5IDE5OTYgLSBNYXIgbGFzdFN1biAycyAxIFMKKytSIExWIDE5ODkgMTk5NiAtIFMgbGFzdFN1biAycyAwIC0KKyBaIEV1cm9wZS9SaWdhIDE6MzY6MzQgLSBMTVQgMTg4MAorIDE6MzY6MzQgLSBSTVQgMTkxOCBBcCAxNSAyCisgMTozNjozNCAxIExTVCAxOTE4IFMgMTYgMworQEAgLTE4ODMsMTMgKzE5MDcsMTMgQEAgWiBFdXJvcGUvUmlnYSAxOjM2OjM0IC0gTE1UIDE4ODAKKyAxOjM2OjM0IC0gUk1UIDE5MjYgTWF5IDExCisgMiAtIEVFVCAxOTQwIEF1IDUKKyAzIC0gTVNLIDE5NDEgSnVsCistMSAoIENFJXNUIDE5NDQgTyAxMworLTMgTSBNU0svTVNEIDE5ODkgTWFyIGxhc3RTdW4gMnMKKysxIGMgQ0Ulc1QgMTk0NCBPIDEzCisrMyBSIE1TSy9NU0QgMTk4OSBNYXIgbGFzdFN1biAycworIDIgMSBFRVNUIDE5ODkgUyBsYXN0U3VuIDJzCistMiBdIEVFJXNUIDE5OTcgSmEgMjEKKy0yIE8gRUUlc1QgMjAwMCBGIDI5CisrMiBMViBFRSVzVCAxOTk3IEphIDIxCisrMiBFIEVFJXNUIDIwMDAgRiAyOQorIDIgLSBFRVQgMjAwMSBKYSAyCistMiBPIEVFJXNUCisrMiBFIEVFJXNUCisgTGkgRXVyb3BlL1p1cmljaCBFdXJvcGUvVmFkdXoKKyBaIEV1cm9wZS9WaWxuaXVzIDE6NDE6MTYgLSBMTVQgMTg4MAorIDE6MjQgLSBXTVQgMTkxNworQEAgLTE4OTgsNzgzICsxOTIyLDc3NiBAQCBaIEV1cm9wZS9WaWxuaXVzIDE6NDE6MTYgLSBMTVQgMTg4MAorIDIgLSBFRVQgMTkyMCBPIDkKKyAxIC0gQ0VUIDE5NDAgQXUgMworIDMgLSBNU0sgMTk0MSBKdW4gMjQKKy0xICggQ0Ulc1QgMTk0NCBBdQorLTMgTSBNU0svTVNEIDE5ODkgTWFyIDI2IDJzCistMiBNIEVFJXNUIDE5OTEgUyAyOSAycworLTIgKCBFRSVzVCAxOTk4CisrMSBjIENFJXNUIDE5NDQgQXUKKyszIFIgTVNLL01TRCAxOTg5IE1hciAyNiAycworKzIgUiBFRSVzVCAxOTkxIFMgMjkgMnMKKysyIGMgRUUlc1QgMTk5OAorIDIgLSBFRVQgMTk5OCBNYXIgMjkgMXUKKy0xIE8gQ0Ulc1QgMTk5OSBPIDMxIDF1CisrMSBFIENFJXNUIDE5OTkgTyAzMSAxdQorIDIgLSBFRVQgMjAwMworLTIgTyBFRSVzVAorLVIgXiAxOTE2IG8gLSBNYXkgMTQgMjMgMSBTCistUiBeIDE5MTYgbyAtIE8gMSAxIDAgLQorLVIgXiAxOTE3IG8gLSBBcCAyOCAyMyAxIFMKKy1SIF4gMTkxNyBvIC0gUyAxNyAxIDAgLQorLVIgXiAxOTE4IG8gLSBBcCBNPj0xNSAycyAxIFMKKy1SIF4gMTkxOCBvIC0gUyBNPj0xNSAycyAwIC0KKy1SIF4gMTkxOSBvIC0gTWFyIDEgMjMgMSBTCistUiBeIDE5MTkgbyAtIE8gNSAzIDAgLQorLVIgXiAxOTIwIG8gLSBGIDE0IDIzIDEgUworLVIgXiAxOTIwIG8gLSBPIDI0IDIgMCAtCistUiBeIDE5MjEgbyAtIE1hciAxNCAyMyAxIFMKKy1SIF4gMTkyMSBvIC0gTyAyNiAyIDAgLQorLVIgXiAxOTIyIG8gLSBNYXIgMjUgMjMgMSBTCistUiBeIDE5MjIgbyAtIE8gU3VuPj0yIDEgMCAtCistUiBeIDE5MjMgbyAtIEFwIDIxIDIzIDEgUworLVIgXiAxOTIzIG8gLSBPIFN1bj49MiAyIDAgLQorLVIgXiAxOTI0IG8gLSBNYXIgMjkgMjMgMSBTCistUiBeIDE5MjQgMTkyOCAtIE8gU3VuPj0yIDEgMCAtCistUiBeIDE5MjUgbyAtIEFwIDUgMjMgMSBTCistUiBeIDE5MjYgbyAtIEFwIDE3IDIzIDEgUworLVIgXiAxOTI3IG8gLSBBcCA5IDIzIDEgUworLVIgXiAxOTI4IG8gLSBBcCAxNCAyMyAxIFMKKy1SIF4gMTkyOSBvIC0gQXAgMjAgMjMgMSBTCisrMiBFIEVFJXNUCisrUiBMWCAxOTE2IG8gLSBNYXkgMTQgMjMgMSBTCisrUiBMWCAxOTE2IG8gLSBPIDEgMSAwIC0KKytSIExYIDE5MTcgbyAtIEFwIDI4IDIzIDEgUworK1IgTFggMTkxNyBvIC0gUyAxNyAxIDAgLQorK1IgTFggMTkxOCBvIC0gQXAgTT49MTUgMnMgMSBTCisrUiBMWCAxOTE4IG8gLSBTIE0+PTE1IDJzIDAgLQorK1IgTFggMTkxOSBvIC0gTWFyIDEgMjMgMSBTCisrUiBMWCAxOTE5IG8gLSBPIDUgMyAwIC0KKytSIExYIDE5MjAgbyAtIEYgMTQgMjMgMSBTCisrUiBMWCAxOTIwIG8gLSBPIDI0IDIgMCAtCisrUiBMWCAxOTIxIG8gLSBNYXIgMTQgMjMgMSBTCisrUiBMWCAxOTIxIG8gLSBPIDI2IDIgMCAtCisrUiBMWCAxOTIyIG8gLSBNYXIgMjUgMjMgMSBTCisrUiBMWCAxOTIyIG8gLSBPIFN1bj49MiAxIDAgLQorK1IgTFggMTkyMyBvIC0gQXAgMjEgMjMgMSBTCisrUiBMWCAxOTIzIG8gLSBPIFN1bj49MiAyIDAgLQorK1IgTFggMTkyNCBvIC0gTWFyIDI5IDIzIDEgUworK1IgTFggMTkyNCAxOTI4IC0gTyBTdW4+PTIgMSAwIC0KKytSIExYIDE5MjUgbyAtIEFwIDUgMjMgMSBTCisrUiBMWCAxOTI2IG8gLSBBcCAxNyAyMyAxIFMKKytSIExYIDE5MjcgbyAtIEFwIDkgMjMgMSBTCisrUiBMWCAxOTI4IG8gLSBBcCAxNCAyMyAxIFMKKytSIExYIDE5MjkgbyAtIEFwIDIwIDIzIDEgUworIFogRXVyb3BlL0x1eGVtYm91cmcgMDoyNDozNiAtIExNVCAxOTA0IEp1bgorLTEgXiBDRSVzVCAxOTE4IE4gMjUKKy0wIF4gV0Ulc1QgMTkyOSBPIDYgMnMKKy0wICsgV0Ulc1QgMTk0MCBNYXkgMTQgMworLTEgKCBXRSVzVCAxOTQ0IFMgMTggMworLTEgKyBDRSVzVCAxOTc3CistMSBPIENFJXNUCistUiBfIDE5NzMgbyAtIE1hciAzMSAwcyAxIFMKKy1SIF8gMTk3MyBvIC0gUyAyOSAwcyAwIC0KKy1SIF8gMTk3NCBvIC0gQXAgMjEgMHMgMSBTCistUiBfIDE5NzQgbyAtIFMgMTYgMHMgMCAtCistUiBfIDE5NzUgMTk3OSAtIEFwIFN1bj49MTUgMiAxIFMKKy1SIF8gMTk3NSAxOTgwIC0gUyBTdW4+PTE1IDIgMCAtCistUiBfIDE5ODAgbyAtIE1hciAzMSAyIDEgUworKzEgTFggQ0Ulc1QgMTkxOCBOIDI1CisrMCBMWCBXRSVzVCAxOTI5IE8gNiAycworKzAgYiBXRSVzVCAxOTQwIE1heSAxNCAzCisrMSBjIFdFJXNUIDE5NDQgUyAxOCAzCisrMSBiIENFJXNUIDE5NzcKKysxIEUgQ0Ulc1QKKytSIE1UIDE5NzMgbyAtIE1hciAzMSAwcyAxIFMKKytSIE1UIDE5NzMgbyAtIFMgMjkgMHMgMCAtCisrUiBNVCAxOTc0IG8gLSBBcCAyMSAwcyAxIFMKKytSIE1UIDE5NzQgbyAtIFMgMTYgMHMgMCAtCisrUiBNVCAxOTc1IDE5NzkgLSBBcCBTdW4+PTE1IDIgMSBTCisrUiBNVCAxOTc1IDE5ODAgLSBTIFN1bj49MTUgMiAwIC0KKytSIE1UIDE5ODAgbyAtIE1hciAzMSAyIDEgUworIFogRXVyb3BlL01hbHRhIDA6NTg6NCAtIExNVCAxODkzIE4gMiAwcworLTEgXCBDRSVzVCAxOTczIE1hciAzMQorLTEgXyBDRSVzVCAxOTgxCistMSBPIENFJXNUCistUiBgIDE5OTcgbWEgLSBNYXIgbGFzdFN1biAyIDEgUworLVIgYCAxOTk3IG1hIC0gTyBsYXN0U3VuIDMgMCAtCisrMSBJIENFJXNUIDE5NzMgTWFyIDMxCisrMSBNVCBDRSVzVCAxOTgxCisrMSBFIENFJXNUCisrUiBNRCAxOTk3IG1hIC0gTWFyIGxhc3RTdW4gMiAxIFMKKytSIE1EIDE5OTcgbWEgLSBPIGxhc3RTdW4gMyAwIC0KKyBaIEV1cm9wZS9DaGlzaW5hdSAxOjU1OjIwIC0gTE1UIDE4ODAKKyAxOjU1IC0gQ01UIDE5MTggRiAxNQorIDE6NDQ6MjQgLSBCTVQgMTkzMSBKdWwgMjQKKy0yIHsgRUUlc1QgMTk0MCBBdSAxNQorKzIgeiBFRSVzVCAxOTQwIEF1IDE1CisgMiAxIEVFU1QgMTk0MSBKdWwgMTcKKy0xICggQ0Ulc1QgMTk0NCBBdSAyNAorLTMgTSBNU0svTVNEIDE5OTAgTWF5IDYgMgorLTIgTSBFRSVzVCAxOTkyCistMiBXIEVFJXNUIDE5OTcKKy0yIGAgRUUlc1QKKysxIGMgQ0Ulc1QgMTk0NCBBdSAyNAorKzMgUiBNU0svTVNEIDE5OTAgTWF5IDYgMgorKzIgUiBFRSVzVCAxOTkyCisrMiBlIEVFJXNUIDE5OTcKKysyIE1EIEVFJXNUCisgWiBFdXJvcGUvTW9uYWNvIDA6Mjk6MzIgLSBMTVQgMTg5MSBNYXIgMTUKKyAwOjk6MjEgLSBQTVQgMTkxMSBNYXIgMTEKKy0wIDwgV0Ulc1QgMTk0NSBTIDE2IDMKKy0xIDwgQ0Ulc1QgMTk3NworLTEgTyBDRSVzVAorLVIgfCAxOTE2IG8gLSBNYXkgMSAwIDEgTlNUCistUiB8IDE5MTYgbyAtIE8gMSAwIDAgQU1UCistUiB8IDE5MTcgbyAtIEFwIDE2IDJzIDEgTlNUCistUiB8IDE5MTcgbyAtIFMgMTcgMnMgMCBBTVQKKy1SIHwgMTkxOCAxOTIxIC0gQXAgTT49MSAycyAxIE5TVAorLVIgfCAxOTE4IDE5MjEgLSBTIGxhc3RNIDJzIDAgQU1UCistUiB8IDE5MjIgbyAtIE1hciBsYXN0U3VuIDJzIDEgTlNUCistUiB8IDE5MjIgMTkzNiAtIE8gU3VuPj0yIDJzIDAgQU1UCistUiB8IDE5MjMgbyAtIEp1biBGPj0xIDJzIDEgTlNUCistUiB8IDE5MjQgbyAtIE1hciBsYXN0U3VuIDJzIDEgTlNUCistUiB8IDE5MjUgbyAtIEp1biBGPj0xIDJzIDEgTlNUCistUiB8IDE5MjYgMTkzMSAtIE1heSAxNSAycyAxIE5TVAorLVIgfCAxOTMyIG8gLSBNYXkgMjIgMnMgMSBOU1QKKy1SIHwgMTkzMyAxOTM2IC0gTWF5IDE1IDJzIDEgTlNUCistUiB8IDE5MzcgbyAtIE1heSAyMiAycyAxIE5TVAorLVIgfCAxOTM3IG8gLSBKdWwgMSAwIDEgUworLVIgfCAxOTM3IDE5MzkgLSBPIFN1bj49MiAycyAwIC0KKy1SIHwgMTkzOCAxOTM5IC0gTWF5IDE1IDJzIDEgUworLVIgfCAxOTQ1IG8gLSBBcCAyIDJzIDEgUworLVIgfCAxOTQ1IG8gLSBTIDE2IDJzIDAgLQorKzAgRiBXRSVzVCAxOTQ1IFMgMTYgMworKzEgRiBDRSVzVCAxOTc3CisrMSBFIENFJXNUCisrUiBOIDE5MTYgbyAtIE1heSAxIDAgMSBOU1QKKytSIE4gMTkxNiBvIC0gTyAxIDAgMCBBTVQKKytSIE4gMTkxNyBvIC0gQXAgMTYgMnMgMSBOU1QKKytSIE4gMTkxNyBvIC0gUyAxNyAycyAwIEFNVAorK1IgTiAxOTE4IDE5MjEgLSBBcCBNPj0xIDJzIDEgTlNUCisrUiBOIDE5MTggMTkyMSAtIFMgbGFzdE0gMnMgMCBBTVQKKytSIE4gMTkyMiBvIC0gTWFyIGxhc3RTdW4gMnMgMSBOU1QKKytSIE4gMTkyMiAxOTM2IC0gTyBTdW4+PTIgMnMgMCBBTVQKKytSIE4gMTkyMyBvIC0gSnVuIEY+PTEgMnMgMSBOU1QKKytSIE4gMTkyNCBvIC0gTWFyIGxhc3RTdW4gMnMgMSBOU1QKKytSIE4gMTkyNSBvIC0gSnVuIEY+PTEgMnMgMSBOU1QKKytSIE4gMTkyNiAxOTMxIC0gTWF5IDE1IDJzIDEgTlNUCisrUiBOIDE5MzIgbyAtIE1heSAyMiAycyAxIE5TVAorK1IgTiAxOTMzIDE5MzYgLSBNYXkgMTUgMnMgMSBOU1QKKytSIE4gMTkzNyBvIC0gTWF5IDIyIDJzIDEgTlNUCisrUiBOIDE5MzcgbyAtIEp1bCAxIDAgMSBTCisrUiBOIDE5MzcgMTkzOSAtIE8gU3VuPj0yIDJzIDAgLQorK1IgTiAxOTM4IDE5MzkgLSBNYXkgMTUgMnMgMSBTCisrUiBOIDE5NDUgbyAtIEFwIDIgMnMgMSBTCisrUiBOIDE5NDUgbyAtIFMgMTYgMnMgMCAtCisgWiBFdXJvcGUvQW1zdGVyZGFtIDA6MTk6MzIgLSBMTVQgMTgzNQorLTA6MTk6MzIgfCAlcyAxOTM3IEp1bAorLTA6MjAgfCArMDAyMC8rMDEyMCAxOTQwIE1heSAxNgorLTEgKCBDRSVzVCAxOTQ1IEFwIDIgMgorLTEgfCBDRSVzVCAxOTc3CistMSBPIENFJXNUCistUiB9IDE5MTYgbyAtIE1heSAyMiAxIDEgUworLVIgfSAxOTE2IG8gLSBTIDMwIDAgMCAtCistUiB9IDE5NDUgbyAtIEFwIDIgMnMgMSBTCistUiB9IDE5NDUgbyAtIE8gMSAycyAwIC0KKy1SIH0gMTk1OSAxOTY0IC0gTWFyIFN1bj49MTUgMnMgMSBTCistUiB9IDE5NTkgMTk2NSAtIFMgU3VuPj0xNSAycyAwIC0KKy1SIH0gMTk2NSBvIC0gQXAgMjUgMnMgMSBTCisrMDoxOTozMiBOICVzIDE5MzcgSnVsCisrMDoyMCBOICswMDIwLyswMTIwIDE5NDAgTWF5IDE2CisrMSBjIENFJXNUIDE5NDUgQXAgMiAyCisrMSBOIENFJXNUIDE5NzcKKysxIEUgQ0Ulc1QKKytSIE5PIDE5MTYgbyAtIE1heSAyMiAxIDEgUworK1IgTk8gMTkxNiBvIC0gUyAzMCAwIDAgLQorK1IgTk8gMTk0NSBvIC0gQXAgMiAycyAxIFMKKytSIE5PIDE5NDUgbyAtIE8gMSAycyAwIC0KKytSIE5PIDE5NTkgMTk2NCAtIE1hciBTdW4+PTE1IDJzIDEgUworK1IgTk8gMTk1OSAxOTY1IC0gUyBTdW4+PTE1IDJzIDAgLQorK1IgTk8gMTk2NSBvIC0gQXAgMjUgMnMgMSBTCisgWiBFdXJvcGUvT3NsbyAwOjQzIC0gTE1UIDE4OTUKKy0xIH0gQ0Ulc1QgMTk0MCBBdSAxMCAyMworLTEgKCBDRSVzVCAxOTQ1IEFwIDIgMgorLTEgfSBDRSVzVCAxOTgwCistMSBPIENFJXNUCisrMSBOTyBDRSVzVCAxOTQwIEF1IDEwIDIzCisrMSBjIENFJXNUIDE5NDUgQXAgMiAyCisrMSBOTyBDRSVzVCAxOTgwCisrMSBFIENFJXNUCisgTGkgRXVyb3BlL09zbG8gQXJjdGljL0xvbmd5ZWFyYnllbgorLVIgfiAxOTE4IDE5MTkgLSBTIDE2IDJzIDAgLQorLVIgfiAxOTE5IG8gLSBBcCAxNSAycyAxIFMKKy1SIH4gMTk0NCBvIC0gQXAgMyAycyAxIFMKKy1SIH4gMTk0NCBvIC0gTyA0IDIgMCAtCistUiB+IDE5NDUgbyAtIEFwIDI5IDAgMSBTCistUiB+IDE5NDUgbyAtIE4gMSAwIDAgLQorLVIgfiAxOTQ2IG8gLSBBcCAxNCAwcyAxIFMKKy1SIH4gMTk0NiBvIC0gTyA3IDJzIDAgLQorLVIgfiAxOTQ3IG8gLSBNYXkgNCAycyAxIFMKKy1SIH4gMTk0NyAxOTQ5IC0gTyBTdW4+PTEgMnMgMCAtCistUiB+IDE5NDggbyAtIEFwIDE4IDJzIDEgUworLVIgfiAxOTQ5IG8gLSBBcCAxMCAycyAxIFMKKy1SIH4gMTk1NyBvIC0gSnVuIDIgMXMgMSBTCistUiB+IDE5NTcgMTk1OCAtIFMgbGFzdFN1biAxcyAwIC0KKy1SIH4gMTk1OCBvIC0gTWFyIDMwIDFzIDEgUworLVIgfiAxOTU5IG8gLSBNYXkgMzEgMXMgMSBTCistUiB+IDE5NTkgMTk2MSAtIE8gU3VuPj0xIDFzIDAgLQorLVIgfiAxOTYwIG8gLSBBcCAzIDFzIDEgUworLVIgfiAxOTYxIDE5NjQgLSBNYXkgbGFzdFN1biAxcyAxIFMKKy1SIH4gMTk2MiAxOTY0IC0gUyBsYXN0U3VuIDFzIDAgLQorK1IgTyAxOTE4IDE5MTkgLSBTIDE2IDJzIDAgLQorK1IgTyAxOTE5IG8gLSBBcCAxNSAycyAxIFMKKytSIE8gMTk0NCBvIC0gQXAgMyAycyAxIFMKKytSIE8gMTk0NCBvIC0gTyA0IDIgMCAtCisrUiBPIDE5NDUgbyAtIEFwIDI5IDAgMSBTCisrUiBPIDE5NDUgbyAtIE4gMSAwIDAgLQorK1IgTyAxOTQ2IG8gLSBBcCAxNCAwcyAxIFMKKytSIE8gMTk0NiBvIC0gTyA3IDJzIDAgLQorK1IgTyAxOTQ3IG8gLSBNYXkgNCAycyAxIFMKKytSIE8gMTk0NyAxOTQ5IC0gTyBTdW4+PTEgMnMgMCAtCisrUiBPIDE5NDggbyAtIEFwIDE4IDJzIDEgUworK1IgTyAxOTQ5IG8gLSBBcCAxMCAycyAxIFMKKytSIE8gMTk1NyBvIC0gSnVuIDIgMXMgMSBTCisrUiBPIDE5NTcgMTk1OCAtIFMgbGFzdFN1biAxcyAwIC0KKytSIE8gMTk1OCBvIC0gTWFyIDMwIDFzIDEgUworK1IgTyAxOTU5IG8gLSBNYXkgMzEgMXMgMSBTCisrUiBPIDE5NTkgMTk2MSAtIE8gU3VuPj0xIDFzIDAgLQorK1IgTyAxOTYwIG8gLSBBcCAzIDFzIDEgUworK1IgTyAxOTYxIDE5NjQgLSBNYXkgbGFzdFN1biAxcyAxIFMKKytSIE8gMTk2MiAxOTY0IC0gUyBsYXN0U3VuIDFzIDAgLQorIFogRXVyb3BlL1dhcnNhdyAxOjI0IC0gTE1UIDE4ODAKKyAxOjI0IC0gV01UIDE5MTUgQXUgNQorLTEgKCBDRSVzVCAxOTE4IFMgMTYgMworLTIgfiBFRSVzVCAxOTIyIEp1bgorLTEgfiBDRSVzVCAxOTQwIEp1biAyMyAyCistMSAoIENFJXNUIDE5NDQgTworLTEgfiBDRSVzVCAxOTc3CistMSAnIENFJXNUIDE5ODgKKy0xIE8gQ0Ulc1QKKy1SIEFBIDE5MTYgbyAtIEp1biAxNyAyMyAxIFMKKy1SIEFBIDE5MTYgbyAtIE4gMSAxIDAgLQorLVIgQUEgMTkxNyBvIC0gRiAyOCAyM3MgMSBTCistUiBBQSAxOTE3IDE5MjEgLSBPIDE0IDIzcyAwIC0KKy1SIEFBIDE5MTggbyAtIE1hciAxIDIzcyAxIFMKKy1SIEFBIDE5MTkgbyAtIEYgMjggMjNzIDEgUworLVIgQUEgMTkyMCBvIC0gRiAyOSAyM3MgMSBTCistUiBBQSAxOTIxIG8gLSBGIDI4IDIzcyAxIFMKKy1SIEFBIDE5MjQgbyAtIEFwIDE2IDIzcyAxIFMKKy1SIEFBIDE5MjQgbyAtIE8gMTQgMjNzIDAgLQorLVIgQUEgMTkyNiBvIC0gQXAgMTcgMjNzIDEgUworLVIgQUEgMTkyNiAxOTI5IC0gTyBTYXQ+PTEgMjNzIDAgLQorLVIgQUEgMTkyNyBvIC0gQXAgOSAyM3MgMSBTCistUiBBQSAxOTI4IG8gLSBBcCAxNCAyM3MgMSBTCistUiBBQSAxOTI5IG8gLSBBcCAyMCAyM3MgMSBTCistUiBBQSAxOTMxIG8gLSBBcCAxOCAyM3MgMSBTCistUiBBQSAxOTMxIDE5MzIgLSBPIFNhdD49MSAyM3MgMCAtCistUiBBQSAxOTMyIG8gLSBBcCAyIDIzcyAxIFMKKy1SIEFBIDE5MzQgbyAtIEFwIDcgMjNzIDEgUworLVIgQUEgMTkzNCAxOTM4IC0gTyBTYXQ+PTEgMjNzIDAgLQorLVIgQUEgMTkzNSBvIC0gTWFyIDMwIDIzcyAxIFMKKy1SIEFBIDE5MzYgbyAtIEFwIDE4IDIzcyAxIFMKKy1SIEFBIDE5MzcgbyAtIEFwIDMgMjNzIDEgUworLVIgQUEgMTkzOCBvIC0gTWFyIDI2IDIzcyAxIFMKKy1SIEFBIDE5MzkgbyAtIEFwIDE1IDIzcyAxIFMKKy1SIEFBIDE5MzkgbyAtIE4gMTggMjNzIDAgLQorLVIgQUEgMTk0MCBvIC0gRiAyNCAyM3MgMSBTCistUiBBQSAxOTQwIDE5NDEgLSBPIDUgMjNzIDAgLQorLVIgQUEgMTk0MSBvIC0gQXAgNSAyM3MgMSBTCistUiBBQSAxOTQyIDE5NDUgLSBNYXIgU2F0Pj04IDIzcyAxIFMKKy1SIEFBIDE5NDIgbyAtIEFwIDI1IDIycyAyIE0KKy1SIEFBIDE5NDIgbyAtIEF1IDE1IDIycyAxIFMKKy1SIEFBIDE5NDIgMTk0NSAtIE8gU2F0Pj0yNCAyM3MgMCAtCistUiBBQSAxOTQzIG8gLSBBcCAxNyAyMnMgMiBNCistUiBBQSAxOTQzIDE5NDUgLSBBdSBTYXQ+PTI1IDIycyAxIFMKKy1SIEFBIDE5NDQgMTk0NSAtIEFwIFNhdD49MjEgMjJzIDIgTQorLVIgQUEgMTk0NiBvIC0gQXAgU2F0Pj0xIDIzcyAxIFMKKy1SIEFBIDE5NDYgbyAtIE8gU2F0Pj0xIDIzcyAwIC0KKy1SIEFBIDE5NDcgMTk0OSAtIEFwIFN1bj49MSAycyAxIFMKKy1SIEFBIDE5NDcgMTk0OSAtIE8gU3VuPj0xIDJzIDAgLQorLVIgQUEgMTk1MSAxOTY1IC0gQXAgU3VuPj0xIDJzIDEgUworLVIgQUEgMTk1MSAxOTY1IC0gTyBTdW4+PTEgMnMgMCAtCistUiBBQSAxOTc3IG8gLSBNYXIgMjcgMHMgMSBTCistUiBBQSAxOTc3IG8gLSBTIDI1IDBzIDAgLQorLVIgQUEgMTk3OCAxOTc5IC0gQXAgU3VuPj0xIDBzIDEgUworLVIgQUEgMTk3OCBvIC0gTyAxIDBzIDAgLQorLVIgQUEgMTk3OSAxOTgyIC0gUyBsYXN0U3VuIDFzIDAgLQorLVIgQUEgMTk4MCBvIC0gTWFyIGxhc3RTdW4gMHMgMSBTCistUiBBQSAxOTgxIDE5ODIgLSBNYXIgbGFzdFN1biAxcyAxIFMKKy1SIEFBIDE5ODMgbyAtIE1hciBsYXN0U3VuIDJzIDEgUworKzEgYyBDRSVzVCAxOTE4IFMgMTYgMworKzIgTyBFRSVzVCAxOTIyIEp1bgorKzEgTyBDRSVzVCAxOTQwIEp1biAyMyAyCisrMSBjIENFJXNUIDE5NDQgTworKzEgTyBDRSVzVCAxOTc3CisrMSBXLSBDRSVzVCAxOTg4CisrMSBFIENFJXNUCisrUiBwIDE5MTYgbyAtIEp1biAxNyAyMyAxIFMKKytSIHAgMTkxNiBvIC0gTiAxIDEgMCAtCisrUiBwIDE5MTcgbyAtIEYgMjggMjNzIDEgUworK1IgcCAxOTE3IDE5MjEgLSBPIDE0IDIzcyAwIC0KKytSIHAgMTkxOCBvIC0gTWFyIDEgMjNzIDEgUworK1IgcCAxOTE5IG8gLSBGIDI4IDIzcyAxIFMKKytSIHAgMTkyMCBvIC0gRiAyOSAyM3MgMSBTCisrUiBwIDE5MjEgbyAtIEYgMjggMjNzIDEgUworK1IgcCAxOTI0IG8gLSBBcCAxNiAyM3MgMSBTCisrUiBwIDE5MjQgbyAtIE8gMTQgMjNzIDAgLQorK1IgcCAxOTI2IG8gLSBBcCAxNyAyM3MgMSBTCisrUiBwIDE5MjYgMTkyOSAtIE8gU2F0Pj0xIDIzcyAwIC0KKytSIHAgMTkyNyBvIC0gQXAgOSAyM3MgMSBTCisrUiBwIDE5MjggbyAtIEFwIDE0IDIzcyAxIFMKKytSIHAgMTkyOSBvIC0gQXAgMjAgMjNzIDEgUworK1IgcCAxOTMxIG8gLSBBcCAxOCAyM3MgMSBTCisrUiBwIDE5MzEgMTkzMiAtIE8gU2F0Pj0xIDIzcyAwIC0KKytSIHAgMTkzMiBvIC0gQXAgMiAyM3MgMSBTCisrUiBwIDE5MzQgbyAtIEFwIDcgMjNzIDEgUworK1IgcCAxOTM0IDE5MzggLSBPIFNhdD49MSAyM3MgMCAtCisrUiBwIDE5MzUgbyAtIE1hciAzMCAyM3MgMSBTCisrUiBwIDE5MzYgbyAtIEFwIDE4IDIzcyAxIFMKKytSIHAgMTkzNyBvIC0gQXAgMyAyM3MgMSBTCisrUiBwIDE5MzggbyAtIE1hciAyNiAyM3MgMSBTCisrUiBwIDE5MzkgbyAtIEFwIDE1IDIzcyAxIFMKKytSIHAgMTkzOSBvIC0gTiAxOCAyM3MgMCAtCisrUiBwIDE5NDAgbyAtIEYgMjQgMjNzIDEgUworK1IgcCAxOTQwIDE5NDEgLSBPIDUgMjNzIDAgLQorK1IgcCAxOTQxIG8gLSBBcCA1IDIzcyAxIFMKKytSIHAgMTk0MiAxOTQ1IC0gTWFyIFNhdD49OCAyM3MgMSBTCisrUiBwIDE5NDIgbyAtIEFwIDI1IDIycyAyIE0KKytSIHAgMTk0MiBvIC0gQXUgMTUgMjJzIDEgUworK1IgcCAxOTQyIDE5NDUgLSBPIFNhdD49MjQgMjNzIDAgLQorK1IgcCAxOTQzIG8gLSBBcCAxNyAyMnMgMiBNCisrUiBwIDE5NDMgMTk0NSAtIEF1IFNhdD49MjUgMjJzIDEgUworK1IgcCAxOTQ0IDE5NDUgLSBBcCBTYXQ+PTIxIDIycyAyIE0KKytSIHAgMTk0NiBvIC0gQXAgU2F0Pj0xIDIzcyAxIFMKKytSIHAgMTk0NiBvIC0gTyBTYXQ+PTEgMjNzIDAgLQorK1IgcCAxOTQ3IDE5NDkgLSBBcCBTdW4+PTEgMnMgMSBTCisrUiBwIDE5NDcgMTk0OSAtIE8gU3VuPj0xIDJzIDAgLQorK1IgcCAxOTUxIDE5NjUgLSBBcCBTdW4+PTEgMnMgMSBTCisrUiBwIDE5NTEgMTk2NSAtIE8gU3VuPj0xIDJzIDAgLQorK1IgcCAxOTc3IG8gLSBNYXIgMjcgMHMgMSBTCisrUiBwIDE5NzcgbyAtIFMgMjUgMHMgMCAtCisrUiBwIDE5NzggMTk3OSAtIEFwIFN1bj49MSAwcyAxIFMKKytSIHAgMTk3OCBvIC0gTyAxIDBzIDAgLQorK1IgcCAxOTc5IDE5ODIgLSBTIGxhc3RTdW4gMXMgMCAtCisrUiBwIDE5ODAgbyAtIE1hciBsYXN0U3VuIDBzIDEgUworK1IgcCAxOTgxIDE5ODIgLSBNYXIgbGFzdFN1biAxcyAxIFMKKytSIHAgMTk4MyBvIC0gTWFyIGxhc3RTdW4gMnMgMSBTCisgWiBFdXJvcGUvTGlzYm9uIC0wOjM2OjQ1IC0gTE1UIDE4ODQKKyAtMDozNjo0NSAtIExNVCAxOTEyIEphIDEgMHUKKy0wIEFBIFdFJXNUIDE5NjYgQXAgMyAyCisrMCBwIFdFJXNUIDE5NjYgQXAgMyAyCisgMSAtIENFVCAxOTc2IFMgMjYgMQorLTAgQUEgV0Ulc1QgMTk4MyBTIDI1IDFzCistMCAnIFdFJXNUIDE5OTIgUyAyNyAxcworLTEgTyBDRSVzVCAxOTk2IE1hciAzMSAxdQorLTAgTyBXRSVzVAorKzAgcCBXRSVzVCAxOTgzIFMgMjUgMXMKKyswIFctIFdFJXNUIDE5OTIgUyAyNyAxcworKzEgRSBDRSVzVCAxOTk2IE1hciAzMSAxdQorKzAgRSBXRSVzVAorIFogQXRsYW50aWMvQXpvcmVzIC0xOjQyOjQwIC0gTE1UIDE4ODQKKyAtMTo1NDozMiAtIEhNVCAxOTEyIEphIDEgMnUKKy0tMiBBQSAtMDIvLTAxIDE5NDIgQXAgMjUgMjJzCistLTIgQUEgKzAwIDE5NDIgQXUgMTUgMjJzCistLTIgQUEgLTAyLy0wMSAxOTQzIEFwIDE3IDIycworLS0yIEFBICswMCAxOTQzIEF1IDI4IDIycworLS0yIEFBIC0wMi8tMDEgMTk0NCBBcCAyMiAyMnMKKy0tMiBBQSArMDAgMTk0NCBBdSAyNiAyMnMKKy0tMiBBQSAtMDIvLTAxIDE5NDUgQXAgMjEgMjJzCistLTIgQUEgKzAwIDE5NDUgQXUgMjUgMjJzCistLTIgQUEgLTAyLy0wMSAxOTY2IEFwIDMgMgorLS0xIEFBIC0wMS8rMDAgMTk4MyBTIDI1IDFzCistLTEgJyAtMDEvKzAwIDE5OTIgUyAyNyAxcworLTAgTyBXRSVzVCAxOTkzIE1hciAyOCAxdQorLS0xIE8gLTAxLyswMAorKy0yIHAgLTAyLy0wMSAxOTQyIEFwIDI1IDIycworKy0yIHAgKzAwIDE5NDIgQXUgMTUgMjJzCisrLTIgcCAtMDIvLTAxIDE5NDMgQXAgMTcgMjJzCisrLTIgcCArMDAgMTk0MyBBdSAyOCAyMnMKKystMiBwIC0wMi8tMDEgMTk0NCBBcCAyMiAyMnMKKystMiBwICswMCAxOTQ0IEF1IDI2IDIycworKy0yIHAgLTAyLy0wMSAxOTQ1IEFwIDIxIDIycworKy0yIHAgKzAwIDE5NDUgQXUgMjUgMjJzCisrLTIgcCAtMDIvLTAxIDE5NjYgQXAgMyAyCisrLTEgcCAtMDEvKzAwIDE5ODMgUyAyNSAxcworKy0xIFctIC0wMS8rMDAgMTk5MiBTIDI3IDFzCisrMCBFIFdFJXNUIDE5OTMgTWFyIDI4IDF1CisrLTEgRSAtMDEvKzAwCisgWiBBdGxhbnRpYy9NYWRlaXJhIC0xOjc6MzYgLSBMTVQgMTg4NAorIC0xOjc6MzYgLSBGTVQgMTkxMiBKYSAxIDF1CistLTEgQUEgLTAxLyswMCAxOTQyIEFwIDI1IDIycworLS0xIEFBICswMSAxOTQyIEF1IDE1IDIycworLS0xIEFBIC0wMS8rMDAgMTk0MyBBcCAxNyAyMnMKKy0tMSBBQSArMDEgMTk0MyBBdSAyOCAyMnMKKy0tMSBBQSAtMDEvKzAwIDE5NDQgQXAgMjIgMjJzCistLTEgQUEgKzAxIDE5NDQgQXUgMjYgMjJzCistLTEgQUEgLTAxLyswMCAxOTQ1IEFwIDIxIDIycworLS0xIEFBICswMSAxOTQ1IEF1IDI1IDIycworLS0xIEFBIC0wMS8rMDAgMTk2NiBBcCAzIDIKKy0wIEFBIFdFJXNUIDE5ODMgUyAyNSAxcworLTAgTyBXRSVzVAorLVIgeyAxOTMyIG8gLSBNYXkgMjEgMHMgMSBTCistUiB7IDE5MzIgMTkzOSAtIE8gU3VuPj0xIDBzIDAgLQorLVIgeyAxOTMzIDE5MzkgLSBBcCBTdW4+PTIgMHMgMSBTCistUiB7IDE5NzkgbyAtIE1heSAyNyAwIDEgUworLVIgeyAxOTc5IG8gLSBTIGxhc3RTdW4gMCAwIC0KKy1SIHsgMTk4MCBvIC0gQXAgNSAyMyAxIFMKKy1SIHsgMTk4MCBvIC0gUyBsYXN0U3VuIDEgMCAtCistUiB7IDE5OTEgMTk5MyAtIE1hciBsYXN0U3VuIDBzIDEgUworLVIgeyAxOTkxIDE5OTMgLSBTIGxhc3RTdW4gMHMgMCAtCisrLTEgcCAtMDEvKzAwIDE5NDIgQXAgMjUgMjJzCisrLTEgcCArMDEgMTk0MiBBdSAxNSAyMnMKKystMSBwIC0wMS8rMDAgMTk0MyBBcCAxNyAyMnMKKystMSBwICswMSAxOTQzIEF1IDI4IDIycworKy0xIHAgLTAxLyswMCAxOTQ0IEFwIDIyIDIycworKy0xIHAgKzAxIDE5NDQgQXUgMjYgMjJzCisrLTEgcCAtMDEvKzAwIDE5NDUgQXAgMjEgMjJzCisrLTEgcCArMDEgMTk0NSBBdSAyNSAyMnMKKystMSBwIC0wMS8rMDAgMTk2NiBBcCAzIDIKKyswIHAgV0Ulc1QgMTk4MyBTIDI1IDFzCisrMCBFIFdFJXNUCisrUiB6IDE5MzIgbyAtIE1heSAyMSAwcyAxIFMKKytSIHogMTkzMiAxOTM5IC0gTyBTdW4+PTEgMHMgMCAtCisrUiB6IDE5MzMgMTkzOSAtIEFwIFN1bj49MiAwcyAxIFMKKytSIHogMTk3OSBvIC0gTWF5IDI3IDAgMSBTCisrUiB6IDE5NzkgbyAtIFMgbGFzdFN1biAwIDAgLQorK1IgeiAxOTgwIG8gLSBBcCA1IDIzIDEgUworK1IgeiAxOTgwIG8gLSBTIGxhc3RTdW4gMSAwIC0KKytSIHogMTk5MSAxOTkzIC0gTWFyIGxhc3RTdW4gMHMgMSBTCisrUiB6IDE5OTEgMTk5MyAtIFMgbGFzdFN1biAwcyAwIC0KKyBaIEV1cm9wZS9CdWNoYXJlc3QgMTo0NDoyNCAtIExNVCAxODkxIE8KKyAxOjQ0OjI0IC0gQk1UIDE5MzEgSnVsIDI0CistMiB7IEVFJXNUIDE5ODEgTWFyIDI5IDJzCistMiAoIEVFJXNUIDE5OTEKKy0yIHsgRUUlc1QgMTk5NAorLTIgVyBFRSVzVCAxOTk3CistMiBPIEVFJXNUCisrMiB6IEVFJXNUIDE5ODEgTWFyIDI5IDJzCisrMiBjIEVFJXNUIDE5OTEKKysyIHogRUUlc1QgMTk5NAorKzIgZSBFRSVzVCAxOTk3CisrMiBFIEVFJXNUCisgWiBFdXJvcGUvS2FsaW5pbmdyYWQgMToyMiAtIExNVCAxODkzIEFwCistMSAoIENFJXNUIDE5NDUKKy0yIH4gQ0Ulc1QgMTk0NgorLTMgTSBNU0svTVNEIDE5ODkgTWFyIDI2IDJzCistMiBNIEVFJXNUIDIwMTEgTWFyIDI3IDJzCisrMSBjIENFJXNUIDE5NDUKKysyIE8gQ0Ulc1QgMTk0NgorKzMgUiBNU0svTVNEIDE5ODkgTWFyIDI2IDJzCisrMiBSIEVFJXNUIDIwMTEgTWFyIDI3IDJzCisgMyAtICswMyAyMDE0IE8gMjYgMnMKKyAyIC0gRUVUCisgWiBFdXJvcGUvTW9zY293IDI6MzA6MTcgLSBMTVQgMTg4MAorIDI6MzA6MTcgLSBNTVQgMTkxNiBKdWwgMworLTI6MzE6MTkgTSAlcyAxOTE5IEp1bCAxIDB1CistMyBNICVzIDE5MjEgTworLTMgTSBNU0svTVNEIDE5MjIgTworKzI6MzE6MTkgUiAlcyAxOTE5IEp1bCAxIDB1CisrMyBSICVzIDE5MjEgTworKzMgUiBNU0svTVNEIDE5MjIgTworIDIgLSBFRVQgMTkzMCBKdW4gMjEKKy0zIE0gTVNLL01TRCAxOTkxIE1hciAzMSAycworLTIgTSBFRSVzVCAxOTkyIEphIDE5IDJzCistMyBNIE1TSy9NU0QgMjAxMSBNYXIgMjcgMnMKKyszIFIgTVNLL01TRCAxOTkxIE1hciAzMSAycworKzIgUiBFRSVzVCAxOTkyIEphIDE5IDJzCisrMyBSIE1TSy9NU0QgMjAxMSBNYXIgMjcgMnMKKyA0IC0gTVNLIDIwMTQgTyAyNiAycworIDMgLSBNU0sKKyBaIEV1cm9wZS9TaW1mZXJvcG9sIDI6MTY6MjQgLSBMTVQgMTg4MAorIDI6MTYgLSBTTVQgMTkyNCBNYXkgMgorIDIgLSBFRVQgMTkzMCBKdW4gMjEKKyAzIC0gTVNLIDE5NDEgTgorLTEgKCBDRSVzVCAxOTQ0IEFwIDEzCistMyBNIE1TSy9NU0QgMTk5MAorKzEgYyBDRSVzVCAxOTQ0IEFwIDEzCisrMyBSIE1TSy9NU0QgMTk5MAorIDMgLSBNU0sgMTk5MCBKdWwgMSAyCisgMiAtIEVFVCAxOTkyCistMiBXIEVFJXNUIDE5OTQgTWF5CistMyBXIE1TSy9NU0QgMTk5NiBNYXIgMzEgMHMKKysyIGUgRUUlc1QgMTk5NCBNYXkKKyszIGUgTVNLL01TRCAxOTk2IE1hciAzMSAwcworIDMgMSBNU0QgMTk5NiBPIDI3IDNzCistMyBNIE1TSy9NU0QgMTk5NworKzMgUiBNU0svTVNEIDE5OTcKKyAzIC0gTVNLIDE5OTcgTWFyIGxhc3RTdW4gMXUKKy0yIE8gRUUlc1QgMjAxNCBNYXIgMzAgMgorKzIgRSBFRSVzVCAyMDE0IE1hciAzMCAyCisgNCAtIE1TSyAyMDE0IE8gMjYgMnMKKyAzIC0gTVNLCisgWiBFdXJvcGUvQXN0cmFraGFuIDM6MTI6MTIgLSBMTVQgMTkyNCBNYXkKKyAzIC0gKzAzIDE5MzAgSnVuIDIxCistNCBNICswNC8rMDUgMTk4OSBNYXIgMjYgMnMKKy0zIE0gKzAzLyswNCAxOTkxIE1hciAzMSAycworKzQgUiArMDQvKzA1IDE5ODkgTWFyIDI2IDJzCisrMyBSICswMy8rMDQgMTk5MSBNYXIgMzEgMnMKKyA0IC0gKzA0IDE5OTIgTWFyIDI5IDJzCistMyBNICswMy8rMDQgMjAxMSBNYXIgMjcgMnMKKyszIFIgKzAzLyswNCAyMDExIE1hciAyNyAycworIDQgLSArMDQgMjAxNCBPIDI2IDJzCisgMyAtICswMyAyMDE2IE1hciAyNyAycworIDQgLSArMDQKKyBaIEV1cm9wZS9Wb2xnb2dyYWQgMjo1Nzo0MCAtIExNVCAxOTIwIEphIDMKKyAzIC0gKzAzIDE5MzAgSnVuIDIxCisgNCAtICswNCAxOTYxIE4gMTEKKy00IE0gKzA0LyswNSAxOTg4IE1hciAyNyAycworLTMgTSArMDMvKzA0IDE5OTEgTWFyIDMxIDJzCisrNCBSICswNC8rMDUgMTk4OCBNYXIgMjcgMnMKKyszIFIgKzAzLyswNCAxOTkxIE1hciAzMSAycworIDQgLSArMDQgMTk5MiBNYXIgMjkgMnMKKy0zIE0gKzAzLyswNCAyMDExIE1hciAyNyAycworKzMgUiArMDMvKzA0IDIwMTEgTWFyIDI3IDJzCisgNCAtICswNCAyMDE0IE8gMjYgMnMKKy0zIC0gKzAzCisrMyAtICswMyAyMDE4IE8gMjggMnMKKys0IC0gKzA0CisgWiBFdXJvcGUvU2FyYXRvdiAzOjQ6MTggLSBMTVQgMTkxOSBKdWwgMSAwdQorIDMgLSArMDMgMTkzMCBKdW4gMjEKKy00IE0gKzA0LyswNSAxOTg4IE1hciAyNyAycworLTMgTSArMDMvKzA0IDE5OTEgTWFyIDMxIDJzCisrNCBSICswNC8rMDUgMTk4OCBNYXIgMjcgMnMKKyszIFIgKzAzLyswNCAxOTkxIE1hciAzMSAycworIDQgLSArMDQgMTk5MiBNYXIgMjkgMnMKKy0zIE0gKzAzLyswNCAyMDExIE1hciAyNyAycworKzMgUiArMDMvKzA0IDIwMTEgTWFyIDI3IDJzCisgNCAtICswNCAyMDE0IE8gMjYgMnMKKyAzIC0gKzAzIDIwMTYgRCA0IDJzCisgNCAtICswNAorIFogRXVyb3BlL0tpcm92IDM6MTg6NDggLSBMTVQgMTkxOSBKdWwgMSAwdQorIDMgLSArMDMgMTkzMCBKdW4gMjEKKy00IE0gKzA0LyswNSAxOTg5IE1hciAyNiAycworLTMgTSArMDMvKzA0IDE5OTEgTWFyIDMxIDJzCisrNCBSICswNC8rMDUgMTk4OSBNYXIgMjYgMnMKKyszIFIgKzAzLyswNCAxOTkxIE1hciAzMSAycworIDQgLSArMDQgMTk5MiBNYXIgMjkgMnMKKy0zIE0gKzAzLyswNCAyMDExIE1hciAyNyAycworKzMgUiArMDMvKzA0IDIwMTEgTWFyIDI3IDJzCisgNCAtICswNCAyMDE0IE8gMjYgMnMKKyAzIC0gKzAzCisgWiBFdXJvcGUvU2FtYXJhIDM6MjA6MjAgLSBMTVQgMTkxOSBKdWwgMSAwdQorIDMgLSArMDMgMTkzMCBKdW4gMjEKKyA0IC0gKzA0IDE5MzUgSmEgMjcKKy00IE0gKzA0LyswNSAxOTg5IE1hciAyNiAycworLTMgTSArMDMvKzA0IDE5OTEgTWFyIDMxIDJzCistMiBNICswMi8rMDMgMTk5MSBTIDI5IDJzCisrNCBSICswNC8rMDUgMTk4OSBNYXIgMjYgMnMKKyszIFIgKzAzLyswNCAxOTkxIE1hciAzMSAycworKzIgUiArMDIvKzAzIDE5OTEgUyAyOSAycworIDMgLSArMDMgMTk5MSBPIDIwIDMKKy00IE0gKzA0LyswNSAyMDEwIE1hciAyOCAycworLTMgTSArMDMvKzA0IDIwMTEgTWFyIDI3IDJzCisrNCBSICswNC8rMDUgMjAxMCBNYXIgMjggMnMKKyszIFIgKzAzLyswNCAyMDExIE1hciAyNyAycworIDQgLSArMDQKKyBaIEV1cm9wZS9VbHlhbm92c2sgMzoxMzozNiAtIExNVCAxOTE5IEp1bCAxIDB1CisgMyAtICswMyAxOTMwIEp1biAyMQorLTQgTSArMDQvKzA1IDE5ODkgTWFyIDI2IDJzCistMyBNICswMy8rMDQgMTk5MSBNYXIgMzEgMnMKKy0yIE0gKzAyLyswMyAxOTkyIEphIDE5IDJzCistMyBNICswMy8rMDQgMjAxMSBNYXIgMjcgMnMKKys0IFIgKzA0LyswNSAxOTg5IE1hciAyNiAycworKzMgUiArMDMvKzA0IDE5OTEgTWFyIDMxIDJzCisrMiBSICswMi8rMDMgMTk5MiBKYSAxOSAycworKzMgUiArMDMvKzA0IDIwMTEgTWFyIDI3IDJzCisgNCAtICswNCAyMDE0IE8gMjYgMnMKKyAzIC0gKzAzIDIwMTYgTWFyIDI3IDJzCisgNCAtICswNAorIFogQXNpYS9ZZWthdGVyaW5idXJnIDQ6MjozMyAtIExNVCAxOTE2IEp1bCAzCisgMzo0NTo1IC0gUE1UIDE5MTkgSnVsIDE1IDQKKyA0IC0gKzA0IDE5MzAgSnVuIDIxCistNSBNICswNS8rMDYgMTk5MSBNYXIgMzEgMnMKKy00IE0gKzA0LyswNSAxOTkyIEphIDE5IDJzCistNSBNICswNS8rMDYgMjAxMSBNYXIgMjcgMnMKKys1IFIgKzA1LyswNiAxOTkxIE1hciAzMSAycworKzQgUiArMDQvKzA1IDE5OTIgSmEgMTkgMnMKKys1IFIgKzA1LyswNiAyMDExIE1hciAyNyAycworIDYgLSArMDYgMjAxNCBPIDI2IDJzCisgNSAtICswNQorIFogQXNpYS9PbXNrIDQ6NTM6MzAgLSBMTVQgMTkxOSBOIDE0CisgNSAtICswNSAxOTMwIEp1biAyMQorLTYgTSArMDYvKzA3IDE5OTEgTWFyIDMxIDJzCistNSBNICswNS8rMDYgMTk5MiBKYSAxOSAycworLTYgTSArMDYvKzA3IDIwMTEgTWFyIDI3IDJzCisrNiBSICswNi8rMDcgMTk5MSBNYXIgMzEgMnMKKys1IFIgKzA1LyswNiAxOTkyIEphIDE5IDJzCisrNiBSICswNi8rMDcgMjAxMSBNYXIgMjcgMnMKKyA3IC0gKzA3IDIwMTQgTyAyNiAycworIDYgLSArMDYKKyBaIEFzaWEvQmFybmF1bCA1OjM1IC0gTE1UIDE5MTkgRCAxMAorIDYgLSArMDYgMTkzMCBKdW4gMjEKKy03IE0gKzA3LyswOCAxOTkxIE1hciAzMSAycworLTYgTSArMDYvKzA3IDE5OTIgSmEgMTkgMnMKKy03IE0gKzA3LyswOCAxOTk1IE1heSAyOAorLTYgTSArMDYvKzA3IDIwMTEgTWFyIDI3IDJzCisrNyBSICswNy8rMDggMTk5MSBNYXIgMzEgMnMKKys2IFIgKzA2LyswNyAxOTkyIEphIDE5IDJzCisrNyBSICswNy8rMDggMTk5NSBNYXkgMjgKKys2IFIgKzA2LyswNyAyMDExIE1hciAyNyAycworIDcgLSArMDcgMjAxNCBPIDI2IDJzCisgNiAtICswNiAyMDE2IE1hciAyNyAycworIDcgLSArMDcKKyBaIEFzaWEvTm92b3NpYmlyc2sgNTozMTo0MCAtIExNVCAxOTE5IEQgMTQgNgorIDYgLSArMDYgMTkzMCBKdW4gMjEKKy03IE0gKzA3LyswOCAxOTkxIE1hciAzMSAycworLTYgTSArMDYvKzA3IDE5OTIgSmEgMTkgMnMKKy03IE0gKzA3LyswOCAxOTkzIE1heSAyMworLTYgTSArMDYvKzA3IDIwMTEgTWFyIDI3IDJzCisrNyBSICswNy8rMDggMTk5MSBNYXIgMzEgMnMKKys2IFIgKzA2LyswNyAxOTkyIEphIDE5IDJzCisrNyBSICswNy8rMDggMTk5MyBNYXkgMjMKKys2IFIgKzA2LyswNyAyMDExIE1hciAyNyAycworIDcgLSArMDcgMjAxNCBPIDI2IDJzCisgNiAtICswNiAyMDE2IEp1bCAyNCAycworIDcgLSArMDcKKyBaIEFzaWEvVG9tc2sgNTozOTo1MSAtIExNVCAxOTE5IEQgMjIKKyA2IC0gKzA2IDE5MzAgSnVuIDIxCistNyBNICswNy8rMDggMTk5MSBNYXIgMzEgMnMKKy02IE0gKzA2LyswNyAxOTkyIEphIDE5IDJzCistNyBNICswNy8rMDggMjAwMiBNYXkgMSAzCistNiBNICswNi8rMDcgMjAxMSBNYXIgMjcgMnMKKys3IFIgKzA3LyswOCAxOTkxIE1hciAzMSAycworKzYgUiArMDYvKzA3IDE5OTIgSmEgMTkgMnMKKys3IFIgKzA3LyswOCAyMDAyIE1heSAxIDMKKys2IFIgKzA2LyswNyAyMDExIE1hciAyNyAycworIDcgLSArMDcgMjAxNCBPIDI2IDJzCisgNiAtICswNiAyMDE2IE1heSAyOSAycworIDcgLSArMDcKKyBaIEFzaWEvTm92b2t1em5ldHNrIDU6NDg6NDggLSBMTVQgMTkyNCBNYXkKKyA2IC0gKzA2IDE5MzAgSnVuIDIxCistNyBNICswNy8rMDggMTk5MSBNYXIgMzEgMnMKKy02IE0gKzA2LyswNyAxOTkyIEphIDE5IDJzCistNyBNICswNy8rMDggMjAxMCBNYXIgMjggMnMKKy02IE0gKzA2LyswNyAyMDExIE1hciAyNyAycworKzcgUiArMDcvKzA4IDE5OTEgTWFyIDMxIDJzCisrNiBSICswNi8rMDcgMTk5MiBKYSAxOSAycworKzcgUiArMDcvKzA4IDIwMTAgTWFyIDI4IDJzCisrNiBSICswNi8rMDcgMjAxMSBNYXIgMjcgMnMKKyA3IC0gKzA3CisgWiBBc2lhL0tyYXNub3lhcnNrIDY6MTE6MjYgLSBMTVQgMTkyMCBKYSA2CisgNiAtICswNiAxOTMwIEp1biAyMQorLTcgTSArMDcvKzA4IDE5OTEgTWFyIDMxIDJzCistNiBNICswNi8rMDcgMTk5MiBKYSAxOSAycworLTcgTSArMDcvKzA4IDIwMTEgTWFyIDI3IDJzCisrNyBSICswNy8rMDggMTk5MSBNYXIgMzEgMnMKKys2IFIgKzA2LyswNyAxOTkyIEphIDE5IDJzCisrNyBSICswNy8rMDggMjAxMSBNYXIgMjcgMnMKKyA4IC0gKzA4IDIwMTQgTyAyNiAycworIDcgLSArMDcKKyBaIEFzaWEvSXJrdXRzayA2OjU3OjUgLSBMTVQgMTg4MAorIDY6NTc6NSAtIElNVCAxOTIwIEphIDI1CisgNyAtICswNyAxOTMwIEp1biAyMQorLTggTSArMDgvKzA5IDE5OTEgTWFyIDMxIDJzCistNyBNICswNy8rMDggMTk5MiBKYSAxOSAycworLTggTSArMDgvKzA5IDIwMTEgTWFyIDI3IDJzCisrOCBSICswOC8rMDkgMTk5MSBNYXIgMzEgMnMKKys3IFIgKzA3LyswOCAxOTkyIEphIDE5IDJzCisrOCBSICswOC8rMDkgMjAxMSBNYXIgMjcgMnMKKyA5IC0gKzA5IDIwMTQgTyAyNiAycworIDggLSArMDgKKyBaIEFzaWEvQ2hpdGEgNzozMzo1MiAtIExNVCAxOTE5IEQgMTUKKyA4IC0gKzA4IDE5MzAgSnVuIDIxCistOSBNICswOS8rMTAgMTk5MSBNYXIgMzEgMnMKKy04IE0gKzA4LyswOSAxOTkyIEphIDE5IDJzCistOSBNICswOS8rMTAgMjAxMSBNYXIgMjcgMnMKKys5IFIgKzA5LysxMCAxOTkxIE1hciAzMSAycworKzggUiArMDgvKzA5IDE5OTIgSmEgMTkgMnMKKys5IFIgKzA5LysxMCAyMDExIE1hciAyNyAycworIDEwIC0gKzEwIDIwMTQgTyAyNiAycworIDggLSArMDggMjAxNiBNYXIgMjcgMgorIDkgLSArMDkKKyBaIEFzaWEvWWFrdXRzayA4OjM4OjU4IC0gTE1UIDE5MTkgRCAxNQorIDggLSArMDggMTkzMCBKdW4gMjEKKy05IE0gKzA5LysxMCAxOTkxIE1hciAzMSAycworLTggTSArMDgvKzA5IDE5OTIgSmEgMTkgMnMKKy05IE0gKzA5LysxMCAyMDExIE1hciAyNyAycworKzkgUiArMDkvKzEwIDE5OTEgTWFyIDMxIDJzCisrOCBSICswOC8rMDkgMTk5MiBKYSAxOSAycworKzkgUiArMDkvKzEwIDIwMTEgTWFyIDI3IDJzCisgMTAgLSArMTAgMjAxNCBPIDI2IDJzCisgOSAtICswOQorIFogQXNpYS9WbGFkaXZvc3RvayA4OjQ3OjMxIC0gTE1UIDE5MjIgTiAxNQorIDkgLSArMDkgMTkzMCBKdW4gMjEKKy0xMCBNICsxMC8rMTEgMTk5MSBNYXIgMzEgMnMKKy05IE0gKzA5LysxMCAxOTkyIEphIDE5IDJzCistMTAgTSArMTAvKzExIDIwMTEgTWFyIDI3IDJzCisrMTAgUiArMTAvKzExIDE5OTEgTWFyIDMxIDJzCisrOSBSICswOS8rMTAgMTk5MiBKYSAxOSAycworKzEwIFIgKzEwLysxMSAyMDExIE1hciAyNyAycworIDExIC0gKzExIDIwMTQgTyAyNiAycworIDEwIC0gKzEwCisgWiBBc2lhL0toYW5keWdhIDk6MjoxMyAtIExNVCAxOTE5IEQgMTUKKyA4IC0gKzA4IDE5MzAgSnVuIDIxCistOSBNICswOS8rMTAgMTk5MSBNYXIgMzEgMnMKKy04IE0gKzA4LyswOSAxOTkyIEphIDE5IDJzCistOSBNICswOS8rMTAgMjAwNAorLTEwIE0gKzEwLysxMSAyMDExIE1hciAyNyAycworKzkgUiArMDkvKzEwIDE5OTEgTWFyIDMxIDJzCisrOCBSICswOC8rMDkgMTk5MiBKYSAxOSAycworKzkgUiArMDkvKzEwIDIwMDQKKysxMCBSICsxMC8rMTEgMjAxMSBNYXIgMjcgMnMKKyAxMSAtICsxMSAyMDExIFMgMTMgMHMKKyAxMCAtICsxMCAyMDE0IE8gMjYgMnMKKyA5IC0gKzA5CisgWiBBc2lhL1Nha2hhbGluIDk6MzA6NDggLSBMTVQgMTkwNSBBdSAyMworIDkgLSArMDkgMTk0NSBBdSAyNQorLTExIE0gKzExLysxMiAxOTkxIE1hciAzMSAycworLTEwIE0gKzEwLysxMSAxOTkyIEphIDE5IDJzCistMTEgTSArMTEvKzEyIDE5OTcgTWFyIGxhc3RTdW4gMnMKKy0xMCBNICsxMC8rMTEgMjAxMSBNYXIgMjcgMnMKKysxMSBSICsxMS8rMTIgMTk5MSBNYXIgMzEgMnMKKysxMCBSICsxMC8rMTEgMTk5MiBKYSAxOSAycworKzExIFIgKzExLysxMiAxOTk3IE1hciBsYXN0U3VuIDJzCisrMTAgUiArMTAvKzExIDIwMTEgTWFyIDI3IDJzCisgMTEgLSArMTEgMjAxNCBPIDI2IDJzCisgMTAgLSArMTAgMjAxNiBNYXIgMjcgMnMKKyAxMSAtICsxMQorIFogQXNpYS9NYWdhZGFuIDEwOjM6MTIgLSBMTVQgMTkyNCBNYXkgMgorIDEwIC0gKzEwIDE5MzAgSnVuIDIxCistMTEgTSArMTEvKzEyIDE5OTEgTWFyIDMxIDJzCistMTAgTSArMTAvKzExIDE5OTIgSmEgMTkgMnMKKy0xMSBNICsxMS8rMTIgMjAxMSBNYXIgMjcgMnMKKysxMSBSICsxMS8rMTIgMTk5MSBNYXIgMzEgMnMKKysxMCBSICsxMC8rMTEgMTk5MiBKYSAxOSAycworKzExIFIgKzExLysxMiAyMDExIE1hciAyNyAycworIDEyIC0gKzEyIDIwMTQgTyAyNiAycworIDEwIC0gKzEwIDIwMTYgQXAgMjQgMnMKKyAxMSAtICsxMQorIFogQXNpYS9TcmVkbmVrb2x5bXNrIDEwOjE0OjUyIC0gTE1UIDE5MjQgTWF5IDIKKyAxMCAtICsxMCAxOTMwIEp1biAyMQorLTExIE0gKzExLysxMiAxOTkxIE1hciAzMSAycworLTEwIE0gKzEwLysxMSAxOTkyIEphIDE5IDJzCistMTEgTSArMTEvKzEyIDIwMTEgTWFyIDI3IDJzCisrMTEgUiArMTEvKzEyIDE5OTEgTWFyIDMxIDJzCisrMTAgUiArMTAvKzExIDE5OTIgSmEgMTkgMnMKKysxMSBSICsxMS8rMTIgMjAxMSBNYXIgMjcgMnMKKyAxMiAtICsxMiAyMDE0IE8gMjYgMnMKKyAxMSAtICsxMQorIFogQXNpYS9Vc3QtTmVyYSA5OjMyOjU0IC0gTE1UIDE5MTkgRCAxNQorIDggLSArMDggMTkzMCBKdW4gMjEKKy05IE0gKzA5LysxMCAxOTgxIEFwCistMTEgTSArMTEvKzEyIDE5OTEgTWFyIDMxIDJzCistMTAgTSArMTAvKzExIDE5OTIgSmEgMTkgMnMKKy0xMSBNICsxMS8rMTIgMjAxMSBNYXIgMjcgMnMKKys5IFIgKzA5LysxMCAxOTgxIEFwCisrMTEgUiArMTEvKzEyIDE5OTEgTWFyIDMxIDJzCisrMTAgUiArMTAvKzExIDE5OTIgSmEgMTkgMnMKKysxMSBSICsxMS8rMTIgMjAxMSBNYXIgMjcgMnMKKyAxMiAtICsxMiAyMDExIFMgMTMgMHMKKyAxMSAtICsxMSAyMDE0IE8gMjYgMnMKKyAxMCAtICsxMAorIFogQXNpYS9LYW1jaGF0a2EgMTA6MzQ6MzYgLSBMTVQgMTkyMiBOIDEwCisgMTEgLSArMTEgMTkzMCBKdW4gMjEKKy0xMiBNICsxMi8rMTMgMTk5MSBNYXIgMzEgMnMKKy0xMSBNICsxMS8rMTIgMTk5MiBKYSAxOSAycworLTEyIE0gKzEyLysxMyAyMDEwIE1hciAyOCAycworLTExIE0gKzExLysxMiAyMDExIE1hciAyNyAycworKzEyIFIgKzEyLysxMyAxOTkxIE1hciAzMSAycworKzExIFIgKzExLysxMiAxOTkyIEphIDE5IDJzCisrMTIgUiArMTIvKzEzIDIwMTAgTWFyIDI4IDJzCisrMTEgUiArMTEvKzEyIDIwMTEgTWFyIDI3IDJzCisgMTIgLSArMTIKKyBaIEFzaWEvQW5hZHlyIDExOjQ5OjU2IC0gTE1UIDE5MjQgTWF5IDIKKyAxMiAtICsxMiAxOTMwIEp1biAyMQorLTEzIE0gKzEzLysxNCAxOTgyIEFwIDEgMHMKKy0xMiBNICsxMi8rMTMgMTk5MSBNYXIgMzEgMnMKKy0xMSBNICsxMS8rMTIgMTk5MiBKYSAxOSAycworLTEyIE0gKzEyLysxMyAyMDEwIE1hciAyOCAycworLTExIE0gKzExLysxMiAyMDExIE1hciAyNyAycworKzEzIFIgKzEzLysxNCAxOTgyIEFwIDEgMHMKKysxMiBSICsxMi8rMTMgMTk5MSBNYXIgMzEgMnMKKysxMSBSICsxMS8rMTIgMTk5MiBKYSAxOSAycworKzEyIFIgKzEyLysxMyAyMDEwIE1hciAyOCAycworKzExIFIgKzExLysxMiAyMDExIE1hciAyNyAycworIDEyIC0gKzEyCisgWiBFdXJvcGUvQmVsZ3JhZGUgMToyMiAtIExNVCAxODg0CisgMSAtIENFVCAxOTQxIEFwIDE4IDIzCistMSAoIENFJXNUIDE5NDUKKysxIGMgQ0Ulc1QgMTk0NQorIDEgLSBDRVQgMTk0NSBNYXkgOCAycworIDEgMSBDRVNUIDE5NDUgUyAxNiAycworIDEgLSBDRVQgMTk4MiBOIDI3CistMSBPIENFJXNUCisrMSBFIENFJXNUCisgTGkgRXVyb3BlL0JlbGdyYWRlIEV1cm9wZS9ManVibGphbmEKKyBMaSBFdXJvcGUvQmVsZ3JhZGUgRXVyb3BlL1BvZGdvcmljYQorIExpIEV1cm9wZS9CZWxncmFkZSBFdXJvcGUvU2FyYWpldm8KKyBMaSBFdXJvcGUvQmVsZ3JhZGUgRXVyb3BlL1Nrb3BqZQorIExpIEV1cm9wZS9CZWxncmFkZSBFdXJvcGUvWmFncmViCisgTGkgRXVyb3BlL1ByYWd1ZSBFdXJvcGUvQnJhdGlzbGF2YQorLVIgQUIgMTkxOCBvIC0gQXAgMTUgMjMgMSBTCistUiBBQiAxOTE4IDE5MTkgLSBPIDYgMjRzIDAgLQorLVIgQUIgMTkxOSBvIC0gQXAgNiAyMyAxIFMKKy1SIEFCIDE5MjQgbyAtIEFwIDE2IDIzIDEgUworLVIgQUIgMTkyNCBvIC0gTyA0IDI0cyAwIC0KKy1SIEFCIDE5MjYgbyAtIEFwIDE3IDIzIDEgUworLVIgQUIgMTkyNiAxOTI5IC0gTyBTYXQ+PTEgMjRzIDAgLQorLVIgQUIgMTkyNyBvIC0gQXAgOSAyMyAxIFMKKy1SIEFCIDE5MjggbyAtIEFwIDE1IDAgMSBTCistUiBBQiAxOTI5IG8gLSBBcCAyMCAyMyAxIFMKKy1SIEFCIDE5MzcgbyAtIEp1biAxNiAyMyAxIFMKKy1SIEFCIDE5MzcgbyAtIE8gMiAyNHMgMCAtCistUiBBQiAxOTM4IG8gLSBBcCAyIDIzIDEgUworLVIgQUIgMTkzOCBvIC0gQXAgMzAgMjMgMiBNCistUiBBQiAxOTM4IG8gLSBPIDIgMjQgMSBTCistUiBBQiAxOTM5IG8gLSBPIDcgMjRzIDAgLQorLVIgQUIgMTk0MiBvIC0gTWF5IDIgMjMgMSBTCistUiBBQiAxOTQyIG8gLSBTIDEgMSAwIC0KKy1SIEFCIDE5NDMgMTk0NiAtIEFwIFNhdD49MTMgMjMgMSBTCistUiBBQiAxOTQzIDE5NDQgLSBPIFN1bj49MSAxIDAgLQorLVIgQUIgMTk0NSAxOTQ2IC0gUyBsYXN0U3VuIDEgMCAtCistUiBBQiAxOTQ5IG8gLSBBcCAzMCAyMyAxIFMKKy1SIEFCIDE5NDkgbyAtIE8gMiAxIDAgLQorLVIgQUIgMTk3NCAxOTc1IC0gQXAgU2F0Pj0xMiAyMyAxIFMKKy1SIEFCIDE5NzQgMTk3NSAtIE8gU3VuPj0xIDEgMCAtCistUiBBQiAxOTc2IG8gLSBNYXIgMjcgMjMgMSBTCistUiBBQiAxOTc2IDE5NzcgLSBTIGxhc3RTdW4gMSAwIC0KKy1SIEFCIDE5NzcgbyAtIEFwIDIgMjMgMSBTCistUiBBQiAxOTc4IG8gLSBBcCAyIDJzIDEgUworLVIgQUIgMTk3OCBvIC0gTyAxIDJzIDAgLQorLVIgQUMgMTk2NyBvIC0gSnVuIDMgMTIgMSBTCistUiBBQyAxOTY3IG8gLSBPIDEgMCAwIC0KKy1SIEFDIDE5NzQgbyAtIEp1biAyNCAwIDEgUworLVIgQUMgMTk3NCBvIC0gUyAxIDAgMCAtCistUiBBQyAxOTc2IDE5NzcgLSBNYXkgMSAwIDEgUworLVIgQUMgMTk3NiBvIC0gQXUgMSAwIDAgLQorLVIgQUMgMTk3NyBvIC0gUyAyOCAwIDAgLQorLVIgQUMgMTk3OCBvIC0gSnVuIDEgMCAxIFMKKy1SIEFDIDE5NzggbyAtIEF1IDQgMCAwIC0KKytSIHMgMTkxOCBvIC0gQXAgMTUgMjMgMSBTCisrUiBzIDE5MTggMTkxOSAtIE8gNiAyNHMgMCAtCisrUiBzIDE5MTkgbyAtIEFwIDYgMjMgMSBTCisrUiBzIDE5MjQgbyAtIEFwIDE2IDIzIDEgUworK1IgcyAxOTI0IG8gLSBPIDQgMjRzIDAgLQorK1IgcyAxOTI2IG8gLSBBcCAxNyAyMyAxIFMKKytSIHMgMTkyNiAxOTI5IC0gTyBTYXQ+PTEgMjRzIDAgLQorK1IgcyAxOTI3IG8gLSBBcCA5IDIzIDEgUworK1IgcyAxOTI4IG8gLSBBcCAxNSAwIDEgUworK1IgcyAxOTI5IG8gLSBBcCAyMCAyMyAxIFMKKytSIHMgMTkzNyBvIC0gSnVuIDE2IDIzIDEgUworK1IgcyAxOTM3IG8gLSBPIDIgMjRzIDAgLQorK1IgcyAxOTM4IG8gLSBBcCAyIDIzIDEgUworK1IgcyAxOTM4IG8gLSBBcCAzMCAyMyAyIE0KKytSIHMgMTkzOCBvIC0gTyAyIDI0IDEgUworK1IgcyAxOTM5IG8gLSBPIDcgMjRzIDAgLQorK1IgcyAxOTQyIG8gLSBNYXkgMiAyMyAxIFMKKytSIHMgMTk0MiBvIC0gUyAxIDEgMCAtCisrUiBzIDE5NDMgMTk0NiAtIEFwIFNhdD49MTMgMjMgMSBTCisrUiBzIDE5NDMgMTk0NCAtIE8gU3VuPj0xIDEgMCAtCisrUiBzIDE5NDUgMTk0NiAtIFMgbGFzdFN1biAxIDAgLQorK1IgcyAxOTQ5IG8gLSBBcCAzMCAyMyAxIFMKKytSIHMgMTk0OSBvIC0gTyAyIDEgMCAtCisrUiBzIDE5NzQgMTk3NSAtIEFwIFNhdD49MTIgMjMgMSBTCisrUiBzIDE5NzQgMTk3NSAtIE8gU3VuPj0xIDEgMCAtCisrUiBzIDE5NzYgbyAtIE1hciAyNyAyMyAxIFMKKytSIHMgMTk3NiAxOTc3IC0gUyBsYXN0U3VuIDEgMCAtCisrUiBzIDE5NzcgbyAtIEFwIDIgMjMgMSBTCisrUiBzIDE5NzggbyAtIEFwIDIgMnMgMSBTCisrUiBzIDE5NzggbyAtIE8gMSAycyAwIC0KKyBaIEV1cm9wZS9NYWRyaWQgLTA6MTQ6NDQgLSBMTVQgMTkwMCBEIDMxIDIzOjQ1OjE2CistMCBBQiBXRSVzVCAxOTQwIE1hciAxNiAyMworLTEgQUIgQ0Ulc1QgMTk3OQorLTEgTyBDRSVzVAorKzAgcyBXRSVzVCAxOTQwIE1hciAxNiAyMworKzEgcyBDRSVzVCAxOTc5CisrMSBFIENFJXNUCisgWiBBZnJpY2EvQ2V1dGEgLTA6MjE6MTYgLSBMTVQgMTkwMCBEIDMxIDIzOjM4OjQ0CisgMCAtIFdFVCAxOTE4IE1heSA2IDIzCisgMCAxIFdFU1QgMTkxOCBPIDcgMjMKKyAwIC0gV0VUIDE5MjQKKy0wIEFCIFdFJXNUIDE5MjkKKy0wIEFDIFdFJXNUIDE5ODQgTWFyIDE2CisrMCBzIFdFJXNUIDE5MjkKKyswIC0gV0VUIDE5NjcKKyswIE0gV0Ulc1QgMTk4NCBNYXIgMTYKKyAxIC0gQ0VUIDE5ODYKKy0xIE8gQ0Ulc1QKKysxIEUgQ0Ulc1QKKyBaIEF0bGFudGljL0NhbmFyeSAtMToxOjM2IC0gTE1UIDE5MjIgTWFyCisgLTEgLSAtMDEgMTk0NiBTIDMwIDEKKyAwIC0gV0VUIDE5ODAgQXAgNiAwcworIDAgMSBXRVNUIDE5ODAgUyAyOCAxdQorLTAgTyBXRSVzVAorKzAgRSBXRSVzVAorIFogRXVyb3BlL1N0b2NraG9sbSAxOjEyOjEyIC0gTE1UIDE4NzkKKyAxOjA6MTQgLSBTRVQgMTkwMAorIDEgLSBDRVQgMTkxNiBNYXkgMTQgMjMKKyAxIDEgQ0VTVCAxOTE2IE8gMSAxCisgMSAtIENFVCAxOTgwCistMSBPIENFJXNUCistUiBBRCAxOTQxIDE5NDIgLSBNYXkgTT49MSAxIDEgUworLVIgQUQgMTk0MSAxOTQyIC0gTyBNPj0xIDIgMCAtCisrMSBFIENFJXNUCisrUiBDSCAxOTQxIDE5NDIgLSBNYXkgTT49MSAxIDEgUworK1IgQ0ggMTk0MSAxOTQyIC0gTyBNPj0xIDIgMCAtCisgWiBFdXJvcGUvWnVyaWNoIDA6MzQ6OCAtIExNVCAxODUzIEp1bCAxNgorIDA6Mjk6NDYgLSBCTVQgMTg5NCBKdW4KKy0xIEFEIENFJXNUIDE5ODEKKy0xIE8gQ0Ulc1QKKy1SIEFFIDE5MTYgbyAtIE1heSAxIDAgMSBTCistUiBBRSAxOTE2IG8gLSBPIDEgMCAwIC0KKy1SIEFFIDE5MjAgbyAtIE1hciAyOCAwIDEgUworLVIgQUUgMTkyMCBvIC0gTyAyNSAwIDAgLQorLVIgQUUgMTkyMSBvIC0gQXAgMyAwIDEgUworLVIgQUUgMTkyMSBvIC0gTyAzIDAgMCAtCistUiBBRSAxOTIyIG8gLSBNYXIgMjYgMCAxIFMKKy1SIEFFIDE5MjIgbyAtIE8gOCAwIDAgLQorLVIgQUUgMTkyNCBvIC0gTWF5IDEzIDAgMSBTCistUiBBRSAxOTI0IDE5MjUgLSBPIDEgMCAwIC0KKy1SIEFFIDE5MjUgbyAtIE1heSAxIDAgMSBTCistUiBBRSAxOTQwIG8gLSBKdW4gMzAgMCAxIFMKKy1SIEFFIDE5NDAgbyAtIE8gNSAwIDAgLQorLVIgQUUgMTk0MCBvIC0gRCAxIDAgMSBTCistUiBBRSAxOTQxIG8gLSBTIDIxIDAgMCAtCistUiBBRSAxOTQyIG8gLSBBcCAxIDAgMSBTCistUiBBRSAxOTQyIG8gLSBOIDEgMCAwIC0KKy1SIEFFIDE5NDUgbyAtIEFwIDIgMCAxIFMKKy1SIEFFIDE5NDUgbyAtIE8gOCAwIDAgLQorLVIgQUUgMTk0NiBvIC0gSnVuIDEgMCAxIFMKKy1SIEFFIDE5NDYgbyAtIE8gMSAwIDAgLQorLVIgQUUgMTk0NyAxOTQ4IC0gQXAgU3VuPj0xNiAwIDEgUworLVIgQUUgMTk0NyAxOTUwIC0gTyBTdW4+PTIgMCAwIC0KKy1SIEFFIDE5NDkgbyAtIEFwIDEwIDAgMSBTCistUiBBRSAxOTUwIG8gLSBBcCAxOSAwIDEgUworLVIgQUUgMTk1MSBvIC0gQXAgMjIgMCAxIFMKKy1SIEFFIDE5NTEgbyAtIE8gOCAwIDAgLQorLVIgQUUgMTk2MiBvIC0gSnVsIDE1IDAgMSBTCistUiBBRSAxOTYyIG8gLSBPIDggMCAwIC0KKy1SIEFFIDE5NjQgbyAtIE1heSAxNSAwIDEgUworLVIgQUUgMTk2NCBvIC0gTyAxIDAgMCAtCistUiBBRSAxOTcwIDE5NzIgLSBNYXkgU3VuPj0yIDAgMSBTCistUiBBRSAxOTcwIDE5NzIgLSBPIFN1bj49MiAwIDAgLQorLVIgQUUgMTk3MyBvIC0gSnVuIDMgMSAxIFMKKy1SIEFFIDE5NzMgbyAtIE4gNCAzIDAgLQorLVIgQUUgMTk3NCBvIC0gTWFyIDMxIDIgMSBTCistUiBBRSAxOTc0IG8gLSBOIDMgNSAwIC0KKy1SIEFFIDE5NzUgbyAtIE1hciAzMCAwIDEgUworLVIgQUUgMTk3NSAxOTc2IC0gTyBsYXN0U3VuIDAgMCAtCistUiBBRSAxOTc2IG8gLSBKdW4gMSAwIDEgUworLVIgQUUgMTk3NyAxOTc4IC0gQXAgU3VuPj0xIDAgMSBTCistUiBBRSAxOTc3IG8gLSBPIDE2IDAgMCAtCistUiBBRSAxOTc5IDE5ODAgLSBBcCBTdW4+PTEgMyAxIFMKKy1SIEFFIDE5NzkgMTk4MiAtIE8gTT49MTEgMCAwIC0KKy1SIEFFIDE5ODEgMTk4MiAtIE1hciBsYXN0U3VuIDMgMSBTCistUiBBRSAxOTgzIG8gLSBKdWwgMzEgMCAxIFMKKy1SIEFFIDE5ODMgbyAtIE8gMiAwIDAgLQorLVIgQUUgMTk4NSBvIC0gQXAgMjAgMCAxIFMKKy1SIEFFIDE5ODUgbyAtIFMgMjggMCAwIC0KKy1SIEFFIDE5ODYgMTk5MyAtIE1hciBsYXN0U3VuIDFzIDEgUworLVIgQUUgMTk4NiAxOTk1IC0gUyBsYXN0U3VuIDFzIDAgLQorLVIgQUUgMTk5NCBvIC0gTWFyIDIwIDFzIDEgUworLVIgQUUgMTk5NSAyMDA2IC0gTWFyIGxhc3RTdW4gMXMgMSBTCistUiBBRSAxOTk2IDIwMDYgLSBPIGxhc3RTdW4gMXMgMCAtCisrMSBDSCBDRSVzVCAxOTgxCisrMSBFIENFJXNUCisrUiBUIDE5MTYgbyAtIE1heSAxIDAgMSBTCisrUiBUIDE5MTYgbyAtIE8gMSAwIDAgLQorK1IgVCAxOTIwIG8gLSBNYXIgMjggMCAxIFMKKytSIFQgMTkyMCBvIC0gTyAyNSAwIDAgLQorK1IgVCAxOTIxIG8gLSBBcCAzIDAgMSBTCisrUiBUIDE5MjEgbyAtIE8gMyAwIDAgLQorK1IgVCAxOTIyIG8gLSBNYXIgMjYgMCAxIFMKKytSIFQgMTkyMiBvIC0gTyA4IDAgMCAtCisrUiBUIDE5MjQgbyAtIE1heSAxMyAwIDEgUworK1IgVCAxOTI0IDE5MjUgLSBPIDEgMCAwIC0KKytSIFQgMTkyNSBvIC0gTWF5IDEgMCAxIFMKKytSIFQgMTk0MCBvIC0gSnVuIDMwIDAgMSBTCisrUiBUIDE5NDAgbyAtIE8gNSAwIDAgLQorK1IgVCAxOTQwIG8gLSBEIDEgMCAxIFMKKytSIFQgMTk0MSBvIC0gUyAyMSAwIDAgLQorK1IgVCAxOTQyIG8gLSBBcCAxIDAgMSBTCisrUiBUIDE5NDIgbyAtIE4gMSAwIDAgLQorK1IgVCAxOTQ1IG8gLSBBcCAyIDAgMSBTCisrUiBUIDE5NDUgbyAtIE8gOCAwIDAgLQorK1IgVCAxOTQ2IG8gLSBKdW4gMSAwIDEgUworK1IgVCAxOTQ2IG8gLSBPIDEgMCAwIC0KKytSIFQgMTk0NyAxOTQ4IC0gQXAgU3VuPj0xNiAwIDEgUworK1IgVCAxOTQ3IDE5NTAgLSBPIFN1bj49MiAwIDAgLQorK1IgVCAxOTQ5IG8gLSBBcCAxMCAwIDEgUworK1IgVCAxOTUwIG8gLSBBcCAxOSAwIDEgUworK1IgVCAxOTUxIG8gLSBBcCAyMiAwIDEgUworK1IgVCAxOTUxIG8gLSBPIDggMCAwIC0KKytSIFQgMTk2MiBvIC0gSnVsIDE1IDAgMSBTCisrUiBUIDE5NjIgbyAtIE8gOCAwIDAgLQorK1IgVCAxOTY0IG8gLSBNYXkgMTUgMCAxIFMKKytSIFQgMTk2NCBvIC0gTyAxIDAgMCAtCisrUiBUIDE5NzAgMTk3MiAtIE1heSBTdW4+PTIgMCAxIFMKKytSIFQgMTk3MCAxOTcyIC0gTyBTdW4+PTIgMCAwIC0KKytSIFQgMTk3MyBvIC0gSnVuIDMgMSAxIFMKKytSIFQgMTk3MyBvIC0gTiA0IDMgMCAtCisrUiBUIDE5NzQgbyAtIE1hciAzMSAyIDEgUworK1IgVCAxOTc0IG8gLSBOIDMgNSAwIC0KKytSIFQgMTk3NSBvIC0gTWFyIDMwIDAgMSBTCisrUiBUIDE5NzUgMTk3NiAtIE8gbGFzdFN1biAwIDAgLQorK1IgVCAxOTc2IG8gLSBKdW4gMSAwIDEgUworK1IgVCAxOTc3IDE5NzggLSBBcCBTdW4+PTEgMCAxIFMKKytSIFQgMTk3NyBvIC0gTyAxNiAwIDAgLQorK1IgVCAxOTc5IDE5ODAgLSBBcCBTdW4+PTEgMyAxIFMKKytSIFQgMTk3OSAxOTgyIC0gTyBNPj0xMSAwIDAgLQorK1IgVCAxOTgxIDE5ODIgLSBNYXIgbGFzdFN1biAzIDEgUworK1IgVCAxOTgzIG8gLSBKdWwgMzEgMCAxIFMKKytSIFQgMTk4MyBvIC0gTyAyIDAgMCAtCisrUiBUIDE5ODUgbyAtIEFwIDIwIDAgMSBTCisrUiBUIDE5ODUgbyAtIFMgMjggMCAwIC0KKytSIFQgMTk4NiAxOTkzIC0gTWFyIGxhc3RTdW4gMXMgMSBTCisrUiBUIDE5ODYgMTk5NSAtIFMgbGFzdFN1biAxcyAwIC0KKytSIFQgMTk5NCBvIC0gTWFyIDIwIDFzIDEgUworK1IgVCAxOTk1IDIwMDYgLSBNYXIgbGFzdFN1biAxcyAxIFMKKytSIFQgMTk5NiAyMDA2IC0gTyBsYXN0U3VuIDFzIDAgLQorIFogRXVyb3BlL0lzdGFuYnVsIDE6NTU6NTIgLSBMTVQgMTg4MAorIDE6NTY6NTYgLSBJTVQgMTkxMCBPCistMiBBRSBFRSVzVCAxOTc4IE8gMTUKKy0zIEFFICswMy8rMDQgMTk4NSBBcCAyMAorLTIgQUUgRUUlc1QgMjAwNworLTIgTyBFRSVzVCAyMDExIE1hciAyNyAxdQorKzIgVCBFRSVzVCAxOTc4IE8gMTUKKyszIFQgKzAzLyswNCAxOTg1IEFwIDIwCisrMiBUIEVFJXNUIDIwMDcKKysyIEUgRUUlc1QgMjAxMSBNYXIgMjcgMXUKKyAyIC0gRUVUIDIwMTEgTWFyIDI4IDF1CistMiBPIEVFJXNUIDIwMTQgTWFyIDMwIDF1CisrMiBFIEVFJXNUIDIwMTQgTWFyIDMwIDF1CisgMiAtIEVFVCAyMDE0IE1hciAzMSAxdQorLTIgTyBFRSVzVCAyMDE1IE8gMjUgMXUKKysyIEUgRUUlc1QgMjAxNSBPIDI1IDF1CisgMiAxIEVFU1QgMjAxNSBOIDggMXUKKy0yIE8gRUUlc1QgMjAxNiBTIDcKKysyIEUgRUUlc1QgMjAxNiBTIDcKKyAzIC0gKzAzCisgTGkgRXVyb3BlL0lzdGFuYnVsIEFzaWEvSXN0YW5idWwKKyBaIEV1cm9wZS9LaWV2IDI6Mjo0IC0gTE1UIDE4ODAKKyAyOjI6NCAtIEtNVCAxOTI0IE1heSAyCisgMiAtIEVFVCAxOTMwIEp1biAyMQorIDMgLSBNU0sgMTk0MSBTIDIwCistMSAoIENFJXNUIDE5NDMgTiA2CistMyBNIE1TSy9NU0QgMTk5MCBKdWwgMSAyCisrMSBjIENFJXNUIDE5NDMgTiA2CisrMyBSIE1TSy9NU0QgMTk5MCBKdWwgMSAyCisgMiAxIEVFU1QgMTk5MSBTIDI5IDMKKy0yIFcgRUUlc1QgMTk5NQorLTIgTyBFRSVzVAorKzIgZSBFRSVzVCAxOTk1CisrMiBFIEVFJXNUCisgWiBFdXJvcGUvVXpoZ29yb2QgMToyOToxMiAtIExNVCAxODkwIE8KKyAxIC0gQ0VUIDE5NDAKKy0xICggQ0Ulc1QgMTk0NCBPCisrMSBjIENFJXNUIDE5NDQgTworIDEgMSBDRVNUIDE5NDQgTyAyNgorIDEgLSBDRVQgMTk0NSBKdW4gMjkKKy0zIE0gTVNLL01TRCAxOTkwCisrMyBSIE1TSy9NU0QgMTk5MAorIDMgLSBNU0sgMTk5MCBKdWwgMSAyCisgMSAtIENFVCAxOTkxIE1hciAzMSAzCisgMiAtIEVFVCAxOTkyCistMiBXIEVFJXNUIDE5OTUKKy0yIE8gRUUlc1QKKysyIGUgRUUlc1QgMTk5NQorKzIgRSBFRSVzVAorIFogRXVyb3BlL1phcG9yb3poeWUgMjoyMDo0MCAtIExNVCAxODgwCisgMjoyMCAtICswMjIwIDE5MjQgTWF5IDIKKyAyIC0gRUVUIDE5MzAgSnVuIDIxCisgMyAtIE1TSyAxOTQxIEF1IDI1CistMSAoIENFJXNUIDE5NDMgTyAyNQorLTMgTSBNU0svTVNEIDE5OTEgTWFyIDMxIDIKKy0yIFcgRUUlc1QgMTk5NQorLTIgTyBFRSVzVAorLVIgQUYgMTkxOCAxOTE5IC0gTWFyIGxhc3RTdW4gMiAxIEQKKy1SIEFGIDE5MTggMTkxOSAtIE8gbGFzdFN1biAyIDAgUworLVIgQUYgMTk0MiBvIC0gRiA5IDIgMSBXCistUiBBRiAxOTQ1IG8gLSBBdSAxNCAyM3UgMSBQCistUiBBRiAxOTQ1IG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFGIDE5NjcgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworLVIgQUYgMTk2NyAxOTczIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQUYgMTk3NCBvIC0gSmEgNiAyIDEgRAorLVIgQUYgMTk3NSBvIC0gRiAyMyAyIDEgRAorLVIgQUYgMTk3NiAxOTg2IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQUYgMTk4NyAyMDA2IC0gQXAgU3VuPj0xIDIgMSBECistUiBBRiAyMDA3IG1hIC0gTWFyIFN1bj49OCAyIDEgRAorLVIgQUYgMjAwNyBtYSAtIE4gU3VuPj0xIDIgMCBTCisrMSBjIENFJXNUIDE5NDMgTyAyNQorKzMgUiBNU0svTVNEIDE5OTEgTWFyIDMxIDIKKysyIGUgRUUlc1QgMTk5NQorKzIgRSBFRSVzVAorK1IgdSAxOTE4IDE5MTkgLSBNYXIgbGFzdFN1biAyIDEgRAorK1IgdSAxOTE4IDE5MTkgLSBPIGxhc3RTdW4gMiAwIFMKKytSIHUgMTk0MiBvIC0gRiA5IDIgMSBXCisrUiB1IDE5NDUgbyAtIEF1IDE0IDIzdSAxIFAKKytSIHUgMTk0NSBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiB1IDE5NjcgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworK1IgdSAxOTY3IDE5NzMgLSBBcCBsYXN0U3VuIDIgMSBECisrUiB1IDE5NzQgbyAtIEphIDYgMiAxIEQKKytSIHUgMTk3NSBvIC0gRiAyMyAyIDEgRAorK1IgdSAxOTc2IDE5ODYgLSBBcCBsYXN0U3VuIDIgMSBECisrUiB1IDE5ODcgMjAwNiAtIEFwIFN1bj49MSAyIDEgRAorK1IgdSAyMDA3IG1hIC0gTWFyIFN1bj49OCAyIDEgRAorK1IgdSAyMDA3IG1hIC0gTiBTdW4+PTEgMiAwIFMKKyBaIEVTVCAtNSAtIEVTVAorIFogTVNUIC03IC0gTVNUCisgWiBIU1QgLTEwIC0gSFNUCistWiBFU1Q1RURUIC01IEFGIEUlc1QKKy1aIENTVDZDRFQgLTYgQUYgQyVzVAorLVogTVNUN01EVCAtNyBBRiBNJXNUCistWiBQU1Q4UERUIC04IEFGIFAlc1QKKy1SIEFHIDE5MjAgbyAtIE1hciBsYXN0U3VuIDIgMSBECistUiBBRyAxOTIwIG8gLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFHIDE5MjEgMTk2NiAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFHIDE5MjEgMTk1NCAtIFMgbGFzdFN1biAyIDAgUworLVIgQUcgMTk1NSAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisrWiBFU1Q1RURUIC01IHUgRSVzVAorK1ogQ1NUNkNEVCAtNiB1IEMlc1QKKytaIE1TVDdNRFQgLTcgdSBNJXNUCisrWiBQU1Q4UERUIC04IHUgUCVzVAorK1IgTlkgMTkyMCBvIC0gTWFyIGxhc3RTdW4gMiAxIEQKKytSIE5ZIDE5MjAgbyAtIE8gbGFzdFN1biAyIDAgUworK1IgTlkgMTkyMSAxOTY2IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgTlkgMTkyMSAxOTU0IC0gUyBsYXN0U3VuIDIgMCBTCisrUiBOWSAxOTU1IDE5NjYgLSBPIGxhc3RTdW4gMiAwIFMKKyBaIEFtZXJpY2EvTmV3X1lvcmsgLTQ6NTY6MiAtIExNVCAxODgzIE4gMTggMTI6Mzo1OAorLS01IEFGIEUlc1QgMTkyMAorLS01IEFHIEUlc1QgMTk0MgorLS01IEFGIEUlc1QgMTk0NgorLS01IEFHIEUlc1QgMTk2NworLS01IEFGIEUlc1QKKy1SIEFIIDE5MjAgbyAtIEp1biAxMyAyIDEgRAorLVIgQUggMTkyMCAxOTIxIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBSCAxOTIxIG8gLSBNYXIgbGFzdFN1biAyIDEgRAorLVIgQUggMTkyMiAxOTY2IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQUggMTkyMiAxOTU0IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBSCAxOTU1IDE5NjYgLSBPIGxhc3RTdW4gMiAwIFMKKystNSB1IEUlc1QgMTkyMAorKy01IE5ZIEUlc1QgMTk0MgorKy01IHUgRSVzVCAxOTQ2CisrLTUgTlkgRSVzVCAxOTY3CisrLTUgdSBFJXNUCisrUiBDaCAxOTIwIG8gLSBKdW4gMTMgMiAxIEQKKytSIENoIDE5MjAgMTkyMSAtIE8gbGFzdFN1biAyIDAgUworK1IgQ2ggMTkyMSBvIC0gTWFyIGxhc3RTdW4gMiAxIEQKKytSIENoIDE5MjIgMTk2NiAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIENoIDE5MjIgMTk1NCAtIFMgbGFzdFN1biAyIDAgUworK1IgQ2ggMTk1NSAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0NoaWNhZ28gLTU6NTA6MzYgLSBMTVQgMTg4MyBOIDE4IDEyOjk6MjQKKy0tNiBBRiBDJXNUIDE5MjAKKy0tNiBBSCBDJXNUIDE5MzYgTWFyIDEgMgorKy02IHUgQyVzVCAxOTIwCisrLTYgQ2ggQyVzVCAxOTM2IE1hciAxIDIKKyAtNSAtIEVTVCAxOTM2IE4gMTUgMgorLS02IEFIIEMlc1QgMTk0MgorLS02IEFGIEMlc1QgMTk0NgorLS02IEFIIEMlc1QgMTk2NworLS02IEFGIEMlc1QKKystNiBDaCBDJXNUIDE5NDIKKystNiB1IEMlc1QgMTk0NgorKy02IENoIEMlc1QgMTk2NworKy02IHUgQyVzVAorIFogQW1lcmljYS9Ob3J0aF9EYWtvdGEvQ2VudGVyIC02OjQ1OjEyIC0gTE1UIDE4ODMgTiAxOCAxMjoxNDo0OAorLS03IEFGIE0lc1QgMTk5MiBPIDI1IDIKKy0tNiBBRiBDJXNUCisrLTcgdSBNJXNUIDE5OTIgTyAyNSAyCisrLTYgdSBDJXNUCisgWiBBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW0gLTY6NDU6MzkgLSBMTVQgMTg4MyBOIDE4IDEyOjE0OjIxCistLTcgQUYgTSVzVCAyMDAzIE8gMjYgMgorLS02IEFGIEMlc1QKKystNyB1IE0lc1QgMjAwMyBPIDI2IDIKKystNiB1IEMlc1QKKyBaIEFtZXJpY2EvTm9ydGhfRGFrb3RhL0JldWxhaCAtNjo0Nzo3IC0gTE1UIDE4ODMgTiAxOCAxMjoxMjo1MworLS03IEFGIE0lc1QgMjAxMCBOIDcgMgorLS02IEFGIEMlc1QKKy1SIEFJIDE5MjAgMTkyMSAtIE1hciBsYXN0U3VuIDIgMSBECistUiBBSSAxOTIwIG8gLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFJIDE5MjEgbyAtIE1heSAyMiAyIDAgUworLVIgQUkgMTk2NSAxOTY2IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQUkgMTk2NSAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisrLTcgdSBNJXNUIDIwMTAgTiA3IDIKKystNiB1IEMlc1QKKytSIERlIDE5MjAgMTkyMSAtIE1hciBsYXN0U3VuIDIgMSBECisrUiBEZSAxOTIwIG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIERlIDE5MjEgbyAtIE1heSAyMiAyIDAgUworK1IgRGUgMTk2NSAxOTY2IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgRGUgMTk2NSAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0RlbnZlciAtNjo1OTo1NiAtIExNVCAxODgzIE4gMTggMTI6MDo0CistLTcgQUYgTSVzVCAxOTIwCistLTcgQUkgTSVzVCAxOTQyCistLTcgQUYgTSVzVCAxOTQ2CistLTcgQUkgTSVzVCAxOTY3CistLTcgQUYgTSVzVAorLVIgQUogMTk0OCBvIC0gTWFyIDE0IDI6MSAxIEQKKy1SIEFKIDE5NDkgbyAtIEphIDEgMiAwIFMKKy1SIEFKIDE5NTAgMTk2NiAtIEFwIGxhc3RTdW4gMSAxIEQKKy1SIEFKIDE5NTAgMTk2MSAtIFMgbGFzdFN1biAyIDAgUworLVIgQUogMTk2MiAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisrLTcgdSBNJXNUIDE5MjAKKystNyBEZSBNJXNUIDE5NDIKKystNyB1IE0lc1QgMTk0NgorKy03IERlIE0lc1QgMTk2NworKy03IHUgTSVzVAorK1IgQ0EgMTk0OCBvIC0gTWFyIDE0IDI6MSAxIEQKKytSIENBIDE5NDkgbyAtIEphIDEgMiAwIFMKKytSIENBIDE5NTAgMTk2NiAtIEFwIGxhc3RTdW4gMSAxIEQKKytSIENBIDE5NTAgMTk2MSAtIFMgbGFzdFN1biAyIDAgUworK1IgQ0EgMTk2MiAxOTY2IC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0xvc19BbmdlbGVzIC03OjUyOjU4IC0gTE1UIDE4ODMgTiAxOCAxMjo3OjIKKy0tOCBBRiBQJXNUIDE5NDYKKy0tOCBBSiBQJXNUIDE5NjcKKy0tOCBBRiBQJXNUCisrLTggdSBQJXNUIDE5NDYKKystOCBDQSBQJXNUIDE5NjcKKystOCB1IFAlc1QKKyBaIEFtZXJpY2EvSnVuZWF1IDE1OjI6MTkgLSBMTVQgMTg2NyBPIDE5IDE1OjMzOjMyCisgLTg6NTc6NDEgLSBMTVQgMTkwMCBBdSAyMCAxMgorIC04IC0gUFNUIDE5NDIKKy0tOCBBRiBQJXNUIDE5NDYKKystOCB1IFAlc1QgMTk0NgorIC04IC0gUFNUIDE5NjkKKy0tOCBBRiBQJXNUIDE5ODAgQXAgMjcgMgorLS05IEFGIFklc1QgMTk4MCBPIDI2IDIKKy0tOCBBRiBQJXNUIDE5ODMgTyAzMCAyCistLTkgQUYgWSVzVCAxOTgzIE4gMzAKKy0tOSBBRiBBSyVzVAorKy04IHUgUCVzVCAxOTgwIEFwIDI3IDIKKystOSB1IFklc1QgMTk4MCBPIDI2IDIKKystOCB1IFAlc1QgMTk4MyBPIDMwIDIKKystOSB1IFklc1QgMTk4MyBOIDMwCisrLTkgdSBBSyVzVAorIFogQW1lcmljYS9TaXRrYSAxNDo1ODo0NyAtIExNVCAxODY3IE8gMTkgMTU6MzAKKyAtOToxOjEzIC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtOCAtIFBTVCAxOTQyCistLTggQUYgUCVzVCAxOTQ2CisrLTggdSBQJXNUIDE5NDYKKyAtOCAtIFBTVCAxOTY5CistLTggQUYgUCVzVCAxOTgzIE8gMzAgMgorLS05IEFGIFklc1QgMTk4MyBOIDMwCistLTkgQUYgQUslc1QKKystOCB1IFAlc1QgMTk4MyBPIDMwIDIKKystOSB1IFklc1QgMTk4MyBOIDMwCisrLTkgdSBBSyVzVAorIFogQW1lcmljYS9NZXRsYWthdGxhIDE1OjEzOjQyIC0gTE1UIDE4NjcgTyAxOSAxNTo0NDo1NQorIC04OjQ2OjE4IC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtOCAtIFBTVCAxOTQyCistLTggQUYgUCVzVCAxOTQ2CisrLTggdSBQJXNUIDE5NDYKKyAtOCAtIFBTVCAxOTY5CistLTggQUYgUCVzVCAxOTgzIE8gMzAgMgorKy04IHUgUCVzVCAxOTgzIE8gMzAgMgorIC04IC0gUFNUIDIwMTUgTiAxIDIKKy0tOSBBRiBBSyVzVAorKy05IHUgQUslc1QKKyBaIEFtZXJpY2EvWWFrdXRhdCAxNDo0MTo1IC0gTE1UIDE4NjcgTyAxOSAxNToxMjoxOAorIC05OjE4OjU1IC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtOSAtIFlTVCAxOTQyCistLTkgQUYgWSVzVCAxOTQ2CisrLTkgdSBZJXNUIDE5NDYKKyAtOSAtIFlTVCAxOTY5CistLTkgQUYgWSVzVCAxOTgzIE4gMzAKKy0tOSBBRiBBSyVzVAorKy05IHUgWSVzVCAxOTgzIE4gMzAKKystOSB1IEFLJXNUCisgWiBBbWVyaWNhL0FuY2hvcmFnZSAxNDowOjI0IC0gTE1UIDE4NjcgTyAxOSAxNDozMTozNworIC05OjU5OjM2IC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtMTAgLSBBU1QgMTk0MgorLS0xMCBBRiBBJXNUIDE5NjcgQXAKKystMTAgdSBBJXNUIDE5NjcgQXAKKyAtMTAgLSBBSFNUIDE5NjkKKy0tMTAgQUYgQUglc1QgMTk4MyBPIDMwIDIKKy0tOSBBRiBZJXNUIDE5ODMgTiAzMAorLS05IEFGIEFLJXNUCisrLTEwIHUgQUglc1QgMTk4MyBPIDMwIDIKKystOSB1IFklc1QgMTk4MyBOIDMwCisrLTkgdSBBSyVzVAorIFogQW1lcmljYS9Ob21lIDEyOjU4OjIyIC0gTE1UIDE4NjcgTyAxOSAxMzoyOTozNQorIC0xMToxOjM4IC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtMTEgLSBOU1QgMTk0MgorLS0xMSBBRiBOJXNUIDE5NDYKKystMTEgdSBOJXNUIDE5NDYKKyAtMTEgLSBOU1QgMTk2NyBBcAorIC0xMSAtIEJTVCAxOTY5CistLTExIEFGIEIlc1QgMTk4MyBPIDMwIDIKKy0tOSBBRiBZJXNUIDE5ODMgTiAzMAorLS05IEFGIEFLJXNUCisrLTExIHUgQiVzVCAxOTgzIE8gMzAgMgorKy05IHUgWSVzVCAxOTgzIE4gMzAKKystOSB1IEFLJXNUCisgWiBBbWVyaWNhL0FkYWsgMTI6MTM6MjIgLSBMTVQgMTg2NyBPIDE5IDEyOjQ0OjM1CisgLTExOjQ2OjM4IC0gTE1UIDE5MDAgQXUgMjAgMTIKKyAtMTEgLSBOU1QgMTk0MgorLS0xMSBBRiBOJXNUIDE5NDYKKystMTEgdSBOJXNUIDE5NDYKKyAtMTEgLSBOU1QgMTk2NyBBcAorIC0xMSAtIEJTVCAxOTY5CistLTExIEFGIEIlc1QgMTk4MyBPIDMwIDIKKy0tMTAgQUYgQUglc1QgMTk4MyBOIDMwCistLTEwIEFGIEglc1QKKystMTEgdSBCJXNUIDE5ODMgTyAzMCAyCisrLTEwIHUgQUglc1QgMTk4MyBOIDMwCisrLTEwIHUgSCVzVAorIFogUGFjaWZpYy9Ib25vbHVsdSAtMTA6MzE6MjYgLSBMTVQgMTg5NiBKYSAxMyAxMgorIC0xMDozMCAtIEhTVCAxOTMzIEFwIDMwIDIKKyAtMTA6MzAgMSBIRFQgMTkzMyBNYXkgMjEgMTIKK0BAIC0yNjgzLDUzMSArMjcwMCw1MzEgQEAgWiBQYWNpZmljL0hvbm9sdWx1IC0xMDozMToyNiAtIExNVCAxODk2IEphIDEzIDEyCisgLTEwOjMwIC0gSFNUIDE5NDcgSnVuIDggMgorIC0xMCAtIEhTVAorIFogQW1lcmljYS9QaG9lbml4IC03OjI4OjE4IC0gTE1UIDE4ODMgTiAxOCAxMTozMTo0MgorLS03IEFGIE0lc1QgMTk0NCBKYSAxIDA6MQorKy03IHUgTSVzVCAxOTQ0IEphIDEgMDoxCisgLTcgLSBNU1QgMTk0NCBBcCAxIDA6MQorLS03IEFGIE0lc1QgMTk0NCBPIDEgMDoxCisrLTcgdSBNJXNUIDE5NDQgTyAxIDA6MQorIC03IC0gTVNUIDE5NjcKKy0tNyBBRiBNJXNUIDE5NjggTWFyIDIxCisrLTcgdSBNJXNUIDE5NjggTWFyIDIxCisgLTcgLSBNU1QKKyBaIEFtZXJpY2EvQm9pc2UgLTc6NDQ6NDkgLSBMTVQgMTg4MyBOIDE4IDEyOjE1OjExCistLTggQUYgUCVzVCAxOTIzIE1heSAxMyAyCistLTcgQUYgTSVzVCAxOTc0CisrLTggdSBQJXNUIDE5MjMgTWF5IDEzIDIKKystNyB1IE0lc1QgMTk3NAorIC03IC0gTVNUIDE5NzQgRiAzIDIKKy0tNyBBRiBNJXNUCistUiBBSyAxOTQxIG8gLSBKdW4gMjIgMiAxIEQKKy1SIEFLIDE5NDEgMTk1NCAtIFMgbGFzdFN1biAyIDAgUworLVIgQUsgMTk0NiAxOTU0IC0gQXAgbGFzdFN1biAyIDEgRAorKy03IHUgTSVzVAorK1IgSW4gMTk0MSBvIC0gSnVuIDIyIDIgMSBECisrUiBJbiAxOTQxIDE5NTQgLSBTIGxhc3RTdW4gMiAwIFMKKytSIEluIDE5NDYgMTk1NCAtIEFwIGxhc3RTdW4gMiAxIEQKKyBaIEFtZXJpY2EvSW5kaWFuYS9JbmRpYW5hcG9saXMgLTU6NDQ6MzggLSBMTVQgMTg4MyBOIDE4IDEyOjE1OjIyCistLTYgQUYgQyVzVCAxOTIwCistLTYgQUsgQyVzVCAxOTQyCistLTYgQUYgQyVzVCAxOTQ2CistLTYgQUsgQyVzVCAxOTU1IEFwIDI0IDIKKystNiB1IEMlc1QgMTkyMAorKy02IEluIEMlc1QgMTk0MgorKy02IHUgQyVzVCAxOTQ2CisrLTYgSW4gQyVzVCAxOTU1IEFwIDI0IDIKKyAtNSAtIEVTVCAxOTU3IFMgMjkgMgorIC02IC0gQ1NUIDE5NTggQXAgMjcgMgorIC01IC0gRVNUIDE5NjkKKy0tNSBBRiBFJXNUIDE5NzEKKystNSB1IEUlc1QgMTk3MQorIC01IC0gRVNUIDIwMDYKKy0tNSBBRiBFJXNUCistUiBBTCAxOTUxIG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBTCAxOTUxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFMIDE5NTQgMTk2MCAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFMIDE5NTQgMTk2MCAtIFMgbGFzdFN1biAyIDAgUworKy01IHUgRSVzVAorK1IgTWEgMTk1MSBvIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgTWEgMTk1MSBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBNYSAxOTU0IDE5NjAgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBNYSAxOTU0IDE5NjAgLSBTIGxhc3RTdW4gMiAwIFMKKyBaIEFtZXJpY2EvSW5kaWFuYS9NYXJlbmdvIC01OjQ1OjIzIC0gTE1UIDE4ODMgTiAxOCAxMjoxNDozNworLS02IEFGIEMlc1QgMTk1MQorLS02IEFMIEMlc1QgMTk2MSBBcCAzMCAyCisrLTYgdSBDJXNUIDE5NTEKKystNiBNYSBDJXNUIDE5NjEgQXAgMzAgMgorIC01IC0gRVNUIDE5NjkKKy0tNSBBRiBFJXNUIDE5NzQgSmEgNiAyCisrLTUgdSBFJXNUIDE5NzQgSmEgNiAyCisgLTYgMSBDRFQgMTk3NCBPIDI3IDIKKy0tNSBBRiBFJXNUIDE5NzYKKystNSB1IEUlc1QgMTk3NgorIC01IC0gRVNUIDIwMDYKKy0tNSBBRiBFJXNUCistUiBBTSAxOTQ2IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBTSAxOTQ2IG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFNIDE5NTMgMTk1NCAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFNIDE5NTMgMTk1OSAtIFMgbGFzdFN1biAyIDAgUworLVIgQU0gMTk1NSBvIC0gTWF5IDEgMCAxIEQKKy1SIEFNIDE5NTYgMTk2MyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFNIDE5NjAgbyAtIE8gbGFzdFN1biAyIDAgUworLVIgQU0gMTk2MSBvIC0gUyBsYXN0U3VuIDIgMCBTCistUiBBTSAxOTYyIDE5NjMgLSBPIGxhc3RTdW4gMiAwIFMKKystNSB1IEUlc1QKKytSIFYgMTk0NiBvIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgViAxOTQ2IG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIFYgMTk1MyAxOTU0IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgViAxOTUzIDE5NTkgLSBTIGxhc3RTdW4gMiAwIFMKKytSIFYgMTk1NSBvIC0gTWF5IDEgMCAxIEQKKytSIFYgMTk1NiAxOTYzIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgViAxOTYwIG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIFYgMTk2MSBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBWIDE5NjIgMTk2MyAtIE8gbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lcyAtNTo1MDo3IC0gTE1UIDE4ODMgTiAxOCAxMjo5OjUzCistLTYgQUYgQyVzVCAxOTQ2CistLTYgQU0gQyVzVCAxOTY0IEFwIDI2IDIKKystNiB1IEMlc1QgMTk0NgorKy02IFYgQyVzVCAxOTY0IEFwIDI2IDIKKyAtNSAtIEVTVCAxOTY5CistLTUgQUYgRSVzVCAxOTcxCisrLTUgdSBFJXNUIDE5NzEKKyAtNSAtIEVTVCAyMDA2IEFwIDIgMgorLS02IEFGIEMlc1QgMjAwNyBOIDQgMgorLS01IEFGIEUlc1QKKy1SIEFOIDE5NDYgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFOIDE5NDYgbyAtIFMgbGFzdFN1biAyIDAgUworLVIgQU4gMTk1MyAxOTU0IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQU4gMTk1MyAxOTU5IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBTiAxOTU1IG8gLSBNYXkgMSAwIDEgRAorLVIgQU4gMTk1NiAxOTYzIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQU4gMTk2MCBvIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBTiAxOTYxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFOIDE5NjIgMTk2MyAtIE8gbGFzdFN1biAyIDAgUworKy02IHUgQyVzVCAyMDA3IE4gNCAyCisrLTUgdSBFJXNUCisrUiBQZSAxOTQ2IG8gLSBBcCBsYXN0U3VuIDIgMSBECisrUiBQZSAxOTQ2IG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIFBlIDE5NTMgMTk1NCAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFBlIDE5NTMgMTk1OSAtIFMgbGFzdFN1biAyIDAgUworK1IgUGUgMTk1NSBvIC0gTWF5IDEgMCAxIEQKKytSIFBlIDE5NTYgMTk2MyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFBlIDE5NjAgbyAtIE8gbGFzdFN1biAyIDAgUworK1IgUGUgMTk2MSBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBQZSAxOTYyIDE5NjMgLSBPIGxhc3RTdW4gMiAwIFMKKyBaIEFtZXJpY2EvSW5kaWFuYS9UZWxsX0NpdHkgLTU6NDc6MyAtIExNVCAxODgzIE4gMTggMTI6MTI6NTcKKy0tNiBBRiBDJXNUIDE5NDYKKy0tNiBBTiBDJXNUIDE5NjQgQXAgMjYgMgorKy02IHUgQyVzVCAxOTQ2CisrLTYgUGUgQyVzVCAxOTY0IEFwIDI2IDIKKyAtNSAtIEVTVCAxOTY5CistLTUgQUYgRSVzVCAxOTcxCisrLTUgdSBFJXNUIDE5NzEKKyAtNSAtIEVTVCAyMDA2IEFwIDIgMgorLS02IEFGIEMlc1QKKy1SIEFPIDE5NTUgbyAtIE1heSAxIDAgMSBECistUiBBTyAxOTU1IDE5NjAgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFPIDE5NTYgMTk2NCAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFPIDE5NjEgMTk2NCAtIE8gbGFzdFN1biAyIDAgUworKy02IHUgQyVzVAorK1IgUGkgMTk1NSBvIC0gTWF5IDEgMCAxIEQKKytSIFBpIDE5NTUgMTk2MCAtIFMgbGFzdFN1biAyIDAgUworK1IgUGkgMTk1NiAxOTY0IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgUGkgMTk2MSAxOTY0IC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0luZGlhbmEvUGV0ZXJzYnVyZyAtNTo0OTo3IC0gTE1UIDE4ODMgTiAxOCAxMjoxMDo1MworLS02IEFGIEMlc1QgMTk1NQorLS02IEFPIEMlc1QgMTk2NSBBcCAyNSAyCisrLTYgdSBDJXNUIDE5NTUKKystNiBQaSBDJXNUIDE5NjUgQXAgMjUgMgorIC01IC0gRVNUIDE5NjYgTyAzMCAyCistLTYgQUYgQyVzVCAxOTc3IE8gMzAgMgorKy02IHUgQyVzVCAxOTc3IE8gMzAgMgorIC01IC0gRVNUIDIwMDYgQXAgMiAyCistLTYgQUYgQyVzVCAyMDA3IE4gNCAyCistLTUgQUYgRSVzVAorLVIgQVAgMTk0NyAxOTYxIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQVAgMTk0NyAxOTU0IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBUCAxOTU1IDE5NTYgLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFQIDE5NTcgMTk1OCAtIFMgbGFzdFN1biAyIDAgUworLVIgQVAgMTk1OSAxOTYxIC0gTyBsYXN0U3VuIDIgMCBTCisrLTYgdSBDJXNUIDIwMDcgTiA0IDIKKystNSB1IEUlc1QKKytSIFN0IDE5NDcgMTk2MSAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFN0IDE5NDcgMTk1NCAtIFMgbGFzdFN1biAyIDAgUworK1IgU3QgMTk1NSAxOTU2IC0gTyBsYXN0U3VuIDIgMCBTCisrUiBTdCAxOTU3IDE5NTggLSBTIGxhc3RTdW4gMiAwIFMKKytSIFN0IDE5NTkgMTk2MSAtIE8gbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9JbmRpYW5hL0tub3ggLTU6NDY6MzAgLSBMTVQgMTg4MyBOIDE4IDEyOjEzOjMwCistLTYgQUYgQyVzVCAxOTQ3CistLTYgQVAgQyVzVCAxOTYyIEFwIDI5IDIKKystNiB1IEMlc1QgMTk0NworKy02IFN0IEMlc1QgMTk2MiBBcCAyOSAyCisgLTUgLSBFU1QgMTk2MyBPIDI3IDIKKy0tNiBBRiBDJXNUIDE5OTEgTyAyNyAyCisrLTYgdSBDJXNUIDE5OTEgTyAyNyAyCisgLTUgLSBFU1QgMjAwNiBBcCAyIDIKKy0tNiBBRiBDJXNUCistUiBBUSAxOTQ2IDE5NjAgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBUSAxOTQ2IDE5NTQgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFRIDE5NTUgMTk1NiAtIE8gbGFzdFN1biAyIDAgUworLVIgQVEgMTk1NyAxOTYwIC0gUyBsYXN0U3VuIDIgMCBTCisrLTYgdSBDJXNUCisrUiBQdSAxOTQ2IDE5NjAgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBQdSAxOTQ2IDE5NTQgLSBTIGxhc3RTdW4gMiAwIFMKKytSIFB1IDE5NTUgMTk1NiAtIE8gbGFzdFN1biAyIDAgUworK1IgUHUgMTk1NyAxOTYwIC0gUyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0luZGlhbmEvV2luYW1hYyAtNTo0NjoyNSAtIExNVCAxODgzIE4gMTggMTI6MTM6MzUKKy0tNiBBRiBDJXNUIDE5NDYKKy0tNiBBUSBDJXNUIDE5NjEgQXAgMzAgMgorKy02IHUgQyVzVCAxOTQ2CisrLTYgUHUgQyVzVCAxOTYxIEFwIDMwIDIKKyAtNSAtIEVTVCAxOTY5CistLTUgQUYgRSVzVCAxOTcxCisrLTUgdSBFJXNUIDE5NzEKKyAtNSAtIEVTVCAyMDA2IEFwIDIgMgorLS02IEFGIEMlc1QgMjAwNyBNYXIgMTEgMgorLS01IEFGIEUlc1QKKystNiB1IEMlc1QgMjAwNyBNYXIgMTEgMgorKy01IHUgRSVzVAorIFogQW1lcmljYS9JbmRpYW5hL1ZldmF5IC01OjQwOjE2IC0gTE1UIDE4ODMgTiAxOCAxMjoxOTo0NAorLS02IEFGIEMlc1QgMTk1NCBBcCAyNSAyCisrLTYgdSBDJXNUIDE5NTQgQXAgMjUgMgorIC01IC0gRVNUIDE5NjkKKy0tNSBBRiBFJXNUIDE5NzMKKystNSB1IEUlc1QgMTk3MworIC01IC0gRVNUIDIwMDYKKy0tNSBBRiBFJXNUCistUiBBUiAxOTIxIG8gLSBNYXkgMSAyIDEgRAorLVIgQVIgMTkyMSBvIC0gUyAxIDIgMCBTCistUiBBUiAxOTQxIDE5NjEgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBUiAxOTQxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFSIDE5NDYgbyAtIEp1biAyIDIgMCBTCistUiBBUiAxOTUwIDE5NTUgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFSIDE5NTYgMTk2MCAtIE8gbGFzdFN1biAyIDAgUworKy01IHUgRSVzVAorK1IgdiAxOTIxIG8gLSBNYXkgMSAyIDEgRAorK1IgdiAxOTIxIG8gLSBTIDEgMiAwIFMKKytSIHYgMTk0MSAxOTYxIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgdiAxOTQxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIHYgMTk0NiBvIC0gSnVuIDIgMiAwIFMKKytSIHYgMTk1MCAxOTU1IC0gUyBsYXN0U3VuIDIgMCBTCisrUiB2IDE5NTYgMTk2MCAtIE8gbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlIC01OjQzOjIgLSBMTVQgMTg4MyBOIDE4IDEyOjE2OjU4CistLTYgQUYgQyVzVCAxOTIxCistLTYgQVIgQyVzVCAxOTQyCistLTYgQUYgQyVzVCAxOTQ2CistLTYgQVIgQyVzVCAxOTYxIEp1bCAyMyAyCisrLTYgdSBDJXNUIDE5MjEKKystNiB2IEMlc1QgMTk0MgorKy02IHUgQyVzVCAxOTQ2CisrLTYgdiBDJXNUIDE5NjEgSnVsIDIzIDIKKyAtNSAtIEVTVCAxOTY4CistLTUgQUYgRSVzVCAxOTc0IEphIDYgMgorKy01IHUgRSVzVCAxOTc0IEphIDYgMgorIC02IDEgQ0RUIDE5NzQgTyAyNyAyCistLTUgQUYgRSVzVAorKy01IHUgRSVzVAorIFogQW1lcmljYS9LZW50dWNreS9Nb250aWNlbGxvIC01OjM5OjI0IC0gTE1UIDE4ODMgTiAxOCAxMjoyMDozNgorLS02IEFGIEMlc1QgMTk0NgorKy02IHUgQyVzVCAxOTQ2CisgLTYgLSBDU1QgMTk2OAorLS02IEFGIEMlc1QgMjAwMCBPIDI5IDIKKy0tNSBBRiBFJXNUCistUiBBUyAxOTQ4IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBUyAxOTQ4IG8gLSBTIGxhc3RTdW4gMiAwIFMKKystNiB1IEMlc1QgMjAwMCBPIDI5IDIKKystNSB1IEUlc1QKKytSIER0IDE5NDggbyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIER0IDE5NDggbyAtIFMgbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9EZXRyb2l0IC01OjMyOjExIC0gTE1UIDE5MDUKKyAtNiAtIENTVCAxOTE1IE1heSAxNSAyCisgLTUgLSBFU1QgMTk0MgorLS01IEFGIEUlc1QgMTk0NgorLS01IEFTIEUlc1QgMTk3MworLS01IEFGIEUlc1QgMTk3NQorKy01IHUgRSVzVCAxOTQ2CisrLTUgRHQgRSVzVCAxOTczCisrLTUgdSBFJXNUIDE5NzUKKyAtNSAtIEVTVCAxOTc1IEFwIDI3IDIKKy0tNSBBRiBFJXNUCistUiBBVCAxOTQ2IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBVCAxOTQ2IG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFUIDE5NjYgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFUIDE5NjYgbyAtIE8gbGFzdFN1biAyIDAgUworKy01IHUgRSVzVAorK1IgTWUgMTk0NiBvIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgTWUgMTk0NiBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBNZSAxOTY2IG8gLSBBcCBsYXN0U3VuIDIgMSBECisrUiBNZSAxOTY2IG8gLSBPIGxhc3RTdW4gMiAwIFMKKyBaIEFtZXJpY2EvTWVub21pbmVlIC01OjUwOjI3IC0gTE1UIDE4ODUgUyAxOCAxMgorLS02IEFGIEMlc1QgMTk0NgorLS02IEFUIEMlc1QgMTk2OSBBcCAyNyAyCisrLTYgdSBDJXNUIDE5NDYKKystNiBNZSBDJXNUIDE5NjkgQXAgMjcgMgorIC01IC0gRVNUIDE5NzMgQXAgMjkgMgorLS02IEFGIEMlc1QKKy1SIEFVIDE5MTggbyAtIEFwIDE0IDIgMSBECistUiBBVSAxOTE4IG8gLSBPIDI3IDIgMCBTCistUiBBVSAxOTQyIG8gLSBGIDkgMiAxIFcKKy1SIEFVIDE5NDUgbyAtIEF1IDE0IDIzdSAxIFAKKy1SIEFVIDE5NDUgbyAtIFMgMzAgMiAwIFMKKy1SIEFVIDE5NzQgMTk4NiAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFVIDE5NzQgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworLVIgQVUgMTk4NyAyMDA2IC0gQXAgU3VuPj0xIDIgMSBECistUiBBVSAyMDA3IG1hIC0gTWFyIFN1bj49OCAyIDEgRAorLVIgQVUgMjAwNyBtYSAtIE4gU3VuPj0xIDIgMCBTCistUiBBViAxOTE3IG8gLSBBcCA4IDIgMSBECistUiBBViAxOTE3IG8gLSBTIDE3IDIgMCBTCistUiBBViAxOTE5IG8gLSBNYXkgNSAyMyAxIEQKKy1SIEFWIDE5MTkgbyAtIEF1IDEyIDIzIDAgUworLVIgQVYgMTkyMCAxOTM1IC0gTWF5IFN1bj49MSAyMyAxIEQKKy1SIEFWIDE5MjAgMTkzNSAtIE8gbGFzdFN1biAyMyAwIFMKKy1SIEFWIDE5MzYgMTk0MSAtIE1heSBNPj05IDAgMSBECistUiBBViAxOTM2IDE5NDEgLSBPIE0+PTIgMCAwIFMKKy1SIEFWIDE5NDYgMTk1MCAtIE1heSBTdW4+PTggMiAxIEQKKy1SIEFWIDE5NDYgMTk1MCAtIE8gU3VuPj0yIDIgMCBTCistUiBBViAxOTUxIDE5ODYgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBViAxOTUxIDE5NTkgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFWIDE5NjAgMTk4NiAtIE8gbGFzdFN1biAyIDAgUworLVIgQVYgMTk4NyBvIC0gQXAgU3VuPj0xIDA6MSAxIEQKKy1SIEFWIDE5ODcgMjAwNiAtIE8gbGFzdFN1biAwOjEgMCBTCistUiBBViAxOTg4IG8gLSBBcCBTdW4+PTEgMDoxIDIgREQKKy1SIEFWIDE5ODkgMjAwNiAtIEFwIFN1bj49MSAwOjEgMSBECistUiBBViAyMDA3IDIwMTEgLSBNYXIgU3VuPj04IDA6MSAxIEQKKy1SIEFWIDIwMDcgMjAxMCAtIE4gU3VuPj0xIDA6MSAwIFMKKystNiB1IEMlc1QKKytSIEMgMTkxOCBvIC0gQXAgMTQgMiAxIEQKKytSIEMgMTkxOCBvIC0gTyAyNyAyIDAgUworK1IgQyAxOTQyIG8gLSBGIDkgMiAxIFcKKytSIEMgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorK1IgQyAxOTQ1IG8gLSBTIDMwIDIgMCBTCisrUiBDIDE5NzQgMTk4NiAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEMgMTk3NCAyMDA2IC0gTyBsYXN0U3VuIDIgMCBTCisrUiBDIDE5ODcgMjAwNiAtIEFwIFN1bj49MSAyIDEgRAorK1IgQyAyMDA3IG1hIC0gTWFyIFN1bj49OCAyIDEgRAorK1IgQyAyMDA3IG1hIC0gTiBTdW4+PTEgMiAwIFMKKytSIGogMTkxNyBvIC0gQXAgOCAyIDEgRAorK1IgaiAxOTE3IG8gLSBTIDE3IDIgMCBTCisrUiBqIDE5MTkgbyAtIE1heSA1IDIzIDEgRAorK1IgaiAxOTE5IG8gLSBBdSAxMiAyMyAwIFMKKytSIGogMTkyMCAxOTM1IC0gTWF5IFN1bj49MSAyMyAxIEQKKytSIGogMTkyMCAxOTM1IC0gTyBsYXN0U3VuIDIzIDAgUworK1IgaiAxOTM2IDE5NDEgLSBNYXkgTT49OSAwIDEgRAorK1IgaiAxOTM2IDE5NDEgLSBPIE0+PTIgMCAwIFMKKytSIGogMTk0NiAxOTUwIC0gTWF5IFN1bj49OCAyIDEgRAorK1IgaiAxOTQ2IDE5NTAgLSBPIFN1bj49MiAyIDAgUworK1IgaiAxOTUxIDE5ODYgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBqIDE5NTEgMTk1OSAtIFMgbGFzdFN1biAyIDAgUworK1IgaiAxOTYwIDE5ODYgLSBPIGxhc3RTdW4gMiAwIFMKKytSIGogMTk4NyBvIC0gQXAgU3VuPj0xIDA6MSAxIEQKKytSIGogMTk4NyAyMDA2IC0gTyBsYXN0U3VuIDA6MSAwIFMKKytSIGogMTk4OCBvIC0gQXAgU3VuPj0xIDA6MSAyIERECisrUiBqIDE5ODkgMjAwNiAtIEFwIFN1bj49MSAwOjEgMSBECisrUiBqIDIwMDcgMjAxMSAtIE1hciBTdW4+PTggMDoxIDEgRAorK1IgaiAyMDA3IDIwMTAgLSBOIFN1bj49MSAwOjEgMCBTCisgWiBBbWVyaWNhL1N0X0pvaG5zIC0zOjMwOjUyIC0gTE1UIDE4ODQKKy0tMzozMDo1MiBBViBOJXNUIDE5MTgKKy0tMzozMDo1MiBBVSBOJXNUIDE5MTkKKy0tMzozMDo1MiBBViBOJXNUIDE5MzUgTWFyIDMwCistLTM6MzAgQVYgTiVzVCAxOTQyIE1heSAxMQorLS0zOjMwIEFVIE4lc1QgMTk0NgorLS0zOjMwIEFWIE4lc1QgMjAxMSBOCistLTM6MzAgQVUgTiVzVAorKy0zOjMwOjUyIGogTiVzVCAxOTE4CisrLTM6MzA6NTIgQyBOJXNUIDE5MTkKKystMzozMDo1MiBqIE4lc1QgMTkzNSBNYXIgMzAKKystMzozMCBqIE4lc1QgMTk0MiBNYXkgMTEKKystMzozMCBDIE4lc1QgMTk0NgorKy0zOjMwIGogTiVzVCAyMDExIE4KKystMzozMCBDIE4lc1QKKyBaIEFtZXJpY2EvR29vc2VfQmF5IC00OjE6NDAgLSBMTVQgMTg4NAorIC0zOjMwOjUyIC0gTlNUIDE5MTgKKy0tMzozMDo1MiBBVSBOJXNUIDE5MTkKKystMzozMDo1MiBDIE4lc1QgMTkxOQorIC0zOjMwOjUyIC0gTlNUIDE5MzUgTWFyIDMwCisgLTM6MzAgLSBOU1QgMTkzNgorLS0zOjMwIEFWIE4lc1QgMTk0MiBNYXkgMTEKKy0tMzozMCBBVSBOJXNUIDE5NDYKKy0tMzozMCBBViBOJXNUIDE5NjYgTWFyIDE1IDIKKy0tNCBBViBBJXNUIDIwMTEgTgorLS00IEFVIEElc1QKKy1SIEFXIDE5MTYgbyAtIEFwIDEgMCAxIEQKKy1SIEFXIDE5MTYgbyAtIE8gMSAwIDAgUworLVIgQVcgMTkyMCBvIC0gTWF5IDkgMCAxIEQKKy1SIEFXIDE5MjAgbyAtIEF1IDI5IDAgMCBTCistUiBBVyAxOTIxIG8gLSBNYXkgNiAwIDEgRAorLVIgQVcgMTkyMSAxOTIyIC0gUyA1IDAgMCBTCistUiBBVyAxOTIyIG8gLSBBcCAzMCAwIDEgRAorLVIgQVcgMTkyMyAxOTI1IC0gTWF5IFN1bj49MSAwIDEgRAorLVIgQVcgMTkyMyBvIC0gUyA0IDAgMCBTCistUiBBVyAxOTI0IG8gLSBTIDE1IDAgMCBTCistUiBBVyAxOTI1IG8gLSBTIDI4IDAgMCBTCistUiBBVyAxOTI2IG8gLSBNYXkgMTYgMCAxIEQKKy1SIEFXIDE5MjYgbyAtIFMgMTMgMCAwIFMKKy1SIEFXIDE5MjcgbyAtIE1heSAxIDAgMSBECistUiBBVyAxOTI3IG8gLSBTIDI2IDAgMCBTCistUiBBVyAxOTI4IDE5MzEgLSBNYXkgU3VuPj04IDAgMSBECistUiBBVyAxOTI4IG8gLSBTIDkgMCAwIFMKKy1SIEFXIDE5MjkgbyAtIFMgMyAwIDAgUworLVIgQVcgMTkzMCBvIC0gUyAxNSAwIDAgUworLVIgQVcgMTkzMSAxOTMyIC0gUyBNPj0yNCAwIDAgUworLVIgQVcgMTkzMiBvIC0gTWF5IDEgMCAxIEQKKy1SIEFXIDE5MzMgbyAtIEFwIDMwIDAgMSBECistUiBBVyAxOTMzIG8gLSBPIDIgMCAwIFMKKy1SIEFXIDE5MzQgbyAtIE1heSAyMCAwIDEgRAorLVIgQVcgMTkzNCBvIC0gUyAxNiAwIDAgUworLVIgQVcgMTkzNSBvIC0gSnVuIDIgMCAxIEQKKy1SIEFXIDE5MzUgbyAtIFMgMzAgMCAwIFMKKy1SIEFXIDE5MzYgbyAtIEp1biAxIDAgMSBECistUiBBVyAxOTM2IG8gLSBTIDE0IDAgMCBTCistUiBBVyAxOTM3IDE5MzggLSBNYXkgU3VuPj0xIDAgMSBECistUiBBVyAxOTM3IDE5NDEgLSBTIE0+PTI0IDAgMCBTCistUiBBVyAxOTM5IG8gLSBNYXkgMjggMCAxIEQKKy1SIEFXIDE5NDAgMTk0MSAtIE1heSBTdW4+PTEgMCAxIEQKKy1SIEFXIDE5NDYgMTk0OSAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFXIDE5NDYgMTk0OSAtIFMgbGFzdFN1biAyIDAgUworLVIgQVcgMTk1MSAxOTU0IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQVcgMTk1MSAxOTU0IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBVyAxOTU2IDE5NTkgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBVyAxOTU2IDE5NTkgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFXIDE5NjIgMTk3MyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFXIDE5NjIgMTk3MyAtIE8gbGFzdFN1biAyIDAgUworKy0zOjMwIGogTiVzVCAxOTQyIE1heSAxMQorKy0zOjMwIEMgTiVzVCAxOTQ2CisrLTM6MzAgaiBOJXNUIDE5NjYgTWFyIDE1IDIKKystNCBqIEElc1QgMjAxMSBOCisrLTQgQyBBJXNUCisrUiBIIDE5MTYgbyAtIEFwIDEgMCAxIEQKKytSIEggMTkxNiBvIC0gTyAxIDAgMCBTCisrUiBIIDE5MjAgbyAtIE1heSA5IDAgMSBECisrUiBIIDE5MjAgbyAtIEF1IDI5IDAgMCBTCisrUiBIIDE5MjEgbyAtIE1heSA2IDAgMSBECisrUiBIIDE5MjEgMTkyMiAtIFMgNSAwIDAgUworK1IgSCAxOTIyIG8gLSBBcCAzMCAwIDEgRAorK1IgSCAxOTIzIDE5MjUgLSBNYXkgU3VuPj0xIDAgMSBECisrUiBIIDE5MjMgbyAtIFMgNCAwIDAgUworK1IgSCAxOTI0IG8gLSBTIDE1IDAgMCBTCisrUiBIIDE5MjUgbyAtIFMgMjggMCAwIFMKKytSIEggMTkyNiBvIC0gTWF5IDE2IDAgMSBECisrUiBIIDE5MjYgbyAtIFMgMTMgMCAwIFMKKytSIEggMTkyNyBvIC0gTWF5IDEgMCAxIEQKKytSIEggMTkyNyBvIC0gUyAyNiAwIDAgUworK1IgSCAxOTI4IDE5MzEgLSBNYXkgU3VuPj04IDAgMSBECisrUiBIIDE5MjggbyAtIFMgOSAwIDAgUworK1IgSCAxOTI5IG8gLSBTIDMgMCAwIFMKKytSIEggMTkzMCBvIC0gUyAxNSAwIDAgUworK1IgSCAxOTMxIDE5MzIgLSBTIE0+PTI0IDAgMCBTCisrUiBIIDE5MzIgbyAtIE1heSAxIDAgMSBECisrUiBIIDE5MzMgbyAtIEFwIDMwIDAgMSBECisrUiBIIDE5MzMgbyAtIE8gMiAwIDAgUworK1IgSCAxOTM0IG8gLSBNYXkgMjAgMCAxIEQKKytSIEggMTkzNCBvIC0gUyAxNiAwIDAgUworK1IgSCAxOTM1IG8gLSBKdW4gMiAwIDEgRAorK1IgSCAxOTM1IG8gLSBTIDMwIDAgMCBTCisrUiBIIDE5MzYgbyAtIEp1biAxIDAgMSBECisrUiBIIDE5MzYgbyAtIFMgMTQgMCAwIFMKKytSIEggMTkzNyAxOTM4IC0gTWF5IFN1bj49MSAwIDEgRAorK1IgSCAxOTM3IDE5NDEgLSBTIE0+PTI0IDAgMCBTCisrUiBIIDE5MzkgbyAtIE1heSAyOCAwIDEgRAorK1IgSCAxOTQwIDE5NDEgLSBNYXkgU3VuPj0xIDAgMSBECisrUiBIIDE5NDYgMTk0OSAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEggMTk0NiAxOTQ5IC0gUyBsYXN0U3VuIDIgMCBTCisrUiBIIDE5NTEgMTk1NCAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEggMTk1MSAxOTU0IC0gUyBsYXN0U3VuIDIgMCBTCisrUiBIIDE5NTYgMTk1OSAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEggMTk1NiAxOTU5IC0gUyBsYXN0U3VuIDIgMCBTCisrUiBIIDE5NjIgMTk3MyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEggMTk2MiAxOTczIC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0hhbGlmYXggLTQ6MTQ6MjQgLSBMTVQgMTkwMiBKdW4gMTUKKy0tNCBBVyBBJXNUIDE5MTgKKy0tNCBBVSBBJXNUIDE5MTkKKy0tNCBBVyBBJXNUIDE5NDIgRiA5IDJzCistLTQgQVUgQSVzVCAxOTQ2CistLTQgQVcgQSVzVCAxOTc0CistLTQgQVUgQSVzVAorKy00IEggQSVzVCAxOTE4CisrLTQgQyBBJXNUIDE5MTkKKystNCBIIEElc1QgMTk0MiBGIDkgMnMKKystNCBDIEElc1QgMTk0NgorKy00IEggQSVzVCAxOTc0CisrLTQgQyBBJXNUCisgWiBBbWVyaWNhL0dsYWNlX0JheSAtMzo1OTo0OCAtIExNVCAxOTAyIEp1biAxNQorLS00IEFVIEElc1QgMTk1MworLS00IEFXIEElc1QgMTk1NAorKy00IEMgQSVzVCAxOTUzCisrLTQgSCBBJXNUIDE5NTQKKyAtNCAtIEFTVCAxOTcyCistLTQgQVcgQSVzVCAxOTc0CistLTQgQVUgQSVzVAorLVIgQVggMTkzMyAxOTM1IC0gSnVuIFN1bj49OCAxIDEgRAorLVIgQVggMTkzMyAxOTM1IC0gUyBTdW4+PTggMSAwIFMKKy1SIEFYIDE5MzYgMTkzOCAtIEp1biBTdW4+PTEgMSAxIEQKKy1SIEFYIDE5MzYgMTkzOCAtIFMgU3VuPj0xIDEgMCBTCistUiBBWCAxOTM5IG8gLSBNYXkgMjcgMSAxIEQKKy1SIEFYIDE5MzkgMTk0MSAtIFMgU2F0Pj0yMSAxIDAgUworLVIgQVggMTk0MCBvIC0gTWF5IDE5IDEgMSBECistUiBBWCAxOTQxIG8gLSBNYXkgNCAxIDEgRAorLVIgQVggMTk0NiAxOTcyIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQVggMTk0NiAxOTU2IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBWCAxOTU3IDE5NzIgLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFYIDE5OTMgMjAwNiAtIEFwIFN1bj49MSAwOjEgMSBECistUiBBWCAxOTkzIDIwMDYgLSBPIGxhc3RTdW4gMDoxIDAgUworKy00IEggQSVzVCAxOTc0CisrLTQgQyBBJXNUCisrUiBvIDE5MzMgMTkzNSAtIEp1biBTdW4+PTggMSAxIEQKKytSIG8gMTkzMyAxOTM1IC0gUyBTdW4+PTggMSAwIFMKKytSIG8gMTkzNiAxOTM4IC0gSnVuIFN1bj49MSAxIDEgRAorK1IgbyAxOTM2IDE5MzggLSBTIFN1bj49MSAxIDAgUworK1IgbyAxOTM5IG8gLSBNYXkgMjcgMSAxIEQKKytSIG8gMTkzOSAxOTQxIC0gUyBTYXQ+PTIxIDEgMCBTCisrUiBvIDE5NDAgbyAtIE1heSAxOSAxIDEgRAorK1IgbyAxOTQxIG8gLSBNYXkgNCAxIDEgRAorK1IgbyAxOTQ2IDE5NzIgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBvIDE5NDYgMTk1NiAtIFMgbGFzdFN1biAyIDAgUworK1IgbyAxOTU3IDE5NzIgLSBPIGxhc3RTdW4gMiAwIFMKKytSIG8gMTk5MyAyMDA2IC0gQXAgU3VuPj0xIDA6MSAxIEQKKytSIG8gMTk5MyAyMDA2IC0gTyBsYXN0U3VuIDA6MSAwIFMKKyBaIEFtZXJpY2EvTW9uY3RvbiAtNDoxOTo4IC0gTE1UIDE4ODMgRCA5CisgLTUgLSBFU1QgMTkwMiBKdW4gMTUKKy0tNCBBVSBBJXNUIDE5MzMKKy0tNCBBWCBBJXNUIDE5NDIKKy0tNCBBVSBBJXNUIDE5NDYKKy0tNCBBWCBBJXNUIDE5NzMKKy0tNCBBVSBBJXNUIDE5OTMKKy0tNCBBWCBBJXNUIDIwMDcKKy0tNCBBVSBBJXNUCisrLTQgQyBBJXNUIDE5MzMKKystNCBvIEElc1QgMTk0MgorKy00IEMgQSVzVCAxOTQ2CisrLTQgbyBBJXNUIDE5NzMKKystNCBDIEElc1QgMTk5MworKy00IG8gQSVzVCAyMDA3CisrLTQgQyBBJXNUCisgWiBBbWVyaWNhL0JsYW5jLVNhYmxvbiAtMzo0ODoyOCAtIExNVCAxODg0CistLTQgQVUgQSVzVCAxOTcwCisrLTQgQyBBJXNUIDE5NzAKKyAtNCAtIEFTVAorLVIgQVkgMTkxOSBvIC0gTWFyIDMwIDIzOjMwIDEgRAorLVIgQVkgMTkxOSBvIC0gTyAyNiAwIDAgUworLVIgQVkgMTkyMCBvIC0gTWF5IDIgMiAxIEQKKy1SIEFZIDE5MjAgbyAtIFMgMjYgMCAwIFMKKy1SIEFZIDE5MjEgbyAtIE1heSAxNSAyIDEgRAorLVIgQVkgMTkyMSBvIC0gUyAxNSAyIDAgUworLVIgQVkgMTkyMiAxOTIzIC0gTWF5IFN1bj49OCAyIDEgRAorLVIgQVkgMTkyMiAxOTI2IC0gUyBTdW4+PTE1IDIgMCBTCistUiBBWSAxOTI0IDE5MjcgLSBNYXkgU3VuPj0xIDIgMSBECistUiBBWSAxOTI3IDE5MzIgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFZIDE5MjggMTkzMSAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFZIDE5MzIgbyAtIE1heSAxIDIgMSBECistUiBBWSAxOTMzIDE5NDAgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBWSAxOTMzIG8gLSBPIDEgMiAwIFMKKy1SIEFZIDE5MzQgMTkzOSAtIFMgbGFzdFN1biAyIDAgUworLVIgQVkgMTk0NSAxOTQ2IC0gUyBsYXN0U3VuIDIgMCBTCistUiBBWSAxOTQ2IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBWSAxOTQ3IDE5NDkgLSBBcCBsYXN0U3VuIDAgMSBECistUiBBWSAxOTQ3IDE5NDggLSBTIGxhc3RTdW4gMCAwIFMKKy1SIEFZIDE5NDkgbyAtIE4gbGFzdFN1biAwIDAgUworLVIgQVkgMTk1MCAxOTczIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQVkgMTk1MCBvIC0gTiBsYXN0U3VuIDIgMCBTCistUiBBWSAxOTUxIDE5NTYgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFZIDE5NTcgMTk3MyAtIE8gbGFzdFN1biAyIDAgUworK1IgdCAxOTE5IG8gLSBNYXIgMzAgMjM6MzAgMSBECisrUiB0IDE5MTkgbyAtIE8gMjYgMCAwIFMKKytSIHQgMTkyMCBvIC0gTWF5IDIgMiAxIEQKKytSIHQgMTkyMCBvIC0gUyAyNiAwIDAgUworK1IgdCAxOTIxIG8gLSBNYXkgMTUgMiAxIEQKKytSIHQgMTkyMSBvIC0gUyAxNSAyIDAgUworK1IgdCAxOTIyIDE5MjMgLSBNYXkgU3VuPj04IDIgMSBECisrUiB0IDE5MjIgMTkyNiAtIFMgU3VuPj0xNSAyIDAgUworK1IgdCAxOTI0IDE5MjcgLSBNYXkgU3VuPj0xIDIgMSBECisrUiB0IDE5MjcgMTkzMiAtIFMgbGFzdFN1biAyIDAgUworK1IgdCAxOTI4IDE5MzEgLSBBcCBsYXN0U3VuIDIgMSBECisrUiB0IDE5MzIgbyAtIE1heSAxIDIgMSBECisrUiB0IDE5MzMgMTk0MCAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIHQgMTkzMyBvIC0gTyAxIDIgMCBTCisrUiB0IDE5MzQgMTkzOSAtIFMgbGFzdFN1biAyIDAgUworK1IgdCAxOTQ1IDE5NDYgLSBTIGxhc3RTdW4gMiAwIFMKKytSIHQgMTk0NiBvIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgdCAxOTQ3IDE5NDkgLSBBcCBsYXN0U3VuIDAgMSBECisrUiB0IDE5NDcgMTk0OCAtIFMgbGFzdFN1biAwIDAgUworK1IgdCAxOTQ5IG8gLSBOIGxhc3RTdW4gMCAwIFMKKytSIHQgMTk1MCAxOTczIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgdCAxOTUwIG8gLSBOIGxhc3RTdW4gMiAwIFMKKytSIHQgMTk1MSAxOTU2IC0gUyBsYXN0U3VuIDIgMCBTCisrUiB0IDE5NTcgMTk3MyAtIE8gbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9Ub3JvbnRvIC01OjE3OjMyIC0gTE1UIDE4OTUKKy0tNSBBVSBFJXNUIDE5MTkKKy0tNSBBWSBFJXNUIDE5NDIgRiA5IDJzCistLTUgQVUgRSVzVCAxOTQ2CistLTUgQVkgRSVzVCAxOTc0CistLTUgQVUgRSVzVAorKy01IEMgRSVzVCAxOTE5CisrLTUgdCBFJXNUIDE5NDIgRiA5IDJzCisrLTUgQyBFJXNUIDE5NDYKKystNSB0IEUlc1QgMTk3NAorKy01IEMgRSVzVAorIFogQW1lcmljYS9UaHVuZGVyX0JheSAtNTo1NyAtIExNVCAxODk1CisgLTYgLSBDU1QgMTkxMAorIC01IC0gRVNUIDE5NDIKKy0tNSBBVSBFJXNUIDE5NzAKKy0tNSBBWSBFJXNUIDE5NzMKKystNSBDIEUlc1QgMTk3MAorKy01IHQgRSVzVCAxOTczCisgLTUgLSBFU1QgMTk3NAorLS01IEFVIEUlc1QKKystNSBDIEUlc1QKKyBaIEFtZXJpY2EvTmlwaWdvbiAtNTo1Mzo0IC0gTE1UIDE4OTUKKy0tNSBBVSBFJXNUIDE5NDAgUyAyOQorKy01IEMgRSVzVCAxOTQwIFMgMjkKKyAtNSAxIEVEVCAxOTQyIEYgOSAycworLS01IEFVIEUlc1QKKystNSBDIEUlc1QKKyBaIEFtZXJpY2EvUmFpbnlfUml2ZXIgLTY6MTg6MTYgLSBMTVQgMTg5NQorLS02IEFVIEMlc1QgMTk0MCBTIDI5CisrLTYgQyBDJXNUIDE5NDAgUyAyOQorIC02IDEgQ0RUIDE5NDIgRiA5IDJzCistLTYgQVUgQyVzVAorKy02IEMgQyVzVAorIFogQW1lcmljYS9BdGlrb2thbiAtNjo2OjI4IC0gTE1UIDE4OTUKKy0tNiBBVSBDJXNUIDE5NDAgUyAyOQorKy02IEMgQyVzVCAxOTQwIFMgMjkKKyAtNiAxIENEVCAxOTQyIEYgOSAycworLS02IEFVIEMlc1QgMTk0NSBTIDMwIDIKKystNiBDIEMlc1QgMTk0NSBTIDMwIDIKKyAtNSAtIEVTVAorLVIgQVogMTkxNiBvIC0gQXAgMjMgMCAxIEQKKy1SIEFaIDE5MTYgbyAtIFMgMTcgMCAwIFMKKy1SIEFaIDE5MTggbyAtIEFwIDE0IDIgMSBECistUiBBWiAxOTE4IG8gLSBPIDI3IDIgMCBTCistUiBBWiAxOTM3IG8gLSBNYXkgMTYgMiAxIEQKKy1SIEFaIDE5MzcgbyAtIFMgMjYgMiAwIFMKKy1SIEFaIDE5NDIgbyAtIEYgOSAyIDEgVworLVIgQVogMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorLVIgQVogMTk0NSBvIC0gUyBsYXN0U3VuIDIgMCBTCistUiBBWiAxOTQ2IG8gLSBNYXkgMTIgMiAxIEQKKy1SIEFaIDE5NDYgbyAtIE8gMTMgMiAwIFMKKy1SIEFaIDE5NDcgMTk0OSAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFaIDE5NDcgMTk0OSAtIFMgbGFzdFN1biAyIDAgUworLVIgQVogMTk1MCBvIC0gTWF5IDEgMiAxIEQKKy1SIEFaIDE5NTAgbyAtIFMgMzAgMiAwIFMKKy1SIEFaIDE5NTEgMTk2MCAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFaIDE5NTEgMTk1OCAtIFMgbGFzdFN1biAyIDAgUworLVIgQVogMTk1OSBvIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBWiAxOTYwIG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFaIDE5NjMgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFaIDE5NjMgbyAtIFMgMjIgMiAwIFMKKy1SIEFaIDE5NjYgMTk4NiAtIEFwIGxhc3RTdW4gMnMgMSBECistUiBBWiAxOTY2IDIwMDUgLSBPIGxhc3RTdW4gMnMgMCBTCistUiBBWiAxOTg3IDIwMDUgLSBBcCBTdW4+PTEgMnMgMSBECisrUiBXIDE5MTYgbyAtIEFwIDIzIDAgMSBECisrUiBXIDE5MTYgbyAtIFMgMTcgMCAwIFMKKytSIFcgMTkxOCBvIC0gQXAgMTQgMiAxIEQKKytSIFcgMTkxOCBvIC0gTyAyNyAyIDAgUworK1IgVyAxOTM3IG8gLSBNYXkgMTYgMiAxIEQKKytSIFcgMTkzNyBvIC0gUyAyNiAyIDAgUworK1IgVyAxOTQyIG8gLSBGIDkgMiAxIFcKKytSIFcgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorK1IgVyAxOTQ1IG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIFcgMTk0NiBvIC0gTWF5IDEyIDIgMSBECisrUiBXIDE5NDYgbyAtIE8gMTMgMiAwIFMKKytSIFcgMTk0NyAxOTQ5IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgVyAxOTQ3IDE5NDkgLSBTIGxhc3RTdW4gMiAwIFMKKytSIFcgMTk1MCBvIC0gTWF5IDEgMiAxIEQKKytSIFcgMTk1MCBvIC0gUyAzMCAyIDAgUworK1IgVyAxOTUxIDE5NjAgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBXIDE5NTEgMTk1OCAtIFMgbGFzdFN1biAyIDAgUworK1IgVyAxOTU5IG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIFcgMTk2MCBvIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBXIDE5NjMgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFcgMTk2MyBvIC0gUyAyMiAyIDAgUworK1IgVyAxOTY2IDE5ODYgLSBBcCBsYXN0U3VuIDJzIDEgRAorK1IgVyAxOTY2IDIwMDUgLSBPIGxhc3RTdW4gMnMgMCBTCisrUiBXIDE5ODcgMjAwNSAtIEFwIFN1bj49MSAycyAxIEQKKyBaIEFtZXJpY2EvV2lubmlwZWcgLTY6Mjg6MzYgLSBMTVQgMTg4NyBKdWwgMTYKKy0tNiBBWiBDJXNUIDIwMDYKKy0tNiBBVSBDJXNUCistUiBBYSAxOTE4IG8gLSBBcCAxNCAyIDEgRAorLVIgQWEgMTkxOCBvIC0gTyAyNyAyIDAgUworLVIgQWEgMTkzMCAxOTM0IC0gTWF5IFN1bj49MSAwIDEgRAorLVIgQWEgMTkzMCAxOTM0IC0gTyBTdW4+PTEgMCAwIFMKKy1SIEFhIDE5MzcgMTk0MSAtIEFwIFN1bj49OCAwIDEgRAorLVIgQWEgMTkzNyBvIC0gTyBTdW4+PTggMCAwIFMKKy1SIEFhIDE5MzggbyAtIE8gU3VuPj0xIDAgMCBTCistUiBBYSAxOTM5IDE5NDEgLSBPIFN1bj49OCAwIDAgUworLVIgQWEgMTk0MiBvIC0gRiA5IDIgMSBXCistUiBBYSAxOTQ1IG8gLSBBdSAxNCAyM3UgMSBQCistUiBBYSAxOTQ1IG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFhIDE5NDYgbyAtIEFwIFN1bj49OCAyIDEgRAorLVIgQWEgMTk0NiBvIC0gTyBTdW4+PTggMiAwIFMKKy1SIEFhIDE5NDcgMTk1NyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFhIDE5NDcgMTk1NyAtIFMgbGFzdFN1biAyIDAgUworLVIgQWEgMTk1OSBvIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQWEgMTk1OSBvIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBYiAxOTU3IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBYiAxOTU3IG8gLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFiIDE5NTkgMTk2MSAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFiIDE5NTkgbyAtIE8gbGFzdFN1biAyIDAgUworLVIgQWIgMTk2MCAxOTYxIC0gUyBsYXN0U3VuIDIgMCBTCisrLTYgVyBDJXNUIDIwMDYKKystNiBDIEMlc1QKKytSIHIgMTkxOCBvIC0gQXAgMTQgMiAxIEQKKytSIHIgMTkxOCBvIC0gTyAyNyAyIDAgUworK1IgciAxOTMwIDE5MzQgLSBNYXkgU3VuPj0xIDAgMSBECisrUiByIDE5MzAgMTkzNCAtIE8gU3VuPj0xIDAgMCBTCisrUiByIDE5MzcgMTk0MSAtIEFwIFN1bj49OCAwIDEgRAorK1IgciAxOTM3IG8gLSBPIFN1bj49OCAwIDAgUworK1IgciAxOTM4IG8gLSBPIFN1bj49MSAwIDAgUworK1IgciAxOTM5IDE5NDEgLSBPIFN1bj49OCAwIDAgUworK1IgciAxOTQyIG8gLSBGIDkgMiAxIFcKKytSIHIgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorK1IgciAxOTQ1IG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIHIgMTk0NiBvIC0gQXAgU3VuPj04IDIgMSBECisrUiByIDE5NDYgbyAtIE8gU3VuPj04IDIgMCBTCisrUiByIDE5NDcgMTk1NyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIHIgMTk0NyAxOTU3IC0gUyBsYXN0U3VuIDIgMCBTCisrUiByIDE5NTkgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIHIgMTk1OSBvIC0gTyBsYXN0U3VuIDIgMCBTCisrUiBTdyAxOTU3IG8gLSBBcCBsYXN0U3VuIDIgMSBECisrUiBTdyAxOTU3IG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIFN3IDE5NTkgMTk2MSAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFN3IDE5NTkgbyAtIE8gbGFzdFN1biAyIDAgUworK1IgU3cgMTk2MCAxOTYxIC0gUyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL1JlZ2luYSAtNjo1ODozNiAtIExNVCAxOTA1IFMKKy0tNyBBYSBNJXNUIDE5NjAgQXAgbGFzdFN1biAyCisrLTcgciBNJXNUIDE5NjAgQXAgbGFzdFN1biAyCisgLTYgLSBDU1QKKyBaIEFtZXJpY2EvU3dpZnRfQ3VycmVudCAtNzoxMToyMCAtIExNVCAxOTA1IFMKKy0tNyBBVSBNJXNUIDE5NDYgQXAgbGFzdFN1biAyCistLTcgQWEgTSVzVCAxOTUwCistLTcgQWIgTSVzVCAxOTcyIEFwIGxhc3RTdW4gMgorKy03IEMgTSVzVCAxOTQ2IEFwIGxhc3RTdW4gMgorKy03IHIgTSVzVCAxOTUwCisrLTcgU3cgTSVzVCAxOTcyIEFwIGxhc3RTdW4gMgorIC02IC0gQ1NUCistUiBBYyAxOTE4IDE5MTkgLSBBcCBTdW4+PTggMiAxIEQKKy1SIEFjIDE5MTggbyAtIE8gMjcgMiAwIFMKKy1SIEFjIDE5MTkgbyAtIE1heSAyNyAyIDAgUworLVIgQWMgMTkyMCAxOTIzIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQWMgMTkyMCBvIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBYyAxOTIxIDE5MjMgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFjIDE5NDIgbyAtIEYgOSAyIDEgVworLVIgQWMgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorLVIgQWMgMTk0NSBvIC0gUyBsYXN0U3VuIDIgMCBTCistUiBBYyAxOTQ3IG8gLSBBcCBsYXN0U3VuIDIgMSBECistUiBBYyAxOTQ3IG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFjIDE5NjcgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKy1SIEFjIDE5NjcgbyAtIE8gbGFzdFN1biAyIDAgUworLVIgQWMgMTk2OSBvIC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQWMgMTk2OSBvIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBYyAxOTcyIDE5ODYgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBYyAxOTcyIDIwMDYgLSBPIGxhc3RTdW4gMiAwIFMKKytSIEVkIDE5MTggMTkxOSAtIEFwIFN1bj49OCAyIDEgRAorK1IgRWQgMTkxOCBvIC0gTyAyNyAyIDAgUworK1IgRWQgMTkxOSBvIC0gTWF5IDI3IDIgMCBTCisrUiBFZCAxOTIwIDE5MjMgLSBBcCBsYXN0U3VuIDIgMSBECisrUiBFZCAxOTIwIG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIEVkIDE5MjEgMTkyMyAtIFMgbGFzdFN1biAyIDAgUworK1IgRWQgMTk0MiBvIC0gRiA5IDIgMSBXCisrUiBFZCAxOTQ1IG8gLSBBdSAxNCAyM3UgMSBQCisrUiBFZCAxOTQ1IG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIEVkIDE5NDcgbyAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEVkIDE5NDcgbyAtIFMgbGFzdFN1biAyIDAgUworK1IgRWQgMTk2NyBvIC0gQXAgbGFzdFN1biAyIDEgRAorK1IgRWQgMTk2NyBvIC0gTyBsYXN0U3VuIDIgMCBTCisrUiBFZCAxOTY5IG8gLSBBcCBsYXN0U3VuIDIgMSBECisrUiBFZCAxOTY5IG8gLSBPIGxhc3RTdW4gMiAwIFMKKytSIEVkIDE5NzIgMTk4NiAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIEVkIDE5NzIgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworIFogQW1lcmljYS9FZG1vbnRvbiAtNzozMzo1MiAtIExNVCAxOTA2IFMKKy0tNyBBYyBNJXNUIDE5ODcKKy0tNyBBVSBNJXNUCistUiBBZCAxOTE4IG8gLSBBcCAxNCAyIDEgRAorLVIgQWQgMTkxOCBvIC0gTyAyNyAyIDAgUworLVIgQWQgMTk0MiBvIC0gRiA5IDIgMSBXCistUiBBZCAxOTQ1IG8gLSBBdSAxNCAyM3UgMSBQCistUiBBZCAxOTQ1IG8gLSBTIDMwIDIgMCBTCistUiBBZCAxOTQ2IDE5ODYgLSBBcCBsYXN0U3VuIDIgMSBECistUiBBZCAxOTQ2IG8gLSBPIDEzIDIgMCBTCistUiBBZCAxOTQ3IDE5NjEgLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFkIDE5NjIgMjAwNiAtIE8gbGFzdFN1biAyIDAgUworKy03IEVkIE0lc1QgMTk4NworKy03IEMgTSVzVAorK1IgVmEgMTkxOCBvIC0gQXAgMTQgMiAxIEQKKytSIFZhIDE5MTggbyAtIE8gMjcgMiAwIFMKKytSIFZhIDE5NDIgbyAtIEYgOSAyIDEgVworK1IgVmEgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorK1IgVmEgMTk0NSBvIC0gUyAzMCAyIDAgUworK1IgVmEgMTk0NiAxOTg2IC0gQXAgbGFzdFN1biAyIDEgRAorK1IgVmEgMTk0NiBvIC0gTyAxMyAyIDAgUworK1IgVmEgMTk0NyAxOTYxIC0gUyBsYXN0U3VuIDIgMCBTCisrUiBWYSAxOTYyIDIwMDYgLSBPIGxhc3RTdW4gMiAwIFMKKyBaIEFtZXJpY2EvVmFuY291dmVyIC04OjEyOjI4IC0gTE1UIDE4ODQKKy0tOCBBZCBQJXNUIDE5ODcKKy0tOCBBVSBQJXNUCisrLTggVmEgUCVzVCAxOTg3CisrLTggQyBQJXNUCisgWiBBbWVyaWNhL0Rhd3Nvbl9DcmVlayAtODowOjU2IC0gTE1UIDE4ODQKKy0tOCBBVSBQJXNUIDE5NDcKKy0tOCBBZCBQJXNUIDE5NzIgQXUgMzAgMgorKy04IEMgUCVzVCAxOTQ3CisrLTggVmEgUCVzVCAxOTcyIEF1IDMwIDIKKyAtNyAtIE1TVAorIFogQW1lcmljYS9Gb3J0X05lbHNvbiAtODoxMDo0NyAtIExNVCAxODg0CistLTggQWQgUCVzVCAxOTQ2CisrLTggVmEgUCVzVCAxOTQ2CisgLTggLSBQU1QgMTk0NworLS04IEFkIFAlc1QgMTk4NworLS04IEFVIFAlc1QgMjAxNSBNYXIgOCAyCisrLTggVmEgUCVzVCAxOTg3CisrLTggQyBQJXNUIDIwMTUgTWFyIDggMgorIC03IC0gTVNUCisgWiBBbWVyaWNhL0NyZXN0b24gLTc6NDY6NCAtIExNVCAxODg0CisgLTcgLSBNU1QgMTkxNiBPCisgLTggLSBQU1QgMTkxOCBKdW4gMgorIC03IC0gTVNUCistUiBBZSAxOTE4IG8gLSBBcCAxNCAyIDEgRAorLVIgQWUgMTkxOCBvIC0gTyAyNyAyIDAgUworLVIgQWUgMTkxOSBvIC0gTWF5IDI1IDIgMSBECistUiBBZSAxOTE5IG8gLSBOIDEgMCAwIFMKKy1SIEFlIDE5NDIgbyAtIEYgOSAyIDEgVworLVIgQWUgMTk0NSBvIC0gQXUgMTQgMjN1IDEgUAorLVIgQWUgMTk0NSBvIC0gUyAzMCAyIDAgUworLVIgQWUgMTk2NSBvIC0gQXAgbGFzdFN1biAwIDIgREQKKy1SIEFlIDE5NjUgbyAtIE8gbGFzdFN1biAyIDAgUworLVIgQWUgMTk4MCAxOTg2IC0gQXAgbGFzdFN1biAyIDEgRAorLVIgQWUgMTk4MCAyMDA2IC0gTyBsYXN0U3VuIDIgMCBTCistUiBBZSAxOTg3IDIwMDYgLSBBcCBTdW4+PTEgMiAxIEQKKytSIFkgMTkxOCBvIC0gQXAgMTQgMiAxIEQKKytSIFkgMTkxOCBvIC0gTyAyNyAyIDAgUworK1IgWSAxOTE5IG8gLSBNYXkgMjUgMiAxIEQKKytSIFkgMTkxOSBvIC0gTiAxIDAgMCBTCisrUiBZIDE5NDIgbyAtIEYgOSAyIDEgVworK1IgWSAxOTQ1IG8gLSBBdSAxNCAyM3UgMSBQCisrUiBZIDE5NDUgbyAtIFMgMzAgMiAwIFMKKytSIFkgMTk2NSBvIC0gQXAgbGFzdFN1biAwIDIgREQKKytSIFkgMTk2NSBvIC0gTyBsYXN0U3VuIDIgMCBTCisrUiBZIDE5ODAgMTk4NiAtIEFwIGxhc3RTdW4gMiAxIEQKKytSIFkgMTk4MCAyMDA2IC0gTyBsYXN0U3VuIDIgMCBTCisrUiBZIDE5ODcgMjAwNiAtIEFwIFN1bj49MSAyIDEgRAorIFogQW1lcmljYS9QYW5nbmlydHVuZyAwIC0gLTAwIDE5MjEKKy0tNCBBZSBBJXNUIDE5OTUgQXAgU3VuPj0xIDIKKy0tNSBBVSBFJXNUIDE5OTkgTyAzMSAyCistLTYgQVUgQyVzVCAyMDAwIE8gMjkgMgorLS01IEFVIEUlc1QKKystNCBZIEElc1QgMTk5NSBBcCBTdW4+PTEgMgorKy01IEMgRSVzVCAxOTk5IE8gMzEgMgorKy02IEMgQyVzVCAyMDAwIE8gMjkgMgorKy01IEMgRSVzVAorIFogQW1lcmljYS9JcWFsdWl0IDAgLSAtMDAgMTk0MiBBdQorLS01IEFlIEUlc1QgMTk5OSBPIDMxIDIKKy0tNiBBVSBDJXNUIDIwMDAgTyAyOSAyCistLTUgQVUgRSVzVAorKy01IFkgRSVzVCAxOTk5IE8gMzEgMgorKy02IEMgQyVzVCAyMDAwIE8gMjkgMgorKy01IEMgRSVzVAorIFogQW1lcmljYS9SZXNvbHV0ZSAwIC0gLTAwIDE5NDcgQXUgMzEKKy0tNiBBZSBDJXNUIDIwMDAgTyAyOSAyCisrLTYgWSBDJXNUIDIwMDAgTyAyOSAyCisgLTUgLSBFU1QgMjAwMSBBcCAxIDMKKy0tNiBBVSBDJXNUIDIwMDYgTyAyOSAyCisrLTYgQyBDJXNUIDIwMDYgTyAyOSAyCisgLTUgLSBFU1QgMjAwNyBNYXIgMTEgMworLS02IEFVIEMlc1QKKystNiBDIEMlc1QKKyBaIEFtZXJpY2EvUmFua2luX0lubGV0IDAgLSAtMDAgMTk1NworLS02IEFlIEMlc1QgMjAwMCBPIDI5IDIKKystNiBZIEMlc1QgMjAwMCBPIDI5IDIKKyAtNSAtIEVTVCAyMDAxIEFwIDEgMworLS02IEFVIEMlc1QKKystNiBDIEMlc1QKKyBaIEFtZXJpY2EvQ2FtYnJpZGdlX0JheSAwIC0gLTAwIDE5MjAKKy0tNyBBZSBNJXNUIDE5OTkgTyAzMSAyCistLTYgQVUgQyVzVCAyMDAwIE8gMjkgMgorKy03IFkgTSVzVCAxOTk5IE8gMzEgMgorKy02IEMgQyVzVCAyMDAwIE8gMjkgMgorIC01IC0gRVNUIDIwMDAgTiA1CisgLTYgLSBDU1QgMjAwMSBBcCAxIDMKKy0tNyBBVSBNJXNUCisrLTcgQyBNJXNUCisgWiBBbWVyaWNhL1llbGxvd2tuaWZlIDAgLSAtMDAgMTkzNQorLS03IEFlIE0lc1QgMTk4MAorLS03IEFVIE0lc1QKKystNyBZIE0lc1QgMTk4MAorKy03IEMgTSVzVAorIFogQW1lcmljYS9JbnV2aWsgMCAtIC0wMCAxOTUzCistLTggQWUgUCVzVCAxOTc5IEFwIGxhc3RTdW4gMgorLS03IEFlIE0lc1QgMTk4MAorLS03IEFVIE0lc1QKKystOCBZIFAlc1QgMTk3OSBBcCBsYXN0U3VuIDIKKystNyBZIE0lc1QgMTk4MAorKy03IEMgTSVzVAorIFogQW1lcmljYS9XaGl0ZWhvcnNlIC05OjA6MTIgLSBMTVQgMTkwMCBBdSAyMAorLS05IEFlIFklc1QgMTk2NyBNYXkgMjgKKy0tOCBBZSBQJXNUIDE5ODAKKy0tOCBBVSBQJXNUCisrLTkgWSBZJXNUIDE5NjcgTWF5IDI4CisrLTggWSBQJXNUIDE5ODAKKystOCBDIFAlc1QKKyBaIEFtZXJpY2EvRGF3c29uIC05OjE3OjQwIC0gTE1UIDE5MDAgQXUgMjAKKy0tOSBBZSBZJXNUIDE5NzMgTyAyOAorLS04IEFlIFAlc1QgMTk4MAorLS04IEFVIFAlc1QKKy1SIEFmIDE5MzkgbyAtIEYgNSAwIDEgRAorLVIgQWYgMTkzOSBvIC0gSnVuIDI1IDAgMCBTCistUiBBZiAxOTQwIG8gLSBEIDkgMCAxIEQKKy1SIEFmIDE5NDEgbyAtIEFwIDEgMCAwIFMKKy1SIEFmIDE5NDMgbyAtIEQgMTYgMCAxIFcKKy1SIEFmIDE5NDQgbyAtIE1heSAxIDAgMCBTCistUiBBZiAxOTUwIG8gLSBGIDEyIDAgMSBECistUiBBZiAxOTUwIG8gLSBKdWwgMzAgMCAwIFMKKy1SIEFmIDE5OTYgMjAwMCAtIEFwIFN1bj49MSAyIDEgRAorLVIgQWYgMTk5NiAyMDAwIC0gTyBsYXN0U3VuIDIgMCBTCistUiBBZiAyMDAxIG8gLSBNYXkgU3VuPj0xIDIgMSBECistUiBBZiAyMDAxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKy1SIEFmIDIwMDIgbWEgLSBBcCBTdW4+PTEgMiAxIEQKKy1SIEFmIDIwMDIgbWEgLSBPIGxhc3RTdW4gMiAwIFMKKystOSBZIFklc1QgMTk3MyBPIDI4CisrLTggWSBQJXNUIDE5ODAKKystOCBDIFAlc1QKKytSIG0gMTkzOSBvIC0gRiA1IDAgMSBECisrUiBtIDE5MzkgbyAtIEp1biAyNSAwIDAgUworK1IgbSAxOTQwIG8gLSBEIDkgMCAxIEQKKytSIG0gMTk0MSBvIC0gQXAgMSAwIDAgUworK1IgbSAxOTQzIG8gLSBEIDE2IDAgMSBXCisrUiBtIDE5NDQgbyAtIE1heSAxIDAgMCBTCisrUiBtIDE5NTAgbyAtIEYgMTIgMCAxIEQKKytSIG0gMTk1MCBvIC0gSnVsIDMwIDAgMCBTCisrUiBtIDE5OTYgMjAwMCAtIEFwIFN1bj49MSAyIDEgRAorK1IgbSAxOTk2IDIwMDAgLSBPIGxhc3RTdW4gMiAwIFMKKytSIG0gMjAwMSBvIC0gTWF5IFN1bj49MSAyIDEgRAorK1IgbSAyMDAxIG8gLSBTIGxhc3RTdW4gMiAwIFMKKytSIG0gMjAwMiBtYSAtIEFwIFN1bj49MSAyIDEgRAorK1IgbSAyMDAyIG1hIC0gTyBsYXN0U3VuIDIgMCBTCisgWiBBbWVyaWNhL0NhbmN1biAtNTo0Nzo0IC0gTE1UIDE5MjIgSmEgMSAwOjEyOjU2CisgLTYgLSBDU1QgMTk4MSBEIDIzCistLTUgQWYgRSVzVCAxOTk4IEF1IDIgMgorLS02IEFmIEMlc1QgMjAxNSBGIDEgMgorKy01IG0gRSVzVCAxOTk4IEF1IDIgMgorKy02IG0gQyVzVCAyMDE1IEYgMSAyCisgLTUgLSBFU1QKKyBaIEFtZXJpY2EvTWVyaWRhIC01OjU4OjI4IC0gTE1UIDE5MjIgSmEgMSAwOjE6MzIKKyAtNiAtIENTVCAxOTgxIEQgMjMKKyAtNSAtIEVTVCAxOTgyIEQgMgorLS02IEFmIEMlc1QKKystNiBtIEMlc1QKKyBaIEFtZXJpY2EvTWF0YW1vcm9zIC02OjQwIC0gTE1UIDE5MjEgRCAzMSAyMzoyMAorIC02IC0gQ1NUIDE5ODgKKy0tNiBBRiBDJXNUIDE5ODkKKy0tNiBBZiBDJXNUIDIwMTAKKy0tNiBBRiBDJXNUCisrLTYgdSBDJXNUIDE5ODkKKystNiBtIEMlc1QgMjAxMAorKy02IHUgQyVzVAorIFogQW1lcmljYS9Nb250ZXJyZXkgLTY6NDE6MTYgLSBMTVQgMTkyMSBEIDMxIDIzOjE4OjQ0CisgLTYgLSBDU1QgMTk4OAorLS02IEFGIEMlc1QgMTk4OQorLS02IEFmIEMlc1QKKystNiB1IEMlc1QgMTk4OQorKy02IG0gQyVzVAorIFogQW1lcmljYS9NZXhpY29fQ2l0eSAtNjozNjozNiAtIExNVCAxOTIyIEphIDEgMDoyMzoyNAorIC03IC0gTVNUIDE5MjcgSnVuIDEwIDIzCisgLTYgLSBDU1QgMTkzMCBOIDE1CisgLTcgLSBNU1QgMTkzMSBNYXkgMSAyMworIC02IC0gQ1NUIDE5MzEgTworIC03IC0gTVNUIDE5MzIgQXAKKy0tNiBBZiBDJXNUIDIwMDEgUyAzMCAyCisrLTYgbSBDJXNUIDIwMDEgUyAzMCAyCisgLTYgLSBDU1QgMjAwMiBGIDIwCistLTYgQWYgQyVzVAorKy02IG0gQyVzVAorIFogQW1lcmljYS9PamluYWdhIC02OjU3OjQwIC0gTE1UIDE5MjIgSmEgMSAwOjI6MjAKKyAtNyAtIE1TVCAxOTI3IEp1biAxMCAyMworIC02IC0gQ1NUIDE5MzAgTiAxNQorQEAgLTMyMTUsMTAgKzMyMzIsMTAgQEAgWiBBbWVyaWNhL09qaW5hZ2EgLTY6NTc6NDAgLSBMTVQgMTkyMiBKYSAxIDA6MjoyMAorIC02IC0gQ1NUIDE5MzEgTworIC03IC0gTVNUIDE5MzIgQXAKKyAtNiAtIENTVCAxOTk2CistLTYgQWYgQyVzVCAxOTk4CisrLTYgbSBDJXNUIDE5OTgKKyAtNiAtIENTVCAxOTk4IEFwIFN1bj49MSAzCistLTcgQWYgTSVzVCAyMDEwCistLTcgQUYgTSVzVAorKy03IG0gTSVzVCAyMDEwCisrLTcgdSBNJXNUCisgWiBBbWVyaWNhL0NoaWh1YWh1YSAtNzo0OjIwIC0gTE1UIDE5MjEgRCAzMSAyMzo1NTo0MAorIC03IC0gTVNUIDE5MjcgSnVuIDEwIDIzCisgLTYgLSBDU1QgMTkzMCBOIDE1CitAQCAtMzIyNiw5ICszMjQzLDkgQEAgWiBBbWVyaWNhL0NoaWh1YWh1YSAtNzo0OjIwIC0gTE1UIDE5MjEgRCAzMSAyMzo1NTo0MAorIC02IC0gQ1NUIDE5MzEgTworIC03IC0gTVNUIDE5MzIgQXAKKyAtNiAtIENTVCAxOTk2CistLTYgQWYgQyVzVCAxOTk4CisrLTYgbSBDJXNUIDE5OTgKKyAtNiAtIENTVCAxOTk4IEFwIFN1bj49MSAzCistLTcgQWYgTSVzVAorKy03IG0gTSVzVAorIFogQW1lcmljYS9IZXJtb3NpbGxvIC03OjIzOjUyIC0gTE1UIDE5MjEgRCAzMSAyMzozNjo4CisgLTcgLSBNU1QgMTkyNyBKdW4gMTAgMjMKKyAtNiAtIENTVCAxOTMwIE4gMTUKK0BAIC0zMjM4LDcgKzMyNTUsNyBAQCBaIEFtZXJpY2EvSGVybW9zaWxsbyAtNzoyMzo1MiAtIExNVCAxOTIxIEQgMzEgMjM6MzY6OAorIC02IC0gQ1NUIDE5NDIgQXAgMjQKKyAtNyAtIE1TVCAxOTQ5IEphIDE0CisgLTggLSBQU1QgMTk3MAorLS03IEFmIE0lc1QgMTk5OQorKy03IG0gTSVzVCAxOTk5CisgLTcgLSBNU1QKKyBaIEFtZXJpY2EvTWF6YXRsYW4gLTc6NTo0MCAtIExNVCAxOTIxIEQgMzEgMjM6NTQ6MjAKKyAtNyAtIE1TVCAxOTI3IEp1biAxMCAyMworQEAgLTMyNDksNyArMzI2Niw3IEBAIFogQW1lcmljYS9NYXphdGxhbiAtNzo1OjQwIC0gTE1UIDE5MjEgRCAzMSAyMzo1NDoyMAorIC02IC0gQ1NUIDE5NDIgQXAgMjQKKyAtNyAtIE1TVCAxOTQ5IEphIDE0CisgLTggLSBQU1QgMTk3MAorLS03IEFmIE0lc1QKKystNyBtIE0lc1QKKyBaIEFtZXJpY2EvQmFoaWFfQmFuZGVyYXMgLTc6MSAtIExNVCAxOTIxIEQgMzEgMjM6NTkKKyAtNyAtIE1TVCAxOTI3IEp1biAxMCAyMworIC02IC0gQ1NUIDE5MzAgTiAxNQorQEAgLTMyNTksOCArMzI3Niw4IEBAIFogQW1lcmljYS9CYWhpYV9CYW5kZXJhcyAtNzoxIC0gTE1UIDE5MjEgRCAzMSAyMzo1OQorIC02IC0gQ1NUIDE5NDIgQXAgMjQKKyAtNyAtIE1TVCAxOTQ5IEphIDE0CisgLTggLSBQU1QgMTk3MAorLS03IEFmIE0lc1QgMjAxMCBBcCA0IDIKKy0tNiBBZiBDJXNUCisrLTcgbSBNJXNUIDIwMTAgQXAgNCAyCisrLTYgbSBDJXNUCisgWiBBbWVyaWNhL1RpanVhbmEgLTc6NDg6NCAtIExNVCAxOTIyIEphIDEgMDoxMTo1NgorIC03IC0gTVNUIDE5MjQKKyAtOCAtIFBTVCAxOTI3IEp1biAxMCAyMworQEAgLTMyNzMsMzE1ICszMjkwLDMxNSBAQCBaIEFtZXJpY2EvVGlqdWFuYSAtNzo0ODo0IC0gTE1UIDE5MjIgSmEgMSAwOjExOjU2CisgLTggLSBQU1QgMTk0OCBBcCA1CisgLTggMSBQRFQgMTk0OSBKYSAxNAorIC04IC0gUFNUIDE5NTQKKy0tOCBBSiBQJXNUIDE5NjEKKystOCBDQSBQJXNUIDE5NjEKKyAtOCAtIFBTVCAxOTc2CistLTggQUYgUCVzVCAxOTk2CistLTggQWYgUCVzVCAyMDAxCistLTggQUYgUCVzVCAyMDAyIEYgMjAKKy0tOCBBZiBQJXNUIDIwMTAKKy0tOCBBRiBQJXNUCistUiBBZyAxOTY0IDE5NzUgLSBPIGxhc3RTdW4gMiAwIFMKKy1SIEFnIDE5NjQgMTk3NSAtIEFwIGxhc3RTdW4gMiAxIEQKKystOCB1IFAlc1QgMTk5NgorKy04IG0gUCVzVCAyMDAxCisrLTggdSBQJXNUIDIwMDIgRiAyMAorKy04IG0gUCVzVCAyMDEwCisrLTggdSBQJXNUCisrUiBCUyAxOTY0IDE5NzUgLSBPIGxhc3RTdW4gMiAwIFMKKytSIEJTIDE5NjQgMTk3NSAtIEFwIGxhc3RTdW4gMiAxIEQKKyBaIEFtZXJpY2EvTmFzc2F1IC01Ojk6MzAgLSBMTVQgMTkxMiBNYXIgMgorLS01IEFnIEUlc1QgMTk3NgorLS01IEFGIEUlc1QKKy1SIEFoIDE5NzcgbyAtIEp1biAxMiAyIDEgRAorLVIgQWggMTk3NyAxOTc4IC0gTyBTdW4+PTEgMiAwIFMKKy1SIEFoIDE5NzggMTk4MCAtIEFwIFN1bj49MTUgMiAxIEQKKy1SIEFoIDE5NzkgbyAtIFMgMzAgMiAwIFMKKy1SIEFoIDE5ODAgbyAtIFMgMjUgMiAwIFMKKystNSBCUyBFJXNUIDE5NzYKKystNSB1IEUlc1QKKytSIEJCIDE5NzcgbyAtIEp1biAxMiAyIDEgRAorK1IgQkIgMTk3NyAxOTc4IC0gTyBTdW4+PTEgMiAwIFMKKytSIEJCIDE5NzggMTk4MCAtIEFwIFN1bj49MTUgMiAxIEQKKytSIEJCIDE5NzkgbyAtIFMgMzAgMiAwIFMKKytSIEJCIDE5ODAgbyAtIFMgMjUgMiAwIFMKKyBaIEFtZXJpY2EvQmFyYmFkb3MgLTM6NTg6MjkgLSBMTVQgMTkyNAorIC0zOjU4OjI5IC0gQk1UIDE5MzIKKy0tNCBBaCBBJXNUCistUiBBaSAxOTE4IDE5NDIgLSBPIFN1bj49MiAwIDA6MzAgLTA1MzAKKy1SIEFpIDE5MTkgMTk0MyAtIEYgU3VuPj05IDAgMCBDU1QKKy1SIEFpIDE5NzMgbyAtIEQgNSAwIDEgQ0RUCistUiBBaSAxOTc0IG8gLSBGIDkgMCAwIENTVAorLVIgQWkgMTk4MiBvIC0gRCAxOCAwIDEgQ0RUCistUiBBaSAxOTgzIG8gLSBGIDEyIDAgMCBDU1QKKystNCBCQiBBJXNUCisrUiBCWiAxOTE4IDE5NDIgLSBPIFN1bj49MiAwIDA6MzAgLTA1MzAKKytSIEJaIDE5MTkgMTk0MyAtIEYgU3VuPj05IDAgMCBDU1QKKytSIEJaIDE5NzMgbyAtIEQgNSAwIDEgQ0RUCisrUiBCWiAxOTc0IG8gLSBGIDkgMCAwIENTVAorK1IgQlogMTk4MiBvIC0gRCAxOCAwIDEgQ0RUCisrUiBCWiAxOTgzIG8gLSBGIDEyIDAgMCBDU1QKKyBaIEFtZXJpY2EvQmVsaXplIC01OjUyOjQ4IC0gTE1UIDE5MTIgQXAKKy0tNiBBaSAlcworKy02IEJaICVzCisgWiBBdGxhbnRpYy9CZXJtdWRhIC00OjE5OjE4IC0gTE1UIDE5MzAgSmEgMSAyCisgLTQgLSBBU1QgMTk3NCBBcCAyOCAyCistLTQgQVUgQSVzVCAxOTc2CistLTQgQUYgQSVzVAorLVIgQWogMTk3OSAxOTgwIC0gRiBsYXN0U3VuIDAgMSBECistUiBBaiAxOTc5IDE5ODAgLSBKdW4gU3VuPj0xIDAgMCBTCistUiBBaiAxOTkxIDE5OTIgLSBKYSBTYXQ+PTE1IDAgMSBECistUiBBaiAxOTkxIG8gLSBKdWwgMSAwIDAgUworLVIgQWogMTk5MiBvIC0gTWFyIDE1IDAgMCBTCisrLTQgQyBBJXNUIDE5NzYKKystNCB1IEElc1QKKytSIENSIDE5NzkgMTk4MCAtIEYgbGFzdFN1biAwIDEgRAorK1IgQ1IgMTk3OSAxOTgwIC0gSnVuIFN1bj49MSAwIDAgUworK1IgQ1IgMTk5MSAxOTkyIC0gSmEgU2F0Pj0xNSAwIDEgRAorK1IgQ1IgMTk5MSBvIC0gSnVsIDEgMCAwIFMKKytSIENSIDE5OTIgbyAtIE1hciAxNSAwIDAgUworIFogQW1lcmljYS9Db3N0YV9SaWNhIC01OjM2OjEzIC0gTE1UIDE4OTAKKyAtNTozNjoxMyAtIFNKTVQgMTkyMSBKYSAxNQorLS02IEFqIEMlc1QKKy1SIEFrIDE5MjggbyAtIEp1biAxMCAwIDEgRAorLVIgQWsgMTkyOCBvIC0gTyAxMCAwIDAgUworLVIgQWsgMTk0MCAxOTQyIC0gSnVuIFN1bj49MSAwIDEgRAorLVIgQWsgMTk0MCAxOTQyIC0gUyBTdW4+PTEgMCAwIFMKKy1SIEFrIDE5NDUgMTk0NiAtIEp1biBTdW4+PTEgMCAxIEQKKy1SIEFrIDE5NDUgMTk0NiAtIFMgU3VuPj0xIDAgMCBTCistUiBBayAxOTY1IG8gLSBKdW4gMSAwIDEgRAorLVIgQWsgMTk2NSBvIC0gUyAzMCAwIDAgUworLVIgQWsgMTk2NiBvIC0gTWF5IDI5IDAgMSBECistUiBBayAxOTY2IG8gLSBPIDIgMCAwIFMKKy1SIEFrIDE5NjcgbyAtIEFwIDggMCAxIEQKKy1SIEFrIDE5NjcgMTk2OCAtIFMgU3VuPj04IDAgMCBTCistUiBBayAxOTY4IG8gLSBBcCAxNCAwIDEgRAorLVIgQWsgMTk2OSAxOTc3IC0gQXAgbGFzdFN1biAwIDEgRAorLVIgQWsgMTk2OSAxOTcxIC0gTyBsYXN0U3VuIDAgMCBTCistUiBBayAxOTcyIDE5NzQgLSBPIDggMCAwIFMKKy1SIEFrIDE5NzUgMTk3NyAtIE8gbGFzdFN1biAwIDAgUworLVIgQWsgMTk3OCBvIC0gTWF5IDcgMCAxIEQKKy1SIEFrIDE5NzggMTk5MCAtIE8gU3VuPj04IDAgMCBTCistUiBBayAxOTc5IDE5ODAgLSBNYXIgU3VuPj0xNSAwIDEgRAorLVIgQWsgMTk4MSAxOTg1IC0gTWF5IFN1bj49NSAwIDEgRAorLVIgQWsgMTk4NiAxOTg5IC0gTWFyIFN1bj49MTQgMCAxIEQKKy1SIEFrIDE5OTAgMTk5NyAtIEFwIFN1bj49MSAwIDEgRAorLVIgQWsgMTk5MSAxOTk1IC0gTyBTdW4+PTggMHMgMCBTCistUiBBayAxOTk2IG8gLSBPIDYgMHMgMCBTCistUiBBayAxOTk3IG8gLSBPIDEyIDBzIDAgUworLVIgQWsgMTk5OCAxOTk5IC0gTWFyIGxhc3RTdW4gMHMgMSBECistUiBBayAxOTk4IDIwMDMgLSBPIGxhc3RTdW4gMHMgMCBTCistUiBBayAyMDAwIDIwMDMgLSBBcCBTdW4+PTEgMHMgMSBECistUiBBayAyMDA0IG8gLSBNYXIgbGFzdFN1biAwcyAxIEQKKy1SIEFrIDIwMDYgMjAxMCAtIE8gbGFzdFN1biAwcyAwIFMKKy1SIEFrIDIwMDcgbyAtIE1hciBTdW4+PTggMHMgMSBECistUiBBayAyMDA4IG8gLSBNYXIgU3VuPj0xNSAwcyAxIEQKKy1SIEFrIDIwMDkgMjAxMCAtIE1hciBTdW4+PTggMHMgMSBECistUiBBayAyMDExIG8gLSBNYXIgU3VuPj0xNSAwcyAxIEQKKy1SIEFrIDIwMTEgbyAtIE4gMTMgMHMgMCBTCistUiBBayAyMDEyIG8gLSBBcCAxIDBzIDEgRAorLVIgQWsgMjAxMiBtYSAtIE4gU3VuPj0xIDBzIDAgUworLVIgQWsgMjAxMyBtYSAtIE1hciBTdW4+PTggMHMgMSBECisrLTYgQ1IgQyVzVAorK1IgUSAxOTI4IG8gLSBKdW4gMTAgMCAxIEQKKytSIFEgMTkyOCBvIC0gTyAxMCAwIDAgUworK1IgUSAxOTQwIDE5NDIgLSBKdW4gU3VuPj0xIDAgMSBECisrUiBRIDE5NDAgMTk0MiAtIFMgU3VuPj0xIDAgMCBTCisrUiBRIDE5NDUgMTk0NiAtIEp1biBTdW4+PTEgMCAxIEQKKytSIFEgMTk0NSAxOTQ2IC0gUyBTdW4+PTEgMCAwIFMKKytSIFEgMTk2NSBvIC0gSnVuIDEgMCAxIEQKKytSIFEgMTk2NSBvIC0gUyAzMCAwIDAgUworK1IgUSAxOTY2IG8gLSBNYXkgMjkgMCAxIEQKKytSIFEgMTk2NiBvIC0gTyAyIDAgMCBTCisrUiBRIDE5NjcgbyAtIEFwIDggMCAxIEQKKytSIFEgMTk2NyAxOTY4IC0gUyBTdW4+PTggMCAwIFMKKytSIFEgMTk2OCBvIC0gQXAgMTQgMCAxIEQKKytSIFEgMTk2OSAxOTc3IC0gQXAgbGFzdFN1biAwIDEgRAorK1IgUSAxOTY5IDE5NzEgLSBPIGxhc3RTdW4gMCAwIFMKKytSIFEgMTk3MiAxOTc0IC0gTyA4IDAgMCBTCisrUiBRIDE5NzUgMTk3NyAtIE8gbGFzdFN1biAwIDAgUworK1IgUSAxOTc4IG8gLSBNYXkgNyAwIDEgRAorK1IgUSAxOTc4IDE5OTAgLSBPIFN1bj49OCAwIDAgUworK1IgUSAxOTc5IDE5ODAgLSBNYXIgU3VuPj0xNSAwIDEgRAorK1IgUSAxOTgxIDE5ODUgLSBNYXkgU3VuPj01IDAgMSBECisrUiBRIDE5ODYgMTk4OSAtIE1hciBTdW4+PTE0IDAgMSBECisrUiBRIDE5OTAgMTk5NyAtIEFwIFN1bj49MSAwIDEgRAorK1IgUSAxOTkxIDE5OTUgLSBPIFN1bj49OCAwcyAwIFMKKytSIFEgMTk5NiBvIC0gTyA2IDBzIDAgUworK1IgUSAxOTk3IG8gLSBPIDEyIDBzIDAgUworK1IgUSAxOTk4IDE5OTkgLSBNYXIgbGFzdFN1biAwcyAxIEQKKytSIFEgMTk5OCAyMDAzIC0gTyBsYXN0U3VuIDBzIDAgUworK1IgUSAyMDAwIDIwMDMgLSBBcCBTdW4+PTEgMHMgMSBECisrUiBRIDIwMDQgbyAtIE1hciBsYXN0U3VuIDBzIDEgRAorK1IgUSAyMDA2IDIwMTAgLSBPIGxhc3RTdW4gMHMgMCBTCisrUiBRIDIwMDcgbyAtIE1hciBTdW4+PTggMHMgMSBECisrUiBRIDIwMDggbyAtIE1hciBTdW4+PTE1IDBzIDEgRAorK1IgUSAyMDA5IDIwMTAgLSBNYXIgU3VuPj04IDBzIDEgRAorK1IgUSAyMDExIG8gLSBNYXIgU3VuPj0xNSAwcyAxIEQKKytSIFEgMjAxMSBvIC0gTiAxMyAwcyAwIFMKKytSIFEgMjAxMiBvIC0gQXAgMSAwcyAxIEQKKytSIFEgMjAxMiBtYSAtIE4gU3VuPj0xIDBzIDAgUworK1IgUSAyMDEzIG1hIC0gTWFyIFN1bj49OCAwcyAxIEQKKyBaIEFtZXJpY2EvSGF2YW5hIC01OjI5OjI4IC0gTE1UIDE4OTAKKyAtNToyOTozNiAtIEhNVCAxOTI1IEp1bCAxOSAxMgorLS01IEFrIEMlc1QKKy1SIEFsIDE5NjYgbyAtIE8gMzAgMCAxIEVEVAorLVIgQWwgMTk2NyBvIC0gRiAyOCAwIDAgRVNUCistUiBBbCAxOTY5IDE5NzMgLSBPIGxhc3RTdW4gMCAwOjMwIC0wNDMwCistUiBBbCAxOTcwIG8gLSBGIDIxIDAgMCBFU1QKKy1SIEFsIDE5NzEgbyAtIEphIDIwIDAgMCBFU1QKKy1SIEFsIDE5NzIgMTk3NCAtIEphIDIxIDAgMCBFU1QKKystNSBRIEMlc1QKKytSIERPIDE5NjYgbyAtIE8gMzAgMCAxIEVEVAorK1IgRE8gMTk2NyBvIC0gRiAyOCAwIDAgRVNUCisrUiBETyAxOTY5IDE5NzMgLSBPIGxhc3RTdW4gMCAwOjMwIC0wNDMwCisrUiBETyAxOTcwIG8gLSBGIDIxIDAgMCBFU1QKKytSIERPIDE5NzEgbyAtIEphIDIwIDAgMCBFU1QKKytSIERPIDE5NzIgMTk3NCAtIEphIDIxIDAgMCBFU1QKKyBaIEFtZXJpY2EvU2FudG9fRG9taW5nbyAtNDozOTozNiAtIExNVCAxODkwCisgLTQ6NDAgLSBTRE1UIDE5MzMgQXAgMSAxMgorLS01IEFsICVzIDE5NzQgTyAyNworKy01IERPICVzIDE5NzQgTyAyNworIC00IC0gQVNUIDIwMDAgTyAyOSAyCistLTUgQUYgRSVzVCAyMDAwIEQgMyAxCisrLTUgdSBFJXNUIDIwMDAgRCAzIDEKKyAtNCAtIEFTVAorLVIgQW0gMTk4NyAxOTg4IC0gTWF5IFN1bj49MSAwIDEgRAorLVIgQW0gMTk4NyAxOTg4IC0gUyBsYXN0U3VuIDAgMCBTCisrUiBTViAxOTg3IDE5ODggLSBNYXkgU3VuPj0xIDAgMSBECisrUiBTViAxOTg3IDE5ODggLSBTIGxhc3RTdW4gMCAwIFMKKyBaIEFtZXJpY2EvRWxfU2FsdmFkb3IgLTU6NTY6NDggLSBMTVQgMTkyMQorLS02IEFtIEMlc1QKKy1SIEFuIDE5NzMgbyAtIE4gMjUgMCAxIEQKKy1SIEFuIDE5NzQgbyAtIEYgMjQgMCAwIFMKKy1SIEFuIDE5ODMgbyAtIE1heSAyMSAwIDEgRAorLVIgQW4gMTk4MyBvIC0gUyAyMiAwIDAgUworLVIgQW4gMTk5MSBvIC0gTWFyIDIzIDAgMSBECistUiBBbiAxOTkxIG8gLSBTIDcgMCAwIFMKKy1SIEFuIDIwMDYgbyAtIEFwIDMwIDAgMSBECistUiBBbiAyMDA2IG8gLSBPIDEgMCAwIFMKKystNiBTViBDJXNUCisrUiBHVCAxOTczIG8gLSBOIDI1IDAgMSBECisrUiBHVCAxOTc0IG8gLSBGIDI0IDAgMCBTCisrUiBHVCAxOTgzIG8gLSBNYXkgMjEgMCAxIEQKKytSIEdUIDE5ODMgbyAtIFMgMjIgMCAwIFMKKytSIEdUIDE5OTEgbyAtIE1hciAyMyAwIDEgRAorK1IgR1QgMTk5MSBvIC0gUyA3IDAgMCBTCisrUiBHVCAyMDA2IG8gLSBBcCAzMCAwIDEgRAorK1IgR1QgMjAwNiBvIC0gTyAxIDAgMCBTCisgWiBBbWVyaWNhL0d1YXRlbWFsYSAtNjoyOjQgLSBMTVQgMTkxOCBPIDUKKy0tNiBBbiBDJXNUCistUiBBbyAxOTgzIG8gLSBNYXkgOCAwIDEgRAorLVIgQW8gMTk4NCAxOTg3IC0gQXAgbGFzdFN1biAwIDEgRAorLVIgQW8gMTk4MyAxOTg3IC0gTyBsYXN0U3VuIDAgMCBTCistUiBBbyAxOTg4IDE5OTcgLSBBcCBTdW4+PTEgMXMgMSBECistUiBBbyAxOTg4IDE5OTcgLSBPIGxhc3RTdW4gMXMgMCBTCistUiBBbyAyMDA1IDIwMDYgLSBBcCBTdW4+PTEgMCAxIEQKKy1SIEFvIDIwMDUgMjAwNiAtIE8gbGFzdFN1biAwIDAgUworLVIgQW8gMjAxMiAyMDE1IC0gTWFyIFN1bj49OCAyIDEgRAorLVIgQW8gMjAxMiAyMDE1IC0gTiBTdW4+PTEgMiAwIFMKKy1SIEFvIDIwMTcgbWEgLSBNYXIgU3VuPj04IDIgMSBECistUiBBbyAyMDE3IG1hIC0gTiBTdW4+PTEgMiAwIFMKKystNiBHVCBDJXNUCisrUiBIVCAxOTgzIG8gLSBNYXkgOCAwIDEgRAorK1IgSFQgMTk4NCAxOTg3IC0gQXAgbGFzdFN1biAwIDEgRAorK1IgSFQgMTk4MyAxOTg3IC0gTyBsYXN0U3VuIDAgMCBTCisrUiBIVCAxOTg4IDE5OTcgLSBBcCBTdW4+PTEgMXMgMSBECisrUiBIVCAxOTg4IDE5OTcgLSBPIGxhc3RTdW4gMXMgMCBTCisrUiBIVCAyMDA1IDIwMDYgLSBBcCBTdW4+PTEgMCAxIEQKKytSIEhUIDIwMDUgMjAwNiAtIE8gbGFzdFN1biAwIDAgUworK1IgSFQgMjAxMiAyMDE1IC0gTWFyIFN1bj49OCAyIDEgRAorK1IgSFQgMjAxMiAyMDE1IC0gTiBTdW4+PTEgMiAwIFMKKytSIEhUIDIwMTcgbWEgLSBNYXIgU3VuPj04IDIgMSBECisrUiBIVCAyMDE3IG1hIC0gTiBTdW4+PTEgMiAwIFMKKyBaIEFtZXJpY2EvUG9ydC1hdS1QcmluY2UgLTQ6NDk6MjAgLSBMTVQgMTg5MAorIC00OjQ5IC0gUFBNVCAxOTE3IEphIDI0IDEyCistLTUgQW8gRSVzVAorLVIgQXAgMTk4NyAxOTg4IC0gTWF5IFN1bj49MSAwIDEgRAorLVIgQXAgMTk4NyAxOTg4IC0gUyBsYXN0U3VuIDAgMCBTCistUiBBcCAyMDA2IG8gLSBNYXkgU3VuPj0xIDAgMSBECistUiBBcCAyMDA2IG8gLSBBdSBNPj0xIDAgMCBTCisrLTUgSFQgRSVzVAorK1IgSE4gMTk4NyAxOTg4IC0gTWF5IFN1bj49MSAwIDEgRAorK1IgSE4gMTk4NyAxOTg4IC0gUyBsYXN0U3VuIDAgMCBTCisrUiBITiAyMDA2IG8gLSBNYXkgU3VuPj0xIDAgMSBECisrUiBITiAyMDA2IG8gLSBBdSBNPj0xIDAgMCBTCisgWiBBbWVyaWNhL1RlZ3VjaWdhbHBhIC01OjQ4OjUyIC0gTE1UIDE5MjEgQXAKKy0tNiBBcCBDJXNUCisrLTYgSE4gQyVzVAorIFogQW1lcmljYS9KYW1haWNhIC01Ojc6MTAgLSBMTVQgMTg5MAorIC01Ojc6MTAgLSBLTVQgMTkxMiBGCisgLTUgLSBFU1QgMTk3NAorLS01IEFGIEUlc1QgMTk4NAorKy01IHUgRSVzVCAxOTg0CisgLTUgLSBFU1QKKyBaIEFtZXJpY2EvTWFydGluaXF1ZSAtNDo0OjIwIC0gTE1UIDE4OTAKKyAtNDo0OjIwIC0gRkZNVCAxOTExIE1heQorIC00IC0gQVNUIDE5ODAgQXAgNgorIC00IDEgQURUIDE5ODAgUyAyOAorIC00IC0gQVNUCistUiBBcSAxOTc5IDE5ODAgLSBNYXIgU3VuPj0xNiAwIDEgRAorLVIgQXEgMTk3OSAxOTgwIC0gSnVuIE0+PTIzIDAgMCBTCistUiBBcSAyMDA1IG8gLSBBcCAxMCAwIDEgRAorLVIgQXEgMjAwNSBvIC0gTyBTdW4+PTEgMCAwIFMKKy1SIEFxIDIwMDYgbyAtIEFwIDMwIDIgMSBECistUiBBcSAyMDA2IG8gLSBPIFN1bj49MSAxIDAgUworK1IgTkkgMTk3OSAxOTgwIC0gTWFyIFN1bj49MTYgMCAxIEQKKytSIE5JIDE5NzkgMTk4MCAtIEp1biBNPj0yMyAwIDAgUworK1IgTkkgMjAwNSBvIC0gQXAgMTAgMCAxIEQKKytSIE5JIDIwMDUgbyAtIE8gU3VuPj0xIDAgMCBTCisrUiBOSSAyMDA2IG8gLSBBcCAzMCAyIDEgRAorK1IgTkkgMjAwNiBvIC0gTyBTdW4+PTEgMSAwIFMKKyBaIEFtZXJpY2EvTWFuYWd1YSAtNTo0NTo4IC0gTE1UIDE4OTAKKyAtNTo0NToxMiAtIE1NVCAxOTM0IEp1biAyMworIC02IC0gQ1NUIDE5NzMgTWF5CisgLTUgLSBFU1QgMTk3NSBGIDE2CistLTYgQXEgQyVzVCAxOTkyIEphIDEgNAorKy02IE5JIEMlc1QgMTk5MiBKYSAxIDQKKyAtNSAtIEVTVCAxOTkyIFMgMjQKKyAtNiAtIENTVCAxOTkzCisgLTUgLSBFU1QgMTk5NworLS02IEFxIEMlc1QKKystNiBOSSBDJXNUCisgWiBBbWVyaWNhL1BhbmFtYSAtNToxODo4IC0gTE1UIDE4OTAKKyAtNToxOTozNiAtIENNVCAxOTA4IEFwIDIyCisgLTUgLSBFU1QKKyBMaSBBbWVyaWNhL1BhbmFtYSBBbWVyaWNhL0NheW1hbgorIFogQW1lcmljYS9QdWVydG9fUmljbyAtNDoyNDoyNSAtIExNVCAxODk5IE1hciAyOCAxMgorIC00IC0gQVNUIDE5NDIgTWF5IDMKKy0tNCBBRiBBJXNUIDE5NDYKKystNCB1IEElc1QgMTk0NgorIC00IC0gQVNUCisgWiBBbWVyaWNhL01pcXVlbG9uIC0zOjQ0OjQwIC0gTE1UIDE5MTEgTWF5IDE1CisgLTQgLSBBU1QgMTk4MCBNYXkKKyAtMyAtIC0wMyAxOTg3CistLTMgQVUgLTAzLy0wMgorKy0zIEMgLTAzLy0wMgorIFogQW1lcmljYS9HcmFuZF9UdXJrIC00OjQ0OjMyIC0gTE1UIDE4OTAKKyAtNTo3OjEwIC0gS01UIDE5MTIgRgorIC01IC0gRVNUIDE5NzkKKy0tNSBBRiBFJXNUIDIwMTUgTiBTdW4+PTEgMgorKy01IHUgRSVzVCAyMDE1IE4gU3VuPj0xIDIKKyAtNCAtIEFTVCAyMDE4IE1hciAxMSAzCistLTUgQUYgRSVzVAorLVIgQXIgMTkzMCBvIC0gRCAxIDAgMSAtCistUiBBciAxOTMxIG8gLSBBcCAxIDAgMCAtCistUiBBciAxOTMxIG8gLSBPIDE1IDAgMSAtCistUiBBciAxOTMyIDE5NDAgLSBNYXIgMSAwIDAgLQorLVIgQXIgMTkzMiAxOTM5IC0gTiAxIDAgMSAtCistUiBBciAxOTQwIG8gLSBKdWwgMSAwIDEgLQorLVIgQXIgMTk0MSBvIC0gSnVuIDE1IDAgMCAtCistUiBBciAxOTQxIG8gLSBPIDE1IDAgMSAtCistUiBBciAxOTQzIG8gLSBBdSAxIDAgMCAtCistUiBBciAxOTQzIG8gLSBPIDE1IDAgMSAtCistUiBBciAxOTQ2IG8gLSBNYXIgMSAwIDAgLQorLVIgQXIgMTk0NiBvIC0gTyAxIDAgMSAtCistUiBBciAxOTYzIG8gLSBPIDEgMCAwIC0KKy1SIEFyIDE5NjMgbyAtIEQgMTUgMCAxIC0KKy1SIEFyIDE5NjQgMTk2NiAtIE1hciAxIDAgMCAtCistUiBBciAxOTY0IDE5NjYgLSBPIDE1IDAgMSAtCistUiBBciAxOTY3IG8gLSBBcCAyIDAgMCAtCistUiBBciAxOTY3IDE5NjggLSBPIFN1bj49MSAwIDEgLQorLVIgQXIgMTk2OCAxOTY5IC0gQXAgU3VuPj0xIDAgMCAtCistUiBBciAxOTc0IG8gLSBKYSAyMyAwIDEgLQorLVIgQXIgMTk3NCBvIC0gTWF5IDEgMCAwIC0KKy1SIEFyIDE5ODggbyAtIEQgMSAwIDEgLQorLVIgQXIgMTk4OSAxOTkzIC0gTWFyIFN1bj49MSAwIDAgLQorLVIgQXIgMTk4OSAxOTkyIC0gTyBTdW4+PTE1IDAgMSAtCistUiBBciAxOTk5IG8gLSBPIFN1bj49MSAwIDEgLQorLVIgQXIgMjAwMCBvIC0gTWFyIDMgMCAwIC0KKy1SIEFyIDIwMDcgbyAtIEQgMzAgMCAxIC0KKy1SIEFyIDIwMDggMjAwOSAtIE1hciBTdW4+PTE1IDAgMCAtCistUiBBciAyMDA4IG8gLSBPIFN1bj49MTUgMCAxIC0KKystNSB1IEUlc1QKKytSIEEgMTkzMCBvIC0gRCAxIDAgMSAtCisrUiBBIDE5MzEgbyAtIEFwIDEgMCAwIC0KKytSIEEgMTkzMSBvIC0gTyAxNSAwIDEgLQorK1IgQSAxOTMyIDE5NDAgLSBNYXIgMSAwIDAgLQorK1IgQSAxOTMyIDE5MzkgLSBOIDEgMCAxIC0KKytSIEEgMTk0MCBvIC0gSnVsIDEgMCAxIC0KKytSIEEgMTk0MSBvIC0gSnVuIDE1IDAgMCAtCisrUiBBIDE5NDEgbyAtIE8gMTUgMCAxIC0KKytSIEEgMTk0MyBvIC0gQXUgMSAwIDAgLQorK1IgQSAxOTQzIG8gLSBPIDE1IDAgMSAtCisrUiBBIDE5NDYgbyAtIE1hciAxIDAgMCAtCisrUiBBIDE5NDYgbyAtIE8gMSAwIDEgLQorK1IgQSAxOTYzIG8gLSBPIDEgMCAwIC0KKytSIEEgMTk2MyBvIC0gRCAxNSAwIDEgLQorK1IgQSAxOTY0IDE5NjYgLSBNYXIgMSAwIDAgLQorK1IgQSAxOTY0IDE5NjYgLSBPIDE1IDAgMSAtCisrUiBBIDE5NjcgbyAtIEFwIDIgMCAwIC0KKytSIEEgMTk2NyAxOTY4IC0gTyBTdW4+PTEgMCAxIC0KKytSIEEgMTk2OCAxOTY5IC0gQXAgU3VuPj0xIDAgMCAtCisrUiBBIDE5NzQgbyAtIEphIDIzIDAgMSAtCisrUiBBIDE5NzQgbyAtIE1heSAxIDAgMCAtCisrUiBBIDE5ODggbyAtIEQgMSAwIDEgLQorK1IgQSAxOTg5IDE5OTMgLSBNYXIgU3VuPj0xIDAgMCAtCisrUiBBIDE5ODkgMTk5MiAtIE8gU3VuPj0xNSAwIDEgLQorK1IgQSAxOTk5IG8gLSBPIFN1bj49MSAwIDEgLQorK1IgQSAyMDAwIG8gLSBNYXIgMyAwIDAgLQorK1IgQSAyMDA3IG8gLSBEIDMwIDAgMSAtCisrUiBBIDIwMDggMjAwOSAtIE1hciBTdW4+PTE1IDAgMCAtCisrUiBBIDIwMDggbyAtIE8gU3VuPj0xNSAwIDEgLQorIFogQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzIC0zOjUzOjQ4IC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5OSBPIDMKKy0tNCBBciAtMDQvLTAzIDIwMDAgTWFyIDMKKy0tMyBBciAtMDMvLTAyCisrLTQgQSAtMDQvLTAzIDE5NjkgTyA1CisrLTMgQSAtMDMvLTAyIDE5OTkgTyAzCisrLTQgQSAtMDQvLTAzIDIwMDAgTWFyIDMKKystMyBBIC0wMy8tMDIKKyBaIEFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmEgLTQ6MTY6NDggLSBMTVQgMTg5NCBPIDMxCisgLTQ6MTY6NDggLSBDTVQgMTkyMCBNYXkKKyAtNCAtIC0wNCAxOTMwIEQKKy0tNCBBciAtMDQvLTAzIDE5NjkgTyA1CistLTMgQXIgLTAzLy0wMiAxOTkxIE1hciAzCisrLTQgQSAtMDQvLTAzIDE5NjkgTyA1CisrLTMgQSAtMDMvLTAyIDE5OTEgTWFyIDMKKyAtNCAtIC0wNCAxOTkxIE8gMjAKKy0tMyBBciAtMDMvLTAyIDE5OTkgTyAzCistLTQgQXIgLTA0Ly0wMyAyMDAwIE1hciAzCistLTMgQXIgLTAzLy0wMgorKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisrLTMgQSAtMDMvLTAyCisgWiBBbWVyaWNhL0FyZ2VudGluYS9TYWx0YSAtNDoyMTo0MCAtIExNVCAxODk0IE8gMzEKKyAtNDoxNjo0OCAtIENNVCAxOTIwIE1heQorIC00IC0gLTA0IDE5MzAgRAorLS00IEFyIC0wNC8tMDMgMTk2OSBPIDUKKy0tMyBBciAtMDMvLTAyIDE5OTEgTWFyIDMKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk5MSBNYXIgMworIC00IC0gLTA0IDE5OTEgTyAyMAorLS0zIEFyIC0wMy8tMDIgMTk5OSBPIDMKKy0tNCBBciAtMDQvLTAzIDIwMDAgTWFyIDMKKy0tMyBBciAtMDMvLTAyIDIwMDggTyAxOAorKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisrLTMgQSAtMDMvLTAyIDIwMDggTyAxOAorIC0zIC0gLTAzCisgWiBBbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFuIC00OjIwOjUyIC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5MSBNYXIgMworKy00IEEgLTA0Ly0wMyAxOTY5IE8gNQorKy0zIEEgLTAzLy0wMiAxOTkxIE1hciAzCisgLTQgLSAtMDQgMTk5MSBPIDIwCistLTMgQXIgLTAzLy0wMiAxOTk5IE8gMworLS00IEFyIC0wNC8tMDMgMjAwMCBNYXIgMworKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisgLTMgLSAtMDMgMjAwNCBKdW4KKyAtNCAtIC0wNCAyMDA0IEp1biAxMworLS0zIEFyIC0wMy8tMDIKKystMyBBIC0wMy8tMDIKKyBaIEFtZXJpY2EvQXJnZW50aW5hL0xhX1Jpb2phIC00OjI3OjI0IC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5MSBNYXIKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk5MSBNYXIKKyAtNCAtIC0wNCAxOTkxIE1heSA3CistLTMgQXIgLTAzLy0wMiAxOTk5IE8gMworLS00IEFyIC0wNC8tMDMgMjAwMCBNYXIgMworKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisgLTMgLSAtMDMgMjAwNCBKdW4KKyAtNCAtIC0wNCAyMDA0IEp1biAyMAorLS0zIEFyIC0wMy8tMDIgMjAwOCBPIDE4CisrLTMgQSAtMDMvLTAyIDIwMDggTyAxOAorIC0zIC0gLTAzCisgWiBBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbiAtNDozNDo0IC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5MSBNYXIKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk5MSBNYXIKKyAtNCAtIC0wNCAxOTkxIE1heSA3CistLTMgQXIgLTAzLy0wMiAxOTk5IE8gMworLS00IEFyIC0wNC8tMDMgMjAwMCBNYXIgMworKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisgLTMgLSAtMDMgMjAwNCBNYXkgMzEKKyAtNCAtIC0wNCAyMDA0IEp1bCAyNQorLS0zIEFyIC0wMy8tMDIgMjAwOCBPIDE4CisrLTMgQSAtMDMvLTAyIDIwMDggTyAxOAorIC0zIC0gLTAzCisgWiBBbWVyaWNhL0FyZ2VudGluYS9KdWp1eSAtNDoyMToxMiAtIExNVCAxODk0IE8gMzEKKyAtNDoxNjo0OCAtIENNVCAxOTIwIE1heQorIC00IC0gLTA0IDE5MzAgRAorLS00IEFyIC0wNC8tMDMgMTk2OSBPIDUKKy0tMyBBciAtMDMvLTAyIDE5OTAgTWFyIDQKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk5MCBNYXIgNAorIC00IC0gLTA0IDE5OTAgTyAyOAorIC00IDEgLTAzIDE5OTEgTWFyIDE3CisgLTQgLSAtMDQgMTk5MSBPIDYKKyAtMyAxIC0wMiAxOTkyCistLTMgQXIgLTAzLy0wMiAxOTk5IE8gMworLS00IEFyIC0wNC8tMDMgMjAwMCBNYXIgMworLS0zIEFyIC0wMy8tMDIgMjAwOCBPIDE4CisrLTMgQSAtMDMvLTAyIDE5OTkgTyAzCisrLTQgQSAtMDQvLTAzIDIwMDAgTWFyIDMKKystMyBBIC0wMy8tMDIgMjAwOCBPIDE4CisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYSAtNDoyMzo4IC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5MSBNYXIgMworKy00IEEgLTA0Ly0wMyAxOTY5IE8gNQorKy0zIEEgLTAzLy0wMiAxOTkxIE1hciAzCisgLTQgLSAtMDQgMTk5MSBPIDIwCistLTMgQXIgLTAzLy0wMiAxOTk5IE8gMworLS00IEFyIC0wNC8tMDMgMjAwMCBNYXIgMworKy0zIEEgLTAzLy0wMiAxOTk5IE8gMworKy00IEEgLTA0Ly0wMyAyMDAwIE1hciAzCisgLTMgLSAtMDMgMjAwNCBKdW4KKyAtNCAtIC0wNCAyMDA0IEp1biAyMAorLS0zIEFyIC0wMy8tMDIgMjAwOCBPIDE4CisrLTMgQSAtMDMvLTAyIDIwMDggTyAxOAorIC0zIC0gLTAzCisgWiBBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phIC00OjM1OjE2IC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5MCBNYXIgNAorKy00IEEgLTA0Ly0wMyAxOTY5IE8gNQorKy0zIEEgLTAzLy0wMiAxOTkwIE1hciA0CisgLTQgLSAtMDQgMTk5MCBPIDE1CisgLTQgMSAtMDMgMTk5MSBNYXIKKyAtNCAtIC0wNCAxOTkxIE8gMTUKKyAtNCAxIC0wMyAxOTkyIE1hcgorIC00IC0gLTA0IDE5OTIgTyAxOAorLS0zIEFyIC0wMy8tMDIgMTk5OSBPIDMKKy0tNCBBciAtMDQvLTAzIDIwMDAgTWFyIDMKKystMyBBIC0wMy8tMDIgMTk5OSBPIDMKKystNCBBIC0wNC8tMDMgMjAwMCBNYXIgMworIC0zIC0gLTAzIDIwMDQgTWF5IDIzCisgLTQgLSAtMDQgMjAwNCBTIDI2CistLTMgQXIgLTAzLy0wMiAyMDA4IE8gMTgKKystMyBBIC0wMy8tMDIgMjAwOCBPIDE4CisgLTMgLSAtMDMKKy1SIEFzIDIwMDggMjAwOSAtIE1hciBTdW4+PTggMCAwIC0KKy1SIEFzIDIwMDcgMjAwOCAtIE8gU3VuPj04IDAgMSAtCisrUiBTYSAyMDA4IDIwMDkgLSBNYXIgU3VuPj04IDAgMCAtCisrUiBTYSAyMDA3IDIwMDggLSBPIFN1bj49OCAwIDEgLQorIFogQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMgLTQ6MjU6MjQgLSBMTVQgMTg5NCBPIDMxCisgLTQ6MTY6NDggLSBDTVQgMTkyMCBNYXkKKyAtNCAtIC0wNCAxOTMwIEQKKy0tNCBBciAtMDQvLTAzIDE5NjkgTyA1CistLTMgQXIgLTAzLy0wMiAxOTkwCisrLTQgQSAtMDQvLTAzIDE5NjkgTyA1CisrLTMgQSAtMDMvLTAyIDE5OTAKKyAtMyAxIC0wMiAxOTkwIE1hciAxNAorIC00IC0gLTA0IDE5OTAgTyAxNQorIC00IDEgLTAzIDE5OTEgTWFyCitAQCAtMzU5MCwyODYgKzM2MDcsMjg4IEBAIFogQW1lcmljYS9BcmdlbnRpbmEvU2FuX0x1aXMgLTQ6MjU6MjQgLSBMTVQgMTg5NCBPIDMxCisgLTQgMSAtMDMgMjAwMCBNYXIgMworIC0zIC0gLTAzIDIwMDQgTWF5IDMxCisgLTQgLSAtMDQgMjAwNCBKdWwgMjUKKy0tMyBBciAtMDMvLTAyIDIwMDggSmEgMjEKKy0tNCBBcyAtMDQvLTAzIDIwMDkgTyAxMQorKy0zIEEgLTAzLy0wMiAyMDA4IEphIDIxCisrLTQgU2EgLTA0Ly0wMyAyMDA5IE8gMTEKKyAtMyAtIC0wMworIFogQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zIC00OjM2OjUyIC0gTE1UIDE4OTQgTyAzMQorIC00OjE2OjQ4IC0gQ01UIDE5MjAgTWF5CisgLTQgLSAtMDQgMTkzMCBECistLTQgQXIgLTA0Ly0wMyAxOTY5IE8gNQorLS0zIEFyIC0wMy8tMDIgMTk5OSBPIDMKKy0tNCBBciAtMDQvLTAzIDIwMDAgTWFyIDMKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk5OSBPIDMKKystNCBBIC0wNC8tMDMgMjAwMCBNYXIgMworIC0zIC0gLTAzIDIwMDQgSnVuCisgLTQgLSAtMDQgMjAwNCBKdW4gMjAKKy0tMyBBciAtMDMvLTAyIDIwMDggTyAxOAorKy0zIEEgLTAzLy0wMiAyMDA4IE8gMTgKKyAtMyAtIC0wMworIFogQW1lcmljYS9BcmdlbnRpbmEvVXNodWFpYSAtNDozMzoxMiAtIExNVCAxODk0IE8gMzEKKyAtNDoxNjo0OCAtIENNVCAxOTIwIE1heQorIC00IC0gLTA0IDE5MzAgRAorLS00IEFyIC0wNC8tMDMgMTk2OSBPIDUKKy0tMyBBciAtMDMvLTAyIDE5OTkgTyAzCistLTQgQXIgLTA0Ly0wMyAyMDAwIE1hciAzCisrLTQgQSAtMDQvLTAzIDE5NjkgTyA1CisrLTMgQSAtMDMvLTAyIDE5OTkgTyAzCisrLTQgQSAtMDQvLTAzIDIwMDAgTWFyIDMKKyAtMyAtIC0wMyAyMDA0IE1heSAzMAorIC00IC0gLTA0IDIwMDQgSnVuIDIwCistLTMgQXIgLTAzLy0wMiAyMDA4IE8gMTgKKystMyBBIC0wMy8tMDIgMjAwOCBPIDE4CisgLTMgLSAtMDMKKyBMaSBBbWVyaWNhL0N1cmFjYW8gQW1lcmljYS9BcnViYQorIFogQW1lcmljYS9MYV9QYXogLTQ6MzI6MzYgLSBMTVQgMTg5MAorIC00OjMyOjM2IC0gQ01UIDE5MzEgTyAxNQorIC00OjMyOjM2IDEgQlNUIDE5MzIgTWFyIDIxCisgLTQgLSAtMDQKKy1SIEF0IDE5MzEgbyAtIE8gMyAxMSAxIC0KKy1SIEF0IDE5MzIgMTkzMyAtIEFwIDEgMCAwIC0KKy1SIEF0IDE5MzIgbyAtIE8gMyAwIDEgLQorLVIgQXQgMTk0OSAxOTUyIC0gRCAxIDAgMSAtCistUiBBdCAxOTUwIG8gLSBBcCAxNiAxIDAgLQorLVIgQXQgMTk1MSAxOTUyIC0gQXAgMSAwIDAgLQorLVIgQXQgMTk1MyBvIC0gTWFyIDEgMCAwIC0KKy1SIEF0IDE5NjMgbyAtIEQgOSAwIDEgLQorLVIgQXQgMTk2NCBvIC0gTWFyIDEgMCAwIC0KKy1SIEF0IDE5NjUgbyAtIEphIDMxIDAgMSAtCistUiBBdCAxOTY1IG8gLSBNYXIgMzEgMCAwIC0KKy1SIEF0IDE5NjUgbyAtIEQgMSAwIDEgLQorLVIgQXQgMTk2NiAxOTY4IC0gTWFyIDEgMCAwIC0KKy1SIEF0IDE5NjYgMTk2NyAtIE4gMSAwIDEgLQorLVIgQXQgMTk4NSBvIC0gTiAyIDAgMSAtCistUiBBdCAxOTg2IG8gLSBNYXIgMTUgMCAwIC0KKy1SIEF0IDE5ODYgbyAtIE8gMjUgMCAxIC0KKy1SIEF0IDE5ODcgbyAtIEYgMTQgMCAwIC0KKy1SIEF0IDE5ODcgbyAtIE8gMjUgMCAxIC0KKy1SIEF0IDE5ODggbyAtIEYgNyAwIDAgLQorLVIgQXQgMTk4OCBvIC0gTyAxNiAwIDEgLQorLVIgQXQgMTk4OSBvIC0gSmEgMjkgMCAwIC0KKy1SIEF0IDE5ODkgbyAtIE8gMTUgMCAxIC0KKy1SIEF0IDE5OTAgbyAtIEYgMTEgMCAwIC0KKy1SIEF0IDE5OTAgbyAtIE8gMjEgMCAxIC0KKy1SIEF0IDE5OTEgbyAtIEYgMTcgMCAwIC0KKy1SIEF0IDE5OTEgbyAtIE8gMjAgMCAxIC0KKy1SIEF0IDE5OTIgbyAtIEYgOSAwIDAgLQorLVIgQXQgMTk5MiBvIC0gTyAyNSAwIDEgLQorLVIgQXQgMTk5MyBvIC0gSmEgMzEgMCAwIC0KKy1SIEF0IDE5OTMgMTk5NSAtIE8gU3VuPj0xMSAwIDEgLQorLVIgQXQgMTk5NCAxOTk1IC0gRiBTdW4+PTE1IDAgMCAtCistUiBBdCAxOTk2IG8gLSBGIDExIDAgMCAtCistUiBBdCAxOTk2IG8gLSBPIDYgMCAxIC0KKy1SIEF0IDE5OTcgbyAtIEYgMTYgMCAwIC0KKy1SIEF0IDE5OTcgbyAtIE8gNiAwIDEgLQorLVIgQXQgMTk5OCBvIC0gTWFyIDEgMCAwIC0KKy1SIEF0IDE5OTggbyAtIE8gMTEgMCAxIC0KKy1SIEF0IDE5OTkgbyAtIEYgMjEgMCAwIC0KKy1SIEF0IDE5OTkgbyAtIE8gMyAwIDEgLQorLVIgQXQgMjAwMCBvIC0gRiAyNyAwIDAgLQorLVIgQXQgMjAwMCAyMDAxIC0gTyBTdW4+PTggMCAxIC0KKy1SIEF0IDIwMDEgMjAwNiAtIEYgU3VuPj0xNSAwIDAgLQorLVIgQXQgMjAwMiBvIC0gTiAzIDAgMSAtCistUiBBdCAyMDAzIG8gLSBPIDE5IDAgMSAtCistUiBBdCAyMDA0IG8gLSBOIDIgMCAxIC0KKy1SIEF0IDIwMDUgbyAtIE8gMTYgMCAxIC0KKy1SIEF0IDIwMDYgbyAtIE4gNSAwIDEgLQorLVIgQXQgMjAwNyBvIC0gRiAyNSAwIDAgLQorLVIgQXQgMjAwNyBvIC0gTyBTdW4+PTggMCAxIC0KKy1SIEF0IDIwMDggMjAxNyAtIE8gU3VuPj0xNSAwIDEgLQorLVIgQXQgMjAwOCAyMDExIC0gRiBTdW4+PTE1IDAgMCAtCistUiBBdCAyMDEyIG8gLSBGIFN1bj49MjIgMCAwIC0KKy1SIEF0IDIwMTMgMjAxNCAtIEYgU3VuPj0xNSAwIDAgLQorLVIgQXQgMjAxNSBvIC0gRiBTdW4+PTIyIDAgMCAtCistUiBBdCAyMDE2IDIwMjIgLSBGIFN1bj49MTUgMCAwIC0KKy1SIEF0IDIwMTggbWEgLSBOIFN1bj49MSAwIDEgLQorLVIgQXQgMjAyMyBvIC0gRiBTdW4+PTIyIDAgMCAtCistUiBBdCAyMDI0IDIwMjUgLSBGIFN1bj49MTUgMCAwIC0KKy1SIEF0IDIwMjYgbyAtIEYgU3VuPj0yMiAwIDAgLQorLVIgQXQgMjAyNyAyMDMzIC0gRiBTdW4+PTE1IDAgMCAtCistUiBBdCAyMDM0IG8gLSBGIFN1bj49MjIgMCAwIC0KKy1SIEF0IDIwMzUgMjAzNiAtIEYgU3VuPj0xNSAwIDAgLQorLVIgQXQgMjAzNyBvIC0gRiBTdW4+PTIyIDAgMCAtCistUiBBdCAyMDM4IG1hIC0gRiBTdW4+PTE1IDAgMCAtCisrUiBCIDE5MzEgbyAtIE8gMyAxMSAxIC0KKytSIEIgMTkzMiAxOTMzIC0gQXAgMSAwIDAgLQorK1IgQiAxOTMyIG8gLSBPIDMgMCAxIC0KKytSIEIgMTk0OSAxOTUyIC0gRCAxIDAgMSAtCisrUiBCIDE5NTAgbyAtIEFwIDE2IDEgMCAtCisrUiBCIDE5NTEgMTk1MiAtIEFwIDEgMCAwIC0KKytSIEIgMTk1MyBvIC0gTWFyIDEgMCAwIC0KKytSIEIgMTk2MyBvIC0gRCA5IDAgMSAtCisrUiBCIDE5NjQgbyAtIE1hciAxIDAgMCAtCisrUiBCIDE5NjUgbyAtIEphIDMxIDAgMSAtCisrUiBCIDE5NjUgbyAtIE1hciAzMSAwIDAgLQorK1IgQiAxOTY1IG8gLSBEIDEgMCAxIC0KKytSIEIgMTk2NiAxOTY4IC0gTWFyIDEgMCAwIC0KKytSIEIgMTk2NiAxOTY3IC0gTiAxIDAgMSAtCisrUiBCIDE5ODUgbyAtIE4gMiAwIDEgLQorK1IgQiAxOTg2IG8gLSBNYXIgMTUgMCAwIC0KKytSIEIgMTk4NiBvIC0gTyAyNSAwIDEgLQorK1IgQiAxOTg3IG8gLSBGIDE0IDAgMCAtCisrUiBCIDE5ODcgbyAtIE8gMjUgMCAxIC0KKytSIEIgMTk4OCBvIC0gRiA3IDAgMCAtCisrUiBCIDE5ODggbyAtIE8gMTYgMCAxIC0KKytSIEIgMTk4OSBvIC0gSmEgMjkgMCAwIC0KKytSIEIgMTk4OSBvIC0gTyAxNSAwIDEgLQorK1IgQiAxOTkwIG8gLSBGIDExIDAgMCAtCisrUiBCIDE5OTAgbyAtIE8gMjEgMCAxIC0KKytSIEIgMTk5MSBvIC0gRiAxNyAwIDAgLQorK1IgQiAxOTkxIG8gLSBPIDIwIDAgMSAtCisrUiBCIDE5OTIgbyAtIEYgOSAwIDAgLQorK1IgQiAxOTkyIG8gLSBPIDI1IDAgMSAtCisrUiBCIDE5OTMgbyAtIEphIDMxIDAgMCAtCisrUiBCIDE5OTMgMTk5NSAtIE8gU3VuPj0xMSAwIDEgLQorK1IgQiAxOTk0IDE5OTUgLSBGIFN1bj49MTUgMCAwIC0KKytSIEIgMTk5NiBvIC0gRiAxMSAwIDAgLQorK1IgQiAxOTk2IG8gLSBPIDYgMCAxIC0KKytSIEIgMTk5NyBvIC0gRiAxNiAwIDAgLQorK1IgQiAxOTk3IG8gLSBPIDYgMCAxIC0KKytSIEIgMTk5OCBvIC0gTWFyIDEgMCAwIC0KKytSIEIgMTk5OCBvIC0gTyAxMSAwIDEgLQorK1IgQiAxOTk5IG8gLSBGIDIxIDAgMCAtCisrUiBCIDE5OTkgbyAtIE8gMyAwIDEgLQorK1IgQiAyMDAwIG8gLSBGIDI3IDAgMCAtCisrUiBCIDIwMDAgMjAwMSAtIE8gU3VuPj04IDAgMSAtCisrUiBCIDIwMDEgMjAwNiAtIEYgU3VuPj0xNSAwIDAgLQorK1IgQiAyMDAyIG8gLSBOIDMgMCAxIC0KKytSIEIgMjAwMyBvIC0gTyAxOSAwIDEgLQorK1IgQiAyMDA0IG8gLSBOIDIgMCAxIC0KKytSIEIgMjAwNSBvIC0gTyAxNiAwIDEgLQorK1IgQiAyMDA2IG8gLSBOIDUgMCAxIC0KKytSIEIgMjAwNyBvIC0gRiAyNSAwIDAgLQorK1IgQiAyMDA3IG8gLSBPIFN1bj49OCAwIDEgLQorK1IgQiAyMDA4IDIwMTcgLSBPIFN1bj49MTUgMCAxIC0KKytSIEIgMjAwOCAyMDExIC0gRiBTdW4+PTE1IDAgMCAtCisrUiBCIDIwMTIgbyAtIEYgU3VuPj0yMiAwIDAgLQorK1IgQiAyMDEzIDIwMTQgLSBGIFN1bj49MTUgMCAwIC0KKytSIEIgMjAxNSBvIC0gRiBTdW4+PTIyIDAgMCAtCisrUiBCIDIwMTYgMjAyMiAtIEYgU3VuPj0xNSAwIDAgLQorK1IgQiAyMDE4IG1hIC0gTiBTdW4+PTEgMCAxIC0KKytSIEIgMjAyMyBvIC0gRiBTdW4+PTIyIDAgMCAtCisrUiBCIDIwMjQgMjAyNSAtIEYgU3VuPj0xNSAwIDAgLQorK1IgQiAyMDI2IG8gLSBGIFN1bj49MjIgMCAwIC0KKytSIEIgMjAyNyAyMDMzIC0gRiBTdW4+PTE1IDAgMCAtCisrUiBCIDIwMzQgbyAtIEYgU3VuPj0yMiAwIDAgLQorK1IgQiAyMDM1IDIwMzYgLSBGIFN1bj49MTUgMCAwIC0KKytSIEIgMjAzNyBvIC0gRiBTdW4+PTIyIDAgMCAtCisrUiBCIDIwMzggbWEgLSBGIFN1bj49MTUgMCAwIC0KKyBaIEFtZXJpY2EvTm9yb25oYSAtMjo5OjQwIC0gTE1UIDE5MTQKKy0tMiBBdCAtMDIvLTAxIDE5OTAgUyAxNworKy0yIEIgLTAyLy0wMSAxOTkwIFMgMTcKKyAtMiAtIC0wMiAxOTk5IFMgMzAKKy0tMiBBdCAtMDIvLTAxIDIwMDAgTyAxNQorKy0yIEIgLTAyLy0wMSAyMDAwIE8gMTUKKyAtMiAtIC0wMiAyMDAxIFMgMTMKKy0tMiBBdCAtMDIvLTAxIDIwMDIgTworKy0yIEIgLTAyLy0wMSAyMDAyIE8KKyAtMiAtIC0wMgorIFogQW1lcmljYS9CZWxlbSAtMzoxMzo1NiAtIExNVCAxOTE0CistLTMgQXQgLTAzLy0wMiAxOTg4IFMgMTIKKystMyBCIC0wMy8tMDIgMTk4OCBTIDEyCisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvU2FudGFyZW0gLTM6Mzg6NDggLSBMTVQgMTkxNAorLS00IEF0IC0wNC8tMDMgMTk4OCBTIDEyCisrLTQgQiAtMDQvLTAzIDE5ODggUyAxMgorIC00IC0gLTA0IDIwMDggSnVuIDI0CisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvRm9ydGFsZXphIC0yOjM0IC0gTE1UIDE5MTQKKy0tMyBBdCAtMDMvLTAyIDE5OTAgUyAxNworKy0zIEIgLTAzLy0wMiAxOTkwIFMgMTcKKyAtMyAtIC0wMyAxOTk5IFMgMzAKKy0tMyBBdCAtMDMvLTAyIDIwMDAgTyAyMgorKy0zIEIgLTAzLy0wMiAyMDAwIE8gMjIKKyAtMyAtIC0wMyAyMDAxIFMgMTMKKy0tMyBBdCAtMDMvLTAyIDIwMDIgTworKy0zIEIgLTAzLy0wMiAyMDAyIE8KKyAtMyAtIC0wMworIFogQW1lcmljYS9SZWNpZmUgLTI6MTk6MzYgLSBMTVQgMTkxNAorLS0zIEF0IC0wMy8tMDIgMTk5MCBTIDE3CisrLTMgQiAtMDMvLTAyIDE5OTAgUyAxNworIC0zIC0gLTAzIDE5OTkgUyAzMAorLS0zIEF0IC0wMy8tMDIgMjAwMCBPIDE1CisrLTMgQiAtMDMvLTAyIDIwMDAgTyAxNQorIC0zIC0gLTAzIDIwMDEgUyAxMworLS0zIEF0IC0wMy8tMDIgMjAwMiBPCisrLTMgQiAtMDMvLTAyIDIwMDIgTworIC0zIC0gLTAzCisgWiBBbWVyaWNhL0FyYWd1YWluYSAtMzoxMjo0OCAtIExNVCAxOTE0CistLTMgQXQgLTAzLy0wMiAxOTkwIFMgMTcKKystMyBCIC0wMy8tMDIgMTk5MCBTIDE3CisgLTMgLSAtMDMgMTk5NSBTIDE0CistLTMgQXQgLTAzLy0wMiAyMDAzIFMgMjQKKystMyBCIC0wMy8tMDIgMjAwMyBTIDI0CisgLTMgLSAtMDMgMjAxMiBPIDIxCistLTMgQXQgLTAzLy0wMiAyMDEzIFMKKystMyBCIC0wMy8tMDIgMjAxMyBTCisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvTWFjZWlvIC0yOjIyOjUyIC0gTE1UIDE5MTQKKy0tMyBBdCAtMDMvLTAyIDE5OTAgUyAxNworKy0zIEIgLTAzLy0wMiAxOTkwIFMgMTcKKyAtMyAtIC0wMyAxOTk1IE8gMTMKKy0tMyBBdCAtMDMvLTAyIDE5OTYgUyA0CisrLTMgQiAtMDMvLTAyIDE5OTYgUyA0CisgLTMgLSAtMDMgMTk5OSBTIDMwCistLTMgQXQgLTAzLy0wMiAyMDAwIE8gMjIKKystMyBCIC0wMy8tMDIgMjAwMCBPIDIyCisgLTMgLSAtMDMgMjAwMSBTIDEzCistLTMgQXQgLTAzLy0wMiAyMDAyIE8KKystMyBCIC0wMy8tMDIgMjAwMiBPCisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvQmFoaWEgLTI6MzQ6NCAtIExNVCAxOTE0CistLTMgQXQgLTAzLy0wMiAyMDAzIFMgMjQKKystMyBCIC0wMy8tMDIgMjAwMyBTIDI0CisgLTMgLSAtMDMgMjAxMSBPIDE2CistLTMgQXQgLTAzLy0wMiAyMDEyIE8gMjEKKystMyBCIC0wMy8tMDIgMjAxMiBPIDIxCisgLTMgLSAtMDMKKyBaIEFtZXJpY2EvU2FvX1BhdWxvIC0zOjY6MjggLSBMTVQgMTkxNAorLS0zIEF0IC0wMy8tMDIgMTk2MyBPIDIzCisrLTMgQiAtMDMvLTAyIDE5NjMgTyAyMworIC0zIDEgLTAyIDE5NjQKKy0tMyBBdCAtMDMvLTAyCisrLTMgQiAtMDMvLTAyCisgWiBBbWVyaWNhL0NhbXBvX0dyYW5kZSAtMzozODoyOCAtIExNVCAxOTE0CistLTQgQXQgLTA0Ly0wMworKy00IEIgLTA0Ly0wMworIFogQW1lcmljYS9DdWlhYmEgLTM6NDQ6MjAgLSBMTVQgMTkxNAorLS00IEF0IC0wNC8tMDMgMjAwMyBTIDI0CisrLTQgQiAtMDQvLTAzIDIwMDMgUyAyNAorIC00IC0gLTA0IDIwMDQgTworLS00IEF0IC0wNC8tMDMKKystNCBCIC0wNC8tMDMKKyBaIEFtZXJpY2EvUG9ydG9fVmVsaG8gLTQ6MTU6MzYgLSBMTVQgMTkxNAorLS00IEF0IC0wNC8tMDMgMTk4OCBTIDEyCisrLTQgQiAtMDQvLTAzIDE5ODggUyAxMgorIC00IC0gLTA0CisgWiBBbWVyaWNhL0JvYV9WaXN0YSAtNDoyOjQwIC0gTE1UIDE5MTQKKy0tNCBBdCAtMDQvLTAzIDE5ODggUyAxMgorKy00IEIgLTA0Ly0wMyAxOTg4IFMgMTIKKyAtNCAtIC0wNCAxOTk5IFMgMzAKKy0tNCBBdCAtMDQvLTAzIDIwMDAgTyAxNQorKy00IEIgLTA0Ly0wMyAyMDAwIE8gMTUKKyAtNCAtIC0wNAorIFogQW1lcmljYS9NYW5hdXMgLTQ6MDo0IC0gTE1UIDE5MTQKKy0tNCBBdCAtMDQvLTAzIDE5ODggUyAxMgorKy00IEIgLTA0Ly0wMyAxOTg4IFMgMTIKKyAtNCAtIC0wNCAxOTkzIFMgMjgKKy0tNCBBdCAtMDQvLTAzIDE5OTQgUyAyMgorKy00IEIgLTA0Ly0wMyAxOTk0IFMgMjIKKyAtNCAtIC0wNAorIFogQW1lcmljYS9FaXJ1bmVwZSAtNDozOToyOCAtIExNVCAxOTE0CistLTUgQXQgLTA1Ly0wNCAxOTg4IFMgMTIKKystNSBCIC0wNS8tMDQgMTk4OCBTIDEyCisgLTUgLSAtMDUgMTk5MyBTIDI4CistLTUgQXQgLTA1Ly0wNCAxOTk0IFMgMjIKKystNSBCIC0wNS8tMDQgMTk5NCBTIDIyCisgLTUgLSAtMDUgMjAwOCBKdW4gMjQKKyAtNCAtIC0wNCAyMDEzIE4gMTAKKyAtNSAtIC0wNQorIFogQW1lcmljYS9SaW9fQnJhbmNvIC00OjMxOjEyIC0gTE1UIDE5MTQKKy0tNSBBdCAtMDUvLTA0IDE5ODggUyAxMgorKy01IEIgLTA1Ly0wNCAxOTg4IFMgMTIKKyAtNSAtIC0wNSAyMDA4IEp1biAyNAorIC00IC0gLTA0IDIwMTMgTiAxMAorIC01IC0gLTA1CistUiBBdSAxOTI3IDE5MzEgLSBTIDEgMCAxIC0KKy1SIEF1IDE5MjggMTkzMiAtIEFwIDEgMCAwIC0KKy1SIEF1IDE5NjggbyAtIE4gMyA0dSAxIC0KKy1SIEF1IDE5NjkgbyAtIE1hciAzMCAzdSAwIC0KKy1SIEF1IDE5NjkgbyAtIE4gMjMgNHUgMSAtCistUiBBdSAxOTcwIG8gLSBNYXIgMjkgM3UgMCAtCistUiBBdSAxOTcxIG8gLSBNYXIgMTQgM3UgMCAtCistUiBBdSAxOTcwIDE5NzIgLSBPIFN1bj49OSA0dSAxIC0KKy1SIEF1IDE5NzIgMTk4NiAtIE1hciBTdW4+PTkgM3UgMCAtCistUiBBdSAxOTczIG8gLSBTIDMwIDR1IDEgLQorLVIgQXUgMTk3NCAxOTg3IC0gTyBTdW4+PTkgNHUgMSAtCistUiBBdSAxOTg3IG8gLSBBcCAxMiAzdSAwIC0KKy1SIEF1IDE5ODggMTk5MCAtIE1hciBTdW4+PTkgM3UgMCAtCistUiBBdSAxOTg4IDE5ODkgLSBPIFN1bj49OSA0dSAxIC0KKy1SIEF1IDE5OTAgbyAtIFMgMTYgNHUgMSAtCistUiBBdSAxOTkxIDE5OTYgLSBNYXIgU3VuPj05IDN1IDAgLQorLVIgQXUgMTk5MSAxOTk3IC0gTyBTdW4+PTkgNHUgMSAtCistUiBBdSAxOTk3IG8gLSBNYXIgMzAgM3UgMCAtCistUiBBdSAxOTk4IG8gLSBNYXIgU3VuPj05IDN1IDAgLQorLVIgQXUgMTk5OCBvIC0gUyAyNyA0dSAxIC0KKy1SIEF1IDE5OTkgbyAtIEFwIDQgM3UgMCAtCistUiBBdSAxOTk5IDIwMTAgLSBPIFN1bj49OSA0dSAxIC0KKy1SIEF1IDIwMDAgMjAwNyAtIE1hciBTdW4+PTkgM3UgMCAtCistUiBBdSAyMDA4IG8gLSBNYXIgMzAgM3UgMCAtCistUiBBdSAyMDA5IG8gLSBNYXIgU3VuPj05IDN1IDAgLQorLVIgQXUgMjAxMCBvIC0gQXAgU3VuPj0xIDN1IDAgLQorLVIgQXUgMjAxMSBvIC0gTWF5IFN1bj49MiAzdSAwIC0KKy1SIEF1IDIwMTEgbyAtIEF1IFN1bj49MTYgNHUgMSAtCistUiBBdSAyMDEyIDIwMTQgLSBBcCBTdW4+PTIzIDN1IDAgLQorLVIgQXUgMjAxMiAyMDE0IC0gUyBTdW4+PTIgNHUgMSAtCistUiBBdSAyMDE2IG1hIC0gTWF5IFN1bj49OSAzdSAwIC0KKy1SIEF1IDIwMTYgbWEgLSBBdSBTdW4+PTkgNHUgMSAtCisrUiB4IDE5MjcgMTkzMSAtIFMgMSAwIDEgLQorK1IgeCAxOTI4IDE5MzIgLSBBcCAxIDAgMCAtCisrUiB4IDE5NjggbyAtIE4gMyA0dSAxIC0KKytSIHggMTk2OSBvIC0gTWFyIDMwIDN1IDAgLQorK1IgeCAxOTY5IG8gLSBOIDIzIDR1IDEgLQorK1IgeCAxOTcwIG8gLSBNYXIgMjkgM3UgMCAtCisrUiB4IDE5NzEgbyAtIE1hciAxNCAzdSAwIC0KKytSIHggMTk3MCAxOTcyIC0gTyBTdW4+PTkgNHUgMSAtCisrUiB4IDE5NzIgMTk4NiAtIE1hciBTdW4+PTkgM3UgMCAtCisrUiB4IDE5NzMgbyAtIFMgMzAgNHUgMSAtCisrUiB4IDE5NzQgMTk4NyAtIE8gU3VuPj05IDR1IDEgLQorK1IgeCAxOTg3IG8gLSBBcCAxMiAzdSAwIC0KKytSIHggMTk4OCAxOTkwIC0gTWFyIFN1bj49OSAzdSAwIC0KKytSIHggMTk4OCAxOTg5IC0gTyBTdW4+PTkgNHUgMSAtCisrUiB4IDE5OTAgbyAtIFMgMTYgNHUgMSAtCisrUiB4IDE5OTEgMTk5NiAtIE1hciBTdW4+PTkgM3UgMCAtCisrUiB4IDE5OTEgMTk5NyAtIE8gU3VuPj05IDR1IDEgLQorK1IgeCAxOTk3IG8gLSBNYXIgMzAgM3UgMCAtCisrUiB4IDE5OTggbyAtIE1hciBTdW4+PTkgM3UgMCAtCisrUiB4IDE5OTggbyAtIFMgMjcgNHUgMSAtCisrUiB4IDE5OTkgbyAtIEFwIDQgM3UgMCAtCisrUiB4IDE5OTkgMjAxMCAtIE8gU3VuPj05IDR1IDEgLQorK1IgeCAyMDAwIDIwMDcgLSBNYXIgU3VuPj05IDN1IDAgLQorK1IgeCAyMDA4IG8gLSBNYXIgMzAgM3UgMCAtCisrUiB4IDIwMDkgbyAtIE1hciBTdW4+PTkgM3UgMCAtCisrUiB4IDIwMTAgbyAtIEFwIFN1bj49MSAzdSAwIC0KKytSIHggMjAxMSBvIC0gTWF5IFN1bj49MiAzdSAwIC0KKytSIHggMjAxMSBvIC0gQXUgU3VuPj0xNiA0dSAxIC0KKytSIHggMjAxMiAyMDE0IC0gQXAgU3VuPj0yMyAzdSAwIC0KKytSIHggMjAxMiAyMDE0IC0gUyBTdW4+PTIgNHUgMSAtCisrUiB4IDIwMTYgMjAxOCAtIE1heSBTdW4+PTkgM3UgMCAtCisrUiB4IDIwMTYgMjAxOCAtIEF1IFN1bj49OSA0dSAxIC0KKytSIHggMjAxOSBtYSAtIEFwIFN1bj49MiAzdSAwIC0KKytSIHggMjAxOSBtYSAtIFMgU3VuPj0yIDR1IDEgLQorIFogQW1lcmljYS9TYW50aWFnbyAtNDo0Mjo0NiAtIExNVCAxODkwCisgLTQ6NDI6NDYgLSBTTVQgMTkxMCBKYSAxMAorIC01IC0gLTA1IDE5MTYgSnVsCisgLTQ6NDI6NDYgLSBTTVQgMTkxOCBTIDEwCisgLTQgLSAtMDQgMTkxOSBKdWwKKyAtNDo0Mjo0NiAtIFNNVCAxOTI3IFMKKy0tNSBBdSAtMDUvLTA0IDE5MzIgUworKy01IHggLTA1Ly0wNCAxOTMyIFMKKyAtNCAtIC0wNCAxOTQyIEp1bgorIC01IC0gLTA1IDE5NDIgQXUKKyAtNCAtIC0wNCAxOTQ2IEp1bCAxNQorIC00IDEgLTAzIDE5NDYgUworIC00IC0gLTA0IDE5NDcgQXAKKyAtNSAtIC0wNSAxOTQ3IE1heSAyMSAyMworLS00IEF1IC0wNC8tMDMKKystNCB4IC0wNC8tMDMKKyBaIEFtZXJpY2EvUHVudGFfQXJlbmFzIC00OjQzOjQwIC0gTE1UIDE4OTAKKyAtNDo0Mjo0NiAtIFNNVCAxOTEwIEphIDEwCisgLTUgLSAtMDUgMTkxNiBKdWwKKyAtNDo0Mjo0NiAtIFNNVCAxOTE4IFMgMTAKKyAtNCAtIC0wNCAxOTE5IEp1bAorIC00OjQyOjQ2IC0gU01UIDE5MjcgUworLS01IEF1IC0wNS8tMDQgMTkzMiBTCisrLTUgeCAtMDUvLTA0IDE5MzIgUworIC00IC0gLTA0IDE5NDIgSnVuCisgLTUgLSAtMDUgMTk0MiBBdQorIC00IC0gLTA0IDE5NDcgQXAKKyAtNSAtIC0wNSAxOTQ3IE1heSAyMSAyMworLS00IEF1IC0wNC8tMDMgMjAxNiBEIDQKKystNCB4IC0wNC8tMDMgMjAxNiBEIDQKKyAtMyAtIC0wMworIFogUGFjaWZpYy9FYXN0ZXIgLTc6MTc6MjggLSBMTVQgMTg5MAorIC03OjE3OjI4IC0gRU1UIDE5MzIgUworLS03IEF1IC0wNy8tMDYgMTk4MiBNYXIgMTQgM3UKKy0tNiBBdSAtMDYvLTA1CisrLTcgeCAtMDcvLTA2IDE5ODIgTWFyIDE0IDN1CisrLTYgeCAtMDYvLTA1CisgWiBBbnRhcmN0aWNhL1BhbG1lciAwIC0gLTAwIDE5NjUKKy0tNCBBciAtMDQvLTAzIDE5NjkgTyA1CistLTMgQXIgLTAzLy0wMiAxOTgyIE1heQorLS00IEF1IC0wNC8tMDMgMjAxNiBEIDQKKystNCBBIC0wNC8tMDMgMTk2OSBPIDUKKystMyBBIC0wMy8tMDIgMTk4MiBNYXkKKystNCB4IC0wNC8tMDMgMjAxNiBEIDQKKyAtMyAtIC0wMworLVIgQXYgMTk5MiBvIC0gTWF5IDMgMCAxIC0KKy1SIEF2IDE5OTMgbyAtIEFwIDQgMCAwIC0KKytSIENPIDE5OTIgbyAtIE1heSAzIDAgMSAtCisrUiBDTyAxOTkzIG8gLSBBcCA0IDAgMCAtCisgWiBBbWVyaWNhL0JvZ290YSAtNDo1NjoxNiAtIExNVCAxODg0IE1hciAxMworIC00OjU2OjE2IC0gQk1UIDE5MTQgTiAyMworLS01IEF2IC0wNS8tMDQKKystNSBDTyAtMDUvLTA0CisgWiBBbWVyaWNhL0N1cmFjYW8gLTQ6MzU6NDcgLSBMTVQgMTkxMiBGIDEyCisgLTQ6MzAgLSAtMDQzMCAxOTY1CisgLTQgLSBBU1QKKyBMaSBBbWVyaWNhL0N1cmFjYW8gQW1lcmljYS9Mb3dlcl9QcmluY2VzCisgTGkgQW1lcmljYS9DdXJhY2FvIEFtZXJpY2EvS3JhbGVuZGlqaworLVIgQXcgMTk5MiBvIC0gTiAyOCAwIDEgLQorLVIgQXcgMTk5MyBvIC0gRiA1IDAgMCAtCisrUiBFQyAxOTkyIG8gLSBOIDI4IDAgMSAtCisrUiBFQyAxOTkzIG8gLSBGIDUgMCAwIC0KKyBaIEFtZXJpY2EvR3VheWFxdWlsIC01OjE5OjIwIC0gTE1UIDE4OTAKKyAtNToxNCAtIFFNVCAxOTMxCistLTUgQXcgLTA1Ly0wNAorKy01IEVDIC0wNS8tMDQKKyBaIFBhY2lmaWMvR2FsYXBhZ29zIC01OjU4OjI0IC0gTE1UIDE5MzEKKyAtNSAtIC0wNSAxOTg2CistLTYgQXcgLTA2Ly0wNQorLVIgQXggMTkzNyAxOTM4IC0gUyBsYXN0U3VuIDAgMSAtCistUiBBeCAxOTM4IDE5NDIgLSBNYXIgU3VuPj0xOSAwIDAgLQorLVIgQXggMTkzOSBvIC0gTyAxIDAgMSAtCistUiBBeCAxOTQwIDE5NDIgLSBTIGxhc3RTdW4gMCAxIC0KKy1SIEF4IDE5NDMgbyAtIEphIDEgMCAwIC0KKy1SIEF4IDE5ODMgbyAtIFMgbGFzdFN1biAwIDEgLQorLVIgQXggMTk4NCAxOTg1IC0gQXAgbGFzdFN1biAwIDAgLQorLVIgQXggMTk4NCBvIC0gUyAxNiAwIDEgLQorLVIgQXggMTk4NSAyMDAwIC0gUyBTdW4+PTkgMCAxIC0KKy1SIEF4IDE5ODYgMjAwMCAtIEFwIFN1bj49MTYgMCAwIC0KKy1SIEF4IDIwMDEgMjAxMCAtIEFwIFN1bj49MTUgMiAwIC0KKy1SIEF4IDIwMDEgMjAxMCAtIFMgU3VuPj0xIDIgMSAtCisrLTYgRUMgLTA2Ly0wNQorK1IgRksgMTkzNyAxOTM4IC0gUyBsYXN0U3VuIDAgMSAtCisrUiBGSyAxOTM4IDE5NDIgLSBNYXIgU3VuPj0xOSAwIDAgLQorK1IgRksgMTkzOSBvIC0gTyAxIDAgMSAtCisrUiBGSyAxOTQwIDE5NDIgLSBTIGxhc3RTdW4gMCAxIC0KKytSIEZLIDE5NDMgbyAtIEphIDEgMCAwIC0KKytSIEZLIDE5ODMgbyAtIFMgbGFzdFN1biAwIDEgLQorK1IgRksgMTk4NCAxOTg1IC0gQXAgbGFzdFN1biAwIDAgLQorK1IgRksgMTk4NCBvIC0gUyAxNiAwIDEgLQorK1IgRksgMTk4NSAyMDAwIC0gUyBTdW4+PTkgMCAxIC0KKytSIEZLIDE5ODYgMjAwMCAtIEFwIFN1bj49MTYgMCAwIC0KKytSIEZLIDIwMDEgMjAxMCAtIEFwIFN1bj49MTUgMiAwIC0KKytSIEZLIDIwMDEgMjAxMCAtIFMgU3VuPj0xIDIgMSAtCisgWiBBdGxhbnRpYy9TdGFubGV5IC0zOjUxOjI0IC0gTE1UIDE4OTAKKyAtMzo1MToyNCAtIFNNVCAxOTEyIE1hciAxMgorLS00IEF4IC0wNC8tMDMgMTk4MyBNYXkKKy0tMyBBeCAtMDMvLTAyIDE5ODUgUyAxNQorLS00IEF4IC0wNC8tMDMgMjAxMCBTIDUgMgorKy00IEZLIC0wNC8tMDMgMTk4MyBNYXkKKystMyBGSyAtMDMvLTAyIDE5ODUgUyAxNQorKy00IEZLIC0wNC8tMDMgMjAxMCBTIDUgMgorIC0zIC0gLTAzCisgWiBBbWVyaWNhL0NheWVubmUgLTM6Mjk6MjAgLSBMTVQgMTkxMSBKdWwKKyAtNCAtIC0wNCAxOTY3IE8KK0BAIC0zODc4LDQ2ICszODk3LDQ2IEBAIFogQW1lcmljYS9HdXlhbmEgLTM6NTI6NDAgLSBMTVQgMTkxNSBNYXIKKyAtMzo0NSAtIC0wMzQ1IDE5NzUgSnVsIDMxCisgLTMgLSAtMDMgMTk5MQorIC00IC0gLTA0CistUiBBeSAxOTc1IDE5ODggLSBPIDEgMCAxIC0KKy1SIEF5IDE5NzUgMTk3OCAtIE1hciAxIDAgMCAtCistUiBBeSAxOTc5IDE5OTEgLSBBcCAxIDAgMCAtCistUiBBeSAxOTg5IG8gLSBPIDIyIDAgMSAtCistUiBBeSAxOTkwIG8gLSBPIDEgMCAxIC0KKy1SIEF5IDE5OTEgbyAtIE8gNiAwIDEgLQorLVIgQXkgMTk5MiBvIC0gTWFyIDEgMCAwIC0KKy1SIEF5IDE5OTIgbyAtIE8gNSAwIDEgLQorLVIgQXkgMTk5MyBvIC0gTWFyIDMxIDAgMCAtCistUiBBeSAxOTkzIDE5OTUgLSBPIDEgMCAxIC0KKy1SIEF5IDE5OTQgMTk5NSAtIEYgbGFzdFN1biAwIDAgLQorLVIgQXkgMTk5NiBvIC0gTWFyIDEgMCAwIC0KKy1SIEF5IDE5OTYgMjAwMSAtIE8gU3VuPj0xIDAgMSAtCistUiBBeSAxOTk3IG8gLSBGIGxhc3RTdW4gMCAwIC0KKy1SIEF5IDE5OTggMjAwMSAtIE1hciBTdW4+PTEgMCAwIC0KKy1SIEF5IDIwMDIgMjAwNCAtIEFwIFN1bj49MSAwIDAgLQorLVIgQXkgMjAwMiAyMDAzIC0gUyBTdW4+PTEgMCAxIC0KKy1SIEF5IDIwMDQgMjAwOSAtIE8gU3VuPj0xNSAwIDEgLQorLVIgQXkgMjAwNSAyMDA5IC0gTWFyIFN1bj49OCAwIDAgLQorLVIgQXkgMjAxMCBtYSAtIE8gU3VuPj0xIDAgMSAtCistUiBBeSAyMDEwIDIwMTIgLSBBcCBTdW4+PTggMCAwIC0KKy1SIEF5IDIwMTMgbWEgLSBNYXIgU3VuPj0yMiAwIDAgLQorK1IgeSAxOTc1IDE5ODggLSBPIDEgMCAxIC0KKytSIHkgMTk3NSAxOTc4IC0gTWFyIDEgMCAwIC0KKytSIHkgMTk3OSAxOTkxIC0gQXAgMSAwIDAgLQorK1IgeSAxOTg5IG8gLSBPIDIyIDAgMSAtCisrUiB5IDE5OTAgbyAtIE8gMSAwIDEgLQorK1IgeSAxOTkxIG8gLSBPIDYgMCAxIC0KKytSIHkgMTk5MiBvIC0gTWFyIDEgMCAwIC0KKytSIHkgMTk5MiBvIC0gTyA1IDAgMSAtCisrUiB5IDE5OTMgbyAtIE1hciAzMSAwIDAgLQorK1IgeSAxOTkzIDE5OTUgLSBPIDEgMCAxIC0KKytSIHkgMTk5NCAxOTk1IC0gRiBsYXN0U3VuIDAgMCAtCisrUiB5IDE5OTYgbyAtIE1hciAxIDAgMCAtCisrUiB5IDE5OTYgMjAwMSAtIE8gU3VuPj0xIDAgMSAtCisrUiB5IDE5OTcgbyAtIEYgbGFzdFN1biAwIDAgLQorK1IgeSAxOTk4IDIwMDEgLSBNYXIgU3VuPj0xIDAgMCAtCisrUiB5IDIwMDIgMjAwNCAtIEFwIFN1bj49MSAwIDAgLQorK1IgeSAyMDAyIDIwMDMgLSBTIFN1bj49MSAwIDEgLQorK1IgeSAyMDA0IDIwMDkgLSBPIFN1bj49MTUgMCAxIC0KKytSIHkgMjAwNSAyMDA5IC0gTWFyIFN1bj49OCAwIDAgLQorK1IgeSAyMDEwIG1hIC0gTyBTdW4+PTEgMCAxIC0KKytSIHkgMjAxMCAyMDEyIC0gQXAgU3VuPj04IDAgMCAtCisrUiB5IDIwMTMgbWEgLSBNYXIgU3VuPj0yMiAwIDAgLQorIFogQW1lcmljYS9Bc3VuY2lvbiAtMzo1MDo0MCAtIExNVCAxODkwCisgLTM6NTA6NDAgLSBBTVQgMTkzMSBPIDEwCisgLTQgLSAtMDQgMTk3MiBPCisgLTMgLSAtMDMgMTk3NCBBcAorLS00IEF5IC0wNC8tMDMKKy1SIEF6IDE5MzggbyAtIEphIDEgMCAxIC0KKy1SIEF6IDE5MzggbyAtIEFwIDEgMCAwIC0KKy1SIEF6IDE5MzggMTkzOSAtIFMgbGFzdFN1biAwIDEgLQorLVIgQXogMTkzOSAxOTQwIC0gTWFyIFN1bj49MjQgMCAwIC0KKy1SIEF6IDE5ODYgMTk4NyAtIEphIDEgMCAxIC0KKy1SIEF6IDE5ODYgMTk4NyAtIEFwIDEgMCAwIC0KKy1SIEF6IDE5OTAgbyAtIEphIDEgMCAxIC0KKy1SIEF6IDE5OTAgbyAtIEFwIDEgMCAwIC0KKy1SIEF6IDE5OTQgbyAtIEphIDEgMCAxIC0KKy1SIEF6IDE5OTQgbyAtIEFwIDEgMCAwIC0KKystNCB5IC0wNC8tMDMKKytSIFBFIDE5MzggbyAtIEphIDEgMCAxIC0KKytSIFBFIDE5MzggbyAtIEFwIDEgMCAwIC0KKytSIFBFIDE5MzggMTkzOSAtIFMgbGFzdFN1biAwIDEgLQorK1IgUEUgMTkzOSAxOTQwIC0gTWFyIFN1bj49MjQgMCAwIC0KKytSIFBFIDE5ODYgMTk4NyAtIEphIDEgMCAxIC0KKytSIFBFIDE5ODYgMTk4NyAtIEFwIDEgMCAwIC0KKytSIFBFIDE5OTAgbyAtIEphIDEgMCAxIC0KKytSIFBFIDE5OTAgbyAtIEFwIDEgMCAwIC0KKytSIFBFIDE5OTQgbyAtIEphIDEgMCAxIC0KKytSIFBFIDE5OTQgbyAtIEFwIDEgMCAwIC0KKyBaIEFtZXJpY2EvTGltYSAtNTo4OjEyIC0gTE1UIDE4OTAKKyAtNTo4OjM2IC0gTE1UIDE5MDggSnVsIDI4CistLTUgQXogLTA1Ly0wNAorKy01IFBFIC0wNS8tMDQKKyBaIEF0bGFudGljL1NvdXRoX0dlb3JnaWEgLTI6MjY6OCAtIExNVCAxODkwCisgLTIgLSAtMDIKKyBaIEFtZXJpY2EvUGFyYW1hcmlibyAtMzo0MDo0MCAtIExNVCAxOTExCitAQCAtMzk0MCw2NSArMzk1OSw2NSBAQCBMaSBBbWVyaWNhL1BvcnRfb2ZfU3BhaW4gQW1lcmljYS9TdF9MdWNpYQorIExpIEFtZXJpY2EvUG9ydF9vZl9TcGFpbiBBbWVyaWNhL1N0X1Rob21hcworIExpIEFtZXJpY2EvUG9ydF9vZl9TcGFpbiBBbWVyaWNhL1N0X1ZpbmNlbnQKKyBMaSBBbWVyaWNhL1BvcnRfb2ZfU3BhaW4gQW1lcmljYS9Ub3J0b2xhCistUiBBISAxOTIzIDE5MjUgLSBPIDEgMCAwOjMwIC0KKy1SIEEhIDE5MjQgMTkyNiAtIEFwIDEgMCAwIC0KKy1SIEEhIDE5MzMgMTkzOCAtIE8gbGFzdFN1biAwIDA6MzAgLQorLVIgQSEgMTkzNCAxOTQxIC0gTWFyIGxhc3RTYXQgMjQgMCAtCistUiBBISAxOTM5IG8gLSBPIDEgMCAwOjMwIC0KKy1SIEEhIDE5NDAgbyAtIE8gMjcgMCAwOjMwIC0KKy1SIEEhIDE5NDEgbyAtIEF1IDEgMCAwOjMwIC0KKy1SIEEhIDE5NDIgbyAtIEQgMTQgMCAwOjMwIC0KKy1SIEEhIDE5NDMgbyAtIE1hciAxNCAwIDAgLQorLVIgQSEgMTk1OSBvIC0gTWF5IDI0IDAgMDozMCAtCistUiBBISAxOTU5IG8gLSBOIDE1IDAgMCAtCistUiBBISAxOTYwIG8gLSBKYSAxNyAwIDEgLQorLVIgQSEgMTk2MCBvIC0gTWFyIDYgMCAwIC0KKy1SIEEhIDE5NjUgbyAtIEFwIDQgMCAxIC0KKy1SIEEhIDE5NjUgbyAtIFMgMjYgMCAwIC0KKy1SIEEhIDE5NjggbyAtIE1heSAyNyAwIDA6MzAgLQorLVIgQSEgMTk2OCBvIC0gRCAxIDAgMCAtCistUiBBISAxOTcwIG8gLSBBcCAyNSAwIDEgLQorLVIgQSEgMTk3MCBvIC0gSnVuIDE0IDAgMCAtCistUiBBISAxOTcyIG8gLSBBcCAyMyAwIDEgLQorLVIgQSEgMTk3MiBvIC0gSnVsIDE2IDAgMCAtCistUiBBISAxOTc0IG8gLSBKYSAxMyAwIDE6MzAgLQorLVIgQSEgMTk3NCBvIC0gTWFyIDEwIDAgMDozMCAtCistUiBBISAxOTc0IG8gLSBTIDEgMCAwIC0KKy1SIEEhIDE5NzQgbyAtIEQgMjIgMCAxIC0KKy1SIEEhIDE5NzUgbyAtIE1hciAzMCAwIDAgLQorLVIgQSEgMTk3NiBvIC0gRCAxOSAwIDEgLQorLVIgQSEgMTk3NyBvIC0gTWFyIDYgMCAwIC0KKy1SIEEhIDE5NzcgbyAtIEQgNCAwIDEgLQorLVIgQSEgMTk3OCAxOTc5IC0gTWFyIFN1bj49MSAwIDAgLQorLVIgQSEgMTk3OCBvIC0gRCAxNyAwIDEgLQorLVIgQSEgMTk3OSBvIC0gQXAgMjkgMCAxIC0KKy1SIEEhIDE5ODAgbyAtIE1hciAxNiAwIDAgLQorLVIgQSEgMTk4NyBvIC0gRCAxNCAwIDEgLQorLVIgQSEgMTk4OCBvIC0gRiAyOCAwIDAgLQorLVIgQSEgMTk4OCBvIC0gRCAxMSAwIDEgLQorLVIgQSEgMTk4OSBvIC0gTWFyIDUgMCAwIC0KKy1SIEEhIDE5ODkgbyAtIE8gMjkgMCAxIC0KKy1SIEEhIDE5OTAgbyAtIEYgMjUgMCAwIC0KKy1SIEEhIDE5OTAgMTk5MSAtIE8gU3VuPj0yMSAwIDEgLQorLVIgQSEgMTk5MSAxOTkyIC0gTWFyIFN1bj49MSAwIDAgLQorLVIgQSEgMTk5MiBvIC0gTyAxOCAwIDEgLQorLVIgQSEgMTk5MyBvIC0gRiAyOCAwIDAgLQorLVIgQSEgMjAwNCBvIC0gUyAxOSAwIDEgLQorLVIgQSEgMjAwNSBvIC0gTWFyIDI3IDIgMCAtCistUiBBISAyMDA1IG8gLSBPIDkgMiAxIC0KKy1SIEEhIDIwMDYgMjAxNSAtIE1hciBTdW4+PTggMiAwIC0KKy1SIEEhIDIwMDYgMjAxNCAtIE8gU3VuPj0xIDIgMSAtCisrUiBVIDE5MjMgMTkyNSAtIE8gMSAwIDA6MzAgLQorK1IgVSAxOTI0IDE5MjYgLSBBcCAxIDAgMCAtCisrUiBVIDE5MzMgMTkzOCAtIE8gbGFzdFN1biAwIDA6MzAgLQorK1IgVSAxOTM0IDE5NDEgLSBNYXIgbGFzdFNhdCAyNCAwIC0KKytSIFUgMTkzOSBvIC0gTyAxIDAgMDozMCAtCisrUiBVIDE5NDAgbyAtIE8gMjcgMCAwOjMwIC0KKytSIFUgMTk0MSBvIC0gQXUgMSAwIDA6MzAgLQorK1IgVSAxOTQyIG8gLSBEIDE0IDAgMDozMCAtCisrUiBVIDE5NDMgbyAtIE1hciAxNCAwIDAgLQorK1IgVSAxOTU5IG8gLSBNYXkgMjQgMCAwOjMwIC0KKytSIFUgMTk1OSBvIC0gTiAxNSAwIDAgLQorK1IgVSAxOTYwIG8gLSBKYSAxNyAwIDEgLQorK1IgVSAxOTYwIG8gLSBNYXIgNiAwIDAgLQorK1IgVSAxOTY1IG8gLSBBcCA0IDAgMSAtCisrUiBVIDE5NjUgbyAtIFMgMjYgMCAwIC0KKytSIFUgMTk2OCBvIC0gTWF5IDI3IDAgMDozMCAtCisrUiBVIDE5NjggbyAtIEQgMSAwIDAgLQorK1IgVSAxOTcwIG8gLSBBcCAyNSAwIDEgLQorK1IgVSAxOTcwIG8gLSBKdW4gMTQgMCAwIC0KKytSIFUgMTk3MiBvIC0gQXAgMjMgMCAxIC0KKytSIFUgMTk3MiBvIC0gSnVsIDE2IDAgMCAtCisrUiBVIDE5NzQgbyAtIEphIDEzIDAgMTozMCAtCisrUiBVIDE5NzQgbyAtIE1hciAxMCAwIDA6MzAgLQorK1IgVSAxOTc0IG8gLSBTIDEgMCAwIC0KKytSIFUgMTk3NCBvIC0gRCAyMiAwIDEgLQorK1IgVSAxOTc1IG8gLSBNYXIgMzAgMCAwIC0KKytSIFUgMTk3NiBvIC0gRCAxOSAwIDEgLQorK1IgVSAxOTc3IG8gLSBNYXIgNiAwIDAgLQorK1IgVSAxOTc3IG8gLSBEIDQgMCAxIC0KKytSIFUgMTk3OCAxOTc5IC0gTWFyIFN1bj49MSAwIDAgLQorK1IgVSAxOTc4IG8gLSBEIDE3IDAgMSAtCisrUiBVIDE5NzkgbyAtIEFwIDI5IDAgMSAtCisrUiBVIDE5ODAgbyAtIE1hciAxNiAwIDAgLQorK1IgVSAxOTg3IG8gLSBEIDE0IDAgMSAtCisrUiBVIDE5ODggbyAtIEYgMjggMCAwIC0KKytSIFUgMTk4OCBvIC0gRCAxMSAwIDEgLQorK1IgVSAxOTg5IG8gLSBNYXIgNSAwIDAgLQorK1IgVSAxOTg5IG8gLSBPIDI5IDAgMSAtCisrUiBVIDE5OTAgbyAtIEYgMjUgMCAwIC0KKytSIFUgMTk5MCAxOTkxIC0gTyBTdW4+PTIxIDAgMSAtCisrUiBVIDE5OTEgMTk5MiAtIE1hciBTdW4+PTEgMCAwIC0KKytSIFUgMTk5MiBvIC0gTyAxOCAwIDEgLQorK1IgVSAxOTkzIG8gLSBGIDI4IDAgMCAtCisrUiBVIDIwMDQgbyAtIFMgMTkgMCAxIC0KKytSIFUgMjAwNSBvIC0gTWFyIDI3IDIgMCAtCisrUiBVIDIwMDUgbyAtIE8gOSAyIDEgLQorK1IgVSAyMDA2IDIwMTUgLSBNYXIgU3VuPj04IDIgMCAtCisrUiBVIDIwMDYgMjAxNCAtIE8gU3VuPj0xIDIgMSAtCisgWiBBbWVyaWNhL01vbnRldmlkZW8gLTM6NDQ6NTEgLSBMTVQgMTkwOCBKdW4gMTAKKyAtMzo0NDo1MSAtIE1NVCAxOTIwIE1heQorIC00IC0gLTA0IDE5MjMgTworLS0zOjMwIEEhIC0wMzMwLy0wMyAxOTQyIEQgMTQKKy0tMyBBISAtMDMvLTAyMzAgMTk2MAorLS0zIEEhIC0wMy8tMDIgMTk2OAorLS0zIEEhIC0wMy8tMDIzMCAxOTcwCistLTMgQSEgLTAzLy0wMiAxOTc0CistLTMgQSEgLTAzLy0wMTMwIDE5NzQgTWFyIDEwCistLTMgQSEgLTAzLy0wMjMwIDE5NzQgRCAyMgorLS0zIEEhIC0wMy8tMDIKKystMzozMCBVIC0wMzMwLy0wMyAxOTQyIEQgMTQKKystMyBVIC0wMy8tMDIzMCAxOTYwCisrLTMgVSAtMDMvLTAyIDE5NjgKKystMyBVIC0wMy8tMDIzMCAxOTcwCisrLTMgVSAtMDMvLTAyIDE5NzQKKystMyBVIC0wMy8tMDEzMCAxOTc0IE1hciAxMAorKy0zIFUgLTAzLy0wMjMwIDE5NzQgRCAyMgorKy0zIFUgLTAzLy0wMgorIFogQW1lcmljYS9DYXJhY2FzIC00OjI3OjQ0IC0gTE1UIDE4OTAKKyAtNDoyNzo0MCAtIENNVCAxOTEyIEYgMTIKKyAtNDozMCAtIC0wNDMwIDE5NjUKK2RpZmYgLS1naXQgYS9zcmMvdGltZXpvbmUva25vd25fYWJicmV2cy50eHQgYi9zcmMvdGltZXpvbmUva25vd25fYWJicmV2cy50eHQKK2luZGV4IDY3ZDJmMGIuLjJhZTQ0M2EgMTAwNjQ0CistLS0gYS9zcmMvdGltZXpvbmUva25vd25fYWJicmV2cy50eHQKKysrKyBiL3NyYy90aW1lem9uZS9rbm93bl9hYmJyZXZzLnR4dAorQEAgLTkyLDYgKzkyLDcgQEAgTlpTVAk0MzIwMAorIFBEVAktMjUyMDAJRAorIFBLVAkxODAwMAorIFBTVAktMjg4MDAKKytQU1QJMjg4MDAKKyBTQVNUCTcyMDAKKyBTU1QJLTM5NjAwCisgVUNUCTAKK2RpZmYgLS1naXQgYS9zcmMvdGltZXpvbmUvdHpuYW1lcy9BbWVyaWNhLnR4dCBiL3NyYy90aW1lem9uZS90em5hbWVzL0FtZXJpY2EudHh0CitpbmRleCAxYzVlYjFmLi4yNTk0YzM3IDEwMDY0NAorLS0tIGEvc3JjL3RpbWV6b25lL3R6bmFtZXMvQW1lcmljYS50eHQKKysrKyBiL3NyYy90aW1lem9uZS90em5hbWVzL0FtZXJpY2EudHh0CitAQCAtMjM3LDYgKzIzNyw5IEBAIFBEVCAgICAtMjUyMDAgRCAgIyBQYWNpZmljIERheWxpZ2h0IFRpbWUKKyBQRVQgICAgLTE4MDAwICAgICMgUGVydSBUaW1lIChvYnNvbGV0ZSkKKyBQTURUICAgIC03MjAwIEQgICMgUGllcnJlICYgTWlxdWVsb24gRGF5bGlnaHQgVGltZSAob2Jzb2xldGUpCisgUE1TVCAgIC0xMDgwMCAgICAjIFBpZXJyZSAmIE1pcXVlbG9uIFN0YW5kYXJkIFRpbWUgKG9ic29sZXRlKQorKyMgQ09ORkxJQ1QhIFBTVCBpcyBub3QgdW5pcXVlCisrIyBPdGhlciB0aW1lem9uZXM6CisrIyAgLSBQU1Q6IFBoaWxpcHBpbmUgU3RhbmRhcmQgVGltZQorIFBTVCAgICAtMjg4MDAgICAgIyBQYWNpZmljIFN0YW5kYXJkIFRpbWUKKyAgICAgICAgICAgICAgICAgICMgICAgIChBbWVyaWNhL0Rhd3NvbikKKyAgICAgICAgICAgICAgICAgICMgICAgIChBbWVyaWNhL0xvc19BbmdlbGVzKQorZGlmZiAtLWdpdCBhL3NyYy90aW1lem9uZS90em5hbWVzL0FzaWEudHh0IGIvc3JjL3RpbWV6b25lL3R6bmFtZXMvQXNpYS50eHQKK2luZGV4IGUxZmE5MzEuLjExMzMzMzkgMTAwNjQ0CistLS0gYS9zcmMvdGltZXpvbmUvdHpuYW1lcy9Bc2lhLnR4dAorKysrIGIvc3JjL3RpbWV6b25lL3R6bmFtZXMvQXNpYS50eHQKK0BAIC0xNTgsNiArMTU4LDEwIEBAIFBLVCAgICAgMTgwMDAgICAgIyBQYWtpc3RhbiBUaW1lCisgICAgICAgICAgICAgICAgICAjICAgICAoQXNpYS9LYXJhY2hpKQorIFBLU1QgICAgMjE2MDAgRCAgIyBQYWtpc3RhbiBTdW1tZXIgVGltZQorICAgICAgICAgICAgICAgICAgIyAgICAgKEFzaWEvS2FyYWNoaSkKKysjIENPTkZMSUNUISBQU1QgaXMgbm90IHVuaXF1ZQorKyMgT3RoZXIgdGltZXpvbmVzOgorKyMgIC0gUFNUOiBQYWNpZmljIFN0YW5kYXJkIFRpbWUgKEFtZXJpY2EpCisrUFNUICAgICAyODgwMCAgICAjIFBoaWxpcHBpbmUgU3RhbmRhcmQgVGltZQorIFFZWlQgICAgMjE2MDAgICAgIyBLaXppbG9yZGEgVGltZSAob2Jzb2xldGUpCisgU0FLU1QgICBBc2lhL1Nha2hhbGluICAjIFNha2hhbGluIFN1bW1lciBUaW1lIChvYnNvbGV0ZSkKKyBTQUtUICAgIEFzaWEvU2FraGFsaW4gICMgU2FraGFsaW4gVGltZSAob2Jzb2xldGUpCitkaWZmIC0tZ2l0IGEvc3JjL3RpbWV6b25lL3R6bmFtZXMvRGVmYXVsdCBiL3NyYy90aW1lem9uZS90em5hbWVzL0RlZmF1bHQKK2luZGV4IDM4MjYwOTYuLjE1MzI0MTMgMTAwNjQ0CistLS0gYS9zcmMvdGltZXpvbmUvdHpuYW1lcy9EZWZhdWx0CisrKysgYi9zcmMvdGltZXpvbmUvdHpuYW1lcy9EZWZhdWx0CitAQCAtMTgxLDYgKzE4MSw5IEBAIFBEVCAgICAtMjUyMDAgRCAgIyBQYWNpZmljIERheWxpZ2h0IFRpbWUKKyAgICAgICAgICAgICAgICAgICMgICAgIChBbWVyaWNhL1doaXRlaG9yc2UpCisgUE1EVCAgICAtNzIwMCBEICAjIFBpZXJyZSAmIE1pcXVlbG9uIERheWxpZ2h0IFRpbWUgKG9ic29sZXRlKQorIFBNU1QgICAtMTA4MDAgICAgIyBQaWVycmUgJiBNaXF1ZWxvbiBTdGFuZGFyZCBUaW1lIChvYnNvbGV0ZSkKKysjIENPTkZMSUNUISBQU1QgaXMgbm90IHVuaXF1ZQorKyMgT3RoZXIgdGltZXpvbmVzOgorKyMgIC0gUFNUOiBQaGlsaXBwaW5lIFN0YW5kYXJkIFRpbWUKKyBQU1QgICAgLTI4ODAwICAgICMgUGFjaWZpYyBTdGFuZGFyZCBUaW1lCisgICAgICAgICAgICAgICAgICAjICAgICAoQW1lcmljYS9EYXdzb24pCisgICAgICAgICAgICAgICAgICAjICAgICAoQW1lcmljYS9Mb3NfQW5nZWxlcykKK2RpZmYgLS1naXQgYS9zcmMvdGltZXpvbmUvdHpuYW1lcy9QYWNpZmljLnR4dCBiL3NyYy90aW1lem9uZS90em5hbWVzL1BhY2lmaWMudHh0CitpbmRleCBjODYyNDhiLi5jMzAwMDhjIDEwMDY0NAorLS0tIGEvc3JjL3RpbWV6b25lL3R6bmFtZXMvUGFjaWZpYy50eHQKKysrKyBiL3NyYy90aW1lem9uZS90em5hbWVzL1BhY2lmaWMudHh0CitAQCAtNTIsNiArNTIsOSBAQCBOWlNUICAgIDQzMjAwICAgICMgTmV3IFplYWxhbmQgU3RhbmRhcmQgVGltZQorIFBHVCAgICAgMzYwMDAgICAgIyBQYXB1YSBOZXcgR3VpbmVhIFRpbWUgKG9ic29sZXRlKQorIFBIT1QgICAgUGFjaWZpYy9FbmRlcmJ1cnkgICMgUGhvZW5peCBJc2xhbmRzIFRpbWUgKEtpcmliYXRpKSAob2Jzb2xldGUpCisgUE9OVCAgICAzOTYwMCAgICAjIFBvbmFwZSBUaW1lIChNaWNyb25lc2lhKSAob2Jzb2xldGUpCisrIyBDT05GTElDVCEgUFNUIGlzIG5vdCB1bmlxdWUKKysjIE90aGVyIHRpbWV6b25lczoKKysjICAtIFBTVDogUGhpbGlwcGluZSBTdGFuZGFyZCBUaW1lCisgUFNUICAgIC0yODgwMCAgICAjIFBhY2lmaWMgU3RhbmRhcmQgVGltZQorICAgICAgICAgICAgICAgICAgIyAgICAgKEFtZXJpY2EvRGF3c29uKQorICAgICAgICAgICAgICAgICAgIyAgICAgKEFtZXJpY2EvTG9zX0FuZ2VsZXMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaAppbmRleCBmYWZiYzI1Li5mMTRkYTA2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvMDAwMS1Vc2UtcGtnLWNvbmZpZy1mb3ItbGlieG1sMi1kZXRlY3Rpb24ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCkBAIC0xLDI2ICsxLDI5IEBACi1Gcm9tIGQ1MmUzMzBiZTg5NWJiOGM1ZjBmYjNlMjg4NDc2NmFjYmQ5NDJhODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQaGlsaXAgQmFsaXN0ZXIgPHBoaWxpcEBiYWxpc3Rlci5vcmc+Ci1EYXRlOiBUdWUsIDEgSnVsIDIwMTQgMDk6NDA6NDQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIHBrZy1jb25maWcgZm9yIGxpYnhtbDIgZGV0ZWN0aW9uLgorRnJvbSBkM2VlOGM4ZGY1ODA4YjYzZTg2ZjQwODMxZjJiYTYyY2JiMzNkMjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgOCBBdWcgMjAxOCAwOToxODoyNyArMDgwMAorU3ViamVjdDogW1BBVENIXSBwb3N0Z3Jlc3FsOiBVc2UgcGtnLWNvbmZpZyBmb3IgbGlieG1sMiBkZXRlY3Rpb24uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogeG1sMi1jb25maWcgZG9lcyBub3Qgd29yay4gVXNlIHBrZ2NvbmZpZyB0byBzZXQgQ1BQRkxBR1MgYW5kIExJQlMuCiAKIFNpZ25lZC1vZmYtYnk6IFBoaWxpcCBCYWxpc3RlciA8cGhpbGlwQGJhbGlzdGVyLm9yZz4KKwordXBhdGUgdG8gdmVyc2lvbiAxMC40CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCiAgY29uZmlndXJlLmluIHwgMTUgKystLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBwb3N0Z3Jlc3FsLTkuNC4yMC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwb3N0Z3Jlc3FsLTkuNC4yMC5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIHBvc3RncmVzcWwtOS40LjIwL2NvbmZpZ3VyZS5pbgotQEAgLTc4OSwxOSArNzg5LDggQEAgUEdBQ19BUkdfQk9PTCh3aXRoLCBsaWJ4bWwsIG5vLCBbYnVpbGQgdworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZDlmZTU2ZS4uM2UyY2QzYSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtODE2LDE5ICs4MTYsOCBAQCBQR0FDX0FSR19CT09MKHdpdGgsIGxpYnhtbCwgbm8sIFtidWlsZCB3aXRoIFhNTCBzdXBwb3J0XSwKICAgICAgICAgICAgICAgIFtBQ19ERUZJTkUoW1VTRV9MSUJYTUxdLCAxLCBbRGVmaW5lIHRvIDEgdG8gYnVpbGQgd2l0aCBYTUwgc3VwcG9ydC4gKC0td2l0aC1saWJ4bWwpXSldKQogIAogIGlmIHRlc3QgIiR3aXRoX2xpYnhtbCIgPSB5ZXMgOyB0aGVuCi0tICBBQ19DSEVDS19QUk9HUyhYTUwyX0NPTkZJRywgeG1sMi1jb25maWcpCistICBQR0FDX1BBVEhfUFJPR1MoWE1MMl9DT05GSUcsIHhtbDItY29uZmlnKQogLSAgaWYgdGVzdCAtbiAiJFhNTDJfQ09ORklHIjsgdGhlbgogLSAgICBmb3IgcGdhY19vcHRpb24gaW4gYCRYTUwyX0NPTkZJRyAtLWNmbGFnc2A7IGRvCiAtICAgICAgY2FzZSAkcGdhY19vcHRpb24gaW4KQEAgLTMzLDggKzM2LDExIEBACiAtICAgICAgZXNhYwogLSAgICBkb25lCiAtICBmaQotKyAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgcGtnLWNvbmZpZyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVycm9ycyAtLWNmbGFncyAibGlieG1sLTIuMCIgMj4mMWAiCi0rICBMSUJTPSJgcGtnLWNvbmZpZyAtLXNob3J0LWVycm9ycyAtLXByaW50LWVycm9ycyAtLWxpYnMgImxpYnhtbC0yLjAiIDI+JjFgICRMSUJTIgorKyAgICBDUFBGTEFHUz0iJENQUEZMQUdTIGBwa2ctY29uZmlnIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzICJsaWJ4bWwtMi4wIiAyPiYxYCIKKysgICAgTElCUz0iYHBrZy1jb25maWcgLS1zaG9ydC1lcnJvcnMgLS1wcmludC1lcnJvcnMgLS1saWJzICJsaWJ4bWwtMi4wIiAyPiYxYCAkTElCUyIKICBmaQogIAogIEFDX1NVQlNUKHdpdGhfbGlieG1sKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvZmlsZXMvbm90LWNoZWNrLWxpYnBlcmwucGF0Y2gKaW5kZXggYzU3YjQyMS4uOTcxNTEwOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL2ZpbGVzL25vdC1jaGVjay1saWJwZXJsLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9maWxlcy9ub3QtY2hlY2stbGlicGVybC5wYXRjaApAQCAtMTMsMTYgKzEzLDE2IEBACiAgY29uZmlndXJlLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogcG9zdGdyZXNxbC05LjQuMjAvY29uZmlndXJlLmluCitJbmRleDogcG9zdGdyZXNxbC05LjQuMTUvY29uZmlndXJlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcG9zdGdyZXNxbC05LjQuMjAub3JpZy9jb25maWd1cmUuaW4KLSsrKyBwb3N0Z3Jlc3FsLTkuNC4yMC9jb25maWd1cmUuaW4KLUBAIC0xOTMxLDcgKzE5MzEsNyBAQCBpZiB0ZXN0ICIkd2l0aF90Y2wiID0geWVzOyB0aGVuCistLS0gcG9zdGdyZXNxbC05LjQuMTUub3JpZy9jb25maWd1cmUuaW4KKysrKyBwb3N0Z3Jlc3FsLTkuNC4xNS9jb25maWd1cmUuaW4KK0BAIC0xODc5LDcgKzE4NzksNyBAQCBpZiB0ZXN0ICIkd2l0aF90Y2wiID0geWVzOyB0aGVuCiAgZmkKICAKICAjIGNoZWNrIGZvciA8cGVybC5oPgogLWlmIHRlc3QgIiR3aXRoX3BlcmwiID0geWVzOyB0aGVuCiAraWYgdGVzdCAiJHdpdGhfcGVybCIgPSB5ZXMgJiYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgogICAgYWNfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKLSAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJHBlcmxfaW5jbHVkZXNwZWMiCisgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JJHBlcmxfYXJjaGxpYmV4cC9DT1JFIgogICAgQUNfQ0hFQ0tfSEVBREVSKHBlcmwuaCwgW10sIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxwZXJsLmg+IGlzIHJlcXVpcmVkIGZvciBQZXJsXSldLApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCmluZGV4IDgxMmMyYWUuLjNiZjcxZjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5pbmMKQEAgLTE5LDcgKzE5LDcgQEAKICIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cucG9zdGdyZXNxbC5jb20iCiBMSUNFTlNFID0gIkJTRCIKLURFUEVORFMgPSAiemxpYiByZWFkbGluZSB0emNvZGUtbmF0aXZlIgorREVQRU5EUyA9ICJsaWJuc2wyIHpsaWIgcmVhZGxpbmUgdHpjb2RlLW5hdGl2ZSIKIAogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCiAKQEAgLTU5LDcgKzU5LDcgQEAKIFBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtLCIKIFBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCiBQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbiwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbixweXRob24iCi1QQUNLQUdFQ09ORklHW3V1aWRdID0gIi0td2l0aC1vc3NwLXV1aWQsLS13aXRob3V0LW9zc3AtdXVpZCxvc3NwLXV1aWQsIgorUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICItLXdpdGgtdXVpZD1lMmZzLC0td2l0aG91dC11dWlkLHV0aWwtbGludXgsIgogUEFDS0FHRUNPTkZJR1t0Y2xdID0gIi0td2l0aC10Y2wgLS13aXRoLXRjbGNvbmZpZz0ke1NUQUdJTkdfQklORElSX0NST1NTfSwtLXdpdGhvdXQtdGNsLHRjbCB0Y2wtbmF0aXZlLCIKIFBBQ0tBR0VDT05GSUdbbmxzXSA9ICItLWVuYWJsZS1ubHMsLS1kaXNhYmxlLW5scywsIgogUEFDS0FHRUNPTkZJR1tsaWJ4bWxdID0gIi0td2l0aC1saWJ4bWwsLS13aXRob3V0LWxpYnhtbCxsaWJ4bWwyLGxpYnhtbDIiCkBAIC03MiwyMSArNzIsMTkgQEAKIEVYVFJBX09FQ09ORl9zaDQgKz0gIi0tZGlzYWJsZS1zcGlubG9ja3MiCiBFWFRSQV9PRUNPTkZfYWFyY2g2NCArPSAiLS1kaXNhYmxlLXNwaW5sb2NrcyIKIAotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBscGVybCBeJHtQTn0tcGxwZXJsLWRiZyBcCi0gICAgXiR7UE59LXBsdGNsIF4ke1BOfS1wbHRjbC1kYmcgXAotICAgIF4ke1BOfS1wbHB5dGhvbiBeJHtQTn0tcGxweXRob24tZGJnIFwKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHBlcmwgXAorICAgIF4ke1BOfS1wbHRjbCBcCisgICAgXiR7UE59LXBscHl0aG9uIFwKICIKIAogcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CiAKLSAgICBkZWYgZmlsbF9tb3JlKG5hbWUsIGRiZz1UcnVlKToKKyAgICBkZWYgZmlsbF9tb3JlKG5hbWUpOgogICAgICAgICBpZiBuYW1lIGlzIE5vbmUgb3IgbmFtZS5zdHJpcCgpID09ICIiOgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZnBhY2s9ZC5nZXRWYXIoJ1BBQ0tBR0VTJywgRmFsc2UpIG9yICIiCiAgICAgICAgIGZwYWNrPSIke1BOfS0iICsgbmFtZSArICIgIiArIGZwYWNrCi0gICAgICAgIGlmIGRiZzoKLSAgICAgICAgICAgIGZwYWNrPSIke1BOfS0iICsgbmFtZSArICItZGJnIiArICIgIiArIGZwYWNrCiAgICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsIGZwYWNrKQogCiAgICAgY29uZj0oZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKSBvciAiIikuc3BsaXQoKQpAQCAtMjAyLDE1ICsyMDAsMjYgQEAKIH0KIAogU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlLmdsb2JhbCIKK1NTVEFURV9TQ0FOX0ZJTEVTX3JlbW92ZSA9ICIqX2NvbmZpZyIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1zZXJ2ZXItZGV2ICR7UE59LXRpbWV6b25lIFwKLSAgICBsaWJlY3BnLWNvbXBhdC1kYmcgbGliZWNwZy1jb21wYXQgbGliZWNwZy1jb21wYXQtZGV2IFwKLSAgICBsaWJlY3BnLWRiZyBsaWJlY3BnIGxpYmVjcGctZGV2IGxpYmVjcGctc3RhdGljZGV2IGxpYmVjcGctZG9jIFwKLSAgICBsaWJwcS1kYmcgbGlicHEgbGlicHEtZGV2IGxpYnBxLXN0YXRpY2RldiBcCi0gICAgbGlicGd0eXBlcy1kYmcgbGlicGd0eXBlcyBsaWJwZ3R5cGVzLXN0YXRpY2RldiBsaWJwZ3R5cGVzLWRldiBcCi0gICAgJHtQTn0tY29udHJpYiAke1BOfS1jb250cmliLWRiZyBcCisgICAgbGliZWNwZy1jb21wYXQgbGliZWNwZy1jb21wYXQtZGV2IFwKKyAgICBsaWJlY3BnIGxpYmVjcGctZGV2IGxpYmVjcGctc3RhdGljZGV2IGxpYmVjcGctZG9jIFwKKyAgICBsaWJwcSBsaWJwcS1kZXYgbGlicHEtc3RhdGljZGV2IFwKKyAgICBsaWJwZ3R5cGVzIGxpYnBndHlwZXMtc3RhdGljZGV2IGxpYnBndHlwZXMtZGV2IFwKKyAgICAke1BOfS1jb250cmliIFwKICIKIAorUlBST1ZJREVTXyR7UE59LWRiZyArPSAibGliZWNwZy1jb21wYXQtZGJnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYmVjcGctZGJnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBxLWRiZyBcCisgICAgICAgICAgICAgICAgICAgICAgICBsaWJwZ3R5cGVzLWRiZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1jb250cmliLWRiZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1wbHRjbC1kYmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tcGxweXRob24tZGJnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LXBscGVybC1kYmcgXAorICAgICAgICAgICAgICAgICAgICAgICAiCisKIEZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0tc2VydmVyIFwKICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0vZGF0YSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0vYmFja3VwcyBcCiAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59Ly5iYXNoX3Byb2ZpbGUgJHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfSBcCkBAIC0yMjMsMTMgKzIzMiw2IEBACiAgICAgICAgZWxzZSAnJ30gXAogIgogCi1GSUxFU18ke1BOfS1kYmcgKz0gIiAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9kaWN0X3Nub3diYWxsLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9wbHBnc3FsLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9ldWMyMDA0X3NqaXMyMDA0LnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9saWJwcXdhbHJlY2VpdmVyLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy8qX2FuZF8qLnNvIFwKLSIKLQogRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7YmluZGlyfS9jbHVzdGVyZGIgXAogICAgICR7YmluZGlyfS9jcmVhdGVkYiBcCiAgICAgJHtiaW5kaXJ9L2NyZWF0ZWxhbmcgXApAQCAtMjY3LDcgKzI2OSw2IEBACiBGSUxFU18ke1BOfS1zZXJ2ZXItZGV2ID0gIiR7aW5jbHVkZWRpcn0vJHtCUE59L3NlcnZlciIKIAogRklMRVNfbGliZWNwZyA9ICIke2xpYmRpcn0vbGliZWNwZyoke1NPTElCU30iCi1GSUxFU19saWJlY3BnLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnL2xpYmVjcGcqIgogRklMRVNfbGliZWNwZy1kZXYgPSAiJHtsaWJkaXJ9L2xpYmVjcGcqJHtTT0xJQlNERVZ9IFwKICAgICAke2xpYmRpcn0vbGlicGd0eXBlcyoke1NPTElCU0RFVn0gXAogICAgICR7aW5jbHVkZWRpcn0vZWNwZyouaCAke2luY2x1ZGVkaXJ9LyR7QlBOfS9lY3BnKi5oIFwKQEAgLTI4MCw3ICsyODEsNiBAQAogUkRFUEVORFNfbGliZWNwZy1zdGF0aWNkZXYgPSAibGliZWNwZy1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCiAKIEZJTEVTX2xpYnBxID0gIiR7bGliZGlyfS9saWJwcSoke1NPTElCU30iCi1GSUxFU19saWJwcS1kYmcgPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJwcSogJHtsaWJkaXJ9LyR7QlBOfS9wZ3hzL3NyYy90ZXN0L3JlZ3Jlc3MvLmRlYnVnLyoiCiBGSUxFU19saWJwcS1kZXYgPSAiJHtsaWJkaXJ9L2xpYnBxKiR7U09MSUJTREVWfSBcCiAgICAgJHtpbmNsdWRlZGlyfSBcCiAiCkBAIC0yODksMTAgKzI4OSw4IEBACiBSREVQRU5EU19saWJwcS1zdGF0aWNkZXYgPSAibGlicHEtZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCiBGSUxFU19saWJlY3BnLWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZWNwZ19jb21wYXQqJHtTT0xJQlN9IgotRklMRVNfbGliZWNwZy1jb21wYXQtZGJnID0gIiR7bGliZGlyfS8uZGVidWcvbGliZWNwZ19jb21wYXQqIgogRklMRVNfbGliZWNwZy1jb21wYXQtZGV2ID0gIiR7bGliZGlyfS9saWJlY3BnX2NvbXBhdCoke1NPTElCU30iCiBGSUxFU19saWJwZ3R5cGVzID0gIiR7bGliZGlyfS9saWJwZ3R5cGVzKiR7U09MSUJTfSIKLUZJTEVTX2xpYnBndHlwZXMtZGJnID0gIiR7bGliZGlyfS8uZGVidWcvbGlicGd0eXBlcyoiCiBGSUxFU19saWJwZ3R5cGVzLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlicGd0eXBlcyouYSIKIEZJTEVTX2xpYnBndHlwZXMtZGV2ID0gIiR7bGliZGlyfS9saWJwZ3R5cGVzKiR7U09MSUJTfSAke2luY2x1ZGVkaXJ9L3BndHlwZXMqLmgiCiAKQEAgLTMyNCw1MCArMzIyLDE4IEBACiAgICAgJHtsaWJkaXJ9LyR7QlBOfS9wZ191cGdyYWRlX3N1cHBvcnQuc28gJHtsaWJkaXJ9LyR7QlBOfS8uc28gXAogICAgICR7bGliZGlyfS8ke0JQTn0vdW5hY2NlbnQuc28gXAogIgotRklMRVNfJHtQTn0tY29udHJpYi1kYmcgPSAiIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9faW50LnNvICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL2FkbWlucGFjay5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvYXV0b2luYy5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9hdXRvX2V4cGxhaW4uc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL2F1dGhfZGVsYXkuc28gJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvYnRyZWVfZ2luLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9idHJlZV9naXN0LnNvICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnLy5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvY2hrcGFzcy5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9jaXRleHQuc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL2N1YmUuc28gJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvZGJsaW5rLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9kaWN0X2ludC5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9kaWN0X3hzeW4uc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL2R1bW15X3NlY2xhYmVsLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9lYXJ0aGRpc3RhbmNlLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9maWxlX2Zkdy5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9mdXp6eXN0cm1hdGNoLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9oc3RvcmUuc28gJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvaW5zZXJ0X3VzZXJuYW1lLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9pc24uc28gJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvbG8uc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL2x0cmVlLnNvICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL21vZGRhdGV0aW1lLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9wYWdlaW5zcGVjdC5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcGdfYnVmZmVyY2FjaGUuc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3BnX2ZyZWVzcGFjZW1hcC5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcGdfdHJnbS5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcGdjcnlwdG8uc28gJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcGdyb3dsb2Nrcy5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcGdzdGF0dHVwbGUuc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3BnX3N0YXRfc3RhdGVtZW50cy5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvcmVmaW50LnNvICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3NlZy5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvc3NsaW5mby5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvdGFibGVmdW5jLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy90ZXN0X3BhcnNlci5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy90aW1ldHJhdmVsLnNvIFwKLSAgICAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy90c2VhcmNoMi5zbyAke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy91dWlkLW9zc3Auc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3BneG1sLnNvICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3Bhc3N3b3JkY2hlY2suc28gXAotICAgICR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3BnX3VwZ3JhZGVfc3VwcG9ydC5zbyBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWcvdW5hY2NlbnQuc28gXAotIgogREVTQ1JJUFRJT05fJHtQTn0tY29udHJpYiA9ICJUaGUgcG9zdGdyZXNxbC1jb250cmliIHBhY2thZ2UgY29udGFpbnMgXAogICAgIGNvbnRyaWJ1dGVkIHBhY2thZ2VzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZSBQb3N0Z3JlU1FMIGRpc3RyaWJ1dGlvbi4iCiAKIEZJTEVTXyR7UE59LXBsdGNsID0gIiR7bGliZGlyfS8ke0JQTn0vcGx0Y2wuc28gJHtiaW5kaXJ9L3BsdGNsX2RlbG1vZCBcCiAgICAgJHtiaW5kZGlyfS9wbHRjbF9saXN0bW9kICR7YmluZGlyfS9wbHRjbF9sb2FkbW9kICBcCiAgICAgJHtkYXRhZGlyfS8ke0JQTn0vdW5rbm93bi5wbHRjbCIKLUZJTEVTXyR7UE59LXBsdGNsLWRiZyA9ICIke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9wbHRjbC5zbyIKIFNVTU1BUllfJHtQTn0tcGx0Y2wgPSAiVGhlIFRjbCBwcm9jZWR1cmFsIGxhbmd1YWdlIGZvciBQb3N0Z3JlU1FMIgogREVTQ1JJUFRJT05fJHtQTn0tcGx0Y2wgPSAiUG9zdGdyZVNRTCBpcyBhbiBhZHZhbmNlZCBPYmplY3QtUmVsYXRpb25hbCBcCiAgICAgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0uICBUaGUgcG9zdGdyZXNxbC1wbHRjbCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBQTC9UY2wgXAogICAgIHByb2NlZHVyYWwgbGFuZ3VhZ2UgZm9yIHRoZSBiYWNrZW5kLiIKIAogRklMRVNfJHtQTn0tcGxwZXJsID0gIiR7bGliZGlyfS8ke0JQTn0vcGxwZXJsLnNvIgotRklMRVNfJHtQTn0tcGxwZXJsLWRiZyA9ICIke2xpYmRpcn0vJHtCUE59Ly5kZWJ1Zy9wbHBlcmwuc28iCiBTVU1NQVJZXyR7UE59LXBscGVybCA9ICJUaGUgUGVybCBwcm9jZWR1cmFsIGxhbmd1YWdlIGZvciBQb3N0Z3JlU1FMIgogREVTQ1JJUFRJT05fJHtQTn0tcGxwZXJsID0gIlBvc3RncmVTUUwgaXMgYW4gYWR2YW5jZWQgT2JqZWN0LVJlbGF0aW9uYWwgXAogICAgIGRhdGFiYXNlIG1hbmFnZW1lbnQgc3lzdGVtLiAgVGhlIHBvc3RncmVzcWwtcGxwZXJsIHBhY2thZ2UgY29udGFpbnMgdGhlIFwKQEAgLTM3Niw3ICszNDIsNiBAQAogIyBJbiB2ZXJzaW9uIDgsIGl0IHdpbGwgYmUgcGxweXRob24uc28KICMgSW4gdmVyc2lvbiA5LCBpdCBtaWdodCBiZSBwbHB5dGhvbnsyLDN9LnNvIGRlcGVuZGluZyBvbiBweXRob24yIG9yIDMKIEZJTEVTXyR7UE59LXBscHl0aG9uID0gIiR7bGliZGlyfS8ke0JQTn0vcGxweXRob24qLnNvIgotRklMRVNfJHtQTn0tcGxweXRob24tZGJnID0gIiR7bGliZGlyfS8ke0JQTn0vLmRlYnVnL3BscHl0aG9uKi5zbyIKIFNVTU1BUllfJHtQTn0tcGxweXRob24gPSAiVGhlIFB5dGhvbiBwcm9jZWR1cmFsIGxhbmd1YWdlIGZvciBQb3N0Z3JlU1FMIgogREVTQ1JJUFRJT05fJHtQTn0tcGxweXRob24gPSAiUG9zdGdyZVNRTCBpcyBhbiBhZHZhbmNlZCBPYmplY3QtUmVsYXRpb25hbCBcCiAgICAgZGF0YWJhc2UgbWFuYWdlbWVudCBzeXN0ZW0uICBUaGUgcG9zdGdyZXNxbC1wbHB5dGhvbiBwYWNrYWdlIGNvbnRhaW5zIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzEwLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMDJmMTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMC41LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcG9zdGdyZXNxbC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT02ZGM5NWU2M2FhNGQ3MjUwMmZmODE5M2RmZTJkZGQzOCIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9ub3QtY2hlY2stbGlicGVybC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtVXBkYXRlLXRpbWUtem9uZS1kYXRhLWZpbGVzLXRvLXR6ZGF0YS1yZWxlYXNlLTIwMThmLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1TeW5jLW91ci1jb3B5LW9mLXRoZS10aW1lem9uZS1saWJyYXJ5LXdpdGgtSUFOQS1yZWxlLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImE1ZmU1ZmRmZjJkNmMyOGY2NTYwMTM5OGJlMDk1MGRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjOGU2MTZjOTFhNDUxNDJiODVjMGFlYjFmMjllYmJhNGEzNjEzMDllODY0NjllMGZiNDYxN2I2YTczYzQwMTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF85LjQuMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZjYyM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfOS40LjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSBwb3N0Z3Jlc3FsLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTZkYzk1ZTYzYWE0ZDcyNTAyZmY4MTkzZGZlMmRkZDM4IgotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kX2xpYmMtbXVzbCgpIHsKLSAgICBzZWQgLWkgLWUgJ3MvXC1sbnNsLy9nJyAke0J9L3NyYy9NYWtlZmlsZS5nbG9iYWwKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjU4MjE4Njc3NDFjODIxNzM2MjY2ZjI3YjZiOGE4NTlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVlYjFkOGRkYjI4NTRjOWU0ZDhiNWNiZDY1NjY1MjYwYzBhZThjYmNiOTExMDAzZjI0YzJkODJjY2I5N2Y4N2YiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYi8wMDAxLUZpeC1HaXRIdWItaXNzdWUtMzcxNi1nY2MtOC13YXJuaW5ncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9yb2Nrc2RiLzAwMDEtRml4LUdpdEh1Yi1pc3N1ZS0zNzE2LWdjYy04LXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNDk4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYi8wMDAxLUZpeC1HaXRIdWItaXNzdWUtMzcxNi1nY2MtOC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDE5NCBAQAorRnJvbSA4ZDY1ZDcwYjU0ZDFkMzA2YTBhMGIwMGUwMzZiYzhkZGQzOWQ4ZWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogInByemVteXNsYXcuc2tpYmluc2tpQHBlcmNvbmEuY29tIiA8cHJ6ZW15c2xhdy5za2liaW5za2lAcGVyY29uYS5jb20+CitEYXRlOiBGcmksIDIwIEFwciAyMDE4IDEzOjI4OjA1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBHaXRIdWIgaXNzdWUgIzM3MTY6IGdjYy04IHdhcm5pbmdzCisKK1N1bW1hcnk6CitGaXggdGhlIGZvbGxvd2luZyBnY2MtOCB3YXJuaW5nczoKKy0gY29uZmxpY3RpbmcgQyBsYW5ndWFnZSBsaW5rYWdlIGRlY2xhcmF0aW9uIFstV2Vycm9yXQorLSB3cml0aW5nIHRvIGFuIG9iamVjdCB3aXRoIG5vIHRyaXZpYWwgY29weS1hc3NpZ25tZW50IFstV2Vycm9yPWNsYXNzLW1lbWFjY2Vzc10KKy0gYXJyYXkgc3Vic2NyaXB0IC0xIGlzIGJlbG93IGFycmF5IGJvdW5kcyBbLVdlcnJvcj1hcnJheS1ib3VuZHNdCisKK1NvbHZlcyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcm9ja3NkYi9pc3N1ZXMvMzcxNgorQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yb2Nrc2RiL3B1bGwvMzczNgorCitEaWZmZXJlbnRpYWwgUmV2aXNpb246IEQ3Njg0MTYxCisKK1B1bGxlZCBCeTogeWl3dS1hcmJ1ZworCitmYnNoaXBpdC1zb3VyY2UtaWQ6IDQ3YzA0MjNkMjZiNzRhZGQyNTFmMWQzNTk1MjExZWVlMWU0MWU1NGEKKy0tLQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yb2Nrc2RiL2NvbW1pdC9kZWU5NWExYWZjNmM2MzUxNWU3ZDk0ZGVjMzNhY2RiNzk2MzhiNmQ3LnBhdGNoXQorCisgZGIvYy5jYyAgICAgICAgICAgICAgICAgICB8IDc3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG1lbXRhYmxlL2lubGluZXNraXBsaXN0LmggfCAxMiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGIvYy5jYyBiL2RiL2MuY2MKK2luZGV4IDA2NDEwM2VkNC4uMGQ0ODVkMDk2IDEwMDY0NAorLS0tIGEvZGIvYy5jYworKysrIGIvZGIvYy5jYworQEAgLTEzODgsMjMgKzEzODgsMjQgQEAgdm9pZCByb2Nrc2RiX3dyaXRlYmF0Y2hfcHV0X2xvZ19kYXRhKAorICAgYi0+cmVwLlB1dExvZ0RhdGEoU2xpY2UoYmxvYiwgbGVuKSk7CisgfQorIAorK2NsYXNzIEggOiBwdWJsaWMgV3JpdGVCYXRjaDo6SGFuZGxlciB7CisrIHB1YmxpYzoKKysgIHZvaWQqIHN0YXRlXzsKKysgIHZvaWQgKCpwdXRfKSh2b2lkKiwgY29uc3QgY2hhciogaywgc2l6ZV90IGtsZW4sIGNvbnN0IGNoYXIqIHYsIHNpemVfdCB2bGVuKTsKKysgIHZvaWQgKCpkZWxldGVkXykodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuKTsKKysgIHZpcnR1YWwgdm9pZCBQdXQoY29uc3QgU2xpY2UmIGtleSwgY29uc3QgU2xpY2UmIHZhbHVlKSBvdmVycmlkZSB7CisrICAgICgqcHV0Xykoc3RhdGVfLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpLCB2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSk7CisrICB9CisrICB2aXJ0dWFsIHZvaWQgRGVsZXRlKGNvbnN0IFNsaWNlJiBrZXkpIG92ZXJyaWRlIHsKKysgICAgKCpkZWxldGVkXykoc3RhdGVfLCBrZXkuZGF0YSgpLCBrZXkuc2l6ZSgpKTsKKysgIH0KKyt9OworKworIHZvaWQgcm9ja3NkYl93cml0ZWJhdGNoX2l0ZXJhdGUoCisgICAgIHJvY2tzZGJfd3JpdGViYXRjaF90KiBiLAorICAgICB2b2lkKiBzdGF0ZSwKKyAgICAgdm9pZCAoKnB1dCkodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuLCBjb25zdCBjaGFyKiB2LCBzaXplX3QgdmxlbiksCisgICAgIHZvaWQgKCpkZWxldGVkKSh2b2lkKiwgY29uc3QgY2hhciogaywgc2l6ZV90IGtsZW4pKSB7CistICBjbGFzcyBIIDogcHVibGljIFdyaXRlQmF0Y2g6OkhhbmRsZXIgeworLSAgIHB1YmxpYzoKKy0gICAgdm9pZCogc3RhdGVfOworLSAgICB2b2lkICgqcHV0Xykodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuLCBjb25zdCBjaGFyKiB2LCBzaXplX3Qgdmxlbik7CistICAgIHZvaWQgKCpkZWxldGVkXykodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuKTsKKy0gICAgdmlydHVhbCB2b2lkIFB1dChjb25zdCBTbGljZSYga2V5LCBjb25zdCBTbGljZSYgdmFsdWUpIG92ZXJyaWRlIHsKKy0gICAgICAoKnB1dF8pKHN0YXRlXywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgdmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworLSAgICB9CistICAgIHZpcnR1YWwgdm9pZCBEZWxldGUoY29uc3QgU2xpY2UmIGtleSkgb3ZlcnJpZGUgeworLSAgICAgICgqZGVsZXRlZF8pKHN0YXRlXywga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CistICAgIH0KKy0gIH07CisgICBIIGhhbmRsZXI7CisgICBoYW5kbGVyLnN0YXRlXyA9IHN0YXRlOworICAgaGFuZGxlci5wdXRfID0gcHV0OworQEAgLTE2NDksMTggKzE2NTAsNiBAQCB2b2lkIHJvY2tzZGJfd3JpdGViYXRjaF93aV9pdGVyYXRlKAorICAgICB2b2lkKiBzdGF0ZSwKKyAgICAgdm9pZCAoKnB1dCkodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuLCBjb25zdCBjaGFyKiB2LCBzaXplX3QgdmxlbiksCisgICAgIHZvaWQgKCpkZWxldGVkKSh2b2lkKiwgY29uc3QgY2hhciogaywgc2l6ZV90IGtsZW4pKSB7CistICBjbGFzcyBIIDogcHVibGljIFdyaXRlQmF0Y2g6OkhhbmRsZXIgeworLSAgIHB1YmxpYzoKKy0gICAgdm9pZCogc3RhdGVfOworLSAgICB2b2lkICgqcHV0Xykodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuLCBjb25zdCBjaGFyKiB2LCBzaXplX3Qgdmxlbik7CistICAgIHZvaWQgKCpkZWxldGVkXykodm9pZCosIGNvbnN0IGNoYXIqIGssIHNpemVfdCBrbGVuKTsKKy0gICAgdmlydHVhbCB2b2lkIFB1dChjb25zdCBTbGljZSYga2V5LCBjb25zdCBTbGljZSYgdmFsdWUpIG92ZXJyaWRlIHsKKy0gICAgICAoKnB1dF8pKHN0YXRlXywga2V5LmRhdGEoKSwga2V5LnNpemUoKSwgdmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpOworLSAgICB9CistICAgIHZpcnR1YWwgdm9pZCBEZWxldGUoY29uc3QgU2xpY2UmIGtleSkgb3ZlcnJpZGUgeworLSAgICAgICgqZGVsZXRlZF8pKHN0YXRlXywga2V5LmRhdGEoKSwga2V5LnNpemUoKSk7CistICAgIH0KKy0gIH07CisgICBIIGhhbmRsZXI7CisgICBoYW5kbGVyLnN0YXRlXyA9IHN0YXRlOworICAgaGFuZGxlci5wdXRfID0gcHV0OworQEAgLTMxMDksMjAgKzMwOTgsMjEgQEAgdm9pZCByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX2Rlc3Ryb3kocm9ja3NkYl9zbGljZXRyYW5zZm9ybV90KiBzdCkgeworICAgZGVsZXRlIHN0OworIH0KKyAKKytzdHJ1Y3QgV3JhcHBlciA6IHB1YmxpYyByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX3QgeworKyAgY29uc3QgU2xpY2VUcmFuc2Zvcm0qIHJlcF87CisrICB+V3JhcHBlcigpIHsgZGVsZXRlIHJlcF87IH0KKysgIGNvbnN0IGNoYXIqIE5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZXBfLT5OYW1lKCk7IH0KKysgIFNsaWNlIFRyYW5zZm9ybShjb25zdCBTbGljZSYgc3JjKSBjb25zdCBvdmVycmlkZSB7CisrICAgIHJldHVybiByZXBfLT5UcmFuc2Zvcm0oc3JjKTsKKysgIH0KKysgIGJvb2wgSW5Eb21haW4oY29uc3QgU2xpY2UmIHNyYykgY29uc3Qgb3ZlcnJpZGUgeworKyAgICByZXR1cm4gcmVwXy0+SW5Eb21haW4oc3JjKTsKKysgIH0KKysgIGJvb2wgSW5SYW5nZShjb25zdCBTbGljZSYgc3JjKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZXBfLT5JblJhbmdlKHNyYyk7IH0KKysgIHN0YXRpYyB2b2lkIERvTm90aGluZyh2b2lkKikgeyB9CisrfTsKKysKKyByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX3QqIHJvY2tzZGJfc2xpY2V0cmFuc2Zvcm1fY3JlYXRlX2ZpeGVkX3ByZWZpeChzaXplX3QgcHJlZml4TGVuKSB7CistICBzdHJ1Y3QgV3JhcHBlciA6IHB1YmxpYyByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX3QgeworLSAgICBjb25zdCBTbGljZVRyYW5zZm9ybSogcmVwXzsKKy0gICAgfldyYXBwZXIoKSB7IGRlbGV0ZSByZXBfOyB9CistICAgIGNvbnN0IGNoYXIqIE5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZXBfLT5OYW1lKCk7IH0KKy0gICAgU2xpY2UgVHJhbnNmb3JtKGNvbnN0IFNsaWNlJiBzcmMpIGNvbnN0IG92ZXJyaWRlIHsKKy0gICAgICByZXR1cm4gcmVwXy0+VHJhbnNmb3JtKHNyYyk7CistICAgIH0KKy0gICAgYm9vbCBJbkRvbWFpbihjb25zdCBTbGljZSYgc3JjKSBjb25zdCBvdmVycmlkZSB7CistICAgICAgcmV0dXJuIHJlcF8tPkluRG9tYWluKHNyYyk7CistICAgIH0KKy0gICAgYm9vbCBJblJhbmdlKGNvbnN0IFNsaWNlJiBzcmMpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlcF8tPkluUmFuZ2Uoc3JjKTsgfQorLSAgICBzdGF0aWMgdm9pZCBEb05vdGhpbmcodm9pZCopIHsgfQorLSAgfTsKKyAgIFdyYXBwZXIqIHdyYXBwZXIgPSBuZXcgV3JhcHBlcjsKKyAgIHdyYXBwZXItPnJlcF8gPSByb2Nrc2RiOjpOZXdGaXhlZFByZWZpeFRyYW5zZm9ybShwcmVmaXhMZW4pOworICAgd3JhcHBlci0+c3RhdGVfID0gbnVsbHB0cjsKK0BAIC0zMTMxLDE5ICszMTIxLDYgQEAgcm9ja3NkYl9zbGljZXRyYW5zZm9ybV90KiByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX2NyZWF0ZV9maXhlZF9wcmVmaXgoc2l6ZV90IHByZWYKKyB9CisgCisgcm9ja3NkYl9zbGljZXRyYW5zZm9ybV90KiByb2Nrc2RiX3NsaWNldHJhbnNmb3JtX2NyZWF0ZV9ub29wKCkgeworLSAgc3RydWN0IFdyYXBwZXIgOiBwdWJsaWMgcm9ja3NkYl9zbGljZXRyYW5zZm9ybV90IHsKKy0gICAgY29uc3QgU2xpY2VUcmFuc2Zvcm0qIHJlcF87CistICAgIH5XcmFwcGVyKCkgeyBkZWxldGUgcmVwXzsgfQorLSAgICBjb25zdCBjaGFyKiBOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVwXy0+TmFtZSgpOyB9CistICAgIFNsaWNlIFRyYW5zZm9ybShjb25zdCBTbGljZSYgc3JjKSBjb25zdCBvdmVycmlkZSB7CistICAgICAgcmV0dXJuIHJlcF8tPlRyYW5zZm9ybShzcmMpOworLSAgICB9CistICAgIGJvb2wgSW5Eb21haW4oY29uc3QgU2xpY2UmIHNyYykgY29uc3Qgb3ZlcnJpZGUgeworLSAgICAgIHJldHVybiByZXBfLT5JbkRvbWFpbihzcmMpOworLSAgICB9CistICAgIGJvb2wgSW5SYW5nZShjb25zdCBTbGljZSYgc3JjKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiByZXBfLT5JblJhbmdlKHNyYyk7IH0KKy0gICAgc3RhdGljIHZvaWQgRG9Ob3RoaW5nKHZvaWQqKSB7IH0KKy0gIH07CisgICBXcmFwcGVyKiB3cmFwcGVyID0gbmV3IFdyYXBwZXI7CisgICB3cmFwcGVyLT5yZXBfID0gcm9ja3NkYjo6TmV3Tm9vcFRyYW5zZm9ybSgpOworICAgd3JhcHBlci0+c3RhdGVfID0gbnVsbHB0cjsKK2RpZmYgLS1naXQgYS9tZW10YWJsZS9pbmxpbmVza2lwbGlzdC5oIGIvbWVtdGFibGUvaW5saW5lc2tpcGxpc3QuaAoraW5kZXggNzAyYTczMzZkLi5lYWRkYTFkYzEgMTAwNjQ0CistLS0gYS9tZW10YWJsZS9pbmxpbmVza2lwbGlzdC5oCisrKysgYi9tZW10YWJsZS9pbmxpbmVza2lwbGlzdC5oCitAQCAtMjgwLDcgKzI4MCw3IEBAIHN0cnVjdCBJbmxpbmVTa2lwTGlzdDxDb21wYXJhdG9yPjo6Tm9kZSB7CisgICAvLyBuZXh0X1swXS4gIFRoaXMgaXMgdXNlZCBmb3IgcGFzc2luZyBkYXRhIGZyb20gQWxsb2NhdGVLZXkgdG8gSW5zZXJ0LgorICAgdm9pZCBTdGFzaEhlaWdodChjb25zdCBpbnQgaGVpZ2h0KSB7CisgICAgIGFzc2VydChzaXplb2YoaW50KSA8PSBzaXplb2YobmV4dF9bMF0pKTsKKy0gICAgbWVtY3B5KCZuZXh0X1swXSwgJmhlaWdodCwgc2l6ZW9mKGludCkpOworKyAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+KCZuZXh0X1swXSksICZoZWlnaHQsIHNpemVvZihpbnQpKTsKKyAgIH0KKyAKKyAgIC8vIFJldHJpZXZlcyB0aGUgdmFsdWUgcGFzc2VkIHRvIFN0YXNoSGVpZ2h0LiAgVW5kZWZpbmVkIGFmdGVyIGEgY2FsbAorQEAgLTMwMCwzMCArMzAwLDMwIEBAIHN0cnVjdCBJbmxpbmVTa2lwTGlzdDxDb21wYXJhdG9yPjo6Tm9kZSB7CisgICAgIGFzc2VydChuID49IDApOworICAgICAvLyBVc2UgYW4gJ2FjcXVpcmUgbG9hZCcgc28gdGhhdCB3ZSBvYnNlcnZlIGEgZnVsbHkgaW5pdGlhbGl6ZWQKKyAgICAgLy8gdmVyc2lvbiBvZiB0aGUgcmV0dXJuZWQgTm9kZS4KKy0gICAgcmV0dXJuIChuZXh0X1stbl0ubG9hZChzdGQ6Om1lbW9yeV9vcmRlcl9hY3F1aXJlKSk7CisrICAgIHJldHVybiAoKCZuZXh0X1swXSAtIG4pLT5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX2FjcXVpcmUpKTsKKyAgIH0KKyAKKyAgIHZvaWQgU2V0TmV4dChpbnQgbiwgTm9kZSogeCkgeworICAgICBhc3NlcnQobiA+PSAwKTsKKyAgICAgLy8gVXNlIGEgJ3JlbGVhc2Ugc3RvcmUnIHNvIHRoYXQgYW55Ym9keSB3aG8gcmVhZHMgdGhyb3VnaCB0aGlzCisgICAgIC8vIHBvaW50ZXIgb2JzZXJ2ZXMgYSBmdWxseSBpbml0aWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBpbnNlcnRlZCBub2RlLgorLSAgICBuZXh0X1stbl0uc3RvcmUoeCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisrICAgICgmbmV4dF9bMF0gLSBuKS0+c3RvcmUoeCwgc3RkOjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CisgICB9CisgCisgICBib29sIENBU05leHQoaW50IG4sIE5vZGUqIGV4cGVjdGVkLCBOb2RlKiB4KSB7CisgICAgIGFzc2VydChuID49IDApOworLSAgICByZXR1cm4gbmV4dF9bLW5dLmNvbXBhcmVfZXhjaGFuZ2Vfc3Ryb25nKGV4cGVjdGVkLCB4KTsKKysgICAgcmV0dXJuICgmbmV4dF9bMF0gLSBuKS0+Y29tcGFyZV9leGNoYW5nZV9zdHJvbmcoZXhwZWN0ZWQsIHgpOworICAgfQorIAorICAgLy8gTm8tYmFycmllciB2YXJpYW50cyB0aGF0IGNhbiBiZSBzYWZlbHkgdXNlZCBpbiBhIGZldyBsb2NhdGlvbnMuCisgICBOb2RlKiBOb0JhcnJpZXJfTmV4dChpbnQgbikgeworICAgICBhc3NlcnQobiA+PSAwKTsKKy0gICAgcmV0dXJuIG5leHRfWy1uXS5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworKyAgICByZXR1cm4gKCZuZXh0X1swXSAtIG4pLT5sb2FkKHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgfQorIAorICAgdm9pZCBOb0JhcnJpZXJfU2V0TmV4dChpbnQgbiwgTm9kZSogeCkgeworICAgICBhc3NlcnQobiA+PSAwKTsKKy0gICAgbmV4dF9bLW5dLnN0b3JlKHgsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworKyAgICAoJm5leHRfWzBdIC0gbiktPnN0b3JlKHgsIHN0ZDo6bWVtb3J5X29yZGVyX3JlbGF4ZWQpOworICAgfQorIAorICAgLy8gSW5zZXJ0IG5vZGUgYWZ0ZXIgcHJldiBvbiBzcGVjaWZpYyBsZXZlbC4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYgppbmRleCAxZTZjYmFlLi41OTRkMWE5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCkBAIC02LDExICs2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmxldmVsZGI7bWQ1PWZiMDRmZjU3YTE0ZjMwOGYyZWVkNGE5Yjg3ZDQ1ODM3IgogCi1TUkNSRVYgPSAiODk2OTQ0NTY0MjAzOTU2NjIxNGQ2NTBjYzY2MTQ4NDllN2RkNWUxNyIKLVNSQ0JSQU5DSCA9ICI1LjEyLmZiIgotUFYgPSAiNS4xMi4yIgorU1JDUkVWID0gImM2MGRmOWQ5ZTc2MjlmZTIwOGE5Yjg0ODI5M2E1NTk5ZjgzZDVlNzciCitTUkNCUkFOQ0ggPSAiNS4xMy5mYiIKK1BWID0gIjUuMTMuMSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZhY2Vib29rLyR7QlBOfS5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay8ke0JQTn0uZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtR2l0SHViLWlzc3VlLTM3MTYtZ2NjLTgtd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjgsNSArMzAsMyBAQAogICAgIC1EV0lUSF9URVNUUz1PRkYgXAogICAgIC1EV0lUSF9UT09MUz1PRkYgXAogIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvMDAwMS1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAxLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MGQyMWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAxLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBAQAotRnJvbSBiYmViNzJmMTFjNjRmMTkwYjIzYWJiZWQ1ZjQ0MzExYmQwMjFiZGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgU2VwIDIwMTcgMTU6NDY6MzggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGFkZCBiYXNlNjQgaW1wbGVtZW50YXRpb24KLQotbXVzbCBuZWVkcyBpdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzdGVtL2NvcmUvYWRiL2FkYl9hdXRoX2NsaWVudC5jIHwgICAyICstCi0gc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jICAgICAgICAgIHwgMzE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXN0ZW0vY29yZS9hZGIvYmFzZTY0LmMKLQotZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYyBiL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYwotaW5kZXggNTVlOWRjYS4uMTA0YjQxMyAxMDA2NDQKLS0tLSBhL3N5c3RlbS9jb3JlL2FkYi9hZGJfYXV0aF9jbGllbnQuYwotKysrIGIvc3lzdGVtL2NvcmUvYWRiL2FkYl9hdXRoX2NsaWVudC5jCi1AQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgdm9pZCByZWFkX2tleXMoY29uc3QgY2hhciAqZmlsZSwgc3RydWN0IGxpc3Rub2RlICpsaXN0KQotICAgICAgICAgaWYgKHNlcCkKLSAgICAgICAgICAgICAqc2VwID0gJ1wwJzsKLSAKLS0gICAgICAgIHJldCA9IF9fYjY0X3B0b24oYnVmLCAodV9jaGFyICopJmtleS0+a2V5LCBzaXplb2Yoa2V5LT5rZXkpICsgNCk7Ci0rICAgICAgICByZXQgPSBiNjRfcHRvbihidWYsICh1X2NoYXIgKikma2V5LT5rZXksIHNpemVvZihrZXktPmtleSkgKyA0KTsKLSAgICAgICAgIGlmIChyZXQgIT0gc2l6ZW9mKGtleS0+a2V5KSkgewotICAgICAgICAgICAgIEQoIiVzOiBJbnZhbGlkIGJhc2U2NCBkYXRhIHJldD0lZFxuIiwgZmlsZSwgcmV0KTsKLSAgICAgICAgICAgICBmcmVlKGtleSk7Ci1kaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jIGIvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTVkYTI4NAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzdGVtL2NvcmUvYWRiL2Jhc2U2NC5jCi1AQCAtMCwwICsxLDMxNSBAQAotKy8qCi0rICogQ29weXJpZ2h0IChjKSAxOTk2LTE5OTkgYnkgSW50ZXJuZXQgU29mdHdhcmUgQ29uc29ydGl1bS4KLSsgKgotKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIElOVEVSTkVUIFNPRlRXQVJFIENPTlNPUlRJVU0gRElTQ0xBSU1TCi0rICogQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUwotKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgSU5URVJORVQgU09GVFdBUkUKLSsgKiBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwKLSsgKiBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IKLSsgKiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUwotKyAqIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwotKyAqIFNPRlRXQVJFLgotKyAqLwotKwotKy8qCi0rICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk1IGJ5IEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMsIEluYy4KLSsgKgotKyAqIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMsIEluYy4gKGhlcmVpbmFmdGVyIGNhbGxlZCBJQk0pIGdyYW50cwotKyAqIHBlcm1pc3Npb24gdW5kZXIgaXRzIGNvcHlyaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMKLSsgKiBTb2Z0d2FyZSB3aXRoIG9yIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZAotKyAqIGFsbCBwYXJhZ3JhcGhzIG9mIHRoaXMgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBJQk0KLSsgKiBub3QgYmUgdXNlZCBpbiBjb25uZWN0aW9uIHdpdGggdGhlIG1hcmtldGluZyBvZiBhbnkgcHJvZHVjdCBpbmNvcnBvcmF0aW5nCi0rICogdGhlIFNvZnR3YXJlIG9yIG1vZGlmaWNhdGlvbnMgdGhlcmVvZiwgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvcgotKyAqIHBlcm1pc3Npb24uCi0rICoKLSsgKiBUbyB0aGUgZXh0ZW50IGl0IGhhcyBhIHJpZ2h0IHRvIGRvIHNvLCBJQk0gZ3JhbnRzIGFuIGltbXVuaXR5IGZyb20gc3VpdAotKyAqIHVuZGVyIGl0cyBwYXRlbnRzLCBpZiBhbnksIGZvciB0aGUgdXNlLCBzYWxlIG9yIG1hbnVmYWN0dXJlIG9mIHByb2R1Y3RzIHRvCi0rICogdGhlIGV4dGVudCB0aGF0IHN1Y2ggcHJvZHVjdHMgYXJlIHVzZWQgZm9yIHBlcmZvcm1pbmcgRG9tYWluIE5hbWUgU3lzdGVtCi0rICogZHluYW1pYyB1cGRhdGVzIGluIFRDUC9JUCBuZXR3b3JrcyBieSBtZWFucyBvZiB0aGUgU29mdHdhcmUuICBObyBpbW11bml0eSBpcwotKyAqIGdyYW50ZWQgZm9yIGFueSBwcm9kdWN0IHBlciBzZSBvciBmb3IgYW55IG90aGVyIGZ1bmN0aW9uIG9mIGFueSBwcm9kdWN0LgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIEFORCBJQk0gRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTLAotKyAqIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQQotKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIElOIE5PIEVWRU5UIFNIQUxMIElCTSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLAotKyAqIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIEFSSVNJTkcKLSsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTgotKyAqIElGIElCTSBJUyBBUFBSSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgotKyAqLwotKwotKyNpZiAhZGVmaW5lZChMSU5UKSAmJiAhZGVmaW5lZChDT0RFQ0VOVEVSKQotK3N0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiJEJJTkRJZDogYmFzZTY0LmMsdiA4LjcgMTk5OS8xMC8xMyAxNjozOTozMyB2aXhpZSBFeHAgJCI7Ci0rI2VuZGlmIC8qIG5vdCBsaW50ICovCi0rCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKwotKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0rI2luY2x1ZGUgPGFycGEvaW5ldC5oPgotKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KLSsKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2RlZmluZSBBc3NlcnQoQ29uZCkgaWYgKCEoQ29uZCkpIGFib3J0KCkKLSsKLStzdGF0aWMgY29uc3QgY2hhciBCYXNlNjRbXSA9Ci0rCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjsKLStzdGF0aWMgY29uc3QgY2hhciBQYWQ2NCA9ICc9JzsKLSsKLSsvKiAoRnJvbSBSRkMxNTIxIGFuZCBkcmFmdC1pZXRmLWRuc3NlYy1zZWNleHQtMDMudHh0KQotKyAgIFRoZSBmb2xsb3dpbmcgZW5jb2RpbmcgdGVjaG5pcXVlIGlzIHRha2VuIGZyb20gUkZDIDE1MjEgYnkgQm9yZW5zdGVpbgotKyAgIGFuZCBGcmVlZC4gIEl0IGlzIHJlcHJvZHVjZWQgaGVyZSBpbiBhIHNsaWdodGx5IGVkaXRlZCBmb3JtIGZvcgotKyAgIGNvbnZlbmllbmNlLgotKwotKyAgIEEgNjUtY2hhcmFjdGVyIHN1YnNldCBvZiBVUy1BU0NJSSBpcyB1c2VkLCBlbmFibGluZyA2IGJpdHMgdG8gYmUKLSsgICByZXByZXNlbnRlZCBwZXIgcHJpbnRhYmxlIGNoYXJhY3Rlci4gKFRoZSBleHRyYSA2NXRoIGNoYXJhY3RlciwgIj0iLAotKyAgIGlzIHVzZWQgdG8gc2lnbmlmeSBhIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbi4pCi0rCi0rICAgVGhlIGVuY29kaW5nIHByb2Nlc3MgcmVwcmVzZW50cyAyNC1iaXQgZ3JvdXBzIG9mIGlucHV0IGJpdHMgYXMgb3V0cHV0Ci0rICAgc3RyaW5ncyBvZiA0IGVuY29kZWQgY2hhcmFjdGVycy4gUHJvY2VlZGluZyBmcm9tIGxlZnQgdG8gcmlnaHQsIGEKLSsgICAyNC1iaXQgaW5wdXQgZ3JvdXAgaXMgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpbmcgMyA4LWJpdCBpbnB1dCBncm91cHMuCi0rICAgVGhlc2UgMjQgYml0cyBhcmUgdGhlbiB0cmVhdGVkIGFzIDQgY29uY2F0ZW5hdGVkIDYtYml0IGdyb3VwcywgZWFjaAotKyAgIG9mIHdoaWNoIGlzIHRyYW5zbGF0ZWQgaW50byBhIHNpbmdsZSBkaWdpdCBpbiB0aGUgYmFzZTY0IGFscGhhYmV0LgotKwotKyAgIEVhY2ggNi1iaXQgZ3JvdXAgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIGFuIGFycmF5IG9mIDY0IHByaW50YWJsZQotKyAgIGNoYXJhY3RlcnMuIFRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlZCBieSB0aGUgaW5kZXggaXMgcGxhY2VkIGluIHRoZQotKyAgIG91dHB1dCBzdHJpbmcuCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIDE6IFRoZSBCYXNlNjQgQWxwaGFiZXQKLSsKLSsgICAgICBWYWx1ZSBFbmNvZGluZyAgVmFsdWUgRW5jb2RpbmcgIFZhbHVlIEVuY29kaW5nICBWYWx1ZSBFbmNvZGluZwotKyAgICAgICAgICAwIEEgICAgICAgICAgICAxNyBSICAgICAgICAgICAgMzQgaSAgICAgICAgICAgIDUxIHoKLSsgICAgICAgICAgMSBCICAgICAgICAgICAgMTggUyAgICAgICAgICAgIDM1IGogICAgICAgICAgICA1MiAwCi0rICAgICAgICAgIDIgQyAgICAgICAgICAgIDE5IFQgICAgICAgICAgICAzNiBrICAgICAgICAgICAgNTMgMQotKyAgICAgICAgICAzIEQgICAgICAgICAgICAyMCBVICAgICAgICAgICAgMzcgbCAgICAgICAgICAgIDU0IDIKLSsgICAgICAgICAgNCBFICAgICAgICAgICAgMjEgViAgICAgICAgICAgIDM4IG0gICAgICAgICAgICA1NSAzCi0rICAgICAgICAgIDUgRiAgICAgICAgICAgIDIyIFcgICAgICAgICAgICAzOSBuICAgICAgICAgICAgNTYgNAotKyAgICAgICAgICA2IEcgICAgICAgICAgICAyMyBYICAgICAgICAgICAgNDAgbyAgICAgICAgICAgIDU3IDUKLSsgICAgICAgICAgNyBIICAgICAgICAgICAgMjQgWSAgICAgICAgICAgIDQxIHAgICAgICAgICAgICA1OCA2Ci0rICAgICAgICAgIDggSSAgICAgICAgICAgIDI1IFogICAgICAgICAgICA0MiBxICAgICAgICAgICAgNTkgNwotKyAgICAgICAgICA5IEogICAgICAgICAgICAyNiBhICAgICAgICAgICAgNDMgciAgICAgICAgICAgIDYwIDgKLSsgICAgICAgICAxMCBLICAgICAgICAgICAgMjcgYiAgICAgICAgICAgIDQ0IHMgICAgICAgICAgICA2MSA5Ci0rICAgICAgICAgMTEgTCAgICAgICAgICAgIDI4IGMgICAgICAgICAgICA0NSB0ICAgICAgICAgICAgNjIgKwotKyAgICAgICAgIDEyIE0gICAgICAgICAgICAyOSBkICAgICAgICAgICAgNDYgdSAgICAgICAgICAgIDYzIC8KLSsgICAgICAgICAxMyBOICAgICAgICAgICAgMzAgZSAgICAgICAgICAgIDQ3IHYKLSsgICAgICAgICAxNCBPICAgICAgICAgICAgMzEgZiAgICAgICAgICAgIDQ4IHcgICAgICAgICAocGFkKSA9Ci0rICAgICAgICAgMTUgUCAgICAgICAgICAgIDMyIGcgICAgICAgICAgICA0OSB4Ci0rICAgICAgICAgMTYgUSAgICAgICAgICAgIDMzIGggICAgICAgICAgICA1MCB5Ci0rCi0rICAgU3BlY2lhbCBwcm9jZXNzaW5nIGlzIHBlcmZvcm1lZCBpZiBmZXdlciB0aGFuIDI0IGJpdHMgYXJlIGF2YWlsYWJsZQotKyAgIGF0IHRoZSBlbmQgb2YgdGhlIGRhdGEgYmVpbmcgZW5jb2RlZC4gIEEgZnVsbCBlbmNvZGluZyBxdWFudHVtIGlzCi0rICAgYWx3YXlzIGNvbXBsZXRlZCBhdCB0aGUgZW5kIG9mIGEgcXVhbnRpdHkuICBXaGVuIGZld2VyIHRoYW4gMjQgaW5wdXQKLSsgICBiaXRzIGFyZSBhdmFpbGFibGUgaW4gYW4gaW5wdXQgZ3JvdXAsIHplcm8gYml0cyBhcmUgYWRkZWQgKG9uIHRoZQotKyAgIHJpZ2h0KSB0byBmb3JtIGFuIGludGVncmFsIG51bWJlciBvZiA2LWJpdCBncm91cHMuICBQYWRkaW5nIGF0IHRoZQotKyAgIGVuZCBvZiB0aGUgZGF0YSBpcyBwZXJmb3JtZWQgdXNpbmcgdGhlICc9JyBjaGFyYWN0ZXIuCi0rCi0rICAgU2luY2UgYWxsIGJhc2U2NCBpbnB1dCBpcyBhbiBpbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzLCBvbmx5IHRoZQotKyAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsgICBmb2xsb3dpbmcgY2FzZXMgY2FuIGFyaXNlOgotKwotKyAgICAgICAoMSkgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgYW4gaW50ZWdyYWwKLSsgICAgICAgICAgIG11bHRpcGxlIG9mIDI0IGJpdHM7IGhlcmUsIHRoZSBmaW5hbCB1bml0IG9mIGVuY29kZWQKLSsJICAgb3V0cHV0IHdpbGwgYmUgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgNCBjaGFyYWN0ZXJzCi0rCSAgIHdpdGggbm8gIj0iIHBhZGRpbmcsCi0rICAgICAgICgyKSB0aGUgZmluYWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBleGFjdGx5IDggYml0czsKLSsgICAgICAgICAgIGhlcmUsIHRoZSBmaW5hbCB1bml0IG9mIGVuY29kZWQgb3V0cHV0IHdpbGwgYmUgdHdvCi0rCSAgIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgdHdvICI9IiBwYWRkaW5nIGNoYXJhY3RlcnMsIG9yCi0rICAgICAgICgzKSB0aGUgZmluYWwgcXVhbnR1bSBvZiBlbmNvZGluZyBpbnB1dCBpcyBleGFjdGx5IDE2IGJpdHM7Ci0rICAgICAgICAgICBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHRocmVlCi0rCSAgIGNoYXJhY3RlcnMgZm9sbG93ZWQgYnkgb25lICI9IiBwYWRkaW5nIGNoYXJhY3Rlci4KLSsgICAqLwotKwotK2ludAotK2I2NF9udG9wKGNvbnN0IHVpbnQ4X3QqIHNyYywgc2l6ZV90IHNyY2xlbmd0aCwgY2hhciogdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpCi0rewotKwlzaXplX3QgZGF0YWxlbmd0aCA9IDA7Ci0rCXVpbnQ4X3QgaW5wdXRbM107Ci0rCXVpbnQ4X3Qgb3V0cHV0WzRdOwotKwlzaXplX3QgaTsKLSsKLSsJd2hpbGUgKDIgPCBzcmNsZW5ndGgpIHsKLSsJCWlucHV0WzBdID0gKnNyYysrOwotKwkJaW5wdXRbMV0gPSAqc3JjKys7Ci0rCQlpbnB1dFsyXSA9ICpzcmMrKzsKLSsJCXNyY2xlbmd0aCAtPSAzOwotKwotKwkJb3V0cHV0WzBdID0gaW5wdXRbMF0gPj4gMjsKLSsJCW91dHB1dFsxXSA9ICgoaW5wdXRbMF0gJiAweDAzKSA8PCA0KSArIChpbnB1dFsxXSA+PiA0KTsKLSsJCW91dHB1dFsyXSA9ICgoaW5wdXRbMV0gJiAweDBmKSA8PCAyKSArIChpbnB1dFsyXSA+PiA2KTsKLSsJCW91dHB1dFszXSA9IGlucHV0WzJdICYgMHgzZjsKLSsJCUFzc2VydChvdXRwdXRbMF0gPCA2NCk7Ci0rCQlBc3NlcnQob3V0cHV0WzFdIDwgNjQpOwotKwkJQXNzZXJ0KG91dHB1dFsyXSA8IDY0KTsKLSsJCUFzc2VydChvdXRwdXRbM10gPCA2NCk7Ci0rCi0rCQlpZiAoZGF0YWxlbmd0aCArIDQgPiB0YXJnc2l6ZSkKLSsJCQlyZXR1cm4gKC0xKTsKLSsJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFswXV07Ci0rCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMV1dOwotKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzJdXTsKLSsJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFszXV07Ci0rCX0KLSsKLSsJLyogTm93IHdlIHdvcnJ5IGFib3V0IHBhZGRpbmcuICovCi0rCWlmICgwICE9IHNyY2xlbmd0aCkgewotKwkJLyogR2V0IHdoYXQncyBsZWZ0LiAqLwotKwkJaW5wdXRbMF0gPSBpbnB1dFsxXSA9IGlucHV0WzJdID0gJ1wwJzsKLSsJCWZvciAoaSA9IDA7IGkgPCBzcmNsZW5ndGg7IGkrKykKLSsJCQlpbnB1dFtpXSA9ICpzcmMrKzsKLSsKLSsJCW91dHB1dFswXSA9IGlucHV0WzBdID4+IDI7Ci0rCQlvdXRwdXRbMV0gPSAoKGlucHV0WzBdICYgMHgwMykgPDwgNCkgKyAoaW5wdXRbMV0gPj4gNCk7Ci0rCQlvdXRwdXRbMl0gPSAoKGlucHV0WzFdICYgMHgwZikgPDwgMikgKyAoaW5wdXRbMl0gPj4gNik7Ci0rCQlBc3NlcnQob3V0cHV0WzBdIDwgNjQpOwotKwkJQXNzZXJ0KG91dHB1dFsxXSA8IDY0KTsKLSsJCUFzc2VydChvdXRwdXRbMl0gPCA2NCk7Ci0rCi0rCQlpZiAoZGF0YWxlbmd0aCArIDQgPiB0YXJnc2l6ZSkKLSsJCQlyZXR1cm4gKC0xKTsKLSsJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFswXV07Ci0rCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMV1dOwotKwkJaWYgKHNyY2xlbmd0aCA9PSAxKQotKwkJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gUGFkNjQ7Ci0rCQllbHNlCi0rCQkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzJdXTsKLSsJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gUGFkNjQ7Ci0rCX0KLSsJaWYgKGRhdGFsZW5ndGggPj0gdGFyZ3NpemUpCi0rCQlyZXR1cm4gKC0xKTsKLSsJdGFyZ2V0W2RhdGFsZW5ndGhdID0gJ1wwJzsJLyogUmV0dXJuZWQgdmFsdWUgZG9lc24ndCBjb3VudCBcMC4gKi8KLSsJcmV0dXJuIChkYXRhbGVuZ3RoKTsKLSt9Ci0rCi0rLyogc2tpcHMgYWxsIHdoaXRlc3BhY2UgYW55d2hlcmUuCi0rICAgY29udmVydHMgY2hhcmFjdGVycywgZm91ciBhdCBhIHRpbWUsIHN0YXJ0aW5nIGF0IChvciBhZnRlcikKLSsgICBzcmMgZnJvbSBiYXNlIC0gNjQgbnVtYmVycyBpbnRvIHRocmVlIDggYml0IGJ5dGVzIGluIHRoZSB0YXJnZXQgYXJlYS4KLSsgICBpdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF0YSBieXRlcyBzdG9yZWQgYXQgdGhlIHRhcmdldCwgb3IgLTEgb24gZXJyb3IuCi0rICovCi0rCi0raW50IGI2NF9wdG9uKGNvbnN0IGNoYXIqIHNyYywgdWludDhfdCogdGFyZ2V0LCBzaXplX3QgdGFyZ3NpemUpCi0rewotKwlpbnQgdGFyaW5kZXgsIHN0YXRlLCBjaDsKLSsJY2hhciAqcG9zOwotKwotKwlzdGF0ZSA9IDA7Ci0rCXRhcmluZGV4ID0gMDsKLSsKLSsJd2hpbGUgKChjaCA9ICpzcmMrKykgIT0gJ1wwJykgewotKwkJaWYgKGlzc3BhY2UoY2gpKQkvKiBTa2lwIHdoaXRlc3BhY2UgYW55d2hlcmUuICovCi0rCQkJY29udGludWU7Ci0rCi0rCQlpZiAoY2ggPT0gUGFkNjQpCi0rCQkJYnJlYWs7Ci0rCi0rCQlwb3MgPSBzdHJjaHIoQmFzZTY0LCBjaCk7Ci0rCQlpZiAocG9zID09IDApIAkJLyogQSBub24tYmFzZTY0IGNoYXJhY3Rlci4gKi8KLSsJCQlyZXR1cm4gKC0xKTsKLSsKLSsJCXN3aXRjaCAoc3RhdGUpIHsKLSsJCWNhc2UgMDoKLSsJCQlpZiAodGFyZ2V0KSB7Ci0rCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ID49IHRhcmdzaXplKQotKwkJCQkJcmV0dXJuICgtMSk7Ci0rCQkJCXRhcmdldFt0YXJpbmRleF0gPSAocG9zIC0gQmFzZTY0KSA8PCAyOwotKwkJCX0KLSsJCQlzdGF0ZSA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlIDE6Ci0rCQkJaWYgKHRhcmdldCkgewotKwkJCQlpZiAoKHNpemVfdCl0YXJpbmRleCArIDEgPj0gdGFyZ3NpemUpCi0rCQkJCQlyZXR1cm4gKC0xKTsKLSsJCQkJdGFyZ2V0W3RhcmluZGV4XSAgIHw9ICAocG9zIC0gQmFzZTY0KSA+PiA0OwotKwkJCQl0YXJnZXRbdGFyaW5kZXgrMV0gID0gKChwb3MgLSBCYXNlNjQpICYgMHgwZikKLSsJCQkJCQkJPDwgNCA7Ci0rCQkJfQotKwkJCXRhcmluZGV4Kys7Ci0rCQkJc3RhdGUgPSAyOwotKwkJCWJyZWFrOwotKwkJY2FzZSAyOgotKwkJCWlmICh0YXJnZXQpIHsKLSsJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggKyAxID49IHRhcmdzaXplKQotKwkJCQkJcmV0dXJuICgtMSk7Ci0rCQkJCXRhcmdldFt0YXJpbmRleF0gICB8PSAgKHBvcyAtIEJhc2U2NCkgPj4gMjsKLSsJCQkJdGFyZ2V0W3RhcmluZGV4KzFdICA9ICgocG9zIC0gQmFzZTY0KSAmIDB4MDMpCi0rCQkJCQkJCTw8IDY7Ci0rCQkJfQotKwkJCXRhcmluZGV4Kys7Ci0rCQkJc3RhdGUgPSAzOwotKwkJCWJyZWFrOwotKwkJY2FzZSAzOgotKwkJCWlmICh0YXJnZXQpIHsKLSsJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggPj0gdGFyZ3NpemUpCi0rCQkJCQlyZXR1cm4gKC0xKTsKLSsJCQkJdGFyZ2V0W3RhcmluZGV4XSB8PSAocG9zIC0gQmFzZTY0KTsKLSsJCQl9Ci0rCQkJdGFyaW5kZXgrKzsKLSsJCQlzdGF0ZSA9IDA7Ci0rCQkJYnJlYWs7Ci0rCQlkZWZhdWx0OgotKwkJCWFib3J0KCk7Ci0rCQl9Ci0rCX0KLSsKLSsJLyoKLSsJICogV2UgYXJlIGRvbmUgZGVjb2RpbmcgQmFzZS02NCBjaGFycy4gIExldCdzIHNlZSBpZiB3ZSBlbmRlZAotKwkgKiBvbiBhIGJ5dGUgYm91bmRhcnksIGFuZC9vciB3aXRoIGVycm9uZW91cyB0cmFpbGluZyBjaGFyYWN0ZXJzLgotKwkgKi8KLSsKLSsJaWYgKGNoID09IFBhZDY0KSB7CQkvKiBXZSBnb3QgYSBwYWQgY2hhci4gKi8KLSsJCWNoID0gKnNyYysrOwkJLyogU2tpcCBpdCwgZ2V0IG5leHQuICovCi0rCQlzd2l0Y2ggKHN0YXRlKSB7Ci0rCQljYXNlIDA6CQkvKiBJbnZhbGlkID0gaW4gZmlyc3QgcG9zaXRpb24gKi8KLSsJCWNhc2UgMToJCS8qIEludmFsaWQgPSBpbiBzZWNvbmQgcG9zaXRpb24gKi8KLSsJCQlyZXR1cm4gKC0xKTsKLSsKLSsJCWNhc2UgMjoJCS8qIFZhbGlkLCBtZWFucyBvbmUgYnl0ZSBvZiBpbmZvICovCi0rCQkJLyogU2tpcCBhbnkgbnVtYmVyIG9mIHNwYWNlcy4gKi8KLSsJCQlmb3IgKCh2b2lkKU5VTEw7IGNoICE9ICdcMCc7IGNoID0gKnNyYysrKQotKwkJCQlpZiAoIWlzc3BhY2UoY2gpKQotKwkJCQkJYnJlYWs7Ci0rCQkJLyogTWFrZSBzdXJlIHRoZXJlIGlzIGFub3RoZXIgdHJhaWxpbmcgPSBzaWduLiAqLwotKwkJCWlmIChjaCAhPSBQYWQ2NCkKLSsJCQkJcmV0dXJuICgtMSk7Ci0rCQkJY2ggPSAqc3JjKys7CQkvKiBTa2lwIHRoZSA9ICovCi0rCQkJLyogRmFsbCB0aHJvdWdoIHRvICJzaW5nbGUgdHJhaWxpbmcgPSIgY2FzZS4gKi8KLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotKwotKwkJY2FzZSAzOgkJLyogVmFsaWQsIG1lYW5zIHR3byBieXRlcyBvZiBpbmZvICovCi0rCQkJLyoKLSsJCQkgKiBXZSBrbm93IHRoaXMgY2hhciBpcyBhbiA9LiAgSXMgdGhlcmUgYW55dGhpbmcgYnV0Ci0rCQkJICogd2hpdGVzcGFjZSBhZnRlciBpdD8KLSsJCQkgKi8KLSsJCQlmb3IgKCh2b2lkKU5VTEw7IGNoICE9ICdcMCc7IGNoID0gKnNyYysrKQotKwkJCQlpZiAoIWlzc3BhY2UoY2gpKQotKwkJCQkJcmV0dXJuICgtMSk7Ci0rCi0rCQkJLyoKLSsJCQkgKiBOb3cgbWFrZSBzdXJlIGZvciBjYXNlcyAyIGFuZCAzIHRoYXQgdGhlICJleHRyYSIKLSsJCQkgKiBiaXRzIHRoYXQgc2xvcHBlZCBwYXN0IHRoZSBsYXN0IGZ1bGwgYnl0ZSB3ZXJlCi0rCQkJICogemVyb3MuICBJZiB3ZSBkb24ndCBjaGVjayB0aGVtLCB0aGV5IGJlY29tZSBhCi0rCQkJICogc3VibGltaW5hbCBjaGFubmVsLgotKwkJCSAqLwotKwkJCWlmICh0YXJnZXQgJiYgdGFyZ2V0W3RhcmluZGV4XSAhPSAwKQotKwkJCQlyZXR1cm4gKC0xKTsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCS8qCi0rCQkgKiBXZSBlbmRlZCBieSBzZWVpbmcgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAgTWFrZSBzdXJlIHdlCi0rCQkgKiBoYXZlIG5vIHBhcnRpYWwgYnl0ZXMgbHlpbmcgYXJvdW5kLgotKwkJICovCi0rCQlpZiAoc3RhdGUgIT0gMCkKLSsJCQlyZXR1cm4gKC0xKTsKLSsJfQotKwotKwlyZXR1cm4gKHRhcmluZGV4KTsKLSt9Ci0rCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDItYWRiLU11c2wtZml4ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLzAwMDItYWRiLU11c2wtZml4ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3YWViYjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8wMDAyLWFkYi1NdXNsLWZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLUZyb20gZjg2NTNlZDBlZGU0YWE3ODFhYjc1OGZjZDQ0ZmRjMDVmZmJlMGIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE1OjUwOjU3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBhZGI6IE11c2wgZml4ZXMKLQotX19ub25udWxsIGlzIGdjYyBzcGVjaWZpYwotaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3Igc2l6ZV90Ci1EbyBub3QgcmVkZWZpbmUgY2xvc2UoKSBhbmQgbHNlZWsoKQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzdGVtL2NvcmUvYWRiL2FkYi5oICAgICAgICAgICAgICAgICAgICB8ICAyICsrCi0gc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYyB8IDEzICsrKysrKysrLS0tLS0KLSBzeXN0ZW0vY29yZS9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jICAgIHwgIDcgKysrKy0tLQotIHN5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmggICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzdGVtL2NvcmUvYWRiL2FkYi5oIGIvc3lzdGVtL2NvcmUvYWRiL2FkYi5oCi1pbmRleCA0NGU1OTgxLi5iY2RjNDlmIDEwMDY0NAotLS0tIGEvc3lzdGVtL2NvcmUvYWRiL2FkYi5oCi0rKysgYi9zeXN0ZW0vY29yZS9hZGIvYWRiLmgKLUBAIC0xOCw3ICsxOCw5IEBACi0gI2RlZmluZSBfX0FEQl9ICi0gCi0gI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSsjaW5jbHVkZSAiZmRldmVudC5oIgotICNpbmNsdWRlICJhZGJfdHJhY2UuaCIKLSAjaW5jbHVkZSAidHJhbnNwb3J0LmgiICAvKiByZWFkeCgpLCB3cml0ZXgoKSAqLwotIAotZGlmZiAtLWdpdCBhL3N5c3RlbS9jb3JlL2FkYi9kaXNhYmxlX3Zlcml0eV9zZXJ2aWNlLmMgYi9zeXN0ZW0vY29yZS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCi1pbmRleCBlZDNkYTUyLi4yOWZhM2Q2IDEwMDY0NAotLS0tIGEvc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYwotKysrIGIvc3lzdGVtL2NvcmUvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYwotQEAgLTE0LDI1ICsxNCwyOCBAQAotICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICAqLwotIAotLSNpbmNsdWRlICJzeXNkZXBzLmgiCi0gCi0gI2RlZmluZSAgVFJBQ0VfVEFHICBUUkFDRV9BREIKLSAjaW5jbHVkZSAiYWRiLmgiCi0rI2luY2x1ZGUgInN5c2RlcHMuaCIKLSsjaW5jbHVkZSAiY3V0aWxzL3Byb3BlcnRpZXMuaCIKLSsjaW5jbHVkZSAiZXh0NF9zYi5oIgotKyNpbmNsdWRlIDxmc19tZ3IuaD4KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi0tI2luY2x1ZGUgImN1dGlscy9wcm9wZXJ0aWVzLmgiCi0tI2luY2x1ZGUgImV4dDRfc2IuaCIKLS0jaW5jbHVkZSA8ZnNfbWdyLmg+Ci0gCi0gI2RlZmluZSBGU1RBQl9QUkVGSVggIi9mc3RhYi4iCi0gc3RydWN0IGZzdGFiICpmc3RhYjsKLSAKLS1fX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKSBfX25vbm51bGwoKDIpKQotK19fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fYXR0cmlidXRlX18oKG5vbm51bGwoKDIpKSkpCi0gc3RhdGljIHZvaWQgd3JpdGVfY29uc29sZShpbnQgZmQsIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQotIHsKLSAgICAgY2hhciBidWZmZXJbMjU2XTsKLWRpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jIGIvc3lzdGVtL2NvcmUvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYwotaW5kZXggOGNiZTg0MC4uOGYwY2NmYiAxMDA2NDQKLS0tLSBhL3N5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMKLSsrKyBiL3N5c3RlbS9jb3JlL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMKLUBAIC0xNCw2ICsxNCwxMCBAQAotICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICAqLwotIAotKyNpbmNsdWRlICJmZGV2ZW50LmgiCi0rI2luY2x1ZGUgImFkYi5oIgotKyNpbmNsdWRlICJzeXNkZXBzLmgiCi0rCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC0yMyw5ICsyNyw2IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotIAotLSNpbmNsdWRlICJmZGV2ZW50LmgiCi0tI2luY2x1ZGUgImFkYi5oIgotLQotICNpbmNsdWRlIDxsaW51eC9mYi5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLWRpZmYgLS1naXQgYS9zeXN0ZW0vY29yZS9hZGIvc3lzZGVwcy5oIGIvc3lzdGVtL2NvcmUvYWRiL3N5c2RlcHMuaAotaW5kZXggY2MxZjgzOS4uZWEzOWFjMyAxMDA2NDQKLS0tLSBhL3N5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmgKLSsrKyBiL3N5c3RlbS9jb3JlL2FkYi9zeXNkZXBzLmgKLUBAIC0xMjMsOCArMTIzLDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICB1bml4X2Nsb3NlKGludCBmZCkKLSB7Ci0gICAgIHJldHVybiBjbG9zZShmZCk7Ci0gfQotLSN1bmRlZiAgIGNsb3NlCi0tI2RlZmluZSAgY2xvc2UgICBfX19feHh4X2Nsb3NlCi0rLy8jdW5kZWYgICBjbG9zZQotKy8vI2RlZmluZSAgY2xvc2UgICBfX19feHh4X2Nsb3NlCi0gCi0gc3RhdGljIF9faW5saW5lX18gIGludCAgdW5peF9yZWFkKGludCAgZmQsIHZvaWQqICBidWYsIHNpemVfdCAgbGVuKQotIHsKLUBAIC0zNjksOCArMzY5LDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICBhZGJfY2xvc2UoaW50IGZkKQotIHsKLSAgICAgcmV0dXJuIGNsb3NlKGZkKTsKLSB9Ci0tI3VuZGVmICAgY2xvc2UKLS0jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKLSsvLyN1bmRlZiAgIGNsb3NlCi0rLy8jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKLSAKLSAKLSBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICBhZGJfcmVhZChpbnQgIGZkLCB2b2lkKiAgYnVmLCBzaXplX3QgIGxlbikKLUBAIC0zOTIsOCArMzkyLDggQEAgc3RhdGljIF9faW5saW5lX18gaW50ICAgYWRiX2xzZWVrKGludCAgZmQsIGludCAgcG9zLCBpbnQgIHdoZXJlKQotIHsKLSAgICAgcmV0dXJuIGxzZWVrKGZkLCBwb3MsIHdoZXJlKTsKLSB9Ci0tI3VuZGVmICAgbHNlZWsKLS0jZGVmaW5lICBsc2VlayAgIF9fX3h4eF9sc2VlawotKy8vI3VuZGVmICAgbHNlZWsKLSsvLyNkZWZpbmUgIGxzZWVrICAgX19feHh4X2xzZWVrCi0gCi0gc3RhdGljIF9faW5saW5lX18gIGludCAgICBhZGJfdW5saW5rKGNvbnN0IGNoYXIqICBwYXRoKQotIHsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy1hZGJkLnNlcnZpY2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMtYWRiZC5zZXJ2aWNlCmluZGV4IDg4ZWQ2ODcuLmRkZjhkN2YgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy1hZGJkLnNlcnZpY2UKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzLWFkYmQuc2VydmljZQpAQCAtMSwxMiArMSwxMyBAQAogW1VuaXRdCiBEZXNjcmlwdGlvbj1BbmRyb2lkIERlYnVnIEJyaWRnZQorQ29uZGl0aW9uUGF0aEV4aXN0cz0vdmFyL3VzYi1kZWJ1Z2dpbmctZW5hYmxlZAorQmVmb3JlPWFuZHJvaWQtc3lzdGVtLnNlcnZpY2UKIAogW1NlcnZpY2VdCiBUeXBlPXNpbXBsZQogUmVzdGFydD1vbi1mYWlsdXJlCi1FeGVjU3RhcnRQcmU9L3Vzci9iaW4vYW5kcm9pZC1nYWRnZXQtc2V0dXAgYWRiCitFeGVjU3RhcnRQcmU9LS91c3IvYmluL2FuZHJvaWQtZ2FkZ2V0LXNldHVwIGFkYgogRXhlY1N0YXJ0PS91c3IvYmluL2FkYmQKLVN0YW5kYXJkT3V0cHV0PW51bGwKIAogW0luc3RhbGxdCiBXYW50ZWRCeT1iYXNpYy50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAxLWFkYi1yZW1vdmUtc2VsaW51eC1leHRlbnNpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDEtYWRiLXJlbW92ZS1zZWxpbnV4LWV4dGVuc2lvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyMGM1MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAxLWFkYi1yZW1vdmUtc2VsaW51eC1leHRlbnNpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gN2I3MjAwNzI3NDEzY2E0YTliYjEzMjIyMWM1NDNlYzAzM2RmZmFmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdpbyBTY2h2ZXpvdiA8c2VyZ2lvLnNjaHZlem92QGNhbm9uaWNhbC5jb20+CitEYXRlOiBXZWQsIDcgU2VwIDIwMTYgMTI6NTg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRiOiByZW1vdmUgc2VsaW51eCBleHRlbnNpb25zCisKKyogZHJvcCB1c2VsZXNzIGluY2x1ZGVzIG9mIEFuZHJvaWQgU0VMSU5VWCBleHRlbnNpb25zCisqIGF2b2lkcyBoYXZpbmcgdG8gY2xvbmUgYW5vdGhlciBtb2R1bGUKKyogdGhpcyBzaG91bGQgYmUgc2VudCB1cHN0cmVhbQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorLS0tCisgYWRiL2ZpbGVfc3luY19zZXJ2aWNlLmMgfCAzIC0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWRiL2ZpbGVfc3luY19zZXJ2aWNlLmMgYi9hZGIvZmlsZV9zeW5jX3NlcnZpY2UuYworaW5kZXggNzkzMzg1ODUxNi4uM2NiZDBjZDg2MyAxMDA2NDQKKy0tLSBhL2FkYi9maWxlX3N5bmNfc2VydmljZS5jCisrKysgYi9hZGIvZmlsZV9zeW5jX3NlcnZpY2UuYworQEAgLTI2LDcgKzI2LDYgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8cHJpdmF0ZS9hbmRyb2lkX2ZpbGVzeXN0ZW1fY29uZmlnLmg+CistI2luY2x1ZGUgPHNlbGludXgvYW5kcm9pZC5oPgorICNpbmNsdWRlICJzeXNkZXBzLmgiCisgCisgI2RlZmluZSBUUkFDRV9UQUcgIFRSQUNFX1NZTkMKK0BAIC03Myw3ICs3Miw2IEBAIHN0YXRpYyBpbnQgbWtkaXJzKGNoYXIgKm5hbWUpCisgICAgICAgICAgICAgICAgICp4ID0gJy8nOworICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBzZWxpbnV4X2FuZHJvaWRfcmVzdG9yZWNvbihuYW1lLCAwKTsKKyAgICAgICAgIH0KKyAgICAgICAgICp4KysgPSAnLyc7CisgICAgIH0KK0BAIC0yNTEsNyArMjQ5LDYgQEAgc3RhdGljIGludCBoYW5kbGVfc2VuZF9maWxlKGludCBzLCBjaGFyICpwYXRoLCB1aWRfdCB1aWQsCisgICAgIGlmKGZkID49IDApIHsKKyAgICAgICAgIHN0cnVjdCB1dGltYnVmIHU7CisgICAgICAgICBhZGJfY2xvc2UoZmQpOworLSAgICAgICAgc2VsaW51eF9hbmRyb2lkX3Jlc3RvcmVjb24ocGF0aCwgMCk7CisgICAgICAgICB1LmFjdGltZSA9IHRpbWVzdGFtcDsKKyAgICAgICAgIHUubW9kdGltZSA9IHRpbWVzdGFtcDsKKyAgICAgICAgIHV0aW1lKHBhdGgsICZ1KTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAyLWFkYi1Vc2UtbG9jYWwtc29ja2V0cy13aGVyZS1hcHByb3ByaWF0ZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAyLWFkYi1Vc2UtbG9jYWwtc29ja2V0cy13aGVyZS1hcHByb3ByaWF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjI3MTEwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDItYWRiLVVzZS1sb2NhbC1zb2NrZXRzLXdoZXJlLWFwcHJvcHJpYXRlLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gZDg1NWYwNDJjYTA5YTM1OGNlYmUyZDNjMWQyOWQ1MTJhZmQ3ZWJiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+CitEYXRlOiBXZWQsIDcgU2VwIDIwMTYgMTI6NTg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRiOiBVc2UgbG9jYWwgc29ja2V0cyB3aGVyZSBhcHByb3ByaWF0ZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIGFkYi9hZGIuYyAgICAgICAgICAgICB8IDYgKysrKystCisgYWRiL2FkYl9jbGllbnQuYyAgICAgIHwgNSArKystLQorIGFkYi90cmFuc3BvcnRfbG9jYWwuYyB8IDMgKystCisgMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWRiL2FkYi5jIGIvYWRiL2FkYi5jCitpbmRleCAxMGExZTBkYTI2Li4wMjdlZGQ5MzU5IDEwMDY0NAorLS0tIGEvYWRiL2FkYi5jCisrKysgYi9hZGIvYWRiLmMKK0BAIC0xMjMwLDcgKzEyMzAsMTEgQEAgaW50IGxhdW5jaF9zZXJ2ZXIoaW50IHNlcnZlcl9wb3J0KQorICAqLworIHZvaWQgYnVpbGRfbG9jYWxfbmFtZShjaGFyKiB0YXJnZXRfc3RyLCBzaXplX3QgdGFyZ2V0X3NpemUsIGludCBzZXJ2ZXJfcG9ydCkKKyB7CistICBzbnByaW50Zih0YXJnZXRfc3RyLCB0YXJnZXRfc2l6ZSwgInRjcDolZCIsIHNlcnZlcl9wb3J0KTsKKysgIGlmIChnTGlzdGVuQWxsID4gMCkgeworKyAgICBzbnByaW50Zih0YXJnZXRfc3RyLCB0YXJnZXRfc2l6ZSwgInRjcDolZCIsIHNlcnZlcl9wb3J0KTsKKysgIH0gZWxzZSB7CisrICAgIHNucHJpbnRmKHRhcmdldF9zdHIsIHRhcmdldF9zaXplLCAibG9jYWw6JWQiLCBzZXJ2ZXJfcG9ydCk7CisrICB9CisgfQorIAorICNpZiAhQURCX0hPU1QKK2RpZmYgLS1naXQgYS9hZGIvYWRiX2NsaWVudC5jIGIvYWRiL2FkYl9jbGllbnQuYworaW5kZXggZWIxNzIwZDIyYy4uYTM4M2ZhZWZlMyAxMDA2NDQKKy0tLSBhL2FkYi9hZGJfY2xpZW50LmMKKysrKyBiL2FkYi9hZGJfY2xpZW50LmMKK0BAIC0xODUsMTIgKzE4NSwxMiBAQCBpbnQgX2FkYl9jb25uZWN0KGNvbnN0IGNoYXIgKnNlcnZpY2UpCisgICAgICAgICBzdHJjcHkoX19hZGJfZXJyb3IsICJzZXJ2aWNlIG5hbWUgdG9vIGxvbmciKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorLSAgICBzbnByaW50Zih0bXAsIHNpemVvZiB0bXAsICIlMDR4IiwgbGVuKTsKKysgICAgc25wcmludGYodG1wLCBzaXplb2YgdG1wLCAiJWQiLCBfX2FkYl9zZXJ2ZXJfcG9ydCk7CisgCisgICAgIGlmIChfX2FkYl9zZXJ2ZXJfbmFtZSkKKyAgICAgICAgIGZkID0gc29ja2V0X25ldHdvcmtfY2xpZW50KF9fYWRiX3NlcnZlcl9uYW1lLCBfX2FkYl9zZXJ2ZXJfcG9ydCwgU09DS19TVFJFQU0pOworICAgICBlbHNlCistICAgICAgICBmZCA9IHNvY2tldF9sb29wYmFja19jbGllbnQoX19hZGJfc2VydmVyX3BvcnQsIFNPQ0tfU1RSRUFNKTsKKysgICAgICAgIGZkID0gc29ja2V0X2xvY2FsX2NsaWVudCh0bXAsIEFORFJPSURfU09DS0VUX05BTUVTUEFDRV9BQlNUUkFDVCwgU09DS19TVFJFQU0pOworIAorICAgICBpZihmZCA8IDApIHsKKyAgICAgICAgIHN0cmNweShfX2FkYl9lcnJvciwgImNhbm5vdCBjb25uZWN0IHRvIGRhZW1vbiIpOworQEAgLTIwMSw2ICsyMDEsNyBAQCBpbnQgX2FkYl9jb25uZWN0KGNvbnN0IGNoYXIgKnNlcnZpY2UpCisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAKKysgICAgc25wcmludGYodG1wLCBzaXplb2YgdG1wLCAiJTA0eCIsIGxlbik7CisgICAgIGlmKHdyaXRleChmZCwgdG1wLCA0KSB8fCB3cml0ZXgoZmQsIHNlcnZpY2UsIGxlbikpIHsKKyAgICAgICAgIHN0cmNweShfX2FkYl9lcnJvciwgIndyaXRlIGZhaWx1cmUgZHVyaW5nIGNvbm5lY3Rpb24iKTsKKyAgICAgICAgIGFkYl9jbG9zZShmZCk7CitkaWZmIC0tZ2l0IGEvYWRiL3RyYW5zcG9ydF9sb2NhbC5jIGIvYWRiL3RyYW5zcG9ydF9sb2NhbC5jCitpbmRleCA5NDhjYzE1ODEyLi43MTU4MmE4Yzg4IDEwMDY0NAorLS0tIGEvYWRiL3RyYW5zcG9ydF9sb2NhbC5jCisrKysgYi9hZGIvdHJhbnNwb3J0X2xvY2FsLmMKK0BAIC0xMjEsNyArMTIxLDggQEAgaW50IGxvY2FsX2Nvbm5lY3RfYXJiaXRyYXJ5X3BvcnRzKGludCBjb25zb2xlX3BvcnQsIGludCBhZGJfcG9ydCkKKyAgICAgfQorICNlbmRpZgorICAgICBpZiAoZmQgPCAwKSB7CistICAgICAgICBmZCA9IHNvY2tldF9sb29wYmFja19jbGllbnQoYWRiX3BvcnQsIFNPQ0tfU1RSRUFNKTsKKysgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIiVkIiwgYWRiX3BvcnQpOworKyAgICAgICAgZmQgPSBzb2NrZXRfbG9jYWxfY2xpZW50KGJ1ZiwgQU5EUk9JRF9TT0NLRVRfTkFNRVNQQUNFX0FCU1RSQUNULCBTT0NLX1NUUkVBTSk7CisgICAgIH0KKyAKKyAgICAgaWYgKGZkID49IDApIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAzLWFkYi1kZWZpbmUtc2hlbGwtY29tbWFuZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDAzLWFkYi1kZWZpbmUtc2hlbGwtY29tbWFuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjFkOWNiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDMtYWRiLWRlZmluZS1zaGVsbC1jb21tYW5kLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gNDQyMWMyZTE5OTQ2ZGNkNjUxZmQ4YWMwMjJiOTY2MjdmYzUyNjE0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhdGhpIEJvdWRyYSA8ZmFib0BkZWJpYW4ub3JnPgorRGF0ZTogV2VkLCA3IFNlcCAyMDE2IDEyOjU4OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkYjogZGVmaW5lIHNoZWxsIGNvbW1hbmQKKword2UgaW50ZW5kIHRvIHJ1biBvbiBMaW51eCBzeXN0ZW0gc28gdGhlIHNoZWxsIGlzIGFsd2F5cyAvYmluL3NoLAorZm9yIHRoZSBob3N0IG9yIHRoZSB0YXJnZXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorLS0tCisgYWRiL3NlcnZpY2VzLmMgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FkYi9zZXJ2aWNlcy5jIGIvYWRiL3NlcnZpY2VzLmMKK2luZGV4IDIxYjA4ZGMyMDEuLmQ0NGIwYzUwNjggMTAwNjQ0CistLS0gYS9hZGIvc2VydmljZXMuYworKysrIGIvYWRiL3NlcnZpY2VzLmMKK0BAIC0yOTksMTEgKzI5OSw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3N1YnByb2NfcmF3KGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnCisgfQorICNlbmRpZiAgLyogIUFCRF9IT1NUICovCisgCistI2lmIEFEQl9IT1NUCisgI2RlZmluZSBTSEVMTF9DT01NQU5EICIvYmluL3NoIgorLSNlbHNlCistI2RlZmluZSBTSEVMTF9DT01NQU5EICIvc3lzdGVtL2Jpbi9zaCIKKy0jZW5kaWYKKyAKKyAjaWYgIUFEQl9IT1NUCisgc3RhdGljIHZvaWQgc3VicHJvY193YWl0ZXJfc2VydmljZShpbnQgZmQsIHZvaWQgKmNvb2tpZSkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDA0LWFkYi1GaXgtYnVpbGQtb24tYmlnLWVuZGlhbi1zeXN0ZW1zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDQtYWRiLUZpeC1idWlsZC1vbi1iaWctZW5kaWFuLXN5c3RlbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllOWQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDA0LWFkYi1GaXgtYnVpbGQtb24tYmlnLWVuZGlhbi1zeXN0ZW1zLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNTQ4YjhjYTYyYzY0YTE2MzA1OTI5ZTJlYWYzZDU0NmQ0OGRlOWMyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogVHVlLCAyMSBGZWIgMjAxNyAxOTo0NjoyNCArMDEwMAorU3ViamVjdDogW1BBVENIXSBhZGI6IEZpeCBidWlsZCBvbiBiaWcgZW5kaWFuIHN5c3RlbXMKKworVGhlIHVzYl9saW51eF9jbGllbnQuYyBmaWxlIGRlZmluZXMgY3B1X3RvX2xlMTYvMzIgYnkgdXNpbmcgdGhlIEMKK2xpYnJhcnkgaHRvbGUxNi8zMiBmdW5jdGlvbiBjYWxscy4gSG93ZXZlciwgY3B1X3RvX2xlMTYvMzIgYXJlIHVzZWQKK3doZW4gaW5pdGlhbGl6aW5nIHN0cnVjdHVyZXMsIGkuZSBpbiBhIGNvbnRleHQgd2hlcmUgYSBmdW5jdGlvbiBjYWxsCitpcyBub3QgYWxsb3dlZC4KKworSXQgd29ya3MgZmluZSBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMgYmVjYXVzZSBodG9sZTE2LzMyIGFyZSBkZWZpbmVkCitieSB0aGUgQyBsaWJyYXJ5IGFzIG5vLW9wcy4gQnV0IG9uIGJpZy1lbmRpYW4gc3lzdGVtcywgdGhleSBhcmUKK2FjdHVhbGx5IGRvaW5nIHNvbWV0aGluZywgd2hpY2ggbWlnaHQgaW52b2x2ZSBjYWxsaW5nIGEgZnVuY3Rpb24sCitjYXVzaW5nIGJ1aWxkIGZhaWx1cmVzLgorCitUbyBzb2x2ZSB0aGlzLCB3ZSBzaW1wbHkgb3Blbi1jb2RlIGNwdV90b19sZTE2LzMyIGluIGEgd2F5IHRoYXQgYWxsb3dzCit0aGVtIHRvIGJlIHVzZWQgd2hlbiBpbml0aWFsaXppbmcgc3RydWN0dXJlcy4KKworU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CistLS0KKyBhZGIvdXNiX2xpbnV4X2NsaWVudC5jIHwgMTEgKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWRiL3VzYl9saW51eF9jbGllbnQuYyBiL2FkYi91c2JfbGludXhfY2xpZW50LmMKK2luZGV4IDg0MjZlMGVhMTQuLjZlOGI1YmJiZDIgMTAwNjQ0CistLS0gYS9hZGIvdXNiX2xpbnV4X2NsaWVudC5jCisrKysgYi9hZGIvdXNiX2xpbnV4X2NsaWVudC5jCitAQCAtMzQsOCArMzQsMTUgQEAKKyAjZGVmaW5lIE1BWF9QQUNLRVRfU0laRV9GUwk2NAorICNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFX0hTCTUxMgorIAorLSNkZWZpbmUgY3B1X3RvX2xlMTYoeCkgIGh0b2xlMTYoeCkKKy0jZGVmaW5lIGNwdV90b19sZTMyKHgpICBodG9sZTMyKHgpCisrI2lmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4KKysjIGRlZmluZSBjcHVfdG9fbGUxNih4KSAoeCkKKysjIGRlZmluZSBjcHVfdG9fbGUzMih4KSAoeCkKKysjZWxzZQorKyMgZGVmaW5lIGNwdV90b19sZTE2KHgpICgoKCh4KSA+PiA4KSAmIDB4ZmZ1KSB8ICgoKHgpICYgMHhmZnUpIDw8IDgpKQorKyMgZGVmaW5lIGNwdV90b19sZTMyKHgpIFwKKysJKCgoKHgpICYgMHhmZjAwMDAwMHUpID4+IDI0KSB8ICgoKHgpICYgMHgwMGZmMDAwMHUpID4+ICA4KSB8IFwKKysJICgoKHgpICYgMHgwMDAwZmYwMHUpIDw8ICA4KSB8ICgoKHgpICYgMHgwMDAwMDBmZnUpIDw8IDI0KSkKKysjZW5kaWYKKyAKKyBzdHJ1Y3QgdXNiX2hhbmRsZQorIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDA1LWFkYi1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDUtYWRiLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkNGFlMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDA1LWFkYi1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzQ4IEBACitGcm9tIDc1M2JjYjU5NzE0MDFiODJmYjJlNjE5N2QzMWM5ZTM4NmY2ZDAzOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNSBTZXAgMjAxNyAxNTo0NjozOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhZGI6IGFkZCBiYXNlNjQgaW1wbGVtZW50YXRpb24KKworbXVzbCBuZWVkcyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYWRiL2FkYl9hdXRoX2NsaWVudC5jIHwgICAyICstCisgYWRiL2Jhc2U2NC5jICAgICAgICAgIHwgMzE1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYWRiL2Jhc2U2NC5jCisKK2RpZmYgLS1naXQgYS9hZGIvYWRiX2F1dGhfY2xpZW50LmMgYi9hZGIvYWRiX2F1dGhfY2xpZW50LmMKK2luZGV4IDU1ZTlkY2FkMTkuLjEwNGI0MTNiOGIgMTAwNjQ0CistLS0gYS9hZGIvYWRiX2F1dGhfY2xpZW50LmMKKysrKyBiL2FkYi9hZGJfYXV0aF9jbGllbnQuYworQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHZvaWQgcmVhZF9rZXlzKGNvbnN0IGNoYXIgKmZpbGUsIHN0cnVjdCBsaXN0bm9kZSAqbGlzdCkKKyAgICAgICAgIGlmIChzZXApCisgICAgICAgICAgICAgKnNlcCA9ICdcMCc7CisgCistICAgICAgICByZXQgPSBfX2I2NF9wdG9uKGJ1ZiwgKHVfY2hhciAqKSZrZXktPmtleSwgc2l6ZW9mKGtleS0+a2V5KSArIDQpOworKyAgICAgICAgcmV0ID0gYjY0X3B0b24oYnVmLCAodV9jaGFyICopJmtleS0+a2V5LCBzaXplb2Yoa2V5LT5rZXkpICsgNCk7CisgICAgICAgICBpZiAocmV0ICE9IHNpemVvZihrZXktPmtleSkpIHsKKyAgICAgICAgICAgICBEKCIlczogSW52YWxpZCBiYXNlNjQgZGF0YSByZXQ9JWRcbiIsIGZpbGUsIHJldCk7CisgICAgICAgICAgICAgZnJlZShrZXkpOworZGlmZiAtLWdpdCBhL2FkYi9iYXNlNjQuYyBiL2FkYi9iYXNlNjQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjk1ZGEyODRkMGQKKy0tLSAvZGV2L251bGwKKysrKyBiL2FkYi9iYXNlNjQuYworQEAgLTAsMCArMSwzMTUgQEAKKysvKgorKyAqIENvcHlyaWdodCAoYykgMTk5Ni0xOTk5IGJ5IEludGVybmV0IFNvZnR3YXJlIENvbnNvcnRpdW0uCisrICoKKysgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKKysgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisrICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBJTlRFUk5FVCBTT0ZUV0FSRSBDT05TT1JUSVVNIERJU0NMQUlNUworKyAqIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMKKysgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIElOVEVSTkVUIFNPRlRXQVJFCisrICogQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMCisrICogREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SCisrICogUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMKKysgKiBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMKKysgKiBTT0ZUV0FSRS4KKysgKi8KKysKKysvKgorKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NSBieSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzLCBJbmMuCisrICoKKysgKiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzLCBJbmMuIChoZXJlaW5hZnRlciBjYWxsZWQgSUJNKSBncmFudHMKKysgKiBwZXJtaXNzaW9uIHVuZGVyIGl0cyBjb3B5cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzCisrICogU29mdHdhcmUgd2l0aCBvciB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQKKysgKiBhbGwgcGFyYWdyYXBocyBvZiB0aGlzIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcywgYW5kIHRoYXQgdGhlIG5hbWUgb2YgSUJNCisrICogbm90IGJlIHVzZWQgaW4gY29ubmVjdGlvbiB3aXRoIHRoZSBtYXJrZXRpbmcgb2YgYW55IHByb2R1Y3QgaW5jb3Jwb3JhdGluZworKyAqIHRoZSBTb2Z0d2FyZSBvciBtb2RpZmljYXRpb25zIHRoZXJlb2YsIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKKysgKiBwZXJtaXNzaW9uLgorKyAqCisrICogVG8gdGhlIGV4dGVudCBpdCBoYXMgYSByaWdodCB0byBkbyBzbywgSUJNIGdyYW50cyBhbiBpbW11bml0eSBmcm9tIHN1aXQKKysgKiB1bmRlciBpdHMgcGF0ZW50cywgaWYgYW55LCBmb3IgdGhlIHVzZSwgc2FsZSBvciBtYW51ZmFjdHVyZSBvZiBwcm9kdWN0cyB0bworKyAqIHRoZSBleHRlbnQgdGhhdCBzdWNoIHByb2R1Y3RzIGFyZSB1c2VkIGZvciBwZXJmb3JtaW5nIERvbWFpbiBOYW1lIFN5c3RlbQorKyAqIGR5bmFtaWMgdXBkYXRlcyBpbiBUQ1AvSVAgbmV0d29ya3MgYnkgbWVhbnMgb2YgdGhlIFNvZnR3YXJlLiAgTm8gaW1tdW5pdHkgaXMKKysgKiBncmFudGVkIGZvciBhbnkgcHJvZHVjdCBwZXIgc2Ugb3IgZm9yIGFueSBvdGhlciBmdW5jdGlvbiBvZiBhbnkgcHJvZHVjdC4KKysgKgorKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBBTkQgSUJNIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywKKysgKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKKysgKiBQQVJUSUNVTEFSIFBVUlBPU0UuICBJTiBOTyBFVkVOVCBTSEFMTCBJQk0gQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwKKysgKiBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBBUklTSU5HCisrICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4KKysgKiBJRiBJQk0gSVMgQVBQUklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKysgKi8KKysKKysjaWYgIWRlZmluZWQoTElOVCkgJiYgIWRlZmluZWQoQ09ERUNFTlRFUikKKytzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gIiRCSU5ESWQ6IGJhc2U2NC5jLHYgOC43IDE5OTkvMTAvMTMgMTY6Mzk6MzMgdml4aWUgRXhwICQiOworKyNlbmRpZiAvKiBub3QgbGludCAqLworKworKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisrI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKysKKysjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKysjaW5jbHVkZSA8YXJwYS9uYW1lc2VyLmg+CisrCisrI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHJlc29sdi5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNkZWZpbmUgQXNzZXJ0KENvbmQpIGlmICghKENvbmQpKSBhYm9ydCgpCisrCisrc3RhdGljIGNvbnN0IGNoYXIgQmFzZTY0W10gPQorKwkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7Cisrc3RhdGljIGNvbnN0IGNoYXIgUGFkNjQgPSAnPSc7CisrCisrLyogKEZyb20gUkZDMTUyMSBhbmQgZHJhZnQtaWV0Zi1kbnNzZWMtc2VjZXh0LTAzLnR4dCkKKysgICBUaGUgZm9sbG93aW5nIGVuY29kaW5nIHRlY2huaXF1ZSBpcyB0YWtlbiBmcm9tIFJGQyAxNTIxIGJ5IEJvcmVuc3RlaW4KKysgICBhbmQgRnJlZWQuICBJdCBpcyByZXByb2R1Y2VkIGhlcmUgaW4gYSBzbGlnaHRseSBlZGl0ZWQgZm9ybSBmb3IKKysgICBjb252ZW5pZW5jZS4KKysKKysgICBBIDY1LWNoYXJhY3RlciBzdWJzZXQgb2YgVVMtQVNDSUkgaXMgdXNlZCwgZW5hYmxpbmcgNiBiaXRzIHRvIGJlCisrICAgcmVwcmVzZW50ZWQgcGVyIHByaW50YWJsZSBjaGFyYWN0ZXIuIChUaGUgZXh0cmEgNjV0aCBjaGFyYWN0ZXIsICI9IiwKKysgICBpcyB1c2VkIHRvIHNpZ25pZnkgYSBzcGVjaWFsIHByb2Nlc3NpbmcgZnVuY3Rpb24uKQorKworKyAgIFRoZSBlbmNvZGluZyBwcm9jZXNzIHJlcHJlc2VudHMgMjQtYml0IGdyb3VwcyBvZiBpbnB1dCBiaXRzIGFzIG91dHB1dAorKyAgIHN0cmluZ3Mgb2YgNCBlbmNvZGVkIGNoYXJhY3RlcnMuIFByb2NlZWRpbmcgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhCisrICAgMjQtYml0IGlucHV0IGdyb3VwIGlzIGZvcm1lZCBieSBjb25jYXRlbmF0aW5nIDMgOC1iaXQgaW5wdXQgZ3JvdXBzLgorKyAgIFRoZXNlIDI0IGJpdHMgYXJlIHRoZW4gdHJlYXRlZCBhcyA0IGNvbmNhdGVuYXRlZCA2LWJpdCBncm91cHMsIGVhY2gKKysgICBvZiB3aGljaCBpcyB0cmFuc2xhdGVkIGludG8gYSBzaW5nbGUgZGlnaXQgaW4gdGhlIGJhc2U2NCBhbHBoYWJldC4KKysKKysgICBFYWNoIDYtYml0IGdyb3VwIGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byBhbiBhcnJheSBvZiA2NCBwcmludGFibGUKKysgICBjaGFyYWN0ZXJzLiBUaGUgY2hhcmFjdGVyIHJlZmVyZW5jZWQgYnkgdGhlIGluZGV4IGlzIHBsYWNlZCBpbiB0aGUKKysgICBvdXRwdXQgc3RyaW5nLgorKworKyAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAxOiBUaGUgQmFzZTY0IEFscGhhYmV0CisrCisrICAgICAgVmFsdWUgRW5jb2RpbmcgIFZhbHVlIEVuY29kaW5nICBWYWx1ZSBFbmNvZGluZyAgVmFsdWUgRW5jb2RpbmcKKysgICAgICAgICAgMCBBICAgICAgICAgICAgMTcgUiAgICAgICAgICAgIDM0IGkgICAgICAgICAgICA1MSB6CisrICAgICAgICAgIDEgQiAgICAgICAgICAgIDE4IFMgICAgICAgICAgICAzNSBqICAgICAgICAgICAgNTIgMAorKyAgICAgICAgICAyIEMgICAgICAgICAgICAxOSBUICAgICAgICAgICAgMzYgayAgICAgICAgICAgIDUzIDEKKysgICAgICAgICAgMyBEICAgICAgICAgICAgMjAgVSAgICAgICAgICAgIDM3IGwgICAgICAgICAgICA1NCAyCisrICAgICAgICAgIDQgRSAgICAgICAgICAgIDIxIFYgICAgICAgICAgICAzOCBtICAgICAgICAgICAgNTUgMworKyAgICAgICAgICA1IEYgICAgICAgICAgICAyMiBXICAgICAgICAgICAgMzkgbiAgICAgICAgICAgIDU2IDQKKysgICAgICAgICAgNiBHICAgICAgICAgICAgMjMgWCAgICAgICAgICAgIDQwIG8gICAgICAgICAgICA1NyA1CisrICAgICAgICAgIDcgSCAgICAgICAgICAgIDI0IFkgICAgICAgICAgICA0MSBwICAgICAgICAgICAgNTggNgorKyAgICAgICAgICA4IEkgICAgICAgICAgICAyNSBaICAgICAgICAgICAgNDIgcSAgICAgICAgICAgIDU5IDcKKysgICAgICAgICAgOSBKICAgICAgICAgICAgMjYgYSAgICAgICAgICAgIDQzIHIgICAgICAgICAgICA2MCA4CisrICAgICAgICAgMTAgSyAgICAgICAgICAgIDI3IGIgICAgICAgICAgICA0NCBzICAgICAgICAgICAgNjEgOQorKyAgICAgICAgIDExIEwgICAgICAgICAgICAyOCBjICAgICAgICAgICAgNDUgdCAgICAgICAgICAgIDYyICsKKysgICAgICAgICAxMiBNICAgICAgICAgICAgMjkgZCAgICAgICAgICAgIDQ2IHUgICAgICAgICAgICA2MyAvCisrICAgICAgICAgMTMgTiAgICAgICAgICAgIDMwIGUgICAgICAgICAgICA0NyB2CisrICAgICAgICAgMTQgTyAgICAgICAgICAgIDMxIGYgICAgICAgICAgICA0OCB3ICAgICAgICAgKHBhZCkgPQorKyAgICAgICAgIDE1IFAgICAgICAgICAgICAzMiBnICAgICAgICAgICAgNDkgeAorKyAgICAgICAgIDE2IFEgICAgICAgICAgICAzMyBoICAgICAgICAgICAgNTAgeQorKworKyAgIFNwZWNpYWwgcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgaWYgZmV3ZXIgdGhhbiAyNCBiaXRzIGFyZSBhdmFpbGFibGUKKysgICBhdCB0aGUgZW5kIG9mIHRoZSBkYXRhIGJlaW5nIGVuY29kZWQuICBBIGZ1bGwgZW5jb2RpbmcgcXVhbnR1bSBpcworKyAgIGFsd2F5cyBjb21wbGV0ZWQgYXQgdGhlIGVuZCBvZiBhIHF1YW50aXR5LiAgV2hlbiBmZXdlciB0aGFuIDI0IGlucHV0CisrICAgYml0cyBhcmUgYXZhaWxhYmxlIGluIGFuIGlucHV0IGdyb3VwLCB6ZXJvIGJpdHMgYXJlIGFkZGVkIChvbiB0aGUKKysgICByaWdodCkgdG8gZm9ybSBhbiBpbnRlZ3JhbCBudW1iZXIgb2YgNi1iaXQgZ3JvdXBzLiAgUGFkZGluZyBhdCB0aGUKKysgICBlbmQgb2YgdGhlIGRhdGEgaXMgcGVyZm9ybWVkIHVzaW5nIHRoZSAnPScgY2hhcmFjdGVyLgorKworKyAgIFNpbmNlIGFsbCBiYXNlNjQgaW5wdXQgaXMgYW4gaW50ZWdyYWwgbnVtYmVyIG9mIG9jdGV0cywgb25seSB0aGUKKysgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrICAgZm9sbG93aW5nIGNhc2VzIGNhbiBhcmlzZToKKysKKysgICAgICAgKDEpIHRoZSBmaW5hbCBxdWFudHVtIG9mIGVuY29kaW5nIGlucHV0IGlzIGFuIGludGVncmFsCisrICAgICAgICAgICBtdWx0aXBsZSBvZiAyNCBiaXRzOyBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkCisrCSAgIG91dHB1dCB3aWxsIGJlIGFuIGludGVncmFsIG11bHRpcGxlIG9mIDQgY2hhcmFjdGVycworKwkgICB3aXRoIG5vICI9IiBwYWRkaW5nLAorKyAgICAgICAoMikgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSA4IGJpdHM7CisrICAgICAgICAgICBoZXJlLCB0aGUgZmluYWwgdW5pdCBvZiBlbmNvZGVkIG91dHB1dCB3aWxsIGJlIHR3bworKwkgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IHR3byAiPSIgcGFkZGluZyBjaGFyYWN0ZXJzLCBvcgorKyAgICAgICAoMykgdGhlIGZpbmFsIHF1YW50dW0gb2YgZW5jb2RpbmcgaW5wdXQgaXMgZXhhY3RseSAxNiBiaXRzOworKyAgICAgICAgICAgaGVyZSwgdGhlIGZpbmFsIHVuaXQgb2YgZW5jb2RlZCBvdXRwdXQgd2lsbCBiZSB0aHJlZQorKwkgICBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5IG9uZSAiPSIgcGFkZGluZyBjaGFyYWN0ZXIuCisrICAgKi8KKysKKytpbnQKKytiNjRfbnRvcChjb25zdCB1aW50OF90KiBzcmMsIHNpemVfdCBzcmNsZW5ndGgsIGNoYXIqIHRhcmdldCwgc2l6ZV90IHRhcmdzaXplKQorK3sKKysJc2l6ZV90IGRhdGFsZW5ndGggPSAwOworKwl1aW50OF90IGlucHV0WzNdOworKwl1aW50OF90IG91dHB1dFs0XTsKKysJc2l6ZV90IGk7CisrCisrCXdoaWxlICgyIDwgc3JjbGVuZ3RoKSB7CisrCQlpbnB1dFswXSA9ICpzcmMrKzsKKysJCWlucHV0WzFdID0gKnNyYysrOworKwkJaW5wdXRbMl0gPSAqc3JjKys7CisrCQlzcmNsZW5ndGggLT0gMzsKKysKKysJCW91dHB1dFswXSA9IGlucHV0WzBdID4+IDI7CisrCQlvdXRwdXRbMV0gPSAoKGlucHV0WzBdICYgMHgwMykgPDwgNCkgKyAoaW5wdXRbMV0gPj4gNCk7CisrCQlvdXRwdXRbMl0gPSAoKGlucHV0WzFdICYgMHgwZikgPDwgMikgKyAoaW5wdXRbMl0gPj4gNik7CisrCQlvdXRwdXRbM10gPSBpbnB1dFsyXSAmIDB4M2Y7CisrCQlBc3NlcnQob3V0cHV0WzBdIDwgNjQpOworKwkJQXNzZXJ0KG91dHB1dFsxXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbMl0gPCA2NCk7CisrCQlBc3NlcnQob3V0cHV0WzNdIDwgNjQpOworKworKwkJaWYgKGRhdGFsZW5ndGggKyA0ID4gdGFyZ3NpemUpCisrCQkJcmV0dXJuICgtMSk7CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMF1dOworKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzFdXTsKKysJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFsyXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbM11dOworKwl9CisrCisrCS8qIE5vdyB3ZSB3b3JyeSBhYm91dCBwYWRkaW5nLiAqLworKwlpZiAoMCAhPSBzcmNsZW5ndGgpIHsKKysJCS8qIEdldCB3aGF0J3MgbGVmdC4gKi8KKysJCWlucHV0WzBdID0gaW5wdXRbMV0gPSBpbnB1dFsyXSA9ICdcMCc7CisrCQlmb3IgKGkgPSAwOyBpIDwgc3JjbGVuZ3RoOyBpKyspCisrCQkJaW5wdXRbaV0gPSAqc3JjKys7CisrCisrCQlvdXRwdXRbMF0gPSBpbnB1dFswXSA+PiAyOworKwkJb3V0cHV0WzFdID0gKChpbnB1dFswXSAmIDB4MDMpIDw8IDQpICsgKGlucHV0WzFdID4+IDQpOworKwkJb3V0cHV0WzJdID0gKChpbnB1dFsxXSAmIDB4MGYpIDw8IDIpICsgKGlucHV0WzJdID4+IDYpOworKwkJQXNzZXJ0KG91dHB1dFswXSA8IDY0KTsKKysJCUFzc2VydChvdXRwdXRbMV0gPCA2NCk7CisrCQlBc3NlcnQob3V0cHV0WzJdIDwgNjQpOworKworKwkJaWYgKGRhdGFsZW5ndGggKyA0ID4gdGFyZ3NpemUpCisrCQkJcmV0dXJuICgtMSk7CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IEJhc2U2NFtvdXRwdXRbMF1dOworKwkJdGFyZ2V0W2RhdGFsZW5ndGgrK10gPSBCYXNlNjRbb3V0cHV0WzFdXTsKKysJCWlmIChzcmNsZW5ndGggPT0gMSkKKysJCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IFBhZDY0OworKwkJZWxzZQorKwkJCXRhcmdldFtkYXRhbGVuZ3RoKytdID0gQmFzZTY0W291dHB1dFsyXV07CisrCQl0YXJnZXRbZGF0YWxlbmd0aCsrXSA9IFBhZDY0OworKwl9CisrCWlmIChkYXRhbGVuZ3RoID49IHRhcmdzaXplKQorKwkJcmV0dXJuICgtMSk7CisrCXRhcmdldFtkYXRhbGVuZ3RoXSA9ICdcMCc7CS8qIFJldHVybmVkIHZhbHVlIGRvZXNuJ3QgY291bnQgXDAuICovCisrCXJldHVybiAoZGF0YWxlbmd0aCk7CisrfQorKworKy8qIHNraXBzIGFsbCB3aGl0ZXNwYWNlIGFueXdoZXJlLgorKyAgIGNvbnZlcnRzIGNoYXJhY3RlcnMsIGZvdXIgYXQgYSB0aW1lLCBzdGFydGluZyBhdCAob3IgYWZ0ZXIpCisrICAgc3JjIGZyb20gYmFzZSAtIDY0IG51bWJlcnMgaW50byB0aHJlZSA4IGJpdCBieXRlcyBpbiB0aGUgdGFyZ2V0IGFyZWEuCisrICAgaXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRhdGEgYnl0ZXMgc3RvcmVkIGF0IHRoZSB0YXJnZXQsIG9yIC0xIG9uIGVycm9yLgorKyAqLworKworK2ludCBiNjRfcHRvbihjb25zdCBjaGFyKiBzcmMsIHVpbnQ4X3QqIHRhcmdldCwgc2l6ZV90IHRhcmdzaXplKQorK3sKKysJaW50IHRhcmluZGV4LCBzdGF0ZSwgY2g7CisrCWNoYXIgKnBvczsKKysKKysJc3RhdGUgPSAwOworKwl0YXJpbmRleCA9IDA7CisrCisrCXdoaWxlICgoY2ggPSAqc3JjKyspICE9ICdcMCcpIHsKKysJCWlmIChpc3NwYWNlKGNoKSkJLyogU2tpcCB3aGl0ZXNwYWNlIGFueXdoZXJlLiAqLworKwkJCWNvbnRpbnVlOworKworKwkJaWYgKGNoID09IFBhZDY0KQorKwkJCWJyZWFrOworKworKwkJcG9zID0gc3RyY2hyKEJhc2U2NCwgY2gpOworKwkJaWYgKHBvcyA9PSAwKSAJCS8qIEEgbm9uLWJhc2U2NCBjaGFyYWN0ZXIuICovCisrCQkJcmV0dXJuICgtMSk7CisrCisrCQlzd2l0Y2ggKHN0YXRlKSB7CisrCQljYXNlIDA6CisrCQkJaWYgKHRhcmdldCkgeworKwkJCQlpZiAoKHNpemVfdCl0YXJpbmRleCA+PSB0YXJnc2l6ZSkKKysJCQkJCXJldHVybiAoLTEpOworKwkJCQl0YXJnZXRbdGFyaW5kZXhdID0gKHBvcyAtIEJhc2U2NCkgPDwgMjsKKysJCQl9CisrCQkJc3RhdGUgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAxOgorKwkJCWlmICh0YXJnZXQpIHsKKysJCQkJaWYgKChzaXplX3QpdGFyaW5kZXggKyAxID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gICB8PSAgKHBvcyAtIEJhc2U2NCkgPj4gNDsKKysJCQkJdGFyZ2V0W3RhcmluZGV4KzFdICA9ICgocG9zIC0gQmFzZTY0KSAmIDB4MGYpCisrCQkJCQkJCTw8IDQgOworKwkJCX0KKysJCQl0YXJpbmRleCsrOworKwkJCXN0YXRlID0gMjsKKysJCQlicmVhazsKKysJCWNhc2UgMjoKKysJCQlpZiAodGFyZ2V0KSB7CisrCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ICsgMSA+PSB0YXJnc2l6ZSkKKysJCQkJCXJldHVybiAoLTEpOworKwkJCQl0YXJnZXRbdGFyaW5kZXhdICAgfD0gIChwb3MgLSBCYXNlNjQpID4+IDI7CisrCQkJCXRhcmdldFt0YXJpbmRleCsxXSAgPSAoKHBvcyAtIEJhc2U2NCkgJiAweDAzKQorKwkJCQkJCQk8PCA2OworKwkJCX0KKysJCQl0YXJpbmRleCsrOworKwkJCXN0YXRlID0gMzsKKysJCQlicmVhazsKKysJCWNhc2UgMzoKKysJCQlpZiAodGFyZ2V0KSB7CisrCQkJCWlmICgoc2l6ZV90KXRhcmluZGV4ID49IHRhcmdzaXplKQorKwkJCQkJcmV0dXJuICgtMSk7CisrCQkJCXRhcmdldFt0YXJpbmRleF0gfD0gKHBvcyAtIEJhc2U2NCk7CisrCQkJfQorKwkJCXRhcmluZGV4Kys7CisrCQkJc3RhdGUgPSAwOworKwkJCWJyZWFrOworKwkJZGVmYXVsdDoKKysJCQlhYm9ydCgpOworKwkJfQorKwl9CisrCisrCS8qCisrCSAqIFdlIGFyZSBkb25lIGRlY29kaW5nIEJhc2UtNjQgY2hhcnMuICBMZXQncyBzZWUgaWYgd2UgZW5kZWQKKysJICogb24gYSBieXRlIGJvdW5kYXJ5LCBhbmQvb3Igd2l0aCBlcnJvbmVvdXMgdHJhaWxpbmcgY2hhcmFjdGVycy4KKysJICovCisrCisrCWlmIChjaCA9PSBQYWQ2NCkgewkJLyogV2UgZ290IGEgcGFkIGNoYXIuICovCisrCQljaCA9ICpzcmMrKzsJCS8qIFNraXAgaXQsIGdldCBuZXh0LiAqLworKwkJc3dpdGNoIChzdGF0ZSkgeworKwkJY2FzZSAwOgkJLyogSW52YWxpZCA9IGluIGZpcnN0IHBvc2l0aW9uICovCisrCQljYXNlIDE6CQkvKiBJbnZhbGlkID0gaW4gc2Vjb25kIHBvc2l0aW9uICovCisrCQkJcmV0dXJuICgtMSk7CisrCisrCQljYXNlIDI6CQkvKiBWYWxpZCwgbWVhbnMgb25lIGJ5dGUgb2YgaW5mbyAqLworKwkJCS8qIFNraXAgYW55IG51bWJlciBvZiBzcGFjZXMuICovCisrCQkJZm9yICgodm9pZClOVUxMOyBjaCAhPSAnXDAnOyBjaCA9ICpzcmMrKykKKysJCQkJaWYgKCFpc3NwYWNlKGNoKSkKKysJCQkJCWJyZWFrOworKwkJCS8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBhbm90aGVyIHRyYWlsaW5nID0gc2lnbi4gKi8KKysJCQlpZiAoY2ggIT0gUGFkNjQpCisrCQkJCXJldHVybiAoLTEpOworKwkJCWNoID0gKnNyYysrOwkJLyogU2tpcCB0aGUgPSAqLworKwkJCS8qIEZhbGwgdGhyb3VnaCB0byAic2luZ2xlIHRyYWlsaW5nID0iIGNhc2UuICovCisrCQkJLyogRkFMTFRIUk9VR0ggKi8KKysKKysJCWNhc2UgMzoJCS8qIFZhbGlkLCBtZWFucyB0d28gYnl0ZXMgb2YgaW5mbyAqLworKwkJCS8qCisrCQkJICogV2Uga25vdyB0aGlzIGNoYXIgaXMgYW4gPS4gIElzIHRoZXJlIGFueXRoaW5nIGJ1dAorKwkJCSAqIHdoaXRlc3BhY2UgYWZ0ZXIgaXQ/CisrCQkJICovCisrCQkJZm9yICgodm9pZClOVUxMOyBjaCAhPSAnXDAnOyBjaCA9ICpzcmMrKykKKysJCQkJaWYgKCFpc3NwYWNlKGNoKSkKKysJCQkJCXJldHVybiAoLTEpOworKworKwkJCS8qCisrCQkJICogTm93IG1ha2Ugc3VyZSBmb3IgY2FzZXMgMiBhbmQgMyB0aGF0IHRoZSAiZXh0cmEiCisrCQkJICogYml0cyB0aGF0IHNsb3BwZWQgcGFzdCB0aGUgbGFzdCBmdWxsIGJ5dGUgd2VyZQorKwkJCSAqIHplcm9zLiAgSWYgd2UgZG9uJ3QgY2hlY2sgdGhlbSwgdGhleSBiZWNvbWUgYQorKwkJCSAqIHN1YmxpbWluYWwgY2hhbm5lbC4KKysJCQkgKi8KKysJCQlpZiAodGFyZ2V0ICYmIHRhcmdldFt0YXJpbmRleF0gIT0gMCkKKysJCQkJcmV0dXJuICgtMSk7CisrCQl9CisrCX0gZWxzZSB7CisrCQkvKgorKwkJICogV2UgZW5kZWQgYnkgc2VlaW5nIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gIE1ha2Ugc3VyZSB3ZQorKwkJICogaGF2ZSBubyBwYXJ0aWFsIGJ5dGVzIGx5aW5nIGFyb3VuZC4KKysJCSAqLworKwkJaWYgKHN0YXRlICE9IDApCisrCQkJcmV0dXJuICgtMSk7CisrCX0KKysKKysJcmV0dXJuICh0YXJpbmRleCk7CisrfQorKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDYtYWRiLU11c2wtZml4ZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAwNi1hZGItTXVzbC1maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQzODNmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDYtYWRiLU11c2wtZml4ZXMucGF0Y2gKQEAgLTAsMCArMSwxMzEgQEAKK0Zyb20gNjJkOTU3YTEyNzFjODhlYzA4ZDY3OTg0ZmJlMzE2MDFmMGJkNDFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE1OjUwOjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkYjogTXVzbCBmaXhlcworCitfX25vbm51bGwgaXMgZ2NjIHNwZWNpZmljCitpbmNsdWRlIHN5cy90eXBlcy5oIGZvciBzaXplX3QKK0RvIG5vdCByZWRlZmluZSBjbG9zZSgpIGFuZCBsc2VlaygpCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBhZGIvYWRiLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKysKKyBhZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jIHwgMTMgKysrKysrKystLS0tLQorIGFkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMgICAgfCAgNyArKysrLS0tCisgYWRiL3N5c2RlcHMuaCAgICAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hZGIvYWRiLmggYi9hZGIvYWRiLmgKK2luZGV4IDQ0ZTU5ODFiZGMuLmJjZGM0OWY2M2MgMTAwNjQ0CistLS0gYS9hZGIvYWRiLmgKKysrKyBiL2FkYi9hZGIuaAorQEAgLTE4LDcgKzE4LDkgQEAKKyAjZGVmaW5lIF9fQURCX0gKKyAKKyAjaW5jbHVkZSA8bGltaXRzLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorKyNpbmNsdWRlICJmZGV2ZW50LmgiCisgI2luY2x1ZGUgImFkYl90cmFjZS5oIgorICNpbmNsdWRlICJ0cmFuc3BvcnQuaCIgIC8qIHJlYWR4KCksIHdyaXRleCgpICovCisgCitkaWZmIC0tZ2l0IGEvYWRiL2Rpc2FibGVfdmVyaXR5X3NlcnZpY2UuYyBiL2FkYi9kaXNhYmxlX3Zlcml0eV9zZXJ2aWNlLmMKK2luZGV4IGVkM2RhNTIxMDguLjI5ZmEzZDY1YTkgMTAwNjQ0CistLS0gYS9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCisrKysgYi9hZGIvZGlzYWJsZV92ZXJpdHlfc2VydmljZS5jCitAQCAtMTQsMjUgKzE0LDI4IEBACisgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgICovCisgCistI2luY2x1ZGUgInN5c2RlcHMuaCIKKyAKKyAjZGVmaW5lICBUUkFDRV9UQUcgIFRSQUNFX0FEQgorICNpbmNsdWRlICJhZGIuaCIKKysjaW5jbHVkZSAic3lzZGVwcy5oIgorKyNpbmNsdWRlICJjdXRpbHMvcHJvcGVydGllcy5oIgorKyNpbmNsdWRlICJleHQ0X3NiLmgiCisrI2luY2x1ZGUgPGZzX21nci5oPgorIAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAKKy0jaW5jbHVkZSAiY3V0aWxzL3Byb3BlcnRpZXMuaCIKKy0jaW5jbHVkZSAiZXh0NF9zYi5oIgorLSNpbmNsdWRlIDxmc19tZ3IuaD4KKyAKKyAjZGVmaW5lIEZTVEFCX1BSRUZJWCAiL2ZzdGFiLiIKKyBzdHJ1Y3QgZnN0YWIgKmZzdGFiOworIAorLV9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpIF9fbm9ubnVsbCgoMikpCisrX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhwcmludGYsIDIsIDMpKSkgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgoMikpKSkKKyBzdGF0aWMgdm9pZCB3cml0ZV9jb25zb2xlKGludCBmZCwgY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCisgeworICAgICBjaGFyIGJ1ZmZlclsyNTZdOworZGlmZiAtLWdpdCBhL2FkYi9mcmFtZWJ1ZmZlcl9zZXJ2aWNlLmMgYi9hZGIvZnJhbWVidWZmZXJfc2VydmljZS5jCitpbmRleCA4Y2JlODQwM2NjLi44ZjBjY2ZiN2FhIDEwMDY0NAorLS0tIGEvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYworKysrIGIvYWRiL2ZyYW1lYnVmZmVyX3NlcnZpY2UuYworQEAgLTE0LDYgKzE0LDEwIEBACisgICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgICovCisgCisrI2luY2x1ZGUgImZkZXZlbnQuaCIKKysjaW5jbHVkZSAiYWRiLmgiCisrI2luY2x1ZGUgInN5c2RlcHMuaCIKKysKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorQEAgLTIzLDkgKzI3LDYgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgCistI2luY2x1ZGUgImZkZXZlbnQuaCIKKy0jaW5jbHVkZSAiYWRiLmgiCistCisgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorZGlmZiAtLWdpdCBhL2FkYi9zeXNkZXBzLmggYi9hZGIvc3lzZGVwcy5oCitpbmRleCBjYzFmODM5ZTlmLi5lYTM5YWMzOWNjIDEwMDY0NAorLS0tIGEvYWRiL3N5c2RlcHMuaAorKysrIGIvYWRiL3N5c2RlcHMuaAorQEAgLTEyMyw4ICsxMjMsOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgIHVuaXhfY2xvc2UoaW50IGZkKQorIHsKKyAgICAgcmV0dXJuIGNsb3NlKGZkKTsKKyB9CistI3VuZGVmICAgY2xvc2UKKy0jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKysvLyN1bmRlZiAgIGNsb3NlCisrLy8jZGVmaW5lICBjbG9zZSAgIF9fX194eHhfY2xvc2UKKyAKKyBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICB1bml4X3JlYWQoaW50ICBmZCwgdm9pZCogIGJ1Ziwgc2l6ZV90ICBsZW4pCisgeworQEAgLTM2OSw4ICszNjksOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgIGFkYl9jbG9zZShpbnQgZmQpCisgeworICAgICByZXR1cm4gY2xvc2UoZmQpOworIH0KKy0jdW5kZWYgICBjbG9zZQorLSNkZWZpbmUgIGNsb3NlICAgX19fX3h4eF9jbG9zZQorKy8vI3VuZGVmICAgY2xvc2UKKysvLyNkZWZpbmUgIGNsb3NlICAgX19fX3h4eF9jbG9zZQorIAorIAorIHN0YXRpYyBfX2lubGluZV9fICBpbnQgIGFkYl9yZWFkKGludCAgZmQsIHZvaWQqICBidWYsIHNpemVfdCAgbGVuKQorQEAgLTM5Miw4ICszOTIsOCBAQCBzdGF0aWMgX19pbmxpbmVfXyBpbnQgICBhZGJfbHNlZWsoaW50ICBmZCwgaW50ICBwb3MsIGludCAgd2hlcmUpCisgeworICAgICByZXR1cm4gbHNlZWsoZmQsIHBvcywgd2hlcmUpOworIH0KKy0jdW5kZWYgICBsc2VlaworLSNkZWZpbmUgIGxzZWVrICAgX19feHh4X2xzZWVrCisrLy8jdW5kZWYgICBsc2VlaworKy8vI2RlZmluZSAgbHNlZWsgICBfX194eHhfbHNlZWsKKyAKKyBzdGF0aWMgX19pbmxpbmVfXyAgaW50ICAgIGFkYl91bmxpbmsoY29uc3QgY2hhciogIHBhdGgpCisgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDctYWRiLXVzYl9saW51eC5jLWZpeC1idWlsZC13aXRoLWdsaWJjLTIuMjgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAwNy1hZGItdXNiX2xpbnV4LmMtZml4LWJ1aWxkLXdpdGgtZ2xpYmMtMi4yOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDJhOTU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDctYWRiLXVzYl9saW51eC5jLWZpeC1idWlsZC13aXRoLWdsaWJjLTIuMjgucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSBkZTM5M2JiYTQxYzhmZWZmOTMyYzc3ZDZjMzAyMzM5NDVmMzgwZDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBdWcgMjAxOCAxMzoyMzozNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBhZGI6IHVzYl9saW51eC5jOiBmaXggYnVpbGQgd2l0aCBnbGliYy0yLjI4CisKKyogaW5jbHVkZSBzeXNtYWNyb3MgZm9yIG1ham9yLCBtaW5vcgorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CistLS0KKyBhZGIvdXNiX2xpbnV4LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2FkYi91c2JfbGludXguYyBiL2FkYi91c2JfbGludXguYworaW5kZXggZjE2YmRkMDM2MS4uYzhhNzczMjQ0MSAxMDA2NDQKKy0tLSBhL2FkYi91c2JfbGludXguYworKysrIGIvYWRiL3VzYl9saW51eC5jCitAQCAtMjIsNiArMjIsNyBAQAorICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAwOC1hZGItQWxsb3ctYWRiZC10by1iZS1yYW4tYXMtcm9vdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDA4LWFkYi1BbGxvdy1hZGJkLXRvLWJlLXJhbi1hcy1yb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMjIzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAwOC1hZGItQWxsb3ctYWRiZC10by1iZS1yYW4tYXMtcm9vdC5wYXRjaApAQCAtMCwwICsxLDIxIEBACitGcm9tIDNhNzg4ZTkxNjhjOWI5ZWFjNjZjNGZhNDc5NDEzZjRhOTVjNjFiZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGbG9yZW50IFJldmVzdCA8cmV2ZXN0ZmxvQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMzAgT2N0IDIwMTcgMjE6MDU6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRiOiBBbGxvdyBhZGJkIHRvIGJlIHJhbiBhcyByb290CisKKy0tLQorIGFkYi9hZGIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvYWRiL2FkYi5jIGIvYWRiL2FkYi5jCitpbmRleCAwMjdlZGQ5MzU5Li5lMGY3ZWNkZTQ1IDEwMDY0NAorLS0tIGEvYWRiL2FkYi5jCisrKysgYi9hZGIvYWRiLmMKK0BAIC0xMjcxLDYgKzEyNzEsNyBAQCBzdGF0aWMgaW50IHNob3VsZF9kcm9wX3ByaXZpbGVnZXMoKSB7CisgICAgIGludCBzZWN1cmUgPSAwOworICAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgCisrICAgIHJldHVybiAwOworICAgIC8qIHJ1biBhZGJkIGluIHNlY3VyZSBtb2RlIGlmIHJvLnNlY3VyZSBpcyBzZXQgYW5kCisgICAgICoqIHdlIGFyZSBub3QgaW4gdGhlIGVtdWxhdG9yCisgICAgICovCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAwOS1ta2Jvb3RpbWctQWRkLWR0LXBhcmFtZXRlci10by1zcGVjaWZ5LURULWltYWdlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDktbWtib290aW1nLUFkZC1kdC1wYXJhbWV0ZXItdG8tc3BlY2lmeS1EVC1pbWFnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGRjNmUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMDktbWtib290aW1nLUFkZC1kdC1wYXJhbWV0ZXItdG8tc3BlY2lmeS1EVC1pbWFnZS5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorRnJvbSBkZDE5NTc3OGE5OTMwYjc5NjdiMjFhM2I4ZWIzOTBiNzAyNTNkYmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgTmcgPGRhdmVAY29kZWF1cm9yYS5vcmc+CitEYXRlOiBGcmksIDI3IEp1bCAyMDEyIDE3OjE1OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1rYm9vdGltZzogQWRkIC0tZHQgcGFyYW1ldGVyIHRvIHNwZWNpZnkgRFQgaW1hZ2UKKworTmV3IG9wdGlvbmFsIC0tZHQgcGFyYW1ldGVyIHRvIHNwZWNpZnkgYSBrZXJuZWwgZGV2aWNlCit0cmVlIGltYWdlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIG1rYm9vdGltZy9ib290aW1nLmggICB8ICA3ICsrKysrLS0KKyBta2Jvb3RpbWcvbWtib290aW1nLmMgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ta2Jvb3RpbWcvYm9vdGltZy5oIGIvbWtib290aW1nL2Jvb3RpbWcuaAoraW5kZXggOTE3MWQ4NWE3Yi4uMzA4YzUzN2Q2YiAxMDA2NDQKKy0tLSBhL21rYm9vdGltZy9ib290aW1nLmgKKysrKyBiL21rYm9vdGltZy9ib290aW1nLmgKK0BAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBib290X2ltZ19oZHIKKyAKKyAgICAgdW5zaWduZWQgdGFnc19hZGRyOyAgICAvKiBwaHlzaWNhbCBhZGRyIGZvciBrZXJuZWwgdGFncyAqLworICAgICB1bnNpZ25lZCBwYWdlX3NpemU7ICAgIC8qIGZsYXNoIHBhZ2Ugc2l6ZSB3ZSBhc3N1bWUgKi8KKy0gICAgdW5zaWduZWQgdW51c2VkWzJdOyAgICAvKiBmdXR1cmUgZXhwYW5zaW9uOiBzaG91bGQgYmUgMCAqLworLQorKyAgICB1bnNpZ25lZCBkdF9zaXplOyAgICAgIC8qIGRldmljZSB0cmVlIGluIGJ5dGVzICovCisrICAgIHVuc2lnbmVkIHVudXNlZDsgICAgICAgLyogZnV0dXJlIGV4cGFuc2lvbjogc2hvdWxkIGJlIDAgKi8KKyAgICAgdW5zaWduZWQgY2hhciBuYW1lW0JPT1RfTkFNRV9TSVpFXTsgLyogYXNjaWl6IHByb2R1Y3QgbmFtZSAqLworIAorICAgICB1bnNpZ25lZCBjaGFyIGNtZGxpbmVbQk9PVF9BUkdTX1NJWkVdOworQEAgLTY0LDEwICs2NCwxMyBAQCBzdHJ1Y3QgYm9vdF9pbWdfaGRyCisgKiogKy0tLS0tLS0tLS0tLS0tLS0tKworICoqIHwgc2Vjb25kIHN0YWdlICAgIHwgbyBwYWdlcworICoqICstLS0tLS0tLS0tLS0tLS0tLSsKKysqKiB8IGRldmljZSB0cmVlICAgICB8IHAgcGFnZXMKKysqKiArLS0tLS0tLS0tLS0tLS0tLS0rCisgKioKKyAqKiBuID0gKGtlcm5lbF9zaXplICsgcGFnZV9zaXplIC0gMSkgLyBwYWdlX3NpemUKKyAqKiBtID0gKHJhbWRpc2tfc2l6ZSArIHBhZ2Vfc2l6ZSAtIDEpIC8gcGFnZV9zaXplCisgKiogbyA9IChzZWNvbmRfc2l6ZSArIHBhZ2Vfc2l6ZSAtIDEpIC8gcGFnZV9zaXplCisrKiogcCA9IChkdF9zaXplICsgcGFnZV9zaXplIC0gMSkgLyBwYWdlX3NpemUKKyAqKgorICoqIDAuIGFsbCBlbnRpdGllcyBhcmUgcGFnZV9zaXplIGFsaWduZWQgaW4gZmxhc2gKKyAqKiAxLiBrZXJuZWwgYW5kIHJhbWRpc2sgYXJlIHJlcXVpcmVkIChzaXplICE9IDApCitkaWZmIC0tZ2l0IGEvbWtib290aW1nL21rYm9vdGltZy5jIGIvbWtib290aW1nL21rYm9vdGltZy5jCitpbmRleCBmYzkyYjRkYzMwLi42NTgwNTJjZGYyIDEwMDY0NAorLS0tIGEvbWtib290aW1nL21rYm9vdGltZy5jCisrKysgYi9ta2Jvb3RpbWcvbWtib290aW1nLmMKK0BAIC02NSw2ICs2NSw3IEBAIGludCB1c2FnZSh2b2lkKQorICAgICAgICAgICAgICIgICAgICAgWyAtLWJvYXJkIDxib2FyZG5hbWU+IF1cbiIKKyAgICAgICAgICAgICAiICAgICAgIFsgLS1iYXNlIDxhZGRyZXNzPiBdXG4iCisgICAgICAgICAgICAgIiAgICAgICBbIC0tcGFnZXNpemUgPHBhZ2VzaXplPiBdXG4iCisrICAgICAgICAgICAgIiAgICAgICBbIC0tZHQgPGZpbGVuYW1lPiBdXG4iCisgICAgICAgICAgICAgIiAgICAgICAtb3wtLW91dHB1dCA8ZmlsZW5hbWU+XG4iCisgICAgICAgICAgICAgKTsKKyAgICAgcmV0dXJuIDE7CitAQCAtMTA1LDYgKzEwNiw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgY2hhciAqY21kbGluZSA9ICIiOworICAgICBjaGFyICpib290aW1nID0gMDsKKyAgICAgY2hhciAqYm9hcmQgPSAiIjsKKysgICAgY2hhciAqZHRfZm4gPSAwOworKyAgICB2b2lkICpkdF9kYXRhID0gMDsKKyAgICAgdW5zaWduZWQgcGFnZXNpemUgPSAyMDQ4OworICAgICBpbnQgZmQ7CisgICAgIFNIQV9DVFggY3R4OworQEAgLTE1OCw2ICsxNjEsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJlcnJvcjogdW5zdXBwb3J0ZWQgcGFnZSBzaXplICVkXG4iLCBwYWdlc2l6ZSk7CisgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgaWYoIXN0cmNtcChhcmcsICItLWR0IikpIHsKKysgICAgICAgICAgICBkdF9mbiA9IHZhbDsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgcmV0dXJuIHVzYWdlKCk7CisgICAgICAgICB9CitAQCAtMjMyLDYgKzIzNywxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICB9CisgICAgIH0KKyAKKysgICAgaWYoZHRfZm4pIHsKKysgICAgICAgIGR0X2RhdGEgPSBsb2FkX2ZpbGUoZHRfZm4sICZoZHIuZHRfc2l6ZSk7CisrICAgICAgICBpZiAoZHRfZGF0YSA9PSAwKSB7CisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsImVycm9yOiBjb3VsZCBub3QgbG9hZCBkZXZpY2UgdHJlZSBpbWFnZSAnJXMnXG4iLCBkdF9mbik7CisrICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgLyogcHV0IGEgaGFzaCBvZiB0aGUgY29udGVudHMgaW4gdGhlIGhlYWRlciBzbyBib290IGltYWdlcyBjYW4gYmUKKyAgICAgICogZGlmZmVyZW50aWF0ZWQgYmFzZWQgb24gdGhlaXIgZmlyc3QgMmsuCisgICAgICAqLworQEAgLTI0Miw2ICsyNTUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICBTSEFfdXBkYXRlKCZjdHgsICZoZHIucmFtZGlza19zaXplLCBzaXplb2YoaGRyLnJhbWRpc2tfc2l6ZSkpOworICAgICBTSEFfdXBkYXRlKCZjdHgsIHNlY29uZF9kYXRhLCBoZHIuc2Vjb25kX3NpemUpOworICAgICBTSEFfdXBkYXRlKCZjdHgsICZoZHIuc2Vjb25kX3NpemUsIHNpemVvZihoZHIuc2Vjb25kX3NpemUpKTsKKysgICAgaWYoZHRfZGF0YSkgeworKyAgICAgICAgU0hBX3VwZGF0ZSgmY3R4LCBkdF9kYXRhLCBoZHIuZHRfc2l6ZSk7CisrICAgICAgICBTSEFfdXBkYXRlKCZjdHgsICZoZHIuZHRfc2l6ZSwgc2l6ZW9mKGhkci5kdF9zaXplKSk7CisrICAgIH0KKyAgICAgc2hhID0gU0hBX2ZpbmFsKCZjdHgpOworICAgICBtZW1jcHkoaGRyLmlkLCBzaGEsCisgICAgICAgICAgICBTSEFfRElHRVNUX1NJWkUgPiBzaXplb2YoaGRyLmlkKSA/IHNpemVvZihoZHIuaWQpIDogU0hBX0RJR0VTVF9TSVpFKTsKK0BAIC0yNjYsNiArMjgzLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIGlmKHdyaXRlX3BhZGRpbmcoZmQsIHBhZ2VzaXplLCBoZHIuc2Vjb25kX3NpemUpKSBnb3RvIGZhaWw7CisgICAgIH0KKyAKKysgICAgaWYoZHRfZGF0YSkgeworKyAgICAgICAgaWYod3JpdGUoZmQsIGR0X2RhdGEsIGhkci5kdF9zaXplKSAhPSAoc3NpemVfdCkgaGRyLmR0X3NpemUpIGdvdG8gZmFpbDsKKysgICAgICAgIGlmKHdyaXRlX3BhZGRpbmcoZmQsIHBhZ2VzaXplLCBoZHIuZHRfc2l6ZSkpIGdvdG8gZmFpbDsKKysgICAgfQorICAgICByZXR1cm4gMDsKKyAKKyBmYWlsOgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTAtVXNlLWxpbnV4LWNhcGFiaWxpdHkuaC1vbi1saW51eC1zeXN0ZW1zLXRvby5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEwLVVzZS1saW51eC1jYXBhYmlsaXR5Lmgtb24tbGludXgtc3lzdGVtcy10b28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2MDdmZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEwLVVzZS1saW51eC1jYXBhYmlsaXR5Lmgtb24tbGludXgtc3lzdGVtcy10b28ucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSBlZjc0M2M5YzNjNzQ1MmFlOTA0YTVjMzQzZWUyYjc1OWFiM2E4N2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0xvPUMzPUFGYz0yME1pbmllcj89IDxsb2ljLm1pbmllckB1YnVudHUuY29tPgorRGF0ZTogV2VkLCA3IFNlcCAyMDE2IDEyOjU4OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBsaW51eC9jYXBhYmlsaXR5Lmggb24gbGludXggc3lzdGVtcyB0b28KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCistLS0KKyBpbmNsdWRlL3ByaXZhdGUvYW5kcm9pZF9maWxlc3lzdGVtX2NvbmZpZy5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wcml2YXRlL2FuZHJvaWRfZmlsZXN5c3RlbV9jb25maWcuaCBiL2luY2x1ZGUvcHJpdmF0ZS9hbmRyb2lkX2ZpbGVzeXN0ZW1fY29uZmlnLmgKK2luZGV4IDJmNTI4Yjk1YzguLjNlMGIwMDkyOGUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3ByaXZhdGUvYW5kcm9pZF9maWxlc3lzdGVtX2NvbmZpZy5oCisrKysgYi9pbmNsdWRlL3ByaXZhdGUvYW5kcm9pZF9maWxlc3lzdGVtX2NvbmZpZy5oCitAQCAtMjcsNyArMjcsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCistI2lmZGVmIEhBVkVfQU5EUk9JRF9PUworKyNpZiBkZWZpbmVkKEhBVkVfQU5EUk9JRF9PUykgfHwgZGVmaW5lZChfX2xpbnV4X18pCisgI2luY2x1ZGUgPGxpbnV4L2NhcGFiaWxpdHkuaD4KKyAjZWxzZQorICNpbmNsdWRlICJhbmRyb2lkX2ZpbGVzeXN0ZW1fY2FwYWJpbGl0eS5oIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTEtUmVtb3ZlLWJpb25pYy1zcGVjaWZpYy1jYWxscy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDExLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIxOGY0NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDExLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA5ZWZmODc5OTgzMTk2MWMwZWRmNmUzN2U1ZDRjYmY0M2JhYTdjNzQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmF0aGkgQm91ZHJhIDxmYWJvQGRlYmlhbi5vcmc+CitEYXRlOiBXZWQsIDcgU2VwIDIwMTYgMTI6NTg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGJpb25pYyBzcGVjaWZpYyBjYWxscworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIGluY2x1ZGUvY3V0aWxzL3Byb3BlcnRpZXMuaCB8IDEgLQorIGxpYmN1dGlscy9wcm9wZXJ0aWVzLmMgICAgICB8IDIgKy0KKyBsaWJsb2cvbG9nZF93cml0ZS5jICAgICAgICAgfCA1ICsrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2N1dGlscy9wcm9wZXJ0aWVzLmggYi9pbmNsdWRlL2N1dGlscy9wcm9wZXJ0aWVzLmgKK2luZGV4IDc5OGRiOGIzNmYuLjdkMDFmMjhkNmUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2N1dGlscy9wcm9wZXJ0aWVzLmgKKysrKyBiL2luY2x1ZGUvY3V0aWxzL3Byb3BlcnRpZXMuaAorQEAgLTE5LDcgKzE5LDYgQEAKKyAKKyAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNpbmNsdWRlIDxzeXMvc3lzdGVtX3Byb3BlcnRpZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgI2lmZGVmIF9fY3BsdXNwbHVzCitkaWZmIC0tZ2l0IGEvbGliY3V0aWxzL3Byb3BlcnRpZXMuYyBiL2xpYmN1dGlscy9wcm9wZXJ0aWVzLmMKK2luZGV4IGIyODM2NThhYTQuLjQxNTFlNzg4MmMgMTAwNjQ0CistLS0gYS9saWJjdXRpbHMvcHJvcGVydGllcy5jCisrKysgYi9saWJjdXRpbHMvcHJvcGVydGllcy5jCitAQCAtMTA0LDEwICsxMDQsMTAgQEAgaW50MzJfdCBwcm9wZXJ0eV9nZXRfaW50MzIoY29uc3QgY2hhciAqa2V5LCBpbnQzMl90IGRlZmF1bHRfdmFsdWUpIHsKKyAgICAgcmV0dXJuIChpbnQzMl90KXByb3BlcnR5X2dldF9pbWF4KGtleSwgSU5UMzJfTUlOLCBJTlQzMl9NQVgsIGRlZmF1bHRfdmFsdWUpOworIH0KKyAKKysjdW5kZWYgSEFWRV9MSUJDX1NZU1RFTV9QUk9QRVJUSUVTCisgI2lmZGVmIEhBVkVfTElCQ19TWVNURU1fUFJPUEVSVElFUworIAorICNkZWZpbmUgX1JFQUxMWV9JTkNMVURFX1NZU19fU1lTVEVNX1BST1BFUlRJRVNfSF8KKy0jaW5jbHVkZSA8c3lzL19zeXN0ZW1fcHJvcGVydGllcy5oPgorIAorIGludCBwcm9wZXJ0eV9zZXQoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CitkaWZmIC0tZ2l0IGEvbGlibG9nL2xvZ2Rfd3JpdGUuYyBiL2xpYmxvZy9sb2dkX3dyaXRlLmMKK2luZGV4IGIyNjY4Y2VkYjcuLmY1YTQ0ZmU5MDEgMTAwNjQ0CistLS0gYS9saWJsb2cvbG9nZF93cml0ZS5jCisrKysgYi9saWJsb2cvbG9nZF93cml0ZS5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpZiAoRkFLRV9MT0dfREVWSUNFID09IDApCisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KK0BAIC0yMDUsNyArMjA2LDExIEBAIHN0YXRpYyBpbnQgX193cml0ZV90b19sb2dfa2VybmVsKGxvZ19pZF90IGxvZ19pZCwgc3RydWN0IGlvdmVjICp2ZWMsIHNpemVfdCBucikKKyAgICAgcmVhbHRpbWVfdHMudHZfbnNlYyA9IHRzLnR2X25zZWM7CisgCisgICAgIGxvZ19pZF9idWYgPSBsb2dfaWQ7CisrI2lmZGVmIF9fQklPTklDX18KKyAgICAgdGlkID0gZ2V0dGlkKCk7CisrI2Vsc2UKKysgICAgdGlkID0gKHBpZF90KSBzeXNjYWxsKF9fTlJfZ2V0dGlkKTsKKysjZW5kaWYKKyAKKyAgICAgbmV3VmVjWzBdLmlvdl9iYXNlICAgPSAodW5zaWduZWQgY2hhciAqKSAmbG9nX2lkX2J1ZjsKKyAgICAgbmV3VmVjWzBdLmlvdl9sZW4gICAgPSBzaXplb2ZfbG9nX2lkX3Q7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2NvcmUvMDAxMi1GaXgtaW1wbGljaXQtZGVjbGFyYXRpb24tb2Ytc3RsY2F0LXN0cmxjb3B5LWZ1bmN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTItRml4LWltcGxpY2l0LWRlY2xhcmF0aW9uLW9mLXN0bGNhdC1zdHJsY29weS1mdW5jdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGZlYjY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTItRml4LWltcGxpY2l0LWRlY2xhcmF0aW9uLW9mLXN0bGNhdC1zdHJsY29weS1mdW5jdGlvbi5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGNkNDUyNWQ3NjBjNmY4OGM5YmY4NWY3YmY0ODhkYTc5Y2QwZDMyNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYXRoaSBCb3VkcmEgPGZhYm9AZGViaWFuLm9yZz4KK0RhdGU6IFdlZCwgNyBTZXAgMjAxNiAxMjo1ODo0NyArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2Ygc3RsY2F0L3N0cmxjb3B5IGZ1bmN0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIGFkYi9hZGIuYyAgICAgICAgICAgICAgICB8IDEgKworIGZzX21nci9mc19tZ3JfZnN0YWIuYyAgICB8IDIgKy0KKyBpbmNsdWRlL2N1dGlscy9zb2NrZXRzLmggfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hZGIvYWRiLmMgYi9hZGIvYWRiLmMKK2luZGV4IGUwZjdlY2RlNDUuLmFhZWZkOWI0MDEgMTAwNjQ0CistLS0gYS9hZGIvYWRiLmMKKysrKyBiL2FkYi9hZGIuYworQEAgLTQxLDYgKzQxLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisgI2luY2x1ZGUgPGdldG9wdC5oPgorICNpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KKysjaW5jbHVkZSA8Z3JwLmg+CisgI2Vsc2UKKyAjaW5jbHVkZSAidXNiX3ZlbmRvcnMuaCIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9mc19tZ3IvZnNfbWdyX2ZzdGFiLmMgYi9mc19tZ3IvZnNfbWdyX2ZzdGFiLmMKK2luZGV4IGVkZDk1OTExNjQuLjlkZGI0NjQzYjUgMTAwNjQ0CistLS0gYS9mc19tZ3IvZnNfbWdyX2ZzdGFiLmMKKysrKyBiL2ZzX21nci9mc19tZ3JfZnN0YWIuYworQEAgLTE3LDcgKzE3LDcgQEAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxic2Qvc3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorIAorICNpbmNsdWRlICJmc19tZ3JfcHJpdi5oIgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvY3V0aWxzL3NvY2tldHMuaCBiL2luY2x1ZGUvY3V0aWxzL3NvY2tldHMuaAoraW5kZXggZGFmNDNlYzk0NC4uZDMyNzBjNjllNyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvY3V0aWxzL3NvY2tldHMuaAorKysrIGIvaW5jbHVkZS9jdXRpbHMvc29ja2V0cy5oCitAQCAtMTksNyArMTksNyBAQAorIAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGJzZC9zdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorIAorICNpZmRlZiBIQVZFX1dJTlNPQ0sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvZGVmaW5lLXNoZWxsLWNvbW1hbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2RlZmluZS1zaGVsbC1jb21tYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzgxOTY3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvZGVmaW5lLXNoZWxsLWNvbW1hbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1EZXNjcmlwdGlvbjogd2UgaW50ZW5kIHRvIHJ1biBvbiBMaW51eCBzeXN0ZW0gc28gdGhlIHNoZWxsIGlzIGFsd2F5cyAvYmluL3NoLAotICAgICAgICAgICAgIGZvciB0aGUgaG9zdCBvciB0aGUgdGFyZ2V0LgotQXV0aG9yOiBGYXRoaSBCb3VkcmEgPGZhYm9AZGViaWFuLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0tLS0KLSBzeXN0ZW0vY29yZS9hZGIvc2VydmljZXMuYyB8ICAgIDQgLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQotCi0tLS0gYS9zeXN0ZW0vY29yZS9hZGIvc2VydmljZXMuYwotKysrIGIvc3lzdGVtL2NvcmUvYWRiL3NlcnZpY2VzLmMKLUBAIC0yOTksMTEgKzI5OSw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX3N1YnByb2NfcmF3KGNvbnN0IGNoYXIKLSB9Ci0gI2VuZGlmICAvKiAhQUJEX0hPU1QgKi8KLSAKLS0jaWYgQURCX0hPU1QKLSAjZGVmaW5lIFNIRUxMX0NPTU1BTkQgIi9iaW4vc2giCi0tI2Vsc2UKLS0jZGVmaW5lIFNIRUxMX0NPTU1BTkQgIi9zeXN0ZW0vYmluL3NoIgotLSNlbmRpZgotIAotICNpZiAhQURCX0hPU1QKLSBzdGF0aWMgdm9pZCBzdWJwcm9jX3dhaXRlcl9zZXJ2aWNlKGludCBmZCwgdm9pZCAqY29va2llKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9leHRyYXMvMDAwMS1leHQ0X3V0aWxzLXJlbW92ZS1zZWxpbnV4LWV4dGVuc2lvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2V4dHJhcy8wMDAxLWV4dDRfdXRpbHMtcmVtb3ZlLXNlbGludXgtZXh0ZW5zaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTE5YTVkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9leHRyYXMvMDAwMS1leHQ0X3V0aWxzLXJlbW92ZS1zZWxpbnV4LWV4dGVuc2lvbnMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAzNTQ2MDRkYTlkMTUyZjE5MzFlOTE5OTFkM2YzNDE5N2ZjOGZjNzU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VyZ2lvIFNjaHZlem92IDxzZXJnaW8uc2NodmV6b3ZAY2Fub25pY2FsLmNvbT4KK0RhdGU6IFR1ZSwgMiBPY3QgMjAxOCAxNjozNjo1NCArMDAwMAorU3ViamVjdDogW1BBVENIXSBleHQ0X3V0aWxzOiByZW1vdmUgc2VsaW51eCBleHRlbnNpb25zCisKKyogZHJvcCB1c2VsZXNzIGluY2x1ZGVzIG9mIEFuZHJvaWQgU0VMSU5VWCBleHRlbnNpb25zCisqIGF2b2lkcyBoYXZpbmcgdG8gY2xvbmUgYW5vdGhlciBtb2R1bGUKKyogdGhpcyBzaG91bGQgYmUgc2VudCB1cHN0cmVhbQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIGV4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgMSAtCisgZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMgfCAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKK2luZGV4IDJmODlhZThhMC4uNzMyYWZiZWQ3IDEwMDY0NAorLS0tIGEvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCisrKysgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKK0BAIC02Miw3ICs2Miw2IEBACisgCisgI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgorICNpbmNsdWRlIDxzZWxpbnV4L2xhYmVsLmg+CistI2luY2x1ZGUgPHNlbGludXgvYW5kcm9pZC5oPgorIAorICNkZWZpbmUgT19CSU5BUlkgMAorIAorZGlmZiAtLWdpdCBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKK2luZGV4IGE2YzVmNjE2MC4uZjhlN2I5ZGE5IDEwMDY0NAorLS0tIGEvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKKysrKyBiL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCitAQCAtMzIsNyArMzIsNiBAQAorICNpZm5kZWYgVVNFX01JTkdXCisgI2luY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgorICNpbmNsdWRlIDxzZWxpbnV4L2xhYmVsLmg+CistI2luY2x1ZGUgPHNlbGludXgvYW5kcm9pZC5oPgorICNlbHNlCisgc3RydWN0IHNlbGFiZWxfaGFuZGxlOworICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9leHRyYXMvMDAwMi1leHQ0X3V0aWxzLWFkZC1vLWFyZ3VtZW50LXRvLXByZXNlcnZlLW93bmVyc2hpcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvZXh0cmFzLzAwMDItZXh0NF91dGlscy1hZGQtby1hcmd1bWVudC10by1wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1MGZmYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvZXh0cmFzLzAwMDItZXh0NF91dGlscy1hZGQtby1hcmd1bWVudC10by1wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorRnJvbSBiOTI1NDUzOTgxMWNlOTEyYmZkMTZkZDFkMTg1ZWJhN2ExMGNjZWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFya3VzIE1heWVyIDxtbWF5ZXJAbW1heWVyLm5ldD4KK0RhdGU6IFdlZCwgNyBTZXAgMjAxNiAxMjo1ODo0NyArMDMwMAorU3ViamVjdDogW1BBVENIXSBleHQ0X3V0aWxzOiBhZGQgLW8gYXJndW1lbnQgdG8gcHJlc2VydmUgb3duZXJzaGlwCisKK1NlZSBhbHNvIGh0dHBzOi8vYW5kcm9pZC1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS8jL2MvMTAwMzEyLworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKy0tLQorIGV4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgIDYgKysrKysrCisgZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMgfCAxMCArKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCitpbmRleCA3MzJhZmJlZDcuLjJjYmYwNDM5OSAxMDA2NDQKKy0tLSBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYworKysrIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCitAQCAtNjcsNiArNjcsOCBAQAorIAorICNlbmRpZgorIAorK2ludCBwcmVzZXJ2ZV9vd25lciA9IDA7CisrCisgLyogVE9ETzogTm90IGltcGxlbWVudGVkOgorICAgIEFsbG9jYXRpbmcgYmxvY2tzIGluIHRoZSBzYW1lIGJsb2NrIGdyb3VwIGFzIHRoZSBmaWxlIGlub2RlCisgICAgSGFzaCBvciBiaW5hcnkgdHJlZSBkaXJlY3RvcmllcworQEAgLTE4NSw2ICsxODcsMTAgQEAgc3RhdGljIHUzMiBidWlsZF9kaXJlY3Rvcnlfc3RydWN0dXJlKGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwgY29uc3QgY2hhciAqZGlyX3BhdGgKKyAJCX0gZWxzZSB7CisgCQkJZGVudHJpZXNbaV0ubXRpbWUgPSBmaXhlZF90aW1lOworIAkJfQorKwkJaWYgKHByZXNlcnZlX293bmVyKSB7CisrCQkJZGVudHJpZXNbaV0udWlkID0gc3RhdC5zdF91aWQ7CisrCQkJZGVudHJpZXNbaV0uZ2lkID0gc3RhdC5zdF9naWQ7CisrCQl9CisgCQl1aW50NjRfdCBjYXBhYmlsaXRpZXM7CisgCQlpZiAoZnNfY29uZmlnX2Z1bmMgIT0gTlVMTCkgeworICNpZmRlZiBBTkRST0lECitkaWZmIC0tZ2l0IGEvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYworaW5kZXggZjhlN2I5ZGE5Li5lODJkNDMyNzcgMTAwNjQ0CistLS0gYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYworKysrIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKK0BAIC00NywxMyArNDcsMTUgQEAgc3RydWN0IHNlbGFiZWxfaGFuZGxlOworIGV4dGVybiBzdHJ1Y3QgZnNfaW5mbyBpbmZvOworIAorIAorK2V4dGVybiBpbnQgcHJlc2VydmVfb3duZXI7CisrCisgc3RhdGljIHZvaWQgdXNhZ2UoY2hhciAqcGF0aCkKKyB7CisgCWZwcmludGYoc3RkZXJyLCAiJXMgWyAtbCA8bGVuPiBdIFsgLWogPGpvdXJuYWwgc2l6ZT4gXSBbIC1iIDxibG9ja19zaXplPiBdXG4iLCBiYXNlbmFtZShwYXRoKSk7CisgCWZwcmludGYoc3RkZXJyLCAiICAgIFsgLWcgPGJsb2NrcyBwZXIgZ3JvdXA+IF0gWyAtaSA8aW5vZGVzPiBdIFsgLUkgPGlub2RlIHNpemU+IF1cbiIpOworIAlmcHJpbnRmKHN0ZGVyciwgIiAgICBbIC1MIDxsYWJlbD4gXSBbIC1mIF0gWyAtYSA8YW5kcm9pZCBtb3VudHBvaW50PiBdXG4iKTsKKyAJZnByaW50ZihzdGRlcnIsICIgICAgWyAtUyBmaWxlX2NvbnRleHRzIF0gWyAtQyBmc19jb25maWcgXSBbIC1UIHRpbWVzdGFtcCBdXG4iKTsKKy0JZnByaW50ZihzdGRlcnIsICIgICAgWyAteiB8IC1zIF0gWyAtdyBdIFsgLWMgXSBbIC1KIF0gWyAtdiBdIFsgLUIgPGJsb2NrX2xpc3RfZmlsZT4gXVxuIik7CisrCWZwcmludGYoc3RkZXJyLCAiICAgIFsgLXogfCAtcyBdIFsgLXcgXSBbIC1jIF0gWyAtSiBdIFsgLW8gXSBbIC12IF0gWyAtQiA8YmxvY2tfbGlzdF9maWxlPiBdXG4iKTsKKyAJZnByaW50ZihzdGRlcnIsICIgICAgPGZpbGVuYW1lPiBbPGRpcmVjdG9yeT5dXG4iKTsKKyB9CisgCitAQCAtNzksNyArODEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCXN0cnVjdCBzZWxpbnV4X29wdCBzZW9wdHNbXSA9IHsgeyBTRUxBQkVMX09QVF9QQVRILCAiIiB9IH07CisgI2VuZGlmCisgCistCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJsOmo6YjpnOmk6STpMOmE6UzpUOkM6Qjpmd3pKc2N0diIpKSAhPSAtMSkgeworKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAibDpqOmI6ZzppOkk6TDphOlM6VDpDOkI6Znd6SnNjdG92IikpICE9IC0xKSB7CisgCQlzd2l0Y2ggKG9wdCkgeworIAkJY2FzZSAnbCc6CisgCQkJaW5mby5sZW4gPSBwYXJzZV9udW0ob3B0YXJnKTsKK0BAIC0xNDIsNiArMTQ0LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl9CisgI2VuZGlmCisgCQkJYnJlYWs7CisrCQljYXNlICdvJzoKKysJCQlwcmVzZXJ2ZV9vd25lciA9IDE7CisrCQkJcHJpbnRmKCJXYXJuaW5nOiBFbmFibGluZyAncHJlc2VydmUgb3duZXJzaGlwJywgdGhpcyBpcyBhbiB1bm9mZmljaWFsIGZlYXR1cmUhXG4iKTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ3YnOgorIAkJCXZlcmJvc2UgPSAxOworIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9maXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvZml4LWJpZy1lbmRpYW4tYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZWFmM2EuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9maXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZpeCBidWlsZCBvbiBiaWcgZW5kaWFuIHN5c3RlbXMKLQotVGhlIHVzYl9saW51eF9jbGllbnQuYyBmaWxlIGRlZmluZXMgY3B1X3RvX2xlMTYvMzIgYnkgdXNpbmcgdGhlIEMKLWxpYnJhcnkgaHRvbGUxNi8zMiBmdW5jdGlvbiBjYWxscy4gSG93ZXZlciwgY3B1X3RvX2xlMTYvMzIgYXJlIHVzZWQKLXdoZW4gaW5pdGlhbGl6aW5nIHN0cnVjdHVyZXMsIGkuZSBpbiBhIGNvbnRleHQgd2hlcmUgYSBmdW5jdGlvbiBjYWxsCi1pcyBub3QgYWxsb3dlZC4KLQotSXQgd29ya3MgZmluZSBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMgYmVjYXVzZSBodG9sZTE2LzMyIGFyZSBkZWZpbmVkCi1ieSB0aGUgQyBsaWJyYXJ5IGFzIG5vLW9wcy4gQnV0IG9uIGJpZy1lbmRpYW4gc3lzdGVtcywgdGhleSBhcmUKLWFjdHVhbGx5IGRvaW5nIHNvbWV0aGluZywgd2hpY2ggbWlnaHQgaW52b2x2ZSBjYWxsaW5nIGEgZnVuY3Rpb24sCi1jYXVzaW5nIGJ1aWxkIGZhaWx1cmVzLgotCi1UbyBzb2x2ZSB0aGlzLCB3ZSBzaW1wbHkgb3Blbi1jb2RlIGNwdV90b19sZTE2LzMyIGluIGEgd2F5IHRoYXQgYWxsb3dzCi10aGVtIHRvIGJlIHVzZWQgd2hlbiBpbml0aWFsaXppbmcgc3RydWN0dXJlcy4KLQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0KLUluZGV4OiBiL3N5c3RlbS9jb3JlL2FkYi91c2JfbGludXhfY2xpZW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3N5c3RlbS9jb3JlL2FkYi91c2JfbGludXhfY2xpZW50LmMKLSsrKyBiL3N5c3RlbS9jb3JlL2FkYi91c2JfbGludXhfY2xpZW50LmMKLUBAIC0zNCw4ICszNCwxNSBAQAotICNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFX0ZTCTY0Ci0gI2RlZmluZSBNQVhfUEFDS0VUX1NJWkVfSFMJNTEyCi0gCi0tI2RlZmluZSBjcHVfdG9fbGUxNih4KSAgaHRvbGUxNih4KQotLSNkZWZpbmUgY3B1X3RvX2xlMzIoeCkgIGh0b2xlMzIoeCkKLSsjaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotKyMgZGVmaW5lIGNwdV90b19sZTE2KHgpICh4KQotKyMgZGVmaW5lIGNwdV90b19sZTMyKHgpICh4KQotKyNlbHNlCi0rIyBkZWZpbmUgY3B1X3RvX2xlMTYoeCkgKCgoKHgpID4+IDgpICYgMHhmZnUpIHwgKCgoeCkgJiAweGZmdSkgPDwgOCkpCi0rIyBkZWZpbmUgY3B1X3RvX2xlMzIoeCkgXAotKwkoKCgoeCkgJiAweGZmMDAwMDAwdSkgPj4gMjQpIHwgKCgoeCkgJiAweDAwZmYwMDAwdSkgPj4gIDgpIHwgXAotKwkgKCgoeCkgJiAweDAwMDBmZjAwdSkgPDwgIDgpIHwgKCgoeCkgJiAweDAwMDAwMGZmdSkgPDwgMjQpKQotKyNlbmRpZgotIAotIHN0cnVjdCB1c2JfaGFuZGxlCi0gewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy8uZ2l0aWdub3JlIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9naXRpZ25vcmUKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvLmdpdGlnbm9yZQpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9naXRpZ25vcmUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvaW1wbGljaXQtZGVjbGFyYXRpb24tZnVuY3Rpb24tc3RybGNhdC1zdHJsY29weS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvaW1wbGljaXQtZGVjbGFyYXRpb24tZnVuY3Rpb24tc3RybGNhdC1zdHJsY29weS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkYjYxNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2ltcGxpY2l0LWRlY2xhcmF0aW9uLWZ1bmN0aW9uLXN0cmxjYXQtc3RybGNvcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1EZXNjcmlwdGlvbjogZml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIHN0bGNhdC9zdHJsY29weSBmdW5jdGlvbnMuCi1BdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmFib0BkZWJpYW4ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLS0tLQotIHN5c3RlbS9jb3JlL2FkYi9hZGIuYyAgICAgICAgICAgICAgICB8ICAgIDEgKwotIHN5c3RlbS9jb3JlL2ZzX21nci9mc19tZ3JfZnN0YWIuYyAgICB8ICAgIDIgKy0KLSBzeXN0ZW0vY29yZS9pbmNsdWRlL2N1dGlscy9zb2NrZXRzLmggfCAgICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLS0tLSBhL3N5c3RlbS9jb3JlL2ZzX21nci9mc19tZ3JfZnN0YWIuYwotKysrIGIvc3lzdGVtL2NvcmUvZnNfbWdyL2ZzX21ncl9mc3RhYi5jCi1AQCAtMTcsNyArMTcsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGJzZC9zdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0gCi0gI2luY2x1ZGUgImZzX21ncl9wcml2LmgiCi0tLS0gYS9zeXN0ZW0vY29yZS9pbmNsdWRlL2N1dGlscy9zb2NrZXRzLmgKLSsrKyBiL3N5c3RlbS9jb3JlL2luY2x1ZGUvY3V0aWxzL3NvY2tldHMuaAotQEAgLTE5LDcgKzE5LDcgQEAKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxic2Qvc3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAKLSAjaWZkZWYgSEFWRV9XSU5TT0NLCi0tLS0gYS9zeXN0ZW0vY29yZS9hZGIvYWRiLmMKLSsrKyBiL3N5c3RlbS9jb3JlL2FkYi9hZGIuYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KLSsjaW5jbHVkZSA8Z3JwLmg+Ci0gI2Vsc2UKLSAjaW5jbHVkZSAidXNiX3ZlbmRvcnMuaCIKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvbGlic2VsaW51eC8wMDAxLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2xpYnNlbGludXgvMDAwMS1SZW1vdmUtYmlvbmljLXNwZWNpZmljLWNhbGxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZTI1OTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2xpYnNlbGludXgvMDAwMS1SZW1vdmUtYmlvbmljLXNwZWNpZmljLWNhbGxzLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMzY2NTRhNDQ4NDExN2U1ZjRkNjNhODEwYzBkOTRiYzljN2VlM2E4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhdGhpIEJvdWRyYSA8ZmFib0BkZWJpYW4ub3JnPgorRGF0ZTogVHVlLCAyIE9jdCAyMDE4IDE2OjM2OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBiaW9uaWMgc3BlY2lmaWMgY2FsbHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wcm9jYXR0ci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Byb2NhdHRyLmMgYi9zcmMvcHJvY2F0dHIuYworaW5kZXggZjM1MDgwOC4uNzYxY2Y4ZSAxMDA2NDQKKy0tLSBhL3NyYy9wcm9jYXR0ci5jCisrKysgYi9zcmMvcHJvY2F0dHIuYworQEAgLTgsNyArOCw3IEBACisgI2luY2x1ZGUgInNlbGludXhfaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAicG9saWN5LmgiCisgCistI2lmZGVmIEhPU1QKKysjaWZuZGVmIF9fQklPTklDX18KKyBzdGF0aWMgcGlkX3QgZ2V0dGlkKHZvaWQpCisgeworIAlyZXR1cm4gc3lzY2FsbChfX05SX2dldHRpZCk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL21rYm9vdGltZy1BZGQtZHQtcGFyYW1ldGVyLXRvLXNwZWNpZnktRFQtaW1hZ2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL21rYm9vdGltZy1BZGQtZHQtcGFyYW1ldGVyLXRvLXNwZWNpZnktRFQtaW1hZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YmI3NjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9ta2Jvb3RpbWctQWRkLWR0LXBhcmFtZXRlci10by1zcGVjaWZ5LURULWltYWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLUZyb20gY2M1ZTdiMDJhM2JlNTc3MDlhMWFlZDZlMzRiZTEwMGI4MmE3MTYyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIE5nIDxkYXZlQGNvZGVhdXJvcmEub3JnPgotRGF0ZTogRnJpLCAyNyBKdWwgMjAxMiAxNzoxNTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gbWtib290aW1nOiBBZGQgLS1kdCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBEVCBpbWFnZQotCi1OZXcgb3B0aW9uYWwgLS1kdCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBhIGtlcm5lbCBkZXZpY2UKLXRyZWUgaW1hZ2UuCi0KLUNoYW5nZS1JZDogSWUyOWExMWNiZjQxMzg0MjZiZmQxOWFlNDg2ZDY5YTVmY2JkOGY0NDIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0tLS0KLSBzeXN0ZW0vY29yZS9ta2Jvb3RpbWcvYm9vdGltZy5oICAgfCAgICA3ICsrKysrLS0KLSBzeXN0ZW0vY29yZS9ta2Jvb3RpbWcvbWtib290aW1nLmMgfCAgIDIxICsrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvc3lzdGVtL2NvcmUvbWtib290aW1nL2Jvb3RpbWcuaAotKysrIGIvc3lzdGVtL2NvcmUvbWtib290aW1nL2Jvb3RpbWcuaAotQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IGJvb3RfaW1nX2hkcgotIAotICAgICB1bnNpZ25lZCB0YWdzX2FkZHI7ICAgIC8qIHBoeXNpY2FsIGFkZHIgZm9yIGtlcm5lbCB0YWdzICovCi0gICAgIHVuc2lnbmVkIHBhZ2Vfc2l6ZTsgICAgLyogZmxhc2ggcGFnZSBzaXplIHdlIGFzc3VtZSAqLwotLSAgICB1bnNpZ25lZCB1bnVzZWRbMl07ICAgIC8qIGZ1dHVyZSBleHBhbnNpb246IHNob3VsZCBiZSAwICovCi0tCi0rICAgIHVuc2lnbmVkIGR0X3NpemU7ICAgICAgLyogZGV2aWNlIHRyZWUgaW4gYnl0ZXMgKi8KLSsgICAgdW5zaWduZWQgdW51c2VkOyAgICAgICAvKiBmdXR1cmUgZXhwYW5zaW9uOiBzaG91bGQgYmUgMCAqLwotICAgICB1bnNpZ25lZCBjaGFyIG5hbWVbQk9PVF9OQU1FX1NJWkVdOyAvKiBhc2NpaXogcHJvZHVjdCBuYW1lICovCi0gCi0gICAgIHVuc2lnbmVkIGNoYXIgY21kbGluZVtCT09UX0FSR1NfU0laRV07Ci1AQCAtNjQsMTAgKzY0LDEzIEBAIHN0cnVjdCBib290X2ltZ19oZHIKLSAqKiArLS0tLS0tLS0tLS0tLS0tLS0rCi0gKiogfCBzZWNvbmQgc3RhZ2UgICAgfCBvIHBhZ2VzCi0gKiogKy0tLS0tLS0tLS0tLS0tLS0tKwotKyoqIHwgZGV2aWNlIHRyZWUgICAgIHwgcCBwYWdlcwotKyoqICstLS0tLS0tLS0tLS0tLS0tLSsKLSAqKgotICoqIG4gPSAoa2VybmVsX3NpemUgKyBwYWdlX3NpemUgLSAxKSAvIHBhZ2Vfc2l6ZQotICoqIG0gPSAocmFtZGlza19zaXplICsgcGFnZV9zaXplIC0gMSkgLyBwYWdlX3NpemUKLSAqKiBvID0gKHNlY29uZF9zaXplICsgcGFnZV9zaXplIC0gMSkgLyBwYWdlX3NpemUKLSsqKiBwID0gKGR0X3NpemUgKyBwYWdlX3NpemUgLSAxKSAvIHBhZ2Vfc2l6ZQotICoqCi0gKiogMC4gYWxsIGVudGl0aWVzIGFyZSBwYWdlX3NpemUgYWxpZ25lZCBpbiBmbGFzaAotICoqIDEuIGtlcm5lbCBhbmQgcmFtZGlzayBhcmUgcmVxdWlyZWQgKHNpemUgIT0gMCkKLS0tLSBhL3N5c3RlbS9jb3JlL21rYm9vdGltZy9ta2Jvb3RpbWcuYwotKysrIGIvc3lzdGVtL2NvcmUvbWtib290aW1nL21rYm9vdGltZy5jCi1AQCAtNjUsNiArNjUsNyBAQCBpbnQgdXNhZ2Uodm9pZCkKLSAgICAgICAgICAgICAiICAgICAgIFsgLS1ib2FyZCA8Ym9hcmRuYW1lPiBdXG4iCi0gICAgICAgICAgICAgIiAgICAgICBbIC0tYmFzZSA8YWRkcmVzcz4gXVxuIgotICAgICAgICAgICAgICIgICAgICAgWyAtLXBhZ2VzaXplIDxwYWdlc2l6ZT4gXVxuIgotKyAgICAgICAgICAgICIgICAgICAgWyAtLWR0IDxmaWxlbmFtZT4gXVxuIgotICAgICAgICAgICAgICIgICAgICAgLW98LS1vdXRwdXQgPGZpbGVuYW1lPlxuIgotICAgICAgICAgICAgICk7Ci0gICAgIHJldHVybiAxOwotQEAgLTEwNSw2ICsxMDYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgIGNoYXIgKmNtZGxpbmUgPSAiIjsKLSAgICAgY2hhciAqYm9vdGltZyA9IDA7Ci0gICAgIGNoYXIgKmJvYXJkID0gIiI7Ci0rICAgIGNoYXIgKmR0X2ZuID0gMDsKLSsgICAgdm9pZCAqZHRfZGF0YSA9IDA7Ci0gICAgIHVuc2lnbmVkIHBhZ2VzaXplID0gMjA0ODsKLSAgICAgaW50IGZkOwotICAgICBTSEFfQ1RYIGN0eDsKLUBAIC0xNTgsNiArMTYxLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwiZXJyb3I6IHVuc3VwcG9ydGVkIHBhZ2Ugc2l6ZSAlZFxuIiwgcGFnZXNpemUpOwotICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgfQotKyAgICAgICAgfSBlbHNlIGlmKCFzdHJjbXAoYXJnLCAiLS1kdCIpKSB7Ci0rICAgICAgICAgICAgZHRfZm4gPSB2YWw7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIHJldHVybiB1c2FnZSgpOwotICAgICAgICAgfQotQEAgLTIzMiw2ICsyMzcsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIGlmKGR0X2ZuKSB7Ci0rICAgICAgICBkdF9kYXRhID0gbG9hZF9maWxlKGR0X2ZuLCAmaGRyLmR0X3NpemUpOwotKyAgICAgICAgaWYgKGR0X2RhdGEgPT0gMCkgewotKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJlcnJvcjogY291bGQgbm90IGxvYWQgZGV2aWNlIHRyZWUgaW1hZ2UgJyVzJ1xuIiwgZHRfZm4pOwotKyAgICAgICAgICAgIHJldHVybiAxOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0gICAgIC8qIHB1dCBhIGhhc2ggb2YgdGhlIGNvbnRlbnRzIGluIHRoZSBoZWFkZXIgc28gYm9vdCBpbWFnZXMgY2FuIGJlCi0gICAgICAqIGRpZmZlcmVudGlhdGVkIGJhc2VkIG9uIHRoZWlyIGZpcnN0IDJrLgotICAgICAgKi8KLUBAIC0yNDIsNiArMjU1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgU0hBX3VwZGF0ZSgmY3R4LCAmaGRyLnJhbWRpc2tfc2l6ZSwgc2l6ZW9mKGhkci5yYW1kaXNrX3NpemUpKTsKLSAgICAgU0hBX3VwZGF0ZSgmY3R4LCBzZWNvbmRfZGF0YSwgaGRyLnNlY29uZF9zaXplKTsKLSAgICAgU0hBX3VwZGF0ZSgmY3R4LCAmaGRyLnNlY29uZF9zaXplLCBzaXplb2YoaGRyLnNlY29uZF9zaXplKSk7Ci0rICAgIGlmKGR0X2RhdGEpIHsKLSsgICAgICAgIFNIQV91cGRhdGUoJmN0eCwgZHRfZGF0YSwgaGRyLmR0X3NpemUpOwotKyAgICAgICAgU0hBX3VwZGF0ZSgmY3R4LCAmaGRyLmR0X3NpemUsIHNpemVvZihoZHIuZHRfc2l6ZSkpOwotKyAgICB9Ci0gICAgIHNoYSA9IFNIQV9maW5hbCgmY3R4KTsKLSAgICAgbWVtY3B5KGhkci5pZCwgc2hhLAotICAgICAgICAgICAgU0hBX0RJR0VTVF9TSVpFID4gc2l6ZW9mKGhkci5pZCkgPyBzaXplb2YoaGRyLmlkKSA6IFNIQV9ESUdFU1RfU0laRSk7Ci1AQCAtMjY2LDYgKzI4MywxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZih3cml0ZV9wYWRkaW5nKGZkLCBwYWdlc2l6ZSwgaGRyLnNlY29uZF9zaXplKSkgZ290byBmYWlsOwotICAgICB9Ci0gCi0rICAgIGlmKGR0X2RhdGEpIHsKLSsgICAgICAgIGlmKHdyaXRlKGZkLCBkdF9kYXRhLCBoZHIuZHRfc2l6ZSkgIT0gKHNzaXplX3QpIGhkci5kdF9zaXplKSBnb3RvIGZhaWw7Ci0rICAgICAgICBpZih3cml0ZV9wYWRkaW5nKGZkLCBwYWdlc2l6ZSwgaGRyLmR0X3NpemUpKSBnb3RvIGZhaWw7Ci0rICAgIH0KLSAgICAgcmV0dXJuIDA7Ci0gCi0gZmFpbDoKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTAzOTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1Gcm9tIGFhNjY5MzEyYTM4MDYxMWQyODBkMTI2Y2I1MDlmYTI4MjA4MDcwN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrdXMgTWF5ZXIgPG1tYXllckBtbWF5ZXIubmV0PgotRGF0ZTogV2VkLCA3IFNlcCAyMDE2IDEyOjU4OjQ3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFuZHJvaWQtdG9vbHM6IGFkZCByZWNpcGUgZnJvbSBBT1NQIHRhZyBhbmRyb2lkLTUuMS4xX3IzNwotCi1EZXNjcmlwdGlvbjogYWRkIC1vIGFyZ3VtZW50IHRvIHByZXNlcnZlIG93bmVyc2hpcAotCi1TZWUgYWxzbyBodHRwczovL2FuZHJvaWQtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vIy9jLzEwMDMxMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLS0tLQotIGV4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgIDYgKysrKysrCi0gZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMgfCAxMCArKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCi1pbmRleCAyZjg5YWU4YS4uY2M0MWQ2MjMgMTAwNjQ0Ci0tLS0gYS9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKLSsrKyBiL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYwotQEAgLTY4LDYgKzY4LDggQEAKLSAKLSAjZW5kaWYKLSAKLStpbnQgcHJlc2VydmVfb3duZXIgPSAwOwotKwotIC8qIFRPRE86IE5vdCBpbXBsZW1lbnRlZDoKLSAgICBBbGxvY2F0aW5nIGJsb2NrcyBpbiB0aGUgc2FtZSBibG9jayBncm91cCBhcyB0aGUgZmlsZSBpbm9kZQotICAgIEhhc2ggb3IgYmluYXJ5IHRyZWUgZGlyZWN0b3JpZXMKLUBAIC0xODYsNiArMTg4LDEwIEBAIHN0YXRpYyB1MzIgYnVpbGRfZGlyZWN0b3J5X3N0cnVjdHVyZShjb25zdCBjaGFyICpmdWxsX3BhdGgsIGNvbnN0IGNoYXIgKmRpcl9wYXRoCi0gCQl9IGVsc2UgewotIAkJCWRlbnRyaWVzW2ldLm10aW1lID0gZml4ZWRfdGltZTsKLSAJCX0KLSsJCWlmIChwcmVzZXJ2ZV9vd25lcikgewotKwkJCWRlbnRyaWVzW2ldLnVpZCA9IHN0YXQuc3RfdWlkOwotKwkJCWRlbnRyaWVzW2ldLmdpZCA9IHN0YXQuc3RfZ2lkOwotKwkJfQotIAkJdWludDY0X3QgY2FwYWJpbGl0aWVzOwotIAkJaWYgKGZzX2NvbmZpZ19mdW5jICE9IE5VTEwpIHsKLSAjaWZkZWYgQU5EUk9JRAotZGlmZiAtLWdpdCBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jIGIvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKLWluZGV4IGE2YzVmNjE2Li43YWYwZGRkZiAxMDA2NDQKLS0tLSBhL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnNfbWFpbi5jCi0rKysgYi9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYwotQEAgLTQ4LDEzICs0OCwxNSBAQCBzdHJ1Y3Qgc2VsYWJlbF9oYW5kbGU7Ci0gZXh0ZXJuIHN0cnVjdCBmc19pbmZvIGluZm87Ci0gCi0gCi0rZXh0ZXJuIGludCBwcmVzZXJ2ZV9vd25lcjsKLSsKLSBzdGF0aWMgdm9pZCB1c2FnZShjaGFyICpwYXRoKQotIHsKLSAJZnByaW50ZihzdGRlcnIsICIlcyBbIC1sIDxsZW4+IF0gWyAtaiA8am91cm5hbCBzaXplPiBdIFsgLWIgPGJsb2NrX3NpemU+IF1cbiIsIGJhc2VuYW1lKHBhdGgpKTsKLSAJZnByaW50ZihzdGRlcnIsICIgICAgWyAtZyA8YmxvY2tzIHBlciBncm91cD4gXSBbIC1pIDxpbm9kZXM+IF0gWyAtSSA8aW5vZGUgc2l6ZT4gXVxuIik7Ci0gCWZwcmludGYoc3RkZXJyLCAiICAgIFsgLUwgPGxhYmVsPiBdIFsgLWYgXSBbIC1hIDxhbmRyb2lkIG1vdW50cG9pbnQ+IF1cbiIpOwotIAlmcHJpbnRmKHN0ZGVyciwgIiAgICBbIC1TIGZpbGVfY29udGV4dHMgXSBbIC1DIGZzX2NvbmZpZyBdIFsgLVQgdGltZXN0YW1wIF1cbiIpOwotLQlmcHJpbnRmKHN0ZGVyciwgIiAgICBbIC16IHwgLXMgXSBbIC13IF0gWyAtYyBdIFsgLUogXSBbIC12IF0gWyAtQiA8YmxvY2tfbGlzdF9maWxlPiBdXG4iKTsKLSsJZnByaW50ZihzdGRlcnIsICIgICAgWyAteiB8IC1zIF0gWyAtdyBdIFsgLWMgXSBbIC1KIF0gWyAtbyBdIFsgLXYgXSBbIC1CIDxibG9ja19saXN0X2ZpbGU+IF1cbiIpOwotIAlmcHJpbnRmKHN0ZGVyciwgIiAgICA8ZmlsZW5hbWU+IFs8ZGlyZWN0b3J5Pl1cbiIpOwotIH0KLSAKLUBAIC04MCw3ICs4Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJc3RydWN0IHNlbGludXhfb3B0IHNlb3B0c1tdID0geyB7IFNFTEFCRUxfT1BUX1BBVEgsICIiIH0gfTsKLSAjZW5kaWYKLSAKLS0Jd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYywgYXJndiwgImw6ajpiOmc6aTpJOkw6YTpTOlQ6QzpCOmZ3ekpzY3R2IikpICE9IC0xKSB7Ci0rCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJsOmo6YjpnOmk6STpMOmE6UzpUOkM6Qjpmd3pKc2N0b3YiKSkgIT0gLTEpIHsKLSAJCXN3aXRjaCAob3B0KSB7Ci0gCQljYXNlICdsJzoKLSAJCQlpbmZvLmxlbiA9IHBhcnNlX251bShvcHRhcmcpOwotQEAgLTE0Myw2ICsxNDUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCX0KLSAjZW5kaWYKLSAJCQlicmVhazsKLSsJCWNhc2UgJ28nOgotKwkJCXByZXNlcnZlX293bmVyID0gMTsKLSsJCQlwcmludGYoIldhcm5pbmc6IEVuYWJsaW5nICdwcmVzZXJ2ZSBvd25lcnNoaXAnLCB0aGlzIGlzIGFuIHVub2ZmaWNpYWwgZmVhdHVyZSFcbiIpOwotKwkJCWJyZWFrOwotIAkJY2FzZSAndic6Ci0gCQkJdmVyYm9zZSA9IDE7Ci0gCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3JlbW92ZS1iaW9uaWMtYW5kcm9pZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcmVtb3ZlLWJpb25pYy1hbmRyb2lkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTMzNzI0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcmVtb3ZlLWJpb25pYy1hbmRyb2lkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRGVzY3JpcHRpb246IHJlbW92ZSBiaW9uaWMgc3BlY2lmaWMgY2FsbHMKLUF1dGhvcjogRmF0aGkgQm91ZHJhIDxmYWJvQGRlYmlhbi5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotLS0tCi0gc3lzdGVtL2NvcmUvaW5jbHVkZS9jdXRpbHMvcHJvcGVydGllcy5oIHwgICAgMSAtCi0gc3lzdGVtL2NvcmUvbGliY3V0aWxzL3Byb3BlcnRpZXMuYyAgICAgIHwgICAgMiArLQotIHN5c3RlbS9jb3JlL2xpYmxvZy9sb2dkX3dyaXRlLmMgICAgICAgICB8ICAgIDUgKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvc3lzdGVtL2NvcmUvaW5jbHVkZS9jdXRpbHMvcHJvcGVydGllcy5oCi0rKysgYi9zeXN0ZW0vY29yZS9pbmNsdWRlL2N1dGlscy9wcm9wZXJ0aWVzLmgKLUBAIC0xOSw3ICsxOSw2IEBACi0gCi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLS0jaW5jbHVkZSA8c3lzL3N5c3RlbV9wcm9wZXJ0aWVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotLS0tIGEvc3lzdGVtL2NvcmUvbGlibG9nL2xvZ2Rfd3JpdGUuYwotKysrIGIvc3lzdGVtL2NvcmUvbGlibG9nL2xvZ2Rfd3JpdGUuYwotQEAgLTIzLDYgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaWYgKEZBS0VfTE9HX0RFVklDRSA9PSAwKQotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci1AQCAtMjA1LDcgKzIwNiwxMSBAQCBzdGF0aWMgaW50IF9fd3JpdGVfdG9fbG9nX2tlcm5lbChsb2dfaWRfCi0gICAgIHJlYWx0aW1lX3RzLnR2X25zZWMgPSB0cy50dl9uc2VjOwotIAotICAgICBsb2dfaWRfYnVmID0gbG9nX2lkOwotKyNpZmRlZiBfX0JJT05JQ19fCi0gICAgIHRpZCA9IGdldHRpZCgpOwotKyNlbHNlCi0rICAgIHRpZCA9IChwaWRfdCkgc3lzY2FsbChfX05SX2dldHRpZCk7Ci0rI2VuZGlmCi0gCi0gICAgIG5ld1ZlY1swXS5pb3ZfYmFzZSAgID0gKHVuc2lnbmVkIGNoYXIgKikgJmxvZ19pZF9idWY7Ci0gICAgIG5ld1ZlY1swXS5pb3ZfbGVuICAgID0gc2l6ZW9mX2xvZ19pZF90OwotLS0tIGEvc3lzdGVtL2NvcmUvbGliY3V0aWxzL3Byb3BlcnRpZXMuYwotKysrIGIvc3lzdGVtL2NvcmUvbGliY3V0aWxzL3Byb3BlcnRpZXMuYwotQEAgLTEwNCwxMCArMTA0LDEwIEBAIGludDMyX3QgcHJvcGVydHlfZ2V0X2ludDMyKGNvbnN0IGNoYXIgKmsKLSAgICAgcmV0dXJuIChpbnQzMl90KXByb3BlcnR5X2dldF9pbWF4KGtleSwgSU5UMzJfTUlOLCBJTlQzMl9NQVgsIGRlZmF1bHRfdmFsdWUpOwotIH0KLSAKLSsjdW5kZWYgSEFWRV9MSUJDX1NZU1RFTV9QUk9QRVJUSUVTCi0gI2lmZGVmIEhBVkVfTElCQ19TWVNURU1fUFJPUEVSVElFUwotIAotICNkZWZpbmUgX1JFQUxMWV9JTkNMVURFX1NZU19fU1lTVEVNX1BST1BFUlRJRVNfSF8KLS0jaW5jbHVkZSA8c3lzL19zeXN0ZW1fcHJvcGVydGllcy5oPgotIAotIGludCBwcm9wZXJ0eV9zZXQoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tLS0gYS9leHRlcm5hbC9saWJzZWxpbnV4L3NyYy9wcm9jYXR0ci5jCi0rKysgYi9leHRlcm5hbC9saWJzZWxpbnV4L3NyYy9wcm9jYXR0ci5jCi1AQCAtOCw3ICs4LDcgQEAKLSAjaW5jbHVkZSAic2VsaW51eF9pbnRlcm5hbC5oIgotICNpbmNsdWRlICJwb2xpY3kuaCIKLSAKLS0jaWZkZWYgSE9TVAotKyNpZm5kZWYgX19CSU9OSUNfXwotIHN0YXRpYyBwaWRfdCBnZXR0aWQodm9pZCkKLSB7Ci0gCXJldHVybiBzeXNjYWxsKF9fTlJfZ2V0dGlkKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcmVtb3ZlLXNlbGludXgtYW5kcm9pZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvcmVtb3ZlLXNlbGludXgtYW5kcm9pZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhMzdmOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3JlbW92ZS1zZWxpbnV4LWFuZHJvaWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TdWJqZWN0OiBkcm9wIHVzZWxlc3MgaW5jbHVkZXMgb2YgQW5kcm9pZCBTRUxJTlVYIGV4dGVuc2lvbnM7IGF2b2lkcyBoYXZpbmcgdG8gY2xvbmUgYW5vdGhlciBtb2R1bGU7IHRoaXMgc2hvdWxkIGJlIHNlbnQgdXBzdHJlYW0KLUF1dGhvcjogU2VyZ2lvIFNjaHZlem92IDxzZXJnaW8uc2NodmV6b3ZAY2Fub25pY2FsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0tLS0KLSBzeXN0ZW0vY29yZS9hZGIvZmlsZV9zeW5jX3NlcnZpY2UuYyAgICAgICAgIHwgICAgMyAtLS0KLSBzeXN0ZW0vZXh0cmFzL2V4dDRfdXRpbHMvbWFrZV9leHQ0ZnMuYyAgICAgIHwgICAgMSAtCi0gc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzX21haW4uYyB8ICAgIDEgLQotIDMgZmlsZXMgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKLQotLS0tIGEvc3lzdGVtL2V4dHJhcy9leHQ0X3V0aWxzL21ha2VfZXh0NGZzLmMKLSsrKyBiL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmcy5jCi1AQCAtNjIsNyArNjIsNiBAQAotIAotICNpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KLSAjaW5jbHVkZSA8c2VsaW51eC9sYWJlbC5oPgotLSNpbmNsdWRlIDxzZWxpbnV4L2FuZHJvaWQuaD4KLSAKLSAjZGVmaW5lIE9fQklOQVJZIDAKLSAKLS0tLSBhL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKLSsrKyBiL3N5c3RlbS9leHRyYXMvZXh0NF91dGlscy9tYWtlX2V4dDRmc19tYWluLmMKLUBAIC0zMiw3ICszMiw2IEBACi0gI2lmbmRlZiBVU0VfTUlOR1cKLSAjaW5jbHVkZSA8c2VsaW51eC9zZWxpbnV4Lmg+Ci0gI2luY2x1ZGUgPHNlbGludXgvbGFiZWwuaD4KLS0jaW5jbHVkZSA8c2VsaW51eC9hbmRyb2lkLmg+Ci0gI2Vsc2UKLSBzdHJ1Y3Qgc2VsYWJlbF9oYW5kbGU7Ci0gI2VuZGlmCi0tLS0gYS9zeXN0ZW0vY29yZS9hZGIvZmlsZV9zeW5jX3NlcnZpY2UuYwotKysrIGIvc3lzdGVtL2NvcmUvYWRiL2ZpbGVfc3luY19zZXJ2aWNlLmMKLUBAIC0yNiw3ICsyNiw2IEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHByaXZhdGUvYW5kcm9pZF9maWxlc3lzdGVtX2NvbmZpZy5oPgotLSNpbmNsdWRlIDxzZWxpbnV4L2FuZHJvaWQuaD4KLSAjaW5jbHVkZSAic3lzZGVwcy5oIgotIAotICNkZWZpbmUgVFJBQ0VfVEFHICBUUkFDRV9TWU5DCi1AQCAtNzMsNyArNzIsNiBAQCBzdGF0aWMgaW50IG1rZGlycyhjaGFyICpuYW1lKQotICAgICAgICAgICAgICAgICAqeCA9ICcvJzsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgc2VsaW51eF9hbmRyb2lkX3Jlc3RvcmVjb24obmFtZSwgMCk7Ci0gICAgICAgICB9Ci0gICAgICAgICAqeCsrID0gJy8nOwotICAgICB9Ci1AQCAtMjUxLDcgKzI0OSw2IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3NlbmRfZmlsZShpbnQgcywgY2hhcgotICAgICBpZihmZCA+PSAwKSB7Ci0gICAgICAgICBzdHJ1Y3QgdXRpbWJ1ZiB1OwotICAgICAgICAgYWRiX2Nsb3NlKGZkKTsKLS0gICAgICAgIHNlbGludXhfYW5kcm9pZF9yZXN0b3JlY29uKHBhdGgsIDApOwotICAgICAgICAgdS5hY3RpbWUgPSB0aW1lc3RhbXA7Ci0gICAgICAgICB1Lm1vZHRpbWUgPSB0aW1lc3RhbXA7Ci0gICAgICAgICB1dGltZShwYXRoLCAmdSk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3VzZS1jYXBhYmlsaXR5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy91c2UtY2FwYWJpbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhlYmUwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3VzZS1jYXBhYmlsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU3ViamVjdDogdXNlIGxpbnV4L2NhcGFiaWxpdHkuaCBvbiBsaW51eCBzeXN0ZW1zIHRvbwotQXV0aG9yOiBMb8OvYyBNaW5pZXIgPGxvaWMubWluaWVyQHVidW50dS5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotLS0tCi0gc3lzdGVtL2NvcmUvaW5jbHVkZS9wcml2YXRlL2FuZHJvaWRfZmlsZXN5c3RlbV9jb25maWcuaCB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGEvc3lzdGVtL2NvcmUvaW5jbHVkZS9wcml2YXRlL2FuZHJvaWRfZmlsZXN5c3RlbV9jb25maWcuaAotKysrIGIvc3lzdGVtL2NvcmUvaW5jbHVkZS9wcml2YXRlL2FuZHJvaWRfZmlsZXN5c3RlbV9jb25maWcuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotLSNpZmRlZiBIQVZFX0FORFJPSURfT1MKLSsjaWYgZGVmaW5lZChIQVZFX0FORFJPSURfT1MpIHx8IGRlZmluZWQoX19saW51eF9fKQotICNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+Ci0gI2Vsc2UKLSAjaW5jbHVkZSAiYW5kcm9pZF9maWxlc3lzdGVtX2NhcGFiaWxpdHkuaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvdXNlLWxvY2FsLXNvY2tldC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvdXNlLWxvY2FsLXNvY2tldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZhY2Q2MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL3VzZS1sb2NhbC1zb2NrZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1TdWJqZWN0OiBhZGI6IFVzZSBsb2NhbCBzb2NrZXRzIHdoZXJlIGFwcHJvcHJpYXRlCi1BdXRob3I6IEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotLS0tCi0gc3lzdGVtL2NvcmUvYWRiL2FkYi5jICAgICAgICAgICAgIHwgICAgNiArKysrKy0KLSBzeXN0ZW0vY29yZS9hZGIvYWRiX2NsaWVudC5jICAgICAgfCAgICA1ICsrKy0tCi0gc3lzdGVtL2NvcmUvYWRiL3RyYW5zcG9ydF9sb2NhbC5jIHwgICAgMyArKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLS0tLSBhL3N5c3RlbS9jb3JlL2FkYi9hZGIuYwotKysrIGIvc3lzdGVtL2NvcmUvYWRiL2FkYi5jCi1AQCAtMTIzMCw3ICsxMjMwLDExIEBAIGludCBsYXVuY2hfc2VydmVyKGludCBzZXJ2ZXJfcG9ydCkKLSAgKi8KLSB2b2lkIGJ1aWxkX2xvY2FsX25hbWUoY2hhciogdGFyZ2V0X3N0ciwgc2l6ZV90IHRhcmdldF9zaXplLCBpbnQgc2VydmVyX3BvcnQpCi0gewotLSAgc25wcmludGYodGFyZ2V0X3N0ciwgdGFyZ2V0X3NpemUsICJ0Y3A6JWQiLCBzZXJ2ZXJfcG9ydCk7Ci0rICBpZiAoZ0xpc3RlbkFsbCA+IDApIHsKLSsgICAgc25wcmludGYodGFyZ2V0X3N0ciwgdGFyZ2V0X3NpemUsICJ0Y3A6JWQiLCBzZXJ2ZXJfcG9ydCk7Ci0rICB9IGVsc2UgewotKyAgICBzbnByaW50Zih0YXJnZXRfc3RyLCB0YXJnZXRfc2l6ZSwgImxvY2FsOiVkIiwgc2VydmVyX3BvcnQpOwotKyAgfQotIH0KLSAKLSAjaWYgIUFEQl9IT1NUCi0tLS0gYS9zeXN0ZW0vY29yZS9hZGIvYWRiX2NsaWVudC5jCi0rKysgYi9zeXN0ZW0vY29yZS9hZGIvYWRiX2NsaWVudC5jCi1AQCAtMTg1LDEyICsxODUsMTIgQEAgaW50IF9hZGJfY29ubmVjdChjb25zdCBjaGFyICpzZXJ2aWNlKQotICAgICAgICAgc3RyY3B5KF9fYWRiX2Vycm9yLCAic2VydmljZSBuYW1lIHRvbyBsb25nIik7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLS0gICAgc25wcmludGYodG1wLCBzaXplb2YgdG1wLCAiJTA0eCIsIGxlbik7Ci0rICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mIHRtcCwgIiVkIiwgX19hZGJfc2VydmVyX3BvcnQpOwotIAotICAgICBpZiAoX19hZGJfc2VydmVyX25hbWUpCi0gICAgICAgICBmZCA9IHNvY2tldF9uZXR3b3JrX2NsaWVudChfX2FkYl9zZXJ2ZXJfbmFtZSwgX19hZGJfc2VydmVyX3BvcnQsIFNPQ0tfU1RSRUFNKTsKLSAgICAgZWxzZQotLSAgICAgICAgZmQgPSBzb2NrZXRfbG9vcGJhY2tfY2xpZW50KF9fYWRiX3NlcnZlcl9wb3J0LCBTT0NLX1NUUkVBTSk7Ci0rICAgICAgICBmZCA9IHNvY2tldF9sb2NhbF9jbGllbnQodG1wLCBBTkRST0lEX1NPQ0tFVF9OQU1FU1BBQ0VfQUJTVFJBQ1QsIFNPQ0tfU1RSRUFNKTsKLSAKLSAgICAgaWYoZmQgPCAwKSB7Ci0gICAgICAgICBzdHJjcHkoX19hZGJfZXJyb3IsICJjYW5ub3QgY29ubmVjdCB0byBkYWVtb24iKTsKLUBAIC0yMDEsNiArMjAxLDcgQEAgaW50IF9hZGJfY29ubmVjdChjb25zdCBjaGFyICpzZXJ2aWNlKQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICB9Ci0gCi0rICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mIHRtcCwgIiUwNHgiLCBsZW4pOwotICAgICBpZih3cml0ZXgoZmQsIHRtcCwgNCkgfHwgd3JpdGV4KGZkLCBzZXJ2aWNlLCBsZW4pKSB7Ci0gICAgICAgICBzdHJjcHkoX19hZGJfZXJyb3IsICJ3cml0ZSBmYWlsdXJlIGR1cmluZyBjb25uZWN0aW9uIik7Ci0gICAgICAgICBhZGJfY2xvc2UoZmQpOwotLS0tIGEvc3lzdGVtL2NvcmUvYWRiL3RyYW5zcG9ydF9sb2NhbC5jCi0rKysgYi9zeXN0ZW0vY29yZS9hZGIvdHJhbnNwb3J0X2xvY2FsLmMKLUBAIC0xMjEsNyArMTIxLDggQEAgaW50IGxvY2FsX2Nvbm5lY3RfYXJiaXRyYXJ5X3BvcnRzKGludCBjbwotICAgICB9Ci0gI2VuZGlmCi0gICAgIGlmIChmZCA8IDApIHsKLS0gICAgICAgIGZkID0gc29ja2V0X2xvb3BiYWNrX2NsaWVudChhZGJfcG9ydCwgU09DS19TVFJFQU0pOwotKyAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAiJWQiLCBhZGJfcG9ydCk7Ci0rICAgICAgICBmZCA9IHNvY2tldF9sb2NhbF9jbGllbnQoYnVmLCBBTkRST0lEX1NPQ0tFVF9OQU1FU1BBQ0VfQUJTVFJBQ1QsIFNPQ0tfU1RSRUFNKTsKLSAgICAgfQotIAotICAgICBpZiAoZmQgPj0gMCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29sc181LjEuMS5yMzcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgppbmRleCA3ODBlY2FhLi4yNjA0ZjY1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYgpAQCAtNywxNCArNywxMCBAQAogICAgIGZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTItQ2xhdXNlO21kNT04YmVmOGU2NzEyYjFiZTVhYTc2YWYxZWJkZTlkNjM3OCBcCiAgICAgZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IFwKICIKLURFUEVORFMgPSAibGliYnNkIGxpYnBjcmUgb3BlbnNzbCB6bGliIGxpYmNhcCIKK0RFUEVORFMgPSAibGliYnNkIGxpYnBjcmUgemxpYiBsaWJjYXAiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG9wZW5zc2wxMCIKIAogQU5EUk9JRF9NSVJST1IgPSAiYW5kcm9pZC5nb29nbGVzb3VyY2UuY29tIgotQ09SRV9SRVBPID0gIiR7QU5EUk9JRF9NSVJST1J9L3BsYXRmb3JtL3N5c3RlbS9jb3JlIgotRVhUUkFTX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vc3lzdGVtL2V4dHJhcyIKLUxJQkhBUkRXQVJFX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vaGFyZHdhcmUvbGliaGFyZHdhcmUiCi1MSUJTRUxJTlVYX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vZXh0ZXJuYWwvbGlic2VsaW51eCIKLUJVSUxEX1JFUE8gPSAiJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vYnVpbGQiCiAKICMgbWF0Y2hlcyB3aXRoIGFuZHJvaWQtNS4xLjFfcjM3CiBTUkNSRVZfY29yZSA9ICIyMzE0YjExMGJkZWJkYmZkMmQ5NGM1MDIyODJmOWU1N2M4NDk4OTdlIgpAQCAtMjQsMjQgKzIwLDI4IEBACiBTUkNSRVZfYnVpbGQgPSAiMTZlOTg3ZGVmM2Q3ZDhmN2QzMDgwNWViOTVjZWY2OWU1MmE4N2RiYyIKIAogU1JDX1VSSSA9ICIgXAotICAgIGdpdDovLyR7Q09SRV9SRVBPfTtuYW1lPWNvcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vY29yZSBcCi0gICAgZ2l0Oi8vJHtFWFRSQVNfUkVQT307bmFtZT1leHRyYXM7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vZXh0cmFzIFwKLSAgICBnaXQ6Ly8ke0xJQkhBUkRXQVJFX1JFUE99O25hbWU9bGliaGFyZHdhcmU7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9oYXJkd2FyZS9saWJoYXJkd2FyZSBcCi0gICAgZ2l0Oi8vJHtMSUJTRUxJTlVYX1JFUE99O25hbWU9bGlic2VsaW51eDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2xpYnNlbGludXggXAotICAgIGdpdDovLyR7QlVJTERfUkVQT307bmFtZT1idWlsZDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2J1aWxkIFwKLSAgICBmaWxlOi8vcmVtb3ZlLXNlbGludXgtYW5kcm9pZC5wYXRjaCBcCi0gICAgZmlsZTovL3VzZS1jYXBhYmlsaXR5LnBhdGNoIFwKLSAgICBmaWxlOi8vdXNlLWxvY2FsLXNvY2tldC5wYXRjaCBcCi0gICAgZmlsZTovL3ByZXNlcnZlLW93bmVyc2hpcC5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vZXh0cmFzIFwKLSAgICBmaWxlOi8vbWtib290aW1nLUFkZC1kdC1wYXJhbWV0ZXItdG8tc3BlY2lmeS1EVC1pbWFnZS5wYXRjaCBcCi0gICAgZmlsZTovL3JlbW92ZS1iaW9uaWMtYW5kcm9pZC5wYXRjaCBcCi0gICAgZmlsZTovL2RlZmluZS1zaGVsbC1jb21tYW5kLnBhdGNoIFwKLSAgICBmaWxlOi8vaW1wbGljaXQtZGVjbGFyYXRpb24tZnVuY3Rpb24tc3RybGNhdC1zdHJsY29weS5wYXRjaCBcCi0gICAgZmlsZTovL2ZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1hZGQtYmFzZTY0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1hZGItTXVzbC1maXhlcy5wYXRjaCBcCisgICAgZ2l0Oi8vJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vc3lzdGVtL2NvcmU7bmFtZT1jb3JlO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvc3lzdGVtL2NvcmUgXAorICAgIGdpdDovLyR7QU5EUk9JRF9NSVJST1J9L3BsYXRmb3JtL3N5c3RlbS9leHRyYXM7bmFtZT1leHRyYXM7cHJvdG9jb2w9aHR0cHM7bm9icmFuY2g9MTtkZXN0c3VmZml4PWdpdC9zeXN0ZW0vZXh0cmFzIFwKKyAgICBnaXQ6Ly8ke0FORFJPSURfTUlSUk9SfS9wbGF0Zm9ybS9oYXJkd2FyZS9saWJoYXJkd2FyZTtuYW1lPWxpYmhhcmR3YXJlO3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvaGFyZHdhcmUvbGliaGFyZHdhcmUgXAorICAgIGdpdDovLyR7QU5EUk9JRF9NSVJST1J9L3BsYXRmb3JtL2V4dGVybmFsL2xpYnNlbGludXg7bmFtZT1saWJzZWxpbnV4O3Byb3RvY29sPWh0dHBzO25vYnJhbmNoPTE7ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvbGlic2VsaW51eCBcCisgICAgZ2l0Oi8vJHtBTkRST0lEX01JUlJPUn0vcGxhdGZvcm0vYnVpbGQ7bmFtZT1idWlsZDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xO2Rlc3RzdWZmaXg9Z2l0L2J1aWxkIFwKKyAgICBmaWxlOi8vY29yZS8wMDAxLWFkYi1yZW1vdmUtc2VsaW51eC1leHRlbnNpb25zLnBhdGNoO3BhdGNoZGlyPXN5c3RlbS9jb3JlIFwKKyAgICBmaWxlOi8vY29yZS8wMDAyLWFkYi1Vc2UtbG9jYWwtc29ja2V0cy13aGVyZS1hcHByb3ByaWF0ZS5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vY29yZSBcCisgICAgZmlsZTovL2NvcmUvMDAwMy1hZGItZGVmaW5lLXNoZWxsLWNvbW1hbmQucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDQtYWRiLUZpeC1idWlsZC1vbi1iaWctZW5kaWFuLXN5c3RlbXMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDUtYWRiLWFkZC1iYXNlNjQtaW1wbGVtZW50YXRpb24ucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDYtYWRiLU11c2wtZml4ZXMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDctYWRiLXVzYl9saW51eC5jLWZpeC1idWlsZC13aXRoLWdsaWJjLTIuMjgucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDgtYWRiLUFsbG93LWFkYmQtdG8tYmUtcmFuLWFzLXJvb3QucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMDktbWtib290aW1nLUFkZC1kdC1wYXJhbWV0ZXItdG8tc3BlY2lmeS1EVC1pbWFnZS5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vY29yZSBcCisgICAgZmlsZTovL2NvcmUvMDAxMC1Vc2UtbGludXgtY2FwYWJpbGl0eS5oLW9uLWxpbnV4LXN5c3RlbXMtdG9vLnBhdGNoO3BhdGNoZGlyPXN5c3RlbS9jb3JlIFwKKyAgICBmaWxlOi8vY29yZS8wMDExLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAorICAgIGZpbGU6Ly9jb3JlLzAwMTItRml4LWltcGxpY2l0LWRlY2xhcmF0aW9uLW9mLXN0bGNhdC1zdHJsY29weS1mdW5jdGlvbi5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vY29yZSBcCisgICAgZmlsZTovL2V4dHJhcy8wMDAxLWV4dDRfdXRpbHMtcmVtb3ZlLXNlbGludXgtZXh0ZW5zaW9ucy5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vZXh0cmFzIFwKKyAgICBmaWxlOi8vZXh0cmFzLzAwMDItZXh0NF91dGlscy1hZGQtby1hcmd1bWVudC10by1wcmVzZXJ2ZS1vd25lcnNoaXAucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2V4dHJhcyBcCisgICAgZmlsZTovL2xpYnNlbGludXgvMDAwMS1SZW1vdmUtYmlvbmljLXNwZWNpZmljLWNhbGxzLnBhdGNoO3BhdGNoZGlyPWV4dGVybmFsL2xpYnNlbGludXggXAogICAgIGZpbGU6Ly9hbmRyb2lkLXRvb2xzLWFkYmQuc2VydmljZSBcCi0gICAgZmlsZTovLy5naXRpZ25vcmU7c3ViZGlyPWdpdCBcCisgICAgZmlsZTovL2dpdGlnbm9yZSBcCiAgICAgZmlsZTovL2FkYi5taztzdWJkaXI9JHtCUE59IFwKICAgICBmaWxlOi8vYWRiZC5taztzdWJkaXI9JHtCUE59IFwKICAgICBmaWxlOi8vZXh0NF91dGlscy5taztzdWJkaXI9JHtCUE59IFwKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICBmaWxlOi8vbWtib290aW1nLm1rO3N1YmRpcj0ke0JQTn0gXAogIgogCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBCID0gIiR7V09SS0RJUn0vJHtCUE59IgogCkBAIC03MSw2ICs3Miw4IEBACiBUT09MU19jbGFzcy1uYXRpdmVzZGsgPSAiZmFzdGJvb3QgZXh0NF91dGlscyBta2Jvb3RpbWciCiAKIGRvX2NvbXBpbGUoKSB7CisgICAgY3AgJHtXT1JLRElSfS9naXRpZ25vcmUgJHtTfS8uZ2l0aWdub3JlCisKICAgICAjIFNldHRpbmcgYm90aCB2YXJpYWJsZXMgYmVsb3cgY2F1c2luZyBvdXIgbWFrZWZpbGVzIHRvIG5vdCB3b3JrIHdpdGgKICAgICAjIGltcGxpY2l0IG1ha2UgcnVsZXMKICAgICB1bnNldCBDRkxBR1MKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWRpc2FibGUtY2FsbHMtdG8tZ2V0Y29udGV4dC13aXRoLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWQvMDAwMS1kaXNhYmxlLWNhbGxzLXRvLWdldGNvbnRleHQtd2l0aC1tdXNsLnBhdGNoCmluZGV4IGM3NjI3NTQuLmJjNzk3MjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZC8wMDAxLWRpc2FibGUtY2FsbHMtdG8tZ2V0Y29udGV4dC13aXRoLW11c2wucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkLzAwMDEtZGlzYWJsZS1jYWxscy10by1nZXRjb250ZXh0LXdpdGgtbXVzbC5wYXRjaApAQCAtOCwxMSArOCwxMSBAQAogIHNyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyB8IDE3ICsrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyBiL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotaW5kZXggY2NhMDIzZi4uZjNlNDYwYyAxMDA2NDQKLS0tLSBhL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotKysrIGIvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi1AQCAtNDk1LDcgKzQ5NSwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OlNpbXVsYXRlU2lnbmFsRGVsaXZlcnkoaW50IHNpZykgeworSW5kZXg6IGdpdC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysrKyBnaXQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDk1LDcgKzQ5NSwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OlNpbXVsYXRlU2lnbmFsRGVsCiAgICBzaWdpbmZvLnNpX2NvZGUgPSBTSV9VU0VSOwogICAgc2lnaW5mby5zaV9waWQgPSBnZXRwaWQoKTsKICAgIHVjb250ZXh0X3QgY29udGV4dDsKQEAgLTQyLDExICs0Miw4IEBACiAgICAgIHJldHVybiBmYWxzZTsKICsjZWxzZQogKyAgLy8gRXh0cmVtZSBoYWNrIC0gc2VlIGNvbW1lbnRzIGFib3ZlLgotKyAgbWVtc2V0ICgmY29udGV4dC5jb250ZXh0LCAwLCBzaXplb2YoJmNvbnRleHQuY29udGV4dCkpOworKyAgbWVtc2V0ICgmY29udGV4dC5jb250ZXh0LCAwLCBzaXplb2YoY29udGV4dC5jb250ZXh0KSk7CiArI2VuZGlmCiAgCiAgI2lmIGRlZmluZWQoX19pMzg2X18pCiAgICAvLyBJbiBDUFVGaWxsRnJvbVVDb250ZXh0IGluIG1pbmlkdW1wd3JpdGVyLmNjIHRoZSBzdGFjayBwb2ludGVyIGlzIHJldHJpZXZlZAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2FwbnByb3RvL2NhcG5wcm90b18wLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jYXBucHJvdG8vY2FwbnByb3RvXzAuNi4xLmJiCmluZGV4IGZmYmU3M2YuLjZjYTM2MTMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jYXBucHJvdG8vY2FwbnByb3RvXzAuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jYXBucHJvdG8vY2FwbnByb3RvXzAuNi4xLmJiCkBAIC0yLDI1ICsyLDIzIEBACiBERVNDUklQVElPTiA9ICJDYXDigJluIFByb3RvIGlzIGFuIGluc2FuZWx5IGZhc3QgZGF0YSBpbnRlcmNoYW5nZSBmb3JtYXQgYW5kIGNhcGFiaWxpdHktYmFzZWQgUlBDIHN5c3RlbS4gIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhbmRzdG9ybS1pby9jYXBucHJvdG8iCiBTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi0KIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9MGE1YjViNzQyYmFmMTBjYzFjMTU4NTc5ZWJhN2ZiMWQiCiAKLVNSQ1JFViA9ICJjOTQ5YTE4ZGE1ZjA0MWEzNmNjMjE4YzVjNGI3OWM3NzA1OTk5YjRmIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NhbmRzdG9ybS1pby9jYXBucHJvdG8uZ2l0O2JyYW5jaD1yZWxlYXNlLSR7UFZ9IgorU1JDUkVWID0gImM5NDlhMThkYTVmMDQxYTM2Y2MyMThjNWM0Yjc5Yzc3MDU5OTliNGYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvYysrIgorCitpbmhlcml0IGNtYWtlCiAKIEVYVFJBX09FQ01BS0UgKz0gIlwKICAgICAtREJVSUxEX1RFU1RJTkc9T0ZGIFwKICIKIAotaW5oZXJpdCBjbWFrZQotCi1TID0gIiR7V09SS0RJUn0vZ2l0L2MrKyIKK0ZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSIKIAogUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCiBSREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLUZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTcwMTIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTcwMTIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTcwZjc1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHVpZC9jcHVpZF8yMDE3MDEyMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggdG9vbCB0byBkdW1wIHg4NiBDUFVJRCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIgotREVTQ1JJUFRJT04gPSAiY3B1aWQgZHVtcHMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIENQVShzKSBnYXRoZXJlZCBcCi1mcm9tIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiwgYW5kIGFsc28gZGV0ZXJtaW5lcyB0aGUgZXhhY3QgbW9kZWwgb2YgQ1BVKHMpLiBcCi1JdCBzdXBwb3J0cyBJbnRlbCwgQU1ELCBhbmQgVklBIENQVXMsIGFzIHdlbGwgYXMgb2xkZXIgVHJhbnNtZXRhLCBDeXJpeCwgXAotVU1DLCBOZXhHZW4sIFJpc2UsIGFuZCBTaVMgQ1BVcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmV0YWxsZW4uY29tLyR7QlBOfS8ke0JQfS5zcmMudGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjFjNDZhNjY2MjYyNmM1YTZlYWNhNjI2ZjIzYTVhN2Q3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NzYxMmFhZTY3MDQzNDFkZDEwODQ0ZTk3Yzg0YzVjNWM4NzAwODE3YTU5MzdhM2MyOTNiNTUwMTNiYzQ4NjUiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCi0KLSMgVGhlIGluc3RhbGwgcnVsZSBmcm9tIHRoZSBNYWtlZmlsZSBoYXMgaGFyZGNvZGVkIHBhdGhzLCBzbyB3ZSBkdXBsaWNhdGUKLSMgdGhlIGFjdGlvbnMgdG8gYWNjb21tb2RhdGUgZGlmZmVyZW50IHBhdGhzLgotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAtbTc1NSAke0R9LyR7YmluZGlyfQotICAgIGluc3RhbGwgLW03NTUgJHtCfS9jcHVpZCAke0R9LyR7YmluZGlyfS9jcHVpZAotICAgIGluc3RhbGwgLWQgLW03NTUgJHtEfS8ke21hbmRpcn0KLSAgICBpbnN0YWxsIC1tNDQ0ICR7Qn0vY3B1aWQubWFuLmd6ICR7RH0vJHttYW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMzYTAwMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jcHVpZC9jcHVpZF8yMDE4MDUxOS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkxpbnV4IHRvb2wgdG8gZHVtcCB4ODYgQ1BVSUQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIENQVShzKSIKK0RFU0NSSVBUSU9OID0gImNwdWlkIGR1bXBzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykgZ2F0aGVyZWQgXAorZnJvbSB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24sIGFuZCBhbHNvIGRldGVybWluZXMgdGhlIGV4YWN0IG1vZGVsIG9mIENQVShzKS4gXAorSXQgc3VwcG9ydHMgSW50ZWwsIEFNRCwgYW5kIFZJQSBDUFVzLCBhcyB3ZWxsIGFzIG9sZGVyIFRyYW5zbWV0YSwgQ3lyaXgsIFwKK1VNQywgTmV4R2VuLCBSaXNlLCBhbmQgU2lTIENQVXMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5ldGFsbGVuLmNvbS8ke0JQTn0vJHtCUH0uc3JjLnRhci5neiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiM2I0ZTQ0ZWY0OTU3NTA0M2E5MWRlZjAyMDdkY2M3NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Njc4MjNiZTM2ZjIzY2JjOTcyZWIwYWE4ODJkMDY5YzFkMTU1YTU5Nzg5OTBhYzNiY2Y0MjVlNmEyZTdmZjlhIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0KS4qLWxpbnV4IgorCisjIFRoZSBpbnN0YWxsIHJ1bGUgZnJvbSB0aGUgTWFrZWZpbGUgaGFzIGhhcmRjb2RlZCBwYXRocywgc28gd2UgZHVwbGljYXRlCisjIHRoZSBhY3Rpb25zIHRvIGFjY29tbW9kYXRlIGRpZmZlcmVudCBwYXRocy4KK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2NwdWlkICR7RH0vJHtiaW5kaXJ9L2NwdWlkCisgICAgaW5zdGFsbCAtRCAtbSAwNDQ0ICR7Qn0vY3B1aWQubWFuLmd6ICR7RH0vJHttYW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlMTczNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJHbGFkZSAtIEEgVXNlciBJbnRlcmZhY2UgRGVzaWduZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ25hc2giCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWFiZTg3NTkxY2I4YWUwZjNjNjhiZTY5NzdiYjU1MjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MjUyODkwZDllZWUyNmFhYjdiNDMyZThiOGE2MTY0NzUiCi1ERVBFTkRTID0gImd0aysgZ3RrKzMgZ2xpYi0yLjAgbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgXAotICAgICAgICAgICBnbm9tZS1jb21tb24tbmF0aXZlIFwKLSIKLQotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZS8zLjIwL2dsYWRlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImQzZGQ5YmEzM2M3ZDdjODU0YWIyMDdlMWJhODQ0ZGRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3ZDE1NDU1NzA5NTFhZWRlZDIwZTlmZGM2ZDNkOGE1NmFlZWZlMjUzODczNDU2OGM1MzM1YmUzMzZjNmFiZWQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLW1hbi1wYWdlcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiAke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy9saWJnbGFkZWd0ay5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsubGEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzLy5kZWJ1Zy9saWJnbGFkZWd0ay5zbyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dsYWRlL2dsYWRlXzMuMjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0YjU4NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJHbGFkZSAtIEEgVXNlciBJbnRlcmZhY2UgRGVzaWduZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ25hc2giCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWFiZTg3NTkxY2I4YWUwZjNjNjhiZTY5NzdiYjU1MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MjUyODkwZDllZWUyNmFhYjdiNDMyZThiOGE2MTY0NzUiCitERVBFTkRTID0gImd0aysgZ3RrKzMgZ2xpYi0yLjAgbGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgXAorICAgICAgICAgICBnbm9tZS1jb21tb24tbmF0aXZlIFwKKyIKKworCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZS8zLjIyL2dsYWRlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjIyNjgwMmNmM2IwNjg2MTI0MDUyNDgwNWFhNmZlNmZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmZjg5YTJlZjJlYWYwMDBmZjJhNDY5Nzk5NzhkMDNjYjkyMDJjYjA0NjY4ZTAxZDBlYTVjNWJiNTU0N2UzOWEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLW1hbi1wYWdlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiAke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy9saWJnbGFkZWd0ay5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsubGEiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzLy5kZWJ1Zy9saWJnbGFkZWd0ay5zbyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb24tc3Bpcml0L2pzb24tc3Bpcml0XzQuMDguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYgppbmRleCBjN2MxYWQxLi5kNmU0MmM4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1zcGlyaXQvanNvbi1zcGlyaXRfNC4wOC5iYgpAQCAtOSw2ICs5LDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTI3OGVmNjE4M2RlYzRhYWUxNTI0ZmNjYzRiMDExM2M5IgogCitERVBFTkRTID0gImJvb3N0IgorCiBTUkNfVVJJID0gImZpbGU6Ly9qc29uX3NwaXJpdF92JHtQVn0uemlwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRqdXN0LXRoZS1jbWFrZS1maWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUxpbmstdG8tbGliYXRvbWljLnBhdGNoIFwKQEAgLTE2LDEwICsxOCw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9qc29uX3NwaXJpdF92JHtQVn0iCiAKLURFUEVORFMgPSAiYm9vc3QiCi0KIGluaGVyaXQgY21ha2UKIAotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYkpzb25TcGlyaXQuY21ha2UiCi0KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzQuMTEuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzQuMTEuMC4xLmJiCmluZGV4IGRmMDhiOGIuLmRlOWE2ZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9rY29uZmlnLWZyb250ZW5kcy9rY29uZmlnLWZyb250ZW5kc180LjExLjAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfNC4xMS4wLjEuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiR1BMLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTliOGNmNjBmZjM5NzY3ZmYwNGI2NzFmY2E4MzAyNDA4IgogU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgKz0gIm5jdXJzZXMgZmxleCBiaXNvbiBncGVyZi1uYXRpdmUiCitERVBFTkRTICs9ICJuY3Vyc2VzIGZsZXggYmlzb24gZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ICs9ICJweXRob24zIGJhc2giCiBTUkNfVVJJID0gImdpdDovL3ltb3Jpbi5pcy1hLWdlZWsub3JnL2tjb25maWctZnJvbnRlbmRzO2JyYW5jaD00LjExLnggXAogCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWVuc3VyZS1mcm9udGVuZHMtZXhpdHMtYmVmb3JlLXdyaXRpbmctaW50by0ucGF0Y2ggXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGFwYWNrL2xhcGFja18zLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTQ0NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJMaW5lYXIgQWxnZWJyYSBQQUNLYWdlIgorVVJMID0gImh0dHA6Ly93d3cubmV0bGliLm9yZy9sYXBhY2siCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkzMGY4YWE1MDBhNDdjN2RhYjBmOGVmYjVhMWM5YTQwIgorCisjIFJlY2lwZSBuZWVkcyBGT1JUUkFOIHN1cHBvcnQgKGNvcGllZCBmcm9tIGNvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQpCisjIEVuYWJsaW5nIEZPUlRSQU4KKyMgTm90ZSB0aGlzIGlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhbmQgaXMganVzdCBpbGx1c3RyYXRlZCBoZXJlIHRvCisjIHNob3cgYW4gZXhhbXBsZSBvZiBob3cgaXQgY2FuIGJlIGRvbmUKKyMgWW91J2xsIGFsc28gbmVlZCB5b3VyIGZvcnRyYW4gcmVjaXBlIHRvIGRlcGVuZCBvbiBsaWJnZm9ydHJhbgorI0ZPUlRSQU5fZm9yY2V2YXJpYWJsZSA9ICIsZm9ydHJhbiIKKyNSVU5USU1FVEFSR0VUX2FwcGVuZF9wbi1nY2MtcnVudGltZSA9ICIgbGlicXVhZG1hdGgiCisKK0RFUEVORFMgPSAibGliZ2ZvcnRyYW4iCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRsaWIub3JnL2xhcGFjay9sYXBhY2stJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjk2NTkxYWZmZGJmNThjNDUwZDQ1YzFkYWE1NDBkYmQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlYjIyY2M0YTYxMjBiZmY3MjYyMTE1NWE5OTE3ZjQ4NWY5NmVmODMxOWFjMDc0YTdhZmJjNjhhYWI4OGJjZjYiCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EQlVJTERfU0hBUkVEX0xJQlM9T04gIgorT0VDTUFLRV9HRU5FUkFUT1IgPSAiVW5peCBNYWtlZmlsZXMiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxNzAzMjktMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE3MDMyOS0zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMjQ2NzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE3MDMyOS0zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCi1ERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCi1oaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKLQotREVQRU5EUyA9ICJuY3Vyc2VzIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIHVwc3RyZWFtIHNpdGUgZG9lcyBub3QgYWxsb3cgd2dldCdzIFVzZXItQWdlbnQKLUZFVENIQ01EX3dnZXQgKz0gIi1VIGJpdGJha2UiCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zdGRjLXByZWRlZi5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImM1N2EwNjkwZTYyZWY1MjNjMDgzNTk4NzMwMjcyY2ZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxZjJkOTBmYmQyYTA0OGZmNmRhZDcxMzFkOWEzOWU2OTBmZDhhOGZkOTgyYTM1M2YxMzMzZGQ0MDE3ZGQ0YmUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTgwNTI1LTMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxODA1MjUtMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzBlOTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTgwNTI1LTMuMS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCitERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCitoaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scworCisjIHVwc3RyZWFtIHNpdGUgZG9lcyBub3QgYWxsb3cgd2dldCdzIFVzZXItQWdlbnQKK0ZFVENIQ01EX3dnZXQgKz0gIi1VIGJpdGJha2UiCitTUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zdGRjLXByZWRlZi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk3Njc5MzE5NzQyZjQ1ZDZjZGNkNjA3NTUxMWIxNGFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0MWJlYThmZDE0MGZiNTdiYTY3YTk4ZWMxZDhhZTBiOGZmYTgyZjRhYmE5YzM1YTg3ZTVhOTQ5OWU2NTMxMTYiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZnJpYmlkaS9mcmliaWRpXzAuMTkuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJmcmliaWRpL2ZyaWJpZGlfMC4xOS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjNhOTE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJmcmliaWRpL2ZyaWJpZGlfMC4xOS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJGcmliaWRpIGxpYnJhcnkgZm9yIGJpZGlyZWN0aW9uYWwgdGV4dCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1QUk9WSURFUyA9ICJsaWJmcmliaWRpIgotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJwY3JlIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgIC1EUEFHRV9TSVpFPTQwOTYgIgotU0VDVVJJVFlfQ0ZMQUdTX3JlbW92ZV90b29sY2hhaW4tY2xhbmcgPSAiLURfRk9SVElGWV9TT1VSQ0U9MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnJpYmlkaS5vcmcvZG93bmxvYWQvZnJpYmlkaS0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmM3ZTdjZmRkMzljOTA4ZjdhYzYxOTM1MWMxYzVjMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDgyMjJhNjIxMmJiYzIyNzZhMmQ1NWMzYmYzNzAxMDlhZTRhMzViNjg5YWNiYzY2NTcxYWQyYTY3MDU5NWE4ZSIKLQotQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xpYnJjZi9saWJyY2ZfMi4yLjAuMC5iYgppbmRleCAyNjdjMGU3Li5kY2Q0N2E0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGlicmNmL2xpYnJjZl8yLjIuMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJyY2YvbGlicmNmXzIuMi4wLjAuYmIKQEAgLTQ3LDcgKzQ3LDYgQEAKIFBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZW1vcycsICcke1BOfS1kZW1vcycsICcnLCBkKX0iCiAKIEZJTEVTXyR7UE59LWRlbW9zID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMvRmluZExpYlJjZi5jbWFrZSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sb2c0Y3BsdXMvbG9nNGNwbHVzXzEuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xvZzRjcGx1cy9sb2c0Y3BsdXNfMS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYWI5YTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xvZzRjcGx1cy9sb2c0Y3BsdXNfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gImxvZzRjcGx1cyBwcm92aWRlcyBhIHNpbXBsZSBDKysgbG9nZ2luZyBBUEkgZm9yIGxvZyBtYW5hZ2VtZW50IgotU0VDVElPTiA9ICJsaWJzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sb2c0Y3BsdXMvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbG9nNGNwbHVzL2J1Z3MvIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZWRhYTI4N2VjZWNjYjk0ZjlmMjg4MGQ5YzRlZjA4NSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59LXN0YWJsZS8ke1BWfS8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI1MGYwZjQzMWMwNzIzZjhiNjI1MzIzZTdiNjQ2NWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ1ZWMzYjYyZjJmMGJkYzdmMDZmYTM5OGJkZTYxMDkxZmQyNDkzZTkxMDU5ZTE3MzE1YjUxOTc0MjBkY2YwNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xvZzRjcGx1cy9sb2c0Y3BsdXNfMi4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbG9nNGNwbHVzL2xvZzRjcGx1c18yLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTdkMTVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xvZzRjcGx1cy9sb2c0Y3BsdXNfMi4wLjIuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJsb2c0Y3BsdXMgcHJvdmlkZXMgYSBzaW1wbGUgQysrIGxvZ2dpbmcgQVBJIGZvciBsb2cgbWFuYWdlbWVudCIKK1NFQ1RJT04gPSAibGlicyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbG9nNGNwbHVzLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL2xvZzRjcGx1cy9idWdzLyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDFlOGUwNjBjMjY4MjI4ODZiNTkyYWI0NzY1Yzc1NmIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfS1zdGFibGUvJHtQVn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImIzYmJlYjJkYzNlMTcwNzY4NDMwY2Y4NzU4MzAxNmY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwNTM5ZjIzMTUyNzFkMzcwYzdiYzZhMmI0ODA4Y2JlMzY5Mjc5ODM3ZjQ1MzljZTVjNzg5ZTQ1NjQ4OWZjNjIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sb2c0Y3BsdXMvZmlsZXMvbG9nNGNwbHVzLXN0YWJsZS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsb2c0Y3BsdXMtc3RhYmxlLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDEtTWFrZWZpbGUtRml4LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xzaHcvZmlsZXMvMDAwMS1NYWtlZmlsZS1GaXgtY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRiNmFiOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDEtTWFrZWZpbGUtRml4LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gNjJmOWVkOTViNWQwZmVhYjQyNmJmZjQ1MmJlNzkzYzYyYTZiNzk1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0RhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjo0OToyMSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gTWFrZWZpbGU6IEZpeCBjcm9zcyBjb21waWxhdGlvbgorCitBbGxvdyBidWlsZGluZyBvbiBBUk12NyBhbmQgQVJNdjguCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CistLS0KKyBzcmMvTWFrZWZpbGUgICAgICB8IDIgKy0KKyBzcmMvY29yZS9NYWtlZmlsZSB8IDIgKy0KKyBzcmMvZ3VpL01ha2VmaWxlICB8IDQgKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCBiNTA1ODZiYzkyMzQuLjY1NGI3ODZkZDg5OSAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZQorKysrIGIvc3JjL01ha2VmaWxlCitAQCAtMTgsNyArMTgsNyBAQCBleHBvcnQgTUFORElSCisgZXhwb3J0IERBVEFESVIKKyBleHBvcnQgU1FMSVRFCisgCistQ1hYPz1jKysKKytDWFg/PSQoQ1JPU1NfQ09NUElMRSljKysKKyBJTkNMVURFUz0tSS4vY29yZS8KKyBERUZJTkVTPS1EUFJFRklYPVwiJChQUkVGSVgpXCIgLURTQklORElSPVwiJChTQklORElSKVwiIC1ETUFORElSPVwiJChNQU5ESVIpXCIgLUREQVRBRElSPVwiJChEQVRBRElSKVwiCisgQ1hYRkxBR1M9LWcgLVdhbGwgLWcgJChJTkNMVURFUykgJChERUZJTkVTKSAkKFJQTV9PUFRfRkxBR1MpCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvTWFrZWZpbGUgYi9zcmMvY29yZS9NYWtlZmlsZQoraW5kZXggNWJmNWE2OWNjNmE2Li4yYmQxYjk0YzQxNzUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9NYWtlZmlsZQorKysrIGIvc3JjL2NvcmUvTWFrZWZpbGUKK0BAIC0xLDYgKzEsNiBAQAorIFBBQ0tBR0VOQU1FPz1sc2h3CisgCistQ1hYPWMrKworK0NYWD89JChDUk9TU19DT01QSUxFKWMrKworIElOQ0xVREVTPQorIERFRklORVM9LURQUkVGSVg9XCIkKFBSRUZJWClcIiAtRFNCSU5ESVI9XCIkKFNCSU5ESVIpXCIgLURNQU5ESVI9XCIkKE1BTkRJUilcIiAtRERBVEFESVI9XCIkKERBVEFESVIpXCIKKyBDWFhGTEFHUz89LWcgLVdhbGwgJChJTkNMVURFUykgJChERUZJTkVTKSAkKFJQTV9PUFRfRkxBR1MpCitkaWZmIC0tZ2l0IGEvc3JjL2d1aS9NYWtlZmlsZSBiL3NyYy9ndWkvTWFrZWZpbGUKK2luZGV4IDMzMmNlNTcwNDgxOS4uYjBmOTI1NDkwMzU2IDEwMDY0NAorLS0tIGEvc3JjL2d1aS9NYWtlZmlsZQorKysrIGIvc3JjL2d1aS9NYWtlZmlsZQorQEAgLTEsNyArMSw3IEBACisgUEFDS0FHRU5BTUU/PWxzaHcKKyAKKy1DWFg/PWMrKworLUNDPz1jYworK0NYWD89JChDUk9TU19DT01QSUxFKWMrKworK0NDPz0kKENST1NTX0NPTVBJTEUpY2MKKyBTVFJJUD89c3RyaXAKKyBPQkpDT1BZPz1vYmpjb3B5CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDItTWFrZWZpbGUtVXNlLXN1cHBsaWVkLUxERkxBR1MtdG8tc2lsZW5jZS1PRS1HTlVfSEFTSC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDItTWFrZWZpbGUtVXNlLXN1cHBsaWVkLUxERkxBR1MtdG8tc2lsZW5jZS1PRS1HTlVfSEFTSC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2RhMDFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xzaHcvZmlsZXMvMDAwMi1NYWtlZmlsZS1Vc2Utc3VwcGxpZWQtTERGTEFHUy10by1zaWxlbmNlLU9FLUdOVV9IQVNILnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNzU2NjdmOGEwYWU0ZjE2ODlmZjAzZWIxNzY4YjFlZThjZGZiZjAwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0RhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjo0OTozMCArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gTWFrZWZpbGU6IFVzZSBzdXBwbGllZCBMREZMQUdTIHRvIHNpbGVuY2UgT0UgR05VX0hBU0ggUUEKKyB3YXJuaW5nCisKK0ZpeCBPcGVuRW1iZWRkZWQvWW9jdG8gUUEgd2FybmluZzoKKworICAgIEVSUk9SOiBsc2h3LTAyLjE2LXIxIGRvX3BhY2thZ2VfcWE6IFFBIElzc3VlOiBObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeTogJ2J1aWxkL3RtcC93b3JrL2NvcnRleGE1aGYtbmVvbi1wb2t5LWxpbnV4LWdudWVhYmkvbHNody8wMi4xNi1yMS9wYWNrYWdlcy1zcGxpdC9sc2h3L3Vzci9zYmluL2xzaHcnIFtsZGZsYWdzXQorICAgIEVSUk9SOiBsc2h3LTAyLjE2LXIxIGRvX3BhY2thZ2VfcWE6IFFBIHJ1biBmb3VuZCBmYXRhbCBlcnJvcnMuIFBsZWFzZSBjb25zaWRlciBmaXhpbmcgdGhlbS4KKyAgICBFUlJPUjogbHNody0wMi4xNi1yMSBkb19wYWNrYWdlX3FhOiBGdW5jdGlvbiBmYWlsZWQ6IGRvX3BhY2thZ2VfcWEKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KKy0tLQorIHNyYy9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQoraW5kZXggNjU0Yjc4NmRkODk5Li5hNDQxYmEyYmI2NjYgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUKKysrKyBiL3NyYy9NYWtlZmlsZQorQEAgLTI1LDcgKzI1LDcgQEAgQ1hYRkxBR1M9LWcgLVdhbGwgLWcgJChJTkNMVURFUykgJChERUZJTkVTKSAkKFJQTV9PUFRfRkxBR1MpCisgaWZlcSAoJChTUUxJVEUpLCAxKQorIAlDWFhGTEFHUys9IC1EU1FMSVRFICQoc2hlbGwgcGtnLWNvbmZpZyAtLWNmbGFncyBzcWxpdGUzKQorIGVuZGlmCistTERGTEFHUz0tTC4vY29yZS8gLWcKKytMREZMQUdTKz0tTC4vY29yZS8gLWcKKyBpZm5lcSAoJChzaGVsbCAkKExEKSAtLWhlbHAgMnwgZ3JlcCAtLSAtLWFzLW5lZWRlZCksICkKKyAJTERGTEFHUys9IC1XbCwtLWFzLW5lZWRlZAorIGVuZGlmCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDMtc3lzZnMtRml4LWJhc2VuYW1lLWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2ZpbGVzLzAwMDMtc3lzZnMtRml4LWJhc2VuYW1lLWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDkyNDkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xzaHcvZmlsZXMvMDAwMy1zeXNmcy1GaXgtYmFzZW5hbWUtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsOTIgQEAKK0Zyb20gYTg5ZjJiYTg0OTY5OTRjOGI1ZTI4YTg5MjAyZGYxNWQ2NGM2NDhmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0RhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjo0NzowMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBzeXNmczogRml4IGJhc2VuYW1lKCkgYnVpbGQgd2l0aCBtdXNsCisKK211c2wgcHJvdmlkZXMgb25seSBzdGFuZGFyZCBiYXNlbmFtZSgpIHdoaWNoIGFjY2VwdHMgbm9uLWNvbnN0IHN0cmluZy4KK1RoaXMgZml4ZXMgYnVpbGQgZXJyb3Igd2l0aCBtdXNsIEMgbGlicmFyeToKKworICAgIHwgc3lzZnMuY2M6IEluIGZ1bmN0aW9uICdzdGQ6Ol9fY3h4MTE6OnN0cmluZyBzeXNmc19nZXRidXN0eXBlKGNvbnN0IHN0cmluZyYpJzoKKyAgICB8IHN5c2ZzLmNjOjEwMjoyMTogZXJyb3I6ICdiYXNlbmFtZScgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCisgICAgfCAgICAgICAgIi9kZXZpY2VzLyIgKyBiYXNlbmFtZShwYXRoLmNfc3RyKCkpOworICAgIHwgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KKy0tLQorIHNyYy9jb3JlL2Rhc2QuY2MgIHwgMyArKy0KKyBzcmMvY29yZS9zeXNmcy5jYyB8IDkgKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9kYXNkLmNjIGIvc3JjL2NvcmUvZGFzZC5jYworaW5kZXggNjI2YjhhODcyYjBmLi5iMjc4NDQyMTVjYzQgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9kYXNkLmNjCisrKysgYi9zcmMvY29yZS9kYXNkLmNjCitAQCAtMiw2ICsyLDcgQEAKKyAjaW5jbHVkZSAib3N1dGlscy5oIgorICNpbmNsdWRlICJkYXNkLmgiCisgI2luY2x1ZGUgPGdsb2IuaD4KKysjaW5jbHVkZSA8bGliZ2VuLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC00Miw3ICs0Myw3IEBAIGJvb2wgc2Nhbl9kYXNkKGh3Tm9kZSAmIG4pCisgICB7CisgICAgIGZvcihkZXZfbnVtPTA7ZGV2X251bTxkZXZpY2VzLmdsX3BhdGhjO2Rldl9udW0rKykKKyAgICAgeworLSAgICAgIGRldl9uYW1lID0gYmFzZW5hbWUoZGV2aWNlcy5nbF9wYXRodltkZXZfbnVtXSk7CisrICAgICAgZGV2X25hbWUgPSBiYXNlbmFtZShjb25zdF9jYXN0PGNoYXIgKj4oZGV2aWNlcy5nbF9wYXRodltkZXZfbnVtXSkpOworICAgICAgIGZvciAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBpdCA9IHN5c2ZzX2F0dHJpYnMuYmVnaW4oKTsgaXQgIT0gc3lzZnNfYXR0cmlicy5lbmQoKTsgKytpdCkKKyAgICAgICB7CisgICAgICAgICBzdGQ6OnN0cmluZyBhdHRyaWJfZm5hbWUgPSBzdGQ6OnN0cmluZyhTWVNGU19QUkVGSVgpICsgZGV2X25hbWUgKyAiL2RldmljZS8iICsgKml0OworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3N5c2ZzLmNjIGIvc3JjL2NvcmUvc3lzZnMuY2MKK2luZGV4IGFjYzlkMDA1NmQ1ZS4uYzU2YmFiN2IzYjlmIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvc3lzZnMuY2MKKysrKyBiL3NyYy9jb3JlL3N5c2ZzLmNjCitAQCAtNyw2ICs3LDcgQEAKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorICNpbmNsdWRlICJzeXNmcy5oIgorICNpbmNsdWRlICJvc3V0aWxzLmgiCisrI2luY2x1ZGUgPGxpYmdlbi5oPgorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorQEAgLTk5LDcgKzEwMCw3IEBAIHN0YXRpYyBzdHJpbmcgc3lzZnNfZ2V0YnVzdHlwZShjb25zdCBzdHJpbmcgJiBwYXRoKQorICAgeworICAgICBkZXZuYW1lID0KKyAgICAgICBzdHJpbmcoZnMucGF0aCArICIvYnVzLyIpICsgc3RyaW5nKG5hbWVsaXN0W2ldLT5kX25hbWUpICsKKy0gICAgICAiL2RldmljZXMvIiArIGJhc2VuYW1lKHBhdGguY19zdHIoKSk7CisrICAgICAgIi9kZXZpY2VzLyIgKyBiYXNlbmFtZShjb25zdF9jYXN0PGNoYXIgKj4ocGF0aC5jX3N0cigpKSk7CisgCisgICAgIGlmIChzYW1lZmlsZShkZXZuYW1lLCBwYXRoKSkKKyAgICAgICByZXR1cm4gc3RyaW5nKG5hbWVsaXN0W2ldLT5kX25hbWUpOworQEAgLTEzOSw3ICsxNDAsNyBAQCBzdGF0aWMgc3RyaW5nIHN5c2ZzdG9idXNpbmZvKGNvbnN0IHN0cmluZyAmIHBhdGgpCisgCisgICBpZiAoYnVzdHlwZSA9PSAidmlydGlvIikKKyAgIHsKKy0gICAgc3RyaW5nIG5hbWUgPSBiYXNlbmFtZShwYXRoLmNfc3RyKCkpOworKyAgICBzdHJpbmcgbmFtZSA9IGJhc2VuYW1lKGNvbnN0X2Nhc3Q8Y2hhciAqPihwYXRoLmNfc3RyKCkpKTsKKyAgICAgaWYgKG5hbWUuY29tcGFyZSgwLCA2LCAidmlydGlvIikgPT0gMCkKKyAgICAgICByZXR1cm4gInZpcnRpb0AiICsgbmFtZS5zdWJzdHIoNik7CisgICAgIGVsc2UKK0BAIC0yMDcsNyArMjA4LDcgQEAgc3RyaW5nIGVudHJ5Ojpkcml2ZXIoKSBjb25zdAorICAgc3RyaW5nIGRyaXZlcmxpbmsgPSBUaGlzLT5kZXZwYXRoICsgIi9kcml2ZXIiOworICAgaWYgKCFleGlzdHMoZHJpdmVybGluaykpCisgICAgIHJldHVybiAiIjsKKy0gIHJldHVybiBiYXNlbmFtZShyZWFkbGluayhkcml2ZXJsaW5rKS5jX3N0cigpKTsKKysgIHJldHVybiBiYXNlbmFtZShjb25zdF9jYXN0PGNoYXIgKj4ocmVhZGxpbmsoZHJpdmVybGluaykuY19zdHIoKSkpOworIH0KKyAKKyAKK0BAIC0yODgsNyArMjg5LDcgQEAgc3RyaW5nIGVudHJ5OjpuYW1lX2luX2NsYXNzKGNvbnN0IHN0cmluZyAmIGNsYXNzbmFtZSkgY29uc3QKKyAKKyBzdHJpbmcgZW50cnk6Om5hbWUoKSBjb25zdAorIHsKKy0gIHJldHVybiBiYXNlbmFtZShUaGlzLT5kZXZwYXRoLmNfc3RyKCkpOworKyAgcmV0dXJuIGJhc2VuYW1lKGNvbnN0X2Nhc3Q8Y2hhciAqPihUaGlzLT5kZXZwYXRoLmNfc3RyKCkpKTsKKyB9CisgCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sc2h3L2xzaHdfMDIuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHNody9sc2h3XzAyLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDRmYmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHNody9sc2h3XzAyLjE4LmJiCkBAIC0wLDAgKzEsMzIgQEAKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdG9vbCB0byBwcm92aWRlIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZSBoYXJkd2FyZSBcCitjb25maWd1cmF0aW9uIG9mIHRoZSBtYWNoaW5lLiBJdCBjYW4gcmVwb3J0IGV4YWN0IG1lbW9yeSBjb25maWd1cmF0aW9uLCBcCitmaXJtd2FyZSB2ZXJzaW9uLCBtYWluYm9hcmQgY29uZmlndXJhdGlvbiwgQ1BVIHZlcnNpb24gYW5kIHNwZWVkLCBjYWNoZSBcCitjb25maWd1cmF0aW9uLCBidXMgc3BlZWQsIGV0Yy4gb24gRE1JLWNhcGFibGUgb3IgRUZJIHN5c3RlbXMuIgorU1VNTUFSWSA9ICJIYXJkd2FyZSBsaXN0ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZXppeC5vcmcvcHJvamVjdC93aWtpL0hhcmR3YXJlTGlTdGVyIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2V6aXgub3JnL3NvZnR3YXJlL2ZpbGVzL2xzaHctQi4ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLUZpeC1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItTWFrZWZpbGUtVXNlLXN1cHBsaWVkLUxERkxBR1MtdG8tc2lsZW5jZS1PRS1HTlVfSEFTSC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtc3lzZnMtRml4LWJhc2VuYW1lLWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiODY3MWM2ZDk0ZDYzMjRhNzQ0YjdmMjFmMWJmZWNmZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWUyMmVmMTFjOTM0MzY0YmU0ZmQyYTBhMWE3YWFkZjQ0OTVhMDI1MWVjNjk3OWRhMjgwZDM0MmE4OWNhM2MyZiIKKworUyA9ICIke1dPUktESVJ9L2xzaHctQi4ke1BWfSIKKworZG9fY29tcGlsZSgpIHsKKyAgICAjIGJ1aWxkIGNvcmUgb25seSAtIGRvbid0IHNoaXAgZ3VpCisgICAgb2VfcnVubWFrZSAtQyBzcmMgY29yZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlX2dpdC5iYgppbmRleCBhYmUwMTVkLi5mNDAzM2Y3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCkBAIC0xNSw3ICsxNSw3IEBACiAKIERFUEVORFMgPSAiZWxmdXRpbHMiCiBSREVQRU5EU18ke1BOfSA9ICJlbGZ1dGlscyIKLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2NvbGxhYi1tYWludC9sdHJhY2UuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NwYXJrbGVob2xpYy9sdHJhY2UuZ2l0O2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9aHR0cCBcCiAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLXJlYWRkaXJfci13aXRoLXJlYWRkaXIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtY29ycmVjdC1lbnVtLXR5cGUucGF0Y2ggXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfMi4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYgppbmRleCAxZDY5YjNjLi4zMDUyZWIwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYgpAQCAtMywxNCArMywxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0xMGE5NmM5MzQwM2FmZmNjMzQ3NjVmNGMyNjEyYmMyMiIKIEhPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgogCi1TUkNfVVJJID0gImh0dHA6Ly9sdWFqaXQub3JnL2Rvd25sb2FkL0x1YUpJVC0ke1BWfS50YXIuZ3ogXAorUFYgLj0gIitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIwMmI1MjE5ODFhMWFiOTE5ZmYyY2Q0ZDliY2FlZTgwYmFmNzdkY2UyIgorU1JDX1VSSSA9ICJnaXQ6Ly9sdWFqaXQub3JnL2dpdC9sdWFqaXQtMi4wLmdpdDtwcm90b2NvbD1odHRwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXN0cmlwLWF1dG9tYXRpY2FsbHktdGhpcy1sZWF2ZXMtdGhlLXN0cmlwcGluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jbGFuZy5wYXRjaCBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDgzNTMyMDJjYmNhY2FiODRlZTQxYTVhNzBlYTBhMmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc0YjFmODI5N2M2OTc4MjFmNTYxZjliNzNiNTdmZmQ0MTllZDhmNDI3OGM4MmUwNWI0ODgwNmQzMGMxZTk3OSIKIAotUyA9ICIke1dPUktESVJ9L0x1YUpJVC0ke1BWfSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgcGtnY29uZmlnIGJpbmNvbmZpZyBzaXRlaW5mbwogCkBAIC00OSw3ICs0OSw2IEBACiAgICAgJ1RBUkdFVF9TSExERkxBR1M9JHtMREZMQUdTfScgXAogICAgICdIT1NUX0NDPSR7QlVJTERfQ0N9JyBcCiAgICAgJ0hPU1RfQ0ZMQUdTPSR7QlVJTERfQ0ZMQUdTfScgXAotICAgICdIT1NUX0xERkxBR1M9JHtCVUlMRF9MREZMQUdTfScgXAogICAgIFwKICAgICAnUFJFRklYPSR7cHJlZml4fScgXAogICAgICdNVUxUSUxJQj0ke2Jhc2VsaWJ9JyBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbF80LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbWVyY3VyaWFsL21lcmN1cmlhbF80LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTI0OTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWxfNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgTWVyY3VyaWFsIGRpc3RyaWJ1dGVkIFNDTSIKLUhPTUVQQUdFID0gImh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJweXRob24gcHl0aG9uLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInB5dGhvbi1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24gcHl0aG9uLW1vZHVsZXMiCi0KLWluaGVyaXQgcHl0aG9uLWRpcgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1lcmN1cmlhbC1zY20ub3JnL3JlbGVhc2UvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImMxZDlmYWQxYjdlZDcwNzdiMGQ0YWU4MmU3MTE1NGRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzNGFmNGE2NzU2NWM4NTkyM2IwYTE5MTBjNzA0YWI0NGJjZjEyZjY5Yjg1NTMyNjg3MjA4Nzc2NTYzZDg3ZGUiCi0KLVMgPSAiJHtXT1JLRElSfS9tZXJjdXJpYWwtJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1FWFRSQV9PRU1BS0UgPSAiU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgIFBSRUZJWD0ke3ByZWZpeH0iCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIHNlZCAtaSAtZSAnczpQWVRIT049cHl0aG9uOlBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob246ZycgJHtTfS9NYWtlZmlsZQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIC1lIGluc3RhbGwtYmluIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvbWVyY3VyaWFsXzQuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21lcmN1cmlhbC9tZXJjdXJpYWxfNC42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM3MTBhYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tZXJjdXJpYWwvbWVyY3VyaWFsXzQuNi4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiVGhlIE1lcmN1cmlhbCBkaXN0cmlidXRlZCBTQ00iCitIT01FUEFHRSA9ICJodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAicHl0aG9uIHB5dGhvbi1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJweXRob24tbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIHB5dGhvbi1tb2R1bGVzIgorCitpbmhlcml0IHB5dGhvbi1kaXIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5tZXJjdXJpYWwtc2NtLm9yZy9yZWxlYXNlLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmOWIyZTRhM2I1OTAxZWY3NDRmYTNhYmU0MTk2ZTk3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWZhOGVjYmM4YWE2ZTQ4ZTk4Zjk4MDNhMTY4M2JhOTEzNjcxMjQyOTVkYmEyNDA3YjI4YzM0Y2E2MjExMDhkIgorCitTID0gIiR7V09SS0RJUn0vbWVyY3VyaWFsLSR7UFZ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gIlNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICBQUkVGSVg9JHtwcmVmaXh9IgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6UFlUSE9OPXB5dGhvbjpQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uOmcnICR7U30vTWFrZWZpbGUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAtZSBpbnN0YWxsLWJpbiBERVNURElSPSR7RH0gUFJFRklYPSR7cHJlZml4fQorfQorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbXNncGFjay9tc2dwYWNrLWNfMi4xLjUuYmIKaW5kZXggMDJjMGNkMi4uNjkwYTdmNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL21zZ3BhY2svbXNncGFjay1jXzIuMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9tc2dwYWNrL21zZ3BhY2stY18yLjEuNS5iYgpAQCAtOSwxNCArOSwxMSBAQAogCiBQViAuPSAiK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMjA4NTk1YjI2MjBjZjYyNjBjZTNkNmQ0Y2Y4NTQzZjEzYjIwNjQ0OSIKLQogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21zZ3BhY2svbXNncGFjay1jIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LVdlcnJvci1jbGFzcy1tZW1hY2Nlc3MucGF0Y2ggXAogICAgICAgICAgICAiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCitTUkNSRVYgPSAiMjA4NTk1YjI2MjBjZjYyNjBjZTNkNmQ0Y2Y4NTQzZjEzYjIwNjQ0OSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvbXNncGFjay8qLmNtYWtlIgoraW5oZXJpdCBjbWFrZSBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguMTIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzMzOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC4xMi4wLmJiCkBAIC0wLDAgKzEsOTIgQEAKK0RFU0NSSVBUSU9OID0gIm5vZGVKUyBFdmVudGVkIEkvTyBmb3IgVjggSmF2YVNjcmlwdCIKK0hPTUVQQUdFID0gImh0dHA6Ly9ub2RlanMub3JnIgorTElDRU5TRSA9ICJNSVQgJiBCU0QgJiBBcnRpc3RpYy0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mZGU5MWQ1YzViYmQxZTAzODk2MjNlMWFjMDE4ZDllOCIKKworREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgaWN1IgorCitpbmhlcml0IHBrZ2NvbmZpZworCitDT01QQVRJQkxFX01BQ0hJTkVfYXJtdjQgPSAiKCEuKmFybXY0KS4qIgorQ09NUEFUSUJMRV9NQUNISU5FX2FybXY1ID0gIighLiphcm12NSkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9taXBzNjQgPSAiKCEuKm1pcHM2NCkuKiIKKworU1JDX1VSSSA9ICJodHRwOi8vbm9kZWpzLm9yZy9kaXN0L3Yke1BWfS9ub2RlLXYke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjhiM2FiZDAzM2RhZTk2YjZmYWRjYjZhODcyYTQ0ZDNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhOWRmZjU4MDE2YzE4ZmI0YmY5MDJkOTYzYjEyNGZmMDU4YTU1MGViY2Q5ODQwYzY3Nzc1NzM4N2JjZTQxOWEiCisKK1MgPSAiJHtXT1JLRElSfS9ub2RlLXYke1BWfSIKKworIyB2OCBlcnJvcnMgb3V0IGlmIHlvdSBoYXZlIHNldCBDQ0FDSEUKK0NDQUNIRSA9ICIiCisKK2RlZiBtYXBfbm9kZWpzX2FyY2goYSwgZCk6CisgICAgaW1wb3J0IHJlCisKKyAgICBpZiAgIHJlLm1hdGNoKCdpLjg2JCcsIGEpOiByZXR1cm4gJ2lhMzInCisgICAgZWxpZiByZS5tYXRjaCgneDg2XzY0JCcsIGEpOiByZXR1cm4gJ3g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0JCcsIGEpOiByZXR1cm4gJ2FybTY0JworICAgIGVsaWYgcmUubWF0Y2goJyhwb3dlcnBjNjR8cHBjNjRsZSkkJywgYSk6IHJldHVybiAncHBjNjQnCisgICAgZWxpZiByZS5tYXRjaCgncG93ZXJwYyQnLCBhKTogcmV0dXJuICdwcGMnCisgICAgcmV0dXJuIGEKKworQVJDSEZMQUdTX2FybSA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjYWxsY29udmVudGlvbi1oYXJkJywgJy0td2l0aC1hcm0tZmxvYXQtYWJpPWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9c29mdGZwJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvbicsICctLXdpdGgtYXJtLWZwdT1uZW9uJywgXAorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICd2ZnB2M2QxNicsICctLXdpdGgtYXJtLWZwdT12ZnB2My1kMTYnLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzJywgJy0td2l0aC1hcm0tZnB1PXZmcHYzJywgXAorICAgICAgICAgICAgICAgICAgICAnLS13aXRoLWFybS1mcHU9dmZwJywgZCksIGQpLCBkKX0iCitHWVBfREVGSU5FU19hcHBlbmRfbWlwc2VsID0gIiBtaXBzX2FyY2hfdmFyaWFudD0ncjEnICIKK0FSQ0hGTEFHUyA/PSAiIgorCisjIE5vZGUgaXMgd2F5IHRvbyBjb29sIHRvIHVzZSBwcm9wZXIgYXV0b3Rvb2xzLCBzbyB3ZSBpbnN0YWxsIHR3byB3cmFwcGVycyB0byBmb3JjZWZ1bGx5IGluamVjdCBwcm9wZXIgYXJjaCBjZmxhZ3MgdG8gd29ya2Fyb3VuZCBneXBpCitkb19jb25maWd1cmUgKCkgeworICAgIHJtIC1yZiAke1N9L2RlcHMvb3BlbnNzbAorICAgIGV4cG9ydCBMRD0iJHtDWFh9IgorICAgIEdZUF9ERUZJTkVTPSIke0dZUF9ERUZJTkVTfSIgZXhwb3J0IEdZUF9ERUZJTkVTCisgICAgIyAkVEFSR0VUX0FSQ0ggc2V0dGluZ3MgZG9uJ3QgbWF0Y2ggLS1kZXN0LWNwdSBzZXR0aW5ncworICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0td2l0aC1pbnRsPXN5c3RlbS1pY3UgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgLS1zaGFyZWQtemxpYiBcCisgICAgICAgICAgICAgICAtLWRlc3QtY3B1PSIke0BtYXBfbm9kZWpzX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIgXAorICAgICAgICAgICAgICAgLS1kZXN0LW9zPWxpbnV4IFwKKyAgICAgICAgICAgICAgICR7QVJDSEZMQUdTfQorfQorCitkb19jb21waWxlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290CisgICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6CisgICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQorICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQorICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCisgICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKKyAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6CisgICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCisgICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCisgICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAorICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCisgICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgorRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgorUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uLXNoZWxsIHB5dGhvbi1kYXRldGltZSBweXRob24tc3VicHJvY2VzcyBweXRob24tdGV4dHV0aWxzIFwKKyAgICBweXRob24tY29tcGlsZXIgcHl0aG9uLW1pc2MgcHl0aG9uLW11bHRpcHJvY2Vzc2luZyIKKworUEFDS0FHRVMgPSsgIiR7UE59LXN5c3RlbXRhcCIKK0ZJTEVTXyR7UE59LXN5c3RlbXRhcCA9ICIke2RhdGFkaXJ9L3N5c3RlbXRhcCIKKworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzXzguOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MzBjZDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfOC45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJub2RlSlMgRXZlbnRlZCBJL08gZm9yIFY4IEphdmFTY3JpcHQiCi1IT01FUEFHRSA9ICJodHRwOi8vbm9kZWpzLm9yZyIKLUxJQ0VOU0UgPSAiTUlUICYgQlNEICYgQXJ0aXN0aWMtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjcwZjc0NzdhMTcwNWY3Y2QzZTI5ZDNkNDUxMjkxNWQiCi0KLURFUEVORFMgPSAib3BlbnNzbDEwIHpsaWIiCi0KLUNPTVBBVElCTEVfTUFDSElORV9hcm12NCA9ICIoIS4qYXJtdjQpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfYXJtdjUgPSAiKCEuKmFybXY1KS4qIgotQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoIS4qbWlwczY0KS4qIgotCi1TUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNjMxZWQxMDJmZTU4YzEzY2Y2M2JjOTJhNjhjZjQ3NTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNkY2RlOWM5YzFjYTlmNDUwYTBiMjRlYWZhMjI5Y2E3NTllNTc2ZGFhMGZhZTg5MmNlNzRkNTQxZWNkYzg2ZiIKLQotUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgotCi0jIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQotQ0NBQ0hFID0gIiIKLQotZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JwotICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKLSAgICByZXR1cm4gYQotCi1BUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCi0gICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKLUdZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgotQVJDSEZMQUdTID89ICIiCi0KLSMgTm9kZSBpcyB3YXkgdG9vIGNvb2wgdG8gdXNlIHByb3BlciBhdXRvdG9vbHMsIHNvIHdlIGluc3RhbGwgdHdvIHdyYXBwZXJzIHRvIGZvcmNlZnVsbHkgaW5qZWN0IHByb3BlciBhcmNoIGNmbGFncyB0byB3b3JrYXJvdW5kIGd5cGkKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgcm0gLXJmICR7U30vZGVwcy9vcGVuc3NsCi0gICAgZXhwb3J0IExEPSIke0NYWH0iCi0gICAgR1lQX0RFRklORVM9IiR7R1lQX0RFRklORVN9IiBleHBvcnQgR1lQX0RFRklORVMKLSAgICAjICRUQVJHRVRfQVJDSCBzZXR0aW5ncyBkb24ndCBtYXRjaCAtLWRlc3QtY3B1IHNldHRpbmdzCi0gICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS13aXRob3V0LWludGwgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgLS1zaGFyZWQtemxpYiBcCi0gICAgICAgICAgICAgICAtLWRlc3QtY3B1PSIke0BtYXBfbm9kZWpzX2FyY2goZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQpfSIgXAotICAgICAgICAgICAgICAgLS1kZXN0LW9zPWxpbnV4IFwKLSAgICAgICAgICAgICAgICR7QVJDSEZMQUdTfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKLSAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290Ci0gICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6Ci0gICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQotICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQotICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCi0gICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKLSAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6Ci0gICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCi0gICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi0gICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAotICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCi0gICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcwotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgotRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgotUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uLXNoZWxsIHB5dGhvbi1kYXRldGltZSBweXRob24tc3VicHJvY2VzcyBweXRob24tdGV4dHV0aWxzIFwKLSAgICBweXRob24tY29tcGlsZXIgcHl0aG9uLW1pc2MgcHl0aG9uLW11bHRpcHJvY2Vzc2luZyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXN5c3RlbXRhcCIKLUZJTEVTXyR7UE59LXN5c3RlbXRhcCA9ICIke2RhdGFkaXJ9L3N5c3RlbXRhcCIKLQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDEtQWRkLWZhbGx0aHJvdWdoLWNvbW1lbnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDQxNDZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1BZGQtZmFsbHRocm91Z2gtY29tbWVudHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotRnJvbSA4Zjg1MTYzYjAzMGU3Yjk1NzY0OGY5MGNkOGZhNTk5ZmIwNGQ1ZDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjM6MzI6NDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIEFkZCBmYWxsdGhyb3VnaCBjb21tZW50cwotCi1GaXhlcwotCi1zcmMvc3ZmL3N2Zi5jOjY2Mzo3OiBlcnJvcjogdGhpcyBzdGF0ZW1lbnQgbWF5IGZhbGwgdGhyb3VnaCBbLVdlcnJvcj1pbXBsaWNpdC1mYWxsdGhyb3VnaD1dCi0gICAgIGkgPSAtMTsKLSAgICAgfn5efn5+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2ZsYXNoL21mbGFzaC5jICAgICAgICAgICAgfCAzICsrLQotIHNyYy9mbGFzaC9uYW5kL214My5jICAgICAgICAgIHwgMSArCi0gc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMgICAgICAgfCAxICsKLSBzcmMvc3ZmL3N2Zi5jICAgICAgICAgICAgICAgICB8IDIgKysKLSBzcmMvdGFyZ2V0L2FybV9hZGlfdjUuYyAgICAgICB8IDkgKysrKysrKysrCi0gc3JjL3RhcmdldC9hcm1fZGlzYXNzZW1ibGVyLmMgfCAxICsKLSBzcmMvdGFyZ2V0L3RhcmdldC5jICAgICAgICAgICB8IDEgKwotIDcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2ZsYXNoL21mbGFzaC5jIGIvc3JjL2ZsYXNoL21mbGFzaC5jCi1pbmRleCBiNjk5OTU1NDIuLjMyNTRhM2Q1NiAxMDA2NDQKLS0tLSBhL3NyYy9mbGFzaC9tZmxhc2guYwotKysrIGIvc3JjL2ZsYXNoL21mbGFzaC5jCi1AQCAtMjU5LDEwICsyNTksMTEgQEAgc3RhdGljIGludCBtZ19kc2tfd2FpdChtZ19pb190eXBlX3dhaXQgd2FpdF9sb2NhbCwgdWludDMyX3QgdGltZV92YXIpCi0gCQkJCWNhc2UgbWdfaW9fd2FpdF9yZHk6Ci0gCQkJCQlpZiAoc3RhdHVzICYgbWdfaW9fcmJpdF9zdGF0dXNfcmVhZHkpCi0gCQkJCQkJcmV0dXJuIEVSUk9SX09LOwotLQotKwkJCQkJLyogZmFsbHRocnUgKi8KLSAJCQkJY2FzZSBtZ19pb193YWl0X2RycToKLSAJCQkJCWlmIChzdGF0dXMgJiBtZ19pb19yYml0X3N0YXR1c19kYXRhX3JlcSkKLSAJCQkJCQlyZXR1cm4gRVJST1JfT0s7Ci0rCQkJCQkvKiBmYWxsdGhydSAqLwotIAotIAkJCQlkZWZhdWx0OgotIAkJCQkJYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZsYXNoL25hbmQvbXgzLmMgYi9zcmMvZmxhc2gvbmFuZC9teDMuYwotaW5kZXggYjYxZTQ3NTM1Li4wYTU1OTI5ZWQgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxhc2gvbmFuZC9teDMuYwotKysrIGIvc3JjL2ZsYXNoL25hbmQvbXgzLmMKLUBAIC0yODEsNiArMjgxLDcgQEAgc3RhdGljIGludCBpbXgzMV9jb21tYW5kKHN0cnVjdCBuYW5kX2RldmljZSAqbmFuZCwgdWludDhfdCBjb21tYW5kKQotIAkJCSAqIG9mZnNldCA9PSBvbmUgaGFsZiBvZiBwYWdlIHNpemUKLSAJCQkgKi8KLSAJCQlpbl9zcmFtX2FkZHJlc3MgPSBNWDNfTkZfTUFJTl9CVUZGRVIwICsgKG5hbmQtPnBhZ2Vfc2l6ZSA+PiAxKTsKLSsJCQkvKiBmYWxsdGhydSAqLwotIAkJZGVmYXVsdDoKLSAJCQlpbl9zcmFtX2FkZHJlc3MgPSBNWDNfTkZfTUFJTl9CVUZGRVIwOwotIAl9Ci1kaWZmIC0tZ2l0IGEvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMgYi9zcmMvanRhZy9kcml2ZXJzL2Z0ZGkuYwotaW5kZXggMDBmZTM3ZmFmLi4yMGYxN2Q4MTAgMTAwNjQ0Ci0tLS0gYS9zcmMvanRhZy9kcml2ZXJzL2Z0ZGkuYwotKysrIGIvc3JjL2p0YWcvZHJpdmVycy9mdGRpLmMKLUBAIC04NTUsNiArODU1LDcgQEAgQ09NTUFORF9IQU5ETEVSKGZ0ZGlfaGFuZGxlX3NldF9zaWduYWxfY29tbWFuZCkKLSAJCQlmdGRpX3NldF9zaWduYWwoc2lnLCAqQ01EX0FSR1ZbMV0pOwotIAkJCWJyZWFrOwotIAkJfQotKwkJLyogZmFsbHRocnUgKi8KLSAJZGVmYXVsdDoKLSAJCUxPR19FUlJPUigidW5rbm93biBzaWduYWwgbGV2ZWwgJyVzJywgdXNlIDAsIDEgb3IgeiIsIENNRF9BUkdWWzFdKTsKLSAJCXJldHVybiBFUlJPUl9DT01NQU5EX1NZTlRBWF9FUlJPUjsKLWRpZmYgLS1naXQgYS9zcmMvc3ZmL3N2Zi5jIGIvc3JjL3N2Zi9zdmYuYwotaW5kZXggZTdlODE1YzEwLi43YjI2MWNjNzIgMTAwNjQ0Ci0tLS0gYS9zcmMvc3ZmL3N2Zi5jCi0rKysgYi9zcmMvc3ZmL3N2Zi5jCi1AQCAtNjYxLDExICs2NjEsMTMgQEAgc3RhdGljIGludCBzdmZfcmVhZF9jb21tYW5kX2Zyb21fZmlsZShGSUxFICpmZCkKLSAJCQkJaWYgKHN2Zl9nZXRsaW5lKCZzdmZfcmVhZF9saW5lLCAmc3ZmX3JlYWRfbGluZV9zaXplLCBzdmZfZmQpIDw9IDApCi0gCQkJCQlyZXR1cm4gRVJST1JfRkFJTDsKLSAJCQkJaSA9IC0xOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCWNhc2UgJ1xyJzoKLSAJCQkJc2xhc2ggPSAwOwotIAkJCQkvKiBEb24ndCBzYXZlICdccicgYW5kICdcbicgaWYgbm8gZGF0YSBpcyBwYXJzZWQgKi8KLSAJCQkJaWYgKCFjbWRfcG9zKQotIAkJCQkJYnJlYWs7Ci0rCQkJCS8qIGZhbGx0aHJ1ICovCi0gCQkJZGVmYXVsdDoKLSAJCQkJLyogVGhlIHBhcnNpbmcgY29kZSBjdXJyZW50bHkgZXhwZWN0cyBhIHNwYWNlCi0gCQkJCSAqIGJlZm9yZSBwYXJlbnRoZXNlcyAtLSAiVERJICgxMjMpIi4gIEFsc28gYQotZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jIGIvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKLWluZGV4IGVhZmMyZGRjMC4uZDQ0NGRiMmIxIDEwMDY0NAotLS0tIGEvc3JjL3RhcmdldC9hcm1fYWRpX3Y1LmMKLSsrKyBiL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCi1AQCAtMzQ2LDEwICszNDYsMTMgQEAgc3RhdGljIGludCBtZW1fYXBfd3JpdGUoc3RydWN0IGFkaXY1X2FwICphcCwgY29uc3QgdWludDhfdCAqYnVmZmVyLCB1aW50MzJfdCBzaXoKLSAJCQljYXNlIDQ6Ci0gCQkJCW91dHZhbHVlIHw9ICh1aW50MzJfdCkqYnVmZmVyKysgPDwgOCAqIChhZGRyZXNzKysgJiAzKTsKLSAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCWNhc2UgMjoKLSAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCWNhc2UgMToKLSAJCQkJb3V0dmFsdWUgfD0gKHVpbnQzMl90KSpidWZmZXIrKyA8PCA4ICogKGFkZHJlc3MrKyAmIDMpOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCX0KLSAJCX0KLSAKLUBAIC01MDksMjAgKzUxMiwyNiBAQCBzdGF0aWMgaW50IG1lbV9hcF9yZWFkKHN0cnVjdCBhZGl2NV9hcCAqYXAsIHVpbnQ4X3QgKmJ1ZmZlciwgdWludDMyX3Qgc2l6ZSwgdWludAotIAkJCWNhc2UgNDoKLSAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoMyAtIChhZGRyZXNzKysgJiAzKSk7Ci0gCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKDMgLSAoYWRkcmVzcysrICYgMykpOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCWNhc2UgMjoKLSAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoMyAtIChhZGRyZXNzKysgJiAzKSk7Ci0rCQkJCS8qIGZhbGx0aHJ1ICovCi0gCQkJY2FzZSAxOgotIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqICgzIC0gKGFkZHJlc3MrKyAmIDMpKTsKLSsJCQkJLyogZmFsbHRocnUgKi8KLSAJCQl9Ci0gCQl9IGVsc2UgewotIAkJCXN3aXRjaCAodGhpc19zaXplKSB7Ci0gCQkJY2FzZSA0OgotIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqIChhZGRyZXNzKysgJiAzKTsKLSAJCQkJKmJ1ZmZlcisrID0gKnJlYWRfcHRyID4+IDggKiAoYWRkcmVzcysrICYgMyk7Ci0rCQkJCS8qIGZhbGx0aHJ1ICovCi0gCQkJY2FzZSAyOgotIAkJCQkqYnVmZmVyKysgPSAqcmVhZF9wdHIgPj4gOCAqIChhZGRyZXNzKysgJiAzKTsKLSsJCQkJLyogZmFsbHRocnUgKi8KLSAJCQljYXNlIDE6Ci0gCQkJCSpidWZmZXIrKyA9ICpyZWFkX3B0ciA+PiA4ICogKGFkZHJlc3MrKyAmIDMpOwotKwkJCQkvKiBmYWxsdGhydSAqLwotIAkJCX0KLSAJCX0KLSAKLWRpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYyBiL3NyYy90YXJnZXQvYXJtX2Rpc2Fzc2VtYmxlci5jCi1pbmRleCA1Mjc3Yjk0ZDguLjJlYjIxZWEzMyAxMDA2NDQKLS0tLSBhL3NyYy90YXJnZXQvYXJtX2Rpc2Fzc2VtYmxlci5jCi0rKysgYi9zcmMvdGFyZ2V0L2FybV9kaXNhc3NlbWJsZXIuYwotQEAgLTMyOTksNiArMzI5OSw3IEBAIHN0YXRpYyBpbnQgdDJldl9kYXRhX2ltbWVkKHVpbnQzMl90IG9wY29kZSwgdWludDMyX3QgYWRkcmVzcywKLSAJCWNhc2UgMHgxMDoKLSAJCWNhc2UgMHgxMjoKLSAJCQlpc19zaWduZWQgPSB0cnVlOwotKwkJCS8qIGZhbGx0aHJ1ICovCi0gCQljYXNlIDB4MTg6Ci0gCQljYXNlIDB4MWE6Ci0gCQkJLyogc2lnbmVkL3Vuc2lnbmVkIHNhdHVyYXRlZCBhZGQgKi8KLWRpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L3RhcmdldC5jIGIvc3JjL3RhcmdldC90YXJnZXQuYwotaW5kZXggZTA0ZWNjNDcwLi41OTdiNGIxM2QgMTAwNjQ0Ci0tLS0gYS9zcmMvdGFyZ2V0L3RhcmdldC5jCi0rKysgYi9zcmMvdGFyZ2V0L3RhcmdldC5jCi1AQCAtMzY4NCw2ICszNjg0LDcgQEAgQ09NTUFORF9IQU5ETEVSKGhhbmRsZV9icF9jb21tYW5kKQotIAkJCQlhZGRyID0gMDsKLSAJCQkJcmV0dXJuIGhhbmRsZV9icF9jb21tYW5kX3NldChDTURfQ1RYLCBhZGRyLCBhc2lkLCBsZW5ndGgsIGh3KTsKLSAJCQl9Ci0rCQkJLyogZmFsbHRocnUgKi8KLSAKLSAJCWNhc2UgNDoKLSAJCQlodyA9IEJLUFRfSEFSRDsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1GaXgtbGlidXNiLTEuMC4yMi1kZXByZWNhdGVkLWxpYnVzYl9zZXRfZGVidWctd2l0aC1sLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAxLUZpeC1saWJ1c2ItMS4wLjIyLWRlcHJlY2F0ZWQtbGlidXNiX3NldF9kZWJ1Zy13aXRoLWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViOTA4MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMS1GaXgtbGlidXNiLTEuMC4yMi1kZXByZWNhdGVkLWxpYnVzYl9zZXRfZGVidWctd2l0aC1sLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYjk1YTk5NmJmYjI4MTEwNGI2OGVjNjZmMzJlYmI3OWRiNTE5YTRhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIE1heSAyMDE4IDIxOjA2OjQ2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBsaWJ1c2ItMS4wLjIyIGRlcHJlY2F0ZWQgbGlidXNiX3NldF9kZWJ1ZyB3aXRoCisgbGlidXNiX3NldF9vcHRpb24KKworbGlidXNiX3NldF9kZWJ1ZyBpcyBkZXByZWNhdGVkIGluIGxpYnVzYiA+PSAxLjAuMjIgdGhlcmVmb3JlIHJlcGxhY2UKK3dpdGggZXF1aXZhbGVudCBsaWJ1c2Jfc2V0X29wdGlvbigpICBBUEkKKworc2VlIGxpYnVzYiBjb21taXQgZm9yIG1vcmUgZGV0YWlscworCitodHRwczovL2dpdGh1Yi5jb20vbGlidXNiL2xpYnVzYi9jb21taXQvNTM5ZjIyZTJmZDkxNjU1OGQxMWFiOWE2NmYxMGY0NjFjNTU5MzE2OAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL29wZW5vY2QuenlsaW4uY29tLyMvYy80NTQwL10KKyBzcmMvanRhZy9kcml2ZXJzL3hkczExMC5jIHwgNSArKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9qdGFnL2RyaXZlcnMveGRzMTEwLmMgYi9zcmMvanRhZy9kcml2ZXJzL3hkczExMC5jCitpbmRleCA5MGI2OTkwMjcuLjliZmUwMmVhOCAxMDA2NDQKKy0tLSBhL3NyYy9qdGFnL2RyaXZlcnMveGRzMTEwLmMKKysrKyBiL3NyYy9qdGFnL2RyaXZlcnMveGRzMTEwLmMKK0BAIC0zNjcsOCArMzY3LDExIEBAIHN0YXRpYyBib29sIHVzYl9jb25uZWN0KHZvaWQpCisgCisgCQkvKiBTZXQgbGlidXNiIHRvIGF1dG8gZGV0YWNoIGtlcm5lbCBhbmQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcyAqLworIAkJKHZvaWQpbGlidXNiX3NldF9hdXRvX2RldGFjaF9rZXJuZWxfZHJpdmVyKGRldiwgMSk7CisrI2lmIExJQlVTQl9BUElfVkVSU0lPTiA+PSAweDAxMDAwMTA2CisrCQlsaWJ1c2Jfc2V0X29wdGlvbihjdHgsIExJQlVTQl9PUFRJT05fTE9HX0xFVkVMLCBMSUJVU0JfTE9HX0xFVkVMX05PTkUpOworKyNlbHNlCisgCQlsaWJ1c2Jfc2V0X2RlYnVnKGN0eCwgTElCVVNCX0xPR19MRVZFTF9OT05FKTsKKy0KKysjZW5kaWYKKyAJCS8qIENsYWltIHRoZSBkZWJ1ZyBpbnRlcmZhY2Ugb24gdGhlIFhEUzExMCAqLworIAkJcmVzdWx0ID0gbGlidXNiX2NsYWltX2ludGVyZmFjZShkZXYsIElOVEVSRkFDRV9ERUJVRyk7CisgCX0gZWxzZSB7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDItV29ya2Fyb3VuZC1uZXctd2FybmluZ3MtZ2VuZXJhdGVkLWJ5LUdDQy03LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZC8wMDAyLVdvcmthcm91bmQtbmV3LXdhcm5pbmdzLWdlbmVyYXRlZC1ieS1HQ0MtNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5OTczNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDItV29ya2Fyb3VuZC1uZXctd2FybmluZ3MtZ2VuZXJhdGVkLWJ5LUdDQy03LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA4ZGFhYThjMjc3OTQ2NTNkMDI4NTRjNTk4MjY2OWE3NjM4NDczMjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMjM6NTI6NDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzVdIFdvcmthcm91bmQgbmV3IHdhcm5pbmdzIGdlbmVyYXRlZCBieSBHQ0MgNwotCi1zcmMvZmxhc2gvbm9yL3htYzR4eHguYzogSW4gZnVuY3Rpb24gJ3htYzR4eHhfZ2V0X2luZm9fY29tbWFuZCc6Ci1zcmMvZmxhc2gvbm9yL3htYzR4eHguYzo5Mzk6NDM6IGVycm9yOiAnJWQnIGRpcmVjdGl2ZSBvdXRwdXQgbWF5IGJlIHRydW5jYXRlZCB3cml0aW5nIGJldHdlZW4gMSBhbmQgMTAgYnl0ZXMgaW50byBhIHJlZ2lvbiBvZiBzaXplIDYgWy1XZXJyb3I9Zm9ybWF0LXRydW5jYXRpb249XQotICAgICBzbnByaW50ZihvdHBfc3RyLCBzaXplb2Yob3RwX3N0ciksICItICVkXG4iLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefgotc3JjL2ZsYXNoL25vci94bWM0eHh4LmM6OTM5OjQwOiBub3RlOiBkaXJlY3RpdmUgYXJndW1lbnQgaW4gdGhlIHJhbmdlIFswLCAyMTQ3NDgzNjQ3XQotICAgICBzbnByaW50ZihvdHBfc3RyLCBzaXplb2Yob3RwX3N0ciksICItICVkXG4iLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotc3JjL2ZsYXNoL25vci94bWM0eHh4LmM6OTM5OjU6IG5vdGU6ICdzbnByaW50Zicgb3V0cHV0IGJldHdlZW4gNSBhbmQgMTQgYnl0ZXMgaW50byBhIGRlc3RpbmF0aW9uIG9mIHNpemUgOAotICAgICBzbnByaW50ZihvdHBfc3RyLCBzaXplb2Yob3RwX3N0ciksICItICVkXG4iLCBpKTsKLSAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZmxhc2gvbm9yL3htYzR4eHguYyB8IDIgKy0KLSBzcmMvdGFyZ2V0L2FybV9hZGlfdjUuYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jIGIvc3JjL2ZsYXNoL25vci94bWM0eHh4LmMKLWluZGV4IDAyZGY0NmEzZi4uZTZjMzk4ZmY5IDEwMDY0NAotLS0tIGEvc3JjL2ZsYXNoL25vci94bWM0eHh4LmMKLSsrKyBiL3NyYy9mbGFzaC9ub3IveG1jNHh4eC5jCi1AQCAtOTMxLDcgKzkzMSw3IEBAIHN0YXRpYyBpbnQgeG1jNHh4eF9nZXRfaW5mb19jb21tYW5kKHN0cnVjdCBmbGFzaF9iYW5rICpiYW5rLCBjaGFyICpidWYsIGludCBidWZfCi0gCi0gCS8qIElmIE9UUCBXcml0ZSBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgKFVzZXIgMiksIGxpc3QgZWFjaAotIAkgKiBzZWN0b3IgdGhhdCBoYXMgaXQgZW5hYmxlZCAqLwotLQljaGFyIG90cF9zdHJbOF07Ci0rCWNoYXIgb3RwX3N0clsxNF07Ci0gCWlmIChvdHBfZW5hYmxlZCkgewotIAkJc3RyY2F0KHByb3Rfc3RyLCAiXG5PVFAgUHJvdGVjdGlvbiBpcyBlbmFibGVkIGZvciBzZWN0b3JzOlxuIik7Ci0gCQlmb3IgKGludCBpID0gMDsgaSA8IGJhbmstPm51bV9zZWN0b3JzOyBpKyspIHsKLWRpZmYgLS1naXQgYS9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYyBiL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCi1pbmRleCBkNDQ0ZGIyYjEuLmQwZDk1MTIxZiAxMDA2NDQKLS0tLSBhL3NyYy90YXJnZXQvYXJtX2FkaV92NS5jCi0rKysgYi9zcmMvdGFyZ2V0L2FybV9hZGlfdjUuYwotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBpbnQgZGFwX3JvbV9kaXNwbGF5KHN0cnVjdCBjb21tYW5kX2NvbnRleHQgKmNtZF9jdHgsCi0gCWludCByZXR2YWw7Ci0gCXVpbnQ2NF90IHBpZDsKLSAJdWludDMyX3QgY2lkOwotLQljaGFyIHRhYnNbN10gPSAiIjsKLSsJY2hhciB0YWJzWzE2XSA9ICIiOwotIAotIAlpZiAoZGVwdGggPiAxNikgewotIAkJY29tbWFuZF9wcmludChjbWRfY3R4LCAiXHRUYWJsZXMgdG9vIGRlZXAiKTsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDMtYXJtdjdhLUFkZC1taXNzaW5nLWJyZWFrLXRvLWZpeC1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2ZiZmM5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwMy1hcm12N2EtQWRkLW1pc3NpbmctYnJlYWstdG8tZml4LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDhlNTA1MWU4M2ZlZGIwNzgxNzA1NjVhMjRkMWY1ZGU2YzJjZTQ0MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNyBKdW4gMjAxNyAwMDowMTo1MSAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvNV0gYXJtdjdhOiBBZGQgbWlzc2luZyBicmVhayB0byBmaXggZmFsbHRocm91Z2ggd2FybmluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy90YXJnZXQvYXJtdjdhLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvYXJtdjdhLmMgYi9zcmMvdGFyZ2V0L2FybXY3YS5jCi1pbmRleCA2MDIxZGVmNGUuLmJhZDgwNmIzZCAxMDA2NDQKLS0tLSBhL3NyYy90YXJnZXQvYXJtdjdhLmMKLSsrKyBiL3NyYy90YXJnZXQvYXJtdjdhLmMKLUBAIC0zNTUsNiArMzU1LDcgQEAgaW50IGFybXY3YV9tbXVfdHJhbnNsYXRlX3ZhX3BhKHN0cnVjdCB0YXJnZXQgKnRhcmdldCwgdWludDMyX3QgdmEsCi0gCQkJCWJyZWFrOwotIAkJCWNhc2UgNzoKLSAJCQkJTE9HX0lORk8oImlubmVyOiBXcml0ZS1CYWNrLCBubyBXcml0ZS1BbGxvY2F0ZSIpOwotKwkJCQlicmVhazsKLSAKLSAJCQlkZWZhdWx0OgotIAkJCQlMT0dfSU5GTygiaW5uZXI6ICUiIFBSSXgzMiAiID8/PyIsIElOTkVSKTsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNC1GaXgtb3ZlcmZsb3ctd2FybmluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNC1GaXgtb3ZlcmZsb3ctd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjNTYyNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDQtRml4LW92ZXJmbG93LXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIGQzY2E1NjM3MGEyYmU3ZTczN2Q0OGJkMTRkNDc0ZDc5MGEwYWI4YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxNyBKdW4gMjAxNyAwMDowNDowMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDQvNV0gRml4IG92ZXJmbG93IHdhcm5pbmcKLQotUmVtb3ZlIGFuIGVtcHR5IHNwYWNlIHdoaWNoIG1ha2VzIGl0IGZpdCBpbnRvIDExIGJ5dGUgc3RyaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3RhcmdldC9uZHMzMl9jbWQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy90YXJnZXQvbmRzMzJfY21kLmMgYi9zcmMvdGFyZ2V0L25kczMyX2NtZC5jCi1pbmRleCBlZGI0ODcyZTQuLjczMzU1MDczYyAxMDA2NDQKLS0tLSBhL3NyYy90YXJnZXQvbmRzMzJfY21kLmMKLSsrKyBiL3NyYy90YXJnZXQvbmRzMzJfY21kLmMKLUBAIC04MjEsNyArODIxLDcgQEAgc3RhdGljIGludCBqaW1fbmRzMzJfYnVsa19yZWFkKEppbV9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIEppbV9PYmogKiBjb25zdCAqYXIKLSAJamltX3dpZGUgaTsKLSAJSmltX1NldFJlc3VsdChpbnRlcnAsIEppbV9OZXdFbXB0eVN0cmluZ09iaihpbnRlcnApKTsKLSAJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLS0JCXNwcmludGYoZGF0YV9zdHIsICIweCUwOCIgUFJJeDMyICIgIiwgZGF0YVtpXSk7Ci0rCQlzcHJpbnRmKGRhdGFfc3RyLCAiMHglMDgiIFBSSXgzMiAiIiwgZGF0YVtpXSk7Ci0gCQlKaW1fQXBwZW5kU3RyaW5ncyhpbnRlcnAsIEppbV9HZXRSZXN1bHQoaW50ZXJwKSwgZGF0YV9zdHIsIE5VTEwpOwotIAl9Ci0gCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvb3Blbm9jZC9vcGVub2NkLzAwMDUtY29tbWFuZC1Nb3ZlLXRoZS1mYWxsLXRocm91Z2gtY29tbWVudC10by1yaWdodC1zY29wZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGY3NWRhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2QvMDAwNS1jb21tYW5kLU1vdmUtdGhlLWZhbGwtdGhyb3VnaC1jb21tZW50LXRvLXJpZ2h0LXNjb3BlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSAyOWRiZjkyZmZkYmRkYTI5NjYyYjQxOTBhMmY4ZWIwOWNhYWQ4YjUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTcgSnVuIDIwMTcgMDA6MDY6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIGNvbW1hbmQ6IE1vdmUgdGhlIGZhbGwgdGhyb3VnaCBjb21tZW50IHRvIHJpZ2h0IHNjb3BlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvaGVscGVyL2NvbW1hbmQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9oZWxwZXIvY29tbWFuZC5jIGIvc3JjL2hlbHBlci9jb21tYW5kLmMKLWluZGV4IDVkZWFlZTg1OS4uMjg3YzE0ODU3IDEwMDY0NAotLS0tIGEvc3JjL2hlbHBlci9jb21tYW5kLmMKLSsrKyBiL3NyYy9oZWxwZXIvY29tbWFuZC5jCi1AQCAtMTQ1Niw4ICsxNDU2LDggQEAgQ09NTUFORF9IRUxQRVIoaGFuZGxlX2NvbW1hbmRfcGFyc2VfYm9vbCwgYm9vbCAqb3V0LCBjb25zdCBjaGFyICpsYWJlbCkKLSAJCQkJTE9HX0VSUk9SKCIlczogYXJndW1lbnQgJyVzJyBpcyBub3QgdmFsaWQiLCBDTURfTkFNRSwgaW4pOwotIAkJCQlyZXR1cm4gRVJST1JfQ09NTUFORF9TWU5UQVhfRVJST1I7Ci0gCQkJfQotLQkJCS8qIGZhbGwgdGhyb3VnaCAqLwotIAkJfQotKwkJLyogZmFsbCB0aHJvdWdoICovCi0gCQljYXNlIDA6Ci0gCQkJTE9HX0lORk8oIiVzIGlzICVzIiwgbGFiZWwsICpvdXQgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKLSAJCQlicmVhazsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vcGVub2NkL29wZW5vY2RfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZF9naXQuYmIKaW5kZXggMWExNWU1My4uMjFhODZkZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29wZW5vY2Qvb3Blbm9jZF9naXQuYmIKQEAgLTksMTcgKzksMTQgQEAKICAgICBnaXQ6Ly9yZXBvLm9yLmN6L3IvZ2l0MmNsLmdpdDtwcm90b2NvbD1odHRwO2Rlc3RzdWZmaXg9dG9vbHMvZ2l0MmNsO25hbWU9Z2l0MmNsIFwKICAgICBnaXQ6Ly9yZXBvLm9yLmN6L3IvamltdGNsLmdpdDtwcm90b2NvbD1odHRwO2Rlc3RzdWZmaXg9Z2l0L2ppbXRjbDtuYW1lPWppbXRjbCBcCiAgICAgZ2l0Oi8vcmVwby5vci5jei9yL2xpYmpheWxpbmsuZ2l0O3Byb3RvY29sPWh0dHA7ZGVzdHN1ZmZpeD1naXQvc3JjL2p0YWcvZHJpdmVycy9saWJqYXlsaW5rO25hbWU9bGliamF5bGluayBcCi0gICAgZmlsZTovLzAwMDEtQWRkLWZhbGx0aHJvdWdoLWNvbW1lbnRzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Xb3JrYXJvdW5kLW5ldy13YXJuaW5ncy1nZW5lcmF0ZWQtYnktR0NDLTcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWFybXY3YS1BZGQtbWlzc2luZy1icmVhay10by1maXgtZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtRml4LW92ZXJmbG93LXdhcm5pbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LWNvbW1hbmQtTW92ZS10aGUtZmFsbC10aHJvdWdoLWNvbW1lbnQtdG8tcmlnaHQtc2NvcGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ1c2ItMS4wLjIyLWRlcHJlY2F0ZWQtbGlidXNiX3NldF9kZWJ1Zy13aXRoLWwucGF0Y2ggXAogIgorCiBTUkNSRVZfRk9STUFUID0gIm9wZW5vY2QiCi1TUkNSRVZfb3Blbm9jZCA9ICIxMDI1YmUzNjNlMmJmNDJmMTYxMzA4MzIyM2EyMzIyY2MzYTliZDRjIgorU1JDUkVWX29wZW5vY2QgPSAiY2RmMWU4MjZlYjIzYzI5ZGUxMDE5Y2U2NDEyNWY2NDRmMDFiMGFmZSIKIFNSQ1JFVl9naXQyY2wgPSAiODM3M2M5Zjc0OTkzZTIxOGEwODgxOWNiY2RiYWIzZjM1NjRiYmViYSIKIFNSQ1JFVl9qaW10Y2wgPSAiYTliZjU5NzVmZDBmODk5NzRkNjg5YTJkOWViZDA4NzNjOGQ2NDc4NyIKLVNSQ1JFVl9saWJqYXlsaW5rID0gIjY5OWI3MDAxZDM0YTc5YzhlNzA2NDUwM2RkZTFiZWRlNzg2ZmQ3ZjAiCitTUkNSRVZfbGliamF5bGluayA9ICI4NjQ1ODQ1YzFhYmViZDAwNGU5OTFiYTlhN2Y4MDhmNGZkMGM2MDhiIgogCiBQViA9ICIwLjEwK2dpdHIke1NSQ1BWfSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4yLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4yLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9pcGMtcnVuXzAuOTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Yzk2NmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8wLjk2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiXAotSVBDOjpSdW4gYWxsb3dzIHlvdSBydW4gYW5kIGludGVyYWN0IHdpdGggY2hpbGQgcHJvY2Vzc2VzIFwKLXVzaW5nIGZpbGVzLCBwaXBlcywgYW5kIHBzZXVkby10dHlzLiBCb3RoIHN5c3RlbSgpLXN0eWxlIGFuZCBzY3JpcHRlZCBcCi11c2FnZXMgYXJlIHN1cHBvcnRlZCBhbmQgbWF5IGJlIG1peGVkLiBMaWtld2lzZSwgZnVuY3Rpb25hbCBhbmQgT08gQVBJIFwKLXN0eWxlcyBhcmUgYm90aCBzdXBwb3J0ZWQgYW5kIG1heSBiZSBtaXhlZC4iCi1IT01FUEFHRSA9ICJodHRwczovL21ldGFjcGFuLm9yZy9yZWxlYXNlL0lQQy1SdW4iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGViZDM3Y2FmNTM3ODFlOGI3MjIzZTZiOTliNjNmNGUiCi1ERVBFTkRTID0gInBlcmwiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90b2Rkci9JUEMtUnVuLmdpdCIKLVNSQ1JFViA9ICI5NjA2NjM2NmFjOGM0MDFkZmY5Yzk3OWQwNGYyNWRjODIxOWZmY2MxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNwYW4KLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLSAgICBjcGFuX2RvX2NvbXBpbGUKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMjAxODA1MjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2lwYy1ydW5fMjAxODA1MjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODEyYWUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvaXBjLXJ1bl8yMDE4MDUyMy4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK0RFU0NSSVBUSU9OID0gIlwKK0lQQzo6UnVuIGFsbG93cyB5b3UgcnVuIGFuZCBpbnRlcmFjdCB3aXRoIGNoaWxkIHByb2Nlc3NlcyBcCit1c2luZyBmaWxlcywgcGlwZXMsIGFuZCBwc2V1ZG8tdHR5cy4gQm90aCBzeXN0ZW0oKS1zdHlsZSBhbmQgc2NyaXB0ZWQgXAordXNhZ2VzIGFyZSBzdXBwb3J0ZWQgYW5kIG1heSBiZSBtaXhlZC4gTGlrZXdpc2UsIGZ1bmN0aW9uYWwgYW5kIE9PIEFQSSBcCitzdHlsZXMgYXJlIGJvdGggc3VwcG9ydGVkIGFuZCBtYXkgYmUgbWl4ZWQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9JUEMtUnVuIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBlYmQzN2NhZjUzNzgxZThiNzIyM2U2Yjk5YjYzZjRlIgorREVQRU5EUyA9ICJwZXJsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdG9kZHIvSVBDLVJ1bi5naXQiCitTUkNSRVYgPSAiMGI0MDk3MDI0OTA3MjllZWI5N2FlNjVmNWI5NGQ5NDllYzA4MzEzNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjcGFuCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgorCitkb19jb21waWxlKCkgeworICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisgICAgY3Bhbl9kb19jb21waWxlCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC5pbmMKaW5kZXggMDY2Yjk3Yy4uYmZkMGRkZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLmluYwpAQCAtNSw4ICs1LDcgQEAKIExJQ0VOU0UgPSAiUEhQLTMuMCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1ERVBFTkRTID0gInpsaWIgYnppcDIgbGlieG1sMiB2aXJ0dWFsL2xpYmljb252IHBocC1uYXRpdmUgbGVtb24tbmF0aXZlIFwKLSAgICAgICAgICAgb3BlbnNzbCIKK0RFUEVORFMgPSAiemxpYiBiemlwMiBsaWJ4bWwyIHZpcnR1YWwvbGliaWNvbnYgcGhwLW5hdGl2ZSBsZW1vbi1uYXRpdmUiCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKIAogUEhQX01BSk9SX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ1BWJywgVHJ1ZSkuc3BsaXQoJy4nKVswXX0iCkBAIC01OSw3ICs1OCw3IEBACiAgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCiAiCiAKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj15ZXMgYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMiCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfZnVuY19kbG9wZW49bm8gYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMiCiAKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vLi4gXApAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICAgICAgICAgICR7Q09NTU9OX0VYVFJBX09FQ09ORn0gXAogIgogCi1QQUNLQUdFQ09ORklHID8/PSAibXlzcWwgc3FsaXRlMyBpbWFwIG9wY2FjaGUgXAorUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIG9wZW5zc2wgXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKICIKIFBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKQEAgLTgwLDcgKzc5LDcgQEAKIAogUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tc3FsaXRlPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtc3FsaXRlMyAtLXdpdGhvdXQtcGRvLXNxbGl0ZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICxzcWxpdGUzIgogUEFDS0FHRUNPTkZJR1twZ3NxbF0gPSAiLS13aXRoLXBnc3FsPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1wZ3NxbCxwb3N0Z3Jlc3FsIgogUEFDS0FHRUNPTkZJR1tzb2FwXSA9ICItLWVuYWJsZS1saWJ4bWwgLS1lbmFibGUtc29hcCwgLS1kaXNhYmxlLXNvYXAsIGxpYnhtbDIiCkBAIC05MSw3ICs5MCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAogICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW29wY2FjaGVdID0gIiwtLWRpc2FibGUtb3BjYWNoZSIKK1BBQ0tBR0VDT05GSUdbb3BjYWNoZV0gPSAiLS1lbmFibGUtb3BjYWNoZSwtLWRpc2FibGUtb3BjYWNoZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKIAogZXhwb3J0IFBIUF9OQVRJVkVfRElSID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSIKIGV4cG9ydCBQSFBfUEVBUl9QSFBfQklOID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9waHAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLVBIUC01LjYtTGliU1NMLTEuMS1jb21wYXRpYmlsaXR5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1QSFAtNS42LUxpYlNTTC0xLjEtY29tcGF0aWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzgzNjViCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1QSFAtNS42LUxpYlNTTC0xLjEtY29tcGF0aWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDEyODUgQEAKK1N1YmplY3Q6IFtQQVRDSF0gUEhQIDUuNiAtIExpYlNTTCAxLjEgY29tcGF0aWJpbGl0eQorCitUaGlzIHBhdGNoIGRvZXMgbm90IHRyeSB0byBiYWNrcG9ydCB0aGUgNy4xIG9wZW5zc2wgbW9kdWxlLCBpdCBpcyB0aGUKK2ltcHJvdmVkIHZlcnNpb24gb2YgdGhlIDUuNiBvcmlnaW5hbCBvcGVuc3NsIG1vZHVsZS4KKworaHR0cHM6Ly9naXRodWIuY29tL29lcmRuai9kZWIuc3VyeS5vcmcvaXNzdWVzLzU2NgoraHR0cDovL3pldHRhc3lzdGVtLmNvbS9QSFAtNS42LjMxLU9wZW5TU0wtMS4xLjAtY29tcGF0aWJpbGl0eS0yMDE3MDgwMS5wYXRjaAorCitVcHN0cmVhbS1TdGF0dXM6IERlbnkgW2h0dHBzOi8vZ2l0aHViLmNvbS9waHAvcGhwLXNyYy9wdWxsLzI2NjddCitSZWFzb246IEFzIFBIUCA1LjYgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IHN1cHBvcnRlZCBvbmx5IHNlY3VyaXR5IGZpeGVzCittYXkgbGFuZCBvbiB0aGlzIGJyYW5jaC4gQXMgdGhpcyBjaGFuZ2UgZG9lcyBub3QgZmFsbCBpbiB0aGlzIGNhdGVnb3J5LAorSSdtIGNsb3NpbmcgdGhpcyBQUi4gKEFsbCBoaWdoZXIgdmVyc2lvbnMgb2YgUEhQIGFscmVhZHkgaGF2ZSBPcGVuU1NMCisxLjEgc3VwcG9ydC4pCisKK0F1dGhvcjogenNhbGFiQGdpdGh1YiBodHRwczovL2dpdGh1Yi5jb20venNhbGFiCisKK09ubHkgcG9ydCBzb3VyY2UgbW9kaWZpY2F0aW9uLCBkbyBub3QgaW5jbHVkZSB0aGUgdGVzdCBjYXNlCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBleHQvb3BlbnNzbC9vcGVuc3NsLmMgfCA2ODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBleHQvb3BlbnNzbC94cF9zc2wuYyAgfCAgMTggKy0KKyBleHQvcGhhci91dGlsLmMgICAgICAgfCAgMTMgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDUyNyBpbnNlcnRpb25zKCspLCAxODcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHQvb3BlbnNzbC9vcGVuc3NsLmMgYi9leHQvb3BlbnNzbC9vcGVuc3NsLmMKK2luZGV4IGE3OGE4ZmIuLmI1MzExNGMgMTAwNjQ0CistLS0gYS9leHQvb3BlbnNzbC9vcGVuc3NsLmMKKysrKyBiL2V4dC9vcGVuc3NsL29wZW5zc2wuYworQEAgLTQyLDYgKzQyLDEyIEBACisgCisgLyogT3BlblNTTCBpbmNsdWRlcyAqLworICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBMCisrI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kc2EuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9kaC5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxvcGVuc3NsL3g1MDkuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KK0BAIC01MzEsNiArNTM3LDEzMyBAQCB6ZW5kX21vZHVsZV9lbnRyeSBvcGVuc3NsX21vZHVsZV9lbnRyeSA9IHsKKyBaRU5EX0dFVF9NT0RVTEUob3BlbnNzbCkKKyAjZW5kaWYKKyAKKysvKiB7e3sgT3BlblNTTCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBhbmQgbWFjcm9zICovCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMTAwMDAwTCB8fCBkZWZpbmVkIChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKysjZGVmaW5lIEVWUF9QS0VZX2dldDBfUlNBKF9wa2V5KSBfcGtleS0+cGtleS5yc2EKKysjZGVmaW5lIEVWUF9QS0VZX2dldDBfREgoX3BrZXkpIF9wa2V5LT5wa2V5LmRoCisrI2RlZmluZSBFVlBfUEtFWV9nZXQwX0RTQShfcGtleSkgX3BrZXktPnBrZXkuZHNhCisrI2RlZmluZSBFVlBfUEtFWV9nZXQwX0VDX0tFWShfcGtleSkgX3BrZXktPnBrZXkuZWMKKysKKytzdGF0aWMgaW50IFJTQV9zZXQwX2tleShSU0EgKnIsIEJJR05VTSAqbiwgQklHTlVNICplLCBCSUdOVU0gKmQpCisreworKwlyLT5uID0gbjsKKysJci0+ZSA9IGU7CisrCXItPmQgPSBkOworKworKwlyZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBSU0Ffc2V0MF9mYWN0b3JzKFJTQSAqciwgQklHTlVNICpwLCBCSUdOVU0gKnEpCisreworKwlyLT5wID0gcDsKKysJci0+cSA9IHE7CisrCisrCXJldHVybiAxOworK30KKysKKytzdGF0aWMgaW50IFJTQV9zZXQwX2NydF9wYXJhbXMoUlNBICpyLCBCSUdOVU0gKmRtcDEsIEJJR05VTSAqZG1xMSwgQklHTlVNICppcW1wKQorK3sKKysJci0+ZG1wMSA9IGRtcDE7CisrCXItPmRtcTEgPSBkbXExOworKwlyLT5pcW1wID0gaXFtcDsKKysKKysJcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyB2b2lkIFJTQV9nZXQwX2tleShjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKm4sIGNvbnN0IEJJR05VTSAqKmUsIGNvbnN0IEJJR05VTSAqKmQpCisreworKwkqbiA9IHItPm47CisrCSplID0gci0+ZTsKKysJKmQgPSByLT5kOworK30KKysKKytzdGF0aWMgdm9pZCBSU0FfZ2V0MF9mYWN0b3JzKGNvbnN0IFJTQSAqciwgY29uc3QgQklHTlVNICoqcCwgY29uc3QgQklHTlVNICoqcSkKKyt7CisrCSpwID0gci0+cDsKKysJKnEgPSByLT5xOworK30KKysKKytzdGF0aWMgdm9pZCBSU0FfZ2V0MF9jcnRfcGFyYW1zKGNvbnN0IFJTQSAqciwgY29uc3QgQklHTlVNICoqZG1wMSwgY29uc3QgQklHTlVNICoqZG1xMSwgY29uc3QgQklHTlVNICoqaXFtcCkKKyt7CisrCSpkbXAxID0gci0+ZG1wMTsKKysJKmRtcTEgPSByLT5kbXExOworKwkqaXFtcCA9IHItPmlxbXA7CisrfQorKworK3N0YXRpYyB2b2lkIERIX2dldDBfcHFnKGNvbnN0IERIICpkaCwgY29uc3QgQklHTlVNICoqcCwgY29uc3QgQklHTlVNICoqcSwgY29uc3QgQklHTlVNICoqZykKKyt7CisrCSpwID0gZGgtPnA7CisrCSpxID0gZGgtPnE7CisrCSpnID0gZGgtPmc7CisrfQorKworK3N0YXRpYyBpbnQgREhfc2V0MF9wcWcoREggKmRoLCBCSUdOVU0gKnAsIEJJR05VTSAqcSwgQklHTlVNICpnKQorK3sKKysJZGgtPnAgPSBwOworKwlkaC0+cSA9IHE7CisrCWRoLT5nID0gZzsKKysKKysJcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyB2b2lkIERIX2dldDBfa2V5KGNvbnN0IERIICpkaCwgY29uc3QgQklHTlVNICoqcHViX2tleSwgY29uc3QgQklHTlVNICoqcHJpdl9rZXkpCisreworKwkqcHViX2tleSA9IGRoLT5wdWJfa2V5OworKwkqcHJpdl9rZXkgPSBkaC0+cHJpdl9rZXk7CisrfQorKworK3N0YXRpYyBpbnQgREhfc2V0MF9rZXkoREggKmRoLCBCSUdOVU0gKnB1Yl9rZXksIEJJR05VTSAqcHJpdl9rZXkpCisreworKwlkaC0+cHViX2tleSA9IHB1Yl9rZXk7CisrCWRoLT5wcml2X2tleSA9IHByaXZfa2V5OworKworKwlyZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIHZvaWQgRFNBX2dldDBfcHFnKGNvbnN0IERTQSAqZCwgY29uc3QgQklHTlVNICoqcCwgY29uc3QgQklHTlVNICoqcSwgY29uc3QgQklHTlVNICoqZykKKyt7CisrCSpwID0gZC0+cDsKKysJKnEgPSBkLT5xOworKwkqZyA9IGQtPmc7CisrfQorKworK2ludCBEU0Ffc2V0MF9wcWcoRFNBICpkLCBCSUdOVU0gKnAsIEJJR05VTSAqcSwgQklHTlVNICpnKQorK3sKKysJZC0+cCA9IHA7CisrCWQtPnEgPSBxOworKwlkLT5nID0gZzsKKysKKysJcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyB2b2lkIERTQV9nZXQwX2tleShjb25zdCBEU0EgKmQsIGNvbnN0IEJJR05VTSAqKnB1Yl9rZXksIGNvbnN0IEJJR05VTSAqKnByaXZfa2V5KQorK3sKKysJKnB1Yl9rZXkgPSBkLT5wdWJfa2V5OworKwkqcHJpdl9rZXkgPSBkLT5wcml2X2tleTsKKyt9CisrCisraW50IERTQV9zZXQwX2tleShEU0EgKmQsIEJJR05VTSAqcHViX2tleSwgQklHTlVNICpwcml2X2tleSkKKyt7CisrCWQtPnB1Yl9rZXkgPSBwdWJfa2V5OworKwlkLT5wcml2X2tleSA9IHByaXZfa2V5OworKworKwlyZXR1cm4gMTsKKyt9CisrCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMDAyMDAwTCB8fCBkZWZpbmVkIChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKysjZGVmaW5lIEVWUF9QS0VZX2lkKF9wa2V5KSBfcGtleS0+dHlwZQorKyNkZWZpbmUgRVZQX1BLRVlfYmFzZV9pZChfa2V5KSBFVlBfUEtFWV90eXBlKF9rZXktPnR5cGUpCisrCisrc3RhdGljIGludCBYNTA5X2dldF9zaWduYXR1cmVfbmlkKGNvbnN0IFg1MDkgKngpCisreworKwlyZXR1cm4gT0JKX29iajJuaWQoeC0+c2lnX2FsZy0+YWxnb3JpdGhtKTsKKyt9CisrCisrI2VuZGlmCisrCisrI2VuZGlmCisrLyogfX19ICovCisrCisgc3RhdGljIGludCBsZV9rZXk7Cisgc3RhdGljIGludCBsZV94NTA5OworIHN0YXRpYyBpbnQgbGVfY3NyOworQEAgLTgyNSw3ICs5NTgsNyBAQCBzdGF0aWMgaW50IGFkZF9vaWRfc2VjdGlvbihzdHJ1Y3QgcGhwX3g1MDlfcmVxdWVzdCAqIHJlcSBUU1JNTFNfREMpIC8qIHt7eyAqLworIAl9CisgCWZvciAoaSA9IDA7IGkgPCBza19DT05GX1ZBTFVFX251bShza3RtcCk7IGkrKykgeworIAkJY25mID0gc2tfQ09ORl9WQUxVRV92YWx1ZShza3RtcCwgaSk7CistCQlpZiAoT0JKX2NyZWF0ZShjbmYtPnZhbHVlLCBjbmYtPm5hbWUsIGNuZi0+bmFtZSkgPT0gTklEX3VuZGVmKSB7CisrCQlpZiAoT0JKX3NuMm5pZChjbmYtPm5hbWUpID09IE5JRF91bmRlZiAmJiBPQkpfbG4ybmlkKGNuZi0+bmFtZSkgPT0gTklEX3VuZGVmICYmIE9CSl9jcmVhdGUoY25mLT52YWx1ZSwgY25mLT5uYW1lLCBjbmYtPm5hbWUpID09IE5JRF91bmRlZikgeworIAkJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywgInByb2JsZW0gY3JlYXRpbmcgb2JqZWN0ICVzPSVzIiwgY25mLT5uYW1lLCBjbmYtPnZhbHVlKTsKKyAJCQlyZXR1cm4gRkFJTFVSRTsKKyAJCX0KK0BAIC05NjcsNyArMTEwMCw3IEBAIHN0YXRpYyB2b2lkIHBocF9vcGVuc3NsX2Rpc3Bvc2VfY29uZmlnKHN0cnVjdCBwaHBfeDUwOV9yZXF1ZXN0ICogcmVxIFRTUk1MU19EQykKKyB9CisgLyogfX19ICovCisgCistI2lmZGVmIFBIUF9XSU4zMgorKyNpZiBkZWZpbmVkKFBIUF9XSU4zMikgfHwgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpKQorICNkZWZpbmUgUEhQX09QRU5TU0xfUkFORF9BRERfVElNRSgpICgodm9pZCkgMCkKKyAjZWxzZQorICNkZWZpbmUgUEhQX09QRU5TU0xfUkFORF9BRERfVElNRSgpIHBocF9vcGVuc3NsX3JhbmRfYWRkX3RpbWV2YWwoKQorQEAgLTEwNTMsOSArMTE4NiwxMSBAQCBzdGF0aWMgRVZQX01EICogcGhwX29wZW5zc2xfZ2V0X2V2cF9tZF9mcm9tX2FsZ28obG9uZyBhbGdvKSB7IC8qIHt7eyAqLworIAkJCW1kdHlwZSA9IChFVlBfTUQgKikgRVZQX21kMigpOworIAkJCWJyZWFrOworICNlbmRpZgorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwgfHwgZGVmaW5lZCAoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisgCQljYXNlIE9QRU5TU0xfQUxHT19EU1MxOgorIAkJCW1kdHlwZSA9IChFVlBfTUQgKikgRVZQX2RzczEoKTsKKyAJCQlicmVhazsKKysjZW5kaWYKKyAjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDAwOTA3MDhmTAorIAkJY2FzZSBPUEVOU1NMX0FMR09fU0hBMjI0OgorIAkJCW1kdHlwZSA9IChFVlBfTUQgKikgRVZQX3NoYTIyNCgpOworQEAgLTExNDYsNiArMTI4MSwxMiBAQCBQSFBfTUlOSVRfRlVOQ1RJT04ob3BlbnNzbCkKKyAJT3BlblNTTF9hZGRfYWxsX2RpZ2VzdHMoKTsKKyAJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXMoKTsKKyAKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19BRVMpICYmIGRlZmluZWQoRVZQX0NJUEhfQ0NNX01PREUpICYmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMDAyMDAwMAorKwlFVlBfYWRkX2NpcGhlcihFVlBfYWVzXzEyOF9jY20oKSk7CisrCUVWUF9hZGRfY2lwaGVyKEVWUF9hZXNfMTkyX2NjbSgpKTsKKysJRVZQX2FkZF9jaXBoZXIoRVZQX2Flc18yNTZfY2NtKCkpOworKyNlbmRpZgorKworIAlTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7CisgCisgCS8qIHJlZ2lzdGVyIGEgcmVzb3VyY2UgaWQgbnVtYmVyIHdpdGggT3BlblNTTCBzbyB0aGF0IHdlIGNhbiBtYXAgU1NMIC0+IHN0cmVhbSBzdHJ1Y3R1cmVzIGluCitAQCAtMTE3Myw3ICsxMzE0LDkgQEAgUEhQX01JTklUX0ZVTkNUSU9OKG9wZW5zc2wpCisgI2lmZGVmIEhBVkVfT1BFTlNTTF9NRDJfSAorIAlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJPUEVOU1NMX0FMR09fTUQyIiwgT1BFTlNTTF9BTEdPX01EMiwgQ09OU1RfQ1N8Q09OU1RfUEVSU0lTVEVOVCk7CisgI2VuZGlmCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMTAwMDAwTCB8fCBkZWZpbmVkIChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyAJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiT1BFTlNTTF9BTEdPX0RTUzEiLCBPUEVOU1NMX0FMR09fRFNTMSwgQ09OU1RfQ1N8Q09OU1RfUEVSU0lTVEVOVCk7CisrI2VuZGlmCisgI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNzA4ZkwKKyAJUkVHSVNURVJfTE9OR19DT05TVEFOVCgiT1BFTlNTTF9BTEdPX1NIQTIyNCIsIE9QRU5TU0xfQUxHT19TSEEyMjQsIENPTlNUX0NTfENPTlNUX1BFUlNJU1RFTlQpOworIAlSRUdJU1RFUl9MT05HX0NPTlNUQU5UKCJPUEVOU1NMX0FMR09fU0hBMjU2IiwgT1BFTlNTTF9BTEdPX1NIQTI1NiwgQ09OU1RfQ1N8Q09OU1RfUEVSU0lTVEVOVCk7CitAQCAtMTI1MSw3ICsxMzk0LDkgQEAgUEhQX01JTklUX0ZVTkNUSU9OKG9wZW5zc2wpCisgCX0KKyAKKyAJcGhwX3N0cmVhbV94cG9ydF9yZWdpc3Rlcigic3NsIiwgcGhwX29wZW5zc2xfc3NsX3NvY2tldF9mYWN0b3J5IFRTUk1MU19DQyk7CisrI2lmbmRlZiBPUEVOU1NMX05PX1NTTDMKKyAJcGhwX3N0cmVhbV94cG9ydF9yZWdpc3Rlcigic3NsdjMiLCBwaHBfb3BlbnNzbF9zc2xfc29ja2V0X2ZhY3RvcnkgVFNSTUxTX0NDKTsKKysjZW5kaWYKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgorIAlwaHBfc3RyZWFtX3hwb3J0X3JlZ2lzdGVyKCJzc2x2MiIsIHBocF9vcGVuc3NsX3NzbF9zb2NrZXRfZmFjdG9yeSBUU1JNTFNfQ0MpOworICNlbmRpZgorQEAgLTEzMDgsNyArMTQ1Myw5IEBAIFBIUF9NU0hVVERPV05fRlVOQ1RJT04ob3BlbnNzbCkKKyAjaWZuZGVmIE9QRU5TU0xfTk9fU1NMMgorIAlwaHBfc3RyZWFtX3hwb3J0X3VucmVnaXN0ZXIoInNzbHYyIiBUU1JNTFNfQ0MpOworICNlbmRpZgorKyNpZm5kZWYgT1BFTlNTTF9OT19TU0wzCisgCXBocF9zdHJlYW1feHBvcnRfdW5yZWdpc3Rlcigic3NsdjMiIFRTUk1MU19DQyk7CisrI2VuZGlmCisgCXBocF9zdHJlYW1feHBvcnRfdW5yZWdpc3RlcigidGxzIiBUU1JNTFNfQ0MpOworIAlwaHBfc3RyZWFtX3hwb3J0X3VucmVnaXN0ZXIoInRsc3YxLjAiIFRTUk1MU19DQyk7CisgI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMTAwMUwKK0BAIC0xODkzLDYgKzIwNDAsNyBAQCBzdGF0aWMgaW50IG9wZW5zc2xfeDUwOXYzX3N1YmplY3RBbHROYW1lKEJJTyAqYmlvLCBYNTA5X0VYVEVOU0lPTiAqZXh0ZW5zaW9uKQorIHsKKyAJR0VORVJBTF9OQU1FUyAqbmFtZXM7CisgCWNvbnN0IFg1MDlWM19FWFRfTUVUSE9EICptZXRob2QgPSBOVUxMOworKwlBU04xX09DVEVUX1NUUklORyAqZXh0ZW5zaW9uX2RhdGE7CisgCWxvbmcgaSwgbGVuZ3RoLCBudW07CisgCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CisgCitAQCAtMTkwMSw4ICsyMDQ5LDkgQEAgc3RhdGljIGludCBvcGVuc3NsX3g1MDl2M19zdWJqZWN0QWx0TmFtZShCSU8gKmJpbywgWDUwOV9FWFRFTlNJT04gKmV4dGVuc2lvbikKKyAJCXJldHVybiAtMTsKKyAJfQorIAorLQlwID0gZXh0ZW5zaW9uLT52YWx1ZS0+ZGF0YTsKKy0JbGVuZ3RoID0gZXh0ZW5zaW9uLT52YWx1ZS0+bGVuZ3RoOworKwlleHRlbnNpb25fZGF0YSA9IFg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dGVuc2lvbik7CisrCXAgPSBleHRlbnNpb25fZGF0YS0+ZGF0YTsKKysJbGVuZ3RoID0gZXh0ZW5zaW9uX2RhdGEtPmxlbmd0aDsKKyAJaWYgKG1ldGhvZC0+aXQpIHsKKyAJCW5hbWVzID0gKEdFTkVSQUxfTkFNRVMqKShBU04xX2l0ZW1fZDJpKE5VTEwsICZwLCBsZW5ndGgsCisgCQkJCQkJICAgICAgIEFTTjFfSVRFTV9wdHIobWV0aG9kLT5pdCkpKTsKK0BAIC0xOTY1LDYgKzIxMTQsOCBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF94NTA5X3BhcnNlKQorIAljaGFyICogdG1wc3RyOworIAl6dmFsICogc3ViaXRlbTsKKyAJWDUwOV9FWFRFTlNJT04gKmV4dGVuc2lvbjsKKysJWDUwOV9OQU1FICpzdWJqZWN0X25hbWU7CisrCWNoYXIgKmNlcnRfbmFtZTsKKyAJY2hhciAqZXh0bmFtZTsKKyAJQklPICAqYmlvX291dDsKKyAJQlVGX01FTSAqYmlvX2J1ZjsKK0BAIC0xOTc5LDEwICsyMTMwLDEwIEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3g1MDlfcGFyc2UpCisgCX0KKyAJYXJyYXlfaW5pdChyZXR1cm5fdmFsdWUpOworIAorLQlpZiAoY2VydC0+bmFtZSkgeworLQkJYWRkX2Fzc29jX3N0cmluZyhyZXR1cm5fdmFsdWUsICJuYW1lIiwgY2VydC0+bmFtZSwgMSk7CistCX0KKy0vKglhZGRfYXNzb2NfYm9vbChyZXR1cm5fdmFsdWUsICJ2YWxpZCIsIGNlcnQtPnZhbGlkKTsgKi8KKysJc3ViamVjdF9uYW1lID0gWDUwOV9nZXRfc3ViamVjdF9uYW1lKGNlcnQpOworKwljZXJ0X25hbWUgPSBYNTA5X05BTUVfb25lbGluZShzdWJqZWN0X25hbWUsIE5VTEwsIDApOworKwlhZGRfYXNzb2Nfc3RyaW5nKHJldHVybl92YWx1ZSwgIm5hbWUiLCBjZXJ0X25hbWUsIDEpOworKwlPUEVOU1NMX2ZyZWUoY2VydF9uYW1lKTsKKyAKKyAJYWRkX2Fzc29jX25hbWVfZW50cnkocmV0dXJuX3ZhbHVlLCAic3ViamVjdCIsIAkJWDUwOV9nZXRfc3ViamVjdF9uYW1lKGNlcnQpLCB1c2VzaG9ydG5hbWVzIFRTUk1MU19DQyk7CisgCS8qIGhhc2ggYXMgdXNlZCBpbiBDQSBkaXJlY3RvcmllcyB0byBsb29rdXAgY2VydCBieSBzdWJqZWN0IG5hbWUgKi8KK0BAIC0yMDA4LDcgKzIxNTksNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF94NTA5X3BhcnNlKQorIAkJYWRkX2Fzc29jX3N0cmluZyhyZXR1cm5fdmFsdWUsICJhbGlhcyIsIHRtcHN0ciwgMSk7CisgCX0KKyAKKy0Jc2lnX25pZCA9IE9CSl9vYmoybmlkKChjZXJ0KS0+c2lnX2FsZy0+YWxnb3JpdGhtKTsKKysJc2lnX25pZCA9IFg1MDlfZ2V0X3NpZ25hdHVyZV9uaWQoY2VydCk7CisgCWFkZF9hc3NvY19zdHJpbmcocmV0dXJuX3ZhbHVlLCAic2lnbmF0dXJlVHlwZVNOIiwgKGNoYXIqKU9CSl9uaWQyc24oc2lnX25pZCksIDEpOworIAlhZGRfYXNzb2Nfc3RyaW5nKHJldHVybl92YWx1ZSwgInNpZ25hdHVyZVR5cGVMTiIsIChjaGFyKilPQkpfbmlkMmxuKHNpZ19uaWQpLCAxKTsKKyAJYWRkX2Fzc29jX2xvbmcocmV0dXJuX3ZhbHVlLCAic2lnbmF0dXJlVHlwZU5JRCIsIHNpZ19uaWQpOworQEAgLTMyMTcsNyArMzM2OCwyMSBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9jc3JfZ2V0X3B1YmxpY19rZXkpCisgCQlSRVRVUk5fRkFMU0U7CisgCX0KKyAKKy0JdHB1YmtleT1YNTA5X1JFUV9nZXRfcHVia2V5KGNzcik7CisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisrCS8qIER1ZSB0byBjaGFuZ2VzIGluIE9wZW5TU0wgMS4xIHJlbGF0ZWQgdG8gbG9ja2luZyB3aGVuIGRlY29kaW5nIENTUiwKKysJICogdGhlIHB1YiBrZXkgaXMgbm90IGNoYW5nZWQgYWZ0ZXIgYXNzaWduaW5nLiBJdCBtZWFucyBpZiB3ZSBwYXNzCisrCSAqIGEgcHJpdmF0ZSBrZXksIGl0IHdpbGwgYmUgcmV0dXJuZWQgaW5jbHVkaW5nIHRoZSBwcml2YXRlIHBhcnQuCisrCSAqIElmIHdlIGR1cGxpY2F0ZSBpdCwgdGhlbiB3ZSBnZXQganVzdCB0aGUgcHVibGljIHBhcnQgd2hpY2ggaXMKKysJICogdGhlIHNhbWUgYmVoYXZpb3IgYXMgZm9yIE9wZW5TU0wgMS4wICovCisrCWNzciA9IFg1MDlfUkVRX2R1cChjc3IpOworKyNlbmRpZgorKwkvKiBSZXRyaWV2ZSB0aGUgcHVibGljIGtleSBmcm9tIHRoZSBDU1IgKi8KKysJdHB1YmtleSA9IFg1MDlfUkVRX2dldF9wdWJrZXkoY3NyKTsKKysKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKysJLyogV2UgbmVlZCB0byBmcmVlIHRoZSBDU1IgYXMgaXQgd2FzIGR1cGxpY2F0ZWQgKi8KKysJWDUwOV9SRVFfZnJlZShjc3IpOworKyNlbmRpZgorIAlSRVRWQUxfUkVTT1VSQ0UoemVuZF9saXN0X2luc2VydCh0cHVia2V5LCBsZV9rZXkgVFNSTUxTX0NDKSk7CisgCXJldHVybjsKKyB9CitAQCAtMzQ4MiwxMyArMzY0NywyMCBAQCBzdGF0aWMgaW50IHBocF9vcGVuc3NsX2lzX3ByaXZhdGVfa2V5KEVWUF9QS0VZKiBwa2V5IFRTUk1MU19EQykKKyB7CisgCWFzc2VydChwa2V5ICE9IE5VTEwpOworIAorLQlzd2l0Y2ggKHBrZXktPnR5cGUpIHsKKysJc3dpdGNoIChFVlBfUEtFWV9pZChwa2V5KSkgeworICNpZm5kZWYgTk9fUlNBCisgCQljYXNlIEVWUF9QS0VZX1JTQToKKyAJCWNhc2UgRVZQX1BLRVlfUlNBMjoKKy0JCQlhc3NlcnQocGtleS0+cGtleS5yc2EgIT0gTlVMTCk7CistCQkJaWYgKHBrZXktPnBrZXkucnNhICE9IE5VTEwgJiYgKE5VTEwgPT0gcGtleS0+cGtleS5yc2EtPnAgfHwgTlVMTCA9PSBwa2V5LT5wa2V5LnJzYS0+cSkpIHsKKy0JCQkJcmV0dXJuIDA7CisrCQkJeworKwkJCQlSU0EgKnJzYSA9IEVWUF9QS0VZX2dldDBfUlNBKHBrZXkpOworKwkJCQlpZiAocnNhICE9IE5VTEwpIHsKKysJCQkJCWNvbnN0IEJJR05VTSAqcCwgKnE7CisrCisrCQkJCQlSU0FfZ2V0MF9mYWN0b3JzKHJzYSwgJnAsICZxKTsKKysJCQkJCSBpZiAocCA9PSBOVUxMIHx8IHEgPT0gTlVMTCkgeworKwkJCQkJCXJldHVybiAwOworKwkJCQkJIH0KKysJCQkJfQorIAkJCX0KKyAJCQlicmVhazsKKyAjZW5kaWYKK0BAIC0zNDk4LDI4ICszNjcwLDUxIEBAIHN0YXRpYyBpbnQgcGhwX29wZW5zc2xfaXNfcHJpdmF0ZV9rZXkoRVZQX1BLRVkqIHBrZXkgVFNSTUxTX0RDKQorIAkJY2FzZSBFVlBfUEtFWV9EU0EyOgorIAkJY2FzZSBFVlBfUEtFWV9EU0EzOgorIAkJY2FzZSBFVlBfUEtFWV9EU0E0OgorLQkJCWFzc2VydChwa2V5LT5wa2V5LmRzYSAhPSBOVUxMKTsKKy0KKy0JCQlpZiAoTlVMTCA9PSBwa2V5LT5wa2V5LmRzYS0+cCB8fCBOVUxMID09IHBrZXktPnBrZXkuZHNhLT5xIHx8IE5VTEwgPT0gcGtleS0+cGtleS5kc2EtPnByaXZfa2V5KXsgCistCQkJCXJldHVybiAwOworKwkJCXsKKysJCQkJRFNBICpkc2EgPSBFVlBfUEtFWV9nZXQwX0RTQShwa2V5KTsKKysJCQkJaWYgKGRzYSAhPSBOVUxMKSB7CisrCQkJCQljb25zdCBCSUdOVU0gKnAsICpxLCAqZywgKnB1Yl9rZXksICpwcml2X2tleTsKKysKKysJCQkJCURTQV9nZXQwX3BxZyhkc2EsICZwLCAmcSwgJmcpOworKwkJCQkJaWYgKHAgPT0gTlVMTCB8fCBxID09IE5VTEwpIHsKKysJCQkJCQlyZXR1cm4gMDsKKysJCQkJCX0KKysgCisrCQkJCQlEU0FfZ2V0MF9rZXkoZHNhLCAmcHViX2tleSwgJnByaXZfa2V5KTsKKysJCQkJCWlmIChwcml2X2tleSA9PSBOVUxMKSB7CisrCQkJCQkJcmV0dXJuIDA7CisrCQkJCQl9CisrCQkJCX0KKyAJCQl9CisgCQkJYnJlYWs7CisgI2VuZGlmCisgI2lmbmRlZiBOT19ESAorIAkJY2FzZSBFVlBfUEtFWV9ESDoKKy0JCQlhc3NlcnQocGtleS0+cGtleS5kaCAhPSBOVUxMKTsKKy0KKy0JCQlpZiAoTlVMTCA9PSBwa2V5LT5wa2V5LmRoLT5wIHx8IE5VTEwgPT0gcGtleS0+cGtleS5kaC0+cHJpdl9rZXkpIHsKKy0JCQkJcmV0dXJuIDA7CisrCQkJeworKwkJCQlESCAqZGggPSBFVlBfUEtFWV9nZXQwX0RIKHBrZXkpOworKwkJCQlpZiAoZGggIT0gTlVMTCkgeworKwkJCQkJY29uc3QgQklHTlVNICpwLCAqcSwgKmcsICpwdWJfa2V5LCAqcHJpdl9rZXk7CisrCisrCQkJCQlESF9nZXQwX3BxZyhkaCwgJnAsICZxLCAmZyk7CisrCQkJCQlpZiAocCA9PSBOVUxMKSB7CisrCQkJCQkJcmV0dXJuIDA7CisrCQkJCQl9CisrIAorKwkJCQkJREhfZ2V0MF9rZXkoZGgsICZwdWJfa2V5LCAmcHJpdl9rZXkpOworKwkJCQkJaWYgKHByaXZfa2V5ID09IE5VTEwpIHsKKysJCQkJCQlyZXR1cm4gMDsKKysJCQkJCX0KKysJCQkJfQorIAkJCX0KKyAJCQlicmVhazsKKyAjZW5kaWYKKyAjaWZkZWYgSEFWRV9FVlBfUEtFWV9FQworIAkJY2FzZSBFVlBfUEtFWV9FQzoKKy0JCQlhc3NlcnQocGtleS0+cGtleS5lYyAhPSBOVUxMKTsKKy0KKy0JCQlpZiAoIE5VTEwgPT0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkocGtleS0+cGtleS5lYykpIHsKKy0JCQkJcmV0dXJuIDA7CisrCQkJeworKwkJCQlFQ19LRVkgKmVjID0gRVZQX1BLRVlfZ2V0MF9FQ19LRVkocGtleSk7CisrCQkJCWlmIChlYyAhPSBOVUxMICYmIE5VTEwgPT0gRUNfS0VZX2dldDBfcHJpdmF0ZV9rZXkoZWMpKSB7CisrCQkJCQlyZXR1cm4gMDsKKysJCQkJfQorIAkJCX0KKyAJCQlicmVhazsKKyAjZW5kaWYKK0BAIC0zNTMxLDM0ICszNzI2LDgwIEBAIHN0YXRpYyBpbnQgcGhwX29wZW5zc2xfaXNfcHJpdmF0ZV9rZXkoRVZQX1BLRVkqIHBrZXkgVFNSTUxTX0RDKQorIH0KKyAvKiB9fX0gKi8KKyAKKy0jZGVmaW5lIE9QRU5TU0xfUEtFWV9HRVRfQk4oX3R5cGUsIF9uYW1lKSBkbyB7CQkJCQkJCVwKKy0JCWlmIChwa2V5LT5wa2V5Ll90eXBlLT5fbmFtZSAhPSBOVUxMKSB7CQkJCQkJCVwKKy0JCQlpbnQgbGVuID0gQk5fbnVtX2J5dGVzKHBrZXktPnBrZXkuX3R5cGUtPl9uYW1lKTsJCQlcCistCQkJY2hhciAqc3RyID0gZW1hbGxvYyhsZW4gKyAxKTsJCQkJCQkJCVwKKy0JCQlCTl9ibjJiaW4ocGtleS0+cGtleS5fdHlwZS0+X25hbWUsICh1bnNpZ25lZCBjaGFyKilzdHIpOwlcCistCQkJc3RyW2xlbl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJXAorLQkJCWFkZF9hc3NvY19zdHJpbmdsKF90eXBlLCAjX25hbWUsIHN0ciwgbGVuLCAwKTsJCQkJXAorLQkJfQkJCQkJCQkJCQkJCQkJCQlcCistCX0gd2hpbGUgKDApCistCistI2RlZmluZSBPUEVOU1NMX1BLRVlfU0VUX0JOKF9odCwgX3R5cGUsIF9uYW1lKSBkbyB7CQkJCQkJXAorLQkJenZhbCAqKmJuOwkJCQkJCQkJCQkJCQkJXAorLQkJaWYgKHplbmRfaGFzaF9maW5kKF9odCwgI19uYW1lLCBzaXplb2YoI19uYW1lKSwJKHZvaWQqKikmYm4pID09IFNVQ0NFU1MgJiYgXAorLQkJCQlaX1RZUEVfUFAoYm4pID09IElTX1NUUklORykgewkJCQkJCQlcCistCQkJX3R5cGUtPl9uYW1lID0gQk5fYmluMmJuKAkJCQkJCQkJCVwKKy0JCQkJKHVuc2lnbmVkIGNoYXIqKVpfU1RSVkFMX1BQKGJuKSwJCQkJCQlcCistCSAJCQlaX1NUUkxFTl9QUChibiksIE5VTEwpOwkJCQkJCQkJCVwKKy0JICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrI2RlZmluZSBPUEVOU1NMX0dFVF9CTihfYXJyYXksIF9ibiwgX25hbWUpIGRvIHsgXAorKwkJaWYgKF9ibiAhPSBOVUxMKSB7IFwKKysJCQlpbnQgbGVuID0gQk5fbnVtX2J5dGVzKF9ibik7IFwKKysJCQljaGFyICpzdHIgPSBlbWFsbG9jKGxlbiArIDEpOyBcCisrCQkJQk5fYm4yYmluKF9ibiwgKHVuc2lnbmVkIGNoYXIqKXN0cik7IFwKKysJCQlzdHJbbGVuXSA9IDA7IFwKKysJCQlhZGRfYXNzb2Nfc3RyaW5nbChfYXJyYXksICNfbmFtZSwgc3RyLCBsZW4sIDApOyBcCisrCQl9IFwKKyAJfSB3aGlsZSAoMCk7CisgCisrI2RlZmluZSBPUEVOU1NMX1BLRVlfR0VUX0JOKF90eXBlLCBfbmFtZSkgT1BFTlNTTF9HRVRfQk4oX3R5cGUsIF9uYW1lLCBfbmFtZSkKKysKKysjZGVmaW5lIE9QRU5TU0xfUEtFWV9TRVRfQk4oX2RhdGEsIF9uYW1lKSBkbyB7IFwKKysJCXp2YWwgKipibjsgXAorKwkJaWYgKHplbmRfaGFzaF9maW5kKFpfQVJSVkFMX1AoX2RhdGEpLCAjX25hbWUsIHNpemVvZigjX25hbWUpLCh2b2lkKiopJmJuKSA9PSBTVUNDRVNTICYmIFwKKysJCQkJWl9UWVBFX1BQKGJuKSA9PSBJU19TVFJJTkcpIHsgXAorKwkJCV9uYW1lID0gQk5fYmluMmJuKCBcCisrCQkJCSh1bnNpZ25lZCBjaGFyKilaX1NUUlZBTF9QUChibiksIFwKKysJCQkJWl9TVFJMRU5fUFAoYm4pLCBOVUxMKTsgXAorKwkJfSBlbHNlIHsgXAorKwkJCV9uYW1lID0gTlVMTDsgXAorKwkJfSBcCisrIAl9IHdoaWxlICgwKTsKKysKKysvKiB7e3sgcGhwX29wZW5zc2xfcGtleV9pbml0X3JzYSAqLworK3plbmRfYm9vbCBwaHBfb3BlbnNzbF9wa2V5X2luaXRfYW5kX2Fzc2lnbl9yc2EoRVZQX1BLRVkgKnBrZXksIFJTQSAqcnNhLCB6dmFsICpkYXRhKQorK3sKKysJQklHTlVNICpuLCAqZSwgKmQsICpwLCAqcSwgKmRtcDEsICpkbXExLCAqaXFtcDsKKysKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBuKTsKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBlKTsKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBkKTsKKysJaWYgKCFuIHx8ICFkIHx8ICFSU0Ffc2V0MF9rZXkocnNhLCBuLCBlLCBkKSkgeworKwkJcmV0dXJuIDA7CisrCX0KKysKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBwKTsKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBxKTsKKysJaWYgKChwIHx8IHEpICYmICFSU0Ffc2V0MF9mYWN0b3JzKHJzYSwgcCwgcSkpIHsKKysJCXJldHVybiAwOworKwl9CisrCisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgZG1wMSk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgZG1xMSk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgaXFtcCk7CisrCWlmICgoZG1wMSB8fCBkbXExIHx8IGlxbXApICYmICFSU0Ffc2V0MF9jcnRfcGFyYW1zKHJzYSwgZG1wMSwgZG1xMSwgaXFtcCkpIHsKKysJCXJldHVybiAwOworKwl9CisrCisrCWlmICghRVZQX1BLRVlfYXNzaWduX1JTQShwa2V5LCByc2EpKSB7CisrCQlyZXR1cm4gMDsKKysJfQorKworKwlyZXR1cm4gMTsKKyt9CisrLyogfX19ICovCisrCisgLyoge3t7IHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kc2EgKi8KKy16ZW5kX2Jvb2wgcGhwX29wZW5zc2xfcGtleV9pbml0X2RzYShEU0EgKmRzYSkKKyt6ZW5kX2Jvb2wgcGhwX29wZW5zc2xfcGtleV9pbml0X2RzYShEU0EgKmRzYSwgenZhbCAqZGF0YSkKKyB7CistCWlmICghZHNhLT5wIHx8ICFkc2EtPnEgfHwgIWRzYS0+ZykgeworKwlCSUdOVU0gKnAsICpxLCAqZywgKnByaXZfa2V5LCAqcHViX2tleTsKKysJY29uc3QgQklHTlVNICpwcml2X2tleV9jb25zdCwgKnB1Yl9rZXlfY29uc3Q7CisrCisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcCk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcSk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgZyk7CisrCWlmICghcCB8fCAhcSB8fCAhZyB8fCAhRFNBX3NldDBfcHFnKGRzYSwgcCwgcSwgZykpIHsKKyAJCXJldHVybiAwOworIAl9CistCWlmIChkc2EtPnByaXZfa2V5IHx8IGRzYS0+cHViX2tleSkgeworLQkJcmV0dXJuIDE7CisrCisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcHViX2tleSk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcHJpdl9rZXkpOworKwlpZiAocHViX2tleSkgeworKwkJcmV0dXJuIERTQV9zZXQwX2tleShkc2EsIHB1Yl9rZXksIHByaXZfa2V5KTsKKyAJfQorIAlQSFBfT1BFTlNTTF9SQU5EX0FERF9USU1FKCk7CisgCWlmICghRFNBX2dlbmVyYXRlX2tleShkc2EpKSB7CitAQCAtMzU2Niw3ICszODA3LDggQEAgemVuZF9ib29sIHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kc2EoRFNBICpkc2EpCisgCX0KKyAJLyogaWYgQk5fbW9kX2V4cCByZXR1cm4gLTEsIHRoZW4gRFNBX2dlbmVyYXRlX2tleSBzdWNjZWVkIGZvciBmYWlsZWQga2V5CisgCSAqIHNvIHdlIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgcHVibGljIGtleSBpcyBjcmVhdGVkICovCistCWlmICghZHNhLT5wdWJfa2V5IHx8IEJOX2lzX3plcm8oZHNhLT5wdWJfa2V5KSkgeworKwlEU0FfZ2V0MF9rZXkoZHNhLCAmcHViX2tleV9jb25zdCwgJnByaXZfa2V5X2NvbnN0KTsKKysJaWYgKCFwdWJfa2V5X2NvbnN0IHx8IEJOX2lzX3plcm8ocHViX2tleV9jb25zdCkpIHsKKyAJCXJldHVybiAwOworIAl9CisgCS8qIGFsbCBnb29kICovCitAQCAtMzU3NCwxNCArMzgxNiw2NiBAQCB6ZW5kX2Jvb2wgcGhwX29wZW5zc2xfcGtleV9pbml0X2RzYShEU0EgKmRzYSkKKyB9CisgLyogfX19ICovCisgCisrLyoge3t7IHBocF9vcGVuc3NsX2RoX3B1Yl9mcm9tX3ByaXYgKi8KKytzdGF0aWMgQklHTlVNICpwaHBfb3BlbnNzbF9kaF9wdWJfZnJvbV9wcml2KEJJR05VTSAqcHJpdl9rZXksIEJJR05VTSAqZywgQklHTlVNICpwKQorK3sKKysJQklHTlVNICpwdWJfa2V5LCAqcHJpdl9rZXlfY29uc3RfdGltZTsKKysJQk5fQ1RYICpjdHg7CisrCisrCXB1Yl9rZXkgPSBCTl9uZXcoKTsKKysJaWYgKHB1Yl9rZXkgPT0gTlVMTCkgeworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysKKysJcHJpdl9rZXlfY29uc3RfdGltZSA9IEJOX25ldygpOworKwlpZiAocHJpdl9rZXlfY29uc3RfdGltZSA9PSBOVUxMKSB7CisrCQlCTl9mcmVlKHB1Yl9rZXkpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysJY3R4ID0gQk5fQ1RYX25ldygpOworKwlpZiAoY3R4ID09IE5VTEwpIHsKKysJCUJOX2ZyZWUocHViX2tleSk7CisrCQlCTl9mcmVlKHByaXZfa2V5X2NvbnN0X3RpbWUpOworKwkJcmV0dXJuIE5VTEw7CisrCX0KKysKKysJQk5fd2l0aF9mbGFncyhwcml2X2tleV9jb25zdF90aW1lLCBwcml2X2tleSwgQk5fRkxHX0NPTlNUVElNRSk7CisrCisrCWlmICghQk5fbW9kX2V4cF9tb250KHB1Yl9rZXksIGcsIHByaXZfa2V5X2NvbnN0X3RpbWUsIHAsIGN0eCwgTlVMTCkpIHsKKysJCUJOX2ZyZWUocHViX2tleSk7CisrCQlwdWJfa2V5ID0gTlVMTDsKKysJfQorKworKwlCTl9mcmVlKHByaXZfa2V5X2NvbnN0X3RpbWUpOworKwlCTl9DVFhfZnJlZShjdHgpOworKworKwlyZXR1cm4gcHViX2tleTsKKyt9CisrLyogfX19ICovCisrCisgLyoge3t7IHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kaCAqLworLXplbmRfYm9vbCBwaHBfb3BlbnNzbF9wa2V5X2luaXRfZGgoREggKmRoKQorK3plbmRfYm9vbCBwaHBfb3BlbnNzbF9wa2V5X2luaXRfZGgoREggKmRoLCB6dmFsICpkYXRhKQorIHsKKy0JaWYgKCFkaC0+cCB8fCAhZGgtPmcpIHsKKysJQklHTlVNICpwLCAqcSwgKmcsICpwcml2X2tleSwgKnB1Yl9rZXk7CisrCisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcCk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgcSk7CisrCU9QRU5TU0xfUEtFWV9TRVRfQk4oZGF0YSwgZyk7CisrCWlmICghcCB8fCAhZyB8fCAhREhfc2V0MF9wcWcoZGgsIHAsIHEsIGcpKSB7CisgCQlyZXR1cm4gMDsKKyAJfQorLQlpZiAoZGgtPnB1Yl9rZXkpIHsKKy0JCXJldHVybiAxOworKworKwlPUEVOU1NMX1BLRVlfU0VUX0JOKGRhdGEsIHByaXZfa2V5KTsKKysJT1BFTlNTTF9QS0VZX1NFVF9CTihkYXRhLCBwdWJfa2V5KTsKKysJaWYgKHB1Yl9rZXkpIHsKKysJCXJldHVybiBESF9zZXQwX2tleShkaCwgcHViX2tleSwgcHJpdl9rZXkpOworKwl9CisrCWlmIChwcml2X2tleSkgeworKwkJcHViX2tleSA9IHBocF9vcGVuc3NsX2RoX3B1Yl9mcm9tX3ByaXYocHJpdl9rZXksIGcsIHApOworKwkJaWYgKHB1Yl9rZXkgPT0gTlVMTCkgeworKwkJCXJldHVybiAwOworKwkJfQorKwkJcmV0dXJuIERIX3NldDBfa2V5KGRoLCBwdWJfa2V5LCBwcml2X2tleSk7CisgCX0KKyAJUEhQX09QRU5TU0xfUkFORF9BRERfVElNRSgpOworIAlpZiAoIURIX2dlbmVyYXRlX2tleShkaCkpIHsKK0BAIC0zNjE0LDE4ICszOTA4LDggQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfcGtleV9uZXcpCisgCQkgICAgaWYgKHBrZXkpIHsKKyAJCQkJUlNBICpyc2EgPSBSU0FfbmV3KCk7CisgCQkJCWlmIChyc2EpIHsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIHJzYSwgbik7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCByc2EsIGUpOworLQkJCQkJT1BFTlNTTF9QS0VZX1NFVF9CTihaX0FSUlZBTF9QUChkYXRhKSwgcnNhLCBkKTsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIHJzYSwgcCk7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCByc2EsIHEpOworLQkJCQkJT1BFTlNTTF9QS0VZX1NFVF9CTihaX0FSUlZBTF9QUChkYXRhKSwgcnNhLCBkbXAxKTsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIHJzYSwgZG1xMSk7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCByc2EsIGlxbXApOworLQkJCQkJaWYgKHJzYS0+biAmJiByc2EtPmQpIHsKKy0JCQkJCQlpZiAoRVZQX1BLRVlfYXNzaWduX1JTQShwa2V5LCByc2EpKSB7CistCQkJCQkJCVJFVFVSTl9SRVNPVVJDRSh6ZW5kX2xpc3RfaW5zZXJ0KHBrZXksIGxlX2tleSBUU1JNTFNfQ0MpKTsKKy0JCQkJCQl9CisrCQkJCQlpZiAocGhwX29wZW5zc2xfcGtleV9pbml0X2FuZF9hc3NpZ25fcnNhKHBrZXksIHJzYSwgKmRhdGEpKSB7CisrCQkJCQkJUkVUVVJOX1JFU09VUkNFKHplbmRfbGlzdF9pbnNlcnQocGtleSwgbGVfa2V5IFRTUk1MU19DQykpOworIAkJCQkJfQorIAkJCQkJUlNBX2ZyZWUocnNhKTsKKyAJCQkJfQorQEAgLTM2MzgsMTIgKzM5MjIsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9wa2V5X25ldykKKyAJCSAgICBpZiAocGtleSkgeworIAkJCQlEU0EgKmRzYSA9IERTQV9uZXcoKTsKKyAJCQkJaWYgKGRzYSkgeworLQkJCQkJT1BFTlNTTF9QS0VZX1NFVF9CTihaX0FSUlZBTF9QUChkYXRhKSwgZHNhLCBwKTsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIGRzYSwgcSk7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCBkc2EsIGcpOworLQkJCQkJT1BFTlNTTF9QS0VZX1NFVF9CTihaX0FSUlZBTF9QUChkYXRhKSwgZHNhLCBwcml2X2tleSk7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCBkc2EsIHB1Yl9rZXkpOworLQkJCQkJaWYgKHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kc2EoZHNhKSkgeworKwkJCQkJaWYgKHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kc2EoZHNhLCAqZGF0YSkpIHsKKyAJCQkJCQlpZiAoRVZQX1BLRVlfYXNzaWduX0RTQShwa2V5LCBkc2EpKSB7CisgCQkJCQkJCVJFVFVSTl9SRVNPVVJDRSh6ZW5kX2xpc3RfaW5zZXJ0KHBrZXksIGxlX2tleSBUU1JNTFNfQ0MpKTsKKyAJCQkJCQl9CitAQCAtMzY1OSwxMSArMzkzOCw3IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3BrZXlfbmV3KQorIAkJICAgIGlmIChwa2V5KSB7CisgCQkJCURIICpkaCA9IERIX25ldygpOworIAkJCQlpZiAoZGgpIHsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIGRoLCBwKTsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIGRoLCBnKTsKKy0JCQkJCU9QRU5TU0xfUEtFWV9TRVRfQk4oWl9BUlJWQUxfUFAoZGF0YSksIGRoLCBwcml2X2tleSk7CistCQkJCQlPUEVOU1NMX1BLRVlfU0VUX0JOKFpfQVJSVkFMX1BQKGRhdGEpLCBkaCwgcHViX2tleSk7CistCQkJCQlpZiAocGhwX29wZW5zc2xfcGtleV9pbml0X2RoKGRoKSkgeworKwkJCQkJaWYgKHBocF9vcGVuc3NsX3BrZXlfaW5pdF9kaChkaCwgKmRhdGEpKSB7CisgCQkJCQkJaWYgKEVWUF9QS0VZX2Fzc2lnbl9ESChwa2V5LCBkaCkpIHsKKyAJCQkJCQkJUkVUVVJOX1JFU09VUkNFKHplbmRfbGlzdF9pbnNlcnQocGtleSwgbGVfa2V5IFRTUk1MU19DQykpOworIAkJCQkJCX0KK0BAIC0zNzM4LDEwICs0MDEzLDEwIEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3BrZXlfZXhwb3J0X3RvX2ZpbGUpCisgCQkJY2lwaGVyID0gTlVMTDsKKyAJCX0KKyAKKy0JCXN3aXRjaCAoRVZQX1BLRVlfdHlwZShrZXktPnR5cGUpKSB7CisrCQlzd2l0Y2ggKEVWUF9QS0VZX2Jhc2VfaWQoa2V5KSkgeworICNpZmRlZiBIQVZFX0VWUF9QS0VZX0VDCisgCQkJY2FzZSBFVlBfUEtFWV9FQzoKKy0JCQkJcGVtX3dyaXRlID0gUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXkoYmlvX291dCwgRVZQX1BLRVlfZ2V0MV9FQ19LRVkoa2V5KSwgY2lwaGVyLCAodW5zaWduZWQgY2hhciAqKXBhc3NwaHJhc2UsIHBhc3NwaHJhc2VfbGVuLCBOVUxMLCBOVUxMKTsKKysJCQkJcGVtX3dyaXRlID0gUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXkoYmlvX291dCwgRVZQX1BLRVlfZ2V0MF9FQ19LRVkoa2V5KSwgY2lwaGVyLCAodW5zaWduZWQgY2hhciAqKXBhc3NwaHJhc2UsIHBhc3NwaHJhc2VfbGVuLCBOVUxMLCBOVUxMKTsKKyAJCQkJYnJlYWs7CisgI2VuZGlmCisgCQkJZGVmYXVsdDoKK0BAIC0zODA3LDcgKzQwODIsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9wa2V5X2V4cG9ydCkKKyAJCQljaXBoZXIgPSBOVUxMOworIAkJfQorIAorLQkJc3dpdGNoIChFVlBfUEtFWV90eXBlKGtleS0+dHlwZSkpIHsKKysJCXN3aXRjaCAoRVZQX1BLRVlfYmFzZV9pZChrZXkpKSB7CisgI2lmZGVmIEhBVkVfRVZQX1BLRVlfRUMKKyAJCQljYXNlIEVWUF9QS0VZX0VDOgorIAkJCQlwZW1fd3JpdGUgPSBQRU1fd3JpdGVfYmlvX0VDUHJpdmF0ZUtleShiaW9fb3V0LCBFVlBfUEtFWV9nZXQxX0VDX0tFWShrZXkpLCBjaXBoZXIsICh1bnNpZ25lZCBjaGFyICopcGFzc3BocmFzZSwgcGFzc3BocmFzZV9sZW4sIE5VTEwsIE5VTEwpOworQEAgLTM5MjgsMjUgKzQyMDMsMzMgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscykKKyAJLypUT0RPOiBVc2UgdGhlIHJlYWwgdmFsdWVzIG9uY2UgdGhlIG9wZW5zc2wgY29uc3RhbnRzIGFyZSB1c2VkIAorIAkgKiBTZWUgdGhlIGVudW0gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUKKyAJICovCistCXN3aXRjaCAoRVZQX1BLRVlfdHlwZShwa2V5LT50eXBlKSkgeworKwlzd2l0Y2ggKEVWUF9QS0VZX2Jhc2VfaWQocGtleSkpIHsKKyAJCWNhc2UgRVZQX1BLRVlfUlNBOgorIAkJY2FzZSBFVlBfUEtFWV9SU0EyOgorLQkJCWt0eXBlID0gT1BFTlNTTF9LRVlUWVBFX1JTQTsKKy0KKy0JCQlpZiAocGtleS0+cGtleS5yc2EgIT0gTlVMTCkgeworLQkJCQl6dmFsICpyc2E7CistCistCQkJCUFMTE9DX0lOSVRfWlZBTChyc2EpOworLQkJCQlhcnJheV9pbml0KHJzYSk7CistCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4ocnNhLCBuKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihyc2EsIGUpOworLQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHJzYSwgZCk7CistCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4ocnNhLCBwKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihyc2EsIHEpOworLQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHJzYSwgZG1wMSk7CistCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4ocnNhLCBkbXExKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihyc2EsIGlxbXApOworLQkJCQlhZGRfYXNzb2NfenZhbChyZXR1cm5fdmFsdWUsICJyc2EiLCByc2EpOworKwkJCXsKKysJCQkJUlNBICpyc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShwa2V5KTsKKysJCQkJa3R5cGUgPSBPUEVOU1NMX0tFWVRZUEVfUlNBOworKworKwkJCQlpZiAocnNhICE9IE5VTEwpIHsKKysJCQkJCXp2YWwgKnpfcnNhOworKwkJCQkJY29uc3QgQklHTlVNICpuLCAqZSwgKmQsICpwLCAqcSwgKmRtcDEsICpkbXExLCAqaXFtcDsKKysKKysJCQkJCVJTQV9nZXQwX2tleShyc2EsICZuLCAmZSwgJmQpOworKwkJCQkJUlNBX2dldDBfZmFjdG9ycyhyc2EsICZwLCAmcSk7CisrCQkJCQlSU0FfZ2V0MF9jcnRfcGFyYW1zKHJzYSwgJmRtcDEsICZkbXExLCAmaXFtcCk7CisrCisrCQkJCQlBTExPQ19JTklUX1pWQUwoel9yc2EpOworKwkJCQkJYXJyYXlfaW5pdCh6X3JzYSk7CisrCQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHpfcnNhLCBuKTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9yc2EsIGUpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X3JzYSwgZCk7CisrCQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHpfcnNhLCBwKTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9yc2EsIHEpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X3JzYSwgZG1wMSk7CisrCQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHpfcnNhLCBkbXExKTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9yc2EsIGlxbXApOworKwkJCQkJYWRkX2Fzc29jX3p2YWwocmV0dXJuX3ZhbHVlLCAicnNhIiwgel9yc2EpOworKwkJCQl9CisgCQkJfQorIAorIAkJCWJyZWFrOwkKK0BAIC0zOTU0LDQyICs0MjM3LDU1IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMpCisgCQljYXNlIEVWUF9QS0VZX0RTQTI6CisgCQljYXNlIEVWUF9QS0VZX0RTQTM6CisgCQljYXNlIEVWUF9QS0VZX0RTQTQ6CistCQkJa3R5cGUgPSBPUEVOU1NMX0tFWVRZUEVfRFNBOworLQorLQkJCWlmIChwa2V5LT5wa2V5LmRzYSAhPSBOVUxMKSB7CistCQkJCXp2YWwgKmRzYTsKKy0KKy0JCQkJQUxMT0NfSU5JVF9aVkFMKGRzYSk7CistCQkJCWFycmF5X2luaXQoZHNhKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihkc2EsIHApOworLQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKGRzYSwgcSk7CistCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oZHNhLCBnKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihkc2EsIHByaXZfa2V5KTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihkc2EsIHB1Yl9rZXkpOworLQkJCQlhZGRfYXNzb2NfenZhbChyZXR1cm5fdmFsdWUsICJkc2EiLCBkc2EpOworKwkJCXsKKysJCQkJRFNBICpkc2EgPSBFVlBfUEtFWV9nZXQwX0RTQShwa2V5KTsKKysJCQkJa3R5cGUgPSBPUEVOU1NMX0tFWVRZUEVfRFNBOworKworKwkJCQlpZiAoZHNhICE9IE5VTEwpIHsKKysJCQkJCXp2YWwgKnpfZHNhOworKwkJCQkJY29uc3QgQklHTlVNICpwLCAqcSwgKmcsICpwcml2X2tleSwgKnB1Yl9rZXk7CisrCisrCQkJCQlEU0FfZ2V0MF9wcWcoZHNhLCAmcCwgJnEsICZnKTsKKysJCQkJCURTQV9nZXQwX2tleShkc2EsICZwdWJfa2V5LCAmcHJpdl9rZXkpOworKworKwkJCQkJQUxMT0NfSU5JVF9aVkFMKHpfZHNhKTsKKysJCQkJCWFycmF5X2luaXQoel9kc2EpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X2RzYSwgcCk7CisrCQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHpfZHNhLCBxKTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9kc2EsIGcpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X2RzYSwgcHJpdl9rZXkpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X2RzYSwgcHViX2tleSk7CisrCQkJCQlhZGRfYXNzb2NfenZhbChyZXR1cm5fdmFsdWUsICJkc2EiLCB6X2RzYSk7CisrCQkJCX0KKyAJCQl9CisgCQkJYnJlYWs7CisgCQljYXNlIEVWUF9QS0VZX0RIOgorLQkJCQorLQkJCWt0eXBlID0gT1BFTlNTTF9LRVlUWVBFX0RIOworLQorLQkJCWlmIChwa2V5LT5wa2V5LmRoICE9IE5VTEwpIHsKKy0JCQkJenZhbCAqZGg7CistCistCQkJCUFMTE9DX0lOSVRfWlZBTChkaCk7CistCQkJCWFycmF5X2luaXQoZGgpOworLQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKGRoLCBwKTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihkaCwgZyk7CistCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oZGgsIHByaXZfa2V5KTsKKy0JCQkJT1BFTlNTTF9QS0VZX0dFVF9CTihkaCwgcHViX2tleSk7CistCQkJCWFkZF9hc3NvY196dmFsKHJldHVybl92YWx1ZSwgImRoIiwgZGgpOworKwkJCXsKKysJCQkJREggKmRoID0gRVZQX1BLRVlfZ2V0MF9ESChwa2V5KTsKKysJCQkJa3R5cGUgPSBPUEVOU1NMX0tFWVRZUEVfREg7CisrCisrCQkJCWlmIChkaCAhPSBOVUxMKSB7CisrCQkJCQl6dmFsICp6X2RoOworKwkJCQkJY29uc3QgQklHTlVNICpwLCAqcSwgKmcsICpwcml2X2tleSwgKnB1Yl9rZXk7CisrCisrCQkJCQlESF9nZXQwX3BxZyhkaCwgJnAsICZxLCAmZyk7CisrCQkJCQlESF9nZXQwX2tleShkaCwgJnB1Yl9rZXksICZwcml2X2tleSk7CisrCisrCQkJCQlBTExPQ19JTklUX1pWQUwoel9kaCk7CisrCQkJCQlhcnJheV9pbml0KHpfZGgpOworKwkJCQkJT1BFTlNTTF9QS0VZX0dFVF9CTih6X2RoLCBwKTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9kaCwgZyk7CisrCQkJCQlPUEVOU1NMX1BLRVlfR0VUX0JOKHpfZGgsIHByaXZfa2V5KTsKKysJCQkJCU9QRU5TU0xfUEtFWV9HRVRfQk4oel9kaCwgcHViX2tleSk7CisrCQkJCQlhZGRfYXNzb2NfenZhbChyZXR1cm5fdmFsdWUsICJkaCIsIHpfZGgpOworKwkJCQl9CisgCQkJfQorIAorIAkJCWJyZWFrOworICNpZmRlZiBIQVZFX0VWUF9QS0VZX0VDCisgCQljYXNlIEVWUF9QS0VZX0VDOgorIAkJCWt0eXBlID0gT1BFTlNTTF9LRVlUWVBFX0VDOworLQkJCWlmIChwa2V5LT5wa2V5LmVjICE9IE5VTEwpIHsKKysJCQlpZiAoRVZQX1BLRVlfZ2V0MF9FQ19LRVkocGtleSkgIT0gTlVMTCkgeworIAkJCQl6dmFsICplYzsKKyAJCQkJY29uc3QgRUNfR1JPVVAgKmVjX2dyb3VwOworIAkJCQlpbnQgbmlkOworQEAgLTQ1NDYsMTMgKzQ4NDIsMTMgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfcHJpdmF0ZV9lbmNyeXB0KQorIAljcnlwdGVkbGVuID0gRVZQX1BLRVlfc2l6ZShwa2V5KTsKKyAJY3J5cHRlZGJ1ZiA9IGVtYWxsb2MoY3J5cHRlZGxlbiArIDEpOworIAorLQlzd2l0Y2ggKHBrZXktPnR5cGUpIHsKKysJc3dpdGNoIChFVlBfUEtFWV9pZChwa2V5KSkgeworIAkJY2FzZSBFVlBfUEtFWV9SU0E6CisgCQljYXNlIEVWUF9QS0VZX1JTQTI6CisgCQkJc3VjY2Vzc2Z1bCA9ICAoUlNBX3ByaXZhdGVfZW5jcnlwdChkYXRhX2xlbiwgCisgCQkJCQkJKHVuc2lnbmVkIGNoYXIgKilkYXRhLCAKKyAJCQkJCQljcnlwdGVkYnVmLCAKKy0JCQkJCQlwa2V5LT5wa2V5LnJzYSwgCisrCQkJCQkJRVZQX1BLRVlfZ2V0MF9SU0EocGtleSksIAorIAkJCQkJCXBhZGRpbmcpID09IGNyeXB0ZWRsZW4pOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKK0BAIC00NjA0LDEzICs0OTAwLDEzIEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3ByaXZhdGVfZGVjcnlwdCkKKyAJY3J5cHRlZGxlbiA9IEVWUF9QS0VZX3NpemUocGtleSk7CisgCWNyeXB0dGVtcCA9IGVtYWxsb2MoY3J5cHRlZGxlbiArIDEpOworIAorLQlzd2l0Y2ggKHBrZXktPnR5cGUpIHsKKysJc3dpdGNoIChFVlBfUEtFWV9pZChwa2V5KSkgeworIAkJY2FzZSBFVlBfUEtFWV9SU0E6CisgCQljYXNlIEVWUF9QS0VZX1JTQTI6CisgCQkJY3J5cHRlZGxlbiA9IFJTQV9wcml2YXRlX2RlY3J5cHQoZGF0YV9sZW4sIAorIAkJCQkJKHVuc2lnbmVkIGNoYXIgKilkYXRhLCAKKyAJCQkJCWNyeXB0dGVtcCwgCistCQkJCQlwa2V5LT5wa2V5LnJzYSwgCisrCQkJCQlFVlBfUEtFWV9nZXQwX1JTQShwa2V5KSwgCisgCQkJCQlwYWRkaW5nKTsKKyAJCQlpZiAoY3J5cHRlZGxlbiAhPSAtMSkgeworIAkJCQljcnlwdGVkYnVmID0gZW1hbGxvYyhjcnlwdGVkbGVuICsgMSk7CitAQCAtNDY2OSwxMyArNDk2NSwxMyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9wdWJsaWNfZW5jcnlwdCkKKyAJY3J5cHRlZGxlbiA9IEVWUF9QS0VZX3NpemUocGtleSk7CisgCWNyeXB0ZWRidWYgPSBlbWFsbG9jKGNyeXB0ZWRsZW4gKyAxKTsKKyAKKy0Jc3dpdGNoIChwa2V5LT50eXBlKSB7CisrCXN3aXRjaCAoRVZQX1BLRVlfaWQocGtleSkpIHsKKyAJCWNhc2UgRVZQX1BLRVlfUlNBOgorIAkJY2FzZSBFVlBfUEtFWV9SU0EyOgorIAkJCXN1Y2Nlc3NmdWwgPSAoUlNBX3B1YmxpY19lbmNyeXB0KGRhdGFfbGVuLCAKKyAJCQkJCQkodW5zaWduZWQgY2hhciAqKWRhdGEsIAorIAkJCQkJCWNyeXB0ZWRidWYsIAorLQkJCQkJCXBrZXktPnBrZXkucnNhLCAKKysJCQkJCQlFVlBfUEtFWV9nZXQwX1JTQShwa2V5KSwgCisgCQkJCQkJcGFkZGluZykgPT0gY3J5cHRlZGxlbik7CisgCQkJYnJlYWs7CisgCQlkZWZhdWx0OgorQEAgLTQ3MjgsMTMgKzUwMjQsMTMgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfcHVibGljX2RlY3J5cHQpCisgCWNyeXB0ZWRsZW4gPSBFVlBfUEtFWV9zaXplKHBrZXkpOworIAljcnlwdHRlbXAgPSBlbWFsbG9jKGNyeXB0ZWRsZW4gKyAxKTsKKyAKKy0Jc3dpdGNoIChwa2V5LT50eXBlKSB7CisrCXN3aXRjaCAoRVZQX1BLRVlfaWQocGtleSkpIHsKKyAJCWNhc2UgRVZQX1BLRVlfUlNBOgorIAkJY2FzZSBFVlBfUEtFWV9SU0EyOgorIAkJCWNyeXB0ZWRsZW4gPSBSU0FfcHVibGljX2RlY3J5cHQoZGF0YV9sZW4sIAorIAkJCQkJKHVuc2lnbmVkIGNoYXIgKilkYXRhLCAKKyAJCQkJCWNyeXB0dGVtcCwgCistCQkJCQlwa2V5LT5wa2V5LnJzYSwgCisrCQkJCQlFVlBfUEtFWV9nZXQwX1JTQShwa2V5KSwgCisgCQkJCQlwYWRkaW5nKTsKKyAJCQlpZiAoY3J5cHRlZGxlbiAhPSAtMSkgeworIAkJCQljcnlwdGVkYnVmID0gZW1hbGxvYyhjcnlwdGVkbGVuICsgMSk7CitAQCAtNDc5OCw3ICs1MDk0LDcgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfc2lnbikKKyAJbG9uZyBrZXlyZXNvdXJjZSA9IC0xOworIAljaGFyICogZGF0YTsKKyAJaW50IGRhdGFfbGVuOworLQlFVlBfTURfQ1RYIG1kX2N0eDsKKysJRVZQX01EX0NUWCAqbWRfY3R4OworIAl6dmFsICptZXRob2QgPSBOVUxMOworIAlsb25nIHNpZ25hdHVyZV9hbGdvID0gT1BFTlNTTF9BTEdPX1NIQTE7CisgCWNvbnN0IEVWUF9NRCAqbWR0eXBlOworQEAgLTQ4MzEsOSArNTEyNywxMCBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9zaWduKQorIAlzaWdsZW4gPSBFVlBfUEtFWV9zaXplKHBrZXkpOworIAlzaWdidWYgPSBlbWFsbG9jKHNpZ2xlbiArIDEpOworIAorLQlFVlBfU2lnbkluaXQoJm1kX2N0eCwgbWR0eXBlKTsKKy0JRVZQX1NpZ25VcGRhdGUoJm1kX2N0eCwgZGF0YSwgZGF0YV9sZW4pOworLQlpZiAoRVZQX1NpZ25GaW5hbCAoJm1kX2N0eCwgc2lnYnVmLCh1bnNpZ25lZCBpbnQgKikmc2lnbGVuLCBwa2V5KSkgeworKwltZF9jdHggPSBFVlBfTURfQ1RYX2NyZWF0ZSgpOworKwlFVlBfU2lnbkluaXQobWRfY3R4LCBtZHR5cGUpOworKwlFVlBfU2lnblVwZGF0ZShtZF9jdHgsIGRhdGEsIGRhdGFfbGVuKTsKKysJaWYgKEVWUF9TaWduRmluYWwgKG1kX2N0eCwgc2lnYnVmLCh1bnNpZ25lZCBpbnQgKikmc2lnbGVuLCBwa2V5KSkgeworIAkJenZhbF9kdG9yKHNpZ25hdHVyZSk7CisgCQlzaWdidWZbc2lnbGVuXSA9ICdcMCc7CisgCQlaVkFMX1NUUklOR0woc2lnbmF0dXJlLCAoY2hhciAqKXNpZ2J1Ziwgc2lnbGVuLCAwKTsKK0BAIC00ODQyLDcgKzUxMzksNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9zaWduKQorIAkJZWZyZWUoc2lnYnVmKTsKKyAJCVJFVFZBTF9GQUxTRTsKKyAJfQorLQlFVlBfTURfQ1RYX2NsZWFudXAoJm1kX2N0eCk7CisrCUVWUF9NRF9DVFhfZGVzdHJveShtZF9jdHgpOworIAlpZiAoa2V5cmVzb3VyY2UgPT0gLTEpIHsKKyAJCUVWUF9QS0VZX2ZyZWUocGtleSk7CisgCX0KK0BAIC00ODU2LDcgKzUxNTMsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF92ZXJpZnkpCisgCXp2YWwgKiprZXk7CisgCUVWUF9QS0VZICpwa2V5OworIAlpbnQgZXJyOworLQlFVlBfTURfQ1RYICAgICBtZF9jdHg7CisrCUVWUF9NRF9DVFggICAgICptZF9jdHg7CisgCWNvbnN0IEVWUF9NRCAqbWR0eXBlOworIAlsb25nIGtleXJlc291cmNlID0gLTE7CisgCWNoYXIgKiBkYXRhOwlpbnQgZGF0YV9sZW47CitAQCAtNDg5MCwxMCArNTE4NywxMSBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF92ZXJpZnkpCisgCQlSRVRVUk5fRkFMU0U7CisgCX0KKyAKKy0JRVZQX1ZlcmlmeUluaXQgICAoJm1kX2N0eCwgbWR0eXBlKTsKKy0JRVZQX1ZlcmlmeVVwZGF0ZSAoJm1kX2N0eCwgZGF0YSwgZGF0YV9sZW4pOworLQllcnIgPSBFVlBfVmVyaWZ5RmluYWwgKCZtZF9jdHgsICh1bnNpZ25lZCBjaGFyICopc2lnbmF0dXJlLCBzaWduYXR1cmVfbGVuLCBwa2V5KTsKKy0JRVZQX01EX0NUWF9jbGVhbnVwKCZtZF9jdHgpOworKwltZF9jdHggPSBFVlBfTURfQ1RYX2NyZWF0ZSgpOworKwlFVlBfVmVyaWZ5SW5pdCAgIChtZF9jdHgsIG1kdHlwZSk7CisrCUVWUF9WZXJpZnlVcGRhdGUgKG1kX2N0eCwgZGF0YSwgZGF0YV9sZW4pOworKwllcnIgPSBFVlBfVmVyaWZ5RmluYWwgKG1kX2N0eCwgKHVuc2lnbmVkIGNoYXIgKilzaWduYXR1cmUsIHNpZ25hdHVyZV9sZW4sIHBrZXkpOworKwlFVlBfTURfQ1RYX2Rlc3Ryb3kobWRfY3R4KTsKKyAKKyAJaWYgKGtleXJlc291cmNlID09IC0xKSB7CisgCQlFVlBfUEtFWV9mcmVlKHBrZXkpOworQEAgLTQ5MTcsNyArNTIxNSw3IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX3NlYWwpCisgCWNoYXIgKm1ldGhvZCA9TlVMTDsKKyAJaW50IG1ldGhvZF9sZW4gPSAwOworIAljb25zdCBFVlBfQ0lQSEVSICpjaXBoZXI7CistCUVWUF9DSVBIRVJfQ1RYIGN0eDsKKysJRVZQX0NJUEhFUl9DVFggKmN0eDsKKyAKKyAJaWYgKHplbmRfcGFyc2VfcGFyYW1ldGVycyhaRU5EX05VTV9BUkdTKCkgVFNSTUxTX0NDLCAic3p6YS98cyIsICZkYXRhLCAmZGF0YV9sZW4sICZzZWFsZGF0YSwgJmVrZXlzLCAmcHVia2V5cywgJm1ldGhvZCwgJm1ldGhvZF9sZW4pID09IEZBSUxVUkUpIHsKKyAJCXJldHVybjsKK0BAIC00OTUwLDYgKzUyNDgsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9zZWFsKQorIAltZW1zZXQoZWtzLCAwLCBzaXplb2YoKmVrcykgKiBua2V5cyk7CisgCWtleV9yZXNvdXJjZXMgPSBzYWZlX2VtYWxsb2MobmtleXMsIHNpemVvZihsb25nKSwgMCk7CisgCW1lbXNldChrZXlfcmVzb3VyY2VzLCAwLCBzaXplb2YoKmtleV9yZXNvdXJjZXMpICogbmtleXMpOworKwltZW1zZXQocGtleXMsIDAsIHNpemVvZigqcGtleXMpICogbmtleXMpOworIAorIAkvKiBnZXQgdGhlIHB1YmxpYyBrZXlzIHdlIGFyZSB1c2luZyB0byBzZWFsIHRoaXMgZGF0YSAqLworIAl6ZW5kX2hhc2hfaW50ZXJuYWxfcG9pbnRlcl9yZXNldF9leChwdWJrZXlzaHQsICZwb3MpOworQEAgLTQ5NjcsMjcgKzUyNjYsMjggQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfc2VhbCkKKyAJCWkrKzsKKyAJfQorIAorLQlpZiAoIUVWUF9FbmNyeXB0SW5pdCgmY3R4LGNpcGhlcixOVUxMLE5VTEwpKSB7CisrCWN0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworKwlpZiAoY3R4ID09IE5VTEwgfHwgIUVWUF9FbmNyeXB0SW5pdChjdHgsY2lwaGVyLE5VTEwsTlVMTCkpIHsKKyAJCVJFVFZBTF9GQUxTRTsKKy0JCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrCQlFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eCk7CisgCQlnb3RvIGNsZWFuX2V4aXQ7CisgCX0KKyAKKyAjaWYgMAorIAkvKiBOZWVkIHRoaXMgaWYgYWxsb3cgY2lwaGVycyB0aGF0IHJlcXVpcmUgaW5pdGlhbGl6YXRpb24gdmVjdG9yICovCistCWl2bGVuID0gRVZQX0NJUEhFUl9DVFhfaXZfbGVuZ3RoKCZjdHgpOworKwlpdmxlbiA9IEVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aChjdHgpOworIAlpdiA9IGl2bGVuID8gZW1hbGxvYyhpdmxlbiArIDEpIDogTlVMTDsKKyAjZW5kaWYKKyAJLyogYWxsb2NhdGUgb25lIGJ5dGUgZXh0cmEgdG8gbWFrZSByb29tIGZvciBcMCAqLworLQlidWYgPSBlbWFsbG9jKGRhdGFfbGVuICsgRVZQX0NJUEhFUl9DVFhfYmxvY2tfc2l6ZSgmY3R4KSk7CistCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisrCWJ1ZiA9IGVtYWxsb2MoZGF0YV9sZW4gKyBFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplKGN0eCkpOworKwlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKGN0eCk7CisgCistCWlmIChFVlBfU2VhbEluaXQoJmN0eCwgY2lwaGVyLCBla3MsIGVrc2wsIE5VTEwsIHBrZXlzLCBua2V5cykgPD0gMCB8fAorLQkJCSFFVlBfU2VhbFVwZGF0ZSgmY3R4LCBidWYsICZsZW4xLCAodW5zaWduZWQgY2hhciAqKWRhdGEsIGRhdGFfbGVuKSB8fAorLQkJCSFFVlBfU2VhbEZpbmFsKCZjdHgsIGJ1ZiArIGxlbjEsICZsZW4yKSkgeworKwlpZiAoRVZQX1NlYWxJbml0KGN0eCwgY2lwaGVyLCBla3MsIGVrc2wsIE5VTEwsIHBrZXlzLCBua2V5cykgPD0gMCB8fAorKwkJCSFFVlBfU2VhbFVwZGF0ZShjdHgsIGJ1ZiwgJmxlbjEsICh1bnNpZ25lZCBjaGFyICopZGF0YSwgZGF0YV9sZW4pIHx8CisrCQkJIUVWUF9TZWFsRmluYWwoY3R4LCBidWYgKyBsZW4xLCAmbGVuMikpIHsKKyAJCVJFVFZBTF9GQUxTRTsKKyAJCWVmcmVlKGJ1Zik7CistCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworKwkJRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworIAkJZ290byBjbGVhbl9leGl0OworIAl9CisgCitAQCAtNTAxOCw3ICs1MzE4LDcgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfc2VhbCkKKyAJCWVmcmVlKGJ1Zik7CisgCX0KKyAJUkVUVkFMX0xPTkcobGVuMSArIGxlbjIpOworLQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworKwlFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eCk7CisgCisgY2xlYW5fZXhpdDoKKyAJZm9yIChpPTA7IGk8bmtleXM7IGkrKykgeworQEAgLTUwNDUsNyArNTM0NSw3IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX29wZW4pCisgCWludCBsZW4xLCBsZW4yOworIAl1bnNpZ25lZCBjaGFyICpidWY7CisgCWxvbmcga2V5cmVzb3VyY2UgPSAtMTsKKy0JRVZQX0NJUEhFUl9DVFggY3R4OworKwlFVlBfQ0lQSEVSX0NUWCAqY3R4OworIAljaGFyICogZGF0YTsJaW50IGRhdGFfbGVuOworIAljaGFyICogZWtleTsJaW50IGVrZXlfbGVuOworIAljaGFyICptZXRob2QgPU5VTEw7CitAQCAtNTA3NCw4ICs1Mzc0LDkgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfb3BlbikKKyAJCisgCWJ1ZiA9IGVtYWxsb2MoZGF0YV9sZW4gKyAxKTsKKyAKKy0JaWYgKEVWUF9PcGVuSW5pdCgmY3R4LCBjaXBoZXIsICh1bnNpZ25lZCBjaGFyICopZWtleSwgZWtleV9sZW4sIE5VTEwsIHBrZXkpICYmIEVWUF9PcGVuVXBkYXRlKCZjdHgsIGJ1ZiwgJmxlbjEsICh1bnNpZ25lZCBjaGFyICopZGF0YSwgZGF0YV9sZW4pKSB7CistCQlpZiAoIUVWUF9PcGVuRmluYWwoJmN0eCwgYnVmICsgbGVuMSwgJmxlbjIpIHx8IChsZW4xICsgbGVuMiA9PSAwKSkgeworKwljdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKysJaWYgKEVWUF9PcGVuSW5pdChjdHgsIGNpcGhlciwgKHVuc2lnbmVkIGNoYXIgKilla2V5LCBla2V5X2xlbiwgTlVMTCwgcGtleSkgJiYgRVZQX09wZW5VcGRhdGUoY3R4LCBidWYsICZsZW4xLCAodW5zaWduZWQgY2hhciAqKWRhdGEsIGRhdGFfbGVuKSkgeworKwkJaWYgKCFFVlBfT3BlbkZpbmFsKGN0eCwgYnVmICsgbGVuMSwgJmxlbjIpIHx8IChsZW4xICsgbGVuMiA9PSAwKSkgeworIAkJCWVmcmVlKGJ1Zik7CisgCQkJUkVUVkFMX0ZBTFNFOworIAkJfSBlbHNlIHsKK0BAIC01MDkxLDcgKzUzOTIsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9vcGVuKQorIAlpZiAoa2V5cmVzb3VyY2UgPT0gLTEpIHsKKyAJCUVWUF9QS0VZX2ZyZWUocGtleSk7CisgCX0KKy0JRVZQX0NJUEhFUl9DVFhfY2xlYW51cCgmY3R4KTsKKysJRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworIH0KKyAvKiB9fX0gKi8KKyAKK0BAIC01MTUxLDcgKzU0NTIsNyBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9kaWdlc3QpCisgCWNoYXIgKmRhdGEsICptZXRob2Q7CisgCWludCBkYXRhX2xlbiwgbWV0aG9kX2xlbjsKKyAJY29uc3QgRVZQX01EICptZHR5cGU7CistCUVWUF9NRF9DVFggbWRfY3R4OworKwlFVlBfTURfQ1RYICptZF9jdHg7CisgCWludCBzaWdsZW47CisgCXVuc2lnbmVkIGNoYXIgKnNpZ2J1ZjsKKyAKK0BAIC01MTY3LDkgKzU0NjgsMTAgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfZGlnZXN0KQorIAlzaWdsZW4gPSBFVlBfTURfc2l6ZShtZHR5cGUpOworIAlzaWdidWYgPSBlbWFsbG9jKHNpZ2xlbiArIDEpOworIAorLQlFVlBfRGlnZXN0SW5pdCgmbWRfY3R4LCBtZHR5cGUpOworLQlFVlBfRGlnZXN0VXBkYXRlKCZtZF9jdHgsICh1bnNpZ25lZCBjaGFyICopZGF0YSwgZGF0YV9sZW4pOworLQlpZiAoRVZQX0RpZ2VzdEZpbmFsICgmbWRfY3R4LCAodW5zaWduZWQgY2hhciAqKXNpZ2J1ZiwgKHVuc2lnbmVkIGludCAqKSZzaWdsZW4pKSB7CisrCW1kX2N0eCA9IEVWUF9NRF9DVFhfY3JlYXRlKCk7CisrCUVWUF9EaWdlc3RJbml0KG1kX2N0eCwgbWR0eXBlKTsKKysJRVZQX0RpZ2VzdFVwZGF0ZShtZF9jdHgsICh1bnNpZ25lZCBjaGFyICopZGF0YSwgZGF0YV9sZW4pOworKwlpZiAoRVZQX0RpZ2VzdEZpbmFsIChtZF9jdHgsICh1bnNpZ25lZCBjaGFyICopc2lnYnVmLCAodW5zaWduZWQgaW50ICopJnNpZ2xlbikpIHsKKyAJCWlmIChyYXdfb3V0cHV0KSB7CisgCQkJc2lnYnVmW3NpZ2xlbl0gPSAnXDAnOworIAkJCVJFVFZBTF9TVFJJTkdMKChjaGFyICopc2lnYnVmLCBzaWdsZW4sIDApOworQEAgLTUxODUsNiArNTQ4Nyw4IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX2RpZ2VzdCkKKyAJCWVmcmVlKHNpZ2J1Zik7CisgCQlSRVRWQUxfRkFMU0U7CisgCX0KKysKKysJRVZQX01EX0NUWF9kZXN0cm95KG1kX2N0eCk7CisgfQorIC8qIH19fSAqLworIAorQEAgLTUyMzAsNyArNTUzNCw3IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX2VuY3J5cHQpCisgCWNoYXIgKmRhdGEsICptZXRob2QsICpwYXNzd29yZCwgKml2ID0gIiI7CisgCWludCBkYXRhX2xlbiwgbWV0aG9kX2xlbiwgcGFzc3dvcmRfbGVuLCBpdl9sZW4gPSAwLCBtYXhfaXZfbGVuOworIAljb25zdCBFVlBfQ0lQSEVSICpjaXBoZXJfdHlwZTsKKy0JRVZQX0NJUEhFUl9DVFggY2lwaGVyX2N0eDsKKysJRVZQX0NJUEhFUl9DVFggKmNpcGhlcl9jdHg7CisgCWludCBpPTAsIG91dGxlbiwga2V5bGVuOworIAl1bnNpZ25lZCBjaGFyICpvdXRidWYsICprZXk7CisgCXplbmRfYm9vbCBmcmVlX2l2OworQEAgLTUyNjIsMTkgKzU1NjYsMjQgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfZW5jcnlwdCkKKyAJb3V0bGVuID0gZGF0YV9sZW4gKyBFVlBfQ0lQSEVSX2Jsb2NrX3NpemUoY2lwaGVyX3R5cGUpOworIAlvdXRidWYgPSBzYWZlX2VtYWxsb2Mob3V0bGVuLCAxLCAxKTsKKyAKKy0JRVZQX0VuY3J5cHRJbml0KCZjaXBoZXJfY3R4LCBjaXBoZXJfdHlwZSwgTlVMTCwgTlVMTCk7CisrCWNpcGhlcl9jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKysJaWYgKCFjaXBoZXJfY3R4KSB7CisrCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJGYWlsZWQgdG8gY3JlYXRlIGNpcGhlciBjb250ZXh0Iik7CisrCQlSRVRVUk5fRkFMU0U7CisrCX0KKysJRVZQX0VuY3J5cHRJbml0KGNpcGhlcl9jdHgsIGNpcGhlcl90eXBlLCBOVUxMLCBOVUxMKTsKKyAJaWYgKHBhc3N3b3JkX2xlbiA+IGtleWxlbikgeworLQkJRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGgoJmNpcGhlcl9jdHgsIHBhc3N3b3JkX2xlbik7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aChjaXBoZXJfY3R4LCBwYXNzd29yZF9sZW4pOworIAl9CistCUVWUF9FbmNyeXB0SW5pdF9leCgmY2lwaGVyX2N0eCwgTlVMTCwgTlVMTCwga2V5LCAodW5zaWduZWQgY2hhciAqKWl2KTsKKysJRVZQX0VuY3J5cHRJbml0X2V4KGNpcGhlcl9jdHgsIE5VTEwsIE5VTEwsIGtleSwgKHVuc2lnbmVkIGNoYXIgKilpdik7CisgCWlmIChvcHRpb25zICYgT1BFTlNTTF9aRVJPX1BBRERJTkcpIHsKKy0JCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKCZjaXBoZXJfY3R4LCAwKTsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKGNpcGhlcl9jdHgsIDApOworIAl9CisgCWlmIChkYXRhX2xlbiA+IDApIHsKKy0JCUVWUF9FbmNyeXB0VXBkYXRlKCZjaXBoZXJfY3R4LCBvdXRidWYsICZpLCAodW5zaWduZWQgY2hhciAqKWRhdGEsIGRhdGFfbGVuKTsKKysJCUVWUF9FbmNyeXB0VXBkYXRlKGNpcGhlcl9jdHgsIG91dGJ1ZiwgJmksICh1bnNpZ25lZCBjaGFyICopZGF0YSwgZGF0YV9sZW4pOworIAl9CisgCW91dGxlbiA9IGk7CistCWlmIChFVlBfRW5jcnlwdEZpbmFsKCZjaXBoZXJfY3R4LCAodW5zaWduZWQgY2hhciAqKW91dGJ1ZiArIGksICZpKSkgeworKwlpZiAoRVZQX0VuY3J5cHRGaW5hbChjaXBoZXJfY3R4LCAodW5zaWduZWQgY2hhciAqKW91dGJ1ZiArIGksICZpKSkgeworIAkJb3V0bGVuICs9IGk7CisgCQlpZiAob3B0aW9ucyAmIE9QRU5TU0xfUkFXX0RBVEEpIHsKKyAJCQlvdXRidWZbb3V0bGVuXSA9ICdcMCc7CitAQCAtNTMwMSw3ICs1NjEwLDggQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfZW5jcnlwdCkKKyAJaWYgKGZyZWVfaXYpIHsKKyAJCWVmcmVlKGl2KTsKKyAJfQorLQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjaXBoZXJfY3R4KTsKKysJRVZQX0NJUEhFUl9DVFhfY2xlYW51cChjaXBoZXJfY3R4KTsKKysJRVZQX0NJUEhFUl9DVFhfZnJlZShjaXBoZXJfY3R4KTsKKyB9CisgLyogfX19ICovCisgCitAQCAtNTMxMyw3ICs1NjIzLDcgQEAgUEhQX0ZVTkNUSU9OKG9wZW5zc2xfZGVjcnlwdCkKKyAJY2hhciAqZGF0YSwgKm1ldGhvZCwgKnBhc3N3b3JkLCAqaXYgPSAiIjsKKyAJaW50IGRhdGFfbGVuLCBtZXRob2RfbGVuLCBwYXNzd29yZF9sZW4sIGl2X2xlbiA9IDA7CisgCWNvbnN0IEVWUF9DSVBIRVIgKmNpcGhlcl90eXBlOworLQlFVlBfQ0lQSEVSX0NUWCBjaXBoZXJfY3R4OworKwlFVlBfQ0lQSEVSX0NUWCAqY2lwaGVyX2N0eDsKKyAJaW50IGksIG91dGxlbiwga2V5bGVuOworIAl1bnNpZ25lZCBjaGFyICpvdXRidWYsICprZXk7CisgCWludCBiYXNlNjRfc3RyX2xlbjsKK0BAIC01MzU5LDE3ICs1NjY5LDIzIEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX2RlY3J5cHQpCisgCW91dGxlbiA9IGRhdGFfbGVuICsgRVZQX0NJUEhFUl9ibG9ja19zaXplKGNpcGhlcl90eXBlKTsKKyAJb3V0YnVmID0gZW1hbGxvYyhvdXRsZW4gKyAxKTsKKyAKKy0JRVZQX0RlY3J5cHRJbml0KCZjaXBoZXJfY3R4LCBjaXBoZXJfdHlwZSwgTlVMTCwgTlVMTCk7CisrCWNpcGhlcl9jdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKysJaWYgKCFjaXBoZXJfY3R4KSB7CisrCQlwaHBfZXJyb3JfZG9jcmVmKE5VTEwgVFNSTUxTX0NDLCBFX1dBUk5JTkcsICJGYWlsZWQgdG8gY3JlYXRlIGNpcGhlciBjb250ZXh0Iik7CisrCQlSRVRVUk5fRkFMU0U7CisrCX0KKysKKysJRVZQX0RlY3J5cHRJbml0KGNpcGhlcl9jdHgsIGNpcGhlcl90eXBlLCBOVUxMLCBOVUxMKTsKKyAJaWYgKHBhc3N3b3JkX2xlbiA+IGtleWxlbikgeworLQkJRVZQX0NJUEhFUl9DVFhfc2V0X2tleV9sZW5ndGgoJmNpcGhlcl9jdHgsIHBhc3N3b3JkX2xlbik7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aChjaXBoZXJfY3R4LCBwYXNzd29yZF9sZW4pOworIAl9CistCUVWUF9EZWNyeXB0SW5pdF9leCgmY2lwaGVyX2N0eCwgTlVMTCwgTlVMTCwga2V5LCAodW5zaWduZWQgY2hhciAqKWl2KTsKKysJRVZQX0RlY3J5cHRJbml0X2V4KGNpcGhlcl9jdHgsIE5VTEwsIE5VTEwsIGtleSwgKHVuc2lnbmVkIGNoYXIgKilpdik7CisgCWlmIChvcHRpb25zICYgT1BFTlNTTF9aRVJPX1BBRERJTkcpIHsKKy0JCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKCZjaXBoZXJfY3R4LCAwKTsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nKGNpcGhlcl9jdHgsIDApOworIAl9CistCUVWUF9EZWNyeXB0VXBkYXRlKCZjaXBoZXJfY3R4LCBvdXRidWYsICZpLCAodW5zaWduZWQgY2hhciAqKWRhdGEsIGRhdGFfbGVuKTsKKysJRVZQX0RlY3J5cHRVcGRhdGUoY2lwaGVyX2N0eCwgb3V0YnVmLCAmaSwgKHVuc2lnbmVkIGNoYXIgKilkYXRhLCBkYXRhX2xlbik7CisgCW91dGxlbiA9IGk7CistCWlmIChFVlBfRGVjcnlwdEZpbmFsKCZjaXBoZXJfY3R4LCAodW5zaWduZWQgY2hhciAqKW91dGJ1ZiArIGksICZpKSkgeworKwlpZiAoRVZQX0RlY3J5cHRGaW5hbChjaXBoZXJfY3R4LCAodW5zaWduZWQgY2hhciAqKW91dGJ1ZiArIGksICZpKSkgeworIAkJb3V0bGVuICs9IGk7CisgCQlvdXRidWZbb3V0bGVuXSA9ICdcMCc7CisgCQlSRVRWQUxfU1RSSU5HTCgoY2hhciAqKW91dGJ1Ziwgb3V0bGVuLCAwKTsKK0BAIC01Mzg2LDcgKzU3MDIsOCBAQCBQSFBfRlVOQ1RJT04ob3BlbnNzbF9kZWNyeXB0KQorIAlpZiAoYmFzZTY0X3N0cikgeworIAkJZWZyZWUoYmFzZTY0X3N0cik7CisgCX0KKy0gCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmNpcGhlcl9jdHgpOworKyAJRVZQX0NJUEhFUl9DVFhfY2xlYW51cChjaXBoZXJfY3R4KTsKKysgCUVWUF9DSVBIRVJfQ1RYX2ZyZWUoY2lwaGVyX2N0eCk7CisgfQorIC8qIH19fSAqLworIAorQEAgLTU0MjQsNiArNTc0MSw3IEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX2RoX2NvbXB1dGVfa2V5KQorIAl6dmFsICprZXk7CisgCWNoYXIgKnB1Yl9zdHI7CisgCWludCBwdWJfbGVuOworKwlESCAqZGg7CisgCUVWUF9QS0VZICpwa2V5OworIAlCSUdOVU0gKnB1YjsKKyAJY2hhciAqZGF0YTsKK0BAIC01NDMzLDE0ICs1NzUxLDIxIEBAIFBIUF9GVU5DVElPTihvcGVuc3NsX2RoX2NvbXB1dGVfa2V5KQorIAkJcmV0dXJuOworIAl9CisgCVpFTkRfRkVUQ0hfUkVTT1VSQ0UocGtleSwgRVZQX1BLRVkgKiwgJmtleSwgLTEsICJPcGVuU1NMIGtleSIsIGxlX2tleSk7CistCWlmICghcGtleSB8fCBFVlBfUEtFWV90eXBlKHBrZXktPnR5cGUpICE9IEVWUF9QS0VZX0RIIHx8ICFwa2V5LT5wa2V5LmRoKSB7CisrCWlmIChwa2V5ID09IE5VTEwpIHsKKysJCVJFVFVSTl9GQUxTRTsKKysJfQorKwlpZiAoRVZQX1BLRVlfYmFzZV9pZChwa2V5KSAhPSBFVlBfUEtFWV9ESCkgeworKwkJUkVUVVJOX0ZBTFNFOworKwl9CisrCWRoID0gRVZQX1BLRVlfZ2V0MF9ESChwa2V5KTsKKysJaWYgKGRoID09IE5VTEwpIHsKKyAJCVJFVFVSTl9GQUxTRTsKKyAJfQorIAorIAlwdWIgPSBCTl9iaW4yYm4oKHVuc2lnbmVkIGNoYXIqKXB1Yl9zdHIsIHB1Yl9sZW4sIE5VTEwpOworIAorLQlkYXRhID0gZW1hbGxvYyhESF9zaXplKHBrZXktPnBrZXkuZGgpICsgMSk7CistCWxlbiA9IERIX2NvbXB1dGVfa2V5KCh1bnNpZ25lZCBjaGFyKilkYXRhLCBwdWIsIHBrZXktPnBrZXkuZGgpOworKwlkYXRhID0gZW1hbGxvYyhESF9zaXplKGRoKSArIDEpOworKwlsZW4gPSBESF9jb21wdXRlX2tleSgodW5zaWduZWQgY2hhciopZGF0YSwgcHViLCBkaCk7CisgCisgCWlmIChsZW4gPj0gMCkgeworIAkJZGF0YVtsZW5dID0gMDsKK2RpZmYgLS1naXQgYS9leHQvb3BlbnNzbC94cF9zc2wuYyBiL2V4dC9vcGVuc3NsL3hwX3NzbC5jCitpbmRleCBkNTQ5MDMzLi5jMmQ0NzdjIDEwMDY0NAorLS0tIGEvZXh0L29wZW5zc2wveHBfc3NsLmMKKysrKyBiL2V4dC9vcGVuc3NsL3hwX3NzbC5jCitAQCAtOTM1LDcgKzkzNSw3IEBAIHN0YXRpYyBpbnQgc2V0X2xvY2FsX2NlcnQoU1NMX0NUWCAqY3R4LCBwaHBfc3RyZWFtICpzdHJlYW0gVFNSTUxTX0RDKSAvKiB7e3sgKi8KKyBzdGF0aWMgY29uc3QgU1NMX01FVEhPRCAqcGhwX3NlbGVjdF9jcnlwdG9fbWV0aG9kKGxvbmcgbWV0aG9kX3ZhbHVlLCBpbnQgaXNfY2xpZW50IFRTUk1MU19EQykgLyoge3t7ICovCisgeworIAlpZiAobWV0aG9kX3ZhbHVlID09IFNUUkVBTV9DUllQVE9fTUVUSE9EX1NTTHYyKSB7CistI2lmbmRlZiBPUEVOU1NMX05PX1NTTDIKKysjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19TU0wyKSAmJiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKyAJCXJldHVybiBpc19jbGllbnQgPyBTU0x2Ml9jbGllbnRfbWV0aG9kKCkgOiBTU0x2Ml9zZXJ2ZXJfbWV0aG9kKCk7CisgI2Vsc2UKKyAJCXBocF9lcnJvcl9kb2NyZWYoTlVMTCBUU1JNTFNfQ0MsIEVfV0FSTklORywKK0BAIC0xNTg4LDEyICsxNTg4LDI2IEBAIGludCBwaHBfb3BlbnNzbF9zZXR1cF9jcnlwdG8ocGhwX3N0cmVhbSAqc3RyZWFtLAorIH0KKyAvKiB9fX0gKi8KKyAKKysjZGVmaW5lIFBIUF9TU0xfTUFYX1ZFUlNJT05fTEVOIDMyCisrCisrc3RhdGljIGNoYXIgKnBocF9zc2xfY2lwaGVyX2dldF92ZXJzaW9uKGNvbnN0IFNTTF9DSVBIRVIgKmMsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IG1heF9sZW4pIC8qIHt7eyAqLworK3sKKysJY29uc3QgY2hhciAqdmVyc2lvbiA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oYyk7CisrCXN0cm5jcHkoYnVmZmVyLCB2ZXJzaW9uLCBtYXhfbGVuKTsKKysJaWYgKG1heF9sZW4gPD0gc3RybGVuKHZlcnNpb24pKSB7CisrCQlidWZmZXJbbWF4X2xlbiAtIDFdID0gMDsKKysJfQorKwlyZXR1cm4gYnVmZmVyOworK30KKysvKiB9fX0gKi8KKysKKyBzdGF0aWMgenZhbCAqY2FwdHVyZV9zZXNzaW9uX21ldGEoU1NMICpzc2xfaGFuZGxlKSAvKiB7e3sgKi8KKyB7CisgCXp2YWwgKm1ldGFfYXJyOworIAljaGFyICpwcm90b19zdHI7CisgCWxvbmcgcHJvdG8gPSBTU0xfdmVyc2lvbihzc2xfaGFuZGxlKTsKKyAJY29uc3QgU1NMX0NJUEhFUiAqY2lwaGVyID0gU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2xfaGFuZGxlKTsKKysJY2hhciB2ZXJzaW9uX3N0cltQSFBfU1NMX01BWF9WRVJTSU9OX0xFTl07CisgCisgCXN3aXRjaCAocHJvdG8pIHsKKyAjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAxMDAxTAorQEAgLTE2MTEsNyArMTYyNSw3IEBAIHN0YXRpYyB6dmFsICpjYXB0dXJlX3Nlc3Npb25fbWV0YShTU0wgKnNzbF9oYW5kbGUpIC8qIHt7eyAqLworIAlhZGRfYXNzb2Nfc3RyaW5nKG1ldGFfYXJyLCAicHJvdG9jb2wiLCBwcm90b19zdHIsIDEpOworIAlhZGRfYXNzb2Nfc3RyaW5nKG1ldGFfYXJyLCAiY2lwaGVyX25hbWUiLCAoY2hhciAqKSBTU0xfQ0lQSEVSX2dldF9uYW1lKGNpcGhlciksIDEpOworIAlhZGRfYXNzb2NfbG9uZyhtZXRhX2FyciwgImNpcGhlcl9iaXRzIiwgU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsIE5VTEwpKTsKKy0JYWRkX2Fzc29jX3N0cmluZyhtZXRhX2FyciwgImNpcGhlcl92ZXJzaW9uIiwgU1NMX0NJUEhFUl9nZXRfdmVyc2lvbihjaXBoZXIpLCAxKTsKKysJYWRkX2Fzc29jX3N0cmluZyhtZXRhX2FyciwgImNpcGhlcl92ZXJzaW9uIiwgcGhwX3NzbF9jaXBoZXJfZ2V0X3ZlcnNpb24oY2lwaGVyLCB2ZXJzaW9uX3N0ciwgUEhQX1NTTF9NQVhfVkVSU0lPTl9MRU4pLCAxKTsKKyAKKyAJcmV0dXJuIG1ldGFfYXJyOworIH0KK2RpZmYgLS1naXQgYS9leHQvcGhhci91dGlsLmMgYi9leHQvcGhhci91dGlsLmMKK2luZGV4IDgyOGJlOGYuLjA2ZTRlNTUgMTAwNjQ0CistLS0gYS9leHQvcGhhci91dGlsLmMKKysrKyBiL2V4dC9waGFyL3V0aWwuYworQEAgLTE1MzEsNyArMTUzMSw3IEBAIGludCBwaGFyX3ZlcmlmeV9zaWduYXR1cmUocGhwX3N0cmVhbSAqZnAsIHNpemVfdCBlbmRfb2ZfcGhhciwgcGhwX3VpbnQzMiBzaWdfdHlwCisgCQkJQklPICppbjsKKyAJCQlFVlBfUEtFWSAqa2V5OworIAkJCUVWUF9NRCAqbWR0eXBlID0gKEVWUF9NRCAqKSBFVlBfc2hhMSgpOworLQkJCUVWUF9NRF9DVFggbWRfY3R4OworKwkJCUVWUF9NRF9DVFggKm1kX2N0eDsKKyAjZWxzZQorIAkJCWludCB0ZW1wc2lnOworICNlbmRpZgorQEAgLTE2MDgsNyArMTYwOCw4IEBAIGludCBwaGFyX3ZlcmlmeV9zaWduYXR1cmUocGhwX3N0cmVhbSAqZnAsIHNpemVfdCBlbmRfb2ZfcGhhciwgcGhwX3VpbnQzMiBzaWdfdHlwCisgCQkJCXJldHVybiBGQUlMVVJFOworIAkJCX0KKyAKKy0JCQlFVlBfVmVyaWZ5SW5pdCgmbWRfY3R4LCBtZHR5cGUpOworKwkJCW1kX2N0eCA9IEVWUF9NRF9DVFhfY3JlYXRlKCk7CisrCQkJRVZQX1ZlcmlmeUluaXQobWRfY3R4LCBtZHR5cGUpOworIAkJCXJlYWRfbGVuID0gZW5kX29mX3BoYXI7CisgCisgCQkJaWYgKHJlYWRfbGVuID4gc2l6ZW9mKGJ1ZikpIHsKK0BAIC0xNjIwLDcgKzE2MjEsNyBAQCBpbnQgcGhhcl92ZXJpZnlfc2lnbmF0dXJlKHBocF9zdHJlYW0gKmZwLCBzaXplX3QgZW5kX29mX3BoYXIsIHBocF91aW50MzIgc2lnX3R5cAorIAkJCXBocF9zdHJlYW1fc2VlayhmcCwgMCwgU0VFS19TRVQpOworIAorIAkJCXdoaWxlIChyZWFkX3NpemUgJiYgKGxlbiA9IHBocF9zdHJlYW1fcmVhZChmcCwgKGNoYXIqKWJ1ZiwgcmVhZF9zaXplKSkgPiAwKSB7CistCQkJCUVWUF9WZXJpZnlVcGRhdGUgKCZtZF9jdHgsIGJ1ZiwgbGVuKTsKKysJCQkJRVZQX1ZlcmlmeVVwZGF0ZSAobWRfY3R4LCBidWYsIGxlbik7CisgCQkJCXJlYWRfbGVuIC09IChvZmZfdClsZW47CisgCisgCQkJCWlmIChyZWFkX2xlbiA8IHJlYWRfc2l6ZSkgeworQEAgLTE2MjgsOSArMTYyOSw5IEBAIGludCBwaGFyX3ZlcmlmeV9zaWduYXR1cmUocGhwX3N0cmVhbSAqZnAsIHNpemVfdCBlbmRfb2ZfcGhhciwgcGhwX3VpbnQzMiBzaWdfdHlwCisgCQkJCX0KKyAJCQl9CisgCistCQkJaWYgKEVWUF9WZXJpZnlGaW5hbCgmbWRfY3R4LCAodW5zaWduZWQgY2hhciAqKXNpZywgc2lnX2xlbiwga2V5KSAhPSAxKSB7CisrCQkJaWYgKEVWUF9WZXJpZnlGaW5hbChtZF9jdHgsICh1bnNpZ25lZCBjaGFyICopc2lnLCBzaWdfbGVuLCBrZXkpICE9IDEpIHsKKyAJCQkJLyogMTogc2lnbmF0dXJlIHZlcmlmaWVkLCAwOiBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2gsIC0xOiBmYWlsZWQgc2lnbmF0dXJlIG9wZXJhdGlvbiAqLworLQkJCQlFVlBfTURfQ1RYX2NsZWFudXAoJm1kX2N0eCk7CisrCQkJCUVWUF9NRF9DVFhfZGVzdHJveShtZF9jdHgpOworIAorIAkJCQlpZiAoZXJyb3IpIHsKKyAJCQkJCXNwcHJpbnRmKGVycm9yLCAwLCAiYnJva2VuIG9wZW5zc2wgc2lnbmF0dXJlIik7CitAQCAtMTYzOSw3ICsxNjQwLDcgQEAgaW50IHBoYXJfdmVyaWZ5X3NpZ25hdHVyZShwaHBfc3RyZWFtICpmcCwgc2l6ZV90IGVuZF9vZl9waGFyLCBwaHBfdWludDMyIHNpZ190eXAKKyAJCQkJcmV0dXJuIEZBSUxVUkU7CisgCQkJfQorIAorLQkJCUVWUF9NRF9DVFhfY2xlYW51cCgmbWRfY3R4KTsKKysJCQlFVlBfTURfQ1RYX2Rlc3Ryb3kobWRfY3R4KTsKKyAjZW5kaWYKKyAKKyAJCQkqc2lnbmF0dXJlX2xlbiA9IHBoYXJfaGV4X3N0cigoY29uc3QgY2hhciopc2lnLCBzaWdfbGVuLCBzaWduYXR1cmUgVFNSTUxTX0NDKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvQ1ZFLTIwMTctOTEyMC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL0NWRS0yMDE3LTkxMjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI4ZjI1YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL0NWRS0yMDE3LTkxMjAucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorcGhwOiBwYXRjaCBmb3IgQ1ZFLTIwMTctOTEyMAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTc0NTQ0XQorCitDVkU6IENWRS0yMDE3LTkxMjAKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2V4dC9teXNxbGkvbXlzcWxpX2FwaS5jIGIvZXh0L215c3FsaS9teXNxbGlfYXBpLmMKK2luZGV4IDAzYTM5ZDcuLjdiODg3MzEgMTAwNjQ0CistLS0gYS9leHQvbXlzcWxpL215c3FsaV9hcGkuYworKysrIGIvZXh0L215c3FsaS9teXNxbGlfYXBpLmMKK0BAIC0xOTY1LDcgKzE5NjUsNyBAQCBQSFBfRlVOQ1RJT04obXlzcWxpX3JlYWxfZXNjYXBlX3N0cmluZykgeworIAl9CisgCU1ZU1FMSV9GRVRDSF9SRVNPVVJDRV9DT05OKG15c3FsLCBteXNxbF9saW5rLCBNWVNRTElfU1RBVFVTX1ZBTElEKTsKKyAKKy0JbmV3c3RyID0gemVuZF9zdHJpbmdfYWxsb2MoMiAqIGVzY2FwZXN0cl9sZW4sIDApOworKwluZXdzdHIgPSB6ZW5kX3N0cmluZ19zYWZlX2FsbG9jKDIsIGVzY2FwZXN0cl9sZW4sIDAsIDApOworIAlaU1RSX0xFTihuZXdzdHIpID0gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKG15c3FsLT5teXNxbCwgWlNUUl9WQUwobmV3c3RyKSwgZXNjYXBlc3RyLCBlc2NhcGVzdHJfbGVuKTsKKyAJbmV3c3RyID0gemVuZF9zdHJpbmdfdHJ1bmNhdGUobmV3c3RyLCBaU1RSX0xFTihuZXdzdHIpLCAwKTsKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3YzBkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF81LjYuMzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1yZXF1aXJlIHBocC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjYwMjYzNmQ0NmE2MWMwYWMwNDMyYmJmNWMwNzhmZTQiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9waHA1LWNoYW5nZS1BQ19UUllfUlVOLXRvLUFDX1RSWV9MSU5LLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGhyZWFkLWNoZWNrLXRocmVhZHMtbTQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWxwdGhyZWFkLXRvLWxpbmsucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS14bWwyLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2luY2x1ZGUtdXNlLXBrZ2NvbmZpZy1mb3ItbGlieG1sMi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BocDUtcGVhci1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waHA1LXBoYXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGhwNS0wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTA1YWU1ZjU4NjM1MWYzY2EyOWQwNDRjOTQ4NGQ0NzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWU3OGE3ZTljYTIxZDhlYTM5NGQwMzdjNTVlZmZmZjQ3N2E0OWRiYWUzMWM3NzUzYzU0NzAzNmY1YmQ3M2I5MiIKLQotREVQRU5EUyArPSAibGlibWNyeXB0IgotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtbWNyeXB0PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgIiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzUuNi4zOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmY1MTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNS42LjM4LmJiCkBAIC0wLDAgKzEsMjQgQEAKK3JlcXVpcmUgcGhwLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjAyNjM2ZDQ2YTYxYzBhYzA0MzJiYmY1YzA3OGZlNCIKKworU1JDX1VSSSArPSAiZmlsZTovL3BocDUtY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3B0aHJlYWQtY2hlY2stdGhyZWFkcy1tNC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbHB0aHJlYWQtdG8tbGluay5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYWNpbmNsdWRlLXhtbDItY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjaW5jbHVkZS11c2UtcGtnY29uZmlnLWZvci1saWJ4bWwyLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1QSFAtNS42LUxpYlNTTC0xLjEtY29tcGF0aWJpbGl0eS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGhwNS1wZWFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BocDUtcGhhci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waHA1LTAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1Yjk4YWEwNjY1NjdlY2E4ZTU3MzhiOGVmNGEzNTQ1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjViMjMxYmJkZDYzYmU0NDM5ZWY1Y2VkOTY1Y2ZkNjNlNjI5ODM0MjlkYmQ0ZGZjZmI0OTk4MTU5M2ViYzAzIgorCitERVBFTkRTICs9ICJsaWJtY3J5cHQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1tY3J5cHQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0gXAorICAgICAgICAgICAgICAgICAiIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4yLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYzY0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjIuMTAuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSBwaHAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY3ZTM2OWJjOGQxZjJlNjQxMjM2YjgwMDIwMzlhNmEyIgorCitTUkNfVVJJICs9ICJmaWxlOi8vY2hhbmdlLUFDX1RSWV9SVU4tdG8tQUNfVFJZX0xJTksucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWVycm9yLWNhdXNlZC1ieS1hLW5ldy12YXJpYWJsZS1pcy1kZWNsYXJlZC1hZnRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTEyMC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGVhci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waGFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwY2U4ZmY2MTViZmI5ZGU3YTg5YmFiOGQ3NDJjMTFjMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWI2MTI5YTA5MjFhMTYzNmIwN2RhOWJjNTk4YTg3NjY2OWU0NWE0NjJjZWY0YjU4NDRmYzI2ODYyZGJkYTlkIgorCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtcGRvLW15c3FsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L215c3FsX2NvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAsLS13aXRob3V0LW15c3FsaSAtLXdpdGhvdXQtcGRvLW15c3FsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICxteXNxbDUiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzciwtLXdpdGgtdmFsZ3JpbmQ9bm8sdmFsZ3JpbmQiCisKK0ZJTEVTXyR7UE59LWZwbSArPSAiJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNTZjZDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy4yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1yZXF1aXJlIHBocC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjdlMzY5YmM4ZDFmMmU2NDEyMzZiODAwMjAzOWE2YTIiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jaGFuZ2UtQUNfVFJZX1JVTi10by1BQ19UUllfTElOSy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZXJyb3ItY2F1c2VkLWJ5LWEtbmV3LXZhcmlhYmxlLWlzLWRlY2xhcmVkLWFmdGVyLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wZWFyLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BoYXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRiNTY5OGM4YzZjMmI5Y2JmZjNhNTcwNmRhNjdiYjBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjODE2NzVhOTZhZjRkZDE4ZDhmZmMwMmYyNmEzNmM2MjJhYmFkZjg2YWY3ZWNmZWE3YmNkZThkM2M5NmQ1YTMiCi0KLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbGk9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbXlzcWxfY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tbXlzcWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbXlzcWxfY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKLQotRklMRVNfJHtQTn0tZnBtICs9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uZC93d3cuY29uZi5kZWZhdWx0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxZTZlNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgcHJvdG9idWYtYywgYSBDIGltcGxlbWVudGF0aW9uIG9mIHRoZSBHb29nbGUgUHJvdG9jb2wgQnVmZmVycyBkYXRhIFwKLXNlcmlhbGl6YXRpb24gZm9ybWF0LiBJdCBpbmNsdWRlcyBsaWJwcm90b2J1Zi1jLCBhIHB1cmUgQyBsaWJyYXJ5IHRoYXQgXAotaW1wbGVtZW50cyBwcm90b2J1ZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcsIGFuZCBwcm90b2MtYywgYSBjb2RlIGdlbmVyYXRvciB0aGF0IFwKLWNvbnZlcnRzIFByb3RvY29sIEJ1ZmZlciAucHJvdG8gZmlsZXMgdG8gQyBkZXNjcmlwdG9yIGNvZGUsIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBwcm90b2MuIHByb3RvYnVmLWMgZm9ybWVybHkgaW5jbHVkZWQgYW4gUlBDIGltcGxlbWVudGF0aW9uOyB0aGF0IGNvZGUgXAotaGFzIGJlZW4gc3BsaXQgb3V0IGludG8gdGhlIHByb3RvYnVmLWMtcnBjIHByb2plY3QuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Byb3RvYnVmLWMvcHJvdG9idWYtYyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotCi1ERVBFTkRTID0gInByb3RvYnVmLW5hdGl2ZSBwcm90b2J1ZiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICJwcm90b2J1Zi1jb21waWxlciIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNiOTAxMTY4NzE1ZjQ3ODJhMmIwNmMzZGRhZWZhNTU4IgotCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImRhYzFhNjVmZWFjNGFkNzJmNjEyYWFiOTlmNDg3MDU2ZmJjZjVjMWEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZjAzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCitERVNDUklQVElPTiA9ICJUaGlzIGlzIHByb3RvYnVmLWMsIGEgQyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgR29vZ2xlIFByb3RvY29sIEJ1ZmZlcnMgZGF0YSBcCitzZXJpYWxpemF0aW9uIGZvcm1hdC4gSXQgaW5jbHVkZXMgbGlicHJvdG9idWYtYywgYSBwdXJlIEMgbGlicmFyeSB0aGF0IFwKK2ltcGxlbWVudHMgcHJvdG9idWYgZW5jb2RpbmcgYW5kIGRlY29kaW5nLCBhbmQgcHJvdG9jLWMsIGEgY29kZSBnZW5lcmF0b3IgdGhhdCBcCitjb252ZXJ0cyBQcm90b2NvbCBCdWZmZXIgLnByb3RvIGZpbGVzIHRvIEMgZGVzY3JpcHRvciBjb2RlLCBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgcHJvdG9jLiBwcm90b2J1Zi1jIGZvcm1lcmx5IGluY2x1ZGVkIGFuIFJQQyBpbXBsZW1lbnRhdGlvbjsgdGhhdCBjb2RlIFwKK2hhcyBiZWVuIHNwbGl0IG91dCBpbnRvIHRoZSBwcm90b2J1Zi1jLXJwYyBwcm9qZWN0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wcm90b2J1Zi1jL3Byb3RvYnVmLWMiCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNiOTAxMTY4NzE1ZjQ3ODJhMmIwNmMzZGRhZWZhNTU4IgorCitERVBFTkRTID0gInByb3RvYnVmLW5hdGl2ZSBwcm90b2J1ZiIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIyNjk3NzFiNGI0NWQzYWJhMDRlNTk1NjlmNTM2MDAwMDNkYjhkOWZmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworI21ha2Ugc3VyZSBjKysxMSBpcyB1c2VkCitDWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKK0JVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCisKK0ZJTEVTXyR7UE59LWNvbXBpbGVyID0gIiR7YmluZGlyfSIKKworUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAicHJvdG9idWYtY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYvMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLzAwMDEtcHJvdG9idWYtZml4LWNvbmZpZ3VyZS1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmY3YTRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLzAwMDEtcHJvdG9idWYtZml4LWNvbmZpZ3VyZS1lcnJvci5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDUyOTU5ZThlMDFlMzkxMzlkMThmNzUyZTk3MjgzZTQ1YjRiN2E0MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxOCBKdWwgMjAxOCAxNzo1MjozNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBwcm90b2J1ZjogZml4IGNvbmZpZ3VyZSBlcnJvcgorCitmaXggYmVsb3cgZXJyb3I6CitnbnUtY29uZmlnaXplOiAnY29uZmlndXJlLmFjJyBvciAnY29uZmlndXJlLmluJyBpcyByZXF1aXJlZAorCit0aGlyZF9wYXJ0eS9nb29nbGV0ZXN0IGlzIGdpdCBzdWJtb2R1bGUgb2YgcHJvdG9idWYuIEFib3ZlIGVycm9yCitjYXVzZWQgYnkgbWlzc2luZyBzdWJtb2R1bGUgZ29vZ2xldGVzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGFlYzEwY2YuLjdmYmU1N2QgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIxNCw3ICsyMTQsNiBAQCBBWF9DWFhfQ09NUElMRV9TVERDWFgoWzExXSwgW25vZXh0XSwgW21hbmRhdG9yeV0pCisgIyAgIHRvby4KKyBleHBvcnQgQ0ZMQUdTCisgZXhwb3J0IENYWEZMQUdTCistQUNfQ09ORklHX1NVQkRJUlMoW3RoaXJkX3BhcnR5L2dvb2dsZXRlc3RdKQorIAorIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUgc3JjL01ha2VmaWxlIGJlbmNobWFya3MvTWFrZWZpbGUgY29uZm9ybWFuY2UvTWFrZWZpbGUgcHJvdG9idWYucGMgcHJvdG9idWYtbGl0ZS5wY10pCisgQUNfT1VUUFVUCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDczZGZhZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1TVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCi1ERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIGFyZSBhIHdheSBvZiBlbmNvZGluZyBzdHJ1Y3R1cmVkIGRhdGEgaW4gYW4gXAotZWZmaWNpZW50IHlldCBleHRlbnNpYmxlIGZvcm1hdC4gR29vZ2xlIHVzZXMgUHJvdG9jb2wgQnVmZmVycyBmb3IgYWxtb3N0IFwKLWFsbCBvZiBpdHMgaW50ZXJuYWwgUlBDIHByb3RvY29scyBhbmQgZmlsZSBmb3JtYXRzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKLQotREVQRU5EUyA9ICJ6bGliIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ICA9ICIgcHJvdG9idWYtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0tY29tcGlsZXIgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gIiR7UE59LWNvbXBpbGVyIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uLXByb3RvYnVmJywgJycsIGQpfSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzU5NTNjNzUyZWZjOTI5OWIxODRmOTFiZWY1NDAwOTUiCi0KLVNSQ1JFViA9ICIxMDZmZmMwNGJlMWFiZjNmZjMzOTlmNTRjY2YxNDk4MTViMjg3ZGQ5IgotCi1QViA9ICIzLjUuMStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuNS54IFwKLQkgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwiCi0KLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aC1wcm90b2M9ZWNobyIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotVEVTVF9TUkNfRElSPSJleGFtcGxlcyIKLUxBTkdfU1VQUE9SVCA9ICJjcHAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbicsICcnLCBkKX0iCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JIyBNb2RpZnkgbWFrZWZpbGUgdG8gdXNlIHRoZSBjcm9zcy1jb21waWxlcgotCXNlZCAtZSAic3xjKyt8JHtDWFh9IFwkKExERkxBR1MpfGciIC1pICIke1N9LyR7VEVTVF9TUkNfRElSfS9NYWtlZmlsZSIKLQotCW1rZGlyIC1wICIke0J9LyR7VEVTVF9TUkNfRElSfSIKLQotCSMgQWRkIHRoZSBsb2NhdGlvbiBvZiB0aGUgY3Jvc3MtY29tcGlsZWQgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzCi0JIyB3aGljaCBoYXZlbid0IGJlZW4gaW5zdGFsbGVkIHlldC4KLQljcCAiJHtCfS9wcm90b2J1Zi5wYyIgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCXNlZCAtZSAnc3xsaWJkaXI9fGxpYmRpcj0ke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9fCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgotCXNlZCAtZSAnc3xDZmxhZ3M6fENmbGFnczogLUkke1N9L3NyY3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8TGliczp8TGliczogLUwke0J9L3NyYy8ubGlic3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke0J9LyR7VEVTVF9TUkNfRElSfSIKLQotCSMgU2F2ZSB0aGUgcGtnY2ZnIHN5c3Jvb3QgdmFyaWFibGUsIGFuZCB1cGRhdGUgaXQgdG8gbm90aGluZyBzbwotCSMgdGhhdCBpdCBkb2Vzbid0IGFwcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgYmVnaW5uaW5nIG9mIHBhdGhzLgotCSMgVGhlIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcmVuJ3QgaW5zdGFsbGVkIHRvIHRoZSB0YXJnZXQKLQkjIHN5c3RlbSB5ZXQuICBTbyB0aGUgYWJzb2x1dGUgcGF0aHMgd2VyZSBzcGVjaWZpZWQgYWJvdmUuCi0Jc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0JZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9Ci0KLQkjIENvbXBpbGUgdGhlIHRlc3RzCi0JZm9yIGxhbmcgaW4gJHtMQU5HX1NVUFBPUlR9OyBkbwotCQlvZV9ydW5tYWtlIC1DICIke1N9LyR7VEVTVF9TUkNfRElSfSIgJHtsYW5nfQotCWRvbmUKLQotCSMgUmVzdG9yZSB0aGUgcGtnY29uZmlnIHN5c3Jvb3QgdmFyaWFibGUKLQlleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0kc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JbG9jYWwgb2xkZGlyPWBwd2RgCi0KLQljZCAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iCi0JaW5zdGFsbCAtZCAiJHtEfS8ke1BURVNUX1BBVEh9IgotCWZvciBpIGluIGFkZF9wZXJzb24qIGxpc3RfcGVvcGxlKjsgZG8KLQkJaWYgWyAteCAiJGkiIF07IHRoZW4KLQkJCWluc3RhbGwgIiRpIiAiJHtEfS8ke1BURVNUX1BBVEh9IgotCQlmaQotCWRvbmUKLQljcCAiJHtTfS8ke1RFU1RfU1JDX0RJUn0vYWRkcmVzc2Jvb2tfcGIyLnB5IiAiJHtEfS8ke1BURVNUX1BBVEh9IgotCWNkICIkb2xkZGlyIgotfQotCi1GSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYyR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWxpdGUgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgotCi1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y3MmQ5YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjYuMS5iYgpAQCAtMCwwICsxLDkzIEBACitTVU1NQVJZID0gIlByb3RvY29sIEJ1ZmZlcnMgLSBzdHJ1Y3R1cmVkIGRhdGEgc2VyaWFsaXNhdGlvbiBtZWNoYW5pc20iCitERVNDUklQVElPTiA9ICJQcm90b2NvbCBCdWZmZXJzIGFyZSBhIHdheSBvZiBlbmNvZGluZyBzdHJ1Y3R1cmVkIGRhdGEgaW4gYW4gXAorZWZmaWNpZW50IHlldCBleHRlbnNpYmxlIGZvcm1hdC4gR29vZ2xlIHVzZXMgUHJvdG9jb2wgQnVmZmVycyBmb3IgYWxtb3N0IFwKK2FsbCBvZiBpdHMgaW50ZXJuYWwgUlBDIHByb3RvY29scyBhbmQgZmlsZSBmb3JtYXRzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYiCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM3YjU3NjJlMDdmMGFmOGM3NGNlODBhOGJkYTQyNjZiIgorCitERVBFTkRTID0gInpsaWIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHByb3RvYnVmLW5hdGl2ZSIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjQ4Y2IxOGU1YzQxOWRkZDIzZDliYWRjZmU0ZTlkZjdiZGUxOTc5YjIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvcHJvdG9idWYuZ2l0O2JyYW5jaD0zLjYueCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIFwKKyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCIKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHJvdG9jPWVjaG8iCisKK1RFU1RfU1JDX0RJUiA9ICJleGFtcGxlcyIKK0xBTkdfU1VQUE9SVCA9ICJjcHAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbicsICcnLCBkKX0iCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJIyBNb2RpZnkgbWFrZWZpbGUgdG8gdXNlIHRoZSBjcm9zcy1jb21waWxlcgorCXNlZCAtZSAic3xjKyt8JHtDWFh9IFwkKExERkxBR1MpfGciIC1pICIke1N9LyR7VEVTVF9TUkNfRElSfS9NYWtlZmlsZSIKKworCW1rZGlyIC1wICIke0J9LyR7VEVTVF9TUkNfRElSfSIKKworCSMgQWRkIHRoZSBsb2NhdGlvbiBvZiB0aGUgY3Jvc3MtY29tcGlsZWQgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzCisJIyB3aGljaCBoYXZlbid0IGJlZW4gaW5zdGFsbGVkIHlldC4KKwljcCAiJHtCfS9wcm90b2J1Zi5wYyIgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgorCXNlZCAtZSAnc3xsaWJkaXI9fGxpYmRpcj0ke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9fCcgLWkgIiR7Qn0vJHtURVNUX1NSQ19ESVJ9L3Byb3RvYnVmLnBjIgorCXNlZCAtZSAnc3xDZmxhZ3M6fENmbGFnczogLUkke1N9L3NyY3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8TGliczp8TGliczogLUwke0J9L3NyYy8ubGlic3wnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIke0J9LyR7VEVTVF9TUkNfRElSfSIKKworCSMgU2F2ZSB0aGUgcGtnY2ZnIHN5c3Jvb3QgdmFyaWFibGUsIGFuZCB1cGRhdGUgaXQgdG8gbm90aGluZyBzbworCSMgdGhhdCBpdCBkb2Vzbid0IGFwcGVuZCB0aGUgc3lzcm9vdCB0byB0aGUgYmVnaW5uaW5nIG9mIHBhdGhzLgorCSMgVGhlIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcmVuJ3QgaW5zdGFsbGVkIHRvIHRoZSB0YXJnZXQKKwkjIHN5c3RlbSB5ZXQuICBTbyB0aGUgYWJzb2x1dGUgcGF0aHMgd2VyZSBzcGVjaWZpZWQgYWJvdmUuCisJc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSCisJZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9CisKKwkjIENvbXBpbGUgdGhlIHRlc3RzCisJZm9yIGxhbmcgaW4gJHtMQU5HX1NVUFBPUlR9OyBkbworCQlvZV9ydW5tYWtlIC1DICIke1N9LyR7VEVTVF9TUkNfRElSfSIgJHtsYW5nfQorCWRvbmUKKworCSMgUmVzdG9yZSB0aGUgcGtnY29uZmlnIHN5c3Jvb3QgdmFyaWFibGUKKwlleHBvcnQgUEtHX0NPTkZJR19TWVNST09UX0RJUj0kc2F2ZV9wa2dfY29uZmlnX3N5c3Jvb3RfZGlyCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJbG9jYWwgb2xkZGlyPWBwd2RgCisKKwljZCAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iCisJaW5zdGFsbCAtZCAiJHtEfS8ke1BURVNUX1BBVEh9IgorCWZvciBpIGluIGFkZF9wZXJzb24qIGxpc3RfcGVvcGxlKjsgZG8KKwkJaWYgWyAteCAiJGkiIF07IHRoZW4KKwkJCWluc3RhbGwgIiRpIiAiJHtEfS8ke1BURVNUX1BBVEh9IgorCQlmaQorCWRvbmUKKwljcCAiJHtTfS8ke1RFU1RfU1JDX0RJUn0vYWRkcmVzc2Jvb2tfcGIyLnB5IiAiJHtEfS8ke1BURVNUX1BBVEh9IgorCWNkICIkb2xkZGlyIgorfQorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1jb21waWxlciAke1BOfS1saXRlIgorCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9L2xpYnByb3RvYyR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWxpdGUgPSAiJHtsaWJkaXJ9L2xpYnByb3RvYnVmLWxpdGUke1NPTElCU30iCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbi1wcm90b2J1ZicsICcnLCBkKX0iCisKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworTERGTEFHU19hcHBlbmRfYXJtID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX21pcHMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9taXBzZWwgPSAiIC1sYXRvbWljIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGlzdHV0aWxzLWV4dHJhLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGlzdHV0aWxzLWV4dHJhLmJiCmluZGV4IDU2ZGQzM2QuLmViODRmNzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRpc3R1dGlscy1leHRyYS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kaXN0dXRpbHMtZXh0cmEuYmIKQEAgLTIsOCArMiw2IEBACiAKIGluaGVyaXQgc2V0dXB0b29scwogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCi0KIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICBweXRob24tZGlzdHV0aWxzIFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjI4LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjY1YmExLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Z29iamVjdF8zLjI4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weWd0ay5vcmcvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIyLjciCi1QWVRIT05fUE4gPSAicHl0aG9uIgotCi1ERVBFTkRTICs9ICJnbm9tZS1jb21tb24tbmF0aXZlIHB5dGhvbiBnbGliLTIuMCIKLQotU1JDTkFNRT0icHlnb2JqZWN0IgotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMjlkNjllZGI2M2FlMWY1NTVhZmViMTlmOTBiOTk5NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MmI0N2IyNjFiNDVhZWRmYzc3ZTAyZTNjOTBhMDFjZDc0ZDZmODZjMzI3M2MxODYwYTA1NGQ1MzFkNjA2ZTVhIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY2Fpcm8gLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc2V0dXB0b29scyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUmVtb3ZlIGZpbGVzIHRoYXQgY2xhc2ggd2l0aCBweXRob24zLXB5Z29iamVjdDsgdGhlaXIgY29udGVudCBpcyBzYW1lCi0gICAgcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L3B5Z29iamVjdC0zLjAvL3B5Z29iamVjdC5oICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4yOC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDQ0ZmJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMjguMy5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weWd0ay5vcmcvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BZVEhPTl9CQVNFVkVSU0lPTiA9ICIyLjciCitQWVRIT05fUE4gPSAicHl0aG9uIgorCitERVBFTkRTICs9ICJnbm9tZS1jb21tb24tbmF0aXZlIHB5dGhvbiBnbGliLTIuMCIKKworU1JDTkFNRT0icHlnb2JqZWN0IgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYmFjNjNjODZiYjk2M2FhNDAxZjk3ODU5NDY0YWE5MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQzZTIxMDE1ZDA2ZTAwNDgyZWE2NjVmYzE3MzNiNzdlNzU0YTZhYjY1NmE1ZGI1ZDdmN2JmYWYzMWFkMGIwIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtY2Fpcm8gLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tc2V0dXB0b29scyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUmVtb3ZlIGZpbGVzIHRoYXQgY2xhc2ggd2l0aCBweXRob24zLXB5Z29iamVjdDsgdGhlaXIgY29udGVudCBpcyBzYW1lCisgICAgcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L3B5Z29iamVjdC0zLjAvL3B5Z29iamVjdC5oICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRpc3R1dGlscy1leHRyYS5iYgppbmRleCBhZjI0MmI4Li41ODM2YjA5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEuYmIKQEAgLTQsOCArNCw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9weXRob24tZGlzdHV0aWxzLWV4dHJhLSR7UFZ9IgogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLWluc3RhbGwtbGliPSR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCi0KIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICBweXRob24zLXNldHVwdG9vbHMgXAogIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3JhcGlkanNvbi9yYXBpZGpzb25fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3JhcGlkanNvbi9yYXBpZGpzb25fZ2l0LmJiCmluZGV4IDhhYjM1ZDIuLmM5MGVhYjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9yYXBpZGpzb24vcmFwaWRqc29uX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcmFwaWRqc29uL3JhcGlkanNvbl9naXQuYmIKQEAgLTQsMTEgKzQsOSBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWNlbnNlLnR4dDttZDU9YmEwNGFhOGY2NWRlMTM5NmE3ZTU5ZDFkNzQ2YzIxMjUiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9taWxveWlwL3JhcGlkanNvbi5naXQ7bm9icmFuY2g9MSBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtbWFyY2gtbmF0aXZlLWZyb20tQ01BS0VfQ1hYX0ZMQUdTLnBhdGNoIFwKLSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9taWxveWlwL3JhcGlkanNvbi5naXQ7bm9icmFuY2g9MSIKIAotU1JDUkVWID0gImU1NjM1ZmIyN2ZlYWI3ZjZlOGQ3YjkxNmFhMjBhZDc5OTA0NWE2NDEiCitTUkNSRVYgPSAiNmE5MDVmOTMxMWY4MmQzMDZkYTc3YmQ5NjNlYzVhYTVkYTA3ZGE5YyIKIAogUFYgPSAiMS4xLjArZ2l0JHtTUkNQVn0iCiAKQEAgLTIwLDcgKzE4LDYgQEAKIAogIyBSYXBpZEpTT04gaXMgYSBoZWFkZXItb25seSBDKysgbGlicmFyeSwgc28gdGhlIG1haW4gcGFja2FnZSB3aWxsIGJlIGVtcHR5LgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3OTU0NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwLmluYwpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlNJUCBpcyBhIEMrKy9QeXRob24gV3JhcHBlciBHZW5lcmF0b3IiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnJpdmVyYmFua2NvbXB1dGluZy5jby51ay9zaXAiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLUdQTDI7bWQ1PWU5MTM1NWQ4YTZmOGJkOGY3YzY5OWQ2Mjg2M2M3MzAzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3B5cXQvc2lwL3NpcC0ke1BWfS9zaXAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTEyNGNiODk3ODc0MjY4NTc0N2E1NDE1MTc5YTk4OTAiICAgICAgICAgICAgICAgICAgICAgICAgICAgCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTM1M2E3MDU2NTk5YmY1ZmJkNWQzZmY5ODQyYTZhYjJlYTNjZjRlMDMwNGEwZjkyNWVjNTg2MjkwN2MwZDE1ZSIKKworUyA9ICIke1dPUktESVJ9L3NpcC0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBlY2hvICJweV9wbGF0Zm9ybSA9IGxpbnV4IiA+IHNpcC5jZmcKKyAgICBlY2hvICJweV9pbmNfZGlyID0gJShzeXNyb290KS8ke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfYmluX2RpciA9ICR7RH0vJHtiaW5kaXJ9IiA+PiBzaXAuY2ZnCisgICAgZWNobyAic2lwX2luY19kaXIgPSAke0R9LyR7aW5jbHVkZWRpcn0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfbW9kdWxlX2RpciA9ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0vc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZworICAgICR7UFlUSE9OfSBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zaXAtbW9kdWxlIFB5UXQ1LnNpcCAtLXN5c3Jvb3QgJHtTVEFHSU5HX0RJUl9IT1NUfSBDQz0iJHtDQ30iIENYWD0iJHtDWFh9IiBMSU5LPSIke0NYWH0iIFNUUklQPSIiIExJTktfU0hMSUI9IiR7Q1hYfSIgQ0ZMQUdTPSIke0NGTEFHU30iIENYWEZMQUdTPSIke0NYWEZMQUdTfSIgTEZMQUdTPSIke0xERkxBR1N9IgorfQorZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGVjaG8gInB5X3BsYXRmb3JtID0gbGludXgiID4gc2lwLmNmZworICAgIGVjaG8gInB5X2luY19kaXIgPSAke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfYmluX2RpciA9ICR7RH0vJHtiaW5kaXJ9IiA+PiBzaXAuY2ZnCisgICAgZWNobyAic2lwX2luY19kaXIgPSAke0R9LyR7aW5jbHVkZWRpcn0iID4+IHNpcC5jZmcKKyAgICBlY2hvICJzaXBfbW9kdWxlX2RpciA9ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0vc2l0ZS1wYWNrYWdlcyIgPj4gc2lwLmNmZworICAgIGVjaG8gInNpcF9zaXBfZGlyID0gJHtEfS8ke2RhdGFkaXJ9L3NpcCIgPj4gc2lwLmNmZworICAgICR7UFlUSE9OfSBjb25maWd1cmUucHkgLS1jb25maWd1cmF0aW9uIHNpcC5jZmcgLS1zaXAtbW9kdWxlIFB5UXQ1LnNpcCAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9OQVRJVkV9Cit9Citkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXAzXzQuMTkuMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcDNfNC4xOS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzE1YmMyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXAzXzQuMTkuMTMuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBzaXAuaW5jCisKK0RFUEVORFMgPSAicHl0aG9uMyIKKworaW5oZXJpdCBweXRob24zLWRpciBweXRob24zbmF0aXZlCisKK1BBQ0tBR0VTICs9ICJweXRob24zLXNpcDMiCisKK0ZJTEVTX3B5dGhvbjMtc2lwMyA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0vc2l0ZS1wYWNrYWdlcy8iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS4xMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RhMTViOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTMuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBzaXAuaW5jCisKK0RFUEVORFMgPSAicHl0aG9uIgorCitpbmhlcml0IHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlCisKK1BBQ0tBR0VTICs9ICJweXRob24tc2lwIgorCitGSUxFU19weXRob24tc2lwID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3NpcC9zaXBfNC4xOS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTk0NGIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiU0lQIGlzIGEgQysrL1B5dGhvbiBXcmFwcGVyIEdlbmVyYXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucml2ZXJiYW5rY29tcHV0aW5nLmNvLnVrL3NpcCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtR1BMMjttZDU9ZTkxMzU1ZDhhNmY4YmQ4ZjdjNjk5ZDYyODYzYzczMDMiCi0KLWluaGVyaXQgcHl0aG9uLWRpcgotCi1ERVBFTkRTID0gInB5dGhvbiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9weXF0L3NpcC9zaXAtJHtQVn0vc2lwLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwNjI1ZmIyMDM0N2Q0ZmYxYjVkYTU1MTUzOWJlMDcyNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWFmN2EyZWE3ZDRkMzhhNTZkZDZkMjUwNjU3NDQ2NGJkZGY3Y2YyODRjOTYwODAxNjc5OTQyMzc3YzI5N2JjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUEFDS0FHRVMgKz0gInB5dGhvbi1zaXAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBlY2hvICJweV9wbGF0Zm9ybSA9IGxpbnV4IiA+IHNpcC5jZmcKLSAgICBlY2hvICJweV9pbmNfZGlyID0gJShzeXNyb290KS8ke2luY2x1ZGVkaXJ9L3B5dGhvbiUocHlfbWFqb3IpLiUocHlfbWlub3IpIiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX2Jpbl9kaXIgPSAke0R9LyR7YmluZGlyfSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9pbmNfZGlyID0gJHtEfS8ke2luY2x1ZGVkaXJ9IiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX21vZHVsZV9kaXIgPSAke0R9LyR7bGliZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKS9zaXRlLXBhY2thZ2VzIiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX3NpcF9kaXIgPSAke0R9LyR7ZGF0YWRpcn0vc2lwIiA+PiBzaXAuY2ZnCi0gICAgcHl0aG9uIGNvbmZpZ3VyZS5weSAtLWNvbmZpZ3VyYXRpb24gc2lwLmNmZyAtLXN5c3Jvb3QgJHtTVEFHSU5HX0RJUl9IT1NUfSBDQz0iJHtDQ30iIENYWD0iJHtDWFh9IiBMSU5LPSIke0NYWH0iIFNUUklQPSIiIExJTktfU0hMSUI9IiR7Q1hYfSIgQ0ZMQUdTPSIke0NGTEFHU30iIENYWEZMQUdTPSIke0NYWEZMQUdTfSIgTEZMQUdTPSIke0xERkxBR1N9IgotfQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGVjaG8gInB5X3BsYXRmb3JtID0gbGludXgiID4gc2lwLmNmZwotICAgIGVjaG8gInB5X2luY19kaXIgPSAke2luY2x1ZGVkaXJ9L3B5dGhvbiUocHlfbWFqb3IpLiUocHlfbWlub3IpIiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX2Jpbl9kaXIgPSAke0R9LyR7YmluZGlyfSIgPj4gc2lwLmNmZwotICAgIGVjaG8gInNpcF9pbmNfZGlyID0gJHtEfS8ke2luY2x1ZGVkaXJ9IiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX21vZHVsZV9kaXIgPSAke0R9LyR7bGliZGlyfS9weXRob24lKHB5X21ham9yKS4lKHB5X21pbm9yKS9zaXRlLXBhY2thZ2VzIiA+PiBzaXAuY2ZnCi0gICAgZWNobyAic2lwX3NpcF9kaXIgPSAke0R9LyR7ZGF0YWRpcn0vc2lwIiA+PiBzaXAuY2ZnCi0gICAgcHl0aG9uIGNvbmZpZ3VyZS5weSAtLWNvbmZpZ3VyYXRpb24gc2lwLmNmZyAtLXN5c3Jvb3QgJHtTVEFHSU5HX0RJUl9OQVRJVkV9Ci19Ci1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotfQotCi1GSUxFU19weXRob24tc2lwID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2xhcC90Y2xhcF8xLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2xhcC90Y2xhcF8xLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VhZGJlNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsYXAvdGNsYXBfMS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlRlbXBsYXRpemVkIEMrKyBDb21tYW5kIExpbmUgUGFyc2VyIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbGFwLnNvdXJjZWZvcmdlLm5ldC8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4YWIwZmYxMzRiY2M1ODRkMGU2YjViOWY4NzMyNDUzIgotCi1TUkNSRVYgPSAiMzYyN2Q5NDAyZTUyOTc3MGRmOWIwZWRmMmFhOGMwZTBkNmM2YmI0MSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvdGNsYXAvY29kZSBcCi0gICAgZmlsZTovL01ha2VmaWxlLmFtLWRpc2FibGUtZG9jcy5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1pbmhlcml0IGF1dG90b29scwotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsYXAvdGNsYXBfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsYXAvdGNsYXBfMS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhOTQwOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2xhcC90Y2xhcF8xLjIuMi5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIlRlbXBsYXRpemVkIEMrKyBDb21tYW5kIExpbmUgUGFyc2VyIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbGFwLnNvdXJjZWZvcmdlLm5ldC8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBjYThiOWM1YzU0NDVjZmE3YWY3ZTc4ZmQyN2U2MGVkIgorCitTUkNSRVYgPSAiNzVmNDQwYmNhYzEyNzZjODQ3ZjUzNTFlMTQyMTZmNmU5MWRlZjQ0ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvdGNsYXAvY29kZSBcCisgICAgZmlsZTovL01ha2VmaWxlLmFtLWRpc2FibGUtZG9jcy5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitpbmhlcml0IGF1dG90b29scworCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGtfOC42LjguYmIKaW5kZXggMTNkYzRkNy4uNGUzODUyNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RrXzguNi44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90a184LjYuOC5iYgpAQCAtNDIsMjIgKzQyLDE0IEBACiBFWFRSQV9PRUNPTkYgPSAiXAogICAgIC0tZW5hYmxlLXRocmVhZHMgXAogICAgIC0td2l0aC14IFwKLSAgICAtLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJ9L2Nyb3Nzc2NyaXB0cyBcCiAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKICIKLQorZXhwb3J0IFRLX0xJQlJBUlk9JyR7bGliZGlyfS90ayR7VkVSfScKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGxuIC1zZiBsaWJ0ayR7VkVSfS5zbyAke0R9JHtsaWJkaXJ9L2xpYnRrJHtWRVJ9LnNvLjAKICAgICBvZV9saWJpbnN0YWxsIC1zbyBsaWJ0ayR7VkVSfSAke0R9JHtsaWJkaXJ9CiAgICAgbG4gLXNmIHdpc2gke1ZFUn0gJHtEfSR7YmluZGlyfS93aXNoCi0KLSAgICAjIEV2ZW4gYWZ0ZXIgcGFzc2luZyBsaWJkaXI9JHtsaWJkaXJ9IGF0IGNvbmZpZywgc29tZSBpbmNvcnJlY3QgZGlycyBhcmUgc3RpbGwgZ2VuZXJhdGVkIGZvciB0aGUgbXVsdGlsaWIgYnVpbGQKLSAgICBpZiBbICIkbGliZGlyIiAhPSAiL3Vzci9saWIiIF07IHRoZW4KLSAgICAgICAgIyBNb3ZlIGZpbGVzIHRvIGNvcnJlY3QgbGlicmFyeSBkaXJlY3RvcnkKLSAgICAgICAgbXYgJHtEfS91c3IvbGliL3RrJHtWRVJ9LyogJHtEfS8ke2xpYmRpcn0vdGske1ZFUn0vCi0gICAgICAgICMgUmVtb3ZlIHVubmVlZGVkL2luY29ycmVjdCBkaXIgKCd1c3IvbGliLycpCi0gICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIKLSAgICBmaQogfQogCiBQQUNLQUdFQ09ORklHID8/PSAieGZ0IgpAQCAtNzMsNyArNjUsNyBAQAogUkRFUEVORFNfJHtQTn0gKz0gInRrLWxpYiIKIFJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiAjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKIFNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZS8wMDAxLWluY2x1ZGUtZGxmY24uaC1mb3ItUlRMRF9ERUZBVUxULnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZS8wMDAxLWluY2x1ZGUtZGxmY24uaC1mb3ItUlRMRF9ERUZBVUxULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlN2FhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlLzAwMDEtaW5jbHVkZS1kbGZjbi5oLWZvci1SVExEX0RFRkFVTFQucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBjZGY3ZjJlMzk0ZmNmYjkzYTYxZjUwOWFlMzM4OGYyOTU0MGE2YjM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOCBTZXAgMjAxOCAxMTo1NjoxMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGRsZmNuLmggZm9yIFJUTERfREVGQVVMVAorCitGaXhlcworcGx0aG9vay5jOjEyODo0MTogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ1JUTERfREVGQVVMVCcKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9uYW1oeXVuZy91ZnRyYWNlL3B1bGwvNDg3XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYm1jb3VudC9wbHRob29rLmMgfCAxICsKKyB1dGlscy9kZWJ1Zy5jICAgICAgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYm1jb3VudC9wbHRob29rLmMgYi9saWJtY291bnQvcGx0aG9vay5jCitpbmRleCBkOWQ4NGYwLi5kNTRmNWU4IDEwMDY0NAorLS0tIGEvbGlibWNvdW50L3BsdGhvb2suYworKysrIGIvbGlibWNvdW50L3BsdGhvb2suYworQEAgLTYsNiArNiw3IEBACisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGRsZmNuLmg+CisgCisgLyogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBiZWZvcmUgI2luY2x1ZGUgInV0aWxzLmgiICovCisgI2RlZmluZSBQUl9GTVQgICAgICJtY291bnQiCitkaWZmIC0tZ2l0IGEvdXRpbHMvZGVidWcuYyBiL3V0aWxzL2RlYnVnLmMKK2luZGV4IDIxMzRiMDkuLjU0NjBkZWYgMTAwNjQ0CistLS0gYS91dGlscy9kZWJ1Zy5jCisrKysgYi91dGlscy9kZWJ1Zy5jCitAQCAtMTMsNiArMTMsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisrI2luY2x1ZGUgPGRsZmNuLmg+CisgCisgI2luY2x1ZGUgInV0aWxzL3V0aWxzLmgiCisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTM4ZTZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjguMy5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlRyYWNlIGFuZCBhbmFseXplIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0gd3JpdHRlbiBpbiBDL0MrKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYW1oeXVuZy91ZnRyYWNlIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFtaHl1bmcvdWZ0cmFjZS9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImVsZnV0aWxzIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKKyMgdjAuOC4zCitTUkNSRVYgPSAiOGI3MjNhNmZhZTJlZjMwNDk1Y2Q2Mjc5Nzc0ZmJhOWM5NWNkOWM4OCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uYW1oeXVuZy8ke0JQTn0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWRsZmNuLmgtZm9yLVJUTERfREVGQVVMVC5wYXRjaCBcCisgICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgorCitkZWYgc2V0X3RhcmdldF9hcmNoKGQpOgorICAgIGltcG9ydCByZQorICAgIGFyY2ggPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnLCBUcnVlKQorICAgIGlmIHJlLm1hdGNoKHInaS44NicsIGFyY2gsIHJlLkkpOgorICAgICAgICByZXR1cm4gJ2kzODYnCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGFyY2gKKworRVhUUkFfVUZUUkFDRV9PRUNPTkYgPSAiQVJDSD0ke0BzZXRfdGFyZ2V0X2FyY2goZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfZWxmdXRpbHM9L3VzZS9saWJlbGYvZnJvbS9zeXNyb290IgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9VRlRSQUNFX09FQ09ORn0KK30KKworRklMRVNfU09MSUJTREVWID0gIiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5zbyIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybSkiCisKKyMgdWZ0cmFjZSBzdXBwb3J0cyBhcm12NiBhbmQgYWJvdmUKK0NPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY1ID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmIxNzk1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUcmFjZSBhbmQgYW5hbHl6ZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gQy9DKysiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFtaHl1bmcvdWZ0cmFjZSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJlbGZ1dGlscyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TUkNSRVYgPSAiNWFmOWZmOWZhODljMzQwNjE3ZTUyYzhlZDA1Nzk4YjM1MmE3MTQ1YyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9uYW1oeXVuZy8ke0JQTn0iCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKLUVYVFJBX09FQ09ORiA9ICJBUkNIPSR7VEFSR0VUX0FSQ0h9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLUZJTEVTX1NPTElCU0RFViA9ICIiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9Lyouc28iCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGFhcmNoNjR8YXJtKSIKLQotIyB1ZnRyYWNlIHN1cHBvcnRzIGFybXY2IGFuZCBhYm92ZQotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXAvMDAwMS1TdXBwb3J0LU9wZW5TU0wtMS4xLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3V3LWltYXAvdXctaW1hcC8wMDAxLVN1cHBvcnQtT3BlblNTTC0xLjEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2MTBiYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXAvMDAwMS1TdXBwb3J0LU9wZW5TU0wtMS4xLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNGM2ODQ1NDI4MTZhMDhiOTU0NDRiOGUyNTE1ZjI0ZDA4NGU2ZTNjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgU2VwIDIwMTggMjI6MDU6MTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBPcGVuU1NMIDEuMQorCitXaGVuIGJ1aWxkaW5nIHdpdGggT3BlblNTTCAxLjEgYW5kIG5ld2VyLCB1c2UgdGhlIG5ldyBidWlsdC1pbgorIGhvc3RuYW1lIHZlcmlmaWNhdGlvbiBpbnN0ZWFkIG9mIGNvZGUgdGhhdCBkb2Vzbid0IGNvbXBpbGUgZHVlIHRvCisgc3RydWN0cyBoYXZpbmcgYmVlbiBtYWRlIG9wYXF1ZS4KK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzgyODU4OQorCitVcHN0cmVhbS1TdGF0dXM6IFVua25vd24KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9vc2RlcC91bml4L3NzbF91bml4LmMgfCAxNCArKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvb3NkZXAvdW5peC9zc2xfdW5peC5jIGIvc3JjL29zZGVwL3VuaXgvc3NsX3VuaXguYworaW5kZXggM2JmZGZmMy4uZGVjOTQ2NyAxMDA2NDQKKy0tLSBhL3NyYy9vc2RlcC91bml4L3NzbF91bml4LmMKKysrKyBiL3NyYy9vc2RlcC91bml4L3NzbF91bml4LmMKK0BAIC0yMjcsOCArMjI3LDE2IEBAIHN0YXRpYyBjaGFyICpzc2xfc3RhcnRfd29yayAoU1NMU1RSRUFNICpzdHJlYW0sY2hhciAqaG9zdCx1bnNpZ25lZCBsb25nIGZsYWdzKQorIAkJCQkvKiBkaXNhYmxlIGNlcnRpZmljYXRlIHZhbGlkYXRpb24/ICovCisgICBpZiAoZmxhZ3MgJiBORVRfTk9WQUxJREFURUNFUlQpCisgICAgIFNTTF9DVFhfc2V0X3ZlcmlmeSAoc3RyZWFtLT5jb250ZXh0LFNTTF9WRVJJRllfTk9ORSxOSUwpOworLSAgZWxzZSBTU0xfQ1RYX3NldF92ZXJpZnkgKHN0cmVhbS0+Y29udGV4dCxTU0xfVkVSSUZZX1BFRVIsc3NsX29wZW5fdmVyaWZ5KTsKKysgIGVsc2UgeworKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDAgICAgICAKKysgICAgICBYNTA5X1ZFUklGWV9QQVJBTSAqcGFyYW0gPSBTU0xfQ1RYX2dldDBfcGFyYW0oc3RyZWFtLT5jb250ZXh0KTsKKysgICAgICBYNTA5X1ZFUklGWV9QQVJBTV9zZXRfaG9zdGZsYWdzKHBhcmFtLCBYNTA5X0NIRUNLX0ZMQUdfTk9fUEFSVElBTF9XSUxEQ0FSRFMpOworKyAgICAgIFg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdChwYXJhbSwgaG9zdCwgMCk7CisrI2VuZGlmCisrCisrICAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5IChzdHJlYW0tPmNvbnRleHQsU1NMX1ZFUklGWV9QRUVSLHNzbF9vcGVuX3ZlcmlmeSk7CisgCQkJCS8qIHNldCBkZWZhdWx0IHBhdGhzIHRvIENBcy4uLiAqLworKyAgfQorICAgU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMgKHN0cmVhbS0+Y29udGV4dCk7CisgCQkJCS8qIC4uLnVubGVzcyBhIG5vbi1zdGFuZGFyZCBwYXRoIGRlc2lyZWQgKi8KKyAgIGlmIChzID0gKGNoYXIgKikgbWFpbF9wYXJhbWV0ZXJzIChOSUwsR0VUX1NTTENBUEFUSCxOSUwpKQorQEAgLTI2Niw2ICsyNzQsNyBAQCBzdGF0aWMgY2hhciAqc3NsX3N0YXJ0X3dvcmsgKFNTTFNUUkVBTSAqc3RyZWFtLGNoYXIgKmhvc3QsdW5zaWduZWQgbG9uZyBmbGFncykKKyAgIGlmIChTU0xfd3JpdGUgKHN0cmVhbS0+Y29uLCIiLDApIDwgMCkKKyAgICAgcmV0dXJuIHNzbF9sYXN0X2Vycm9yID8gc3NsX2xhc3RfZXJyb3IgOiAiU1NMIG5lZ290aWF0aW9uIGZhaWxlZCI7CisgCQkJCS8qIG5lZWQgdG8gdmFsaWRhdGUgaG9zdCBuYW1lcz8gKi8KKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDAKKyAgIGlmICghKGZsYWdzICYgTkVUX05PVkFMSURBVEVDRVJUKSAmJgorICAgICAgIChlcnIgPSBzc2xfdmFsaWRhdGVfY2VydCAoY2VydCA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZSAoc3RyZWFtLT5jb24pLAorIAkJCQlob3N0KSkpIHsKK0BAIC0yNzUsNiArMjg0LDcgQEAgc3RhdGljIGNoYXIgKnNzbF9zdGFydF93b3JrIChTU0xTVFJFQU0gKnN0cmVhbSxjaGFyICpob3N0LHVuc2lnbmVkIGxvbmcgZmxhZ3MpCisgICAgIHNwcmludGYgKHRtcCwiKiUuMTI4czogJS4yNTVzIixlcnIsY2VydCA/IGNlcnQtPm5hbWUgOiAiPz8/Iik7CisgICAgIHJldHVybiBzc2xfbGFzdF9lcnJvciA9IGNweXN0ciAodG1wKTsKKyAgIH0KKysjZW5kaWYKKyAgIHJldHVybiBOSUw7CisgfQorIAwKK0BAIC0zMTMsNiArMzIzLDcgQEAgc3RhdGljIGludCBzc2xfb3Blbl92ZXJpZnkgKGludCBvayxYNTA5X1NUT1JFX0NUWCAqY3R4KQorICAqIFJldHVybnM6IE5JTCBpZiB2YWxpZGF0ZWQsIGVsc2Ugc3RyaW5nIG9mIGVycm9yIG1lc3NhZ2UKKyAgKi8KKyAKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwMDAKKyBzdGF0aWMgY2hhciAqc3NsX3ZhbGlkYXRlX2NlcnQgKFg1MDkgKmNlcnQsY2hhciAqaG9zdCkKKyB7CisgICBpbnQgaSxuOworQEAgLTM0Miw2ICszNTMsNyBAQCBzdGF0aWMgY2hhciAqc3NsX3ZhbGlkYXRlX2NlcnQgKFg1MDkgKmNlcnQsY2hhciAqaG9zdCkKKyAgIGVsc2UgcmV0ID0gIlVuYWJsZSB0byBsb2NhdGUgY29tbW9uIG5hbWUgaW4gY2VydGlmaWNhdGUiOworICAgcmV0dXJuIHJldDsKKyB9CisrI2VuZGlmCisgDAorIC8qIENhc2UtaW5kZXBlbmRlbnQgd2lsZGNhcmQgcGF0dGVybiBtYXRjaAorICAqIEFjY2VwdHM6IGJhc2Ugc3RyaW5nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdXctaW1hcC91dy1pbWFwXzIwMDdmLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3V3LWltYXAvdXctaW1hcF8yMDA3Zi5iYgppbmRleCA5MTAwM2Y2Li4wMDAwZjA1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdXctaW1hcC91dy1pbWFwXzIwMDdmLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91dy1pbWFwL3V3LWltYXBfMjAwN2YuYmIKQEAgLTQsMTIgKzQsMTMgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1hNmE0ZGRiYjdjZDI5OTlmNjgyN2VlMTQzZjZmY2Q5NyIKIAotREVQRU5EUyA9ICJvcGVuc3NsIgorREVQRU5EUyA9ICJvcGVuc3NsIHZpcnR1YWwvY3J5cHQiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9mb3NzaWVzLm9yZy9saW51eC9taXNjL29sZC9pbWFwLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9xdW90ZV9jY3R5cGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW1hcC0yMDA3ZS1zaGFyZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW1hcC0yMDA3Zi1mb3JtYXQtc2VjdXJpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LU9wZW5TU0wtMS4xLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjEyNmZkMTI1ZWEyNmI3M2IyMGYwMWZjZDU5NDAzNjkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveGVyY2VzLWMveGVyY2VzLWNfMy4xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveGVyY2VzLWMveGVyY2VzLWNfMy4xLjQuYmIKaW5kZXggNjRhYzc0Ny4uMDk1MTMwNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3hlcmNlcy1jL3hlcmNlcy1jXzMuMS40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy94ZXJjZXMtYy94ZXJjZXMtY18zLjEuNC5iYgpAQCAtOSw3ICs5LDcgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgogCi1TUkNfVVJJID0gImh0dHA6Ly9hcGFjaGUubGF1Zi1mb3J1bS5hdC94ZXJjZXMvYy8zL3NvdXJjZXMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L3hlcmNlcy9jLzMvc291cmNlcy8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gImQwNGFlOWQ4YjJkZWUyMTU3YzZkYjk1ZmE5MDhhYmZkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0MDhmMTJjMTYyOGVjZjgwNzMwYmVkYmU4YjJjYWFkODEwZWRkMDFiYjRjNjZmNzdiNjBjODczZThjYzY4OTEiCiAKQEAgLTI0LDI0ICsyNCwyMSBAQAogfQogCiBQQUNLQUdFUyA9ICJsaWJ4ZXJjZXMtYyBcCi0gICAgbGlieGVyY2VzLWMtZGJnIFwKICAgICBsaWJ4ZXJjZXMtYy1kZXYgXAogICAgIHhlcmNlcy1jLXNhbXBsZXMgXAotICAgIHhlcmNlcy1jLXNhbXBsZXMtZGJnIFwKICAgICBsaWJ4ZXJjZXMtYy1zdGF0aWNkZXYgXAorICAgICR7UE59LWRiZyBcCiAiCiAKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gImxpYnhlcmNlcy1jLWRiZyB4ZXJjZXMtYy1zYW1wbGVzLWRiZyIKKwogRklMRVNfbGlieGVyY2VzLWMgPSAiJHtsaWJkaXJ9L2xpYnhlcmNlcy1jLTMuMS5zbyIKLUZJTEVTX2xpYnhlcmNlcy1jLWRiZyA9ICIke2xpYmRpcn0vLmRlYnVnIFwKLSAgICAke3ByZWZpeH0vc3JjL2RlYnVnIFwKLSIKIEZJTEVTX2xpYnhlcmNlcy1jLWRldiA9ICIke2xpYmRpcn0vbGliKi5sYSBcCiAgICAgJHtsaWJkaXJ9L2xpYnhlcmNlcy1jLnNvIFwKICAgICAke2xpYmRpcn0vcGtnY29uZmlnL3hlcmNlcy1jLnBjIFwKICAgICAke2luY2x1ZGVkaXJ9L3hlcmNlc2MgXAogIgogRklMRVNfeGVyY2VzLWMtc2FtcGxlcyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX3hlcmNlcy1jLXNhbXBsZXMtZGJnID0gIiR7YmluZGlyfS8uZGVidWcvIgogRklMRVNfbGlieGVyY2VzLWMtc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWIqLmEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3lhc20veWFzbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveWFzbS95YXNtX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjBkNGMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3lhc20veWFzbV9naXQuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJ4ODYgKFNTRSkgYXNzZW1ibGVyIHN1cHBvcnRpbmcgTkFTTSBhbmQgR0FTLXN5bnRheGVzIgorTElDRU5TRSA9ICJCU0QiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnRvcnRhbGwubmV0L3Byb2plY3RzL3lhc20vIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMTJkODkwMzUwOGZiNmJmZDQ5ZDhkODJjNjE3MGRkOSIKKworREVQRU5EUyArPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIHhtbHRvLW5hdGl2ZSIKKworUFYgPSAiMS4zLjArZ2l0JHtTUkNQVn0iCisjIHYxLjMuMAorU1JDUkVWID0gImJhNDYzZDNjMjZjMGVjZTJlNzk3YjhkNjM4MWIxNjE2MzNiNTk3MWEiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veWFzbS95YXNtLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob25uYXRpdmUKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiQ0NMRF9GT1JfQlVJTEQ9JyR7Q0NfRk9SX0JVSUxEfSciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitQQVJBTExFTF9NQUtFID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnQvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnQvY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg3MzkxYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50L2Nyb3NzLWNvbXBpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1SZW1vdmUgcnBhdGgsIGl0cyBiYWQgZm9yIGNyb3NzIGNvbXBpbGluZyB0byBlbmNvZGUKLWJ1aWxkIHRpbWUgcnBhdGhzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGJvaW5jLWNsaWVudF9yZWxlYXNlLTcuNi03LjYuMzMvYXBpL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYm9pbmMtY2xpZW50X3JlbGVhc2UtNy42LTcuNi4zMy5vcmlnL2FwaS9NYWtlZmlsZS5hbQotKysrIGJvaW5jLWNsaWVudF9yZWxlYXNlLTcuNi03LjYuMzMvYXBpL01ha2VmaWxlLmFtCi1AQCAtNDMsMTggKzQzLDE4IEBAIGVuZGlmCi0gCi0gbGliX0xUTElCUkFSSUVTID0gbGliYm9pbmNfYXBpLmxhCi0gbGliYm9pbmNfYXBpX2xhX1NPVVJDRVMgPSAkKGFwaV9maWxlcykKLS1saWJib2luY19hcGlfbGFfTERGTEFHUyA9IC1MJChsaWJkaXIpIC1ycGF0aCAkKGxpYmRpcikgLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLStsaWJib2luY19hcGlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0gCi0gaWYgQlVJTERfR1JBUEhJQ1NfQVBJCi0gbGliX0xUTElCUkFSSUVTICs9IGxpYmJvaW5jX2dyYXBoaWNzMi5sYQotIGxpYmJvaW5jX2dyYXBoaWNzMl9sYV9TT1VSQ0VTID0gJChncmFwaGljczJfZmlsZXMpCi0gbGliYm9pbmNfZ3JhcGhpY3MyX2xhX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1JJCh0b3Bfc3JjZGlyKS9saWIgLUkkKHRvcF9zcmNkaXIpL3NhbXBsZXMvaW1hZ2VfbGlicwotLWxpYmJvaW5jX2dyYXBoaWNzMl9sYV9MREZMQUdTID0gLUwkKGxpYmRpcikgLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1udW1iZXIgJChMSUJCT0lOQ19WRVJTSU9OKSAtbGpwZWcKLStsaWJib2luY19ncmFwaGljczJfbGFfTERGTEFHUyA9IC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pIC1sanBlZwotIGVuZGlmICNCVUlMRF9HUkFQSElDU19BUEkKLSAKLSBsaWJfTFRMSUJSQVJJRVMgKz0gbGliYm9pbmNfb3BlbmNsLmxhCi0gbGliYm9pbmNfb3BlbmNsX2xhX1NPVVJDRVMgPSAkKG9wZW5jbF9maWxlcykKLS1saWJib2luY19vcGVuY2xfbGFfTERGTEFHUyA9IC1MJChsaWJkaXIpIC1ycGF0aCAkKGxpYmRpcikgLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLStsaWJib2luY19vcGVuY2xfbGFfTERGTEFHUyA9IC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0gCi0gaWYgSU5TVEFMTF9IRUFERVJTCi0gIyMgaW5zdGFsbCBvbmx5IGhlYWRlcnMgdGhhdCBhcmUgbWVhbnQgZm9yIGV4cG9ydGluZyB0aGUgQVBJICEhCi1JbmRleDogYm9pbmMtY2xpZW50X3JlbGVhc2UtNy42LTcuNi4zMy9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBib2luYy1jbGllbnRfcmVsZWFzZS03LjYtNy42LjMzLm9yaWcvbGliL01ha2VmaWxlLmFtCi0rKysgYm9pbmMtY2xpZW50X3JlbGVhc2UtNy42LTcuNi4zMy9saWIvTWFrZWZpbGUuYW0KLUBAIC0xNzMsNyArMTczLDcgQEAgbGliX0xUTElCUkFSSUVTID0gbGliYm9pbmMubGEKLSBsaWJib2luY19sYV9TT1VSQ0VTID0gJChnZW5lcmljX3NvdXJjZXMpICQobWFjX3NvdXJjZXMpICQod2luX3NvdXJjZXMpCi0gbGliYm9pbmNfbGFfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoUElDRkxBR1MpICQoUFRIUkVBRF9DRkxBR1MpCi0gbGliYm9pbmNfbGFfQ1hYRkxBR1MgPSAkKEFNX0NYWEZMQUdTKSAkKFBJQ0ZMQUdTKSAkKFBUSFJFQURfQ0ZMQUdTKQotLWxpYmJvaW5jX2xhX0xERkxBR1MgPSAtTCQobGliZGlyKSAtcnBhdGggJChsaWJkaXIpIC1zdGF0aWMgLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLStsaWJib2luY19sYV9MREZMQUdTID0gLXN0YXRpYyAtdmVyc2lvbi1udW1iZXIgJChMSUJCT0lOQ19WRVJTSU9OKQotIGxpYmJvaW5jX2xhX0xJQkFERCA9Ci0gCi0gaWYgRU5BQkxFX0JPSU5DQ1JZUFQKLUBAIC0xODEsNyArMTgxLDcgQEAgbGliX0xUTElCUkFSSUVTICs9IGxpYmJvaW5jX2NyeXB0LmxhCi0gbGliYm9pbmNfY3J5cHRfbGFfU09VUkNFUyA9IGNyeXB0LmNwcAotIGxpYmJvaW5jX2NyeXB0X2xhX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKFBJQ0ZMQUdTKSAkKFBUSFJFQURfQ0ZMQUdTKSAkKFNTTF9DRkxBR1MpCi0gbGliYm9pbmNfY3J5cHRfbGFfQ1hYRkxBR1MgPSAkKEFNX0NYWEZMQUdTKSAkKFBJQ0ZMQUdTKSAkKFBUSFJFQURfQ0ZMQUdTKSAkKFNTTF9DWFhGTEFHUykKLS1saWJib2luY19jcnlwdF9sYV9MREZMQUdTID0gLUwkKGxpYmRpcikgLXJwYXRoICQobGliZGlyKSAtc3RhdGljIC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0rbGliYm9pbmNfY3J5cHRfbGFfTERGTEFHUyA9IC1zdGF0aWMgLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLSBsaWJib2luY19jcnlwdF9sYV9MSUJBREQgPQotIGVuZGlmCi0gCi1AQCAtMTkwLDcgKzE5MCw3IEBAIGxpYl9MVExJQlJBUklFUyArPSBsaWJib2luY19mY2dpLmxhCi0gbGliYm9pbmNfZmNnaV9sYV9TT1VSQ0VTID0gJChsaWJmY2dpX3NvdXJjZXMpICQobWFjX3NvdXJjZXMpICQod2luX3NvdXJjZXMpCi0gbGliYm9pbmNfZmNnaV9sYV9DRkxBR1MgPSAtRF9VU0lOR19GQ0dJXyAkKEFNX0NGTEFHUykgJChQSUNGTEFHUykgJChQVEhSRUFEX0NGTEFHUykKLSBsaWJib2luY19mY2dpX2xhX0NYWEZMQUdTID0gLURfVVNJTkdfRkNHSV8gJChBTV9DWFhGTEFHUykgJChQSUNGTEFHUykgJChQVEhSRUFEX0NGTEFHUykKLS1saWJib2luY19mY2dpX2xhX0xERkxBR1MgPSAtTCQobGliZGlyKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0rbGliYm9pbmNfZmNnaV9sYV9MREZMQUdTID0gLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLSBsaWJib2luY19mY2dpX2xhX0xJQkFERCA9Ci0gZW5kaWYgCi0gIyBlbmQgb2YgImlmIEVOQUJMRV9GQ0dJIgotSW5kZXg6IGJvaW5jLWNsaWVudF9yZWxlYXNlLTcuNi03LjYuMzMvc2NoZWQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBib2luYy1jbGllbnRfcmVsZWFzZS03LjYtNy42LjMzLm9yaWcvc2NoZWQvTWFrZWZpbGUuYW0KLSsrKyBib2luYy1jbGllbnRfcmVsZWFzZS03LjYtNy42LjMzL3NjaGVkL01ha2VmaWxlLmFtCi1AQCAtMjYsNyArMjYsNyBAQCBsaWJfTFRMSUJSQVJJRVMgPSBsaWJzY2hlZC5sYQotIGxpYnNjaGVkX2xhX1NPVVJDRVMgPSAkKGxpYnNjaGVkX3NvdXJjZXMpCi0gbGlic2NoZWRfbGFfQ0ZMQUdTID0gJChBTV9DUFBGTEFHUykKLSBsaWJzY2hlZF9sYV9DWFhGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCi0tbGlic2NoZWRfbGFfTERGTEFHUz0gLUwkKGxpYmRpcikgLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1udW1iZXIgJChMSUJCT0lOQ19WRVJTSU9OKQotK2xpYnNjaGVkX2xhX0xERkxBR1M9IC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0gbGlic2NoZWRfbGFfTElCQUREPSAkKFNTTF9MSUJTKQotIAotICMjIGluc3RhbGwgb25seSBoZWFkZXJzIHRoYXQgYXJlIG1lYW50IGZvciBleHBvcnRpbmcgdGhlIEFQSSAhIQotQEAgLTQ4LDcgKzQ4LDcgQEAgbGliX0xUTElCUkFSSUVTICs9IGxpYnNjaGVkX2ZjZ2kubGEKLSBsaWJzY2hlZF9mY2dpX2xhX1NPVVJDRVMgPSAkKGxpYnNjaGVkX3NvdXJjZXMpCi0gbGlic2NoZWRfZmNnaV9sYV9DRkxBR1MgPSAtRF9VU0lOR19GQ0dJXyAkKEFNX0NQUEZMQUdTKQotIGxpYnNjaGVkX2ZjZ2lfbGFfQ1hYRkxBR1MgPSAtRF9VU0lOR19GQ0dJXyAkKEFNX0NQUEZMQUdTKQotLWxpYnNjaGVkX2ZjZ2lfbGFfTERGTEFHUz0gLUwkKGxpYmRpcikgLXJwYXRoICQobGliZGlyKSAtdmVyc2lvbi1udW1iZXIgJChMSUJCT0lOQ19WRVJTSU9OKQotK2xpYnNjaGVkX2ZjZ2lfbGFfTERGTEFHUz0gLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLSBsaWJzY2hlZF9mY2dpX2xhX0xJQkFERD0KLSAKLSBlbmRpZgotSW5kZXg6IGJvaW5jLWNsaWVudF9yZWxlYXNlLTcuNi03LjYuMzMvemlwL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYm9pbmMtY2xpZW50X3JlbGVhc2UtNy42LTcuNi4zMy5vcmlnL3ppcC9NYWtlZmlsZS5hbQotKysrIGJvaW5jLWNsaWVudF9yZWxlYXNlLTcuNi03LjYuMzMvemlwL01ha2VmaWxlLmFtCi1AQCAtNjEsNyArNjEsNyBAQCBlbmRpZgotIAotIGxpYl9MVExJQlJBUklFUyA9IGxpYmJvaW5jX3ppcC5sYQotIGxpYmJvaW5jX3ppcF9sYV9TT1VSQ0VTID0gJChsaWJib2luY196aXBfc291cmNlcykKLS1saWJib2luY196aXBfbGFfTERGTEFHUyA9IC1MJChsaWJkaXIpIC1ycGF0aCAkKGxpYmRpcikgLXZlcnNpb24tbnVtYmVyICQoTElCQk9JTkNfVkVSU0lPTikKLStsaWJib2luY196aXBfbGFfTERGTEFHUyA9IC12ZXJzaW9uLW51bWJlciAkKExJQkJPSU5DX1ZFUlNJT04pCi0gbGliYm9pbmNfemlwX2xhX0xJQkFERCA9Ci0gCi0gIyBTb21lIE9TcyBtYXkgbm90IHByZWZpeCBsaWJyYXJpZXMgd2l0aCBsaWIuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwNWJiNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy4xMi5iYgpAQCAtMCwwICsxLDg3IEBACisjIENvcHlyaWdodCAoQykgMjAxNiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIk9wZW4tc291cmNlIHNvZnR3YXJlIGZvciB2b2x1bnRlZXIgY29tcHV0aW5nIgorREVTQ1JJUFRJT04gPSAiVGhlIEJlcmtlbGV5IE9wZW4gSW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmsgQ29tcHV0aW5nIChCT0lOQykgaXMgYW4gb3Blbi0gXAorc291cmNlIHNvZnR3YXJlIHBsYXRmb3JtIHdoaWNoIHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgcHJpbWFyaWx5IGluIFwKK3RoZSBmb3JtIG9mIHZvbHVudGVlciBjb21wdXRpbmcgYW5kIGRlc2t0b3AgR3JpZCBjb21wdXRpbmcuICBJdCBpcyB3ZWxsIFwKK3N1aXRlZCBmb3IgcHJvYmxlbXMgd2hpY2ggYXJlIG9mdGVuIGRlc2NyaWJlZCBhcyB0cml2aWFsbHkgcGFyYWxsZWwuICBCT0lOQyBcCitpcyB0aGUgdW5kZXJseWluZyBzb2Z0d2FyZSB1c2VkIGJ5IHByb2plY3RzIHN1Y2ggYXMgU0VUSUBob21lLCBFaW5zdGVpbkBIb21lLCBcCitDbGltYXRlUHJlZGljaXRvbi5uZXQsIHRoZSBXb3JsZCBDb21tdW5pdHkgR3JpZCwgYW5kIG1hbnkgb3RoZXIgZGlzdHJpYnV0ZWQgXAorY29tcHV0aW5nIHByb2plY3RzLiBcCitUaGlzIHBhY2thZ2UgaW5zdGFsbHMgdGhlIEJPSU5DIGNsaWVudCBzb2Z0d2FyZSwgd2hpY2ggd2lsbCBhbGxvdyB5b3VyIFwKK2NvbXB1dGVyIHRvIHBhcnRpY2lwYXRlIGluIG9uZSBvciBtb3JlIEJPSU5DIHByb2plY3RzLCB1c2luZyB5b3VyIHNwYXJlIFwKK2NvbXB1dGVyIHRpbWUgdG8gc2VhcmNoIGZvciBjdXJlcyBmb3IgZGlzZWFzZXMsIG1vZGVsIHByb3RlaW4gZm9sZGluZywgc3R1ZHkgXAorZ2xvYmFsIHdhcm1pbmcsIGRpc2NvdmVyIHNvdXJjZXMgb2YgZ3Jhdml0YXRpb25hbCB3YXZlcywgYW5kIG1hbnkgb3RoZXIgdHlwZXMgXAorb2Ygc2NpZW50aWZpYyBhbmQgbWF0aGVtYXRpY2FsIHJlc2VhcmNoLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2JvaW5jLmJlcmtlbGV5LmVkdS8iCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKK1NFQ1RJT04gPSAiYXBwbGljYXRpb25zIgorREVQRU5EUyA9ICJjdXJsIFwKKyAgICAgICAgICAganBlZyBcCisgICAgICAgICAgIG9wZW5zc2wgXAorICAgICAgICAgICBzcWxpdGUzIFwKKyAgICAgICAgICAgdmlydHVhbC9saWJnbCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdsaWJub3RpZnknLCAnJywgZCl9IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKyBsaWJub3RpZnkgeGNiLXV0aWwgbGlieHNjcm5zYXZlcicsICcnLCBkKX0gXAorICAgICAgICAgICBuZXR0bGUgXAorIgorU1JDUkVWID0gImJkMTIzMzhkYmQyOTA4M2RhYTVhNGIwMjI1OTJjYTMxZmY2OGNkOTgiCitCUkFOQ0ggPSAiY2xpZW50X3JlbGVhc2UvNy8ke1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9CT0lOQy9ib2luYztwcm90b2NvbD1odHRwczticmFuY2g9JHtCUkFOQ0h9IFwKKyAgICAgICAgICAgZmlsZTovL2JvaW5jLUFNX0NPTkRJVElPTkFMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5nbF9tNF9jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ndGstY29uZmlndXJlLnBhdGNoIFwKKyIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHN5c3RlbWQKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJvcGVuZ2wiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiArPSAiXAorICAgIC0tZW5hYmxlLWxpYnJhcmllcyBcCisgICAgLS1lbmFibGUtdW5pY29kZSBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWVuYWJsZS1keW5hbWljLWNsaWVudC1saW5rYWdlIFwKKyAgICAtLWVuYWJsZS1jbGllbnQgXAorICAgIC0tZGlzYWJsZS1zZXJ2ZXIgXAorICAgIC0tZGlzYWJsZS1zdGF0aWMgXAorICAgIC0tZGlzYWJsZS1tYW5hZ2VyIFwKKyAgICAtLXdpdGgtc3NsPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCisgICAgLS13aXRob3V0LXd4ZGlyIFwKKyAgICAtLXdpdGhvdXQteCBcCisgICAgLS13aXRoLWJvaW5jLXBsYXRmb3JtPSR7VEFSR0VUX1NZU30gXAorIgorZXhwb3J0IFBLR19DT05GSUcgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BrZy1jb25maWciCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RFUEVORFMnLCAnZ3RrKycsICcxJywgJzAnLCBkKX0iID0gIjAiCisJdGhlbgorCQlleHBvcnQgR1RLMl9DRkxBR1M9IiIKKwkJZXhwb3J0IEdUSzJfTElCUz0iIgorCWZpCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisJIyBEaXNhYmxlIHJwYXRocworCXNlZCAtaSAtZSAnc3xeaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0uKnxoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIifGcnICR7Qn0vJHtUQVJHRVRfU1lTfS1saWJ0b29sCisJc2VkIC1pIC1lICdzfF5zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0uKnxzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iInxnJyAke0J9LyR7VEFSR0VUX1NZU30tbGlidG9vbAorCXNlZCAtaSAtZSAnc3xecnVucGF0aF92YXI9TERfUlVOX1BBVEh8cnVucGF0aF92YXI9RElFX1JQQVRIX0RJRXxnJyAke0J9LyR7VEFSR0VUX1NZU30tbGlidG9vbAorfQorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgWyAtZSAke0R9JHtsaWJkaXJ9L3N5c3RlbWQvc3lzdGVtL2JvaW5jLWNsaWVudC5zZXJ2aWNlIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNjQ0IFwKKwkJJHtEfSR7bGliZGlyfS9zeXN0ZW1kL3N5c3RlbS9ib2luYy1jbGllbnQuc2VydmljZSBcCisJCSR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2JvaW5jLWNsaWVudC5zZXJ2aWNlCisJCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3N5c3RlbWQKKwlmaQorfQorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYm9pbmMtY2xpZW50LnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy42LjMzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjYuMzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YjQzZmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjYuMzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIk9wZW4tc291cmNlIHNvZnR3YXJlIGZvciB2b2x1bnRlZXIgY29tcHV0aW5nIgotREVTQ1JJUFRJT04gPSAiVGhlIEJlcmtlbGV5IE9wZW4gSW5mcmFzdHJ1Y3R1cmUgZm9yIE5ldHdvcmsgQ29tcHV0aW5nIChCT0lOQykgaXMgYW4gb3Blbi0gXAotc291cmNlIHNvZnR3YXJlIHBsYXRmb3JtIHdoaWNoIHN1cHBvcnRzIGRpc3RyaWJ1dGVkIGNvbXB1dGluZywgcHJpbWFyaWx5IGluIFwKLXRoZSBmb3JtIG9mIHZvbHVudGVlciBjb21wdXRpbmcgYW5kIGRlc2t0b3AgR3JpZCBjb21wdXRpbmcuICBJdCBpcyB3ZWxsIFwKLXN1aXRlZCBmb3IgcHJvYmxlbXMgd2hpY2ggYXJlIG9mdGVuIGRlc2NyaWJlZCBhcyB0cml2aWFsbHkgcGFyYWxsZWwuICBCT0lOQyBcCi1pcyB0aGUgdW5kZXJseWluZyBzb2Z0d2FyZSB1c2VkIGJ5IHByb2plY3RzIHN1Y2ggYXMgU0VUSUBob21lLCBFaW5zdGVpbkBIb21lLCBcCi1DbGltYXRlUHJlZGljaXRvbi5uZXQsIHRoZSBXb3JsZCBDb21tdW5pdHkgR3JpZCwgYW5kIG1hbnkgb3RoZXIgZGlzdHJpYnV0ZWQgXAotY29tcHV0aW5nIHByb2plY3RzLiBcCi1UaGlzIHBhY2thZ2UgaW5zdGFsbHMgdGhlIEJPSU5DIGNsaWVudCBzb2Z0d2FyZSwgd2hpY2ggd2lsbCBhbGxvdyB5b3VyIFwKLWNvbXB1dGVyIHRvIHBhcnRpY2lwYXRlIGluIG9uZSBvciBtb3JlIEJPSU5DIHByb2plY3RzLCB1c2luZyB5b3VyIHNwYXJlIFwKLWNvbXB1dGVyIHRpbWUgdG8gc2VhcmNoIGZvciBjdXJlcyBmb3IgZGlzZWFzZXMsIG1vZGVsIHByb3RlaW4gZm9sZGluZywgc3R1ZHkgXAotZ2xvYmFsIHdhcm1pbmcsIGRpc2NvdmVyIHNvdXJjZXMgb2YgZ3Jhdml0YXRpb25hbCB3YXZlcywgYW5kIG1hbnkgb3RoZXIgdHlwZXMgXAotb2Ygc2NpZW50aWZpYyBhbmQgbWF0aGVtYXRpY2FsIHJlc2VhcmNoLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2JvaW5jLmJlcmtlbGV5LmVkdS8iCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKLVNFQ1RJT04gPSAiYXBwbGljYXRpb25zIgotREVQRU5EUyA9ICJjdXJsIFwKLSAgICAgICAgICAganBlZyBcCi0gICAgICAgICAgIG9wZW5zc2wgXAotICAgICAgICAgICBzcWxpdGUzIFwKLSAgICAgICAgICAgdmlydHVhbC9saWJnbCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdsaWJub3RpZnknLCAnJywgZCl9IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZ3RrKyBsaWJub3RpZnkgeGNiLXV0aWwgbGlieHNjcm5zYXZlcicsICcnLCBkKX0gXAotICAgICAgICAgICBuZXR0bGUgXAotIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9CT0lOQy9ib2luYy9hcmNoaXZlL2NsaWVudF9yZWxlYXNlLzcuNi8ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYm9pbmMtQU1fQ09ORElUSU9OQUwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmdsX200X2NoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWNvbmZpZ3VyZS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDM3YjRiOThlMzg0YjRiZGE0ZWY3MDU2ZTY4MTY2YWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzRiMWMyOWI5NjU1MDEzZTBhYzYxZGRkZjQ3YWQ3ZjMwZjM4YzQ2MTU5ZjAyYTlkOWRjOGFiODU0ZTk5YWE2ZCIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfV9yZWxlYXNlLTcuNi0ke1BWfSIKLQotRVhUUkFfT0VDT05GICs9ICJcCi0gICAgLS1lbmFibGUtbGlicmFyaWVzIFwKLSAgICAtLWVuYWJsZS11bmljb2RlIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLWR5bmFtaWMtY2xpZW50LWxpbmthZ2UgXAotICAgIC0tZW5hYmxlLWNsaWVudCBcCi0gICAgLS1kaXNhYmxlLXNlcnZlciBcCi0gICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgLS1kaXNhYmxlLW1hbmFnZXIgXAotICAgIC0td2l0aC1zc2w9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKLSAgICAtLXdpdGhvdXQtd3hkaXIgXAotICAgIC0td2l0aG91dC14IFwKLSAgICAtLXdpdGgtYm9pbmMtcGxhdGZvcm09JHtUQVJHRVRfU1lTfSBcCi0iCi1leHBvcnQgUEtHX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWlmICIke0BiYi51dGlscy5jb250YWlucygnREVQRU5EUycsICdndGsrJywgJzEnLCAnMCcsIGQpfSIgPSAiMCIKLQl0aGVuCi0JCWV4cG9ydCBHVEsyX0NGTEFHUz0iIgotCQlleHBvcnQgR1RLMl9MSUJTPSIiCi0JZmkKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLQkjIERpc2FibGUgcnBhdGhzCi0Jc2VkIC1pIC1lICdzfF5oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPS4qfGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiJ8ZycgJHtCfS8ke1RBUkdFVF9TWVN9LWxpYnRvb2wKLQlzZWQgLWkgLWUgJ3N8XnN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS4qfHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIifGcnICR7Qn0vJHtUQVJHRVRfU1lTfS1saWJ0b29sCi0Jc2VkIC1pIC1lICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnICR7Qn0vJHtUQVJHRVRfU1lTfS1saWJ0b29sCi19Ci0KLVNFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnJvdGxpL2Jyb3RsaV8xLjAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGQ0NzczCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJMb3NzbGVzcyBjb21wcmVzc2lvbiBsaWJyYXJ5IGFuZCB0b29sIgorREVTQ1JJUFRJT00gPSAiQnJvdGxpIGlzIGEgZ2VuZXJpYy1wdXJwb3NlIGxvc3NsZXNzIGNvbXByZXNzaW9uIGFsZ29yaXRobSBcCit0aGF0IGl0IGlzIHNpbWlsYXIgaW4gc3BlZWQgdG8gZGVmbGF0ZSBidXQgb2ZmZXJzIG1vcmUgZGVuc2UgY29tcHJlc3Npb24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvYnJvdGxpL2lzc3VlcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9MSUNFTlNFO21kNT05NDFlZTljZDE2MDkzODJmOTQ2MzUyNzEyYTMxOWI0YiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9icm90bGkuZ2l0IgorIyB0YWcgMS4wLjcKK1NSQ1JFVj0gImQ2ZDk4OTU3Y2E4Y2NiMWVmNDU5MjJlOTc4YmIxMGVmY2EwZWE1NDEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGxpYl9wYWNrYWdlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYwppbmRleCA5YmRhZmQyLi41MjE0NzE1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy5pbmMKQEAgLTYsNyArNiw3IEBACiBTRUNUSU9OID0gImRldmVsIgogTElDRU5TRSA9ICJQRCIKIAotU1JDX1VSSSA9ICJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9ieWFjYy9ieWFjYy0ke1BWfS50Z3ogXAorU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaW52aXNpYmxlLWlzbGFuZC5uZXQvYnlhY2MvYnlhY2MtJHtQVn0udGd6IFwKICAgICAgICAgICAgZmlsZTovL2J5YWNjLW9wZW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLzAwMDEtYnlhY2MtZG8tbm90LXJlb3JkZXItQ0MtYW5kLUNGTEFHUy5wYXRjaAppbmRleCA3Y2QyNTEwLi4zYmMwZGI5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy8wMDAxLWJ5YWNjLWRvLW5vdC1yZW9yZGVyLUNDLWFuZC1DRkxBR1MucGF0Y2gKQEAgLTksMjggKzksMjkgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgYWNsb2NhbC5tNCB8ICAgMSAtCi0gY29uZmlndXJlICB8IDExOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMjAgZGVsZXRpb25zKC0pCisgY29uZmlndXJlICB8IDE0MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxNDEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAotaW5kZXggOTE3YTg0OC4uNjJlZjI0MSAxMDA2NDQKK2luZGV4IDBkMTRmMjYuLjBjZWZhMDggMTAwNjQ0CiAtLS0gYS9hY2xvY2FsLm00CiArKysgYi9hY2xvY2FsLm00Ci1AQCAtMTAyMSw3ICsxMDIxLDYgQEAgQ0ZfR0NDX1ZFUlNJT04KK0BAIC0xMDM4LDcgKzEwMzgsNiBAQCBDRl9HQ0NfVkVSU0lPTgogIENGX0FDVkVSU0lPTl9DSEVDSygyLjUyLAogIAlbQUNfUFJPR19DQ19TVERDXSwKICAJW0NGX0FOU0lfQ0NfUkVRRF0pCiAtQ0ZfQ0NfRU5WX0ZMQUdTCiAgXSlkbmwKICBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZG5sIENGX1BST0dfR1JPRkYgdmVyc2lvbjogMiB1cGRhdGVkOiAyMDE1LzA3LzA0IDExOjE2OjI3CisgZG5sIENGX1BST0dfR1JPRkYgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDE4LzAxLzA3IDEzOjE2OjE5CiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA5NzA3ZTUwLi40ZjA0OTdjIDEwMDc1NQoraW5kZXggZDI3YWUzMS4uMDc3YzY0OCAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtMTk0NiwxMjUgKzE5NDYsNiBAQCBlc2FjCitAQCAtMTk0NiwxNDYgKzE5NDYsNiBAQCBlc2FjCiAgIyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gZGVmaW5lZCBieSBBQ19QUk9HX0NDCiAgOiAke0NDOj1jY30KICAKQEAgLTQzLDggKzQ0LDkgQEAKIC0JeyBlY2hvICIkYXNfbWU6MTk1NTogV0FSTklORzogeW91ciBlbnZpcm9ubWVudCBtaXN1c2VzIHRoZSBDQyB2YXJpYWJsZSB0byBob2xkIENGTEFHUy9DUFBGTEFHUyBvcHRpb25zIiA+JjUKIC1lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQ1BQRkxBR1Mgb3B0aW9ucyIgPiYyO30KIC0JIyBodW1vciBoaW0uLi4KLS0JY2ZfZmxhZ3M9YGVjaG8gIiRDQyIgfCBzZWQgLWUgJ3MvXi4qWyAJXVwoLVteIAldXCkvXDEvJ2AKLS0JQ0M9YGVjaG8gIiRDQyAiIHwgc2VkIC1lICdzL1sgCV0tW14gCV0uKiQvLycgLWUgJ3MvWyAJXSokLy8nYAorLQljZl9wcm9nPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzLwkvIC9nJyAtZSAncy9bIF0qIC8gL2cnIC1lICdzL1sgXSpbIF0tW14gXS4qLy8nYAorLQljZl9mbGFncz1gZWNobyAiJENDIiB8ICR7QVdLOi1hd2t9IC12IHByb2c9IiRjZl9wcm9nIiAneyBwcmludGYoIiVzIiwgc3Vic3RyKCQwLDErbGVuZ3RoKHByb2cpKSk7IH0nYAorLQlDQz0iJGNmX3Byb2ciCiAtCWZvciBjZl9hcmcgaW4gJGNmX2ZsYWdzCiAtCWRvCiAtCQljYXNlICJ4JGNmX2FyZyIgaW4KQEAgLTU1LDcgKzU3LDcgQEAKIC1jZl9uZXdfY3BwZmxhZ3M9CiAtY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPQogLQotLWZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl9mbGFncworLWZvciBjZl9hZGRfY2ZsYWdzIGluICRjZl9hcmcKIC1kbwogLWNhc2UgJGNmX2ZpeF9jcHBmbGFncyBpbgogLShubykKQEAgLTcwLDEwICs3MiwxNiBAQAogLQkJCQkmJiBjZl9maXhfY3BwZmxhZ3M9eWVzCiAtCiAtCQkJaWYgdGVzdCAkY2ZfZml4X2NwcGZsYWdzID0geWVzIDsgdGhlbgotLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCistCistCXRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiICYmIGNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAiCistCWNmX25ld19leHRyYV9jcHBmbGFncz0iJHtjZl9uZXdfZXh0cmFfY3BwZmxhZ3N9JGNmX2FkZF9jZmxhZ3MiCistCiAtCQkJCWNvbnRpbnVlCiAtCQkJZWxpZiB0ZXN0ICIke2NmX3RzdF9jZmxhZ3N9IiA9ICJcIiciIDsgdGhlbgotLQkJCQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCistCistCXRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiICYmIGNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAiCistCWNmX25ld19leHRyYV9jcHBmbGFncz0iJHtjZl9uZXdfZXh0cmFfY3BwZmxhZ3N9JGNmX2FkZF9jZmxhZ3MiCistCiAtCQkJCWNvbnRpbnVlCiAtCQkJZmkKIC0JCQk7OwpAQCAtOTIsMTcgKzEwMCwyNSBAQAogLQogLQkJCQk7OwogLQkJCWVzYWMKLS0JCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCistCistCXRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiICYmIGNmX25ld19jcHBmbGFncz0iJGNmX25ld19jcHBmbGFncyAiCistCWNmX25ld19jcHBmbGFncz0iJHtjZl9uZXdfY3BwZmxhZ3N9JGNmX2FkZF9jZmxhZ3MiCistCiAtCQkJOzsKIC0JCWVzYWMKIC0JCTs7CiAtCSgqKQotLQkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCistCistCXRlc3QgLW4gIiRjZl9uZXdfY2ZsYWdzIiAmJiBjZl9uZXdfY2ZsYWdzPSIkY2ZfbmV3X2NmbGFncyAiCistCWNmX25ld19jZmxhZ3M9IiR7Y2ZfbmV3X2NmbGFnc30kY2ZfYWRkX2NmbGFncyIKKy0KIC0JCTs7CiAtCWVzYWMKIC0JOzsKIC0oeWVzKQotLQljZl9uZXdfZXh0cmFfY3BwZmxhZ3M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCistCistCXRlc3QgLW4gIiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MiICYmIGNmX25ld19leHRyYV9jcHBmbGFncz0iJGNmX25ld19leHRyYV9jcHBmbGFncyAiCistCWNmX25ld19leHRyYV9jcHBmbGFncz0iJHtjZl9uZXdfZXh0cmFfY3BwZmxhZ3N9JGNmX2FkZF9jZmxhZ3MiCiAtCiAtCWNmX3RzdF9jZmxhZ3M9YGVjaG8gJHtjZl9hZGRfY2ZsYWdzfSB8c2VkIC1lICdzL15bXiJdKiInXCcnLy8nYAogLQpAQCAtMTE1LDE3ICsxMzEsMjMgQEAKIC0KIC1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCiAtCi0tCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKKy0JdGVzdCAtbiAiJENGTEFHUyIgJiYgQ0ZMQUdTPSIkQ0ZMQUdTICIKKy0JQ0ZMQUdTPSIke0NGTEFHU30kY2ZfbmV3X2NmbGFncyIKKy0KIC1maQogLQogLWlmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgogLQotLQlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCistCXRlc3QgLW4gIiRDUFBGTEFHUyIgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAiCistCUNQUEZMQUdTPSIke0NQUEZMQUdTfSRjZl9uZXdfY3BwZmxhZ3MiCistCiAtZmkKIC0KIC1pZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KIC0KLS0JRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgorLQl0ZXN0IC1uICIkRVhUUkFfQ1BQRkxBR1MiICYmIEVYVFJBX0NQUEZMQUdTPSIkRVhUUkFfQ1BQRkxBR1MgIgorLQlFWFRSQV9DUFBGTEFHUz0iJHtFWFRSQV9DUFBGTEFHU30kY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIgorLQogLWZpCiAtCiAtCQkJOzsKQEAgLTEzNiwyNiArMTU4LDI2IEBACiAtCWRvbmUKIC0JdGVzdCAtbiAiJHZlcmJvc2UiICYmIGVjaG8gIglyZXN1bHRpbmcgQ0M6ICckQ0MnIiAxPiY2CiAtCi0tZWNobyAiJHthc19tZTotY29uZmlndXJlfToyMDUxOiB0ZXN0aW5nIHJlc3VsdGluZyBDQzogJyRDQycgLi4uIiAxPiY1CistZWNobyAiJHthc19tZTotY29uZmlndXJlfToyMDcyOiB0ZXN0aW5nIHJlc3VsdGluZyBDQzogJyRDQycgLi4uIiAxPiY1CiAtCiAtCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcmVzdWx0aW5nIENGTEFHUzogJyRDRkxBR1MnIiAxPiY2CiAtCi0tZWNobyAiJHthc19tZTotY29uZmlndXJlfToyMDU1OiB0ZXN0aW5nIHJlc3VsdGluZyBDRkxBR1M6ICckQ0ZMQUdTJyAuLi4iIDE+JjUKKy1lY2hvICIke2FzX21lOi1jb25maWd1cmV9OjIwNzY6IHRlc3RpbmcgcmVzdWx0aW5nIENGTEFHUzogJyRDRkxBR1MnIC4uLiIgMT4mNQogLQogLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXJlc3VsdGluZyBDUFBGTEFHUzogJyRDUFBGTEFHUyciIDE+JjYKIC0KLS1lY2hvICIke2FzX21lOi1jb25maWd1cmV9OjIwNTk6IHRlc3RpbmcgcmVzdWx0aW5nIENQUEZMQUdTOiAnJENQUEZMQUdTJyAuLi4iIDE+JjUKKy1lY2hvICIke2FzX21lOi1jb25maWd1cmV9OjIwODA6IHRlc3RpbmcgcmVzdWx0aW5nIENQUEZMQUdTOiAnJENQUEZMQUdTJyAuLi4iIDE+JjUKIC0KIC0JOzsKIC0oKikKLS0JZWNobyAiJGFzX21lOjIwNjM6IHJlc3VsdDogb2siID4mNQorLQllY2hvICIkYXNfbWU6MjA4NDogcmVzdWx0OiBvayIgPiY1CiAtZWNobyAiJHtFQ0hPX1R9b2siID4mNgogLQk7OwogLWVzYWMKIC0KLSBlY2hvICIkYXNfbWU6MjA2ODogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIgPiY1CisgZWNobyAiJGFzX21lOjIwODk6IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCR7TUFLRX0iID4mNQogIGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfS4uLiAkRUNIT19DIiA+JjYKICBzZXQgZHVtbXkgJHtNQUtFLW1ha2V9OyBhY19tYWtlPWBlY2hvICIkMiIgfCBzZWQgJ3ksLi8rLSxfX3BfLCdgCiAtLSAKLTIuOC4zCisyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNzAyMDEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNzAyMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMmM0YzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTcwMjAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKLSMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKLSMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgotIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT05MTc2YmZiMTZkYWI0M2ViY2I4ZTUwZDllZTk1NTBiNiIKLXJlcXVpcmUgYnlhY2MuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YmIyNzRiYmQ3YjY0OGQ0MjUxYzJiOWNhMzZlZDBjOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGI3NjhkMTc3ZjkxMjA0ZTZlN2NlZjIyNmFlMWRjN2NhYzgzMWI2MjU3NzRjZWJkM2UyMzNhOTE3NzU0ZjkxIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxODA1MTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxODA1MTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMwYzQyNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE4MDUxMC5iYgpAQCAtMCwwICsxLDEyIEBACisjIFNpZ2guIFRoaXMgaXMgb25lIG9mIHRob3NlIHBsYWNlcyB3aGVyZSBldmVyeW9uZSBsaWNlbnNlcyBpdCBkaWZmZXJlbnRseS4gU29tZW9uZQorIyBldmVuIGFwcGx5IFVDQiB0byBpdCAoRnJlZS9OZXQvT3BlbkJTRCkuIFRoZSBtYWludGFpbmVyIHN0YXRlcyB0aGF0OgorIyAiSSd2ZSBmb3VuZCBubyByZWxpYWJsZSBzb3VyY2Ugd2hpY2ggc3RhdGVzIHRoYXQgYnlhY2MgbXVzdCBiZWFyIGEgVUNCIGNvcHlyaWdodC4iCisjIFNldHRpbmcgdG8gUEQgYXMgdGhpcyBpcyB3aGF0IHRoZSB1cHN0cmVhbSBoYXMgaXQgYXMuCisKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYWNrYWdlL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PThiMjkzMzUwM2MwNDQzZTA0MWQzMTY4ZGMwYzY1NjQwIgorcmVxdWlyZSBieWFjYy5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjk3ZmRjMDc0NWUwZmYwY2VmNWMwOWQ1N2QwYzY3NTJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwOTQwZGJmZmJjN2U5YzlkZDQ5ODVjMjUzNDljMzkwYmVlZGU4NGFlMWQ5ZmU4NmI3MWMwYWE2NTlhNmQ2OTMiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEwLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy4xMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTJlN2NjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi1TVU1NQVJZID0gIkJhc2UgcG9saWN5IGZvciBDRkVuZ2luZSIKLQotREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAotdGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKLWluIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCi1pdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiBcCi0gXAotVGhpcyBwYWNrYWdlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzdGFibGUgYmFzZSBwb2xpY3kgZm9yIFwKLWluc3RhbGxhdGlvbnMgYW5kIHVwZ3JhZGVzLCBhbmQgaXMgdXNlZCBieSBDRkVuZ2luZSAzLjYgYW5kIG5ld2VyLiBcCi0gXAotVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFja2dlIGFyZSBpbnRlbmRlZCB0byBsaXZlIGluIGAvdmFyL2NmZW5naW5lL21hc3RlcmZpbGVzYCBcCi1vciB3aGVyZXZlciBgJChzeXMubWFzdGVyZGlyKWAgcG9pbnRzLiBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9jZmVuZ2luZS5jb20iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWY3NjQyNmY5ZWY4YzZmNjczOWZhZGQyMWQ4MTdhNGYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9jZmVuZ2luZS1wYWNrYWdlLXJlcG9zLnMzLmFtYXpvbmF3cy5jb20vdGFyYmFsbHMvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTI0N2VmNGU4ZjNjZWU1ZWZhOThkYTUwYzMyNmU1YTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQxOGE4ZDcxZjQ1MWQwYjVkZDFmNWU1Nzk0NTJiMjliOTliNjY0ZjJiYjA4MjdkYmJhOWE2MTVmMjc2NGRmNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZXhwb3J0IEVYUExJQ0lUX1ZFUlNJT049IiR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1wcmVmaXg9JHtkYXRhZGlyfS9jZmVuZ2luZSIKLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS9jZmVuZ2luZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1jb3JlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRhNmFmOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEyLjAuYmIKQEAgLTAsMCArMSwzNiBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworU1VNTUFSWSA9ICJCYXNlIHBvbGljeSBmb3IgQ0ZFbmdpbmUiCisKK0RFU0NSSVBUSU9OID0gIkNGRW5naW5lIGlzIGFuIElUIGluZnJhc3RydWN0dXJlIGF1dG9tYXRpb24gZnJhbWV3b3JrIFwKK3RoYXQgaGVscHMgZW5naW5lZXJzLCBzeXN0ZW0gYWRtaW5pc3RyYXRvcnMgYW5kIG90aGVyIHN0YWtlaG9sZGVycyBcCitpbiBhbiBJVCBzeXN0ZW0gdG8gbWFuYWdlIGFuZCB1bmRlcnN0YW5kIElUIGluZnJhc3RydWN0dXJlIHRocm91Z2hvdXQgXAoraXRzIGxpZmVjeWNsZS4gQ0ZFbmdpbmUgdGFrZXMgc3lzdGVtcyBmcm9tIEJ1aWxkIHRvIERlcGxveSwgTWFuYWdlIGFuZCBBdWRpdC4gXAorIFwKK1RoaXMgcGFja2FnZSBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgc3RhYmxlIGJhc2UgcG9saWN5IGZvciBcCitpbnN0YWxsYXRpb25zIGFuZCB1cGdyYWRlcywgYW5kIGlzIHVzZWQgYnkgQ0ZFbmdpbmUgMy42IGFuZCBuZXdlci4gXAorIFwKK1RoZSBjb250ZW50cyBvZiB0aGlzIHBhY2tnZSBhcmUgaW50ZW5kZWQgdG8gbGl2ZSBpbiBgL3Zhci9jZmVuZ2luZS9tYXN0ZXJmaWxlc2AgXAorb3Igd2hlcmV2ZXIgYCQoc3lzLm1hc3RlcmRpcilgIHBvaW50cy4gXAorIgorCitIT01FUEFHRSA9ICJodHRwOi8vY2ZlbmdpbmUuY29tIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTlmNzY0MjZmOWVmOGM2ZjY3MzlmYWRkMjFkODE3YTRmIgorCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ1OWJkOGM5NTYyMGRhODE2YzM4MmY3NDlkNDI1ODYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjNTBlM2Q4YzcwMjA5N2UxM2EyMTI1ODYyNmQ5MzZkNmZmMmU2NDkyZTg5M2RmZTI4NmZmMGQ2MjA0ZDdhNjUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2V4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKKworRVhUUkFfT0VDT05GID0gIi0tcHJlZml4PSR7ZGF0YWRpcn0vY2ZlbmdpbmUiCisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vY2ZlbmdpbmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS9jaGFuZ2UtaGFyZC1jb2RlZC1saWItcGF0aC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS9jaGFuZ2UtaGFyZC1jb2RlZC1saWItcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI5NWU0MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUvY2hhbmdlLWhhcmQtY29kZWQtbGliLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLXByb2psaWJkaXIgdXNlIGEgaGFyZCBjb2RlZCBsaWIgcGF0aCwgdGhpcyB3aWxsIGNhdXNlIGVycm9yIHdoZW4gYnVpbGQgYSA2NGJpdAotdGFyZ2V0LiBTbyBjaGFuZ2UgaXQgdG8gc3VpdGFibGUgcGF0aC4KLQotU2lnbmVkLW9mZi1ieTogU29uZy5MaSA8U29uZy5MaUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAzOGUyYjljLi5iYzZiOTk2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODgsNyArMTg4LDcgQEAgQVNfSUYoW3Rlc3QgeCIkZW5hYmxlX2ZocyIgPSB4eWVzXSwgWwotICAgZmkKLSAKLSAgIHNiaW5kaXI9JyR7ZXhlY19wcmVmaXh9L2JpbicgIyAvdmFyL2NmZW5naW5lL2JpbiBkZXNwaXRlIGJlaW5nIHNiaW5fPwotLSAgcHJvamxpYmRpcj0nJHtleGVjX3ByZWZpeH0vbGliJwotKyAgcHJvamxpYmRpcj0nJHtsaWJkaXJ9JwotICAgbWFuZGlyPScke2V4ZWNfcHJlZml4fS9zaGFyZS9tYW4nCi0gXSkKLSAKLS0tIAotMS43LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lL3NldC1wYXRoLW9mLWRlZmF1bHQtY29uZmlnLWZpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUvc2V0LXBhdGgtb2YtZGVmYXVsdC1jb25maWctZmlsZS5wYXRjaAppbmRleCBiOTUyNmYyLi5kYjY5Zjk1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUvc2V0LXBhdGgtb2YtZGVmYXVsdC1jb25maWctZmlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUvc2V0LXBhdGgtb2YtZGVmYXVsdC1jb25maWctZmlsZS5wYXRjaApAQCAtMSwyMyArMSwzOCBAQAorRnJvbSBkYzI3MDA0MGNiM2JlYjVjYTQyZjg2NDgxMzE0NWM4YTY4NTk0YmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE4IEp1bCAyMDE2IDA5OjA2OjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNmZW5naW5lOiBhZGQgcmVjaXBlIGFuZCBiYXNlIHBvbGljeQorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNldCB0aGUgcGF0aCBvZiBkZWZhdWx0IGNvbmZpZ3VyZSBmaWxlLgogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKwogLS0tCisgbWlzYy9pbml0LmQvY2ZlbmdpbmUzLmluIHwgMTIgKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL21pc2MvaW5pdC5kL2NmZW5naW5lMy5pbiBiL21pc2MvaW5pdC5kL2NmZW5naW5lMy5pbgotaW5kZXggZDZhZTI2Zi4uMWRlZTI4MyAxMDA2NDQKK2luZGV4IGM1ODQ4MTcuLjEyZjU4MDMgMTAwNjQ0CiAtLS0gYS9taXNjL2luaXQuZC9jZmVuZ2luZTMuaW4KICsrKyBiL21pc2MvaW5pdC5kL2NmZW5naW5lMy5pbgotQEAgLTEwMSwxMSArMTAxLDcgQEAgaWYgWyAteiAiJExPQ0tESVIiIF07IHRoZW4KK0BAIC0xMDEsMTQgKzEwMSwxMCBAQCBpZiBbIC16ICIkTE9DS0RJUiIgXTsgdGhlbgogIGZpCiAgCiAgIyBkZWZhdWx0IGNvbnRyb2wgZmlsZQogLWlmIFsgIiRERUJJQU4iID0gIjEiIF07IHRoZW4KIC0gICAgREVGQVVMVD0vZXRjL2RlZmF1bHQvY2ZlbmdpbmUzCistICAgIElOSVRfRlVOQ1RJT05TPS9saWIvbHNiL2luaXQtZnVuY3Rpb25zCistICAgIGlmIFsgLWUgIiRJTklUX0ZVTkNUSU9OUyIgXTsgdGhlbgorLSAgICAgICAgLiAiJElOSVRfRlVOQ1RJT05TIgorLSAgICBmaQogLWVsc2UKIC0gICAgREVGQVVMVD0vZXRjL3N5c2NvbmZpZy9jZmVuZ2luZTMKLS1maQogK0RFRkFVTFQ9L2V0Yy9kZWZhdWx0L2NmZW5naW5lMworK0lOSVRfRlVOQ1RJT05TPS9saWIvbHNiL2luaXQtZnVuY3Rpb25zCisraWYgWyAtZSAiJElOSVRfRlVOQ1RJT05TIiBdOyB0aGVuCisrICAgIC4gIiRJTklUX0ZVTkNUSU9OUyIKKyBmaQogIAogIGlmIFsgLWYgJERFRkFVTFQgXTsgdGhlbgotICAgICAuICRERUZBVUxUCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg2YjBhMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotU1VNTUFSWSA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayIKLQotREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAotdGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKLWluIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCi1pdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgotCi1ERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGFuZ2UtaGFyZC1jb2RlZC1saWItcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxNmJhZjA4MTg5YTFhZjZmY2YyZTJmZjYxMTAyOTkyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0ZmE5YWM3Mjc2ZGJhN2I4NWQ2NzU3YWFiMmYwOTI5YWI4ZDNiMTE1Y2IwZTdiMGNmOTg0NzYwMzQ3NDI5ZDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKLQotZXhwb3J0IEVYUExJQ0lUX1ZFUlNJT049IiR7UFZ9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY2ZlbmdpbmUzLnNlcnZpY2UgY2YtYXBhY2hlLnNlcnZpY2UgY2YtaHViLnNlcnZpY2UgY2YtcG9zdGdyZXMuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2YtcnVuYWxlcnRzLnNlcnZpY2UgY2YtY29uc3VtZXIuc2VydmljZSBjZi1leGVjZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjZi1tb25pdG9yZC5zZXJ2aWNlICBjZi1yZWRpcy1zZXJ2ZXIuc2VydmljZSAgY2Ytc2VydmVyZC5zZXJ2aWNlIFwKLSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnBjcmUgb3BlbnNzbCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgtbGlieG1sMj15ZXMsLS13aXRoLWxpYnhtbDI9bm8sbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWw9eWVzLC0td2l0aC1teXNxbD1ubyxteXNxbCwiCi1QQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1wb3N0Z3Jlc3FsPXllcywtLXdpdGgtcG9zdGdyZXNxbD1ubyxwb3N0Z3Jlc3FsLCIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtbGliYWNsPXllcywtLXdpdGgtbGliYWNsPW5vLGFjbCwiCi1QQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0td2l0aC1saWJ2aXJ0PXllcywtLXdpdGgtbGlidmlydD1ubyxsaWJ2aXJ0LCIKLVBBQ0tBR0VDT05GSUdbbGlicGNyZV0gPSAiLS13aXRoLXBjcmU9eWVzLC0td2l0aC1wY3JlPW5vLGxpYnBjcmUsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbD15ZXMsLS13aXRoLW9wZW5zc2w9bm8sb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbT15ZXMsLS13aXRoLXBhbT1ubyxsaWJwYW0sIgotUEFDS0FHRUNPTkZJR1tsaWJ5YW1sXSA9ICItLXdpdGgtbGlieWFtbCwtLXdpdGhvdXQtbGlieWFtbCxsaWJ5YW1sLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtc2VydmljZT0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0td2l0aG91dC1zeXN0ZW1kLXNlcnZpY2UiCi1QQUNLQUdFQ09ORklHW2xpYmN1cmxdID0gIi0td2l0aC1saWJjdXJsLC0td2l0aG91dC1saWJjdXJsLGN1cmwsIgotCi1FWFRSQV9PRUNPTkYgPSAiaHdfY3ZfZnVuY192YV9jb3B5PXllcyAtLXdpdGgtaW5pdC1zY3JpcHQ9JHtzeXNjb25mZGlyfS9pbml0LmQgLS13aXRoLXRva3lvY2FiaW5ldCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluCi0gICAgZm9yIGYgaW4gYGxzICR7RH0ke2JpbmRpcn1gOyBkbwotICAgICAgICBsbiAtcyAke2JpbmRpcn0vYGJhc2VuYW1lICRmYCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vYmluLwotICAgIGRvbmUKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGNhdCA8PCBFT0YgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2NmZW5naW5lMwotUlVOX0NGX1NFUlZFUkQ9MQotUlVOX0NGX0VYRUNEPTEKLVJVTl9DRl9NT05JVE9SRD0xCi1SVU5fQ0ZfSFVCPTAKLUVPRgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IC1EICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jZmVuZ2luZTMgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NmZW5naW5lMwotICAgICAgICBzZWQgLWkgLWUgJ3MjL2V0Yy9pbml0LmQjJHtkYXRhZGlyfS8ke0JQTn0jJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8qLnNlcnZpY2UKLSAgICBmaQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiJHtCUE59LW1hc3RlcmZpbGVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQwMTIzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZV8zLjEyLjAuYmIKQEAgLTAsMCArMSw3MiBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworU1VNTUFSWSA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayIKKworREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAordGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKK2luIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCitpdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgorCitERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgorCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzNlZjEyMjYwZGI0YjQzMDM1MjIyOWYzN2Y3Y2IwZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDcxYmE5OGEyNzIzOTBjNmZhOGJjMjBlOGVhMjdmMDA1MGEwYTcyYTNlNmIyMDZhNDc2MmI0NjQ2YmUzMzJlYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitleHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjZmVuZ2luZTMuc2VydmljZSBjZi1hcGFjaGUuc2VydmljZSBjZi1odWIuc2VydmljZSBjZi1wb3N0Z3Jlcy5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjZi1ydW5hbGVydHMuc2VydmljZSBjZi1leGVjZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjZi1tb25pdG9yZC5zZXJ2aWNlICBjZi1zZXJ2ZXJkLnNlcnZpY2UgXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgorCitQQUNLQUdFQ09ORklHID8/PSAibGlicGNyZSBvcGVuc3NsIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC1saWJ4bWwyPXllcywtLXdpdGgtbGlieG1sMj1ubyxsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbD15ZXMsLS13aXRoLW15c3FsPW5vLG15c3FsLCIKK1BBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS13aXRoLXBvc3RncmVzcWw9eWVzLC0td2l0aC1wb3N0Z3Jlc3FsPW5vLHBvc3RncmVzcWwsIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1saWJhY2w9eWVzLC0td2l0aC1saWJhY2w9bm8sYWNsLCIKK1BBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS13aXRoLWxpYnZpcnQ9eWVzLC0td2l0aC1saWJ2aXJ0PW5vLGxpYnZpcnQsIgorUEFDS0FHRUNPTkZJR1tsaWJwY3JlXSA9ICItLXdpdGgtcGNyZT15ZXMsLS13aXRoLXBjcmU9bm8sbGlicGNyZSwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPXllcywtLXdpdGgtb3BlbnNzbD1ubyxvcGVuc3NsLCIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtPXllcywtLXdpdGgtcGFtPW5vLGxpYnBhbSwiCitQQUNLQUdFQ09ORklHW2xpYnlhbWxdID0gIi0td2l0aC1saWJ5YW1sLC0td2l0aG91dC1saWJ5YW1sLGxpYnlhbWwsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC1zZXJ2aWNlPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRob3V0LXN5c3RlbWQtc2VydmljZSIKK1BBQ0tBR0VDT05GSUdbbGliY3VybF0gPSAiLS13aXRoLWxpYmN1cmwsLS13aXRob3V0LWxpYmN1cmwsY3VybCwiCisKK0VYVFJBX09FQ09ORiA9ICJod19jdl9mdW5jX3ZhX2NvcHk9eWVzIC0td2l0aC1pbml0LXNjcmlwdD0ke3N5c2NvbmZkaXJ9L2luaXQuZCAtLXdpdGgtdG9reW9jYWJpbmV0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4KKyAgICBmb3IgZiBpbiBgbHMgJHtEfSR7YmluZGlyfWA7IGRvCisgICAgICAgIGxuIC1zICR7YmluZGlyfS9gYmFzZW5hbWUgJGZgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4vCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisgICAgY2F0IDw8IEVPRiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2ZlbmdpbmUzCitSVU5fQ0ZfU0VSVkVSRD0xCitSVU5fQ0ZfRVhFQ0Q9MQorUlVOX0NGX01PTklUT1JEPTEKK1JVTl9DRl9IVUI9MAorRU9GCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NmZW5naW5lMyAke0R9JHtkYXRhZGlyfS8ke0JQTn0vY2ZlbmdpbmUzCisgICAgICAgIHNlZCAtaSAtZSAncyMvZXRjL2luaXQuZCMke2RhdGFkaXJ9LyR7QlBOfSMnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorICAgIGZpCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICIke0JQTn0tbWFzdGVyZmlsZXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY21waS1iaW5kaW5ncy9jbXBpLWJpbmRpbmdzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jbXBpLWJpbmRpbmdzL2NtcGktYmluZGluZ3NfMS4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jbXBpLWJpbmRpbmdzL2NtcGktYmluZGluZ3NfZ2l0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY21waS1iaW5kaW5ncy9jbXBpLWJpbmRpbmdzXzEuMC4xLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2gKaW5kZXggMWNlYWNkOC4uNWVlNzVjYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZGl0aW9uYWxseS1jaGVjay1saWJ2aXJ0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaApAQCAtMSwyOCArMSwzMSBAQAotW1BBVENIXSBjb25kaXRpb25hbGx5IGNoZWNrIGxpYnZpcnQKK0Zyb20gMzg1YmYxYzJlYzU3OTQyZTE3ZWU1MjllNTdlZWYwZGNkOTk5MDRlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMSBTZXAgMjAxNSAxNzowMDozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSBbUEFUQ0hdIGNvbmRpdGlvbmFsbHkgY2hlY2sgbGlidmlydAogCiBVcHN0cmVhbS1TdGF0dWU6IFBlbmRpbmcKIAogY2hlY2sgaWYgbGlidmlydCBpcyBhdmFpbGFibGUgb25seSB3aGVuIGEgdXNlciB3YW50cyB0byB1c2UgbGlidmlydAogCiBTaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxNCArKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBjb2xsZWN0ZC01LjcuMS9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb2xsZWN0ZC01LjcuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGNvbGxlY3RkLTUuNy4xL2NvbmZpZ3VyZS5hYwotQEAgLTU1NTYsMTIgKzU1NTYsMTQgQEAgZWxzZQotIAl3aXRoX2xpYnhtbDI9Im5vIChwa2ctY29uZmlnIGRvZXNuJ3Qga25vdyBsaWJ4bWwtMi4wKSIKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEzICsrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxMDFkNmY5Zi4uYTdlY2E5N2QgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU3NTgsMTEgKzU3NTgsMTQgQEAgZWxzZQorICAgd2l0aF9saWJ4bWwyPSJubyAocGtnLWNvbmZpZyBkb2Vzbid0IGtub3cgbGlieG1sLTIuMCkiCiAgZmkKICAKIC0kUEtHX0NPTkZJRyAtLWV4aXN0cyBsaWJ2aXJ0IDI+L2Rldi9udWxsCi0taWYgdGVzdCAiJD8iID0gIjAiCi0tdGhlbgotLQl3aXRoX2xpYnZpcnQ9InllcyIKKy1pZiB0ZXN0ICQ/ID0gMDsgdGhlbgorLSAgd2l0aF9saWJ2aXJ0PSJ5ZXMiCiAtZWxzZQotLQl3aXRoX2xpYnZpcnQ9Im5vIChwa2ctY29uZmlnIGRvZXNuJ3Qga25vdyBsaWJ2aXJ0KSIKKy0gIHdpdGhfbGlidmlydD0ibm8gKHBrZy1jb25maWcgZG9lc24ndCBrbm93IGxpYnZpcnQpIgogK2lmIHRlc3QgIngkZW5hYmxlX2xpYnZpcnQiID0gInh5ZXMiOyB0aGVuCiArCSRQS0dfQ09ORklHIC0tZXhpc3RzIGxpYnZpcnQgMj4vZGV2L251bGwKICsJaWYgdGVzdCAiJD8iID0gIjAiCkBAIC0zMiw1ICszNSw1IEBACiArCQl3aXRoX2xpYnZpcnQ9Im5vIChwa2ctY29uZmlnIGRvZXNuJ3Qga25vdyBsaWJ2aXJ0KSIKICsJZmkKICBmaQotIGlmIHRlc3QgIngkd2l0aF9saWJ4bWwyIiA9ICJ4eWVzIgotIHRoZW4KKyAKKyBpZiB0ZXN0ICJ4JHdpdGhfbGlieG1sMiIgPSAieHllcyI7IHRoZW4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCmluZGV4IDUwNjlhNjMuLmQyYzcyNjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjQ1OWM1NWU0OTY4MzIxZTVhODIyNzJjYjM5YWE2OWQ0MDU0OTkwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjBhNjRkYjkwYTI0NDY5ZTM2OTc4Yzc0ODQxN2ViZTQ1NmIzNGQ1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDIyIEFwciAyMDE3IDExOjU0OjU3IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24gY29tcGlsZXIKQEAgLTE0LDM1ICsxNCwyNiBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDMgKy0KLSBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQgfCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAgMSArCisgbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODg1NDU0Mi4uZWRiOGNmYiAxMDA2NDQKK2luZGV4IGE3ZWNhOTdkLi41NjBlYjk4OCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNCw3ICs0LDYgQEAgQUNfSU5JVChbY29sbGVjdGRdLFttNF9lc3lzY21kKC4vdmVyc2lvbi1nZW4uc2gpXSkKLSBBQ19DT05GSUdfU1JDRElSKHNyYy90YXJnZXRfc2V0LmMpCi0gQUNfQ09ORklHX0hFQURFUlMoc3JjL2NvbmZpZy5oKQotIEFDX0NPTkZJR19BVVhfRElSKFtsaWJsdGRsL2NvbmZpZ10pCi0tCi0gZG5sIG9sZGVyIGF1dG9tYWtlJ3MgZGVmYXVsdCBvZiBBUkZMQUdTPWNydSBpcyBub2lzeSBvbiBuZXdlciBiaW51dGlsczsKLSBkbmwgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdGhlICd1JyBldmVuIGluIG9sZGVyIHRvb2xjaGFpbnMuICBUaGVuIHRoZXJlIGlzCi0gZG5sIG9sZGVyIGxpYnRvb2wsIHdoaWNoIHNwZWxsZWQgaXQgQVJfRkxBR1MKLUBAIC02Njg4LDYgKzY2ODcsOCBAQCB0aGVuCi0gICAgICAgICBBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVdlcnJvciIKLSAgICAgICAgIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVdlcnJvciIKK0BAIC02Nzk0LDYgKzY3OTQsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV93ZXJyb3IiICE9ICJ4bm8iOyB0aGVuCisgICBBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVdlcnJvciIKKyAgIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVdlcnJvciIKICBmaQogK0FYX0NIRUNLX0NPTVBJTEVfRkxBRyhbLVdlcnJvciAtV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQotKworIAogIEFDX1NVQlNUKFtBTV9DRkxBR1NdKQogIEFDX1NVQlNUKFtBTV9DWFhGTEFHU10pCi0gCiBkaWZmIC0tZ2l0IGEvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00IGIvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGNhYmI5MgoraW5kZXggMDAwMDAwMDAuLmRjYWJiOTJhCiAtLS0gL2Rldi9udWxsCiArKysgYi9tNC9heF9jaGVja19jb21waWxlX2ZsYWcubTQKIEBAIC0wLDAgKzEsNzQgQEAKQEAgLTEyMCw2ICsxMTEsMyBAQAogKyAgW200X2RlZmF1bHQoWyQzXSwgOildKQogK0FTX1ZBUl9QT1BERUYoW0NBQ0hFVkFSXSlkbmwKICtdKWRubCBBWF9DSEVDS19DT01QSUxFX0ZMQUdTCi0tLSAKLTIuMTMuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwNS1EaXNhYmxlLW5ldy1nY2M4LXdhcm5pbmdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDUtRGlzYWJsZS1uZXctZ2NjOC13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTI2OTBiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDUtRGlzYWJsZS1uZXctZ2NjOC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIGQ2NWU0OGI2ODA3NmQ1YjMwNGU2ZDg2NTk2NzAwM2FlMWZlYTBlNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA5IE1heSAyMDE4IDIxOjQ1OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgbmV3IGdjYzggd2FybmluZ3MKKworR0NDIHNlZW1zIHRvIGJlIG5vdCBhYmxlIHRvIGRldGVjdCB0aGUgY2hlY2tzIGZvciBzaXplIGFyZQorYWxyZWFkeSBpbiBwbGFjZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2NvbGxlY3RkL2NvbGxlY3RkL3B1bGwvMjc2OF0KKyBzcmMvbGliY29sbGVjdGRjbGllbnQvbmV0d29ya19wYXJzZS5jIHwgNyArKysrKysrCisgc3JjL3dyaXRlX3NlbnN1LmMgICAgICAgICAgICAgICAgICAgICB8IDcgKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmNvbGxlY3RkY2xpZW50L25ldHdvcmtfcGFyc2UuYyBiL3NyYy9saWJjb2xsZWN0ZGNsaWVudC9uZXR3b3JrX3BhcnNlLmMKK2luZGV4IDIzNjVhYjBhLi43OWU2ZWQ5NiAxMDA2NDQKKy0tLSBhL3NyYy9saWJjb2xsZWN0ZGNsaWVudC9uZXR3b3JrX3BhcnNlLmMKKysrKyBiL3NyYy9saWJjb2xsZWN0ZGNsaWVudC9uZXR3b3JrX3BhcnNlLmMKK0BAIC0xNjMsNiArMTYzLDExIEBAIHN0YXRpYyBpbnQgcGFyc2VfaW50KHZvaWQgKnBheWxvYWQsIHNpemVfdCBwYXlsb2FkX3NpemUsIHVpbnQ2NF90ICpvdXQpIHsKKyAgIHJldHVybiAwOworIH0KKyAKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjaWYgX19HTlVDX18gPT0gOAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC10cnVuY2F0aW9uIgorKyNlbmRpZgorKworIHN0YXRpYyBpbnQgcGFyc2Vfc3RyaW5nKHZvaWQgKnBheWxvYWQsIHNpemVfdCBwYXlsb2FkX3NpemUsIGNoYXIgKm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0X3NpemUpIHsKKyAgIGNoYXIgKmluID0gcGF5bG9hZDsKK0BAIC0xNzUsNiArMTgwLDggQEAgc3RhdGljIGludCBwYXJzZV9zdHJpbmcodm9pZCAqcGF5bG9hZCwgc2l6ZV90IHBheWxvYWRfc2l6ZSwgY2hhciAqb3V0LAorICAgcmV0dXJuIDA7CisgfQorIAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisrCisgc3RhdGljIGludCBwYXJzZV9pZGVudGlmaWVyKHVpbnQxNl90IHR5cGUsIHZvaWQgKnBheWxvYWQsIHNpemVfdCBwYXlsb2FkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxjY192YWx1ZV9saXN0X3QgKnN0YXRlKSB7CisgICBjaGFyIGJ1ZltMQ0NfTkFNRV9MRU5dOworZGlmZiAtLWdpdCBhL3NyYy93cml0ZV9zZW5zdS5jIGIvc3JjL3dyaXRlX3NlbnN1LmMKK2luZGV4IGNlMjNlNjU0Li42M2UxZjU5OSAxMDA2NDQKKy0tLSBhL3NyYy93cml0ZV9zZW5zdS5jCisrKysgYi9zcmMvd3JpdGVfc2Vuc3UuYworQEAgLTU2OSw2ICs1NjksMTEgQEAgc3RhdGljIGNoYXIgKnNlbnN1X3ZhbHVlX3RvX2pzb24oc3RydWN0IHNlbnN1X2hvc3QgY29uc3QgKmhvc3QsIC8qIHt7eyAqLworICAgcmV0dXJuIHJldF9zdHI7CisgfSAvKiB9fX0gY2hhciAqc2Vuc3VfdmFsdWVfdG9fanNvbiAqLworIAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyNpZiBfX0dOVUNfXyA9PSA4CisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N0cmluZ29wLW92ZXJmbG93IgorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC10cnVuY2F0aW9uIgorKyNlbmRpZgorIC8qCisgICogVXNlcyByZXBsYWNlX3N0cjIoKSBpbXBsZW1lbnRhdGlvbiBmcm9tCisgICogaHR0cDovL2NyZWF0aXZlYW5kY3JpdGljYWwubmV0L3N0ci1yZXBsYWNlLWMvCitAQCAtNjMxLDYgKzYzNiw4IEBAIHN0YXRpYyBjaGFyICpyZXBsYWNlX3N0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKm9sZCwgLyoge3t7ICovCisgICByZXR1cm4gcmV0OworIH0gLyogfX19IGNoYXIgKnJlcGxhY2Vfc3RyICovCisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKysKKyBzdGF0aWMgY2hhciAqcmVwbGFjZV9qc29uX3Jlc2VydmVkKGNvbnN0IGNoYXIgKm1lc3NhZ2UpIC8qIHt7eyAqLworIHsKKyAgIGNoYXIgKm1zZyA9IHJlcGxhY2Vfc3RyKG1lc3NhZ2UsICJcXCIsICJcXFxcIik7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvbm8tZ2NyeXB0LWJhZHBhdGgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvbm8tZ2NyeXB0LWJhZHBhdGgucGF0Y2gKaW5kZXggMWZkZTZhMC4uZjEyYjE2YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC9uby1nY3J5cHQtYmFkcGF0aC5wYXRjaApAQCAtMSw0MyArMSwzNyBAQAotSW5kZXg6IGNvbGxlY3RkLTUuNy4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbGxlY3RkLTUuNy4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgY29sbGVjdGQtNS43LjEvY29uZmlndXJlLmFjCi1AQCAtMjMwNSw3ICsyMzA1LDcgQEAgQUNfQVJHX1dJVEgobGliZ2NyeXB0LCBbQVNfSEVMUF9TVFJJTkcoWwotIAkgd2l0aF9saWJnY3J5cHQ9InllcyIKLSAgZWxzZSBpZiB0ZXN0IC1mICIkd2l0aHZhbC9iaW4vZ2NyeXB0LWNvbmZpZyIgJiYgdGVzdCAteCAiJHdpdGh2YWwvYmluL2djcnlwdC1jb25maWciCi0gIHRoZW4KLS0JIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0iJHdpdGh2YWwvYmluL2djcnlwdC1jb25maWciCi0rCSB3aXRoX2xpYmdjcnlwdF9jb25maWc9IiR3aXRodmFsL2Jpbi9wa2ctY29uZmlnIgotIAkgd2l0aF9saWJnY3J5cHQ9InllcyIKLSAgZWxzZSBpZiB0ZXN0IC1kICIkd2l0aHZhbCIKLSAgdGhlbgotQEAgLTIzMTMsMTIgKzIzMTMsMTIgQEAgQUNfQVJHX1dJVEgobGliZ2NyeXB0LCBbQVNfSEVMUF9TVFJJTkcoWwotIAkgR0NSWVBUX0xERkxBR1M9IiRHQ1JZUFRfTERGTEFHUyAtTCR3aXRodmFsL2xpYiIKLSAJIHdpdGhfbGliZ2NyeXB0PSJ5ZXMiCi0gIGVsc2UKLS0JIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0iZ2NyeXB0LWNvbmZpZyIKLSsJIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0icGtnLWNvbmZpZyIKLSAJIHdpdGhfbGliZ2NyeXB0PSIkd2l0aHZhbCIKLSAgZmk7IGZpOyBmaQotIF0sCi0gWwotLSB3aXRoX2xpYmdjcnlwdF9jb25maWc9ImxpYmdjcnlwdC1jb25maWciCi0rIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0icGtnLWNvbmZpZyIKLSAgd2l0aF9saWJnY3J5cHQ9InllcyIKLSBdKQotIAotQEAgLTIzMjYsMTIgKzIzMjYsMTIgQEAgaWYgdGVzdCAieCR3aXRoX2xpYmdjcnlwdCIgPSAieHllcyIgJiYgdAotIHRoZW4KLSAJaWYgdGVzdCAieCRHQ1JZUFRfQ1BQRkxBR1MiID0gIngiCi0gCXRoZW4KLS0JCUdDUllQVF9DUFBGTEFHUz1gIiR3aXRoX2xpYmdjcnlwdF9jb25maWciIC0tY2ZsYWdzIDI+L2Rldi9udWxsYAotKwkJR0NSWVBUX0NQUEZMQUdTPWAiJHdpdGhfbGliZ2NyeXB0X2NvbmZpZyIgLS1jZmxhZ3MgbGliZ2NyeXB0IDI+L2Rldi9udWxsYAotIAlmaQotIAotIAlpZiB0ZXN0ICJ4JEdDUllQVF9MSUJTIiA9ICJ4IgotIAl0aGVuCi0tCQlHQ1JZUFRfTElCUz1gIiR3aXRoX2xpYmdjcnlwdF9jb25maWciIC0tbGlicyAyPi9kZXYvbnVsbGAKLSsJCUdDUllQVF9MSUJTPWAiJHdpdGhfbGliZ2NyeXB0X2NvbmZpZyIgLS1saWIgbGliZ2NyeXB0IDI+L2Rldi9udWxsYAotIAlmaQotIGZpCi0gCitGcm9tIGQ5Yjk1NGJkOWQwYjA4NGQ5YTFmNTE1OWE5ZjBjNDU4MDJhNTE4MDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjIgQXByIDIwMTMgMTY6Mjg6MTYgKzAwMDAKKworLS0tCisgY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGU4NjlhNmEwLi4xMDFkNmY5ZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjUxNCwyMCArMjUxNCwyMCBAQCBBQ19BUkdfV0lUSChbbGliZ2NyeXB0XSwKKyAgICAgaWYgdGVzdCAtZiAiJHdpdGh2YWwiICYmIHRlc3QgLXggIiR3aXRodmFsIjsgdGhlbgorICAgICAgIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0iJHdpdGh2YWwiCisgICAgICAgd2l0aF9saWJnY3J5cHQ9InllcyIKKy0gICAgZWxzZSBpZiB0ZXN0IC1mICIkd2l0aHZhbC9iaW4vZ2NyeXB0LWNvbmZpZyIgJiYgdGVzdCAteCAiJHdpdGh2YWwvYmluL2djcnlwdC1jb25maWciOyB0aGVuCistICAgICAgd2l0aF9saWJnY3J5cHRfY29uZmlnPSIkd2l0aHZhbC9iaW4vZ2NyeXB0LWNvbmZpZyIKKysgICAgZWxzZSBpZiB0ZXN0IC1mICIkd2l0aHZhbC9iaW4vcGtnLWNvbmZpZyIgJiYgdGVzdCAteCAiJHdpdGh2YWwvYmluL3BrZy1jb25maWciOyB0aGVuCisrICAgICAgd2l0aF9saWJnY3J5cHRfY29uZmlnPSIkd2l0aHZhbC9iaW4vcGtnLWNvbmZpZyIKKyAgICAgICB3aXRoX2xpYmdjcnlwdD0ieWVzIgorICAgICBlbHNlIGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgorICAgICAgIEdDUllQVF9DUFBGTEFHUz0iJEdDUllQVF9DUFBGTEFHUyAtSSR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgR0NSWVBUX0xERkxBR1M9IiRHQ1JZUFRfTERGTEFHUyAtTCR3aXRodmFsL2xpYiIKKyAgICAgICB3aXRoX2xpYmdjcnlwdD0ieWVzIgorICAgICBlbHNlCistICAgICAgd2l0aF9saWJnY3J5cHRfY29uZmlnPSJnY3J5cHQtY29uZmlnIgorKyAgICAgIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0icGtnLWNvbmZpZyIKKyAgICAgICB3aXRoX2xpYmdjcnlwdD0iJHdpdGh2YWwiCisgICAgIGZpOyBmaTsgZmkKKyAgIF0sCisgICBbCistICAgIHdpdGhfbGliZ2NyeXB0X2NvbmZpZz0ibGliZ2NyeXB0LWNvbmZpZyIKKysgICAgd2l0aF9saWJnY3J5cHRfY29uZmlnPSJsaWJwa2ctY29uZmlnIgorICAgICB3aXRoX2xpYmdjcnlwdD0ieWVzIgorICAgXQorICkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE1NmVhMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3RzIGFuZCBzdW1tYXJpc2VzIHN5c3RlbSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIgotREVTQ1JJUFRJT04gPSAiY29sbGVjdGQgaXMgYSBkYWVtb24gd2hpY2ggY29sbGVjdHMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MgcGVyaW9kaWNhbGx5IGFuZCBwcm92aWRlcyBtZWNoYW5pc21zIHRvIHN0b3JlIHRoZSB2YWx1ZXMgaW4gYSB2YXJpZXR5IG9mIHdheXMsIGZvciBleGFtcGxlIGluIFJSRCBmaWxlcy4iCi1MSUNFTlNFID0gIkdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWJkMjFmMTlmN2YwYzYxYTdiZThlY2FjYjBlMjg4NTQiCi0KLURFUEVORFMgPSAicnJkdG9vbCBjdXJsIGxpYnBjYXAgbGlieG1sMiB5YWpsIGxpYmdjcnlwdCBsaWJ0b29sIGx2bTIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NvbGxlY3RkLm9yZy9maWxlcy9jb2xsZWN0ZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2NvbGxlY3RkLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1nY3J5cHQtYmFkcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC10by1idWlsZC13aXRoLWdsaWJjLTIuMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZGEyYjY5YzI4NmEwNjRkYjM1YzZjYzFlNzU4YjAzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDIwYTAyMjE1NjlhOGQ2YjgwYmJjNTJiODZlNWU4NDk2NWY1YmFmZGJmNWRmYzM3OTBlMGZlZDA3NjNlNTkyIgotCi1pbmhlcml0IGF1dG90b29scyBweXRob25uYXRpdmUgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvbGxlY3RkLnNlcnZpY2UiCi0KLSMgRmxvYXRpbmdwb2ludCBsYXlvdXQsIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQKLSMgJ25vdGhpbmcnLCAnZW5kaWFuZmxpcCcgb3IgJ2ludHN3YXAnCi1GUExBWU9VVCA/PSAiLS13aXRoLWZwLWxheW91dD1ub3RoaW5nIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tvcGVuamRrXSA9ICItLXdpdGgtamF2YT0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vanZtLC0td2l0aG91dC1qYXZhLG9wZW5qZGstNyIKLVBBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCAtLXdpdGgtbGlibmV0c25tcD1ubyxuZXQtc25tcCIKLVBBQ0tBR0VDT05GSUdbbGlibWVtY2FjaGVkXSA9ICItLXdpdGgtbGlibWVtY2FjaGVkLC0td2l0aG91dC1saWJtZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS1lbmFibGUtaXB0YWJsZXMsLS1kaXNhYmxlLWlwdGFibGVzLGlwdGFibGVzIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPW5vLHBvc3RncmVzcWwiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9bm8sbXlzcWw1IgotUEFDS0FHRUNPTkZJR1tkYmldID0gIi0tZW5hYmxlLWRiaSwtLWRpc2FibGUtZGJpLGxpYmRiaSIKLVBBQ0tBR0VDT05GSUdbbW9kYnVzXSA9ICItLWVuYWJsZS1tb2RidXMsLS1kaXNhYmxlLW1vZGJ1cyxsaWJtb2RidXMiCi1QQUNLQUdFQ09ORklHW2xpYm93Y2FwaV0gPSAiLS13aXRoLWxpYm93Y2FwaSwtLXdpdGhvdXQtbGlib3djYXBpLG93ZnMiCi1QQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPW5vLGxtc2Vuc29ycyIKLVBBQ0tBR0VDT05GSUdbYW1xcF0gPSAiLS1lbmFibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9eWVzLCBcCi0gICAgICAgIC0tZGlzYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT1ubyxyYWJiaXRtcS1jIgotIyBwcm90b2J1Zi1jLCBsaWJ2aXJ0IHRoYXQgYXJlIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSBpbiBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyCi1QQUNLQUdFQ09ORklHW3BpbmJhXSA9ICItLWVuYWJsZS1waW5iYSwtLWRpc2FibGUtcGluYmEscHJvdG9idWYtYy1uYXRpdmUgcHJvdG9idWYtYyIKLVBBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS1lbmFibGUtbGlidmlydCwtLWRpc2FibGUtbGlidmlydCxsaWJ2aXJ0IgotUEFDS0FHRUNPTkZJR1tsaWJlc210cF0gPSAiLS13aXRoLWxpYmVzbXRwLC0td2l0aG91dC1saWJlc210cCxsaWJlc210cCIKLVBBQ0tBR0VDT05GSUdbbGlibW5sXSA9ICItLXdpdGgtbGlibW5sLC0td2l0aG91dC1saWJtbmwsbGlibW5sIgotUEFDS0FHRUNPTkZJR1tsaWJhdGFzbWFydF0gPSAiLS13aXRoLWxpYmF0YXNtYXJ0LC0td2l0aG91dC1saWJhdGFzbWFydCxsaWJhdGFzbWFydCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtb3BlbmxkYXAgLS13aXRoLWxpYmxkYXAsLS1kaXNhYmxlLW9wZW5sZGFwIC0td2l0aG91dC1saWJsZGFwLCBvcGVubGRhcCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgJHtGUExBWU9VVH0gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wZXJsIC0td2l0aC1saWJwZXJsPW5vIC0td2l0aC1wZXJsLWJpbmRpbmdzPW5vIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ2NyeXB0PSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xpYmdjcnlwdC1jb25maWcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ub3RpZnlfZGVza3RvcCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY29sbGVjdGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotCi0gICAgIyBGaXggY29uZmlndXJhdGlvbiBmaWxlIHRvIGFsbG93IGNvbGxlY3RkIHRvIHN0YXJ0IHVwCi0gICAgc2VkIC1pICdzIV4jRlFETkxvb2t1cFsgXHRdKnRydWUhRlFETkxvb2t1cCAgIGZhbHNlIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKLQotICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCi0gICAgIyBJbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jb2xsZWN0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY29sbGVjdGQuc2VydmljZQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mIgotCi1JTklUU0NSSVBUX05BTUUgPSAiY29sbGVjdGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKLQotIyB0aHJlc2hvbGQuc28gbG9hZC5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBnZWdsCi0jIGRpc2suc28gaXMgYWxzbyBwcm92aWRlZCBieSBsaWJncGhvdG8yLWNhbWxpYnMKLVBSSVZBVEVfTElCUyA9ICJ0aHJlc2hvbGQuc28gbG9hZC5zbyBkaXNrLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmOWZhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS44LjAuYmIKQEAgLTAsMCArMSw4NyBAQAorU1VNTUFSWSA9ICJDb2xsZWN0cyBhbmQgc3VtbWFyaXNlcyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyIKK0RFU0NSSVBUSU9OID0gImNvbGxlY3RkIGlzIGEgZGFlbW9uIHdoaWNoIGNvbGxlY3RzIHN5c3RlbSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzIHBlcmlvZGljYWxseSBhbmQgcHJvdmlkZXMgbWVjaGFuaXNtcyB0byBzdG9yZSB0aGUgdmFsdWVzIGluIGEgdmFyaWV0eSBvZiB3YXlzLCBmb3IgZXhhbXBsZSBpbiBSUkQgZmlsZXMuIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFiZDIxZjE5ZjdmMGM2MWE3YmU4ZWNhY2IwZTI4ODU0IgorCitERVBFTkRTID0gInJyZHRvb2wgY3VybCBsaWJwY2FwIGxpYnhtbDIgeWFqbCBsaWJnY3J5cHQgbGlidG9vbCBsdm0yIgorCitTUkNfVVJJID0gImh0dHA6Ly9jb2xsZWN0ZC5vcmcvZmlsZXMvY29sbGVjdGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2NvbGxlY3RkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbm8tZ2NyeXB0LWJhZHBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtdG8tYnVpbGQtd2l0aC1nbGliYy0yLjI1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtbmV3LWdjYzgtd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYTg0MTE1OTMyMzYyNGYxOGJmMDMxOThlOWY1YWEzNjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjA2ZmY0NzZiYmYwNTUzM2NiOTdhZTY3NDkyNjJjYzNjNzZjOTk2OWYwMzJiZDg0OTY2OTAwODRkZGViMTVjOSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9ubmF0aXZlIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjb2xsZWN0ZC5zZXJ2aWNlIgorCisjIEZsb2F0aW5ncG9pbnQgbGF5b3V0LCBhcmNoaXRlY3R1cmUgZGVwZW5kZW50CisjICdub3RoaW5nJywgJ2VuZGlhbmZsaXAnIG9yICdpbnRzd2FwJworRlBMQVlPVVQgPz0gIi0td2l0aC1mcC1sYXlvdXQ9bm90aGluZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbb3Blbmpka10gPSAiLS13aXRoLWphdmE9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtsaWJkaXJ9L2p2bSwtLXdpdGhvdXQtamF2YSxvcGVuamRrLTciCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAgLS13aXRoLWxpYm5ldHNubXA9bm8sbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW2xpYm1lbWNhY2hlZF0gPSAiLS13aXRoLWxpYm1lbWNhY2hlZCwtLXdpdGhvdXQtbGlibWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0tZW5hYmxlLWlwdGFibGVzLC0tZGlzYWJsZS1pcHRhYmxlcyxpcHRhYmxlcyIKK1BBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS1lbmFibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT1ubyxwb3N0Z3Jlc3FsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPXllcywgXAorICAgICAgICAtLWRpc2FibGUtbXlzcWwgLS13aXRoLWxpYm15c3FsPW5vLG15c3FsNSIKK1BBQ0tBR0VDT05GSUdbZGJpXSA9ICItLWVuYWJsZS1kYmksLS1kaXNhYmxlLWRiaSxsaWJkYmkiCitQQUNLQUdFQ09ORklHW21vZGJ1c10gPSAiLS1lbmFibGUtbW9kYnVzLC0tZGlzYWJsZS1tb2RidXMsbGlibW9kYnVzIgorUEFDS0FHRUNPTkZJR1tsaWJvd2NhcGldID0gIi0td2l0aC1saWJvd2NhcGksLS13aXRob3V0LWxpYm93Y2FwaSxvd2ZzIgorUEFDS0FHRUNPTkZJR1tzZW5zb3JzXSA9ICItLWVuYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPXllcywgXAorICAgICAgICAtLWRpc2FibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz1ubyxsbXNlbnNvcnMiCitQQUNLQUdFQ09ORklHW2FtcXBdID0gIi0tZW5hYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPXllcywgXAorICAgICAgICAtLWRpc2FibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9bm8scmFiYml0bXEtYyIKKyMgcHJvdG9idWYtYywgbGlidmlydCB0aGF0IGFyZSBjdXJyZW50bHkgb25seSBhdmFpbGFibGUgaW4gbWV0YS12aXJ0dWFsaXphdGlvbiBsYXllcgorUEFDS0FHRUNPTkZJR1twaW5iYV0gPSAiLS1lbmFibGUtcGluYmEsLS1kaXNhYmxlLXBpbmJhLHByb3RvYnVmLWMtbmF0aXZlIHByb3RvYnVmLWMiCitQQUNLQUdFQ09ORklHW2xpYnZpcnRdID0gIi0tZW5hYmxlLXZpcnQsLS1kaXNhYmxlLXZpcnQsbGlidmlydCIKK1BBQ0tBR0VDT05GSUdbbGliZXNtdHBdID0gIi0td2l0aC1saWJlc210cCwtLXdpdGhvdXQtbGliZXNtdHAsbGliZXNtdHAiCitQQUNLQUdFQ09ORklHW2xpYm1ubF0gPSAiLS13aXRoLWxpYm1ubCwtLXdpdGhvdXQtbGlibW5sLGxpYm1ubCIKK1BBQ0tBR0VDT05GSUdbbGliYXRhc21hcnRdID0gIi0td2l0aC1saWJhdGFzbWFydCwtLXdpdGhvdXQtbGliYXRhc21hcnQsbGliYXRhc21hcnQiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLW9wZW5sZGFwIC0td2l0aC1saWJsZGFwLC0tZGlzYWJsZS1vcGVubGRhcCAtLXdpdGhvdXQtbGlibGRhcCwgb3BlbmxkYXAiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgICR7RlBMQVlPVVR9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcGVybCAtLXdpdGgtbGlicGVybD1ubyAtLXdpdGgtcGVybC1iaW5kaW5ncz1ubyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWxpYmdjcnlwdD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9saWJnY3J5cHQtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtbm90aWZ5X2Rlc2t0b3AgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2NvbGxlY3RkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhXlBBVEg9LiohUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBpbnN0YWxsIC1EbSAwNjQwICR7Qn0vc3JjL2NvbGxlY3RkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZgorICAgICMgRml4IGNvbmZpZ3VyYXRpb24gZmlsZSB0byBhbGxvdyBjb2xsZWN0ZCB0byBzdGFydCB1cAorICAgIHNlZCAtaSAncyFeI0ZRRE5Mb29rdXBbIFx0XSp0cnVlIUZRRE5Mb29rdXAgICBmYWxzZSFnJyAke0R9JHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKworICAgICMgSW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY29sbGVjdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NvbGxlY3RkLnNlcnZpY2UKK30KKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZiIKKworSU5JVFNDUklQVF9OQU1FID0gImNvbGxlY3RkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKKyMgdGhyZXNob2xkLnNvIGxvYWQuc28gYXJlIGFsc28gcHJvdmlkZWQgYnkgZ2VnbAorIyBkaXNrLnNvIGlzIGFsc28gcHJvdmlkZWQgYnkgbGliZ3Bob3RvMi1jYW1saWJzCitQUklWQVRFX0xJQlMgPSAidGhyZXNob2xkLnNvIGxvYWQuc28gZGlzay5zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE3MTIwOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kaWFsb2cvZGlhbG9nXzEuMy0yMDE3MTIwOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNjNjVjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxNzEyMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gImRpc3BsYXkgZGlhbG9nIGJveGVzIGZyb20gc2hlbGwgc2NyaXB0cyIKLURFU0NSSVBUSU9OID0gIkRpYWxvZyBsZXRzIHlvdSB0byBwcmVzZW50IGEgdmFyaWV0eSBvZiBxdWVzdGlvbnMgXAotb3IgZGlzcGxheSBtZXNzYWdlcyB1c2luZyBkaWFsb2cgYm94ZXMgZnJvbSBhIHNoZWxsIFwKLXNjcmlwdCAob3IgYW55IHNjcmlwdGluZyBsYW5ndWFnZSkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmludmlzaWJsZS1pc2xhbmQubmV0LyR7QlBOfS8ke0JQfS50Z3ogXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjZmMjhiZWNhOTAwYjU0ZjVmYzkwZmRjY2U5MzUwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMDEzOTQ0MjExOWUyZWZmNWMzNTIzNmU4ZTVlMzEzYzkwMTUzOTAwOGQ5Y2NjZjhjOGFiMzg1MWI0MTI2N2U2IgotCi0jIGhhcmRjb2RlZCBoZXJlIGZvciB1c2UgaW4gZGlhbG9nLXN0YXRpYyByZWNpcGUKLVMgPSAiJHtXT1JLRElSfS9kaWFsb2ctJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1uY3Vyc2VzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGdudS1jb25maWdpemUgLS1mb3JjZQotICAgIHNlZCAtaSAncywke2NmX25jdWNvbmZpZ19yb290fTYtY29uZmlnLCR7Y2ZfbmN1Y29uZmlnX3Jvb3R9LWNvbmZpZyxnJyAtaSBjb25maWd1cmUKLSAgICBzZWQgLWkgJ3MsY2ZfaGF2ZV9uY3Vjb25maWc9dW5rbm93bixjZl9oYXZlX25jdWNvbmZpZz15ZXMsZycgLWkgY29uZmlndXJlCi0gICAgb2VfcnVuY29uZgotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTgwNjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RpYWxvZy9kaWFsb2dfMS4zLTIwMTgwNjIxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ODc5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGlhbG9nL2RpYWxvZ18xLjMtMjAxODA2MjEuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJkaXNwbGF5IGRpYWxvZyBib3hlcyBmcm9tIHNoZWxsIHNjcmlwdHMiCitERVNDUklQVElPTiA9ICJEaWFsb2cgbGV0cyB5b3UgdG8gcHJlc2VudCBhIHZhcmlldHkgb2YgcXVlc3Rpb25zIFwKK29yIGRpc3BsYXkgbWVzc2FnZXMgdXNpbmcgZGlhbG9nIGJveGVzIGZyb20gYSBzaGVsbCBcCitzY3JpcHQgKG9yIGFueSBzY3JpcHRpbmcgbGFuZ3VhZ2UpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5pbnZpc2libGUtaXNsYW5kLm5ldC8ke0JQTn0vJHtCUH0udGd6IFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMWRiYTA5Y2Y0NWFjNGJhNDBiM2NiNGEzZjFkNjk0YjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGE0ODU5ZTJiMjJkMjRlNDZjMWE1MjliNWE1NjA1Yjk1NTAzYWEwNGRhNDQzMmY3YmJkNzEzZTNlODY3NTg3YSIKKworIyBoYXJkY29kZWQgaGVyZSBmb3IgdXNlIGluIGRpYWxvZy1zdGF0aWMgcmVjaXBlCitTID0gIiR7V09SS0RJUn0vZGlhbG9nLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtbmN1cnNlcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2siCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UKKyAgICBzZWQgLWkgJ3MsJHtjZl9uY3Vjb25maWdfcm9vdH02LWNvbmZpZywke2NmX25jdWNvbmZpZ19yb290fS1jb25maWcsZycgLWkgY29uZmlndXJlCisgICAgc2VkIC1pICdzLGNmX2hhdmVfbmN1Y29uZmlnPXVua25vd24sY2ZfaGF2ZV9uY3Vjb25maWc9eWVzLGcnIC1pIGNvbmZpZ3VyZQorICAgIG9lX3J1bmNvbmYKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZ251cGxvdC9nbnVwbG90XzUuMi4yLmJiCmluZGV4IDRjYzI4OWQuLmY5ZmQ4YWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9nbnVwbG90L2dudXBsb3RfNS4yLjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2dudXBsb3QvZ251cGxvdF81LjIuMi5iYgpAQCAtNjAsMTAgKzYwLDEyIEBACiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ251cGxvdC5wbmcgJHtEfSR7ZGF0YWRpcn0vcGl4bWFwcy8KIH0KIAotUEFDS0FHRVMgPSsgIiR7UE59LXgxMS1kYmcgJHtQTn0teDExIgorUEFDS0FHRVMgPSsgIiR7UE59LXgxMSIKKworUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQTn0teDExLWRiZyIKKwogREVTQ1JJUFRJT05fJHtQTn0teDExID0gIlgxMSBkaXNwbGF5IHRlcm1pbmFsIGZvciBHbnVwbG90LiIKIFNFQ1RJT05fJHtQTn0teDExID0gIngxMS9zY2llbnRpZmljIgogRklMRVNfJHtQTn0teDExID0gIiR7bGliZXhlY2Rpcn0gJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgJHtkYXRhZGlyfS9waXhtYXBzICR7bGliZGlyfS9YMTEgIgogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZXhtZiIKLUZJTEVTXyR7UE59LXgxMS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vZ251cGxvdC8qLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaGF2ZWdlZC9oYXZlZ2VkXzEuOS4yLmJiCmluZGV4IDA1ZWU4NDIuLmJmMTM2NzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9oYXZlZ2VkL2hhdmVnZWRfMS45LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hhdmVnZWQvaGF2ZWdlZF8xLjkuMi5iYgpAQCAtMTIsNiArMTIsOCBAQAogU1JDX1VSSVttZDVzdW1dID0gImZiMWQ4YjNkY2JiOWQwNmIzMGVjY2Q4YWE1MDBmZDMxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3N2Q5YWRiZGY0MjFiNjE2MDFmYTI5ZmFhOWNlM2I0NzlkOTEwZjczYzY2YjllMzY0YmE4NjQyY2NiZmJlNzAiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lmlzc2lob3N0cy5jb20vaGF2ZWdlZC9kb3dubG9hZHMuaHRtbCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAogCiBFWFRSQV9PRUNPTkYgPSAiXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHdsb2MvaHdsb2NfMS4xMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjQxNTVlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuMTAuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJQb3J0YWJsZSBIYXJkd2FyZSBMb2NhbGl0eSAoaHdsb2MpIHNvZnR3YXJlIHBhY2thZ2UiCitERVNDUklQVElPTiA9ICJUaGUgUG9ydGFibGUgSGFyZHdhcmUgTG9jYWxpdHkgKGh3bG9jKSBzb2Z0d2FyZSBwYWNrYWdlIFwKKyBwcm92aWRlcyBhIHBvcnRhYmxlIGFic3RyYWN0aW9uIG9mIHRoZSBoaWVyYXJjaGljYWwgdG9wb2xvZ3kgb2YgbW9kZXJuIFwKKyBhcmNoaXRlY3R1cmVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm9wZW4tbXBpLm9yZy9zb2Z0d2FyZS9od2xvYy8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyODJlMjBkYzNjZWMzMTFkZWRhM2M2ZDRiMWY5OTBiIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lm9wZW4tbXBpLm9yZy9zb2Z0d2FyZS8ke0JQTn0vdjEuMTEvZG93bmxvYWRzLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMDk4MWEwMTkzNTk4MmFhN2U4NTBhOTZlMGMzMDU3YjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmJlODA4MzgzZDgzMzc4NDZmZTc3Y2U0OWM3YWQzMzM2ZmI2ODU3NTA1NDk0ZDg1YzBhYzAzZjIyYzViZDFlNyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lm9wZW4tbXBpLm9yZy9zb2Z0d2FyZS9od2xvYy92MS4xMS8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitERVBFTkRTICs9ICJuY3Vyc2VzIHVkZXYgemxpYiIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdsaWJzZWxpbnV4JywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/PSAicGNpIGxpYnhtbDIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tudW1hY3RsXSA9ICItLWVuYWJsZS1saWJudW1hLC0tZGlzYWJsZS1saWJudW1hLG51bWFjdGwsbnVtYWN0bCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS1lbmFibGUtbGlieG1sMiwtLWRpc2FibGUtbGlieG1sMixsaWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgY2Fpcm8sY2Fpcm8iCitQQUNLQUdFQ09ORklHW3BjaV0gPSAiLS1lbmFibGUtcGNpLC0tZGlzYWJsZS1wY2ksbGlicGNpYWNjZXNzLGxpYnBjaWFjY2VzcyIKKworIyBTcGxpdCBod2xvYyBsaWJyYXJ5IGludG8gc2VwYXJhdGUgc3VicGFja2FnZQorUEFDS0FHRVNfcHJlcGVuZCA9ICIgbGliaHdsb2MgIgorRklMRVNfbGliaHdsb2MgKz0gIiR7bGliZGlyfS9saWJod2xvYy5zby4qIgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmh3bG9jICg9ICR7RVhURU5EUEtHVn0pIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9od2xvYy9od2xvY18xLjExLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhMzM1YjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2h3bG9jL2h3bG9jXzEuMTEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiUG9ydGFibGUgSGFyZHdhcmUgTG9jYWxpdHkgKGh3bG9jKSBzb2Z0d2FyZSBwYWNrYWdlIgotREVTQ1JJUFRJT04gPSAiVGhlIFBvcnRhYmxlIEhhcmR3YXJlIExvY2FsaXR5IChod2xvYykgc29mdHdhcmUgcGFja2FnZSBcCi0gcHJvdmlkZXMgYSBwb3J0YWJsZSBhYnN0cmFjdGlvbiBvZiB0aGUgaGllcmFyY2hpY2FsIHRvcG9sb2d5IG9mIG1vZGVybiBcCi0gYXJjaGl0ZWN0dXJlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5vcGVuLW1waS5vcmcvc29mdHdhcmUvaHdsb2MvIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMjgyZTIwZGMzY2VjMzExZGVkYTNjNmQ0YjFmOTkwYiIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5vcGVuLW1waS5vcmcvc29mdHdhcmUvJHtQTn0vdjEuMTEvZG93bmxvYWRzLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTZjMzQxMzZmZjQxNmQyYjEzYTc4MjFjMjc0NzdiZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTVkODAyODZkZmU2NThhM2Y3OWUyYWM5MDY5ODc4MmJiMzZlNTUwNGY0YmFjMWJiYTIzOTRiYTE0ZGJiYWQyNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLURFUEVORFMgKz0gIm5jdXJzZXMgdWRldiB6bGliIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHID89ICJwY2kgbGlieG1sMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW251bWFjdGxdID0gIi0tZW5hYmxlLWxpYm51bWEsLS1kaXNhYmxlLWxpYm51bWEsbnVtYWN0bCxudW1hY3RsIgotUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLWVuYWJsZS1saWJ4bWwyLC0tZGlzYWJsZS1saWJ4bWwyLGxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBjYWlybyxjYWlybyIKLVBBQ0tBR0VDT05GSUdbcGNpXSA9ICItLWVuYWJsZS1wY2ksLS1kaXNhYmxlLXBjaSxsaWJwY2lhY2Nlc3MsbGlicGNpYWNjZXNzIgotCi0jIFNwbGl0IGh3bG9jIGxpYnJhcnkgaW50byBzZXBhcmF0ZSBzdWJwYWNrYWdlCi1QQUNLQUdFU19wcmVwZW5kID0gIiBsaWJod2xvYyAiCi1GSUxFU19saWJod2xvYyArPSAiJHtsaWJkaXJ9L2xpYmh3bG9jLnNvLioiCi1SREVQRU5EU18ke1BOfSArPSAibGliaHdsb2MgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW90b3AvaW90b3BfMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lvdG9wL2lvdG9wXzAuNi5iYgppbmRleCA1ZGNhZTk4Li45NDY0M2NkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW90b3AvaW90b3BfMC42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pb3RvcC9pb3RvcF8wLjYuYmIKQEAgLTEyLDYgKzEyLDkgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ZWY5NDU2YjI2ZDc2OTRhYmYzMTAxYTcyZTFlMGQxZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRlYTJhMjRlZGE0OWJiYmFlYjRlNmVkMjA0MjM1NWI0NDFkYmQ3MTYxZTg4MzA2N2EwMmJmYzhkY2VmNzViIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3JlcG8ub3IuY3ovaW90b3AuZ2l0L3RhZ3MiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3RvcC0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKIGluaGVyaXQgZGlzdHV0aWxzCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtMjEsNCArMjQsNCBAQAogCiBSREVQRU5EU18ke1BOfSA9ICJweXRob24tY3Vyc2VzIHB5dGhvbi10ZXh0dXRpbHMgXAogICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvZGVjcyBweXRob24tY3R5cGVzIHB5dGhvbi1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIgorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIHB5dGhvbi1zdWJwcm9jZXNzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9maWxlcy8wMDAxLXR3ZWFrLWluc3RhbGwtcHJlZml4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9maWxlcy8wMDAxLXR3ZWFrLWluc3RhbGwtcHJlZml4LnBhdGNoCmluZGV4IGJjZmMxMTcuLjYxMzEwY2MgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vZmlsZXMvMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2ZpbGVzLzAwMDEtdHdlYWstaW5zdGFsbC1wcmVmaXgucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNmZmU0NzY3Zjg5ZWEwYjU0YjU3ZThiZjkwNjVhMDhhOWMzOGQ0NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE3MDUxM2ZmNTlkYTNjNTkzYzc2MzMwYWZiNDQ1YzIxNzYxYzMyNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE4IEp1bCAyMDE3IDIxOjUzOjAwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHR3ZWFrIGluc3RhbGwgcHJlZml4CitEYXRlOiBUdWUsIDMxIEp1bCAyMDE4IDE3OjE0OjI0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB0d2VhayBpbnN0YWxsIHByZWZpeAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQogCkBAIC0xMSw3ICsxMSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZGYxNmEzYi4uZmJkZmNiNCAxMDA2NDQKK2luZGV4IGM5OGNmMzUuLjdjNTkwN2YgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC0zOSwyNiArMzksMjYgQEAgcHlpc29tZDVzdW0uc286ICQoUFlPQkpTKQpAQCAtNDMsNyArNDMsNyBAQAogLQlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuaCAkKERFU1RESVIpL3Vzci9pbmNsdWRlLwogLQlpbnN0YWxsIC1tIDA2NDQgbGliaW1wbGFudGlzb21kNS5hICQoREVTVERJUikvdXNyLyQoTElCRElSKQogLQlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuYSAkKERFU1RESVIpL3Vzci8kKExJQkRJUikKLS0Jc2VkICJzI0BWRVJTSU9OQCMke1ZFUlNJT059I2c7IHMjQGluY2x1ZGVkaXJAIyR7REVTVERJUn0vdXNyL2luY2x1ZGUjZzsgcyNAbGliZGlyQCMke0RFU1RESVJ9L3Vzci8ke0xJQkRJUn0jZyIgaXNvbWQ1c3VtLnBjLmluID4gJHtERVNURElSfS91c3Ivc2hhcmUvcGtnY29uZmlnL2lzb21kNXN1bS5wYworLQlzZWQgInMjQFZFUlNJT05AIyR7VkVSU0lPTn0jZzsgcyNAaW5jbHVkZWRpckAjL3Vzci9pbmNsdWRlI2c7IHMjQGxpYmRpckAjL3Vzci8ke0xJQkRJUn0jZyIgaXNvbWQ1c3VtLnBjLmluID4gJHtERVNURElSfS91c3Ivc2hhcmUvcGtnY29uZmlnL2lzb21kNXN1bS5wYwogKwlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoaW5jbHVkZWRpcikKICsJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKGxpYmRpcikKICsJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikke2RhdGFkaXJ9L3BrZ2NvbmZpZwpAQCAtNTEsMTAgKzUxLDEwIEBACiArCWluc3RhbGwgLW0gMDY0NCBsaWJjaGVja2lzb21kNS5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCiArCWluc3RhbGwgLW0gMDY0NCBsaWJpbXBsYW50aXNvbWQ1LmEgJChERVNURElSKSQobGliZGlyKQogKwlpbnN0YWxsIC1tIDA2NDQgbGliY2hlY2tpc29tZDUuYSAkKERFU1RESVIpJChsaWJkaXIpCi0rCXNlZCAicyNAVkVSU0lPTkAjJHtWRVJTSU9OfSNnOyBzI0BpbmNsdWRlZGlyQCMke0RFU1RESVJ9L3Vzci9pbmNsdWRlI2c7IHMjQGxpYmRpckAjJHtERVNURElSfS91c3IvJHtMSUJESVJ9I2ciIGlzb21kNXN1bS5wYy5pbiA+ICR7REVTVERJUn0ke2RhdGFkaXJ9L3BrZ2NvbmZpZy9pc29tZDVzdW0ucGMKKysJc2VkICJzI0BWRVJTSU9OQCMke1ZFUlNJT059I2c7IHMjQGluY2x1ZGVkaXJAIyQoaW5jbHVkZWRpcikjZzsgcyNAbGliZGlyQCMkKGxpYmRpcikjZyIgaXNvbWQ1c3VtLnBjLmluID4gJHtERVNURElSfSR7ZGF0YWRpcn0vcGtnY29uZmlnL2lzb21kNXN1bS5wYwogIAogIGNsZWFuOgogIAlybSAtZiAqLm8gKi5zbyAqLnB5YyAqLmEgLmRlcGVuZCAqfgogLS0gCi0yLjguMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lzb21kNXN1bS9pc29tZDVzdW1fMS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE1MTEzZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIHRha2luZyB0aGUgTUQ1IHN1bSBvZiBJU08gaW1hZ2VzIgotREVTQ1JJUFRJT04gPSAiVG9vbHMgZm9yIHRha2luZyB0aGUgTUQ1IHN1bSBvZiBJU08gaW1hZ2VzIgotCi1ERVBFTkRTID0gInBvcHQgcHl0aG9uMyBvcGVuc3NsIGN1cmwgcG9wdC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICJvcGVuc3NsIGN1cmwiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2lzb21kNXN1bS5naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXR3ZWFrLWluc3RhbGwtcHJlZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZml4LXBhcmFsbGVsLWVycm9yLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLWluaGVyaXQgcHl0aG9uM25hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gIiBcCi0gICAgREVTVERJUj0nJHtEfScgXAotICAgIFBZVEhPTklOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0nIFwKLSAgICBQWVRIT05TSVRFUEFDS0FHRVM9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotfQotCi1QQUNLQUdFUyArPSAiJHtQWVRIT05fUE59LSR7UE59ICR7UFlUSE9OX1BOfS0ke1BOfS1kYmciCi0KLUZJTEVTXyR7UFlUSE9OX1BOfS0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWlzb21kNXN1bS5zbyIKLUZJTEVTXyR7UFlUSE9OX1BOfS0ke1BOfS1kYmcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnL3B5aXNvbWQ1c3VtLnNvIgotCi1TUkNSRVYgPSAiNjlkYzAzNmQyMDc2MTcxNWI3MzRjYTljYzU5ZWNjNmRjODE0NTAyNiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pc29tZDVzdW0vaXNvbWQ1c3VtXzEuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZTgzODUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaXNvbWQ1c3VtL2lzb21kNXN1bV8xLjIuMy5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIlRvb2xzIGZvciB0YWtpbmcgdGhlIE1ENSBzdW0gb2YgSVNPIGltYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRvb2xzIGZvciB0YWtpbmcgdGhlIE1ENSBzdW0gb2YgSVNPIGltYWdlcyIKKworREVQRU5EUyA9ICJwb3B0IHB5dGhvbjMgb3BlbnNzbCBjdXJsIHBvcHQtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAib3BlbnNzbCBjdXJsIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9pc29tZDVzdW0uZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10d2Vhay1pbnN0YWxsLXByZWZpeC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1wYXJhbGxlbC1lcnJvci5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKKworRVhUUkFfT0VNQUtFICs9ICIgXAorICAgIERFU1RESVI9JyR7RH0nIFwKKyAgICBQWVRIT05JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9JyBcCisgICAgUFlUSE9OU0lURVBBQ0tBR0VTPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKK30KKworUEFDS0FHRVMgKz0gIiR7UFlUSE9OX1BOfS0ke1BOfSIKKworUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fUE59LSR7UE59LWRiZyIKKworRklMRVNfJHtQWVRIT05fUE59LSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5aXNvbWQ1c3VtLnNvIgorCitTUkNSRVYgPSAiNzg2MDkwMWY3MjZmNWQ5MjY4OWNiNjcyNDNjYzdmOTgxZjIxZjc0YiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvamFuc3Nvbi9qYW5zc29uXzIuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvamFuc3Nvbi9qYW5zc29uXzIuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwZmEyMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9qYW5zc29uL2phbnNzb25fMi4xMS5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIkphbnNzb24gaXMgYSBDIGxpYnJhcnkgZm9yIGVuY29kaW5nLCBkZWNvZGluZyBhbmQgbWFuaXB1bGF0aW5nIEpTT04gZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGlnaXAub3JnL2phbnNzb24vIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YjcwMjEzZWMxNjRjN2JkODc2ZWMyMTIwYmE1MmY2MSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRpZ2lwLm9yZy9qYW5zc29uL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YWYwNzFkYjk5NzA0NDFlMWVhYWYyNTY2MjMxMGUzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZTg1ZjQyZGFiZTQ5YTc4MzFkYmRkNmQzMGRjYThhOTY2OTU2YjUxYTlhNTBlZDUzNGI4MmFmYzNmYTViMmY0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2phbnNzb24vamFuc3Nvbl8yLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvamFuc3Nvbi9qYW5zc29uXzIuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU1YjM3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvamFuc3Nvbi9qYW5zc29uXzIuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiSmFuc3NvbiBpcyBhIEMgbGlicmFyeSBmb3IgZW5jb2RpbmcsIGRlY29kaW5nIGFuZCBtYW5pcHVsYXRpbmcgSlNPTiBkYXRhIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kaWdpcC5vcmcvamFuc3Nvbi8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThiNzAyMTNlYzE2NGM3YmQ4NzZlYzIxMjBiYTUyZjYxIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZGlnaXAub3JnL2phbnNzb24vcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0YWJhZWZlZTk1MDJiMmYyZmYzOTRkNzU4ZjE2MGM3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhZDBkMDc0Y2EwNDlhMzY2MzdlN2FiZWY3NTVkNDA4NDlhZDczZTkyNmI5MzkxNGNlMjk0OTI3Yjk3YmQyYTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIKaW5kZXggMGY3OThkMi4uZjYyY2Y2YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtMzAsOSArMzAsMTAgQEAKICAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KIH0KIAotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiAke1BOfS1weXRob24tZGJnIgorUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiIKKworUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQTn0tcHl0aG9uLWRiZyIKIAogRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvX2tvbmtyZXRtb2Yuc28iCi1GSUxFU18ke1BOfS1weXRob24tZGJnID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy8uZGVidWcvKiIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDEtaW5jbHVkZS1hc20taW9jdGwuaC1leHBsaWNpdGx5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAxLWluY2x1ZGUtYXNtLWlvY3RsLmgtZXhwbGljaXRseS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJkZWRhZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDEtaW5jbHVkZS1hc20taW9jdGwuaC1leHBsaWNpdGx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBiNWNhNjRjNzM5OGQ1MTZlOTg0NWQ4NDllODMwNmRmN2FjMDI0YmM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTEgQXByIDIwMTcgMTM6NTk6MzQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBhc20vaW9jdGwuaCBleHBsaWNpdGx5Ci0KLU5lZWRlZCBmb3IgX0lPQyogZGVmaW5lcwotCi1oZWxwcyBjb21waWxpbmcgd2l0aCBtdXNsIHdoZXJlIHRoaXMgZmlsZSBpcwotbm90IGluY2x1ZGVkIGluZGlyZWN0bHkKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNlcnZlci9kcml2ZXJzL2hkNDQ3ODAtcGlmYWNlY2FkLmMgfCAxICsKLSBzZXJ2ZXIvZHJpdmVycy9oZDQ0NzgwLXNwaS5jICAgICAgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NlcnZlci9kcml2ZXJzL2hkNDQ3ODAtcGlmYWNlY2FkLmMgYi9zZXJ2ZXIvZHJpdmVycy9oZDQ0NzgwLXBpZmFjZWNhZC5jCi1pbmRleCA0M2RiMTljLi5lMjc5OGFkIDEwMDY0NAotLS0tIGEvc2VydmVyL2RyaXZlcnMvaGQ0NDc4MC1waWZhY2VjYWQuYwotKysrIGIvc2VydmVyL2RyaXZlcnMvaGQ0NDc4MC1waWZhY2VjYWQuYwotQEAgLTU0LDYgKzU0LDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotKyNpbmNsdWRlIDxhc20vaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3NwaS9zcGlkZXYuaD4KLSAKLWRpZmYgLS1naXQgYS9zZXJ2ZXIvZHJpdmVycy9oZDQ0NzgwLXNwaS5jIGIvc2VydmVyL2RyaXZlcnMvaGQ0NDc4MC1zcGkuYwotaW5kZXggNWY5NDMzMy4uOGE0MDE1YiAxMDA2NDQKLS0tLSBhL3NlcnZlci9kcml2ZXJzL2hkNDQ3ODAtc3BpLmMKLSsrKyBiL3NlcnZlci9kcml2ZXJzL2hkNDQ3ODAtc3BpLmMKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsjaW5jbHVkZSA8YXNtL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxsaW51eC9zcGkvc3BpZGV2Lmg+Ci0gCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiCmluZGV4IDk2YmM4MjYuLjkzYTA5ZjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiCkBAIC05LDE3ICs5LDE4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODgxMDY2OWYxM2I4NzM0ODQ1OWU2MTFkMzFhYjc2MCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTEwNzttZDU9NWM5MjdjZTE3NDJkNmQ1Y2RkYzQ1YjdhZDYyMzBmNzUiCiAKLUJBU0VQViA9ICIwLjUuOCIKK0JBU0VQViA9ICIwLjUuOSIKIFBWID0gIiR7QkFTRVBWfStnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJmNTE1NmUyZTQxYmI0MThmMTQ3NjFhZmVhMjJlZWU4ZWZiNDlmYjg1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xjZHByb2MvbGNkcHJvYzticmFuY2g9bGNkcHJvYy0ke0JBU0VQVn0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWFzbS1pb2N0bC5oLWV4cGxpY2l0bHkucGF0Y2ggXAorU1JDUkVWID0gImE0YjVhN2UwNThmZGQwZDkxNGE2MTEzODc0OGI1ODljMDEyOGI0NWIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGNkcHJvYy9sY2Rwcm9jIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQKIAorQ09NUEFUSUJMRV9IT1NUX2FybV9saWJjLW11c2wgPSAibnVsbCIKKwogTENEX0RSSVZFUlMgPz0gImFsbCwhaXJtYW4sIXN2Z2EiCiBMQ0RfREVGQVVMVF9EUklWRVIgPz0gImN1cnNlcyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDAxLWZpeC1jb25maWd1cmUtYW5kLWNvbXBpbGUtZmFpbHVyZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NTg4M2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDEtZml4LWNvbmZpZ3VyZS1hbmQtY29tcGlsZS1mYWlsdXJlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gODY2ODZjY2JmNDNjNWQ5ZThjOGRjOTdjNjZiYTA5ZTUyMjA1MGU1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjcgSnVsIDIwMTcgMTA6MDY6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIGZpeCBjb25maWd1cmUgYW5kIGNvbXBpbGUgZmFpbHVyZXMKLQotMS4gRml4IGRvX2NvbmZpZ3VyZSBmYWlsdXJlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXxDaGVja2luZyBoZWFkZXIgdm9sdW1lX2tleS9saWJ2b2x1bWVfa2V5LmggZXhpc3RlbmNlIGFuZCB1c2FiaWxpdHkuCi0uLi90bXAvNnR2dEsuYzoxOjM4OiBmYXRhbCBlcnJvcjogdm9sdW1lX2tleS9saWJ2b2x1bWVfa2V5Lmg6Ci1ObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci18ICNpbmNsdWRlIDx2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaD4KLXxDaGVja2luZyBoZWFkZXIgZG1yYWlkL2RtcmFpZC5oIGV4aXN0ZW5jZSBhbmQgdXNhYmlsaXR5Li4uL3RtcC8KLWt0Vko2LmM6MToyNzogZmF0YWwgZXJyb3I6IGRtcmFpZC9kbXJhaWQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotfCAjaW5jbHVkZSA8ZG1yYWlkL2RtcmFpZC5oPgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1XZSBleHBsaWN0bHkgYWRkIHZvbHVtZV9rZXkgYW5kIGRtcmFpZCB0byBERVBFTkRTLCBkbyBub3QgbmVlZAotY29uZmlndXJlIHRvIHRlc3QuCi0KLTIuIEZpeCBjb25maWcuaCBub3QgZm91bmQKLUFkZCBpdCB0byBjb25maWd1cmUuYWMKLQotMy4gQ29ycmVjdCBBQ19ERUZJTkUKLS4uLgotYXV0b2hlYWRlcjogd2FybmluZzogbWlzc2luZyB0ZW1wbGF0ZTogTElCTU9VTlRfTkVXX0VSUl9BUEkKLWF1dG9oZWFkZXI6IFVzZSBBQ19ERUZJTkUoW0xJQk1PVU5UX05FV19FUlJfQVBJXSwgW10sIFtEZXNjcmlwdGlvbl0pCi0uLi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTAgKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ0MWEzMDcuLmIwMzZlMDQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTksNiArOSw4IEBAIEFDX0RJU0FCTEVfU1RBVElDCi0gQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiAtV2FsbCAtV2Vycm9yIC1Xbm8tc3ludGF4IC1Xbm8tcG9ydGFiaWxpdHldKQotIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKLSAKLStBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotKwotIEFNX1BBVEhfUFlUSE9OCi0gCi0gQU1fUFJPR19BUgotQEAgLTE1NCw3ICsxNTYsNiBAQCBMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbS01PRF0sIFtsaWJrbW9kID49IDE5XSkKLSBBU19JRihbdGVzdCAieCR3aXRoX2NyeXB0byIgIT0gInhubyJdLAotICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JZUFRTRVRVUF0sIFtsaWJjcnlwdHNldHVwID49IDEuNi43XSkKLSAgICAgICAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW05TU10sIFtuc3MgPj0gMy4xOC4wXSkKLS0gICAgICAgTElCQkxPQ0tERVZfQ0hFQ0tfSEVBREVSKFt2b2x1bWVfa2V5L2xpYnZvbHVtZV9rZXkuaF0sIFskR0xJQl9DRkxBR1MgJE5TU19DRkxBR1NdLCBbbGlidm9sdW1lX2tleS5oIG5vdCBhdmFpbGFibGVdKQotICAgICAgIF0sCi0gICAgICAgW10pCi0gCi1AQCAtMTYyLDEwICsxNjMsNiBAQCBBU19JRihbdGVzdCAieCR3aXRoX2RtIiAhPSAieG5vIiAtbyAieCR3aXRoX2x2bSIgIT0gInhubyIgLW8gIngkd2l0aF9sdm1fZGJ1cyIgIQotICAgICAgIFtMSUJCTE9DS0RFVl9QS0dfQ0hFQ0tfTU9EVUxFUyhbREVWTUFQUEVSXSwgW2Rldm1hcHBlciA+PSAxLjAyLjkzXSldLAotICAgICAgIFtdKQotIAotLUFTX0lGKFt0ZXN0ICJ4JHdpdGhfZG0iICE9ICJ4bm8iXSwKLS0gICAgICBbTElCQkxPQ0tERVZfQ0hFQ0tfSEVBREVSKFtkbXJhaWQvZG1yYWlkLmhdLCBbXSwgW2RtcmFpZC5oIG5vdCBhdmFpbGFibGVdKV0sCi0tICAgICAgW10pCi0tCi0gQVNfSUYoW3Rlc3QgIngkd2l0aF9wYXJ0IiAhPSAieG5vIiAtbyAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCi0gICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtQQVJURURdLCBbbGlicGFydGVkID49IDMuMV0pXQotICAgICAgIFtdKQotQEAgLTE3NCw3ICsxNzEsOCBAQCBBU19JRihbdGVzdCAieCR3aXRoX2ZzIiAhPSAieG5vIl0sCi0gICAgICAgW0xJQkJMT0NLREVWX1BLR19DSEVDS19NT0RVTEVTKFtNT1VOVF0sIFttb3VudCA+PSAyLjIzLjBdKQotICAgICAgICAjIG5ldyB2ZXJzaW9ucyBvZiBsaWJtb3VudCBoYXMgc29tZSBuZXcgZnVuY3Rpb25zIHdlIGNhbiB1c2UKLSAgICAgICAgQVNfSUYoWyRQS0dfQ09ORklHIC0tYXRsZWFzdC12ZXJzaW9uPTIuMzAuMCBtb3VudF0sCi0tICAgICAgICAgICAgIFtBQ19ERUZJTkUoW0xJQk1PVU5UX05FV19FUlJfQVBJXSldLCBbXSkKLSsgICAgICAgICAgICAgW0FDX0RFRklORShbTElCTU9VTlRfTkVXX0VSUl9BUEldLCBbMV0sIFtuZXcgdmVyc2lvbnMgb2YgbGlibW91bnQgaGFzIHNvbWUgbmV3IGZ1bmN0aW9ucyB3ZSBjYW4gdXNlXSldLAotKyAgICAgICAgICAgICBbXSkKLSAKLSAgICAgICAgTElCQkxPQ0tERVZfUEtHX0NIRUNLX01PRFVMRVMoW0JMS0lEXSwgW2Jsa2lkID49IDIuMjMuMF0pCi0gICAgICAgICMgb2xkZXIgdmVyc2lvbnMgb2YgbGliYmxraWQgZG9uJ3Qgc3VwcG9ydCBCTEtJRF9TVUJMS1NfQkFEQ1NVTSBzbyBsZXQncyBqdXN0Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDItcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcxOTc1OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA0MGRhZTdlYTY0NTBjYjMwZjA2NmRhODQ0M2VhYmYwNjNiNWIwYWQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCA4IE1heSAyMDE3IDAyOjA1OjQwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSByZW1vdmUgcHl0aG9uMiBzdXBwb3J0Ci0KLU9ubHkgcHl0aG9uMyBpcyByZXF1aXJlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3ci1pbnN0YWxsZXIgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9weXRob24vZ2kvb3ZlcnJpZGVzL01ha2VmaWxlLmFtIHwgNSAtLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvTWFrZWZpbGUuYW0gYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9NYWtlZmlsZS5hbQotaW5kZXggYTI5MjdhYy4uNjM4NTUwMiAxMDA2NDQKLS0tLSBhL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9NYWtlZmlsZS5hbQotQEAgLTEsOCArMSwzIEBACi0tcHlsaWJkaXIgPSAkKHNoZWxsIHB5dGhvbiAtYyAiaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJHtleGVjX3ByZWZpeH0nKSkiKQotLQotLW92ZXJyaWRlc2RpciA9ICQocHlsaWJkaXIpL2dpL292ZXJyaWRlcwotLWRpc3Rfb3ZlcnJpZGVzX0RBVEEgPSBCbG9ja0Rldi5weQotLQotIGlmIFdJVEhfUFlUSE9OMwotIHB5M2xpYmRpciA9ICQoc2hlbGwgcHl0aG9uMyAtYyAiaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJHtleGVjX3ByZWZpeH0nKSkiKQotIHB5M292ZXJyaWRlc2RpciA9ICQocHkzbGliZGlyKS9naS9vdmVycmlkZXMKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjNWI1ZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDMtcmVtb3ZlLWRtcmFpZC13aGlsZS1jb21waWxpbmctd2l0aC13aXRoLWRtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkyICswLDAgQEAKLUZyb20gYmRhN2M5MzdiYTU0NDE4MmE1Y2FlMmE5Y2YwYzE3M2UwYmEyNjhjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjcgSnVsIDIwMTcgMDk6NDc6MjMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIHJlbW92ZSBkbXJhaWQgd2hpbGUgY29tcGlsaW5nIHdpdGggLS13aXRoLWRtCi0KLUZpeCB0aGUgZm9sbG93aW5nIGZhaWx1cmU6Ci0KLS4uLgotUGVyaGFwcyB5b3Ugc2hvdWxkIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYGRtcmFpZC5wYycKLXRvIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKLU5vIHBhY2thZ2UgJ2RtcmFpZCcgZm91bmQKLS4uLgotCi0uLi4KLS4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9kbS5jOjI0OjEwOiBmYXRhbCBlcnJvcjogZG1yYWlkL2RtcmFpZC5oOiBObwotc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+Ci0gICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn4KLS4uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaSAgICAgICAgICB8ICA1MCAtLS0tLS0KLSBzcmMvcGx1Z2lucy9NYWtlZmlsZS5hbSAgICAgICAgICAgICB8ICAgMiArLQotIHNyYy9wbHVnaW5zL2RtLmMgICAgICAgICAgICAgICAgICAgIHwgMzMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9wbHVnaW5zL2RtLmggICAgICAgICAgICAgICAgICAgIHwgICA1IC0KLSBzcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weSB8ICAgNiAtCi0gNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMzkyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYi9wbHVnaW5fYXBpcy9kbS5hcGkgYi9zcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaQotaW5kZXggMDRmZDhkOC4uNWQzMGI2YSAxMDA2NDQKLS0tLSBhL3NyYy9saWIvcGx1Z2luX2FwaXMvZG0uYXBpCi0rKysgYi9zcmMvbGliL3BsdWdpbl9hcGlzL2RtLmFwaQotQEAgLTExMSw1MyArMTExLDMgQEAgZ2NoYXIqIGJkX2RtX2dldF9zdWJzeXN0ZW1fZnJvbV9uYW1lIChjb25zdCBnY2hhciAqZGV2aWNlX25hbWUsIEdFcnJvciAqKmVycm9yKTsKLSAgKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9NQVAtJUJEX0RNX1RFQ0hfTU9ERV9RVUVSWQotICAqLwotIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhY3RpdmVfb25seSwgR0Vycm9yICoqZXJyb3IpOwotLQotLS8qKgotLSAqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzOgotLSAqIEBuYW1lOiAoYWxsb3ctbm9uZSk6IG5hbWUgb2YgdGhlIG1lbWJlcgotLSAqIEB1dWlkOiAoYWxsb3ctbm9uZSk6IHV1aWQgb2YgdGhlIG1lbWJlcgotLSAqIEBtYWpvcjogbWFqb3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAotLSAqIEBtaW5vcjogbWlub3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAotLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCi0tICoKLS0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCkgKGFycmF5IHplcm8tdGVybWluYXRlZD0xKTogbGlzdCBvZiBuYW1lcyBvZiB0aGUgUkFJRCBzZXRzIHJlbGF0ZWQgdG8KLS0gKiB0aGUgbWVtYmVyIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IKLS0gKgotLSAqIE9uZSBvZiBAbmFtZSwgQHV1aWQgb3IgQG1ham9yOkBtaW5vciBoYXMgdG8gYmUgZ2l2ZW4uCi0tICoKLS0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX01PREVfUVVFUlkKLS0gKi8KLS1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKLS0KLS0vKioKLS0gKiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldDoKLS0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gYWN0aXZhdGUKLS0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQotLSAqCi0tICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKLS0gKgotLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfQ1JFQVRFX0FDVElWQVRFCi0tICovCi0tZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcik7Ci0tCi0tLyoqCi0tICogYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldDoKLS0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gZGVhY3RpdmF0ZQotLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCi0tICoKLS0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBSQUlEIHNldCBAbmFtZSB3YXMgc3VjY2Vzc2Z1bGx5IGRlYWN0aXZhdGUgb3Igbm90Ci0tICoKLS0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1JFTU9WRV9ERUFDVElWQVRFCi0tICovCi0tZ2Jvb2xlYW4gYmRfZG1fZGVhY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKLS0KLS0vKioKLS0gKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZToKLS0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gZ2V0IHRoZSB0eXBlIG9mCi0tICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKLS0gKgotLSAqIFJldHVybnM6IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgQG5hbWUgUkFJRCBzZXQncyB0eXBlCi0tICoKLS0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX1FVRVJZCi0tICovCi0tZ2NoYXIqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlIChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL01ha2VmaWxlLmFtIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KLWluZGV4IGI2OWM4ZjcuLjc1NzVmNGEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0KLUBAIC03NSw3ICs3NSw3IEBAIGVuZGlmCi0gCi0gaWYgV0lUSF9ETQotIGxpYmJkX2RtX2xhX0NGTEFHUyA9ICQoR0xJQl9DRkxBR1MpICQoREVWTUFQUEVSX0NGTEFHUykgJChVREVWX0NGTEFHUykgLVdhbGwgLVdleHRyYSAtV2Vycm9yCi0tbGliYmRfZG1fbGFfTElCQUREID0gJChHTElCX0xJQlMpICQoREVWTUFQUEVSX0xJQlMpICQoVURFVl9MSUJTKSAtbGRtcmFpZCAke2J1aWxkZGlyfS8uLi91dGlscy9saWJiZF91dGlscy5sYQotK2xpYmJkX2RtX2xhX0xJQkFERCA9ICQoR0xJQl9MSUJTKSAkKERFVk1BUFBFUl9MSUJTKSAkKFVERVZfTElCUykgJHtidWlsZGRpcn0vLi4vdXRpbHMvbGliYmRfdXRpbHMubGEKLSBsaWJiZF9kbV9sYV9MREZMQUdTID0gLUwke3NyY2Rpcn0vLi4vdXRpbHMvIC12ZXJzaW9uLWluZm8gMjowOjAgLVdsLC0tbm8tdW5kZWZpbmVkCi0gIyBEZWFyIGF1dGhvciBvZiBsaWJkbWRyYWlkLCBWRVJTSU9OIHJlYWxseSBpcyBub3QgYSBnb29kIG5hbWUgZm9yIGFuIGVudW0gbWVtYmVyIQotIGxpYmJkX2RtX2xhX0NQUEZMQUdTID0gLUkke2J1aWxkZGlyfS8uLi8uLi9pbmNsdWRlLyAtVVZFUlNJT04KLWRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9kbS5jIGIvc3JjL3BsdWdpbnMvZG0uYwotaW5kZXggMGU1NDY2Yy4uMzFlYmU5NiAxMDA2NDQKLS0tLSBhL3NyYy9wbHVnaW5zL2RtLmMKLSsrKyBiL3NyYy9wbHVnaW5zL2RtLmMKLUBAIC0yMSwxNyArMjEsMTEgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGJsb2NrZGV2L3V0aWxzLmg+Ci0gI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgotLSNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+Ci0gI2luY2x1ZGUgPGxpYnVkZXYuaD4KLSAKLSAjaW5jbHVkZSAiZG0uaCIKLSAjaW5jbHVkZSAiY2hlY2tfZGVwcy5oIgotIAotLS8qIG1hY3JvcyB0YWtlbiBmcm9tIHRoZSBweWJsb2NrL2RtcmFpZC5oIGZpbGUgcGx1cyBvbmUgbW9yZSovCi0tI2RlZmluZSBmb3JfZWFjaF9yYWlkc2V0KF9jLCBfbikgbGlzdF9mb3JfZWFjaF9lbnRyeShfbiwgTENfUlMoX2MpLCBsaXN0KQotLSNkZWZpbmUgZm9yX2VhY2hfc3Vic2V0KF9ycywgX24pIGxpc3RfZm9yX2VhY2hfZW50cnkoX24sICYoX3JzKS0+c2V0cywgbGlzdCkKLS0jZGVmaW5lIGZvcl9lYWNoX2RldmljZShfcnMsIF9kKSBsaXN0X2Zvcl9lYWNoX2VudHJ5KF9kLCAmKF9ycyktPmRldnMsIGRldnMpCi0tCi0gLyoqCi0gICogU0VDVElPTjogZG0KLSAgKiBAc2hvcnRfZGVzY3JpcHRpb246IHBsdWdpbiBmb3IgYmFzaWMgb3BlcmF0aW9ucyB3aXRoIGRldmljZSBtYXBwZXIKLUBAIC0zODAsMzI3ICszNzQsMyBAQCBnYm9vbGVhbiBiZF9kbV9tYXBfZXhpc3RzIChjb25zdCBnY2hhciAqbWFwX25hbWUsIGdib29sZWFuIGxpdmVfb25seSwgZ2Jvb2xlYW4gYQotIAotICAgICByZXR1cm4gcmV0OwotIH0KLS0KLS0vKioKLS0gKiBpbml0X2RtcmFpZF9zdGFjazogKHNraXApCi0tICoKLS0gKiBJbml0aWFsaXplcyB0aGUgZG1yYWlkIHN0YWNrIGJ5IGNyZWF0aW5nIHRoZSBsaWJyYXJ5IGNvbnRleHQsIGRpc2NvdmVyaW5nCi0tICogZGV2aWNlcywgcmFpZCBzZXRzLCBldGMuCi0tICovCi0tc3RhdGljIHN0cnVjdCBsaWJfY29udGV4dCogaW5pdF9kbXJhaWRfc3RhY2sgKEdFcnJvciAqKmVycm9yKSB7Ci0tICAgIGdpbnQgcmMgPSAwOwotLSAgICBnY2hhciAqYXJndltdID0geyJibG9ja2Rldi5kbXJhaWQiLCBOVUxMfTsKLS0gICAgc3RydWN0IGxpYl9jb250ZXh0ICpsYzsKLS0KLS0gICAgLyogdGhlIGNvZGUgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIGNoZXJyeS1waWNrZWQgZnJvbSB0aGUgcHlibG9jayBjb2RlICovCi0tICAgIC8qIFhYWDogZG8gdGhpcyBhbGwganVzdCBvbmNlLCBzdG9yZSBnbG9iYWwgbGMgYW5kIHByb3ZpZGUgYSByZWluaXQKLS0gICAgICogICAgICBmdW5jdGlvbj8gKi8KLS0KLS0gICAgLyogaW5pdGlhbGl6ZSBkbXJhaWQgbGlicmFyeSBjb250ZXh0ICovCi0tICAgIGxjID0gbGliZG1yYWlkX2luaXQgKDEsIChnY2hhciAqKilhcmd2KTsKLS0KLS0gICAgcmMgPSBkaXNjb3Zlcl9kZXZpY2VzIChsYywgTlVMTCk7Ci0tICAgIGlmICghcmMpIHsKLS0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKLS0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGRpc2NvdmVyIGRldmljZXMiKTsKLS0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7Ci0tICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotLSAgICBkaXNjb3Zlcl9yYWlkX2RldmljZXMgKGxjLCBOVUxMKTsKLS0KLS0gICAgaWYgKCFjb3VudF9kZXZpY2VzIChsYywgUkFJRCkpIHsKLS0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfTk9fREVWUywKLS0gICAgICAgICAgICAgICAgICAgICAiTm8gUkFJRHMgZGlzY292ZXJlZCIpOwotLSAgICAgICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKLS0gICAgICAgIHJldHVybiBOVUxMOwotLSAgICB9Ci0tCi0tICAgIGFyZ3ZbMF0gPSBOVUxMOwotLSAgICBpZiAoIWdyb3VwX3NldCAobGMsIGFyZ3YpKSB7Ci0tICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX0ZBSUwsCi0tICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBncm91cF9zZXQiKTsKLS0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7Ci0tICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotLQotLSAgICByZXR1cm4gbGM7Ci0tfQotLQotLS8qKgotLSAqIHJhaWRfZGV2X21hdGNoZXNfc3BlYzogKHNraXApCi0tICoKLS0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGJ5IEBzeXNuYW1lIG1hdGNoZXMgdGhlIHNwZWMgZ2l2ZW4gYnkgQG5hbWUsCi0tICogICAgICAgICAgQHV1aWQsIEBtYWpvciBhbmQgQG1pbm9yCi0tICovCi0tc3RhdGljIGdib29sZWFuIHJhaWRfZGV2X21hdGNoZXNfc3BlYyAoc3RydWN0IHJhaWRfZGV2ICpyYWlkX2RldiwgY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yKSB7Ci0tICAgIGdjaGFyIGNvbnN0ICpkZXZfbmFtZSA9IE5VTEw7Ci0tICAgIGdjaGFyIGNvbnN0ICpkZXZfdXVpZDsKLS0gICAgZ2NoYXIgY29uc3QgKm1ham9yX3N0cjsKLS0gICAgZ2NoYXIgY29uc3QgKm1pbm9yX3N0cjsKLS0gICAgc3RydWN0IHVkZXYgKmNvbnRleHQ7Ci0tICAgIHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2aWNlOwotLSAgICBnYm9vbGVhbiByZXQgPSBUUlVFOwotLQotLSAgICAvKiBmaW5kIHRoZSBzZWNvbmQgJy8nIHRvIGdldCBuYW1lICh0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLwotLSAgICBkZXZfbmFtZSA9IHN0cmNociAocmFpZF9kZXYtPmRpLT5wYXRoLCAnLycpOwotLSAgICBpZiAoZGV2X25hbWUgJiYgc3RybGVuIChkZXZfbmFtZSkgPiAxKSB7Ci0tICAgICAgICBkZXZfbmFtZSsrOwotLSAgICAgICAgZGV2X25hbWUgPSBzdHJjaHIgKGRldl9uYW1lLCAnLycpOwotLSAgICB9Ci0tICAgIGlmIChkZXZfbmFtZSAmJiBzdHJsZW4gKGRldl9uYW1lKSA+IDEpIHsKLS0gICAgICAgIGRldl9uYW1lKys7Ci0tICAgIH0KLS0gICAgZWxzZQotLSAgICAgICAgZGV2X25hbWUgPSBOVUxMOwotLQotLSAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIHRoZSBuYW1lLCB3ZSBjYW5ub3QgY2hlY2sgYW55IG1hdGNoICovCi0tICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZfbmFtZSwgRkFMU0UpOwotLQotLSAgICAvKiBnX3JldHVybl92YWxfaWZfZmFpbCBhYm92ZSBjaGVja3MgdmFsdWUgb2YgZGV2X25hbWUgYW5kIHJldHVybnMgRkFMU0UgaWYKLS0gICAgICogaXQgaXMgTlVMTCBzbyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGl0IGhlcmUgKi8KLS0gICAgLyogY292ZXJpdHlbdmFyX2RlcmVmX21vZGVsXSAqLwotLSAgICBpZiAobmFtZSAmJiBzdHJjbXAgKGRldl9uYW1lLCBuYW1lKSAhPSAwKSB7Ci0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tICAgIH0KLS0KLS0gICAgY29udGV4dCA9IHVkZXZfbmV3ICgpOwotLSAgICBkZXZpY2UgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9zdWJzeXN0ZW1fc3lzbmFtZSAoY29udGV4dCwgImJsb2NrIiwgZGV2X25hbWUpOwotLSAgICBkZXZfdXVpZCA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSAoZGV2aWNlLCAiVVVJRCIpOwotLSAgICBtYWpvcl9zdHIgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUgKGRldmljZSwgIk1BSk9SIik7Ci0tICAgIG1pbm9yX3N0ciA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSAoZGV2aWNlLCAiTUlOT1IiKTsKLS0KLS0gICAgaWYgKHV1aWQgJiYgKGdfc3RyY21wMCAodXVpZCwgIiIpICE9IDApICYmIChnX3N0cmNtcDAgKHV1aWQsIGRldl91dWlkKSAhPSAwKSkKLS0gICAgICAgIHJldCA9IEZBTFNFOwotLQotLSAgICBpZiAobWFqb3IgPj0gMCAmJiAoYXRvaSAobWFqb3Jfc3RyKSAhPSBtYWpvcikpCi0tICAgICAgICByZXQgPSBGQUxTRTsKLS0KLS0gICAgaWYgKG1pbm9yID49IDAgJiYgKGF0b2kgKG1pbm9yX3N0cikgIT0gbWlub3IpKQotLSAgICAgICAgcmV0ID0gRkFMU0U7Ci0tCi0tICAgIHVkZXZfZGV2aWNlX3VucmVmIChkZXZpY2UpOwotLSAgICB1ZGV2X3VucmVmIChjb250ZXh0KTsKLS0KLS0gICAgcmV0dXJuIHJldDsKLS19Ci0tCi0tLyoqCi0tICogZmluZF9yYWlkX3NldHNfZm9yX2RldjogKHNraXApCi0tICovCi0tc3RhdGljIHZvaWQgZmluZF9yYWlkX3NldHNfZm9yX2RldiAoY29uc3QgZ2NoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICp1dWlkLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjLCBzdHJ1Y3QgcmFpZF9zZXQgKnJzLCBHUHRyQXJyYXkgKnJldF9zZXRzKSB7Ci0tICAgIHN0cnVjdCByYWlkX3NldCAqc3Vic2V0ID0gTlVMTDsKLS0gICAgc3RydWN0IHJhaWRfZGV2ICpkZXYgPSBOVUxMOwotLQotLSAgICBpZiAoVF9HUk9VUChycykgfHwgIWxpc3RfZW1wdHkoJihycy0+c2V0cykpKSB7Ci0tICAgICAgICBmb3JfZWFjaF9zdWJzZXQgKHJzLCBzdWJzZXQpCi0tICAgICAgICAgICAgZmluZF9yYWlkX3NldHNfZm9yX2RldiAobmFtZSwgdXVpZCwgbWFqb3IsIG1pbm9yLCBsYywgc3Vic2V0LCByZXRfc2V0cyk7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBmb3JfZWFjaF9kZXZpY2UgKHJzLCBkZXYpIHsKLS0gICAgICAgICAgICBpZiAocmFpZF9kZXZfbWF0Y2hlc19zcGVjIChkZXYsIG5hbWUsIHV1aWQsIG1ham9yLCBtaW5vcikpCi0tICAgICAgICAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAocmV0X3NldHMsIGdfc3RyZHVwIChycy0+bmFtZSkpOwotLSAgICAgICAgfQotLSAgICB9Ci0tfQotLQotLS8qKgotLSAqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzOgotLSAqIEBuYW1lOiAoYWxsb3ctbm9uZSk6IG5hbWUgb2YgdGhlIG1lbWJlcgotLSAqIEB1dWlkOiAoYWxsb3ctbm9uZSk6IHV1aWQgb2YgdGhlIG1lbWJlcgotLSAqIEBtYWpvcjogbWFqb3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAotLSAqIEBtaW5vcjogbWlub3IgbnVtYmVyIG9mIHRoZSBkZXZpY2Ugb3IgLTEgaWYgbm90IHNwZWNpZmllZAotLSAqIEBlcnJvcjogKG91dCk6IHZhcmlhYmxlIHRvIHN0b3JlIGVycm9yIChpZiBhbnkpCi0tICoKLS0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCkgKGFycmF5IHplcm8tdGVybWluYXRlZD0xKTogbGlzdCBvZiBuYW1lcyBvZiB0aGUgUkFJRCBzZXRzIHJlbGF0ZWQgdG8KLS0gKiB0aGUgbWVtYmVyIG9yICVOVUxMIGluIGNhc2Ugb2YgZXJyb3IKLS0gKgotLSAqIE9uZSBvZiBAbmFtZSwgQHV1aWQgb3IgQG1ham9yOkBtaW5vciBoYXMgdG8gYmUgZ2l2ZW4uCi0tICoKLS0gKiBUZWNoIGNhdGVnb3J5OiAlQkRfRE1fVEVDSF9SQUlELSVCRF9ETV9URUNIX01PREVfUVVFUlkKLS0gKi8KLS1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKSB7Ci0tICAgIGd1aW50NjQgaSA9IDA7Ci0tICAgIHN0cnVjdCBsaWJfY29udGV4dCAqbGMgPSBOVUxMOwotLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKnJzID0gTlVMTDsKLS0gICAgR1B0ckFycmF5ICpyZXRfc2V0cyA9IGdfcHRyX2FycmF5X25ldyAoKTsKLS0gICAgZ2NoYXIgKipyZXQgPSBOVUxMOwotLQotLSAgICBsYyA9IGluaXRfZG1yYWlkX3N0YWNrIChlcnJvcik7Ci0tICAgIGlmICghbGMpCi0tICAgICAgICAvKiBlcnJvciBpcyBhbHJlYWR5IHBvcHVsYXRlZCAqLwotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tCi0tICAgIGZvcl9lYWNoX3JhaWRzZXQgKGxjLCBycykgewotLSAgICAgICAgZmluZF9yYWlkX3NldHNfZm9yX2RldiAobmFtZSwgdXVpZCwgbWFqb3IsIG1pbm9yLCBsYywgcnMsIHJldF9zZXRzKTsKLS0gICAgfQotLQotLSAgICAvKiBub3cgY3JlYXRlIHRoZSByZXR1cm4gdmFsdWUgLS0gTlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIHN0cmluZ3MgKi8KLS0gICAgcmV0ID0gZ19uZXcwIChnY2hhciosIHJldF9zZXRzLT5sZW4gKyAxKTsKLS0gICAgZm9yIChpPTA7IGkgPCByZXRfc2V0cy0+bGVuOyBpKyspCi0tICAgICAgICByZXRbaV0gPSAoZ2NoYXIqKSBnX3B0cl9hcnJheV9pbmRleCAocmV0X3NldHMsIGkpOwotLSAgICByZXRbaV0gPSBOVUxMOwotLQotLSAgICBnX3B0cl9hcnJheV9mcmVlIChyZXRfc2V0cywgRkFMU0UpOwotLQotLSAgICBsaWJkbXJhaWRfZXhpdCAobGMpOwotLSAgICByZXR1cm4gcmV0OwotLX0KLS0KLS0vKioKLS0gKiBmaW5kX2luX3JhaWRfc2V0czogKHNraXApCi0tICoKLS0gKiBSdW5zIEBldmFsX2ZuIHdpdGggQGRhdGEgb24gZWFjaCBzZXQgKHRyYXZlcnNpbmcgcmVjdXJzaXZlbHkpIGFuZCByZXR1cm5zIHRoZQotLSAqIGZpcnN0IFJBSUQgc2V0IHRoYXQgQGV2YWxfZm4gcmV0dXJucy4gVGh1cyB0aGUgQGV2YWxfZm4gc2hvdWxkIHJldHVybiAlTlVMTAotLSAqIG9uIGFsbCBSQUlEIHNldHMgdGhhdCBkb24ndCBmdWxmaWxsIHRoZSBzZWFyY2ggY3JpdGVyaWEuCi0tICovCi0tc3RhdGljIHN0cnVjdCByYWlkX3NldCogZmluZF9pbl9yYWlkX3NldHMgKHN0cnVjdCByYWlkX3NldCAqcnMsIFJTRXZhbEZ1bmMgZXZhbF9mbiwgZ3BvaW50ZXIgZGF0YSkgewotLSAgICBzdHJ1Y3QgcmFpZF9zZXQgKnN1YnNldCA9IE5VTEw7Ci0tICAgIHN0cnVjdCByYWlkX3NldCAqcmV0ID0gTlVMTDsKLS0KLS0gICAgcmV0ID0gZXZhbF9mbiAocnMsIGRhdGEpOwotLSAgICBpZiAocmV0KQotLSAgICAgICAgcmV0dXJuIHJldDsKLS0KLS0gICAgaWYgKFRfR1JPVVAocnMpIHx8ICFsaXN0X2VtcHR5KCYocnMtPnNldHMpKSkgewotLSAgICAgICAgZm9yX2VhY2hfc3Vic2V0IChycywgc3Vic2V0KSB7Ci0tICAgICAgICAgICAgcmV0ID0gZmluZF9pbl9yYWlkX3NldHMgKHN1YnNldCwgZXZhbF9mbiwgZGF0YSk7Ci0tICAgICAgICAgICAgaWYgKHJldCkKLS0gICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICByZXR1cm4gcmV0OwotLX0KLS0KLS1zdGF0aWMgc3RydWN0IHJhaWRfc2V0KiByc19tYXRjaGVzX25hbWUgKHN0cnVjdCByYWlkX3NldCAqcnMsIGdwb2ludGVyICpuYW1lX2RhdGEpIHsKLS0gICAgZ2NoYXIgKm5hbWUgPSAoZ2NoYXIqKSBuYW1lX2RhdGE7Ci0tCi0tICAgIGlmIChnX3N0cmNtcDAgKHJzLT5uYW1lLCBuYW1lKSA9PSAwKQotLSAgICAgICAgcmV0dXJuIHJzOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gTlVMTDsKLS19Ci0tCi0tc3RhdGljIGdib29sZWFuIGNoYW5nZV9zZXRfYnlfbmFtZSAoY29uc3QgZ2NoYXIgKm5hbWUsIGVudW0gYWN0aXZhdGVfdHlwZSBhY3Rpb24sIEdFcnJvciAqKmVycm9yKSB7Ci0tICAgIGdpbnQgcmMgPSAwOwotLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjID0gTlVMTDsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzID0gTlVMTDsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7Ci0tCi0tICAgIGxjID0gaW5pdF9kbXJhaWRfc3RhY2sgKGVycm9yKTsKLS0gICAgaWYgKCFsYykKLS0gICAgICAgIC8qIGVycm9yIGlzIGFscmVhZHkgcG9wdWxhdGVkICovCi0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tCi0tICAgIGZvcl9lYWNoX3JhaWRzZXQgKGxjLCBpdGVyX3JzKSB7Ci0tICAgICAgICBtYXRjaF9ycyA9IGZpbmRfaW5fcmFpZF9zZXRzIChpdGVyX3JzLCAoUlNFdmFsRnVuYylyc19tYXRjaGVzX25hbWUsIChnY2hhciAqKW5hbWUpOwotLSAgICAgICAgaWYgKG1hdGNoX3JzKQotLSAgICAgICAgICAgIGJyZWFrOwotLSAgICB9Ci0tCi0tICAgIGlmICghbWF0Y2hfcnMpIHsKLS0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfTk9fRVhJU1QsCi0tICAgICAgICAgICAgICAgICAgICAgIlJBSUQgc2V0ICVzIGRvZXNuJ3QgZXhpc3QiLCBuYW1lKTsKLS0gICAgICAgIGxpYmRtcmFpZF9leGl0IChsYyk7Ci0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tICAgIH0KLS0KLS0gICAgcmMgPSBjaGFuZ2Vfc2V0IChsYywgYWN0aW9uLCBtYXRjaF9ycyk7Ci0tICAgIGlmICghcmMpIHsKLS0gICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgQkRfRE1fRVJST1IsIEJEX0RNX0VSUk9SX1JBSURfRkFJTCwKLS0gICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFjdGl2YXRlIHRoZSBSQUlEIHNldCAnJXMnIiwgbmFtZSk7Ci0tICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOwotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLSAgICB9Ci0tCi0tICAgIGxpYmRtcmFpZF9leGl0IChsYyk7Ci0tICAgIHJldHVybiBUUlVFOwotLX0KLS0KLS0vKioKLS0gKiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldDoKLS0gKiBAbmFtZTogbmFtZSBvZiB0aGUgRE0gUkFJRCBzZXQgdG8gYWN0aXZhdGUKLS0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQotLSAqCi0tICogUmV0dXJuczogd2hldGhlciB0aGUgUkFJRCBzZXQgQG5hbWUgd2FzIHN1Y2Nlc3NmdWxseSBhY3RpdmF0ZSBvciBub3QKLS0gKgotLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfQ1JFQVRFX0FDVElWQVRFCi0tICovCi0tZ2Jvb2xlYW4gYmRfZG1fYWN0aXZhdGVfcmFpZF9zZXQgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcikgewotLSAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKLS0gICAgZ2NoYXIgKm1zZyA9IE5VTEw7Ci0tICAgIGdib29sZWFuIHJldCA9IEZBTFNFOwotLQotLSAgICBtc2cgPSBnX3N0cmR1cF9wcmludGYgKCJBY3RpdmF0aW5nIERNIFJBSUQgc2V0ICclcyciLCBuYW1lKTsKLS0gICAgcHJvZ3Jlc3NfaWQgPSBiZF91dGlsc19yZXBvcnRfc3RhcnRlZCAobXNnKTsKLS0gICAgZ19mcmVlIChtc2cpOwotLSAgICByZXQgPSBjaGFuZ2Vfc2V0X2J5X25hbWUgKG5hbWUsIEFfQUNUSVZBVEUsIGVycm9yKTsKLS0gICAgYmRfdXRpbHNfcmVwb3J0X2ZpbmlzaGVkIChwcm9ncmVzc19pZCwgIkNvbXBsZXRlZCIpOwotLSAgICByZXR1cm4gcmV0OwotLX0KLS0KLS0vKioKLS0gKiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0OgotLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBkZWFjdGl2YXRlCi0tICogQGVycm9yOiAob3V0KTogdmFyaWFibGUgdG8gc3RvcmUgZXJyb3IgKGlmIGFueSkKLS0gKgotLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIFJBSUQgc2V0IEBuYW1lIHdhcyBzdWNjZXNzZnVsbHkgZGVhY3RpdmF0ZSBvciBub3QKLS0gKgotLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfUkVNT1ZFX0RFQUNUSVZBVEUKLS0gKi8KLS1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpIHsKLS0gICAgZ3VpbnQ2NCBwcm9ncmVzc19pZCA9IDA7Ci0tICAgIGdjaGFyICptc2cgPSBOVUxMOwotLSAgICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLS0KLS0gICAgbXNnID0gZ19zdHJkdXBfcHJpbnRmICgiRGVhY3RpdmF0aW5nIERNIFJBSUQgc2V0ICclcyciLCBuYW1lKTsKLS0gICAgcHJvZ3Jlc3NfaWQgPSBiZF91dGlsc19yZXBvcnRfc3RhcnRlZCAobXNnKTsKLS0gICAgZ19mcmVlIChtc2cpOwotLSAgICByZXQgPSBjaGFuZ2Vfc2V0X2J5X25hbWUgKG5hbWUsIEFfREVBQ1RJVkFURSwgZXJyb3IpOwotLSAgICBiZF91dGlsc19yZXBvcnRfZmluaXNoZWQgKHByb2dyZXNzX2lkLCAiQ29tcGxldGVkIik7Ci0tICAgIHJldHVybiByZXQ7Ci0tfQotLQotLS8qKgotLSAqIGJkX2RtX2dldF9yYWlkX3NldF90eXBlOgotLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSBETSBSQUlEIHNldCB0byBnZXQgdGhlIHR5cGUgb2YKLS0gKiBAZXJyb3I6IChvdXQpOiB2YXJpYWJsZSB0byBzdG9yZSBlcnJvciAoaWYgYW55KQotLSAqCi0tICogUmV0dXJuczogc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBAbmFtZSBSQUlEIHNldCdzIHR5cGUKLS0gKgotLSAqIFRlY2ggY2F0ZWdvcnk6ICVCRF9ETV9URUNIX1JBSUQtJUJEX0RNX1RFQ0hfUVVFUlkKLS0gKi8KLS1nY2hhciogYmRfZG1fZ2V0X3JhaWRfc2V0X3R5cGUgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnJvcikgewotLSAgICBzdHJ1Y3QgbGliX2NvbnRleHQgKmxjID0gTlVMTDsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICppdGVyX3JzID0gTlVMTDsKLS0gICAgc3RydWN0IHJhaWRfc2V0ICptYXRjaF9ycyA9IE5VTEw7Ci0tICAgIGNvbnN0IGdjaGFyICp0eXBlID0gTlVMTDsKLS0KLS0gICAgbGMgPSBpbml0X2RtcmFpZF9zdGFjayAoZXJyb3IpOwotLSAgICBpZiAoIWxjKQotLSAgICAgICAgLyogZXJyb3IgaXMgYWxyZWFkeSBwb3B1bGF0ZWQgKi8KLS0gICAgICAgIHJldHVybiBOVUxMOwotLQotLSAgICBmb3JfZWFjaF9yYWlkc2V0IChsYywgaXRlcl9ycykgewotLSAgICAgICAgbWF0Y2hfcnMgPSBmaW5kX2luX3JhaWRfc2V0cyAoaXRlcl9ycywgKFJTRXZhbEZ1bmMpcnNfbWF0Y2hlc19uYW1lLCAoZ2NoYXIgKiluYW1lKTsKLS0gICAgICAgIGlmIChtYXRjaF9ycykKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgfQotLQotLSAgICBpZiAoIW1hdGNoX3JzKSB7Ci0tICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX05PX0VYSVNULAotLSAgICAgICAgICAgICAgICAgICAgICJSQUlEIHNldCAlcyBkb2Vzbid0IGV4aXN0IiwgbmFtZSk7Ci0tICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOwotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0KLS0gICAgdHlwZSA9IGdldF9zZXRfdHlwZSAobGMsIG1hdGNoX3JzKTsKLS0gICAgaWYgKCF0eXBlKSB7Ci0tICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEJEX0RNX0VSUk9SLCBCRF9ETV9FUlJPUl9SQUlEX0ZBSUwsCi0tICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgUkFJRCBzZXQncyB0eXBlIik7Ci0tICAgICAgICBsaWJkbXJhaWRfZXhpdCAobGMpOwotLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS0KLS0gICAgbGliZG1yYWlkX2V4aXQgKGxjKTsKLS0gICAgcmV0dXJuIGdfc3RyZHVwICh0eXBlKTsKLS19Ci1kaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvZG0uaCBiL3NyYy9wbHVnaW5zL2RtLmgKLWluZGV4IDBkY2U2YWMuLjFlZTM3ODggMTAwNjQ0Ci0tLS0gYS9zcmMvcGx1Z2lucy9kbS5oCi0rKysgYi9zcmMvcGx1Z2lucy9kbS5oCi1AQCAtMSw1ICsxLDQgQEAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotLSNpbmNsdWRlIDxkbXJhaWQvZG1yYWlkLmg+Ci0gCi0gI2lmbmRlZiBCRF9ETQotICNkZWZpbmUgQkRfRE0KLUBAIC00OCw5ICs0Nyw1IEBAIGdib29sZWFuIGJkX2RtX21hcF9leGlzdHMgKGNvbnN0IGdjaGFyICptYXBfbmFtZSwgZ2Jvb2xlYW4gbGl2ZV9vbmx5LCBnYm9vbGVhbiBhCi0gZ2NoYXIqIGJkX2RtX25hbWVfZnJvbV9ub2RlIChjb25zdCBnY2hhciAqZG1fbm9kZSwgR0Vycm9yICoqZXJyb3IpOwotIGdjaGFyKiBiZF9kbV9ub2RlX2Zyb21fbmFtZSAoY29uc3QgZ2NoYXIgKm1hcF9uYW1lLCBHRXJyb3IgKiplcnJvcik7Ci0gZ2NoYXIqIGJkX2RtX2dldF9zdWJzeXN0ZW1fZnJvbV9uYW1lIChjb25zdCBnY2hhciAqZGV2aWNlX25hbWUsIEdFcnJvciAqKmVycm9yKTsKLS1nY2hhcioqIGJkX2RtX2dldF9tZW1iZXJfcmFpZF9zZXRzIChjb25zdCBnY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKnV1aWQsIGdpbnQgbWFqb3IsIGdpbnQgbWlub3IsIEdFcnJvciAqKmVycm9yKTsKLS1nYm9vbGVhbiBiZF9kbV9hY3RpdmF0ZV9yYWlkX3NldCAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKLS1nYm9vbGVhbiBiZF9kbV9kZWFjdGl2YXRlX3JhaWRfc2V0IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyb3IpOwotLWdjaGFyKiBiZF9kbV9nZXRfcmFpZF9zZXRfdHlwZSAoY29uc3QgZ2NoYXIgKm5hbWUsIEdFcnJvciAqKmVycm9yKTsKLSAKLSAjZW5kaWYgIC8qIEJEX0RNICovCi1kaWZmIC0tZ2l0IGEvc3JjL3B5dGhvbi9naS9vdmVycmlkZXMvQmxvY2tEZXYucHkgYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weQotaW5kZXggZmIzZmZiNC4uZWVkMGEzOCAxMDA2NDQKLS0tLSBhL3NyYy9weXRob24vZ2kvb3ZlcnJpZGVzL0Jsb2NrRGV2LnB5Ci0rKysgYi9zcmMvcHl0aG9uL2dpL292ZXJyaWRlcy9CbG9ja0Rldi5weQotQEAgLTIzMywxMiArMjMzLDYgQEAgZGVmIGRtX2NyZWF0ZV9saW5lYXIobWFwX25hbWUsIGRldmljZSwgbGVuZ3RoLCB1dWlkPU5vbmUpOgotICAgICByZXR1cm4gX2RtX2NyZWF0ZV9saW5lYXIobWFwX25hbWUsIGRldmljZSwgbGVuZ3RoLCB1dWlkKQotIF9fYWxsX18uYXBwZW5kKCJkbV9jcmVhdGVfbGluZWFyIikKLSAKLS1fZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMgPSBCbG9ja0Rldi5kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cwotLUBvdmVycmlkZShCbG9ja0Rldi5kbV9nZXRfbWVtYmVyX3JhaWRfc2V0cykKLS1kZWYgZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMobmFtZT1Ob25lLCB1dWlkPU5vbmUsIG1ham9yPS0xLCBtaW5vcj0tMSk6Ci0tICAgIHJldHVybiBfZG1fZ2V0X21lbWJlcl9yYWlkX3NldHMobmFtZSwgdXVpZCwgbWFqb3IsIG1pbm9yKQotLV9fYWxsX18uYXBwZW5kKCJkbV9nZXRfbWVtYmVyX3JhaWRfc2V0cyIpCi0tCi0gCi0gX2xvb3Bfc2V0dXAgPSBCbG9ja0Rldi5sb29wX3NldHVwCi0gQG92ZXJyaWRlKEJsb2NrRGV2Lmxvb3Bfc2V0dXApCi0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNWI4MDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2ZpbGVzLzAwMDQtZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA1OWZiZDU3YWNkMWRmMjViMTk3MmExMzFkYzZhNzdhNGZlMTQ3NzI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNyBKdWwgMjAxNyAxMDo0NTowMiArMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBmYWlsdXJlIGFnYWluc3QgbXVzbCBDIGxpYnJhcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9wbHVnaW5zL2NyeXB0by5jIHwgMiArLQotIHNyYy9wbHVnaW5zL3BhcnQuYyAgIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2NyeXB0by5jIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLWluZGV4IGI5NjE0NzEuLjJkM2QyNTEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwotKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gI2luY2x1ZGUgPGxpYmNyeXB0c2V0dXAuaD4KLSAjaW5jbHVkZSA8bnNzLmg+Ci0gI2luY2x1ZGUgPHZvbHVtZV9rZXkvbGlidm9sdW1lX2tleS5oPgotLSNpbmNsdWRlIDxzeXMvZmNudGwuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLWRpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9wYXJ0LmMgYi9zcmMvcGx1Z2lucy9wYXJ0LmMKLWluZGV4IDZiMmE2OTAuLmFiNDkwZDkgMTAwNjQ0Ci0tLS0gYS9zcmMvcGx1Z2lucy9wYXJ0LmMKLSsrKyBiL3NyYy9wbHVnaW5zL3BhcnQuYwotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpbmNsdWRlIDxsaW51eC9mcy5oPgotICNpbmNsdWRlIDxibG9ja2Rldi91dGlscy5oPgotQEAgLTEzNTQsNyArMTM1NSw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZXRfZ3B0X2ZsYWdzIChjb25zdCBnY2hhciAqZGV2aWNlLCBpbnQgcGFydF9udW0sIGd1aW50NjQgZmxhZ3MsCi0gICAgICAgICByZWFsX2ZsYWdzIHw9IDB4NDAwMDAwMDAwMDAwMDAwMDsgLyogMSA8PCA2MiAqLwotICAgICBpZiAoZmxhZ3MgJiBCRF9QQVJUX0ZMQUdfR1BUX05PX0FVVE9NT1VOVCkKLSAgICAgICAgIHJlYWxfZmxhZ3MgfD0gMHg4MDAwMDAwMDAwMDAwMDAwOyAvKiAxIDw8IDYzICovCi0tICAgIG1hc2tfc3RyID0gZ19zdHJkdXBfcHJpbnRmICgiJS4xNiJfX1BSSTY0X1BSRUZJWCJ4IiwgcmVhbF9mbGFncyk7Ci0rICAgIG1hc2tfc3RyID0gZ19zdHJkdXBfcHJpbnRmICgiJS4xNiJfX1BSSTY0IngiLCByZWFsX2ZsYWdzKTsKLSAKLSAgICAgYXJnc1syXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkOj06JXMiLCBwYXJ0X251bSwgbWFza19zdHIpOwotICAgICBnX2ZyZWUgKG1hc2tfc3RyKTsKLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9maWxlcy8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIxNGYwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvZmlsZXMvMDAwNS1maXgtYS1jbGFuZy1jb21waWxpbmctaXNzdWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotRnJvbSA5YjRhN2E0ZDA2NTNiNjI3ZDc0N2UwMGQ2YjNhZGEyOTkwY2FhMWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA5IEF1ZyAyMDE3IDEzOjU3OjU3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBhIGNsYW5nIGNvbXBpbGluZyBpc3N1ZQotCi1bc25pcF0KLS4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9mcy5jOjI2MTc6MjY6IGVycm9yOiBtaXNzaW5nIGZpZWxkICdzdGFydCcKLWluaXRpYWxpemVyIFstV2Vycm9yLC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnNdCi0gICAgUGVkR2VvbWV0cnkgZ2VvbSA9IHswfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBeCi0uLi8uLi8uLi9naXQvc3JjL3BsdWdpbnMvZnMuYzoyNjE4OjMwOiBlcnJvcjogbWlzc2luZyBmaWVsZCAnc3RhcnQnCi1pbml0aWFsaXplciBbLVdlcnJvciwtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzXQotICAgIFBlZEdlb21ldHJ5IG5ld19nZW9tID0gezB9OwotW3NuaXBdCi0KLUZpeCB0eXBvIHMvZW51bSBsaWJ2a19wYWNrZXRfZm9ybWF0IGZvcm1hdC9lbnVtIGxpYnZrX3NlY3JldCBzZWNyZXRfdHlwZS8KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zdG9yYWdlZC1wcm9qZWN0L2xpYmJsb2NrZGV2L3B1bGwvMjY2XQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvcGx1Z2lucy9jcnlwdG8uYyAgfCA2ICsrKy0tLQotIHNyYy9wbHVnaW5zL2ZzL3ZmYXQuYyB8IDQgKystLQotIHNyYy9wbHVnaW5zL3BhcnQuYyAgICB8IDQgKystLQotIHNyYy91dGlscy9leGVjLmMgICAgICB8IDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2NyeXB0by5jIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLWluZGV4IDU2MzA5M2UuLmI5NjE0NzEgMTAwNjQ0Ci0tLS0gYS9zcmMvcGx1Z2lucy9jcnlwdG8uYwotKysrIGIvc3JjL3BsdWdpbnMvY3J5cHRvLmMKLUBAIC05NzAsNyArOTcwLDcgQEAgZ2Jvb2xlYW4gYmRfY3J5cHRvX3RjX29wZW4gKGNvbnN0IGdjaGFyICpkZXZpY2UsIGNvbnN0IGdjaGFyICpuYW1lLCBjb25zdCBndWludDgKLSAgICAgZ2ludCByZXQgPSAwOwotICAgICBndWludDY0IHByb2dyZXNzX2lkID0gMDsKLSAgICAgZ2NoYXIgKm1zZyA9IE5VTEw7Ci0tICAgIHN0cnVjdCBjcnlwdF9wYXJhbXNfdGNyeXB0IHBhcmFtcyA9IHswfTsKLSsgICAgc3RydWN0IGNyeXB0X3BhcmFtc190Y3J5cHQgcGFyYW1zID0ge05VTEwsMCxOVUxMLDAsTlVMTCxOVUxMLE5VTEwsMCwwfTsKLSAKLSAgICAgbXNnID0gZ19zdHJkdXBfcHJpbnRmICgiU3RhcnRlZCBvcGVuaW5nICclcycgVHJ1ZUNyeXB0L1ZlcmFDcnlwdCBkZXZpY2UiLCBkZXZpY2UpOwotICAgICBwcm9ncmVzc19pZCA9IGJkX3V0aWxzX3JlcG9ydF9zdGFydGVkIChtc2cpOwotQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBnY2hhciAqcmVwbGFjZV9jaGFyIChnY2hhciAqc3RyLCBnY2hhciBvcmlnLCBnY2hhciBuZXcpIHsKLSAgICAgcmV0dXJuIHN0cjsKLSB9Ci0gCi0tc3RhdGljIGdib29sZWFuIHdyaXRlX2VzY3Jvd19kYXRhX2ZpbGUgKHN0cnVjdCBsaWJ2a192b2x1bWUgKnZvbHVtZSwgc3RydWN0IGxpYnZrX3VpICp1aSwgZW51bSBsaWJ2a19wYWNrZXRfZm9ybWF0IGZvcm1hdCwgY29uc3QgZ2NoYXIgKm91dF9wYXRoLAotK3N0YXRpYyBnYm9vbGVhbiB3cml0ZV9lc2Nyb3dfZGF0YV9maWxlIChzdHJ1Y3QgbGlidmtfdm9sdW1lICp2b2x1bWUsIHN0cnVjdCBsaWJ2a191aSAqdWksIGVudW0gbGlidmtfc2VjcmV0IHNlY3JldF90eXBlLCBjb25zdCBnY2hhciAqb3V0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFUlRDZXJ0aWZpY2F0ZSAqY2VydCwgR0Vycm9yICoqZXJyb3IpIHsKLSAgICAgZ3BvaW50ZXIgcGFja2V0X2RhdGEgPSBOVUxMOwotICAgICBnc2l6ZSBwYWNrZXRfZGF0YV9zaXplID0gMDsKLUBAIC0xMDk5LDcgKzEwOTksNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd3JpdGVfZXNjcm93X2RhdGFfZmlsZSAoc3RydWN0IGxpYnZrX3ZvbHVtZSAqdm9sdW1lLCBzdHJ1Y3QgbGlidgotICAgICBnc2l6ZSBieXRlc193cml0dGVuID0gMDsKLSAgICAgR0Vycm9yICp0bXBfZXJyb3IgPSBOVUxMOwotIAotLSAgICBwYWNrZXRfZGF0YSA9IGxpYnZrX3ZvbHVtZV9jcmVhdGVfcGFja2V0X2FzeW1tZXRyaWNfd2l0aF9mb3JtYXQgKHZvbHVtZSwgJnBhY2tldF9kYXRhX3NpemUsIGZvcm1hdCwgY2VydCwKLSsgICAgcGFja2V0X2RhdGEgPSBsaWJ2a192b2x1bWVfY3JlYXRlX3BhY2tldF9hc3ltbWV0cmljX3dpdGhfZm9ybWF0ICh2b2x1bWUsICZwYWNrZXRfZGF0YV9zaXplLCBzZWNyZXRfdHlwZSwgY2VydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aSwgTElCVktfUEFDS0VUX0ZPUk1BVF9BU1lNTUVUUklDX1dSQVBfU0VDUkVUX09OTFksIGVycm9yKTsKLSAKLSAgICAgaWYgKCFwYWNrZXRfZGF0YSkgewotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2ZzL3ZmYXQuYyBiL3NyYy9wbHVnaW5zL2ZzL3ZmYXQuYwotaW5kZXggM2VkN2Q0YS4uNWZmNzc5NSAxMDA2NDQKLS0tLSBhL3NyYy9wbHVnaW5zL2ZzL3ZmYXQuYwotKysrIGIvc3JjL3BsdWdpbnMvZnMvdmZhdC5jCi1AQCAtMzc2LDggKzM3Niw4IEBAIEJERlNWZmF0SW5mbyogYmRfZnNfdmZhdF9nZXRfaW5mbyAoY29uc3QgZ2NoYXIgKmRldmljZSwgR0Vycm9yICoqZXJyb3IpIHsKLSAgKi8KLSBnYm9vbGVhbiBiZF9mc192ZmF0X3Jlc2l6ZSAoY29uc3QgZ2NoYXIgKmRldmljZSwgZ3VpbnQ2NCBuZXdfc2l6ZSwgR0Vycm9yICoqZXJyb3IpIHsKLSAgICAgUGVkRGV2aWNlICpwZWRfZGV2ID0gTlVMTDsKLS0gICAgUGVkR2VvbWV0cnkgZ2VvbSA9IHswfTsKLS0gICAgUGVkR2VvbWV0cnkgbmV3X2dlb20gPSB7MH07Ci0rICAgIFBlZEdlb21ldHJ5IGdlb20gPSB7TlVMTCwgMCwgMCwgMH07Ci0rICAgIFBlZEdlb21ldHJ5IG5ld19nZW9tID0ge05VTEwsIDAsIDAsIDB9OwotICAgICBQZWRGaWxlU3lzdGVtICpmcyA9IE5VTEw7Ci0gICAgIFBlZFNlY3RvciBzdGFydCA9IDA7Ci0gICAgIFBlZFNlY3RvciBsZW5ndGggPSAwOwotZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL3BhcnQuYyBiL3NyYy9wbHVnaW5zL3BhcnQuYwotaW5kZXggZmVkODMwMC4uNmIyYTY5MCAxMDA2NDQKLS0tLSBhL3NyYy9wbHVnaW5zL3BhcnQuYwotKysrIGIvc3JjL3BsdWdpbnMvcGFydC5jCi1AQCAtOTI2LDcgKzkyNiw3IEBAIHN0YXRpYyBQZWRQYXJ0aXRpb24qIGFkZF9wYXJ0X3RvX2Rpc2sgKFBlZERldmljZSAqZGV2LCBQZWREaXNrICpkaXNrLCBCRFBhcnRUeXBlCi0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBwYXJ0ID0gcGVkX3BhcnRpdGlvbl9uZXcgKGRpc2ssIHR5cGUsIE5VTEwsIGdlb20tPnN0YXJ0LCBnZW9tLT5lbmQpOwotKyAgICBwYXJ0ID0gcGVkX3BhcnRpdGlvbl9uZXcgKGRpc2ssIChQZWRQYXJ0aXRpb25UeXBlKXR5cGUsIE5VTEwsIGdlb20tPnN0YXJ0LCBnZW9tLT5lbmQpOwotICAgICBpZiAoIXBhcnQpIHsKLSAgICAgICAgIHNldF9wYXJ0ZWRfZXJyb3IgKGVycm9yLCBCRF9QQVJUX0VSUk9SX0ZBSUwpOwotICAgICAgICAgZ19wcmVmaXhfZXJyb3IgKGVycm9yLCAiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgcGFydGl0aW9uIG9uIGRldmljZSAnJXMnIiwgZGV2LT5wYXRoKTsKLUBAIC0xNTY0LDcgKzE1NjQsNyBAQCBnYm9vbGVhbiBiZF9wYXJ0X3NldF9wYXJ0X2ZsYWdzIChjb25zdCBnY2hhciAqZGlzaywgY29uc3QgZ2NoYXIgKnBhcnQsIGd1aW50NjQgZgotICAgICBQZWRQYXJ0aXRpb24gKnBlZF9wYXJ0ID0gTlVMTDsKLSAgICAgY29uc3QgZ2NoYXIgKnBhcnRfbnVtX3N0ciA9IE5VTEw7Ci0gICAgIGdpbnQgcGFydF9udW0gPSAwOwotLSAgICBndWludDY0IGkgPSAwOwotKyAgICBpbnQgaSA9IDA7Ci0gICAgIGdpbnQgc3RhdHVzID0gMDsKLSAgICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0gICAgIGd1aW50NjQgcHJvZ3Jlc3NfaWQgPSAwOwotZGlmZiAtLWdpdCBhL3NyYy91dGlscy9leGVjLmMgYi9zcmMvdXRpbHMvZXhlYy5jCi1pbmRleCAxMWMxNDg5Li5kY2Y4N2U1IDEwMDY0NAotLS0tIGEvc3JjL3V0aWxzL2V4ZWMuYwotKysrIGIvc3JjL3V0aWxzL2V4ZWMuYwotQEAgLTM1NCw3ICszNTQsNyBAQCBnYm9vbGVhbiBiZF91dGlsc19leGVjX2FuZF9yZXBvcnRfcHJvZ3Jlc3MgKGNvbnN0IGdjaGFyICoqYXJndiwgY29uc3QgQkRFeHRyYUFyZwotICAgICBHSU9TdGF0dXMgaW9fc3RhdHVzID0gR19JT19TVEFUVVNfTk9STUFMOwotICAgICBndWludCBpID0gMDsKLSAgICAgZ3VpbnQ4IGNvbXBsZXRpb24gPSAwOwotLSAgICBHUG9sbEZEIGZkc1syXSA9IHt7MH0sIHswfX07Ci0rICAgIEdQb2xsRkQgZmRzWzJdID0ge3swLDAsMH0sIHswLDAsMH19OwotICAgICBnYm9vbGVhbiBvdXRfZG9uZSA9IEZBTFNFOwotICAgICBnYm9vbGVhbiBlcnJfZG9uZSA9IEZBTFNFOwotICAgICBHU3RyaW5nICpzdGRvdXRfZGF0YSA9IGdfc3RyaW5nX25ldyAoTlVMTCk7Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzk1NGFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJibG9ja2Rldi9saWJibG9ja2Rldl8yLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAibGliYmxvY2tkZXYgaXMgYSBDIGxpYnJhcnkgc3VwcG9ydGluZyBHT2JqZWN0IGludHJvc3BlY3Rpb24gZm9yIG1hbmlwdWxhdGlvbiBvZiBcCi1ibG9jayBkZXZpY2VzLiBJdCBoYXMgYSBwbHVnaW4tYmFzZWQgYXJjaGl0ZWN0dXJlIHdoZXJlIGVhY2ggdGVjaG5vbG9neSAobGlrZSBcCi1MVk0sIEJ0cmZzLCBNRCBSQUlELCBTd2FwLC4uLikgaXMgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwbHVnaW4sIHBvc3NpYmx5IFwKLXdpdGggbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIChlLmcuIHVzaW5nIExWTSBDTEkgb3IgdGhlIG5ldyBMVk0gREJ1cyBBUEkpLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9yaGluc3RhbGxlci5naXRodWIuaW8vbGliYmxvY2tkZXYvIgotTElDRU5TRSA9ICJMR1BMdjIrIgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgotCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1ERVBFTkRTICs9ICIgXAotICAgIGNyeXB0c2V0dXAgXAotICAgIG5zcyBcCi0gICAgdm9sdW1lLWtleSBcCi0gICAgbGliYnl0ZXNpemUgXAotICAgIGJ0cmZzLXRvb2xzIFwKLSIKLQotU1JDUkVWID0gImUyZTA4OTllZmU4ZGQzZjExMWZmOTU1ZmI2YzFkYzEwYjBiZDIwNzUiCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJibG9ja2RldjticmFuY2g9bWFzdGVyIFwKLSAgICBmaWxlOi8vMDAwMS1maXgtY29uZmlndXJlLWFuZC1jb21waWxlLWZhaWx1cmVzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1yZW1vdmUtZG1yYWlkLXdoaWxlLWNvbXBpbGluZy13aXRoLXdpdGgtZG0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LWZpeC1hLWNsYW5nLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICBmaWxlOi8vMDAwNC1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBsdm0yIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyBsdm0gZG0ga21vZCBwYXJ0ZWQgZnMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbbHZtXSA9ICItLXdpdGgtbHZtLCAtLXdpdGhvdXQtbHZtLCBtdWx0aXBhdGgtdG9vbHMiCi1QQUNLQUdFQ09ORklHW2RtXSA9ICItLXdpdGgtZG0sIC0td2l0aG91dC1kbSIKLVBBQ0tBR0VDT05GSUdba21vZF0gPSAiLS13aXRoLWtiZCwgLS13aXRob3V0LWtiZCwga21vZCIKLVBBQ0tBR0VDT05GSUdbcGFydGVkXSA9ICItLXdpdGgtcGFydCwgLS13aXRob3V0LXBhcnQsIHBhcnRlZCIKLVBBQ0tBR0VDT05GSUdbZnNdID0gIi0td2l0aC1mcywgLS13aXRob3V0LWZzLCB1dGlsLWxpbnV4IgotUEFDS0FHRUNPTkZJR1tkb2NdID0gIi0td2l0aC1ndGstZG9jLCAtLXdpdGhvdXQtZ3RrLWRvYywgZ3RrLWRvYy1uYXRpdmUiCi0KLWV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy91dGlscy8ubGlicyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliYmxvY2tkZXYvbGliYmxvY2tkZXZfMi4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWYwY2MwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmJsb2NrZGV2L2xpYmJsb2NrZGV2XzIuMTguYmIKQEAgLTAsMCArMSw0MyBAQAorREVTQ1JJUFRJT04gPSAibGliYmxvY2tkZXYgaXMgYSBDIGxpYnJhcnkgc3VwcG9ydGluZyBHT2JqZWN0IGludHJvc3BlY3Rpb24gZm9yIG1hbmlwdWxhdGlvbiBvZiBcCitibG9jayBkZXZpY2VzLiBJdCBoYXMgYSBwbHVnaW4tYmFzZWQgYXJjaGl0ZWN0dXJlIHdoZXJlIGVhY2ggdGVjaG5vbG9neSAobGlrZSBcCitMVk0sIEJ0cmZzLCBNRCBSQUlELCBTd2FwLC4uLikgaXMgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZSBwbHVnaW4sIHBvc3NpYmx5IFwKK3dpdGggbXVsdGlwbGUgaW1wbGVtZW50YXRpb25zIChlLmcuIHVzaW5nIExWTSBDTEkgb3IgdGhlIG5ldyBMVk0gREJ1cyBBUEkpLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9yaGluc3RhbGxlci5naXRodWIuaW8vbGliYmxvY2tkZXYvIgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgorCitpbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNSRVYgPSAiMGRlYmViNDU1NjJhYzNkOGY2ZjQzZjZmOTQyYjIzOGFiYWI1NWJlOSIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJsb2NrZGV2O2JyYW5jaD1tYXN0ZXIgXAorIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIGx2bSBkbSBrbW9kIHBhcnRlZCBmcyBlc2Nyb3cgYnRyZnMgY3J5cHRvIG1kcmFpZCBrYmQgbXBhdGgiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLS13aXRoLXB5dGhvbjIsIC0td2l0aG91dC1weXRob24yLCxweXRob24yIgorUEFDS0FHRUNPTkZJR1tsdm1dID0gIi0td2l0aC1sdm0sIC0td2l0aG91dC1sdm0sIG11bHRpcGF0aC10b29scywgbHZtMiIKK1BBQ0tBR0VDT05GSUdbbHZtLWRidXNdID0gIi0td2l0aC1sdm1fZGJ1cywgLS13aXRob3V0LWx2bV9kYnVzLCBtdWx0aXBhdGgtdG9vbHMsIGx2bTIiCitQQUNLQUdFQ09ORklHW2RtXSA9ICItLXdpdGgtZG0sIC0td2l0aG91dC1kbSwgbXVsdGlwYXRoLXRvb2xzLCBsdm0yIgorUEFDS0FHRUNPTkZJR1tkbXJhaWRdID0gIi0td2l0aC1kbXJhaWQsIC0td2l0aG91dC1kbXJhaWQiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rYmQsIC0td2l0aG91dC1rYmQsIGttb2QiCitQQUNLQUdFQ09ORklHW3BhcnRlZF0gPSAiLS13aXRoLXBhcnQsIC0td2l0aG91dC1wYXJ0LCBwYXJ0ZWQiCitQQUNLQUdFQ09ORklHW2ZzXSA9ICItLXdpdGgtZnMsIC0td2l0aG91dC1mcywgdXRpbC1saW51eCIKK1BBQ0tBR0VDT05GSUdbZG9jXSA9ICItLXdpdGgtZ3RrLWRvYywgLS13aXRob3V0LWd0ay1kb2MsIGd0ay1kb2MtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tudmRpbW1dID0gIi0td2l0aC1udmRpbW0sIC0td2l0aG91dC1udmRpbW0iCitQQUNLQUdFQ09ORklHW3Zkb10gPSAiLS13aXRoLXZkbywgLS13aXRob3V0LXZkbyIKK1BBQ0tBR0VDT05GSUdbZXNjcm93XSA9ICItLXdpdGgtZXNjcm93LCAtLXdpdGhvdXQtZXNjcm93LCBuc3Mgdm9sdW1lLWtleSIKK1BBQ0tBR0VDT05GSUdbYnRyZnNdID0gIi0td2l0aC1idHJmcywtLXdpdGhvdXQtYnRyZnMsbGliYnl0ZXNpemUgYnRyZnMtdG9vbHMiCitQQUNLQUdFQ09ORklHW2NyeXB0b10gPSAiLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLGNyeXB0c2V0dXAgbnNzIHZvbHVtZS1rZXkiCitQQUNLQUdFQ09ORklHW21kcmFpZF0gPSAiLS13aXRoLW1kcmFpZCwtLXdpdGhvdXQtbWRyYWlkLGxpYmJ5dGVzaXplIgorUEFDS0FHRUNPTkZJR1trYmRdID0gIi0td2l0aC1rYmQsLS13aXRob3V0LWtiZCxsaWJieXRlc2l6ZSIKK1BBQ0tBR0VDT05GSUdbbXBhdGhdID0gIi0td2l0aC1tcGF0aCwtLXdpdGhvdXQtbXBhdGgsIG11bHRpcGF0aC10b29scywgbHZtMiIKKworZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjL3V0aWxzLy5saWJzIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2ZpbGVzLzAwMDEtRXhwbGljaXRseS11c2UtcHl0aG9uMy1pbi1weUNlY0NsaWVudC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvZmlsZXMvMDAwMS1FeHBsaWNpdGx5LXVzZS1weXRob24zLWluLXB5Q2VjQ2xpZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMWY1ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2ZpbGVzLzAwMDEtRXhwbGljaXRseS11c2UtcHl0aG9uMy1pbi1weUNlY0NsaWVudC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDE2ZThjMDcyNzA5NTcyY2NlZmE2YzdmODM1MTM2ZGIwMWYwMzEzMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CitEYXRlOiBGcmksIDI4IFNlcCAyMDE4IDE2OjU2OjE0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEV4cGxpY2l0bHkgdXNlIHB5dGhvbjMgaW4gcHlDZWNDbGllbnQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9QdWxzZS1FaWdodC9saWJjZWMvcHVsbC80MzNdCisKKy0tLQorIHNyYy9weUNlY0NsaWVudC9weUNlY0NsaWVudC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9weUNlY0NsaWVudC9weUNlY0NsaWVudC5weSBiL3NyYy9weUNlY0NsaWVudC9weUNlY0NsaWVudC5weQoraW5kZXggNmQ0Nzg1Ny4uZDA1MDRhYyAxMDA3NTUKKy0tLSBhL3NyYy9weUNlY0NsaWVudC9weUNlY0NsaWVudC5weQorKysrIGIvc3JjL3B5Q2VjQ2xpZW50L3B5Q2VjQ2xpZW50LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9weXRob24KKysjISAvdXNyL2Jpbi9weXRob24zCisgIyMgZGVtbyBvZiB0aGUgcHl0aG9uLWxpYmNlYyBBUEkKKyAKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBsaWJDRUMoUikgbGlicmFyeS4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvZmlsZXMvcHl0aG9uLWluc3RhbGwtbG9jYXRpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2ZpbGVzL3B5dGhvbi1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmJlNzhkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvZmlsZXMvcHl0aG9uLWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDMzMGZhNjc3N2Q1MWQ0MWVlZmFjZmY4ZTk4ZTQyNTBkMjEwZmRlMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/SmF2aT0yME1hcnQ9QzM9QURuZXo/PSA8amF2aUBmbGFtaW5nYWxhaC5uZXQ+Ci1EYXRlOiBUdWUsIDEzIERlYyAyMDE2IDIyOjMxOjEzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEltcHJvdmUvZml4IGluc3RhbGxhdGlvbiBvZiBQeXRob24gYmluZGluZ3MKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1kaXN0LXBhY2thZ2VzIGlzIGEgRGViaWFuLXNwZWNpZmljIGRpcmVjdG9yeSBmb3IgZGlzdHJpYnV0aW9uIHBhY2thZ2VzIChhbmQgdXNlZCBpbiBkZXJpdmF0aXZlcyBzdWNoIGFzIFVidW50dSkuIFRoZXJlZm9yZSBjaGFuZ2VkIHRvIHNpdGUtcGFja2FnZXMuCi0tLS0KLSBzcmMvbGliY2VjL2NtYWtlL0NoZWNrUGxhdGZvcm1TdXBwb3J0LmNtYWtlIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9saWJjZWMvY21ha2UvQ2hlY2tQbGF0Zm9ybVN1cHBvcnQuY21ha2UgYi9zcmMvbGliY2VjL2NtYWtlL0NoZWNrUGxhdGZvcm1TdXBwb3J0LmNtYWtlCi1pbmRleCBmY2QwZWY3Li43NjYxMTA3IDEwMDY0NAotLS0tIGEvc3JjL2xpYmNlYy9jbWFrZS9DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZQotKysrIGIvc3JjL2xpYmNlYy9jbWFrZS9DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZQotQEAgLTE5NSw5ICsxOTUsOSBAQCBlbHNlKCkKLSAgICAgICAgICAgICAgIFJFTkFNRSAgICAgIF9faW5pdF9fLnB5KQotICAgICBlbHNlKCkKLSAgICAgICBpbnN0YWxsKFRBUkdFVFMgICAgICR7U1dJR19NT0RVTEVfY2VjX1JFQUxfTkFNRX0KLS0gICAgICAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9weXRob24ke1BZVEhPTl9WRVJTSU9OfS9kaXN0LXBhY2thZ2VzL2NlYykKLSsgICAgICAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9weXRob24ke1BZVEhPTl9WRVJTSU9OfS9zaXRlLXBhY2thZ2VzL2NlYykKLSAgICAgICBpbnN0YWxsKEZJTEVTICAgICAgICR7Q01BS0VfQklOQVJZX0RJUn0vc3JjL2xpYmNlYy9jZWMucHkKLS0gICAgICAgICAgICAgIERFU1RJTkFUSU9OIGxpYi9weXRob24ke1BZVEhPTl9WRVJTSU9OfS9kaXN0LXBhY2thZ2VzL2NlYwotKyAgICAgICAgICAgICAgREVTVElOQVRJT04gbGliL3B5dGhvbiR7UFlUSE9OX1ZFUlNJT059L3NpdGUtcGFja2FnZXMvY2VjCi0gICAgICAgICAgICAgICBSRU5BTUUgICAgICBfX2luaXRfXy5weSkKLSAgICAgZW5kaWYoKQotICAgZW5kaWYoKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNlYy9saWJjZWNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNlYy9saWJjZWNfZ2l0LmJiCmluZGV4IGNiNjVjYWEuLjRhZDQ5OTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlY19naXQuYmIKQEAgLTQsMjQgKzQsMzAgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTYxZmQ4NmY5Yzk0N2I0MzAxMjYxODFkYTJjNmM3MTUiCiAKLURFUEVORFMgPSAicDhwbGF0Zm9ybSB1ZGV2IGxvY2tkZXYgbmN1cnNlcyBzd2lnLW5hdGl2ZSBweXRob24zIgorREVQRU5EUyA9ICJwOHBsYXRmb3JtIHVkZXYgbmN1cnNlcyBzd2lnLW5hdGl2ZSBweXRob24zIgogCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4MTEgbGlieHJhbmRyJywgJycsIGQpfSIKIERFUEVORFNfYXBwZW5kX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIHVzZXJsYW5kJywgZCl9IgogCi1QViA9ICI0LjAuMStnaXRyJHtTUkNQVn0iCitQViA9ICI0LjAuMitnaXRyJHtTUkNQVn0iCiAKLVNSQ1JFViA9ICIyZmM5MmI1ZjAyZGNhNzAyZGE5MmNjYzVlZDdiODA1YjI0MGVmNWRmIgorU1JDUkVWID0gIjBhOTcwNjJkZDRiMTk2Y2VlYjAwM2VjNDE4NDFjN2E3ZWRjMzZkZDEiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vUHVsc2UtRWlnaHQvbGliY2VjLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24taW5zdGFsbC1sb2NhdGlvbi5wYXRjaCIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRXhwbGljaXRseS11c2UtcHl0aG9uMy1pbi1weUNlY0NsaWVudC5wYXRjaCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBjbWFrZSBwa2djb25maWcKIAorIyBQdXQgY2xpZW50IHRvb2xzIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0iCitSREVQRU5EU18ke1BOfS10b29scyA9ICJweXRob24zLSR7QlBOfSIKKwogIyBDcmVhdGUgdGhlIHdyYXBwZXIgZm9yIHB5dGhvbjMKIFBBQ0tBR0VTICs9ICJweXRob24zLSR7QlBOfSIKLUZJTEVTX3B5dGhvbjMtJHtCUE59ID0gIiR7bGliZGlyfS9weXRob24zKiIKK0ZJTEVTX3B5dGhvbjMtJHtCUE59ID0gIiR7bGliZGlyfS9weXRob24zKiAke2JpbmRpcn0vcHkqIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgogCiAjIGNlYy1jbGllbnQgYW5kIHhibWMgbmVlZCB0aGUgLnNvIHByZXNlbnQgdG8gd29yayA6KAogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNvbmZpZy9saWJjb25maWdfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNvbmZpZy9saWJjb25maWdfMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjZlNTBlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjb25maWcvbGliY29uZmlnXzEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQy9DKysgQ29uZmlndXJhdGlvbiBGaWxlIExpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgc3RydWN0dXJlZCBjb25maWd1cmF0aW9uIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5oeXBlcnJlYWxtLmNvbS9saWJjb25maWcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaHlwZXJyZWFsbS5jb20vJHtCUE59LyR7QlB9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTkzOWM0OTkwZDc0ZTZmYzFlZTYyYmUwNTcxNmY2MzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTMxZGFhMzkwZDhlNDQ2MWM4ODMwNTEyZmUyZTEzYmExYTNkNmEwMmEyMzA1YTAyNDI5ZWVjNjFlNjg3MDNmNiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjb25maWcvbGliY29uZmlnXzEuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNvbmZpZy9saWJjb25maWdfMS43LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwYTJjMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjb25maWcvbGliY29uZmlnXzEuNy4yLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQy9DKysgQ29uZmlndXJhdGlvbiBGaWxlIExpYnJhcnkiCitERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgc3RydWN0dXJlZCBjb25maWd1cmF0aW9uIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9oeXBlcnJlYWxtLmdpdGh1Yi5pby9saWJjb25maWcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaHlwZXJyZWFsbS9saWJjb25maWcvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IgorCitTUkNfVVJJID0gImh0dHBzOi8vaHlwZXJyZWFsbS5naXRodWIuaW8vbGliY29uZmlnL2Rpc3QvbGliY29uZmlnLSR7UFZ9LnRhci5neiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitTUkNfVVJJW21kNXN1bV0gPSAiNmJkOThlZTNhNmU2YjkxMjZjODJjOTE2ZDdhOWU2OTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2MzYzdhOWM3M2ZmMzMwMjA4NDM4NmU5NmY5MDNlYjYyY2UwNjk1M2JiMTY2NjIzNWZhYzc0MzYzYTE2ZmFkOSIKKworRklMRVNfJHtQTn1fYXBwZW5kID0gIiBcCisgICAgJHtsaWJkaXJ9L2NtYWtlIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpbW9iaWxlZGV2aWNlL2ZpbGVzLzAwMDEtRml4LXdhcm5pbmdzLWZvdW5kLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaW1vYmlsZWRldmljZS9maWxlcy8wMDAxLUZpeC13YXJuaW5ncy1mb3VuZC13aXRoLWNsYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODExNGEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpbW9iaWxlZGV2aWNlL2ZpbGVzLzAwMDEtRml4LXdhcm5pbmdzLWZvdW5kLXdpdGgtY2xhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGFkMWJlNTQyYjg3YjMxODZmOGVmN2JlZTJjNTk0ZGFlZmU1YmI0YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOCBPY3QgMjAxNiAyMTozMTo0MCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggd2FybmluZ3MgZm91bmQgd2l0aCBjbGFuZwotCi18IC9tbnQvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbGlicGxpc3Qvc3JjL2Jhc2U2NC5jOjEwNzoxMjogZXJyb3I6IG5vbi12b2lkIGZ1bmN0aW9uICdiYXNlNjRkZWNvZGUnIHNob3VsZCByZXR1cm4gYSB2YWx1ZSBbLVdyZXR1cm4tdHlwZV0KLXwgICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuOwotfCAgICAgICAgICAgICAgICAgICBeCi18IC9tbnQvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvd29ya3NwYWNlL3NvdXJjZXMvbGlicGxpc3Qvc3JjL2Jhc2U2NC5jOjEwOToxNjogZXJyb3I6IG5vbi12b2lkIGZ1bmN0aW9uICdiYXNlNjRkZWNvZGUnIHNob3VsZCByZXR1cm4gYSB2YWx1ZSBbLVdyZXR1cm4tdHlwZV0KLXwgICAgICAgICBpZiAobGVuIDw9IDApIHJldHVybjsKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJjbmFyeS9ub2RlLmMgfCAyICstCi0gc3JjL2Jhc2U2NC5jICAgIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjbmFyeS9ub2RlLmMgYi9saWJjbmFyeS9ub2RlLmMKLWluZGV4IDFmOWY2NjkuLmQ2ZjNmNjMgMTAwNjQ0Ci0tLS0gYS9saWJjbmFyeS9ub2RlLmMKLSsrKyBiL2xpYmNuYXJ5L25vZGUuYwotQEAgLTEwNCw3ICsxMDQsNyBAQCBpbnQgbm9kZV9kZXRhY2gobm9kZV90KiBwYXJlbnQsIG5vZGVfdCogY2hpbGQpIHsKLSAKLSBpbnQgbm9kZV9pbnNlcnQobm9kZV90KiBwYXJlbnQsIHVuc2lnbmVkIGludCBpbmRleCwgbm9kZV90KiBjaGlsZCkKLSB7Ci0tCWlmICghcGFyZW50IHx8ICFjaGlsZCkgcmV0dXJuOwotKwlpZiAoIXBhcmVudCB8fCAhY2hpbGQpIHJldHVybiAtMTsKLSAJY2hpbGQtPmlzTGVhZiA9IFRSVUU7Ci0gCWNoaWxkLT5pc1Jvb3QgPSBGQUxTRTsKLSAJY2hpbGQtPnBhcmVudCA9IHBhcmVudDsKLWRpZmYgLS1naXQgYS9zcmMvYmFzZTY0LmMgYi9zcmMvYmFzZTY0LmMKLWluZGV4IDY1YzYwNjEuLjUzMWEwNmEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzZTY0LmMKLSsrKyBiL3NyYy9iYXNlNjQuYwotQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGF0aWMgaW50IGJhc2U2NGRlY29kZV9ibG9jayh1bnNpZ25lZCBjaGFyICp0YXJnZXQsIGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBkYQotIAotIHVuc2lnbmVkIGNoYXIgKmJhc2U2NGRlY29kZShjb25zdCBjaGFyICpidWYsIHNpemVfdCAqc2l6ZSkKLSB7Ci0tCWlmICghYnVmKSByZXR1cm47Ci0rCWlmICghYnVmKSByZXR1cm4gMDsKLSAJc2l6ZV90IGxlbiA9IHN0cmxlbihidWYpOwotLQlpZiAobGVuIDw9IDApIHJldHVybjsKLSsJaWYgKGxlbiA8PSAwKSByZXR1cm4gMDsKLSAJdW5zaWduZWQgY2hhciAqb3V0YnVmID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygobGVuLzQpKjMrMyk7Ci0gCi0gCXVuc2lnbmVkIGNoYXIgKmxpbmU7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpbW9iaWxlZGV2aWNlL2ZpbGVzL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZWY2ZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1Gcm9tIDMzNWIyNWZlYmQ0Yzg2NGFkMGFjMDg0NzlmNWNkNDNmYzIxYjdkNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWtpYXMgQmFzc2VuCi1EYXRlOiBNb24sIDA5IEp1bCAyMDEyIDIxOjE3OjE1ICswMDAwCi1TdWJqZWN0OiBGaXggYnVpbGRpbmcgd2l0aCBwYXJhbGxlbCBidWlsZCBtYWtlb3B0cwotCi0tLS0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAwYmFkODQwLi4xNTU5OTRlIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNTcsNiArNTcsOCBAQCBBRERfU1VCRElSRUNUT1JZKCBwbHV0aWwgKQotIEFERF9TVUJESVJFQ1RPUlkoIGluY2x1ZGUgKQotIEFERF9TVUJESVJFQ1RPUlkoIHRlc3QgKQotIAotK0FERF9ERVBFTkRFTkNJRVMoIHBsaXN0IGxpYmNuYXJ5ICkKLSsKLSBJRiAoIFNXSUdfRk9VTkQgQU5EIFBZVEhPTkxJQlNfRk9VTkQgQU5EIFBZVEhPTklOVEVSUF9GT1VORCApCi0gCUFERF9TVUJESVJFQ1RPUlkoIHN3aWcgKQotIEVORElGICggU1dJR19GT1VORCBBTkQgUFlUSE9OTElCU19GT1VORCBBTkQgUFlUSE9OSU5URVJQX0ZPVU5EICkKLS0tCi1jZ2l0IHYwLjkuMC4yCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaW1vYmlsZWRldmljZS9saWJwbGlzdF8xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaW1vYmlsZWRldmljZS9saWJwbGlzdF8xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3ODk3OTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgdG8gaGFuZGxlIEFwcGxlIFByb3BlcnR5IExpc3QgZm9ybWF0IHdoZXJlYXMgaXQncyBiaW5hcnkgb3IgWE1MIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmFiMTdiNDE2NDA1NjQ0MzRkZGE4NWMwNmI3MTI0ZjciCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbiIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYmltb2JpbGVkZXZpY2Uub3JnL2Rvd25sb2Fkcy9saWJwbGlzdC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXdhcm5pbmdzLWZvdW5kLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTllMDI1ODg0N2Q1MGY5NzYwZGMzZWNlMjVmNGRjNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNDE4ZGEzODgwMzA4MTk5Yjc0NzY2ZGVlZjJhNzYwYTliMTY5YjgxYTg2OGE2YTkwMzJmNzYxNGUyMDUwMGVjIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaWYgWyAtZSAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9wbGlzdC9fcGxpc3Quc28gXTsgdGhlbgotICAgICAgICBjaHJwYXRoIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3BsaXN0L19wbGlzdC5zbwotICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS11dGlscyAke1BOfSsrICR7UE59LXB5dGhvbiIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJwbGlzdCR7U09MSUJTfSIKLUZJTEVTXyR7UE59KysgPSAiJHtsaWJkaXJ9L2xpYnBsaXN0Kyske1NPTElCU30iCi1GSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzLyoiCi0KLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaW1vYmlsZWRldmljZS9saWJwbGlzdF8yLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2MxZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4wLjAuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgdG8gaGFuZGxlIEFwcGxlIFByb3BlcnR5IExpc3QgZm9ybWF0IHdoZXJlYXMgaXQncyBiaW5hcnkgb3IgWE1MIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmFiMTdiNDE2NDA1NjQ0MzRkZGE4NWMwNmI3MTI0ZjciCisKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZQorCitTUkNSRVYgPSAiNjJlYzgwNDczNjQzNWZhMzRlMzdlNjZlMjI4ZTE3ZTJhYWNlZTFkNyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJpbW9iaWxlZGV2aWNlL2xpYnBsaXN0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgaWYgWyAtZSAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9wbGlzdC9fcGxpc3Quc28gXTsgdGhlbgorICAgICAgICBjaHJwYXRoIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3BsaXN0L19wbGlzdC5zbworICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyAke1BOfSsrICR7UE59LXB5dGhvbiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJwbGlzdCR7U09MSUJTfSIKK0ZJTEVTXyR7UE59KysgPSAiJHtsaWJkaXJ9L2xpYnBsaXN0Kyske1NPTElCU30iCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzLyoiCisKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlidXNibXV4ZF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaW1vYmlsZWRldmljZS9saWJ1c2JtdXhkX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmZjNWM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlidXNibXV4ZF9naXQuYmIKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAiVGhpcyBkYWVtb24gaXMgaW4gY2hhcmdlIG9mIG11bHRpcGxleGluZyBjb25uZWN0aW9ucyBvdmVyIFVTQiB0byBhbiBpUGhvbmUgb3IgaVBvZCB0b3VjaC4iCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmFiMTdiNDE2NDA1NjQ0MzRkZGE4NWMwNmI3MTI0ZjciCisKK0RFUEVORFMgPSAidWRldiBsaWJ1c2IxIGxpYnBsaXN0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2l0cGtndgorCitQS0dWID0gIiR7R0lUUEtHVlRBR30iCisKK1NSQ1JFViA9ICI3OGRmOWJlNWZjODIyMmVkNTM4NDZjYjU1M2RlOWI1ZDI0Yzg1YzZjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmltb2JpbGVkZXZpY2UvbGlidXNibXV4ZDtwcm90b2NvbD1odHRwcyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9pbnN0YWxsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvaW5zdGFsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkzMTlmZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9pbnN0YWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5tbi1sb2dpc3Rpay5kZS91bnN1cHBvcnRlZC9weGEyNTAvcGF0Y2hlcgotIwotCi0tLS0gbGlibG9ja2ZpbGUtMS4wNS9NYWtlZmlsZS5pbn5pbnN0YWxsCi0rKysgbGlibG9ja2ZpbGUtMS4wNS9NYWtlZmlsZS5pbgotQEAgLTIwLDYgKzIwLDcgQEAKLSBpbmNsdWRlZGlyCT0gQGluY2x1ZGVkaXJACi0gCi0gTUFJTEdST1VQCT0gQE1BSUxHUk9VUEAKLStJTlNUR1JQCQk9ICQoaWYgJChNQUlMR1JPVVApLC1nICQoTUFJTEdST1VQKSkKLSAKLSBhbGw6CQlAVEFSR0VUU0AKLSBpbnN0YWxsOglASU5TVEFMTF9UQVJHRVRTQAotQEAgLTUwLDI1ICs1MSwyNyBAQAotIAkJJChDQykgJChDRkxBR1MpIC1jIGxvY2tmaWxlLmMgLW8geGxvY2tmaWxlLm8KLSAKLSBpbnN0YWxsX3N0YXRpYzoJc3RhdGljIGluc3RhbGxfY29tbW9uCi0rCQlpbnN0YWxsIC1kICQoUk9PVCkkKGxpYmRpcikKLSAJCWluc3RhbGwgLW0gNjQ0IGxpYmxvY2tmaWxlLmEgJChST09UKSQobGliZGlyKQotIAotIGluc3RhbGxfc2hhcmVkOglzaGFyZWQgaW5zdGFsbF9jb21tb24KLSsJCWluc3RhbGwgLWQgJChST09UKSQobGliZGlyKQotIAkJaW5zdGFsbCAtbSA3NTUgbGlibG9ja2ZpbGUuc28gXAotIAkJCSQoUk9PVCkkKGxpYmRpcikvbGlibG9ja2ZpbGUuc28uJChWRVIpCi0gCQlsbiAtcyBsaWJsb2NrZmlsZS5zby4kKFZFUikgJChST09UKSQobGliZGlyKS9saWJsb2NrZmlsZS5zbwotIAkJaWYgdGVzdCAiJChST09UKSIgPSAiIjsgdGhlbiBATERDT05GSUdAOyBmaQotIAotIGluc3RhbGxfY29tbW9uOgotKwkJaW5zdGFsbCAtZCAkKFJPT1QpJChpbmNsdWRlZGlyKQotIAkJaW5zdGFsbCAtbSA2NDQgbG9ja2ZpbGUuaCBtYWlsbG9jay5oICQoUk9PVCkkKGluY2x1ZGVkaXIpCi0tCQlpZiBbICIkKE1BSUxHUk9VUCkiICE9ICIiIF07IHRoZW5cCi0tCQkgIGluc3RhbGwgLWcgJChNQUlMR1JPVVApIC1tIDI3NTUgZG90bG9ja2ZpbGUgJChST09UKSQoYmluZGlyKTtcCi0tCQllbHNlIFwKLS0JCSAgaW5zdGFsbCAtZyByb290IC1tIDc1NSBkb3Rsb2NrZmlsZSAkKFJPT1QpJChiaW5kaXIpOyBcCi0tCQlmaQotKwkJaW5zdGFsbCAtZCAkKFJPT1QpJChiaW5kaXIpCi0rCQlpbnN0YWxsIC1tIDc1NSAkKElOU1RHUlApIGRvdGxvY2tmaWxlICQoUk9PVCkkKGJpbmRpcikKLSsJCWluc3RhbGwgLWQgJChST09UKSQobWFuZGlyKS9tYW4xICQoUk9PVCkkKG1hbmRpcikvbWFuMwotIAkJaW5zdGFsbCAtbSA2NDQgKi4xICQoUk9PVCkkKG1hbmRpcikvbWFuMQotIAkJaW5zdGFsbCAtbSA2NDQgKi4zICQoUk9PVCkkKG1hbmRpcikvbWFuMwotIAotIGluc3RhbGxfbmZzbGliOgluZnNsaWIKLSsJCWluc3RhbGwgLWQgJChST09UKSQobmZzbG9ja2RpcikKLSAJCWluc3RhbGwgLW0gNzU1IG5mc2xvY2suc28uJChWRVIpICQoUk9PVCkkKG5mc2xvY2tkaXIpCi0gCQlpZiB0ZXN0ICIkKFJPT1QpIiA9ICIiOyB0aGVuIEBMRENPTkZJR0A7IGZpCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9sZGZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIxZDE0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9sZGZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jCi0jIFBhdGNoIG1hbmFnZWQgYnkgaHR0cDovL3d3dy5tbi1sb2dpc3Rpay5kZS91bnN1cHBvcnRlZC9weGEyNTAvcGF0Y2hlcgotIwotCi0tLS0gbGlibG9ja2ZpbGUtMS4wNS9NYWtlZmlsZS5pbn5sZGZsYWdzCi0rKysgbGlibG9ja2ZpbGUtMS4wNS9NYWtlZmlsZS5pbgotQEAgLTM0LDExICszNCwxMSBAQAotIAotIGxpYmxvY2tmaWxlLnNvOiBsaWJsb2NrZmlsZS5hCi0gCQkkKENDKSAtZlBJQyAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYmxvY2tmaWxlLnNvLjEgXAotLQkJCS1vIGxpYmxvY2tmaWxlLnNvIGxvY2tmaWxlLm8gLWxjCi0rCQkJLW8gbGlibG9ja2ZpbGUuc28gbG9ja2ZpbGUubyAkKExERkxBR1MpIC1sYwotIAotIG5mc2xvY2suc28uJChWRVIpOgluZnNsb2NrLm8KLSAJCSQoQ0MpIC1mUElDIC1zaGFyZWQgLVdsLC1zb25hbWUsbmZzbG9jay5zby4wIFwKLS0JCQktbyBuZnNsb2NrLnNvLiQoTlZFUikgbmZzbG9jay5vCi0rCQkJLW8gbmZzbG9jay5zby4kKE5WRVIpIG5mc2xvY2subyAkKExERkxBR1MpCi0gCi0gZG90bG9ja2ZpbGU6CWRvdGxvY2tmaWxlLm8geGxvY2tmaWxlLm8KLSAJCSQoQ0MpICQoTERGTEFHUykgLW8gZG90bG9ja2ZpbGUgZG90bG9ja2ZpbGUubyB4bG9ja2ZpbGUubwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvbGlibG9ja2ZpbGUtZml4LWluc3RhbGwtc28tdG8tbWFuLWRpci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS0xLjA5L2xpYmxvY2tmaWxlLWZpeC1pbnN0YWxsLXNvLXRvLW1hbi1kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3Zjc2MGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvbGlibG9ja2ZpbGUtZml4LWluc3RhbGwtc28tdG8tbWFuLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCi0KLVRoZSBleHRlbmQgc28gZmlsZSBpcyByZW5hbWUgZnJvbSBuZnNsb2NrLnNvLiQoVkVSKSB0byBuZnNsb2NrLnNvLiQoTlZFUikuIFRoYXQKLWNhdXNlcyBmaWxlIG5mc2xvY2suc28uMC4xIGlzIGluc3RhbGxlZCBpbnRvIG1hbnVhbCBkaXJlY3RvcnkuIEZpeCBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCBhNTg5ZmI4Li40NmE1N2U4IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtNjgsNyArNjgsNyBAQCBpbnN0YWxsX2NvbW1vbjoKLSAJCWluc3RhbGwgLWQgJChST09UKSQoYmluZGlyKQotIAkJaW5zdGFsbCAtbSA3NTUgJChJTlNUR1JQKSBkb3Rsb2NrZmlsZSAkKFJPT1QpJChiaW5kaXIpCi0gCQlpbnN0YWxsIC1kICQoUk9PVCkkKG1hbmRpcikvbWFuMSAkKFJPT1QpJChtYW5kaXIpL21hbjMKLS0JCWluc3RhbGwgLW0gNjQ0ICouMSAkKFJPT1QpJChtYW5kaXIpL21hbjEKLSsJCWluc3RhbGwgLW0gNjQ0IGRvdGxvY2tmaWxlLjEgJChST09UKSQobWFuZGlyKS9tYW4xCi0gCQlpbnN0YWxsIC1tIDY0NCAqLjMgJChST09UKSQobWFuZGlyKS9tYW4zCi0gCi0gaW5zdGFsbF9uZnNsaWI6CW5mc2xpYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvbGlibG9ja2ZpbGUtZml4LW5mc2xpYi1hbmQtc29uYW1lLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLTEuMDkvbGlibG9ja2ZpbGUtZml4LW5mc2xpYi1hbmQtc29uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmQ3YTQwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS0xLjA5L2xpYmxvY2tmaWxlLWZpeC1uZnNsaWItYW5kLXNvbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCi0KLSogbmZzbGliIHNob3VsZCB1c2UgTlZFUiBpbnN0ZWFkIG9mIFZFUgotKiBpbnN0YWxsIHRoZSBtaXNzaW5nIHNvbmFtZSBsaWJyYXJ5Ci0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiAgICAgICAgIHwgICAgOSArKysrKystLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDgzNmNhOWIuLmE1ODlmYjggMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC0yNyw3ICsyNyw3IEBAIGluc3RhbGw6CUBJTlNUQUxMX1RBUkdFVFNACi0gCi0gc3RhdGljOgkJbGlibG9ja2ZpbGUuYSBkb3Rsb2NrZmlsZQotIHNoYXJlZDoJCWxpYmxvY2tmaWxlLnNvIGRvdGxvY2tmaWxlCi0tbmZzbGliOgkJbmZzbG9jay5zby4kKFZFUikKLStuZnNsaWI6CQluZnNsb2NrLnNvLiQoTlZFUikKLSAKLSBsaWJsb2NrZmlsZS5hOglsb2NrZmlsZS5vCi0gCQkkKEFSKSBydiBsaWJsb2NrZmlsZS5hIGxvY2tmaWxlLm8KLUBAIC0zNiw3ICszNiw3IEBAIGxpYmxvY2tmaWxlLnNvOiBsaWJsb2NrZmlsZS5hCi0gCQkkKENDKSAtZlBJQyAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYmxvY2tmaWxlLnNvLjEgXAotIAkJCS1vIGxpYmxvY2tmaWxlLnNvIGxvY2tmaWxlLm8gJChMREZMQUdTKSAtbGMKLSAKLS1uZnNsb2NrLnNvLiQoVkVSKToJbmZzbG9jay5vCi0rbmZzbG9jay5zby4kKE5WRVIpOgluZnNsb2NrLm8KLSAJCSQoQ0MpIC1mUElDIC1zaGFyZWQgLVdsLC1zb25hbWUsbmZzbG9jay5zby4wIFwKLSAJCQktbyBuZnNsb2NrLnNvLiQoTlZFUikgbmZzbG9jay5vICQoTERGTEFHUykKLSAKLUBAIC01OSw2ICs1OSw3IEBAIGluc3RhbGxfc2hhcmVkOglzaGFyZWQgaW5zdGFsbF9jb21tb24KLSAJCWluc3RhbGwgLW0gNzU1IGxpYmxvY2tmaWxlLnNvIFwKLSAJCQkkKFJPT1QpJChsaWJkaXIpL2xpYmxvY2tmaWxlLnNvLiQoVkVSKQotIAkJbG4gLXMgbGlibG9ja2ZpbGUuc28uJChWRVIpICQoUk9PVCkkKGxpYmRpcikvbGlibG9ja2ZpbGUuc28KLSsJCWxuIC1zIGxpYmxvY2tmaWxlLnNvLiQoVkVSKSAkKFJPT1QpJChsaWJkaXIpL2xpYmxvY2tmaWxlLnNvLjEKLSAJCWlmIHRlc3QgIiQoUk9PVCkiID0gIiI7IHRoZW4gQExEQ09ORklHQDsgZmkKLSAKLSBpbnN0YWxsX2NvbW1vbjoKLUBAIC03Miw3ICs3Myw5IEBAIGluc3RhbGxfY29tbW9uOgotIAotIGluc3RhbGxfbmZzbGliOgluZnNsaWIKLSAJCWluc3RhbGwgLWQgJChST09UKSQobmZzbG9ja2RpcikKLS0JCWluc3RhbGwgLW0gNzU1IG5mc2xvY2suc28uJChWRVIpICQoUk9PVCkkKG5mc2xvY2tkaXIpCi0rCQlpbnN0YWxsIC1tIDc1NSBuZnNsb2NrLnNvLiQoTlZFUikgJChST09UKSQobmZzbG9ja2RpcikKLSsJCWxuIC1zZiBuZnNsb2NrLnNvLiQoTlZFUikgJChST09UKSQobGliZGlyKS9uZnNsb2NrLnNvCi0rCQlsbiAtc2YgbmZzbG9jay5zby4kKE5WRVIpICQoUk9PVCkkKGxpYmRpcikvbmZzbG9jay5zby4wCi0gCQlpZiB0ZXN0ICIkKFJPT1QpIiA9ICIiOyB0aGVuIEBMRENPTkZJR0A7IGZpCi0gCi0gY2xlYW46Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLzAwMDEtTWFrZWZpbGUuaW4tYWRkLURFU1RESVIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUvMDAwMS1NYWtlZmlsZS5pbi1hZGQtREVTVERJUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTQxNWRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLzAwMDEtTWFrZWZpbGUuaW4tYWRkLURFU1RESVIucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSA2Nzg0M2RhYmUxMTc3ODQwNjk3ODM5YjkxNmZkODk5MjE4ODkzZWM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMDA6MjU6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuaW46IGFkZCBERVNURElSCisKK0FkZCBERVNURElSIHRvIGZpeCBiZWxvdyBlcnJvciBkdXJpbmcgZG9faW5zdGFsbAorCit8IGluc3RhbGwgLWQgLW0gNzU1IC1nIHJvb3QgLXAgL3Vzci9pbmNsdWRlCit8IGluc3RhbGwgLWQgLW0gNzU1IC1nIHJvb3QgLXAgL3Vzci9saWIKK3wgaW5zdGFsbCAtZCAtbSA3NTUgLWcgcm9vdCAtcCAvdXNyL2JpbgorfCBpbnN0YWxsIC1tIDc1NSBuZnNsb2NrLnNvLjAuMSAvdXNyL2xpYgorfCBpbnN0YWxsIC1kIC1tIDc1NSAtZyByb290IC1wIC91c3Ivc2hhcmUvbWFuL21hbjEKK3wgaW5zdGFsbDogY2Fubm90IGNyZWF0ZSByZWd1bGFyIGZpbGUgJy91c3IvbGliL25mc2xvY2suc28uMC4xJzogUGVybWlzc2lvbiBkZW5pZWQKK3wgTWFrZWZpbGU6Nzg6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsX25mc2xpYicgZmFpbGVkCit8IG1ha2U6ICoqKiBbaW5zdGFsbF9uZnNsaWJdIEVycm9yIDEKK3wgbWFrZTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KK3wgaW5zdGFsbCAtZCAtbSA3NTUgLWcgcm9vdCAtcCAvdXNyL3NoYXJlL21hbi9tYW4zCit8IGluc3RhbGwgLW0gNjQ0IGxvY2tmaWxlLmggbWFpbGxvY2suaCAvdXNyL2luY2x1ZGUKK3wgaW5zdGFsbDogY2Fubm90IGNyZWF0ZSByZWd1bGFyIGZpbGUgJy91c3IvaW5jbHVkZS9sb2NrZmlsZS5oJzogUGVybWlzc2lvbiBkZW5pZWQKK3wgaW5zdGFsbDogY2Fubm90IGNyZWF0ZSByZWd1bGFyIGZpbGUgJy91c3IvaW5jbHVkZS9tYWlsbG9jay5oJzogUGVybWlzc2lvbiBkZW5pZWQKK3wgTWFrZWZpbGU6NjQ6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsX2NvbW1vbicgZmFpbGVkCit8IG1ha2U6ICoqKiBbaW5zdGFsbF9jb21tb25dIEVycm9yIDEKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAzNmE2ZDIzLi4xZTQxMzBlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTIsMTEgKzEyLDExIEBAIENDCQk9IEBDQ0AKKyAKKyBwcmVmaXgJCT0gJChERVNURElSKUBwcmVmaXhACisgZXhlY19wcmVmaXgJPSBAZXhlY19wcmVmaXhACistYmluZGlyCQk9IEBiaW5kaXJACistbGliZGlyCQk9IEBsaWJkaXJACistbWFuZGlyCQk9IEBtYW5kaXJACistbmZzbG9ja2Rpcgk9IEBuZnNsb2NrZGlyQAorLWluY2x1ZGVkaXIJPSBAaW5jbHVkZWRpckAKKytiaW5kaXIJCT0gJChERVNURElSKUBiaW5kaXJACisrbGliZGlyCQk9ICQoREVTVERJUilAbGliZGlyQAorK21hbmRpcgkJPSAkKERFU1RESVIpQG1hbmRpckAKKytuZnNsb2NrZGlyCT0gJChERVNURElSKUBuZnNsb2NrZGlyQAorK2luY2x1ZGVkaXIJPSAkKERFU1RESVIpQGluY2x1ZGVkaXJACisgZGF0YXJvb3RkaXIJPSBAZGF0YXJvb3RkaXJACisgTUFJTEdST1VQCT0gQE1BSUxHUk9VUEAKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS8wMDAxLU1ha2VmaWxlLmluLWluc3RhbGwtbmZzbG9jay5zby1hbmQtbmZzbG9jay5zby4wLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLzAwMDEtTWFrZWZpbGUuaW4taW5zdGFsbC1uZnNsb2NrLnNvLWFuZC1uZnNsb2NrLnNvLjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZiMjk3YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS8wMDAxLU1ha2VmaWxlLmluLWluc3RhbGwtbmZzbG9jay5zby1hbmQtbmZzbG9jay5zby4wLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNjMxZDQ2ZWZmZjJhNmQ4OTcwZTIwMmJhNTQyMmViZWRkMTdhOGQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE5IEp1bCAyMDE4IDAxOjAwOjEwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmluOiBpbnN0YWxsIG5mc2xvY2suc28gYW5kIG5mc2xvY2suc28uMAorCisqIGluc3RhbGwgdGhlIG1pc3Npbmcgc29uYW1lIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMWU0MTMwZS4uMGYxYjUwNiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTc3LDYgKzc3LDggQEAgaW5zdGFsbF9jb21tb246CisgaW5zdGFsbF9uZnNsaWI6CW5mc2xpYgorIAkJaW5zdGFsbCAtZCAtbSA3NTUgLWcgcm9vdCAtcCAkKG5mc2xvY2tkaXIpCisgCQlpbnN0YWxsIC1tIDc1NSBuZnNsb2NrLnNvLiQoTkZTVkVSKSAkKG5mc2xvY2tkaXIpCisrCQlsbiAtc2YgbmZzbG9jay5zby4kKE5GU1ZFUikgJChsaWJkaXIpL25mc2xvY2suc28KKysJCWxuIC1zZiBuZnNsb2NrLnNvLiQoTkZTVkVSKSAkKGxpYmRpcikvbmZzbG9jay5zby4wCisgCQlpZiB0ZXN0ICIkKERFU1RESVIpIiA9ICIiOyB0aGVuIEBMRENPTkZJR0A7IGZpCisgCisgY2xlYW46CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9jb25maWd1cmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUvY29uZmlndXJlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGUtMS4wOS9jb25maWd1cmUucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS9jb25maWd1cmUucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS1maXgtaW5zdGFsbC1zby10by1tYW4tZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlLWZpeC1pbnN0YWxsLXNvLXRvLW1hbi1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEyNTAzMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS9saWJsb2NrZmlsZS1maXgtaW5zdGFsbC1zby10by1tYW4tZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMzYzZWIxYWFlY2E5MTRjN2QzNmEyY2RhZjE0MTdlNGY4N2FmNGMyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE5IEp1bCAyMDE4IDAxOjEyOjQ3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmluOiBkZWZpbmUgZG90bG9ja2ZpbGUuMSBpbnN0YWxsZWQgdG8gbWFuCisKK0V4cGxpY2l0bHkgZGVmaW5lIGRvdGxvY2tmaWxlLjEgaW5zdGFsbGVkIHRvIG1hbgorZGlyIHRvIGF2b2lkIG5mc2xvY2suc28uMC4xIGlzIGluc3RhbGxlZCBpbnRvIG1hbgorZGlyZWN0b3J5CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDBmMWI1MDYuLjZlNTMxNzkgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC03MSw3ICs3MSw3IEBAIGluc3RhbGxfY29tbW9uOgorIAkJZWxzZSBcCisgCQkgIGluc3RhbGwgLWcgcm9vdCAtbSA3NTUgZG90bG9ja2ZpbGUgJChiaW5kaXIpOyBcCisgCQlmaQorLQkJaW5zdGFsbCAtbSA2NDQgKi4xICQobWFuZGlyKS9tYW4xCisrCQlpbnN0YWxsIC1tIDY0NCBkb3Rsb2NrZmlsZS4xICQobWFuZGlyKS9tYW4xCisgCQlpbnN0YWxsIC1tIDY0NCAqLjMgJChtYW5kaXIpL21hbjMKKyAKKyBpbnN0YWxsX25mc2xpYjoJbmZzbGliCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4wOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZV8xLjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzQxYWZhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJsb2NrZmlsZS9saWJsb2NrZmlsZV8xLjA5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIGxvY2tpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5xYS5kZWJpYW4ub3JnL2xpYmwvbGlibG9ja2ZpbGUuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9YWMyODRhNjBkNDhlYWE0YmM4MTFjZGRjMzc3ZmEzNDEiCi0KLVNSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYmwvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4wOS5vcmlnLnRhci5neiBcCi0gICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYmwvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4wOS02LmRlYmlhbi50YXIuYnoyO25hbWU9MS4wOS02IFwKLSAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCi0gICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAotICAgIGZpbGU6Ly9saWJsb2NrZmlsZS1maXgtbmZzbGliLWFuZC1zb25hbWUucGF0Y2ggXAotICAgIGZpbGU6Ly9saWJsb2NrZmlsZS1maXgtaW5zdGFsbC1zby10by1tYW4tZGlyLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJhYTI2OWU0NDA1ZWU4MjM1ZmYxN2QxYjM1N2M2YWU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2OTc5ZWJhMDUzOTYzNjVlMWQ2YWY3MTAwNDMxYWU5ZDMyZjliYzA2MzkzMGQxZGU2NjI5OGEwNjk1ZjFiN2YiCi0KLVNSQ19VUklbMS4wOS02Lm1kNXN1bV0gPSAiYTI4MTE4MDdlNjNhNTI2YzA3YjBmNjA2MjZlMzI5YTIiCi1TUkNfVVJJWzEuMDktNi5zaGEyNTZzdW1dID0gImQ0NWVhY2I3YzYzN2MxNmQwM2M3NzdjNTU5ODlkOThkYTQ5NGFlOTU4NGEwNzgzZmU2ZGJmMGRiNjBmYTI5MGYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi0jIHNldCBkZWZhdWx0IG1haWxncm91cCB0byBtYWlsCi0jIC0td2l0aC1saWJuZnNsb2NrIHNwZWNpZnkgd2hlcmUgdG8gaW5zdGFsbCBuZnNsb2NrLnNvLk5WRVIKLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1tYWlsZ3JvdXA9bWFpbCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWxpYm5mc2xvY2s9JHtsaWJkaXJ9IFwKLSIKLQotIyBNYWtlZmlsZSB1c2luZyBST09UIG5vdCBERVNURElSCi1FWFRSQV9PRU1BS0UgKz0gIlJPT1Q9JHtEfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9uZnNsb2NrLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9uZnNsb2NrLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlXzEuMTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTJjMWUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvY2tmaWxlL2xpYmxvY2tmaWxlXzEuMTQuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJGaWxlIGxvY2tpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5xYS5kZWJpYW4ub3JnL2xpYmwvbGlibG9ja2ZpbGUuaHRtbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9ZjRiYTZhZDA0ZmNiMDVjYzMwYTRjZmE1MDYyYzU1YTMiCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYmwvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4xNC5vcmlnLnRhci5neiBcCisgICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL2xpYmwvbGlibG9ja2ZpbGUvbGlibG9ja2ZpbGVfMS4xNC0xLmRlYmlhbi50YXIuYnoyO25hbWU9MS4xNC0xIFwKKyAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5pbi1hZGQtREVTVERJUi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuaW4taW5zdGFsbC1uZnNsb2NrLnNvLWFuZC1uZnNsb2NrLnNvLjAucGF0Y2ggXAorICAgIGZpbGU6Ly9saWJsb2NrZmlsZS1maXgtaW5zdGFsbC1zby10by1tYW4tZGlyLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyMGMwNTZiYTBjYzRkMTQ3N2U0MDJmNzBiYTJmNWViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiNDBkNGEzZThjYmMyMDRmN2U4N2ZlYTYzN2E0ZTRkZGY5YTExNDlhYWEwYTcyM2E0MjY3ZmViZDBiMWQwNjAiCisKK1NSQ19VUklbMS4xNC0xLm1kNXN1bV0gPSAiZjlhNDQ5MjhjMzQ3N2QyMThjNTYyNTI3MTJlYmM0NzkiCitTUkNfVVJJWzEuMTQtMS5zaGEyNTZzdW1dID0gIjczZjliZTc2OWU2MDIxNDkzOTE1ODhjMjhmMGY0ZjVjZGExMzFlMzBmYjk0YzA3NzdkYmIyM2Q4MTFhYzIxZmYiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCisjIHNldCBkZWZhdWx0IG1haWxncm91cCB0byBtYWlsCisjIC0td2l0aC1saWJuZnNsb2NrIHNwZWNpZnkgd2hlcmUgdG8gaW5zdGFsbCBuZnNsb2NrLnNvLk5WRVIKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1tYWlsZ3JvdXA9bWFpbCBcCisgICAgICAgICAgICAgICAgLS13aXRoLWxpYm5mc2xvY2s9JHtsaWJkaXJ9IFwKKyIKKworIyBNYWtlZmlsZSB1c2luZyBERVNURElSIGFzIHRoZSBjaGFuZ2UgaW4gZTM1ZjllYWJjYmJhMjI0ZWNjNzBiMTQ1ZDVkMmEyZDgxMDY0YzE5NQorIyBhdCBodHRwczovL2dpdGh1Yi5jb20vbWlxdWVscy9saWJsb2NrZmlsZS5naXQKK0VYVFJBX09FTUFLRSArPSAiREVTVERJUj0ke0R9IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L25mc2xvY2suc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L25mc2xvY2suc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9nZ2luZy9saWJsb2dnaW5nXzEuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvZ2dpbmcvbGlibG9nZ2luZ18xLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRhMjU4Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9nZ2luZy9saWJsb2dnaW5nXzEuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBlYXN5IHRvIHVzZSBsb2dnaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICIgXAotbGlibG9nZ2luZyAodGhlIHVwc3RyZWFtIHByb2plY3QpIGlzIGEgY29sbGVjdGlvbiBvZiBzZXZlcmFsIGNvbXBvbmVudHMuIFwKLU5hbWVseTogc3RkbG9nLCBqb3VybmFsZW11LCByZmMzMTk1LiBcCi1UaGUgc3RkbG9nIGNvbXBvbmVudCBvZiBsaWJsb2dnaW5nIGNhbiBiZSB2aWV3ZWQgYXMgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiBcCi10aGUgc3lzbG9nKDMpIEFQSS4gSXQgcmV0YWlucyB0aGUgZWFzeSBzZW1hbnRpY3MsIGJ1dCBtYWtlcyB0aGUgQVBJIG1vcmUgXAotc29waGlzdGljYXRlZCAiYmVoaW5kIHRoZSBzY2VuZXMiIHdpdGggYmV0dGVyIHN1cHBvcnQgZm9yIG11bHRpcGxlIHRocmVhZHMgXAotYW5kIGZsZXhpYmlsaXR5IGZvciBkaWZmZXJlbnQgbG9nIGRlc3RpbmF0aW9ucyAoZS5nLiBzeXNsb2cgYW5kIHN5c3RlbWQgXAotam91cm5hbCkuIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02M2ZlMDM1MzVkODM3MjZmNTY1NTA3MjUwMmJlZjFiYyIKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnJzeXNsb2cuY29tLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDRiOGNlMmRhYTFiZmI4NGM5ZmVhZjQyZjk5MjVmZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzEwZGMxNjkxMjc5YjdhNjY5ZDM4MzU4MWZlNGIwYmFiZGM3YmY3NWM5YjU0YTI0ZTUxZTYwNDI4NjI0ODkwYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbWFuLXBhZ2VzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtam91cm5hbCwgLS1kaXNhYmxlLWpvdXJuYWwsIHN5c3RlbWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlibG9nZ2luZy9saWJsb2dnaW5nXzEuMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvZ2dpbmcvbGlibG9nZ2luZ18xLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjU5ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmxvZ2dpbmcvbGlibG9nZ2luZ18xLjAuNi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkFuIGVhc3kgdG8gdXNlIGxvZ2dpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIiBcCitsaWJsb2dnaW5nICh0aGUgdXBzdHJlYW0gcHJvamVjdCkgaXMgYSBjb2xsZWN0aW9uIG9mIHNldmVyYWwgY29tcG9uZW50cy4gXAorTmFtZWx5OiBzdGRsb2csIGpvdXJuYWxlbXUsIHJmYzMxOTUuIFwKK1RoZSBzdGRsb2cgY29tcG9uZW50IG9mIGxpYmxvZ2dpbmcgY2FuIGJlIHZpZXdlZCBhcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIFwKK3RoZSBzeXNsb2coMykgQVBJLiBJdCByZXRhaW5zIHRoZSBlYXN5IHNlbWFudGljcywgYnV0IG1ha2VzIHRoZSBBUEkgbW9yZSBcCitzb3BoaXN0aWNhdGVkICJiZWhpbmQgdGhlIHNjZW5lcyIgd2l0aCBiZXR0ZXIgc3VwcG9ydCBmb3IgbXVsdGlwbGUgdGhyZWFkcyBcCithbmQgZmxleGliaWxpdHkgZm9yIGRpZmZlcmVudCBsb2cgZGVzdGluYXRpb25zIChlLmcuIHN5c2xvZyBhbmQgc3lzdGVtZCBcCitqb3VybmFsKS4iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTYzZmUwMzUzNWQ4MzcyNmY1NjU1MDcyNTAyYmVmMWJjIgorU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQucnN5c2xvZy5jb20vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjE1YzdlN2FjNmNmZDFmNWRhYmRiYTA4YzUyMmIyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMzhjNjE3NGU1Yzg2NTJlYWEzNGY5NTZiZTM0NTFmNzQ5MWE0NDE2YWI0ODlhZWY2MzE1MWY4MDJiMDBiZjkzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1qb3VybmFsLCAtLWRpc2FibGUtam91cm5hbCwgc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIKaW5kZXggMmM5NjA2My4uOWZiMjVjZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIKQEAgLTEyLDIwICsxMiwxOSBAQAogU1JDX1VSSVttZDVzdW1dID0gImI4ZGVmY2M3MjgwYTkwZTk0MDBkNjY4OWM5M2EyNzljIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkZTZmZjA0NmNmMjE3MmQyNjVhMmNiNmY4ZGE0MzlkODk0ZjNlNGU4MTU3YjA1NmM1MTU1MTUyMzJmYWRlNmIiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eS9yZWxlYXNlcyIKKwogUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCiAKLURFUEVORFMgPSAiY3JhY2tsaWIgdmlydHVhbC9nZXR0ZXh0IHB5dGhvbjMiCi1SREVQRU5EU19weXRob24zLWxpYnB3cXVhbGl0eSA9ICIke1BOfSIKK0RFUEVORFMgPSAiY3JhY2tsaWIgdmlydHVhbC9nZXR0ZXh0IgogCi1pbmhlcml0IGF1dG90b29scyBweXRob24zbmF0aXZlIGdldHRleHQKK2luaGVyaXQgYXV0b3Rvb2xzIGRpc3R1dGlsczMtYmFzZSBnZXR0ZXh0CiAKIEIgPSAiJHtTfSIKIAogZXhwb3J0IFBZVEhPTl9ESVIKIGV4cG9ydCBCVUlMRF9TWVMKIGV4cG9ydCBIT1NUX1NZUwotZXhwb3J0IFNUQUdJTkdfTElCRElSCi1leHBvcnQgU1RBR0lOR19JTkNESVIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uLXJldj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAogICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uLWJpbmFyeT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXApAQCAtMzYsMTAgKzM1LDcgQEAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IgogUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwgLS1kaXNhYmxlLXBhbSwgbGlicGFtIgogCi1QQUNLQUdFUyArPSAicHl0aG9uMy1saWJwd3F1YWxpdHkgcHl0aG9uMy1saWJwd3F1YWxpdHktZGJnIgogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LnNvIgogRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5hIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5sYSIKLUZJTEVTX3B5dGhvbjMtJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTX3B5dGhvbjMtJHtQTn0tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDEtTWFrZWZpbGUuYW0tcmVtb3ZlLWRvYy1hbmQtYXBpZG9jLnBhdGNoCmluZGV4IDliMzI4YTEuLjk3ZmIwOTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAxLU1ha2VmaWxlLmFtLXJlbW92ZS1kb2MtYW5kLWFwaWRvYy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZGIzMmJhNjBjYTc1ZDI4OGQzYWMwOGI1NDI1NmNiNzRkOWUxNTgxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMWY3ZDEwNmM3ZDk4MmZlMDU1YWRkYzhkODgzYjE2MTIwMjIzMzE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjYgQXByIDIwMTcgMDM6NDc6NTggLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIE1ha2VmaWxlLmFtOiByZW1vdmUgZG9jIGFuZCBhcGlkb2MKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIE1ha2VmaWxlLmFtOiByZW1vdmUgZG9jIGFuZCBhcGlkb2MKIAogVGhlcmUgd2FzIGEgZmFpbHVyZSBhdCBkb19pbnN0YWxsIHRpbWUsIHNvIHJlbW92ZSBkb2MgdG8gd29ya2Fyb3VuZC4KIApAQCAtMTMsNyArMTMsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggYzZhYjY0MC4uZmIwOWZjMSAxMDA2NDQKK2luZGV4IDlhZDgyN2MuLjM0MzY0YTggMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDUgKzEsNSBAQApAQCAtMjQsNSArMjQsNSBAQAogIEVYVFJBX0RJU1QgPSBcCiAgICAgIGxpYnJlcG9ydC5wYy5pbiBcCiAtLSAKLTIuOC4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDItY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YteG1sdG8tYW5kLWFzY2lpZG9jLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAyLWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLXhtbHRvLWFuZC1hc2NpaWRvYy5wYXRjaAppbmRleCAxNDY1MTBlLi43ZjU4OTVlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDItY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YteG1sdG8tYW5kLWFzY2lpZG9jLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMi1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi14bWx0by1hbmQtYXNjaWlkb2MucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ4YzQ5ZTZhMTVhYjI4ZjRjYTk0ZTAzYjJhNTNlZDhkZjYzMzQ2Y2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDliZWFkY2RmY2E5MTk4NTQ4ZjA2YmYxOGYzZjI2ZTFkMTE1NDJlNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI2IEFwciAyMDE3IDAzOjQ5OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBjb25maWd1cmUuYWM6IHJlbW92ZSBwcm9nIHRlc3Qgb2YgeG1sdG8gYW5kIGFzY2lpZG9jCitEYXRlOiBUdWUsIDMxIEp1bCAyMDE4IDE2OjUzOjA0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBjb25maWd1cmUuYWM6IHJlbW92ZSBwcm9nIHRlc3Qgb2YgeG1sdG8gYW5kIGFzY2lpZG9jCiAKIFRoZSBwcm9nIG9mIHhtbHRvIGFuZCBhc2NpaWRvYyB3ZXJlIHVzZWQgdG8gZ2VuZXJhdGUgZG9jdW1lbnRzLAogYW5kIHNpbmNlIHRoZSBkb2MgbW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gZGlzYWJsZWQsIHNvIHdlIHNob3VsZApAQCAtMTUsMTIgKzE1LDEyIEBACiAgMSBmaWxlIGNoYW5nZWQsIDE4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjY2VmZTUwLi5lZDQ4Yzg4IDEwMDY0NAoraW5kZXggZmVhZmMyOC4uYWNlY2NmNCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjgsMjQgKzY4LDYgQEAgaWYgdGVzdCAteiAiJFBZVEhPTjMiOyB0aGVuCi0gICAgIGV4aXQgMQotIGZpCitAQCAtNTYsMjQgKzU2LDYgQEAgSVRfUFJPR19JTlRMVE9PTChbMC4zNS4wXSkKKyAKKyBkbmwgKioqKioqIEVORCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgCiAtQUNfUEFUSF9QUk9HKFtBU0NJSURPQ10sIFthc2NpaWRvY10sIFtub10pCiAtW2lmIHRlc3QgIiRBU0NJSURPQyIgPSAibm8iXQpAQCAtNDQsNSArNDQsNSBAQAogIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYnVnemlsbGFdLFt1c2UgQnVnemlsbGEgcGx1Z2luIChkZWZhdWx0IGlzIFlFUyldKSwKICBMSUJSRVBPUlRfUEFSU0VfV0lUSChbYnVnemlsbGFdKSkKIC0tIAotMi44LjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMy13aXRob3V0LWJ1aWxkLXBsdWdpbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDMtd2l0aG91dC1idWlsZC1wbHVnaW5zLnBhdGNoCmluZGV4IDNhZDc3NzQuLjJmZjE3MzEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwMy13aXRob3V0LWJ1aWxkLXBsdWdpbnMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDAzLXdpdGhvdXQtYnVpbGQtcGx1Z2lucy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMGU5NmQ5ZjIzYjJiMTY2ZTc0NDRlN2M4ZTBhNmQ0YjgzYzJlY2NkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDFiY2UxZGUyZmQyYTBmNzljMjY2ZjI0NWFlM2UzNzIwY2NhZjQ2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjYgQXByIDIwMTcgMDM6NTE6MDMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIHdpdGhvdXQgYnVpbGQgcGx1Z2lucworU3ViamVjdDogW1BBVENIIDMvNF0gd2l0aG91dCBidWlsZCBwbHVnaW5zCiAKIFVwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAogCkBAIC0yMiw1ICsyMiw1IEBACiAtU1VCRElSUyA9IGluY2x1ZGUgbGliIHBsdWdpbnMgcmVwb3J0LXB5dGhvbiBjbGkgY2xpZW50LXB5dGhvbiB3b3JrZmxvd3MgJChzdWJfZGlycykKICtTVUJESVJTID0gaW5jbHVkZSBsaWIgcmVwb3J0LXB5dGhvbiBjbGkgY2xpZW50LXB5dGhvbiB3b3JrZmxvd3MgJChzdWJfZGlycykKIC0tIAotMi44LjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNC1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi1hdWdwYXJzZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNC1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi1hdWdwYXJzZS5wYXRjaAppbmRleCA5ODM5ZTVhLi40YmE2OWM3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDQtY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YtYXVncGFyc2UucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9maWxlcy8wMDA0LWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLWF1Z3BhcnNlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjZjNiNjQ2ZmFjYzE5MDc4ZWQyOWY4MjhlMzZkZDJlNTUyMjgzNTE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMWMzMDE1MDJhOGY2OWI5ODg5MTk3NzQ0YjMwMWExMzYwODJmMDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAwMjoxNTowMiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IHJlbW92ZSBwcm9nIHRlc3Qgb2YgYXVncGFyc2UKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGNvbmZpZ3VyZS5hYzogcmVtb3ZlIHByb2cgdGVzdCBvZiBhdWdwYXJzZQogCiBUaGUgYnVpbGQgdGltZSBkb2VzIG5vdCByZXF1aXJlIGl0LgogCkBAIC0xMywxMCArMTMsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzA2YWYyZC4uYjkwZjQ5ZSAxMDA2NDQKK2luZGV4IGFjZWNjZjQuLjgzYzEwMWIgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI4OCwxNCArMjg4LDYgQEAgQUNfQVJHX1dJVEgoYXVnZWFzbGVuc2xpYmRpciwKK0BAIC0zNTAsMTQgKzM1MCw2IEBAIEFDX0FSR19XSVRIKGF1Z2Vhc2xlbnNsaWJkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RpcmVjdG9yeSBmb3IgbGlicmVwb3IgbGVucyAoZGVmYXVsdDogL3Vzci9zaGFyZS9hdWdlYXMvbGVuc2VzKV0pXSwKICAgICAgICAgICAgICBbXSwgW3dpdGhfYXVnZWFzbGVuc2xpYmRpcj0iL3Vzci9zaGFyZS9hdWdlYXMvbGVuc2VzIl0pCiAgQUNfU1VCU1QoW0FVR0VBU19MRU5TX0xJQl9ESVJdLCBbJHdpdGhfYXVnZWFzbGVuc2xpYmRpcl0pCkBAIC0zMiw1ICszMiw1IEBACiAgQUNfQVJHX1dJVEgoW2RlZmF1bHRkdW1wZGlybW9kZV0sCiAgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kZWZhdWx0ZHVtcGRpcm1vZGU9T0NUQUwtTU9ERV0sCiAtLSAKLTIuOC4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2ZpbGVzLzAwMDUtcmVtb3ZlLXB5dGhvbjItc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzcwZjA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvZmlsZXMvMDAwNS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLUZyb20gMDY3MTBhYjg5ZmM3ZDdhODJhMzc4Mjg5YWEzZmNkOTJkMzMwNzRmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjcgQXByIDIwMTcgMDM6MzE6MDAgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIHB5dGhvbjIgc3VwcG9ydAotCi1XZSBkbyBub3QgcmVxdWlyZSBweXRob24yLCBzbyByZW1vdmUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogIEluYXBwcm9wcmlhdGUgd29ya2Fyb3VuZAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNSAtLS0tLS0tLS0tLS0tLS0KLSBzcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0gfCAgOSAtLS0tLS0tLS0KLSBzcmMvcmVwb3J0LXB5dGhvbi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgfCAxOSAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0MyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZWI1MDM4Mi4uODI2ZDBmZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTY2LDE1ICsxNjYsNiBAQCBkbwotIGRvbmUKLSBmaSBkbmwgZW5kIE5PX01BTlRJU0JUCi0gCi0tQUNfUEFUSF9QUk9HKFtQWVRIT05fQ09ORklHXSwgW3B5dGhvbi1jb25maWddLCBbbm9dKQotLVtpZiB0ZXN0ICIkUFlUSE9OX0NPTkZJRyIgPSAibm8iXQotLVt0aGVuXQotLSAgICBbZWNobyAiVGhlIHB5dGhvbi1jb25maWcgcHJvZ3JhbSB3YXMgbm90IGZvdW5kIGluIHRoZSBzZWFyY2ggcGF0aC4gUGxlYXNlIGVuc3VyZSJdCi0tICAgIFtlY2hvICJ0aGF0IGl0IGlzIGluc3RhbGxlZCBhbmQgaXRzIGRpcmVjdG9yeSBpcyBpbmNsdWRlZCBpbiB0aGUgc2VhcmNoIHBhdGguIl0KLS0gICAgW2VjaG8gIlRoZW4gcnVuIGNvbmZpZ3VyZSBhZ2FpbiBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZCBsaWJyZXBvcnQuIl0KLS0gICAgW2V4aXQgMV0KLS1bZmldCi0tCi0gQUNfUEFUSF9QUk9HKFtQWVRIT04zX0NPTkZJR10sIFtweXRob24zLWNvbmZpZ10sIFtub10pCi0gW2lmIHRlc3QgIiRQWVRIT04zX0NPTkZJRyIgPSAibm8iXQotIFt0aGVuXQotQEAgLTE4NCw5ICsxNzUsNiBAQCBBQ19QQVRIX1BST0coW1BZVEhPTjNfQ09ORklHXSwgW3B5dGhvbjMtY29uZmlnXSwgW25vXSkKLSAgICAgW2V4aXQgMV0KLSBbZmldCi0gCi0tUFlUSE9OX0NGTEFHUz1gcHl0aG9uLWNvbmZpZyAtLWNmbGFncyAyPiAvZGV2L251bGxgCi0tUFlUSE9OX0xJQlM9YHB5dGhvbi1jb25maWcgLS1saWJzIDI+IC9kZXYvbnVsbGAKLS0KLSBQWVRIT04zX0NGTEFHUz1gcHl0aG9uMy1jb25maWcgLS1jZmxhZ3MgMj4gL2Rldi9udWxsYAotIFBZVEhPTjNfTElCUz1gcHl0aG9uMy1jb25maWcgLS1saWJzIDI+IC9kZXYvbnVsbGAKLSAKLUBAIC0xOTgsOSArMTg2LDYgQEAgUFlUSE9OM19ESVI9YCRQWVRIT04zIC1jICJpbXBvcnQgZGlzdHV0aWxzLnN5c2NvbmZpZzsgXAotIFBZVEhPTjNfRVhFQ0RJUj1gJFBZVEhPTjMgLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBcCi0gICAgIHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJFBZVEhPTjNfRVhFQ19QUkVGSVgnKSkiYAotIAotLUFDX1NVQlNUKFBZVEhPTl9DRkxBR1MpCi0tQUNfU1VCU1QoUFlUSE9OX0xJQlMpCi0tCi0gQUNfU1VCU1QoUFlUSE9OM19DRkxBR1MpCi0gQUNfU1VCU1QoUFlUSE9OM19MSUJTKQotIEFDX1NVQlNUKHB5dGhvbjNkaXIsICRQWVRIT04zX0RJUikKLWRpZmYgLS1naXQgYS9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0gYi9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0KLWluZGV4IDQ2YWM0MmYuLmZiNTIxNmEgMTAwNjQ0Ci0tLS0gYS9zcmMvY2xpZW50LXB5dGhvbi9yZXBvcnRjbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9jbGllbnQtcHl0aG9uL3JlcG9ydGNsaWVudC9NYWtlZmlsZS5hbQotQEAgLTQsMTMgKzQsMTAgQEAgUFlGSUxFUyA9IFwKLSAgICAgZG5mZGVidWdpbmZvLnB5IFwKLSAgICAgeXVtZGVidWdpbmZvLnB5Ci0gCi0tcHkyY2xpZW50ZGlyID0gJChweWV4ZWNkaXIpL3JlcG9ydGNsaWVudAotIHB5M2NsaWVudGRpciA9ICQocHkzZXhlY2RpcikvcmVwb3J0Y2xpZW50Ci0gCi0tcHkyY2xpZW50X1BZVEhPTiA9ICQoUFlGSUxFUykKLSBweTNjbGllbnRfUFlUSE9OID0gJChQWUZJTEVTKQotIAotLXB5MmNsaWVudF9MVExJQlJBUklFUyA9IF9yZXBvcnRjbGllbnQubGEKLSBweTNjbGllbnRfTFRMSUJSQVJJRVMgPSBfcmVwb3J0Y2xpZW50My5sYQotIAotIFBZRVhURklMRVMgPSBcCi1AQCAtMzMsMTIgKzMwLDYgQEAgUFlFWFRMREZMQUdTID0gXAotICAgICAtYXZvaWQtdmVyc2lvbiBcCi0gICAgIC1XbCwteixyZWxybyAtV2wsLXosbm93Ci0gCi0tX3JlcG9ydGNsaWVudF9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQotLV9yZXBvcnRjbGllbnRfbGFfQ1BQRkxBR1MgPSAkKFBZRVhUQ1BQRkxBR1MpICQoUFlUSE9OX0NGTEFHUykKLS1fcmVwb3J0Y2xpZW50X2xhX0xERkxBR1MgPSAkKFBZRVhUTERGTEFHUykgXAotLSAgICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggaW5pdF9yZXBvcnRjbGllbnQKLS1fcmVwb3J0Y2xpZW50X2xhX0xJQkFERCA9IC4uLy4uL2xpYi9saWJyZXBvcnQubGEKLS0KLSBfcmVwb3J0Y2xpZW50M19sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQotIF9yZXBvcnRjbGllbnQzX2xhX0NQUEZMQUdTID0gJChQWUVYVENQUEZMQUdTKSAkKFBZVEhPTjNfQ0ZMQUdTKQotIF9yZXBvcnRjbGllbnQzX2xhX0xERkxBR1MgPSAkKFBZRVhUTERGTEFHUykgXAotZGlmZiAtLWdpdCBhL3NyYy9yZXBvcnQtcHl0aG9uL01ha2VmaWxlLmFtIGIvc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IDc5M2NlYmQuLjI0MWRjYjcgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVwb3J0LXB5dGhvbi9NYWtlZmlsZS5hbQotKysrIGIvc3JjL3JlcG9ydC1weXRob24vTWFrZWZpbGUuYW0KLUBAIC0xLDEyICsxLDkgQEAKLSBQWUZJTEVTID0gX19pbml0X18ucHkgYWNjb3VudG1hbmFnZXIucHkKLSAKLS1weXJlcG9ydGV4ZWNkaXIgPSAkKHB5ZXhlY2RpcikvcmVwb3J0Ci0gcHkzcmVwb3J0ZXhlY2RpciA9ICQocHkzZXhlY2RpcikvcmVwb3J0Ci0gCi0tcHlyZXBvcnRleGVjX1BZVEhPTiA9ICQoUFlGSUxFUykKLSBweTNyZXBvcnRleGVjX1BZVEhPTiA9ICQoUFlGSUxFUykKLSAKLS1weXJlcG9ydGV4ZWNfTFRMSUJSQVJJRVMgPSBfcHlyZXBvcnQubGEKLSBweTNyZXBvcnRleGVjX0xUTElCUkFSSUVTID0gX3B5M3JlcG9ydC5sYQotIAotIFBZRVhURklMRVMgPSBcCi1AQCAtMzQsMjAgKzMxLDYgQEAgUFlFWFRMREZMQUdTID0gXAotICAgICAtYXZvaWQtdmVyc2lvbiBcCi0gICAgIC1XbCwteixyZWxybyAtV2wsLXosbm93Ci0gCi0tX3B5cmVwb3J0X2xhX1NPVVJDRVMgPSAkKFBZRVhURklMRVMpCi0tCi0tX3B5cmVwb3J0X2xhX0NQUEZMQUdTID0gXAotLSAgICAkKFBZRVhUQ1BQRkxBR1MpIFwKLS0gICAgJChQWVRIT05fQ0ZMQUdTKQotLQotLV9weXJlcG9ydF9sYV9MREZMQUdTID0gXAotLSAgICQoUFlFWFRMREZMQUdTKSBcCi0tICAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IGluaXRfcHlyZXBvcnQKLS0KLS1fcHlyZXBvcnRfbGFfTElCQUREID0gXAotLSAgICAuLi9saWIvbGlicmVwb3J0LmxhIFwKLS0gICAgJChQWVRIT04yX0xJQlMpCi0tCi0gX3B5M3JlcG9ydF9sYV9TT1VSQ0VTID0gJChQWUVYVEZJTEVTKQotIAotIF9weTNyZXBvcnRfbGFfQ1BQRkxBR1MgPSBcCi1AQCAtNjQsNyArNDcsNiBAQCBfcHkzcmVwb3J0X2xhX0xJQkFERCA9IFwKLSAKLSAjIHJlcG9ydCBjb21wYXQ6Ci0gCi0tcHlyZXBvcnRpb2V4ZWNkaXIgPSAkKHB5ZXhlY2RpcikvcmVwb3J0L2lvCi0gcHkzcmVwb3J0aW9leGVjZGlyID0gJChweTNleGVjZGlyKS9yZXBvcnQvaW8KLSAKLSBQWUlPRklMRVMgPSBcCi1AQCAtNzMsNSArNTUsNCBAQCBQWUlPRklMRVMgPSBcCi0gICAgIGlvL05ld3RJTy5weSBcCi0gICAgIGlvL1RleHRJTy5weQotIAotLXB5cmVwb3J0aW9leGVjX1BZVEhPTiA9ICQoUFlJT0ZJTEVTKQotIHB5M3JlcG9ydGlvZXhlY19QWVRIT04gPSAkKFBZSU9GSUxFUykKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnJlcG9ydC9saWJyZXBvcnRfMi45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJjNjYxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpYnJhcmllcyBwcm92aWRpbmcgQVBJIGZvciByZXBvcnRpbmcgZGlmZmVyZW50IHByb2JsZW1zIGluIGFwcGxpY2F0aW9ucyBcCi10byBkaWZmZXJlbnQgYnVnIHRhcmdldHMgbGlrZSBCdWd6aWxsYSwgZnRwLCB0cmFjLCBldGMuLi4iCi1TVU1NQVJZID0gIkdlbmVyaWMgbGlicmFyeSBmb3IgcmVwb3J0aW5nIHZhcmlvdXMgcHJvYmxlbXMiCi1IT01FUEFHRSA9ICJodHRwczovL2FicnQucmVhZHRoZWRvY3Mub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotREVQRU5EUyA9ICJ4bWxycGMtYyB4bWxycGMtYy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIFwKLSAgICAgICAganNvbi1jIGxpYnRhciBsaWJuZXd0IGxpYnByb3h5IHJwbSBcCi0gICAgICAgIGF1Z2VhcyBzYXR5ciBzeXN0ZW1kIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FicnQvbGlicmVwb3J0LmdpdDtwcm90b2NvbD1odHRwcyIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLXJlbW92ZS1kb2MtYW5kLWFwaWRvYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi14bWx0by1hbmQtYXNjaWlkb2MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtd2l0aG91dC1idWlsZC1wbHVnaW5zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1yZW1vdmUtcHJvZy10ZXN0LW9mLWF1Z3BhcnNlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAotIgotU1JDUkVWID0gImNmZmY0OWYwNmQ5ZDE3ZTI2OWQ0NjNlZTcxYjNkOTRjOGJmYjBjNTgiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdndGsnLCcnLGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrLCAtLXdpdGhvdXQtZ3RrLCBndGsrMywiCi0KLVJERVBFTkRTX3B5dGhvbjMtbGlicmVwb3J0ICs9ICIke1BOfSIKLQotZG9fcGF0Y2hbcHJlZnVuY3NdICs9ICJkb19nZW5fdmVyc2lvbiIKLWRvX2dlbl92ZXJzaW9uKCkgewotICAgIGNkICR7U30KLSAgICAuL2dlbi12ZXJzaW9uCi19Ci0KLVBBQ0tBR0VTICs9ICJweXRob24zLWxpYnJlcG9ydCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi8uZGVidWciCi1GSUxFU19weXRob24zLWxpYnJlcG9ydCA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJyZXBvcnQvbGlicmVwb3J0XzIuOS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0Mjk1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicmVwb3J0L2xpYnJlcG9ydF8yLjkuNS5iYgpAQCAtMCwwICsxLDQ5IEBACitERVNDUklQVElPTiA9ICJMaWJyYXJpZXMgcHJvdmlkaW5nIEFQSSBmb3IgcmVwb3J0aW5nIGRpZmZlcmVudCBwcm9ibGVtcyBpbiBhcHBsaWNhdGlvbnMgXAordG8gZGlmZmVyZW50IGJ1ZyB0YXJnZXRzIGxpa2UgQnVnemlsbGEsIGZ0cCwgdHJhYywgZXRjLi4uIgorU1VNTUFSWSA9ICJHZW5lcmljIGxpYnJhcnkgZm9yIHJlcG9ydGluZyB2YXJpb3VzIHByb2JsZW1zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hYnJ0LnJlYWR0aGVkb2NzLm9yZy8iCitMSUNFTlNFID0gIkdQTHYyKyIKK0RFUEVORFMgPSAieG1scnBjLWMgeG1scnBjLWMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSBcCisgICAgICAgIGpzb24tYyBsaWJ0YXIgbGlibmV3dCBsaWJwcm94eSBycG0gXAorICAgICAgICBhdWdlYXMgc2F0eXIgc3lzdGVtZCBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hYnJ0L2xpYnJlcG9ydC5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1yZW1vdmUtZG9jLWFuZC1hcGlkb2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLXJlbW92ZS1wcm9nLXRlc3Qtb2YteG1sdG8tYW5kLWFzY2lpZG9jLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXdpdGhvdXQtYnVpbGQtcGx1Z2lucy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUuYWMtcmVtb3ZlLXByb2ctdGVzdC1vZi1hdWdwYXJzZS5wYXRjaCBcCisiCitTUkNSRVYgPSAiMTVmOTJiY2FmNzNlNWViODk1OGZiZGU2NTVhNTdkY2QxMTE3NTdhNyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdndGsnLCcnLGQpfSIKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrLCAtLXdpdGhvdXQtZ3RrLCBndGsrMywiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LXB5dGhvbjIgLS13aXRoLXB5dGhvbjMiCisKK1JERVBFTkRTX3B5dGhvbjMtbGlicmVwb3J0ICs9ICIke1BOfSIKKworZG9fcGF0Y2hbcHJlZnVuY3NdICs9ICJkb19nZW5fdmVyc2lvbiIKK2RvX2dlbl92ZXJzaW9uKCkgeworICAgIGNkICR7U30KKyAgICAuL2dlbi12ZXJzaW9uCit9CisKK1BBQ0tBR0VTICs9ICJweXRob24zLWxpYnJlcG9ydCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi8uZGVidWciCitGSUxFU19weXRob24zLWxpYnJlcG9ydCA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1zdXBwb3J0LW9wZW5zc2wtMS4xLngucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1zdXBwb3J0LW9wZW5zc2wtMS4xLngucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE4OTExZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAxLXN1cHBvcnQtb3BlbnNzbC0xLjEueC5wYXRjaApAQCAtMCwwICsxLDcyIEBACitGcm9tIDdkYjZkOGE2NTdkMTNiYjU2MmEyN2M2MTgxYWNjYWYzZTUzYzBlZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI1IFNlcCAyMDE4IDE0OjAzOjEwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN1cHBvcnQgb3BlbnNzbCAxLjEueAorCitMb25nIHRpbWUgbm8gbWFpbnRhaW4gZnJvbSB1cHN0cmVhbSBzaW5jZSAyMDEzLTA2LTA0CisoaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbmFpbC8pLCBiYWNrcG9ydCBhCitmaXggZnJvbSBvcGVuU1VTRQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtvcGVuU1VTRV0KK2h0dHBzOi8vYnVpbGQub3BlbnN1c2Uub3JnL3BhY2thZ2Uvdmlld19maWxlL29wZW5TVVNFOkxlYXA6MTUuMC9tYWlseC9tYWlseC0xMi41LW9wZW5zc2wtMS4xLjBmLnBhdGNoP2V4cGFuZD0xCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG9wZW5zc2wuYyB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvb3BlbnNzbC5jIGIvb3BlbnNzbC5jCitpbmRleCA0NGZlNGU1Li4wY2NjNTE3IDEwMDY0NAorLS0tIGEvb3BlbnNzbC5jCisrKysgYi9vcGVuc3NsLmMKK0BAIC0xMzcsNyArMTM3LDEyIEBAIHNzbF9yYW5kX2luaXQodm9pZCkKKyAKKyAJaWYgKChjcCA9IHZhbHVlKCJzc2wtcmFuZC1lZ2QiKSkgIT0gTlVMTCkgeworIAkJY3AgPSBleHBhbmQoY3ApOworLQkJaWYgKFJBTkRfZWdkKGNwKSA9PSAtMSkgeworKyNpZm5kZWYgT1BFTlNTTF9OT19FR0QKKysJCWlmIChSQU5EX2VnZChjcCkgPT0gLTEpCisrI2Vsc2UKKysJCWlmICgxKQorKyNlbmRpZgorKwkJeworIAkJCWZwcmludGYoc3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgMjQ1LAorIAkJCQkiZW50cm9weSBkYWVtb24gYXQgXCIlc1wiIG5vdCBhdmFpbGFibGVcbiIpLAorIAkJCQkJY3ApOworQEAgLTIxNiw2ICsyMjEsNyBAQCBzc2xfc2VsZWN0X21ldGhvZChjb25zdCBjaGFyICp1aHApCisgCisgCWNwID0gc3NsX21ldGhvZF9zdHJpbmcodWhwKTsKKyAJaWYgKGNwICE9IE5VTEwpIHsKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSKSAmJiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDA2ZkwKKyAJCWlmIChlcXVhbChjcCwgInNzbDMiKSkKKyAJCQltZXRob2QgPSBTU0x2M19jbGllbnRfbWV0aG9kKCk7CisgCQllbHNlIGlmIChlcXVhbChjcCwgInRsczEiKSkKK0BAIC0yMjUsOCArMjMxLDI1IEBAIHNzbF9zZWxlY3RfbWV0aG9kKGNvbnN0IGNoYXIgKnVocCkKKyAJCQkJCSJJbnZhbGlkIFNTTCBtZXRob2QgXCIlc1wiXG4iKSwgY3ApOworIAkJCW1ldGhvZCA9IFNTTHYyM19jbGllbnRfbWV0aG9kKCk7CisgCQl9CisrI2Vsc2UKKysJCW1ldGhvZCA9IE5VTEw7CisrCQlpZiAoZXF1YWwoY3AsICJ0bHMiKSkKKysJCQltZXRob2QgPSBUTFNfY2xpZW50X21ldGhvZCgpOworKwkJZWxzZSBpZiAoZXF1YWwoY3AsICJkdGxzIikpCisrCQkJbWV0aG9kID0gRFRMU19jbGllbnRfbWV0aG9kKCk7CisrCisrCQlpZiAoIW1ldGhvZCkgeworKwkJCWZwcmludGYoc3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgMjQ0LAorKwkJCQkJIkludmFsaWQgU1NMIG1ldGhvZCBcIiVzXCJcbiIpLCBjcCk7CisrCQkJbWV0aG9kID0gVExTX2NsaWVudF9tZXRob2QoKTsKKysJCX0KKysjZW5kaWYKKyAJfSBlbHNlCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX05VTUJFUikgJiYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4MTAxMDAwNmZMCisgCQltZXRob2QgPSBTU0x2MjNfY2xpZW50X21ldGhvZCgpOworKyNlbHNlCisrCQltZXRob2QgPSBUTFNfY2xpZW50X21ldGhvZCgpOworKyNlbmRpZgorIAlyZXR1cm4gbWV0aG9kOworIH0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9tYWlseF8xMi41LTUuYmIKaW5kZXggMGExOTFhMC4uNDE2MWVhNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCkBAIC05LDcgKzksNyBAQAogTElDRU5TRSA9ICJCU0QgJiBNUEwtMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQyMDJhMGE2MjkxMGNmOTRmN2FmOGEzNDM2YTJhMmRkIgogCi1ERVBFTkRTID0gIm9wZW5zc2wxMCIKK0RFUEVORFMgPSAib3BlbnNzbCIKIAogU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE2MDcyOFQwNDM0NDNaL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUub3JpZy50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoIFwKQEAgLTIxLDYgKzIxLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZXhwbGljaXRseS5kaXNhYmxlLmtyYjUuc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN1cHBvcnQtb3BlbnNzbC0xLjEueC5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyOWE2MDMzZWYxNDEyODI0ZDAyZWI5ZDkyMTNjYjFmMiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL2ZpbGVzLzAwMDEtRml4LWVycm9ycy1mb3VuZC1ieS1jbGFuZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL2ZpbGVzLzAwMDEtRml4LWVycm9ycy1mb3VuZC1ieS1jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M3Y2RjMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWQ1ZGVlcC9maWxlcy8wMDAxLUZpeC1lcnJvcnMtZm91bmQtYnktY2xhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDZlZjY5YTI2MTI2ZWU0ZTY5YTI1MzkyZmQ0NTZiOGE2NmM1MWRmZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAwMjo0Njo1NSArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggZXJyb3JzIGZvdW5kIGJ5IGNsYW5nCi0KLUZpeGVzIGVycm9ycyBsaWtlCi0KLS4uLy4uL2dpdC9zcmMvaGFzaC5jcHA6MjgyOjE5OiBlcnJvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyAoJ2NvbnN0IHVuc2lnbmVkIGNoYXIgKicgYW5kICdpbnQnKQotICAgICAgICAgICAgaWYoZmRodC0+YmFzZT4wKXsKLSAgICAgICAgICAgICAgIH5+fn5+fn5+fn5efgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2hhc2guY3BwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2hhc2guY3BwIGIvc3JjL2hhc2guY3BwCi1pbmRleCA0MjE2MTU3Li41MmY0MTliIDEwMDY0NAotLS0tIGEvc3JjL2hhc2guY3BwCi0rKysgYi9zcmMvaGFzaC5jcHAKLUBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBmaWxlX2RhdGFfaGFzaGVyX3Q6Omhhc2goKQotIAkJTUFQX0ZJTEV8Ci0gI2VuZGlmCi0gCQlNQVBfU0hBUkVELGZkLDApOwotLQkgICAgaWYoZmRodC0+YmFzZT4wKXsJCQotKwkgICAgaWYoZmRodC0+YmFzZSAhPSAodm9pZCAqKSAtMSl7Ci0gCQkvKiBtbWFwIGlzIHN1Y2Nlc3NmdWwsIHNvIHNldCB0aGUgYm91bmRzLgotIAkJICogaWYgaXQgaXMgbm90IHN1Y2Nlc3NmdWwsIHdlIGRlZmF1bHQgdG8gcmVhZGluZyB0aGUgZmQKLSAJCSAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWQ1ZGVlcC9maWxlcy8wMDAxLUZpeC1saXRlcmFsLWFuZC1pZGVudGlmaWVyLXNwYWNpbmctYXMtZGljdGF0ZWQtYnktQy0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWQ1ZGVlcC9maWxlcy8wMDAxLUZpeC1saXRlcmFsLWFuZC1pZGVudGlmaWVyLXNwYWNpbmctYXMtZGljdGF0ZWQtYnktQy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk0NjBiMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL2ZpbGVzLzAwMDEtRml4LWxpdGVyYWwtYW5kLWlkZW50aWZpZXItc3BhY2luZy1hcy1kaWN0YXRlZC1ieS1DLS5wYXRjaApAQCAtMCwwICsxLDEyOCBAQAorRnJvbSA3ZDdiNjBlMzhjYTcwMTgxOWQ0ZDAwYjM4MTYxZmFkZGNlMDFlMmFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgNiBTZXAgMjAxOCAyMzoyMToyMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggbGl0ZXJhbCBhbmQgaWRlbnRpZmllciBzcGFjaW5nIGFzIGRpY3RhdGVkIGJ5IEMrKzExCisKK0ZpeGVzIGNsYW5nIGVycm9yIGxpa2UgYmVsb3cKKworZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIFstV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsXQorfCAgICAgICAgIHN0YXR1cygiICBLbm93biBmaWxlcyBub3QgZm91bmQ6ICUiUFJJdTY0LCB0aGlzLT5tYXRjaC51bnVzZWQpOworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2plc3Nlay9oYXNoZGVlcC9wdWxsLzM4NS9jb21taXRzLzE4YTZiNWQ1N2Y3YTY0OGQyYjdkY2M2ZTUwZmYwMGExZTRiMDVmY2NdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Rpc3BsYXkuY3BwICB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyBzcmMvZmlsZXMuY3BwICAgIHwgIDQgKystLQorIHNyYy9oYXNoLmNwcCAgICAgfCAgMiArLQorIHNyYy9oYXNobGlzdC5jcHAgfCAgNCArKy0tCisgc3JjL3htbC5oICAgICAgICB8ICAyICstCisgNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9kaXNwbGF5LmNwcCBiL3NyYy9kaXNwbGF5LmNwcAoraW5kZXggYjIzMzM1ZC4uMmVkZGMyMyAxMDA2NDQKKy0tLSBhL3NyYy9kaXNwbGF5LmNwcAorKysrIGIvc3JjL2Rpc3BsYXkuY3BwCitAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgZGlzcGxheTo6ZGlzcGxheV9yZWFsdGltZV9zdGF0cyhjb25zdCBmaWxlX2RhdGFfaGFzaGVyX3QgKmZkaHQsIGNvbnN0IGhhc2hfCisgCisgCXNzIDw8IG1iX3JlYWQgPDwgIk1CIG9mICIgPDwgZmRodC0+c3RhdF9tZWdzKCkgPDwgIk1CIGRvbmUsICI7CisgCWNoYXIgbXNnWzY0XTsKKy0Jc25wcmludGYobXNnLHNpemVvZihtc2cpLCIlMDIiUFJJdTY0IjolMDIiUFJJdTY0IjolMDIiUFJJdTY0IiBsZWZ0IiwgaG91ciwgbWluLCBzZWNvbmRzKTsKKysJc25wcmludGYobXNnLHNpemVvZihtc2cpLCIlMDIiIFBSSXU2NCAiOiUwMiIgUFJJdTY0ICI6JTAyIiBQUkl1NjQgIiBsZWZ0IiwgaG91ciwgbWluLCBzZWNvbmRzKTsKKyAJc3MgPDwgbXNnOworICAgICB9CisgICAgIHNzIDw8ICJcciI7CitAQCAtNDI0LDE0ICs0MjQsMTQgQEAgdm9pZCBkaXNwbGF5OjpkaXNwbGF5X2F1ZGl0X3Jlc3VsdHMoKQorICAgCisgICAgIGlmIChvcHRfdmVyYm9zZSkgICAgeworIAlpZihvcHRfdmVyYm9zZSA+PSBNT1JFX1ZFUkJPU0UpeworLQkgICAgc3RhdHVzKCIgICBJbnB1dCBmaWxlcyBleGFtaW5lZDogJSJQUkl1NjQsIHRoaXMtPm1hdGNoLnRvdGFsKTsKKy0JICAgIHN0YXR1cygiICBLbm93biBmaWxlcyBleHBlY3Rpbmc6ICUiUFJJdTY0LCB0aGlzLT5tYXRjaC5leHBlY3QpOworKwkgICAgc3RhdHVzKCIgICBJbnB1dCBmaWxlcyBleGFtaW5lZDogJSIgUFJJdTY0LCB0aGlzLT5tYXRjaC50b3RhbCk7CisrCSAgICBzdGF0dXMoIiAgS25vd24gZmlsZXMgZXhwZWN0aW5nOiAlIiBQUkl1NjQsIHRoaXMtPm1hdGNoLmV4cGVjdCk7CisgCX0KKy0Jc3RhdHVzKCIgICAgICAgICAgRmlsZXMgbWF0Y2hlZDogJSJQUkl1NjQsIHRoaXMtPm1hdGNoLmV4YWN0KTsKKy0Jc3RhdHVzKCJGaWxlcyBwYXJ0aWFsbHkgbWF0Y2hlZDogJSJQUkl1NjQsIHRoaXMtPm1hdGNoLnBhcnRpYWwpOworLQlzdGF0dXMoIiAgICAgICAgICAgIEZpbGVzIG1vdmVkOiAlIlBSSXU2NCwgdGhpcy0+bWF0Y2gubW92ZWQpOworLQlzdGF0dXMoIiAgICAgICAgTmV3IGZpbGVzIGZvdW5kOiAlIlBSSXU2NCwgdGhpcy0+bWF0Y2gudW5rbm93bik7CistCXN0YXR1cygiICBLbm93biBmaWxlcyBub3QgZm91bmQ6ICUiUFJJdTY0LCB0aGlzLT5tYXRjaC51bnVzZWQpOworKwlzdGF0dXMoIiAgICAgICAgICBGaWxlcyBtYXRjaGVkOiAlIiBQUkl1NjQsIHRoaXMtPm1hdGNoLmV4YWN0KTsKKysJc3RhdHVzKCJGaWxlcyBwYXJ0aWFsbHkgbWF0Y2hlZDogJSIgUFJJdTY0LCB0aGlzLT5tYXRjaC5wYXJ0aWFsKTsKKysJc3RhdHVzKCIgICAgICAgICAgICBGaWxlcyBtb3ZlZDogJSIgUFJJdTY0LCB0aGlzLT5tYXRjaC5tb3ZlZCk7CisrCXN0YXR1cygiICAgICAgICBOZXcgZmlsZXMgZm91bmQ6ICUiIFBSSXU2NCwgdGhpcy0+bWF0Y2gudW5rbm93bik7CisrCXN0YXR1cygiICBLbm93biBmaWxlcyBub3QgZm91bmQ6ICUiIFBSSXU2NCwgdGhpcy0+bWF0Y2gudW51c2VkKTsKKyAgICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvZmlsZXMuY3BwIGIvc3JjL2ZpbGVzLmNwcAoraW5kZXggODljNjk4NC4uM2RmZDM2MyAxMDA2NDQKKy0tLSBhL3NyYy9maWxlcy5jcHAKKysrKyBiL3NyYy9maWxlcy5jcHAKK0BAIC01MDksNyArNTA5LDcgQEAgaW50IHN0YXRlOjpwYXJzZV9lbmNhc2VfZmlsZShjb25zdCBjaGFyICpmbiwgRklMRSAqaGFuZGxlLHVpbnQzMl90IGV4cGVjdGVkX2hhc2gKKyAgICAgICAgIAorIAkgICAgLy8gVXNlcnMgZXhwZWN0IHRoZSBsaW5lIG51bWJlcnMgdG8gc3RhcnQgYXQgb25lLCBub3QgemVyby4KKyAJICAgIGlmICgoIW9jYi5vcHRfc2lsZW50KSB8fCAobW9kZV93YXJuX29ubHkpKSB7CistCQlvY2IuZXJyb3IoIiVzOiBObyBoYXNoIGZvdW5kIGluIGxpbmUgJSJQUkl1MzIsIGZuLCBjb3VudCArIDEpOworKwkJb2NiLmVycm9yKCIlczogTm8gaGFzaCBmb3VuZCBpbiBsaW5lICUiIFBSSXUzMiwgZm4sIGNvdW50ICsgMSk7CisgCQlvY2IuZXJyb3IoIiVzOiAlcyIsIGZuLCBzdHJlcnJvcihlcnJubykpOworIAkJcmV0dXJuIHN0YXR1c190OjpTVEFUVVNfVVNFUl9FUlJPUjsKKyAJICAgIH0KK0BAIC01NDIsNyArNTQyLDcgQEAgaW50IHN0YXRlOjpwYXJzZV9lbmNhc2VfZmlsZShjb25zdCBjaGFyICpmbiwgRklMRSAqaGFuZGxlLHVpbnQzMl90IGV4cGVjdGVkX2hhc2gKKyAgICAgfQorIAorICAgICBpZiAoZXhwZWN0ZWRfaGFzaGVzICE9IGNvdW50KXsKKy0Jb2NiLmVycm9yKCIlczogRXhwZWN0aW5nICUiUFJJdTMyIiBoYXNoZXMsIGZvdW5kICUiUFJJdTMyIlxuIiwgCisrCW9jYi5lcnJvcigiJXM6IEV4cGVjdGluZyAlIiBQUkl1MzIgIiBoYXNoZXMsIGZvdW5kICUiIFBSSXUzMiAiXG4iLCAKKyAJCQlmbiwgZXhwZWN0ZWRfaGFzaGVzLCBjb3VudCk7CisgICAgIH0KKyAgICAgcmV0dXJuIHN0YXR1c190OjpzdGF0dXNfb2s7CitkaWZmIC0tZ2l0IGEvc3JjL2hhc2guY3BwIGIvc3JjL2hhc2guY3BwCitpbmRleCA1MmY0MTliLi5hNGIzMTI4IDEwMDY0NAorLS0tIGEvc3JjL2hhc2guY3BwCisrKysgYi9zcmMvaGFzaC5jcHAKK0BAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBmaWxlX2RhdGFfaGFzaGVyX3Q6OmNvbXB1dGVfaGFzaCh1aW50NjRfdCByZXF1ZXN0X3N0YXJ0LHVpbnQ2NF90IHJlcXVlc3RfbGUKKyAgICAgCisgCS8vIElmIGFuIGVycm9yIG9jY3VyZWQsIGRpc3BsYXkgYSBtZXNzYWdlIGFuZCBzZWUgaWYgd2UgbmVlZCB0byBxdWl0LgorIAlpZiAoKGN1cnJlbnRfcmVhZF9ieXRlczwwKSB8fCAodGhpcy0+aGFuZGxlICYmIGZlcnJvcih0aGlzLT5oYW5kbGUpKSl7CistCSAgICBvY2ItPmVycm9yX2ZpbGVuYW1lKHRoaXMtPmZpbGVfbmFtZSwiZXJyb3IgYXQgb2Zmc2V0ICUiUFJJdTY0IjogJXMiLAorKwkgICAgb2NiLT5lcnJvcl9maWxlbmFtZSh0aGlzLT5maWxlX25hbWUsImVycm9yIGF0IG9mZnNldCAlIiBQUkl1NjQgIjogJXMiLAorIAkJCQlyZXF1ZXN0X3N0YXJ0LCBzdHJlcnJvcihlcnJubykpOworIAkgICAKKyAJICAgIGlmIChmaWxlX2ZhdGFsX2Vycm9yKCkpeworZGlmZiAtLWdpdCBhL3NyYy9oYXNobGlzdC5jcHAgYi9zcmMvaGFzaGxpc3QuY3BwCitpbmRleCBiNWIyNzVmLi5lYjBkNDVhIDEwMDY0NAorLS0tIGEvc3JjL2hhc2hsaXN0LmNwcAorKysrIGIvc3JjL2hhc2hsaXN0LmNwcAorQEAgLTM0Miw3ICszNDIsNyBAQCBoYXNobGlzdDo6bG9hZF9oYXNoX2ZpbGUoZGlzcGxheSAqb2NiLGNvbnN0IHN0ZDo6c3RyaW5nICZmbikKKyAgICAgZmlsZV9kYXRhX3QgKnQgPSBuZXcgKHN0ZDo6bm90aHJvdykgZmlsZV9kYXRhX3QoKTsKKyAgICAgaWYgKE5VTEwgPT0gdCkKKyAgICAgeworLSAgICAgIG9jYi0+ZmF0YWxfZXJyb3IoIiVzOiBPdXQgb2YgbWVtb3J5IGluIGxpbmUgJSJQUkl1NjQsCisrICAgICAgb2NiLT5mYXRhbF9lcnJvcigiJXM6IE91dCBvZiBtZW1vcnkgaW4gbGluZSAlIiBQUkl1NjQsCisgCQkgICAgICAgZm4uY19zdHIoKSwgbGluZV9udW1iZXIpOworICAgICB9CisgCitAQCAtMzkwLDcgKzM5MCw3IEBAIGhhc2hsaXN0Ojpsb2FkX2hhc2hfZmlsZShkaXNwbGF5ICpvY2IsY29uc3Qgc3RkOjpzdHJpbmcgJmZuKQorICAgICAgIGlmICggIWFsZ29yaXRobV90Ojp2YWxpZF9oYXNoKGhhc2hfY29sdW1uW2NvbHVtbl9udW1iZXJdLHdvcmQpKQorICAgICAgIHsKKyAJaWYgKG9jYikKKy0JICBvY2ItPmVycm9yKCIlczogSW52YWxpZCAlcyBoYXNoIGluIGxpbmUgJSJQUkl1NjQsCisrCSAgb2NiLT5lcnJvcigiJXM6IEludmFsaWQgJXMgaGFzaCBpbiBsaW5lICUiIFBSSXU2NCwKKyAJCSAgICAgZm4uY19zdHIoKSwKKyAJCSAgICAgaGFzaGVzW2hhc2hfY29sdW1uW2NvbHVtbl9udW1iZXJdXS5uYW1lLmNfc3RyKCksCisgCQkgICAgIGxpbmVfbnVtYmVyKTsKK2RpZmYgLS1naXQgYS9zcmMveG1sLmggYi9zcmMveG1sLmgKK2luZGV4IGJmZTBjOTQuLjAxN2RiYTcgMTAwNjQ0CistLS0gYS9zcmMveG1sLmgKKysrKyBiL3NyYy94bWwuaAorQEAgLTEwMCw3ICsxMDAsNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgeG1sb3V0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0YWcsY29uc3Qgc3RkOjpzdHJpbmcgJnZhbHVlKXsgeG1sb3V0KHRhZyx2YWx1ZSwiIix0cnVlKTsgfQorICAgICB2b2lkIHhtbG91dChjb25zdCBzdGQ6OnN0cmluZyAmdGFnLGNvbnN0IGludCB2YWx1ZSl7IHhtbHByaW50Zih0YWcsIiIsIiVkIix2YWx1ZSk7IH0KKyAgICAgdm9pZCB4bWxvdXRsKGNvbnN0IHN0ZDo6c3RyaW5nICZ0YWcsY29uc3QgbG9uZyB2YWx1ZSl7IHhtbHByaW50Zih0YWcsIiIsIiVsZCIsdmFsdWUpOyB9CistICAgIHZvaWQgeG1sb3V0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0YWcsY29uc3QgaW50NjRfdCB2YWx1ZSl7IHhtbHByaW50Zih0YWcsIiIsIiUiUFJJZDY0LHZhbHVlKTsgfQorKyAgICB2b2lkIHhtbG91dChjb25zdCBzdGQ6OnN0cmluZyAmdGFnLGNvbnN0IGludDY0X3QgdmFsdWUpeyB4bWxwcmludGYodGFnLCIiLCIlIiBQUklkNjQsdmFsdWUpOyB9CisgICAgIHZvaWQgeG1sb3V0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0YWcsY29uc3QgZG91YmxlIHZhbHVlKXsgeG1scHJpbnRmKHRhZywiIiwiJWYiLHZhbHVlKTsgfQorICAgICB2b2lkIHhtbG91dChjb25zdCBzdGQ6OnN0cmluZyAmdGFnLGNvbnN0IHN0cnVjdCB0aW1ldmFsICZ0cyl7CisgCXhtbHByaW50Zih0YWcsIiIsIiVkLiUwNmQiLChpbnQpdHMudHZfc2VjLCAoaW50KXRzLnR2X3VzZWMpOworLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21kNWRlZXAvZmlsZXMvd3JvbmctdmFyaWFibGUtZXhwYW5zaW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21kNWRlZXAvZmlsZXMvd3JvbmctdmFyaWFibGUtZXhwYW5zaW9uLnBhdGNoCmluZGV4IDNhNGM0ZjQuLjczYzZjYjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL2ZpbGVzL3dyb25nLXZhcmlhYmxlLWV4cGFuc2lvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbWQ1ZGVlcC9maWxlcy93cm9uZy12YXJpYWJsZS1leHBhbnNpb24ucGF0Y2gKQEAgLTEsNiArMSw4IEBACi0tLS0gYS9jb25maWd1cmUuYWMJMjAxNC0wOC0yMiAxMjoyMjo1NC4yOTA4ODQzNTEgKzAyMDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwkyMDE0LTA4LTIyIDEyOjIzOjE1LjgyMjMwNjI5NSArMDIwMAotQEAgLTQyLDE4ICs0Miw2IEBACitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC00MiwxOCArNDIsNiBAQCBjYXNlICRob3N0IGluCiAgICAgICA7OwkJIAkJICAgICAKICBlc2FjCiAgCkBAIC0xOSwyMSArMjEsMyBAQAogICMKICAjCiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotQEAgLTcxLDcgKzU5LDcgQEAKLSAKLSBpZiB0ZXN0ICRtaW5ndyA9ICJubyIgOyB0aGVuCi0gICAjIGFkZCB0aGUgd2FybmluZ3Mgd2UgZG9uJ3Qgd2FudCB0byBkbyBvbiBtaW5ndwotLSAgJFdBUk5JTkdTX1RPX1RFU1Q9IiRXQVJOSU5HU19UT19URVNUIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgIC1XZWZmYysrIgotKyAgV0FSTklOR1NfVE9fVEVTVD0iJFdBUk5JTkdTX1RPX1RFU1QgLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAgLVdlZmZjKysiCi0gZmkKLSAKLSBmb3Igb3B0aW9uIGluICRXQVJOSU5HU19UT19URVNUCi1AQCAtMTA1LDcgKzkzLDcgQEAKLSAKLSBpZiB0ZXN0ICRtaW5ndyA9ICJubyIgOyB0aGVuCi0gICAjIGFkZCB0aGUgd2FybmluZ3Mgd2UgZG9uJ3Qgd2FudCB0byBkbyBvbiBtaW5ndwotLSAgJFdBUk5JTkdTX1RPX1RFU1Q9IiRXQVJOSU5HU19UT19URVNUICAtV2VmZmMrKyIKLSsgIFdBUk5JTkdTX1RPX1RFU1Q9IiRXQVJOSU5HU19UT19URVNUICAtV2VmZmMrKyIKLSBmaQotIAotIGZvciBvcHRpb24gaW4gJFdBUk5JTkdTX1RPX1RFU1QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL21kNWRlZXBfNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21kNWRlZXAvbWQ1ZGVlcF80LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMzBhYmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21kNWRlZXAvbWQ1ZGVlcF80LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIm1kNWRlZXAgYW5kIGhhc2hkZWVwIHRvIGNvbXB1dGUgYW5kIGF1ZGl0IGhhc2hzZXRzIG9mIGFtb3VudHMgb2YgZmlsZXMuIgotREVTQ1JJUFRJT04gPSAibWQ1ZGVlcCBpcyBhIHNldCBvZiBwcm9ncmFtcyB0byBjb21wdXRlIE1ENSwgU0hBLTEsIFNIQS0yNTYsIFRpZ2VyLCBvciBXaGlybHBvb2wgbWVzc2FnZSBkaWdlc3RzIG9uIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgZmlsZXMuIFRoaXMgcGFja2FnZSBhbHNvIGluY2x1ZGVzIGhhc2hkZWVwIHdoaWNoIGlzIGFsc28gYWJsZSB0byBhdWRpdCBoYXNoc2V0cy4iCi1BVVRIT1IgPSAiSmVzc2UgS29ybmJsdW0sIFNpbXNvbiBMLiBHYXJmaW5rZWwiCi1IT01FUEFHRSA9ICJodHRwOi8vbWQ1ZGVlcC5zb3VyY2Vmb3JnZS5uZXQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTE5MGY2NjAxMDViOWE1NmNkYjI3MjMwOWJmZDU0OTEiCi0jIFJlbGVhc2UgNC40Ci1TUkNSRVYgPSAiY2QyZWQ3NDE2Njg1YTVlODNlYjEwYmI2NTlkNmU5YmVjMDEyNDRhZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2plc3Nlay9oYXNoZGVlcC5naXQgXAotICAgICAgICBmaWxlOi8vd3JvbmctdmFyaWFibGUtZXhwYW5zaW9uLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtRml4LWVycm9ycy1mb3VuZC1ieS1jbGFuZy5wYXRjaCBcCi0gICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL21kNWRlZXBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21kNWRlZXAvbWQ1ZGVlcF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjNjg2NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tZDVkZWVwL21kNWRlZXBfZ2l0LmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAibWQ1ZGVlcCBhbmQgaGFzaGRlZXAgdG8gY29tcHV0ZSBhbmQgYXVkaXQgaGFzaHNldHMgb2YgYW1vdW50cyBvZiBmaWxlcy4iCitERVNDUklQVElPTiA9ICJtZDVkZWVwIGlzIGEgc2V0IG9mIHByb2dyYW1zIHRvIGNvbXB1dGUgTUQ1LCBTSEEtMSwgU0hBLTI1NiwgVGlnZXIsIG9yIFdoaXJscG9vbCBtZXNzYWdlIGRpZ2VzdHMgb24gYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBmaWxlcy4gVGhpcyBwYWNrYWdlIGFsc28gaW5jbHVkZXMgaGFzaGRlZXAgd2hpY2ggaXMgYWxzbyBhYmxlIHRvIGF1ZGl0IGhhc2hzZXRzLiIKK0FVVEhPUiA9ICJKZXNzZSBLb3JuYmx1bSwgU2ltc29uIEwuIEdhcmZpbmtlbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tZDVkZWVwLnNvdXJjZWZvcmdlLm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MTkwZjY2MDEwNWI5YTU2Y2RiMjcyMzA5YmZkNTQ5MSIKKworUFYgPSAiNC40K2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiODc3NjEzNDkzZmY0NDgwNzg4OGNlMTkyODEyOTU3NGJlMzkzY2JiMCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2plc3Nlay9oYXNoZGVlcC5naXQgXAorICAgICAgICAgICBmaWxlOi8vd3JvbmctdmFyaWFibGUtZXhwYW5zaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpdGVyYWwtYW5kLWlkZW50aWZpZXItc3BhY2luZy1hcy1kaWN0YXRlZC1ieS1DLS5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3LzAwMDEtRml4LWZvcm1hdHRpbmctZm9yLW1vZGVybi1jLTExLWNvbXBpbGVycy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3LzAwMDEtRml4LWZvcm1hdHRpbmctZm9yLW1vZGVybi1jLTExLWNvbXBpbGVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjAwOTY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21tbC13aWRnZXQvZ3RrbWF0aHZpZXcvMDAwMS1GaXgtZm9ybWF0dGluZy1mb3ItbW9kZXJuLWMtMTEtY29tcGlsZXJzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gOTA0MTFhN2Y1ZTBlOTU4MmU3OWYwYThjY2MxZTJmMTU4NjE1ZTQ1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE5IE1heSAyMDE4IDIzOjE4OjExIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3JtYXR0aW5nIGZvciBtb2Rlcm4gYysrMTEgY29tcGlsZXJzCisKK0ZpeGVzCitlcnJvcjogaW52YWxpZCBzdWZmaXggb24gbGl0ZXJhbDsgQysrMTEgcmVxdWlyZXMgYSBzcGFjZSBiZXR3ZWVuIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIgWy1XcmVzZXJ2ZWQtdXNlci1kZWZpbmVkLWxpdGVyYWxdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2JhY2tlbmQvc3ZnL1NWR19SZW5kZXJpbmdDb250ZXh0LmNjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3ZnL1NWR19SZW5kZXJpbmdDb250ZXh0LmNjIGIvc3JjL2JhY2tlbmQvc3ZnL1NWR19SZW5kZXJpbmdDb250ZXh0LmNjCitpbmRleCA1NWQ2MDk3Li4wZDUwNzAyIDEwMDY0NAorLS0tIGEvc3JjL2JhY2tlbmQvc3ZnL1NWR19SZW5kZXJpbmdDb250ZXh0LmNjCisrKysgYi9zcmMvYmFja2VuZC9zdmcvU1ZHX1JlbmRlcmluZ0NvbnRleHQuY2MKK0BAIC02OCw3ICs2OCw3IEBAIHZvaWQKKyBTVkdfUmVuZGVyaW5nQ29udGV4dDo6ZG9jdW1lbnRTdGFydChjb25zdCBCb3VuZGluZ0JveCYgYmJveCkKKyB7CisgICBiZWdpbkRvY3VtZW50KGJib3gpOworLSAgbWV0YWRhdGEoIkNyZWF0ZWQgYnkgIlBBQ0tBR0UiIHZlcnNpb24gIlZFUlNJT04pOworKyAgbWV0YWRhdGEoIkNyZWF0ZWQgYnkgIiBQQUNLQUdFICIgdmVyc2lvbiAiIFZFUlNJT04pOworIH0KKyAKKyB2b2lkCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW1sLXdpZGdldC9ndGttYXRodmlld18wLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3XzAuOC4wLmJiCmluZGV4IGRmODJiZWYuLjllZTllMzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3XzAuOC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tbWwtd2lkZ2V0L2d0a21hdGh2aWV3XzAuOC4wLmJiCkBAIC0xMyw2ICsxMyw3IEBACiAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1jc3RkaW8tdG8tZ2V0LXByaW50Zi1kZWZpbml0aW9ucy5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWhlYWRlci1kZXRlY3Rpb24tb2YtaGFzaF9tYXAtaXMtYnJva2VuLS5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDMtZ2NjLTYuMC1idWlsZC1maXhlcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtRml4LWZvcm1hdHRpbmctZm9yLW1vZGVybi1jLTExLWNvbXBpbGVycy5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1jb21wYXJlLXRoZS1maXJzdC1jaGFyYWN0ZXItb2Ytc3RyaW5nLXRvLWJlLW51bGwtb3ItLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtY29tcGFyZS10aGUtZmlyc3QtY2hhcmFjdGVyLW9mLXN0cmluZy10by1iZS1udWxsLW9yLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBkNjQ2Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1jb21wYXJlLXRoZS1maXJzdC1jaGFyYWN0ZXItb2Ytc3RyaW5nLXRvLWJlLW51bGwtb3ItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBmMzZjOTQ3NmQyODE2ZTBkM2U2MWM5ZTEzYzIyZWQ3Mzg4M2NiNTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjQgQXByIDIwMTcgMTI6MTM6NDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29tcGFyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHN0cmluZyB0byBiZSBudWxsIG9yIG5vdAotCi1GaXhlcwotCi1lcnJvcjogSVNPIEMrKyBmb3JiaWRzIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCBpbnRlZ2VyIFstZnBlcm1pc3NpdmVdCi18ICAgICAgICAgIGlmICh2YWx1ZVswXSA9PSAnXDAnKQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0ganMvc3JjL3NoZWxsL2pzb3B0cGFyc2UuY3BwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvanMvc3JjL3NoZWxsL2pzb3B0cGFyc2UuY3BwIGIvanMvc3JjL3NoZWxsL2pzb3B0cGFyc2UuY3BwCi1pbmRleCBiNDlkMGE1Li42MTJhYTAwIDEwMDY0NAotLS0tIGEvanMvc3JjL3NoZWxsL2pzb3B0cGFyc2UuY3BwCi0rKysgYi9qcy9zcmMvc2hlbGwvanNvcHRwYXJzZS5jcHAKLUBAIC0yNDMsNyArMjQzLDcgQEAgT3B0aW9uUGFyc2VyOjpleHRyYWN0VmFsdWUoc2l6ZV90IGFyZ2MsIGNoYXIgKiphcmd2LCBzaXplX3QgKmksIGNoYXIgKip2YWx1ZSkKLSAgICAgY2hhciAqZXEgPSBzdHJjaHIoYXJndlsqaV0sICc9Jyk7Ci0gICAgIGlmIChlcSkgewotICAgICAgICAgKnZhbHVlID0gZXEgKyAxOwotLSAgICAgICAgaWYgKHZhbHVlWzBdID09ICdcMCcpCi0rICAgICAgICBpZiAodmFsdWVbMF1bMF0gPT0gJ1wwJykKLSAgICAgICAgICAgICByZXR1cm4gZXJyb3IoIkEgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIG9wdGlvbiAlLipzIiwgZXEgLSBhcmd2WyppXSwgYXJndlsqaV0pOwotICAgICAgICAgcmV0dXJuIE9rYXk7Ci0gICAgIH0KLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtZG8tbm90LWNyZWF0ZS1weXRob24tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzMTdiYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gNTAyOGQxY2Q2NjljMTc5ZWQ0OTA2MTMxNmQwNGM4ZTg4NjJhNWJkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgSnVsIDIwMTggMTU6MDQ6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIGRvIG5vdCBjcmVhdGUgcHl0aG9uIGVudmlyb25tZW50CisKK1VzZSBvZSdzIHB5dGhvbiBlbnZpcm9ubWVudCByYXRoZXIgdGhhbiBjcmVhdGUgb25lIG9mIGhvc3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZSB8IDE4IC0tLS0tLS0tLS0tLS0tLS0tLQorIGNvbmZpZ3VyZS5weSAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKystCisganMvc3JjL29sZC1jb25maWd1cmUgICAgICAgICAgICAgICB8ICA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKK2luZGV4IDIxMjNiZWIuLjZmZTY1OTEgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCitAQCAtMTc5LDI0ICsxNzksNiBAQCBkZWYgdmlydHVhbGVudl9weXRob24oZW52X3B5dGhvbiwgYnVpbGRfZW52LCBtb3pjb25maWcsIGhlbHApOgorICAgICBlbHNlOgorICAgICAgICAgcHl0aG9uID0gc3lzLmV4ZWN1dGFibGUKKyAKKy0gICAgaWYgbm90IG1hbmFnZXIudXBfdG9fZGF0ZShweXRob24pOgorLSAgICAgICAgbG9nLmluZm8oJ0NyZWF0aW5nIFB5dGhvbiBlbnZpcm9ubWVudCcpCistICAgICAgICBtYW5hZ2VyLmJ1aWxkKHB5dGhvbikKKy0KKy0gICAgcHl0aG9uID0gbm9ybXNlcChtYW5hZ2VyLnB5dGhvbl9wYXRoKQorLQorLSAgICBpZiBweXRob24gIT0gbm9ybXNlcChzeXMuZXhlY3V0YWJsZSk6CistICAgICAgICBsb2cuaW5mbygnUmVleGVjdXRpbmcgaW4gdGhlIHZpcnR1YWxlbnYnKQorLSAgICAgICAgaWYgZW52X3B5dGhvbjoKKy0gICAgICAgICAgICBkZWwgb3MuZW52aXJvblsnUFlUSE9OJ10KKy0gICAgICAgICMgT25lIHdvdWxkIHByZWZlciB0byB1c2Ugb3MuZXhlY2wsIGJ1dCB0aGF0J3MgY29tcGxldGVseSBib3JrZWQgb24KKy0gICAgICAgICMgV2luZG93cy4KKy0gICAgICAgIHN5cy5leGl0KHN1YnByb2Nlc3MuY2FsbChbcHl0aG9uXSArIHN5cy5hcmd2KSkKKy0KKy0gICAgIyBXZSBhcmUgbm93IGluIHRoZSB2aXJ0dWFsZW52CistICAgIGlmIG5vdCBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKCk6CistICAgICAgICBkaWUoJ0NvdWxkIG5vdCBkZXRlcm1pbmUgcHl0aG9uIHNpdGUgcGFja2FnZXMgZGlyZWN0b3J5JykKKy0KKyAgICAgcmV0dXJuIHB5dGhvbgorIAorIHNldF9jb25maWcoJ1BZVEhPTicsIHZpcnR1YWxlbnZfcHl0aG9uKQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5weSBiL2NvbmZpZ3VyZS5weQoraW5kZXggZjczOTJkMC4uNDUzMjNhNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5weQorKysrIGIvY29uZmlndXJlLnB5CitAQCAtMTIsNyArMTIsMTUgQEAgaW1wb3J0IHRleHR3cmFwCisgCisgCisgYmFzZV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKy1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGJhc2VfZGlyLCAncHl0aG9uJywgJ21vemJ1aWxkJykpCisrc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihiYXNlX2RpciwgJ2NvbmZpZycpKQorK2RlZiBnZXRfaW1tZWRpYXRlX3N1YmRpcmVjdG9yaWVzKGFfZGlyKToKKysgICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoYV9kaXIpCisrICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oYV9kaXIsIG5hbWUpKV0KKytmb3IgcyBpbiBbInB5dGhvbiIsICJ0ZXN0aW5nL21vemJhc2UiXToKKysgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgcykKKysgICAgZm9yIG1vZHVsZV9kaXIgaW4gZ2V0X2ltbWVkaWF0ZV9zdWJkaXJlY3RvcmllcyhzdWJfZGlyKToKKysgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3ViX2RpciwgbW9kdWxlX2RpcikpCisrCisgZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKKyBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0ICgKKyAgICAgaW5kZW50ZWRfcmVwciwKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZSBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitpbmRleCBlZTQ1MjdiLi43NWIwMGUxIDEwMDY0NAorLS0tIGEvanMvc3JjL29sZC1jb25maWd1cmUKKysrKyBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitAQCAtMTA1MTIsNyArMTA1MTIsNyBAQCBpZiB0ZXN0ICIkTU9aX0JVSUxEX0FQUCIgIT0ganMgLW8gLW4gIiRKU19TVEFOREFMT05FIjsgdGhlbgorICAgICA7OworICAgZXNhYworIAorLSAgZXZhbCAkZHVtcGVudiAkUFlUSE9OICRfdG9wc3JjZGlyL2J1aWxkL3N1YmNvbmZpZ3VyZS5weSAtLXByZXBhcmUgIiRzcmNkaXIiICIkbW96X2NvbmZpZ19kaXIiICIkX0NPTkZJR19TSEVMTCIgJGFjX2NvbmZpZ3VyZV9hcmdzIAorKyAgZXZhbCAkZHVtcGVudiBQWVRIT05QQVRIPSRfdG9wc3JjZGlyL3B5dGhvbi9tb3pidWlsZC8gJFBZVEhPTiAkX3RvcHNyY2Rpci9idWlsZC9zdWJjb25maWd1cmUucHkgLS1wcmVwYXJlICIkc3JjZGlyIiAiJG1vel9jb25maWdfZGlyIiAiJF9DT05GSUdfU0hFTEwiICRhY19jb25maWd1cmVfYXJncworIAorICAgZG9uZQorIAorQEAgLTEwOTMxLDcgKzEwOTMxLDcgQEAgaWYgdGVzdCAiJEpTX1NUQU5EQUxPTkUiOyB0aGVuCisgICAKKyBpZiB0ZXN0ICIkbm9fcmVjdXJzaW9uIiAhPSB5ZXM7IHRoZW4KKyAgIHRyYXAgJycgRVhJVAorLSAgaWYgISAkUFlUSE9OICRfdG9wc3JjZGlyL2J1aWxkL3N1YmNvbmZpZ3VyZS5weSAtLWxpc3Qgc3ViY29uZmlndXJlcyAtLXNraXAgc2tpcF9zdWJjb25maWd1cmVzOyB0aGVuCisrICBpZiAhIFBZVEhPTlBBVEg9JF90b3BzcmNkaXIvcHl0aG9uL21vemJ1aWxkLyAkUFlUSE9OICRfdG9wc3JjZGlyL2J1aWxkL3N1YmNvbmZpZ3VyZS5weSAtLWxpc3Qgc3ViY29uZmlndXJlcyAtLXNraXAgc2tpcF9zdWJjb25maWd1cmVzOyB0aGVuCisgICAgICAgZXhpdCAxCisgICBmaQorIGZpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzFhZjNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtZml4LWNvbXBpbGluZy1mYWlsdXJlLW9uLW1pcHM2NC1uMzItYnNwLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gNWFkNzAwYzkyMjI0MTkzYmZjNzg5ZjdkNTNhZjM4ZmM2ZjhiODkwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTc6MzE6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbXBpbGluZyBmYWlsdXJlIG9uIG1pcHM2NC1uMzIgYnNwCisKKy0gVHdlYWsgbWlwczY0LW4zMiB3aXRoIG1pcHMzMgorCistIFRoZSB0b29sY2hhaW4gb2YgbWlwczY0LW4zMiBzdXBwb3J0cyBib3RoIG9mIG1hY3JvCisgIGBfX21pcHM2NCcgYW5kIGBfX21pcHNfXycsIGJ1dCAzMmJpdCBpcyByZXF1aXJlZCBoZXJlLgorCistIE4zMiB1c2VzIDY0LWJpdCByZWdpc3RlcnMgYnV0IHJlc3RyaWN0cyBhZGRyZXNzZXMgdG8gMzIgYml0cy4KKyAgaHR0cHM6Ly93d3cubGludXgtbWlwcy5vcmcvcHViL2xpbnV4L21pcHMvZG9jL0FCSS9NSVBTLU4zMi1BQkktSGFuZGJvb2sucGRmCisgIFRhYmxlIDItMSBzcGVjaWZpZXMgdGhlIHVzZSBvZiByZWdpc3RlcnMgaW4gbjMyIGFuZCBuYXRpdmUgNjQtYml0IG1vZGUuCisgIEZyb20gdGhlIHRhYmxlLCBOMzIgYW5kIE42NCBoYXZlIHRoZSBzYW1lIHJlZ2lzdGVycworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBidWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlICAgICAgICAgICAgICAgIHwgNSArKysrLQorIGpzL3NyYy9qaXQvbWlwcy1zaGFyZWQvQXJjaGl0ZWN0dXJlLW1pcHMtc2hhcmVkLmggfCA0ICsrKy0KKyBweXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NvbnN0YW50cy5weSAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKK2luZGV4IDZmZTY1OTEuLmE3N2I0NmMgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCitAQCAtMzU3LDcgKzM1NywxMCBAQCBkZWYgc3BsaXRfdHJpcGxldCh0cmlwbGV0KToKKyAgICAgICAgIGNhbm9uaWNhbF9jcHUgPSAnbWlwczMyJworICAgICAgICAgZW5kaWFubmVzcyA9ICdsaXR0bGUnIGlmICdlbCcgaW4gY3B1IGVsc2UgJ2JpZycKKyAgICAgZWxpZiBjcHUgaW4gKCdtaXBzNjQnLCAnbWlwczY0ZWwnKToKKy0gICAgICAgIGNhbm9uaWNhbF9jcHUgPSAnbWlwczY0JworKyAgICAgICAgaWYgJ24zMicgaW4gdHJpcGxldDoKKysgICAgICAgICAgICBjYW5vbmljYWxfY3B1ID0gJ21pcHMzMicKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgY2Fub25pY2FsX2NwdSA9ICdtaXBzNjQnCisgICAgICAgICBlbmRpYW5uZXNzID0gJ2xpdHRsZScgaWYgJ2VsJyBpbiBjcHUgZWxzZSAnYmlnJworICAgICBlbGlmIGNwdS5zdGFydHN3aXRoKCdhYXJjaDY0Jyk6CisgICAgICAgICBjYW5vbmljYWxfY3B1ID0gJ2FhcmNoNjQnCitkaWZmIC0tZ2l0IGEvanMvc3JjL2ppdC9taXBzLXNoYXJlZC9BcmNoaXRlY3R1cmUtbWlwcy1zaGFyZWQuaCBiL2pzL3NyYy9qaXQvbWlwcy1zaGFyZWQvQXJjaGl0ZWN0dXJlLW1pcHMtc2hhcmVkLmgKK2luZGV4IDdhZmUzMDUuLmM2ZTI5ZGMgMTAwNjQ0CistLS0gYS9qcy9zcmMvaml0L21pcHMtc2hhcmVkL0FyY2hpdGVjdHVyZS1taXBzLXNoYXJlZC5oCisrKysgYi9qcy9zcmMvaml0L21pcHMtc2hhcmVkL0FyY2hpdGVjdHVyZS1taXBzLXNoYXJlZC5oCitAQCAtMjQsNiArMjQsOCBAQAorICNkZWZpbmUgVVNFU19PMzJfQUJJCisgI2VsaWYgKGRlZmluZWQoX01JUFNfU0lNKSAmJiAoX01JUFNfU0lNID09IF9BQkk2NCkpIHx8IGRlZmluZWQoSlNfU0lNVUxBVE9SX01JUFM2NCkKKyAjZGVmaW5lIFVTRVNfTjY0X0FCSQorKyNlbGlmIChkZWZpbmVkKF9NSVBTX1NJTSkgJiYgKF9NSVBTX1NJTSA9PSBfQUJJTjMyKSkKKysjZGVmaW5lIFVTRVNfTjMyX0FCSQorICNlbHNlCisgI2Vycm9yICJVbnN1cHBvcnRlZCBBQkkiCisgI2VuZGlmCitAQCAtOTEsNyArOTMsNyBAQCBjbGFzcyBSZWdpc3RlcnMKKyAgICAgICAgIHRhMSA9IHQ1LAorICAgICAgICAgdGEyID0gdDYsCisgICAgICAgICB0YTMgPSB0NywKKy0jZWxpZiBkZWZpbmVkKFVTRVNfTjY0X0FCSSkKKysjZWxpZiBkZWZpbmVkKFVTRVNfTjY0X0FCSSkgfHwgZGVmaW5lZChVU0VTX04zMl9BQkkpCisgICAgICAgICBhNCA9IHI4LAorICAgICAgICAgYTUgPSByOSwKKyAgICAgICAgIGE2ID0gcjEwLAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY29uc3RhbnRzLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9jb25zdGFudHMucHkKK2luZGV4IGRmYzdjZjguLjI3ZjgzYWIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NvbnN0YW50cy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9jb25zdGFudHMucHkKK0BAIC04Myw4ICs4Myw4IEBAIENQVV9wcmVwcm9jZXNzb3JfY2hlY2tzID0gT3JkZXJlZERpY3QoKAorICAgICAoJ2hwcGEnLCAnX19ocHBhX18nKSwKKyAgICAgKCdzcGFyYzY0JywgJ19fc3BhcmNfXyAmJiBfX2FyY2g2NF9fJyksCisgICAgICgnc3BhcmMnLCAnX19zcGFyY19fJyksCistICAgICgnbWlwczY0JywgJ19fbWlwczY0JyksCisgICAgICgnbWlwczMyJywgJ19fbWlwc19fJyksCisrICAgICgnbWlwczY0JywgJ19fbWlwczY0JyksCisgKSkKKyAKKyBhc3NlcnQgc29ydGVkKENQVV9wcmVwcm9jZXNzb3JfY2hlY2tzLmtleXMoKSkgPT0gc29ydGVkKENQVS5QT1NTSUJMRV9WQUxVRVMpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCmluZGV4IGJjMTQxZDkuLmMxMTFlYTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtanMucGMuaW4tZG8tbm90LWluY2x1ZGUtUmVxdWlyZWREZWZpbmVzLmgtZm9yLWRlcGVuZC5wYXRjaApAQCAtMywzMyArMywzMSBAQAogRGF0ZTogVGh1LCA2IEp1biAyMDEzIDE4OjM2OjAxICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGpzLnBjLmluOiBkbyBub3QgaW5jbHVkZSBSZXF1aXJlZERlZmluZXMuaCBmb3IgZGVwZW5kaW5nCiAgcGFja2FnZXMKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAogaW4gb3VyIGNyb3NzIGVudmlyb25tZW50IHRoZSB3b3VsZCBmYWlsIHdpdGg6CiAKIHwgY2MxOiBmYXRhbCBlcnJvcjogL3Vzci9pbmNsdWRlL2pzLTE3LjAvanMvUmVxdWlyZWREZWZpbmVzLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIAogYW5kIGN1cnJlbnRseSBpdCBvbmx5IGRlZmluZXMgX19TVERDX0xJTUlUX01BQ1JPUwotCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBqcy5wYy5pbiB8ICAgIDIgKy0KLSAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2pzLnBjLmluIGIvanMucGMuaW4KLWluZGV4IDEzZDc2MWQuLmE5NWE3YmQgMTAwNjQ0Ci0tLS0gYS9qcy5wYy5pbgotKysrIGIvanMucGMuaW4KK1JlYmFzZSB0byA1Mi44LjEKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGpzL3NyYy9qcy5wYy5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2pzL3NyYy9qcy5wYy5pbiBiL2pzL3NyYy9qcy5wYy5pbgoraW5kZXggMmVhZTM5My4uYzJkZWE2MiAxMDA2NDQKKy0tLSBhL2pzL3NyYy9qcy5wYy5pbgorKysrIGIvanMvc3JjL2pzLnBjLmluCiBAQCAtOCw0ICs4LDQgQEAgRGVzY3JpcHRpb246IFRoZSBNb3ppbGxhIGxpYnJhcnkgZm9yIEphdmFTY3JpcHQKICBWZXJzaW9uOiBATU9aSUxMQV9WRVJTSU9OQAotIFJlcXVpcmVzLnByaXZhdGU6IEBOU1BSX1BLR0NPTkZfQ0hFQ0tACi0gTGliczogLUwke2xpYmRpcn0gLWxATElCUkFSWV9OQU1FQAotLUNmbGFnczogLWluY2x1ZGUgJHtpbmNsdWRlZGlyfS9ATU9EVUxFQC9qcy9SZXF1aXJlZERlZmluZXMuaCAtSSR7aW5jbHVkZWRpcn0vQE1PRFVMRUAKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9ATU9EVUxFQAorIEBQS0dDT05GX1JFUVVJUkVTX1BSSVZBVEVACisgTGliczogLUwke2xpYmRpcn0gLWxASlNfTElCUkFSWV9OQU1FQAorLUNmbGFnczogLWluY2x1ZGUgJHtpbmNsdWRlZGlyfS9ASlNfTElCUkFSWV9OQU1FQC9qcy9SZXF1aXJlZERlZmluZXMuaCAtSSR7aW5jbHVkZWRpcn0vQEpTX0xJQlJBUllfTkFNRUAKKytDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9ASlNfTElCUkFSWV9OQU1FQAogLS0gCi0xLjcuNi41CisyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3N2Y3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDIwYjYzOWI3MzY0Zjk5NTNmZGFjYjA1OGY5YmE4MDBiY2JmMDI5YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyIEF1ZyAyMDE4IDA5OjQwOjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1vempzOiBmaXggY29yZWR1bXAgY2F1c2VkIGJ5IGdldGVudgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MDMxNV0KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1vemdsdWUvbWlzYy9UaW1lU3RhbXAuY3BwIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9tb3pnbHVlL21pc2MvVGltZVN0YW1wLmNwcCBiL21vemdsdWUvbWlzYy9UaW1lU3RhbXAuY3BwCitpbmRleCA5MzJiNzVjLi43YTRkNzFiIDEwMDY0NAorLS0tIGEvbW96Z2x1ZS9taXNjL1RpbWVTdGFtcC5jcHAKKysrKyBiL21vemdsdWUvbWlzYy9UaW1lU3RhbXAuY3BwCitAQCAtMTEsNiArMTEsNyBAQAorICNpbmNsdWRlICJtb3ppbGxhL1RpbWVTdGFtcC5oIgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisgCisgbmFtZXNwYWNlIG1vemlsbGEgeworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqczE3LjAuMC1maXgtdGhlLWNvbXBpbGUtYnVnLW9mLXBvd2VycGMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqczE3LjAuMC1maXgtdGhlLWNvbXBpbGUtYnVnLW9mLXBvd2VycGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzJkNGYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtbW96anMxNy4wLjAtZml4LXRoZS1jb21waWxlLWJ1Zy1vZi1wb3dlcnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBkYTM5MjlhOTZkOWM3NGUxMWJmMzdkMTI4ODkwZTE4ZmNiNzQ1MzY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogTW9uLCAyNiBKYW4gMjAxNSAwODo1MzoxOSArMDkwMAotU3ViamVjdDogW1BBVENIXSBtb3pqczE3LjAuMDogZml4IHRoZSBjb21waWxlIGJ1ZyBvZiBwb3dlcnBjCi0KLVRvIGZpeCB0aGUgYnVnIGFzIGZvbGxvd2luZwotCi1lcnJvcjogY2Fubm90IGNvbnZlcnQgJ19fdmFfbGlzdF90YWcqKicgdG8gJ19fdmFfbGlzdF90YWcgKCopWzFdJyBmb3IKLWFyZ3VtZW50ICc1JyB0byAnSlNCb29sIFRyeUFyZ3VtZW50Rm9ybWF0dGVyKEpTQ29udGV4dCosIGNvbnN0IGNoYXIqKiwKLUpTQm9vbCwganN2YWwqKiwgX192YV9saXN0X3RhZyAoKilbMV0pJwotCi1TaWduZWQtb2ZmLWJ5OiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci0tLS0KLSBqc2NwdWNmZy5oIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9qc2NwdWNmZy5oIGIvanNjcHVjZmcuaAotaW5kZXggZGZiMWMxNC4uODY4MzQ5MSAxMDA2NDQKLS0tLSBhL2pzY3B1Y2ZnLmgKLSsrKyBiL2pzY3B1Y2ZnLmgKLUBAIC00Nyw2ICs0NywxMiBAQAotICNlbGlmIGRlZmluZWQoSlNfSEFWRV9FTkRJQU5fSCkKLSAjIGluY2x1ZGUgPGVuZGlhbi5oPgotIAotKyNpZiBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcHBjX18pCi0rIyBkZWZpbmUgSEFWRV9WQV9MSVNUX0FTX0FSUkFZIDEKLSsjIGVuZGlmCi0rCi0rCi0gIyBpZiBkZWZpbmVkKF9fQllURV9PUkRFUikKLSAjICBpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCi0gIyAgIGRlZmluZSBJU19MSVRUTEVfRU5ESUFOIDEKLS0tIAotMS44LjQuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1yZWdlbmVyYXRlLWNvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLXJlZ2VuZXJhdGUtY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTQxM2VhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLXJlZ2VuZXJhdGUtY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIzOCArMCwwIEBACi1Gcm9tIDY0NDBiNDkwMWM2ZjRiY2M2OTY4NmZmMTA4MDZlMzExY2M1YTkyN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgotRGF0ZTogVHVlLCAzIE1hciAyMDE1IDE5OjEyOjE3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlZ2VuZXJhdGUgY29uZmlndXJlIHdpdGggYXV0b2NvbmYtMi4xMwotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtnZW5lcmF0ZWQgZmlsZV0KLQotLS0tCi0ganMvc3JjL2NvbmZpZ3VyZSB8IDgzOCArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM4OSBpbnNlcnRpb25zKCspLCA0NDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9qcy9zcmMvY29uZmlndXJlIGIvanMvc3JjL2NvbmZpZ3VyZQotaW5kZXggY2I2YjQxYi4uYjA1Mjk4ZiAxMDA3NTUKLS0tLSBhL2pzL3NyYy9jb25maWd1cmUKLSsrKyBiL2pzL3NyYy9jb25maWd1cmUKLUBAIC01NzU3LDYgKzU3NTcsMTAgQEAgYXJtKikKLSAgICAgQ1BVX0FSQ0g9YXJtCi0gICAgIDs7Ci0gCi0rYWFyY2g2NCopCi0rICAgIENQVV9BUkNIPWFhcmNoNjQKLSsgICAgOzsKLSsKLSBtaXBzfG1pcHNlbCkKLSAgICAgQ1BVX0FSQ0g9Im1pcHMiCi0gICAgIDs7Ci1AQCAtNTg5MywxNCArNTg5NywxNCBAQCBubykKLSAgICAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICBDRkxBR1M9IiRhcmNoX2ZsYWciCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA1ODk3ICJjb25maWd1cmUiCi0rI2xpbmUgNTkwMSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybiBzaXplb2YoX190aHVtYjJfXyk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTkwNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTkwODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgTU9aX1RIVU1CMj0xCi0gZWxzZQotQEAgLTU5NzIsMTYgKzU5NzYsMTYgQEAgaWYgdGVzdCAtbiAiJGFsbF9mbGFncyI7IHRoZW4KLSAgICAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICBDRkxBR1M9IiRhbGxfZmxhZ3MiCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIGNob3NlbiBjb21iaW5hdGlvbiBvZiBjb21waWxlciBmbGFncyAoJGFsbF9mbGFncykgd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo1OTc2OiBjaGVja2luZyB3aGV0aGVyIHRoZSBjaG9zZW4gY29tYmluYXRpb24gb2YgY29tcGlsZXIgZmxhZ3MgKCRhbGxfZmxhZ3MpIHdvcmtzIiA+JjUKLStlY2hvICJjb25maWd1cmU6NTk4MDogY2hlY2tpbmcgd2hldGhlciB0aGUgY2hvc2VuIGNvbWJpbmF0aW9uIG9mIGNvbXBpbGVyIGZsYWdzICgkYWxsX2ZsYWdzKSB3b3JrcyIgPiY1Ci0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA1OTc4ICJjb25maWd1cmUiCi0rI2xpbmUgNTk4MiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybiAwOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU5ODU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU5ODk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSBlbHNlCi1AQCAtNjAwNCwxOCArNjAwOCwxOCBAQCBmaQotIAotIGlmIHRlc3QgIiRDUFVfQVJDSCIgPSAiYXJtIjsgdGhlbgotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEFSTSBTSU1EIHN1cHBvcnQgaW4gY29tcGlsZXIiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo2MDA4OiBjaGVja2luZyBmb3IgQVJNIFNJTUQgc3VwcG9ydCBpbiBjb21waWxlciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjYwMTI6IGNoZWNraW5nIGZvciBBUk0gU0lNRCBzdXBwb3J0IGluIGNvbXBpbGVyIiA+JjUKLSAgICMgV2UgdHJ5IHRvIGxpbmsgc28gdGhhdCB0aGlzIGFsc28gZmFpbHMgd2hlbgotICAgIyBidWlsZGluZyB3aXRoIExUTy4KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2MDEyICJjb25maWd1cmUiCi0rI2xpbmUgNjAxNiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIGFzbSgidXFhZGQ4IHIxLCByMSwgcjIiKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDE5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYwMjM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgcmVzdWx0PSJ5ZXMiCi0gZWxzZQotQEAgLTYwMzgsMTggKzYwNDIsMTggQEAgRU9GCi0gICBmaQotIAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEFSTSBORU9OIHN1cHBvcnQgaW4gY29tcGlsZXIiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo2MDQyOiBjaGVja2luZyBmb3IgQVJNIE5FT04gc3VwcG9ydCBpbiBjb21waWxlciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjYwNDY6IGNoZWNraW5nIGZvciBBUk0gTkVPTiBzdXBwb3J0IGluIGNvbXBpbGVyIiA+JjUKLSAgICMgV2UgdHJ5IHRvIGxpbmsgc28gdGhhdCB0aGlzIGFsc28gZmFpbHMgd2hlbgotICAgIyBidWlsZGluZyB3aXRoIExUTy4KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2MDQ2ICJjb25maWd1cmUiCi0rI2xpbmUgNjA1MCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIGFzbSgiLmZwdSBuZW9uXG4gdmFkZC5pOCBkMCwgZDAsIGQwIik7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjA1MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDU3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIHJlc3VsdD0ieWVzIgotIGVsc2UKLUBAIC02MDk0LDcgKzYwOTgsNyBAQCBjb25maWd1cmVfc3RhdGljX2Fzc2VydF9tYWNyb3M9JwotICcKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyB0aGF0IHN0YXRpYyBhc3NlcnRpb24gbWFjcm9zIHVzZWQgaW4gYXV0b2NvbmYgdGVzdHMgd29yayIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjYwOTg6IGNoZWNraW5nIHRoYXQgc3RhdGljIGFzc2VydGlvbiBtYWNyb3MgdXNlZCBpbiBhdXRvY29uZiB0ZXN0cyB3b3JrIiA+JjUKLStlY2hvICJjb25maWd1cmU6NjEwMjogY2hlY2tpbmcgdGhhdCBzdGF0aWMgYXNzZXJ0aW9uIG1hY3JvcyB1c2VkIGluIGF1dG9jb25mIHRlc3RzIHdvcmsiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9zdGF0aWNfYXNzZXJ0aW9uX21hY3Jvc193b3JrJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTYxMDgsMTQgKzYxMTIsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0gICBhY19jdl9zdGF0aWNfYXNzZXJ0aW9uX21hY3Jvc193b3JrPSJ5ZXMiCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjExMiAiY29uZmlndXJlIgotKyNsaW5lIDYxMTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAkY29uZmlndXJlX3N0YXRpY19hc3NlcnRfbWFjcm9zCi0gaW50IG1haW4oKSB7Ci0gQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoMSkKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTE5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTIzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICA6Ci0gZWxzZQotICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLUBAIC02MTI1LDE0ICs2MTI5LDE0IEBAIGVsc2UKLSBmaQotIHJtIC1mIGNvbmZ0ZXN0KgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDYxMjkgImNvbmZpZ3VyZSIKLSsjbGluZSA2MTMzICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gJGNvbmZpZ3VyZV9zdGF0aWNfYXNzZXJ0X21hY3JvcwotIGludCBtYWluKCkgewotIENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUKDApCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjEzNjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjE0MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3Zfc3RhdGljX2Fzc2VydGlvbl9tYWNyb3Nfd29yaz0ibm8iCi0gZWxzZQotQEAgLTYxNDgsMTQgKzYxNTIsMTQgQEAgYWNfbGluaz0nJHtDWFgtZysrfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXMKLSBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY3h4X2Nyb3NzCi0gCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjE1MiAiY29uZmlndXJlIgotKyNsaW5lIDYxNTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAkY29uZmlndXJlX3N0YXRpY19hc3NlcnRfbWFjcm9zCi0gaW50IG1haW4oKSB7Ci0gQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoMSkKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTU5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTYzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICA6Ci0gZWxzZQotICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKLUBAIC02MTY1LDE0ICs2MTY5LDE0IEBAIGVsc2UKLSBmaQotIHJtIC1mIGNvbmZ0ZXN0KgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDYxNjkgImNvbmZpZ3VyZSIKLSsjbGluZSA2MTczICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gJGNvbmZpZ3VyZV9zdGF0aWNfYXNzZXJ0X21hY3JvcwotIGludCBtYWluKCkgewotIENPTkZJR1VSRV9TVEFUSUNfQVNTRVJUKDApCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjE3NjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjE4MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3Zfc3RhdGljX2Fzc2VydGlvbl9tYWNyb3Nfd29yaz0ibm8iCi0gZWxzZQotQEAgLTYzMTcsNyArNjMyMSw3IEBAIGlmIHRlc3QgIiRHTlVfQ0MiOyB0aGVuCi0gICAgIF9XQVJOSU5HU19DRkxBR1M9IiR7X1dBUk5JTkdTX0NGTEFHU30gLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgotICAgICAKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV2Vycm9yPXJldHVybi10eXBlIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NjMyMTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV2Vycm9yPXJldHVybi10eXBlIiA+JjUKLStlY2hvICJjb25maWd1cmU6NjMyNTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV2Vycm9yPXJldHVybi10eXBlIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY19oYXNfd2Vycm9yX3JldHVybl90eXBlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTYzMzMsMTQgKzYzMzcsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gICAgICAgICAgICAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZXJyb3I9cmV0dXJuLXR5cGUiCi0gICAgICAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDYzMzcgImNvbmZpZ3VyZSIKLSsjbGluZSA2MzQxICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gaW50IG1haW4oKSB7Ci0gcmV0dXJuKDApOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYzNDQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYzNDg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2NfaGFzX3dlcnJvcl9yZXR1cm5fdHlwZT0ieWVzIgotIGVsc2UKLUBAIC02MzY4LDcgKzYzNzIsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2NfaGFzX3dlcnJvcl9yZXR1cm5fdHlwZSIgMT4mNgotIAotICAgICAKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV3R5cGUtbGltaXRzIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NjM3MjogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV3R5cGUtbGltaXRzIiA+JjUKLStlY2hvICJjb25maWd1cmU6NjM3NjogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV3R5cGUtbGltaXRzIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY19oYXNfd3R5cGVfbGltaXRzJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTYzODQsMTQgKzYzODgsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gICAgICAgICAgICAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XdHlwZS1saW1pdHMiCi0gICAgICAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDYzODggImNvbmZpZ3VyZSIKLSsjbGluZSA2MzkyICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gaW50IG1haW4oKSB7Ci0gcmV0dXJuKDApOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYzOTU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYzOTk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2NfaGFzX3d0eXBlX2xpbWl0cz0ieWVzIgotIGVsc2UKLUBAIC02NDE5LDcgKzY0MjMsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2NfaGFzX3d0eXBlX2xpbWl0cyIgMT4mNgotIAotICAgICAKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV2VtcHR5LWJvZHkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo2NDIzOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIC1XZW1wdHktYm9keSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY0Mjc6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgLVdlbXB0eS1ib2R5IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY19oYXNfd2VtcHR5X2JvZHknK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtNjQzNSwxNCArNjQzOSwxNCBAQCBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAgICAgICAgICAgICBfU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdlbXB0eS1ib2R5IgotICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2NDM5ICJjb25maWd1cmUiCi0rI2xpbmUgNjQ0MyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybigwKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NDQ2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NDUwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jX2hhc193ZW1wdHlfYm9keT0ieWVzIgotIGVsc2UKLUBAIC02NDc2LDcgKzY0ODAsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2NfaGFzX3dlbXB0eV9ib2R5IiAxPiY2Ci0gICAgIF9XQVJOSU5HU19DRkxBR1M9IiR7X1dBUk5JTkdTX0NGTEFHU30gLVduby11bnVzZWQiCi0gICAgIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIC1Xbm8tb3Zlcmxlbmd0aC1zdHJpbmdzIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NjQ4MDogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY0ODQ6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgLVduby1vdmVybGVuZ3RoLXN0cmluZ3MiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jX2hhc193bm9fb3Zlcmxlbmd0aF9zdHJpbmdzJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTY0OTIsMTQgKzY0OTYsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gICAgICAgICAgICAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1Xb3Zlcmxlbmd0aC1zdHJpbmdzIgotICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2NDk2ICJjb25maWd1cmUiCi0rI2xpbmUgNjUwMCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybigwKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NTAzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NTA3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jX2hhc193bm9fb3Zlcmxlbmd0aF9zdHJpbmdzPSJ5ZXMiCi0gZWxzZQotQEAgLTY1ODAsNyArNjU4NCw3IEBAIGlmIHRlc3QgIiRHTlVfQ1hYIjsgdGhlbgotICAgICBfV0FSTklOR1NfQ1hYRkxBR1M9IiR7X1dBUk5JTkdTX0NYWEZMQUdTfSAtV2FsbCAtV3BvaW50ZXItYXJpdGggLVdvdmVybG9hZGVkLXZpcnR1YWwiCi0gICAgIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgc3VwcG9ydHMgLVdlcnJvcj1yZXR1cm4tdHlwZSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjY1ODQ6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV2Vycm9yPXJldHVybi10eXBlIiA+JjUKLStlY2hvICJjb25maWd1cmU6NjU4ODogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIHN1cHBvcnRzIC1XZXJyb3I9cmV0dXJuLXR5cGUiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jeHhfaGFzX3dlcnJvcl9yZXR1cm5fdHlwZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC02NTk2LDE0ICs2NjAwLDE0IEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAgICAgICAgICAgICBfU0FWRV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVdlcnJvciAtV2Vycm9yPXJldHVybi10eXBlIgotICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2NjAwICJjb25maWd1cmUiCi0rI2xpbmUgNjYwNCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybigwKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NjA3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NjExOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jeHhfaGFzX3dlcnJvcl9yZXR1cm5fdHlwZT0ieWVzIgotIGVsc2UKLUBAIC02NjMxLDcgKzY2MzUsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2N4eF9oYXNfd2Vycm9yX3JldHVybl90eXBlIiAxPiY2Ci0gCi0gICAgIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgc3VwcG9ydHMgLVd0eXBlLWxpbWl0cyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjY2MzU6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV3R5cGUtbGltaXRzIiA+JjUKLStlY2hvICJjb25maWd1cmU6NjYzOTogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIHN1cHBvcnRzIC1XdHlwZS1saW1pdHMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jeHhfaGFzX3d0eXBlX2xpbWl0cycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC02NjQ3LDE0ICs2NjUxLDE0IEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAgICAgICAgICAgICBfU0FWRV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVdlcnJvciAtV3R5cGUtbGltaXRzIgotICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA2NjUxICJjb25maWd1cmUiCi0rI2xpbmUgNjY1NSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybigwKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NjU4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NjYyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jeHhfaGFzX3d0eXBlX2xpbWl0cz0ieWVzIgotIGVsc2UKLUBAIC02NjgyLDcgKzY2ODYsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2N4eF9oYXNfd3R5cGVfbGltaXRzIiAxPiY2Ci0gCi0gICAgIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgc3VwcG9ydHMgLVdlbXB0eS1ib2R5IiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NjY4NjogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIHN1cHBvcnRzIC1XZW1wdHktYm9keSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY2OTA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV2VtcHR5LWJvZHkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jeHhfaGFzX3dlbXB0eV9ib2R5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTY2OTgsMTQgKzY3MDIsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2N4eF9jcm9zcwotICAgICAgICAgICAgIF9TQVZFX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCi0gICAgICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAtV2Vycm9yIC1XZW1wdHktYm9keSIKLSAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjcwMiAiY29uZmlndXJlIgotKyNsaW5lIDY3MDYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4oMCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjcwOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjcxMzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3h4X2hhc193ZW1wdHlfYm9keT0ieWVzIgotIGVsc2UKLUBAIC02NzQxLDcgKzY3NDUsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2N4eF9oYXNfd2VtcHR5X2JvZHkiIDE+JjYKLSAgICAgX1dBUk5JTkdTX0NYWEZMQUdTPSIke19XQVJOSU5HU19DWFhGTEFHU30gLVduby1jdG9yLWR0b3ItcHJpdmFjeSIKLSAgICAgCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjY3NDU6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY3NDk6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLW92ZXJsZW5ndGgtc3RyaW5ncyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N4eF9oYXNfd25vX292ZXJsZW5ndGhfc3RyaW5ncycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC02NzU3LDE0ICs2NzYxLDE0IEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAgICAgICAgICAgICBfU0FWRV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVdlcnJvciAtV292ZXJsZW5ndGgtc3RyaW5ncyIKLSAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjc2MSAiY29uZmlndXJlIgotKyNsaW5lIDY3NjUgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4oMCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njc2ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njc3MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3h4X2hhc193bm9fb3Zlcmxlbmd0aF9zdHJpbmdzPSJ5ZXMiCi0gZWxzZQotQEAgLTY3OTIsNyArNjc5Niw3IEBAIGVjaG8gIiRhY190IiIkYWNfY3h4X2hhc193bm9fb3Zlcmxlbmd0aF9zdHJpbmdzIiAxPiY2Ci0gCi0gICAgIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgc3VwcG9ydHMgLVduby1pbnZhbGlkLW9mZnNldG9mIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6Njc5NjogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIHN1cHBvcnRzIC1Xbm8taW52YWxpZC1vZmZzZXRvZiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY4MDA6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLWludmFsaWQtb2Zmc2V0b2YiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jeHhfaGFzX3dub19pbnZhbGlkX29mZnNldG9mJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTY4MDgsMTQgKzY4MTIsMTQgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2N4eF9jcm9zcwotICAgICAgICAgICAgIF9TQVZFX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCi0gICAgICAgICAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAtV2Vycm9yIC1XaW52YWxpZC1vZmZzZXRvZiIKLSAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjgxMiAiY29uZmlndXJlIgotKyNsaW5lIDY4MTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4oMCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjgxOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjgyMzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3h4X2hhc193bm9faW52YWxpZF9vZmZzZXRvZj0ieWVzIgotIGVsc2UKLUBAIC02ODQzLDcgKzY4NDcsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2N4eF9oYXNfd25vX2ludmFsaWRfb2Zmc2V0b2YiIDE+JjYKLSAKLSAgICAgCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLXZhcmlhZGljLW1hY3JvcyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjY4NDc6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLXZhcmlhZGljLW1hY3JvcyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY4NTE6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLXZhcmlhZGljLW1hY3JvcyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N4eF9oYXNfd25vX3ZhcmlhZGljX21hY3Jvcycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC02ODU5LDE0ICs2ODYzLDE0IEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAgICAgICAgICAgICBfU0FWRV9DWFhGTEFHUz0iJENYWEZMQUdTIgotICAgICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgLVdlcnJvciAtV3ZhcmlhZGljLW1hY3JvcyIKLSAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjg2MyAiY29uZmlndXJlIgotKyNsaW5lIDY4NjcgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4oMCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njg3MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njg3NDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3h4X2hhc193bm9fdmFyaWFkaWNfbWFjcm9zPSJ5ZXMiCi0gZWxzZQotQEAgLTY5MTgsNyArNjkyMiw3IEBAIGVjaG8gIiRhY190IiIkYWNfY3h4X2hhc193bm9fdmFyaWFkaWNfbWFjcm9zIiAxPiY2Ci0gICAgICAgICBfV0FSTklOR1NfQ1hYRkxBR1M9IiR7X1dBUk5JTkdTX0NYWEZMQUdTfSAtV25vLWMrKzB4LWV4dGVuc2lvbnMiCi0gICAgICAgICAKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIGNvbXBpbGVyIHN1cHBvcnRzIC1Xbm8tZXh0ZW5kZWQtb2Zmc2V0b2YiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo2OTIyOiBjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgY29tcGlsZXIgc3VwcG9ydHMgLVduby1leHRlbmRlZC1vZmZzZXRvZiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjY5MjY6IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBjb21waWxlciBzdXBwb3J0cyAtV25vLWV4dGVuZGVkLW9mZnNldG9mIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3h4X2hhc193bm9fZXh0ZW5kZWRfb2Zmc2V0b2YnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtNjkzNCwxNCArNjkzOCwxNCBAQCBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY3h4X2Nyb3NzCi0gICAgICAgICAgICAgX1NBVkVfQ1hYRkxBR1M9IiRDWFhGTEFHUyIKLSAgICAgICAgICAgICBDWFhGTEFHUz0iJENYWEZMQUdTIC1XZXJyb3IgLVdleHRlbmRlZC1vZmZzZXRvZiIKLSAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNjkzOCAiY29uZmlndXJlIgotKyNsaW5lIDY5NDIgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4oMCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njk0NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njk0OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3h4X2hhc193bm9fZXh0ZW5kZWRfb2Zmc2V0b2Y9InllcyIKLSBlbHNlCi1AQCAtNjk3OSw3ICs2OTgzLDcgQEAgTUtTSExJQl9VTkZPUkNFX0FMTD0KLSBpZiB0ZXN0ICIkQ09NUElMRV9FTlZJUk9OTUVOVCI7IHRoZW4KLSBpZiB0ZXN0ICIkR05VX0NDIjsgdGhlbgotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBsZCBoYXMgYXJjaGl2ZSBleHRyYWN0aW9uIGZsYWdzIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6Njk4MzogY2hlY2tpbmcgd2hldGhlciBsZCBoYXMgYXJjaGl2ZSBleHRyYWN0aW9uIGZsYWdzIiA+JjUKLStlY2hvICJjb25maWd1cmU6Njk4NzogY2hlY2tpbmcgd2hldGhlciBsZCBoYXMgYXJjaGl2ZSBleHRyYWN0aW9uIGZsYWdzIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9ta3NobGliX2ZvcmNlX2FuZF91bmZvcmNlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTY5OTYsMTQgKzcwMDAsMTQgQEAgTE9PUF9JTlBVVAotICAgICAgIExERkxBR1M9JGZvcmNlCi0gICAgICAgTElCUz0kdW5mb3JjZQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA3MDAwICJjb25maWd1cmUiCi0rI2xpbmUgNzAwNCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwMDc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzAxMTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9ta3NobGliX2ZvcmNlX2FuZF91bmZvcmNlPSRsaW5lOyBicmVhawotIGVsc2UKLUBAIC03MDM4LDE2ICs3MDQyLDE2IEBAIGFjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhCi0gY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIDY0LWJpdCBPUyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjcwNDI6IGNoZWNraW5nIGZvciA2NC1iaXQgT1MiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo3MDQ2OiBjaGVja2luZyBmb3IgNjQtYml0IE9TIiA+JjUKLSBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNzA0NCAiY29uZmlndXJlIgotKyNsaW5lIDcwNDggImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAkY29uZmlndXJlX3N0YXRpY19hc3NlcnRfbWFjcm9zCi0gaW50IG1haW4oKSB7Ci0gQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHZvaWQqKSA9PSA4KQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwNTE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwNTU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIHJlc3VsdD0ieWVzIgotIGVsc2UKLUBAIC03MTcwLDcgKzcxNzQsNyBAQCBjYXNlICIkaG9zdCIgaW4KLSBlc2FjCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFB5dGhvbiB2ZXJzaW9uID49ICRQWVRIT05fVkVSU0lPTiBidXQgbm90IDMueCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjcxNzQ6IGNoZWNraW5nIGZvciBQeXRob24gdmVyc2lvbiA+PSAkUFlUSE9OX1ZFUlNJT04gYnV0IG5vdCAzLngiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo3MTc4OiBjaGVja2luZyBmb3IgUHl0aG9uIHZlcnNpb24gPj0gJFBZVEhPTl9WRVJTSU9OIGJ1dCBub3QgMy54IiA+JjUKLSAKLSAkUFlUSE9OIC1jICJpbXBvcnQgc3lzOyBzeXMuZXhpdChzeXMudmVyc2lvbls6M10gPCBzeXMuYXJndlsxXSBvciBzeXMudmVyc2lvbls6Ml0gIT0gJzIuJykiICRQWVRIT05fVkVSU0lPTgotIF9weXRob25fcmVzPSQ/Ci1AQCAtNzE4MSw3ICs3MTg1LDcgQEAgZmkKLSBlY2hvICIkYWNfdCIieWVzIiAxPiY2Ci0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGN1c3RvbSA8c3RkaW50Lmg+IGltcGxlbWVudGF0aW9uIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NzE4NTogY2hlY2tpbmcgZm9yIGN1c3RvbSA8c3RkaW50Lmg+IGltcGxlbWVudGF0aW9uIiA+JjUKLStlY2hvICJjb25maWd1cmU6NzE4OTogY2hlY2tpbmcgZm9yIGN1c3RvbSA8c3RkaW50Lmg+IGltcGxlbWVudGF0aW9uIiA+JjUKLSBpZiB0ZXN0ICIkTU9aX0NVU1RPTV9TVERJTlRfSCI7IHRoZW4KLSAgIGNhdCA+PiBjb25mZGVmcy5weXRtcCA8PEVPRgotICAgICAgICAgKCcnJyBNT1pfQ1VTVE9NX1NURElOVF9IICcnJywgcicnJyAiJE1PWl9DVVNUT01fU1RESU5UX0giICcnJykKLUBAIC03MjQ5LDkgKzcyNTMsOSBAQCBhY19saW5rPScke0NYWC1nKyt9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDWFhGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlcwotIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAKLSAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgSUJNIFhMQy9DKysgY29tcGlsZXIgdmVyc2lvbiA+PSA5LjAuMC43IiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NzI1MzogY2hlY2tpbmcgZm9yIElCTSBYTEMvQysrIGNvbXBpbGVyIHZlcnNpb24gPj0gOS4wLjAuNyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjcyNTc6IGNoZWNraW5nIGZvciBJQk0gWExDL0MrKyBjb21waWxlciB2ZXJzaW9uID49IDkuMC4wLjciID4mNQotICAgICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA3MjU1ICJjb25maWd1cmUiCi0rI2xpbmUgNzI1OSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotQEAgLTcyNjAsNyArNzI2NCw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzI2NDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzI2ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgX0JBRF9DT01QSUxFUj0KLSBlbHNlCi1AQCAtNzI5OCwxMiArNzMwMiwxMiBAQCBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAgIGRvCi0gICAgICAgIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo3MzAyOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjczMDY6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDczMDcgImNvbmZpZ3VyZSIKLSsjbGluZSA3MzExICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2luY2x1ZGUgPCRhY19oZHI+Ci1AQCAtNzMxMSw3ICs3MzE1LDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzMxNTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzMxOTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi1AQCAtNzM5NCwxNyArNzM5OCwxNyBAQCBFT0YKLSAgICAgIyBidWlsZHMuCi0gICAgIF9TQVZFX0xERkxBR1M9JExERkxBR1MKLSAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAtZnJhbWV3b3JrIEV4Y2VwdGlvbkhhbmRsaW5nIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6NzM5ODogY2hlY2tpbmcgZm9yIC1mcmFtZXdvcmsgRXhjZXB0aW9uSGFuZGxpbmciID4mNQotK2VjaG8gImNvbmZpZ3VyZTo3NDAyOiBjaGVja2luZyBmb3IgLWZyYW1ld29yayBFeGNlcHRpb25IYW5kbGluZyIgPiY1Ci0gICAgIExERkxBR1M9IiRMREZMQUdTIC1mcmFtZXdvcmsgRXhjZXB0aW9uSGFuZGxpbmciCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA3NDAxICJjb25maWd1cmUiCi0rI2xpbmUgNzQwNSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotIHJldHVybiAwOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc0MDg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzQxMjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9oYXZlX2ZyYW1ld29ya19leGNlcHRpb25oYW5kbGluZz0ieWVzIgotIGVsc2UKLUBAIC03NDI2LDE4ICs3NDMwLDE4IEBAIHJtIC1mIGNvbmZ0ZXN0KgotICAgICAgICAgZWNobyAiU2tpcHBpbmcgLWRlYWRfc3RyaXAgYmVjYXVzZSBEVHJhY2UgaXMgZW5hYmxlZC4gU2VlIGJ1ZyA0MDMxMzIuIgotICAgICBlbHNlCi0gICAgICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAtZGVhZF9zdHJpcCBvcHRpb24gdG8gbGQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo3NDMwOiBjaGVja2luZyBmb3IgLWRlYWRfc3RyaXAgb3B0aW9uIHRvIGxkIiA+JjUKLStlY2hvICJjb25maWd1cmU6NzQzNDogY2hlY2tpbmcgZm9yIC1kZWFkX3N0cmlwIG9wdGlvbiB0byBsZCIgPiY1Ci0gICAgICAgICBfU0FWRV9MREZMQUdTPSRMREZMQUdTCi0gICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLWRlYWRfc3RyaXAiCi0gICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgNzQzNCAiY29uZmlndXJlIgotKyNsaW5lIDc0MzggImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSByZXR1cm4gMDsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NDQxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc0NDU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgX0hBVkVfREVBRF9TVFJJUD0xCi0gZWxzZQotQEAgLTc3ODMsMTIgKzc3ODcsMTIgQEAgRU9GCi0gICBkbwotICAgICAgICBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6Nzc4NzogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo3NzkxOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA3NzkyICJjb25maWd1cmUiCi0rI2xpbmUgNzc5NiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDwkYWNfaGRyPgotQEAgLTc3OTYsNyArNzgwMCw3IEBAIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc4MDA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc4MDQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTc5ODksMTkgKzc5OTMsMTkgQEAgRU9GCi0gICAgIF9ERUZJTkVTX0NYWEZMQUdTPSIkX0RFRklORVNfQ1hYRkxBR1MgLVV1bml4IC1VX191bml4IC1VX191bml4X18iCi0gCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfX2RlY2xzcGVjKGRsbGV4cG9ydCkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo3OTkzOiBjaGVja2luZyBmb3IgX19kZWNsc3BlYyhkbGxleHBvcnQpIiA+JjUKLStlY2hvICJjb25maWd1cmU6Nzk5NzogY2hlY2tpbmcgZm9yIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX29zMl9kZWNsc3BlYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA3OTk4ICJjb25maWd1cmUiCi0rI2xpbmUgODAwMiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSB2b2lkIGFjX29zMl9kZWNsc3BlYyh2b2lkKSB7fQotIGludCBtYWluKCkgewotIHJldHVybiAwOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgwMDU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgwMDk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX29zMl9kZWNsc3BlYz0ieWVzIgotIGVsc2UKLUBAIC04MDU0LDE0ICs4MDU4LDE0IEBAIEVPRgotICAgICAgICAgICAgX1NBVkVfTERGTEFHUz0kTERGTEFHUwotICAgICAgICAgICAgTERGTEFHUz0iLU0gL3Vzci9saWIvbGQvbWFwLm5vZXhzdGsgJExERkxBR1MiCi0gICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgODA1OCAiY29uZmlndXJlIgotKyNsaW5lIDgwNjIgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSBpbnQgbWFpbigpIHsKLSBwcmludGYoIkhlbGxvIFdvcmxkXG4iKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MDY1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgwNjk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgOgotIGVsc2UKLSAgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1AQCAtODA4OSw3ICs4MDkzLDcgQEAgcm0gLWYgY29uZnRlc3QqCi0gICAgICAgIENDX1ZFUlNJT049YCRDQyAtViAyPiYxIHwgZ3JlcCAnXmNjOicgMj4vZGV2L251bGwgfCAkQVdLIC1GXDogJ3sgcHJpbnQgJDIgfSdgCi0gICAgICAgIENYWF9WRVJTSU9OPWAkQ1hYIC1WIDI+JjEgfCBncmVwICdeQ0M6JyAyPi9kZXYvbnVsbCB8ICRBV0sgLUZcOiAneyBwcmludCAkMiB9J2AKLSAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFN1biBDKysgY29tcGlsZXIgdmVyc2lvbiA+PSA1LjkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo4MDkzOiBjaGVja2luZyBmb3IgU3VuIEMrKyBjb21waWxlciB2ZXJzaW9uID49IDUuOSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjgwOTc6IGNoZWNraW5nIGZvciBTdW4gQysrIGNvbXBpbGVyIHZlcnNpb24gPj0gNS45IiA+JjUKLSAgICAgICAgCi0gICAgICAgIGFjX2V4dD1DCi0gIyBDWFhGTEFHUyBpcyBub3QgaW4gYWNfY3BwIGJlY2F1c2UgLWcsIC1PLCBldGMuIGFyZSBub3QgdmFsaWQgY3BwIG9wdGlvbnMuCi1AQCAtODA5OSw3ICs4MTAzLDcgQEAgYWNfbGluaz0nJHtDWFgtZysrfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXMKLSBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY3h4X2Nyb3NzCi0gCi0gICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4MTAzICJjb25maWd1cmUiCi0rI2xpbmUgODEwNyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotQEAgLTgxMDgsNyArODExMiw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgI2VuZGlmCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODExMjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODExNjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgX0JBRF9DT01QSUxFUj0KLSBlbHNlCi1AQCAtODEyNSw3ICs4MTI5LDcgQEAgcm0gLWYgY29uZnRlc3QqCi0gICAgICAgICAgICBfcmVzPSJ5ZXMiCi0gICAgICAgIGZpCi0gICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4MTI5ICJjb25maWd1cmUiCi0rI2xpbmUgODEzMyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotQEAgLTgxMzQsNyArODEzOCw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgI2VuZGlmCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODEzODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODE0MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgX0FCT1ZFX1NTMTJVMT0KLSBlbHNlCi1AQCAtODUzNSw3ICs4NTM5LDcgQEAgZmkKLSAKLSBpZiB0ZXN0ICIkR05VX0NDIiAtYSAiJEdDQ19VU0VfR05VX0xEIiAtYSAteiAiJE1PWl9ESVNBQkxFX0lDRiI7IHRoZW4KLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgbGlua2VyIHN1cHBvcnRzIElkZW50aWNhbCBDb2RlIEZvbGRpbmciIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo4NTM5OiBjaGVja2luZyB3aGV0aGVyIHRoZSBsaW5rZXIgc3VwcG9ydHMgSWRlbnRpY2FsIENvZGUgRm9sZGluZyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjg1NDM6IGNoZWNraW5nIHdoZXRoZXIgdGhlIGxpbmtlciBzdXBwb3J0cyBJZGVudGljYWwgQ29kZSBGb2xkaW5nIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snTERfU1VQUE9SVFNfSUNGJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTg1NDQsNyArODU0OCw3IEBAIGVsc2UKLSAgICAgICAgICAgICAgICdpbnQgbWFpbigpIHtyZXR1cm4gZm9vKCkgLSBiYXIoKTt9JyA+IGNvbmZ0ZXN0LiR7YWNfZXh0fQotICAgICAgICAgIyBJZiB0aGUgbGlua2VyIHN1cHBvcnRzIElDRiwgZm9vIGFuZCBiYXIgc3ltYm9scyB3aWxsIGhhdmUKLSAgICAgICAgICMgdGhlIHNhbWUgYWRkcmVzcwotLSAgICAgICAgaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRMREZMQUdTIC1XbCwtLWljZj1zYWZlIC1mZnVuY3Rpb24tc2VjdGlvbnMgY29uZnRlc3QuJHthY19leHR9ICRMSUJTIDE+JjInOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjg1NDg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9ICYmCi0rICAgICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJExERkxBR1MgLVdsLC0taWNmPXNhZmUgLWZmdW5jdGlvbi1zZWN0aW9ucyBjb25mdGVzdC4ke2FjX2V4dH0gJExJQlMgMT4mMic7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODU1MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gJiYKLSAgICAgICAgICAgIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYKLSAgICAgICAgICAgIG9iamR1bXAgLXQgY29uZnRlc3Qke2FjX2V4ZWV4dH0gfCBhd2sgJ3thWyQ2XSA9ICQxfSBFTkQge2lmIChhWyJmb28iXSAmJiAoYVsiZm9vIl0gIT0gYVsiYmFyIl0pKSB7IGV4aXQgMSB9fSc7IHRoZW4KLSAgICAgICAgICAgICBMRF9TVVBQT1JUU19JQ0Y9eWVzCi1AQCAtODU1OSwxNCArODU2MywxNCBAQCBlY2hvICIkYWNfdCIiJExEX1NVUFBPUlRTX0lDRiIgMT4mNgotICAgICAgICAgX1NBVkVfTERGTEFHUz0iJExERkxBR1MgLVdsLC0taWNmPXNhZmUiCi0gICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLS1pY2Y9c2FmZSAtV2wsLS1wcmludC1pY2Ytc2VjdGlvbnMiCi0gICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgODU2MyAiY29uZmlndXJlIgotKyNsaW5lIDg1NjcgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NTcwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg1NzQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgTERfUFJJTlRfSUNGX1NFQ1RJT05TPS1XbCwtLXByaW50LWljZi1zZWN0aW9ucwotIGVsc2UKLUBAIC04NTg0LDE1ICs4NTg4LDE1IEBAIGZpCi0gCi0gaWYgdGVzdCAiJEdOVV9DQyIgLWEgIiRHQ0NfVVNFX0dOVV9MRCIgLWEgLW4gIiRNT1pfREVCVUdfRkxBR1MiOyB0aGVuCi0gICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciByZW1vdmluZyBkZWFkIHN5bWJvbHMgYnJlYWtzIGRlYnVnZ2luZyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjg1ODg6IGNoZWNraW5nIHdoZXRoZXIgcmVtb3ZpbmcgZGVhZCBzeW1ib2xzIGJyZWFrcyBkZWJ1Z2dpbmciID4mNQotK2VjaG8gImNvbmZpZ3VyZTo4NTkyOiBjaGVja2luZyB3aGV0aGVyIHJlbW92aW5nIGRlYWQgc3ltYm9scyBicmVha3MgZGVidWdnaW5nIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snR0NfU0VDVElPTlNfQlJFQUtTX0RFQlVHX1JBTkdFUycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGVjaG8gJ2ludCBmb28oKSB7cmV0dXJuIDQyO30nIFwKLSAgICAgICAgICAgICAgJ2ludCBiYXIoKSB7cmV0dXJuIDE7fScgXAotICAgICAgICAgICAgICAnaW50IG1haW4oKSB7cmV0dXJuIGZvbygpO30nID4gY29uZnRlc3QuJHthY19leHR9Ci0tICAgICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3QuJHthY19vYmpleHR9ICRDRkxBR1MgJE1PWl9ERUJVR19GTEFHUyAtYyBjb25mdGVzdC4ke2FjX2V4dH0gMT4mMic7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODU5NTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gJiYKLS0gICAgICAgICAgIHsgYWNfdHJ5PScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkTERGTEFHUyAkTU9aX0RFQlVHX0ZMQUdTIC1XbCwtLWdjLXNlY3Rpb25zIGNvbmZ0ZXN0LiR7YWNfb2JqZXh0fSAkTElCUyAxPiYyJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NTk2OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSAmJgotKyAgICAgICAgaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0LiR7YWNfb2JqZXh0fSAkQ0ZMQUdTICRNT1pfREVCVUdfRkxBR1MgLWMgY29uZnRlc3QuJHthY19leHR9IDE+JjInOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjg1OTk6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9ICYmCi0rICAgICAgICAgICB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJExERkxBR1MgJE1PWl9ERUJVR19GTEFHUyAtV2wsLS1nYy1zZWN0aW9ucyBjb25mdGVzdC4ke2FjX29iamV4dH0gJExJQlMgMT4mMic7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODYwMDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gJiYKLSAgICAgICAgICAgIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gLWEgLXMgY29uZnRlc3QuJHthY19vYmpleHR9OyB0aGVuCi0gICAgICAgICAgICAgaWYgdGVzdCAiYCRQWVRIT04gIiRfdG9wc3JjZGlyIi9idWlsZC9hdXRvY29uZi9jaGVja19kZWJ1Z19yYW5nZXMucHkgY29uZnRlc3QuJHthY19vYmpleHR9IGNvbmZ0ZXN0LiR7YWNfZXh0fWAiID0gXAotICAgICAgICAgICAgICAgICAgICAgImAkUFlUSE9OICIkX3RvcHNyY2RpciIvYnVpbGQvYXV0b2NvbmYvY2hlY2tfZGVidWdfcmFuZ2VzLnB5IGNvbmZ0ZXN0JHthY19leGVleHR9IGNvbmZ0ZXN0LiR7YWNfZXh0fWAiOyB0aGVuCi1AQCAtODYxNSwxMiArODYxOSwxMiBAQCBmaQotIAotIGlmIHRlc3QgLXogIiRTS0lQX0NPTVBJTEVSX0NIRUNLUyI7IHRoZW4KLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjg2MTk6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKLStlY2hvICJjb25maWd1cmU6ODYyMzogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfc3RkYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4NjI0ICJjb25maWd1cmUiCi0rI2xpbmUgODYyOCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1AQCAtODYyOCw3ICs4NjMyLDcgQEAgZWxzZQotICNpbmNsdWRlIDxmbG9hdC5oPgotIEVPRgotIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi0teyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NjMyOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQotK3sgKGV2YWwgZWNobyBjb25maWd1cmU6ODYzNjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KLSBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCi0gaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLUBAIC04NjQ1LDcgKzg2NDksNyBAQCBybSAtZiBjb25mdGVzdCoKLSBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgotICAgIyBTdW5PUyA0Lnggc3RyaW5nLmggZG9lcyBub3QgZGVjbGFyZSBtZW0qLCBjb250cmFyeSB0byBBTlNJLgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4NjQ5ICJjb25maWd1cmUiCi0rI2xpbmUgODY1MyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSBFT0YKLUBAIC04NjYzLDcgKzg2NjcsNyBAQCBmaQotIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCi0gICAjIElTQyAyLjAuMiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCi0gY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDg2NjcgImNvbmZpZ3VyZSIKLSsjbGluZSA4NjcxICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotIEVPRgotQEAgLTg2ODQsNyArODY4OCw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gICA6Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDg2ODggImNvbmZpZ3VyZSIKLSsjbGluZSA4NjkyICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2RlZmluZSBJU0xPV0VSKGMpICgnYScgPD0gKGMpICYmIChjKSA8PSAneicpCi1AQCAtODY5NSw3ICs4Njk5LDcgQEAgaWYgKFhPUiAoaXNsb3dlciAoaSksIElTTE9XRVIgKGkpKSB8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkgZXhpdCgyKTsKLSBleGl0ICgwKTsgfQotIAotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODY5OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODcwMzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAotIHRoZW4KLSAgIDoKLSBlbHNlCi1AQCAtODcyMiwxMiArODcyNiwxMiBAQCBFT0YKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0IiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6ODcyNjogY2hlY2tpbmcgZm9yIHdvcmtpbmcgY29uc3QiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo4NzMwOiBjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfY29uc3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgODczMSAiY29uZmlndXJlIgotKyNsaW5lIDg3MzUgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLUBAIC04Nzc2LDcgKzg3ODAsNyBAQCBjY3AgPSAoY2hhciBjb25zdCAqY29uc3QgKikgcDsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NzgwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4Nzg0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9jX2NvbnN0PXllcwotIGVsc2UKLUBAIC04ODAwLDEyICs4ODA0LDEyIEBAIEVPRgotIGZpCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1vZGVfdCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjg4MDQ6IGNoZWNraW5nIGZvciBtb2RlX3QiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo4ODA4OiBjaGVja2luZyBmb3IgbW9kZV90IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9tb2RlX3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgODgwOSAiY29uZmlndXJlIgotKyNsaW5lIDg4MTMgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2lmIFNURENfSEVBREVSUwotQEAgLTg4MzYsMTIgKzg4NDAsMTIgQEAgRU9GCi0gZmkKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb2ZmX3QiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo4ODQwOiBjaGVja2luZyBmb3Igb2ZmX3QiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo4ODQ0OiBjaGVja2luZyBmb3Igb2ZmX3QiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX29mZl90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDg4NDUgImNvbmZpZ3VyZSIKLSsjbGluZSA4ODQ5ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpZiBTVERDX0hFQURFUlMKLUBAIC04ODcyLDEyICs4ODc2LDEyIEBAIEVPRgotIGZpCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHBpZF90IiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6ODg3NjogY2hlY2tpbmcgZm9yIHBpZF90IiA+JjUKLStlY2hvICJjb25maWd1cmU6ODg4MDogY2hlY2tpbmcgZm9yIHBpZF90IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9waWRfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4ODgxICJjb25maWd1cmUiCi0rI2xpbmUgODg4NSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaWYgU1REQ19IRUFERVJTCi1AQCAtODkwOCwxMiArODkxMiwxMiBAQCBFT0YKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzaXplX3QiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo4OTEyOiBjaGVja2luZyBmb3Igc2l6ZV90IiA+JjUKLStlY2hvICJjb25maWd1cmU6ODkxNjogY2hlY2tpbmcgZm9yIHNpemVfdCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3R5cGVfc2l6ZV90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDg5MTcgImNvbmZpZ3VyZSIKLSsjbGluZSA4OTIxICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpZiBTVERDX0hFQURFUlMKLUBAIC04OTUxLDEyICs4OTU1LDEyIEBAIGFjX2xpbms9JyR7Q1hYLWcrK30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJENYWEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzCi0gY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2N4eF9jcm9zcwotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfX3N0ZGNhbGwiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo4OTU1OiBjaGVja2luZyBmb3IgX19zdGRjYWxsIiA+JjUKLStlY2hvICJjb25maWd1cmU6ODk1OTogY2hlY2tpbmcgZm9yIF9fc3RkY2FsbCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X19fc3RkY2FsbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA4OTYwICJjb25maWd1cmUiCi0rI2xpbmUgODk2NCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIHRlbXBsYXRlIDx0eXBlbmFtZSBNZXRob2Q+IHN0cnVjdCBmb287Ci0gICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgPD4gc3RydWN0IGZvbzx2b2lkICgqKSgpPiB7fTsKLUBAIC04OTY1LDcgKzg5NjksNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4OTY5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4OTczOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9fX3N0ZGNhbGw9dHJ1ZQotIGVsc2UKLUBAIC04OTk3LDEyICs5MDAxLDEyIEBAIGFjX2xpbms9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhCi0gY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNzaXplX3QiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5MDAxOiBjaGVja2luZyBmb3Igc3NpemVfdCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjkwMDU6IGNoZWNraW5nIGZvciBzc2l6ZV90IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV9zc2l6ZV90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDkwMDYgImNvbmZpZ3VyZSIKLSsjbGluZSA5MDEwICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotQEAgLTkwMTAsNyArOTAxNCw3IEBAIGludCBtYWluKCkgewotIHNzaXplX3QgZm9vID0gMDsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MDE0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MDE4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl90eXBlX3NzaXplX3Q9dHJ1ZQotIGVsc2UKLUBAIC05MDM1LDEyICs5MDM5LDEyIEBAIGVsc2UKLSAgIGVjaG8gIiRhY190IiJubyIgMT4mNgotIGZpCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN0X2Jsa3NpemUgaW4gc3RydWN0IHN0YXQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5MDM5OiBjaGVja2luZyBmb3Igc3RfYmxrc2l6ZSBpbiBzdHJ1Y3Qgc3RhdCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjkwNDM6IGNoZWNraW5nIGZvciBzdF9ibGtzaXplIGluIHN0cnVjdCBzdGF0IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zfc3RydWN0X3N0X2Jsa3NpemUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgOTA0NCAiY29uZmlndXJlIgotKyNsaW5lIDkwNDggImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1AQCAtOTA0OCw3ICs5MDUyLDcgQEAgaW50IG1haW4oKSB7Ci0gc3RydWN0IHN0YXQgczsgcy5zdF9ibGtzaXplOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjkwNTI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjkwNTY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2N2X3N0cnVjdF9zdF9ibGtzaXplPXllcwotIGVsc2UKLUBAIC05MDcyLDEyICs5MDc2LDEyIEBAIEVPRgotIGZpCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNpZ2luZm9fdCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjkwNzY6IGNoZWNraW5nIGZvciBzaWdpbmZvX3QiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5MDgwOiBjaGVja2luZyBmb3Igc2lnaW5mb190IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zfc2lnaW5mb190JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDkwODEgImNvbmZpZ3VyZSIKLSsjbGluZSA5MDg1ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2RlZmluZSBfUE9TSVhfQ19TT1VSQ0UgMTk5NTA2TAotICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzaWduYWwuaD4KLUBAIC05MDg1LDcgKzkwODksNyBAQCBpbnQgbWFpbigpIHsKLSBzaWdpbmZvX3QqIGluZm87Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTA4OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTA5MzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3Zfc2lnaW5mb190PXRydWUKLSBlbHNlCi1AQCAtOTExMSw3MiArOTExNSw4IEBAIGVsc2UKLSBmaQotIAotIAotLWVjaG8gJGFjX24gImNoZWNraW5nIGZvciB0aGUgc2l6ZSBvZiB2b2lkKiIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjkxMTY6IGNoZWNraW5nIGZvciB0aGUgc2l6ZSBvZiB2b2lkKiIgPiY1Ci0taWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J21vel9jdl9zaXplX29mX0pTX0JZVEVTX1BFUl9XT1JEJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLS0gIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0tZWxzZQotLSAgCi0tICBtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfV09SRD0KLS0gIGZvciBzaXplIGluIDQgODsgZG8KLS0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDkxMjQgImNvbmZpZ3VyZSIKLS0jaW5jbHVkZSAiY29uZmRlZnMuaCIKLS0KLS1pbnQgbWFpbigpIHsKLS0KLS0gICAgICAgICAgICAgICAgICAgICBpbnQgYVtzaXplb2YgKHZvaWQqKSA9PSAkc2l6ZSA/IDEgOiAtMV07Ci0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0tICAgICAgICAgICAgICAgICAgIAotLTsgcmV0dXJuIDA7IH0KLS1FT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjkxMzQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLS0gIHJtIC1yZiBjb25mdGVzdCoKLS0gIG1vel9jdl9zaXplX29mX0pTX0JZVEVTX1BFUl9XT1JEPSRzaXplOyBicmVhawotLWVsc2UKLS0gIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci0tICBjYXQgY29uZnRlc3QuJGFjX2V4dCA+JjUKLS1maQotLXJtIC1mIGNvbmZ0ZXN0KgotLSAgZG9uZQotLSAgaWYgdGVzdCAhICIkbW96X2N2X3NpemVfb2ZfSlNfQllURVNfUEVSX1dPUkQiOyB0aGVuCi0tICAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogTm8gc2l6ZSBmb3VuZCBmb3Igdm9pZCoiIDE+JjI7IGV4aXQgMTsgfQotLSAgZmkKLS0KLS1maQotLQotLWVjaG8gIiRhY190IiIkbW96X2N2X3NpemVfb2ZfSlNfQllURVNfUEVSX1dPUkQiIDE+JjYKLS1jYXQgPj4gY29uZmRlZnMucHl0bXAgPDxFT0YKLS0gICAgICAgICgnJycgSlNfQllURVNfUEVSX1dPUkQgJycnLCByJycnICRtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfV09SRCAnJycpCi0tRU9GCi0tY2F0ID4+IGNvbmZkZWZzLmggPDxFT0YKLS0jZGVmaW5lIEpTX0JZVEVTX1BFUl9XT1JEICRtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfV09SRAotLUVPRgotLQotLQotLWlmIHRlc3QgIiRtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfV09SRCIgLWVxICI0IjsgdGhlbgotLSAgY2F0ID4+IGNvbmZkZWZzLnB5dG1wIDw8XEVPRgotLSAgICAgICAgKCcnJyBKU19CSVRTX1BFUl9XT1JEX0xPRzIgJycnLCByJycnIDUgJycnKQotLUVPRgotLWNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgotLSNkZWZpbmUgSlNfQklUU19QRVJfV09SRF9MT0cyIDUKLS1FT0YKLS0KLS1lbGlmIHRlc3QgIiRtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfV09SRCIgLWVxICI4IjsgdGhlbgotLSAgY2F0ID4+IGNvbmZkZWZzLnB5dG1wIDw8XEVPRgotLSAgICAgICAgKCcnJyBKU19CSVRTX1BFUl9XT1JEX0xPRzIgJycnLCByJycnIDYgJycnKQotLUVPRgotLWNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgotLSNkZWZpbmUgSlNfQklUU19QRVJfV09SRF9MT0cyIDYKLS1FT0YKLS0KLS1lbHNlCi0tICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IFVuZXhwZWN0ZWQgSlNfQllURVNfUEVSX1dPUkQiIDE+JjI7IGV4aXQgMTsgfQotLWZpCi0tCi0tCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHRoZSBhbGlnbm1lbnQgb2Ygdm9pZCoiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5MTgwOiBjaGVja2luZyBmb3IgdGhlIGFsaWdubWVudCBvZiB2b2lkKiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjkxMjA6IGNoZWNraW5nIGZvciB0aGUgYWxpZ25tZW50IG9mIHZvaWQqIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snbW96X2N2X2FsaWduX29mX0pTX0FMSUdOX09GX1BPSU5URVInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtOTE4NCw3ICs5MTI0LDcgQEAgZWxzZQotICAgbW96X2N2X2FsaWduX29mX0pTX0FMSUdOX09GX1BPSU5URVI9Ci0gICBmb3IgYWxpZ24gaW4gMiA0IDggMTY7IGRvCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5MTg4ICJjb25maWd1cmUiCi0rI2xpbmUgOTEyOCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLUBAIC05MTk3LDcgKzkxMzcsNyBAQCBpbnQgbWFpbigpIHsKLSAgICAgICAgICAgICAgICAgICAgCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTIwMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTE0MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgbW96X2N2X2FsaWduX29mX0pTX0FMSUdOX09GX1BPSU5URVI9JGFsaWduOyBicmVhawotIGVsc2UKLUBAIC05MjIzLDcgKzkxNjMsNyBAQCBFT0YKLSAKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdGhlIHNpemUgb2YgZG91YmxlIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTIyNzogY2hlY2tpbmcgZm9yIHRoZSBzaXplIG9mIGRvdWJsZSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjkxNjc6IGNoZWNraW5nIGZvciB0aGUgc2l6ZSBvZiBkb3VibGUiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfRE9VQkxFJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTkyMzEsNyArOTE3MSw3IEBAIGVsc2UKLSAgIG1vel9jdl9zaXplX29mX0pTX0JZVEVTX1BFUl9ET1VCTEU9Ci0gICBmb3Igc2l6ZSBpbiA2IDggMTAgMTIgMTQ7IGRvCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5MjM1ICJjb25maWd1cmUiCi0rI2xpbmUgOTE3NSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIGludCBtYWluKCkgewotQEAgLTkyNDEsNyArOTE4MSw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgICAgICAgICAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MjQ1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MTg1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBtb3pfY3Zfc2l6ZV9vZl9KU19CWVRFU19QRVJfRE9VQkxFPSRzaXplOyBicmVhawotIGVsc2UKLUBAIC05MjcwLDEyICs5MjEwLDEyIEBAIEVPRgotICAgZG8KLSAgICAgICAgYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjkyNzQ6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTIxNDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgOTI3OSAiY29uZmlndXJlIgotKyNsaW5lIDkyMTkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8JGFjX2hkcj4KLUBAIC05MjgzLDcgKzkyMjMsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5Mjg3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MjI3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC05MzI2LDEyICs5MjY2LDEyIEBAIGZpCi0gICBkbwotICAgICAgICBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTMzMDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5MjcwOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5MzM1ICJjb25maWd1cmUiCi0rI2xpbmUgOTI3NSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8JGFjX2hkcj4KLUBAIC05MzM5LDcgKzkyNzksNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MzQzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MjgzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC05MzgyLDEyICs5MzIyLDEyIEBAIGZpCi0gICBkbwotICAgICAgICBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTM4NjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5MzI2OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5MzkxICJjb25maWd1cmUiCi0rI2xpbmUgOTMzMSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDwkYWNfaGRyPgotQEAgLTkzOTUsNyArOTMzNSw3IEBAIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjkzOTk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjkzMzk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTk0MzUsMTIgKzkzNzUsMTIgQEAgRU9GCi0gZmkKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdWludCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjk0Mzk6IGNoZWNraW5nIGZvciB1aW50IiA+JjUKLStlY2hvICJjb25maWd1cmU6OTM3OTogY2hlY2tpbmcgZm9yIHVpbnQiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl91aW50JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDk0NDQgImNvbmZpZ3VyZSIKLSsjbGluZSA5Mzg0ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotQEAgLTk0NDgsNyArOTM4OCw3IEBAIGludCBtYWluKCkgewotIHVpbnQgZm9vID0gMDsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NDUyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5MzkyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl91aW50PXRydWUKLSBlbHNlCi1AQCAtOTQ3MywxMiArOTQxMywxMiBAQCBlbHNlCi0gICBlY2hvICIkYWNfdCIibm8iIDE+JjYKLSBmaQotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB1aW50X3QiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5NDc3OiBjaGVja2luZyBmb3IgdWludF90IiA+JjUKLStlY2hvICJjb25maWd1cmU6OTQxNzogY2hlY2tpbmcgZm9yIHVpbnRfdCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3VpbnRfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5NDgyICJjb25maWd1cmUiCi0rI2xpbmUgOTQyMiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzdGRpby5oPgotICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC05NDg2LDcgKzk0MjYsNyBAQCBpbnQgbWFpbigpIHsKLSB1aW50X3QgZm9vID0gMDsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NDkwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NDMwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl91aW50X3Q9dHJ1ZQotIGVsc2UKLUBAIC05NTIwLDEyICs5NDYwLDEyIEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdW5hbWUuZG9tYWlubmFtZSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjk1MjQ6IGNoZWNraW5nIGZvciB1bmFtZS5kb21haW5uYW1lIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTQ2NDogY2hlY2tpbmcgZm9yIHVuYW1lLmRvbWFpbm5hbWUiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oYXZlX3VuYW1lX2RvbWFpbm5hbWVfZmllbGQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgOTUyOSAiY29uZmlndXJlIgotKyNsaW5lIDk0NjkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSBpbnQgbWFpbigpIHsKLUBAIC05NTMzLDcgKzk0NzMsNyBAQCBpbnQgbWFpbigpIHsKLSAgICAgICAgICAgICAodm9pZCl1bmFtZShyZXMpOyAgaWYgKHJlcyAhPSAwKSB7IGRvbWFpbiA9IHJlcy0+ZG9tYWlubmFtZTsgfSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NTM3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NDc3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9oYXZlX3VuYW1lX2RvbWFpbm5hbWVfZmllbGQ9dHJ1ZQotIGVsc2UKLUBAIC05NTYwLDEyICs5NTAwLDEyIEBAIGVsc2UKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB1bmFtZS5fX2RvbWFpbm5hbWUiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5NTY0OiBjaGVja2luZyBmb3IgdW5hbWUuX19kb21haW5uYW1lIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTUwNDogY2hlY2tpbmcgZm9yIHVuYW1lLl9fZG9tYWlubmFtZSIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hhdmVfdW5hbWVfdXNfZG9tYWlubmFtZV9maWVsZCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5NTY5ICJjb25maWd1cmUiCi0rI2xpbmUgOTUwOSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotIGludCBtYWluKCkgewotQEAgLTk1NzMsNyArOTUxMyw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgICh2b2lkKXVuYW1lKHJlcyk7ICBpZiAocmVzICE9IDApIHsgZG9tYWluID0gcmVzLT5fX2RvbWFpbm5hbWU7IH0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTU3NzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTUxNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfaGF2ZV91bmFtZV91c19kb21haW5uYW1lX2ZpZWxkPXRydWUKLSBlbHNlCi1AQCAtOTYwOSw3ICs5NTQ5LDcgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0gaWYgdGVzdCAiJEdOVV9DQyI7IHRoZW4KLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB2aXNpYmlsaXR5KGhpZGRlbikgYXR0cmlidXRlIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTYxMzogY2hlY2tpbmcgZm9yIHZpc2liaWxpdHkoaGlkZGVuKSBhdHRyaWJ1dGUiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5NTUzOiBjaGVja2luZyBmb3IgdmlzaWJpbGl0eShoaWRkZW4pIGF0dHJpYnV0ZSIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Zpc2liaWxpdHlfaGlkZGVuJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTk2MzcsNyArOTU3Nyw3IEBAIEVPRgotIAotIAotICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdmlzaWJpbGl0eShkZWZhdWx0KSBhdHRyaWJ1dGUiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5NjQxOiBjaGVja2luZyBmb3IgdmlzaWJpbGl0eShkZWZhdWx0KSBhdHRyaWJ1dGUiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5NTgxOiBjaGVja2luZyBmb3IgdmlzaWJpbGl0eShkZWZhdWx0KSBhdHRyaWJ1dGUiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl92aXNpYmlsaXR5X2RlZmF1bHQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtOTY2NSw3ICs5NjA1LDcgQEAgRU9GCi0gCi0gCi0gICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHZpc2liaWxpdHkgcHJhZ21hIHN1cHBvcnQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5NjY5OiBjaGVja2luZyBmb3IgdmlzaWJpbGl0eSBwcmFnbWEgc3VwcG9ydCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjk2MDk6IGNoZWNraW5nIGZvciB2aXNpYmlsaXR5IHByYWdtYSBzdXBwb3J0IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdmlzaWJpbGl0eV9wcmFnbWEnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtOTY5MCw3ICs5NjMwLDcgQEAgZmkKLSBlY2hvICIkYWNfdCIiJGFjX2N2X3Zpc2liaWxpdHlfcHJhZ21hIiAxPiY2Ci0gICAgICAgaWYgdGVzdCAiJGFjX2N2X3Zpc2liaWxpdHlfcHJhZ21hIiA9ICJ5ZXMiOyB0aGVuCi0gICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBGb3IgZ2NjIHZpc2liaWxpdHkgYnVnIHdpdGggY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyAoR0NDIGJ1ZyAyNjkwNSkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5Njk0OiBjaGVja2luZyBGb3IgZ2NjIHZpc2liaWxpdHkgYnVnIHdpdGggY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyAoR0NDIGJ1ZyAyNjkwNSkiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5NjM0OiBjaGVja2luZyBGb3IgZ2NjIHZpc2liaWxpdHkgYnVnIHdpdGggY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyAoR0NDIGJ1ZyAyNjkwNSkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oYXZlX3Zpc2liaWxpdHlfY2xhc3NfYnVnJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTk3MTgsNyArOTY1OCw3IEBAIGZpCi0gZWNobyAiJGFjX3QiIiRhY19jdl9oYXZlX3Zpc2liaWxpdHlfY2xhc3NfYnVnIiAxPiY2Ci0gCi0gICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBGb3IgeDg2XzY0IGdjYyB2aXNpYmlsaXR5IGJ1ZyB3aXRoIGJ1aWx0aW5zIChHQ0MgYnVnIDIwMjk3KSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjk3MjI6IGNoZWNraW5nIEZvciB4ODZfNjQgZ2NjIHZpc2liaWxpdHkgYnVnIHdpdGggYnVpbHRpbnMgKEdDQyBidWcgMjAyOTcpIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTY2MjogY2hlY2tpbmcgRm9yIHg4Nl82NCBnY2MgdmlzaWJpbGl0eSBidWcgd2l0aCBidWlsdGlucyAoR0NDIGJ1ZyAyMDI5NykiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oYXZlX3Zpc2liaWxpdHlfYnVpbHRpbl9idWcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtOTc3MCw3ICs5NzEwLDcgQEAgZmkgICAgICAgICAjIFN1biBTdHVkaW8gb24gU29sYXJpcwotIGlmIHRlc3QgIiRHTlVfQ0MiOyB0aGVuCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdjYyBQUjQ5OTExIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTc3NDogY2hlY2tpbmcgZm9yIGdjYyBQUjQ5OTExIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTcxNDogY2hlY2tpbmcgZm9yIGdjYyBQUjQ5OTExIiA+JjUKLSBhY19oYXZlX2djY19wcjQ5OTExPSJubyIKLSAKLSBhY19leHQ9QwotQEAgLTk3ODcsNyArOTcyNyw3IEBAIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCi0gICB0cnVlCi0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDk3OTEgImNvbmZpZ3VyZSIKLSsjbGluZSA5NzMxICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gZXh0ZXJuICJDIiB2b2lkIGFib3J0KHZvaWQpOwotQEAgLTk4MjgsNyArOTc2OCw3IEBAIGludCBtYWluKHZvaWQpIHsKLSB9Ci0gCi0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5ODMyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5NzcyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0gdGhlbgotICAgdHJ1ZQotIGVsc2UKLUBAIC05ODY1LDEyICs5ODA1LDEyIEBAIGZvciBhY19oZHIgaW4gZGlyZW50Lmggc3lzL25kaXIuaCBzeXMvZGlyLmggbmRpci5oCi0gZG8KLSBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciB0aGF0IGRlZmluZXMgRElSIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6OTg2OTogY2hlY2tpbmcgZm9yICRhY19oZHIgdGhhdCBkZWZpbmVzIERJUiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjk4MDk6IGNoZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfZGlyZW50XyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDk4NzQgImNvbmZpZ3VyZSIKLSsjbGluZSA5ODE0ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDwkYWNfaGRyPgotQEAgLTk4NzgsNyArOTgxOCw3IEBAIGludCBtYWluKCkgewotIERJUiAqZGlycCA9IDA7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTg4MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTgyMjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTk5MDYsNyArOTg0Niw3IEBAIGRvbmUKLSAjIFR3byB2ZXJzaW9ucyBvZiBvcGVuZGlyIGV0IGFsLiBhcmUgaW4gLWxkaXIgYW5kIC1seCBvbiBTQ08gWGVuaXguCi0gaWYgdGVzdCAkYWNfaGVhZGVyX2RpcmVudCA9IGRpcmVudC5oOyB0aGVuCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWxkaXIiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5OTEwOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbGRpciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjk4NTA6IGNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1sZGlyIiA+JjUKLSBhY19saWJfdmFyPWBlY2hvIGRpcidfJ29wZW5kaXIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotQEAgLTk5MTQsNyArOTg1NCw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWxkaXIgICRMSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSA5OTE4ICJjb25maWd1cmUiCi0rI2xpbmUgOTg1OCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0gLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotQEAgLTk5MjUsNyArOTg2NSw3IEBAIGludCBtYWluKCkgewotIG9wZW5kaXIoKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjk5Mjk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTg2OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgotIGVsc2UKLUBAIC05OTQ3LDcgKzk4ODcsNyBAQCBmaQotIAotIGVsc2UKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZTo5OTUxOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiID4mNQotK2VjaG8gImNvbmZpZ3VyZTo5ODkxOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiID4mNQotIGFjX2xpYl92YXI9YGVjaG8geCdfJ29wZW5kaXIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotQEAgLTk5NTUsNyArOTg5NSw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWx4ICAkTElCUyIKLSBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgOTk1OSAiY29uZmlndXJlIgotKyNsaW5lIDk4OTkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLUBAIC05OTY2LDcgKzk5MDYsNyBAQCBpbnQgbWFpbigpIHsKLSBvcGVuZGlyKCkKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo5OTcwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjk5MTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKLSBlbHNlCi1AQCAtMTAwMDAsMTIgKzk5NDAsMTIgQEAgZXNhYwotICAgZG8KLSAgICAgICAgYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwMDA0OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjk5NDQ6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEwMDA5ICJjb25maWd1cmUiCi0rI2xpbmUgOTk0OSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDwkYWNfaGRyPgotQEAgLTEwMDEzLDcgKzk5NTMsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDAxNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6OTk1NzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi1AQCAtMTAwNDgsMTIgKzk5ODgsMTIgQEAgRU9GCi0gICBkbwotICAgICAgICBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTAwNTI6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLStlY2hvICJjb25maWd1cmU6OTk5MjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTAwNTcgImNvbmZpZ3VyZSIKLSsjbGluZSA5OTk3ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2luY2x1ZGUgPCRhY19oZHI+Ci1AQCAtMTAwNjEsNyArMTAwMDEsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDA2NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAwMDU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEwMDk1LDEyICsxMDAzNSwxMiBAQCBFT0YKLSAgIGRvCi0gICAgICAgIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMDA5OTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDAzOTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTAxMDQgImNvbmZpZ3VyZSIKLSsjbGluZSAxMDA0NCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDwkYWNfaGRyPgotQEAgLTEwMTA4LDcgKzEwMDQ4LDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAxMTI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwMDUyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC0xMDE0MSwxMiArMTAwODEsMTIgQEAgRU9GCi0gICBkbwotICAgICAgICBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTAxNDU6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTAwODU6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEwMTUwICJjb25maWd1cmUiCi0rI2xpbmUgMTAwOTAgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8JGFjX2hkcj4KLUBAIC0xMDE1NCw3ICsxMDA5NCw3IEBAIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwMTU4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDA5ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi1AQCAtMTAxODgsMTIgKzEwMTI4LDEyIEBAIEVPRgotICAgZG8KLSAgICAgICAgYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwMTkyOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEwMTMyOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDE5NyAiY29uZmlndXJlIgotKyNsaW5lIDEwMTM3ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2luY2x1ZGUgPCRhY19oZHI+Ci1AQCAtMTAyMDEsNyArMTAxNDEsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDIwNTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAxNDU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEwMjQxLDEyICsxMDE4MSwxMiBAQCBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY3h4X2Nyb3NzCi0gTkVXX0g9bmV3LmgKLSAgICBhY19zYWZlPWBlY2hvICJuZXciIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG5ldyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwMjQ1OiBjaGVja2luZyBmb3IgbmV3IiA+JjUKLStlY2hvICJjb25maWd1cmU6MTAxODU6IGNoZWNraW5nIGZvciBuZXciID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTAyNTAgImNvbmZpZ3VyZSIKLSsjbGluZSAxMDE5MCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDxuZXc+Ci1AQCAtMTAyNTQsNyArMTAxOTQsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDI1ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAxOTg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEwMjk4LDEyICsxMDIzOCwxMiBAQCBmaQotIGlmIHRlc3QgIngkZW5hYmxlX2R0cmFjZSIgPSAieHllcyI7IHRoZW4KLSAgICAgIGFjX3NhZmU9YGVjaG8gInN5cy9zZHQuaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3lzL3NkdC5oIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTAzMDI6IGNoZWNraW5nIGZvciBzeXMvc2R0LmgiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDI0MjogY2hlY2tpbmcgZm9yIHN5cy9zZHQuaCIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDMwNyAiY29uZmlndXJlIgotKyNsaW5lIDEwMjQ3ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2luY2x1ZGUgPHN5cy9zZHQuaD4KLUBAIC0xMDMxMSw3ICsxMDI1MSw3IEBAIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwMzE1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDI1NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfaGVhZGVyXyRhY19zYWZlPXllcyIKLSBlbHNlCi1AQCAtMTAzNTMsMTIgKzEwMjkzLDEyIEBAIGNhc2UgJHRhcmdldCBpbgotICAgZG8KLSAgICAgICAgYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCi0gICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwMzU3OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEwMjk3OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1Ci0gICBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDM2MiAiY29uZmlndXJlIgotKyNsaW5lIDEwMzAyICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2luY2x1ZGUgPCRhY19oZHI+Ci1AQCAtMTAzNjYsNyArMTAzMDYsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMDM3MDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTAzMTA6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEwNDE4LDEyICsxMDM1OCwxMiBAQCBDRkxBR1M9IiRDRkxBR1MgJExJTlVYX0hFQURFUlNfSU5DTFVERVMiCi0gCi0gICAgYWNfc2FmZT1gZWNobyAibGludXgvcGVyZl9ldmVudC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaW51eC9wZXJmX2V2ZW50LmgiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMDQyMjogY2hlY2tpbmcgZm9yIGxpbnV4L3BlcmZfZXZlbnQuaCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEwMzYyOiBjaGVja2luZyBmb3IgbGludXgvcGVyZl9ldmVudC5oIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEwNDI3ICJjb25maWd1cmUiCi0rI2xpbmUgMTAzNjcgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8bGludXgvcGVyZl9ldmVudC5oPgotQEAgLTEwNDMxLDcgKzEwMzcxLDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA0MzU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwMzc1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC0xMDQ0NiwxOSArMTAzODYsMTkgQEAgZmkKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJGFjX2N2X2hlYWRlcl8nJGFjX3NhZmVgXCIgPSB5ZXMiOyB0aGVuCi0gICAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHBlcmZfZXZlbnRfb3BlbiBzeXN0ZW0gY2FsbCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwNDUwOiBjaGVja2luZyBmb3IgcGVyZl9ldmVudF9vcGVuIHN5c3RlbSBjYWxsIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTAzOTA6IGNoZWNraW5nIGZvciBwZXJmX2V2ZW50X29wZW4gc3lzdGVtIGNhbGwiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wZXJmX2V2ZW50X29wZW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTA0NTUgImNvbmZpZ3VyZSIKLSsjbGluZSAxMDM5NSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0gaW50IG1haW4oKSB7Ci0gcmV0dXJuIHNpemVvZihfX05SX3BlcmZfZXZlbnRfb3Blbik7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA0NjI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNDAyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9wZXJmX2V2ZW50X29wZW49eWVzCi0gZWxzZQotQEAgLTEwNDk0LDcgKzEwNDM0LDcgQEAgY2FzZSAkdGFyZ2V0IGluCi0gCTs7Ci0gKikKLSAJZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWVfciBpbiAtbGNfciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwNDk4OiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZV9yIGluIC1sY19yIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTA0Mzg6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lX3IgaW4gLWxjX3IiID4mNQotIGFjX2xpYl92YXI9YGVjaG8gY19yJ18nZ2V0aG9zdGJ5bmFtZV9yIHwgc2VkICd5JS4vKy0lX19wXyUnYAotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLUBAIC0xMDUwMiw3ICsxMDQ0Miw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWxjX3IgICRMSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDUwNiAiY29uZmlndXJlIgotKyNsaW5lIDEwNDQ2ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTA1MTMsNyArMTA0NTMsNyBAQCBpbnQgbWFpbigpIHsKLSBnZXRob3N0YnluYW1lX3IoKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTE3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNDU3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCi0gZWxzZQotQEAgLTEwNTU0LDE0ICsxMDQ5NCwxNCBAQCBjYXNlICR0YXJnZXQgaW4KLSAqKQotICAgICAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGRsb3BlbiIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwNTU4OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGRsb3BlbiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEwNDk4OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGRsb3BlbiIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3NlYXJjaF9kbG9wZW4nK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBhY19mdW5jX3NlYXJjaF9zYXZlX0xJQlM9IiRMSUJTIgotIGFjX2N2X3NlYXJjaF9kbG9wZW49Im5vIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDU2NSAiY29uZmlndXJlIgotKyNsaW5lIDEwNTA1ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTA1NzIsNyArMTA1MTIsNyBAQCBpbnQgbWFpbigpIHsKLSBkbG9wZW4oKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTc2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTE2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2N2X3NlYXJjaF9kbG9wZW49Im5vbmUgcmVxdWlyZWQiCi0gZWxzZQotQEAgLTEwNTgzLDcgKzEwNTIzLDcgQEAgcm0gLWYgY29uZnRlc3QqCi0gdGVzdCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iID0gIm5vIiAmJiBmb3IgaSBpbiBkbDsgZG8KLSBMSUJTPSItbCRpICAkYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDU4NyAiY29uZmlndXJlIgotKyNsaW5lIDEwNTI3ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTA1OTQsNyArMTA1MzQsNyBAQCBpbnQgbWFpbigpIHsKLSBkbG9wZW4oKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTk4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTM4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2N2X3NlYXJjaF9kbG9wZW49Ii1sJGkiCi0gYnJlYWsKLUBAIC0xMDYxMiwxMiArMTA1NTIsMTIgQEAgaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF9kbG9wZW4iICE9ICJubyI7IHRoZW4KLSAgIHRlc3QgIiRhY19jdl9zZWFyY2hfZGxvcGVuIiA9ICJub25lIHJlcXVpcmVkIiB8fCBMSUJTPSIkYWNfY3Zfc2VhcmNoX2Rsb3BlbiAkTElCUyIKLSAgICAgIGFjX3NhZmU9YGVjaG8gImRsZmNuLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGRsZmNuLmgiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMDYxNjogY2hlY2tpbmcgZm9yIGRsZmNuLmgiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDU1NjogY2hlY2tpbmcgZm9yIGRsZmNuLmgiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTA2MjEgImNvbmZpZ3VyZSIKLSsjbGluZSAxMDU2MSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDxkbGZjbi5oPgotQEAgLTEwNjI1LDcgKzEwNTY1LDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA2Mjk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNTY5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC0xMDY2MiwxMiArMTA2MDIsMTIgQEAgQ0ZMQUdTPSIkQ0ZMQUdTIC1EX0dOVV9TT1VSQ0UiCi0gZm9yIGFjX2Z1bmMgaW4gZGxhZGRyCi0gZG8KLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMDY2NjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTA2MDY6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTA2NzEgImNvbmZpZ3VyZSIKLSsjbGluZSAxMDYxMSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCi1AQCAtMTA2OTAsNyArMTA2MzAsNyBAQCAkYWNfZnVuYygpOwotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNjk0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNjM0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgotIGVsc2UKLUBAIC0xMDcyNCw3ICsxMDY2NCw3IEBAIGlmIHRlc3QgISAiJEdOVV9DWFgiOyB0aGVuCi0gICAgIGNhc2UgJHRhcmdldCBpbgotICAgICAqLWFpeCopCi0gCWVjaG8gJGFjX24gImNoZWNraW5nIGZvciBkZW1hbmdsZSBpbiAtbENfciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwNzI4OiBjaGVja2luZyBmb3IgZGVtYW5nbGUgaW4gLWxDX3IiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDY2ODogY2hlY2tpbmcgZm9yIGRlbWFuZ2xlIGluIC1sQ19yIiA+JjUKLSBhY19saWJfdmFyPWBlY2hvIENfcidfJ2RlbWFuZ2xlIHwgc2VkICd5JS4vKy0lX19wXyUnYAotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLUBAIC0xMDczMiw3ICsxMDY3Miw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWxDX3IgICRMSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDczNiAiY29uZmlndXJlIgotKyNsaW5lIDEwNjc2ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTA3NDMsNyArMTA2ODMsNyBAQCBpbnQgbWFpbigpIHsKLSBkZW1hbmdsZSgpCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA3NDc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTA2ODc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKLSBlbHNlCi1AQCAtMTA3NzYsNyArMTA3MTYsNyBAQCBmaQotIAk7OwotICAgICAgKikKLSAJZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGRlbWFuZ2xlIGluIC1sQyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwNzgwOiBjaGVja2luZyBmb3IgZGVtYW5nbGUgaW4gLWxDIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTA3MjA6IGNoZWNraW5nIGZvciBkZW1hbmdsZSBpbiAtbEMiID4mNQotIGFjX2xpYl92YXI9YGVjaG8gQydfJ2RlbWFuZ2xlIHwgc2VkICd5JS4vKy0lX19wXyUnYAotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLUBAIC0xMDc4NCw3ICsxMDcyNCw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWxDICAkTElCUyIKLSBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTA3ODggImNvbmZpZ3VyZSIKLSsjbGluZSAxMDcyOCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCi0gLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgotQEAgLTEwNzk1LDcgKzEwNzM1LDcgQEAgaW50IG1haW4oKSB7Ci0gZGVtYW5nbGUoKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNzk5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNzM5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCi0gZWxzZQotQEAgLTEwODM0LDcgKzEwNzc0LDcgQEAgY2FzZSAkdGFyZ2V0IGluCi0gICAgIDs7Ci0gKikKLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNvY2tldCBpbiAtbHNvY2tldCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwODM4OiBjaGVja2luZyBmb3Igc29ja2V0IGluIC1sc29ja2V0IiA+JjUKLStlY2hvICJjb25maWd1cmU6MTA3Nzg6IGNoZWNraW5nIGZvciBzb2NrZXQgaW4gLWxzb2NrZXQiID4mNQotIGFjX2xpYl92YXI9YGVjaG8gc29ja2V0J18nc29ja2V0IHwgc2VkICd5JS4vKy0lX19wXyUnYAotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLUBAIC0xMDg0Miw3ICsxMDc4Miw3IEBAIGVsc2UKLSAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gTElCUz0iLWxzb2NrZXQgICRMSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMDg0NiAiY29uZmlndXJlIgotKyNsaW5lIDEwNzg2ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTA4NTMsNyArMTA3OTMsNyBAQCBpbnQgbWFpbigpIHsKLSBzb2NrZXQoKQotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwODU3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEwNzk3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCi0gZWxzZQotQEAgLTEwODkyLDcgKzEwODMyLDcgQEAgZGFyd2luKikKLSAqKQotICAgICAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkcyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEwODk2OiBjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkcyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEwODM2OiBjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkcyIgPiY1Ci0gZWNobyAiCi0gICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0xMDkxNSw3ICsxMDg1NSw3IEBAIGVjaG8gIgotICAgICAgICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gICAgICAgICAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxwdGhyZWFkIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTA5MTk6IGNoZWNraW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiAtbHB0aHJlYWQiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDg1OTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1scHRocmVhZCIgPiY1Ci0gZWNobyAiCi0gICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0xMDkzOCw3ICsxMDg3OCw3IEBAIGVjaG8gIgotICAgICAgICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gICAgICAgICAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxjX3IiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMDk0MjogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1sY19yIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTA4ODI6IGNoZWNraW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiAtbGNfciIgPiY1Ci0gZWNobyAiCi0gICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0xMDk2MSw3ICsxMDkwMSw3IEBAIGVjaG8gIgotICAgICAgICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2Ci0gICAgICAgICAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcHRocmVhZF9jcmVhdGUgaW4gLWxjIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTA5NjU6IGNoZWNraW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiAtbGMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDkwNTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIC1sYyIgPiY1Ci0gZWNobyAiCi0gICAgICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0xMTAyMCw3ICsxMDk2MCw3IEBAIHRoZW4KLSAJCQkJcm0gLWYgY29uZnRlc3QqCi0gCWFjX2N2X2hhdmVfZGFzaF9wdGhyZWFkPW5vCi0gCWVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtcHRocmVhZCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExMDI0OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLXB0aHJlYWQiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDk2NDogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1wdGhyZWFkIiA+JjUKLSAJZWNobyAnaW50IG1haW4oKSB7IHJldHVybiAwOyB9JyB8IGNhdCA+IGNvbmZ0ZXN0LmMKLSAJJHtDQy1jY30gLXB0aHJlYWQgLW8gY29uZnRlc3QgY29uZnRlc3QuYyA+IGNvbmZ0ZXN0Lm91dCAyPiYxCi0gCWlmIHRlc3QgJD8gLWVxIDA7IHRoZW4KLUBAIC0xMTA0Myw3ICsxMDk4Myw3IEBAIGVjaG8gImNvbmZpZ3VyZToxMTAyNDogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1wdGhyZWFkIiA+JjUKLSAJCQkgICAgYWNfY3ZfaGF2ZV9kYXNoX3B0aHJlYWRzPW5vCi0gICAgIGlmIHRlc3QgIiRhY19jdl9oYXZlX2Rhc2hfcHRocmVhZCIgPSAibm8iOyB0aGVuCi0gCSAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IGFjY2VwdHMgLXB0aHJlYWRzIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTEwNDc6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gYWNjZXB0cyAtcHRocmVhZHMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMDk4NzogY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBhY2NlcHRzIC1wdGhyZWFkcyIgPiY1Ci0gICAgIAllY2hvICdpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH0nIHwgY2F0ID4gY29uZnRlc3QuYwotIAkgICAgJHtDQy1jY30gLXB0aHJlYWRzIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgPiBjb25mdGVzdC5vdXQgMj4mMQotICAgICAJaWYgdGVzdCAkPyAtZXEgMDsgdGhlbgotQEAgLTExMTQ4LDEzICsxMTA4OCwxMyBAQCBmaQotIAotIGlmIHRlc3QgJGFjX2N2X3Byb2dfZ2NjID0geWVzOyB0aGVuCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gbmVlZHMgLXRyYWRpdGlvbmFsIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTExNTI6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gbmVlZHMgLXRyYWRpdGlvbmFsIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTEwOTI6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gbmVlZHMgLXRyYWRpdGlvbmFsIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgIGFjX3BhdHRlcm49IkF1dG9jb25mLioneCciCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTExNTggImNvbmZpZ3VyZSIKLSsjbGluZSAxMTA5OCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxzZ3R0eS5oPgotIEF1dG9jb25mIFRJT0NHRVRQCi1AQCAtMTExNzIsNyArMTExMTIsNyBAQCBybSAtZiBjb25mdGVzdCoKLSAKLSAgIGlmIHRlc3QgJGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsID0gbm87IHRoZW4KLSAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExMTc2ICJjb25maWd1cmUiCi0rI2xpbmUgMTExMTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8dGVybWlvLmg+Ci0gQXV0b2NvbmYgVENHRVRBCi1AQCAtMTExOTQsNyArMTExMzQsNyBAQCBlY2hvICIkYWNfdCIiJGFjX2N2X3Byb2dfZ2NjX3RyYWRpdGlvbmFsIiAxPiY2Ci0gZmkKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgOC1iaXQgY2xlYW4gbWVtY21wIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTExOTg6IGNoZWNraW5nIGZvciA4LWJpdCBjbGVhbiBtZW1jbXAiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTEzODogY2hlY2tpbmcgZm9yIDgtYml0IGNsZWFuIG1lbWNtcCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfbWVtY21wX2NsZWFuJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTExMjAyLDcgKzExMTQyLDcgQEAgZWxzZQotICAgYWNfY3ZfZnVuY19tZW1jbXBfY2xlYW49bm8KLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTEyMDYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTE0NiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotIG1haW4oKQotQEAgLTExMjEyLDcgKzExMTUyLDcgQEAgbWFpbigpCi0gfQotIAotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEyMTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExMTU2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0gdGhlbgotICAgYWNfY3ZfZnVuY19tZW1jbXBfY2xlYW49eWVzCi0gZWxzZQotQEAgLTExMjM0LDEyICsxMTE3NCwxMiBAQCBmb3IgYWNfZnVuYyBpbiBmY2htb2QgZmxvY2tmaWxlIGdldGNfdW5sb2NrZWQgX2dldGNfbm9sb2NrIGdldHBhZ2VzaXplIFwKLSAgICAgICAgICAgICAgICAgc3RhdDY0IHN0YXR2ZnMgc3RhdHZmczY0IHN0cmVycm9yIHN0cnRva19yIHRydW5jYXRlNjQKLSBkbwotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExMjM4OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTE3ODogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMTI0MyAiY29uZmlndXJlIgotKyNsaW5lIDExMTgzICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KLUBAIC0xMTI2Miw3ICsxMTIwMiw3IEBAICRhY19mdW5jKCk7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEyNjY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEyMDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCi0gZWxzZQotQEAgLTExMjkxLDE0ICsxMTIzMSwxNCBAQCBkb25lCi0gCi0gCi0gY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExMjk1ICJjb25maWd1cmUiCi0rI2xpbmUgMTEyMzUgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8d2luZG93cy5oPgotIGludCBtYWluKCkgewotIFNZU1RFTVRJTUUgc3Q7RklMRVRJTUUgZnQ7U3lzdGVtVGltZVRvRmlsZVRpbWUoJnN0LCZmdCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEzMDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEyNDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfaGF2ZV9zeXN0ZW10aW1ldG9maWxldGltZT0ieWVzIgotIGVsc2UKLUBAIC0xMTMxOCwxNCArMTEyNTgsMTQgQEAgRU9GCi0gCi0gZmkKLSBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTEzMjIgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTI2MiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gaW50IG1haW4oKSB7Ci0gRklMRVRJTUUgZnQ7R2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoJmZ0KTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTMyOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTI2OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9oYXZlX2dldHN5c3RlbXRpbWVhc2ZpbGV0aW1lPSJ5ZXMiCi0gZWxzZQotQEAgLTExMzU1LDE5ICsxMTI5NSwxOSBAQCBhY19saW5rPScke0NYWC1nKyt9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRDWFhGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlcwotIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jeHhfY3Jvc3MKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd2NydG9tYiIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExMzU5OiBjaGVja2luZyBmb3Igd2NydG9tYiIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjExMjk5OiBjaGVja2luZyBmb3Igd2NydG9tYiIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hhdmVfd2NydG9tYicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMTM2NCAiY29uZmlndXJlIgotKyNsaW5lIDExMzA0ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHdjaGFyLmg+Ci0gaW50IG1haW4oKSB7Ci0gbWJzdGF0ZV90IHBzPXswfTt3Y3J0b21iKDAsJ2YnLCZwcyk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEzNzE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTEzMTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfaGF2ZV93Y3J0b21iPSJ5ZXMiCi0gZWxzZQotQEAgLTExMzkwLDE5ICsxMTMzMCwxOSBAQCBFT0YKLSAKLSBmaQotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYnJ0b3djIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTEzOTQ6IGNoZWNraW5nIGZvciBtYnJ0b3djIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTEzMzQ6IGNoZWNraW5nIGZvciBtYnJ0b3djIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGF2ZV9tYnJ0b3djJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExMzk5ICJjb25maWd1cmUiCi0rI2xpbmUgMTEzMzkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8d2NoYXIuaD4KLSBpbnQgbWFpbigpIHsKLSBtYnN0YXRlX3QgcHM9ezB9O21icnRvd2MoMCwwLDAsJnBzKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTQwNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTM0NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9oYXZlX21icnRvd2M9InllcyIKLSBlbHNlCi1AQCAtMTE0MzQsMTIgKzExMzc0LDEyIEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwotIGZpCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHJlc19uaW5pdCgpIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTE0Mzg6IGNoZWNraW5nIGZvciByZXNfbmluaXQoKSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjExMzc4OiBjaGVja2luZyBmb3IgcmVzX25pbml0KCkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX3Jlc19uaW5pdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMTQ0MyAiY29uZmlndXJlIgotKyNsaW5lIDExMzgzICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gICAgICAgICAjaWZkZWYgbGludXgKLUBAIC0xMTQ1MSw3ICsxMTM5MSw3IEBAIGludCBtYWluKCkgewotIGludCBmb28gPSByZXNfbmluaXQoJl9yZXMpOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNDU1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExMzk1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGFjX2N2X2Z1bmNfcmVzX25pbml0PXllcwotIGVsc2UKLUBAIC0xMTQ4NCwxMiArMTE0MjQsMTIgQEAgYWNfbGluaz0nJHtDWFgtZysrfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXMKLSBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY3h4X2Nyb3NzCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdudV9nZXRfbGliY192ZXJzaW9uKCkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMTQ4ODogY2hlY2tpbmcgZm9yIGdudV9nZXRfbGliY192ZXJzaW9uKCkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTQyODogY2hlY2tpbmcgZm9yIGdudV9nZXRfbGliY192ZXJzaW9uKCkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2dudV9nZXRfbGliY192ZXJzaW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExNDkzICJjb25maWd1cmUiCi0rI2xpbmUgMTE0MzMgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAgICAgICAgICNpZmRlZiBIQVZFX0dOVV9MSUJDX1ZFUlNJT05fSAotQEAgLTExNTAwLDcgKzExNDQwLDcgQEAgaW50IG1haW4oKSB7Ci0gY29uc3QgY2hhciAqZ2xpYmNfdmVyc2lvbiA9IGdudV9nZXRfbGliY192ZXJzaW9uKCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE1MDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE0NDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfZnVuY19nbnVfZ2V0X2xpYmNfdmVyc2lvbj15ZXMKLSBlbHNlCi1AQCAtMTE1MzQsNyArMTE0NzQsNyBAQCBjcm9zc19jb21waWxpbmc9JGFjX2N2X3Byb2dfY2NfY3Jvc3MKLSAKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYW4gaW1wbGVtZW50YXRpb24gb2YgdmFfY29weSgpIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTE1Mzg6IGNoZWNraW5nIGZvciBhbiBpbXBsZW1lbnRhdGlvbiBvZiB2YV9jb3B5KCkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTQ3ODogY2hlY2tpbmcgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIHZhX2NvcHkoKSIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3ZhX2NvcHknK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtMTE1NDQsNyArMTE0ODQsNyBAQCBlbHNlCi0gICAgIAotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMTU0OCAiY29uZmlndXJlIgotKyNsaW5lIDExNDg4ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gICAgICAgICAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1AQCAtMTE1NTgsNyArMTE0OTgsNyBAQCBlbHNlCi0gICAgICAgICB9Ci0gICAgICAgICBpbnQgbWFpbigpIHsgZiAoMCwgNDIpOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE1NjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNTAyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0gdGhlbgotICAgYWNfY3ZfdmFfY29weT15ZXMKLSBlbHNlCi1AQCAtMTE1NzUsNyArMTE1MTUsNyBAQCBmaQotIAotIGVjaG8gIiRhY190IiIkYWNfY3ZfdmFfY29weSIgMT4mNgotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBhbiBpbXBsZW1lbnRhdGlvbiBvZiBfX3ZhX2NvcHkoKSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExNTc5OiBjaGVja2luZyBmb3IgYW4gaW1wbGVtZW50YXRpb24gb2YgX192YV9jb3B5KCkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTUxOTogY2hlY2tpbmcgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIF9fdmFfY29weSgpIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfX192YV9jb3B5JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotQEAgLTExNTg1LDcgKzExNTI1LDcgQEAgZWxzZQotICAgICAKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTE1ODkgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTUyOSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICAgICAgICAgI2luY2x1ZGUgPHN0ZGFyZy5oPgotQEAgLTExNTk5LDcgKzExNTM5LDcgQEAgZWxzZQotICAgICAgICAgfQotICAgICAgICAgaW50IG1haW4oKSB7IGYgKDAsIDQyKTsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNjAzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTU0MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAotIHRoZW4KLSAgIGFjX2N2X19fdmFfY29weT15ZXMKLSBlbHNlCi1AQCAtMTE2MTYsNyArMTE1NTYsNyBAQCBmaQotIAotIGVjaG8gIiRhY190IiIkYWNfY3ZfX192YV9jb3B5IiAxPiY2Ci0gZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB2YV9saXN0cyBjYW4gYmUgY29waWVkIGJ5IHZhbHVlIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTE2MjA6IGNoZWNraW5nIHdoZXRoZXIgdmFfbGlzdHMgY2FuIGJlIGNvcGllZCBieSB2YWx1ZSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjExNTYwOiBjaGVja2luZyB3aGV0aGVyIHZhX2xpc3RzIGNhbiBiZSBjb3BpZWQgYnkgdmFsdWUiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl92YV92YWxfY29weScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xMTYyNiw3ICsxMTU2Niw3IEBAIGVsc2UKLSAgICAgCi0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExNjMwICJjb25maWd1cmUiCi0rI2xpbmUgMTE1NzAgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAgICAgICAgICNpbmNsdWRlIDxzdGRhcmcuaD4KLUBAIC0xMTY0MCw3ICsxMTU4MCw3IEBAIGVsc2UKLSAgICAgICAgIH0KLSAgICAgICAgIGludCBtYWluKCkgeyBmICgwLCA0Mik7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTY0NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE1ODQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLSB0aGVuCi0gICBhY19jdl92YV92YWxfY29weT15ZXMKLSBlbHNlCi1AQCAtMTE3MTAsMTIgKzExNjUwLDEyIEBAIEFSTV9BQklfUFJFRklYPQotIGlmIHRlc3QgIiRHTlVfQ0MiOyB0aGVuCi0gICBpZiB0ZXN0ICIkQ1BVX0FSQ0giID0gImFybSIgOyB0aGVuCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBBUk0gRUFCSSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExNzE0OiBjaGVja2luZyBmb3IgQVJNIEVBQkkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTY1NDogY2hlY2tpbmcgZm9yIEFSTSBFQUJJIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZ2NjX2FybV9lYWJpJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExNzE5ICJjb25maWd1cmUiCi0rI2xpbmUgMTE2NTkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSBpbnQgbWFpbigpIHsKLUBAIC0xMTcyOCw3ICsxMTY2OCw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNzMyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTY3MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfZ2NjX2FybV9lYWJpPSJ5ZXMiCi0gZWxzZQotQEAgLTExNzUzLDEyICsxMTY5MywxMiBAQCBlY2hvICIkYWNfdCIiJGFjX2N2X2djY19hcm1fZWFiaSIgMT4mNgotIGZpCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG1vZGVybiBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gc3ludGF4IHN1cHBvcnQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMTc1NzogY2hlY2tpbmcgZm9yIG1vZGVybiBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gc3ludGF4IHN1cHBvcnQiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTY5NzogY2hlY2tpbmcgZm9yIG1vZGVybiBDKysgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gc3ludGF4IHN1cHBvcnQiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9jcHBfbW9kZXJuX3NwZWNpYWxpemVfdGVtcGxhdGVfc3ludGF4JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExNzYyICJjb25maWd1cmUiCi0rI2xpbmUgMTE3MDIgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSB0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IFggeyBpbnQgYTsgfTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3MgWSB7fTsKLUBAIC0xMTc2OCw3ICsxMTcwOCw3IEBAIFg8aW50PiBpbnRfeDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWDxZPiB5X3g7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE3NzI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNzEyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9jcHBfbW9kZXJuX3NwZWNpYWxpemVfdGVtcGxhdGVfc3ludGF4PXllcwotIGVsc2UKLUBAIC0xMTc4NiwxMiArMTE3MjYsMTIgQEAgaWYgdGVzdCAiJGFjX2N2X2NwcF9tb2Rlcm5fc3BlY2lhbGl6ZV90ZW1wbGF0ZV9zeW50YXgiID0gbm8gOyB0aGVuCi0gZmkKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHBhcnRpYWwgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMTc5MDogY2hlY2tpbmcgd2hldGhlciBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdvcmtzIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTE3MzA6IGNoZWNraW5nIHdoZXRoZXIgcGFydGlhbCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiB3b3JrcyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NwcF9wYXJ0aWFsX3NwZWNpYWxpemF0aW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExNzk1ICJjb25maWd1cmUiCi0rI2xpbmUgMTE3MzUgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRm9vIHt9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRm9vPFQqPiB7fTsKLUBAIC0xMTc5OSw3ICsxMTczOSw3IEBAIGludCBtYWluKCkgewotIHJldHVybiAwOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExODAzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTc0MzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfY3BwX3BhcnRpYWxfc3BlY2lhbGl6YXRpb249eWVzCi0gZWxzZQotQEAgLTExODIzLDEyICsxMTc2MywxMiBAQCBFT0YKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMrKyBcInVzaW5nXCIga2V5d29yZCByZXNvbHZlcyBhbWJpZ3VpdHkiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMTgyNzogY2hlY2tpbmcgd2hldGhlciB0aGUgQysrIFwidXNpbmdcIiBrZXl3b3JkIHJlc29sdmVzIGFtYmlndWl0eSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjExNzY3OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDKysgXCJ1c2luZ1wiIGtleXdvcmQgcmVzb2x2ZXMgYW1iaWd1aXR5IiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY3BwX2FtYmlndWl0eV9yZXNvbHZpbmdfdXNpbmcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTE4MzIgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTc3MiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIGNsYXNzIFggewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYzogaW50IGdvKGNvbnN0IFgmKSB7cmV0dXJuIDM7fQotQEAgLTExODQ0LDcgKzExNzg0LDcgQEAgaW50IG1haW4oKSB7Ci0gWCB4OyBZIHk7IHkuam8oeCk7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE4NDg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExNzg4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9jcHBfYW1iaWd1aXR5X3Jlc29sdmluZ191c2luZz15ZXMKLSBlbHNlCi1AQCAtMTE4NjgsNyArMTE4MDgsNyBAQCBFT0YKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBDKysgZHluYW1pY19jYXN0IHRvIHZvaWQqIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTE4NzI6IGNoZWNraW5nIGZvciBDKysgZHluYW1pY19jYXN0IHRvIHZvaWQqIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTE4MTI6IGNoZWNraW5nIGZvciBDKysgZHluYW1pY19jYXN0IHRvIHZvaWQqIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfY3BwX2R5bmFtaWNfY2FzdF92b2lkX3B0cicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xMTg3Niw3ICsxMTgxNiw3IEBAIGVsc2UKLSAgIGFjX2N2X2NwcF9keW5hbWljX2Nhc3Rfdm9pZF9wdHI9bm8KLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTE4ODAgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTgyMCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIGNsYXNzIFggeyBpbnQgaTsgcHVibGljOiB2aXJ0dWFsIH5YKCkgeyB9IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIFkgeyBpbnQgajsgcHVibGljOiB2aXJ0dWFsIH5ZKCkgeyB9IH07Ci1AQCAtMTE4OTIsNyArMTE4MzIsNyBAQCBjbGFzcyBYIHsgaW50IGk7IHB1YmxpYzogdmlydHVhbCB+WCgpIHsgfSB9OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHZvaWQqKSZtZG8gPT0gZHluYW1pY19jYXN0PHZvaWQqPihzdWJ5KSkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE4OTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExODM2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0gdGhlbgotICAgYWNfY3ZfY3BwX2R5bmFtaWNfY2FzdF92b2lkX3B0cj15ZXMKLSBlbHNlCi1AQCAtMTE5MTksMTkgKzExODU5LDE5IEBAIGZpCi0gCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBDKysgcmVxdWlyZXMgaW1wbGVtZW50YXRpb24gb2YgdW51c2VkIHZpcnR1YWwgbWV0aG9kcyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjExOTIzOiBjaGVja2luZyB3aGV0aGVyIEMrKyByZXF1aXJlcyBpbXBsZW1lbnRhdGlvbiBvZiB1bnVzZWQgdmlydHVhbCBtZXRob2RzIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTE4NjM6IGNoZWNraW5nIHdoZXRoZXIgQysrIHJlcXVpcmVzIGltcGxlbWVudGF0aW9uIG9mIHVudXNlZCB2aXJ0dWFsIG1ldGhvZHMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9jcHBfdW51c2VkX3JlcXVpcmVkJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDExOTI4ICJjb25maWd1cmUiCi0rI2xpbmUgMTE4NjggImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSBjbGFzcyBYIHtwcml2YXRlOiB2aXJ0dWFsIHZvaWQgbmV2ZXJfY2FsbGVkKCk7fTsKLSBpbnQgbWFpbigpIHsKLSBYIHg7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE5MzU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE4NzU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfY3BwX3VudXNlZF9yZXF1aXJlZD1ubwotIGVsc2UKLUBAIC0xMTk1NywxMiArMTE4OTcsMTIgQEAgZmkKLSAKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgdHJvdWJsZSBjb21wYXJpbmcgdG8gemVybyBuZWFyIHN0ZDo6b3BlcmF0b3IhPSgpIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTE5NjE6IGNoZWNraW5nIGZvciB0cm91YmxlIGNvbXBhcmluZyB0byB6ZXJvIG5lYXIgc3RkOjpvcGVyYXRvciE9KCkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTkwMTogY2hlY2tpbmcgZm9yIHRyb3VibGUgY29tcGFyaW5nIHRvIHplcm8gbmVhciBzdGQ6Om9wZXJhdG9yIT0oKSIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Ryb3VibGVfY29tcGFyaW5nX3RvX3plcm8nK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTE5NjYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMTkwNiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotICNpbmNsdWRlIDxhbGdvcml0aG0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgRm9vIHt9OwotQEAgLTExOTczLDcgKzExOTEzLDcgQEAgaW50IG1haW4oKSB7Ci0gRm9vPGludD4gZjsgcmV0dXJuICgwICE9IGYpOwotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjExOTc3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMTkxNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfdHJvdWJsZV9jb21wYXJpbmdfdG9femVybz1ubwotIGVsc2UKLUBAIC0xMjAwMywxOSArMTE5NDMsMTkgQEAgZmkKLSBfU0FWRV9MREZMQUdTPSRMREZMQUdTCi0gTERGTEFHUz0iJExERkxBR1MgJERTT19QSUNfQ0ZMQUdTICREU09fTERPUFRTICRNT1pfT1BUSU1JWkVfTERGTEFHUyIKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgX190aHJlYWQga2V5d29yZCBmb3IgVExTIHZhcmlhYmxlcyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMDA3OiBjaGVja2luZyBmb3IgX190aHJlYWQga2V5d29yZCBmb3IgVExTIHZhcmlhYmxlcyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjExOTQ3OiBjaGVja2luZyBmb3IgX190aHJlYWQga2V5d29yZCBmb3IgVExTIHZhcmlhYmxlcyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3RocmVhZF9rZXl3b3JkJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyMDEyICJjb25maWd1cmUiCi0rI2xpbmUgMTE5NTIgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSBfX3RocmVhZCBib29sIHRsc0lzTWFpblRocmVhZCA9IGZhbHNlOwotIGludCBtYWluKCkgewotIHJldHVybiB0bHNJc01haW5UaHJlYWQ7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIwMTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTE5NTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfdGhyZWFkX2tleXdvcmQ9eWVzCi0gZWxzZQotQEAgLTEyMDU1LDEyICsxMTk5NSwxMiBAQCBmaQotIE1BTExPQ19IPQotICAgIGFjX3NhZmU9YGVjaG8gIm1hbGxvYy5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWxsb2MuaCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMDU5OiBjaGVja2luZyBmb3IgbWFsbG9jLmgiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMTk5OTogY2hlY2tpbmcgZm9yIG1hbGxvYy5oIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyMDY0ICJjb25maWd1cmUiCi0rI2xpbmUgMTIwMDQgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci1AQCAtMTIwNjgsNyArMTIwMDgsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjA3MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIwMTI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEyMDkxLDEyICsxMjAzMSwxMiBAQCBmaQotIGlmIHRlc3QgIiRNQUxMT0NfSCIgPSAiIjsgdGhlbgotICAgICAgYWNfc2FmZT1gZWNobyAibWFsbG9jL21hbGxvYy5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWxsb2MvbWFsbG9jLmgiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMjA5NTogY2hlY2tpbmcgZm9yIG1hbGxvYy9tYWxsb2MuaCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyMDM1OiBjaGVja2luZyBmb3IgbWFsbG9jL21hbGxvYy5oIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyMTAwICJjb25maWd1cmUiCi0rI2xpbmUgMTIwNDAgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8bWFsbG9jL21hbGxvYy5oPgotQEAgLTEyMTA0LDcgKzEyMDQ0LDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIxMDg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMDQ4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC0xMjEyNywxMiArMTIwNjcsMTIgQEAgZmkKLSAgIGlmIHRlc3QgIiRNQUxMT0NfSCIgPSAiIjsgdGhlbgotICAgICAgICBhY19zYWZlPWBlY2hvICJzeXMvbWFsbG9jLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN5cy9tYWxsb2MuaCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMTMxOiBjaGVja2luZyBmb3Igc3lzL21hbGxvYy5oIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTIwNzE6IGNoZWNraW5nIGZvciBzeXMvbWFsbG9jLmgiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTIxMzYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMjA3NiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDxzeXMvbWFsbG9jLmg+Ci1AQCAtMTIxNDAsNyArMTIwODAsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjE0NDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIwODQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTEyMTc2LDEyICsxMjExNiwxMiBAQCBNT1pfQUxMT0NBVElOR19GVU5DUz0ic3RybmR1cCBwb3NpeF9tZW1hbGlnbiBtZW1hbGlnbiB2YWxsb2MiCi0gZm9yIGFjX2Z1bmMgaW4gc3RybmR1cCBwb3NpeF9tZW1hbGlnbiBtZW1hbGlnbiB2YWxsb2MKLSBkbwotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMTgwOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjEyMDogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMjE4NSAiY29uZmlndXJlIgotKyNsaW5lIDEyMTI1ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KLUBAIC0xMjIwNyw3ICsxMjE0Nyw3IEBAICRhY19mdW5jKCk7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIyMTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIxNTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCi0gZWxzZQotQEAgLTEyMjM3LDE5ICsxMjE3NywxOSBAQCBkb25lCi0gCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMjQxOiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTIxODE6IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9hdHRyaWJ1dGVfYWx3YXlzX2lubGluZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMjI0NiAiY29uZmlndXJlIgotKyNsaW5lIDEyMTg2ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gaW5saW5lIHZvaWQgZih2b2lkKSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci0gaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIyNTM6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMTkzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9hdHRyaWJ1dGVfYWx3YXlzX2lubGluZT15ZXMKLSBlbHNlCi1AQCAtMTIyNjQsMTkgKzEyMjA0LDE5IEBAIGZpCi0gZWNobyAiJGFjX3QiIiRhY19jdl9hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSIgMT4mNgotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKChtYWxsb2MpKSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyMjY4OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygobWFsbG9jKSkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjIwODogY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKG1hbGxvYykpIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfYXR0cmlidXRlX21hbGxvYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMjI3MyAiY29uZmlndXJlIgotKyNsaW5lIDEyMjEzICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gdm9pZCogZihpbnQpIF9fYXR0cmlidXRlX18oKG1hbGxvYykpOwotIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMjgwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjIyMDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfYXR0cmlidXRlX21hbGxvYz15ZXMKLSBlbHNlCi1AQCAtMTIyOTEsMTkgKzEyMjMxLDE5IEBAIGZpCi0gZWNobyAiJGFjX3QiIiRhY19jdl9hdHRyaWJ1dGVfbWFsbG9jIiAxPiY2Ci0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTIyOTU6IGNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyMjM1OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9hdHRyaWJ1dGVfd2Fybl91bnVzZWQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTIzMDAgImNvbmZpZ3VyZSIKLSsjbGluZSAxMjI0MCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIGludCBmKHZvaWQpIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpOwotIGludCBtYWluKCkgewotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMzA3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjI0NzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgYWNfY3ZfYXR0cmlidXRlX3dhcm5fdW51c2VkPXllcwotIGVsc2UKLUBAIC0xMjMyNywxOSArMTIyNjcsMTkgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2NjX2Nyb3NzCi0gCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIExDX01FU1NBR0VTIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTIzMzE6IGNoZWNraW5nIGZvciBMQ19NRVNTQUdFUyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyMjcxOiBjaGVja2luZyBmb3IgTENfTUVTU0FHRVMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9pMThuX2xjX21lc3NhZ2VzJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyMzM2ICJjb25maWd1cmUiCi0rI2xpbmUgMTIyNzYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gaW50IG1haW4oKSB7Ci0gaW50IGNhdGVnb3J5ID0gTENfTUVTU0FHRVM7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTIzNDM6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMjgzOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9pMThuX2xjX21lc3NhZ2VzPXllcwotIGVsc2UKLUBAIC0xMjM2NSwxMiArMTIzMDUsMTIgQEAgZmkKLSBmb3IgYWNfZnVuYyBpbiBsb2NhbGVjb252Ci0gZG8KLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMjM2OTogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTIzMDk6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTIzNzQgImNvbmZpZ3VyZSIKLSsjbGluZSAxMjMxNCAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCi1AQCAtMTIzOTMsNyArMTIzMzMsNyBAQCAkYWNfZnVuYygpOwotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMzk3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyMzM3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgotIGVsc2UKLUBAIC0xMjU4MCw3ICsxMjUyMCw3IEBAIGZpCi0gCSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibnNwci1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSBuc3ByLWNvbmZpZzsgYWNfd29yZD0kMgotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyNTg0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjUyNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9OU1BSX0NPTkZJRycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xMjYxNSw3ICsxMjU1NSw3IEBAIGZpCi0gCi0gCW1pbl9uc3ByX3ZlcnNpb249JE5TUFJfTUlOVkVSCi0gCWVjaG8gJGFjX24gImNoZWNraW5nIGZvciBOU1BSIC0gdmVyc2lvbiA+PSAkbWluX25zcHJfdmVyc2lvbiIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyNjE5OiBjaGVja2luZyBmb3IgTlNQUiAtIHZlcnNpb24gPj0gJG1pbl9uc3ByX3ZlcnNpb24iID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjU1OTogY2hlY2tpbmcgZm9yIE5TUFIgLSB2ZXJzaW9uID49ICRtaW5fbnNwcl92ZXJzaW9uIiA+JjUKLSAKLSAJbm9fbnNwcj0iIgotIAlpZiB0ZXN0ICIkTlNQUl9DT05GSUciICE9ICJubyI7IHRoZW4KLUBAIC0xMjY3OCw3ICsxMjYxOCw3IEBAIGlmIHRlc3QgLW4gIiRNT1pfTkFUSVZFX05TUFIiOyB0aGVuCi0gICAgIF9TQVZFX0NGTEFHUz0kQ0ZMQUdTCi0gICAgIENGTEFHUz0iJENGTEFHUyAkTlNQUl9DRkxBR1MiCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMjY4MiAiY29uZmlndXJlIgotKyNsaW5lIDEyNjIyICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgInBybG9nLmgiCi0gaW50IG1haW4oKSB7Ci1AQCAtMTI2ODcsNyArMTI2MjcsNyBAQCBpbnQgbWFpbigpIHsKLSAgICAgICAgICAgICAgICAgICNlbmRpZgotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEyNjkxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjYzMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgTU9aX05BVElWRV9OU1BSPTEKLSBlbHNlCi1AQCAtMTI3MjksNyArMTI2NjksNyBAQCBpZiB0ZXN0IC16ICIkTU9aX1pMSUJfTElCUyRNT1pfWkxJQl9DRkxBR1MkU0tJUF9MSUJSQVJZX0NIRUNLUyI7IHRoZW4KLSAgICAgICAgIE1PWl9OQVRJVkVfWkxJQj0KLSAgICAgZWxzZQotICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGd6cmVhZCBpbiAtbHoiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMjczMzogY2hlY2tpbmcgZm9yIGd6cmVhZCBpbiAtbHoiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjY3MzogY2hlY2tpbmcgZm9yIGd6cmVhZCBpbiAtbHoiID4mNQotIGFjX2xpYl92YXI9YGVjaG8geidfJ2d6cmVhZCB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci1AQCAtMTI3MzcsNyArMTI2NzcsNyBAQCBlbHNlCi0gICBhY19zYXZlX0xJQlM9IiRMSUJTIgotIExJQlM9Ii1seiAgJExJQlMiCi0gY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyNzQxICJjb25maWd1cmUiCi0rI2xpbmUgMTI2ODEgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwotIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKLUBAIC0xMjc0OCw3ICsxMjY4OCw3IEBAIGludCBtYWluKCkgewotIGd6cmVhZCgpCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI3NTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI2OTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKLSBlbHNlCi1AQCAtMTI3NzIsNyArMTI3MTIsNyBAQCBmaQotICAgICAgICAgaWYgdGVzdCAiJE1PWl9OQVRJVkVfWkxJQiIgPSAxOyB0aGVuCi0gICAgICAgICAgICAgTU9aWkxJQk5VTT1gZWNobyAkTU9aWkxJQiB8IGF3ayAtRi4gJ3twcmludGYgIjB4JXhcbiIsICgoKCQxICogMTYgKyAkMikgKiAxNikgKyAkMykgKiAxNiArICQ0fSdgCi0gICAgICAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEyNzc2ICJjb25maWd1cmUiCi0rI2xpbmUgMTI3MTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1AQCAtMTI3ODMsNyArMTI3MjMsNyBAQCBpbnQgbWFpbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZiAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMjc4NzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTI3Mjc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIE1PWl9OQVRJVkVfWkxJQj0xCi0gZWxzZQotQEAgLTEyODI5LDcgKzEyNzY5LDcgQEAgaWYgdGVzdCAtbiAiJE1PWl9OQVRJVkVfRkZJIjsgdGhlbgotICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSBwa2ctY29uZmlnOyBhY193b3JkPSQyCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTI4MzM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyNzczOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX1BLR19DT05GSUcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi1AQCAtMTI4NzMsMTkgKzEyODEzLDE5IEBAIGZpCi0gICAgICBQS0dfQ09ORklHX01JTl9WRVJTSU9OPTAuOS4wCi0gICAgICBpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJFBLR19DT05GSUdfTUlOX1ZFUlNJT047IHRoZW4KLSAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsaWJmZmkgPiAzLjAuOSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyODc3OiBjaGVja2luZyBmb3IgbGliZmZpID4gMy4wLjkiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjgxNzogY2hlY2tpbmcgZm9yIGxpYmZmaSA+IDMuMC45IiA+JjUKLSAKLSAgICAgICAgIGlmICRQS0dfQ09ORklHIC0tZXhpc3RzICJsaWJmZmkgPiAzLjAuOSIgOyB0aGVuCi0gICAgICAgICAgICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgICAgICAgICAgIHN1Y2NlZWRlZD15ZXMKLSAKLSAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyODg0OiBjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyODI0OiBjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIgPiY1Ci0gICAgICAgICAgICAgTU9aX0ZGSV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJmZmkgPiAzLjAuOSJgCi0gICAgICAgICAgICAgZWNobyAiJGFjX3QiIiRNT1pfRkZJX0NGTEFHUyIgMT4mNgotIAotICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIE1PWl9GRklfTElCUyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyODg5OiBjaGVja2luZyBNT1pfRkZJX0xJQlMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMjgyOTogY2hlY2tpbmcgTU9aX0ZGSV9MSUJTIiA+JjUKLSAgICAgICAgICAgICAjIyBSZW1vdmUgZXZpbCBmbGFncyBsaWtlIC1XbCwtLWV4cG9ydC1keW5hbWljCi0gICAgICAgICAgICAgTU9aX0ZGSV9MSUJTPSJgJFBLR19DT05GSUcgLS1saWJzIFwibGliZmZpID4gMy4wLjlcIiB8c2VkIHMvLVdsLC0tZXhwb3J0LWR5bmFtaWMvL2dgIgotICAgICAgICAgICAgIGVjaG8gIiRhY190IiIkTU9aX0ZGSV9MSUJTIiAxPiY2Ci1AQCAtMTI5MjEsNyArMTI4NjEsNyBAQCBlY2hvICJjb25maWd1cmU6MTI4ODk6IGNoZWNraW5nIE1PWl9GRklfTElCUyIgPiY1Ci0gICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15IHBrZy1jb25maWc7IGFjX3dvcmQ9JDIKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMjkyNTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTI4NjU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfUEtHX0NPTkZJRycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xMjk2NSwxOSArMTI5MDUsMTkgQEAgZmkKLSAgICAgIFBLR19DT05GSUdfTUlOX1ZFUlNJT049MC45LjAKLSAgICAgIGlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAkUEtHX0NPTkZJR19NSU5fVkVSU0lPTjsgdGhlbgotICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxpYmZmaSA+PSAzLjAuOSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyOTY5OiBjaGVja2luZyBmb3IgbGliZmZpID49IDMuMC45IiA+JjUKLStlY2hvICJjb25maWd1cmU6MTI5MDk6IGNoZWNraW5nIGZvciBsaWJmZmkgPj0gMy4wLjkiID4mNQotIAotICAgICAgICAgaWYgJFBLR19DT05GSUcgLS1leGlzdHMgImxpYmZmaSA+PSAzLjAuOSIgOyB0aGVuCi0gICAgICAgICAgICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgotICAgICAgICAgICAgIHN1Y2NlZWRlZD15ZXMKLSAKLSAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEyOTc2OiBjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEyOTE2OiBjaGVja2luZyBNT1pfRkZJX0NGTEFHUyIgPiY1Ci0gICAgICAgICAgICAgTU9aX0ZGSV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJmZmkgPj0gMy4wLjkiYAotICAgICAgICAgICAgIGVjaG8gIiRhY190IiIkTU9aX0ZGSV9DRkxBR1MiIDE+JjYKLSAKLSAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBNT1pfRkZJX0xJQlMiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMjk4MTogY2hlY2tpbmcgTU9aX0ZGSV9MSUJTIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTI5MjE6IGNoZWNraW5nIE1PWl9GRklfTElCUyIgPiY1Ci0gICAgICAgICAgICAgIyMgUmVtb3ZlIGV2aWwgZmxhZ3MgbGlrZSAtV2wsLS1leHBvcnQtZHluYW1pYwotICAgICAgICAgICAgIE1PWl9GRklfTElCUz0iYCRQS0dfQ09ORklHIC0tbGlicyBcImxpYmZmaSA+PSAzLjAuOVwiIHxzZWQgcy8tV2wsLS1leHBvcnQtZHluYW1pYy8vZ2AiCi0gICAgICAgICAgICAgZWNobyAiJGFjX3QiIiRNT1pfRkZJX0xJQlMiIDE+JjYKLUBAIC0xMzExMiwxOCArMTMwNTIsMTggQEAgTU9aX0RFQlVHX0RJU0FCTEVfREVGUz0iLUROREVCVUcgLURUUklNTUVEIgotIAotIGlmIHRlc3QgLW4gIiRNT1pfREVCVUciOyB0aGVuCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB2YWxpZCBkZWJ1ZyBmbGFncyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEzMTE2OiBjaGVja2luZyBmb3IgdmFsaWQgZGVidWcgZmxhZ3MiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMzA1NjogY2hlY2tpbmcgZm9yIHZhbGlkIGRlYnVnIGZsYWdzIiA+JjUKLSAgICAgX1NBVkVfQ0ZMQUdTPSRDRkxBR1MKLSAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRNT1pfREVCVUdfRkxBR1MiCi0gICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxMzEyMCAiY29uZmlndXJlIgotKyNsaW5lIDEzMDYwICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gaW50IG1haW4oKSB7Ci0gcHJpbnRmKCJIZWxsbyBXb3JsZFxuIik7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTMxMjc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzMDY3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBfcmVzdWx0cz15ZXMKLSBlbHNlCi1AQCAtMTMyMDEsMTggKzEzMTQxLDE4IEBAIGZpCi0gaWYgdGVzdCAiJENPTVBJTEVfRU5WSVJPTk1FTlQiOyB0aGVuCi0gaWYgdGVzdCAtbiAiJE1PWl9PUFRJTUlaRSI7IHRoZW4KLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHZhbGlkIG9wdGltaXphdGlvbiBmbGFncyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjEzMjA1OiBjaGVja2luZyBmb3IgdmFsaWQgb3B0aW1pemF0aW9uIGZsYWdzIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTMxNDU6IGNoZWNraW5nIGZvciB2YWxpZCBvcHRpbWl6YXRpb24gZmxhZ3MiID4mNQotICAgICBfU0FWRV9DRkxBR1M9JENGTEFHUwotICAgICBDRkxBR1M9IiRDRkxBR1MgJE1PWl9PUFRJTUlaRV9GTEFHUyIKLSAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEzMjA5ICJjb25maWd1cmUiCi0rI2xpbmUgMTMxNDkgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSBpbnQgbWFpbigpIHsKLSBwcmludGYoIkhlbGxvIFdvcmxkXG4iKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxMzIxNjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTMxNTY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIF9yZXN1bHRzPXllcwotIGVsc2UKLUBAIC0xMzM2NCw3ICsxMzMwNCw3IEBAIEVPRgotICAgICBmaQotICAgZWxzZQotICAgICBlY2hvICRhY19uICJjaGVja2luZyBzaXplIG9mIGludCAqIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTMzNjg6IGNoZWNraW5nIHNpemUgb2YgaW50ICoiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMzMwODogY2hlY2tpbmcgc2l6ZSBvZiBpbnQgKiIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3NpemVvZl9pbnRfcCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xMzM3Miw3ICsxMzMxMiw3IEBAIGVsc2UKLSAgIGFjX2N2X3NpemVvZl9pbnRfcD00Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDEzMzc2ICJjb25maWd1cmUiCi0rI2xpbmUgMTMzMTYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSBpbnQgbWFpbigpCi1AQCAtMTMzODMsNyArMTMzMjMsNyBAQCBpbnQgbWFpbigpCi0gICByZXR1cm4oMCk7Ci0gfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTMzODc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzMzI3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCi0gdGhlbgotICAgYWNfY3Zfc2l6ZW9mX2ludF9wPWBjYXQgY29uZnRlc3R2YWxgCi0gZWxzZQotQEAgLTEzNjg3LDEyICsxMzYyNywxMiBAQCBmaQotIGlmIHRlc3QgLW4gIiRNT1pfVkFMR1JJTkQiOyB0aGVuCi0gICAgICAgIGFjX3NhZmU9YGVjaG8gInZhbGdyaW5kL3ZhbGdyaW5kLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHZhbGdyaW5kL3ZhbGdyaW5kLmgiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxMzY5MTogY2hlY2tpbmcgZm9yIHZhbGdyaW5kL3ZhbGdyaW5kLmgiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxMzYzMTogY2hlY2tpbmcgZm9yIHZhbGdyaW5kL3ZhbGdyaW5kLmgiID4mNQotICAgaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTM2OTYgImNvbmZpZ3VyZSIKLSsjbGluZSAxMzYzNiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgotQEAgLTEzNzAwLDcgKzEzNjQwLDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTM3MDQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjEzNjQ0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9oZWFkZXJfJGFjX3NhZmU9eWVzIgotIGVsc2UKLUBAIC0xMzk3Myw3ICsxMzkxMyw3IEBAIGRvCi0gIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTM5Nzc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjEzOTE3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX0NDQUNIRScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xNDA5OSwxMiArMTQwMzksMTIgQEAgY3Jvc3NfY29tcGlsaW5nPSRhY19jdl9wcm9nX2N4eF9jcm9zcwotICAgICBmb3IgYWNfZnVuYyBpbiBfX2N4YV9kZW1hbmdsZQotIGRvCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTQxMDM6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjE0MDQzOiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0MTA4ICJjb25maWd1cmUiCi0rI2xpbmUgMTQwNDggImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCi0gICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwotQEAgLTE0MTMwLDcgKzE0MDcwLDcgQEAgJGFjX2Z1bmMoKTsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDEzNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDA3NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKLSBlbHNlCi1AQCAtMTQxODQsMTIgKzE0MTI0LDEyIEBAIGZpCi0gaWYgdGVzdCAteiAiJFNLSVBfTElCUkFSWV9DSEVDS1MiOyB0aGVuCi0gICAgICAgIGFjX3NhZmU9YGVjaG8gInVud2luZC5oIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB1bndpbmQuaCIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE0MTg4OiBjaGVja2luZyBmb3IgdW53aW5kLmgiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDEyODogY2hlY2tpbmcgZm9yIHVud2luZC5oIiA+JjUKLSAgIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0MTkzICJjb25maWd1cmUiCi0rI2xpbmUgMTQxMzMgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaW5jbHVkZSA8dW53aW5kLmg+Ci1AQCAtMTQxOTcsNyArMTQxMzcsNyBAQCBpbnQgbWFpbigpIHsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDIwMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQxNDE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2hlYWRlcl8kYWNfc2FmZT15ZXMiCi0gZWxzZQotQEAgLTE0MjE0LDEyICsxNDE1NCwxMiBAQCBmaQotICAgICBmb3IgYWNfZnVuYyBpbiBfVW53aW5kX0JhY2t0cmFjZQotIGRvCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19mdW5jIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTQyMTg6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjE0MTU4OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0MjIzICJjb25maWd1cmUiCi0rI2xpbmUgMTQxNjMgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCi0gICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJGFjX2Z1bmMoKTsgYmVsb3cuICAqLwotQEAgLTE0MjQyLDcgKzE0MTgyLDcgQEAgJGFjX2Z1bmMoKTsKLSAKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDI0NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDE4NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBldmFsICJhY19jdl9mdW5jXyRhY19mdW5jPXllcyIKLSBlbHNlCi1AQCAtMTQzMzQsNyArMTQyNzQsNyBAQCBpZiB0ZXN0IC16ICIkU0tJUF9DT01QSUxFUl9DSEVDS1MiOyB0aGVuCi0gIyBDb21waWxlciBPcHRpb25zCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIC1waXBlIHN1cHBvcnQiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxNDMzODogY2hlY2tpbmcgZm9yIC1waXBlIHN1cHBvcnQiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDI3ODogY2hlY2tpbmcgZm9yIC1waXBlIHN1cHBvcnQiID4mNQotIGlmIHRlc3QgLW4gIiRHTlVfQ0MiIC1hIC1uICIkR05VX0NYWCI7IHRoZW4KLSAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtcGlwZSIKLSAgICAgQ1hYRkxBR1M9IiRDWFhGTEFHUyAtcGlwZSIKLUBAIC0xNDM0OCwxNiArMTQyODgsMTYgQEAgX1NBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgotIENGTEFHUz0iJENGTEFHUyAtZnByb2ZpbGUtZ2VuZXJhdGUgLWZwcm9maWxlLWNvcnJlY3Rpb24iCi0gCi0gZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBDIGNvbXBpbGVyIHN1cHBvcnRzIC1mcHJvZmlsZS1nZW5lcmF0ZSIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE0MzUyOiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgc3VwcG9ydHMgLWZwcm9maWxlLWdlbmVyYXRlIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTQyOTI6IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBzdXBwb3J0cyAtZnByb2ZpbGUtZ2VuZXJhdGUiID4mNQotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxNDM1NCAiY29uZmlndXJlIgotKyNsaW5lIDE0Mjk0ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gaW50IG1haW4oKSB7Ci0gcmV0dXJuIDA7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQzNjE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE0MzAxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICAgUFJPRklMRV9HRU5fQ0ZMQUdTPSItZnByb2ZpbGUtZ2VuZXJhdGUiCi0gICAgICAgICAgICAgICAgICByZXN1bHQ9InllcyIgCi1AQCAtMTQ0MjEsMTYgKzE0MzYxLDE2IEBAIGlmIHRlc3QgIiRfUEVEQU5USUMiOyB0aGVuCi0gICAgIF9TQVZFX0NYWEZMQUdTPSRDWFhGTEFHUwotICAgICBDWFhGTEFHUz0iJENYWEZMQUdTIC1wZWRhbnRpYyAke19XQVJOSU5HU19DWFhGTEFHU30gLVduby1sb25nLWxvbmciCi0gICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgQysrIGNvbXBpbGVyIGhhcyAtcGVkYW50aWMgbG9uZyBsb25nIGJ1ZyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE0NDI1OiBjaGVja2luZyB3aGV0aGVyIEMrKyBjb21waWxlciBoYXMgLXBlZGFudGljIGxvbmcgbG9uZyBidWciID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDM2NTogY2hlY2tpbmcgd2hldGhlciBDKysgY29tcGlsZXIgaGFzIC1wZWRhbnRpYyBsb25nIGxvbmcgYnVnIiA+JjUKLSAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0NDI3ICJjb25maWd1cmUiCi0rI2xpbmUgMTQzNjcgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAkY29uZmlndXJlX3N0YXRpY19hc3NlcnRfbWFjcm9zCi0gaW50IG1haW4oKSB7Ci0gQ09ORklHVVJFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGxvbmcgbG9uZykgPT0gOCkKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDQzNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQzNzQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIHJlc3VsdD0ibm8iCi0gZWxzZQotQEAgLTE0NDU3LDEyICsxNDM5NywxMiBAQCBmaQotIF9TQVZFX0NYWEZMQUdTPSRDWFhGTEFHUwotIENYWEZMQUdTPSIkQ1hYRkxBR1MgJHtfV0FSTklOR1NfQ1hYRkxBR1N9IgotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBjb3JyZWN0IG92ZXJsb2FkIHJlc29sdXRpb24gd2l0aCBjb25zdCBhbmQgdGVtcGxhdGVzIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTQ0NjE6IGNoZWNraW5nIGZvciBjb3JyZWN0IG92ZXJsb2FkIHJlc29sdXRpb24gd2l0aCBjb25zdCBhbmQgdGVtcGxhdGVzIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTQ0MDE6IGNoZWNraW5nIGZvciBjb3JyZWN0IG92ZXJsb2FkIHJlc29sdXRpb24gd2l0aCBjb25zdCBhbmQgdGVtcGxhdGVzIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfbnNjYXBfbm9uY29uc3Rfb3BlcV9idWcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTQ0NjYgImNvbmZpZ3VyZSIKLSsjbGluZSAxNDQwNiAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLUBAIC0xNDQ5Miw3ICsxNDQzMiw3IEBAIGludCBtYWluKCkgewotICAgICAgICAgICAgICAgICAgICAgCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ0OTY6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NDM2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19uc2NhcF9ub25jb25zdF9vcGVxX2J1Zz0ibm8iCi0gZWxzZQotQEAgLTE0NTE4LDE5ICsxNDQ1OCwxOSBAQCBFT0YKLSBmaQotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB0bV96b25lIHRtX2dtdG9mZiBpbiBzdHJ1Y3QgdG0iIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxNDUyMjogY2hlY2tpbmcgZm9yIHRtX3pvbmUgdG1fZ210b2ZmIGluIHN0cnVjdCB0bSIgPiY1Ci0rZWNobyAiY29uZmlndXJlOjE0NDYyOiBjaGVja2luZyBmb3IgdG1fem9uZSB0bV9nbXRvZmYgaW4gc3RydWN0IHRtIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3Zfc3RydWN0X3RtX3pvbmVfdG1fZ210b2ZmJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci0gZWxzZQotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0NTI3ICJjb25maWd1cmUiCi0rI2xpbmUgMTQ0NjcgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjaW5jbHVkZSA8dGltZS5oPgotIGludCBtYWluKCkgewotIHN0cnVjdCB0bSB0bTsgdG0udG1fem9uZSA9IDA7IHRtLnRtX2dtdG9mZiA9IDE7Ci0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ1MzQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NDc0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9zdHJ1Y3RfdG1fem9uZV90bV9nbXRvZmY9InllcyIKLSBlbHNlCi1AQCAtMTQ1NzIsMTggKzE0NTEyLDE4IEBAIGNyb3NzX2NvbXBpbGluZz0kYWNfY3ZfcHJvZ19jY19jcm9zcwotIAotIAotIGVjaG8gJGFjX24gImNoZWNraW5nIHdoYXQga2luZCBvZiBsaXN0IGZpbGVzIGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGxpbmtlciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE0NTc2OiBjaGVja2luZyB3aGF0IGtpbmQgb2YgbGlzdCBmaWxlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBsaW5rZXIiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDUxNjogY2hlY2tpbmcgd2hhdCBraW5kIG9mIGxpc3QgZmlsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbGlua2VyIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snRVhQQU5EX0xJQlNfTElTVF9TVFlMRScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGVjaG8gImludCBtYWluKCkge3JldHVybiAwO30iID4gY29uZnRlc3QuJHthY19leHR9Ci0tICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3QuJHtPQkpfU1VGRklYfSAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4ke2FjX2V4dH0gMT4mNSc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ1ODE6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9ICYmIHRlc3QgLXMgY29uZnRlc3QuJHtPQkpfU1VGRklYfTsgdGhlbgotKyAgICAgaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0LiR7T0JKX1NVRkZJWH0gLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJHthY19leHR9IDE+JjUnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NTIxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LiR7T0JKX1NVRkZJWH07IHRoZW4KLSAgICAgICAgICBlY2hvICJJTlBVVChjb25mdGVzdC4ke09CSl9TVUZGSVh9KSIgPiBjb25mdGVzdC5saXN0Ci0tICAgICAgICAgaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1vIGNvbmZ0ZXN0JHthY19leGVleHR9ICRMREZMQUdTIGNvbmZ0ZXN0Lmxpc3QgJExJQlMgMT4mNSc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ1ODM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSsgICAgICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJExERkxBR1MgY29uZnRlc3QubGlzdCAkTElCUyAxPiY1JzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDUyMzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgICAgICAgICAgICBFWFBBTkRfTElCU19MSVNUX1NUWUxFPWxpbmtlcnNjcmlwdAotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgZWNobyAiY29uZnRlc3QuJHtPQkpfU1VGRklYfSIgPiBjb25mdGVzdC5saXN0Ci0tICAgICAgICAgICAgIGlmIHsgYWNfdHJ5PScke0NDLWNjfSAtbyBjb25mdGVzdCR7YWNfZXhlZXh0fSAkTERGTEFHUyBAY29uZnRlc3QubGlzdCAkTElCUyAxPiY1JzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDU4NzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotKyAgICAgICAgICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gLW8gY29uZnRlc3Qke2FjX2V4ZWV4dH0gJExERkxBR1MgQGNvbmZ0ZXN0Lmxpc3QgJExJQlMgMT4mNSc7IHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ1Mjc6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgICAgICAgICAgICAgICAgIEVYUEFORF9MSUJTX0xJU1RfU1RZTEU9bGlzdAotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICBFWFBBTkRfTElCU19MSVNUX1NUWUxFPW5vbmUKLUBAIC0xNDYwMyw3ICsxNDU0Myw3IEBAIExJQlNfREVTQ19TVUZGSVg9ZGVzYwotIAotIGlmIHRlc3QgIiRHQ0NfVVNFX0dOVV9MRCI7IHRoZW4KLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hhdCBraW5kIG9mIG9yZGVyaW5nIGNhbiBiZSBkb25lIHdpdGggdGhlIGxpbmtlciIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE0NjA3OiBjaGVja2luZyB3aGF0IGtpbmQgb2Ygb3JkZXJpbmcgY2FuIGJlIGRvbmUgd2l0aCB0aGUgbGlua2VyIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTQ1NDc6IGNoZWNraW5nIHdoYXQga2luZCBvZiBvcmRlcmluZyBjYW4gYmUgZG9uZSB3aXRoIHRoZSBsaW5rZXIiID4mNQotIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydFWFBBTkRfTElCU19PUkRFUl9TVFlMRScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLUBAIC0xNDYxMSwxNCArMTQ1NTEsMTQgQEAgZWxzZQotICAgICAgICAgIF9TQVZFX0xERkxBR1M9IiRMREZMQUdTIgotICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30gLVdsLC0tc2VjdGlvbi1vcmRlcmluZy1maWxlLGNvbmZ0ZXN0Lm9yZGVyIgotICAgICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxNDYxNSAiY29uZmlndXJlIgotKyNsaW5lIDE0NTU1ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gaW50IG1haW4oKSB7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ2MjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ1NjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgRVhQQU5EX0xJQlNfT1JERVJfU1RZTEU9c2VjdGlvbi1vcmRlcmluZy1maWxlCi0gZWxzZQotQEAgLTE0NjMwLDcgKzE0NTcwLDcgQEAgZmkKLSBybSAtZiBjb25mdGVzdCoKLSAgICAgICAgICBMREZMQUdTPSIkX1NBVkVfTERGTEFHUyIKLSAgICAgICAgICBpZiB0ZXN0IC16ICIkRVhQQU5EX0xJQlNfT1JERVJfU1RZTEUiOyB0aGVuCi0tICAgICAgICAgICAgIGlmIHsgYWNfdHJ5PScke0NDLWNjfSAke0RTT19MRE9QVFN9ICR7TERGTEFHU30gLW8gJHtETExfUFJFRklYfWNvbmZ0ZXN0JHtETExfU1VGRklYfSAtV2wnOyB7IChldmFsIGVjaG8gY29uZmlndXJlOjE0NjM0OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfTsgfTsgdGhlbgotKyAgICAgICAgICAgICBpZiB7IGFjX3RyeT0nJHtDQy1jY30gJHtEU09fTERPUFRTfSAke0xERkxBR1N9IC1vICR7RExMX1BSRUZJWH1jb25mdGVzdCR7RExMX1NVRkZJWH0gLVdsJzsgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDU3NDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH07IH07IHRoZW4KLSAgICAgICAgICAgICAgICAgIEVYUEFORF9MSUJTX09SREVSX1NUWUxFPWxpbmtlcnNjcmlwdAotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICBFWFBBTkRfTElCU19PUkRFUl9TVFlMRT1ub25lCi1AQCAtMTQ3NDEsNyArMTQ2ODEsNyBAQCBlc2FjCi0gaWYgdGVzdCAteiAiJFNLSVBfTElCUkFSWV9DSEVDS1MiIC1hIC16ICIkTk9fRURJVExJTkUiOyB0aGVuCi0gICBpZiB0ZXN0IC1uICIkSlNfV0FOVF9SRUFETElORSI7IHRoZW4KLSAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lIGluIC1scmVhZGxpbmUiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxNDc0NTogY2hlY2tpbmcgZm9yIHJlYWRsaW5lIGluIC1scmVhZGxpbmUiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDY4NTogY2hlY2tpbmcgZm9yIHJlYWRsaW5lIGluIC1scmVhZGxpbmUiID4mNQotIGFjX2xpYl92YXI9YGVjaG8gcmVhZGxpbmUnXydyZWFkbGluZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KLSAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2Ci1AQCAtMTQ3NDksNyArMTQ2ODksNyBAQCBlbHNlCi0gICBhY19zYXZlX0xJQlM9IiRMSUJTIgotIExJQlM9Ii1scmVhZGxpbmUgICRMSUJTIgotIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxNDc1MyAiY29uZmlndXJlIgotKyNsaW5lIDE0NjkzICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KLSAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCi1AQCAtMTQ3NjAsNyArMTQ3MDAsNyBAQCBpbnQgbWFpbigpIHsKLSByZWFkbGluZSgpCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ3NjQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTQ3MDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKLSBlbHNlCi1AQCAtMTQ5OTAsOSArMTQ5MzAsOSBAQCBFT0YKLSAKLSAKLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcG9zaXhfZmFsbG9jYXRlIiIuLi4gJGFjX2MiIDE+JjYKLS1lY2hvICJjb25maWd1cmU6MTQ5OTQ6IGNoZWNraW5nIGZvciBwb3NpeF9mYWxsb2NhdGUiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNDkzNDogY2hlY2tpbmcgZm9yIHBvc2l4X2ZhbGxvY2F0ZSIgPiY1Ci0gY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE0OTk2ICJjb25maWd1cmUiCi0rI2xpbmUgMTQ5MzYgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwCi0gICAjaW5jbHVkZSA8ZmNudGwuaD4KLUBAIC0xNTAwMCw3ICsxNDk0MCw3IEBAIGludCBtYWluKCkgewotIHBvc2l4X2ZhbGxvY2F0ZSgwLCAwLCAwKTsKLSA7IHJldHVybiAwOyB9Ci0gRU9GCi0taWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNTAwNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDk0NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gICBybSAtcmYgY29uZnRlc3QqCi0gICBhY19jdl9fX3Bvc2l4X2ZhbGxvY2F0ZT10cnVlCi0gZWxzZQotQEAgLTE1MDI5LDcgKzE0OTY5LDcgQEAgaWYgdGVzdCAiJE1PWl9YMTEiOyB0aGVuCi0gICAgICAgICAgICAgICAgIF9TQVZFX0NGTEFHUz0kQ0ZMQUdTCi0gICAgIENGTEFHUz0iJENGTEFHUyAkWENGTEFHUyIKLSAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotLSNsaW5lIDE1MDMzICJjb25maWd1cmUiCi0rI2xpbmUgMTQ5NzMgImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTE1MDQ3LDcgKzE0OTg3LDcgQEAgaW50IG1haW4oKSB7Ci0gICAgIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MDUxOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCi0raWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNDk5MTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgotICAgOgotIGVsc2UKLSAgIGVjaG8gImNvbmZpZ3VyZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Ci1AQCAtMTUxNjIsMTIgKzE1MTAyLDEyIEBAIGZpCi0gZm9yIGFjX2Z1bmMgaW4gc2V0bG9jYWxlCi0gZG8KLSBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotLWVjaG8gImNvbmZpZ3VyZToxNTE2NjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLStlY2hvICJjb25maWd1cmU6MTUxMDY6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1Ci0gaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgotICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKLSBlbHNlCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0tI2xpbmUgMTUxNzEgImNvbmZpZ3VyZSIKLSsjbGluZSAxNTExMSAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKLSAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCi1AQCAtMTUxOTAsNyArMTUxMzAsNyBAQCAkYWNfZnVuYygpOwotIAotIDsgcmV0dXJuIDA7IH0KLSBFT0YKLS1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MTk0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLStpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjE1MTM0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAgIHJtIC1yZiBjb25mdGVzdCoKLSAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgotIGVsc2UKLUBAIC0xNTIyMCwxMiArMTUxNjAsMTIgQEAgZG9uZQotIGZvciBhY19mdW5jIGluIGxvY2FsZWNvbnYKLSBkbwotIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci0tZWNobyAiY29uZmlndXJlOjE1MjI0OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQotK2VjaG8gImNvbmZpZ3VyZToxNTE2NDogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKLSBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY18kYWNfZnVuYycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCi0gICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgotIGVsc2UKLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLS0jbGluZSAxNTIyOSAiY29uZmlndXJlIgotKyNsaW5lIDE1MTY5ICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAotICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KLUBAIC0xNTI0OCw3ICsxNTE4OCw3IEBAICRhY19mdW5jKCk7Ci0gCi0gOyByZXR1cm4gMDsgfQotIEVPRgotLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTUyNTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTUxOTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotICAgcm0gLXJmIGNvbmZ0ZXN0KgotICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCi0gZWxzZQotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1Nb3ZlLUpTX0JZVEVTX1BFUl9XT1JELW91dC1vZi1jb25maWcuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLU1vdmUtSlNfQllURVNfUEVSX1dPUkQtb3V0LW9mLWNvbmZpZy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWViMmY2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLU1vdmUtSlNfQllURVNfUEVSX1dPUkQtb3V0LW9mLWNvbmZpZy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSBkNGExNWFkODIyOTJmZjZkNzcyZGNjNjMxZGY5ODc1NGQyMGJlMzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ29saW4gV2FsdGVycyA8d2FsdGVyc0B2ZXJidW0ub3JnPgotRGF0ZTogVHVlLCAxOCBNYXIgMjAxNCAxMTo0NjowNSAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvNV0gTW92ZSBKU19CWVRFU19QRVJfV09SRCBvdXQgb2YgY29uZmlnLmgKLQotSW5zdGVhZCBkZWZpbmUgaXQgaW4gdGVybXMgb2YgdGhlIGFscmVhZHkgZXh0YW50IEdOVSBDIGV4dGVuc2lvbgotX19TSVpFT0ZfUE9JTlRFUl9fLiAgVGhpcyBhdm9pZHMgbXVsdGlhcmNoIGNvbmZsaWN0cyB3aGVuIDMyIGFuZCA2NAotYml0IHBhY2thZ2VzIG9mIGpzIGFyZSBjby1pbnN0YWxsZWQuCi0tLS0KLQotVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi0KLSBqcy9zcmMvY29uZmlndXJlLmluICAgfCAgOSAtLS0tLS0tLS0KLSBqcy9zcmMvanMtY29uZmlnLmguaW4gfCAgMSAtCi0ganMvc3JjL2pzdHlwZXMuaCAgICAgIHwgMTIgKysrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2pzL3NyYy9jb25maWd1cmUuaW4gYi9qcy9zcmMvY29uZmlndXJlLmluCi1pbmRleCAxNTYwNWIyLi42NGM3NjA2IDEwMDY0NAotLS0tIGEvanMvc3JjL2NvbmZpZ3VyZS5pbgotKysrIGIvanMvc3JjL2NvbmZpZ3VyZS5pbgotQEAgLTIzNDUsMTUgKzIzNDUsNiBAQCBlbHNlCi0gICBBQ19NU0dfUkVTVUxUKG5vKQotIGZpCi0gCi0tTU9aX1NJWkVfT0ZfVFlQRShKU19CWVRFU19QRVJfV09SRCwgdm9pZCosIDQgOCkKLS1pZiB0ZXN0ICIkbW96X2N2X3NpemVfb2ZfSlNfQllURVNfUEVSX1dPUkQiIC1lcSAiNCI7IHRoZW4KLS0gIEFDX0RFRklORShKU19CSVRTX1BFUl9XT1JEX0xPRzIsIDUpCi0tZWxpZiB0ZXN0ICIkbW96X2N2X3NpemVfb2ZfSlNfQllURVNfUEVSX1dPUkQiIC1lcSAiOCI7IHRoZW4KLS0gIEFDX0RFRklORShKU19CSVRTX1BFUl9XT1JEX0xPRzIsIDYpCi0tZWxzZQotLSAgQUNfTVNHX0VSUk9SKFtVbmV4cGVjdGVkIEpTX0JZVEVTX1BFUl9XT1JEXSkKLS1maQotLQotIE1PWl9BTElHTl9PRl9UWVBFKEpTX0FMSUdOX09GX1BPSU5URVIsIHZvaWQqLCAyIDQgOCAxNikKLSBNT1pfU0laRV9PRl9UWVBFKEpTX0JZVEVTX1BFUl9ET1VCTEUsIGRvdWJsZSwgNiA4IDEwIDEyIDE0KQotIAotZGlmZiAtLWdpdCBhL2pzL3NyYy9qcy1jb25maWcuaC5pbiBiL2pzL3NyYy9qcy1jb25maWcuaC5pbgotaW5kZXggNjg4OWUwMC4uNDc3NTQyMCAxMDA2NDQKLS0tLSBhL2pzL3NyYy9qcy1jb25maWcuaC5pbgotKysrIGIvanMvc3JjL2pzLWNvbmZpZy5oLmluCi1AQCAtNTYsNyArNTYsNiBAQAotICN1bmRlZiBKU19JTlQzMl9UWVBFCi0gI3VuZGVmIEpTX0lOVDY0X1RZUEUKLSAjdW5kZWYgSlNfSU5UUFRSX1RZUEUKLS0jdW5kZWYgSlNfQllURVNfUEVSX1dPUkQKLSAKLSAvKiBTb21lIG1vemlsbGEgY29kZSB1c2VzIEpTLWZyaWVuZCBBUElzIHRoYXQgZGVwZW5kIG9uIEpTX01FVEhPREpJVCBiZWluZwotICAgIGNvcnJlY3QuICovCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2pzdHlwZXMuaCBiL2pzL3NyYy9qc3R5cGVzLmgKLWluZGV4IGQwY2YxODMuLjNlNzkyOGYgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvanN0eXBlcy5oCi0rKysgYi9qcy9zcmMvanN0eXBlcy5oCi1AQCAtMjQsNiArMjQsMTggQEAKLSAjaW5jbHVkZSAibW96aWxsYS9VdGlsLmgiCi0gCi0gI2luY2x1ZGUgImpzLWNvbmZpZy5oIgotKyNpZm5kZWYgSlNfQllURVNfUEVSX1dPUkQKLSsjZGVmaW5lIEpTX0JZVEVTX1BFUl9XT1JEIF9fU0laRU9GX1BPSU5URVJfXwotKyNlbmRpZgotKyNpZm5kZWYgSlNfQklUU19QRVJfV09SRF9MT0cyCi0rI2lmIEpTX0JZVEVTX1BFUl9XT1JEID09IDgKLSsjZGVmaW5lIEpTX0JJVFNfUEVSX1dPUkRfTE9HMiA2Ci0rI2VsaWYgSlNfQllURVNfUEVSX1dPUkQgPT0gNAotKyNkZWZpbmUgSlNfQklUU19QRVJfV09SRF9MT0cyIDUKLSsjZWxzZQotKyNlcnJvciBVbmhhbmRsZWQgSlNfQllURVNfUEVSX1dPUkQKLSsjZW5kaWYgCi0rI2VuZGlmCi0gCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiogTUFDUk9TOiAgICAgIEpTX0VYVEVSTl9BUEkKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDItZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1maXgtY2Fubm90LWZpbmQtbGluay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjdlYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDItZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBlNmRjZWU1ZjhhMGY4MGNlOTk5NDZiODFmYTEyMzM2MTFhMTQ5ZmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBKdWwgMjAxOCAxODowMDo1MiArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNV0gZml4IGNhbm5vdCBmaW5kIGxpbmsKKworLi4KK3xERUJVRzogbGluazogVHJ5aW5nICdtaXBzNjQtd3JzLWxpbnV4LWxkIC0tc3lzcm9vdD10bXAtZ2xpYmMvd29yay8KK21pcHM2NC13cnMtbGludXgvbW96anMvNTIuOC4xLXIwL3JlY2lwZS1zeXNyb290ICcKK3xFUlJPUjogQ2Fubm90IGZpbmQgbGluaworLi4uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJ1aWxkL21vei5jb25maWd1cmUvY2hlY2tzLmNvbmZpZ3VyZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvY2hlY2tzLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvY2hlY2tzLmNvbmZpZ3VyZQoraW5kZXggOGMyZGJjMC4uODNiZmZjMyAxMDA2NDQKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvY2hlY2tzLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9jaGVja3MuY29uZmlndXJlCitAQCAtMTI4LDcgKzEyOCw3IEBAIGRlZiBjaGVja19wcm9nKHZhciwgcHJvZ3MsIHdoYXQ9Tm9uZSwgaW5wdXQ9Tm9uZSwgYWxsb3dfbWlzc2luZz1GYWxzZSwKKyAKKyAgICAgICAgIGZvciBwcm9nIGluIHZhbHVlIG9yIHByb2dzOgorICAgICAgICAgICAgIGxvZy5kZWJ1ZygnJXM6IFRyeWluZyAlcycsIHZhci5sb3dlcigpLCBxdW90ZShwcm9nKSkKKy0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3Byb2dyYW0ocHJvZywgcGF0aHMpCisrICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9wcm9ncmFtKHByb2cuc3BsaXQoKVswXSwgcGF0aHMpCisgICAgICAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAzLUFkZC1BQXJjaDY0LXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMy1BZGQtQUFyY2g2NC1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTcyNDI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAzLUFkZC1BQXJjaDY0LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1Gcm9tIDE1ZTcxMGUzMzFkMzZlYjI3OTg1MmI1Y2QxYmEzN2E5YTYwMDUyMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDE5OjA4OjIyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSBBZGQgQUFyY2g2NCBzdXBwb3J0Ci0KLS0tLQotVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi0KLSBqcy9zcmMvYXNzZW1ibGVyL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggfCA2ICsrKysrKwotIGpzL3NyYy9hc3NlbWJsZXIvd3RmL1BsYXRmb3JtLmggICAgICAgICAgICB8IDQgKysrKwotIGpzL3NyYy9jb25maWd1cmUuaW4gICAgICAgICAgICAgICAgICAgICAgICB8IDQgKysrKwotIG1mYnQvZG91YmxlLWNvbnZlcnNpb24vdXRpbHMuaCAgICAgICAgICAgICB8IDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2Fzc2VtYmxlci9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIGIvanMvc3JjL2Fzc2VtYmxlci9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCi1pbmRleCBjMDcxYzMzLi45MDc2NGMzIDEwMDY0NAotLS0tIGEvanMvc3JjL2Fzc2VtYmxlci9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCi0rKysgYi9qcy9zcmMvYXNzZW1ibGVyL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKLUBAIC0zODIsNiArMzgyLDEyIEBAIHB1YmxpYzoKLSAgICAgewotICAgICAgICAgcmVwcm90ZWN0UmVnaW9uKHN0YXJ0LCBzaXplLCBFeGVjdXRhYmxlKTsKLSAgICAgfQotKyNlbGlmIFdURl9DUFVfQUFSQ0g2NCAmJiBXVEZfUExBVEZPUk1fTElOVVgKLSsgICAgc3RhdGljIHZvaWQgY2FjaGVGbHVzaCh2b2lkKiBjb2RlLCBzaXplX3Qgc2l6ZSkKLSsgICAgewotKyAgICAgICAgaW50cHRyX3QgZW5kID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkgKyBzaXplOwotKyAgICAgICAgX19idWlsdGluX19fY2xlYXJfY2FjaGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29kZSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGVuZCkpOwotKyAgICB9Ci0gI2Vsc2UKLSAgICAgc3RhdGljIHZvaWQgbWFrZVdyaXRhYmxlKHZvaWQqLCBzaXplX3QpIHt9Ci0gICAgIHN0YXRpYyB2b2lkIG1ha2VFeGVjdXRhYmxlKHZvaWQqLCBzaXplX3QpIHt9Ci1kaWZmIC0tZ2l0IGEvanMvc3JjL2Fzc2VtYmxlci93dGYvUGxhdGZvcm0uaCBiL2pzL3NyYy9hc3NlbWJsZXIvd3RmL1BsYXRmb3JtLmgKLWluZGV4IDBjODQ4OTYuLmU4NzYzYTcgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvYXNzZW1ibGVyL3d0Zi9QbGF0Zm9ybS5oCi0rKysgYi9qcy9zcmMvYXNzZW1ibGVyL3d0Zi9QbGF0Zm9ybS5oCi1AQCAtMzI1LDYgKzMyNSwxMCBAQAotICNkZWZpbmUgV1RGX1RIVU1CX0FSQ0hfVkVSU0lPTiAwCi0gI2VuZGlmCi0gCi0rLyogQ1BVKEFBcmNoNjQpIC0gNjQtYml0IEFSTSAqLwotKyNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNkZWZpbmUgV1RGX0NQVV9BQVJDSDY0IDEKLSsjZW5kaWYKLSAKLSAvKiBXVEZfQ1BVX0FSTVY1X09SX0xPV0VSIC0gQVJNIGluc3RydWN0aW9uIHNldCB2NSBvciBlYXJsaWVyICovCi0gLyogT24gQVJNdjUgYW5kIGJlbG93IHRoZSBuYXR1cmFsIGFsaWdubWVudCBpcyByZXF1aXJlZC4gCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2NvbmZpZ3VyZS5pbiBiL2pzL3NyYy9jb25maWd1cmUuaW4KLWluZGV4IDY0Yzc2MDYuLjA2NzNhY2EgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvY29uZmlndXJlLmluCi0rKysgYi9qcy9zcmMvY29uZmlndXJlLmluCi1AQCAtMTEyMSw2ICsxMTIxLDEwIEBAIGFybSopCi0gICAgIENQVV9BUkNIPWFybQotICAgICA7OwotIAotK2FhcmNoNjQpCi0rICAgIENQVV9BUkNIPWFhcmNoNjQKLSsgICAgOzsKLSsKLSBtaXBzfG1pcHNlbCkKLSAgICAgQ1BVX0FSQ0g9Im1pcHMiCi0gICAgIDs7Ci1kaWZmIC0tZ2l0IGEvbWZidC9kb3VibGUtY29udmVyc2lvbi91dGlscy5oIGIvbWZidC9kb3VibGUtY29udmVyc2lvbi91dGlscy5oCi1pbmRleCAwZWVjMmQ5Li5mZTI2ZGFiIDEwMDY0NAotLS0tIGEvbWZidC9kb3VibGUtY29udmVyc2lvbi91dGlscy5oCi0rKysgYi9tZmJ0L2RvdWJsZS1jb252ZXJzaW9uL3V0aWxzLmgKLUBAIC01OCw2ICs1OCw3IEBACi0gICAgIGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFwKLSAgICAgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19zcGFyYykgfHwgZGVmaW5lZChfX3MzOTBfXykgfHwgXAotICAgICBkZWZpbmVkKF9fU0g0X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBcCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLSAgICAgZGVmaW5lZChfTUlQU19BUkNIX01JUFMzMlIyKQotICNkZWZpbmUgRE9VQkxFX0NPTlZFUlNJT05fQ09SUkVDVF9ET1VCTEVfT1BFUkFUSU9OUyAxCi0gI2VsaWYgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTM4NikKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMy13b3JrYXJvdW5kLWF1dG9jb25mLTIuMTMtZGV0ZWN0aW9uLWZhaWxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzU0ZmYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2NDZhNzgyNjJiMThlMTk3MjFjZDQxZWU1MTUyMTUyMjFkZDI0MWI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBKdWwgMjAxOCAxODoxMjo0MiArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNV0gd29ya2Fyb3VuZCAgYXV0b2NvbmYgMi4xMyBkZXRlY3Rpb24gZmFpbGVkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJ1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQoraW5kZXggYjMyYzNmNy4uZWNlNDdmNCAxMDA2NDQKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlCitAQCAtMzEsNyArMzEsNyBAQCBkZWYgYXV0b2NvbmYobW96Y29uZmlnLCBhdXRvY29uZik6CisgICAgIGF1dG9jb25mID0gYXV0b2NvbmZbMF0gaWYgYXV0b2NvbmYgZWxzZSBOb25lCisgCisgICAgIGZvciBhYyBpbiAobW96Y29uZmlnX2F1dG9jb25mLCBhdXRvY29uZiwgJ2F1dG9jb25mLTIuMTMnLCAnYXV0b2NvbmYyLjEzJywKKy0gICAgICAgICAgICAgICAnYXV0b2NvbmYyMTMnKToKKysgICAgICAgICAgICAgICAnYXV0b2NvbmYyMTMnLCAnYXV0b2NvbmYnKToKKyAgICAgICAgIGlmIGFjOgorICAgICAgICAgICAgIGF1dG9jb25mID0gZmluZF9wcm9ncmFtKGFjKQorICAgICAgICAgICAgIGlmIGF1dG9jb25mOgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNC1kby1ub3QtdXNlLWF1dG9jb25mLTIuMTMtdG8tcmVmcmVzaC1vbGQuY29uZmlndXJlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2JhNzljCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGE0NmFkYjc0YjViYTVlMTdkNjc2ZDMxZDcwZmFjYTc2YzEzODFkMTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEyIEp1bCAyMDE4IDIxOjI1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBkbyBub3QgdXNlIGF1dG9jb25mIDIuMTMgdG8gcmVmcmVzaCBvbGQuY29uZmlndXJlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJ1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSB8IDIgKy0KKyBqcy9zcmMvb2xkLWNvbmZpZ3VyZSAgICAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUKK2luZGV4IGVjZTQ3ZjQuLmE3MzkwMGYgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQorQEAgLTgzLDcgKzgzLDcgQEAgZGVmIHByZXBhcmVfY29uZmlndXJlKG9sZF9jb25maWd1cmUsIG1vemNvbmZpZywgYXV0b2NvbmYsIGJ1aWxkX2Vudiwgc2hlbGwsCisgICAgICAgICAgICAgb2xkX2NvbmZpZ3VyZSA9IG9zLnBhdGguam9pbihvbGRfY29uZmlndXJlX2RpciwgJ2pzJywgJ3NyYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKG9sZF9jb25maWd1cmUpKQorIAorLSAgICByZWZyZXNoID0gVHJ1ZQorKyAgICByZWZyZXNoID0gRmFsc2UKKyAgICAgaWYgZXhpc3RzKG9sZF9jb25maWd1cmUpOgorICAgICAgICAgbXRpbWUgPSBnZXRtdGltZShvbGRfY29uZmlndXJlKQorICAgICAgICAgYWNsb2NhbCA9IG9zLnBhdGguam9pbihidWlsZF9lbnYudG9wc3JjZGlyLCAnYnVpbGQnLCAnYXV0b2NvbmYnLAorZGlmZiAtLWdpdCBhL2pzL3NyYy9vbGQtY29uZmlndXJlIGIvanMvc3JjL29sZC1jb25maWd1cmUKK2luZGV4IDc1YjAwZTEuLjhhOGVmNTIgMTAwNjQ0CistLS0gYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZQorKysrIGIvanMvc3JjL29sZC1jb25maWd1cmUKK0BAIC02MTksNyArNjE5LDcgQEAgaWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KKyAgIGFjX3Byb2c9JDAKKyAgIGFjX2NvbmZkaXI9YGVjaG8gJGFjX3Byb2d8c2VkICdzJS9bXi9dW14vXSokJSUnYAorICAgdGVzdCAieCRhY19jb25mZGlyIiA9ICJ4JGFjX3Byb2ciICYmIGFjX2NvbmZkaXI9LgorLSAgc3JjZGlyPSRhY19jb25mZGlyCisrICBzcmNkaXI9IiRhY19jb25mZGlyLy4uLy4uLyIKKyAgIGlmIHRlc3QgISAtciAkc3JjZGlyLyRhY191bmlxdWVfZmlsZTsgdGhlbgorICAgICBzcmNkaXI9Li4KKyAgIGZpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LW1vemJ1Zzc0NjExMi1uby1kZWNvbW1pdC1vbi1sYXJnZS1wYWdlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LW1vemJ1Zzc0NjExMi1uby1kZWNvbW1pdC1vbi1sYXJnZS1wYWdlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJkMzVkNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNC1tb3pidWc3NDYxMTItbm8tZGVjb21taXQtb24tbGFyZ2UtcGFnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotRnJvbSAwMTI4YzVhOWVlZWUwZDNmYzBkZWI5MTI5ZGQyMGViNzkzMzhjOGY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAxOTowODo1OSArMDgwMAotU3ViamVjdDogW1BBVENIIDQvNV0gbW96YnVnNzQ2MTEyLW5vLWRlY29tbWl0LW9uLWxhcmdlLXBhZ2VzCi0KLS0tLQotVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi0KLSBqcy9zcmMvZ2MvSGVhcC5oIHwgMTUgKysrKysrKysrKy0tLS0tCi0ganMvc3JjL2pzZ2MuY3BwICB8IDE1ICsrKysrKysrKysrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2pzL3NyYy9nYy9IZWFwLmggYi9qcy9zcmMvZ2MvSGVhcC5oCi1pbmRleCBiOGY4Yzc4Li4xY2ZkMjY5IDEwMDY0NAotLS0tIGEvanMvc3JjL2djL0hlYXAuaAotKysrIGIvanMvc3JjL2djL0hlYXAuaAotQEAgLTEwMywyNiArMTAzLDMxIEBAIHN0cnVjdCBDZWxsCi0gfTsKLSAKLSAvKgotLSAqIFBhZ2Ugc2l6ZSBpcyA0MDk2IGJ5IGRlZmF1bHQsIGV4Y2VwdCBmb3IgU1BBUkMsIHdoZXJlIGl0IGlzIDgxOTIuCi0rICogUGFnZSBzaXplIG11c3QgYmUgc3RhdGljIHRvIHN1cHBvcnQgb3VyIGFyZW5hIHBvaW50ZXIgb3B0aW1pemF0aW9ucywgc28gd2UKLSsgKiBhcmUgZm9yY2VkIHRvIHN1cHBvcnQgZWFjaCBwbGF0Zm9ybSB3aXRoIG5vbi00MDk2IHBhZ2VzIGFzIGEgc3BlY2lhbCBjYXNlLgotKyAqIE5vdGU6IFRoZSBmcmVlbGlzdCBzdXBwb3J0cyBhIG1heGltdW0gYXJlbmEgc2hpZnQgb2YgMTUuCi0gICogTm90ZTogRG8gbm90IHVzZSBKU19DUFVfU1BBUkMgaGVyZSwgdGhpcyBoZWFkZXIgaXMgdXNlZCBvdXRzaWRlIEpTLgotICAqIEJ1ZyA2OTIyNjc6IE1vdmUgcGFnZSBzaXplIGRlZmluaXRpb24gdG8gZ2MvTWVtb3J5LmggYW5kIGluY2x1ZGUgaXQKLSAgKiAgICAgICAgICAgICBkaXJlY3RseSBvbmNlIGpzZ2MuaCBpcyBubyBsb25nZXIgYW4gaW5zdGFsbGVkIGhlYWRlci4KLSAgKi8KLSAjaWYgZGVmaW5lZChTT0xBUklTKSAmJiAoZGVmaW5lZChfX3NwYXJjKSB8fCBkZWZpbmVkKF9fc3BhcmN2OSkpCi0gY29uc3Qgc2l6ZV90IFBhZ2VTaGlmdCA9IDEzOwotK2NvbnN0IHNpemVfdCBBcmVuYVNoaWZ0ID0gUGFnZVNoaWZ0OwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rY29uc3Qgc2l6ZV90IFBhZ2VTaGlmdCA9IDE2OwotK2NvbnN0IHNpemVfdCBBcmVuYVNoaWZ0ID0gMTI7Ci0gI2Vsc2UKLSBjb25zdCBzaXplX3QgUGFnZVNoaWZ0ID0gMTI7Ci0rY29uc3Qgc2l6ZV90IEFyZW5hU2hpZnQgPSBQYWdlU2hpZnQ7Ci0gI2VuZGlmCi0gY29uc3Qgc2l6ZV90IFBhZ2VTaXplID0gc2l6ZV90KDEpIDw8IFBhZ2VTaGlmdDsKLStjb25zdCBzaXplX3QgQXJlbmFTaXplID0gc2l6ZV90KDEpIDw8IEFyZW5hU2hpZnQ7Ci0rY29uc3Qgc2l6ZV90IEFyZW5hTWFzayA9IEFyZW5hU2l6ZSAtIDE7Ci0gCi0gY29uc3Qgc2l6ZV90IENodW5rU2hpZnQgPSAyMDsKLSBjb25zdCBzaXplX3QgQ2h1bmtTaXplID0gc2l6ZV90KDEpIDw8IENodW5rU2hpZnQ7Ci0gY29uc3Qgc2l6ZV90IENodW5rTWFzayA9IENodW5rU2l6ZSAtIDE7Ci0gCi0tY29uc3Qgc2l6ZV90IEFyZW5hU2hpZnQgPSBQYWdlU2hpZnQ7Ci0tY29uc3Qgc2l6ZV90IEFyZW5hU2l6ZSA9IFBhZ2VTaXplOwotLWNvbnN0IHNpemVfdCBBcmVuYU1hc2sgPSBBcmVuYVNpemUgLSAxOwotLQotIC8qCi0gICogVGhpcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYXJlbmFzIHdlIGFsbG93IGluIHRoZSBGcmVlQ29tbWl0dGVkIHN0YXRlCi0gICogYmVmb3JlIHdlIHRyaWdnZXIgYSBHQ19TSFJJTksgdG8gcmVsZWFzZSBmcmVlIGFyZW5hcyB0byB0aGUgT1MuCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2pzZ2MuY3BwIGIvanMvc3JjL2pzZ2MuY3BwCi1pbmRleCBiM2NhZjA1Li5hMjU4ZDJkIDEwMDY0NAotLS0tIGEvanMvc3JjL2pzZ2MuY3BwCi0rKysgYi9qcy9zcmMvanNnYy5jcHAKLUBAIC0yNTEsNiArMjUxLDEzIEBAIHN0YXRpYyBjb25zdCBpbnQgQmFja2dyb3VuZFBoYXNlTGVuZ3RoW10gPSB7Ci0gICAgIHNpemVvZihCYWNrZ3JvdW5kUGhhc2VTdHJpbmdzKSAvIHNpemVvZihBbGxvY0tpbmQpCi0gfTsKLSAKLSsvKiBVbnVzZWQgbWVtb3J5IGRlY29tbWl0aW5nIHJlcXVpcmVzIHRoZSBhcmVuYSBzaXplIG1hdGNoIHRoZSBwYWdlIHNpemUuICovCi0rc3RhdGljIGJvb2wKLStEZWNvbW1pdEVuYWJsZWQoKQotK3sKLSsgICAgcmV0dXJuIFBhZ2VTaXplID09IEFyZW5hU2l6ZTsKLSt9Ci0rCi0gI2lmZGVmIERFQlVHCi0gdm9pZAotIEFyZW5hSGVhZGVyOjpjaGVja1N5bmNocm9uaXplZFdpdGhGcmVlTGlzdCgpIGNvbnN0Ci1AQCAtNzQyLDcgKzc0OSw4IEBAIENodW5rOjpmZXRjaE5leHREZWNvbW1pdHRlZEFyZW5hKCkKLSAgICAgZGVjb21taXR0ZWRBcmVuYXMudW5zZXQob2Zmc2V0KTsKLSAKLSAgICAgQXJlbmEgKmFyZW5hID0gJmFyZW5hc1tvZmZzZXRdOwotLSAgICBNYXJrUGFnZXNJblVzZShhcmVuYSwgQXJlbmFTaXplKTsKLSsgICAgaWYgKERlY29tbWl0RW5hYmxlZCgpKQotKyAgICAgICAgTWFya1BhZ2VzSW5Vc2UoYXJlbmEsIEFyZW5hU2l6ZSk7Ci0gICAgIGFyZW5hLT5haGVhZGVyLnNldEFzTm90QWxsb2NhdGVkKCk7Ci0gCi0gICAgIHJldHVybiAmYXJlbmEtPmFoZWFkZXI7Ci1AQCAtMjczMSw3ICsyNzM5LDcgQEAgRGVjb21taXRBcmVuYXNGcm9tQXZhaWxhYmxlTGlzdChKU1J1bnRpbWUgKnJ0LCBDaHVuayAqKmF2YWlsYWJsZUxpc3RIZWFkcCkKLSAgICAgICAgICAgICAgICAgY2h1bmstPnJlbW92ZUZyb21BdmFpbGFibGVMaXN0KCk7Ci0gCi0gICAgICAgICAgICAgc2l6ZV90IGFyZW5hSW5kZXggPSBDaHVuazo6YXJlbmFJbmRleChhaGVhZGVyLT5hcmVuYUFkZHJlc3MoKSk7Ci0tICAgICAgICAgICAgYm9vbCBvazsKLSsgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAqIElmIHRoZSBtYWluIHRocmVhZCB3YWl0cyBmb3IgdGhlIGRlY29tbWl0IHRvIGZpbmlzaCwgc2tpcAotQEAgLTI3NDEsNyArMjc0OSw4IEBAIERlY29tbWl0QXJlbmFzRnJvbUF2YWlsYWJsZUxpc3QoSlNSdW50aW1lICpydCwgQ2h1bmsgKiphdmFpbGFibGVMaXN0SGVhZHApCi0gICAgICAgICAgICAgICAgIE1heWJlPEF1dG9VbmxvY2tHQz4gbWF5YmVVbmxvY2s7Ci0gICAgICAgICAgICAgICAgIGlmICghcnQtPmlzSGVhcEJ1c3koKSkKLSAgICAgICAgICAgICAgICAgICAgIG1heWJlVW5sb2NrLmNvbnN0cnVjdChydCk7Ci0tICAgICAgICAgICAgICAgIG9rID0gTWFya1BhZ2VzVW51c2VkKGFoZWFkZXItPmdldEFyZW5hKCksIEFyZW5hU2l6ZSk7Ci0rICAgICAgICAgICAgICAgIGlmIChEZWNvbW1pdEVuYWJsZWQoKSkKLSsgICAgICAgICAgICAgICAgICAgIG9rID0gTWFya1BhZ2VzVW51c2VkKGFoZWFkZXItPmdldEFyZW5hKCksIEFyZW5hU2l6ZSk7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGlmIChvaykgewotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1hYXJjaDY0LTY0ay1wYWdlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDUtYWFyY2g2NC02NGstcGFnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM5OWVjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1hYXJjaDY0LTY0ay1wYWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA5YzQyOTIwYzJiNjM1YTM5OWJkMWY5MzgzM2VmZGViMTY5NmYxN2VlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAxOTowOTo1NyArMDgwMAotU3ViamVjdDogW1BBVENIIDUvNV0gYWFyY2g2NC02NGstcGFnZQotCi0tLS0KLVVwc3RyZWFtLXN0YXR1czogUGVuZGluZwotCi0ganMvc3JjL2djL0hlYXAuaCAgICAgfCAyICstCi0ganMvc3JjL2djL01lbW9yeS5jcHAgfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9qcy9zcmMvZ2MvSGVhcC5oIGIvanMvc3JjL2djL0hlYXAuaAotaW5kZXggMWNmZDI2OS4uZjRkYmNkYSAxMDA2NDQKLS0tLSBhL2pzL3NyYy9nYy9IZWFwLmgKLSsrKyBiL2pzL3NyYy9nYy9IZWFwLmgKLUBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0IENlbGwKLSAjaWYgZGVmaW5lZChTT0xBUklTKSAmJiAoZGVmaW5lZChfX3NwYXJjKSB8fCBkZWZpbmVkKF9fc3BhcmN2OSkpCi0gY29uc3Qgc2l6ZV90IFBhZ2VTaGlmdCA9IDEzOwotIGNvbnN0IHNpemVfdCBBcmVuYVNoaWZ0ID0gUGFnZVNoaWZ0OwotLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSBjb25zdCBzaXplX3QgUGFnZVNoaWZ0ID0gMTY7Ci0gY29uc3Qgc2l6ZV90IEFyZW5hU2hpZnQgPSAxMjsKLSAjZWxzZQotZGlmZiAtLWdpdCBhL2pzL3NyYy9nYy9NZW1vcnkuY3BwIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLWluZGV4IDViMzg2YTIuLmU1YWQwMTggMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvZ2MvTWVtb3J5LmNwcAotKysrIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLUBAIC0zMDIsOCArMzAyLDExIEBAIEdldFBhZ2VGYXVsdENvdW50KCkKLSB2b2lkCi0gSW5pdE1lbW9yeVN1YnN5c3RlbSgpCi0gewotKyAgICAvKiBhYXJjaDY0IG1heSBoYXZlIDY0S0Igb3IgNEtCIHBhZ2VzICovCi0rI2lmbmRlZiBfX2FhcmNoNjRfXwotICAgICBpZiAoc2l6ZV90KHN5c2NvbmYoX1NDX1BBR0VTSVpFKSkgIT0gUGFnZVNpemUpCi0gICAgICAgICBNT1pfQ1JBU0goKTsKLSsjZW5kaWYKLSB9Ci0gCi0gdm9pZCAqCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA1LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDUtZml4LWRvX2NvbXBpbGUtZmFpbGVkLW9uLW1pcHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhlNDY5OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA1LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNTVkODMzZGMzYzE5NGYxZWI3ODQxZjMwOGFkM2I5ZWMzODAwZDNiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTMgSnVsIDIwMTggMTU6NDg6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIGZpeCBkb19jb21waWxlIGZhaWxlZCBvbiBtaXBzCisKK0xpbmsgd2l0aCB2YXItT1NfTERGTEFHUyB0byBmaXggdGhlIGlzc3VlLgorU3VjaCBhcyBvbiBtaXBzOgorLi4uCit8bWlwcy13cnNtbGxpYjMyLWxpbnV4LWcrKyAtbWViIC1tYWJpPTMyIC1taGFyZC1mbG9hdCAuLi4gLW8gbGlibW96anMtNTIuc28KK3wvdXNyL2luY2x1ZGUvYysrLzguMS4wL2JpdHMvYXRvbWljX2Jhc2UuaDo1MTQ6IGVycm9yOiB1bmRlZmluZWQKK3JlZmVyZW5jZSB0byAnX19hdG9taWNfZmV0Y2hfYWRkXzgnCisuLi4KKworSW4gcmVjaXBlLCBzZXQgT1NfTERGTEFHUz0iLVdsLC1sYXRvbWljIiBjb3VsZCBmaXggdGhlIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWcvY29uZmlnLm1rIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlnL2NvbmZpZy5tayBiL2NvbmZpZy9jb25maWcubWsKK2luZGV4IDRlM2ZkMWEuLmQ4NDdmZmEgMTAwNjQ0CistLS0gYS9jb25maWcvY29uZmlnLm1rCisrKysgYi9jb25maWcvY29uZmlnLm1rCitAQCAtNTIzLDcgKzUyMyw3IEBAIEVYUEFORF9NS1NITElCX0FSR1MgPSAtLXVzZWxpc3QKKyBpZmRlZiBTWU1CT0xfT1JERVIKKyBFWFBBTkRfTUtTSExJQl9BUkdTICs9IC0tc3ltYm9sLW9yZGVyICQoU1lNQk9MX09SREVSKQorIGVuZGlmCistRVhQQU5EX01LU0hMSUIgPSAkKEVYUEFORF9MSUJTX0VYRUMpICQoRVhQQU5EX01LU0hMSUJfQVJHUykgLS0gJChNS1NITElCKQorK0VYUEFORF9NS1NITElCID0gJChFWFBBTkRfTElCU19FWEVDKSAkKEVYUEFORF9NS1NITElCX0FSR1MpIC0tICQoTUtTSExJQikgJChPU19MREZMQUdTKQorIAorICMgJChjYWxsIENIRUNLX1NZTUJPTFMsbGliLFBSRUZJWCxkZXBfbmFtZSx0ZXN0KQorICMgQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGBsaWJgIGRvZXNuJ3QgY29udGFpbiBkZXBlbmRlbmN5IG9uIHN5bWJvbHMgd2l0aCBhCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE5NzdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDYtc3VwcG9ydC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTU4IEBACitGcm9tIDA0ZThhNjExZTk1OGYwZGExY2NhYzYxYWNhZTNhNmYxYTUxNjhiMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDEzIEp1bCAyMDE4IDE4OjA4OjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN1cHBvcnQgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVtb3J5L2plbWFsbG9jL3NyYy9zcmMvcGFnZXMuYyAgICAgICAgICAgICAgfCAxIC0KKyBtZW1vcnkvbW96amVtYWxsb2MvamVtYWxsb2MuYyAgICAgICAgICAgICAgICB8IDcgKysrLS0tLQorIG1vemdsdWUvbWlzYy9UaW1lU3RhbXBfZGFyd2luLmNwcCAgICAgICAgICAgIHwgMSAtCisgbW96Z2x1ZS9taXNjL1RpbWVTdGFtcF9wb3NpeC5jcHAgICAgICAgICAgICAgfCAxIC0KKyBuc3BycHViL3ByL3NyYy9taXNjL3Byc3lzdGVtLmMgICAgICAgICAgICAgICB8IDEgLQorIHB5dGhvbi9wc3V0aWwvcHN1dGlsL19wc3V0aWxfYnNkLmMgICAgICAgICAgIHwgMSAtCisgcHl0aG9uL3BzdXRpbC9wc3V0aWwvX3BzdXRpbF9vc3guYyAgICAgICAgICAgfCAxIC0KKyBweXRob24vcHN1dGlsL3BzdXRpbC9hcmNoL2JzZC9wcm9jZXNzX2luZm8uYyB8IDEgLQorIHB5dGhvbi9wc3V0aWwvcHN1dGlsL2FyY2gvb3N4L3Byb2Nlc3NfaW5mby5jIHwgMSAtCisgOSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVtb3J5L2plbWFsbG9jL3NyYy9zcmMvcGFnZXMuYyBiL21lbW9yeS9qZW1hbGxvYy9zcmMvc3JjL3BhZ2VzLmMKK2luZGV4IDY0Nzk1MmEuLjdiOTY0YzggMTAwNjQ0CistLS0gYS9tZW1vcnkvamVtYWxsb2Mvc3JjL3NyYy9wYWdlcy5jCisrKysgYi9tZW1vcnkvamVtYWxsb2Mvc3JjL3NyYy9wYWdlcy5jCitAQCAtMiw3ICsyLDYgQEAKKyAjaW5jbHVkZSAiamVtYWxsb2MvaW50ZXJuYWwvamVtYWxsb2NfaW50ZXJuYWwuaCIKKyAKKyAjaWZkZWYgSkVNQUxMT0NfU1lTQ1RMX1ZNX09WRVJDT01NSVQKKy0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorICNlbmRpZgorIAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitkaWZmIC0tZ2l0IGEvbWVtb3J5L21vemplbWFsbG9jL2plbWFsbG9jLmMgYi9tZW1vcnkvbW96amVtYWxsb2MvamVtYWxsb2MuYworaW5kZXggNWQ0ZDgzYS4uYzYxOGRlOSAxMDA2NDQKKy0tLSBhL21lbW9yeS9tb3pqZW1hbGxvYy9qZW1hbGxvYy5jCisrKysgYi9tZW1vcnkvbW96amVtYWxsb2MvamVtYWxsb2MuYworQEAgLTMzMiw3ICszMzIsNiBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvbGliL2xpYmMvc3RkbGliL21hbGxvYy5jIDE4MDU5OSAyMDA4LTA3LTE4IDE5OjM1OjQ0WiBqYQorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaWYgIWRlZmluZWQoTU9aX01FTU9SWV9TT0xBUklTKSAmJiAhZGVmaW5lZChNT1pfTUVNT1JZX0FORFJPSUQpCistI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3Vpby5oPgorICNpZm5kZWYgTU9aX01FTU9SWQorQEAgLTY3NCw3ICs2NzMsNyBAQCBzdGF0aWMgYm9vbCBtYWxsb2NfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAjZWxpZiBkZWZpbmVkKE1PWl9NRU1PUllfREFSV0lOKQorIHN0YXRpYyBtYWxsb2NfbXV0ZXhfdCBpbml0X2xvY2sgPSB7T1NfU1BJTkxPQ0tfSU5JVH07CisgI2VsaWYgZGVmaW5lZChNT1pfTUVNT1JZX0xJTlVYKSAmJiAhZGVmaW5lZChNT1pfTUVNT1JZX0FORFJPSUQpCistc3RhdGljIG1hbGxvY19tdXRleF90IGluaXRfbG9jayA9IFBUSFJFQURfQURBUFRJVkVfTVVURVhfSU5JVElBTElaRVJfTlA7Cisrc3RhdGljIG1hbGxvY19tdXRleF90IGluaXRfbG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7CisgI2VsaWYgZGVmaW5lZChNT1pfTUVNT1JZKQorIHN0YXRpYyBtYWxsb2NfbXV0ZXhfdCBpbml0X2xvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOworICNlbHNlCitAQCAtMTY0NCw3ICsxNjQzLDcgQEAgbWFsbG9jX211dGV4X2luaXQobWFsbG9jX211dGV4X3QgKm11dGV4KQorIAlwdGhyZWFkX211dGV4YXR0cl90IGF0dHI7CisgCWlmIChwdGhyZWFkX211dGV4YXR0cl9pbml0KCZhdHRyKSAhPSAwKQorIAkJcmV0dXJuICh0cnVlKTsKKy0JcHRocmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmYXR0ciwgUFRIUkVBRF9NVVRFWF9BREFQVElWRV9OUCk7CisrCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJmF0dHIsIFBUSFJFQURfTVVURVhfU1RBTExFRCk7CisgCWlmIChwdGhyZWFkX211dGV4X2luaXQobXV0ZXgsICZhdHRyKSAhPSAwKSB7CisgCQlwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZhdHRyKTsKKyAJCXJldHVybiAodHJ1ZSk7CitAQCAtMTcwOSw3ICsxNzA4LDcgQEAgbWFsbG9jX3NwaW5faW5pdChtYWxsb2Nfc3BpbmxvY2tfdCAqbG9jaykKKyAJcHRocmVhZF9tdXRleGF0dHJfdCBhdHRyOworIAlpZiAocHRocmVhZF9tdXRleGF0dHJfaW5pdCgmYXR0cikgIT0gMCkKKyAJCXJldHVybiAodHJ1ZSk7CistCXB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJmF0dHIsIFBUSFJFQURfTVVURVhfQURBUFRJVkVfTlApOworKwlwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZhdHRyLCBQVEhSRUFEX01VVEVYX1NUQUxMRUQpOworIAlpZiAocHRocmVhZF9tdXRleF9pbml0KGxvY2ssICZhdHRyKSAhPSAwKSB7CisgCQlwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZhdHRyKTsKKyAJCXJldHVybiAodHJ1ZSk7CitkaWZmIC0tZ2l0IGEvbW96Z2x1ZS9taXNjL1RpbWVTdGFtcF9kYXJ3aW4uY3BwIGIvbW96Z2x1ZS9taXNjL1RpbWVTdGFtcF9kYXJ3aW4uY3BwCitpbmRleCBmMzBiYzk4Li4zOTk4YzljIDEwMDY0NAorLS0tIGEvbW96Z2x1ZS9taXNjL1RpbWVTdGFtcF9kYXJ3aW4uY3BwCisrKysgYi9tb3pnbHVlL21pc2MvVGltZVN0YW1wX2Rhcndpbi5jcHAKK0BAIC0xOCw3ICsxOCw2IEBACisgCisgI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKK2RpZmYgLS1naXQgYS9tb3pnbHVlL21pc2MvVGltZVN0YW1wX3Bvc2l4LmNwcCBiL21vemdsdWUvbWlzYy9UaW1lU3RhbXBfcG9zaXguY3BwCitpbmRleCAwNWRlZGRlLi5kOWUzMGYyIDEwMDY0NAorLS0tIGEvbW96Z2x1ZS9taXNjL1RpbWVTdGFtcF9wb3NpeC5jcHAKKysrKyBiL21vemdsdWUvbWlzYy9UaW1lU3RhbXBfcG9zaXguY3BwCitAQCAtMjEsNyArMjEsNiBAQAorICNpZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIFwKKyAgICAgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKQorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pCitkaWZmIC0tZ2l0IGEvbnNwcnB1Yi9wci9zcmMvbWlzYy9wcnN5c3RlbS5jIGIvbnNwcnB1Yi9wci9zcmMvbWlzYy9wcnN5c3RlbS5jCitpbmRleCBlYmE4NWZiLi41NGI1N2JiIDEwMDY0NAorLS0tIGEvbnNwcnB1Yi9wci9zcmMvbWlzYy9wcnN5c3RlbS5jCisrKysgYi9uc3BycHViL3ByL3NyYy9taXNjL3Byc3lzdGVtLmMKK0BAIC0yNyw3ICsyNyw2IEBACisgICAgIHx8IGRlZmluZWQoT1BFTkJTRCkgfHwgZGVmaW5lZChEUkFHT05GTFkpIHx8IGRlZmluZWQoREFSV0lOKQorICNkZWZpbmUgX1BSX0hBVkVfU1lTQ1RMCisgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoREFSV0lOKQorZGlmZiAtLWdpdCBhL3B5dGhvbi9wc3V0aWwvcHN1dGlsL19wc3V0aWxfYnNkLmMgYi9weXRob24vcHN1dGlsL3BzdXRpbC9fcHN1dGlsX2JzZC5jCitpbmRleCA3YjZlNTYxLi4wYTkxMjYyIDEwMDY0NAorLS0tIGEvcHl0aG9uL3BzdXRpbC9wc3V0aWwvX3BzdXRpbF9ic2QuYworKysrIGIvcHl0aG9uL3BzdXRpbC9wc3V0aWwvX3BzdXRpbF9ic2QuYworQEAgLTE2LDcgKzE2LDYgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8cGF0aHMuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2luY2x1ZGUgPHN5cy91c2VyLmg+CisgI2luY2x1ZGUgPHN5cy9wcm9jLmg+CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3BzdXRpbC9wc3V0aWwvX3BzdXRpbF9vc3guYyBiL3B5dGhvbi9wc3V0aWwvcHN1dGlsL19wc3V0aWxfb3N4LmMKK2luZGV4IDNlYmY4ZmYuLmIzOTEwYmEgMTAwNjQ0CistLS0gYS9weXRob24vcHN1dGlsL3BzdXRpbC9fcHN1dGlsX29zeC5jCisrKysgYi9weXRob24vcHN1dGlsL3BzdXRpbC9fcHN1dGlsX29zeC5jCitAQCAtMTMsNyArMTMsNiBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dXRtcHguaD4KKy0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorICNpbmNsdWRlIDxzeXMvdm1tZXRlci5oPgorICNpbmNsdWRlIDxsaWJwcm9jLmg+CisgI2luY2x1ZGUgPHN5cy9wcm9jX2luZm8uaD4KK2RpZmYgLS1naXQgYS9weXRob24vcHN1dGlsL3BzdXRpbC9hcmNoL2JzZC9wcm9jZXNzX2luZm8uYyBiL3B5dGhvbi9wc3V0aWwvcHN1dGlsL2FyY2gvYnNkL3Byb2Nlc3NfaW5mby5jCitpbmRleCA0ZDczOTI0Li40NmYyODhkIDEwMDY0NAorLS0tIGEvcHl0aG9uL3BzdXRpbC9wc3V0aWwvYXJjaC9ic2QvcHJvY2Vzc19pbmZvLmMKKysrKyBiL3B5dGhvbi9wc3V0aWwvcHN1dGlsL2FyY2gvYnNkL3Byb2Nlc3NfaW5mby5jCitAQCAtMTUsNyArMTUsNiBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgI2luY2x1ZGUgPHN5cy91c2VyLmg+CisgI2luY2x1ZGUgPHN5cy9wcm9jLmg+CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3BzdXRpbC9wc3V0aWwvYXJjaC9vc3gvcHJvY2Vzc19pbmZvLmMgYi9weXRob24vcHN1dGlsL3BzdXRpbC9hcmNoL29zeC9wcm9jZXNzX2luZm8uYworaW5kZXggYjZkZDViYi4uNjJhODM4ZiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9wc3V0aWwvcHN1dGlsL2FyY2gvb3N4L3Byb2Nlc3NfaW5mby5jCisrKysgYi9weXRob24vcHN1dGlsL3BzdXRpbC9hcmNoL29zeC9wcm9jZXNzX2luZm8uYworQEAgLTE2LDcgKzE2LDYgQEAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisgI2luY2x1ZGUgPGxpYnByb2MuaD4KKyAKKyAjaW5jbHVkZSAicHJvY2Vzc19pbmZvLmgiCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMC1maXgtY3Jvc3MtY29tcGlsYXRpb24tb24taTU4Ni10YXJnZXRzLnBhdGNoCmluZGV4IDY0MzJlMWYuLjkxOTRlMzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYTQ1MjEzOGExZGQyNzRiZmFkMzgxYTcwMTcyOTc4MzM2MGRjODZmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTQ1MjEzOGExZGQyNzRiZmFkMzgxYTcwMTcyOTc4MzM2MGRjODZmYiBNb24gU2VwIDE3ICAwMDowMDowMCAyMDAxCiBGcm9tOiBNYWNpZWogQm9yemVja2kgPG1hY2llai5ib3J6ZWNraUBvcGVuLXJuZC5wbD4KIERhdGU6IFR1ZSwgNSBKYW4gMjAxNiAyMjowNDoxNyArMDEwMAogU3ViamVjdDogW1BBVENIXSBmaXggY3Jvc3MgY29tcGlsYXRpb24gb24gaTU4NiB0YXJnZXRzCkBAIC0xMCwzNyArMTAsMjYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IE1hY2llaiBCb3J6ZWNraSA8bWFjaWVqLmJvcnplY2tpQG9wZW4tcm5kLnBsPgotLS0tCi0ganMvc3JjL2NvbmZpZ3VyZSAgICB8IDIgKy0KLSBqcy9zcmMvY29uZmlndXJlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvanMvc3JjL2NvbmZpZ3VyZSBiL2pzL3NyYy9jb25maWd1cmUKLWluZGV4IGQwMTliMGZkYmE0NDIzMzU5NjU0MWRlOTQzMDcwMTBkODVhOGUzMmUuLjVhYTQwZjc1N2EzZGJiN2Q2ODg3MTc1MDQ2ZjQ0MjEyYzE1YzJlYWMgMTAwNzU1Ci0tLS0gYS9qcy9zcmMvY29uZmlndXJlCi0rKysgYi9qcy9zcmMvY29uZmlndXJlCi1AQCAtNTU1NSw3ICs1NTU1LDcgQEAgVEFSR0VUX01EX0FSQ0g9dW5peAorUmViYXNlIHRvIDUyLjguMQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisganMvc3JjL29sZC1jb25maWd1cmUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZSBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitpbmRleCA4YThlZjUyLi5kN2FmY2ZmIDEwMDY0NAorLS0tIGEvanMvc3JjL29sZC1jb25maWd1cmUKKysrKyBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitAQCAtMzk2NCw3ICszOTY0LDcgQEAgSU1QT1JUX0xJQl9TVUZGSVg9CiAgRElSRU5UX0lOTz1kX2lubwogIE1PWl9VU0VSX0RJUj0iLm1vemlsbGEiCiAgCi0tTU9aX0ZJWF9MSU5LX1BBVEhTPSctV2wsLXJwYXRoLWxpbmssJChMSUJYVUxfRElTVCkvYmluIC1XbCwtcnBhdGgtbGluaywkKHByZWZpeCkvbGliJwotK01PWl9GSVhfTElOS19QQVRIUz0nLVdsLC1ycGF0aC1saW5rLCQoTElCWFVMX0RJU1QpL2JpbicKKy1NT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiAtV2wsLXJwYXRoLWxpbmssJHtwcmVmaXh9L2xpYiIKKytNT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiIKICAKLSBNT1pfQ09NUE9ORU5UX05TUFJfTElCUz0nLUwkKExJQlhVTF9ESVNUKS9iaW4gJChOU1BSX0xJQlMpJwogIAotZGlmZiAtLWdpdCBhL2pzL3NyYy9jb25maWd1cmUuaW4gYi9qcy9zcmMvY29uZmlndXJlLmluCi1pbmRleCAwNjczYWNhMTJmNmQ4MzAzNTU0OWFkZTJhNGE4MzkwNmJmOTFmMGYwLi4zOWIyMjcyNGY5NTM1YWMxYTZkYmEwNDY1OGM5MWU0ZWY2NjdmYzQ3IDEwMDY0NAotLS0tIGEvanMvc3JjL2NvbmZpZ3VyZS5pbgotKysrIGIvanMvc3JjL2NvbmZpZ3VyZS5pbgotQEAgLTkxOSw3ICs5MTksNyBAQCBUQVJHRVRfTURfQVJDSD11bml4Ci0gRElSRU5UX0lOTz1kX2lubwotIE1PWl9VU0VSX0RJUj0iLm1vemlsbGEiCi0gCi0tTU9aX0ZJWF9MSU5LX1BBVEhTPSctV2wsLXJwYXRoLWxpbmssJChMSUJYVUxfRElTVCkvYmluIC1XbCwtcnBhdGgtbGluaywkKHByZWZpeCkvbGliJwotK01PWl9GSVhfTElOS19QQVRIUz0nLVdsLC1ycGF0aC1saW5rLCQoTElCWFVMX0RJU1QpL2JpbicKLSAKLSBNT1pfQ09NUE9ORU5UX05TUFJfTElCUz0nLUwkKExJQlhVTF9ESVNUKS9iaW4gJChOU1BSX0xJQlMpJwogIAogLS0gCi0yLjUuMAorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL01hbnVhbGx5X21tYXBfaGVhcF9tZW1vcnlfZXNyMTcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNmNDU0My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1Gcm9tIDFkMWZhOTVjOGZmNzY5N2U0NjM0MzM4NWE3OWE4ZjdlNWM1MTRhODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBaaGVuZyBYdSA8emhlbmcueHVAbGluYXJvLm9yZz4KLURhdGU6IEZyaSwgMiBTZXAgMjAxNiAxNzo0MDowNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBCdWcgMTE0MzAyMiAtIE1hbnVhbGx5IG1tYXAgb24gYXJtNjQgdG8gZW5zdXJlIGhpZ2ggMTcgYml0cwotIGFyZSBjbGVhci4gcj1laG9vZ2V2ZWVuCi0KLVRoZXJlIG1pZ2h0IGJlIDQ4LWJpdCBWQSBvbiBhcm02NCBkZXBlbmRpbmcgb24ga2VybmVsIGNvbmZpZ3VyYXRpb24uCi1NYW51YWxseSBtbWFwIGhlYXAgbWVtb3J5IHRvIGFsaWduIHdpdGggdGhlIGFzc3VtcHRpb24gbWFkZSBieSBKUyBlbmdpbmUuCi0KLUNoYW5nZS1JZDogSWM1ZDJiMmZlNGI3NThiM2M4N2NjMDY4ODM0OGFmN2U3MWE5OTExNDYKLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLSBqcy9zcmMvZ2MvTWVtb3J5LmNwcCB8IDczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2pzL3NyYy9nYy9NZW1vcnkuY3BwIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLWluZGV4IGU1YWQwMTguLjQxNDlhZGYgMTAwNjQ0Ci0tLS0gYS9qcy9zcmMvZ2MvTWVtb3J5LmNwcAotKysrIGIvanMvc3JjL2djL01lbW9yeS5jcHAKLUBAIC0zMDksNiArMzA5LDc1IEBAIEluaXRNZW1vcnlTdWJzeXN0ZW0oKQotICNlbmRpZgotIH0KLSAKLStzdGF0aWMgaW5saW5lIHZvaWQgKgotK01hcE1lbW9yeShzaXplX3QgbGVuZ3RoLCBpbnQgcHJvdCwgaW50IGZsYWdzLCBpbnQgZmQsIG9mZl90IG9mZnNldCkKLSt7Ci0rI2lmIGRlZmluZWQoX19pYTY0X18pCi0rICAgIC8qCi0rICAgICAqIFRoZSBKUyBlbmdpbmUgYXNzdW1lcyB0aGF0IGFsbCBhbGxvY2F0ZWQgcG9pbnRlcnMgaGF2ZSB0aGVpciBoaWdoIDE3IGJpdHMgY2xlYXIsCi0rICAgICAqIHdoaWNoIGlhNjQncyBtbWFwIGRvZXNuJ3Qgc3VwcG9ydCBkaXJlY3RseS4gSG93ZXZlciwgd2UgY2FuIGVtdWxhdGUgaXQgYnkgcGFzc2luZwotKyAgICAgKiBtbWFwIGFuICJhZGRyIiBwYXJhbWV0ZXIgd2l0aCB0aG9zZSBiaXRzIGNsZWFyLiBUaGUgbW1hcCB3aWxsIHJldHVybiB0aGF0IGFkZHJlc3MsCi0rICAgICAqIG9yIHRoZSBuZWFyZXN0IGF2YWlsYWJsZSBtZW1vcnkgYWJvdmUgdGhhdCBhZGRyZXNzLCBwcm92aWRpbmcgYSBuZWFyLWd1YXJhbnRlZQotKyAgICAgKiB0aGF0IHRob3NlIGJpdHMgYXJlIGNsZWFyLiBJZiB0aGV5IGFyZSBub3QsIHdlIHJldHVybiBOVUxMIGJlbG93IHRvIGluZGljYXRlCi0rICAgICAqIG91dC1vZi1tZW1vcnkuCi0rICAgICAqCi0rICAgICAqIFRoZSBhZGRyIGlzIGNob3NlbiBhcyAweDAwMDAwNzAwMDAwMDAwMDAsIHdoaWNoIHN0aWxsIGFsbG93cyBhYm91dCAxMjBUQiBvZiB2aXJ0dWFsCi0rICAgICAqIGFkZHJlc3Mgc3BhY2UuCi0rICAgICAqCi0rICAgICAqIFNlZSBCdWcgNTg5NzM1IGZvciBtb3JlIGluZm9ybWF0aW9uLgotKyAgICAgKi8KLSsgICAgdm9pZCAqcmVnaW9uID0gbW1hcCgodm9pZCopMHgwMDAwMDcwMDAwMDAwMDAwLCBsZW5ndGgsIHByb3QsIGZsYWdzLCBmZCwgb2Zmc2V0KTsKLSsgICAgaWYgKHJlZ2lvbiA9PSBNQVBfRkFJTEVEKQotKyAgICAgICAgcmV0dXJuIE1BUF9GQUlMRUQ7Ci0rICAgIC8qCi0rICAgICAqIElmIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGRvZXNuJ3QgaGF2ZSBpdHMgdXBwZXIgMTcgYml0cyBjbGVhciwgY29uc2lkZXIgaXQKLSsgICAgICogYXMgb3V0IG9mIG1lbW9yeS4KLSsgICAgICovCi0rICAgIGlmICgodWludHB0cl90KHJlZ2lvbikgKyAobGVuZ3RoIC0gMSkpICYgMHhmZmZmODAwMDAwMDAwMDAwKSB7Ci0rICAgICAgICBKU19BTFdBWVNfVFJVRSgwID09IG11bm1hcChyZWdpb24sIGxlbmd0aCkpOwotKyAgICAgICAgcmV0dXJuIE1BUF9GQUlMRUQ7Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJlZ2lvbjsKLSsjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgIC8qCi0rICAgICogVGhlcmUgbWlnaHQgYmUgc2ltaWxhciB2aXJ0dWFsIGFkZHJlc3MgaXNzdWUgb24gYXJtNjQgd2hpY2ggZGVwZW5kcyBvbgotKyAgICAqIGhhcmR3YXJlIGFuZCBrZXJuZWwgY29uZmlndXJhdGlvbnMuIEJ1dCB0aGUgd29yayBhcm91bmQgaXMgc2xpZ2h0bHkKLSsgICAgKiBkaWZmZXJlbnQgZHVlIHRvIHRoZSBkaWZmZXJlbnQgbW1hcCBiZWhhdmlvci4KLSsgICAgKgotKyAgICAqIFRPRE86IE1lcmdlIHdpdGggdGhlIGFib3ZlIGNvZGUgYmxvY2sgaWYgdGhpcyBpbXBsZW1lbnRhdGlvbiB3b3JrcyBmb3IKLSsgICAgKiBpYTY0IGFuZCBzcGFyYzY0LgotKyAgICAqLwotKyAgICBjb25zdCB1aW50cHRyX3Qgc3RhcnQgPSBVSU5UNjRfQygweDAwMDAwNzAwMDAwMDAwMDApOwotKyAgICBjb25zdCB1aW50cHRyX3QgZW5kICAgPSBVSU5UNjRfQygweDAwMDA4MDAwMDAwMDAwMDApOwotKyAgICBjb25zdCB1aW50cHRyX3Qgc3RlcCAgPSBDaHVua1NpemU7Ci0rICAgLyoKLSsgICAgKiBPcHRpbWl6YXRpb24gb3B0aW9ucyBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgcmV0cmllcyBpbiBwcmFjdGljZToKLSsgICAgKiAxLiBFeGFtaW5lIC9wcm9jL3NlbGYvbWFwcyB0byBmaW5kIGFuIGF2YWlsYWJsZSBhZGRyZXNzLiBUaGlzIGZpbGUgaXMKLSsgICAgKiAgICBub3QgYWx3YXlzIGF2YWlsYWJsZSwgaG93ZXZlci4gSW4gYWRkaXRpb24sIGV2ZW4gaWYgd2UgZXhhbWluZQotKyAgICAqICAgIC9wcm9jL3NlbGYvbWFwcywgd2UgbWF5IHN0aWxsIG5lZWQgdG8gcmV0cnkgc2V2ZXJhbCB0aW1lcyBkdWUgdG8KLSsgICAgKiAgICByYWNpbmcgd2l0aCBvdGhlciB0aHJlYWRzLgotKyAgICAqIDIuIFVzZSBhIGdsb2JhbC9zdGF0aWMgdmFyaWFibGUgd2l0aCBsb2NrIHRvIHRyYWNrIHRoZSBhZGRyZXNzZXMgd2UgaGF2ZQotKyAgICAqICAgIGFsbG9jYXRlZCBvciB0cmllZC4KLSsgICAgKi8KLSsgICAgdWludHB0cl90IGhpbnQ7Ci0rICAgIHZvaWQqIHJlZ2lvbiA9IE1BUF9GQUlMRUQ7Ci0rICAgIGZvciAoaGludCA9IHN0YXJ0OyByZWdpb24gPT0gTUFQX0ZBSUxFRCAmJiBoaW50ICsgbGVuZ3RoIDw9IGVuZDsgaGludCArPSBzdGVwKSB7Ci0rICAgICAgICByZWdpb24gPSBtbWFwKCh2b2lkKiloaW50LCBsZW5ndGgsIHByb3QsIGZsYWdzLCBmZCwgb2Zmc2V0KTsKLSsgICAgICAgIGlmIChyZWdpb24gIT0gTUFQX0ZBSUxFRCkgewotKyAgICAgICAgICAgIGlmICgodWludHB0cl90KHJlZ2lvbikgKyAobGVuZ3RoIC0gMSkpICYgMHhmZmZmODAwMDAwMDAwMDAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChtdW5tYXAocmVnaW9uLCBsZW5ndGgpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBNT1pfQVNTRVJUKGVycm5vID09IEVOT01FTSk7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgcmVnaW9uID0gTUFQX0ZBSUxFRDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJlZ2lvbiA9PSBNQVBfRkFJTEVEID8gTlVMTCA6IHJlZ2lvbjsKLSsjZWxzZQotKyAgICByZXR1cm4gbW1hcChOVUxMLCBsZW5ndGgsIHByb3QsIGZsYWdzLCBmZCwgb2Zmc2V0KTsKLSsjZW5kaWYKLSt9Ci0rCi0gdm9pZCAqCi0gTWFwQWxpZ25lZFBhZ2VzKHNpemVfdCBzaXplLCBzaXplX3QgYWxpZ25tZW50KQotIHsKLUBAIC0zMjIsMTIgKzM5MSwxMiBAQCBNYXBBbGlnbmVkUGFnZXMoc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCi0gCi0gICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgd2Ugd2FudCBwYWdlIGFsaWdubWVudCwgbm8gZnVydGhlciB3b3JrIGlzIG5lZWRlZC4gKi8KLSAgICAgaWYgKGFsaWdubWVudCA9PSBQYWdlU2l6ZSkgewotLSAgICAgICAgcmV0dXJuIG1tYXAoTlVMTCwgc2l6ZSwgcHJvdCwgZmxhZ3MsIC0xLCAwKTsKLSsgICAgICAgIHJldHVybiBNYXBNZW1vcnkoc2l6ZSwgcHJvdCwgZmxhZ3MsIC0xLCAwKTsKLSAgICAgfQotIAotICAgICAvKiBPdmVyYWxsb2NhdGUgYW5kIHVubWFwIHRoZSByZWdpb24ncyBlZGdlcy4gKi8KLSAgICAgc2l6ZV90IHJlcVNpemUgPSBNaW4oc2l6ZSArIDIgKiBhbGlnbm1lbnQsIDIgKiBzaXplKTsKLS0gICAgdm9pZCAqcmVnaW9uID0gbW1hcChOVUxMLCByZXFTaXplLCBwcm90LCBmbGFncywgLTEsIDApOwotKyAgICB2b2lkICpyZWdpb24gPSBNYXBNZW1vcnkocmVxU2l6ZSwgcHJvdCwgZmxhZ3MsIC0xLCAwKTsKLSAgICAgaWYgKHJlZ2lvbiA9PSBNQVBfRkFJTEVEKQotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvYWRkLXJpc2N2LXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvYWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM1NGE5ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDcwIEBACitBZGQgUklTQy1WIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTg5MDVdCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gU2FsdmV0aSA8cmljYXJkb0Bmb3VuZHJpZXMuaW8+CisKK2RpZmYgLS1naXQgYS9idWlsZC9hdXRvY29uZi9jb25maWcuZ3Vlc3MgYi9idWlsZC9hdXRvY29uZi9jb25maWcuZ3Vlc3MKK2luZGV4IGQ1ZDY2N2QuLjEyNzdhODYgMTAwNzU1CistLS0gYS9idWlsZC9hdXRvY29uZi9jb25maWcuZ3Vlc3MKKysrKyBiL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5ndWVzcworQEAgLTEwMjksNiArMTAyOSw5IEBAIEVPRgorICAgICBwcGNsZTpMaW51eDoqOiopCisgCWVjaG8gcG93ZXJwY2xlLXVua25vd24tbGludXgtJHtMSUJDfQorIAlleGl0IDs7CisrICAgIHJpc2N2MzI6TGludXg6KjoqIHwgcmlzY3Y2NDpMaW51eDoqOiopCisrCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKysJZXhpdCA7OworICAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eC0ke0xJQkN9CisgCWV4aXQgOzsKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZQoraW5kZXggNmZlNjU5MS4uNTZlNjczMCAxMDA2NDQKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKK0BAIC0zNjIsNiArMzYyLDkgQEAgZGVmIHNwbGl0X3RyaXBsZXQodHJpcGxldCk6CisgICAgIGVsaWYgY3B1LnN0YXJ0c3dpdGgoJ2FhcmNoNjQnKToKKyAgICAgICAgIGNhbm9uaWNhbF9jcHUgPSAnYWFyY2g2NCcKKyAgICAgICAgIGVuZGlhbm5lc3MgPSAnbGl0dGxlJworKyAgICBlbGlmIGNwdSBpbiAoJ3Jpc2N2MzInLCAncmlzY3Y2NCcpOgorKyAgICAgICAgY2Fub25pY2FsX2NwdSA9IGNwdQorKyAgICAgICAgZW5kaWFubmVzcyA9ICdsaXR0bGUnCisgICAgIGVsc2U6CisgICAgICAgICBkaWUoJ1Vua25vd24gQ1BVIHR5cGU6ICVzJyAlIGNwdSkKKyAKK2RpZmYgLS1naXQgYS9tZmJ0L2RvdWJsZS1jb252ZXJzaW9uL3V0aWxzLmggYi9tZmJ0L2RvdWJsZS1jb252ZXJzaW9uL3V0aWxzLmgKK2luZGV4IDE1ZGQ0YmYuLjRmMzcyMTggMTAwNjQ0CistLS0gYS9tZmJ0L2RvdWJsZS1jb252ZXJzaW9uL3V0aWxzLmgKKysrKyBiL21mYnQvZG91YmxlLWNvbnZlcnNpb24vdXRpbHMuaAorQEAgLTYwLDcgKzYwLDggQEAKKyAgICAgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX19zcGFyYykgfHwgZGVmaW5lZChfX3MzOTBfXykgfHwgXAorICAgICBkZWZpbmVkKF9fU0g0X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBcCisgICAgIGRlZmluZWQoX01JUFNfQVJDSF9NSVBTMzJSMikgfHwgXAorLSAgICBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcmlzY3YpCisgI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TIDEKKyAjZWxpZiBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19pMzg2KQorICNpZiBkZWZpbmVkKF9XSU4zMikKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NvbnN0YW50cy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY29uc3RhbnRzLnB5CitpbmRleCBkZmM3Y2Y4Li40ZjhkNjY2IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9jb25zdGFudHMucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY29uc3RhbnRzLnB5CitAQCAtNDgsNiArNDgsOCBAQCBDUFVfYml0bmVzcyA9IHsKKyAgICAgJ21pcHM2NCc6IDY0LAorICAgICAncHBjJzogMzIsCisgICAgICdwcGM2NCc6IDY0LAorKyAgICAncmlzY3YzMic6IDMyLAorKyAgICAncmlzY3Y2NCc6IDY0LAorICAgICAnczM5MCc6IDMyLAorICAgICAnczM5MHgnOiA2NCwKKyAgICAgJ3NwYXJjJzogMzIsCitAQCAtNzksNiArODEsOCBAQCBDUFVfcHJlcHJvY2Vzc29yX2NoZWNrcyA9IE9yZGVyZWREaWN0KCgKKyAgICAgKCdzMzkwJywgJ19fczM5MF9fJyksCisgICAgICgncHBjNjQnLCAnX19wb3dlcnBjNjRfXycpLAorICAgICAoJ3BwYycsICdfX3Bvd2VycGNfXycpLAorKyAgICAoJ3Jpc2N2MzInLCAnX19yaXNjdiAmJiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gNCcpLAorKyAgICAoJ3Jpc2N2NjQnLCAnX19yaXNjdiAmJiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gOCcpLAorICAgICAoJ0FscGhhJywgJ19fYWxwaGFfXycpLAorICAgICAoJ2hwcGEnLCAnX19ocHBhX18nKSwKKyAgICAgKCdzcGFyYzY0JywgJ19fc3BhcmNfXyAmJiBfX2FyY2g2NF9fJyksCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvZGlzYWJsZS1tb3pnbHVlLWluLXN0YW5kLWFsb25lLWJ1aWxkcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9kaXNhYmxlLW1vemdsdWUtaW4tc3RhbmQtYWxvbmUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ODdjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvZGlzYWJsZS1tb3pnbHVlLWluLXN0YW5kLWFsb25lLWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDc0IEBACitGcm9tIDJmYjUzMWFjNzUzNTAwMzE0MzM2Y2NkNTA4Y2IyZDUzZjVlNzY4ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaWxsIFNjaG5laWRlcmVpdCA8dGlsbEB0aWxsc2NobmVpZGVyZWl0Lm5ldD4KK0RhdGU6IFRodSwgMSBPY3QgMjAxNSAxMjo1OTowOSArMDIwMAorU3ViamVjdDogRGlzYWJsZSBNT1pfR0xVRV9JTl9QUk9HUkFNIGluIHN0YW5kLWFsb25lIGJ1aWxkcyBvbiBhbGwgcGxhdGZvcm1zCisKK090aGVyd2lzZSwgYnVpbGQgZmFpbHMgbm90IGJlaW5nIGFibGUgdG8gZmluZCBIYXNoQnl0ZXMuCisKK1BhdGNoIHBvcnRlZCBmb3J3YXJkIHRvIG1vempzNTIgYnkgUGhpbGlwIENoaW1lbnRvCis8cGhpbGlwLmNoaW1lbnRvQGdtYWlsLmNvbT4uCisKK2h0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTExNzY3ODcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFNhbHZldGkgPHJpY2FyZG9AZm91bmRyaWVzLmlvPgorLS0tCisganMvc3JjL29sZC1jb25maWd1cmUgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIG1vemdsdWUvYnVpbGQvbW96LmJ1aWxkIHwgIDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZSBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitpbmRleCBkN2FmY2ZmLi44YTZmMTQyIDEwMDY0NAorLS0tIGEvanMvc3JjL29sZC1jb25maWd1cmUKKysrKyBiL2pzL3NyYy9vbGQtY29uZmlndXJlCitAQCAtODU0NiwyMSArODU0NiwyNSBAQCBpZiB0ZXN0IC16ICIkTU9aX0VOQUJMRV9XQVJOSU5HU19BU19FUlJPUlMiOyB0aGVuCisgZmkKKyAKKyAKKy1jYXNlICIke09TX1RBUkdFVH0iIGluCistQW5kcm9pZHxXSU5OVHxEYXJ3aW4pCisraWYgdGVzdCAiJEpTX1NUQU5EQUxPTkUiOyB0aGVuCisgICBNT1pfR0xVRV9JTl9QUk9HUkFNPQorLSAgOzsKKy0qKQorLSAgICBNT1pfR0xVRV9JTl9QUk9HUkFNPTEKKy0gIGNhdCA+PiBjb25mZGVmcy5weXRtcCA8PFxFT0YKKytlbHNlCisrICBjYXNlICIke09TX1RBUkdFVH0iIGluCisrICBBbmRyb2lkfFdJTk5UfERhcndpbikKKysgICAgTU9aX0dMVUVfSU5fUFJPR1JBTT0KKysgICAgOzsKKysgICopCisrICAgICAgICBNT1pfR0xVRV9JTl9QUk9HUkFNPTEKKysgICAgY2F0ID4+IGNvbmZkZWZzLnB5dG1wIDw8XEVPRgorICAgICAoJycnIE1PWl9HTFVFX0lOX1BST0dSQU0gJycnLCAnIDEgJykKKyBFT0YKKyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKKyAjZGVmaW5lIE1PWl9HTFVFX0lOX1BST0dSQU0gMQorIEVPRgorIAorLSAgOzsKKy1lc2FjCisrICAgIDs7CisrICBlc2FjCisrZmkKKyAKKyBpZiB0ZXN0ICIkTU9aX01FTU9SWSI7IHRoZW4KKyAgIGlmIHRlc3QgIngkTU9aX0RFQlVHIiA9ICJ4MSI7IHRoZW4KK2RpZmYgLS1naXQgYS9tb3pnbHVlL2J1aWxkL21vei5idWlsZCBiL21vemdsdWUvYnVpbGQvbW96LmJ1aWxkCitpbmRleCBkMjg5NzQ3Li5lM2JlNWEyIDEwMDY0NAorLS0tIGEvbW96Z2x1ZS9idWlsZC9tb3ouYnVpbGQKKysrKyBiL21vemdsdWUvYnVpbGQvbW96LmJ1aWxkCitAQCAtNiw3ICs2LDcgQEAKKyAKKyAjIEJ1aWxkIG1vemdsdWUgYXMgYSBzaGFyZWQgbGliIG9uIFdpbmRvd3MsIE9TWCBhbmQgQW5kcm9pZC4KKyAjIElmIHRoaXMgaXMgZXZlciBjaGFuZ2VkLCB1cGRhdGUgTU9aX1NIQVJFRF9NT1pHTFVFIGluIGJyb3dzZXIvaW5zdGFsbGVyL01ha2VmaWxlLmluCistaWYgQ09ORklHWydPU19UQVJHRVQnXSBpbiAoJ1dJTk5UJywgJ0RhcndpbicsICdBbmRyb2lkJyk6CisraWYgQ09ORklHWydPU19UQVJHRVQnXSBpbiAoJ1dJTk5UJywgJ0RhcndpbicsICdBbmRyb2lkJykgYW5kIG5vdCBDT05GSUdbJ0pTX1NUQU5EQUxPTkUnXToKKyAgICAgU2hhcmVkTGlicmFyeSgnbW96Z2x1ZScpCisgZWxzZToKKyAgICAgTGlicmFyeSgnbW96Z2x1ZScpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9maXgtdGhlLWNvbXBpbGUtZXJyb3Itb2YtcG93ZXJwYzY0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL2ZpeC10aGUtY29tcGlsZS1lcnJvci1vZi1wb3dlcnBjNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYzQ1OTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL2ZpeC10aGUtY29tcGlsZS1lcnJvci1vZi1wb3dlcnBjNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1maXggdGhlIGNvbXBpbGUgZXJyb3Igb2YgcG93ZXJwYzY0Ci0gCi1VcHN0cmVhbS1zdGF0dXM6IEFjY2VwdGVkCi0KLSBmaXggdGhlIGZvbGxvd2luZyBlcnJvcgotIHxlcnJvcjogJ2pzdXdvcmQnIGRvZXMgbm90IG5hbWUgYSB0eXBlCi0KLQotLS0tIGEvanMvc3JjL2pzdmFsLmhvbGQJMjAxNS0wNC0yNCAwMToxNTowNi42OTI5NzA3MzEgLTA1MDAKLSsrKyBiL2pzL3NyYy9qc3ZhbC5oCTIwMTUtMDQtMjQgMDE6MTU6NDEuNzkyOTY5NDc4IC0wNTAwCi1AQCAtMzA0LDcgKzMwNCw2IEBACi0gICAgICAgICAgICAgaW50MzJfdCAgICAgICAgaTMyOwotICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgIHUzMjsKLSAgICAgICAgICAgICBKU1doeU1hZ2ljICAgICB3aHk7Ci0tICAgICAgICAgICAganN1d29yZCAgICAgICAgd29yZDsKLSAgICAgICAgIH0gcGF5bG9hZDsKLSAgICAgfSBzOwotICAgICBkb3VibGUgYXNEb3VibGU7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvZml4X21pbGVzdG9uZV9jb21waWxlX2lzc3VlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL2ZpeF9taWxlc3RvbmVfY29tcGlsZV9pc3N1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJkZTAxYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvZml4X21pbGVzdG9uZV9jb21waWxlX2lzc3VlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotZml4IHRoZSBjb21waWxlIGVycm9yIGRvIHRvIHBlcmwgdXBkYXRlCi0KLVVwc3RyZWFtLXN0YXR1czogSW5hcHByb3ByaWF0ZQotCi0KLVNpZ25lZC1vZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLQotSW5kZXg6IHNyYy9jb25maWcvbWlsZXN0b25lLnBsCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3JjLm9yaWcvY29uZmlnL21pbGVzdG9uZS5wbAotKysrIHNyYy9jb25maWcvbWlsZXN0b25lLnBsCi1AQCAtNTUsNyArNTUsNyBAQCAkTUlMRVNUT05FX0ZJTEUgID0gIiRUT1BTUkNESVIvY29uZmlnL21pCi0gIwotIG15ICRtaWxlc3RvbmUgPSBNb3o6Ok1pbGVzdG9uZTo6Z2V0T2ZmaWNpYWxNaWxlc3RvbmUoJE1JTEVTVE9ORV9GSUxFKTsKLSAKLS1pZiAoZGVmaW5lZChAVEVNUExBVEVfRklMRSkpIHsKLStpZiAoQFRFTVBMQVRFX0ZJTEUpIHsKLSAgIG15ICRURklMRTsKLSAKLSAgIGZvcmVhY2ggJFRGSUxFIChAVEVNUExBVEVfRklMRSkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzE3LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc18xNy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YjdmMTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzE3LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLVNVTU1BUlkgPSAiU3BpZGVyTW9ua2V5IGlzIE1vemlsbGEncyBKYXZhU2NyaXB0IGVuZ2luZSB3cml0dGVuIGluIEMvQysrIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9qcy8iCi1MSUNFTlNFID0gIk1QTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi8uLi9MSUNFTlNFO21kNT04MTVjYTU5OWM5ZGYyNDdhMGM3ZjYxOWJhYjEyM2RhZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9qcy8ke0JQTn0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tb3pqczE3LjAuMC1maXgtdGhlLWNvbXBpbGUtYnVnLW9mLXBvd2VycGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItTW92ZS1KU19CWVRFU19QRVJfV09SRC1vdXQtb2YtY29uZmlnLmgucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLUFBcmNoNjQtc3VwcG9ydC5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1tb3pidWc3NDYxMTItbm8tZGVjb21taXQtb24tbGFyZ2UtcGFnZXMucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtYWFyY2g2NC02NGstcGFnZS5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWdlbmVyYXRlLWNvbmZpZ3VyZS5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vZml4LXRoZS1jb21waWxlLWVycm9yLW9mLXBvd2VycGM2NC5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vZml4X21pbGVzdG9uZV9jb21waWxlX2lzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vTWFudWFsbHlfbW1hcF9oZWFwX21lbW9yeV9lc3IxNy5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb21wYXJlLXRoZS1maXJzdC1jaGFyYWN0ZXItb2Ytc3RyaW5nLXRvLWJlLW51bGwtb3ItLnBhdGNoO3BhdGNoZGlyPS4uLy4uLyBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwYjZmOGYxMTQwZWY2ZTQ3ZGFhM2IxNjk2NWM5MjAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyMWU5NjRmZTkzODY3ODVkM2JmODA4NzA2NDBmMmZhMWM2ODNlMzJmZTk4OGVlYjIwMWIwNDQ3MWMxNzJmYmEiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0ke1BWfS9qcy9zcmMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZQotCi1ERVBFTkRTICs9ICJuc3ByIHpsaWIiCi0KLSMgSG9zdCBzcGVjaWZpYyBmbGFncyBuZWVkIHRvIGJlIGRlZmluZWQsIG90aGVyd2lzZSB0YXJnZXQgZmxhZ3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGhvc3QKLWV4cG9ydCBIT1NUX0NGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCi1leHBvcnQgSE9TVF9DWFhGTEFHUyA9ICIke0JVSUxEX0NYWEZMQUdTfSIKLWV4cG9ydCBIT1NUX0xERkxBR1MgPSAiJHtCVUlMRF9MREZMQUdTfSIKLQotIyBuc3ByJ3MgcGFja2FnZS1jb25maWcgaXMgaWdub3JlZCBzbyBzZXQgbGlicyBtYW51YWxseQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCi0gICAgLS1ob3N0PSR7QlVJTERfU1lTfSBcCi0gICAgLS1idWlsZD0ke0JVSUxEX1NZU30gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXdpdGgtbnNwci1saWJzPSctbHBsZHM0IC1scGxjNCAtbG5zcHI0JyBcCi0gICAgLS1lbmFibGUtdGhyZWFkc2FmZSBcCi0gICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY0ID0gIiBcCi0gICAgLS1kaXNhYmxlLW1ldGhvZGppdCBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEiCi0KLSMgbW96anMgcmVxdWlyZXMgYXV0b3JlY29uZiAyLjEzCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZXhwb3J0IEhPU1RfQ0ZMQUdTPSIke0JVSUxEX0NGTEFHU30iCi0gICAgZXhwb3J0IEhPU1RfQ1hYRkxBR1M9IiR7QlVJTERfQ1BQRkxBR1N9IgotICAgIGV4cG9ydCBIT1NUX0xERkxBR1M9IiR7QlVJTERfTERGTEFHU30iCi0gICAgKCBjZCAke1N9Ci0gICAgICBnbnUtY29uZmlnaXplIC0tZm9yY2UKLSAgICAgIG12IGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGJ1aWxkL2F1dG9jb25mICkKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotIyBwYXRjaC5iYmNsYXNzIHdpbGwgdHJ5IHRvIGFwcGx5IHRoZSBwYXRjaGVzIGFscmVhZHkgcHJlc2VudCBhbmQgZmFpbCwgc28gY2xlYW4gdGhlbSBvdXQKLWRvX3VucGFjaygpIHsKLSAgICB0YXIgLXh2ZiAke0RMX0RJUn0vbW96anMxNy4wLjAudGFyLmd6IC1DICR7V09SS0RJUn0vCi0gICAgcm0gLXJmICR7V09SS0RJUn0vJHtCUE59JHtQVn0vcGF0Y2hlcwotfQotCi0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi1GSUxFU19saWIke0JQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vanMxNy1jb25maWciCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgotI3wge3N0YW5kYXJkIGlucHV0fToyMTcyOiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHIyLHIxLExTUiMyMCcKLSN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgYmljIHIyLHIyLCMoMTw8MTEpJwotI3wge3N0YW5kYXJkIGlucHV0fToyMTc0OiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBvcnIgcjEscjEsIygxPDwyMCknCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzY6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByMixyMiwjMHgzMDAnCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzg6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByNSxyMiwjNTInCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc181Mi45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNTIuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZmUyZjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNTIuOS4xLmJiCkBAIC0wLDAgKzEsMTExIEBACitTVU1NQVJZID0gIlNwaWRlck1vbmtleSBpcyBNb3ppbGxhJ3MgSmF2YVNjcmlwdCBlbmdpbmUgd3JpdHRlbiBpbiBDL0MrKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9TcGlkZXJNb25rZXkiCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MTVjYTU5OWM5ZGYyNDdhMGM3ZjYxOWJhYjEyM2RhZCIKKworU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS51YnVudHUuY29tL3VidW50dS9wb29sL21haW4vbS9tb3pqczUyL21vempzNTJfNTIuOS4xLm9yaWcudGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtanMucGMuaW4tZG8tbm90LWluY2x1ZGUtUmVxdWlyZWREZWZpbmVzLmgtZm9yLWRlcGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3QtY3JlYXRlLXB5dGhvbi1lbnZpcm9ubWVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWZpeC1jYW5ub3QtZmluZC1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1kby1ub3QtdXNlLWF1dG9jb25mLTIuMTMtdG8tcmVmcmVzaC1vbGQuY29uZmlndXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZml4LWRvX2NvbXBpbGUtZmFpbGVkLW9uLW1pcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1tb3pnbHVlLWluLXN0YW5kLWFsb25lLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX21pcHNhcmNobjMyID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM5NDczYzYyNWVlMGE5ZWRhYWFjOGI3NDJmZjI0YzVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5MzI0YTY3MjQyMzNhYjE1ZjEwMzgxZmUxM2U2MzVlODlkNzI1ZWYxZTc4MDI1YTBhN2QzNmM1OGE4NGEwZjkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZQorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTX21pcHNhcmNobjMyID0gImxkLWlzLWdvbGQiCisKK0RFUEVORFMgKz0gIm5zcHIgemxpYiIKKworIyBEaXNhYmxlIG51bGwgcG9pbnRlciBvcHRpbWl6YXRpb24gaW4gZ2NjID49IDYKKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzI4MDQ1CitDRkxBR1MgKz0gIi1mbm8tdHJlZS12cnAgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyIKK0NYWEZMQUdTICs9ICItZm5vLXRyZWUtdnJwIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MiCisKKyMgbnNwcidzIHBhY2thZ2UtY29uZmlnIGlzIGlnbm9yZWQgc28gc2V0IGxpYnMgbWFudWFsbHkKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAorICAgIC0taG9zdD0ke0JVSUxEX1NZU30gXAorICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWRpc2FibGUtdGVzdHMgXAorICAgIC0td2l0aC1uc3ByLWxpYnM9Jy1scGxkczQgLWxwbGM0IC1sbnNwcjQnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAiLS1lbmFibGUtZ29sZCIsICctLWRpc2FibGUtZ29sZCcsIGQpfSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLHZpcnR1YWwvbGlieDExIgorCitFWFRSQV9PRU1BS0VfdGFzay1jb21waWxlICs9ICJPU19MREZMQUdTPSctV2wsLWxhdG9taWMgJHtMREZMQUdTfSciCitFWFRSQV9PRU1BS0VfdGFzay1pbnN0YWxsICs9ICJTVEFUSUNfTElCUkFSWV9OQU1FPWpzX3N0YXRpYyIKKworZG9fY29uZmlndXJlKCkgeworICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKKyAgICBleHBvcnQgVE1QPSIke0J9IgorICAgICR7U30vanMvc3JjL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKKyAgICBleHBvcnQgUworICAgIGV4cG9ydCBQWVRIT05QQVRICisgICAgY2QgJHtTfQorICAgIGZvciBzdWJfZGlyIGluIHB5dGhvbiB0ZXN0aW5nL21vemJhc2U7IGRvCisgICAgICAgIGZvciBtb2R1bGVfZGlyIGluIGBscyAkc3ViX2RpciAtMWA7ZG8KKyAgICAgICAgICAgIFsgJG1vZHVsZV9kaXIgPSAidmlydHVhbGVudiIgXSAmJiBjb250aW51ZQorICAgICAgICAgICAgaWYgWyAtZCAiJHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIgXTt0aGVuCisgICAgICAgICAgICAgICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICBkb25lCisgICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS9jb25maWc6JHtTfS9idWlsZCIKKyAgICBjZCAtCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgZXhwb3J0IFMKKyAgICBleHBvcnQgUFlUSE9OUEFUSAorICAgIGNkICR7U30KKyAgICBmb3Igc3ViX2RpciBpbiBweXRob24gdGVzdGluZy9tb3piYXNlOyBkbworICAgICAgICBmb3IgbW9kdWxlX2RpciBpbiBgbHMgJHN1Yl9kaXIgLTFgO2RvCisgICAgICAgICAgICBbICRtb2R1bGVfZGlyID0gInZpcnR1YWxlbnYiIF0gJiYgY29udGludWUKKyAgICAgICAgICAgIGlmIFsgLWQgIiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiIF07dGhlbgorICAgICAgICAgICAgICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZG9uZQorICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vY29uZmlnOiR7U30vYnVpbGQiCisgICAgY2QgLQorfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorRklMRVNfbGliJHtCUE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2pzNTItY29uZmlnIgorCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MjogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMixyMSxMU1IjMjAnCisjfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzM6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGJpYyByMixyMiwjKDE8PDExKScKKyN8IHtzdGFuZGFyZCBpbnB1dH06MjE3NDogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgb3JyIHIxLHIxLCMoMTw8MjApJworI3wge3N0YW5kYXJkIGlucHV0fToyMTc2OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjIscjIsIzB4MzAwJworI3wge3N0YW5kYXJkIGlucHV0fToyMTc4OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjUscjIsIzUyJworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKKworRElTQUJMRV9TVEFUSUMgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW5sbWkvb3BlbmxtaS10b29sc18wLjEwLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYgppbmRleCAxM2U2N2NiLi40MTliM2VlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYgpAQCAtMiwyNSArMiwyMyBAQAogREVTQ1JJUFRJT04gPSAib3BlbmxtaS10b29scyBpcyBhIHNldCBvZiBjb21tYW5kIGxpbmUgdG9vbHMgZm9yIE9wZW5sbWkgcHJvdmlkZXJzLiIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbmxtaS5vcmcvIgogTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTg1OTk4OTU0NWUzNzk2OGE5OWI2MzFlZjQyNzIyZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlJTkc7bWQ1PTc1ODU5OTg5NTQ1ZTM3OTY4YTk5YjYzMWVmNDI3MjJlIgogU0VDVElPTiA9ICJTeXN0ZW0vTWFuYWdlbWVudCIKIAogaW5oZXJpdCBzZXR1cHRvb2xzCiAKLURFUEVORFMgPSAicHl0aG9uLW5hdGl2ZSBweXdiZW0tbmF0aXZlIHB5dGhvbi1tMmNyeXB0byBweXdiZW0iCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgcHl0aG9uLXB5d2JlbS1uYXRpdmUgcHl0aG9uLW0yY3J5cHRvIHB5dGhvbi1weXdiZW0iCiAKIFNSQ19VUkkgPSAiaHR0cDovL2ZlZG9yYWhvc3RlZC5vcmcvcmVsZWFzZWQvJHtCUE59LyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gImUxNTYyNDZjYjdiNDk3NTNkYjgyZjRkZGY3ZjAzZTUwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5MmI4ZjVmMjI1MDY1NWE0YWRkODE4M2M1MjliNzMzNThiYzk4MGJkNGYyM2NmYTQ4NGE5NDA5NTNmY2U5ZTQiCiAKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjZCBjbGkKK1MgPSAiJHtXT1JLRElSfS8ke0JQfS9jbGkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgIHNlZCAncy9AQFZFUlNJT05AQC8kKFZFUlNJT04pL2cnIHNldHVwLnB5LnNrZWwgPnNldHVwLnB5CiB9Ci1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgY2QgY2xpCi19CiAKIHB5dGhvbigpIHsKICAgICBpZiAnbWV0YS1weXRob24nIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuLzAwMDEtUG9ydC10by1PcGVuU1NMLTEuMS4wLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW4vMDAwMS1Qb3J0LXRvLU9wZW5TU0wtMS4xLjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDlhZmE1NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuLzAwMDEtUG9ydC10by1PcGVuU1NMLTEuMS4wLnBhdGNoCkBAIC0wLDAgKzEsMTYyIEBACitGcm9tIGY3ODY0M2QyMzg4ZGQwNjk3ZjgzZjE3ODgwNDAzMjUzYTA1OTZkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaXRlenNsYXYgQ3Job25layA8dmNyaG9uZWtAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgNSBTZXAgMjAxOCAxMToyMzo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gUG9ydCB0byBPcGVuU1NMIDEuMS4wCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vT3BlbndzbWFuL29wZW53c21hbi9wdWxsLzk5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWIvd3NtYW4tY3VybC1jbGllbnQtdHJhbnNwb3J0LmMgfCAgNiArKystCisgc3JjL3NlcnZlci9zaHR0cGQvaW9fc3NsLmMgICAgICAgICAgICB8IDE3IC0tLS0tLS0tLS0KKyBzcmMvc2VydmVyL3NodHRwZC9zaHR0cGQuYyAgICAgICAgICAgIHwgMjAgKysrKy0tLS0tLS0tCisgc3JjL3NlcnZlci9zaHR0cGQvc3NsLmggICAgICAgICAgICAgICB8IDQ2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL3dzbWFuLWN1cmwtY2xpZW50LXRyYW5zcG9ydC5jIGIvc3JjL2xpYi93c21hbi1jdXJsLWNsaWVudC10cmFuc3BvcnQuYworaW5kZXggY2Q3ZjUxN2EuLmU2NGFkMDk3IDEwMDY0NAorLS0tIGEvc3JjL2xpYi93c21hbi1jdXJsLWNsaWVudC10cmFuc3BvcnQuYworKysrIGIvc3JjL2xpYi93c21hbi1jdXJsLWNsaWVudC10cmFuc3BvcnQuYworQEAgLTI0MSwxMiArMjQxLDE2IEBAIHdyaXRlX2hhbmRsZXIoIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqZGF0YSkKKyBzdGF0aWMgaW50IHNzbF9jZXJ0aWZpY2F0ZV90aHVtYnByaW50X3ZlcmlmeV9jYWxsYmFjayhYNTA5X1NUT1JFX0NUWCAqY3R4LCB2b2lkICphcmcpCisgeworIAl1bnNpZ25lZCBjaGFyICp0aHVtYnByaW50ID0gKHVuc2lnbmVkIGNoYXIgKilhcmc7CistCVg1MDkgKmNlcnQgPSBjdHgtPmNlcnQ7CisgCUVWUF9NRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGVtcERpZ2VzdDsKKyAKKyAJdW5zaWduZWQgY2hhciAgIHRlbXBGaW5nZXJwcmludFtFVlBfTUFYX01EX1NJWkVdOworIAl1bnNpZ25lZCBpbnQgICAgICB0ZW1wRmluZ2VycHJpbnRMZW47CisgCXRlbXBEaWdlc3QgPSAoRVZQX01EKilFVlBfc2hhMSggKTsKKysKKysJWDUwOSAqY2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKysJaWYoIWNlcnQpCisrCQlyZXR1cm4gMDsKKysKKyAJaWYgKCBYNTA5X2RpZ2VzdChjZXJ0LCB0ZW1wRGlnZXN0LCB0ZW1wRmluZ2VycHJpbnQsICZ0ZW1wRmluZ2VycHJpbnRMZW4gKSA8PSAwKQorIAkJcmV0dXJuIDA7CisgCWlmKCFtZW1jbXAodGVtcEZpbmdlcnByaW50LCB0aHVtYnByaW50LCB0ZW1wRmluZ2VycHJpbnRMZW4pKQorZGlmZiAtLWdpdCBhL3NyYy9zZXJ2ZXIvc2h0dHBkL2lvX3NzbC5jIGIvc3JjL3NlcnZlci9zaHR0cGQvaW9fc3NsLmMKK2luZGV4IDZkZTBkYjJhLi43YWM2NjllNCAxMDA2NDQKKy0tLSBhL3NyYy9zZXJ2ZXIvc2h0dHBkL2lvX3NzbC5jCisrKysgYi9zcmMvc2VydmVyL3NodHRwZC9pb19zc2wuYworQEAgLTExLDIzICsxMSw2IEBACisgI2luY2x1ZGUgImRlZnMuaCIKKyAKKyAjaWYgIWRlZmluZWQoTk9fU1NMKQorLXN0cnVjdCBzc2xfZnVuYwlzc2xfc3dbXSA9IHsKKy0JeyJTU0xfZnJlZSIsCQkJezB9fSwKKy0JeyJTU0xfYWNjZXB0IiwJCQl7MH19LAorLQl7IlNTTF9jb25uZWN0IiwJCQl7MH19LAorLQl7IlNTTF9yZWFkIiwJCQl7MH19LAorLQl7IlNTTF93cml0ZSIsCQkJezB9fSwKKy0JeyJTU0xfZ2V0X2Vycm9yIiwJCXswfX0sCistCXsiU1NMX3NldF9mZCIsCQkJezB9fSwKKy0JeyJTU0xfbmV3IiwJCQl7MH19LAorLQl7IlNTTF9DVFhfbmV3IiwJCQl7MH19LAorLQl7IlNTTHYyM19zZXJ2ZXJfbWV0aG9kIiwJezB9fSwKKy0JeyJTU0xfbGlicmFyeV9pbml0IiwJCXswfX0sCistCXsiU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlIiwJezB9fSwKKy0JeyJTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlIix7MH19LAorLQl7TlVMTCwJCQkJezB9fQorLX07CistCisgdm9pZAorIF9zaHR0cGRfc3NsX2hhbmRzaGFrZShzdHJ1Y3Qgc3RyZWFtICpzdHJlYW0pCisgeworZGlmZiAtLWdpdCBhL3NyYy9zZXJ2ZXIvc2h0dHBkL3NodHRwZC5jIGIvc3JjL3NlcnZlci9zaHR0cGQvc2h0dHBkLmMKK2luZGV4IDU4NzYzOTJlLi40YzFkYmYzMiAxMDA2NDQKKy0tLSBhL3NyYy9zZXJ2ZXIvc2h0dHBkL3NodHRwZC5jCisrKysgYi9zcmMvc2VydmVyL3NodHRwZC9zaHR0cGQuYworQEAgLTE0NzYsMjAgKzE0NzYsMTQgQEAgc2V0X3NzbChzdHJ1Y3Qgc2h0dHBkX2N0eCAqY3R4LCBjb25zdCBjaGFyICpwZW0pCisgCWludAkJcmV0dmFsID0gRkFMU0U7CisgCUVDX0tFWSoJCWtleTsKKyAKKy0JLyogTG9hZCBTU0wgbGlicmFyeSBkeW5hbWljYWxseSAqLworLQlpZiAoKGxpYiA9IGRsb3BlbihTU0xfTElCLCBSVExEX0xBWlkpKSA9PSBOVUxMKSB7CistCQlfc2h0dHBkX2Vsb2coRV9MT0csIE5VTEwsICJzZXRfc3NsOiBjYW5ub3QgbG9hZCAlcyIsIFNTTF9MSUIpOworLQkJcmV0dXJuIChGQUxTRSk7CistCX0KKy0KKy0JZm9yIChmcCA9IHNzbF9zdzsgZnAtPm5hbWUgIT0gTlVMTDsgZnArKykKKy0JCWlmICgoZnAtPnB0ci52X3ZvaWQgPSBkbHN5bShsaWIsIGZwLT5uYW1lKSkgPT0gTlVMTCkgeworLQkJCV9zaHR0cGRfZWxvZyhFX0xPRywgTlVMTCwic2V0X3NzbDogY2Fubm90IGZpbmQgJXMiLCBmcC0+bmFtZSk7CistCQkJcmV0dXJuIChGQUxTRSk7CistCQl9CistCisgCS8qIEluaXRpYWxpemUgU1NMIGNyYXAgKi8KKysJZGVidWcoIkluaXRpYWxpemUgU1NMIik7CisrCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3MoKTsKKysJI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDEwMTAwMDAwTAorIAlTU0xfbGlicmFyeV9pbml0KCk7CisrCSNlbHNlCisrCU9QRU5TU0xfaW5pdF9zc2woMCwgTlVMTCk7CisrCSNlbmRpZgorIAorIAlpZiAoKENUWCA9IFNTTF9DVFhfbmV3KFNTTHYyM19zZXJ2ZXJfbWV0aG9kKCkpKSA9PSBOVUxMKQorIAkJX3NodHRwZF9lbG9nKEVfTE9HLCBOVUxMLCAiU1NMX0NUWF9uZXcgZXJyb3IiKTsKK0BAIC0xNTMyLDcgKzE1MjYsNyBAQCBzZXRfc3NsKHN0cnVjdCBzaHR0cGRfY3R4ICpjdHgsIGNvbnN0IGNoYXIgKnBlbSkKKyAJCQlpZiAoc3RybmNhc2VjbXAocHJvdG9jb2xzW2lkeF0ubmFtZSwgc3NsX2Rpc2FibGVkX3Byb3RvY29scywgYmxhbmtfcHRyLXNzbF9kaXNhYmxlZF9wcm90b2NvbHMpID09IDApIHsKKyAJCQkJLy9fc2h0dHBkX2Vsb2coRV9MT0csIE5VTEwsICJTU0w6IGRpc2FibGUgJXMgcHJvdG9jb2wiLCBwcm90b2NvbHNbaWR4XS5uYW1lKTsKKyAJCQkJZGVidWcoIlNTTDogZGlzYWJsZSAlcyBwcm90b2NvbCIsIHByb3RvY29sc1tpZHhdLm5hbWUpOworLQkJCQlTU0xfQ1RYX2N0cmwoQ1RYLCBTU0xfQ1RSTF9PUFRJT05TLCBwcm90b2NvbHNbaWR4XS5vcHQsIE5VTEwpOworKwkJCQlTU0xfQ1RYX3NldF9vcHRpb25zKENUWCwgcHJvdG9jb2xzW2lkeF0ub3B0KTsKKyAJCQkJYnJlYWs7CisgCQkJfQorIAkJfQorZGlmZiAtLWdpdCBhL3NyYy9zZXJ2ZXIvc2h0dHBkL3NzbC5oIGIvc3JjL3NlcnZlci9zaHR0cGQvc3NsLmgKK2luZGV4IGE4NjNmMmM3Li44ZGFkMDEwOSAxMDA2NDQKKy0tLSBhL3NyYy9zZXJ2ZXIvc2h0dHBkL3NzbC5oCisrKysgYi9zcmMvc2VydmVyL3NodHRwZC9zc2wuaAorQEAgLTEyLDUwICsxMiw0IEBACisgCisgI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CisgCistI2Vsc2UKKy0KKy0vKgorLSAqIFNuYXRjaGVkIGZyb20gT3BlblNTTCBpbmNsdWRlcy4gSSBwdXQgdGhlIHByb3RvdHlwZXMgaGVyZSB0byBiZSBpbmRlcGVuZGVudAorLSAqIGZyb20gdGhlIE9wZW5TU0wgc291cmNlIGluc3RhbGxhdGlvbi4gSGF2aW5nIHRoaXMsIHNodHRwZCArIFNTTCBjYW4gYmUKKy0gKiBidWlsdCBvbiBhbnkgc3lzdGVtIHdpdGggYmluYXJ5IFNTTCBsaWJyYXJpZXMgaW5zdGFsbGVkLgorLSAqLworLQorLXR5cGVkZWYgc3RydWN0IHNzbF9zdCBTU0w7CistdHlwZWRlZiBzdHJ1Y3Qgc3NsX21ldGhvZF9zdCBTU0xfTUVUSE9EOworLXR5cGVkZWYgc3RydWN0IHNzbF9jdHhfc3QgU1NMX0NUWDsKKy0KKy0jZGVmaW5lCVNTTF9FUlJPUl9XQU5UX1JFQUQJMgorLSNkZWZpbmUJU1NMX0VSUk9SX1dBTlRfV1JJVEUJMworLSNkZWZpbmUJU1NMX0VSUk9SX1NZU0NBTEwJNQorLSNkZWZpbmUJU1NMX0ZJTEVUWVBFX1BFTQkxCistCisgI2VuZGlmCistCistLyoKKy0gKiBEeW5hbWljYWxseSBsb2FkZWQgU1NMIGZ1bmN0aW9uYWxpdHkKKy0gKi8KKy1zdHJ1Y3Qgc3NsX2Z1bmMgeworLQljb25zdCBjaGFyCSpuYW1lOwkJLyogU1NMIGZ1bmN0aW9uIG5hbWUJKi8KKy0JdW5pb24gdmFyaWFudAlwdHI7CQkvKiBGdW5jdGlvbiBwb2ludGVyCSovCistfTsKKy0KKy1leHRlcm4gc3RydWN0IHNzbF9mdW5jCXNzbF9zd1tdOworLQorLSNkZWZpbmUJRlVOQyh4KQlzc2xfc3dbeF0ucHRyLnZfZnVuYworLQorLSNkZWZpbmUJU1NMX2ZyZWUoeCkJKCogKHZvaWQgKCopKFNTTCAqKSkgRlVOQygwKSkoeCkKKy0jZGVmaW5lCVNTTF9hY2NlcHQoeCkJKCogKGludCAoKikoU1NMICopKSBGVU5DKDEpKSh4KQorLSNkZWZpbmUJU1NMX2Nvbm5lY3QoeCkJKCogKGludCAoKikoU1NMICopKSBGVU5DKDIpKSh4KQorLSNkZWZpbmUJU1NMX3JlYWQoeCx5LHopCSgqIChpbnQgKCopKFNTTCAqLCB2b2lkICosIGludCkpIEZVTkMoMykpKCh4KSwoeSksKHopKQorLSNkZWZpbmUJU1NMX3dyaXRlKHgseSx6KSBcCistCSgqIChpbnQgKCopKFNTTCAqLCBjb25zdCB2b2lkICosaW50KSkgRlVOQyg0KSkoKHgpLCAoeSksICh6KSkKKy0jZGVmaW5lCVNTTF9nZXRfZXJyb3IoeCx5KSgqIChpbnQgKCopKFNTTCAqLCBpbnQpKSBGVU5DKDUpKSgoeCksICh5KSkKKy0jZGVmaW5lCVNTTF9zZXRfZmQoeCx5KQkoKiAoaW50ICgqKShTU0wgKiwgaW50KSkgRlVOQyg2KSkoKHgpLCAoeSkpCistI2RlZmluZQlTU0xfbmV3KHgpCSgqIChTU0wgKiAoKikoU1NMX0NUWCAqKSkgRlVOQyg3KSkoeCkKKy0jZGVmaW5lCVNTTF9DVFhfbmV3KHgpCSgqIChTU0xfQ1RYICogKCopKFNTTF9NRVRIT0QgKikpIEZVTkMoOCkpKHgpCistI2RlZmluZQlTU0x2MjNfc2VydmVyX21ldGhvZCgpCSgqIChTU0xfTUVUSE9EICogKCopKHZvaWQpKSBGVU5DKDkpKSgpCistI2RlZmluZQlTU0xfbGlicmFyeV9pbml0KCkgKCogKGludCAoKikodm9pZCkpIEZVTkMoMTApKSgpCistI2RlZmluZQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoeCx5LHopCSgqIChpbnQgKCopKFNTTF9DVFggKiwgXAorLQkJY29uc3QgY2hhciAqLCBpbnQpKSBGVU5DKDExKSkoKHgpLCAoeSksICh6KSkKKy0jZGVmaW5lCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGUoeCx5LHopCSgqIChpbnQgKCopKFNTTF9DVFggKiwgXAorLQkJY29uc3QgY2hhciAqLCBpbnQpKSBGVU5DKDEyKSkoKHgpLCAoeSksICh6KSkKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuLzAwMDItQ2hlY2stT3BlblNTTC12ZXJzaW9uLW51bWJlci10by1hbGxvdy1idWlsZHMtd2l0aC1vbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuLzAwMDItQ2hlY2stT3BlblNTTC12ZXJzaW9uLW51bWJlci10by1hbGxvdy1idWlsZHMtd2l0aC1vbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWUyZTAwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW4vMDAwMi1DaGVjay1PcGVuU1NMLXZlcnNpb24tbnVtYmVyLXRvLWFsbG93LWJ1aWxkcy13aXRoLW9sLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNzU2NjliMDc3YmQ1NGJlZGJjMDg2YzYwY2JlMTM3ZTdmNGM2ODViNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpdGV6c2xhdiBDcmhvbmVrIDx2Y3Job25la0ByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNCBBcHIgMjAxNyAxMToyODozOSArMDIwMAorU3ViamVjdDogW1BBVENIIDIvMl0gQ2hlY2sgT3BlblNTTCB2ZXJzaW9uIG51bWJlciB0byBhbGxvdyBidWlsZHMgd2l0aCBvbGRlcgorIHZlcnNpb24KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9PcGVud3NtYW4vb3BlbndzbWFuL3B1bGwvOTldCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYi93c21hbi1jdXJsLWNsaWVudC10cmFuc3BvcnQuYyB8IDQgKysrKworIHNyYy9zZXJ2ZXIvc2h0dHBkL3NodHRwZC5jICAgICAgICAgICAgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYi93c21hbi1jdXJsLWNsaWVudC10cmFuc3BvcnQuYyBiL3NyYy9saWIvd3NtYW4tY3VybC1jbGllbnQtdHJhbnNwb3J0LmMKK2luZGV4IGU2NGFkMDk3Li40ZmMwNDdlOCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvd3NtYW4tY3VybC1jbGllbnQtdHJhbnNwb3J0LmMKKysrKyBiL3NyYy9saWIvd3NtYW4tY3VybC1jbGllbnQtdHJhbnNwb3J0LmMKK0BAIC0yNDcsNyArMjQ3LDExIEBAIHN0YXRpYyBpbnQgc3NsX2NlcnRpZmljYXRlX3RodW1icHJpbnRfdmVyaWZ5X2NhbGxiYWNrKFg1MDlfU1RPUkVfQ1RYICpjdHgsIHZvaWQKKyAJdW5zaWduZWQgaW50ICAgICAgdGVtcEZpbmdlcnByaW50TGVuOworIAl0ZW1wRGlnZXN0ID0gKEVWUF9NRCopRVZQX3NoYTEoICk7CisgCisrCSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKysJWDUwOSAqY2VydCA9IGN0eC0+Y2VydDsKKysJI2Vsc2UKKyAJWDUwOSAqY2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKysJI2VuZGlmCisgCWlmKCFjZXJ0KQorIAkJcmV0dXJuIDA7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3NlcnZlci9zaHR0cGQvc2h0dHBkLmMgYi9zcmMvc2VydmVyL3NodHRwZC9zaHR0cGQuYworaW5kZXggNGMxZGJmMzIuLjE2MTcyMGM4IDEwMDY0NAorLS0tIGEvc3JjL3NlcnZlci9zaHR0cGQvc2h0dHBkLmMKKysrKyBiL3NyYy9zZXJ2ZXIvc2h0dHBkL3NodHRwZC5jCitAQCAtMTUyNiw3ICsxNTI2LDExIEBAIHNldF9zc2woc3RydWN0IHNodHRwZF9jdHggKmN0eCwgY29uc3QgY2hhciAqcGVtKQorIAkJCWlmIChzdHJuY2FzZWNtcChwcm90b2NvbHNbaWR4XS5uYW1lLCBzc2xfZGlzYWJsZWRfcHJvdG9jb2xzLCBibGFua19wdHItc3NsX2Rpc2FibGVkX3Byb3RvY29scykgPT0gMCkgeworIAkJCQkvL19zaHR0cGRfZWxvZyhFX0xPRywgTlVMTCwgIlNTTDogZGlzYWJsZSAlcyBwcm90b2NvbCIsIHByb3RvY29sc1tpZHhdLm5hbWUpOworIAkJCQlkZWJ1ZygiU1NMOiBkaXNhYmxlICVzIHByb3RvY29sIiwgcHJvdG9jb2xzW2lkeF0ubmFtZSk7CisrCQkJCSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMEwKKysJCQkJU1NMX0NUWF9jdHJsKENUWCwgU1NMX0NUUkxfT1BUSU9OUywgcHJvdG9jb2xzW2lkeF0ub3B0LCBOVUxMKTsKKysJCQkJI2Vsc2UKKyAJCQkJU1NMX0NUWF9zZXRfb3B0aW9ucyhDVFgsIHByb3RvY29sc1tpZHhdLm9wdCk7CisrCQkJCSNlbmRpZgorIAkJCQlicmVhazsKKyAJCQl9CisgCQl9CistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjE4ZjAyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVud3NtYW4vb3BlbndzbWFuXzIuNi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuc291cmNlIEltcGxlbWVudGF0aW9uIG9mIFdTLU1hbmFnZW1lbnQiCi1ERVNDUklQVElPTiA9ICJPcGVud3NtYW4gaXMgYSBwcm9qZWN0IGludGVuZGVkIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgXAotaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYiBTZXJ2aWNlcyBNYW5hZ2VtZW50IHNwZWNpcGljYXRpb24gXAotKFdTLU1hbmFnZW1lbnQpIGFuZCB0byBleHBvc2Ugc3lzdGVtIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gb24gdGhlIFwKLUxpbnV4IG9wZXJhdGluZyBzeXN0ZW0gdXNpbmcgdGhlIFdTLU1hbmFnZW1lbnQgcHJvdG9jb2wuIFdTLU1hbmFnZW1lbnQgXAotaXMgYmFzZWQgb24gYSBzdWl0ZSBvZiB3ZWIgc2VydmljZXMgc3BlY2lmaWNhdGlvbnMgYW5kIHVzYWdlIFwKLXJlcXVpcmVtZW50cyB0aGF0IGV4cG9zZXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyBmb2N1c2VkIG9uIGFuZCBjb3ZlcnMgXAotYWxsIHN5c3RlbSBtYW5hZ2VtZW50IGFzcGVjdHMuIFwKLU9wZW53c21hbiBTZXJ2ZXIgYW5kIHNlcnZpY2UgbGlicmFyaWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVud3NtYW4ub3JnLyIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLQotREVQRU5EUyA9ICJjdXJsIGxpYnhtbDIgb3BlbnNzbCBsaWJwYW0iCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgotCi1TUkNSRVYgPSAiZmViN2VjOWIwMDRmY2FlYTBkYmU2NWNlOGExYTc5Y2MyOWRkOTk0YyIKLVBWID0gIjIuNi4zIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlbndzbWFuL29wZW53c21hbi5naXQgXAotICAgICAgICAgICBmaWxlOi8vbGlic3NsLWlzLXJlcXVpcmVkLWlmLWV2ZW50aW50LXN1cHBvcnRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVud3NtYW5kLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NrLmMtRGVmaW5lLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLWlmLXVuZGVmaW5lLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ0ZjUzZDRjNmNmNzNiOWQ0MzE4NmNlM2JlNmRkMGJhIgotCi1pbmhlcml0IHN5c3RlbWQgY21ha2UgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJvcGVud3NtYW5kLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLUxERkxBR1NfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICIgLWZ1c2UtbGQ9YmZkICIsICcnLCBkKX0iCi0KLUVYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9CSU5ESU5HUz1OTyBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTElCQ0lNPU5PIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9QRVJMPVlFUyBcCi0gICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLURMSUI9JHtiYXNlbGlifSBcCi0gICAgICAgICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0KLSAgICBleHBvcnQgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS9ldGMvaW5pdC9vcGVud3NtYW5kLnNoICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbndzbWFuZAotICAgIGxuIC1zZiAke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVud3NtYW5kICR7RH0vJHtzYmluZGlyfS9yY29wZW53c21hbmQKLSAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW53c21hbi9vd3NtYW5nZW5jZXJ0LnNoCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW53c21hbmQuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCi0gICAgICAgIHNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKLSAgICAgICAgc2VkIC1pIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L29wZW53c21hbi9wbHVnaW5zLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vb3BlbndzbWFuL2F1dGhlbnRpY2F0b3JzLy5kZWJ1Zy8gXAotICAgICAgICAgICAgICAgICAgICIKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbndzbWFuL29wZW53c21hbl8yLjYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJhMzg1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29wZW53c21hbi9vcGVud3NtYW5fMi42LjUuYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJPcGVuc291cmNlIEltcGxlbWVudGF0aW9uIG9mIFdTLU1hbmFnZW1lbnQiCitERVNDUklQVElPTiA9ICJPcGVud3NtYW4gaXMgYSBwcm9qZWN0IGludGVuZGVkIHRvIHByb3ZpZGUgYW4gb3Blbi1zb3VyY2UgXAoraW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYiBTZXJ2aWNlcyBNYW5hZ2VtZW50IHNwZWNpcGljYXRpb24gXAorKFdTLU1hbmFnZW1lbnQpIGFuZCB0byBleHBvc2Ugc3lzdGVtIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gb24gdGhlIFwKK0xpbnV4IG9wZXJhdGluZyBzeXN0ZW0gdXNpbmcgdGhlIFdTLU1hbmFnZW1lbnQgcHJvdG9jb2wuIFdTLU1hbmFnZW1lbnQgXAoraXMgYmFzZWQgb24gYSBzdWl0ZSBvZiB3ZWIgc2VydmljZXMgc3BlY2lmaWNhdGlvbnMgYW5kIHVzYWdlIFwKK3JlcXVpcmVtZW50cyB0aGF0IGV4cG9zZXMgYSBzZXQgb2Ygb3BlcmF0aW9ucyBmb2N1c2VkIG9uIGFuZCBjb3ZlcnMgXAorYWxsIHN5c3RlbSBtYW5hZ2VtZW50IGFzcGVjdHMuIFwKK09wZW53c21hbiBTZXJ2ZXIgYW5kIHNlcnZpY2UgbGlicmFyaWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVud3NtYW4ub3JnLyIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKKworREVQRU5EUyA9ICJjdXJsIGxpYnhtbDIgb3BlbnNzbCBsaWJwYW0iCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCitTUkNSRVYgPSAiZTkwZTVjOTZlMzAwNmMzNzJiZjQ1ZTAxODVlMzNjOTI1MGU2N2RmNiIKK1BWID0gIjIuNi41IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlbndzbWFuL29wZW53c21hbi5naXQgXAorICAgICAgICAgICBmaWxlOi8vbGlic3NsLWlzLXJlcXVpcmVkLWlmLWV2ZW50aW50LXN1cHBvcnRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVud3NtYW5kLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NrLmMtRGVmaW5lLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QLWlmLXVuZGVmaW5lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUG9ydC10by1PcGVuU1NMLTEuMS4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQ2hlY2stT3BlblNTTC12ZXJzaW9uLW51bWJlci10by1hbGxvdy1idWlsZHMtd2l0aC1vbC5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNGY1M2Q0YzZjZjczYjlkNDMxODZjZTNiZTZkZDBiYSIKKworaW5oZXJpdCBzeXN0ZW1kIGNtYWtlIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgcGVybG5hdGl2ZQorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BlbndzbWFuZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitMREZMQUdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAiIC1mdXNlLWxkPWJmZCAiLCAnJywgZCl9IgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfQklORElOR1M9Tk8gXAorICAgICAgICAgICAgICAgICAtREJVSUxEX0xJQkNJTT1OTyBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfUEVSTD1ZRVMgXAorICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfUFJFRklYPSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgIC1ETElCPSR7YmFzZWxpYn0gXAorICAgICAgICAgICAgICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9CisgICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vZXRjL2luaXQvb3BlbndzbWFuZC5zaCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW53c21hbmQKKyAgICBsbiAtc2YgJHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbndzbWFuZCAke0R9LyR7c2JpbmRpcn0vcmNvcGVud3NtYW5kCisgICAgY2htb2QgNzU1ICR7RH0vJHtzeXNjb25mZGlyfS9vcGVud3NtYW4vb3dzbWFuZ2VuY2VydC5zaAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVud3NtYW5kLnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisKKyAgICAgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW53c21hbmQuc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbndzbWFuZC5zZXJ2aWNlCisgICAgICAgIHNlZCAtaSAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVud3NtYW5kLnNlcnZpY2UKKyAgICBmaQorfQorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9vcGVud3NtYW4vcGx1Z2lucy8uZGVidWcvIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L29wZW53c21hbi9hdXRoZW50aWNhdG9ycy8uZGVidWcvIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKK1JERVBFTkRTXyR7UE59ID0gInJ1YnkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDd6aXAvcDd6aXBfMTYuMDIuYmIKaW5kZXggZDk4NmRhOS4uMTM0NzlhOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A3emlwL3A3emlwXzE2LjAyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wN3ppcC9wN3ppcF8xNi4wMi5iYgpAQCAtMTcsMjYgKzE3LDkgQEAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0iCiAKIGRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYmluLyogJHtEfSR7YmluZGlyfQotfQotCi0jIGFsbDM6IHRvIGJ1aWxkIGJpbi83emEsIGJpbi83eiAod2l0aCBpdHMgcGx1Z2lucyksIGJpbi83enIgYW5kIGJpbi83ekNvbi5zZngKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiYWxsMyIKLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L0NvZGVjcwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2Jpbi83KiAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYmluL0NvZGVjcy8qICR7RH0ke2JpbmRpcn0vQ29kZWNzCi0KLSAgICAjIENyZWF0ZSBhIHNoZWxsIHNjcmlwdCB3cmFwcGVyIHRvIGV4ZWN1dGUgbmV4dCB0byA3ei5zbwotICAgIG12ICR7RH0ke2JpbmRpcn0vN3ogJHtEfSR7YmluZGlyfS83ei5iaW4KLSAgICBjYXQgPiAke0R9JHtiaW5kaXJ9Lzd6IDw8ICdFT0YnCi0jIS9iaW4vc2gKLWV4ZWMgIiQoZGlybmFtZSAiJDAiKSIvN3ouYmluICIkQCIKLUVPRgotICAgIGNobW9kIDA3NTUgJHtEfSR7YmluZGlyfS83egorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L2Jpbi8qICR7RH0ke2JpbmRpcn0KKwlsbiAtcyA3emEgJHtEfSR7YmluZGlyfS83egogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wOHBsYXRmb3JtL2ZpbGVzLzAwMDEtTWFrZS1yZXN1bHRpbmctY21ha2UtY29uZmlnLXJlbG9jYXRhYmxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3A4cGxhdGZvcm0vZmlsZXMvMDAwMS1NYWtlLXJlc3VsdGluZy1jbWFrZS1jb25maWctcmVsb2NhdGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZmODViMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wOHBsYXRmb3JtL2ZpbGVzLzAwMDEtTWFrZS1yZXN1bHRpbmctY21ha2UtY29uZmlnLXJlbG9jYXRhYmxlLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gMjY1MGJiM2JkMzY0NDc4NDM1OWJlMzczMjUyYjA0MzY4NzNjYThjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KK0RhdGU6IEZyaSwgMjggU2VwIDIwMTggMTY6NDQ6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSByZXN1bHRpbmcgY21ha2UgY29uZmlnIHJlbG9jYXRhYmxlCisKK1RoaXMgY2hhbmdlIGF2b2lkcyBoYXJkY29kZWQgaW5zdGFsbCBwcmVmaXggaW4gdGhlIHA4LXBsYXRmb3JtLWNvbmZpZy5jbWFrZS4KK0VzcGVjaWFsbHkgaW1wb3J0YW50IHdoZW4gZG9pbmcgY3Jvc3MgY29tcGlsYXRpb24gd2l0aCBZb2N0byBmb3IgZXhhbXBsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9QdWxzZS1FaWdodC9wbGF0Zm9ybS9wdWxsLzM4XQorCistLS0KKyBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgfCAgNCAtLS0tCisgcDgtcGxhdGZvcm0tY29uZmlnLmNtYWtlLmluIHwgMTMgKysrKysrKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNzE0NGIwYi4uZjJkYjY2ZSAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTIyLDEwICsyMiw2IEBAIGlmKFdJTjMyKQorICAgICAgICAgICAgICAgICAgICBzcmMvd2luZG93cy9vcy10aHJlYWRzLmNwcCkKKyBlbmRpZigpCisgCistc2V0KHA4LXBsYXRmb3JtX0lOQ0xVREVfRElSUyAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vaW5jbHVkZS9wOC1wbGF0Zm9ybSIpCistSUYoV0lOMzIpCistICBMSVNUKEFQUEVORCBwOC1wbGF0Zm9ybV9JTkNMVURFX0RJUlMgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2luY2x1ZGUvcDgtcGxhdGZvcm0vd2luZG93cyIpCistRU5ESUYoV0lOMzIpCisgc2V0KHA4LXBsYXRmb3JtX0xJQlJBUklFUyAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorIAorIGlmKE5PVCAke0NPUkVfU1lTVEVNX05BTUV9IFNUUkVRVUFMICIiKQorZGlmZiAtLWdpdCBhL3A4LXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbiBiL3A4LXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbgoraW5kZXggNDdmMzBmMS4uYjA4ZTk2YyAxMDA2NDQKKy0tLSBhL3A4LXBsYXRmb3JtLWNvbmZpZy5jbWFrZS5pbgorKysrIGIvcDgtcGxhdGZvcm0tY29uZmlnLmNtYWtlLmluCitAQCAtOSwxNyArOSwyMiBAQAorICMgIHA4LXBsYXRmb3JtX0xJQlJBUllfRElSUyAtIGRpcmVjdG9yaWVzIGluIHdoaWNoIHRoZSBsaWJyYXJpZXMgYXJlIHNpdHVhdGVkCisgIworICMgcHJvcGFnYXRlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSBvbmUgYnVpbGQgc3lzdGVtIHRvIHRoZSBvdGhlcgorK2dldF9maWxlbmFtZV9jb21wb25lbnQoX3A4LXBsYXRmb3JtX3Jvb3RkaXIgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfS8uLi8gQUJTT0xVVEUpCisrCisgc2V0IChwOC1wbGF0Zm9ybV9WRVJTSU9OICJAcDgtcGxhdGZvcm1fVkVSU0lPTl9NQUpPUkAuQHA4LXBsYXRmb3JtX1ZFUlNJT05fTUlOT1JAIikKKy1zZXQgKHA4LXBsYXRmb3JtX0lOQ0xVREVfRElSUyBAcDgtcGxhdGZvcm1fSU5DTFVERV9ESVJTQCBAQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2luY2x1ZGUpCistc2V0IChwOC1wbGF0Zm9ybV9MSUJSQVJZX0RJUlMgIkBDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUllAIikKKytzZXQgKHA4LXBsYXRmb3JtX0lOQ0xVREVfRElSUyAiJHtfcDgtcGxhdGZvcm1fcm9vdGRpcn0vaW5jbHVkZSIgIiR7X3A4LXBsYXRmb3JtX3Jvb3RkaXJ9L2luY2x1ZGUvcDgtcGxhdGZvcm0iKQorK2lmKFdJTjMyKQorKyAgbGlzdChBUFBFTkQgcDgtcGxhdGZvcm1fSU5DTFVERV9ESVJTICIke19wOC1wbGF0Zm9ybV9yb290ZGlyfS9pbmNsdWRlL3A4LXBsYXRmb3JtL3dpbmRvd3MiKQorK2VuZGlmKFdJTjMyKQorK3NldCAocDgtcGxhdGZvcm1fTElCUkFSWV9ESVJTICIke19wOC1wbGF0Zm9ybV9yb290ZGlyfSIpCisgc2V0IChwOC1wbGF0Zm9ybV9MSU5LRVJfRkxBR1MgIkBwOC1wbGF0Zm9ybV9MSU5LRVJfRkxBR1NAIikKKyBzZXQgKHA4LXBsYXRmb3JtX0NPTkZJR19WQVJTICJAcDgtcGxhdGZvcm1fQ09ORklHX1ZBUlNAIikKKyAKKyAjIGxpYnJhcmllcyBjb21lIGZyb20gdGhlIGJ1aWxkIHRyZWUgd2hlcmUgdGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQKKyBpZihXSU4zMikKKy0gIHNldCAocDgtcGxhdGZvcm1fTElCUkFSWSAiQENNQUtFX0lOU1RBTExfUFJFRklYQC9AQ01BS0VfSU5TVEFMTF9MSUJESVJAL3A4LXBsYXRmb3JtLmxpYiIpCisrICBzZXQgKHA4LXBsYXRmb3JtX0xJQlJBUlkgIiR7X3A4LXBsYXRmb3JtX3Jvb3RkaXJ9L3A4LXBsYXRmb3JtLmxpYiIpCisgZWxzZShXSU4zMikKKy0gIHNldCAocDgtcGxhdGZvcm1fTElCUkFSWSAiLUxAQ01BS0VfSU5TVEFMTF9QUkVGSVhAL0BDTUFLRV9JTlNUQUxMX0xJQkRJUkAgLWxwOC1wbGF0Zm9ybSIpCisrICBzZXQgKHA4LXBsYXRmb3JtX0xJQlJBUlkgIi1MJHtfcDgtcGxhdGZvcm1fcm9vdGRpcn0gLWxwOC1wbGF0Zm9ybSIpCisgZW5kaWYoV0lOMzIpCisgc2V0IChwOC1wbGF0Zm9ybV9MSUJSQVJJRVMgJHtwOC1wbGF0Zm9ybV9MSUJSQVJZfSAiQHA4LXBsYXRmb3JtX0xJQlJBUklFU0AiKQorIG1hcmtfYXNfYWR2YW5jZWQgKHA4LXBsYXRmb3JtX0xJQlJBUlkpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcDhwbGF0Zm9ybS9wOHBsYXRmb3JtX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wOHBsYXRmb3JtL3A4cGxhdGZvcm1fZ2l0LmJiCmluZGV4IGY2MzQ3YzIuLjA2OTBkNGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wOHBsYXRmb3JtL3A4cGxhdGZvcm1fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wOHBsYXRmb3JtL3A4cGxhdGZvcm1fZ2l0LmJiCkBAIC00LDEwICs0LDExIEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9vcy5oO21kNT03NTI1NTVmYTk0ZTgyMDA1ZDQ1ZmQyMDFmZWU1YmQzMyIKIAotUFYgPSAiMi4xLjAiCitQViA9ICIyLjEuMC4xIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vUHVsc2UtRWlnaHQvcGxhdGZvcm0uZ2l0IgotU1JDUkVWID0gImQ3YmNlYjY0NTQxY2IwNDY0MjFjYmNkNGM5OGQ5MWU5YmYyNDgyMmYiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vUHVsc2UtRWlnaHQvcGxhdGZvcm0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1yZXN1bHRpbmctY21ha2UtY29uZmlnLXJlbG9jYXRhYmxlLnBhdGNoIgorU1JDUkVWID0gIjJkOTBmOTg2MjBlMjVmNDc3MDJjOWU4NDgzODBjMGQ5M2YyOTQ2MmIiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXBsdWdpbi1jY3JlZHNfMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1wbHVnaW4tY2NyZWRzXzExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZDg3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1wbHVnaW4tY2NyZWRzXzExLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiUEFNIGNhY2hlZCBjcmVkZW50aWFscyBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5wYWRsLmNvbS9PU1MvcGFtX2NjcmVkcy5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitERVBFTkRTID0gImxpYnBhbSBvcGVuc3NsIGRiIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKworU1JDUkVWID0gImUyMTQ1ZGYwOTQ2OWJmODQ4NzhlNDcyOWI0ZWNkODE0ZWZiNzk3ZDEiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QQURML3BhbV9jY3JlZHMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gIgorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvcGFtKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXBsdWdpbi1sZGFwZGJfMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tcGx1Z2luLWxkYXBkYl8xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU5YTI1OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXBsdWdpbi1sZGFwZGJfMS4zLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiUEFNIHNlYXJjaGxlc3MgTERBUCBhdXRoZW50aWNhdGlvbiBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm1icmVhay9wYW1fbGRhcGRiIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vcm1icmVhay9wYW1fbGRhcGRiL2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDFhYjk0MTgyZDk0YmU5YmIzNWUyYThiOTMzZjFlN2QiCisKK0RFUEVORFMgPSAibGlicGFtIG9wZW5sZGFwIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm1icmVhay9wYW1fbGRhcGRiL2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGQ0ZjEzNzBmY2ZlOTk1ZWUwYWQwOTYxMTEwOWI4NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWQ5MmIzNjUyMzU1NmJiNWQ5YmYzZWIzM2ExMDM1ZTQ2MDQxZDRiZTc2N2M4ZDYyMTM2OTMwYzBjYTBlNDViIgorCitTID0gIiR7V09SS0RJUn0vcGFtX2xkYXBkYi0ke1BWfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQQU1ESVI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5L3BhbV9sZGFwZGIuc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKaW5kZXggMTYzOGM0MS4uMmE0NjFmYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYgpAQCAtMTEsNyArMTEsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjhkYmU5MGFiMzYyNWU1NDUwMzYzMzNlNmY1MWNjZjFkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjNTNkMzU4ZDZlYWVkMWIyMTEyMzlkZjAxN2MyN2M2Zjk5NzA5OTVkMTQxMDJhZTY3YmFlMTZkNGY0N2E3NjMiCiAKLURFUEVORFMgKz0gImxpYnBhbSBvcGVuc3NsIgorREVQRU5EUyArPSAibGlicGFtIG9wZW5zc2wxMCIKIAogaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAxLWplbWFsbG9jLWplbWFsbG9jLmNmZy1TcGVjaWZ5LXRoZS1ob3N0LXdoZW4tYnVpbGRpbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAxLWplbWFsbG9jLWplbWFsbG9jLmNmZy1TcGVjaWZ5LXRoZS1ob3N0LXdoZW4tYnVpbGRpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3NTM4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wbWRrL2ZpbGVzLzAwMDEtamVtYWxsb2MtamVtYWxsb2MuY2ZnLVNwZWNpZnktdGhlLWhvc3Qtd2hlbi1idWlsZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDJhMjJkYzk2YzNiYmI1YzliYmNjMDA4ZjU4ZDRmNWM2NGUzZDE5ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBNb24sIDIzIEp1bCAyMDE4IDExOjIzOjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGplbWFsbG9jL2plbWFsbG9jLmNmZzogU3BlY2lmeSB0aGUgaG9zdCB3aGVuIGJ1aWxkaW5nCisgamVtYWxsb2MKKworVG8gYXZvaWQgdGhpcyBlcnJvcjoKKyAgICBjb25maWd1cmU6IGVycm9yOiBjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCisgICAgSWYgeW91IG1lYW50IHRvIGNyb3NzIGNvbXBpbGUsIHVzZSBgLS1ob3N0Jy4KK3doZW4gY3Jvc3MgY29tcGlsaW5nIHNwZWNpZnkgdGhlIGhvc3Qgd2hlbiBjb25maWd1cmluZyBqZW1hbGxvYy4KKworU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgc3JjL2plbWFsbG9jL2plbWFsbG9jLmNmZyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2plbWFsbG9jL2plbWFsbG9jLmNmZyBiL3NyYy9qZW1hbGxvYy9qZW1hbGxvYy5jZmcKK2luZGV4IDE5NjEyOWRlNi4uNzllYmJhYjFjIDEwMDY0NAorLS0tIGEvc3JjL2plbWFsbG9jL2plbWFsbG9jLmNmZworKysrIGIvc3JjL2plbWFsbG9jL2plbWFsbG9jLmNmZworQEAgLTMsMyArMyw0IEBACisgLS13aXRoLXByaXZhdGUtbmFtZXNwYWNlPWplX3ZtZW1fCisgLS1kaXNhYmxlLXhtYWxsb2MKKyAtLWRpc2FibGUtbXVubWFwCisrLS1ob3N0PSR7SE9TVF9TWVN9CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAyLU1ha2VmaWxlLURvbi10LWluc3RhbGwtdGhlLWRvY3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAyLU1ha2VmaWxlLURvbi10LWluc3RhbGwtdGhlLWRvY3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQxYjk3YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wbWRrL2ZpbGVzLzAwMDItTWFrZWZpbGUtRG9uLXQtaW5zdGFsbC10aGUtZG9jcy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDQ2MGE5NmUzOTBjYjgwMjc4Nzg0Y2ZlMzY2MjllMjgwZmU3ZmZlZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBNb24sIDIzIEp1bCAyMDE4IDExOjMxOjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBNYWtlZmlsZTogRG9uJ3QgaW5zdGFsbCB0aGUgZG9jcworCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KKy0tLQorIE1ha2VmaWxlIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDIyNGEzMTVmNi4uY2U3Zjg0YWZiIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTQ0LDcgKzE0NCw2IEBAIHJwbSBkcGtnOiBwa2ctY2xlYW4gc291cmNlCisgCisgaW5zdGFsbCB1bmluc3RhbGw6CisgCSQoTUFLRSkgLUMgc3JjICRACistCSQoTUFLRSkgLUMgZG9jICRACisgCisgLlBIT05ZOiBhbGwgY2xlYW4gY2xvYmJlciB0ZXN0IGNoZWNrIGNzdHlsZSBjaGVjay1saWNlbnNlIGluc3RhbGwgdW5pbnN0YWxsXAorIAlzb3VyY2UgcnBtIGRwa2cgcGtnLWNsZWFuIHBjaGVjayBjaGVjay1yZW1vdGUgZm9ybWF0IGRvYyAkKFNVQkRJUlMpCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAzLU1ha2VmaWxlLURvbi10LWJ1aWxkLXRoZS1leGFtcGxlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wbWRrL2ZpbGVzLzAwMDMtTWFrZWZpbGUtRG9uLXQtYnVpbGQtdGhlLWV4YW1wbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NWQ5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDAzLU1ha2VmaWxlLURvbi10LWJ1aWxkLXRoZS1leGFtcGxlcy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGE3ZjA3ZGNhMjQ2OGVhMjI2ZDJmMDdmYzAxMDUxNjZlNzVjYWRhZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBUaHUsIDYgU2VwIDIwMTggMTY6MTg6NTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IERvbid0IGJ1aWxkIHRoZSBleGFtcGxlcworCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KKy0tLQorIHNyYy9NYWtlZmlsZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKK2luZGV4IDRiNTBkZDhiNS4uZTAwNTAxZTMxIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC0zOCwxMyArMzgsMTMgQEAgaW5jbHVkZSAkKFRPUCkvc3JjL3ZlcnNpb24uaW5jCisgCisgVEFSR0VUUyA9IGxpYnBtZW0gbGlidm1lbSBsaWJwbWVtYmxrIGxpYnBtZW1sb2cgbGlicG1lbW9iaiBsaWJwbWVtcG9vbFwKKyAJCSAgbGlicG1lbWN0byBsaWJ2bW1hbGxvYyB0b29scworLUFMTF9UQVJHRVRTID0gJChUQVJHRVRTKSBjb21tb24gbGlicnBtZW0gZXhhbXBsZXMgYmVuY2htYXJrcworK0FMTF9UQVJHRVRTID0gJChUQVJHRVRTKSBjb21tb24gbGlicnBtZW0gYmVuY2htYXJrcworIAorIFNDT1BFX0RJUlMgPSAkKFRBUkdFVFMpIGNvbW1vbiBsaWJycG1lbSBycG1lbV9jb21tb24KKyAKKyBERUJVR19SRUxFQVNFX1RBUkdFVFMgPSBjb21tb24gbGlicG1lbSBsaWJ2bWVtIGxpYnBtZW1ibGsgbGlicG1lbWxvZyBsaWJwbWVtb2JqXAorIAlsaWJwbWVtcG9vbCBsaWJ2bW1hbGxvYyBsaWJycG1lbSBsaWJwbWVtY3RvCistUkVMRUFTRV9UQVJHRVRTID0gdG9vbHMgZXhhbXBsZXMgYmVuY2htYXJrcworK1JFTEVBU0VfVEFSR0VUUyA9IHRvb2xzIGJlbmNobWFya3MKKyAKKyBDTEVBTl9OT19KRV9UQVJHRVRTID0gJChBTExfVEFSR0VUUykgcnBtZW1fY29tbW9uIHRlc3QKKyBDTEVBTl9UQVJHRVRTID0gJChDTEVBTl9OT19KRV9UQVJHRVRTKSBqZW1hbGxvYworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BtZGsvZmlsZXMvMDAwNC1vc19wb3NpeC1NYW51YWxseS1pbXBsZW1lbnQtc2VjdXJlX2dldGVudi1pZi1yZXF1aXJlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BtZGsvZmlsZXMvMDAwNC1vc19wb3NpeC1NYW51YWxseS1pbXBsZW1lbnQtc2VjdXJlX2dldGVudi1pZi1yZXF1aXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNGYxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDA0LW9zX3Bvc2l4LU1hbnVhbGx5LWltcGxlbWVudC1zZWN1cmVfZ2V0ZW52LWlmLXJlcXVpcmUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAzM2FmZmE5ZWU5NzY5MWVmYjczZjQzOWZjZGJhNGFkYjg2MjVhMjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorRGF0ZTogTW9uLCAxMCBTZXAgMjAxOCAxMjo1OTo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBvc19wb3NpeDogTWFudWFsbHkgaW1wbGVtZW50IHNlY3VyZV9nZXRlbnYoKSBpZiByZXF1aXJlZAorCitNYW51YWxseSBpbXBsZW1lbnQgdGhlIHNlY3VyZV9nZXRlbnYoKSBpZiB3ZSBuZWVkIHRvLCB0aGlzIGlzIHJlcXVpcmVkCitpZiB1c2luZyBtdXNsLgorCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIHNyYy9jb21tb24vb3NfcG9zaXguYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vb3NfcG9zaXguYyBiL3NyYy9jb21tb24vb3NfcG9zaXguYworaW5kZXggMmQ3MGEwYTI5Li5mYjA5YjZjZTAgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uL29zX3Bvc2l4LmMKKysrKyBiL3NyYy9jb21tb24vb3NfcG9zaXguYworQEAgLTI2MSw3ICsyNjEsNyBAQCBvc19zZXRlbnYoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsIGludCBvdmVyd3JpdGUpCisgLyoKKyAgKiBzZWN1cmVfZ2V0ZW52IC0tIHByb3ZpZGUgR05VIHNlY3VyZV9nZXRlbnYgZm9yIEZyZWVCU0QKKyAgKi8KKy0jaWZkZWYgX19GcmVlQlNEX18KKysjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgIUhBVkVfX19TRUNVUkVfR0VURU5WCisgc3RhdGljIGNoYXIgKgorIHNlY3VyZV9nZXRlbnYoY29uc3QgY2hhciAqbmFtZSkKKyB7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDA1LXBtZW1wb29sLVJlbW92ZS11bnVzZWQtX19VU0VfVU5JWDk4LWRlZmluZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wbWRrL2ZpbGVzLzAwMDUtcG1lbXBvb2wtUmVtb3ZlLXVudXNlZC1fX1VTRV9VTklYOTgtZGVmaW5lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YzM1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDA1LXBtZW1wb29sLVJlbW92ZS11bnVzZWQtX19VU0VfVU5JWDk4LWRlZmluZS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDkyZTYzNjk5ZWE4MzA3NDI5ODk3MWIwMjUxZjAwMjU2MmJlNGRiZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBNb24sIDEwIFNlcCAyMDE4IDEzOjIzOjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBwbWVtcG9vbDogUmVtb3ZlIHVudXNlZCBfX1VTRV9VTklYOTggZGVmaW5lCisKK1JlbW92ZSB0aGUgdW51c2VkIF9fVVNFX1VOSVg5OCB0byBmaXggbXVzbCBidWlsZCBmYWlsdXJlcy4KKworU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvdG9vbHMvcG1lbXBvb2wvaW5mby5jIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90b29scy9wbWVtcG9vbC9pbmZvLmMgYi9zcmMvdG9vbHMvcG1lbXBvb2wvaW5mby5jCitpbmRleCBiNDAxMGJmMzUuLjdiODkwYTEyMyAxMDA2NDQKKy0tLSBhL3NyYy90b29scy9wbWVtcG9vbC9pbmZvLmMKKysrKyBiL3NyYy90b29scy9wbWVtcG9vbC9pbmZvLmMKK0BAIC00NSw5ICs0NSw2IEBACisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0jaWZuZGVmIF9fRnJlZUJTRF9fCistI2RlZmluZSBfX1VTRV9VTklYOTgKKy0jZW5kaWYKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDA2LU1ha2VmaWxlLmluYy1BbGxvdy1leHRyYS1saWJzLXRvLWJlLXNwZWNpZmllZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wbWRrL2ZpbGVzLzAwMDYtTWFrZWZpbGUuaW5jLUFsbG93LWV4dHJhLWxpYnMtdG8tYmUtc3BlY2lmaWVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNDJmZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9maWxlcy8wMDA2LU1ha2VmaWxlLmluYy1BbGxvdy1leHRyYS1saWJzLXRvLWJlLXNwZWNpZmllZC5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGE4OGU4MDZmOWNlOGNjMDcxZTgxYWJhZDY4ODY0M2Q1M2YzOTMxNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBNb24sIDEwIFNlcCAyMDE4IDE0OjE4OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBNYWtlZmlsZS5pbmM6IEFsbG93IGV4dHJhIGxpYnMgdG8gYmUgc3BlY2lmaWVkCisKK1NpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL01ha2VmaWxlLmluYyAgICAgICB8IDIgKysKKyBzcmMvY29tbW9uLmluYyAgICAgICAgIHwgMiArKworIHNyYy90b29scy9NYWtlZmlsZS5pbmMgfCAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi5pbmMgYi9zcmMvY29tbW9uLmluYworaW5kZXggMDMyY2I4M2VhLi4yZDVjNGJlZGYgMTAwNjQ0CistLS0gYS9zcmMvY29tbW9uLmluYworKysrIGIvc3JjL2NvbW1vbi5pbmMKK0BAIC03NCw2ICs3NCw4IEBAIEdDT1ZfQ0ZMQUdTPS1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAtLWNvdmVyYWdlCisgR0NPVl9MREZMQUdTPS1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZQorIEdDT1ZfTElCUz0tbGdjb3YKKyAKKytMSUJTICs9ICQoRVhUUkFfTElCUykKKysKKyBvc2RlcCA9ICQoMSlfJChzaGVsbCB1bmFtZSAtcyB8IHRyICJbOnVwcGVyOl0iICJbOmxvd2VyOl0iKSQoMikKKyBnZXRfYXJjaCA9ICQoc2hlbGwgJChDQykgLWR1bXBtYWNoaW5lIHwgYXdrIC1GJ1svLV0nICd7cHJpbnQgJCQxfScpCisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG1kay9wbWRrXzEuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BtZGsvcG1ka18xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGEyMmE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BtZGsvcG1ka18xLjQuMi5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIlBlcnNpc3RlbnQgTWVtb3J5IERldmVsb3BtZW50IEtpdCIKK0RFU0NSSVBUSU9OID0gIlBlcnNpc3RlbnQgTWVtb3J5IERldmVsb3BtZW50IEtpdCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wbWVtLmlvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03ZGIxMTA2MjU1YTFiYWE4MDM5MWZkMmUyMWVlYmFiNyIKK0RFUEVORFMgPSAibmRjdGwiCisKKyMgUmVxdWlyZWQgdG8gaGF2ZSB0aGUgZnRzLmggaGVhZGVyIGZvciBtdXNsCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcG1lbS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1qZW1hbGxvYy1qZW1hbGxvYy5jZmctU3BlY2lmeS10aGUtaG9zdC13aGVuLWJ1aWxkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZWZpbGUtRG9uLXQtaW5zdGFsbC10aGUtZG9jcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLU1ha2VmaWxlLURvbi10LWJ1aWxkLXRoZS1leGFtcGxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXBtZW1wb29sLVJlbW92ZS11bnVzZWQtX19VU0VfVU5JWDk4LWRlZmluZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LU1ha2VmaWxlLmluYy1BbGxvdy1leHRyYS1saWJzLXRvLWJlLXNwZWNpZmllZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA0LW9zX3Bvc2l4LU1hbnVhbGx5LWltcGxlbWVudC1zZWN1cmVfZ2V0ZW52LWlmLXJlcXVpcmUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZGU3M2JjYTllZjViOTA5MTFkZWIwZmRjZmIxNWNjZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZjdlNjU4ZTc1ZDI4Y2Q4MGY2ZDJmZjdiOWZjOWFlMjg4NWQ1MmY4OTIzZmRiYWNlY2ZkNDYyMTUxMTVmYjRjIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKKyMgRml4IGplbWFsbG9jIGVycm9yOgorIyB8IGNvbmZpZ3VyZTogZXJyb3I6IGNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KKyMgfCBJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIGAtLWhvc3QnLgorIworIyBBbHNvIGZpeCAjd2FybmluZyBfRk9SVElGWV9TT1VSQ0UgcmVxdWlyZXMgY29tcGlsaW5nIHdpdGggb3B0aW1pemF0aW9uICgtTykgWy1XZXJyb3I9Y3BwXQorRVhUUkFfT0VNQUtFID0gIkhPU1RfU1lTPScke0hPU1RfU1lTfScgRVhUUkFfQ0ZMQUdTPScke1NFTEVDVEVEX09QVElNSVpBVElPTn0nIgorCisjIEZpeCB0aGUgbWlzc2luZyBmdHMgbGlicyB3aGVuIHVzaW5nIG11c2wKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBFWFRSQV9MSUJTPSctbGZ0cyciCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBQUkVGSVg9JHtwcmVmaXh9IERFU1RESVI9JHtEfSBpbnN0YWxsCisKKwkjIENvcHkgdGhlc2UgaW50byB0aGUgc3RhbmRhcmQgZGlyZWN0b3JpZXMKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisJbXYgJHtEfS91c3IvbG9jYWwvYmluL3BtZW1wb29sICR7RH0ke2JpbmRpcn0vCisJbXYgJHtEfS91c3IvbG9jYWwvYmluL2RheGlvICR7RH0ke2JpbmRpcn0vCisKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwltdiAke0R9L3Vzci9sb2NhbC9saWIvKnNvKiAke0R9JHtsaWJkaXJ9LworCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCW12ICR7RH0vdXNyL2xvY2FsL2xpYi9wa2djb25maWcvKi5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwltdiAke0R9L3Vzci9sb2NhbC9pbmNsdWRlLyogJHtEfSR7aW5jbHVkZWRpcn0vCisKKwkjIFJlbW92ZSB1bmVlZGVkIGZpbGVzCisJcm0gLXJmICR7RH0vdXNyL2xvY2FsLworfQorCisjIEluY2x1ZGUgdGhlc2UgYnkgZGVmYXVsdCBvdGhlcndpc2UgdGhlIFNESyBpcyBub3QgdmVyeSB1c2VmdWwKK0ZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0vcG1lbXBvb2wgJHtiaW5kaXJ9L2RheGlvIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qc28qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9wa2djb25maWcvKi5wYyIKK0ZJTEVTXyR7UE59ICs9ICIke2luY2x1ZGVkaXJ9L2xpYnBtZW1vYmorKy8qICR7aW5jbHVkZWRpcn0vbGlicG1lbW9iai8qIgorCitDT01QQVRJQkxFX0hPU1Q9Jyh4ODZfNjQpLionCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC8wMDAxLW1ha2UtbmV0Z3JvdXAtc3VwcG9ydC1jb25maWd1cmFibGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC8wMDAxLW1ha2UtbmV0Z3JvdXAtc3VwcG9ydC1jb25maWd1cmFibGUucGF0Y2gKaW5kZXggNGUzYWY4Ny4uM2IwZWY1ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQvMDAwMS1tYWtlLW5ldGdyb3VwLXN1cHBvcnQtY29uZmlndXJhYmxlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0LzAwMDEtbWFrZS1uZXRncm91cC1zdXBwb3J0LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMTIsMTYgKzEyLDE5IEBACiAtLS0KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCitSZWJhc2UgdG8gMC4xMTUKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQogIHNyYy9wb2xraXRiYWNrZW5kL3BvbGtpdGJhY2tlbmRpbnRlcmFjdGl2ZWF1dGhvcml0eS5jIHwgNiArKysrKy0KLSBzcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kanNhdXRob3JpdHkuYyAgICAgICAgICB8IDUgKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBzcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kanNhdXRob3JpdHkuY3BwICAgICAgICB8IDIgKysKKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDc5ODJkMS4uMjE1OTBiMiAxMDA2NDQKK2luZGV4IDhiM2UxYjEuLjFjMzkyZGYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE1OCw3ICsxNTgsNyBAQCBBQ19DSEVDS19MSUIoZXhwYXQsWE1MX1BhcnNlckNyZWF0ZSxbRVhQQVRfTElCUz0iLWxleHBhdCJdLAorQEAgLTk5LDcgKzk5LDcgQEAgQUNfQ0hFQ0tfTElCKGV4cGF0LFhNTF9QYXJzZXJDcmVhdGUsW0VYUEFUX0xJQlM9Ii1sZXhwYXQiXSwKICAJICAgICBbQUNfTVNHX0VSUk9SKFtDYW4ndCBmaW5kIGV4cGF0IGxpYnJhcnkuIFBsZWFzZSBpbnN0YWxsIGV4cGF0Ll0pXSkKICBBQ19TVUJTVChFWFBBVF9MSUJTKQogIApAQCAtMzEsMTAgKzM0LDEwIEBACiAgaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCiAgICBMREZMQUdTPSItV2wsLS1hcy1uZWVkZWQgJExERkxBR1MiCiBkaWZmIC0tZ2l0IGEvc3JjL3BvbGtpdGJhY2tlbmQvcG9sa2l0YmFja2VuZGludGVyYWN0aXZlYXV0aG9yaXR5LmMgYi9zcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kaW50ZXJhY3RpdmVhdXRob3JpdHkuYwotaW5kZXggNzAxOTM1Ni4uY2YzOWQ3NyAxMDA2NDQKK2luZGV4IGNiNmZkYWIuLmRlM2Y3NTIgMTAwNjQ0CiAtLS0gYS9zcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kaW50ZXJhY3RpdmVhdXRob3JpdHkuYwogKysrIGIvc3JjL3BvbGtpdGJhY2tlbmQvcG9sa2l0YmFja2VuZGludGVyYWN0aXZlYXV0aG9yaXR5LmMKLUBAIC0yMjEzLDcgKzIyMTMsNyBAQCBnZXRfdXNlcnNfaW5fZ3JvdXAgKFBvbGtpdElkZW50aXR5ICAgICAgICAgICAgICAgICAgICAqZ3JvdXAsCitAQCAtMjIyNCw3ICsyMjI0LDcgQEAgZ2V0X3VzZXJzX2luX2dyb3VwIChQb2xraXRJZGVudGl0eSAgICAgICAgICAgICAgICAgICAgKmdyb3VwLAogICBvdXQ6CiAgICByZXR1cm4gcmV0OwogIH0KQEAgLTQzLDcgKzQ2LDcgQEAKICBzdGF0aWMgR0xpc3QgKgogIGdldF91c2Vyc19pbl9uZXRfZ3JvdXAgKFBvbGtpdElkZW50aXR5ICAgICAgICAgICAgICAgICAgICAqZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3Jvb3QpCi1AQCAtMjI3MCw2ICsyMjcwLDggQEAgZ2V0X3VzZXJzX2luX25ldF9ncm91cCAoUG9sa2l0SWRlbnRpdHkgICAgICAgICAgICAgICAgICAgICpncm91cCwKK0BAIC0yMjg1LDYgKzIyODUsOCBAQCBnZXRfdXNlcnNfaW5fbmV0X2dyb3VwIChQb2xraXRJZGVudGl0eSAgICAgICAgICAgICAgICAgICAgKmdyb3VwLAogICAgcmV0dXJuIHJldDsKICB9CiAgCkBAIC01Miw3ICs1NSw3IEBACiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMjM1NSwxMCArMjM1NywxMiBAQCBhdXRoZW50aWNhdGlvbl9hZ2VudF9pbml0aWF0ZV9jaGFsbGVuZ2UgKEF1dGhlbnRpY2F0aW9uQWdlbnQgICAgICAgICAqYWdlbnQsCitAQCAtMjM2OSwxMCArMjM3MSwxMiBAQCBhdXRoZW50aWNhdGlvbl9hZ2VudF9pbml0aWF0ZV9jaGFsbGVuZ2UgKEF1dGhlbnRpY2F0aW9uQWdlbnQgICAgICAgICAqYWdlbnQsCiAgICAgICAgICB7CiAgICAgICAgICAgIHVzZXJfaWRlbnRpdGllcyA9IGdfbGlzdF9jb25jYXQgKHVzZXJfaWRlbnRpdGllcywgZ2V0X3VzZXJzX2luX2dyb3VwIChpZGVudGl0eSwgRkFMU0UpKTsKICAgICAgICAgIH0KQEAgLTY1LDQzICs2OCwyNiBAQAogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgZ193YXJuaW5nICgiVW5zdXBwb3J0ZWQgaWRlbnRpdHkiKTsKLWRpZmYgLS1naXQgYS9zcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kanNhdXRob3JpdHkuYyBiL3NyYy9wb2xraXRiYWNrZW5kL3BvbGtpdGJhY2tlbmRqc2F1dGhvcml0eS5jCi1pbmRleCAwOTdkY2M1Li5lNTliM2Y3IDEwMDY0NAotLS0tIGEvc3JjL3BvbGtpdGJhY2tlbmQvcG9sa2l0YmFja2VuZGpzYXV0aG9yaXR5LmMKLSsrKyBiL3NyYy9wb2xraXRiYWNrZW5kL3BvbGtpdGJhY2tlbmRqc2F1dGhvcml0eS5jCi1AQCAtMTQ5OCw3ICsxNDk4LDYgQEAganNfcG9sa2l0X3NwYXduIChKU0NvbnRleHQgICpjeCwKLSAKLSAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0gCi0tCi0gc3RhdGljIEpTQm9vbAotIGpzX3BvbGtpdF91c2VyX2lzX2luX25ldGdyb3VwIChKU0NvbnRleHQgICpjeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgICAgYXJnYywKLUBAIC0xNTE4LDYgKzE1MTcsNyBAQCBqc19wb2xraXRfdXNlcl9pc19pbl9uZXRncm91cCAoSlNDb250ZXh0ICAqY3gsCi0gICB1c2VyID0gSlNfRW5jb2RlU3RyaW5nIChjeCwgdXNlcl9zdHIpOwotICAgbmV0Z3JvdXAgPSBKU19FbmNvZGVTdHJpbmcgKGN4LCBuZXRncm91cF9zdHIpOworZGlmZiAtLWdpdCBhL3NyYy9wb2xraXRiYWNrZW5kL3BvbGtpdGJhY2tlbmRqc2F1dGhvcml0eS5jcHAgYi9zcmMvcG9sa2l0YmFja2VuZC9wb2xraXRiYWNrZW5kanNhdXRob3JpdHkuY3BwCitpbmRleCA1MTdmM2M2Li42MDQyZGQyIDEwMDY0NAorLS0tIGEvc3JjL3BvbGtpdGJhY2tlbmQvcG9sa2l0YmFja2VuZGpzYXV0aG9yaXR5LmNwcAorKysrIGIvc3JjL3BvbGtpdGJhY2tlbmQvcG9sa2l0YmFja2VuZGpzYXV0aG9yaXR5LmNwcAorQEAgLTE1MDIsNiArMTUwMiw3IEBAIGpzX3BvbGtpdF91c2VyX2lzX2luX25ldGdyb3VwIChKU0NvbnRleHQgICpjeCwKKyAgIHVzZXIgPSBKU19FbmNvZGVTdHJpbmcgKGN4LCBhcmdzWzBdLnRvU3RyaW5nKCkpOworICAgbmV0Z3JvdXAgPSBKU19FbmNvZGVTdHJpbmcgKGN4LCBhcmdzWzFdLnRvU3RyaW5nKCkpOwogIAogKyNpZiBkZWZpbmVkIEhBVkVfSU5ORVRHUgogICAgaWYgKGlubmV0Z3IgKG5ldGdyb3VwLAogICAgICAgICAgICAgICAgIE5VTEwsICAvKiBob3N0ICovCiAgICAgICAgICAgICAgICAgdXNlciwKLUBAIC0xNTI1LDYgKzE1MjUsNyBAQCBqc19wb2xraXRfdXNlcl9pc19pbl9uZXRncm91cCAoSlNDb250ZXh0ICAqY3gsCitAQCAtMTUwOSw2ICsxNTEwLDcgQEAganNfcG9sa2l0X3VzZXJfaXNfaW5fbmV0Z3JvdXAgKEpTQ29udGV4dCAgKmN4LAogICAgICB7Ci0gICAgICAgaXNfaW5fbmV0Z3JvdXAgPSAgSlNfVFJVRTsKKyAgICAgICBpc19pbl9uZXRncm91cCA9ICB0cnVlOwogICAgICB9CiArI2VuZGlmCiAgCiAgICBKU19mcmVlIChjeCwgbmV0Z3JvdXApOwogICAgSlNfZnJlZSAoY3gsIHVzZXIpOwotQEAgLTE1MzYsOCArMTUzNyw2IEBAIGpzX3BvbGtpdF91c2VyX2lzX2luX25ldGdyb3VwIChKU0NvbnRleHQgICpjeCwKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotLQotLQotIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLSAKLSB0eXBlZGVmIHN0cnVjdAogLS0gCi0yLjcuMAorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQvcG9sa2l0LTFfcGFtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXQvcG9sa2l0LTFfcGFtLnBhdGNoCmluZGV4IDc0NjQ3ZWYuLmM0OTFhYmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0L3BvbGtpdC0xX3BhbS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdC9wb2xraXQtMV9wYW0ucGF0Y2gKQEAgLTQsOSArNCwxOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgogCi0tLS0gYS9jb25maWd1cmUuYWMJMjAxMS0wMy0wNCAwMjoyNjoyMC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBiL2NvbmZpZ3VyZS5hYy5uZXcJMjAxMS0wNy0xOCAxMDoxNDoxMi41MTY4MTg4NTIgKzA4MDAKLUBAIC0zNTAsMTAgKzM1MCwxMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KK1JlYmFzZSB0byAwLjExNQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDM2ZGYyMzkuLjhiM2UxYjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ3MSwxMCArNDcxLDEwIEBAIGVsaWYgdGVzdCB4JHdpdGhfb3NfdHlwZSA9IHhmcmVlYnNkIC1vIHgkd2l0aF9vc190eXBlID0geG5ldGJzZDsgdGhlbgogICAgICBQQU1fRklMRV9JTkNMVURFX1BBU1NXT1JEPXN5c3RlbQogICAgICBQQU1fRklMRV9JTkNMVURFX1NFU1NJT049c3lzdGVtCiAgZWxzZQpAQCAtMjEsMyArMzAsNiBAQAogIGZpCiAgCiAgQUNfU1VCU1QoUEFNX0ZJTEVfSU5DTFVERV9BVVRIKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdF8wLjExMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0XzAuMTEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzQ5MjhmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wb2xraXQvcG9sa2l0XzAuMTEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJQb2xpY3lLaXQgQXV0aG9yaXphdGlvbiBGcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJUaGUgcG9sa2l0IHBhY2thZ2UgaXMgYW4gYXBwbGljYXRpb24tbGV2ZWwgdG9vbGtpdCBmb3IgZGVmaW5pbmcgYW5kIGhhbmRsaW5nIHRoZSBwb2xpY3kgdGhhdCBhbGxvd3MgdW5wcml2aWxlZ2VkIHByb2Nlc3NlcyB0byBzcGVhayB0byBwcml2aWxlZ2VkIHByb2Nlc3Nlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3BvbGtpdCIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE1NWRiODZjZGJhZmE3NTMyYjQxZjM5MDQwOTI4M2ViIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb2xraXQvcG9sa2l0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MGE4NjMwYjAxMzMxNzZkMDUwNGM4N2EwZGVkMzlkYjQiCi0KLURFUEVORFMgPSAiZXhwYXQgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIG1vempzIgotCi1pbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2NvbnNvbGVraXQnLCAnJywgZCksIGQpfSBcCi0gICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLWF1dGhmdz1wYW0sLS13aXRoLWF1dGhmdz1zaGFkb3csbGlicGFtLGxpYnBhbSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtbGlic3lzdGVtZC1sb2dpbj15ZXMgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0tZW5hYmxlLWxpYnN5c3RlbWQtbG9naW49bm8gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSxzeXN0ZW1kIgotIyB0aGVyZSBpcyBubyAtLWVuYWJsZS8tLWRpc2FibGUgb3B0aW9uIGZvciBjb25zb2xla2l0IGFuZCBpdCdzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMKLVBBQ0tBR0VDT05GSUdbY29uc29sZWtpdF0gPSAiLCwsY29uc29sZWtpdCIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BvbGtpdC0xX3BhbS5wYXRjaCIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcG9sa2l0L3JlbGVhc2VzL3BvbGtpdC0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLW1ha2UtbmV0Z3JvdXAtc3VwcG9ydC1jb25maWd1cmFibGUucGF0Y2ggXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNGI3Nzc3NmM5ZTRmODk3ZGNmZTAzYjJjMzQxOThlZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFjMDk1MDkzYzY1NDk1MWY3OGY4NjE4ZDQyN2ZhZjkxY2Y2MmFiZGVmZWQ5OGRlNDBmZjY1ZWNhNjQxM2M4MSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1vcy10eXBlPW1vYmxpbiAtLWRpc2FibGUtbWFuLXBhZ2VzIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy9wb2xraXQvLmxpYnMiCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7QlBOfS0xIFwKLSAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0tMSBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LTEgXAotIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKmV4YW1wbGUqIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vJHtCUE59LTEgcG9sa2l0ZCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXRfMC4xMTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcG9sa2l0L3BvbGtpdF8wLjExNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDBmNjZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BvbGtpdC9wb2xraXRfMC4xMTUuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJQb2xpY3lLaXQgQXV0aG9yaXphdGlvbiBGcmFtZXdvcmsiCitERVNDUklQVElPTiA9ICJUaGUgcG9sa2l0IHBhY2thZ2UgaXMgYW4gYXBwbGljYXRpb24tbGV2ZWwgdG9vbGtpdCBmb3IgZGVmaW5pbmcgYW5kIGhhbmRsaW5nIHRoZSBwb2xpY3kgdGhhdCBhbGxvd3MgdW5wcml2aWxlZ2VkIHByb2Nlc3NlcyB0byBzcGVhayB0byBwcml2aWxlZ2VkIHByb2Nlc3Nlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3BvbGtpdCIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE1NWRiODZjZGJhZmE3NTMyYjQxZjM5MDQwOTI4M2ViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb2xraXQvcG9sa2l0Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MGE4NjMwYjAxMzMxNzZkMDUwNGM4N2EwZGVkMzlkYjQiCisKK0RFUEVORFMgPSAiZXhwYXQgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIG1vempzIgorCitpbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZyB1c2VyYWRkIHN5c3RlbWQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2NvbnNvbGVraXQnLCAnJywgZCksIGQpfSBcCisgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLWF1dGhmdz1wYW0sLS13aXRoLWF1dGhmdz1zaGFkb3csbGlicGFtLGxpYnBhbSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtbGlic3lzdGVtZC1sb2dpbj15ZXMgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0tZW5hYmxlLWxpYnN5c3RlbWQtbG9naW49bm8gLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSxzeXN0ZW1kIgorIyB0aGVyZSBpcyBubyAtLWVuYWJsZS8tLWRpc2FibGUgb3B0aW9uIGZvciBjb25zb2xla2l0IGFuZCBpdCdzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMKK1BBQ0tBR0VDT05GSUdbY29uc29sZWtpdF0gPSAiLCwsY29uc29sZWtpdCIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BvbGtpdC0xX3BhbS5wYXRjaCIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcG9sa2l0L3JlbGVhc2VzL3BvbGtpdC0ke1BWfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLW1ha2UtbmV0Z3JvdXAtc3VwcG9ydC1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZjAzYjA1NWQ2YWU1ZmM4ZWFjNzY4MzhjN2Q4M2QwODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmY4N2VjZGFiZmJkNDE1YzYzMDY2NzNjZWFkYzU5ODQ2ZjA1OWIxOGVmMmZjZTQyYmFjNjNmZTI4M2YxMjEzMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1vcy10eXBlPW1vYmxpbiBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW1hbi1wYWdlcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmVsb2dpbmQgXAorICAgICAgICAgICAgICAgIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy9wb2xraXQvLmxpYnMiCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn1fYXBwZW5kID0gIiBcCisgICAgJHtsaWJkaXJ9LyR7QlBOfS0xIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0tMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LTEgXAorICAgICR7ZGF0YWRpcn0vZ2V0dGV4dCBcCisiCisKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7YmluZGlyfS8qZXhhbXBsZSoiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS8ke0JQTn0tMSBwb2xraXRkIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvaGlyZWRpcy11cGRhdGUtTWFrZWZpbGUtdG8tYWRkLXN5bWJvbHMtdG8tc3RhdGljbGliLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzL2hpcmVkaXMtdXBkYXRlLU1ha2VmaWxlLXRvLWFkZC1zeW1ib2xzLXRvLXN0YXRpY2xpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIzYjU4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvaGlyZWRpcy11cGRhdGUtTWFrZWZpbGUtdG8tYWRkLXN5bWJvbHMtdG8tc3RhdGljbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLS0tIHJlZGlzLTMuMC4yL2RlcHMvaGlyZWRpcy9NYWtlZmlsZS5vcmlnCTIwMTYtMDUtMDYgMTk6MzY6MjYuMTc5MDAzMDM2IC0wNzAwCi0rKysgcmVkaXMtMy4wLjIvZGVwcy9oaXJlZGlzL01ha2VmaWxlCTIwMTYtMDUtMDYgMTk6NDA6MTUuMzQxMzQwNzM2IC0wNzAwCi1AQCAtMjUsNyArMjUsNyBAQAotIAotICMgRmFsbGJhY2sgdG8gZ2NjIHdoZW4gJENDIGlzIG5vdCBpbiAkUEFUSC4KLSBDQz89JChzaGVsbCBzaCAtYyAndHlwZSAkKENDKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsICYmIGVjaG8gJChDQykgfHwgZWNobyBnY2MnKQotLU9QVElNSVpBVElPTj89LU8zCi0rT1BUSU1JWkFUSU9OPz0tTzIKLSBXQVJOSU5HUz0tV2FsbCAtVyAtV3N0cmljdC1wcm90b3R5cGVzIC1Xd3JpdGUtc3RyaW5ncwotIERFQlVHPz0gLWcgLWdnZGIKLSBSRUFMX0NGTEFHUz0kKE9QVElNSVpBVElPTikgLWZQSUMgJChDRkxBR1MpICQoV0FSTklOR1MpICQoREVCVUcpICQoQVJDSCkKLUBAIC02OCw2ICs2OCw3IEBACi0gCi0gJChTVExJQk5BTUUpOiAkKE9CSikKLSAJJChTVExJQl9NQUtFX0NNRCkgJChPQkopCi0rCSQoUkFOTElCKSAkQAotIAotIGR5bmFtaWM6ICQoRFlMSUJOQU1FKQotIHN0YXRpYzogJChTVExJQk5BTUUpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2gKaW5kZXggZjlmMWMwZC4uNDIxZjMwNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzL2hpcmVkaXMtdXNlLWRlZmF1bHQtQ0MtaWYtaXQtaXMtc2V0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9oaXJlZGlzLXVzZS1kZWZhdWx0LUNDLWlmLWl0LWlzLXNldC5wYXRjaApAQCAtOCwyMyArOCwyMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBWZW50dXJlIFJlc2VhcmNoIDx0ZWNoQHZlbnR1cmVyZXNlYXJjaC5jb20+CiAKLVVwZGF0ZSB0byB3b3JrIHdpdGggMy4wLngKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CitVcGRhdGUgdG8gd29yayB3aXRoIDQuMC44CitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CiAKIC0tLQogIGRlcHMvaGlyZWRpcy9NYWtlZmlsZSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGRlcHMvaGlyZWRpcy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL2RlcHMvaGlyZWRpcy9NYWtlZmlsZSBiL2RlcHMvaGlyZWRpcy9NYWtlZmlsZQoraW5kZXggOWE0ZGU4MzYuLjI3MWMwNmJhIDEwMDY0NAogLS0tIGEvZGVwcy9oaXJlZGlzL01ha2VmaWxlCiArKysgYi9kZXBzL2hpcmVkaXMvTWFrZWZpbGUKLUBAIC0yNCw3ICsyNCw3IEBAIGVuZGVmCitAQCAtMzYsNyArMzYsNyBAQCBlbmRlZgogIGV4cG9ydCBSRURJU19URVNUX0NPTkZJRwogIAogICMgRmFsbGJhY2sgdG8gZ2NjIHdoZW4gJENDIGlzIG5vdCBpbiAkUEFUSC4KIC1DQzo9JChzaGVsbCBzaCAtYyAndHlwZSAkKENDKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsICYmIGVjaG8gJChDQykgfHwgZWNobyBnY2MnKQogK0NDPz0kKHNoZWxsIHNoIC1jICd0eXBlICQoQ0MpID4vZGV2L251bGwgMj4vZGV2L251bGwgJiYgZWNobyAkKENDKSB8fCBlY2hvIGdjYycpCisgQ1hYOj0kKHNoZWxsIHNoIC1jICd0eXBlICQoQ1hYKSA+L2Rldi9udWxsIDI+L2Rldi9udWxsICYmIGVjaG8gJChDWFgpIHx8IGVjaG8gZysrJykKICBPUFRJTUlaQVRJT04/PS1PMwogIFdBUk5JTkdTPS1XYWxsIC1XIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd3cml0ZS1zdHJpbmdzCi0gREVCVUc/PSAtZyAtZ2dkYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzL29lLXVzZS1saWJjLW1hbGxvYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9vZS11c2UtbGliYy1tYWxsb2MucGF0Y2gKaW5kZXggYjc2OGE3Ny4uNjc0NWYzZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzL29lLXVzZS1saWJjLW1hbGxvYy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvb2UtdXNlLWxpYmMtbWFsbG9jLnBhdGNoCkBAIC0xMSwxNSArMTEsMTUgQEAKIAogU2lnbmVkLW9mZi1ieTogVmVudHVyZSBSZXNlYXJjaCA8dGVjaEB2ZW50dXJlcmVzZWFyY2guY29tPgogCi1VcGRhdGUgdG8gd29yayB3aXRoIDMuMC54Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorVXBkYXRlIHRvIHdvcmsgd2l0aCA0LjAuOAorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgogCiAtLS0KICBzcmMvTWFrZWZpbGUgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBzcmMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUgYi9zcmMvTWFrZWZpbGUKK2luZGV4IDg2ZTBiM2ZlLi5hODEwMTgwYiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCiBAQCAtMTMsNyArMTMsOCBAQApAQCAtMjksNiArMjksNiBAQAogLXVuYW1lX1MgOj0gJChzaGVsbCBzaCAtYyAndW5hbWUgLXMgMj4vZGV2L251bGwgfHwgZWNobyBub3QnKQogKyMgdXNlIGZha2UgdW5hbWUgb3B0aW9uIHRvIGZvcmNlIHVzZSBvZiBnZW5lcmljIGxpYmMKICt1bmFtZV9TIDo9ICJVU0VfTElCQ19NQUxMT0MiCisgdW5hbWVfTSA6PSAkKHNoZWxsIHNoIC1jICd1bmFtZSAtbSAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vdCcpCiAgT1BUSU1JWkFUSU9OPz0tTzIKICBERVBFTkRFTkNZX1RBUkdFVFM9aGlyZWRpcyBsaW5lbm9pc2UgbHVhCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvcmVkaXMuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9yZWRpcy5jb25mCmluZGV4IGFiMDI0YWQuLjc1MDM3ZDYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9yZWRpcy5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9yZWRpcy5jb25mCkBAIC0xLDQgKzEsOSBAQAotIyBSZWRpcyBjb25maWd1cmF0aW9uIGZpbGUgZXhhbXBsZQorIyBSZWRpcyBjb25maWd1cmF0aW9uIGZpbGUgZXhhbXBsZS4KKyMKKyMgTm90ZSB0aGF0IGluIG9yZGVyIHRvIHJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgUmVkaXMgbXVzdCBiZQorIyBzdGFydGVkIHdpdGggdGhlIGZpbGUgcGF0aCBhcyBmaXJzdCBhcmd1bWVudDoKKyMKKyMgLi9yZWRpcy1zZXJ2ZXIgL3BhdGgvdG8vcmVkaXMuY29uZgogCiAjIE5vdGUgb24gdW5pdHM6IHdoZW4gbWVtb3J5IHNpemUgaXMgbmVlZGVkLCBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5CiAjIGl0IGluIHRoZSB1c3VhbCBmb3JtIG9mIDFrIDVHQiA0TSBhbmQgc28gZm9ydGg6CkBAIC0xMiw0OCArMTcsMTYwIEBACiAjCiAjIHVuaXRzIGFyZSBjYXNlIGluc2Vuc2l0aXZlIHNvIDFHQiAxR2IgMWdCIGFyZSBhbGwgdGhlIHNhbWUuCiAKLSMgQnkgZGVmYXVsdCBSZWRpcyBkb2VzIG5vdCBydW4gYXMgYSBkYWVtb24uIFVzZSAneWVzJyBpZiB5b3UgbmVlZCBpdC4KLSMgTm90ZSB0aGF0IFJlZGlzIHdpbGwgd3JpdGUgYSBwaWQgZmlsZSBpbiAvdmFyL3J1bi9yZWRpcy5waWQgd2hlbiBkYWVtb25pemVkLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJTkNMVURFUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluY2x1ZGUgb25lIG9yIG1vcmUgb3RoZXIgY29uZmlnIGZpbGVzIGhlcmUuICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UKKyMgaGF2ZSBhIHN0YW5kYXJkIHRlbXBsYXRlIHRoYXQgZ29lcyB0byBhbGwgUmVkaXMgc2VydmVycyBidXQgYWxzbyBuZWVkCisjIHRvIGN1c3RvbWl6ZSBhIGZldyBwZXItc2VydmVyIHNldHRpbmdzLiAgSW5jbHVkZSBmaWxlcyBjYW4gaW5jbHVkZQorIyBvdGhlciBmaWxlcywgc28gdXNlIHRoaXMgd2lzZWx5LgogIworIyBOb3RpY2Ugb3B0aW9uICJpbmNsdWRlIiB3b24ndCBiZSByZXdyaXR0ZW4gYnkgY29tbWFuZCAiQ09ORklHIFJFV1JJVEUiCisjIGZyb20gYWRtaW4gb3IgUmVkaXMgU2VudGluZWwuIFNpbmNlIFJlZGlzIGFsd2F5cyB1c2VzIHRoZSBsYXN0IHByb2Nlc3NlZAorIyBsaW5lIGFzIHZhbHVlIG9mIGEgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUsIHlvdSdkIGJldHRlciBwdXQgaW5jbHVkZXMKKyMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZpbGUgdG8gYXZvaWQgb3ZlcndyaXRpbmcgY29uZmlnIGNoYW5nZSBhdCBydW50aW1lLgorIworIyBJZiBpbnN0ZWFkIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiB1c2luZyBpbmNsdWRlcyB0byBvdmVycmlkZSBjb25maWd1cmF0aW9uCisjIG9wdGlvbnMsIGl0IGlzIGJldHRlciB0byB1c2UgaW5jbHVkZSBhcyB0aGUgbGFzdCBsaW5lLgorIworIyBpbmNsdWRlIC9wYXRoL3RvL2xvY2FsLmNvbmYKKyMgaW5jbHVkZSAvcGF0aC90by9vdGhlci5jb25mCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTU9EVUxFUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgTG9hZCBtb2R1bGVzIGF0IHN0YXJ0dXAuIElmIHRoZSBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gbG9hZCBtb2R1bGVzCisjIGl0IHdpbGwgYWJvcnQuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBtdWx0aXBsZSBsb2FkbW9kdWxlIGRpcmVjdGl2ZXMuCisjCisjIGxvYWRtb2R1bGUgL3BhdGgvdG8vbXlfbW9kdWxlLnNvCisjIGxvYWRtb2R1bGUgL3BhdGgvdG8vb3RoZXJfbW9kdWxlLnNvCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTkVUV09SSyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgQnkgZGVmYXVsdCwgaWYgbm8gImJpbmQiIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIGlzIHNwZWNpZmllZCwgUmVkaXMgbGlzdGVucworIyBmb3IgY29ubmVjdGlvbnMgZnJvbSBhbGwgdGhlIG5ldHdvcmsgaW50ZXJmYWNlcyBhdmFpbGFibGUgb24gdGhlIHNlcnZlci4KKyMgSXQgaXMgcG9zc2libGUgdG8gbGlzdGVuIHRvIGp1c3Qgb25lIG9yIG11bHRpcGxlIHNlbGVjdGVkIGludGVyZmFjZXMgdXNpbmcKKyMgdGhlICJiaW5kIiBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZSwgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgSVAgYWRkcmVzc2VzLgorIworIyBFeGFtcGxlczoKKyMKKyMgYmluZCAxOTIuMTY4LjEuMTAwIDEwLjAuMC4xCisjIGJpbmQgMTI3LjAuMC4xIDo6MQorIworIyB+fn4gV0FSTklORyB+fn4gSWYgdGhlIGNvbXB1dGVyIHJ1bm5pbmcgUmVkaXMgaXMgZGlyZWN0bHkgZXhwb3NlZCB0byB0aGUKKyMgaW50ZXJuZXQsIGJpbmRpbmcgdG8gYWxsIHRoZSBpbnRlcmZhY2VzIGlzIGRhbmdlcm91cyBhbmQgd2lsbCBleHBvc2UgdGhlCisjIGluc3RhbmNlIHRvIGV2ZXJ5Ym9keSBvbiB0aGUgaW50ZXJuZXQuIFNvIGJ5IGRlZmF1bHQgd2UgdW5jb21tZW50IHRoZQorIyBmb2xsb3dpbmcgYmluZCBkaXJlY3RpdmUsIHRoYXQgd2lsbCBmb3JjZSBSZWRpcyB0byBsaXN0ZW4gb25seSBpbnRvCisjIHRoZSBJUHY0IGxvb2tiYWNrIGludGVyZmFjZSBhZGRyZXNzICh0aGlzIG1lYW5zIFJlZGlzIHdpbGwgYmUgYWJsZSB0bworIyBhY2NlcHQgY29ubmVjdGlvbnMgb25seSBmcm9tIGNsaWVudHMgcnVubmluZyBpbnRvIHRoZSBzYW1lIGNvbXB1dGVyIGl0CisjIGlzIHJ1bm5pbmcpLgorIworIyBJRiBZT1UgQVJFIFNVUkUgWU9VIFdBTlQgWU9VUiBJTlNUQU5DRSBUTyBMSVNURU4gVE8gQUxMIFRIRSBJTlRFUkZBQ0VTCisjIEpVU1QgQ09NTUVOVCBUSEUgRk9MTE9XSU5HIExJTkUuCisjIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorYmluZCAxMjcuMC4wLjEKKworIyBQcm90ZWN0ZWQgbW9kZSBpcyBhIGxheWVyIG9mIHNlY3VyaXR5IHByb3RlY3Rpb24sIGluIG9yZGVyIHRvIGF2b2lkIHRoYXQKKyMgUmVkaXMgaW5zdGFuY2VzIGxlZnQgb3BlbiBvbiB0aGUgaW50ZXJuZXQgYXJlIGFjY2Vzc2VkIGFuZCBleHBsb2l0ZWQuCisjCisjIFdoZW4gcHJvdGVjdGVkIG1vZGUgaXMgb24gYW5kIGlmOgorIworIyAxKSBUaGUgc2VydmVyIGlzIG5vdCBiaW5kaW5nIGV4cGxpY2l0bHkgdG8gYSBzZXQgb2YgYWRkcmVzc2VzIHVzaW5nIHRoZQorIyAgICAiYmluZCIgZGlyZWN0aXZlLgorIyAyKSBObyBwYXNzd29yZCBpcyBjb25maWd1cmVkLgorIworIyBUaGUgc2VydmVyIG9ubHkgYWNjZXB0cyBjb25uZWN0aW9ucyBmcm9tIGNsaWVudHMgY29ubmVjdGluZyBmcm9tIHRoZQorIyBJUHY0IGFuZCBJUHY2IGxvb3BiYWNrIGFkZHJlc3NlcyAxMjcuMC4wLjEgYW5kIDo6MSwgYW5kIGZyb20gVW5peCBkb21haW4KKyMgc29ja2V0cy4KKyMKKyMgQnkgZGVmYXVsdCBwcm90ZWN0ZWQgbW9kZSBpcyBlbmFibGVkLiBZb3Ugc2hvdWxkIGRpc2FibGUgaXQgb25seSBpZgorIyB5b3UgYXJlIHN1cmUgeW91IHdhbnQgY2xpZW50cyBmcm9tIG90aGVyIGhvc3RzIHRvIGNvbm5lY3QgdG8gUmVkaXMKKyMgZXZlbiBpZiBubyBhdXRoZW50aWNhdGlvbiBpcyBjb25maWd1cmVkLCBub3IgYSBzcGVjaWZpYyBzZXQgb2YgaW50ZXJmYWNlcworIyBhcmUgZXhwbGljaXRseSBsaXN0ZWQgdXNpbmcgdGhlICJiaW5kIiBkaXJlY3RpdmUuCitwcm90ZWN0ZWQtbW9kZSB5ZXMKKworIyBBY2NlcHQgY29ubmVjdGlvbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0LCBkZWZhdWx0IGlzIDYzNzkgKElBTkEgIzgxNTM0NCkuCisjIElmIHBvcnQgMCBpcyBzcGVjaWZpZWQgUmVkaXMgd2lsbCBub3QgbGlzdGVuIG9uIGEgVENQIHNvY2tldC4KK3BvcnQgNjM3OQorCisjIFRDUCBsaXN0ZW4oKSBiYWNrbG9nLgorIworIyBJbiBoaWdoIHJlcXVlc3RzLXBlci1zZWNvbmQgZW52aXJvbm1lbnRzIHlvdSBuZWVkIGFuIGhpZ2ggYmFja2xvZyBpbiBvcmRlcgorIyB0byBhdm9pZCBzbG93IGNsaWVudHMgY29ubmVjdGlvbnMgaXNzdWVzLiBOb3RlIHRoYXQgdGhlIExpbnV4IGtlcm5lbAorIyB3aWxsIHNpbGVudGx5IHRydW5jYXRlIGl0IHRvIHRoZSB2YWx1ZSBvZiAvcHJvYy9zeXMvbmV0L2NvcmUvc29tYXhjb25uIHNvCisjIG1ha2Ugc3VyZSB0byByYWlzZSBib3RoIHRoZSB2YWx1ZSBvZiBzb21heGNvbm4gYW5kIHRjcF9tYXhfc3luX2JhY2tsb2cKKyMgaW4gb3JkZXIgdG8gZ2V0IHRoZSBkZXNpcmVkIGVmZmVjdC4KK3RjcC1iYWNrbG9nIDUxMQorCisjIFVuaXggc29ja2V0LgorIworIyBTcGVjaWZ5IHRoZSBwYXRoIGZvciB0aGUgVW5peCBzb2NrZXQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gbGlzdGVuIGZvcgorIyBpbmNvbWluZyBjb25uZWN0aW9ucy4gVGhlcmUgaXMgbm8gZGVmYXVsdCwgc28gUmVkaXMgd2lsbCBub3QgbGlzdGVuCisjIG9uIGEgdW5peCBzb2NrZXQgd2hlbiBub3Qgc3BlY2lmaWVkLgorIworIyB1bml4c29ja2V0IC90bXAvcmVkaXMuc29jaworIyB1bml4c29ja2V0cGVybSA3MDAKKworIyBDbG9zZSB0aGUgY29ubmVjdGlvbiBhZnRlciBhIGNsaWVudCBpcyBpZGxlIGZvciBOIHNlY29uZHMgKDAgdG8gZGlzYWJsZSkKK3RpbWVvdXQgMAorCisjIFRDUCBrZWVwYWxpdmUuCisjCisjIElmIG5vbi16ZXJvLCB1c2UgU09fS0VFUEFMSVZFIHRvIHNlbmQgVENQIEFDS3MgdG8gY2xpZW50cyBpbiBhYnNlbmNlCisjIG9mIGNvbW11bmljYXRpb24uIFRoaXMgaXMgdXNlZnVsIGZvciB0d28gcmVhc29uczoKKyMKKyMgMSkgRGV0ZWN0IGRlYWQgcGVlcnMuCisjIDIpIFRha2UgdGhlIGNvbm5lY3Rpb24gYWxpdmUgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBuZXR3b3JrCisjICAgIGVxdWlwbWVudCBpbiB0aGUgbWlkZGxlLgorIworIyBPbiBMaW51eCwgdGhlIHNwZWNpZmllZCB2YWx1ZSAoaW4gc2Vjb25kcykgaXMgdGhlIHBlcmlvZCB1c2VkIHRvIHNlbmQgQUNLcy4KKyMgTm90ZSB0aGF0IHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uIHRoZSBkb3VibGUgb2YgdGhlIHRpbWUgaXMgbmVlZGVkLgorIyBPbiBvdGhlciBrZXJuZWxzIHRoZSBwZXJpb2QgZGVwZW5kcyBvbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uCisjCisjIEEgcmVhc29uYWJsZSB2YWx1ZSBmb3IgdGhpcyBvcHRpb24gaXMgMzAwIHNlY29uZHMsIHdoaWNoIGlzIHRoZSBuZXcKKyMgUmVkaXMgZGVmYXVsdCBzdGFydGluZyB3aXRoIFJlZGlzIDMuMi4xLgordGNwLWtlZXBhbGl2ZSAzMDAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEdFTkVSQUwgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiAjIE9FOiBydW4gYXMgYSBkYWVtb24uCi0jCiBkYWVtb25pemUgeWVzCiAKKyMgSWYgeW91IHJ1biBSZWRpcyBmcm9tIHVwc3RhcnQgb3Igc3lzdGVtZCwgUmVkaXMgY2FuIGludGVyYWN0IHdpdGggeW91cgorIyBzdXBlcnZpc2lvbiB0cmVlLiBPcHRpb25zOgorIyAgIHN1cGVydmlzZWQgbm8gICAgICAtIG5vIHN1cGVydmlzaW9uIGludGVyYWN0aW9uCisjICAgc3VwZXJ2aXNlZCB1cHN0YXJ0IC0gc2lnbmFsIHVwc3RhcnQgYnkgcHV0dGluZyBSZWRpcyBpbnRvIFNJR1NUT1AgbW9kZQorIyAgIHN1cGVydmlzZWQgc3lzdGVtZCAtIHNpZ25hbCBzeXN0ZW1kIGJ5IHdyaXRpbmcgUkVBRFk9MSB0byAkTk9USUZZX1NPQ0tFVAorIyAgIHN1cGVydmlzZWQgYXV0byAgICAtIGRldGVjdCB1cHN0YXJ0IG9yIHN5c3RlbWQgbWV0aG9kIGJhc2VkIG9uCisjICAgICAgICAgICAgICAgICAgICAgICAgVVBTVEFSVF9KT0Igb3IgTk9USUZZX1NPQ0tFVCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyMgTm90ZTogdGhlc2Ugc3VwZXJ2aXNpb24gbWV0aG9kcyBvbmx5IHNpZ25hbCAicHJvY2VzcyBpcyByZWFkeS4iCisjICAgICAgIFRoZXkgZG8gbm90IGVuYWJsZSBjb250aW51b3VzIGxpdmVuZXNzIHBpbmdzIGJhY2sgdG8geW91ciBzdXBlcnZpc29yLgorc3VwZXJ2aXNlZCBubworCisjIElmIGEgcGlkIGZpbGUgaXMgc3BlY2lmaWVkLCBSZWRpcyB3cml0ZXMgaXQgd2hlcmUgc3BlY2lmaWVkIGF0IHN0YXJ0dXAKKyMgYW5kIHJlbW92ZXMgaXQgYXQgZXhpdC4KKyMKKyMgV2hlbiB0aGUgc2VydmVyIHJ1bnMgbm9uIGRhZW1vbml6ZWQsIG5vIHBpZCBmaWxlIGlzIGNyZWF0ZWQgaWYgbm9uZSBpcworIyBzcGVjaWZpZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIFdoZW4gdGhlIHNlcnZlciBpcyBkYWVtb25pemVkLCB0aGUgcGlkIGZpbGUKKyMgaXMgdXNlZCBldmVuIGlmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHRpbmcgdG8gIi92YXIvcnVuL3JlZGlzLnBpZCIuCisjCisjIENyZWF0aW5nIGEgcGlkIGZpbGUgaXMgYmVzdCBlZmZvcnQ6IGlmIFJlZGlzIGlzIG5vdCBhYmxlIHRvIGNyZWF0ZSBpdAorIyBub3RoaW5nIGJhZCBoYXBwZW5zLCB0aGUgc2VydmVyIHdpbGwgc3RhcnQgYW5kIHJ1biBub3JtYWxseS4KKwogIyBXaGVuIHJ1bm5pbmcgZGFlbW9uaXplZCwgUmVkaXMgd3JpdGVzIGEgcGlkIGZpbGUgaW4gL3Zhci9ydW4vcmVkaXMucGlkIGJ5CiAjIGRlZmF1bHQuIFlvdSBjYW4gc3BlY2lmeSBhIGN1c3RvbSBwaWQgZmlsZSBsb2NhdGlvbiBoZXJlLgogcGlkZmlsZSAvdmFyL3J1bi9yZWRpcy5waWQKIAotIyBBY2NlcHQgY29ubmVjdGlvbnMgb24gdGhlIHNwZWNpZmllZCBwb3J0LCBkZWZhdWx0IGlzIDYzNzkuCi0jIElmIHBvcnQgMCBpcyBzcGVjaWZpZWQgUmVkaXMgd2lsbCBub3QgbGlzdGVuIG9uIGEgVENQIHNvY2tldC4KLXBvcnQgNjM3OQotCi0jIElmIHlvdSB3YW50IHlvdSBjYW4gYmluZCBhIHNpbmdsZSBpbnRlcmZhY2UsIGlmIHRoZSBiaW5kIG9wdGlvbiBpcyBub3QKLSMgc3BlY2lmaWVkIGFsbCB0aGUgaW50ZXJmYWNlcyB3aWxsIGxpc3RlbiBmb3IgaW5jb21pbmcgY29ubmVjdGlvbnMuCi0jCi1iaW5kIDEyNy4wLjAuMQotCi0jIFNwZWNpZnkgdGhlIHBhdGggZm9yIHRoZSB1bml4IHNvY2tldCB0aGF0IHdpbGwgYmUgdXNlZCB0byBsaXN0ZW4gZm9yCi0jIGluY29taW5nIGNvbm5lY3Rpb25zLiBUaGVyZSBpcyBubyBkZWZhdWx0LCBzbyBSZWRpcyB3aWxsIG5vdCBsaXN0ZW4KLSMgb24gYSB1bml4IHNvY2tldCB3aGVuIG5vdCBzcGVjaWZpZWQuCi0jCi0jIHVuaXhzb2NrZXQgL3RtcC9yZWRpcy5zb2NrCi0jIHVuaXhzb2NrZXRwZXJtIDc1NQotCi0jIENsb3NlIHRoZSBjb25uZWN0aW9uIGFmdGVyIGEgY2xpZW50IGlzIGlkbGUgZm9yIE4gc2Vjb25kcyAoMCB0byBkaXNhYmxlKQotdGltZW91dCAwCi0KLSMgU2V0IHNlcnZlciB2ZXJib3NpdHkgdG8gJ2RlYnVnJwotIyBpdCBjYW4gYmUgb25lIG9mOgorIyBTcGVjaWZ5IHRoZSBzZXJ2ZXIgdmVyYm9zaXR5IGxldmVsLgorIyBUaGlzIGNhbiBiZSBvbmUgb2Y6CiAjIGRlYnVnIChhIGxvdCBvZiBpbmZvcm1hdGlvbiwgdXNlZnVsIGZvciBkZXZlbG9wbWVudC90ZXN0aW5nKQogIyB2ZXJib3NlIChtYW55IHJhcmVseSB1c2VmdWwgaW5mbywgYnV0IG5vdCBhIG1lc3MgbGlrZSB0aGUgZGVidWcgbGV2ZWwpCiAjIG5vdGljZSAobW9kZXJhdGVseSB2ZXJib3NlLCB3aGF0IHlvdSB3YW50IGluIHByb2R1Y3Rpb24gcHJvYmFibHkpCiAjIHdhcm5pbmcgKG9ubHkgdmVyeSBpbXBvcnRhbnQgLyBjcml0aWNhbCBtZXNzYWdlcyBhcmUgbG9nZ2VkKQogbG9nbGV2ZWwgbm90aWNlCiAKLSMgU3BlY2lmeSB0aGUgbG9nIGZpbGUgbmFtZS4gQWxzbyAnc3Rkb3V0JyBjYW4gYmUgdXNlZCB0byBmb3JjZQorIyBTcGVjaWZ5IHRoZSBsb2cgZmlsZSBuYW1lLiBBbHNvIHRoZSBlbXB0eSBzdHJpbmcgY2FuIGJlIHVzZWQgdG8gZm9yY2UKICMgUmVkaXMgdG8gbG9nIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQuIE5vdGUgdGhhdCBpZiB5b3UgdXNlIHN0YW5kYXJkCiAjIG91dHB1dCBmb3IgbG9nZ2luZyBidXQgZGFlbW9uaXplLCBsb2dzIHdpbGwgYmUgc2VudCB0byAvZGV2L251bGwKLSMgbG9nZmlsZSAvdmFyL2xvZy9yZWRpcy5sb2cKK2xvZ2ZpbGUgIiIKIAogIyBUbyBlbmFibGUgbG9nZ2luZyB0byB0aGUgc3lzdGVtIGxvZ2dlciwganVzdCBzZXQgJ3N5c2xvZy1lbmFibGVkJyB0byB5ZXMsCiAjIGFuZCBvcHRpb25hbGx5IHVwZGF0ZSB0aGUgb3RoZXIgc3lzbG9nIHBhcmFtZXRlcnMgdG8gc3VpdCB5b3VyIG5lZWRzLgpAQCAtNjIsNyArMTc5LDcgQEAKICMgU3BlY2lmeSB0aGUgc3lzbG9nIGlkZW50aXR5Lgogc3lzbG9nLWlkZW50IHJlZGlzCiAKLSMgU3BlY2lmeSB0aGUgc3lzbG9nIGZhY2lsaXR5LiAgTXVzdCBiZSBVU0VSIG9yIGJldHdlZW4gTE9DQUwwLUxPQ0FMNy4KKyMgU3BlY2lmeSB0aGUgc3lzbG9nIGZhY2lsaXR5LiBNdXN0IGJlIFVTRVIgb3IgYmV0d2VlbiBMT0NBTDAtTE9DQUw3LgogIyBzeXNsb2ctZmFjaWxpdHkgbG9jYWwwCiAKICMgU2V0IHRoZSBudW1iZXIgb2YgZGF0YWJhc2VzLiBUaGUgZGVmYXVsdCBkYXRhYmFzZSBpcyBEQiAwLCB5b3UgY2FuIHNlbGVjdApAQCAtNzAsNyArMTg3LDE1IEBACiAjIGRiaWQgaXMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAnZGF0YWJhc2VzJy0xCiBkYXRhYmFzZXMgMTYKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgU05BUFNIT1RUSU5HICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnkgZGVmYXVsdCBSZWRpcyBzaG93cyBhbiBBU0NJSSBhcnQgbG9nbyBvbmx5IHdoZW4gc3RhcnRlZCB0byBsb2cgdG8gdGhlCisjIHN0YW5kYXJkIG91dHB1dCBhbmQgaWYgdGhlIHN0YW5kYXJkIG91dHB1dCBpcyBhIFRUWS4gQmFzaWNhbGx5IHRoaXMgbWVhbnMKKyMgdGhhdCBub3JtYWxseSBhIGxvZ28gaXMgZGlzcGxheWVkIG9ubHkgaW4gaW50ZXJhY3RpdmUgc2Vzc2lvbnMuCisjCisjIEhvd2V2ZXIgaXQgaXMgcG9zc2libGUgdG8gZm9yY2UgdGhlIHByZS00LjAgYmVoYXZpb3IgYW5kIGFsd2F5cyBzaG93IGEKKyMgQVNDSUkgYXJ0IGxvZ28gaW4gc3RhcnR1cCBsb2dzIGJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBvcHRpb24gdG8geWVzLgorYWx3YXlzLXNob3ctbG9nbyB5ZXMKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgU05BUFNIT1RUSU5HICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwogIyBTYXZlIHRoZSBEQiBvbiBkaXNrOgogIwpAQCAtODQsNyArMjA5LDcgQEAKICMgICBhZnRlciAzMDAgc2VjICg1IG1pbikgaWYgYXQgbGVhc3QgMTAga2V5cyBjaGFuZ2VkCiAjICAgYWZ0ZXIgNjAgc2VjIGlmIGF0IGxlYXN0IDEwMDAwIGtleXMgY2hhbmdlZAogIwotIyAgIE5vdGU6IHlvdSBjYW4gZGlzYWJsZSBzYXZpbmcgYXQgYWxsIGNvbW1lbnRpbmcgYWxsIHRoZSAic2F2ZSIgbGluZXMuCisjICAgTm90ZTogeW91IGNhbiBkaXNhYmxlIHNhdmluZyBjb21wbGV0ZWx5IGJ5IGNvbW1lbnRpbmcgb3V0IGFsbCAic2F2ZSIgbGluZXMuCiAjCiAjICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byByZW1vdmUgYWxsIHRoZSBwcmV2aW91c2x5IGNvbmZpZ3VyZWQgc2F2ZQogIyAgIHBvaW50cyBieSBhZGRpbmcgYSBzYXZlIGRpcmVjdGl2ZSB3aXRoIGEgc2luZ2xlIGVtcHR5IHN0cmluZyBhcmd1bWVudApAQCAtMTAzLDE2ICsyMjgsMTYgQEAKIAogIyBCeSBkZWZhdWx0IFJlZGlzIHdpbGwgc3RvcCBhY2NlcHRpbmcgd3JpdGVzIGlmIFJEQiBzbmFwc2hvdHMgYXJlIGVuYWJsZWQKICMgKGF0IGxlYXN0IG9uZSBzYXZlIHBvaW50KSBhbmQgdGhlIGxhdGVzdCBiYWNrZ3JvdW5kIHNhdmUgZmFpbGVkLgotIyBUaGlzIHdpbGwgbWFrZSB0aGUgdXNlciBhd2FyZSAoaW4gYW4gaGFyZCB3YXkpIHRoYXQgZGF0YSBpcyBub3QgcGVyc2lzdGluZworIyBUaGlzIHdpbGwgbWFrZSB0aGUgdXNlciBhd2FyZSAoaW4gYSBoYXJkIHdheSkgdGhhdCBkYXRhIGlzIG5vdCBwZXJzaXN0aW5nCiAjIG9uIGRpc2sgcHJvcGVybHksIG90aGVyd2lzZSBjaGFuY2VzIGFyZSB0aGF0IG5vIG9uZSB3aWxsIG5vdGljZSBhbmQgc29tZQotIyBkaXN0YXRlciB3aWxsIGhhcHBlbi4KKyMgZGlzYXN0ZXIgd2lsbCBoYXBwZW4uCiAjCiAjIElmIHRoZSBiYWNrZ3JvdW5kIHNhdmluZyBwcm9jZXNzIHdpbGwgc3RhcnQgd29ya2luZyBhZ2FpbiBSZWRpcyB3aWxsCiAjIGF1dG9tYXRpY2FsbHkgYWxsb3cgd3JpdGVzIGFnYWluLgogIwogIyBIb3dldmVyIGlmIHlvdSBoYXZlIHNldHVwIHlvdXIgcHJvcGVyIG1vbml0b3Jpbmcgb2YgdGhlIFJlZGlzIHNlcnZlcgogIyBhbmQgcGVyc2lzdGVuY2UsIHlvdSBtYXkgd2FudCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSBzbyB0aGF0IFJlZGlzIHdpbGwKLSMgY29udGludWUgdG8gd29yayBhcyB1c3VhbGx5IGV2ZW4gaWYgdGhlcmUgYXJlIHByb2JsZW1zIHdpdGggZGlzaywKKyMgY29udGludWUgdG8gd29yayBhcyB1c3VhbCBldmVuIGlmIHRoZXJlIGFyZSBwcm9ibGVtcyB3aXRoIGRpc2ssCiAjIHBlcm1pc3Npb25zLCBhbmQgc28gZm9ydGguCiBzdG9wLXdyaXRlcy1vbi1iZ3NhdmUtZXJyb3IgeWVzCiAKQEAgLTEyMiw3ICsyNDcsNyBAQAogIyB0aGUgZGF0YXNldCB3aWxsIGxpa2VseSBiZSBiaWdnZXIgaWYgeW91IGhhdmUgY29tcHJlc3NpYmxlIHZhbHVlcyBvciBrZXlzLgogcmRiY29tcHJlc3Npb24geWVzCiAKLSMgU2luY2UgdmVyaXNvbiA1IG9mIFJEQiBhIENSQzY0IGNoZWNrc3VtIGlzIHBsYWNlZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLgorIyBTaW5jZSB2ZXJzaW9uIDUgb2YgUkRCIGEgQ1JDNjQgY2hlY2tzdW0gaXMgcGxhY2VkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUuCiAjIFRoaXMgbWFrZXMgdGhlIGZvcm1hdCBtb3JlIHJlc2lzdGFudCB0byBjb3JydXB0aW9uIGJ1dCB0aGVyZSBpcyBhIHBlcmZvcm1hbmNlCiAjIGhpdCB0byBwYXkgKGFyb3VuZCAxMCUpIHdoZW4gc2F2aW5nIGFuZCBsb2FkaW5nIFJEQiBmaWxlcywgc28geW91IGNhbiBkaXNhYmxlIGl0CiAjIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlcy4KQEAgLTEzOCwxOCArMjYzLDI3IEBACiAjCiAjIFRoZSBEQiB3aWxsIGJlIHdyaXR0ZW4gaW5zaWRlIHRoaXMgZGlyZWN0b3J5LCB3aXRoIHRoZSBmaWxlbmFtZSBzcGVjaWZpZWQKICMgYWJvdmUgdXNpbmcgdGhlICdkYmZpbGVuYW1lJyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4KLSMgCi0jIEFsc28gdGhlIEFwcGVuZCBPbmx5IEZpbGUgd2lsbCBiZSBjcmVhdGVkIGluc2lkZSB0aGlzIGRpcmVjdG9yeS4KLSMgCisjCisjIFRoZSBBcHBlbmQgT25seSBGaWxlIHdpbGwgYWxzbyBiZSBjcmVhdGVkIGluc2lkZSB0aGlzIGRpcmVjdG9yeS4KKyMKICMgTm90ZSB0aGF0IHlvdSBtdXN0IHNwZWNpZnkgYSBkaXJlY3RvcnkgaGVyZSwgbm90IGEgZmlsZSBuYW1lLgogZGlyIC92YXIvbGliL3JlZGlzLwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUkVQTElDQVRJT04gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgTWFzdGVyLVNsYXZlIHJlcGxpY2F0aW9uLiBVc2Ugc2xhdmVvZiB0byBtYWtlIGEgUmVkaXMgaW5zdGFuY2UgYSBjb3B5IG9mCi0jIGFub3RoZXIgUmVkaXMgc2VydmVyLiBOb3RlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbG9jYWwgdG8gdGhlIHNsYXZlCi0jIHNvIGZvciBleGFtcGxlIGl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgc2xhdmUgdG8gc2F2ZSB0aGUgREIgd2l0aCBhCi0jIGRpZmZlcmVudCBpbnRlcnZhbCwgb3IgdG8gbGlzdGVuIHRvIGFub3RoZXIgcG9ydCwgYW5kIHNvIG9uLgorIyBhbm90aGVyIFJlZGlzIHNlcnZlci4gQSBmZXcgdGhpbmdzIHRvIHVuZGVyc3RhbmQgQVNBUCBhYm91dCBSZWRpcyByZXBsaWNhdGlvbi4KKyMKKyMgMSkgUmVkaXMgcmVwbGljYXRpb24gaXMgYXN5bmNocm9ub3VzLCBidXQgeW91IGNhbiBjb25maWd1cmUgYSBtYXN0ZXIgdG8KKyMgICAgc3RvcCBhY2NlcHRpbmcgd3JpdGVzIGlmIGl0IGFwcGVhcnMgdG8gYmUgbm90IGNvbm5lY3RlZCB3aXRoIGF0IGxlYXN0CisjICAgIGEgZ2l2ZW4gbnVtYmVyIG9mIHNsYXZlcy4KKyMgMikgUmVkaXMgc2xhdmVzIGFyZSBhYmxlIHRvIHBlcmZvcm0gYSBwYXJ0aWFsIHJlc3luY2hyb25pemF0aW9uIHdpdGggdGhlCisjICAgIG1hc3RlciBpZiB0aGUgcmVwbGljYXRpb24gbGluayBpcyBsb3N0IGZvciBhIHJlbGF0aXZlbHkgc21hbGwgYW1vdW50IG9mCisjICAgIHRpbWUuIFlvdSBtYXkgd2FudCB0byBjb25maWd1cmUgdGhlIHJlcGxpY2F0aW9uIGJhY2tsb2cgc2l6ZSAoc2VlIHRoZSBuZXh0CisjICAgIHNlY3Rpb25zIG9mIHRoaXMgZmlsZSkgd2l0aCBhIHNlbnNpYmxlIHZhbHVlIGRlcGVuZGluZyBvbiB5b3VyIG5lZWRzLgorIyAzKSBSZXBsaWNhdGlvbiBpcyBhdXRvbWF0aWMgYW5kIGRvZXMgbm90IG5lZWQgdXNlciBpbnRlcnZlbnRpb24uIEFmdGVyIGEKKyMgICAgbmV0d29yayBwYXJ0aXRpb24gc2xhdmVzIGF1dG9tYXRpY2FsbHkgdHJ5IHRvIHJlY29ubmVjdCB0byBtYXN0ZXJzCisjICAgIGFuZCByZXN5bmNocm9uaXplIHdpdGggdGhlbS4KICMKICMgc2xhdmVvZiA8bWFzdGVyaXA+IDxtYXN0ZXJwb3J0PgogCkBAIC0xNjAsMTQgKzI5NCwxNCBAQAogIwogIyBtYXN0ZXJhdXRoIDxtYXN0ZXItcGFzc3dvcmQ+CiAKLSMgV2hlbiBhIHNsYXZlIGxvc3QgdGhlIGNvbm5lY3Rpb24gd2l0aCB0aGUgbWFzdGVyLCBvciB3aGVuIHRoZSByZXBsaWNhdGlvbgorIyBXaGVuIGEgc2xhdmUgbG9zZXMgaXRzIGNvbm5lY3Rpb24gd2l0aCB0aGUgbWFzdGVyLCBvciB3aGVuIHRoZSByZXBsaWNhdGlvbgogIyBpcyBzdGlsbCBpbiBwcm9ncmVzcywgdGhlIHNsYXZlIGNhbiBhY3QgaW4gdHdvIGRpZmZlcmVudCB3YXlzOgogIwogIyAxKSBpZiBzbGF2ZS1zZXJ2ZS1zdGFsZS1kYXRhIGlzIHNldCB0byAneWVzJyAodGhlIGRlZmF1bHQpIHRoZSBzbGF2ZSB3aWxsCiAjICAgIHN0aWxsIHJlcGx5IHRvIGNsaWVudCByZXF1ZXN0cywgcG9zc2libHkgd2l0aCBvdXQgb2YgZGF0ZSBkYXRhLCBvciB0aGUKICMgICAgZGF0YSBzZXQgbWF5IGp1c3QgYmUgZW1wdHkgaWYgdGhpcyBpcyB0aGUgZmlyc3Qgc3luY2hyb25pemF0aW9uLgogIwotIyAyKSBpZiBzbGF2ZS1zZXJ2ZS1zdGFsZSBkYXRhIGlzIHNldCB0byAnbm8nIHRoZSBzbGF2ZSB3aWxsIHJlcGx5IHdpdGgKKyMgMikgaWYgc2xhdmUtc2VydmUtc3RhbGUtZGF0YSBpcyBzZXQgdG8gJ25vJyB0aGUgc2xhdmUgd2lsbCByZXBseSB3aXRoCiAjICAgIGFuIGVycm9yICJTWU5DIHdpdGggbWFzdGVyIGluIHByb2dyZXNzIiB0byBhbGwgdGhlIGtpbmQgb2YgY29tbWFuZHMKICMgICAgYnV0IHRvIElORk8gYW5kIFNMQVZFT0YuCiAjCkBAIC0xODQsMTkgKzMxOCw2NSBAQAogIyBOb3RlOiByZWFkIG9ubHkgc2xhdmVzIGFyZSBub3QgZGVzaWduZWQgdG8gYmUgZXhwb3NlZCB0byB1bnRydXN0ZWQgY2xpZW50cwogIyBvbiB0aGUgaW50ZXJuZXQuIEl0J3MganVzdCBhIHByb3RlY3Rpb24gbGF5ZXIgYWdhaW5zdCBtaXN1c2Ugb2YgdGhlIGluc3RhbmNlLgogIyBTdGlsbCBhIHJlYWQgb25seSBzbGF2ZSBleHBvcnRzIGJ5IGRlZmF1bHQgYWxsIHRoZSBhZG1pbmlzdHJhdGl2ZSBjb21tYW5kcwotIyBzdWNoIGFzIENPTkZJRywgREVCVUcsIGFuZCBzbyBmb3J0aC4gVG8gYSBsaW1pdGVkIGV4dGVuZCB5b3UgY2FuIGltcHJvdmUKKyMgc3VjaCBhcyBDT05GSUcsIERFQlVHLCBhbmQgc28gZm9ydGguIFRvIGEgbGltaXRlZCBleHRlbnQgeW91IGNhbiBpbXByb3ZlCiAjIHNlY3VyaXR5IG9mIHJlYWQgb25seSBzbGF2ZXMgdXNpbmcgJ3JlbmFtZS1jb21tYW5kJyB0byBzaGFkb3cgYWxsIHRoZQogIyBhZG1pbmlzdHJhdGl2ZSAvIGRhbmdlcm91cyBjb21tYW5kcy4KIHNsYXZlLXJlYWQtb25seSB5ZXMKIAorIyBSZXBsaWNhdGlvbiBTWU5DIHN0cmF0ZWd5OiBkaXNrIG9yIHNvY2tldC4KKyMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBXQVJOSU5HOiBESVNLTEVTUyBSRVBMSUNBVElPTiBJUyBFWFBFUklNRU5UQUwgQ1VSUkVOVExZCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTmV3IHNsYXZlcyBhbmQgcmVjb25uZWN0aW5nIHNsYXZlcyB0aGF0IGFyZSBub3QgYWJsZSB0byBjb250aW51ZSB0aGUgcmVwbGljYXRpb24KKyMgcHJvY2VzcyBqdXN0IHJlY2VpdmluZyBkaWZmZXJlbmNlcywgbmVlZCB0byBkbyB3aGF0IGlzIGNhbGxlZCBhICJmdWxsCisjIHN5bmNocm9uaXphdGlvbiIuIEFuIFJEQiBmaWxlIGlzIHRyYW5zbWl0dGVkIGZyb20gdGhlIG1hc3RlciB0byB0aGUgc2xhdmVzLgorIyBUaGUgdHJhbnNtaXNzaW9uIGNhbiBoYXBwZW4gaW4gdHdvIGRpZmZlcmVudCB3YXlzOgorIworIyAxKSBEaXNrLWJhY2tlZDogVGhlIFJlZGlzIG1hc3RlciBjcmVhdGVzIGEgbmV3IHByb2Nlc3MgdGhhdCB3cml0ZXMgdGhlIFJEQgorIyAgICAgICAgICAgICAgICAgZmlsZSBvbiBkaXNrLiBMYXRlciB0aGUgZmlsZSBpcyB0cmFuc2ZlcnJlZCBieSB0aGUgcGFyZW50CisjICAgICAgICAgICAgICAgICBwcm9jZXNzIHRvIHRoZSBzbGF2ZXMgaW5jcmVtZW50YWxseS4KKyMgMikgRGlza2xlc3M6IFRoZSBSZWRpcyBtYXN0ZXIgY3JlYXRlcyBhIG5ldyBwcm9jZXNzIHRoYXQgZGlyZWN0bHkgd3JpdGVzIHRoZQorIyAgICAgICAgICAgICAgUkRCIGZpbGUgdG8gc2xhdmUgc29ja2V0cywgd2l0aG91dCB0b3VjaGluZyB0aGUgZGlzayBhdCBhbGwuCisjCisjIFdpdGggZGlzay1iYWNrZWQgcmVwbGljYXRpb24sIHdoaWxlIHRoZSBSREIgZmlsZSBpcyBnZW5lcmF0ZWQsIG1vcmUgc2xhdmVzCisjIGNhbiBiZSBxdWV1ZWQgYW5kIHNlcnZlZCB3aXRoIHRoZSBSREIgZmlsZSBhcyBzb29uIGFzIHRoZSBjdXJyZW50IGNoaWxkIHByb2R1Y2luZworIyB0aGUgUkRCIGZpbGUgZmluaXNoZXMgaXRzIHdvcmsuIFdpdGggZGlza2xlc3MgcmVwbGljYXRpb24gaW5zdGVhZCBvbmNlCisjIHRoZSB0cmFuc2ZlciBzdGFydHMsIG5ldyBzbGF2ZXMgYXJyaXZpbmcgd2lsbCBiZSBxdWV1ZWQgYW5kIGEgbmV3IHRyYW5zZmVyCisjIHdpbGwgc3RhcnQgd2hlbiB0aGUgY3VycmVudCBvbmUgdGVybWluYXRlcy4KKyMKKyMgV2hlbiBkaXNrbGVzcyByZXBsaWNhdGlvbiBpcyB1c2VkLCB0aGUgbWFzdGVyIHdhaXRzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZgorIyB0aW1lIChpbiBzZWNvbmRzKSBiZWZvcmUgc3RhcnRpbmcgdGhlIHRyYW5zZmVyIGluIHRoZSBob3BlIHRoYXQgbXVsdGlwbGUgc2xhdmVzCisjIHdpbGwgYXJyaXZlIGFuZCB0aGUgdHJhbnNmZXIgY2FuIGJlIHBhcmFsbGVsaXplZC4KKyMKKyMgV2l0aCBzbG93IGRpc2tzIGFuZCBmYXN0IChsYXJnZSBiYW5kd2lkdGgpIG5ldHdvcmtzLCBkaXNrbGVzcyByZXBsaWNhdGlvbgorIyB3b3JrcyBiZXR0ZXIuCityZXBsLWRpc2tsZXNzLXN5bmMgbm8KKworIyBXaGVuIGRpc2tsZXNzIHJlcGxpY2F0aW9uIGlzIGVuYWJsZWQsIGl0IGlzIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgZGVsYXkKKyMgdGhlIHNlcnZlciB3YWl0cyBpbiBvcmRlciB0byBzcGF3biB0aGUgY2hpbGQgdGhhdCB0cmFuc2ZlcnMgdGhlIFJEQiB2aWEgc29ja2V0CisjIHRvIHRoZSBzbGF2ZXMuCisjCisjIFRoaXMgaXMgaW1wb3J0YW50IHNpbmNlIG9uY2UgdGhlIHRyYW5zZmVyIHN0YXJ0cywgaXQgaXMgbm90IHBvc3NpYmxlIHRvIHNlcnZlCisjIG5ldyBzbGF2ZXMgYXJyaXZpbmcsIHRoYXQgd2lsbCBiZSBxdWV1ZWQgZm9yIHRoZSBuZXh0IFJEQiB0cmFuc2Zlciwgc28gdGhlIHNlcnZlcgorIyB3YWl0cyBhIGRlbGF5IGluIG9yZGVyIHRvIGxldCBtb3JlIHNsYXZlcyBhcnJpdmUuCisjCisjIFRoZSBkZWxheSBpcyBzcGVjaWZpZWQgaW4gc2Vjb25kcywgYW5kIGJ5IGRlZmF1bHQgaXMgNSBzZWNvbmRzLiBUbyBkaXNhYmxlCisjIGl0IGVudGlyZWx5IGp1c3Qgc2V0IGl0IHRvIDAgc2Vjb25kcyBhbmQgdGhlIHRyYW5zZmVyIHdpbGwgc3RhcnQgQVNBUC4KK3JlcGwtZGlza2xlc3Mtc3luYy1kZWxheSA1CisKICMgU2xhdmVzIHNlbmQgUElOR3MgdG8gc2VydmVyIGluIGEgcHJlZGVmaW5lZCBpbnRlcnZhbC4gSXQncyBwb3NzaWJsZSB0byBjaGFuZ2UKICMgdGhpcyBpbnRlcnZhbCB3aXRoIHRoZSByZXBsX3Bpbmdfc2xhdmVfcGVyaW9kIG9wdGlvbi4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTAKICMgc2Vjb25kcy4KICMKICMgcmVwbC1waW5nLXNsYXZlLXBlcmlvZCAxMAogCi0jIFRoZSBmb2xsb3dpbmcgb3B0aW9uIHNldHMgYSB0aW1lb3V0IGZvciBib3RoIEJ1bGsgdHJhbnNmZXIgSS9PIHRpbWVvdXQgYW5kCi0jIG1hc3RlciBkYXRhIG9yIHBpbmcgcmVzcG9uc2UgdGltZW91dC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgNjAgc2Vjb25kcy4KKyMgVGhlIGZvbGxvd2luZyBvcHRpb24gc2V0cyB0aGUgcmVwbGljYXRpb24gdGltZW91dCBmb3I6CisjCisjIDEpIEJ1bGsgdHJhbnNmZXIgSS9PIGR1cmluZyBTWU5DLCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHNsYXZlLgorIyAyKSBNYXN0ZXIgdGltZW91dCBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIHNsYXZlcyAoZGF0YSwgcGluZ3MpLgorIyAzKSBTbGF2ZSB0aW1lb3V0IGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgbWFzdGVycyAoUkVQTENPTkYgQUNLIHBpbmdzKS4KICMKICMgSXQgaXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZQogIyBzcGVjaWZpZWQgZm9yIHJlcGwtcGluZy1zbGF2ZS1wZXJpb2Qgb3RoZXJ3aXNlIGEgdGltZW91dCB3aWxsIGJlIGRldGVjdGVkCkBAIC0yMDQsMTMgKzM4NCw1NCBAQAogIwogIyByZXBsLXRpbWVvdXQgNjAKIAorIyBEaXNhYmxlIFRDUF9OT0RFTEFZIG9uIHRoZSBzbGF2ZSBzb2NrZXQgYWZ0ZXIgU1lOQz8KKyMKKyMgSWYgeW91IHNlbGVjdCAieWVzIiBSZWRpcyB3aWxsIHVzZSBhIHNtYWxsZXIgbnVtYmVyIG9mIFRDUCBwYWNrZXRzIGFuZAorIyBsZXNzIGJhbmR3aWR0aCB0byBzZW5kIGRhdGEgdG8gc2xhdmVzLiBCdXQgdGhpcyBjYW4gYWRkIGEgZGVsYXkgZm9yCisjIHRoZSBkYXRhIHRvIGFwcGVhciBvbiB0aGUgc2xhdmUgc2lkZSwgdXAgdG8gNDAgbWlsbGlzZWNvbmRzIHdpdGgKKyMgTGludXgga2VybmVscyB1c2luZyBhIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKyMKKyMgSWYgeW91IHNlbGVjdCAibm8iIHRoZSBkZWxheSBmb3IgZGF0YSB0byBhcHBlYXIgb24gdGhlIHNsYXZlIHNpZGUgd2lsbAorIyBiZSByZWR1Y2VkIGJ1dCBtb3JlIGJhbmR3aWR0aCB3aWxsIGJlIHVzZWQgZm9yIHJlcGxpY2F0aW9uLgorIworIyBCeSBkZWZhdWx0IHdlIG9wdGltaXplIGZvciBsb3cgbGF0ZW5jeSwgYnV0IGluIHZlcnkgaGlnaCB0cmFmZmljIGNvbmRpdGlvbnMKKyMgb3Igd2hlbiB0aGUgbWFzdGVyIGFuZCBzbGF2ZXMgYXJlIG1hbnkgaG9wcyBhd2F5LCB0dXJuaW5nIHRoaXMgdG8gInllcyIgbWF5CisjIGJlIGEgZ29vZCBpZGVhLgorcmVwbC1kaXNhYmxlLXRjcC1ub2RlbGF5IG5vCisKKyMgU2V0IHRoZSByZXBsaWNhdGlvbiBiYWNrbG9nIHNpemUuIFRoZSBiYWNrbG9nIGlzIGEgYnVmZmVyIHRoYXQgYWNjdW11bGF0ZXMKKyMgc2xhdmUgZGF0YSB3aGVuIHNsYXZlcyBhcmUgZGlzY29ubmVjdGVkIGZvciBzb21lIHRpbWUsIHNvIHRoYXQgd2hlbiBhIHNsYXZlCisjIHdhbnRzIHRvIHJlY29ubmVjdCBhZ2Fpbiwgb2Z0ZW4gYSBmdWxsIHJlc3luYyBpcyBub3QgbmVlZGVkLCBidXQgYSBwYXJ0aWFsCisjIHJlc3luYyBpcyBlbm91Z2gsIGp1c3QgcGFzc2luZyB0aGUgcG9ydGlvbiBvZiBkYXRhIHRoZSBzbGF2ZSBtaXNzZWQgd2hpbGUKKyMgZGlzY29ubmVjdGVkLgorIworIyBUaGUgYmlnZ2VyIHRoZSByZXBsaWNhdGlvbiBiYWNrbG9nLCB0aGUgbG9uZ2VyIHRoZSB0aW1lIHRoZSBzbGF2ZSBjYW4gYmUKKyMgZGlzY29ubmVjdGVkIGFuZCBsYXRlciBiZSBhYmxlIHRvIHBlcmZvcm0gYSBwYXJ0aWFsIHJlc3luY2hyb25pemF0aW9uLgorIworIyBUaGUgYmFja2xvZyBpcyBvbmx5IGFsbG9jYXRlZCBvbmNlIHRoZXJlIGlzIGF0IGxlYXN0IGEgc2xhdmUgY29ubmVjdGVkLgorIworIyByZXBsLWJhY2tsb2ctc2l6ZSAxbWIKKworIyBBZnRlciBhIG1hc3RlciBoYXMgbm8gbG9uZ2VyIGNvbm5lY3RlZCBzbGF2ZXMgZm9yIHNvbWUgdGltZSwgdGhlIGJhY2tsb2cKKyMgd2lsbCBiZSBmcmVlZC4gVGhlIGZvbGxvd2luZyBvcHRpb24gY29uZmlndXJlcyB0aGUgYW1vdW50IG9mIHNlY29uZHMgdGhhdAorIyBuZWVkIHRvIGVsYXBzZSwgc3RhcnRpbmcgZnJvbSB0aGUgdGltZSB0aGUgbGFzdCBzbGF2ZSBkaXNjb25uZWN0ZWQsIGZvcgorIyB0aGUgYmFja2xvZyBidWZmZXIgdG8gYmUgZnJlZWQuCisjCisjIE5vdGUgdGhhdCBzbGF2ZXMgbmV2ZXIgZnJlZSB0aGUgYmFja2xvZyBmb3IgdGltZW91dCwgc2luY2UgdGhleSBtYXkgYmUKKyMgcHJvbW90ZWQgdG8gbWFzdGVycyBsYXRlciwgYW5kIHNob3VsZCBiZSBhYmxlIHRvIGNvcnJlY3RseSAicGFydGlhbGx5CisjIHJlc3luY2hyb25pemUiIHdpdGggdGhlIHNsYXZlczogaGVuY2UgdGhleSBzaG91bGQgYWx3YXlzIGFjY3VtdWxhdGUgYmFja2xvZy4KKyMKKyMgQSB2YWx1ZSBvZiAwIG1lYW5zIHRvIG5ldmVyIHJlbGVhc2UgdGhlIGJhY2tsb2cuCisjCisjIHJlcGwtYmFja2xvZy10dGwgMzYwMAorCiAjIFRoZSBzbGF2ZSBwcmlvcml0eSBpcyBhbiBpbnRlZ2VyIG51bWJlciBwdWJsaXNoZWQgYnkgUmVkaXMgaW4gdGhlIElORk8gb3V0cHV0LgogIyBJdCBpcyB1c2VkIGJ5IFJlZGlzIFNlbnRpbmVsIGluIG9yZGVyIHRvIHNlbGVjdCBhIHNsYXZlIHRvIHByb21vdGUgaW50byBhCiAjIG1hc3RlciBpZiB0aGUgbWFzdGVyIGlzIG5vIGxvbmdlciB3b3JraW5nIGNvcnJlY3RseS4KICMKICMgQSBzbGF2ZSB3aXRoIGEgbG93IHByaW9yaXR5IG51bWJlciBpcyBjb25zaWRlcmVkIGJldHRlciBmb3IgcHJvbW90aW9uLCBzbwogIyBmb3IgaW5zdGFuY2UgaWYgdGhlcmUgYXJlIHRocmVlIHNsYXZlcyB3aXRoIHByaW9yaXR5IDEwLCAxMDAsIDI1IFNlbnRpbmVsIHdpbGwKLSMgcGljayB0aGUgb25lIHd0aWggcHJpb3JpdHkgMTAsIHRoYXQgaXMgdGhlIGxvd2VzdC4KKyMgcGljayB0aGUgb25lIHdpdGggcHJpb3JpdHkgMTAsIHRoYXQgaXMgdGhlIGxvd2VzdC4KICMKICMgSG93ZXZlciBhIHNwZWNpYWwgcHJpb3JpdHkgb2YgMCBtYXJrcyB0aGUgc2xhdmUgYXMgbm90IGFibGUgdG8gcGVyZm9ybSB0aGUKICMgcm9sZSBvZiBtYXN0ZXIsIHNvIGEgc2xhdmUgd2l0aCBwcmlvcml0eSBvZiAwIHdpbGwgbmV2ZXIgYmUgc2VsZWN0ZWQgYnkKQEAgLTIxOSw2ICs0NDAsNTcgQEAKICMgQnkgZGVmYXVsdCB0aGUgcHJpb3JpdHkgaXMgMTAwLgogc2xhdmUtcHJpb3JpdHkgMTAwCiAKKyMgSXQgaXMgcG9zc2libGUgZm9yIGEgbWFzdGVyIHRvIHN0b3AgYWNjZXB0aW5nIHdyaXRlcyBpZiB0aGVyZSBhcmUgbGVzcyB0aGFuCisjIE4gc2xhdmVzIGNvbm5lY3RlZCwgaGF2aW5nIGEgbGFnIGxlc3Mgb3IgZXF1YWwgdGhhbiBNIHNlY29uZHMuCisjCisjIFRoZSBOIHNsYXZlcyBuZWVkIHRvIGJlIGluICJvbmxpbmUiIHN0YXRlLgorIworIyBUaGUgbGFnIGluIHNlY29uZHMsIHRoYXQgbXVzdCBiZSA8PSB0aGUgc3BlY2lmaWVkIHZhbHVlLCBpcyBjYWxjdWxhdGVkIGZyb20KKyMgdGhlIGxhc3QgcGluZyByZWNlaXZlZCBmcm9tIHRoZSBzbGF2ZSwgdGhhdCBpcyB1c3VhbGx5IHNlbnQgZXZlcnkgc2Vjb25kLgorIworIyBUaGlzIG9wdGlvbiBkb2VzIG5vdCBHVUFSQU5URUUgdGhhdCBOIHJlcGxpY2FzIHdpbGwgYWNjZXB0IHRoZSB3cml0ZSwgYnV0CisjIHdpbGwgbGltaXQgdGhlIHdpbmRvdyBvZiBleHBvc3VyZSBmb3IgbG9zdCB3cml0ZXMgaW4gY2FzZSBub3QgZW5vdWdoIHNsYXZlcworIyBhcmUgYXZhaWxhYmxlLCB0byB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBzZWNvbmRzLgorIworIyBGb3IgZXhhbXBsZSB0byByZXF1aXJlIGF0IGxlYXN0IDMgc2xhdmVzIHdpdGggYSBsYWcgPD0gMTAgc2Vjb25kcyB1c2U6CisjCisjIG1pbi1zbGF2ZXMtdG8td3JpdGUgMworIyBtaW4tc2xhdmVzLW1heC1sYWcgMTAKKyMKKyMgU2V0dGluZyBvbmUgb3IgdGhlIG90aGVyIHRvIDAgZGlzYWJsZXMgdGhlIGZlYXR1cmUuCisjCisjIEJ5IGRlZmF1bHQgbWluLXNsYXZlcy10by13cml0ZSBpcyBzZXQgdG8gMCAoZmVhdHVyZSBkaXNhYmxlZCkgYW5kCisjIG1pbi1zbGF2ZXMtbWF4LWxhZyBpcyBzZXQgdG8gMTAuCisKKyMgQSBSZWRpcyBtYXN0ZXIgaXMgYWJsZSB0byBsaXN0IHRoZSBhZGRyZXNzIGFuZCBwb3J0IG9mIHRoZSBhdHRhY2hlZAorIyBzbGF2ZXMgaW4gZGlmZmVyZW50IHdheXMuIEZvciBleGFtcGxlIHRoZSAiSU5GTyByZXBsaWNhdGlvbiIgc2VjdGlvbgorIyBvZmZlcnMgdGhpcyBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgdXNlZCwgYW1vbmcgb3RoZXIgdG9vbHMsIGJ5CisjIFJlZGlzIFNlbnRpbmVsIGluIG9yZGVyIHRvIGRpc2NvdmVyIHNsYXZlIGluc3RhbmNlcy4KKyMgQW5vdGhlciBwbGFjZSB3aGVyZSB0aGlzIGluZm8gaXMgYXZhaWxhYmxlIGlzIGluIHRoZSBvdXRwdXQgb2YgdGhlCisjICJST0xFIiBjb21tYW5kIG9mIGEgbWFzdGVyLgorIworIyBUaGUgbGlzdGVkIElQIGFuZCBhZGRyZXNzIG5vcm1hbGx5IHJlcG9ydGVkIGJ5IGEgc2xhdmUgaXMgb2J0YWluZWQKKyMgaW4gdGhlIGZvbGxvd2luZyB3YXk6CisjCisjICAgSVA6IFRoZSBhZGRyZXNzIGlzIGF1dG8gZGV0ZWN0ZWQgYnkgY2hlY2tpbmcgdGhlIHBlZXIgYWRkcmVzcworIyAgIG9mIHRoZSBzb2NrZXQgdXNlZCBieSB0aGUgc2xhdmUgdG8gY29ubmVjdCB3aXRoIHRoZSBtYXN0ZXIuCisjCisjICAgUG9ydDogVGhlIHBvcnQgaXMgY29tbXVuaWNhdGVkIGJ5IHRoZSBzbGF2ZSBkdXJpbmcgdGhlIHJlcGxpY2F0aW9uCisjICAgaGFuZHNoYWtlLCBhbmQgaXMgbm9ybWFsbHkgdGhlIHBvcnQgdGhhdCB0aGUgc2xhdmUgaXMgdXNpbmcgdG8KKyMgICBsaXN0IGZvciBjb25uZWN0aW9ucy4KKyMKKyMgSG93ZXZlciB3aGVuIHBvcnQgZm9yd2FyZGluZyBvciBOZXR3b3JrIEFkZHJlc3MgVHJhbnNsYXRpb24gKE5BVCkgaXMKKyMgdXNlZCwgdGhlIHNsYXZlIG1heSBiZSBhY3R1YWxseSByZWFjaGFibGUgdmlhIGRpZmZlcmVudCBJUCBhbmQgcG9ydAorIyBwYWlycy4gVGhlIGZvbGxvd2luZyB0d28gb3B0aW9ucyBjYW4gYmUgdXNlZCBieSBhIHNsYXZlIGluIG9yZGVyIHRvCisjIHJlcG9ydCB0byBpdHMgbWFzdGVyIGEgc3BlY2lmaWMgc2V0IG9mIElQIGFuZCBwb3J0LCBzbyB0aGF0IGJvdGggSU5GTworIyBhbmQgUk9MRSB3aWxsIHJlcG9ydCB0aG9zZSB2YWx1ZXMuCisjCisjIFRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIGJvdGggdGhlIG9wdGlvbnMgaWYgeW91IG5lZWQgdG8gb3ZlcnJpZGUganVzdAorIyB0aGUgcG9ydCBvciB0aGUgSVAgYWRkcmVzcy4KKyMKKyMgc2xhdmUtYW5ub3VuY2UtaXAgNS41LjUuNQorIyBzbGF2ZS1hbm5vdW5jZS1wb3J0IDEyMzQKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBTRUNVUklUWSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFJlcXVpcmUgY2xpZW50cyB0byBpc3N1ZSBBVVRIIDxQQVNTV09SRD4gYmVmb3JlIHByb2Nlc3NpbmcgYW55IG90aGVyCkBAIC0yMjcsNyArNDk5LDcgQEAKICMKICMgVGhpcyBzaG91bGQgc3RheSBjb21tZW50ZWQgb3V0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFuZCBiZWNhdXNlIG1vc3QKICMgcGVvcGxlIGRvIG5vdCBuZWVkIGF1dGggKGUuZy4gdGhleSBydW4gdGhlaXIgb3duIHNlcnZlcnMpLgotIyAKKyMKICMgV2FybmluZzogc2luY2UgUmVkaXMgaXMgcHJldHR5IGZhc3QgYW4gb3V0c2lkZSB1c2VyIGNhbiB0cnkgdXAgdG8KICMgMTUwayBwYXNzd29yZHMgcGVyIHNlY29uZCBhZ2FpbnN0IGEgZ29vZCBib3guIFRoaXMgbWVhbnMgdGhhdCB5b3Ugc2hvdWxkCiAjIHVzZSBhIHZlcnkgc3Ryb25nIHBhc3N3b3JkIG90aGVyd2lzZSBpdCB3aWxsIGJlIHZlcnkgZWFzeSB0byBicmVhay4KQEAgLTIzOCwyMyArNTEwLDI2IEBACiAjCiAjIEl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBkYW5nZXJvdXMgY29tbWFuZHMgaW4gYSBzaGFyZWQKICMgZW52aXJvbm1lbnQuIEZvciBpbnN0YW5jZSB0aGUgQ09ORklHIGNvbW1hbmQgbWF5IGJlIHJlbmFtZWQgaW50byBzb21ldGhpbmcKLSMgb2YgaGFyZCB0byBndWVzcyBzbyB0aGF0IGl0IHdpbGwgYmUgc3RpbGwgYXZhaWxhYmxlIGZvciBpbnRlcm5hbC11c2UKLSMgdG9vbHMgYnV0IG5vdCBhdmFpbGFibGUgZm9yIGdlbmVyYWwgY2xpZW50cy4KKyMgaGFyZCB0byBndWVzcyBzbyB0aGF0IGl0IHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlIGZvciBpbnRlcm5hbC11c2UgdG9vbHMKKyMgYnV0IG5vdCBhdmFpbGFibGUgZm9yIGdlbmVyYWwgY2xpZW50cy4KICMKICMgRXhhbXBsZToKICMKICMgcmVuYW1lLWNvbW1hbmQgQ09ORklHIGI4NDBmYzAyZDUyNDA0NTQyOTk0MWNjMTVmNTllNDFjYjdiZTZjNTIKICMKLSMgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjb21wbGV0ZWx5IGtpbGwgYSBjb21tYW5kIHJlbmFtaW5nIGl0IGludG8KKyMgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjb21wbGV0ZWx5IGtpbGwgYSBjb21tYW5kIGJ5IHJlbmFtaW5nIGl0IGludG8KICMgYW4gZW1wdHkgc3RyaW5nOgogIwogIyByZW5hbWUtY29tbWFuZCBDT05GSUcgIiIKKyMKKyMgUGxlYXNlIG5vdGUgdGhhdCBjaGFuZ2luZyB0aGUgbmFtZSBvZiBjb21tYW5kcyB0aGF0IGFyZSBsb2dnZWQgaW50byB0aGUKKyMgQU9GIGZpbGUgb3IgdHJhbnNtaXR0ZWQgdG8gc2xhdmVzIG1heSBjYXVzZSBwcm9ibGVtcy4KIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTElNSVRTICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ0xJRU5UUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBTZXQgdGhlIG1heCBudW1iZXIgb2YgY29ubmVjdGVkIGNsaWVudHMgYXQgdGhlIHNhbWUgdGltZS4gQnkgZGVmYXVsdAogIyB0aGlzIGxpbWl0IGlzIHNldCB0byAxMDAwMCBjbGllbnRzLCBob3dldmVyIGlmIHRoZSBSZWRpcyBzZXJ2ZXIgaXMgbm90Ci0jIGFibGUgb3QgY29uZmlndXJlIHRoZSBwcm9jZXNzIGZpbGUgbGltaXQgdG8gYWxsb3cgZm9yIHRoZSBzcGVjaWZpZWQgbGltaXQKKyMgYWJsZSB0byBjb25maWd1cmUgdGhlIHByb2Nlc3MgZmlsZSBsaW1pdCB0byBhbGxvdyBmb3IgdGhlIHNwZWNpZmllZCBsaW1pdAogIyB0aGUgbWF4IG51bWJlciBvZiBhbGxvd2VkIGNsaWVudHMgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGZpbGUgbGltaXQKICMgbWludXMgMzIgKGFzIFJlZGlzIHJlc2VydmVzIGEgZmV3IGZpbGUgZGVzY3JpcHRvcnMgZm9yIGludGVybmFsIHVzZXMpLgogIwpAQCAtMjYzLDE3ICs1MzgsMTkgQEAKICMKICMgbWF4Y2xpZW50cyAxMDAwMAogCi0jIERvbid0IHVzZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1FTU9SWSBNQU5BR0VNRU5UICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgU2V0IGEgbWVtb3J5IHVzYWdlIGxpbWl0IHRvIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzLgogIyBXaGVuIHRoZSBtZW1vcnkgbGltaXQgaXMgcmVhY2hlZCBSZWRpcyB3aWxsIHRyeSB0byByZW1vdmUga2V5cwotIyBhY2NvcmRpbmdseSB0byB0aGUgZXZpY3Rpb24gcG9saWN5IHNlbGVjdGVkIChzZWUgbWF4bWVtbW9yeS1wb2xpY3kpLgorIyBhY2NvcmRpbmcgdG8gdGhlIGV2aWN0aW9uIHBvbGljeSBzZWxlY3RlZCAoc2VlIG1heG1lbW9yeS1wb2xpY3kpLgogIwogIyBJZiBSZWRpcyBjYW4ndCByZW1vdmUga2V5cyBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSwgb3IgaWYgdGhlIHBvbGljeSBpcwogIyBzZXQgdG8gJ25vZXZpY3Rpb24nLCBSZWRpcyB3aWxsIHN0YXJ0IHRvIHJlcGx5IHdpdGggZXJyb3JzIHRvIGNvbW1hbmRzCiAjIHRoYXQgd291bGQgdXNlIG1vcmUgbWVtb3J5LCBsaWtlIFNFVCwgTFBVU0gsIGFuZCBzbyBvbiwgYW5kIHdpbGwgY29udGludWUKICMgdG8gcmVwbHkgdG8gcmVhZC1vbmx5IGNvbW1hbmRzIGxpa2UgR0VULgogIwotIyBUaGlzIG9wdGlvbiBpcyB1c3VhbGx5IHVzZWZ1bCB3aGVuIHVzaW5nIFJlZGlzIGFzIGFuIExSVSBjYWNoZSwgb3IgdG8gc2V0Ci0jIGFuIGhhcmQgbWVtb3J5IGxpbWl0IGZvciBhbiBpbnN0YW5jZSAodXNpbmcgdGhlICdub2V2aWN0aW9uJyBwb2xpY3kpLgorIyBUaGlzIG9wdGlvbiBpcyB1c3VhbGx5IHVzZWZ1bCB3aGVuIHVzaW5nIFJlZGlzIGFzIGFuIExSVSBvciBMRlUgY2FjaGUsIG9yIHRvCisjIHNldCBhIGhhcmQgbWVtb3J5IGxpbWl0IGZvciBhbiBpbnN0YW5jZSAodXNpbmcgdGhlICdub2V2aWN0aW9uJyBwb2xpY3kpLgogIwogIyBXQVJOSU5HOiBJZiB5b3UgaGF2ZSBzbGF2ZXMgYXR0YWNoZWQgdG8gYW4gaW5zdGFuY2Ugd2l0aCBtYXhtZW1vcnkgb24sCiAjIHRoZSBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVycyBuZWVkZWQgdG8gZmVlZCB0aGUgc2xhdmVzIGFyZSBzdWJ0cmFjdGVkCkBAIC0yODksMTkgKzU2NiwyNyBAQAogIyBtYXhtZW1vcnkgPGJ5dGVzPgogCiAjIE1BWE1FTU9SWSBQT0xJQ1k6IGhvdyBSZWRpcyB3aWxsIHNlbGVjdCB3aGF0IHRvIHJlbW92ZSB3aGVuIG1heG1lbW9yeQotIyBpcyByZWFjaGVkPyBZb3UgY2FuIHNlbGVjdCBhbW9uZyBmaXZlIGJlaGF2aW9yOgotIyAKLSMgdm9sYXRpbGUtbHJ1IC0+IHJlbW92ZSB0aGUga2V5IHdpdGggYW4gZXhwaXJlIHNldCB1c2luZyBhbiBMUlUgYWxnb3JpdGhtCi0jIGFsbGtleXMtbHJ1IC0+IHJlbW92ZSBhbnkga2V5IGFjY29yZGluZ2x5IHRvIHRoZSBMUlUgYWxnb3JpdGhtCi0jIHZvbGF0aWxlLXJhbmRvbSAtPiByZW1vdmUgYSByYW5kb20ga2V5IHdpdGggYW4gZXhwaXJlIHNldAotIyBhbGxrZXlzLXJhbmRvbSAtPiByZW1vdmUgYSByYW5kb20ga2V5LCBhbnkga2V5Ci0jIHZvbGF0aWxlLXR0bCAtPiByZW1vdmUgdGhlIGtleSB3aXRoIHRoZSBuZWFyZXN0IGV4cGlyZSB0aW1lIChtaW5vciBUVEwpCi0jIG5vZXZpY3Rpb24gLT4gZG9uJ3QgZXhwaXJlIGF0IGFsbCwganVzdCByZXR1cm4gYW4gZXJyb3Igb24gd3JpdGUgb3BlcmF0aW9ucwotIyAKLSMgTm90ZTogd2l0aCBhbGwgdGhlIGtpbmQgb2YgcG9saWNpZXMsIFJlZGlzIHdpbGwgcmV0dXJuIGFuIGVycm9yIG9uIHdyaXRlCi0jICAgICAgIG9wZXJhdGlvbnMsIHdoZW4gdGhlcmUgYXJlIG5vdCBzdWl0YWJsZSBrZXlzIGZvciBldmljdGlvbi4KKyMgaXMgcmVhY2hlZC4gWW91IGNhbiBzZWxlY3QgYW1vbmcgZml2ZSBiZWhhdmlvcnM6CiAjCi0jICAgICAgIEF0IHRoZSBkYXRlIG9mIHdyaXRpbmcgdGhpcyBjb21tYW5kcyBhcmU6IHNldCBzZXRueCBzZXRleCBhcHBlbmQKKyMgdm9sYXRpbGUtbHJ1IC0+IEV2aWN0IHVzaW5nIGFwcHJveGltYXRlZCBMUlUgYW1vbmcgdGhlIGtleXMgd2l0aCBhbiBleHBpcmUgc2V0LgorIyBhbGxrZXlzLWxydSAtPiBFdmljdCBhbnkga2V5IHVzaW5nIGFwcHJveGltYXRlZCBMUlUuCisjIHZvbGF0aWxlLWxmdSAtPiBFdmljdCB1c2luZyBhcHByb3hpbWF0ZWQgTEZVIGFtb25nIHRoZSBrZXlzIHdpdGggYW4gZXhwaXJlIHNldC4KKyMgYWxsa2V5cy1sZnUgLT4gRXZpY3QgYW55IGtleSB1c2luZyBhcHByb3hpbWF0ZWQgTEZVLgorIyB2b2xhdGlsZS1yYW5kb20gLT4gUmVtb3ZlIGEgcmFuZG9tIGtleSBhbW9uZyB0aGUgb25lcyB3aXRoIGFuIGV4cGlyZSBzZXQuCisjIGFsbGtleXMtcmFuZG9tIC0+IFJlbW92ZSBhIHJhbmRvbSBrZXksIGFueSBrZXkuCisjIHZvbGF0aWxlLXR0bCAtPiBSZW1vdmUgdGhlIGtleSB3aXRoIHRoZSBuZWFyZXN0IGV4cGlyZSB0aW1lIChtaW5vciBUVEwpCisjIG5vZXZpY3Rpb24gLT4gRG9uJ3QgZXZpY3QgYW55dGhpbmcsIGp1c3QgcmV0dXJuIGFuIGVycm9yIG9uIHdyaXRlIG9wZXJhdGlvbnMuCisjCisjIExSVSBtZWFucyBMZWFzdCBSZWNlbnRseSBVc2VkCisjIExGVSBtZWFucyBMZWFzdCBGcmVxdWVudGx5IFVzZWQKKyMKKyMgQm90aCBMUlUsIExGVSBhbmQgdm9sYXRpbGUtdHRsIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhcHByb3hpbWF0ZWQKKyMgcmFuZG9taXplZCBhbGdvcml0aG1zLgorIworIyBOb3RlOiB3aXRoIGFueSBvZiB0aGUgYWJvdmUgcG9saWNpZXMsIFJlZGlzIHdpbGwgcmV0dXJuIGFuIGVycm9yIG9uIHdyaXRlCisjICAgICAgIG9wZXJhdGlvbnMsIHdoZW4gdGhlcmUgYXJlIG5vIHN1aXRhYmxlIGtleXMgZm9yIGV2aWN0aW9uLgorIworIyAgICAgICBBdCB0aGUgZGF0ZSBvZiB3cml0aW5nIHRoZXNlIGNvbW1hbmRzIGFyZTogc2V0IHNldG54IHNldGV4IGFwcGVuZAogIyAgICAgICBpbmNyIGRlY3IgcnB1c2ggbHB1c2ggcnB1c2h4IGxwdXNoeCBsaW5zZXJ0IGxzZXQgcnBvcGxwdXNoIHNhZGQKICMgICAgICAgc2ludGVyIHNpbnRlcnN0b3JlIHN1bmlvbiBzdW5pb25zdG9yZSBzZGlmZiBzZGlmZnN0b3JlIHphZGQgemluY3JieQogIyAgICAgICB6dW5pb25zdG9yZSB6aW50ZXJzdG9yZSBoc2V0IGhzZXRueCBobXNldCBoaW5jcmJ5IGluY3JieSBkZWNyYnkKQEAgLTMwOSwxNSArNTk0LDY3IEBACiAjCiAjIFRoZSBkZWZhdWx0IGlzOgogIwotIyBtYXhtZW1vcnktcG9saWN5IHZvbGF0aWxlLWxydQorIyBtYXhtZW1vcnktcG9saWN5IG5vZXZpY3Rpb24KIAotIyBMUlUgYW5kIG1pbmltYWwgVFRMIGFsZ29yaXRobXMgYXJlIG5vdCBwcmVjaXNlIGFsZ29yaXRobXMgYnV0IGFwcHJveGltYXRlZAotIyBhbGdvcml0aG1zIChpbiBvcmRlciB0byBzYXZlIG1lbW9yeSksIHNvIHlvdSBjYW4gc2VsZWN0IGFzIHdlbGwgdGhlIHNhbXBsZQotIyBzaXplIHRvIGNoZWNrLiBGb3IgaW5zdGFuY2UgZm9yIGRlZmF1bHQgUmVkaXMgd2lsbCBjaGVjayB0aHJlZSBrZXlzIGFuZAotIyBwaWNrIHRoZSBvbmUgdGhhdCB3YXMgdXNlZCBsZXNzIHJlY2VudGx5LCB5b3UgY2FuIGNoYW5nZSB0aGUgc2FtcGxlIHNpemUKLSMgdXNpbmcgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4KKyMgTFJVLCBMRlUgYW5kIG1pbmltYWwgVFRMIGFsZ29yaXRobXMgYXJlIG5vdCBwcmVjaXNlIGFsZ29yaXRobXMgYnV0IGFwcHJveGltYXRlZAorIyBhbGdvcml0aG1zIChpbiBvcmRlciB0byBzYXZlIG1lbW9yeSksIHNvIHlvdSBjYW4gdHVuZSBpdCBmb3Igc3BlZWQgb3IKKyMgYWNjdXJhY3kuIEZvciBkZWZhdWx0IFJlZGlzIHdpbGwgY2hlY2sgZml2ZSBrZXlzIGFuZCBwaWNrIHRoZSBvbmUgdGhhdCB3YXMKKyMgdXNlZCBsZXNzIHJlY2VudGx5LCB5b3UgY2FuIGNoYW5nZSB0aGUgc2FtcGxlIHNpemUgdXNpbmcgdGhlIGZvbGxvd2luZworIyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4KICMKLSMgbWF4bWVtb3J5LXNhbXBsZXMgMworIyBUaGUgZGVmYXVsdCBvZiA1IHByb2R1Y2VzIGdvb2QgZW5vdWdoIHJlc3VsdHMuIDEwIEFwcHJveGltYXRlcyB2ZXJ5IGNsb3NlbHkKKyMgdHJ1ZSBMUlUgYnV0IGNvc3RzIG1vcmUgQ1BVLiAzIGlzIGZhc3RlciBidXQgbm90IHZlcnkgYWNjdXJhdGUuCisjCisjIG1heG1lbW9yeS1zYW1wbGVzIDUKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTEFaWSBGUkVFSU5HICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFJlZGlzIGhhcyB0d28gcHJpbWl0aXZlcyB0byBkZWxldGUga2V5cy4gT25lIGlzIGNhbGxlZCBERUwgYW5kIGlzIGEgYmxvY2tpbmcKKyMgZGVsZXRpb24gb2YgdGhlIG9iamVjdC4gSXQgbWVhbnMgdGhhdCB0aGUgc2VydmVyIHN0b3BzIHByb2Nlc3NpbmcgbmV3IGNvbW1hbmRzCisjIGluIG9yZGVyIHRvIHJlY2xhaW0gYWxsIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGFuIG9iamVjdCBpbiBhIHN5bmNocm9ub3VzCisjIHdheS4gSWYgdGhlIGtleSBkZWxldGVkIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNtYWxsIG9iamVjdCwgdGhlIHRpbWUgbmVlZGVkCisjIGluIG9yZGVyIHRvIGV4ZWN1dGUgdGhlIERFTCBjb21tYW5kIGlzIHZlcnkgc21hbGwgYW5kIGNvbXBhcmFibGUgdG8gbW9zdCBvdGhlcgorIyBPKDEpIG9yIE8obG9nX04pIGNvbW1hbmRzIGluIFJlZGlzLiBIb3dldmVyIGlmIHRoZSBrZXkgaXMgYXNzb2NpYXRlZCB3aXRoIGFuCisjIGFnZ3JlZ2F0ZWQgdmFsdWUgY29udGFpbmluZyBtaWxsaW9ucyBvZiBlbGVtZW50cywgdGhlIHNlcnZlciBjYW4gYmxvY2sgZm9yCisjIGEgbG9uZyB0aW1lIChldmVuIHNlY29uZHMpIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uCisjCisjIEZvciB0aGUgYWJvdmUgcmVhc29ucyBSZWRpcyBhbHNvIG9mZmVycyBub24gYmxvY2tpbmcgZGVsZXRpb24gcHJpbWl0aXZlcworIyBzdWNoIGFzIFVOTElOSyAobm9uIGJsb2NraW5nIERFTCkgYW5kIHRoZSBBU1lOQyBvcHRpb24gb2YgRkxVU0hBTEwgYW5kCisjIEZMVVNIREIgY29tbWFuZHMsIGluIG9yZGVyIHRvIHJlY2xhaW0gbWVtb3J5IGluIGJhY2tncm91bmQuIFRob3NlIGNvbW1hbmRzCisjIGFyZSBleGVjdXRlZCBpbiBjb25zdGFudCB0aW1lLiBBbm90aGVyIHRocmVhZCB3aWxsIGluY3JlbWVudGFsbHkgZnJlZSB0aGUKKyMgb2JqZWN0IGluIHRoZSBiYWNrZ3JvdW5kIGFzIGZhc3QgYXMgcG9zc2libGUuCisjCisjIERFTCwgVU5MSU5LIGFuZCBBU1lOQyBvcHRpb24gb2YgRkxVU0hBTEwgYW5kIEZMVVNIREIgYXJlIHVzZXItY29udHJvbGxlZC4KKyMgSXQncyB1cCB0byB0aGUgZGVzaWduIG9mIHRoZSBhcHBsaWNhdGlvbiB0byB1bmRlcnN0YW5kIHdoZW4gaXQgaXMgYSBnb29kCisjIGlkZWEgdG8gdXNlIG9uZSBvciB0aGUgb3RoZXIuIEhvd2V2ZXIgdGhlIFJlZGlzIHNlcnZlciBzb21ldGltZXMgaGFzIHRvCisjIGRlbGV0ZSBrZXlzIG9yIGZsdXNoIHRoZSB3aG9sZSBkYXRhYmFzZSBhcyBhIHNpZGUgZWZmZWN0IG9mIG90aGVyIG9wZXJhdGlvbnMuCisjIFNwZWNpZmljYWxseSBSZWRpcyBkZWxldGVzIG9iamVjdHMgaW5kZXBlbmRlbnRseSBvZiBhIHVzZXIgY2FsbCBpbiB0aGUKKyMgZm9sbG93aW5nIHNjZW5hcmlvczoKKyMKKyMgMSkgT24gZXZpY3Rpb24sIGJlY2F1c2Ugb2YgdGhlIG1heG1lbW9yeSBhbmQgbWF4bWVtb3J5IHBvbGljeSBjb25maWd1cmF0aW9ucywKKyMgICAgaW4gb3JkZXIgdG8gbWFrZSByb29tIGZvciBuZXcgZGF0YSwgd2l0aG91dCBnb2luZyBvdmVyIHRoZSBzcGVjaWZpZWQKKyMgICAgbWVtb3J5IGxpbWl0LgorIyAyKSBCZWNhdXNlIG9mIGV4cGlyZTogd2hlbiBhIGtleSB3aXRoIGFuIGFzc29jaWF0ZWQgdGltZSB0byBsaXZlIChzZWUgdGhlCisjICAgIEVYUElSRSBjb21tYW5kKSBtdXN0IGJlIGRlbGV0ZWQgZnJvbSBtZW1vcnkuCisjIDMpIEJlY2F1c2Ugb2YgYSBzaWRlIGVmZmVjdCBvZiBhIGNvbW1hbmQgdGhhdCBzdG9yZXMgZGF0YSBvbiBhIGtleSB0aGF0IG1heQorIyAgICBhbHJlYWR5IGV4aXN0LiBGb3IgZXhhbXBsZSB0aGUgUkVOQU1FIGNvbW1hbmQgbWF5IGRlbGV0ZSB0aGUgb2xkIGtleQorIyAgICBjb250ZW50IHdoZW4gaXQgaXMgcmVwbGFjZWQgd2l0aCBhbm90aGVyIG9uZS4gU2ltaWxhcmx5IFNVTklPTlNUT1JFCisjICAgIG9yIFNPUlQgd2l0aCBTVE9SRSBvcHRpb24gbWF5IGRlbGV0ZSBleGlzdGluZyBrZXlzLiBUaGUgU0VUIGNvbW1hbmQKKyMgICAgaXRzZWxmIHJlbW92ZXMgYW55IG9sZCBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQga2V5IGluIG9yZGVyIHRvIHJlcGxhY2UKKyMgICAgaXQgd2l0aCB0aGUgc3BlY2lmaWVkIHN0cmluZy4KKyMgNCkgRHVyaW5nIHJlcGxpY2F0aW9uLCB3aGVuIGEgc2xhdmUgcGVyZm9ybXMgYSBmdWxsIHJlc3luY2hyb25pemF0aW9uIHdpdGgKKyMgICAgaXRzIG1hc3RlciwgdGhlIGNvbnRlbnQgb2YgdGhlIHdob2xlIGRhdGFiYXNlIGlzIHJlbW92ZWQgaW4gb3JkZXIgdG8KKyMgICAgbG9hZCB0aGUgUkRCIGZpbGUganVzdCB0cmFuc2ZlcmVkLgorIworIyBJbiBhbGwgdGhlIGFib3ZlIGNhc2VzIHRoZSBkZWZhdWx0IGlzIHRvIGRlbGV0ZSBvYmplY3RzIGluIGEgYmxvY2tpbmcgd2F5LAorIyBsaWtlIGlmIERFTCB3YXMgY2FsbGVkLiBIb3dldmVyIHlvdSBjYW4gY29uZmlndXJlIGVhY2ggY2FzZSBzcGVjaWZpY2FsbHkKKyMgaW4gb3JkZXIgdG8gaW5zdGVhZCByZWxlYXNlIG1lbW9yeSBpbiBhIG5vbi1ibG9ja2luZyB3YXkgbGlrZSBpZiBVTkxJTksKKyMgd2FzIGNhbGxlZCwgdXNpbmcgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXM6CisKK2xhenlmcmVlLWxhenktZXZpY3Rpb24gbm8KK2xhenlmcmVlLWxhenktZXhwaXJlIG5vCitsYXp5ZnJlZS1sYXp5LXNlcnZlci1kZWwgbm8KK3NsYXZlLWxhenktZmx1c2ggbm8KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEFQUEVORCBPTkxZIE1PREUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCkBAIC0zMzksMjQgKzY3NiwyNCBAQAogIwogIyBQbGVhc2UgY2hlY2sgaHR0cDovL3JlZGlzLmlvL3RvcGljcy9wZXJzaXN0ZW5jZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAotIwogIyBPRTogY2hhbmdlZCBkZWZhdWx0IHRvIGVuYWJsZSB0aGlzCiBhcHBlbmRvbmx5IHllcwogCiAjIFRoZSBuYW1lIG9mIHRoZSBhcHBlbmQgb25seSBmaWxlIChkZWZhdWx0OiAiYXBwZW5kb25seS5hb2YiKQotIyBhcHBlbmRmaWxlbmFtZSBhcHBlbmRvbmx5LmFvZgorCithcHBlbmRmaWxlbmFtZSAiYXBwZW5kb25seS5hb2YiCiAKICMgVGhlIGZzeW5jKCkgY2FsbCB0ZWxscyB0aGUgT3BlcmF0aW5nIFN5c3RlbSB0byBhY3R1YWxseSB3cml0ZSBkYXRhIG9uIGRpc2sKLSMgaW5zdGVhZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgaW4gdGhlIG91dHB1dCBidWZmZXIuIFNvbWUgT1Mgd2lsbCByZWFsbHkgZmx1c2ggCisjIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBvdXRwdXQgYnVmZmVyLiBTb21lIE9TIHdpbGwgcmVhbGx5IGZsdXNoCiAjIGRhdGEgb24gZGlzaywgc29tZSBvdGhlciBPUyB3aWxsIGp1c3QgdHJ5IHRvIGRvIGl0IEFTQVAuCiAjCiAjIFJlZGlzIHN1cHBvcnRzIHRocmVlIGRpZmZlcmVudCBtb2RlczoKICMKICMgbm86IGRvbid0IGZzeW5jLCBqdXN0IGxldCB0aGUgT1MgZmx1c2ggdGhlIGRhdGEgd2hlbiBpdCB3YW50cy4gRmFzdGVyLgotIyBhbHdheXM6IGZzeW5jIGFmdGVyIGV2ZXJ5IHdyaXRlIHRvIHRoZSBhcHBlbmQgb25seSBsb2cgLiBTbG93LCBTYWZlc3QuCisjIGFsd2F5czogZnN5bmMgYWZ0ZXIgZXZlcnkgd3JpdGUgdG8gdGhlIGFwcGVuZCBvbmx5IGxvZy4gU2xvdywgU2FmZXN0LgogIyBldmVyeXNlYzogZnN5bmMgb25seSBvbmUgdGltZSBldmVyeSBzZWNvbmQuIENvbXByb21pc2UuCiAjCi0jIFRoZSBkZWZhdWx0IGlzICJldmVyeXNlYyIgdGhhdCdzIHVzdWFsbHkgdGhlIHJpZ2h0IGNvbXByb21pc2UgYmV0d2VlbgorIyBUaGUgZGVmYXVsdCBpcyAiZXZlcnlzZWMiLCBhcyB0aGF0J3MgdXN1YWxseSB0aGUgcmlnaHQgY29tcHJvbWlzZSBiZXR3ZWVuCiAjIHNwZWVkIGFuZCBkYXRhIHNhZmV0eS4gSXQncyB1cCB0byB5b3UgdG8gdW5kZXJzdGFuZCBpZiB5b3UgY2FuIHJlbGF4IHRoaXMgdG8KICMgIm5vIiB0aGF0IHdpbGwgbGV0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZsdXNoIHRoZSBvdXRwdXQgYnVmZmVyIHdoZW4KICMgaXQgd2FudHMsIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2VzIChidXQgaWYgeW91IGNhbiBsaXZlIHdpdGggdGhlIGlkZWEgb2YKQEAgLTM4NCwyMSArNzIxLDIyIEBACiAjIHRoYXQgd2lsbCBwcmV2ZW50IGZzeW5jKCkgZnJvbSBiZWluZyBjYWxsZWQgaW4gdGhlIG1haW4gcHJvY2VzcyB3aGlsZSBhCiAjIEJHU0FWRSBvciBCR1JFV1JJVEVBT0YgaXMgaW4gcHJvZ3Jlc3MuCiAjCi0jIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSBhbm90aGVyIGNoaWxkIGlzIHNhdmluZyB0aGUgZHVyYWJpbGl0eSBvZiBSZWRpcyBpcwotIyB0aGUgc2FtZSBhcyAiYXBwZW5kZnN5bmMgbm9uZSIsIHRoYXQgaW4gcHJhY3RpY2FsIHRlcm1zIG1lYW5zIHRoYXQgaXQgaXMKLSMgcG9zc2libGUgdG8gbG9zdCB1cCB0byAzMCBzZWNvbmRzIG9mIGxvZyBpbiB0aGUgd29yc3Qgc2NlbmFyaW8gKHdpdGggdGhlCisjIFRoaXMgbWVhbnMgdGhhdCB3aGlsZSBhbm90aGVyIGNoaWxkIGlzIHNhdmluZywgdGhlIGR1cmFiaWxpdHkgb2YgUmVkaXMgaXMKKyMgdGhlIHNhbWUgYXMgImFwcGVuZGZzeW5jIG5vbmUiLiBJbiBwcmFjdGljYWwgdGVybXMsIHRoaXMgbWVhbnMgdGhhdCBpdCBpcworIyBwb3NzaWJsZSB0byBsb3NlIHVwIHRvIDMwIHNlY29uZHMgb2YgbG9nIGluIHRoZSB3b3JzdCBzY2VuYXJpbyAod2l0aCB0aGUKICMgZGVmYXVsdCBMaW51eCBzZXR0aW5ncykuCi0jIAorIwogIyBJZiB5b3UgaGF2ZSBsYXRlbmN5IHByb2JsZW1zIHR1cm4gdGhpcyB0byAieWVzIi4gT3RoZXJ3aXNlIGxlYXZlIGl0IGFzCiAjICJubyIgdGhhdCBpcyB0aGUgc2FmZXN0IHBpY2sgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBkdXJhYmlsaXR5LgorCiBuby1hcHBlbmRmc3luYy1vbi1yZXdyaXRlIG5vCiAKICMgQXV0b21hdGljIHJld3JpdGUgb2YgdGhlIGFwcGVuZCBvbmx5IGZpbGUuCiAjIFJlZGlzIGlzIGFibGUgdG8gYXV0b21hdGljYWxseSByZXdyaXRlIHRoZSBsb2cgZmlsZSBpbXBsaWNpdGx5IGNhbGxpbmcKLSMgQkdSRVdSSVRFQU9GIHdoZW4gdGhlIEFPRiBsb2cgc2l6ZSB3aWxsIGdyb3d0aCBieSB0aGUgc3BlY2lmaWVkIHBlcmNlbnRhZ2UuCi0jIAorIyBCR1JFV1JJVEVBT0Ygd2hlbiB0aGUgQU9GIGxvZyBzaXplIGdyb3dzIGJ5IHRoZSBzcGVjaWZpZWQgcGVyY2VudGFnZS4KKyMKICMgVGhpcyBpcyBob3cgaXQgd29ya3M6IFJlZGlzIHJlbWVtYmVycyB0aGUgc2l6ZSBvZiB0aGUgQU9GIGZpbGUgYWZ0ZXIgdGhlCi0jIGxhdGVzdCByZXdyaXRlIChvciBpZiBubyByZXdyaXRlIGhhcHBlbmVkIHNpbmNlIHRoZSByZXN0YXJ0LCB0aGUgc2l6ZSBvZgorIyBsYXRlc3QgcmV3cml0ZSAoaWYgbm8gcmV3cml0ZSBoYXMgaGFwcGVuZWQgc2luY2UgdGhlIHJlc3RhcnQsIHRoZSBzaXplIG9mCiAjIHRoZSBBT0YgYXQgc3RhcnR1cCBpcyB1c2VkKS4KICMKICMgVGhpcyBiYXNlIHNpemUgaXMgY29tcGFyZWQgdG8gdGhlIGN1cnJlbnQgc2l6ZS4gSWYgdGhlIGN1cnJlbnQgc2l6ZSBpcwpAQCAtNDEzLDYgKzc1MSw0NCBAQAogYXV0by1hb2YtcmV3cml0ZS1wZXJjZW50YWdlIDEwMAogYXV0by1hb2YtcmV3cml0ZS1taW4tc2l6ZSA2NG1iCiAKKyMgQW4gQU9GIGZpbGUgbWF5IGJlIGZvdW5kIHRvIGJlIHRydW5jYXRlZCBhdCB0aGUgZW5kIGR1cmluZyB0aGUgUmVkaXMKKyMgc3RhcnR1cCBwcm9jZXNzLCB3aGVuIHRoZSBBT0YgZGF0YSBnZXRzIGxvYWRlZCBiYWNrIGludG8gbWVtb3J5LgorIyBUaGlzIG1heSBoYXBwZW4gd2hlbiB0aGUgc3lzdGVtIHdoZXJlIFJlZGlzIGlzIHJ1bm5pbmcKKyMgY3Jhc2hlcywgZXNwZWNpYWxseSB3aGVuIGFuIGV4dDQgZmlsZXN5c3RlbSBpcyBtb3VudGVkIHdpdGhvdXQgdGhlCisjIGRhdGE9b3JkZXJlZCBvcHRpb24gKGhvd2V2ZXIgdGhpcyBjYW4ndCBoYXBwZW4gd2hlbiBSZWRpcyBpdHNlbGYKKyMgY3Jhc2hlcyBvciBhYm9ydHMgYnV0IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHN0aWxsIHdvcmtzIGNvcnJlY3RseSkuCisjCisjIFJlZGlzIGNhbiBlaXRoZXIgZXhpdCB3aXRoIGFuIGVycm9yIHdoZW4gdGhpcyBoYXBwZW5zLCBvciBsb2FkIGFzIG11Y2gKKyMgZGF0YSBhcyBwb3NzaWJsZSAodGhlIGRlZmF1bHQgbm93KSBhbmQgc3RhcnQgaWYgdGhlIEFPRiBmaWxlIGlzIGZvdW5kCisjIHRvIGJlIHRydW5jYXRlZCBhdCB0aGUgZW5kLiBUaGUgZm9sbG93aW5nIG9wdGlvbiBjb250cm9scyB0aGlzIGJlaGF2aW9yLgorIworIyBJZiBhb2YtbG9hZC10cnVuY2F0ZWQgaXMgc2V0IHRvIHllcywgYSB0cnVuY2F0ZWQgQU9GIGZpbGUgaXMgbG9hZGVkIGFuZAorIyB0aGUgUmVkaXMgc2VydmVyIHN0YXJ0cyBlbWl0dGluZyBhIGxvZyB0byBpbmZvcm0gdGhlIHVzZXIgb2YgdGhlIGV2ZW50LgorIyBPdGhlcndpc2UgaWYgdGhlIG9wdGlvbiBpcyBzZXQgdG8gbm8sIHRoZSBzZXJ2ZXIgYWJvcnRzIHdpdGggYW4gZXJyb3IKKyMgYW5kIHJlZnVzZXMgdG8gc3RhcnQuIFdoZW4gdGhlIG9wdGlvbiBpcyBzZXQgdG8gbm8sIHRoZSB1c2VyIHJlcXVpcmVzCisjIHRvIGZpeCB0aGUgQU9GIGZpbGUgdXNpbmcgdGhlICJyZWRpcy1jaGVjay1hb2YiIHV0aWxpdHkgYmVmb3JlIHRvIHJlc3RhcnQKKyMgdGhlIHNlcnZlci4KKyMKKyMgTm90ZSB0aGF0IGlmIHRoZSBBT0YgZmlsZSB3aWxsIGJlIGZvdW5kIHRvIGJlIGNvcnJ1cHRlZCBpbiB0aGUgbWlkZGxlCisjIHRoZSBzZXJ2ZXIgd2lsbCBzdGlsbCBleGl0IHdpdGggYW4gZXJyb3IuIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB3aGVuCisjIFJlZGlzIHdpbGwgdHJ5IHRvIHJlYWQgbW9yZSBkYXRhIGZyb20gdGhlIEFPRiBmaWxlIGJ1dCBub3QgZW5vdWdoIGJ5dGVzCisjIHdpbGwgYmUgZm91bmQuCithb2YtbG9hZC10cnVuY2F0ZWQgeWVzCisKKyMgV2hlbiByZXdyaXRpbmcgdGhlIEFPRiBmaWxlLCBSZWRpcyBpcyBhYmxlIHRvIHVzZSBhbiBSREIgcHJlYW1ibGUgaW4gdGhlCisjIEFPRiBmaWxlIGZvciBmYXN0ZXIgcmV3cml0ZXMgYW5kIHJlY292ZXJpZXMuIFdoZW4gdGhpcyBvcHRpb24gaXMgdHVybmVkCisjIG9uIHRoZSByZXdyaXR0ZW4gQU9GIGZpbGUgaXMgY29tcG9zZWQgb2YgdHdvIGRpZmZlcmVudCBzdGFuemFzOgorIworIyAgIFtSREIgZmlsZV1bQU9GIHRhaWxdCisjCisjIFdoZW4gbG9hZGluZyBSZWRpcyByZWNvZ25pemVzIHRoYXQgdGhlIEFPRiBmaWxlIHN0YXJ0cyB3aXRoIHRoZSAiUkVESVMiCisjIHN0cmluZyBhbmQgbG9hZHMgdGhlIHByZWZpeGVkIFJEQiBmaWxlLCBhbmQgY29udGludWVzIGxvYWRpbmcgdGhlIEFPRgorIyB0YWlsLgorIworIyBUaGlzIGlzIGN1cnJlbnRseSB0dXJuZWQgb2ZmIGJ5IGRlZmF1bHQgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIHN1cnByaXNlCisjIG9mIGEgZm9ybWF0IGNoYW5nZSwgYnV0IHdpbGwgYXQgc29tZSBwb2ludCBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0LgorYW9mLXVzZS1yZGItcHJlYW1ibGUgbm8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTFVBIFNDUklQVElORyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIE1heCBleGVjdXRpb24gdGltZSBvZiBhIEx1YSBzY3JpcHQgaW4gbWlsbGlzZWNvbmRzLgpAQCAtNDIxLDE2ICs3OTcsMTU3IEBACiAjIHN0aWxsIGluIGV4ZWN1dGlvbiBhZnRlciB0aGUgbWF4aW11bSBhbGxvd2VkIHRpbWUgYW5kIHdpbGwgc3RhcnQgdG8KICMgcmVwbHkgdG8gcXVlcmllcyB3aXRoIGFuIGVycm9yLgogIwotIyBXaGVuIGEgbG9uZyBydW5uaW5nIHNjcmlwdCBleGNlZWQgdGhlIG1heGltdW0gZXhlY3V0aW9uIHRpbWUgb25seSB0aGUKKyMgV2hlbiBhIGxvbmcgcnVubmluZyBzY3JpcHQgZXhjZWVkcyB0aGUgbWF4aW11bSBleGVjdXRpb24gdGltZSBvbmx5IHRoZQogIyBTQ1JJUFQgS0lMTCBhbmQgU0hVVERPV04gTk9TQVZFIGNvbW1hbmRzIGFyZSBhdmFpbGFibGUuIFRoZSBmaXJzdCBjYW4gYmUKICMgdXNlZCB0byBzdG9wIGEgc2NyaXB0IHRoYXQgZGlkIG5vdCB5ZXQgY2FsbGVkIHdyaXRlIGNvbW1hbmRzLiBUaGUgc2Vjb25kCi0jIGlzIHRoZSBvbmx5IHdheSB0byBzaHV0IGRvd24gdGhlIHNlcnZlciBpbiB0aGUgY2FzZSBhIHdyaXRlIGNvbW1hbmRzIHdhcwotIyBhbHJlYWR5IGlzc3VlIGJ5IHRoZSBzY3JpcHQgYnV0IHRoZSB1c2VyIGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgdGhlIG5hdHVyYWwKKyMgaXMgdGhlIG9ubHkgd2F5IHRvIHNodXQgZG93biB0aGUgc2VydmVyIGluIHRoZSBjYXNlIGEgd3JpdGUgY29tbWFuZCB3YXMKKyMgYWxyZWFkeSBpc3N1ZWQgYnkgdGhlIHNjcmlwdCBidXQgdGhlIHVzZXIgZG9lc24ndCB3YW50IHRvIHdhaXQgZm9yIHRoZSBuYXR1cmFsCiAjIHRlcm1pbmF0aW9uIG9mIHRoZSBzY3JpcHQuCiAjCiAjIFNldCBpdCB0byAwIG9yIGEgbmVnYXRpdmUgdmFsdWUgZm9yIHVubGltaXRlZCBleGVjdXRpb24gd2l0aG91dCB3YXJuaW5ncy4KIGx1YS10aW1lLWxpbWl0IDUwMDAKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUkVESVMgQ0xVU1RFUiAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisjIFdBUk5JTkcgRVhQRVJJTUVOVEFMOiBSZWRpcyBDbHVzdGVyIGlzIGNvbnNpZGVyZWQgdG8gYmUgc3RhYmxlIGNvZGUsIGhvd2V2ZXIKKyMgaW4gb3JkZXIgdG8gbWFyayBpdCBhcyAibWF0dXJlIiB3ZSBuZWVkIHRvIHdhaXQgZm9yIGEgbm9uIHRyaXZpYWwgcGVyY2VudGFnZQorIyBvZiB1c2VycyB0byBkZXBsb3kgaXQgaW4gcHJvZHVjdGlvbi4KKyMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIworIyBOb3JtYWwgUmVkaXMgaW5zdGFuY2VzIGNhbid0IGJlIHBhcnQgb2YgYSBSZWRpcyBDbHVzdGVyOyBvbmx5IG5vZGVzIHRoYXQgYXJlCisjIHN0YXJ0ZWQgYXMgY2x1c3RlciBub2RlcyBjYW4uIEluIG9yZGVyIHRvIHN0YXJ0IGEgUmVkaXMgaW5zdGFuY2UgYXMgYQorIyBjbHVzdGVyIG5vZGUgZW5hYmxlIHRoZSBjbHVzdGVyIHN1cHBvcnQgdW5jb21tZW50aW5nIHRoZSBmb2xsb3dpbmc6CisjCisjIGNsdXN0ZXItZW5hYmxlZCB5ZXMKKworIyBFdmVyeSBjbHVzdGVyIG5vZGUgaGFzIGEgY2x1c3RlciBjb25maWd1cmF0aW9uIGZpbGUuIFRoaXMgZmlsZSBpcyBub3QKKyMgaW50ZW5kZWQgdG8gYmUgZWRpdGVkIGJ5IGhhbmQuIEl0IGlzIGNyZWF0ZWQgYW5kIHVwZGF0ZWQgYnkgUmVkaXMgbm9kZXMuCisjIEV2ZXJ5IFJlZGlzIENsdXN0ZXIgbm9kZSByZXF1aXJlcyBhIGRpZmZlcmVudCBjbHVzdGVyIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyMgTWFrZSBzdXJlIHRoYXQgaW5zdGFuY2VzIHJ1bm5pbmcgaW4gdGhlIHNhbWUgc3lzdGVtIGRvIG5vdCBoYXZlCisjIG92ZXJsYXBwaW5nIGNsdXN0ZXIgY29uZmlndXJhdGlvbiBmaWxlIG5hbWVzLgorIworIyBjbHVzdGVyLWNvbmZpZy1maWxlIG5vZGVzLTYzNzkuY29uZgorCisjIENsdXN0ZXIgbm9kZSB0aW1lb3V0IGlzIHRoZSBhbW91bnQgb2YgbWlsbGlzZWNvbmRzIGEgbm9kZSBtdXN0IGJlIHVucmVhY2hhYmxlCisjIGZvciBpdCB0byBiZSBjb25zaWRlcmVkIGluIGZhaWx1cmUgc3RhdGUuCisjIE1vc3Qgb3RoZXIgaW50ZXJuYWwgdGltZSBsaW1pdHMgYXJlIG11bHRpcGxlIG9mIHRoZSBub2RlIHRpbWVvdXQuCisjCisjIGNsdXN0ZXItbm9kZS10aW1lb3V0IDE1MDAwCisKKyMgQSBzbGF2ZSBvZiBhIGZhaWxpbmcgbWFzdGVyIHdpbGwgYXZvaWQgdG8gc3RhcnQgYSBmYWlsb3ZlciBpZiBpdHMgZGF0YQorIyBsb29rcyB0b28gb2xkLgorIworIyBUaGVyZSBpcyBubyBzaW1wbGUgd2F5IGZvciBhIHNsYXZlIHRvIGFjdHVhbGx5IGhhdmUgYW4gZXhhY3QgbWVhc3VyZSBvZgorIyBpdHMgImRhdGEgYWdlIiwgc28gdGhlIGZvbGxvd2luZyB0d28gY2hlY2tzIGFyZSBwZXJmb3JtZWQ6CisjCisjIDEpIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBzbGF2ZXMgYWJsZSB0byBmYWlsb3ZlciwgdGhleSBleGNoYW5nZSBtZXNzYWdlcworIyAgICBpbiBvcmRlciB0byB0cnkgdG8gZ2l2ZSBhbiBhZHZhbnRhZ2UgdG8gdGhlIHNsYXZlIHdpdGggdGhlIGJlc3QKKyMgICAgcmVwbGljYXRpb24gb2Zmc2V0IChtb3JlIGRhdGEgZnJvbSB0aGUgbWFzdGVyIHByb2Nlc3NlZCkuCisjICAgIFNsYXZlcyB3aWxsIHRyeSB0byBnZXQgdGhlaXIgcmFuayBieSBvZmZzZXQsIGFuZCBhcHBseSB0byB0aGUgc3RhcnQKKyMgICAgb2YgdGhlIGZhaWxvdmVyIGEgZGVsYXkgcHJvcG9ydGlvbmFsIHRvIHRoZWlyIHJhbmsuCisjCisjIDIpIEV2ZXJ5IHNpbmdsZSBzbGF2ZSBjb21wdXRlcyB0aGUgdGltZSBvZiB0aGUgbGFzdCBpbnRlcmFjdGlvbiB3aXRoCisjICAgIGl0cyBtYXN0ZXIuIFRoaXMgY2FuIGJlIHRoZSBsYXN0IHBpbmcgb3IgY29tbWFuZCByZWNlaXZlZCAoaWYgdGhlIG1hc3RlcgorIyAgICBpcyBzdGlsbCBpbiB0aGUgImNvbm5lY3RlZCIgc3RhdGUpLCBvciB0aGUgdGltZSB0aGF0IGVsYXBzZWQgc2luY2UgdGhlCisjICAgIGRpc2Nvbm5lY3Rpb24gd2l0aCB0aGUgbWFzdGVyIChpZiB0aGUgcmVwbGljYXRpb24gbGluayBpcyBjdXJyZW50bHkgZG93bikuCisjICAgIElmIHRoZSBsYXN0IGludGVyYWN0aW9uIGlzIHRvbyBvbGQsIHRoZSBzbGF2ZSB3aWxsIG5vdCB0cnkgdG8gZmFpbG92ZXIKKyMgICAgYXQgYWxsLgorIworIyBUaGUgcG9pbnQgIjIiIGNhbiBiZSB0dW5lZCBieSB1c2VyLiBTcGVjaWZpY2FsbHkgYSBzbGF2ZSB3aWxsIG5vdCBwZXJmb3JtCisjIHRoZSBmYWlsb3ZlciBpZiwgc2luY2UgdGhlIGxhc3QgaW50ZXJhY3Rpb24gd2l0aCB0aGUgbWFzdGVyLCB0aGUgdGltZQorIyBlbGFwc2VkIGlzIGdyZWF0ZXIgdGhhbjoKKyMKKyMgICAobm9kZS10aW1lb3V0ICogc2xhdmUtdmFsaWRpdHktZmFjdG9yKSArIHJlcGwtcGluZy1zbGF2ZS1wZXJpb2QKKyMKKyMgU28gZm9yIGV4YW1wbGUgaWYgbm9kZS10aW1lb3V0IGlzIDMwIHNlY29uZHMsIGFuZCB0aGUgc2xhdmUtdmFsaWRpdHktZmFjdG9yCisjIGlzIDEwLCBhbmQgYXNzdW1pbmcgYSBkZWZhdWx0IHJlcGwtcGluZy1zbGF2ZS1wZXJpb2Qgb2YgMTAgc2Vjb25kcywgdGhlCisjIHNsYXZlIHdpbGwgbm90IHRyeSB0byBmYWlsb3ZlciBpZiBpdCB3YXMgbm90IGFibGUgdG8gdGFsayB3aXRoIHRoZSBtYXN0ZXIKKyMgZm9yIGxvbmdlciB0aGFuIDMxMCBzZWNvbmRzLgorIworIyBBIGxhcmdlIHNsYXZlLXZhbGlkaXR5LWZhY3RvciBtYXkgYWxsb3cgc2xhdmVzIHdpdGggdG9vIG9sZCBkYXRhIHRvIGZhaWxvdmVyCisjIGEgbWFzdGVyLCB3aGlsZSBhIHRvbyBzbWFsbCB2YWx1ZSBtYXkgcHJldmVudCB0aGUgY2x1c3RlciBmcm9tIGJlaW5nIGFibGUgdG8KKyMgZWxlY3QgYSBzbGF2ZSBhdCBhbGwuCisjCisjIEZvciBtYXhpbXVtIGF2YWlsYWJpbGl0eSwgaXQgaXMgcG9zc2libGUgdG8gc2V0IHRoZSBzbGF2ZS12YWxpZGl0eS1mYWN0b3IKKyMgdG8gYSB2YWx1ZSBvZiAwLCB3aGljaCBtZWFucywgdGhhdCBzbGF2ZXMgd2lsbCBhbHdheXMgdHJ5IHRvIGZhaWxvdmVyIHRoZQorIyBtYXN0ZXIgcmVnYXJkbGVzcyBvZiB0aGUgbGFzdCB0aW1lIHRoZXkgaW50ZXJhY3RlZCB3aXRoIHRoZSBtYXN0ZXIuCisjIChIb3dldmVyIHRoZXknbGwgYWx3YXlzIHRyeSB0byBhcHBseSBhIGRlbGF5IHByb3BvcnRpb25hbCB0byB0aGVpcgorIyBvZmZzZXQgcmFuaykuCisjCisjIFplcm8gaXMgdGhlIG9ubHkgdmFsdWUgYWJsZSB0byBndWFyYW50ZWUgdGhhdCB3aGVuIGFsbCB0aGUgcGFydGl0aW9ucyBoZWFsCisjIHRoZSBjbHVzdGVyIHdpbGwgYWx3YXlzIGJlIGFibGUgdG8gY29udGludWUuCisjCisjIGNsdXN0ZXItc2xhdmUtdmFsaWRpdHktZmFjdG9yIDEwCisKKyMgQ2x1c3RlciBzbGF2ZXMgYXJlIGFibGUgdG8gbWlncmF0ZSB0byBvcnBoYW5lZCBtYXN0ZXJzLCB0aGF0IGFyZSBtYXN0ZXJzCisjIHRoYXQgYXJlIGxlZnQgd2l0aG91dCB3b3JraW5nIHNsYXZlcy4gVGhpcyBpbXByb3ZlcyB0aGUgY2x1c3RlciBhYmlsaXR5CisjIHRvIHJlc2lzdCB0byBmYWlsdXJlcyBhcyBvdGhlcndpc2UgYW4gb3JwaGFuZWQgbWFzdGVyIGNhbid0IGJlIGZhaWxlZCBvdmVyCisjIGluIGNhc2Ugb2YgZmFpbHVyZSBpZiBpdCBoYXMgbm8gd29ya2luZyBzbGF2ZXMuCisjCisjIFNsYXZlcyBtaWdyYXRlIHRvIG9ycGhhbmVkIG1hc3RlcnMgb25seSBpZiB0aGVyZSBhcmUgc3RpbGwgYXQgbGVhc3QgYQorIyBnaXZlbiBudW1iZXIgb2Ygb3RoZXIgd29ya2luZyBzbGF2ZXMgZm9yIHRoZWlyIG9sZCBtYXN0ZXIuIFRoaXMgbnVtYmVyCisjIGlzIHRoZSAibWlncmF0aW9uIGJhcnJpZXIiLiBBIG1pZ3JhdGlvbiBiYXJyaWVyIG9mIDEgbWVhbnMgdGhhdCBhIHNsYXZlCisjIHdpbGwgbWlncmF0ZSBvbmx5IGlmIHRoZXJlIGlzIGF0IGxlYXN0IDEgb3RoZXIgd29ya2luZyBzbGF2ZSBmb3IgaXRzIG1hc3RlcgorIyBhbmQgc28gZm9ydGguIEl0IHVzdWFsbHkgcmVmbGVjdHMgdGhlIG51bWJlciBvZiBzbGF2ZXMgeW91IHdhbnQgZm9yIGV2ZXJ5CisjIG1hc3RlciBpbiB5b3VyIGNsdXN0ZXIuCisjCisjIERlZmF1bHQgaXMgMSAoc2xhdmVzIG1pZ3JhdGUgb25seSBpZiB0aGVpciBtYXN0ZXJzIHJlbWFpbiB3aXRoIGF0IGxlYXN0CisjIG9uZSBzbGF2ZSkuIFRvIGRpc2FibGUgbWlncmF0aW9uIGp1c3Qgc2V0IGl0IHRvIGEgdmVyeSBsYXJnZSB2YWx1ZS4KKyMgQSB2YWx1ZSBvZiAwIGNhbiBiZSBzZXQgYnV0IGlzIHVzZWZ1bCBvbmx5IGZvciBkZWJ1Z2dpbmcgYW5kIGRhbmdlcm91cworIyBpbiBwcm9kdWN0aW9uLgorIworIyBjbHVzdGVyLW1pZ3JhdGlvbi1iYXJyaWVyIDEKKworIyBCeSBkZWZhdWx0IFJlZGlzIENsdXN0ZXIgbm9kZXMgc3RvcCBhY2NlcHRpbmcgcXVlcmllcyBpZiB0aGV5IGRldGVjdCB0aGVyZQorIyBpcyBhdCBsZWFzdCBhbiBoYXNoIHNsb3QgdW5jb3ZlcmVkIChubyBhdmFpbGFibGUgbm9kZSBpcyBzZXJ2aW5nIGl0KS4KKyMgVGhpcyB3YXkgaWYgdGhlIGNsdXN0ZXIgaXMgcGFydGlhbGx5IGRvd24gKGZvciBleGFtcGxlIGEgcmFuZ2Ugb2YgaGFzaCBzbG90cworIyBhcmUgbm8gbG9uZ2VyIGNvdmVyZWQpIGFsbCB0aGUgY2x1c3RlciBiZWNvbWVzLCBldmVudHVhbGx5LCB1bmF2YWlsYWJsZS4KKyMgSXQgYXV0b21hdGljYWxseSByZXR1cm5zIGF2YWlsYWJsZSBhcyBzb29uIGFzIGFsbCB0aGUgc2xvdHMgYXJlIGNvdmVyZWQgYWdhaW4uCisjCisjIEhvd2V2ZXIgc29tZXRpbWVzIHlvdSB3YW50IHRoZSBzdWJzZXQgb2YgdGhlIGNsdXN0ZXIgd2hpY2ggaXMgd29ya2luZywKKyMgdG8gY29udGludWUgdG8gYWNjZXB0IHF1ZXJpZXMgZm9yIHRoZSBwYXJ0IG9mIHRoZSBrZXkgc3BhY2UgdGhhdCBpcyBzdGlsbAorIyBjb3ZlcmVkLiBJbiBvcmRlciB0byBkbyBzbywganVzdCBzZXQgdGhlIGNsdXN0ZXItcmVxdWlyZS1mdWxsLWNvdmVyYWdlCisjIG9wdGlvbiB0byBuby4KKyMKKyMgY2x1c3Rlci1yZXF1aXJlLWZ1bGwtY292ZXJhZ2UgeWVzCisKKyMgSW4gb3JkZXIgdG8gc2V0dXAgeW91ciBjbHVzdGVyIG1ha2Ugc3VyZSB0byByZWFkIHRoZSBkb2N1bWVudGF0aW9uCisjIGF2YWlsYWJsZSBhdCBodHRwOi8vcmVkaXMuaW8gd2ViIHNpdGUuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENMVVNURVIgRE9DS0VSL05BVCBzdXBwb3J0ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBJbiBjZXJ0YWluIGRlcGxveW1lbnRzLCBSZWRpcyBDbHVzdGVyIG5vZGVzIGFkZHJlc3MgZGlzY292ZXJ5IGZhaWxzLCBiZWNhdXNlCisjIGFkZHJlc3NlcyBhcmUgTkFULXRlZCBvciBiZWNhdXNlIHBvcnRzIGFyZSBmb3J3YXJkZWQgKHRoZSB0eXBpY2FsIGNhc2UgaXMKKyMgRG9ja2VyIGFuZCBvdGhlciBjb250YWluZXJzKS4KKyMKKyMgSW4gb3JkZXIgdG8gbWFrZSBSZWRpcyBDbHVzdGVyIHdvcmtpbmcgaW4gc3VjaCBlbnZpcm9ubWVudHMsIGEgc3RhdGljCisjIGNvbmZpZ3VyYXRpb24gd2hlcmUgZWFjaCBub2RlIGtub3dzIGl0cyBwdWJsaWMgYWRkcmVzcyBpcyBuZWVkZWQuIFRoZQorIyBmb2xsb3dpbmcgdHdvIG9wdGlvbnMgYXJlIHVzZWQgZm9yIHRoaXMgc2NvcGUsIGFuZCBhcmU6CisjCisjICogY2x1c3Rlci1hbm5vdW5jZS1pcAorIyAqIGNsdXN0ZXItYW5ub3VuY2UtcG9ydAorIyAqIGNsdXN0ZXItYW5ub3VuY2UtYnVzLXBvcnQKKyMKKyMgRWFjaCBpbnN0cnVjdCB0aGUgbm9kZSBhYm91dCBpdHMgYWRkcmVzcywgY2xpZW50IHBvcnQsIGFuZCBjbHVzdGVyIG1lc3NhZ2UKKyMgYnVzIHBvcnQuIFRoZSBpbmZvcm1hdGlvbiBpcyB0aGVuIHB1Ymxpc2hlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBidXMgcGFja2V0cworIyBzbyB0aGF0IG90aGVyIG5vZGVzIHdpbGwgYmUgYWJsZSB0byBjb3JyZWN0bHkgbWFwIHRoZSBhZGRyZXNzIG9mIHRoZSBub2RlCisjIHB1Ymxpc2hpbmcgdGhlIGluZm9ybWF0aW9uLgorIworIyBJZiB0aGUgYWJvdmUgb3B0aW9ucyBhcmUgbm90IHVzZWQsIHRoZSBub3JtYWwgUmVkaXMgQ2x1c3RlciBhdXRvLWRldGVjdGlvbgorIyB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KKyMKKyMgTm90ZSB0aGF0IHdoZW4gcmVtYXBwZWQsIHRoZSBidXMgcG9ydCBtYXkgbm90IGJlIGF0IHRoZSBmaXhlZCBvZmZzZXQgb2YKKyMgY2xpZW50cyBwb3J0ICsgMTAwMDAsIHNvIHlvdSBjYW4gc3BlY2lmeSBhbnkgcG9ydCBhbmQgYnVzLXBvcnQgZGVwZW5kaW5nCisjIG9uIGhvdyB0aGV5IGdldCByZW1hcHBlZC4gSWYgdGhlIGJ1cy1wb3J0IGlzIG5vdCBzZXQsIGEgZml4ZWQgb2Zmc2V0IG9mCisjIDEwMDAwIHdpbGwgYmUgdXNlZCBhcyB1c3VhbGx5LgorIworIyBFeGFtcGxlOgorIworIyBjbHVzdGVyLWFubm91bmNlLWlwIDEwLjEuMS41CisjIGNsdXN0ZXItYW5ub3VuY2UtcG9ydCA2Mzc5CisjIGNsdXN0ZXItYW5ub3VuY2UtYnVzLXBvcnQgNjM4MAorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFNMT1cgTE9HICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgVGhlIFJlZGlzIFNsb3cgTG9nIGlzIGEgc3lzdGVtIHRvIGxvZyBxdWVyaWVzIHRoYXQgZXhjZWVkZWQgYSBzcGVjaWZpZWQKQEAgLTQzOSw3ICs5NTYsNyBAQAogIyBidXQganVzdCB0aGUgdGltZSBuZWVkZWQgdG8gYWN0dWFsbHkgZXhlY3V0ZSB0aGUgY29tbWFuZCAodGhpcyBpcyB0aGUgb25seQogIyBzdGFnZSBvZiBjb21tYW5kIGV4ZWN1dGlvbiB3aGVyZSB0aGUgdGhyZWFkIGlzIGJsb2NrZWQgYW5kIGNhbiBub3Qgc2VydmUKICMgb3RoZXIgcmVxdWVzdHMgaW4gdGhlIG1lYW50aW1lKS4KLSMgCisjCiAjIFlvdSBjYW4gY29uZmlndXJlIHRoZSBzbG93IGxvZyB3aXRoIHR3byBwYXJhbWV0ZXJzOiBvbmUgdGVsbHMgUmVkaXMKICMgd2hhdCBpcyB0aGUgZXhlY3V0aW9uIHRpbWUsIGluIG1pY3Jvc2Vjb25kcywgdG8gZXhjZWVkIGluIG9yZGVyIGZvciB0aGUKICMgY29tbWFuZCB0byBnZXQgbG9nZ2VkLCBhbmQgdGhlIG90aGVyIHBhcmFtZXRlciBpcyB0aGUgbGVuZ3RoIG9mIHRoZQpAQCAtNDU1LDYgKzk3Miw3MyBAQAogIyBZb3UgY2FuIHJlY2xhaW0gbWVtb3J5IHVzZWQgYnkgdGhlIHNsb3cgbG9nIHdpdGggU0xPV0xPRyBSRVNFVC4KIHNsb3dsb2ctbWF4LWxlbiAxMjgKIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTEFURU5DWSBNT05JVE9SICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFRoZSBSZWRpcyBsYXRlbmN5IG1vbml0b3Jpbmcgc3Vic3lzdGVtIHNhbXBsZXMgZGlmZmVyZW50IG9wZXJhdGlvbnMKKyMgYXQgcnVudGltZSBpbiBvcmRlciB0byBjb2xsZWN0IGRhdGEgcmVsYXRlZCB0byBwb3NzaWJsZSBzb3VyY2VzIG9mCisjIGxhdGVuY3kgb2YgYSBSZWRpcyBpbnN0YW5jZS4KKyMKKyMgVmlhIHRoZSBMQVRFTkNZIGNvbW1hbmQgdGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHVzZXIgdGhhdCBjYW4KKyMgcHJpbnQgZ3JhcGhzIGFuZCBvYnRhaW4gcmVwb3J0cy4KKyMKKyMgVGhlIHN5c3RlbSBvbmx5IGxvZ3Mgb3BlcmF0aW9ucyB0aGF0IHdlcmUgcGVyZm9ybWVkIGluIGEgdGltZSBlcXVhbCBvcgorIyBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgc3BlY2lmaWVkIHZpYSB0aGUKKyMgbGF0ZW5jeS1tb25pdG9yLXRocmVzaG9sZCBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4gV2hlbiBpdHMgdmFsdWUgaXMgc2V0CisjIHRvIHplcm8sIHRoZSBsYXRlbmN5IG1vbml0b3IgaXMgdHVybmVkIG9mZi4KKyMKKyMgQnkgZGVmYXVsdCBsYXRlbmN5IG1vbml0b3JpbmcgaXMgZGlzYWJsZWQgc2luY2UgaXQgaXMgbW9zdGx5IG5vdCBuZWVkZWQKKyMgaWYgeW91IGRvbid0IGhhdmUgbGF0ZW5jeSBpc3N1ZXMsIGFuZCBjb2xsZWN0aW5nIGRhdGEgaGFzIGEgcGVyZm9ybWFuY2UKKyMgaW1wYWN0LCB0aGF0IHdoaWxlIHZlcnkgc21hbGwsIGNhbiBiZSBtZWFzdXJlZCB1bmRlciBiaWcgbG9hZC4gTGF0ZW5jeQorIyBtb25pdG9yaW5nIGNhbiBlYXNpbHkgYmUgZW5hYmxlZCBhdCBydW50aW1lIHVzaW5nIHRoZSBjb21tYW5kCisjICJDT05GSUcgU0VUIGxhdGVuY3ktbW9uaXRvci10aHJlc2hvbGQgPG1pbGxpc2Vjb25kcz4iIGlmIG5lZWRlZC4KK2xhdGVuY3ktbW9uaXRvci10aHJlc2hvbGQgMAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBFVkVOVCBOT1RJRklDQVRJT04gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgUmVkaXMgY2FuIG5vdGlmeSBQdWIvU3ViIGNsaWVudHMgYWJvdXQgZXZlbnRzIGhhcHBlbmluZyBpbiB0aGUga2V5IHNwYWNlLgorIyBUaGlzIGZlYXR1cmUgaXMgZG9jdW1lbnRlZCBhdCBodHRwOi8vcmVkaXMuaW8vdG9waWNzL25vdGlmaWNhdGlvbnMKKyMKKyMgRm9yIGluc3RhbmNlIGlmIGtleXNwYWNlIGV2ZW50cyBub3RpZmljYXRpb24gaXMgZW5hYmxlZCwgYW5kIGEgY2xpZW50CisjIHBlcmZvcm1zIGEgREVMIG9wZXJhdGlvbiBvbiBrZXkgImZvbyIgc3RvcmVkIGluIHRoZSBEYXRhYmFzZSAwLCB0d28KKyMgbWVzc2FnZXMgd2lsbCBiZSBwdWJsaXNoZWQgdmlhIFB1Yi9TdWI6CisjCisjIFBVQkxJU0ggX19rZXlzcGFjZUAwX186Zm9vIGRlbAorIyBQVUJMSVNIIF9fa2V5ZXZlbnRAMF9fOmRlbCBmb28KKyMKKyMgSXQgaXMgcG9zc2libGUgdG8gc2VsZWN0IHRoZSBldmVudHMgdGhhdCBSZWRpcyB3aWxsIG5vdGlmeSBhbW9uZyBhIHNldAorIyBvZiBjbGFzc2VzLiBFdmVyeSBjbGFzcyBpcyBpZGVudGlmaWVkIGJ5IGEgc2luZ2xlIGNoYXJhY3RlcjoKKyMKKyMgIEsgICAgIEtleXNwYWNlIGV2ZW50cywgcHVibGlzaGVkIHdpdGggX19rZXlzcGFjZUA8ZGI+X18gcHJlZml4LgorIyAgRSAgICAgS2V5ZXZlbnQgZXZlbnRzLCBwdWJsaXNoZWQgd2l0aCBfX2tleWV2ZW50QDxkYj5fXyBwcmVmaXguCisjICBnICAgICBHZW5lcmljIGNvbW1hbmRzIChub24tdHlwZSBzcGVjaWZpYykgbGlrZSBERUwsIEVYUElSRSwgUkVOQU1FLCAuLi4KKyMgICQgICAgIFN0cmluZyBjb21tYW5kcworIyAgbCAgICAgTGlzdCBjb21tYW5kcworIyAgcyAgICAgU2V0IGNvbW1hbmRzCisjICBoICAgICBIYXNoIGNvbW1hbmRzCisjICB6ICAgICBTb3J0ZWQgc2V0IGNvbW1hbmRzCisjICB4ICAgICBFeHBpcmVkIGV2ZW50cyAoZXZlbnRzIGdlbmVyYXRlZCBldmVyeSB0aW1lIGEga2V5IGV4cGlyZXMpCisjICBlICAgICBFdmljdGVkIGV2ZW50cyAoZXZlbnRzIGdlbmVyYXRlZCB3aGVuIGEga2V5IGlzIGV2aWN0ZWQgZm9yIG1heG1lbW9yeSkKKyMgIEEgICAgIEFsaWFzIGZvciBnJGxzaHp4ZSwgc28gdGhhdCB0aGUgIkFLRSIgc3RyaW5nIG1lYW5zIGFsbCB0aGUgZXZlbnRzLgorIworIyAgVGhlICJub3RpZnkta2V5c3BhY2UtZXZlbnRzIiB0YWtlcyBhcyBhcmd1bWVudCBhIHN0cmluZyB0aGF0IGlzIGNvbXBvc2VkCisjICBvZiB6ZXJvIG9yIG11bHRpcGxlIGNoYXJhY3RlcnMuIFRoZSBlbXB0eSBzdHJpbmcgbWVhbnMgdGhhdCBub3RpZmljYXRpb25zCisjICBhcmUgZGlzYWJsZWQuCisjCisjICBFeGFtcGxlOiB0byBlbmFibGUgbGlzdCBhbmQgZ2VuZXJpYyBldmVudHMsIGZyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgdGhlCisjICAgICAgICAgICBldmVudCBuYW1lLCB1c2U6CisjCisjICBub3RpZnkta2V5c3BhY2UtZXZlbnRzIEVsZworIworIyAgRXhhbXBsZSAyOiB0byBnZXQgdGhlIHN0cmVhbSBvZiB0aGUgZXhwaXJlZCBrZXlzIHN1YnNjcmliaW5nIHRvIGNoYW5uZWwKKyMgICAgICAgICAgICAgbmFtZSBfX2tleWV2ZW50QDBfXzpleHBpcmVkIHVzZToKKyMKKyMgIG5vdGlmeS1rZXlzcGFjZS1ldmVudHMgRXgKKyMKKyMgIEJ5IGRlZmF1bHQgYWxsIG5vdGlmaWNhdGlvbnMgYXJlIGRpc2FibGVkIGJlY2F1c2UgbW9zdCB1c2VycyBkb24ndCBuZWVkCisjICB0aGlzIGZlYXR1cmUgYW5kIHRoZSBmZWF0dXJlIGhhcyBzb21lIG92ZXJoZWFkLiBOb3RlIHRoYXQgaWYgeW91IGRvbid0CisjICBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZiBLIG9yIEUsIG5vIGV2ZW50cyB3aWxsIGJlIGRlbGl2ZXJlZC4KK25vdGlmeS1rZXlzcGFjZS1ldmVudHMgIiIKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBBRFZBTkNFRCBDT05GSUcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEhhc2hlcyBhcmUgZW5jb2RlZCB1c2luZyBhIG1lbW9yeSBlZmZpY2llbnQgZGF0YSBzdHJ1Y3R1cmUgd2hlbiB0aGV5IGhhdmUgYQpAQCAtNDYzLDE0ICsxMDQ3LDM5IEBACiBoYXNoLW1heC16aXBsaXN0LWVudHJpZXMgNTEyCiBoYXNoLW1heC16aXBsaXN0LXZhbHVlIDY0CiAKLSMgU2ltaWxhcmx5IHRvIGhhc2hlcywgc21hbGwgbGlzdHMgYXJlIGFsc28gZW5jb2RlZCBpbiBhIHNwZWNpYWwgd2F5IGluIG9yZGVyCi0jIHRvIHNhdmUgYSBsb3Qgb2Ygc3BhY2UuIFRoZSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uIGlzIG9ubHkgdXNlZCB3aGVuCi0jIHlvdSBhcmUgdW5kZXIgdGhlIGZvbGxvd2luZyBsaW1pdHM6Ci1saXN0LW1heC16aXBsaXN0LWVudHJpZXMgNTEyCi1saXN0LW1heC16aXBsaXN0LXZhbHVlIDY0CisjIExpc3RzIGFyZSBhbHNvIGVuY29kZWQgaW4gYSBzcGVjaWFsIHdheSB0byBzYXZlIGEgbG90IG9mIHNwYWNlLgorIyBUaGUgbnVtYmVyIG9mIGVudHJpZXMgYWxsb3dlZCBwZXIgaW50ZXJuYWwgbGlzdCBub2RlIGNhbiBiZSBzcGVjaWZpZWQKKyMgYXMgYSBmaXhlZCBtYXhpbXVtIHNpemUgb3IgYSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cy4KKyMgRm9yIGEgZml4ZWQgbWF4aW11bSBzaXplLCB1c2UgLTUgdGhyb3VnaCAtMSwgbWVhbmluZzoKKyMgLTU6IG1heCBzaXplOiA2NCBLYiAgPC0tIG5vdCByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHdvcmtsb2FkcworIyAtNDogbWF4IHNpemU6IDMyIEtiICA8LS0gbm90IHJlY29tbWVuZGVkCisjIC0zOiBtYXggc2l6ZTogMTYgS2IgIDwtLSBwcm9iYWJseSBub3QgcmVjb21tZW5kZWQKKyMgLTI6IG1heCBzaXplOiA4IEtiICAgPC0tIGdvb2QKKyMgLTE6IG1heCBzaXplOiA0IEtiICAgPC0tIGdvb2QKKyMgUG9zaXRpdmUgbnVtYmVycyBtZWFuIHN0b3JlIHVwIHRvIF9leGFjdGx5XyB0aGF0IG51bWJlciBvZiBlbGVtZW50cworIyBwZXIgbGlzdCBub2RlLgorIyBUaGUgaGlnaGVzdCBwZXJmb3JtaW5nIG9wdGlvbiBpcyB1c3VhbGx5IC0yICg4IEtiIHNpemUpIG9yIC0xICg0IEtiIHNpemUpLAorIyBidXQgaWYgeW91ciB1c2UgY2FzZSBpcyB1bmlxdWUsIGFkanVzdCB0aGUgc2V0dGluZ3MgYXMgbmVjZXNzYXJ5LgorbGlzdC1tYXgtemlwbGlzdC1zaXplIC0yCisKKyMgTGlzdHMgbWF5IGFsc28gYmUgY29tcHJlc3NlZC4KKyMgQ29tcHJlc3MgZGVwdGggaXMgdGhlIG51bWJlciBvZiBxdWlja2xpc3QgemlwbGlzdCBub2RlcyBmcm9tICplYWNoKiBzaWRlIG9mCisjIHRoZSBsaXN0IHRvICpleGNsdWRlKiBmcm9tIGNvbXByZXNzaW9uLiAgVGhlIGhlYWQgYW5kIHRhaWwgb2YgdGhlIGxpc3QKKyMgYXJlIGFsd2F5cyB1bmNvbXByZXNzZWQgZm9yIGZhc3QgcHVzaC9wb3Agb3BlcmF0aW9ucy4gIFNldHRpbmdzIGFyZToKKyMgMDogZGlzYWJsZSBhbGwgbGlzdCBjb21wcmVzc2lvbgorIyAxOiBkZXB0aCAxIG1lYW5zICJkb24ndCBzdGFydCBjb21wcmVzc2luZyB1bnRpbCBhZnRlciAxIG5vZGUgaW50byB0aGUgbGlzdCwKKyMgICAgZ29pbmcgZnJvbSBlaXRoZXIgdGhlIGhlYWQgb3IgdGFpbCIKKyMgICAgU286IFtoZWFkXS0+bm9kZS0+bm9kZS0+Li4uLT5ub2RlLT5bdGFpbF0KKyMgICAgW2hlYWRdLCBbdGFpbF0gd2lsbCBhbHdheXMgYmUgdW5jb21wcmVzc2VkOyBpbm5lciBub2RlcyB3aWxsIGNvbXByZXNzLgorIyAyOiBbaGVhZF0tPltuZXh0XS0+bm9kZS0+bm9kZS0+Li4uLT5ub2RlLT5bcHJldl0tPlt0YWlsXQorIyAgICAyIGhlcmUgbWVhbnM6IGRvbid0IGNvbXByZXNzIGhlYWQgb3IgaGVhZC0+bmV4dCBvciB0YWlsLT5wcmV2IG9yIHRhaWwsCisjICAgIGJ1dCBjb21wcmVzcyBhbGwgbm9kZXMgYmV0d2VlbiB0aGVtLgorIyAzOiBbaGVhZF0tPltuZXh0XS0+W25leHRdLT5ub2RlLT5ub2RlLT4uLi4tPm5vZGUtPltwcmV2XS0+W3ByZXZdLT5bdGFpbF0KKyMgZXRjLgorbGlzdC1jb21wcmVzcy1kZXB0aCAwCiAKICMgU2V0cyBoYXZlIGEgc3BlY2lhbCBlbmNvZGluZyBpbiBqdXN0IG9uZSBjYXNlOiB3aGVuIGEgc2V0IGlzIGNvbXBvc2VkCi0jIG9mIGp1c3Qgc3RyaW5ncyB0aGF0IGhhcHBlbnMgdG8gYmUgaW50ZWdlcnMgaW4gcmFkaXggMTAgaW4gdGhlIHJhbmdlCisjIG9mIGp1c3Qgc3RyaW5ncyB0aGF0IGhhcHBlbiB0byBiZSBpbnRlZ2VycyBpbiByYWRpeCAxMCBpbiB0aGUgcmFuZ2UKICMgb2YgNjQgYml0IHNpZ25lZCBpbnRlZ2Vycy4KICMgVGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHNldHRpbmcgc2V0cyB0aGUgbGltaXQgaW4gdGhlIHNpemUgb2YgdGhlCiAjIHNldCBpbiBvcmRlciB0byB1c2UgdGhpcyBzcGVjaWFsIG1lbW9yeSBzYXZpbmcgZW5jb2RpbmcuCkBAIC00ODIsMjAgKzEwOTEsMzQgQEAKIHpzZXQtbWF4LXppcGxpc3QtZW50cmllcyAxMjgKIHpzZXQtbWF4LXppcGxpc3QtdmFsdWUgNjQKIAorIyBIeXBlckxvZ0xvZyBzcGFyc2UgcmVwcmVzZW50YXRpb24gYnl0ZXMgbGltaXQuIFRoZSBsaW1pdCBpbmNsdWRlcyB0aGUKKyMgMTYgYnl0ZXMgaGVhZGVyLiBXaGVuIGFuIEh5cGVyTG9nTG9nIHVzaW5nIHRoZSBzcGFyc2UgcmVwcmVzZW50YXRpb24gY3Jvc3NlcworIyB0aGlzIGxpbWl0LCBpdCBpcyBjb252ZXJ0ZWQgaW50byB0aGUgZGVuc2UgcmVwcmVzZW50YXRpb24uCisjCisjIEEgdmFsdWUgZ3JlYXRlciB0aGFuIDE2MDAwIGlzIHRvdGFsbHkgdXNlbGVzcywgc2luY2UgYXQgdGhhdCBwb2ludCB0aGUKKyMgZGVuc2UgcmVwcmVzZW50YXRpb24gaXMgbW9yZSBtZW1vcnkgZWZmaWNpZW50LgorIworIyBUaGUgc3VnZ2VzdGVkIHZhbHVlIGlzIH4gMzAwMCBpbiBvcmRlciB0byBoYXZlIHRoZSBiZW5lZml0cyBvZgorIyB0aGUgc3BhY2UgZWZmaWNpZW50IGVuY29kaW5nIHdpdGhvdXQgc2xvd2luZyBkb3duIHRvbyBtdWNoIFBGQURELAorIyB3aGljaCBpcyBPKE4pIHdpdGggdGhlIHNwYXJzZSBlbmNvZGluZy4gVGhlIHZhbHVlIGNhbiBiZSByYWlzZWQgdG8KKyMgfiAxMDAwMCB3aGVuIENQVSBpcyBub3QgYSBjb25jZXJuLCBidXQgc3BhY2UgaXMsIGFuZCB0aGUgZGF0YSBzZXQgaXMKKyMgY29tcG9zZWQgb2YgbWFueSBIeXBlckxvZ0xvZ3Mgd2l0aCBjYXJkaW5hbGl0eSBpbiB0aGUgMCAtIDE1MDAwIHJhbmdlLgoraGxsLXNwYXJzZS1tYXgtYnl0ZXMgMzAwMAorCiAjIEFjdGl2ZSByZWhhc2hpbmcgdXNlcyAxIG1pbGxpc2Vjb25kIGV2ZXJ5IDEwMCBtaWxsaXNlY29uZHMgb2YgQ1BVIHRpbWUgaW4KICMgb3JkZXIgdG8gaGVscCByZWhhc2hpbmcgdGhlIG1haW4gUmVkaXMgaGFzaCB0YWJsZSAodGhlIG9uZSBtYXBwaW5nIHRvcC1sZXZlbAogIyBrZXlzIHRvIHZhbHVlcykuIFRoZSBoYXNoIHRhYmxlIGltcGxlbWVudGF0aW9uIFJlZGlzIHVzZXMgKHNlZSBkaWN0LmMpCi0jIHBlcmZvcm1zIGEgbGF6eSByZWhhc2hpbmc6IHRoZSBtb3JlIG9wZXJhdGlvbiB5b3UgcnVuIGludG8gYW4gaGFzaCB0YWJsZQorIyBwZXJmb3JtcyBhIGxhenkgcmVoYXNoaW5nOiB0aGUgbW9yZSBvcGVyYXRpb24geW91IHJ1biBpbnRvIGEgaGFzaCB0YWJsZQogIyB0aGF0IGlzIHJlaGFzaGluZywgdGhlIG1vcmUgcmVoYXNoaW5nICJzdGVwcyIgYXJlIHBlcmZvcm1lZCwgc28gaWYgdGhlCiAjIHNlcnZlciBpcyBpZGxlIHRoZSByZWhhc2hpbmcgaXMgbmV2ZXIgY29tcGxldGUgYW5kIHNvbWUgbW9yZSBtZW1vcnkgaXMgdXNlZAogIyBieSB0aGUgaGFzaCB0YWJsZS4KLSMgCisjCiAjIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGlzIG1pbGxpc2Vjb25kIDEwIHRpbWVzIGV2ZXJ5IHNlY29uZCBpbiBvcmRlciB0bwotIyBhY3RpdmUgcmVoYXNoaW5nIHRoZSBtYWluIGRpY3Rpb25hcmllcywgZnJlZWluZyBtZW1vcnkgd2hlbiBwb3NzaWJsZS4KKyMgYWN0aXZlbHkgcmVoYXNoIHRoZSBtYWluIGRpY3Rpb25hcmllcywgZnJlZWluZyBtZW1vcnkgd2hlbiBwb3NzaWJsZS4KICMKICMgSWYgdW5zdXJlOgogIyB1c2UgImFjdGl2ZXJlaGFzaGluZyBubyIgaWYgeW91IGhhdmUgaGFyZCBsYXRlbmN5IHJlcXVpcmVtZW50cyBhbmQgaXQgaXMKLSMgbm90IGEgZ29vZCB0aGluZyBpbiB5b3VyIGVudmlyb25tZW50IHRoYXQgUmVkaXMgY2FuIHJlcGx5IGZvcm0gdGltZSB0byB0aW1lCisjIG5vdCBhIGdvb2QgdGhpbmcgaW4geW91ciBlbnZpcm9ubWVudCB0aGF0IFJlZGlzIGNhbiByZXBseSBmcm9tIHRpbWUgdG8gdGltZQogIyB0byBxdWVyaWVzIHdpdGggMiBtaWxsaXNlY29uZHMgZGVsYXkuCiAjCiAjIHVzZSAiYWN0aXZlcmVoYXNoaW5nIHllcyIgaWYgeW91IGRvbid0IGhhdmUgc3VjaCBoYXJkIHJlcXVpcmVtZW50cyBidXQKQEAgLTUwOSw5ICsxMTMyLDkgQEAKICMKICMgVGhlIGxpbWl0IGNhbiBiZSBzZXQgZGlmZmVyZW50bHkgZm9yIHRoZSB0aHJlZSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBjbGllbnRzOgogIwotIyBub3JtYWwgLT4gbm9ybWFsIGNsaWVudHMKLSMgc2xhdmUgIC0+IHNsYXZlIGNsaWVudHMgYW5kIE1PTklUT1IgY2xpZW50cwotIyBwdWJzdWIgLT4gY2xpZW50cyBzdWJjcmliZWQgdG8gYXQgbGVhc3Qgb25lIHB1YnN1YiBjaGFubmVsIG9yIHBhdHRlcm4KKyMgbm9ybWFsIC0+IG5vcm1hbCBjbGllbnRzIGluY2x1ZGluZyBNT05JVE9SIGNsaWVudHMKKyMgc2xhdmUgIC0+IHNsYXZlIGNsaWVudHMKKyMgcHVic3ViIC0+IGNsaWVudHMgc3Vic2NyaWJlZCB0byBhdCBsZWFzdCBvbmUgcHVic3ViIGNoYW5uZWwgb3IgcGF0dGVybgogIwogIyBUaGUgc3ludGF4IG9mIGV2ZXJ5IGNsaWVudC1vdXRwdXQtYnVmZmVyLWxpbWl0IGRpcmVjdGl2ZSBpcyB0aGUgZm9sbG93aW5nOgogIwpAQCAtNTM0LDE3ICsxMTU3LDE1OCBAQAogIyBJbnN0ZWFkIHRoZXJlIGlzIGEgZGVmYXVsdCBsaW1pdCBmb3IgcHVic3ViIGFuZCBzbGF2ZSBjbGllbnRzLCBzaW5jZQogIyBzdWJzY3JpYmVycyBhbmQgc2xhdmVzIHJlY2VpdmUgZGF0YSBpbiBhIHB1c2ggZmFzaGlvbi4KICMKLSMgQm90aCB0aGUgaGFyZCBvciB0aGUgc29mdCBsaW1pdCBjYW4gYmUgZGlzYWJsZWQganVzdCBzZXR0aW5nIGl0IHRvIHplcm8uCisjIEJvdGggdGhlIGhhcmQgb3IgdGhlIHNvZnQgbGltaXQgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlbSB0byB6ZXJvLgogY2xpZW50LW91dHB1dC1idWZmZXItbGltaXQgbm9ybWFsIDAgMCAwCiBjbGllbnQtb3V0cHV0LWJ1ZmZlci1saW1pdCBzbGF2ZSAyNTZtYiA2NG1iIDYwCiBjbGllbnQtb3V0cHV0LWJ1ZmZlci1saW1pdCBwdWJzdWIgMzJtYiA4bWIgNjAKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJTkNMVURFUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluY2x1ZGUgb25lIG9yIG1vcmUgb3RoZXIgY29uZmlnIGZpbGVzIGhlcmUuICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UKLSMgaGF2ZSBhIHN0YW5kYXJkIHRlbXBsYXRlIHRoYXQgZ29lcyB0byBhbGwgUmVkaXMgc2VydmVyIGJ1dCBhbHNvIG5lZWQKLSMgdG8gY3VzdG9taXplIGEgZmV3IHBlci1zZXJ2ZXIgc2V0dGluZ3MuICBJbmNsdWRlIGZpbGVzIGNhbiBpbmNsdWRlCi0jIG90aGVyIGZpbGVzLCBzbyB1c2UgdGhpcyB3aXNlbHkuCisjIENsaWVudCBxdWVyeSBidWZmZXJzIGFjY3VtdWxhdGUgbmV3IGNvbW1hbmRzLiBUaGV5IGFyZSBsaW1pdGVkIHRvIGEgZml4ZWQKKyMgYW1vdW50IGJ5IGRlZmF1bHQgaW4gb3JkZXIgdG8gYXZvaWQgdGhhdCBhIHByb3RvY29sIGRlc3luY2hyb25pemF0aW9uIChmb3IKKyMgaW5zdGFuY2UgZHVlIHRvIGEgYnVnIGluIHRoZSBjbGllbnQpIHdpbGwgbGVhZCB0byB1bmJvdW5kIG1lbW9yeSB1c2FnZSBpbgorIyB0aGUgcXVlcnkgYnVmZmVyLiBIb3dldmVyIHlvdSBjYW4gY29uZmlndXJlIGl0IGhlcmUgaWYgeW91IGhhdmUgdmVyeSBzcGVjaWFsCisjIG5lZWRzLCBzdWNoIHVzIGh1Z2UgbXVsdGkvZXhlYyByZXF1ZXN0cyBvciBhbGlrZS4KICMKLSMgaW5jbHVkZSAvcGF0aC90by9sb2NhbC5jb25mCi0jIGluY2x1ZGUgL3BhdGgvdG8vb3RoZXIuY29uZgorIyBjbGllbnQtcXVlcnktYnVmZmVyLWxpbWl0IDFnYgorCisjIEluIHRoZSBSZWRpcyBwcm90b2NvbCwgYnVsayByZXF1ZXN0cywgdGhhdCBhcmUsIGVsZW1lbnRzIHJlcHJlc2VudGluZyBzaW5nbGUKKyMgc3RyaW5ncywgYXJlIG5vcm1hbGx5IGxpbWl0ZWQgb3QgNTEyIG1iLiBIb3dldmVyIHlvdSBjYW4gY2hhbmdlIHRoaXMgbGltaXQKKyMgaGVyZS4KKyMKKyMgcHJvdG8tbWF4LWJ1bGstbGVuIDUxMm1iCisKKyMgUmVkaXMgY2FsbHMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdG8gcGVyZm9ybSBtYW55IGJhY2tncm91bmQgdGFza3MsIGxpa2UKKyMgY2xvc2luZyBjb25uZWN0aW9ucyBvZiBjbGllbnRzIGluIHRpbWVvdXQsIHB1cmdpbmcgZXhwaXJlZCBrZXlzIHRoYXQgYXJlCisjIG5ldmVyIHJlcXVlc3RlZCwgYW5kIHNvIGZvcnRoLgorIworIyBOb3QgYWxsIHRhc2tzIGFyZSBwZXJmb3JtZWQgd2l0aCB0aGUgc2FtZSBmcmVxdWVuY3ksIGJ1dCBSZWRpcyBjaGVja3MgZm9yCisjIHRhc2tzIHRvIHBlcmZvcm0gYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgImh6IiB2YWx1ZS4KKyMKKyMgQnkgZGVmYXVsdCAiaHoiIGlzIHNldCB0byAxMC4gUmFpc2luZyB0aGUgdmFsdWUgd2lsbCB1c2UgbW9yZSBDUFUgd2hlbgorIyBSZWRpcyBpcyBpZGxlLCBidXQgYXQgdGhlIHNhbWUgdGltZSB3aWxsIG1ha2UgUmVkaXMgbW9yZSByZXNwb25zaXZlIHdoZW4KKyMgdGhlcmUgYXJlIG1hbnkga2V5cyBleHBpcmluZyBhdCB0aGUgc2FtZSB0aW1lLCBhbmQgdGltZW91dHMgbWF5IGJlCisjIGhhbmRsZWQgd2l0aCBtb3JlIHByZWNpc2lvbi4KKyMKKyMgVGhlIHJhbmdlIGlzIGJldHdlZW4gMSBhbmQgNTAwLCBob3dldmVyIGEgdmFsdWUgb3ZlciAxMDAgaXMgdXN1YWxseSBub3QKKyMgYSBnb29kIGlkZWEuIE1vc3QgdXNlcnMgc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBvZiAxMCBhbmQgcmFpc2UgdGhpcyB1cCB0bworIyAxMDAgb25seSBpbiBlbnZpcm9ubWVudHMgd2hlcmUgdmVyeSBsb3cgbGF0ZW5jeSBpcyByZXF1aXJlZC4KK2h6IDEwCisKKyMgV2hlbiBhIGNoaWxkIHJld3JpdGVzIHRoZSBBT0YgZmlsZSwgaWYgdGhlIGZvbGxvd2luZyBvcHRpb24gaXMgZW5hYmxlZAorIyB0aGUgZmlsZSB3aWxsIGJlIGZzeW5jLWVkIGV2ZXJ5IDMyIE1CIG9mIGRhdGEgZ2VuZXJhdGVkLiBUaGlzIGlzIHVzZWZ1bAorIyBpbiBvcmRlciB0byBjb21taXQgdGhlIGZpbGUgdG8gdGhlIGRpc2sgbW9yZSBpbmNyZW1lbnRhbGx5IGFuZCBhdm9pZAorIyBiaWcgbGF0ZW5jeSBzcGlrZXMuCithb2YtcmV3cml0ZS1pbmNyZW1lbnRhbC1mc3luYyB5ZXMKKworIyBSZWRpcyBMRlUgZXZpY3Rpb24gKHNlZSBtYXhtZW1vcnkgc2V0dGluZykgY2FuIGJlIHR1bmVkLiBIb3dldmVyIGl0IGlzIGEgZ29vZAorIyBpZGVhIHRvIHN0YXJ0IHdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3MgYW5kIG9ubHkgY2hhbmdlIHRoZW0gYWZ0ZXIgaW52ZXN0aWdhdGluZworIyBob3cgdG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2VzIGFuZCBob3cgdGhlIGtleXMgTEZVIGNoYW5nZSBvdmVyIHRpbWUsIHdoaWNoCisjIGlzIHBvc3NpYmxlIHRvIGluc3BlY3QgdmlhIHRoZSBPQkpFQ1QgRlJFUSBjb21tYW5kLgorIworIyBUaGVyZSBhcmUgdHdvIHR1bmFibGUgcGFyYW1ldGVycyBpbiB0aGUgUmVkaXMgTEZVIGltcGxlbWVudGF0aW9uOiB0aGUKKyMgY291bnRlciBsb2dhcml0aG0gZmFjdG9yIGFuZCB0aGUgY291bnRlciBkZWNheSB0aW1lLiBJdCBpcyBpbXBvcnRhbnQgdG8KKyMgdW5kZXJzdGFuZCB3aGF0IHRoZSB0d28gcGFyYW1ldGVycyBtZWFuIGJlZm9yZSBjaGFuZ2luZyB0aGVtLgorIworIyBUaGUgTEZVIGNvdW50ZXIgaXMganVzdCA4IGJpdHMgcGVyIGtleSwgaXQncyBtYXhpbXVtIHZhbHVlIGlzIDI1NSwgc28gUmVkaXMKKyMgdXNlcyBhIHByb2JhYmlsaXN0aWMgaW5jcmVtZW50IHdpdGggbG9nYXJpdGhtaWMgYmVoYXZpb3IuIEdpdmVuIHRoZSB2YWx1ZQorIyBvZiB0aGUgb2xkIGNvdW50ZXIsIHdoZW4gYSBrZXkgaXMgYWNjZXNzZWQsIHRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGluCisjIHRoaXMgd2F5OgorIworIyAxLiBBIHJhbmRvbSBudW1iZXIgUiBiZXR3ZWVuIDAgYW5kIDEgaXMgZXh0cmFjdGVkLgorIyAyLiBBIHByb2JhYmlsaXR5IFAgaXMgY2FsY3VsYXRlZCBhcyAxLyhvbGRfdmFsdWUqbGZ1X2xvZ19mYWN0b3IrMSkuCisjIDMuIFRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIG9ubHkgaWYgUiA8IFAuCisjCisjIFRoZSBkZWZhdWx0IGxmdS1sb2ctZmFjdG9yIGlzIDEwLiBUaGlzIGlzIGEgdGFibGUgb2YgaG93IHRoZSBmcmVxdWVuY3kKKyMgY291bnRlciBjaGFuZ2VzIHdpdGggYSBkaWZmZXJlbnQgbnVtYmVyIG9mIGFjY2Vzc2VzIHdpdGggZGlmZmVyZW50CisjIGxvZ2FyaXRobWljIGZhY3RvcnM6CisjCisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworIyB8IGZhY3RvciB8IDEwMCBoaXRzICAgfCAxMDAwIGhpdHMgIHwgMTAwSyBoaXRzICB8IDFNIGhpdHMgICAgfCAxME0gaGl0cyAgIHwKKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisjIHwgMCAgICAgIHwgMTA0ICAgICAgICB8IDI1NSAgICAgICAgfCAyNTUgICAgICAgIHwgMjU1ICAgICAgICB8IDI1NSAgICAgICAgfAorIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKKyMgfCAxICAgICAgfCAxOCAgICAgICAgIHwgNDkgICAgICAgICB8IDI1NSAgICAgICAgfCAyNTUgICAgICAgIHwgMjU1ICAgICAgICB8CisjICstLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworIyB8IDEwICAgICB8IDEwICAgICAgICAgfCAxOCAgICAgICAgIHwgMTQyICAgICAgICB8IDI1NSAgICAgICAgfCAyNTUgICAgICAgIHwKKyMgKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCisjIHwgMTAwICAgIHwgOCAgICAgICAgICB8IDExICAgICAgICAgfCA0OSAgICAgICAgIHwgMTQzICAgICAgICB8IDI1NSAgICAgICAgfAorIyArLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKKyMKKyMgTk9URTogVGhlIGFib3ZlIHRhYmxlIHdhcyBvYnRhaW5lZCBieSBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisjCisjICAgcmVkaXMtYmVuY2htYXJrIC1uIDEwMDAwMDAgaW5jciBmb28KKyMgICByZWRpcy1jbGkgb2JqZWN0IGZyZXEgZm9vCisjCisjIE5PVEUgMjogVGhlIGNvdW50ZXIgaW5pdGlhbCB2YWx1ZSBpcyA1IGluIG9yZGVyIHRvIGdpdmUgbmV3IG9iamVjdHMgYSBjaGFuY2UKKyMgdG8gYWNjdW11bGF0ZSBoaXRzLgorIworIyBUaGUgY291bnRlciBkZWNheSB0aW1lIGlzIHRoZSB0aW1lLCBpbiBtaW51dGVzLCB0aGF0IG11c3QgZWxhcHNlIGluIG9yZGVyCisjIGZvciB0aGUga2V5IGNvdW50ZXIgdG8gYmUgZGl2aWRlZCBieSB0d28gKG9yIGRlY3JlbWVudGVkIGlmIGl0IGhhcyBhIHZhbHVlCisjIGxlc3MgPD0gMTApLgorIworIyBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGxmdS1kZWNheS10aW1lIGlzIDEuIEEgU3BlY2lhbCB2YWx1ZSBvZiAwIG1lYW5zIHRvCisjIGRlY2F5IHRoZSBjb3VudGVyIGV2ZXJ5IHRpbWUgaXQgaGFwcGVucyB0byBiZSBzY2FubmVkLgorIworIyBsZnUtbG9nLWZhY3RvciAxMAorIyBsZnUtZGVjYXktdGltZSAxCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBBQ1RJVkUgREVGUkFHTUVOVEFUSU9OICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIFdBUk5JTkcgVEhJUyBGRUFUVVJFIElTIEVYUEVSSU1FTlRBTC4gSG93ZXZlciBpdCB3YXMgc3RyZXNzIHRlc3RlZAorIyBldmVuIGluIHByb2R1Y3Rpb24gYW5kIG1hbnVhbGx5IHRlc3RlZCBieSBtdWx0aXBsZSBlbmdpbmVlcnMgZm9yIHNvbWUKKyMgdGltZS4KKyMKKyMgV2hhdCBpcyBhY3RpdmUgZGVmcmFnbWVudGF0aW9uPworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjIEFjdGl2ZSAob25saW5lKSBkZWZyYWdtZW50YXRpb24gYWxsb3dzIGEgUmVkaXMgc2VydmVyIHRvIGNvbXBhY3QgdGhlCisjIHNwYWNlcyBsZWZ0IGJldHdlZW4gc21hbGwgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgb2YgZGF0YSBpbiBtZW1vcnksCisjIHRodXMgYWxsb3dpbmcgdG8gcmVjbGFpbSBiYWNrIG1lbW9yeS4KKyMKKyMgRnJhZ21lbnRhdGlvbiBpcyBhIG5hdHVyYWwgcHJvY2VzcyB0aGF0IGhhcHBlbnMgd2l0aCBldmVyeSBhbGxvY2F0b3IgKGJ1dAorIyBsZXNzIHNvIHdpdGggSmVtYWxsb2MsIGZvcnR1bmF0ZWx5KSBhbmQgY2VydGFpbiB3b3JrbG9hZHMuIE5vcm1hbGx5IGEgc2VydmVyCisjIHJlc3RhcnQgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGxvd2VyIHRoZSBmcmFnbWVudGF0aW9uLCBvciBhdCBsZWFzdCB0byBmbHVzaAorIyBhd2F5IGFsbCB0aGUgZGF0YSBhbmQgY3JlYXRlIGl0IGFnYWluLiBIb3dldmVyIHRoYW5rcyB0byB0aGlzIGZlYXR1cmUKKyMgaW1wbGVtZW50ZWQgYnkgT3JhbiBBZ3JhIGZvciBSZWRpcyA0LjAgdGhpcyBwcm9jZXNzIGNhbiBoYXBwZW4gYXQgcnVudGltZQorIyBpbiBhbiAiaG90IiB3YXksIHdoaWxlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZy4KKyMKKyMgQmFzaWNhbGx5IHdoZW4gdGhlIGZyYWdtZW50YXRpb24gaXMgb3ZlciBhIGNlcnRhaW4gbGV2ZWwgKHNlZSB0aGUKKyMgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlbG93KSBSZWRpcyB3aWxsIHN0YXJ0IHRvIGNyZWF0ZSBuZXcgY29waWVzIG9mIHRoZQorIyB2YWx1ZXMgaW4gY29udGlndW91cyBtZW1vcnkgcmVnaW9ucyBieSBleHBsb2l0aW5nIGNlcnRhaW4gc3BlY2lmaWMgSmVtYWxsb2MKKyMgZmVhdHVyZXMgKGluIG9yZGVyIHRvIHVuZGVyc3RhbmQgaWYgYW4gYWxsb2NhdGlvbiBpcyBjYXVzaW5nIGZyYWdtZW50YXRpb24KKyMgYW5kIHRvIGFsbG9jYXRlIGl0IGluIGEgYmV0dGVyIHBsYWNlKSwgYW5kIGF0IHRoZSBzYW1lIHRpbWUsIHdpbGwgcmVsZWFzZSB0aGUKKyMgb2xkIGNvcGllcyBvZiB0aGUgZGF0YS4gVGhpcyBwcm9jZXNzLCByZXBlYXRlZCBpbmNyZW1lbnRhbGx5IGZvciBhbGwgdGhlIGtleXMKKyMgd2lsbCBjYXVzZSB0aGUgZnJhZ21lbnRhdGlvbiB0byBkcm9wIGJhY2sgdG8gbm9ybWFsIHZhbHVlcy4KKyMKKyMgSW1wb3J0YW50IHRoaW5ncyB0byB1bmRlcnN0YW5kOgorIworIyAxLiBUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYW5kIG9ubHkgd29ya3MgaWYgeW91IGNvbXBpbGVkIFJlZGlzCisjICAgIHRvIHVzZSB0aGUgY29weSBvZiBKZW1hbGxvYyB3ZSBzaGlwIHdpdGggdGhlIHNvdXJjZSBjb2RlIG9mIFJlZGlzLgorIyAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IHdpdGggTGludXggYnVpbGRzLgorIworIyAyLiBZb3UgbmV2ZXIgbmVlZCB0byBlbmFibGUgdGhpcyBmZWF0dXJlIGlmIHlvdSBkb24ndCBoYXZlIGZyYWdtZW50YXRpb24KKyMgICAgaXNzdWVzLgorIworIyAzLiBPbmNlIHlvdSBleHBlcmllbmNlIGZyYWdtZW50YXRpb24sIHlvdSBjYW4gZW5hYmxlIHRoaXMgZmVhdHVyZSB3aGVuCisjICAgIG5lZWRlZCB3aXRoIHRoZSBjb21tYW5kICJDT05GSUcgU0VUIGFjdGl2ZWRlZnJhZyB5ZXMiLgorIworIyBUaGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhYmxlIHRvIGZpbmUgdHVuZSB0aGUgYmVoYXZpb3Igb2YgdGhlCisjIGRlZnJhZ21lbnRhdGlvbiBwcm9jZXNzLiBJZiB5b3UgYXJlIG5vdCBzdXJlIGFib3V0IHdoYXQgdGhleSBtZWFuIGl0IGlzCisjIGEgZ29vZCBpZGVhIHRvIGxlYXZlIHRoZSBkZWZhdWx0cyB1bnRvdWNoZWQuCisKKyMgRW5hYmxlZCBhY3RpdmUgZGVmcmFnbWVudGF0aW9uCisjIGFjdGl2ZWRlZnJhZyB5ZXMKKworIyBNaW5pbXVtIGFtb3VudCBvZiBmcmFnbWVudGF0aW9uIHdhc3RlIHRvIHN0YXJ0IGFjdGl2ZSBkZWZyYWcKKyMgYWN0aXZlLWRlZnJhZy1pZ25vcmUtYnl0ZXMgMTAwbWIKKworIyBNaW5pbXVtIHBlcmNlbnRhZ2Ugb2YgZnJhZ21lbnRhdGlvbiB0byBzdGFydCBhY3RpdmUgZGVmcmFnCisjIGFjdGl2ZS1kZWZyYWctdGhyZXNob2xkLWxvd2VyIDEwCisKKyMgTWF4aW11bSBwZXJjZW50YWdlIG9mIGZyYWdtZW50YXRpb24gYXQgd2hpY2ggd2UgdXNlIG1heGltdW0gZWZmb3J0CisjIGFjdGl2ZS1kZWZyYWctdGhyZXNob2xkLXVwcGVyIDEwMAorCisjIE1pbmltYWwgZWZmb3J0IGZvciBkZWZyYWcgaW4gQ1BVIHBlcmNlbnRhZ2UKKyMgYWN0aXZlLWRlZnJhZy1jeWNsZS1taW4gMjUKKworIyBNYXhpbWFsIGVmZm9ydCBmb3IgZGVmcmFnIGluIENQVSBwZXJjZW50YWdlCisjIGFjdGl2ZS1kZWZyYWctY3ljbGUtbWF4IDc1CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvcmVtb3ZlLWF0b21pY3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvcmVtb3ZlLWF0b21pY3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiMmYyYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy9yZW1vdmUtYXRvbWljcy5wYXRjaApAQCAtMCwwICsxLDcyIEBACitGcm9tIGM0ODY0NTVlMDY5MWY5OTE1MDE4YjlkOGIxMzMyMDBhNmM2MWEzYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBUaHUsIDI0IE1heSAyMDE4IDA5OjU4OjQyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBhdG9taWNzCisKK0Jhc2VkIG9uIHRoaXMgcGF0Y2g6CitodHRwczovL2dpdGh1Yi5jb20vcGF0cmlreDMvbGVkZS1yZWRpcy9ibG9iL21hc3Rlci9yZWRpcy9wYXRjaGVzLzAxMC1yZWRpcy5wYXRjaAorCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CistLS0KKyBkZXBzL2plbWFsbG9jL3NyYy9wYWdlcy5jIHwgMjIgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9hdG9taWN2YXIuaCAgICAgICAgICAgfCAgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGVwcy9qZW1hbGxvYy9zcmMvcGFnZXMuYyBiL2RlcHMvamVtYWxsb2Mvc3JjL3BhZ2VzLmMKK2luZGV4IDgzYTE2N2Y2Li44ZTgyYzc4ZCAxMDA2NDQKKy0tLSBhL2RlcHMvamVtYWxsb2Mvc3JjL3BhZ2VzLmMKKysrKyBiL2RlcHMvamVtYWxsb2Mvc3JjL3BhZ2VzLmMKK0BAIC0xNDcsMjcgKzE0Nyw3IEBAIHBhZ2VzX3B1cmdlKHZvaWQgKmFkZHIsIHNpemVfdCBzaXplKQorIHsKKyAJYm9vbCB1bnplcm9lZDsKKyAKKy0jaWZkZWYgX1dJTjMyCistCVZpcnR1YWxBbGxvYyhhZGRyLCBzaXplLCBNRU1fUkVTRVQsIFBBR0VfUkVBRFdSSVRFKTsKKy0JdW56ZXJvZWQgPSB0cnVlOworLSNlbGlmIGRlZmluZWQoSkVNQUxMT0NfSEFWRV9NQURWSVNFKQorLSMgIGlmZGVmIEpFTUFMTE9DX1BVUkdFX01BRFZJU0VfRE9OVE5FRUQKKy0jICAgIGRlZmluZSBKRU1BTExPQ19NQURWX1BVUkdFIE1BRFZfRE9OVE5FRUQKKy0jICAgIGRlZmluZSBKRU1BTExPQ19NQURWX1pFUk9TIHRydWUKKy0jICBlbGlmIGRlZmluZWQoSkVNQUxMT0NfUFVSR0VfTUFEVklTRV9GUkVFKQorLSMgICAgZGVmaW5lIEpFTUFMTE9DX01BRFZfUFVSR0UgTUFEVl9GUkVFCistIyAgICBkZWZpbmUgSkVNQUxMT0NfTUFEVl9aRVJPUyBmYWxzZQorLSMgIGVsc2UKKy0jICAgIGVycm9yICJObyBtYWR2aXNlKDIpIGZsYWcgZGVmaW5lZCBmb3IgcHVyZ2luZyB1bnVzZWQgZGlydHkgcGFnZXMuIgorLSMgIGVuZGlmCistCWludCBlcnIgPSBtYWR2aXNlKGFkZHIsIHNpemUsIEpFTUFMTE9DX01BRFZfUFVSR0UpOworLQl1bnplcm9lZCA9ICghSkVNQUxMT0NfTUFEVl9aRVJPUyB8fCBlcnIgIT0gMCk7CistIyAgdW5kZWYgSkVNQUxMT0NfTUFEVl9QVVJHRQorLSMgIHVuZGVmIEpFTUFMTE9DX01BRFZfWkVST1MKKy0jZWxzZQorLQkvKiBMYXN0IHJlc29ydCBuby1vcC4gKi8KKy0JdW56ZXJvZWQgPSB0cnVlOworLSNlbmRpZgorKwl1bnplcm9lZCA9IGZhbHNlOworIAlyZXR1cm4gKHVuemVyb2VkKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL2F0b21pY3Zhci5oIGIvc3JjL2F0b21pY3Zhci5oCitpbmRleCA4NGE1YmJjNS4uZjliNTYzYzIgMTAwNjQ0CistLS0gYS9zcmMvYXRvbWljdmFyLmgKKysrKyBiL3NyYy9hdG9taWN2YXIuaAorQEAgLTY4LDcgKzY4LDcgQEAKKyAgKiBpcyByZXBvcnRlZC4gKi8KKyAvLyAjZGVmaW5lIF9fQVRPTUlDX1ZBUl9GT1JDRV9TWU5DX01BQ1JPUworIAorLSNpZiAhZGVmaW5lZChfX0FUT01JQ19WQVJfRk9SQ0VfU1lOQ19NQUNST1MpICYmIGRlZmluZWQoX19BVE9NSUNfUkVMQVhFRCkgJiYgIWRlZmluZWQoX19zdW4pICYmICghZGVmaW5lZChfX2NsYW5nX18pIHx8ICFkZWZpbmVkKF9fQVBQTEVfXykgfHwgX19hcHBsZV9idWlsZF92ZXJzaW9uX18gPiA0MjEwMDU3KQorKyNpZiBkZWZpbmVkKENPTkZJR19FREFDX0FUT01JQ19TQ1JVQikgJiYgICFkZWZpbmVkKF9fQVRPTUlDX1ZBUl9GT1JDRV9TWU5DX01BQ1JPUykgJiYgZGVmaW5lZChfX0FUT01JQ19SRUxBWEVEKSAmJiAhZGVmaW5lZChfX3N1bikgJiYgKCFkZWZpbmVkKF9fY2xhbmdfXykgfHwgIWRlZmluZWQoX19BUFBMRV9fKSB8fCBfX2FwcGxlX2J1aWxkX3ZlcnNpb25fXyA+IDQyMTAwNTcpCisgLyogSW1wbGVtZW50YXRpb24gdXNpbmcgX19hdG9taWMgbWFjcm9zLiAqLworIAorICNkZWZpbmUgYXRvbWljSW5jcih2YXIsY291bnQpIF9fYXRvbWljX2FkZF9mZXRjaCgmdmFyLChjb3VudCksX19BVE9NSUNfUkVMQVhFRCkKK0BAIC04Miw3ICs4Miw3IEBACisgI2RlZmluZSBhdG9taWNTZXQodmFyLHZhbHVlKSBfX2F0b21pY19zdG9yZV9uKCZ2YXIsdmFsdWUsX19BVE9NSUNfUkVMQVhFRCkKKyAjZGVmaW5lIFJFRElTX0FUT01JQ19BUEkgImF0b21pYy1idWlsdGluIgorIAorLSNlbGlmIGRlZmluZWQoSEFWRV9BVE9NSUMpCisrI2VsaWYgZGVmaW5lZChDT05GSUdfRURBQ19BVE9NSUNfU0NSVUIpICYmIGRlZmluZWQoSEFWRV9BVE9NSUMpCisgLyogSW1wbGVtZW50YXRpb24gdXNpbmcgX19zeW5jIG1hY3Jvcy4gKi8KKyAKKyAjZGVmaW5lIGF0b21pY0luY3IodmFyLGNvdW50KSBfX3N5bmNfYWRkX2FuZF9mZXRjaCgmdmFyLChjb3VudCkpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfMy4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOTViMzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzXzMuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJSZWRpcyBrZXktdmFsdWUgc3RvcmUiCi1ERVNDUklQVElPTiA9ICJSZWRpcyBpcyBhbiBvcGVuIHNvdXJjZSwgYWR2YW5jZWQga2V5LXZhbHVlIHN0b3JlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9yZWRpcy5pbyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2MwMWI0OWZlZDRkZjFhNzk4NDM2ODhmYTNmN2I5ZDYiCi1ERVBFTkRTID0gIiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQucmVkaXMuaW8vcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2hpcmVkaXMtdXNlLWRlZmF1bHQtQ0MtaWYtaXQtaXMtc2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2x1YS11cGRhdGUtTWFrZWZpbGUtdG8tdXNlLWVudmlyb25tZW50LWJ1aWxkLXNldHRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2UtdXNlLWxpYmMtbWFsbG9jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlZGlzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdC1yZWRpcy1zZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vcmVkaXMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9oaXJlZGlzLXVwZGF0ZS1NYWtlZmlsZS10by1hZGQtc3ltYm9scy10by1zdGF0aWNsaWIucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODdiZTg4Njc0NDdmNjI1MjRiNTg0ODEzZTVhN2JkMTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTNlNDIyYzBkNTg0NjIzNjAxZjg5Yjk1NjA0NWJlMTU4ODg5ZWJlNTk0NDc4YTJjMjRlMWJmMjE4NDk1NjMzZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSAgPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAvdmFyL2xpYi9yZWRpcyAtZyByZWRpcyAtLXNoZWxsIC9iaW4vZmFsc2UgcmVkaXMiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSByZWRpcyIKLQotCi1SRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBQUkVGSVg9JHtEfS8ke3ByZWZpeH0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9yZWRpcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LXJlZGlzLXNlcnZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3JlZGlzLXNlcnZlcgotICAgIGluc3RhbGwgLWQgJHtEfS92YXIvbGliL3JlZGlzLwotICAgIGNob3duIHJlZGlzLnJlZGlzICR7RH0vdmFyL2xpYi9yZWRpcy8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yZWRpcy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcmVkaXMuc2VydmljZQotCi0gICAgaWYgWyAiJHtSRURJU19PTl9TWVNURU1EfSIgPSB0cnVlIF07IHRoZW4KLSAgICAgICAgc2VkIC1pICdzIWRhZW1vbml6ZSB5ZXMhIyBkYWVtb25pemUgeWVzIScgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYKLSAgICBmaQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yZWRpcy9yZWRpcy5jb25mIgotCi1JTklUU0NSSVBUX05BTUUgPSAicmVkaXMtc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgODciCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyZWRpcy5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzXzQuMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzXzQuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDM2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNC4wLjguYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJSZWRpcyBrZXktdmFsdWUgc3RvcmUiCitERVNDUklQVElPTiA9ICJSZWRpcyBpcyBhbiBvcGVuIHNvdXJjZSwgYWR2YW5jZWQga2V5LXZhbHVlIHN0b3JlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9yZWRpcy5pbyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2MwMWI0OWZlZDRkZjFhNzk4NDM2ODhmYTNmN2I5ZDYiCitERVBFTkRTID0gIiIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQucmVkaXMuaW8vcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2hpcmVkaXMtdXNlLWRlZmF1bHQtQ0MtaWYtaXQtaXMtc2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2x1YS11cGRhdGUtTWFrZWZpbGUtdG8tdXNlLWVudmlyb25tZW50LWJ1aWxkLXNldHRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2UtdXNlLWxpYmMtbWFsbG9jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlZGlzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5pdC1yZWRpcy1zZXJ2ZXIgXAorICAgICAgICAgICBmaWxlOi8vcmVkaXMuc2VydmljZSBcCisiCisKK1NSQ19VUklfYXBwZW5kX21pcHMgPSAiIGZpbGU6Ly9yZW1vdmUtYXRvbWljcy5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2FybSA9ICIgZmlsZTovL3JlbW92ZS1hdG9taWNzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzc1YjExZTQxNzdlMTUzZTRkYzFkOGRkM2E2MTc0ZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmYwYzM4YjhjMTU2MzE5MjQ5ZmVjNjFlNTAxOGNmNWI1ZmU2M2E2NWI2MTY5MGJlYzc5OGY0Yzk5OGMyMzJhZCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorVVNFUkFERF9QQVJBTV8ke1BOfSAgPSAiLS1zeXN0ZW0gLS1ob21lLWRpciAvdmFyL2xpYi9yZWRpcyAtZyByZWRpcyAtLXNoZWxsIC9iaW4vZmFsc2UgcmVkaXMiCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSByZWRpcyIKKworCitSRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgorCitkb19pbnN0YWxsKCkgeworICAgIGV4cG9ydCBQUkVGSVg9JHtEfS8ke3ByZWZpeH0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9yZWRpcworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0LXJlZGlzLXNlcnZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3JlZGlzLXNlcnZlcgorICAgIGluc3RhbGwgLWQgJHtEfS92YXIvbGliL3JlZGlzLworICAgIGNob3duIHJlZGlzLnJlZGlzICR7RH0vdmFyL2xpYi9yZWRpcy8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yZWRpcy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgc2VkIC1pICdzIS91c3Ivc2Jpbi8hJHtzYmluZGlyfS8hZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcmVkaXMuc2VydmljZQorCisgICAgaWYgWyAiJHtSRURJU19PTl9TWVNURU1EfSIgPSB0cnVlIF07IHRoZW4KKyAgICAgICAgc2VkIC1pICdzIWRhZW1vbml6ZSB5ZXMhIyBkYWVtb25pemUgeWVzIScgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYKKyAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yZWRpcy9yZWRpcy5jb25mIgorCitJTklUU0NSSVBUX05BTUUgPSAicmVkaXMtc2VydmVyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgODciCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyZWRpcy5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5N2JjYWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggcGVyZm9ybWFuY2UgZGF0YSBsb2dnaW5nIGFuZCBncmFwaGluZyBzeXN0ZW0gZm9yIHRpbWUgc2VyaWVzIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vb3NzLm9ldGlrZXIuY2gvcnJkdG9vbC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTMzNDkxMTFlZDA1MzM0NzE0OTRiZWVjOTk3MTViYzlkIgotCi1ERVBFTkRTID0gImxpYnBuZyB6bGliIGNhaXJvIHBhbmdvIGdsaWItMi4wIGxpYnhtbDIgZ3JvZmYtbmF0aXZlIgotCi1TUkNSRVYgPSAiNjFmMTE2NzQ0MjYyYzRjMTg5MjJkY2Y4MDZlNDk2NzE1ZjE5OTY2OSIKLVBWID0gIjEuNi4wIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29ldGlrZXIvcnJkdG9vbC0xLnguZ2l0O2JyYW5jaD0xLjY7cHJvdG9jb2w9aHR0cDsgXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNwYW4gYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHB5dGhvbm5hdGl2ZSBweXRob24tZGlyIHN5c3RlbWQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAicnJkY2FjaGVkIgotU1lTVEVNRF9TRVJWSUNFX3JyZGNhY2hlZCA9ICJycmRjYWNoZWQuc29ja2V0IHJyZGNhY2hlZC5zZXJ2aWNlIgotCi1FWFRSQV9BVVRPUkVDT05GID0gIi1JIG00IC0tZXhjbHVkZT1hdXRvcG9pbnQiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24gcGVybCAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uPXllcyBcCi1hbV9jdl9weXRob25fcHl0aG9uZGlyPSR7U1RBR0lOR19MSUJESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzIFwKLWFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JHtTVEFHSU5HX0xJQkRJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMsXAotLS1kaXNhYmxlLXB5dGhvbixweXRob24sIgotCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gXAotIi0tZW5hYmxlLXBlcmw9eWVzIC0td2l0aC1wZXJsLW9wdGlvbnM9J0lOU1RBTExESVJTPSJ2ZW5kb3IiJyBcCi1hY19jdl9wYXRoX1BFUkxfQ0M9JyR7Q0N9JywgIFwKLS0tZGlzYWJsZS1wZXJsLHBlcmwsIgotCi1QQUNLQUdFQ09ORklHW2RiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1kaXNhYmxlLWxpYndyYXAgXAotICAgIC0tcHJvZ3JhbS1wcmVmaXg9JycgXAotICAgIHJkX2N2X2llZWVfd29ya3M9eWVzIFwKLSAgICAtLWRpc2FibGUtcnVieSBcCi0gICAgLS1kaXNhYmxlLWx1YSBcCi0gICAgLS1kaXNhYmxlLXRjbCBcCi0gICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAtLWVuYWJsZS1ubHM9JHtVU0VfTkxTfSBcCi0iCi0KLWV4cG9ydCBTVEFHSU5HX0xJQkRJUgotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi0KLSMgZW11bGF0ZSBjcGFuX2RvX2NvbmZpZ3VyZQotRVhUUkFfT0VNQUtFID0gJyBQRVJMNUxJQj0iJHtQRVJMX0FSQ0hMSUJ9IiAnCi0jIEF2b2lkIGRvX2NvbmZpZ3VyZSBlcnJvciBvbiBzb21lIGhvc3RzCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICB1bnNldCBQRVJMSE9TVExJQgotICAgICNmaXggdGhlIHBrZ2xpYiBwcm9ibGVtIHdpdGggbmV3ZXIgYXV0b21ha2UKLSAgICAjcGVybAotICAgIHNlZCAtaSAtZSAic3wtV2wsLS1ycGF0aCAtV2wsXCRycHx8ZyIgXAotICAgICAgICAke1N9L2JpbmRpbmdzL3Blcmwtc2hhcmVkL01ha2VmaWxlLlBMCi0KLSAgICAjcHl0aG9uCi0gICAgc2VkIC1pIC1lICcvUFlUSE9OX0lOQ0xVREVTPSItSSR7L2MgXAotICAgIFBZVEhPTl9JTkNMVURFUz0iLUk9L3Vzci9pbmNsdWRlL3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSInIFwKLSAgICAgICAgJHtTfS9tNC9hY2luY2x1ZGUubTQKLSAgICAjcmVtb3ZlIHRoZSB1c2VsZXNzIFJQQVRIIGZyb20gdGhlIHJyZHRvb2wuc28KLSAgICBzZWQgLWkgLWUgJ3N8TERfUlVOX1BBVEg9JChsaWJkaXIpfHxnJyAke1N9L2JpbmRpbmdzL01ha2VmaWxlLmFtCi0KLSAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCi0KLSAgICAjbW9kaWZ5IHB5dGhvbiBzaXRlcGtnCi0gICAgI3JlbW92ZSB0aGUgZGVwZW5kZW5jeSBvZiBwZXJsLXNoYXJlZDpNYWtlZmlsZQotICAgICNvciBwZXJsLXNoYXJlZC9NYWtlZmlsZSB3aWxsIGJlIHJlZ2VuZXJhdGVkCi0gICAgI2lmIGFueSBjb2RlIHRvdWNoIGJpbmRpbmdzL01ha2VmaWxlIGFmdGVyIGJlbG93IHBlcmwgYmluZGluZ3MgY29kZQotICAgIHNlZCAtaSAtZSAiczpweXRob24vc2V0dXAucHkgaW5zdGFsbDpweXRob24vc2V0dXAucHkgaW5zdGFsbCBcCi0gICAgICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn06IiBcCi0gICAgICAgIC1lICJzOnBlcmwtc2hhcmVkL01ha2VmaWxlLlBMIE1ha2VmaWxlOnBlcmwtc2hhcmVkL01ha2VmaWxlLlBMOiIgXAotICAgICAgICAke0J9L2JpbmRpbmdzL01ha2VmaWxlCi0KLSAgICAjcmVkbyB0aGUgcGVybCBiaW5kaW5ncwotICAgICgKLSAgICBjZCAke1N9L2JpbmRpbmdzL3Blcmwtc2hhcmVkOwotICAgIHBlcmwgTWFrZWZpbGUuUEwgSU5TVEFMTERJUlM9InZlbmRvciIgSU5TVEFMTFBSSVZMSUI9ImFiYyI7Ci0KLSAgICBjZCAuLi8uLi9iaW5kaW5ncy9wZXJsLXBpcGVkOwotICAgIHBlcmwgTWFrZWZpbGUuUEwgSU5TVEFMTERJUlM9InZlbmRvciI7Ci0gICAgKQotCi0gICAgI2NoYW5nZSB0aGUgaW50ZXJwcmV0ZXIgaW4gZmlsZQotICAgIHNlZCAtaSAtZSAic3xeUEVSTCA9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8uKnxQRVJMID0gL3Vzci9iaW4vcGVybHxnIiBcCi0gICAgICAgICR7Qn0vZXhhbXBsZXMvTWFrZWZpbGUKLSAgICBzZWQgLWkgLWUgInN8JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3Blcmx8L3Vzci9iaW4vcGVybHxnIiBcCi0gICAgICAgICR7Qn0vZXhhbXBsZXMvKi5wbAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcGVybCAke1BOfS1weXRob24iCi1QQUNLQUdFUyA9KyAicnJkY2FjaGVkIgotCi1ERVNDUklQVElPTl9ycmRjYWNoZWQgPSBcCi0iVGhlIHJyZGNhY2hlZCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBkYXRhIGNhY2hpbmcgZGFlbW9uIGZvciBSUkR0b29sLiIKLQotRklMRVNfcnJkY2FjaGVkID0gIiR7YmluZGlyfS9ycmRjYWNoZWQgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcnJkY2FjaGVkLnNlcnZpY2UgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcnJkY2FjaGVkLnNvY2tldCIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L3JyZHRvb2wvZXhhbXBsZXMiCi0KLURFU0NSSVBUSU9OXyR7UE59LXBlcmwgPSBcCi0iVGhlICR7UE59LXBlcmwgcGFja2FnZSBpbmNsdWRlcyBSUkR0b29sIGJpbmRpbmdzIGZvciBwZXJsLiIKLUZJTEVTXyR7UE59LXBlcmwgPSAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi8qLnBtIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vUlJEcy9SUkRzLioiCi1SREVQRU5EU18ke1BOfS1wZXJsID0gInBlcmwgcGVybC1tb2R1bGUtbGliIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLXRpbWUtaGlyZXMgXAotICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgcGVybC1tb2R1bGUtaXBjLW9wZW4yIHBlcmwtbW9kdWxlLWlvLXNvY2tldCIKLQotREVTQ1JJUFRJT05fJHtQTn0tcHl0aG9uID0gXAotIlRoZSAke1BOfS1weXRob24gcGFja2FnZSBpbmNsdWRlcyBSUkR0b29sIGJpbmRpbmdzIGZvciBweXRob24uIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vUlJEcy8uZGVidWcgXAotICAgICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjk5NTc0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjcuMC5iYgpAQCAtMCwwICsxLDEyOCBAQAorU1VNTUFSWSA9ICJIaWdoIHBlcmZvcm1hbmNlIGRhdGEgbG9nZ2luZyBhbmQgZ3JhcGhpbmcgc3lzdGVtIGZvciB0aW1lIHNlcmllcyBkYXRhIgorSE9NRVBBR0UgPSAiaHR0cDovL29zcy5vZXRpa2VyLmNoL3JyZHRvb2wvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zMzQ5MTExZWQwNTMzNDcxNDk0YmVlYzk5NzE1YmM5ZCIKKworREVQRU5EUyA9ICJsaWJwbmcgemxpYiBjYWlybyBwYW5nbyBnbGliLTIuMCBsaWJ4bWwyIGdyb2ZmLW5hdGl2ZSBweXRob24tc2V0dXB0b29scy1uYXRpdmUiCisKK1NSQ1JFViA9ICJiZmM4MmQ1MjQyODU1NjI4YjgyNjAxODQ3OWRmMDBlMGVjNGU4MzYwIgorUFYgPSAiMS43LjAiCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vb2V0aWtlci9ycmR0b29sLTEueC5naXQ7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1odHRwOyBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY3BhbiBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIgc3lzdGVtZAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICJycmRjYWNoZWQiCitTWVNURU1EX1NFUlZJQ0VfcnJkY2FjaGVkID0gInJyZGNhY2hlZC5zb2NrZXQgcnJkY2FjaGVkLnNlcnZpY2UiCisKK0VYVFJBX0FVVE9SRUNPTkYgPSAiLUkgbTQgLS1leGNsdWRlPWF1dG9wb2ludCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBwZXJsICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob249eWVzIFwKK2FtX2N2X3B5dGhvbl9weXRob25kaXI9JHtTVEFHSU5HX0xJQkRJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMgXAorYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0ke1NUQUdJTkdfTElCRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcyxcCistLWRpc2FibGUtcHl0aG9uLHB5dGhvbiwiCisKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSBcCisiLS1lbmFibGUtcGVybD15ZXMgLS13aXRoLXBlcmwtb3B0aW9ucz0nSU5TVEFMTERJUlM9InZlbmRvciInIFwKK2FjX2N2X3BhdGhfUEVSTF9DQz0nJHtDQ30nLCAgXAorLS1kaXNhYmxlLXBlcmwscGVybCwiCisKK1BBQ0tBR0VDT05GSUdbZGJpXSA9ICItLWVuYWJsZS1saWJkYmksLS1kaXNhYmxlLWxpYmRiaSxsaWJkYmkiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kLCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWRpc2FibGUtbGlid3JhcCBcCisgICAgLS1wcm9ncmFtLXByZWZpeD0nJyBcCisgICAgcmRfY3ZfaWVlZV93b3Jrcz15ZXMgXAorICAgIC0tZGlzYWJsZS1ydWJ5IFwKKyAgICAtLWRpc2FibGUtbHVhIFwKKyAgICAtLWRpc2FibGUtdGNsIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZW5hYmxlLW5scz0ke1VTRV9OTFN9IFwKKyIKKworZXhwb3J0IFNUQUdJTkdfTElCRElSCitleHBvcnQgU1RBR0lOR19JTkNESVIKKworIyBlbXVsYXRlIGNwYW5fZG9fY29uZmlndXJlCitFWFRSQV9PRU1BS0UgPSAnIFBFUkw1TElCPSIke1BFUkxfQVJDSExJQn0iICcKKyMgQXZvaWQgZG9fY29uZmlndXJlIGVycm9yIG9uIHNvbWUgaG9zdHMKKworZG9fY29uZmlndXJlKCkgeworICAgIHVuc2V0IFBFUkxIT1NUTElCCisgICAgI2ZpeCB0aGUgcGtnbGliIHByb2JsZW0gd2l0aCBuZXdlciBhdXRvbWFrZQorICAgICNwZXJsCisgICAgc2VkIC1pIC1lICJzfC1XbCwtLXJwYXRoIC1XbCxcJHJwfHxnIiBcCisgICAgICAgICR7U30vYmluZGluZ3MvcGVybC1zaGFyZWQvTWFrZWZpbGUuUEwKKworICAgICNweXRob24KKyAgICBzZWQgLWkgLWUgJy9QWVRIT05fSU5DTFVERVM9Ii1JJHsvYyBcCisgICAgUFlUSE9OX0lOQ0xVREVTPSItST0vdXNyL2luY2x1ZGUvcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IicgXAorICAgICAgICAke1N9L200L2FjaW5jbHVkZS5tNAorICAgICNyZW1vdmUgdGhlIHVzZWxlc3MgUlBBVEggZnJvbSB0aGUgcnJkdG9vbC5zbworICAgIHNlZCAtaSAtZSAnc3xMRF9SVU5fUEFUSD0kKGxpYmRpcil8fGcnICR7U30vYmluZGluZ3MvTWFrZWZpbGUuYW0KKworICAgIGF1dG90b29sc19kb19jb25maWd1cmUKKworICAgICNtb2RpZnkgcHl0aG9uIHNpdGVwa2cKKyAgICAjcmVtb3ZlIHRoZSBkZXBlbmRlbmN5IG9mIHBlcmwtc2hhcmVkOk1ha2VmaWxlCisgICAgI29yIHBlcmwtc2hhcmVkL01ha2VmaWxlIHdpbGwgYmUgcmVnZW5lcmF0ZWQKKyAgICAjaWYgYW55IGNvZGUgdG91Y2ggYmluZGluZ3MvTWFrZWZpbGUgYWZ0ZXIgYmVsb3cgcGVybCBiaW5kaW5ncyBjb2RlCisgICAgc2VkIC1pIC1lICJzOnB5dGhvbi9zZXR1cC5weSBpbnN0YWxsOnB5dGhvbi9zZXR1cC5weSBpbnN0YWxsIFwKKyAgICAgICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfToiIFwKKyAgICAgICAgLWUgInM6cGVybC1zaGFyZWQvTWFrZWZpbGUuUEwgTWFrZWZpbGU6cGVybC1zaGFyZWQvTWFrZWZpbGUuUEw6IiBcCisgICAgICAgICR7Qn0vYmluZGluZ3MvTWFrZWZpbGUKKworICAgICNyZWRvIHRoZSBwZXJsIGJpbmRpbmdzCisgICAgKAorICAgIGNkICR7U30vYmluZGluZ3MvcGVybC1zaGFyZWQ7CisgICAgcGVybCBNYWtlZmlsZS5QTCBJTlNUQUxMRElSUz0idmVuZG9yIiBJTlNUQUxMUFJJVkxJQj0iYWJjIjsKKworICAgIGNkIC4uLy4uL2JpbmRpbmdzL3BlcmwtcGlwZWQ7CisgICAgcGVybCBNYWtlZmlsZS5QTCBJTlNUQUxMRElSUz0idmVuZG9yIjsKKyAgICApCisKKyAgICAjY2hhbmdlIHRoZSBpbnRlcnByZXRlciBpbiBmaWxlCisgICAgc2VkIC1pIC1lICJzfF5QRVJMID0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Ly4qfFBFUkwgPSAvdXNyL2Jpbi9wZXJsfGciIFwKKyAgICAgICAgJHtCfS9leGFtcGxlcy9NYWtlZmlsZQorICAgIHNlZCAtaSAtZSAic3wke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybHwvdXNyL2Jpbi9wZXJsfGciIFwKKyAgICAgICAgJHtCfS9leGFtcGxlcy8qLnBsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1wZXJsICR7UE59LXB5dGhvbiIKK1BBQ0tBR0VTID0rICJycmRjYWNoZWQiCisKK0RFU0NSSVBUSU9OX3JyZGNhY2hlZCA9IFwKKyJUaGUgcnJkY2FjaGVkIHBhY2thZ2UgY29udGFpbnMgdGhlIGRhdGEgY2FjaGluZyBkYWVtb24gZm9yIFJSRHRvb2wuIgorCitGSUxFU19ycmRjYWNoZWQgPSAiJHtiaW5kaXJ9L3JyZGNhY2hlZCBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycmRjYWNoZWQuc2VydmljZSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycmRjYWNoZWQuc29ja2V0IgorCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vcnJkdG9vbC9leGFtcGxlcyIKKworREVTQ1JJUFRJT05fJHtQTn0tcGVybCA9IFwKKyJUaGUgJHtQTn0tcGVybCBwYWNrYWdlIGluY2x1ZGVzIFJSRHRvb2wgYmluZGluZ3MgZm9yIHBlcmwuIgorRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qLyoucG0gXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9SUkRzL1JSRHMuKiIKK1JERVBFTkRTXyR7UE59LXBlcmwgPSAicGVybCBwZXJsLW1vZHVsZS1saWIgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtdGltZS1oaXJlcyBcCisgICAgcGVybC1tb2R1bGUtaW8tZmlsZSBwZXJsLW1vZHVsZS1pcGMtb3BlbjIgcGVybC1tb2R1bGUtaW8tc29ja2V0IgorCitERVNDUklQVElPTl8ke1BOfS1weXRob24gPSBcCisiVGhlICR7UE59LXB5dGhvbiBwYWNrYWdlIGluY2x1ZGVzIFJSRHRvb2wgYmluZGluZ3MgZm9yIHB5dGhvbi4iCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9SUkRzLy5kZWJ1ZyBcCisgICAgJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHAvMDAwMS1zcmMtdGNwLmMtZml4LWp1bXAtbWlzc2VzLWluaXQtZXJyb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwLzAwMDEtc3JjLXRjcC5jLWZpeC1qdW1wLW1pc3Nlcy1pbml0LWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YjY4NjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9saWJyZWxwLzAwMDEtc3JjLXRjcC5jLWZpeC1qdW1wLW1pc3Nlcy1pbml0LWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gM2U1YTBjYjQ0MGM3ODhlMjM4M2U0MGFiMjNhYzFjZjAxZDk2OTYxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDAxOjMwOjI1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy90Y3AuYzogZml4IGp1bXAtbWlzc2VzLWluaXQgZXJyb3IKKworRml4IGJlbG93IGp1bXAtbWlzc2VzLWluaXQgZXJyb3IKKworfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vLi4vZ2l0L3NyYy90Y3AuYzo1MToKK3wgLi4vLi4vZ2l0L3NyYy90Y3AuYzogSW4gZnVuY3Rpb24gJ3JlbHBUY3BDb25uZWN0JzoKK3wgLi4vLi4vZ2l0L3NyYy9yZWxwLmg6MjIwOjM6IGVycm9yOiBqdW1wIHNraXBzIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uIFstV2Vycm9yPWp1bXAtbWlzc2VzLWluaXRdCit8ICAgIGdvdG8gZmluYWxpemVfaXQ7ICBcCit8ICAgIF5+fn4KK3wgLi4vLi4vZ2l0L3NyYy90Y3AuYzoxOTUxOjM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnQUJPUlRfRklOQUxJWkUnCit8ICAgIEFCT1JUX0ZJTkFMSVpFKFJFTFBfUkVUX0lPX0VSUik7Cit8ICAgIF5+fn5+fn5+fn5+fn5+Cit8IC4uLy4uL2dpdC9zcmMvdGNwLmM6MjAwNToxOiBub3RlOiBsYWJlbCAnZmluYWxpemVfaXQnIGRlZmluZWQgaGVyZQorfCAgZmluYWxpemVfaXQ6Cit8ICBefn5+fn5+fn5+fgorfCAuLi8uLi9naXQvc3JjL3RjcC5jOjE5OTE6Njogbm90ZTogJ3InIGRlY2xhcmVkIGhlcmUKK3wgICBpbnQgciA9IGdldHNvY2tvcHQocFRoaXMtPnNvY2ssIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmc29fZXJyb3IsICZsZW4pOworfCAgICAgICBeCit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi8uLi9naXQvc3JjL3RjcC5jOjUxOgorfCAuLi8uLi9naXQvc3JjL3JlbHAuaDoyMjA6MzogZXJyb3I6IGp1bXAgc2tpcHMgdmFyaWFibGUgaW5pdGlhbGl6YXRpb24gWy1XZXJyb3I9anVtcC1taXNzZXMtaW5pdF0KK3wgICAgZ290byBmaW5hbGl6ZV9pdDsgIFwKK3wgICAgXn5+fgorfCAuLi8uLi9naXQvc3JjL3RjcC5jOjE5NTE6Mzogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdBQk9SVF9GSU5BTElaRScKK3wgICAgQUJPUlRfRklOQUxJWkUoUkVMUF9SRVRfSU9fRVJSKTsKK3wgICAgXn5+fn5+fn5+fn5+fn4KK3wgLi4vLi4vZ2l0L3NyYy90Y3AuYzoyMDA1OjE6IG5vdGU6IGxhYmVsICdmaW5hbGl6ZV9pdCcgZGVmaW5lZCBoZXJlCit8ICBmaW5hbGl6ZV9pdDoKK3wgIF5+fn5+fn5+fn5+Cit8IC4uLy4uL2dpdC9zcmMvdGNwLmM6MTk4OToxMjogbm90ZTogJ2xlbicgZGVjbGFyZWQgaGVyZQorfCAgIHNvY2tsZW5fdCBsZW4gPSBzaXplb2Ygc29fZXJyb3I7Cit8ICAgICAgICAgICAgIF5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZFtodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwL3B1bGwvMTE3XQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3RjcC5jIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90Y3AuYyBiL3NyYy90Y3AuYworaW5kZXggZjM1ZWI4NC4uZmIzNGRjNyAxMDA2NDQKKy0tLSBhL3NyYy90Y3AuYworKysrIGIvc3JjL3RjcC5jCitAQCAtMTkzNiw2ICsxOTM2LDkgQEAgcmVscFRjcENvbm5lY3QocmVscFRjcF90ICpjb25zdCBwVGhpcywKKyAJc3RydWN0IGFkZHJpbmZvIGhpbnRzOworIAlzdHJ1Y3QgYWRkcmluZm8gKnJlc2xvY2FsID0gTlVMTDsKKyAJc3RydWN0IHBvbGxmZCBwZmQ7CisrCWludCBzb19lcnJvcjsKKysJc29ja2xlbl90IGxlbiA9IHNpemVvZiBzb19lcnJvcjsKKysJaW50IHI7CisgCisgCUVOVEVSX1JFTFBGVU5DOworIAlSRUxQT0JKX2Fzc2VydChwVGhpcywgVGNwKTsKK0BAIC0xOTg1LDEwICsxOTg4LDggQEAgcmVscFRjcENvbm5lY3QocmVscFRjcF90ICpjb25zdCBwVGhpcywKKyAJCUFCT1JUX0ZJTkFMSVpFKFJFTFBfUkVUX1RJTUVEX09VVCk7CisgCX0KKyAKKy0JaW50IHNvX2Vycm9yOworLQlzb2NrbGVuX3QgbGVuID0gc2l6ZW9mIHNvX2Vycm9yOworIAorLQlpbnQgciA9IGdldHNvY2tvcHQocFRoaXMtPnNvY2ssIFNPTF9TT0NLRVQsIFNPX0VSUk9SLCAmc29fZXJyb3IsICZsZW4pOworKwlyID0gZ2V0c29ja29wdChwVGhpcy0+c29jaywgU09MX1NPQ0tFVCwgU09fRVJST1IsICZzb19lcnJvciwgJmxlbik7CisgCWlmIChyID09IC0xIHx8IHNvX2Vycm9yICE9IDApIHsKKyAJCXBUaGlzLT5wRW5naW5lLT5kYmdwcmludCgic29ja2V0IGhhcyBhbiBlcnJvciAlZFxuIiwgc29fZXJyb3IpOworIAkJQUJPUlRfRklOQUxJWkUoUkVMUF9SRVRfSU9fRVJSKTsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHAvMDAwMS1zcmMtdGNwLmMtaW5jcmVhc2UtdGhlLXNpemUtb2Ytc3pIbmFtZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHAvMDAwMS1zcmMtdGNwLmMtaW5jcmVhc2UtdGhlLXNpemUtb2Ytc3pIbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTYyZTE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscC8wMDAxLXNyYy10Y3AuYy1pbmNyZWFzZS10aGUtc2l6ZS1vZi1zekhuYW1lLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gZDg5NTBhZDI3M2Q3OWVjNTE2NDY4Mjg5YWRiZDQyN2U2ODFkYmM2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDAxOjIyOjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy90Y3AuYzogaW5jcmVhc2UgdGhlIHNpemUgb2Ygc3pIbmFtZQorCitJbmNyZWFzZSB0aGUgc2l6ZSBvZiBzekhuYW1lIHRvIGZpeCBiZWxvdworZXJyb3I6Cit8IC4uLy4uL2dpdC9zcmMvdGNwLmM6IEluIGZ1bmN0aW9uICdyZWxwVGNwU2V0UmVtSG9zdCc6Cit8IC4uLy4uL2dpdC9zcmMvdGNwLmM6MzUyOjU3OiBlcnJvcjogJyVzJyBkaXJlY3RpdmUgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyB1cCB0byAxMDI0IGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAxMDExIFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KK3wgICAgICBzbnByaW50ZigoY2hhciopc3pIbmFtZSwgTklfTUFYSE9TVCwgIltNQUxJQ0lPVVM6SVA9JXNdIiwgc3pJUCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+ICAgIH5+fn4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9wb2t5LWJ1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9saWJyZWxwLzEuMi4xNi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9zdGRpby5oOjg2MiwKK3wgICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dpdC9zcmMvdGNwLmM6Mzg6Cit8IC9wb2t5LWJ1aWxkL3RtcC93b3JrL2k1ODYtcG9reS1saW51eC9saWJyZWxwLzEuMi4xNi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL3N0ZGlvMi5oOjY0OjEwOiBub3RlOiAnX19idWlsdGluX19fc25wcmludGZfY2hrJyBvdXRwdXQgYmV0d2VlbiAxNiBhbmQgMTA0MCBieXRlcyBpbnRvIGEgZGVzdGluYXRpb24gb2Ygc2l6ZSAxMDI1Cit8ICAgIHJldHVybiBfX2J1aWx0aW5fX19zbnByaW50Zl9jaGsgKF9fcywgX19uLCBfX1VTRV9GT1JUSUZZX0xFVkVMIC0gMSwKK3wgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorfCAgICAgICAgIF9fYm9zIChfX3MpLCBfX2ZtdCwgX192YV9hcmdfcGFjayAoKSk7Cit8ICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorfCBjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycworfCBNYWtlZmlsZTo1MzY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdsaWJyZWxwX2xhLXRjcC5sbycgZmFpbGVkCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYnJlbHAvcHVsbC8xMThdCisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGNwLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3RjcC5jIGIvc3JjL3RjcC5jCitpbmRleCBmYjM0ZGM3Li4yYzM4YjBiIDEwMDY0NAorLS0tIGEvc3JjL3RjcC5jCisrKysgYi9zcmMvdGNwLmMKK0BAIC0zMTksNyArMzE5LDcgQEAgcmVscFRjcFNldFJlbUhvc3QocmVscFRjcF90ICpjb25zdCBwVGhpcywgc3RydWN0IHNvY2thZGRyICpwQWRkcikKKyAJcmVscEVuZ2luZV90ICpwRW5naW5lOworIAlpbnQgZXJyb3I7CisgCXVuc2lnbmVkIGNoYXIgc3pJUFtOSV9NQVhIT1NUXSA9ICIiOworLQl1bnNpZ25lZCBjaGFyIHN6SG5hbWVbTklfTUFYSE9TVF0gPSAiIjsKKysJdW5zaWduZWQgY2hhciBzekhuYW1lWzEwNDVdID0gIiI7CisgCXN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKKyAJc2l6ZV90IGxlbjsKKyAJCitAQCAtMzQ5LDcgKzM0OSw3IEBAIHJlbHBUY3BTZXRSZW1Ib3N0KHJlbHBUY3BfdCAqY29uc3QgcFRoaXMsIHN0cnVjdCBzb2NrYWRkciAqcEFkZHIpCisgCQkJaWYoZ2V0YWRkcmluZm8oKGNoYXIqKXN6SG5hbWUsIE5VTEwsICZoaW50cywgJnJlcykgPT0gMCkgeworIAkJCQlmcmVlYWRkcmluZm8gKHJlcyk7CisgCQkJCS8qIE9LLCB3ZSBrbm93IHdlIGhhdmUgZXZpbCwgc28gbGV0J3MgaW5kaWNhdGUgdGhpcyB0byBvdXIgY2FsbGVyICovCistCQkJCXNucHJpbnRmKChjaGFyKilzekhuYW1lLCBOSV9NQVhIT1NULCAiW01BTElDSU9VUzpJUD0lc10iLCBzeklQKTsKKysJCQkJc25wcmludGYoKGNoYXIqKXN6SG5hbWUsIHNpemVvZihzekhuYW1lKSwgIltNQUxJQ0lPVVM6SVA9JXNdIiwgc3pJUCk7CisgCQkJCXBFbmdpbmUtPmRiZ3ByaW50KCJNYWxpY2lvdXMgUFRSIHJlY29yZCwgSVAgPSBcIiVzXCIgSE9TVCA9IFwiJXNcIiIsIHN6SVAsIHN6SG5hbWUpOworIAkJCQlpUmV0ID0gUkVMUF9SRVRfTUFMSUNJT1VTX0hOQU1FOworIAkJCX0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MDQ3ZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkEgcmVsaWFibGUgbG9nZ2luZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JzeXNsb2cvbGliZmFzdGpzb24iCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZmI5YzEwZWQ5ZmQ2ODI2NzU3NjE1NDU1Y2E4OTNhOSIKLQotREVQRU5EUyA9ICJnbXAgbmV0dGxlIGxpYmlkbiB6bGliIGdudXRscyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JzeXNsb2cvbGlicmVscC5naXQ7cHJvdG9jb2w9aHR0cHMiCi0KLVNSQ1JFViA9ICJmYzUxMmUzMzdiZmM3YzkyNzcwMjQ2ZGJmZjVmNDgyYjg3OTQ5OGI5IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjIuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc0NzhlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS4yLjE2LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiQSByZWxpYWJsZSBsb2dnaW5nIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJmYXN0anNvbiIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmYjljMTBlZDlmZDY4MjY3NTc2MTU0NTVjYTg5M2E5IgorCitERVBFTkRTID0gImdtcCBuZXR0bGUgbGliaWRuIHpsaWIgZ251dGxzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy10Y3AuYy1maXgtanVtcC1taXNzZXMtaW5pdC1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy10Y3AuYy1pbmNyZWFzZS10aGUtc2l6ZS1vZi1zekhuYW1lLnBhdGNoIFwKKyIKKworU1JDUkVWID0gIjVlODQ5ZmYwNjBiZTBjN2RjZTk3MmUxOTRjNTRmZGFjZmVlMGFkYzIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2gKaW5kZXggY2E4OGRkMy4uNmNlOGI3YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSA5NzM5MDk1ZGU2YWU1Zjg0NDM1NDc1NmFlOTY4ZjVmODg2NGViM2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3YmFmMzViODhkNzQyMDMyYTJkYzQ1NmMzOTY4NDNlMTdlODY2ZjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotRGF0ZTogU3VuLCAyNiBGZWIgMjAxNyAxNDoxMDoyMSArMDEwMAorRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNDowNDo1NyArMDgwMAogU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIHN5cy90aW1lLmgKIAogc3RydWN0IHRpbWV2YWwgaXMgZGVmaW5lZCBpbiBzeXMvdGltZS5oIHdpdGggYSBtdXNsIGxpYmMuCkBAIC04LDEzICs4LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgbGliYyBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogTWluZyBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCiAgdGVzdHMvbXNsZWVwLmMgfCA0IC0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL21zbGVlcC5jIGIvdGVzdHMvbXNsZWVwLmMKLWluZGV4IDI2YTgyMDYuLmNhODE4YmUgMTAwNjQ0CitpbmRleCA5OGRiZWNlLi45NmY2OTUwIDEwMDY0NAogLS0tIGEvdGVzdHMvbXNsZWVwLmMKICsrKyBiL3Rlc3RzL21zbGVlcC5jCiBAQCAtMjYsMTEgKzI2LDcgQEAKQEAgLTI2LDYgKzI2LDcgQEAKIC0jZWxzZQogLSNpbmNsdWRlIDx0aW1lLmg+CiAtI2VuZGlmCi0gCi0gaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSB7CisgI2lmIGRlZmluZWQoSEFWRV9TWVNfU0VMRUNUX0gpCisgI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyAjZW5kaWYKKzIuNy40CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2cuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy5jb25mCmluZGV4IDMyNGFlNmQuLmRiZmVmYjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy5jb25mCkBAIC04NCwzICs4NCw4IEBACiAjIFVEUCBTeXNsb2cgU2VydmVyOgogIyRNb2RMb2FkIGltdWRwLnNvICAjIHByb3ZpZGVzIFVEUCBzeXNsb2cgcmVjZXB0aW9uCiAjJFVEUFNlcnZlclJ1biA1MTQgIyBzdGFydCBhIFVEUCBzeXNsb2cgc2VydmVyIGF0IHN0YW5kYXJkIHBvcnQgNTE0CisKKyMKKyMgSW5jbHVkZSBhbGwgY29uZmlnIGZpbGVzIGluIC9ldGMvcnN5c2xvZy5kLworIworJEluY2x1ZGVDb25maWcgL2V0Yy9yc3lzbG9nLmQvKi5jb25mCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2cubG9ncm90YXRlIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy9yc3lzbG9nLmxvZ3JvdGF0ZQppbmRleCA5NGVjNTE3Li41Zjg1NjhmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3JzeXNsb2cubG9ncm90YXRlCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnN5c2xvZy5sb2dyb3RhdGUKQEAgLTksNyArOSw3IEBACiAgICAgICAgIGRlbGF5Y29tcHJlc3MKICAgICAgICAgY29tcHJlc3MKICAgICAgICAgcG9zdHJvdGF0ZQotCQkvYmluL2tpbGwgLUhVUCBgY2F0IC92YXIvcnVuL3JzeXNsb2dkLnBpZCAyPiAvZGV2L251bGxgIDI+IC9kZXYvbnVsbCB8fCB0cnVlCisJCUBCSU5ESVJAL3BraWxsIC1IVVAgcnN5c2xvZ2QgMj4gL2Rldi9udWxsIHx8IHRydWUKICAgICAgICAgZW5kc2NyaXB0CiB9CiAKQEAgLTM0LDYgKzM0LDYgQEAKICAgICAgICAgZGVsYXljb21wcmVzcwogICAgICAgICBzaGFyZWRzY3JpcHRzCiAgICAgICAgIHBvc3Ryb3RhdGUKLQkJL2Jpbi9raWxsIC1IVVAgYGNhdCAvdmFyL3J1bi9yc3lzbG9nZC5waWQgMj4gL2Rldi9udWxsYCAyPiAvZGV2L251bGwgfHwgdHJ1ZQorCQlAQklORElSQC9wa2lsbCAtSFVQIHJzeXNsb2dkIDI+IC9kZXYvbnVsbCB8fCB0cnVlCiAgICAgICAgIGVuZHNjcmlwdAogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2gKaW5kZXggMTYyZDIzOS4uMDM1MjU4NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZy91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3VzZS1wa2djb25maWctdG8tY2hlY2stbGliZ2NyeXB0LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogV2VkLCAxOCBKdW4gMjAxNCAxMzo0Njo1MiArMDgwMAogU3ViamVjdDogW1BBVENIXSB1c2UgcGtnY29uZmlnIHRvIGNoZWNrIGxpYmdjcnlwdAogCi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIGxpYmdjcnlwdCBkb2VzIG5vIGxvbmdlciBwcm92aWRlIGxpYmdjcnlwdC1jb25maWcsIGFuZCBwcm92aWRlCiAqLnBjLCBzbyB3ZSBzaG91bGQgdXNlIHBrZ2NvbmZpZyB0byBjaGVjawpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjI5LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc2NTQwZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi1TVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKLURFU0NSSVBUSU9OID0gIlwKLVJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKLSBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAotIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCi0gYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKLSBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAotIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKLSBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCi0gdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgotCi1ERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3JzeXNsb2ctZml4LXB0ZXN0LW5vdC1maW5pc2gucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10aW1lLWgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzgwNTYxN2Y2NWE0YjRiZWEzNDYwNjQ4N2E1MjU1YTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjIwYmEzMGI1YWZiMGYzZGRiMzI4NjEzZmVhN2FhMzk2NmIwMWU0ZDBjNTJkNmRlOWFiMjdiMDg1OGYxOTczOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgcHRlc3QKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2VuZXJhdGUtbWFuLXBhZ2VzIGFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCi0KLSMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKLSAgICBpbWRpYWcgZ251dGxzIGltZmlsZSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc25tcCBzeXN0ZW1kJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3Rlc3RiZW5jaCByZWxwICR7VkFMR1JJTkR9JywgJycsIGQpfSBcCi0iCi0KLSMgZGVmYXVsdCB5ZXMgaW4gY29uZmlndXJlCi1QQUNLQUdFQ09ORklHW3JlbHBdID0gIi0tZW5hYmxlLXJlbHAsLS1kaXNhYmxlLXJlbHAsbGlicmVscCwiCi1QQUNLQUdFQ09ORklHW3JzeXNsb2dkXSA9ICItLWVuYWJsZS1yc3lzbG9nZCwtLWRpc2FibGUtcnN5c2xvZ2QsLCIKLVBBQ0tBR0VDT05GSUdbcnN5c2xvZ3J0XSA9ICItLWVuYWJsZS1yc3lzbG9ncnQsLS1kaXNhYmxlLXJzeXNsb2dydCwsIgotUEFDS0FHRUNPTkZJR1tpbmV0XSA9ICItLWVuYWJsZS1pbmV0LC0tZGlzYWJsZS1pbmV0LCwiCi1QQUNLQUdFQ09ORklHW2tsb2ddID0gIi0tZW5hYmxlLWtsb2csLS1kaXNhYmxlLWtsb2csLCIKLVBBQ0tBR0VDT05GSUdbcmVnZXhwXSA9ICItLWVuYWJsZS1yZWdleHAsLS1kaXNhYmxlLXJlZ2V4cCwsIgotUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICItLWVuYWJsZS11dWlkLC0tZGlzYWJsZS11dWlkLHV0aWwtbGludXgsIgotUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0tZW5hYmxlLWxpYmdjcnlwdCwtLWRpc2FibGUtbGliZ2NyeXB0LGxpYmdjcnlwdCwiCi1QQUNLQUdFQ09ORklHW3Rlc3RiZW5jaF0gPSAiLS1lbmFibGUtdGVzdGJlbmNoIC0tZW5hYmxlLW9tc3Rkb3V0LC0tZGlzYWJsZS10ZXN0YmVuY2ggLS1kaXNhYmxlLW9tc3Rkb3V0LCwiCi0KLSMgZGVmYXVsdCBubyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZywsIgotUEFDS0FHRUNPTkZJR1tpbWRpYWddID0gIi0tZW5hYmxlLWltZGlhZywtLWRpc2FibGUtaW1kaWFnLCwiCi1QQUNLQUdFQ09ORklHW2ltZmlsZV0gPSAiLS1lbmFibGUtaW1maWxlLC0tZGlzYWJsZS1pbWZpbGUsLCIKLVBBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS1lbmFibGUtZ251dGxzLC0tZGlzYWJsZS1nbnV0bHMsZ251dGxzLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCi1QQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKLVBBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQotICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAjIGluc3RhbGwgdGhlIHRlc3RzCi0gICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKLSAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIGZpeCB0aGUgc3JjZGlyLCB0b3Bfc3JjZGlyCi0gICAgc2VkIC1pICdzLF5cKHNyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotICAgIHNlZCAtaSAncyxeXCh0b3Bfc3JjZGlyID0gXCkuKixcMSR7UFRFU1RfUEFUSH0vdGVzdHMsJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAotICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KLSAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBmaQotCi0gICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcwotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKLSAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCi0gICAgKAotICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCi0gICAgICAgIGFsbHNvPSIqLnNvIgotICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCi0gICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQotICAgICAgICBkb25lCi0gICAgKQotCi0gICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKLSAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLSAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZCIKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZwotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZgotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5sb2dyb3RhdGUgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvbG9ncm90YXRlLnJzeXNsb2cKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKLQotSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSArPSAibG9ncm90YXRlIgotCi0jIGZvciByc3lzbG9nLXB0ZXN0Ci1WQUxHUklORCA9ICJ2YWxncmluZCIKLVZBTEdSSU5EX21pcHMgPSAiIgotVkFMR1JJTkRfbWlwczY0ID0gIiIKLVZBTEdSSU5EX21pcHM2NG4zMiA9ICIiCi1WQUxHUklORF9hcm0gPSAiIgotVkFMR1JJTkRfYWFyY2g2NCA9ICIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBkaWZmdXRpbHMgZ3ppcCBiYXNoIGdhd2sgY29yZXV0aWxzIHByb2NwcyIKLVJSRUNPTU1FTkRTXyR7UE59LXB0ZXN0ICs9ICIke1RDTElCQ30tZGJnICR7VkFMR1JJTkR9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjM3LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMzcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmI0MzkwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjM3LjAuYmIKQEAgLTAsMCArMSwxNjYgQEAKK1NVTU1BUlkgPSAiUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBtdWx0aS10aHJlYWRlZCBzeXNsb2dkIgorREVTQ1JJUFRJT04gPSAiXAorUnN5c2xvZyBpcyBhbiBlbmhhbmNlZCBzeXNsb2dkIHN1cHBvcnRpbmcsIGFtb25nIG90aGVycywgTXlTUUwsXAorIFBvc3RncmVTUUwsIGZhaWxvdmVyIGxvZyBkZXN0aW5hdGlvbnMsIHN5c2xvZy90Y3AsIGZpbmUgZ3JhaW5cCisgb3V0cHV0IGZvcm1hdCBjb250cm9sLCBoaWdoIHByZWNpc2lvbiB0aW1lc3RhbXBzLCBxdWV1ZWQgb3BlcmF0aW9uc1wKKyBhbmQgdGhlIGFiaWxpdHkgdG8gZmlsdGVyIG9uIGFueSBtZXNzYWdlIHBhcnQuIEl0IGlzIHF1aXRlXAorIGNvbXBhdGlibGUgdG8gc3RvY2sgc3lza2xvZ2QgYW5kIGNhbiBiZSB1c2VkIGFzIGEgZHJvcC1pbiByZXBsYWNlbWVudC5cCisgSXRzIGFkdmFuY2VkIGZlYXR1cmVzIG1ha2UgaXQgc3VpdGFibGUgZm9yIGVudGVycHJpc2UtY2xhc3MsXAorIGVuY3J5cHRpb24gcHJvdGVjdGVkIHN5c2xvZyByZWxheSBjaGFpbnMgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBiZWluZ1wKKyB2ZXJ5IGVhc3kgdG8gc2V0dXAgZm9yIHRoZSBub3ZpY2UgdXNlci4iCisKK0RFUEVORFMgPSAiemxpYiBsaWJlc3RyIGxpYmZhc3Rqc29uIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBsaWJsb2dnaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS8iCitMSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzICYgQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTUxZDk2MzVlNjQ2ZmI3NWUxYjc0YzA3NGY3ODhlOTczIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1jYjc5MDNmMWU1YzM5YWU4MzgyMDllMTMwZGNhMjcwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkFTTDIwO21kNT0wNTJmOGEwOTIwNjYxNWFiMDczMjZmZjhjZTJkOWQzMlwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnJzeXNsb2cuY29tL2Rvd25sb2FkL2ZpbGVzL2Rvd25sb2FkL3JzeXNsb2cvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0c2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL3JzeXNsb2cuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmxvZ3JvdGF0ZSBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLXRvLWNoZWNrLWxpYmdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy1maXgtcHRlc3Qtbm90LWZpbmlzaC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXRpbWUtaC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMDk0MmI0Yjg4YTEzNjAyYTZiNjM1MmJmOWYwNTA5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTVjMjg5YjRjOGFiZDhmOGYzZmUzNWE4MzI0OWI3MzljZWRhYmU4MjcyMTcwMmI5MTAyNTVmOWZhZjE0N2U3IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JzeXNsb2cvcnN5c2xvZy9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgcHRlc3QKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2VuZXJhdGUtbWFuLXBhZ2VzIGFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCisKKyMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKKyAgICBmbWh0dHAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAorIgorCisjIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQorUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgorUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCitQQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKK1BBQ0tBR0VDT05GSUdbZm1odHRwXSA9ICItLWVuYWJsZS1mbWh0dHAsLS1kaXNhYmxlLWZtaHR0cCxjdXJsLCIKK1BBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgorUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCitQQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKK1BBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCAtLWVuYWJsZS1vbXN0ZG91dCwtLWRpc2FibGUtdGVzdGJlbmNoIC0tZGlzYWJsZS1vbXN0ZG91dCwsIgorCisjIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKK1BBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgorUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCitQQUNLQUdFQ09ORklHW2ltam91cm5hbF0gPSAiLS1lbmFibGUtaW1qb3VybmFsLC0tZGlzYWJsZS1pbWpvdXJuYWwsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS1lbmFibGUtbXlzcWwsLS1kaXNhYmxlLW15c3FsLG15c3FsNSwiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0tZW5hYmxlLXBnc3FsLC0tZGlzYWJsZS1wZ3NxbCxwb3N0Z3Jlc3FsLCIKK1BBQ0tBR0VDT05GSUdbbGliZGJpXSA9ICItLWVuYWJsZS1saWJkYmksLS1kaXNhYmxlLWxpYmRiaSxsaWJkYmksIgorUEFDS0FHRUNPTkZJR1ttYWlsXSA9ICItLWVuYWJsZS1tYWlsLC0tZGlzYWJsZS1tYWlsLCwiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQsIgorCitURVNURElSID0gInRlc3RzIgorZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBlY2hvICdidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2tfUFJPR1JBTVMpJyA+PiAke1RFU1RESVJ9L01ha2VmaWxlCisgICAgb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICMgaW5zdGFsbCB0aGUgdGVzdHMKKyAgICBjcCAtcmYgJHtTfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9CisgICAgY3AgLXJmICR7Qn0vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkIE1ha2VmaWxlIGl0c2VsZgorICAgIHNlZCAtaSAncy9eTWFrZWZpbGU6LiokL01ha2VmaWxlOi8nICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICAjIGRvIE5PVCBuZWVkIHRvIHJlYnVpbGQgJChjaGVja19QUk9HUkFNUykKKyAgICBzZWQgLWkgJ3MvXmNoZWNrLVRFU1RTOi4qJC9jaGVjay1URVNUUzovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIGZpeCB0aGUgc3JjZGlyLCB0b3Bfc3JjZGlyCisgICAgc2VkIC1pICdzLF5cKHNyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgIHNlZCAtaSAncyxeXCh0b3Bfc3JjZGlyID0gXCkuKixcMSR7UFRFU1RfUEFUSH0vdGVzdHMsJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisgICAgIyBmaXggdGhlIGFic190b3BfYnVpbGRkaXIKKyAgICBzZWQgLWkgJ3MsXlwoYWJzX3RvcF9idWlsZGRpciA9IFwpLiosXDEke1BURVNUX1BBVEh9LywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKworICAgICMgdmFsZ3JpbmQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBhcm0gYW5kIG1pcHMsCisgICAgIyBzbyByZW1vdmUgcmVsYXRlZCB0ZXN0IGNhc2VzIGlmIHRoZXJlIGlzIG5vIHZhbGdyaW5kLgorICAgIGlmIFsgeCR7VkFMR1JJTkR9ID0geCBdOyB0aGVuCisgICAgICAgIHNlZCAtaSAnL3VkcC1tc2dyZWR1Yy0vZCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgIGZpCisKKyAgICAjIGluc3RhbGwgdGVzdC1kcml2ZXIKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAjIGluc3RhbGwgbmVjZXNzYXJ5IGxpbmtzCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90b29scworICAgIGxuIC1zZiAke3NiaW5kaXJ9L3JzeXNsb2dkICR7RH0ke1BURVNUX1BBVEh9L3Rvb2xzL3JzeXNsb2dkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3J1bnRpbWUKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3J1bnRpbWUvLmxpYnMKKyAgICAoCisgICAgICAgIGNkICR7RH0vJHtsaWJkaXJ9L3JzeXNsb2cKKyAgICAgICAgYWxsc289Iiouc28iCisgICAgICAgIGZvciBpIGluICRhbGxzbzsgZG8KKyAgICAgICAgICAgIGxuIC1zZiAke2xpYmRpcn0vcnN5c2xvZy8kaSAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzLyRpCisgICAgICAgIGRvbmUKKyAgICApCisKKyAgICAjIGZpeCB0aGUgbW9kdWxlIGxvYWQgcGF0aCB3aXRoIHJ1bnRpbWUvLmxpYnMKKyAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0gLW5hbWUgIiouY29uZiIgLW8gLW5hbWUgIiouc2giIC1vIC1uYW1lICIqLmMiIHwgeGFyZ3MgXAorICAgICAgICBzZWQgLWkgLWUgJ3M6Li4vcGx1Z2lucy8uKi8ubGlicy86Li4vcnVudGltZS8ubGlicy86ZycKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kIgorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vaW5pdHNjcmlwdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9yc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5jb25mCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9yc3lzbG9nLmxvZ3JvdGF0ZSAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9sb2dyb3RhdGUucnN5c2xvZworICAgIHNlZCAtaSAtZSAicyNAQklORElSQCMke2JpbmRpcn0jZyIgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvbG9ncm90YXRlLnJzeXNsb2cKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2ltam91cm5hbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQKKyAgICAgICAgZWNobyAnJE1vZExvYWQgaW1qb3VybmFsJyA+PiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQvaW1qb3VybmFsLmNvbmYKKyAgICBmaQorfQorCitGSUxFU18ke1BOfSArPSAiJHtiaW5kaXJ9IgorCitJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZiIKKworUkNPTkZMSUNUU18ke1BOfSA9ICJidXN5Ym94LXN5c2xvZyBzeXNrbG9nZCBzeXNsb2ctbmciCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsb2dyb3RhdGUiCisKKyMgZm9yIHJzeXNsb2ctcHRlc3QKK1ZBTEdSSU5EID0gInZhbGdyaW5kIgorVkFMR1JJTkRfbWlwcyA9ICIiCitWQUxHUklORF9taXBzNjQgPSAiIgorVkFMR1JJTkRfbWlwczY0bjMyID0gIiIKK1ZBTEdSSU5EX2FybSA9ICIiCitWQUxHUklORF9hYXJjaDY0ID0gIiIKK1ZBTEdSSU5EX3Jpc2N2NjQgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZGlmZnV0aWxzIGd6aXAgYmFzaCBnYXdrIGNvcmV1dGlscyBwcm9jcHMiCitSUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYW5sb2NrL3NhbmxvY2svMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtbGliYy1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NhbmxvY2svc2FubG9jay8wMDAxLWZpeC1jb21waWxlLWZhaWx1cmUtd2l0aC1saWJjLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiZGU4MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYW5sb2NrL3NhbmxvY2svMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtbGliYy1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsODAgQEAKK0Zyb20gYzUxYzJjNTQzZjNjNzhiMmE2OGFjYzYxZjc4NmY5MDNmMmUwZmVjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgOSBTZXAgMjAxOCAwNzoyODowOSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBmYWlsdXJlIHdpdGggbGliYyBtdXNsCisKK1RoZSBsYWNrIG9mIHJhbmRvbV9yIGluIG11c2w6Citbc25pcF0KK3xtYWluLmM6MTM5Mzo3OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAncmFuZG9tX3InOworZGlkIHlvdSBtZWFuICdyYW5kb20nPyBbLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KK3wgIHJ2ID0gcmFuZG9tX3IoJnJhbmRfZGF0YSwgJnZhbCk7Cit8ICAgICAgIF5+fn5+fn5+Cit8ICAgICAgIHJhbmRvbQorfG1haW4uYzoxNDA4OjMwOiBlcnJvcjogaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnc2l6ZW9mJyB0byBpbmNvbXBsZXRlCit0eXBlICdzdHJ1Y3QgcmFuZG9tX2RhdGEnCit8ICBtZW1zZXQoJnJhbmRfZGF0YSwgMCwgc2l6ZW9mKHJhbmRfZGF0YSkpOworW3NuaXBdCisKK3MvcmFuZG9tX3IvcmFuZG9tLywgcy9pbml0c3RhdGVfci9pbml0c3RhdGUvIGFuZCByZW1vdmUgYHN0YXRpYyBzdHJ1Y3QKK3JhbmRvbV9kYXRhIHJhbmRfZGF0YScKKworSGVyZSBpcyB0aGUgbWFuIG9mIGByYW5kb21fcigpJzoKK1tzbmlwXQorVGhlIHJhbmRvbV9yKCkgZnVuY3Rpb24gaXMgbGlrZSByYW5kb20oMyksIGV4Y2VwdCB0aGF0IGluc3RlYWQgb2YgdXNpbmcKK3N0YXRlIGluZm9ybWF0aW9uIG1haW50YWluZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUKK1tzbmlwXQorCitTbyB1c2UgcmFuZG9tIHdpdGhvdXQgc3RhdGUgaW5mb3JtYXRpb24gaXMgT0suCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtzYW5sb2NrLWRldmVsQGxpc3RzLmZlZG9yYWhvc3RlZC5vcmddCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbWFpbi5jIHwgMTIgKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCitpbmRleCBmNjBiNGQzLi42MDJjNDAwIDEwMDY0NAorLS0tIGEvc3JjL21haW4uYworKysrIGIvc3JjL21haW4uYworQEAgLTg0LDcgKzg0LDYgQEAgc3RhdGljIGNoYXIgY29tbWFuZFtDT01NQU5EX01BWF07Cisgc3RhdGljIGludCBjbWRfYXJnYzsKKyBzdGF0aWMgY2hhciAqKmNtZF9hcmd2OworIHN0YXRpYyBzdHJ1Y3QgdGhyZWFkX3Bvb2wgcG9vbDsKKy1zdGF0aWMgc3RydWN0IHJhbmRvbV9kYXRhIHJhbmRfZGF0YTsKKyBzdGF0aWMgY2hhciByYW5kX3N0YXRlWzMyXTsKKyBzdGF0aWMgcHRocmVhZF9tdXRleF90IHJhbmRfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOworIHN0YXRpYyBjb25zdCBjaGFyICpydW5fZGlyID0gTlVMTDsKK0BAIC0xMzg2LDE2ICsxMzg1LDE1IEBAIGludCBnZXRfcmFuZChpbnQgYSwgaW50IGIpOworIAorIGludCBnZXRfcmFuZChpbnQgYSwgaW50IGIpCisgeworLQlpbnQzMl90IHZhbDsKKy0JaW50IHJ2OworKwlsb25nIGludCBydjsKKyAKKyAJcHRocmVhZF9tdXRleF9sb2NrKCZyYW5kX211dGV4KTsKKy0JcnYgPSByYW5kb21fcigmcmFuZF9kYXRhLCAmdmFsKTsKKysJcnYgPSByYW5kb20oKTsKKyAJcHRocmVhZF9tdXRleF91bmxvY2soJnJhbmRfbXV0ZXgpOworIAlpZiAocnYgPCAwKQorIAkJcmV0dXJuIHJ2OworIAorLQlyZXR1cm4gYSArIChpbnQpICgoKGZsb2F0KShiIC0gYSArIDEpKSAqIHZhbCAvIChSQU5EX01BWCsxLjApKTsKKysJcmV0dXJuIGEgKyAoaW50KSAoKChmbG9hdCkoYiAtIGEgKyAxKSkgKiBydiAvIChSQU5EX01BWCsxLjApKTsKKyB9CisgCisgc3RhdGljIHZvaWQgc2V0dXBfaG9zdF9uYW1lKHZvaWQpCitAQCAtMTQwNSw5ICsxNDAzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfaG9zdF9uYW1lKHZvaWQpCisgCXV1aWRfdCB1dTsKKyAKKyAJbWVtc2V0KHJhbmRfc3RhdGUsIDAsIHNpemVvZihyYW5kX3N0YXRlKSk7CistCW1lbXNldCgmcmFuZF9kYXRhLCAwLCBzaXplb2YocmFuZF9kYXRhKSk7CistCistCWluaXRzdGF0ZV9yKHRpbWUoTlVMTCksIHJhbmRfc3RhdGUsIHNpemVvZihyYW5kX3N0YXRlKSwgJnJhbmRfZGF0YSk7CisrCWluaXRzdGF0ZSh0aW1lKE5VTEwpLCByYW5kX3N0YXRlLCBzaXplb2YocmFuZF9zdGF0ZSkpOworIAorIAkvKiB1c2UgaG9zdCBuYW1lIGZyb20gY29tbWFuZCBsaW5lICovCisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYW5sb2NrL3NhbmxvY2tfMy42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2FubG9jay9zYW5sb2NrXzMuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MWJjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2FubG9jay9zYW5sb2NrXzMuNi4wLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiQSBzaGFyZWQgc3RvcmFnZSBsb2NrIG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJzYW5sb2NrICBpcyAgYSBsb2NrIG1hbmFnZXIgYnVpbHQgb24gc2hhcmVkIHN0b3JhZ2UuICBIb3N0cyB3aXRoIGFjY2VzcyBcCit0byB0aGUgc3RvcmFnZSBjYW4gcGVyZm9ybSBsb2NraW5nLiAgIEFuICBhcHBsaWNhdGlvbiAgcnVubmluZyAgb24gIHRoZSBcCitob3N0cyAgaXMgIGdpdmVuICBhIHNtYWxsIGFtb3VudCBvZiBzcGFjZSBvbiB0aGUgc2hhcmVkIGJsb2NrIGRldmljZSBvciBcCitmaWxlLCBhbmQgdXNlcyBzYW5sb2NrIGZvciBpdHMgIG93biAgYXBwbGljYXRpb24tc3BlY2lmaWMgIHN5bmNocm9uaXphdGlvbi4gXAorSW50ZXJuYWxseSwgIHRoZSAgc2FubG9jayAgZGFlbW9uIG1hbmFnZXMgbG9ja3MgdXNpbmcgdHdvIGRpc2stYmFzZWQgXAorbGVhc2UgYWxnb3JpdGhtczogZGVsdGEgbGVhc2VzIGFuZCBwYXhvcyBsZWFzZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9wYWd1cmUuaW8vc2FubG9jayIKK1NFQ1RJT04gPSAidXRpbHMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLmxpY2Vuc2U7bWQ1PTYwNDg3YmYwYmY0MjlkNmI1YWE3MmI2ZDM3YTBlYjIyIgorCitTUkNfVVJJID0gImdpdDovL3BhZ3VyZS5pby9zYW5sb2NrLmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWxpYmMtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDUkVWID0gIjkwYjJmZmE3N2VkZDQ2YmVhMDA3YjdiYjM5YmZkNGQyZGIyZmY3YWYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImxpYmFpbyB1dGlsLWxpbnV4IgorCitpbmhlcml0IGRpc3R1dGlscworCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworICAgIG9lX3J1bm1ha2UgLUMgd2RtZCBDTURfTERGTEFHUz0iJHtMREZMQUdTfSIgTElCX0xERkxBR1M9IiR7TERGTEFHU30iCisgICAgb2VfcnVubWFrZSAtQyBzcmMgQ01EX0xERkxBR1M9IiR7TERGTEFHU30iIExJQl9FTlRJUkVfTERGTEFHUz0iJHtMREZMQUdTfSIgTElCX0NMSUVOVF9MREZMQUdTPSIke0xERkxBR1N9IgorICAgIGNkICR7U30vcHl0aG9uCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCAoKSB7CisgICAgb2VfcnVubWFrZSAtQyB3ZG1kIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKKyAgICBvZV9ydW5tYWtlIC1DIHNyYyBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCisgICAgY2QgJHtTfS9weXRob24KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2ItMS40Ljkvc2JsaW0tc2ZjYi0xLjQuOS1maXgtc2ZjYmluc3QybW9mLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Ivc2JsaW0tc2ZjYi0xLjQuOS9zYmxpbS1zZmNiLTEuNC45LWZpeC1zZmNiaW5zdDJtb2YucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI3OWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2ItMS40Ljkvc2JsaW0tc2ZjYi0xLjQuOS1maXgtc2ZjYmluc3QybW9mLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYWQ2Y2E0ZjM5MmJmNTQ5MjM5YjFlZDNiMmIzNzIwNzBlYjEyN2U3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBKdWwgMjAxOCAxMTowNjowNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZml4IHNmY2JpbnN0Mm1vZl9ERVBFTkRFTkNJRVMKKworRml4ZWQgYnVpbGQgd2l0aCBhdXRvbWFrZSAxLjE2LjE6CisvcGF0aC90by9pNTg2LXBva3ktbGludXgvOC4xLjAvbGQ6IGNhbm5vdCBmaW5kIC1sc2ZjQnJva2VyQ29yZQorY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAzNGFjMzE5Li40N2RlZWQ3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMzYwLDYgKzM2MCw3IEBAIHNmY2Jwcm9jX1NPVVJDRVM9c2ZjYnByb2MuYworIAorIHNmY2JpbnN0Mm1vZl9TT1VSQ0VTPXNmY2JpbnN0Mm1vZi5jCisgc2ZjYmluc3QybW9mX0xEQUREID0gLWxzZmNGaWxlUmVwb3NpdG9yeSAtbHNmY0Jyb2tlckNvcmUKKytzZmNiaW5zdDJtb2ZfREVQRU5ERU5DSUVTID0gbGlic2ZjQnJva2VyQ29yZS5sYSBsaWJzZmNGaWxlUmVwb3NpdG9yeS5sYQorIAorIHNmY2J0cmFjZV9TT1VSQ0VTPXNmY2J0cmFjZS5jCisgc2ZjYnRyYWNlX0xEQUREID0gLWxzZmNCcm9rZXJDb3JlCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2JfMS40LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2JsaW0tc2ZjYi9zYmxpbS1zZmNiXzEuNC45LmJiCmluZGV4IDEwZmZhYWEuLjkxYzUwMDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zYmxpbS1zZmNiL3NibGltLXNmY2JfMS40LjkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NibGltLXNmY2Ivc2JsaW0tc2ZjYl8xLjQuOS5iYgpAQCAtMjUsNiArMjUsNyBAQAogICAgICAgICAgICBmaWxlOi8vc2JsaW0tc2ZjYi0xLjQuOS1maXgtZnRiZnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLXN5c3RlbS1oZWFkZXItZm9yLVVJTlQxNl9NQVgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLW5lZWQtZm9yLWVycm9yLmgtd2hlbi1pdC1kb2VzLW5vdC1leGlzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYmxpbS1zZmNiLTEuNC45LWZpeC1zZmNiaW5zdDJtb2YucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjgwMjFjZGFiYzczNjkwYTk0ZjRmOWQ1NzI1NGNlMzAiCkBAIC02NywxNCArNjgsOCBAQAogfQogCiBwa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIE9QVFM9IiIKLQogICAgIGlmIFsgeCIkRCIgIT0gIngiIF07IHRoZW4KLSAgICAgICAgT1BUUz0iLS1yb290PSREIgotICAgICAgICBpZiB0eXBlIHN5c3RlbWN0bCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgICAgICAgc3lzdGVtY3RsICRPUFRTICR7U1lTVEVNRF9BVVRPX0VOQUJMRX0gJHtTWVNURU1EX1NFUlZJQ0V9Ci0gICAgICAgIGZpCi0gICAgICAgIGV4aXQgMQorICAgICAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdCAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0KICAgICBmaQogCiAgICAgJHtkYXRhZGlyfS9zZmNiL2dlblNzbENlcnQuc2ggJHtzeXNjb25mZGlyfS9zZmNiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2NzaXJhc3Rvb2xzL3Njc2lyYXN0b29sc18xLjYuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi42LmJiCmluZGV4IGUyMDJkMTYuLjc3ZDNjZmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zY3NpcmFzdG9vbHMvc2NzaXJhc3Rvb2xzXzEuNi42LmJiCkBAIC0zMywxNiArMzMsMTQgQEAKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfS1yYWlkbW9uID0gInNncmFpZCIKIElOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXJhaWRtb24gPSAiZGVmYXVsdHMgODAgMjAiCiAKLVBBQ0tBR0VTID0rICIke1BOfS1kaXNrbW9uICR7UE59LWRpc2ttb24tZGJnIgotUEFDS0FHRVMgPSsgIiR7UE59LXJhaWRtb24gJHtQTn0tcmFpZG1vbi1kYmciCitQQUNLQUdFUyA9KyAiJHtQTn0tZGlza21vbiIKK1BBQ0tBR0VTID0rICIke1BOfS1yYWlkbW9uIgogCi1GSUxFU18ke1BOfS1kYmcgKz0gIi91c3Ivc2hhcmUvc2NzaXJhc3Rvb2xzLy5kZWJ1ZyIKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gIiR7UE59LWRpc2ttb24tZGJnICR7UE59LXJhaWRtb24tZGJnIgogCiBGSUxFU18ke1BOfS1kaXNrbW9uID0gIiR7c2JpbmRpcn0vc2dkaXNrbW9uICR7c3lzY29uZmRpcn0vaW5pdC5kL3NnZGlzayIKLUZJTEVTXyR7UE59LWRpc2ttb24tZGJnID0gIiR7c2JpbmRpcn0vLmRlYnVnL3NnZGlza21vbiIKIAogRklMRVNfJHtQTn0tcmFpZG1vbiA9ICIke3NiaW5kaXJ9L3NncmFpZG1vbiAke3N5c2NvbmZkaXJ9L2luaXQuZC9zZ3JhaWQiCi1GSUxFU18ke1BOfS1yYWlkbW9uLWRiZyA9ICIke3NiaW5kaXJ9Ly5kZWJ1Zy9zZ3JhaWRtb24iCiAKIFJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgogUkRFUEVORFNfJHtQTn0tZGlza21vbiArPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2VkdXRpbC9zZWR1dGlsX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zZWR1dGlsL3NlZHV0aWxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzU2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2VkdXRpbC9zZWR1dGlsX2dpdC5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJBIHV0aWxpdHkgdG8gbWFuYWdlIHNlbGYgZW5jcnlwdGluZyBkcml2ZXMgdGhhdCBjb25mb3JtIFwKK3RvIHRoZSBUcnVzdGVkIENvbXB1dGluZyBHcm91cCBPUEFMIDIuMCBTU0Mgc3BlY2lmaWNhdGlvbi4iCitTVU1NQVJZID0gIlRoZSBEcml2ZSBUcnVzdCBBbGxpYW5jZSBTZWxmIEVuY3J5cHRpbmcgRHJpdmUgVXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9Ecml2ZS1UcnVzdC1BbGxpYW5jZS9zZWR1dGlsIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29tbW9uL0xJQ0VOU0UudHh0O21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworQkFTRVBWID0gIjEuMTUuMSIKK1BWID0gIiR7QkFTRVBWfStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIzNThjYzc1ODk0OGJlNzg4Mjg0ZDVmYWJhNDZjY2Y0Y2MxODEzNzk2IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0RyaXZlLVRydXN0LUFsbGlhbmNlL3NlZHV0aWwuZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL2ZpbGVzLzAwMDEtb3NfbGludXguY3BwLVVzZS1yZWFscGF0aC1CU0QtUE9TSVgtaW5zdGVhZC1vZi1jYW5vbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL2ZpbGVzLzAwMDEtb3NfbGludXguY3BwLVVzZS1yZWFscGF0aC1CU0QtUE9TSVgtaW5zdGVhZC1vZi1jYW5vbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWU2NGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvZmlsZXMvMDAwMS1vc19saW51eC5jcHAtVXNlLXJlYWxwYXRoLUJTRC1QT1NJWC1pbnN0ZWFkLW9mLWNhbm9uLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjI4YWExODhlNWIwZWE4NTM2OWZlYmU2NTdiODgwN2I4MDI1MDM4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGNocmZyYW5rZSA8YXV0aG9yc0BzbWFydG1vbnRvb2xzLm9yZz4KK0RhdGU6IFdlZCwgOCBOb3YgMjAxNyAwNjoxNTo1MCArMDAwMAorU3ViamVjdDogW1BBVENIXSBvc19saW51eC5jcHA6IFVzZSAncmVhbHBhdGgoKScgKEJTRCwgUE9TSVgpIGluc3RlYWQgb2YKKyAnY2Fub25pY2FsaXplX2ZpbGVfbmFtZSgpJyAoR05VIGV4dGVuc2lvbikuIFRoaXMgZml4ZXMgYnVpbGQgb24gc3lzdGVtcyB3aXRoCisgbXVzbCBsaWJjICgjOTIxKS4KKworZ2l0LXN2bi1pZDogaHR0cDovL3N2bi5jb2RlLnNmLm5ldC9wL3NtYXJ0bW9udG9vbHMvY29kZS90cnVua0A0NjAzIDRlYTY5ZTFhLTYxZjEtNDA0My1iZjgzLWI1Yzk0YzY0ODEzNworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3d3dy5zbWFydG1vbnRvb2xzLm9yZy90aWNrZXQvOTIxXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG9zX2xpbnV4LmNwcCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL29zX2xpbnV4LmNwcCBiL29zX2xpbnV4LmNwcAoraW5kZXggMTM0ZDViYy4uOTM1ZjljNyAxMDA2NDQKKy0tLSBhL29zX2xpbnV4LmNwcAorKysrIGIvb3NfbGludXguY3BwCitAQCAtMzE3Niw3ICszMTc2LDcgQEAgc3RhdGljIGJvb2wgaXNfaHBzYShjb25zdCBjaGFyICogbmFtZSkKKyB7CisgICBjaGFyIHBhdGhbMTI4XTsKKyAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIi9zeXMvYmxvY2svJXMvZGV2aWNlIiwgbmFtZSk7CistICBjaGFyICogc3lzaG9zdHBhdGggPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lKHBhdGgpOworKyAgY2hhciAqIHN5c2hvc3RwYXRoID0gcmVhbHBhdGgobmFtZSwgKGNoYXIgKikwKTsKKyAgIGlmICghc3lzaG9zdHBhdGgpCisgICAgIHJldHVybiBmYWxzZTsKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHNfNi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIKaW5kZXggMWExNzY3ZS4uYzc3YzEwNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NtYXJ0bW9udG9vbHMvc21hcnRtb250b29sc182LjYuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIkNvbnRyb2wgYW5kIG1vbml0b3Igc3RvcmFnZSBzeXN0ZW1zIHVzaW5nIFMuTS5BLlIuVCIKLURFU0NSSVBUSU9OID0gXAotIlRoZSBzbWFydG1vbnRvb2xzIHBhY2thZ2UgY29udGFpbnMgdHdvIHV0aWxpdHkgcHJvZ3JhbXMgKHNtYXJ0Y3RsIFwKK0RFU0NSSVBUSU9OID0gIlwKK1RoZSBzbWFydG1vbnRvb2xzIHBhY2thZ2UgY29udGFpbnMgdHdvIHV0aWxpdHkgcHJvZ3JhbXMgKHNtYXJ0Y3RsIFwKIGFuZCBzbWFydGQpIHRvIGNvbnRyb2wgYW5kIG1vbml0b3Igc3RvcmFnZSBzeXN0ZW1zIHVzaW5nIHRoZSBTZWxmLVwKIE1vbml0b3JpbmcsIEFuYWx5c2lzIGFuZCBSZXBvcnRpbmcgVGVjaG5vbG9neSBTeXN0ZW0gKFNNQVJUKSBidWlsdCBcCiBpbnRvIG1vc3QgbW9kZXJuIEFUQSBhbmQgU0NTSSBoYXJkIGRpc2tzLiBJbiBtYW55IGNhc2VzLCB0aGVzZSBcCkBAIC0xMywxMCArMTMsMTEgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zbWFydG1vbnRvb2xzL3NtYXJ0bW9udG9vbHMtJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vaW5pdGQuc21hcnRkIFwKLSAgICBmaWxlOi8vc21hcnRtb250b29scy5kZWZhdWx0IFwKLSAgICBmaWxlOi8vc21hcnRkLnNlcnZpY2UgXAotIgorICAgICAgICAgICBmaWxlOi8vaW5pdGQuc21hcnRkIFwKKyAgICAgICAgICAgZmlsZTovL3NtYXJ0bW9udG9vbHMuZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9zbWFydGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9zX2xpbnV4LmNwcC1Vc2UtcmVhbHBhdGgtQlNELVBPU0lYLWluc3RlYWQtb2YtY2Fub24ucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjYXAtbmcgc2VsaW51eCcsIGQpfSIKIFBBQ0tBR0VDT05GSUdbbGliY2FwLW5nXSA9ICItLXdpdGgtbGliY2FwLW5nPXllcywtLXdpdGgtbGliY2FwLW5nPW5vLGxpYmNhcC1uZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NuYXBweS9zbmFwcHlfMS4xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYzN2M1ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiCkBAIC0wLDAgKzEsMjUgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIyBSZWxlYXNlZCB1bmRlciB0aGUgQlNELTMtQ2xhdXNlIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLkJTRC0zIGZvciB0aGUgdGVybXMpCisjCitTVU1NQVJZID0gIkEgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiU25hcHB5IGlzIGEgZmFzdCBkYXRhIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGxpYnJhcnkgXAorSXQgd2FzIGRlc2lnbmVkIHRvIGJlIHZlcnkgZmFzdCBhbmQgc3RhYmxlLCBidXQgbm90IHRvIGFjaGlldmUgYSBoaWdoIFwKK2NvbXByZXNzaW9uIHJhdGlvLiIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNjJmMzA4MDMyNGE5N2IzMTU5YTdhN2U2MTgxMmQwYyIKKworU1JDX1VSSSA9ICJodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvc25hcHB5L3NuYXBweS0xLjEuNy50YXIuZ3ovc2hhNTEyLzMyMDQ2ZjUzMjYwNmJhNTQ1YTRlNDgyNWMwYzY2YTE5YmU0NDlmMmNhMmZmNzYwYTZmYTE3MGEzNjAzNzMxNDc5YTdkZWFkYjY4MzU0NmU1ZjhiNTAzMzQxNGM1MGY0YTlhMjlmNmQyM2I3YTQxZjA0N2U1NjZlNjllY2E3Y2FmL3NuYXBweS0xLjEuNy50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZTkwODYyOTFjOWFlOGRlYjRkYWM1ZTBiODViZjU0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGZhMDJlODczZmY1MWExMWVlMDJiOWNhMzkxODA3ZjBjOGVhMDUyOWE0OTI0YWZhNjQ1ZmJmOTcxNjNmOWQ0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi1ESEFWRV9MSUJMWk8yPTEsLURIQVZFX0xJQkxaTzI9MCxsem8sIgorVEFSR0VUX0NGTEFHUyArPSAiLWZQSUMiCisKK0VYVFJBX09FQ01BS0UgKz0gJy1EQlVJTERfU0hBUkVEX0xJQlM9Ik9OIiBcCisgICAgICAgICAgICAgICAgICAnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi1pc290cF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi1pc290cF9naXQuYmIKaW5kZXggM2MwMTllYi4uNmNlM2NhYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4taXNvdHBfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLWlzb3RwX2dpdC5iYgpAQCAtMSw2ICsxLDYgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03MmQ5NzdkNjk3YzNjMDU4MzBmZGZmMDBhNzQ0ODkzMSIKLVNSQ1JFViA9ICJkMTI0OGIwZjIyZWE4ZGMzYjlkODRhNjFiZDM1YTgzMzA5YmRiNGI0IgorU1JDUkVWID0gIjYwMDNmOTk5NzU4N2U2YTU2M2NlYmYxZjI0NmJjZDBlYjZkZWZmM2QiCiBQViA9ICIxLjArZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9oYXJ0a29wcC9jYW4taXNvdHAuZ2l0O3Byb3RvY29sPWh0dHBzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3AvMDAwMS1GaXgtYnVpbGQtd2hlbi1TLUIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcC8wMDAxLUZpeC1idWlsZC13aGVuLVMtQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTc1NmI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3AvMDAwMS1GaXgtYnVpbGQtd2hlbi1TLUIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBhZDkwN2IxYWZmMjE3ZmUzYjQzMWFlMDUyMDI1YmE4YmE2Y2FjYzAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgSnVuIDIwMTggMjM6MTQ6NTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdoZW4gUyAhPSBCCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIvc3JjL01ha2VmaWxlLmluCitpbmRleCA0MzkyYzA2Li4yYzVjYWU0IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmluCisrKysgYi9zcmMvTWFrZWZpbGUuaW4KK0BAIC02OSw3ICs2OSw3IEBAIGluc3RhbGw6CisgCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQoYmluZGlyKQorIAkkKElOU1RBTEwpIC1tIDA3NTUgdGlwdG9wICQoREVTVERJUikkKGJpbmRpcikKKyAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChtYW4xZGlyKQorLQkkKElOU1RBTEwpIC1tIDA2NDQgdGlwdG9wLjEgJChERVNURElSKSQobWFuMWRpcikKKysJJChJTlNUQUxMKSAtbSAwNjQ0ICQoc3JjZGlyKS90aXB0b3AuMSAkKERFU1RESVIpJChtYW4xZGlyKQorIAlsbiAkKERFU1RESVIpJChiaW5kaXIpL3RpcHRvcCAkKERFU1RESVIpJChiaW5kaXIpL3B0aXB0b3AKKyAJbG4gJChERVNURElSKSQobWFuMWRpcikvdGlwdG9wLjEgJChERVNURElSKSQobWFuMWRpcikvcHRpcHRvcC4xCisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcC8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1wcm9ibGVtcy1ieS1BZHJpYW4tQnVuay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wLzAwMDEtRml4LXBhcmFsbGVsLWJ1aWxkLXByb2JsZW1zLWJ5LUFkcmlhbi1CdW5rLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNjc2YWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcC8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1wcm9ibGVtcy1ieS1BZHJpYW4tQnVuay5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDg0ODk4M2EzMGRjOTkyNDhlYzQ1NjMyYmZjMzE3MTg3MTZhODZlOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb21hc3ogQnVjaGVydCA8dG9tYXN6QGRlYmlhbi5vcmc+CitEYXRlOiBGcmksIDcgSnVsIDIwMTcgMjE6MTU6NTggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHBhcmFsbGVsIGJ1aWxkIHByb2JsZW1zIChieSBBZHJpYW4gQnVuaykKKworVGFrZW4gZnJvbSBkZWJpYW4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuaW4gYi9zcmMvTWFrZWZpbGUuaW4KK2luZGV4IDMyYWI1NjMuLjE5OTNjOWIgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuaW4KKysrKyBiL3NyYy9NYWtlZmlsZS5pbgorQEAgLTU5LDggKzU5LDkgQEAgbGV4Lnl5LmM6IGNhbGMubGV4CisgbGV4Lnl5Lm86IGxleC55eS5jCisgCSQoQ0MpICQoQ0ZMQUdTKSAtSSQoc3JjZGlyKSAtYyBsZXgueXkuYworIAorK3kudGFiLmM6IHkudGFiLmgKKyAKKy15LnRhYi5jIHkudGFiLmg6IGNhbGMueQorK3kudGFiLmg6IGNhbGMueQorIAkkKFlBQ0MpIC1kICQoc3JjZGlyKS9jYWxjLnkKKyAKKyB5LnRhYi5vOiB5LnRhYi5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcC8wMDAyLWZpeC1yZXByb2R1Y2liaWxpdHktb2YtYnVpbGQtcHJvY2Vzcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90aXB0b3AvdGlwdG9wLzAwMDItZml4LXJlcHJvZHVjaWJpbGl0eS1vZi1idWlsZC1wcm9jZXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlY2I3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcC8wMDAyLWZpeC1yZXByb2R1Y2liaWxpdHktb2YtYnVpbGQtcHJvY2Vzcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDg5ZGQ5ZDg3MDU0MDhkY2NkNWM1ZTQ3ZDIyZWJhNmZkNmVjMjJiNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb21hc3ogQnVjaGVydCA8dG9tYXN6QGRlYmlhbi5vcmc+CitEYXRlOiBUaHUsIDkgSnVsIDIwMTUgMTY6MDc6MjMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IHJlcHJvZHVjaWJpbGl0eSBvZiBidWlsZCBwcm9jZXNzCisKK1RoZSB1cHN0cmVhbSBNYWtlZmlsZSBzZXRzIG1hY3JvcyB0aGF0IGRlcGVuZCBvbgorYSBwYXJ0aWN1bGFyIHBsYXRmb3JtIHdoZXJlIHRoZSBwYWNrYWdlIGlzIGJ1aWx0LgorV2UgZG9uJ3Qgc2V0IHRoZW0gd2hpY2ggZml4ZXMgdGhlIHByb2JsZW0uCisKK1Rha2VuIGZyb20gZGViaWFuCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5pbiB8IDQgKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgoraW5kZXggMTk5M2M5Yi4uNDM5MmMwNiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5pbgorKysrIGIvc3JjL01ha2VmaWxlLmluCitAQCAtNDgsOSArNDgsNyBAQCBNYWtlZmlsZTogTWFrZWZpbGUuaW4gLi4vY29uZmlnLnN0YXR1cworIAorIAorIHZlcnNpb24ubzogdmVyc2lvbi5jCistCSQoQ0MpICQoQ0ZMQUdTKSAtRENPTVBJTEVfSE9TVD0iXCIiYGhvc3RuYW1lYCJcIiIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgIC1EQ09NUElMRV9EQVRFPSJcImBkYXRlYFwiIiBcCistICAgICAgICAgICAgICAgICAgICAgICAgLWMgJChzcmNkaXIpL3ZlcnNpb24uYworKwkkKENDKSAkKENGTEFHUykgLWMgJChzcmNkaXIpL3ZlcnNpb24uYworIAorIAorIGxleC55eS5jOiBjYWxjLmxleApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RpcHRvcC90aXB0b3BfMi4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuMS5iYgppbmRleCAwYTAwYTM2Li5jZjY3YTA4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdGlwdG9wL3RpcHRvcF8yLjMuMS5iYgpAQCAtMiwxNSArMiwyMCBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3RpcHRvcC5nZm9yZ2UuaW5yaWEuZnIvIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGxpYnhtbDIiCitERVBFTkRTID0gIm5jdXJzZXMgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3RpcHRvcC5nZm9yZ2UuaW5yaWEuZnIvcmVsZWFzZXMvJHtCUH0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwOi8vdGlwdG9wLmdmb3JnZS5pbnJpYS5mci9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbXMtYnktQWRyaWFuLUJ1bmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtcmVwcm9kdWNpYmlsaXR5LW9mLWJ1aWxkLXByb2Nlc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2hlbi1TLUIucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiNDZjYTBmZGYwMjM2ZjAyZGQyYjk2ZDM0NzYyNmQyYTIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFjNDQ0OWM5NWJiYTM0ZjE2YjQyOTcyOWMyZjU4NDMxNDkwNjY1ZDgwOTNlZmFhODY0M2IyZTFkMTA4NDE4MiIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scworCiBFWFRSQV9PRUNPTkYgPSAiQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbGlieG1sMiIiCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxwb3dlcnBjKS4qLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18cG93ZXJwY3xhYXJjaDY0KS4qLWxpbnV4IgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgIyBUd28gYnVncyBpbiBjb25maWd1cmUuYWMgd2hlbiBjcm9zcy1jb21waWxpbmcuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbS8wMDAxLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNweS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtLzAwMDEtUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY3B5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMTcwODcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbS8wMDAxLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNweS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGQzMTRmMjZlMDI0YWFmMTViZjRhYjIyY2ViOTg1MDExNDhkMGVhYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IE1heSAyMDE4IDE5OjUzOjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNweQorCitnY2M4IGRldGVjdHMgdGhhdCBzdHJuY3B5IGlzIG92ZXJ3aXJpdG5nIHRoZSBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3RlcgordGhlIHNvdXJjZSBzdHJpbmdzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkIHRvIDAgc28gbWVtY3B5IHdvdWxkIGRvIHRoZSBzYW1lCitqb2IKKworRml4ZXMKK3JuMjkwMy5jOjE1Mzo1OiBlcnJvcjogJ3N0cm5jcHknIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIGNvcHlpbmcgMTYgYnl0ZXMgZnJvbSBhIHN0cmluZyBvZiBsZW5ndGggNTExIFstV2Vycm9yPXN0cmluZ29wLXRydW5jYXRpb25dCisgICAgIHN0cm5jcHkoZGV2LT5oYXJkd2FyZV9ldWksIGRldi0+cmVzcF9kYXRhLCBSTjI5MDNfTUFYX0hFWF9FVUk2NCk7CisgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9lY2V6by9lY2V6by5jICAgfCAyICstCisgc3JjL3JuMjkwMy9ybjI5MDMuYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9lY2V6by9lY2V6by5jIGIvc3JjL2VjZXpvL2VjZXpvLmMKK2luZGV4IDZhMTk1ZmMxLi41NmM2ZGFiMyAxMDA2NDQKKy0tLSBhL3NyYy9lY2V6by9lY2V6by5jCisrKysgYi9zcmMvZWNlem8vZWNlem8uYworQEAgLTQ4OCw3ICs0ODgsNyBAQCBpbnQgZWNlem9fc2VuZF9jb21tYW5kKGNvbnN0IGVjZXpvX2NvbnRleHQgZGV2LCBjaGFyICpjbWQsIGNoYXIgKmJ1ZmZlciwKKyAgICAgLy8gb3VyIHdyaXRlIGJ1ZmZlcgorICAgICBjaGFyIHdyaXRlQnVmZmVyW0VDRVpPX01BWF9CVUZGRVJfTEVOXTsKKyAKKy0gICAgc3RybmNweSh3cml0ZUJ1ZmZlciwgY21kLCBFQ0VaT19NQVhfQlVGRkVSX0xFTik7CisrICAgIG1lbWNweSh3cml0ZUJ1ZmZlciwgY21kLCBFQ0VaT19NQVhfQlVGRkVSX0xFTi0xKTsKKyAgICAgd3JpdGVCdWZmZXJbRUNFWk9fTUFYX0JVRkZFUl9MRU4gLSAxXSA9IDA7CisgCisgICAgIGludCB3cml0ZWxlbiA9IHN0cmxlbih3cml0ZUJ1ZmZlcik7CitkaWZmIC0tZ2l0IGEvc3JjL3JuMjkwMy9ybjI5MDMuYyBiL3NyYy9ybjI5MDMvcm4yOTAzLmMKK2luZGV4IGYzMGEzM2FlLi4wMWEwMTFkYSAxMDA2NDQKKy0tLSBhL3NyYy9ybjI5MDMvcm4yOTAzLmMKKysrKyBiL3NyYy9ybjI5MDMvcm4yOTAzLmMKK0BAIC0xNTAsNyArMTUwLDcgQEAgc3RhdGljIHJuMjkwM19jb250ZXh0IF9ybjI5MDNfcG9zdGluaXQocm4yOTAzX2NvbnRleHQgZGV2LAorICAgICAgICAgcm4yOTAzX2Nsb3NlKGRldik7CisgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorLSAgICBzdHJuY3B5KGRldi0+aGFyZHdhcmVfZXVpLCBkZXYtPnJlc3BfZGF0YSwgUk4yOTAzX01BWF9IRVhfRVVJNjQpOworKyAgICBtZW1jcHkoZGV2LT5oYXJkd2FyZV9ldWksIGRldi0+cmVzcF9kYXRhLCBSTjI5MDNfTUFYX0hFWF9FVUk2NCk7CisgCisgICAgIHJldHVybiBkZXY7CisgfQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG0vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci11aW50LWRlZmluaXRpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbS8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVpbnQtZGVmaW5pdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGE0NzQxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG0vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci11aW50LWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA0OGE1ODBiZDQwMmNmNmEzZWU5ZTQyMDEzNjUzMjE5YmZlYjNjYWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgSnVuIDIwMTggMTg6Mzk6MTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdWludCBkZWZpbml0aW9uCisKK3VpbnQgaXMgZGVmaW5lZCBpbiBzeXMvdHlwZXMuaCwgdGhlcmVmb3JlIHRoaXMKK2hlYWRlciBuZWVkcyB0byBiZSBpbmNsdWRlZCwgaXQgZ2V0cyBleHBvc2VkIHdpdGgKK211c2wgd2hlcmUgdGhpcyBoZWFkZXIgaXMgbm90IGdldHRpbmcgaW5jbHVkZWQgaW5kaXJlY3RseQorYXMgaXQgaXMgaGFwcGVuaW5nIHdoZW4gYnVpbGRpbmcgb24gZ2xpYmMKKworRml4ZXMgYnVpbGQgZXJyb3JzIG9uIG11c2wgZS5nLgordXBtL3NyYy9reDEyMi9reDEyMi5ocHA6NDU2OjMxOiBlcnJvcjogJ3VpbnQnIGhhcyBub3QgYmVlbiBkZWNsYXJlZAorfCAgICAgICAgdm9pZCBzZXRCdWZmZXJUaHJlc2hvbGQodWludCBzYW1wbGVzKTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0L3VwbS9wdWxsLzY1Nl0KKyBzcmMva3gxMjIva3gxMjIuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2t4MTIyL2t4MTIyLmggYi9zcmMva3gxMjIva3gxMjIuaAoraW5kZXggMTYyMmVkNTAuLjU2ZTUyMTVlIDEwMDY0NAorLS0tIGEvc3JjL2t4MTIyL2t4MTIyLmgKKysrKyBiL3NyYy9reDEyMi9reDEyMi5oCitAQCAtMzEsNiArMzEsNyBAQCBleHRlcm4gIkMieworICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2luY2x1ZGUgPG1yYWEvaTJjLmg+CisgI2luY2x1ZGUgPG1yYWEvc3BpLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKaW5kZXggZDc0MmE1ZS4uYmFiZTVmNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYgpAQCAtNywxMiArNywxMyBAQAogCiBERVBFTkRTID0gImxpYmpwZWctdHVyYm8gbXJhYSIKIAotU1JDUkVWID0gImNjN2ZlYzlhZTAyMjhhZGQ5MDExYmYxYzJjZDVlMGNhMmJhMGQ0ZjAiCitTUkNSRVYgPSAiZGM0NWNkNzg1OTVjN2MyNGM4YTg1NzRjNjNiYjQ4YjViYjk5YzVhYSIKIFBWID0gIjEuNi4wLWdpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0LyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cCBcCi0iCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jcHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci11aW50LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTIxLDcgKzIyLDYgQEAKIAogaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgY21ha2UKIAotCiAjIG92ZXJyaWRlIHRoaXMgaW4gbG9jYWwuY29uZiB0byBnZXQgbmVlZGVkIGJpbmRpbmdzLgogIyBCSU5ESU5HU19wbi11cG09InB5dGhvbiIKICMgd2lsbCByZXN1bHQgaW4gb25seSB0aGUgcHl0aG9uIGJpbmRpbmdzIGJlaW5nIGJ1aWx0L3BhY2thZ2VkLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvZmlsZXMvMDAwMS1leHBsaWNpdGx5LXN1cHBvcnQtcHl0aG9uMy1ieS1wa2ctY29uZmlnLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvZmlsZXMvMDAwMS1leHBsaWNpdGx5LXN1cHBvcnQtcHl0aG9uMy1ieS1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2VkYjEzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC92b2x1bWVfa2V5L2ZpbGVzLzAwMDEtZXhwbGljaXRseS1zdXBwb3J0LXB5dGhvbjMtYnktcGtnLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gMTg0MTVjMGI0YzZlNTBlZDliOTlkZmRhZThkMjEwNTkwZDBhYjcyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjggQXByIDIwMTcgMDQ6NTA6MzAgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZXhwbGljaXRseSBzdXBwb3J0IHB5dGhvbjMgYnkgcGtnLWNvbmZpZwotCi1UaGUgUFlUSE9OX0NQUEZMQUdTIGFuZCAtbHB5dGhvbiQoUFlUSE9OX1ZFUlNJT04pIGlzIGhhcmRjb2RlZCwKLXVzZSBwa2ctY29uZmlnIHRvIHJlcGxhY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3ci1pbnN0YWxsZXIgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlLmFtICB8IDUgKystLS0KLSBjb25maWd1cmUuYWMgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA0NTY5YmJmLi43YThkYWY0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjAsNyArMjAsNiBAQCBBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAotIEFNX0NQUEZMQUdTID0gJChibGtpZF9DRkxBR1MpICQoZ2xpYl9DRkxBR1MpICQoR1BHTUVfQ0ZMQUdTKSBcCi0gCSQobGliY3J5cHRzZXR1cF9DRkxBR1MpICQobnNzX0NGTEFHUykKLSBMT0NBTEVESVJfQ1BQRkxBR1MgPSAtRExPQ0FMRURJUj0nIiQobG9jYWxlZGlyKSInCi0tUFlUSE9OX0NQUEZMQUdTID0gLUkvdXNyL2luY2x1ZGUvcHl0aG9uJChQWVRIT05fVkVSU0lPTikKLSAKLSAjIyBUYXJnZXRzCi0gU1VCRElSUyA9IHBvCi1AQCAtNjMsOSArNjIsOSBAQCBsaWJfbGlidm9sdW1lX2tleV9sYV9MSUJBREQgPSAkKGJsa2lkX0xJQlMpICQoZ2xpYl9MSUJTKSAkKEdQR01FX0xJQlMpIFwKLSAJJChMVExJQklOVEwpICQobGliY3J5cHRzZXR1cF9MSUJTKSAkKG5zc19MSUJTKQotIAotIHB5dGhvbl9fdm9sdW1lX2tleV9sYV9TT1VSQ0VTID0gcHl0aG9uL3ZvbHVtZV9rZXlfd3JhcC5jCi0tcHl0aG9uX192b2x1bWVfa2V5X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChQWVRIT05fQ1BQRkxBR1MpCi0rcHl0aG9uX192b2x1bWVfa2V5X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChweXRob24zX0NGTEFHUykKLSBweXRob25fX3ZvbHVtZV9rZXlfbGFfTERGTEFHUyA9IC1tb2R1bGUgLWF2b2lkLXZlcnNpb24gJChnbGliX0xJQlMpCi0tcHl0aG9uX192b2x1bWVfa2V5X2xhX0xJQkFERCA9IGxpYi9saWJ2b2x1bWVfa2V5LmxhIC1scHl0aG9uJChQWVRIT05fVkVSU0lPTikgXAotK3B5dGhvbl9fdm9sdW1lX2tleV9sYV9MSUJBREQgPSBsaWIvbGlidm9sdW1lX2tleS5sYSAkKHB5dGhvbjNfTElCUykgXAotIAkkKGdsaWJfTElCUykgJChuc3NfTElCUykKLSAKLSBzcmNfdm9sdW1lX2tleV9TT1VSQ0VTID0gc3JjL3ZvbHVtZV9rZXkuYwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZmYzNWRkMC4uMDkyOGE2YyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjcsNiArMjcsOCBAQCBBTV9JTklUX0FVVE9NQUtFKFtuby1kaXN0LWd6aXAgZGlzdC14eiBuby1kZWZpbmUgc3ViZGlyLW9iamVjdHMgLVdhbGxdKQotIEFDX1BST0dfQ0MKLSBBTV9QUk9HX0NDX0NfTwotIExUX0lOSVQoW2Rpc2FibGUtc3RhdGljXSkKLSsKLStQS0dfQ0hFQ0tfTU9EVUxFUyhweXRob24zLCBbcHl0aG9uM10pCi0gQU1fUEFUSF9QWVRIT04KLSAKLSBkbmwgTm90IGdwZzIsIGl0IGNhbm5vdCByZWNlaXZlIHBhc3NwaHJhc2VzIGZyb20gZ3BnbWUKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvdm9sdW1lLWtleV8wLjMuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDFiMjBjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvdm9sdW1lLWtleV8wLjMuMTEuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIHZvbHVtZV9rZXkgcHJvamVjdCBwcm92aWRlcyBhIGxpYnZvbHVtZV9rZXksIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIFwKK3N0b3JhZ2Ugdm9sdW1lIGVuY3J5cHRpb24ga2V5cyBhbmQgc3RvcmluZyB0aGVtIHNlcGFyYXRlbHkgZnJvbSB2b2x1bWVzLCBhbmQgYW4gXAorYXNzb2NpYXRlZCBjb21tYW5kLWxpbmUgdG9vbCwgbmFtZWQgdm9sdW1lX2tleS4iCitMSUNFTlNFID0gIkdQTHYyIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL3ZvbHVtZV9rZXkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy92b2x1bWVfa2V5L3ZvbHVtZV9rZXktJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMGRmNTZjNzc0M2ViN2M5NjUyOTNiM2Q2MTE5NDIzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNmIyNzljMjVhZTQ3N2I1NTVmOTM4ZGIyZTQxODE4ZjkwYzhjZGU5NDJiMGVlYzkyZjcwYjZjNzcyMDk1ZjZkIgorCitTUkNOQU1FID0gInZvbHVtZV9rZXkiCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZSBnZXR0ZXh0CisKK0RFUEVORFMgKz0gIiBcCisgICAgdXRpbC1saW51eCBcCisgICAgZ2xpYi0yLjAgXAorICAgIGNyeXB0c2V0dXAgXAorICAgIG5zcyBcCisgICAgZ3BnbWUgXAorICAgIHN3aWctbmF0aXZlIFwKKyIKKworUkRFUEVORFNfcHl0aG9uMy0ke1BOfSArPSAiJHtQTn0iCisKK1BBQ0tBR0VTICs9ICJweXRob24zLSR7UE59IgorRklMRVNfcHl0aG9uMy0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3ZvbHVtZV9rZXkvdm9sdW1lLWtleV8wLjMuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViZjNmMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdm9sdW1lX2tleS92b2x1bWUta2V5XzAuMy45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIHZvbHVtZV9rZXkgcHJvamVjdCBwcm92aWRlcyBhIGxpYnZvbHVtZV9rZXksIGEgbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIFwKLXN0b3JhZ2Ugdm9sdW1lIGVuY3J5cHRpb24ga2V5cyBhbmQgc3RvcmluZyB0aGVtIHNlcGFyYXRlbHkgZnJvbSB2b2x1bWVzLCBhbmQgYW4gXAotYXNzb2NpYXRlZCBjb21tYW5kLWxpbmUgdG9vbCwgbmFtZWQgdm9sdW1lX2tleS4iCi1MSUNFTlNFID0gIkdQTHYyIgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL3ZvbHVtZV9rZXkiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy92b2x1bWVfa2V5L3ZvbHVtZV9rZXktJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZXhwbGljaXRseS1zdXBwb3J0LXB5dGhvbjMtYnktcGtnLWNvbmZpZy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYTJkMTQ5MzExNzdjNjYwZTFmM2ViYmNmNWY0N2Q4ZTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDUwYTU0ZmU5YmY1NmFjZWM2ODUwYzFlNzEzNzFkM2U0OTEzYzljYTFlZjBjZGMzYTUxN2I0YjY5MTA0MTJhNiIKLQotU1JDTkFNRSA9ICJ2b2x1bWVfa2V5IgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgZ2V0dGV4dAotCi1ERVBFTkRTICs9ICIgXAotICAgIHV0aWwtbGludXggXAotICAgIGdsaWItMi4wIFwKLSAgICBjcnlwdHNldHVwIFwKLSAgICBuc3MgXAotICAgIGdwZ21lIFwKLSIKLQotUkRFUEVORFNfcHl0aG9uMy0ke1BOfSArPSAiJHtQTn0iCi0KLVBBQ0tBR0VTICs9ICJweXRob24zLSR7UE59IgotRklMRVNfcHl0aG9uMy0ke1BOfSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvemxvZy96bG9nX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2dfZ2l0LmJiCmluZGV4IDg2ZTZkMzAuLmRlNzUxNjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2dfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC96bG9nL3psb2dfZ2l0LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIGluaGVyaXQgcGtnY29uZmlnCiAKLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIExEPScke0xEfSciCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBMRD0nJHtMRH0nIExJQlJBUllfUEFUSD0ke2Jhc2VsaWJ9IgogCiBkb19pbnN0YWxsKCkgewogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBQUkVGSVg9JHtEfSR7ZXhlY19wcmVmaXh9IElOU1RBTEw9aW5zdGFsbApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL3B5eGRnL3B5eGRnXzAuMjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvcHl4ZGcvcHl4ZGdfMC4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI4YTdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL3B5eGRnL3B5eGRnXzAuMjYuYmIKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiQSBQeXRob24gbW9kdWxlIHRvIGRlYWwgd2l0aCBmcmVlZGVza3RvcC5vcmcgc3BlY2lmaWNhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvcHl4ZGciCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjMwYTk3MTZlZjM3NjJlMzQ2N2EyZjYyYmY3OTBmMGEiCisKK1NSQ1JFViA9ICI3ZGIxNGRjZjRjNDMwNWMzODU5YTJkOWZjZjlmNWRhMmRiMzI4MzMwIgorU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy94ZGcvcHl4ZGciCisKK2luaGVyaXQgZGlzdHV0aWxzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiLmluYwppbmRleCBiZDY2YTI4Li45NmFhMzExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kaXJlY3RmYi9kaXJlY3RmYi5pbmMKQEAgLTIwLDYgKzIwLDcgQEAKICAgICAgICAgICAgZmlsZTovL3VuaW9uLXNpZ3ZhbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LWNsaWVudC1nZnhfc3RhdGUtaW5pdGlhbGlzYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXRzbGliLXZlcnNpb24tY2hlY2sucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L0RpcmVjdEZCLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2ZpeC10c2xpYi12ZXJzaW9uLWNoZWNrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RpcmVjdGZiL2RpcmVjdGZiL2ZpeC10c2xpYi12ZXJzaW9uLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MmJmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZGlyZWN0ZmIvZGlyZWN0ZmIvZml4LXRzbGliLXZlcnNpb24tY2hlY2sucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorZml4IHRzbGliIHZlcnNpb24gY2hlY2sgaW4gY29uZmlndXJlLmluCisKK1RoZSBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgdGhlIG9sZCBhcyB3ZWxsIGFzIHRoZSBuZXcgdHNsaWIgcGtnLWNvbmZpZworbWV0YWRhdGEgZmlsZSBuYW1pbmcgc3R5bGUgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCisKK3RzbGliIDAuMCB0byAxLjAgY3JlYXRlZCBvbmx5IGEgdHNsaWItPFZFUlNJT04+LnBjIHBrZy1jb25maWcgbWV0YWRhdGEKK2ZpbGUuCisKK1dpdGggdHNsaWIgMS4xIHRoZSB0c2xpYi08VkVSU0lPTj4ucGMgcGhhc2Ugb3V0IHdhcyBzdGFydGVkLgorQWRkaXRpb25hbGx5LCB0aGUgcGtnLWNvbmZpZyBtZXRhZGF0YSBmaWxlIHRzbGliLnBjIHdhcyBhZGRlZC4KKworU2luY2UgdHNsaWIgMS42IHRoZSB0c2xpYi08VkVSU0lPTj4ucGMgbWV0YWRhdGEgZmlsZSBpcyBkZXByZWNhdGVkLgorTm93LCB0aGVyZSBpcyBvbmx5IGEgdHNsaWIucGMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCitTaWduZWQtb2ZmLWJ5OiBCZW4gR3VhbiA8YmVuLmd1YW5AY24uYm9zY2guY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBKb25hcyA8bWFyay5qb25hc0BkZS5ib3NjaC5jb20+CisKK2RpZmYgLU5ydSBEaXJlY3RGQi0xLjcuNy5vcmlnL2NvbmZpZ3VyZS5pbiBEaXJlY3RGQi0xLjcuNy9jb25maWd1cmUuaW4KKy0tLSBEaXJlY3RGQi0xLjcuNy5vcmlnL2NvbmZpZ3VyZS5pbgkyMDE1LTAyLTEwIDAxOjE2OjQ2LjAwMDAwMDAwMCArMDgwMAorKysrIERpcmVjdEZCLTEuNy43L2NvbmZpZ3VyZS5pbgkyMDE4LTA2LTA2IDE3OjE5OjE4LjQ3MjE0MzEwMyArMDgwMAorQEAgLTI0NTksMTAgKzI0NTksMTMgQEAKKyAKKyBlbmFibGVfdHNsaWI9bm8KKyBpZiB0ZXN0ICIkY2hlY2tmb3JfdHNsaWIiID0gInllcyI7IHRoZW4KKy0gIFBLR19DSEVDS19NT0RVTEVTKFtUU0xJQl0sIFt0c2xpYi0xLjAgPj0gMS4wLjBdLCBbZW5hYmxlX3RzbGliPXllc10sIFtlbmFibGVfdHNsaWI9bm9dKQorKyAgUEtHX0NIRUNLX01PRFVMRVMoW1RTTElCXSwgW3RzbGliID49IDEuMV0sIFtlbmFibGVfdHNsaWI9eWVzXSwgW2VuYWJsZV90c2xpYj1ub10pCisgICBpZiB0ZXN0ICIkZW5hYmxlX3RzbGliIiA9ICJubyI7IHRoZW4KKy0gICAgIFBLR19DSEVDS19NT0RVTEVTKFtUU0xJQl0sIFt0c2xpYi0wLjBdLCBbZW5hYmxlX3RzbGliPXllc10sIFtlbmFibGVfdHNsaWI9bm8KKy0gICAgICAgQUNfTVNHX1dBUk4oWyoqKiBubyB0c2xpYiAtLSB0c2xpYiBkcml2ZXIgd2lsbCBub3QgYmUgYnVpbHQuXSldKQorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbVFNMSUJdLCBbdHNsaWItMS4wID49IDEuMF0sIFtlbmFibGVfdHNsaWI9eWVzXSwgW2VuYWJsZV90c2xpYj1ub10pCisrICAgIGlmIHRlc3QgIiRlbmFibGVfdHNsaWIiID0gIm5vIjsgdGhlbgorKyAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtUU0xJQl0sIFt0c2xpYi0wLjBdLCBbZW5hYmxlX3RzbGliPXllc10sIFtlbmFibGVfdHNsaWI9bm8KKysgICAgICAgIEFDX01TR19XQVJOKFsqKiogbm8gdHNsaWIgLS0gdHNsaWIgZHJpdmVyIHdpbGwgbm90IGJlIGJ1aWx0Ll0pXSkKKysgICAgZmkKKyAgIGZpCisgZmkKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTcwNzMxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKaW5kZXggNDgxZmVkZi4uOTQ3ZDM2ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxNzA3MzEuYmIKQEAgLTQ1LDcgKzQ1LDkgQEAKICAgICBjZCAkY3VycmRpcgogfQogCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uLWRiZyAke1BOfS1weXRob24iCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICIke1BOfS1weXRob24tZGJnIgogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2RhdGFkaXJ9L21pbWUgXApAQCAtNTMsNyArNTUsNiBAQAogIgogCiBGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gJHtkYXRhZGlyfS8ke1BOfS9weXRob24iCi1GSUxFU18ke1BOfS1weXRob24tZGJnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyIKIFJERVBFTkRTXyR7UE59LXB5dGhvbiA9ICJweXRob24iCiAKICMgZm9yIGUuZyBrZGUncyBveHlnZW4tZm9udHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nbG0vZ2xtXzAuOS45LWEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjktYTIuYmIKaW5kZXggNGUyZWUyMy4uN2YxNjcwOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjktYTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dsbS9nbG1fMC45LjktYTIuYmIKQEAgLTQsOSArNCw3IEBACiBTaGFkaW5nIExhbmd1YWdlIChHTFNMKSBzcGVjaWZpY2F0aW9ucy4iCiBIT01FUEFHRSA9ICJodHRwczovL2dsbS5nLXRydWMubmV0IgogQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZy10cnVjL2dsbS9pc3N1ZXMiCi0KIFNFQ1RJT04gPSAibGlicyIKLQogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9yZWFkbWUubWQ7YmVnaW5saW5lPTIxO2VuZGxpbmU9MjI7bWQ1PTMwNzViNTcyN2QzNmYyOWVkY2NmOTdiOTNlNzJiNzkwIgogCkBAIC0xNiwxMyArMTQsMTMgQEAKICAgICBmaWxlOi8vMDAwMi1nbG0taW5zdGFsbC1oZWFkZXJzLW9ubHkucGF0Y2ggXAogIgogU1JDUkVWID0gImZjYmVkZjUwNThlZjg2MTNkZDAyYWFjNjJlZjAwZDU1ZGNmZWFkZDciCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UKIAogRVhUUkFfT0VDTUFLRSA9ICItREdMTV9FTkFCTEVfRVhQRVJJTUVOVEFMPU9OIgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMTYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E2OTFjNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAibGliZ3Bob3RvMiBhbGxvd3MgeW91IHRvIGFjY2VzcyBkaWdpdGFsIGNhbWVyYXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEiCi0KLURFUEVORFMgPSAibGlidG9vbCBqcGVnIHZpcnR1YWwvbGlidXNiMCBsaWJleGlmIHpsaWIgbGlieG1sMiIKLQotIyBUaGUgLmZkaSBhbmQgLnJ1bGVzIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIHdpdGg6Ci0jICBsaWJncGhvdG8yLTIuNS44L3BhY2thZ2luZy9nZW5lcmljJCBxZW11LWFybSAtcyAxMDQ4NTc2IC1yIDIuNi4yNCAtTCAvT0UvYW5nc3Ryb20tZGV2L3N0YWdpbmcvYXJtdjV0ZS1hbmdzdHJvbS1saW51eC1nbnVlYWJpLyAubGlicy9wcmludC1jYW1lcmEtbGlzdAotIyBUaGV5IGFyZSByZWxlYXNlIHNwZWNpZmljLCBzbyBwbGVhc2UgcmVnZW4gd2hlbiBhZGRpbmcgbmV3IHJlbGVhc2VzCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dwaG90by9saWJncGhvdG8yLSR7UFZ9LnRhci5iejI7bmFtZT1saWJncGhvdG8yIFwKLSAgICAgICAgICAgZmlsZTovLzEwLWNhbWVyYS1saWJncGhvdG8yLWRldmljZS5mZGkgXAotICAgICAgICAgICBmaWxlOi8vMTAtY2FtZXJhLWxpYmdwaG90bzIuZmRpIFwKLSAgICAgICAgICAgZmlsZTovLzQwLWxpYmdwaG90bzIucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAotIgotCi1TUkNfVVJJW2xpYmdwaG90bzIubWQ1c3VtXSA9ICIwODRkMjIwZDA3OGQyOGMwYzdhM2JhMTNmNDQ3NjEyOCIKLVNSQ19VUklbbGliZ3Bob3RvMi5zaGEyNTZzdW1dID0gImU3NTc0MTZkMTYyM2UwMWE5ZDBkMjk0YjJlNzkwMTYyZTQzNGMwOTY0ZjUwZDNiN2ZmMWEzNDI0YjYyYTI5MDYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLWRyaXZlcnM9YWxsIHVkZXZzY3JpcHRkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IGFjX2N2X2xpYl9sdGRsX2x0X2RsY2FsbGVyX3JlZ2lzdGVyPXllcyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2RdID0gIiwtLXdpdGhvdXQtZ2RsaWIsZ2QiCi1QQUNLQUdFQ09ORklHW3NlcmlhbF0gPSAiLS1lbmFibGUtc2VyaWFsLC0tZGlzYWJsZS1zZXJpYWwsbG9ja2RldiIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCi0gICAgY2QgJHtTfS9saWJncGhvdG8yX3BvcnQvCi0gICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCi0gICAgY2QgJHtTfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2hhbC9mZGkvaW5mb3JtYXRpb24vMjB0aGlyZHBhcnR5Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5mZGkgJHtEfSR7ZGF0YWRpcn0vaGFsL2ZkaS9pbmZvcm1hdGlvbi8yMHRoaXJkcGFydHkvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KLX0KLQotUEFDS0FHRVMgPSsgImxpYmdwaG90b3BvcnQgbGliZ3Bob3RvMi1jYW1saWJzIgotRklMRVNfbGliZ3Bob3RvMi1jYW1saWJzID0gIiR7bGliZGlyfS9saWJncGhvdG8yKi8qLyouc28qIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZ3Bob3RvMi1jYW1saWJzIgotCi1GSUxFU19saWJncGhvdG9wb3J0ID0gIiR7bGliZGlyfS9saWJncGhvdG8yX3BvcnQuc28uKiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qICR7ZGF0YWRpcn0vaGFsIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vKi8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovKi8qLmxhIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwaG90bzJfcG9ydC8wLjEyLjAvdmNhbWVyYS9SRUFETUUudHh0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Bob3RvMi9saWJncGhvdG8yXzIuNS4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWM1ZWQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMTcuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJsaWJncGhvdG8yIGFsbG93cyB5b3UgdG8gYWNjZXNzIGRpZ2l0YWwgY2FtZXJhcyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNDQ4ZDM2NzZiYzBkZTAwNDA2YWYyMjdkMzQxYTRkMSIKKworREVQRU5EUyA9ICJsaWJ0b29sIGpwZWcgdmlydHVhbC9saWJ1c2IwIGxpYmV4aWYgemxpYiBsaWJ4bWwyIgorCisjIFRoZSAuZmRpIGFuZCAucnVsZXMgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aDoKKyMgIGxpYmdwaG90bzItMi41LjgvcGFja2FnaW5nL2dlbmVyaWMkIHFlbXUtYXJtIC1zIDEwNDg1NzYgLXIgMi42LjI0IC1MIC9PRS9hbmdzdHJvbS1kZXYvc3RhZ2luZy9hcm12NXRlLWFuZ3N0cm9tLWxpbnV4LWdudWVhYmkvIC5saWJzL3ByaW50LWNhbWVyYS1saXN0CisjIFRoZXkgYXJlIHJlbGVhc2Ugc3BlY2lmaWMsIHNvIHBsZWFzZSByZWdlbiB3aGVuIGFkZGluZyBuZXcgcmVsZWFzZXMKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZ3Bob3RvL2xpYmdwaG90bzItJHtQVn0udGFyLmJ6MjtuYW1lPWxpYmdwaG90bzIgXAorICAgICAgICAgICBmaWxlOi8vMTAtY2FtZXJhLWxpYmdwaG90bzItZGV2aWNlLmZkaSBcCisgICAgICAgICAgIGZpbGU6Ly8xMC1jYW1lcmEtbGliZ3Bob3RvMi5mZGkgXAorICAgICAgICAgICBmaWxlOi8vNDAtbGliZ3Bob3RvMi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtQU1fUE9fU1VCRElSUy5wYXRjaCBcCisiCisKK1NSQ19VUklbbGliZ3Bob3RvMi5tZDVzdW1dID0gImFlNzhlN2E3OTM2YTY5NjJjM2EyMmIyNTZiZWUxODY5IgorU1JDX1VSSVtsaWJncGhvdG8yLnNoYTI1NnN1bV0gPSAiNDE3NDY0ZjBhMzEzZmE5MzdlOGE3MWNkZjE4YTM3MWNmMDFlNzUwODMwMTk1Y2Q2M2FlMzFkYTBkMDkyYjU1NSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtZHJpdmVycz1hbGwgdWRldnNjcmlwdGRpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgYWNfY3ZfbGliX2x0ZGxfbHRfZGxjYWxsZXJfcmVnaXN0ZXI9eWVzIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnZF0gPSAiLC0td2l0aG91dC1nZGxpYixnZCIKK1BBQ0tBR0VDT05GSUdbc2VyaWFsXSA9ICItLWVuYWJsZS1zZXJpYWwsLS1kaXNhYmxlLXNlcmlhbCxsb2NrZGV2IgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L2xpYmdwaG90bzJfcG9ydC9wby8KKyAgICBjZCAke1N9L2xpYmdwaG90bzJfcG9ydC8KKyAgICBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlICR7RVhUUkFfQVVUT1JFQ09ORn0gJGFjcGF0aHMKKyAgICBjZCAke1N9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaGFsL2ZkaS9pbmZvcm1hdGlvbi8yMHRoaXJkcGFydHkKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLmZkaSAke0R9JHtkYXRhZGlyfS9oYWwvZmRpL2luZm9ybWF0aW9uLzIwdGhpcmRwYXJ0eS8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworfQorCitQQUNLQUdFUyA9KyAibGliZ3Bob3RvcG9ydCBsaWJncGhvdG8yLWNhbWxpYnMiCitGSUxFU19saWJncGhvdG8yLWNhbWxpYnMgPSAiJHtsaWJkaXJ9L2xpYmdwaG90bzIqLyovKi5zbyoiCitSUkVDT01NRU5EU18ke1BOfSA9ICJsaWJncGhvdG8yLWNhbWxpYnMiCisKK0ZJTEVTX2xpYmdwaG90b3BvcnQgPSAiJHtsaWJkaXJ9L2xpYmdwaG90bzJfcG9ydC5zby4qIgorCitGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2LyogJHtkYXRhZGlyfS9oYWwiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8qLyovLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi8qLyoubGEiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3Bob3RvMl9wb3J0LzAuMTIuMC92Y2FtZXJhL1JFQURNRS50eHQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1nZnhfMi4wLjI1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtZ2Z4XzIuMC4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDc3YTBiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtZ2Z4XzIuMC4yNS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIlNETCBncmFwaGljcyBkcmF3aW5nIHByaW1pdGl2ZXMgYW5kIG90aGVyIHN1cHBvcnQgZnVuY3Rpb25zIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJabGliIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQxZGUyMWYwYjcwODMwZTI5OTkwNWVhYzM0MTkwODQiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJzZGwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mZXJ6a29wcC5uZXQvU29mdHdhcmUvU0RMX2dmeC0yLjAvU0RMX2dmeC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZWEyNGVkNGI4MmZmMTMwNDgwOWMzNjM0OTRmYThlMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTU2ZWVkYzA2YjZjZjI5ZWI0OTViNmQyN2YyZGNjNTFiZjkwOWFkODIzODliYTJmYTdiZGM0ZGVjODkwNTljMCIKKworUyA9ICIke1dPUktESVJ9L1NETF9nZngtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgLS1kaXNhYmxlLW1teCBcCisiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1pbWFnZS9saWJzZGwtaW1hZ2UvY29uZmlndXJlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtaW1hZ2UvY29uZmlndXJlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtaW1hZ2UvbGlic2RsLWltYWdlL2NvbmZpZ3VyZS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtaW1hZ2UvY29uZmlndXJlLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtaW1hZ2UvbGlic2RsLWltYWdlXzEuMi4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLWltYWdlXzEuMi4xMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLWltYWdlL2xpYnNkbC1pbWFnZV8xLjIuMTIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLWltYWdlXzEuMi4xMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbC1taXhlci9jb25maWd1cmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1taXhlci9jb25maWd1cmUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwtbWl4ZXIvY29uZmlndXJlLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1taXhlci9jb25maWd1cmUucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1taXhlci9saWJzZGwtbWl4ZXJfMS4yLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtbWl4ZXJfMS4yLjEyLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsLW1peGVyXzEuMi4xMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtbWl4ZXJfMS4yLjEyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1uZXQvYW1fZm9yZWlnbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLW5ldC9hbV9mb3JlaWduLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiM2ZmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1uZXQvYW1fZm9yZWlnbi5wYXRjaApAQCAtMCwwICsxLDExIEBACitkaWZmIC1OdXJkIFNETF9uZXQtMS4yLjgvTWFrZWZpbGUuYW0gU0RMX25ldC0xLjIuOC9NYWtlZmlsZS5hbQorLS0tIFNETF9uZXQtMS4yLjgvTWFrZWZpbGUuYW0JMjAxMi0wMS0xNSAxODoyMDoxMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBTRExfbmV0LTEuMi44L01ha2VmaWxlLmFtCTIwMTQtMDgtMDEgMjE6MTg6NTIuNzIwODE1ODA3ICswMzAwCitAQCAtMSw1ICsxLDcgQEAKKyAjIE1ha2VmaWxlLmFtIGZvciB0aGUgU0RMIHNhbXBsZSBpbWFnZSBsb2FkaW5nIGxpYnJhcnkgYW5kIHZpZXdlcgorIAorK0FVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCisrCisgbGliX0xUTElCUkFSSUVTID0gbGliU0RMX25ldC5sYQorIAorIGxpYlNETF9uZXRpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9TREwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLW5ldC9saWJ0b29sMi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLW5ldC9saWJ0b29sMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzE4YTNiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtbmV0L2xpYnRvb2wyLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK0Zyb20gZjk0MTdjODY0MTgzYTBmNmQwZTkwZjY2ZjUyNTRhNjNiMDRhMDQxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmlzICdHTlV0b28nIENhcmlrbGkgPEdOVXRvb0Buby1sb2cub3JnPgorRGF0ZTogV2VkLCAxNyBPY3QgMjAxMiAyMDo1MTo1MSArMDIwMAorCistLS0KKyBjb25maWd1cmUuaW4gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCBjNDJiZDBjLi43MWE0ODI1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC00NCw2ICs0NCw4IEBAIEFDX0NBTk9OSUNBTF9IT1NUCisgZG5sIFNldHVwIGZvciBhdXRvbWFrZQorIEFNX0lOSVRfQVVUT01BS0UoU0RMX25ldCwgJFZFUlNJT04pCisgCisrZG5sIGdvdCBtYWNyb3MKKytBQ19DT05GSUdfTUFDUk9fRElSKFthY2luY2x1ZGVdKQorIGRubCBDaGVjayBmb3IgdG9vbHMKKyBBQ19QUk9HX0xJQlRPT0wKKyBBQ19QUk9HX0NDCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1uZXRfMS4yLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC1uZXRfMS4yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAyMWU1NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLW5ldF8xLjIuOC5iYgpAQCAtMCwwICsxLDIwIEBACitERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgbmV0d29ya2luZyBsaWJyYXJ5LiIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitMSUNFTlNFID0gIlpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05Y2YzZGUyZDg3MmJmNTEwZjg4ZWIyMGQwNmQ3MDBiNSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJzZGwiCisKK1NSQ19VUkkgPSAiIFwKKyAgaHR0cHM6Ly93d3cubGlic2RsLm9yZy9wcm9qZWN0cy9TRExfbmV0L3JlbGVhc2UvU0RMX25ldC0ke1BWfS50YXIuZ3ogXAorICBmaWxlOi8vbGlidG9vbDIucGF0Y2ggXAorICBmaWxlOi8vYW1fZm9yZWlnbi5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9TRExfbmV0LSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjBlNjRlNjFkNjU2NjJkYjY2YzM3OTAzNGYxMWY3MTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWY0YTdhOGJiODg0Zjc5M2MyNzhhYzNmMzcxM2JlNDE5ODBjNWVlZGNjZWNmZjAyNjA0MTEzNDc3MTRmYWNiNCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwtdHRmXzIuMC4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLXR0Zl8yLjAuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsLXR0Zl8yLjAuMTEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsLXR0Zl8yLjAuMTEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1pbWFnZV8yLjAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1pbWFnZV8yLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGViMzUyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwyLWltYWdlXzIuMC4zLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIGltYWdlIGxpYnJhcnkgdjIiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1hODU1YTllYjU1MDdmYzU1NmU2NzIwODBjNGI0MjhjYSIKKworREVQRU5EUyA9ICJ0aWZmIHpsaWIgbGlicG5nIGpwZWcgdmlydHVhbC9saWJzZGwyIGxpYndlYnAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnL3Byb2plY3RzL1NETF9pbWFnZS9yZWxlYXNlL1NETDJfaW1hZ2UtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImM2YmFmNmRmYTgwZmE4YTY2ODUzNjYxYTM2YTYwMzRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1MTBjMjVkYTczNWZmY2Q4Y2UzYjY1MDczMTUwZmY0ZjdmOTQ5M2I4NjZlODViODM3MzgwODNiNTU2ZDIzNjgiCisKK1MgPSAiJHtXT1JLRElSfS9TREwyX2ltYWdlLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworIyBEaXNhYmxlIHRoZSBydW4tdGltZSBsb2FkaW5nIG9mIHRoZSBsaWJzIGFuZCBicmluZyBiYWNrIHRoZSBzb25hbWUgZGVwZW5kZW5jaWVzLgorRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtanBnLXNoYXJlZCAtLWRpc2FibGUtcG5nLXNoYXJlZCAtZGlzYWJsZS10aWYtc2hhcmVkIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIG1ha2UgYXV0b3JlY29uZiBoYXBweQorICAgIHRvdWNoICR7U30vTkVXUyAke1N9L1JFQURNRSAke1N9L0FVVEhPUlMgJHtTfS9DaGFuZ2VMb2cKKyAgICAjIFJlbW92aW5nIHRoZXNlIGZpbGVzIGZpeGVzIGEgbGlidG9vbCB2ZXJzaW9uIG1pc21hdGNoLgorICAgIHJtIC1mICR7U30vYWNpbmNsdWRlL2xpYnRvb2wubTQKKyAgICBybSAtZiAke1N9L2FjaW5jbHVkZS9zZGwyLm00CisgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvcGtnLm00CisgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvbHR+b2Jzb2xldGUubTQKKyAgICBybSAtZiAke1N9L2FjaW5jbHVkZS9sdG9wdGlvbnMubTQKKyAgICBybSAtZiAke1N9L2FjaW5jbHVkZS9sdHN1Z2FyLm00CisgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvbHR2ZXJzaW9uLm00Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzZGwtbWl4ZXIvbGlic2RsMi1taXhlcl8yLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1taXhlcl8yLjAuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLW1peGVyL2xpYnNkbDItbWl4ZXJfMi4wLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1taXhlcl8yLjAuMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwyLW5ldF8yLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1uZXRfMi4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhOTZmZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi1uZXRfMi4wLjEuYmIKQEAgLTAsMCArMSwyNyBAQAorREVTQ1JJUFRJT04gPSAiU2ltcGxlIERpcmVjdE1lZGlhIExheWVyIG5ldHdvcmtpbmcgbGlicmFyeS4iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1mZTlkNTJhNzg1ODVhNjUyMjQ3NzY4NzU1MTBlZDEyNyIKKworU1JDX1VSSSA9ICIgXAorICBodHRwczovL3d3dy5saWJzZGwub3JnL3Byb2plY3RzL1NETF9uZXQvcmVsZWFzZS9TREwyX25ldC0ke1BWfS50YXIuZ3ogXAorIgorUyA9ICIke1dPUktESVJ9L1NETDJfbmV0LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YzFkOWQxY2ZhNjMzMDFiMTQxY2I1YzBkZTJlYTdjNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNWNlOGE3ZTVhMjNkYWZlODE3N2M4ZGY2ZTZjNzliNjc0OWEwM2ZmZjFlODE5Njc0MmQzNTcxNjU3NjA5ZDIxIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIGNyZWF0ZSBkdW1teSBmaWxlcyB3aGljaCBhdXRvdG9vbHMgY29uc2lkZXIgYXMgbWFuZGF0b3J5CisgICAgdG91Y2ggJHtTfS9ORVdTICR7U30vUkVBRE1FICR7U30vQVVUSE9SUyAke1N9L0NoYW5nZUxvZyAgCisKKyAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgZm9yIG1hY3JvIGluIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00OyBkbworICAgICAgICBlY2hvICR7U30vYWNpbmNsdWRlL21hY3JvCisgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRtYWNybworICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGYvYXV0b21ha2VfZm9yZWlnbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi10dGYvYXV0b21ha2VfZm9yZWlnbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi9hdXRvbWFrZV9mb3JlaWduLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbDItdHRmL2F1dG9tYWtlX2ZvcmVpZ24ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsMi10dGYvdXNlLnBrZy1jb25maWcuZm9yLmZyZWV0eXBlMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic2RsLXR0Zi9saWJzZGwyLXR0Zi91c2UucGtnLWNvbmZpZy5mb3IuZnJlZXR5cGUyLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbDItdHRmL3VzZS5wa2ctY29uZmlnLmZvci5mcmVldHlwZTIucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGZfMi4wLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwyLXR0Zl8yLjAuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNkbC10dGYvbGlic2RsMi10dGZfMi4wLjE0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbDItdHRmXzIuMC4xNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLVVzZS1vdmVycmlkZS1jb25zaXN0ZW50bHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtVXNlLW92ZXJyaWRlLWNvbnNpc3RlbnRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDRiZGMyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLVVzZS1vdmVycmlkZS1jb25zaXN0ZW50bHkucGF0Y2gKQEAgLTAsMCArMSwxNDcgQEAKK0Zyb20gMGFjZmI2N2Y5OWZkOGQ2YWYzMjMzMTFmZWU4YzA4MTE2Mjk1YjE0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgU2VwIDIwMTggMTg6MjE6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFVzZSBvdmVycmlkZSBjb25zaXN0ZW50bHkKKworTWFrZSBjbGFuZysrIGhhcHB5CitlcnJvcjogJ3NldEFwcGxpY2F0aW9uVGl0bGUnIG92ZXJyaWRlcyBhIG1lbWJlciBmdW5jdGlvbiBidXQgaXMgbm90IG1hcmtlZCAnb3ZlcnJpZGUnIFstV2Vycm9yLC1XaW5jb25zaXN0ZW50LW1pc3Npbmctb3ZlciByaWRlXQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWktbmN1cnNlcy9wdWxsLzY5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9OQ0FwcGxpY2F0aW9uLmggfCA0NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTkNBcHBsaWNhdGlvbi5oIGIvc3JjL05DQXBwbGljYXRpb24uaAoraW5kZXggZTI0YzNlYi4uMDllNDcwOCAxMDA2NDQKKy0tLSBhL3NyYy9OQ0FwcGxpY2F0aW9uLmgKKysrKyBiL3NyYy9OQ0FwcGxpY2F0aW9uLmgKK0BAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKKyAgICAgICogUmVpbXBsZW1lbnRlZCBmcm9tIFlBcHBsaWNhdGlvbi4KKyAgICAgICoqLworICAgICB2aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoIGNvbnN0IHN0ZDo6c3RyaW5nICYgbGFuZ3VhZ2UsCistCQkJICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBlbmNvZGluZyA9IHN0ZDo6c3RyaW5nKCkgKTsKKysJCQkgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIGVuY29kaW5nID0gc3RkOjpzdHJpbmcoKSApIG92ZXJyaWRlOworIAorICAgICAvKioKKyAgICAgICogT3BlbiBhIGRpcmVjdG9yeSBzZWxlY3Rpb24gYm94IGFuZCBwcm9tcHQgdGhlIHVzZXIgZm9yIGFuIGV4aXN0aW5nCitAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CisgICAgICAqIEltcGxlbWVudGVkIGZyb20gWUFwcGxpY2F0aW9uLgorICAgICAgKiovCisgICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgYXNrRm9yRXhpc3RpbmdEaXJlY3RvcnkoIGNvbnN0IHN0ZDo6c3RyaW5nICYgc3RhcnREaXIsCistCQkJCQkgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBoZWFkbGluZSApOworKwkJCQkJICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgaGVhZGxpbmUgKSBvdmVycmlkZTsKKyAKKyAgICAgLyoqCisgICAgICAqIE9wZW4gYSBmaWxlIHNlbGVjdGlvbiBib3ggYW5kIHByb21wdCB0aGUgdXNlciBmb3IgYW4gZXhpc3RpbmcgZmlsZS4KK0BAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKKyAgICAgICoqLworICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGFza0ZvckV4aXN0aW5nRmlsZSggY29uc3Qgc3RkOjpzdHJpbmcgJiBzdGFydFdpdGgsCisgCQkJCSAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIGZpbHRlciwKKy0JCQkJICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgaGVhZGxpbmUgKTsKKysJCQkJICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgaGVhZGxpbmUgKSBvdmVycmlkZTsKKyAKKyAgICAgLyoqCisgICAgICAqIE9wZW4gYSBmaWxlIHNlbGVjdGlvbiBib3ggYW5kIHByb21wdCB0aGUgdXNlciBmb3IgYSBmaWxlIHRvIHNhdmUgZGF0YQorQEAgLTExOSwyOCArMTE5LDI4IEBAIHB1YmxpYzoKKyAgICAgICoqLworICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGFza0ZvclNhdmVGaWxlTmFtZSggY29uc3Qgc3RkOjpzdHJpbmcgJiBzdGFydFdpdGgsCisgCQkJCSAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIGZpbHRlciwKKy0JCQkJICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgaGVhZGxpbmUgKTsKKysJCQkJICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgaGVhZGxpbmUgKSBvdmVycmlkZTsKKyAKKyAgICAgLyoqCisgICAgICAqIEJlZXAuCisgICAgICAqCisgICAgICAqIFJlaW1wbGVtZW50ZWQgZnJvbSBZQXBwbGljYXRpb24uCisgICAgICAqKi8KKy0gICAgdmlydHVhbCB2b2lkIGJlZXAoKTsKKysgICAgdmlydHVhbCB2b2lkIGJlZXAoKSBvdmVycmlkZTsKKyAKKyAgICAgLyoqCisgICAgICAqIFJlZHJhdyB0aGUgc2NyZWVuLgorICAgICAgKgorICAgICAgKiBSZWltcGxlbWVudGVkIGZyb20gWUFwcGxpY2F0aW9uLgorICAgICAgKiovCistICAgIHZpcnR1YWwgdm9pZCByZWRyYXdTY3JlZW4oKTsKKysgICAgdmlydHVhbCB2b2lkIHJlZHJhd1NjcmVlbigpIG92ZXJyaWRlOworIAorICAgICAvKioKKyAgICAgICogSW5pdGlhbGl6ZSB0aGUgKHRleHQpIGNvbnNvbGUga2V5Ym9hcmQuCisgICAgICAqCisgICAgICAqIFJlaW1wbGVtZW50ZWQgZnJvbSBZQXBwbGljYXRpb24uCisgICAgICAqKi8KKy0gICAgdmlydHVhbCB2b2lkIGluaXRDb25zb2xlS2V5Ym9hcmQoKTsKKysgICAgdmlydHVhbCB2b2lkIGluaXRDb25zb2xlS2V5Ym9hcmQoKSBvdmVycmlkZTsKKyAKKyAgICAgLyoqCisgICAgICAqIFNldCB0aGUgKHRleHQpIGNvbnNvbGUgZm9udCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgZW5jb2RpbmcgZXRjLgorQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CisgCQkJCSBjb25zdCBzdGQ6OnN0cmluZyAmIGZvbnQsCisgCQkJCSBjb25zdCBzdGQ6OnN0cmluZyAmIHNjcmVlbl9tYXAsCisgCQkJCSBjb25zdCBzdGQ6OnN0cmluZyAmIHVuaWNvZGVfbWFwLAorLQkJCQkgY29uc3Qgc3RkOjpzdHJpbmcgJiBsYW5ndWFnZSApOworKwkJCQkgY29uc3Qgc3RkOjpzdHJpbmcgJiBsYW5ndWFnZSApIG92ZXJyaWRlOworIAorICAgICAvKioKKyAgICAgICogUnVuIGEgc2hlbGwgY29tbWFuZCAodHlwaWNhbGx5IGFuIGludGVyYWN0aXZlIHByb2dyYW0gdXNpbmcgTkN1cnNlcykKK0BAIC0xNjUsNyArMTY1LDcgQEAgcHVibGljOgorICAgICAgKgorICAgICAgKiBSZWltcGxlbWVudGVkIGZyb20gWUFwcGxpY2F0aW9uLgorICAgICAgKiovCistICAgIHZpcnR1YWwgaW50IHJ1bkluVGVybWluYWwoIGNvbnN0IHN0ZDo6c3RyaW5nICYgY29tbWFuZCApOworKyAgICB2aXJ0dWFsIGludCBydW5JblRlcm1pbmFsKCBjb25zdCBzdGQ6OnN0cmluZyAmIGNvbW1hbmQgKSBvdmVycmlkZTsKKyAKKyAKKyAgICAgLy8vIEB7CitAQCAtMTgzLDMzICsxODMsMzMgQEAgcHVibGljOgorICAgICAvLworICAgICAvLyBBbGwgaW1wbGVtZW50ZWQgZnJvbSBZQXBwbGljYXRpb24uCisgCistICAgIHZpcnR1YWwgaW50CSBkaXNwbGF5V2lkdGgoKTsKKy0gICAgdmlydHVhbCBpbnQJIGRpc3BsYXlIZWlnaHQoKTsKKy0gICAgdmlydHVhbCBpbnQJIGRpc3BsYXlEZXB0aCgpOworLSAgICB2aXJ0dWFsIGxvbmcgZGlzcGxheUNvbG9ycygpOworKyAgICB2aXJ0dWFsIGludAkgZGlzcGxheVdpZHRoKCkgb3ZlcnJpZGU7CisrICAgIHZpcnR1YWwgaW50CSBkaXNwbGF5SGVpZ2h0KCkgb3ZlcnJpZGU7CisrICAgIHZpcnR1YWwgaW50CSBkaXNwbGF5RGVwdGgoKSBvdmVycmlkZTsKKysgICAgdmlydHVhbCBsb25nIGRpc3BsYXlDb2xvcnMoKSBvdmVycmlkZTsKKyAKKy0gICAgdmlydHVhbCBpbnQJIGRlZmF1bHRXaWR0aCgpOworLSAgICB2aXJ0dWFsIGludAkgZGVmYXVsdEhlaWdodCgpOworKyAgICB2aXJ0dWFsIGludAkgZGVmYXVsdFdpZHRoKCkgb3ZlcnJpZGU7CisrICAgIHZpcnR1YWwgaW50CSBkZWZhdWx0SGVpZ2h0KCkgb3ZlcnJpZGU7CisgCistICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNb2RlKCkJCQl7IHJldHVybiB0cnVlOyB9CisrICAgIHZpcnR1YWwgYm9vbCBpc1RleHRNb2RlKCkgb3ZlcnJpZGUJCQl7IHJldHVybiB0cnVlOyB9CisgCistICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZVN1cHBvcnQoKQkJeyByZXR1cm4gZmFsc2U7IH0KKysgICAgdmlydHVhbCBib29sIGhhc0ltYWdlU3VwcG9ydCgpIG92ZXJyaWRlIAkJeyByZXR1cm4gZmFsc2U7IH0KKyAKKy0gICAgdmlydHVhbCBib29sIGhhc0ljb25TdXBwb3J0KCkJCXsgcmV0dXJuIGZhbHNlOyB9CisrICAgIHZpcnR1YWwgYm9vbCBoYXNJY29uU3VwcG9ydCgpIG92ZXJyaWRlCQl7IHJldHVybiBmYWxzZTsgfQorIAorLSAgICB2aXJ0dWFsIGJvb2wgaGFzQW5pbWF0aW9uU3VwcG9ydCgpCQl7IHJldHVybiBmYWxzZTsgfQorKyAgICB2aXJ0dWFsIGJvb2wgaGFzQW5pbWF0aW9uU3VwcG9ydCgpCW92ZXJyaWRlCXsgcmV0dXJuIGZhbHNlOyB9CisgCistICAgIHZpcnR1YWwgYm9vbCBoYXNGdWxsVXRmOFN1cHBvcnQoKTsKKy0gICAgdmlydHVhbCBib29sIHJpY2hUZXh0U3VwcG9ydHNUYWJsZSgpCXsgcmV0dXJuIGZhbHNlOyB9CisrICAgIHZpcnR1YWwgYm9vbCBoYXNGdWxsVXRmOFN1cHBvcnQoKSBvdmVycmlkZTsKKysgICAgdmlydHVhbCBib29sIHJpY2hUZXh0U3VwcG9ydHNUYWJsZSgpIG92ZXJyaWRlCXsgcmV0dXJuIGZhbHNlOyB9CisgCistICAgIHZpcnR1YWwgYm9vbCBsZWZ0SGFuZGVkTW91c2UoKQkJeyByZXR1cm4gZmFsc2U7IH0KKysgICAgdmlydHVhbCBib29sIGxlZnRIYW5kZWRNb3VzZSgpIG92ZXJyaWRlCQl7IHJldHVybiBmYWxzZTsgfQorICAgICAKKyAgICAgLyoqCisgICAgICAqIFNldCB0aGUgYXBwbGljYXRpb24gdGl0bGUKKyAgICAgICoKKyAgICAgICogUmVpbXBsZW1lbnRlZCBmcm9tIFlBcHBsaWNhdGlvbi4KKyAgICAgICoqLworLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXBwbGljYXRpb25UaXRsZShjb25zdCBzdGQ6OnN0cmluZyYgdGl0bGUpOworKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXBwbGljYXRpb25UaXRsZShjb25zdCBzdGQ6OnN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworIH07CisgCisgCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtdXNlLV9ubF9tc2dfY2F0X2NudHItb25seS13aXRoLWdsaWJjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAxLXVzZS1fbmxfbXNnX2NhdF9jbnRyLW9ubHktd2l0aC1nbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUzNzc0Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDEtdXNlLV9ubF9tc2dfY2F0X2NudHItb25seS13aXRoLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA0Yjg0ZjI0M2E3MGE4YzA3ZjZhMzhkYWQzYzk0MTFmYTcwN2YyNWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgNCBNYXIgMjAxOCAxNzowODo0MyAtMDgwMAotU3ViamVjdDogW1BBVENIXSB1c2UgX25sX21zZ19jYXRfY250ciBvbmx5IHdpdGggZ2xpYmMKLQotVGhlIG11c2wgbGliYyBwcm92aWRlcyBsaWJpbnRsIChzaW1pbGFyIHRvIGdsaWJjKQotYnV0IGRvZXMgbm90IHVzZSB0aGUgc2FtZSBpbnRlcm5hbHMsCi1zbyBldmVuIHRob3VnaCB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBnZXR0ZXh0Ci10aGUgbGliaW50bCBpbmNsdWRlZCB3aXRoIHRoZSBsaWJjIGRvZXMgbm90IGRlZmluZQotX25sX21zZ19jYXRfY250ciBhbmQgaXQgZG9lcyBub3QgbmVlZCB0by4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvTkNpMThuLmggfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9OQ2kxOG4uaCBiL3NyYy9OQ2kxOG4uaAotaW5kZXggMTY1YjBlNy4uYmZjNGVkNyAxMDA2NDQKLS0tLSBhL3NyYy9OQ2kxOG4uaAotKysrIGIvc3JjL05DaTE4bi5oCi1AQCAtNTksMTIgKzU5LDEzIEBAIGlubGluZSB2b2lkIHNldFRleHRkb21haW4oIGNvbnN0IGNoYXIgKiBkb21haW4gKQotICAgICBiaW5kdGV4dGRvbWFpbiggZG9tYWluLCAgWVNldHRpbmdzOjpsb2NhbGVEaXIoKS5jX3N0cigpICk7Ci0gICAgIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KCBkb21haW4sICJVVEYtOCIgKTsKLSAgICAgdGV4dGRvbWFpbiggZG9tYWluICk7Ci0tCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgICAvLyBNYWtlIGNoYW5nZSBrbm93bgotICAgICB7Ci0gCWV4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLSAJKytfbmxfbXNnX2NhdF9jbnRyOwotICAgICB9Ci0rI2VuZGlmCi0gfQotIAotIAotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAyLURlZmluZS1vd24tcmVzaXplLWluLU5DUGFkLWFuZC1maXgtcGFyYW0tdHlwZS1vZi1TZXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzLzAwMDItRGVmaW5lLW93bi1yZXNpemUtaW4tTkNQYWQtYW5kLWZpeC1wYXJhbS10eXBlLW9mLVNldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjVjYmU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAyLURlZmluZS1vd24tcmVzaXplLWluLU5DUGFkLWFuZC1maXgtcGFyYW0tdHlwZS1vZi1TZXQucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAxNjJhMDg5OWYxZGFjZDgzMDA3YzRlODJiOTAzNGY1NTYxMGQ4YzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBTZXAgMjAxOCAxOTowMTo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gRGVmaW5lIG93biByZXNpemUgaW4gTkNQYWQgYW5kIGZpeCBwYXJhbSB0eXBlIG9mCisgU2V0TGFiZWwoKQorCitFeHBsaWNpdGx5IG92ZXJyaWRlIHJlc2l6ZSgpIHRvIGF2b2lkIGNvbmZsaWN0cyBmcm9tIE5DdXJzZXNXaW5kb3cKK2RlZmluaXRpb24gc2luY2UgdGhlcmUgaXMgYW5vdGhlciByZXNpemUgZGVmaW5pdGlvbiBhcyB3ZWxsCisKK0ZpeGVzCitzcmMvTkNQYWQuaDoxNjQ6MTg6IGVycm9yOiAnTkNQYWQ6OnJlc2l6ZScgaGlkZXMgb3ZlcmxvYWRlZCB2aXJ0dWFsIGZ1bmN0aW9uIFstV2Vycm9yLC1Xb3ZlcmxvYWRlZC12aXJ0dWFsXQorCitOQ1RhYmxlUGFkLmg6MTMyOjE4OiBlcnJvcjogJ05DVGFibGVUYWc6OlNldExhYmVsJyBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgZnVuY3Rpb24gWy1XZXJyb3IsLVdvdmVybG9hZGVkLXZpcnR1YWxdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGlieXVpL2xpYnl1aS1uY3Vyc2VzL3B1bGwvNjldCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL05DUGFkLmggICAgICB8IDEgKworIHNyYy9OQ1RhYmxlUGFkLmggfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9OQ1BhZC5oIGIvc3JjL05DUGFkLmgKK2luZGV4IDMyOGM0YWEuLmQ4ZmIzMjQgMTAwNjQ0CistLS0gYS9zcmMvTkNQYWQuaAorKysrIGIvc3JjL05DUGFkLmgKK0BAIC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIHZvaWQgRGVzdHdpbiggTkN1cnNlc1dpbmRvdyAqIGR3aW4gKTsKKyAKKyAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZSggd3N6ZSBuc3plICk7CisrICAgIHZpcnR1YWwgaW50IHJlc2l6ZSggaW50IGxpbmVzLCBpbnQgY29sdW1ucyApIHsgcmV0dXJuIE5DdXJzZXNXaW5kb3c6OnJlc2l6ZShsaW5lcywgY29sdW1ucyApO30KKyAgICAgdmlydHVhbCB2b2lkIHdSZWNvZGVkKCk7CisgICAgIHZpcnR1YWwgdm9pZCBzZXREaXJ0eSgpIHsgZGlydHkgPSB0cnVlOyB9CisgCitkaWZmIC0tZ2l0IGEvc3JjL05DVGFibGVQYWQuaCBiL3NyYy9OQ1RhYmxlUGFkLmgKK2luZGV4IGM0NTA1MjkuLjM3NTY3OTYgMTAwNjQ0CistLS0gYS9zcmMvTkNUYWJsZVBhZC5oCisrKysgYi9zcmMvTkNUYWJsZVBhZC5oCitAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKKyAKKyAgICAgdmlydHVhbCB+TkNUYWJsZVRhZygpIHt9CisgCistICAgIHZpcnR1YWwgdm9pZCBTZXRMYWJlbCggY29uc3QgTkNzdHJpbmcgJiApIHsgLypOT09QKi87IH0KKysgICAgdmlydHVhbCB2b2lkIFNldExhYmVsKCBjb25zdCBOQ2xhYmVsICYgKSB7IC8qTk9PUCovOyB9CisgCisgICAgIHZpcnR1YWwgdm9pZCBEcmF3QXQoIE5DdXJzZXNXaW5kb3cgJiB3LCBjb25zdCB3cmVjdCBhdCwKKyAJCQkgTkNUYWJsZVN0eWxlICYgdGFibGVTdHlsZSwKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMy1TaW1wbGlmeS1uY3Vyc2VzLWZpbmRpbmctbW9kdWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlcy8wMDAzLVNpbXBsaWZ5LW5jdXJzZXMtZmluZGluZy1tb2R1bGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUyMGFjNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXMvMDAwMy1TaW1wbGlmeS1uY3Vyc2VzLWZpbmRpbmctbW9kdWxlLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gYzIyOTFmZTI4ZGM1NjgyZjgxODA0OTQxNTEyNDMxNjQyOTc1Y2YyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KK0RhdGU6IE1vbiwgMjkgT2N0IDIwMTggMTg6MTc6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gU2ltcGxpZnkgbmN1cnNlcyBmaW5kaW5nIG1vZHVsZQorCitDTWFrZSB3aWxsIGF1dG9tYXRpY2FsbHkgbG9vayBpbiB0aGUgcmlnaHQgbG9jYXRpb25zLCB0aGVyZSBpcyBubyBuZWVkIHRvCityZS1pbXBsZW1lbnQgdGhlIGxvZ2ljIHdpdGggYSBmb3IgbG9vcCBhbmQgTk9fREVGQVVMVF9QQVRILgorCitJdCBpcyBhbHJlYWR5IGRvbmUgbGlrZSB0aGlzIHRvIGZpbGUgdGhlIGhlYWRlcnMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGlieXVpL2xpYnl1aS1uY3Vyc2VzL3B1bGwvNzNdCitTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CistLS0KKyBjbWFrZS9Nb2R1bGVzL0ZpbmRDdXJzZXM2LmNtYWtlIHwgOCArKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbWFrZS9Nb2R1bGVzL0ZpbmRDdXJzZXM2LmNtYWtlIGIvY21ha2UvTW9kdWxlcy9GaW5kQ3Vyc2VzNi5jbWFrZQoraW5kZXggMGJmMDJjMy4uZTI5OGQ1ZCAxMDA2NDQKKy0tLSBhL2NtYWtlL01vZHVsZXMvRmluZEN1cnNlczYuY21ha2UKKysrKyBiL2NtYWtlL01vZHVsZXMvRmluZEN1cnNlczYuY21ha2UKK0BAIC01LDExICs1LDkgQEAKKyAjICBDVVJTRVM2X0xJQlJBUklFUyAtIFRoZSBsaWJyYXJpZXMgbmVlZGVkIHRvIHVzZSBDdXJzZXM2CisgIyAgQ1VSU0VTNl9ERUZJTklUSU9OUyAtIENvbXBpbGVyIHN3aXRjaGVzIHJlcXVpcmVkIGZvciB1c2luZyBDdXJzZXM2CisgCistRk9SRUFDSChwYXRoICR7Q01BS0VfTElCUkFSWV9QQVRIfSAvdXNyLyR7TElCX0RJUn0pCistICBGSU5EX0xJQlJBUlkoQ1VSU0VTNl9OQ1VSU0VTV19MSUJSQVJZIE5BTUVTIG5jdXJzZXN3IFBBVEhTICR7cGF0aH0vbmN1cnNlczYgJHtwYXRofSBOT19ERUZBVUxUX1BBVEgpCistICBGSU5EX0xJQlJBUlkoQ1VSU0VTNl9QQU5FTFdfTElCUkFSWSBOQU1FUyBwYW5lbHcgUEFUSFMgJHtwYXRofS9uY3Vyc2VzNiAke3BhdGh9IE5PX0RFRkFVTFRfUEFUSCkKKy0gIEZJTkRfTElCUkFSWShDVVJTRVM2X1RJTkZPX0xJQlJBUlkgTkFNRVMgdGluZm8gUEFUSFMgJHtwYXRofS9uY3Vyc2VzNiAke3BhdGh9IE5PX0RFRkFVTFRfUEFUSCkKKy1FTkRGT1JFQUNIKCkKKytGSU5EX0xJQlJBUlkoQ1VSU0VTNl9OQ1VSU0VTV19MSUJSQVJZIE5BTUVTIG5jdXJzZXN3IFBBVEhfU1VGRklYRVMgbmN1cnNlczYpCisrRklORF9MSUJSQVJZKENVUlNFUzZfUEFORUxXX0xJQlJBUlkgTkFNRVMgcGFuZWx3IFBBVEhfU1VGRklYRVMgbmN1cnNlczYpCisrRklORF9MSUJSQVJZKENVUlNFUzZfVElORk9fTElCUkFSWSBOQU1FUyB0aW5mbyBQQVRIX1NVRkZJWEVTIG5jdXJzZXM2KQorIAorIFNFVChDVVJTRVM2X0xJQlJBUklFUyAke0NVUlNFUzZfTkNVUlNFU1dfTElCUkFSWX0gJHtDVVJTRVM2X1BBTkVMV19MSUJSQVJZfSkKKyAjIHRpbmZvIGlzIG9wdGlvbmFsIChpbiAxMi4xIGlzIG5vdCB0aGVyZSkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlc19naXQuYmIKaW5kZXggNTc4YzcxMy4uMThlYTJlOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWktbmN1cnNlc19naXQuYmIKQEAgLTUsMTMgKzUsMTUgQEAKICIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWktbmN1cnNlcy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c2UtX25sX21zZ19jYXRfY250ci1vbmx5LXdpdGgtZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utb3ZlcnJpZGUtY29uc2lzdGVudGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRGVmaW5lLW93bi1yZXNpemUtaW4tTkNQYWQtYW5kLWZpeC1wYXJhbS10eXBlLW9mLVNldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVNpbXBsaWZ5LW5jdXJzZXMtZmluZGluZy1tb2R1bGUucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1GaXgtdGhlLWVycm9yLW9mLWNhbi10LWZpbmQtaGVhZGVyLWZpbGUucGF0Y2giCiAKIFBWID0gIjIuNDguMytnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICI3OWI4MDRiNDVmZmM2YTBkOTJlMjhlNzkzZmYzODlhMjBiNjNiNTRiIgorU1JDUkVWID0gImM5NDFiMzIyNDZlOGIyOTUyZmNlNGZkNTc0M2Y4ZTMxODIyMmFiOTgiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKQEAgLTI5LDggKzMxLDggQEAKICAgICBta2RpciAtcCAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYjY0LwogICAgIGNwICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyogJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KICAgICBjZCAtCi0gICAgc2VkIC1pICJzI1wke1lQUkVGSVh9I1wke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgJHtTfS9DTWFrZUxpc3RzLnR4dAotICAgIHNlZCAtaSAicyMvdXNyIyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtsaWJkaXJ9L2NtYWtlL2xpYnl1aS9MaWJ5dWlMaWJyYXJ5RGVwZW5kcy1yZWxlYXNlLmNtYWtlCisgICAgc2VkIC1pIC1lICJzI1wke1lQUkVGSVh9I1wke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorICAgIHNlZCAtaSAtZSAicyMvdXNyIyR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtsaWJkaXJ9L2NtYWtlL2xpYnl1aS9MaWJ5dWlMaWJyYXJ5RGVwZW5kcy1yZWxlYXNlLmNtYWtlCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLUZpeC1HQ0MtOC13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWJhNDJlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDFlNmQ0MGZlYzE2YTk0ZDFhNGJkNDA2MzQ0MDUyNjcyMDBiN2U5NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBtYXJ4aW4gPG1saXNrYUBzdXNlLmN6PgotRGF0ZTogVHVlLCAxMCBBcHIgMjAxOCAxNToyMTo0MCArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggR0NDIDggd2FybmluZzoKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzogSW4gc3RhdGljIG1lbWJlciBmdW5jdGlvbiDigJhzdGF0aWMgdm9pZCBZRGlhbG9nOjpzaG93VGV4dChjb25zdCBzdHJpbmcmLCBib29sKeKAmToKLS9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6NjkwOjI2OiBlcnJvcjogY2F0Y2hpbmcgcG9seW1vcnBoaWMgdHlwZSDigJhjbGFzcyBZVUlFeGNlcHRpb27igJkgYnkgdmFsdWUgWy1XZXJyb3I9Y2F0Y2gtdmFsdWU9XQotICAgICBjYXRjaCAoIFlVSUV4Y2VwdGlvbiBleGNlcHRpb24gKQotICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KLS9ob21lL21hcnhpbi9Qcm9ncmFtbWluZy9saWJ5dWkvc3JjL1lEaWFsb2cuY2M6IEluIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24g4oCYc3RhdGljIGJvb2wgWURpYWxvZzo6c2hvd1JlbE5vdGVzVGV4dCgp4oCZOgotL2hvbWUvbWFyeGluL1Byb2dyYW1taW5nL2xpYnl1aS9zcmMvWURpYWxvZy5jYzo4MTQ6MjY6IGVycm9yOiBjYXRjaGluZyBwb2x5bW9ycGhpYyB0eXBlIOKAmGNsYXNzIFlVSUV4Y2VwdGlvbuKAmSBieSB2YWx1ZSBbLVdlcnJvcj1jYXRjaC12YWx1ZT1dCi0gICAgIGNhdGNoICggWVVJRXhjZXB0aW9uIGV4Y2VwdGlvbiApCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkvcHVsbC8xMjJdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gc3JjL1lEaWFsb2cuY2MgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL1lEaWFsb2cuY2MgYi9zcmMvWURpYWxvZy5jYwotaW5kZXggOTJlNTAzMS4uOGVjZmY5MCAxMDA2NDQKLS0tLSBhL3NyYy9ZRGlhbG9nLmNjCi0rKysgYi9zcmMvWURpYWxvZy5jYwotQEAgLTY4Nyw3ICs2ODcsNyBAQCBZRGlhbG9nOjpzaG93VGV4dCggY29uc3Qgc3RkOjpzdHJpbmcgJiB0ZXh0LCBib29sIHVzZVJpY2hUZXh0ICkKLSAJZGlhbG9nLT53YWl0Rm9yRXZlbnQoKTsKLSAJZGlhbG9nLT5kZXN0cm95KCk7Ci0gICAgIH0KLS0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKLSsgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCi0gICAgIHsKLSAJLy8gRG9uJ3QgbGV0IHRoZSBhcHBsaWNhdGlvbiBkaWUganVzdCBiZWNhdXNlIGhlbHAgY291bGRuJ3QgYmUgZGlzcGxheWVkLgotIAotQEAgLTgxMSw3ICs4MTEsNyBAQCBZRGlhbG9nOjpzaG93UmVsTm90ZXNUZXh0KCkKLSAJfQotICAgICAgICAgZGlhbG9nLT5kZXN0cm95KCk7Ci0gICAgIH0KLS0gICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gZXhjZXB0aW9uICkKLSsgICAgY2F0Y2ggKCBZVUlFeGNlcHRpb24gJmV4Y2VwdGlvbiApCi0gICAgIHsKLSAgICAgICAgIC8vIERvbid0IGxldCB0aGUgYXBwbGljYXRpb24gZGllIGp1c3QgYmVjYXVzZSBSTiBjb3VsZG4ndCBiZSBkaXNwbGF5ZWQuCi0gCi0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLVVzZS1jdXJseS1icmFjZXMtZm9yLU1BS0UtdmFyaWFibGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLVVzZS1jdXJseS1icmFjZXMtZm9yLU1BS0UtdmFyaWFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJlMjQxNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLzAwMDEtVXNlLWN1cmx5LWJyYWNlcy1mb3ItTUFLRS12YXJpYWJsZS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDRlZWQzN2IxYTYxNDU4ZmM4ZTUyNTFmN2NiN2M2ZDY0ZThlOWRhOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA1IFNlcCAyMDE4IDE3OjQ4OjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBjdXJseSBicmFjZXMgZm9yIE1BS0UgdmFyaWFibGUKKworRml4ZXMgZXJyb3JzIHdpdGggbmluamEKK3wgbmluamE6IGVycm9yOiBidWlsZC5uaW5qYToxNDI6IGJhZCAkLWVzY2FwZSAobGl0ZXJhbCAkIG11c3QgYmUgd3JpdHRlbiBhcyAkJCkKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJ5dWkvbGlieXVpL3B1bGwvMTM3XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJ1aWxkdG9vbHMvTGlieXVpQ29tbW9uLmNtYWtlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkdG9vbHMvTGlieXVpQ29tbW9uLmNtYWtlIGIvYnVpbGR0b29scy9MaWJ5dWlDb21tb24uY21ha2UKK2luZGV4IGNiOTMzMDcuLmU2ZmJlZmQgMTAwNjQ0CistLS0gYS9idWlsZHRvb2xzL0xpYnl1aUNvbW1vbi5jbWFrZQorKysrIGIvYnVpbGR0b29scy9MaWJ5dWlDb21tb24uY21ha2UKK0BAIC0xMjIsOCArMTIyLDggQEAgTUFDUk8oIFNFVF9CVUlMRF9GTEFHUyApCSMgc2V0dXAgY29tcGlsZXItZmxhZ3MgZGVwZW5kaW5nIG9uIENNQUtFX0JVSUxEX1RZUEUKKyAgICAgRU5BQkxFX1RFU1RJTkcoKQorICAgICAjIGFkZCBhIHdyYXBwZXIgInRlc3RzIiB0YXJnZXQsIHRoZSBidWlsdGluICJ0ZXN0IiBjYW5ub3QgYmUgZXh0ZW5kZWQgOi0oCisgICAgIEFERF9DVVNUT01fVEFSR0VUKHRlc3RzCistICAgICAgJChNQUtFKQorLSAgICAgIENPTU1BTkQgJChNQUtFKSB0ZXN0CisrICAgICAgJHtNQUtFfQorKyAgICAgIENPTU1BTkQgJHtNQUtFfSB0ZXN0CisgICAgICkKKyAgIEVORElGICggRU5BQkxFX1RFU1RTIE9SIEVOQUJMRV9DT0RFX0NPVkVSQUdFKQorIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1Vc2UtcmVsYXRpdmUtaW5zdGFsbC1wYXRocy1mb3ItQ01ha2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS8wMDAxLVVzZS1yZWxhdGl2ZS1pbnN0YWxsLXBhdGhzLWZvci1DTWFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWExNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWkvMDAwMS1Vc2UtcmVsYXRpdmUtaW5zdGFsbC1wYXRocy1mb3ItQ01ha2UucGF0Y2gKQEAgLTAsMCArMSwxMzAgQEAKK0Zyb20gZDI0YzI1MTZhZTI1ZDBlZTE4MGMxMDIwZTUyMTE0ZWEzMjIzMDU4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KK0RhdGU6IE1vbiwgMjkgT2N0IDIwMTggMTg6MDM6NDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHJlbGF0aXZlIGluc3RhbGwgcGF0aHMgZm9yIENNYWtlCisKK0ZpbGVzIGFyZSBpbnN0YWxsZWQgdmlhIGEgc3BlY2lhbCBfUFJFRklYIHZhcmlhbnQgb2YgdGhlIElOU1RBTExfPz8/X0RJUgordmFyaWFibGUgd2hpY2ggaXMgYW4gYWJzb2x1dGUgcGF0aC4KKworVGhpcyBub3Qgb25seSBpcyByZWR1bmRhbnQgaWYgQ01BS0VfSU5UQUxMX1BSRUZJWCBpcyBzZXQgYnV0IGl0IGV2ZW4gY2F1c2VzCit0aGUgcmVzdWx0aW5nIENvbmZpZy5jbWFrZSB0byBiZSBub24gcmVsb2NhdGFibGUuIFRoaXMgbWVhbnMgaXQgY29udGFpbnMgYWJzb2x1dGUKK3BhdGhzIHRvIHRoZSBidWlsZCBob3N0LiBUaGlzIGlzIGEgcHJvYmxlbSBmb3IgY3Jvc3MgY29tcGlsYXRpb24gaW4gWW9jdG8uCisKK1RoaXMgY2hhbmdlIGdldHMgcmlkIG9mIHRoZSBhYnNvbHV0ZSBwYXRoIGFuZCByZW1vdmVzIHRoZSBubyBsb25nZXIgbmVlZGVkCitfUFJFRklYIHZhcmlhbnRzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkvcHVsbC8xNDBdCitTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CistLS0KKyBidWlsZHRvb2xzL0xpYnl1aUNvbW1vbi5jbWFrZSB8IDM1ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGR0b29scy9MaWJ5dWlDb21tb24uY21ha2UgYi9idWlsZHRvb2xzL0xpYnl1aUNvbW1vbi5jbWFrZQoraW5kZXggZTZmYmVmZC4uNWUyZmMwZCAxMDA2NDQKKy0tLSBhL2J1aWxkdG9vbHMvTGlieXVpQ29tbW9uLmNtYWtlCisrKysgYi9idWlsZHRvb2xzL0xpYnl1aUNvbW1vbi5jbWFrZQorQEAgLTI1OCwxMyArMjU4LDYgQEAgTUFDUk8oIFNFVF9FTlZJUk9OTUVOVCApCSMgc2V0dXAgdGhlIGVudmlyb25tZW50IHZhcnMKKyAKKyAgIFNFVCggSU5TVEFMTF9ET0NfRElSICIke0RPQ19ESVJ9IiApCisgCistICBGT1JFQUNIKCBwICJET0MiIExJQiBJTkNMVURFIENNQUtFIFBLR0NPTkZJRyBCVUlMRFRPT0xTICkKKy0gICAgU0VUKCB2YXIgIklOU1RBTExfJHtwfV9ESVIiICkKKy0gICAgSUYoIE5PVCBJU19BQlNPTFVURSAiJHske3Zhcn19IiApCistICAgICAgU0VUKCAke3Zhcn1fUFJFRklYICIke1lQUkVGSVh9LyR7JHt2YXJ9fSIgKQorLSAgICBFTkRJRiggTk9UIElTX0FCU09MVVRFICIkeyR7dmFyfX0iICkKKy0gIEVOREZPUkVBQ0goKQorLQorIEVORE1BQ1JPKCBTRVRfRU5WSVJPTk1FTlQgKQorIAorIE1BQ1JPKCBTRVRfU09OQU1FICkKK0BAIC0zNTksNyArMzUyLDcgQEAgTUFDUk8oIFNFVF9BVVRPRE9DUyApCQkjIGxvb2tzIGZvciBkb3h5Z2VuLCBkb3QgYW5kIGxhdGV4IGFuZCBzZXR1cCBhdXRvZG9jcyBhY2MKKyAgICAgICBJRiggSU5TVEFMTF9ET0NTIE9SIERPQ1NfT05MWSApCisgICAgICAgICBJTlNUQUxMKAorICAgICAgICAgICBGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS9kb2MvbGF0ZXgvcmVmbWFuLnBkZiIKKy0gICAgICAgICAgREVTVElOQVRJT04gIiR7SU5TVEFMTF9ET0NfRElSX1BSRUZJWH0iCisrICAgICAgICAgIERFU1RJTkFUSU9OICIke0lOU1RBTExfRE9DX0RJUn0iCisgICAgICAgICApCisgICAgICAgRU5ESUYoIElOU1RBTExfRE9DUyBPUiBET0NTX09OTFkgKQorIAorQEAgLTM3OSw3ICszNzIsNyBAQCBNQUNSTyggU0VUX0FVVE9ET0NTICkJCSMgbG9va3MgZm9yIGRveHlnZW4sIGRvdCBhbmQgbGF0ZXggYW5kIHNldHVwIGF1dG9kb2NzIGFjYworICAgICAgIEZPUkVBQ0goIHAgY3NzIGdpZiBodG1sIGpwZyBqcyBwbmcgdGFnICkKKyAgICAgICAgIElOU1RBTEwoCisgICAgICAgICAgIERJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfS9kb2MvaHRtbCIKKy0gICAgICAgICAgREVTVElOQVRJT04gIiR7SU5TVEFMTF9ET0NfRElSX1BSRUZJWH0iCisrICAgICAgICAgIERFU1RJTkFUSU9OICIke0lOU1RBTExfRE9DX0RJUn0iCisgICAgICAgICAgIEZJTEVTX01BVENISU5HIFBBVFRFUk4gIiouJHtwfSIKKyAgICAgICAgICkKKyAgICAgICBFTkRGT1JFQUNIKCkKK0BAIC02MzgsMzIgKzYzMSwzMiBAQCBNQUNSTyggU0VUX0lOU1RBTExfVEFSR0VUICkKKyAKKyBJTlNUQUxMKAorICAgRVhQT1JUICR7UFJPSkVDVE5BTUVfVUN9TGlicmFyeURlcGVuZHMKKy0gIERFU1RJTkFUSU9OICIke0lOU1RBTExfQ01BS0VfRElSX1BSRUZJWH0iCisrICBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0NNQUtFX0RJUn0iCisgICBDT01QT05FTlQgZGV2CisgKQorIAorIEZPUkVBQ0goIHAgQ29uZmlnLmNtYWtlIENvbmZpZ1ZlcnNpb24uY21ha2UgKQorICAgSU5TVEFMTCgKKyAgICAgRklMRVMgIiR7Q01BS0VfQklOQVJZX0RJUn0vJHtQUk9KRUNUTkFNRV9VQ30ke3B9IgorLSAgICBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0NNQUtFX0RJUl9QUkVGSVh9IgorKyAgICBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0NNQUtFX0RJUn0iCisgKQorIEVOREZPUkVBQ0goIHAgQ29uZmlnLmNtYWtlIENvbmZpZ1ZlcnNpb24uY21ha2UgKQorIAorIElOU1RBTEwoCisgICBGSUxFUyAiJHtDTUFLRV9CSU5BUllfRElSfS8ke1BST0pFQ1ROQU1FfS5wYyIKKy0gIERFU1RJTkFUSU9OICIke0lOU1RBTExfUEtHQ09ORklHX0RJUl9QUkVGSVh9IgorKyAgREVTVElOQVRJT04gIiR7SU5TVEFMTF9QS0dDT05GSUdfRElSfSIKKyApCisgCisgSUYoIE5PVCBQTFVHSU5OQU1FIEFORCBOT1QgRVhURU5TSU9OTkFNRSApCisgICBJTlNUQUxMKAorICAgICBESVJFQ1RPUlkgIiR7QlVJTERUT09MU19ESVJ9IgorLSAgICBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0JVSUxEVE9PTFNfRElSX1BSRUZJWH0iCisrICAgIERFU1RJTkFUSU9OICIke0lOU1RBTExfQlVJTERUT09MU19ESVJ9IgorICAgKQorIEVORElGKCBOT1QgUExVR0lOTkFNRSBBTkQgTk9UIEVYVEVOU0lPTk5BTUUgKQorIAorIElOU1RBTEwoCisgICBGSUxFUyAke0JVSUxEVE9PTFNfTElTVH0KKy0gIERFU1RJTkFUSU9OICIke0lOU1RBTExfQlVJTERUT09MU19ESVJfUFJFRklYfSIKKysgIERFU1RJTkFUSU9OICIke0lOU1RBTExfQlVJTERUT09MU19ESVJ9IgorICkKKyAKKyBFTkRNQUNSTyggU0VUX0lOU1RBTExfVEFSR0VUICkKK0BAIC03MjQsOSArNzE3LDkgQEAgTUFDUk8oIFBST0NFU1NfU09VUkNFUyApCisgICBJTlNUQUxMKAorICAgICBUQVJHRVRTICR7VEFSR0VUTElCfQorICAgICBFWFBPUlQgJHtQUk9KRUNUTkFNRV9VQ31MaWJyYXJ5RGVwZW5kcworLSAgICBMSUJSQVJZIERFU1RJTkFUSU9OICIke0lOU1RBTExfTElCX0RJUl9QUkVGSVh9IgorLSAgICBBUkNISVZFIERFU1RJTkFUSU9OICIke0lOU1RBTExfTElCX0RJUl9QUkVGSVh9IgorLSAgICBQVUJMSUNfSEVBREVSIERFU1RJTkFUSU9OICIke0lOU1RBTExfSU5DTFVERV9ESVJfUFJFRklYfSIKKysgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0xJQl9ESVJ9IgorKyAgICBBUkNISVZFIERFU1RJTkFUSU9OICIke0lOU1RBTExfTElCX0RJUn0iCisrICAgIFBVQkxJQ19IRUFERVIgREVTVElOQVRJT04gIiR7SU5TVEFMTF9JTkNMVURFX0RJUn0iCisgICAgIENPTVBPTkVOVCBkZXYKKyAgICkKKyAKK0BAIC03NDYsOSArNzM5LDkgQEAgTUFDUk8oIFBST0NFU1NfU09VUkNFUyApCisgICAgIElOU1RBTEwoCisgICAgICAgVEFSR0VUUyAke1RBUkdFVExJQn1fc3RhdGljCisgICAgICAgRVhQT1JUICR7UFJPSkVDVE5BTUVfVUN9TGlicmFyeURlcGVuZHMKKy0gICAgICBMSUJSQVJZIERFU1RJTkFUSU9OICIke0lOU1RBTExfTElCX0RJUl9QUkVGSVh9IgorLSAgICAgIEFSQ0hJVkUgREVTVElOQVRJT04gIiR7SU5TVEFMTF9MSUJfRElSX1BSRUZJWH0iCistICAgICAgUFVCTElDX0hFQURFUiBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0lOQ0xVREVfRElSX1BSRUZJWH0iCisrICAgICAgTElCUkFSWSBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0xJQl9ESVJ9IgorKyAgICAgIEFSQ0hJVkUgREVTVElOQVRJT04gIiR7SU5TVEFMTF9MSUJfRElSfSIKKysgICAgICBQVUJMSUNfSEVBREVSIERFU1RJTkFUSU9OICIke0lOU1RBTExfSU5DTFVERV9ESVJ9IgorICAgICAgIENPTVBPTkVOVCBkZXYKKyAgICAgICkKKyAKK0BAIC03NzYsNyArNzY5LDcgQEAgTUFDUk8oIFBST0NFU1NfRVhBTVBMRVMgKQorIAorICAgSU5TVEFMTCgKKyAgICAgRklMRVMgJHtFWEFNUExFU19MSVNUfQorLSAgICBERVNUSU5BVElPTiAiJHtJTlNUQUxMX0RPQ19ESVJfUFJFRklYfS9leGFtcGxlcyIKKysgICAgREVTVElOQVRJT04gIiR7SU5TVEFMTF9ET0NfRElSfS9leGFtcGxlcyIKKyAgICkKKyAKKyBFTkRNQUNSTyggUFJPQ0VTU19FWEFNUExFUyApCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aV9naXQuYmIKaW5kZXggNDI5NDUyOC4uZDMxM2ZiMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnl1aS9saWJ5dWlfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpX2dpdC5iYgpAQCAtNiwxMyArNiwxNCBAQAogICAgICAgICAgICAgICAgICAgICIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnl1aS9saWJ5dWkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LUdDQy04LXdhcm5pbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1jdXJseS1icmFjZXMtZm9yLU1BS0UtdmFyaWFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcmVsYXRpdmUtaW5zdGFsbC1wYXRocy1mb3ItQ01ha2UucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBWID0gIjMuMy4zK2dpdCIKLVNSQ1JFViA9ICIyYjYzNGNiNzgyMWUyZTc5ZGQ0YjdhNzNjYWY4ZTY3YzUwMTg5Mzc2IgotCitTUkNSRVYgPSAiNTA2NzJkYTgzNWVjOWQ1Mjc2NjMyMGE0NGEyNjc3ZTA4YTI0Yzk5YyIKK1NSQ1JFVl9GT1JNQVQgPSAiZGVmYXVsdCIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UgZ2V0dGV4dCBwa2djb25maWcKQEAgLTIyLDkgKzIzLDkgQEAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBjZCAke1N9Ci0gICAgICAgIC4vYm9vdHN0cmFwLnNoCi0gICAgICAgIGNkIC0KKyAgICAgICAgKGNkICR7U30gJiYKKyAgICAgICAgLi9ib290c3RyYXAuc2ggJiYKKyAgICAgICAgY2QgLSkKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbS8wMDAxLWNoZWNrLWZvci1saWJleGVjaW5mby1wcm92aWRpbmctYmFja3RyYWNlLUFQSXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtLzAwMDMtY2hlY2stZm9yLWxpYmV4ZWNpbmZvLXByb3ZpZGluZy1iYWNrdHJhY2UtQVBJcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbS8wMDAxLWNoZWNrLWZvci1saWJleGVjaW5mby1wcm92aWRpbmctYmFja3RyYWNlLUFQSXMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG0vMDAwMy1jaGVjay1mb3ItbGliZXhlY2luZm8tcHJvdmlkaW5nLWJhY2t0cmFjZS1BUElzLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtLzAwMDQtZml4LWNzcy11bmRlci1ndGstMy4yMC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG0vMDAwNC1maXgtY3NzLXVuZGVyLWd0ay0zLjIwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZTExZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtLzAwMDQtZml4LWNzcy11bmRlci1ndGstMy4yMC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDcyODEyODk0Y2ZkOTQ1NGQ3MGU0YjA3NTM1MzFlNDY1ODA0MTY3NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBkZ29kIDxkZ29kLm9zYUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIxIE1hciAyMDE2IDE5OjI1OjI1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjc3MgdW5kZXIgZ3RrIDMuMjAKKworVXBzdHJlYW0tU3RhdHVzOiBBcHBsaWVkIFsxXQorCitbMV0gaHR0cHM6Ly9naXQubHhkZS5vcmcvZ2l0d2ViLz9wPWx4ZGUvbHhkbS5naXQ7YT1wYXRjaDtoPTcyODEyODk0Y2ZkOTQ1NGQ3MGU0YjA3NTM1MzFlNDY1ODA0MTY3NzEKKy0tLQorIGRhdGEvdGhlbWVzL0luZHVzdHJpYWwvZ3RrLmNzcyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZGF0YS90aGVtZXMvSW5kdXN0cmlhbC9ndGsuY3NzIGIvZGF0YS90aGVtZXMvSW5kdXN0cmlhbC9ndGsuY3NzCitpbmRleCAxNzlmMGQ2Li5mOGU2NDMyIDEwMDY0NAorLS0tIGEvZGF0YS90aGVtZXMvSW5kdXN0cmlhbC9ndGsuY3NzCisrKysgYi9kYXRhL3RoZW1lcy9JbmR1c3RyaWFsL2d0ay5jc3MKK0BAIC0xNyw2ICsxNyw3IEBACisgCWNvbG9yOiAjMDAwMDAwOworIH0KKyAKKysjYm90dG9tX3BhbmUgbGFiZWwsCisgI2JvdHRvbV9wYW5lIEd0a0xhYmVsIHsKKyAJZm9udDogU2FucyAxMjsKKyAJY29sb3I6ICM5RTlEOUI7CistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtXzAuNS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2x4ZG0vbHhkbV8wLjUuMy5iYgppbmRleCA4ZTdlZmNkLi43MDEyNjZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbHhkbS9seGRtXzAuNS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9seGRtL2x4ZG1fMC41LjMuYmIKQEAgLTcsMTQgKzcsMTUgQEAKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL2x4ZG0tcGFtIGZpbGU6Ly9seGRtLXBhbS1kZWJ1ZycsICcnLCBkKX0gXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX1RZUEUiLCAiZGVidWciLCAiIiwgImZpbGU6Ly8wMDAxLWx4ZG0uY29uZi5pbi1ibGFja2xpc3Qtcm9vdC1mb3ItcmVsZWFzZS1pbWFnZXMucGF0Y2giLGQpfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxldC1hdXRvdG9vbHMtY3JlYXRlLWx4ZG0uY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrLWZvci1saWJleGVjaW5mby1wcm92aWRpbmctYmFja3RyYWNlLUFQSXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jaGVjay1mb3ItbGliZXhlY2luZm8tcHJvdmlkaW5nLWJhY2t0cmFjZS1BUElzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZml4LWNzcy11bmRlci1ndGstMy4yMC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIwNjFjYWFlNDMyNjM0ZTZkYjM4YmJkYzg0YmM2ZmZhMCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODkxZWZlZTgxYzcyYTQwMGNjNjcwM2U0MGFhNzZmM2YzODUzODMzZDA0OGI3MmVjODA1ZGEwZjkzNTY3ZjJmIgogCiBQRSA9ICIxIgogCi1ERVBFTkRTID0gInZpcnR1YWwvbGliaW50bCBpbnRsdG9vbC1uYXRpdmUgY2Fpcm8gZGJ1cyBnZGstcGl4YnVmIGdsaWItMi4wIGd0aysgdmlydHVhbC9saWJ4MTEgbGlieGNiIHBhbmdvIGlzby1jb2RlcyIKK0RFUEVORFMgPSAidmlydHVhbC9saWJpbnRsIGludGx0b29sLW5hdGl2ZSBjYWlybyBkYnVzIGdkay1waXhidWYgZ2xpYi0yLjAgZ3RrKzMgdmlydHVhbC9saWJ4MTEgbGlieGNiIHBhbmdvIGlzby1jb2RlcyIKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdGVtZCIsICIiLCAiY29uc29sZWtpdCIsIGQpfSIKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGliZXhlY2luZm8iCiAKQEAgLTI4LDcgKzI5LDcgQEAKIENGTEFHU19hcHBlbmQgPSAiIC1mbm8tYnVpbHRpbi1mb3JrIC1mbm8tYnVpbHRpbi1tZW1zZXQgLWZuby1idWlsdGluLXN0cnN0ciAiCiBMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sZXhlY2luZm8iCiAKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZ3RrMz1ubyAtLWVuYWJsZS1wYXNzd29yZD15ZXMgLS13aXRoLXggLXdpdGgteGNvbm49eGNiIFwKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZ3RrMz15ZXMgLS1lbmFibGUtcGFzc3dvcmQ9eWVzIC0td2l0aC14IC13aXRoLXhjb25uPXhjYiBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyAtLWRpc2FibGUtY29uc29sZWtpdCcsICctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCiAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgppbmRleCBjMzVhMGM3Li5mNGQyMWI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKQEAgLTM5LDcgKzM5LDYgQEAKICAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCB0aGVtZV9kaXIsICcoLiopJywgdGhlbWVfbmFtZSwgJyR7UE59IHRoZW1lIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2RpcnM9VHJ1ZSkKIH0KIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWNvcmUgJHtQTn0tY29uZmlnICR7UE59LXRoZW1lLWNsZWFybG9va3MiCiBGSUxFU18ke1BOfS1jb3JlID0gIiR7YmluZGlyfS9vcGVuYm94ICR7YmluZGlyfS9vcGVuYm94LXNlc3Npb24gJHtsaWJkaXJ9Lyoke1NPTElCU30iCiAKIEZJTEVTXyR7UE59LWx4ZGUgKz0gIiR7ZGF0YWRpcn0vbHhkZS8gXApAQCAtNTQsMyArNTMsNSBAQAogIgogCiBGSUxFU18ke1BOfS1jb25maWcgKz0gIiR7c3lzY29uZmRpcn0iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1jb3JlICR7UE59LWNvbmZpZyAke1BOfS10aGVtZS1jbGVhcmxvb2tzIHB5dGhvbiBweXhkZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9maWxlcy8wMDAxLWJtcF9yZWFkX2luZm9faGVhZGVyLXJlamVjdC1ibXAtZmlsZXMtd2l0aC1iaUJpdENvdW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvZmlsZXMvMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjZkOWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9maWxlcy8wMDAxLWJtcF9yZWFkX2luZm9faGVhZGVyLXJlamVjdC1ibXAtZmlsZXMtd2l0aC1iaUJpdENvdW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDIyNmYwN2U0YjQ5YzI3NTdiMTgxYzYyZTY4NDEwMDBjNTEyMDU0ZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogTW9uLCAxNCBBdWcgMjAxNyAxNzoyNjo1OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBibXBfcmVhZF9pbmZvX2hlYWRlcigpOiByZWplY3QgYm1wIGZpbGVzIHdpdGggYmlCaXRDb3VudCA9PSAwCi0gKCM5ODMpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS91Y2xvdXZhaW4vb3BlbmpwZWcvY29tbWl0L2JhZjBjMWFkNDU3MmRhYTg5Y2FhM2IxMjk4NWJkZDkzNTMwZjBkZDddCi1DVkU6IENWRS0yMDE3LTEyOTgyCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Jpbi9qcDIvY29udmVydGJtcC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jpbi9qcDIvY29udmVydGJtcC5jIGIvc3JjL2Jpbi9qcDIvY29udmVydGJtcC5jCi1pbmRleCBiNDllN2EwLi4yNzE1ZmRmIDEwMDY0NAotLS0tIGEvc3JjL2Jpbi9qcDIvY29udmVydGJtcC5jCi0rKysgYi9zcmMvYmluL2pwMi9jb252ZXJ0Ym1wLmMKLUBAIC0zOTIsNiArMzkyLDEwIEBAIHN0YXRpYyBPUEpfQk9PTCBibXBfcmVhZF9pbmZvX2hlYWRlcihGSUxFKiBJTiwgT1BKX0JJVE1BUElORk9IRUFERVIqIGhlYWRlcikKLSAKLSAgICAgaGVhZGVyLT5iaUJpdENvdW50ICA9IChPUEpfVUlOVDE2KWdldGMoSU4pOwotICAgICBoZWFkZXItPmJpQml0Q291bnQgfD0gKE9QSl9VSU5UMTYpKChPUEpfVUlOVDMyKWdldGMoSU4pIDw8IDgpOwotKyAgICBpZiAoaGVhZGVyLT5iaUJpdENvdW50ID09IDApIHsKLSsgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IsIGludmFsaWQgYmlCaXRDb3VudCAlZFxuIiwgMCk7Ci0rICAgICAgICByZXR1cm4gT1BKX0ZBTFNFOwotKyAgICB9Ci0gCi0gICAgIGlmIChoZWFkZXItPmJpU2l6ZSA+PSA0MFUpIHsKLSAgICAgICAgIGhlYWRlci0+YmlDb21wcmVzc2lvbiAgPSAoT1BKX1VJTlQzMilnZXRjKElOKTsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnLzAwMDEtRW5zdXJlLWNtYWtlLWZpbGVzLWFyZS1pbnN0YWxsZWQtYXQtY29tbW9uLWxvY2F0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnLzAwMDEtRW5zdXJlLWNtYWtlLWZpbGVzLWFyZS1pbnN0YWxsZWQtYXQtY29tbW9uLWxvY2F0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNWZlNjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWcvMDAwMS1FbnN1cmUtY21ha2UtZmlsZXMtYXJlLWluc3RhbGxlZC1hdC1jb21tb24tbG9jYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBmZTQ5MWMwOTE5ZjVhZGM4ZDYyNmNiOThjNWVjMTlkMGI5OWRmZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjcgU2VwIDIwMTggMjM6NDU6MDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRW5zdXJlIGNtYWtlIGZpbGVzIGFyZSBpbnN0YWxsZWQgYXQgY29tbW9uIGxvY2F0aW9uCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyogT3RoZXJ3aXNlIHJlY2VudCBwb3BwbGVyIGlzIG5vdCBhYmxlIHRvIGZpbmQgdGhlbQorKiBJbmNsdWRlIHBhdGggbmVlZHMgYWRqdXN0bWVudCB3aXRoIHRoaXMgY2hhbmdlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgIHwgMiArLQorIGNtYWtlL09wZW5KUEVHQ29uZmlnLmNtYWtlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZmY3MGEwNmYuLjIzZDJmYWM0IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTUwLDcgKzE1MCw3IEBAIGlmKE5PVCBPUEVOSlBFR19JTlNUQUxMX1BBQ0tBR0VfRElSKQorICAgIyBXZSBjb3VsZCBpbnN0YWxsICouY21ha2UgZmlsZXMgaW4gc2hhcmUvIGhvd2V2ZXIgdGhvc2UgZmlsZXMgY29udGFpbnMKKyAgICMgaGFyZGNvZGVkIHBhdGggdG8gbGlicmFyaWVzIG9uIGEgbXVsdGktYXJjaCBzeXN0ZW0gKGZlZG9yYS9kZWJpYW4pIHRob3NlCisgICAjIHBhdGggd2lsbCBiZSBkaWZmZXJlbnQgKGxpYi9pMzg2LWxpbnV4LWdudSB2cyBsaWIveDg2XzY0LWxpbnV4LWdudSkKKy0gIHNldChPUEVOSlBFR19JTlNUQUxMX1BBQ0tBR0VfRElSICIke09QRU5KUEVHX0lOU1RBTExfTElCX0RJUn0vJHtPUEVOSlBFR19JTlNUQUxMX1NVQkRJUn0iKQorKyAgc2V0KE9QRU5KUEVHX0lOU1RBTExfUEFDS0FHRV9ESVIgIiR7T1BFTkpQRUdfSU5TVEFMTF9MSUJfRElSfS9jbWFrZS8ke09QRU5KUEVHX0lOU1RBTExfU1VCRElSfSIpCisgZW5kaWYoKQorIAorIGlmIChBUFBMRSkKK2RpZmYgLS1naXQgYS9jbWFrZS9PcGVuSlBFR0NvbmZpZy5jbWFrZS5pbiBiL2NtYWtlL09wZW5KUEVHQ29uZmlnLmNtYWtlLmluCitpbmRleCBiMjAyOTRjYS4uNmEyZjRiYWYgMTAwNjQ0CistLS0gYS9jbWFrZS9PcGVuSlBFR0NvbmZpZy5jbWFrZS5pbgorKysrIGIvY21ha2UvT3BlbkpQRUdDb25maWcuY21ha2UuaW4KK0BAIC0yNiw3ICsyNiw3IEBAIGdldF9maWxlbmFtZV9jb21wb25lbnQoU0VMRl9ESVIgIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0ZJTEV9IiBQQVRIKQorIGlmKEVYSVNUUyAke1NFTEZfRElSfS9PcGVuSlBFR1RhcmdldHMuY21ha2UpCisgICAjIFRoaXMgaXMgYW4gaW5zdGFsbCB0cmVlCisgICBpbmNsdWRlKCR7U0VMRl9ESVJ9L09wZW5KUEVHVGFyZ2V0cy5jbWFrZSkKKy0gIGdldF9maWxlbmFtZV9jb21wb25lbnQoT1BFTkpQRUdfSU5DTFVERV9ST09UICIke1NFTEZfRElSfS8uLi8uLi9AT1BFTkpQRUdfSU5TVEFMTF9JTkNMVURFX0RJUkAiIEFCU09MVVRFKQorKyAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChPUEVOSlBFR19JTkNMVURFX1JPT1QgIiR7U0VMRl9ESVJ9Ly4uLy4uLy4uL0BPUEVOSlBFR19JTlNUQUxMX0lOQ0xVREVfRElSQCIgQUJTT0xVVEUpCisgICBzZXQoT1BFTkpQRUdfSU5DTFVERV9ESVJTICR7T1BFTkpQRUdfSU5DTFVERV9ST09UfSkKKyAKKyBlbHNlKCkKKy0tIAorMi4xNC40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZy8wMDAyLURvLW5vdC1hc2stY21ha2UtdG8tZXhwb3J0LWJpbmFyaWVzLXRoZXktZG9uLXQtbWFrZS0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWcvMDAwMi1Eby1ub3QtYXNrLWNtYWtlLXRvLWV4cG9ydC1iaW5hcmllcy10aGV5LWRvbi10LW1ha2UtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYTEzY2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWcvMDAwMi1Eby1ub3QtYXNrLWNtYWtlLXRvLWV4cG9ydC1iaW5hcmllcy10aGV5LWRvbi10LW1ha2UtLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNDY4MWRlMDdlMjFmMTdhYTI4NzEwZDNhNTFmYWJlN2RhNjA0NjNmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI4IFNlcCAyMDE4IDAwOjM4OjUwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBhc2sgY21ha2UgdG8gZXhwb3J0IGJpbmFyaWVzIC0gdGhleSBkb24ndCBtYWtlIGl0CisgZGVwZW5kYW50cyBzeXNyb290cworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgc3JjL2Jpbi9qcDIvQ01ha2VMaXN0cy50eHQgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9qcDIvQ01ha2VMaXN0cy50eHQgYi9zcmMvYmluL2pwMi9DTWFrZUxpc3RzLnR4dAoraW5kZXggNDMyNGMzNmQuLjJjMTFmZTAyIDEwMDY0NAorLS0tIGEvc3JjL2Jpbi9qcDIvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9iaW4vanAyL0NNYWtlTGlzdHMudHh0CitAQCAtNjYsNyArNjYsNiBAQCBmb3JlYWNoKGV4ZSBvcGpfZGVjb21wcmVzcyBvcGpfY29tcHJlc3Mgb3BqX2R1bXApCisgICBlbmRpZigpCisgICAjIEluc3RhbGwgZXhlCisgICBpbnN0YWxsKFRBUkdFVFMgJHtleGV9CistICAgIEVYUE9SVCBPcGVuSlBFR1RhcmdldHMKKyAgICAgREVTVElOQVRJT04gJHtPUEVOSlBFR19JTlNUQUxMX0JJTl9ESVJ9IENPTVBPTkVOVCBBcHBsaWNhdGlvbnMKKyAgICkKKyAgIGlmKE9QSl9VU0VfRFNZTVVUSUwpCistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZjFjNDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiT3BlbkpQRUcgbGlicmFyeSBpcyBhbiBvcGVuLXNvdXJjZSBKUEVHIDIwMDAgY29kZWMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5qcGVnLm9yZyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjQ4ODc4YjQ4NDBkN2JhYmFhZGUxMzAzZTdmMTA4YyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdWNsb3V2YWluLyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ibXBfcmVhZF9pbmZvX2hlYWRlci1yZWplY3QtYm1wLWZpbGVzLXdpdGgtYmlCaXRDb3VuLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjY5YmIwYjE3NTQ3NmYzYWRkY2MwZDAzYmQ5YTk3YjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZkZGJjZTVhNjE4ZTkxMGUwM2FkMDBkNjZlN2ZjZDA5Y2M2ZWUzMDdjZTY5OTMyNjY2ZDU0YzczYjdjNmU3YiIKLQotaW5oZXJpdCBjbWFrZQotCi1ERVBFTkRTID0gImxpYnBuZyB0aWZmIGxjbXMgemxpYiIKLQotIyBzdGFuZGFyZCBwYXRoIGZvciAqLmNtYWtlCi1FWFRSQV9PRUNNQUtFICs9ICItRE9QRU5KUEVHX0lOU1RBTExfUEFDS0FHRV9ESVI9JHtiYXNlbGlifS9jbWFrZSBcCi0gICAgICAgICAgICAgICAgICAtRE9QRU5KUEVHX0lOU1RBTExfTElCX0RJUjpQQVRIPSR7bGliZGlyfSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UvKi5jbWFrZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTBkNTVlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMy4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW5KUEVHIGxpYnJhcnkgaXMgYW4gb3Blbi1zb3VyY2UgSlBFRyAyMDAwIGNvZGVjIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuanBlZy5vcmciCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NDg4NzhiNDg0MGQ3YmFiYWFkZTEzMDNlN2YxMDhjIgorCitERVBFTkRTID0gImxpYnBuZyB0aWZmIGxjbXMgemxpYiIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vdWNsb3V2YWluL29wZW5qcGVnLmdpdCBcCisgICAgZmlsZTovLzAwMDEtRW5zdXJlLWNtYWtlLWZpbGVzLWFyZS1pbnN0YWxsZWQtYXQtY29tbW9uLWxvY2F0aW9uLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1Eby1ub3QtYXNrLWNtYWtlLXRvLWV4cG9ydC1iaW5hcmllcy10aGV5LWRvbi10LW1ha2UtLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIwODFkZTRiMTVmNTRjYjQ0ODIwMzViN2JmNWUzZmI0NDNlNGJjODRiIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL2ZpbGVzLzAwMDEtdGlnZXJ2bmMtcmVtb3ZlLWluY2x1ZGVkaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaAppbmRleCAxMmM0Mzc2Li5mMDA1NmQ2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gNGI0MjNjZDJlNWU0Mjk2YWJjYTNiZTU1M2JmNjRkOGNjMjg3MTgwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDdmMTc1NjE4YTBiMDgxNzcxNGVhNTU3YzllOTNmMjJmMzI3NDIxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjAgSnVsIDIwMTcgMTc6MDk6MDUgKzA4MDAKK0RhdGU6IFR1ZSwgMzEgSnVsIDIwMTggMTY6Mzk6NTIgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAxLzRdIHRpZ2Vydm5jOiByZW1vdmUgaW5jbHVkZWRpcgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTE1LDI4ICsxNSwyOCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtIGIvdW5peC94c2VydmVyL2h3L3ZuYy9NYWtlZmlsZS5hbQotaW5kZXggMGQ2YTRhYy4uODU0ZjA3OCAxMDA2NDQKK2luZGV4IDQ3MDQyNGIuLmVlMThiZjkgMTAwNjQ0CiAtLS0gYS91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtCiArKysgYi91bml4L3hzZXJ2ZXIvaHcvdm5jL01ha2VmaWxlLmFtCi1AQCAtMjIsNyArMjIsNyBAQCBsaWJ2bmNjb21tb25fbGFfU09VUkNFUyA9ICQoSERSUykgXAorQEAgLTIzLDcgKzIzLDcgQEAgbGlidm5jY29tbW9uX2xhX1NPVVJDRVMgPSAkKEhEUlMpIFwKICAKLSBsaWJ2bmNjb21tb25fbGFfQ1BQRkxBR1MgPSAtRFZFTkRPUl9SRUxFQVNFPSIkKFZFTkRPUl9SRUxFQVNFKSIgXAorIGxpYnZuY2NvbW1vbl9sYV9DUFBGTEFHUyA9IC1EVkVORE9SX1JFTEVBU0U9IiQoVkVORE9SX1JFTEVBU0UpIiAtSSQoVElHRVJWTkNfU1JDRElSKS91bml4L2NvbW1vbiBcCiAgCS1EVkVORE9SX1NUUklORz0iXCIkKFZFTkRPUl9TVFJJTkcpXCIiIC1JJChUSUdFUlZOQ19TUkNESVIpL2NvbW1vbiAtVUhBVkVfQ09ORklHX0ggXAogLQktSSQoVElHRVJWTkNfU1JDRElSKS91bml4L3ZuY2NvbmZpZyAkKFhWTkNfQ1BQRkxBR1MpICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSAtSSQoaW5jbHVkZWRpcikgXAogKwktSSQoVElHRVJWTkNfU1JDRElSKS91bml4L3ZuY2NvbmZpZyAkKFhWTkNfQ1BQRkxBR1MpICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfSBcCiAgCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCiAgCiAgYmluX1BST0dSQU1TID0gWHZuYwotQEAgLTQyLDcgKzQyLDcgQEAgWHZuY19DUFBGTEFHUyA9ICQoWFZOQ19DUFBGTEFHUykgLURUSUdFUlZOQyAtRE5PX01PRFVMRV9FWFRTIFwKK0BAIC00Myw3ICs0Myw3IEBAIFh2bmNfQ1BQRkxBR1MgPSAkKFhWTkNfQ1BQRkxBR1MpIC1EVElHRVJWTkMgLUROT19NT0RVTEVfRVhUUyBcCiAgCS1VSEFWRV9DT05GSUdfSCBcCiAgCS1EWEZyZWU4NlNlcnZlciAtRFZFTkRPUl9SRUxFQVNFPSIkKFZFTkRPUl9SRUxFQVNFKSIgXAotIAktRFZFTkRPUl9TVFJJTkc9IlwiJChWRU5ET1JfU1RSSU5HKVwiIiAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gXAorIAktRFZFTkRPUl9TVFJJTkc9IlwiJChWRU5ET1JfU1RSSU5HKVwiIiAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gLUkkKFRJR0VSVk5DX1NSQ0RJUikvdW5peC9jb21tb24gXAogLQktSSQodG9wX3NyY2RpcikvaW5jbHVkZSAke1hTRVJWRVJMSUJTX0NGTEFHU30gLUkkKGluY2x1ZGVkaXIpCiArCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlICR7WFNFUlZFUkxJQlNfQ0ZMQUdTfQogIAogIFh2bmNfTERBREQgPSAkKFhWTkNfTElCUykgbGlidm5jY29tbW9uLmxhICQoQ09NTU9OX0xJQlMpIFwKICAJJChYU0VSVkVSX0xJQlMpICQoWFNFUlZFUl9TWVNfTElCUykgJChYVk5DX1NZU19MSUJTKSAtbFgxMQotQEAgLTYyLDcgKzYyLDcgQEAgbGlidm5jX2xhX0NQUEZMQUdTID0gJChYVk5DX0NQUEZMQUdTKSAtSSQoVElHRVJWTkNfU1JDRElSKS9jb21tb24gLVVIQVZFX0NPTkZJR18KK0BAIC02NCw3ICs2NCw3IEBAIGxpYnZuY19sYV9DUFBGTEFHUyA9ICQoWFZOQ19DUFBGTEFHUykgLUkkKFRJR0VSVk5DX1NSQ0RJUikvY29tbW9uIC1VSEFWRV9DT05GSUdfCiAgCS1JJCh0b3Bfc3JjZGlyKS9ody94ZnJlZTg2L29zLXN1cHBvcnQgXAogIAktSSQodG9wX3NyY2RpcikvaHcveGZyZWU4Ni9vcy1zdXBwb3J0L2J1cyBcCiAgCS1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDA1LVJlbW92ZS1JTklUQVJHUy1mcm9tLXhzZXJ2ZXIxMTkucGF0Y2gucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvZmlsZXMvMDAwNS1SZW1vdmUtSU5JVEFSR1MtZnJvbS14c2VydmVyMTE5LnBhdGNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjM0MmM2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy9maWxlcy8wMDA1LVJlbW92ZS1JTklUQVJHUy1mcm9tLXhzZXJ2ZXIxMTkucGF0Y2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGU0ZWM5OTI5ODQ5ODNhYzkxMDdlZmFlMWYxY2M1NTIwMDdlNDIyOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaXNoYWwgQmlzd2FzIDx2c2hsYmlzd2FzQHltYWlsLmNvbT4KLURhdGU6IE1vbiwgOCBNYXkgMjAxNyAxMTowNjoxMSArMDUzMAotU3ViamVjdDogW1BBVENIXSBSZW1vdmUgSU5JVEFSR1MgZnJvbSB4c2VydmVyMTE5LnBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotLS0tCi0gdW5peC94c2VydmVyMTE5LnBhdGNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdW5peC94c2VydmVyMTE5LnBhdGNoIGIvdW5peC94c2VydmVyMTE5LnBhdGNoCi1pbmRleCA2MTRmMTA0Li43YWRmMzE0IDEwMDY0NAotLS0tIGEvdW5peC94c2VydmVyMTE5LnBhdGNoCi0rKysgYi91bml4L3hzZXJ2ZXIxMTkucGF0Y2gKLUBAIC02Niw3ICs2Niw3IEBAIGRpZmYgLXVwIHhzZXJ2ZXIvbWkvbWlpbml0ZXh0LmMueHNlcnZlcjExNi1yZWJhc2VkIHhzZXJ2ZXIvbWkvbWlpbml0ZXh0LmMKLSAgI2luY2x1ZGUgImdsb2JhbHMuaCIKLSAgCi0gKyNpZmRlZiBUSUdFUlZOQwotLStleHRlcm4gdm9pZCB2bmNFeHRlbnNpb25Jbml0KElOSVRBUkdTKTsKLSsrZXh0ZXJuIHZvaWQgdm5jRXh0ZW5zaW9uSW5pdCh2b2lkKTsKLSArI2VuZGlmCi0gKwotICAvKiBUaGUgZm9sbG93aW5nIGlzIG9ubHkgYSBzbWFsbCBmaXJzdCBzdGVwIHRvd2FyZHMgcnVuLXRpbWUKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Njk3NDVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy90aWdlcnZuY18xLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaWdlclZOQyByZW1vdGUgZGlzcGxheSBzeXN0ZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnRpZ2Vydm5jLmNvbS8iCi1MSUNFTlNFID0gIkdQTHYyKyIKLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJ4c2VydmVyLXhvcmcgZ251dGxzIGpwZWcgbGlieHRzdCBnZXR0ZXh0LW5hdGl2ZSBmbHRrIgotUkRFUEVORFNfJHtQTn0gPSAiY2hrY29uZmlnIGNvcmV1dGlscyBoaWNvbG9yLWljb24tdGhlbWUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuVFhUO21kNT03NWIwMmMyODcyNDIxMzgwYmJkNDc3ODFkMmJkNzVkMyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGNtYWtlCi1CID0gIiR7U30iCi0KLVNSQ1JFViA9ICI0ZDZlMWI4MzA2YThjY2E4YWQ1ZTE1ZmY4MjAxZjZlYTI0NDU5Y2ZkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vVGlnZXJWTkMvdGlnZXJ2bmMuZ2l0O2JyYW5jaD0xLjgtYnJhbmNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGlnZXJ2bmMtcmVtb3ZlLWluY2x1ZGVkaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1kby1ub3QtYnVpbGQtdGVzdHMtc3ViLWRpcmVjdG9yeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWFkZC1taXNzaW5nLWR5bmFtaWMtbGlicmFyeS10by1GTFRLX0xJQlJBUklFUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXRpZ2Vydm5jLWFkZC1mUElDLW9wdGlvbi10by1DT01QSUxFX0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUmVtb3ZlLUlOSVRBUkdTLWZyb20teHNlcnZlcjExOS5wYXRjaC5wYXRjaCBcCi0iCi0KLSMgS2VlcCBzeW5jIHdpdGggeG9yZy1zZXJ2ZXIgaW4gb2UtY29yZQotWE9SR19QTiA/PSAieG9yZy1zZXJ2ZXIiCi1YT1JHX1BWID89ICIxLjE5LjMiCi1TUkNfVVJJICs9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL3hzZXJ2ZXIvJHtYT1JHX1BOfS0ke1hPUkdfUFZ9LnRhci5iejI7bmFtZT14b3JnIgotWE9SR19TID0gIiR7V09SS0RJUn0vJHtYT1JHX1BOfS0ke1hPUkdfUFZ9IgotU1JDX1VSSVt4b3JnLm1kNXN1bV0gPSAiMDE1ZDJmYzRiOWYyYmZlN2E2MjZlZGI2M2E2MmM2NWUiCi1TUkNfVVJJW3hvcmcuc2hhMjU2c3VtXSA9ICI2NzdhODE2NmUwMzQ3NDcxOTIzOGRmZTM5NmNlNjczYzQyMzQ3MzU0NjRkNmRhZGYyOTU5YjYwMGQyMGU1YTk4IgotCi0jIEl0IGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgWG9yZyBzb3VyY2UgZm9yIHRoZQotIyBtYWNoaW5lIG9uIHdoaWNoIHlvdSBhcmUgYnVpbGRpbmcgVGlnZXJWTkMuCi1YU0VSVkVSX1NPVVJDRV9ESVI9IiR7U30vdW5peC94c2VydmVyIgotCi1kb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF94c2VydmVyIgotZG9fcGF0Y2hfeHNlcnZlciAoKSB7Ci0gICAgZm9yIHN1YmRpciBpbiBYZXh0IHhrYiBHTCBody94cXVhcnR6L2J1bmRsZSBody94ZnJlZTg2L2NvbW1vbjsgZG8KLSAgICAgICAgaW5zdGFsbCAtZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vJHN1YmRpcgotICAgIGRvbmUKLQotICAgIGZvciBzdWJkaXIgaW4gaHcvZG14L2RvYyBtYW4gZG9jIGh3L2RteC9kb3h5Z2VuOyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7WFNFUlZFUl9TT1VSQ0VfRElSfS8kc3ViZGlyCi0gICAgZG9uZQotCi0gICAgc291cmNlcz0iaHcveHF1YXJ0ei9idW5kbGUvY3BwcnVsZXMuaW4gbWFuL1hzZXJ2ZXIubWFuIGRvYy9zbWFydHNjaGVkIFwKLSAgICAgICAgICAgICBody9kbXgvZG94eWdlbi9kb3h5Z2VuLmNvbmYuaW4geHNlcnZlci5lbnQuaW4geGtiL1JFQURNRS5jb21waWxlZCBcCi0gICAgICAgICAgICAgaHcveGZyZWU4Ni94b3JnY29uZi5jcHAgaHcveGZyZWU4Ni9Yb3JnLnNoLmluIgotICAgIGZvciBpIGluICR7c291cmNlc307IGRvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1hPUkdfU30vJGkgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9LyRpOwotICAgIGRvbmUKLQotICAgIGNkICR7WE9SR19TfQotICAgIGZpbmQgLiAtdHlwZSBmIHwgZWdyZXAgJy4qXC4oY3xofGFtfGFjfGluY3xtNHxoLmlufHBjLmlufG1hbi5wcmV8cGx8dHh0KSQnIHwgXAotICAgIHhhcmdzIHRhciBjZiAtIHwgKGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfSAmJiB0YXIgeGYgLSkKLQotICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQotICAgIHhzZXJ2ZXJwYXRjaD0iJHtTfS91bml4L3hzZXJ2ZXIxMTkucGF0Y2giCi0gICAgZWNobyAiQXBwbHkgJHhzZXJ2ZXJwYXRjaCIKLSAgICBwYXRjaCAtcDEgLWIgLS1zdWZmaXggLnZuYyA8ICR4c2VydmVycGF0Y2gKLX0KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS14b3JnIC0tZGlzYWJsZS14bmVzdCAtLWRpc2FibGUteHZmYiAtLWRpc2FibGUtZG14IFwKLSAgICAgICAgLS1kaXNhYmxlLXh3aW4gLS1kaXNhYmxlLXhlcGh5ciAtLWRpc2FibGUta2RyaXZlIC0td2l0aC1waWMgXAotICAgICAgICAtLWRpc2FibGUtc3RhdGljIC0tZGlzYWJsZS14aW5lcmFtYSBcCi0gICAgICAgIC0td2l0aC14a2Itb3V0cHV0PSR7bG9jYWxzdGF0ZWRpcn0vbGliL3hrYiBcCi0gICAgICAgIC0tZGlzYWJsZS1nbHggLS1kaXNhYmxlLWRyaSAtLWRpc2FibGUtZHJpMiBcCi0gICAgICAgIC0tZGlzYWJsZS1jb25maWctaGFsIFwKLSAgICAgICAgLS1kaXNhYmxlLWNvbmZpZy11ZGV2IFwKLSAgICAgICAgLS13aXRob3V0LWR0cmFjZSBcCi0gICAgICAgIC0tZGlzYWJsZS11bml0LXRlc3RzIFwKLSAgICAgICAgLS1kaXNhYmxlLWRldmVsLWRvY3MgXAotICAgICAgICAtLWRpc2FibGUtc2VsZWN0aXZlLXdlcnJvciBcCi0gICAgICAgIC0tZGlzYWJsZS14c2htZmVuY2UgXAotICAgICAgICAtLWRpc2FibGUtY29uZmlnLXVkZXYgXAotICAgICAgICAtLWRpc2FibGUtZHJpMyBcCi0gICAgICAgIC0tZGlzYWJsZS1saWJ1bndpbmQgXAotICAgICAgICAtLXdpdGhvdXQteG1sdG8gXAotICAgICAgICAtLWVuYWJsZS1zeXN0ZW1kLWxvZ2luZD1ubyBcCi0gICAgICAgIC0tZGlzYWJsZS14aW5lcmFtYSBcCi0gICAgICAgIC0tZGlzYWJsZS14d2F5bGFuZCBcCi0iCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotICAgIG9sZGRpcj1gcHdkYAotICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQotCi0gICAgcm0gLXJmIGFjbG9jYWwtY29weS8KLSAgICBybSAtZiBhY2xvY2FsLm00Ci0KLSAgICBleHBvcnQgQUNMT0NBTERJUj0iJHtYU0VSVkVSX1NPVVJDRV9ESVJ9L2FjbG9jYWwtY29weSIKLSAgICBta2RpciAtcCAke0FDTE9DQUxESVJ9LwotICAgIGlmIFsgLWQgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsIF07IHRoZW4KLSAgICAgICAgY3Atbm9lcnJvciAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvICR7QUNMT0NBTERJUn0vCi0gICAgZmkKLSAgICBpZiBbIC1kICR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsIC1hICIke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwiICE9ICIke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCIgXTsgdGhlbgotICAgICAgICBjcC1ub2Vycm9yICR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsLyAke0FDTE9DQUxESVJ9LwotICAgIGZpCi0gICAgQUNMT0NBTD0iYWNsb2NhbCAtLXN5c3RlbS1hY2Rpcj0ke0FDTE9DQUxESVJ9LyIgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzIHx8IGJiZmF0YWwgImF1dG9yZWNvbmYgZXhlY3V0aW9uIGZhaWxlZC4iCi0gICAgY2htb2QgK3ggLi9jb25maWd1cmUKLSAgICAke0NBQ0hFRF9DT05GSUdVUkVWQVJTfSAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfQotICAgIGNkICRvbGRkaXIKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQgKCkgewotICAgIG9sZGRpcj1gcHdkYAotICAgIGNkICR7WFNFUlZFUl9TT1VSQ0VfRElSfQotCi0gICAgb2VfcnVubWFrZQotCi0gICAgY2QgJG9sZGRpcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBvbGRkaXI9YHB3ZGAKLSAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vaHcvdm5jCi0KLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotICAgIGNkICRvbGRkaXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcy9leHRlbnNpb25zIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0veG9yZy9tb2R1bGVzL2V4dGVuc2lvbnMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZGM4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvdGlnZXJ2bmNfMS45LjAuYmIKQEAgLTAsMCArMSwxMzEgQEAKK0RFU0NSSVBUSU9OID0gIlRpZ2VyVk5DIHJlbW90ZSBkaXNwbGF5IHN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudGlnZXJ2bmMuY29tLyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorU0VDVElPTiA9ICJ4MTEvdXRpbHMiCitERVBFTkRTID0gInhzZXJ2ZXIteG9yZyBnbnV0bHMganBlZyBsaWJ4dHN0IGdldHRleHQtbmF0aXZlIGZsdGsiCitSREVQRU5EU18ke1BOfSA9ICJjaGtjb25maWcgY29yZXV0aWxzIGhpY29sb3ItaWNvbi10aGVtZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5UWFQ7bWQ1PTc1YjAyYzI4NzI0MjEzODBiYmQ0Nzc4MWQyYmQ3NWQzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgY21ha2UKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gIjZmMjMwMWQwOGU2NGE5NjVhZDM2YjQwMWVjOGRjMmIyNGJjNDcwNzUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9UaWdlclZOQy90aWdlcnZuYy5naXQ7YnJhbmNoPTEuOS1icmFuY2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10aWdlcnZuYy1yZW1vdmUtaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvLW5vdC1idWlsZC10ZXN0cy1zdWItZGlyZWN0b3J5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtYWRkLW1pc3NpbmctZHluYW1pYy1saWJyYXJ5LXRvLUZMVEtfTElCUkFSSUVTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtdGlnZXJ2bmMtYWRkLWZQSUMtb3B0aW9uLXRvLUNPTVBJTEVfRkxBR1MucGF0Y2ggXAorIgorCisjIEtlZXAgc3luYyB3aXRoIHhvcmctc2VydmVyIGluIG9lLWNvcmUKK1hPUkdfUE4gPz0gInhvcmctc2VydmVyIgorWE9SR19QViA/PSAiMS4xOS42IgorU1JDX1VSSSArPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC94c2VydmVyLyR7WE9SR19QTn0tJHtYT1JHX1BWfS50YXIuYnoyO25hbWU9eG9yZyIKK1hPUkdfUyA9ICIke1dPUktESVJ9LyR7WE9SR19QTn0tJHtYT1JHX1BWfSIKK1NSQ19VUklbeG9yZy5tZDVzdW1dID0gIjNlNDc3NzdmZjAzNGEzMzFhZWQyMzIyYjA3ODY5NGE4IgorU1JDX1VSSVt4b3JnLnNoYTI1NnN1bV0gPSAiYTczMjUwMmYxZGIwMDBjZjM2YTM3NmNkMGMwMTBmZmRiZjMyZWNkZDdmMWZhMDhiYTdmNWJkZjk2MDFjYzE5NyIKKworIyBJdCBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIFhvcmcgc291cmNlIGZvciB0aGUKKyMgbWFjaGluZSBvbiB3aGljaCB5b3UgYXJlIGJ1aWxkaW5nIFRpZ2VyVk5DLgorWFNFUlZFUl9TT1VSQ0VfRElSPSIke1N9L3VuaXgveHNlcnZlciIKKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZG9fcGF0Y2hfeHNlcnZlciIKK2RvX3BhdGNoX3hzZXJ2ZXIgKCkgeworICAgIGZvciBzdWJkaXIgaW4gWGV4dCB4a2IgR0wgaHcveHF1YXJ0ei9idW5kbGUgaHcveGZyZWU4Ni9jb21tb247IGRvCisgICAgICAgIGluc3RhbGwgLWQgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9LyRzdWJkaXIKKyAgICBkb25lCisKKyAgICBmb3Igc3ViZGlyIGluIGh3L2RteC9kb2MgbWFuIGRvYyBody9kbXgvZG94eWdlbjsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAke1hTRVJWRVJfU09VUkNFX0RJUn0vJHN1YmRpcgorICAgIGRvbmUKKworICAgIHNvdXJjZXM9Imh3L3hxdWFydHovYnVuZGxlL2NwcHJ1bGVzLmluIG1hbi9Yc2VydmVyLm1hbiBkb2Mvc21hcnRzY2hlZCBcCisgICAgICAgICAgICAgaHcvZG14L2RveHlnZW4vZG94eWdlbi5jb25mLmluIHhzZXJ2ZXIuZW50LmluIHhrYi9SRUFETUUuY29tcGlsZWQgXAorICAgICAgICAgICAgIGh3L3hmcmVlODYveG9yZ2NvbmYuY3BwIGh3L3hmcmVlODYvWG9yZy5zaC5pbiIKKyAgICBmb3IgaSBpbiAke3NvdXJjZXN9OyBkbworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtYT1JHX1N9LyRpICR7WFNFUlZFUl9TT1VSQ0VfRElSfS8kaTsKKyAgICBkb25lCisKKyAgICBjZCAke1hPUkdfU30KKyAgICBmaW5kIC4gLXR5cGUgZiB8IGVncmVwICcuKlwuKGN8aHxhbXxhY3xpbmN8bTR8aC5pbnxwYy5pbnxtYW4ucHJlfHBsfHR4dCkkJyB8IFwKKyAgICB4YXJncyB0YXIgY2YgLSB8IChjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0gJiYgdGFyIHhmIC0pCisKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKyAgICB4c2VydmVycGF0Y2g9IiR7U30vdW5peC94c2VydmVyMTE5LnBhdGNoIgorICAgIGVjaG8gIkFwcGx5ICR4c2VydmVycGF0Y2giCisgICAgcGF0Y2ggLXAxIC1iIC0tc3VmZml4IC52bmMgPCAkeHNlcnZlcnBhdGNoCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUteG9yZyAtLWRpc2FibGUteG5lc3QgLS1kaXNhYmxlLXh2ZmIgLS1kaXNhYmxlLWRteCBcCisgICAgICAgIC0tZGlzYWJsZS14d2luIC0tZGlzYWJsZS14ZXBoeXIgLS1kaXNhYmxlLWtkcml2ZSAtLXdpdGgtcGljIFwKKyAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyAtLWRpc2FibGUteGluZXJhbWEgXAorICAgICAgICAtLXdpdGgteGtiLW91dHB1dD0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi94a2IgXAorICAgICAgICAtLWRpc2FibGUtZ2x4IC0tZGlzYWJsZS1kcmkgLS1kaXNhYmxlLWRyaTIgXAorICAgICAgICAtLWRpc2FibGUtY29uZmlnLWhhbCBcCisgICAgICAgIC0tZGlzYWJsZS1jb25maWctdWRldiBcCisgICAgICAgIC0td2l0aG91dC1kdHJhY2UgXAorICAgICAgICAtLWRpc2FibGUtdW5pdC10ZXN0cyBcCisgICAgICAgIC0tZGlzYWJsZS1kZXZlbC1kb2NzIFwKKyAgICAgICAgLS1kaXNhYmxlLXNlbGVjdGl2ZS13ZXJyb3IgXAorICAgICAgICAtLWRpc2FibGUteHNobWZlbmNlIFwKKyAgICAgICAgLS1kaXNhYmxlLWNvbmZpZy11ZGV2IFwKKyAgICAgICAgLS1kaXNhYmxlLWRyaTMgXAorICAgICAgICAtLWRpc2FibGUtbGlidW53aW5kIFwKKyAgICAgICAgLS13aXRob3V0LXhtbHRvIFwKKyAgICAgICAgLS1lbmFibGUtc3lzdGVtZC1sb2dpbmQ9bm8gXAorICAgICAgICAtLWRpc2FibGUteGluZXJhbWEgXAorICAgICAgICAtLWRpc2FibGUteHdheWxhbmQgXAorIgorCitkb19jb25maWd1cmVfYXBwZW5kICgpIHsKKyAgICBvbGRkaXI9YHB3ZGAKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKworICAgIHJtIC1yZiBhY2xvY2FsLWNvcHkvCisgICAgcm0gLWYgYWNsb2NhbC5tNAorCisgICAgZXhwb3J0IEFDTE9DQUxESVI9IiR7WFNFUlZFUl9TT1VSQ0VfRElSfS9hY2xvY2FsLWNvcHkiCisgICAgbWtkaXIgLXAgJHtBQ0xPQ0FMRElSfS8KKyAgICBpZiBbIC1kICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbCBdOyB0aGVuCisgICAgICAgIGNwLW5vZXJyb3IgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsLyAke0FDTE9DQUxESVJ9LworICAgIGZpCisgICAgaWYgWyAtZCAke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCAtYSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsIiAhPSAiJHtTVEFHSU5HX0RBVEFESVJ9L2FjbG9jYWwiIF07IHRoZW4KKyAgICAgICAgY3Atbm9lcnJvciAke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbC8gJHtBQ0xPQ0FMRElSfS8KKyAgICBmaQorICAgIEFDTE9DQUw9ImFjbG9jYWwgLS1zeXN0ZW0tYWNkaXI9JHtBQ0xPQ0FMRElSfS8iIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocyB8fCBiYmZhdGFsICJhdXRvcmVjb25mIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgIGNobW9kICt4IC4vY29uZmlndXJlCisgICAgJHtDQUNIRURfQ09ORklHVVJFVkFSU30gLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKyAgICBjZCAkb2xkZGlyCit9CisKK2RvX2NvbXBpbGVfYXBwZW5kICgpIHsKKyAgICBvbGRkaXI9YHB3ZGAKKyAgICBjZCAke1hTRVJWRVJfU09VUkNFX0RJUn0KKworICAgIG9lX3J1bm1ha2UKKworICAgIGNkICRvbGRkaXIKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgb2xkZGlyPWBwd2RgCisgICAgY2QgJHtYU0VSVkVSX1NPVVJDRV9ESVJ9L2h3L3ZuYworCisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBjZCAkb2xkZGlyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS94b3JnL21vZHVsZXMvZXh0ZW5zaW9ucyBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcy9leHRlbnNpb25zLy5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90c2xpYi90c2xpYl8xLjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZTk0MWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB0b3VjaHNjcmVlbiBwYW5lbCBldmVudHMiCi1ERVNDUklQVElPTiA9ICJUc2xpYiBpcyBhbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgXAotZXZlbnRzLCBhcyB3ZWxsIGFzIGEgZmlsdGVyIHN0YWNrIGZvciB0aGUgbWFuaXB1bGF0aW9uIG9mIHRob3NlIGV2ZW50cy4gXAotVHNsaWIgaXMgZ2VuZXJhbGx5IHVzZWQgb24gZW1iZWRkZWQgZGV2aWNlcyB0byBwcm92aWRlIGEgY29tbW9uIHVzZXIgXAotc3BhY2UgaW50ZXJmYWNlIHRvIHRvdWNoc2NyZWVuIGZ1bmN0aW9uYWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3RzbGliLm9yZy8iCi0KLUFVVEhPUiA9ICJNYXJ0aW4gS2VwcGxpbmdlciA8bWFydGlua0Bwb3N0ZW8uZGU+IgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWZjMTc4YmNkNDI1MDkwOTM5YThiNjM0ZDFkNmE5NTk0IFwKLSAgICBmaWxlOi8vdGVzdHMvQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IgXAotIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L3RzbGliLSR7UFZ9LnRhci54ejtkb3dubG9hZGZpbGVuYW1lPXRzbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly90cy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3RzbGliLnNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZmYzNjc4OGM5YWI3NmExMGI1ODQyMjIyN2I5NjI5ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2U0ODgwN2NhYjY1NTA3NmQ3MWExY2VlZjNlZDBhYjhhMjVkZjk4MDc0OTgxZDRhOGZkMTQ3N2VlNWY3MTBjIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2tlcmdvdGgvdHNsaWIvcmVsZWFzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiZGVib3VuY2UgZGVqaXR0ZXIgaWlyIGxpbmVhciBtZWRpYW4gcHRocmVzIHNraXAgbG93cGFzcyBpbnZlcnQgdmFyaWFuY2UgaW5wdXQgdG91Y2hraXQgd2F2ZXNoYXJlIgotUEFDS0FHRUNPTkZJR1tkZWJvdW5jZV0gPSAiLS1lbmFibGUtZGVib3VuY2UsLS1kaXNhYmxlLWRlYm91bmNlIgotUEFDS0FHRUNPTkZJR1tkZWppdHRlcl0gPSAiLS1lbmFibGUtZGVqaXR0ZXIsLS1kaXNhYmxlLWRlaml0dGVyIgotUEFDS0FHRUNPTkZJR1tpaXJdID0gIi0tZW5hYmxlLWlpciwtLWRpc2FibGUtaWlyIgotUEFDS0FHRUNPTkZJR1tsaW5lYXJdID0gIi0tZW5hYmxlLWxpbmVhciwtLWRpc2FibGUtbGluZWFyIgotUEFDS0FHRUNPTkZJR1ttZWRpYW5dID0gIi0tZW5hYmxlLW1lZGlhbiwtLWRpc2FibGUtbWVkaWFuIgotUEFDS0FHRUNPTkZJR1twdGhyZXNdID0gIi0tZW5hYmxlLXB0aHJlcywtLWRpc2FibGUtcHRocmVzIgotUEFDS0FHRUNPTkZJR1tza2lwXSA9ICItLWVuYWJsZS1za2lwLC0tZGlzYWJsZS1za2lwIgotUEFDS0FHRUNPTkZJR1tsb3dwYXNzXSA9ICItLWVuYWJsZS1sb3dwYXNzLC0tZGlzYWJsZS1sb3dwYXNzIgotUEFDS0FHRUNPTkZJR1tpbnZlcnRdID0gIi0tZW5hYmxlLWludmVydCwtLWRpc2FibGUtaW52ZXJ0IgotUEFDS0FHRUNPTkZJR1t2YXJpYW5jZV0gPSAiLS1lbmFibGUtdmFyaWFuY2UsLS1kaXNhYmxlLXZhcmlhbmNlIgotUEFDS0FHRUNPTkZJR1tpbnB1dF0gPSAiLS1lbmFibGUtaW5wdXQsLS1kaXNhYmxlLWlucHV0IgotUEFDS0FHRUNPTkZJR1t0YXR1bmddID0gIi0tZW5hYmxlLXRhdHVuZywtLWRpc2FibGUtdGF0dW5nIgotUEFDS0FHRUNPTkZJR1t0b3VjaGtpdF0gPSAiLS1lbmFibGUtdG91Y2hraXQsLS1kaXNhYmxlLXRvdWNoa2l0IgotUEFDS0FHRUNPTkZJR1t3YXZlc2hhcmVdID0gIi0tZW5hYmxlLXdhdmVzaGFyZSwtLWRpc2FibGUtd2F2ZXNoYXJlIgotUEFDS0FHRUNPTkZJR1t1Y2IxeDAwXSA9ICItLWVuYWJsZS11Y2IxeDAwLC0tZGlzYWJsZS11Y2IxeDAwIgotUEFDS0FHRUNPTkZJR1ttazcxMl0gPSAiLS1lbmFibGUtbWs3MTIsLS1kaXNhYmxlLW1rNzEyIgotUEFDS0FHRUNPTkZJR1toMzYwMF0gPSAiLS1lbmFibGUtaDM2MDAsLS1kaXNhYmxlLWgzNjAwIgotUEFDS0FHRUNPTkZJR1tkbWNdID0gIi0tZW5hYmxlLWRtYywtLWRpc2FibGUtZG1jIgotUEFDS0FHRUNPTkZJR1tsaW5lYXItaDIyMDBdID0gIi0tZW5hYmxlLWxpbmVhci1oMjIwMCwtLWRpc2FibGUtbGluZWFyLWgyMjAwIgotUEFDS0FHRUNPTkZJR1tjb3JnaV0gPSAiLS1lbmFibGUtY29yZ2ksLS1kaXNhYmxlLWNvcmdpIgotUEFDS0FHRUNPTkZJR1tjb2xsaWVdID0gIi0tZW5hYmxlLWNvbGxpZSwtLWRpc2FibGUtY29sbGllIgotUEFDS0FHRUNPTkZJR1thcmN0aWMyXSA9ICItLWVuYWJsZS1hcmN0aWMyLC0tZGlzYWJsZS1hcmN0aWMyIgotUEFDS0FHRUNPTkZJR1tkbWNfZHVzMzAwMF0gPSAiLS1lbmFibGUtZG1jX2R1czMwMDAsLS1kaXNhYmxlLWRtY19kdXMzMDAwIgotUEFDS0FHRUNPTkZJR1tjeThtcmxuLXBhbG1wcmVdID0gIi0tZW5hYmxlLWN5OG1ybG4tcGFsbXByZSwtLWRpc2FibGUtY3k4bXJsbi1wYWxtcHJlIgotUEFDS0FHRUNPTkZJR1tnYWxheF0gPSAiLS1lbmFibGUtZ2FsYXgsLS1kaXNhYmxlLWdhbGF4IgotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdHMuY29uZiAke1N9L2V0Yy90cy5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZS5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3RzbGliLnNoICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KLX0KLQotUlBST1ZJREVTX3RzbGliLWNvbmYgPSAibGlidHMtMC4wLWNvbmYiCi0KLVBBQ0tBR0VTID0rICJ0c2xpYi1jb25mIHRzbGliLXRlc3RzIHRzbGliLWNhbGlicmF0ZSB0c2xpYi11aW5wdXQiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi1jb25mID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi10ZXN0cyA9ICIxIgotREVCSUFOX05PQVVUT05BTUVfdHNsaWItY2FsaWJyYXRlID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV90c2xpYi11aW5wdXQgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gPSAidHNsaWItY29uZiIKLVJSRUNPTU1FTkRTXyR7UE59ID0gInBvaW50ZXJjYWwiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RzLyoubGEiCi1GSUxFU190c2xpYi1jb25mID0gIiR7c3lzY29uZmRpcn0vdHMuY29uZiAke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC90c2xpYi5zaCAke2RhdGFkaXJ9L3RzbGliIgotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vdHMvKi5zbyoiCi1GSUxFU190c2xpYi1jYWxpYnJhdGUgKz0gIiR7YmluZGlyfS90c19jYWxpYnJhdGUiCi1GSUxFU190c2xpYi11aW5wdXQgKz0gIiR7YmluZGlyfS90c191aW5wdXQiCi0KLUZJTEVTX3RzbGliLXRlc3RzID0gIiR7YmluZGlyfS90c19oYXJ2ZXN0ICR7YmluZGlyfS90c19wcmludCAke2JpbmRpcn0vdHNfcHJpbnRfcmF3ICR7YmluZGlyfS90c19wcmludF9tdCBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdHNfdGVzdCAke2JpbmRpcn0vdHNfdGVzdF9tdCAke2JpbmRpcn0vdHNfdmVyaWZ5ICR7YmluZGlyfS90c19maW5kZGV2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDIzYmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMTYuYmIKQEAgLTAsMCArMSw4MiBAQAorU1VNTUFSWSA9ICJBbiBhYnN0cmFjdGlvbiBsYXllciBmb3IgdG91Y2hzY3JlZW4gcGFuZWwgZXZlbnRzIgorREVTQ1JJUFRJT04gPSAiVHNsaWIgaXMgYW4gYWJzdHJhY3Rpb24gbGF5ZXIgZm9yIHRvdWNoc2NyZWVuIHBhbmVsIFwKK2V2ZW50cywgYXMgd2VsbCBhcyBhIGZpbHRlciBzdGFjayBmb3IgdGhlIG1hbmlwdWxhdGlvbiBvZiB0aG9zZSBldmVudHMuIFwKK1RzbGliIGlzIGdlbmVyYWxseSB1c2VkIG9uIGVtYmVkZGVkIGRldmljZXMgdG8gcHJvdmlkZSBhIGNvbW1vbiB1c2VyIFwKK3NwYWNlIGludGVyZmFjZSB0byB0b3VjaHNjcmVlbiBmdW5jdGlvbmFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly90c2xpYi5vcmcvIgorCitBVVRIT1IgPSAiTWFydGluIEtlcHBsaW5nZXIgPG1hcnRpbmtAcG9zdGVvLmRlPiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1mYzE3OGJjZDQyNTA5MDkzOWE4YjYzNGQxZDZhOTU5NCBcCisgICAgZmlsZTovL3Rlc3RzL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIFwKKyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20va2VyZ290aC90c2xpYi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS90c2xpYi0ke1BWfS50YXIueHo7ZG93bmxvYWRmaWxlbmFtZT10c2xpYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMjU0YTAyMmZjOGFhODlkMTY0ODQwZmU4ODY5YzI0NDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzlhNTQ2NTEzMzdhNzAxYTY2YjA3NGM2MDNjMzEzMjI1NTc5OTk1YTc5MTBlNTE5YmJjN2IxZGNkYWI5YTc1NSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRlYm91bmNlIGRlaml0dGVyIGlpciBsaW5lYXIgbWVkaWFuIHB0aHJlcyBza2lwIGxvd3Bhc3MgaW52ZXJ0IHZhcmlhbmNlIGlucHV0IHRvdWNoa2l0IHdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbZGVib3VuY2VdID0gIi0tZW5hYmxlLWRlYm91bmNlLC0tZGlzYWJsZS1kZWJvdW5jZSIKK1BBQ0tBR0VDT05GSUdbZGVqaXR0ZXJdID0gIi0tZW5hYmxlLWRlaml0dGVyLC0tZGlzYWJsZS1kZWppdHRlciIKK1BBQ0tBR0VDT05GSUdbaWlyXSA9ICItLWVuYWJsZS1paXIsLS1kaXNhYmxlLWlpciIKK1BBQ0tBR0VDT05GSUdbbGluZWFyXSA9ICItLWVuYWJsZS1saW5lYXIsLS1kaXNhYmxlLWxpbmVhciIKK1BBQ0tBR0VDT05GSUdbbWVkaWFuXSA9ICItLWVuYWJsZS1tZWRpYW4sLS1kaXNhYmxlLW1lZGlhbiIKK1BBQ0tBR0VDT05GSUdbcHRocmVzXSA9ICItLWVuYWJsZS1wdGhyZXMsLS1kaXNhYmxlLXB0aHJlcyIKK1BBQ0tBR0VDT05GSUdbc2tpcF0gPSAiLS1lbmFibGUtc2tpcCwtLWRpc2FibGUtc2tpcCIKK1BBQ0tBR0VDT05GSUdbbG93cGFzc10gPSAiLS1lbmFibGUtbG93cGFzcywtLWRpc2FibGUtbG93cGFzcyIKK1BBQ0tBR0VDT05GSUdbaW52ZXJ0XSA9ICItLWVuYWJsZS1pbnZlcnQsLS1kaXNhYmxlLWludmVydCIKK1BBQ0tBR0VDT05GSUdbdmFyaWFuY2VdID0gIi0tZW5hYmxlLXZhcmlhbmNlLC0tZGlzYWJsZS12YXJpYW5jZSIKK1BBQ0tBR0VDT05GSUdbaW5wdXRdID0gIi0tZW5hYmxlLWlucHV0LC0tZGlzYWJsZS1pbnB1dCIKK1BBQ0tBR0VDT05GSUdbdGF0dW5nXSA9ICItLWVuYWJsZS10YXR1bmcsLS1kaXNhYmxlLXRhdHVuZyIKK1BBQ0tBR0VDT05GSUdbdG91Y2hraXRdID0gIi0tZW5hYmxlLXRvdWNoa2l0LC0tZGlzYWJsZS10b3VjaGtpdCIKK1BBQ0tBR0VDT05GSUdbd2F2ZXNoYXJlXSA9ICItLWVuYWJsZS13YXZlc2hhcmUsLS1kaXNhYmxlLXdhdmVzaGFyZSIKK1BBQ0tBR0VDT05GSUdbdWNiMXgwMF0gPSAiLS1lbmFibGUtdWNiMXgwMCwtLWRpc2FibGUtdWNiMXgwMCIKK1BBQ0tBR0VDT05GSUdbbWs3MTJdID0gIi0tZW5hYmxlLW1rNzEyLC0tZGlzYWJsZS1tazcxMiIKK1BBQ0tBR0VDT05GSUdbaDM2MDBdID0gIi0tZW5hYmxlLWgzNjAwLC0tZGlzYWJsZS1oMzYwMCIKK1BBQ0tBR0VDT05GSUdbZG1jXSA9ICItLWVuYWJsZS1kbWMsLS1kaXNhYmxlLWRtYyIKK1BBQ0tBR0VDT05GSUdbbGluZWFyLWgyMjAwXSA9ICItLWVuYWJsZS1saW5lYXItaDIyMDAsLS1kaXNhYmxlLWxpbmVhci1oMjIwMCIKK1BBQ0tBR0VDT05GSUdbY29yZ2ldID0gIi0tZW5hYmxlLWNvcmdpLC0tZGlzYWJsZS1jb3JnaSIKK1BBQ0tBR0VDT05GSUdbY29sbGllXSA9ICItLWVuYWJsZS1jb2xsaWUsLS1kaXNhYmxlLWNvbGxpZSIKK1BBQ0tBR0VDT05GSUdbYXJjdGljMl0gPSAiLS1lbmFibGUtYXJjdGljMiwtLWRpc2FibGUtYXJjdGljMiIKK1BBQ0tBR0VDT05GSUdbZG1jX2R1czMwMDBdID0gIi0tZW5hYmxlLWRtY19kdXMzMDAwLC0tZGlzYWJsZS1kbWNfZHVzMzAwMCIKK1BBQ0tBR0VDT05GSUdbY3k4bXJsbi1wYWxtcHJlXSA9ICItLWVuYWJsZS1jeThtcmxuLXBhbG1wcmUsLS1kaXNhYmxlLWN5OG1ybG4tcGFsbXByZSIKK1BBQ0tBR0VDT05GSUdbZ2FsYXhdID0gIi0tZW5hYmxlLWdhbGF4LC0tZGlzYWJsZS1nYWxheCIKK1BBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RzLmNvbmYgJHtTfS9ldGMvdHMuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Byb2ZpbGUuZC8KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS90c2xpYi5zaCAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlLmQvCit9CisKK1JQUk9WSURFU190c2xpYi1jb25mID0gImxpYnRzLTAuMC1jb25mIgorCitQQUNLQUdFUyA9KyAidHNsaWItY29uZiB0c2xpYi10ZXN0cyB0c2xpYi1jYWxpYnJhdGUgdHNsaWItdWlucHV0IgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItY29uZiA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdGVzdHMgPSAiMSIKK0RFQklBTl9OT0FVVE9OQU1FX3RzbGliLWNhbGlicmF0ZSA9ICIxIgorREVCSUFOX05PQVVUT05BTUVfdHNsaWItdWlucHV0ID0gIjEiCisKK1JERVBFTkRTXyR7UE59ID0gInRzbGliLWNvbmYiCitSUkVDT01NRU5EU18ke1BOfSA9ICJwb2ludGVyY2FsIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90cy8qLmxhIgorRklMRVNfdHNsaWItY29uZiA9ICIke3N5c2NvbmZkaXJ9L3RzLmNvbmYgJHtzeXNjb25mZGlyfS9wcm9maWxlLmQvdHNsaWIuc2ggJHtkYXRhZGlyfS90c2xpYiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9L3RzLyouc28qIgorRklMRVNfdHNsaWItY2FsaWJyYXRlICs9ICIke2JpbmRpcn0vdHNfY2FsaWJyYXRlIgorRklMRVNfdHNsaWItdWlucHV0ICs9ICIke2JpbmRpcn0vdHNfdWlucHV0IgorCitGSUxFU190c2xpYi10ZXN0cyA9ICIke2JpbmRpcn0vdHNfaGFydmVzdCAke2JpbmRpcn0vdHNfcHJpbnQgJHtiaW5kaXJ9L3RzX3ByaW50X3JhdyAke2JpbmRpcn0vdHNfcHJpbnRfbXQgXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RzX3Rlc3QgJHtiaW5kaXJ9L3RzX3Rlc3RfbXQgJHtiaW5kaXJ9L3RzX3ZlcmlmeSAke2JpbmRpcn0vdHNfZmluZGRldiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdmRwYXUvbGlidmRwYXVfZ2l0LmJiCmluZGV4IDMxYmNjZTAuLmI3OWE1NjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy92ZHBhdS9saWJ2ZHBhdV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3ZkcGF1L2xpYnZkcGF1X2dpdC5iYgpAQCAtMyw3ICszLDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODNhZjg4MTFhMjg3MjdhMTNmMDQxMzJjYzMzYjdmNTgiCiAKLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGV4dCBkcmkycHJvdG8iCitERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhleHQgeG9yZ3Byb3RvIgogCiBQViA9ICIxLjEuMStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL2ljZWF1dGhfMS4wLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvaWNlYXV0aF8xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQwZGVjOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvaWNlYXV0aF8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWDExIFggY2xpZW50IHV0aWxpdGllcyIKLQotREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyB1c2VkIHRvIHR3ZWFrIGFuZCBxdWVyeSB0aGUgcnVudGltZSBjb25maWd1cmF0aW9uXAotb2YgdGhlIFggc2VydmVyLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTNmNzBhY2YzYzI3ZjVmODM0YmJjOTU0ZGY3NzVmOGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTICs9ICJsaWJpY2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNWRhYjAyZjhlNDBkNWI3MWNlMjlhMDdkYzkwMWI4YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMjE2YWYyZGVlOTliMzE4ZmNmOGJmOWEyNTk5MTUyNzNiY2IzN2E3ZjFlNzg1OWFmNGYxNWQwZWJmNmYzZjBhIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvaWNlYXV0aF8xLjAuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9pY2VhdXRoXzEuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMjk2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvaWNlYXV0aF8xLjAuOC5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlguT3JnIFgxMSBYIGNsaWVudCB1dGlsaXRpZXMiCisKK0RFU0NSSVBUSU9OID0gIkEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgdXNlZCB0byB0d2VhayBhbmQgcXVlcnkgdGhlIHJ1bnRpbWUgY29uZmlndXJhdGlvblwKK29mIHRoZSBYIHNlcnZlci4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEzZjcwYWNmM2MyN2Y1ZjgzNGJiYzk1NGRmNzc1ZjhlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworREVQRU5EUyArPSAibGliaWNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2I5Yjc5ZmEwZjk5MjgxNjFmNGJhZDk0MjczZGU3YWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZlZTIxM2EyMTcyNjVjYzc2MDUwZTQyOTNlYTcwYjk4YzMyZGNlNjUwNWM2NDIxMjI3ZWZiZGE2MmFiNjBjNiIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmV2ZF8xLjEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2JldmRfMS4xLjQuYmIKaW5kZXggYTZmYzllNy4uYjQyYzFiOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmV2ZF8xLjEuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiZXZkXzEuMS40LmJiCkBAIC01LDcgKzUsNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMDg2NjhmYTkwMDQ3MDliYTIyYzJiNzQ4MTQwOTU2YyIKIAotREVQRU5EUyArPSAibGlieGtiZmlsZSIKK0RFUEVORFMgKz0gImxpYnhrYmZpbGUgYmlzb24tbmF0aXZlIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hyZGJfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJkYl8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU5NTdlMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJkYl8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKLVNVTU1BUlkgPSAiWCBzZXJ2ZXIgcmVzb3VyY2UgZGF0YWJhc2UgdXRpbGl0eSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDExNjdjNGY1ODZiZDQxZjBjNjIxNjZkYjQzODRhNjkiCi0KLURFUEVORFMgKz0gImxpYnhtdSIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1NGM3ZTNlNTNiNGYzMzJkNDFlZDQzNTQzM2ZiZGEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczODI3YjZiYmZjOWQyN2NhMjg3ZDk1YTEyMjRjMzA2ZDcwNTNjZDdiODE1NjY0MTY5OGQ3ZGM1NDFjYTU2NWIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJkYl8xLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cmRiXzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MGMwODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHJkYl8xLjEuMS5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCitTVU1NQVJZID0gIlggc2VydmVyIHJlc291cmNlIGRhdGFiYXNlIHV0aWxpdHkiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQxMTY3YzRmNTg2YmQ0MWYwYzYyMTY2ZGI0Mzg0YTY5IgorCitERVBFTkRTICs9ICJsaWJ4bXUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NmY5NDIzZWFiNGQwNjQxYzcwODQ4ZDY2NTczN2QyZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDIzYWRlN2NkYmI0ODc5OTZiZjc3Y2JiMzJjYmU5YmRiMzRkMDA0NzQ4YTUzZGU3YTRhOTc2NjBkMjIxN2I3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zMzAuYmIKaW5kZXggMTZmOWI3OC4uYzJmZWI4MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzMzMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzMwLmJiCkBAIC0xLDYgKzEsNiBAQAogcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hvcmctYXBwLWNvbW1vbi5pbmMKIFNVTU1BUlkgPSAieHRlcm0gaXMgdGhlIHN0YW5kYXJkIHRlcm1pbmFsIGVtdWxhdG9yIGZvciB0aGUgWCBXaW5kb3cgU3lzdGVtIgotREVQRU5EUyA9ICJsaWJ4YXcgeHByb3RvIHhleHRwcm90byBsaWJ4ZXh0IGxpYnhhdSBsaWJ4aW5lcmFtYSBsaWJ4cG0gbmN1cnNlcyIKK0RFUEVORFMgPSAibGlieGF3IHhvcmdwcm90byBsaWJ4ZXh0IGxpYnhhdSBsaWJ4aW5lcmFtYSBsaWJ4cG0gbmN1cnNlcyIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veHRlcm0uaDtiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1mMDJhYjllYmRhODdiNzcwZWNmNzExZGJiMzc4NGEzMyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXJtc29jXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXJtc29jXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MzZlZjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1hcm1zb2NfMS40LjEuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIEFSTSBTT0MgZGlzcGxheSBkcml2ZXIiCitMSUNFTlNFID0gIk1JVC1YICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBjZTVkZTNiMTExMzE1ZWE2NTJhNWY3NGVjMGM2MDIiCisKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGxpYmRybSB4b3JncHJvdG8iCisKK1NSQ1JFViA9ICI4YmJkYjJhZTNiYjhlZjY0OTk5OWE4ZGEzM2RkYmUxMWEwNDc2M2I4IgorU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2RyaXZlci94Zjg2LXZpZGVvLWFybXNvYyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXRpXzE4LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV8xOC4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY5YzFhMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV8xOC4wLjEuYmIKQEAgLTAsMCArMSwyNSBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJmZjE2MDY1NTFmOTQ2MWNjZjU2NzczOWFmNjNkYyIKKworU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBBVEkgUmFkZW9uIHZpZGVvIGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAiT3Blbi1zb3VyY2UgWC5vcmcgZ3JhcGhpY3MgZHJpdmVyIGZvciBBVEkgUmFkZW9uIGdyYXBoaWNzIgorCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSBsaWJ4dm1jIGRybSBcCisgICAgICAgICAgICB2aXJ0dWFsL2xpYmdsIHhvcmdwcm90byBsaWJwY2lhY2Nlc3MiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIm9wZW5nbCIKKworQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKKworU1JDX1VSSVttZDVzdW1dID0gIjQwZTdjMGE1YTY5YWJhM2Q4NGUwOTU4ZjU4NzA1ZWE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZWEzYjgxMjdkNDU1MGI2NGY3OTc0NTdmNWE3ODUxYTU0MWZhNGVlMmNjM2YzNDViNmMxODg2YjgxNzE0YTAiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdsYW1vciIKKworUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtZXhhIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxpbnV4LWZpcm13YXJlLXJhZGVvbiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXRpXzcuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tYXRpXzcuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDA5YTE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWF0aV83LjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWFiZmYxNjA2NTUxZjk0NjFjY2Y1Njc3MzlhZjYzZGMiCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gQVRJIFJhZGVvbiB2aWRlbyBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gIk9wZW4tc291cmNlIFgub3JnIGdyYXBoaWNzIGRyaXZlciBmb3IgQVRJIFJhZGVvbiBncmFwaGljcyIKLQotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGlieHZtYyBkcm0geGY4NmRyaXByb3RvIGdscHJvdG8gXAotICAgICAgICAgICAgdmlydHVhbC9saWJnbCB4aW5lcmFtYXByb3RvIGxpYnBjaWFjY2VzcyIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAib3BlbmdsIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjM0ZDA0YTc1NWU3NjFlMDNiNDU5MTU1ZmEzZGRjYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDAxZjVkZTc3MjkyOGYzZGM0Y2U0M2E4ODVhZGIwYTQ3YTJmNjFhYTRhOWU0NWQyYWIzZDE4NDEzNmE5ZDZmYSIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ2xhbW9yIgotCi1SREVQRU5EU18ke1BOfSArPSAieHNlcnZlci14b3JnLW1vZHVsZS1leGEiCi1SUkVDT01NRU5EU18ke1BOfSArPSAibGludXgtZmlybXdhcmUtcmFkZW9uIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhXzEuNi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tbWdhXzEuNi41LmJiCmluZGV4IGNkNjgwNTkuLjE4MmUxOGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW1nYV8xLjYuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1tZ2FfMS42LjUuYmIKQEAgLTE2LDYgKzE2LDYgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjYzY2Q4ZTYzNjRmN2M0ZTI2MzdiOWZjYWI5ODYxZDBlMzk3MTUxOGM3M2IwMGQyMTNmNjU0NWExMjg5NDIyIgogCiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmknLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpLGRybSB4Zjg2ZHJpcHJvdG8seHNlcnZlci14b3JnLWV4dGVuc2lvbi1kcmkiCitQQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpLC0tZGlzYWJsZS1kcmksZHJtIHhvcmdwcm90byx4c2VydmVyLXhvcmctZXh0ZW5zaW9uLWRyaSIKIAogUkRFUEVORFNfJHtQTn0gPSAieHNlcnZlci14b3JnLW1vZHVsZS1leGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1ub3V2ZWF1XzEuMC4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiCmluZGV4IDI3NDY4MjEuLjJiMWI4N2MgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW5vdXZlYXVfMS4wLjE1LmJiCkBAIC02LDggKzYsOCBAQAogCiBERVNDUklQVElPTiA9ICJPcGVuLXNvdXJjZSBYLm9yZyBncmFwaGljcyBkcml2ZXIgZm9yIE5WSURJQSBncmFwaGljcyIKIAotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGlieHZtYyBkcm0geGY4NmRyaXByb3RvIGdscHJvdG8gXAotICAgICAgICAgICAgdmlydHVhbC9saWJnbCB4aW5lcmFtYXByb3RvIGxpYnBjaWFjY2VzcyIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGxpYnh2bWMgZHJtIHhvcmdwcm90byBcCisgICAgICAgICAgICB2aXJ0dWFsL2xpYmdsIGxpYnBjaWFjY2VzcyIKIFJERVBFTkRTXyR7UE59ICs9ICJ4c2VydmVyLXhvcmctbW9kdWxlLWV4YSIKIAogaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJsYnh1dGlsXzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmxieHV0aWxfMS4xLjAuYmIKaW5kZXggN2QyNmQxNC4uM2U1YzMxYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmxieHV0aWxfMS4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmxieHV0aWxfMS4xLjAuYmIKQEAgLTMsNyArMyw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMGQ1YmRjOThmN2ViYWIzYjZjMzc5MWQ5YmY0MDkwNyIKIAogU1VNTUFSWSA9ICJYRklYRVMgRXh0ZW5zaW9uIgotREVQRU5EUyArPSAiIHhleHRwcm90byB4cHJvdG8gemxpYiIKK0RFUEVORFMgKz0gIiB4b3JncHJvdG8gemxpYiIKIFBFID0gIjEiCiBQUiA9ICJyMTEiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4YXdfMS4wLjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhd18xLjAuMTMuYmIKaW5kZXggOGJhNWFjMy4uY2IxZmZjZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhd18xLjAuMTMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhd18xLjAuMTMuYmIKQEAgLTEsNiArMSw2IEBACiByZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveG9yZy1saWItY29tbW9uLmluYwogU1VNTUFSWSA9ICJYIEF0aGVuYSBXaWRnZXQgU2V0IgotREVQRU5EUyArPSAieHByb3RvIHZpcnR1YWwvbGlieDExIGxpYnhleHQgeGV4dHByb3RvIGxpYnh0IGxpYnhtdSBsaWJ4cG0gbGlieGF1IHhtbHRvLW5hdGl2ZSIKK0RFUEVORFMgKz0gInhvcmdwcm90byB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGxpYnhtdSBsaWJ4cG0gbGlieGF1IHhtbHRvLW5hdGl2ZSIKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWM2NTcxOWQ0MjkwMGJiODFiODNlODI5M2MyMGEzNjQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cHJlc2VudF8xLjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cHJlc2VudF8xLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmU5OTkyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwcmVzZW50XzEuMC4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94b3JnLWxpYi1jb21tb24uaW5jCitTVU1NQVJZID0gIlggQXRoZW5hIFdpZGdldCBTZXQiCitERVBFTkRTICs9ICJ4b3JncHJvdG8gbGlieGZpeGVzIGxpYnhyYW5kciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2MxY2U0MmMzMzRhNmY1Y2NjYjAyNzc1NTZhMDUzZTAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvaW5kaXZpZHVhbC9saWIvbGliWHByZXNlbnQtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZGQ4N2FjMTViYjY2NjA4MTg5OGRkNzM4MmZjYmZmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMTFhZTAxNTE0MWE5YWZiZTEwZjRmMmI4ZWUwMGIxMWFkY2E2MzczZGMxYjk4MDhkN2M2YzEzOGIyZGE3YjhhIgorCitYT1JHX1BOID0gImxpYlhwcmVzZW50IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzY3JlZW5zYXZlci9maWxlcy9maXgtYnVpbGRzY3JpcHRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzY3JlZW5zYXZlci9maWxlcy9maXgtYnVpbGRzY3JpcHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhNTBlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNjcmVlbnNhdmVyL2ZpbGVzL2ZpeC1idWlsZHNjcmlwdHMucGF0Y2gKQEAgLTAsMCArMSwxMTYgQEAKKy0tLSB4c2NyZWVuc2F2ZXItNS4zOS5vcmlnL2NvbmZpZ3VyZS5pbgorKysrIHhzY3JlZW5zYXZlci01LjM5L2NvbmZpZ3VyZS5pbgorQEAgLTE0LDYgKzE0LDkgQEAKKyAjCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorK2luY2x1ZGVkaXI9JycKKytsaWJkaXI9JycKKysKKyBBSF9UT1AoWworIC8qIGNvbmZpZy5oLmluIC0tLSB4c2NyZWVuc2F2ZXIsIENvcHlyaWdodCAoYykgMTk5MS0yMDE0IEphbWllIFphd2luc2tpLgorICAqCitAQCAtNDIyLDEyICs0MjUsMTIgQEAKKyAKKyAgIE9CSkNDPSIkQ0MiCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIGNvbXBpbGVyIHdvcmtzIG9uIEFOU0kgQ10pCistICBBQ19UUllfUlVOKFsgbWFpbihpbnQgYWMsIGNoYXIgKiphdikgeyByZXR1cm4gMDsgfSBdLAorLSAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpLAorLSAgICAgQUNfTVNHX1JFU1VMVChubykKKy0gICAgIEFDX01TR19FUlJPUihDb3VsZG4ndCBidWlsZCBldmVuIGEgdHJpdmlhbCBBTlNJIEMgcHJvZ3JhbTogY2hlY2sgQ0MuKSwKKy0gICAgIEFDX01TR19FUlJPUihDb3VsZG4ndCBidWlsZCBldmVuIGEgdHJpdmlhbCBBTlNJIEMgcHJvZ3JhbTogY2hlY2sgQ0MuKSkKKysjICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIGNvbXBpbGVyIHdvcmtzIG9uIEFOU0kgQ10pCisrIyAgQUNfVFJZX1JVTihbIG1haW4oaW50IGFjLCBjaGFyICoqYXYpIHsgcmV0dXJuIDA7IH0gXSwKKysjICAgICBBQ19NU0dfUkVTVUxUKHllcyksCisrIyAgICAgQUNfTVNHX1JFU1VMVChubykKKysjICAgICBBQ19NU0dfRVJST1IoQ291bGRuJ3QgYnVpbGQgZXZlbiBhIHRyaXZpYWwgQU5TSSBDIHByb2dyYW06IGNoZWNrIENDLiksCisrIyAgICAgQUNfTVNHX0VSUk9SKENvdWxkbid0IGJ1aWxkIGV2ZW4gYSB0cml2aWFsIEFOU0kgQyBwcm9ncmFtOiBjaGVjayBDQy4pKQorIAorICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgQUNfTVNHX1JFU1VMVChUdXJuaW5nIG9uIGdjYyBjb21waWxlciB3YXJuaW5ncy4pCistLS0geHNjcmVlbnNhdmVyLTUuMzkub3JpZy9NYWtlZmlsZS5pbgorKysrIHhzY3JlZW5zYXZlci01LjM5L01ha2VmaWxlLmluCitAQCAtNiw3ICs2LDcgQEAKKyBWUEFUSAkJPSBAc3JjZGlyQAorIAorIFNIRUxMCQk9IC9iaW4vc2gKKy1TVUJESVJTIAk9IHV0aWxzIGp3eHl6IGhhY2tzL2ltYWdlcyBoYWNrcyBoYWNrcy9nbHggZHJpdmVyIHBvCisrU1VCRElSUyAJPSB1dGlscyBqd3h5eiBoYWNrcy9pbWFnZXMgaGFja3MgZHJpdmVyCisgU1VCRElSUzIJPSAkKFNVQkRJUlMpIE9TWCBhbmRyb2lkCisgVEFSRklMRVMJPSBSRUFETUUgUkVBRE1FLmhhY2tpbmcgUkVBRE1FLlZNUyBJTlNUQUxMIFwKKyAJCSAgY29uZmlndXJlIGNvbmZpZ3VyZS5pbiBNYWtlZmlsZS5pbiBjb25maWcuaC5pbiBcCistLS0geHNjcmVlbnNhdmVyLTUuMzkub3JpZy9kcml2ZXIvTWFrZWZpbGUuaW4KKysrKyB4c2NyZWVuc2F2ZXItNS4zOS9kcml2ZXIvTWFrZWZpbGUuaW4KK0BAIC0xMCw3ICsxMCw3IEBACisgdG9wX3NyY2Rpcgk9IEB0b3Bfc3JjZGlyQAorIHRvcF9idWlsZGRpcgk9IC4uCisgCistaW5zdGFsbF9wcmVmaXgJPQorK2luc3RhbGxfcHJlZml4CT0gJHtERVNURElSfQorIHByZWZpeAkJPSBAcHJlZml4QAorIGV4ZWNfcHJlZml4CT0gQGV4ZWNfcHJlZml4QAorIGJpbmRpcgkJPSBAYmluZGlyQAorQEAgLTIyMSw3ICsyMjEsNyBAQAorIFNDUklQVFNfMQk9IHhzY3JlZW5zYXZlci1nZXRpbWFnZS1maWxlIHhzY3JlZW5zYXZlci1nZXRpbWFnZS12aWRlbyBcCisgCQkgIHhzY3JlZW5zYXZlci10ZXh0CisgU0NSSVBUU19PU1gJPSB4c2NyZWVuc2F2ZXItZ2V0aW1hZ2UtZGVza3RvcAorLVNDUklQVFMJCT0gJChTQ1JJUFRTXzEpIEBTQ1JJUFRTX09TWEAKKysjU0NSSVBUUwkJPSAkKFNDUklQVFNfMSkgQFNDUklQVFNfT1NYQAorIAorIEhEUlMJCT0gWFNjcmVlblNhdmVyX2FkLmggWFNjcmVlblNhdmVyX1htX2FkLmggXAorIAkJICB4c2NyZWVuc2F2ZXIuaCBwcmVmcy5oIHJlbW90ZS5oIGV4ZWMuaCBcCistLS0geHNjcmVlbnNhdmVyLTUuMzkub3JpZy9oYWNrcy9NYWtlZmlsZS5pbgorKysrIHhzY3JlZW5zYXZlci01LjM5L2hhY2tzL01ha2VmaWxlLmluCitAQCAtMTAsNyArMTAsNyBAQAorIHRvcF9zcmNkaXIJPSBAdG9wX3NyY2RpckAKKyB0b3BfYnVpbGRkaXIJPSAuLgorIAorLWluc3RhbGxfcHJlZml4CT0KKytpbnN0YWxsX3ByZWZpeAk9ICR7REVTVERJUn0KKyBwcmVmaXgJCT0gQHByZWZpeEAKKyBleGVjX3ByZWZpeAk9IEBleGVjX3ByZWZpeEAKKyBiaW5kaXIJCT0gQGJpbmRpckAKK0BAIC0xMjIsNyArMTIyLDcgQEAKKyAJCSAgYXNtNjUwMi5jIGFic3RyYWN0aWxlLmMgbGNkc2NydWIuYyBoZXhhZHJvcC5jIFwKKyAJCSAgdGVzc2VsbGltYWdlLmMgZGVsYXVuYXkuYyByZWNhbmltLmMgYmluYXJ5cmluZy5jIFwKKyAJCSAgd2ViY29sbGFnZS1jb2NvYS5tIHdlYmNvbGxhZ2UtaGVscGVyLWNvY29hLm0gdGVzdHgxMS5jCistU0NSSVBUUwkJPSB2aWR3aGFja2VyIHdlYmNvbGxhZ2UgbGpsYXRlc3QKKysjU0NSSVBUUwkJPSB2aWR3aGFja2VyIHdlYmNvbGxhZ2UgbGpsYXRlc3QKKyAKKyAjIFByb2dyYW1zIHRoYXQgYXJlIG1lbnRpb25lZCBpbiBYU2NyZWVuU2F2ZXIuYWQsIGFuZCB0aGF0IGhhdmUgWE1MIGZpbGVzLAorICMgYnV0IHRoYXQgYXJlIG5vdCBzaGlwcGVkIHdpdGggeHNjcmVlbnNhdmVyIGl0c2VsZi4KK0BAIC0xNjMsNyArMTYzLDEzIEBACisgCQkgIGxjZHNjcnViLm8gaGV4YWRyb3AubyB0ZXNzZWxsaW1hZ2UubyBkZWxhdW5heS5vIHJlY2FuaW0ubyBcCisgCQkgIGJpbmFyeXJpbmcubyB0ZXN0eDExLm8KKyAKKy1FWEVTCQk9IGF0dHJhY3Rpb24gYmxpdHNwaW4gYm91Ym91bGUgYnJhaWQgZGVjYXlzY3JlZW4gZGVjbyBcCisrRVhFUwkJPSBmb250Z2xpZGUKKytKUEVHX0VYRVMJPSB3ZWJjb2xsYWdlLWhlbHBlcgorKworK1JFVElSRURfRVhFUwk9IGFudCBidWJibGVzIGNyaXRpY2FsIGZsYWcgZm9yZXN0IGh5cGVyYmFsbCBoeXBlcmN1YmUgbGFzZXIgXAorKwkJICBsaWdodG5pbmcgbGlzYSBsaXNzaWUgbG1vcnBoIHJvdG9yIHNwaGVyZSBzcGlyYWwgdDNkIHZpbmVzIFwKKysJCSAgd2hpcmx5Z2lnIHdvcm0geHN1YmxpbSBqdWdnbGUgdGVzdHgxMSBcCisrCQkgIGF0dHJhY3Rpb24gYmxpdHNwaW4gYm91Ym91bGUgYnJhaWQgZGVjYXlzY3JlZW4gZGVjbyBcCisgCQkgIGRyaWZ0IGZsYW1lIGdhbGF4eSBncmF2IGdyZXluZXRpYyBoYWxvIFwKKyAJCSAgaGVsaXggaG9wYWxvbmcgaWZzIGltc21hcCBqdWxpYSBrYWxlaWRlc2NvcGUgXAorIAkJICBtYXplIG1vaXJlIG5vc2VndXkgcGVkYWwgXAorQEAgLTE3OSwxNyArMTg1LDEyIEBACisgCQkgIHNwZWVkbWluZSB2ZXJtaWN1bGF0ZSB0d2FuZyBhcG9sbG9uaWFuIGV1bGVyMmQgXAorIAkJICBwb2x5b21pbm9lcyB0aG9ybmJpcmQgIGZsdWlkYmFsbHMgYW5lbW9uZSBoYWxmdG9uZSBcCisgCQkgIG1ldGFiYWxscyBlcnVwdGlvbiBwb3BzcXVhcmVzIGJhcmNvZGUgcGllY2V3aXNlIGNsb3VkbGlmZSBcCistCQkgIGZvbnRnbGlkZSBhcHBsZTIgeGFuYWxvZ3R2IHBvbmcgIHdvcm1ob2xlIFwKKysJCSAgYXBwbGUyIHhhbmFsb2d0diBwb25nICB3b3JtaG9sZSBcCisgCQkgIHBhY21hbiBmdXp6eWZsYWtlcyBhbmVtb3RheGlzIG1lbXNjcm9sbGVyIHN1YnN0cmF0ZSBcCisgCQkgIGludGVybW9tZW50YXJ5IGZpcmV3b3JreCBmaWJlcmxhbXAgYm94Zml0IGludGVyYWdncmVnYXRlIFwKKyAJCSAgY2VsdGljIGN3YXZlcyBtNjUwMiBhYnN0cmFjdGlsZSBsY2RzY3J1YiBoZXhhZHJvcCBcCisgCQkgIHRlc3NlbGxpbWFnZSBiaW5hcnlyaW5nIFwKKyAJCSAgQEpQRUdfRVhFU0AKKy1KUEVHX0VYRVMJPSB3ZWJjb2xsYWdlLWhlbHBlcgorLQorLVJFVElSRURfRVhFUwk9IGFudCBidWJibGVzIGNyaXRpY2FsIGZsYWcgZm9yZXN0IGh5cGVyYmFsbCBoeXBlcmN1YmUgbGFzZXIgXAorLQkJICBsaWdodG5pbmcgbGlzYSBsaXNzaWUgbG1vcnBoIHJvdG9yIHNwaGVyZSBzcGlyYWwgdDNkIHZpbmVzIFwKKy0JCSAgd2hpcmx5Z2lnIHdvcm0geHN1YmxpbSBqdWdnbGUgdGVzdHgxMQorIAorIEhBQ0tfT0JKU18xCT0gZnBzLm8gJChVVElMU19CSU4pL3Jlc291cmNlcy5vICQoVVRJTFNfQklOKS92aXN1YWwubyBcCisgCQkgICQoVVRJTFNfQklOKS91c2xlZXAubyAkKFVUSUxTX0JJTikveWFyYW5kb20ubyBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNjcmVlbnNhdmVyL2ZpbGVzL3R3ZWFrLWFwcC1kZWZhdWx0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2NyZWVuc2F2ZXIvZmlsZXMvdHdlYWstYXBwLWRlZmF1bHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWEwYjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNjcmVlbnNhdmVyL2ZpbGVzL3R3ZWFrLWFwcC1kZWZhdWx0cy5wYXRjaApAQCAtMCwwICsxLDI3MyBAQAorLS0tIHhzY3JlZW5zYXZlci01LjM5Lm9yaWcvZHJpdmVyL1hTY3JlZW5TYXZlci5hZC5pbgorKysrIHhzY3JlZW5zYXZlci01LjM5L2RyaXZlci9YU2NyZWVuU2F2ZXIuYWQuaW4KK0BAIC0yOSw3ICsyOSw3IEBACisgISAvKiAoeHJkYiBwcmV2ZW50aW9uIGtsdWRnZTogd2hvbGUgZmlsZSkKKyAKKyAqbW9kZToJCQlyYW5kb20KKy0qdGltZW91dDoJCTA6MTA6MDAKKysqdGltZW91dDoJCTA6MTU6MDAKKyAqY3ljbGU6CQkJMDoxMDowMAorICpsb2NrVGltZW91dDoJCTA6MDA6MDAKKyAqcGFzc3dkVGltZW91dDoJCTA6MDA6MzAKK0BAIC0zOCw3ICszOCw3IEBACisgKmRwbXNTdGFuZGJ5OgkJMjowMDowMAorICpkcG1zU3VzcGVuZDoJCTI6MDA6MDAKKyAqZHBtc09mZjoJCTQ6MDA6MDAKKy0qZ3JhYkRlc2t0b3BJbWFnZXM6CVRydWUKKysqZ3JhYkRlc2t0b3BJbWFnZXM6CUZhbHNlCisgKmdyYWJWaWRlb0ZyYW1lczoJRmFsc2UKKyAqY2hvb3NlUmFuZG9tSW1hZ2VzOglAREVGQVVMVF9JTUFHRVNfUEAKKyAhIFRoaXMgY2FuIGJlIGEgbG9jYWwgZGlyZWN0b3J5IG5hbWUsIG9yIHRoZSBVUkwgb2YgYW4gUlNTIG9yIEF0b20gZmVlZC4KK0BAIC00OCwxMSArNDgsMTEgQEAKKyAqbG9jazoJCQlGYWxzZQorICp2ZXJib3NlOgkJRmFsc2UKKyAqdGltZXN0YW1wOgkJVHJ1ZQorLSpmYWRlOgkJCVRydWUKKysqZmFkZToJCQlGYWxzZQorICp1bmZhZGU6CQlGYWxzZQorICpmYWRlU2Vjb25kczoJCTA6MDA6MDMKKyAqZmFkZVRpY2tzOgkJMjAKKy0qc3BsYXNoOgkJVHJ1ZQorKypzcGxhc2g6CQlGYWxzZQorICpzcGxhc2hEdXJhdGlvbjoJMDowMDowNQorICp2aXN1YWxJRDoJCWRlZmF1bHQKKyAqY2FwdHVyZVN0ZGVycjogCVRydWUKK0BAIC0xNTgsMjM2ICsxNTgsOCBAQAorICEgc2NyZWVuIHNhdmVycyBpbnRlcmFjdGl2ZWx5LgorICEKKyAqcHJvZ3JhbXM6CQkJCQkJCQkgICAgICBcCistCQkJCW1hemUgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJc3VwZXJxdWFkcmljcyAtcm9vdAkJCSAgICBcblwKKy0JCQkJYXR0cmFjdGlvbiAtcm9vdAkJCSAgICBcblwKKy0JCQkJYmxpdHNwaW4gLXJvb3QJCQkJICAgIFxuXAorLQkJCQlncmV5bmV0aWMgLXJvb3QJCQkJICAgIFxuXAorLQkJCQloZWxpeCAtcm9vdAkJCQkgICAgXG5cCistCQkJCWhvcGFsb25nIC1yb290CQkJCSAgICBcblwKKy0JCQkJaW1zbWFwIC1yb290CQkJCSAgICBcblwKKy0tCQkJCW5vc2VndXkgLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJcHlybyAtcm9vdAkJCQkgICAgXG5cCistCQkJCXFpeCAtcm9vdAkJCQkgICAgXG5cCistLQkJCQlyb2NrcyAtcm9vdAkJCQkgICAgXG5cCistCQkJCXJvcnNjaGFjaCAtcm9vdAkJCQkgICAgXG5cCistCQkJCWRlY2F5c2NyZWVuIC1yb290CQkJICAgIFxuXAorLQkJCQlmbGFtZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCWhhbG8gLXJvb3QJCQkJICAgIFxuXAorLQkJCQlzbGlkZXNjcmVlbiAtcm9vdAkJCSAgICBcblwKKy0JCQkJcGVkYWwgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlib3Vib3VsZSAtcm9vdAkJCQkgICAgXG5cCistLQkJCQlicmFpZCAtcm9vdAkJCQkgICAgXG5cCistCQkJCWNvcmFsIC1yb290CQkJCSAgICBcblwKKy0JCQkJZGVjbyAtcm9vdAkJCQkgICAgXG5cCistCQkJCWRyaWZ0IC1yb290CQkJCSAgICBcblwKKy0tCQkJCWZhZGVwbG90IC1yb290CQkJCSAgICBcblwKKy0JCQkJZ2FsYXh5IC1yb290CQkJCSAgICBcblwKKy0JCQkJZ29vcCAtcm9vdAkJCQkgICAgXG5cCistCQkJCWdyYXYgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlpZnMgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJamlnc2F3IC1yb290CQkJCSAgICBcblwKKy0JCQkJanVsaWEgLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJa2FsZWlkZXNjb3BlIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJbW9lYml1cyAtcm9vdAkJCQkgICAgXG5cCistCQkJCW1vaXJlIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCW1vcnBoM2QgLXJvb3QJCQkJICAgIFxuXAorLQkJCQltb3VudGFpbiAtcm9vdAkJCQkgICAgXG5cCistCQkJCW11bmNoIC1yb290CQkJCSAgICBcblwKKy0JCQkJcGVucm9zZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlwaXBlcyAtcm9vdAkJCQkgICAgXG5cCistCQkJCXJkLWJvbWIgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJcnViaWsgLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJc2llcnBpbnNraSAtcm9vdAkJCSAgICBcblwKKy0JCQkJc2xpcCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlzcHJvaW5naWVzIC1yb290CQkJICAgIFxuXAorLQkJCQlzdGFyZmlzaCAtcm9vdAkJCQkgICAgXG5cCistCQkJCXN0cmFuZ2UgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlzd2lybCAtcm9vdAkJCQkgICAgXG5cCistCQkJCXRyaWFuZ2xlIC1yb290CQkJCSAgICBcblwKKy0JCQkJeGphY2sgLXJvb3QJCQkJICAgIFxuXAorLQkJCQl4bHlhcCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlhdGxhbnRpcyAtcm9vdAkJCQkgICAgXG5cCistCQkJCWJzb2QgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJYnViYmxlM2QgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJY2FnZSAtcm9vdAkJCQkgICAgXG5cCistLQkJCQljcnlzdGFsIC1yb290CQkJCSAgICBcblwKKy0JCQkJY3lub3N1cmUgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlkaXNjcmV0ZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCWRpc3RvcnQgLXJvb3QJCQkJICAgIFxuXAorLQkJCQllcGljeWNsZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCWZsb3cgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2xwbGFuZXQgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlpbnRlcmZlcmVuY2UgLXJvb3QJCQkgICAgXG5cCistCQkJCWt1bXBwYSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlsYW1lbnQgLXJvb3QJCQkJICAgIFxuXAorLQkJCQltb2lyZTIgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJc29uYXIgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJc3RhaXJzIC1yb290CQkJCSAgICBcblwKKy0JCQkJdHJ1Y2hldCAtcm9vdAkJCQkgICAgXG5cCistLQkJCQl2aWR3aGFja2VyIC1yb290CQkJICAgIFxuXAorLQkJCQlibGFzdGVyIC1yb290CQkJCSAgICBcblwKKy0JCQkJYnVtcHMgLXJvb3QJCQkJICAgIFxuXAorLQkJCQljY3VydmUgLXJvb3QJCQkJICAgIFxuXAorLQkJCQljb21wYXNzIC1yb290CQkJCSAgICBcblwKKy0JCQkJZGVsdXhlIC1yb290CQkJCSAgICBcblwKKy0tCQkJCWRlbW9uIC1yb290CQkJCSAgICBcblwKKy1AR0xFX0tMVURHRUAgR0w6IAkJCQlleHRydXNpb24gLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJbG9vcCAtcm9vdAkJCQkgICAgXG5cCistCQkJCXBlbmV0cmF0ZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCXBldHJpIC1yb290CQkJCSAgICBcblwKKy0JCQkJcGhvc3Bob3IgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJcHVsc2FyIC1yb290CQkJCSAgICBcblwKKy0JCQkJcmlwcGxlcyAtcm9vdAkJCQkgICAgXG5cCistCQkJCXNoYWRlYm9icyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlzaWVycGluc2tpM2QgLXJvb3QJCQkgICAgXG5cCistCQkJCXNwb3RsaWdodCAtcm9vdAkJCQkgICAgXG5cCistCQkJCXNxdWlyYWwgLXJvb3QJCQkJICAgIFxuXAorLQkJCQl3YW5kZXIgLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJd2ViY29sbGFnZSAtcm9vdAkJCSAgICBcblwKKy0JCQkJeGZsYW1lIC1yb290CQkJCSAgICBcblwKKy0JCQkJeG1hdHJpeCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlnZmx1eCAtcm9vdAkJCQkgICAgXG5cCistLQkJCQluZXJ2ZXJvdCAtcm9vdAkJCQkgICAgXG5cCistCQkJCXhyYXlzd2FybSAtcm9vdAkJCQkgICAgXG5cCistCQkJCXhzcGlyb2dyYXBoIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJY2lyY3VpdCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlkYW5nZXJiYWxsIC1yb290CQkJICAgIFxuXAorLS0gR0w6IAkJCQlkbmFsb2dvIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWVuZ2luZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlmbGlwc2NyZWVuM2QgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlnbHRleHQgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJbWVuZ2VyIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCW1vbGVjdWxlIC1yb290CQkJCSAgICBcblwKKy0JCQkJcm90em9vbWVyIC1yb290CQkJCSAgICBcblwKKy0JCQkJc3BlZWRtaW5lIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXN0YXJ3YXJzIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXN0b25lcnZpZXcgLXJvb3QJCQkgICAgXG5cCistCQkJCXZlcm1pY3VsYXRlIC1yb290CQkJICAgIFxuXAorLQkJCQl3aGlybHdpbmR3YXJwIC1yb290CQkJICAgIFxuXAorLQkJCQl6b29tIC1yb290CQkJCSAgICBcblwKKy0JCQkJYW5lbW9uZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCWFwb2xsb25pYW4gLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlib3hlZCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQljdWJlbmV0aWMgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZW5kZ2FtZSAtcm9vdAkJCQkgICAgXG5cCistCQkJCWV1bGVyMmQgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlmbHVpZGJhbGxzIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZmx1cnJ5IC1yb290CQkJCSAgICBcblwKKy0tIEdMOiAJCQkJZ2xibHVyIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWdsc25ha2UgLXJvb3QJCQkJICAgIFxuXAorLQkJCQloYWxmdG9uZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlqdWdnbGVyM2QgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJbGF2YWxpdGUgLXJvb3QJCQkJICAgIFxuXAorLS0JCQkJcG9seW9taW5vZXMgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlxdWVlbnMgLXJvb3QJCQkJICAgIFxuXAorLS0gR0w6IAkJCQlzYmFsbHMgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJc3BoZXJlbW9uaWNzIC1yb290CQkJICAgIFxuXAorLS0JCQkJdGhvcm5iaXJkIC1yb290CQkJCSAgICBcblwKKy0JCQkJdHdhbmcgLXJvb3QJCQkJICAgIFxuXAorLS0gR0w6IAkJCQlhbnRzcG90bGlnaHQgLXJvb3QJCQkgICAgXG5cCistCQkJCWFwcGxlMiAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlhdHVubmVsIC1yb290CQkJCSAgICBcblwKKy0JCQkJYmFyY29kZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlibGlua2JveCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlibG9ja3R1YmUgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJYm91bmNpbmdjb3cgLXJvb3QJCQkgICAgXG5cCistCQkJCWNsb3VkbGlmZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQljdWJlc3Rvcm0gLXJvb3QJCQkJICAgIFxuXAorLQkJCQllcnVwdGlvbiAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlmbGlwZmxvcCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlmbHlpbmd0b2FzdGVycyAtcm9vdAkJCSAgICBcblwKKy0JCQkJZm9udGdsaWRlIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWdsZWlkZXNjb3BlIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2xrbm90cyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlnbG1hdHJpeCAtcm9vdAkJCQkgICAgXG5cCistLSBHTDogCQkJCWdsc2xpZGVzaG93IC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJaHlwZXJ0b3J1cyAtcm9vdAkJCSAgICBcblwKKy0tIEdMOiAJCQkJamlnZ2x5cHVmZiAtcm9vdAkJCSAgICBcblwKKy0JCQkJbWV0YWJhbGxzIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCW1pcnJvcmJsb2IgLXJvb3QJCQkgICAgXG5cCistCQkJCXBpZWNld2lzZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlwb2x5dG9wZXMgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlwb25nIC1yb290CQkJCSAgICBcblwKKy0JCQkJcG9wc3F1YXJlcyAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXN1cmZhY2VzIC1yb290CQkJCSAgICBcblwKKy0JCQkJeGFuYWxvZ3R2IC1yb290CQkJCSAgICBcblwKKy0JCQkJYWJzdHJhY3RpbGUgLXJvb3QJCQkgICAgXG5cCistCQkJCWFuZW1vdGF4aXMgLXJvb3QJCQkgICAgXG5cCistLSBHTDogCQkJCWFudGluc3BlY3QgLXJvb3QJCQkgICAgXG5cCistCQkJCWZpcmV3b3JreCAtcm9vdAkJCQkgICAgXG5cCistCQkJCWZ1enp5Zmxha2VzIC1yb290CQkJICAgIFxuXAorLQkJCQlpbnRlcmFnZ3JlZ2F0ZSAtcm9vdAkJCSAgICBcblwKKy0JCQkJaW50ZXJtb21lbnRhcnkgLXJvb3QJCQkgICAgXG5cCistCQkJCW1lbXNjcm9sbGVyIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJbm9vZiAtcm9vdAkJCQkgICAgXG5cCistCQkJCXBhY21hbiAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlwaW5pb24gLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJcG9seWhlZHJhIC1yb290CQkJCSAgICBcblwKKy0tIEdMOiAJCQkJcHJvdmlkZW5jZSAtcm9vdAkJCSAgICBcblwKKy0JCQkJc3Vic3RyYXRlIC1yb290CQkJCSAgICBcblwKKy0JCQkJd29ybWhvbGUgLXJvb3QJCQkJICAgIFxuXAorLS0gR0w6IAkJCQlhbnRtYXplIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWJvaW5nIC1yb290CQkJCSAgICBcblwKKy0JCQkJYm94Zml0IC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWNhcm91c2VsIC1yb290CQkJCSAgICBcblwKKy0JCQkJY2VsdGljIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWNyYWNrYmVyZyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQljdWJlMjEgLXJvb3QJCQkJICAgIFxuXAorLQkJCQlmaWJlcmxhbXAgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZmxpcHRleHQgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2xoYW5vaSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQl0YW5ncmFtIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXRpbWV0dW5uZWwgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlnbHNjaG9vbCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQl0b3BibG9jayAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQljdWJpY2dyaWQgLXJvb3QJCQkJICAgIFxuXAorLQkJCQljd2F2ZXMgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2VhcnMgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2xjZWxscyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlsb2Nrd2FyZCAtcm9vdAkJCQkgICAgXG5cCistCQkJCW02NTAyIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCW1vZWJpdXNnZWFycyAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXZvcm9ub2kgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJaHlwbm93aGVlbCAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWtsZWluIC1yb290CQkJCSAgICBcblwKKy0tCQkJCWxjZHNjcnViIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXBob3RvcGlsZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlza3l0ZW50YWNsZXMgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlydWJpa2Jsb2NrcyAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWNvbXBhbmlvbmN1YmUgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQloaWxiZXJ0IC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXRyb25iaXQgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2VvZGVzaWMgLXJvb3QJCQkJICAgIFxuXAorLQkJCQloZXhhZHJvcCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlrYWxlaWRvY3ljbGUgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlxdWFzaWNyeXN0YWwgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQl1bmtub3ducGxlYXN1cmVzIC1yb290CQkJICAgIFxuXAorLQkJCQliaW5hcnlyaW5nIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJY2l0eWZsb3cgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZ2VvZGVzaWNnZWFycyAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXByb2plY3RpdmVwbGFuZSAtcm9vdAkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXJvbWFuYm95IC1yb290CQkJCSAgICBcblwKKy0JCQkJdGVzc2VsbGltYWdlIC1yb290CQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJd2luZHVwcm9ib3QgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlzcGxpdGZsYXAgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJY3ViZXN0YWNrIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWN1YmV0d2lzdCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlkaXNjb2JhbGwgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJZHltYXhpb25tYXAgLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQllbmVyZ3lzdHJlYW0gLXJvb3QJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQloZXhzdHJ1dCAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQloeWRyb3N0YXQgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJcmF2ZXJob29wIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXNwbG9kZXNpYyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQl1bmljcnVkIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCWVzcGVyIC1yb290CQkJCSAgICBcblwKKy1AR0xfS0xVREdFQCBHTDogCQkJCXZpZ2lsYW5jZSAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQljcnVtYmxlciAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQltYXplM2QgLXJvb3QJCQkJICAgIFxuXAorLUBHTF9LTFVER0VAIEdMOiAJCQkJcGVlcGVycyAtcm9vdAkJCQkgICAgXG5cCistQEdMX0tMVURHRUAgR0w6IAkJCQlyYXp6bGVkYXp6bGUgLXJvb3QJCQkgICAgXG4KKy0KKystCQkJCWZvbnRnbGlkZSAtcm9vdCAtcHJvZ3JhbSAiZGF0ZSArJyVGICVIOiVNICV6JyIJCQkJICAgIFxuXAorKwkJCQlnaWZ2aWV3IC0td2luZG93ICRYU0NSRUVOU0FWRVJfV0lORE9XIC91c3Ivc2hhcmUvbG9nby9ib3NjaC1ibGFjay5naWYJCQkgICAgXG4KKyAKKyAKKyAhPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2NyZWVuc2F2ZXIvZmlsZXMveHNjcmVlbnNhdmVyLnNlcnZpY2UgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNjcmVlbnNhdmVyL2ZpbGVzL3hzY3JlZW5zYXZlci5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE3ZGZlNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHNjcmVlbnNhdmVyL2ZpbGVzL3hzY3JlZW5zYXZlci5zZXJ2aWNlCkBAIC0wLDAgKzEsMTQgQEAKK1tVbml0XQorRGVzY3JpcHRpb249WHNjcmVlbnNhdmVyIHNlcnZpY2UKK1BhcnRPZj14c2VydmVyLW5vZG0uc2VydmljZQorQWZ0ZXI9eHNlcnZlci1ub2RtLnNlcnZpY2UKKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9L3Vzci9iaW4veHNjcmVlbnNhdmVyCitFbnZpcm9ubWVudD0iRElTUExBWT06MCIKK1VzZXI9eHVzZXIKK1Jlc3RhcnQ9YWx3YXlzCitSZXN0YXJ0U2VjPTEKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hzY3JlZW5zYXZlci94c2NyZWVuc2F2ZXJfNS4zOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2NyZWVuc2F2ZXIveHNjcmVlbnNhdmVyXzUuMzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmViZjNjNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94c2NyZWVuc2F2ZXIveHNjcmVlbnNhdmVyXzUuMzkuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJYIHNjcmVlbiBzYXZlciBhbmQgbG9ja2VyIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RyaXZlci94c2NyZWVuc2F2ZXIuaDtlbmRsaW5lPTEwO21kNT1lMTQxYWI1ODIyZmIyZDQzNjk0ZTFlNDdiNTlmYzBkZiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5qd3oub3JnLyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYTVkYTYyYjkxMjcxZjRlOGFmY2M3M2Q0NDY5NzM2NGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDhjZTE4ODBmMThiNTMyMTE4MmJlMGMwMzNhZWNlYjVlYzU2MjhhMTUwNWI5ZDFmZjY5ZGJmMDYwOTNjMjQyNiIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8veHNjcmVlbnNhdmVyLnNlcnZpY2UgXAorICAgIGZpbGU6Ly9maXgtYnVpbGRzY3JpcHRzLnBhdGNoIFwKKyAgICBmaWxlOi8vdHdlYWstYXBwLWRlZmF1bHRzLnBhdGNoIFwKKyIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlieDExIGxpYnhleHQgbGlieHQgbGlieGZ0IGdsaWItMi4wLW5hdGl2ZSBiYy1uYXRpdmUiCisjIFRoZXNlIGFyZSBvbmx5IG5lZWRlZCBhcyBwYXJ0IG9mIHRoZSBzdG9wZ2FwIHNjcmVlbnNhdmVyIGltcGxlbWVudGF0aW9uOgorUkRFUEVORFNfJHtQTn0gKz0gInhzZXJ2ZXItbm9kbS1pbml0IGxpYmVyYXRpb24tZm9udHMiCisKK2luaGVyaXQgc3lzdGVtZCBwZXJsbmF0aXZlIHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS94c2NyZWVuc2F2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS94c2NyZWVuc2F2ZXIuc2VydmljZQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEvYXBwLWRlZmF1bHRzL1hTY3JlZW5TYXZlciIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ4c2NyZWVuc2F2ZXIuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsLzMweFRzX0NhbGlicmF0ZS5zaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsLzMweFRzX0NhbGlicmF0ZS5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0MzYxNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC8zMHhUc19DYWxpYnJhdGUuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0jIS9iaW4vc2gKLQotLiAvZXRjL2Zvcm1mYWN0b3IvY29uZmlnCi0KLWlmIFsgIiRIQVZFX1RPVUNIU0NSRUVOIiA9ICIxIiBdOyB0aGVuCi0Jbj0xCi0Jd2hpbGUgWyAhIC16ICRUU0xJQl9UU0RFVklDRSBdICYmIFsgISAtZiAvZXRjL3BvaW50ZXJjYWwgXSAmJiBbICRuIC1sZSA1IF0KLQlkbwotCSAgIC91c3IvYmluL3h0c2NhbAotCSAgIHNsZWVwIDEKLQkgICBuPSQoKCRuKzEpKQotCWRvbmUKLWZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9jaGFuZ2UtY3Jvc3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9jaGFuZ2UtY3Jvc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYTc3MTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWwvY2hhbmdlLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSB0bXAvbWFpbi5jLm9yaWcJMjAwNy0wMS0wMiAxNTozOTo1NC4wMDAwMDAwMDAgKzAwMDAKLSsrKyB0bXAvbWFpbi5jCTIwMDctMDEtMDIgMTU6Mzk6NTQuMDAwMDAwMDAwICswMDAwCi1AQCAtMTMxLDkgKzEzMSwxMCBAQAotIHsKLSAgIFhSZW5kZXJGaWxsUmVjdGFuZ2xlcyAoZHB5LCBQaWN0T3BTcmMsIHBpY3QsICZyZWN0X2NvbG9yLCByZWN0YW5nbGVzLCAyKTsKLSAKLS0gIFhGaWxsQXJjIChkcHksIGNyb3NzaGFpcl93LCBjcm9zc2hhaXJfZ2MsIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMikgLSAxLCAKLS0JICAgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMikgLSAxLAotLQkgICAgV0lEVEggKyAxLCBXSURUSCArIDEsIDAsIDM2MCAqIDY0KTsKLSsgIFhGaWxsUmVjdGFuZ2xlIChkcHksIGNyb3NzaGFpcl93LCBjcm9zc2hhaXJfZ2MsCi0rCQkgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMiksCi0rCQkgIChDUk9TU0hBSVJfU0laRSAvIDIpIC0gKFdJRFRIIC8gMiksCi0rCQkgIFdJRFRILCBXSURUSCk7Ci0gfQotIAotIHZvaWQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2NsZWFudXAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9jbGVhbnVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2IwODU0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2NsZWFudXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MjEgKzAsMCBAQAotLS0tCi0gTWFrZWZpbGUuYW0gIHwgICAgOSAtLQotIGNvbmZpZ3VyZS5hYyB8ICAgIDMgCi0gZ3BlLWRpc3QuYW0gIHwgICAxMiAtLS0KLSBoMzYwMF90cy5oICAgfCAgMjE2IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gbWFpbi5jICAgICAgIHwgIDIxMCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSB4dHNjYWwuaW4gICAgfCAgIDE5IC0tLS0tCi0gNiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0NTUgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogeHRzY2FsLTAuNi4zL3h0c2NhbC5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHh0c2NhbC0wLjYuMy5vcmlnL3h0c2NhbC5pbgkyMDA0LTA5LTEwIDIwOjEwOjM2LjAwMDAwMDAwMCArMDEwMAotKysrIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotQEAgLTEsMTkgKzAsMCBAQAotLSMhL2Jpbi9zaAotLQotLW1vZHVsZV9pZCgpIHsKLS0gICAgIyBHZXQgbW9kZWwgbmFtZQotLSAgICBlY2hvIGBncmVwICJeSGFyZHdhcmUiIC9wcm9jL2NwdWluZm8gfCBzZWQgLWUgInMvLio6ICovLyIgfCB0ciBhLXogQS1aYAotLX0KLS0KLS1jYXNlIGBtb2R1bGVfaWRgIGluCi0tCSJIUCBJUEFRIEgzMTAwIiB8ICJIUCBJUEFRIEgzODAwIiApCi0tCQlBUkdTPSItcm90YXRlIDkwIiA7OwotLQkiSFAgSVBBUSBIMzYwMCIgfCAiSFAgSVBBUSBIMzcwMCIgfCAiSFAgSVBBUSBIMzkwMCIgfCAqQ09MTElFIHwgKlBPT0RMRSkKLS0JCUFSR1M9Ii1yb3RhdGUgMjcwIiA7OwotLQkjIEgyMjAwOiB3b3JrcyB3aXRob3V0IHJvdGF0aW9uCi0tZXNhYwotLQotLSMgdGhlIHRoaW5ncyB3ZSBkbyBmb3IgYXV0b2NvbmYKLS1wcmVmaXg9QHByZWZpeEAKLS1leGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0tZXhlYyBAbGliZXhlY2RpckAveHRzY2FsLmJpbiAkQVJHUyAkKgotSW5kZXg6IHh0c2NhbC0wLjYuMy9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9tYWluLmMJMjAwNy0wNy0wMSAwMToxMjo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyB4dHNjYWwtMC42LjMvbWFpbi5jCTIwMDctMDctMDEgMDE6MTI6NTUuMDAwMDAwMDAwICswMTAwCi1AQCAtMjIsMTIgKzIyLDEwIEBACi0gI2luY2x1ZGUgPFgxMS9YbGliLmg+Ci0gCi0gI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hyZW5kZXIuaD4KLS0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWHJhbmRyLmg+Ci0gI2luY2x1ZGUgPFgxMS9YZnQvWGZ0Lmg+Ci0gI2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL3hjYWxpYnJhdGUuaD4KLSAjaW5jbHVkZSA8WDExL2tleXN5bS5oPgotIAotLSNpbmNsdWRlICJoMzYwMF90cy5oIgotICNpbmNsdWRlICJjYWxpYnJhdGUuaCIKLSAKLSBEaXNwbGF5ICpkcHk7Ci1AQCAtNDUsMTUgKzQzLDExIEBAIFhmdENvbG9yIHhmdGNvbDsKLSBYZnREcmF3ICp4ZnRkcmF3OwotIFhmdEZvbnQgKnhmdGZvbnQ7Ci0gaW50IHNjcmVlbl94LCBzY3JlZW5feTsKLS1pbnQgdHNfZmQ7Ci0gaW50IHNhbXBsZXM7Ci0gUGl4bWFwIGJnX3BpeG1hcDsKLSBpbnQgZmxhZ19kZWJ1ZzsKLS1pbnQgcm90YXRpb24gPSAwOwotIGludCBlcnJvcl9iYXNlLCBldmVudF9iYXNlOwotIAotLWludCB1c2luZ194Y2FsaWJyYXRlOwotLQotIGludCBtb3Zpbmc7Ci0gCi0gI2RlZmluZSBDUk9TU0hBSVJfU0laRQkyNQotQEAgLTYzLDcgKzU3LDYgQEAgaW50IG1vdmluZzsKLSAjZGVmaW5lIEVOT1VHSCA1Ci0gI2RlZmluZSBNQVhfU0FNUExFUyA0MAotIAotLSNkZWZpbmUgUkFXX0RFVklDRSAiL2Rldi9oMzYwMF90c3JhdyIKLSAjZGVmaW5lIEZPTlROQU1FICJzYW5zLTEwIgotIAotIHN0cnVjdCBwb2ludCAKLUBAIC0yODcsMTIgKzI4MCw4IEBAIHNvcnRfYnlfeSAoY29uc3Qgdm9pZCogYSwgY29uc3Qgdm9pZCAqYikKLSB2b2lkCi0gc2V0X2NhbGlicmF0aW9uIChjYWxpYnJhdGlvbiAqY2FsKQotIHsKLS0gIFRTX0NBTCB0YzsKLS0gIGludCB4dHJhbnMsIHl0cmFucywgeHNjYWxlLCB5c2NhbGUsIHh5c2NhbGUsIHl4c2NhbGU7Ci0gICBjYWxpYnJhdGlvbiBvY2FsID0gKmNhbDsKLSAKLS0gIGlmICh1c2luZ194Y2FsaWJyYXRlKQotLSAgICB7Ci0gICAgICAgRklMRSAqZnA7Ci0gICAgICAgaWYgKGZsYWdfZGVidWcpCi0gCXByaW50ZiAoImNvbnN0YW50cyBhcmU6ICVkICVkICVkICVkICVkICVkICVkXG4iLCBjYWwtPmFbMV0sIGNhbC0+YVsyXSwgY2FsLT5hWzBdLCBjYWwtPmFbNF0sIGNhbC0+YVs1XSwgY2FsLT5hWzNdLCBjYWwtPmFbNl0pOwotQEAgLTMwNCwyOSArMjkzLDYgQEAgc2V0X2NhbGlicmF0aW9uIChjYWxpYnJhdGlvbiAqY2FsKQotIAl9Ci0gICAgICAgZnByaW50ZiAoZnAsICIlZCAlZCAlZCAlZCAlZCAlZCAlZFxuIiwgY2FsLT5hWzFdLCBjYWwtPmFbMl0sIGNhbC0+YVswXSwgY2FsLT5hWzRdLCBjYWwtPmFbNV0sIGNhbC0+YVszXSwgY2FsLT5hWzZdKTsKLSAgICAgICBmY2xvc2UgKGZwKTsgCi0tICAgICAgcmV0dXJuOwotLSAgICB9Ci0tCi0tICB4dHJhbnMgPSBjYWwtPmFbMF0gLyBjYWwtPmFbNl07Ci0tICB5dHJhbnMgPSBjYWwtPmFbM10gLyBjYWwtPmFbNl07Ci0tICB4c2NhbGUgPSBjYWwtPmFbMV0gKiAyNTYgLyBjYWwtPmFbNl07Ci0tICB5c2NhbGUgPSBjYWwtPmFbNV0gKiAyNTYgLyBjYWwtPmFbNl07Ci0tICB4eXNjYWxlID0gY2FsLT5hWzJdICogMjU2IC8gY2FsLT5hWzZdOwotLSAgeXhzY2FsZSA9IGNhbC0+YVs0XSAqIDI1NiAvIGNhbC0+YVs2XTsKLS0gIAotLSAgdGMueHRyYW5zID0geHRyYW5zOwotLSAgdGMueXRyYW5zID0geXRyYW5zOwotLSAgdGMueHNjYWxlID0geHNjYWxlOwotLSAgdGMueXNjYWxlID0geXNjYWxlOwotLSAgdGMueHlzd2FwID0gMDsKLS0KLS0gIHByaW50ZiAoIiVkICVkICVkICVkICVkXG4iLCB0Yy54c2NhbGUsIHRjLnh0cmFucywgdGMueXNjYWxlLCB0Yy55dHJhbnMsIHRjLnh5c3dhcCk7Ci0tCi0tICBpZiAoaW9jdGwgKHRzX2ZkLCBUU19TRVRfQ0FMLCAodm9pZCAqKSZ0YykgIT0gMCkKLS0gICAgewotLSAgICAgIHBlcnJvciAoIlRTX1NFVF9DQUwiKTsKLS0gICAgICBleGl0ICgxKTsKLS0gICAgfQotIH0KLSAKLSB2b2lkCi1AQCAtMzk4LDgwICszNjQsMTMgQEAgaGFuZGxlX3RzX2V2ZW50IChpbnQgeCwgaW50IHksIGludCBwcmVzcwotIH0KLSAKLSB2b2lkCi0tcmVhZF90cyAodm9pZCkKLS17Ci0tICBUU19FVkVOVCB0c19ldjsKLS0gIGludCByOwotLQotLSAgciA9IHJlYWQgKHRzX2ZkLCAmdHNfZXYsIHNpemVvZiAodHNfZXYpKTsKLS0gIGlmIChyID09IHNpemVvZiAodHNfZXYpKQotLSAgICBoYW5kbGVfdHNfZXZlbnQgKHRzX2V2LngsIHRzX2V2LnksIHRzX2V2LnByZXNzdXJlKTsKLS19Ci0tCi0tdm9pZAotLWRvX2NhbCAoY2hhciAqKmFyZ3MpCi0tewotLSAgVFNfQ0FMIHRjOwotLQotLSAgdGMueHNjYWxlID0gYXRvaSAoYXJnc1swXSk7Ci0tICB0Yy54dHJhbnMgPSBhdG9pIChhcmdzWzFdKTsKLS0gIHRjLnlzY2FsZSA9IGF0b2kgKGFyZ3NbMl0pOwotLSAgdGMueXRyYW5zID0gYXRvaSAoYXJnc1szXSk7Ci0tICB0Yy54eXN3YXAgPSBhdG9pIChhcmdzWzRdKTsKLS0KLS0gIGlmIChmbGFnX2RlYnVnKQotLSAgICBmcHJpbnRmIChzdGRlcnIsICJzZXR0aW5nOiAlZCAlZCAlZCAlZCAlZFxuIiwgCi0tCSAgICAgdGMueHRyYW5zLCB0Yy55dHJhbnMsIHRjLnhzY2FsZSwgdGMueXNjYWxlLCB0Yy54eXN3YXApOwotLSAgICAKLS0gIGlmIChpb2N0bCAodHNfZmQsIFRTX1NFVF9DQUwsICh2b2lkICopJnRjKSAhPSAwKQotLSAgICB7Ci0tICAgICAgcGVycm9yICgiVFNfU0VUX0NBTCIpOwotLSAgICAgIGV4aXQgKDEpOwotLSAgICB9Ci0tICAKLS0gIGV4aXQgKDApOwotLX0KLS0KLS12b2lkCi0tc2hvd19jYWwgKHZvaWQpCi0tewotLSAgVFNfQ0FMIHRjOwotLQotLSAgaWYgKGlvY3RsICh0c19mZCwgVFNfR0VUX0NBTCwgKHZvaWQgKikmdGMpICE9IDApCi0tICAgIHsKLS0gICAgICBwZXJyb3IgKCJUU19HRVRfQ0FMIik7Ci0tICAgICAgZXhpdCAoMSk7Ci0tICAgIH0KLS0KLS0gIHByaW50ZiAoIiVkICVkICVkICVkICVkXG4iLCB0Yy54c2NhbGUsIHRjLnh0cmFucywgdGMueXNjYWxlLCB0Yy55dHJhbnMsIHRjLnh5c3dhcCk7Ci0tfQotLQotLXZvaWQKLSB1c2FnZSAoY29uc3QgY2hhciAqbmFtZSkKLSB7Ci0tICBmcHJpbnRmIChzdGRlcnIsICJ1c2FnZTogJXMgLXZpZXdcbiIsIG5hbWUpOwotLSAgZnByaW50ZiAoc3RkZXJyLCAiICAgICAgICVzIFstcm90YXRlIDwwIHwgOTAgfCAxODAgfCAyNzA+XVxuIiwgbmFtZSk7Ci0tICBmcHJpbnRmIChzdGRlcnIsICIgICAgICAgJXMgLWNhbCA8eHM+IDx4dD4gPHlzPiA8eXQ+IDx4eXN3YXA+XG4iLCBuYW1lKTsKLS0KLSsgIGZwcmludGYgKHN0ZGVyciwgInVzYWdlOiAlcyBbLWRlYnVnXVxuIiwgbmFtZSk7Ci0gICBleGl0ICgxKTsKLSB9Ci0gCi0gaW50Ci0teHJyX3N1cHBvcnRlZCAodm9pZCkKLS17Ci0tICBpbnQgeHJyX2V2ZW50X2Jhc2UsIHhycl9lcnJvcl9iYXNlOwotLSAgaW50IHhycl9tYWpvciwgeHJyX21pbm9yOwotLQotLSAgaWYgKFhSUlF1ZXJ5RXh0ZW5zaW9uIChkcHksICZ4cnJfZXZlbnRfYmFzZSwgJnhycl9lcnJvcl9iYXNlKSA9PSBGYWxzZQotLSAgICAgIHx8IFhSUlF1ZXJ5VmVyc2lvbiAoZHB5LCAmeHJyX21ham9yLCAmeHJyX21pbm9yKSA9PSAwCi0tICAgICAgfHwgeHJyX21ham9yICE9IDEKLS0gICAgICB8fCB4cnJfbWlub3IgPCAxKQotLSAgICByZXR1cm4gMDsKLS0KLS0gIHJldHVybiAxOwotLX0KLS0KLS1pbnQKLSBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLSAgIFhTZXRXaW5kb3dBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci1AQCAtNDgwLDMxICszNzksMTEgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGludCBtYXhfZmQ7Ci0gICBHQyBiZ19nYzsKLSAgIGludCBpOwotLSAgaW50IGhhdmVfeHJhbmRyOwotIAotICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIGlmICghc3RyY21wIChhcmd2W2ldLCAiLXZpZXciKSkKLS0JewotLQkgIHNob3dfY2FsICgpOwotLQkgIGV4aXQgKDApOwotLQl9Ci0tICAgICAgZWxzZSBpZiAoIXN0cmNtcCAoYXJndltpXSwgIi1kZWJ1ZyIpKQotKyAgICAgIGlmICghc3RyY21wIChhcmd2W2ldLCAiLWRlYnVnIikpCi0gCWZsYWdfZGVidWcgPSAxOwotLSAgICAgIGVsc2UgaWYgKCFzdHJjbXAgKGFyZ3ZbaV0sICItY2FsIikpCi0tCXsKLS0JICBpZiAoYXJnYyA+IChpICsgNSkpCi0tCSAgICBkb19jYWwgKGFyZ3YgKyBpICsgMSk7Ci0tCSAgZWxzZQotLQkgICAgdXNhZ2UgKGFyZ3ZbMF0pOwotLQl9Ci0tICAgICAgZWxzZSBpZiAoIXN0cmNtcCAoYXJndltpXSwgIi1yb3RhdGUiKSkKLS0JewotLQkgIGlmIChhcmdjID4gKGkgKyAxKSkKLS0JICAgIHJvdGF0aW9uID0gYXRvaSAoYXJndlsrK2ldKTsKLS0JICBlbHNlCi0tCSAgICB1c2FnZSAoYXJndlswXSk7Ci0tCX0KLSAgICAgICBlbHNlCi0gCXVzYWdlIChhcmd2WzBdKTsKLSAgICAgfQotQEAgLTUzMSw0OCArNDEwLDExIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgZnByaW50ZiAoc3RkZXJyLCAiZmFpbGVkIHRvIHNldCByYXcgbW9kZTogZXJyb3IgJWRcbiIsIHIpOwotIAkgIGV4aXQgKDEpOwotIAl9Ci0tCi0tICAgICAgdXNpbmdfeGNhbGlicmF0ZSA9IDE7Ci0tICAgIH0KLS0KLS0gIGhhdmVfeHJhbmRyID0geHJyX3N1cHBvcnRlZCAoKTsKLS0gIGlmIChoYXZlX3hyYW5kcikKLS0gICAgewotLSAgICAgIFhSUlNjcmVlbkNvbmZpZ3VyYXRpb24gKnJyX3NjcmVlbjsKLS0gICAgICBSb3RhdGlvbiBjdXJyZW50X3JvdGF0aW9uOwotLQotLSAgICAgIGlmIChmbGFnX2RlYnVnKQotLQlmcHJpbnRmIChzdGRlcnIsICJYUkFORFIgaXMgc3VwcG9ydGVkXG4iKTsKLS0KLS0gICAgICBycl9zY3JlZW4gPSBYUlJHZXRTY3JlZW5JbmZvIChkcHksIFJvb3RXaW5kb3cgKGRweSwgc2NyZWVuKSk7Ci0tCi0tICAgICAgWFJSUm90YXRpb25zIChkcHksIHNjcmVlbiwgJmN1cnJlbnRfcm90YXRpb24pOwotLQotLSAgICAgIFhSUkZyZWVTY3JlZW5Db25maWdJbmZvIChycl9zY3JlZW4pOwotLQotLSAgICAgIGlmIChmbGFnX2RlYnVnKQotLQlmcHJpbnRmIChzdGRlcnIsICJDdXJyZW50IFJBTkRSIHJvdGF0aW9uIGlzICVkXG4iLCBjdXJyZW50X3JvdGF0aW9uKTsKLS0KLS0gICAgICBzd2l0Y2ggKGN1cnJlbnRfcm90YXRpb24pCi0tCXsKLS0JY2FzZSBSUl9Sb3RhdGVfMjcwOgotLQkgIHJvdGF0aW9uICs9IDkwOwotLQljYXNlIFJSX1JvdGF0ZV8xODA6Ci0tCSAgcm90YXRpb24gKz0gOTA7Ci0tCWNhc2UgUlJfUm90YXRlXzkwOgotLQkgIHJvdGF0aW9uICs9IDkwOwotLQkgIHJvdGF0aW9uICU9IDM2MDsKLS0JY2FzZSBSUl9Sb3RhdGVfMDoKLS0JICBicmVhazsKLS0JZGVmYXVsdDoKLS0JICBmcHJpbnRmIChzdGRlcnIsICJVbmtub3duIFJBTkRSIHJvdGF0aW9uOiAlZFxuIiwgY3VycmVudF9yb3RhdGlvbik7Ci0tCSAgYnJlYWs7Ci0tCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgaWYgKGZsYWdfZGVidWcpCi0tCWZwcmludGYgKHN0ZGVyciwgIlhSQU5EUiBub3Qgc3VwcG9ydGVkXG4iKTsKLSsgICAgICBwZXJyb3IgKCJYQ0FMSUJSQVRFIGV4dGVuc2lvbiBtaXNzaW5nIik7Ci0rICAgICAgZXhpdCAoMSk7Ci0gICAgIH0KLSAKLSAgIGF0dHJpYnV0ZXMub3ZlcnJpZGVfcmVkaXJlY3QgPSBmbGFnX2RlYnVnID8gRmFsc2UgOiBUcnVlOwotQEAgLTY2Niw0NSArNTA4LDE3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgTlJfUE9JTlRTOyBpKyspCi0gICAgIHsKLS0gICAgICBzd2l0Y2ggKHJvdGF0aW9uKQotLQl7Ci0tCWNhc2UgMDoKLS0JICBjYWwueGZiW2ldID0gY2FsLnhzY3JbaV07Ci0tCSAgY2FsLnlmYltpXSA9IGNhbC55c2NyW2ldOwotLQkgIGJyZWFrOwotLQljYXNlIDkwOgotLQkgIGNhbC54ZmJbaV0gPSBjYWwueXNjcltpXTsKLS0JICBjYWwueWZiW2ldID0gc2NyZWVuX3ggLSBjYWwueHNjcltpXTsKLS0JICBicmVhazsKLS0JY2FzZSAxODA6Ci0tCSAgY2FsLnhmYltpXSA9IHNjcmVlbl94IC0gY2FsLnhzY3JbaV07Ci0tCSAgY2FsLnlmYltpXSA9IHNjcmVlbl95IC0gY2FsLnlzY3JbaV07Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgMjcwOgotLQkgIGNhbC54ZmJbaV0gPSBzY3JlZW5feSAtIGNhbC55c2NyW2ldOwotLQkgIGNhbC55ZmJbaV0gPSBjYWwueHNjcltpXTsKLS0JICBicmVhazsKLS0JfQotKyAgICAgIGNhbC54ZmJbaV0gPSBjYWwueHNjcltpXTsKLSsgICAgICBjYWwueWZiW2ldID0gY2FsLnlzY3JbaV07Ci0rICAgICAgWENhbGlicmF0ZVNjcmVlblRvQ29vcmQgKGRweSwgJmNhbC54ZmJbaV0sICZjYWwueWZiW2ldKTsKLSAKLSAgICAgICBpZiAoZmxhZ19kZWJ1ZykKLS0JcHJpbnRmICgicm90YXRpb24gJWQ6ICglZCwlZCkgLT4gKCVkLCVkKVxuIiwgcm90YXRpb24sIAotKwlwcmludGYgKCJyb3RhdGlvbiBjb252ZXJzaW9uOiAoJWQsJWQpIC0+ICglZCwlZClcbiIsCi0gCQljYWwueHNjcltpXSwgY2FsLnlzY3JbaV0sIGNhbC54ZmJbaV0sIGNhbC55ZmJbaV0pOwotICAgICB9Ci0gCi0gICBuZXh0X2V2ZW50ICgpOwotIAotLSAgaWYgKCF1c2luZ194Y2FsaWJyYXRlKQotLSAgICB7Ci0tICAgICAgdHNfZmQgPSBvcGVuIChSQVdfREVWSUNFLCBPX1JET05MWSk7Ci0tICAgICAgaWYgKHRzX2ZkIDwgMCkKLS0JewotLQkgIHBlcnJvciAoUkFXX0RFVklDRSk7Ci0tCSAgZXhpdCAoMSk7Ci0tCX0KLS0gICAgfQotLQotLSAgbWF4X2ZkID0gKHhmZCA+IHRzX2ZkKSA/IHhmZCA6IHRzX2ZkOwotLQotICAgZm9yICg7OykKLSAgICAgewotICAgICAgIGZkX3NldCBmZHM7Ci1AQCAtNzEzLDEyICs1MjcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAotICAgICAgIEZEX1pFUk8gKCZmZHMpOwotICAgICAgIEZEX1NFVCAoeGZkLCAmZmRzKTsKLS0gICAgICBpZiAodHNfZmQgIT0gLTEpCi0tCUZEX1NFVCAodHNfZmQsICZmZHMpOwotIAotLSAgICAgIHNlbGVjdCAobWF4X2ZkICsgMSwgJmZkcywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0tICAgICAgCi0tICAgICAgaWYgKHRzX2ZkICE9IC0xICYmIEZEX0lTU0VUICh0c19mZCwgJmZkcykpCi0tCXJlYWRfdHMgKCk7Ci0rICAgICAgc2VsZWN0ICh4ZmQgKyAxLCAmZmRzLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgfQotIH0KLSsKLUluZGV4OiB4dHNjYWwtMC42LjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geHRzY2FsLTAuNi4zLm9yaWcvY29uZmlndXJlLmFjCTIwMDQtMDktMTAgMjA6MTE6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgeHRzY2FsLTAuNi4zL2NvbmZpZ3VyZS5hYwkyMDA3LTA3LTAxIDAxOjEyOjU1LjAwMDAwMDAwMCArMDEwMAotQEAgLTksOCArOSw3IEBAIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gZGlzdC1iemlwMl0pCi0gIyBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ0MKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4cmFuZHIgeGNhbGlicmF0ZSkKLStQS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4Y2FsaWJyYXRlKQotIAotIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGVdKQotLUFDX0NPTkZJR19GSUxFUyhbeHRzY2FsXSkKLSBBQ19PVVRQVVQKLUluZGV4OiB4dHNjYWwtMC42LjMvZ3BlLWRpc3QuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9ncGUtZGlzdC5hbQkyMDA0LTA2LTAyIDIzOjA3OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotQEAgLTEsMTIgKzAsMCBAQAotLUNWU1RBRyA6PSAkKHNoZWxsIGVjaG8gJChQQUNLQUdFKS0kKFZFUlNJT04pIHwgdHIgW2Etei5dIFtBLVpfXSkKLS0KLS1kaXN0LXVwbG9hZDogZGlzdAotLQlzY3AgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci5iejIgJChVU0VSKUBoYW5kaGVsZHMub3JnOi9ob21lL2Z0cC9wdWIvcHJvamVjdHMvZ3BlL3NvdXJjZS8KLS0KLS10YWc6Ci0tCWN2cyB0YWcgJChDVlNUQUcpCi0tCi0tcmV0YWc6Ci0tCWN2cyB0YWcgLUYgJChDVlNUQUcpCi0tCi0tc291cmNlOiB0YWcgZGlzdC11cGxvYWQKLUluZGV4OiB4dHNjYWwtMC42LjMvaDM2MDBfdHMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHh0c2NhbC0wLjYuMy5vcmlnL2gzNjAwX3RzLmgJMjAwMy0wNy0wNSAxNzoyNzoxMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLUBAIC0xLDIxNiArMCwwIEBACi0tLyoKLS0qCi0tKiBEcml2ZXIgZm9yIHRoZSBIMzYwMCBUb3VjaCBTY3JlZW4gYW5kIG90aGVyIEF0bWVsIGNvbnRyb2xsZWQgZGV2aWNlcy4KLS0qCi0tKiBDb3B5cmlnaHQgMjAwMCBDb21wYXEgQ29tcHV0ZXIgQ29ycG9yYXRpb24uCi0tKgotLSogVXNlIGNvbnNpc3RlbnQgd2l0aCB0aGUgR05VIEdQTCBpcyBwZXJtaXR0ZWQsCi0tKiBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcwotLSogcHJlc2VydmVkIGluIGl0cyBlbnRpcmV0eSBpbiBhbGwgY29waWVzIGFuZCBkZXJpdmVkIHdvcmtzLgotLSoKLS0qIENPTVBBUSBDT01QVVRFUiBDT1JQT1JBVElPTiBNQUtFUyBOTyBXQVJSQU5USUVTLCBFWFBSRVNTRUQgT1IgSU1QTElFRCwKLS0qIEFTIFRPIFRIRSBVU0VGVUxORVNTIE9SIENPUlJFQ1RORVNTIE9GIFRISVMgQ09ERSBPUiBJVFMKLS0qIEZJVE5FU1MgRk9SIEFOWSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0tKgotLSogQXV0aG9yOiBDaGFybGVzIEZseW5uLgotLSoKLS0qLwotLQotLQotLSNpZm5kZWYgX19IMzYwMF9UU19IX18KLS0jZGVmaW5lIF9fSDM2MDBfVFNfSF9fCi0tCi0tI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Ci0tCi0tZW51bSBoMzYwMF90c19taW5vcl9kZXZpY2VzIHsKLS0JVFNfTUlOT1IgICAgPSAwLAotLQlUU1JBV19NSU5PUiA9IDEsCi0tCUtFWV9NSU5PUiAgID0gMgotLX07Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfY2FsaWJyYXRpb24gewotLSAgICAgICAgaW50IHhzY2FsZTsKLS0gICAgICAgIGludCB4dHJhbnM7Ci0tICAgICAgICBpbnQgeXNjYWxlOwotLSAgICAgICAgaW50IHl0cmFuczsKLS0gICAgICAgIGludCB4eXN3YXA7Ci0tfSBUU19DQUw7Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfZXZlbnQgewotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgcHJlc3N1cmU7Ci0tICAgICAgICB1bnNpZ25lZCBzaG9ydCB4OwotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgeTsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBhZDsKLS19IFRTX0VWRU5UOwotLQotLS8qIERlcHJlY2F0ZWQgLSBkbyBub3QgdXNlICovCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfcmV0dXJuIHsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHByZXNzdXJlOwotLSAgICAgICAgdW5zaWduZWQgc2hvcnQgeDsKLS0gICAgICAgIHVuc2lnbmVkIHNob3J0IHk7Ci0tICAgICAgICB1bnNpZ25lZCBzaG9ydCBwYWQ7Ci0tfSBUU19SRVQ7Ci0tCi0tZW51bSBwb3dlcl9idXR0b25fbW9kZSB7Ci0tICAgUEJNX1NVU1BFTkQgICAgICAgICAgID0gMCwKLS0gICBQQk1fR0VORVJBVEVfS0VZUFJFU1MgPSAxCi0tfTsKLS0KLS0KLS0vKiArKysrKysrKysrKysrKyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgdGhlcm1fZGV2IHsKLS0Jc2hvcnQgZGF0YTsKLS19IFRIRVJNX0RFVjsKLS0KLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9BTEtBTElORSAgICAgICAgMHgwMQotLSNkZWZpbmUgSDM2MDBfQkFUVF9DSEVNX05JQ0QgICAgICAgICAgICAweDAyCi0tI2RlZmluZSBIMzYwMF9CQVRUX0NIRU1fTklNSCAgICAgICAgICAgIDB4MDMKLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9MSU9OICAgICAgICAgICAgMHgwNAotLSNkZWZpbmUgSDM2MDBfQkFUVF9DSEVNX0xJUE9MWSAgICAgICAgICAweDA1Ci0tI2RlZmluZSBIMzYwMF9CQVRUX0NIRU1fTk9UX0lOU1RBTExFRCAgIDB4MDYKLS0jZGVmaW5lIEgzNjAwX0JBVFRfQ0hFTV9VTktOT1dOICAgICAgICAgMHhmZgotLQotLS8qIFRoZXNlIHNob3VsZCBtYXRjaCB0aGUgYXBtX2Jpb3MuaCBkZWZpbml0aW9ucyAqLwotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX09GRkxJTkUJMHgwMAotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX09OTElORQkweDAxCi0tI2RlZmluZSBIMzYwMF9BQ19TVEFUVVNfQUNfQkFDS1VQCTB4MDIgICAvKiBXaGF0IGRvZXMgdGhpcyBtZWFuPyAqLwotLSNkZWZpbmUgSDM2MDBfQUNfU1RBVFVTX0FDX1VOS05PV04JMHhmZgotLQotLS8qIFRoZXNlIGJpdGZpZWxkcyBhcmUgcmFyZWx5ICJvcidkIiB0b2dldGhlciAqLwotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfSElHSAkJMHgwMQotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfTE9XCQkweDAyCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DUklUSUNBTAkweDA0Ci0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DSEFSR0lORwkweDA4Ci0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19DSEFSR0VfTUFJTiAgIDB4MTAKLS0jZGVmaW5lIEgzNjAwX0JBVFRfU1RBVFVTX0RFQUQgICAgICAgICAgMHgyMCAgIC8qIEJhdHRlcnkgd2lsbCBub3QgY2hhcmdlICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX05PVF9JTlNUQUxMRUQgICAgICAgIDB4MjAgICAvKiBGb3IgZXhwYW5zaW9uIHBhY2sgYmF0dGVyaWVzICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19GVUxMICAgICAgICAgIDB4NDAgICAvKiBCYXR0ZXJ5IGZ1bGx5IGNoYXJnZWQgKGFuZCBjb25uZWN0ZWQgdG8gQUMpICovCi0tI2RlZmluZSBIMzYwMF9CQVRUX1NUQVRVU19OT0JBVFQJMHg4MAotLSNkZWZpbmUgSDM2MDBfQkFUVF9TVEFUVVNfVU5LTk9XTgkweGZmCi0tCi0tc3RydWN0IGJhdHRlcnlfZGF0YSB7Ci0tCXVuc2lnbmVkIGNoYXIgIGNoZW1pc3RyeTsKLS0JdW5zaWduZWQgY2hhciAgc3RhdHVzOwotLQl1bnNpZ25lZCBzaG9ydCB2b2x0YWdlOyAgICAvKiBWb2x0YWdlIGZvciBiYXR0ZXJ5ICMwOyB1bmtub3duIGZvciBiYXR0ZXJ5ICMxICovCi0tCXVuc2lnbmVkIHNob3J0IHBlcmNlbnRhZ2U7IC8qIFBlcmNlbnRhZ2Ugb2YgZnVsbCBjaGFyZ2UgKi8KLS0JdW5zaWduZWQgc2hvcnQgbGlmZTsgICAgICAgLyogTGlmZSByZW1haW5pbmcgaW4gbWludXRlcyAqLwotLX07Ci0tCi0tc3RydWN0IGgzNjAwX2JhdHRlcnkgewotLSAgICAgICAgdW5zaWduZWQgY2hhciAgICAgICBhY19zdGF0dXM7Ci0tCXVuc2lnbmVkIGNoYXIgICAgICAgYmF0dGVyeV9jb3VudDsgIC8qIEhvdyBtYW55IGJhdHRlcmllcyB3ZSBoYXZlICovCi0tCXN0cnVjdCBiYXR0ZXJ5X2RhdGEgYmF0dGVyeVsyXTsKLS19OwotLQotLS8qIC0tLS0tLS0tIEVFUFJPTSBhbmQgU1BJIEludGVyZmFjZXMgLS0tLS0tLS0tLS0tLS0tKi8KLS0KLS0jZGVmaW5lIEVFUFJPTV9SRF9CVUZTSVogNgkvKiBFRVBST00gcmVhZHMgYXJlIDE2IGJpdHMgKi8KLS0jZGVmaW5lIEVFUFJPTV9XUl9CVUZTSVogNQkvKiBBbGxvdyByb29tIGZvciA4Yml0ICdhZGRyJyBmaWVsZCBpbiBidWZmZXIqLyAKLS0jZGVmaW5lIFNQSV9SRF9CVUZTSVoJIDE2CS8qIFNQSSByZWFkcyBhcmUgOCBiaXRzICovCi0tI2RlZmluZSBTUElfV1JfQlVGU0laCSA3Ci0tCi0tLyogVGhlIEVFUFJPTSBpcyB3aGVyZSBpbnRlcm5hbCBwcm9ncmFtcyBhcmUgc3RvcmVkIG9uIHRoZSBBbXRlbC4KLS0gICBZb3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byByZWFkIG9yIHdyaXRlIHRoZXNlIHZhbHVlcyAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX2VlcHJvbV9yZWFkX3JlcXVlc3QgewotLQl1bnNpZ25lZCBjaGFyIGFkZHI7ICAgIC8qIDhiaXQgQWRkcmVzcyBPZmZzZXQgMC0yNTUgKi8KLS0JdW5zaWduZWQgY2hhciBsZW47ICAgICAvKiBOdW1iZXIgb2YgMTZiaXQgd29yZHMgdG8gcmVhZCAwLTEyOCAgKi8KLS0JdW5zaWduZWQgc2hvcnQgYnVmZltFRVBST01fUkRfQlVGU0laXTsKLS19IEVFUFJPTV9SRUFEOwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX2VlcHJvbV93cml0ZV9yZXF1ZXN0IHsKLS0JdW5zaWduZWQgY2hhciBsZW47CS8qIHVzZWQgb25seSB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAqLwotLQl1bnNpZ25lZCBjaGFyIGFkZHI7ICAgIC8qIDAtMTI4ICAqLwotLQl1bnNpZ25lZCBzaG9ydCBidWZmW0VFUFJPTV9XUl9CVUZTSVpdOwotLX0gRUVQUk9NX1dSSVRFOwotLQotLS8qIFRoZSBTUEkgYnVzIGNvbm5lY3RzIHRvIEVFUFJPTXMgbG9jYXRlZCBvbiBzbGVldmVzIHBsdWdnZWQgaW50bwotLSAgIHRoZSBpUEFRLiAgWW91IG1heSB3YW50IHRvIHJlYWQgdGhlc2UgdmFsdWVzICAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3NwaV9yZWFkX3JlcXVlc3QgewotLQl1bnNpZ25lZCBzaG9ydCBhZGRyOyAgICAvKiAxNmJpdCBBZGRyZXNzIE9mZnNldCAwLTEyOCAqLwotLQl1bnNpZ25lZCBjaGFyIGxlbjsgICAgICAvKiBOdW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCAqLwotLQl1bnNpZ25lZCBjaGFyIGJ1ZmZbU1BJX1JEX0JVRlNJWl07Ci0tfSBTUElfUkVBRDsKLS0KLS0jZGVmaW5lIFNQSV9SRUFEX1NUQVRVU19CWVRFICAweGZmZmYgICAvKiBVc2UgdGhpcyBhZGRyZXNzIHRvIHJlYWQgdGhlIHN0YXR1cyBieXRlICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfc3BpX3dyaXRlX3JlcXVlc3QgewotLQl1bnNpZ25lZCBzaG9ydCBsZW47CS8qIHVzZWQgb25seSB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gc2VuZCAqLwotLQl1bnNpZ25lZCBzaG9ydCBhZGRyOwkvKiB0aGlzIDE2Yml0IGFkZHJlc3MgYWNjZXNzZXMgYSBzaW5nbGUgYnl0ZSAqLwotLQl1bnNpZ25lZCBjaGFyICBidWZmW1NQSV9XUl9CVUZTSVpdOwotLX0gU1BJX1dSSVRFOwotLQotLQotLS8qIC0tLS0tLS0tIGVuZCBvZiBFRVBST00gYW5kIFNQSSBJbnRlcmZhY2VzIC0tLS0tLS0tLS0tLS0tLSovCi0tCi0tLyogVXNlciBzcGFjZSBzdHJ1Y3R1cmVzIGZvciBJT0NUTCBjYWxscyAqLwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3RzX3ZlcnNpb24gewotLQl1bnNpZ25lZCBjaGFyIGhvc3RfdmVyc2lvbls4XTsJLyogYXNjaWkgIngueXkiICovCi0tCXVuc2lnbmVkIGNoYXIgcGFja192ZXJzaW9uWzhdOwkvKiBhc2NpaSAieC55eSIgKi8KLS0JdW5zaWduZWQgY2hhciBib290X3R5cGU7CQkvKiBUT0RPID8/ICovCi0tfSBWRVJfUkVUOwotLQotLXR5cGVkZWYgc3RydWN0IGgzNjAwX3RzX2xlZCB7Ci0tICAgICAgICB1bnNpZ25lZCBjaGFyIE9mZk9uQmxpbms7ICAgICAgIC8qIDA9b2ZmIDE9b24gMj1CbGluayAqLwotLSAgICAgICAgdW5zaWduZWQgY2hhciBUb3RhbFRpbWU7ICAgICAgICAvKiBVbml0cyBvZiA1IHNlY29uZHMgKi8KLS0gICAgICAgIHVuc2lnbmVkIGNoYXIgT25UaW1lOyAgICAgICAgICAgLyogdW5pdHMgb2YgMTAwbS9zICovCi0tICAgICAgICB1bnNpZ25lZCBjaGFyIE9mZlRpbWU7ICAgICAgICAgIC8qIHVuaXRzIG9mIDEwMG0vcyAqLwotLX0gTEVEX0lOOwotLQotLWVudW0gZmxpdGVfbW9kZSB7Ci0tICAgICAgICBGTElURV9NT0RFMSA9IDEsCi0tCUZMSVRFX0FVVE9fTU9ERSAgID0gMSwgICAgIC8qIGZvciByZWZlcmVuY2Ugb25seSAqLwotLQlGTElURV9NQU5VQUxfTU9ERSA9IDIsICAgICAvKiBVc2UgdGhpcyBub3JtYWxseT8gKi8KLS0JRkxJVEVfR0VUX0xJR0hUX1NFTlNPUiA9IDMgLyogUmV0dXJucyBsaWdodCByZWFkaW5nIGluICJicmlnaHRuZXNzIiBmaWVsZCAqLwotLX07Ci0tZW51bSBmbGl0ZV9wd3IgewotLSAgICAgICAgRkxJVEVfUFdSX09GRiA9IDAsCi0tICAgICAgICBGTElURV9QV1JfT04gID0gMQotLX07Ci0tCi0tdHlwZWRlZiBzdHJ1Y3QgaDM2MDBfdHNfZmxpdGUgewotLSAgICAgICAgdW5zaWduZWQgY2hhciBtb2RlOwotLSAgICAgICAgdW5zaWduZWQgY2hhciBwd3I7Ci0tICAgICAgICB1bnNpZ25lZCBjaGFyIGJyaWdodG5lc3M7Ci0tfSBGTElURV9JTjsKLS0KLS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqIFVwZGF0ZWQgInVuaXZlcnNhbCIgc3RydWN0dXJlcyAqKioqKioqKioqKioqKioqKioqLwotLQotLS8qIFNldHMgYmFja2xpZ2h0IGZvciBib3RoIEgzMTAwIGFuZCBIMzYwMCBtb2RlbHMgLSB0ZWNobmljYWxseSAiZnJvbnRsaWdodCIgZm9yIEgzNjAwICovCi0tc3RydWN0IGgzNjAwX3RzX2JhY2tsaWdodCB7Ci0tCWVudW0gZmxpdGVfcHdyIHBvd2VyOyAgICAgICAgICAvKiAwID0gb2ZmLCAxID0gb24gKi8KLS0JdW5zaWduZWQgY2hhciAgYnJpZ2h0bmVzczsgICAgIC8qIDAgLSAyNTUgICAgICAgICAqLwotLX07Ci0tCi0tc3RydWN0IGgzNjAwX3RzX2NvbnRyYXN0IHsgICAgICAgICAgICAvKiBPbmx5IHVzZWZ1bCBvbiBIMzEwMCBtb2RlbCAqLwotLQl1bnNpZ25lZCBjaGFyIGNvbnRyYXN0OyAgICAgICAvKiAwIC0gMjU1ICovCi0tfTsKLS0KLS0vKiBJT0NUTCBjbWRzICB1c2VyIG9yIGtlcm5lbCBzcGFjZSAqLwotLQotLS8qIFVzZSAnZicgYXMgbWFnaWMgbnVtYmVyICovCi0tI2RlZmluZSBJT0NfSDM2MDBfVFNfTUFHSUMgICdmJwotLQotLS8qIFRPRE86IFNvbWUgb2YgdGhlc2UgSU9XUiB2YWx1ZXMgYXJlIGp1c3QgcGxhaW4gd3JvbmcgKi8KLS0jZGVmaW5lIEdFVF9WRVJTSU9OCQlfSU9SKElPQ19IMzYwMF9UU19NQUdJQywgIDEsIHN0cnVjdCBoMzYwMF90c192ZXJzaW9uICkKLS0jZGVmaW5lIFJFQURfRUVQUk9NCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIsIHN0cnVjdCBoMzYwMF9lZXByb21fcmVhZF9yZXF1ZXN0KQotLSNkZWZpbmUgV1JJVEVfRUVQUk9NCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDMsIHN0cnVjdCBoMzYwMF9lZXByb21fd3JpdGVfcmVxdWVzdCkKLS0jZGVmaW5lIEdFVF9USEVSTUFMCQlfSU9SKElPQ19IMzYwMF9UU19NQUdJQywgIDQsIHN0cnVjdCB0aGVybV9kZXYpCi0tI2RlZmluZSBMRURfT04JCQlfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgIDUsIHN0cnVjdCBoMzYwMF90c19sZWQpCi0tI2RlZmluZSBHRVRfQkFUVEVSWV9TVEFUVVMJX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsICA2LCBzdHJ1Y3QgaDM2MDBfYmF0dGVyeSkKLS0jZGVmaW5lIEZMSVRFX09OCQlfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgIDcsIHN0cnVjdCBoMzYwMF90c19mbGl0ZSkKLS0jZGVmaW5lIFJFQURfU1BJCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDgsIHN0cnVjdCBoMzYwMF9zcGlfcmVhZF9yZXF1ZXN0KQotLSNkZWZpbmUgV1JJVEVfU1BJCQlfSU9XUihJT0NfSDM2MDBfVFNfTUFHSUMsIDksIHN0cnVjdCBoMzYwMF9zcGlfd3JpdGVfcmVxdWVzdCkKLS0jZGVmaW5lIFRTX0dFVF9DQUwJCV9JT1IoSU9DX0gzNjAwX1RTX01BR0lDLCAxMCwgc3RydWN0IGgzNjAwX3RzX2NhbGlicmF0aW9uKQotLSNkZWZpbmUgVFNfU0VUX0NBTAkJX0lPVyhJT0NfSDM2MDBfVFNfTUFHSUMsIDExLCBzdHJ1Y3QgaDM2MDBfdHNfY2FsaWJyYXRpb24pCi0tCi0tLyogTmV3IElPQ1RMIGludGVyZmFjZXMgLSBkZWZpbmVkIHRvIGJlIG1vcmUgdXNlciBmcmllbmRseSAqLwotLSNkZWZpbmUgVFNfR0VUX0JBQ0tMSUdIVCAgICAgICAgX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIwLCBzdHJ1Y3QgaDM2MDBfdHNfYmFja2xpZ2h0KQotLSNkZWZpbmUgVFNfU0VUX0JBQ0tMSUdIVCAgICAgICAgX0lPVyhJT0NfSDM2MDBfVFNfTUFHSUMsIDIwLCBzdHJ1Y3QgaDM2MDBfdHNfYmFja2xpZ2h0KQotLSNkZWZpbmUgVFNfR0VUX0NPTlRSQVNUICAgICAgICAgX0lPUihJT0NfSDM2MDBfVFNfTUFHSUMsIDIxLCBzdHJ1Y3QgaDM2MDBfdHNfY29udHJhc3QpCi0tI2RlZmluZSBUU19TRVRfQ09OVFJBU1QgICAgICAgICBfSU9XKElPQ19IMzYwMF9UU19NQUdJQywgMjEsIHN0cnVjdCBoMzYwMF90c19jb250cmFzdCkKLS0KLS0jZW5kaWYKLUluZGV4OiB4dHNjYWwtMC42LjMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4dHNjYWwtMC42LjMub3JpZy9NYWtlZmlsZS5hbQkyMDA0LTA2LTAyIDIzOjA3OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIHh0c2NhbC0wLjYuMy9NYWtlZmlsZS5hbQkyMDA3LTA3LTAyIDEyOjUxOjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTEsMTEgKzEsOCBAQAotLWxpYmV4ZWNfUFJPR1JBTVMgPSB4dHNjYWwuYmluCi0tYmluX1NDUklQVFMgPSB4dHNjYWwKLStiaW5fUFJPR1JBTVMgPSB4dHNjYWwKLSAKLS14dHNjYWxfYmluX1NPVVJDRVMgPSBtYWluLmMgY2FsaWJyYXRlLmMgY2FsaWJyYXRlLmggaDM2MDBfdHMuaAotK3h0c2NhbF9TT1VSQ0VTID0gbWFpbi5jIGNhbGlicmF0ZS5jIGNhbGlicmF0ZS5oCi0gCi0teHRzY2FsX2Jpbl9MREFERCA9IEBYVFNDQUxfTElCU0AKLSt4dHNjYWxfTERBREQgPSBAWFRTQ0FMX0xJQlNACi0gCi0gSU5DTFVERVMgPSBAWFRTQ0FMX0NGTEFHU0AgLUROUl9QT0lOVFM9NQotIAotLWluY2x1ZGUgZ3BlLWRpc3QuYW0KLS0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveHRzY2FsL3h0c2NhbC9kc29fbGlua2luZ19jaGFuZ2VfYnVpbGRfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTQ1MzNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1hZnRlciBnY2MgbGlua2luZyBoYXMgY2hhbmdlZCwgYWxsIHRoZSBsaWJyYXJpZXMgbXVzdCBiZSBleHBsaWNpdGVseSBzcGVjaWZpZWQgCi1UaGlzIHBhdGNoIGF2b2lkcyB0aGlzIGxpbmtpbmcgZXJyb3I6Ci0KLXwgY2NhY2hlIGk1ODYtcG9reS1saW51eC1nY2MgLW1hcmNoPWk1ODYgLS1zeXNyb290PS9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy9pNTg2LXBva3ktbGludXggIC1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZyZW5hbWUtcmVnaXN0ZXJzIC1PMiAtZ2dkYiAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgIC1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkIC1vIHh0c2NhbCBtYWluLm8gY2FsaWJyYXRlLm8gLWxYMTEgLWxYZnQgLWxYZXh0IC1sWGNhbGlicmF0ZV5NCi18IC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvaTU4Ni1wb2t5LWxpbnV4L2djYy9pNTg2LXBva3ktbGludXgvNC41LjEvbGQ6IF4/OiBpbnZhbGlkIERTTyBmb3Igc3ltYm9sIGBYUmVuZGVyQ2hhbmdlUGljdHVyZScgZGVmaW5pdGlvbl5NCi18IC9kaXNrMC9wb2t5YnVpbGQvYnVpbGQxL3RtcC9zeXNyb290cy9pNTg2LXBva3ktbGludXgvdXNyL2xpYi9saWJYcmVuZGVyLnNvLjE6IGNvdWxkIG5vdCByZWFkIHN5bWJvbHM6IEJhZCB2YWx1ZV5NCi18IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzXk0KLXwgbWFrZTogKioqIFt4dHNjYWxdIEVycm9yIDEKLQotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IDIwMTEvMDEvMTEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiB4dHNjYWwtMC42LjMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geHRzY2FsLTAuNi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgeHRzY2FsLTAuNi4zL2NvbmZpZ3VyZS5hYwotQEAgLTksNyArOSw3IEBAIEFNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gZGlzdC1iemlwMl0pCi0gIyBDaGVja3MgZm9yIHByb2dyYW1zLgotIEFDX1BST0dfQ0MKLSAKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhYVFNDQUwsIHgxMSB4ZnQgeGV4dCB4Y2FsaWJyYXRlKQotK1BLR19DSEVDS19NT0RVTEVTKFhUU0NBTCwgeDExIHhmdCB4ZXh0IHhjYWxpYnJhdGUgeHJlbmRlcikKLSAKLSBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKLSBBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94dHNjYWwveHRzY2FsXzAuNi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWxfMC42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZmRkZjAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3h0c2NhbC94dHNjYWxfMC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlRvdWNoc2NyZWVuIGNhbGlicmF0aW9uIHV0aWxpdHkiCi0KLURFU0NSSVBUSU9OID0gIkJhc2ljIHRvdWNoc2NyZWVuIGNhbGlicmF0aW9uIHV0aWxpdHkiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9ncGUubGludXh0b2dvLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MubGludXh0b2dvLm9yZyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xMDttZDU9ODcyMWJjYjA4YWU5ZjI0ZTVmZTRjODI5NDE4NzNjODciCi0KLVNFQ1RJT04gPSAieDExL2Jhc2UiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGZ0IGxpYnhjYWxpYnJhdGUiCi0KLVBSID0gInIxMyIKLQotU1JDX1VSSSA9ICIke0dQRV9NSVJST1J9L3h0c2NhbC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2NoYW5nZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhbnVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rzb19saW5raW5nX2NoYW5nZV9idWlsZF9maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMzB4VHNfQ2FsaWJyYXRlLnNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWJjYWI4MGI0NzRkNTQ1NDQ3N2QxY2ExNjZhNjhjMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdiOWRjMjIwM2RlOWIxNzA2Y2EzOWZhNmNhODBlY2FiODgwNzkwOWVjOTAxYzRhMzQ1YjhlNDExNzg4MDBhMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L1gxMS9Yc2Vzc2lvbi5kLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9LzMweFRzX0NhbGlicmF0ZS5zaCAke0R9JHtzeXNjb25mZGlyfS9YMTEvWHNlc3Npb24uZC8KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvYnBmdG9vbC9icGZ0b29sLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9icGZ0b29sL2JwZnRvb2wuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQwNjUzYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvYnBmdG9vbC9icGZ0b29sLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiSW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSBlQlBGIHByb2dyYW1zIGFuZCBtYXBzIgorREVTQ1JJUFRJT04gPSAiYnBmdG9vbCBpcyBhIGtlcm5lbCB0b29sIGZvciBpbnNwZWN0aW9uIGFuZCBzaW1wbGUgbWFuaXB1bGF0aW9uIFwKK29mIGVCUEYgcHJvZ3JhbXMgYW5kIG1hcHMuIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKK0RFUEVORFMgPSAiYmludXRpbHMgZWxmdXRpbHMiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2JwZnRvb2wiCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uIGtlcm5lbHNyYyBrZXJuZWwtYXJjaAorCitkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BhdGNoIgorCitFWFRSQV9PRU1BS0UgPSAiLUMgJHtTfS90b29scy9icGYvYnBmdG9vbCBPPSR7Qn0gQ1JPU1M9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30iIExEPSIke0xEfSIgQVI9JHtBUn0gQVJDSD0ke0FSQ0h9IgorCitkb19jb25maWd1cmVbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK3B5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7CisgICAgZC5zZXRWYXIoJ1BLR1YnLCBkLmdldFZhcigiS0VSTkVMX1ZFUlNJT04iLCBUcnVlKS5zcGxpdCgiLSIpWzBdKQorfQorCitCID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9icm9hZGNvbS1idC1maXJtd2FyZS9icm9hZGNvbS1idC1maXJtd2FyZV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2Jyb2FkY29tLWJ0LWZpcm13YXJlL2Jyb2FkY29tLWJ0LWZpcm13YXJlX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzQ3NGVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9icm9hZGNvbS1idC1maXJtd2FyZS9icm9hZGNvbS1idC1maXJtd2FyZV9naXQuYmIKQEAgLTAsMCArMSw3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkJyb2FkY29tIEJsdWV0b290aCBmaXJtd2FyZSBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkZpcm13YXJlIGZvciBCcm9hZGNvbSBCbHVldG9vdGggZGV2aWNlcy4gTm90ZSB0aGF0IGluIGNhc2Ugb2YgQlQrV2lGaSBkZXZpY2VzLCBzZXBhcmF0ZSBXaUZpIGZpcm13YXJlIG1pZ2h0IGJlIG5lZWRlZC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2ludGVyaGVhcnQvYnJvYWRjb20tYnQtZmlybXdhcmUiCisKK0xJQ0VOU0UgPSAiRmlybXdhcmUtQnJvYWRjb20tV0lEQ09NTSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1Ccm9hZGNvbS1XSURDT01NXSA9ICJMSUNFTlNFLmJyb2FkY29tX2JjbTIwNzAyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmJyb2FkY29tX2JjbTIwNzAyO21kNT1jMGQ1ZWEwNTAyYjAwZGY3NDE3M2QwZjhhNDhiNjE5ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93aW50ZXJoZWFydC9icm9hZGNvbS1idC1maXJtd2FyZS5naXQiCitTUkNSRVYgPSAiYzBiZDkyOGI4YWU1NzU0YjYwNzdjOTlhZmU2ZWY1Yzk0OWE1OGYzMiIKK1BFID0gIjEiCitQViA9ICIwLjArZ2l0JHtTUkNQVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYWxsYXJjaAorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19jb21waWxlKCkgeworICAgIDoKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vCisgICAgY3AgYnJjbS8qLmhjZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLworCisgICAgIyBGb3IgbGljZW5zZSBwYWNrYWdlOgorICAgIGluc3RhbGwgLW0gMDY0NCBMSUNFTlNFLmJyb2FkY29tX2JjbTIwNzAyICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vCisKKyAgICAjIEZvciBtYWluIHBhY2thZ2U6CisgICAgaW5zdGFsbCAtbSAwNjQ0IERFVklDRVMubWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8KK30KKworUEFDS0FHRVMgPSsgIiBcCisgICAgJHtQTn0tYmNtMjA3MDJhMSBcCisgICAgJHtQTn0tYmNtMjA3MDJiMCBcCisgICAgJHtQTn0tYmNtMjA3MDNhMSBcCisgICAgJHtQTn0tYmNtNDMxNDJhMCBcCisgICAgJHtQTn0tYmNtNDMzNWMwIFwKKyAgICAke1BOfS1iY200MzUwYzUgXAorICAgICR7UE59LWJjbTQzNTZhMiBcCisgICAgJHtQTn0tYmNtNDM3MWMyIFwKKyAgICAke1BOfS1saWNlbnNlIFwKKyIKKworUkRFUEVORFNfJHtQTn0tYmNtMjA3MDJhMSA9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtMjA3MDJiMCA9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtMjA3MDNhMSA9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtNDMxNDJhMCA9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNWMwID0gIiR7UE59LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1iY200MzUwYzUgPSAiJHtQTn0tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTZhMiA9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtNDM3MWMyID0gIiR7UE59LWxpY2Vuc2UiCisKK0ZJTEVTXyR7UE59LWJjbTIwNzAyYTEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTTIwNzAyQTEqaGNkIgorRklMRVNfJHtQTn0tYmNtMjA3MDJiMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vQkNNMjA3MDJCMCpoY2QiCitGSUxFU18ke1BOfS1iY20yMDcwM2ExID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ00yMDcwM0ExKmhjZCIKK0ZJTEVTXyR7UE59LWJjbTQzMTQyYTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTTQzMTQyQTAqaGNkIgorRklMRVNfJHtQTn0tYmNtNDMzNWMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzM1QzAqaGNkIgorRklMRVNfJHtQTn0tYmNtNDM1MGM1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzUwQzUqaGNkIgorRklMRVNfJHtQTn0tYmNtNDM1NmEyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzU2QTIqaGNkIgorRklMRVNfJHtQTn0tYmNtNDM3MWMyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzcxQzIqaGNkIgorRklMRVNfJHtQTn0tbGljZW5zZSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0xJQ0VOU0UuYnJvYWRjb21fYmNtMjA3MDIiCisKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vKiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgorCisjIE1ha2UgYnJvYWRjb20tYnQtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgorcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGZpcm13YXJlX3BrZ3MgPSBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQorICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU19icm9hZGNvbS1idC1maXJtd2FyZScsICcgJyArICcgJy5qb2luKGZpcm13YXJlX3BrZ3MpKQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3B1cG93ZXIvY3B1cG93ZXIuYmIKaW5kZXggNGFiZDI3My4uNDU0NGY1YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcHVwb3dlci9jcHVwb3dlci5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NwdXBvd2VyL2NwdXBvd2VyLmJiCkBAIC0yLDcgKzIsNyBAQAogREVTQ1JJUFRJT04gPSAiY3B1cG93ZXIgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIHRvIGV4YW1pbmUgYW5kIHR1bmUgcG93ZXIgXAogc2F2aW5nIHJlbGF0ZWQgZmVhdHVyZXMgb2YgeW91ciBwcm9jZXNzb3IuIgogTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCiBERVBFTkRTID0gInBjaXV0aWxzIGdldHRleHQtbmF0aXZlIgogUFJPVklERVMgPSAidmlydHVhbC9jcHVwb3dlciIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZWE0OGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi1TVU1NQVJZID0gIktlcm5lbCBhbmFseXNpcyB1dGlsaXR5IGZvciBsaXZlIHN5c3RlbXMsIG5ldGR1bXAsIGRpc2tkdW1wLCBrZHVtcCwgTEtDRCBvciBtY29yZSBkdW1wZmlsZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgY29yZSBhbmFseXNpcyBzdWl0ZSBpcyBhIHNlbGYtY29udGFpbmVkIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0b1wKLWludmVzdGlnYXRlIGVpdGhlciBsaXZlIHN5c3RlbXMsIGtlcm5lbCBjb3JlIGR1bXBzIGNyZWF0ZWQgZnJvbSB0aGVcCi1uZXRkdW1wLCBkaXNrZHVtcCBhbmQga2R1bXAgcGFja2FnZXMgZnJvbSBSZWQgSGF0IExpbnV4LCB0aGUgbWNvcmUga2VybmVsIHBhdGNoXAotb2ZmZXJlZCBieSBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBvciB0aGUgTEtDRCBrZXJuZWwgcGF0Y2guIgotCi1IT01FUEFHRSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vYW5kZXJzb24iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gInpsaWIgcmVhZGxpbmUgY29yZXV0aWxzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItNy42LnRhci5nejtuYW1lPWdkYjtzdWJkaXI9JHtCUH0gXAotICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYXNoLWZpeC1idWlsZC1lcnJvci11bmtub3duLXR5cGUtbmFtZS1nZGJfZnByZWdzZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jcmFzaC1kZXRlY3QtdGhlLXN5c3Jvb3Qtcy1nbGliYy1oZWFkZXItZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ODg5OWRlMzExOGUwNGNmYTQwYTIzNjRmNTYxODE5MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDA3NmUxZmVmYjQxYWExNzhhZDNlMWNlZjY1MTE2NzBlZmM0N2RlNWNiMDRkNGFmOWJkZDRlOGYyZjE4Y2JjIgotCi1TUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgotU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgotCi1pbmhlcml0IGdldHRleHQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgY3Jvc3MiCi1UQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKLQotIyBjcmFzaCA3LjEuMyBhbmQgYmVmb3JlIGRvbid0IHN1cHBvcnQgbWlwczY0Ci1DT01QQVRJQkxFX0hPU1QgPSAiXig/IW1pcHM2NCkuKiIKLQotRVhUUkFfT0VNQUtFID0gJ1JQTVBLRz0iJHtQVn0iIFwKLSAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke1RBUkdFVF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAotICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKLSAgICAgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCi0gICAgICAgICAgICAgICAgJwotCi1FWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnUlBNUEtHPSIke1BWfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7QlVJTERfU1lTfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCR7R0RCX0NPTkZfRkxBR1N9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgotCi1SRU1PVkVfTTMyID0gInNlZCAtaSAtZSAncy8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NC4qLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0XHRcIlRBUkdFVF9DRkxBR1M9LURfRklMRV9PRkZTRVRfQklUUz02NFwiL2cnICR7U30vY29uZmlndXJlLmMiCi0KLVJFTU9WRV9NMzJfY2xhc3MtY3Jvc3MgPSAiIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgOgotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotICAgICAgICBhYXJjaDY0KikgICAgQVJDSD1BUk02NCA7OwotICAgICAgICBhcm0qKSAgICAgICAgQVJDSD1BUk0gOzsKLSAgICAgICAgaSo4NiopICAgICAgIEFSQ0g9WDg2IDs7Ci0gICAgICAgIHg4Nl82NCopICAgICBBUkNIPVg4Nl82NCA7OwotICAgICAgICBwb3dlcnBjNjQqKSAgQVJDSD1QUEM2NCA7OwotICAgICAgICBwb3dlcnBjKikgICAgQVJDSD1QUEMgOzsKLSAgICAgICAgbWlwcyopICAgICAgIEFSQ0g9TUlQUyA7OwotICAgIGVzYWMKLQotICAgIHNlZCAtaSBzL0ZPUkNFX0RFRklORV9BUkNILyIke0FSQ0h9Ii9nICR7U30vY29uZmlndXJlLmMKLSAgICAke1JFTU9WRV9NMzJ9Ci0gICAgc2VkIC1pICdzLyZndDsvPi9nJyAke1N9L01ha2VmaWxlCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRX0gUkVDSVBFX1NZU1JPT1Q9JHtSRUNJUEVfU1lTUk9PVH0KLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCi0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcmFzaC44ICR7RH0vJHttYW5kaXJ9L21hbjgvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSR7U1RBR0lOR19ESVJfTkFUSVZFfSBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgewotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2NyYXNoICR7RH0vJHtiaW5kaXJ9Ci19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJsaWJsem1hIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLWNyb3NzID0gIiIKLQotIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCi0jIGplbmtpbnMgIDE1MTYxICAxMDAgMTIuNSAxMDM4OTU5NiAxMDMyMTI4NCA/ICAgUiAgICAxMTo0MCAgMjg6MTcgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS80LjkuMi9jYzEgLXF1aWV0IC1JIC4gLUkgLiAtSSAuL2NvbW1vbiAtSSAuL2NvbmZpZyAtSSAuLy4uL2luY2x1ZGUvb3Bjb2RlIC1JIC4vLi4vb3Bjb2Rlcy8uLiAtSSAuLy4uL3JlYWRsaW5lLy4uIC1JIC4uL2JmZCAtSSAuLy4uL2JmZCAtSSAuLy4uL2luY2x1ZGUgLUkgLi4vbGliZGVjbnVtYmVyIC1JIC4vLi4vbGliZGVjbnVtYmVyIC1JIC4vZ251bGliL2ltcG9ydCAtSSBidWlsZC1nbnVsaWIvaW1wb3J0IC1pc3lzcm9vdCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11YXJtIC1NTUQgZXZhbC5kIC1NRiAuZGVwcy9ldmFsLlRwbyAtTVAgLU1UIGV2YWwubyAtRCBMT0NBTEVESVI9Ii91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiAtRCBDUkFTSF9NRVJHRSAtRCBIQVZFX0NPTkZJR19IIC1EIFRVST0xIGV2YWwuYyAtcXVpZXQgLWR1bXBiYXNlIGV2YWwuYyAtbWFyY2g9YXJtdjV0ZSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tdGxzLWRpYWxlY3Q9Z251IC1hdXhiYXNlLXN0cmlwIGV2YWwubyAtZyAtTzIgLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gLVduby1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdlbXB0eS1ib2R5IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtbyAtCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvY3Jhc2gvY3Jhc2hfNy4yLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MmIxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi40LmJiCkBAIC0wLDAgKzEsMTIwIEBACitTVU1NQVJZID0gIktlcm5lbCBhbmFseXNpcyB1dGlsaXR5IGZvciBsaXZlIHN5c3RlbXMsIG5ldGR1bXAsIGRpc2tkdW1wLCBrZHVtcCwgTEtDRCBvciBtY29yZSBkdW1wZmlsZXMiCitERVNDUklQVElPTiA9ICJUaGUgY29yZSBhbmFseXNpcyBzdWl0ZSBpcyBhIHNlbGYtY29udGFpbmVkIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0b1wKK2ludmVzdGlnYXRlIGVpdGhlciBsaXZlIHN5c3RlbXMsIGtlcm5lbCBjb3JlIGR1bXBzIGNyZWF0ZWQgZnJvbSB0aGVcCituZXRkdW1wLCBkaXNrZHVtcCBhbmQga2R1bXAgcGFja2FnZXMgZnJvbSBSZWQgSGF0IExpbnV4LCB0aGUgbWNvcmUga2VybmVsIHBhdGNoXAorb2ZmZXJlZCBieSBNaXNzaW9uIENyaXRpY2FsIExpbnV4LCBvciB0aGUgTEtDRCBrZXJuZWwgcGF0Y2guIgorCitIT01FUEFHRSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vYW5kZXJzb24iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gInpsaWIgcmVhZGxpbmUgY29yZXV0aWxzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0vYXJjaGl2ZS8ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItNy42LnRhci5nejtuYW1lPWdkYjtzdWJkaXI9JHtCUH0gXAorICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYXNoLWZpeC1idWlsZC1lcnJvci11bmtub3duLXR5cGUtbmFtZS1nZGJfZnByZWdzZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jcmFzaC1kZXRlY3QtdGhlLXN5c3Jvb3Qtcy1nbGliYy1oZWFkZXItZmlsZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZjY2ZWIwZTlhODJmZjgzZGUwNmFjMmIzNzUwMWY1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWNhMmU5M2YxZWU2MjhlZjI0OTlhYjljNzg2MjNmOGIwNDUwMGJkZjczNzhjMDlkZTE5MjgzZjZhN2E2OThmIgorCitTUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgorU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvY3Jhc2gvcmVsZWFzZXMiCisKK2luaGVyaXQgZ2V0dGV4dAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBjcm9zcyIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgorCisjIGNyYXNoIDcuMS4zIGFuZCBiZWZvcmUgZG9uJ3Qgc3VwcG9ydCBtaXBzNjQKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hbWlwczY0KS4qIgorCitFWFRSQV9PRU1BS0UgPSAnUlBNUEtHPSIke1BWfSIgXAorICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7VEFSR0VUX1NZU30iIFwKKyAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCisgICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAorICAgICAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30iIFwKKyAgICAgICAgICAgICAgICAnCisKK0VYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdSUE1QS0c9IiR7UFZ9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtCVUlMRF9TWVN9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHtHREJfQ09ORl9GTEFHU30gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCisKK1JFTU9WRV9NMzIgPSAic2VkIC1pIC1lICdzLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0LiovI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjRcdFwiVEFSR0VUX0NGTEFHUz0tRF9GSUxFX09GRlNFVF9CSVRTPTY0XCIvZycgJHtTfS9jb25maWd1cmUuYyIKKworUkVNT1ZFX00zMl9jbGFzcy1jcm9zcyA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICA6Cit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBjYXNlICR7VEFSR0VUX0FSQ0h9IGluCisgICAgICAgIGFhcmNoNjQqKSAgICBBUkNIPUFSTTY0IDs7CisgICAgICAgIGFybSopICAgICAgICBBUkNIPUFSTSA7OworICAgICAgICBpKjg2KikgICAgICAgQVJDSD1YODYgOzsKKyAgICAgICAgeDg2XzY0KikgICAgIEFSQ0g9WDg2XzY0IDs7CisgICAgICAgIHBvd2VycGM2NCopICBBUkNIPVBQQzY0IDs7CisgICAgICAgIHBvd2VycGMqKSAgICBBUkNIPVBQQyA7OworICAgICAgICBtaXBzKikgICAgICAgQVJDSD1NSVBTIDs7CisgICAgZXNhYworCisgICAgc2VkIC1pIHMvRk9SQ0VfREVGSU5FX0FSQ0gvIiR7QVJDSH0iL2cgJHtTfS9jb25maWd1cmUuYworICAgICR7UkVNT1ZFX00zMn0KKyAgICBzZWQgLWkgJ3MvJmd0Oy8+L2cnICR7U30vTWFrZWZpbGUKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlICR7RVhUUkFfT0VNQUtFfSBSRUNJUEVfU1lTUk9PVD0ke1JFQ0lQRV9TWVNST09UfQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKKworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NyYXNoLjggJHtEfS8ke21hbmRpcn0vbWFuOC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWZzLmggJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKK30KKworZG9faW5zdGFsbF9jbGFzcy10YXJnZXQgKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IGluc3RhbGwKK30KKworZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY3Jhc2ggJHtEfS8ke2JpbmRpcn0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gImxpYmx6bWEiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtY3Jvc3MgPSAiIgorCisjIENhdXNlcyBnY2MgdG8gZ2V0IHN0dWNrIGFuZCBlYXQgYWxsIGF2YWlsYWJsZSBtZW1vcnkgaW4gcWVtdWFybSBidWlsZHMKKyMgamVua2lucyAgMTUxNjEgIDEwMCAxMi41IDEwMzg5NTk2IDEwMzIxMjg0ID8gICBSICAgIDExOjQwICAyODoxNyAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvYXJtLW9lLWxpbnV4LWdudWVhYmkvZ2NjL2FybS1vZS1saW51eC1nbnVlYWJpLzQuOS4yL2NjMSAtcXVpZXQgLUkgLiAtSSAuIC1JIC4vY29tbW9uIC1JIC4vY29uZmlnIC1JIC4vLi4vaW5jbHVkZS9vcGNvZGUgLUkgLi8uLi9vcGNvZGVzLy4uIC1JIC4vLi4vcmVhZGxpbmUvLi4gLUkgLi4vYmZkIC1JIC4vLi4vYmZkIC1JIC4vLi4vaW5jbHVkZSAtSSAuLi9saWJkZWNudW1iZXIgLUkgLi8uLi9saWJkZWNudW1iZXIgLUkgLi9nbnVsaWIvaW1wb3J0IC1JIGJ1aWxkLWdudWxpYi9pbXBvcnQgLWlzeXNyb290IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXVhcm0gLU1NRCBldmFsLmQgLU1GIC5kZXBzL2V2YWwuVHBvIC1NUCAtTVQgZXZhbC5vIC1EIExPQ0FMRURJUj0iL3Vzci9sb2NhbC9zaGFyZS9sb2NhbGUiIC1EIENSQVNIX01FUkdFIC1EIEhBVkVfQ09ORklHX0ggLUQgVFVJPTEgZXZhbC5jIC1xdWlldCAtZHVtcGJhc2UgZXZhbC5jIC1tYXJjaD1hcm12NXRlIC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgLW10bHMtZGlhbGVjdD1nbnUgLWF1eGJhc2Utc3RyaXAgZXZhbC5vIC1nIC1PMiAtV2FsbCAtV3BvaW50ZXItYXJpdGggLVdmb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV3VudXNlZC1mdW5jdGlvbiAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyAtV21pc3NpbmctcHJvdG90eXBlcyAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV2VtcHR5LWJvZHkgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1vIC0KK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NjQvCitFWENMVURFX0ZST01fV09STERfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDEtTWlncmF0ZS10by1vcGVuc3NsLTEuMS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1NaWdyYXRlLXRvLW9wZW5zc2wtMS4xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NGFhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDEtTWlncmF0ZS10by1vcGVuc3NsLTEuMS5wYXRjaApAQCAtMCwwICsxLDE1MiBAQAorRnJvbSBjOWRjYjZhZmVmOWMzNDNkMDcwYWFmZjIwOGQxMWE5OTdhNDVhMTA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBTZXAgMjAxOCAyMjoxOTozOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBNaWdyYXRlIHRvIG9wZW5zc2wgMS4xCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvaXBtaXRvb2wvc291cmNlL2NpLzE2NjQ5MDI1MjVhMWMzNzcxYjRkOGIzY2NhYjdlYTFiYTZiMmJkZDEvXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3BsdWdpbnMvbGFucGx1cy9sYW5wbHVzX2NyeXB0X2ltcGwuYyB8IDUwICsrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2xhbnBsdXMvbGFucGx1c19jcnlwdF9pbXBsLmMgYi9zcmMvcGx1Z2lucy9sYW5wbHVzL2xhbnBsdXNfY3J5cHRfaW1wbC5jCitpbmRleCBkNWZhYzM3Li45NjUyYTVlIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvbGFucGx1cy9sYW5wbHVzX2NyeXB0X2ltcGwuYworKysrIGIvc3JjL3BsdWdpbnMvbGFucGx1cy9sYW5wbHVzX2NyeXB0X2ltcGwuYworQEAgLTE2NCwxMSArMTY0LDcgQEAgbGFucGx1c19lbmNyeXB0X2Flc19jYmNfMTI4KGNvbnN0IHVpbnQ4X3QgKiBpdiwKKyAJCQkJCQkJdWludDhfdCAgICAgICAqIG91dHB1dCwKKyAJCQkJCQkJdWludDMyX3QgICAgICAgICogYnl0ZXNfd3JpdHRlbikKKyB7CistCUVWUF9DSVBIRVJfQ1RYIGN0eDsKKy0JRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKy0JRVZQX0VuY3J5cHRJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBrZXksIGl2KTsKKy0JRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoJmN0eCwgMCk7CistCQorKwlFVlBfQ0lQSEVSX0NUWCAqY3R4ID0gTlVMTDsKKyAKKyAJKmJ5dGVzX3dyaXR0ZW4gPSAwOworIAorQEAgLTE4Miw2ICsxNzgsMTQgQEAgbGFucGx1c19lbmNyeXB0X2Flc19jYmNfMTI4KGNvbnN0IHVpbnQ4X3QgKiBpdiwKKyAJCXByaW50YnVmKGlucHV0LCBpbnB1dF9sZW5ndGgsICJlbmNyeXB0aW5nIHRoaXMgZGF0YSIpOworIAl9CisgCisrCWN0eCA9IEVWUF9DSVBIRVJfQ1RYX25ldygpOworKwlpZiAoY3R4ID09IE5VTEwpIHsKKysJCWxwcmludGYoTE9HX0RFQlVHLCAiRVJST1I6IEVWUF9DSVBIRVJfQ1RYX25ldygpIGZhaWxlZCIpOworKwkJcmV0dXJuOworKwl9CisrCUVWUF9DSVBIRVJfQ1RYX2luaXQoY3R4KTsKKysJRVZQX0VuY3J5cHRJbml0X2V4KGN0eCwgRVZQX2Flc18xMjhfY2JjKCksIE5VTEwsIGtleSwgaXYpOworKwlFVlBfQ0lQSEVSX0NUWF9zZXRfcGFkZGluZyhjdHgsIDApOworIAorIAkvKgorIAkgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgd2hvbGUgYmxvY2sgb2YgcGFkZGluZyBpZiB0aGUgaW5wdXQKK0BAIC0xOTEsMjggKzE5NSwyOCBAQCBsYW5wbHVzX2VuY3J5cHRfYWVzX2NiY18xMjgoY29uc3QgdWludDhfdCAqIGl2LAorIAlhc3NlcnQoKGlucHV0X2xlbmd0aCAlIElQTUlfQ1JZUFRfQUVTX0NCQ18xMjhfQkxPQ0tfU0laRSkgPT0gMCk7CisgCisgCistCWlmKCFFVlBfRW5jcnlwdFVwZGF0ZSgmY3R4LCBvdXRwdXQsIChpbnQgKilieXRlc193cml0dGVuLCBpbnB1dCwgaW5wdXRfbGVuZ3RoKSkKKysJaWYoIUVWUF9FbmNyeXB0VXBkYXRlKGN0eCwgb3V0cHV0LCAoaW50ICopYnl0ZXNfd3JpdHRlbiwgaW5wdXQsIGlucHV0X2xlbmd0aCkpCisgCXsKKyAJCS8qIEVycm9yICovCisgCQkqYnl0ZXNfd3JpdHRlbiA9IDA7CistCQlyZXR1cm47CisgCX0KKyAJZWxzZQorIAl7CisgCQl1aW50MzJfdCB0bXBsZW47CisgCistCQlpZighRVZQX0VuY3J5cHRGaW5hbF9leCgmY3R4LCBvdXRwdXQgKyAqYnl0ZXNfd3JpdHRlbiwgKGludCAqKSZ0bXBsZW4pKQorKwkJaWYoIUVWUF9FbmNyeXB0RmluYWxfZXgoY3R4LCBvdXRwdXQgKyAqYnl0ZXNfd3JpdHRlbiwgKGludCAqKSZ0bXBsZW4pKQorIAkJeworKwkJCS8qIEVycm9yICovCisgCQkJKmJ5dGVzX3dyaXR0ZW4gPSAwOworLQkJCXJldHVybjsgLyogRXJyb3IgKi8KKyAJCX0KKyAJCWVsc2UKKyAJCXsKKyAJCQkvKiBTdWNjZXNzICovCisgCQkJKmJ5dGVzX3dyaXR0ZW4gKz0gdG1wbGVuOworLQkJCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7CisgCQl9CisgCX0KKysJLyogcGVyZm9ybXMgY2xlYW51cCBhbmQgZnJlZSAqLworKwlFVlBfQ0lQSEVSX0NUWF9mcmVlKGN0eCk7CisgfQorIAorIAorQEAgLTIzOSwxMSArMjQzLDcgQEAgbGFucGx1c19kZWNyeXB0X2Flc19jYmNfMTI4KGNvbnN0IHVpbnQ4X3QgKiBpdiwKKyAJCQkJCQkJdWludDhfdCAgICAgICAqIG91dHB1dCwKKyAJCQkJCQkJdWludDMyX3QgICAgICAgICogYnl0ZXNfd3JpdHRlbikKKyB7CistCUVWUF9DSVBIRVJfQ1RYIGN0eDsKKy0JRVZQX0NJUEhFUl9DVFhfaW5pdCgmY3R4KTsKKy0JRVZQX0RlY3J5cHRJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBrZXksIGl2KTsKKy0JRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoJmN0eCwgMCk7CistCisrCUVWUF9DSVBIRVJfQ1RYICpjdHggPSBOVUxMOworIAorIAlpZiAodmVyYm9zZSA+PSA1KQorIAl7CitAQCAtMjUyLDEyICsyNTIsMjAgQEAgbGFucGx1c19kZWNyeXB0X2Flc19jYmNfMTI4KGNvbnN0IHVpbnQ4X3QgKiBpdiwKKyAJCXByaW50YnVmKGlucHV0LCBpbnB1dF9sZW5ndGgsICJkZWNyeXB0aW5nIHRoaXMgZGF0YSIpOworIAl9CisgCistCisgCSpieXRlc193cml0dGVuID0gMDsKKyAKKyAJaWYgKGlucHV0X2xlbmd0aCA9PSAwKQorIAkJcmV0dXJuOworIAorKwljdHggPSBFVlBfQ0lQSEVSX0NUWF9uZXcoKTsKKysJaWYgKGN0eCA9PSBOVUxMKSB7CisrCQlscHJpbnRmKExPR19ERUJVRywgIkVSUk9SOiBFVlBfQ0lQSEVSX0NUWF9uZXcoKSBmYWlsZWQiKTsKKysJCXJldHVybjsKKysJfQorKwlFVlBfQ0lQSEVSX0NUWF9pbml0KGN0eCk7CisrCUVWUF9EZWNyeXB0SW5pdF9leChjdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBrZXksIGl2KTsKKysJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmcoY3R4LCAwKTsKKysKKyAJLyoKKyAJICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYWRkcyBhIHdob2xlIGJsb2NrIG9mIHBhZGRpbmcgaWYgdGhlIGlucHV0CisgCSAqIGRhdGEgaXMgcGVyZmVjdGx5IGFsaWduZWQuICBXZSB3b3VsZCBsaWtlIHRvIGtlZXAgdGhhdCBmcm9tIGhhcHBlbmluZy4KK0BAIC0yNjYsMzMgKzI3NCwzMyBAQCBsYW5wbHVzX2RlY3J5cHRfYWVzX2NiY18xMjgoY29uc3QgdWludDhfdCAqIGl2LAorIAlhc3NlcnQoKGlucHV0X2xlbmd0aCAlIElQTUlfQ1JZUFRfQUVTX0NCQ18xMjhfQkxPQ0tfU0laRSkgPT0gMCk7CisgCisgCistCWlmICghRVZQX0RlY3J5cHRVcGRhdGUoJmN0eCwgb3V0cHV0LCAoaW50ICopYnl0ZXNfd3JpdHRlbiwgaW5wdXQsIGlucHV0X2xlbmd0aCkpCisrCWlmICghRVZQX0RlY3J5cHRVcGRhdGUoY3R4LCBvdXRwdXQsIChpbnQgKilieXRlc193cml0dGVuLCBpbnB1dCwgaW5wdXRfbGVuZ3RoKSkKKyAJeworIAkJLyogRXJyb3IgKi8KKyAJCWxwcmludGYoTE9HX0RFQlVHLCAiRVJST1I6IGRlY3J5cHQgdXBkYXRlIGZhaWxlZCIpOworIAkJKmJ5dGVzX3dyaXR0ZW4gPSAwOworLQkJcmV0dXJuOworIAl9CisgCWVsc2UKKyAJeworIAkJdWludDMyX3QgdG1wbGVuOworIAorLQkJaWYgKCFFVlBfRGVjcnlwdEZpbmFsX2V4KCZjdHgsIG91dHB1dCArICpieXRlc193cml0dGVuLCAoaW50ICopJnRtcGxlbikpCisrCQlpZiAoIUVWUF9EZWNyeXB0RmluYWxfZXgoY3R4LCBvdXRwdXQgKyAqYnl0ZXNfd3JpdHRlbiwgKGludCAqKSZ0bXBsZW4pKQorIAkJeworKwkJCS8qIEVycm9yICovCisgCQkJY2hhciBidWZmZXJbMTAwMF07CisgCQkJRVJSX2Vycm9yX3N0cmluZyhFUlJfZ2V0X2Vycm9yKCksIGJ1ZmZlcik7CisgCQkJbHByaW50ZihMT0dfREVCVUcsICJ0aGUgRVJSIGVycm9yICVzIiwgYnVmZmVyKTsKKyAJCQlscHJpbnRmKExPR19ERUJVRywgIkVSUk9SOiBkZWNyeXB0IGZpbmFsIGZhaWxlZCIpOworIAkJCSpieXRlc193cml0dGVuID0gMDsKKy0JCQlyZXR1cm47IC8qIEVycm9yICovCisgCQl9CisgCQllbHNlCisgCQl7CisgCQkJLyogU3VjY2VzcyAqLworIAkJCSpieXRlc193cml0dGVuICs9IHRtcGxlbjsKKy0JCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwKCZjdHgpOworIAkJfQorIAl9CisrCS8qIHBlcmZvcm1zIGNsZWFudXAgYW5kIGZyZWUgKi8KKysJRVZQX0NJUEhFUl9DVFhfZnJlZShjdHgpOworIAorIAlpZiAodmVyYm9zZSA+PSA1KQorIAl7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCmluZGV4IDlmNzNkMjcuLmI3ZjFhYTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCkBAIC0yMiw3ICsyMiw5IEBACiAKIERFUEVORFMgPSAib3BlbnNzbCByZWFkbGluZSBuY3Vyc2VzIgogCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9pcG1pdG9vbC9pcG1pdG9vbC0ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBtaXRvb2wvaXBtaXRvb2wtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1pZ3JhdGUtdG8tb3BlbnNzbC0xLjEucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmFiN2VhMTA0YzdiODU1MjljM2VmNjVjNTQ0MjdhYTMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMxYmEzYjE1NTVlZGVmYjdjMzJhZThjZDZhM2UwNDMyMjA1NmJjMDg3OTE4ZjA3MTg5ZWVlZGZjOGI4MWUwMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MWU5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QuYmIKQEAgLTAsMCArMSwxMjMgQEAKK1NVTU1BUlkgPSAiS2VybmVsIHNlbGZ0ZXN0IGZvciBMaW51eCIKK0RFU0NSSVBUSU9OID0gIktlcm5lbCBzZWxmdGVzdCBmb3IgTGludXgiCitMSUNFTlNFID0gIkdQTHYyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyA9ICJyc3luYy1uYXRpdmUgbGx2bS1uYXRpdmUiCisKKyMgZm9yIG11c2wgbGliYworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXNlcmZhdWx0ZmQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcgXAorICAgICAgICAgICAgIgorCisjIG5vdyB3ZSBqdXN0IHRlc3QgYnBmIGFuZCB2bQorIyB3ZSB3aWxsIGFwcGVuZCBvdGhlciBrZXJuZWwgc2VsZnRlc3QgaW4gdGhlIGZ1dHVyZQorIyBicGYgd2FzIGFkZGVkIGluIDQuMTAgd2l0aDogaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2NvbW1pdC81YWE1YmQxNGM1Zjg2NjBjNjRjZWVkZjE0YTU0OTc4MWJlNDdlNTNkCisjIGlmIHlvdSBoYXZlIG9sZGVyIGtlcm5lbCB0aGFuIHRoYXQgeW91IG5lZWQgdG8gcmVtb3ZlIGl0IGZyb20gUEFDS0FHRUNPTkZJRworUEFDS0FHRUNPTkZJRyA/Pz0gImJwZiB2bSIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3g4NiA9ICJicGYiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9hcm0gPSAiYnBmIgorCitQQUNLQUdFQ09ORklHW2JwZl0gPSAiLCxlbGZ1dGlscyBsaWJjYXAgbGliY2FwLW5nIHJzeW5jLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW3ZtXSA9ICIsLGxpYmNhcCxsaWJnY2MgYmFzaCIKKworZG9fcGF0Y2hbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgorCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoIHB0ZXN0CisKK1MgPSAiJHtXT1JLRElSfS8ke0JQfSIKKworVEVTVF9MSVNUID0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAnYnBmIHZtJywgZCl9IFwKKyIKKworRVhUUkFfT0VNQUtFID0gJ1wKKyAgICBDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIEFSQ0g9JHtBUkNIfSBcCisgICAgQ0M9IiR7Q0N9IiBcCisgICAgQVI9IiR7QVJ9IiBcCisgICAgTEQ9IiR7TER9IiBcCisgICAgREVTVERJUj0iJHtEfSIgXAorJworCitLRVJORUxfU0VMRlRFU1RfU1JDID89ICJNYWtlZmlsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBMSUNFTlNFUyBcCisiCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisKKyAgICB2YXIgPSBkLmdldFZhcignVEFSR0VUX0NDX0FSQ0gnKQorICAgIHBhdHRlcm4gPSAnX0ZPUlRJRllfU09VUkNFPVteMF0nCisKKyAgICBpZiByZS5zZWFyY2gocGF0dGVybiwgdmFyKToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1RBUkdFVF9DQ19BUkNIJywgIiAtTyIpCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgYmJ3YXJuICJjbGFuZyA+PSA2LjAgIHdpdGggYnBmIHN1cHBvcnQgaXMgbmVlZGVkIHdpdGgga2VybmVsIDQuMTgrIHNvIFwKK2VpdGhlciBpbnN0YWxsIGl0IGFuZCBhZGQgaXQgdG8gSE9TVFRPT0xTLCBvciBhZGQgXAorY2xhbmctbmF0aXZlIGZyb20gbWV0YS1jbGFuZyB0byBkZXBlbmRlbmN5IgorICAgIGZvciBpIGluICR7VEVTVF9MSVNUfQorICAgIGRvCisgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8ke2l9CisgICAgZG9uZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIGZvciBpIGluICR7VEVTVF9MSVNUfQorICAgIGRvCisgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8ke2l9IElOU1RBTExfUEFUSD0ke0R9L3Vzci9rZXJuZWwtc2VsZnRlc3QvJHtpfSBpbnN0YWxsCisgICAgZG9uZQorICAgIGlmIFsgLWUgJHtEfS91c3Iva2VybmVsLXNlbGZ0ZXN0L2JwZi90ZXN0X29mZmxvYWQucHkgXTsgdGhlbgorCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAke0R9L3Vzci9rZXJuZWwtc2VsZnRlc3QvYnBmL3Rlc3Rfb2ZmbG9hZC5weQorICAgIGZpCisgICAgY2hvd24gcm9vdDpyb290ICAtUiAke0R9L3Vzci9rZXJuZWwtc2VsZnRlc3QKK30KKworZG9fY29uZmlndXJlKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L0NPUFlJTkcgJHtTfS9DT1BZSU5HCit9CisKK2RvX3BhdGNoW3ByZWZ1bmNzXSArPSAiY29weV9rc2VsZnRlc3Rfc291cmNlX2Zyb21fa2VybmVsIHJlbW92ZV91bnJlbGF0ZWQiCitweXRob24gY29weV9rc2VsZnRlc3Rfc291cmNlX2Zyb21fa2VybmVsKCkgeworICAgIHNvdXJjZXMgPSAoZC5nZXRWYXIoIktFUk5FTF9TRUxGVEVTVF9TUkMiKSBvciAiIikuc3BsaXQoKQorICAgIHNyY19kaXIgPSBkLmdldFZhcigiU1RBR0lOR19LRVJORUxfRElSIikKKyAgICBkZXN0X2RpciA9IGQuZ2V0VmFyKCJTIikKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdF9kaXIpCisgICAgZm9yIHMgaW4gc291cmNlczoKKyAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHNyY19kaXIsIHMpCisgICAgICAgIGRlc3QgPSBvZS5wYXRoLmpvaW4oZGVzdF9kaXIsIHMpCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKToKKyAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoc3JjLCBkZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUoc3JjLCBkZXN0KQorfQorCityZW1vdmVfdW5yZWxhdGVkKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywnYnBmJywndHJ1ZScsJ2ZhbHNlJyxkKX0gOyB0aGVuCisgICAgICAgIHRlc3QgLWYgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgJiYgXAorICAgICAgICAgICAgc2VkIC1pIC1lICdzL3Rlc3RfcGt0X2FjY2Vzcy4qJC9cXC8nIFwKKyAgICAgICAgICAgICAgICAgICAtZSAncy90ZXN0X3BrdF9tZF9hY2Nlc3MuKiQvXFwvJyBcCisgICAgICAgICAgICAgICAgICAgLWUgJ3Mvc29ja21hcF92ZXJkaWN0X3Byb2cuKiQvXFwvJyBcCisgICAgICAgICAgICAgICAgICAgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvTWFrZWZpbGUgfHwgXAorICAgICAgICAgICAgYmJlcnJvciAiWW91ciBrZXJuZWwgaXMgcHJvYmFibHkgb2xkZXIgdGhhbiA0LjEwIGFuZCBkb2Vzbid0IGhhdmUgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL01ha2VmaWxlIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvY29tbWl0LzVhYTViZDE0YzVmODY2MGM2NGNlZWRmMTRhNTQ5NzgxYmU0N2U1M2QsIGRpc2FibGUgYnBmIFBBQ0tBR0VDT05GSUciCisgICAgZmkKK30KKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUPSIxIgorRklMRVNfJHtQTn0gKz0gIi91c3Iva2VybmVsLXNlbGZ0ZXN0IgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMyIKKyMgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vTWFrZWZpbGUgZG9lc24ndCByZXNwZWN0IExERkxBR1MgYW5kIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL01ha2VmaWxlIGV4cGxpY2l0bHkgb3ZlcnJpZGVzIHRvIGVtcHR5CitJTlNBTkVfU0tJUF8ke1BOfSArPSAibGRmbGFncyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC9DT1BZSU5HIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0L0NPUFlJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE0Y2IyOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC9DT1BZSU5HCkBAIC0wLDAgKzEsMTggQEAKK1RoZSBMaW51eCBLZXJuZWwgaXMgcHJvdmlkZWQgdW5kZXI6CisKKwlTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZQorCitCZWluZyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LAorYWNjb3JkaW5nIHdpdGg6CisKKwlMSUNFTlNFUy9wcmVmZXJyZWQvR1BMLTIuMAorCitXaXRoIGFuIGV4cGxpY2l0IHN5c2NhbGwgZXhjZXB0aW9uLCBhcyBzdGF0ZWQgYXQ6CisKKwlMSUNFTlNFUy9leGNlcHRpb25zL0xpbnV4LXN5c2NhbGwtbm90ZQorCitJbiBhZGRpdGlvbiwgb3RoZXIgbGljZW5zZXMgbWF5IGFsc28gYXBwbHkuIFBsZWFzZSBzZWU6CisKKwlEb2N1bWVudGF0aW9uL3Byb2Nlc3MvbGljZW5zZS1ydWxlcy5yc3QKKworZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ0MGI5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMTEgQEAKKyMhL2Jpbi9zaAorZXhwb3J0IFBBVEg9JFBBVEg6L3Vzci9rZXJuZWwtc2VsZnRlc3QvYnBmCisKKyMgdGVzdF9hbGlnbgordGVzdF9hbGlnbiB8IGdyZXAgIjEyIHBhc3MiICY+IC9kZXYvbnVsbAoraWYgWyAkPyA9PSAwIF07IHRoZW4KKyAgICBlY2hvICJbUEFTU106IHRlc3RfYWxpZ24iCitlbHNlCisgICAgZWNobyAiW0ZBSUxdOiB0ZXN0X2FsaWduIgorZmkKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0L3VzZXJmYXVsdGZkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0L3VzZXJmYXVsdGZkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZDIwNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QvdXNlcmZhdWx0ZmQucGF0Y2gKQEAgLTAsMCArMSwzMjIgQEAKK0Zyb20gYzdiMzc1NzQ3Y2ZmYjYyN2QwMjU0M2Q5NDZiMjg1MjU0NTVkN2Q0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTMgSnVsIDIwMTggMDY6MDY6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdm06IGFkZCBzb21lIGZ1bnRpb25zIHRvIHN1cHBvcnQgbXVzbCBsaWJjCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92bS91c2VyZmF1bHRmZC5jIHwgMjk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjk4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3ZtL3VzZXJmYXVsdGZkLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92bS91c2VyZmF1bHRmZC5jCitpbmRleCBkZTJmOWVjLi5kYzczMDIxIDEwMDY0NAorLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vdXNlcmZhdWx0ZmQuYworKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdm0vdXNlcmZhdWx0ZmQuYworQEAgLTcxLDYgKzcxLDMwNCBAQAorIAorICNpZmRlZiBfX05SX3VzZXJmYXVsdGZkCisgCisrLyogTGluZWFyIGNvbmdydWVudGlhbC4gICovCisrI2RlZmluZQlUWVBFXzAJCTAKKysjZGVmaW5lCUJSRUFLXzAJCTgKKysjZGVmaW5lCURFR18wCQkwCisrI2RlZmluZQlTRVBfMAkJMAorKworKy8qIHgqKjcgKyB4KiozICsgMS4gICovCisrI2RlZmluZQlUWVBFXzEJCTEKKysjZGVmaW5lCUJSRUFLXzEJCTMyCisrI2RlZmluZQlERUdfMQkJNworKyNkZWZpbmUJU0VQXzEJCTMKKysKKysvKiB4KioxNSArIHggKyAxLiAgKi8KKysjZGVmaW5lCVRZUEVfMgkJMgorKyNkZWZpbmUJQlJFQUtfMgkJNjQKKysjZGVmaW5lCURFR18yCQkxNQorKyNkZWZpbmUJU0VQXzIJCTEKKysKKysvKiB4KiozMSArIHgqKjMgKyAxLiAgKi8KKysjZGVmaW5lCVRZUEVfMwkJMworKyNkZWZpbmUJQlJFQUtfMwkJMTI4CisrI2RlZmluZQlERUdfMwkJMzEKKysjZGVmaW5lCVNFUF8zCQkzCisrCisrLyogeCoqNjMgKyB4ICsgMS4gICovCisrI2RlZmluZQlUWVBFXzQJCTQKKysjZGVmaW5lCUJSRUFLXzQJCTI1NgorKyNkZWZpbmUJREVHXzQJCTYzCisrI2RlZmluZQlTRVBfNAkJMQorKworKy8qIEFycmF5IHZlcnNpb25zIG9mIHRoZSBhYm92ZSBpbmZvcm1hdGlvbiB0byBtYWtlIGNvZGUgcnVuIGZhc3Rlci4KKysgICBSZWxpZXMgb24gZmFjdCB0aGF0IFRZUEVfaSA9PSBpLiAgKi8KKysKKysjZGVmaW5lCU1BWF9UWVBFUwk1CS8qIE1heCBudW1iZXIgb2YgdHlwZXMgYWJvdmUuICAqLworKworKyNkZWZpbmUgX19zZXRfZXJybm8odmFsKSAoZXJybm8gPSAodmFsKSkKKysKKytzdHJ1Y3QgcmFuZG9tX2RhdGEKKysgIHsKKysgICAgaW50MzJfdCAqZnB0cjsgICAgICAvKiBGcm9udCBwb2ludGVyLiAgKi8KKysgICAgaW50MzJfdCAqcnB0cjsgICAgICAvKiBSZWFyIHBvaW50ZXIuICAqLworKyAgICBpbnQzMl90ICpzdGF0ZTsgICAgIC8qIEFycmF5IG9mIHN0YXRlIHZhbHVlcy4gICovCisrICAgIGludCByYW5kX3R5cGU7ICAgICAgLyogVHlwZSBvZiByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4gICovCisrICAgIGludCByYW5kX2RlZzsgICAgICAgLyogRGVncmVlIG9mIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yLiAgKi8KKysgICAgaW50IHJhbmRfc2VwOyAgICAgICAvKiBEaXN0YW5jZSBiZXR3ZWVuIGZyb250IGFuZCByZWFyLiAgKi8KKysgICAgaW50MzJfdCAqZW5kX3B0cjsgICAgICAgLyogUG9pbnRlciBiZWhpbmQgc3RhdGUgdGFibGUuICAqLworKyAgfTsKKysKKytzdHJ1Y3QgcmFuZG9tX3BvbHlfaW5mbworK3sKKysgIGludCBzZXBzW01BWF9UWVBFU107CisrICBpbnQgZGVncmVlc1tNQVhfVFlQRVNdOworK307CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCByYW5kb21fcG9seV9pbmZvIHJhbmRvbV9wb2x5X2luZm8gPQorK3sKKysgIHsgU0VQXzAsIFNFUF8xLCBTRVBfMiwgU0VQXzMsIFNFUF80IH0sCisrICB7IERFR18wLCBERUdfMSwgREVHXzIsIERFR18zLCBERUdfNCB9CisrfTsKKysKKysvKiBJZiB3ZSBhcmUgdXNpbmcgdGhlIHRyaXZpYWwgVFlQRV8wIFIuTi5HLiwganVzdCBkbyB0aGUgb2xkIGxpbmVhcgorKyAgIGNvbmdydWVudGlhbCBiaXQuICBPdGhlcndpc2UsIHdlIGRvIG91ciBmYW5jeSB0cmlub21pYWwgc3R1ZmYsIHdoaWNoIGlzIHRoZQorKyAgIHNhbWUgaW4gYWxsIHRoZSBvdGhlciBjYXNlcyBkdWUgdG8gYWxsIHRoZSBnbG9iYWwgdmFyaWFibGVzIHRoYXQgaGF2ZSBiZWVuCisrICAgc2V0IHVwLiAgVGhlIGJhc2ljIG9wZXJhdGlvbiBpcyB0byBhZGQgdGhlIG51bWJlciBhdCB0aGUgcmVhciBwb2ludGVyIGludG8KKysgICB0aGUgb25lIGF0IHRoZSBmcm9udCBwb2ludGVyLiAgVGhlbiBib3RoIHBvaW50ZXJzIGFyZSBhZHZhbmNlZCB0byB0aGUgbmV4dAorKyAgIGxvY2F0aW9uIGN5Y2xpY2FsbHkgaW4gdGhlIHRhYmxlLiAgVGhlIHZhbHVlIHJldHVybmVkIGlzIHRoZSBzdW0gZ2VuZXJhdGVkLAorKyAgIHJlZHVjZWQgdG8gMzEgYml0cyBieSB0aHJvd2luZyBhd2F5IHRoZSAibGVhc3QgcmFuZG9tIiBsb3cgYml0LgorKyAgIE5vdGU6IFRoZSBjb2RlIHRha2VzIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvdGggdGhlIGZyb250IGFuZAorKyAgIHJlYXIgcG9pbnRlcnMgY2FuJ3Qgd3JhcCBvbiB0aGUgc2FtZSBjYWxsIGJ5IG5vdCB0ZXN0aW5nIHRoZSByZWFyCisrICAgcG9pbnRlciBpZiB0aGUgZnJvbnQgb25lIGhhcyB3cmFwcGVkLiAgUmV0dXJucyBhIDMxLWJpdCByYW5kb20gbnVtYmVyLiAgKi8KKysKKytpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqYnVmLCBpbnQzMl90ICpyZXN1bHQpCisreworKyAgaW50MzJfdCAqc3RhdGU7CisrCisrICBpZiAoYnVmID09IE5VTEwgfHwgcmVzdWx0ID09IE5VTEwpCisrICAgIGdvdG8gZmFpbDsKKysKKysgIHN0YXRlID0gYnVmLT5zdGF0ZTsKKysKKysgIGlmIChidWYtPnJhbmRfdHlwZSA9PSBUWVBFXzApCisrICAgIHsKKysgICAgICBpbnQzMl90IHZhbCA9ICgoc3RhdGVbMF0gKiAxMTAzNTE1MjQ1VSkgKyAxMjM0NVUpICYgMHg3ZmZmZmZmZjsKKysgICAgICBzdGF0ZVswXSA9IHZhbDsKKysgICAgICAqcmVzdWx0ID0gdmFsOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBpbnQzMl90ICpmcHRyID0gYnVmLT5mcHRyOworKyAgICAgIGludDMyX3QgKnJwdHIgPSBidWYtPnJwdHI7CisrICAgICAgaW50MzJfdCAqZW5kX3B0ciA9IGJ1Zi0+ZW5kX3B0cjsKKysgICAgICB1aW50MzJfdCB2YWw7CisrCisrICAgICAgdmFsID0gKmZwdHIgKz0gKHVpbnQzMl90KSAqcnB0cjsKKysgICAgICAvKiBDaHVja2luZyBsZWFzdCByYW5kb20gYml0LiAgKi8KKysgICAgICAqcmVzdWx0ID0gdmFsID4+IDE7CisrICAgICAgKytmcHRyOworKyAgICAgIGlmIChmcHRyID49IGVuZF9wdHIpCisrCXsKKysJICBmcHRyID0gc3RhdGU7CisrCSAgKytycHRyOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgKytycHRyOworKwkgIGlmIChycHRyID49IGVuZF9wdHIpCisrCSAgICBycHRyID0gc3RhdGU7CisrCX0KKysgICAgICBidWYtPmZwdHIgPSBmcHRyOworKyAgICAgIGJ1Zi0+cnB0ciA9IHJwdHI7CisrICAgIH0KKysgIHJldHVybiAwOworKworKyBmYWlsOgorKyAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisrICByZXR1cm4gLTE7CisrfQorKworKy8qIEluaXRpYWxpemUgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJhc2VkIG9uIHRoZSBnaXZlbiBzZWVkLiAgSWYgdGhlCisrICAgdHlwZSBpcyB0aGUgdHJpdmlhbCBuby1zdGF0ZS1pbmZvcm1hdGlvbiB0eXBlLCBqdXN0IHJlbWVtYmVyIHRoZSBzZWVkLgorKyAgIE90aGVyd2lzZSwgaW5pdGlhbGl6ZXMgc3RhdGVbXSBiYXNlZCBvbiB0aGUgZ2l2ZW4gInNlZWQiIHZpYSBhIGxpbmVhcgorKyAgIGNvbmdydWVudGlhbCBnZW5lcmF0b3IuICBUaGVuLCB0aGUgcG9pbnRlcnMgYXJlIHNldCB0byBrbm93biBsb2NhdGlvbnMKKysgICB0aGF0IGFyZSBleGFjdGx5IHJhbmRfc2VwIHBsYWNlcyBhcGFydC4gIExhc3RseSwgaXQgY3ljbGVzIHRoZSBzdGF0ZQorKyAgIGluZm9ybWF0aW9uIGEgZ2l2ZW4gbnVtYmVyIG9mIHRpbWVzIHRvIGdldCByaWQgb2YgYW55IGluaXRpYWwgZGVwZW5kZW5jaWVzCisrICAgaW50cm9kdWNlZCBieSB0aGUgTC5DLlIuTi5HLiAgTm90ZSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBvZiByYW5kdGJsW10KKysgICBmb3IgZGVmYXVsdCB1c2FnZSByZWxpZXMgb24gdmFsdWVzIHByb2R1Y2VkIGJ5IHRoaXMgcm91dGluZS4gICovCisraW50IHNyYW5kb21fciAodW5zaWduZWQgaW50IHNlZWQsIHN0cnVjdCByYW5kb21fZGF0YSAqYnVmKQorK3sKKysgIGludCB0eXBlOworKyAgaW50MzJfdCAqc3RhdGU7CisrICBsb25nIGludCBpOworKyAgaW50MzJfdCB3b3JkOworKyAgaW50MzJfdCAqZHN0OworKyAgaW50IGtjOworKworKyAgaWYgKGJ1ZiA9PSBOVUxMKQorKyAgICBnb3RvIGZhaWw7CisrICB0eXBlID0gYnVmLT5yYW5kX3R5cGU7CisrICBpZiAoKHVuc2lnbmVkIGludCkgdHlwZSA+PSBNQVhfVFlQRVMpCisrICAgIGdvdG8gZmFpbDsKKysKKysgIHN0YXRlID0gYnVmLT5zdGF0ZTsKKysgIC8qIFdlIG11c3QgbWFrZSBzdXJlIHRoZSBzZWVkIGlzIG5vdCAwLiAgVGFrZSBhcmJpdHJhcmlseSAxIGluIHRoaXMgY2FzZS4gICovCisrICBpZiAoc2VlZCA9PSAwKQorKyAgICBzZWVkID0gMTsKKysgIHN0YXRlWzBdID0gc2VlZDsKKysgIGlmICh0eXBlID09IFRZUEVfMCkKKysgICAgZ290byBkb25lOworKworKyAgZHN0ID0gc3RhdGU7CisrICB3b3JkID0gc2VlZDsKKysgIGtjID0gYnVmLT5yYW5kX2RlZzsKKysgIGZvciAoaSA9IDE7IGkgPCBrYzsgKytpKQorKyAgICB7CisrICAgICAgLyogVGhpcyBkb2VzOgorKwkgICBzdGF0ZVtpXSA9ICgxNjgwNyAqIHN0YXRlW2kgLSAxXSkgJSAyMTQ3NDgzNjQ3OworKwkgYnV0IGF2b2lkcyBvdmVyZmxvd2luZyAzMSBiaXRzLiAgKi8KKysgICAgICBsb25nIGludCBoaSA9IHdvcmQgLyAxMjc3NzM7CisrICAgICAgbG9uZyBpbnQgbG8gPSB3b3JkICUgMTI3NzczOworKyAgICAgIHdvcmQgPSAxNjgwNyAqIGxvIC0gMjgzNiAqIGhpOworKyAgICAgIGlmICh3b3JkIDwgMCkKKysJd29yZCArPSAyMTQ3NDgzNjQ3OworKyAgICAgICorK2RzdCA9IHdvcmQ7CisrICAgIH0KKysKKysgIGJ1Zi0+ZnB0ciA9ICZzdGF0ZVtidWYtPnJhbmRfc2VwXTsKKysgIGJ1Zi0+cnB0ciA9ICZzdGF0ZVswXTsKKysgIGtjICo9IDEwOworKyAgd2hpbGUgKC0ta2MgPj0gMCkKKysgICAgeworKyAgICAgIGludDMyX3QgZGlzY2FyZDsKKysgICAgICAodm9pZCkgcmFuZG9tX3IgKGJ1ZiwgJmRpc2NhcmQpOworKyAgICB9CisrCisrIGRvbmU6CisrICByZXR1cm4gMDsKKysKKysgZmFpbDoKKysgIHJldHVybiAtMTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSB0aGUgc3RhdGUgaW5mb3JtYXRpb24gaW4gdGhlIGdpdmVuIGFycmF5IG9mIE4gYnl0ZXMgZm9yCisrICAgZnV0dXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbi4gIEJhc2VkIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgd2UKKysgICBhcmUgZ2l2ZW4sIGFuZCB0aGUgYnJlYWsgdmFsdWVzIGZvciB0aGUgZGlmZmVyZW50IFIuTi5HLidzLCB3ZSBjaG9vc2UKKysgICB0aGUgYmVzdCAobGFyZ2VzdCkgb25lIHdlIGNhbiBhbmQgc2V0IHRoaW5ncyB1cCBmb3IgaXQuICBzcmFuZG9tIGlzCisrICAgdGhlbiBjYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgaW5mb3JtYXRpb24uICBOb3RlIHRoYXQgb24gcmV0dXJuCisrICAgZnJvbSBzcmFuZG9tLCB3ZSBzZXQgc3RhdGVbLTFdIHRvIGJlIHRoZSB0eXBlIG11bHRpcGxleGVkIHdpdGggdGhlIGN1cnJlbnQKKysgICB2YWx1ZSBvZiB0aGUgcmVhciBwb2ludGVyOyB0aGlzIGlzIHNvIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gaW5pdHN0YXRlIHdvbid0CisrICAgbG9zZSB0aGlzIGluZm9ybWF0aW9uIGFuZCB3aWxsIGJlIGFibGUgdG8gcmVzdGFydCB3aXRoIHNldHN0YXRlLgorKyAgIE5vdGU6IFRoZSBmaXJzdCB0aGluZyB3ZSBkbyBpcyBzYXZlIHRoZSBjdXJyZW50IHN0YXRlLCBpZiBhbnksIGp1c3QgbGlrZQorKyAgIHNldHN0YXRlIHNvIHRoYXQgaXQgZG9lc24ndCBtYXR0ZXIgd2hlbiBpbml0c3RhdGUgaXMgY2FsbGVkLgorKyAgIFJldHVybnMgMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlLiAgKi8KKytpbnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBzZWVkLCBjaGFyICphcmdfc3RhdGUsIHNpemVfdCBuLAorKwkgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpidWYpCisreworKyAgaWYgKGJ1ZiA9PSBOVUxMKQorKyAgICBnb3RvIGZhaWw7CisrCisrICBpbnQzMl90ICpvbGRfc3RhdGUgPSBidWYtPnN0YXRlOworKyAgaWYgKG9sZF9zdGF0ZSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaW50IG9sZF90eXBlID0gYnVmLT5yYW5kX3R5cGU7CisrICAgICAgaWYgKG9sZF90eXBlID09IFRZUEVfMCkKKysJb2xkX3N0YXRlWy0xXSA9IFRZUEVfMDsKKysgICAgICBlbHNlCisrCW9sZF9zdGF0ZVstMV0gPSAoTUFYX1RZUEVTICogKGJ1Zi0+cnB0ciAtIG9sZF9zdGF0ZSkpICsgb2xkX3R5cGU7CisrICAgIH0KKysKKysgIGludCB0eXBlOworKyAgaWYgKG4gPj0gQlJFQUtfMykKKysgICAgdHlwZSA9IG4gPCBCUkVBS180ID8gVFlQRV8zIDogVFlQRV80OworKyAgZWxzZSBpZiAobiA8IEJSRUFLXzEpCisrICAgIHsKKysgICAgICBpZiAobiA8IEJSRUFLXzApCisrCWdvdG8gZmFpbDsKKysKKysgICAgICB0eXBlID0gVFlQRV8wOworKyAgICB9CisrICBlbHNlCisrICAgIHR5cGUgPSBuIDwgQlJFQUtfMiA/IFRZUEVfMSA6IFRZUEVfMjsKKysKKysgIGludCBkZWdyZWUgPSByYW5kb21fcG9seV9pbmZvLmRlZ3JlZXNbdHlwZV07CisrICBpbnQgc2VwYXJhdGlvbiA9IHJhbmRvbV9wb2x5X2luZm8uc2Vwc1t0eXBlXTsKKysKKysgIGJ1Zi0+cmFuZF90eXBlID0gdHlwZTsKKysgIGJ1Zi0+cmFuZF9zZXAgPSBzZXBhcmF0aW9uOworKyAgYnVmLT5yYW5kX2RlZyA9IGRlZ3JlZTsKKysgIGludDMyX3QgKnN0YXRlID0gJigoaW50MzJfdCAqKSBhcmdfc3RhdGUpWzFdOwkvKiBGaXJzdCBsb2NhdGlvbi4gICovCisrICAvKiBNdXN0IHNldCBFTkRfUFRSIGJlZm9yZSBzcmFuZG9tLiAgKi8KKysgIGJ1Zi0+ZW5kX3B0ciA9ICZzdGF0ZVtkZWdyZWVdOworKworKyAgYnVmLT5zdGF0ZSA9IHN0YXRlOworKworKyAgc3JhbmRvbV9yIChzZWVkLCBidWYpOworKworKyAgc3RhdGVbLTFdID0gVFlQRV8wOworKyAgaWYgKHR5cGUgIT0gVFlQRV8wKQorKyAgICBzdGF0ZVstMV0gPSAoYnVmLT5ycHRyIC0gc3RhdGUpICogTUFYX1RZUEVTICsgdHlwZTsKKysKKysgIHJldHVybiAwOworKworKyBmYWlsOgorKyAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisrICByZXR1cm4gLTE7CisrfQorKworKy8qIFJlc3RvcmUgdGhlIHN0YXRlIGZyb20gdGhlIGdpdmVuIHN0YXRlIGFycmF5LgorKyAgIE5vdGU6IEl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGFsc28gcmVtZW1iZXIgdGhlIGxvY2F0aW9ucyBvZiB0aGUgcG9pbnRlcnMKKysgICBpbiB0aGUgY3VycmVudCBzdGF0ZSBpbmZvcm1hdGlvbiwgYW5kIHJlc3RvcmUgdGhlIGxvY2F0aW9ucyBvZiB0aGUgcG9pbnRlcnMKKysgICBmcm9tIHRoZSBvbGQgc3RhdGUgaW5mb3JtYXRpb24uICBUaGlzIGlzIGRvbmUgYnkgbXVsdGlwbGV4aW5nIHRoZSBwb2ludGVyCisrICAgbG9jYXRpb24gaW50byB0aGUgemVyb3RoIHdvcmQgb2YgdGhlIHN0YXRlIGluZm9ybWF0aW9uLiBOb3RlIHRoYXQgZHVlCisrICAgdG8gdGhlIG9yZGVyIGluIHdoaWNoIHRoaW5ncyBhcmUgZG9uZSwgaXQgaXMgT0sgdG8gY2FsbCBzZXRzdGF0ZSB3aXRoIHRoZQorKyAgIHNhbWUgc3RhdGUgYXMgdGhlIGN1cnJlbnQgc3RhdGUKKysgICBSZXR1cm5zIDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVyZS4gICovCisraW50IHNldHN0YXRlX3IgKGNoYXIgKmFyZ19zdGF0ZSwgc3RydWN0IHJhbmRvbV9kYXRhICpidWYpCisreworKyAgaW50MzJfdCAqbmV3X3N0YXRlID0gMSArIChpbnQzMl90ICopIGFyZ19zdGF0ZTsKKysgIGludCB0eXBlOworKyAgaW50IG9sZF90eXBlOworKyAgaW50MzJfdCAqb2xkX3N0YXRlOworKyAgaW50IGRlZ3JlZTsKKysgIGludCBzZXBhcmF0aW9uOworKworKyAgaWYgKGFyZ19zdGF0ZSA9PSBOVUxMIHx8IGJ1ZiA9PSBOVUxMKQorKyAgICBnb3RvIGZhaWw7CisrCisrICBvbGRfdHlwZSA9IGJ1Zi0+cmFuZF90eXBlOworKyAgb2xkX3N0YXRlID0gYnVmLT5zdGF0ZTsKKysgIGlmIChvbGRfdHlwZSA9PSBUWVBFXzApCisrICAgIG9sZF9zdGF0ZVstMV0gPSBUWVBFXzA7CisrICBlbHNlCisrICAgIG9sZF9zdGF0ZVstMV0gPSAoTUFYX1RZUEVTICogKGJ1Zi0+cnB0ciAtIG9sZF9zdGF0ZSkpICsgb2xkX3R5cGU7CisrCisrICB0eXBlID0gbmV3X3N0YXRlWy0xXSAlIE1BWF9UWVBFUzsKKysgIGlmICh0eXBlIDwgVFlQRV8wIHx8IHR5cGUgPiBUWVBFXzQpCisrICAgIGdvdG8gZmFpbDsKKysKKysgIGJ1Zi0+cmFuZF9kZWcgPSBkZWdyZWUgPSByYW5kb21fcG9seV9pbmZvLmRlZ3JlZXNbdHlwZV07CisrICBidWYtPnJhbmRfc2VwID0gc2VwYXJhdGlvbiA9IHJhbmRvbV9wb2x5X2luZm8uc2Vwc1t0eXBlXTsKKysgIGJ1Zi0+cmFuZF90eXBlID0gdHlwZTsKKysKKysgIGlmICh0eXBlICE9IFRZUEVfMCkKKysgICAgeworKyAgICAgIGludCByZWFyID0gbmV3X3N0YXRlWy0xXSAvIE1BWF9UWVBFUzsKKysgICAgICBidWYtPnJwdHIgPSAmbmV3X3N0YXRlW3JlYXJdOworKyAgICAgIGJ1Zi0+ZnB0ciA9ICZuZXdfc3RhdGVbKHJlYXIgKyBzZXBhcmF0aW9uKSAlIGRlZ3JlZV07CisrICAgIH0KKysgIGJ1Zi0+c3RhdGUgPSBuZXdfc3RhdGU7CisrICAvKiBTZXQgZW5kX3B0ciB0b28uICAqLworKyAgYnVmLT5lbmRfcHRyID0gJm5ld19zdGF0ZVtkZWdyZWVdOworKworKyAgcmV0dXJuIDA7CisrCisrIGZhaWw6CisrICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKysgIHJldHVybiAtMTsKKyt9CisrCisgc3RhdGljIHVuc2lnbmVkIGxvbmcgbnJfY3B1cywgbnJfcGFnZXMsIG5yX3BhZ2VzX3Blcl9jcHUsIHBhZ2Vfc2l6ZTsKKyAKKyAjZGVmaW5lIEJPVU5DRV9SQU5ET00JCSgxPDwwKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC5pbmMKaW5kZXggYjFlNzNlOS4uY2Q4MTlmMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2guaW5jCkBAIC0zMCw2ICszMCw3IEBACiBQUk9WSURFUyArPSAia3BhdGNoLWJ1aWxkIgogCiBDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NCkuKi1saW51eCIKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAibnVsbCIKIAogUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBiaW51dGlscyIKIFJERVBFTkRTX2twYXRjaC1idWlsZCA9ICJiYXNoIGdsaWJjLXV0aWxzIgpAQCAtMzgsNiArMzksNyBAQAogCSR7c2JpbmRpcn0va3BhdGNoIFwKIAkke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2twYXRjaC5zZXJ2aWNlIFwKIAkke21hbmRpcn0vbWFuMS9rcGF0Y2guMS5neiBcCisJJHtzeXNjb25mZGlyfS9pbml0L2twYXRjaC5jb25mIFwKIAkiCiBGSUxFU19rcGF0Y2gtYnVpbGQgPSAiIFwKIAkke2JpbmRpcn0va3BhdGNoLWJ1aWxkIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAxLWtwYXRjaC1idWlsZC1hZGQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC5wYXRjaAppbmRleCA0NTlmYjIxLi5hYjNiMTI3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMS1rcGF0Y2gtYnVpbGQtYWRkLWNyb3NzLWNvbXBpbGF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDEta3BhdGNoLWJ1aWxkLWFkZC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhOWE4MGExZjRkZjY1ODkyYTAyNjkyOTVjZThhNjRiMDZmMmZmNjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3MGRlM2ZlY2JjNTUxOTA3YzRmZDUwNGNmZmYzODVjNzNiZThkYjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KIERhdGU6IFR1ZSwgMTkgRGVjIDIwMTcgMTU6NTk6MDQgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0ga3BhdGNoLWJ1aWxkOiBhZGQgY3Jvc3MtY29tcGlsYXRpb24gc3VwcG9ydApAQCAtMTcsMTYgKzE3LDE3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KKwogLS0tCiAga3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCB8IDEzICsrKysrKysrKysrLS0KICBrcGF0Y2gtYnVpbGQva3BhdGNoLWdjYyAgIHwgIDQgKystLQogIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCi1pbmRleCAxNjZlY2JkLi5hZjI0Y2M0IDEwMDc1NQoraW5kZXggYTc2OTEzZi4uNGEwMTFhYSAxMDA3NTUKIC0tLSBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKICsrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKLUBAIC0xOTUsNyArMTk1LDcgQEAgZ2NjX3ZlcnNpb25fY2hlY2soKSB7CitAQCAtMTk3LDcgKzE5Nyw3IEBAIGdjY192ZXJzaW9uX2NoZWNrKCkgewogIAkjIGdjYyAtLXZlcnNpb24gdmFyaWVzIGJldHdlZW4gZGlzdHJpYnV0aW9ucyB0aGVyZWZvcmUgZXh0cmFjdCB2ZXJzaW9uCiAgCSMgYnkgY29tcGlsaW5nIGEgdGVzdCBmaWxlIGFuZCBjb21wYXJlIGl0IHRvIHZtbGludXgncyB2ZXJzaW9uLgogIAllY2hvICd2b2lkIG1haW4odm9pZCkge30nID4gIiRjIgpAQCAtMzUsNyArMzYsNyBAQAogIAlnY2N2ZXI9IiQoZ2NjX3ZlcnNpb25fZnJvbV9maWxlICIkbyIpIgogIAlrZ2NjdmVyPSIkKGdjY192ZXJzaW9uX2Zyb21fZmlsZSAiJFZNTElOVVgiKSIKICAJcm0gLWYgIiRjIiAiJG8iCi1AQCAtMzgxLDEyICszODEsMTQgQEAgdXNhZ2UoKSB7CitAQCAtMzkyLDEyICszOTIsMTQgQEAgdXNhZ2UoKSB7CiAgCWVjaG8gIgkJLWQsIC0tZGVidWcgICAgICAgIEVuYWJsZSAneHRyYWNlJyBhbmQga2VlcCBzY3JhdGNoIGZpbGVzIiA+JjIKICAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgaW4gPENBQ0hFRElSPi90bXAiID4mMgogIAllY2hvICIJCSAgICAgICAgICAgICAgICAgICAoY2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcykiID4mMgpAQCAtNTEsNyArNTIsNyBAQAogIAogIGV2YWwgc2V0IC0tICIkb3B0aW9ucyIKICAKLUBAIC00NDQsNiArNDQ2LDEwIEBAIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbworQEAgLTQ1NSw2ICs0NTcsMTAgQEAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgCQkJZWNobyAiREVCVUcgbW9kZSBlbmFibGVkIgogIAkJZmkKICAJCTs7CkBAIC02Miw3ICs2Myw3IEBACiAgCS0tc2tpcC1jbGVhbnVwKQogIAkJZWNobyAiU2tpcHBpbmcgY2xlYW51cCIKICAJCVNLSVBDTEVBTlVQPTEKLUBAIC02OTEsNiArNjk3LDggQEAgaWYgW1sgJERFQlVHIC1nZSA0IF1dOyB0aGVuCitAQCAtNzEwLDYgKzcxNiw4IEBAIGlmIFtbICRERUJVRyAtZ2UgNCBdXTsgdGhlbgogIAlleHBvcnQgS1BBVENIX0dDQ19ERUJVRz0xCiAgZmkKICAKQEAgLTcwLDggKzcxLDggQEAKICsKICBlY2hvICJCdWlsZGluZyBvcmlnaW5hbCBrZXJuZWwiCiAgLi9zY3JpcHRzL3NldGxvY2FsdmVyc2lvbiAtLXNhdmUtc2NtdmVyc2lvbiB8fCBkaWUKLSBtYWtlIG1ycHJvcGVyIDI+JjEgfCBsb2dnZXIgfHwgZGllCi1AQCAtODQwLDYgKzg0OCw3IEBAIGNkICIkVEVNUERJUi9wYXRjaCIgfHwgZGllCisgdW5zZXQgS1BBVENIX0dDQ19URU1QRElSCitAQCAtODc0LDYgKzg4Miw3IEBAIGNkICIkVEVNUERJUi9wYXRjaCIgfHwgZGllCiAgS1BBVENIX0JVSUxEPSIkU1JDRElSIiBLUEFUQ0hfTkFNRT0iJE1PRE5BTUUiIFwKICBLQlVJTERfRVhUUkFfU1lNQk9MUz0iJEtCVUlMRF9FWFRSQV9TWU1CT0xTIiBcCiAgS1BBVENIX0xERkxBR1M9IiRLUEFUQ0hfTERGTEFHUyIgXApAQCAtODAsNyArODEsNyBAQAogIAogIGlmICEgIiRLUEFUQ0hfTU9EVUxFIjsgdGhlbgogZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjIGIva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MKLWluZGV4IDZiYTEzM2MuLjM5Mzc5NDggMTAwNzU1CitpbmRleCAyZDU2ZGExLi41OWE0MjU1IDEwMDc1NQogLS0tIGEva3BhdGNoLWJ1aWxkL2twYXRjaC1nY2MKICsrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtZ2NjCiBAQCAtOCw3ICs4LDcgQEAgVE9PTENIQUlOQ01EPSIkMSIKQEAgLTkyLDEyICs5Myw5IEBACiAgZmkKICAKICBkZWNsYXJlIC1hIGFyZ3M9KCIkQCIpCi1AQCAtODAsNCArODAsNCBAQCBlbGlmIFtbICIkVE9PTENIQUlOQ01EIiA9ICJsZCIgXV0gOyB0aGVuCitAQCAtODIsNCArODIsNCBAQCBlbGlmIFtbICIkVE9PTENIQUlOQ01EIiA9ICJsZCIgXV0gOyB0aGVuCiAgCWRvbmUKICBmaQogIAogLWV4ZWMgIiRUT09MQ0hBSU5DTUQiICIke2FyZ3NbQF19IgogK2V4ZWMgJHtLUEFUQ0hfQ1JPU1NfQ09NUElMRX0ke1RPT0xDSEFJTkNNRH0gIiR7YXJnc1tAXX0iCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2gKaW5kZXggYTlkOGE3Zi4uMTNjZGM2YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoLzAwMDIta3BhdGNoLWJ1aWxkLWFsbG93LW92ZXJyaWRpbmctb2YtZGlzdHJvLW5hbWUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ0MThkNzE2ZGFlMWUyYTA1MTMxZGZiNDJhMTlhNGRhMmZjOGE4NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDE1ODM4YTg2ZDVlYTk0ZmEwNTk3NmVhMzJmZDg0N2IxODI2MWI0MDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSdXNsYW4gQmlsb3ZvbCA8cmJpbG92b2xAY2lzY28uY29tPgogRGF0ZTogVHVlLCAyIEphbiAyMDE4IDE0OjUwOjAzICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGtwYXRjaC1idWlsZDogYWxsb3cgb3ZlcnJpZGluZyBvZiBkaXN0cm8gbmFtZQpAQCAtMTQsMTUgKzE0LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUnVzbGFuIEJpbG92b2wgPHJiaWxvdm9sQGNpc2NvLmNvbT4KKwogLS0tCiAga3BhdGNoLWJ1aWxkL2twYXRjaC1idWlsZCB8IDkgKysrKysrKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQgYi9rcGF0Y2gtYnVpbGQva3BhdGNoLWJ1aWxkCi1pbmRleCBhZjI0Y2M0Li40ZjlmNzhkIDEwMDc1NQoraW5kZXggNGEwMTFhYS4uZWI2Y2Q2NCAxMDA3NTUKIC0tLSBhL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKICsrKyBiL2twYXRjaC1idWlsZC9rcGF0Y2gtYnVpbGQKLUBAIC0zODMsMTIgKzM4MywxMyBAQCB1c2FnZSgpIHsKK0BAIC0zOTQsMTIgKzM5NCwxMyBAQCB1c2FnZSgpIHsKICAJZWNobyAiCQkgICAgICAgICAgICAgICAgICAgKGNhbiBiZSBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMpIiA+JjIKICAJZWNobyAiCQktLWNyb3NzLWNvbXBpbGUgICAgU3BlY2lmeSB0aGUgcHJlZml4IHVzZWQgZm9yIGFsbCBleGVjdXRhYmxlcyIgPiYyCiAgCWVjaG8gIgkJICAgICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIiA+JjIKQEAgLTM3LDcgKzM4LDcgQEAKICAKICBldmFsIHNldCAtLSAiJG9wdGlvbnMiCiAgCi1AQCAtNDUwLDYgKzQ1MSwxMCBAQCB3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8KK0BAIC00NjEsNiArNDYyLDEwIEBAIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbwogIAkJS1BBVENIX0NST1NTX0NPTVBJTEU9IiQyIgogIAkJc2hpZnQKICAJCTs7CkBAIC00OCw3ICs0OSw3IEBACiAgCS0tc2tpcC1jbGVhbnVwKQogIAkJZWNobyAiU2tpcHBpbmcgY2xlYW51cCIKICAJCVNLSVBDTEVBTlVQPTEKLUBAIC01MjYsNyArNTMxLDcgQEAgZmkKK0BAIC01MzksNyArNTQ0LDcgQEAgZmkKICAjIERvbid0IGNoZWNrIGV4dGVybmFsIGZpbGUuCiAgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MxMDkxCiAgc291cmNlIC9ldGMvb3MtcmVsZWFzZQpAQCAtNTcsNiArNTgsMyBAQAogIGlmIFtbICIkRElTVFJPIiA9IGZlZG9yYSBdXSB8fCBbWyAiJERJU1RSTyIgPSByaGVsIF1dIHx8IFtbICIkRElTVFJPIiA9IG9sIF1dIHx8IFtbICIkRElTVFJPIiA9IGNlbnRvcyBdXTsgdGhlbgogIAlbWyAteiAiJFZNTElOVVgiIF1dICYmIFZNTElOVVg9Ii91c3IvbGliL2RlYnVnL2xpYi9tb2R1bGVzLyRBUkNIVkVSU0lPTi92bWxpbnV4IgogIAlbWyAtZSAiJFZNTElOVVgiIF1dIHx8IGRpZSAia2VybmVsLWRlYnVnaW5mby0kQVJDSFZFUlNJT04gbm90IGluc3RhbGxlZCIKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIKaW5kZXggZTQ5NWUyOC4uMDI0Y2NhNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiCkBAIC0yLDkgKzIsOSBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDUkVWID0gImRiNmVmYmI4YzdlOTBkMmI3NjEyNzJjZjU2MzA0NzExOTA3Mjc2OGYiCitTUkNSRVYgPSAiN2Y1NTBmMDFiZDMwOGNmMDU4YWU3ODIzMjdkMjljODkxNmNjNTYwMiIKIAotUFYgPSAiMC41LjArZ2l0JHtTUkNQVn0iCitQViA9ICIwLjYuMStnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoCmluZGV4IGQ1OTlhOTEuLmE0NzgwNjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1yZXBsYWNlLWhhcmRjb2RlLUNGTEFHUy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGUvMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNjMmY0ZmY1ODNhMTU2YTdlZDJmYTBjYzAwMmE0MTNjMzkxZDA2M2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlZWIxYjE1NjA4Y2UxYTlhMWYwZDU0MTc5MzhmZDZkYTQ1MDQ0MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAyMSBKdWwgMjAxNiAxODowNjoyMSArMDgwMAogU3ViamVjdDogW1BBVENIXSBtYWtlZHVtcGZpbGU6IHJlcGxhY2UgaGFyZGNvZGUgQ0ZMQUdTCkBAIC0xMywxMiArMTMsMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggN2RkZTNlNC4uYzUyODZhYyAxMDA2NDQKK2luZGV4IDYxMmI5ZDAuLmY2ZDYyNjUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKIEBAIC04LDEzICs4LDYgQEAgaWZlcSAoJChzdHJpcCAkQ0MpLCkKQEAgLTgwLDkgKzgxLDkgQEAKICsJCS1EUkVMRUFTRV9EQVRFPSciJChEQVRFKSInCiArCiAgU1JDX0JBU0UgPSBtYWtlZHVtcGZpbGUuYyBtYWtlZHVtcGZpbGUuaCBkaXNrZHVtcF9tb2QuaCBzYWR1bXBfbW9kLmggc2FkdW1wX2luZm8uaAotIFNSQ19QQVJUID0gcHJpbnRfaW5mby5jIGR3YXJmX2luZm8uYyBlbGZfaW5mby5jIGVyYXNlX2luZm8uYyBzYWR1bXBfaW5mby5jIGNhY2hlLmMKKyBTUkNfUEFSVCA9IHByaW50X2luZm8uYyBkd2FyZl9pbmZvLmMgZWxmX2luZm8uYyBlcmFzZV9pbmZvLmMgc2FkdW1wX2luZm8uYyBjYWNoZS5jIHRvb2xzLmMKICBPQkpfUEFSVD0kKHBhdHN1YnN0ICUuYywlLm8sJChTUkNfUEFSVCkpCi1AQCAtNTQsMTcgKzU0LDE3IEBAIE9CSl9BUkNIPSQocGF0c3Vic3QgJS5jLCUubywkKFNSQ19BUkNIKSkKK0BAIC01MywxNyArNTMsMTcgQEAgT0JKX0FSQ0g9JChwYXRzdWJzdCAlLmMsJS5vLCQoU1JDX0FSQ0gpKQogIAogIExJQlMgPSAtbGR3IC1sYnoyIC1sZWJsIC1sZGwgLWxlbGYgLWx6CiAgaWZuZXEgKCQoTElOS1RZUEUpLCBkeW5hbWljKQpAQCAtMTAzLDcgKzEwNCw3IEBACiAgZW5kaWYKICAKICBMSUJTIDo9IC1scHRocmVhZCAkKExJQlMpCi1AQCAtNzIsMTQgKzcyLDE0IEBAIExJQlMgOj0gLWxwdGhyZWFkICQoTElCUykKK0BAIC03MSwxNCArNzEsMTQgQEAgTElCUyA6PSAtbHB0aHJlYWQgJChMSUJTKQogIGFsbDogbWFrZWR1bXBmaWxlCiAgCiAgJChPQkpfUEFSVCk6ICQoU1JDX1BBUlQpCkBAIC0xMjAsNyArMTIxLDcgQEAKICAJZWNobyAuVEggTUFLRURVTVBGSUxFIDggXCIkKERBVEUpXCIgXCJtYWtlZHVtcGZpbGUgdiQoVkVSU0lPTilcIiBcIkxpbnV4IFN5c3RlbSBBZG1pbmlzdHJhdG9yXCdzIE1hbnVhbFwiID4gdGVtcC44CiAgCWdyZXAgLXYgIl4uVEggTUFLRURVTVBGSUxFIDgiICQoVlBBVEgpbWFrZWR1bXBmaWxlLjggPj4gdGVtcC44CiAgCW12IHRlbXAuOCBtYWtlZHVtcGZpbGUuOAotQEAgLTkwLDcgKzkwLDcgQEAgbWFrZWR1bXBmaWxlOiAkKFNSQ19CQVNFKSAkKE9CSl9QQVJUKSAkKE9CSl9BUkNIKQorQEAgLTg5LDcgKzg5LDcgQEAgbWFrZWR1bXBmaWxlOiAkKFNSQ19CQVNFKSAkKE9CSl9QQVJUKSAkKE9CSl9BUkNIKQogIAlnemlwIC1jIC4vbWFrZWR1bXBmaWxlLmNvbmYuNSA+IC4vbWFrZWR1bXBmaWxlLmNvbmYuNS5negogIAogIGVwcGljX21ha2VkdW1wZmlsZS5zbzogZXh0ZW5zaW9uX2VwcGljLmMKQEAgLTEyOSw2ICsxMzAsMyBAQAogIAogIGNsZWFuOgogIAlybSAtZiAkKE9CSikgJChPQkpfUEFSVCkgJChPQkpfQVJDSCkgbWFrZWR1bXBmaWxlIG1ha2VkdW1wZmlsZS44Lmd6IG1ha2VkdW1wZmlsZS5jb25mLjUuZ3oKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDItbWVtX3NlY3Rpb24tU3VwcG9ydC1vbmx5LTQ2LWJpdC1mb3ItTUFYX1BIWVNNRU1fQklUUy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2gKaW5kZXggZTBjM2Q5YS4uNzY2ZjRmYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDItbWVtX3NlY3Rpb24tU3VwcG9ydC1vbmx5LTQ2LWJpdC1mb3ItTUFYX1BIWVNNRU1fQklUUy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGUvMDAwMi1tZW1fc2VjdGlvbi1TdXBwb3J0LW9ubHktNDYtYml0LWZvci1NQVhfUEhZU01FTV9CSVRTLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2NTNmZThlNzI0MDgxZDJmMjg5YzIyNDVkMTIyMGQ1ZjcxNzA1MzhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiYTEyM2ZhNmIyYWEwYWM2MmQxYjc4ZjMyNzMzOTYzNWFlODcyMDFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZHJ1IE1vaXNlIDxhbGV4YW5kcnUubW9pc2VAd2luZHJpdmVyLmNvbT4KIERhdGU6IEZyaSwgMjkgQXByIDIwMTYgMDc6NDA6NDYgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gbWVtX3NlY3Rpb246IFN1cHBvcnQgb25seSA0NiBiaXQgZm9yIE1BWF9QSFlTTUVNX0JJVFMgb24KQEAgLTIwLDE4ICsyMCwyMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUgTW9pc2UgPGFsZXhhbmRydS5tb2lzZUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorCiAtLS0KICBhcmNoL3BwYzY0LmMgfCAyOCArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hcmNoL3BwYzY0LmMgYi9hcmNoL3BwYzY0LmMKLWluZGV4IDg5YTdmMDUuLjZjOTI4YWIgMTAwNjQ0CitpbmRleCA4YjZmN2Q1Li40NThmMDZiIDEwMDY0NAogLS0tIGEvYXJjaC9wcGM2NC5jCiArKysgYi9hcmNoL3BwYzY0LmMKLUBAIC0zMDIsMzcgKzMwMiwxMyBAQCBwcGM2NF92dG9wX2xldmVsNCh1bnNpZ25lZCBsb25nIHZhZGRyKQorQEAgLTQ2MiwzOCArNDYyLDE0IEBAIHBwYzY0X3Z0b3BfbGV2ZWw0KHVuc2lnbmVkIGxvbmcgdmFkZHIpCisgCXJldHVybiBwYWRkcjsKICB9CiAgCi0gaW50CistaW50CiAtc2V0X3BwYzY0X21heF9waHlzbWVtX2JpdHModm9pZCkKIC17CiAtCWxvbmcgYXJyYXlfbGVuID0gQVJSQVlfTEVOR1RIKG1lbV9zZWN0aW9uKTsKQEAgLTUzLDcgKzU1LDcgQEAKIC0JcmV0dXJuIEZBTFNFOwogLX0KIC0KLS1pbnQKKyBpbnQKICBnZXRfbWFjaGRlcF9pbmZvX3BwYzY0KHZvaWQpCiAgewogIAl1bnNpZ25lZCBsb25nIHZtbGlzdCwgdm1hcF9hcmVhX2xpc3QsIHZtYWxsb2Nfc3RhcnQ7CkBAIC02OCw2ICs3MCwzIEBACiAgCWluZm8tPnBhZ2Vfb2Zmc2V0ID0gX19QQUdFX09GRlNFVDsKICAKICAJaWYgKFNZTUJPTChfc3RleHQpID09IE5PVF9GT1VORF9TWU1CT0wpIHsKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmYyZDgwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiVk1jb3JlIGV4dHJhY3Rpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIlwKLSAgICBUaGlzIHByb2dyYW0gaXMgdXNlZCB0byBleHRyYWN0IGEgc3Vic2V0IG9mIHRoZSBtZW1vcnkgYXZhaWxhYmxlIGVpdGhlciBcCi0gICAgdmlhIC9kZXYvbWVtIG9yIC9wcm9jL3ZtY29yZSAoZm9yIGNyYXNoZHVtcHMpLiBJdCBpcyB1c2VkIHRvIGdldCBtZW1vcnkgXAotICAgIGltYWdlcyB3aXRob3V0IGV4dHJhIHVuZWVkZWQgaW5mb3JtYXRpb24gKHplcm8gcGFnZXMsIHVzZXJzcGFjZSBwcm9ncmFtcywgXAotICAgIGV0YykuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYWtlZHVtcGZpbGUuc291cmNlZm9yZ2UubmV0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLUxJQ0VOU0UgPSAiR1BMdjIuMCIKLQotREVQRU5EUyA9ICJiemlwMiB6bGliIGVsZnV0aWxzIgotUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCAke1BOfSIKLQotIyBhcm0gd291bGQgY29tcGlsZSBidXQgaGFzIG5ldmVyIGJlZW4gdGVzdGVkIHVwc3RyZWFtLiAgbWlwcyB3b3VsZCBub3QgY29tcGlsZS4KLSMKLUNPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm0pLiotbGludXgiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qLnBsIgotCi1TUkNfVVJJID0gIlwKLSAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vbWFrZWR1bXBmaWxlLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLW1ha2VkdW1wZmlsZS1yZXBsYWNlLWhhcmRjb2RlLUNGTEFHUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItbWVtX3NlY3Rpb24tU3VwcG9ydC1vbmx5LTQ2LWJpdC1mb3ItTUFYX1BIWVNNRU1fQklUUy5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNzJiZTViZjk3M2VlZDg5OGM1MTI3ZTNhYmM0NjY1ODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUzZDIxY2I0MDMyYTYwYmQyYzgwMmQxZDhiMjFiOWYzOTk3MTBlMTU3NGY4ZGU4ZWFkNWFiNTBjZDgyMWE2ZCIKLQotU0VDVElPTiA9ICJiYXNlIgotCi0jIElmIHdlIGRvIG5vdCBzcGVjaWZ5IFRBUkdFVCwgbWFrZWR1bXBmaWxlIHdpbGwgYnVpbGQgZm9yIHRoZSBob3N0IGJ1dCB1c2UgdGhlCi0jIHRhcmdldCBnY2MuCi0jCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExJTktUWVBFPXN0YXRpYyBcCi0gICAgVEFSR0VUPSR7VEFSR0VUX0FSQ0h9IFwKLSIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfS91c3IvYmluCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUgJHtEfS91c3IvYmluCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUtUi5wbCAke0R9L3Vzci9iaW4KLQotICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW44Ci0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuOC5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAotCi0gICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mLjUuZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKLQotICAgIG1rZGlyIC1wICR7RH0vZXRjLwotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYgJHtEfS9ldGMvbWFrZWR1bXBmaWxlLmNvbmYuc2FtcGxlCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI5ZTI1MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuNC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIlZNY29yZSBleHRyYWN0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJcCisgICAgVGhpcyBwcm9ncmFtIGlzIHVzZWQgdG8gZXh0cmFjdCBhIHN1YnNldCBvZiB0aGUgbWVtb3J5IGF2YWlsYWJsZSBlaXRoZXIgXAorICAgIHZpYSAvZGV2L21lbSBvciAvcHJvYy92bWNvcmUgKGZvciBjcmFzaGR1bXBzKS4gSXQgaXMgdXNlZCB0byBnZXQgbWVtb3J5IFwKKyAgICBpbWFnZXMgd2l0aG91dCBleHRyYSB1bmVlZGVkIGluZm9ybWF0aW9uICh6ZXJvIHBhZ2VzLCB1c2Vyc3BhY2UgcHJvZ3JhbXMsIFwKKyAgICBldGMpLiBcCisiCitIT01FUEFHRSA9ICJodHRwOi8vbWFrZWR1bXBmaWxlLnNvdXJjZWZvcmdlLm5ldCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitMSUNFTlNFID0gIkdQTHYyLjAiCisKK0RFUEVORFMgPSAiYnppcDIgemxpYiBlbGZ1dGlscyIKK1JERVBFTkRTXyR7UE59LXRvb2xzID0gInBlcmwgJHtQTn0iCisKKyMgYXJtIHdvdWxkIGNvbXBpbGUgYnV0IGhhcyBuZXZlciBiZWVuIHRlc3RlZCB1cHN0cmVhbS4gIG1pcHMgd291bGQgbm90IGNvbXBpbGUuCisjCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxpLjg2fHBvd2VycGN8YXJtKS4qLWxpbnV4IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi5wbCIKKworU1JDX1VSSSA9ICJcCisgICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L21ha2VkdW1wZmlsZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjdkZmJjYTE5ZjQ4NzYwNGMyNzFlMjg5MmJhMDdmNGJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlMDZmNzJkNWYyOTFmY2FiOWU5Mjk3NWY0MDVhNzZlMzdkNGY3ZmM4ZmE0MTcyZjE5OTYzNjM5OGFlODEyYjEiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9tYWtlZHVtcGZpbGUvZmlsZXMvbWFrZWR1bXBmaWxlLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm1ha2VkdW1wZmlsZS8oP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitTRUNUSU9OID0gImJhc2UiCisKKyMgSWYgd2UgZG8gbm90IHNwZWNpZnkgVEFSR0VULCBtYWtlZHVtcGZpbGUgd2lsbCBidWlsZCBmb3IgdGhlIGhvc3QgYnV0IHVzZSB0aGUKKyMgdGFyZ2V0IGdjYy4KKyMKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgTElOS1RZUEU9c3RhdGljIFwKKyAgICBUQVJHRVQ9JHtUQVJHRVRfQVJDSH0gXAorIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBta2RpciAtcCAke0R9L3Vzci9iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZSAke0R9L3Vzci9iaW4KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZS1SLnBsICR7RH0vdXNyL2JpbgorCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS44Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW44CisKKyAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQorICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYuNS5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQorCisgICAgbWtkaXIgLXAgJHtEfS9ldGMvCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZiAke0R9L2V0Yy9tYWtlZHVtcGZpbGUuY29uZi5zYW1wbGUKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvMDAwMS1maXgtY29tcGlsZS1lcnJvci1vbi1hcmNoLXgzMi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvZmlsZXMvMDAwMS1maXgtY29tcGlsZS1lcnJvci1vbi1hcmNoLXgzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJhNmFkNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL2ZpbGVzLzAwMDEtZml4LWNvbXBpbGUtZXJyb3Itb24tYXJjaC14MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDg4M2Y1M2VlMzNlYWVmOGFjYTEyODhhMTEwODU3NDAyYWQzNjI5NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb2huIE9nbmVzcyA8am9obi5vZ25lc3NAbGludXRyb25peC5kZT4KLURhdGU6IEZyaSwgOCBTZXAgMjAxNyAxNTowMzowMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBmaXggY29tcGlsZSBlcnJvciBvbiBhcmNoPXgzMgotCi1PbiB0aGUgeDMyIGFyY2hpdGVjdHVyZSB0aW1lX3QgaXMgYSAibG9uZyBsb25nIGludCIuIEJ5Ci0gdHlwZWNhc3RpbmcgdGltZV90IHRvICJsb25nIGxvbmciLCB0aGlzIHNob3VsZCB3b3JrIGNvcnJlY3RseQotIGZvciBhbGwgYXJjaGl0ZWN0dXJlcy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMgYi9zcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMKLWluZGV4IGZkMzliZmIuLjA3ZGMzMTggMTAwNjQ0Ci0tLS0gYS9zcmMvbWluaWNvcmVkdW1wZXIvY29yZXN0cmlwcGVyLmMKLSsrKyBiL3NyYy9taW5pY29yZWR1bXBlci9jb3Jlc3RyaXBwZXIuYwotQEAgLTEyNDEsNyArMTI0MSw3IEBAIHN0YXRpYyBpbnQgZHVtcF9jb21wcmVzc2VkX3RhcihzdHJ1Y3QgZHVtcF9pbmZvICpkaSkKLSAJc25wcmludGYoaGRyLm1vZGUsIHNpemVvZihoZHIubW9kZSksICIlMDdvIiwgMDY0NCk7Ci0gCXNucHJpbnRmKGhkci51aWQsIHNpemVvZihoZHIudWlkKSwgIiUwN28iLCAwKTsKLSAJc25wcmludGYoaGRyLmdpZCwgc2l6ZW9mKGhkci5naWQpLCAiJTA3byIsIDApOwotLQlzbnByaW50ZihoZHIubXRpbWUsIHNpemVvZihoZHIubXRpbWUpLCAiJTAxMWxvIiwKLSsJc25wcmludGYoaGRyLm10aW1lLCBzaXplb2YoaGRyLm10aW1lKSwgIiUwMTFsbG8iLAotIAkJIChsb25nIGxvbmcpdGltZShOVUxMKSk7Ci0gCW1lbXNldChoZHIuY2hlY2tzdW0sICcgJywgc2l6ZW9mKGhkci5jaGVja3N1bSkpOwotIAloZHIudHlwZSA9ICdTJzsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21pbmljb3JlZHVtcGVyL21pbmljb3JlZHVtcGVyXzIuMC4wLmJiCmluZGV4IDBkM2M2NmIuLmJhZTVjZjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWluaWNvcmVkdW1wZXIvbWluaWNvcmVkdW1wZXJfMi4wLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9taW5pY29yZWR1bXBlci9taW5pY29yZWR1bXBlcl8yLjAuMC5iYgpAQCAtOSw3ICs5LDcgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQKIAotU1JDUkVWID0gImNkYzFmYWYxMjEyYTUxZTg5YjQ3NzQ2ODg3NmUyMjkyMjNmY2ViOWEiCitTUkNSRVYgPSAiMWMwZDU5NjBiMGJiNGJhYzc1NjZlNmFmZThiYzk3MDUzOTljYzc2YiIKIAogUFIgLj0gIitnaXQke1NSQ1BWfSIKIApAQCAtMTcsNyArMTcsNiBAQAogICAgICAgICAgICBmaWxlOi8vbWluaWNvcmVkdW1wZXIuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9taW5pY29yZWR1bXBlci5pbml0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWluaWNvcmVkdW1wZXItSW5pdGlhbGl6ZS1wb2ludGVyLXRvLWNvbmZpZy1zdHJ1Y3QtdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1jb21waWxlLWVycm9yLW9uLWFyY2gteDMyLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtNDMsMyArNDIsNiBAQAogICAgIHNlZCAtaSAtZSBzOi91c3IvYmluL21pbmljb3JlZHVtcGVyOiR7c2JpbmRpcn0vbWluaWNvcmVkdW1wZXI6ZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWluaWNvcmVkdW1wZXIKICAgICBzZWQgLWkgLWUgczovdXNyL2Jpbi9taW5pY29yZWR1bXBlcjoke3NiaW5kaXJ9L21pbmljb3JlZHVtcGVyOmcgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWluaWNvcmVkdW1wZXIuc2VydmljZQogfQorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NjYvCitFWENMVURFX0ZST01fV09STERfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IDRiMDE2NTQuLjM0OWUyYmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCkBAIC0yNSwxMiArMjUsMTIgQEAKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgICAgIGZpbGU6Ly9yb290LWhvbWUtZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoIFwKICIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm9wcm9maWxlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvb3Byb2ZpbGUvZmlsZXMvb3Byb2ZpbGUvIgogCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5wYXRjaCBcCisiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtRml4LUZUQkZTLXByb2JsZW0td2l0aC1HQ0MtNi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzcyZmQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1GaXgtRlRCRlMtcHJvYmxlbS13aXRoLUdDQy02LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSAzOWQ0ZDQ2YTBiZDUwNGFjNzA4ZmZlNzJkZjg3YmY3NGNkMTJhZDMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2lsbGlhbSBDb2hlbiA8d2NvaGVuQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDUgRmViIDIwMTYgMTc6MzA6MTkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IEZUQkZTIHByb2JsZW0gd2l0aCBHQ0MtNgotCi1HQ0MtNiBpcyBwaWNraWVyIGFib3V0IHNvbWUgb2YgdGhlIHR5cGUgY29udmVyc2lvbnMgY2F1c2luZyB0aGUgRmVkb3JhCi0yNCBtYXNzIHJlYnVpbGQgdGhlIGJ1aWxkIG9mIG9wcm9maWxlIGZhaWxlZCB3aXRoOgotCi1tYWtlWzNdOiBFbnRlcmluZyBkaXJlY3RvcnkgJy9idWlsZGRpci9idWlsZC9CVUlMRC9vcHJvZmlsZS0xLjEuMC9saWJ1dGlsKysnCi1nKysgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uICAtSSAuLi9saWJ1dGlsIC1JIC4uL2xpYm9wIC1JIC4uL2xpYnBwICAgLVcgLVdhbGwgLWZuby1jb21tb24gLWZ0ZW1wbGF0ZS1kZXB0aC01MCAtTzIgLWcgLXBpcGUgLVdhbGwgLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkgLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgLWZleGNlcHRpb25zIC1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00IC1ncmVjb3JkLWdjYy1zd2l0Y2hlcyAtc3BlY3M9L3Vzci9saWIvcnBtL3JlZGhhdC9yZWRoYXQtaGFyZGVuZWQtY2MxIC1tMzIgLW1hcmNoPWk2ODYgLW10dW5lPWF0b20gLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtYyAtbyBvcF9iZmQubyBvcF9iZmQuY3BwCi1vcF9iZmQuY3BwOiBJbiBtZW1iZXIgZnVuY3Rpb24gJ3ZvaWQgb3BfYmZkOjpnZXRfc3ltYm9sX3JhbmdlKHN5bWJvbF9pbmRleF90LCBsb25nIGxvbmcgdW5zaWduZWQgaW50JiwgbG9uZyBsb25nIHVuc2lnbmVkIGludCYpIGNvbnN0JzoKLW9wX2JmZC5jcHA6NTM4OjQ3OiBlcnJvcjogY2Fubm90IGNvbnZlcnQgJ3N0ZDo6b3N0cmVhbSB7YWthIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyPn0nIHRvICdjb25zdCBib29sJyBpbiBpbml0aWFsaXphdGlvbgotICBib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1vcF9iZmQuY3BwOjU0Njo3OiBlcnJvcjogaW4gYXJndW1lbnQgdG8gdW5hcnkgIQotICBpZiAoIXZlcmJvc2UpCi0gICAgICAgXn5+fn5+fgotCi1Bdm9pZCB0aGUgaW50ZXJtZWRpYXRlIGJvb2wgdHlwZSB0byBtYWtlIEdDQy02IGhhcHB5LgotCi1TaWduZWQtb2ZmLWJ5OiBXaWxsaWFtIENvaGVuIDx3Y29oZW5AcmVkaGF0LmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gbGlidXRpbCsrL29wX2JmZC5jcHAgfCA0ICstLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ1dGlsKysvb3BfYmZkLmNwcCBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCi1pbmRleCAzODljOTIwLi5mMmViNDJiIDEwMDY0NAotLS0tIGEvbGlidXRpbCsrL29wX2JmZC5jcHAKLSsrKyBiL2xpYnV0aWwrKy9vcF9iZmQuY3BwCi1AQCAtNTM1LDE1ICs1MzUsMTMgQEAgdm9pZCBvcF9iZmQ6OmdldF9zeW1ib2xfcmFuZ2Uoc3ltYm9sX2luZGV4X3Qgc3ltX2lkeCwKLSB7Ci0gCW9wX2JmZF9zeW1ib2wgY29uc3QgJiBzeW0gPSBzeW1zW3N5bV9pZHhdOwotIAotLQlib29sIGNvbnN0IHZlcmJvc2UgPSBjdmVyYiA8PCAodmJmZCAmIHZsZXZlbDEpOwotLQotIAlpZiAoYW5vbl9vYmopCi0gCQlzdGFydCA9IHN5bS52bWEoKTsKLSAJZWxzZQotIAkJc3RhcnQgPSBzeW0uZmlsZXBvcygpOwotIAllbmQgPSBzdGFydCArIHN5bS5zaXplKCk7Ci0gCi0tCWlmICghdmVyYm9zZSkKLSsJaWYgKCEoY3ZlcmIgPDwgKHZiZmQgJiB2bGV2ZWwxKSkpCi0gCQlyZXR1cm47Ci0gCi0gCWlvX3N0YXRlIHN0YXRlKGN2ZXJiIDw8ICh2YmZkICYgdmxldmVsMSkpOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhOTRhZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBvcHJvZmlsZS5pbmMKLQotREVQRU5EUyArPSAidmlydHVhbC9rZXJuZWwiCi1ERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIGxpYnBmbTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNDhjNGMwNjlmOTQ3NmY0MjdmYTcxOTU1NjNmOTg2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjc1OWE2ZGUxYTYwMzNkNWRmYzkzYmRhMTI5YTlmMmUxMjhhZWNjNDIzOGNjNjU3ZmViMDgwMWQxYjAzNjZjIgotCi1TID0gIiR7V09SS0RJUn0vb3Byb2ZpbGUtJHtQVn0iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYzUzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMy4wLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgb3Byb2ZpbGUuaW5jCisKK0RFUEVORFMgKz0gInZpcnR1YWwva2VybmVsIgorREVQRU5EU19hcHBlbmRfcG93ZXJwYzY0ID0gIiBsaWJwZm00IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQ5OThkZjU1MjFlYmVkYWUzMWU3MWNkM2ZiNjIwMGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTVkZWQ4YmRlMWVjMzk5MjJmMGFmMDE1OTgxYTY3YWVjNjNlMDI1YTUwMWU0ZGMwNGNkNjVkMzhmNzM2NDdlNiIKKworUyA9ICIke1dPUktESVJ9L29wcm9maWxlLSR7UFZ9IgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXQvQ09QWUlORyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvdHVyYm9zdGF0L3R1cmJvc3RhdC9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNGNiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXQvQ09QWUlORwpAQCAtMCwwICsxLDE4IEBACitUaGUgTGludXggS2VybmVsIGlzIHByb3ZpZGVkIHVuZGVyOgorCisJU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUKKworQmVpbmcgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgb25seSwKK2FjY29yZGluZyB3aXRoOgorCisJTElDRU5TRVMvcHJlZmVycmVkL0dQTC0yLjAKKworV2l0aCBhbiBleHBsaWNpdCBzeXNjYWxsIGV4Y2VwdGlvbiwgYXMgc3RhdGVkIGF0OgorCisJTElDRU5TRVMvZXhjZXB0aW9ucy9MaW51eC1zeXNjYWxsLW5vdGUKKworSW4gYWRkaXRpb24sIG90aGVyIGxpY2Vuc2VzIG1heSBhbHNvIGFwcGx5LiBQbGVhc2Ugc2VlOgorCisJRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2xpY2Vuc2UtcnVsZXMucnN0CisKK2ZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXRfMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC90dXJib3N0YXQvdHVyYm9zdGF0XzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzNlNzhmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC90dXJib3N0YXQvdHVyYm9zdGF0XzMuNC5iYgpAQCAtMCwwICsxLDU3IEBACisjCisjIENvcHlyaWdodCAoQykgMjAxMyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCitTVU1NQVJZID0gIkZyZXF1ZW5jeSBhbmQgSWRsZSBwb3dlciBtb25pdG9yaW5nIHRvb2xzIGZvciBMaW51eCIKKworREVTQ1JJUFRJT04gPSAiVGhlIHR1cmJvc3RhdCB0b29sIGFsbG93cyB5b3UgdG8gZGV0ZXJtaW5lIHRoZSBhY3R1YWwgXAorcHJvY2Vzc29yIGZyZXF1ZW5jeSBhbmQgaWRsZSBwb3dlciBzYXZpbmcgc3RhdGUgcmVzaWRlbmN5IG9uIHN1cHBvcnRlZCBcCitwcm9jZXNzb3JzLiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICJudWxsIgorCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vQ09QWUlORyBcCisgICAgICAgICAgICAiCisKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCisKKyMgVGhpcyBsb29rcyBpbiBTLCBzbyB3ZSBiZXR0ZXIgbWFrZSBzdXJlIHRoZXJlJ3MKKyMgc29tZXRoaW5nIGluIHRoZSBkaXJlY3RvcnkuCisjCitkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gPSAiJHtQTn06ZG9fY29uZmlndXJlIgorCisKK0VYVFJBX09FTUFLRSA9ICdcCisgICAgICAgICAgICAgICAgQ0M9IiR7Q0N9IiBcCisJCSdDRkxBR1M9LVdhbGwgLUkke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS91YXBpICR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICcKKworIyBJZiB3ZSBidWlsZCB1bmRlciBTVEFHSU5HX0tFUk5FTF9ESVIsIHNvdXJjZSB3aWxsIG5vdCBiZSBwdXQKKyMgaW50byB0aGUgZGJnIHJwbS4gIFNUQUdJTkdfS0VSTkVMX0RJUiB3aWxsIGV4aXN0IGJ5IHRoZSB0aW1lCisjIGRvX2NvbmZpZ3VyZSgpIGlzIGludm9rZWQgc28gd2UgY2FuIHNhZmVseSBjb3B5IGZyb20gaXQuCisjCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlta2RpciAtcCAke1N9CisJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1pbmRleC5oICR7U30KKwljcCAtciAke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS9hc20vaW50ZWwtZmFtaWx5LmggJHtTfQorCWNwIC1yICR7U1RBR0lOR19LRVJORUxfRElSfS90b29scy9wb3dlci94ODYvdHVyYm9zdGF0LyogJHtTfQorCWNwIC1yICR7V09SS0RJUn0vQ09QWUlORyAke1N9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJc2VkIC1pICdzI01TUkhFQURFUiMibXNyLWluZGV4LmgiIycgdHVyYm9zdGF0LmMKKwlzZWQgLWkgJ3MjSU5URUxfRkFNSUxZX0hFQURFUiMiaW50ZWwtZmFtaWx5LmgiIycgdHVyYm9zdGF0LmMKKwlzZWQgLWkgJ3MjXCQoQ0MpIFwkKENGTEFHUykgXCQ8IC1vIFwkKEJVSUxEX09VVFBVVCkvXCRAI1wkKENDKSBcJChDRkxBR1MpIFwkKExERkxBR1MpIFwkPCAtbyBcJChCVUlMRF9PVVRQVVQpL1wkQCMnIE1ha2VmaWxlCisJb2VfcnVubWFrZSBTVEFHSU5HX0tFUk5FTF9ESVI9JHtTVEFHSU5HX0tFUk5FTF9ESVJ9Cit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMC4yOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzRhOWY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4wLjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBbHNhIE9TUyBDb21wYXRpYmlsaXR5IFBhY2thZ2UiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zOTNhNWNhNDQ1ZjY5NjU4NzNlY2EwMjU5YTE3ZjgzMyIKLURFUEVORFMgPSAiYWxzYS1saWIiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL29zcy1saWIvYWxzYS1vc3MtJHtQVn0udGFyLmJ6MiBcCi0gICAgZmlsZTovL2xpYmlvLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MWY1N2U4Y2VlMWFkNGNjOTU2Y2FhOGI2MmFjNWQ0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWU2MmNhYTg4YTBiYzdiMzBlZDgzNmRjYjc5NGRjNmVmNGQzNjUwNDM5ZTIyNjBkYjU0Y2FjZTdkNWM2YWQ1IgotCi1pbmhlcml0IGF1dG90b29scwotCi1MRUFEX1NPTkFNRSA9ICJsaWJhb3NzLnNvLjAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICB0b3VjaCBORVdTIFJFQURNRSBBVVRIT1JTIENoYW5nZUxvZwotICAgIHNlZCAtaSAicy9saWJhb3NzLnNvLyR7TEVBRF9TT05BTUV9LyIgJHtTfS9hbHNhL2Fvc3MuaW4KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1vc3NfMS4xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMjE3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2Etb3NzXzEuMS42LmJiCkBAIC0wLDAgKzEsNDYgQEAKKyMgRklYTUU6IHRoZSBMSUNfRklMRVNfQ0hLU1VNIHZhbHVlcyBoYXZlIGJlZW4gdXBkYXRlZCBieSAnZGV2dG9vbCB1cGdyYWRlJy4KKyMgVGhlIGZvbGxvd2luZyBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvbGQgYW5kIHRoZSBuZXcgbGljZW5zZSB0ZXh0LgorIyBQbGVhc2UgdXBkYXRlIHRoZSBMSUNFTlNFIHZhbHVlIGlmIG5lZWRlZCwgYW5kIHN1bW1hcml6ZSB0aGUgY2hhbmdlcyBpbgorIyB0aGUgY29tbWl0IG1lc3NhZ2UgdmlhICdMaWNlbnNlLVVwZGF0ZTonIHRhZy4KKyMgKGV4YW1wbGU6ICdMaWNlbnNlLVVwZGF0ZTogY29weXJpZ2h0IHllYXJzIHVwZGF0ZWQuJykKKyMKKyMgVGhlIGNoYW5nZXM6CisjCisjIC0tLSBDT1BZSU5HCisjICsrKyBDT1BZSU5HCisjIEBAIC0yLDcgKzIsOCBAQAorIyAgCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTEKKyMgIAorIyAgIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgLSAgICAgICAgICAgICAgICAgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorIyArIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQQorIyArCisjICAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisjICAgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisjICAKKyMgCisjCisKK1NVTU1BUlkgPSAiQWxzYSBPU1MgQ29tcGF0aWJpbGl0eSBQYWNrYWdlIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQwNTViNGVmZjkzZGE3ODQxNzZhMDE1ODJlNmVjMWEiCitERVBFTkRTID0gImFsc2EtbGliIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9vc3MtbGliL2Fsc2Etb3NzLSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly9saWJpby5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZmM4NDVjYWZjNDQ0NDE5MzUxMGFiMTg2NWM3MzUwYjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNkM2Y3NDNlNjFmMDVmZjk1YzVjYmEzYjA2YmM5YzkxZmY4NmMzNzQ5NWYxZDE5ZGFiODQ0ZTZiOTA4NDVlYSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworTEVBRF9TT05BTUUgPSAibGliYW9zcy5zby4wIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgdG91Y2ggTkVXUyBSRUFETUUgQVVUSE9SUyBDaGFuZ2VMb2cKKyAgICBzZWQgLWkgInMvbGliYW9zcy5zby8ke0xFQURfU09OQU1FfS8iICR7U30vYWxzYS9hb3NzLmluCit9CisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4Njk2MS8KK0VYQ0xVREVfRlJPTV9XT1JMRF9saWJjLW11c2wgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWQyL2ZhYWQyXzIuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2ZhYWQyL2ZhYWQyXzIuNy5iYgppbmRleCA2M2U1OTBjLi45ZTVhMzgxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9mYWFkMi9mYWFkMl8yLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvZmFhZDIvZmFhZDJfMi43LmJiCkBAIC0xLDkgKzEsMTIgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgcmVhZGluZyBzb21lIHNvcnQgb2YgbWVkaWEgZm9ybWF0IgorU1VNTUFSWSA9ICJBbiBvcGVuIHNvdXJjZSBNUEVHLTQgYW5kIE1QRUctMiBBQUMgZGVjb2RpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXVkaW9jb2RpbmcuY29tL2ZhYWQyLmh0bWwiCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkdQTHYyIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zODFjOGNiZTI3N2E3YmMxZWUyYWU2MDgzYTA0Yzk1OCIKIAorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCiBQUiA9ICJyMSIKIAogaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFjay8wMDAxLVB5dGhvbi0zLjctZml4ZXMtMjEyNi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFjay8wMDAxLVB5dGhvbi0zLjctZml4ZXMtMjEyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjAyMWNkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrLzAwMDEtUHl0aG9uLTMuNy1maXhlcy0yMTI2LnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gNzI1NjRiMDQxNTFiNjFmYThkOTU0YmJiNDNhZmM1ODEwOGVlNTBlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBOYWd5IDx0bmFneUB3YWYuaW8+CitEYXRlOiBNb24sIDEyIE1hciAyMDE4IDIwOjQyOjU1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFB5dGhvbiAzLjcgZml4ZXMgIzIxMjYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0bGFiLmNvbS9pdGExMDI0L3dhZi9jb21taXQvZmFjZGMwYjE3M2Q5MzMwNzM4MzJjNzY4ZWMxOTE3YzU1M2NiMzY5Y10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHdhZmxpYi9Ob2RlLnB5IHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvd2FmbGliL05vZGUucHkgYi93YWZsaWIvTm9kZS5weQoraW5kZXggZmIzY2QyNzMuLjQwNWE2ZmVjIDEwMDY0NAorLS0tIGEvd2FmbGliL05vZGUucHkKKysrKyBiL3dhZmxpYi9Ob2RlLnB5CitAQCAtNTM3LDggKzUzNyw2IEBAIGNsYXNzIE5vZGUob2JqZWN0KToKKyAJCQkJCWlmIG1heGRlcHRoOgorIAkJCQkJCWZvciBrIGluIG5vZGUuYW50X2l0ZXIoYWNjZXB0PWFjY2VwdCwgbWF4ZGVwdGg9bWF4ZGVwdGggLSAxLCBwYXRzPW5wYXRzLCBkaXI9ZGlyLCBzcmM9c3JjLCByZW1vdmU9cmVtb3ZlKToKKyAJCQkJCQkJeWllbGQgaworLQkJcmFpc2UgU3RvcEl0ZXJhdGlvbgorLQorIAlkZWYgYW50X2dsb2Ioc2VsZiwgKmssICoqa3cpOgorIAkJIiIiCisgCQlUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBmaW5kaW5nIGZpbGVzIGFjcm9zcyBmb2xkZXJzLiBJdCBiZWhhdmVzIGxpa2UgYW50IHBhdHRlcm5zOgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2phY2svamFja19naXQuYmIKaW5kZXggMTFkYTZiMS4uNTI1NTljYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvamFjay9qYWNrX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9qYWNrL2phY2tfZ2l0LmJiCkBAIC0xNCw3ICsxNCw5IEBACiAKIERFUEVORFMgPSAibGlic2FtcGxlcmF0ZTAgbGlic25kZmlsZTEgcmVhZGxpbmUiCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qYWNrYXVkaW8vamFjazIuZ2l0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2phY2thdWRpby9qYWNrMi5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QeXRob24tMy43LWZpeGVzLTIxMjYucGF0Y2ggXAorICAgICAgICAgICAiCiBTUkNSRVYgPSAiYzE2NDc4MTllZWQ2ZDExZjk0YjIxOTgxZDljODY5NjI5Mjk5ZjM1NyIKIFBWID0gIjEuOS4xMiIKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtbXMvbGlibW1zXzAuNi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlibW1zL2xpYm1tc18wLjYuNC5iYgppbmRleCA4MzEzOTRlLi42NjhhZmM4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJtbXMvbGlibW1zXzAuNi40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm1tcy9saWJtbXNfMC42LjQuYmIKQEAgLTEwLDMgKzEwLDExIEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2MwNWUwNWFlYmNiZmNjMDQ0ZDllOGMyZDQ2NDZjZDgzNTliZTM5YTNmMGJhOGNlNGU3MmE5MDk0YmVlNzA0ZiIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgVGhlIEdMaWIgZGVwZW5kZW5jeSB3YXMgcmVtb3ZlZCBpbiBsaWJtbXMgMC42LjMsIGJ1dCB0aGUKKyAgICAjICJSZXF1aXJlcyIgd2FzIG5vdCByZW1vdmVkIGZyb20gdGhlIHBrZy1jb25maWcgZmlsZS4gIFNpbmNlIHdlCisgICAgIyBkb24ndCBoYXZlIChhbmQgZG9uJ3Qgd2FudCkgdGhlIFJERVBFTkRTIG9uIEdMaWIsIHdlIHNob3VsZAorICAgICMgcmVtb3ZlIHRoZSAiUmVxdWlyZXMiIGxpbmUuCisgICAgc2VkIC1pICcvXlJlcXVpcmVzOiBnbGliLTJcLjAkL2QnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYm1tcy5wYworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib3B1cy9saWJvcHVzXzEuMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib3B1cy9saWJvcHVzXzEuMS4zLmJiCmluZGV4IGEyNGY1ZTMuLmRkNjc4OWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9wdXMvbGlib3B1c18xLjEuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvcHVzL2xpYm9wdXNfMS4xLjMuYmIKQEAgLTUwLDMgKzUwLDUgQEAKICN8IHtzdGFuZGFyZCBpbnB1dH06NzczOiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgZnAscjMscjUscjgnCiAjfCBtYWtlWzJdOiAqKiogW2NlbHQvY2VsdC5sb10gRXJyb3IgMQogQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNkbC1pbWFnZS9saWJzZGwyLWltYWdlXzIuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLWltYWdlL2xpYnNkbDItaW1hZ2VfMi4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOWM3OTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic2RsLWltYWdlL2xpYnNkbDItaW1hZ2VfMi4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBEaXJlY3RNZWRpYSBMYXllciBpbWFnZSBsaWJyYXJ5IHYyIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9ZWM2NWI5Nzc4ZjU1ODRhMGJkOGRmYzE3ZDYzNDBiYTAiCi0KLURFUEVORFMgPSAidGlmZiB6bGliIGxpYnBuZyBqcGVnIHZpcnR1YWwvbGlic2RsMiBsaWJ3ZWJwIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9wcm9qZWN0cy9TRExfaW1hZ2UvcmVsZWFzZS9TREwyX2ltYWdlLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkOTRiOTQ1NTViYTAyMmZhMjQ5YTUzYTAyMWRjMzYwNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTNlYWZiY2VlYTUxMjVjMDRiZTU4NTM3M2JmZDhiM2ExOGYyNTliZDdlYWUzZWZjNGU2ZDhlNjBlMGQ3ZjY0IgotCi1TID0gIiR7V09SS0RJUn0vU0RMMl9pbWFnZS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgRGlzYWJsZSB0aGUgcnVuLXRpbWUgbG9hZGluZyBvZiB0aGUgbGlicyBhbmQgYnJpbmcgYmFjayB0aGUgc29uYW1lIGRlcGVuZGVuY2llcy4KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWpwZy1zaGFyZWQgLS1kaXNhYmxlLXBuZy1zaGFyZWQgLWRpc2FibGUtdGlmLXNoYXJlZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBtYWtlIGF1dG9yZWNvbmYgaGFwcHkKLSAgICB0b3VjaCAke1N9L05FV1MgJHtTfS9SRUFETUUgJHtTfS9BVVRIT1JTICR7U30vQ2hhbmdlTG9nCi0gICAgIyBSZW1vdmluZyB0aGVzZSBmaWxlcyBmaXhlcyBhIGxpYnRvb2wgdmVyc2lvbiBtaXNtYXRjaC4KLSAgICBybSAtZiAke1N9L2FjaW5jbHVkZS9saWJ0b29sLm00Ci0gICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvc2RsMi5tNAotICAgIHJtIC1mICR7U30vYWNpbmNsdWRlL3BrZy5tNAotICAgIHJtIC1mICR7U30vYWNpbmNsdWRlL2x0fm9ic29sZXRlLm00Ci0gICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvbHRvcHRpb25zLm00Ci0gICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvbHRzdWdhci5tNAotICAgIHJtIC1mICR7U30vYWNpbmNsdWRlL2x0dmVyc2lvbi5tNAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4yNi4wLmJiCmluZGV4IGRlNzhkZTIuLmMyZThlM2QgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKQEAgLTMxLDYgKzMxLDggQEAKICAgICBsaWJhc3MgXAogICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCBkKX0gXAogIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9hYXJjaDY0ID0gImx1YSIKIFBBQ0tBR0VDT05GSUdbZHJtXSA9ICItLWVuYWJsZS1kcm0sLS1kaXNhYmxlLWRybSxsaWJkcm0iCiBQQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0sdmlydHVhbC9tZXNhIgogUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0tZW5hYmxlLWx1YSwtLWRpc2FibGUtbHVhLGx1YSBsdWFqaXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtYnVpbGRzeXN0ZW0tZG8tbm90LWFzc3VtZS1idWlsZGluZy1pbi1zb3VyY2UtdHJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI2MDlkMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLUZyb20gNzUzNzJiODA4OGMyMDQ3NDQ5N2I3OWVjNmNmMWU5OWYyZDE3ZjU2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IElzbW8gUHV1c3RpbmVuIDxpc21vLnB1dXN0aW5lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDMgQXByIDIwMTcgMTM6MjM6MzggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGRzeXN0ZW06IGRvIG5vdCBhc3N1bWUgYnVpbGRpbmcgaW4gc291cmNlIHRyZWUuCi0KLVVzZSAkKHRvcF9zcmNkaXIpIGFzIHJlZmVyZW5jZSBmb3IgaW5jbHVkZSBwYXRocyBhbmQgYnVpbGR0aW1lIHNjcmlwdHMuCi1PdGhlcndpc2UgY29tcGlsYXRpb24gb3V0c2lkZSBvZiBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IHdpbGwgZmFpbAotYmVjYXVzZSBoZWFkZXIgYW5kIHNjcmlwdCBwYXRocyBhcmUgd3JvbmcuCi0KLVRvIHJlcHJvZHVjZTogbWtkaXIgYjsgY2QgYjsgLi4vY29uZmlndXJlOyBtYWtlCi0KLVVwc3RyZWFtLXN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0LmxpbnV4dHYub3JnLy92NGwtdXRpbHMuZ2l0L2NvbW1pdC8/aWQ9YmQ5OGM5YTk5YmZmYzhkNDRjNTQ4NTkzNDVlNGRmZWUwYWRhNDI3NV0KLQotU2lnbmVkLW9mZi1ieTogSXNtbyBQdXVzdGluZW4gPGlzbW8ucHV1c3RpbmVuQGludGVsLmNvbT4KLQotLS0tCi0gdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0gIHwgMiArLQotIHV0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0gICAgICAgICB8IDIgKy0KLSB1dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0gICAgfCA0ICsrLS0KLSB1dGlscy9xdjRsMi9NYWtlZmlsZS5hbSAgICAgICAgICAgfCAyICstCi0gdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtIHwgMiArLQotIHV0aWxzL3Y0bDItY3RsL01ha2VmaWxlLmFtICAgICAgICB8IDIgKy0KLSA2IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3V0aWxzL2NlYy1jb21wbGlhbmNlL01ha2VmaWxlLmFtIGIvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KLWluZGV4IGYwNWZlNmMuLmY3ZDE1MzUgMTAwNjQ0Ci0tLS0gYS91dGlscy9jZWMtY29tcGxpYW5jZS9NYWtlZmlsZS5hbQotKysrIGIvdXRpbHMvY2VjLWNvbXBsaWFuY2UvTWFrZWZpbGUuYW0KLUBAIC03LDcgKzcsNyBAQCBjZWNfY29tcGxpYW5jZV9MREZMQUdTID0gLWxydAotIGNlYy1jb21wbGlhbmNlLmNwcDogY2VjLXRhYmxlLmgKLSAKLSBjZWMtdGFibGUuaDogLi4vY2VjLWN0bC9tc2cyY3RsLnBsIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLmggLi4vLi4vaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaAotLQkuLi9jZWMtY3RsL21zZzJjdGwucGwgMiAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy5oIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmggPiRACi0rCSQodG9wX3NyY2RpcikvdXRpbHMvY2VjLWN0bC9tc2cyY3RsLnBsIDIgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2xpbnV4L2NlYy5oICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaCA+JEAKLSAKLSBjZWMtY29tcGxpYW5jZS5jcHA6IHZlcnNpb24uaAotIAotZGlmZiAtLWdpdCBhL3V0aWxzL2NlYy1jdGwvTWFrZWZpbGUuYW0gYi91dGlscy9jZWMtY3RsL01ha2VmaWxlLmFtCi1pbmRleCA0YTZlYWU1Li41NzBhMDcwIDEwMDY0NAotLS0tIGEvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbQotKysrIGIvdXRpbHMvY2VjLWN0bC9NYWtlZmlsZS5hbQotQEAgLTYsNyArNiw3IEBAIGNlY19jdGxfU09VUkNFUyA9IGNlYy1jdGwuY3BwCi0gY2VjLWN0bC5jcHA6IGNlYy1jdGwtZ2VuLmgKLSAKLSBjZWMtY3RsLWdlbi5oOiBtc2cyY3RsLnBsIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLmggLi4vLi4vaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaAotLQkuL21zZzJjdGwucGwgMCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy5oIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmggPiRACi0rCSQodG9wX3NyY2RpcikvdXRpbHMvY2VjLWN0bC9tc2cyY3RsLnBsIDAgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL2xpbnV4L2NlYy5oICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMtZnVuY3MuaCA+JEAKLSAKLSBjbGVhbi1sb2NhbDoKLSAJLXJtIC12ZiBjZWMtY3RsLWdlbi5oCi1kaWZmIC0tZ2l0IGEvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtIGIvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtCi1pbmRleCBkOGFkMjkyLi5lMzU1M2ViIDEwMDY0NAotLS0tIGEvdXRpbHMvY2VjLWZvbGxvd2VyL01ha2VmaWxlLmFtCi0rKysgYi91dGlscy9jZWMtZm9sbG93ZXIvTWFrZWZpbGUuYW0KLUBAIC03LDEyICs3LDEyIEBAIGNlY19mb2xsb3dlcl9MREZMQUdTID0gLWxydAotIGNlYy1sb2cuY3BwOiBjZWMtbG9nLmgKLSAKLSBjZWMtbG9nLmg6IC4uL2NlYy1jdGwvbXNnMmN0bC5wbCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy5oIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmgKLS0JLi4vY2VjLWN0bC9tc2cyY3RsLnBsIDEgLi4vLi4vaW5jbHVkZS9saW51eC9jZWMuaCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy1mdW5jcy5oID4kQAotKwkkKHRvcF9zcmNkaXIpL3V0aWxzL2NlYy1jdGwvbXNnMmN0bC5wbCAxICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMuaCAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmggPiRACi0gCi0gY2VjLWZvbGxvd2VyLmNwcDogY2VjLXRhYmxlLmggdmVyc2lvbi5oCi0gCi0gY2VjLXRhYmxlLmg6IC4uL2NlYy1jdGwvbXNnMmN0bC5wbCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy5oIC4uLy4uL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmgKLS0JLi4vY2VjLWN0bC9tc2cyY3RsLnBsIDIgLi4vLi4vaW5jbHVkZS9saW51eC9jZWMuaCAuLi8uLi9pbmNsdWRlL2xpbnV4L2NlYy1mdW5jcy5oID4kQAotKwkkKHRvcF9zcmNkaXIpL3V0aWxzL2NlYy1jdGwvbXNnMmN0bC5wbCAyICQodG9wX3NyY2RpcikvaW5jbHVkZS9saW51eC9jZWMuaCAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbGludXgvY2VjLWZ1bmNzLmggPiRACi0gCi0gdmVyc2lvbi5oOgotIAlAaWYgZ2l0IHNob3ctcmVmIC1zIEhFQUQgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLWRpZmYgLS1naXQgYS91dGlscy9xdjRsMi9NYWtlZmlsZS5hbSBiL3V0aWxzL3F2NGwyL01ha2VmaWxlLmFtCi1pbmRleCBmZDU4NDg2Li5jY2QxYTJhIDEwMDY0NAotLS0tIGEvdXRpbHMvcXY0bDIvTWFrZWZpbGUuYW0KLSsrKyBiL3V0aWxzL3F2NGwyL01ha2VmaWxlLmFtCi1AQCAtOCw3ICs4LDcgQEAgcXY0bDJfU09VUkNFUyA9IHF2NGwyLmNwcCBnZW5lcmFsLXRhYi5jcHAgY3RybC10YWIuY3BwIHZiaS10YWIuY3BwIGNhcHR1cmUtd2luLmMKLSBub2Rpc3RfcXY0bDJfU09VUkNFUyA9IG1vY19xdjRsMi5jcHAgbW9jX2dlbmVyYWwtdGFiLmNwcCBtb2NfY2FwdHVyZS13aW4uY3BwIG1vY192YmktdGFiLmNwcCBxcmNfcXY0bDIuY3BwCi0gcXY0bDJfTERBREQgPSAuLi8uLi9saWIvbGlidjRsMi9saWJ2NGwyLmxhIC4uLy4uL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNvbnZlcnQubGEgXAotICAgLi4vbGlidjRsMnV0aWwvbGlidjRsMnV0aWwubGEgLi4vbGlibWVkaWFfZGV2L2xpYm1lZGlhX2Rldi5sYQotLXF2NGwyX0NQUEZMQUdTID0gLUkuLi9jb21tb24KLStxdjRsMl9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS91dGlscy9jb21tb24KLSAKLSBpZiBXSVRIX1FUR0wKLSBxdjRsMl9DUFBGTEFHUyArPSAkKFFUR0xfQ0ZMQUdTKQotZGlmZiAtLWdpdCBhL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbSBiL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbQotaW5kZXggYzJiNTkxOS4uZmI4ZDEyZSAxMDA2NDQKLS0tLSBhL3V0aWxzL3Y0bDItY29tcGxpYW5jZS9NYWtlZmlsZS5hbQotKysrIGIvdXRpbHMvdjRsMi1jb21wbGlhbmNlL01ha2VmaWxlLmFtCi1AQCAtNSw3ICs1LDcgQEAgREVGUyA6PQotIHY0bDJfY29tcGxpYW5jZV9TT1VSQ0VTID0gdjRsMi1jb21wbGlhbmNlLmNwcCB2NGwyLXRlc3QtZGVidWcuY3BwIHY0bDItdGVzdC1pbnB1dC1vdXRwdXQuY3BwIFwKLSAJdjRsMi10ZXN0LWNvbnRyb2xzLmNwcCB2NGwyLXRlc3QtaW8tY29uZmlnLmNwcCB2NGwyLXRlc3QtZm9ybWF0cy5jcHAgdjRsMi10ZXN0LWJ1ZmZlcnMuY3BwIFwKLSAJdjRsMi10ZXN0LWNvZGVjcy5jcHAgdjRsMi10ZXN0LWNvbG9ycy5jcHAgdjRsMi1jb21wbGlhbmNlLmgKLS12NGwyX2NvbXBsaWFuY2VfQ1BQRkxBR1MgPSAtSS4uL2NvbW1vbgotK3Y0bDJfY29tcGxpYW5jZV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS91dGlscy9jb21tb24KLSAKLSBpZiBXSVRIX1Y0TDJfQ09NUExJQU5DRV9MSUJWNEwKLSB2NGwyX2NvbXBsaWFuY2VfTERBREQgPSAuLi8uLi9saWIvbGlidjRsMi9saWJ2NGwyLmxhIC4uLy4uL2xpYi9saWJ2NGxjb252ZXJ0L2xpYnY0bGNvbnZlcnQubGEgLWxydCAtbHB0aHJlYWQKLWRpZmYgLS1naXQgYS91dGlscy92NGwyLWN0bC9NYWtlZmlsZS5hbSBiL3V0aWxzL3Y0bDItY3RsL01ha2VmaWxlLmFtCi1pbmRleCA5NTU2NDdkLi44MjVlNTNmIDEwMDY0NAotLS0tIGEvdXRpbHMvdjRsMi1jdGwvTWFrZWZpbGUuYW0KLSsrKyBiL3V0aWxzL3Y0bDItY3RsL01ha2VmaWxlLmFtCi1AQCAtNyw3ICs3LDcgQEAgdjRsMl9jdGxfU09VUkNFUyA9IHY0bDItY3RsLmNwcCB2NGwyLWN0bC5oIHY0bDItY3RsLWNvbW1vbi5jcHAgdjRsMi1jdGwtdHVuZXIuY3AKLSAJdjRsMi1jdGwtb3ZlcmxheS5jcHAgdjRsMi1jdGwtdmJpLmNwcCB2NGwyLWN0bC1zZWxlY3Rpb24uY3BwIHY0bDItY3RsLW1pc2MuY3BwIFwKLSAJdjRsMi1jdGwtc3RyZWFtaW5nLmNwcCB2NGwyLWN0bC1zZHIuY3BwIHY0bDItY3RsLWVkaWQuY3BwIHY0bDItY3RsLW1vZGVzLmNwcCBcCi0gCXY0bDItdHBnLWNvbG9ycy5jIHY0bDItdHBnLWNvcmUuYyB2NGwtc3RyZWFtLmMKLS12NGwyX2N0bF9DUFBGTEFHUyA9IC1JLi4vY29tbW9uCi0rdjRsMl9jdGxfQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvdXRpbHMvY29tbW9uCi0gCi0gaWYgV0lUSF9WNEwyX0NUTF9MSUJWNEwKLSB2NGwyX2N0bF9MREFERCA9IC4uLy4uL2xpYi9saWJ2NGwyL2xpYnY0bDIubGEgLi4vLi4vbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC5sYSAtbHJ0IC1scHRocmVhZApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDEtaXItY3RsLURlZmluZS1URU1QX0ZBSUxVUkVfUkVUUlktaWYtdW5kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmZjM2UxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gYjJlZmNjMjA2MTdkNjMxN2Y3NGM0YWNiMmE2YWY1Yjc2NWYyMGIzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDEzOjExOjI1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlyLWN0bDogRGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWSBpZiB1bmRlZmluZWQKLQotdXNlIHN0cm5kdXAoKSBpbnN0ZWFkIG9mIHN0cm5kdXBhKCkgd2hpY2ggaXMgbm90Ci11bml2ZXJzYWxseSBhdmFpbGFibGUgaW4gQyBsaWJyYXJpZXMKLQotVGFrZW4gZnJvbSBBbHBpbmVMaW51eAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSB1dGlscy9pci1jdGwvaXItY3RsLmMgfCAxNCArKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS91dGlscy9pci1jdGwvaXItY3RsLmMgYi91dGlscy9pci1jdGwvaXItY3RsLmMKLWluZGV4IGJjNThjZWUuLjFhNDQwMTEgMTAwNjQ0Ci0tLS0gYS91dGlscy9pci1jdGwvaXItY3RsLmMKLSsrKyBiL3V0aWxzL2lyLWN0bC9pci1jdGwuYwotQEAgLTQyLDYgKzQyLDE2IEBACi0gIyBkZWZpbmUgXyhzdHJpbmcpIHN0cmluZwotICNlbmRpZgotIAotKy8qIHRha2VuIGZyb20gZ2xpYmMgdW5pc3RkLmggKi8KLSsjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQotKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKLSsgIChfX2V4dGVuc2lvbl9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgIF9fcmVzdWx0OyB9KSkKLSsjZW5kaWYKLSsKLSAjIGRlZmluZSBOXyhzdHJpbmcpIHN0cmluZwotIAotIAotQEAgLTM0NCwxMiArMzU0LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqcmVhZF9zY2FuY29kZShjb25zdCBjaGFyICpuYW1lKQotIAkJcmV0dXJuIE5VTEw7Ci0gCX0KLSAKLS0JcHN0ciA9IHN0cm5kdXBhKG5hbWUsIHAgLSBuYW1lKTsKLSsJcHN0ciA9IHN0cm5kdXAobmFtZSwgcCAtIG5hbWUpOwotIAotIAlpZiAoIXByb3RvY29sX21hdGNoKHBzdHIsICZwcm90bykpIHsKLSAJCWZwcmludGYoc3RkZXJyLCBfKCJlcnJvcjogcHJvdG9jb2wgJyVzJyBub3QgZm91bmRcbiIpLCBwc3RyKTsKLSsJCWZyZWUocHN0cik7Ci0gCQlyZXR1cm4gTlVMTDsKLSAJfQotKwlmcmVlKHBzdHIpOwotIAotIAlpZiAoIXN0cnRvc2NhbmNvZGUocCArIDEsICZzY2FuY29kZSkpIHsKLSAJCWZwcmludGYoc3RkZXJyLCBfKCJlcnJvcjogaW52YWxpZCBzY2FuY29kZSAnJXMnXG4iKSwgcCArIDEpOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlscy8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2gKaW5kZXggYTc3OWEzMC4uODAzM2ZjYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzLzAwMDItY29udHJpYi10ZXN0LUxpbmstbWNfbmV4dGdlbl90ZXN0LXdpdGgtbGliYXJncC1pZi1uZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHMvMDAwMi1jb250cmliLXRlc3QtTGluay1tY19uZXh0Z2VuX3Rlc3Qtd2l0aC1saWJhcmdwLWlmLW5lLnBhdGNoCkBAIC02LDE3ICs2LDE2IEBACiBtdXNsIGRlcGVuZHMgb24gZXh0ZXJuYWwgYXJncCBpbXBsZW1lbnRhdGlvbiBlLmcuCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KIC0tLQogIGNvbnRyaWIvdGVzdC9NYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdC9NYWtlZmlsZS5hbSBiL2NvbnRyaWIvdGVzdC9NYWtlZmlsZS5hbQotaW5kZXggNDY0MWUyMS4uZTQ3Yjk0OCAxMDA2NDQKK2luZGV4IDAxODhmZTIuLmRhYzA3ZjMgMTAwNjQ0CiAtLS0gYS9jb250cmliL3Rlc3QvTWFrZWZpbGUuYW0KICsrKyBiL2NvbnRyaWIvdGVzdC9NYWtlZmlsZS5hbQotQEAgLTMyLDcgKzMyLDcgQEAgdjRsMmdsX0xERkxBR1MgPSAkKFgxMV9MSUJTKSAkKEdMX0xJQlMpICQoR0xVX0xJQlMpICQoQVJHUF9MSUJTKQotIHY0bDJnbF9MREFERCA9IC4uLy4uL2xpYi9saWJ2NGwyL2xpYnY0bDIubGEgLi4vLi4vbGliL2xpYnY0bGNvbnZlcnQvbGlidjRsY29udmVydC5sYQorQEAgLTQwLDcgKzQwLDcgQEAgc2RsY2FtX0NGTEFHUyA9IC1JLi4vLi4gJChTREwyX0NGTEFHUykKKyBzZGxjYW1fTERBREQgPSAuLi8uLi9saWIvbGlidjRsMi9saWJ2NGwyLmxhICAuLi8uLi9saWIvbGlidjRsY29udmVydC9saWJ2NGxjb252ZXJ0LmxhCiAgCiAgbWNfbmV4dGdlbl90ZXN0X0NGTEFHUyA9ICQoTElCVURFVl9DRkxBR1MpCiAtbWNfbmV4dGdlbl90ZXN0X0xERkxBR1MgPSAkKExJQlVERVZfTElCUykKQEAgLTI0LDMgKzIzLDYgQEAKICAKICAKICBpb2N0bF90ZXN0X1NPVVJDRVMgPSBpb2N0bC10ZXN0LmMgaW9jdGwtdGVzdC5oIGlvY3RsXzMyLmggaW9jdGxfNjQuaAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Y0bDJhcHBzL3Y0bC11dGlsc18xLjEyLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2ZiMTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAidjRsMiBhbmQgSVIgYXBwbGljYXRpb25zIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDhkYTk5NTc4NDkwNTYwMTdkYzU2OGJiYzQzZDg5NzUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5saWJ2NGw7bWQ1PWQ3NDllODZhMTA1MjgxZDdhNDRjMjMyOGFjZWJjNGIwIgotUFJPVklERVMgPSAibGlidjRsIG1lZGlhLWN0bCIKLQotREVQRU5EUyA9ICJqcGVnIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAndmlydHVhbC9saWJ4MTEnLCAnJywgZCl9IgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCi1MREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJtZWRpYS1jdGwiCi1QQUNLQUdFQ09ORklHW21lZGlhLWN0bF0gPSAiLS1lbmFibGUtdjRsLXV0aWxzLC0tZGlzYWJsZS12NGwtdXRpbHMsLCIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGludXh0di5vcmcvZG93bmxvYWRzL3Y0bC11dGlscy92NGwtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1tZWRpYS1jdGwtRG9uLXQtaW5zdGFsbC1saWJtZWRpYWN0bC1hbmQtbGlidjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZHN5c3RlbS1kby1ub3QtYXNzdW1lLWJ1aWxkaW5nLWluLXNvdXJjZS10cmVlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlyLWN0bC1EZWZpbmUtVEVNUF9GQUlMVVJFX1JFVFJZLWlmLXVuZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4OWUxZWQ2YzY5Yzk0ZTA0ODlkYzBhNjM4Yzc4NDFhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTQ3ZGQ2ZjBlN2RmZTkwMmQ5NDYwNWMwMWQzODVhNGE0ZTg3NTgzZmY1ODU2ZDZmMTgxOTAwZWE4MWNmNDZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXF2NGwyIC0tZW5hYmxlLXNoYXJlZCAtLXdpdGgtdWRldmRpcj0ke2Jhc2VfbGliZGlyfS91ZGV2IgotCi1WSVJUVUFMLVJVTlRJTUVfaXIta2V5dGFibGUta2V5bWFwcyA/PSAicmMta2V5bWFwcyIKLQotUEFDS0FHRVMgPSsgIm1lZGlhLWN0bCBpci1rZXl0YWJsZSByYy1rZXltYXBzIGxpYnY0bCBsaWJ2NGwtZGJnIGxpYnY0bC1kZXYiCi0KLUZJTEVTX21lZGlhLWN0bCA9ICIke2JpbmRpcn0vbWVkaWEtY3RsICR7bGliZGlyfS9saWJtZWRpYWN0bC5zby4qIgotCi1GSUxFU19pci1rZXl0YWJsZSA9ICIke2JpbmRpcn0vaXIta2V5dGFibGUgJHtiYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyotaW5mcmFyZWQucnVsZXMiCi1SREVQRU5EU19pci1rZXl0YWJsZSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfaXIta2V5dGFibGUta2V5bWFwc30iCi0KLUZJTEVTX3JjLWtleW1hcHMgPSAiJHtzeXNjb25mZGlyfS9yYyogJHtiYXNlX2xpYmRpcn0vdWRldi9yYyoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke3NiaW5kaXJ9IgotCi1GSUxFU19saWJ2NGwgKz0gIiR7bGliZGlyfS9saWJ2NGwqJHtTT0xJQlN9ICR7bGliZGlyfS9saWJ2NGwvKi5zbyAke2xpYmRpcn0vbGlidjRsL3BsdWdpbnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJkdmJ2NSoke1NPTElCU30gXAotICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlidjRsLyotZGVjb21wIgotCi1GSUxFU19saWJ2NGwtZGJnICs9ICIke2xpYmRpcn0vbGlidjRsLy5kZWJ1ZyAke2xpYmRpcn0vbGlidjRsL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfbGlidjRsLWRldiArPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ2NGwqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS92NGwqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9saWJ2NGwvKi5sYSAke2xpYmRpcn0vbGlidjRsL3BsdWdpbnMvKi5sYSIKLQotUEFSQUxMRUxfTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS92NGwyYXBwcy92NGwtdXRpbHNfMS4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2VhZDAwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvdjRsMmFwcHMvdjRsLXV0aWxzXzEuMTYuMC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gInY0bDIgYW5kIElSIGFwcGxpY2F0aW9ucyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ4ZGE5OTU3ODQ5MDU2MDE3ZGM1NjhiYmM0M2Q4OTc1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcubGlidjRsO21kNT1kNzQ5ZTg2YTEwNTI4MWQ3YTQ0YzIzMjhhY2ViYzRiMCIKK1BST1ZJREVTID0gImxpYnY0bCBtZWRpYS1jdGwiCisKK0RFUEVORFMgPSAianBlZyBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3ZpcnR1YWwvbGlieDExJywgJycsIGQpfSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgorTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAibWVkaWEtY3RsIgorUEFDS0FHRUNPTkZJR1ttZWRpYS1jdGxdID0gIi0tZW5hYmxlLXY0bC11dGlscywtLWRpc2FibGUtdjRsLXV0aWxzLCwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpbnV4dHYub3JnL2Rvd25sb2Fkcy92NGwtdXRpbHMvdjRsLXV0aWxzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtbWVkaWEtY3RsLURvbi10LWluc3RhbGwtbGlibWVkaWFjdGwtYW5kLWxpYnY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21lZGlhY3RsLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leHBvcnQtbWVkaWFjdGwtaGVhZGVycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbnRyaWItdGVzdC1MaW5rLW1jX25leHRnZW5fdGVzdC13aXRoLWxpYmFyZ3AtaWYtbmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy12NGwyLWN0bC1Eby1ub3QtdXNlLWdldHN1Ym9wdC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMWE2ZWMzNjA1YTFjMzExNGM4Y2NiNzBhOTYzYzg3MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWI0MjU1ODQyODRiYWMzNzhiNzYzMzFjMDY3MWRjODkwYmQ3YWY0OWMwM2U4YTZjYzBjNzBlNTdlZWEwYmFkIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXF2NGwyIC0tZW5hYmxlLXNoYXJlZCAtLXdpdGgtdWRldmRpcj0ke2Jhc2VfbGliZGlyfS91ZGV2IgorCitWSVJUVUFMLVJVTlRJTUVfaXIta2V5dGFibGUta2V5bWFwcyA/PSAicmMta2V5bWFwcyIKKworUEFDS0FHRVMgPSsgIm1lZGlhLWN0bCBpci1rZXl0YWJsZSByYy1rZXltYXBzIGxpYnY0bCBsaWJ2NGwtZGV2IgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJsaWJ2NGwtZGJnIgorCitGSUxFU19tZWRpYS1jdGwgPSAiJHtiaW5kaXJ9L21lZGlhLWN0bCAke2xpYmRpcn0vbGlibWVkaWFjdGwuc28uKiIKKworRklMRVNfaXIta2V5dGFibGUgPSAiJHtiaW5kaXJ9L2lyLWtleXRhYmxlICR7YmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8qLWluZnJhcmVkLnJ1bGVzIgorUkRFUEVORFNfaXIta2V5dGFibGUgKz0gIiR7VklSVFVBTC1SVU5USU1FX2lyLWtleXRhYmxlLWtleW1hcHN9IgorCitGSUxFU19yYy1rZXltYXBzID0gIiR7c3lzY29uZmRpcn0vcmMqICR7YmFzZV9saWJkaXJ9L3VkZXYvcmMqIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtzYmluZGlyfSIKKworRklMRVNfbGlidjRsICs9ICIke2xpYmRpcn0vbGlidjRsKiR7U09MSUJTfSAke2xpYmRpcn0vbGlidjRsLyouc28gJHtsaWJkaXJ9L2xpYnY0bC9wbHVnaW5zLyouc28gXAorICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliZHZidjUqJHtTT0xJQlN9IFwKKyAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnY0bC8qLWRlY29tcCIKKworRklMRVNfbGlidjRsLWRldiArPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vcGtnY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ2NGwqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS92NGwqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS9saWJ2NGwvKi5sYSAke2xpYmRpcn0vbGlidjRsL3BsdWdpbnMvKi5sYSIKKworUEFSQUxMRUxfTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCmluZGV4IGQ1MjZkYjIuLmU4MjNlNDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE3LmJiCkBAIC04NCwxMyArODQsMTMgQEAKICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zeXN0ZW1kLyR7QlBOfS5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59LnNvY2tldAogfQogCi1QQUNLQUdFUyA9KyAibGliZ3BzIGxpYmdwc2QgcHl0aG9uLXB5Z3BzLWRiZyBweXRob24tcHlncHMgZ3BzZC11ZGV2IGdwc2QtY29uZiBncHNkLWdwc2N0bCBncHMtdXRpbHMiCitQQUNLQUdFUyA9KyAibGliZ3BzIGxpYmdwc2QgcHl0aG9uLXB5Z3BzIGdwc2QtdWRldiBncHNkLWNvbmYgZ3BzZC1ncHNjdGwgZ3BzLXV0aWxzIgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJweXRob24tcHlncHMtZGJnIgogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25mZGlyL2xpYmdwc2QucGMgJHtsaWJkaXJ9L3BrZ2NvbmZkaXIvbGliZ3BzLnBjIFwKICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYlFncHNtbS5wcmwiCiAKLUZJTEVTX3B5dGhvbi1weWdwcy1kYmcgKz0gIiAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL2dwcy8uZGVidWciCi0KIFJERVBFTkRTXyR7UE59ID0gImdwc2QtZ3BzY3RsIgogUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3BzZC1jb25mIGdwc2QtdWRldiBncHNkLW1hY2hpbmUtY29uZiIKIApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvbm1hcC1yZWRlZmluZS10aGUtcHl0aG9uLWxpYnJhcnktZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvbm1hcC1yZWRlZmluZS10aGUtcHl0aG9uLWxpYnJhcnktZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy9ubWFwLXJlZGVmaW5lLXRoZS1weXRob24tbGlicmFyeS1kaXIucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL2ZpbGVzL25tYXAtcmVkZWZpbmUtdGhlLXB5dGhvbi1saWJyYXJ5LWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvbm1hcC1yZXBsYWNlLXNodG9vbC1ta2Rpci13aXRoLWNvcmV1dGlscy1ta2Rpci1jb21tYW5kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvbm1hcC1yZXBsYWNlLXNodG9vbC1ta2Rpci13aXRoLWNvcmV1dGlscy1ta2Rpci1jb21tYW5kLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy9ubWFwLXJlcGxhY2Utc2h0b29sLW1rZGlyLXdpdGgtY29yZXV0aWxzLW1rZGlyLWNvbW1hbmQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL2ZpbGVzL25tYXAtcmVwbGFjZS1zaHRvb2wtbWtkaXItd2l0aC1jb3JldXRpbHMtbWtkaXItY29tbWFuZC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjcwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYmUxNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9ubWFwXzcuNzAuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJuZXR3b3JrIGF1ZGl0aW5nIHRvb2wiCitERVNDUklQVElPTiA9ICJObWFwICgiTmV0d29yayBNYXBwZXIiKSBpcyBhIGZyZWUgYW5kIG9wZW4gc291cmNlIChsaWNlbnNlKSB1dGlsaXR5IGZvciBuZXR3b3JrIGRpc2NvdmVyeSBhbmQgc2VjdXJpdHkgYXVkaXRpbmcuXG5HdWkgc3VwcG9ydCB2aWEgYXBwZW5kaW5nIHRvIElNQUdFX0ZFQVRVUkVTIHgxMS1iYXNlIGluIGxvY2FsLmNvbmYiCitTRUNUSU9OID0gInNlY3VyaXR5IgorTElDRU5TRSA9ICJHUEwtMi4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT03O2VuZGxpbmU9MTI7bWQ1PTE0ODkyODhmNDZhZjQxNWZhZGM0ZThiNjM0NWFiOWY0IgorCitTUkNfVVJJID0gImh0dHA6Ly9ubWFwLm9yZy9kaXN0LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbm1hcC1yZWRlZmluZS10aGUtcHl0aG9uLWxpYnJhcnktZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25tYXAtcmVwbGFjZS1zaHRvb2wtbWtkaXItd2l0aC1jb3JldXRpbHMtbWtkaXItY29tbWFuZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NGViNmZiZTc4OGUwZDQ5MThjMmIxZTM5NDIxYmY3OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NDdiMDY4OTU1Zjc5MmY0Y2MyNDc1OTNhY2E2ZGMzZGM0YWFlMTI5NzYxNjk4NzMyNDc0ODhkZTE0N2E2ZTE4IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZQorCitQQUNLQUdFQ09ORklHID89ICJuY2F0IG5waW5nIG5kaWZmIHBjYXAiCisKK1BBQ0tBR0VDT05GSUdbcGNhcF0gPSAiLS13aXRoLXBjYXA9bGludXgsIC0td2l0aG91dC1wY2FwLCBsaWJwY2FwLCBsaWJwY2FwIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtbGlicGNyZT0ke1NUQUdJTkdfTElCRElSfS8uLiwgLS13aXRoLWxpYnBjcmU9aW5jbHVkZWQsIGxpYnByZSIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiwgLS13aXRob3V0LW9wZW5zc2wsIG9wZW5zc2wsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NzaDJdID0gIi0td2l0aC1vcGVuc3NoMj0ke1NUQUdJTkdfTElCRElSfS8uLiwgLS13aXRob3V0LW9wZW5zc2gyLCBsaWJzc2gyLCBsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1tsaWJ6XSA9ICItLXdpdGgtbGliej0ke1NUQUdJTkdfTElCRElSfS8uLiwgLS13aXRob3V0LWxpYnosIHpsaWIsIHpsaWIiCisKKyNkaXNhYmxlL2VuYWJsZSBwYWNrYWdlcworUEFDS0FHRUNPTkZJR1tucGluZ10gPSAiLC0td2l0aG91dC1ucGluZywiCitQQUNLQUdFQ09ORklHW25jYXRdID0gIiwtLXdpdGhvdXQtbmNhdCwiCitQQUNLQUdFQ09ORklHW25kaWZmXSA9ICIsLS13aXRob3V0LW5kaWZmLHB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbdXBkYXRlXSA9ICIsLS13aXRob3V0LW5tYXAtdXBkYXRlLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1saWJkbmV0PWluY2x1ZGVkIC0td2l0aC1saWJsaW5lYXI9aW5jbHVkZWQgLS13aXRob3V0LXN1YnZlcnNpb24gLS13aXRoLWxpYmx1YT1pbmNsdWRlZCIKKworIyB6ZW5tYXAgbmVlZHMgcHl0aG9uLXB5Z3RrIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQKKyMgaXQgYWxzbyBvbmx5IHdvcmtzIHdpdGggcHl0aG9uMgorIyBkaXNhYmxlIGZvciBub3cgdW50aWwgcHkzIGlzIHN1cHBvcnRlZAorRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtemVubWFwIgorCitleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKKworZG9fY29uZmlndXJlKCkgeworICAgIGF1dG9jb25mCisgICAgb2VfcnVuY29uZgorfQorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaF82LjIwLjAwLmJiCmluZGV4IGI1OWQ4OGYuLmMxNzE5NjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjAuMDAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMC4wMC5iYgpAQCAtNyw3ICs3LDcgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT01NzVjZjI3MTVjM2JmODk0ZTFmNzlhZWMxZDRlYWFmNSIKIFNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2NyeXB0IGdldHRleHQtbmF0aXZlIgogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly9mdHAuZnVuZXQuZmkvcHViL21pcnJvcnMvZnRwLmFzdHJvbi5jb20vcHViL3Rjc2gvJHtCUH0udGFyLmd6IFwKICAgICBmaWxlOi8vMDAwMS1FbmFibGUtc3lzdGVtLW1hbGxvYy1vbi1hbGwtbGludXgucGF0Y2ggXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy96c2gvenNoXzUuNC4yLmJiCmluZGV4IDEwMGM0NDkuLjNhYWI2NWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvenNoL3pzaF81LjQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3pzaC96c2hfNS40LjIuYmIKQEAgLTQ5LDYgKzQ5LDcgQEAKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgIHJtIC1mciAke0R9L3Vzci9zaGFyZQorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0vdXNyCiB9CiAKIHBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXNpby9hc2lvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRmNzhlNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQXNpbyBpcyBhIGNyb3NzLXBsYXRmb3JtIEMrKyBsaWJyYXJ5IGZvciBuZXR3b3JrIGFuZCBsb3ctbGV2ZWwgXAotICAgICAgICBJL08gcHJvZ3JhbW1pbmcgdGhhdCBwcm92aWRlcyBkZXZlbG9wZXJzIHdpdGggYSBjb25zaXN0ZW50IGFzeW5jaHJvbm91cyBcCi0gICAgICAgIG1vZGVsIHVzaW5nIGEgbW9kZXJuIEMrKyBhcHByb2FjaC4iCi1BVVRIT1IgPSAiQ2hyaXN0b3BoZXIgTS4gS29obGhvZmYgKGNocmlzIGF0IGtvaGxob2ZmIGRvdCBjb20pIgotSE9NRVBBR0UgPSAiaHR0cDovL3RoaW5rLWFzeW5jLmNvbS9Bc2lvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0wtMS4wIgotCi1ERVBFTkRTID0gImJvb3N0IG9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2FzaW8vJHtCUH0udGFyLmJ6MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FzaW8vYXNpby8wMDAxLUF1dG9tYXRpY2FsbHktaGFuZGxlLWdsaWJjLXZhcmlhbnQtb2Ytc3RyZXJyb3Jfci13aXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW8vMDAwMS1BdXRvbWF0aWNhbGx5LWhhbmRsZS1nbGliYy12YXJpYW50LW9mLXN0cmVycm9yX3Itd2l0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjQ0Yjk3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FzaW8vYXNpby8wMDAxLUF1dG9tYXRpY2FsbHktaGFuZGxlLWdsaWJjLXZhcmlhbnQtb2Ytc3RyZXJyb3Jfci13aXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDQ1Yzg1NTQwMDg0MmZkNDBmMjAwYWU5YjdhYmY5ZGViZjRhYjU0MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcGhlciBLb2hsaG9mZiA8Y2hyaXNAa29obGhvZmYuY29tPgotRGF0ZTogU3VuLCAyOCBBdWcgMjAxNiAwOToyMTo1MyArMTAwMAotU3ViamVjdDogW1BBVENIXSBBdXRvbWF0aWNhbGx5IGhhbmRsZSBnbGliYyB2YXJpYW50IG9mIHN0cmVycm9yX3Igd2l0aG91dAotICNpZmRlZnMuCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBodHRwczovL2dpdGh1Yi5jb20vY2hyaXNrb2hsaG9mZi9hc2lvL2NvbW1pdC80NDNiYzE3ZDEzZWI1ZTM3ZGU3ODBlYTZlMjMxNTc0OTNjZjdiM2I5Ci0gaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAgfCAxNiArKysrKysrLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNpby9pbXBsL2Vycm9yX2NvZGUuaXBwIGIvaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKLWluZGV4IGNjYjcwZGQuLmExMTc2NTggMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2FzaW8vaW1wbC9lcnJvcl9jb2RlLmlwcAotKysrIGIvaW5jbHVkZS9hc2lvL2ltcGwvZXJyb3JfY29kZS5pcHAKLUBAIC05NywyMCArOTcsMTggQEAgcHVibGljOgotICNpZiBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fUU5YX18pIHx8IGRlZmluZWQoX19TWU1CSUFOMzJfXykKLSAgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAgcmV0dXJuIHN0cmVycm9yKHZhbHVlKTsKLS0jZWxpZiBkZWZpbmVkKF9fTUFDSF9fKSAmJiBkZWZpbmVkKF9fQVBQTEVfXykgXAotLSAgfHwgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSBcCi0tICB8fCBkZWZpbmVkKF9BSVgpIHx8IGRlZmluZWQoX19ocHV4KSB8fCBkZWZpbmVkKF9fb3NmX18pIFwKLS0gIHx8IGRlZmluZWQoX19BTkRST0lEX18pCi0tICAgIGNoYXIgYnVmWzI1Nl0gPSAiIjsKLS0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLS0gICAgc3RyZXJyb3Jfcih2YWx1ZSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0tICAgIHJldHVybiBidWY7Ci0gI2Vsc2UKLSAgICAgY2hhciBidWZbMjU2XSA9ICIiOwotLSAgICByZXR1cm4gc3RyZXJyb3Jfcih2YWx1ZSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0rICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0rICAgIHJldHVybiBzdHJlcnJvcl9yZXN1bHQoc3RyZXJyb3Jfcih2YWx1ZSwgYnVmLCBzaXplb2YoYnVmKSksIGJ1Zik7Ci0gI2VuZGlmCi0gI2VuZGlmIC8vIGRlZmluZWQoQVNJT19XSU5ET1dTKQotICAgfQotKwotK3ByaXZhdGU6Ci0rICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWRhcHQgdGhlIHJlc3VsdCBmcm9tIGdsaWJjJ3MgdmFyaWFudCBvZiBzdHJlcnJvcl9yLgotKyAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmVycm9yX3Jlc3VsdChpbnQsIGNvbnN0IGNoYXIqIHMpIHsgcmV0dXJuIHM7IH0KLSsgIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJlcnJvcl9yZXN1bHQoY29uc3QgY2hhciogcywgY29uc3QgY2hhciopIHsgcmV0dXJuIHM7IH0KLSB9OwotIAotIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW8vMDAwMS11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FzaW8vYXNpby8wMDAxLXVzZS1QT1NJWC1wb2xsLmgtaW5zdGVhZC1vZi1zeXMtcG9sbC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjk1ZjVhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2FzaW8vYXNpby8wMDAxLXVzZS1QT1NJWC1wb2xsLmgtaW5zdGVhZC1vZi1zeXMtcG9sbC5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSBkYWMzNmExNzAxODg5MTdlMmY2MWIwMzk0YmE4YTJmNjUwOWRkZjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBEcmFzemlrPz0gPGFkcmFzemlrQHR5Y29pbnQuY29tPgotRGF0ZTogVHVlLCA4IE5vdiAyMDE2IDIwOjM5OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVzZSBQT1NJWCBwb2xsLmggaW5zdGVhZCBvZiBzeXMvcG9sbC5oCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVBPU0lYIHNwZWNpZmllcyB0aGF0IDxwb2xsLmg+IGlzIHRoZSBjb3JyZWN0IGhlYWRlciB0bwotaW5jbHVkZSBmb3IgcG9sbCgpCi0gIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3BvbGwuaHRtbAotd2hlcmVhcyA8c3lzL3BvbGwuaD4gaXMgb25seSBuZWVkZWQgZm9yIGFuY2llbnQgZ2xpYmMgKDwyLjMpLAotc28gbGV0J3MgZm9sbG93IFBPU0lYIGluc3RlYWQuCi0KLUFzIGEgc2lkZS1lZmZlY3QsIHRoaXMgc2lsZW5jZXMgbnVtZXJvdXMgY29tcGlsYXRpb24gd2FybmluZ3MKLXdoZW4gY29tcGlsaW5nIGFnYWluc3QgdGhlIG11c2wgQy1saWJyYXJ5OgotCi1JbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vLi4vLi4vLi4vYXNpby0xLjEwLjYvc3JjL2V4YW1wbGVzL2NwcDAzLy4uLy4uLy4uL2luY2x1ZGUvYXNpby9kZXRhaWwvc29ja2V0X3R5cGVzLmhwcDo1NzowLAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uLy4uLy4uL2FzaW8tMS4xMC42L3NyYy9leGFtcGxlcy9jcHAwMy8uLi8uLi8uLi9pbmNsdWRlL2FzaW8vaW1wbC9lcnJvcl9jb2RlLmlwcDoyOSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2Vycm9yX2NvZGUuaHBwOjE4NSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2RldGFpbC90aHJvd19lcnJvci5ocHA6MTksCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vLi4vLi4vYXNpby0xLjEwLjYvc3JjL2V4YW1wbGVzL2NwcDAzLy4uLy4uLy4uL2luY2x1ZGUvYXNpby9kZXRhaWwvaW1wbC9wb3NpeF90c3NfcHRyLmlwcDoyMywKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2RldGFpbC9wb3NpeF90c3NfcHRyLmhwcDo3NCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2RldGFpbC90c3NfcHRyLmhwcDoyNywKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2RldGFpbC9jYWxsX3N0YWNrLmhwcDoyMCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2ltcGwvaGFuZGxlcl9hbGxvY19ob29rLmlwcDoxOSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2hhbmRsZXJfYWxsb2NfaG9vay5ocHA6NzgsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vLi4vLi4vYXNpby0xLjEwLjYvc3JjL2V4YW1wbGVzL2NwcDAzLy4uLy4uLy4uL2luY2x1ZGUvYXNpby9kZXRhaWwvaGFuZGxlcl9hbGxvY19oZWxwZXJzLmhwcDoyMSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2RldGFpbC9iaW5kX2hhbmRsZXIuaHBwOjE5LAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uLy4uLy4uL2FzaW8tMS4xMC42L3NyYy9leGFtcGxlcy9jcHAwMy8uLi8uLi8uLi9pbmNsdWRlL2FzaW8vZGV0YWlsL3dyYXBwZWRfaGFuZGxlci5ocHA6MTgsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vLi4vLi4vYXNpby0xLjEwLjYvc3JjL2V4YW1wbGVzL2NwcDAzLy4uLy4uLy4uL2luY2x1ZGUvYXNpby9pb19zZXJ2aWNlLmhwcDoyNCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvL2Jhc2ljX2lvX29iamVjdC5ocHA6MTksCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vLi4vLi4vYXNpby0xLjEwLjYvc3JjL2V4YW1wbGVzL2NwcDAzLy4uLy4uLy4uL2luY2x1ZGUvYXNpby9iYXNpY19zb2NrZXQuaHBwOjIwLAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uLy4uLy4uL2FzaW8tMS4xMC42L3NyYy9leGFtcGxlcy9jcHAwMy8uLi8uLi8uLi9pbmNsdWRlL2FzaW8vYmFzaWNfZGF0YWdyYW1fc29ja2V0LmhwcDoyMCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvLi4vLi4vLi4vaW5jbHVkZS9hc2lvLmhwcDoxOSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi8uLi8uLi9hc2lvLTEuMTAuNi9zcmMvZXhhbXBsZXMvY3BwMDMvYnVmZmVycy9yZWZlcmVuY2VfY291bnRlZC5jcHA6MTE6Ci08c3lzcm9vdD4vdXNyL2luY2x1ZGUvc3lzL3BvbGwuaDoxOjI6IHdhcm5pbmc6ICN3YXJuaW5nIHJlZGlyZWN0aW5nIGluY29ycmVjdCAjaW5jbHVkZSA8c3lzL3BvbGwuaD4gdG8gPHBvbGwuaD4gWy1XY3BwXQotICN3YXJuaW5nIHJlZGlyZWN0aW5nIGluY29ycmVjdCAjaW5jbHVkZSA8c3lzL3BvbGwuaD4gdG8gPHBvbGwuaD4KLSAgXn5+fn5+fgotCi1ldGMuCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgaHR0cHM6Ly9zdm4uYm9vc3Qub3JnL3RyYWMvYm9vc3QvdGlja2V0LzEyNDE5Ci0gaW5jbHVkZS9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwIGIvaW5jbHVkZS9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi1pbmRleCBmMjYwMGMyLi5jYjYxYjhlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9hc2lvL2RldGFpbC9zb2NrZXRfdHlwZXMuaHBwCi0rKysgYi9pbmNsdWRlL2FzaW8vZGV0YWlsL3NvY2tldF90eXBlcy5ocHAKLUBAIC01NCw3ICs1NCw3IEBACi0gI2Vsc2UKLSAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPgotICMgaWYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKLS0jICBpbmNsdWRlIDxzeXMvcG9sbC5oPgotKyMgIGluY2x1ZGUgPHBvbGwuaD4KLSAjIGVuZGlmCi0gIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW9fMS4xMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXNpby9hc2lvXzEuMTAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY1NjAzOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW9fMS4xMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBhc2lvLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZWRlNTI4NmE3ODU1OWRkNjQ2ZTM1NWFiMGNjOGYwNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg1ZDAxNGEzNTZhNmUwMDRjZDMwY2NkNGM5YjZhNWMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwZDcxYzQwYTdiMWY2YzEzMzQwMDhmYjI3OWU3MzYxYjMyYTA2M2UwMjBlZmQyMWU0MGQ5ZDhmZjAzNzE5NWUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1BdXRvbWF0aWNhbGx5LWhhbmRsZS1nbGliYy12YXJpYW50LW9mLXN0cmVycm9yX3Itd2l0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS11c2UtUE9TSVgtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hc2lvL2FzaW9fMS4xMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXNpby9hc2lvXzEuMTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGNkOWMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXNpby9hc2lvXzEuMTIuMS5iYgpAQCAtMCwwICsxLDIyIEBACitERVNDUklQVElPTiA9ICJBc2lvIGlzIGEgY3Jvc3MtcGxhdGZvcm0gQysrIGxpYnJhcnkgZm9yIG5ldHdvcmsgYW5kIGxvdy1sZXZlbCBcCisgICAgICAgIEkvTyBwcm9ncmFtbWluZyB0aGF0IHByb3ZpZGVzIGRldmVsb3BlcnMgd2l0aCBhIGNvbnNpc3RlbnQgYXN5bmNocm9ub3VzIFwKKyAgICAgICAgbW9kZWwgdXNpbmcgYSBtb2Rlcm4gQysrIGFwcHJvYWNoLiIKK0FVVEhPUiA9ICJDaHJpc3RvcGhlciBNLiBLb2hsaG9mZiAoY2hyaXMgYXQga29obGhvZmYgZG90IGNvbSkiCitIT01FUEFHRSA9ICJodHRwOi8vdGhpbmstYXN5bmMuY29tL0FzaW8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkJTTC0xLjAiCisKK0RFUEVORFMgPSAiYm9vc3Qgb3BlbnNzbCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vYXNpby8ke0JQfS50YXIuYnoyIgorCitpbmhlcml0IGF1dG90b29scworCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zZTczZjMxMWEzYWY2OWU2ZGYyNzVlOGMzYjFjMDliNSIKKworU1JDX1VSSVttZDVzdW1dID0gIjAzNzg1NGQxMTMwMjRmNTdjOTc1M2Q2MzI2YjMzOWJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5MDkxYjRkZTg0NzUzOWZhNWIyMjU5YmY3NmE1MzU1MzM5YzdlYWFhNWUzM2Q3ZDRhZTc0ZDYxNGMyMTk2NWEiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2FzaW8vJHtCUH0udGFyLmJ6MiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F0b3AvYXRvcC8wMDAxLWFkZC1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F0b3AvYXRvcC8wMDAxLWFkZC1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjQ2MDYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXRvcC9hdG9wLzAwMDEtYWRkLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMTNmMzc3MTY1NWY4NTlkNWUwMzMyZGQ2NWI5YzQzZjU3MmY2MzU5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDExIEF1ZyAyMDE4IDE2OjAyOjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yIG1hY3JvcworCitwaG90b3N5c3QuYzoxNDY1OjE5OiBlcnJvcjogY2FsbGVkIG9iamVjdCAnbWFqb3InIGlzIG5vdCBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgZG1wLT5tYWpvciAgPSBtYWpvcihzdGF0YnVmLnN0X3JkZXYpOworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBwaG90b3N5c3QuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcGhvdG9zeXN0LmMgYi9waG90b3N5c3QuYworaW5kZXggMzg4MjhlYy4uY2FlZDM1MiAxMDA2NDQKKy0tLSBhL3Bob3Rvc3lzdC5jCisrKysgYi9waG90b3N5c3QuYworQEAgLTE1Miw2ICsxNTIsNyBAQAorIHN0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiJElkOiBwaG90b3N5c3QuYyx2IDEuMzggMjAxMC8xMS8xOSAwNzo0MDo0MCBnZXJsb2YgRXhwICQiOworIAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdG9wL2F0b3AvMDAwMS1pbmNsdWRlLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXRvcC9hdG9wLzAwMDEtaW5jbHVkZS1taXNzaW5nLWhlYWRlci1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcwOGY2MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdG9wL2F0b3AvMDAwMS1pbmNsdWRlLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotRnJvbSA3YjY1MTc5MzI2OWI2Yjg2ZjEyYzQzYzMwYjc1MWI4NmRlZjI3MjIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTggTWFyIDIwMTcgMTc6NTY6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBtaXNzaW5nIGhlYWRlciBmaWxlcwotCi1maXhlcyBidWlsZCB3aXRoIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGRldmlhdGUuYyAgICAgfCAxICsKLSBwcm9jZGJhc2UuYyAgIHwgMiArLQotIHNob3dnZW5lcmljLmMgfCAyICstCi0gc2hvd2xpbnV4LmMgICB8IDIgKy0KLSBzaG93cHJvY3MuYyAgIHwgMiArLQotIHNob3dzeXMuYyAgICAgfCAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kZXZpYXRlLmMgYi9kZXZpYXRlLmMKLWluZGV4IDdjZjFiNDkuLjhlNjE1YWYgMTAwNjQ0Ci0tLS0gYS9kZXZpYXRlLmMKLSsrKyBiL2RldmlhdGUuYwotQEAgLTE3OCw2ICsxNzgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gIiRJZDogZGV2aWF0ZS5jLHYgMS40NSAyMDEwLzEwLzIzIDE0OjAyOjAzIGdlcmxvZiBFeAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxtZW1vcnkuaD4KLWRpZmYgLS1naXQgYS9wcm9jZGJhc2UuYyBiL3Byb2NkYmFzZS5jCi1pbmRleCA5Y2FiMzQ3Li4wNDg3ZDI2IDEwMDY0NAotLS0tIGEvcHJvY2RiYXNlLmMKLSsrKyBiL3Byb2NkYmFzZS5jCi1AQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gIiRJZDogcHJvY2RiYXNlLmMsdiAxLjggMjAxMC8wNC8yMyAxMjoxOTozNSBnZXJsb2YgRQotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPG1hbGxvYy5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSAKLSAjaW5jbHVkZSAiYXRvcC5oIgotICNpbmNsdWRlICJwaG90b3Byb2MuaCIKLWRpZmYgLS1naXQgYS9zaG93Z2VuZXJpYy5jIGIvc2hvd2dlbmVyaWMuYwotaW5kZXggNzc1YWZhOC4uM2Q1YmUwZSAxMDA2NDQKLS0tLSBhL3Nob3dnZW5lcmljLmMKLSsrKyBiL3Nob3dnZW5lcmljLmMKLUBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcmNzaWRbXSA9ICIkSWQ6IHNob3dnZW5lcmljLmMsdiAxLjcxIDIwMTAvMTAvMjUgMTk6MDg6MzIgZ2VybG8KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHRlcm1pby5oPgotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8Y3Vyc2VzLmg+Ci1kaWZmIC0tZ2l0IGEvc2hvd2xpbnV4LmMgYi9zaG93bGludXguYwotaW5kZXggNmU2MDc1NC4uYWJhMmVlNiAxMDA2NDQKLS0tLSBhL3Nob3dsaW51eC5jCi0rKysgYi9zaG93bGludXguYwotQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciByY3NpZFtdID0gIiRJZDogc2hvd2xpbnV4LmMsdiAxLjcwIDIwMTAvMTAvMjMgMTQ6MDQ6MTIgZ2VybG9mCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDx0ZXJtaW8uaD4KLSsjaW5jbHVkZSA8dGVybWlvcy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPGN1cnNlcy5oPgotZGlmZiAtLWdpdCBhL3Nob3dwcm9jcy5jIGIvc2hvd3Byb2NzLmMKLWluZGV4IDUxOTQ1MjQuLmYwMTY5YWQgMTAwNjQ0Ci0tLS0gYS9zaG93cHJvY3MuYwotKysrIGIvc2hvd3Byb2NzLmMKLUBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiJElkOiBzaG93cHJvY3MuYyx2IDEuMTUgMjAxMS8wOS8wNSAxMTo0NDoxNiBnZXJsb2YKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHRlcm1pby5oPgotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8Y3Vyc2VzLmg+Ci1kaWZmIC0tZ2l0IGEvc2hvd3N5cy5jIGIvc2hvd3N5cy5jCi1pbmRleCAyNjMzMWJlLi41YTA1ZmU1IDEwMDY0NAotLS0tIGEvc2hvd3N5cy5jCi0rKysgYi9zaG93c3lzLmMKLUBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiWFhYWFhYIjsKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHRlcm1pby5oPgotKyNpbmNsdWRlIDx0ZXJtaW9zLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8Y3Vyc2VzLmg+Ci0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdG9wL2F0b3BfMi4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdG9wL2F0b3BfMi4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjllN2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXRvcC9hdG9wXzIuMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJNb25pdG9yIGZvciBzeXN0ZW0gcmVzb3VyY2VzIGFuZCBwcm9jZXNzIGFjdGl2aXR5IgotREVTQ1JJUFRJT04gPSAiQXRvcCBpcyBhbiBBU0NJSSBmdWxsLXNjcmVlbiBwZXJmb3JtYW5jZSBtb25pdG9yIGZvciBMaW51eCB0aGF0IFwKLWlzIGNhcGFibGUgb2YgcmVwb3J0aW5nIHRoZSBhY3Rpdml0eSBvZiBhbGwgcHJvY2Vzc2VzIChldmVuIGlmIHByb2Nlc3NlcyBoYXZlIFwKLWZpbmlzaGVkIGR1cmluZyB0aGUgaW50ZXJ2YWwpLCBkYWlseSBsb2dnaW5nIG9mIHN5c3RlbSBhbmQgcHJvY2VzcyBhY3Rpdml0eSBmb3IgXAotbG9uZy10ZXJtIGFuYWx5c2lzLCBoaWdobGlnaHRpbmcgb3ZlcmxvYWRlZCBzeXN0ZW0gcmVzb3VyY2VzIGJ5IHVzaW5nIGNvbG9ycywgXAotZXRjLiBBdCByZWd1bGFyIGludGVydmFscywgaXQgc2hvd3Mgc3lzdGVtLWxldmVsIGFjdGl2aXR5IHJlbGF0ZWQgdG8gdGhlIENQVSwgXAotbWVtb3J5LCBzd2FwLCBkaXNrcyAoaW5jbHVkaW5nIExWTSkgYW5kIG5ldHdvcmsgbGF5ZXJzLCBhbmQgZm9yIGV2ZXJ5IHByb2Nlc3MgXAotKGFuZCB0aHJlYWQpIGl0IHNob3dzIGUuZy4gdGhlIENQVSB1dGlsaXphdGlvbiwgbWVtb3J5IGdyb3d0aCwgZGlzayBcCi11dGlsaXphdGlvbiwgcHJpb3JpdHksIHVzZXJuYW1lLCBzdGF0ZSwgYW5kIGV4aXQgY29kZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmF0b3B0b29sLm5sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi0KLURFUEVORFMgPSAibmN1cnNlcyB6bGliIgotCi1BVE9QX1ZFUiA9ICIke0AnLScuam9pbihkLmdldFZhcignUFYnKS5yc3BsaXQoJy4nLCAxKSl9IgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL3d3dy5hdG9wdG9vbC5ubC9kb3dubG9hZC8ke0JQTn0tJHtBVE9QX1ZFUn0udGFyLmd6IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnZmlsZTovL3ZvbGF0aWxlcy5hdG9wLmNvbmYnLCAnZmlsZTovL3ZvbGF0aWxlcy45OV9hdG9wJywgZCl9IFwKLSAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoIFwKLSAgICBmaWxlOi8vcmVtb3ZlLWJhc2hpc21zLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LXBlcm1pc3Npb25zLnBhdGNoIFwKLSAgICBmaWxlOi8vc3lzdmluaXQtaW1wbGVtZW50LXN0YXR1cy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMzRkYzE1NDRmMmVjNGU0ZDJjNzM5ZDMyMGRjMzI2ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzg1YjhhMjM1NWJlMjhiM2RlNmI1OGE4ZWE0YzRmY2FiOGZhZGVhYTU3YTk5YWZlYjAzYzY2ZmFjOGUwNTVkIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7QVRPUF9WRVJ9IgotCi1kb19jb21waWxlKCkgewotICAgIG9lX3J1bm1ha2UgYWxsCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgbWFrZSBERVNURElSPSR7RH0gVkVSUz0ke0FUT1BfVkVSfSBTWVNEUEFUSD0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgIFBNUEFUSEQ9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS1zbGVlcCBzeXN0ZW1kaW5zdGFsbAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuYXRvcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYXRvcC5jb25mCi0gICAgICAgIHJtIC1mICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2F0b3BhY2N0LnNlcnZpY2UKLSAgICBlbHNlCi0gICAgICAgIG1ha2UgREVTVERJUj0ke0R9IFZFUlM9JHtBVE9QX1ZFUn0gc3lzdmluc3RhbGwKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9hdG9wICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2F0b3AKLSAgICAgICAgcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2F0b3BhY2N0Ci0gICAgZmkKLQotICAgICMgcmVtb3ZlIGF0b3BhY2N0IHJlbGF0ZWQgZmlsZXMKLSAgICBybSAtcmYgJHtEfSR7c2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW44Ci19Ci0KLWluaGVyaXQgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYXRvcC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS1zbGVlcCIKLQotUkRFUEVORFNfJHtQTn0gPSAicHJvY3BzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXRvcC9hdG9wXzIuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXRvcC9hdG9wXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMjgxM2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdG9wL2F0b3BfMi4zLjAuYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJNb25pdG9yIGZvciBzeXN0ZW0gcmVzb3VyY2VzIGFuZCBwcm9jZXNzIGFjdGl2aXR5IgorREVTQ1JJUFRJT04gPSAiQXRvcCBpcyBhbiBBU0NJSSBmdWxsLXNjcmVlbiBwZXJmb3JtYW5jZSBtb25pdG9yIGZvciBMaW51eCB0aGF0IFwKK2lzIGNhcGFibGUgb2YgcmVwb3J0aW5nIHRoZSBhY3Rpdml0eSBvZiBhbGwgcHJvY2Vzc2VzIChldmVuIGlmIHByb2Nlc3NlcyBoYXZlIFwKK2ZpbmlzaGVkIGR1cmluZyB0aGUgaW50ZXJ2YWwpLCBkYWlseSBsb2dnaW5nIG9mIHN5c3RlbSBhbmQgcHJvY2VzcyBhY3Rpdml0eSBmb3IgXAorbG9uZy10ZXJtIGFuYWx5c2lzLCBoaWdobGlnaHRpbmcgb3ZlcmxvYWRlZCBzeXN0ZW0gcmVzb3VyY2VzIGJ5IHVzaW5nIGNvbG9ycywgXAorZXRjLiBBdCByZWd1bGFyIGludGVydmFscywgaXQgc2hvd3Mgc3lzdGVtLWxldmVsIGFjdGl2aXR5IHJlbGF0ZWQgdG8gdGhlIENQVSwgXAorbWVtb3J5LCBzd2FwLCBkaXNrcyAoaW5jbHVkaW5nIExWTSkgYW5kIG5ldHdvcmsgbGF5ZXJzLCBhbmQgZm9yIGV2ZXJ5IHByb2Nlc3MgXAorKGFuZCB0aHJlYWQpIGl0IHNob3dzIGUuZy4gdGhlIENQVSB1dGlsaXphdGlvbiwgbWVtb3J5IGdyb3d0aCwgZGlzayBcCit1dGlsaXphdGlvbiwgcHJpb3JpdHksIHVzZXJuYW1lLCBzdGF0ZSwgYW5kIGV4aXQgY29kZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmF0b3B0b29sLm5sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCisKK0RFUEVORFMgPSAibmN1cnNlcyB6bGliIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYXRvcHRvb2wubmwvZG93bmxvYWQvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2ZpbGU6Ly92b2xhdGlsZXMuYXRvcC5jb25mJywgJ2ZpbGU6Ly92b2xhdGlsZXMuOTlfYXRvcCcsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYmFzaGlzbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXBlcm1pc3Npb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N5c3Zpbml0LWltcGxlbWVudC1zdGF0dXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1tYWNyb3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNDhlMWRiZWY4YzdkODI2ZTY4ODI5YThkNWZjOTIwZmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzNlNDcyNWRlMGJhZmFjOGM2M2IwMzJlODQ3OWUyMzA1ZTM5NjJhZmJlOTc3ZWMxYWJkNDVmOWUxMDRlYjI2NCIKKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlIGFsbAorfQorCitkb19pbnN0YWxsKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIG1ha2UgREVTVERJUj0ke0R9IFZFUlM9JHtQVn0gU1lTRFBBVEg9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICBQTVBBVEhEPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tc2xlZXAgc3lzdGVtZGluc3RhbGwKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLmF0b3AuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2F0b3AuY29uZgorICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9hdG9wYWNjdC5zZXJ2aWNlCisgICAgZWxzZQorICAgICAgICBtYWtlIERFU1RESVI9JHtEfSBWRVJTPSR7UFZ9IHN5c3ZpbnN0YWxsCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuOTlfYXRvcCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9hdG9wCisgICAgICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9hdG9wYWNjdAorICAgIGZpCisKKyAgICAjIHJlbW92ZSBhdG9wYWNjdCByZWxhdGVkIGZpbGVzCisgICAgcm0gLXJmICR7RH0ke3NiaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuOAorfQorCitpbmhlcml0IHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImF0b3Auc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tc2xlZXAiCisKK1JERVBFTkRTXyR7UE59ID0gInByb2NwcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy5pbmMKaW5kZXggMTg1YWJhZS4uYzkzOWQ0YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXVnZWFzL2F1Z2Vhcy5pbmMKQEAgLTMxLDMgKzMxLDUgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbbGlic2VsaW51eF0gPSAiLS13aXRoLXNlbGludXgsLS13aXRob3V0LXNlbGludXgsbGlic2VsaW51eCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbnVsaWIvbTQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzXzEuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXNfMS4xMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZTE5MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzXzEuMTAuMS5iYgpAQCAtMCwwICsxLDQgQEAKK3JlcXVpcmUgYXVnZWFzLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiNmMwYjJlYTZlZWM0NWU4YmMzNzRiMjgzYWVkZjI3Y2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTJkYjI1NmFmYWIyNjFkMzFjYzE0N2VhYTFhNzE3OTVhNWZlYzU5ZTg4OGRmZDBiNjVhODRjN2FhY2Q2MzY0ZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXNfMS41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdWdlYXMvYXVnZWFzXzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGY2MmU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F1Z2Vhcy9hdWdlYXNfMS41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgYXVnZWFzLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDExOTBlNDU1YzUxMzEyNGEyZGFlMjlhMTE4MmMxMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjIzYmI2ZTZmZTNlOWU5MjI3N2RhZmQ1ZDM0ZTYyMzczM2ViOTY5YTcyYTM4Mjk5OGQyMDRmZWFiMjUzZjczZiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NlcmVzLXNvbHZlci9jZXJlcy1zb2x2ZXJfMS4xNC5iYgppbmRleCAyOTkxN2M4Li5hNjJlNWVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyXzEuMTQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2VyZXMtc29sdmVyL2NlcmVzLXNvbHZlcl8xLjE0LmJiCkBAIC0xLDIwICsxLDE5IEBACiBERVNDUklQVElPTiA9ICJDZXJlcyBTb2x2ZXIgaXMgYW4gb3BlbiBzb3VyY2UgQysrIGxpYnJhcnkgZm9yIG1vZGVsaW5nIGFuZCBzb2x2aW5nIGxhcmdlLCBjb21wbGljYXRlZCBvcHRpbWl6YXRpb24gcHJvYmxlbXMuIgogQVVUSE9SID0gIlNhbWVlciBBZ2Fyd2FsIGFuZCBLZWlyIE1pZXJsZSBhbmQgT3RoZXJzIgogSE9NRVBBR0UgPSAiaHR0cDovL2NlcmVzLXNvbHZlci5vcmcvIgotCiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM1ZTAwZjBjNGM5NmEwODIwYTAzZTBiMzFlNjQxNmJlIgogCitERVBFTkRTID0gImxpYmVpZ2VuIGdsb2ciCisKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jZXJlcy1zb2x2ZXIvY2VyZXMtc29sdmVyLmdpdCIKIFNSQ1JFViA9ICJmYWNiMTk5ZjNlZGE5MDIzNjBmOWUxZDUyNzEzNzJiN2U1NGZlYmUxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ERVBFTkRTID0gImxpYmVpZ2VuIGdsb2ciCi0KIGluaGVyaXQgY21ha2UKIAogIyBPbmx5IGEgc3RhdGljIGxpYnJhcnkgYW5kIGhlYWRlcnMgYXJlIGNyZWF0ZWQKLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyoiCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ja2VybWl0L2NrZXJtaXRfMzAyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2tlcm1pdC9ja2VybWl0XzMwMi5iYgppbmRleCA2MWMwOGVlLi5hYmVlZWNjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ja2VybWl0L2NrZXJtaXRfMzAyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NrZXJtaXQvY2tlcm1pdF8zMDIuYmIKQEAgLTIwLDEyICsyMCw2IEBACiAKIEVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgogCi0jIEFkZGl0aW9uYWwgZmxhZ3MuIEZvciB1Y2xpYmMgd2UgYWRkIC1ETk9BUlJPV0tFWVMgd2hpY2ggc3RvcHMgY2tlcm1pdAotIyB0cnlpbmcgdG8gbG9vayBpbnNpZGUgdGhlIHN0ZGlvIGhlYWRlcnMuCi1DS0VSTUlUX0FERElUSU9OQUwgPSAiIgotQ0tFUk1JVF9BRERJVElPTkFMX2xpYmMtdWNsaWJjID0gIi1ETk9BUlJPV0tFWVMiCi1DS0VSTUlUX0FERElUSU9OQUxfbGliYy1tdXNsID0gIi1ETk9BUlJPV0tFWVMiCi0KIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCiBkb19jb21waWxlICgpIHsKQEAgLTQ5LDcgKzQzLDcgQEAKICAgICAgICAgLUROT1JFU0VORCAtRE5PQVVUT0RMIC1ETk9TVFJFQU1JTkcgLUROT0hJTlRTIC1ETk9DS1hZWiAtRE5PTEVBUk4gXAogICAgICAgICAtRE5PTUtESVIgLUROT1BFUk1TIC1ETk9DS1RJTUVSUyAtRE5PQ0tSRUdFWCAtRE5PUkVBTFBBVEggXAogICAgICAgICAtRENLX1NNQUxMIC1ETk9MT0dESUFMIC1ETk9SRU5BTUUgLUROT1dIQVRBTUkgXAotICAgICAgICAke0NLRVJNSVRfQURESVRJT05BTH0iCisgICAgICAgIC1ETk9BUlJPV0tFWVMiCiB9CiAKIGRvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0LTIuMTAuMi9maXgtY21ha2UtaW5zdGFsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC0yLjEwLjIvZml4LWNtYWtlLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWFmZWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0LTIuMTAuMi9maXgtY21ha2UtaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLURlc2NyaXB0aW9uOiBpbnN0YWxsIGNtYWtlIGZpbGVzIGludG8gL3Vzci9saWIvY21ha2UvY3BwcmVzdHNkawotQXV0aG9yOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KLVVwc3RyZWFtLVN0YXR1czogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrL3B1bGwvNzM3Ci1Gb3J3YXJkZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay9wdWxsLzczNwotTGFzdC1VcGRhdGU6IDIwMTgtMDQtMTkKLQotLS0tIGNwcHJlc3QtMi4xMC4yLm9yaWcvQ01ha2VMaXN0cy50eHQKLSsrKyBjcHByZXN0LTIuMTAuMi9DTWFrZUxpc3RzLnR4dAotQEAgLTE4LDcgKzE4LDcgQEAgZW5hYmxlX3Rlc3RpbmcoKQotIHNldChXRVJST1IgT04gQ0FDSEUgQk9PTCAiVHJlYXQgV2FybmluZ3MgYXMgRXJyb3JzLiIpCi0gc2V0KENQUFJFU1RfRVhDTFVERV9XRUJTT0NLRVRTIE9GRiBDQUNIRSBCT09MICJFeGNsdWRlIHdlYnNvY2tldHMgZnVuY3Rpb25hbGl0eS4iKQotIHNldChDUFBSRVNUX0VYQ0xVREVfQ09NUFJFU1NJT04gT0ZGIENBQ0hFIEJPT0wgIkV4Y2x1ZGUgY29tcHJlc3Npb24gZnVuY3Rpb25hbGl0eS4iKQotLXNldChDUFBSRVNUX0VYUE9SVF9ESVIgbGliL2NwcHJlc3RzZGsgQ0FDSEUgU1RSSU5HICJEaXJlY3RvcnkgdG8gaW5zdGFsbCBDTWFrZSBjb25maWcgZmlsZXMuIikKLStzZXQoQ1BQUkVTVF9FWFBPUlRfRElSIGxpYi9jbWFrZS9jcHByZXN0c2RrIENBQ0hFIFNUUklORyAiRGlyZWN0b3J5IHRvIGluc3RhbGwgQ01ha2UgY29uZmlnIGZpbGVzLiIpCi0gc2V0KENQUFJFU1RfSU5TVEFMTF9IRUFERVJTIE9OIENBQ0hFIEJPT0wgIkluc3RhbGwgaGVhZGVyIGZpbGVzLiIpCi0gc2V0KENQUFJFU1RfSU5TVEFMTCBPTiBDQUNIRSBCT09MICJBZGQgaW5zdGFsbCBjb21tYW5kcy4iKQotIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0Lzk1MC1maXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QvOTUwLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWU0NmExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0Lzk1MC1maXgucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorT3JpZ2luOiB1cHN0cmVhbQorQnVnOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvaXNzdWVzLzk1MAorTGFzdC1VcGRhdGU6IDIwMTgtMTEtMDQKKworSW5kZXg6IGNwcHJlc3QvUmVsZWFzZS9zcmMvdXRpbGl0aWVzL2FzeW5jcnRfdXRpbHMuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY3BwcmVzdC5vcmlnL1JlbGVhc2Uvc3JjL3V0aWxpdGllcy9hc3luY3J0X3V0aWxzLmNwcAorKysrIGNwcHJlc3QvUmVsZWFzZS9zcmMvdXRpbGl0aWVzL2FzeW5jcnRfdXRpbHMuY3BwCitAQCAtMzU2LDcgKzM1Niw3IEBACisgaW5saW5lIHNpemVfdCBjb3VudF91dGY4X3RvX3V0ZjE2KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQorIHsKKyAgICAgY29uc3Qgc2l6ZV90IHNTaXplID0gcy5zaXplKCk7CistICAgIGF1dG8gc0RhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFV0aWxDaGFySW50ZXJuYWxfdCogY29uc3Q+KHMuZGF0YSgpKTsKKysgICAgYXV0byBjb25zdCBzRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVXRpbENoYXJJbnRlcm5hbF90Kj4ocy5kYXRhKCkpOworICAgICBzaXplX3QgcmVzdWx0eyBzU2l6ZSB9OworIAorICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgc1NpemU7KQorQEAgLTQ0MSw3ICs0NDEsNyBAQAorIHsKKyAgICAgLy8gU2F2ZSByZXBlYXRlZCBoZWFwIGFsbG9jYXRpb25zLCB1c2UgdGhlIGxlbmd0aCBvZiByZXN1bHRpbmcgc2VxdWVuY2UuCisgICAgIGNvbnN0IHNpemVfdCBzcmNTaXplID0gcy5zaXplKCk7CistICAgIGF1dG8gc3JjRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVXRpbENoYXJJbnRlcm5hbF90KiBjb25zdD4ocy5kYXRhKCkpOworKyAgICBhdXRvIGNvbnN0IHNyY0RhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IFV0aWxDaGFySW50ZXJuYWxfdCo+KHMuZGF0YSgpKTsKKyAgICAgdXRmMTZzdHJpbmcgZGVzdChjb3VudF91dGY4X3RvX3V0ZjE2KHMpLCBMJ1wwJyk7CisgICAgIHV0ZjE2c3RyaW5nOjp2YWx1ZV90eXBlKiBjb25zdCBkZXN0RGF0YSA9ICZkZXN0WzBdOworICAgICBzaXplX3QgZGVzdEluZGV4ID0gMDsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLWZsb2F0LXRlc3RzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0L2Rpc2FibGUtZmxvYXQtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmNzRlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLWZsb2F0LXRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Rlc2NyaXB0aW9uOiBuZXcgdG9vbGNoYWluIG1pZ2h0IGhhdmUgaW5jcmVhc2VkIHRoZSBmbG9hdCBwcmVjaXNpb24KK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CitMYXN0LVVwZGF0ZTogMjAxNy0xMC0yOAorRm9yd2FyZGVkOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvaXNzdWVzLzU3NgorCistLS0gY2FzYWJsYW5jYS0yLjEwLjAub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvc3RyZWFtcy9pc3RyZWFtX3Rlc3RzLmNwcAorKysrIGNhc2FibGFuY2EtMi4xMC4wL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9zdHJlYW1zL2lzdHJlYW1fdGVzdHMuY3BwCitAQCAtMTMwMiw3ICsxMzAyLDcgQEAgdm9pZCBjb21wYXJlX2Zsb2F0KGZsb2F0IGV4cGVjdGVkLCBmbG9hdAorIHsKKyAgICAgY29tcGFyZV9mbG9hdGluZyhleHBlY3RlZCwgYWN0dWFsLCBGTFRfRVBTSUxPTik7CisgfQorLQorKy8qCisgVEVTVChleHRyYWN0X2Zsb2F0aW5nX3BvaW50KQorIHsKKyAgICAgc3RkOjpzdHJpbmcgdGVzdF9zdHJpbmc7CitAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgVEVTVChleHRyYWN0X2Zsb2F0aW5nX3BvaW50KQorICAgICAgICAgICAgIFZFUklGWV9BUkVfRVFVQUwoMSAvIGV4cGVjdGVkLCAxIC8gYWN0dWFsKTsKKyAgICAgfSB3aGlsZSAoIXN0ZF9pc3RyZWFtLmVvZigpKTsKKyB9CistCisrKi8KKyBURVNUKGV4dHJhY3RfZmxvYXRpbmdfcG9pbnRfd2l0aF9leGNlcHRpb25zKQorIHsKKyAgICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IHRlc3RzOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0L2Rpc2FibGUtb3V0c2lkZS10ZXN0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmZjBkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwxNDIgQEAKK0Rlc2NyaXB0aW9uOiBEZWJpYW4gZm9yYmlkcyBjYWxscyB0byBleHRlcm5hbCB3ZWJzaXRlcy4KKworQXV0aG9yOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNAZGViaWFuLm9yZz4KK09yaWdpbjogRGViaWFuCitGb3J3YXJkZWQ6IG5vdC1uZWVkZWQKK1Jldmlld2VkLUJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KK0xhc3QtVXBkYXRlOiAyMDE1LTExLTI1CisKK0luZGV4OiBjYXNhYmxhbmNhL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9odHRwL2NsaWVudC9DTWFrZUxpc3RzLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhc2FibGFuY2Eub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9jbGllbnQvQ01ha2VMaXN0cy50eHQKKysrKyBjYXNhYmxhbmNhL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9odHRwL2NsaWVudC9DTWFrZUxpc3RzLnR4dAorQEAgLTEyLDcgKzEyLDYgQEAKKyAgIG11bHRpcGxlX3JlcXVlc3RzLmNwcAorICAgb2F1dGgxX3Rlc3RzLmNwcAorICAgb2F1dGgyX3Rlc3RzLmNwcAorLSAgb3V0c2lkZV90ZXN0cy5jcHAKKyAgIHBpcGVsaW5lX3N0YWdlX3Rlc3RzLmNwcAorICAgcHJvZ3Jlc3NfaGFuZGxlcl90ZXN0cy5jcHAKKyAgIHByb3h5X3Rlc3RzLmNwcAorSW5kZXg6IGNhc2FibGFuY2EvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2F1dGhlbnRpY2F0aW9uX3Rlc3RzLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhc2FibGFuY2Eub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCisrKysgY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCitAQCAtNjYzLDE1ICs2NjMsMTkgQEAKKyAgICAgVkVSSUZZX0FSRV9FUVVBTChyZXR1cm5fY29kZSwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUoKSk7CisgfQorIAorKy8qCisgVEVTVChhdXRoX25vX2RhdGEpCisgeworICAgICBhdXRoX3Rlc3RfaW1wbChmYWxzZSk7CisgfQorKyovCisgCisrLyoKKyBURVNUKHVuc3VjY2Vzc2Z1bF9hdXRoX3dpdGhfYmFzaWNfY3JlZCkKKyB7CisgICAgIGF1dGhfdGVzdF9pbXBsKHRydWUpOworIH0KKysqLworIAorIFRFU1RfRklYVFVSRSh1cmlfYWRkcmVzcywgc2V0X3VzZXJfb3B0aW9uc19hc2lvX2h0dHApCisgeworQEAgLTY5Miw3ICs2OTYsNyBAQAorICAgICBhdXRvIHJlc3BvbnNlID0gY2xpZW50LnJlcXVlc3QobWV0aG9kczo6R0VUKS5nZXQoKTsKKyAgICAgVkVSSUZZX0FSRV9FUVVBTCgyMDAsIHJlc3BvbnNlLnN0YXR1c19jb2RlKCkpOworIH0KKy0KKysvKgorIFRFU1RfRklYVFVSRSh1cmlfYWRkcmVzcywgc2V0X3VzZXJfb3B0aW9uc19hc2lvX2h0dHBzKQorIHsKKyAgICAgaGFuZGxlX3RpbWVvdXQoW10KK0BAIC03MTQsNyArNzE4LDcgQEAKKyAgICAgICAgIFZFUklGWV9JU19GQUxTRSh2LmVtcHR5KCkpOworICAgICB9KTsKKyB9CistCisrKi8KKyAjZW5kaWYKKyAKKyB9IC8vIFNVSVRFKGF1dGhlbnRpY2F0aW9uX3Rlc3RzKQorSW5kZXg6IGNhc2FibGFuY2EvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL3dlYnNvY2tldHMvY2xpZW50L2F1dGhlbnRpY2F0aW9uX3Rlc3RzLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhc2FibGFuY2Eub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCisrKysgY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCitAQCAtODYsNyArODYsNyBAQAorICAgICB9CisgICAgIHJldHVybiBmYWxzZTsKKyB9CistCisrLyoKKyBURVNUKHNzbF90ZXN0KQorIHsKKyAgICAgd2Vic29ja2V0X2NsaWVudCBjbGllbnQ7CitAQCAtMTIyLDcgKzEyMiw3IEBACisgICAgICAgICB0aHJvdzsKKyAgICAgfQorIH0KKy0KKysqLworIC8vIFRoZXNlIHRlc3RzIGFyZSBzcGVjaWZpYyB0byBvdXIgd2Vic29ja2V0cHAgYmFzZWQgaW1wbGVtZW50YXRpb24uCisgI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzX3dpbnJ0KQorIAorQEAgLTE1MywxNCArMTUzLDE1IEBACisgICAgICAgICB0aHJvdzsKKyAgICAgfQorIH0KKy0KKysvKgorIC8vIFRlc3Qgc3BlY2lmaWNhbGx5IGZvciBzZXJ2ZXIgU2lnbmFsUiB0ZWFtIGhpdCBpbnRlcmVzdGluZyBjYXNlcyB3aXRoLgorIFRFU1Qoc25pX3dpdGhfb2xkZXJfc2VydmVyX3Rlc3QpCisgeworICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudDsKKyAgICAgc25pX3Rlc3RfaW1wbChjbGllbnQpOworIH0KKy0KKysqLworKy8qCisgLy8gV2luUlQgZG9lc24ndCBleHBvc2Ugb3B0aW9uIGZvciBkaXNhYmxpbmcuCisgLy8gTm8gc3RhYmxlIHNlcnZlciBpcyBhdmFpbGFibGUgdG8gcmVsaWFibHkgdGVzdCB0aGlzLgorIC8vIFRoZSBjb25maWd1cmF0aW9uIGJlbG93IHJlbGllcyBvbiBhIHRpbWVvdXQgaW4gdGhlIHN1Y2Nlc3MgY2FzZS4KK0BAIC0xODgsNyArMTg5LDggQEAKKyAgICAgICAgIHRocm93OworICAgICB9CisgfQorLQorKyovCisrLyoKKyAvLyBXaW5ydCBkb2Vzbid0IGFsbG93IGV4cGxpY2l0bHkgc2V0dGluZyBzZXJ2ZXIgaG9zdCBmb3IgU05JLgorIFRFU1Qoc25pX2V4cGxpY2l0X2hvc3RuYW1lKQorIHsKK0BAIC0xOTksNyArMjAxLDcgQEAKKyAgICAgd2Vic29ja2V0X2NsaWVudCBjbGllbnQoY29uZmlnKTsKKyAgICAgc25pX3Rlc3RfaW1wbChjbGllbnQpOworIH0KKy0KKysqLworIHZvaWQgaGFuZHNoYWtlX2Vycm9yX3Rlc3RfaW1wbChjb25zdCA6OnV0aWxpdHk6OnN0cmluZ190ICZob3N0KQorIHsKKyAgICAgd2Vic29ja2V0X2NsaWVudCBjbGllbnQ7CitJbmRleDogY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9jbGllbnQvY29ubmVjdGlvbnNfYW5kX2Vycm9ycy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjYXNhYmxhbmNhLm9yaWcvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCisrKysgY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9jbGllbnQvY29ubmVjdGlvbnNfYW5kX2Vycm9ycy5jcHAKK0BAIC00MTUsNiArNDE1LDcgQEAKKyB9CisgI2VuZGlmCisgCisrLyoKKyAvLyBUcnkgdG8gY29ubmVjdCB0byBhIHNlcnZlciBvbiBhIGNsb3NlZCBwb3J0IGFuZCBjYW5jZWwgdGhlIG9wZXJhdGlvbi4KKyBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIGNhbmNlbF9iYWRfcG9ydCkKKyB7CitAQCAtNDQ2LDcgKzQ0Nyw3IEBACisgCisgICAgIFZFUklGWV9USFJPV1NfSFRUUF9FUlJPUl9DT0RFKHQuZ2V0KCksIHN0ZDo6ZXJyYzo6b3BlcmF0aW9uX2NhbmNlbGVkKTsKKyB9CistCisrKi8KKyB9IC8vIFNVSVRFKGNvbm5lY3Rpb25zX2FuZF9lcnJvcnMpCisgCisgfX19fQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0L2Rpc2FibGUtdGVzdC10aW1lb3V0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLXRlc3QtdGltZW91dHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNjM2U4YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLXRlc3QtdGltZW91dHMucGF0Y2gKQEAgLTAsMCArMSwxMDMgQEAKK0Rlc2NyaXB0aW9uOiBTb21lIHRlc3RzIHRha2VzIHRvbyBsb25nIG9uIHNsb3cgYXJjaGl0ZWN0dXJlcyBhbmQgdGltZW91dHMKKyBXZSBjYW4gc2FmZWx5IGRpc2FibGUgdGhlbS4KKyBlLmcuCisgUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwOjE0MjogZXJyb3I6IEZhaWx1cmUgaW4gcmVxdWVzdF90aW1lb3V0X21pY3Jvc2Vjb25kOiBUZXN0IGNhc2UgdGltZWQgb3V0IGFuZCBpcyBodW5nLiBBYm9ydGluZyBhbGwgcmVtYWluaW5nIHRlc3QgY2FzZXMuIEV4cGVjdGVkIHVuZGVyIDE4MDAwMG1zLiBGQUlMRUQKKworSW5kZXg6IGNhc2FibGFuY2EvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2FzYWJsYW5jYS5vcmlnL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9odHRwL2NsaWVudC9jb25uZWN0aW9uc19hbmRfZXJyb3JzLmNwcAorKysrIGNhc2FibGFuY2EvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCitAQCAtMTI3LDcgKzEyNyw3IEBACisgICAgIC8vIFRyeSBzZW5kaW5nIGFub3RoZXIgcmVxdWVzdC4KKyAgICAgVkVSSUZZX1RIUk9XUyhjbGllbnQucmVxdWVzdChtZXRob2RzOjpHRVQpLndhaXQoKSwgd2ViOjpodHRwOjpodHRwX2V4Y2VwdGlvbik7CisgfQorLQorKy8qCisgVEVTVF9GSVhUVVJFKHVyaV9hZGRyZXNzLCByZXF1ZXN0X3RpbWVvdXQpCisgeworICAgICB0ZXN0X2h0dHBfc2VydmVyOjpzY29wZWRfc2VydmVyIHNjb3BlZChtX3VyaSk7CitAQCAtMTQ2LDcgKzE0Niw4IEBACisgI2VuZGlmCisgICAgIHQuZ2V0KCk7CisgfQorLQorKyovCisrLyoKKyBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIHJlcXVlc3RfdGltZW91dF9taWNyb3NlY29uZCkKKyB7CisgICAgIHBwbHg6OnRhc2s8dGVzdF9yZXF1ZXN0Kj4gdDsKK0BAIC0xNjgsNyArMTY5LDcgQEAKKyAgICAgdHJ5IHsgdC5nZXQoKTsgfQorICAgICBjYXRjaCAoLi4uKSB7fQorIH0KKy0KKysqLworIFRFU1RfRklYVFVSRSh1cmlfYWRkcmVzcywgaW52YWxpZF9tZXRob2QpCisgeworICAgICB3ZWI6Omh0dHA6OnVyaSB1cmkoVSgiaHR0cDovL3d3dy5iaW5nLmNvbS8iKSk7CitJbmRleDogY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9saXN0ZW5lci9yZXF1ZXN0c190ZXN0cy5jcHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBjYXNhYmxhbmNhLm9yaWcvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvbGlzdGVuZXIvcmVxdWVzdHNfdGVzdHMuY3BwCisrKysgY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvaHR0cC9saXN0ZW5lci9yZXF1ZXN0c190ZXN0cy5jcHAKK0BAIC0xNzMsNyArMTczLDcgQEAKKyAKKyAgICAgbGlzdGVuZXIuY2xvc2UoKS53YWl0KCk7CisgfQorLQorKy8qCisgVEVTVF9GSVhUVVJFKHVyaV9hZGRyZXNzLCByZXNwb25zZV9vcmRlcikKKyB7CisgICAgIGh0dHBfbGlzdGVuZXIgbGlzdGVuZXIobV91cmkpOworQEAgLTIxNyw3ICsyMTcsNyBAQAorIAorICAgICBsaXN0ZW5lci5jbG9zZSgpLndhaXQoKTsKKyB9CistCisrKi8KKyBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIHVyaV9lbmNvZGluZywgIklnbm9yZSIsICJDb2RlcGxleCAyMDEiKQorIHsKKyAgICAgaHR0cF9saXN0ZW5lciBsaXN0ZW5lcihtX3VyaSk7CitJbmRleDogY2FzYWJsYW5jYS9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2FzYWJsYW5jYS5vcmlnL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC93ZWJzb2NrZXRzL2NsaWVudC9hdXRoZW50aWNhdGlvbl90ZXN0cy5jcHAKKysrKyBjYXNhYmxhbmNhL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC93ZWJzb2NrZXRzL2NsaWVudC9hdXRoZW50aWNhdGlvbl90ZXN0cy5jcHAKK0BAIC0yMjEsNyArMjIxLDcgQEAKKyAgICAgICAgIFZFUklGWV9BUkVfRVFVQUwoIlRMUyBoYW5kc2hha2UgZmFpbGVkIiwgZS5lcnJvcl9jb2RlKCkubWVzc2FnZSgpKTsKKyAgICAgfQorIH0KKy0KKysvKgorIFRFU1Qoc2VsZl9zaWduZWRfY2VydCkKKyB7CisgICAgIGhhbmRzaGFrZV9lcnJvcl90ZXN0X2ltcGwoVSgid3NzOi8vc2VsZi1zaWduZWQuYmFkc3NsLmNvbS8iKSk7CitAQCAtMjM2LDcgKzIzNiw3IEBACisgeworICAgICBoYW5kc2hha2VfZXJyb3JfdGVzdF9pbXBsKFUoIndzczovL2V4cGlyZWQuYmFkc3NsLmNvbS8iKSk7CisgfQorLQorKyovCisgI2VuZGlmCisgCisgfSAvLyBTVUlURShhdXRoZW50aWNhdGlvbl90ZXN0cykKK0luZGV4OiBjYXNhYmxhbmNhL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC93ZWJzb2NrZXRzL2NsaWVudC9jbGllbnRfY29uc3RydWN0aW9uLmNwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGNhc2FibGFuY2Eub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvY2xpZW50X2NvbnN0cnVjdGlvbi5jcHAKKysrKyBjYXNhYmxhbmNhL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC93ZWJzb2NrZXRzL2NsaWVudC9jbGllbnRfY29uc3RydWN0aW9uLmNwcAorQEAgLTgxLDcgKzgxLDcgQEAKKyAgICAgVkVSSUZZX0FSRV9FUVVBTChjb25maWcyLmNyZWRlbnRpYWxzKCkudXNlcm5hbWUoKSwgY3JlZC51c2VybmFtZSgpKTsKKyB9CisgCistCisrLyoKKyAvLyBWZXJpZnkgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBiYXNldXJpIGZyb20gd2Vic29ja2V0X2NsaWVudCBjb25uZWN0LgorIFRFU1RfRklYVFVSRSh1cmlfYWRkcmVzcywgdXJpX3Rlc3QpCisgeworQEAgLTEwMSw3ICsxMDEsNyBAQAorICAgICBWRVJJRllfQVJFX0VRVUFMKGNsaWVudDIudXJpKCksIG1fdXJpKTsKKyAgICAgY2xpZW50Mi5jbG9zZSgpLndhaXQoKTsKKyB9CistCisrKi8KKyBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIG1vdmVfb3BlcmF0aW9ucykKKyB7CisgICAgIHN0ZDo6c3RyaW5nIGJvZHkoImhlbGxvIik7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3Qvc3lzdGVtLWJyb3RsaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9zeXN0ZW0tYnJvdGxpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZjY0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3Qvc3lzdGVtLWJyb3RsaS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitEZXNjcmlwdGlvbjogRmluZCBzeXN0ZW0gYnJvdGxpCitBdXRob3I6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgorRm9yd2FyZGVkOiBodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvcHVsbC85NTIKK0xhc3QtVXBkYXRlOiAyMDE4LTExLTA1CisKKy0tLSBjcHByZXN0LTIuMTAuNy5vcmlnL1JlbGVhc2UvY21ha2UvY3BwcmVzdF9maW5kX2Jyb3RsaS5jbWFrZQorKysrIGNwcHJlc3QtMi4xMC43L1JlbGVhc2UvY21ha2UvY3BwcmVzdF9maW5kX2Jyb3RsaS5jbWFrZQorQEAgLTMsOCArMywxNyBAQCBmdW5jdGlvbihjcHByZXN0X2ZpbmRfYnJvdGxpKQorICAgICByZXR1cm4oKQorICAgZW5kaWYoKQorIAorLSAgZmluZF9wYWNrYWdlKHVub2ZmaWNpYWwtYnJvdGxpIFJFUVVJUkVEKQorIAorLSAgYWRkX2xpYnJhcnkoY3BwcmVzdHNka19icm90bGlfaW50ZXJuYWwgSU5URVJGQUNFKQorLSAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGNwcHJlc3RzZGtfYnJvdGxpX2ludGVybmFsIElOVEVSRkFDRSB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWVuYyB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWRlYyB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWNvbW1vbikKKysgIGZpbmRfcGFja2FnZShQa2dDb25maWcpCisrICBwa2dfY2hlY2tfbW9kdWxlcyhCUk9UTElFTkMgbGliYnJvdGxpZW5jKQorKyAgcGtnX2NoZWNrX21vZHVsZXMoQlJPVExJREVDIGxpYmJyb3RsaWRlYykKKysgIGlmKEJST1RMSURFQ19GT1VORCBBTkQgQlJPVExJRU5DX0ZPVU5EKQorKwkgIHRhcmdldF9saW5rX2xpYnJhcmllcyhjcHByZXN0IFBSSVZBVEUgJHtCUk9UTElERUNfTERGTEFHU30gJHtCUk9UTElFTkNfTERGTEFHU30pCisrICBlbHNlKEJST1RMSURFQ19GT1VORCBBTkQgQlJPVExJRU5DX0ZPVU5EKQorKyAgICBmaW5kX3BhY2thZ2UodW5vZmZpY2lhbC1icm90bGkgUkVRVUlSRUQpCisrICAgIGFkZF9saWJyYXJ5KGNwcHJlc3RzZGtfYnJvdGxpX2ludGVybmFsIElOVEVSRkFDRSkKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGNwcHJlc3RzZGtfYnJvdGxpX2ludGVybmFsIElOVEVSRkFDRSB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWVuYyB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWRlYyB1bm9mZmljaWFsOjpicm90bGk6OmJyb3RsaWNvbW1vbikKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGNwcHJlc3QgUFJJVkFURSBjcHByZXN0c2RrX2Jyb3RsaV9pbnRlcm5hbCkKKysgIGVuZGlmKEJST1RMSURFQ19GT1VORCBBTkQgQlJPVExJRU5DX0ZPVU5EKQorKworIGVuZGZ1bmN0aW9uKCkKKy0tLSBjcHByZXN0LTIuMTAuNy5vcmlnL1JlbGVhc2Uvc3JjL0NNYWtlTGlzdHMudHh0CisrKysgY3BwcmVzdC0yLjEwLjcvUmVsZWFzZS9zcmMvQ01ha2VMaXN0cy50eHQKK0BAIC04NCw3ICs4NCw2IEBAIGVsc2UoKQorICAgICB0YXJnZXRfY29tcGlsZV9kZWZpbml0aW9ucyhjcHByZXN0IFBSSVZBVEUgLURDUFBSRVNUX0VYQ0xVREVfQlJPVExJPTEpCisgICBlbHNlKCkKKyAgICAgY3BwcmVzdF9maW5kX2Jyb3RsaSgpCistICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhjcHByZXN0IFBSSVZBVEUgY3BwcmVzdHNka19icm90bGlfaW50ZXJuYWwpCisgICBlbmRpZigpCisgZW5kaWYoKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0XzIuMTAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYTZmYzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0XzIuMTAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiTWljcm9zb2Z0IHByb2plY3QgZm9yIGNsb3VkLWJhc2VkIGNsaWVudC1zZXJ2ZXIgY29tbXVuaWNhdGlvbiBpbiBuYXRpdmUgY29kZSB1c2luZyBhIG1vZGVybiBhc3luY2hyb25vdXMgQysrIEFQSSBkZXNpZ24uIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9Ly4uL2xpY2Vuc2UudHh0O21kNT1hMmUxNWI5NTQ3NjkyMThmZjkxMjQ2OGVlY2Q2YTAyZiIKLURFUEVORFMgPSAib3BlbnNzbCB3ZWJzb2NrZXRwcCB6bGliIGJvb3N0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9maXgtY21ha2UtaW5zdGFsbC5wYXRjaCIKLQotIyB0YWcgMi4xMC4yCi1TUkNSRVY9ICJmZWE4NDhlMmE3NzU2M2NmMmE2ZjI4ZjhlYWIzOTZmZDZlNzg3ZmJmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L1JlbGVhc2UiCi0KLWluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYzYzODUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC43LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiTWljcm9zb2Z0IHByb2plY3QgZm9yIGNsb3VkLWJhc2VkIGNsaWVudC1zZXJ2ZXIgY29tbXVuaWNhdGlvbiBpbiBuYXRpdmUgY29kZSB1c2luZyBhIG1vZGVybiBhc3luY2hyb25vdXMgQysrIEFQSSBkZXNpZ24uIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L2xpY2Vuc2UudHh0O21kNT1hMmUxNWI5NTQ3NjkyMThmZjkxMjQ2OGVlY2Q2YTAyZiIKK0RFUEVORFMgPSAib3BlbnNzbCB3ZWJzb2NrZXRwcCB6bGliIGJvb3N0IGJyb3RsaSIKKworRVhUUkFfT0VDTUFLRSA9ICItRENQUFJFU1RfRVhQT1JUX0RJUj1jbWFrZSAtRENQUFJFU1RfRVhDTFVERV9CUk9UTEk9T0ZGIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L2NwcHJlc3RzZGsuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1vdXRzaWRlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtdGVzdC10aW1lb3V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWZsb2F0LXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk1MC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3lzdGVtLWJyb3RsaS5wYXRjaCBcCisgICAgICAgICAgICIKKworIyB0YWcgMi4xMC43CitTUkNSRVY9ICJjNGNlZjEyOWU4ODBhM2Y5YzIzYTQ4MGU4Yzk4Mzc5Mzk2MzE3M2JiIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDNjNTc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJDb252ZXJ0IHRleHQgZmlsZSBsaW5lIGVuZGluZ3MgYmV0d2VlbiBDUkxGIGFuZCBMRiIKLURFU0NSSVBUSU9OID0gIlRoZSBEb3MydW5peCBwYWNrYWdlIGluY2x1ZGVzIHV0aWxpdGllcyBkb3MydW5peCBhbmQgXAotdW5peDJkb3MgdG8gY29udmVydCBwbGFpbiB0ZXh0IGZpbGVzIGluIERPUyBvciBNYWMgZm9ybWF0IHRvIFVuaXggXAotZm9ybWF0IGFuZCB2aWNlIHZlcnNhLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXRlcmxhbi5ob21lLnhzNGFsbC5ubC9kb3MydW5peC5odG1sIgotU0VDVElPTiA9ICJzdXBwb3J0IgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0xYjc4ZmNhNzg0ZGIyNGY0YTQwZTMwYjMwMDc4N2YzZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9kb3MydW5peC9kb3MydW5peCIKLQotIyBSZWxlYXNlIDcuNC4wCi1TUkNSRVYgPSAiMTE4MjUzM2JkZTNjMWZlNjViZTJlYWQ0NjVlODc2NzFmYWEyYzAyNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9kb3MydW5peCIKLQotaW5oZXJpdCBnZXR0ZXh0IHBlcmxuYXRpdmUKLQotIyBUaGUgZG9zMnVuaXggTkxTIHJlbGllcyBvbiBwbzRhLW5hdGl2ZSwgd2hpbGUgcG80YSByZWNpcGUgaXMKLSMgcHJvdmlkZWQgYnkgbWV0YS1wZXJsIGxheWVyLCBzbyBtYWtlIGl0IG9wdGlvbmFsIGhlcmUsIHlvdQotIyBuZWVkIGhhdmUgbWV0YS1wZXJsIGluIGJibGF5ZXJzLmNvbmYgYmVmb3JlIGVuYWJsaW5nIG5scyBpbgotIyBQQUNLQUdFQ09ORklHLgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbmxzXSA9ICJFTkFCTEVfTkxTPTEsRU5BQkxFX05MUz0scG80YS1uYXRpdmUiCi0KLUVYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IExERkxBR1NfVVNFUj0nJHtMREZMQUdTfSciCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIkVOQUJMRV9OTFM9IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0ke2Jhc2VfcHJlZml4fSIgaW5zdGFsbAotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lamVjdC9lamVjdC8wMDAxLWVqZWN0LUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VqZWN0L2VqZWN0LzAwMDEtZWplY3QtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NTEyODcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lamVjdC9lamVjdC8wMDAxLWVqZWN0LUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDQzM2ZmYjIxMTE5YTBmMzllODgyZGQzZmVhNDc0MmU2NGFhZGNjNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBdWcgMjAxOCAwOTo1Njo0MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBlamVjdDogSW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yCisKK0ZpeGVzCithcm0tYmVjLWxpbnV4LWdudWVhYmkvZ2NjL2FybS1iZWMtbGludXgtZ251ZWFiaS84LjIuMC9sZDogZWplY3QubzogaW4gZnVuY3Rpb24gYEdldE1ham9yTWlub3InOgorL3Vzci9zcmMvZGVidWcvZWplY3QvMi4xLjUtcjEvZWplY3QtMi4xLjUvLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvZWplY3QvZWplY3QuYzo4NjY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1ham9yJworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlamVjdC5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9lamVjdC5jIGIvZWplY3QuYworaW5kZXggNDdlMDlmZS4uYjE3MTIxOCAxMDA2NDQKKy0tLSBhL2VqZWN0LmMKKysrKyBiL2VqZWN0LmMKK0BAIC01NCw2ICs1NCw3IEBACisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgPHN5cy9tdGlvLmg+CisgI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgCisgI2lmIGRlZmluZWQoX19saW51eF9fKQorICNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lamVjdC9lamVjdF8yLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VqZWN0L2VqZWN0XzIuMS41LmJiCmluZGV4IDQ5YTNkNzQuLmRlYzJlN2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VqZWN0L2VqZWN0XzIuMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VqZWN0L2VqZWN0XzIuMS41LmJiCkBAIC0xMCw3ICsxMCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9lamVjdC0yLjEuMS12ZXJib3NlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2VqZWN0LTIuMS41LXNwYWNlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9lamVjdC10aW1lb3V0LnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZWplY3QtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjk2YTZkNDI2MzEyMmYxNzExZGIxMjcwMWQ3OWY3MzgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWY5Zjc5MDY0ODRjZmRlNGJhMjIzYjI2ODJhMzcwNThmOWEzYzdkM2JiMWFkZGE3YTM0YTY3NDAyZTJmZmU1NSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWstZGF0YV8xLjQ4LjA0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuNDguMDQuYmIKaW5kZXggNzliMmNjMS4uYTRlNWQxNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuNDguMDQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVhay1kYXRhXzEuNDguMDQuYmIKQEAgLTE0LDcgKzE0LDcgQEAKICAgICBzZWQgLWkgJy9eICpDQyAqPS9kJyBNYWtlZmlsZQogICAgIHNlZCAtaSAncy9cKC4qQllURV9PUkRFUlwpLyN1bmRlZiBCWVRFX09SREVSXG4jZGVmaW5lIEJZVEVfT1JERVIgQklHX0VORElBTlxuXDEvJyBlc3BlYWstcGhvbmVtZS1kYXRhLmMKICAgICBvZV9ydW5tYWtlCi0gICAgLi9lc3BlYWstcGhvbmVtZS1kYXRhICIke1N9L2VzcGVhay1kYXRhIgorICAgIC4vZXNwZWFrLXBob25lbWUtZGF0YSAiJHtTfS9lc3BlYWstZGF0YSIgIi4iICIke1N9L2VzcGVhay1kYXRhL3Bob25kYXRhLW1hbmlmZXN0IgogICAgIGNwIC1mIHBob25kYXRhIHBob25pbmRleCBwaG9udGFiICIke1N9L2VzcGVhay1kYXRhIgogfQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jCmluZGV4IDYwYjNmNzMuLmY0NTQ1NWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWsuaW5jCkBAIC00LDcgKzQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZS50eHQ7bWQ1PWNiN2EyMGVkYjRjOWY1ZjQ3OGRlNjUyM2RjZDczNjJjIgogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2VzcGVhay9lc3BlYWstMS40OC4wNC1zb3VyY2UuemlwIFwKLSAgICAgICAgICAgZmlsZTovL2djYy1uYXJyb3dpbmctd2FybmluZy1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb2Ytc2hhcmVkLWxpYnJhcnktb24tYXJjaGl0ZWN0dXJlcy1uZWVkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2VzcGVhay0xLjQ4LWdjYy02LWZpeC5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiY2FkZDc0ODJlYWFmZTkyMzk1NDZiZGMwOWZhMjQ0YzMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmY5YTE3NjczYWRmZmNjMjhmZjdlYTE4NzY0ZjA2MTM2NTQ3ZTk3YmJkOWVkZjJlYzYxMmYwOWIyMDdmMDY1OSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS40OC4wNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9lc3BlYWtfMS40OC4wNC5iYgppbmRleCA1NTJmNDA0Li41N2UzMGYwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZXNwZWFrXzEuNDguMDQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2VzcGVha18xLjQ4LjA0LmJiCkBAIC0zNiw2ICszNiw1IEBACiAgICAgICAgIHJtIC1mICR7U30vZXNwZWFrLWRhdGEvcGhvbioKICAgICBmaQogCi0gICAgY3AgLXByZiAke1N9L2VzcGVhay1kYXRhLyogJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAke1N9L2VzcGVhay1kYXRhLyogJHtEfSR7ZGF0YWRpcn0vZXNwZWFrLWRhdGEKIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy8wMDAxLUZpeC1idWlsZC1vZi1zaGFyZWQtbGlicmFyeS1vbi1hcmNoaXRlY3R1cmVzLW5lZWRpbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb2Ytc2hhcmVkLWxpYnJhcnktb24tYXJjaGl0ZWN0dXJlcy1uZWVkaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTBlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvMDAwMS1GaXgtYnVpbGQtb2Ytc2hhcmVkLWxpYnJhcnktb24tYXJjaGl0ZWN0dXJlcy1uZWVkaW5nLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMDhhNDY0ZTJiNmJkMzFiYjJiZjRlMjU4ZWJmYTliOWQ2NTgwNWFiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorRGF0ZTogRnJpLCAyNyBOb3YgMjAxNSAxNToxNzowMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb2Ygc2hhcmVkIGxpYnJhcnkgb24gYXJjaGl0ZWN0dXJlcyBuZWVkaW5nIC1mUElDCisKK0NlcnRhaW4gYXJjaGl0ZWN0dXJlcywgbGlrZSBTcGFyYyBhbmQgU3BhcmM2NCByZXF1aXJlIG9iamVjdHMgdG8gYmUKK2J1aWx0IHdpdGggLWZQSUMgKGFuZCBub3QganVzdCAtZnBpYykgdG8gYmUgdXNhYmxlIGluIHNoYXJlZAorbGlicmFyaWVzLiBPbiBvdGhlciBhcmNoaXRlY3R1cmVzLCAtZlBJQyBpcyB0aGUgc2FtZSBhcyAtZnBpYyBzbyB0aGlzCitwYXRjaCBkb2Vzbid0IGFmZmVjdCBzdWNoIGFyY2hpdGVjdHVyZXMuCisKK1NpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgorLS0tCisgc3JjL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCitpbmRleCA5NWZlNTQ5Li5jMjkzNjExIDEwMDc1NQorLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC0xMTAsNyArMTEwLDcgQEAgJChCSU4yX05BTUUpOiAkKE9CSlMzKSAkKExJQl9OQU1FKQorIAorIAorIHhfJS5vOiAlLmNwcAorLQkkKENYWCkgJChDWFhGTEFHUykgJChVU0VfQVVESU8pIC1EIFBBVEhfRVNQRUFLX0RBVEE9XCIkKERBVEFESVIpXCIgLVdhbGwgLWZwaWMgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtcGVkYW50aWMgXAorKwkkKENYWCkgJChDWFhGTEFHUykgJChVU0VfQVVESU8pIC1EIFBBVEhfRVNQRUFLX0RBVEE9XCIkKERBVEFESVIpXCIgLVdhbGwgLWZQSUMgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtcGVkYW50aWMgXAorIAktSS4gLUQgTElCUkFSWSAtYyAtZm5vLWV4Y2VwdGlvbnMgICQ8ICAtbyB4XyQqLm8KKyAKKyAkKExJQl9OQU1FKTogJChPQkpTMikKKy0tIAorMi42LjMKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXNwZWFrL2ZpbGVzL2VzcGVhay0xLjQ4LWdjYy02LWZpeC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9lc3BlYWstMS40OC1nY2MtNi1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU1OWM3OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9lc3BlYWstMS40OC1nY2MtNi1maXgucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtLWdpdCBhL3NyYy90cl9sYW5ndWFnZXMuY3BwIGIvc3JjL3RyX2xhbmd1YWdlcy5jcHAKKy0tLSBhL3NyYy90cl9sYW5ndWFnZXMuY3BwCisrKysgYi9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAorQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY2hhcnNfaWdub3JlX3p3bmpfaHlwaGVuW10gPSB7CisgCTB4MjAwZCwgIDEsIC8vIHplcm8gd2lkdGggam9pbmVyCisgCTAsIDAgfTsKKyAKKy1jb25zdCBjaGFyIHN0cmluZ19vcmRpbmFsW10gPSB7MHhjMiwweGJhLDB9OyAgLy8gbWFzY3VsaW5lIG9yZGluYWwgY2hhcmFjdGVyLCBVVEYtOAorK2NvbnN0IGNoYXIgc3RyaW5nX29yZGluYWxbXSA9IHsnXHhjMicsJ1x4YmEnLDB9OyAgLy8gbWFzY3VsaW5lIG9yZGluYWwgY2hhcmFjdGVyLCBVVEYtOAorIAorIAorIHN0YXRpYyBUcmFuc2xhdG9yKiBOZXdUcmFuc2xhdG9yKHZvaWQpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lc3BlYWsvZmlsZXMvZ2NjLW5hcnJvd2luZy13YXJuaW5nLWZpeC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9nY2MtbmFycm93aW5nLXdhcm5pbmctZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTliNDYwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VzcGVhay9maWxlcy9nY2MtbmFycm93aW5nLXdhcm5pbmctZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBmMDljODM2NDBiOTE3MzU1MmZkOTI3N2MzYTQ4NjE5YjkwM2ZhNDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlJlZWNlIEguIER1bm4iIDxtc2NscmhkQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgSmFuIDIwMTYgMjA6NDg6MjkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IEdDQyAtV25hcnJvd2luZyB3YXJuaW5ncy4KLQotLS0tCi0gc3JjL3RyX2xhbmd1YWdlcy5jcHAgfCA3ICsrKystLS0KLSBzcmMvdHJhbnNsYXRlLmggICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBlc3BlYWstMS40OC4wNC1zb3VyY2Uvc3JjL3RyX2xhbmd1YWdlcy5jcHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlc3BlYWstMS40OC4wNC1zb3VyY2Uub3JpZy9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAotKysrIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS9zcmMvdHJfbGFuZ3VhZ2VzLmNwcAotQEAgLTE5OCw4ICsxOTgsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgY2hhcnNfaWdub3JlCi0gCTB4MjAwZCwgIDEsIC8vIHplcm8gd2lkdGggam9pbmVyCi0gCTAsIDAgfTsKLSAKLS1jb25zdCBjaGFyIHN0cmluZ19vcmRpbmFsW10gPSB7MHhjMiwweGJhLDB9OyAgLy8gbWFzY3VsaW5lIG9yZGluYWwgY2hhcmFjdGVyLCBVVEYtOAotLQotK2NvbnN0IHVuc2lnbmVkIGNoYXIgc3RyaW5nX29yZGluYWxbXSA9IHsweGMyLDB4YmEsMH07ICAvLyBtYXNjdWxpbmUgb3JkaW5hbCBjaGFyYWN0ZXIsIFVURi04Ci0rY29uc3QgdW5zaWduZWQgY2hhciB1dGY4X251bGxbXSA9IHsgMCB9OyAvLyBudWxsIHN0cmluZywgVVRGLTgKLSAKLSBzdGF0aWMgVHJhbnNsYXRvciogTmV3VHJhbnNsYXRvcih2b2lkKQotIHsvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1AQCAtMjk2LDcgKzI5Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHRyYW5zcG9zZV9tYXBfbGF0aW5bXQotIAl0ci0+bGFuZ29wdHMucmVwbGFjZV9jaGFycyA9IE5VTEw7Ci0gCXRyLT5sYW5nb3B0cy5hc2NpaV9sYW5ndWFnZVswXSA9IDA7ICAgIC8vIE5vbi1MYXRpbiBhbHBoYWJldCBsYW5ndWFnZXMsIHVzZSB0aGlzIGxhbmd1YWdlIHRvIHNwZWFrIExhdGluIHdvcmRzLCBkZWZhdWx0IGlzIEVuZ2xpc2gKLSAJdHItPmxhbmdvcHRzLmFsdF9hbHBoYWJldF9sYW5nID0gTCgnZScsJ24nKTsKLS0JdHItPmxhbmdvcHRzLnJvbWFuX3N1ZmZpeCA9ICIiOwotKwl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gdXRmOF9udWxsOwotIAotIAlTZXRMZW5ndGhNb2RzKHRyLDIwMSk7Ci0gLy8JdHItPmxhbmdvcHRzLmxlbmd0aF9tb2RzID0gbGVuZ3RoX21vZHNfZW47Ci1AQCAtNzU4LDcgKzc1OCw3IEBAIFRyYW5zbGF0b3IgKlNlbGVjdFRyYW5zbGF0b3IoY29uc3QgY2hhcgotIAkJCQl0ci0+bGFuZ29wdHMuc3RyZXNzX2ZsYWdzID0gU19GSU5BTF9TUEFOSVNIIHwgU19GSU5BTF9ESU1fT05MWSB8IFNfRklOQUxfTk9fMjsKLSAJCQkJdHItPmxhbmdvcHRzLm51bWJlcnMgPSBOVU1fU0lOR0xFX1NUUkVTUyB8IE5VTV9ERUNJTUFMX0NPTU1BIHwgTlVNX0FORF9VTklUUyB8IE5VTV9PTUlUXzFfSFVORFJFRCB8IE5VTV9PTUlUXzFfVEhPVVNBTkQgfCBOVU1fUk9NQU4gfCBOVU1fUk9NQU5fT1JESU5BTDsKLSAJCQkJdHItPmxhbmdvcHRzLm51bWJlcnMyID0gTlVNMl9PUkRJTkFMX05PX0FORDsKLS0JCQkJdHItPmxhbmdvcHRzLnJvbWFuX3N1ZmZpeCA9IHN0cmluZ19vcmRpbmFsOwotKwkJCQl0ci0+bGFuZ29wdHMucm9tYW5fc3VmZml4ID0gdXRmOF9udWxsOwotIAkJCX0KLSAJCQllbHNlCi0gCQkJaWYobmFtZTIgPT0gTF9wYXApCi1JbmRleDogZXNwZWFrLTEuNDguMDQtc291cmNlL3NyYy90cmFuc2xhdGUuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS5vcmlnL3NyYy90cmFuc2xhdGUuaAotKysrIGVzcGVhay0xLjQ4LjA0LXNvdXJjZS9zcmMvdHJhbnNsYXRlLmgKLUBAIC01NDUsNyArNTQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIAlpbnQgZGVjaW1hbF9zZXA7Ci0gCWludCBtYXhfZGlnaXRzOyAgICAvLyBtYXggbnVtYmVyIG9mIGRpZ2l0cyB3aGljaCBjYW4gYmUgc3Bva2VuIGFzIGFuIGludGVnZXIgbnVtYmVyIChyYXRoZXIgdGhhbiBpbmRpdmlkdWFsIGRpZ2l0cykKLSAJY29uc3QgY2hhciAqb3JkaW5hbF9pbmRpY2F0b3I7ICAgLy8gVVRGLTggc3RyaW5nCi0tCWNvbnN0IGNoYXIgKnJvbWFuX3N1ZmZpeDsgICAgLy8gYWRkIHRoaXMgKG9yZGluYWwpIHN1ZmZpeCB0byBSb21hbiBudW1iZXJzIChMQU5HPWFuKQotKwljb25zdCB1bnNpZ25lZCBjaGFyICpyb21hbl9zdWZmaXg7ICAgIC8vIGFkZCB0aGlzIChvcmRpbmFsKSBzdWZmaXggdG8gUm9tYW4gbnVtYmVycyAoTEFORz1hbikKLSAKLSAJLy8gYml0IDAsIGFjY2VudCBuYW1lIGJlZm9yZSB0aGUgbGV0dGVyIG5hbWUsIGJpdCAxICJjYXBpdGFsIiBhZnRlciBsZXR0ZXIgbmFtZQotIAlpbnQgYWNjZW50czsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2V2ZW50bG9nL2V2ZW50bG9nXzAuMi4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNlYjc5NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ldmVudGxvZy9ldmVudGxvZ18wLjIuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlJlcGxhY2VtZW50IHN5c2xvZyBBUEkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJhbGFiaXQuY29tL25ldHdvcmstc2VjdXJpdHkvc3lzbG9nLW5nL29wZW5zb3VyY2UtbG9nZ2luZy1zeXN0ZW0iCi1ERVNDUklQVElPTiA9ICJUaGUgRXZlbnRMb2cgbGlicmFyeSBhaW1zIHRvIGJlIGEgcmVwbGFjZW1lbnQgb2YgdGhlIFwKLSAgICAgICAgICAgICAgc2ltcGxlIHN5c2xvZygpIEFQSSBwcm92aWRlZCBvbiBVTklYIHN5c3RlbXMuIFRoZSBcCi0gICAgICAgICAgICAgIG1ham9yIGRpZmZlcmVuY2UgYmV0d2VlbiBFdmVudExvZyBhbmQgc3lzbG9nIGlzIHRoYXQgXAotICAgICAgICAgICAgICBFdmVudExvZyB0cmllcyB0byBhZGQgc3RydWN0dXJlIHRvIG1lc3NhZ2VzLiBFdmVudExvZyBcCi0gICAgICAgICAgICAgIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0byBidWlsZCwgZm9ybWF0IGFuZCBvdXRwdXQgYW4gXAotICAgICAgICAgICAgICBldmVudCByZWNvcmQuIFRoZSBleGFjdCBmb3JtYXQgYW5kIG91dHB1dCBtZXRob2QgY2FuIFwKLSAgICAgICAgICAgICAgYmUgY3VzdG9taXplZCBieSB0aGUgYWRtaW5pc3RyYXRvciB2aWEgYSBjb25maWd1cmF0aW9uIFwKLSAgICAgICAgICAgICAgZmlsZS4gaGlzIHBhY2thZ2UgaXMgdGhlIHJ1bnRpbWUgcGFydCBvZiB0aGUgbGlicmFyeS4gXAotIgotCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI4YmE4ZTc3YmNkYTlhNTNmYWMwZmUzOWZlOTU3NzY3IgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmJhbGFiaXQuY29tL2Rvd25sb2Fkcy9zeXNsb2ctbmcvb3Blbi1zb3VyY2UtZWRpdGlvbi8zLjQuMi9zb3VyY2UvJHtCUE59XyR7UFZ9LnRhci5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OGVjOGQxZWEzYjk4ZmEzNTAwMmJiNzU2MjI3YzMxNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2I0ZTZmMzE2ZGFlZGU0ZmE1NDU0NzM3MWQ1Yzk4NjM5NTE3N2MxMmRiZGVjNzRhNjYyOThlNjg0YWM4Yjg1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmFyc2lnaHQvbGlibmljZV8wLjEuMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9saWJuaWNlXzAuMS4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhjODIyMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9saWJuaWNlXzAuMS4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJhY3RpdmUgQ29ubmVjdGl2aXR5IEVzdGFibGlzaG1lbnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkxpYm5pY2UgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIElFVEYncyBkcmFmdCBJbnRlcmFjdGl2ZSBDb25uZWN0aXZpdHkgRXN0YWJsaXNobWVudCBzdGFuZGFyZCAoSUNFKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vbmljZS5mcmVlZGVza3RvcC5vcmcvd2lraS8iCi1TUkNfVVJJID0gImh0dHA6Ly9uaWNlLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9saWJuaWNlLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMjI2ZmFlYWY0OGE5MTUwYWRhMDBkYTJlMjg2NTk1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MTExMmQ5ZjNiZTkzM2E4MjdjODM2NWYyMDU1MTU2Mzk1M2FmNjcxODA1NzkyOGY1MWY0ODdiZmU4ODQxOWUxIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgTVBMdjEuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTljNDIzMjUwMTU3MDJmZWRhNGY0ZDJmMTlhNTViNzY3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5NUEw7bWQ1PTNjNjE3NzEwZTUxY2RiZTBmYzAwNzE2ZjA1NmRmYjFhIFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ3VwbnBdID0gIi0tZW5hYmxlLWd1cG5wLC0tZGlzYWJsZS1ndXBucCxndXBucC1pZ2QiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8uZGVidWciCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIG1rZGlyICR7U30vbTQgfHwgdHJ1ZQotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBmb3IgaSBpbiAkKGZpbmQgJHtCfSAtbmFtZSAiKi5wYyIpIDsgZG8KLSAgICAgICAgc2VkIC1pIC1lIHM6JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnIFwKLSAgICAgICAgICAgICAgIC1lIHM6LyR7VEFSR0VUX1NZU306OmcgXAotICAgICAgICAgICAgICAgICAgJGkKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9saWJuaWNlXzAuMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZhcnNpZ2h0L2xpYm5pY2VfMC4xLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NTI1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYXJzaWdodC9saWJuaWNlXzAuMS4xNC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkludGVyYWN0aXZlIENvbm5lY3Rpdml0eSBFc3RhYmxpc2htZW50IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJMaWJuaWNlIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJRVRGJ3MgZHJhZnQgSW50ZXJhY3RpdmUgQ29ubmVjdGl2aXR5IEVzdGFibGlzaG1lbnQgc3RhbmRhcmQgKElDRSkuIgorSE9NRVBBR0UgPSAiaHR0cDovL25pY2UuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorU1JDX1VSSSA9ICJodHRwOi8vbmljZS5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvbGlibmljZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiYzliOWI3NGI4YWUxYjM4OTBlNGJkOTNmMWI3MGU4ZmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmUxMjBiYTk1ZDQ0OTA0MzZmMGRhMDc3ZmZhOGY3NjdiZjcyN2I4MmRlY2YyYmY0OTllMzliZWNjMDI3ODA5YyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSAmIE1QTHYxLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05YzQyMzI1MDE1NzAyZmVkYTRmNGQyZjE5YTU1Yjc2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTVBMO21kNT0zYzYxNzcxMGU1MWNkYmUwZmMwMDcxNmYwNTZkZmIxYSBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ251dGxzIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ3N0cmVhbWVyMS4wIgorUEFDS0FHRUNPTkZJR1tndXBucF0gPSAiLS1lbmFibGUtZ3VwbnAsLS1kaXNhYmxlLWd1cG5wLGd1cG5wLWlnZCIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyMC4xMF0gPSAiLS13aXRoLWdzdHJlYW1lci0wLjEwLC0td2l0aG91dC1nc3RyZWFtZXItMC4xMCxnc3RyZWFtZXIgZ3N0LXBsdWdpbnMtYmFzZSIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyMS4wXSA9ICItLXdpdGgtZ3N0cmVhbWVyLC0td2l0aG91dC1nc3RyZWFtZXIsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwLyouc28gJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwLyoubGEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0wLjEwLyouYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMC4xMC8uZGVidWcgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvLmRlYnVnIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAke1N9L200IHx8IHRydWUKK30KKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgZm9yIGkgaW4gJChmaW5kICR7Qn0gLW5hbWUgIioucGMiKSA7IGRvCisgICAgICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZyBcCisgICAgICAgICAgICAgICAtZSBzOi8ke1RBUkdFVF9TWVN9OjpnIFwKKyAgICAgICAgICAgICAgICAgICRpCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmJzZXQvZmJzZXQtbW9kZXMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldC1tb2Rlcy5iYgppbmRleCA1ZjZmOTkwLi5iNzY4NTUzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldC1tb2Rlcy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mYnNldC9mYnNldC1tb2Rlcy5iYgpAQCAtMTQsOCArMTQsNiBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2ZiLm1vZGVzICR7RH0ke3N5c2NvbmZkaXJ9CiB9CiAKLWluaGVyaXQgYWxsYXJjaAotCiAjIGZiLm1vZGVzIGZpbGUgaXMgTUFDSElORV9BUkNILCBiYXNlLmJiY2xhc3MgY29ycmVjdGx5IGNoYW5nZXMgaXQgdG8gTUFDSElORV9BUkNILCBidXQgdG9vIGxhdGUgZm9yIGFsbGFyY2guYmJjbGFzcwogIyB0byBkaXNhYmxlICJhbGwiIGJlaGF2aW9yIChmb3VuZCB3aGVuIGNvbXBhcmluZyBxZW11YXJtIGFuZCBxZW11eDg2IHNpZ25hdHVyZXMpCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWU2ZWM5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZGVFciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vd3d3LmZmdHcub3JnL2ZmdHctJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1ORU9OLWF1dG9kZXRlY3Rpb24tc2VnZmF1bHRzLWFzc3VtZS1uZW9uLXByZXNlbnQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjBkNTkxNWQ3ZDM5YjMyNTNjMWNjMDUwMzBkNzlhYzQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNjA5YjdmZWJhNTIzMGU4ZjZkZDhkMjQ1ZGRiZWZhYzMyNGM1YTZhZTQxODY5NDc2NzBkOWFjMmNkMjU1NzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIHdlIGhhZCBtdWx0aXBsZSByZWNpcGVzIGluIHRoZSBwYXN0Ci1QUk9WSURFUyA9ICJmZnR3bCBmZnR3ZiIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1mb3J0cmFuIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLUZGVFdfTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0tZW5hYmxlLW5lb24nLCAnJywgZCl9IgotRkZUV19ORU9OX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAjIGNvbmZpZ3VyZSBmZnR3Ci0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0dwotCW1rZGlyIC1wICR7Qn0KLSAgICBjZCAke0J9Ci0gICAgIyBmdWxsIChyZSljb25maWd1cmUKLSAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCi0gICAgbXYgJHtCfSAke1dPUktESVJ9L2J1aWxkLWZmdHcKLQotICAgICMgY29uZmlndXJlIGZmdHdsCi0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2wKLQlta2RpciAtcCAke0J9Ci0gICAgY2QgJHtCfQotICAgICMgY29uZmlndXJlIG9ubHkKLSAgICBvZV9ydW5jb25mICAtLWVuYWJsZS1sb25nLWRvdWJsZQotICAgIG12ICR7Qn0gJHtXT1JLRElSfS9idWlsZC1mZnR3bCAKLQotICAgICMgY29uZmlndXJlIGZmdHdmCi0gICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKLQlta2RpciAtcCAke0J9Ci0gICAgY2QgJHtCfQotICAgICMgY29uZmlndXJlIG9ubHkKLSAgICBvZV9ydW5jb25mIC0tZW5hYmxlLXNpbmdsZSAke0ZGVFdfTkVPTn0KLSAgICBtdiAke0J9ICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCi0gICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgotICAgICAgICBhdXRvdG9vbHNfZG9fY29tcGlsZQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCi0gICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgotICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgIGRvbmUKLX0KLQotCi1QQUNLQUdFUyA9KyAibGliZmZ0dyBsaWJmZnR3bCBsaWJmZnR3ZiIKLUZJTEVTX2xpYmZmdHcgPSAiJHtsaWJkaXJ9L2xpYmZmdHczLnNvLiogJHtsaWJkaXJ9L2xpYmZmdHczXyouc28uKiIKLUZJTEVTX2xpYmZmdHdsID0gIiR7bGliZGlyfS9saWJmZnR3M2wuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNsXyouc28uKiIKLUZJTEVTX2xpYmZmdHdmID0gIiR7bGliZGlyfS9saWJmZnR3M2Yuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNmXyouc28uKiIKLQotUEFDS0FHRVMgPSsgImZmdHctd2lzZG9tIGZmdHdsLXdpc2RvbSBmZnR3Zi13aXNkb20gZmZ0dy13aXNkb20tdG8tY29uZiIKLUZJTEVTX2ZmdHctd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbSIKLUZJTEVTX2ZmdHdsLXdpc2RvbSA9ICIke2JpbmRpcn0vZmZ0d2wtd2lzZG9tIgotRklMRVNfZmZ0d2Ytd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3Zi13aXNkb20iCi1GSUxFU19mZnR3LXdpc2RvbS10by1jb25mID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbS10by1jb25mIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICJsaWJmZnR3IGxpYmZmdHdsIGxpYmZmdHdmIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZmdHcvZmZ0d18zLjMuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWUwZWEzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmZ0dy9mZnR3XzMuMy44LmJiCkBAIC0wLDAgKzEsODMgQEAKK0RFU0NSSVBUSU9OID0gIkZGVFciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vd3d3LmZmdHcub3JnL2ZmdHctJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1ORU9OLWF1dG9kZXRlY3Rpb24tc2VnZmF1bHRzLWFzc3VtZS1uZW9uLXByZXNlbnQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjhhYWM4MzNjOTQzZDhlOTBkNTFiNjk3YjI3ZDQzODRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxMTMyNjJmNmU5MmM1YmQ0NzRmMjg3NWZhMWIwMTA1NGM0YWQ1MDQwZjZiMGRhN2MwM2M5ODgyMWQ5YWUzMDMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIHdlIGhhZCBtdWx0aXBsZSByZWNpcGVzIGluIHRoZSBwYXN0CitQUk9WSURFUyA9ICJmZnR3bCBmZnR3ZiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1mb3J0cmFuIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS10aHJlYWRzIgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKKyMgbmVvbiBpcyBvcHRpb25hbCBmb3IgYXJtIHZlcnNpb24gPCA4IC0+IGNoZWNrIHR1bmUgZmVhdHVyZXMKK0ZGVFdfTkVPTiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0tZW5hYmxlLW5lb24nLCAnJywgZCl9IgorIyBuZW9uIGlzIHN1cHBvcmVkIGZvciBhcm0gdmVyc2lvbiA9IDggLT4gZW5hYmxlCitGRlRXX05FT05fYWFyY2g2NCA9ICItLWVuYWJsZS1uZW9uIgorRkZUV19ORU9OX2NsYXNzLW5hdGl2ZSA9ICIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIGNvbmZpZ3VyZSBmZnR3CisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0dworCW1rZGlyIC1wICR7Qn0KKyAgICBjZCAke0J9CisgICAgIyBmdWxsIChyZSljb25maWd1cmUKKyAgICBhdXRvdG9vbHNfZG9fY29uZmlndXJlCisgICAgbXYgJHtCfSAke1dPUktESVJ9L2J1aWxkLWZmdHcKKworICAgICMgY29uZmlndXJlIGZmdHdsCisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2wKKwlta2RpciAtcCAke0J9CisgICAgY2QgJHtCfQorICAgICMgY29uZmlndXJlIG9ubHkKKyAgICBvZV9ydW5jb25mICAtLWVuYWJsZS1sb25nLWRvdWJsZQorICAgIG12ICR7Qn0gJHtXT1JLRElSfS9idWlsZC1mZnR3bCAKKworICAgICMgY29uZmlndXJlIGZmdHdmCisgICAgcm0gLXJmICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKKwlta2RpciAtcCAke0J9CisgICAgY2QgJHtCfQorICAgICMgY29uZmlndXJlIG9ubHkKKyAgICBvZV9ydW5jb25mIC0tZW5hYmxlLXNpbmdsZSAke0ZGVFdfTkVPTn0KKyAgICBtdiAke0J9ICR7V09SS0RJUn0vYnVpbGQtZmZ0d2YKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCisgICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgorICAgICAgICBhdXRvdG9vbHNfZG9fY29tcGlsZQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBmb3IgbGliIGluIGZmdHcgZmZ0d2wgZmZ0d2Y7IGRvCisgICAgICAgIGNkICR7V09SS0RJUn0vYnVpbGQtJGxpYgorICAgICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgIGRvbmUKK30KKworCitQQUNLQUdFUyA9KyAibGliZmZ0dyBsaWJmZnR3bCBsaWJmZnR3ZiIKK0ZJTEVTX2xpYmZmdHcgPSAiJHtsaWJkaXJ9L2xpYmZmdHczLnNvLiogJHtsaWJkaXJ9L2xpYmZmdHczXyouc28uKiIKK0ZJTEVTX2xpYmZmdHdsID0gIiR7bGliZGlyfS9saWJmZnR3M2wuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNsXyouc28uKiIKK0ZJTEVTX2xpYmZmdHdmID0gIiR7bGliZGlyfS9saWJmZnR3M2Yuc28uKiAke2xpYmRpcn0vbGliZmZ0dzNmXyouc28uKiIKKworUEFDS0FHRVMgPSsgImZmdHctd2lzZG9tIGZmdHdsLXdpc2RvbSBmZnR3Zi13aXNkb20gZmZ0dy13aXNkb20tdG8tY29uZiIKK0ZJTEVTX2ZmdHctd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbSIKK0ZJTEVTX2ZmdHdsLXdpc2RvbSA9ICIke2JpbmRpcn0vZmZ0d2wtd2lzZG9tIgorRklMRVNfZmZ0d2Ytd2lzZG9tID0gIiR7YmluZGlyfS9mZnR3Zi13aXNkb20iCitGSUxFU19mZnR3LXdpc2RvbS10by1jb25mID0gIiR7YmluZGlyfS9mZnR3LXdpc2RvbS10by1jb25mIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJsaWJmZnR3IGxpYmZmdHdsIGxpYmZmdHdmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuaW5jCmluZGV4IGRiZTcwMGEuLmQzNDE2YzggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmluYwpAQCAtMTIsOSArMTIsOSBAQAogICAgIGZpbGU6Ly8wMDAyLWFsd2F5cy1idWlsZC1mbHVpZC1hbmQtZXhwb3J0LXBvaW50ZXJzLnBhdGNoIFwKICIKIAotUFYgPSAiMS4zLjQtMSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkN2ZjZDI3YWI5Mjg2NDhlMWExMzY2ZGQyZTI3Mzk3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZmIyYzg4ODI0MzNjZTY5NGU2OTAwYzk0ZmRhNTA1ZThmNGVkM2ZhOWM3ZTU5NzAwNzA5OGEzM2I4NWM1M2Y0IgorUFYgPSAiMS4zLjQtMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOGUyOTEzNDMzNTdlNDlkZDgxYTIyNDA4NzQ0ZTQwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWQzNDljMThjOTk1MDg3MzdkNDhmMjI1YTJlYjI2YTQzMzM4ZjkyNDc1NTFjYWI3MmEzMTdmYTQyY2RhOTEwIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM3N2IzNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkLzAwMDEtYW5ub3RhdGUuYy1nZGZ0LmMtUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY2NweS10by1maS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDg1Yzc2OTRhNWNmMzQ1OTc5MDliZGQxY2E2OTMxYjBmOTk5MDRjMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTkgSnVuIDIwMTggMDA6NDA6NDkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYW5ub3RhdGUuYy9nZGZ0LmM6IFJlcGxhY2Ugc3RybmNweSB3aXRoIG1lbWNjcHkgdG8gZml4CisgLVdzdHJpbmdvcC10cnVuY2F0aW9uLgorCitGaXhlZCBmb3IgZ2NjODoKK2dpdC9zcmMvZ2RmdC5jOjE2OTk6MjogZXJyb3I6ICdzdHJuY3B5JyBvdXRwdXQgdHJ1bmNhdGVkIGJlZm9yZSB0ZXJtaW5hdGluZyBudWwgY29weWluZyBhcyBtYW55IGJ5dGVzIGZyb20gYSBzdHJpbmcgYXMgaXRzIGxlbmd0aCBbLVdlcnJvcj1zdHJpbmdvcC10cnVuY2F0aW9uXQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkL3B1bGwvNDQyXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9hbm5vdGF0ZS5jIHwgMiArLQorIHNyYy9nZGZ0LmMgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Fubm90YXRlLmMgYi9zcmMvYW5ub3RhdGUuYworaW5kZXggMDBhYWY0OS4uMTdkZjgxMyAxMDA2NDQKKy0tLSBhL3NyYy9hbm5vdGF0ZS5jCisrKysgYi9zcmMvYW5ub3RhdGUuYworQEAgLTEwNCw3ICsxMDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCQkJZnByaW50ZihzdGRlcnIsICJGb250IG1heGltdW0gbGVuZ3RoIGlzIDEwMjQsICVkIGdpdmVuXG4iLCBmb250X2xlbik7CisgCQkJCQlnb3RvIGJhZExpbmU7CisgCQkJCX0KKy0JCQkJc3RybmNweShmb250LCBzdCwgZm9udF9sZW4pOworKwkJCQltZW1jcHkoZm9udCwgc3QsIGZvbnRfbGVuKTsKKyAJCQl9CisgCQl9IGVsc2UgaWYoIXN0cmNtcChzdCwgImFsaWduIikpIHsKKyAJCQljaGFyICpzdCA9IHN0cnRvaygwLCAiIFx0XHJcbiIpOworZGlmZiAtLWdpdCBhL3NyYy9nZGZ0LmMgYi9zcmMvZ2RmdC5jCitpbmRleCA5ZmE4Mjk1Li44MWRiZTQxIDEwMDY0NAorLS0tIGEvc3JjL2dkZnQuYworKysrIGIvc3JjL2dkZnQuYworQEAgLTE2OTYsNyArMTY5Niw3IEBAIHN0YXRpYyBjaGFyICogZm9udF9wYXRoKGNoYXIgKipmb250cGF0aCwgY2hhciAqbmFtZV9saXN0KQorIAkJZ2RGcmVlKHBhdGgpOworIAkJcmV0dXJuICJjb3VsZCBub3QgYWxsb2MgZnVsbCBsaXN0IG9mIGZvbnRzIjsKKyAJfQorLQlzdHJuY3B5KGZvbnRsaXN0LCBuYW1lX2xpc3QsIG5hbWVfbGlzdF9sZW4pOworKwltZW1jcHkoZm9udGxpc3QsIG5hbWVfbGlzdCwgbmFtZV9saXN0X2xlbik7CisgCWZvbnRsaXN0W25hbWVfbGlzdF9sZW5dID0gMDsKKyAKKyAJLyoKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE4LTEwMDAyMjIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OTI0ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gNGIxZTE4YTAwY2U3YzRiN2U2OTE5YzNiMzEwOWEwMzQzOTNiODA1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KK0RhdGU6IFNhdCwgMTQgSnVsIDIwMTggMTM6NTQ6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gYm1wOiBjaGVjayByZXR1cm4gdmFsdWUgaW4gZ2RJbWFnZUJtcFB0cgorCitDbG9zZXMgIzQ0Ny4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYWMxNmJkZjJkNDE3MjRiNWE2NTI1NWQ0YzI4ZmIwZWM0NmJjNDJmNSkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkL2NvbW1pdC80YjFlMThhMDBjZTdjNGI3ZTY5MTljM2IzMTA5YTAzNDM5M2I4MDVhXQorQ1ZFOiBDVkUtMjAxOC0xMDAwMjIyCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2dkX2JtcC5jIHwgMTcgKysrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9nZF9ibXAuYyBiL3NyYy9nZF9ibXAuYworaW5kZXggY2NhZmRjZC4uZDYyNWRhMSAxMDA2NDQKKy0tLSBhL3NyYy9nZF9ibXAuYworKysrIGIvc3JjL2dkX2JtcC5jCitAQCAtNDgsNiArNDgsOCBAQCBzdGF0aWMgaW50IGJtcF9yZWFkXzRiaXQoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBpbmZpbGUsIGJtcF9pbmZvX3QgKmluZm8sIGJtcAorIHN0YXRpYyBpbnQgYm1wX3JlYWRfOGJpdChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIGluZmlsZSwgYm1wX2luZm9fdCAqaW5mbywgYm1wX2hkcl90ICpoZWFkZXIpOworIHN0YXRpYyBpbnQgYm1wX3JlYWRfcmxlKGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgaW5maWxlLCBibXBfaW5mb190ICppbmZvKTsKKyAKKytzdGF0aWMgaW50IF9nZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pOworKworICNkZWZpbmUgQk1QX0RFQlVHKHMpCisgCisgc3RhdGljIGludCBnZEJNUFB1dFdvcmQoZ2RJT0N0eCAqb3V0LCBpbnQgdykKK0BAIC04OCw4ICs5MCwxMCBAQCBCR0RfREVDTEFSRSh2b2lkICopIGdkSW1hZ2VCbXBQdHIoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplLCBpbnQgY29tcHJlc3Npb24pCisgCXZvaWQgKnJ2OworIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHgoMjA0OCwgTlVMTCk7CisgCWlmIChvdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7CistCWdkSW1hZ2VCbXBDdHgoaW0sIG91dCwgY29tcHJlc3Npb24pOworLQlydiA9IGdkRFBFeHRyYWN0RGF0YShvdXQsIHNpemUpOworKwlpZiAoIV9nZEltYWdlQm1wQ3R4KGltLCBvdXQsIGNvbXByZXNzaW9uKSkKKysJCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7CisrCWVsc2UKKysJCXJ2ID0gTlVMTDsKKyAJb3V0LT5nZF9mcmVlKG91dCk7CisgCXJldHVybiBydjsKKyB9CitAQCAtMTQyLDYgKzE0NiwxMSBAQCBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlQm1wKGdkSW1hZ2VQdHIgaW0sIEZJTEUgKm91dEZpbGUsIGludCBjb21wcmVzc2lvbikKKyAJCWNvbXByZXNzaW9uIC0gd2hldGhlciB0byBhcHBseSBSTEUgb3Igbm90LgorICovCisgQkdEX0RFQ0xBUkUodm9pZCkgZ2RJbWFnZUJtcEN0eChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIG91dCwgaW50IGNvbXByZXNzaW9uKQorK3sKKysJX2dkSW1hZ2VCbXBDdHgoaW0sIG91dCwgY29tcHJlc3Npb24pOworK30KKysKKytzdGF0aWMgaW50IF9nZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pCisgeworIAlpbnQgYml0bWFwX3NpemUgPSAwLCBpbmZvX3NpemUsIHRvdGFsX3NpemUsIHBhZGRpbmc7CisgCWludCBpLCByb3csIHhwb3MsIHBpeGVsOworQEAgLTE0OSw2ICsxNTgsNyBAQCBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pCisgCXVuc2lnbmVkIGNoYXIgKnVuY29tcHJlc3NlZF9yb3cgPSBOVUxMLCAqdW5jb21wcmVzc2VkX3Jvd19zdGFydCA9IE5VTEw7CisgCUZJTEUgKnRtcGZpbGVfZm9yX2NvbXByZXNzaW9uID0gTlVMTDsKKyAJZ2RJT0N0eFB0ciBvdXRfb3JpZ2luYWwgPSBOVUxMOworKwlpbnQgcmV0ID0gMTsKKyAKKyAJLyogTm8gY29tcHJlc3Npb24gaWYgaXRzIHRydWUgY29sb3VyIG9yIHdlIGRvbid0IHN1cHBvcnQgc2VlayAqLworIAlpZiAoaW0tPnRydWVDb2xvcikgeworQEAgLTMyNiw2ICszMzYsNyBAQCBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pCisgCQlvdXRfb3JpZ2luYWwgPSBOVUxMOworIAl9CisgCisrCXJldCA9IDA7CisgY2xlYW51cDoKKyAJaWYgKHRtcGZpbGVfZm9yX2NvbXByZXNzaW9uKSB7CisgI2lmZGVmIF9XSU4zMgorQEAgLTMzOSw3ICszNTAsNyBAQCBjbGVhbnVwOgorIAlpZiAob3V0X29yaWdpbmFsKSB7CisgCQlvdXRfb3JpZ2luYWwtPmdkX2ZyZWUob3V0X29yaWdpbmFsKTsKKyAJfQorLQlyZXR1cm47CisrCXJldHVybiByZXQ7CisgfQorIAorIHN0YXRpYyBpbnQgY29tcHJlc3Nfcm93KHVuc2lnbmVkIGNoYXIgKnJvdywgaW50IGxlbmd0aCkKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjUuYmIKaW5kZXggNjNkOWFjZi4uNTQ4ZDJjNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4yLjUuYmIKQEAgLTE0LDYgKzE0LDggQEAKIERFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgemxpYiB0aWZmIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1HRC0yLjIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hbm5vdGF0ZS5jLWdkZnQuYy1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMDAyMjIucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDUkVWID0gIjgyNTUyMzFiNjg4ODk1OTdkMDRkNDUxYTcyNDM4YWI5MmE0MDVhYmEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2ZsYWdzL2dmbGFnc18yLjIuMC5iYgppbmRleCAyOGI2NTJhLi4yOWExMTI1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZmxhZ3MvZ2ZsYWdzXzIuMi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dmbGFncy9nZmxhZ3NfMi4yLjAuYmIKQEAgLTEsNyArMSw1IEBACiBERVNDUklQVElPTiA9ICJUaGUgZ2ZsYWdzIHBhY2thZ2UgY29udGFpbnMgYSBDKysgbGlicmFyeSB0aGF0IGltcGxlbWVudHMgY29tbWFuZGxpbmUgZmxhZ3MgcHJvY2Vzc2luZy4gSXQgaW5jbHVkZXMgYnVpbHQtaW4gc3VwcG9ydCBmb3Igc3RhbmRhcmQgdHlwZXMgc3VjaCBhcyBzdHJpbmcgYW5kIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBmbGFncyBpbiB0aGUgc291cmNlIGZpbGUgaW4gd2hpY2ggdGhleSBhcmUgdXNlZCIKLQogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dmbGFncy9nZmxhZ3MiCi0KIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PWM4MGQxYTNiNjIzZjcyYmI4NWE0Yzc1YjU1NjU1MWRmIgogCkBAIC0xMCwxNCArOCwxMyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLQogaW5oZXJpdCBjbWFrZQogCiBFWFRSQV9PRUNNQUtFPSItREJVSUxEX1NIQVJFRF9MSUJTPU9OIC1EUkVHSVNURVJfSU5TVEFMTF9QUkVGSVg9T0ZGIC1ETElCX0lOU1RBTExfRElSPSR7YmFzZWxpYn0iCiAKIFBBQ0tBR0VTID0rICIke1BOfS1iYXNoLWNvbXBsZXRpb24iCiBGSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gKz0gIiR7YmluZGlyfS9nZmxhZ3NfY29tcGxldGlvbnMuc2giCisKIFJERVBFTkRTXyR7UE59LWJhc2gtY29tcGxldGlvbiA9ICJiYXNoIGJhc2gtY29tcGxldGlvbiIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2cvMDAwMS1SZXdvcmstQ01ha2UtZ2xvZy1WRVJTSU9OLW1hbmFnZW1lbnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2cvMDAwMS1SZXdvcmstQ01ha2UtZ2xvZy1WRVJTSU9OLW1hbmFnZW1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxYTZjOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZy8wMDAxLVJld29yay1DTWFrZS1nbG9nLVZFUlNJT04tbWFuYWdlbWVudC5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIDRlYTExZTBkN2MwNTc1MzE2YTZjY2MwN2E5MzExNjRjYTI5YzNkMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDb3JlbnRpbiBMZSBNb2xnYXQgPGNvcmVudGlubEBnb29nbGUuY29tPgorRGF0ZTogTW9uLCAyOSBKYW4gMjAxOCAxNDo1OTowOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZXdvcmsgQ01ha2UgZ2xvZyBWRVJTSU9OIG1hbmFnZW1lbnQuCisKKy0gVXNlIG9mIFByb2plY3QgdmVyc2lvbiBwcm9wZXJ0aWVzIGluc3RlYWQgb2YgY3VzdG9tIHZhcmlhYmxlcworLSBmaXggbWlzc21hdGNoIGJldHdlZW4gVkVSU0lPTiAoYnVpbGQgdmVyc2lvbikgYW5kIFNPVkVSU0lPTiAoQVBJIHZlcnNpb24pCitzcmM6IGh0dHBzOi8vY21ha2Uub3JnL2NtYWtlL2hlbHAvbGF0ZXN0L3Byb3BfdGd0L1ZFUlNJT04uaHRtbCNwcm9wX3RndDpWRVJTSU9OCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ2xvZy9jb21taXQvNmI2ZTM4YTdkNTNmZTAxZjQyY2UzNDM4NGNmNGJhNGM1MGU4Y2I2NV0KK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMjMgKysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDc0MTVlYWIuLmZiNGU0MDggMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC04LDIzICs4LDE2IEBAIGlmIChQT0xJQ1kgQ01QMDA2MykKKyAgIGNtYWtlX3BvbGljeSAoU0VUIENNUDAwNjMgTkVXKQorIGVuZGlmIChQT0xJQ1kgQ01QMDA2MykKKyAKKy1wcm9qZWN0IChnb29nbGUtZ2xvZykKKytwcm9qZWN0KGdsb2cgVkVSU0lPTiAwLjMuNSBMQU5HVUFHRVMgQyBDWFgpCisgCisgZW5hYmxlX3Rlc3RpbmcgKCkKKyAKKy1zZXQgKEdMT0dfTUFKT1JfVkVSU0lPTiAwKQorLXNldCAoR0xPR19NSU5PUl9WRVJTSU9OIDMpCistc2V0IChHTE9HX1BBVENIX1ZFUlNJT04gNSkKKy0KKy1zZXQgKEdMT0dfVkVSU0lPTgorLSAgJHtHTE9HX01BSk9SX1ZFUlNJT059LiR7R0xPR19NSU5PUl9WRVJTSU9OfS4ke0dMT0dfUEFUQ0hfVkVSU0lPTn0pCistCisgc2V0IChDUEFDS19QQUNLQUdFX05BTUUgZ2xvZykKKyBzZXQgKENQQUNLX1BBQ0tBR0VfREVTQ1JJUFRJT05fU1VNTUFSWSAiIikKKy1zZXQgKENQQUNLX1BBQ0tBR0VfVkVSU0lPTl9NQUpPUiAke0dMT0dfTUFKT1JfVkVSU0lPTn0pCistc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT05fTUlOT1IgJHtHTE9HX01JTk9SX1ZFUlNJT059KQorLXNldCAoQ1BBQ0tfUEFDS0FHRV9WRVJTSU9OX1BBVENIICR7R0xPR19QQVRDSF9WRVJTSU9OfSkKKy1zZXQgKENQQUNLX1BBQ0tBR0VfVkVSU0lPTiAke0dMT0dfVkVSU0lPTn0pCisrc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT05fTUFKT1IgJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorK3NldCAoQ1BBQ0tfUEFDS0FHRV9WRVJTSU9OX01JTk9SICR7UFJPSkVDVF9WRVJTSU9OX01JTk9SfSkKKytzZXQgKENQQUNLX1BBQ0tBR0VfVkVSU0lPTl9QQVRDSCAke1BST0pFQ1RfVkVSU0lPTl9QQVRDSH0pCisrc2V0IChDUEFDS19QQUNLQUdFX1ZFUlNJT04gJHtQUk9KRUNUX1ZFUlNJT059KQorIAorIG9wdGlvbiAoV0lUSF9HRkxBR1MgIlVzZSBnZmxhZ3MiIE9OKQorIG9wdGlvbiAoV0lUSF9USFJFQURTICJFbmFibGUgbXVsdGl0aHJlYWRpbmcgc3VwcG9ydCIgT04pCitAQCAtNDA2LDggKzM5OSw4IEBAIGlmIChnZmxhZ3NfRk9VTkQpCisgICBlbmRpZiAoTk9UIEJVSUxEX1NIQVJFRF9MSUJTKQorIGVuZGlmIChnZmxhZ3NfRk9VTkQpCisgCistc2V0X3RhcmdldF9wcm9wZXJ0aWVzIChnbG9nIFBST1BFUlRJRVMgVkVSU0lPTiAke0dMT0dfTUFKT1JfVkVSU0lPTn0pCistc2V0X3RhcmdldF9wcm9wZXJ0aWVzIChnbG9nIFBST1BFUlRJRVMgU09WRVJTSU9OICR7R0xPR19WRVJTSU9OfSkKKytzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgKGdsb2cgUFJPUEVSVElFUyBWRVJTSU9OICR7UFJPSkVDVF9WRVJTSU9OfSkKKytzZXRfdGFyZ2V0X3Byb3BlcnRpZXMgKGdsb2cgUFJPUEVSVElFUyBTT1ZFUlNJT04gJHtQUk9KRUNUX1ZFUlNJT05fTUFKT1J9KQorIAorIGlmIChXSU4zMikKKyAgIHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zIChnbG9nIFBVQkxJQyBHTE9HX05PX0FCQlJFVklBVEVEX1NFVkVSSVRJRVMpCitAQCAtNTcwLDcgKzU2Myw3IEBAIGNvbmZpZ3VyZV9wYWNrYWdlX2NvbmZpZ19maWxlIChnbG9nLWNvbmZpZy5jbWFrZS5pbgorICAgTk9fQ0hFQ0tfUkVRVUlSRURfQ09NUE9ORU5UU19NQUNSTykKKyAKKyB3cml0ZV9iYXNpY19wYWNrYWdlX3ZlcnNpb25fZmlsZSAoZ2xvZy1jb25maWctdmVyc2lvbi5jbWFrZSBWRVJTSU9OCistICAke0dMT0dfVkVSU0lPTn0gQ09NUEFUSUJJTElUWSBTYW1lTWFqb3JWZXJzaW9uKQorKyAgJHtQUk9KRUNUX1ZFUlNJT059IENPTVBBVElCSUxJVFkgU2FtZU1ham9yVmVyc2lvbikKKyAKKyBleHBvcnQgKFRBUkdFVFMgZ2xvZyBOQU1FU1BBQ0UgZ2xvZzo6IEZJTEUgZ2xvZy10YXJnZXRzLmNtYWtlKQorIGV4cG9ydCAoUEFDS0FHRSBnbG9nKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LXVzZXItdG8tZGlzYWJsZS1nZmxhZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2cvMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctdXNlci10by1kaXNhYmxlLWdmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2MjgxZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2cvMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctdXNlci10by1kaXNhYmxlLWdmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gMGZhYmRlMDUxNWUxODBjNTM5NjFjMjczNDZkZDdhNzljZmZhNGMxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMSBBdWcgMjAxNiAxMTo0OTozNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IEFsbG93IHVzZXIgdG8gZGlzYWJsZSBnZmxhZ3MKLQotVW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzIGxpa2UgY3Jvc3MtY29tcGlsYXRpb24sIHRoZSB1c2VyIG1pZ2h0IG5vdCB3YW50Ci10byBlbmFibGUgc3VwcG9ydCBmb3IgZ2ZsYWdzLgotCi1UaGlzIHBhdGNoIGFsbG93cyBzdXBwb3J0IGZvciAtLXdpdGhvdXQtZ2ZsYWdzCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDdiNGQyMWU3YWU4YS4uZWJhNWU1Y2RhMWVhIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzYsNyArMTM2LDExIEBAIEFDX0FSR19XSVRIKGdmbGFncywgQVNfSEVMUF9TVFJJTkdbLS13aXRoLWdmbGFncz1HRkxBR1NfRElSXSwKLSAgIENGTEFHUz0iJENGTEFHUyAkR0ZMQUdTX0NGTEFHUyIKLSAgIExJQlM9IiRMSUJTICRHRkxBR1NfTElCUyIKLSApCi0tQUNfQ0hFQ0tfTElCKGdmbGFncywgbWFpbiwgYWNfY3ZfaGF2ZV9saWJnZmxhZ3M9MSwgYWNfY3ZfaGF2ZV9saWJnZmxhZ3M9MCkKLStpZiB0ZXN0IHgiJHdpdGhfZ2ZsYWdzIiA9IHgibm8iOyB0aGVuCi0rICBhY19jdl9oYXZlX2xpYmdmbGFncz0wCi0rZWxzZQotKyAgQUNfQ0hFQ0tfTElCKGdmbGFncywgbWFpbiwgYWNfY3ZfaGF2ZV9saWJnZmxhZ3M9MSwgYWNfY3ZfaGF2ZV9saWJnZmxhZ3M9MCkKLStmaQotIGlmIHRlc3QgeCIkYWNfY3ZfaGF2ZV9saWJnZmxhZ3MiID0geCIxIjsgdGhlbgotICAgQUNfREVGSU5FKEhBVkVfTElCX0dGTEFHUywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBnb29nbGUgZ2ZsYWdzIGxpYnJhcnldKQotICAgaWYgdGVzdCB4IiRHRkxBR1NfTElCUyIgPSB4IiI7IHRoZW4KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nLzAwMDItRmluZC1MaWJ1bndpbmQtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZy8wMDAyLUZpbmQtTGlidW53aW5kLWR1cmluZy1jb25maWd1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVjZjY3ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZy8wMDAyLUZpbmQtTGlidW53aW5kLWR1cmluZy1jb25maWd1cmUucGF0Y2gKQEAgLTAsMCArMSwxMjAgQEAKK2RpZmYgLXVOciBhL2NtYWtlL0ZpbmRMaWJ1bndpbmQuY21ha2UgYi9jbWFrZS9GaW5kTGlidW53aW5kLmNtYWtlCistLS0gYS9jbWFrZS9GaW5kTGlidW53aW5kLmNtYWtlCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgYi9jbWFrZS9GaW5kTGlidW53aW5kLmNtYWtlCTIwMTgtMTEtMjAgMTU6NTM6NDguNzk5MDc4MTE0ICswMTAwCitAQCAtMCwwICsxLDU0IEBACisrIyAtIFRyeSB0byBmaW5kIGxpYnVud2luZAorKyMgT25jZSBkb25lIHRoaXMgd2lsbCBkZWZpbmUKKysjCisrIyAgTGlidW53aW5kX0ZPVU5EIC0gc3lzdGVtIGhhcyBsaWJ1bndpbmQKKysjICB1bndpbmQgLSBjbWFrZSB0YXJnZXQgZm9yIGxpYnVud2luZAorKworK2ZpbmRfbGlicmFyeSAoVU5XSU5EX0xJQlJBUlkgTkFNRVMgdW53aW5kIERPQyAidW53aW5kIGxpYnJhcnkiKQorK2luY2x1ZGUgKENoZWNrSW5jbHVkZUZpbGUpCisrY2hlY2tfaW5jbHVkZV9maWxlIChsaWJ1bndpbmQuaCBIQVZFX0xJQlVOV0lORF9IKQorK2NoZWNrX2luY2x1ZGVfZmlsZSAodW53aW5kLmggSEFWRV9VTldJTkRfSCkKKysKKytpZiAoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICJeYXJtIikKKysgICAgc2V0KExJQlVOV0lORF9BUkNIICJhcm0iKQorK2Vsc2VpZiAoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICJeYWFyY2g2NCIpCisrICAgIHNldChMSUJVTldJTkRfQVJDSCAiYWFyY2g2NCIpCisrZWxzZWlmIChDTUFLRV9TWVNURU1fUFJPQ0VTU09SIFNUUkVRVUFMICJ4ODZfNjQiIE9SCisrICAgICAgICBDTUFLRV9TWVNURU1fUFJPQ0VTU09SIFNUUkVRVUFMICJhbWQ2NCIgT1IKKysgICAgICAgIENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgU1RSRVFVQUwgImNvcmVpNy02NCIpCisrICAgIHNldChMSUJVTldJTkRfQVJDSCAieDg2XzY0IikKKytlbHNlaWYgKENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgTUFUQ0hFUyAiXmkuODYkIikKKysgICAgc2V0KExJQlVOV0lORF9BUkNIICJ4ODYiKQorK2Vsc2VpZiAoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICJecHBjNjQiKQorKyAgICBzZXQoTElCVU5XSU5EX0FSQ0ggInBwYzY0IikKKytlbHNlaWYgKENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgTUFUQ0hFUyAiXnBwYyIpCisrICAgIHNldChMSUJVTldJTkRfQVJDSCAicHBjMzIiKQorK2Vsc2VpZiAoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBNQVRDSEVTICJebWlwcyIpCisrICAgIHNldChMSUJVTldJTkRfQVJDSCAibWlwcyIpCisrZWxzZWlmIChDTUFLRV9TWVNURU1fUFJPQ0VTU09SIE1BVENIRVMgIl5ocHBhIikKKysgICAgc2V0KExJQlVOV0lORF9BUkNIICJocHBhIikKKytlbHNlaWYgKENNQUtFX1NZU1RFTV9QUk9DRVNTT1IgTUFUQ0hFUyAiXmlhNjQiKQorKyAgICBzZXQoTElCVU5XSU5EX0FSQ0ggImlhNjQiKQorK2VuZGlmKCkKKysKKytmaW5kX2xpYnJhcnkgKFVOV0lORF9MSUJSQVJZX1BMQVRGT1JNIE5BTUVTICJ1bndpbmQtJHtMSUJVTldJTkRfQVJDSH0iIERPQyAidW53aW5kIGxpYnJhcnkgcGxhdGZvcm0iKQorK2lmIChVTldJTkRfTElCUkFSWV9QTEFURk9STSkKKysgICAgc2V0KEhBVkVfTElCX1VOV0lORCAiMSIpCisrZW5kaWYoKQorKworK2luY2x1ZGUoRmluZFBhY2thZ2VIYW5kbGVTdGFuZGFyZEFyZ3MpCisrIyBoYW5kbGUgdGhlIFFVSUVUTFkgYW5kIFJFUVVJUkVEIGFyZ3VtZW50cyBhbmQgc2V0IExpYnVud2luZF9GT1VORCB0byBUUlVFCisrIyBpZiBhbGwgbGlzdGVkIHZhcmlhYmxlcyBhcmUgVFJVRQorK2ZpbmRfcGFja2FnZV9oYW5kbGVfc3RhbmRhcmRfYXJncyhMaWJ1bndpbmQgREVGQVVMVF9NU0cKKysgICAgVU5XSU5EX0xJQlJBUlkgSEFWRV9MSUJVTldJTkRfSCBIQVZFX1VOV0lORF9IIEhBVkVfTElCX1VOV0lORCkKKysKKyttYXJrX2FzX2FkdmFuY2VkIChVTldJTkRfTElCUkFSWSBVTldJTkRfTElCUkFSWV9QTEFURk9STSkKKysKKytpZiAoTGlidW53aW5kX0ZPVU5EKQorKyAgICBhZGRfbGlicmFyeSh1bndpbmQgSU5URVJGQUNFIElNUE9SVEVEKQorKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXModW53aW5kIFBST1BFUlRJRVMKKysgICAgICAgIElOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyAiJHtVTldJTkRfTElCUkFSWX07JHtVTldJTkRfTElCUkFSWV9QTEFURk9STX0iCisrICAgICkKKytlbHNlKCkKKysgICAgbWVzc2FnZSgiQ2FuJ3QgZmluZCBsaWJ1bndpbmQgbGlicmFyeSIpCisrZW5kaWYoKQorZGlmZiAtdU5yIGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAorLS0tIGEvQ01ha2VMaXN0cy50eHQJMjAxOC0xMS0yMCAxNTo0OTowNy41NzYyNzg0MTcgKzAxMDAKKysrKyBiL0NNYWtlTGlzdHMudHh0CTIwMTgtMTEtMjAgMTU6NDk6MzIuMTA2ODE5OTI4ICswMTAwCitAQCAtNTgsNyArNTgsNiBAQAorIGNoZWNrX2luY2x1ZGVfZmlsZSAoZXhlY2luZm8uaCBIQVZFX0VYRUNJTkZPX0gpCisgY2hlY2tfaW5jbHVkZV9maWxlIChnbG9iLmggSEFWRV9HTE9CX0gpCisgY2hlY2tfaW5jbHVkZV9maWxlIChpbnR0eXBlcy5oIEhBVkVfSU5UVFlQRVNfSCkKKy1jaGVja19pbmNsdWRlX2ZpbGUgKGxpYnVud2luZC5oIEhBVkVfTElCVU5XSU5EX0gpCisgY2hlY2tfaW5jbHVkZV9maWxlIChtZW1vcnkuaCBIQVZFX01FTU9SWV9IKQorIGNoZWNrX2luY2x1ZGVfZmlsZSAocHdkLmggSEFWRV9QV0RfSCkKKyBjaGVja19pbmNsdWRlX2ZpbGUgKHN0ZGludC5oIEhBVkVfU1RESU5UX0gpCitAQCAtNzQsNyArNzMsNiBAQAorIGNoZWNrX2luY2x1ZGVfZmlsZSAoc3lzbG9nLmggSEFWRV9TWVNMT0dfSCkKKyBjaGVja19pbmNsdWRlX2ZpbGUgKHVjb250ZXh0LmggSEFWRV9VQ09OVEVYVF9IKQorIGNoZWNrX2luY2x1ZGVfZmlsZSAodW5pc3RkLmggSEFWRV9VTklTVERfSCkKKy1jaGVja19pbmNsdWRlX2ZpbGUgKHVud2luZC5oIEhBVkVfVU5XSU5EX0gpCisgCisgY2hlY2tfaW5jbHVkZV9maWxlX2N4eCAoImV4dC9oYXNoX21hcCIgSEFWRV9FWFRfSEFTSF9NQVApCisgY2hlY2tfaW5jbHVkZV9maWxlX2N4eCAoImV4dC9oYXNoX3NldCIgSEFWRV9FWFRfSEFTSF9TRVQpCitAQCAtMTA5LDEwICsxMDcsNyBAQAorICMgc25wcmludGYgYXMgYW4gaW5saW5lIGZ1bmN0aW9uCisgY2hlY2tfc3ltYm9sX2V4aXN0cyAoc25wcmludGYgc3RkaW8uaCBIQVZFX1NOUFJJTlRGKQorIAorLWNoZWNrX2xpYnJhcnlfZXhpc3RzICh1bndpbmQgZ2V0X3N0YXRpY19wcm9jX25hbWUgIiIgSEFWRV9MSUJfVU5XSU5EKQorLQorLWZpbmRfbGlicmFyeSAoVU5XSU5EX0xJQlJBUlkgTkFNRVMgdW53aW5kIERPQyAidW53aW5kIGxpYnJhcnkiKQorLW1hcmtfYXNfYWR2YW5jZWQgKFVOV0lORF9MSUJSQVJZKQorK2ZpbmRfcGFja2FnZShMaWJ1bndpbmQpCisgCisgY2hlY2tfY19zb3VyY2VfY29tcGlsZXMgKCIKKyAjaW5jbHVkZSA8c3RkbGliLmg+CitAQCAtMzc2LDkgKzM3MSw5IEBACisgCisgc2V0X3RhcmdldF9wcm9wZXJ0aWVzIChnbG9nIFBST1BFUlRJRVMgUE9TSVRJT05fSU5ERVBFTkRFTlRfQ09ERSBPTikKKyAKKy1pZiAoVU5XSU5EX0xJQlJBUlkpCistICB0YXJnZXRfbGlua19saWJyYXJpZXMgKGdsb2cgUFVCTElDICR7VU5XSU5EX0xJQlJBUll9KQorLWVuZGlmIChVTldJTkRfTElCUkFSWSkKKytpZiAoTGlidW53aW5kX0ZPVU5EKQorKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzIChnbG9nIFBVQkxJQyB1bndpbmQpCisrZW5kaWYgKExpYnVud2luZF9GT1VORCkKKyAKKyBpZiAoSEFWRV9QVEhSRUFEKQorICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzIChnbG9nIFBVQkxJQyAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorQEAgLTU3MSw2ICs1NjYsNyBAQAorIGluc3RhbGwgKEZJTEVTCisgICAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZ2xvZy1jb25maWcuY21ha2UKKyAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9nbG9nLWNvbmZpZy12ZXJzaW9uLmNtYWtlCisrICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vY21ha2UvRmluZExpYnVud2luZC5jbWFrZQorICAgREVTVElOQVRJT04gbGliL2NtYWtlL2dsb2cpCisgCisgaW5zdGFsbCAoRVhQT1JUIGdsb2ctdGFyZ2V0cyBOQU1FU1BBQ0UgZ2xvZzo6IERFU1RJTkFUSU9OIGxpYi9jbWFrZS9nbG9nKQorZGlmZiAtdU5yIGEvZ2xvZy1jb25maWcuY21ha2UuaW4gYi9nbG9nLWNvbmZpZy5jbWFrZS5pbgorLS0tIGEvZ2xvZy1jb25maWcuY21ha2UuaW4JMjAxOC0xMS0yMCAxNTo0OTowNy41NzYyNzg0MTcgKzAxMDAKKysrKyBiL2dsb2ctY29uZmlnLmNtYWtlLmluCTIwMTgtMTEtMjAgMTU6NTI6MzIuMzMwNDE4NDg5ICswMTAwCitAQCAtNCw0ICs0LDYgQEAKKyAKKyBAZ2ZsYWdzX0RFUEVOREVOQ1lACisgCisrZmluZF9kZXBlbmRlbmN5IChMaWJ1bndpbmQpCisrCisgaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2xvZy10YXJnZXRzLmNtYWtlIikKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZy8wMDAzLWluc3RhbGxhdGlvbi1wYXRoLWZpeC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZy8wMDAzLWluc3RhbGxhdGlvbi1wYXRoLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDFmNzBjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nLzAwMDMtaW5zdGFsbGF0aW9uLXBhdGgtZml4LnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK2RpZmYgLXVOciBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CTIwMTgtMTItMDUgMTI6NTU6NTkuNjMwNzkyMDU0ICswMTAwCisrKysgYi9DTWFrZUxpc3RzLnR4dAkyMDE4LTEyLTA1IDEzOjAwOjIyLjkyMjI2OTIwMCArMDEwMAorQEAgLTQwMywxMCArNDAzLDE1IEBACisgCisgc2V0X3RhcmdldF9wcm9wZXJ0aWVzIChnbG9nIFBST1BFUlRJRVMgUFVCTElDX0hFQURFUiAiJHtHTE9HX1BVQkxJQ19IfSIpCisgCisrc2V0IChfZ2xvZ19DTWFrZV9CSU5ESVIgJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisrc2V0IChfZ2xvZ19DTWFrZV9JTkNMVURFX0RJUiAke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0pCisrc2V0IChfZ2xvZ19DTWFrZV9MSUJESVIgJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0pCisrc2V0IChfZ2xvZ19DTWFrZV9JTlNUQUxMRElSICR7X2dsb2dfQ01ha2VfTElCRElSfS9jbWFrZS9nbG9nKQorKworIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzIChnbG9nIEJFRk9SRSBQVUJMSUMKKyAgICIkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0+IgorICAgIiQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zcmM+IgorLSAgIiQ8SU5TVEFMTF9JTlRFUkZBQ0U6aW5jbHVkZT4iCisrICAiJDxJTlNUQUxMX0lOVEVSRkFDRToke19nbG9nX0NNYWtlX0lOQ0xVREVfRElSfT4iCisgICBQUklWQVRFICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQorICAgUFJJVkFURSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vc3JjKQorIAorQEAgLTU0MywxMCArNTQ4LDEwIEBACisgCisgaW5zdGFsbCAoVEFSR0VUUyBnbG9nCisgICBFWFBPUlQgZ2xvZy10YXJnZXRzCistICBSVU5USU1FIERFU1RJTkFUSU9OIGJpbgorLSAgUFVCTElDX0hFQURFUiBERVNUSU5BVElPTiBpbmNsdWRlL2dsb2cKKy0gIExJQlJBUlkgREVTVElOQVRJT04gbGliCistICBBUkNISVZFIERFU1RJTkFUSU9OIGxpYikKKysgIFJVTlRJTUUgREVTVElOQVRJT04gJHtfZ2xvZ19DTWFrZV9CSU5ESVJ9CisrICBQVUJMSUNfSEVBREVSIERFU1RJTkFUSU9OICR7X2dsb2dfQ01ha2VfSU5DTFVERV9ESVJ9L2dsb2cKKysgIExJQlJBUlkgREVTVElOQVRJT04gJHtfZ2xvZ19DTWFrZV9MSUJESVJ9CisrICBBUkNISVZFIERFU1RJTkFUSU9OICR7X2dsb2dfQ01ha2VfTElCRElSfSkKKyAKKyBpZiAoZ2ZsYWdzX0ZPVU5EKQorICAgc2V0IChnZmxhZ3NfREVQRU5ERU5DWSAiZmluZF9kZXBlbmRlbmN5IChnZmxhZ3MgJHtnZmxhZ3NfVkVSU0lPTn0pIikKK0BAIC01NTQsNyArNTU5LDcgQEAKKyAKKyBjb25maWd1cmVfcGFja2FnZV9jb25maWdfZmlsZSAoZ2xvZy1jb25maWcuY21ha2UuaW4KKyAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9nbG9nLWNvbmZpZy5jbWFrZQorLSAgSU5TVEFMTF9ERVNUSU5BVElPTiBsaWIvY21ha2UvZ2xvZworKyAgSU5TVEFMTF9ERVNUSU5BVElPTiAke19nbG9nX0NNYWtlX0lOU1RBTExESVJ9CisgICBOT19DSEVDS19SRVFVSVJFRF9DT01QT05FTlRTX01BQ1JPKQorIAorIHdyaXRlX2Jhc2ljX3BhY2thZ2VfdmVyc2lvbl9maWxlIChnbG9nLWNvbmZpZy12ZXJzaW9uLmNtYWtlIFZFUlNJT04KK0BAIC01NjcsNiArNTcyLDcgQEAKKyAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9nbG9nLWNvbmZpZy5jbWFrZQorICAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2dsb2ctY29uZmlnLXZlcnNpb24uY21ha2UKKyAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFrZS9GaW5kTGlidW53aW5kLmNtYWtlCistICBERVNUSU5BVElPTiBsaWIvY21ha2UvZ2xvZykKKysgIERFU1RJTkFUSU9OICR7X2dsb2dfQ01ha2VfSU5TVEFMTERJUn0pCisgCistaW5zdGFsbCAoRVhQT1JUIGdsb2ctdGFyZ2V0cyBOQU1FU1BBQ0UgZ2xvZzo6IERFU1RJTkFUSU9OIGxpYi9jbWFrZS9nbG9nKQorK2luc3RhbGwgKEVYUE9SVCBnbG9nLXRhcmdldHMgTkFNRVNQQUNFIGdsb2c6OiBERVNUSU5BVElPTgorKyAgJHtfZ2xvZ19DTWFrZV9JTlNUQUxMRElSfSkKK2RpZmYgLXVOciBhL2dsb2ctY29uZmlnLmNtYWtlLmluIGIvZ2xvZy1jb25maWcuY21ha2UuaW4KKy0tLSBhL2dsb2ctY29uZmlnLmNtYWtlLmluCTIwMTgtMTItMDUgMTI6NTU6NTkuNjMwNzkyMDU0ICswMTAwCisrKysgYi9nbG9nLWNvbmZpZy5jbWFrZS5pbgkyMDE4LTEyLTA1IDEzOjA1OjE5LjU0NzE5Njg0MyArMDEwMAorQEAgLTQsNiArNCw3IEBACisgCisgQGdmbGFnc19ERVBFTkRFTkNZQAorIAorK2xpc3QgKEFQUEVORCBDTUFLRV9NT0RVTEVfUEFUSCAiJHtDTUFLRV9DVVJSRU5UX0xJU1RfRElSfSIpCisgZmluZF9kZXBlbmRlbmN5IChMaWJ1bndpbmQpCisgCisgaW5jbHVkZSAoIiR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vZ2xvZy10YXJnZXRzLmNtYWtlIikKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdjMTk3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2dfMC4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ2xvZyBsaWJyYXJ5IGltcGxlbWVudHMgYXBwbGljYXRpb24tbGV2ZWwgbG9nZ2luZy4gVGhpcyBcCi1saWJyYXJ5IHByb3ZpZGVzIGxvZ2dpbmcgQVBJcyBiYXNlZCBvbiBDKystc3R5bGUgc3RyZWFtcyBhbmQgdmFyaW91cyBoZWxwZXIgXAotbWFjcm9zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZ2xvZyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kYzlkYjM2MGUwYmJkNGU0NjY3MmYzZmQ5MWRkNmM0YiIKLQotREVQRU5EUyA9ICJsaWJ1bndpbmQiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9nbG9nLmdpdCBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LXVzZXItdG8tZGlzYWJsZS1nZmxhZ3MucGF0Y2ggXAotIgotCi1TUkNSRVYgPSAiZDhjYjQ3Zjc3ZDFjMzE3NzlmM2ZmODkwZTFhNTc0ODQ4Mzc3OGQ2YSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2ZsYWdzXSA9ICIsLS13aXRob3V0LWdmbGFncyxnZmxhZ3MsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGUwMWVmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nXzAuMy41LmJiCkBAIC0wLDAgKzEsMjYgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBnbG9nIGxpYnJhcnkgaW1wbGVtZW50cyBhcHBsaWNhdGlvbi1sZXZlbCBsb2dnaW5nLiBUaGlzIFwKK2xpYnJhcnkgcHJvdmlkZXMgbG9nZ2luZyBBUElzIGJhc2VkIG9uIEMrKy1zdHlsZSBzdHJlYW1zIGFuZCB2YXJpb3VzIGhlbHBlciBcCittYWNyb3MuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9nbG9nIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjOWRiMzYwZTBiYmQ0ZTQ2NjcyZjNmZDkxZGQ2YzRiIgorCitERVBFTkRTID0gImxpYnVud2luZCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dsb2cuZ2l0O2JyYW5jaD12MDM1IFwKKyAgICBmaWxlOi8vMDAwMS1SZXdvcmstQ01ha2UtZ2xvZy1WRVJTSU9OLW1hbmFnZW1lbnQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLUZpbmQtTGlidW53aW5kLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLWluc3RhbGxhdGlvbi1wYXRoLWZpeC5wYXRjaCBcCisiCisKK1NSQ1JFViA9ICJhNmExNjZkYjA2OTUyMGRiYmQ2NTNjOTdjMmU1YjEyZTA4YThiYjI2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJ1bndpbmQiCisKK0VYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliL0NWRS0yMDE4LTE3OTQyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYi9DVkUtMjAxOC0xNzk0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2U4MmIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYi9DVkUtMjAxOC0xNzk0Mi5wYXRjaApAQCAtMCwwICsxLDg4IEBACitGcm9tIGU5MTYwMGE3YWFlM2JhZmJlZmJlMTNhYmY3NzFlNjFiYWRkMTYyODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNiBPY3QgMjAxOCAxNDoyNjoxMSArMDgwMAorU3ViamVjdDogW1BBVENIXSB2YXNucHJpbnRmOiBGaXggaGVhcCBtZW1vcnkgb3ZlcnJ1biBidWcuCisKK1JlcG9ydGVkIGJ5IEJlbiBQZmFmZiA8YmxwQGNzLnN0YW5mb3JkLmVkdT4gaW4KKzxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nbnVsaWIvMjAxOC0wOS9tc2cwMDEwNy5odG1sPi4KKworKiBsaWIvdmFzbnByaW50Zi5jIChjb252ZXJ0X3RvX2RlY2ltYWwpOiBBbGxvY2F0ZSBvbmUgbW9yZSBieXRlIG9mCittZW1vcnkuCisqIHRlc3RzL3Rlc3QtdmFzbnByaW50Zi5jICh0ZXN0X2Z1bmN0aW9uKTogQWRkIGFub3RoZXIgdGVzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1nbnVsaWIuZ2l0OworYT1jb21taXRkaWZmO2g9Mjc4YjQxNzVjOWQ3ZGQ0N2MxYTMwNzE1NTRhYWMwMmFkZDNiM2MzNV0KKworQ1ZFOiBDVkUtMjAxOC0xNzk0MgorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICAgfCAgOCArKysrKysrKworIGxpYi92YXNucHJpbnRmLmMgICAgICAgIHwgIDQgKysrLQorIHRlc3RzL3Rlc3QtdmFzbnByaW50Zi5jIHwgMTkgKysrKysrKysrKysrKysrKysrLQorIDMgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZworaW5kZXggOTg2NDM1My4uNWZmNzZhMyAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDExIEBACisrMjAxOC0wOS0yMyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AY2xpc3Aub3JnPgorKyAJdmFzbnByaW50ZjogRml4IGhlYXAgbWVtb3J5IG92ZXJydW4gYnVnLgorKwlSZXBvcnRlZCBieSBCZW4gUGZhZmYgPGJscEBjcy5zdGFuZm9yZC5lZHU+IGluCisrCTxodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nbnVsaWIvMjAxOC0wOS9tc2cwMDEwNy5odG1sPi4KKysJKiBsaWIvdmFzbnByaW50Zi5jIChjb252ZXJ0X3RvX2RlY2ltYWwpOiBBbGxvY2F0ZSBvbmUgbW9yZSBieXRlIG9mCisrCW1lbW9yeS4KKysJKiB0ZXN0cy90ZXN0LXZhc25wcmludGYuYyAodGVzdF9mdW5jdGlvbik6IEFkZCBhbm90aGVyIHRlc3QuCisrCisgMjAxNy0wOC0yMSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisgCisgCXZjLWxpc3QtZmlsZXM6IHBvcnQgdG8gU29sYXJpcyAxMAorZGlmZiAtLWdpdCBhL2xpYi92YXNucHJpbnRmLmMgYi9saWIvdmFzbnByaW50Zi5jCitpbmRleCAyZTRlYjE5Li40NWRlNDlmIDEwMDY0NAorLS0tIGEvbGliL3Zhc25wcmludGYuYworKysrIGIvbGliL3Zhc25wcmludGYuYworQEAgLTg2MCw3ICs4NjAsOSBAQCBjb252ZXJ0X3RvX2RlY2ltYWwgKG1wbl90IGEsIHNpemVfdCBleHRyYV96ZXJvZXMpCisgICBzaXplX3QgYV9sZW4gPSBhLm5saW1iczsKKyAgIC8qIDAuMDMzNDUgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gbG9nKDIpLyg5KmxvZygxMCkpLiAgKi8KKyAgIHNpemVfdCBjX2xlbiA9IDkgKiAoKHNpemVfdCkoYV9sZW4gKiAoR01QX0xJTUJfQklUUyAqIDAuMDMzNDVmKSkgKyAxKTsKKy0gIGNoYXIgKmNfcHRyID0gKGNoYXIgKikgbWFsbG9jICh4c3VtIChjX2xlbiwgZXh0cmFfemVyb2VzKSk7CisrICAvKiBXZSBuZWVkIGV4dHJhX3plcm9lcyBieXRlcyBmb3IgemVyb2VzLCBmb2xsb3dlZCBieSBjX2xlbiBieXRlcyBmb3IgdGhlCisrICAgICBkaWdpdHMgb2YgYSwgZm9sbG93ZWQgYnkgMSBieXRlIGZvciB0aGUgdGVybWluYXRpbmcgTlVMLiAgKi8KKysgIGNoYXIgKmNfcHRyID0gKGNoYXIgKikgbWFsbG9jICh4c3VtICh4c3VtIChleHRyYV96ZXJvZXMsIGNfbGVuKSwgMSkpOworICAgaWYgKGNfcHRyICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBjaGFyICpkX3B0ciA9IGNfcHRyOworZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3QtdmFzbnByaW50Zi5jIGIvdGVzdHMvdGVzdC12YXNucHJpbnRmLmMKK2luZGV4IDJkZDg2OWYuLmZmNjhkNWMgMTAwNjQ0CistLS0gYS90ZXN0cy90ZXN0LXZhc25wcmludGYuYworKysrIGIvdGVzdHMvdGVzdC12YXNucHJpbnRmLmMKK0BAIC01Myw3ICs1MywyNCBAQCB0ZXN0X2Z1bmN0aW9uIChjaGFyICogKCpteV9hc25wcmludGYpIChjaGFyICosIHNpemVfdCAqLCBjb25zdCBjaGFyICosIC4uLikpCisgICAgICAgQVNTRVJUIChyZXN1bHQgIT0gTlVMTCk7CisgICAgICAgQVNTRVJUIChzdHJjbXAgKHJlc3VsdCwgIjEyMzQ1IikgPT0gMCk7CisgICAgICAgQVNTRVJUIChsZW5ndGggPT0gNSk7CistICAgICAgaWYgKHNpemUgPCA2KQorKyAgICAgIGlmIChzaXplIDwgNSArIDEpCisrICAgICAgICBBU1NFUlQgKHJlc3VsdCAhPSBidWYpOworKyAgICAgIEFTU0VSVCAobWVtY21wIChidWYgKyBzaXplLCAmIkRFQURCRUVGIltzaXplXSwgOCAtIHNpemUpID09IDApOworKyAgICAgIGlmIChyZXN1bHQgIT0gYnVmKQorKyAgICAgICAgZnJlZSAocmVzdWx0KTsKKysgICAgfQorKyAgIC8qIE5vdGU6IFRoaXMgdGVzdCBhc3N1bWVzIElFRUUgNzU0IHJlcHJlc2VudGF0aW9uIG9mICdkb3VibGUnIGZsb2F0cy4gICovCisrICBmb3IgKHNpemUgPSAwOyBzaXplIDw9IDg7IHNpemUrKykKKysgICAgeworKyAgICAgIHNpemVfdCBsZW5ndGg7CisrICAgICAgY2hhciAqcmVzdWx0OworKyAgICAgICBtZW1jcHkgKGJ1ZiwgIkRFQURCRUVGIiwgOCk7CisrICAgICAgbGVuZ3RoID0gc2l6ZTsKKysgICAgICByZXN1bHQgPSBteV9hc25wcmludGYgKGJ1ZiwgJmxlbmd0aCwgIiUyLjBmIiwgMS42MzE0MTU5MjY1MzU4OTc5ZSsxMjUpOworKyAgICAgIEFTU0VSVCAocmVzdWx0ICE9IE5VTEwpOworKyAgICAgIEFTU0VSVCAoc3RyY21wIChyZXN1bHQsICIxNjMxNDE1OTI2NTM1ODk3OTAyMTU3MjkzNTA5Mzk1Mjg0OTMwNTc1Mjk1OTg4OTk3MzQxNTE3NzI0NjgxODYyNjg0MjMyNTc3NzcwNjg1MzY2MTQ4Mzg2NzgxNjEwODM1MjA3NTY5NTIwNzYyNzMwOTQyMzY5NDQ5OTAyMDgiKSA9PSAwKTsKKysgICAgICBBU1NFUlQgKGxlbmd0aCA9PSAxMjYpOworKyAgICAgIGlmIChzaXplIDwgMTI2ICsgMSkKKyAgICAgICAgIEFTU0VSVCAocmVzdWx0ICE9IGJ1Zik7CisgICAgICAgQVNTRVJUIChtZW1jbXAgKGJ1ZiArIHNpemUsICYiREVBREJFRUYiW3NpemVdLCA4IC0gc2l6ZSkgPT0gMCk7CisgICAgICAgaWYgKHJlc3VsdCAhPSBidWYpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dudWxpYi9nbnVsaWJfMjAxNy0wOC0yMC4xOC5iYgppbmRleCBiNzJmZmE5Li5lMDQ4ODEwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbnVsaWIvZ251bGliXzIwMTctMDgtMjAuMTguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ251bGliL2dudWxpYl8yMDE3LTA4LTIwLjE4LmJiCkBAIC0xNCw2ICsxNCw3IEBACiBTUkNSRVYgPSAiYjIzMDAwZGUxZTQ3YzdkNTgwZTBlMjIwOTY2ZGQxZWU0MmE1ZTViYyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc3YuZ251Lm9yZy9nbnVsaWI7cHJvdG9jb2w9Z2l0IFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE3OTQyLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTIyLDYgKzIzLDggQEAKICAgICBjZCAke1N9CiAgICAgZ2l0IGNoZWNrb3V0IG1hc3RlcgogICAgIGdpdCBjbG9uZSAke1N9ICR7RH0vJHtkYXRhZGlyfS9nbnVsaWIKKyAgICBjZCAke0R9LyR7ZGF0YWRpcn0vZ251bGliCisgICAgZ2l0IGFtICR7V09SS0RJUn0vQ1ZFLTIwMTgtMTc5NDIucGF0Y2gKIH0KIAogZG9fcGF0Y2hbbm9leGVjXSA9ICIxIgpAQCAtMzIsNSArMzUsNiBAQAogZGVsdGFzayBwYWNrYWdlX3dyaXRlX2lwawogZGVsdGFzayBwYWNrYWdlX3dyaXRlX2RlYgogZGVsdGFzayBwYWNrYWdlX3dyaXRlX3JwbQorZGVsdGFzayBkb19kZXBsb3lfYXJjaGl2ZXMgCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbnRleHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMwMzM2Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gMjMwY2Q4NDQ4NjE0NWM1YmIxZDY5ZDRjOWE1NDRlMDBhZGJjYzliNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDEgSnVsIDIwMTcgMTM6MjE6MjEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIHVjb250ZXh0X3QgaW5zdGVhZCBvZiBzdHJ1Y3QgdWNvbnRleHQKLQotTmV3ZXIgZ2xpYmMgaGFzIGRyb3BwZWQgdGhlIHVjb250ZXh0IHRhZyBmcm9tIGV4cG9zaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zdGFja3RyYWNlX3Bvd2VycGMtbGludXgtaW5sLmggYi9zcmMvc3RhY2t0cmFjZV9wb3dlcnBjLWxpbnV4LWlubC5oCi1pbmRleCAzYjM4NDNiLi5hMzAxYTQ2IDEwMDY0NAotLS0tIGEvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotKysrIGIvc3JjL3N0YWNrdHJhY2VfcG93ZXJwYy1saW51eC1pbmwuaAotQEAgLTUzLDcgKzUzLDYgQEAKLSAjZWxpZiBkZWZpbmVkKEhBVkVfVUNPTlRFWFRfSCkKLSAjaW5jbHVkZSA8dWNvbnRleHQuaD4gIC8vIGZvciB1Y29udGV4dF90Ci0gI2VuZGlmCi0tdHlwZWRlZiB1Y29udGV4dCB1Y29udGV4dF90OwotIAotIC8vIFBvd2VyUEM2NCBMaXR0bGUgRW5kaWFuIGZvbGxvd3MgQkUgd3J0LiBiYWNrY2hhaW4sIGNvbmRpdGlvbiByZWdpc3RlciwKLSAvLyBhbmQgTFIgc2F2ZSBhcmVhLCBzbyBubyBuZWVkIHRvIGFkanVzdCB0aGUgcmVhZGluZyBzdHJ1Y3QuCi1AQCAtMjAyLDcgKzIwMSw3IEBAIHN0YXRpYyBpbnQgR0VUX1NUQUNLX1RSQUNFX09SX0ZSQU1FUyB7Ci0gICAgICAgICBzdHJ1Y3QgcnRfc2lnbmFsX2ZyYW1lXzMyIHsKLSAgICAgICAgICAgY2hhciBkdW1teVs2NCArIDE2XTsKLSAgICAgICAgICAgc2lnaW5mb190IGluZm87Ci0tICAgICAgICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgICAgICAgdWNvbnRleHRfdCB1YzsKLSAgICAgICAgICAgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgcmVzdCwgc2luY2UgSVAgdmFsdWUgaXMgYXQgJ3VjJyBmaWVsZC5BCi0gICAgICAgICB9ICpzaWdmcmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8cnRfc2lnbmFsX2ZyYW1lXzMyKj4oY3VycmVudCk7Ci0gICAgICAgICByZXN1bHRbbl0gPSAodm9pZCopIHNpZ2ZyYW1lLT51Yy51Y19tY29udGV4dC51Y19yZWdzLT5ncmVnc1tQVF9OSVBdOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCmluZGV4IDBhNzJmZjIuLjQ5ZDVjMjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDAzNGU3ZGEwOGMzZmJmZmNiYThjZjhkNGUyNGE3MWExNjU1OGRiNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDY5NjY3NGE4MDBjYjZkMjA3MDg5N2E1NjViOTJkN2U2MzAyMmE4ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxNTo1MToyOCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgd2l0aCBtdXNsIGxpYmMKQEAgLTEzLDcgKzEzLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjQyZmVhMy4uNzBiNDlhMyAxMDA2NDQKK2luZGV4IDQ5NzEwM2UuLmY5ZWZjM2UgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTE4OCw2ICsxODgsNyBAQCBBQ19IRUFERVJfU1REQwpAQCAtMjUsNyArMjUsNyBAQAogIEFDX0NIRUNLX0ZVTkNTKGdldGV1aWQpICAgICAgICAgIyBmb3IgdHVybmluZyBvZmYgc2VydmljZXMgd2hlbiBydW4gYXMgcm9vdAogIEFDX0NIRUNLX0ZVTkNTKGZvcmspICAgICAgICAgICAgIyBmb3IgdGhlIHB0aHJlYWRfYXRmb3JrIHNldHVwCiBkaWZmIC0tZ2l0IGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCBiL3NyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmgKLWluZGV4IDc5YWM0ZTMuLmQ0NDQ2MzUgMTAwNzU1CitpbmRleCAyZjYxMTZmLi4wNjA1ODU1IDEwMDc1NQogLS0tIGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogKysrIGIvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogQEAgLTQ2LDYgKzQ2LDEwIEBACkBAIC01NSw1ICs1NSw1IEBACiAtI2lmbmRlZiBfX1VDTElCQ19fCiArI2lmIEhBVkVfX19TQlJLCiAgLy8gbGliYydzIHZlcnNpb246Ci0gZXh0ZXJuICJDIiB2b2lkKiBfX3NicmsocHRyZGlmZl90IGluY3JlbWVudCk7CisgZXh0ZXJuICJDIiB2b2lkKiBfX3NicmsoaW50cHRyX3QgaW5jcmVtZW50KTsKICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1pbmNsdWRlLWZjbnRsLmgtZm9yLWxvZmZfdC1kZWZpbml0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzYzZTczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGExNmE3M2YwODE5ZDI2MjE5ZWU4M2NkOThlZWE4Mjc4NmQ3YzE3NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNiBKdWwgMjAxNyAxOToyODoxNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGZjbnRsLmggZm9yIGxvZmZfdCBkZWZpbml0aW9uCi0KLUZpeGVzCi1saW51eF9zeXNjYWxsX3N1cHBvcnQuaDoyNjQxOjI2OiBlcnJvcjogJ2xvZmZfdCcgaGFzIG5vdCBiZWVuIGRlY2xhcmVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHNyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzZS9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1pbmRleCA4NTM0N2EyLi43MDQzMWNhIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2UvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKLSsrKyBiL3NyYy9iYXNlL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1AQCAtMTYyLDYgKzE2Miw3IEBAIGV4dGVybiAiQyIgewotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8bGludXgvdW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNpZmRlZiBfX21pcHNfXwotIC8qIEluY2x1ZGUgZGVmaW5pdGlvbnMgb2YgdGhlIEFCSSBjdXJyZW50bHkgaW4gdXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNhYzZjNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi42LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIG11bHRpLXRocmVhZGVkIG1hbGxvYygpIGFuZCBuaWZ0eSBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2MjczMjc0MmM3M2RjNmM3ZmJlODYzMmYwNmMwNTlhIgotREVQRU5EUyArPSAibGlidW53aW5kIgotCi1TUkNSRVYgPSAiYmY4NDBkZWMwNDk1ZTE3ZjVjODQwM2U2OGUxMGI5ZDZiZjA1YzU1OSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29udGV4dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtZmNudGwuaC1mb3ItbG9mZl90LWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2dpZGVmLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIERpc2FibGUgdGh1bWIxCi0jIHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLSMge3N0YW5kYXJkIGlucHV0fTo0MzQ6IEVycm9yOiBsbyByZWdpc3RlciByZXF1aXJlZCAtLSBgbGRyIHBjLFtzcF0nCi0jIE1ha2VmaWxlOjQ1Mzg6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMvYmFzZS9saWJ0Y21hbGxvY19sYS1saW51eHRocmVhZHMubG8nIGZhaWxlZAotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZmNjNGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiRmFzdCwgbXVsdGktdGhyZWFkZWQgbWFsbG9jKCkgYW5kIG5pZnR5IHBlcmZvcm1hbmNlIGFuYWx5c2lzIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzYyNzMyNzQyYzczZGM2YzdmYmU4NjMyZjA2YzA1OWEiCitERVBFTkRTICs9ICJsaWJ1bndpbmQiCisKK1NSQ1JFViA9ICI5NjA4ZmEzYmNmODAyMGQzNWY1OWZiZjcwY2QzY2JlNGIwMTViOTcyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZ2lkZWYucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgT24gbWlwcywgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGVycm9yLgorIyAgIGRvX3BhZ2VfZmF1bHQoKTogc2VuZGluZyBTSUdTRUdWIHRvIGxzIGZvciBpbnZhbGlkIHJlYWQgYWNjZXNzIGZyb20gMDAwMDAwMDgKKyMgICBTZWdtZW50YXRpb24gZmF1bHQgKGNvcmUgZHVtcGVkKQorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNoX2xpYmMtZ2xpYmMgPSAibnVsbCIKKyMgRGlzYWJsZSB0aHVtYjEKKyMge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorIyB7c3RhbmRhcmQgaW5wdXR9OjQzNDogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZHIgcGMsW3NwXScKKyMgTWFrZWZpbGU6NDUzODogcmVjaXBlIGZvciB0YXJnZXQgJ3NyYy9iYXNlL2xpYnRjbWFsbG9jX2xhLWxpbnV4dGhyZWFkcy5sbycgZmFpbGVkCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgppbmRleCA1MWM0ZGQ2Li5kY2M5ZDY4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgpAQCAtOSw3ICs5LDcgQEAKIFBSID0gInIyIgogU1JDUkVWID0gIjFmZDE5NDE3YjhhNGRkOTk0NTM0N2U5OGRmYTk3ZTRjZmQ3OThkNzciCiAKLURFUEVORFMgPSAibmN1cnNlcyIKK0RFUEVORFMgPSAibmN1cnNlcyBiaXNvbi1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS90ZWxtaWNoL2dwbTtwcm90b2NvbD1naXQgXAogICAgICAgICAgICBmaWxlOi8vaW5pdCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncmFkbS9ncmFkbV8zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncmFkbS9ncmFkbV8zLjEuYmIKaW5kZXggMWE0MjYxYS4uYTdkMDYwNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3JhZG0vZ3JhZG1fMy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dyYWRtL2dyYWRtXzMuMS5iYgpAQCAtNDMsMTAgKzQzLDYgQEAKICAgICBybSAtcmYgJHtEfS9kZXYKIH0KIAotcGtnX3Bvc3RpbnN0XyR7UE59KCkgewotICAgICMgbWFrZSBzdXJlIHJ1bm5pbmcgb24gdGhlIHRhcmdldAotICAgIGlmIFsgeCIkRCIgIT0gIngiIF07IHRoZW4KLSAgICAgICAgZXhpdCAxCi0gICAgZmkKK3BrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSgpIHsKICAgICAvYmluL21rbm9kIC1tIDA2MjIgL2Rldi9ncnNlYyBjIDEgMTMKIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC41MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC41MS5iYgppbmRleCA4ODc1ODQ0Li4zNjUzMGQyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguNTEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjUxLmJiCkBAIC0yMiw3ICsyMiw3IEBACiAKIEVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiU09BUD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vc29hcGNwcDIiCiAKLURFUEVORFMgPSAib3BlbnNzbCB6bGliIGZsZXggYmlzb24iCitERVBFTkRTID0gIm9wZW5zc2wgemxpYiBmbGV4IGJpc29uIGJpc29uLW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ3NvYXAtbmF0aXZlIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8yLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h0b3AvaHRvcF8yLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1MDhmOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMi4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkludGVyYWN0aXZlIHByb2Nlc3Mgdmlld2VyIgotSE9NRVBBR0UgPSAiaHR0cDovL2hpc2hhbS5obS9odG9wIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzMTI2NTM1MzJlOGU2NjlmMzBlNWVjOGJkYzIzYmUzIgotCi1ERVBFTkRTID0gIm5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2hpc2hhbS5obS9odG9wL3JlbGVhc2VzLyR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImYyNjJiNjZhZDZjMTk0NzgyZjRkM2E4MDYyN2U4NGM4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyNjBiZTk5MGQyNmUyNWI2YjQ5ZmM5ZDk2ZGJjOTM1YWQ0NmU2MTA4M2MwYjdmNmRmNDEzZTUxM2JmODA3NDgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAicHJvYyBcCi0gICAgICAgICAgICAgICAgICAgY2dyb3VwIFwKLSAgICAgICAgICAgICAgICAgICB0YXNrc3RhdHMgXAotICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgXAotICAgICAgICAgICAgICAgICAgIGxpbnV4LWFmZmluaXR5IFwKLSAgICAgICAgICAgICAgICAgICBkZWxheWFjY3QiCi1QQUNLQUdFQ09ORklHW3Byb2NdID0gIi0tZW5hYmxlLXByb2MsLS1kaXNhYmxlLXByb2MiCi1QQUNLQUdFQ09ORklHW29wZW52el0gPSAiLS1lbmFibGUtb3BlbnZ6LC0tZGlzYWJsZS1vcGVudnoiCi1QQUNLQUdFQ09ORklHW2Nncm91cF0gPSAiLS1lbmFibGUtY2dyb3VwLC0tZGlzYWJsZS1jZ3JvdXAiCi1QQUNLQUdFQ09ORklHW3ZzZXJ2ZXJdID0gIi0tZW5hYmxlLXZzZXJ2ZXIsLS1kaXNhYmxlLXZzZXJ2ZXIiCi1QQUNLQUdFQ09ORklHW3Rhc2tzdGF0c10gPSAiLS1lbmFibGUtdGFza3N0YXRzLC0tZGlzYWJsZS10YXNrc3RhdHMiCi1QQUNLQUdFQ09ORklHW3VuaWNvZGVdID0gIi0tZW5hYmxlLXVuaWNvZGUsLS1kaXNhYmxlLXVuaWNvZGUiCi1QQUNLQUdFQ09ORklHW2xpbnV4LWFmZmluaXR5XSA9ICItLWVuYWJsZS1saW51eC1hZmZpbml0eSwtLWRpc2FibGUtbGludXgtYWZmaW5pdHkiCi1QQUNLQUdFQ09ORklHW2h3bG9jXSA9ICItLWVuYWJsZS1od2xvYywtLWRpc2FibGUtaHdsb2MsaHdsb2MiCi1QQUNLQUdFQ09ORklHW3NldHVpZF0gPSAiLS1lbmFibGUtc2V0dWlkLC0tZGlzYWJsZS1zZXR1aWQiCi1QQUNLQUdFQ09ORklHW2RlbGF5YWNjdF0gPSAiLS1lbmFibGUtZGVsYXlhY2N0LC0tZGlzYWJsZS1kZWxheWFjY3QsbGlibmwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBybSAtcmYgJHtTfS9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzIuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHRvcC9odG9wXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzg1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9odG9wL2h0b3BfMi4yLjAuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJJbnRlcmFjdGl2ZSBwcm9jZXNzIHZpZXdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9oaXNoYW0uaG0vaHRvcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzEyNjUzNTMyZThlNjY5ZjMwZTVlYzhiZGMyM2JlMyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitTUkNfVVJJID0gImh0dHA6Ly9oaXNoYW0uaG0vaHRvcC9yZWxlYXNlcy8ke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDgxNmI2YmVlZDMxZWRjNzViYWJjZmJmODYzZmZhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOWQ2ODI2ZjEwY2UzODg3OTUwZDcwOWI1M2VlMWQ4YzE4NDlhNzBmYTM4ZTkxZDU4OTZhZDhjYmM2YmEzYzU3IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gInByb2MgXAorICAgICAgICAgICAgICAgICAgIGNncm91cCBcCisgICAgICAgICAgICAgICAgICAgdGFza3N0YXRzIFwKKyAgICAgICAgICAgICAgICAgICB1bmljb2RlIFwKKyAgICAgICAgICAgICAgICAgICBsaW51eC1hZmZpbml0eSBcCisgICAgICAgICAgICAgICAgICAgZGVsYXlhY2N0IgorUEFDS0FHRUNPTkZJR1twcm9jXSA9ICItLWVuYWJsZS1wcm9jLC0tZGlzYWJsZS1wcm9jIgorUEFDS0FHRUNPTkZJR1tvcGVudnpdID0gIi0tZW5hYmxlLW9wZW52eiwtLWRpc2FibGUtb3BlbnZ6IgorUEFDS0FHRUNPTkZJR1tjZ3JvdXBdID0gIi0tZW5hYmxlLWNncm91cCwtLWRpc2FibGUtY2dyb3VwIgorUEFDS0FHRUNPTkZJR1t2c2VydmVyXSA9ICItLWVuYWJsZS12c2VydmVyLC0tZGlzYWJsZS12c2VydmVyIgorUEFDS0FHRUNPTkZJR1t0YXNrc3RhdHNdID0gIi0tZW5hYmxlLXRhc2tzdGF0cywtLWRpc2FibGUtdGFza3N0YXRzIgorUEFDS0FHRUNPTkZJR1t1bmljb2RlXSA9ICItLWVuYWJsZS11bmljb2RlLC0tZGlzYWJsZS11bmljb2RlIgorUEFDS0FHRUNPTkZJR1tsaW51eC1hZmZpbml0eV0gPSAiLS1lbmFibGUtbGludXgtYWZmaW5pdHksLS1kaXNhYmxlLWxpbnV4LWFmZmluaXR5IgorUEFDS0FHRUNPTkZJR1tod2xvY10gPSAiLS1lbmFibGUtaHdsb2MsLS1kaXNhYmxlLWh3bG9jLGh3bG9jIgorUEFDS0FHRUNPTkZJR1tzZXR1aWRdID0gIi0tZW5hYmxlLXNldHVpZCwtLWRpc2FibGUtc2V0dWlkIgorUEFDS0FHRUNPTkZJR1tkZWxheWFjY3RdID0gIi0tZW5hYmxlLWRlbGF5YWNjdCwtLWRpc2FibGUtZGVsYXlhY2N0LGxpYm5sIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgcm0gLXJmICR7U30vY29uZmlnLmgKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKaW5kZXggNjc5NjczYi4uOGU4ZGJmNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKQEAgLTUsOCArNSw4IEBACiBMSUNFTlNFID0gIkdQTC0yLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU1NjU0NzcxMWU4MjQ2OTkyYjk5OWVkZDk0NDVhNTciCiAKLVBWID0gIjAuMjk4K2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjkwMzBmYmQ2YWIxNTM4ZjRkNzdkM2NmMWUwYjQ2M2E3ZWMyNWI1YzQiCitQViA9ICIwLjMxNitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI4MDM4MTlhZWY4NjJkZWQyY2UwNzM3Y2QzY2Y2NDJjNjMzYjY4YzM1IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZjcmhvbmVrLyR7QlBOfS5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbWFnZW1hZ2ljay9pbWFnZW1hZ2lja183LjAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiCmluZGV4IDY2OTUzNGUuLjQ2Y2M3OGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ltYWdlbWFnaWNrL2ltYWdlbWFnaWNrXzcuMC43LmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJJbWFnZU1hZ2ljayIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRhZDVhOThmMTczZmQzZmE2OTU4YTFhNThjNjEzMWMxIgogIyBGSVhNRTogVGhlcmUgYXJlIG1hbnkgbW9yZSBjaGVja2VkIGxpYnJhcmllcy4gQWxsIHNob3VsZCBiZSBhZGRlZCBvciBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGdldCBjb25zaXN0ZW50IHJlc3VsdHMuCi1ERVBFTkRTID0gImxjbXMgYnppcDIganBlZyBsaWJwbmcgbGlicnN2ZyB0aWZmIHpsaWIgZmZ0dyBmcmVldHlwZSIKK0RFUEVORFMgPSAibGNtcyBiemlwMiBqcGVnIGxpYnBuZyB0aWZmIHpsaWIgZmZ0dyBmcmVldHlwZSIKIAogQkFTRV9QViA6PSAiJHtQVn0iCiBQViAuPSAiXzciCkBAIC0yNSw2ICsyNSw3IEBACiBQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6IgogUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLS13aXRoLW9wZW5qcDIsLS13aXRob3V0LW9wZW5qcDIsb3BlbmpwZWciCiBQQUNLQUdFQ09ORklHW3BhbmdvXSA9ICItLXdpdGgtcGFuZ28sLS13aXRob3V0LXBhbmdvLHBhbmdvIGNhaXJvIgorUEFDS0FHRUNPTkZJR1tyc3ZnXSA9ICItLXdpdGgtcnN2ZywtLXdpdGhvdXQtcnN2ZyxsaWJyc3ZnIgogUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgogUEFDS0FHRUNPTkZJR1t3bWZdID0gIi0td2l0aC13bWYsLS13aXRob3V0LXdtZixsaWJ3bWYiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4dCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGNvdi9sY292XzEuMTEuYmIKaW5kZXggMmY5YWMzMy4uNTZhMDE4YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGNvdi9sY292XzEuMTEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGNvdi9sY292XzEuMTEuYmIKQEAgLTE0LDYgKzE0LDMxIEBACiAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCiAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCiAgICAgcGVybC1tb2R1bGUtZGlnZXN0LXNoYSBcCisgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgIHBlcmwtbW9kdWxlLWN3ZCBcCisgICAgcGVybC1tb2R1bGUtZXJybm8gXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy11bml4IFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICBwZXJsLW1vZHVsZS1saXN0LXV0aWwgXAorICAgIHBlcmwtbW9kdWxlLW1ybyBcCisgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWQgXAorICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIFwKKyAgICBwZXJsLW1vZHVsZS1vdmVybG9hZC1udW1iZXJzIFwKKyAgICBwZXJsLW1vZHVsZS1wYXJlbnQgXAorICAgIHBlcmwtbW9kdWxlLXBvZC11c2FnZSBcCisgICAgcGVybC1tb2R1bGUtcG9zaXggXAorICAgIHBlcmwtbW9kdWxlLXJlIFwKKyAgICBwZXJsLW1vZHVsZS1zYWZlIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtdGVybS1jYXAgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgcGVybC1tb2R1bGUtdGllLWhhc2ggXAogIgogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2x0cC8ke0JQfS50YXIuZ3oiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9maWxlcy8wMDAxLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9maWxlcy8wMDAxLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1N2UzOWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvZmlsZXMvMDAwMS1yZW1vdmUtcHl0aG9uMi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAyZGRjOTdiMzA3OTI4MTdkMTYyZjUxZWMzODE4Mzc2YWVmYmYxODRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAzIE1heSAyMDE3IDAyOjA1OjMzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlbW92ZSBweXRob24yIHN1cHBvcnQKLQotV2UgdXNlIHB5dGhvbjMgcmF0aGVyIHRoYW4gcHl0aG9uMiBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9weXRob24vTWFrZWZpbGUuYW0gfCA1IC0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvcHl0aG9uL01ha2VmaWxlLmFtIGIvc3JjL3B5dGhvbi9NYWtlZmlsZS5hbQotaW5kZXggNTY3ZDBkNy4uOGQ5ZjQ0NiAxMDA2NDQKLS0tLSBhL3NyYy9weXRob24vTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9weXRob24vTWFrZWZpbGUuYW0KLUBAIC0xLDggKzEsMyBAQAotLXB5bGliZGlyID0gJChzaGVsbCBweXRob24gLWMgImltcG9ydCBkaXN0dXRpbHMuc3lzY29uZmlnOyBwcmludChkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25fbGliKDEsMCxwcmVmaXg9JyR7ZXhlY19wcmVmaXh9JykpIikKLS0KLS1weWJ5dGVzaXplZGlyICAgICA9ICQocHlsaWJkaXIpL2J5dGVzaXplCi0tZGlzdF9weWJ5dGVzaXplX0RBVEEgPSBieXRlc2l6ZS5weSBfX2luaXRfXy5weQotLQotIGlmIFdJVEhfUFlUSE9OMwotIHB5M2xpYmRpciA9ICQoc2hlbGwgcHl0aG9uMyAtYyAiaW1wb3J0IGRpc3R1dGlscy5zeXNjb25maWc7IHByaW50KGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIoMSwwLHByZWZpeD0nJHtleGVjX3ByZWZpeH0nKSkiKQotIHB5M2J5dGVzaXplZGlyICAgID0gJChweTNsaWJkaXIpL2J5dGVzaXplCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzAuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTAzMDIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhIHRpbnkgbGlicmFyeSB0aGF0IHdvdWxkIFwKLWZhY2lsaXRhdGUgdGhlIGNvbW1vbiBvcGVyYXRpb25zIHdpdGggc2l6ZXMgaW4gYnl0ZXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplIgotTElDRU5TRSA9ICJMR1BMdjIrIgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1N9IgotCi1TUkNSRVYgPSAiMzY5MTI3YzBlZGJiYTdkMWE0ZTJlMDI0ODYzNzVkZDlkMzc5NTI0ZiIKLVBWID0gIjAuMTArZ2l0JHtTUkNQVn0iCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYnl0ZXNpemU7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1weXRob24yLXN1cHBvcnQucGF0Y2ggXAotIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKLQotREVQRU5EUyArPSAiIFwKLSAgICBsaWJwY3JlIFwKLSAgICBnbXAgXAotICAgIG1wZnIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnl0ZXNpemUiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW2RvY10gPSAiLS13aXRoLWd0ay1kb2MsIC0td2l0aG91dC1ndGstZG9jLCBndGstZG9jLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gInB5M2xpYmRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8xLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FmODRkZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzEuMy5iYgpAQCAtMCwwICsxLDM0IEBACitERVNDUklQVElPTiA9ICJUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhIHRpbnkgbGlicmFyeSB0aGF0IHdvdWxkIFwKK2ZhY2lsaXRhdGUgdGhlIGNvbW1vbiBvcGVyYXRpb25zIHdpdGggc2l6ZXMgaW4gYnl0ZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplIgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9saWIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiYjBkY2Y2ZjQ1N2Q3MDAxMjdiNDNjMGUwYTE5ODI1M2MyNjZiNzhhZSIKK1BWID0gIjEuMytnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZTticmFuY2g9bWFzdGVyIFwKKyIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgKz0gIiBcCisgICAgbGlicGNyZSBcCisgICAgZ21wIFwKKyAgICBtcGZyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2J5dGVzaXplIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbjMsIC0td2l0aG91dC1weXRob24zLCxweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICItLXdpdGgtcHl0aG9uMiwgLS13aXRob3V0LXB5dGhvbjIsLHB5dGhvbjIiCitQQUNLQUdFQ09ORklHW2RvY10gPSAiLS13aXRoLWd0ay1kb2MsIC0td2l0aG91dC1ndGstZG9jLCBndGstZG9jLW5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gInB5M2xpYmRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlaWdlbi9saWJlaWdlbl8zLjMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzNiMzJlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRWlnZW4gaXMgYSBDKysgdGVtcGxhdGUgbGlicmFyeSBmb3IgbGluZWFyIGFsZ2VicmE6IG1hdHJpY2VzLCB2ZWN0b3JzLCBudW1lcmljYWwgc29sdmVycywgYW5kIHJlbGF0ZWQgYWxnb3JpdGhtcy4iCi1BVVRIT1IgPSAiQmVub8OudCBKYWNvYiBhbmQgR2HDq2wgR3Vlbm5lYmF1ZCBhbmQgb3RoZXJzIgotSE9NRVBBR0UgPSAiaHR0cDovL2VpZ2VuLnR1eGZhbWlseS5vcmcvIgotTElDRU5TRSA9ICJNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5NUEwyO21kNT04MTVjYTU5OWM5ZGYyNDdhMGM3ZjYxOWJhYjEyM2RhZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vYml0YnVja2V0Lm9yZy9laWdlbi9laWdlbi9nZXQvJHtQVn0udGFyLmJ6Mjtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiYTdhYWI5Zjc1ODI0OWI4NmM5MzIyMWFkNDE3ZmJlMTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQyNTRiZWIwYmFmYzY5NWQwZjYyYWUxYTIyMmZmODViNTJkYmFhM2ExNmY3NmU3ODFkY2UyMmQwZDIwYTRhNiIKLQotUyA9ICIke1dPUktESVJ9L2VpZ2VuLWVpZ2VuLTVhMDE1NmU0MGZlYiIKLQotaW5oZXJpdCBjbWFrZQotCi1GSUxFU18ke1BOfSA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L2VpZ2VuMy9jbWFrZSAke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMgJHtkYXRhZGlyfS9wa2djb25maWciCi0KLSMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZWlnZW4vbGliZWlnZW5fMy4zLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA3OGU1MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmVpZ2VuL2xpYmVpZ2VuXzMuMy41LmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIkVpZ2VuIGlzIGEgQysrIHRlbXBsYXRlIGxpYnJhcnkgZm9yIGxpbmVhciBhbGdlYnJhOiBtYXRyaWNlcywgdmVjdG9ycywgbnVtZXJpY2FsIHNvbHZlcnMsIGFuZCByZWxhdGVkIGFsZ29yaXRobXMuIgorQVVUSE9SID0gIkJlbm/DrnQgSmFjb2IgYW5kIEdhw6tsIEd1ZW5uZWJhdWQgYW5kIG90aGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9laWdlbi50dXhmYW1pbHkub3JnLyIKK0xJQ0VOU0UgPSAiTVBMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTVBMMjttZDU9ODE1Y2E1OTljOWRmMjQ3YTBjN2Y2MTliYWIxMjNkYWQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2JpdGJ1Y2tldC5vcmcvZWlnZW4vZWlnZW4vZ2V0LyR7UFZ9LnRhci5iejI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImU4MzU0OWE3OWQxYjcyMWRhMGY4ODk5YWIzNGVkZjk1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczNTJiZmYzZWEyOTllNGM3ZDdmYmUzMWM1MDRmOGViOTE0OWQ3ZTY4NWRlYzVhMTJmYmFhMjYzNzlmNjAzZTIiCisKK1MgPSAiJHtXT1JLRElSfS9laWdlbi1laWdlbi1iM2YzZDQ5NTAwMzAiCisKK2luaGVyaXQgY21ha2UKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtkYXRhZGlyfS9laWdlbjMvY21ha2UgJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzICR7ZGF0YWRpcn0vcGtnY29uZmlnIgorCisjICR7UE59IGlzIGVtcHR5IHNvIHdlIG5lZWQgdG8gdHdlYWsgLWRldiBhbmQgLWRiZyBwYWNrYWdlIGRlcGVuZGVuY2llcworUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlc3RyL2xpYmVzdHJfMC4xLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXN0ci9saWJlc3RyXzAuMS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJmZjRmMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlc3RyL2xpYmVzdHJfMC4xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJzb21lIGVzc2VudGlhbHMgZm9yIHN0cmluZyBoYW5kbGluZyAoYW5kIGEgYml0IG1vcmUpIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmVzdHIuYWRpc2Nvbi5jb20vIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlkNmM5OTM0ODZjMTgyNjJhZmJhNGNhNWJjYjg5NGQwIgotCi1TUkNfVVJJID0gImh0dHA6Ly9saWJlc3RyLmFkaXNjb24uY29tL2ZpbGVzL2Rvd25sb2FkLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImY0YzkxNjVhMjM1ODdlNzdmN2VmZTY1ZDY3NmQ1ZThlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkNjU1ZTEyNmU3NTBlZGQxODU0NGI4OGViMTU2OGQyMDBhNDI0YTBjMjNmNjY1ZWIxNGJiZWNlMDdhYzcwM2MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJlc3RyL2xpYmVzdHJfMC4xLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXN0ci9saWJlc3RyXzAuMS4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjYxZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZXN0ci9saWJlc3RyXzAuMS4xMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gInNvbWUgZXNzZW50aWFscyBmb3Igc3RyaW5nIGhhbmRsaW5nIChhbmQgYSBiaXQgbW9yZSkiCitIT01FUEFHRSA9ICJodHRwOi8vbGliZXN0ci5hZGlzY29uLmNvbS8iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWQ2Yzk5MzQ4NmMxODI2MmFmYmE0Y2E1YmNiODk0ZDAiCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpYmVzdHIuYWRpc2Nvbi5jb20vZmlsZXMvZG93bmxvYWQvJHtCUH0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWYyNWEyMzMyNzUwZDRiZmFjZmIzMTQyMzVmZWRmZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY2MzJiMjc4NWZmNGEyMzFkY2YyNDFlZWIwZGNiNWZjMGM3ZDRkYThlZTQ5Y2Y1Njg3NzIyY2RiZThiMjAyNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJlc3RyLmFkaXNjb24uY29tL2Rvd25sb2FkLyIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmZ0ZGkvbGliZnRkaV8xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJmdGRpL2xpYmZ0ZGlfMS40LmJiCmluZGV4IDZiZWExNjUuLjRmYzZlYjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmZ0ZGkvbGliZnRkaV8xLjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZnRkaS9saWJmdGRpXzEuNC5iYgpAQCAtMyw3ICszLDYgQEAKIGluY2x1ZGluZyB0aGUgcG9wdWxhciBiaXRiYW5nIG1vZGUuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pbnRyYTJuZXQuY29tL2VuL2RldmVsb3Blci9saWJmdGRpLyIKIFNFQ1RJT04gPSAibGlicyIKLQogTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTT0gIlwKICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKQEAgLTEzLDE5ICsxMiwxNiBAQAogREVQRU5EUyA9ICJsaWJ1c2IxIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuaW50cmEybmV0LmNvbS9lbi9kZXZlbG9wZXIvJHtCUE59L2Rvd25sb2FkLyR7QlBOfTEtJHtQVn0udGFyLmJ6MiIKLQogU1JDX1VSSVttZDVzdW1dID0gIjBjMDlmYjJiYjE5YTU3YzgzOWZhNjg0NWM2Yzc4MGEyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjMzZmYjQ5MDgwZjgzNDY5MGMyNDAwODMyOGE1ZWY0MmQzY2Y1ODRlZjQwNjBmM2EzNWFhNDY4MWNiMzFiNzQiCiAKIFMgPSAiJHtXT1JLRElSfS8ke0JQTn0xLSR7UFZ9IgogCitpbmhlcml0IGNtYWtlIGJpbmNvbmZpZyBwa2djb25maWcKKwogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbY3BwLXdyYXBwZXJdID0gIi1ERlRESV9CVUlMRF9DUFA9b24gLURGVERJUFA9b24sLURGVERJX0JVSUxEX0NQUD1vZmYgLURGVERJUFA9b2ZmLGJvb3N0IgogCi1pbmhlcml0IGNtYWtlIGJpbmNvbmZpZyBwa2djb25maWcKLQogRVhUUkFfT0VDTUFLRSA9ICItRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IgogCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJnaXQyL2xpYmdpdDJfMC4yNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ2l0Mi9saWJnaXQyXzAuMjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY1ODBmOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJnaXQyL2xpYmdpdDJfMC4yNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJ0aGUgR2l0IGxpbmthYmxlIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vbGliZ2l0Mi5naXRodWIuY29tLyIKLUxJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLUdDQy1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNDE5N2E0NzlmNjM3YmViOWUwOWU1Njg5M2Y0OGJjMiIKLQotREVQRU5EUyA9ICJjdXJsIG9wZW5zc2wgemxpYiBsaWJzc2gyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2l0Mi9saWJnaXQyLmdpdDticmFuY2g9bWFpbnQvdjAuMjQiCi1TUkNSRVYgPSAiNGNmMWVjN2NmZjI4ZGE4ODM4YTJmMGE5ZmIzMzBlMzEyZWEzZjk2MyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1FWFRSQV9PRUNNQUtFID0gIlwKLSAgICAgICAgLURUSFJFQURTQUZFPU9OIFwKLSAgICAgICAgLURCVUlMRF9DTEFSPU9GRiBcCi0gICAgICAgIC1EU0hBMV9UWVBFPSJidWlsdGluIiBcCi0gICAgICAgIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyBcCi0gICAgICAgIC1EQlVJTERfRVhBTVBMRVM9T0ZGIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJnaXQyL2xpYmdpdDJfMC4yNy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ2l0Mi9saWJnaXQyXzAuMjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Y3Njg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ2l0Mi9saWJnaXQyXzAuMjcuNC5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gInRoZSBHaXQgbGlua2FibGUgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJnaXQyLmdpdGh1Yi5jb20vIgorTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNmMmNkNWQzY2NjZDcxZDYyMDY2YmE2MTk2MTQ1OTJiIgorCitERVBFTkRTID0gImN1cmwgb3BlbnNzbCB6bGliIGxpYnNzaDIgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2l0Mi9saWJnaXQyLmdpdDticmFuY2g9bWFpbnQvdjAuMjciCisjdjAuMjcuNQorU1JDUkVWID0gIjhlMGIxNzI5ODFhMDQ2ZDE5ZjFkOWVmYTVhY2Q2MTg2YmNjYmQzY2UiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICJcCisgICAgICAgIC1EVEhSRUFEU0FGRT1PTiBcCisgICAgICAgIC1EQlVJTERfQ0xBUj1PRkYgXAorICAgICAgICAtRFNIQTFfVFlQRT0iYnVpbHRpbiIgXAorICAgICAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsV2l0aERlYkluZm8gXAorICAgICAgICAtREJVSUxEX0VYQU1QTEVTPU9GRiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE0OTlmZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBsaWJncGlvZC5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjJjYTBjM2ViMTdkNjllMzY3YjZmNmExMDljYTg2ZTQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3MjkyNDE5NTM2N2Y1ZmIwNDVjMDIzZDY1MzQwYzRiN2RmYzg3NjQ0OTk1MTZiZTQ0NjU1Mzg2NTIwOGRlZGMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAyODliOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuMi5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIGxpYmdwaW9kLmluYworCitERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjM0YTk5NzJmMmY0ZTljMzJmYTk0MDMwMTMwMWIwMDdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2YjkwNzljOTMzZjdjODUyNDgxNTQzNzkzN2RkYTZiNzk1YTE2MTQxYmNhMjAyYTllZWM3MGJhNTg0NGI1YmEiCisKK1BBQ0tBR0VDT05GSUdbY3h4XSA9ICItLWVuYWJsZS1iaW5kaW5ncy1jeHgsLS1kaXNhYmxlLWJpbmRpbmdzLWN4eCIKKworUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLWVuYWJsZS1iaW5kaW5ncy1weXRob24sLS1kaXNhYmxlLWJpbmRpbmdzLXB5dGhvbixweXRob24zLHB5dGhvbjMtY29yZSIKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorUlJFQ09NTUVORFNfUFlUSE9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnJHtQTn0tcHl0aG9uJywgJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7UlJFQ09NTUVORFNfUFlUSE9OfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKaW5kZXggYmEzODBlZC4uZmE2ZjRjMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaWlvL2xpYmlpb19naXQuYmIKQEAgLTI0LDEwICsyNCwxMSBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctRFdJVEhfU1lTVEVNRD1PTiAtRFNZU1RFTURfVU5JVF9JTlNUQUxMX0RJUj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9JywgJycsIGQpfSBcCiAiCiAKLVBBQ0tBR0VDT05GSUcgPz89ICJVU0JfQkFDS0VORCBORVRXT1JLX0JBQ0tFTkQiCitQQUNLQUdFQ09ORklHID8/PSAiVVNCX0JBQ0tFTkQgTkVUV09SS19CQUNLRU5EIFBZVEhPTl9CSU5ESU5HUyIKIAogUEFDS0FHRUNPTkZJR1tVU0JfQkFDS0VORF0gPSAiLURXSVRIX1VTQl9CQUNLRU5EPU9OLC1EV0lUSF9VU0JfQkFDS0VORD1PRkYsbGlidXNiMSxsaWJ4bWwyIgogUEFDS0FHRUNPTkZJR1tORVRXT1JLX0JBQ0tFTkRdID0gIi1EV0lUSF9ORVRXT1JLX0JBQ0tFTkQ9T04sLURXSVRIX05FVFdPUktfQkFDS0VORD1PRkYsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbUFlUSE9OX0JJTkRJTkdTXSA9ICIsLHB5dGhvbiIKIAogUEFDS0FHRVMgPSsgIiR7UE59LWlpb2QgJHtQTn0tdGVzdHMgJHtQTn0tcHl0aG9uIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkzMGEyNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjU1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBDIGxpYnJhcnkgdGhhdCBpcyBzdXBwb3NlZCB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIGFuIEhUVFAgc2VydmVyIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJtaWNyb2h0dHBkLyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTMzMTE4NmY0ZjgwZGI3ZGEwZTcyNGJkZDY1NTRlZTUiCi1TRUNUSU9OID0gIm5ldCIKLURFUEVORFMgPSAibGliZ2NyeXB0IGdudXRscyBmaWxlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ251Lm9yZy9nbnUvbGlibWljcm9odHRwZC8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjFjMjBmODRhOGI5Y2Y2OTJkZDUwYjU1OGIzNTcxYTNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjMWNhYjhkYzlmMjU4OGJkMzA3NmEyOGY3N2E3ZjhkZTk1NjBjYmYyZDgwZTUzZjlhODY5NmFkYTgwZWQwZjgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUNGTEFHUyArPSAiLXB0aHJlYWQgLURfUkVFTlRSQU5UIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdGF0aWMgLS13aXRoLWdudXRscz0ke1NUQUdJTkdfTElCRElSfS8uLi8iCi0KLVBBQ0tBR0VDT05GSUcgPz0gImN1cmwiCi1QQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsYXJnZWZpbGUnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlLCwiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwiCi0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIHNlZCAtaSBzOi1MJHtTVEFHSU5HX0xJQkRJUn06OmcgbGlibWljcm9odHRwZC5wYwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS41OS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ0YzY2YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNTkuYmIKQEAgLTAsMCArMSwyOCBAQAorREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBDIGxpYnJhcnkgdGhhdCBpcyBzdXBwb3NlZCB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIGFuIEhUVFAgc2VydmVyIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJtaWNyb2h0dHBkLyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTMzMTE4NmY0ZjgwZGI3ZGEwZTcyNGJkZDY1NTRlZTUiCitTRUNUSU9OID0gIm5ldCIKK0RFUEVORFMgPSAiZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2xpYm1pY3JvaHR0cGQvJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YWI1MTIzNTM1NTQ5MTk1YWZmMTllOTFiNGU0OWY0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjljY2Q3ZDBiMTFiMGUxNzlmMWY1OGRjMmNhYTNlMGM2MmM4NjA5ZTFlMWRjN2RjYWFkZjk0MWI2N2Q5MjNjIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgZ2V0dGV4dAorCitDRkxBR1MgKz0gIi1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgorCitQQUNLQUdFQ09ORklHID89ICJjdXJsIGh0dHBzIgorUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgorUEFDS0FHRUNPTkZJR1todHRwc10gPSAiLS1lbmFibGUtaHR0cHMsLS1kaXNhYmxlLWh0dHBzLGxpYmdjcnlwdCBnbnV0bHMsIgorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKyAgICBzZWQgLWkgczotTCR7U1RBR0lOR19MSUJESVJ9OjpnIGxpYm1pY3JvaHR0cGQucGMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm14bWwvbGlibXhtbF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJteG1sL2xpYm14bWxfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MmZlODEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJteG1sL2xpYm14bWxfZ2l0LmJiCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIlRpbnkgWE1MIExpYnJhcnkiCitMSUNFTlNFID0gIk1pbmktWE1MLUxpY2Vuc2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmJhMzg2MDZkNjNiYjA0MmM1ZDhjZmVlMTgyZTEyMCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm1zd2VldC5vcmcvbXhtbC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9taWNoYWVscnN3ZWV0L214bWwvaXNzdWVzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWljaGFlbHJzd2VldC9teG1sLmdpdCIKK1NSQ1JFViA9ICJiYTNjY2E4MmUxNWE4OGE5Y2M2YWZiNjBmMDU5Mjg4YTk5YWZjNzAzIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK1BWID0gIjIuMTIrZ2l0JHtTUkNQVn0iCisKK0NPTkZJR1VSRU9QVFMgPSAiIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1zYmluZGlyPSR7c2JpbmRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1saWJleGVjZGlyPSR7bGliZXhlY2Rpcn0gXAorICAgICAgICAgICAgICAgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1zaGFyZWRzdGF0ZWRpcj0ke3NoYXJlZHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXI9JHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1vbGRpbmNsdWRlZGlyPSR7b2xkaW5jbHVkZWRpcn0gXAorICAgICAgICAgICAgICAgICAgLS1pbmZvZGlyPSR7aW5mb2Rpcn0gXAorICAgICAgICAgICAgICAgICAgLS1tYW5kaXI9JHttYW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC0taG9zdD0ke1RBUkdFVF9TWVN9IFwKKyAgICAgICAgICAgICAgICAgIC0tYnVpbGQ9JHtCVUlMRF9TWVN9IFwKKyAgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorICAgICAgICAgICAgICAgICIKKworZG9fY29uZmlndXJlKCkgeworICAgIC4vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30gLS1lbmFibGUtc2hhcmVkCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIGV4cG9ydCBEU1RST09UPSR7RH0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKK30KKworUEFDS0FHRVMgKz0gIiAke1BOfS1iaW4gIgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9LyoiCitGSUxFU18ke1BOfS1iaW4gPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvYXV0aC9saWJvYXV0aC8wMDAxLVN1cHBvcnQtT3BlblNTTC0xLjEuMC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9hdXRoL2xpYm9hdXRoLzAwMDEtU3VwcG9ydC1PcGVuU1NMLTEuMS4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTFlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJvYXV0aC9saWJvYXV0aC8wMDAxLVN1cHBvcnQtT3BlblNTTC0xLjEuMC5wYXRjaApAQCAtMCwwICsxLDE1MSBAQAorRnJvbSBjMTRkOWJmNzE3NTNhMzhkZjU3Y2M2NTM4YjIyZWQzODlkMmMyY2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBTZXAgMjAxOCAxNzoxODo1MSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IE9wZW5TU0wgMS4xLjAKKworVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20veDQyL2xpYm9hdXRoL2lzc3Vlcy85CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vZ2l0aHViLmNvbS94NDIvbGlib2F1dGgvaXNzdWVzLzldCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2hhc2guYyB8IDY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9oYXNoLmMgYi9zcmMvaGFzaC5jCitpbmRleCAxN2ZmNWM4Li5lMTI4ODI2IDEwMDY0NAorLS0tIGEvc3JjL2hhc2guYworKysrIGIvc3JjL2hhc2guYworQEAgLTM2Miw2ICszNjIsMTEgQEAgbG9vc2VyOgorICNpbmNsdWRlICJvYXV0aC5oIiAvLyBiYXNlNjQgZW5jb2RlIGZuJ3MuCisgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorIAorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMAorKyNkZWZpbmUgRVZQX01EX0NUWF9uZXcgRVZQX01EX0NUWF9jcmVhdGUKKysjZGVmaW5lIEVWUF9NRF9DVFhfZnJlZSBFVlBfTURfQ1RYX2Rlc3Ryb3kKKysjZW5kaWYKKysKKyBjaGFyICpvYXV0aF9zaWduX2htYWNfc2hhMSAoY29uc3QgY2hhciAqbSwgY29uc3QgY2hhciAqaykgeworICAgcmV0dXJuKG9hdXRoX3NpZ25faG1hY19zaGExX3JhdyAobSwgc3RybGVuKG0pLCBrLCBzdHJsZW4oaykpKTsKKyB9CitAQCAtMzg2LDcgKzM5MSw3IEBAIGNoYXIgKm9hdXRoX3NpZ25fcnNhX3NoYTEgKGNvbnN0IGNoYXIgKm0sIGNvbnN0IGNoYXIgKmspIHsKKyAgIHVuc2lnbmVkIGNoYXIgKnNpZyA9IE5VTEw7CisgICB1bnNpZ25lZCBjaGFyICpwYXNzcGhyYXNlID0gTlVMTDsKKyAgIHVuc2lnbmVkIGludCBsZW49MDsKKy0gIEVWUF9NRF9DVFggbWRfY3R4OworKyAgRVZQX01EX0NUWCAqbWRfY3R4OworIAorICAgRVZQX1BLRVkgKnBrZXk7CisgICBCSU8gKmluOworQEAgLTM5OSwyNCArNDA0LDMxIEBAIGNoYXIgKm9hdXRoX3NpZ25fcnNhX3NoYTEgKGNvbnN0IGNoYXIgKm0sIGNvbnN0IGNoYXIgKmspIHsKKyAgICAgcmV0dXJuIHhzdHJkdXAoImxpYm9hdXRoL09wZW5TU0w6IGNhbiBub3QgcmVhZCBwcml2YXRlIGtleSIpOworICAgfQorIAorKwltZF9jdHggPSBFVlBfTURfQ1RYX25ldygpOworKwlpZiAobWRfY3R4ID09IE5VTEwpIHsKKysJCXJldHVybiB4c3RyZHVwKCJsaWJvYXV0aC9PcGVuU1NMOiBmYWlsZWQgdG8gYWxsb2NhdGUgRVZQX01EX0NUWCIpOworKwl9CisrCisgICBsZW4gPSBFVlBfUEtFWV9zaXplKHBrZXkpOworICAgc2lnID0gKHVuc2lnbmVkIGNoYXIqKXhtYWxsb2MoKGxlbisxKSpzaXplb2YoY2hhcikpOworIAorLSAgRVZQX1NpZ25Jbml0KCZtZF9jdHgsIEVWUF9zaGExKCkpOworLSAgRVZQX1NpZ25VcGRhdGUoJm1kX2N0eCwgbSwgc3RybGVuKG0pKTsKKy0gIGlmIChFVlBfU2lnbkZpbmFsICgmbWRfY3R4LCBzaWcsICZsZW4sIHBrZXkpKSB7CisrCUVWUF9TaWduSW5pdChtZF9jdHgsIEVWUF9zaGExKCkpOworKwlFVlBfU2lnblVwZGF0ZShtZF9jdHgsIG0sIHN0cmxlbihtKSk7CisrCWlmIChFVlBfU2lnbkZpbmFsIChtZF9jdHgsIHNpZywgJmxlbiwgcGtleSkpIHsKKyAgICAgY2hhciAqdG1wOworICAgICBzaWdbbGVuXSA9ICdcMCc7CisgICAgIHRtcCA9IG9hdXRoX2VuY29kZV9iYXNlNjQobGVuLHNpZyk7CisgICAgIE9QRU5TU0xfZnJlZShzaWcpOworICAgICBFVlBfUEtFWV9mcmVlKHBrZXkpOworKyAgICBFVlBfTURfQ1RYX2ZyZWUobWRfY3R4KTsKKyAgICAgcmV0dXJuIHRtcDsKKyAgIH0KKysgIEVWUF9NRF9DVFhfZnJlZShtZF9jdHgpOworICAgcmV0dXJuIHhzdHJkdXAoImxpYm9hdXRoL09wZW5TU0w6IHJzYS1zaGExIHNpZ25pbmcgZmFpbGVkIik7CisgfQorIAorIGludCBvYXV0aF92ZXJpZnlfcnNhX3NoYTEgKGNvbnN0IGNoYXIgKm0sIGNvbnN0IGNoYXIgKmMsIGNvbnN0IGNoYXIgKnMpIHsKKy0gIEVWUF9NRF9DVFggbWRfY3R4OworKyAgRVZQX01EX0NUWCAqbWRfY3R4OworICAgRVZQX1BLRVkgKnBrZXk7CisgICBCSU8gKmluOworICAgWDUwOSAqY2VydCA9IE5VTEw7CitAQCAtNDM3LDEzICs0NDksMTggQEAgaW50IG9hdXRoX3ZlcmlmeV9yc2Ffc2hhMSAoY29uc3QgY2hhciAqbSwgY29uc3QgY2hhciAqYywgY29uc3QgY2hhciAqcykgeworICAgICByZXR1cm4gLTI7CisgICB9CisgCisrCW1kX2N0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrCWlmIChtZF9jdHggPT0gTlVMTCkgeworKwkJcmV0dXJuIC0yOworKwl9CisrCisgICBiNjRkPSAodW5zaWduZWQgY2hhciopIHhtYWxsb2Moc2l6ZW9mKGNoYXIpKnN0cmxlbihzKSk7CisgICBzbGVuID0gb2F1dGhfZGVjb2RlX2Jhc2U2NChiNjRkLCBzKTsKKyAKKy0gIEVWUF9WZXJpZnlJbml0KCZtZF9jdHgsIEVWUF9zaGExKCkpOworLSAgRVZQX1ZlcmlmeVVwZGF0ZSgmbWRfY3R4LCBtLCBzdHJsZW4obSkpOworLSAgZXJyID0gRVZQX1ZlcmlmeUZpbmFsKCZtZF9jdHgsIGI2NGQsIHNsZW4sIHBrZXkpOworLSAgRVZQX01EX0NUWF9jbGVhbnVwKCZtZF9jdHgpOworKwlFVlBfVmVyaWZ5SW5pdChtZF9jdHgsIEVWUF9zaGExKCkpOworKwlFVlBfVmVyaWZ5VXBkYXRlKG1kX2N0eCwgbSwgc3RybGVuKG0pKTsKKysJZXJyID0gRVZQX1ZlcmlmeUZpbmFsKG1kX2N0eCwgYjY0ZCwgc2xlbiwgcGtleSk7CisrCUVWUF9NRF9DVFhfZnJlZShtZF9jdHgpOworICAgRVZQX1BLRVlfZnJlZShwa2V5KTsKKyAgIHhmcmVlKGI2NGQpOworICAgcmV0dXJuIChlcnIpOworQEAgLTQ1NSwzNSArNDcyLDQxIEBAIGludCBvYXV0aF92ZXJpZnlfcnNhX3NoYTEgKGNvbnN0IGNoYXIgKm0sIGNvbnN0IGNoYXIgKmMsIGNvbnN0IGNoYXIgKnMpIHsKKyAgKi8KKyBjaGFyICpvYXV0aF9ib2R5X2hhc2hfZmlsZShjaGFyICpmaWxlbmFtZSkgeworICAgdW5zaWduZWQgY2hhciBmYltCVUZTSVpdOworLSAgRVZQX01EX0NUWCBjdHg7CisrICBFVlBfTURfQ1RYICpjdHg7CisgICBzaXplX3QgbGVuPTA7CisgICB1bnNpZ25lZCBjaGFyICptZDsKKyAgIEZJTEUgKkY9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworICAgaWYgKCFGKSByZXR1cm4gTlVMTDsKKyAKKy0gIEVWUF9NRF9DVFhfaW5pdCgmY3R4KTsKKy0gIEVWUF9EaWdlc3RJbml0KCZjdHgsRVZQX3NoYTEoKSk7CisrCWN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrCWlmIChjdHggPT0gTlVMTCkgeworKwkJcmV0dXJuIHhzdHJkdXAoImxpYm9hdXRoL09wZW5TU0w6IGZhaWxlZCB0byBhbGxvY2F0ZSBFVlBfTURfQ1RYIik7CisrCX0KKysJRVZQX0RpZ2VzdEluaXQoY3R4LEVWUF9zaGExKCkpOworICAgd2hpbGUgKCFmZW9mKEYpICYmIChsZW49ZnJlYWQoZmIsc2l6ZW9mKGNoYXIpLEJVRlNJWiwgRikpPjApIHsKKy0gICAgRVZQX0RpZ2VzdFVwZGF0ZSgmY3R4LCBmYiwgbGVuKTsKKysgICAgRVZQX0RpZ2VzdFVwZGF0ZShjdHgsIGZiLCBsZW4pOworICAgfQorICAgZmNsb3NlKEYpOworICAgbGVuPTA7CisgICBtZD0odW5zaWduZWQgY2hhciopIHhjYWxsb2MoRVZQX01EX3NpemUoRVZQX3NoYTEoKSksc2l6ZW9mKHVuc2lnbmVkIGNoYXIpKTsKKy0gIEVWUF9EaWdlc3RGaW5hbCgmY3R4LCBtZCwodW5zaWduZWQgaW50KikgJmxlbik7CistICBFVlBfTURfQ1RYX2NsZWFudXAoJmN0eCk7CisrCUVWUF9EaWdlc3RGaW5hbChjdHgsIG1kLCh1bnNpZ25lZCBpbnQqKSAmbGVuKTsKKysJRVZQX01EX0NUWF9mcmVlKGN0eCk7CisgICByZXR1cm4gb2F1dGhfYm9keV9oYXNoX2VuY29kZShsZW4sIG1kKTsKKyB9CisgCisgY2hhciAqb2F1dGhfYm9keV9oYXNoX2RhdGEoc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqZGF0YSkgeworLSAgRVZQX01EX0NUWCBjdHg7CisrICBFVlBfTURfQ1RYICpjdHg7CisgICBzaXplX3QgbGVuPTA7CisgICB1bnNpZ25lZCBjaGFyICptZDsKKyAgIG1kPSh1bnNpZ25lZCBjaGFyKikgeGNhbGxvYyhFVlBfTURfc2l6ZShFVlBfc2hhMSgpKSxzaXplb2YodW5zaWduZWQgY2hhcikpOworLSAgRVZQX01EX0NUWF9pbml0KCZjdHgpOworLSAgRVZQX0RpZ2VzdEluaXQoJmN0eCxFVlBfc2hhMSgpKTsKKy0gIEVWUF9EaWdlc3RVcGRhdGUoJmN0eCwgZGF0YSwgbGVuZ3RoKTsKKy0gIEVWUF9EaWdlc3RGaW5hbCgmY3R4LCBtZCwodW5zaWduZWQgaW50KikgJmxlbik7CistICBFVlBfTURfQ1RYX2NsZWFudXAoJmN0eCk7CisrCWN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrCWlmIChjdHggPT0gTlVMTCkgeworKwkJcmV0dXJuIHhzdHJkdXAoImxpYm9hdXRoL09wZW5TU0w6IGZhaWxlZCB0byBhbGxvY2F0ZSBFVlBfTURfQ1RYIik7CisrCX0KKysJRVZQX0RpZ2VzdEluaXQoY3R4LEVWUF9zaGExKCkpOworKwlFVlBfRGlnZXN0VXBkYXRlKGN0eCwgZGF0YSwgbGVuZ3RoKTsKKysJRVZQX0RpZ2VzdEZpbmFsKGN0eCwgbWQsKHVuc2lnbmVkIGludCopICZsZW4pOworKwlFVlBfTURfQ1RYX2ZyZWUoY3R4KTsKKyAgIHJldHVybiBvYXV0aF9ib2R5X2hhc2hfZW5jb2RlKGxlbiwgbWQpOworIH0KKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm9hdXRoL2xpYm9hdXRoXzEuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2F1dGgvbGlib2F1dGhfMS4wLjMuYmIKaW5kZXggMzMxMWRhNS4uNDk4NzY0YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2F1dGgvbGlib2F1dGhfMS4wLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlib2F1dGgvbGlib2F1dGhfMS4wLjMuYmIKQEAgLTksNyArOSw5IEBACiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gImN1cmwgb3BlbnNzbCIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1PcGVuU1NMLTEuMS4wLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjY4OWI0NmMyYjNhYjFhMzk3MzVhYzMzZjcxNGM0ZjdmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkZjYwMTU3YjA1MmYwZTc3NGFkZThhOGJhYzU5ZDZlOGQ0YjQ2NDA1OGNjNTVmOTIwOGQ3MmU0MTE1NjgxMWYiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC43LmJiCmluZGV4IDk0OWMzMzcuLjg3ZDk5YzEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicDExL2xpYnAxMV8wLjQuNy5iYgpAQCAtMjIsNSArMjIsNSBAQAogICAgIHJtIC1yZiAke0R9JHtkb2NkaXJ9LyR7QlBOfQogfQogCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2VuZ2luZXMvcGtjczExLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZW5naW5lcy9saWJwa2NzMTEke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2VuZ2luZXMqL3BrY3MxMS5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2VuZ2luZXMqL2xpYnBrY3MxMSR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC43LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gvbGlic3NoXzAuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWU3ZGM1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC43LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxhdGZvcm0gQyBsaWJyYXJ5IGltcGxlbWVudGluZyB0aGUgU1NIdjIgYW5kIFNTSHYxIHByb3RvY29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzc2gub3JnIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gInpsaWIgb3BlbnNzbCBsaWJnY3J5cHQiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zODhhNGZiMWRlYThjZWFlMGJlNzhiYTliMDFmYzEzOSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGlic3NoLm9yZy9wcm9qZWN0cy9saWJzc2guZ2l0O2JyYW5jaD12MC03IgotU1JDUkVWID0gImNkZjc2OTBlMDM4MjMwNjIzY2JiZjZiMDI0ZWNlNjJmNDFlZmE5OGQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgLURXSVRIX0dDUllQVD0xIFwKLSAgICAtRFdJVEhfUENBUD0xIFwKLSAgICAtRFdJVEhfU0ZUUD0xIFwKLSAgICAtRFdJVEhfWkxJQj0xIFwKLSAgICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKLSAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89IiIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItRFdJVEhfR1NTQVBJPTEsIC1EV0lUSF9HU1NBUEk9MCwga3JiNSwgIgotCi1pbmhlcml0IGNtYWtlCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICAjIERpc2FibGUgYnVpbGRpbmcgb2YgZXhhbXBsZXMKLSAgICBzZWQgLWkgLWUgJy9hZGRfc3ViZGlyZWN0b3J5KGV4YW1wbGVzKS9zL14vI0RPTk9UV0FOVC8nICR7U30vQ01ha2VMaXN0cy50eHQgXAotICAgICAgICB8fCBiYmZhdGFsICJGYWlsZWQgdG8gZGlzYWJsZSBleGFtcGxlcyIKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoL2xpYnNzaF8wLjguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0MGVjOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjQuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJNdWx0aXBsYXRmb3JtIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSHYyIGFuZCBTU0h2MSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zODhhNGZiMWRlYThjZWFlMGJlNzhiYTliMDFmYzEzOSIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saWJzc2gub3JnL3Byb2plY3RzL2xpYnNzaC5naXQ7YnJhbmNoPXN0YWJsZS0wLjgiCitTUkNSRVYgPSAiNzg5ZGYwYjdkMGM3YWJkNmI4NWRiOWZjNTI0N2UxNDZlM2Q0ZGRiYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSIiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURXSVRIX0dTU0FQST0xLCAtRFdJVEhfR1NTQVBJPTAsIGtyYjUsICIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFdJVEhfR0NSWVBUPTEgXAorICAgIC1EV0lUSF9QQ0FQPTEgXAorICAgIC1EV0lUSF9TRlRQPTEgXAorICAgIC1EV0lUSF9aTElCPTEgXAorICAgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAorICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICMgRGlzYWJsZSBidWlsZGluZyBvZiBleGFtcGxlcworICAgIHNlZCAtaSAtZSAnL2FkZF9zdWJkaXJlY3RvcnkoZXhhbXBsZXMpL3MvXi8jRE9OT1RXQU5ULycgJHtTfS9DTWFrZUxpc3RzLnR4dCBcCisgICAgICAgIHx8IGJiZmF0YWwgIkZhaWxlZCB0byBkaXNhYmxlIGV4YW1wbGVzIgorfQorCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGlueXhtbDIvbGlidGlueXhtbDJfNy4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl83LjAuMS5iYgppbmRleCA3NDc4MGUxLi5lNGJiM2YzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl83LjAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl83LjAuMS5iYgpAQCAtMTIsNiArMTIsNCBAQAogCiBpbmhlcml0IGNtYWtlCiAKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlLyIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2ItY29tcGF0LzAwMDEtdXNiLmgtSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2ItY29tcGF0LzAwMDEtdXNiLmgtSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiLWNvbXBhdC8wMDAxLXVzYi5oLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2ItY29tcGF0LzAwMDEtdXNiLmgtSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiLWNvbXBhdF8wLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2ItY29tcGF0XzAuMS41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2ItY29tcGF0XzAuMS41LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiLWNvbXBhdF8wLjEuNS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvZmlsZXMvYWMtcHJvZy1jeHgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9maWxlcy9hYy1wcm9nLWN4eC5wYXRjaAppbmRleCA0MWMzODI2Li4yZGM1N2E1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9maWxlcy9hYy1wcm9nLWN4eC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9maWxlcy9hYy1wcm9nLWN4eC5wYXRjaApAQCAtMSwxMSArMSwyMSBAQAotLS0tIGxpbmtzLTIuMXByZTIwL2NvbmZpZ3VyZS5pbi5vcmlnCTIwMDUtMTItMjEgMTU6MjM6NDkuMDAwMDAwMDAwICswMDAwCi0rKysgbGlua3MtMi4xcHJlMjAvY29uZmlndXJlLmluCTIwMDUtMTItMjEgMTU6MjM6NTkuMDAwMDAwMDAwICswMDAwCi1AQCAtMTgsNyArMTgsNyBAQAorRnJvbSBjMDA2Njg1NDFmNjhjMTdhNWU0NTNhNGRjYzJhODYwMjJiMjBhZjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogTW9uLCAzMCBKdWwgMjAxMiAyMzo1Mjo0OSArMDIwMAorCistLS0KKyBjb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDdjMTViNmIuLjk4OTY2MzEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTIzLDcgKzIzLDcgQEAgQU1fQ09ORklHX0hFQURFUihjb25maWcuaCkKICBkbmwgQ2hlY2tzIGZvciBwcm9ncmFtcy4KICBBQ19QUk9HX0NDCiAgCi0tI0FDX1BST0dfQ1hYCistZG5sIEFDX1BST0dfQ1hYCiArQUNfUFJPR19DWFgKLSAjQUNfUFJPR19BV0sKLSAjQU1fUFJPR19MRVgKLSAjQUNfUFJPR19ZQUNDCisgZG5sIEFDX1BST0dfQVdLCisgZG5sIEFNX1BST0dfTEVYCisgZG5sIEFDX1BST0dfWUFDQwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3MteDExXzIuMTYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9saW5rcy14MTFfMi4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTVhNmZjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3MteDExXzIuMTYuYmIKQEAgLTAsMCArMSw1MyBAQAorIyBGSVhNRTogdGhlIExJQ19GSUxFU19DSEtTVU0gdmFsdWVzIGhhdmUgYmVlbiB1cGRhdGVkIGJ5ICdkZXZ0b29sIHVwZ3JhZGUnLgorIyBUaGUgZm9sbG93aW5nIGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIG5ldyBsaWNlbnNlIHRleHQuCisjIFBsZWFzZSB1cGRhdGUgdGhlIExJQ0VOU0UgdmFsdWUgaWYgbmVlZGVkLCBhbmQgc3VtbWFyaXplIHRoZSBjaGFuZ2VzIGluCisjIHRoZSBjb21taXQgbWVzc2FnZSB2aWEgJ0xpY2Vuc2UtVXBkYXRlOicgdGFnLgorIyAoZXhhbXBsZTogJ0xpY2Vuc2UtVXBkYXRlOiBjb3B5cmlnaHQgeWVhcnMgdXBkYXRlZC4nKQorIworIyBUaGUgY2hhbmdlczoKKyMKKyMgLS0tIENPUFlJTkcKKyMgKysrIENPUFlJTkcKKyMgQEAgLTI5Myw3ICsyOTMsNyBAQAorIyAgICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CisjICAgICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KKyMgIAorIyAtICAgIG9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyAgICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjICAgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIyAKKyMKKworcmVxdWlyZSBsaW5rcy5pbmMKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpbmtzIgorCitpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjaworIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICIgZmlsZTovL2xpbmtzMi5kZXNrdG9wIFwKKyAgICAgICAgICAgICBodHRwOi8vd3d3LnhvcmEub3JnLnVrL29lL2xpbmtzMi5wbmc7bmFtZT1pY29uIgorCitTID0gIiR7V09SS0RJUn0vbGlua3MtJHtQVn0iCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1ncmFwaGljcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiAtLXdpdGgtbGlianBlZyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYnRpZmYgLS13aXRob3V0LXN2Z2FsaWIgLS13aXRob3V0LWZiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZGlyZWN0ZmIgLS13aXRob3V0LXBtc2hlbGwgLS13aXRob3V0LWF0aGVvcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXggLS13aXRob3V0LWdwbSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlua3MyLmRlc2t0b3AgJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L3BpeG1hcHMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saW5rczIucG5nICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzCit9CisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NDVmYjBjMDI5NGU0YzMyNjhmOTRkMzA3ZDM5NGZmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmYwMzAzOGQ1ZTA1MGE2NTY4MWI5ODg4NzYyYWY0MWM0MGZkNDJkZWM3ZTU5YThkNjMwYmZiMGVlMTM0YTNmIgorU1JDX1VSSVtpY29uLm1kNXN1bV0gPSAiNDc3ZTg3ODc5MjdjNjM0NjE0YmFjMDFiNDQzNTVhMzMiCitTUkNfVVJJW2ljb24uc2hhMjU2c3VtXSA9ICJlZGRjZDhiOGM4Njk4YWE2MjFkMWE0NTM5NDM4OTJkNzdiNzJlZDQ5MmUwZDE0ZTBkYmFjNWM2YTU3ZTUyZjQ3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3MteDExXzIuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpbmtzL2xpbmtzLXgxMV8yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZTExYWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3MteDExXzIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLXJlcXVpcmUgbGlua3MuaW5jCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaW5rcyIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiIGZpbGU6Ly9saW5rczIuZGVza3RvcCBcCi0gICAgICAgICAgICAgaHR0cDovL3d3dy54b3JhLm9yZy51ay9vZS9saW5rczIucG5nO25hbWU9aWNvbiIKLQotUyA9ICIke1dPUktESVJ9L2xpbmtzLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZ3JhcGhpY3MgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gLS13aXRoLWxpYmpwZWcgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJ0aWZmIC0td2l0aG91dC1zdmdhbGliIC0td2l0aG91dC1mYiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWRpcmVjdGZiIC0td2l0aG91dC1wbXNoZWxsIC0td2l0aG91dC1hdGhlb3MgXAotICAgICAgICAgICAgICAgIC0td2l0aC14IC0td2l0aG91dC1ncG0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpbmtzMi5kZXNrdG9wICR7RH0vJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlua3MyLnBuZyAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotfQotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDA2YWE2ZTE0YjIxNzJkNzMxODg4NzFhNTM1NzE4NWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMxODJiMWNiY2RmZDVjZGNkMmY3NWE2MDMyZDFhNGI2NjBkMDdjMTIyNWMxZTA3NzU3Y2VjODFkMzMwMjEzMCIKLVNSQ19VUklbaWNvbi5tZDVzdW1dID0gIjQ3N2U4Nzg3OTI3YzYzNDYxNGJhYzAxYjQ0MzU1YTMzIgotU1JDX1VSSVtpY29uLnNoYTI1NnN1bV0gPSAiZWRkY2Q4YjhjODY5OGFhNjIxZDFhNDUzOTQzODkyZDc3YjcyZWQ0OTJlMGQxNGUwZGJhYzVjNmE1N2U1MmY0NyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpbmtzL2xpbmtzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpbmtzL2xpbmtzLmluYwppbmRleCBlMDcyNDA4Li5kNmFhMmQyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9saW5rcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3MuaW5jCkBAIC0zLDcgKzMsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL2xpbmtzLnR3aWJyaWdodC5jb20vIgogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjVlNzM1YmUyZTA1ZDU5NDM4MDMzNDQxNDhmNTc2MDMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMGM4MDQ3M2Y5NzAwOGU0MmUyOWE5ZjgwZmNjNTVmZiIKIERFUEVORFMgPSAianBlZyBsaWJwbmcgZmxleCBvcGVuc3NsIHpsaWIiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2xpbmtzLnR3aWJyaWdodC5jb20vZG93bmxvYWQvbGlua3MtJHtQVn0udGFyLmJ6MiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9saW5rc18yLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3NfMi4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWVhN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3NfMi4xNi5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIGxpbmtzLmluYworCitERVBFTkRTICs9ICJncG0iCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpbmtzLXgxMSIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWdyYXBoaWNzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIC0td2l0aC1saWJqcGVnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGlidGlmZiAtLXdpdGhvdXQtc3ZnYWxpYiAtLXdpdGgtZmIgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1kaXJlY3RmYiAtLXdpdGhvdXQtcG1zaGVsbCAtLXdpdGhvdXQtYXRoZW9zIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQteCIKKworU1JDX1VSSVttZDVzdW1dID0gIjY0NWZiMGMwMjk0ZTRjMzI2OGY5NGQzMDdkMzk0ZmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyZjAzMDM4ZDVlMDUwYTY1NjgxYjk4ODg3NjJhZjQxYzQwZmQ0MmRlYzdlNTlhOGQ2MzBiZmIwZWUxMzRhM2YiCitTUkNfVVJJW2ljb24ubWQ1c3VtXSA9ICI0NzdlODc4NzkyN2M2MzQ2MTRiYWMwMWI0NDM1NWEzMyIKK1NSQ19VUklbaWNvbi5zaGEyNTZzdW1dID0gImVkZGNkOGI4Yzg2OThhYTYyMWQxYTQ1Mzk0Mzg5MmQ3N2I3MmVkNDkyZTBkMTRlMGRiYWM1YzZhNTdlNTJmNDciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9saW5rc18yLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW5rcy9saW5rc18yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MGRkN2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlua3MvbGlua3NfMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBsaW5rcy5pbmMKLQotREVQRU5EUyArPSAiZ3BtIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaW5rcy14MTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1ncmFwaGljcyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiAtLXdpdGgtbGlianBlZyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYnRpZmYgLS13aXRob3V0LXN2Z2FsaWIgLS13aXRoLWZiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZGlyZWN0ZmIgLS13aXRob3V0LXBtc2hlbGwgLS13aXRob3V0LWF0aGVvcyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDZhYTZlMTRiMjE3MmQ3MzE4ODg3MWE1MzU3MTg1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzE4MmIxY2JjZGZkNWNkY2QyZjc1YTYwMzJkMWE0YjY2MGQwN2MxMjI1YzFlMDc3NTdjZWM4MWQzMzAyMTMwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlvLXV0aWxzL2xpby11dGlsc180LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW8tdXRpbHMvbGlvLXV0aWxzXzQuMS5iYgppbmRleCAzYTYzMTljLi5kOTc4MGNmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW8tdXRpbHMvbGlvLXV0aWxzXzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW8tdXRpbHMvbGlvLXV0aWxzXzQuMS5iYgpAQCAtNjAsMyArNjAsNyBAQAogICAgIGJhc2giCiAKIEZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9LyogL2V0Yy9pbml0LmQvKiAvZXRjL3RhcmdldC8qIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODQ3MTIvCisjIHB5dGhvbi1uYXRpdmUvcHl0aG9uOiBjYW4ndCBvcGVuIGZpbGUgJ3NldHVwLnB5JzogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2NrZGV2L2xvY2tkZXYvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2NrZGV2L2xvY2tkZXYvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJmNWJlOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvY2tkZXYvbG9ja2Rldi8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbml0aW9ucy5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDJmMzlkYzNkNmY5MjBjMDgyNmFhNzQzNjdkYTFhMGE3Y2M0OWIwZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBdWcgMjAxOCAxNToxODowNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IgZGVmaW5pdGlvbnMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworaW5jbHVzaW9uIG9mIDxzeXMvc3lzbWFjcm9zLmg+IGJ5IDxzeXMvdHlwZXMuaD4gaXMgZGVwcmVjYXRlZC4KK1RoaXMgbWVhbnMgdGhhdCBpbiBhIGZ1dHVyZSByZWxlYXNlLCB0aGUgbWFjcm9zIOKAnG1ham9y4oCdLCDigJxtaW5vcuKAnSwgYW5kCivigJxtYWtlZGV24oCdIHdpbGwgb25seSBiZSBhdmFpbGFibGUgZnJvbSA8c3lzL3N5c21hY3Jvcy5oPi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xvY2tkZXYuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xvY2tkZXYuYyBiL3NyYy9sb2NrZGV2LmMKK2luZGV4IDlhMGZjYTUuLjM1ODE5MzggMTAwNjQ0CistLS0gYS9zcmMvbG9ja2Rldi5jCisrKysgYi9zcmMvbG9ja2Rldi5jCitAQCAtMTE3LDYgKzExNyw3IEBACisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisgI2luY2x1ZGUgImxvY2tkZXYuaCIKKyAjaW5jbHVkZSAidHR5bG9jay5oIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9ja2Rldi9sb2NrZGV2X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvY2tkZXYvbG9ja2Rldl9naXQuYmIKaW5kZXggNTA3Y2UzZi4uNWFkN2YwYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9ja2Rldi9sb2NrZGV2X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2NrZGV2L2xvY2tkZXZfZ2l0LmJiCkBAIC02LDcgKzYsOSBAQAogUFYgPSAiMS4wLjMrZ2l0JHtTUkNQVn0iCiAKIFNSQ1JFViA9ICIxNmI4OTk2NDVkMzIwMTJjYzk0Y2M5MjMyZjY0ZDRkZGFhZjBiNzk1IgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvbG9ja2Rldi9sb2NrZGV2LmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbnNjbS5kZWJpYW4ub3JnL2xvY2tkZXYvbG9ja2Rldi5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwMS1Bdm9pZC1iYXNoaXNtcy1pbi1pbml0LXNjcmlwdHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDEtQXZvaWQtYmFzaGlzbXMtaW4taW5pdC1zY3JpcHRzLnBhdGNoCmluZGV4IGU4NmFiMjUuLjViNTUxMTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwMS1Bdm9pZC1iYXNoaXNtcy1pbi1pbml0LXNjcmlwdHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDAxLUF2b2lkLWJhc2hpc21zLWluLWluaXQtc2NyaXB0cy5wYXRjaApAQCAtMTcsMTcgKzE3LDE3IEBACiAgc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yaGVsNCAgICAgICAgICAgIHwgNCArKy0tCiAgOCBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvYmxrX2F2YWlsYWJpbGl0eV9pbml0X3JlZF9oYXQuaW4gYi9zY3JpcHRzL2Jsa19hdmFpbGFiaWxpdHlfaW5pdF9yZWRfaGF0LmluCi1pbmRleCBhODRmZmU3Li42Yjg1NWI3IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9ibGtfYXZhaWxhYmlsaXR5X2luaXRfcmVkX2hhdC5pbgotKysrIGIvc2NyaXB0cy9ibGtfYXZhaWxhYmlsaXR5X2luaXRfcmVkX2hhdC5pbgorSW5kZXg6IExWTTIuMi4wMi4xNzcvc2NyaXB0cy9ibGtfYXZhaWxhYmlsaXR5X2luaXRfcmVkX2hhdC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9zY3JpcHRzL2Jsa19hdmFpbGFiaWxpdHlfaW5pdF9yZWRfaGF0LmluCisrKysgTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2Jsa19hdmFpbGFiaWxpdHlfaW5pdF9yZWRfaGF0LmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vYmFzaAogKyMhL2Jpbi9zaAogICMKLSAjIENvcHlyaWdodCAoQykgMjAxMiBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgIwotQEAgLTUzLDYgKzUzLDYgQEAgY2FzZSAiJDEiIGluCitAQCAtNTEsNiArNTEsNiBAQCBjYXNlICIkMSIgaW4KICAgIHN0YXR1cykKICAJOzsKICAgICopCkBAIC0zNSwxMCArMzUsMTAgQEAKICsJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c30iCiAgCTs7CiAgZXNhYwotZGlmZiAtLWdpdCBhL3NjcmlwdHMvY2x2bWRfaW5pdF9yZWRfaGF0LmluIGIvc2NyaXB0cy9jbHZtZF9pbml0X3JlZF9oYXQuaW4KLWluZGV4IGQ3ZjMzOTIuLmFiYzgwMTEgMTAwNjQ0Ci0tLS0gYS9zY3JpcHRzL2Nsdm1kX2luaXRfcmVkX2hhdC5pbgotKysrIGIvc2NyaXB0cy9jbHZtZF9pbml0X3JlZF9oYXQuaW4KK0luZGV4OiBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvY2x2bWRfaW5pdF9yZWRfaGF0LmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTFZNMi4yLjAyLjE3Ny5vcmlnL3NjcmlwdHMvY2x2bWRfaW5pdF9yZWRfaGF0LmluCisrKysgTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2Nsdm1kX2luaXRfcmVkX2hhdC5pbgogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2Jhc2gKICsjIS9iaW4vc2gKQEAgLTYzLDE3ICs2MywxNyBAQAogIAlydHJuPTIKICAJOzsKICBlc2FjCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9jbWlycm9yZF9pbml0X3JlZF9oYXQuaW4gYi9zY3JpcHRzL2NtaXJyb3JkX2luaXRfcmVkX2hhdC5pbgotaW5kZXggZDRiN2UzNy4uZDQ0MmNiYyAxMDA3NTUKLS0tLSBhL3NjcmlwdHMvY21pcnJvcmRfaW5pdF9yZWRfaGF0LmluCi0rKysgYi9zY3JpcHRzL2NtaXJyb3JkX2luaXRfcmVkX2hhdC5pbgorSW5kZXg6IExWTTIuMi4wMi4xNzcvc2NyaXB0cy9jbWlycm9yZF9pbml0X3JlZF9oYXQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMVk0yLjIuMDIuMTc3Lm9yaWcvc2NyaXB0cy9jbWlycm9yZF9pbml0X3JlZF9oYXQuaW4KKysrKyBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvY21pcnJvcmRfaW5pdF9yZWRfaGF0LmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vYmFzaAogKyMhL2Jpbi9zaAogICMKICAjIGNoa2NvbmZpZzogLSAyMiA3OAogICMgZGVzY3JpcHRpb246IFN0YXJ0cyBhbmQgc3RvcHMgY21pcnJvcmQKLUBAIC0xMDEsNyArMTAxLDcgQEAgY2FzZSAiJDEiIGluCitAQCAtMTAzLDcgKzEwMyw3IEBAIGNhc2UgIiQxIiBpbgogIAkJOzsKICAKICAJKikKQEAgLTgyLDE1ICs4MiwxNSBAQAogIAkJOzsKICBlc2FjCiAgCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9sdm0yX2NsdXN0ZXJfYWN0aXZhdGlvbl9yZWRfaGF0LnNoLmluIGIvc2NyaXB0cy9sdm0yX2NsdXN0ZXJfYWN0aXZhdGlvbl9yZWRfaGF0LnNoLmluCi1pbmRleCBhYmVhMDI2Li5kOGNiYTJlIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sdm0yX2NsdXN0ZXJfYWN0aXZhdGlvbl9yZWRfaGF0LnNoLmluCi0rKysgYi9zY3JpcHRzL2x2bTJfY2x1c3Rlcl9hY3RpdmF0aW9uX3JlZF9oYXQuc2guaW4KK0luZGV4OiBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvbHZtMl9jbHVzdGVyX2FjdGl2YXRpb25fcmVkX2hhdC5zaC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9zY3JpcHRzL2x2bTJfY2x1c3Rlcl9hY3RpdmF0aW9uX3JlZF9oYXQuc2guaW4KKysrKyBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvbHZtMl9jbHVzdGVyX2FjdGl2YXRpb25fcmVkX2hhdC5zaC5pbgogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2Jhc2gKICsjIS9iaW4vc2gKICAKLSBzYmluZGlyPUBzYmluZGlyQAorIHNiaW5kaXI9IkBTQklORElSQCIKICAKIEBAIC01NCw3ICs1NCw3IEBAIGNhc2UgIiQxIiBpbgogIAlydHJuPSQ/CkBAIC0xMDEsMTUgKzEwMSwzNCBAQAogIAlydHJuPTMKICAJOzsKICBlc2FjCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9sdm0yX2x2bWV0YWRfaW5pdF9yZWRfaGF0LmluIGIvc2NyaXB0cy9sdm0yX2x2bWV0YWRfaW5pdF9yZWRfaGF0LmluCi1pbmRleCBiMmY1ZDUwLi45NjI2OWE5IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sdm0yX2x2bWV0YWRfaW5pdF9yZWRfaGF0LmluCi0rKysgYi9zY3JpcHRzL2x2bTJfbHZtZXRhZF9pbml0X3JlZF9oYXQuaW4KK0luZGV4OiBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvbHZtMl9sdm1ldGFkX2luaXRfcmVkX2hhdC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9zY3JpcHRzL2x2bTJfbHZtZXRhZF9pbml0X3JlZF9oYXQuaW4KKysrKyBMVk0yLjIuMDIuMTc3L3NjcmlwdHMvbHZtMl9sdm1ldGFkX2luaXRfcmVkX2hhdC5pbgogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2Jhc2gKICsjIS9iaW4vc2gKICAjCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTIgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICMKK0BAIC0xMDMsNyArMTAzLDcgQEAgY2FzZSAiJDEiIGluCisgCTs7CisgCisgICAqKQorLQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfGZvcmNlLXN0b3B8cmVzdGFydHxjb25kcmVzdGFydHx0cnktcmVzdGFydHxzdGF0dXN9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8Zm9yY2Utc3RvcHxyZXN0YXJ0fGNvbmRyZXN0YXJ0fHRyeS1yZXN0YXJ0fHN0YXR1c30iCisgCTs7CisgZXNhYworIAorSW5kZXg6IExWTTIuMi4wMi4xNzcvc2NyaXB0cy9sdm0yX2x2bXBvbGxkX2luaXRfcmVkX2hhdC5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9zY3JpcHRzL2x2bTJfbHZtcG9sbGRfaW5pdF9yZWRfaGF0LmluCisrKysgTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2x2bTJfbHZtcG9sbGRfaW5pdF9yZWRfaGF0LmluCitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMKKyAjIENvcHlyaWdodCAoQykgMjAxNSBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgIwogQEAgLTEwNSw3ICsxMDUsNyBAQCBjYXNlICIkMSIgaW4KICAJOzsKQEAgLTEyMCwzNiArMTM5LDE3IEBACiAgCTs7CiAgZXNhYwogIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvbHZtMl9sdm1wb2xsZF9pbml0X3JlZF9oYXQuaW4gYi9zY3JpcHRzL2x2bTJfbHZtcG9sbGRfaW5pdF9yZWRfaGF0LmluCi1pbmRleCBjNTIxOTU1Li5jZGJhZWNlIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sdm0yX2x2bXBvbGxkX2luaXRfcmVkX2hhdC5pbgotKysrIGIvc2NyaXB0cy9sdm0yX2x2bXBvbGxkX2luaXRfcmVkX2hhdC5pbgotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTUgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICMKLUBAIC0xMDcsNyArMTA3LDcgQEAgY2FzZSAiJDEiIGluCi0gCTs7Ci0gCi0gICAqKQotLQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfGZvcmNlLXN0b3B8cmVzdGFydHxjb25kcmVzdGFydHx0cnktcmVzdGFydHxzdGF0dXN9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8Zm9yY2Utc3RvcHxyZXN0YXJ0fGNvbmRyZXN0YXJ0fHRyeS1yZXN0YXJ0fHN0YXR1c30iCi0gCTs7Ci0gZXNhYwotIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX2luaXRfcmVkX2hhdC5pbiBiL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX2luaXRfcmVkX2hhdC5pbgotaW5kZXggZGU3ZmYwZC4uOWZmNmJiNyAxMDA2NDQKLS0tLSBhL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX2luaXRfcmVkX2hhdC5pbgotKysrIGIvc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yZWRfaGF0LmluCitJbmRleDogTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19pbml0X3JlZF9oYXQuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMVk0yLjIuMDIuMTc3Lm9yaWcvc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yZWRfaGF0LmluCisrKysgTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19pbml0X3JlZF9oYXQuaW4KIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9iYXNoCiArIyEvYmluL3NoCiAgIwogICMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICMKLUBAIC0xMjgsNyArMTI4LDcgQEAgY2FzZSAiJDEiIGluCitAQCAtMTI3LDcgKzEyNyw3IEBAIGNhc2UgIiQxIiBpbgogIAk7OwogIAogICAgKikKQEAgLTE1OCwxMCArMTU4LDEwIEBACiAgCTs7CiAgZXNhYwogIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvbHZtMl9tb25pdG9yaW5nX2luaXRfcmhlbDQgYi9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19pbml0X3JoZWw0Ci1pbmRleCA4ZWIwNmM1Li4yZThkMGY3IDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yaGVsNAotKysrIGIvc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yaGVsNAorSW5kZXg6IExWTTIuMi4wMi4xNzcvc2NyaXB0cy9sdm0yX21vbml0b3JpbmdfaW5pdF9yaGVsNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19pbml0X3JoZWw0CisrKysgTFZNMi4yLjAyLjE3Ny9zY3JpcHRzL2x2bTJfbW9uaXRvcmluZ19pbml0X3JoZWw0CiBAQCAtMSw0ICsxLDQgQEAKIC0jIS9iaW4vYmFzaAogKyMhL2Jpbi9zaApAQCAtMTc3LDYgKzE3NywzIEBACiAgCTs7CiAgZXNhYwogIAotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDAxLWltcGxlbWVudC1saWJjLXNwZWNpZmljLXJlb3Blbl9zdHJlYW0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDEtaW1wbGVtZW50LWxpYmMtc3BlY2lmaWMtcmVvcGVuX3N0cmVhbS5wYXRjaAppbmRleCA1ZDcyNDAyLi5iYjU4MmVkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDEtaW1wbGVtZW50LWxpYmMtc3BlY2lmaWMtcmVvcGVuX3N0cmVhbS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDEtaW1wbGVtZW50LWxpYmMtc3BlY2lmaWMtcmVvcGVuX3N0cmVhbS5wYXRjaApAQCAtMTksMTEgKzE5LDExIEBACiAgdG9vbHMvbHZtY21kbGluZS5jIHwgNiArKystLS0KICAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2xpYi9sb2cvbG9nLmMgYi9saWIvbG9nL2xvZy5jCi1pbmRleCBjOTMzMTU0Li4zNTgxMDg0IDEwMDY0NAotLS0tIGEvbGliL2xvZy9sb2cuYwotKysrIGIvbGliL2xvZy9sb2cuYwotQEAgLTE2MSw2ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCBfY2hlY2tfYW5kX3JlcGxhY2Vfc3RhbmRhcmRfbG9nX3N0cmVhbXMoRklMRSAqb2xkX3N0cmVhbSwgRklMRSAqbmV3XworSW5kZXg6IExWTTIuMi4wMi4xNzcvbGliL2xvZy9sb2cuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIExWTTIuMi4wMi4xNzcub3JpZy9saWIvbG9nL2xvZy5jCisrKysgTFZNMi4yLjAyLjE3Ny9saWIvbG9nL2xvZy5jCitAQCAtMTYxLDYgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIF9jaGVja19hbmRfcmVwbGFjZV9zdGFuZGFyZF8KICAgKiBDbG9zZSBhbmQgcmVvcGVuIHN0YW5kYXJkIHN0cmVhbSBvbiBmaWxlIGRlc2NyaXB0b3IgZmQuCiAgICovCiAgaW50IHJlb3Blbl9zdGFuZGFyZF9zdHJlYW0oRklMRSAqKnN0cmVhbSwgY29uc3QgY2hhciAqbW9kZSkKQEAgLTMxLDcgKzMxLDcgQEAKICB7CiAgCWludCBmZCwgZmRfY29weSwgbmV3X2ZkOwogIAljb25zdCBjaGFyICpuYW1lOwotQEAgLTIwNyw2ICsyMDgsMTEgQEAgaW50IHJlb3Blbl9zdGFuZGFyZF9zdHJlYW0oRklMRSAqKnN0cmVhbSwgY29uc3QgY2hhciAqbW9kZSkKK0BAIC0yMDcsNiArMjA4LDExIEBAIGludCByZW9wZW5fc3RhbmRhcmRfc3RyZWFtKEZJTEUgKipzdHJlYW0KICAJKnN0cmVhbSA9IG5ld19zdHJlYW07CiAgCXJldHVybiAxOwogIH0KQEAgLTQzLDExICs0MywxMSBAQAogIAogIHZvaWQgaW5pdF9sb2dfZm4obHZtMl9sb2dfZm5fdCBsb2dfZm4pCiAgewotZGlmZiAtLWdpdCBhL3Rvb2xzL2x2bWNtZGxpbmUuYyBiL3Rvb2xzL2x2bWNtZGxpbmUuYwotaW5kZXggOWE0ZGViNy4uZjFmMThlNiAxMDA2NDQKLS0tLSBhL3Rvb2xzL2x2bWNtZGxpbmUuYwotKysrIGIvdG9vbHMvbHZtY21kbGluZS5jCi1AQCAtMTgxOCw3ICsxODE4LDcgQEAgc3RhdGljIGludCBfY2hlY2tfc3RhbmRhcmRfZmRzKHZvaWQpCitJbmRleDogTFZNMi4yLjAyLjE3Ny90b29scy9sdm1jbWRsaW5lLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBMVk0yLjIuMDIuMTc3Lm9yaWcvdG9vbHMvbHZtY21kbGluZS5jCisrKysgTFZNMi4yLjAyLjE3Ny90b29scy9sdm1jbWRsaW5lLmMKK0BAIC0zMDk1LDcgKzMwOTUsNyBAQCBzdGF0aWMgaW50IF9jaGVja19zdGFuZGFyZF9mZHModm9pZCkKICAJaW50IGVyciA9IGlzX3ZhbGlkX2ZkKFNUREVSUl9GSUxFTk8pOwogIAogIAlpZiAoIWlzX3ZhbGlkX2ZkKFNURElOX0ZJTEVOTykgJiYKQEAgLTU2LDcgKzU2LDcgQEAKICAJCWlmIChlcnIpCiAgCQkJcGVycm9yKCJzdGRpbiBzdHJlYW0gb3BlbiIpOwogIAkJZWxzZQotQEAgLTE4MjgsNyArMTgyOCw3IEBAIHN0YXRpYyBpbnQgX2NoZWNrX3N0YW5kYXJkX2Zkcyh2b2lkKQorQEAgLTMxMDUsNyArMzEwNSw3IEBAIHN0YXRpYyBpbnQgX2NoZWNrX3N0YW5kYXJkX2Zkcyh2b2lkKQogIAl9CiAgCiAgCWlmICghaXNfdmFsaWRfZmQoU1RET1VUX0ZJTEVOTykgJiYKQEAgLTY1LDcgKzY1LDcgQEAKICAJCWlmIChlcnIpCiAgCQkJcGVycm9yKCJzdGRvdXQgc3RyZWFtIG9wZW4iKTsKICAJCS8qIGVsc2Ugbm8gc3Rkb3V0ICovCi1AQCAtMTgzNiw3ICsxODM2LDcgQEAgc3RhdGljIGludCBfY2hlY2tfc3RhbmRhcmRfZmRzKHZvaWQpCitAQCAtMzExMyw3ICszMTEzLDcgQEAgc3RhdGljIGludCBfY2hlY2tfc3RhbmRhcmRfZmRzKHZvaWQpCiAgCX0KICAKICAJaWYgKCFpc192YWxpZF9mZChTVERFUlJfRklMRU5PKSAmJgpAQCAtNzQsNiArNzQsMyBAQAogIAkJcHJpbnRmKCJzdGRlcnIgc3RyZWFtIG9wZW46ICVzXG4iLAogIAkJICAgICAgIHN0cmVycm9yKGVycm5vKSk7CiAgCQlyZXR1cm4gMDsKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwMi1HdWFyZC11c2Utb2YtbWFsbGluZm8td2l0aC1fX0dMSUJDX18ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDItR3VhcmQtdXNlLW9mLW1hbGxpbmZvLXdpdGgtX19HTElCQ19fLnBhdGNoCmluZGV4IDk1ZGNlZGUuLmNlOGE5N2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwMi1HdWFyZC11c2Utb2YtbWFsbGluZm8td2l0aC1fX0dMSUJDX18ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDAyLUd1YXJkLXVzZS1vZi1tYWxsaW5mby13aXRoLV9fR0xJQkNfXy5wYXRjaApAQCAtMTIsMTEgKzEyLDExIEBACiAgbGliL21tL21lbWxvY2suYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2xpYi9tbS9tZW1sb2NrLmMgYi9saWIvbW0vbWVtbG9jay5jCi1pbmRleCBkYTkwMTQ0Li5mMzRmODkwIDEwMDY0NAotLS0tIGEvbGliL21tL21lbWxvY2suYwotKysrIGIvbGliL21tL21lbWxvY2suYwotQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBfdG91Y2hfbWVtb3J5KHZvaWQgKm1lbSwgc2l6ZV90IHNpemUpCitJbmRleDogTFZNMi4yLjAyLjE3Ny9saWIvbW0vbWVtbG9jay5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gTFZNMi4yLjAyLjE3Ny5vcmlnL2xpYi9tbS9tZW1sb2NrLmMKKysrKyBMVk0yLjIuMDIuMTc3L2xpYi9tbS9tZW1sb2NrLmMKK0BAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIHZvaWQgX3RvdWNoX21lbW9yeSh2b2lkICptZW0sIHNpegogIAogIHN0YXRpYyB2b2lkIF9hbGxvY2F0ZV9tZW1vcnkodm9pZCkKICB7CkBAIC0yNSw2ICsyNSwzIEBACiAgCXZvaWQgKnN0YWNrX21lbTsKICAJc3RydWN0IHJsaW1pdCBsaW1pdDsKICAJaW50IGksIGFyZWEgPSAwLCBtaXNzaW5nID0gX3NpemVfbWFsbG9jX3RtcCwgbWF4X2FyZWFzID0gMzIsIGhibGtzOwotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA0LXR3ZWFrLU1PRFBST0JFX0NNRC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvZmlsZXMvMDAwNC10d2Vhay1NT0RQUk9CRV9DTUQtZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggYWFlYWE3Mi4uNTE3YjlhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA0LXR3ZWFrLU1PRFBST0JFX0NNRC1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDQtdHdlYWstTU9EUFJPQkVfQ01ELWZvci1jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSAwMDEyZWE2M2Y2MDcwYTVkNDFmYTM4MDk3MGY5YzMwYjk1MzIzN2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjUgT2N0IDIwMTYgMTE6NTk6NDAgKzAwMDAKK0Zyb20gM2JiYTQ1ODkwOTg1Yjg3N2I4MjM4MzZlNzhhMWM4YWMzYzg3ODg1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMzEgSnVsIDIwMTggMTU6MDQ6MjkgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCA0LzRdIHR3ZWFrIE1PRFBST0JFX0NNRCBmb3IgY3Jvc3MgY29tcGlsZQogCiBMdm0gdXNlcyB2YXJpYWJsZSBNT0RQUk9CRV9DTUQgYXQgcnVudGltZSwgc28gYnVpbGQgdGltZSBkZXRlY3Rpb24gb2YgbW9kcHJvYmUKQEAgLTE2LDIzICsxNiwyMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5pbiB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisgY29uZmlndXJlLmFjIHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCBjYzc3YWFiLi5hMzU3OWYyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0xODUzLDcgKzE4NTMsNiBAQCBpZiB0ZXN0ICIkVURFVl9TWU5DIiA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZTQyNzcwOC4uYWEzNzRlYSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTc5MSw4ICsxNzkxLDYgQEAgaWYgdGVzdCAiJEJVSUxEX0RNRklMRU1BUEQiID0geWVzOyB0aGVuCiAgZmkKICAKICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotLUFDX1BBVEhfVE9PTChNT0RQUk9CRV9DTUQsIG1vZHByb2JlKQotIAorLUFDX1BBVEhfVE9PTChNT0RQUk9CRV9DTUQsIG1vZHByb2JlLCBbXSwgWyRQQVRIX1NCSU5dKQorLQogIGlmIHRlc3QgLW4gIiRNT0RQUk9CRV9DTUQiOyB0aGVuCiAgCUFDX0RFRklORV9VTlFVT1RFRChbTU9EUFJPQkVfQ01EXSwgWyIkTU9EUFJPQkVfQ01EIl0sIFtUaGUgcGF0aCB0byAnbW9kcHJvYmUnLCBpZiBhdmFpbGFibGUuXSkKKyBmaQogLS0gCi0yLjkuMworMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9maWxlcy8wMDA1LWRvLW5vdC1idWlsZC1tYW51YWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaAppbmRleCAxNWFhOWY1Li5lM2NlNGM4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2ZpbGVzLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZDhiYjI1ZTM0ZDY1MzNiYTc4ZWFhZTY5Nzc3MWVlNDk5YTY2NzA2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTFkNjYxZmYzM2JiMjU0ZDdiMzM1YTljODdhY2Y1YzZlN2E5NDE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMiBBdWcgMjAxNyAwMzo0MTozNyAtMDQwMAorRGF0ZTogVHVlLCAzMSBKdWwgMjAxOCAxNTowODozNCArMDgwMAogU3ViamVjdDogW1BBVENIXSBkbyBub3QgYnVpbGQgbWFudWFsCiAKIE9uIHNvbWUgaG9zdCAodWJ1bnR1IDE0MDQpLCBidWlsZCBtYW51YWwgZmFpbGVkLgpAQCAtMTUsMjQgKzE1LDMzIEBACiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQotIE1ha2VmaWxlLmluICB8IDQgKystLQotIGNvbmZpZ3VyZS5pbiB8IDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIE1ha2VmaWxlLmluICB8IDYgKysrLS0tCisgY29uZmlndXJlLmFjIHwgMSAtCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCAzMWQ0MjhkLi4yNGY4OWEyIDEwMDY0NAoraW5kZXggZTJmNWE4NC4uYWNmMzFlNSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmluCiArKysgYi9NYWtlZmlsZS5pbgogQEAgLTE4LDcgKzE4LDcgQEAgdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKICBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiAgYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACiAgCi0tU1VCRElSUyA9IGNvbmYgZGFlbW9ucyBpbmNsdWRlIGxpYiBsaWJkYWVtb24gbGliZG0gbWFuIHNjcmlwdHMgdG9vbHMKLStTVUJESVJTID0gY29uZiBkYWVtb25zIGluY2x1ZGUgbGliIGxpYmRhZW1vbiBsaWJkbSBzY3JpcHRzIHRvb2xzCistU1VCRElSUyA9IGNvbmYgZGFlbW9ucyBpbmNsdWRlIGxpYiBsaWJkYWVtb24gbGliZG0gbWFuIHNjcmlwdHMgZGV2aWNlX21hcHBlciB0b29scworK1NVQkRJUlMgPSBjb25mIGRhZW1vbnMgaW5jbHVkZSBsaWIgbGliZGFlbW9uIGxpYmRtIHNjcmlwdHMgZGV2aWNlX21hcHBlciB0b29scwogIAogIGlmZXEgKCJAVURFVl9SVUxFU0AiLCAieWVzIikKICAgIFNVQkRJUlMgKz0gdWRldgotQEAgLTY5LDcgKzY5LDcgQEAgbGlibHZtLmRldmljZS1tYXBwZXI6IGluY2x1ZGUuZGV2aWNlLW1hcHBlcgorQEAgLTQxLDcgKzQxLDcgQEAgaWZlcSAoJChNQUtFQ01ER09BTFMpLGNsZWFuKQorIGVuZGlmCisgIyBGSVhNRSBTaG91bGQgdXNlIGludGVybWVkaWF0ZSBNYWtlZmlsZXMgaGVyZSEKKyBpZmVxICgkKE1BS0VDTURHT0FMUyksZGlzdGNsZWFuKQorLSAgU1VCRElSUyA9IGNvbmYgaW5jbHVkZSBtYW4gdGVzdCBzY3JpcHRzIFwKKysgIFNVQkRJUlMgPSBjb25mIGluY2x1ZGUgdGVzdCBzY3JpcHRzIFwKKyAgICAgbGliZGFlbW9uIGxpYiB0b29scyBkYWVtb25zIGxpYmRtIFwKKyAgICAgdWRldiBwbyBsaWJsdm0gcHl0aG9uIGRldmljZV9tYXBwZXIKKyB0b29scy5kaXN0Y2xlYW46IHRlc3QuZGlzdGNsZWFuCitAQCAtNzEsNyArNzEsNyBAQCBsaWJsdm0uZGV2aWNlLW1hcHBlcjogaW5jbHVkZS5kZXZpY2UtbWFwcGVyCiAgZGFlbW9ucy5kZXZpY2UtbWFwcGVyOiBsaWJkbS5kZXZpY2UtbWFwcGVyCiAgdG9vbHMuZGV2aWNlLW1hcHBlcjogbGliZG0uZGV2aWNlLW1hcHBlcgogIHNjcmlwdHMuZGV2aWNlLW1hcHBlcjogaW5jbHVkZS5kZXZpY2UtbWFwcGVyCkBAIC00MSwxMSArNTAsMTEgQEAKICAKICBpZmVxICgiQElOVExAIiwgInllcyIpCiAgbGliLnBvZmlsZTogaW5jbHVkZS5wb2ZpbGUKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDFkYzg4MTkuLjEwOGFjZTQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTIyMTMsNyArMjIxMyw2IEBAIGxpYmRtL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhYTM3NGVhLi41YTkyY2JhIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMTI0LDcgKzIxMjQsNiBAQCBsaWJkbS9NYWtlZmlsZQogIGxpYmRtL2xpYmRldm1hcHBlci5wYwogIGxpYmx2bS9NYWtlZmlsZQogIGxpYmx2bS9saWJsdm0yYXBwLnBjCkBAIC01NCw1ICs2Myw1IEBACiAgcHl0aG9uL01ha2VmaWxlCiAgcHl0aG9uL3NldHVwLnB5CiAtLSAKLTIuOC4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE3MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTcxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmFlOTAyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbGliZGV2bWFwcGVyXzIuMDIuMTcxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBsdm0yLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTUzYjdiYjY0M2ViMjYwNzMyNzQ5NjhlOTAyNmZhOGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjgxNWE3MTFhMmZhYmFhNWMzZGMxYTRhMjg0ZGYwMjY4YmYwZjMyNWYwZmMwZjVjOTUzMGM5YmJiNTRiOTk2NCIKLQotREVQRU5EUyArPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgLUMgbGliZG0gaW5zdGFsbAotfQotCi1SUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBsdm0yLXVkZXZydWxlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xODAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2xpYmRldm1hcHBlcl8yLjAyLjE4MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmFmMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9saWJkZXZtYXBwZXJfMi4wMi4xODAuYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSBsdm0yLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmMyNmRhNjZlOTY3MjdiYWJiZDI4OGJiMGYwNTAzMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ5OTdlMjZkZmM5MTYxNTE3MDdjOWRhNTA0ZDM4ZDA0NzNiZWMzNDgxYTgyMzBiNjc2YmMwNzkwNDFiZWFkNiIKKworREVQRU5EUyArPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgLUMgbGliZG0gaW5zdGFsbAorICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgLUMgdG9vbHMgaW5zdGFsbF9kZXZpY2UtbWFwcGVyCit9CisKK1JSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGx2bTItdWRldnJ1bGVzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLmluYwppbmRleCAyODllMDdkLi4yNmE4ODdlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi5pbmMKQEAgLTEsMTEgKzEsMTEgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL2x2bTIvIgogU0VDVElPTiA9ICJ1dGlscyIKIERFU0NSSVBUSU9OID0gIkxWTTIgaXMgYSBzZXQgb2YgdXRpbGl0aWVzIHRvIG1hbmFnZSBsb2dpY2FsIHZvbHVtZXMgaW4gTGludXguIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyNzEzYjRkOTM4NjUzM2ZlZWIwN2Q2ZTQ4MzE3NjVhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKIAotREVQRU5EUyArPSAidXRpbC1saW51eCIKK0RFUEVORFMgKz0gInV0aWwtbGludXggbGliYWlvIgogCiBTUkNfVVJJID0gImZ0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9wdWIvbHZtMi9vbGQvTFZNMi4ke1BWfS50Z3ogXAogICAgICAgICAgICBmaWxlOi8vbHZtLmNvbmYgXApAQCAtMTcsNiArMTcsMTAgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDUtZG8tbm90LWJ1aWxkLW1hbnVhbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LXN0YXJ0LWx2bTItbW9uaXRvci5zZXJ2aWNlLWFmdGVyLXRtcC5tb3VudC5wYXRjaCBcCiAgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImZ0cDovL3NvdXJjZXMucmVkaGF0LmNvbS9wdWIvbHZtMi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJMVk0yXC4oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKIFMgPSAiJHtXT1JLRElSfS9MVk0yLiR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQgbGljZW5zZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMi8wMDAxLWV4cGxpY2l0bHktZG8tbm90LWluc3RhbGwtbGliZG0ucGF0Y2gKaW5kZXggZTg1ODE4ZC4uN2Y1ZGQ5MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTIvMDAwMS1leHBsaWNpdGx5LWRvLW5vdC1pbnN0YWxsLWxpYmRtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwYThlNDY2ZmNmOTk2MjI4OTZlMDcwYzUxMzMxNjVlNDI3OGU4Y2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YTNlMTNhZTk0MzE4YzJiZWQ2MGY4NzViYjM4NTJjNDVjZTAxMTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAyNSBNYXkgMjAxNyAwNToyNzoxMSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBleHBsaWNpdGx5IGRvIG5vdCBpbnN0YWxsIGxpYmRtCkBAIC05LDEyICs5LDE0IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW21ldGEtb2Ugc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBCcmVzdGlja2VyIDxhYnJlc3RpY0B3YXltby5jb20+CiAtLS0KICBsaWJkbS9NYWtlZmlsZS5pbiB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyB0b29scy9NYWtlZmlsZS5pbiB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWJkbS9NYWtlZmlsZS5pbiBiL2xpYmRtL01ha2VmaWxlLmluCi1pbmRleCAzYzlhNGNlLi40NWM5MWM2IDEwMDY0NAoraW5kZXggNjZlYzM5NTEzLi5jNzc5YzlkODYgMTAwNjQ0CiAtLS0gYS9saWJkbS9NYWtlZmlsZS5pbgogKysrIGIvbGliZG0vTWFrZWZpbGUuaW4KIEBAIC03Nyw5ICs3NywxMSBAQCBpZmVxICgiQFBLR0NPTkZJR0AiLCAieWVzIikKQEAgLTIzLDE0ICsyNSwyOCBAQAogIAogLWluc3RhbGw6ICQoSU5TVEFMTF9UWVBFKSBpbnN0YWxsX2luY2x1ZGUKICtpbnN0YWxsOgotKwllY2hvICJEbyBub3QgaW5zdGFsbCBkZXZpY2UgbWFwcGxlciBpbiBsdm0yIgorKwllY2hvICJEbyBub3QgaW5zdGFsbCBkZXZpY2UgbWFwcGVyIGluIGx2bTIiCiAgCiAtaW5zdGFsbF9kZXZpY2UtbWFwcGVyOiBpbnN0YWxsCiAraW5zdGFsbF9kZXZpY2UtbWFwcGVyOgotKwllY2hvICJEbyBub3QgaW5zdGFsbCBkZXZpY2UgbWFwcGxlciBpbiBsdm0yIgorKwllY2hvICJEbyBub3QgaW5zdGFsbCBkZXZpY2UgbWFwcGVyIGluIGx2bTIiCiAgCiAgaW5zdGFsbF9pbmNsdWRlOiAkKHNyY2RpcikvbGliZGV2bWFwcGVyLmgKICAJJChJTlNUQUxMX0RBVEEpIC1EICQ8ICQoaW5jbHVkZWRpcikvJCg8RikKK2RpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5pbiBiL3Rvb2xzL01ha2VmaWxlLmluCitpbmRleCAxMDNiNzY3MzIuLjYzYmE3ZmMwNCAxMDA2NDQKKy0tLSBhL3Rvb2xzL01ha2VmaWxlLmluCisrKysgYi90b29scy9NYWtlZmlsZS5pbgorQEAgLTI2Nyw3ICsyNjcsOCBAQCBpbnN0YWxsX2Rtc2V0dXBfc3RhdGljOiBkbXNldHVwLnN0YXRpYworIAkkKFEpICQoSU5TVEFMTF9QUk9HUkFNKSAtRCAkPCAkKHN0YXRpY2RpcikvJCg8RikKKyAJJChRKSAkKExOX1MpIC1mICQoPEYpICQoc3RhdGljZGlyKS9kbXN0YXRzCisgCistaW5zdGFsbF9kZXZpY2UtbWFwcGVyOiAkKElOU1RBTExfRE1TRVRVUF9UQVJHRVRTKQorK2luc3RhbGxfZGV2aWNlLW1hcHBlcjoKKysJZWNobyAiRG8gbm90IGluc3RhbGwgZGV2aWNlIG1hcHBlciBpbiBsdm0yIgorIAorIGluc3RhbGxfbHZtMjogJChJTlNUQUxMX0xWTV9UQVJHRVRTKQorIAogLS0gCi0yLjguMQorMi4xOS4wLjM5Ny5nZGQ5MDM0MGY2YS1nb29nCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE3MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2x2bTIvbHZtMl8yLjAyLjE3MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4ODFlNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xNzEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1yZXF1aXJlIGx2bTIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTNiN2JiNjQzZWIyNjA3MzI3NDk2OGU5MDI2ZmE4ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiODE1YTcxMWEyZmFiYWE1YzNkYzFhNGEyODRkZjAyNjhiZjBmMzI1ZjBmYzBmNWM5NTMwYzliYmI1NGI5OTY0IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1leHBsaWNpdGx5LWRvLW5vdC1pbnN0YWxsLWxpYmRtLnBhdGNoIgotCi1ERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gIk1PRFBST0JFX0NNRD0ke2Jhc2Vfc2JpbmRpcn0vbW9kcHJvYmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgSW5zdGFsbCBtYWNoaW5lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vbHZtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbHZtLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mCi0gICAgc2VkIC1pIC1lICdzOkBsaWJkaXJAOiR7bGliZGlyfTpnJyAke0R9JHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbCBpbnN0YWxsX3N5c3RlbWRfdW5pdHMKLSAgICAgICAgc2VkIC1pIC1lICdzOi91c3IvYmluL3RydWU6JHtiYXNlX2JpbmRpcn0vdHJ1ZTpnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ibGstYXZhaWxhYmlsaXR5LnNlcnZpY2UKLSAgICBlbHNlCi0gICAgICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbCBpbnN0YWxsX2luaXRzY3JpcHRzCi0gICAgICAgIG12ICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQvaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAotICAgIGZpCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tdWRldnJ1bGVzIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RtZXZlbnRkJywgJ2x2bTItbW9uaXRvci5zZXJ2aWNlIGRtLWV2ZW50LnNvY2tldCBkbS1ldmVudC5zZXJ2aWNlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbHZtZXRhZCcsICdsdm0yLWx2bWV0YWQuc29ja2V0IGx2bTItcHZzY2FuQC5zZXJ2aWNlJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9kZXZpY2UtbWFwcGVyLyouc28iCi1GSUxFU18ke1BOfS1zY3JpcHRzID0gIiBcCi0gICAgJHtzYmluZGlyfS9ibGtkZWFjdGl2YXRlIFwKLSAgICAke3NiaW5kaXJ9L2ZzYWRtIFwKLSAgICAke3NiaW5kaXJ9L2x2bWNvbmYgXAotICAgICR7c2JpbmRpcn0vbHZtZHVtcCBcCi0iCi0jIFNwZWNpZmllZCBleHBsaWNpdGx5IGZvciB0aGUgdWRldiBydWxlcywganVzdCBpbiBjYXNlIHRoYXQgaXQgZG9lcyBub3QgZ2V0IHBpY2tlZAotIyB1cCBhdXRvbWF0aWNhbGx5OgotRklMRVNfJHtQTn0tdWRldnJ1bGVzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kIgotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbGliZGV2bWFwcGVyIgotCi1SREVQRU5EU18ke1BOfS1zY3JpcHRzID0gIiR7UE59ICg9ICR7RVhURU5EUEtHVn0pIGJhc2giCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiJHtQTn0tc2NyaXB0cyAoPSAke0VYVEVORFBLR1Z9KSIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTgwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbHZtMi9sdm0yXzIuMDIuMTgwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZDdiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sdm0yL2x2bTJfMi4wMi4xODAuYmIKQEAgLTAsMCArMSw2MiBAQAorcmVxdWlyZSBsdm0yLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmMyNmRhNjZlOTY3MjdiYWJiZDI4OGJiMGYwNTAzMzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ5OTdlMjZkZmM5MTYxNTE3MDdjOWRhNTA0ZDM4ZDA0NzNiZWMzNDgxYTgyMzBiNjc2YmMwNzkwNDFiZWFkNiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZXhwbGljaXRseS1kby1ub3QtaW5zdGFsbC1saWJkbS5wYXRjaCIKKworREVQRU5EUyArPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUiCisKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtzeXNjb25mZGlyfS9sdm0vbHZtLmNvbmYiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJNT0RQUk9CRV9DTUQ9JHtiYXNlX3NiaW5kaXJ9L21vZHByb2JlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEluc3RhbGwgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2x2bQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x2bS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2x2bS9sdm0uY29uZgorICAgIHNlZCAtaSAtZSAnczpAbGliZGlyQDoke2xpYmRpcn06ZycgJHtEfSR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9zeXN0ZW1kX3VuaXRzCisgICAgICAgIHNlZCAtaSAtZSAnczovdXNyL2Jpbi90cnVlOiR7YmFzZV9iaW5kaXJ9L3RydWU6ZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlCisgICAgZWxzZQorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwgaW5zdGFsbF9pbml0c2NyaXB0cworICAgICAgICBtdiAke0R9JHtzeXNjb25mZGlyfS9yYy5kL2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKyAgICBmaQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1zY3JpcHRzICR7UE59LXVkZXZydWxlcyIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbWV2ZW50ZCcsICdsdm0yLW1vbml0b3Iuc2VydmljZSBkbS1ldmVudC5zb2NrZXQgZG0tZXZlbnQuc2VydmljZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2x2bWV0YWQnLCAnbHZtMi1sdm1ldGFkLnNvY2tldCBsdm0yLXB2c2NhbkAuc2VydmljZScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAgICAgIGJsay1hdmFpbGFiaWxpdHkuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtLXdpdGgtY29uZmRpcj0ke3N5c2NvbmZkaXJ9IgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2RldmljZS1tYXBwZXIvKi5zbyIKK0ZJTEVTXyR7UE59LXNjcmlwdHMgPSAiIFwKKyAgICAke3NiaW5kaXJ9L2Jsa2RlYWN0aXZhdGUgXAorICAgICR7c2JpbmRpcn0vZnNhZG0gXAorICAgICR7c2JpbmRpcn0vbHZtY29uZiBcCisgICAgJHtzYmluZGlyfS9sdm1kdW1wIFwKKyIKKyMgU3BlY2lmaWVkIGV4cGxpY2l0bHkgZm9yIHRoZSB1ZGV2IHJ1bGVzLCBqdXN0IGluIGNhc2UgdGhhdCBpdCBkb2VzIG5vdCBnZXQgcGlja2VkCisjIHVwIGF1dG9tYXRpY2FsbHk6CitGSUxFU18ke1BOfS11ZGV2cnVsZXMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQiCitSREVQRU5EU18ke1BOfS11ZGV2cnVsZXMgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBsaWJkZXZtYXBwZXIiCitSREVQRU5EU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBsaWJkZXZtYXBwZXIiCisKK1JERVBFTkRTXyR7UE59LXNjcmlwdHMgPSAiJHtQTn0gKD0gJHtFWFRFTkRQS0dWfSkgYmFzaCIKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIke1BOfS1zY3JpcHRzICg9ICR7RVhURU5EUEtHVn0pIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbHZtL2x2bS5jb25mIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlLWluamVjdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlLWluamVjdF9naXQuYmIKaW5kZXggZjg3NjE0NC4uY2MzM2NiYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZS1pbmplY3RfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtaW5qZWN0X2dpdC5iYgpAQCAtOCw2ICs4LDEwIEBACiAKIFNSQ1JFViA9ICI0Y2JlNDYzMjFiNGE4MTM2NWZmM2FhZmFmZTYzOTY3MjY0ZGJmZWM1IgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0zMDttZDU9OTRjMTg3NTUwODJhMmRhOWM5Y2Y5N2NiYTNhZDQ3ZDYiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2Vsb2dfMS40OS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2Vsb2dfMS40OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ2MzNhNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzEuNDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIm1jZWxvZyBkYWVtb24gYWNjb3VudHMgbWVtb3J5IGFuZCBzb21lIG90aGVyIGVycm9ycyBpbiB2YXJpb3VzIHdheXMuIgotREVTQ1JJUFRJT04gPSAibWNlbG9nIGlzIHJlcXVpcmVkIGJ5IGJvdGggMzJiaXQgeDg2IExpbnV4IGtlcm5lbHMgKHNpbmNlIDIuNi4zMCkgXAotYW5kIDY0Yml0IExpbnV4IGtlcm5lbHMgKHNpbmNlIGVhcmx5IDIuNiBrZXJuZWwgcmVsZWFzZXMpIHRvIGxvZyBtYWNoaW5lIGNoZWNrcyBcCi1hbmQgc2hvdWxkIHJ1biBvbiBhbGwgTGludXggc3lzdGVtcyB0aGF0IG5lZWQgZXJyb3IgaGFuZGxpbmcuIgotSE9NRVBBR0UgPSAiaHR0cDovL21jZWxvZy5vcmcvIgotU0VDVElPTiA9ICJTeXN0ZW0gRW52aXJvbm1lbnQvQmFzZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL3V0aWxzL2NwdS9tY2UvbWNlbG9nLmdpdDtwcm90b2NvbD1odHRwOyBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ1JFViA9ICIyY2ZkZjI5YjJlZjk4Y2NkNWVkNDJjZGRlOGJiZTQzN2UwZDY0MTJmIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO21kNT0yNzk4NDBmYWJiMTkxZTZjZDkxNTA0OTJkMzFiMGUyMCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qKS1saW51eCcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L21jZWxvZy5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5LwotICAgIHNlZCAtaSAncy9iYXNoL3NoLycgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkvbWNlbG9nLmNyb24KLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgY3AgLXIgJHtTfS90ZXN0cyAke1N9L2lucHV0ICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgc2VkIC1pICdzIy4uLy4uL21jZWxvZyNtY2Vsb2cjJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0Ci19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSBtYWtlIGJhc2ggbWNlLWluamVjdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2Vsb2dfMTYxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZjYTM4NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2Vsb2dfMTYxLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAibWNlbG9nIGRhZW1vbiBhY2NvdW50cyBtZW1vcnkgYW5kIHNvbWUgb3RoZXIgZXJyb3JzIGluIHZhcmlvdXMgd2F5cy4iCitERVNDUklQVElPTiA9ICJtY2Vsb2cgaXMgcmVxdWlyZWQgYnkgYm90aCAzMmJpdCB4ODYgTGludXgga2VybmVscyAoc2luY2UgMi42LjMwKSBcCithbmQgNjRiaXQgTGludXgga2VybmVscyAoc2luY2UgZWFybHkgMi42IGtlcm5lbCByZWxlYXNlcykgdG8gbG9nIG1hY2hpbmUgY2hlY2tzIFwKK2FuZCBzaG91bGQgcnVuIG9uIGFsbCBMaW51eCBzeXN0ZW1zIHRoYXQgbmVlZCBlcnJvciBoYW5kbGluZy4iCitIT01FUEFHRSA9ICJodHRwOi8vbWNlbG9nLm9yZy8iCitTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2Vsb2cuZ2l0O3Byb3RvY29sPWh0dHA7IFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDUkVWID0gIjZlZDkzZTMwZjgzNTE5YjBhYjcxZjhlY2QxNTZiOGZmMGIyOTEyYjYiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTc0YmI0N2I5YTY4ODUwY2IzOTg2NjVjZjc4YjMxZGU2IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vbWNlbG9nLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkvCisgICAgc2VkIC1pICdzL2Jhc2gvc2gvJyAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseS9tY2Vsb2cuY3JvbgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBjcCAtciAke1N9L3Rlc3RzICR7U30vaW5wdXQgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBzZWQgLWkgJ3MjLi4vLi4vbWNlbG9nI21jZWxvZyMnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59IG1ha2UgYmFzaCBtY2UtaW5qZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEta3BhcnR4LWluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEta3BhcnR4LWluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRkOGUyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMzMwMDI4YTVhOTA0YTBkYTM3ODgxNDEwMzBlNjE0NTY5ZGM1YWFhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDIzOjI4OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGtwYXJ0eDogaW5jbHVkZSBsaW1pdHMuaCBmb3IgUEFUSF9NQVgKLQotbG9wYXJ0LmM6NzY6MTI6IGVycm9yOiAnUEFUSF9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdJTlQ4X01BWCc/Ci0gIGNoYXIgcGF0aFtQQVRIX01BWF07Ci0gICAgICAgICAgICBefn5+fn5+fgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0ga3BhcnR4L2xvcGFydC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9rcGFydHgvbG9wYXJ0LmMgYi9rcGFydHgvbG9wYXJ0LmMKLWluZGV4IDcwMDU0NDUuLjVlZmU1ZGMgMTAwNjQ0Ci0tLS0gYS9rcGFydHgvbG9wYXJ0LmMKLSsrKyBiL2twYXJ0eC9sb3BhcnQuYwotQEAgLTIyLDYgKzIyLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoLWF0dGVtcHQtYXQtY29tbW9uLW11bHRpcGF0aC5ydWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNDI2OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtYXR0ZW1wdC1hdC1jb21tb24tbXVsdGlwYXRoLnJ1bGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLUZyb20gNWFiNTBlMGNiODg4ZTU1M2EyNjM1YmJiZjgxZWVhM2NkZWZmZWU2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTIgQXByIDIwMTcgMDk6MDc6NTEgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xNF0gbXVsdGlwYXRoOiBhdHRlbXB0IGF0IGNvbW1vbiBtdWx0aXBhdGgucnVsZXMKLQotVGhpcyBpcyBhIHByb3Bvc2FsIHRvIHRyeSBhbmQgYnJpbmcgdGhlIFJlZGhhdCBhbmQgU3VTRSBtdWx0aXBhdGgucnVsZXMKLWNsb3Nlci4gVGhlcmUgYXJlIGEgY291cGxlIG9mIGNoYW5nZXMgdGhhdCBJJ2QgbGlrZSBzb21lIGlucHV0IG9uLgotCi1UaGUgYmlnIGNoYW5nZSBpcyBtb3ZpbmcgdGhlIGtwYXJ0eCBjYWxsIGludG8gdGhlIG11bHRpcGF0aCBydWxlcy4gIEhhbGYKLW9mIHRoZSBjdXJyZW50IGtwYXJ0eC5ydWxlcyBmaWxlIGlzIGFib3V0IGNyZWF0aW5nIHN5bWxpbmtzIGZvciBtdWx0aXBsZQotdHlwZXMgb2YgZG0gZGV2aWNlcy4gVGhlIG90aGVyIGhhbGYgYXV0by1jcmVhdGVzIGtwYXJ0eCBkZXZpY2VzIG9uIHRvcAotb2YgbXVsdGlwYXRoIGRldmljZXMuIFNpbmNlIGl0IGlzIG9ubHkgY3JlYXRpbmcga3BhcnR4IGRldmljZXMgb24gdG9wIG9mCi1tdWx0aXBhdGggZGV2aWNlcywgSSd2ZSBtb3ZlZCB0aGUgdGhlc2UgcnVsZXMgaW50byBtdWx0aXBhdGgucnVsZXMsIG9yCi1yYXRoZXIsIEkndmUgcmVwbGFjZWQgdGhlbSB3aXRoIHRoZSByZWRoYXQgcnVsZXMgaW4gbXVsdGlwYXRoLnJ1bGVzLiBUaGUKLWJpZ2dlc3QgZGlmZmVyZW5jZSBpcyB0aGUga3BhcnR4IGlzbid0IHJ1biBvbiBldmVyeSByZWxvYWQuICBJdCB3b3Jrcwotd2l0aCB0aGUgMTEtZG0tbXBhdGgucnVsZXMgY29kZSB0byBub3QgcnVuIGtwYXJ0eCBvbiBtdWx0aXBhdGhkCi1nZW5lcmF0ZWQgcmVsb2FkcyBvciB3aGVuIHRoZXJlIGFyZW4ndCBhbnkgd29ya2luZyBwYXRocy4gSXQgZG9lcwotcmVtZW1iZXIgaWYgaXQgZGlkbid0IGdldCB0byBydW4ga3BhcnR4IHdoZW4gaXQgd2FzIHN1cHBvc2VkIHRvIChiZWNhdXNlCi10aGVyZSB3ZXJlIG5vIHZhbGlkIHBhdGhzIG9yIHRoZSBkZXZpY2Ugd2FzIHN1c3BlbmRlZCkgYW5kIHdpbGwgbWFrZQotc3VyZSB0byBydW4gaXQgb24gdGhlIG5leHQgcG9zc2libGUgdWV2ZW50LgotCi1UaGUgb3RoZXIgY2hhbmdlIGlzIHRoZSByZWRoYXQgbXVsdGlwYXRoIHJ1bGVzIHJlbW92ZSB0aGUgcGFydGl0aW9uCi1kZXZpY2Ugbm9kZXMgZm9yIGRldmljZXMgY2xhaW1lZCBieSBtdWx0aXBhdGguIFRoZSB1ZGV2IHJ1bGUgd2lsbCBvbmx5Ci1kbyB0aGlzIG9uZSB0aW1lIChib3RoIHRvIGtlZXAgZnJvbSBydW5uaW5nIHBhcnR4IG9uIGV2ZXJ5IGV2ZW50LCBhbmQgc28KLXRoYXQgaWYgdXNlcnMgbWFudWFsbHkgcmVyZWFkIHRoZSBwYXJ0aXRpb24gdGFibGUsIHdlIGRvbid0IGtlZXAKLXJlbW92aW5nIHRoZW0gd2hlbiBjbGVhcmx5IHRoZXkgYXJlIHdhbnRlZCkuIFJlZGhhdCBkb2VzIHRoaXMgYmVjYXVzZSB3ZQotaGFkIG11bHRpcGxlIGN1c3RvbWVyIGlzc3VlcyB3aGVyZSB0aGV5IHdlcmUgdXNpbmcgdGhlIHNjc2kgcGFydGl0aW9ucwotaW5zdGVhZCBvZiB0aGUga3BhcnR4IGRldmljZXMuIE9idmlvdXNseSwgd2l0aCBzZXR0aW5nIHRoZSBwYXJ0aXRpb24KLWRldmljZXMgdG8gbm90IHJlYWR5IGFuZCBjbGVhcmluZyB0aGVpciBmc190eXBlLCB0aGlzIGlzbid0IGVzc2VudGlhbCwKLWJ1dCBpdCBoYXMgaGVscGVkIG1ha2UgY3VzdG9tZXJzIGRvIHRoZSByaWdodCB0aGluZy4KLQotU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgotLS0tCi0ga3BhcnR4L2twYXJ0eC5ydWxlcyAgICAgICB8ICA4IC0tLS0tLS0tCi0gbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9rcGFydHgva3BhcnR4LnJ1bGVzIGIva3BhcnR4L2twYXJ0eC5ydWxlcwotaW5kZXggYTk1ODc5MS4uOTA2ZTMyMCAxMDA2NDQKLS0tLSBhL2twYXJ0eC9rcGFydHgucnVsZXMKLSsrKyBiL2twYXJ0eC9rcGFydHgucnVsZXMKLUBAIC0zNCwxMiArMzQsNCBAQCBFTlZ7SURfRlNfTEFCRUxfRU5DfT09Ij8qIiwgSU1QT1JUe2RifT0iSURfRlNfTEFCRUxfRU5DIgotIEVOVntJRF9GU19VU0FHRX09PSJmaWxlc3lzdGVtfG90aGVyIiwgRU5We0lEX0ZTX0xBQkVMX0VOQ309PSI/KiIsIFwKLSAJU1lNTElOSys9ImRpc2svYnktbGFiZWwvJGVudntJRF9GU19MQUJFTF9FTkN9IgotIAotLSMgQ3JlYXRlIGRtIHRhYmxlcyBmb3IgcGFydGl0aW9ucwotLUVOVntETV9BQ1RJT059PT0iUEFUSF9GQUlMRUR8UEFUSF9SRUlOU1RBVEVEIiwgR09UTz0ia3BhcnR4X2VuZCIKLS1FTlZ7RE1fTlJfVkFMSURfUEFUSFN9PT0iMCIsIEdPVE89ImtwYXJ0eF9lbmQiCi0tRU5We0VOVntETV9VREVWX1BSSU1BUllfU09VUkNFX0ZMQUd9IT0iMSIsIElNUE9SVHtkYn09IkRNX1NVQlNZU1RFTV9VREVWX0ZMQUcxIgotLUVOVntETV9TVUJTWVNURU1fVURFVl9GTEFHMX09PSIxIiwgR09UTz0ia3BhcnR4X2VuZCIKLS1FTlZ7RE1fU1RBVEV9IT0iU1VTUEVOREVEIiwgRU5We0RNX1VVSUR9PT0ibXBhdGgtKiIsIFwKLS0JUlVOKz0iL3NiaW4va3BhcnR4IC11biAtcCAtcGFydCAvZGV2LyRuYW1lIgotLQotIExBQkVMPSJrcGFydHhfZW5kIgotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCi1pbmRleCA4NmRlZmMwLi42MTZhMDRjIDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcwotKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcwotQEAgLTEsMTMgKzEsMTMgQEAKLSAjIFNldCBETV9NVUxUSVBBVEhfREVWSUNFX1BBVEggaWYgdGhlIGRldmljZSBzaG91bGQgYmUgaGFuZGxlZCBieSBtdWx0aXBhdGgKLSBTVUJTWVNURU0hPSJibG9jayIsIEdPVE89ImVuZF9tcGF0aCIKLSBBQ1RJT04hPSJhZGR8Y2hhbmdlIiwgR09UTz0iZW5kX21wYXRoIgotLUtFUk5FTCE9InNkKnxkYXNkKiIsIEdPVE89ImVuZF9tcGF0aCIKLS0KLStLRVJORUwhPSJzZCp8ZGFzZCp8cmJkKnxkbS0qIiwgR09UTz0iZW5kX21wYXRoIgotIElNUE9SVHtjbWRsaW5lfT0ibm9tcGF0aCIKLSBFTlZ7bm9tcGF0aH09PSI/KiIsIEdPVE89ImVuZF9tcGF0aCIKLSBJTVBPUlR7Y21kbGluZX09Im11bHRpcGF0aCIKLSBFTlZ7bXVsdGlwYXRofT09Im9mZiIsIEdPVE89ImVuZF9tcGF0aCIKLSAKLStLRVJORUw9PSJkbS0qIiwgR09UTz0iY2hlY2tfa3BhcnR4IgotIEVOVntERVZUWVBFfSE9InBhcnRpdGlvbiIsIEdPVE89InRlc3RfZGV2IgotIElNUE9SVHtwYXJlbnR9PSJETV9NVUxUSVBBVEhfREVWSUNFX1BBVEgiCi0gRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH09PSIxIiwgRU5We0lEX0ZTX1RZUEV9PSJub25lIiwgXAotQEAgLTIxLDcgKzIxLDI4IEBAIFRFU1QhPSIkZW52e01QQVRIX1NCSU5fUEFUSH0vbXVsdGlwYXRoIiwgRU5We01QQVRIX1NCSU5fUEFUSH09Ii91c3Ivc2JpbiIKLSAKLSBFTlZ7RE1fTVVMVElQQVRIX0RFVklDRV9QQVRIfSE9IjEiLCBcCi0gCVBST0dSQU09PSIkZW52e01QQVRIX1NCSU5fUEFUSH0vbXVsdGlwYXRoIC11ICVrIiwgXAotLQlFTlZ7RE1fTVVMVElQQVRIX0RFVklDRV9QQVRIfT0iMSIsIEVOVntJRF9GU19UWVBFfT0ibm9uZSIsIFwKLSsJRU5We0RNX01VTFRJUEFUSF9ERVZJQ0VfUEFUSH09IjEiLCBFTlZ7SURfRlNfVFlQRX09Im1wYXRoX21lbWJlciIsIFwKLSAJRU5We1NZU1RFTURfUkVBRFl9PSIwIgotIAotK0VOVntETV9NVUxUSVBBVEhfREVWSUNFX1BBVEh9IT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKLSsKLStJTVBPUlR7ZGJ9PSJETV9NVUxUSVBBVEhfV0lQRV9QQVJUUyIKLStFTlZ7RE1fTVVMVElQQVRIX1dJUEVfUEFSVFN9IT0iMSIsIEVOVntETV9NVUxUSVBBVEhfV0lQRV9QQVJUU309IjEiLCBcCi0rCVJVTis9Ii9zYmluL3BhcnR4IC1kIC0tbnIgMS0xMDI0ICRlbnZ7REVWTkFNRX0iCi0rR09UTz0iZW5kX21wYXRoIgotKwotK0xBQkVMPSJjaGVja19rcGFydHgiCi0rCi0rSU1QT1JUe2RifT0iRE1fTVVMVElQQVRIX05FRURfS1BBUlRYIgotK0VOVntETV9VREVWX1BSSU1BUllfU09VUkNFX0ZMQUd9IT0iMSIsIElNUE9SVHtkYn09IkRNX1NVQlNZU1RFTV9VREVWX0ZMQUcxIgotK0VOVntETV9TVUJTWVNURU1fVURFVl9GTEFHMX09PSIxIiwgR09UTz0iZW5kX21wYXRoIgotK0FDVElPTiE9ImNoYW5nZSIsIEdPVE89ImVuZF9tcGF0aCIKLStFTlZ7RE1fVVVJRH0hPSJtcGF0aC0/KiIsIEdPVE89ImVuZF9tcGF0aCIKLStFTlZ7RE1fQUNUSVZBVElPTn09PSIxIiwgRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IjEiCi0rRU5We0RNX1NVU1BFTkRFRH09PSIxIiwgR09UTz0iZW5kX21wYXRoIgotK0VOVntETV9BQ1RJT059PT0iUEFUSF9GQUlMRUQiLCBHT1RPPSJlbmRfbXBhdGgiCi0rRU5We0RNX0FDVElWQVRJT059IT0iMSIsIEVOVntETV9NVUxUSVBBVEhfTkVFRF9LUEFSVFh9IT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKLStSVU4rPSIvc2Jpbi9rcGFydHggLXVuIC1wIC1wYXJ0IC9kZXYvJG5hbWUiCi0rRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IiIKLSsKLSBMQUJFTD0iZW5kX21wYXRoIgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMS1tdWx0aXBhdGgtdG9vbHMtYWRkLVJEQUMtU1VOLUFycmF5U3RvcmFnZS10by1od3RhYmxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoLXRvb2xzLWFkZC1SREFDLVNVTi1BcnJheVN0b3JhZ2UtdG8taHd0YWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDk4M2U5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDEtbXVsdGlwYXRoLXRvb2xzLWFkZC1SREFDLVNVTi1BcnJheVN0b3JhZ2UtdG8taHd0YWJsZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYb3NlIFZhenF1ZXogUGVyZXogPHhvc2UudmF6cXVlekBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDE1OjE0OjEzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aC10b29sczogYWRkIFJEQUMgU1VOL0FycmF5U3RvcmFnZSB0byBod3RhYmxlCisKK0FscmVhZHkgaW4gc2NzaV9kaDogaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvZHJpdmVycy9zY3NpL3Njc2lfZGguYyNuNzAKKworQ2M6IE5ldEFwcCBSREFDIHRlYW0gPG5nLWVzZXJpZXMtdXBzdHJlYW0tbWFpbnRhaW5lcnNAbmV0YXBwLmNvbT4KK0NjOiBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbT4KK0NjOiBETSBNTCA8ZG0tZGV2ZWxAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9od3RhYmxlLmMgfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2h3dGFibGUuYyBiL2xpYm11bHRpcGF0aC9od3RhYmxlLmMKK2luZGV4IDg4YjQ3MDAuLjgyN2U4OTkgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvaHd0YWJsZS5jCisrKysgYi9saWJtdWx0aXBhdGgvaHd0YWJsZS5jCitAQCAtODkwLDYgKzg5MCwxOCBAQCBzdGF0aWMgc3RydWN0IGh3ZW50cnkgZGVmYXVsdF9od1tdID0geworIAkJLm5vX3BhdGhfcmV0cnkgPSAzMCwKKyAJfSwKKyAJeworKwkJLnZlbmRvciAgICAgICAgPSAiU1VOIiwKKysJCS5wcm9kdWN0ICAgICAgID0gIkFycmF5U3RvcmFnZSIsCisrCQkuYmxfcHJvZHVjdCAgICA9ICJVbml2ZXJzYWwgWHBvcnQiLAorKwkJLnBncG9saWN5ICAgICAgPSBHUk9VUF9CWV9QUklPLAorKwkJLmNoZWNrZXJfbmFtZSAgPSBSREFDLAorKwkJLmZlYXR1cmVzICAgICAgPSAiMiBwZ19pbml0X3JldHJpZXMgNTAiLAorKwkJLmh3aGFuZGxlciAgICAgPSAiMSByZGFjIiwKKysJCS5wcmlvX25hbWUgICAgID0gUFJJT19SREFDLAorKwkJLnBnZmFpbGJhY2sgICAgPSAtRkFJTEJBQ0tfSU1NRURJQVRFLAorKwkJLm5vX3BhdGhfcmV0cnkgPSAzMCwKKysJfSwKKysJeworIAkJLyogWkZTIFN0b3JhZ2UgQXBwbGlhbmNlcyAqLworIAkJLnZlbmRvciAgICAgICAgPSAiU1VOIiwKKyAJCS5wcm9kdWN0ICAgICAgID0gIihTdW4gU3RvcmFnZXxaRlMgU3RvcmFnZXxDT01TVEFSKSIsCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAyLVJILWZpeHVwLXVkZXYtcnVsZXMtZm9yLXJlZGhhdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAyLVJILWZpeHVwLXVkZXYtcnVsZXMtZm9yLXJlZGhhdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzZDJlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMi1SSC1maXh1cC11ZGV2LXJ1bGVzLWZvci1yZWRoYXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotRnJvbSAxNTgyNTUzODNjMDJkM2ZiODFjODJmYjllYzZmZDM2ZmIyMzRmNjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAwNzoyMjoyMyAtMDUwMAotU3ViamVjdDogW1BBVENIIDAyLzE0XSBSSDogZml4dXAgdWRldiBydWxlcyBmb3IgcmVkaGF0Ci0KLVRoZSBtdWx0aXBhdGggcnVsZXMgbmVlZCB0byBydW4gYWZ0ZXIgc2NzaV9pZCBpcyBydW4uIFRoaXMgbWVhbnMgbW92aW5nCi10aGVtIGFmdGVyIDYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBmb3IgcmVkaGF0LiBBbHNvLCB3ZSBkb24ndAotY3VycmVudGx5IHNldCB1cCBhbGwgdGhlIHN5bWxpbmtzIHRoYXQgU3VTRSBkb2VzLiBJZiB3ZSB3YW50IHRoZW0sIHRoZXkKLXNob3VsZCBiZSBkb25lIGluIHRoZSBkZXZpY2UtbWFwcGVyIHBhY2thZ2UsIHNpbmNlIHRoZXkgYXJlIGZvciBhbGwKLWRldmljZS1tYXBwZXIgZGV2aWNlcy4gUmVkaGF0IGFsc28gdXNlcyBhIGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvcgotcGFydGl0aW9ucyB0aGFuIFN1U0UuCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIE1ha2VmaWxlLmluYyAgICAgICAgICAgICAgfCAgMiArLQotIGtwYXJ0eC9NYWtlZmlsZSAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQotIG11bHRpcGF0aC9NYWtlZmlsZSAgICAgICAgfCAgNCArKy0tCi0gbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyB8ICAzICsrLQotIDQgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKLWluZGV4IDE4MTVmOWEuLjI1OTFmYTkgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbmMKLSsrKyBiL01ha2VmaWxlLmluYwotQEAgLTQ3LDcgKzQ3LDcgQEAgZW5kaWYKLSAKLSBwcmVmaXgJCT0KLSBleGVjX3ByZWZpeAk9ICQocHJlZml4KQotLWJpbmRpcgkJPSAkKGV4ZWNfcHJlZml4KS9zYmluCi0rYmluZGlyCQk9ICQoZXhlY19wcmVmaXgpL3Vzci9zYmluCi0gbGlidWRldmRpcgk9ICQocHJlZml4KS8kKFNZU1RFTURQQVRIKS91ZGV2Ci0gdWRldnJ1bGVzZGlyCT0gJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kCi0gbXVsdGlwYXRoZGlyCT0gJChUT1BESVIpL2xpYm11bHRpcGF0aAotZGlmZiAtLWdpdCBhL2twYXJ0eC9NYWtlZmlsZSBiL2twYXJ0eC9NYWtlZmlsZQotaW5kZXggN2I3NTAzMi4uYmZhNmZlOCAxMDA2NDQKLS0tLSBhL2twYXJ0eC9NYWtlZmlsZQotKysrIGIva3BhcnR4L01ha2VmaWxlCi1AQCAtMjYsMTkgKzI2LDE5IEBAICQoRVhFQyk6ICQoT0JKUykKLSBpbnN0YWxsOiAkKEVYRUMpICQoRVhFQykuOAotIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQoYmluZGlyKQotIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKQotLQkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobGlidWRldmRpcikKLS0JJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBrcGFydHhfaWQgJChERVNURElSKSQobGlidWRldmRpcikKLS0JJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQKLS0JJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCBrcGFydHgucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ni1rcGFydHgucnVsZXMKLSsjCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKQotKyMJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBrcGFydHhfaWQgJChERVNURElSKSQobGlidWRldmRpcikKLSsjCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kCi0rIwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IGtwYXJ0eC5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY2LWtwYXJ0eC5ydWxlcwotIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuOGRpcikKLSAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLjguZ3ogJChERVNURElSKSQobWFuOGRpcikKLSAKLSB1bmluc3RhbGw6Ci0gCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvJChFWEVDKQotIAkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kKEVYRUMpLjguZ3oKLS0JJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikva3BhcnR4X2lkCi0tCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjYta3BhcnR4LnJ1bGVzCi0tCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjcta3BhcnR4LWNvbXBhdC5ydWxlcwotKyMJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikva3BhcnR4X2lkCi0rIwkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzY2LWtwYXJ0eC5ydWxlcwotKyMJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Ny1rcGFydHgtY29tcGF0LnJ1bGVzCi0gCi0gY2xlYW46Ci0gCSQoUk0pIGNvcmUgKi5vICQoRVhFQykgKi5negotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9NYWtlZmlsZSBiL211bHRpcGF0aC9NYWtlZmlsZQotaW5kZXggYzg1MzE0ZS4uMWU5ZWU0YiAxMDA2NDQKLS0tLSBhL211bHRpcGF0aC9NYWtlZmlsZQotKysrIGIvbXVsdGlwYXRoL01ha2VmaWxlCi1AQCAtMjQsNyArMjQsNyBAQCBpbnN0YWxsOgotIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKS8KLSAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKLSAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAxMS1kbS1tcGF0aC5ydWxlcyAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCi0tCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzU2LW11bHRpcGF0aC5ydWxlcwotKwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Mi1tdWx0aXBhdGgucnVsZXMKLSAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKG1hbjhkaXIpCi0gCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS44Lmd6ICQoREVTVERJUikkKG1hbjhkaXIpCi0gCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChtYW41ZGlyKQotQEAgLTMzLDcgKzMzLDcgQEAgaW5zdGFsbDoKLSB1bmluc3RhbGw6Ci0gCSQoUk0pICQoREVTVERJUikkKGJpbmRpcikvJChFWEVDKQotIAkkKFJNKSAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpLzExLWRtLW1wYXRoLnJ1bGVzCi0tCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNTYtbXVsdGlwYXRoLnJ1bGVzCi0rCSQoUk0pICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjItbXVsdGlwYXRoLnJ1bGVzCi0gCSQoUk0pICQoREVTVERJUikkKG1hbjhkaXIpLyQoRVhFQykuOC5negotIAkkKFJNKSAkKERFU1RESVIpJChtYW41ZGlyKS8kKEVYRUMpLmNvbmYuNS5negotIAotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCi1pbmRleCA2MTZhMDRjLi40ZDc4Yjk4IDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcwotKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcwotQEAgLTMzLDYgKzMzLDcgQEAgR09UTz0iZW5kX21wYXRoIgotIAotIExBQkVMPSJjaGVja19rcGFydHgiCi0gCi0rRU5We0RNX1VVSUR9PT0ibXBhdGgtPyp8cGFydFswLTldKi1tcGF0aC0/KiIsIE9QVElPTlMrPSJsaW5rX3ByaW9yaXR5PTEwIgotIElNUE9SVHtkYn09IkRNX01VTFRJUEFUSF9ORUVEX0tQQVJUWCIKLSBFTlZ7RE1fVURFVl9QUklNQVJZX1NPVVJDRV9GTEFHfSE9IjEiLCBJTVBPUlR7ZGJ9PSJETV9TVUJTWVNURU1fVURFVl9GTEFHMSIKLSBFTlZ7RE1fU1VCU1lTVEVNX1VERVZfRkxBRzF9PT0iMSIsIEdPVE89ImVuZF9tcGF0aCIKLUBAIC00Miw3ICs0Myw3IEBAIEVOVntETV9BQ1RJVkFUSU9OfT09IjEiLCBFTlZ7RE1fTVVMVElQQVRIX05FRURfS1BBUlRYfT0iMSIKLSBFTlZ7RE1fU1VTUEVOREVEfT09IjEiLCBHT1RPPSJlbmRfbXBhdGgiCi0gRU5We0RNX0FDVElPTn09PSJQQVRIX0ZBSUxFRCIsIEdPVE89ImVuZF9tcGF0aCIKLSBFTlZ7RE1fQUNUSVZBVElPTn0hPSIxIiwgRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH0hPSIxIiwgR09UTz0iZW5kX21wYXRoIgotLVJVTis9Ii9zYmluL2twYXJ0eCAtdW4gLXAgLXBhcnQgL2Rldi8kbmFtZSIKLStSVU4rPSIvc2Jpbi9rcGFydHggLXVuIC9kZXYvJG5hbWUiCi0gRU5We0RNX01VTFRJUEFUSF9ORUVEX0tQQVJUWH09IiIKLSAKLSBMQUJFTD0iZW5kX21wYXRoIgotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMi1tdWx0aXBhdGgtdG9vbHMtcmVtb3ZlLWMtZnJvbS1fX2NwbHVzY3BsdXMtbWlzc3BlbGxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDItbXVsdGlwYXRoLXRvb2xzLXJlbW92ZS1jLWZyb20tX19jcGx1c2NwbHVzLW1pc3NwZWxsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2YwMDBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDItbXVsdGlwYXRoLXRvb2xzLXJlbW92ZS1jLWZyb20tX19jcGx1c2NwbHVzLW1pc3NwZWxsZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYb3NlIFZhenF1ZXogUGVyZXogPHhvc2UudmF6cXVlekBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI0IEFwciAyMDE4IDE1OjAzOjQwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aC10b29sczogcmVtb3ZlICJjIiBmcm9tIF9fY3BsdXNjcGx1cywgbWlzc3BlbGxlZAorCitmb3VuZCBieSBjcHBjaGVjayhodHRwOi8vY3BwY2hlY2suc2YubmV0Lyk6CitbbGlibXBhdGhjbWQvbXBhdGhfY21kLmg6MjRdOiAoZXJyb3IpIEludmFsaWQgbnVtYmVyIG9mIGNoYXJhY3RlciAneycgd2hlbiB0aGVzZSBtYWNyb3MgYXJlIGRlZmluZWQ6ICdfX2NwbHVzY3BsdXMnLgorCitDYzogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorQ2M6IENocmlzdG9waGUgVmFyb3F1aSA8Y2hyaXN0b3BoZS52YXJvcXVpQG9wZW5zdmMuY29tPgorQ2M6IERNIE1MIDxkbS1kZXZlbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXBhdGhjbWQvbXBhdGhfY21kLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJtcGF0aGNtZC9tcGF0aF9jbWQuaCBiL2xpYm1wYXRoY21kL21wYXRoX2NtZC5oCitpbmRleCBhYWE4ZGE5Li5kZjlkOTM4IDEwMDY0NAorLS0tIGEvbGlibXBhdGhjbWQvbXBhdGhfY21kLmgKKysrKyBiL2xpYm1wYXRoY21kL21wYXRoX2NtZC5oCitAQCAtMjAsNyArMjAsNyBAQAorICNpZm5kZWYgTElCX01QQVRIX0NNRF9ICisgI2RlZmluZSBMSUJfTVBBVEhfQ01EX0gKKyAKKy0jaWZkZWYgX19jcGx1c2NwbHVzCisrI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAzLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDMtUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NGU5NTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDMtUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDY5YTY3YzJlZDA5YWU1MWI1M2RlNDAyOTY2YTlmN2E0Y2M3Mzc3MTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIgSnVsIDIwMTQgMTI6NDk6NTMgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xNF0gUkg6IFJlbW92ZSB0aGUgcHJvcGVydHkgYmxhY2tsaXN0IGV4Y2VwdGlvbiBidWlsdGluCi0KLU11bHRpcGF0aCBzZXQgdGhlIGRlZmF1bHQgcHJvcGVydHkgYmxhY2tsaXN0IGV4Y2VwdGlvbnMgdG8KLShJRF9TQ1NJX1ZQRHxJRF9XV04pLiAgVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBibGFja2xpc3Rpbmcgc29tZSBpbnRlcm5hbAotZGV2aWNlcy4gIFRoZXNlIGRldmljZXMgbWF5IG5ldmVyIGhhdmUgbXVsdGlwbGUgcGF0aHMsIGJ1dCBpdCBpcyBuaWNlCi10byBiZSBhYmxlIHRvIHNldCBtdWx0aXBhdGggdXAgb24gdGhlbSBhbGwgdGhlIHNhbWUuICBUaGlzIHBhdGNoIHNpbXBseQotcmVtb3ZlcyB0aGUgZGVmYXVsdCwgYW5kIG1ha2VzIGl0IHNvIHRoYXQgaWYgbm8gcHJvcGVydHkKLWJsYWNrbGlzdF9leGNlcHRpb24gaXMgZ2l2ZW4sIHRoZW4gZGV2aWNlcyBhcmVuJ3QgZmFpbGVkIGZvciBub3QgbWF0Y2hpbmcKLWl0LgotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMgICB8IDE1ICsrKysrKy0tLS0tLS0tLQotIG11bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IHwgIDQgLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYyBiL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYwotaW5kZXggZWUzOTZlMi4uMTlkNDY5NyAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYwotKysrIGIvbGlibXVsdGlwYXRoL2JsYWNrbGlzdC5jCi1AQCAtMTgxLDEyICsxODEsNiBAQCBzZXR1cF9kZWZhdWx0X2JsaXN0IChzdHJ1Y3QgY29uZmlnICogY29uZikKLSAJaWYgKHN0b3JlX2JsZShjb25mLT5ibGlzdF9kZXZub2RlLCBzdHIsIE9SSUdJTl9ERUZBVUxUKSkKLSAJCXJldHVybiAxOwotIAotLQlzdHIgPSBTVFJEVVAoIihTQ1NJX0lERU5UX3xJRF9XV04pIik7Ci0tCWlmICghc3RyKQotLQkJcmV0dXJuIDE7Ci0tCWlmIChzdG9yZV9ibGUoY29uZi0+ZWxpc3RfcHJvcGVydHksIHN0ciwgT1JJR0lOX0RFRkFVTFQpKQotLQkJcmV0dXJuIDE7Ci0tCi0gCXZlY3Rvcl9mb3JlYWNoX3Nsb3QgKGNvbmYtPmh3dGFibGUsIGh3ZSwgaSkgewotIAkJaWYgKGh3ZS0+YmxfcHJvZHVjdCkgewotIAkJCWlmIChfYmxhY2tsaXN0X2RldmljZShjb25mLT5ibGlzdF9kZXZpY2UsIGh3ZS0+dmVuZG9yLAotQEAgLTM5MCw5ICszODQsMTIgQEAgZmlsdGVyX3Byb3BlcnR5KHN0cnVjdCBjb25maWcgKiBjb25mLCBzdHJ1Y3QgdWRldl9kZXZpY2UgKiB1ZGV2KQotIAkgKiBUaGlzIGlzIHRoZSBpbnZlcnNlIG9mIHRoZSAnbm9ybWFsJyBtYXRjaGluZzsKLSAJICogdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIF9oYXNfIHRvIG1hdGNoLgotIAkgKi8KLS0JbG9nX2ZpbHRlcihkZXZuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotLQkJICAgTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORyk7Ci0tCXJldHVybiBNQVRDSF9QUk9QRVJUWV9CTElTVF9NSVNTSU5HOwotKwlpZiAoVkVDVE9SX1NJWkUoY29uZi0+ZWxpc3RfcHJvcGVydHkpKSB7Ci0rCQlsb2dfZmlsdGVyKGRldm5hbWUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCi0rCQkJICAgTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORyk7Ci0rCQlyZXR1cm4gTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORzsKLSsJfQotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gdm9pZAotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKLWluZGV4IGYwNGZmMTkuLmZiYmJiMjcgMTAwNjQ0Ci0tLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQotKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKLUBAIC0xMDE0LDEwICsxMDE0LDYgQEAgVGhlIFxmSVdvcmxkIFdpZGUgSWRlbnRpZmljYXRpb25cZlIgb2YgYSBkZXZpY2UuCi0gLlRQCi0gLkIgcHJvcGVydHkKLSBSZWd1bGFyIGV4cHJlc3Npb24gb2YgdGhlIHVkZXYgcHJvcGVydHkgdG8gYmUgd2hpdGVsaXN0ZWQuCi0tLlJTCi0tLlRQCi0tVGhlIGRlZmF1bHQgaXM6IFxmQihTQ1NJX0lERU5UX3xJRF9XV04pXGZSCi0tLlJFCi0gLlRQCi0gLkIgZGV2aWNlCi0gU3Vic2VjdGlvbiBmb3IgdGhlIGRldmljZSBkZXNjcmlwdGlvbi4gVGhpcyBzdWJzZWN0aW9uIHJlY29nbml6ZXMgdGhlCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDAzLW11bHRpcGF0aC10b29scy1yZW1vdmUtZW1hY3MtYXV0b2NvbmZpZy1vZi1rcGFydHgtZ3AucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMy1tdWx0aXBhdGgtdG9vbHMtcmVtb3ZlLWVtYWNzLWF1dG9jb25maWctb2Yta3BhcnR4LWdwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNThlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwMy1tdWx0aXBhdGgtdG9vbHMtcmVtb3ZlLWVtYWNzLWF1dG9jb25maWctb2Yta3BhcnR4LWdwLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTIgQXByIDIwMTggMTg6MTc6MTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoLXRvb2xzOiByZW1vdmUgZW1hY3MgYXV0b2NvbmZpZyBvZiBrcGFydHgvZ3B0LmgKKworQ2M6IENocmlzdG9waGUgVmFyb3F1aSA8Y2hyaXN0b3BoZS52YXJvcXVpQG9wZW5zdmMuY29tPgorQ2M6IERNIE1MIDxkbS1kZXZlbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisga3BhcnR4L2dwdC5oIHwgMTkgLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2twYXJ0eC9ncHQuaCBiL2twYXJ0eC9ncHQuaAoraW5kZXggNjZjZThmMS4uN2JiNTRiNyAxMDA2NDQKKy0tLSBhL2twYXJ0eC9ncHQuaAorKysrIGIva3BhcnR4L2dwdC5oCitAQCAtMTA5LDIyICsxMDksMyBAQCBpbnQgcmVhZF9ncHRfcHQgKGludCBmZCwgc3RydWN0IHNsaWNlIGFsbCwgc3RydWN0IHNsaWNlICpzcCwgaW50IG5zKTsKKyAKKyAKKyAjZW5kaWYKKy0KKy0vKgorLSAqIE92ZXJyaWRlcyBmb3IgRW1hY3Mgc28gdGhhdCB3ZSBmb2xsb3cgTGludXMncyB0YWJiaW5nIHN0eWxlLgorLSAqIEVtYWNzIHdpbGwgbm90aWNlIHRoaXMgc3R1ZmYgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBhbmQgYXV0b21hdGljYWxseQorLSAqIGFkanVzdCB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgYnVmZmVyIG9ubHkuICBUaGlzIG11c3QgcmVtYWluIGF0IHRoZSBlbmQKKy0gKiBvZiB0aGUgZmlsZS4KKy0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gKiBMb2NhbCB2YXJpYWJsZXM6CistICogYy1pbmRlbnQtbGV2ZWw6IDQKKy0gKiBjLWJyYWNlLWltYWdpbmFyeS1vZmZzZXQ6IDAKKy0gKiBjLWJyYWNlLW9mZnNldDogLTQKKy0gKiBjLWFyZ2RlY2wtaW5kZW50OiA0CistICogYy1sYWJlbC1vZmZzZXQ6IC00CistICogYy1jb250aW51ZWQtc3RhdGVtZW50LW9mZnNldDogNAorLSAqIGMtY29udGludWVkLWJyYWNlLW9mZnNldDogMAorLSAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorLSAqIHRhYi13aWR0aDogOAorLSAqIEVuZDoKKy0gKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtUkgtZG9uLXQtc3RhcnQtd2l0aG91dC1hLWNvbmZpZy1maWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtUkgtZG9uLXQtc3RhcnQtd2l0aG91dC1hLWNvbmZpZy1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2E2ZDNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA0LVJILWRvbi10LXN0YXJ0LXdpdGhvdXQtYS1jb25maWctZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi1Gcm9tIGIyYjUwNGZjMTk1OWM3YTNmMGE4NDNjM2MyMDRlOGUxOTNiNjc1YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE1IE9jdCAyMDE0IDEwOjM5OjMwIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTRdIFJIOiBkb24ndCBzdGFydCB3aXRob3V0IGEgY29uZmlnIGZpbGUKLQotSWYgL2V0Yy9tdWx0aXBhdGguY29uZiBkb2Vzbid0IGV4aXN0LCBkb24ndCBzdGFydCBtdWx0aXBhdGhkIGFuZCBibGFja2xpc3QKLWFsbCBkZXZpY2VzIHdoZW4gcnVubmluZyBtdWx0aXBhdGguICBBIGNvbXBsZXRlbHkgYmxhbmsgY29uZmlndXJhdGlvbiBmaWxlCi1pcyBhbG1vc3QgbmV2ZXIgd2hhdCB1c2VycyB3YW50LiAgQWxzbywgcGVvcGxlIG1heSBoYXZlIHRoZSBtdWx0aXBhdGgKLXBhY2thZ2VzIGluc3RhbGxlZCBidXQgZG9uJ3Qgd2FudCB0byB1c2UgdGhlbS4gIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYQotc2ltcGxlIHdheSB0byBkaXNhYmxlIG11bHRpcGF0aC4gIFNpbXBseSByZW1vdmluZyBvciByZW5hbWluZwotL2V0Yy9tdWx0aXBhdGguY29uZiB3aWxsIGtlZXAgbXVsdGlwYXRoIGZyb20gZG9pbmcgYW55dGhpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIGxpYm11bHRpcGF0aC9jb25maWcuYyAgICAgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKLSBsaWJtdWx0aXBhdGgvY29uZmlnLmggICAgICAgICB8ICAxICsKLSBtdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzICAgICB8ICAxICsKLSBtdWx0aXBhdGhkL211bHRpcGF0aGQuOCAgICAgICB8ICAyICsrCi0gbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgfCAgMSArCi0gNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKLWluZGV4IGJiNjYxOWIuLmFhZTY5YjggMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKLSsrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYwotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSAicHJpby5oIgotICNpbmNsdWRlICJkZXZtYXBwZXIuaCIKLSAjaW5jbHVkZSAibXBhdGhfY21kLmgiCi0rI2luY2x1ZGUgInZlcnNpb24uaCIKLSAKLSBzdGF0aWMgaW50Ci0gaHdlX3N0cm1hdGNoIChzdHJ1Y3QgaHdlbnRyeSAqaHdlMSwgc3RydWN0IGh3ZW50cnkgKmh3ZTIpCi1AQCAtNjY3LDYgKzY2OCwyMiBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCi0gCQkJZmFjdG9yaXplX2h3dGFibGUoY29uZi0+aHd0YWJsZSwgYnVpbHRpbl9od3RhYmxlX3NpemUpOwotIAkJfQotIAotKwl9IGVsc2UgewotKwkJY29uZGxvZygwLCAiL2V0Yy9tdWx0aXBhdGguY29uZiBkb2VzIG5vdCBleGlzdCwgYmxhY2tsaXN0aW5nIGFsbCBkZXZpY2VzLiIpOwotKwkJY29uZGxvZygwLCAiQSBkZWZhdWx0IG11bHRpcGF0aC5jb25mIGZpbGUgaXMgbG9jYXRlZCBhdCIpOwotKwkJY29uZGxvZygwLCAiL3Vzci9zaGFyZS9kb2MvZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgtJWQuJWQuJWQvbXVsdGlwYXRoLmNvbmYiLCBNVUxUSVBBVEhfVkVSU0lPTihWRVJTSU9OX0NPREUpKTsKLSsJCWlmIChjb25mLT5ibGlzdF9kZXZub2RlID09IE5VTEwpIHsKLSsJCQljb25mLT5ibGlzdF9kZXZub2RlID0gdmVjdG9yX2FsbG9jKCk7Ci0rCQkJaWYgKCFjb25mLT5ibGlzdF9kZXZub2RlKSB7Ci0rCQkJCWNvbmRsb2coMCwgImNhbm5vdCBhbGxvY2F0ZSBibGFja2xpc3RcbiIpOwotKwkJCQlnb3RvIG91dDsKLSsJCQl9Ci0rCQl9Ci0rCQlpZiAoc3RvcmVfYmxlKGNvbmYtPmJsaXN0X2Rldm5vZGUsIHN0cmR1cCgiLioiKSwKLSsJCSAgICAgICAgICAgICAgT1JJR0lOX05PX0NPTkZJRykpIHsKLSsJCQljb25kbG9nKDAsICJjYW5ub3Qgc3RvcmUgZGVmYXVsdCBuby1jb25maWcgYmxhY2tsaXN0XG4iKTsKLSsJCQlnb3RvIG91dDsKLSsJCX0KLSAJfQotIAotIAljb25mLT5wcm9jZXNzZWRfbWFpbl9jb25maWcgPSAxOwotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuaCBiL2xpYm11bHRpcGF0aC9jb25maWcuaAotaW5kZXggZmZjNjliNS4uNjE0MzMxYyAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuaAotKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5oCi1AQCAtNyw2ICs3LDcgQEAKLSAKLSAjZGVmaW5lIE9SSUdJTl9ERUZBVUxUIDAKLSAjZGVmaW5lIE9SSUdJTl9DT05GSUcgIDEKLSsjZGVmaW5lIE9SSUdJTl9OT19DT05GSUcgMgotIAotIC8qCi0gICogSW4ga2VybmVsLCBmYXN0X2lvX2ZhaWwgPT0gMCBtZWFucyBpbW1lZGlhdGUgZmFpbHVyZSBvbiBycG9ydCBkZWxldGUuCi1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcyBiL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMKLWluZGV4IDRkNzhiOTguLjU3NTM3NjYgMTAwNjQ0Ci0tLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCi0rKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCi1AQCAtNiw2ICs2LDcgQEAgSU1QT1JUe2NtZGxpbmV9PSJub21wYXRoIgotIEVOVntub21wYXRofT09Ij8qIiwgR09UTz0iZW5kX21wYXRoIgotIElNUE9SVHtjbWRsaW5lfT0ibXVsdGlwYXRoIgotIEVOVnttdWx0aXBhdGh9PT0ib2ZmIiwgR09UTz0iZW5kX21wYXRoIgotK1RFU1QhPSIvZXRjL211bHRpcGF0aC5jb25mIiwgR09UTz0iZW5kX21wYXRoIgotIAotIEtFUk5FTD09ImRtLSoiLCBHT1RPPSJjaGVja19rcGFydHgiCi0gRU5We0RFVlRZUEV9IT0icGFydGl0aW9uIiwgR09UTz0idGVzdF9kZXYiCi1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLjggYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuOAotaW5kZXggNGM3NjVhZi4uYzE0OTlhNSAxMDA2NDQKLS0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC44Ci0rKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuOAotQEAgLTM5LDYgKzM5LDggQEAgbWFwIHJlZ2FpbnMgaXRzIG1heGltdW0gcGVyZm9ybWFuY2UgYW5kIHJlZHVuZGFuY3kuCi0gVGhpcyBkYWVtb24gZXhlY3V0ZXMgdGhlIGV4dGVybmFsIFxmQm11bHRpcGF0aFxmUiB0b29sIHdoZW4gZXZlbnRzIG9jY3VyLgotIEluIHR1cm4sIHRoZSBtdWx0aXBhdGggdG9vbCBzaWduYWxzIHRoZSBtdWx0aXBhdGhkIGRhZW1vbiB3aGVuIGl0IGlzIGRvbmUgd2l0aAotIGRldm1hcCByZWNvbmZpZ3VyYXRpb24sIHNvIHRoYXQgaXQgY2FuIHJlZnJlc2ggaXRzIGZhaWxlZCBwYXRoIGxpc3QuCi0rCi0rSW4gdGhpcyBMaW51eCBkaXN0cmlidXRpb24sIG11bHRpcGF0aGQgZG9lcyBub3QgcnVuIHVubGVzcyBhIC9ldGMvbXVsdGlwYXRoLmNvbmZmaWxlIGV4aXN0cwotIC4KLSAuCi0gLlwiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWRpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi1pbmRleCBmZDY2Y2Y2Li5mYWZkMDg4IDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKLSsrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi1AQCAtNCw2ICs0LDcgQEAgV2FudHM9c3lzdGVtZC11ZGV2LXRyaWdnZXIuc2VydmljZSBzeXN0ZW1kLXVkZXYtc2V0dGxlLnNlcnZpY2UKLSBCZWZvcmU9aXNjc2kuc2VydmljZSBpc2NzaWQuc2VydmljZSBsdm0yLWx2bWV0YWQuc2VydmljZSBsdm0yLWFjdGl2YXRpb24tZWFybHkuc2VydmljZQotIEJlZm9yZT1sb2NhbC1mcy1wcmUudGFyZ2V0IGJsay1hdmFpbGFiaWxpdHkuc2VydmljZQotIEFmdGVyPW11bHRpcGF0aGQuc29ja2V0IHN5c3RlbWQtdWRldi10cmlnZ2VyLnNlcnZpY2Ugc3lzdGVtZC11ZGV2LXNldHRsZS5zZXJ2aWNlCi0rQ29uZGl0aW9uUGF0aEV4aXN0cz0vZXRjL211bHRpcGF0aC5jb25mCi0gRGVmYXVsdERlcGVuZGVuY2llcz1ubwotIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKLSBDb25kaXRpb25LZXJuZWxDb21tYW5kTGluZT0hbm9tcGF0aAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNC1tdWx0aXBhdGgtdG9vbHMtcmVwbGFjZS1GU0YtYWRkcmVzcy13aXRoLWEtd3d3LXBvaW50LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtbXVsdGlwYXRoLXRvb2xzLXJlcGxhY2UtRlNGLWFkZHJlc3Mtd2l0aC1hLXd3dy1wb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2YxOGI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDQtbXVsdGlwYXRoLXRvb2xzLXJlcGxhY2UtRlNGLWFkZHJlc3Mtd2l0aC1hLXd3dy1wb2ludC5wYXRjaApAQCAtMCwwICsxLDE5MSBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMSBNYXkgMjAxOCAxNTo0Mjo0MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBtdWx0aXBhdGgtdG9vbHM6IHJlcGxhY2UgRlNGIGFkZHJlc3Mgd2l0aCBhIHd3dyBwb2ludGVyCisKK0xlc3MgcHJvbmUgdG8gZnV0dXJlIG1vZGlmaWNhdGlvbnMsIG5ldyBGU0YgbGljZW5jZXMKK3BvaW50IGV4YWN0bHkgdG8gdGhpcyB1cmw6IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KK0FuZCBzZW5kaW5nIGEgc21haWwgdG8gRlNGIGlzIG91dGRhdGVkLgorCitGaXJzdCBjbGVhbiB1cCB3YXMgZG9uZSBpbiA1NjE5YTM5YzQzM2FjM2QxMGE4ODA3OTU5M2NlYzFhYTY0NzJjYmViCisKK0NjOiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK0NjOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitDYzogQ2hyaXN0b3BoZSBWYXJvcXVpIDxjaHJpc3RvcGhlLnZhcm9xdWlAb3BlbnN2Yy5jb20+CitDYzogRE0gTUwgPGRtLWRldmVsQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBYb3NlIFZhenF1ZXogUGVyZXogPHhvc2UudmF6cXVlekBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvZG0tZ2VuZXJpYy5jICAgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZG0tZ2VuZXJpYy5oICAgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZm9yZWlnbi5jICAgICAgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZm9yZWlnbi5oICAgICAgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZm9yZWlnbi9udm1lLmMgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZ2VuZXJpYy5jICAgICAgfCA0ICstLS0KKyBsaWJtdWx0aXBhdGgvZ2VuZXJpYy5oICAgICAgfCA0ICstLS0KKyB0ZXN0cy9kbWV2ZW50cy5jICAgICAgICAgICAgfCAyICstCisgdGVzdHMvcGFyc2VyLmMgICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3VldmVudC5jICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy91dGlsLmMgICAgICAgICAgICAgICAgfCAyICstCisgMTEgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZG0tZ2VuZXJpYy5jIGIvbGlibXVsdGlwYXRoL2RtLWdlbmVyaWMuYworaW5kZXggYmRjOWNhMC4uZDc1Mjk5MSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9kbS1nZW5lcmljLmMKKysrKyBiL2xpYm11bHRpcGF0aC9kbS1nZW5lcmljLmMKK0BAIC0xMiw5ICsxMiw3IEBACisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLAorLSAgVVNBLgorKyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLworIAorICNpbmNsdWRlIDxzdGRpbnQuaD4KK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZG0tZ2VuZXJpYy5oIGIvbGlibXVsdGlwYXRoL2RtLWdlbmVyaWMuaAoraW5kZXggNWQ1OTcyNC4uOTg2NDI5ZiAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9kbS1nZW5lcmljLmgKKysrKyBiL2xpYm11bHRpcGF0aC9kbS1nZW5lcmljLmgKK0BAIC0xMiw5ICsxMiw3IEBACisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLAorLSAgVVNBLgorKyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqLworICNpZm5kZWYgX0RNX0dFTkVSSUNfSAorICNkZWZpbmUgX0RNX0dFTkVSSUNfSAorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9mb3JlaWduLmMgYi9saWJtdWx0aXBhdGgvZm9yZWlnbi5jCitpbmRleCA3MjE3MTg0Li44MGIzOTliIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2ZvcmVpZ24uYworKysrIGIvbGlibXVsdGlwYXRoL2ZvcmVpZ24uYworQEAgLTEyLDkgKzEyLDcgQEAKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsCistICBVU0EuCisrICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyAKKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9mb3JlaWduLmggYi9saWJtdWx0aXBhdGgvZm9yZWlnbi5oCitpbmRleCA5NzNmMzY4Li42OTdmMTJmIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2ZvcmVpZ24uaAorKysrIGIvbGlibXVsdGlwYXRoL2ZvcmVpZ24uaAorQEAgLTEyLDkgKzEyLDcgQEAKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsCistICBVU0EuCisrICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyAjaWZuZGVmIF9GT1JFSUdOX0gKKyAjZGVmaW5lIF9GT1JFSUdOX0gKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZm9yZWlnbi9udm1lLmMgYi9saWJtdWx0aXBhdGgvZm9yZWlnbi9udm1lLmMKK2luZGV4IDIzNWY3NWQuLjI4MGI2YmQgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZm9yZWlnbi9udm1lLmMKKysrKyBiL2xpYm11bHRpcGF0aC9mb3JlaWduL252bWUuYworQEAgLTEyLDkgKzEyLDcgQEAKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsCistICBVU0EuCisrICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKyAKKyAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9nZW5lcmljLmMgYi9saWJtdWx0aXBhdGgvZ2VuZXJpYy5jCitpbmRleCA2ZjdhMmNkLi4wZDFlNjMyIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2dlbmVyaWMuYworKysrIGIvbGlibXVsdGlwYXRoL2dlbmVyaWMuYworQEAgLTEyLDkgKzEyLDcgQEAKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsCistICBVU0EuCisrICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgICovCisgCisgCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2dlbmVyaWMuaCBiL2xpYm11bHRpcGF0aC9nZW5lcmljLmgKK2luZGV4IDdmN2ZlNjYuLjYzNDZmZmUgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZ2VuZXJpYy5oCisrKysgYi9saWJtdWx0aXBhdGgvZ2VuZXJpYy5oCitAQCAtMTIsOSArMTIsNyBAQAorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSwKKy0gIFVTQS4KKysgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgKi8KKyAjaWZuZGVmIF9HRU5FUklDX0gKKyAjZGVmaW5lIF9HRU5FUklDX0gKK2RpZmYgLS1naXQgYS90ZXN0cy9kbWV2ZW50cy5jIGIvdGVzdHMvZG1ldmVudHMuYworaW5kZXggYmJhNTFkYy4uMzM5OWM4MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RtZXZlbnRzLmMKKysrKyBiL3Rlc3RzL2RtZXZlbnRzLmMKK0BAIC0xMiw3ICsxMiw3IEBACisgICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAgKgorICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgICoKKyAgKi8KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9wYXJzZXIuYyBiL3Rlc3RzL3BhcnNlci5jCitpbmRleCBhN2U3NTk4Li4yOTg1OWRhIDEwMDY0NAorLS0tIGEvdGVzdHMvcGFyc2VyLmMKKysrKyBiL3Rlc3RzL3BhcnNlci5jCitAQCAtMTIsNyArMTIsNyBAQAorICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICoKKyAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqCisgICovCisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvdWV2ZW50LmMgYi90ZXN0cy91ZXZlbnQuYworaW5kZXggYWNmY2IxNC4uYjBkMGJmZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3VldmVudC5jCisrKysgYi90ZXN0cy91ZXZlbnQuYworQEAgLTEyLDcgKzEyLDcgQEAKKyAgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICAqCisgICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgKgorICAqLworIAorZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWwuYyBiL3Rlc3RzL3V0aWwuYworaW5kZXggMTEzYjEzNC4uODM5ZWZmZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3V0aWwuYworKysrIGIvdGVzdHMvdXRpbC5jCitAQCAtMTIsNyArMTIsNyBAQAorICAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgICoKKyAgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICAqCisgICovCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNS1SSC1hZGQtbXBhdGhjb25mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2VmNDEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NDggKzAsMCBAQAotRnJvbSBkZTQ0NTA0ZmU3Zjc4MDJjZDQ3NGVmZDkyYWMxNWI1YTg4NTdkYjFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNiBPY3QgMjAxNCAxNTo0OTowMSAtMDUwMAotU3ViamVjdDogW1BBVENIIDA1LzE0XSBSSDogYWRkIG1wYXRoY29uZgotCi1tcGF0aGNvbmYgaXMgYSBwcm9ncmFtIChsYXJnZWx5IGJhc2VkIG9uIGx2bWNvbWYpIHRvIGhlbHAgdXNlcnMKLWNvbmZpZ3VyZSAvZXRjL211bHRpcGF0aC5jb25mIGFuZCBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBhdGhpbmcuICBJdAotaGFzIGEgY291cGxlIG9mIGJ1aWx0LWluIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0IGRpcmVjdGx5IGZyb20gdGhlCi1jb21tYW5kIGxpbmUuICBCdXQsIG1vc3RseSBpdCBpcyB1c2VkIHRvIGdldCBhIG11bHRpcGF0aC5jb25mIGZpbGUKLXdpdGggdGhlIE9TIGRlZmF1bHRzLCBhbmQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIG11bHRpcGF0aGluZyB2aWEKLWEgc2luZ2xlIGNvbW1hbmQuCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIGxpYm11bHRpcGF0aC9jb25maWcuYyB8ICAgMSArCi0gbXVsdGlwYXRoL01ha2VmaWxlICAgIHwgICA1ICsKLSBtdWx0aXBhdGgvbXBhdGhjb25mICAgfCA0NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBtdWx0aXBhdGgvbXBhdGhjb25mLjggfCAxMDEgKysrKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDU3MSBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG11bHRpcGF0aC9tcGF0aGNvbmYKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbXVsdGlwYXRoL21wYXRoY29uZi44Ci0KLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKLWluZGV4IGFhZTY5YjguLmM0ODU3NDggMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKLSsrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYwotQEAgLTY3Miw2ICs2NzIsNyBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCi0gCQljb25kbG9nKDAsICIvZXRjL211bHRpcGF0aC5jb25mIGRvZXMgbm90IGV4aXN0LCBibGFja2xpc3RpbmcgYWxsIGRldmljZXMuIik7Ci0gCQljb25kbG9nKDAsICJBIGRlZmF1bHQgbXVsdGlwYXRoLmNvbmYgZmlsZSBpcyBsb2NhdGVkIGF0Iik7Ci0gCQljb25kbG9nKDAsICIvdXNyL3NoYXJlL2RvYy9kZXZpY2UtbWFwcGVyLW11bHRpcGF0aC0lZC4lZC4lZC9tdWx0aXBhdGguY29uZiIsIE1VTFRJUEFUSF9WRVJTSU9OKFZFUlNJT05fQ09ERSkpOwotKwkJY29uZGxvZygwLCAiWW91IGNhbiBydW4gL3NiaW4vbXBhdGhjb25mIHRvIGNyZWF0ZSBvciBtb2RpZnkgL2V0Yy9tdWx0aXBhdGguY29uZiIpOwotIAkJaWYgKGNvbmYtPmJsaXN0X2Rldm5vZGUgPT0gTlVMTCkgewotIAkJCWNvbmYtPmJsaXN0X2Rldm5vZGUgPSB2ZWN0b3JfYWxsb2MoKTsKLSAJCQlpZiAoIWNvbmYtPmJsaXN0X2Rldm5vZGUpIHsKLWRpZmYgLS1naXQgYS9tdWx0aXBhdGgvTWFrZWZpbGUgYi9tdWx0aXBhdGgvTWFrZWZpbGUKLWluZGV4IDFlOWVlNGIuLjNkNGQ0NTkgMTAwNjQ0Ci0tLS0gYS9tdWx0aXBhdGgvTWFrZWZpbGUKLSsrKyBiL211bHRpcGF0aC9NYWtlZmlsZQotQEAgLTE4LDEwICsxOCwxMiBAQCAkKEVYRUMpOiAkKE9CSlMpCi0gCSQoQ0MpICQoQ0ZMQUdTKSAkKE9CSlMpIC1vICQoRVhFQykgJChMREZMQUdTKSAkKExJQkRFUFMpCi0gCSQoR1pJUCkgJChFWEVDKS44ID4gJChFWEVDKS44Lmd6Ci0gCSQoR1pJUCkgJChFWEVDKS5jb25mLjUgPiAkKEVYRUMpLmNvbmYuNS5negotKwkkKEdaSVApIG1wYXRoY29uZi44ID4gbXBhdGhjb25mLjguZ3oKLSAKLSBpbnN0YWxsOgotIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQoYmluZGlyKQotIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNzU1ICQoRVhFQykgJChERVNURElSKSQoYmluZGlyKS8KLSsJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSBtcGF0aGNvbmYgJChERVNURElSKSQoYmluZGlyKS8KLSAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKHVkZXZydWxlc2RpcikKLSAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAxMS1kbS1tcGF0aC5ydWxlcyAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCi0gCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5ydWxlcyAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcwotQEAgLTI5LDEzICszMSwxNiBAQCBpbnN0YWxsOgotIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykuOC5neiAkKERFU1RESVIpJChtYW44ZGlyKQotIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuNWRpcikKLSAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLmNvbmYuNS5neiAkKERFU1RESVIpJChtYW41ZGlyKQotKwkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0IG1wYXRoY29uZi44Lmd6ICQoREVTVERJUikkKG1hbjhkaXIpCi0gCi0gdW5pbnN0YWxsOgotIAkkKFJNKSAkKERFU1RESVIpJChiaW5kaXIpLyQoRVhFQykKLSAJJChSTSkgJChERVNURElSKSQodWRldnJ1bGVzZGlyKS8xMS1kbS1tcGF0aC5ydWxlcwotIAkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcwotKwkkKFJNKSAkKERFU1RESVIpJChiaW5kaXIpL21wYXRoY29uZgotIAkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kKEVYRUMpLjguZ3oKLSAJJChSTSkgJChERVNURElSKSQobWFuNWRpcikvJChFWEVDKS5jb25mLjUuZ3oKLSsJJChSTSkgJChERVNURElSKSQobWFuOGRpcikvbXBhdGhjb25mLjguZ3oKLSAKLSBjbGVhbjoKLSAJJChSTSkgY29yZSAqLm8gJChFWEVDKSAqLmd6Ci1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL21wYXRoY29uZiBiL211bHRpcGF0aC9tcGF0aGNvbmYKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lODM5MTM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9tdWx0aXBhdGgvbXBhdGhjb25mCi1AQCAtMCwwICsxLDQ2NCBAQAotKyMhL2Jpbi9iYXNoCi0rIwotKyMgQ29weXJpZ2h0IChDKSAyMDEwIFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZGV2aWNlLW1hcHBlci1tdWx0aXBhdGggcGFja2FnZS4KLSsjCi0rIyBUaGlzIGNvcHlyaWdodGVkIG1hdGVyaWFsIGlzIG1hZGUgYXZhaWxhYmxlIHRvIGFueW9uZSB3aXNoaW5nIHRvIHVzZSwKLSsjIG1vZGlmeSwgY29weSwgb3IgcmVkaXN0cmlidXRlIGl0IHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCi0rIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugdi4yLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQotKwotKyMKLSsjIFNpbXBsZSBlZGl0dGluZyBvZiAvZXRjL211bHRpcGF0aC5jb25mCi0rIyBUaGlzIHByb2dyYW0gd2FzIGxhcmdlbHkgcmlwcGVkIG9mZiBmcm9tIGx2bWNvbmYKLSsjCi0rCi0rdW5zZXQgRU5BQkxFIEZJTkQgRlJJRU5ETFkgTU9EVUxFIE1VTFRJUEFUSEQgSEFWRV9ESVNBQkxFIEhBVkVfV1dJRF9ESVNBQkxFIEhBVkVfRklORCBIQVZFX0JMQUNLTElTVCBIQVZFX0VYQ0VQVElPTlMgSEFWRV9ERUZBVUxUUyBIQVZFX0ZSSUVORExZIEhBVkVfTVVMVElQQVRIRCBIQVZFX01PRFVMRSBIQVZFX09VVEZJTEUgU0hPV19TVEFUVVMgQ0hBTkdFRF9DT05GSUcgV1dJRF9MSVNUCi0rCi0rREVGQVVMVF9DT05GSUc9IiMgZGV2aWNlLW1hcHBlci1tdWx0aXBhdGggY29uZmlndXJhdGlvbiBmaWxlCi0rCi0rIyBGb3IgYSBjb21wbGV0ZSBsaXN0IG9mIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdmFsdWVzLCBydW4gZWl0aGVyOgotKyMgIyBtdWx0aXBhdGggLXQKLSsjIG9yCi0rIyAjIG11bHRpcGF0aGQgc2hvdyBjb25maWcKLSsKLSsjIEZvciBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpdGggZGVzY3JpcHRpb25zLCBzZWUgdGhlCi0rIyBtdWx0aXBhdGguY29uZiBtYW4gcGFnZS4KLSsKLStkZWZhdWx0cyB7Ci0rCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCi0rCWZpbmRfbXVsdGlwYXRocyB5ZXMKLSt9Ci0rCi0rYmxhY2tsaXN0X2V4Y2VwdGlvbnMgewotKyAgICAgICAgcHJvcGVydHkgXCIoU0NTSV9JREVOVF98SURfV1dOKVwiCi0rfSIKLSsKLStDT05GSUdGSUxFPSIvZXRjL211bHRpcGF0aC5jb25mIgotK09VVFBVVEZJTEU9Ii9ldGMvbXVsdGlwYXRoLmNvbmYiCi0rTVVMVElQQVRIRElSPSIvZXRjL211bHRpcGF0aCIKLStUTVBGSUxFPSIvZXRjL211bHRpcGF0aC8ubXVsdGlwYXRoLmNvbmYudG1wIgotK1dXSURTPTAKLSsKLStmdW5jdGlvbiB1c2FnZQotK3sKLSsJZWNobyAidXNhZ2U6ICQwIDxjb21tYW5kPiIKLSsJZWNobyAiIgotKwllY2hvICJDb21tYW5kczoiCi0rCWVjaG8gIkVuYWJsZTogLS1lbmFibGUgIgotKwllY2hvICJEaXNhYmxlOiAtLWRpc2FibGUiCi0rCWVjaG8gIk9ubHkgYWxsb3cgY2VydGFpbiB3d2lkcyAoaW5zdGVhZCBvZiBlbmFibGUpOiAtLWFsbG93IDxXV0lEPiIKLSsJZWNobyAiU2V0IHVzZXJfZnJpZW5kbHlfbmFtZXMgKERlZmF1bHQgeSk6IC0tdXNlcl9mcmllbmRseV9uYW1lcyA8eXxuPiIKLSsJZWNobyAiU2V0IGZpbmRfbXVsdGlwYXRocyAoRGVmYXVsdCB5KTogLS1maW5kX211bHRpcGF0aHMgPHl8bj4iCi0rCWVjaG8gIkxvYWQgdGhlIGRtLW11bHRpcGF0aCBtb2R1bGVzIG9uIGVuYWJsZSAoRGVmYXVsdCB5KTogLS13aXRoX21vZHVsZSA8eXxuPiIKLSsJZWNobyAic3RhcnQvc3RvcC9yZWxvYWQgbXVsdGlwYXRoZCAoRGVmYXVsdCBuKTogLS13aXRoX211bHRpcGF0aGQgPHl8bj4iCi0rCWVjaG8gInNlbGVjdCBvdXRwdXQgZmlsZSAoRGVmYXVsdCAvZXRjL211bHRpcGF0aC5jb25mKTogLS1vdXRmaWxlIDxGSUxFPiIKLSsJZWNobyAiIgotK30KLSsKLStmdW5jdGlvbiBhZGRfd3dpZAotK3sKLSsJSU5ERVg9MAotKwl3aGlsZSBbICIkSU5ERVgiIC1sdCAiJFdXSURTIiBdIDsgZG8KLSsJCWlmIFsgIiQxIiA9ICIke1dXSURfTElTVFskSU5ERVhdfSIgXSA7IHRoZW4KLSsJCQlyZXR1cm4KLSsJCWZpCi0rCQkoKElOREVYKyspKQotKwlkb25lCi0rCVdXSURfTElTVFskV1dJRFNdPSIkMSIKLSsJKChXV0lEUysrKSkKLSt9Ci0rCi0rZnVuY3Rpb24gZ2V0X2RtX2RlcHMKLSt7Ci0rCXNoaWZ0IDMKLSsJd2hpbGUgWyAtbiAiJDEiIC1hIC1uICIkMiIgXTsgZG8KLSsJCU1BSk9SPSQoZWNobyAkMSB8IHRyIC1kICcoLCcpCi0rCQlNSU5PUj0kKGVjaG8gJDIgfCB0ciAtZCAnKScpCi0rCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgLWogJE1BSk9SIC1tICRNSU5PUiAgMj4gL2Rldi9udWxsYAotKwkJaWYgWyAtbiAiJFVVSUQiIF0gOyB0aGVuCi0rCQkJc2V0X2RtX3d3aWQgJFVVSUQKLSsJCWZpCi0rCQlzaGlmdCAyCi0rCWRvbmUKLSt9Ci0rCi0rZnVuY3Rpb24gc2V0X2RtX3d3aWQKLSt7Ci0rCWlmIFtbICIkMSIgPX4gXnBhcnRbWzpkaWdpdDpdXSstbXBhdGgtIF1dIDsgdGhlbgotKwkJYWRkX3d3aWQgIiR7MSMjcGFydCotbXBhdGgtfSIKLSsJZWxpZiBbWyAiJDEiID1+IF5tcGF0aC0gXV0gOyB0aGVuCi0rCQlhZGRfd3dpZCAiJHsxIyNtcGF0aC19IgotKwllbHNlCi0rCQlnZXRfZG1fZGVwcyBgZG1zZXR1cCBkZXBzIC11ICQxYAotKwlmaQotK30KLSsKLStmdW5jdGlvbiBzZXRfd3dpZAotK3sKLSsJVVVJRD0iIgotKwlpZiBbWyAiJDEiID1+IF5bWzpkaWdpdDpdXSs6W1s6ZGlnaXQ6XV0rJCBdXSA7IHRoZW4KLSsJCU1BSk9SPSR7MSUlOip9Ci0rCQlNSU5PUj0kezEjIyo6fQotKwkJVVVJRD1gZG1zZXR1cCBpbmZvIC1jIC0tbm9oZWFkaW5ncyAtbyB1dWlkIC1qICRNQUpPUiAtbSAkTUlOT1IgIDI+IC9kZXYvbnVsbGAKLSsJZWxzZQotKwkJVVVJRD1gZG1zZXR1cCBpbmZvIC1jIC0tbm9oZWFkaW5ncyAtbyB1dWlkICQxIDI+IC9kZXYvbnVsbGAKLSsJZmkKLSsJaWYgWyAtbiAiJFVVSUQiIF0gOyB0aGVuCi0rCQlzZXRfZG1fd3dpZCAkVVVJRAotKwllbHNlCi0rCQlhZGRfd3dpZCAiJDEiCi0rCWZpCi0rfQotKwotK2Z1bmN0aW9uIHBhcnNlX2FyZ3MKLSt7Ci0rCXdoaWxlIFsgLW4gIiQxIiBdOyBkbwotKwkJY2FzZSAkMSBpbgotKwkJCS0tZW5hYmxlKQotKwkJCQlFTkFCTEU9MQotKwkJCQlzaGlmdAotKwkJCQk7OwotKwkJCS0tZGlzYWJsZSkKLSsJCQkJRU5BQkxFPTAKLSsJCQkJc2hpZnQKLSsJCQkJOzsKLSsJCQktLWFsbG93KQotKwkJCQlFTkFCTEU9MgotKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgotKwkJCQkJc2V0X3d3aWQgJDIKLSsJCQkJCXNoaWZ0IDIKLSsJCQkJZWxzZQotKwkJCQkJdXNhZ2UKLSsJCQkJCWV4aXQgMQotKwkJCQlmaQotKwkJCQk7OwotKwkJCS0tdXNlcl9mcmllbmRseV9uYW1lcykKLSsJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KLSsJCQkJCUZSSUVORExZPSQyCi0rCQkJCQlzaGlmdCAyCi0rCQkJCWVsc2UKLSsJCQkJCXVzYWdlCi0rCQkJCQlleGl0IDEKLSsJCQkJZmkKLSsJCQkJOzsKLSsJCQktLWZpbmRfbXVsdGlwYXRocykKLSsJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KLSsJCQkJCUZJTkQ9JDIKLSsJCQkJCXNoaWZ0IDIKLSsJCQkJZWxzZQotKwkJCQkJdXNhZ2UKLSsJCQkJCWV4aXQgMQotKwkJCQlmaQotKwkJCQk7OwotKwkJCS0td2l0aF9tb2R1bGUpCi0rCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCi0rCQkJCQlNT0RVTEU9JDIKLSsJCQkJCXNoaWZ0IDIKLSsJCQkJZWxzZQotKwkJCQkJdXNhZ2UKLSsJCQkJCWV4aXQgMQotKwkJCQlmaQotKwkJCQk7OwotKwkJCS0td2l0aF9tdWx0aXBhdGhkKQotKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgotKwkJCQkJTVVMVElQQVRIRD0kMgotKwkJCQkJc2hpZnQgMgotKwkJCQllbHNlCi0rCQkJCQl1c2FnZQotKwkJCQkJZXhpdCAxCi0rCQkJCWZpCi0rCQkJCTs7Ci0rCQkJLS1vdXRmaWxlKQotKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgotKwkJCQkJT1VUUFVURklMRT0kMgotKwkJCQkJSEFWRV9PVVRGSUxFPTEKLSsJCQkJCXNoaWZ0IDIKLSsJCQkJZWxzZQotKwkJCQkJdXNhZ2UKLSsJCQkJCWV4aXQgMQotKwkJCQlmaQotKwkJCQk7OwotKwkJCSopCi0rCQkJCXVzYWdlCi0rCQkJCWV4aXQKLSsJCWVzYWMKLSsJZG9uZQotK30KLSsKLStmdW5jdGlvbiB2YWxpZGF0ZV9hcmdzCi0rewotKwlpZiBbICIkRU5BQkxFIiA9ICIwIiBdICYmIFsgLW4gIiRGUklFTkRMWSIgLW8gLW4gIiRGSU5EIiAtbyAtbiAiJE1PRFVMRSIgXTsgdGhlbgotKwkJZWNobyAiaWdub3JpbmcgZXh0cmEgcGFyYW1ldGVycyBvbiBkaXNhYmxlIgotKwkJRlJJRU5ETFk9IiIKLSsJCUZJTkQ9IiIKLSsJCU1PRFVMRT0iIgotKwlmaQotKwlpZiBbIC1uICIkRlJJRU5ETFkiIF0gJiYgWyAiJEZSSUVORExZIiAhPSAieSIgLWEgIiRGUklFTkRMWSIgIT0gIm4iIF07IHRoZW4KLSsJCWVjaG8gIi0tdXNlcl9mcmllbmRseV9uYW1lcyBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgotKwkJZXhpdCAxCi0rCWZpCi0rCWlmIFsgLW4gIiRGSU5EIiBdICYmIFsgIiRGSU5EIiAhPSAieSIgLWEgIiRGSU5EIiAhPSAibiIgXTsgdGhlbgotKwkJZWNobyAiLS1maW5kX211bHRpcGF0aHMgbXVzdCBiZSBlaXRoZXIgJ3knIG9yICduJyIKLSsJCWV4aXQgMQotKwlmaQotKwlpZiBbIC16ICIkRU5BQkxFIiAtYSAteiAiJEZJTkQiIC1hIC16ICIkRlJJRU5ETFkiIF07IHRoZW4KLSsJCVNIT1dfU1RBVFVTPTEKLSsJZmkKLSsJaWYgWyAtbiAiJE1PRFVMRSIgXSAmJiBbICIkTU9EVUxFIiAhPSAieSIgLWEgIiRNT0RVTEUiICE9ICJuIiBdOyB0aGVuCi0rCQllY2hvICItLXdpdGhfbW9kdWxlIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCi0rCQlleGl0IDEKLSsJZmkKLSsJaWYgWyAtbiAiJE1VTFRJUEFUSEQiIF0gJiYgWyAiJE1VTFRJUEFUSEQiICE9ICJ5IiAtYSAiJE1VTFRJUEFUSEQiICE9ICJuIiBdOyB0aGVuCi0rCQllY2hvICItLXdpdGhfbXVsdGlwYXRoZCBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgotKwkJZXhpdCAxCi0rCWZpCi0rCWlmIFsgIiRFTkFCTEUiID0gMiAtYSAteiAiJEhBVkVfT1VURklMRSIgXTsgdGhlbgotKwkJZWNobyAiQmVjYXVzZSAtLWFsbG93IG1ha2VzIGNoYW5nZXMgdGhhdCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSByZXZlcnNlZCwiCi0rCQllY2hvICJ5b3UgbXVzdCBzZXQgLS1vdXRmaWxlIHdoZW4geW91IHNldCAtLWFsbG93IgotKwkJZXhpdCAxCi0rCWZpCi0rfQotKwotK2Z1bmN0aW9uIGFkZF9ibGFja2xpc3RfZXhjZXB0aW9ucwotK3sKLSsJSU5ERVg9MAotKwl3aGlsZSBbICIkSU5ERVgiIC1sdCAiJFdXSURTIiBdIDsgZG8KLSsJCXNlZCAtaSAnL15ibGFja2xpc3RfZXhjZXB0aW9uc1tbOnNwYWNlOl1dKnsvIGFcCi0rCXd3aWQgJyJcIiR7V1dJRF9MSVNUWyRJTkRFWF19XCIiJwotKycgJFRNUEZJTEUKLSsJCSgoSU5ERVgrKykpCi0rCWRvbmUKLSt9Ci0rCi0rdW1hc2sgMDA3NwotKwotK3BhcnNlX2FyZ3MgIiRAIgotKwotK3ZhbGlkYXRlX2FyZ3MKLSsKLStpZiBbICEgLWQgIiRNVUxUSVBBVEhESVIiIF07IHRoZW4KLSsJZWNobyAiL2V0Yy9tdWx0aXBhdGgvIGRvZXMgbm90IGV4aXN0LiBmYWlsaW5nIgotKwlleGl0IDEKLStmaQotKwotK3JtICRUTVBGSUxFIDI+IC9kZXYvbnVsbAotK2VjaG8gIiRERUZBVUxUX0NPTkZJRyIgPiAkVE1QRklMRQotK2lmIFsgLWYgIiRDT05GSUdGSUxFIiBdOyB0aGVuCi0rCWNwICRDT05GSUdGSUxFICRUTVBGSUxFCi0rZmkKLSsKLStpZiBncmVwIC1xICJeYmxhY2tsaXN0W1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCi0rCUhBVkVfQkxBQ0tMSVNUPTEKLStmaQotKwotK2lmIGdyZXAgLXEgIl5ibGFja2xpc3RfZXhjZXB0aW9uc1tbOnNwYWNlOl1dKnsiICRUTVBGSUxFIDsgdGhlbgotKwlIQVZFX0VYQ0VQVElPTlM9MQotK2ZpCi0rCi0raWYgZ3JlcCAtcSAiXmRlZmF1bHRzW1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCi0rCUhBVkVfREVGQVVMVFM9MQotK2ZpCi0rCi0raWYgWyAteiAiJE1PRFVMRSIgLW8gIiRNT0RVTEUiID0gInkiIF07IHRoZW4KLSsJaWYgbHNtb2QgfCBncmVwIC1xICJkbV9tdWx0aXBhdGgiIDsgdGhlbgotKwkJSEFWRV9NT0RVTEU9MQotKwllbHNlCi0rCQlIQVZFX01PRFVMRT0wCi0rCWZpCi0rZmkKLSsKLStpZiBbICIkTVVMVElQQVRIRCIgPSAieSIgXTsgdGhlbgotKwlpZiAvYmluL3N5c3RlbWN0bCBzdGF0dXMgbXVsdGlwYXRoZC5zZXJ2aWNlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCi0rCQlIQVZFX01VTFRJUEFUSEQ9MQotKwllbHNlCi0rCQlIQVZFX01VTFRJUEFUSEQ9MAotKwlmaQotK2ZpCi0rCi0raWYgWyAiJEhBVkVfQkxBQ0tMSVNUIiA9ICIxIiBdOyB0aGVuCi0rCWlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIiIgOyB0aGVuCi0rCQlIQVZFX0RJU0FCTEU9MQotKwllbGlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIiIDsgdGhlbgotKwkJSEFWRV9ESVNBQkxFPTAKLSsJZmkKLStmaQotKwotK2lmIFsgIiRIQVZFX0JMQUNLTElTVCIgPSAiMSIgXTsgdGhlbgotKwlpZiBzZWQgLW4gJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIiIDsgdGhlbgotKwkJSEFWRV9XV0lEX0RJU0FCTEU9MQotKwllbGlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIiIDsgdGhlbgotKwkJSEFWRV9XV0lEX0RJU0FCTEU9MAotKwlmaQotK2ZpCi0rCi0raWYgWyAiJEhBVkVfREVGQVVMVFMiID0gIjEiIF07IHRoZW4KLSsJaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKHllc1x8MVwpIiA7IHRoZW4KLSsJCUhBVkVfRklORD0xCi0rCWVsaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKG5vXHwwXCkiIDsgdGhlbgotKwkJSEFWRV9GSU5EPTAKLSsJZmkKLSsJaWYgc2VkIC1uICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBwJyAkVE1QRklMRSB8IGdyZXAgLXEgIl5bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXCh5ZXNcfDFcKSIgOyB0aGVuCi0rCQlIQVZFX0ZSSUVORExZPTEKLSsJZWxpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKG5vXHwwXCkiIDsgdGhlbgotKwkJSEFWRV9GUklFTkRMWT0wCi0rCWZpCi0rZmkKLSsKLStpZiBbIC1uICIkU0hPV19TVEFUVVMiIF07IHRoZW4KLSsJaWYgWyAteiAiJEhBVkVfRElTQUJMRSIgLW8gIiRIQVZFX0RJU0FCTEUiID0gMCBdOyB0aGVuCi0rCQllY2hvICJtdWx0aXBhdGggaXMgZW5hYmxlZCIKLSsJZWxzZQotKwkJZWNobyAibXVsdGlwYXRoIGlzIGRpc2FibGVkIgotKwlmaQotKwlpZiBbIC16ICIkSEFWRV9GSU5EIiAgLW8gIiRIQVZFX0ZJTkQiID0gMCBdOyB0aGVuCi0rCQllY2hvICJmaW5kX211bHRpcGF0aHMgaXMgZGlzYWJsZWQiCi0rCWVsc2UKLSsJCWVjaG8gImZpbmRfbXVsdGlwYXRocyBpcyBlbmFibGVkIgotKwlmaQotKwlpZiBbIC16ICIkSEFWRV9GUklFTkRMWSIgLW8gIiRIQVZFX0ZSSUVORExZIiA9IDAgXTsgdGhlbgotKwkJZWNobyAidXNlcl9mcmllbmRseV9uYW1lcyBpcyBkaXNhYmxlZCIKLSsJZWxzZQotKwkJZWNobyAidXNlcl9mcmllbmRseV9uYW1lcyBpcyBlbmFibGVkIgotKwlmaQotKwlpZiBbIC1uICIkSEFWRV9NT0RVTEUiIF07IHRoZW4KLSsJCWlmIFsgIiRIQVZFX01PRFVMRSIgPSAxIF07IHRoZW4KLSsJCQllY2hvICJkbV9tdWx0aXBhdGggbW9kdWxlIGlzIGxvYWRlZCIKLSsJCWVsc2UKLSsJCQllY2hvICJkbV9tdWx0aXBhdGggbW9kdWxlIGlzIG5vdCBsb2FkZWQiCi0rCQlmaQotKwlmaQotKwlpZiBbIC16ICIkSEFWRV9NVUxUSVBBVEhEIiBdOyB0aGVuCi0rCQlpZiAvYmluL3N5c3RlbWN0bCBzdGF0dXMgbXVsdGlwYXRoZC5zZXJ2aWNlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCi0rCQkJSEFWRV9NVUxUSVBBVEhEPTEKLSsJCWVsc2UKLSsJCQlIQVZFX01VTFRJUEFUSEQ9MAotKwkJZmkKLSsJZmkKLSsJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KLSsJCWVjaG8gIm11bHRpcGF0aGQgaXMgcnVubmluZyIKLSsJZWxzZQotKwkJZWNobyAibXVsdGlwYXRoZCBpcyBub3QgcnVubmluZyIKLSsJZmkKLSsJZXhpdCAwCi0rZmkKLSsKLStpZiBbIC16ICIkSEFWRV9CTEFDS0xJU1QiIF07IHRoZW4KLSsJY2F0ID4+ICRUTVBGSUxFIDw8LSBfRU9GXwotKwotK2JsYWNrbGlzdCB7Ci0rfQotK19FT0ZfCi0rZmkKLSsKLStpZiBbIC16ICIkSEFWRV9ERUZBVUxUUyIgXTsgdGhlbgotKwljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCi0rCi0rZGVmYXVsdHMgewotK30KLStfRU9GXwotK2ZpCi0rCi0raWYgWyAiJEVOQUJMRSIgPSAyIF07IHRoZW4KLSsJaWYgWyAiJEhBVkVfRElTQUJMRSIgPSAxIF07IHRoZW4KLSsJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIi8jCWRldm5vZGUgIi4qIi8nICRUTVBGSUxFCi0rCWZpCi0rCWlmIFsgLXogIiRIQVZFX1dXSURfRElTQUJMRSIgXTsgdGhlbgotKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvIGFcCi0rCXd3aWQgIi4qIgotKycgJFRNUEZJTEUKLSsJZWxpZiBbICIkSEFWRV9XV0lEX0RJU0FCTEUiID0gMCBdOyB0aGVuCi0rCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSojW1s6c3BhY2U6XV0qd3dpZCBcIlwuXD9cKlwiLwl3d2lkICIuKiIvJyAkVE1QRklMRQotKwlmaQotKwlpZiBbICIkSEFWRV9FWENFUFRJT05TIiA9IDEgXTsgdGhlbgotKwkJc2VkIC1pICcvXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qey8sL159LyB7L15bWzpzcGFjZTpdXSp3d2lkLyBkfScgJFRNUEZJTEUKLSsJZWxzZQotKwkJY2F0ID4+ICRUTVBGSUxFIDw8LSBfRU9GXwotKwotK2JsYWNrbGlzdF9leGNlcHRpb25zIHsKLSt9Ci0rX0VPRl8KLSsJZmkKLSsJYWRkX2JsYWNrbGlzdF9leGNlcHRpb25zCi0rZWxpZiBbICIkRU5BQkxFIiA9IDEgXTsgdGhlbgotKwlpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDEgXTsgdGhlbgotKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiLyMJZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKLSsJZmkKLStlbGlmIFsgIiRFTkFCTEUiID0gMCBdOyB0aGVuCi0rCWlmIFsgLXogIiRIQVZFX0RJU0FCTEUiIF07IHRoZW4KLSsJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LyBhXAotKwlkZXZub2RlICIuKiIKLSsnICRUTVBGSUxFCi0rCWVsaWYgWyAiJEhBVkVfRElTQUJMRSIgPSAwIF07IHRoZW4KLSsJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIvCWRldm5vZGUgIi4qIi8nICRUTVBGSUxFCi0rCWZpCi0rZmkKLSsKLStpZiBbICIkRklORCIgPSAibiIgXTsgdGhlbgotKwlpZiBbICIkSEFWRV9GSU5EIiA9IDEgXTsgdGhlbgotKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKHllc1x8MVwpLwlmaW5kX211bHRpcGF0aHMgbm8vJyAkVE1QRklMRQotKwkJQ0hBTkdFRF9DT05GSUc9MQotKwlmaQotK2VsaWYgWyAiJEZJTkQiID0gInkiIF07IHRoZW4KLSsJaWYgWyAteiAiJEhBVkVfRklORCIgXTsgdGhlbgotKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8gYVwKLSsJZmluZF9tdWx0aXBhdGhzIHllcwotKycgJFRNUEZJTEUKLSsJCUNIQU5HRURfQ09ORklHPTEKLSsJZWxpZiBbICIkSEFWRV9GSU5EIiA9IDAgXTsgdGhlbgotKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpmaW5kX211bHRpcGF0aHNbWzpzcGFjZTpdXSpcKG5vXHwwXCkvCWZpbmRfbXVsdGlwYXRocyB5ZXMvJyAkVE1QRklMRQotKwkJQ0hBTkdFRF9DT05GSUc9MQotKwlmaQotK2ZpCi0rCi0raWYgWyAiJEZSSUVORExZIiA9ICJuIiBdOyB0aGVuCi0rCWlmIFsgIiRIQVZFX0ZSSUVORExZIiA9IDEgXTsgdGhlbgotKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXCh5ZXNcfDFcKS8JdXNlcl9mcmllbmRseV9uYW1lcyBuby8nICRUTVBGSUxFCi0rCQlDSEFOR0VEX0NPTkZJRz0xCi0rCWZpCi0rZWxpZiBbICIkRlJJRU5ETFkiID0gInkiIF07IHRoZW4KLSsJaWYgWyAteiAiJEhBVkVfRlJJRU5ETFkiIF07IHRoZW4KLSsJCXNlZCAtaSAnL15kZWZhdWx0c1tbOnNwYWNlOl1dKnsvIGFcCi0rCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCi0rJyAkVE1QRklMRQotKwkJQ0hBTkdFRF9DT05GSUc9MQotKwllbGlmIFsgIiRIQVZFX0ZSSUVORExZIiA9IDAgXTsgdGhlbgotKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSp1c2VyX2ZyaWVuZGx5X25hbWVzW1s6c3BhY2U6XV0qXChub1x8MFwpLwl1c2VyX2ZyaWVuZGx5X25hbWVzIHllcy8nICRUTVBGSUxFCi0rCQlDSEFOR0VEX0NPTkZJRz0xCi0rCWZpCi0rZmkKLSsKLStpZiBbIC1mICIkT1VUUFVURklMRSIgXTsgdGhlbgotKwljcCAkT1VUUFVURklMRSAkT1VUUFVURklMRS5vbGQKLSsJaWYgWyAkPyAhPSAwIF07IHRoZW4KLSsJCWVjaG8gImZhaWxlZCB0byBiYWNrdXAgb2xkIGNvbmZpZyBmaWxlLCAkT1VUUFVURklMRSBub3QgdXBkYXRlZCIKLSsJCWV4aXQgMQotKwlmaQotK2ZpCi0rCi0rY3AgJFRNUEZJTEUgJE9VVFBVVEZJTEUKLStpZiBbICQ/ICE9IDAgXTsgdGhlbgotKwllY2hvICJmYWlsZWQgdG8gY29weSBuZXcgY29uZmlnIGZpbGUgaW50byBwbGFjZSwgY2hlY2sgJE9VVFBVVEZJTEUgaXMgc3RpbGwgT0siCi0rCWV4aXQgMQotK2ZpCi0rCi0rcm0gLWYgJFRNUEZJTEUKLSsKLStpZiBbICIkRU5BQkxFIiA9IDEgXTsgdGhlbgotKwlpZiBbICIkSEFWRV9NT0RVTEUiID0gMCBdOyB0aGVuCi0rCQltb2Rwcm9iZSBkbV9tdWx0aXBhdGgKLSsJZmkKLSsJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAwIF07IHRoZW4KLSsJCXN5c3RlbWN0bCBzdGFydCBtdWx0aXBhdGhkLnNlcnZpY2UKLSsJZmkKLStlbGlmIFsgIiRFTkFCTEUiID0gMCBdOyB0aGVuCi0rCWlmIFsgIiRIQVZFX01VTFRJUEFUSEQiID0gMSBdOyB0aGVuCi0rCQlzeXN0ZW1jdGwgc3RvcCBtdWx0aXBhdGhkLnNlcnZpY2UKLSsJZmkKLStlbGlmIFsgLW4gIiRDSEFOR0VEX0NPTkZJRyIgLWEgIiRIQVZFX01VTFRJUEFUSEQiID0gMSBdOyB0aGVuCi0rCXN5c3RlbWN0bCByZWxvYWQgbXVsdGlwYXRoZC5zZXJ2aWNlCi0rZmkKLWRpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXBhdGhjb25mLjggYi9tdWx0aXBhdGgvbXBhdGhjb25mLjgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40Y2QzMjY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9tdWx0aXBhdGgvbXBhdGhjb25mLjgKLUBAIC0wLDAgKzEsMTAxIEBACi0rLlRIIE1QQVRIQ09ORiA4ICJKdW5lIDIwMTAiICIiICJMaW51eCBBZG1pbmlzdHJhdG9yJ3MgTWFudWFsIgotKy5TSCBOQU1FCi0rbXBhdGhjb25mIC0gQSB0b29sIGZvciBjb25maWd1cmluZyBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aAotKy5TSCBTWU5PUFNJUwotKy5CIG1wYXRoY29uZgotKy5SQiBbXHwgY29tbWFuZHMgXHxdCi0rLlJCIFtcfCBvcHRpb25zIFx8XQotKy5TSCBERVNDUklQVElPTgotKy5CIG1wYXRoY29uZgotK2lzIGEgdXRpbGl0eSB0aGF0IGNyZWF0ZXMgb3IgbW9kaWZpZXMKLSsuQiAvZXRjL211bHRpcGF0aC5jb25mLgotK0l0IGNhbiBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBhdGhpbmcgYW5kIGNvbmZpZ3VyZSBzb21lIGNvbW1vbiBvcHRpb25zLgotKy5CIG1wYXRoY29uZgotK2NhbiBhbHNvIGxvYWQgdGhlCi0rLkIgZG1fbXVsdGlwYXRoCi0rbW9kdWxlLCBzdGFydCBhbmQgc3RvcCB0aGUKLSsuQiBtdWx0aXBhdGhkCi0rZGFlbW9uLCBhbmQgY29uZmlndXJlIHRoZQotKy5CIG11bHRpcGF0aGQKLStzZXJ2aWNlIHRvIHN0YXJ0IGF1dG9tYXRpY2FsbHkgb3Igbm90LiBJZgotKy5CIG1wYXRoY29uZgotK2lzIGNhbGxlZCB3aXRoIG5vIGNvbW1hbmRzLCBpdCB3aWxsIGRpc3BsYXkgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSsKLStUaGUgZGVmYXVsdCBvcHRpb25zIGZvciBtcGF0aGNvbmYgYXJlCi0rLkIgLS13aXRoX21vZHVsZQotK1RoZQotKy5CIC0td2l0aF9tdWx0aXBhdGhkCi0rb3B0aW9uIGlzIG5vdCBzZXQgYnkgZGVmYXVsdC4gIEVuYWJsaW5nIG11bHRpcGF0aGluZyB3aWxsIGxvYWQgdGhlCi0rLkIgZG1fbXVsdGlwYXRoCi0rbW9kdWxlIGJ1dCBpdCB3aWxsIG5vdCBpbW1lZGlhdGVseSBzdGFydCBpdC4gVGhpcyBpcyBzbwotK3RoYXQgdXNlcnMgY2FuIG1hbnVhbGx5IGVkaXQgdGhlaXIgY29uZmlnIGZpbGUgaWYgbmVjZXNzYXJ5LCBiZWZvcmUgc3RhcnRpbmcKLSsuQiBtdWx0aXBhdGhkLgotKwotK0lmCi0rLkIgL2V0Yy9tdWx0aXBhdGguY29uZgotK2FscmVhZHkgZXhpc3RzLCBtcGF0aGNvbmYgd2lsbCBlZGl0IGl0LiBJZiBpdCBkb2VzIG5vdCBleGlzdCwgbXBhdGhjb25mIHdpbGwKLStjcmVhdGUgYSBkZWZhdWx0IGZpbGUgd2l0aAotKy5CIHVzZXJfZnJpZW5kbHlfbmFtZXMKLSthbmQKLSsuQiBmaW5kX211bHRpcGF0aHMKLStzZXQuIFRvIGRpc2FibGUgdGhlc2UsIHVzZSB0aGUKLSsuQiAtLXVzZXJfZnJpZW5kbHlfbmFtZXMgbgotK2FuZAotKy5CIC0tZmluZF9tdWx0aXBhdGhzIG4KLStvcHRpb25zCi0rLlNIIENPTU1BTkRTCi0rLlRQCi0rLkIgLS1lbmFibGUKLStSZW1vdmVzIGFueSBsaW5lIHRoYXQgYmxhY2tsaXN0cyBhbGwgZGV2aWNlIG5vZGVzIGZyb20gdGhlCi0rLkIgL2V0Yy9tdWx0aXBhdGguY29uZgotK2JsYWNrbGlzdCBzZWN0aW9uLgotKy5UUAotKy5CIC0tZGlzYWJsZQotK0FkZHMgYSBsaW5lIHRoYXQgYmxhY2tsaXN0cyBhbGwgZGV2aWNlIG5vZGVzIHRvIHRoZQotKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYKLStibGFja2xpc3Qgc2VjdGlvbi4gSWYgbm8gYmxhY2tsaXN0IHNlY3Rpb24gZXhpc3RzLCBpdCB3aWxsIGNyZWF0ZSBvbmUuCi0rLlRQCi0rLkIgLS11c2VyX2ZyaWVuZGx5X25hbWUgXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQotK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIGFkZHMgdGhlIGxpbmUKLSsuQiB1c2VyX2ZyaWVuZGx5X25hbWVzIHllcwotK3RvIHRoZQotKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYKLStkZWZhdWx0cyBzZWN0aW9uLiBJZiBzZXQgdG8gXGZCblxmUCwgdGhpcyByZW1vdmVzIHRoZSBsaW5lLCBpZiBwcmVzZW50LiBUaGlzCi0rY29tbWFuZCBjYW4gYmUgdXNlZCBhbG9uZyB3aXRoIGFueSBvdGhlciBjb21tYW5kLgotKy5UUAotKy5CIC0tZmluZF9tdWx0aXBhdGhzXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQotK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIGFkZHMgdGhlIGxpbmUKLSsuQiBmaW5kX211bHRpcGF0aHMgeWVzCi0rdG8gdGhlCi0rLkIgL2V0Yy9tdWx0aXBhdGguY29uZgotK2RlZmF1bHRzIHNlY3Rpb24uIElmIHNldCB0byBcZkJuXGZQLCB0aGlzIHJlbW92ZXMgdGhlIGxpbmUsIGlmIHByZXNlbnQuIFRoaXMKLStjb21tYW5kIGNhbiBiZSB1c2VkIGFsZG9uZyB3aXRoIGFueSBvdGhlciBjb21tYW5kLgotKy5TSCBPUFRJT05TCi0rLlRQCi0rLkIgLS13aXRoX21vZHVsZVxmUCB7IFxmQnlcZlAgfCBcZkJuXGZQIH0KLStJZiBzZXQgdG8gXGZCeVxmUCwgdGhpcyBydW5zCi0rLkIgbW9kcHJvYmUgZG1fbXVsdGlwYXRoCi0rdG8gaW5zdGFsbCB0aGUgbXVsdGlwYXRoIG1vZHVsZXMuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3Mgd2l0aCB0aGUKLSsuQiAtLWVuYWJsZQotK2NvbW1hbmQuIFRoaXMgb3B0aW9uIGlzIHNldCB0byBcZkJ5XGZQIGJ5IGRlZmF1bHQuCi0rLlRQCi0rLkIgLS13aXRoX211bHRpcGF0aGQgeyBcZkJ5XGZQIHwgXGZCblxmUCB9Ci0rSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgcnVucwotKy5CIHNlcnZpY2UgbXVsdGlwYXRoZCBzdGFydAotK3RvIHN0YXJ0IHRoZSBtdWx0aXBhdGhkIGRhZW1vbiBvbiBcZkItLWVuYWJsZVxmUCwKLSsuQiBzZXJ2aWNlIG11bHRpcGF0aGQgc3RvcAotK3RvIHN0b3AgdGhlIG11bHRpcGF0aGQgZGFlbW9uIG9uIFxmQi0tZGlzYWJsZVxmUCwgYW5kCi0rLkIgc2VydmljZSBtdWx0aXBhdGhkIHJlbG9hZAotK3RvIHJlY29uZmlndXJlIG11bHRpcGF0aGQgb24gXGZCLS11c2VyX2ZyaW5kbHlfbmFtZXNcZlAgYW5kCi0rXGZCLS1maW5kX211bHRpcGF0aHNcZlAuCi0rVGhpcyBvcHRpb24gaXMgc2V0IHRvIFxmQm5cZlAgYnkgZGVmYXVsdC4KLSsuU0ggRklMRVMKLSsuQlIgL2V0Yy9tdWx0aXBhdGguY29uZgotKy5TSCAiU0VFIEFMU08iCi0rLkJSIG11bHRpcGF0aC5jb25mICg1KSwKLSsuQlIgbW9kcHJvYmUgKDgpLAotKy5CUiBtdWx0aXBhdGggKDgpLAotKy5CUiBtdWx0aXBhdGhkICg4KSwKLSsuQlIgc2VydmljZSAoOCksCi0rLlNIIEFVVEhPUgotK0JlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDUtbXVsdGlwYXRoLXRvb2xzLVJlbW92ZS10cmFpbGluZy1sZWFkaW5nLXdoaXRlc3BhY2VzLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LW11bHRpcGF0aC10b29scy1SZW1vdmUtdHJhaWxpbmctbGVhZGluZy13aGl0ZXNwYWNlcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUzZTczOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA1LW11bHRpcGF0aC10b29scy1SZW1vdmUtdHJhaWxpbmctbGVhZGluZy13aGl0ZXNwYWNlcy0ucGF0Y2gKQEAgLTAsMCArMSwxNTYgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWF5IDIwMTggMTU6NDM6MTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoLXRvb2xzOiBSZW1vdmUgdHJhaWxpbmcvbGVhZGluZyB3aGl0ZXNwYWNlcyBhbmQKKyByZWZvcm1hdCBjb2RlCisKK0NjOiBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbT4KK0NjOiBkZXZpY2UtbWFwcGVyIGRldmVsb3BtZW50IDxkbS1kZXZlbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgTWFrZWZpbGUuaW5jICAgICAgICAgICB8IDIzICsrKysrKysrKysrLS0tLS0tLS0tLS0tCisga3BhcnR4L21hYy5oICAgICAgICAgICB8ICAyICstCisga3BhcnR4L3Rlc3Qta3BhcnR4ICAgICB8ICAyICstCisgbGlibXBhdGhjbWQvTWFrZWZpbGUgICB8ICAyICstCisgbGlibXVsdGlwYXRoL2h3dGFibGUuYyB8IDE0ICsrKysrKystLS0tLS0tCisgbGlibXVsdGlwYXRoL3ByaW50LmggICB8ICAyICstCisgbXVsdGlwYXRoZC9tYWluLmggICAgICB8ICA2ICsrKy0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKK2luZGV4IDU3YTE4MzUuLmFmMmY1YmEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbmMKKysrKyBiL01ha2VmaWxlLmluYworQEAgLTEwMywyMSArMTAzLDIwIEBAIExERkxBR1MJCT0gLVdsLC16LHJlbHJvIC1XbCwteixub3cKKyBCSU5fTERGTEFHUwk9IC1waWUKKyAKKyAjIENoZWNrIHdoZXRoZXIgYSBmdW5jdGlvbiB3aXRoIG5hbWUgJDEgaGFzIGJlZW4gZGVjbGFyZWQgaW4gaGVhZGVyIGZpbGUgJDIuCistY2hlY2tfZnVuYyA9CQkJCQkJCQkgICAgICAgXAorLSAgICAkKHNoZWxsCQkJCQkJCQkgICAgICAgXAorK2NoZWNrX2Z1bmMgPSAkKHNoZWxsIFwKKyAJaWYgZ3JlcCAtRXEgIl5bXls6Ymxhbms6XV0rW1s6Ymxhbms6XV0rJDFbWzpibGFuazpdXSooLiopKiIgIiQyIjsgdGhlbiBcCistCSAgIGZvdW5kPTE7CQkJCQkJCSAgICAgICBcCistCSAgIHN0YXR1cz0ieWVzIjsJCQkJCQkgICAgICAgXAorLQllbHNlCQkJCQkJCQkgICAgICAgXAorLQkgICBmb3VuZD0wOwkJCQkJCQkgICAgICAgXAorLQkgICBzdGF0dXM9Im5vIjsJCQkJCQkJICAgICAgIFwKKy0JZmk7CQkJCQkJCQkgICAgICAgXAorLQllY2hvIDE+JjIgIkNoZWNraW5nIGZvciAkMSBpbiAkMiAuLi4gJCRzdGF0dXMiOwkJCSAgICAgICBcCistCWVjaG8gIiQkZm91bmQiCQkJCQkJCSAgICAgICBcCistICAgICkKKysJCWZvdW5kPTE7IFwKKysJCXN0YXR1cz0ieWVzIjsgXAorKwllbHNlIFwKKysJCWZvdW5kPTA7IFwKKysJCXN0YXR1cz0ibm8iOyBcCisrCWZpOyBcCisrCWVjaG8gMT4mMiAiQ2hlY2tpbmcgZm9yICQxIGluICQyIC4uLiAkJHN0YXR1cyI7IFwKKysJZWNobyAiJCRmb3VuZCIgXAorKwkpCisgCisgIyBDaGVja2VyIHdoZXRoZXIgYSBmaWxlIHdpdGggbmFtZSAkMSBleGlzdHMKKy1jaGVja19maWxlID0gJChzaGVsbAlcCisrY2hlY2tfZmlsZSA9ICQoc2hlbGwgXAorIAlpZiBbIC1mICIkMSIgXTsgdGhlbiBcCisgCQlmb3VuZD0xOyBcCisgCQlzdGF0dXM9InllcyI7IFwKK2RpZmYgLS1naXQgYS9rcGFydHgvbWFjLmggYi9rcGFydHgvbWFjLmgKK2luZGV4IGE0NGNmMzguLjU1YzNlYzkgMTAwNjQ0CistLS0gYS9rcGFydHgvbWFjLmgKKysrKyBiL2twYXJ0eC9tYWMuaAorQEAgLTI0LDcgKzI0LDcgQEAgc3RydWN0IG1hY19kcml2ZXJfZGVzYyB7CisgCXVpbnQxNl90ICBzaWduYXR1cmU7ICAgICAgLyogZXhwZWN0ZWQgdG8gYmUgTUFDX0RSSVZFUl9NQUdJQyAqLworIAl1aW50MTZfdCAgYmxvY2tfc2l6ZTsKKyAJdWludDMyX3QgIGJsb2NrX2NvdW50OworLSAgICAvKiAuLi4gbW9yZSBzdHVmZiAqLworKwkvKiAuLi4gbW9yZSBzdHVmZiAqLworIH07CisgCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEva3BhcnR4L3Rlc3Qta3BhcnR4IGIva3BhcnR4L3Rlc3Qta3BhcnR4CitpbmRleCA5Y2VlMjBmLi5kMjAwMWRjIDEwMDc1NQorLS0tIGEva3BhcnR4L3Rlc3Qta3BhcnR4CisrKysgYi9rcGFydHgvdGVzdC1rcGFydHgKK0BAIC0xMzEsNyArMTMxLDcgQEAgc3RlcCAiY3JlYXRlIERNIGRldmljZXMgKHNwYW5zKSIKKyAjIFRoZXkgYWxzbyBzZXJ2ZSBhcyBETSBkZXZpY2VzIHRvIHRlc3QgcGFydGl0aW9uIHJlbW92YWwgb24gdGhvc2UuCisgCisgVEFCTEU9IlwKKy0wICQoKFNJWkUvU0VDVFNJWi1PRkZTKSkgbGluZWFyICRERVYxICRPRkZTIAorKzAgJCgoU0laRS9TRUNUU0laLU9GRlMpKSBsaW5lYXIgJERFVjEgJE9GRlMKKyAkKChTSVpFL1NFQ1RTSVotT0ZGUykpICQoKFNJWkUvU0VDVFNJWi1PRkZTKSkgbGluZWFyICRERVYyICRPRkZTIgorIAorIFNQQU4xPWtwdAorZGlmZiAtLWdpdCBhL2xpYm1wYXRoY21kL01ha2VmaWxlIGIvbGlibXBhdGhjbWQvTWFrZWZpbGUKK2luZGV4IDUzYzA4OTkuLjBmNmI4MTYgMTAwNjQ0CistLS0gYS9saWJtcGF0aGNtZC9NYWtlZmlsZQorKysrIGIvbGlibXBhdGhjbWQvTWFrZWZpbGUKK0BAIC0yNyw3ICsyNyw3IEBAIHVuaW5zdGFsbDoKKyAJJChSTSkgJChERVNURElSKSQoaW5jbHVkZWRpcikvbXBhdGhfY21kLmgKKyAKKyBjbGVhbjogZGVwX2NsZWFuCistCSQoUk0pIGNvcmUgKi5hICoubyAqLnNvICouc28uKiAqLmd6IAorKwkkKFJNKSBjb3JlICouYSAqLm8gKi5zbyAqLnNvLiogKi5negorIAorIGluY2x1ZGUgJCh3aWxkY2FyZCAkKE9CSlM6Lm89LmQpKQorIAorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9od3RhYmxlLmMgYi9saWJtdWx0aXBhdGgvaHd0YWJsZS5jCitpbmRleCA4MjdlODk5Li4yY2E2ODg4IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2h3dGFibGUuYworKysrIGIvbGlibXVsdGlwYXRoL2h3dGFibGUuYworQEAgLTc4LDEzICs3OCwxMyBAQAorICNlbmRpZgorIAorIHN0YXRpYyBzdHJ1Y3QgaHdlbnRyeSBkZWZhdWx0X2h3W10gPSB7CistICAgICAgIC8qCistCSogR2VuZXJpYyBOVk1lCistCSoKKy0JKiBEdWUgdG8gdGhlIHBhcnNpbmcgbG9naWMgaW4gZmluZF9od2UoKSwgZ2VuZXJpYyBlbnRyaWVzCistCSogaGF2ZSB0byBiZSBwdXQgb24gdG9wIG9mIHRoaXMgbGlzdCwgYW5kIG1vcmUgc3BlY2lmaWMgb25lcworLQkqIGJlbG93LgorLQkqLworKwkvKgorKwkgKiBHZW5lcmljIE5WTWUgZGV2aWNlcworKwkgKgorKwkgKiBEdWUgdG8gdGhlIHBhcnNpbmcgbG9naWMgaW4gZmluZF9od2UoKSwgZ2VuZXJpYyBlbnRyaWVzCisrCSAqIGhhdmUgdG8gYmUgcHV0IG9uIHRvcCBvZiB0aGlzIGxpc3QsIGFuZCBtb3JlIHNwZWNpZmljIG9uZXMKKysJICogYmVsb3cuCisrCSAqLworIAl7CisgCQkudmVuZG9yICAgICAgICA9ICJOVk1FIiwKKyAJCS5wcm9kdWN0ICAgICAgID0gIi4qIiwKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcHJpbnQuaCBiL2xpYm11bHRpcGF0aC9wcmludC5oCitpbmRleCA3YmE2NDM4Li45YjVhMjNhIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3ByaW50LmgKKysrKyBiL2xpYm11bHRpcGF0aC9wcmludC5oCitAQCAtMTEzLDcgKzExMyw3IEBAIGludCBfc25wcmludF9tdWx0aXBhdGggKGNvbnN0IHN0cnVjdCBnZW5fbXVsdGlwYXRoICosIGNoYXIgKiwgaW50LAorIAkJCWNvbnN0IGNoYXIgKiwgaW50KTsKKyAjZGVmaW5lIHNucHJpbnRfbXVsdGlwYXRoKGJ1ZiwgbGVuLCBmbXQsIG1wLCB2KQkJCQlcCisgCV9zbnByaW50X211bHRpcGF0aChkbV9tdWx0aXBhdGhfdG9fZ2VuKG1wKSwgYnVmLCBsZW4sIGZtdCwgIHYpCistaW50IF9zbnByaW50X211bHRpcGF0aF90b3BvbG9neSAoY29uc3Qgc3RydWN0IGdlbl9tdWx0aXBhdGggKiwgY2hhciAqLCBpbnQsIAorK2ludCBfc25wcmludF9tdWx0aXBhdGhfdG9wb2xvZ3kgKGNvbnN0IHN0cnVjdCBnZW5fbXVsdGlwYXRoICosIGNoYXIgKiwgaW50LAorIAkJCQkgaW50IHZlcmJvc2l0eSk7CisgI2RlZmluZSBzbnByaW50X211bHRpcGF0aF90b3BvbG9neShidWYsIGxlbiwgbXBwLCB2KSBcCisgCV9zbnByaW50X211bHRpcGF0aF90b3BvbG9neSAoZG1fbXVsdGlwYXRoX3RvX2dlbihtcHApLCBidWYsIGxlbiwgdikKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL21haW4uaCBiL211bHRpcGF0aGQvbWFpbi5oCitpbmRleCBhZjM5NTU4Li44ZmQ0MjZiIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tYWluLmgKKysrKyBiL211bHRpcGF0aGQvbWFpbi5oCitAQCAtMjksMTEgKzI5LDExIEBAIGludCBldl9yZW1vdmVfbWFwIChjaGFyICosIGNoYXIgKiwgaW50LCBzdHJ1Y3QgdmVjdG9ycyAqKTsKKyBpbnQgc2V0X2NvbmZpZ19zdGF0ZShlbnVtIGRhZW1vbl9zdGF0dXMpOworIHZvaWQgKiBtcGF0aF9hbGxvY19wcmluX3Jlc3BvbnNlKGludCBwcmluX3NhKTsKKyBpbnQgcHJpbl9kb19zY3NpX2lvY3RsKGNoYXIgKiwgaW50IHJxX3NlcnZhY3QsIHN0cnVjdCBwcmluX3Jlc3AgKiByZXNwLAorLSAgICAgICBpbnQgbm9pc3kpOworKwkJICAgICAgIGludCBub2lzeSk7Cisgdm9pZCBkdW1wSGV4KGNvbnN0IGNoYXIgKiAsIGludCBsZW4sIGludCBub19hc2NpaSk7CisgaW50IHByb3V0X2RvX3Njc2lfaW9jdGwoY2hhciAqICwgaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKy0gICAgICAgdW5zaWduZWQgaW50IHJxX3R5cGUsIHN0cnVjdCBwcm91dF9wYXJhbV9kZXNjcmlwdG9yICpwYXJhbSwKKy0gICAgICAgaW50IG5vaXN5KTsKKysJCQl1bnNpZ25lZCBpbnQgcnFfdHlwZSwKKysJCQlzdHJ1Y3QgcHJvdXRfcGFyYW1fZGVzY3JpcHRvciAqcGFyYW0sIGludCBub2lzeSk7CisgaW50IG1wYXRoX3ByX2V2ZW50X2hhbmRsZShzdHJ1Y3QgcGF0aCAqcHApOworIHZvaWQgKiBtcGF0aF9wcl9ldmVudF9oYW5kbGVyX2ZuICh2b2lkICogKTsKKyBpbnQgdXBkYXRlX21hcF9wcihzdHJ1Y3QgbXVsdGlwYXRoICptcHApOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjkxYjguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDYtUkgtYWRkLXd3aWRzLWZyb20ta2VybmVsLWNtZGxpbmUtbXBhdGgud3dpZHMtd2l0aC1BLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLUZyb20gMTUxNzljODMwNTIxZDhmMzdmOTI1NGViYzZiYmYxNTBhNDA5Zjk1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMTcgT2N0IDIwMTQgMTE6MjA6MzQgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xNF0gUkg6IGFkZCB3d2lkcyBmcm9tIGtlcm5lbCBjbWRsaW5lIG1wYXRoLnd3aWRzIHdpdGggLUEKLQotVGhpcyBwYXRjaCBhZGRzIGFub3RoZXIgb3B0aW9uIHRvIG11bHRpcGF0aCwgIi1BIiwgd2hpY2ggcmVhZHMKLS9wcm9jL2NtZGxpbmUgZm9yIG1wYXRoLnd3aWQ9PFdXSUQ+IG9wdGlvbnMsIGFuZCBhZGRzIGFueSB3d2lkcyBpdCBmaW5kcwotdG8gL2V0Yy9tdWx0aXBhdGgvd3dpZHMuICBXaGlsZSB0aGlzIGlzbid0IHVzdWFsbHkgaW1wb3J0YW50IGR1cmluZwotbm9ybWFsIG9wZXJhdGlvbiwgc2luY2UgdGhlc2Ugd3dpZHMgc2hvdWxkIGFscmVhZHkgYmUgYWRkZWQsIGl0IGNhbiBiZQotaGVscGZ1bCBkdXJpbmcgaW5zdGFsbGF0aW9uLCB0byBtYWtlIHN1cmUgdGhhdCBtdWx0aXBhdGggY2FuIGNsYWltCi1kZXZpY2VzIGFzIGl0cyBvd24sIGJlZm9yZSBMVk0gb3Igc29tZXRoaW5nIGVsc2UgbWFrZXMgdXNlIG9mIHRoZW0uICBUaGUKLXBhdGNoIGFsc28gZXhlY3MgIi9zYmluL211bHRpcGF0aCAtQSIgYmVmb3JlIHJ1bm5pbmcgbXVsdGlwYXRoZCBpbgotbXVsdGlwYXRoZC5zZXJ2aWNlCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIGxpYm11bHRpcGF0aC93d2lkcy5jICAgICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYm11bHRpcGF0aC93d2lkcy5oICAgICAgICAgIHwgIDEgKwotIG11bHRpcGF0aC9tYWluLmMgICAgICAgICAgICAgIHwgMTAgKysrKysrKystLQotIG11bHRpcGF0aC9tdWx0aXBhdGguOCAgICAgICAgIHwgIDUgKysrKy0KLSBtdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSB8ICAxICsKLSA1IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvd3dpZHMuYyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCi1pbmRleCBiYzcwYTI3Li44OGJiNzJiIDEwMDY0NAotLS0tIGEvbGlibXVsdGlwYXRoL3d3aWRzLmMKLSsrKyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCi1AQCAtMzIxLDMgKzMyMSw0NyBAQCByZW1lbWJlcl93d2lkKGNoYXIgKnd3aWQpCi0gCQljb25kbG9nKDQsICJ3d2lkICVzIGFscmVhZHkgaW4gd3dpZHMgZmlsZSIsIHd3aWQpOwotIAlyZXR1cm4gMDsKLSB9Ci0rCi0raW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKQotK3sKLSsJRklMRSAqZiA9IE5VTEw7Ci0rCWNoYXIgYnVmW0xJTkVfTUFYXSwgKm5leHQsICpwdHI7Ci0rCWludCByZXQgPSAwOwotKwotKwlmID0gZm9wZW4oIi9wcm9jL2NtZGxpbmUiLCAicmUiKTsKLSsJaWYgKCFmKSB7Ci0rCQljb25kbG9nKDAsICJjYW4ndCBvcGVuIC9wcm9jL2NtZGxpbmUgOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0rCQlyZXR1cm4gLTE7Ci0rCX0KLSsKLSsJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewotKwkJaWYgKGZlcnJvcihmKSkKLSsJCQljb25kbG9nKDAsICJyZWFkIG9mIC9wcm9jL2NtZGxpbmUgZmFpbGVkIDogJXMiLAotKwkJCQlzdHJlcnJvcihlcnJubykpOwotKwkJZWxzZQotKwkJCWNvbmRsb2coMCwgImNvdWxkbid0IHJlYWQgL3Byb2MvY21kbGluZSIpOwotKwkJZmNsb3NlKGYpOwotKwkJcmV0dXJuIC0xOwotKwl9Ci0rCWZjbG9zZShmKTsKLSsJbmV4dCA9IGJ1ZjsKLSsJd2hpbGUoKHB0ciA9IHN0cnN0cihuZXh0LCAibXBhdGgud3dpZD0iKSkpIHsKLSsJCXB0ciArPSAxMTsKLSsJCW5leHQgPSBzdHJwYnJrKHB0ciwgIiBcdFxuIik7Ci0rCQlpZiAobmV4dCkgewotKwkJCSpuZXh0ID0gJ1wwJzsKLSsJCQluZXh0Kys7Ci0rCQl9Ci0rCQlpZiAoc3RybGVuKHB0cikpIHsKLSsJCQlpZiAocmVtZW1iZXJfd3dpZChwdHIpICE9IDApCi0rCQkJCXJldCA9IC0xOwotKwkJfQotKwkJZWxzZSB7Ci0rCQkJY29uZGxvZygwLCAiZW1wdHkgbXBhdGgud3dpZCBrZXJuZWwgY29tbWFuZCBsaW5lIG9wdGlvbiIpOwotKwkJCXJldCA9IC0xOwotKwkJfQotKwkJaWYgKCFuZXh0KQotKwkJCWJyZWFrOwotKwl9Ci0rCXJldHVybiByZXQ7Ci0rfQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC93d2lkcy5oIGIvbGlibXVsdGlwYXRoL3d3aWRzLmgKLWluZGV4IDk1MjcwMTIuLmI2NjUyMzIgMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvd3dpZHMuaAotKysrIGIvbGlibXVsdGlwYXRoL3d3aWRzLmgKLUBAIC0xNyw1ICsxNyw2IEBAIGludCByZW1lbWJlcl93d2lkKGNoYXIgKnd3aWQpOwotIGludCBjaGVja193d2lkc19maWxlKGNoYXIgKnd3aWQsIGludCB3cml0ZV93d2lkKTsKLSBpbnQgcmVtb3ZlX3d3aWQoY2hhciAqd3dpZCk7Ci0gaW50IHJlcGxhY2Vfd3dpZHModmVjdG9yIG1wKTsKLStpbnQgcmVtZW1iZXJfY21kbGluZV93d2lkKHZvaWQpOwotIAotICNlbmRpZiAvKiBfV1dJRFNfSCAqLwotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tYWluLmMgYi9tdWx0aXBhdGgvbWFpbi5jCi1pbmRleCA0MTc0ZDQzLi43MjU4NWIwIDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoL21haW4uYwotKysrIGIvbXVsdGlwYXRoL21haW4uYwotQEAgLTEwMiw3ICsxMDIsNyBAQCB1c2FnZSAoY2hhciAqIHByb2duYW1lKQotIHsKLSAJZnByaW50ZiAoc3RkZXJyLCBWRVJTSU9OX1NUUklORyk7Ci0gCWZwcmludGYgKHN0ZGVyciwgIlVzYWdlOlxuIik7Ci0tCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgWy1hfC1jfC13fC1XXSBbLWRdIFstcl0gWy1pXSBbLXYgbHZsXSBbLXAgcG9sXSBbLWIgZmlsXSBbLXFdIFtkZXZdXG4iLCBwcm9nbmFtZSk7Ci0rCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgWy1hfC1BfC1jfC13fC1XXSBbLWRdIFstcl0gWy1pXSBbLXYgbHZsXSBbLXAgcG9sXSBbLWIgZmlsXSBbLXFdIFtkZXZdXG4iLCBwcm9nbmFtZSk7Ci0gCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgLWx8LWxsfC1mIFstdiBsdmxdIFstYiBmaWxdIFstUiBudW1dIFtkZXZdXG4iLCBwcm9nbmFtZSk7Ci0gCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgLUYgWy12IGx2bF0gWy1SIG51bV1cbiIsIHByb2duYW1lKTsKLSAJZnByaW50ZiAoc3RkZXJyLCAiICAlcyAtdFxuIiwgcHJvZ25hbWUpOwotQEAgLTExNiw2ICsxMTYsOCBAQCB1c2FnZSAoY2hhciAqIHByb2duYW1lKQotIAkJIiAgLWYgICAgICBmbHVzaCBhIG11bHRpcGF0aCBkZXZpY2UgbWFwXG4iCi0gCQkiICAtRiAgICAgIGZsdXNoIGFsbCBtdWx0aXBhdGggZGV2aWNlIG1hcHNcbiIKLSAJCSIgIC1hICAgICAgYWRkIGEgZGV2aWNlIHd3aWQgdG8gdGhlIHd3aWRzIGZpbGVcbiIKLSsJCSIgIC1BICAgICAgYWRkIGRldmljZXMgZnJvbSBrZXJuZWwgY29tbWFuZCBsaW5lIG1wYXRoLnd3aWRzXG4iCi0rCQkiICAgICAgICAgIHBhcmFtZXRlcnMgdG8gd3dpZHMgZmlsZVxuIgotIAkJIiAgLWMgICAgICBjaGVjayBpZiBhIGRldmljZSBzaG91bGQgYmUgYSBwYXRoIGluIGEgbXVsdGlwYXRoIGRldmljZVxuIgotIAkJIiAgLXEgICAgICBhbGxvdyBxdWV1ZV9pZl9ub19wYXRoIHdoZW4gbXVsdGlwYXRoZCBpcyBub3QgcnVubmluZ1xuIgotIAkJIiAgLWQgICAgICBkcnkgcnVuLCBkbyBub3QgY3JlYXRlIG9yIHVwZGF0ZSBkZXZtYXBzXG4iCi1AQCAtNTIyLDcgKzUyNCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCQlleGl0KDEpOwotIAltdWx0aXBhdGhfY29uZiA9IGNvbmY7Ci0gCWNvbmYtPnJldHJpZ2dlcl90cmllcyA9IDA7Ci0tCXdoaWxlICgoYXJnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICI6YWRjaGw6OkZmTTp2OnA6YjpCclI6aXRxdXdXIikpICE9IEVPRiApIHsKLSsJd2hpbGUgKChhcmcgPSBnZXRvcHQoYXJnYywgYXJndiwgIjphQWRjaGw6OkZmTTp2OnA6YjpCclI6aXRxdXdXIikpICE9IEVPRiApIHsKLSAJCXN3aXRjaChhcmcpIHsKLSAJCWNhc2UgMTogcHJpbnRmKCJvcHRhcmcgOiAlc1xuIixvcHRhcmcpOwotIAkJCWJyZWFrOwotQEAgLTU4Niw2ICs1ODgsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCWNhc2UgJ3QnOgotIAkJCXIgPSBkdW1wX2NvbmZpZyhjb25mKTsKLSAJCQlnb3RvIG91dF9mcmVlX2NvbmZpZzsKLSsJCWNhc2UgJ0EnOgotKwkJCWlmIChyZW1lbWJlcl9jbWRsaW5lX3d3aWQoKSAhPSAwKQotKwkJCQlleGl0KDEpOwotKwkJCWV4aXQoMCk7Ci0gCQljYXNlICdoJzoKLSAJCQl1c2FnZShhcmd2WzBdKTsKLSAJCQlleGl0KDApOwotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguOCBiL211bHRpcGF0aC9tdWx0aXBhdGguOAotaW5kZXggYjk0MzZlNS4uYjlhZDZiMSAxMDA2NDQKLS0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguOAotKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC44Ci1AQCAtMjUsNyArMjUsNyBAQCBtdWx0aXBhdGggXC0gRGV2aWNlIG1hcHBlciB0YXJnZXQgYXV0b2NvbmZpZy4KLSAuUkIgW1x8IFwtYlwgXGMKLSAuSVIgYmluZGluZ3NfZmlsZSBcfF0KLSAuUkIgW1x8IFwtZCBcfF0KLS0uUkIgW1x8IFwtaCB8IFwtbCB8IFwtbGwgfCBcLWYgfCBcLXQgfCBcLUYgfCBcLUIgfCBcLWMgfCBcLXEgfCBcfC1yIHwgXHwtaSB8IFwtYSB8IFx8LXUgfCBcLXcgfCBcLVcgXHxdCi0rLlJCIFtcfCBcLWggfCBcLWwgfCBcLWxsIHwgXC1mIHwgXC10IHwgXC1GIHwgXC1CIHwgXC1jIHwgXC1xIHwgXHwtciB8IFx8LWkgfCBcLWEgfCBcLUEgfCBcLXUgfCBcLXcgfCBcLVcgXHxdCi0gLlJCIFtcfCBcLXBcIFxjCi0gLklSIGZhaWxvdmVyIHwgbXVsdGlidXMgfCBncm91cF9ieV9zZXJpYWwgfCBncm91cF9ieV9wcmlvIHwgZ3JvdXBfYnlfbm9kZV9uYW1lIFx8XQotIC5SQiBbXHwgXC1SXCBcYwotQEAgLTEyMiw2ICsxMjIsOSBAQCBBZGQgdGhlIFdXSUQgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlIHRvIHRoZSBXV0lEcyBmaWxlLgotIENoZWNrIGlmIHRoZSBkZXZpY2Ugc3BlY2lmaWVkIGluIHRoZSBwcm9ncmFtIGVudmlyb25tZW50IHNob3VsZCBiZQotIGEgcGF0aCBpbiBhIG11bHRpcGF0aCBkZXZpY2UuCi0gLgotKy5CIFwtQQotK2FkZCB3d2lkcyBmcm9tIGFueSBrZXJuZWwgY29tbWFuZCBsaW5lIG1wYXRoLnd3aWQgcGFyYW1ldGVycyB0byB0aGUgd3dpZHMgZmlsZQotKy4KLSAuVFAKLSAuQiBcLXcKLSBSZW1vdmUgdGhlIFdXSUQgZm9yIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGZyb20gdGhlIFdXSURzIGZpbGUuCi1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQotaW5kZXggZmFmZDA4OC4uYTYyM2EzZiAxMDA2NDQKLS0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCi0rKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQotQEAgLTE1LDYgKzE1LDcgQEAgVHlwZT1ub3RpZnkKLSBOb3RpZnlBY2Nlc3M9bWFpbgotIExpbWl0Q09SRT1pbmZpbml0eQotIEV4ZWNTdGFydFByZT0tL3NiaW4vbW9kcHJvYmUgLWEgc2NzaV9kaF9hbHVhIHNjc2lfZGhfZW1jIHNjc2lfZGhfcmRhYyBkbS1tdWx0aXBhdGgKLStFeGVjU3RhcnRQcmU9LS9zYmluL211bHRpcGF0aCAtQQotIEV4ZWNTdGFydD0vc2Jpbi9tdWx0aXBhdGhkIC1kIC1zCi0gRXhlY1JlbG9hZD0vc2Jpbi9tdWx0aXBhdGhkIHJlY29uZmlndXJlCi0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA2LW11bHRpcGF0aC10b29scy1maXgtY29tcGlsYXRpb24td2l0aC1tdXNsLWxpYmMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1tdWx0aXBhdGgtdG9vbHMtZml4LWNvbXBpbGF0aW9uLXdpdGgtbXVzbC1saWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZmQ1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNi1tdWx0aXBhdGgtdG9vbHMtZml4LWNvbXBpbGF0aW9uLXdpdGgtbXVzbC1saWJjLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWF5IDIwMTggMTg6Mzk6NDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoLXRvb2xzOiBmaXggY29tcGlsYXRpb24gd2l0aCBtdXNsIGxpYmMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGFsaWFzLmM6MTU6CitmaWxlLmg6OTo0NzogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lIOKAmG1vZGVfdOKAmTsgZGlkIHlvdSBtZWFuIOKAmHRpbWVfdOKAmT8KKyBpbnQgZW5zdXJlX2RpcmVjdG9yaWVzX2V4aXN0KGNvbnN0IGNoYXIgKnN0ciwgbW9kZV90IGRpcl9tb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfdAorCitzeXNmcy5jOiBJbiBmdW5jdGlvbiDigJhzeXNmc19pc19tdWx0aXBhdGhlZOKAmToKK3N5c2ZzLmM6MzA0OjE1OiBlcnJvcjog4oCYUEFUSF9NQVjigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4g4oCYUEFUSF9VUOKAmT8KKyAgY2hhciBwYXRoYnVmW1BBVEhfTUFYXTsKKyAgICAgICAgICAgICAgIF5+fn5+fn5+CisgICAgICAgICAgICAgICBQQVRIX1VQCisKK0NjOiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK0NjOiBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbT4KK0NjOiBETSBNTCA8ZG0tZGV2ZWxAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9maWxlLmggIHwgMiArKworIGxpYm11bHRpcGF0aC9zeXNmcy5jIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9maWxlLmggYi9saWJtdWx0aXBhdGgvZmlsZS5oCitpbmRleCAyOTUyMGM3Li4zYzc1YzkwIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2ZpbGUuaAorKysrIGIvbGlibXVsdGlwYXRoL2ZpbGUuaAorQEAgLTUsNiArNSw4IEBACisgI2lmbmRlZiBfRklMRV9ICisgI2RlZmluZSBfRklMRV9ICisgCisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrCisgI2RlZmluZSBGSUxFX1RJTUVPVVQgMzAKKyBpbnQgZW5zdXJlX2RpcmVjdG9yaWVzX2V4aXN0KGNvbnN0IGNoYXIgKnN0ciwgbW9kZV90IGRpcl9tb2RlKTsKKyBpbnQgb3Blbl9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIGludCAqY2FuX3dyaXRlLCBjb25zdCBjaGFyICpoZWFkZXIpOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9zeXNmcy5jIGIvbGlibXVsdGlwYXRoL3N5c2ZzLmMKK2luZGV4IGVlNzJlNmEuLjE2ZTBhNzMgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvc3lzZnMuYworKysrIGIvbGlibXVsdGlwYXRoL3N5c2ZzLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxsaWJ1ZGV2Lmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImNoZWNrZXJzLmgiCisgI2luY2x1ZGUgInZlY3Rvci5oIgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNy1SSC10cmlnZ2VyLWNoYW5nZS11ZXZlbnQtb24tbmV3LWRldmljZS1jcmVhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA3LVJILXRyaWdnZXItY2hhbmdlLXVldmVudC1vbi1uZXctZGV2aWNlLWNyZWF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVhMzUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA3LVJILXRyaWdnZXItY2hhbmdlLXVldmVudC1vbi1uZXctZGV2aWNlLWNyZWF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLUZyb20gMGQyYzlhZmJkODlkNzlmZDcwMGY5Yzk5YWEyMGU1ZjdjNzM4MjAyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjQgQXByIDIwMTcgMDk6Mzk6NTcgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNF0gUkg6IHRyaWdnZXIgY2hhbmdlIHVldmVudCBvbiBuZXcgZGV2aWNlIGNyZWF0aW9uCi0KLVdoZW4gbXVsdGlwYXRoIGZpcnN0IHNlZXMgYSBwYXRoIGRldmljZSB3aXRoIHVzZXJfZnJpZW5kbHkgbmFtZXMKLWVuYWJsZWQsIGl0IGNhbid0IGtub3cgaWYgdGhlIGRldmljZSBzaG91bGQgYmUgbXVsdGlwYXRoZWQuIFRoaXMgbWVhbnMKLXRoYXQgaXQgd2lsbCBub3QgY2xhaW0gdGhlIGRldmljZSBpbiB1ZGV2LiAgSWYgdGhlIGRldmljZSBpcyBldmVudHVhbGx5Ci1tdWx0aXBhdGhlZCwgbXVsdGlwYXRoIHNob3VsZCB0cmlnZ2VyIGEgY2hhbmdlIHVldmVudCB0byB1cGRhdGUgdGhlIHVkZXYKLWRhdGFiYXNlIHRvIGNsYWltIHRoZSBkZXZpY2UuCi0KLVRoaXMgYWxzbyByZXZlcnRzIGNvbW1pdCA2NGUyN2VjMDY2YTAwMTAxMmY0NDU1MGYwOTVjOTM0NDNlOTFkODQ1LgotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJtdWx0aXBhdGgvY29uZmlndXJlLmMgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKystLQotIGxpYm11bHRpcGF0aC9jb25maWd1cmUuaCB8ICAxICsKLSBsaWJtdWx0aXBhdGgvd3dpZHMuYyAgICAgfCAgNCArKy0tCi0gbXVsdGlwYXRoL21haW4uYyAgICAgICAgIHwgIDIgKy0KLSBtdWx0aXBhdGhkL21haW4uYyAgICAgICAgfCAgNyArKy0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYyBiL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYwotaW5kZXggYmQwOTBkOS4uODQzZGQwOSAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYwotKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5jCi1AQCAtNDIyLDYgKzQyMiwyOCBAQCB0cmlnZ2VyX3VkZXZfY2hhbmdlKGNvbnN0IHN0cnVjdCBtdWx0aXBhdGggKm1wcCkKLSAJdWRldl9kZXZpY2VfdW5yZWYodWRkKTsKLSB9Ci0gCi0rdm9pZAotK3RyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKQotK3sKLSsJc3RydWN0IHBhdGhncm91cCAqIHBncDsKLSsJc3RydWN0IHBhdGggKiBwcDsKLSsJaW50IGksIGo7Ci0rCi0rCWlmICghbXBwIHx8ICFtcHAtPnBnKQotKwkJcmV0dXJuOwotKwotKwl2ZWN0b3JfZm9yZWFjaF9zbG90IChtcHAtPnBnLCBwZ3AsIGkpIHsKLSsJCWlmICghcGdwLT5wYXRocykKLSsJCQljb250aW51ZTsKLSsJCXZlY3Rvcl9mb3JlYWNoX3Nsb3QocGdwLT5wYXRocywgcHAsIGopIHsKLSsJCQlpZiAoIXBwLT51ZGV2KQotKwkJCQljb250aW51ZTsKLSsJCQlzeXNmc19hdHRyX3NldF92YWx1ZShwcC0+dWRldiwgInVldmVudCIsICJjaGFuZ2UiLAotKwkJCQkJICAgICBzdHJsZW4oImNoYW5nZSIpKTsKLSsJCX0KLSsJfQotK30KLSsKLSBzdGF0aWMgaW50Ci0gaXNfbXBwX2tub3duX3RvX3VkZXYoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKQotIHsKLUBAIC04MDIsOCArODI0LDggQEAgaW50IGRvbWFwKHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgY2hhciAqcGFyYW1zLCBpbnQgaXNfZGFlbW9uKQotIAkJICogc3VjY2VlZGVkCi0gCQkgKi8KLSAJCW1wcC0+Zm9yY2VfdWRldl9yZWxvYWQgPSAwOwotLQkJaWYgKG1wcC0+YWN0aW9uID09IEFDVF9DUkVBVEUpCi0tCQkJcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpOwotKwkJaWYgKG1wcC0+YWN0aW9uID09IEFDVF9DUkVBVEUgJiYgcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpID09IDEpCi0rCQkJdHJpZ2dlcl9wYXRoc191ZGV2X2NoYW5nZShtcHApOwotIAkJaWYgKCFpc19kYWVtb24pIHsKLSAJCQkvKiBtdWx0aXBhdGggY2xpZW50IG1vZGUgKi8KLSAJCQlkbV9zd2l0Y2hncm91cChtcHAtPmFsaWFzLCBtcHAtPmJlc3RwZyk7Ci1kaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oCi1pbmRleCBmZDdmNTgxLi4yNTNlMjliIDEwMDY0NAotLS0tIGEvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5oCi0rKysgYi9saWJtdWx0aXBhdGgvY29uZmlndXJlLmgKLUBAIC0zNiwzICszNiw0IEBAIGludCBnZXRfcmVmd3dpZCAoZW51bSBtcGF0aF9jbWRzIGNtZCwgY2hhciAqIGRldiwgZW51bSBkZXZ0eXBlcyBkZXZfdHlwZSwKLSAJCSB2ZWN0b3IgcGF0aHZlYywgY2hhciAqKnd3aWQpOwotIGludCByZWxvYWRfbWFwKHN0cnVjdCB2ZWN0b3JzICp2ZWNzLCBzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIGludCByZWZyZXNoLCBpbnQgaXNfZGFlbW9uKTsKLSBpbnQgc3lzZnNfZ2V0X2hvc3RfYWRhcHRlcl9uYW1lKHN0cnVjdCBwYXRoICpwcCwgY2hhciAqYWRhcHRlcl9uYW1lKTsKLSt2b2lkIHRyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UoY29uc3Qgc3RydWN0IG11bHRpcGF0aCAqbXBwKTsKLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvd3dpZHMuYyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCi1pbmRleCA4OGJiNzJiLi4yNDljNmMxIDEwMDY0NAotLS0tIGEvbGlibXVsdGlwYXRoL3d3aWRzLmMKLSsrKyBiL2xpYm11bHRpcGF0aC93d2lkcy5jCi1AQCAtMzE5LDcgKzMxOSw3IEBAIHJlbWVtYmVyX3d3aWQoY2hhciAqd3dpZCkKLSAJCWNvbmRsb2coMywgIndyb3RlIHd3aWQgJXMgdG8gd3dpZHMgZmlsZSIsIHd3aWQpOwotIAllbHNlCi0gCQljb25kbG9nKDQsICJ3d2lkICVzIGFscmVhZHkgaW4gd3dpZHMgZmlsZSIsIHd3aWQpOwotLQlyZXR1cm4gMDsKLSsJcmV0dXJuIHJldDsKLSB9Ci0gCi0gaW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKQotQEAgLTM1Myw3ICszNTMsNyBAQCBpbnQgcmVtZW1iZXJfY21kbGluZV93d2lkKHZvaWQpCi0gCQkJbmV4dCsrOwotIAkJfQotIAkJaWYgKHN0cmxlbihwdHIpKSB7Ci0tCQkJaWYgKHJlbWVtYmVyX3d3aWQocHRyKSAhPSAwKQotKwkJCWlmIChyZW1lbWJlcl93d2lkKHB0cikgPCAwKQotIAkJCQlyZXQgPSAtMTsKLSAJCX0KLSAJCWVsc2UgewotZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tYWluLmMgYi9tdWx0aXBhdGgvbWFpbi5jCi1pbmRleCA3MjU4NWIwLi4yZWRhNmEzIDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoL21haW4uYwotKysrIGIvbXVsdGlwYXRoL21haW4uYwotQEAgLTMzNiw3ICszMzYsNyBAQCBjb25maWd1cmUgKHN0cnVjdCBjb25maWcgKmNvbmYsIGVudW0gbXBhdGhfY21kcyBjbWQsCi0gCQl9Ci0gCQlpZiAoY21kID09IENNRF9BRERfV1dJRCkgewotIAkJCXIgPSByZW1lbWJlcl93d2lkKHJlZnd3aWQpOwotLQkJCWlmIChyID09IDApCi0rCQkJaWYgKHIgPj0gMCkKLSAJCQkJcHJpbnRmKCJ3d2lkICclcycgYWRkZWRcbiIsIHJlZnd3aWQpOwotIAkJCWVsc2UKLSAJCQkJcHJpbnRmKCJmYWlsZWQgYWRkaW5nICclcycgdG8gd3dpZHMgZmlsZVxuIiwKLWRpZmYgLS1naXQgYS9tdWx0aXBhdGhkL21haW4uYyBiL211bHRpcGF0aGQvbWFpbi5jCi1pbmRleCA4MWM3NmNhLi44NzRiY2NlIDEwMDY0NAotLS0tIGEvbXVsdGlwYXRoZC9tYWluLmMKLSsrKyBiL211bHRpcGF0aGQvbWFpbi5jCi1AQCAtMjA5Myw3ICsyMDkzLDggQEAgY29uZmlndXJlIChzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MsIGludCBzdGFydF93YWl0ZXJzKQotIAotIAlzeW5jX21hcHNfc3RhdGUobXB2ZWMpOwotIAl2ZWN0b3JfZm9yZWFjaF9zbG90KG1wdmVjLCBtcHAsIGkpewotLQkJcmVtZW1iZXJfd3dpZChtcHAtPnd3aWQpOwotKwkJaWYgKHJlbWVtYmVyX3d3aWQobXBwLT53d2lkKSA9PSAxKQotKwkJCXRyaWdnZXJfcGF0aHNfdWRldl9jaGFuZ2UobXBwKTsKLSAJCXVwZGF0ZV9tYXBfcHIobXBwKTsKLSAJfQotIAotQEAgLTIxNzUsMTAgKzIxNzYsNiBAQCByZWNvbmZpZ3VyZSAoc3RydWN0IHZlY3RvcnMgKiB2ZWNzKQotIAkJY29uZi0+dmVyYm9zaXR5ID0gdmVyYm9zaXR5OwotIAlpZiAoYmluZGluZ3NfcmVhZF9vbmx5KQotIAkJY29uZi0+YmluZGluZ3NfcmVhZF9vbmx5ID0gYmluZGluZ3NfcmVhZF9vbmx5OwotLQlpZiAoY29uZi0+ZmluZF9tdWx0aXBhdGhzKSB7Ci0tCQljb25kbG9nKDIsICJmaW5kX211bHRpcGF0aHMgaXMgc2V0OiAtbiBpcyBpbXBsaWVkIik7Ci0tCQlpZ25vcmVfbmV3X2RldnMgPSAxOwotLQl9Ci0gCWlmIChpZ25vcmVfbmV3X2RldnMpCi0gCQljb25mLT5pZ25vcmVfbmV3X2RldnMgPSBpZ25vcmVfbmV3X2RldnM7Ci0gCXV4c29ja190aW1lb3V0ID0gY29uZi0+dXhzb2NrX3RpbWVvdXQ7Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA3LW11bHRpcGF0aC10b29scy1hZGQteC10by1kb2MtcHJlY2xlYW4ucGwtYW5kLXNwbGl0LW0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNy1tdWx0aXBhdGgtdG9vbHMtYWRkLXgtdG8tZG9jLXByZWNsZWFuLnBsLWFuZC1zcGxpdC1tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNjA4ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwNy1tdWx0aXBhdGgtdG9vbHMtYWRkLXgtdG8tZG9jLXByZWNsZWFuLnBsLWFuZC1zcGxpdC1tLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTMgTWF5IDIwMTggMDA6Mzk6NDEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoLXRvb2xzOiBhZGQgK3ggdG8gZG9jLXByZWNsZWFuLnBsIGFuZCBzcGxpdC1tYW4ucGwKKworSXQgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgYnV0IGl0IGhlbHBzIGlkZW50aWZ5IGJpbiBmaWxlcy4KKworQ2M6IENocmlzdG9waGUgVmFyb3F1aSA8Y2hyaXN0b3BoZS52YXJvcXVpQG9wZW5zdmMuY29tPgorQ2M6IERNIE1MIDxkbS1kZXZlbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGliZG1tcC9kb2NzL2RvYy1wcmVjbGVhbi5wbCB8IDAKKyBsaWJkbW1wL2RvY3Mvc3BsaXQtbWFuLnBsICAgIHwgMAorIDIgZmlsZXMgY2hhbmdlZCwgMCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZG1tcC9kb2NzL2RvYy1wcmVjbGVhbi5wbAorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZG1tcC9kb2NzL3NwbGl0LW1hbi5wbAorCitkaWZmIC0tZ2l0IGEvbGliZG1tcC9kb2NzL2RvYy1wcmVjbGVhbi5wbCBiL2xpYmRtbXAvZG9jcy9kb2MtcHJlY2xlYW4ucGwKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitkaWZmIC0tZ2l0IGEvbGliZG1tcC9kb2NzL3NwbGl0LW1hbi5wbCBiL2xpYmRtbXAvZG9jcy9zcGxpdC1tYW4ucGwKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY3ODgwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOC1saWJtdWx0aXBhdGgtY2hhbmdlLWhvdy1SQURPUy1jaGVja2VyLWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIDBiZTE3NGRiZWRkODYxZDc2OTRiMGM3Nzk5ZmUyNmJlMzFlYjMyYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDI2IE1heSAyMDE3IDE3OjUyOjU3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTRdIGxpYm11bHRpcGF0aDogY2hhbmdlIGhvdyBSQURPUyBjaGVja2VyIGlzIGVuYWJsZWQKLQotSW5zdGVhZCBvZiBtYWtpbmcgdGhlIHVzZXIgY2FsbCAibWFrZSIsICJtYWtlIGluc3RhbGwiIGFuZCAibWFrZSBjbGVhbiIKLXdpdGggRU5BQkxFX1JBRE9TIHNldCBjb3JyZWN0bHksIGhhdmUgdGhlIG1ha2VmaWxlIGNoZWNrIGlmCi0vdXNyL2luY2x1ZGUvcmFkb3MvbGlicmFkb3MuaCBleGlzdHMsIGp1c3QgbGlrZSBpdCBjaGVja3MgaWYgc3BlY2lmaWMKLWZ1bmN0aW9ucyBleGlzdCBpbiBhIGZpbGUuCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIE1ha2VmaWxlLmluYyAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrKysKLSBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUgfCAgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYwotaW5kZXggMjU5MWZhOS4uZTA4NGZkMSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluYwotKysrIGIvTWFrZWZpbGUuaW5jCi1AQCAtMTA5LDUgKzEwOSwxOCBAQCBjaGVja19mdW5jID0JCQkJCQkJCSAgICAgICBcCi0gCWVjaG8gIiQkZm91bmQiCQkJCQkJCSAgICAgICBcCi0gICAgICkKLSAKLSsjIENoZWNrZXIgd2hldGhlciBhIGZpbGUgd2l0aCBuYW1lICQxIGV4aXN0cwotK2NoZWNrX2ZpbGUgPSAkKHNoZWxsCVwKLSsJaWYgWyAtZiAiJDEiIF07IHRoZW4gXAotKwkJZm91bmQ9MTsgXAotKwkJc3RhdHVzPSJ5ZXMiOyBcCi0rCWVsc2UgXAotKwkJZm91bmQ9MDsgXAotKwkJc3RhdHVzPSJubyI7IFwKLSsJZmk7IFwKLSsJZWNobyAxPiYyICJDaGVja2luZyBpZiAkMSBleGlzdHMgLi4uICQkc3RhdHVzIjsgXAotKwllY2hvICIkJGZvdW5kIiBcCi0rCSkKLSsKLSAlLm86CSUuYwotIAkkKENDKSAkKENGTEFHUykgLWMgLW8gJEAgJDwKLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKLWluZGV4IDczMmNhOWQuLmJjZTZiOGIgMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKLSsrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZQotQEAgLTE0LDcgKzE0LDggQEAgTElCUz0gXAotIAlsaWJjaGVja2VtY19jbGFyaWlvbi5zbyBcCi0gCWxpYmNoZWNraHBfc3cuc28gXAotIAlsaWJjaGVja3JkYWMuc28KLS1pZm5lcSAoJChFTkFCTEVfUkFET1MpLDApCi0rCi0raWZuZXEgKCQoY2FsbCBjaGVja19maWxlLC91c3IvaW5jbHVkZS9yYWRvcy9saWJyYWRvcy5oKSwwKQotIExJQlMgKz0gbGliY2hlY2tyYmQuc28KLSBlbmRpZgotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOC1tdWx0aXBhdGgtdG9vbHMtcmVmcmVzaC1rZXJuZWwtZG9jLWZyb20ta2VybmVsLXNvdXJjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDgtbXVsdGlwYXRoLXRvb2xzLXJlZnJlc2gta2VybmVsLWRvYy1mcm9tLWtlcm5lbC1zb3VyYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzUyMTU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMDgtbXVsdGlwYXRoLXRvb2xzLXJlZnJlc2gta2VybmVsLWRvYy1mcm9tLWtlcm5lbC1zb3VyYy5wYXRjaApAQCAtMCwwICsxLDc4NCBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorRGF0ZTogU3VuLCAxMyBNYXkgMjAxOCAwMDozOTo0MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBtdWx0aXBhdGgtdG9vbHM6IHJlZnJlc2gga2VybmVsLWRvYyBmcm9tIGtlcm5lbCBzb3VyY2VzCisKK0NjOiBHcmlzIEdlIDxmZ2VAcmVkaGF0LmNvbT4KK0NjOiBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbT4KK0NjOiBkZXZpY2UtbWFwcGVyIGRldmVsb3BtZW50IDxkbS1kZXZlbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWG9zZSBWYXpxdWV6IFBlcmV6IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGliZG1tcC9kb2NzL2tlcm5lbC1kb2MgfCA2NzEgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM2OCBpbnNlcnRpb25zKCspLCAzMDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJkbW1wL2RvY3Mva2VybmVsLWRvYyBiL2xpYmRtbXAvZG9jcy9rZXJuZWwtZG9jCitpbmRleCBmZWU4OTUyLi4wMDU3ZDhlIDEwMDc1NQorLS0tIGEvbGliZG1tcC9kb2NzL2tlcm5lbC1kb2MKKysrKyBiL2xpYmRtbXAvZG9jcy9rZXJuZWwtZG9jCitAQCAtMSw0ICsxLDUgQEAKKyAjIS91c3IvYmluL2VudiBwZXJsCisrIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIAorIHVzZSB3YXJuaW5nczsKKyB1c2Ugc3RyaWN0OworQEAgLTMyOCwxMyArMzI5LDE1IEBAIG15ICRsaW5lcHJlZml4PSIiOworIHVzZSBjb25zdGFudCB7CisgICAgIFNUQVRFX05PUk1BTCAgICAgICAgPT4gMCwgIyBub3JtYWwgY29kZQorICAgICBTVEFURV9OQU1FICAgICAgICAgID0+IDEsICMgbG9va2luZyBmb3IgZnVuY3Rpb24gbmFtZQorLSAgICBTVEFURV9GSUVMRCAgICAgICAgID0+IDIsICMgc2Nhbm5pbmcgZmllbGQgc3RhcnQKKy0gICAgU1RBVEVfUFJPVE8gICAgICAgICA9PiAzLCAjIHNjYW5uaW5nIHByb3RvdHlwZQorLSAgICBTVEFURV9ET0NCTE9DSyAgICAgID0+IDQsICMgZG9jdW1lbnRhdGlvbiBibG9jaworLSAgICBTVEFURV9JTkxJTkUgICAgICAgID0+IDUsICMgZ2F0aGVyaW5nIGRvY3VtZW50YXRpb24gb3V0c2lkZSBtYWluIGJsb2NrCisrICAgIFNUQVRFX0JPRFlfTUFZQkUgICAgPT4gMiwgIyBib2R5IC0gb3IgbWF5YmUgbW9yZSBkZXNjcmlwdGlvbgorKyAgICBTVEFURV9CT0RZICAgICAgICAgID0+IDMsICMgdGhlIGJvZHkgb2YgdGhlIGNvbW1lbnQKKysgICAgU1RBVEVfUFJPVE8gICAgICAgICA9PiA0LCAjIHNjYW5uaW5nIHByb3RvdHlwZQorKyAgICBTVEFURV9ET0NCTE9DSyAgICAgID0+IDUsICMgZG9jdW1lbnRhdGlvbiBibG9jaworKyAgICBTVEFURV9JTkxJTkUgICAgICAgID0+IDYsICMgZ2F0aGVyaW5nIGRvY3VtZW50YXRpb24gb3V0c2lkZSBtYWluIGJsb2NrCisgfTsKKyBteSAkc3RhdGU7CisgbXkgJGluX2RvY19zZWN0OworK215ICRsZWFkaW5nX3NwYWNlOworIAorICMgSW5saW5lIGRvY3VtZW50YXRpb24gc3RhdGUKKyB1c2UgY29uc3RhbnQgeworQEAgLTM2Myw3ICszNjYsNyBAQCBteSAkZG9jX3NlY3QgPSAkZG9jX2NvbSAuCisgbXkgJGRvY19jb250ZW50ID0gJGRvY19jb21fYm9keSAuICcoLiopJzsKKyBteSAkZG9jX2Jsb2NrID0gJGRvY19jb20gLiAnRE9DOlxzKiguKik/JzsKKyBteSAkZG9jX2lubGluZV9zdGFydCA9ICdeXHMqL1wqXCpccyokJzsKKy1teSAkZG9jX2lubGluZV9zZWN0ID0gJ1xzKlwqXHMqKEBbXHdcc10rKTooLiopJzsKKytteSAkZG9jX2lubGluZV9zZWN0ID0gJ1xzKlwqXHMqKEBccypbXHddW1x3XC5dKlxzKik6KC4qKSc7CisgbXkgJGRvY19pbmxpbmVfZW5kID0gJ15ccypcKi9ccyokJzsKKyBteSAkZG9jX2lubGluZV9vbmVsaW5lID0gJ15ccyovXCpcKlxzKihAW1x3XHNdKyk6XHMqKC4qKVxzKlwqL1xzKiQnOworIG15ICRleHBvcnRfc3ltYm9sID0gJ15ccypFWFBPUlRfU1lNQk9MKF9HUEwpP1xzKlwoXHMqKFx3KylccypcKVxzKjsnOworQEAgLTU1MywxMCArNTU2LDkgQEAgc3ViIG91dHB1dF9oaWdobGlnaHQgeworIAl9CisgCWlmICgkbGluZSBlcSAiIil7CisgCSAgICBpZiAoISAkb3V0cHV0X3ByZWZvcm1hdHRlZCkgeworLQkJcHJpbnQgJGxpbmVwcmVmaXgsIGxvY2FsX3VuZXNjYXBlKCRibGFua2xpbmUpOworKwkJcHJpbnQgJGxpbmVwcmVmaXgsICRibGFua2xpbmU7CisgCSAgICB9CisgCX0gZWxzZSB7CistCSAgICAkbGluZSA9fiBzL1xcXFxcXC9cJi9nOworIAkgICAgaWYgKCRvdXRwdXRfbW9kZSBlcSAibWFuIiAmJiBzdWJzdHIoJGxpbmUsIDAsIDEpIGVxICIuIikgeworIAkJcHJpbnQgIlxcJiRsaW5lIjsKKyAJICAgIH0gZWxzZSB7CitAQCAtNzQ3LDE3ICs3NDksNzMgQEAgc3ViIG91dHB1dF9ibG9ja2hlYWRfcnN0KCUpIHsKKyAgICAgfQorIH0KKyAKKy1zdWIgb3V0cHV0X2hpZ2hsaWdodF9yc3QgeworLSAgICBteSAkY29udGVudHMgPSBqb2luICJcbiIsQF87CistICAgIG15ICRsaW5lOworLQorLSAgICAjIHVuZG8gdGhlIGV2aWwgZWZmZWN0cyBvZiB4bWxfZXNjYXBlKCkgZWFybGllcgorLSAgICAkY29udGVudHMgPSB4bWxfdW5lc2NhcGUoJGNvbnRlbnRzKTsKKy0KKysjCisrIyBBcHBseSB0aGUgUlNUIGhpZ2hsaWdodHMgdG8gYSBzdWItYmxvY2sgb2YgdGV4dC4KKysjICAgCisrc3ViIGhpZ2hsaWdodF9ibG9jaygkKSB7CisrICAgICMgVGhlIGRvaGlnaGxpZ2h0IGtsdWRnZSByZXF1aXJlcyB0aGUgdGV4dCBiZSBjYWxsZWQgJGNvbnRlbnRzCisrICAgIG15ICRjb250ZW50cyA9IHNoaWZ0OworICAgICBldmFsICRkb2hpZ2hsaWdodDsKKyAgICAgZGllICRAIGlmICRAOworKyAgICByZXR1cm4gJGNvbnRlbnRzOworK30KKyAKKy0gICAgZm9yZWFjaCAkbGluZSAoc3BsaXQgIlxuIiwgJGNvbnRlbnRzKSB7CisrIworKyMgUmVnZXhlcyB1c2VkIG9ubHkgaGVyZS4KKysjCisrbXkgJHNwaGlueF9saXRlcmFsID0gJ15bXi5dLio6OiQnOworK215ICRzcGhpbnhfY2Jsb2NrID0gJ15cLlwuXCArY29kZS1ibG9jazo6JzsKKysKKytzdWIgb3V0cHV0X2hpZ2hsaWdodF9yc3QgeworKyAgICBteSAkaW5wdXQgPSBqb2luICJcbiIsQF87CisrICAgIG15ICRvdXRwdXQgPSAiIjsKKysgICAgbXkgJGxpbmU7CisrICAgIG15ICRpbl9saXRlcmFsID0gMDsKKysgICAgbXkgJGxpdHByZWZpeDsKKysgICAgbXkgJGJsb2NrID0gIiI7CisrCisrICAgIGZvcmVhY2ggJGxpbmUgKHNwbGl0ICJcbiIsJGlucHV0KSB7CisrCSMKKysJIyBJZiB3ZSdyZSBpbiBhIGxpdGVyYWwgYmxvY2ssIHNlZSBpZiB3ZSBzaG91bGQgZHJvcCBvdXQKKysJIyBvZiBpdC4gIE90aGVyd2lzZSBwYXNzIHRoZSBsaW5lIHN0cmFpZ2h0IHRocm91Z2ggdW5tdW5nZWQuCisrCSMKKysJaWYgKCRpbl9saXRlcmFsKSB7CisrCSAgICBpZiAoISAoJGxpbmUgPX4gL15ccyokLykpIHsKKysJCSMKKysJCSMgSWYgdGhpcyBpcyB0aGUgZmlyc3Qgbm9uLWJsYW5rIGxpbmUgaW4gYSBsaXRlcmFsCisrCQkjIGJsb2NrIHdlIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSBwcm9wZXIgaW5kZW50IGlzLgorKwkJIworKwkJaWYgKCRsaXRwcmVmaXggZXEgIiIpIHsKKysJCSAgICAkbGluZSA9fiAvXihccyopLzsKKysJCSAgICAkbGl0cHJlZml4ID0gJ14nIC4gJDE7CisrCQkgICAgJG91dHB1dCAuPSAkbGluZSAuICJcbiI7CisrCQl9IGVsc2lmICghICgkbGluZSA9fiAvJGxpdHByZWZpeC8pKSB7CisrCQkgICAgJGluX2xpdGVyYWwgPSAwOworKwkJfSBlbHNlIHsKKysJCSAgICAkb3V0cHV0IC49ICRsaW5lIC4gIlxuIjsKKysJCX0KKysJICAgIH0gZWxzZSB7CisrCQkkb3V0cHV0IC49ICRsaW5lIC4gIlxuIjsKKysJICAgIH0KKysJfQorKwkjCisrCSMgTm90IGluIGEgbGl0ZXJhbCBibG9jayAob3IganVzdCBkcm9wcGVkIG91dCkKKysJIworKwlpZiAoISAkaW5fbGl0ZXJhbCkgeworKwkgICAgJGJsb2NrIC49ICRsaW5lIC4gIlxuIjsKKysJICAgIGlmICgoJGxpbmUgPX4gLyRzcGhpbnhfbGl0ZXJhbC8pIHx8ICgkbGluZSA9fiAvJHNwaGlueF9jYmxvY2svKSkgeworKwkJJGluX2xpdGVyYWwgPSAxOworKwkJJGxpdHByZWZpeCA9ICIiOworKwkJJG91dHB1dCAuPSBoaWdobGlnaHRfYmxvY2soJGJsb2NrKTsKKysJCSRibG9jayA9ICIiCisrCSAgICB9CisrCX0KKysgICAgfQorKworKyAgICBpZiAoJGJsb2NrKSB7CisrCSRvdXRwdXQgLj0gaGlnaGxpZ2h0X2Jsb2NrKCRibG9jayk7CisrICAgIH0KKysgICAgZm9yZWFjaCAkbGluZSAoc3BsaXQgIlxuIiwgJG91dHB1dCkgeworIAlwcmludCAkbGluZXByZWZpeCAuICRsaW5lIC4gIlxuIjsKKyAgICAgfQorIH0KK0BAIC0xMDYyLDcgKzExMjAsNyBAQCBzdWIgZHVtcF9zdHJ1Y3QoJCQpIHsKKyAJCQkJCSMgSGFuZGxlIGJpdG1hcHMKKyAJCQkJCSRhcmcgPX4gcy86XHMqXGQrXHMqLy9nOworIAkJCQkJIyBIYW5kbGUgYXJyYXlzCistCQkJCQkkYXJnID1+IHMvXFtcUytcXS8vZzsKKysJCQkJCSRhcmcgPX4gcy9cWy4qXF0vL2c7CisgCQkJCQkjIFRoZSB0eXBlIG1heSBoYXZlIG11bHRpcGxlIHdvcmRzLAorIAkJCQkJIyBhbmQgbXVsdGlwbGUgSURzIGNhbiBiZSBkZWZpbmVkLCBsaWtlOgorIAkJCQkJIwljb25zdCBzdHJ1Y3QgZm9vLCAqYmFyLCBmb29iYXIKK0BAIC0xNDIyLDggKzE0ODAsNiBAQCBzdWIgcHVzaF9wYXJhbWV0ZXIoJCQkJCkgeworIAkJfQorIAl9CisgCistCSRwYXJhbSA9IHhtbF9lc2NhcGUoJHBhcmFtKTsKKy0KKyAJIyBzdHJpcCBzcGFjZXMgZnJvbSAkcGFyYW0gc28gdGhhdCBpdCBpcyBvbmUgY29udGludW91cyBzdHJpbmcKKyAJIyBvbiBAcGFyYW1ldGVybGlzdDsKKyAJIyB0aGlzIGZpeGVzIGEgcHJvYmxlbSB3aGVyZSBjaGVja19zZWN0aW9ucygpIGNhbm5vdCBmaW5kCitAQCAtMTUyMiw2ICsxNTc4LDcgQEAgc3ViIGR1bXBfZnVuY3Rpb24oJCQpIHsKKyAgICAgJHByb3RvdHlwZSA9fiBzL19fbWVtaW5pdCArLy87CisgICAgICRwcm90b3R5cGUgPX4gcy9fX211c3RfY2hlY2sgKy8vOworICAgICAkcHJvdG90eXBlID1+IHMvX193ZWFrICsvLzsKKysgICAgJHByb3RvdHlwZSA9fiBzL19fc2NoZWQgKy8vOworICAgICBteSAkZGVmaW5lID0gJHByb3RvdHlwZSA9fiBzL14jXHMqZGVmaW5lXHMrLy87ICNhayBhZGRlZAorICAgICAkcHJvdG90eXBlID1+IHMvX19hdHRyaWJ1dGVfX1xzKlwoXCgKKyAgICAgICAgICAgICAoPzoKK0BAIC0xNzQ4LDQ3ICsxODA1LDYgQEAgc3ViIHByb2Nlc3NfcHJvdG9fdHlwZSgkJCkgeworICAgICB9CisgfQorIAorLSMgeG1sX2VzY2FwZTogcmVwbGFjZSA8LCA+LCBhbmQgJiBpbiB0aGUgdGV4dCBzdHJlYW07CistIworLSMgaG93ZXZlciwgZm9ybWF0dGluZyBjb250cm9scyB0aGF0IGFyZSBnZW5lcmF0ZWQgaW50ZXJuYWxseS9sb2NhbGx5IGluIHRoZQorLSMga2VybmVsLWRvYyBzY3JpcHQgYXJlIG5vdCBlc2NhcGVkIGhlcmU7IGluc3RlYWQsIHRoZXkgYmVnaW4gbGlmZSBsaWtlCistIyAkYmxhbmtsaW5lX2h0bWwgKDQgb2YgJ1wnIGZvbGxvd2VkIGJ5IGEgbW5lbW9uaWMgKyAnOicpLCB0aGVuIHRoZXNlIHN0cmluZ3MKKy0jIGFyZSBjb252ZXJ0ZWQgdG8gdGhlaXIgbW5lbW9uaWMtZXhwZWN0ZWQgb3V0cHV0LCB3aXRob3V0IHRoZSA0ICogJ1wnICYgJzonLAorLSMganVzdCBiZWZvcmUgYWN0dWFsIG91dHB1dDsgKHRoaXMgaXMgZG9uZSBieSBsb2NhbF91bmVzY2FwZSgpKQorLXN1YiB4bWxfZXNjYXBlKCQpIHsKKy0JbXkgJHRleHQgPSBzaGlmdDsKKy0JaWYgKCRvdXRwdXRfbW9kZSBlcSAibWFuIikgeworLQkJcmV0dXJuICR0ZXh0OworLQl9CistCSR0ZXh0ID1+IHMvXCYvXFxcXFxcYW1wOy9nOworLQkkdGV4dCA9fiBzL1w8L1xcXFxcXGx0Oy9nOworLQkkdGV4dCA9fiBzL1w+L1xcXFxcXGd0Oy9nOworLQlyZXR1cm4gJHRleHQ7CistfQorLQorLSMgeG1sX3VuZXNjYXBlOiByZXZlcnNlIHRoZSBlZmZlY3RzIG9mIHhtbF9lc2NhcGUKKy1zdWIgeG1sX3VuZXNjYXBlKCQpIHsKKy0JbXkgJHRleHQgPSBzaGlmdDsKKy0JaWYgKCRvdXRwdXRfbW9kZSBlcSAibWFuIikgeworLQkJcmV0dXJuICR0ZXh0OworLQl9CistCSR0ZXh0ID1+IHMvXFxcXFxcYW1wOy9cJi9nOworLQkkdGV4dCA9fiBzL1xcXFxcXGx0Oy88L2c7CistCSR0ZXh0ID1+IHMvXFxcXFxcZ3Q7Lz4vZzsKKy0JcmV0dXJuICR0ZXh0OworLX0KKy0KKy0jIGNvbnZlcnQgbG9jYWwgZXNjYXBlIHN0cmluZ3MgdG8gaHRtbAorLSMgbG9jYWwgZXNjYXBlIHN0cmluZ3MgbG9vayBsaWtlOiAgJ1xcXFxtZW5tb25pYzonICh0aGF0J3MgNCBiYWNrc2xhc2hlcykKKy1zdWIgbG9jYWxfdW5lc2NhcGUoJCkgeworLQlteSAkdGV4dCA9IHNoaWZ0OworLQlpZiAoJG91dHB1dF9tb2RlIGVxICJtYW4iKSB7CistCQlyZXR1cm4gJHRleHQ7CistCX0KKy0JJHRleHQgPX4gcy9cXFxcXFxcXGx0Oi88L2c7CistCSR0ZXh0ID1+IHMvXFxcXFxcXFxndDovPi9nOworLQlyZXR1cm4gJHRleHQ7CistfQorIAorIHN1YiBtYXBfZmlsZW5hbWUoJCkgeworICAgICBteSAkZmlsZTsKK0BAIC0xODI2LDE1ICsxODQyLDI5MSBAQCBzdWIgcHJvY2Vzc19leHBvcnRfZmlsZSgkKSB7CisgICAgIGNsb3NlKElOKTsKKyB9CisgCistc3ViIHByb2Nlc3NfZmlsZSgkKSB7CistICAgIG15ICRmaWxlOworKyMKKysjIFBhcnNlcnMgZm9yIHRoZSB2YXJpb3VzIHByb2Nlc3Npbmcgc3RhdGVzLgorKyMKKysjIFNUQVRFX05PUk1BTDogbG9va2luZyBmb3IgdGhlIC8qKiB0byBiZWdpbiBldmVyeXRoaW5nLgorKyMKKytzdWIgcHJvY2Vzc19ub3JtYWwoKSB7CisrICAgIGlmICgvJGRvY19zdGFydC9vKSB7CisrCSRzdGF0ZSA9IFNUQVRFX05BTUU7CSMgbmV4dCBsaW5lIGlzIGFsd2F5cyB0aGUgZnVuY3Rpb24gbmFtZQorKwkkaW5fZG9jX3NlY3QgPSAwOworKwkkZGVjbGFyYXRpb25fc3RhcnRfbGluZSA9ICQuICsgMTsKKysgICAgfQorK30KKysKKysjCisrIyBTVEFURV9OQU1FOiBMb29raW5nIGZvciB0aGUgIm5hbWUgLSBkZXNjcmlwdGlvbiIgbGluZQorKyMKKytzdWIgcHJvY2Vzc19uYW1lKCQkKSB7CisrICAgIG15ICRmaWxlID0gc2hpZnQ7CisgICAgIG15ICRpZGVudGlmaWVyOworLSAgICBteSAkZnVuYzsKKyAgICAgbXkgJGRlc2NyOworLSAgICBteSAkaW5fcHVycG9zZSA9IDA7CisrCisrICAgIGlmICgvJGRvY19ibG9jay9vKSB7CisrCSRzdGF0ZSA9IFNUQVRFX0RPQ0JMT0NLOworKwkkY29udGVudHMgPSAiIjsKKysJJG5ld19zdGFydF9saW5lID0gJC4gKyAxOworKworKwlpZiAoICQxIGVxICIiICkgeworKwkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9pbnRybzsKKysJfSBlbHNlIHsKKysJICAgICRzZWN0aW9uID0gJDE7CisrCX0KKysgICAgfQorKyAgICBlbHNpZiAoLyRkb2NfZGVjbC9vKSB7CisrCSRpZGVudGlmaWVyID0gJDE7CisrCWlmICgvXHMqKFtcd1xzXSs/KShcKFwpKT9ccyotLykgeworKwkgICAgJGlkZW50aWZpZXIgPSAkMTsKKysJfQorKworKwkkc3RhdGUgPSBTVEFURV9CT0RZOworKwkjIGlmIHRoZXJlJ3Mgbm8gQHBhcmFtIGJsb2NrcyBuZWVkIHRvIHNldCB1cCBkZWZhdWx0IHNlY3Rpb24KKysJIyBoZXJlCisrCSRjb250ZW50cyA9ICIiOworKwkkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CisrCSRuZXdfc3RhcnRfbGluZSA9ICQuICsgMTsKKysJaWYgKC8tKC4qKS8pIHsKKysJICAgICMgc3RyaXAgbGVhZGluZy90cmFpbGluZy9tdWx0aXBsZSBzcGFjZXMKKysJICAgICRkZXNjcj0gJDE7CisrCSAgICAkZGVzY3IgPX4gcy9eXHMqLy87CisrCSAgICAkZGVzY3IgPX4gcy9ccyokLy87CisrCSAgICAkZGVzY3IgPX4gcy9ccysvIC9nOworKwkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgPSAkZGVzY3I7CisrCSAgICAkc3RhdGUgPSBTVEFURV9CT0RZX01BWUJFOworKwl9IGVsc2UgeworKwkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgPSAiIjsKKysJfQorKworKwlpZiAoKCRkZWNsYXJhdGlvbl9wdXJwb3NlIGVxICIiKSAmJiAkdmVyYm9zZSkgeworKwkgICAgcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiBtaXNzaW5nIGluaXRpYWwgc2hvcnQgZGVzY3JpcHRpb24gb24gbGluZTpcbiI7CisrCSAgICBwcmludCBTVERFUlIgJF87CisrCSAgICArKyR3YXJuaW5nczsKKysJfQorKworKwlpZiAoJGlkZW50aWZpZXIgPX4gbS9ec3RydWN0LykgeworKwkgICAgJGRlY2xfdHlwZSA9ICdzdHJ1Y3QnOworKwl9IGVsc2lmICgkaWRlbnRpZmllciA9fiBtL151bmlvbi8pIHsKKysJICAgICRkZWNsX3R5cGUgPSAndW5pb24nOworKwl9IGVsc2lmICgkaWRlbnRpZmllciA9fiBtL15lbnVtLykgeworKwkgICAgJGRlY2xfdHlwZSA9ICdlbnVtJzsKKysJfSBlbHNpZiAoJGlkZW50aWZpZXIgPX4gbS9edHlwZWRlZi8pIHsKKysJICAgICRkZWNsX3R5cGUgPSAndHlwZWRlZic7CisrCX0gZWxzZSB7CisrCSAgICAkZGVjbF90eXBlID0gJ2Z1bmN0aW9uJzsKKysJfQorKworKwlpZiAoJHZlcmJvc2UpIHsKKysJICAgIHByaW50IFNUREVSUiAiJHtmaWxlfTokLjogaW5mbzogU2Nhbm5pbmcgZG9jIGZvciAkaWRlbnRpZmllclxuIjsKKysJfQorKyAgICB9IGVsc2UgeworKwlwcmludCBTVERFUlIgIiR7ZmlsZX06JC46IHdhcm5pbmc6IENhbm5vdCB1bmRlcnN0YW5kICRfIG9uIGxpbmUgJC4iLAorKwkgICAgIiAtIEkgdGhvdWdodCBpdCB3YXMgYSBkb2MgbGluZVxuIjsKKysJKyskd2FybmluZ3M7CisrCSRzdGF0ZSA9IFNUQVRFX05PUk1BTDsKKysgICAgfQorK30KKysKKysKKysjCisrIyBTVEFURV9CT0RZIGFuZCBTVEFURV9CT0RZX01BWUJFOiB0aGUgYnVsayBvZiBhIGtlcm5lbGRvYyBjb21tZW50LgorKyMKKytzdWIgcHJvY2Vzc19ib2R5KCQkKSB7CisrICAgIG15ICRmaWxlID0gc2hpZnQ7CisrCisrICAgIGlmICgvJGRvY19zZWN0L2kpIHsgIyBjYXNlIGluc2Vuc2l0aXZlIGZvciBzdXBwb3J0ZWQgc2VjdGlvbiBuYW1lcworKwkkbmV3c2VjdGlvbiA9ICQxOworKwkkbmV3Y29udGVudHMgPSAkMjsKKysKKysJIyBtYXAgdGhlIHN1cHBvcnRlZCBzZWN0aW9uIG5hbWVzIHRvIHRoZSBjYW5vbmljYWwgbmFtZXMKKysJaWYgKCRuZXdzZWN0aW9uID1+IG0vXmRlc2NyaXB0aW9uJC9pKSB7CisrCSAgICAkbmV3c2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CisrCX0gZWxzaWYgKCRuZXdzZWN0aW9uID1+IG0vXmNvbnRleHQkL2kpIHsKKysJICAgICRuZXdzZWN0aW9uID0gJHNlY3Rpb25fY29udGV4dDsKKysJfSBlbHNpZiAoJG5ld3NlY3Rpb24gPX4gbS9ecmV0dXJucz8kL2kpIHsKKysJICAgICRuZXdzZWN0aW9uID0gJHNlY3Rpb25fcmV0dXJuOworKwl9IGVsc2lmICgkbmV3c2VjdGlvbiA9fiBtL15cQHJldHVybiQvKSB7CisrCSAgICAjIHNwZWNpYWw6IEByZXR1cm4gaXMgYSBzZWN0aW9uLCBub3QgYSBwYXJhbSBkZXNjcmlwdGlvbgorKwkgICAgJG5ld3NlY3Rpb24gPSAkc2VjdGlvbl9yZXR1cm47CisrCX0KKysKKysJaWYgKCgkY29udGVudHMgbmUgIiIpICYmICgkY29udGVudHMgbmUgIlxuIikpIHsKKysJICAgIGlmICghJGluX2RvY19zZWN0ICYmICR2ZXJib3NlKSB7CisrCQlwcmludCBTVERFUlIgIiR7ZmlsZX06JC46IHdhcm5pbmc6IGNvbnRlbnRzIGJlZm9yZSBzZWN0aW9uc1xuIjsKKysJCSsrJHdhcm5pbmdzOworKwkgICAgfQorKwkgICAgZHVtcF9zZWN0aW9uKCRmaWxlLCAkc2VjdGlvbiwgJGNvbnRlbnRzKTsKKysJICAgICRzZWN0aW9uID0gJHNlY3Rpb25fZGVmYXVsdDsKKysJfQorKworKwkkaW5fZG9jX3NlY3QgPSAxOworKwkkc3RhdGUgPSBTVEFURV9CT0RZOworKwkkY29udGVudHMgPSAkbmV3Y29udGVudHM7CisrCSRuZXdfc3RhcnRfbGluZSA9ICQuOworKwl3aGlsZSAoc3Vic3RyKCRjb250ZW50cywgMCwgMSkgZXEgIiAiKSB7CisrCSAgICAkY29udGVudHMgPSBzdWJzdHIoJGNvbnRlbnRzLCAxKTsKKysJfQorKwlpZiAoJGNvbnRlbnRzIG5lICIiKSB7CisrCSAgICAkY29udGVudHMgLj0gIlxuIjsKKysJfQorKwkkc2VjdGlvbiA9ICRuZXdzZWN0aW9uOworKwkkbGVhZGluZ19zcGFjZSA9IHVuZGVmOworKyAgICB9IGVsc2lmICgvJGRvY19lbmQvKSB7CisrCWlmICgoJGNvbnRlbnRzIG5lICIiKSAmJiAoJGNvbnRlbnRzIG5lICJcbiIpKSB7CisrCSAgICBkdW1wX3NlY3Rpb24oJGZpbGUsICRzZWN0aW9uLCAkY29udGVudHMpOworKwkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworKwkgICAgJGNvbnRlbnRzID0gIiI7CisrCX0KKysJIyBsb29rIGZvciBkb2NfY29tICsgPHRleHQ+ICsgZG9jX2VuZDoKKysJaWYgKCRfID1+IG0nXHMqXCpccypbYS16QS1aXzAtOTpcLl0rXCovJykgeworKwkgICAgcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiBzdXNwaWNpb3VzIGVuZGluZyBsaW5lOiAkXyI7CisrCSAgICArKyR3YXJuaW5nczsKKysJfQorKworKwkkcHJvdG90eXBlID0gIiI7CisrCSRzdGF0ZSA9IFNUQVRFX1BST1RPOworKwkkYnJjb3VudCA9IDA7CisrICAgIH0gZWxzaWYgKC8kZG9jX2NvbnRlbnQvKSB7CisrCSMgbWlndWVsLXN0eWxlIGNvbW1lbnQga2x1ZGdlLCBsb29rIGZvciBibGFuayBsaW5lcyBhZnRlcgorKwkjIEBwYXJhbWV0ZXIgbGluZSB0byBzaWduaWZ5IHN0YXJ0IG9mIGRlc2NyaXB0aW9uCisrCWlmICgkMSBlcSAiIikgeworKwkgICAgaWYgKCRzZWN0aW9uID1+IG0vXkAvIHx8ICRzZWN0aW9uIGVxICRzZWN0aW9uX2NvbnRleHQpIHsKKysJCWR1bXBfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sICRjb250ZW50cyk7CisrCQkkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CisrCQkkY29udGVudHMgPSAiIjsKKysJCSRuZXdfc3RhcnRfbGluZSA9ICQuOworKwkgICAgfSBlbHNlIHsKKysJCSRjb250ZW50cyAuPSAiXG4iOworKwkgICAgfQorKwkgICAgJHN0YXRlID0gU1RBVEVfQk9EWTsKKysJfSBlbHNpZiAoJHN0YXRlID09IFNUQVRFX0JPRFlfTUFZQkUpIHsKKysJICAgICMgQ29udGludWVkIGRlY2xhcmF0aW9uIHB1cnBvc2UKKysJICAgIGNob21wKCRkZWNsYXJhdGlvbl9wdXJwb3NlKTsKKysJICAgICRkZWNsYXJhdGlvbl9wdXJwb3NlIC49ICIgIiAuICQxOworKwkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgPX4gcy9ccysvIC9nOworKwl9IGVsc2UgeworKwkgICAgbXkgJGNvbnQgPSAkMTsKKysJICAgIGlmICgkc2VjdGlvbiA9fiBtL15ALyB8fCAkc2VjdGlvbiBlcSAkc2VjdGlvbl9jb250ZXh0KSB7CisrCQlpZiAoIWRlZmluZWQgJGxlYWRpbmdfc3BhY2UpIHsKKysJCSAgICBpZiAoJGNvbnQgPX4gbS9eKFxzKykvKSB7CisrCQkJJGxlYWRpbmdfc3BhY2UgPSAkMTsKKysJCSAgICB9IGVsc2UgeworKwkJCSRsZWFkaW5nX3NwYWNlID0gIiI7CisrCQkgICAgfQorKwkJfQorKwkJJGNvbnQgPX4gcy9eJGxlYWRpbmdfc3BhY2UvLzsKKysJICAgIH0KKysJICAgICRjb250ZW50cyAuPSAkY29udCAuICJcbiI7CisrCX0KKysgICAgfSBlbHNlIHsKKysJIyBpIGRvbnQga25vdyAtIGJhZCBsaW5lPyAgaWdub3JlLgorKwlwcmludCBTVERFUlIgIiR7ZmlsZX06JC46IHdhcm5pbmc6IGJhZCBsaW5lOiAkXyI7CisrCSsrJHdhcm5pbmdzOworKyAgICB9CisrfQorKworKworKyMKKysjIFNUQVRFX1BST1RPOiByZWFkaW5nIGEgZnVuY3Rpb24vd2hhdGV2ZXIgcHJvdG90eXBlLgorKyMKKytzdWIgcHJvY2Vzc19wcm90bygkJCkgeworKyAgICBteSAkZmlsZSA9IHNoaWZ0OworKworKyAgICBpZiAoLyRkb2NfaW5saW5lX29uZWxpbmUvKSB7CisrCSRzZWN0aW9uID0gJDE7CisrCSRjb250ZW50cyA9ICQyOworKwlpZiAoJGNvbnRlbnRzIG5lICIiKSB7CisrCSAgICAkY29udGVudHMgLj0gIlxuIjsKKysJICAgIGR1bXBfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sICRjb250ZW50cyk7CisrCSAgICAkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CisrCSAgICAkY29udGVudHMgPSAiIjsKKysJfQorKyAgICB9IGVsc2lmICgvJGRvY19pbmxpbmVfc3RhcnQvKSB7CisrCSRzdGF0ZSA9IFNUQVRFX0lOTElORTsKKysJJGlubGluZV9kb2Nfc3RhdGUgPSBTVEFURV9JTkxJTkVfTkFNRTsKKysgICAgfSBlbHNpZiAoJGRlY2xfdHlwZSBlcSAnZnVuY3Rpb24nKSB7CisrCXByb2Nlc3NfcHJvdG9fZnVuY3Rpb24oJF8sICRmaWxlKTsKKysgICAgfSBlbHNlIHsKKysJcHJvY2Vzc19wcm90b190eXBlKCRfLCAkZmlsZSk7CisrICAgIH0KKyt9CisrCisrIworKyMgU1RBVEVfRE9DQkxPQ0s6IHdpdGhpbiBhIERPQzogYmxvY2suCisrIworK3N1YiBwcm9jZXNzX2RvY2Jsb2NrKCQkKSB7CisrICAgIG15ICRmaWxlID0gc2hpZnQ7CisrCisrICAgIGlmICgvJGRvY19lbmQvKSB7CisrCWR1bXBfZG9jX3NlY3Rpb24oJGZpbGUsICRzZWN0aW9uLCAkY29udGVudHMpOworKwkkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CisrCSRjb250ZW50cyA9ICIiOworKwkkZnVuY3Rpb24gPSAiIjsKKysJJXBhcmFtZXRlcmRlc2NzID0gKCk7CisrCSVwYXJhbWV0ZXJ0eXBlcyA9ICgpOworKwlAcGFyYW1ldGVybGlzdCA9ICgpOworKwklc2VjdGlvbnMgPSAoKTsKKysJQHNlY3Rpb25saXN0ID0gKCk7CisrCSRwcm90b3R5cGUgPSAiIjsKKysJJHN0YXRlID0gU1RBVEVfTk9STUFMOworKyAgICB9IGVsc2lmICgvJGRvY19jb250ZW50LykgeworKwlpZiAoICQxIGVxICIiICkJeworKwkgICAgJGNvbnRlbnRzIC49ICRibGFua2xpbmU7CisrCX0gZWxzZSB7CisrCSAgICAkY29udGVudHMgLj0gJDEgLiAiXG4iOworKwl9CisrICAgIH0KKyt9CisrCisrIworKyMgU1RBVEVfSU5MSU5FOiBkb2Nib29rIGNvbW1lbnRzIHdpdGhpbiBhIHByb3RvdHlwZS4KKysjCisrc3ViIHByb2Nlc3NfaW5saW5lKCQkKSB7CisrICAgIG15ICRmaWxlID0gc2hpZnQ7CisrCisrICAgICMgRmlyc3QgbGluZSAoc3RhdGUgMSkgbmVlZHMgdG8gYmUgYSBAcGFyYW1ldGVyCisrICAgIGlmICgkaW5saW5lX2RvY19zdGF0ZSA9PSBTVEFURV9JTkxJTkVfTkFNRSAmJiAvJGRvY19pbmxpbmVfc2VjdC9vKSB7CisrCSRzZWN0aW9uID0gJDE7CisrCSRjb250ZW50cyA9ICQyOworKwkkbmV3X3N0YXJ0X2xpbmUgPSAkLjsKKysJaWYgKCRjb250ZW50cyBuZSAiIikgeworKwkgICAgd2hpbGUgKHN1YnN0cigkY29udGVudHMsIDAsIDEpIGVxICIgIikgeworKwkJJGNvbnRlbnRzID0gc3Vic3RyKCRjb250ZW50cywgMSk7CisrCSAgICB9CisrCSAgICAkY29udGVudHMgLj0gIlxuIjsKKysJfQorKwkkaW5saW5lX2RvY19zdGF0ZSA9IFNUQVRFX0lOTElORV9URVhUOworKwkjIERvY3VtZW50YXRpb24gYmxvY2sgZW5kICovCisrICAgIH0gZWxzaWYgKC8kZG9jX2lubGluZV9lbmQvKSB7CisrCWlmICgoJGNvbnRlbnRzIG5lICIiKSAmJiAoJGNvbnRlbnRzIG5lICJcbiIpKSB7CisrCSAgICBkdW1wX3NlY3Rpb24oJGZpbGUsICRzZWN0aW9uLCAkY29udGVudHMpOworKwkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworKwkgICAgJGNvbnRlbnRzID0gIiI7CisrCX0KKysJJHN0YXRlID0gU1RBVEVfUFJPVE87CisrCSRpbmxpbmVfZG9jX3N0YXRlID0gU1RBVEVfSU5MSU5FX05BOworKwkjIFJlZ3VsYXIgdGV4dAorKyAgICB9IGVsc2lmICgvJGRvY19jb250ZW50LykgeworKwlpZiAoJGlubGluZV9kb2Nfc3RhdGUgPT0gU1RBVEVfSU5MSU5FX1RFWFQpIHsKKysJICAgICRjb250ZW50cyAuPSAkMSAuICJcbiI7CisrCSAgICAjIG51a2UgbGVhZGluZyBibGFuayBsaW5lcworKwkgICAgaWYgKCRjb250ZW50cyA9fiAvXlxzKiQvKSB7CisrCQkkY29udGVudHMgPSAiIjsKKysJICAgIH0KKysJfSBlbHNpZiAoJGlubGluZV9kb2Nfc3RhdGUgPT0gU1RBVEVfSU5MSU5FX05BTUUpIHsKKysJICAgICRpbmxpbmVfZG9jX3N0YXRlID0gU1RBVEVfSU5MSU5FX0VSUk9SOworKwkgICAgcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiAiOworKwkgICAgcHJpbnQgU1RERVJSICJJbmNvcnJlY3QgdXNlIG9mIGtlcm5lbC1kb2MgZm9ybWF0OiAkXyI7CisrCSAgICArKyR3YXJuaW5nczsKKysJfQorKyAgICB9CisrfQorKworKworK3N1YiBwcm9jZXNzX2ZpbGUoJCkgeworKyAgICBteSAkZmlsZTsKKyAgICAgbXkgJGluaXRpYWxfc2VjdGlvbl9jb3VudGVyID0gJHNlY3Rpb25fY291bnRlcjsKKyAgICAgbXkgKCRvcmlnX2ZpbGUpID0gQF87CistICAgIG15ICRsZWFkaW5nX3NwYWNlOworIAorICAgICAkZmlsZSA9IG1hcF9maWxlbmFtZSgkb3JpZ19maWxlKTsKKyAKK0BAIC0xODUzLDI1MCArMjE0NSwyMyBAQCBzdWIgcHJvY2Vzc19maWxlKCQpIHsKKyAJfQorIAkjIFJlcGxhY2UgdGFicyBieSBzcGFjZXMKKyAgICAgICAgIHdoaWxlICgkXyA9fiBzL1x0Ky8nICcgeCAobGVuZ3RoKCQmKSAqIDggLSBsZW5ndGgoJGApICUgOCkvZSkge307CisrCSMgSGFuZCB0aGlzIGxpbmUgdG8gdGhlIGFwcHJvcHJpYXRlIHN0YXRlIGhhbmRsZXIKKyAJaWYgKCRzdGF0ZSA9PSBTVEFURV9OT1JNQUwpIHsKKy0JICAgIGlmICgvJGRvY19zdGFydC9vKSB7CistCQkkc3RhdGUgPSBTVEFURV9OQU1FOwkjIG5leHQgbGluZSBpcyBhbHdheXMgdGhlIGZ1bmN0aW9uIG5hbWUKKy0JCSRpbl9kb2Nfc2VjdCA9IDA7CistCQkkZGVjbGFyYXRpb25fc3RhcnRfbGluZSA9ICQuICsgMTsKKy0JICAgIH0KKy0JfSBlbHNpZiAoJHN0YXRlID09IFNUQVRFX05BTUUpIHsjIHRoaXMgbGluZSBpcyB0aGUgZnVuY3Rpb24gbmFtZSAoYWx3YXlzKQorLQkgICAgaWYgKC8kZG9jX2Jsb2NrL28pIHsKKy0JCSRzdGF0ZSA9IFNUQVRFX0RPQ0JMT0NLOworLQkJJGNvbnRlbnRzID0gIiI7CistICAgICAgICAgICAgICAgICRuZXdfc3RhcnRfbGluZSA9ICQuICsgMTsKKy0KKy0JCWlmICggJDEgZXEgIiIgKSB7CistCQkJJHNlY3Rpb24gPSAkc2VjdGlvbl9pbnRybzsKKy0JCX0gZWxzZSB7CistCQkJJHNlY3Rpb24gPSAkMTsKKy0JCX0KKy0JICAgIH0KKy0JICAgIGVsc2lmICgvJGRvY19kZWNsL28pIHsKKy0JCSRpZGVudGlmaWVyID0gJDE7CistCQlpZiAoL1xzKihbXHdcc10rPylccyotLykgeworLQkJICAgICRpZGVudGlmaWVyID0gJDE7CistCQl9CistCistCQkkc3RhdGUgPSBTVEFURV9GSUVMRDsKKy0JCSMgaWYgdGhlcmUncyBubyBAcGFyYW0gYmxvY2tzIG5lZWQgdG8gc2V0IHVwIGRlZmF1bHQgc2VjdGlvbgorLQkJIyBoZXJlCistCQkkY29udGVudHMgPSAiIjsKKy0JCSRzZWN0aW9uID0gJHNlY3Rpb25fZGVmYXVsdDsKKy0JCSRuZXdfc3RhcnRfbGluZSA9ICQuICsgMTsKKy0JCWlmICgvLSguKikvKSB7CistCQkgICAgIyBzdHJpcCBsZWFkaW5nL3RyYWlsaW5nL211bHRpcGxlIHNwYWNlcworLQkJICAgICRkZXNjcj0gJDE7CistCQkgICAgJGRlc2NyID1+IHMvXlxzKi8vOworLQkJICAgICRkZXNjciA9fiBzL1xzKiQvLzsKKy0JCSAgICAkZGVzY3IgPX4gcy9ccysvIC9nOworLQkJICAgICRkZWNsYXJhdGlvbl9wdXJwb3NlID0geG1sX2VzY2FwZSgkZGVzY3IpOworLQkJICAgICRpbl9wdXJwb3NlID0gMTsKKy0JCX0gZWxzZSB7CistCQkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgPSAiIjsKKy0JCX0KKy0KKy0JCWlmICgoJGRlY2xhcmF0aW9uX3B1cnBvc2UgZXEgIiIpICYmICR2ZXJib3NlKSB7CistCQkJcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiBtaXNzaW5nIGluaXRpYWwgc2hvcnQgZGVzY3JpcHRpb24gb24gbGluZTpcbiI7CistCQkJcHJpbnQgU1RERVJSICRfOworLQkJCSsrJHdhcm5pbmdzOworLQkJfQorLQorLQkJaWYgKCRpZGVudGlmaWVyID1+IG0vXnN0cnVjdC8pIHsKKy0JCSAgICAkZGVjbF90eXBlID0gJ3N0cnVjdCc7CistCQl9IGVsc2lmICgkaWRlbnRpZmllciA9fiBtL151bmlvbi8pIHsKKy0JCSAgICAkZGVjbF90eXBlID0gJ3VuaW9uJzsKKy0JCX0gZWxzaWYgKCRpZGVudGlmaWVyID1+IG0vXmVudW0vKSB7CistCQkgICAgJGRlY2xfdHlwZSA9ICdlbnVtJzsKKy0JCX0gZWxzaWYgKCRpZGVudGlmaWVyID1+IG0vXnR5cGVkZWYvKSB7CistCQkgICAgJGRlY2xfdHlwZSA9ICd0eXBlZGVmJzsKKy0JCX0gZWxzZSB7CistCQkgICAgJGRlY2xfdHlwZSA9ICdmdW5jdGlvbic7CistCQl9CistCistCQlpZiAoJHZlcmJvc2UpIHsKKy0JCSAgICBwcmludCBTVERFUlIgIiR7ZmlsZX06JC46IGluZm86IFNjYW5uaW5nIGRvYyBmb3IgJGlkZW50aWZpZXJcbiI7CistCQl9CistCSAgICB9IGVsc2UgeworLQkJcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiBDYW5ub3QgdW5kZXJzdGFuZCAkXyBvbiBsaW5lICQuIiwKKy0JCSIgLSBJIHRob3VnaHQgaXQgd2FzIGEgZG9jIGxpbmVcbiI7CistCQkrKyR3YXJuaW5nczsKKy0JCSRzdGF0ZSA9IFNUQVRFX05PUk1BTDsKKy0JICAgIH0KKy0JfSBlbHNpZiAoJHN0YXRlID09IFNUQVRFX0ZJRUxEKSB7CSMgbG9vayBmb3IgaGVhZDogbGluZXMsIGFuZCBpbmNsdWRlIGNvbnRlbnQKKy0JICAgIGlmICgvJGRvY19zZWN0L2kpIHsgIyBjYXNlIGluc2Vuc2l0aXZlIGZvciBzdXBwb3J0ZWQgc2VjdGlvbiBuYW1lcworLQkJJG5ld3NlY3Rpb24gPSAkMTsKKy0JCSRuZXdjb250ZW50cyA9ICQyOworLQorLQkJIyBtYXAgdGhlIHN1cHBvcnRlZCBzZWN0aW9uIG5hbWVzIHRvIHRoZSBjYW5vbmljYWwgbmFtZXMKKy0JCWlmICgkbmV3c2VjdGlvbiA9fiBtL15kZXNjcmlwdGlvbiQvaSkgeworLQkJICAgICRuZXdzZWN0aW9uID0gJHNlY3Rpb25fZGVmYXVsdDsKKy0JCX0gZWxzaWYgKCRuZXdzZWN0aW9uID1+IG0vXmNvbnRleHQkL2kpIHsKKy0JCSAgICAkbmV3c2VjdGlvbiA9ICRzZWN0aW9uX2NvbnRleHQ7CistCQl9IGVsc2lmICgkbmV3c2VjdGlvbiA9fiBtL15yZXR1cm5zPyQvaSkgeworLQkJICAgICRuZXdzZWN0aW9uID0gJHNlY3Rpb25fcmV0dXJuOworLQkJfSBlbHNpZiAoJG5ld3NlY3Rpb24gPX4gbS9eXEByZXR1cm4kLykgeworLQkJICAgICMgc3BlY2lhbDogQHJldHVybiBpcyBhIHNlY3Rpb24sIG5vdCBhIHBhcmFtIGRlc2NyaXB0aW9uCistCQkgICAgJG5ld3NlY3Rpb24gPSAkc2VjdGlvbl9yZXR1cm47CistCQl9CistCistCQlpZiAoKCRjb250ZW50cyBuZSAiIikgJiYgKCRjb250ZW50cyBuZSAiXG4iKSkgeworLQkJICAgIGlmICghJGluX2RvY19zZWN0ICYmICR2ZXJib3NlKSB7CistCQkJcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiBjb250ZW50cyBiZWZvcmUgc2VjdGlvbnNcbiI7CistCQkJKyskd2FybmluZ3M7CistCQkgICAgfQorLQkJICAgIGR1bXBfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sIHhtbF9lc2NhcGUoJGNvbnRlbnRzKSk7CistCQkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworLQkJfQorLQorLQkJJGluX2RvY19zZWN0ID0gMTsKKy0JCSRpbl9wdXJwb3NlID0gMDsKKy0JCSRjb250ZW50cyA9ICRuZXdjb250ZW50czsKKy0gICAgICAgICAgICAgICAgJG5ld19zdGFydF9saW5lID0gJC47CistCQl3aGlsZSAoc3Vic3RyKCRjb250ZW50cywgMCwgMSkgZXEgIiAiKSB7CistCQkgICAgJGNvbnRlbnRzID0gc3Vic3RyKCRjb250ZW50cywgMSk7CistCQl9CistCQlpZiAoJGNvbnRlbnRzIG5lICIiKSB7CistCQkgICAgJGNvbnRlbnRzIC49ICJcbiI7CistCQl9CistCQkkc2VjdGlvbiA9ICRuZXdzZWN0aW9uOworLQkJJGxlYWRpbmdfc3BhY2UgPSB1bmRlZjsKKy0JICAgIH0gZWxzaWYgKC8kZG9jX2VuZC8pIHsKKy0JCWlmICgoJGNvbnRlbnRzIG5lICIiKSAmJiAoJGNvbnRlbnRzIG5lICJcbiIpKSB7CistCQkgICAgZHVtcF9zZWN0aW9uKCRmaWxlLCAkc2VjdGlvbiwgeG1sX2VzY2FwZSgkY29udGVudHMpKTsKKy0JCSAgICAkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CistCQkgICAgJGNvbnRlbnRzID0gIiI7CistCQl9CistCQkjIGxvb2sgZm9yIGRvY19jb20gKyA8dGV4dD4gKyBkb2NfZW5kOgorLQkJaWYgKCRfID1+IG0nXHMqXCpccypbYS16QS1aXzAtOTpcLl0rXCovJykgeworLQkJICAgIHByaW50IFNUREVSUiAiJHtmaWxlfTokLjogd2FybmluZzogc3VzcGljaW91cyBlbmRpbmcgbGluZTogJF8iOworLQkJICAgICsrJHdhcm5pbmdzOworLQkJfQorLQorLQkJJHByb3RvdHlwZSA9ICIiOworLQkJJHN0YXRlID0gU1RBVEVfUFJPVE87CistCQkkYnJjb3VudCA9IDA7CistIwkJcHJpbnQgU1RERVJSICJlbmQgb2YgZG9jIGNvbW1lbnQsIGxvb2tpbmcgZm9yIHByb3RvdHlwZVxuIjsKKy0JICAgIH0gZWxzaWYgKC8kZG9jX2NvbnRlbnQvKSB7CistCQkjIG1pZ3VlbC1zdHlsZSBjb21tZW50IGtsdWRnZSwgbG9vayBmb3IgYmxhbmsgbGluZXMgYWZ0ZXIKKy0JCSMgQHBhcmFtZXRlciBsaW5lIHRvIHNpZ25pZnkgc3RhcnQgb2YgZGVzY3JpcHRpb24KKy0JCWlmICgkMSBlcSAiIikgeworLQkJICAgIGlmICgkc2VjdGlvbiA9fiBtL15ALyB8fCAkc2VjdGlvbiBlcSAkc2VjdGlvbl9jb250ZXh0KSB7CistCQkJZHVtcF9zZWN0aW9uKCRmaWxlLCAkc2VjdGlvbiwgeG1sX2VzY2FwZSgkY29udGVudHMpKTsKKy0JCQkkc2VjdGlvbiA9ICRzZWN0aW9uX2RlZmF1bHQ7CistCQkJJGNvbnRlbnRzID0gIiI7CistICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19zdGFydF9saW5lID0gJC47CistCQkgICAgfSBlbHNlIHsKKy0JCQkkY29udGVudHMgLj0gIlxuIjsKKy0JCSAgICB9CistCQkgICAgJGluX3B1cnBvc2UgPSAwOworLQkJfSBlbHNpZiAoJGluX3B1cnBvc2UgPT0gMSkgeworLQkJICAgICMgQ29udGludWVkIGRlY2xhcmF0aW9uIHB1cnBvc2UKKy0JCSAgICBjaG9tcCgkZGVjbGFyYXRpb25fcHVycG9zZSk7CistCQkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgLj0gIiAiIC4geG1sX2VzY2FwZSgkMSk7CistCQkgICAgJGRlY2xhcmF0aW9uX3B1cnBvc2UgPX4gcy9ccysvIC9nOworLQkJfSBlbHNlIHsKKy0JCSAgICBteSAkY29udCA9ICQxOworLQkJICAgIGlmICgkc2VjdGlvbiA9fiBtL15ALyB8fCAkc2VjdGlvbiBlcSAkc2VjdGlvbl9jb250ZXh0KSB7CistCQkJaWYgKCFkZWZpbmVkICRsZWFkaW5nX3NwYWNlKSB7CistCQkJICAgIGlmICgkY29udCA9fiBtL14oXHMrKS8pIHsKKy0JCQkJJGxlYWRpbmdfc3BhY2UgPSAkMTsKKy0JCQkgICAgfSBlbHNlIHsKKy0JCQkJJGxlYWRpbmdfc3BhY2UgPSAiIjsKKy0JCQkgICAgfQorLQkJCX0KKy0KKy0JCQkkY29udCA9fiBzL14kbGVhZGluZ19zcGFjZS8vOworLQkJICAgIH0KKy0JCSAgICAkY29udGVudHMgLj0gJGNvbnQgLiAiXG4iOworLQkJfQorLQkgICAgfSBlbHNlIHsKKy0JCSMgaSBkb250IGtub3cgLSBiYWQgbGluZT8gIGlnbm9yZS4KKy0JCXByaW50IFNUREVSUiAiJHtmaWxlfTokLjogd2FybmluZzogYmFkIGxpbmU6ICRfIjsKKy0JCSsrJHdhcm5pbmdzOworLQkgICAgfQorKwkgICAgcHJvY2Vzc19ub3JtYWwoKTsKKysJfSBlbHNpZiAoJHN0YXRlID09IFNUQVRFX05BTUUpIHsKKysJICAgIHByb2Nlc3NfbmFtZSgkZmlsZSwgJF8pOworKwl9IGVsc2lmICgkc3RhdGUgPT0gU1RBVEVfQk9EWSB8fCAkc3RhdGUgPT0gU1RBVEVfQk9EWV9NQVlCRSkgeworKwkgICAgcHJvY2Vzc19ib2R5KCRmaWxlLCAkXyk7CisgCX0gZWxzaWYgKCRzdGF0ZSA9PSBTVEFURV9JTkxJTkUpIHsgIyBzY2FubmluZyBmb3IgaW5saW5lIHBhcmFtZXRlcnMKKy0JICAgICMgRmlyc3QgbGluZSAoc3RhdGUgMSkgbmVlZHMgdG8gYmUgYSBAcGFyYW1ldGVyCistCSAgICBpZiAoJGlubGluZV9kb2Nfc3RhdGUgPT0gU1RBVEVfSU5MSU5FX05BTUUgJiYgLyRkb2NfaW5saW5lX3NlY3QvbykgeworLQkJJHNlY3Rpb24gPSAkMTsKKy0JCSRjb250ZW50cyA9ICQyOworLSAgICAgICAgICAgICAgICAkbmV3X3N0YXJ0X2xpbmUgPSAkLjsKKy0JCWlmICgkY29udGVudHMgbmUgIiIpIHsKKy0JCSAgICB3aGlsZSAoc3Vic3RyKCRjb250ZW50cywgMCwgMSkgZXEgIiAiKSB7CistCQkJJGNvbnRlbnRzID0gc3Vic3RyKCRjb250ZW50cywgMSk7CistCQkgICAgfQorLQkJICAgICRjb250ZW50cyAuPSAiXG4iOworLQkJfQorLQkJJGlubGluZV9kb2Nfc3RhdGUgPSBTVEFURV9JTkxJTkVfVEVYVDsKKy0JICAgICMgRG9jdW1lbnRhdGlvbiBibG9jayBlbmQgKi8KKy0JICAgIH0gZWxzaWYgKC8kZG9jX2lubGluZV9lbmQvKSB7CistCQlpZiAoKCRjb250ZW50cyBuZSAiIikgJiYgKCRjb250ZW50cyBuZSAiXG4iKSkgeworLQkJICAgIGR1bXBfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sIHhtbF9lc2NhcGUoJGNvbnRlbnRzKSk7CistCQkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworLQkJICAgICRjb250ZW50cyA9ICIiOworLQkJfQorLQkJJHN0YXRlID0gU1RBVEVfUFJPVE87CistCQkkaW5saW5lX2RvY19zdGF0ZSA9IFNUQVRFX0lOTElORV9OQTsKKy0JICAgICMgUmVndWxhciB0ZXh0CistCSAgICB9IGVsc2lmICgvJGRvY19jb250ZW50LykgeworLQkJaWYgKCRpbmxpbmVfZG9jX3N0YXRlID09IFNUQVRFX0lOTElORV9URVhUKSB7CistCQkgICAgJGNvbnRlbnRzIC49ICQxIC4gIlxuIjsKKy0JCSAgICAjIG51a2UgbGVhZGluZyBibGFuayBsaW5lcworLQkJICAgIGlmICgkY29udGVudHMgPX4gL15ccyokLykgeworLQkJCSRjb250ZW50cyA9ICIiOworLQkJICAgIH0KKy0JCX0gZWxzaWYgKCRpbmxpbmVfZG9jX3N0YXRlID09IFNUQVRFX0lOTElORV9OQU1FKSB7CistCQkgICAgJGlubGluZV9kb2Nfc3RhdGUgPSBTVEFURV9JTkxJTkVfRVJST1I7CistCQkgICAgcHJpbnQgU1RERVJSICIke2ZpbGV9OiQuOiB3YXJuaW5nOiAiOworLQkJICAgIHByaW50IFNUREVSUiAiSW5jb3JyZWN0IHVzZSBvZiBrZXJuZWwtZG9jIGZvcm1hdDogJF8iOworLQkJICAgICsrJHdhcm5pbmdzOworLQkJfQorLQkgICAgfQorLQl9IGVsc2lmICgkc3RhdGUgPT0gU1RBVEVfUFJPVE8pIHsJIyBzY2FubmluZyBmb3IgZnVuY3Rpb24gJ3snIChlbmQgb2YgcHJvdG90eXBlKQorLQkgICAgaWYgKC8kZG9jX2lubGluZV9vbmVsaW5lLykgeworLQkJJHNlY3Rpb24gPSAkMTsKKy0JCSRjb250ZW50cyA9ICQyOworLQkJaWYgKCRjb250ZW50cyBuZSAiIikgeworLQkJICAgICRjb250ZW50cyAuPSAiXG4iOworLQkJICAgIGR1bXBfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sIHhtbF9lc2NhcGUoJGNvbnRlbnRzKSk7CistCQkgICAgJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworLQkJICAgICRjb250ZW50cyA9ICIiOworLQkJfQorLQkgICAgfSBlbHNpZiAoLyRkb2NfaW5saW5lX3N0YXJ0LykgeworLQkJJHN0YXRlID0gU1RBVEVfSU5MSU5FOworLQkJJGlubGluZV9kb2Nfc3RhdGUgPSBTVEFURV9JTkxJTkVfTkFNRTsKKy0JICAgIH0gZWxzaWYgKCRkZWNsX3R5cGUgZXEgJ2Z1bmN0aW9uJykgeworLQkJcHJvY2Vzc19wcm90b19mdW5jdGlvbigkXywgJGZpbGUpOworLQkgICAgfSBlbHNlIHsKKy0JCXByb2Nlc3NfcHJvdG9fdHlwZSgkXywgJGZpbGUpOworLQkgICAgfQorKwkgICAgcHJvY2Vzc19pbmxpbmUoJGZpbGUsICRfKTsKKysJfSBlbHNpZiAoJHN0YXRlID09IFNUQVRFX1BST1RPKSB7CisrCSAgICBwcm9jZXNzX3Byb3RvKCRmaWxlLCAkXyk7CisgCX0gZWxzaWYgKCRzdGF0ZSA9PSBTVEFURV9ET0NCTE9DSykgeworLQkJaWYgKC8kZG9jX2VuZC8pCistCQl7CistCQkJZHVtcF9kb2Nfc2VjdGlvbigkZmlsZSwgJHNlY3Rpb24sIHhtbF9lc2NhcGUoJGNvbnRlbnRzKSk7CistCQkJJHNlY3Rpb24gPSAkc2VjdGlvbl9kZWZhdWx0OworLQkJCSRjb250ZW50cyA9ICIiOworLQkJCSRmdW5jdGlvbiA9ICIiOworLQkJCSVwYXJhbWV0ZXJkZXNjcyA9ICgpOworLQkJCSVwYXJhbWV0ZXJ0eXBlcyA9ICgpOworLQkJCUBwYXJhbWV0ZXJsaXN0ID0gKCk7CistCQkJJXNlY3Rpb25zID0gKCk7CistCQkJQHNlY3Rpb25saXN0ID0gKCk7CistCQkJJHByb3RvdHlwZSA9ICIiOworLQkJCSRzdGF0ZSA9IFNUQVRFX05PUk1BTDsKKy0JCX0KKy0JCWVsc2lmICgvJGRvY19jb250ZW50LykKKy0JCXsKKy0JCQlpZiAoICQxIGVxICIiICkKKy0JCQl7CistCQkJCSRjb250ZW50cyAuPSAkYmxhbmtsaW5lOworLQkJCX0KKy0JCQllbHNlCistCQkJeworLQkJCQkkY29udGVudHMgLj0gJDEgLiAiXG4iOworLQkJCX0KKy0JCX0KKysJICAgIHByb2Nlc3NfZG9jYmxvY2soJGZpbGUsICRfKTsKKyAJfQorICAgICB9CisrCisrICAgICMgTWFrZSBzdXJlIHdlIGdvdCBzb21ldGhpbmcgaW50ZXJlc3RpbmcuCisgICAgIGlmICgkaW5pdGlhbF9zZWN0aW9uX2NvdW50ZXIgPT0gJHNlY3Rpb25fY291bnRlcikgeworIAlpZiAoJG91dHB1dF9tb2RlIG5lICJub25lIikgeworIAkgICAgcHJpbnQgU1RERVJSICIke2ZpbGV9OjE6IHdhcm5pbmc6IG5vIHN0cnVjdHVyZWQgY29tbWVudHMgZm91bmRcbiI7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdkMmQ5MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOS1tdWx0aXBhdGgtc2V0LXZlcmJvc2l0eS10by1kZWZhdWx0LWR1cmluZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDUyNmU1Mzk2MjhlMDUxMTI4YWJmNDZhNjBlYzIyZTE4YzliNWQ4NGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDMxIE1heSAyMDE3IDE1OjAzOjAyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTRdIG11bHRpcGF0aDogc2V0IHZlcmJvc2l0eSB0byBkZWZhdWx0IGR1cmluZyBjb25maWcKLQotY29uZGxvZyB3YXMgc2V0dGluZyB0aGUgdmVyYm9zaXR5IHRvIDAgaWYgdGhlcmUgd2FzIG5vIGNvbmZpZ3VyYXRpb24uCi1UaGlzIGtlZXBzIG11bHRpcGF0aCBmcm9tIHByaW50aW5nIHdhcm5pbmcgbWVzc2FnZXMgYWJvdXQgY29uZmlnIGZpbGUKLXByb2JsZW1zIHRoYXQgYXJlIGZvdW5kIHdoaWxlIGxvYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24uIEluc3RlYWQsIGl0Ci1zaG91bGQgdXNlIHRoZSBkZWZhdWx0IGNvbmZpZyBsZXZlbCB1bnRpbCBpdCBsb2FkcyB0aGUgY29uZmlndXJhdGlvbgotdG8gZmluZCB0aGUgY3VycmVudCB2YWx1ZS4KLQotU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgotLS0tCi0gbGlibXVsdGlwYXRoL2RlYnVnLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9kZWJ1Zy5jIGIvbGlibXVsdGlwYXRoL2RlYnVnLmMKLWluZGV4IGZiZTE3MWEuLmY4OWIyNjQgMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvZGVidWcuYwotKysrIGIvbGlibXVsdGlwYXRoL2RlYnVnLmMKLUBAIC0xMSw2ICsxMSw3IEBACi0gI2luY2x1ZGUgIi4uL3RoaXJkLXBhcnR5L3ZhbGdyaW5kL2RyZC5oIgotICNpbmNsdWRlICJ2ZWN0b3IuaCIKLSAjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2luY2x1ZGUgImRlZmF1bHRzLmgiCi0gCi0gdm9pZCBkbG9nIChpbnQgc2luaywgaW50IHByaW8sIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKLSB7Ci1AQCAtMjEsNyArMjIsNyBAQCB2b2lkIGRsb2cgKGludCBzaW5rLCBpbnQgcHJpbywgY29uc3QgY2hhciAqIGZtdCwgLi4uKQotIAl2YV9zdGFydChhcCwgZm10KTsKLSAJY29uZiA9IGdldF9tdWx0aXBhdGhfY29uZmlnKCk7Ci0gCUFOTk9UQVRFX0lHTk9SRV9SRUFEU19CRUdJTigpOwotLQl0aHJlcyA9IChjb25mKSA/IGNvbmYtPnZlcmJvc2l0eSA6IDA7Ci0rCXRocmVzID0gKGNvbmYpID8gY29uZi0+dmVyYm9zaXR5IDogREVGQVVMVF9WRVJCT1NJVFk7Ci0gCUFOTk9UQVRFX0lHTk9SRV9SRUFEU19FTkQoKTsKLSAJcHV0X211bHRpcGF0aF9jb25maWcoY29uZik7Ci0gCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDA5LW11bHRpcGF0aC10b29scy1jb25maWd1cmUtaGl0YWNoaS1hbXMyMDAwLWFuZC1odXMxMDAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOS1tdWx0aXBhdGgtdG9vbHMtY29uZmlndXJlLWhpdGFjaGktYW1zMjAwMC1hbmQtaHVzMTAwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYWUwNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAwOS1tdWx0aXBhdGgtdG9vbHMtY29uZmlndXJlLWhpdGFjaGktYW1zMjAwMC1hbmQtaHVzMTAwLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhvc2UgVmF6cXVleiBQZXJleiA8eG9zZS52YXpxdWV6QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTQgTWF5IDIwMTggMTc6MzA6MTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoLXRvb2xzOiBjb25maWd1cmUgaGl0YWNoaSBhbXMyMDAwIGFuZCBodXMxMDAgYXMgZnVsbAorIGFjdGl2ZSBhcnJheXMKKworQU1TMjAwMCBhbmQgSFVTMTAwIGZhbWlsaWVzIGFyZSBhY3RpdmUvYWN0aXZlIGFycmF5cy4KKworQmFzZWQgb24gaHR0cHM6Ly9zdXBwb3J0LmhpdGFjaGl2YW50YXJhLmNvbS9kb3dubG9hZC9lcGNyYS9kZjgxODkxMy5wZGYKK2FuZCBpbnRlcm5hbCBoaXRhY2hpIGRvY3MuCisKK0NjOiBNYXR0aGlhcyBSdWRvbHBoIDxNYXR0aGlhcy5SdWRvbHBoQGhpdGFjaGl2YW50YXJhLmNvbT4KK0NjOiBDaHJpc3RvcGhlIFZhcm9xdWkgPGNocmlzdG9waGUudmFyb3F1aUBvcGVuc3ZjLmNvbT4KK0NjOiBETS1ERVYgTUwgPGRtLWRldmVsQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBYb3NlIFZhenF1ZXogUGVyZXogPHhvc2UudmF6cXVlekBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvaHd0YWJsZS5jIHwgMTAgKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvaHd0YWJsZS5jIGIvbGlibXVsdGlwYXRoL2h3dGFibGUuYworaW5kZXggMmNhNjg4OC4uMTQ4ZjBiYSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9od3RhYmxlLmMKKysrKyBiL2xpYm11bHRpcGF0aC9od3RhYmxlLmMKK0BAIC0zOTgsMTMgKzM5OCwxMyBAQCBzdGF0aWMgc3RydWN0IGh3ZW50cnkgZGVmYXVsdF9od1tdID0geworIAkgKiBNYWlsIDogbWF0dGhpYXMucnVkb2xwaEBoZHMuY29tCisgCSAqLworIAl7CistCQkvKiBVU1AtViwgSFVTIFZNLCBWU1AsIFZTUCBHMVgwMCBhbmQgVlNQIEdYMDAgZmFtaWxpZXMgKi8KKysJCS8qIFVTUC1WLCBIVVMgVk0sIFZTUCwgVlNQIEcxWDAwIGFuZCBWU1AgR1gwMCBmYW1pbGllcyAvIEhQIFhQICovCisgCQkudmVuZG9yICAgICAgICA9ICIoSElUQUNISXxIUCkiLAorIAkJLnByb2R1Y3QgICAgICAgPSAiXk9QRU4tIiwKKyAJCS5wZ3BvbGljeSAgICAgID0gTVVMVElCVVMsCisgCX0sCisgCXsKKy0JCS8qIEFNUyAyMDAwIGFuZCBIVVMgMTAwIGZhbWlsaWVzICovCisrCQkvKiBBTVMgb3RoZXIgdGhhbiBBTVMgMjAwMCAqLworIAkJLnZlbmRvciAgICAgICAgPSAiSElUQUNISSIsCisgCQkucHJvZHVjdCAgICAgICA9ICJeREYiLAorIAkJLm5vX3BhdGhfcmV0cnkgPSBOT19QQVRIX1JFVFJZX1FVRVVFLAorQEAgLTQxMiw2ICs0MTIsMTIgQEAgc3RhdGljIHN0cnVjdCBod2VudHJ5IGRlZmF1bHRfaHdbXSA9IHsKKyAJCS5wZ2ZhaWxiYWNrICAgID0gLUZBSUxCQUNLX0lNTUVESUFURSwKKyAJCS5wcmlvX25hbWUgICAgID0gUFJJT19IRFMsCisgCX0sCisrCXsKKysJCS8qIEFNUyAyMDAwIGFuZCBIVVMgMTAwIGZhbWlsaWVzICovCisrCQkudmVuZG9yICAgICAgICA9ICJISVRBQ0hJIiwKKysJCS5wcm9kdWN0ICAgICAgID0gIl5ERjYwMEYiLAorKwkJLnBncG9saWN5ICAgICAgPSBNVUxUSUJVUywKKysJfSwKKyAJLyoKKyAJICogSUJNCisgCSAqCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEwLWxpYm11bHRpcGF0aC1kb24tdC1yZWplY3QtbWFwcy13aXRoLXVuZGVmaW5lZC1wcmlvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTAtbGlibXVsdGlwYXRoLWRvbi10LXJlamVjdC1tYXBzLXdpdGgtdW5kZWZpbmVkLXByaW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRkYTJlZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEwLWxpYm11bHRpcGF0aC1kb24tdC1yZWplY3QtbWFwcy13aXRoLXVuZGVmaW5lZC1wcmlvLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBXaWxjayA8bXdpbGNrQHN1c2UuY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxMDozNDoxOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWJtdWx0aXBhdGg6IGRvbid0IHJlamVjdCBtYXBzIHdpdGggdW5kZWZpbmVkIHByaW8KKworbGlibXVsdGlwYXRoJ3MgcHJpbyByb3V0aW5lcyBjYW4gZGVhbCB3aXRoIHBwLT5wcmlvcml0eSA9PSBQUklPX1VOREVGCitqdXN0IGZpbmUuIFBSSU9fVU5ERUYgaXMganVzdCBhIHZlcnkgbG93IHByaW9yaXR5LiBTbyB0aGVyZSdzCitubyByZWFzb24gdG8gcmVqZWN0IHNldHRpbmcgdXAgYSBtdWx0aXBhdGggbWFwIGJlY2F1c2UgcGF0aHMgaGF2ZQordW5kZWZpbmVkIHByaW9yaXR5LgorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9jb25maWd1cmUuYyB8IDUgLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYyBiL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYworaW5kZXggNTc5NjY4My4uNWM1NGY5YiAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWd1cmUuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZ3VyZS5jCitAQCAtMTA2Myw5ICsxMDYzLDYgQEAgaW50IGNvYWxlc2NlX3BhdGhzIChzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MsIHZlY3RvciBuZXdtcCwgY2hhciAqIHJlZnd3aWQsCisgCQkJY29udGludWU7CisgCQl9CisgCistCQlpZiAocHAxLT5wcmlvcml0eSA9PSBQUklPX1VOREVGKQorLQkJCW1wcC0+YWN0aW9uID0gQUNUX1JFSkVDVDsKKy0KKyAJCWlmICghbXBwLT5wYXRocykgeworIAkJCWNvbmRsb2coMCwgIiVzOiBza2lwIGNvYWxlc2NlIChubyBwYXRocykiLCBtcHAtPmFsaWFzKTsKKyAJCQlyZW1vdmVfbWFwKG1wcCwgdmVjcywgMCk7CitAQCAtMTA5MSw4ICsxMDg4LDYgQEAgaW50IGNvYWxlc2NlX3BhdGhzIChzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MsIHZlY3RvciBuZXdtcCwgY2hhciAqIHJlZnd3aWQsCisgCQkJCQltcHAtPnNpemUpOworIAkJCQltcHAtPmFjdGlvbiA9IEFDVF9SRUpFQ1Q7CisgCQkJfQorLQkJCWlmIChwcDItPnByaW9yaXR5ID09IFBSSU9fVU5ERUYpCistCQkJCW1wcC0+YWN0aW9uID0gQUNUX1JFSkVDVDsKKyAJCX0KKyAJCXZlcmlmeV9wYXRocyhtcHAsIHZlY3MpOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMC1tcGF0aC1za2lwLWRldmljZS1jb25maWdzLXdpdGhvdXQtdmVuZG9yLXByb2R1Y3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NmI2ZDMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTAtbXBhdGgtc2tpcC1kZXZpY2UtY29uZmlncy13aXRob3V0LXZlbmRvci1wcm9kdWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmODhkNjBhOTNlOThkODZhZTI5NGYyMzE3YTEyMmM0ZWZkZTI3NmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAzMSBNYXkgMjAxNyAxNzo1ODo1OSAtMDUwMAotU3ViamVjdDogW1BBVENIIDEwLzE0XSBtcGF0aDogc2tpcCBkZXZpY2UgY29uZmlncyB3aXRob3V0IHZlbmRvci9wcm9kdWN0Ci0KLVJpZ2h0IG5vdyBpZiBtdWx0aXBhdGguY29uZiBpbmNsdWRlcyBhIGRldmljZSBjb25maWd1cmF0aW9uIHdpdGhvdXQgYQotdmVuZG9yIG9yIHByb2R1Y3Qgc3RyaW5nLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byBhbGwKLWRldmljZXMsIHNraXBwaW5nIGFsbCBvdGhlciBjb25maWdzIGVudGlyZWx5LiAgVGhpcyBpcyBjbGVhcmx5IHdyb25nLgotVGhpcyBwYXRjaCBtYWtlcyBzdXJlIHRoYXQgdXNlciBhZGRlZCBjb25maWdzIGluY2x1ZGUgdmVuZG9yIGFuZAotcHJvZHVjdCBzdHJpbmdzCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KLS0tLQotIGxpYm11bHRpcGF0aC9jb25maWcuYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuYyBiL2xpYm11bHRpcGF0aC9jb25maWcuYwotaW5kZXggYzQ4NTc0OC4uYmRkZTExMyAxMDA2NDQKLS0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuYwotKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCi1AQCAtNDUyLDYgKzQ1MiwxMyBAQCByZXN0YXJ0OgotIAkJCWJyZWFrOwotIAkJaiA9IG47Ci0gCQl2ZWN0b3JfZm9yZWFjaF9zbG90X2FmdGVyKGh3LCBod2UyLCBqKSB7Ci0rCQkJLyogZHJvcCBpbnZhbGlkIGRldmljZSBjb25maWdzICovCi0rCQkJaWYgKCFod2UyLT52ZW5kb3IgfHwgIWh3ZTItPnByb2R1Y3QpIHsKLSsJCQkJY29uZGxvZygwLCAiZGV2aWNlIGNvbmZpZyBtaXNzaW5nIHZlbmRvciBvciBwcm9kdWN0IHBhcmFtZXRlciIpOwotKwkJCQl2ZWN0b3JfZGVsX3Nsb3QoaHcsIGotLSk7Ci0rCQkJCWZyZWVfaHdlKGh3ZTIpOwotKwkJCQljb250aW51ZTsKLSsJCQl9Ci0gCQkJaWYgKGh3ZV9yZWdtYXRjaChod2UxLCBod2UyKSkKLSAJCQkJY29udGludWU7Ci0gCQkJLyogZHVwICovCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTEtbXVsdGlwYXRoZC1maXgtc2hvdy1tYXBzLWpzb24tY3Jhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyZDZkMzguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTEtbXVsdGlwYXRoZC1maXgtc2hvdy1tYXBzLWpzb24tY3Jhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGJjM2NlZGE3NDcxMDRhZmRjMjQzODZkZjVkYzQ1Y2E4NmY2YzI5MzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDEgSnVuIDIwMTcgMTc6NTI6MjggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xNF0gbXVsdGlwYXRoZDogZml4ICJzaG93IG1hcHMganNvbiIgY3Jhc2gKLQotSWYgdGhlcmUgYXJlIG5vIG11bHRpcGF0aCBkZXZpY2VzLCBzaG93X21hcHNfanNvbiBzZXRzIHRoZSBtYXhpbXVtIHNpemUKLW9mIHRoZSByZXBseSBidWZmZXIgdG8gMC4gSGF2aW5nIGEgc2l6ZSBvZiAwIGNhdXNlcyB0aGUgY2FsbHMgdG8gY2FsbG9jCi1hbmQgcmVhbGxvYyB0byBiZWhhdmUgaW4gd2F5cyB0aGF0IHRoZSBjb2RlIGlzbid0IGRlc2lnbmVkIHRvIGhhbmRsZSwKLWxlYWRpbmcgdG8gYSBkb3VibGUtZnJlZSBjcmFzaC4gSW5zdGVhZCwgc2hvd19tYXBzX2pzb24gc2hvdWxkIGp1c3QKLXVzZSB0aGUgSU5JVElBTF9SRVBMWV9MRU4gaWYgdGhlcmUgYXJlIG5vIG11bHRpcGF0aCBkZXZpY2VzLgotCi1TaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+Ci0tLS0KLSBtdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jIHwgNiArKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYyBiL211bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMKLWluZGV4IDA0YzczODYuLjdiMGQwMGMgMTAwNjQ0Ci0tLS0gYS9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCi0rKysgYi9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCi1AQCAtMTYyLDEwICsxNjIsMTIgQEAgc2hvd19tYXBzX2pzb24gKGNoYXIgKiogciwgaW50ICogbGVuLCBzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MpCi0gCXN0cnVjdCBtdWx0aXBhdGggKiBtcHA7Ci0gCWNoYXIgKiBjOwotIAljaGFyICogcmVwbHk7Ci0tCXVuc2lnbmVkIGludCBtYXhsZW4gPSBJTklUSUFMX1JFUExZX0xFTiAqCi0tCQkJUFJJTlRfSlNPTl9NVUxUSVBMSUVSICogVkVDVE9SX1NJWkUodmVjcy0+bXB2ZWMpOwotKwl1bnNpZ25lZCBpbnQgbWF4bGVuID0gSU5JVElBTF9SRVBMWV9MRU47Ci0gCWludCBhZ2FpbiA9IDE7Ci0gCi0rCWlmIChWRUNUT1JfU0laRSh2ZWNzLT5tcHZlYykgPiAwKQotKwkJbWF4bGVuICo9IFBSSU5UX0pTT05fTVVMVElQTElFUiAqIFZFQ1RPUl9TSVpFKHZlY3MtPm1wdmVjKTsKLSsKLSAJdmVjdG9yX2ZvcmVhY2hfc2xvdCh2ZWNzLT5tcHZlYywgbXBwLCBpKSB7Ci0gCQlpZiAodXBkYXRlX211bHRpcGF0aCh2ZWNzLCBtcHAtPmFsaWFzLCAwKSkgewotIAkJCXJldHVybiAxOwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMS1tdWx0aXBhdGhkLWhhbmRsZS1lcnJvcnMtaW4tdXhsc25yLWFzLWZhdGFsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTEtbXVsdGlwYXRoZC1oYW5kbGUtZXJyb3JzLWluLXV4bHNuci1hcy1mYXRhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmE4MTRmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTEtbXVsdGlwYXRoZC1oYW5kbGUtZXJyb3JzLWluLXV4bHNuci1hcy1mYXRhbC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK0RhdGU6IFdlZCwgMjEgTWFyIDIwMTggMTA6MzQ6MTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlwYXRoZDogaGFuZGxlIGVycm9ycyBpbiB1eGxzbnIgYXMgZmF0YWwKKworVGhlIHBwb2xsKCkgY2FsbHMgb2YgdGhlIHV4bHNuciB0aHJlYWQgYXJlIHZpdGFsIGZvciBwcm9wZXIgZnVuY3Rpb25pbmcgb2YKK211bHRpcGF0aGQuIElmIHRoZSB1eGxzbnIgdGhyZWFkIGNhbid0IG9wZW4gdGhlIHNvY2tldCBvciBmYWlscyB0byBjYWxsIHBwb2xsKCkKK2ZvciBvdGhlciByZWFzb25zLCBxdWl0IHRoZSBkYWVtb24uIElmIHdlIGRvbid0IGRvIHRoYXQsIG11bHRpcGF0aGQgbWF5CitoYW5nIGluIGEgc3RhdGUgd2hlcmUgaXQgY2FuJ3QgYmUgdGVybWluYXRlZCBhbnkgbW9yZSwgYmVjYXVzZSB0aGUgdXhsc25yCit0aHJlYWQgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIGFsbCBzaWduYWxzLiBUaGlzIGhhcHBlbnMgZS5nLiBpZgorc3lzdGVtZCdzIG11bHRpcGF0aGQuc29ja2V0IGlzIHJ1bm5pbmcgaW4gYW5kIG11bHRpcGF0aGQgaXMgc3RhcnRlZCBmcm9tCitvdXRzaWRlIHN5c3RlbWQuCisKKzI0ZjI4NDQgIm11bHRpcGF0aGQ6IGZpeCBzaWduYWwgYmxvY2tpbmcgbG9naWMiIGhhcyBtYWRlIHRoaXMgcHJvYmxlbSBtb3JlCitzZXZlcmUuIEJlZm9yZSB0aGF0IHBhdGNoLCB0aGUgc2lnbmFscyB3ZXJlbid0IGFjdHVhbGx5IGJsb2NrZWQgaW4gYW55IHRocmVhZC4KK1RoYXQncyBub3QgdG8gc2F5IDI0ZjI4NDQgd2FzIHdyb25nLiBJIHN0aWxsIHRoaW5rIGl0J3MgY29ycmVjdCwgd2UganVzdAorbmVlZCB0aGlzIG9uZSBvbiB0b3AuCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBXaWxjayA8bXdpbGNrQHN1c2UuY29tPgorU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbXVsdGlwYXRoZC91eGxzbnIuYyB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC91eGxzbnIuYyBiL211bHRpcGF0aGQvdXhsc25yLmMKK2luZGV4IGNkYWZkODIuLjZmNjY2NjYgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL3V4bHNuci5jCisrKysgYi9tdWx0aXBhdGhkL3V4bHNuci5jCitAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgKiB1eHNvY2tfbGlzdGVuKHV4c29ja190cmlnZ2VyX2ZuIHV4c29ja190cmlnZ2VyLCB2b2lkICogdHJpZ2dlcl9kYXRhKQorIAorIAlpZiAodXhfc29jayA9PSAtMSkgeworIAkJY29uZGxvZygxLCAiY291bGQgbm90IGNyZWF0ZSB1eHNvY2s6ICVkIiwgZXJybm8pOworLQkJcmV0dXJuIE5VTEw7CisrCQlleGl0X2RhZW1vbigpOworIAl9CisgCisgCXB0aHJlYWRfY2xlYW51cF9wdXNoKHV4c29ja19jbGVhbnVwLCAodm9pZCAqKXV4X3NvY2spOworQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkICogdXhzb2NrX2xpc3Rlbih1eHNvY2tfdHJpZ2dlcl9mbiB1eHNvY2tfdHJpZ2dlciwgdm9pZCAqIHRyaWdnZXJfZGF0YSkKKyAJcG9sbHMgPSAoc3RydWN0IHBvbGxmZCAqKU1BTExPQygoTUlOX1BPTExTICsgMSkgKiBzaXplb2Yoc3RydWN0IHBvbGxmZCkpOworIAlpZiAoIXBvbGxzKSB7CisgCQljb25kbG9nKDAsICJ1eHNvY2s6IGZhaWxlZCB0byBhbGxvY2F0ZSBwb2xsIGZkcyIpOworLQkJcmV0dXJuIE5VTEw7CisrCQlleGl0X2RhZW1vbigpOworIAl9CisgCXNpZ2ZpbGxzZXQoJm1hc2spOworIAlzaWdkZWxzZXQoJm1hc2ssIFNJR0lOVCk7CitAQCAtMjQ5LDYgKzI0OSw3IEBAIHZvaWQgKiB1eHNvY2tfbGlzdGVuKHV4c29ja190cmlnZ2VyX2ZuIHV4c29ja190cmlnZ2VyLCB2b2lkICogdHJpZ2dlcl9kYXRhKQorIAorIAkJCS8qIHNvbWV0aGluZyB3ZW50IGJhZGx5IHdyb25nISAqLworIAkJCWNvbmRsb2coMCwgInV4c29jazogcG9sbCBmYWlsZWQgd2l0aCAlZCIsIGVycm5vKTsKKysJCQlleGl0X2RhZW1vbigpOworIAkJCWJyZWFrOworIAkJfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMi1saWJtdWx0aXBhdGgtZml4LWVycm9yLXBhcnNpbmctZmluZF9tdWx0aXBhdGhzLXN0cmljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbGlibXVsdGlwYXRoLWZpeC1lcnJvci1wYXJzaW5nLWZpbmRfbXVsdGlwYXRocy1zdHJpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2UyNDMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbGlibXVsdGlwYXRoLWZpeC1lcnJvci1wYXJzaW5nLWZpbmRfbXVsdGlwYXRocy1zdHJpYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK0RhdGU6IFR1ZSwgMTUgTWF5IDIwMTggMTQ6MzI6NDQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlibXVsdGlwYXRoOiBmaXggZXJyb3IgcGFyc2luZyAiZmluZF9tdWx0aXBhdGhzIHN0cmljdCIKKworSWYgImZpbmRfbXVsdGlwYXRocyBzdHJpY3QiIGlzIHNldCBpbiBtdWx0aXBhdGguY29uZiwgdGhlIGVycm9yIG1lc3NhZ2UKKyJpbGxlZ2FsIHZhbHVlIGZvciBmaW5kX211bHRpcGF0aHM6IHN0cmljdCIgaXMgcHJpbnRlZC4gVGhpcyBjYXVzZXMgbm8KK2Z1bmN0aW9uYWwgcHJvYmxlbSwgYXMgInN0cmljdCIgaGFwcGVucyB0byBiZSB0aGUgZGVmYXVsdCwgZmFsbGJhY2sKK3ZhbHVlLiBJdCBzaG91bGQgYmUgZml4ZWQgbm9uZXRoZWxlc3MuIEZJTkRfTVVMVElQQVRIU19TVFJJQ1QsIGhhdmluZwordGhlIGhpZ2hlc3QgbnVtZXJpYyB2YWx1ZSwgbXVzdCBiZSBsYXN0IGluIHRoZSBlbnVtLgorCitGaXhlczogYzM2ZjJmNDIgImxpYm11bHRpcGF0aDogY2hhbmdlIGZpbmRfbXVsdGlwYXRocyBvcHRpb24gdG8gbXVsdGktdmFsdWUiCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gV2lsY2sgPG13aWxja0BzdXNlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9zdHJ1Y3RzLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvc3RydWN0cy5oIGIvbGlibXVsdGlwYXRoL3N0cnVjdHMuaAoraW5kZXggZWI2YTE3OC4uZTQyNGIxNSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9zdHJ1Y3RzLmgKKysrKyBiL2xpYm11bHRpcGF0aC9zdHJ1Y3RzLmgKK0BAIC0xMjIsOSArMTIyLDkgQEAgZW51bSBmaW5kX211bHRpcGF0aHNfc3RhdGVzIHsKKyAJRklORF9NVUxUSVBBVEhTX1VOREVGID0gWU5VX1VOREVGLAorIAlGSU5EX01VTFRJUEFUSFNfT0ZGID0gWU5VX05PLAorIAlGSU5EX01VTFRJUEFUSFNfT04gPSBfRklORF9NVUxUSVBBVEhTX0YsCistCUZJTkRfTVVMVElQQVRIU19TVFJJQ1QgPSBfRklORF9NVUxUSVBBVEhTX0Z8X0ZJTkRfTVVMVElQQVRIU19OLAorIAlGSU5EX01VTFRJUEFUSFNfR1JFRURZID0gX0ZJTkRfTVVMVElQQVRIU19JLAorIAlGSU5EX01VTFRJUEFUSFNfU01BUlQgPSBfRklORF9NVUxUSVBBVEhTX0Z8X0ZJTkRfTVVMVElQQVRIU19JLAorKwlGSU5EX01VTFRJUEFUSFNfU1RSSUNUID0gX0ZJTkRfTVVMVElQQVRIU19GfF9GSU5EX01VTFRJUEFUSFNfTiwKKyAJX19GSU5EX01VTFRJUEFUSFNfTEFTVCwKKyB9OworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMi1tdWx0aXBhdGgtdG9vbHMtbW9kaWZ5LU1ha2VmaWxlLmluYy1mb3ItY3Jvc3MtY29tcGlsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNjZDRhZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMi1tdWx0aXBhdGgtdG9vbHMtbW9kaWZ5LU1ha2VmaWxlLmluYy1mb3ItY3Jvc3MtY29tcGlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSA2ODY0YmEyOGRlYzYxNjA5NjYyY2U1ZGM4YmM3ZWQxOTI1YWJiNTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDAyOjU2OjEzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTRdIG11bHRpcGF0aC10b29sczogbW9kaWZ5IE1ha2VmaWxlLmluYyBmb3IKLSBjcm9zcy1jb21waWxhdGlvbgotCi1EbyBub3QgbG9vayBmb3Igc3lzdGVtZCBpbmZvIG9uIHRoZSBob3N0LCBhbmQgYWxsb3cgdXMgdG8gcGFzcyBpbiBDRkxBR1MKLXVzaW5nIHRoZSBPUFRGTEFHUyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1VcGRhdGUgZm9yIHZlcnNpb24gMC41LjAtMTQ0LWc3NzBlNmQwCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1VcGRhdGUgZm9yIHZlcnNpb24gMC43LjEKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuaW5jIHwgOCArKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKLWluZGV4IGUwODRmZDEuLmM3ZjQ1ZmEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbmMKLSsrKyBiL01ha2VmaWxlLmluYwotQEAgLTM1LDEyICszNSw2IEBAIGlmbmRlZiBSVU4KLSAJZW5kaWYKLSBlbmRpZgotIAotLWlmbmRlZiBTWVNURU1ECi0tCWlmZXEgKCQoc2hlbGwgc3lzdGVtY3RsIC0tdmVyc2lvbiA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gMSksIDEpCi0tCQlTWVNURU1EID0gJChzaGVsbCBzeXN0ZW1jdGwgLS12ZXJzaW9uIDI+IC9kZXYvbnVsbCB8ICBzZWQgLW4gJ3Mvc3lzdGVtZCBcKFswLTldKlwpL1wxL3AnKQotLQllbmRpZgotLWVuZGlmCi0tCi0gaWZuZGVmIFNZU1RFTURQQVRICi0gCVNZU1RFTURQQVRIPXVzci9saWIKLSBlbmRpZgotQEAgLTgyLDExICs3NiwxMyBAQCBURVNUX0NDX09QVElPTiA9ICQoc2hlbGwgXAotIAotIFNUQUNLUFJPVCA6PSAkKGNhbGwgVEVTVF9DQ19PUFRJT04sLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLC1mc3RhY2stcHJvdGVjdG9yKQotIAotK2lmbmRlZiBPUFRGTEFHUwotIE9QVEZMQUdTCT0gLU8yIC1nIC1waXBlIC1XYWxsIC1XZXh0cmEgLVdmb3JtYXQ9MiAtV2Vycm9yPWltcGxpY2l0LWludCBcCi0gCQkgIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHkgXAotIAkJICAtV25vLXNpZ24tY29tcGFyZSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby1jbG9iYmVyZWQgXAotIAkJICAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAkKFNUQUNLUFJPVCkgXAotIAkJICAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00Ci0rZW5kaWYKLSAKLSBDRkxBR1MJCT0gJChPUFRGTEFHUykgLURMSUJfU1RSSU5HPVwiJHtMSUJ9XCIgLURSVU5fRElSPVwiJHtSVU59XCIKLSBCSU5fQ0ZMQUdTCT0gLWZQSUUgLURQSUUKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTMtQWx3YXlzLXVzZS1kZXZtYXBwZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMy1BbHdheXMtdXNlLWRldm1hcHBlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIyNDBmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxMy1BbHdheXMtdXNlLWRldm1hcHBlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gMTQ5ODMzODk3MGEwOTNmY2NiZGEzZTMzZjU1ODhhMjg5ZWYyYzY2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgNSBKdWwgMjAxNyAwMjo1OTo0NiAtMDQwMAotU3ViamVjdDogW1BBVENIIDEzLzE0XSBBbHdheXMgdXNlIGRldm1hcHBlcgotCi1EbyBub3QgdHJ5IHRvIGNvbXB1dGUgc2V2ZXJhbCBfQVBJXyBtYWtlIHZhcmlhYmxlcwotZnJvbSBob3N0IGluZm9ybWF0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLVJlYmFzZSB0byAwLjcuMQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJtdWx0aXBhdGgvTWFrZWZpbGUgfCAxOSArKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKLWluZGV4IGIzMjQ0ZmMuLjkwMDZiM2YgMTAwNjQ0Ci0tLS0gYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUKLSsrKyBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQotQEAgLTIwLDIxICsyMCwxMCBAQCBpZmRlZiBTWVNURU1ECi0gCWVuZGlmCi0gZW5kaWYKLSAKLS1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19ub19mbHVzaCwvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpLDApCi0tCUNGTEFHUyArPSAtRExJQkRNX0FQSV9GTFVTSCAtRF9HTlVfU09VUkNFCi0tZW5kaWYKLS0KLS1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19zZXRfY29va2llLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKLS0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotLWVuZGlmCi0tCi0taWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLHVkZXZfbW9uaXRvcl9zZXRfcmVjZWl2ZV9idWZmZXJfc2l6ZSwvdXNyL2luY2x1ZGUvbGlidWRldi5oKSwwKQotLQlDRkxBR1MgKz0gLURMSUJVREVWX0FQSV9SRUNWQlVGCi0tZW5kaWYKLS0KLS1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19kZWZlcnJlZF9yZW1vdmUsL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKSwwKQotLQlDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKLS1lbmRpZgotK0NGTEFHUyArPSAtRExJQkRNX0FQSV9GTFVTSCAtRF9HTlVfU09VUkNFCi0rQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotK0NGTEFHUyArPSAtRExJQlVERVZfQVBJX1JFQ1ZCVUYKLStDRkxBR1MgKz0gLURMSUJETV9BUElfREVGRVJSRUQKLSAKLSBPQkpTID0gbWVtb3J5Lm8gcGFyc2VyLm8gdmVjdG9yLm8gZGV2bWFwcGVyLm8gY2FsbG91dC5vIFwKLSAJaHd0YWJsZS5vIGJsYWNrbGlzdC5vIHV0aWwubyBkbXBhcnNlci5vIGNvbmZpZy5vIFwKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTMtbGlibXVsdGlwYXRoLXByaW50LWNvcnJlY3QtZGVmYXVsdC1mb3ItZGVsYXlfLV9jaGVjay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEzLWxpYm11bHRpcGF0aC1wcmludC1jb3JyZWN0LWRlZmF1bHQtZm9yLWRlbGF5Xy1fY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc2NzgwNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDEzLWxpYm11bHRpcGF0aC1wcmludC1jb3JyZWN0LWRlZmF1bHQtZm9yLWRlbGF5Xy1fY2hlY2sucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogTW9uLCA3IE1heSAyMDE4IDE3OjE2OjA1IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYm11bHRpcGF0aDogcHJpbnQgY29ycmVjdCBkZWZhdWx0IGZvciBkZWxheV8qX2NoZWNrcworCitUaGVzZSBvcHRpb25zIGRlZmF1bHQgdG8gIm5vIiwgc28gdGhleSBzaG91bGQgZGlzcGxheSB0aGF0IHdoZW4gdGhlCitjb25maWcgaXMgcHJpbnRlZC4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2RpY3QuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9kaWN0LmMgYi9saWJtdWx0aXBhdGgvZGljdC5jCitpbmRleCA0MDQwNjExLi4zZTdjNWQ2IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2RpY3QuYworKysrIGIvbGlibXVsdGlwYXRoL2RpY3QuYworQEAgLTExMTUsNyArMTExNSw4IEBAIHByaW50X29mZl9pbnRfdW5kZWYoY2hhciAqIGJ1ZmYsIGludCBsZW4sIGxvbmcgdikKKyB9CisgCisgZGVjbGFyZV9kZWZfaGFuZGxlcihkZWxheV93YXRjaF9jaGVja3MsIHNldF9vZmZfaW50X3VuZGVmKQorLWRlY2xhcmVfZGVmX3NucHJpbnQoZGVsYXlfd2F0Y2hfY2hlY2tzLCBwcmludF9vZmZfaW50X3VuZGVmKQorK2RlY2xhcmVfZGVmX3NucHJpbnRfZGVmaW50KGRlbGF5X3dhdGNoX2NoZWNrcywgcHJpbnRfb2ZmX2ludF91bmRlZiwKKysJCQkgICBERUZBVUxUX0RFTEFZX0NIRUNLUykKKyBkZWNsYXJlX292cl9oYW5kbGVyKGRlbGF5X3dhdGNoX2NoZWNrcywgc2V0X29mZl9pbnRfdW5kZWYpCisgZGVjbGFyZV9vdnJfc25wcmludChkZWxheV93YXRjaF9jaGVja3MsIHByaW50X29mZl9pbnRfdW5kZWYpCisgZGVjbGFyZV9od19oYW5kbGVyKGRlbGF5X3dhdGNoX2NoZWNrcywgc2V0X29mZl9pbnRfdW5kZWYpCitAQCAtMTEyMyw3ICsxMTI0LDggQEAgZGVjbGFyZV9od19zbnByaW50KGRlbGF5X3dhdGNoX2NoZWNrcywgcHJpbnRfb2ZmX2ludF91bmRlZikKKyBkZWNsYXJlX21wX2hhbmRsZXIoZGVsYXlfd2F0Y2hfY2hlY2tzLCBzZXRfb2ZmX2ludF91bmRlZikKKyBkZWNsYXJlX21wX3NucHJpbnQoZGVsYXlfd2F0Y2hfY2hlY2tzLCBwcmludF9vZmZfaW50X3VuZGVmKQorIGRlY2xhcmVfZGVmX2hhbmRsZXIoZGVsYXlfd2FpdF9jaGVja3MsIHNldF9vZmZfaW50X3VuZGVmKQorLWRlY2xhcmVfZGVmX3NucHJpbnQoZGVsYXlfd2FpdF9jaGVja3MsIHByaW50X29mZl9pbnRfdW5kZWYpCisrZGVjbGFyZV9kZWZfc25wcmludF9kZWZpbnQoZGVsYXlfd2FpdF9jaGVja3MsIHByaW50X29mZl9pbnRfdW5kZWYsCisrCQkJICAgREVGQVVMVF9ERUxBWV9DSEVDS1MpCisgZGVjbGFyZV9vdnJfaGFuZGxlcihkZWxheV93YWl0X2NoZWNrcywgc2V0X29mZl9pbnRfdW5kZWYpCisgZGVjbGFyZV9vdnJfc25wcmludChkZWxheV93YWl0X2NoZWNrcywgcHJpbnRfb2ZmX2ludF91bmRlZikKKyBkZWNsYXJlX2h3X2hhbmRsZXIoZGVsYXlfd2FpdF9jaGVja3MsIHNldF9vZmZfaW50X3VuZGVmKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNC1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTQtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk1MTIxMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNC1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSA3ZjU4NjljZDMyYTdiM2Y3MTdkOTU0NGIzNTU2MmQ5ZDAxY2E2NTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDAzOjAzOjE2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMTRdIEFsd2F5cyB1c2UgZGV2bWFwcGVyIGZvciBrcGFydHgKLQotRG8gbm90IHRyeSB0byBjb21wdXRlIHRoZSBMSUJETV9BUElfQ09PS0lFIG1ha2UgdmFyaWFibGUKLWZyb20gaG9zdCBpbmZvcm1hdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1SZWJhc2UgdG8gMC43LjEKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGtwYXJ0eC9NYWtlZmlsZSB8IDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2twYXJ0eC9NYWtlZmlsZSBiL2twYXJ0eC9NYWtlZmlsZQotaW5kZXggYmZhNmZlOC4uYmU4NzEyNCAxMDA2NDQKLS0tLSBhL2twYXJ0eC9NYWtlZmlsZQotKysrIGIva3BhcnR4L01ha2VmaWxlCi1AQCAtOCw5ICs4LDcgQEAgTERGTEFHUyArPSAkKEJJTl9MREZMQUdTKQotIAotIExJQkRFUFMgKz0gLWxkZXZtYXBwZXIKLSAKLS1pZm5lcSAoJChjYWxsIGNoZWNrX2Z1bmMsZG1fdGFza19zZXRfY29va2llLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKLS0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotLWVuZGlmCi0rQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0NPT0tJRQotIAotIE9CSlMgPSBic2QubyBkb3MubyBrcGFydHgubyBzb2xhcmlzLm8gdW5peHdhcmUubyBkYXNkLm8gc3VuLm8gXAotIAlncHQubyBtYWMubyBwczMubyBjcmMzMi5vIGxvcGFydC5vIHhzdHJuY3B5Lm8gZGV2bWFwcGVyLm8KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTQtbXVsdGlwYXRoLmNvbmYuNS1jbGFyaWZ5LXByb3BlcnR5LXdoaXRlbGlzdC1oYW5kbGluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE0LW11bHRpcGF0aC5jb25mLjUtY2xhcmlmeS1wcm9wZXJ0eS13aGl0ZWxpc3QtaGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFiNGUwNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE0LW11bHRpcGF0aC5jb25mLjUtY2xhcmlmeS1wcm9wZXJ0eS13aGl0ZWxpc3QtaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCA5IE1heSAyMDE4IDE0OjMyOjU5IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aC5jb25mLjU6IGNsYXJpZnkgcHJvcGVydHkgd2hpdGVsaXN0IGhhbmRsaW5nCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIG11bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IHwgNyArKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41IGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKK2luZGV4IGY2ODk3OTUuLjk2ZDFiNjYgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKK0BAIC0xMTgxLDEwICsxMTgxLDkgQEAgYW5kCisga2V5d29yZHMuIEZvciBhIGZ1bGwgZGVzY3JpcHRpb24gb2YgdGhlc2Uga2V5d29yZHMgcGxlYXNlIHNlZSB0aGUgXGZJZGV2aWNlc1xmUgorIHNlY3Rpb24gZGVzY3JpcHRpb24uCisgLkxQCistVGhlIFxmSXByb3BlcnR5XGZSIGJsYWNrbGlzdCBhbmQgd2hpdGVsaXN0IGhhbmRsaW5nIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB1c3VhbAorLWhhbmRsaW5nIGluIHRoZSBzZW5zZSB0aGF0IHRoZSB3aGl0ZWxpc3QgXGZJaGFzXGZSIHRvIGJlIHNldCwgb3RoZXJ3aXNlIHRoZQorLWRldmljZSB3aWxsIGJlIGJsYWNrbGlzdGVkLiBJbiB0aGVzZSBjYXNlcyB0aGUgbWVzc2FnZSBcZklibGFja2xpc3RlZCwgdWRldgorLXByb3BlcnR5IG1pc3NpbmdcZlIgd2lsbCBiZSBkaXNwbGF5ZWQuCisrVGhlIFxmSXByb3BlcnR5XGZSIHdoaXRlbGlzdCBoYW5kbGluZyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgdXN1YWwKKytoYW5kbGluZyBpbiB0aGUgc2Vuc2UgdGhhdCB0aGUgZGV2aWNlIFxmSWhhc1xmUiB0byBoYXZlIGEgdWRldiBwcm9wZXJ0eSB0aGF0CisrbWF0Y2hlcyB0aGUgd2hpdGVsaXN0LCBvdGhlcndpc2UgdGhlIGRldmljZSB3aWxsIGJlIGJsYWNrbGlzdGVkLiBJbiB0aGVzZSBjYXNlcyB0aGUgbWVzc2FnZSBcZklibGFja2xpc3RlZCwgdWRldiBwcm9wZXJ0eSBtaXNzaW5nXGZSIHdpbGwgYmUgZGlzcGxheWVkLgorIC4KKyAuCisgLlwiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTUtbXBhdGhwZXJzaXN0LWFkZC1hbGxfdGdfcHQtb3B0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTUtbXBhdGhwZXJzaXN0LWFkZC1hbGxfdGdfcHQtb3B0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMjY4MWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNS1tcGF0aHBlcnNpc3QtYWRkLWFsbF90Z19wdC1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSwzMTcgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgMzEgTWF5IDIwMTggMTc6NDc6MTEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gbXBhdGhwZXJzaXN0OiBhZGQgYWxsX3RnX3B0IG9wdGlvbgorCitTb21lIGFycmF5cywgc3VjaCBhcyB0aGUgRU1DIFZOWCwgZG9uJ3QgZm9sbG93IHRoZSBzY3NpIHBlcnNpc3RlbnQKK3Jlc2VydmF0aW9ucyBzcGVjIGluIG1ha2luZyBrZXkgcmVnaXN0cmF0aW9ucyBwZXIgSV9UIE5FWFVTLiBJbnN0ZWFkLAordGhlIHJlZ2lzdHJhdGlvbiBpcyBzaGFyZWQgYnkgYWxsIHRhcmdldCBwb3J0cyBjb25uZWN0ZWQgdG8gYSBnaXZlbgoraG9zdC4gIFRoaXMgY2F1c2VzIG1wYXRocGVyc2lzdCB0byBmYWlsIHdoZW5ldmVyIGl0IHRyaWVzIHRvIHJlZ2lzdGVyIGEKK2tleSwgc2luY2UgaXQgd2lsbCByZWNlaXZlIGEgcmVnaXN0cmF0aW9uIGNvbmZsaWN0IG9uIHNvbWUgb2YgdGhlIHBhdGhzLgorCitUbyBkZWFsIHdpdGggdGhpcywgbXBhdGhwZXJzaXN0IG5lZWRzIHRvIHRyYWNrIHRoZSBob3N0cyB0aGF0IGl0IGhhcworZG9uZSBhIHJlZ2lzdHJhdGlvbiBvbiwgYW5kIG9ubHkgcmVnaXN0ZXIgb25jZSBwZXIgaG9zdC4gVGhlIG5ldworImFsbF90Z19wdCIgbXVsdGlwYXRoLmNvbmYgb3B0aW9uIGlzIHVzZWQgdG8gc2V0IHdoaWNoIGFycmF5cyBuZWVkIHRoaXMKK2ZlYXR1cmUuICBJIGN1cnJlbnRseSBkb24ndCBrbm93IGlmIGFsbCBFTUMgVk5YIGFycmF5cyBoYW5kbGUgcGVyc2lzdGVudAorcmVzZXJ2YXRpb25zIGxpa2UgdGhpcywgb3IgaWYgaXQgaXMgY29uZmlndXJhYmxlLiBBIGZ1dHVyZSBwYXRjaCB3aWxsCit1cGRhdGUgdGhlIFZOWCBidWlsdC1pbiBjb25maWcsIGlmIHRoaXMgaXMgaW5kZWVkIHRoZWlyIGRlZmF1bHQgKG9yCitvbmx5KSBzZXR0aW5nLgorCitNdWx0aXBhdGhkIGRvZXNuJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzLiBJdCBpcyBvZnRlbiB0aGUgY2FzZSB0aGF0Cit3aGVuIGEgcGF0aCBkZXZpY2UgY29tZXMgYmFjaywgaXQgd2lsbCBzdGlsbCBoYXZlIHRoZSBrZXlzIHJlZ2lzdGVyZWQgdG8KK2l0LiBCZWNhdXNlIG9mIHRoaXMsIG11bHRpcGF0aGQgdXNlcyByZWdpc3Rlci1hbmQtaWdub3JlLCB3aGljaCBtZWFucwordGhhdCBpdCB3b24ndCBjYXVzZSBhbiBlcnJvciBpZiB0aGUgcmVnaXN0cmF0aW9uIGhhcyBhbHJlYWR5IGhhcHBlbmVkCitkb3duIGEgZGlmZmVyZW50IHRhcmdldCBwb3J0LgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtcGF0aHBlcnNpc3QvbXBhdGhfcGVyc2lzdC5jIHwgMjggKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIGxpYm11bHRpcGF0aC9jb25maWcuYyAgICAgICAgICAgfCAgMiArKworIGxpYm11bHRpcGF0aC9jb25maWcuaCAgICAgICAgICAgfCAgMiArKworIGxpYm11bHRpcGF0aC9kZWZhdWx0cy5oICAgICAgICAgfCAgMSArCisgbGlibXVsdGlwYXRoL2RpY3QuYyAgICAgICAgICAgICB8IDEwICsrKysrKysrKysKKyBsaWJtdWx0aXBhdGgvcHJvcHNlbC5jICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCisgbGlibXVsdGlwYXRoL3Byb3BzZWwuaCAgICAgICAgICB8ICAxICsKKyBsaWJtdWx0aXBhdGgvc3RydWN0cy5oICAgICAgICAgIHwgIDcgKysrKysrKworIG11bHRpcGF0aC9tdWx0aXBhdGguY29uZi41ICAgICAgfCAxMSArKysrKysrKysrKworIDkgZmlsZXMgY2hhbmdlZCwgNzEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm1wYXRocGVyc2lzdC9tcGF0aF9wZXJzaXN0LmMgYi9saWJtcGF0aHBlcnNpc3QvbXBhdGhfcGVyc2lzdC5jCitpbmRleCA5MDdhMTdjLi5jYTkxYzU1IDEwMDY0NAorLS0tIGEvbGlibXBhdGhwZXJzaXN0L21wYXRoX3BlcnNpc3QuYworKysrIGIvbGlibXBhdGhwZXJzaXN0L21wYXRoX3BlcnNpc3QuYworQEAgLTMzNSw2ICszMzUsNyBAQCBpbnQgbXBhdGhfcGVyc2lzdGVudF9yZXNlcnZlX291dCAoIGludCBmZCwgaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKyAKKyAJY29uZiA9IGdldF9tdWx0aXBhdGhfY29uZmlnKCk7CisgCXNlbGVjdF9yZXNlcnZhdGlvbl9rZXkoY29uZiwgbXBwKTsKKysJc2VsZWN0X2FsbF90Z19wdChjb25mLCBtcHApOworIAlwdXRfbXVsdGlwYXRoX2NvbmZpZyhjb25mKTsKKyAKKyAJbWVtY3B5KCZwcmtleSwgcGFyYW1wLT5zYV9rZXksIDgpOworQEAgLTQ1Niw3ICs0NTcsNyBAQCBpbnQgbXBhdGhfcHJvdXRfcmVnKHN0cnVjdCBtdWx0aXBhdGggKm1wcCxpbnQgcnFfc2VydmFjdCwgaW50IHJxX3Njb3BlLAorIAl1bnNpZ25lZCBpbnQgcnFfdHlwZSwgc3RydWN0IHByb3V0X3BhcmFtX2Rlc2NyaXB0b3IgKiBwYXJhbXAsIGludCBub2lzeSkKKyB7CisgCistCWludCBpLCBqOworKwlpbnQgaSwgaiwgazsKKyAJc3RydWN0IHBhdGhncm91cCAqcGdwID0gTlVMTDsKKyAJc3RydWN0IHBhdGggKnBwID0gTlVMTDsKKyAJaW50IHJvbGxiYWNrID0gMDsKK0BAIC00ODEsMTEgKzQ4MiwxMyBAQCBpbnQgbXBhdGhfcHJvdXRfcmVnKHN0cnVjdCBtdWx0aXBhdGggKm1wcCxpbnQgcnFfc2VydmFjdCwgaW50IHJxX3Njb3BlLAorIAl9CisgCisgCXN0cnVjdCB0aHJlYWRpbmZvIHRocmVhZFthY3RpdmVfcGF0aGNvdW50XTsKKysJaW50IGhvc3RzW2FjdGl2ZV9wYXRoY291bnRdOworIAorIAltZW1zZXQodGhyZWFkLCAwLCBzaXplb2YodGhyZWFkKSk7CisgCisgCS8qIGluaXQgdGhyZWFkIHBhcmFtZXRlciAqLworIAlmb3IgKGkgPTA7IGk8IGFjdGl2ZV9wYXRoY291bnQ7IGkrKyl7CisrCQlob3N0c1tpXSA9IC0xOworIAkJdGhyZWFkW2ldLnBhcmFtLnJxX3NlcnZhY3QgPSBycV9zZXJ2YWN0OworIAkJdGhyZWFkW2ldLnBhcmFtLnJxX3Njb3BlID0gcnFfc2NvcGU7CisgCQl0aHJlYWRbaV0ucGFyYW0ucnFfdHlwZSA9IHJxX3R5cGU7CitAQCAtNTE0LDYgKzUxNywxNyBAQCBpbnQgbXBhdGhfcHJvdXRfcmVnKHN0cnVjdCBtdWx0aXBhdGggKm1wcCxpbnQgcnFfc2VydmFjdCwgaW50IHJxX3Njb3BlLAorIAkJCQljb25kbG9nICgxLCAiJXM6ICVzIHBhdGggbm90IHVwLiBTa2lwLiIsIG1wcC0+d3dpZCwgcHAtPmRldik7CisgCQkJCWNvbnRpbnVlOworIAkJCX0KKysJCQlpZiAobXBwLT5hbGxfdGdfcHQgPT0gQUxMX1RHX1BUX09OICYmCisrCQkJICAgIHBwLT5zZ19pZC5ob3N0X25vICE9IC0xKSB7CisrCQkJCWZvciAoayA9IDA7IGsgPCBjb3VudDsgaysrKSB7CisrCQkJCQlpZiAocHAtPnNnX2lkLmhvc3Rfbm8gPT0gaG9zdHNba10pIHsKKysJCQkJCQljb25kbG9nKDMsICIlczogJXMgaG9zdCAlZCBtYXRjaGVzIHNraXAuIiwgcHAtPnd3aWQsIHBwLT5kZXYsIHBwLT5zZ19pZC5ob3N0X25vKTsKKysJCQkJCQlicmVhazsKKysJCQkJCX0KKysJCQkJfQorKwkJCQlpZiAoayA8IGNvdW50KQorKwkJCQkJY29udGludWU7CisrCQkJfQorIAkJCXN0cm5jcHkodGhyZWFkW2NvdW50XS5wYXJhbS5kZXYsIHBwLT5kZXYsCisgCQkJCUZJTEVfTkFNRV9TSVpFIC0gMSk7CisgCitAQCAtNTMxLDEwICs1NDUsMTIgQEAgaW50IG1wYXRoX3Byb3V0X3JlZyhzdHJ1Y3QgbXVsdGlwYXRoICptcHAsaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKyAJCQkJY29uZGxvZyAoMCwgIiVzOiBmYWlsZWQgdG8gY3JlYXRlIHRocmVhZCAlZCIsIG1wcC0+d3dpZCwgcmMpOworIAkJCQl0aHJlYWRbY291bnRdLnBhcmFtLnN0YXR1cyA9IE1QQVRIX1BSX1RIUkVBRF9FUlJPUjsKKyAJCQl9CisrCQkJZWxzZQorKwkJCQlob3N0c1tjb3VudF0gPSBwcC0+c2dfaWQuaG9zdF9ubzsKKyAJCQljb3VudCA9IGNvdW50ICsgMTsKKyAJCX0KKyAJfQorLQlmb3IoIGk9MDsgaSA8IGFjdGl2ZV9wYXRoY291bnQgOyBpKyspeworKwlmb3IoIGk9MDsgaSA8IGNvdW50IDsgaSsrKXsKKyAJCWlmICh0aHJlYWRbaV0ucGFyYW0uc3RhdHVzICE9IE1QQVRIX1BSX1RIUkVBRF9FUlJPUikgeworIAkJCXJjID0gcHRocmVhZF9qb2luKHRocmVhZFtpXS5pZCwgTlVMTCk7CisgCQkJaWYgKHJjKXsKK0BAIC01NTcsNyArNTczLDcgQEAgaW50IG1wYXRoX3Byb3V0X3JlZyhzdHJ1Y3QgbXVsdGlwYXRoICptcHAsaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKyAJfQorIAlpZiAocm9sbGJhY2sgJiYgKChycV9zZXJ2YWN0ID09IE1QQVRIX1BST1VUX1JFR19TQSkgJiYgc2Ffa2V5ICE9IDAgKSl7CisgCQljb25kbG9nICgzLCAiJXM6IEVSUk9SOiBpbml0aWF0aW5nIHByIG91dCByb2xsYmFjayIsIG1wcC0+d3dpZCk7CistCQlmb3IoIGk9MCA7IGkgPCBhY3RpdmVfcGF0aGNvdW50IDsgaSsrKXsKKysJCWZvciggaT0wIDsgaSA8IGNvdW50IDsgaSsrKXsKKyAJCQlpZih0aHJlYWRbaV0ucGFyYW0uc3RhdHVzID09IE1QQVRIX1BSX1NVQ0NFU1MpIHsKKyAJCQkJbWVtY3B5KCZ0aHJlYWRbaV0ucGFyYW0ucGFyYW1wLT5rZXksICZ0aHJlYWRbaV0ucGFyYW0ucGFyYW1wLT5zYV9rZXksIDgpOworIAkJCQltZW1zZXQoJnRocmVhZFtpXS5wYXJhbS5wYXJhbXAtPnNhX2tleSwgMCwgOCk7CitAQCAtNTcxLDcgKzU4Nyw3IEBAIGludCBtcGF0aF9wcm91dF9yZWcoc3RydWN0IG11bHRpcGF0aCAqbXBwLGludCBycV9zZXJ2YWN0LCBpbnQgcnFfc2NvcGUsCisgCQkJfSBlbHNlCisgCQkJCXRocmVhZFtpXS5wYXJhbS5zdGF0dXMgPSBNUEFUSF9QUl9TS0lQOworIAkJfQorLQkJZm9yKGk9MDsgaSA8IGFjdGl2ZV9wYXRoY291bnQgOyBpKyspeworKwkJZm9yKGk9MDsgaSA8IGNvdW50IDsgaSsrKXsKKyAJCQlpZiAodGhyZWFkW2ldLnBhcmFtLnN0YXR1cyAhPSBNUEFUSF9QUl9TS0lQICYmCisgCQkJICAgIHRocmVhZFtpXS5wYXJhbS5zdGF0dXMgIT0gTVBBVEhfUFJfVEhSRUFEX0VSUk9SKSB7CisgCQkJCXJjID0gcHRocmVhZF9qb2luKHRocmVhZFtpXS5pZCwgTlVMTCk7CitAQCAtNzIwLDcgKzczNiw3IEBAIGludCBtcGF0aF9wcm91dF9yZWwoc3RydWN0IG11bHRpcGF0aCAqbXBwLGludCBycV9zZXJ2YWN0LCBpbnQgcnFfc2NvcGUsCisgCQl9CisgCX0KKyAJcHRocmVhZF9hdHRyX2Rlc3Ryb3kgKCZhdHRyKTsKKy0JZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9wYXRoY291bnQ7IGkrKyl7CisrCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKXsKKyAJCWlmICh0aHJlYWRbaV0ucGFyYW0uc3RhdHVzICE9IE1QQVRIX1BSX1RIUkVBRF9FUlJPUikgeworIAkJCXJjID0gcHRocmVhZF9qb2luICh0aHJlYWRbaV0uaWQsIE5VTEwpOworIAkJCWlmIChyYyl7CitAQCAtNzI5LDcgKzc0NSw3IEBAIGludCBtcGF0aF9wcm91dF9yZWwoc3RydWN0IG11bHRpcGF0aCAqbXBwLGludCBycV9zZXJ2YWN0LCBpbnQgcnFfc2NvcGUsCisgCQl9CisgCX0KKyAKKy0JZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9wYXRoY291bnQ7IGkrKyl7CisrCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKXsKKyAJCS8qICBjaGVjayB0aHJlYWQgc3RhdHVzIGhlcmUgYW5kIHJldHVybiB0aGUgc3RhdHVzICovCisgCisgCQlpZiAodGhyZWFkW2ldLnBhcmFtLnN0YXR1cyA9PSBNUEFUSF9QUl9SRVNFUlZfQ09ORkxJQ1QpCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NvbmZpZy5jIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCitpbmRleCAwODVhM2UxLi41ODcyOTI3IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NvbmZpZy5jCisrKysgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKK0BAIC0zNTIsNiArMzUyLDcgQEAgbWVyZ2VfaHdlIChzdHJ1Y3QgaHdlbnRyeSAqIGRzdCwgc3RydWN0IGh3ZW50cnkgKiBzcmMpCisgCW1lcmdlX251bShza2lwX2twYXJ0eCk7CisgCW1lcmdlX251bShtYXhfc2VjdG9yc19rYik7CisgCW1lcmdlX251bShnaG9zdF9kZWxheSk7CisrCW1lcmdlX251bShhbGxfdGdfcHQpOworIAorIAlzbnByaW50ZihpZCwgc2l6ZW9mKGlkKSwgIiVzLyVzIiwgZHN0LT52ZW5kb3IsIGRzdC0+cHJvZHVjdCk7CisgCXJlY29uY2lsZV9mZWF0dXJlc193aXRoX29wdGlvbnMoaWQsICZkc3QtPmZlYXR1cmVzLAorQEAgLTYyMiw2ICs2MjMsNyBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCisgCWNvbmYtPmRpc2FibGVfY2hhbmdlZF93d2lkcyA9IERFRkFVTFRfRElTQUJMRV9DSEFOR0VEX1dXSURTOworIAljb25mLT5yZW1vdmVfcmV0cmllcyA9IDA7CisgCWNvbmYtPmdob3N0X2RlbGF5ID0gREVGQVVMVF9HSE9TVF9ERUxBWTsKKysJY29uZi0+YWxsX3RnX3B0ID0gREVGQVVMVF9BTExfVEdfUFQ7CisgCisgCS8qCisgCSAqIHByZWxvYWQgZGVmYXVsdCBod3RhYmxlCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NvbmZpZy5oIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5oCitpbmRleCA2ZTY5YTM3Li4xYmY3MDhhIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NvbmZpZy5oCisrKysgYi9saWJtdWx0aXBhdGgvY29uZmlnLmgKK0BAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBod2VudHJ5IHsKKyAJaW50IHNraXBfa3BhcnR4OworIAlpbnQgbWF4X3NlY3RvcnNfa2I7CisgCWludCBnaG9zdF9kZWxheTsKKysJaW50IGFsbF90Z19wdDsKKyAJY2hhciAqIGJsX3Byb2R1Y3Q7CisgfTsKKyAKK0BAIC0xOTQsNiArMTk1LDcgQEAgc3RydWN0IGNvbmZpZyB7CisgCWNoYXIgKiBwYXJ0aXRpb25fZGVsaW07CisgCWNoYXIgKiBjb25maWdfZGlyOworIAlpbnQgcHJrZXlfc291cmNlOworKwlpbnQgYWxsX3RnX3B0OworIAlzdHJ1Y3QgYmU2NCByZXNlcnZhdGlvbl9rZXk7CisgCisgCXZlY3RvciBrZXl3b3JkczsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGVmYXVsdHMuaCBiL2xpYm11bHRpcGF0aC9kZWZhdWx0cy5oCitpbmRleCBkN2I4N2I0Li5mMDc2YjRiIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2RlZmF1bHRzLmgKKysrKyBiL2xpYm11bHRpcGF0aC9kZWZhdWx0cy5oCitAQCAtNDMsNiArNDMsNyBAQAorICNkZWZpbmUgREVGQVVMVF9HSE9TVF9ERUxBWSBHSE9TVF9ERUxBWV9PRkYKKyAjZGVmaW5lIERFRkFVTFRfRklORF9NVUxUSVBBVEhTX1RJTUVPVVQgLTEwCisgI2RlZmluZSBERUZBVUxUX1VOS05PV05fRklORF9NVUxUSVBBVEhTX1RJTUVPVVQgMQorKyNkZWZpbmUgREVGQVVMVF9BTExfVEdfUFQgQUxMX1RHX1BUX09GRgorIAorICNkZWZpbmUgREVGQVVMVF9DSEVDS0lOVAk1CisgI2RlZmluZSBNQVhfQ0hFQ0tJTlQoYSkJCShhIDw8IDIpCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2RpY3QuYyBiL2xpYm11bHRpcGF0aC9kaWN0LmMKK2luZGV4IDNlN2M1ZDYuLjI1NTdiOGEgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZGljdC5jCisrKysgYi9saWJtdWx0aXBhdGgvZGljdC5jCitAQCAtMTE3OCw2ICsxMTc4LDEzIEBAIGRlY2xhcmVfaHdfc25wcmludChnaG9zdF9kZWxheSwgcHJpbnRfb2ZmX2ludF91bmRlZikKKyBkZWNsYXJlX21wX2hhbmRsZXIoZ2hvc3RfZGVsYXksIHNldF9vZmZfaW50X3VuZGVmKQorIGRlY2xhcmVfbXBfc25wcmludChnaG9zdF9kZWxheSwgcHJpbnRfb2ZmX2ludF91bmRlZikKKyAKKytkZWNsYXJlX2RlZl9oYW5kbGVyKGFsbF90Z19wdCwgc2V0X3llc19ub191bmRlZikKKytkZWNsYXJlX2RlZl9zbnByaW50X2RlZmludChhbGxfdGdfcHQsIHByaW50X3llc19ub191bmRlZiwgREVGQVVMVF9BTExfVEdfUFQpCisrZGVjbGFyZV9vdnJfaGFuZGxlcihhbGxfdGdfcHQsIHNldF95ZXNfbm9fdW5kZWYpCisrZGVjbGFyZV9vdnJfc25wcmludChhbGxfdGdfcHQsIHByaW50X3llc19ub191bmRlZikKKytkZWNsYXJlX2h3X2hhbmRsZXIoYWxsX3RnX3B0LCBzZXRfeWVzX25vX3VuZGVmKQorK2RlY2xhcmVfaHdfc25wcmludChhbGxfdGdfcHQsIHByaW50X3llc19ub191bmRlZikKKysKKyAKKyBzdGF0aWMgaW50CisgZGVmX3V4c29ja190aW1lb3V0X2hhbmRsZXIoc3RydWN0IGNvbmZpZyAqY29uZiwgdmVjdG9yIHN0cnZlYykKK0BAIC0xNTA5LDYgKzE1MTYsNyBAQCBpbml0X2tleXdvcmRzKHZlY3RvciBrZXl3b3JkcykKKyAJaW5zdGFsbF9rZXl3b3JkKCJwcmtleXNfZmlsZSIsICZkZWZfcHJrZXlzX2ZpbGVfaGFuZGxlciwgJnNucHJpbnRfZGVmX3Bya2V5c19maWxlKTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJsb2dfY2hlY2tlcl9lcnIiLCAmZGVmX2xvZ19jaGVja2VyX2Vycl9oYW5kbGVyLCAmc25wcmludF9kZWZfbG9nX2NoZWNrZXJfZXJyKTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJyZXNlcnZhdGlvbl9rZXkiLCAmZGVmX3Jlc2VydmF0aW9uX2tleV9oYW5kbGVyLCAmc25wcmludF9kZWZfcmVzZXJ2YXRpb25fa2V5KTsKKysJaW5zdGFsbF9rZXl3b3JkKCJhbGxfdGdfcHQiLCAmZGVmX2FsbF90Z19wdF9oYW5kbGVyLCAmc25wcmludF9kZWZfYWxsX3RnX3B0KTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJyZXRhaW5fYXR0YWNoZWRfaHdfaGFuZGxlciIsICZkZWZfcmV0YWluX2h3aGFuZGxlcl9oYW5kbGVyLCAmc25wcmludF9kZWZfcmV0YWluX2h3aGFuZGxlcik7CisgCWluc3RhbGxfa2V5d29yZCgiZGV0ZWN0X3ByaW8iLCAmZGVmX2RldGVjdF9wcmlvX2hhbmRsZXIsICZzbnByaW50X2RlZl9kZXRlY3RfcHJpbyk7CisgCWluc3RhbGxfa2V5d29yZCgiZGV0ZWN0X2NoZWNrZXIiLCAmZGVmX2RldGVjdF9jaGVja2VyX2hhbmRsZXIsICZzbnByaW50X2RlZl9kZXRlY3RfY2hlY2tlcik7CitAQCAtMTYxOCw2ICsxNjI2LDcgQEAgaW5pdF9rZXl3b3Jkcyh2ZWN0b3Iga2V5d29yZHMpCisgCWluc3RhbGxfa2V5d29yZCgic2tpcF9rcGFydHgiLCAmaHdfc2tpcF9rcGFydHhfaGFuZGxlciwgJnNucHJpbnRfaHdfc2tpcF9rcGFydHgpOworIAlpbnN0YWxsX2tleXdvcmQoIm1heF9zZWN0b3JzX2tiIiwgJmh3X21heF9zZWN0b3JzX2tiX2hhbmRsZXIsICZzbnByaW50X2h3X21heF9zZWN0b3JzX2tiKTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJnaG9zdF9kZWxheSIsICZod19naG9zdF9kZWxheV9oYW5kbGVyLCAmc25wcmludF9od19naG9zdF9kZWxheSk7CisrCWluc3RhbGxfa2V5d29yZCgiYWxsX3RnX3B0IiwgJmh3X2FsbF90Z19wdF9oYW5kbGVyLCAmc25wcmludF9od19hbGxfdGdfcHQpOworIAlpbnN0YWxsX3N1YmxldmVsX2VuZCgpOworIAorIAlpbnN0YWxsX2tleXdvcmRfcm9vdCgib3ZlcnJpZGVzIiwgJm92ZXJyaWRlc19oYW5kbGVyKTsKK0BAIC0xNjU0LDYgKzE2NjMsNyBAQCBpbml0X2tleXdvcmRzKHZlY3RvciBrZXl3b3JkcykKKyAJaW5zdGFsbF9rZXl3b3JkKCJza2lwX2twYXJ0eCIsICZvdnJfc2tpcF9rcGFydHhfaGFuZGxlciwgJnNucHJpbnRfb3ZyX3NraXBfa3BhcnR4KTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJtYXhfc2VjdG9yc19rYiIsICZvdnJfbWF4X3NlY3RvcnNfa2JfaGFuZGxlciwgJnNucHJpbnRfb3ZyX21heF9zZWN0b3JzX2tiKTsKKyAJaW5zdGFsbF9rZXl3b3JkKCJnaG9zdF9kZWxheSIsICZvdnJfZ2hvc3RfZGVsYXlfaGFuZGxlciwgJnNucHJpbnRfb3ZyX2dob3N0X2RlbGF5KTsKKysJaW5zdGFsbF9rZXl3b3JkKCJhbGxfdGdfcHQiLCAmb3ZyX2FsbF90Z19wdF9oYW5kbGVyLCAmc25wcmludF9vdnJfYWxsX3RnX3B0KTsKKyAKKyAJaW5zdGFsbF9rZXl3b3JkX3Jvb3QoIm11bHRpcGF0aHMiLCAmbXVsdGlwYXRoc19oYW5kbGVyKTsKKyAJaW5zdGFsbF9rZXl3b3JkX211bHRpKCJtdWx0aXBhdGgiLCAmbXVsdGlwYXRoX2hhbmRsZXIsIE5VTEwpOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9wcm9wc2VsLmMgYi9saWJtdWx0aXBhdGgvcHJvcHNlbC5jCitpbmRleCA2MjdkMzY2Li45Y2ExMzU1IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3Byb3BzZWwuYworKysrIGIvbGlibXVsdGlwYXRoL3Byb3BzZWwuYworQEAgLTk3OCwzICs5NzgsMTggQEAgb3V0OgorIAkJcHAtPmRldiwgcHAtPmZpbmRfbXVsdGlwYXRoc190aW1lb3V0LCBvcmlnaW4pOworIAlyZXR1cm4gMDsKKyB9CisrCisraW50IHNlbGVjdF9hbGxfdGdfcHQgKHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKiBtcCkKKyt7CisrCWNvbnN0IGNoYXIgKm9yaWdpbjsKKysKKysJbXBfc2V0X292cihhbGxfdGdfcHQpOworKwltcF9zZXRfaHdlKGFsbF90Z19wdCk7CisrCW1wX3NldF9jb25mKGFsbF90Z19wdCk7CisrCW1wX3NldF9kZWZhdWx0KGFsbF90Z19wdCwgREVGQVVMVF9BTExfVEdfUFQpOworK291dDoKKysJY29uZGxvZygzLCAiJXM6IGFsbF90Z19wdCA9ICVzICVzIiwgbXAtPmFsaWFzLAorKwkJKG1wLT5hbGxfdGdfcHQgPT0gQUxMX1RHX1BUX09OKT8gInllcyIgOiAibm8iLAorKwkJb3JpZ2luKTsKKysJcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9wcm9wc2VsLmggYi9saWJtdWx0aXBhdGgvcHJvcHNlbC5oCitpbmRleCBhMDIyYmVlLi5hZTk5YjkyIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3Byb3BzZWwuaAorKysrIGIvbGlibXVsdGlwYXRoL3Byb3BzZWwuaAorQEAgLTM0LDMgKzM0LDQgQEAgaW50IHNlbGVjdF9naG9zdF9kZWxheShzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICogbXApOworIHZvaWQgcmVjb25jaWxlX2ZlYXR1cmVzX3dpdGhfb3B0aW9ucyhjb25zdCBjaGFyICppZCwgY2hhciAqKmZlYXR1cmVzLAorIAkJCQkgICAgIGludCogbm9fcGF0aF9yZXRyeSwKKyAJCQkJICAgICBpbnQgKnJldGFpbl9od2hhbmRsZXIpOworK2ludCBzZWxlY3RfYWxsX3RnX3B0IChzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICogbXApOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9zdHJ1Y3RzLmggYi9saWJtdWx0aXBhdGgvc3RydWN0cy5oCitpbmRleCBlNDI0YjE1Li4wMTk0YjFlIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3N0cnVjdHMuaAorKysrIGIvbGlibXVsdGlwYXRoL3N0cnVjdHMuaAorQEAgLTIxNyw2ICsyMTcsMTIgQEAgZW51bSBwcmtleV9zb3VyY2VzIHsKKyAJUFJLRVlfU09VUkNFX0ZJTEUsCisgfTsKKyAKKytlbnVtIGFsbF90Z19wdF9zdGF0ZXMgeworKwlBTExfVEdfUFRfVU5ERUYgPSBZTlVfVU5ERUYsCisrCUFMTF9UR19QVF9PRkYgPSBZTlVfTk8sCisrCUFMTF9UR19QVF9PTiA9IFlOVV9ZRVMsCisrfTsKKysKKyBzdHJ1Y3Qgc2dfaWQgeworIAlpbnQgaG9zdF9ubzsKKyAJaW50IGNoYW5uZWw7CitAQCAtMzYyLDYgKzM2OCw3IEBAIHN0cnVjdCBtdWx0aXBhdGggeworIAlpbnQgcHJrZXlfc291cmNlOworIAlzdHJ1Y3QgYmU2NCByZXNlcnZhdGlvbl9rZXk7CisgCXVuc2lnbmVkIGNoYXIgcHJmbGFnOworKwlpbnQgYWxsX3RnX3B0OworIAlzdHJ1Y3QgZ2VuX211bHRpcGF0aCBnZW5lcmljX21wOworIH07CisgCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQoraW5kZXggOTZkMWI2Ni4uMGMxZjE3NCAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorQEAgLTc0Myw2ICs3NDMsMTcgQEAgVGhlIGRlZmF1bHQgaXM6IFxmQjx1bnNldD5cZlIKKyAuCisgLgorIC5UUAorKy5CIGFsbF90Z19wdAorK1RoaXMgbXVzdCBiZSBzZXQgdG8gXGZCeWVzXGZSIHRvIHN1Y2Nlc3NmdWxseSB1c2UgbXBhdGhwZXJzaXN0IG9uIGFycmF5cyB0aGF0CisrYXV0b21hdGljYWxseSBzZXQgYW5kIGNsZWFyIHJlZ2lzdHJhdGlvbiBrZXlzIG9uIGFsbCB0YXJnZXQgcG9ydHMgZnJvbSBhCisraG9zdCwgaW5zdGVhZCBvZiBwZXIgdGFyZ2V0IHBvcnQgcGVyIGhvc3QuCisrLlJTCisrLlRQCisrVGhlIGRlZmF1bHQgaXM6IFxmQm5vXGZSCisrLlJFCisrLgorKy4KKysuVFAKKyAuQiByZXRhaW5fYXR0YWNoZWRfaHdfaGFuZGxlcgorIChPYnNvbGV0ZSBmb3Iga2VybmVscyA+PSA0LjMpIElmIHNldCB0bworIC5JIHllcworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxNi1saWJtdWx0aXBhdGgtcmVtb3ZlLXJiZC1jb2RlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTYtbGlibXVsdGlwYXRoLXJlbW92ZS1yYmQtY29kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDE5NTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTYtbGlibXVsdGlwYXRoLXJlbW92ZS1yYmQtY29kZS5wYXRjaApAQCAtMCwwICsxLDEwOTMgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMSBKdW4gMjAxOCAxNjozMDo0NCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBsaWJtdWx0aXBhdGg6IHJlbW92ZSByYmQgY29kZQorCitUaGUgQ2VwaCB0ZWFuIGhhcyBhc2tlZCB0byBkcm9wIHN1cHBvcnQgZm9yIG11bHRpcGF0aGVkIHJiZCwgc2luY2UgaXQKK3dhcyBydW5uaW5nIGludG8gZGF0YSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlcmUgd2FzIG5ldmVyIGFuIHVwc3RyZWFtCitDZXBoIHJlbGVhc2UgYmFzZWQgb24gaXQsIGFuZCBiZWNhdXNlIG9mIHRoZSBjb3JydXB0aW9uLCB0aGVyZSBzaG91bGQgYmUKK25vIHVzZXJzIG9mIHRoaXMgY29kZS4gVGhpcyBwYXRjaCBzaW1wbHkgcmV2ZXJ0cyBhbGwgdGhlIHJiZCBjb2RlIGZyb20KK211bHRpcGF0aC4KKworQ2M6IE1pY2hhZWwgQ2hyaXN0aWUgPG1jaHJpc3RpQHJlZGhhdC5jb20+CitDYzogSmFzb24gRGlsbGFtYW4gPGRpbGxhbWFuQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMuYyAgICAgICAgICAgICAgfCAgMjIgLS0KKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMuaCAgICAgICAgICAgICAgfCAgIDYgLQorIGxpYm11bHRpcGF0aC9jaGVja2Vycy9NYWtlZmlsZSAgICAgICB8ICAgNyAtCisgbGlibXVsdGlwYXRoL2NoZWNrZXJzL2NjaXNzX3R1ci5jICAgIHwgICA1IC0KKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvZGlyZWN0aW8uYyAgICAgfCAgIDUgLQorIGxpYm11bHRpcGF0aC9jaGVja2Vycy9lbWNfY2xhcmlpb24uYyB8ICAgNSAtCisgbGlibXVsdGlwYXRoL2NoZWNrZXJzL2hwX3N3LmMgICAgICAgIHwgICA1IC0KKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvcmJkLmMgICAgICAgICAgfCA2NTMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBsaWJtdWx0aXBhdGgvY2hlY2tlcnMvcmRhYy5jICAgICAgICAgfCAgIDUgLQorIGxpYm11bHRpcGF0aC9jaGVja2Vycy9yZWFkc2VjdG9yMC5jICB8ICAgNSAtCisgbGlibXVsdGlwYXRoL2NoZWNrZXJzL3R1ci5jICAgICAgICAgIHwgICA1IC0KKyBsaWJtdWx0aXBhdGgvZGlzY292ZXJ5LmMgICAgICAgICAgICAgfCAgNzAgLS0tLQorIGxpYm11bHRpcGF0aC9od3RhYmxlLmMgICAgICAgICAgICAgICB8ICAxMiAtCisgbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgICAgICAgICAgIHwgICAzIC0KKyBtdWx0aXBhdGhkL21haW4uYyAgICAgICAgICAgICAgICAgICAgfCAgMTEgLQorIDE1IGZpbGVzIGNoYW5nZWQsIDgxOSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JiZC5jCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMuYyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy5jCitpbmRleCAwOGNkZmMzLi4wYmFjYzg2IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy5jCitAQCAtMTQxLDEzICsxNDEsNiBAQCBzdHJ1Y3QgY2hlY2tlciAqIGFkZF9jaGVja2VyIChjaGFyICptdWx0aXBhdGhfZGlyLCBjaGFyICogbmFtZSkKKyAJaWYgKCFjLT5mcmVlKQorIAkJZ290byBvdXQ7CisgCistCWMtPnJlcGFpciA9ICh2b2lkICgqKShzdHJ1Y3QgY2hlY2tlciAqKSkgZGxzeW0oYy0+aGFuZGxlLAorLQkJCQkJCSAgICAgICAibGliY2hlY2tfcmVwYWlyIik7CistCWVycnN0ciA9IGRsZXJyb3IoKTsKKy0JaWYgKGVycnN0ciAhPSBOVUxMKQorLQkJY29uZGxvZygwLCAiQSBkeW5hbWljIGxpbmtpbmcgZXJyb3Igb2NjdXJyZWQ6ICglcykiLCBlcnJzdHIpOworLQlpZiAoIWMtPnJlcGFpcikKKy0JCWdvdG8gb3V0OworIGRvbmU6CisgCWMtPmZkID0gLTE7CisgCWMtPnN5bmMgPSAxOworQEAgLTIyMiwyMCArMjE1LDYgQEAgdm9pZCBjaGVja2VyX3B1dCAoc3RydWN0IGNoZWNrZXIgKiBkc3QpCisgCWZyZWVfY2hlY2tlcihzcmMpOworIH0KKyAKKy12b2lkIGNoZWNrZXJfcmVwYWlyIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisteworLQlpZiAoIWNoZWNrZXJfc2VsZWN0ZWQoYykpCistCQlyZXR1cm47CistCistCWMtPm1lc3NhZ2VbMF0gPSAnXDAnOworLQlpZiAoYy0+ZGlzYWJsZSkgeworLQkJTVNHKGMsICJjaGVja2VyIGRpc2FibGVkIik7CistCQlyZXR1cm47CistCX0KKy0JaWYgKGMtPnJlcGFpcikKKy0JCWMtPnJlcGFpcihjKTsKKy19CistCisgaW50IGNoZWNrZXJfY2hlY2sgKHN0cnVjdCBjaGVja2VyICogYywgaW50IHBhdGhfc3RhdGUpCisgeworIAlpbnQgcjsKK0BAIC0zMTAsNyArMjg5LDYgQEAgdm9pZCBjaGVja2VyX2dldCAoY2hhciAqbXVsdGlwYXRoX2Rpciwgc3RydWN0IGNoZWNrZXIgKiBkc3QsIGNoYXIgKiBuYW1lKQorIAlkc3QtPnN5bmMgPSBzcmMtPnN5bmM7CisgCXN0cm5jcHkoZHN0LT5uYW1lLCBzcmMtPm5hbWUsIENIRUNLRVJfTkFNRV9MRU4pOworIAlzdHJuY3B5KGRzdC0+bWVzc2FnZSwgc3JjLT5tZXNzYWdlLCBDSEVDS0VSX01TR19MRU4pOworLQlkc3QtPnJlcGFpciA9IHNyYy0+cmVwYWlyOworIAlkc3QtPmNoZWNrID0gc3JjLT5jaGVjazsKKyAJZHN0LT5pbml0ID0gc3JjLT5pbml0OworIAlkc3QtPmZyZWUgPSBzcmMtPmZyZWU7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzLmggYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMuaAoraW5kZXggNTIxNTRjYS4uN2IxOGExYSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy5oCisrKysgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMuaAorQEAgLTg2LDcgKzg2LDYgQEAgZW51bSBwYXRoX2NoZWNrX3N0YXRlIHsKKyAjZGVmaW5lIFJFQURTRUNUT1IwICAicmVhZHNlY3RvcjAiCisgI2RlZmluZSBDQ0lTU19UVVIgICAgImNjaXNzX3R1ciIKKyAjZGVmaW5lIE5PTkUgICAgICAgICAibm9uZSIKKy0jZGVmaW5lIFJCRCAgICAgICAgICAicmJkIgorIAorICNkZWZpbmUgQVNZTkNfVElNRU9VVF9TRUMJMzAKKyAKK0BAIC0xMTMsOSArMTEyLDYgQEAgc3RydWN0IGNoZWNrZXIgeworIAkJCQkJCW11bHRpcGF0aC13aWRlLiBVc2UgTUFMTE9DIGlmCisgCQkJCQkJeW91IHdhbnQgdG8gc3R1ZmYgZGF0YSBpbi4gKi8KKyAJaW50ICgqY2hlY2spKHN0cnVjdCBjaGVja2VyICopOworLQl2b2lkICgqcmVwYWlyKShzdHJ1Y3QgY2hlY2tlciAqKTsgICAgLyogY2FsbGVkIGlmIGNoZWNrIHJldHVybnMKKy0JCQkJCQlQQVRIX0RPV04gdG8gYnJpbmcgcGF0aCBpbnRvCistCQkJCQkJdXNhYmxlIHN0YXRlICovCisgCWludCAoKmluaXQpKHN0cnVjdCBjaGVja2VyICopOyAgICAgICAvKiB0byBhbGxvY2F0ZSB0aGUgY29udGV4dCAqLworIAl2b2lkICgqZnJlZSkoc3RydWN0IGNoZWNrZXIgKik7ICAgICAgLyogdG8gZnJlZSB0aGUgY29udGV4dCAqLworIH07CitAQCAtMTM2LDcgKzEzMiw2IEBAIHZvaWQgY2hlY2tlcl9zZXRfYXN5bmMgKHN0cnVjdCBjaGVja2VyICopOworIHZvaWQgY2hlY2tlcl9zZXRfZmQgKHN0cnVjdCBjaGVja2VyICosIGludCk7Cisgdm9pZCBjaGVja2VyX2VuYWJsZSAoc3RydWN0IGNoZWNrZXIgKik7Cisgdm9pZCBjaGVja2VyX2Rpc2FibGUgKHN0cnVjdCBjaGVja2VyICopOworLXZvaWQgY2hlY2tlcl9yZXBhaXIgKHN0cnVjdCBjaGVja2VyICopOworIGludCBjaGVja2VyX2NoZWNrIChzdHJ1Y3QgY2hlY2tlciAqLCBpbnQpOworIGludCBjaGVja2VyX3NlbGVjdGVkIChzdHJ1Y3QgY2hlY2tlciAqKTsKKyBjaGFyICogY2hlY2tlcl9uYW1lIChzdHJ1Y3QgY2hlY2tlciAqKTsKK0BAIC0xNDgsNiArMTQzLDUgQEAgdm9pZCBjaGVja2VyX2dldCAoY2hhciAqLCBzdHJ1Y3QgY2hlY2tlciAqLCBjaGFyICopOworIGludCBsaWJjaGVja19jaGVjayhzdHJ1Y3QgY2hlY2tlciAqKTsKKyBpbnQgbGliY2hlY2tfaW5pdChzdHJ1Y3QgY2hlY2tlciAqKTsKKyB2b2lkIGxpYmNoZWNrX2ZyZWUoc3RydWN0IGNoZWNrZXIgKik7Cistdm9pZCBsaWJjaGVja19yZXBhaXIoc3RydWN0IGNoZWNrZXIgKik7CisgCisgI2VuZGlmIC8qIF9DSEVDS0VSU19IICovCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCitpbmRleCA4N2MxNWJkLi4wMmNhZWE2IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL01ha2VmaWxlCisrKysgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvTWFrZWZpbGUKK0BAIC0xNSwxNSArMTUsOCBAQCBMSUJTPSBcCisgCWxpYmNoZWNraHBfc3cuc28gXAorIAlsaWJjaGVja3JkYWMuc28KKyAKKy1pZm5lcSAoJChjYWxsIGNoZWNrX2ZpbGUsL3Vzci9pbmNsdWRlL3JhZG9zL2xpYnJhZG9zLmgpLDApCistTElCUyArPSBsaWJjaGVja3JiZC5zbworLWVuZGlmCistCisgYWxsOiAkKExJQlMpCisgCistbGliY2hlY2tyYmQuc286IHJiZC5vCistCSQoQ0MpICQoTERGTEFHUykgJChTSEFSRURfRkxBR1MpIC1vICRAICReIC1scmFkb3MgLWx1ZGV2CistCisgbGliY2hlY2tkaXJlY3Rpby5zbzogbGlic2cubyBkaXJlY3Rpby5vCisgCSQoQ0MpICQoTERGTEFHUykgJChTSEFSRURfRkxBR1MpIC1vICRAICReIC1sYWlvCisgCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2NjaXNzX3R1ci5jIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2NjaXNzX3R1ci5jCitpbmRleCA0MzY0NzBjLi4xY2FiMjAxIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2NjaXNzX3R1ci5jCisrKysgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvY2Npc3NfdHVyLmMKK0BAIC01OSwxMSArNTksNiBAQCB2b2lkIGxpYmNoZWNrX2ZyZWUgKHN0cnVjdCBjaGVja2VyICogYykKKyAJcmV0dXJuOworIH0KKyAKKy12b2lkIGxpYmNoZWNrX3JlcGFpciAoc3RydWN0IGNoZWNrZXIgKiBjKQorLXsKKy0JcmV0dXJuOworLX0KKy0KKyBpbnQgbGliY2hlY2tfY2hlY2soc3RydWN0IGNoZWNrZXIgKiBjKQorIHsKKyAJaW50IHJjOworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9kaXJlY3Rpby5jIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2RpcmVjdGlvLmMKK2luZGV4IGNlNjBlNGMuLmE4MDg0OGQgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvZGlyZWN0aW8uYworKysrIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2RpcmVjdGlvLmMKK0BAIC0xMTgsMTEgKzExOCw2IEBAIHZvaWQgbGliY2hlY2tfZnJlZSAoc3RydWN0IGNoZWNrZXIgKiBjKQorIAlmcmVlKGN0KTsKKyB9CisgCistdm9pZCBsaWJjaGVja19yZXBhaXIgKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXJldHVybjsKKy19CistCisgc3RhdGljIGludAorIGNoZWNrX3N0YXRlKGludCBmZCwgc3RydWN0IGRpcmVjdGlvX2NvbnRleHQgKmN0LCBpbnQgc3luYywgaW50IHRpbWVvdXRfc2VjcykKKyB7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2VtY19jbGFyaWlvbi5jIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2VtY19jbGFyaWlvbi5jCitpbmRleCA5YzFmZmVkLi45MTE1YjFiIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2VtY19jbGFyaWlvbi5jCisrKysgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvZW1jX2NsYXJpaW9uLmMKK0BAIC05MCwxMSArOTAsNiBAQCB2b2lkIGxpYmNoZWNrX2ZyZWUgKHN0cnVjdCBjaGVja2VyICogYykKKyAJZnJlZShjLT5jb250ZXh0KTsKKyB9CisgCistdm9pZCBsaWJjaGVja19yZXBhaXIgKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXJldHVybjsKKy19CistCisgaW50IGxpYmNoZWNrX2NoZWNrIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisgeworIAl1bnNpZ25lZCBjaGFyIHNlbnNlX2J1ZmZlclsxMjhdID0geyAwLCB9OworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9ocF9zdy5jIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2hwX3N3LmMKK2luZGV4IGNlZTlhYWIuLjBhZDM0YTYgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvaHBfc3cuYworKysrIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL2hwX3N3LmMKK0BAIC00NSwxMSArNDUsNiBAQCB2b2lkIGxpYmNoZWNrX2ZyZWUgKHN0cnVjdCBjaGVja2VyICogYykKKyAJcmV0dXJuOworIH0KKyAKKy12b2lkIGxpYmNoZWNrX3JlcGFpciAoc3RydWN0IGNoZWNrZXIgKiBjKQorLXsKKy0JcmV0dXJuOworLX0KKy0KKyBzdGF0aWMgaW50CisgZG9faW5xKGludCBzZ19mZCwgaW50IGNtZGR0LCBpbnQgZXZwZCwgdW5zaWduZWQgaW50IHBnX29wLAorICAgICAgICB2b2lkICpyZXNwLCBpbnQgbXhfcmVzcF9sZW4sIGludCBub2lzeSwgdW5zaWduZWQgaW50IHRpbWVvdXQpCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JiZC5jIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JiZC5jCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDRmZjU0ZjQuLjAwMDAwMDAKKy0tLSBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9yYmQuYworKysrIC9kZXYvbnVsbAorQEAgLTEsNjUzICswLDAgQEAKKy0vKgorLSAqIENvcHlyaWdodCAoYykgMjAxNiBSZWQgSGF0CistICogQ29weXJpZ2h0IChjKSAyMDA0IENocmlzdG9waGUgVmFyb3F1aQorLSAqCistICogQ29kZSBiYXNlZCBvZmYgb2YgdHVyLmMgYW5kIGNlcGgncyBrcmJkLmNjCistICovCistI2RlZmluZSBfR05VX1NPVVJDRQorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxwdGhyZWFkLmg+CistI2luY2x1ZGUgPGxpYnVkZXYuaD4KKy0jaW5jbHVkZSA8aWZhZGRycy5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+CistI2luY2x1ZGUgPHN5cy90aW1lLmg+CistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistI2luY2x1ZGUgPHVyY3UuaD4KKy0KKy0jaW5jbHVkZSAicmFkb3MvbGlicmFkb3MuaCIKKy0KKy0jaW5jbHVkZSAic3RydWN0cy5oIgorLSNpbmNsdWRlICJjaGVja2Vycy5oIgorLQorLSNpbmNsdWRlICIuLi9saWJtdWx0aXBhdGgvZGVidWcuaCIKKy0jaW5jbHVkZSAiLi4vbGlibXVsdGlwYXRoL3V0aWwuaCIKKy0jaW5jbHVkZSAiLi4vbGlibXVsdGlwYXRoL3RpbWUtdXRpbC5oIgorLSNpbmNsdWRlICIuLi9saWJtdWx0aXBhdGgvdXRpbC5oIgorLQorLXN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0OworLXR5cGVkZWYgaW50ICh0aHJlYWRfZm4pKHN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0ICpjdCwgY2hhciAqbXNnKTsKKy0KKy0jZGVmaW5lIFJCRF9NU0cobXNnLCBmbXQsIGFyZ3MuLi4pIHNucHJpbnRmKG1zZywgQ0hFQ0tFUl9NU0dfTEVOLCBmbXQsICMjYXJncyk7CistCistI2RlZmluZSBSQkRfRkVBVFVSRV9FWENMVVNJVkVfTE9DSwkoMSA8PCAyKQorLQorLXN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0IHsKKy0JaW50IHJiZF9idXNfaWQ7CistCWNoYXIgKmNsaWVudF9hZGRyOworLQljaGFyICpjb25maWdfaW5mbzsKKy0JY2hhciAqc25hcDsKKy0JY2hhciAqcG9vbDsKKy0JY2hhciAqaW1hZ2U7CistCWNoYXIgKnVzZXJuYW1lOworLQlpbnQgcmVtYXBwZWQ7CistCWludCBibGFja2xpc3RlZDsKKy0JdW5zaWduZWQgbG9ja19vbl9yZWFkOjE7CistCistCXJhZG9zX3QgY2x1c3RlcjsKKy0KKy0JaW50IHN0YXRlOworLQlpbnQgcnVubmluZzsKKy0JdGltZV90IHRpbWU7CistCXRocmVhZF9mbiAqZm47CistCXB0aHJlYWRfdCB0aHJlYWQ7CistCXB0aHJlYWRfbXV0ZXhfdCBsb2NrOworLQlwdGhyZWFkX2NvbmRfdCBhY3RpdmU7CistCXB0aHJlYWRfc3BpbmxvY2tfdCBobGRyX2xvY2s7CistCWludCBob2xkZXJzOworLQljaGFyIG1lc3NhZ2VbQ0hFQ0tFUl9NU0dfTEVOXTsKKy19OworLQorLWludCBsaWJjaGVja19pbml0KHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0ICpjdDsKKy0Jc3RydWN0IHVkZXZfZGV2aWNlICpibG9ja19kZXY7CistCXN0cnVjdCB1ZGV2X2RldmljZSAqYnVzX2RldjsKKy0Jc3RydWN0IHVkZXYgKnVkZXY7CistCXN0cnVjdCBzdGF0IHNiOworLQljb25zdCBjaGFyICpibG9ja19uYW1lLCAqYWRkciwgKmNvbmZpZ19pbmZvLCAqZmVhdHVyZXNfc3RyOworLQljb25zdCBjaGFyICppbWFnZSwgKnBvb2wsICpzbmFwLCAqdXNlcm5hbWU7CistCXVpbnQ2NF90IGZlYXR1cmVzID0gMDsKKy0JY2hhciBzeXNmc19wYXRoW1BBVEhfU0laRV07CistCWludCByZXQ7CistCistCWN0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCkpOworLQlpZiAoIWN0KQorLQkJcmV0dXJuIDE7CistCW1lbXNldChjdCwgMCwgc2l6ZW9mKHN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0KSk7CistCWN0LT5ob2xkZXJzID0gMTsKKy0JcHRocmVhZF9jb25kX2luaXRfbW9ubygmY3QtPmFjdGl2ZSk7CistCXB0aHJlYWRfbXV0ZXhfaW5pdCgmY3QtPmxvY2ssIE5VTEwpOworLQlwdGhyZWFkX3NwaW5faW5pdCgmY3QtPmhsZHJfbG9jaywgUFRIUkVBRF9QUk9DRVNTX1BSSVZBVEUpOworLQljLT5jb250ZXh0ID0gY3Q7CistCistCS8qCistCSAqIFRoZSByYmQgYmxvY2sgbGF5ZXIgc3lzZnMgZGV2aWNlIGlzIG5vdCBsaW5rZWQgdG8gdGhlIHJiZCBidXMKKy0JICogZGV2aWNlIHRoYXQgd2UgaW50ZXJhY3Qgd2l0aCwgc28gZmlndXJlIHRoYXQgb3V0IG5vdy4KKy0JICovCistCWlmIChmc3RhdChjLT5mZCwgJnNiKSAhPSAwKQorLQkJZ290byBmcmVlX2N0OworLQorLQl1ZGV2ID0gdWRldl9uZXcoKTsKKy0JaWYgKCF1ZGV2KQorLQkJZ290byBmcmVlX2N0OworLQorLQlibG9ja19kZXYgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9kZXZudW0odWRldiwgJ2InLCBzYi5zdF9yZGV2KTsKKy0JaWYgKCFibG9ja19kZXYpCistCQlnb3RvIGZyZWVfdWRldjsKKy0KKy0JYmxvY2tfbmFtZSAgPSB1ZGV2X2RldmljZV9nZXRfc3lzbmFtZShibG9ja19kZXYpOworLQlyZXQgPSBzc2NhbmYoYmxvY2tfbmFtZSwgInJiZCVkIiwgJmN0LT5yYmRfYnVzX2lkKTsKKy0KKy0JdWRldl9kZXZpY2VfdW5yZWYoYmxvY2tfZGV2KTsKKy0JaWYgKHJldCAhPSAxKQorLQkJZ290byBmcmVlX3VkZXY7CistCistCXNucHJpbnRmKHN5c2ZzX3BhdGgsIHNpemVvZihzeXNmc19wYXRoKSwgIi9zeXMvYnVzL3JiZC9kZXZpY2VzLyVkIiwKKy0JCSBjdC0+cmJkX2J1c19pZCk7CistCWJ1c19kZXYgPSB1ZGV2X2RldmljZV9uZXdfZnJvbV9zeXNwYXRoKHVkZXYsIHN5c2ZzX3BhdGgpOworLQlpZiAoIWJ1c19kZXYpCistCQlnb3RvIGZyZWVfdWRldjsKKy0KKy0JYWRkciA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGJ1c19kZXYsICJjbGllbnRfYWRkciIpOworLQlpZiAoIWFkZHIpIHsKKy0JCWNvbmRsb2coMCwgInJiZCVkOiBDb3VsZCBub3QgZmluZCBjbGllbnRfYWRkciBpbiByYmQgc3lzZnMuICIKKy0JCQkiVHJ5IHVwZGF0aW5nIGtlcm5lbCIsIGN0LT5yYmRfYnVzX2lkKTsKKy0JCWdvdG8gZnJlZV9kZXY7CistCX0KKy0KKy0JY3QtPmNsaWVudF9hZGRyID0gc3RyZHVwKGFkZHIpOworLQlpZiAoIWN0LT5jbGllbnRfYWRkcikKKy0JCWdvdG8gZnJlZV9kZXY7CistCistCWZlYXR1cmVzX3N0ciA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGJ1c19kZXYsICJmZWF0dXJlcyIpOworLQlpZiAoIWZlYXR1cmVzX3N0cikKKy0JCWdvdG8gZnJlZV9hZGRyOworLQlmZWF0dXJlcyA9IHN0cnRvbGwoZmVhdHVyZXNfc3RyLCBOVUxMLCAxNik7CistCWlmICghKGZlYXR1cmVzICYgUkJEX0ZFQVRVUkVfRVhDTFVTSVZFX0xPQ0spKSB7CistCQljb25kbG9nKDMsICJyYmQlZDogRXhjbHVzaXZlIGxvY2sgbm90IHNldC4iLCBjdC0+cmJkX2J1c19pZCk7CistCQlnb3RvIGZyZWVfYWRkcjsKKy0JfQorLQorLQljb25maWdfaW5mbyA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGJ1c19kZXYsICJjb25maWdfaW5mbyIpOworLQlpZiAoIWNvbmZpZ19pbmZvKQorLQkJZ290byBmcmVlX2FkZHI7CistCistCWlmICghc3Ryc3RyKGNvbmZpZ19pbmZvLCAibm9zaGFyZSIpKSB7CistCQljb25kbG9nKDMsICJyYmQlZDogT25seSBub25zaGFyZWQgY2xpZW50cyBzdXBwb3J0ZWQuIiwKKy0JCQljdC0+cmJkX2J1c19pZCk7CistCQlnb3RvIGZyZWVfYWRkcjsKKy0JfQorLQorLQlpZiAoc3Ryc3RyKGNvbmZpZ19pbmZvLCAibG9ja19vbl9yZWFkIikpCistCQljdC0+bG9ja19vbl9yZWFkID0gMTsKKy0KKy0JY3QtPmNvbmZpZ19pbmZvID0gc3RyZHVwKGNvbmZpZ19pbmZvKTsKKy0JaWYgKCFjdC0+Y29uZmlnX2luZm8pCistCQlnb3RvIGZyZWVfYWRkcjsKKy0KKy0JdXNlcm5hbWUgPSBzdHJzdHIoY29uZmlnX2luZm8sICJuYW1lPSIpOworLQlpZiAodXNlcm5hbWUpIHsKKy0JCWNoYXIgKmVuZDsKKy0JCWludCBsZW47CistCistCQl1c2VybmFtZSArPSA1OworLQkJZW5kID0gc3RyY2hyKHVzZXJuYW1lLCAnLCcpOworLQkJaWYgKCFlbmQpCistCQkJZ290byBmcmVlX2luZm87CistCQlsZW4gPSBlbmQgLSB1c2VybmFtZTsKKy0KKy0JCWN0LT51c2VybmFtZSA9IG1hbGxvYyhsZW4gKyAxKTsKKy0JCWlmICghY3QtPnVzZXJuYW1lKQorLQkJCWdvdG8gZnJlZV9pbmZvOworLQkJc3RybmNweShjdC0+dXNlcm5hbWUsIHVzZXJuYW1lLCBsZW4pOworLQkJY3QtPnVzZXJuYW1lW2xlbl0gPSAnXDAnOworLQl9CistCistCWltYWdlID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUoYnVzX2RldiwgIm5hbWUiKTsKKy0JaWYgKCFpbWFnZSkKKy0JCWdvdG8gZnJlZV91c2VybmFtZTsKKy0KKy0JY3QtPmltYWdlID0gc3RyZHVwKGltYWdlKTsKKy0JaWYgKCFjdC0+aW1hZ2UpCistCQlnb3RvIGZyZWVfdXNlcm5hbWU7CistCistCXBvb2wgPSB1ZGV2X2RldmljZV9nZXRfc3lzYXR0cl92YWx1ZShidXNfZGV2LCAicG9vbCIpOworLQlpZiAoIXBvb2wpCistCQlnb3RvIGZyZWVfaW1hZ2U7CistCistCWN0LT5wb29sID0gc3RyZHVwKHBvb2wpOworLQlpZiAoIWN0LT5wb29sKQorLQkJZ290byBmcmVlX2ltYWdlOworLQorLQlzbmFwID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUoYnVzX2RldiwgImN1cnJlbnRfc25hcCIpOworLQlpZiAoIXNuYXApCistCQlnb3RvIGZyZWVfcG9vbDsKKy0KKy0JaWYgKHN0cmNtcCgiLSIsIHNuYXApKSB7CistCQljdC0+c25hcCA9IHN0cmR1cChzbmFwKTsKKy0JCWlmICghY3QtPnNuYXApCistCQkJZ290byBmcmVlX3Bvb2w7CistCX0KKy0KKy0JaWYgKHJhZG9zX2NyZWF0ZSgmY3QtPmNsdXN0ZXIsIE5VTEwpIDwgMCkgeworLQkJY29uZGxvZygwLCAicmJkJWQ6IENvdWxkIG5vdCBjcmVhdGUgcmFkb3MgY2x1c3RlciIsCistCQkJY3QtPnJiZF9idXNfaWQpOworLQkJZ290byBmcmVlX3NuYXA7CistCX0KKy0KKy0JaWYgKHJhZG9zX2NvbmZfcmVhZF9maWxlKGN0LT5jbHVzdGVyLCBOVUxMKSA8IDApIHsKKy0JCWNvbmRsb2coMCwgInJiZCVkOiBDb3VsZCBub3QgcmVhZCByYWRvcyBjb25mIiwgY3QtPnJiZF9idXNfaWQpOworLQkJZ290byBzaHV0ZG93bl9yYWRvczsKKy0JfQorLQorLQlyZXQgPSByYWRvc19jb25uZWN0KGN0LT5jbHVzdGVyKTsKKy0JaWYgKHJldCA8IDApIHsKKy0JCWNvbmRsb2coMCwgInJiZCVkOiBDb3VsZCBub3QgY29ubmVjdCB0byByYWRvcyBjbHVzdGVyIiwKKy0JCQljdC0+cmJkX2J1c19pZCk7CistCQlnb3RvIHNodXRkb3duX3JhZG9zOworLQl9CistCistCXVkZXZfZGV2aWNlX3VucmVmKGJ1c19kZXYpOworLQl1ZGV2X3VucmVmKHVkZXYpOworLQorLQljb25kbG9nKDMsICJyYmQlZCBjaGVja2VyIGluaXQgJXMgJXMvJXNAJXMgJXMiLCBjdC0+cmJkX2J1c19pZCwKKy0JCWN0LT5jbGllbnRfYWRkciwgY3QtPnBvb2wsIGN0LT5pbWFnZSwgY3QtPnNuYXAgPyBjdC0+c25hcCA6ICItIiwKKy0JCWN0LT51c2VybmFtZSA/IGN0LT51c2VybmFtZSA6ICJub25lIik7CistCXJldHVybiAwOworLQorLXNodXRkb3duX3JhZG9zOgorLQlyYWRvc19zaHV0ZG93bihjdC0+Y2x1c3Rlcik7CistZnJlZV9zbmFwOgorLQlpZiAoY3QtPnNuYXApCistCQlmcmVlKGN0LT5zbmFwKTsKKy1mcmVlX3Bvb2w6CistCWZyZWUoY3QtPnBvb2wpOworLWZyZWVfaW1hZ2U6CistCWZyZWUoY3QtPmltYWdlKTsKKy1mcmVlX3VzZXJuYW1lOgorLQlpZiAoY3QtPnVzZXJuYW1lKQorLQkJZnJlZShjdC0+dXNlcm5hbWUpOworLWZyZWVfaW5mbzoKKy0JZnJlZShjdC0+Y29uZmlnX2luZm8pOworLWZyZWVfYWRkcjoKKy0JZnJlZShjdC0+Y2xpZW50X2FkZHIpOworLWZyZWVfZGV2OgorLQl1ZGV2X2RldmljZV91bnJlZihidXNfZGV2KTsKKy1mcmVlX3VkZXY6CistCXVkZXZfdW5yZWYodWRldik7CistZnJlZV9jdDoKKy0JZnJlZShjdCk7CistCXJldHVybiAxOworLX0KKy0KKy1zdGF0aWMgdm9pZCBjbGVhbnVwX2NvbnRleHQoc3RydWN0IHJiZF9jaGVja2VyX2NvbnRleHQgKmN0KQorLXsKKy0JcHRocmVhZF9tdXRleF9kZXN0cm95KCZjdC0+bG9jayk7CistCXB0aHJlYWRfY29uZF9kZXN0cm95KCZjdC0+YWN0aXZlKTsKKy0JcHRocmVhZF9zcGluX2Rlc3Ryb3koJmN0LT5obGRyX2xvY2spOworLQorLQlyYWRvc19zaHV0ZG93bihjdC0+Y2x1c3Rlcik7CistCistCWlmIChjdC0+dXNlcm5hbWUpCistCQlmcmVlKGN0LT51c2VybmFtZSk7CistCWlmIChjdC0+c25hcCkKKy0JCWZyZWUoY3QtPnNuYXApOworLQlmcmVlKGN0LT5wb29sKTsKKy0JZnJlZShjdC0+aW1hZ2UpOworLQlmcmVlKGN0LT5jb25maWdfaW5mbyk7CistCWZyZWUoY3QtPmNsaWVudF9hZGRyKTsKKy0JZnJlZShjdCk7CistfQorLQorLXZvaWQgbGliY2hlY2tfZnJlZShzdHJ1Y3QgY2hlY2tlciAqIGMpCisteworLQlpZiAoYy0+Y29udGV4dCkgeworLQkJc3RydWN0IHJiZF9jaGVja2VyX2NvbnRleHQgKmN0ID0gYy0+Y29udGV4dDsKKy0JCWludCBob2xkZXJzOworLQkJcHRocmVhZF90IHRocmVhZDsKKy0KKy0JCXB0aHJlYWRfc3Bpbl9sb2NrKCZjdC0+aGxkcl9sb2NrKTsKKy0JCWN0LT5ob2xkZXJzLS07CistCQlob2xkZXJzID0gY3QtPmhvbGRlcnM7CistCQl0aHJlYWQgPSBjdC0+dGhyZWFkOworLQkJcHRocmVhZF9zcGluX3VubG9jaygmY3QtPmhsZHJfbG9jayk7CistCQlpZiAoaG9sZGVycykKKy0JCQlwdGhyZWFkX2NhbmNlbCh0aHJlYWQpOworLQkJZWxzZQorLQkJCWNsZWFudXBfY29udGV4dChjdCk7CistCQljLT5jb250ZXh0ID0gTlVMTDsKKy0JfQorLX0KKy0KKy1zdGF0aWMgaW50IHJiZF9pc19ibGFja2xpc3RlZChzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCAqY3QsIGNoYXIgKm1zZykKKy17CistCWNoYXIgKmFkZHJfdG9rLCAqc3RhcnQsICpzYXZlOworLQljb25zdCBjaGFyICpjbWRbMl07CistCWNoYXIgKmJsa2xpc3QsICpzdGF0OworLQlzaXplX3QgYmxrbGlzdF9sZW4sIHN0YXRfbGVuOworLQlpbnQgcmV0OworLQljaGFyICplbmQ7CistCistCWNtZFswXSA9ICJ7XCJwcmVmaXhcIjogXCJvc2QgYmxhY2tsaXN0IGxzXCJ9IjsKKy0JY21kWzFdID0gTlVMTDsKKy0KKy0JcmV0ID0gcmFkb3NfbW9uX2NvbW1hbmQoY3QtPmNsdXN0ZXIsIChjb25zdCBjaGFyICoqKWNtZCwgMSwgIiIsIDAsCistCQkJCSZibGtsaXN0LCAmYmxrbGlzdF9sZW4sICZzdGF0LCAmc3RhdF9sZW4pOworLQlpZiAocmV0IDwgMCkgeworLQkJUkJEX01TRyhtc2csICJjaGVja2VyIGZhaWxlZDogbW9uIGNvbW1hbmQgZmFpbGVkICVkIiwgcmV0KTsKKy0JCXJldHVybiByZXQ7CistCX0KKy0KKy0JaWYgKCFibGtsaXN0IHx8ICFibGtsaXN0X2xlbikKKy0JCWdvdG8gZnJlZV9idWZzOworLQorLQkvKgorLQkgKiBwYXJzZSBsaXN0IG9mIGFkZHJzIHdpdGggdGhlIGZvcm1hdAorLQkgKiBpcHY0OnBvcnQvbm9uY2UgZGF0ZSB0aW1lXG4KKy0JICogb3IKKy0JICogW2lwdjZdOnBvcnQvbm9uY2UgZGF0ZSB0aW1lXG4KKy0JICovCistCXJldCA9IDA7CistCWZvciAoc3RhcnQgPSBibGtsaXN0OyA7IHN0YXJ0ID0gTlVMTCkgeworLQkJYWRkcl90b2sgPSBzdHJ0b2tfcihzdGFydCwgIlxuIiwgJnNhdmUpOworLQkJaWYgKCFhZGRyX3RvayB8fCAhc3RybGVuKGFkZHJfdG9rKSkKKy0JCQlicmVhazsKKy0KKy0JCWVuZCA9IHN0cmNocihhZGRyX3RvaywgJyAnKTsKKy0JCWlmICghZW5kKSB7CistCQkJUkJEX01TRyhtc2csICJjaGVja2VyIGZhaWxlZDogaW52YWxpZCBibGFja2xpc3QgJXMiLAorLQkJCQkgYWRkcl90b2spOworLQkJCWJyZWFrOworLQkJfQorLQkJKmVuZCA9ICdcMCc7CistCistCQlpZiAoIXN0cmNtcChhZGRyX3RvaywgY3QtPmNsaWVudF9hZGRyKSkgeworLQkJCWN0LT5ibGFja2xpc3RlZCA9IDE7CistCQkJUkJEX01TRyhtc2csICIlcyBpcyBibGFja2xpc3RlZCIsIGN0LT5jbGllbnRfYWRkcik7CistCQkJcmV0ID0gMTsKKy0JCQlicmVhazsKKy0JCX0KKy0JfQorLQorLWZyZWVfYnVmczoKKy0JcmFkb3NfYnVmZmVyX2ZyZWUoYmxrbGlzdCk7CistCXJhZG9zX2J1ZmZlcl9mcmVlKHN0YXQpOworLQlyZXR1cm4gcmV0OworLX0KKy0KKy1zdGF0aWMgaW50IHJiZF9jaGVjayhzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCAqY3QsIGNoYXIgKm1zZykKKy17CistCWlmIChjdC0+YmxhY2tsaXN0ZWQgfHwgcmJkX2lzX2JsYWNrbGlzdGVkKGN0LCBtc2cpID09IDEpCistCQlyZXR1cm4gUEFUSF9ET1dOOworLQorLQlSQkRfTVNHKG1zZywgImNoZWNrZXIgcmVwb3J0cyBwYXRoIGlzIHVwIik7CistCS8qCistCSAqIFBhdGggbWF5IGhhdmUgaXNzdWVzLCBidXQgdGhlIGNlcGggY2x1c3RlciBpcyBhdCBsZWFzdAorLQkgKiBhY2NlcHRpbmcgSU8sIHNvIHdlIGNhbiBhdHRlbXB0IHRvIGRvIElPLgorLQkgKgorLQkgKiBUT0RPOiBpbiBmdXR1cmUgdmVyc2lvbnMsIHdlIGNhbiBydW4gb3RoZXIgdGVzdHMgdG8KKy0JICogdmVyaWZ5IE9TRHMgYW5kIG5ldHdvcmtzLgorLQkgKi8KKy0JcmV0dXJuIFBBVEhfVVA7CistfQorLQorLXN0YXRpYyBpbnQgc3lzZnNfd3JpdGVfcmJkX2J1cyhjb25zdCBjaGFyICp3aGljaCwgY29uc3QgY2hhciAqYnVmLAorLQkJCSAgICAgICBzaXplX3QgYnVmX2xlbikKKy17CistCWNoYXIgc3lzZnNfcGF0aFtQQVRIX1NJWkVdOworLQlpbnQgZmQ7CistCWludCByOworLQorLQkvKiB3ZSByZXF1aXJlIG5ld2VyIGtlcm5lbHMgc28gc2luZ2xlX21ham9yIHNob3VsZCBhbHdheXMgYmUgdGhlcmUgKi8KKy0Jc25wcmludGYoc3lzZnNfcGF0aCwgc2l6ZW9mKHN5c2ZzX3BhdGgpLAorLQkJICIvc3lzL2J1cy9yYmQvJXNfc2luZ2xlX21ham9yIiwgd2hpY2gpOworLQlmZCA9IG9wZW4oc3lzZnNfcGF0aCwgT19XUk9OTFkpOworLQlpZiAoZmQgPCAwKQorLQkJcmV0dXJuIC1lcnJubzsKKy0KKy0JciA9IHNhZmVfd3JpdGUoZmQsIGJ1ZiwgYnVmX2xlbik7CistCWNsb3NlKGZkKTsKKy0JcmV0dXJuIHI7CistfQorLQorLXN0YXRpYyBpbnQgcmJkX3JlbWFwKHN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0ICpjdCkKKy17CistCWNoYXIgKmFyZ3ZbMTFdOworLQlwaWRfdCBwaWQ7CistCWludCByZXQgPSAwLCBpID0gMDsKKy0JaW50IHN0YXR1czsKKy0KKy0JcGlkID0gZm9yaygpOworLQlzd2l0Y2ggKHBpZCkgeworLQljYXNlIDA6CistCQlhcmd2W2krK10gPSAicmJkIjsKKy0JCWFyZ3ZbaSsrXSA9ICJtYXAiOworLQkJaWYgKGN0LT5sb2NrX29uX3JlYWQpCistCQkJYXJndltpKytdID0gIi1vIG5vc2hhcmUsbG9ja19vbl9yZWFkIjsKKy0JCWVsc2UKKy0JCQlhcmd2W2krK10gPSAiLW8gbm9zaGFyZSI7CistCQlpZiAoY3QtPnVzZXJuYW1lKSB7CistCQkJYXJndltpKytdID0gIi0taWQiOworLQkJCWFyZ3ZbaSsrXSA9IGN0LT51c2VybmFtZTsKKy0JCX0KKy0JCWFyZ3ZbaSsrXSA9ICItLXBvb2wiOworLQkJYXJndltpKytdID0gY3QtPnBvb2w7CistCQlpZiAoY3QtPnNuYXApIHsKKy0JCQlhcmd2W2krK10gPSAiLS1zbmFwIjsKKy0JCQlhcmd2W2krK10gPSBjdC0+c25hcDsKKy0JCX0KKy0JCWFyZ3ZbaSsrXSA9IGN0LT5pbWFnZTsKKy0JCWFyZ3ZbaV0gPSBOVUxMOworLQorLQkJcmV0ID0gZXhlY3ZwKGFyZ3ZbMF0sIGFyZ3YpOworLQkJY29uZGxvZygwLCAicmJkJWQ6IEVycm9yIGV4ZWN1dGluZyByYmQ6ICVzIiwgY3QtPnJiZF9idXNfaWQsCistCQkJc3RyZXJyb3IoZXJybm8pKTsKKy0JCWV4aXQoLTEpOworLQljYXNlIC0xOgorLQkJY29uZGxvZygwLCAicmJkJWQ6IGZvcmsgZmFpbGVkOiAlcyIsIGN0LT5yYmRfYnVzX2lkLAorLQkJCXN0cmVycm9yKGVycm5vKSk7CistCQlyZXR1cm4gLTE7CistCWRlZmF1bHQ6CistCQlyZXQgPSAtMTsKKy0JCXdhaXQoJnN0YXR1cyk7CistCQlpZiAoV0lGRVhJVEVEKHN0YXR1cykpIHsKKy0JCQlzdGF0dXMgPSBXRVhJVFNUQVRVUyhzdGF0dXMpOworLQkJCWlmIChzdGF0dXMgPT0gMCkKKy0JCQkJcmV0ID0gMDsKKy0JCQllbHNlCistCQkJCWNvbmRsb2coMCwgInJiZCVkOiBmYWlsZWQgd2l0aCAlZCIsCistCQkJCQljdC0+cmJkX2J1c19pZCwgc3RhdHVzKTsKKy0JCX0KKy0JfQorLQorLQlyZXR1cm4gcmV0OworLX0KKy0KKy1zdGF0aWMgaW50IHN5c2ZzX3dyaXRlX3JiZF9yZW1vdmUoY29uc3QgY2hhciAqYnVmLCBpbnQgYnVmX2xlbikKKy17CistCXJldHVybiBzeXNmc193cml0ZV9yYmRfYnVzKCJyZW1vdmUiLCBidWYsIGJ1Zl9sZW4pOworLX0KKy0KKy1zdGF0aWMgaW50IHJiZF9ybV9ibGFja2xpc3Qoc3RydWN0IHJiZF9jaGVja2VyX2NvbnRleHQgKmN0KQorLXsKKy0JY29uc3QgY2hhciAqY21kWzJdOworLQljaGFyICpzdGF0LCAqY21kX3N0cjsKKy0Jc2l6ZV90IHN0YXRfbGVuOworLQlpbnQgcmV0OworLQorLQlyZXQgPSBhc3ByaW50ZigmY21kX3N0ciwgIntcInByZWZpeFwiOiBcIm9zZCBibGFja2xpc3RcIiwgXCJibGFja2xpc3RvcFwiOiBcInJtXCIsIFwiYWRkclwiOiBcIiVzXCJ9IiwKKy0JCSAgICAgICBjdC0+Y2xpZW50X2FkZHIpOworLQlpZiAocmV0ID09IC0xKQorLQkJcmV0dXJuIC1FTk9NRU07CistCistCWNtZFswXSA9IGNtZF9zdHI7CistCWNtZFsxXSA9IE5VTEw7CistCistCXJldCA9IHJhZG9zX21vbl9jb21tYW5kKGN0LT5jbHVzdGVyLCAoY29uc3QgY2hhciAqKiljbWQsIDEsICIiLCAwLAorLQkJCQlOVUxMLCBOVUxMLCAmc3RhdCwgJnN0YXRfbGVuKTsKKy0JaWYgKHJldCA8IDApIHsKKy0JCWNvbmRsb2coMSwgInJiZCVkOiByZXBhaXIgZmFpbGVkIHRvIHJlbW92ZSBibGFja2xpc3QgZm9yICVzICVkIiwKKy0JCQljdC0+cmJkX2J1c19pZCwgY3QtPmNsaWVudF9hZGRyLCByZXQpOworLQkJZ290byBmcmVlX2NtZDsKKy0JfQorLQorLQljb25kbG9nKDEsICJyYmQlZDogcmVwYWlyIHJtIGJsYWNrbGlzdCBmb3IgJXMiLAorLQkgICAgICAgY3QtPnJiZF9idXNfaWQsIGN0LT5jbGllbnRfYWRkcik7CistCWZyZWUoc3RhdCk7CistZnJlZV9jbWQ6CistCWZyZWUoY21kX3N0cik7CistCXJldHVybiByZXQ7CistfQorLQorLXN0YXRpYyBpbnQgcmJkX3JlcGFpcihzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCAqY3QsIGNoYXIgKm1zZykKKy17CistCWNoYXIgZGVsWzE3XTsKKy0JaW50IHJldDsKKy0KKy0JaWYgKCFjdC0+YmxhY2tsaXN0ZWQpCistCQlyZXR1cm4gUEFUSF9VUDsKKy0KKy0JaWYgKCFjdC0+cmVtYXBwZWQpIHsKKy0JCXJldCA9IHJiZF9yZW1hcChjdCk7CistCQlpZiAocmV0KSB7CistCQkJUkJEX01TRyhtc2csICJyZXBhaXIgZmFpbGVkIHRvIHJlbWFwLiBFcnIgJWQiLCByZXQpOworLQkJCXJldHVybiBQQVRIX0RPV047CistCQl9CistCX0KKy0JY3QtPnJlbWFwcGVkID0gMTsKKy0KKy0Jc25wcmludGYoZGVsLCBzaXplb2YoZGVsKSwgIiVkIGZvcmNlIiwgY3QtPnJiZF9idXNfaWQpOworLQlyZXQgPSBzeXNmc193cml0ZV9yYmRfcmVtb3ZlKGRlbCwgc3RybGVuKGRlbCkgKyAxKTsKKy0JaWYgKHJldCkgeworLQkJUkJEX01TRyhtc2csICJyZXBhaXIgZmFpbGVkIHRvIGNsZWFuIHVwLiBFcnIgJWQiLCByZXQpOworLQkJcmV0dXJuIFBBVEhfRE9XTjsKKy0JfQorLQorLQlyZXQgPSByYmRfcm1fYmxhY2tsaXN0KGN0KTsKKy0JaWYgKHJldCkgeworLQkJUkJEX01TRyhtc2csICJyZXBhaXIgY291bGQgbm90IHJlbW92ZSBibGFja2xpc3QgZW50cnkuIEVyciAlZCIsCistCQkJcmV0KTsKKy0JCXJldHVybiBQQVRIX0RPV047CistCX0KKy0KKy0JY3QtPnJlbWFwcGVkID0gMDsKKy0JY3QtPmJsYWNrbGlzdGVkID0gMDsKKy0KKy0JUkJEX01TRyhtc2csICJoYXMgYmVlbiByZXBhaXJlZCIpOworLQlyZXR1cm4gUEFUSF9VUDsKKy19CistCistI2RlZmluZSByYmRfdGhyZWFkX2NsZWFudXBfcHVzaChjdCkgcHRocmVhZF9jbGVhbnVwX3B1c2goY2xlYW51cF9mdW5jLCBjdCkKKy0jZGVmaW5lIHJiZF90aHJlYWRfY2xlYW51cF9wb3AoY3QpIHB0aHJlYWRfY2xlYW51cF9wb3AoMSkKKy0KKy1zdGF0aWMgdm9pZCBjbGVhbnVwX2Z1bmModm9pZCAqZGF0YSkKKy17CistCWludCBob2xkZXJzOworLQlzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCAqY3QgPSBkYXRhOworLQlwdGhyZWFkX3NwaW5fbG9jaygmY3QtPmhsZHJfbG9jayk7CistCWN0LT5ob2xkZXJzLS07CistCWhvbGRlcnMgPSBjdC0+aG9sZGVyczsKKy0JY3QtPnRocmVhZCA9IDA7CistCXB0aHJlYWRfc3Bpbl91bmxvY2soJmN0LT5obGRyX2xvY2spOworLQlpZiAoIWhvbGRlcnMpCistCQljbGVhbnVwX2NvbnRleHQoY3QpOworLQlyY3VfdW5yZWdpc3Rlcl90aHJlYWQoKTsKKy19CistCistc3RhdGljIHZvaWQgKnJiZF90aHJlYWQodm9pZCAqY3R4KQorLXsKKy0Jc3RydWN0IHJiZF9jaGVja2VyX2NvbnRleHQgKmN0ID0gY3R4OworLQlpbnQgc3RhdGU7CistCistCS8qIFRoaXMgdGhyZWFkIGNhbiBiZSBjYW5jZWxlZCwgc28gc2V0dXAgY2xlYW4gdXAgKi8KKy0JcmJkX3RocmVhZF9jbGVhbnVwX3B1c2goY3QpCistCXJjdV9yZWdpc3Rlcl90aHJlYWQoKTsKKy0JY29uZGxvZygzLCAicmJkJWQ6IHRocmVhZCBzdGFydGluZyB1cCIsIGN0LT5yYmRfYnVzX2lkKTsKKy0KKy0JY3QtPm1lc3NhZ2VbMF0gPSAnXDAnOworLQorLQkvKiBjaGVja2VyIHN0YXJ0IHVwICovCistCXB0aHJlYWRfbXV0ZXhfbG9jaygmY3QtPmxvY2spOworLQljdC0+c3RhdGUgPSBQQVRIX1BFTkRJTkc7CistCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjdC0+bG9jayk7CistCistCXN0YXRlID0gY3QtPmZuKGN0LCBjdC0+bWVzc2FnZSk7CistCistCS8qIGNoZWNrZXIgZG9uZSAqLworLQlwdGhyZWFkX211dGV4X2xvY2soJmN0LT5sb2NrKTsKKy0JY3QtPnN0YXRlID0gc3RhdGU7CistCXB0aHJlYWRfY29uZF9zaWduYWwoJmN0LT5hY3RpdmUpOworLQlwdGhyZWFkX211dGV4X3VubG9jaygmY3QtPmxvY2spOworLQorLQljb25kbG9nKDMsICJyYmQlZDogdGhlYWQgZmluaXNoZWQsIHN0YXRlICVzIiwgY3QtPnJiZF9idXNfaWQsCistCQljaGVja2VyX3N0YXRlX25hbWUoc3RhdGUpKTsKKy0JcmJkX3RocmVhZF9jbGVhbnVwX3BvcChjdCk7CistCXJldHVybiAoKHZvaWQgKikwKTsKKy19CistCistc3RhdGljIHZvaWQgcmJkX3RpbWVvdXQoc3RydWN0IHRpbWVzcGVjICp0c3ApCisteworLQljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgdHNwKTsKKy0JdHNwLT50dl9uc2VjICs9IDEwMDAgKiAxMDAwOyAvKiAxIG1pbGxpc2Vjb25kICovCistCW5vcm1hbGl6ZV90aW1lc3BlYyh0c3ApOworLX0KKy0KKy1zdGF0aWMgaW50IHJiZF9leGVjX2ZuKHN0cnVjdCBjaGVja2VyICpjLCB0aHJlYWRfZm4gKmZuKQorLXsKKy0Jc3RydWN0IHJiZF9jaGVja2VyX2NvbnRleHQgKmN0ID0gYy0+Y29udGV4dDsKKy0Jc3RydWN0IHRpbWVzcGVjIHRzcDsKKy0JcHRocmVhZF9hdHRyX3QgYXR0cjsKKy0JaW50IHJiZF9zdGF0dXMsIHI7CistCistCWlmIChjLT5zeW5jKQorLQkJcmV0dXJuIGZuKGN0LCBjLT5tZXNzYWdlKTsKKy0JLyoKKy0JICogQXN5bmMgbW9kZQorLQkgKi8KKy0JciA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmY3QtPmxvY2spOworLQlpZiAociAhPSAwKSB7CistCQljb25kbG9nKDIsICJyYmQlZDogbXV0ZXggbG9jayBmYWlsZWQgd2l0aCAlZCIsIGN0LT5yYmRfYnVzX2lkLAorLQkJCXIpOworLQkJTVNHKGMsICJyYmQlZDogdGhyZWFkIGZhaWxlZCB0byBpbml0aWFsaXplIiwgY3QtPnJiZF9idXNfaWQpOworLQkJcmV0dXJuIFBBVEhfV0lMRDsKKy0JfQorLQorLQlpZiAoY3QtPnJ1bm5pbmcpIHsKKy0JCS8qIENoZWNrIGlmIGNoZWNrZXIgaXMgc3RpbGwgcnVubmluZyAqLworLQkJaWYgKGN0LT50aHJlYWQpIHsKKy0JCQljb25kbG9nKDMsICJyYmQlZDogdGhyZWFkIG5vdCBmaW5pc2hlZCIsCistCQkJCWN0LT5yYmRfYnVzX2lkKTsKKy0JCQlyYmRfc3RhdHVzID0gUEFUSF9QRU5ESU5HOworLQkJfSBlbHNlIHsKKy0JCQkvKiBjaGVja2VyIGRvbmUgKi8KKy0JCQljdC0+cnVubmluZyA9IDA7CistCQkJcmJkX3N0YXR1cyA9IGN0LT5zdGF0ZTsKKy0JCQlzdHJuY3B5KGMtPm1lc3NhZ2UsIGN0LT5tZXNzYWdlLCBDSEVDS0VSX01TR19MRU4pOworLQkJCWMtPm1lc3NhZ2VbQ0hFQ0tFUl9NU0dfTEVOIC0gMV0gPSAnXDAnOworLQkJfQorLQkJcHRocmVhZF9tdXRleF91bmxvY2soJmN0LT5sb2NrKTsKKy0JfSBlbHNlIHsKKy0JCS8qIFN0YXJ0IG5ldyBjaGVja2VyICovCistCQljdC0+c3RhdGUgPSBQQVRIX1VOQ0hFQ0tFRDsKKy0JCWN0LT5mbiA9IGZuOworLQkJcHRocmVhZF9zcGluX2xvY2soJmN0LT5obGRyX2xvY2spOworLQkJY3QtPmhvbGRlcnMrKzsKKy0JCXB0aHJlYWRfc3Bpbl91bmxvY2soJmN0LT5obGRyX2xvY2spOworLQkJc2V0dXBfdGhyZWFkX2F0dHIoJmF0dHIsIDMyICogMTAyNCwgMSk7CistCQlyID0gcHRocmVhZF9jcmVhdGUoJmN0LT50aHJlYWQsICZhdHRyLCByYmRfdGhyZWFkLCBjdCk7CistCQlpZiAocikgeworLQkJCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZjdC0+bG9jayk7CistCQkJY3QtPnRocmVhZCA9IDA7CistCQkJY3QtPmhvbGRlcnMtLTsKKy0JCQljb25kbG9nKDMsICJyYmQlZCBmYWlsZWQgdG8gc3RhcnQgcmJkIHRocmVhZCwgdXNpbmcgc3luYyBtb2RlIiwKKy0JCQkJY3QtPnJiZF9idXNfaWQpOworLQkJCXJldHVybiBmbihjdCwgYy0+bWVzc2FnZSk7CistCQl9CistCQlwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cik7CistCQlyYmRfdGltZW91dCgmdHNwKTsKKy0JCXIgPSBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCZjdC0+YWN0aXZlLCAmY3QtPmxvY2ssICZ0c3ApOworLQkJcmJkX3N0YXR1cyA9IGN0LT5zdGF0ZTsKKy0JCXN0cm5jcHkoYy0+bWVzc2FnZSwgY3QtPm1lc3NhZ2UsQ0hFQ0tFUl9NU0dfTEVOKTsKKy0JCWMtPm1lc3NhZ2VbQ0hFQ0tFUl9NU0dfTEVOIC0xXSA9ICdcMCc7CistCQlwdGhyZWFkX211dGV4X3VubG9jaygmY3QtPmxvY2spOworLQorLQkJaWYgKGN0LT50aHJlYWQgJiYKKy0JCSAgICAocmJkX3N0YXR1cyA9PSBQQVRIX1BFTkRJTkcgfHwgcmJkX3N0YXR1cyA9PSBQQVRIX1VOQ0hFQ0tFRCkpIHsKKy0JCQljb25kbG9nKDMsICJyYmQlZDogdGhyZWFkIHN0aWxsIHJ1bm5pbmciLAorLQkJCQljdC0+cmJkX2J1c19pZCk7CistCQkJY3QtPnJ1bm5pbmcgPSAxOworLQkJCXJiZF9zdGF0dXMgPSBQQVRIX1BFTkRJTkc7CistCQl9CistCX0KKy0KKy0JcmV0dXJuIHJiZF9zdGF0dXM7CistfQorLQorLXZvaWQgbGliY2hlY2tfcmVwYWlyKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXN0cnVjdCByYmRfY2hlY2tlcl9jb250ZXh0ICpjdCA9IGMtPmNvbnRleHQ7CistCistCWlmICghY3QgfHwgIWN0LT5ibGFja2xpc3RlZCkKKy0JCXJldHVybjsKKy0JcmJkX2V4ZWNfZm4oYywgcmJkX3JlcGFpcik7CistfQorLQorLWludCBsaWJjaGVja19jaGVjayhzdHJ1Y3QgY2hlY2tlciAqIGMpCisteworLQlzdHJ1Y3QgcmJkX2NoZWNrZXJfY29udGV4dCAqY3QgPSBjLT5jb250ZXh0OworLQorLQlpZiAoIWN0KQorLQkJcmV0dXJuIFBBVEhfVU5DSEVDS0VEOworLQorLQlpZiAoY3QtPmJsYWNrbGlzdGVkKQorLQkJcmV0dXJuIFBBVEhfRE9XTjsKKy0KKy0JcmV0dXJuIHJiZF9leGVjX2ZuKGMsIHJiZF9jaGVjayk7CistfQorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jaGVja2Vycy9yZGFjLmMgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvcmRhYy5jCitpbmRleCBhNjQzYTRhLi41MTA0ZTRlIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JkYWMuYworKysrIGIvbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JkYWMuYworQEAgLTEzOSwxMSArMTM5LDYgQEAgdm9pZCBsaWJjaGVja19mcmVlIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisgCXJldHVybjsKKyB9CisgCistdm9pZCBsaWJjaGVja19yZXBhaXIgKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXJldHVybjsKKy19CistCisgc3RhdGljIGludAorIGRvX2lucShpbnQgc2dfZmQsIHVuc2lnbmVkIGludCBwZ19vcCwgdm9pZCAqcmVzcCwgaW50IG14X3Jlc3BfbGVuLAorICAgICAgICB1bnNpZ25lZCBpbnQgdGltZW91dCkKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvcmVhZHNlY3RvcjAuYyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9yZWFkc2VjdG9yMC5jCitpbmRleCA4ZmNjYjQ2Li4xYzJhODY4IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2NoZWNrZXJzL3JlYWRzZWN0b3IwLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy9yZWFkc2VjdG9yMC5jCitAQCAtMjMsMTEgKzIzLDYgQEAgdm9pZCBsaWJjaGVja19mcmVlIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisgCXJldHVybjsKKyB9CisgCistdm9pZCBsaWJjaGVja19yZXBhaXIgKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXJldHVybjsKKy19CistCisgaW50IGxpYmNoZWNrX2NoZWNrIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisgeworIAl1bnNpZ25lZCBjaGFyIGJ1Zls0MDk2XTsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvdHVyLmMgYi9saWJtdWx0aXBhdGgvY2hlY2tlcnMvdHVyLmMKK2luZGV4IGViMzM0OGQuLmJmODQ4NmQgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY2hlY2tlcnMvdHVyLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jaGVja2Vycy90dXIuYworQEAgLTExMiwxMSArMTEyLDYgQEAgdm9pZCBsaWJjaGVja19mcmVlIChzdHJ1Y3QgY2hlY2tlciAqIGMpCisgCXJldHVybjsKKyB9CisgCistdm9pZCBsaWJjaGVja19yZXBhaXIgKHN0cnVjdCBjaGVja2VyICogYykKKy17CistCXJldHVybjsKKy19CistCisgI2RlZmluZSBUVVJfTVNHKGZtdCwgYXJncy4uLikJCQkJCVwKKyAJZG8gewkJCQkJCQlcCisgCQljaGFyIG1zZ1tDSEVDS0VSX01TR19MRU5dOwkJCVwKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGlzY292ZXJ5LmMgYi9saWJtdWx0aXBhdGgvZGlzY292ZXJ5LmMKK2luZGV4IDFlZjFkZmEuLjE4YWQwZTIgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZGlzY292ZXJ5LmMKKysrKyBiL2xpYm11bHRpcGF0aC9kaXNjb3ZlcnkuYworQEAgLTEyNDYsMjEgKzEyNDYsNiBAQCBudm1lX3N5c2ZzX3BhdGhpbmZvIChzdHJ1Y3QgcGF0aCAqIHBwLCB2ZWN0b3IgaHd0YWJsZSkKKyB9CisgCisgc3RhdGljIGludAorLXJiZF9zeXNmc19wYXRoaW5mbyAoc3RydWN0IHBhdGggKiBwcCwgdmVjdG9yIGh3dGFibGUpCisteworLQlzcHJpbnRmKHBwLT52ZW5kb3JfaWQsICJDZXBoIik7CistCXNwcmludGYocHAtPnByb2R1Y3RfaWQsICJSQkQiKTsKKy0KKy0JY29uZGxvZygzLCAiJXM6IHZlbmRvciA9ICVzIHByb2R1Y3QgPSAlcyIsIHBwLT5kZXYsIHBwLT52ZW5kb3JfaWQsCistCQlwcC0+cHJvZHVjdF9pZCk7CistCS8qCistCSAqIHNldCB0aGUgaHdlIGNvbmZpZ2xldCBwb2ludGVyCistCSAqLworLQlwcC0+aHdlID0gZmluZF9od2UoaHd0YWJsZSwgcHAtPnZlbmRvcl9pZCwgcHAtPnByb2R1Y3RfaWQsIE5VTEwpOworLQlyZXR1cm4gMDsKKy19CistCistc3RhdGljIGludAorIGNjd19zeXNmc19wYXRoaW5mbyAoc3RydWN0IHBhdGggKiBwcCwgdmVjdG9yIGh3dGFibGUpCisgeworIAlzdHJ1Y3QgdWRldl9kZXZpY2UgKnBhcmVudDsKK0BAIC0xNDg2LDggKzE0NzEsNiBAQCBzeXNmc19wYXRoaW5mbyhzdHJ1Y3QgcGF0aCAqIHBwLCB2ZWN0b3IgaHd0YWJsZSkKKyAJCXBwLT5idXMgPSBTWVNGU19CVVNfQ0NXOworIAlpZiAoIXN0cm5jbXAocHAtPmRldiwic2QiLCAyKSkKKyAJCXBwLT5idXMgPSBTWVNGU19CVVNfU0NTSTsKKy0JaWYgKCFzdHJuY21wKHBwLT5kZXYsInJiZCIsIDMpKQorLQkJcHAtPmJ1cyA9IFNZU0ZTX0JVU19SQkQ7CisgCWlmICghc3RybmNtcChwcC0+ZGV2LCJudm1lIiwgNCkpCisgCQlwcC0+YnVzID0gU1lTRlNfQlVTX05WTUU7CisgCitAQCAtMTUwMiw5ICsxNDg1LDYgQEAgc3lzZnNfcGF0aGluZm8oc3RydWN0IHBhdGggKiBwcCwgdmVjdG9yIGh3dGFibGUpCisgCX0gZWxzZSBpZiAocHAtPmJ1cyA9PSBTWVNGU19CVVNfQ0NJU1MpIHsKKyAJCWlmIChjY2lzc19zeXNmc19wYXRoaW5mbyhwcCwgaHd0YWJsZSkpCisgCQkJcmV0dXJuIDE7CistCX0gZWxzZSBpZiAocHAtPmJ1cyA9PSBTWVNGU19CVVNfUkJEKSB7CistCQlpZiAocmJkX3N5c2ZzX3BhdGhpbmZvKHBwLCBod3RhYmxlKSkKKy0JCQlyZXR1cm4gMTsKKyAJfSBlbHNlIGlmIChwcC0+YnVzID09IFNZU0ZTX0JVU19OVk1FKSB7CisgCQlpZiAobnZtZV9zeXNmc19wYXRoaW5mbyhwcCwgaHd0YWJsZSkpCisgCQkJcmV0dXJuIDE7CitAQCAtMTc1Myw1MyArMTczMyw2IEBAIGdldF91ZGV2X3VpZChzdHJ1Y3QgcGF0aCAqIHBwLCBjaGFyICp1aWRfYXR0cmlidXRlLCBzdHJ1Y3QgdWRldl9kZXZpY2UgKnVkZXYpCisgfQorIAorIHN0YXRpYyBpbnQKKy1nZXRfcmJkX3VpZChzdHJ1Y3QgcGF0aCAqIHBwKQorLXsKKy0Jc3RydWN0IHVkZXZfZGV2aWNlICpyYmRfYnVzX2RldjsKKy0JaW50IHJldCwgcmJkX2J1c19pZDsKKy0JY29uc3QgY2hhciAqcG9vbCwgKmltYWdlLCAqc25hcDsKKy0JY2hhciBzeXNmc19wYXRoW1BBVEhfU0laRV07CistCXVpbnQ2NF90IHNuYXBfaWQsIG1heF9zbmFwX2lkID0gLTM7CistCistCXJldCA9IHNzY2FuZihwcC0+ZGV2LCAicmJkJWQiLCAmcmJkX2J1c19pZCk7CistCWlmIChyZXQgIT0gMSkKKy0JCXJldHVybiAtRUlOVkFMOworLQorLQlzbnByaW50ZihzeXNmc19wYXRoLCBzaXplb2Yoc3lzZnNfcGF0aCksICIvc3lzL2J1cy9yYmQvZGV2aWNlcy8lZCIsCistCQkgcmJkX2J1c19pZCk7CistCXJiZF9idXNfZGV2ID0gdWRldl9kZXZpY2VfbmV3X2Zyb21fc3lzcGF0aCh1ZGV2LCBzeXNmc19wYXRoKTsKKy0JaWYgKCFyYmRfYnVzX2RldikKKy0JCXJldHVybiAtRU5PREVWOworLQorLQlyZXQgPSAtRUlOVkFMOworLQlwb29sID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUocmJkX2J1c19kZXYsICJwb29sX2lkIik7CistCWlmICghcG9vbCkKKy0JCWdvdG8gZnJlZV9kZXY7CistCistCWltYWdlID0gdWRldl9kZXZpY2VfZ2V0X3N5c2F0dHJfdmFsdWUocmJkX2J1c19kZXYsICJpbWFnZV9pZCIpOworLQlpZiAoIWltYWdlKQorLQkJZ290byBmcmVlX2RldjsKKy0KKy0Jc25hcCA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKHJiZF9idXNfZGV2LCAic25hcF9pZCIpOworLQlpZiAoIXNuYXApCistCQlnb3RvIGZyZWVfZGV2OworLQlzbmFwX2lkID0gc3RydG91bGwoc25hcCwgTlVMTCwgMTkpOworLQlpZiAoc25hcF9pZCA+PSBtYXhfc25hcF9pZCkKKy0JCXJldCA9IHNucHJpbnRmKHBwLT53d2lkLCBXV0lEX1NJWkUsICIlcy0lcyIsIHBvb2wsIGltYWdlKTsKKy0JZWxzZQorLQkJcmV0ID0gc25wcmludGYocHAtPnd3aWQsIFdXSURfU0laRSwgIiVzLSVzLSVzIiwgcG9vbCwKKy0JCQkgICAgICAgaW1hZ2UsIHNuYXApOworLQlpZiAocmV0ID49IFdXSURfU0laRSkgeworLQkJY29uZGxvZygwLCAiJXM6IHd3aWQgb3ZlcmZsb3ciLCBwcC0+ZGV2KTsKKy0JCXJldCA9IC1FT1ZFUkZMT1c7CistCX0KKy0KKy1mcmVlX2RldjoKKy0JdWRldl9kZXZpY2VfdW5yZWYocmJkX2J1c19kZXYpOworLQlyZXR1cm4gcmV0OworLX0KKy0KKy1zdGF0aWMgaW50CisgZ2V0X3ZwZF91aWQoc3RydWN0IHBhdGggKiBwcCkKKyB7CisgCXN0cnVjdCB1ZGV2X2RldmljZSAqcGFyZW50ID0gcHAtPnVkZXY7CitAQCAtMTg3Niw5ICsxODA5LDYgQEAgZ2V0X3VpZCAoc3RydWN0IHBhdGggKiBwcCwgaW50IHBhdGhfc3RhdGUsIHN0cnVjdCB1ZGV2X2RldmljZSAqdWRldikKKyAJCX0gZWxzZQorIAkJCWxlbiA9IHN0cmxlbihwcC0+d3dpZCk7CisgCQlvcmlnaW4gPSAiY2FsbG91dCI7CistCX0gZWxzZSBpZiAocHAtPmJ1cyA9PSBTWVNGU19CVVNfUkJEKSB7CistCQlsZW4gPSBnZXRfcmJkX3VpZChwcCk7CistCQlvcmlnaW4gPSAic3lzZnMiOworIAl9IGVsc2UgeworIAorIAkJaWYgKHVkZXYgJiYgcHAtPnVpZF9hdHRyaWJ1dGUpIHsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvaHd0YWJsZS5jIGIvbGlibXVsdGlwYXRoL2h3dGFibGUuYworaW5kZXggMTQ4ZjBiYS4uZDUyOWJhZSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9od3RhYmxlLmMKKysrKyBiL2xpYm11bHRpcGF0aC9od3RhYmxlLmMKK0BAIC0xMDAwLDE4ICsxMDAwLDYgQEAgc3RhdGljIHN0cnVjdCBod2VudHJ5IGRlZmF1bHRfaHdbXSA9IHsKKyAJCS5wcmlvX25hbWUgICAgID0gUFJJT19BTFVBLAorIAl9LAorIAkvKgorLQkgKiBSZWQgSGF0CistCSAqCistCSAqIE1haW50YWluZXI6IE1pa2UgQ2hyaXN0aWUKKy0JICogTWFpbDogbWNocmlzdGlAcmVkaGF0LmNvbQorLQkgKi8KKy0JeworLQkJLnZlbmRvciAgICAgICAgPSAiQ2VwaCIsCistCQkucHJvZHVjdCAgICAgICA9ICJSQkQiLAorLQkJLmNoZWNrZXJfbmFtZSAgPSBSQkQsCistCQkuZGVmZXJyZWRfcmVtb3ZlID0gREVGRVJSRURfUkVNT1ZFX09OLAorLQl9LAorLQkvKgorIAkgKiBLb3ZlCisgCSAqLworIAl7CitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQoraW5kZXggMGMxZjE3NC4uMzFmNDU4NSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorQEAgLTQ4Miw5ICs0ODIsNiBAQCBDaGVjayB0aGUgcGF0aCBzdGF0ZSBmb3IgSFAvQ09NUEFRIFNtYXJ0IEFycmF5KENDSVNTKSBjb250cm9sbGVycy4KKyAuSSBub25lCisgRG8gbm90IGNoZWNrIHRoZSBkZXZpY2UsIGZhbGxiYWNrIHRvIHVzZSB0aGUgdmFsdWVzIHJldHJpZXZlZCBmcm9tIHN5c2ZzCisgLlRQCistLkkgcmJkCistQ2hlY2sgaWYgdGhlIHBhdGggaXMgaW4gdGhlIENlcGggYmxhY2tsaXN0IGFuZCByZW1hcCB0aGUgcGF0aCBpZiBpdCBpcy4KKy0uVFAKKyBUaGUgZGVmYXVsdCBpczogXGZCdHVyXGZSCisgLlJFCisgLgorZGlmZiAtLWdpdCBhL211bHRpcGF0aGQvbWFpbi5jIGIvbXVsdGlwYXRoZC9tYWluLmMKK2luZGV4IDBkYjg4ZWUuLmQ0MGM0MTYgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL21haW4uYworKysrIGIvbXVsdGlwYXRoZC9tYWluLmMKK0BAIC0xNzgzLDE1ICsxNzgzLDYgQEAgaW50IHVwZGF0ZV9wYXRoX2dyb3VwcyhzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIHN0cnVjdCB2ZWN0b3JzICp2ZWNzLCBpbnQgcmVmcmVzaCkKKyAJcmV0dXJuIDA7CisgfQorIAorLXZvaWQgcmVwYWlyX3BhdGgoc3RydWN0IHBhdGggKiBwcCkKKy17CistCWlmIChwcC0+c3RhdGUgIT0gUEFUSF9ET1dOKQorLQkJcmV0dXJuOworLQorLQljaGVja2VyX3JlcGFpcigmcHAtPmNoZWNrZXIpOworLQlMT0dfTVNHKDEsIGNoZWNrZXJfbWVzc2FnZSgmcHAtPmNoZWNrZXIpKTsKKy19CistCisgLyoKKyAgKiBSZXR1cm5zICcxJyBpZiB0aGUgcGF0aCBoYXMgYmVlbiBjaGVja2VkLCAnLTEnIGlmIGl0IHdhcyBibGFja2xpc3RlZAorICAqIGFuZCAnMCcgb3RoZXJ3aXNlCitAQCAtMTk3Miw3ICsxOTYzLDYgQEAgY2hlY2tfcGF0aCAoc3RydWN0IHZlY3RvcnMgKiB2ZWNzLCBzdHJ1Y3QgcGF0aCAqIHBwLCBpbnQgdGlja3MpCisgCQkJcHAtPm1wcC0+ZmFpbGJhY2tfdGljayA9IDA7CisgCisgCQkJcHAtPm1wcC0+c3RhdF9wYXRoX2ZhaWx1cmVzKys7CistCQkJcmVwYWlyX3BhdGgocHApOworIAkJCXJldHVybiAxOworIAkJfQorIAorQEAgLTIwNzEsNyArMjA2MSw2IEBAIGNoZWNrX3BhdGggKHN0cnVjdCB2ZWN0b3JzICogdmVjcywgc3RydWN0IHBhdGggKiBwcCwgaW50IHRpY2tzKQorIAl9CisgCisgCXBwLT5zdGF0ZSA9IG5ld3N0YXRlOworLQlyZXBhaXJfcGF0aChwcCk7CisgCisgCWlmIChwcC0+bXBwLT53YWl0X2Zvcl91ZGV2KQorIAkJcmV0dXJuIDE7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE3LW1wYXRocGVyc2lzdC1maXgtYXB0cGwtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE3LW1wYXRocGVyc2lzdC1maXgtYXB0cGwtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOThkMzEwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTctbXBhdGhwZXJzaXN0LWZpeC1hcHRwbC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsNTQzIEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDQgSnVuIDIwMTggMjI6MDQ6NDQgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gbXBhdGhwZXJzaXN0OiBmaXggYXB0cGwgc3VwcG9ydAorCitUaGUgIkFjdGl2ZSBQZXJzaXN0IFRocm91Z2ggUG93ZXIgTG9zcyIgZmxhZyBtdXN0IGJlIHNldCB3aGVuZXZlciBhIGtleQoraXMgcmVnaXN0ZXJlZC4gSG93ZXZlciwgdGhlcmUgaXMgbm8gd2F5IGZvciBtdWx0aXBhdGhkIHRvIGtub3cgaWYgdGhpcword2FzIHNldCBieSBtcGF0aHBlcnNpc3QuIFRoZSByZXN1bHQgaXMgdGhhdCBpZiBhIHBhdGggZ29lcyBkb3duIGFuZAorY29tZXMgYmFjayB1cCAob3IgaWYgaXQgd2Fzbid0IHVwIHdoZW4gbXBhdGhwZXJzaXN0IHdhcyBmaXJzdCBydW4pCittdWx0aXBhdGhkIHdpbGwgY2xlYXIgdGhlIGFwdHBsIGZsYWcgd2hlbiBpdCByZXJlZ2lzdGVycyB0aGUga2V5IG9uIGl0LgorCitUbyBmaXggdGhpcywgbXVsdGlwYXRoLmNvbmYgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgIjphcHRwbCIgYXBwZW5kZWQKK29uIHRoZSByZXNlcnZhdGlvbl9rZXkgdmFsdWUuIElmIHRoaXMgaXMgYWRkZWQgdG8gdGhlIHJlc2VydmF0aW9uX2tleQorbXVsdGlwYXRoZCB3aWxsIHNldCB0aGUgYXB0cGwgZmxhZyB3aGVuIGl0IHJlcmVnaXN0ZXJzIHRoZSBrZXkuIElmCityZXNlcnZhdGlvbl9rZXkgaXMgc2V0IHRvICJmaWxlIiwgdGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgdHJhY2tlZAoraW4gdGhlIC9ldGMvbXVsdGlwYXRoL3Bya2V5cyBmaWxlLgorCitUbyB0cmFjayB0aGlzIGZsYWcgaW4gdGhlIHBya2V5cyBmaWxlLCB3aXRob3V0IGNoYW5naW5nIHRoZSBmb3JtYXQKK0kndmUgbWFkZSAiMHg8a2V5PiIgc3RhbmQgZm9yIG5vbi1hcHRwbCBrZXlzLCBhbmQgIjBYPGtleT4iIHN0YW5kCitmb3IgYXB0cGwga2V5cy4gU2luY2UgcHJldmlvdXNseSwgYWxsIGtleXMgdXNlZCBhIGxvd2VyLWNhc2UgeCwgdGhpcword2lsbCBkZWZhdWx0IHRvIHRoZSBjdXJyZW50IGJlaGF2aW9yIGZvciBleGlzdGluZyBrZXlzLiBPYnZpb3VzbHksIHRoZQorbmV4dCB0aW1lIG1wYXRocGVyc2lzdCBpcyBydW4sIHRoaXMgd2lsbCBiZSBjaGFuZ2VkIGlmIC0tcGFyYW0tYXB0cGwKK2lzIHVzZWQuICBTaW5jZSB0aGVyZSBhcmUgbm8gbW9yZSBmbGFncyB0aGF0IGFyZSBpbiBzZ19wZXJzaXN0IHRoYXQKK211bHRpcGF0aGQgbmVlZHMgdG8gY2FyZSBhYm91dCBpbiBtcGF0aHBlcnNpc3QsIHRoZXJlIHNob3VsZG4ndCBuZWVkCit0byBiZSBhbnkgbW9yZSBmbGFncyBhZGRlZCB0byB0aGUgcHJrZXlzIGZpbGUuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm1wYXRocGVyc2lzdC9tcGF0aF9wZXJzaXN0LmMgIHwgIDMgKystCisgbGlibXBhdGhwZXJzaXN0L21wYXRoX3VwZGF0ZXByLmMgfCAxMSArKysrKysrLS0tLQorIGxpYm1wYXRocGVyc2lzdC9tcGF0aHByLmggICAgICAgIHwgIDMgKystCisgbGlibXVsdGlwYXRoL01ha2VmaWxlICAgICAgICAgICAgfCAgMiArLQorIGxpYm11bHRpcGF0aC9jb25maWcuaCAgICAgICAgICAgIHwgIDIgKysKKyBsaWJtdWx0aXBhdGgvZGljdC5jICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKystLS0tCisgbGlibXVsdGlwYXRoL2RpY3QuaCAgICAgICAgICAgICAgfCAgMyArKy0KKyBsaWJtdWx0aXBhdGgvcHJrZXkuYyAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIGxpYm11bHRpcGF0aC9wcmtleS5oICAgICAgICAgICAgIHwgIDYgKysrKy0tCisgbGlibXVsdGlwYXRoL3Byb3BzZWwuYyAgICAgICAgICAgfCAgNiArKysrLS0KKyBsaWJtdWx0aXBhdGgvc3RydWN0cy5oICAgICAgICAgICB8ICAxICsKKyBsaWJtdWx0aXBhdGgvdXRpbC5jICAgICAgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyBsaWJtdWx0aXBhdGgvdXRpbC5oICAgICAgICAgICAgICB8ICAxICsKKyBtdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNSAgICAgICB8ICA3ICsrKysrLS0KKyBtdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jICAgICAgICB8IDE1ICsrKysrKysrKystLS0tLQorIG11bHRpcGF0aGQvbWFpbi5jICAgICAgICAgICAgICAgIHwgIDEgKworIDE2IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm1wYXRocGVyc2lzdC9tcGF0aF9wZXJzaXN0LmMgYi9saWJtcGF0aHBlcnNpc3QvbXBhdGhfcGVyc2lzdC5jCitpbmRleCBjYTkxYzU1Li42ZTllNjdmIDEwMDY0NAorLS0tIGEvbGlibXBhdGhwZXJzaXN0L21wYXRoX3BlcnNpc3QuYworKysrIGIvbGlibXBhdGhwZXJzaXN0L21wYXRoX3BlcnNpc3QuYworQEAgLTM0NCw3ICszNDQsOCBAQCBpbnQgbXBhdGhfcGVyc2lzdGVudF9yZXNlcnZlX291dCAoIGludCBmZCwgaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKyAJICAgICAgcnFfc2VydmFjdCA9PSBNUEFUSF9QUk9VVF9SRUdfU0EpIHx8CisgCSAgICAgcnFfc2VydmFjdCA9PSBNUEFUSF9QUk9VVF9SRUdfSUdOX1NBKSkgeworIAkJbWVtY3B5KCZtcHAtPnJlc2VydmF0aW9uX2tleSwgcGFyYW1wLT5zYV9rZXksIDgpOworLQkJaWYgKHVwZGF0ZV9wcmtleShhbGlhcywgZ2V0X2JlNjQobXBwLT5yZXNlcnZhdGlvbl9rZXkpKSkgeworKwkJaWYgKHVwZGF0ZV9wcmtleV9mbGFncyhhbGlhcywgZ2V0X2JlNjQobXBwLT5yZXNlcnZhdGlvbl9rZXkpLAorKwkJCQkgICAgICAgcGFyYW1wLT5zYV9mbGFncykpIHsKKyAJCQljb25kbG9nKDAsICIlczogZmFpbGVkIHRvIHNldCBwcmtleSBmb3IgbXVsdGlwYXRoZC4iLAorIAkJCQlhbGlhcyk7CisgCQkJcmV0ID0gTVBBVEhfUFJfRE1NUF9FUlJPUjsKK2RpZmYgLS1naXQgYS9saWJtcGF0aHBlcnNpc3QvbXBhdGhfdXBkYXRlcHIuYyBiL2xpYm1wYXRocGVyc2lzdC9tcGF0aF91cGRhdGVwci5jCitpbmRleCA4MDYzZTkwLi4wYWNhMjhlIDEwMDY0NAorLS0tIGEvbGlibXBhdGhwZXJzaXN0L21wYXRoX3VwZGF0ZXByLmMKKysrKyBiL2xpYm1wYXRocGVyc2lzdC9tcGF0aF91cGRhdGVwci5jCitAQCAtMSw3ICsxLDUgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPGVycm5vLmg+CistCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KK0BAIC0xMSw2ICs5LDggQEAKKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bGlidWRldi5oPgorKyNpbmNsdWRlIDxtcGF0aF9wZXJzaXN0Lmg+CisgI2luY2x1ZGUgImRlYnVnLmgiCisgI2luY2x1ZGUgIm1wYXRoX2NtZC5oIgorICNpbmNsdWRlICJ1eHNvY2suaCIKK0BAIC01OSwxMSArNTksMTQgQEAgaW50IHVwZGF0ZV9wcmZsYWcoY2hhciAqbWFwbmFtZSwgaW50IHNldCkgeworIAlyZXR1cm4gZG9fdXBkYXRlX3ByKG1hcG5hbWUsIChzZXQpPyAic2V0cHJzdGF0dXMiIDogInVuc2V0cHJzdGF0dXMiKTsKKyB9CisgCistaW50IHVwZGF0ZV9wcmtleShjaGFyICptYXBuYW1lLCB1aW50NjRfdCBwcmtleSkgeworK2ludCB1cGRhdGVfcHJrZXlfZmxhZ3MoY2hhciAqbWFwbmFtZSwgdWludDY0X3QgcHJrZXksIHVpbnQ4X3Qgc2FfZmxhZ3MpIHsKKyAJY2hhciBzdHJbMjU2XTsKKysJY2hhciAqZmxhZ3N0ciA9ICIiOworIAorKwlpZiAoc2FfZmxhZ3MgJiBNUEFUSF9GX0FQVFBMX01BU0spCisrCQlmbGFnc3RyID0gIjphcHRwbCI7CisgCWlmIChwcmtleSkKKy0JCXNwcmludGYoc3RyLCAic2V0cHJrZXkga2V5ICUiIFBSSXg2NCwgcHJrZXkpOworKwkJc3ByaW50ZihzdHIsICJzZXRwcmtleSBrZXkgJSIgUFJJeDY0ICIlcyIsIHBya2V5LCBmbGFnc3RyKTsKKyAJZWxzZQorIAkJc3ByaW50ZihzdHIsICJ1bnNldHBya2V5Iik7CisgCXJldHVybiBkb191cGRhdGVfcHIobWFwbmFtZSwgc3RyKTsKK2RpZmYgLS1naXQgYS9saWJtcGF0aHBlcnNpc3QvbXBhdGhwci5oIGIvbGlibXBhdGhwZXJzaXN0L21wYXRocHIuaAoraW5kZXggNzJmZWI2MC4uNWVhOGNkNiAxMDA2NDQKKy0tLSBhL2xpYm1wYXRocGVyc2lzdC9tcGF0aHByLmgKKysrKyBiL2xpYm1wYXRocGVyc2lzdC9tcGF0aHByLmgKK0BAIC00Niw3ICs0Niw4IEBAIGludCBzZW5kX3Byb3V0X2FjdGl2ZXBhdGgoY2hhciAqIGRldiwgaW50IHJxX3NlcnZhY3QsIGludCBycV9zY29wZSwKKyAJdW5zaWduZWQgaW50IHJxX3R5cGUsICAgc3RydWN0IHByb3V0X3BhcmFtX2Rlc2NyaXB0b3IgKiBwYXJhbXAsIGludCBub2lzeSk7CisgCisgaW50IHVwZGF0ZV9wcmZsYWcoY2hhciAqbWFwbmFtZSwgaW50IHNldCk7CistaW50IHVwZGF0ZV9wcmtleShjaGFyICptYXBuYW1lLCB1aW50NjRfdCBwcmtleSk7CisraW50IHVwZGF0ZV9wcmtleV9mbGFncyhjaGFyICptYXBuYW1lLCB1aW50NjRfdCBwcmtleSwgdWludDhfdCBzYV9mbGFncyk7CisrI2RlZmluZSB1cGRhdGVfcHJrZXkobWFwbmFtZSwgcHJrZXkpIHVwZGF0ZV9wcmtleV9mbGFncyhtYXBuYW1lLCBwcmtleSwgMCkKKyB2b2lkICogbXBhdGhfYWxsb2NfcHJpbl9yZXNwb25zZShpbnQgcHJpbl9zYSk7CisgaW50IHVwZGF0ZV9tYXBfcHIoc3RydWN0IG11bHRpcGF0aCAqbXBwKTsKKyAKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKK2luZGV4IGY1MTc4NmQuLjMzZjUyNjkgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvTWFrZWZpbGUKKysrKyBiL2xpYm11bHRpcGF0aC9NYWtlZmlsZQorQEAgLTcsNyArNyw3IEBAIFNPTkFNRSA9IDAKKyBERVZMSUIgPSBsaWJtdWx0aXBhdGguc28KKyBMSUJTID0gJChERVZMSUIpLiQoU09OQU1FKQorIAorLUNGTEFHUyArPSAkKExJQl9DRkxBR1MpIC1JJChtcGF0aGNtZGRpcikKKytDRkxBR1MgKz0gJChMSUJfQ0ZMQUdTKSAtSSQobXBhdGhjbWRkaXIpIC1JJChtcGF0aHBlcnNpc3RkaXIpCisgCisgTElCREVQUyArPSAtbHB0aHJlYWQgLWxkbCAtbGRldm1hcHBlciAtbHVkZXYgLUwkKG1wYXRoY21kZGlyKSAtbG1wYXRoY21kIC1sdXJjdSAtbGFpbworIAorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuaCBiL2xpYm11bHRpcGF0aC9jb25maWcuaAoraW5kZXggMWJmNzA4YS4uZmNiZTNmYyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuaAorKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5oCitAQCAtOTgsNiArOTgsNyBAQCBzdHJ1Y3QgbXBlbnRyeSB7CisgCWNoYXIgKiBwcmlvX2FyZ3M7CisgCWludCBwcmtleV9zb3VyY2U7CisgCXN0cnVjdCBiZTY0IHJlc2VydmF0aW9uX2tleTsKKysJdWludDhfdCBzYV9mbGFnczsKKyAJaW50IHBncG9saWN5OworIAlpbnQgcGdmYWlsYmFjazsKKyAJaW50IHJyX3dlaWdodDsKK0BAIC0xOTcsNiArMTk4LDcgQEAgc3RydWN0IGNvbmZpZyB7CisgCWludCBwcmtleV9zb3VyY2U7CisgCWludCBhbGxfdGdfcHQ7CisgCXN0cnVjdCBiZTY0IHJlc2VydmF0aW9uX2tleTsKKysJdWludDhfdCBzYV9mbGFnczsKKyAKKyAJdmVjdG9yIGtleXdvcmRzOworIAl2ZWN0b3IgbXB0YWJsZTsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGljdC5jIGIvbGlibXVsdGlwYXRoL2RpY3QuYworaW5kZXggMjU1N2I4YS4uN2FkMGY1YSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9kaWN0LmMKKysrKyBiL2xpYm11bHRpcGF0aC9kaWN0LmMKK0BAIC0yMiw2ICsyMiw4IEBACisgI2luY2x1ZGUgInV0aWwuaCIKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysjaW5jbHVkZSA8bGlidWRldi5oPgorKyNpbmNsdWRlIDxtcGF0aF9wZXJzaXN0Lmg+CisgI2luY2x1ZGUgIm1wYXRoX2NtZC5oIgorICNpbmNsdWRlICJkaWN0LmgiCisgCitAQCAtMTAxMiwxMCArMTAxNCwxMiBAQCBzbnByaW50X2RlZl9sb2dfY2hlY2tlcl9lcnIgKHN0cnVjdCBjb25maWcgKmNvbmYsIGNoYXIgKiBidWZmLCBpbnQgbGVuLAorIH0KKyAKKyBzdGF0aWMgaW50Cistc2V0X3Jlc2VydmF0aW9uX2tleSh2ZWN0b3Igc3RydmVjLCBzdHJ1Y3QgYmU2NCAqYmU2NF9wdHIsIGludCAqc291cmNlX3B0cikKKytzZXRfcmVzZXJ2YXRpb25fa2V5KHZlY3RvciBzdHJ2ZWMsIHN0cnVjdCBiZTY0ICpiZTY0X3B0ciwgdWludDhfdCAqZmxhZ3NfcHRyLAorKwkJICAgIGludCAqc291cmNlX3B0cikKKyB7CisgCWNoYXIgKmJ1ZmY7CisgCXVpbnQ2NF90IHBya2V5OworKwl1aW50OF90IHNhX2ZsYWdzOworIAorIAlidWZmID0gc2V0X3ZhbHVlKHN0cnZlYyk7CisgCWlmICghYnVmZikKK0BAIC0xMDIzLDM1ICsxMDI3LDQzIEBAIHNldF9yZXNlcnZhdGlvbl9rZXkodmVjdG9yIHN0cnZlYywgc3RydWN0IGJlNjQgKmJlNjRfcHRyLCBpbnQgKnNvdXJjZV9wdHIpCisgCisgCWlmIChzdHJjbXAoYnVmZiwgImZpbGUiKSA9PSAwKSB7CisgCQkqc291cmNlX3B0ciA9IFBSS0VZX1NPVVJDRV9GSUxFOworKwkJKmZsYWdzX3B0ciA9IDA7CisgCQlwdXRfYmU2NCgqYmU2NF9wdHIsIDApOworIAkJRlJFRShidWZmKTsKKyAJCXJldHVybiAwOworIAl9CisgCistCWlmIChwYXJzZV9wcmtleShidWZmLCAmcHJrZXkpICE9IDApIHsKKysJaWYgKHBhcnNlX3Bya2V5X2ZsYWdzKGJ1ZmYsICZwcmtleSwgJnNhX2ZsYWdzKSAhPSAwKSB7CisgCQlGUkVFKGJ1ZmYpOworIAkJcmV0dXJuIDE7CisgCX0KKyAJKnNvdXJjZV9wdHIgPSBQUktFWV9TT1VSQ0VfQ09ORjsKKysJKmZsYWdzX3B0ciA9IHNhX2ZsYWdzOworIAlwdXRfYmU2NCgqYmU2NF9wdHIsIHBya2V5KTsKKyAJRlJFRShidWZmKTsKKyAJcmV0dXJuIDA7CisgfQorIAorIGludAorLXByaW50X3Jlc2VydmF0aW9uX2tleShjaGFyICogYnVmZiwgaW50IGxlbiwgc3RydWN0IGJlNjQga2V5LCBpbnQgc291cmNlKQorK3ByaW50X3Jlc2VydmF0aW9uX2tleShjaGFyICogYnVmZiwgaW50IGxlbiwgc3RydWN0IGJlNjQga2V5LCB1aW50OF90IGZsYWdzLAorKwkJICAgICAgaW50IHNvdXJjZSkKKyB7CisrCWNoYXIgKmZsYWdzdHIgPSAiIjsKKyAJaWYgKHNvdXJjZSA9PSBQUktFWV9TT1VSQ0VfTk9ORSkKKyAJCXJldHVybiAwOworIAlpZiAoc291cmNlID09IFBSS0VZX1NPVVJDRV9GSUxFKQorIAkJcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIGxlbiwgImZpbGUiKTsKKy0JcmV0dXJuIHNucHJpbnRmKGJ1ZmYsIGxlbiwgIjB4JSIgUFJJeDY0LCBnZXRfYmU2NChrZXkpKTsKKysJaWYgKGZsYWdzICYgTVBBVEhfRl9BUFRQTF9NQVNLKQorKwkJZmxhZ3N0ciA9ICI6YXB0cGwiOworKwlyZXR1cm4gc25wcmludGYoYnVmZiwgbGVuLCAiMHglIiBQUkl4NjQgIiVzIiwgZ2V0X2JlNjQoa2V5KSwKKysJCQlmbGFnc3RyKTsKKyB9CisgCisgc3RhdGljIGludAorIGRlZl9yZXNlcnZhdGlvbl9rZXlfaGFuZGxlcihzdHJ1Y3QgY29uZmlnICpjb25mLCB2ZWN0b3Igc3RydmVjKQorIHsKKyAJcmV0dXJuIHNldF9yZXNlcnZhdGlvbl9rZXkoc3RydmVjLCAmY29uZi0+cmVzZXJ2YXRpb25fa2V5LAorKwkJCQkgICAmY29uZi0+c2FfZmxhZ3MsCisgCQkJCSAgICZjb25mLT5wcmtleV9zb3VyY2UpOworIH0KKyAKK0BAIC0xMDYwLDYgKzEwNzIsNyBAQCBzbnByaW50X2RlZl9yZXNlcnZhdGlvbl9rZXkgKHN0cnVjdCBjb25maWcgKmNvbmYsIGNoYXIgKiBidWZmLCBpbnQgbGVuLAorIAkJCSAgICAgY29uc3Qgdm9pZCAqIGRhdGEpCisgeworIAlyZXR1cm4gcHJpbnRfcmVzZXJ2YXRpb25fa2V5KGJ1ZmYsIGxlbiwgY29uZi0+cmVzZXJ2YXRpb25fa2V5LAorKwkJCQkgICAgIGNvbmYtPnNhX2ZsYWdzLAorIAkJCQkgICAgIGNvbmYtPnBya2V5X3NvdXJjZSk7CisgfQorIAorQEAgLTEwNzAsNiArMTA4Myw3IEBAIG1wX3Jlc2VydmF0aW9uX2tleV9oYW5kbGVyKHN0cnVjdCBjb25maWcgKmNvbmYsIHZlY3RvciBzdHJ2ZWMpCisgCWlmICghbXBlKQorIAkJcmV0dXJuIDE7CisgCXJldHVybiBzZXRfcmVzZXJ2YXRpb25fa2V5KHN0cnZlYywgJm1wZS0+cmVzZXJ2YXRpb25fa2V5LAorKwkJCQkgICAmbXBlLT5zYV9mbGFncywKKyAJCQkJICAgJm1wZS0+cHJrZXlfc291cmNlKTsKKyB9CisgCitAQCAtMTA3OSw2ICsxMDkzLDcgQEAgc25wcmludF9tcF9yZXNlcnZhdGlvbl9rZXkgKHN0cnVjdCBjb25maWcgKmNvbmYsIGNoYXIgKiBidWZmLCBpbnQgbGVuLAorIHsKKyAJY29uc3Qgc3RydWN0IG1wZW50cnkgKiBtcGUgPSAoY29uc3Qgc3RydWN0IG1wZW50cnkgKilkYXRhOworIAlyZXR1cm4gcHJpbnRfcmVzZXJ2YXRpb25fa2V5KGJ1ZmYsIGxlbiwgbXBlLT5yZXNlcnZhdGlvbl9rZXksCisrCQkJCSAgICAgbXBlLT5zYV9mbGFncywKKyAJCQkJICAgICBtcGUtPnBya2V5X3NvdXJjZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9kaWN0LmggYi9saWJtdWx0aXBhdGgvZGljdC5oCitpbmRleCA3NTY0ODkyLi5hNDBhYzY2IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2RpY3QuaAorKysrIGIvbGlibXVsdGlwYXRoL2RpY3QuaAorQEAgLTE1LDYgKzE1LDcgQEAgaW50IHByaW50X3BncG9saWN5KGNoYXIgKmJ1ZmYsIGludCBsZW4sIGxvbmcgdik7CisgaW50IHByaW50X25vX3BhdGhfcmV0cnkoY2hhciAqYnVmZiwgaW50IGxlbiwgbG9uZyB2KTsKKyBpbnQgcHJpbnRfZmFzdF9pb19mYWlsKGNoYXIgKmJ1ZmYsIGludCBsZW4sIGxvbmcgdik7CisgaW50IHByaW50X2Rldl9sb3NzKGNoYXIgKmJ1ZmYsIGludCBsZW4sIHVuc2lnbmVkIGxvbmcgdik7CistaW50IHByaW50X3Jlc2VydmF0aW9uX2tleShjaGFyICogYnVmZiwgaW50IGxlbiwgc3RydWN0IGJlNjQga2V5LCBpbnQgc291cmNlKTsKKytpbnQgcHJpbnRfcmVzZXJ2YXRpb25fa2V5KGNoYXIgKiBidWZmLCBpbnQgbGVuLCBzdHJ1Y3QgYmU2NCBrZXksIHVpbnQ4X3QKKysJCQkgIGZsYWdzLCBpbnQgc291cmNlKTsKKyBpbnQgcHJpbnRfb2ZmX2ludF91bmRlZihjaGFyICpidWZmLCBpbnQgbGVuLCBsb25nIHYpOworICNlbmRpZiAvKiBfRElDVF9IICovCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL3Bya2V5LmMgYi9saWJtdWx0aXBhdGgvcHJrZXkuYworaW5kZXggODliOTBlZC4uZDY0NWY4MSAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9wcmtleS5jCisrKysgYi9saWJtdWx0aXBhdGgvcHJrZXkuYworQEAgLTExLDYgKzExLDggQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxpYnVkZXYuaD4KKysjaW5jbHVkZSA8bXBhdGhfcGVyc2lzdC5oPgorIAorICNkZWZpbmUgUFJLRVlfUkVBRCAwCisgI2RlZmluZSBQUktFWV9XUklURSAxCitAQCAtMTA4LDcgKzExMCw4IEBAIHN0YXRpYyBpbnQgZG9fcHJrZXkoaW50IGZkLCBjaGFyICp3d2lkLCBjaGFyICprZXlzdHIsIGludCBjbWQpCisgCXJldHVybiAwOworIH0KKyAKKy1pbnQgZ2V0X3Bya2V5KHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgdWludDY0X3QgKnBya2V5KQorK2ludCBnZXRfcHJrZXkoc3RydWN0IGNvbmZpZyAqY29uZiwgc3RydWN0IG11bHRpcGF0aCAqbXBwLCB1aW50NjRfdCAqcHJrZXksCisrCSAgICAgIHVpbnQ4X3QgKnNhX2ZsYWdzKQorIHsKKyAJaW50IGZkOworIAlpbnQgdW51c2VkOworQEAgLTEyNCw2ICsxMjcsOSBAQCBpbnQgZ2V0X3Bya2V5KHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgdWludDY0X3QgKnBya2V5KQorIAlyZXQgPSBkb19wcmtleShmZCwgbXBwLT53d2lkLCBrZXlzdHIsIFBSS0VZX1JFQUQpOworIAlpZiAocmV0KQorIAkJZ290byBvdXRfZmlsZTsKKysJKnNhX2ZsYWdzID0gMDsKKysJaWYgKHN0cmNocihrZXlzdHIsICdYJykpCisrCQkqc2FfZmxhZ3MgPSBNUEFUSF9GX0FQVFBMX01BU0s7CisgCXJldCA9ICEhcGFyc2VfcHJrZXkoa2V5c3RyLCBwcmtleSk7Cisgb3V0X2ZpbGU6CisgCWNsb3NlKGZkKTsKK0BAIC0xMzEsNyArMTM3LDggQEAgb3V0OgorIAlyZXR1cm4gcmV0OworIH0KKyAKKy1pbnQgc2V0X3Bya2V5KHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgdWludDY0X3QgcHJrZXkpCisraW50IHNldF9wcmtleShzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIHVpbnQ2NF90IHBya2V5LAorKwkgICAgICB1aW50OF90IHNhX2ZsYWdzKQorIHsKKyAJaW50IGZkOworIAlpbnQgY2FuX3dyaXRlID0gMTsKK0BAIC0xNDEsNiArMTQ4LDEyIEBAIGludCBzZXRfcHJrZXkoc3RydWN0IGNvbmZpZyAqY29uZiwgc3RydWN0IG11bHRpcGF0aCAqbXBwLCB1aW50NjRfdCBwcmtleSkKKyAJaWYgKCFzdHJsZW4obXBwLT53d2lkKSkKKyAJCWdvdG8gb3V0OworIAorKwlpZiAoc2FfZmxhZ3MgJiB+TVBBVEhfRl9BUFRQTF9NQVNLKSB7CisrCQljb25kbG9nKDAsICJ1bnN1cHBvcnRlZCBwciBmbGFncywgMHgleCIsCisrCQkJc2FfZmxhZ3MgJiB+TVBBVEhfRl9BUFRQTF9NQVNLKTsKKysJCXNhX2ZsYWdzICY9IE1QQVRIX0ZfQVBUUExfTUFTSzsKKysJfQorKworIAlmZCA9IG9wZW5fZmlsZShjb25mLT5wcmtleXNfZmlsZSwgJmNhbl93cml0ZSwgUFJLRVlTX0ZJTEVfSEVBREVSKTsKKyAJaWYgKGZkIDwgMCkKKyAJCWdvdG8gb3V0OworQEAgLTE0OSw3ICsxNjIsMTUgQEAgaW50IHNldF9wcmtleShzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIHVpbnQ2NF90IHBya2V5KQorIAkJZ290byBvdXRfZmlsZTsKKyAJfQorIAlpZiAocHJrZXkpIHsKKy0JCXNucHJpbnRmKGtleXN0ciwgUFJLRVlfU0laRSwgIjB4JTAxNiIgUFJJeDY0LCBwcmtleSk7CisrCQkvKiB1c2luZyB0aGUgY2FwaXRhbGl6YXRpb24gb2YgdGhlICd4JyBpcyBhIGhhY2ssIGJ1dAorKwkJICogaXQncyB1bmxpa2VseSB0aGF0IG1wYXRoX3BlcnNpc3Qgd2lsbCBzdXBwb3J0IG1vcmUgb3B0aW9ucworKwkJICogc2luY2Ugc2dfcGVyc2lzdCBkb2Vzbid0LCBhbmQgdGhpcyBsZXRzIHVzIGtlZXAgdGhlCisrCQkgKiBzYW1lIGZpbGUgZm9ybWF0IGFzIGJlZm9yZSBpbnN0ZWFkIG9mIG5lZWRpbmcgdG8gY2hhbmdlCisrCQkgKiB0aGUgZm9ybWF0IG9mIHRoZSBwcmtleXMgZmlsZSAqLworKwkJaWYgKHNhX2ZsYWdzKQorKwkJCXNucHJpbnRmKGtleXN0ciwgUFJLRVlfU0laRSwgIjBYJTAxNiIgUFJJeDY0LCBwcmtleSk7CisrCQllbHNlCisrCQkJc25wcmludGYoa2V5c3RyLCBQUktFWV9TSVpFLCAiMHglMDE2IiBQUkl4NjQsIHBya2V5KTsKKyAJCWtleXN0cltQUktFWV9TSVpFIC0gMV0gPSAnXDAnOworIAkJcmV0ID0gZG9fcHJrZXkoZmQsIG1wcC0+d3dpZCwga2V5c3RyLCBQUktFWV9XUklURSk7CisgCX0KK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcHJrZXkuaCBiL2xpYm11bHRpcGF0aC9wcmtleS5oCitpbmRleCA0MDI4ZTcwLi42NzM5MTkxIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3Bya2V5LmgKKysrKyBiL2xpYm11bHRpcGF0aC9wcmtleS5oCitAQCAtMTMsNyArMTMsOSBAQAorICIjIHBya2V5IHd3aWRcbiIgXAorICIjXG4iCisgCistaW50IHNldF9wcmtleShzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICptcHAsIHVpbnQ2NF90IHBya2V5KTsKKy1pbnQgZ2V0X3Bya2V5KHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgdWludDY0X3QgKnBya2V5KTsKKytpbnQgc2V0X3Bya2V5KHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wcCwgdWludDY0X3QgcHJrZXksCisrCSAgICAgIHVpbnQ4X3Qgc2FfZmxhZ3MpOworK2ludCBnZXRfcHJrZXkoc3RydWN0IGNvbmZpZyAqY29uZiwgc3RydWN0IG11bHRpcGF0aCAqbXBwLCB1aW50NjRfdCAqcHJrZXksCisrCSAgICAgIHVpbnQ4X3QgKnNhX2ZsYWdzKTsKKyAKKyAjZW5kaWYgLyogX1BSS0VZX0ggKi8KK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcHJvcHNlbC5jIGIvbGlibXVsdGlwYXRoL3Byb3BzZWwuYworaW5kZXggOWNhMTM1NS4uNjJhNjg5MyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9wcm9wc2VsLmMKKysrKyBiL2xpYm11bHRpcGF0aC9wcm9wc2VsLmMKK0BAIC0xMDYsNiArMTA2LDcgQEAgZG8gewkJCQkJCQkJCVwKKyAJaWYgKHNyYyAmJiBzcmMtPnBya2V5X3NvdXJjZSAhPSBQUktFWV9TT1VSQ0VfTk9ORSkgewkJXAorIAkJbXAtPnBya2V5X3NvdXJjZSA9IHNyYy0+cHJrZXlfc291cmNlOwkJCVwKKyAJCW1wLT5yZXNlcnZhdGlvbl9rZXkgPSBzcmMtPnJlc2VydmF0aW9uX2tleTsJCVwKKysJCW1wLT5zYV9mbGFncyA9IHNyYy0+c2FfZmxhZ3M7CQkJCVwKKyAJCW9yaWdpbiA9IG1zZzsJCQkJCQlcCisgCQlnb3RvIG91dDsJCQkJCQlcCisgCX0JCQkJCQkJCVwKK0BAIC03MDMsMTggKzcwNCwxOSBAQCBpbnQgc2VsZWN0X3Jlc2VydmF0aW9uX2tleShzdHJ1Y3QgY29uZmlnICpjb25mLCBzdHJ1Y3QgbXVsdGlwYXRoICptcCkKKyAJZG9fcHJrZXlfc2V0KG1wLT5tcGUsIG11bHRpcGF0aHNfb3JpZ2luKTsKKyAJZG9fcHJrZXlfc2V0KGNvbmYsIGNvbmZfb3JpZ2luKTsKKyAJcHV0X2JlNjQobXAtPnJlc2VydmF0aW9uX2tleSwgMCk7CisrCW1wLT5zYV9mbGFncyA9IDA7CisgCW1wLT5wcmtleV9zb3VyY2UgPSBQUktFWV9TT1VSQ0VfTk9ORTsKKyAJcmV0dXJuIDA7Cisgb3V0OgorIAlpZiAobXAtPnBya2V5X3NvdXJjZSA9PSBQUktFWV9TT1VSQ0VfRklMRSkgeworIAkJZnJvbV9maWxlID0gIiAoZnJvbSBwcmtleXMgZmlsZSkiOworLQkJaWYgKGdldF9wcmtleShjb25mLCBtcCwgJnBya2V5KSAhPSAwKQorKwkJaWYgKGdldF9wcmtleShjb25mLCBtcCwgJnBya2V5LCAmbXAtPnNhX2ZsYWdzKSAhPSAwKQorIAkJCXB1dF9iZTY0KG1wLT5yZXNlcnZhdGlvbl9rZXksIDApOworIAkJZWxzZQorIAkJCXB1dF9iZTY0KG1wLT5yZXNlcnZhdGlvbl9rZXksIHBya2V5KTsKKyAJfQorIAlwcmludF9yZXNlcnZhdGlvbl9rZXkoYnVmZiwgUFJLRVlfU0laRSwgbXAtPnJlc2VydmF0aW9uX2tleSwKKy0JCQkgICAgICBtcC0+cHJrZXlfc291cmNlKTsKKysJCQkgICAgICBtcC0+c2FfZmxhZ3MsIG1wLT5wcmtleV9zb3VyY2UpOworIAljb25kbG9nKDMsICIlczogcmVzZXJ2YXRpb25fa2V5ID0gJXMgJXMlcyIsIG1wLT5hbGlhcywgYnVmZiwgb3JpZ2luLAorIAkJZnJvbV9maWxlKTsKKyAJcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL3N0cnVjdHMuaCBiL2xpYm11bHRpcGF0aC9zdHJ1Y3RzLmgKK2luZGV4IDAxOTRiMWUuLjk4NzQ3OWYgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvc3RydWN0cy5oCisrKysgYi9saWJtdWx0aXBhdGgvc3RydWN0cy5oCitAQCAtMzY3LDYgKzM2Nyw3IEBAIHN0cnVjdCBtdWx0aXBhdGggeworIAkvKiBwZXJzaXN0ZW50IG1hbmFnZW1lbnQgZGF0YSovCisgCWludCBwcmtleV9zb3VyY2U7CisgCXN0cnVjdCBiZTY0IHJlc2VydmF0aW9uX2tleTsKKysJdWludDhfdCBzYV9mbGFnczsKKyAJdW5zaWduZWQgY2hhciBwcmZsYWc7CisgCWludCBhbGxfdGdfcHQ7CisgCXN0cnVjdCBnZW5fbXVsdGlwYXRoIGdlbmVyaWNfbXA7CitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL3V0aWwuYyBiL2xpYm11bHRpcGF0aC91dGlsLmMKK2luZGV4IDcyNTFhZDAuLjhkOGZjYzggMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvdXRpbC5jCisrKysgYi9saWJtdWx0aXBhdGgvdXRpbC5jCitAQCAtMTAsNiArMTAsOCBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPGxpYnVkZXYuaD4KKysjaW5jbHVkZSA8bXBhdGhfcGVyc2lzdC5oPgorIAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgImRlYnVnLmgiCitAQCAtNDM1LDYgKzQzNywyMCBAQCBpbnQgcGFyc2VfcHJrZXkoY2hhciAqcHRyLCB1aW50NjRfdCAqcHJrZXkpCisgCXJldHVybiAwOworIH0KKyAKKytpbnQgcGFyc2VfcHJrZXlfZmxhZ3MoY2hhciAqcHRyLCB1aW50NjRfdCAqcHJrZXksIHVpbnQ4X3QgKmZsYWdzKQorK3sKKysJY2hhciAqZmxhZ3N0cjsKKysKKysJZmxhZ3N0ciA9IHN0cmNocihwdHIsICc6Jyk7CisrCSpmbGFncyA9IDA7CisrCWlmIChmbGFnc3RyKSB7CisrCQkqZmxhZ3N0cisrID0gJ1wwJzsKKysJCWlmIChzdHJsZW4oZmxhZ3N0cikgPT0gNSAmJiBzdHJjbXAoZmxhZ3N0ciwgImFwdHBsIikgPT0gMCkKKysJCQkqZmxhZ3MgPSBNUEFUSF9GX0FQVFBMX01BU0s7CisrCX0KKysJcmV0dXJuIHBhcnNlX3Bya2V5KHB0ciwgcHJrZXkpOworK30KKysKKyBpbnQgc2FmZV93cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50KQorIHsKKyAJd2hpbGUgKGNvdW50ID4gMCkgeworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC91dGlsLmggYi9saWJtdWx0aXBhdGgvdXRpbC5oCitpbmRleCBhM2FiODk0Li41NmNlYzc2IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3V0aWwuaAorKysrIGIvbGlibXVsdGlwYXRoL3V0aWwuaAorQEAgLTE5LDYgKzE5LDcgQEAgdm9pZCBzZXR1cF90aHJlYWRfYXR0cihwdGhyZWFkX2F0dHJfdCAqYXR0ciwgc2l6ZV90IHN0YWNrc2l6ZSwgaW50IGRldGFjaGVkKTsKKyBpbnQgc3lzdGVtZF9zZXJ2aWNlX2VuYWJsZWQoY29uc3QgY2hhciAqZGV2KTsKKyBpbnQgZ2V0X2xpbnV4X3ZlcnNpb25fY29kZSh2b2lkKTsKKyBpbnQgcGFyc2VfcHJrZXkoY2hhciAqcHRyLCB1aW50NjRfdCAqcHJrZXkpOworK2ludCBwYXJzZV9wcmtleV9mbGFncyhjaGFyICpwdHIsIHVpbnQ2NF90ICpwcmtleSwgdWludDhfdCAqZmxhZ3MpOworIGludCBzYWZlX3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpOworIAorICNkZWZpbmUgS0VSTkVMX1ZFUlNJT04obWFqLCBtaW4sIHB0YykgKCgoKG1haikgKiAyNTYpICsgKG1pbikpICogMjU2ICsgKHB0YykpCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQoraW5kZXggMzFmNDU4NS4uMzBkODU5OCAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CisrKysgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNQorQEAgLTcyNiwxNCArNzI2LDE3IEBAIFRoaXMgaXMgdGhlIHNlcnZpY2UgYWN0aW9uIHJlc2VydmF0aW9uIGtleSB1c2VkIGJ5IG1wYXRocGVyc2lzdC4gSXQgbXVzdCBiZQorIHNldCBmb3IgYWxsIG11bHRpcGF0aCBkZXZpY2VzIHVzaW5nIHBlcnNpc3RlbnQgcmVzZXJ2YXRpb25zLCBhbmQgaXQgbXVzdCBiZQorIHRoZSBzYW1lIGFzIHRoZSBSRVNFUlZBVElPTiBLRVkgZmllbGQgb2YgdGhlIFBFUlNJU1RFTlQgUkVTRVJWRSBPVVQgcGFyYW1ldGVyCisgbGlzdCB3aGljaCBjb250YWlucyBhbiA4LWJ5dGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGNsaWVudCB0byB0aGUKKy1kZXZpY2Ugc2VydmVyIHRvIGlkZW50aWZ5IHRoZSBJX1QgbmV4dXMuCisrZGV2aWNlIHNlcnZlciB0byBpZGVudGlmeSB0aGUgSV9UIG5leHVzLiBJZiB0aGUgXGZJLS1wYXJhbS1hcHRwbFxmUiBvcHRpb24gaXMKKyt1c2VkIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIGtleSB3aXRoIG1wYXRocGVyc2lzdCwgXGZCOmFwdHBsXGZSIG11c3QgYmUgYXBwZW5kZWQKKyt0byB0aGUgZW5kIG9mIHRoZSByZXNlcnZhdGlvbiBrZXkuCisgLlJTCisgLlBQCisgQWx0ZXJuYXRpdmVseSwgdGhpcyBjYW4gYmUgc2V0IHRvIFxmQmZpbGVcZlIsIHdoaWNoIHdpbGwgc3RvcmUgdGhlIFJFU0VSVkFUSU9OCisgS0VZIHJlZ2lzdGVyZWQgYnkgbXBhdGhwZXJzaXN0IGluIHRoZSBcZklwcmtleXNfZmlsZVxmUi4gbXVsdGlwYXRoZCB3aWxsIHRoZW4KKyB1c2UgdGhpcyBrZXkgdG8gcmVnaXN0ZXIgYWRkaXRpb25hbCBwYXRocyBhcyB0aGV5IGFwcGVhci4gIFdoZW4gdGhlCisgcmVnaXN0cmF0aW9uIGlzIHJlbW92ZWQsIHRoZSBSRVNFUlZBVElPTiBLRVkgaXMgcmVtb3ZlZCBmcm9tIHRoZQorLVxmSXBya2V5c19maWxlXGZSLgorK1xmSXBya2V5c19maWxlXGZSLiBUaGUgcHJrZXlzIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGtlZXAgdHJhY2sgb2Ygd2hldGhlcgorK3RoZSBrZXkgd2FzIHJlZ2lzdGVyZWQgd2l0aCBcZkktLXBhcmFtLWFwdHBsXGZSLgorIC5UUAorIFRoZSBkZWZhdWx0IGlzOiBcZkI8dW5zZXQ+XGZSCisgLlJFCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9jbGlfaGFuZGxlcnMuYyBiL211bHRpcGF0aGQvY2xpX2hhbmRsZXJzLmMKK2luZGV4IGJhNTBmYjguLjY0NTI3OTYgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCisrKysgYi9tdWx0aXBhdGhkL2NsaV9oYW5kbGVycy5jCitAQCAtMjEsNiArMjEsNyBAQAorICNpbmNsdWRlICJzeXNmcy5oIgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxsaWJ1ZGV2Lmg+CisrI2luY2x1ZGUgPG1wYXRoX3BlcnNpc3QuaD4KKyAjaW5jbHVkZSAidXRpbC5oIgorICNpbmNsdWRlICJwcmtleS5oIgorICNpbmNsdWRlICJwcm9wc2VsLmgiCitAQCAtMTQ2Myw2ICsxNDY0LDcgQEAgY2xpX2dldHBya2V5KHZvaWQgKiB2LCBjaGFyICoqIHJlcGx5LCBpbnQgKiBsZW4sIHZvaWQgKiBkYXRhKQorIAlzdHJ1Y3QgbXVsdGlwYXRoICogbXBwOworIAlzdHJ1Y3QgdmVjdG9ycyAqIHZlY3MgPSAoc3RydWN0IHZlY3RvcnMgKilkYXRhOworIAljaGFyICptYXBuYW1lID0gZ2V0X2tleXBhcmFtKHYsIE1BUCk7CisrCWNoYXIgKmZsYWdzdHIgPSAiIjsKKyAKKyAJbWFwbmFtZSA9IGNvbnZlcnRfZGV2KG1hcG5hbWUsIDApOworIAljb25kbG9nKDMsICIlczogZ2V0IHBlcnNpc3RlbnQgcmVzZXJ2YXRpb24ga2V5IChvcGVyYXRvcikiLCBtYXBuYW1lKTsKK0BAIC0xNDc4LDggKzE0ODAsMTAgQEAgY2xpX2dldHBya2V5KHZvaWQgKiB2LCBjaGFyICoqIHJlcGx5LCBpbnQgKiBsZW4sIHZvaWQgKiBkYXRhKQorIAkJKmxlbiA9IHN0cmxlbigqcmVwbHkpICsgMTsKKyAJCXJldHVybiAwOworIAl9CistCXNucHJpbnRmKCpyZXBseSwgMjAsICIweCUiIFBSSXg2NCAiXG4iLAorLQkJIGdldF9iZTY0KG1wcC0+cmVzZXJ2YXRpb25fa2V5KSk7CisrCWlmIChtcHAtPnNhX2ZsYWdzICYgTVBBVEhfRl9BUFRQTF9NQVNLKQorKwkJZmxhZ3N0ciA9ICI6YXB0cGwiOworKwlzbnByaW50ZigqcmVwbHksIDIwLCAiMHglIiBQUkl4NjQgIiVzXG4iLAorKwkJIGdldF9iZTY0KG1wcC0+cmVzZXJ2YXRpb25fa2V5KSwgZmxhZ3N0cik7CisgCSgqcmVwbHkpWzE5XSA9ICdcMCc7CisgCSpsZW4gPSBzdHJsZW4oKnJlcGx5KSArIDE7CisgCXJldHVybiAwOworQEAgLTE1MDMsNyArMTUwNyw3IEBAIGNsaV91bnNldHBya2V5KHZvaWQgKiB2LCBjaGFyICoqIHJlcGx5LCBpbnQgKiBsZW4sIHZvaWQgKiBkYXRhKQorIAorIAljb25mID0gZ2V0X211bHRpcGF0aF9jb25maWcoKTsKKyAJcHRocmVhZF9jbGVhbnVwX3B1c2gocHV0X211bHRpcGF0aF9jb25maWcsIGNvbmYpOworLQlyZXQgPSBzZXRfcHJrZXkoY29uZiwgbXBwLCAwKTsKKysJcmV0ID0gc2V0X3Bya2V5KGNvbmYsIG1wcCwgMCwgMCk7CisgCXB0aHJlYWRfY2xlYW51cF9wb3AoMSk7CisgCisgCXJldHVybiByZXQ7CitAQCAtMTUxNyw2ICsxNTIxLDcgQEAgY2xpX3NldHBya2V5KHZvaWQgKiB2LCBjaGFyICoqIHJlcGx5LCBpbnQgKiBsZW4sIHZvaWQgKiBkYXRhKQorIAljaGFyICptYXBuYW1lID0gZ2V0X2tleXBhcmFtKHYsIE1BUCk7CisgCWNoYXIgKmtleXBhcmFtID0gZ2V0X2tleXBhcmFtKHYsIEtFWSk7CisgCXVpbnQ2NF90IHBya2V5OworKwl1aW50OF90IGZsYWdzOworIAlpbnQgcmV0OworIAlzdHJ1Y3QgY29uZmlnICpjb25mOworIAorQEAgLTE1MjcsMTQgKzE1MzIsMTQgQEAgY2xpX3NldHBya2V5KHZvaWQgKiB2LCBjaGFyICoqIHJlcGx5LCBpbnQgKiBsZW4sIHZvaWQgKiBkYXRhKQorIAlpZiAoIW1wcCkKKyAJCXJldHVybiAxOworIAorLQlpZiAocGFyc2VfcHJrZXkoa2V5cGFyYW0sICZwcmtleSkgIT0gMCkgeworKwlpZiAocGFyc2VfcHJrZXlfZmxhZ3Moa2V5cGFyYW0sICZwcmtleSwgJmZsYWdzKSAhPSAwKSB7CisgCQljb25kbG9nKDAsICIlczogaW52YWxpZCBwcmtleSA6ICclcyciLCBtYXBuYW1lLCBrZXlwYXJhbSk7CisgCQlyZXR1cm4gMTsKKyAJfQorIAorIAljb25mID0gZ2V0X211bHRpcGF0aF9jb25maWcoKTsKKyAJcHRocmVhZF9jbGVhbnVwX3B1c2gocHV0X211bHRpcGF0aF9jb25maWcsIGNvbmYpOworLQlyZXQgPSBzZXRfcHJrZXkoY29uZiwgbXBwLCBwcmtleSk7CisrCXJldCA9IHNldF9wcmtleShjb25mLCBtcHAsIHBya2V5LCBmbGFncyk7CisgCXB0aHJlYWRfY2xlYW51cF9wb3AoMSk7CisgCisgCXJldHVybiByZXQ7CitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tYWluLmMgYi9tdWx0aXBhdGhkL21haW4uYworaW5kZXggZDQwYzQxNi4uNmIxZTc4MiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvbWFpbi5jCisrKysgYi9tdWx0aXBhdGhkL21haW4uYworQEAgLTMwODksNiArMzA4OSw3IEBAIHZvaWQgKiAgbXBhdGhfcHJfZXZlbnRfaGFuZGxlcl9mbiAodm9pZCAqIHBhdGhwICkKKyAKKyAJcGFyYW09IG1hbGxvYyhzaXplb2Yoc3RydWN0IHByb3V0X3BhcmFtX2Rlc2NyaXB0b3IpKTsKKyAJbWVtc2V0KHBhcmFtLCAwICwgc2l6ZW9mKHN0cnVjdCBwcm91dF9wYXJhbV9kZXNjcmlwdG9yKSk7CisrCXBhcmFtLT5zYV9mbGFncyA9IG1wcC0+c2FfZmxhZ3M7CisgCW1lbWNweShwYXJhbS0+c2Ffa2V5LCAmbXBwLT5yZXNlcnZhdGlvbl9rZXksIDgpOworIAlwYXJhbS0+bnVtX3RyYW5zcG9ydGlkID0gMDsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTgtbXVsdGlwYXRoLWRvbi10LWNoZWNrLXRpbWVzdGFtcHMtd2l0aG91dC1hLXBhdGgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxOC1tdWx0aXBhdGgtZG9uLXQtY2hlY2stdGltZXN0YW1wcy13aXRob3V0LWEtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTNmZDgzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMTgtbXVsdGlwYXRoLWRvbi10LWNoZWNrLXRpbWVzdGFtcHMtd2l0aG91dC1hLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogVHVlLCA1IEp1biAyMDE4IDE1OjMxOjU1IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aDogZG9uJ3QgY2hlY2sgdGltZXN0YW1wcyB3aXRob3V0IGEgcGF0aAorCitJZiBhIHBhdGggd2FzIGJsYWNrbGlzdGVkLCBwYXRodmVjIGNvdWxkIGV4aXN0IGJ1dCBoYXZlIG5vIHBhdGggaW4gaXQuCitwcmludF9jbWRfdmFsaWQgd2Fzbid0IGNoZWNraW5nIHRoaXMgYmVmb3JlIGNhbGxpbmcKK2ZpbmRfbXVsdGlwYXRoc19jaGVja190aW1lb3V0KCkuIFRoaXMgd2FzIGNhdXNpbmcgaXQgdG8gZGVyZWZlcmVuY2UgYQorTlVMTCBwb2ludGVyIGluIHRoZXNlIGNhc2VzLgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBtdWx0aXBhdGgvbWFpbi5jIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoL21haW4uYyBiL211bHRpcGF0aC9tYWluLmMKK2luZGV4IGM2OWU5OTYuLjNmMGE2YWEgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvbWFpbi5jCisrKysgYi9tdWx0aXBhdGgvbWFpbi5jCitAQCAtNDgyLDEwICs0ODIsOCBAQCBzdGF0aWMgaW50IHByaW50X2NtZF92YWxpZChpbnQgaywgY29uc3QgdmVjdG9yIHBhdGh2ZWMsCisgCQkJcHAsIHBwLT5maW5kX211bHRpcGF0aHNfdGltZW91dCwgJnVudGlsKTsKKyAJCWlmICh3YWl0ICE9IEZJTkRfTVVMVElQQVRIU19XQUlUSU5HKQorIAkJCWsgPSAxOworLQl9IGVsc2UgaWYgKHBhdGh2ZWMgIT0gTlVMTCkgeworLQkJcHAgPSBWRUNUT1JfU0xPVChwYXRodmVjLCAwKTsKKysJfSBlbHNlIGlmIChwYXRodmVjICE9IE5VTEwgJiYgKHBwID0gVkVDVE9SX1NMT1QocGF0aHZlYywgMCkpKQorIAkJd2FpdCA9IGZpbmRfbXVsdGlwYXRoc19jaGVja190aW1lb3V0KHBwLCAwLCAmdW50aWwpOworLQl9CisgCWlmICh3YWl0ID09IEZJTkRfTVVMVElQQVRIU19XQUlUSU5HKQorIAkJcHJpbnRmKCJGSU5EX01VTFRJUEFUSFNfV0FJVF9VTlRJTD1cIiVsZC4lMDZsZFwiXG4iLAorIAkJCSAgICAgICB1bnRpbC50dl9zZWMsIHVudGlsLnR2X25zZWMvMTAwMCk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDE5LWxpYm11bHRpcGF0aC1maXgtZGV0ZWN0LWFsdWEtY29ybmVyLWNhc2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxOS1saWJtdWx0aXBhdGgtZml4LWRldGVjdC1hbHVhLWNvcm5lci1jYXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOTA4ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAxOS1saWJtdWx0aXBhdGgtZml4LWRldGVjdC1hbHVhLWNvcm5lci1jYXNlLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgOCBKdW4gMjAxOCAxNzoxMjozNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBsaWJtdWx0aXBhdGg6IGZpeCBkZXRlY3QgYWx1YSBjb3JuZXIgY2FzZQorCitJZiByZXRhaW5fYXR0YWNoX2h3X2hhbmRsZXIgPSBubywgdGhlbiB0aGUgcGF0aHMgdHBncyBzdGF0ZSB3aWxsIG5ldmVyCitiZSBjaGVja2VkLCBhbmQgdGhlIG11bHRpcGF0aCBkZXZpY2Ugd2lsbCBhbHdheXMgc2VsZWN0IHRoZSBhbHVhCitoYW5kbGVyLCBpZiBubyBvdGhlciBoYW5kbGVyIGlzIHNlbGVjdGVkLiB0aGUgcGF0aHMgdHBncyBzdGF0ZQorc2hvdWxkIGJlIGNoZWNrZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHJldGFpbl9od2hhbmRsZXIgdmFsdWUuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9wcm9wc2VsLmMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcHJvcHNlbC5jIGIvbGlibXVsdGlwYXRoL3Byb3BzZWwuYworaW5kZXggNjJhNjg5My4uZjYyNmM3NCAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9wcm9wc2VsLmMKKysrKyBiL2xpYm11bHRpcGF0aC9wcm9wc2VsLmMKK0BAIC00MDMsOSArNDAzLDExIEBAIGludCBzZWxlY3RfaHdoYW5kbGVyKHN0cnVjdCBjb25maWcgKmNvbmYsIHN0cnVjdCBtdWx0aXBhdGggKm1wKQorIAlib29sIGFsbF90cGdzID0gdHJ1ZTsKKyAKKyAJZGhfc3RhdGUgPSAmaGFuZGxlclsyXTsKKysKKysJdmVjdG9yX2ZvcmVhY2hfc2xvdChtcC0+cGF0aHMsIHBwLCBpKQorKwkJYWxsX3RwZ3MgPSBhbGxfdHBncyAmJiAocHAtPnRwZ3MgPiAwKTsKKyAJaWYgKG1wLT5yZXRhaW5faHdoYW5kbGVyICE9IFJFVEFJTl9IV0hBTkRMRVJfT0ZGKSB7CisgCQl2ZWN0b3JfZm9yZWFjaF9zbG90KG1wLT5wYXRocywgcHAsIGkpIHsKKy0JCQlhbGxfdHBncyA9IGFsbF90cGdzICYmIChwcC0+dHBncyA+IDApOworIAkJCWlmIChnZXRfZGhfc3RhdGUocHAsIGRoX3N0YXRlLCBzaXplb2YoaGFuZGxlcikgLSAyKSA+IDAKKyAJCQkgICAgJiYgc3RyY21wKGRoX3N0YXRlLCAiZGV0YWNoZWQiKSkgeworIAkJCQltZW1jcHkoaGFuZGxlciwgIjEgIiwgMik7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDIwLW11bHRpcGF0aC1maXgtc2V0dGluZy1jb25mLXZlcnNpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyMC1tdWx0aXBhdGgtZml4LXNldHRpbmctY29uZi12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNGY0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyMC1tdWx0aXBhdGgtZml4LXNldHRpbmctY29uZi12ZXJzaW9uLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgOCBKdW4gMjAxOCAxNzoyMzowNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBtdWx0aXBhdGg6IGZpeCBzZXR0aW5nIGNvbmYtPnZlcnNpb24KKworQ29tbWl0IGQzYjcxNDk4IHN0b3BwZWQgbXVsdGlwYXRoIGZyb20gc2V0dGluZyBjb25mLT52ZXJzaW9uLiBJbnN0ZWFkLAoraXQgd2FzIGFsd2F5cyBiZWluZyBzZXQgdG8gMC4wLjAuIE11bHRpcGF0aGQgd2FzIHN0aWxsIHNldHRpbmcgdGhpcworY29ycmVjdGx5LgorCitGaXhlczogZDNiNzE0OTggIm11bHRpcGF0aDogZml4IHJjdSB0aHJlYWQgY2FuY2VsbGF0aW9uIGhhbmciCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvZGV2bWFwcGVyLmMgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGV2bWFwcGVyLmMgYi9saWJtdWx0aXBhdGgvZGV2bWFwcGVyLmMKK2luZGV4IGYyYmVmYWQuLjgxMzZkMTUgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZGV2bWFwcGVyLmMKKysrKyBiL2xpYm11bHRpcGF0aC9kZXZtYXBwZXIuYworQEAgLTI0NSwxMyArMjQ1LDEzIEBAIHZvaWQgbGlibXBfZG1faW5pdCh2b2lkKQorIAlpbnQgdmVyYm9zaXR5OworIAl1bnNpZ25lZCBpbnQgdmVyc2lvblszXTsKKyAKKysJaWYgKGRtX3ByZXJlcSh2ZXJzaW9uKSkKKysJCWV4aXQoMSk7CisgCWNvbmYgPSBnZXRfbXVsdGlwYXRoX2NvbmZpZygpOworIAl2ZXJib3NpdHkgPSBjb25mLT52ZXJib3NpdHk7CistCW1lbWNweSh2ZXJzaW9uLCBjb25mLT52ZXJzaW9uLCBzaXplb2YodmVyc2lvbikpOworKwltZW1jcHkoY29uZi0+dmVyc2lvbiwgdmVyc2lvbiwgc2l6ZW9mKHZlcnNpb24pKTsKKyAJcHV0X211bHRpcGF0aF9jb25maWcoY29uZik7CisgCWRtX2luaXQodmVyYm9zaXR5KTsKKy0JaWYgKGRtX3ByZXJlcSh2ZXJzaW9uKSkKKy0JCWV4aXQoMSk7CisgCWRtX3VkZXZfc2V0X3N5bmNfc3VwcG9ydChsaWJtcF9kbV91ZGV2X3N5bmMpOworIH0KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjEtUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjEtUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZjNlNzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyMS1SSC1maXh1cC11ZGV2LXJ1bGVzLWZvci1yZWRoYXQucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAwNzoyMjoyMyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogZml4dXAgdWRldiBydWxlcyBmb3IgcmVkaGF0CisKK1RoZSBtdWx0aXBhdGggcnVsZXMgbmVlZCB0byBydW4gYWZ0ZXIgc2NzaV9pZCBpcyBydW4uIFRoaXMgbWVhbnMgbW92aW5nCit0aGVtIGFmdGVyIDYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBmb3IgcmVkaGF0LiBSZWRoYXQgYWxzbyB1c2VzIGEKK2RpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBwYXJ0aXRpb25zIHRoYW4gU3VTRS4gQWxzbywgdGhlcmUgYXJlIHNvbWUKK2ZhbHNlIHdhcm5pbmdzIHRoYXQgZ2NjIHRocm93cyBiZWNhdXNlIG9mIHRoZSBjaGFuZ2VkIG9wdGlvbnMuIEZpeCB0aGVzZQordG9vLgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBNYWtlZmlsZS5pbmMgICAgICAgIHwgMiArLQorIGtwYXJ0eC9rcGFydHgucnVsZXMgfCAyICstCisgbXVsdGlwYXRoL01ha2VmaWxlICB8IDQgKystLQorIG11bHRpcGF0aC9tYWluLmMgICAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKK2luZGV4IGFmMmY1YmEuLjBiMjcxZWEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbmMKKysrKyBiL01ha2VmaWxlLmluYworQEAgLTUxLDcgKzUxLDcgQEAgZW5kaWYKKyBwcmVmaXgJCT0KKyBleGVjX3ByZWZpeAk9ICQocHJlZml4KQorIHVzcl9wcmVmaXgJPSAkKHByZWZpeCkKKy1iaW5kaXIJCT0gJChleGVjX3ByZWZpeCkvc2JpbgorK2JpbmRpcgkJPSAkKGV4ZWNfcHJlZml4KS91c3Ivc2JpbgorIGxpYnVkZXZkaXIJPSAkKHByZWZpeCkvJChTWVNURU1EUEFUSCkvdWRldgorIHVkZXZydWxlc2Rpcgk9ICQobGlidWRldmRpcikvcnVsZXMuZAorIG11bHRpcGF0aGRpcgk9ICQoVE9QRElSKS9saWJtdWx0aXBhdGgKK2RpZmYgLS1naXQgYS9rcGFydHgva3BhcnR4LnJ1bGVzIGIva3BhcnR4L2twYXJ0eC5ydWxlcworaW5kZXggOGY5OTA0OS4uOGEzYTE3MSAxMDA2NDQKKy0tLSBhL2twYXJ0eC9rcGFydHgucnVsZXMKKysrKyBiL2twYXJ0eC9rcGFydHgucnVsZXMKK0BAIC0zMiw2ICszMiw2IEBAIExBQkVMPSJtcGF0aF9rcGFydHhfZW5kIgorIEdPVE89ImtwYXJ0eF9lbmQiCisgCisgTEFCRUw9InJ1bl9rcGFydHgiCistUlVOKz0iL3NiaW4va3BhcnR4IC11biAtcCAtcGFydCAvZGV2LyRuYW1lIgorK1JVTis9Ii9zYmluL2twYXJ0eCAtdW4gL2Rldi8kbmFtZSIKKyAKKyBMQUJFTD0ia3BhcnR4X2VuZCIKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvTWFrZWZpbGUgYi9tdWx0aXBhdGgvTWFrZWZpbGUKK2luZGV4IDA4MjhhOGYuLmI5YmJiM2MgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGgvTWFrZWZpbGUKKysrKyBiL211bHRpcGF0aC9NYWtlZmlsZQorQEAgLTI0LDcgKzI0LDcgQEAgaW5zdGFsbDoKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSAkKEVYRUMpICQoREVTVERJUikkKGJpbmRpcikvCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgMTEtZG0tbXBhdGgucnVsZXMgJChERVNURElSKSQodWRldnJ1bGVzZGlyKQorLQkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC81Ni1tdWx0aXBhdGgucnVsZXMKKysJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLnJ1bGVzICQoREVTVERJUikkKGxpYnVkZXZkaXIpL3J1bGVzLmQvNjItbXVsdGlwYXRoLnJ1bGVzCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJChtYW44ZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykuOC5neiAkKERFU1RESVIpJChtYW44ZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLWQgJChERVNURElSKSQobWFuNWRpcikKK0BAIC0zMyw3ICszMyw3IEBAIGluc3RhbGw6CisgdW5pbnN0YWxsOgorIAkkKFJNKSAkKERFU1RESVIpJChiaW5kaXIpLyQoRVhFQykKKyAJJChSTSkgJChERVNURElSKSQodWRldnJ1bGVzZGlyKS8xMS1kbS1tcGF0aC5ydWxlcworLQkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzU2LW11bHRpcGF0aC5ydWxlcworKwkkKFJNKSAkKERFU1RESVIpJChsaWJ1ZGV2ZGlyKS9ydWxlcy5kLzYyLW11bHRpcGF0aC5ydWxlcworIAkkKFJNKSAkKERFU1RESVIpJChtYW44ZGlyKS8kKEVYRUMpLjguZ3oKKyAJJChSTSkgJChERVNURElSKSQobWFuNWRpcikvJChFWEVDKS5jb25mLjUuZ3oKKyAKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbWFpbi5jIGIvbXVsdGlwYXRoL21haW4uYworaW5kZXggM2YwYTZhYS4uNmZkZGUwMyAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tYWluLmMKKysrKyBiL211bHRpcGF0aC9tYWluLmMKK0BAIC0zODksNyArMzg5LDcgQEAgc3RhdGljIGludCBmaW5kX211bHRpcGF0aHNfY2hlY2tfdGltZW91dChjb25zdCBzdHJ1Y3QgcGF0aCAqcHAsIGxvbmcgdG1vLAorIAlzdHJ1Y3QgdGltZXNwZWMgbm93LCBmdGltZXNbMl0sIHRkaWZmOworIAlzdHJ1Y3Qgc3RhdCBzdDsKKyAJbG9uZyBmZDsKKy0JaW50IHIsIGVyciwgcmV0cmllcyA9IDA7CisrCWludCByLCBlcnIgPSAwLCByZXRyaWVzID0gMDsKKyAKKyAJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJm5vdyk7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDIyLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjItUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxYzUyNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDIyLVJILVJlbW92ZS10aGUtcHJvcGVydHktYmxhY2tsaXN0LWV4Y2VwdGlvbi1idWlsdGluLnBhdGNoCkBAIC0wLDAgKzEsODcgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMiBKdWwgMjAxNCAxMjo0OTo1MyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogUmVtb3ZlIHRoZSBwcm9wZXJ0eSBibGFja2xpc3QgZXhjZXB0aW9uIGJ1aWx0aW4KKworTXVsdGlwYXRoIHNldCB0aGUgZGVmYXVsdCBwcm9wZXJ0eSBibGFja2xpc3QgZXhjZXB0aW9ucyB0bworKElEX1NDU0lfVlBEfElEX1dXTikuICBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGJsYWNrbGlzdGluZyBzb21lIGludGVybmFsCitkZXZpY2VzLiAgVGhlc2UgZGV2aWNlcyBtYXkgbmV2ZXIgaGF2ZSBtdWx0aXBsZSBwYXRocywgYnV0IGl0IGlzIG5pY2UKK3RvIGJlIGFibGUgdG8gc2V0IG11bHRpcGF0aCB1cCBvbiB0aGVtIGFsbCB0aGUgc2FtZS4gIFRoaXMgcGF0Y2ggc2ltcGx5CityZW1vdmVzIHRoZSBkZWZhdWx0LCBhbmQgbWFrZXMgaXQgc28gdGhhdCBpZiBubyBwcm9wZXJ0eQorYmxhY2tsaXN0X2V4Y2VwdGlvbiBpcyBnaXZlbiwgdGhlbiBkZXZpY2VzIGFyZW4ndCBmYWlsZWQgZm9yIG5vdCBtYXRjaGluZworaXQuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9ibGFja2xpc3QuYyAgIHwgMTUgKysrKysrLS0tLS0tLS0tCisgbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUgfCAxNCArKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMgYi9saWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMKK2luZGV4IGVlMzk2ZTIuLjE5ZDQ2OTcgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvYmxhY2tsaXN0LmMKKysrKyBiL2xpYm11bHRpcGF0aC9ibGFja2xpc3QuYworQEAgLTE4MSwxMiArMTgxLDYgQEAgc2V0dXBfZGVmYXVsdF9ibGlzdCAoc3RydWN0IGNvbmZpZyAqIGNvbmYpCisgCWlmIChzdG9yZV9ibGUoY29uZi0+Ymxpc3RfZGV2bm9kZSwgc3RyLCBPUklHSU5fREVGQVVMVCkpCisgCQlyZXR1cm4gMTsKKyAKKy0Jc3RyID0gU1RSRFVQKCIoU0NTSV9JREVOVF98SURfV1dOKSIpOworLQlpZiAoIXN0cikKKy0JCXJldHVybiAxOworLQlpZiAoc3RvcmVfYmxlKGNvbmYtPmVsaXN0X3Byb3BlcnR5LCBzdHIsIE9SSUdJTl9ERUZBVUxUKSkKKy0JCXJldHVybiAxOworLQorIAl2ZWN0b3JfZm9yZWFjaF9zbG90IChjb25mLT5od3RhYmxlLCBod2UsIGkpIHsKKyAJCWlmIChod2UtPmJsX3Byb2R1Y3QpIHsKKyAJCQlpZiAoX2JsYWNrbGlzdF9kZXZpY2UoY29uZi0+Ymxpc3RfZGV2aWNlLCBod2UtPnZlbmRvciwKK0BAIC0zOTAsOSArMzg0LDEyIEBAIGZpbHRlcl9wcm9wZXJ0eShzdHJ1Y3QgY29uZmlnICogY29uZiwgc3RydWN0IHVkZXZfZGV2aWNlICogdWRldikKKyAJICogVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgJ25vcm1hbCcgbWF0Y2hpbmc7CisgCSAqIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBfaGFzXyB0byBtYXRjaC4KKyAJICovCistCWxvZ19maWx0ZXIoZGV2bmFtZSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwKKy0JCSAgIE1BVENIX1BST1BFUlRZX0JMSVNUX01JU1NJTkcpOworLQlyZXR1cm4gTUFUQ0hfUFJPUEVSVFlfQkxJU1RfTUlTU0lORzsKKysJaWYgKFZFQ1RPUl9TSVpFKGNvbmYtPmVsaXN0X3Byb3BlcnR5KSkgeworKwkJbG9nX2ZpbHRlcihkZXZuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAorKwkJCSAgIE1BVENIX1BST1BFUlRZX0JMSVNUX01JU1NJTkcpOworKwkJcmV0dXJuIE1BVENIX1BST1BFUlRZX0JMSVNUX01JU1NJTkc7CisrCX0KKysJcmV0dXJuIDA7CisgfQorIAorIHZvaWQKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXVsdGlwYXRoLmNvbmYuNSBiL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CitpbmRleCAzMGQ4NTk4Li5jNDVkYTlmIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5jb25mLjUKKysrKyBiL211bHRpcGF0aC9tdWx0aXBhdGguY29uZi41CitAQCAtMTE3OSwxMCArMTE3OSw2IEBAIFRoZSBcZklXb3JsZCBXaWRlIElkZW50aWZpY2F0aW9uXGZSIG9mIGEgZGV2aWNlLgorIC5UUAorIC5CIHByb3BlcnR5CisgUmVndWxhciBleHByZXNzaW9uIG9mIHRoZSB1ZGV2IHByb3BlcnR5IHRvIGJlIHdoaXRlbGlzdGVkLgorLS5SUworLS5UUAorLVRoZSBkZWZhdWx0IGlzOiBcZkIoU0NTSV9JREVOVF98SURfV1dOKVxmUgorLS5SRQorIC5UUAorIC5CIGRldmljZQorIFN1YnNlY3Rpb24gZm9yIHRoZSBkZXZpY2UgZGVzY3JpcHRpb24uIFRoaXMgc3Vic2VjdGlvbiByZWNvZ25pemVzIHRoZQorQEAgLTExOTMsOCArMTE4OSwxNCBAQCBrZXl3b3Jkcy4gRm9yIGEgZnVsbCBkZXNjcmlwdGlvbiBvZiB0aGVzZSBrZXl3b3JkcyBwbGVhc2Ugc2VlIHRoZSBcZklkZXZpY2VzXGZSCisgc2VjdGlvbiBkZXNjcmlwdGlvbi4KKyAuTFAKKyBUaGUgXGZJcHJvcGVydHlcZlIgd2hpdGVsaXN0IGhhbmRsaW5nIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB1c3VhbAorLWhhbmRsaW5nIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBkZXZpY2UgXGZJaGFzXGZSIHRvIGhhdmUgYSB1ZGV2IHByb3BlcnR5IHRoYXQKKy1tYXRjaGVzIHRoZSB3aGl0ZWxpc3QsIG90aGVyd2lzZSB0aGUgZGV2aWNlIHdpbGwgYmUgYmxhY2tsaXN0ZWQuIEluIHRoZXNlIGNhc2VzIHRoZSBtZXNzYWdlIFxmSWJsYWNrbGlzdGVkLCB1ZGV2IHByb3BlcnR5IG1pc3NpbmdcZlIgd2lsbCBiZSBkaXNwbGF5ZWQuCisraGFuZGxpbmcgaW4gdGhlIHNlbnNlIHRoYXQgaWYgdGhlIHByb3Blcnkgd2hpdGVsaXN0IGlzIHNldCwgdGhlIGRldmljZQorK1xmSWhhc1xmUiB0byBoYXZlIGEgdWRldiBwcm9wZXJ0eSB0aGF0IG1hdGNoZXMgdGhlIHdoaXRlbGlzdCwgb3RoZXJ3aXNlIHRoZQorK2RldmljZSB3aWxsIGJlIGJsYWNrbGlzdGVkLiBJbiB0aGVzZSBjYXNlcyB0aGUgbWVzc2FnZSBcZklibGFja2xpc3RlZCwgdWRldgorK3Byb3BlcnR5IG1pc3NpbmdcZlIgd2lsbCBiZSBkaXNwbGF5ZWQuIEZvciBleGFtcGxlIHNldHR0aW5nIHRoZQorK3Byb3BlcnR5IGJsYWNrbGlzdF9leGNlcHRpb24gdG8gXGZCKFNDU0lfSURFTlRffElEX1dXTilcZlIgd2lsbCBibGFja2xpc3QKKythbGwgZGV2aWNlcyB0aGF0IGhhdmUgbm8gdWRldiBwcm9wZXJ0eSB3aG9zZSBuYW1lIHJlZ2V4IG1hdGNoZXMgZWl0aGVyCisrXGZCU0NTSV9JREVOVF9cZlIgb3IgXGZCSURfV1dOXGZSLiBUaGlzIHdvcmtzIHRvIGV4Y2x1ZGUgbW9zdAorK25vbi1tdWx0aXBhdGhhYmxlIGRldmljZXMuCisgLgorIC4KKyAuXCIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyMy1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyMy1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg2ZjFjOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDIzLVJILWRvbi10LXN0YXJ0LXdpdGhvdXQtYS1jb25maWctZmlsZS5wYXRjaApAQCAtMCwwICsxLDEwNiBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNSBPY3QgMjAxNCAxMDozOTozMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogZG9uJ3Qgc3RhcnQgd2l0aG91dCBhIGNvbmZpZyBmaWxlCisKK0lmIC9ldGMvbXVsdGlwYXRoLmNvbmYgZG9lc24ndCBleGlzdCwgZG9uJ3Qgc3RhcnQgbXVsdGlwYXRoZCBhbmQgYmxhY2tsaXN0CithbGwgZGV2aWNlcyB3aGVuIHJ1bm5pbmcgbXVsdGlwYXRoLiAgQSBjb21wbGV0ZWx5IGJsYW5rIGNvbmZpZ3VyYXRpb24gZmlsZQoraXMgYWxtb3N0IG5ldmVyIHdoYXQgdXNlcnMgd2FudC4gIEFsc28sIHBlb3BsZSBtYXkgaGF2ZSB0aGUgbXVsdGlwYXRoCitwYWNrYWdlcyBpbnN0YWxsZWQgYnV0IGRvbid0IHdhbnQgdG8gdXNlIHRoZW0uICBUaGlzIHBhdGNoIHByb3ZpZGVzIGEKK3NpbXBsZSB3YXkgdG8gZGlzYWJsZSBtdWx0aXBhdGguICBTaW1wbHkgcmVtb3Zpbmcgb3IgcmVuYW1pbmcKKy9ldGMvbXVsdGlwYXRoLmNvbmYgd2lsbCBrZWVwIG11bHRpcGF0aCBmcm9tIGRvaW5nIGFueXRoaW5nLgorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CistLS0KKyBsaWJtdWx0aXBhdGgvY29uZmlnLmMgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKworIGxpYm11bHRpcGF0aC9jb25maWcuaCAgICAgICAgIHwgIDEgKworIG11bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgICAgIHwgIDEgKworIG11bHRpcGF0aGQvbXVsdGlwYXRoZC44ICAgICAgIHwgIDIgKysKKyBtdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSB8ICAxICsKKyA1IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC9jb25maWcuYyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworaW5kZXggNTg3MjkyNy4uMDYwNzQwMyAxMDA2NDQKKy0tLSBhL2xpYm11bHRpcGF0aC9jb25maWcuYworKysrIGIvbGlibXVsdGlwYXRoL2NvbmZpZy5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJkZXZtYXBwZXIuaCIKKyAjaW5jbHVkZSAibXBhdGhfY21kLmgiCisgI2luY2x1ZGUgInByb3BzZWwuaCIKKysjaW5jbHVkZSAidmVyc2lvbi5oIgorIAorIHN0YXRpYyBpbnQKKyBod2Vfc3RybWF0Y2ggKHN0cnVjdCBod2VudHJ5ICpod2UxLCBzdHJ1Y3QgaHdlbnRyeSAqaHdlMikKK0BAIC02NTgsNiArNjU5LDIwIEBAIGxvYWRfY29uZmlnIChjaGFyICogZmlsZSkKKyAJCQlmYWN0b3JpemVfaHd0YWJsZShjb25mLT5od3RhYmxlLCBidWlsdGluX2h3dGFibGVfc2l6ZSk7CisgCQl9CisgCisrCX0gZWxzZSB7CisrCQljb25kbG9nKDAsICIvZXRjL211bHRpcGF0aC5jb25mIGRvZXMgbm90IGV4aXN0LCBibGFja2xpc3RpbmcgYWxsIGRldmljZXMuIik7CisrCQlpZiAoY29uZi0+Ymxpc3RfZGV2bm9kZSA9PSBOVUxMKSB7CisrCQkJY29uZi0+Ymxpc3RfZGV2bm9kZSA9IHZlY3Rvcl9hbGxvYygpOworKwkJCWlmICghY29uZi0+Ymxpc3RfZGV2bm9kZSkgeworKwkJCQljb25kbG9nKDAsICJjYW5ub3QgYWxsb2NhdGUgYmxhY2tsaXN0XG4iKTsKKysJCQkJZ290byBvdXQ7CisrCQkJfQorKwkJfQorKwkJaWYgKHN0b3JlX2JsZShjb25mLT5ibGlzdF9kZXZub2RlLCBzdHJkdXAoIi4qIiksCisrCQkgICAgICAgICAgICAgIE9SSUdJTl9OT19DT05GSUcpKSB7CisrCQkJY29uZGxvZygwLCAiY2Fubm90IHN0b3JlIGRlZmF1bHQgbm8tY29uZmlnIGJsYWNrbGlzdFxuIik7CisrCQkJZ290byBvdXQ7CisrCQl9CisgCX0KKyAKKyAJY29uZi0+cHJvY2Vzc2VkX21haW5fY29uZmlnID0gMTsKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmggYi9saWJtdWx0aXBhdGgvY29uZmlnLmgKK2luZGV4IGZjYmUzZmMuLjNhNDI0MzUgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmgKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuaAorQEAgLTksNiArOSw3IEBACisgCisgI2RlZmluZSBPUklHSU5fREVGQVVMVCAwCisgI2RlZmluZSBPUklHSU5fQ09ORklHICAxCisrI2RlZmluZSBPUklHSU5fTk9fQ09ORklHIDIKKyAKKyAvKgorICAqIEluIGtlcm5lbCwgZmFzdF9pb19mYWlsID09IDAgbWVhbnMgaW1tZWRpYXRlIGZhaWx1cmUgb24gcnBvcnQgZGVsZXRlLgorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGgucnVsZXMgYi9tdWx0aXBhdGgvbXVsdGlwYXRoLnJ1bGVzCitpbmRleCBkNjU4MDczLi5iM2Y1NGQ3IDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC5ydWxlcworQEAgLTksNiArOSw3IEBAIElNUE9SVHtjbWRsaW5lfT0ibm9tcGF0aCIKKyBFTlZ7bm9tcGF0aH09PSI/KiIsIEdPVE89ImVuZF9tcGF0aCIKKyBJTVBPUlR7Y21kbGluZX09Im11bHRpcGF0aCIKKyBFTlZ7bXVsdGlwYXRofT09Im9mZiIsIEdPVE89ImVuZF9tcGF0aCIKKytURVNUIT0iL2V0Yy9tdWx0aXBhdGguY29uZiIsIEdPVE89ImVuZF9tcGF0aCIKKyAKKyBFTlZ7REVWVFlQRX0hPSJwYXJ0aXRpb24iLCBHT1RPPSJ0ZXN0X2RldiIKKyBJTVBPUlR7cGFyZW50fT0iRE1fTVVMVElQQVRIX0RFVklDRV9QQVRIIgorZGlmZiAtLWdpdCBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC44IGIvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLjgKK2luZGV4IGU3OGFjOWUuLjA5Y2RlYWQgMTAwNjQ0CistLS0gYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuOAorKysrIGIvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLjgKK0BAIC0zOCw2ICszOCw4IEBAIG1hcCByZWdhaW5zIGl0cyBtYXhpbXVtIHBlcmZvcm1hbmNlIGFuZCByZWR1bmRhbmN5LgorIFRoaXMgZGFlbW9uIGV4ZWN1dGVzIHRoZSBleHRlcm5hbCBcZkJtdWx0aXBhdGhcZlIgdG9vbCB3aGVuIGV2ZW50cyBvY2N1ci4KKyBJbiB0dXJuLCB0aGUgbXVsdGlwYXRoIHRvb2wgc2lnbmFscyB0aGUgbXVsdGlwYXRoZCBkYWVtb24gd2hlbiBpdCBpcyBkb25lIHdpdGgKKyBkZXZtYXAgcmVjb25maWd1cmF0aW9uLCBzbyB0aGF0IGl0IGNhbiByZWZyZXNoIGl0cyBmYWlsZWQgcGF0aCBsaXN0LgorKworK0luIHRoaXMgTGludXggZGlzdHJpYnV0aW9uLCBtdWx0aXBhdGhkIGRvZXMgbm90IHJ1biB1bmxlc3MgYSAvZXRjL211bHRpcGF0aC5jb25mIGZpbGUgZXhpc3RzLgorIC4KKyAuCisgLlwiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RpZmYgLS1naXQgYS9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZSBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitpbmRleCBiYTI0OTgzLi4xNzQzNGNlIDEwMDY0NAorLS0tIGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UKKysrKyBiL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCitAQCAtNCw2ICs0LDcgQEAgV2FudHM9c3lzdGVtZC11ZGV2LXRyaWdnZXIuc2VydmljZSBzeXN0ZW1kLXVkZXYtc2V0dGxlLnNlcnZpY2UKKyBCZWZvcmU9aXNjc2kuc2VydmljZSBpc2NzaWQuc2VydmljZSBsdm0yLWFjdGl2YXRpb24tZWFybHkuc2VydmljZQorIEJlZm9yZT1sb2NhbC1mcy1wcmUudGFyZ2V0IGJsay1hdmFpbGFiaWxpdHkuc2VydmljZQorIEFmdGVyPW11bHRpcGF0aGQuc29ja2V0IHN5c3RlbWQtdWRldi10cmlnZ2VyLnNlcnZpY2Ugc3lzdGVtZC11ZGV2LXNldHRsZS5zZXJ2aWNlCisrQ29uZGl0aW9uUGF0aEV4aXN0cz0vZXRjL211bHRpcGF0aC5jb25mCisgRGVmYXVsdERlcGVuZGVuY2llcz1ubworIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKKyBDb25kaXRpb25LZXJuZWxDb21tYW5kTGluZT0hbm9tcGF0aAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyNC1SSC11c2UtcnBtLW9wdGZsYWdzLWlmLXByZXNlbnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyNC1SSC11c2UtcnBtLW9wdGZsYWdzLWlmLXByZXNlbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMzMGJmMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI0LVJILXVzZS1ycG0tb3B0ZmxhZ3MtaWYtcHJlc2VudC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBNYXJ6aW5za2kgPGJtYXJ6aW5zQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE5IEFwciAyMDE3IDA2OjEwOjAxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIFJIOiB1c2UgcnBtIG9wdGZsYWdzIGlmIHByZXNlbnQKKworVXNlIHRoZSBwYXNzZWQgaW4gb3B0ZmxhZ3Mgd2hlbiBjb21waWxpbmcgYXMgYW4gUlBNLCBhbmQga2VlcCB0aGUKK2RlZmF1bHQgZmxhZ3MgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIGN1cnJlbnQgZmVkb3JhIGZsYWdzLCB3aGlsZQorc3RpbGwgYmVpbmcgZ2VuZXJpYy4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgTWFrZWZpbGUuaW5jIHwgMjQgKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbmMgYi9NYWtlZmlsZS5pbmMKK2luZGV4IDBiMjcxZWEuLjVmZjY5YTMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbmMKKysrKyBiL01ha2VmaWxlLmluYworQEAgLTg1LDE0ICs4NSwyMiBAQCBURVNUX0NDX09QVElPTiA9ICQoc2hlbGwgXAorIAkJZWNobyAiJCgyKSI7IFwKKyAJZmkpCisgCistU1RBQ0tQUk9UIDo9ICQoY2FsbCBURVNUX0NDX09QVElPTiwtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcsLWZzdGFjay1wcm90ZWN0b3IpCistCistT1BURkxBR1MJPSAtTzIgLWcgLXBpcGUgLVdhbGwgLVdleHRyYSAtV2Zvcm1hdD0yIC1XZXJyb3I9aW1wbGljaXQtaW50IFwKKy0JCSAgLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSBcCistCQkgIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25vLWNsb2JiZXJlZCBcCistCQkgIC1XZXJyb3I9Y2FzdC1xdWFsIC1XZXJyb3I9ZGlzY2FyZGVkLXF1YWxpZmllcnMgXAorLQkJICAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAkKFNUQUNLUFJPVCkgXAorLQkJICAtLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00CisraWZuZGVmIFJQTV9PUFRfRkxBR1MKKysJU1RBQ0tQUk9UIDo9ICQoY2FsbCBURVNUX0NDX09QVElPTiwtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcsLWZzdGFjay1wcm90ZWN0b3IpCisrCU9QVEZMQUdTCT0gLU8yIC1nIC1waXBlIC1XYWxsIC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IFwKKysJCQkgIC1XcCwtRF9GT1JUSUZZX1NPVVJDRT0yIC1mZXhjZXB0aW9ucyBcCisrCQkJICAkKFNUQUNLUFJPVCkgLS1wYXJhbT1zc3AtYnVmZmVyLXNpemU9NCBcCisrCQkJICAtZ3JlY29yZC1nY2Mtc3dpdGNoZXMKKysJaWZlcSAoJChzaGVsbCB0ZXN0IC1mIC91c3IvbGliL3JwbS9yZWRoYXQvcmVkaGF0LWhhcmRlbmVkLWNjMSAmJiBlY2hvIDEpLDEpCisrCQlPUFRGTEFHUyArPSAtc3BlY3M9L3Vzci9saWIvcnBtL3JlZGhhdC9yZWRoYXQtaGFyZGVuZWQtY2MxCisrCWVuZGlmCisrZWxzZQorKwlPUFRGTEFHUyA9ICQoUlBNX09QVF9GTEFHUykKKytlbmRpZgorK09QVEZMQUdTCSs9IC1XZXh0cmEgLVdzdHJpY3QtcHJvdG90eXBlcyAtV2Zvcm1hdD0yIC1XZXJyb3I9aW1wbGljaXQtaW50IFwKKysJCSAgIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gLVduby1zaWduLWNvbXBhcmUgXAorKwkJICAgLVduby11bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3I9Y2FzdC1xdWFsIFwKKysJCSAgIC1XZXJyb3I9ZGlzY2FyZGVkLXF1YWxpZmllcnMKKyAKKyBDRkxBR1MJCTo9ICQoT1BURkxBR1MpIC1EQklOX0RJUj1cIiQoYmluZGlyKVwiIC1ETElCX1NUUklORz1cIiR7TElCfVwiIC1EUlVOX0RJUj1cIiR7UlVOfVwiIFwKKyAJCSAgIC1NTUQgLU1QICQoQ0ZMQUdTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyNS1SSC1hZGQtbXBhdGhjb25mLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjUtUkgtYWRkLW1wYXRoY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2FkMjJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjUtUkgtYWRkLW1wYXRoY29uZi5wYXRjaApAQCAtMCwwICsxLDY0OCBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAxNiBPY3QgMjAxNCAxNTo0OTowMSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogYWRkIG1wYXRoY29uZgorCittcGF0aGNvbmYgaXMgYSBwcm9ncmFtIChsYXJnZWx5IGJhc2VkIG9uIGx2bWNvbWYpIHRvIGhlbHAgdXNlcnMKK2NvbmZpZ3VyZSAvZXRjL211bHRpcGF0aC5jb25mIGFuZCBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBhdGhpbmcuICBJdAoraGFzIGEgY291cGxlIG9mIGJ1aWx0LWluIG9wdGlvbnMgdGhhdCBjYW4gYmUgc2V0IGRpcmVjdGx5IGZyb20gdGhlCitjb21tYW5kIGxpbmUuICBCdXQsIG1vc3RseSBpdCBpcyB1c2VkIHRvIGdldCBhIG11bHRpcGF0aC5jb25mIGZpbGUKK3dpdGggdGhlIE9TIGRlZmF1bHRzLCBhbmQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIG11bHRpcGF0aGluZyB2aWEKK2Egc2luZ2xlIGNvbW1hbmQuCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9jb25maWcuYyB8ICAgMSArCisgbXVsdGlwYXRoL01ha2VmaWxlICAgIHwgICA1ICsKKyBtdWx0aXBhdGgvbXBhdGhjb25mICAgfCA0NjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBtdWx0aXBhdGgvbXBhdGhjb25mLjggfCAxMDEgKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDU3MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG11bHRpcGF0aC9tcGF0aGNvbmYKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbXVsdGlwYXRoL21wYXRoY29uZi44CisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvY29uZmlnLmMgYi9saWJtdWx0aXBhdGgvY29uZmlnLmMKK2luZGV4IDA2MDc0MDMuLjVjOThlNDggMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvY29uZmlnLmMKKysrKyBiL2xpYm11bHRpcGF0aC9jb25maWcuYworQEAgLTY2MSw2ICs2NjEsNyBAQCBsb2FkX2NvbmZpZyAoY2hhciAqIGZpbGUpCisgCisgCX0gZWxzZSB7CisgCQljb25kbG9nKDAsICIvZXRjL211bHRpcGF0aC5jb25mIGRvZXMgbm90IGV4aXN0LCBibGFja2xpc3RpbmcgYWxsIGRldmljZXMuIik7CisrCQljb25kbG9nKDAsICJZb3UgY2FuIHJ1biAvc2Jpbi9tcGF0aGNvbmYgdG8gY3JlYXRlIG9yIG1vZGlmeSAvZXRjL211bHRpcGF0aC5jb25mIik7CisgCQlpZiAoY29uZi0+Ymxpc3RfZGV2bm9kZSA9PSBOVUxMKSB7CisgCQkJY29uZi0+Ymxpc3RfZGV2bm9kZSA9IHZlY3Rvcl9hbGxvYygpOworIAkJCWlmICghY29uZi0+Ymxpc3RfZGV2bm9kZSkgeworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9NYWtlZmlsZSBiL211bHRpcGF0aC9NYWtlZmlsZQoraW5kZXggYjliYmIzYy4uZTcyMGM3ZiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9NYWtlZmlsZQorKysrIGIvbXVsdGlwYXRoL01ha2VmaWxlCitAQCAtMTgsMTAgKzE4LDEyIEBAICQoRVhFQyk6ICQoT0JKUykgJChtdWx0aXBhdGhkaXIpL2xpYm11bHRpcGF0aC5zbyAkKG1wYXRoY21kZGlyKS9saWJtcGF0aGNtZC5zbworIAkkKENDKSAkKENGTEFHUykgJChPQkpTKSAtbyAkKEVYRUMpICQoTERGTEFHUykgJChMSUJERVBTKQorIAkkKEdaSVApICQoRVhFQykuOCA+ICQoRVhFQykuOC5negorIAkkKEdaSVApICQoRVhFQykuY29uZi41ID4gJChFWEVDKS5jb25mLjUuZ3oKKysJJChHWklQKSBtcGF0aGNvbmYuOCA+IG1wYXRoY29uZi44Lmd6CisgCisgaW5zdGFsbDoKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKGJpbmRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDc1NSAkKEVYRUMpICQoREVTVERJUikkKGJpbmRpcikvCisrCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA3NTUgbXBhdGhjb25mICQoREVTVERJUikkKGJpbmRpcikvCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtZCAkKERFU1RESVIpJCh1ZGV2cnVsZXNkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgMTEtZG0tbXBhdGgucnVsZXMgJChERVNURElSKSQodWRldnJ1bGVzZGlyKQorIAkkKElOU1RBTExfUFJPR1JBTSkgLW0gNjQ0ICQoRVhFQykucnVsZXMgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Mi1tdWx0aXBhdGgucnVsZXMKK0BAIC0yOSwxMyArMzEsMTYgQEAgaW5zdGFsbDoKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCAkKEVYRUMpLjguZ3ogJChERVNURElSKSQobWFuOGRpcikKKyAJJChJTlNUQUxMX1BST0dSQU0pIC1kICQoREVTVERJUikkKG1hbjVkaXIpCisgCSQoSU5TVEFMTF9QUk9HUkFNKSAtbSA2NDQgJChFWEVDKS5jb25mLjUuZ3ogJChERVNURElSKSQobWFuNWRpcikKKysJJChJTlNUQUxMX1BST0dSQU0pIC1tIDY0NCBtcGF0aGNvbmYuOC5neiAkKERFU1RESVIpJChtYW44ZGlyKQorIAorIHVuaW5zdGFsbDoKKyAJJChSTSkgJChERVNURElSKSQoYmluZGlyKS8kKEVYRUMpCisgCSQoUk0pICQoREVTVERJUikkKHVkZXZydWxlc2RpcikvMTEtZG0tbXBhdGgucnVsZXMKKyAJJChSTSkgJChERVNURElSKSQobGlidWRldmRpcikvcnVsZXMuZC82Mi1tdWx0aXBhdGgucnVsZXMKKysJJChSTSkgJChERVNURElSKSQoYmluZGlyKS9tcGF0aGNvbmYKKyAJJChSTSkgJChERVNURElSKSQobWFuOGRpcikvJChFWEVDKS44Lmd6CisgCSQoUk0pICQoREVTVERJUikkKG1hbjVkaXIpLyQoRVhFQykuY29uZi41Lmd6CisrCSQoUk0pICQoREVTVERJUikkKG1hbjhkaXIpL21wYXRoY29uZi44Lmd6CisgCisgY2xlYW46IGRlcF9jbGVhbgorIAkkKFJNKSBjb3JlICoubyAkKEVYRUMpICouZ3oKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbXBhdGhjb25mIGIvbXVsdGlwYXRoL21wYXRoY29uZgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU4MzkxMzQKKy0tLSAvZGV2L251bGwKKysrKyBiL211bHRpcGF0aC9tcGF0aGNvbmYKK0BAIC0wLDAgKzEsNDY0IEBACisrIyEvYmluL2Jhc2gKKysjCisrIyBDb3B5cmlnaHQgKEMpIDIwMTAgUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyMKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCBwYWNrYWdlLgorKyMKKysjIFRoaXMgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgaXMgbWFkZSBhdmFpbGFibGUgdG8gYW55b25lIHdpc2hpbmcgdG8gdXNlLAorKyMgbW9kaWZ5LCBjb3B5LCBvciByZWRpc3RyaWJ1dGUgaXQgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKKysjIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2LjIuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisrCisrIworKyMgU2ltcGxlIGVkaXR0aW5nIG9mIC9ldGMvbXVsdGlwYXRoLmNvbmYKKysjIFRoaXMgcHJvZ3JhbSB3YXMgbGFyZ2VseSByaXBwZWQgb2ZmIGZyb20gbHZtY29uZgorKyMKKysKKyt1bnNldCBFTkFCTEUgRklORCBGUklFTkRMWSBNT0RVTEUgTVVMVElQQVRIRCBIQVZFX0RJU0FCTEUgSEFWRV9XV0lEX0RJU0FCTEUgSEFWRV9GSU5EIEhBVkVfQkxBQ0tMSVNUIEhBVkVfRVhDRVBUSU9OUyBIQVZFX0RFRkFVTFRTIEhBVkVfRlJJRU5ETFkgSEFWRV9NVUxUSVBBVEhEIEhBVkVfTU9EVUxFIEhBVkVfT1VURklMRSBTSE9XX1NUQVRVUyBDSEFOR0VEX0NPTkZJRyBXV0lEX0xJU1QKKysKKytERUZBVUxUX0NPTkZJRz0iIyBkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCBjb25maWd1cmF0aW9uIGZpbGUKKysKKysjIEZvciBhIGNvbXBsZXRlIGxpc3Qgb2YgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB2YWx1ZXMsIHJ1biBlaXRoZXI6CisrIyAjIG11bHRpcGF0aCAtdAorKyMgb3IKKysjICMgbXVsdGlwYXRoZCBzaG93IGNvbmZpZworKworKyMgRm9yIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aCBkZXNjcmlwdGlvbnMsIHNlZSB0aGUKKysjIG11bHRpcGF0aC5jb25mIG1hbiBwYWdlLgorKworK2RlZmF1bHRzIHsKKysJdXNlcl9mcmllbmRseV9uYW1lcyB5ZXMKKysJZmluZF9tdWx0aXBhdGhzIHllcworK30KKysKKytibGFja2xpc3RfZXhjZXB0aW9ucyB7CisrICAgICAgICBwcm9wZXJ0eSBcIihTQ1NJX0lERU5UX3xJRF9XV04pXCIKKyt9IgorKworK0NPTkZJR0ZJTEU9Ii9ldGMvbXVsdGlwYXRoLmNvbmYiCisrT1VUUFVURklMRT0iL2V0Yy9tdWx0aXBhdGguY29uZiIKKytNVUxUSVBBVEhESVI9Ii9ldGMvbXVsdGlwYXRoIgorK1RNUEZJTEU9Ii9ldGMvbXVsdGlwYXRoLy5tdWx0aXBhdGguY29uZi50bXAiCisrV1dJRFM9MAorKworK2Z1bmN0aW9uIHVzYWdlCisreworKwllY2hvICJ1c2FnZTogJDAgPGNvbW1hbmQ+IgorKwllY2hvICIiCisrCWVjaG8gIkNvbW1hbmRzOiIKKysJZWNobyAiRW5hYmxlOiAtLWVuYWJsZSAiCisrCWVjaG8gIkRpc2FibGU6IC0tZGlzYWJsZSIKKysJZWNobyAiT25seSBhbGxvdyBjZXJ0YWluIHd3aWRzIChpbnN0ZWFkIG9mIGVuYWJsZSk6IC0tYWxsb3cgPFdXSUQ+IgorKwllY2hvICJTZXQgdXNlcl9mcmllbmRseV9uYW1lcyAoRGVmYXVsdCB5KTogLS11c2VyX2ZyaWVuZGx5X25hbWVzIDx5fG4+IgorKwllY2hvICJTZXQgZmluZF9tdWx0aXBhdGhzIChEZWZhdWx0IHkpOiAtLWZpbmRfbXVsdGlwYXRocyA8eXxuPiIKKysJZWNobyAiTG9hZCB0aGUgZG0tbXVsdGlwYXRoIG1vZHVsZXMgb24gZW5hYmxlIChEZWZhdWx0IHkpOiAtLXdpdGhfbW9kdWxlIDx5fG4+IgorKwllY2hvICJzdGFydC9zdG9wL3JlbG9hZCBtdWx0aXBhdGhkIChEZWZhdWx0IG4pOiAtLXdpdGhfbXVsdGlwYXRoZCA8eXxuPiIKKysJZWNobyAic2VsZWN0IG91dHB1dCBmaWxlIChEZWZhdWx0IC9ldGMvbXVsdGlwYXRoLmNvbmYpOiAtLW91dGZpbGUgPEZJTEU+IgorKwllY2hvICIiCisrfQorKworK2Z1bmN0aW9uIGFkZF93d2lkCisreworKwlJTkRFWD0wCisrCXdoaWxlIFsgIiRJTkRFWCIgLWx0ICIkV1dJRFMiIF0gOyBkbworKwkJaWYgWyAiJDEiID0gIiR7V1dJRF9MSVNUWyRJTkRFWF19IiBdIDsgdGhlbgorKwkJCXJldHVybgorKwkJZmkKKysJCSgoSU5ERVgrKykpCisrCWRvbmUKKysJV1dJRF9MSVNUWyRXV0lEU109IiQxIgorKwkoKFdXSURTKyspKQorK30KKysKKytmdW5jdGlvbiBnZXRfZG1fZGVwcworK3sKKysJc2hpZnQgMworKwl3aGlsZSBbIC1uICIkMSIgLWEgLW4gIiQyIiBdOyBkbworKwkJTUFKT1I9JChlY2hvICQxIHwgdHIgLWQgJygsJykKKysJCU1JTk9SPSQoZWNobyAkMiB8IHRyIC1kICcpJykKKysJCVVVSUQ9YGRtc2V0dXAgaW5mbyAtYyAtLW5vaGVhZGluZ3MgLW8gdXVpZCAtaiAkTUFKT1IgLW0gJE1JTk9SICAyPiAvZGV2L251bGxgCisrCQlpZiBbIC1uICIkVVVJRCIgXSA7IHRoZW4KKysJCQlzZXRfZG1fd3dpZCAkVVVJRAorKwkJZmkKKysJCXNoaWZ0IDIKKysJZG9uZQorK30KKysKKytmdW5jdGlvbiBzZXRfZG1fd3dpZAorK3sKKysJaWYgW1sgIiQxIiA9fiBecGFydFtbOmRpZ2l0Ol1dKy1tcGF0aC0gXV0gOyB0aGVuCisrCQlhZGRfd3dpZCAiJHsxIyNwYXJ0Ki1tcGF0aC19IgorKwllbGlmIFtbICIkMSIgPX4gXm1wYXRoLSBdXSA7IHRoZW4KKysJCWFkZF93d2lkICIkezEjI21wYXRoLX0iCisrCWVsc2UKKysJCWdldF9kbV9kZXBzIGBkbXNldHVwIGRlcHMgLXUgJDFgCisrCWZpCisrfQorKworK2Z1bmN0aW9uIHNldF93d2lkCisreworKwlVVUlEPSIiCisrCWlmIFtbICIkMSIgPX4gXltbOmRpZ2l0Ol1dKzpbWzpkaWdpdDpdXSskIF1dIDsgdGhlbgorKwkJTUFKT1I9JHsxJSU6Kn0KKysJCU1JTk9SPSR7MSMjKjp9CisrCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgLWogJE1BSk9SIC1tICRNSU5PUiAgMj4gL2Rldi9udWxsYAorKwllbHNlCisrCQlVVUlEPWBkbXNldHVwIGluZm8gLWMgLS1ub2hlYWRpbmdzIC1vIHV1aWQgJDEgMj4gL2Rldi9udWxsYAorKwlmaQorKwlpZiBbIC1uICIkVVVJRCIgXSA7IHRoZW4KKysJCXNldF9kbV93d2lkICRVVUlECisrCWVsc2UKKysJCWFkZF93d2lkICIkMSIKKysJZmkKKyt9CisrCisrZnVuY3Rpb24gcGFyc2VfYXJncworK3sKKysJd2hpbGUgWyAtbiAiJDEiIF07IGRvCisrCQljYXNlICQxIGluCisrCQkJLS1lbmFibGUpCisrCQkJCUVOQUJMRT0xCisrCQkJCXNoaWZ0CisrCQkJCTs7CisrCQkJLS1kaXNhYmxlKQorKwkJCQlFTkFCTEU9MAorKwkJCQlzaGlmdAorKwkJCQk7OworKwkJCS0tYWxsb3cpCisrCQkJCUVOQUJMRT0yCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlzZXRfd3dpZCAkMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS11c2VyX2ZyaWVuZGx5X25hbWVzKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJRlJJRU5ETFk9JDIKKysJCQkJCXNoaWZ0IDIKKysJCQkJZWxzZQorKwkJCQkJdXNhZ2UKKysJCQkJCWV4aXQgMQorKwkJCQlmaQorKwkJCQk7OworKwkJCS0tZmluZF9tdWx0aXBhdGhzKQorKwkJCQlpZiBbIC1uICIkMiIgXTsgdGhlbgorKwkJCQkJRklORD0kMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS13aXRoX21vZHVsZSkKKysJCQkJaWYgWyAtbiAiJDIiIF07IHRoZW4KKysJCQkJCU1PRFVMRT0kMgorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJLS13aXRoX211bHRpcGF0aGQpCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlNVUxUSVBBVEhEPSQyCisrCQkJCQlzaGlmdCAyCisrCQkJCWVsc2UKKysJCQkJCXVzYWdlCisrCQkJCQlleGl0IDEKKysJCQkJZmkKKysJCQkJOzsKKysJCQktLW91dGZpbGUpCisrCQkJCWlmIFsgLW4gIiQyIiBdOyB0aGVuCisrCQkJCQlPVVRQVVRGSUxFPSQyCisrCQkJCQlIQVZFX09VVEZJTEU9MQorKwkJCQkJc2hpZnQgMgorKwkJCQllbHNlCisrCQkJCQl1c2FnZQorKwkJCQkJZXhpdCAxCisrCQkJCWZpCisrCQkJCTs7CisrCQkJKikKKysJCQkJdXNhZ2UKKysJCQkJZXhpdAorKwkJZXNhYworKwlkb25lCisrfQorKworK2Z1bmN0aW9uIHZhbGlkYXRlX2FyZ3MKKyt7CisrCWlmIFsgIiRFTkFCTEUiID0gIjAiIF0gJiYgWyAtbiAiJEZSSUVORExZIiAtbyAtbiAiJEZJTkQiIC1vIC1uICIkTU9EVUxFIiBdOyB0aGVuCisrCQllY2hvICJpZ25vcmluZyBleHRyYSBwYXJhbWV0ZXJzIG9uIGRpc2FibGUiCisrCQlGUklFTkRMWT0iIgorKwkJRklORD0iIgorKwkJTU9EVUxFPSIiCisrCWZpCisrCWlmIFsgLW4gIiRGUklFTkRMWSIgXSAmJiBbICIkRlJJRU5ETFkiICE9ICJ5IiAtYSAiJEZSSUVORExZIiAhPSAibiIgXTsgdGhlbgorKwkJZWNobyAiLS11c2VyX2ZyaWVuZGx5X25hbWVzIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCisrCQlleGl0IDEKKysJZmkKKysJaWYgWyAtbiAiJEZJTkQiIF0gJiYgWyAiJEZJTkQiICE9ICJ5IiAtYSAiJEZJTkQiICE9ICJuIiBdOyB0aGVuCisrCQllY2hvICItLWZpbmRfbXVsdGlwYXRocyBtdXN0IGJlIGVpdGhlciAneScgb3IgJ24nIgorKwkJZXhpdCAxCisrCWZpCisrCWlmIFsgLXogIiRFTkFCTEUiIC1hIC16ICIkRklORCIgLWEgLXogIiRGUklFTkRMWSIgXTsgdGhlbgorKwkJU0hPV19TVEFUVVM9MQorKwlmaQorKwlpZiBbIC1uICIkTU9EVUxFIiBdICYmIFsgIiRNT0RVTEUiICE9ICJ5IiAtYSAiJE1PRFVMRSIgIT0gIm4iIF07IHRoZW4KKysJCWVjaG8gIi0td2l0aF9tb2R1bGUgbXVzdCBiZSBlaXRoZXIgJ3knIG9yICduJyIKKysJCWV4aXQgMQorKwlmaQorKwlpZiBbIC1uICIkTVVMVElQQVRIRCIgXSAmJiBbICIkTVVMVElQQVRIRCIgIT0gInkiIC1hICIkTVVMVElQQVRIRCIgIT0gIm4iIF07IHRoZW4KKysJCWVjaG8gIi0td2l0aF9tdWx0aXBhdGhkIG11c3QgYmUgZWl0aGVyICd5JyBvciAnbiciCisrCQlleGl0IDEKKysJZmkKKysJaWYgWyAiJEVOQUJMRSIgPSAyIC1hIC16ICIkSEFWRV9PVVRGSUxFIiBdOyB0aGVuCisrCQllY2hvICJCZWNhdXNlIC0tYWxsb3cgbWFrZXMgY2hhbmdlcyB0aGF0IGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IHJldmVyc2VkLCIKKysJCWVjaG8gInlvdSBtdXN0IHNldCAtLW91dGZpbGUgd2hlbiB5b3Ugc2V0IC0tYWxsb3ciCisrCQlleGl0IDEKKysJZmkKKyt9CisrCisrZnVuY3Rpb24gYWRkX2JsYWNrbGlzdF9leGNlcHRpb25zCisreworKwlJTkRFWD0wCisrCXdoaWxlIFsgIiRJTkRFWCIgLWx0ICIkV1dJRFMiIF0gOyBkbworKwkJc2VkIC1pICcvXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qey8gYVwKKysJd3dpZCAnIlwiJHtXV0lEX0xJU1RbJElOREVYXX1cIiInCisrJyAkVE1QRklMRQorKwkJKChJTkRFWCsrKSkKKysJZG9uZQorK30KKysKKyt1bWFzayAwMDc3CisrCisrcGFyc2VfYXJncyAiJEAiCisrCisrdmFsaWRhdGVfYXJncworKworK2lmIFsgISAtZCAiJE1VTFRJUEFUSERJUiIgXTsgdGhlbgorKwllY2hvICIvZXRjL211bHRpcGF0aC8gZG9lcyBub3QgZXhpc3QuIGZhaWxpbmciCisrCWV4aXQgMQorK2ZpCisrCisrcm0gJFRNUEZJTEUgMj4gL2Rldi9udWxsCisrZWNobyAiJERFRkFVTFRfQ09ORklHIiA+ICRUTVBGSUxFCisraWYgWyAtZiAiJENPTkZJR0ZJTEUiIF07IHRoZW4KKysJY3AgJENPTkZJR0ZJTEUgJFRNUEZJTEUKKytmaQorKworK2lmIGdyZXAgLXEgIl5ibGFja2xpc3RbWzpzcGFjZTpdXSp7IiAkVE1QRklMRSA7IHRoZW4KKysJSEFWRV9CTEFDS0xJU1Q9MQorK2ZpCisrCisraWYgZ3JlcCAtcSAiXmJsYWNrbGlzdF9leGNlcHRpb25zW1s6c3BhY2U6XV0qeyIgJFRNUEZJTEUgOyB0aGVuCisrCUhBVkVfRVhDRVBUSU9OUz0xCisrZmkKKysKKytpZiBncmVwIC1xICJeZGVmYXVsdHNbWzpzcGFjZTpdXSp7IiAkVE1QRklMRSA7IHRoZW4KKysJSEFWRV9ERUZBVUxUUz0xCisrZmkKKysKKytpZiBbIC16ICIkTU9EVUxFIiAtbyAiJE1PRFVMRSIgPSAieSIgXTsgdGhlbgorKwlpZiBsc21vZCB8IGdyZXAgLXEgImRtX211bHRpcGF0aCIgOyB0aGVuCisrCQlIQVZFX01PRFVMRT0xCisrCWVsc2UKKysJCUhBVkVfTU9EVUxFPTAKKysJZmkKKytmaQorKworK2lmIFsgIiRNVUxUSVBBVEhEIiA9ICJ5IiBdOyB0aGVuCisrCWlmIC9iaW4vc3lzdGVtY3RsIHN0YXR1cyBtdWx0aXBhdGhkLnNlcnZpY2UgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKysJCUhBVkVfTVVMVElQQVRIRD0xCisrCWVsc2UKKysJCUhBVkVfTVVMVElQQVRIRD0wCisrCWZpCisrZmkKKysKKytpZiBbICIkSEFWRV9CTEFDS0xJU1QiID0gIjEiIF07IHRoZW4KKysJaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiIiA7IHRoZW4KKysJCUhBVkVfRElTQUJMRT0xCisrCWVsaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX0RJU0FCTEU9MAorKwlmaQorK2ZpCisrCisraWYgWyAiJEhBVkVfQkxBQ0tMSVNUIiA9ICIxIiBdOyB0aGVuCisrCWlmIHNlZCAtbiAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnd3aWQgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX1dXSURfRElTQUJMRT0xCisrCWVsaWYgc2VkIC1uICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKnd3aWQgXCJcLlw/XCpcIiIgOyB0aGVuCisrCQlIQVZFX1dXSURfRElTQUJMRT0wCisrCWZpCisrZmkKKysKKytpZiBbICIkSEFWRV9ERUZBVUxUUyIgPSAiMSIgXTsgdGhlbgorKwlpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwoeWVzXHwxXCkiIDsgdGhlbgorKwkJSEFWRV9GSU5EPTEKKysJZWxpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwobm9cfDBcKSIgOyB0aGVuCisrCQlIQVZFX0ZJTkQ9MAorKwlmaQorKwlpZiBzZWQgLW4gJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHAnICRUTVBGSUxFIHwgZ3JlcCAtcSAiXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKHllc1x8MVwpIiA7IHRoZW4KKysJCUhBVkVfRlJJRU5ETFk9MQorKwllbGlmIHNlZCAtbiAnL15kZWZhdWx0c1tbOnNwYWNlOl1dKnsvLC9efS8gcCcgJFRNUEZJTEUgfCBncmVwIC1xICJeW1s6c3BhY2U6XV0qdXNlcl9mcmllbmRseV9uYW1lc1tbOnNwYWNlOl1dKlwobm9cfDBcKSIgOyB0aGVuCisrCQlIQVZFX0ZSSUVORExZPTAKKysJZmkKKytmaQorKworK2lmIFsgLW4gIiRTSE9XX1NUQVRVUyIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9ESVNBQkxFIiAtbyAiJEhBVkVfRElTQUJMRSIgPSAwIF07IHRoZW4KKysJCWVjaG8gIm11bHRpcGF0aCBpcyBlbmFibGVkIgorKwllbHNlCisrCQllY2hvICJtdWx0aXBhdGggaXMgZGlzYWJsZWQiCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX0ZJTkQiICAtbyAiJEhBVkVfRklORCIgPSAwIF07IHRoZW4KKysJCWVjaG8gImZpbmRfbXVsdGlwYXRocyBpcyBkaXNhYmxlZCIKKysJZWxzZQorKwkJZWNobyAiZmluZF9tdWx0aXBhdGhzIGlzIGVuYWJsZWQiCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX0ZSSUVORExZIiAtbyAiJEhBVkVfRlJJRU5ETFkiID0gMCBdOyB0aGVuCisrCQllY2hvICJ1c2VyX2ZyaWVuZGx5X25hbWVzIGlzIGRpc2FibGVkIgorKwllbHNlCisrCQllY2hvICJ1c2VyX2ZyaWVuZGx5X25hbWVzIGlzIGVuYWJsZWQiCisrCWZpCisrCWlmIFsgLW4gIiRIQVZFX01PRFVMRSIgXTsgdGhlbgorKwkJaWYgWyAiJEhBVkVfTU9EVUxFIiA9IDEgXTsgdGhlbgorKwkJCWVjaG8gImRtX211bHRpcGF0aCBtb2R1bGUgaXMgbG9hZGVkIgorKwkJZWxzZQorKwkJCWVjaG8gImRtX211bHRpcGF0aCBtb2R1bGUgaXMgbm90IGxvYWRlZCIKKysJCWZpCisrCWZpCisrCWlmIFsgLXogIiRIQVZFX01VTFRJUEFUSEQiIF07IHRoZW4KKysJCWlmIC9iaW4vc3lzdGVtY3RsIHN0YXR1cyBtdWx0aXBhdGhkLnNlcnZpY2UgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KKysJCQlIQVZFX01VTFRJUEFUSEQ9MQorKwkJZWxzZQorKwkJCUhBVkVfTVVMVElQQVRIRD0wCisrCQlmaQorKwlmaQorKwlpZiBbICIkSEFWRV9NVUxUSVBBVEhEIiA9IDEgXTsgdGhlbgorKwkJZWNobyAibXVsdGlwYXRoZCBpcyBydW5uaW5nIgorKwllbHNlCisrCQllY2hvICJtdWx0aXBhdGhkIGlzIG5vdCBydW5uaW5nIgorKwlmaQorKwlleGl0IDAKKytmaQorKworK2lmIFsgLXogIiRIQVZFX0JMQUNLTElTVCIgXTsgdGhlbgorKwljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCisrCisrYmxhY2tsaXN0IHsKKyt9CisrX0VPRl8KKytmaQorKworK2lmIFsgLXogIiRIQVZFX0RFRkFVTFRTIiBdOyB0aGVuCisrCWNhdCA+PiAkVE1QRklMRSA8PC0gX0VPRl8KKysKKytkZWZhdWx0cyB7CisrfQorK19FT0ZfCisrZmkKKysKKytpZiBbICIkRU5BQkxFIiA9IDIgXTsgdGhlbgorKwlpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDEgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qZGV2bm9kZSBcIlwuXD9cKlwiLyMJZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKKysJZmkKKysJaWYgWyAteiAiJEhBVkVfV1dJRF9ESVNBQkxFIiBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8gYVwKKysJd3dpZCAiLioiCisrJyAkVE1QRklMRQorKwllbGlmIFsgIiRIQVZFX1dXSURfRElTQUJMRSIgPSAwIF07IHRoZW4KKysJCXNlZCAtaSAnL15ibGFja2xpc3RbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKiNbWzpzcGFjZTpdXSp3d2lkIFwiXC5cP1wqXCIvCXd3aWQgIi4qIi8nICRUTVBGSUxFCisrCWZpCisrCWlmIFsgIiRIQVZFX0VYQ0VQVElPTlMiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0X2V4Y2VwdGlvbnNbWzpzcGFjZTpdXSp7LywvXn0vIHsvXltbOnNwYWNlOl1dKnd3aWQvIGR9JyAkVE1QRklMRQorKwllbHNlCisrCQljYXQgPj4gJFRNUEZJTEUgPDwtIF9FT0ZfCisrCisrYmxhY2tsaXN0X2V4Y2VwdGlvbnMgeworK30KKytfRU9GXworKwlmaQorKwlhZGRfYmxhY2tsaXN0X2V4Y2VwdGlvbnMKKytlbGlmIFsgIiRFTkFCTEUiID0gMSBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX0RJU0FCTEUiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eYmxhY2tsaXN0W1s6c3BhY2U6XV0qey8sL159LyBzL15bWzpzcGFjZTpdXSpkZXZub2RlIFwiXC5cP1wqXCIvIwlkZXZub2RlICIuKiIvJyAkVE1QRklMRQorKwlmaQorK2VsaWYgWyAiJEVOQUJMRSIgPSAwIF07IHRoZW4KKysJaWYgWyAteiAiJEhBVkVfRElTQUJMRSIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvIGFcCisrCWRldm5vZGUgIi4qIgorKycgJFRNUEZJTEUKKysJZWxpZiBbICIkSEFWRV9ESVNBQkxFIiA9IDAgXTsgdGhlbgorKwkJc2VkIC1pICcvXmJsYWNrbGlzdFtbOnNwYWNlOl1dKnsvLC9efS8gcy9eW1s6c3BhY2U6XV0qI1tbOnNwYWNlOl1dKmRldm5vZGUgXCJcLlw/XCpcIi8JZGV2bm9kZSAiLioiLycgJFRNUEZJTEUKKysJZmkKKytmaQorKworK2lmIFsgIiRGSU5EIiA9ICJuIiBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX0ZJTkQiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwoeWVzXHwxXCkvCWZpbmRfbXVsdGlwYXRocyBuby8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZWxpZiBbICIkRklORCIgPSAieSIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9GSU5EIiBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LyBhXAorKwlmaW5kX211bHRpcGF0aHMgeWVzCisrJyAkVE1QRklMRQorKwkJQ0hBTkdFRF9DT05GSUc9MQorKwllbGlmIFsgIiRIQVZFX0ZJTkQiID0gMCBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKmZpbmRfbXVsdGlwYXRoc1tbOnNwYWNlOl1dKlwobm9cfDBcKS8JZmluZF9tdWx0aXBhdGhzIHllcy8nICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWZpCisrZmkKKysKKytpZiBbICIkRlJJRU5ETFkiID0gIm4iIF07IHRoZW4KKysJaWYgWyAiJEhBVkVfRlJJRU5ETFkiID0gMSBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKHllc1x8MVwpLwl1c2VyX2ZyaWVuZGx5X25hbWVzIG5vLycgJFRNUEZJTEUKKysJCUNIQU5HRURfQ09ORklHPTEKKysJZmkKKytlbGlmIFsgIiRGUklFTkRMWSIgPSAieSIgXTsgdGhlbgorKwlpZiBbIC16ICIkSEFWRV9GUklFTkRMWSIgXTsgdGhlbgorKwkJc2VkIC1pICcvXmRlZmF1bHRzW1s6c3BhY2U6XV0qey8gYVwKKysJdXNlcl9mcmllbmRseV9uYW1lcyB5ZXMKKysnICRUTVBGSUxFCisrCQlDSEFOR0VEX0NPTkZJRz0xCisrCWVsaWYgWyAiJEhBVkVfRlJJRU5ETFkiID0gMCBdOyB0aGVuCisrCQlzZWQgLWkgJy9eZGVmYXVsdHNbWzpzcGFjZTpdXSp7LywvXn0vIHMvXltbOnNwYWNlOl1dKnVzZXJfZnJpZW5kbHlfbmFtZXNbWzpzcGFjZTpdXSpcKG5vXHwwXCkvCXVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzLycgJFRNUEZJTEUKKysJCUNIQU5HRURfQ09ORklHPTEKKysJZmkKKytmaQorKworK2lmIFsgLWYgIiRPVVRQVVRGSUxFIiBdOyB0aGVuCisrCWNwICRPVVRQVVRGSUxFICRPVVRQVVRGSUxFLm9sZAorKwlpZiBbICQ/ICE9IDAgXTsgdGhlbgorKwkJZWNobyAiZmFpbGVkIHRvIGJhY2t1cCBvbGQgY29uZmlnIGZpbGUsICRPVVRQVVRGSUxFIG5vdCB1cGRhdGVkIgorKwkJZXhpdCAxCisrCWZpCisrZmkKKysKKytjcCAkVE1QRklMRSAkT1VUUFVURklMRQorK2lmIFsgJD8gIT0gMCBdOyB0aGVuCisrCWVjaG8gImZhaWxlZCB0byBjb3B5IG5ldyBjb25maWcgZmlsZSBpbnRvIHBsYWNlLCBjaGVjayAkT1VUUFVURklMRSBpcyBzdGlsbCBPSyIKKysJZXhpdCAxCisrZmkKKysKKytybSAtZiAkVE1QRklMRQorKworK2lmIFsgIiRFTkFCTEUiID0gMSBdOyB0aGVuCisrCWlmIFsgIiRIQVZFX01PRFVMRSIgPSAwIF07IHRoZW4KKysJCW1vZHByb2JlIGRtX211bHRpcGF0aAorKwlmaQorKwlpZiBbICIkSEFWRV9NVUxUSVBBVEhEIiA9IDAgXTsgdGhlbgorKwkJc3lzdGVtY3RsIHN0YXJ0IG11bHRpcGF0aGQuc2VydmljZQorKwlmaQorK2VsaWYgWyAiJEVOQUJMRSIgPSAwIF07IHRoZW4KKysJaWYgWyAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KKysJCXN5c3RlbWN0bCBzdG9wIG11bHRpcGF0aGQuc2VydmljZQorKwlmaQorK2VsaWYgWyAtbiAiJENIQU5HRURfQ09ORklHIiAtYSAiJEhBVkVfTVVMVElQQVRIRCIgPSAxIF07IHRoZW4KKysJc3lzdGVtY3RsIHJlbG9hZCBtdWx0aXBhdGhkLnNlcnZpY2UKKytmaQorZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tcGF0aGNvbmYuOCBiL211bHRpcGF0aC9tcGF0aGNvbmYuOAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjRjZDMyNjcKKy0tLSAvZGV2L251bGwKKysrKyBiL211bHRpcGF0aC9tcGF0aGNvbmYuOAorQEAgLTAsMCArMSwxMDEgQEAKKysuVEggTVBBVEhDT05GIDggIkp1bmUgMjAxMCIgIiIgIkxpbnV4IEFkbWluaXN0cmF0b3IncyBNYW51YWwiCisrLlNIIE5BTUUKKyttcGF0aGNvbmYgLSBBIHRvb2wgZm9yIGNvbmZpZ3VyaW5nIGRldmljZS1tYXBwZXItbXVsdGlwYXRoCisrLlNIIFNZTk9QU0lTCisrLkIgbXBhdGhjb25mCisrLlJCIFtcfCBjb21tYW5kcyBcfF0KKysuUkIgW1x8IG9wdGlvbnMgXHxdCisrLlNIIERFU0NSSVBUSU9OCisrLkIgbXBhdGhjb25mCisraXMgYSB1dGlsaXR5IHRoYXQgY3JlYXRlcyBvciBtb2RpZmllcworKy5CIC9ldGMvbXVsdGlwYXRoLmNvbmYuCisrSXQgY2FuIGVuYWJsZSBvciBkaXNhYmxlIG11bHRpcGF0aGluZyBhbmQgY29uZmlndXJlIHNvbWUgY29tbW9uIG9wdGlvbnMuCisrLkIgbXBhdGhjb25mCisrY2FuIGFsc28gbG9hZCB0aGUKKysuQiBkbV9tdWx0aXBhdGgKKyttb2R1bGUsIHN0YXJ0IGFuZCBzdG9wIHRoZQorKy5CIG11bHRpcGF0aGQKKytkYWVtb24sIGFuZCBjb25maWd1cmUgdGhlCisrLkIgbXVsdGlwYXRoZAorK3NlcnZpY2UgdG8gc3RhcnQgYXV0b21hdGljYWxseSBvciBub3QuIElmCisrLkIgbXBhdGhjb25mCisraXMgY2FsbGVkIHdpdGggbm8gY29tbWFuZHMsIGl0IHdpbGwgZGlzcGxheSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorKworK1RoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIG1wYXRoY29uZiBhcmUKKysuQiAtLXdpdGhfbW9kdWxlCisrVGhlCisrLkIgLS13aXRoX211bHRpcGF0aGQKKytvcHRpb24gaXMgbm90IHNldCBieSBkZWZhdWx0LiAgRW5hYmxpbmcgbXVsdGlwYXRoaW5nIHdpbGwgbG9hZCB0aGUKKysuQiBkbV9tdWx0aXBhdGgKKyttb2R1bGUgYnV0IGl0IHdpbGwgbm90IGltbWVkaWF0ZWx5IHN0YXJ0IGl0LiBUaGlzIGlzIHNvCisrdGhhdCB1c2VycyBjYW4gbWFudWFsbHkgZWRpdCB0aGVpciBjb25maWcgZmlsZSBpZiBuZWNlc3NhcnksIGJlZm9yZSBzdGFydGluZworKy5CIG11bHRpcGF0aGQuCisrCisrSWYKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrYWxyZWFkeSBleGlzdHMsIG1wYXRoY29uZiB3aWxsIGVkaXQgaXQuIElmIGl0IGRvZXMgbm90IGV4aXN0LCBtcGF0aGNvbmYgd2lsbAorK2NyZWF0ZSBhIGRlZmF1bHQgZmlsZSB3aXRoCisrLkIgdXNlcl9mcmllbmRseV9uYW1lcworK2FuZAorKy5CIGZpbmRfbXVsdGlwYXRocworK3NldC4gVG8gZGlzYWJsZSB0aGVzZSwgdXNlIHRoZQorKy5CIC0tdXNlcl9mcmllbmRseV9uYW1lcyBuCisrYW5kCisrLkIgLS1maW5kX211bHRpcGF0aHMgbgorK29wdGlvbnMKKysuU0ggQ09NTUFORFMKKysuVFAKKysuQiAtLWVuYWJsZQorK1JlbW92ZXMgYW55IGxpbmUgdGhhdCBibGFja2xpc3RzIGFsbCBkZXZpY2Ugbm9kZXMgZnJvbSB0aGUKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrYmxhY2tsaXN0IHNlY3Rpb24uCisrLlRQCisrLkIgLS1kaXNhYmxlCisrQWRkcyBhIGxpbmUgdGhhdCBibGFja2xpc3RzIGFsbCBkZXZpY2Ugbm9kZXMgdG8gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2JsYWNrbGlzdCBzZWN0aW9uLiBJZiBubyBibGFja2xpc3Qgc2VjdGlvbiBleGlzdHMsIGl0IHdpbGwgY3JlYXRlIG9uZS4KKysuVFAKKysuQiAtLXVzZXJfZnJpZW5kbHlfbmFtZSBcZlAgeyBcZkJ5XGZQIHwgXGZCblxmUCB9CisrSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgYWRkcyB0aGUgbGluZQorKy5CIHVzZXJfZnJpZW5kbHlfbmFtZXMgeWVzCisrdG8gdGhlCisrLkIgL2V0Yy9tdWx0aXBhdGguY29uZgorK2RlZmF1bHRzIHNlY3Rpb24uIElmIHNldCB0byBcZkJuXGZQLCB0aGlzIHJlbW92ZXMgdGhlIGxpbmUsIGlmIHByZXNlbnQuIFRoaXMKKytjb21tYW5kIGNhbiBiZSB1c2VkIGFsb25nIHdpdGggYW55IG90aGVyIGNvbW1hbmQuCisrLlRQCisrLkIgLS1maW5kX211bHRpcGF0aHNcZlAgeyBcZkJ5XGZQIHwgXGZCblxmUCB9CisrSWYgc2V0IHRvIFxmQnlcZlAsIHRoaXMgYWRkcyB0aGUgbGluZQorKy5CIGZpbmRfbXVsdGlwYXRocyB5ZXMKKyt0byB0aGUKKysuQiAvZXRjL211bHRpcGF0aC5jb25mCisrZGVmYXVsdHMgc2VjdGlvbi4gSWYgc2V0IHRvIFxmQm5cZlAsIHRoaXMgcmVtb3ZlcyB0aGUgbGluZSwgaWYgcHJlc2VudC4gVGhpcworK2NvbW1hbmQgY2FuIGJlIHVzZWQgYWxkb25nIHdpdGggYW55IG90aGVyIGNvbW1hbmQuCisrLlNIIE9QVElPTlMKKysuVFAKKysuQiAtLXdpdGhfbW9kdWxlXGZQIHsgXGZCeVxmUCB8IFxmQm5cZlAgfQorK0lmIHNldCB0byBcZkJ5XGZQLCB0aGlzIHJ1bnMKKysuQiBtb2Rwcm9iZSBkbV9tdWx0aXBhdGgKKyt0byBpbnN0YWxsIHRoZSBtdWx0aXBhdGggbW9kdWxlcy4gVGhpcyBvcHRpb24gb25seSB3b3JrcyB3aXRoIHRoZQorKy5CIC0tZW5hYmxlCisrY29tbWFuZC4gVGhpcyBvcHRpb24gaXMgc2V0IHRvIFxmQnlcZlAgYnkgZGVmYXVsdC4KKysuVFAKKysuQiAtLXdpdGhfbXVsdGlwYXRoZCB7IFxmQnlcZlAgfCBcZkJuXGZQIH0KKytJZiBzZXQgdG8gXGZCeVxmUCwgdGhpcyBydW5zCisrLkIgc2VydmljZSBtdWx0aXBhdGhkIHN0YXJ0CisrdG8gc3RhcnQgdGhlIG11bHRpcGF0aGQgZGFlbW9uIG9uIFxmQi0tZW5hYmxlXGZQLAorKy5CIHNlcnZpY2UgbXVsdGlwYXRoZCBzdG9wCisrdG8gc3RvcCB0aGUgbXVsdGlwYXRoZCBkYWVtb24gb24gXGZCLS1kaXNhYmxlXGZQLCBhbmQKKysuQiBzZXJ2aWNlIG11bHRpcGF0aGQgcmVsb2FkCisrdG8gcmVjb25maWd1cmUgbXVsdGlwYXRoZCBvbiBcZkItLXVzZXJfZnJpbmRseV9uYW1lc1xmUCBhbmQKKytcZkItLWZpbmRfbXVsdGlwYXRoc1xmUC4KKytUaGlzIG9wdGlvbiBpcyBzZXQgdG8gXGZCblxmUCBieSBkZWZhdWx0LgorKy5TSCBGSUxFUworKy5CUiAvZXRjL211bHRpcGF0aC5jb25mCisrLlNIICJTRUUgQUxTTyIKKysuQlIgbXVsdGlwYXRoLmNvbmYgKDUpLAorKy5CUiBtb2Rwcm9iZSAoOCksCisrLkJSIG11bHRpcGF0aCAoOCksCisrLkJSIG11bHRpcGF0aGQgKDgpLAorKy5CUiBzZXJ2aWNlICg4KSwKKysuU0ggQVVUSE9SCisrQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRmMDIyZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI2LVJILWFkZC13d2lkcy1mcm9tLWtlcm5lbC1jbWRsaW5lLW1wYXRoLnd3aWRzLXdpdGgtQS5wYXRjaApAQCAtMCwwICsxLDE2NyBAQAorRnJvbSAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBPY3QgMjAxNCAxMToyMDozNCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogYWRkIHd3aWRzIGZyb20ga2VybmVsIGNtZGxpbmUgbXBhdGgud3dpZHMgd2l0aCAtQQorCitUaGlzIHBhdGNoIGFkZHMgYW5vdGhlciBvcHRpb24gdG8gbXVsdGlwYXRoLCAiLUEiLCB3aGljaCByZWFkcworL3Byb2MvY21kbGluZSBmb3IgbXBhdGgud3dpZD08V1dJRD4gb3B0aW9ucywgYW5kIGFkZHMgYW55IHd3aWRzIGl0IGZpbmRzCit0byAvZXRjL211bHRpcGF0aC93d2lkcy4gIFdoaWxlIHRoaXMgaXNuJ3QgdXN1YWxseSBpbXBvcnRhbnQgZHVyaW5nCitub3JtYWwgb3BlcmF0aW9uLCBzaW5jZSB0aGVzZSB3d2lkcyBzaG91bGQgYWxyZWFkeSBiZSBhZGRlZCwgaXQgY2FuIGJlCitoZWxwZnVsIGR1cmluZyBpbnN0YWxsYXRpb24sIHRvIG1ha2Ugc3VyZSB0aGF0IG11bHRpcGF0aCBjYW4gY2xhaW0KK2RldmljZXMgYXMgaXRzIG93biwgYmVmb3JlIExWTSBvciBzb21ldGhpbmcgZWxzZSBtYWtlcyB1c2Ugb2YgdGhlbS4gIFRoZQorcGF0Y2ggYWxzbyBleGVjcyAiL3NiaW4vbXVsdGlwYXRoIC1BIiBiZWZvcmUgcnVubmluZyBtdWx0aXBhdGhkIGluCittdWx0aXBhdGhkLnNlcnZpY2UKKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL3d3aWRzLmMgICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbGlibXVsdGlwYXRoL3d3aWRzLmggICAgICAgICAgfCAgMSArCisgbXVsdGlwYXRoL21haW4uYyAgICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCisgbXVsdGlwYXRoL211bHRpcGF0aC44ICAgICAgICAgfCAgNSArKysrLQorIG11bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlIHwgIDEgKworIDUgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm11bHRpcGF0aC93d2lkcy5jIGIvbGlibXVsdGlwYXRoL3d3aWRzLmMKK2luZGV4IDUzZTc5NTEuLjM5ZTA4Y2QgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvd3dpZHMuYworKysrIGIvbGlibXVsdGlwYXRoL3d3aWRzLmMKK0BAIC00NDMsMyArNDQzLDQ3IEBAIGludCBvcCAjIyBfd3dpZChjb25zdCBjaGFyICp3d2lkKSBcCisgZGVjbGFyZV9mYWlsZWRfd3dpZF9vcChpc19mYWlsZWQsIGZhbHNlKQorIGRlY2xhcmVfZmFpbGVkX3d3aWRfb3AobWFya19mYWlsZWQsIHRydWUpCisgZGVjbGFyZV9mYWlsZWRfd3dpZF9vcCh1bm1hcmtfZmFpbGVkLCB0cnVlKQorKworK2ludCByZW1lbWJlcl9jbWRsaW5lX3d3aWQodm9pZCkKKyt7CisrCUZJTEUgKmYgPSBOVUxMOworKwljaGFyIGJ1ZltMSU5FX01BWF0sICpuZXh0LCAqcHRyOworKwlpbnQgcmV0ID0gMDsKKysKKysJZiA9IGZvcGVuKCIvcHJvYy9jbWRsaW5lIiwgInJlIik7CisrCWlmICghZikgeworKwkJY29uZGxvZygwLCAiY2FuJ3Qgb3BlbiAvcHJvYy9jbWRsaW5lIDogJXMiLCBzdHJlcnJvcihlcnJubykpOworKwkJcmV0dXJuIC0xOworKwl9CisrCisrCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKKysJCWlmIChmZXJyb3IoZikpCisrCQkJY29uZGxvZygwLCAicmVhZCBvZiAvcHJvYy9jbWRsaW5lIGZhaWxlZCA6ICVzIiwKKysJCQkJc3RyZXJyb3IoZXJybm8pKTsKKysJCWVsc2UKKysJCQljb25kbG9nKDAsICJjb3VsZG4ndCByZWFkIC9wcm9jL2NtZGxpbmUiKTsKKysJCWZjbG9zZShmKTsKKysJCXJldHVybiAtMTsKKysJfQorKwlmY2xvc2UoZik7CisrCW5leHQgPSBidWY7CisrCXdoaWxlKChwdHIgPSBzdHJzdHIobmV4dCwgIm1wYXRoLnd3aWQ9IikpKSB7CisrCQlwdHIgKz0gMTE7CisrCQluZXh0ID0gc3RycGJyayhwdHIsICIgXHRcbiIpOworKwkJaWYgKG5leHQpIHsKKysJCQkqbmV4dCA9ICdcMCc7CisrCQkJbmV4dCsrOworKwkJfQorKwkJaWYgKHN0cmxlbihwdHIpKSB7CisrCQkJaWYgKHJlbWVtYmVyX3d3aWQocHRyKSAhPSAwKQorKwkJCQlyZXQgPSAtMTsKKysJCX0KKysJCWVsc2UgeworKwkJCWNvbmRsb2coMCwgImVtcHR5IG1wYXRoLnd3aWQga2VybmVsIGNvbW1hbmQgbGluZSBvcHRpb24iKTsKKysJCQlyZXQgPSAtMTsKKysJCX0KKysJCWlmICghbmV4dCkKKysJCQlicmVhazsKKysJfQorKwlyZXR1cm4gcmV0OworK30KK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvd3dpZHMuaCBiL2xpYm11bHRpcGF0aC93d2lkcy5oCitpbmRleCAwYzZlZTU0Li5lMzJhMGIwIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL3d3aWRzLmgKKysrKyBiL2xpYm11bHRpcGF0aC93d2lkcy5oCitAQCAtMTcsNiArMTcsNyBAQCBpbnQgcmVtZW1iZXJfd3dpZChjaGFyICp3d2lkKTsKKyBpbnQgY2hlY2tfd3dpZHNfZmlsZShjaGFyICp3d2lkLCBpbnQgd3JpdGVfd3dpZCk7CisgaW50IHJlbW92ZV93d2lkKGNoYXIgKnd3aWQpOworIGludCByZXBsYWNlX3d3aWRzKHZlY3RvciBtcCk7CisraW50IHJlbWVtYmVyX2NtZGxpbmVfd3dpZCh2b2lkKTsKKyAKKyBlbnVtIHsKKyAJV1dJRF9JU19OT1RfRkFJTEVEID0gMCwKK2RpZmYgLS1naXQgYS9tdWx0aXBhdGgvbWFpbi5jIGIvbXVsdGlwYXRoL21haW4uYworaW5kZXggNmZkZGUwMy4uN2JhYzIzMiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tYWluLmMKKysrKyBiL211bHRpcGF0aC9tYWluLmMKK0BAIC0xMDksNyArMTA5LDcgQEAgdXNhZ2UgKGNoYXIgKiBwcm9nbmFtZSkKKyB7CisgCWZwcmludGYgKHN0ZGVyciwgVkVSU0lPTl9TVFJJTkcpOworIAlmcHJpbnRmIChzdGRlcnIsICJVc2FnZTpcbiIpOworLQlmcHJpbnRmIChzdGRlcnIsICIgICVzIFstYXwtY3wtd3wtV10gWy1kXSBbLXJdIFstaV0gWy12IGx2bF0gWy1wIHBvbF0gWy1iIGZpbF0gWy1xXSBbZGV2XVxuIiwgcHJvZ25hbWUpOworKwlmcHJpbnRmIChzdGRlcnIsICIgICVzIFstYXwtQXwtY3wtd3wtV10gWy1kXSBbLXJdIFstaV0gWy12IGx2bF0gWy1wIHBvbF0gWy1iIGZpbF0gWy1xXSBbZGV2XVxuIiwgcHJvZ25hbWUpOworIAlmcHJpbnRmIChzdGRlcnIsICIgICVzIC1sfC1sbHwtZiBbLXYgbHZsXSBbLWIgZmlsXSBbLVIgbnVtXSBbZGV2XVxuIiwgcHJvZ25hbWUpOworIAlmcHJpbnRmIChzdGRlcnIsICIgICVzIC1GIFstdiBsdmxdIFstUiBudW1dXG4iLCBwcm9nbmFtZSk7CisgCWZwcmludGYgKHN0ZGVyciwgIiAgJXMgLXRcbiIsIHByb2duYW1lKTsKK0BAIC0xMjMsNiArMTIzLDggQEAgdXNhZ2UgKGNoYXIgKiBwcm9nbmFtZSkKKyAJCSIgIC1mICAgICAgZmx1c2ggYSBtdWx0aXBhdGggZGV2aWNlIG1hcFxuIgorIAkJIiAgLUYgICAgICBmbHVzaCBhbGwgbXVsdGlwYXRoIGRldmljZSBtYXBzXG4iCisgCQkiICAtYSAgICAgIGFkZCBhIGRldmljZSB3d2lkIHRvIHRoZSB3d2lkcyBmaWxlXG4iCisrCQkiICAtQSAgICAgIGFkZCBkZXZpY2VzIGZyb20ga2VybmVsIGNvbW1hbmQgbGluZSBtcGF0aC53d2lkc1xuIgorKwkJIiAgICAgICAgICBwYXJhbWV0ZXJzIHRvIHd3aWRzIGZpbGVcbiIKKyAJCSIgIC1jICAgICAgY2hlY2sgaWYgYSBkZXZpY2Ugc2hvdWxkIGJlIGEgcGF0aCBpbiBhIG11bHRpcGF0aCBkZXZpY2VcbiIKKyAJCSIgIC1DICAgICAgY2hlY2sgaWYgYSBtdWx0aXBhdGggZGV2aWNlIGhhcyB1c2FibGUgcGF0aHNcbiIKKyAJCSIgIC1xICAgICAgYWxsb3cgcXVldWVfaWZfbm9fcGF0aCB3aGVuIG11bHRpcGF0aGQgaXMgbm90IHJ1bm5pbmdcbiIKK0BAIC05MDcsNyArOTA5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWV4aXQoMSk7CisgCW11bHRpcGF0aF9jb25mID0gY29uZjsKKyAJY29uZi0+cmV0cmlnZ2VyX3RyaWVzID0gMDsKKy0Jd2hpbGUgKChhcmcgPSBnZXRvcHQoYXJnYywgYXJndiwgIjphZGNDaGw6OkZmTTp2OnA6YjpCclI6aXRxdVV3VyIpKSAhPSBFT0YgKSB7CisrCXdoaWxlICgoYXJnID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICI6YUFkY0NobDo6RmZNOnY6cDpiOkJyUjppdHF1VXdXIikpICE9IEVPRiApIHsKKyAJCXN3aXRjaChhcmcpIHsKKyAJCWNhc2UgMTogcHJpbnRmKCJvcHRhcmcgOiAlc1xuIixvcHRhcmcpOworIAkJCWJyZWFrOworQEAgLTk3NCw2ICs5NzYsMTAgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCWNhc2UgJ3QnOgorIAkJCXIgPSBkdW1wX2NvbmZpZyhjb25mKTsKKyAJCQlnb3RvIG91dF9mcmVlX2NvbmZpZzsKKysJCWNhc2UgJ0EnOgorKwkJCWlmIChyZW1lbWJlcl9jbWRsaW5lX3d3aWQoKSAhPSAwKQorKwkJCQlleGl0KDEpOworKwkJCWV4aXQoMCk7CisgCQljYXNlICdoJzoKKyAJCQl1c2FnZShhcmd2WzBdKTsKKyAJCQlleGl0KDApOworZGlmZiAtLWdpdCBhL211bHRpcGF0aC9tdWx0aXBhdGguOCBiL211bHRpcGF0aC9tdWx0aXBhdGguOAoraW5kZXggOTE0YThjYi4uOGM2YTRjMSAxMDA2NDQKKy0tLSBhL211bHRpcGF0aC9tdWx0aXBhdGguOAorKysrIGIvbXVsdGlwYXRoL211bHRpcGF0aC44CitAQCAtMjUsNyArMjUsNyBAQCBtdWx0aXBhdGggXC0gRGV2aWNlIG1hcHBlciB0YXJnZXQgYXV0b2NvbmZpZy4KKyAuUkIgW1x8IFwtYlwgXGMKKyAuSVIgYmluZGluZ3NfZmlsZSBcfF0KKyAuUkIgW1x8IFwtZCBcfF0KKy0uUkIgW1x8IFwtaCB8IFwtbCB8IFwtbGwgfCBcLWYgfCBcLXQgfCBcLUYgfCBcLUIgfCBcLWMgfCBcLUMgfCBcLXEgfCBcLXIgfCBcLWkgfCBcLWEgfCBcLXUgfCBcLVUgfCBcLXcgfCBcLVcgXHxdCisrLlJCIFtcfCBcLWggfCBcLWwgfCBcLWxsIHwgXC1mIHwgXC10IHwgXC1GIHwgXC1CIHwgXC1jIHwgXC1DIHwgXC1xIHwgXC1yIHwgXC1pIHwgXC1hIHwgXC1BIHwgXC11IHwgXC1VIHwgXC13IHwgXC1XIFx8XQorIC5SQiBbXHwgXC1wXCBcYworIC5JUiBmYWlsb3ZlciB8IG11bHRpYnVzIHwgZ3JvdXBfYnlfc2VyaWFsIHwgZ3JvdXBfYnlfcHJpbyB8IGdyb3VwX2J5X25vZGVfbmFtZSBcfF0KKyAuUkIgW1x8IFwtUlwgXGMKK0BAIC0xMzUsNiArMTM1LDkgQEAgQWRkIHRoZSBXV0lEIGZvciB0aGUgc3BlY2lmaWVkIGRldmljZSB0byB0aGUgV1dJRHMgZmlsZS4KKyBDaGVjayBpZiB0aGUgZGV2aWNlIHNwZWNpZmllZCBpbiB0aGUgcHJvZ3JhbSBlbnZpcm9ubWVudCBzaG91bGQgYmUKKyBhIHBhdGggaW4gYSBtdWx0aXBhdGggZGV2aWNlLgorIC4KKysuQiBcLUEKKythZGQgd3dpZHMgZnJvbSBhbnkga2VybmVsIGNvbW1hbmQgbGluZSBtcGF0aC53d2lkIHBhcmFtZXRlcnMgdG8gdGhlIHd3aWRzIGZpbGUKKysuCisgLlRQCisgLkIgXC1VCisgQ2hlY2sgaWYgdGhlIGRldmljZSBzcGVjaWZpZWQgaW4gdGhlIHByb2dyYW0gZW52aXJvbm1lbnQgaXMgYSBtdWx0aXBhdGggZGV2aWNlCitkaWZmIC0tZ2l0IGEvbXVsdGlwYXRoZC9tdWx0aXBhdGhkLnNlcnZpY2UgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQoraW5kZXggMTc0MzRjZS4uMGZiY2M0NiAxMDA2NDQKKy0tLSBhL211bHRpcGF0aGQvbXVsdGlwYXRoZC5zZXJ2aWNlCisrKysgYi9tdWx0aXBhdGhkL211bHRpcGF0aGQuc2VydmljZQorQEAgLTE1LDYgKzE1LDcgQEAgVHlwZT1ub3RpZnkKKyBOb3RpZnlBY2Nlc3M9bWFpbgorIExpbWl0Q09SRT1pbmZpbml0eQorIEV4ZWNTdGFydFByZT0tL3NiaW4vbW9kcHJvYmUgLWEgc2NzaV9kaF9hbHVhIHNjc2lfZGhfZW1jIHNjc2lfZGhfcmRhYyBkbS1tdWx0aXBhdGgKKytFeGVjU3RhcnRQcmU9LS9zYmluL211bHRpcGF0aCAtQQorIEV4ZWNTdGFydD0vc2Jpbi9tdWx0aXBhdGhkIC1kIC1zCisgRXhlY1JlbG9hZD0vc2Jpbi9tdWx0aXBhdGhkIHJlY29uZmlndXJlCisgVGFza3NNYXg9aW5maW5pdHkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjctUkgtd2Fybi1vbi1pbnZhbGlkLXJlZ2V4LWluc3RlYWQtb2YtZmFpbGluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI3LVJILXdhcm4tb24taW52YWxpZC1yZWdleC1pbnN0ZWFkLW9mLWZhaWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzZTE2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI3LVJILXdhcm4tb24taW52YWxpZC1yZWdleC1pbnN0ZWFkLW9mLWZhaWxpbmcucGF0Y2gKQEAgLTAsMCArMSwxMjEgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgNiBOb3YgMjAxNyAyMTozOToyOCAtMDYwMAorU3ViamVjdDogW1BBVENIXSBSSDogd2FybiBvbiBpbnZhbGlkIHJlZ2V4IGluc3RlYWQgb2YgZmFpbGluZworCittdWx0aXBhdGguY29uZiB1c2VkIHRvIGFsbG93ICIqIiBhcyBhIG1hdGNoIGV2ZXJ5dGhpbmcgcmVndWxhciBleHByZXNzaW9uLAoraW5zdGVhZCBvZiByZXF1aXJpbmcgIi4qIi4gSW5zdGVhZCBvZiBlcnJvcmluZyB3aGVuIHRoZSBvbGQgc3R5bGUKK3JlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlIHVzZWQsIGl0IHNob3VsZCBwcmludCBhIHdhcm5pbmcgYW5kIGNvbnZlcnQKK3RoZW0uCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KKy0tLQorIGxpYm11bHRpcGF0aC9kaWN0LmMgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIGxpYm11bHRpcGF0aC9wYXJzZXIuYyB8IDEzICsrKysrKysrKysrKysKKyBsaWJtdWx0aXBhdGgvcGFyc2VyLmggfCAgMSArCisgMyBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL2RpY3QuYyBiL2xpYm11bHRpcGF0aC9kaWN0LmMKK2luZGV4IDdhZDBmNWEuLmFiODA4ZDYgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvZGljdC5jCisrKysgYi9saWJtdWx0aXBhdGgvZGljdC5jCitAQCAtNTUsNiArNTUsMjEgQEAgc2V0X3N0cih2ZWN0b3Igc3RydmVjLCB2b2lkICpwdHIpCisgfQorIAorIHN0YXRpYyBpbnQKKytzZXRfcmVnZXgodmVjdG9yIHN0cnZlYywgdm9pZCAqcHRyKQorK3sKKysJY2hhciAqKnN0cl9wdHIgPSAoY2hhciAqKilwdHI7CisrCisrCWlmICgqc3RyX3B0cikKKysJCUZSRUUoKnN0cl9wdHIpOworKwkqc3RyX3B0ciA9IHNldF9yZWdleF92YWx1ZShzdHJ2ZWMpOworKworKwlpZiAoISpzdHJfcHRyKQorKwkJcmV0dXJuIDE7CisrCisrCXJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50Cisgc2V0X3llc19ubyh2ZWN0b3Igc3RydmVjLCB2b2lkICpwdHIpCisgeworIAljaGFyICogYnVmZjsKK0BAIC0xMjcxLDcgKzEyODYsNyBAQCBibGVfICMjIG9wdGlvbiAjIyBfaGFuZGxlciAoc3RydWN0IGNvbmZpZyAqY29uZiwgdmVjdG9yIHN0cnZlYykJCVwKKyAJaWYgKCFjb25mLT5vcHRpb24pCQkJCQkJXAorIAkJcmV0dXJuIDE7CQkJCQkJXAorIAkJCQkJCQkJCVwKKy0JYnVmZiA9IHNldF92YWx1ZShzdHJ2ZWMpOwkJCQkJXAorKwlidWZmID0gc2V0X3JlZ2V4X3ZhbHVlKHN0cnZlYyk7CQkJCQlcCisgCWlmICghYnVmZikJCQkJCQkJXAorIAkJcmV0dXJuIDE7CQkJCQkJXAorIAkJCQkJCQkJCVwKK0BAIC0xMjg3LDcgKzEzMDIsNyBAQCBibGVfICMjIG9wdGlvbiAjIyBfICMjIG5hbWUgIyMgX2hhbmRsZXIgKHN0cnVjdCBjb25maWcgKmNvbmYsIHZlY3RvciBzdHJ2ZWMpIFwKKyAJaWYgKCFjb25mLT5vcHRpb24pCQkJCQkJXAorIAkJcmV0dXJuIDE7CQkJCQkJXAorIAkJCQkJCQkJCVwKKy0JYnVmZiA9IHNldF92YWx1ZShzdHJ2ZWMpOwkJCQkJXAorKwlidWZmID0gc2V0X3JlZ2V4X3ZhbHVlKHN0cnZlYyk7CQkJCQlcCisgCWlmICghYnVmZikJCQkJCQkJXAorIAkJcmV0dXJuIDE7CQkJCQkJXAorIAkJCQkJCQkJCVwKK0BAIC0xMzg4LDE2ICsxNDAzLDE2IEBAIGRldmljZV9oYW5kbGVyKHN0cnVjdCBjb25maWcgKmNvbmYsIHZlY3RvciBzdHJ2ZWMpCisgCXJldHVybiAwOworIH0KKyAKKy1kZWNsYXJlX2h3X2hhbmRsZXIodmVuZG9yLCBzZXRfc3RyKQorK2RlY2xhcmVfaHdfaGFuZGxlcih2ZW5kb3IsIHNldF9yZWdleCkKKyBkZWNsYXJlX2h3X3NucHJpbnQodmVuZG9yLCBwcmludF9zdHIpCisgCistZGVjbGFyZV9od19oYW5kbGVyKHByb2R1Y3QsIHNldF9zdHIpCisrZGVjbGFyZV9od19oYW5kbGVyKHByb2R1Y3QsIHNldF9yZWdleCkKKyBkZWNsYXJlX2h3X3NucHJpbnQocHJvZHVjdCwgcHJpbnRfc3RyKQorIAorLWRlY2xhcmVfaHdfaGFuZGxlcihyZXZpc2lvbiwgc2V0X3N0cikKKytkZWNsYXJlX2h3X2hhbmRsZXIocmV2aXNpb24sIHNldF9yZWdleCkKKyBkZWNsYXJlX2h3X3NucHJpbnQocmV2aXNpb24sIHByaW50X3N0cikKKyAKKy1kZWNsYXJlX2h3X2hhbmRsZXIoYmxfcHJvZHVjdCwgc2V0X3N0cikKKytkZWNsYXJlX2h3X2hhbmRsZXIoYmxfcHJvZHVjdCwgc2V0X3JlZ2V4KQorIGRlY2xhcmVfaHdfc25wcmludChibF9wcm9kdWN0LCBwcmludF9zdHIpCisgCisgZGVjbGFyZV9od19oYW5kbGVyKGh3aGFuZGxlciwgc2V0X3N0cikKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcGFyc2VyLmMgYi9saWJtdWx0aXBhdGgvcGFyc2VyLmMKK2luZGV4IGI4YjdlMGQuLjM0YjRhZDIgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvcGFyc2VyLmMKKysrKyBiL2xpYm11bHRpcGF0aC9wYXJzZXIuYworQEAgLTM4MCw2ICszODAsMTkgQEAgc2V0X3ZhbHVlKHZlY3RvciBzdHJ2ZWMpCisgCXJldHVybiBhbGxvYzsKKyB9CisgCisrdm9pZCAqCisrc2V0X3JlZ2V4X3ZhbHVlKHZlY3RvciBzdHJ2ZWMpCisreworKwljaGFyICpidWZmID0gc2V0X3ZhbHVlKHN0cnZlYyk7CisrCisrCWlmIChidWZmICYmIHN0cmNtcCgiKiIsIGJ1ZmYpID09IDApIHsKKysJCWNvbmRsb2coMCwgIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uIFwiKlwiIGluIG11bHRpcGF0aC5jb25mLiBVc2luZyBcIi4qXCIiKTsKKysJCUZSRUUoYnVmZik7CisrCQlyZXR1cm4gc3RyZHVwKCIuKiIpOworKwl9CisrCXJldHVybiBidWZmOworK30KKysKKyAvKiBub24tcmVjdXJzaXZlIGNvbmZpZ3VyYXRpb24gc3RyZWFtIGhhbmRsZXIgKi8KKyBzdGF0aWMgaW50IGt3X2xldmVsID0gMDsKKyAKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvcGFyc2VyLmggYi9saWJtdWx0aXBhdGgvcGFyc2VyLmgKK2luZGV4IDYyOTA2ZTkuLmI3OTE3MDUgMTAwNjQ0CistLS0gYS9saWJtdWx0aXBhdGgvcGFyc2VyLmgKKysrKyBiL2xpYm11bHRpcGF0aC9wYXJzZXIuaAorQEAgLTc3LDYgKzc3LDcgQEAgZXh0ZXJuIHZvaWQgZHVtcF9rZXl3b3Jkcyh2ZWN0b3Iga2V5ZHVtcCwgaW50IGxldmVsKTsKKyBleHRlcm4gdm9pZCBmcmVlX2tleXdvcmRzKHZlY3RvciBrZXl3b3Jkcyk7CisgZXh0ZXJuIHZlY3RvciBhbGxvY19zdHJ2ZWMoY2hhciAqc3RyaW5nKTsKKyBleHRlcm4gdm9pZCAqc2V0X3ZhbHVlKHZlY3RvciBzdHJ2ZWMpOworK2V4dGVybiB2b2lkICpzZXRfcmVnZXhfdmFsdWUodmVjdG9yIHN0cnZlYyk7CisgZXh0ZXJuIGludCBwcm9jZXNzX2ZpbGUoc3RydWN0IGNvbmZpZyAqY29uZiwgY2hhciAqY29uZl9maWxlKTsKKyBleHRlcm4gc3RydWN0IGtleXdvcmQgKiBmaW5kX2tleXdvcmQodmVjdG9yIGtleXdvcmRzLCB2ZWN0b3IgdiwgY2hhciAqIG5hbWUpOworIGludCBzbnByaW50X2tleXdvcmQoY2hhciAqYnVmZiwgaW50IGxlbiwgY2hhciAqZm10LCBzdHJ1Y3Qga2V5d29yZCAqa3csCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI4LVJILXJlc2V0LWRlZmF1bHQtZmluZF9tdXRpcGF0aHMtdmFsdWUtdG8tb2ZmLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMjgtUkgtcmVzZXQtZGVmYXVsdC1maW5kX211dGlwYXRocy12YWx1ZS10by1vZmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVlNjg2NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI4LVJILXJlc2V0LWRlZmF1bHQtZmluZF9tdXRpcGF0aHMtdmFsdWUtdG8tb2ZmLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIE1hcnppbnNraSA8Ym1hcnppbnNAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgNyBKdW4gMjAxOCAxNzo0Mzo1MiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBSSDogcmVzZXQgZGVmYXVsdCBmaW5kX211dGlwYXRocyB2YWx1ZSB0byBvZmYKKworVXBzdHJlYW0gaGFzIGNoYW5nZWQgdG8gZGVmYXVsdCBmaW5kX211bHRpcGF0aHMgdG8gInN0cmljdCIuIEZvciBub3cKK1JlZGhhdCB3aWxsIHJldGFpbiB0aGUgcHJldmlvdXMgZGVmYXVsdCBvZiAib2ZmIi4KKworU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gTWFyemluc2tpIDxibWFyemluc0ByZWRoYXQuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL2RlZmF1bHRzLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJtdWx0aXBhdGgvZGVmYXVsdHMuaCBiL2xpYm11bHRpcGF0aC9kZWZhdWx0cy5oCitpbmRleCBmMDc2YjRiLi43MGJhOThhIDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL2RlZmF1bHRzLmgKKysrKyBiL2xpYm11bHRpcGF0aC9kZWZhdWx0cy5oCitAQCAtMTcsNyArMTcsNyBAQAorICNkZWZpbmUgREVGQVVMVF9OT19QQVRIX1JFVFJZCU5PX1BBVEhfUkVUUllfVU5ERUYKKyAjZGVmaW5lIERFRkFVTFRfVkVSQk9TSVRZCTIKKyAjZGVmaW5lIERFRkFVTFRfUkVBU1NJR05fTUFQUwkwCistI2RlZmluZSBERUZBVUxUX0ZJTkRfTVVMVElQQVRIUwlGSU5EX01VTFRJUEFUSFNfU1RSSUNUCisrI2RlZmluZSBERUZBVUxUX0ZJTkRfTVVMVElQQVRIUwlGSU5EX01VTFRJUEFUSFNfT0ZGCisgI2RlZmluZSBERUZBVUxUX0ZBU1RfSU9fRkFJTAk1CisgI2RlZmluZSBERUZBVUxUX0RFVl9MT1NTX1RNTwk2MDAKKyAjZGVmaW5lIERFRkFVTFRfUkVUQUlOX0hXSEFORExFUiBSRVRBSU5fSFdIQU5ETEVSX09OCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDI5LW11bHRpcGF0aC10b29scy1tb2RpZnktTWFrZWZpbGUuaW5jLWZvci1jcm9zcy1jb21waWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyOS1tdWx0aXBhdGgtdG9vbHMtbW9kaWZ5LU1ha2VmaWxlLmluYy1mb3ItY3Jvc3MtY29tcGlsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1Y2QzMmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAyOS1tdWx0aXBhdGgtdG9vbHMtbW9kaWZ5LU1ha2VmaWxlLmluYy1mb3ItY3Jvc3MtY29tcGlsLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gOGJkZDQ0ODFkODIyYjY2MjVkOGJmNzE5NDMxY2E3NGVkMWI1ZTAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE2IEp1bCAyMDE4IDE1OjU2OjM3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG11bHRpcGF0aC10b29sczogbW9kaWZ5IE1ha2VmaWxlLmluYyBmb3IgY3Jvc3MtY29tcGlsYXRpb24KKworRG8gbm90IGxvb2sgZm9yIHN5c3RlbWQgaW5mbyBvbiB0aGUgaG9zdCwgYW5kIGFsbG93IHVzIHRvIHBhc3MgaW4gQ0ZMQUdTCit1c2luZyB0aGUgT1BURkxBR1MgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGZvciB2ZXJzaW9uIDAuNS4wLTE0NC1nNzcwZTZkMAorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGZvciB2ZXJzaW9uIDAuNy4xCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwordXBkYXRlIGZvciB2ZXJzaW9uIDAuNy43CisKK3JlbW92ZSBjaGFuZ2UgYWJvdXQgQ0ZMQUdTIHBhcnQsIHNpbmNlIHBhdGNoIDAwMjQgYWxyZWFkeSBoYXZlIHNpbWlsYXIgZnVuY3Rpb24uCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbmMgfCA4ICsrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluYyBiL01ha2VmaWxlLmluYworaW5kZXggNTdhMTgzNS4uMGM0MDNjNyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluYworKysrIGIvTWFrZWZpbGUuaW5jCitAQCAtMzgsMTIgKzM4LDYgQEAgaWZuZGVmIFJVTgorIAllbmRpZgorIGVuZGlmCisgCistaWZuZGVmIFNZU1RFTUQKKy0JaWZlcSAoJChzaGVsbCBzeXN0ZW1jdGwgLS12ZXJzaW9uID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyAxKSwgMSkKKy0JCVNZU1RFTUQgPSAkKHNoZWxsIHN5c3RlbWN0bCAtLXZlcnNpb24gMj4gL2Rldi9udWxsIHwgIHNlZCAtbiAncy9zeXN0ZW1kIFwoWzAtOV0qXCkvXDEvcCcpCistCWVuZGlmCistZW5kaWYKKy0KKyBpZm5kZWYgU1lTVEVNRFBBVEgKKyAJU1lTVEVNRFBBVEg9dXNyL2xpYgorIGVuZGlmCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDMwLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL2ZpbGVzLzAwMzAtQWx3YXlzLXVzZS1kZXZtYXBwZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4MTE4MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDMwLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gZDkyOWExZWE1ZTQyZWNiZTMwYzk5MDY0NGVkNGFkYTI4MTdjNjQzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE2IEp1bCAyMDE4IDE2OjAwOjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdICBBbHdheXMgdXNlIGRldm1hcHBlcgorCitEbyBub3QgdHJ5IHRvIGNvbXB1dGUgc2V2ZXJhbCBfQVBJXyBtYWtlIHZhcmlhYmxlcworZnJvbSBob3N0IGluZm9ybWF0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBd3MgSXNtYWlsIDxhd3MuaXNtYWlsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAwLjcuMQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAwLjcuNworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlibXVsdGlwYXRoL01ha2VmaWxlIHwgMTkgKysrKy0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlibXVsdGlwYXRoL01ha2VmaWxlIGIvbGlibXVsdGlwYXRoL01ha2VmaWxlCitpbmRleCBmNTE3ODZkLi4zYWQ5YzQ4IDEwMDY0NAorLS0tIGEvbGlibXVsdGlwYXRoL01ha2VmaWxlCisrKysgYi9saWJtdWx0aXBhdGgvTWFrZWZpbGUKK0BAIC0yMCwyMSArMjAsMTAgQEAgaWZkZWYgU1lTVEVNRAorIAllbmRpZgorIGVuZGlmCisgCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfbm9fZmx1c2gsL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKSwwKQorLQlDRkxBR1MgKz0gLURMSUJETV9BUElfRkxVU0ggLURfR05VX1NPVVJDRQorLWVuZGlmCistCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfc2V0X2Nvb2tpZSwvdXNyL2luY2x1ZGUvbGliZGV2bWFwcGVyLmgpLDApCistCUNGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKy1lbmRpZgorLQorLWlmbmVxICgkKGNhbGwgY2hlY2tfZnVuYyx1ZGV2X21vbml0b3Jfc2V0X3JlY2VpdmVfYnVmZmVyX3NpemUsL3Vzci9pbmNsdWRlL2xpYnVkZXYuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCVURFVl9BUElfUkVDVkJVRgorLWVuZGlmCistCistaWZuZXEgKCQoY2FsbCBjaGVja19mdW5jLGRtX3Rhc2tfZGVmZXJyZWRfcmVtb3ZlLC91c3IvaW5jbHVkZS9saWJkZXZtYXBwZXIuaCksMCkKKy0JQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0RFRkVSUkVECistZW5kaWYKKytDRkxBR1MgKz0gLURMSUJETV9BUElfRkxVU0ggLURfR05VX1NPVVJDRQorK0NGTEFHUyArPSAtRExJQkRNX0FQSV9DT09LSUUKKytDRkxBR1MgKz0gLURMSUJVREVWX0FQSV9SRUNWQlVGCisrQ0ZMQUdTICs9IC1ETElCRE1fQVBJX0RFRkVSUkVECisgCisgT0JKUyA9IG1lbW9yeS5vIHBhcnNlci5vIHZlY3Rvci5vIGRldm1hcHBlci5vIGNhbGxvdXQubyBcCisgCWh3dGFibGUubyBibGFja2xpc3QubyB1dGlsLm8gZG1wYXJzZXIubyBjb25maWcubyBcCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9maWxlcy8wMDMxLUFsd2F5cy11c2UtZGV2bWFwcGVyLWZvci1rcGFydHgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAzMS1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YTc1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvZmlsZXMvMDAzMS1BbHdheXMtdXNlLWRldm1hcHBlci1mb3Ita3BhcnR4LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMTQ1ZjJiODI5ZTUzNjJjZGE5NzViZWJhZmQ3ZmU0ZDAwZmY1NmQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE2IEp1bCAyMDE4IDE2OjAyOjA3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFsd2F5cyB1c2UgZGV2bWFwcGVyIGZvciBrcGFydHgKKworRG8gbm90IHRyeSB0byBjb21wdXRlIHRoZSBMSUJETV9BUElfQ09PS0lFIG1ha2UgdmFyaWFibGUKK2Zyb20gaG9zdCBpbmZvcm1hdGlvbiB3aGVuIGNyb3NzLWNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQXdzIElzbWFpbCA8YXdzLmlzbWFpbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMC43LjEKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuNy43CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisga3BhcnR4L01ha2VmaWxlIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEva3BhcnR4L01ha2VmaWxlIGIva3BhcnR4L01ha2VmaWxlCitpbmRleCA3ZWI0NjdlLi5jMTQzMzIxIDEwMDY0NAorLS0tIGEva3BhcnR4L01ha2VmaWxlCisrKysgYi9rcGFydHgvTWFrZWZpbGUKK0BAIC04LDkgKzgsNyBAQCBMREZMQUdTICs9ICQoQklOX0xERkxBR1MpCisgCisgTElCREVQUyArPSAtbGRldm1hcHBlcgorIAorLWlmbmVxICgkKGNhbGwgY2hlY2tfZnVuYyxkbV90YXNrX3NldF9jb29raWUsL3Vzci9pbmNsdWRlL2xpYmRldm1hcHBlci5oKSwwKQorLQlDRkxBR1MgKz0gLURMSUJETV9BUElfQ09PS0lFCistZW5kaWYKKytDRkxBR1MgKz0gLURMSUJETV9BUElfQ09PS0lFCisgCisgT0JKUyA9IGJzZC5vIGRvcy5vIGtwYXJ0eC5vIHNvbGFyaXMubyB1bml4d2FyZS5vIGRhc2QubyBzdW4ubyBcCisgCWdwdC5vIG1hYy5vIHBzMy5vIGNyYzMyLm8gbG9wYXJ0Lm8geHN0cm5jcHkubyBkZXZtYXBwZXIubworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzXzAuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc18wLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjNWRmZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tdWx0aXBhdGgtdG9vbHMvbXVsdGlwYXRoLXRvb2xzXzAuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHVwc3RyZWFtIHByb2plY3QgdXNlZCB0byBkcml2ZSB0aGUgRGV2aWNlIE1hcHBlciBtdWx0aXBhdGhpbmcgZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJJdCBwcm92aWRlcyB0b29scyB0byBtYW5hZ2UgbXVsdGlwYXRoIGRldmljZXMgXAotYnkgaW5zdHJ1Y3RpbmcgdGhlIGRldmljZS1tYXBwZXIga2VybmVsIG1vZHVsZSB3aGF0IHRvIGRvLiBUaGVzZSBcCi10b29scyBpbmNsdWRlOiBcCi0xLiBtdWx0aXBhdGggLSBTY2FuIHRoZSBzeXN0ZW0gZm9yIG11bHRpcGF0aCBkZXZpY2VzIGFuZCBhc3NlbWJsZSB0aGVtLlwKLTIuIG11bHRpcGF0aGQgLSBEZXRlY3RzIHdoZW4gcGF0aHMgZmFpbCBhbmQgZXhlY3MgbXVsdGlwYXRoIHRvIHVwZGF0ZSBcCi10aGluZ3MuXAotMy4gbXBhdGhwZXJzaXN0IC0gUGVyc2lzdGVudCByZXNlcnZhdGlvbiBtYW5hZ2VtZW50IGZlYXR1cmUgYWxsb3dzIFwKLWNsdXN0ZXIgbWFuYWdlbWVudCBzb2Z0d2FyZSB0byBtYW5hZ2UgcGVyc2lzdGVudCByZXNlcnZhdGlvbiB0aHJvdWdoIFwKLW1wYXRoIGRldmljZS4gSXQgcHJvY2Vzc2VzIG1hbmFnZW1lbnQgcmVxdWVzdHMgZnJvbSBjYWxsZXJzIGFuZCBoaWRlcyBcCi10aGUgbWFuYWdlbWVudCB0YXNrIGRldGFpbHMuIEl0IGFsc28gaGFuZGxlcyBwZXJzaXN0ZW50IHJlc2VydmF0aW9uIFwKLW1hbmFnZW1lbnQgb2YgZGF0YSBwYXRoIGxpZmUgY3ljbGUgYW5kIHN0YXRlIGNoYW5nZXMuXAotNC4ga3BhcnR4IC0gVGhpcyB0b29sLCBkZXJpdmVkIGZyb20gdXRpbC1saW51eCdzIHBhcnR4LCByZWFkcyBwYXJ0aXRpb24gXAotdGFibGVzIG9uIHNwZWNpZmllZCBkZXZpY2UgYW5kIGNyZWF0ZSBkZXZpY2UgbWFwcyBvdmVyIHBhcnRpdGlvbnMgXAotc2VnbWVudHMgZGV0ZWN0ZWQuIEl0IGlzIGNhbGxlZCBmcm9tIGhvdHBsdWcgdXBvbiBkZXZpY2UgbWFwcyBjcmVhdGlvbiBcCi1hbmQgZGVsZXRpb24iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9jaHJpc3RvcGhlLnZhcm9xdWkuZnJlZS5mci8iCi0KLURFUEVORFMgPSAibGliZGV2bWFwcGVyIFwKLSAgICAgICAgICAgbGliYWlvIFwKLSAgICAgICAgICAgbGlidXJjdSBcCi0gICAgICAgICAgIHJlYWRsaW5lIFwKLSAgICAgICAgICAgdWRldiBcCi0gICAgICAgICAgIGpzb24tYyBcCi0gICAgICAgICAgIgotCi1MSUNFTlNFID0gIkdQTHYyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5vcGVuc3ZjLmNvbS9tdWx0aXBhdGgtdG9vbHMvLmdpdDtwcm90b2NvbD1odHRwIFwKLSAgICAgICAgICAgZmlsZTovL211bHRpcGF0aGQub2UgXAotICAgICAgICAgICBmaWxlOi8vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW11bHRpcGF0aC1hdHRlbXB0LWF0LWNvbW1vbi1tdWx0aXBhdGgucnVsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1SSC1maXh1cC11ZGV2LXJ1bGVzLWZvci1yZWRoYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1SSC1SZW1vdmUtdGhlLXByb3BlcnR5LWJsYWNrbGlzdC1leGNlcHRpb24tYnVpbHRpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVJILWRvbi10LXN0YXJ0LXdpdGhvdXQtYS1jb25maWctZmlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVJILWFkZC1tcGF0aGNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1SSC1hZGQtd3dpZHMtZnJvbS1rZXJuZWwtY21kbGluZS1tcGF0aC53d2lkcy13aXRoLUEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1SSC10cmlnZ2VyLWNoYW5nZS11ZXZlbnQtb24tbmV3LWRldmljZS1jcmVhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpYm11bHRpcGF0aC1jaGFuZ2UtaG93LVJBRE9TLWNoZWNrZXItaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LW11bHRpcGF0aC1zZXQtdmVyYm9zaXR5LXRvLWRlZmF1bHQtZHVyaW5nLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLW1wYXRoLXNraXAtZGV2aWNlLWNvbmZpZ3Mtd2l0aG91dC12ZW5kb3ItcHJvZHVjdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLW11bHRpcGF0aGQtZml4LXNob3ctbWFwcy1qc29uLWNyYXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWtwYXJ0eC1pbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBcCi0gICAgICAgICAgICIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1TUkNSRVYgPSAiZjIxMTY2YTgxMmEyY2ZiNTBlY2Y5NTUwZDMyOTQ3YzgzMTAzZjgzYSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibXVsdGlwYXRoZC5zZXJ2aWNlIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotIyBtdWx0aXBhdGgtdG9vbHMgaW5jbHVkZXMgYSBjb3B5IG9mIHRoZSB2YWxncmluZC5oIGhlYWRlcgotIyBmaWxlIGFuZCB1c2VzIHRoZSBtYWNyb3MgdG8gc3VwcHJlc3Mgc29tZSBmYWxzZSBwb3NpdGl2ZXMuIEhvd2V2ZXIsCi0jIHRoYXQgb25seSB3b3JrcyBvbiBBUk0gd2hlbiB0aHVtYiBpcyBkaXNhYmxlZC4gT3RoZXJ3aXNlIG9uZSBnZXRzOgotIyAgIEVycm9yOiBzaGlmdHMgaW4gQ01QL01PViBpbnN0cnVjdGlvbnMgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHVuaWZpZWQgc3ludGF4IC0tIGBtb3YgcjEyLHIxMixyb3IjMycKLSMgICAuLi9NYWtlZmlsZS5pbmM6NjY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdkZWJ1Zy5vJyBmYWlsZWQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLSMgVGhlIGV4YWN0IHZlcnNpb24gb2YgU1lTVEVNRCBkb2VzIG5vdCBtYXR0ZXIgYnV0IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMjA5LgotIwotRVhUUkFfT0VNQUtFID0gJ01VTFRJUEFUSF9WRVJTSU9OPSR7UFZ9IERFU1RESVI9JHtEfSBzeXNsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgICAgICAgICAgICAgIE9QVEZMQUdTPSIke0NGTEFHU30iIFwKLSAgICAgICAgICAgICAgICBiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICBMSUI9JHtiYXNlX2xpYmRpcn0gbGliZGlyPSR7YmFzZV9saWJkaXJ9L211bHRpcGF0aCBcCi0gICAgICAgICAgICAgICAgdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAiU1lTVEVNRD0yMTYiLCAiIiwgZCl9IFwKLSAgICAgICAgICAgICAgICcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLQotICAgICMgV2UgY29weSBhbiBpbml0c2NyaXB0LCBidXQgZG8gbm90IHN0YXJ0IG11bHRpcGF0aGQgYXQgaW5pdCB0aW1lLgotICAgICMKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGNwICR7V09SS0RJUn0vbXVsdGlwYXRoZC5vZSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbXVsdGlwYXRoZAotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBcCi0gICAgJHtEfSR7c3lzY29uZmRpcn0vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZQotfQotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L211bHRpcGF0aC8uZGVidWciCi0KLVBBQ0tBR0VTID0rICIke1BOfS1saWJzIgotRklMRVNfJHtQTn0tbGlicyA9ICIke2Jhc2VfbGliZGlyfS9saWIqLnNvLiogXAotICAgICAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9tdWx0aXBhdGgvbGliKi5zbyoiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbGlicyBiYXNoIgotCi1QUk9WSURFUyArPSAiZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgiCi1SUFJPVklERVNfJHtQTn0gKz0gImRldmljZS1tYXBwZXItbXVsdGlwYXRoIgotUlBST1ZJREVTXyR7UE59LWxpYnMgKz0gImRldmljZS1tYXBwZXItbXVsdGlwYXRoLWxpYnMiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnIgotCi1QQUNLQUdFUyA9KyAia3BhcnR4IgotRklMRVNfa3BhcnR4ID0gIiR7YmFzZV9zYmluZGlyfS9rcGFydHggXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3VkZXYva3BhcnR4X2lkIFwKLSAgICAgICAgICAgICAgICIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2gga3BhcnR4IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbXVsdGlwYXRoLXRvb2xzL211bHRpcGF0aC10b29sc18wLjcuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9tdWx0aXBhdGgtdG9vbHNfMC43LjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNjMTU0NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L211bHRpcGF0aC10b29scy9tdWx0aXBhdGgtdG9vbHNfMC43LjcuYmIKQEAgLTAsMCArMSwxMzEgQEAKK1NVTU1BUlkgPSAiVGhlIHVwc3RyZWFtIHByb2plY3QgdXNlZCB0byBkcml2ZSB0aGUgRGV2aWNlIE1hcHBlciBtdWx0aXBhdGhpbmcgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJJdCBwcm92aWRlcyB0b29scyB0byBtYW5hZ2UgbXVsdGlwYXRoIGRldmljZXMgXAorYnkgaW5zdHJ1Y3RpbmcgdGhlIGRldmljZS1tYXBwZXIga2VybmVsIG1vZHVsZSB3aGF0IHRvIGRvLiBUaGVzZSBcCit0b29scyBpbmNsdWRlOiBcCisxLiBtdWx0aXBhdGggLSBTY2FuIHRoZSBzeXN0ZW0gZm9yIG11bHRpcGF0aCBkZXZpY2VzIGFuZCBhc3NlbWJsZSB0aGVtLlwKKzIuIG11bHRpcGF0aGQgLSBEZXRlY3RzIHdoZW4gcGF0aHMgZmFpbCBhbmQgZXhlY3MgbXVsdGlwYXRoIHRvIHVwZGF0ZSBcCit0aGluZ3MuXAorMy4gbXBhdGhwZXJzaXN0IC0gUGVyc2lzdGVudCByZXNlcnZhdGlvbiBtYW5hZ2VtZW50IGZlYXR1cmUgYWxsb3dzIFwKK2NsdXN0ZXIgbWFuYWdlbWVudCBzb2Z0d2FyZSB0byBtYW5hZ2UgcGVyc2lzdGVudCByZXNlcnZhdGlvbiB0aHJvdWdoIFwKK21wYXRoIGRldmljZS4gSXQgcHJvY2Vzc2VzIG1hbmFnZW1lbnQgcmVxdWVzdHMgZnJvbSBjYWxsZXJzIGFuZCBoaWRlcyBcCit0aGUgbWFuYWdlbWVudCB0YXNrIGRldGFpbHMuIEl0IGFsc28gaGFuZGxlcyBwZXJzaXN0ZW50IHJlc2VydmF0aW9uIFwKK21hbmFnZW1lbnQgb2YgZGF0YSBwYXRoIGxpZmUgY3ljbGUgYW5kIHN0YXRlIGNoYW5nZXMuXAorNC4ga3BhcnR4IC0gVGhpcyB0b29sLCBkZXJpdmVkIGZyb20gdXRpbC1saW51eCdzIHBhcnR4LCByZWFkcyBwYXJ0aXRpb24gXAordGFibGVzIG9uIHNwZWNpZmllZCBkZXZpY2UgYW5kIGNyZWF0ZSBkZXZpY2UgbWFwcyBvdmVyIHBhcnRpdGlvbnMgXAorc2VnbWVudHMgZGV0ZWN0ZWQuIEl0IGlzIGNhbGxlZCBmcm9tIGhvdHBsdWcgdXBvbiBkZXZpY2UgbWFwcyBjcmVhdGlvbiBcCithbmQgZGVsZXRpb24iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9jaHJpc3RvcGhlLnZhcm9xdWkuZnJlZS5mci8iCisKK0RFUEVORFMgPSAibGliZGV2bWFwcGVyIFwKKyAgICAgICAgICAgbGliYWlvIFwKKyAgICAgICAgICAgbGlidXJjdSBcCisgICAgICAgICAgIHJlYWRsaW5lIFwKKyAgICAgICAgICAgdWRldiBcCisgICAgICAgICAgIGpzb24tYyBcCisgICAgICAgICAgIgorCitMSUNFTlNFID0gIkdQTHYyIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5vcGVuc3ZjLmNvbS9tdWx0aXBhdGgtdG9vbHMvLmdpdDtwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovL211bHRpcGF0aGQub2UgXAorICAgICAgICAgICBmaWxlOi8vbXVsdGlwYXRoLmNvbmYuZXhhbXBsZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW11bHRpcGF0aC10b29scy1hZGQtUkRBQy1TVU4tQXJyYXlTdG9yYWdlLXRvLWh3dGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tdWx0aXBhdGgtdG9vbHMtcmVtb3ZlLWMtZnJvbS1fX2NwbHVzY3BsdXMtbWlzc3BlbGxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbXVsdGlwYXRoLXRvb2xzLXJlbW92ZS1lbWFjcy1hdXRvY29uZmlnLW9mLWtwYXJ0eC1ncC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW11bHRpcGF0aC10b29scy1yZXBsYWNlLUZTRi1hZGRyZXNzLXdpdGgtYS13d3ctcG9pbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1tdWx0aXBhdGgtdG9vbHMtUmVtb3ZlLXRyYWlsaW5nLWxlYWRpbmctd2hpdGVzcGFjZXMtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtbXVsdGlwYXRoLXRvb2xzLWZpeC1jb21waWxhdGlvbi13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LW11bHRpcGF0aC10b29scy1hZGQteC10by1kb2MtcHJlY2xlYW4ucGwtYW5kLXNwbGl0LW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1tdWx0aXBhdGgtdG9vbHMtcmVmcmVzaC1rZXJuZWwtZG9jLWZyb20ta2VybmVsLXNvdXJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktbXVsdGlwYXRoLXRvb2xzLWNvbmZpZ3VyZS1oaXRhY2hpLWFtczIwMDAtYW5kLWh1czEwMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWxpYm11bHRpcGF0aC1kb24tdC1yZWplY3QtbWFwcy13aXRoLXVuZGVmaW5lZC1wcmlvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtbXVsdGlwYXRoZC1oYW5kbGUtZXJyb3JzLWluLXV4bHNuci1hcy1mYXRhbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWxpYm11bHRpcGF0aC1maXgtZXJyb3ItcGFyc2luZy1maW5kX211bHRpcGF0aHMtc3RyaWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1saWJtdWx0aXBhdGgtcHJpbnQtY29ycmVjdC1kZWZhdWx0LWZvci1kZWxheV8tX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtbXVsdGlwYXRoLmNvbmYuNS1jbGFyaWZ5LXByb3BlcnR5LXdoaXRlbGlzdC1oYW5kbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LW1wYXRocGVyc2lzdC1hZGQtYWxsX3RnX3B0LW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LWxpYm11bHRpcGF0aC1yZW1vdmUtcmJkLWNvZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1tcGF0aHBlcnNpc3QtZml4LWFwdHBsLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1tdWx0aXBhdGgtZG9uLXQtY2hlY2stdGltZXN0YW1wcy13aXRob3V0LWEtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWxpYm11bHRpcGF0aC1maXgtZGV0ZWN0LWFsdWEtY29ybmVyLWNhc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1tdWx0aXBhdGgtZml4LXNldHRpbmctY29uZi12ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtUkgtZml4dXAtdWRldi1ydWxlcy1mb3ItcmVkaGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItUkgtUmVtb3ZlLXRoZS1wcm9wZXJ0eS1ibGFja2xpc3QtZXhjZXB0aW9uLWJ1aWx0aW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1SSC1kb24tdC1zdGFydC13aXRob3V0LWEtY29uZmlnLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1SSC11c2UtcnBtLW9wdGZsYWdzLWlmLXByZXNlbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1SSC1hZGQtbXBhdGhjb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtUkgtYWRkLXd3aWRzLWZyb20ta2VybmVsLWNtZGxpbmUtbXBhdGgud3dpZHMtd2l0aC1BLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctUkgtd2Fybi1vbi1pbnZhbGlkLXJlZ2V4LWluc3RlYWQtb2YtZmFpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LVJILXJlc2V0LWRlZmF1bHQtZmluZF9tdXRpcGF0aHMtdmFsdWUtdG8tb2ZmLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbXVsdGlwYXRoLXRvb2xzLW1vZGlmeS1NYWtlZmlsZS5pbmMtZm9yLWNyb3NzLWNvbXBpbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLUFsd2F5cy11c2UtZGV2bWFwcGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtQWx3YXlzLXVzZS1kZXZtYXBwZXItZm9yLWtwYXJ0eC5wYXRjaCBcCisgICAgICAgICAgICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK1NSQ1JFViA9ICIzODZkMjg4YjU1OTVmYzJjMDFkZmZlNjk4YjZlYjMwNmM2Njc0OTA4IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHN5c3RlbWQgcGtnY29uZmlnCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtdWx0aXBhdGhkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCisjIG11bHRpcGF0aC10b29scyBpbmNsdWRlcyBhIGNvcHkgb2YgdGhlIHZhbGdyaW5kLmggaGVhZGVyCisjIGZpbGUgYW5kIHVzZXMgdGhlIG1hY3JvcyB0byBzdXBwcmVzcyBzb21lIGZhbHNlIHBvc2l0aXZlcy4gSG93ZXZlciwKKyMgdGhhdCBvbmx5IHdvcmtzIG9uIEFSTSB3aGVuIHRodW1iIGlzIGRpc2FibGVkLiBPdGhlcndpc2Ugb25lIGdldHM6CisjICAgRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMTIscjEyLHJvciMzJworIyAgIC4uL01ha2VmaWxlLmluYzo2NjogcmVjaXBlIGZvciB0YXJnZXQgJ2RlYnVnLm8nIGZhaWxlZAorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworIyBUaGUgZXhhY3QgdmVyc2lvbiBvZiBTWVNURU1EIGRvZXMgbm90IG1hdHRlciBidXQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiAyMDkuCisjCitFWFRSQV9PRU1BS0UgPSAnTVVMVElQQVRIX1ZFUlNJT049JHtQVn0gREVTVERJUj0ke0R9IHN5c2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgICAgICAgT1BURkxBR1M9IiR7Q0ZMQUdTfSIgXAorICAgICAgICAgICAgICAgIGJpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIExJQj0ke2Jhc2VfbGliZGlyfSBsaWJkaXI9JHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoIFwKKyAgICAgICAgICAgICAgICB1bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic3lzdGVtZCIsICJTWVNURU1EPTIxNiIsICIiLCBkKX0gXAorICAgICAgICAgICAgICAgJworCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorCisgICAgIyBXZSBjb3B5IGFuIGluaXRzY3JpcHQsIGJ1dCBkbyBub3Qgc3RhcnQgbXVsdGlwYXRoZCBhdCBpbml0IHRpbWUuCisgICAgIworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgY3AgJHtXT1JLRElSfS9tdWx0aXBhdGhkLm9lICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tdWx0aXBhdGhkCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tdWx0aXBhdGguY29uZi5leGFtcGxlIFwKKyAgICAke0R9JHtzeXNjb25mZGlyfS9tdWx0aXBhdGguY29uZi5leGFtcGxlCit9CisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vbXVsdGlwYXRoLy5kZWJ1ZyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7YmFzZV9saWJkaXJ9L2xpYiouc28uKiBcCisgICAgICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L211bHRpcGF0aC9saWIqLnNvKiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIGJhc2giCisKK1BST1ZJREVTICs9ICJkZXZpY2UtbWFwcGVyLW11bHRpcGF0aCIKK1JQUk9WSURFU18ke1BOfSArPSAiZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgiCitSUFJPVklERVNfJHtQTn0tbGlicyArPSAiZGV2aWNlLW1hcHBlci1tdWx0aXBhdGgtbGlicyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS9wa2djb25maWciCisKK1BBQ0tBR0VTID0rICJrcGFydHgiCitGSUxFU19rcGFydHggPSAiJHtiYXNlX3NiaW5kaXJ9L2twYXJ0eCBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vdWRldi9rcGFydHhfaWQgXAorICAgICAgICAgICAgICAgIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCBrcGFydHgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmMGZiMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiR05VIG5hbm8gKE5hbm8ncyBBTk90aGVyIGVkaXRvciwgb3IgXAotTm90IEFOT3RoZXIgZWRpdG9yKSBpcyBhbiBlbmhhbmNlZCBjbG9uZSBvZiB0aGUgXAotUGljbyB0ZXh0IGVkaXRvci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hbm8tZWRpdG9yLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgZmlsZSIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCi0KLVBWX01BSk9SID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gImh0dHBzOi8vbmFuby1lZGl0b3Iub3JnL2Rpc3QvdiR7UFZfTUFKT1J9L25hbm8tJHtQVn0udGFyLnh6IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHW3RpbnldID0gIi0tZW5hYmxlLXRpbnksIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzIuOS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZmIwY2YyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18yLjkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5jbHVkZSBuYW5vLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmRkMzdmMDEwZDZhOTg1YmYwZTVmOGVkMDkxZmY5MTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc4M2JjZmQ0YjJkNWRjMGJmNjRkNGJkMDdiMWExOWU3YmEzYzkxZGE4ODFhNDI0OTc3MmEzNmI5NzJkNDAxMiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25hbm8vbmFub18zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjN2ZiZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fMy4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gIkdOVSBuYW5vIChOYW5vJ3MgQU5PdGhlciBlZGl0b3IsIG9yIFwKK05vdCBBTk90aGVyIGVkaXRvcikgaXMgYW4gZW5oYW5jZWQgY2xvbmUgb2YgdGhlIFwKK1BpY28gdGV4dCBlZGl0b3IuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uYW5vLWVkaXRvci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyN2RlZmUxZTk2YzJlMWVjZDRlMGM5YmU4OTY3OTQ5IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGZpbGUiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvLWJhc2UiCisKK1BWX01BSk9SID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgorCitTUkNfVVJJID0gImh0dHBzOi8vbmFuby1lZGl0b3Iub3JnL2Rpc3QvdiR7UFZfTUFKT1J9L25hbm8tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzQxOTY0MjdhMDllYzJmODJhODhmYWNkMjIwZDI3ODciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBhNWJjYTM1NDUxNGU2NDc2MmM5ODdjMjAwYTg3NThiMDVlN2JjY2VkM2IwMGIzZTQ4ZWEwYTJkMzgzYzhhMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLWVuYWJsZS10aW55LCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25lMTAvbmUxMF8xLjIuMS5iYgppbmRleCA3NmUwNzQxLi4zYWZkZmY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uZTEwL25lMTBfMS4yLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmUxMC9uZTEwXzEuMi4xLmJiCkBAIC0zOCw3ICszOCw3IEBACiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5jL05FMTAqLmggJHtEfSR7aW5jbHVkZWRpcn0vCiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vbW9kdWxlcy9saWJORTEwLmEgJHtEfSR7bGliZGlyfS8KICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9tb2R1bGVzL2xpYk5FMTAuc28uKiAke0R9JHtsaWJkaXJ9LwotICAgIGNwIC1hICR7Qn0vbW9kdWxlcy9saWJORTEwLnNvICR7RH0ke2xpYmRpcn0vCisgICAgY3AgLWQgJHtCfS9tb2R1bGVzL2xpYk5FMTAuc28gJHtEfSR7bGliZGlyfS8KIH0KIAogIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJ25lMTAvMS4yLjEtcjAvcGFja2FnZXMtc3BsaXQvbmUxMC91c3IvbGliL2xpYk5FMTAuc28uMTAnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L251bWFjdGwvbnVtYWN0bC8wMDAxLWZpeC1OVUxMLXBvaW50ZXItcHJvYmxlbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L251bWFjdGwvbnVtYWN0bC8wMDAxLWZpeC1OVUxMLXBvaW50ZXItcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDk3NjEzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsLzAwMDEtZml4LU5VTEwtcG9pbnRlci1wcm9ibGVtLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gNWMxNmJlZmY5OTA5YjI4ZjU1ZjI1ZjQ4ZWQ3ZGRiZjk4ZDhiMWQ1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTggSnVsIDIwMTggMDk6NDM6NTUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IE5VTEwgcG9pbnRlciBwcm9ibGVtCisKK3JldHVybiAwIGlmIGRpc3RhbmNlX3RhYmxlIGlzIE5VTEwKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK3JlYWRfZGlzdGFuY2VfdGFibGUoKSBtYXliZSByZXR1cm4gMCwgYnV0IGRpc3RhbmNlX3RhYmxlIGlzIG5vdCBzZXQsCitpZiBkaXN0YW5jZV90YWJsZSBpcyB1c2VkLCBhbmQgd2lsbCBsZWFkIHRvIFNFR0ZBVUxUCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGRpc3RhbmNlLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZGlzdGFuY2UuYyBiL2Rpc3RhbmNlLmMKK2luZGV4IDhkNDcyYWYuLjZhNmU4ODYgMTAwNjQ0CistLS0gYS9kaXN0YW5jZS5jCisrKysgYi9kaXN0YW5jZS5jCitAQCAtMTEzLDYgKzExMyw4IEBAIGludCBudW1hX2Rpc3RhbmNlKGludCBhLCBpbnQgYikKKyAJCWludCBlcnIgPSByZWFkX2Rpc3RhbmNlX3RhYmxlKCk7CisgCQlpZiAoZXJyIDwgMCkKKyAJCQlyZXR1cm4gMDsKKysJCWlmKCFkaXN0YW5jZV90YWJsZSkKKysJCQlyZXR1cm4gMDsKKyAJfQorIAlpZiAoKHVuc2lnbmVkKWEgPj0gZGlzdGFuY2VfbnVtbm9kZXMgfHwgKHVuc2lnbmVkKWIgPj0gZGlzdGFuY2VfbnVtbm9kZXMpCisgCQlyZXR1cm4gMDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsL2ZpeC1udWxsLXBvaW50ZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGwvZml4LW51bGwtcG9pbnRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM5NTJhZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGwvZml4LW51bGwtcG9pbnRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVtQQVRDSF0gcmV0dXJuIDAgaWYgZGlzdGFuY2VfdGFibGUgaXMgTlVMTAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotcmVhZF9kaXN0YW5jZV90YWJsZSgpIG1heWJlIHJldHVybiAwLCBidXQgZGlzdGFuY2VfdGFibGUgaXMgbm90IHNldCwKLWlmIGRpc3RhbmNlX3RhYmxlIGlzIHVzZWQsIGFuZCB3aWxsIGxlYWQgdG8gU0VHRkFVTFQKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZGlzdGFuY2UuYyB8ICAgIDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kaXN0YW5jZS5jIGIvZGlzdGFuY2UuYwotaW5kZXggNGEyNjk3Mi4uYzZjYTAyMSAxMDA3NTUKLS0tLSBhL2Rpc3RhbmNlLmMKLSsrKyBiL2Rpc3RhbmNlLmMKLUBAIC0xMTMsNiArMTEzLDggQEAgaW50IG51bWFfZGlzdGFuY2UoaW50IGEsIGludCBiKQotIAkJaW50IGVyciA9IHJlYWRfZGlzdGFuY2VfdGFibGUoKTsKLSAJCWlmIChlcnIgPCAwKQotIAkJCXJldHVybiAwOwotKwkJaWYgKCFkaXN0YW5jZV90YWJsZSkKLSsJCQlyZXR1cm4gMDsKLSAJfQotIAlyZXR1cm4gZGlzdGFuY2VfdGFibGVbYSAqIGRpc3RhbmNlX251bW5vZGVzICsgYl07Ci0gfQotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnVtYWN0bC9udW1hY3RsX2dpdC5iYgppbmRleCBiOWNiY2YwLi4yNzlhYzA0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9udW1hY3RsL251bWFjdGxfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L251bWFjdGwvbnVtYWN0bF9naXQuYmIKQEAgLTUsMTcgKzUsMTYgQEAKIGFsbG9jYXRpb25zIHdpdGggTlVNQSBwb2xpY3kgaW4gYXBwbGljYXRpb25zLiIKIExJQ0VOU0UgPSAiR1BMLTIuMCAmIExHUEwtMi4xIgogU0VDVElPTiA9ICJhcHBzIgotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTk7ZW5kbGluZT0zMjttZDU9NTY0NGNjMzg1MWNiMjQ5OWY2YzQ4ZTUyZmUxOThiZDkiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTE5O2VuZGxpbmU9MzI7bWQ1PWY4ZmYyMzkxNjI0ZjI4ZTQ4MTI5OWYzZjY3N2IyMWJiIgogCi1TUkNSRVYgPSAiZWEzYTcwNjgxYzJmNTIzZmU1OGUxZDQ0NTI3ZjQ3OGNhNzZkYjc0ZSIKLVBWID0gIjIuMC4xMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI4NDEyNTNkMTMxM2IwMWE5NjhjMzgwY2FlNGY0OThmMjBjNDZlNWFhIgorUFYgPSAiMi4wLjEyK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbnVtYWN0bC9udW1hY3RsIFwKLSAgICBmaWxlOi8vZml4LW51bGwtcG9pbnRlci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZml4LU5VTEwtcG9pbnRlci1wcm9ibGVtLnBhdGNoIFwKICAgICBmaWxlOi8vRml4LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAogICAgIGZpbGU6Ly9NYWtlZmlsZSBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtUmVtb3ZlLWFzc3VtcHRpb25zLWFib3V0LWdsaWJjLWJlaW5nLW9ubHktbGliYy1pbXBsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc3M2I0YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1SZW1vdmUtYXNzdW1wdGlvbnMtYWJvdXQtZ2xpYmMtYmVpbmctb25seS1saWJjLWltcGxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBhMDk4M2Q4NDE4NWYwNGM0ZTQwNzc4ZmU5NTFmZGU0NDM5ODk0ODgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTYgSnVsIDIwMTcgMDc6Mzc6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xMV0gUmVtb3ZlIGFzc3VtcHRpb25zIGFib3V0IGdsaWJjIGJlaW5nIG9ubHkgbGliYwotIGltcGxlbWVudGF0aW9uIG9uIGxpbnV4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMgICAgICB8IDIgKy0KLSBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaCB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogb3Blbi12bS10b29scy9saWIvZmlsZS9maWxlSU9Qb3NpeC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKLUBAIC0yMDUsNyArMjA1LDcgQEAgc3RhdGljIEFsaWduZWRQb29sIGFsaWduZWRQb29sOwotICAqIGFyZSBub3QgYXZhaWxhYmxlIGluIGFueSBoZWFkZXIgZmlsZS4KLSAgKi8KLSAKLS0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAgI2lmIGRlZmluZWQoX0ZJTEVfT0ZGU0VUX0JJVFMpICYmIChfRklMRV9PRkZTRVRfQklUUyA9PSA2NCkKLSAgICAgICAvKgotICAgICAgICAqIFdlIHdhbnQgcHJlYWR2L3B3cml0ZXYuIEJ1dCBkdWUgdG8gRk9CPTY0LCB0aGUgc3ltYm9scyBhcmUgLTY0LgotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fYmFzaWNfZGVmcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9pbmNsdWRlL3ZtX2Jhc2ljX2RlZnMuaAotKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fYmFzaWNfZGVmcy5oCi1AQCAtNTcxLDYgKzU3MSw3IEBAIHR5cGVkZWYgaW50IHBpZF90OwotICNpZiBkZWZpbmVkIF9fbGludXhfXyAmJiAhZGVmaW5lZCBfX0tFUk5FTF9fICYmICFkZWZpbmVkIE1PRFVMRSAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZpbmVkIFZNTSAmJiAhZGVmaW5lZCBGUk9CT1MgJiYgIWRlZmluZWQgX19BTkRST0lEX18KLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWYgX19HTElCQ19fCi0gI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDEpICYmICFkZWZpbmVkIEdMSUJDX1ZFUlNJT05fMjEKLSAjZGVmaW5lIEdMSUJDX1ZFUlNJT05fMjEKLSAjZW5kaWYKLUBAIC01OTAsNiArNTkxLDcgQEAgdHlwZWRlZiBpbnQgcGlkX3Q7Ci0gI2RlZmluZSBHTElCQ19WRVJTSU9OXzIxMgotICNlbmRpZgotICNlbmRpZgotKyNlbmRpZgotIAotIC8qCi0gICogQ29udmVuaWVuY2UgZGVmaW5pdGlvbnMgb2YgdW5pY29kZSBjaGFyYWN0ZXJzLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtVXNlLW9mZjY0X3QtaW5zdGVhZC1vZi1fX29mZjY0X3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1Vc2Utb2ZmNjRfdC1pbnN0ZWFkLW9mLV9fb2ZmNjRfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzI0OTZmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtVXNlLW9mZjY0X3QtaW5zdGVhZC1vZi1fX29mZjY0X3QucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA0M2Q4NTlmOWQ1ZWVjZGMwZmRjMWE2YmY1MzliY2RlNGExNTJlNmY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjcgQXVnIDIwMTggMjM6MjI6MjEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIG9mZjY0X3QgaW5zdGVhZCBvZiBfX29mZjY0X3QKKworRml4ZXMKK3Vua25vd24gdHlwZSBuYW1lICdfX29mZjY0X3QnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYi9maWxlL2ZpbGVJT1Bvc2l4LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2ZpbGUvZmlsZUlPUG9zaXguYyBiL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKK2luZGV4IDIzMTA4Mjc5Li5iY2QyZGRjNSAxMDA2NDQKKy0tLSBhL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKKysrKyBiL2xpYi9maWxlL2ZpbGVJT1Bvc2l4LmMKK0BAIC0yMDYsMTAgKzIwNiwxMCBAQCBzdGF0aWMgQWxpZ25lZFBvb2wgYWxpZ25lZFBvb2w7CisgICAgICAgICogdGhlIHN5bWJvbHMgKGFuZCBhbnlvbmUgYnVpbGRpbmcgWE9QRU48NzAwIGdldHMgbm90aGluZykuCisgICAgICAgICovCisgICAgICAgZXh0ZXJuIHNzaXplX3QgcHJlYWR2NjQoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBvZmZzZXQpIF9fYXR0cmlidXRlX18gKCh3ZWFrKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICBvZmY2NF90IG9mZnNldCkgX19hdHRyaWJ1dGVfXyAoKHdlYWspKTsKKyAKKyAgICAgICBleHRlcm4gc3NpemVfdCBwd3JpdGV2NjQoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgaW50IGlvdmNudCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIF9fb2ZmNjRfdCBvZmZzZXQpIF9fYXR0cmlidXRlX18gKCh3ZWFrKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICBvZmY2NF90IG9mZnNldCkgX19hdHRyaWJ1dGVfXyAoKHdlYWspKTsKKyAgICAjZWxzZQorICAgICAgICNlcnJvciAiTGFyZ2UgZmlsZSBzdXBwb3J0IHVuYXZhaWxhYmxlLiBBYm9ydGluZy4iCisgICAgI2VuZGlmCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaAppbmRleCBlOWNiODczLi5iN2E0MDU4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC11c2UtZG5ldC1jb25maWcucGF0Y2gKQEAgLTE0LDExICsxNCwxMSBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDM0MDBiODYuLjdkNjExOWUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk0Miw3ICs5NDIsNyBAQCBpZiB0ZXN0ICIkd2l0aF9kbmV0IiA9ICJ5ZXMiOyB0aGVuCitJbmRleDogb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvY29uZmlndXJlLmFjCisrKysgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKK0BAIC05NDQsNyArOTQ0LDcgQEAgaWYgdGVzdCAiJHdpdGhfZG5ldCIgPSAieWVzIjsgdGhlbgogICAgICAgIEFDX1ZNV19DSEVDS19MSUIoW2RuZXRdLAogICAgICAgICAgICAgICAgICAgICAgICAgW0RORVRdLAogICAgICAgICAgICAgICAgICAgICAgICAgW10sCkBAIC0yNywxNSArMjcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgW2RuZXQuaF0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbaW50Zl9vcGVuXSwKLUBAIC05NTIsNyArOTUyLDcgQEAgaWYgdGVzdCAiJHdpdGhfZG5ldCIgPSAieWVzIjsgdGhlbgorQEAgLTk1NCw3ICs5NTQsNyBAQCBpZiB0ZXN0ICIkd2l0aF9kbmV0IiA9ICJ5ZXMiOyB0aGVuCiAgCiAgICAgaWYgdGVzdCAkaGF2ZV9kbmV0ID0gIm5vIjsgdGhlbgogIAkJQUNfTVNHX0VSUk9SKAogLQkJICAgW2RuZXQtY29uZmlnIHdhcyBub3QgZm91bmQgb24geW91ciBQQVRILiBQbGVhc2UgY29uZmlndXJlIHdpdGhvdXQgZG5ldCAodXNpbmcgLS13aXRob3V0LWRuZXQpIG9yIGluc3RhbGwgZG5ldCAtIGh0dHA6Ly9saWJkbmV0LnNvdXJjZWZvcmdlLm5ldF0pCiArCQkgICBbZG5ldCB3YXMgbm90IGZvdW5kLiBQbGVhc2UgY29uZmlndXJlIHdpdGhvdXQgZG5ldCAodXNpbmcgLS13aXRob3V0LWRuZXQpIG9yIGluc3RhbGwgZG5ldCAtIGh0dHA6Ly9saWJkbmV0LnNvdXJjZWZvcmdlLm5ldF0pCi0gCWZpCisgICAgZmkKICBmaQogIAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLXN5cy1wb2xsLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMS1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLXN5cy1wb2xsLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgyMDU4MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAxLWluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2Ytc3lzLXBvbGwuaC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDQ5ODFiYjMwMTNkN2YxZTQwZTQ0NjE4MDc2ZDk5YWYzNDg0ZWVkZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMyBKdW4gMjAxOCAyMzowMjo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHBvbGwuaCBpbnN0ZWFkIG9mIHN5cy9wb2xsLmgKKworaW5jbHVkaW5nIHN5cy9wb2xsLmggaXMgZGVwcmVjYXRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jIGIvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMKK2luZGV4IDEzOTA4Njc5Li5lMGE2OGU3ZSAxMDA2NDQKKy0tLSBhL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jCisrKysgYi9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYworQEAgLTY5LDggKzY5LDggQEAKKyAjZWxzZQorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdW4uaD4KKyAjaW5jbHVkZSA8bmV0ZGIuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAyLVJlbmFtZS1wb2xsLmgtdG8tdm1fcG9sbC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItUmVuYW1lLXBvbGwuaC10by12bV9wb2xsLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2YTBmZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAyLVJlbmFtZS1wb2xsLmgtdG8tdm1fcG9sbC5oLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIDkyOTU1YjNhNjE4MGI0Mjg1ZDExZWY3OTc2NmRmMDFiOWFiNjBkYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMyBKdW4gMjAxOCAyMzoxMTo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBSZW5hbWUgcG9sbC5oIHRvIHZtX3BvbGwuaAorCittdXNsIGxpYmMncyBzeXN0ZW0gaGVhZGVycyBwdWxscyBpbiBvcGVuLXZtLXRvb2xzJyBwb2xsLmguIFRvIGF2b2lkIHRoaXMKK3dlIHJlbmFtZSBwb2xsLmggdG8gdm1fcG9sbC5oLgorCitTaWduZWQtb2ZmLWJ5OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYyAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG9wZW4tdm0tdG9vbHMvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9wb2xsSW1wbC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUve3BvbGwuaCA9PiB2bV9wb2xsLmh9ICAgICAgICAgICAgICAgICB8IDIgKy0KKyBvcGVuLXZtLXRvb2xzL2xpYi9ycGNJbi9ycGNpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgLi4uL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYyAgICAgIHwgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorIHJlbmFtZSBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3twb2xsLmggPT4gdm1fcG9sbC5ofSAoOTklKQorCitkaWZmIC0tZ2l0IGEvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMgYi9saWIvYXN5bmNzb2NrZXQvYXN5bmNzb2NrZXQuYworaW5kZXggZTBhNjhlN2UuLmI5Njc1Njc0IDEwMDY0NAorLS0tIGEvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMKKysrKyBiL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jCitAQCAtODYsNyArODYsNyBAQAorICNpbmNsdWRlICJyYW5kb20uaCIKKyAjaW5jbHVkZSAiYXN5bmNzb2NrZXQuaCIKKyAjaW5jbHVkZSAiYXN5bmNTb2NrZXRCYXNlLmgiCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorICNpbmNsdWRlICJsb2cuaCIKKyAjaW5jbHVkZSAiZXJyLmgiCisgI2luY2x1ZGUgImhvc3RpbmZvLmgiCitkaWZmIC0tZ2l0IGEvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jIGIvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jCitpbmRleCA5OTFhNzk0MS4uZWQwYzA5ZjkgMTAwNjQ0CistLS0gYS9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyLmMKKysrKyBiL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXIuYworQEAgLTQ4LDcgKzQ4LDcgQEAKKyAjaW5jbHVkZSAiaGdmc1NlcnZlck9wbG9jay5oIgorICNpbmNsdWRlICJoZ2ZzRGlyTm90aWZ5LmgiCisgI2luY2x1ZGUgInVzZXJsb2NrLmgiCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorICNpbmNsdWRlICJtdXRleFJhbmtMaWIuaCIKKyAjaW5jbHVkZSAidm1fYmFzaWNfYXNtLmgiCisgI2luY2x1ZGUgInVuaWNvZGVPcGVyYXRpb25zLmgiCitkaWZmIC0tZ2l0IGEvbGliL2luY2x1ZGUvYXN5bmNzb2NrZXQuaCBiL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKK2luZGV4IDUyNDE0N2VhLi4xMDNmOTQ0ZiAxMDA2NDQKKy0tLSBhL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKKysrKyBiL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKK0BAIC0xNjQsNyArMTY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXN5bmNTb2NrZXQgQXN5bmNTb2NrZXQ7CisgICogT3IgdGhlIGNsaWVudCBjYW4gc3BlY2lmeSBpdHMgZmF2b3JpdGUgcG9sbCBjbGFzcyBhbmQgbG9ja2luZyBiZWhhdmlvci4KKyAgKiBVc2Ugb2YgSVZtZGJQb2xsIGlzIG9ubHkgc3VwcG9ydGVkIGZvciByZWd1bGFyIHNvY2tldHMgYW5kIGZvciBBdHRhY2guCisgICovCistI2luY2x1ZGUgInBvbGwuaCIKKysjaW5jbHVkZSAidm1fcG9sbC5oIgorIHN0cnVjdCBJVm1kYlBvbGw7CisgdHlwZWRlZiBzdHJ1Y3QgQXN5bmNTb2NrZXRQb2xsUGFyYW1zIHsKKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgLyogRGVmYXVsdCAwLCBvbmx5IFBPTExfRkxBR19OT19CVUxMIGlzIHZhbGlkICovCitkaWZmIC0tZ2l0IGEvbGliL2luY2x1ZGUvcG9sbEltcGwuaCBiL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKK2luZGV4IDQ2NDQyZTU1Li44YmM2Njk5NyAxMDA2NDQKKy0tLSBhL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKKysrKyBiL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKK0BAIC00NCw3ICs0NCw3IEBACisgI2RlZmluZSBJTkNMVURFX0FMTE9XX1VTRVJMRVZFTAorICNpbmNsdWRlICJpbmNsdWRlQ2hlY2suaCIKKyAKKy0jaW5jbHVkZSAicG9sbC5oIgorKyNpbmNsdWRlICJ2bV9wb2xsLmgiCisgI2luY2x1ZGUgInZtX2Jhc2ljX2FzbS5oIgorIAorICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorZGlmZiAtLWdpdCBhL2xpYi9pbmNsdWRlL3BvbGwuaCBiL2xpYi9pbmNsdWRlL3ZtX3BvbGwuaAorc2ltaWxhcml0eSBpbmRleCA5OSUKK3JlbmFtZSBmcm9tIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvcG9sbC5oCityZW5hbWUgdG8gb3Blbi12bS10b29scy9saWIvaW5jbHVkZS92bV9wb2xsLmgKK2luZGV4IDk4OGZlNmQwLi5lOWU3NGZiNSAxMDA2NDQKKy0tLSBhL2xpYi9pbmNsdWRlL3BvbGwuaAorKysrIGIvbGliL2luY2x1ZGUvdm1fcG9sbC5oCitAQCAtNjAsNyArNjAsNyBAQCBleHRlcm4gIkMiIHsKKyAjaWYgIWRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgfHwgVEFSR0VUX09TX0lQSE9ORSA9PSAwCisgI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyAjZW5kaWYKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNkZWZpbmUgSFogMTAwCisgI2VuZGlmCisgI2lmZGVmIF9fQU5EUk9JRF9fCitkaWZmIC0tZ2l0IGEvbGliL3JwY0luL3JwY2luLmMgYi9saWIvcnBjSW4vcnBjaW4uYworaW5kZXggYzJjNTE1ODMuLmQ2YzYyZjEwIDEwMDY0NAorLS0tIGEvbGliL3JwY0luL3JwY2luLmMKKysrKyBiL2xpYi9ycGNJbi9ycGNpbi5jCitAQCAtNTcsNyArNTcsNyBAQAorIAorICNpZiBkZWZpbmVkKFZNVE9PTFNfVVNFX1ZTT0NLRVQpCisgIyAgaW5jbHVkZSA8Z2xpYi5oPgorLSMgIGluY2x1ZGUgInBvbGwuaCIKKysjICBpbmNsdWRlICJ2bV9wb2xsLmgiCisgIyAgaW5jbHVkZSAiYXN5bmNzb2NrZXQuaCIKKyAjICBpbmNsdWRlICJ2bWNpX2RlZnMuaCIKKyAjaW5jbHVkZSAiZGF0YU1hcC5oIgorZGlmZiAtLWdpdCBhL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYyBiL3NlcnZpY2VzL3BsdWdpbnMvZ3JhYmJpdG1xUHJveHkvZ3JhYmJpdG1xUHJveHlQbHVnaW4uYworaW5kZXggMDM3MDA5MzcuLmYwYjQ5YWQ3IDEwMDY0NAorLS0tIGEvc2VydmljZXMvcGx1Z2lucy9ncmFiYml0bXFQcm94eS9ncmFiYml0bXFQcm94eVBsdWdpbi5jCisrKysgYi9zZXJ2aWNlcy9wbHVnaW5zL2dyYWJiaXRtcVByb3h5L2dyYWJiaXRtcVByb3h5UGx1Z2luLmMKK0BAIC00OCw3ICs0OCw3IEBACisgI2luY2x1ZGUgInJwY291dC5oIgorICNpbmNsdWRlICJyYWJiaXRtcVByb3h5Q29uc3QuaCIKKyAjaW5jbHVkZSAidm1fYmFzaWNfdHlwZXMuaCIKKy0jaW5jbHVkZSAicG9sbC5oIgorKyNpbmNsdWRlICJ2bV9wb2xsLmgiCisgI2lmZGVmIE9QRU5fVk1fVE9PTFMKKyAjaW5jbHVkZSAidm1jaV9zb2NrZXRzLmgiCisgI2luY2x1ZGUgInNzbERpcmVjdC5oIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItaW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1vYnNvbGV0ZS1zeXMtcG9sbC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDItaW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1vYnNvbGV0ZS1zeXMtcG9sbC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjZiZjJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAyLWluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2Ytb2Jzb2xldGUtc3lzLXBvbGwuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gZDQ0YzdjOWRlNzM4MGFkN2IyODQyMzFiZDViNWM5OWI1YzE5NzU4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE2IEp1bCAyMDE3IDA3OjM3OjU5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGluY2x1ZGUgcG9sbC5oIGluc3RlYWQgb2Ygb2Jzb2xldGUgc3lzL3BvbGwuaAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gb3Blbi12bS10b29scy9saWIvYXN5bmNzb2NrZXQvYXN5bmNTb2NrZXRJbnQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jU29ja2V0SW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2FzeW5jc29ja2V0L2FzeW5jU29ja2V0SW50LmgKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY1NvY2tldEludC5oCi1AQCAtNzEsOCArNzEsOCBAQAotICNlbHNlCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotKyNpbmNsdWRlIDxwb2xsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy91bi5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDMtUmVuYW1lLXBvbGwuaC10by12bV9wb2xsLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0MTc3OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwMy1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1NiArMCwwIEBACi1Gcm9tIDY4N2ZjYTIwYjM0MTdhYzg4NWI2OTYxZTZmZTExMjZkNGEzZmU3YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+Ci1EYXRlOiBUdWUsIDE3IE5vdiAyMDE1IDEwOjU3OjMxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTFdIFJlbmFtZSBwb2xsLmggdG8gdm1fcG9sbC5oCi0KLW11c2wgbGliYydzIHN5c3RlbSBoZWFkZXJzIHB1bGxzIGluIG9wZW4tdm0tdG9vbHMnIHBvbGwuaC4gVG8gYXZvaWQgdGhpcwotd2UgcmVuYW1lIHBvbGwuaCB0byB2bV9wb2xsLmguCi0KLVNpZ25lZC1vZmYtYnk6IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KLS0tLQotIG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIG9wZW4tdm0tdG9vbHMvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlci5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvYXN5bmNzb2NrZXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvcG9sbEltcGwuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUve3BvbGwuaCA9PiB2bV9wb2xsLmh9ICAgICAgICAgICAgICAgICAgICAgIHwgMAotIG9wZW4tdm0tdG9vbHMvbGliL3JwY0luL3JwY2luLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ncmFiYml0bXFQcm94eS9ncmFiYml0bXFQcm94eVBsdWdpbi5jIHwgMiArLQotIDcgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotIHJlbmFtZSBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3twb2xsLmggPT4gdm1fcG9sbC5ofSAoMTAwJSkKLQotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2FzeW5jc29ja2V0L2FzeW5jc29ja2V0LmMKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9hc3luY3NvY2tldC9hc3luY3NvY2tldC5jCi1AQCAtNTIsNyArNTIsNyBAQAotICNpbmNsdWRlICJ2bXdhcmUuaCIKLSAjaW5jbHVkZSAiYXN5bmNzb2NrZXQuaCIKLSAjaW5jbHVkZSAiYXN5bmNTb2NrZXRJbnQuaCIKLS0jaW5jbHVkZSAicG9sbC5oIgotKyNpbmNsdWRlICJ2bV9wb2xsLmgiCi0gI2luY2x1ZGUgImxvZy5oIgotICNpbmNsdWRlICJlcnIuaCIKLSAjaW5jbHVkZSAiaG9zdGluZm8uaCIKLUluZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyLmMKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXIuYwotQEAgLTQ4LDcgKzQ4LDcgQEAKLSAjaW5jbHVkZSAiaGdmc1NlcnZlck9wbG9jay5oIgotICNpbmNsdWRlICJoZ2ZzRGlyTm90aWZ5LmgiCi0gI2luY2x1ZGUgInVzZXJsb2NrLmgiCi0tI2luY2x1ZGUgInBvbGwuaCIKLSsjaW5jbHVkZSAidm1fcG9sbC5oIgotICNpbmNsdWRlICJtdXRleFJhbmtMaWIuaCIKLSAjaW5jbHVkZSAidm1fYmFzaWNfYXNtLmgiCi0gI2luY2x1ZGUgInVuaWNvZGVPcGVyYXRpb25zLmgiCi1JbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9hc3luY3NvY2tldC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL2FzeW5jc29ja2V0LmgKLUBAIC0xMjksNyArMTI5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXN5bmNTb2NrZXQgQXN5bmNTb2NrZXQ7Ci0gICogT3IgdGhlIGNsaWVudCBjYW4gc3BlY2lmeSBpdHMgZmF2b3JpdGUgcG9sbCBjbGFzcyBhbmQgbG9ja2luZyBiZWhhdmlvci4KLSAgKiBVc2Ugb2YgSVZtZGJQb2xsIGlzIG9ubHkgc3VwcG9ydGVkIGZvciByZWd1bGFyIHNvY2tldHMgYW5kIGZvciBBdHRhY2guCi0gICovCi0tI2luY2x1ZGUgInBvbGwuaCIKLSsjaW5jbHVkZSAidm1fcG9sbC5oIgotIHN0cnVjdCBJVm1kYlBvbGw7Ci0gdHlwZWRlZiBzdHJ1Y3QgQXN5bmNTb2NrZXRQb2xsUGFyYW1zIHsKLSAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgLyogRGVmYXVsdCAwLCBvbmx5IFBPTExfRkxBR19OT19CVUxMIGlzIHZhbGlkICovCi1JbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9wb2xsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2luY2x1ZGUvcG9sbC5oCi0rKysgL2Rldi9udWxsCi1AQCAtMSwzMjQgKzAsMCBAQAotLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0gKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNiBWTXdhcmUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS0gKgotLSAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0tICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiB2ZXJzaW9uIDIuMSBhbmQgbm8gbGF0ZXIgdmVyc2lvbi4KLS0gKgotLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLS0gKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQotLSAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBMZXNzZXIgR05VIEdlbmVyYWwgUHVibGljCi0tICogTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSAqCi0tICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLS0gKiA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBLgotLSAqCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS0KLS0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0tICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIENvbW1vbgotLSAqIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAodGhlICJMaWNlbnNlIikgdmVyc2lvbiAxLjAKLS0gKiBhbmQgbm8gbGF0ZXIgdmVyc2lvbi4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCi0tICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotLSAqCi0tICogWW91IGNhbiBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0tICogICAgICAgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2NkZGwxLnBocAotLSAqCi0tICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCi0tICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLSAqCi0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS0KLS0KLS0jaWZuZGVmIF9QT0xMX0hfCi0tI2RlZmluZSBfUE9MTF9IXwotLQotLSNkZWZpbmUgSU5DTFVERV9BTExPV19VU0VSTEVWRUwKLS0jZGVmaW5lIElOQ0xVREVfQUxMT1dfVk1DT1JFCi0tI2luY2x1ZGUgImluY2x1ZGVDaGVjay5oIgotLQotLSNpbmNsdWRlICJ2bV9iYXNpY190eXBlcy5oIgotLSNpbmNsdWRlICJ2bV9iYXNpY19kZWZzLmgiCi0tI2luY2x1ZGUgInZtd2FyZS5oIgotLSNpbmNsdWRlICJ1c2VybG9jay5oIgotLQotLSNpZmRlZiBfV0lOMzIKLS0jZGVmaW5lIEhaIDEwMAotLSNlbGlmIGRlZmluZWQgbGludXgKLS0jaW5jbHVkZSA8YXNtL3BhcmFtLmg+Ci0tI2VsaWYgX19BUFBMRV9fCi0tI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgotLS8qCi0tICogT2xkIFNES3MgZG9uJ3QgZGVmaW5lIFRBUkdFVF9PU19JUEhPTkUgYXQgYWxsLgotLSAqIE5ldyBvbmVzIGRlZmluZSBpdCB0byAwIG9uIE1hYyBPUyBYLCAxIG9uIGlPUy4KLS0gKi8KLS0jaWYgIWRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgfHwgVEFSR0VUX09TX0lQSE9ORSA9PSAwCi0tI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KLS0jZW5kaWYKLS0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KLS0jZGVmaW5lIEhaIDEwMAotLSNlbmRpZgotLSNpZmRlZiBfX0FORFJPSURfXwotLS8qCi0tICogPHBvbGwuaD4gb2YgYW5kcm9pZCBzaG91bGQgYmUgaW5jbHVkZWQsIGJ1dCBpdHMgbmFtZSBpcyBzYW1lCi0tICogd2l0aCB0aGlzIGZpbGUuIFNvIGl0cyBjb250ZW50IGlzIHB1dCBoZXJlIHRvIGF2b2lkIGNvbmZsaWN0LgotLSAqLwotLSNpbmNsdWRlIDxhc20vcG9sbC5oPgotLSNkZWZpbmUgSFogMTAwCi0tdHlwZWRlZiB1bnNpZ25lZCBpbnQgIG5mZHNfdDsKLS1pbnQgcG9sbChzdHJ1Y3QgcG9sbGZkICosIG5mZHNfdCwgbG9uZyk7Ci0tI2VuZGlmCi0tCi0tCi0tLyoKLS0gKiBQb2xsIGV2ZW50IHR5cGVzOiBlYWNoIHR5cGUgaGFzIGEgZGlmZmVyZW50IHJlYXNvbiBmb3IgZmlyaW5nLAotLSAqIG9yIGNvbmRpdGlvbiB0aGF0IG11c3QgYmUgbWV0IGJlZm9yZSBmaXJpbmcuCi0tICovCi0tCi0tdHlwZWRlZiBlbnVtIHsKLS0gICAvKgotLSAgICAqIEFjdHVhbCBQb2xsIHF1ZXVlIHR5cGVzIGFnYWluc3Qgd2hpY2ggeW91IGNhbiByZWdpc3RlciBjYWxsYmFja3MuCi0tICAgICovCi0tICAgUE9MTF9WSVJUVUFMUkVBTFRJTUUgPSAtMSwgLyogTmVnYXRpdmUgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUgaXRzIG93biBRICovCi0tICAgUE9MTF9WVElNRSA9IDAsCi0tICAgUE9MTF9SRUFMVElNRSwKLS0gICBQT0xMX0RFVklDRSwKLS0gICBQT0xMX01BSU5fTE9PUCwKLS0gICBQT0xMX05VTV9RVUVVRVMKLS19IFBvbGxFdmVudFR5cGU7Ci0tCi0tCi0tLyoKLS0gKiBDbGFzc2VzIG9mIGV2ZW50cwotLSAqCi0tICogVGhlc2UgYXJlIHRoZSBwcmVkZWZpbmVkIGNsYXNzZXMuICBNb3JlIGNhbiBiZSBkZWNsYXJlZAotLSAqIHdpdGggUG9sbF9BbGxvY0NsYXNzKCkuCi0tICovCi0tCi0tdHlwZWRlZiBlbnVtIFBvbGxDbGFzcyB7Ci0tICAgUE9MTF9DTEFTU19NQUlOLAotLSAgIFBPTExfQ0xBU1NfUEFVU0UsCi0tICAgUE9MTF9DTEFTU19JUEMsCi0tICAgUE9MTF9DTEFTU19DUFQsCi0tICAgUE9MTF9DTEFTU19NS1MsCi0tICAgUE9MTF9GSVhFRF9DTEFTU0VTLAotLSAgIFBPTExfTUFYX0NMQVNTRVMgPSAzMjAgLyogU2l6ZSBlbnVtIHRvIG1heGltdW0gKi8KLS19IFBvbGxDbGFzczsKLS0KLS0KLS0vKgotLSAqIEVhY2ggY2FsbGJhY2sgaXMgcmVnaXN0ZXJlZCBpbiBhIHNldCBvZiBjbGFzc2VzCi0tICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgUG9sbENsYXNzU2V0IHsKLS0gICAvKiBUeXBlIGlzIHVpbnRwdHJfdCB0byBnaXZlIGJlc3QgMzIvNjQtYml0IGNvZGUuICovCi0tI2RlZmluZSBfUE9MTF9FTEVNU0laRSAoc2l6ZW9mICh1aW50cHRyX3QpICogOCkKLS0gICB1aW50cHRyX3QgYml0c1tDRUlMSU5HKFBPTExfTUFYX0NMQVNTRVMsIF9QT0xMX0VMRU1TSVpFKV07Ci0tfSBQb2xsQ2xhc3NTZXQ7Ci0tCi0tLyogQW4gZW1wdHkgUG9sbENsYXNzU2V0LiAqLwotLXN0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0Ci0tUG9sbENsYXNzU2V0X0VtcHR5KHZvaWQpCi0tewotLSAgIFBvbGxDbGFzc1NldCBzZXQgPSB7IHsgMCB9IH07Ci0tICAgcmV0dXJuIHNldDsKLS19Ci0tCi0tLyogQSBQb2xsQ2xhc3NTZXQgd2l0aCB0aGUgc2luZ2xlIG1lbWJlci4gKi8KLS1zdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAotLVBvbGxDbGFzc1NldF9TaW5nbGV0b24oUG9sbENsYXNzIGMpCi0tewotLSAgIFBvbGxDbGFzc1NldCBzID0gUG9sbENsYXNzU2V0X0VtcHR5KCk7Ci0tCi0tICAgQVNTRVJUX09OX0NPTVBJTEUoc2l6ZW9mIHMuYml0c1swXSAqIDggPT0gX1BPTExfRUxFTVNJWkUpOyAvKiBTaXplIGNvcnJlY3QgKi8KLS0gICBBU1NFUlRfT05fQ09NUElMRSgoX1BPTExfRUxFTVNJWkUgJiAoX1BPTExfRUxFTVNJWkUgLSAxKSkgPT0gMCk7IC8qIHBvd2VyIG9mIDIgKi8KLS0gICBBU1NFUlRfT05fQ09NUElMRShQT0xMX01BWF9DTEFTU0VTIDw9IEFSUkFZU0laRShzLmJpdHMpICogX1BPTExfRUxFTVNJWkUpOwotLSAgIEFTU0VSVChjIDwgUE9MTF9NQVhfQ0xBU1NFUyk7Ci0tCi0tICAgcy5iaXRzW2MgLyBfUE9MTF9FTEVNU0laRV0gPSBDT05TVDMyNjRVKDEpIDw8IChjICUgX1BPTExfRUxFTVNJWkUpOwotLSAgIHJldHVybiBzOwotLX0KLS0KLS0vKiBDb21iaW5lIHR3byBQb2xsQ2xhc3NTZXRzLiAqLwotLXN0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0Ci0tUG9sbENsYXNzU2V0X1VuaW9uKFBvbGxDbGFzc1NldCBsaHMsIFBvbGxDbGFzc1NldCByaHMpCi0tewotLSAgIFBvbGxDbGFzc1NldCB1OwotLSAgIHVuc2lnbmVkIGk7Ci0tCi0tICAgZm9yIChpID0gMDsgaSA8IEFSUkFZU0laRSh1LmJpdHMpOyBpKyspIHsKLS0gICAgICB1LmJpdHNbaV0gPSBsaHMuYml0c1tpXSB8IHJocy5iaXRzW2ldOwotLSAgIH0KLS0gICByZXR1cm4gdTsKLS19Ci0tCi0tLyogQWRkIHNpbmdsZSBjbGFzcyB0byBQb2xsQ2xhc3NTZXQuICovCi0tc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKLS1Qb2xsQ2xhc3NTZXRfSW5jbHVkZShQb2xsQ2xhc3NTZXQgc2V0LCBQb2xsQ2xhc3MgYykKLS17Ci0tICAgcmV0dXJuIFBvbGxDbGFzc1NldF9VbmlvbihzZXQsIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oYykpOwotLX0KLS0KLS0KLS0jZGVmaW5lIFBPTExfQ1NfTUFJTiAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfTUFJTikKLS0jZGVmaW5lIFBPTExfQ1NfUEFVU0UgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19NQUlOLCAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfUEFVU0UpKQotLSNkZWZpbmUgUE9MTF9DU19DUFQgICAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX1BBVVNFLCAgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19DUFQpKQotLSNkZWZpbmUgUE9MTF9DU19JUEMgICAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX0NQVCwgICAgICAgICAgICAgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19JUEMpKQotLSNkZWZpbmUgUE9MTF9DU19WTURCICAgIFBPTExfQ1NfUEFVU0UgLyogUE9MTF9DTEFTU19WTURCIGlzIHJldGlyZWQgKi8KLS0jZGVmaW5lIFBPTExfQ1NfTUtTCVBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19NS1MpCi0tLyogCi0tICogREFOR0VSLiAgWW91IGRvbid0IG5lZWQgUE9MTF9DU19BTFdBWVMuICBSZWFsbHkuICBTbyBkb24ndCB1c2UgaXQuCi0tICovCi0tI2RlZmluZSBQT0xMX0NTX0FMV0FZUyAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfQ1BULCBQT0xMX0NTX0lQQykKLS0KLS0vKgotLSAqIFBvbGwgY2xhc3Mtc2V0IHRheG9ub215OgotLSAqIFBPTExfQ1NfTUFJTgotLSAqICAgIC0gVW5sZXNzIHlvdSBORUVEIGFub3RoZXIgY2xhc3MsIHVzZSBQT0xMX0NTX01BSU4uCi0tICogUE9MTF9DU19QQVVTRQotLSAqICAgIC0gRm9yIGNhbGxiYWNrcyB0aGF0IG11c3Qgb2NjdXIgZXZlbiBpZiB0aGUgZ3Vlc3QgaXMgcGF1c2VkLgotLSAqICAgICAgTW9zdCBWTURCIG9yIEZvdW5kcnkgY29tbWFuZHMgYXJlIGluIHRoaXMgY2F0ZWdvcnkuCi0tICogUE9MTF9DU19DUFQKLS0gKiAgICAtIE9ubHkgZm9yIGNhbGxiYWNrcyB3aGljaCBjYW4gdHJpZ2dlciBpbnRlcm1lZGlhdGUgQ2hlY2twb2ludCAKLS0gKiAgICAgIHRyYW5zaXRpb25zLgotLSAqICAgICAgVGhlIE9OTFkgc3VjaCBjYWxsYmFjayBpcyBNaWdyYXRlLgotLSAqIFBPTExfQ1NfSVBDCi0tICogICAgLSBPbmx5IGZvciBjYWxsYmFja3Mgd2hpY2ggY2FuIGNvbnRhaW4gTXNnXyhQb3N0fEhpbnR8UXVlc3Rpb24pIAotLSAqICAgICAgcmVzcG9uc2VzLCBhbmQgZm9yIHNpZ25hbCBoYW5kbGVycyAod2h5KT8KLS0gKiAgICAgIFZpZ29yLCBWTURCLCBhbmQgRm91bmRyeSBjYW4gY29udGFpbiBNc2dfKiByZXNwb25zZXMuCi0tICogUE9MTF9DU19NS1MKLS0gKiAgICAtIENhbGxiYWNrIHJ1bnMgaW4gTUtTIHRocmVhZC4KLS0gKiBQT0xMX0NTX0FMV0FZUwotLSAqICAgIC0gT25seSBmb3IgZXZlbnRzIHRoYXQgbXVzdCBiZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCi0tICogICAgICBUaGUgT05MWSBzdWNoIGNhbGxiYWNrIGlzIE92aGRNZW1WbXhTaXplQ2hlY2suCi0tICovCi0tCi0tCi0tLyoKLS0gKiBQb2xsX0NhbGxiYWNrIGZsYWdzCi0tICovCi0tCi0tI2RlZmluZSBQT0xMX0ZMQUdfUEVSSU9ESUMJCTB4MDEgICAgLy8ga2VlcCBhZnRlciBmaXJpbmcKLS0jZGVmaW5lIFBPTExfRkxBR19SRU1PVkVfQVRfUE9XRVJPRkYJMHgwMiAgCS8vIHNlbGYtZXhwbGFuYXRvcnkKLS0jZGVmaW5lIFBPTExfRkxBR19SRUFECQkJMHgwNAkvLyBkZXZpY2UgaXMgcmVhZHkgZm9yIHJlYWRpbmcKLS0jZGVmaW5lIFBPTExfRkxBR19XUklURQkJCTB4MDgJLy8gZGV2aWNlIGlzIHJlYWR5IGZvciB3cml0aW5nCi0tI2RlZmluZSBQT0xMX0ZMQUdfU09DS0VUICAgICAgICAgICAgICAgIDB4MTAgICAgLy8gZGV2aWNlIGlzIGEgV2luZG93cyBzb2NrZXQKLS0jZGVmaW5lIFBPTExfRkxBR19OT19CVUxMICAgICAgICAgICAgICAgMHgyMCAgICAvLyBjYWxsYmFjayBkb2VzIGl0cyBvd24gbG9ja2luZwotLSNkZWZpbmUgUE9MTF9GTEFHX1dJTlNPQ0sgICAgICAgICAgICAgICAweDQwICAgIC8vIFdpbnNvY2sgc3R5bGUgd3JpdGUgZXZlbnRzCi0tI2RlZmluZSBQT0xMX0ZMQUdfRkQgICAgICAgICAgICAgICAgICAgIDB4ODAgICAgLy8gZGV2aWNlIGlzIGEgV2luZG93cyBmaWxlIGRlc2NyaXB0b3IuCi0tI2RlZmluZSBQT0xMX0ZMQUdfQUNDRVBUX0lOVkFMSURfRkRTICAgIDB4MTAwICAgLy8gRm9yIGJyb2tlbiAzcmQgcGFydHkgbGlicywgZS5nLiBjdXJsCi0tI2RlZmluZSBQT0xMX0ZMQUdfVEhVTktfVE9fV05EICAgICAgICAgIDB4MjAwICAgLy8gdGh1bmsgY2FsbGJhY2sgdG8gd2luZG93IG1lc3NhZ2UgbG9vcAotLQotLQotLS8qCi0tICogQWR2aXNvcnkgbWluaW11bSB0aW1lIHBlcmlvZC4KLS0gKiBVc2VycyB0aGF0IHdhbnQgdGhlIGZhc3Rlc3QgcnVubmluZyByZWFsLXRpbWUgcG9sbAotLSAqIHNob3VsZCB1c2UgVElDS1NfVE9fVVNFQ1MoMSkuCi0tICovCi0tCi0tI2RlZmluZSBUSUNLU19UT19VU0VDUyhfeCkgKChfeCkgKiAoMTAwMDAwMCAvIEhaKSkKLS0jZGVmaW5lIFVTRUNTX1RPX1RJQ0tTKF94KSAoKF94KSAvICgxMDAwMDAwIC8gSFopKQotLQotLQotLXR5cGVkZWYgdm9pZCAoKlBvbGxlckZ1bmN0aW9uKSh2b2lkICpjbGllbnREYXRhKTsKLS10eXBlZGVmIHZvaWQgKCpQb2xsZXJGaXJlV3JhcHBlcikoUG9sbGVyRnVuY3Rpb24gZnVuYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZnVuY0RhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKndyYXBwZXJEYXRhKTsKLS10eXBlZGVmIEJvb2wgKCpQb2xsZXJFcnJvckZuKShjb25zdCBjaGFyICplcnJvclN0cik7Ci0tCi0tLyoKLS0gKiBJbml0aWFsaXNlcnM6Ci0tICoKLS0gKiAgICAgIEZvciB0aGUgc2FrZSBvZiBjb252ZW5pZW5jZSwgd2UgZGVjbGFyZSB0aGUgaW5pdGlhbGlzZXJzCi0tICogICAgICBmb3IgY3VzdG9tIGltcGxtZW50YXRpb25zIGhlcmUsIGV2ZW4gdGhvdWdoIHRoZSBhY3R1YWwKLS0gKiAgICAgIGltcGxlbWVudGF0aW9ucyBhcmUgZGlzdGluY3QgZnJvbSB0aGUgY29yZSBwb2xsIGNvZGUuCi0tICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgUG9sbE9wdGlvbnMgewotLSAgIEJvb2wgbG9ja2VkOyAgICAgICAgICAgLy8gVXNlIGludGVybmFsIE1YVXNlciBmb3IgbG9ja2luZwotLSAgIEJvb2wgYWxsb3dGdWxsUXVldWU7ICAgLy8gRG9uJ3QgYXNzZXJ0IHdoZW4gZGV2aWNlIGV2ZW50IHF1ZXVlIGlzIGZ1bGwuCi0tICAgVlRocmVhZElEIHdpbmRvd3NNc2dUaHJlYWQ7ICAgICAgIC8vIHRocmVhZCB0aGF0IHByb2Nlc3NlcyBXaW5kb3dzIG1lc3NhZ2VzCi0tICAgUG9sbGVyRmlyZVdyYXBwZXIgZmlyZVdyYXBwZXJGbjsgIC8vIG9wdGlvbmFsOyBtYXkgYmUgdXNlZnVsIGZvciBzdGF0cwotLSAgIHZvaWQgKmZpcmVXcmFwcGVyRGF0YTsgLy8gb3B0aW9uYWwKLS0gICBQb2xsZXJFcnJvckZuIGVycm9yRm47IC8vIG9wdGlvbmFsOyBjYWxsZWQgdXBvbiB1bnJlY292ZXJhYmxlIGVycm9yCi0tfSBQb2xsT3B0aW9uczsKLS0KLS0KLS12b2lkIFBvbGxfSW5pdERlZmF1bHQodm9pZCk7Ci0tdm9pZCBQb2xsX0luaXREZWZhdWx0RXgoY29uc3QgUG9sbE9wdGlvbnMgKm9wdHMpOwotLXZvaWQgUG9sbF9Jbml0R3RrKHZvaWQpOyAvLyBPbiB0b3Agb2YgZ2xpYiBmb3IgTGludXgKLS12b2lkIFBvbGxfSW5pdENGKHZvaWQpOyAgLy8gT24gdG9wIG9mIENvcmVGb3VuZGF0aW9uIGZvciBPU1gKLS0KLS0KLS0vKgotLSAqIEZ1bmN0aW9ucwotLSAqLwotLWludCBQb2xsX1NvY2tldFBhaXIoQm9vbCB2bWNpLCBCb29sIHN0cmVhbSwgaW50IGZkc1syXSk7Ci0tdm9pZCBQb2xsX0xvb3AoQm9vbCBsb29wLCBCb29sICpleGl0LCBQb2xsQ2xhc3MgYyk7Ci0tdm9pZCBQb2xsX0xvb3BUaW1lb3V0KEJvb2wgbG9vcCwgQm9vbCAqZXhpdCwgUG9sbENsYXNzIGMsIGludCB0aW1lb3V0KTsKLS1Cb29sIFBvbGxfTG9ja2luZ0VuYWJsZWQodm9pZCk7Ci0tdm9pZCBQb2xsX0V4aXQodm9pZCk7Ci0tCi0tCi0tLyoKLS0gKiBQb2xsX0NhbGxiYWNrIGFkZHMgYSBjYWxsYmFjayByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYW4gaWRlbnRpY2FsIG9uZSBleGlzdHMuCi0tICoKLS0gKiBMaWtld2lzZSwgUG9sbF9DYWxsYmFja1JlbW92ZSByZW1vdmVzIGV4YWN0bHkgb25lIGNhbGxiYWNrLgotLSAqLwotLQotLVZNd2FyZVN0YXR1cyBQb2xsX0NhbGxiYWNrKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRGV2SGFuZGxlIGluZm8sIC8vIGZkL21pY3Jvc2VjIGRlbGF5Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTVhVc2VyUmVjTG9jayAqbGNrKTsKLS1Cb29sIFBvbGxfQ2FsbGJhY2tSZW1vdmUoUG9sbENsYXNzU2V0IGNsYXNzU2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSk7Ci0tQm9vbCBQb2xsX0NhbGxiYWNrUmVtb3ZlT25lQnlDQihQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmNsaWVudERhdGEpOwotLQotLXZvaWQgUG9sbF9Ob3RpZnlDaGFuZ2UoUG9sbENsYXNzU2V0IGNsYXNzU2V0KTsKLS0KLS0vKgotLSAqIFdyYXBwZXJzIGZvciBQb2xsX0NhbGxiYWNrIGFuZCBQb2xsX0NhbGxiYWNrUmVtb3ZlIHRoYXQgcHJlc2VudAotLSAqIHNpbXBsZXIgc3Vic2V0cyBvZiB0aG9zZSBpbnRlcmZhY2VzLgotLSAqLwotLQotLVZNd2FyZVN0YXR1cyBQb2xsX0NCX0RldmljZShQb2xsZXJGdW5jdGlvbiBmLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRGV2SGFuZGxlIGRldmljZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7Ci0tCi0tQm9vbCBQb2xsX0NCX0RldmljZVJlbW92ZShQb2xsZXJGdW5jdGlvbiBmLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOwotLQotLQotLVZNd2FyZVN0YXR1cyBQb2xsX0NCX1JUaW1lKFBvbGxlckZ1bmN0aW9uIGYsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVsYXksCS8vIG1pY3Jvc2Vjb25kcwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTVhVc2VyUmVjTG9jayAqbG9jayk7Ci0tCi0tQm9vbCBQb2xsX0NCX1JUaW1lUmVtb3ZlKFBvbGxlckZ1bmN0aW9uIGYsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOwotLQotLQotLSNpZmRlZiBfV0lOMzIKLS12b2lkIFBvbGxfU2V0V2luZG93TWVzc2FnZVJlY2lwaWVudChIV05EIGhXbmQsIFVJTlQgbXNnLCBCb29sIGFsd2F5c1RodW5rKTsKLS1Cb29sIFBvbGxfRmlyZVduZENhbGxiYWNrKHZvaWQgKmxwYXJhbSk7Ci0tI2VuZGlmCi0tCi0tI2VuZGlmIC8vIF9QT0xMX0hfCi1JbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9wb2xsSW1wbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3BvbGxJbXBsLmgKLUBAIC00NCw3ICs0NCw3IEBACi0gI2RlZmluZSBJTkNMVURFX0FMTE9XX1VTRVJMRVZFTAotICNpbmNsdWRlICJpbmNsdWRlQ2hlY2suaCIKLSAKLS0jaW5jbHVkZSAicG9sbC5oIgotKyNpbmNsdWRlICJ2bV9wb2xsLmgiCi0gCi0gLyoKLSAgKiBQb2xsSW1wbDoKLUluZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3ZtX3BvbGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvdm1fcG9sbC5oCi1AQCAtMCwwICsxLDMyNCBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsgKiBDb3B5cmlnaHQgKEMpIDE5OTgtMjAxNiBWTXdhcmUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICogYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiB2ZXJzaW9uIDIuMSBhbmQgbm8gbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQotKyAqIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBMZXNzZXIgR05VIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSsgKiA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBLgotKyAqCi0rICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIENvbW1vbgotKyAqIERldmVsb3BtZW50IGFuZCBEaXN0cmlidXRpb24gTGljZW5zZSAodGhlICJMaWNlbnNlIikgdmVyc2lvbiAxLjAKLSsgKiBhbmQgbm8gbGF0ZXIgdmVyc2lvbi4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluCi0rICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotKyAqCi0rICogWW91IGNhbiBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0rICogICAgICAgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2NkZGwxLnBocAotKyAqCi0rICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zCi0rICogYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKyAqCi0rICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsKLSsjaWZuZGVmIF9QT0xMX0hfCi0rI2RlZmluZSBfUE9MTF9IXwotKwotKyNkZWZpbmUgSU5DTFVERV9BTExPV19VU0VSTEVWRUwKLSsjZGVmaW5lIElOQ0xVREVfQUxMT1dfVk1DT1JFCi0rI2luY2x1ZGUgImluY2x1ZGVDaGVjay5oIgotKwotKyNpbmNsdWRlICJ2bV9iYXNpY190eXBlcy5oIgotKyNpbmNsdWRlICJ2bV9iYXNpY19kZWZzLmgiCi0rI2luY2x1ZGUgInZtd2FyZS5oIgotKyNpbmNsdWRlICJ1c2VybG9jay5oIgotKwotKyNpZmRlZiBfV0lOMzIKLSsjZGVmaW5lIEhaIDEwMAotKyNlbGlmIGRlZmluZWQgbGludXgKLSsjaW5jbHVkZSA8YXNtL3BhcmFtLmg+Ci0rI2VsaWYgX19BUFBMRV9fCi0rI2luY2x1ZGUgPFRhcmdldENvbmRpdGlvbmFscy5oPgotKy8qCi0rICogT2xkIFNES3MgZG9uJ3QgZGVmaW5lIFRBUkdFVF9PU19JUEhPTkUgYXQgYWxsLgotKyAqIE5ldyBvbmVzIGRlZmluZSBpdCB0byAwIG9uIE1hYyBPUyBYLCAxIG9uIGlPUy4KLSsgKi8KLSsjaWYgIWRlZmluZWQoVEFSR0VUX09TX0lQSE9ORSkgfHwgVEFSR0VUX09TX0lQSE9ORSA9PSAwCi0rI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KLSsjZW5kaWYKLSsjaW5jbHVkZSA8c3lzL3BvbGwuaD4KLSsjZGVmaW5lIEhaIDEwMAotKyNlbmRpZgotKyNpZmRlZiBfX0FORFJPSURfXwotKy8qCi0rICogPHBvbGwuaD4gb2YgYW5kcm9pZCBzaG91bGQgYmUgaW5jbHVkZWQsIGJ1dCBpdHMgbmFtZSBpcyBzYW1lCi0rICogd2l0aCB0aGlzIGZpbGUuIFNvIGl0cyBjb250ZW50IGlzIHB1dCBoZXJlIHRvIGF2b2lkIGNvbmZsaWN0LgotKyAqLwotKyNpbmNsdWRlIDxhc20vcG9sbC5oPgotKyNkZWZpbmUgSFogMTAwCi0rdHlwZWRlZiB1bnNpZ25lZCBpbnQgIG5mZHNfdDsKLStpbnQgcG9sbChzdHJ1Y3QgcG9sbGZkICosIG5mZHNfdCwgbG9uZyk7Ci0rI2VuZGlmCi0rCi0rCi0rLyoKLSsgKiBQb2xsIGV2ZW50IHR5cGVzOiBlYWNoIHR5cGUgaGFzIGEgZGlmZmVyZW50IHJlYXNvbiBmb3IgZmlyaW5nLAotKyAqIG9yIGNvbmRpdGlvbiB0aGF0IG11c3QgYmUgbWV0IGJlZm9yZSBmaXJpbmcuCi0rICovCi0rCi0rdHlwZWRlZiBlbnVtIHsKLSsgICAvKgotKyAgICAqIEFjdHVhbCBQb2xsIHF1ZXVlIHR5cGVzIGFnYWluc3Qgd2hpY2ggeW91IGNhbiByZWdpc3RlciBjYWxsYmFja3MuCi0rICAgICovCi0rICAgUE9MTF9WSVJUVUFMUkVBTFRJTUUgPSAtMSwgLyogTmVnYXRpdmUgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUgaXRzIG93biBRICovCi0rICAgUE9MTF9WVElNRSA9IDAsCi0rICAgUE9MTF9SRUFMVElNRSwKLSsgICBQT0xMX0RFVklDRSwKLSsgICBQT0xMX01BSU5fTE9PUCwKLSsgICBQT0xMX05VTV9RVUVVRVMKLSt9IFBvbGxFdmVudFR5cGU7Ci0rCi0rCi0rLyoKLSsgKiBDbGFzc2VzIG9mIGV2ZW50cwotKyAqCi0rICogVGhlc2UgYXJlIHRoZSBwcmVkZWZpbmVkIGNsYXNzZXMuICBNb3JlIGNhbiBiZSBkZWNsYXJlZAotKyAqIHdpdGggUG9sbF9BbGxvY0NsYXNzKCkuCi0rICovCi0rCi0rdHlwZWRlZiBlbnVtIFBvbGxDbGFzcyB7Ci0rICAgUE9MTF9DTEFTU19NQUlOLAotKyAgIFBPTExfQ0xBU1NfUEFVU0UsCi0rICAgUE9MTF9DTEFTU19JUEMsCi0rICAgUE9MTF9DTEFTU19DUFQsCi0rICAgUE9MTF9DTEFTU19NS1MsCi0rICAgUE9MTF9GSVhFRF9DTEFTU0VTLAotKyAgIFBPTExfTUFYX0NMQVNTRVMgPSAzMjAgLyogU2l6ZSBlbnVtIHRvIG1heGltdW0gKi8KLSt9IFBvbGxDbGFzczsKLSsKLSsKLSsvKgotKyAqIEVhY2ggY2FsbGJhY2sgaXMgcmVnaXN0ZXJlZCBpbiBhIHNldCBvZiBjbGFzc2VzCi0rICovCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgUG9sbENsYXNzU2V0IHsKLSsgICAvKiBUeXBlIGlzIHVpbnRwdHJfdCB0byBnaXZlIGJlc3QgMzIvNjQtYml0IGNvZGUuICovCi0rI2RlZmluZSBfUE9MTF9FTEVNU0laRSAoc2l6ZW9mICh1aW50cHRyX3QpICogOCkKLSsgICB1aW50cHRyX3QgYml0c1tDRUlMSU5HKFBPTExfTUFYX0NMQVNTRVMsIF9QT0xMX0VMRU1TSVpFKV07Ci0rfSBQb2xsQ2xhc3NTZXQ7Ci0rCi0rLyogQW4gZW1wdHkgUG9sbENsYXNzU2V0LiAqLwotK3N0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0Ci0rUG9sbENsYXNzU2V0X0VtcHR5KHZvaWQpCi0rewotKyAgIFBvbGxDbGFzc1NldCBzZXQgPSB7IHsgMCB9IH07Ci0rICAgcmV0dXJuIHNldDsKLSt9Ci0rCi0rLyogQSBQb2xsQ2xhc3NTZXQgd2l0aCB0aGUgc2luZ2xlIG1lbWJlci4gKi8KLStzdGF0aWMgSU5MSU5FIFBvbGxDbGFzc1NldAotK1BvbGxDbGFzc1NldF9TaW5nbGV0b24oUG9sbENsYXNzIGMpCi0rewotKyAgIFBvbGxDbGFzc1NldCBzID0gUG9sbENsYXNzU2V0X0VtcHR5KCk7Ci0rCi0rICAgQVNTRVJUX09OX0NPTVBJTEUoc2l6ZW9mIHMuYml0c1swXSAqIDggPT0gX1BPTExfRUxFTVNJWkUpOyAvKiBTaXplIGNvcnJlY3QgKi8KLSsgICBBU1NFUlRfT05fQ09NUElMRSgoX1BPTExfRUxFTVNJWkUgJiAoX1BPTExfRUxFTVNJWkUgLSAxKSkgPT0gMCk7IC8qIHBvd2VyIG9mIDIgKi8KLSsgICBBU1NFUlRfT05fQ09NUElMRShQT0xMX01BWF9DTEFTU0VTIDw9IEFSUkFZU0laRShzLmJpdHMpICogX1BPTExfRUxFTVNJWkUpOwotKyAgIEFTU0VSVChjIDwgUE9MTF9NQVhfQ0xBU1NFUyk7Ci0rCi0rICAgcy5iaXRzW2MgLyBfUE9MTF9FTEVNU0laRV0gPSBDT05TVDMyNjRVKDEpIDw8IChjICUgX1BPTExfRUxFTVNJWkUpOwotKyAgIHJldHVybiBzOwotK30KLSsKLSsvKiBDb21iaW5lIHR3byBQb2xsQ2xhc3NTZXRzLiAqLwotK3N0YXRpYyBJTkxJTkUgUG9sbENsYXNzU2V0Ci0rUG9sbENsYXNzU2V0X1VuaW9uKFBvbGxDbGFzc1NldCBsaHMsIFBvbGxDbGFzc1NldCByaHMpCi0rewotKyAgIFBvbGxDbGFzc1NldCB1OwotKyAgIHVuc2lnbmVkIGk7Ci0rCi0rICAgZm9yIChpID0gMDsgaSA8IEFSUkFZU0laRSh1LmJpdHMpOyBpKyspIHsKLSsgICAgICB1LmJpdHNbaV0gPSBsaHMuYml0c1tpXSB8IHJocy5iaXRzW2ldOwotKyAgIH0KLSsgICByZXR1cm4gdTsKLSt9Ci0rCi0rLyogQWRkIHNpbmdsZSBjbGFzcyB0byBQb2xsQ2xhc3NTZXQuICovCi0rc3RhdGljIElOTElORSBQb2xsQ2xhc3NTZXQKLStQb2xsQ2xhc3NTZXRfSW5jbHVkZShQb2xsQ2xhc3NTZXQgc2V0LCBQb2xsQ2xhc3MgYykKLSt7Ci0rICAgcmV0dXJuIFBvbGxDbGFzc1NldF9VbmlvbihzZXQsIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oYykpOwotK30KLSsKLSsKLSsjZGVmaW5lIFBPTExfQ1NfTUFJTiAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfTUFJTikKLSsjZGVmaW5lIFBPTExfQ1NfUEFVU0UgICBQb2xsQ2xhc3NTZXRfVW5pb24oUE9MTF9DU19NQUlOLCAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsQ2xhc3NTZXRfU2luZ2xldG9uKFBPTExfQ0xBU1NfUEFVU0UpKQotKyNkZWZpbmUgUE9MTF9DU19DUFQgICAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX1BBVVNFLCAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19DUFQpKQotKyNkZWZpbmUgUE9MTF9DU19JUEMgICAgIFBvbGxDbGFzc1NldF9VbmlvbihQT0xMX0NTX0NQVCwgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19JUEMpKQotKyNkZWZpbmUgUE9MTF9DU19WTURCICAgIFBPTExfQ1NfUEFVU0UgLyogUE9MTF9DTEFTU19WTURCIGlzIHJldGlyZWQgKi8KLSsjZGVmaW5lIFBPTExfQ1NfTUtTCVBvbGxDbGFzc1NldF9TaW5nbGV0b24oUE9MTF9DTEFTU19NS1MpCi0rLyogCi0rICogREFOR0VSLiAgWW91IGRvbid0IG5lZWQgUE9MTF9DU19BTFdBWVMuICBSZWFsbHkuICBTbyBkb24ndCB1c2UgaXQuCi0rICovCi0rI2RlZmluZSBQT0xMX0NTX0FMV0FZUyAgUG9sbENsYXNzU2V0X1VuaW9uKFBPTExfQ1NfQ1BULCBQT0xMX0NTX0lQQykKLSsKLSsvKgotKyAqIFBvbGwgY2xhc3Mtc2V0IHRheG9ub215OgotKyAqIFBPTExfQ1NfTUFJTgotKyAqICAgIC0gVW5sZXNzIHlvdSBORUVEIGFub3RoZXIgY2xhc3MsIHVzZSBQT0xMX0NTX01BSU4uCi0rICogUE9MTF9DU19QQVVTRQotKyAqICAgIC0gRm9yIGNhbGxiYWNrcyB0aGF0IG11c3Qgb2NjdXIgZXZlbiBpZiB0aGUgZ3Vlc3QgaXMgcGF1c2VkLgotKyAqICAgICAgTW9zdCBWTURCIG9yIEZvdW5kcnkgY29tbWFuZHMgYXJlIGluIHRoaXMgY2F0ZWdvcnkuCi0rICogUE9MTF9DU19DUFQKLSsgKiAgICAtIE9ubHkgZm9yIGNhbGxiYWNrcyB3aGljaCBjYW4gdHJpZ2dlciBpbnRlcm1lZGlhdGUgQ2hlY2twb2ludCAKLSsgKiAgICAgIHRyYW5zaXRpb25zLgotKyAqICAgICAgVGhlIE9OTFkgc3VjaCBjYWxsYmFjayBpcyBNaWdyYXRlLgotKyAqIFBPTExfQ1NfSVBDCi0rICogICAgLSBPbmx5IGZvciBjYWxsYmFja3Mgd2hpY2ggY2FuIGNvbnRhaW4gTXNnXyhQb3N0fEhpbnR8UXVlc3Rpb24pIAotKyAqICAgICAgcmVzcG9uc2VzLCBhbmQgZm9yIHNpZ25hbCBoYW5kbGVycyAod2h5KT8KLSsgKiAgICAgIFZpZ29yLCBWTURCLCBhbmQgRm91bmRyeSBjYW4gY29udGFpbiBNc2dfKiByZXNwb25zZXMuCi0rICogUE9MTF9DU19NS1MKLSsgKiAgICAtIENhbGxiYWNrIHJ1bnMgaW4gTUtTIHRocmVhZC4KLSsgKiBQT0xMX0NTX0FMV0FZUwotKyAqICAgIC0gT25seSBmb3IgZXZlbnRzIHRoYXQgbXVzdCBiZSBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCi0rICogICAgICBUaGUgT05MWSBzdWNoIGNhbGxiYWNrIGlzIE92aGRNZW1WbXhTaXplQ2hlY2suCi0rICovCi0rCi0rCi0rLyoKLSsgKiBQb2xsX0NhbGxiYWNrIGZsYWdzCi0rICovCi0rCi0rI2RlZmluZSBQT0xMX0ZMQUdfUEVSSU9ESUMJCTB4MDEgICAgLy8ga2VlcCBhZnRlciBmaXJpbmcKLSsjZGVmaW5lIFBPTExfRkxBR19SRU1PVkVfQVRfUE9XRVJPRkYJMHgwMiAgCS8vIHNlbGYtZXhwbGFuYXRvcnkKLSsjZGVmaW5lIFBPTExfRkxBR19SRUFECQkJMHgwNAkvLyBkZXZpY2UgaXMgcmVhZHkgZm9yIHJlYWRpbmcKLSsjZGVmaW5lIFBPTExfRkxBR19XUklURQkJCTB4MDgJLy8gZGV2aWNlIGlzIHJlYWR5IGZvciB3cml0aW5nCi0rI2RlZmluZSBQT0xMX0ZMQUdfU09DS0VUICAgICAgICAgICAgICAgIDB4MTAgICAgLy8gZGV2aWNlIGlzIGEgV2luZG93cyBzb2NrZXQKLSsjZGVmaW5lIFBPTExfRkxBR19OT19CVUxMICAgICAgICAgICAgICAgMHgyMCAgICAvLyBjYWxsYmFjayBkb2VzIGl0cyBvd24gbG9ja2luZwotKyNkZWZpbmUgUE9MTF9GTEFHX1dJTlNPQ0sgICAgICAgICAgICAgICAweDQwICAgIC8vIFdpbnNvY2sgc3R5bGUgd3JpdGUgZXZlbnRzCi0rI2RlZmluZSBQT0xMX0ZMQUdfRkQgICAgICAgICAgICAgICAgICAgIDB4ODAgICAgLy8gZGV2aWNlIGlzIGEgV2luZG93cyBmaWxlIGRlc2NyaXB0b3IuCi0rI2RlZmluZSBQT0xMX0ZMQUdfQUNDRVBUX0lOVkFMSURfRkRTICAgIDB4MTAwICAgLy8gRm9yIGJyb2tlbiAzcmQgcGFydHkgbGlicywgZS5nLiBjdXJsCi0rI2RlZmluZSBQT0xMX0ZMQUdfVEhVTktfVE9fV05EICAgICAgICAgIDB4MjAwICAgLy8gdGh1bmsgY2FsbGJhY2sgdG8gd2luZG93IG1lc3NhZ2UgbG9vcAotKwotKwotKy8qCi0rICogQWR2aXNvcnkgbWluaW11bSB0aW1lIHBlcmlvZC4KLSsgKiBVc2VycyB0aGF0IHdhbnQgdGhlIGZhc3Rlc3QgcnVubmluZyByZWFsLXRpbWUgcG9sbAotKyAqIHNob3VsZCB1c2UgVElDS1NfVE9fVVNFQ1MoMSkuCi0rICovCi0rCi0rI2RlZmluZSBUSUNLU19UT19VU0VDUyhfeCkgKChfeCkgKiAoMTAwMDAwMCAvIEhaKSkKLSsjZGVmaW5lIFVTRUNTX1RPX1RJQ0tTKF94KSAoKF94KSAvICgxMDAwMDAwIC8gSFopKQotKwotKwotK3R5cGVkZWYgdm9pZCAoKlBvbGxlckZ1bmN0aW9uKSh2b2lkICpjbGllbnREYXRhKTsKLSt0eXBlZGVmIHZvaWQgKCpQb2xsZXJGaXJlV3JhcHBlcikoUG9sbGVyRnVuY3Rpb24gZnVuYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZnVuY0RhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKndyYXBwZXJEYXRhKTsKLSt0eXBlZGVmIEJvb2wgKCpQb2xsZXJFcnJvckZuKShjb25zdCBjaGFyICplcnJvclN0cik7Ci0rCi0rLyoKLSsgKiBJbml0aWFsaXNlcnM6Ci0rICoKLSsgKiAgICAgIEZvciB0aGUgc2FrZSBvZiBjb252ZW5pZW5jZSwgd2UgZGVjbGFyZSB0aGUgaW5pdGlhbGlzZXJzCi0rICogICAgICBmb3IgY3VzdG9tIGltcGxtZW50YXRpb25zIGhlcmUsIGV2ZW4gdGhvdWdoIHRoZSBhY3R1YWwKLSsgKiAgICAgIGltcGxlbWVudGF0aW9ucyBhcmUgZGlzdGluY3QgZnJvbSB0aGUgY29yZSBwb2xsIGNvZGUuCi0rICovCi0rCi0rdHlwZWRlZiBzdHJ1Y3QgUG9sbE9wdGlvbnMgewotKyAgIEJvb2wgbG9ja2VkOyAgICAgICAgICAgLy8gVXNlIGludGVybmFsIE1YVXNlciBmb3IgbG9ja2luZwotKyAgIEJvb2wgYWxsb3dGdWxsUXVldWU7ICAgLy8gRG9uJ3QgYXNzZXJ0IHdoZW4gZGV2aWNlIGV2ZW50IHF1ZXVlIGlzIGZ1bGwuCi0rICAgVlRocmVhZElEIHdpbmRvd3NNc2dUaHJlYWQ7ICAgICAgIC8vIHRocmVhZCB0aGF0IHByb2Nlc3NlcyBXaW5kb3dzIG1lc3NhZ2VzCi0rICAgUG9sbGVyRmlyZVdyYXBwZXIgZmlyZVdyYXBwZXJGbjsgIC8vIG9wdGlvbmFsOyBtYXkgYmUgdXNlZnVsIGZvciBzdGF0cwotKyAgIHZvaWQgKmZpcmVXcmFwcGVyRGF0YTsgLy8gb3B0aW9uYWwKLSsgICBQb2xsZXJFcnJvckZuIGVycm9yRm47IC8vIG9wdGlvbmFsOyBjYWxsZWQgdXBvbiB1bnJlY292ZXJhYmxlIGVycm9yCi0rfSBQb2xsT3B0aW9uczsKLSsKLSsKLSt2b2lkIFBvbGxfSW5pdERlZmF1bHQodm9pZCk7Ci0rdm9pZCBQb2xsX0luaXREZWZhdWx0RXgoY29uc3QgUG9sbE9wdGlvbnMgKm9wdHMpOwotK3ZvaWQgUG9sbF9Jbml0R3RrKHZvaWQpOyAvLyBPbiB0b3Agb2YgZ2xpYiBmb3IgTGludXgKLSt2b2lkIFBvbGxfSW5pdENGKHZvaWQpOyAgLy8gT24gdG9wIG9mIENvcmVGb3VuZGF0aW9uIGZvciBPU1gKLSsKLSsKLSsvKgotKyAqIEZ1bmN0aW9ucwotKyAqLwotK2ludCBQb2xsX1NvY2tldFBhaXIoQm9vbCB2bWNpLCBCb29sIHN0cmVhbSwgaW50IGZkc1syXSk7Ci0rdm9pZCBQb2xsX0xvb3AoQm9vbCBsb29wLCBCb29sICpleGl0LCBQb2xsQ2xhc3MgYyk7Ci0rdm9pZCBQb2xsX0xvb3BUaW1lb3V0KEJvb2wgbG9vcCwgQm9vbCAqZXhpdCwgUG9sbENsYXNzIGMsIGludCB0aW1lb3V0KTsKLStCb29sIFBvbGxfTG9ja2luZ0VuYWJsZWQodm9pZCk7Ci0rdm9pZCBQb2xsX0V4aXQodm9pZCk7Ci0rCi0rCi0rLyoKLSsgKiBQb2xsX0NhbGxiYWNrIGFkZHMgYSBjYWxsYmFjayByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYW4gaWRlbnRpY2FsIG9uZSBleGlzdHMuCi0rICoKLSsgKiBMaWtld2lzZSwgUG9sbF9DYWxsYmFja1JlbW92ZSByZW1vdmVzIGV4YWN0bHkgb25lIGNhbGxiYWNrLgotKyAqLwotKwotK1ZNd2FyZVN0YXR1cyBQb2xsX0NhbGxiYWNrKFBvbGxDbGFzc1NldCBjbGFzc1NldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbGVyRnVuY3Rpb24gZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRGV2SGFuZGxlIGluZm8sIC8vIGZkL21pY3Jvc2VjIGRlbGF5Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgTVhVc2VyUmVjTG9jayAqbGNrKTsKLStCb29sIFBvbGxfQ2FsbGJhY2tSZW1vdmUoUG9sbENsYXNzU2V0IGNsYXNzU2V0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxlckZ1bmN0aW9uIGYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIFBvbGxFdmVudFR5cGUgdHlwZSk7Ci0rQm9vbCBQb2xsX0NhbGxiYWNrUmVtb3ZlT25lQnlDQihQb2xsQ2xhc3NTZXQgY2xhc3NTZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsZXJGdW5jdGlvbiBmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9sbEV2ZW50VHlwZSB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmNsaWVudERhdGEpOwotKwotK3ZvaWQgUG9sbF9Ob3RpZnlDaGFuZ2UoUG9sbENsYXNzU2V0IGNsYXNzU2V0KTsKLSsKLSsvKgotKyAqIFdyYXBwZXJzIGZvciBQb2xsX0NhbGxiYWNrIGFuZCBQb2xsX0NhbGxiYWNrUmVtb3ZlIHRoYXQgcHJlc2VudAotKyAqIHNpbXBsZXIgc3Vic2V0cyBvZiB0aG9zZSBpbnRlcmZhY2VzLgotKyAqLwotKwotK1ZNd2FyZVN0YXR1cyBQb2xsX0NCX0RldmljZShQb2xsZXJGdW5jdGlvbiBmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnREYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2xsRGV2SGFuZGxlIGRldmljZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbCBwZXJpb2RpYyk7Ci0rCi0rQm9vbCBQb2xsX0NCX0RldmljZVJlbW92ZShQb2xsZXJGdW5jdGlvbiBmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOwotKwotKwotK1ZNd2FyZVN0YXR1cyBQb2xsX0NCX1JUaW1lKFBvbGxlckZ1bmN0aW9uIGYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50RGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVsYXksCS8vIG1pY3Jvc2Vjb25kcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgTVhVc2VyUmVjTG9jayAqbG9jayk7Ci0rCi0rQm9vbCBQb2xsX0NCX1JUaW1lUmVtb3ZlKFBvbGxlckZ1bmN0aW9uIGYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudERhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIEJvb2wgcGVyaW9kaWMpOwotKwotKwotKyNpZmRlZiBfV0lOMzIKLSt2b2lkIFBvbGxfU2V0V2luZG93TWVzc2FnZVJlY2lwaWVudChIV05EIGhXbmQsIFVJTlQgbXNnLCBCb29sIGFsd2F5c1RodW5rKTsKLStCb29sIFBvbGxfRmlyZVduZENhbGxiYWNrKHZvaWQgKmxwYXJhbSk7Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8vIF9QT0xMX0hfCi1JbmRleDogb3Blbi12bS10b29scy9saWIvcnBjSW4vcnBjaW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvcnBjSW4vcnBjaW4uYwotKysrIG9wZW4tdm0tdG9vbHMvbGliL3JwY0luL3JwY2luLmMKLUBAIC01Nyw3ICs1Nyw3IEBACi0gCi0gI2lmIGRlZmluZWQoVk1UT09MU19VU0VfVlNPQ0tFVCkKLSAjICBpbmNsdWRlIDxnbGliLmg+Ci0tIyAgaW5jbHVkZSAicG9sbC5oIgotKyMgIGluY2x1ZGUgInZtX3BvbGwuaCIKLSAjICBpbmNsdWRlICJhc3luY3NvY2tldC5oIgotICMgIGluY2x1ZGUgInZtY2lfZGVmcy5oIgotICNpbmNsdWRlICJkYXRhTWFwLmgiCi1JbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2dyYWJiaXRtcVByb3h5L2dyYWJiaXRtcVByb3h5UGx1Z2luLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy9ncmFiYml0bXFQcm94eS9ncmFiYml0bXFQcm94eVBsdWdpbi5jCi0rKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2dyYWJiaXRtcVByb3h5L2dyYWJiaXRtcVByb3h5UGx1Z2luLmMKLUBAIC00OCw3ICs0OCw3IEBACi0gI2luY2x1ZGUgInJwY291dC5oIgotICNpbmNsdWRlICJyYWJiaXRtcVByb3h5Q29uc3QuaCIKLSAjaW5jbHVkZSAidm1fYmFzaWNfdHlwZXMuaCIKLS0jaW5jbHVkZSAicG9sbC5oIgotKyNpbmNsdWRlICJ2bV9wb2xsLmgiCi0gI2lmZGVmIE9QRU5fVk1fVE9PTFMKLSAjaW5jbHVkZSAidm1jaV9zb2NrZXRzLmgiCi0gI2luY2x1ZGUgInNzbERpcmVjdC5oIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDMtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLW9uLWdudS1saWJjLXN5c3RlbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAzLXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1vbi1nbnUtbGliYy1zeXN0ZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdkMzRjNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDAzLXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1vbi1nbnUtbGliYy1zeXN0ZW0ucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBhMmU3ZDkyNzMyNjFjNWM1Y2JjMzM3OTY5MDBmNDE1MDk3ZjU0NTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTMgSnVuIDIwMTggMjM6MTY6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNlIHBvc2l4IHN0cmVycm9yX3IgdW5sZXNzIG9uIGdudSBsaWJjIHN5c3RlbQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvZXJyL2VyclBvc2l4LmMgfCA5ICsrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZXJyL2VyclBvc2l4LmMgYi9saWIvZXJyL2VyclBvc2l4LmMKK2luZGV4IGM4MWI0YzEzLi43YTQwMzY0MCAxMDA2NDQKKy0tLSBhL2xpYi9lcnIvZXJyUG9zaXguYworKysrIGIvbGliL2Vyci9lcnJQb3NpeC5jCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisgI2luY2x1ZGUgInZtd2FyZS5oIgorICNpbmNsdWRlICJlcnJJbnQuaCIKK0BAIC02MywxMSArNjQsMTMgQEAgRXJyRXJybm8yU3RyaW5nKEVycl9OdW1iZXIgZXJyb3JOdW1iZXIsIC8vIElOCisgeworICAgIGNoYXIgKnA7CisgCistI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgIHAgPSBzdHJlcnJvcl9yKGVycm9yTnVtYmVyLCBidWYsIGJ1ZlNpemUpOworICNlbHNlCistICAgcCA9IHN0cmVycm9yKGVycm9yTnVtYmVyKTsKKy0jZW5kaWYKKysgICBpZiAoc3RyZXJyb3JfcihlcnJvck51bWJlciwgYnVmLCBidWZTaXplKSAhPSAwKQorKyAgICAgIHNucHJpbnRmKGJ1ZiwgYnVmU2l6ZSwgInVua25vd24gZXJyb3IgJWkiLCBlcnJvck51bWJlcik7CisrICAgcCA9IGJ1ZjsKKysjZW5kaWYgLyogZGVmaW5lZCBfX0dMSUJDX18gKi8KKyAgICBBU1NFUlQocCAhPSBOVUxMKTsKKyAgICByZXR1cm4gcDsKKyB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNC1BZGQtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWFuZC1Xbm8tZXJyb3ItYWRkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDQtQWRkLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1hbmQtV25vLWVycm9yLWFkZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEwNTE2Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNC1BZGQtV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWFuZC1Xbm8tZXJyb3ItYWRkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBjZGIwYjNjODk4YzZiNmI2YzgyNTlkOWRkYjhiMDAxNjNhYzVlNDE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTYgSnVsIDIwMTcgMDk6NDM6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8xMV0gQWRkIC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMgYW5kCi0gLVduby1lcnJvcj1hZGRyZXNzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBvcGVuLXZtLXRvb2xzL2xpYi9keW54ZHIvTWFrZWZpbGUuYW0gfCAyICstCi0gb3Blbi12bS10b29scy9saWIvZmlsZS9NYWtlZmlsZS5hbSAgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZHlueGRyL01ha2VmaWxlLmFtCi0rKysgb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtCi1AQCAtMjAsNCArMjAsNCBAQCBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJEeW54ZHIubGEKLSBsaWJEeW54ZHJfbGFfU09VUkNFUyA9IAotIGxpYkR5bnhkcl9sYV9TT1VSQ0VTICs9IGR5bnhkci5jCi0gbGliRHlueGRyX2xhX1NPVVJDRVMgKz0geGRydXRpbC5jCi0tCi0rbGliRHlueGRyX2xhX0NQUEZMQUdTID0gLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcwotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2ZpbGUvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL2ZpbGUvTWFrZWZpbGUuYW0KLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9maWxlL01ha2VmaWxlLmFtCi1AQCAtMjcsMyArMjcsNCBAQCBsaWJGaWxlX2xhX1NPVVJDRVMgKz0gZmlsZUxvY2tQcmltaXRpdmUuCi0gbGliRmlsZV9sYV9TT1VSQ0VTICs9IGZpbGVMb2NrUG9zaXguYwotIGxpYkZpbGVfbGFfU09VUkNFUyArPSBmaWxlVGVtcFBvc2l4LmMKLSBsaWJGaWxlX2xhX1NPVVJDRVMgKz0gZmlsZVRlbXAuYwotK2xpYkZpbGVfbGFfQ1BQRkxBR1MgPSAtV25vLWVycm9yPWFkZHJlc3MKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA0LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA0LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODAyZGNhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDQtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gZTY5NGExMjJjMWZmMzJkOGI5NTFhZTU1NzU2Nzk2Zjk1NzZkMjNlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEzIEp1biAyMDE4IDIzOjM3OjA5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSB1aW50bWF4X3QgZm9yIGhhbmRsaW5nIHJsaW1fdAorCitybGltaXQgdHlwZXMgYXJlIG5vdCByZXByZXNlbnRhYmxlIHdpdGggbG9uZyBvciBsb25nIGxvbmcKK2Zvcm1hdHMsIHRoZXJlZm9yZSB1c2UgdWludG1heF90IHRvIHR5cGVjYXN0IHJsaW1fdCB0eXBlcworYW5kIHVzZSAlaiB0byBwcmludCBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3Blbi12bS10b29scy9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyTGludXguYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyTGludXguYyBiL2xpYi9oZ2ZzU2VydmVyL2hnZnNTZXJ2ZXJMaW51eC5jCitpbmRleCAyZTczNzA3ZC4uYTJmZGI4NTAgMTAwNjQ0CistLS0gYS9saWIvaGdmc1NlcnZlci9oZ2ZzU2VydmVyTGludXguYworKysrIGIvbGliL2hnZnNTZXJ2ZXIvaGdmc1NlcnZlckxpbnV4LmMKK0BAIC01Mjk0LDggKzUyOTQsOCBAQCBIZ2ZzV3JpdGVDaGVja0lPUmFuZ2Uob2ZmX3Qgb2Zmc2V0LCAgICAgICAgIC8vIElOOgorICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgCistICAgTE9HKDYsICgiJXM6IEZpbGUgU2l6ZSBsaW1pdHM6IDB4JSJGTVQ2NCJ4IDB4JSJGTVQ2NCJ4XG4iLAorLSAgICAgICAgICAgX19GVU5DVElPTl9fLCBmaWxlU2l6ZS5ybGltX2N1ciwgZmlsZVNpemUucmxpbV9tYXgpKTsKKysgICBMT0coNiwgKCIlczogRmlsZSBTaXplIGxpbWl0czogMHglanggMHglanhcbiIsCisrICAgICAgICAgICBfX0ZVTkNUSU9OX18sICh1aW50bWF4X3QpZmlsZVNpemUucmxpbV9jdXIsICh1aW50bWF4X3QpZmlsZVNpemUucmxpbV9tYXgpKTsKKyAKKyAgICAvKgorICAgICAqIENoZWNrIHRoZSBvZmZzZXQgaXMgd2l0aGluIHRoZSBmaWxlIHNpemUgcmFuZ2UuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNy1Vc2UtY29uZmlndXJlLXRvLXRlc3QtZm9yLWZlYXR1cmUtaW5zdGVhZC1vZi1wbGF0Zm9yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaAppbmRleCA1YWRmOWIwLi5hZDE5ZmIyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwNy1Vc2UtY29uZmlndXJlLXRvLXRlc3QtZm9yLWZlYXR1cmUtaW5zdGVhZC1vZi1wbGF0Zm9yLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA3LVVzZS1jb25maWd1cmUtdG8tdGVzdC1mb3ItZmVhdHVyZS1pbnN0ZWFkLW9mLXBsYXRmb3IucGF0Y2gKQEAgLTI5LDcgKzI5LDcgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvY29uZmlndXJlLmFjCiArKysgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKLUBAIC03OTgsNiArNzk4LDcgQEAgQUNfQ0hFQ0tfRlVOQ1MoCitAQCAtODkyLDYgKzg5Miw3IEBAIEFDX0NIRUNLX0ZVTkNTKAogIAogIEFDX0NIRUNLX0ZVTkNTKFtlY3Z0XSkKICBBQ19DSEVDS19GVU5DUyhbZmN2dF0pCkBAIC0zNyw3ICszNyw3IEBACiAgCiAgQUNfQ0hFQ0tfRlVOQyhbbWtkdGVtcF0sIFtoYXZlX21rZHRlbXA9eWVzXSkKICAKLUBAIC0xMDYzLDEwICsxMDY0LDEzIEBAIEFDX1BBVEhfUFJPRygKK0BAIC0xMDc2LDEwICsxMDc3LDEzIEBAIEFDX1BBVEhfUFJPRygKICAjIyMKICAKICBBQ19DSEVDS19IRUFERVJTKFtjcnlwdC5oXSkKQEAgLTEzMywxMiArMTMzLDMgQEAKICAjIGluY2x1ZGUgPG5ldC9pZi5oPgogICNlbmRpZgogICNpZm5kZWYgTk9fRE5FVAotQEAgLTM0OCw3ICszNTIsNyBAQCBHdWVzdEluZm9HZXROaWNJbmZvKE5pY0luZm9WMyAqbmljSW5mbykKLSAgKgotICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKi8KLS0jaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoVVNFUldPUkxEKQotKyNpZiBkZWZpbmVkKE5PX0RORVQpICYmIGRlZmluZWQoSEFWRV9HRVRJRkFERFJTKQotIAotIGNoYXIgKgotIEd1ZXN0SW5mb0dldFByaW1hcnlJUCh2b2lkKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDgtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLWdudS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDA4LXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1nbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkMTI5MWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDgtdXNlLXBvc2l4LXN0cmVycm9yX3ItdW5sZXNzLWdudS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZDRkMWU3MTQ2Y2EyNjk4MDg5ZjZiZDUzMmYyZmI4YjljMTEzNGNhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KLURhdGU6IE1vbiwgMiBKYW4gMjAxNyAxNDozOToyNyArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzExXSB1c2UgcG9zaXggc3RyZXJyb3JfciB1bmxlc3MgZ251Ci0KLS0tLQotIG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZXJyL2VyclBvc2l4LmMKLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9lcnIvZXJyUG9zaXguYwotQEAgLTYzLDExICs2MywxMyBAQCBFcnJFcnJubzJTdHJpbmcoRXJyX051bWJlciBlcnJvck51bWJlciwKLSB7Ci0gICAgY2hhciAqcDsKLSAKLS0jaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoTl9QTEFUX05MTSkgJiYgIWRlZmluZWQoX19BTkRST0lEX18pCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgIHAgPSBzdHJlcnJvcl9yKGVycm9yTnVtYmVyLCBidWYsIGJ1ZlNpemUpOwotICNlbHNlCi0tICAgcCA9IHN0cmVycm9yKGVycm9yTnVtYmVyKTsKLS0jZW5kaWYKLSsgICBpZiAoc3RyZXJyb3JfcihlcnJvck51bWJlciwgYnVmLCBidWZTaXplKSAhPSAwKQotKyAgICAgIHNucHJpbnRmKGJ1ZiwgYnVmU2l6ZSwgInVua25vd24gZXJyb3IgJWkiLCBlcnJvck51bWJlcik7Ci0rICAgcCA9IGJ1ZjsKLSsjZW5kaWYgLyogZGVmaW5lZCBfX0dMSUJDX18gKi8KLSAgICBBU1NFUlQocCAhPSBOVUxMKTsKLSAgICByZXR1cm4gcDsKLSB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOS1BZGQtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1zeXN0ZW0tbGlidGlycGMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAwOS1BZGQtc3VwcG9ydC1mb3ItYnVpbGRpbmctd2l0aC1zeXN0ZW0tbGlidGlycGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZWU1YWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzLzAwMDktQWRkLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLXdpdGgtc3lzdGVtLWxpYnRpcnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQyICswLDAgQEAKLUZyb20gNWFlNmM2NjJmZWZhNjIxZjQ2MDA1NTllMjk5YTdkOTdjMjI1NGU2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5hdGFuYWVsIENvcGEgPG5jb3BhQGFscGluZWxpbnV4Lm9yZz4KLURhdGU6IFN1biwgMTYgSnVsIDIwMTcgMTA6MjA6MTAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIHN5c3RlbSBsaWJ0aXJwYwotCi1TaWduZWQtb2ZmLWJ5OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBvcGVuLXZtLXRvb2xzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysrCi0gb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKystLQotIG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIG9wZW4tdm0tdG9vbHMvbGliL2d1ZXN0UnBjL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gb3Blbi12bS10b29scy9saWIvbWlzYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gb3Blbi12bS10b29scy9saWIvbmV0VXRpbC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCi0gb3Blbi12bS10b29scy9saWIvbmljSW5mby9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgfCAgMiArKwotIG9wZW4tdm0tdG9vbHMvbGliL3JwY0NoYW5uZWwvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIG9wZW4tdm0tdG9vbHMvbGliL3NsYXNoUHJvYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIG9wZW4tdm0tdG9vbHMvbGliL3N0cmluZy9ic2Rfb3V0cHV0X3NoYXJlZC5jICAgICAgICAgICAgIHwgIDIgKy0KLSBvcGVuLXZtLXRvb2xzL2xpYmd1ZXN0bGliL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICB8ICAyICsrCi0gb3Blbi12bS10b29scy9ycGN0b29sL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKLSBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvcnBjdG9vbC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCi0gb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL01ha2VmaWxlLmFtICAgICAgICAgfCAgMiArKwotIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9ndWVzdEluZm8vTWFrZWZpbGUuYW0gICAgIHwgIDEgKwotIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9yZXNvbHV0aW9uU2V0L01ha2VmaWxlLmFtIHwgIDIgKysKLSBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L01ha2VmaWxlLmFtICAgICAgICAgICB8ICAyICsrCi0gb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZtYmFja3VwL01ha2VmaWxlLmFtICAgICAgfCAgMiArKwotIG9wZW4tdm0tdG9vbHMvdG9vbGJveC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKysKLSAxOSBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvY29uZmlndXJlLmFjCi0rKysgb3Blbi12bS10b29scy9jb25maWd1cmUuYWMKLUBAIC00MDUsNiArNDA1LDIwIEBAIEFDX1ZNV19DSEVDS19MSUIoW2Z1c2VdLAotICAgICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFtGdXNlIGlzIG1pc3NpbmcsIHZtYmxvY2stZnVzZS92bWhnZnMtZnVzZSB3aWxsIGJlIGRpc2FibGVkLl0pXSkKLSAKLSAjCi0rIyBDaGVjayBmb3IgbGlidGlycGMKLSsjCi0rQUNfVk1XX0NIRUNLX0xJQihbbGlidGlycGNdLAotKyAgICAgICAgICAgICAgICAgW0xJQlRJUlBDXSwKLSsgICAgICAgICAgICAgICAgIFtsaWJ0aXJwY10sCi0rICAgICAgICAgICAgICAgICBbXSwKLSsgICAgICAgICAgICAgICAgIFtdLAotKyAgICAgICAgICAgICAgICAgW3JwYy94ZHIuaF0sCi0rICAgICAgICAgICAgICAgICBbeGRyX3ZvaWRdLAotKyAgICAgICAgICAgICAgICAgW2hhdmVfbGlidGlycGM9eWVzXSwKLSsgICAgICAgICAgICAgICAgIFtoYXZlX2xpYnRpdGlycGM9bm87Ci0rICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW2xpYnRpcnBjIGlzIG1pc3NpbmcuXSldKQotKwotKyMKLSAjIENoZWNrIGZvciBQQU0uCi0gIwotIEFDX0FSR19XSVRIKFtwYW1dLAotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2R5bnhkci9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZHlueGRyL01ha2VmaWxlLmFtCi0rKysgb3Blbi12bS10b29scy9saWIvZHlueGRyL01ha2VmaWxlLmFtCi1AQCAtMTcsNyArMTcsMTEgQEAKLSAKLSBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJEeW54ZHIubGEKLSAKLS1saWJEeW54ZHJfbGFfU09VUkNFUyA9IAotK2xpYkR5bnhkcl9sYV9TT1VSQ0VTID0KLSBsaWJEeW54ZHJfbGFfU09VUkNFUyArPSBkeW54ZHIuYwotIGxpYkR5bnhkcl9sYV9TT1VSQ0VTICs9IHhkcnV0aWwuYwotLWxpYkR5bnhkcl9sYV9DUFBGTEFHUyA9IC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKLStsaWJEeW54ZHJfbGFfQ1BQRkxBR1MgPSBATElCVElSUENfQ1BQRkxBR1NAIC1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMKLSsKLStsaWJEeW54ZHJfbGFfTElCQUREID0KLStsaWJEeW54ZHJfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAotKwotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9lcnIvZXJyUG9zaXguYwotKysrIG9wZW4tdm0tdG9vbHMvbGliL2Vyci9lcnJQb3NpeC5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi0gI2luY2x1ZGUgInZtd2FyZS5oIgotICNpbmNsdWRlICJlcnJJbnQuaCIKLUluZGV4OiBvcGVuLXZtLXRvb2xzL2xpYi9ndWVzdFJwYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvZ3Vlc3RScGMvTWFrZWZpbGUuYW0KLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9ndWVzdFJwYy9NYWtlZmlsZS5hbQotQEAgLTIwLDYgKzIwLDEyIEBAIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYkd1ZXN0UnBjLmxhCi0gbGliR3Vlc3RScGNfbGFfU09VUkNFUyA9Ci0gbGliR3Vlc3RScGNfbGFfU09VUkNFUyArPSBuaWNpbmZvX3hkci5jCi0gCi0rbGliR3Vlc3RScGNfbGFfQ1BQRkxBR1MgPQotK2xpYkd1ZXN0UnBjX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKLSsKLStsaWJHdWVzdFJwY19sYV9MSUJBREQgPQotK2xpYkd1ZXN0UnBjX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKLSsKLSAjIFhYWDogQXV0b3JlY29uZiBjb21wbGFpbnMgYWJvdXQgdGhpcyBhbmQgcmVjb21tZW5kcyB1c2luZyBBTV9DRkxBR1MgaW5zdGVhZC4KLSAjIFByb2JsZW0gaXMsICQoQ0ZMQUdTKSBpcyBhcHBlbmRlZCB0byB0aGUgY29tcGlsZXIgY29tbWFuZCBsaW5lIGFmdGVyIEFNX0NGTEFHUwotICMgYW5kIGFmdGVyIGxpYkd1ZXN0UnBjX2xhX0NGTEFHUywgc28gIi1XYWxsIC1XZXJyb3IiIHdpbGwgb3ZlcnJpZGUgdGhpcyBmbGFnLgotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL21pc2MvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvbGliL21pc2MvTWFrZWZpbGUuYW0KLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9taXNjL01ha2VmaWxlLmFtCi1AQCAtNTIsNCArNTIsNSBAQCBsaWJNaXNjX2xhX1NPVVJDRVMgKz0gdXRpbE1lbS5jCi0gbGliTWlzY19sYV9TT1VSQ0VTICs9IHZtc3RkaW8uYwotIGxpYk1pc2NfbGFfU09VUkNFUyArPSBzdHJ1dGlsLmMKLSBsaWJNaXNjX2xhX1NPVVJDRVMgKz0gdnRocmVhZEJhc2UuYwotK2xpYk1pc2NfbGFfQ1BQRkxBR1MgPSAtV25vLWVycm9yPWludC1jb252ZXJzaW9uCi0gCi1JbmRleDogb3Blbi12bS10b29scy9saWIvbmV0VXRpbC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvbmV0VXRpbC9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvbGliL25ldFV0aWwvTWFrZWZpbGUuYW0KLUBAIC0yMCwzICsyMCw3IEBAIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYk5ldFV0aWwubGEKLSBsaWJOZXRVdGlsX2xhX1NPVVJDRVMgPQotIGxpYk5ldFV0aWxfbGFfU09VUkNFUyArPSBuZXRVdGlsTGludXguYwotIAotK2xpYk5ldFV0aWxfbGFfQ1BQRkxBR1MgPQotK2xpYk5ldFV0aWxfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotKwotK2xpYk5ldFV0aWxfbGFfTElCQUREID0gQExJQlRJUlBDX0xJQlNACi1JbmRleDogb3Blbi12bS10b29scy9saWIvbmljSW5mby9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvbmljSW5mby9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvbGliL25pY0luZm8vTWFrZWZpbGUuYW0KLUBAIC0yNSwxMiArMjUsMTQgQEAgbGliTmljSW5mb19sYV9TT1VSQ0VTICs9IG5pY0luZm9Qb3NpeC5jCi0gCi0gbGliTmljSW5mb19sYV9DUFBGTEFHUyA9Ci0gbGliTmljSW5mb19sYV9DUFBGTEFHUyArPSBAR0xJQjJfQ1BQRkxBR1NACi0rbGliTmljSW5mb19sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACi0gCi0gQU1fQ0ZMQUdTID0gJChETkVUX0NQUEZMQUdTKQotIGlmIFVTRV9TTEFTSF9QUk9DCi0gQU1fQ0ZMQUdTICs9IC1EVVNFX1NMQVNIX1BST0MKLSBlbmRpZgotIGxpYk5pY0luZm9fbGFfTElCQUREID0KLStsaWJOaWNJbmZvX2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKLSBpZiBIQVZFX0RORVQKLSAgICBsaWJOaWNJbmZvX2xhX0xJQkFERCArPSBARE5FVF9MSUJTQAotIGVuZGlmCi1JbmRleDogb3Blbi12bS10b29scy9saWIvcnBjQ2hhbm5lbC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvcnBjQ2hhbm5lbC9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvbGliL3JwY0NoYW5uZWwvTWFrZWZpbGUuYW0KLUBAIC0yNywzICsyNyw3IEBAIGVuZGlmCi0gCi0gbGliUnBjQ2hhbm5lbF9sYV9DUFBGTEFHUyA9Ci0gbGliUnBjQ2hhbm5lbF9sYV9DUFBGTEFHUyArPSBAVk1UT09MU19DUFBGTEFHU0AKLStsaWJScGNDaGFubmVsX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKLSsKLStsaWJScGNDaGFubmVsX2xhX0xJQkFERCA9Ci0rbGliUnBjQ2hhbm5lbF9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACi1JbmRleDogb3Blbi12bS10b29scy9saWIvc2xhc2hQcm9jL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9zbGFzaFByb2MvTWFrZWZpbGUuYW0KLSsrKyBvcGVuLXZtLXRvb2xzL2xpYi9zbGFzaFByb2MvTWFrZWZpbGUuYW0KLUBAIC0yMiw2ICsyMiwxMCBAQCBsaWJTbGFzaFByb2NfbGFfU09VUkNFUyArPSBuZXQuYwotIAotIGxpYlNsYXNoUHJvY19sYV9DUFBGTEFHUyA9Ci0gbGliU2xhc2hQcm9jX2xhX0NQUEZMQUdTICs9IEBHTElCMl9DUFBGTEFHU0AKLStsaWJTbGFzaFByb2NfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotKwotK2xpYlNsYXNoUHJvY19sYV9MSUJBREQgPQotK2xpYlNsYXNoUHJvY19sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACi0gCi0gQU1fQ0ZMQUdTID0gJChETkVUX0NQUEZMQUdTKQotIAotSW5kZXg6IG9wZW4tdm0tdG9vbHMvbGliL3N0cmluZy9ic2Rfb3V0cHV0X3NoYXJlZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL2xpYi9zdHJpbmcvYnNkX291dHB1dF9zaGFyZWQuYwotKysrIG9wZW4tdm0tdG9vbHMvbGliL3N0cmluZy9ic2Rfb3V0cHV0X3NoYXJlZC5jCi1AQCAtMzgsNyArMzgsNyBAQAotIC8vI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotICNpZiAhZGVmaW5lZChTVFJfTk9fV0lOMzJfTElCUykgJiYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKSAmJiAhZGVmaW5lZChfX05ldEJTRF9fKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKLS0KLSsjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpZm5kZWYgX1dJTjMyCi1JbmRleDogb3Blbi12bS10b29scy9saWJndWVzdGxpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWJndWVzdGxpYi9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvbGliZ3Vlc3RsaWIvTWFrZWZpbGUuYW0KLUBAIC0yMiw2ICsyMiw3IEBAIEFNX0NGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZQotIAotIGxpYmd1ZXN0bGliX2xhX0xJQkFERCA9Ci0gbGliZ3Vlc3RsaWJfbGFfTElCQUREICs9IEBWTVRPT0xTX0xJQlNACi0rbGliZ3Vlc3RsaWJfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAotIAotIGxpYmd1ZXN0bGliX2xhX1NPVVJDRVMgPQotIGxpYmd1ZXN0bGliX2xhX1NPVVJDRVMgKz0gZ3Vlc3RsaWJWM194ZHIuYwotQEAgLTU2LDYgKzU3LDcgQEAgQ0ZMQUdTICs9IC1Xbm8tdW51c2VkCi0gbGliZ3Vlc3RsaWJfbGFfQ1BQRkxBR1MgPQotIGxpYmd1ZXN0bGliX2xhX0NQUEZMQUdTICs9IC1EVk1UT09MU19VU0VfR0xJQgotIGxpYmd1ZXN0bGliX2xhX0NQUEZMQUdTICs9IEBHTElCMl9DUFBGTEFHU0AKLStsaWJndWVzdGxpYl9sYV9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACi0gCi0gRVhUUkFfRElTVCA9IHZtZ3Vlc3RsaWIucGMuaW4KLSAKLUluZGV4OiBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvcnBjdG9vbC9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvcnBjdG9vbC9NYWtlZmlsZS5hbQotQEAgLTE3LDEwICsxNywxMyBAQAotIAotIGJpbl9QUk9HUkFNUyA9IHZtd2FyZS1ycGN0b29sCi0gCi0rdm13YXJlX3JwY3Rvb2xfQ0ZMQUdTPSBATElCVElSUENfTElCU0AKLSsKLSB2bXdhcmVfcnBjdG9vbF9TT1VSQ0VTID0KLSB2bXdhcmVfcnBjdG9vbF9TT1VSQ0VTICs9IHJwY3Rvb2wuYwotIAotIHZtd2FyZV9ycGN0b29sX0xEQUREID0KLSt2bXdhcmVfcnBjdG9vbF9MREFERCArPSBATElCVElSUENfTElCU0AKLSB2bXdhcmVfcnBjdG9vbF9MREFERCArPSAuLi9saWIvcnBjT3V0L2xpYlJwY091dC5sYQotIHZtd2FyZV9ycGN0b29sX0xEQUREICs9IC4uL2xpYi9tZXNzYWdlL2xpYk1lc3NhZ2UubGEKLSB2bXdhcmVfcnBjdG9vbF9MREFERCArPSAuLi9saWIvYmFja2Rvb3IvbGliQmFja2Rvb3IubGEKLUluZGV4OiBvcGVuLXZtLXRvb2xzL3JwY3Rvb2wvcnBjdG9vbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL3JwY3Rvb2wvcnBjdG9vbC5jCi0rKysgb3Blbi12bS10b29scy9ycGN0b29sL3JwY3Rvb2wuYwotQEAgLTIzLDYgKzIzLDggQEAKLSAgKi8KLSAKLSAjaWZuZGVmIF9XSU4zMgotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgInNpZ1Bvc2l4UmVncy5oIgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLUluZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZG5kY3AvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9NYWtlZmlsZS5hbQotQEAgLTIzLDYgKzIzLDcgQEAgcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZG5kY3AubGEKLSBsaWJkbmRjcF9sYV9DUFBGTEFHUyA9Ci0gbGliZG5kY3BfbGFfQ1BQRkxBR1MgKz0gQEdUS19DUFBGTEFHU0AKLSBsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSBAUExVR0lOX0NQUEZMQUdTQAotK2xpYmRuZGNwX2xhX0NQUEZMQUdTICs9IEBMSUJUSVJQQ19DUFBGTEFHU0AKLSBsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2Rpcikvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9kbmQKLSBsaWJkbmRjcF9sYV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2Rpcikvc2VydmljZXMvcGx1Z2lucy9kbmRjcC9kbmRHdWVzdAotIGxpYmRuZGNwX2xhX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9zZXJ2aWNlcy9wbHVnaW5zL2RuZGNwL3N0cmluZ3h4Ci1AQCAtNDQsNiArNDUsNyBAQCBsaWJkbmRjcF9sYV9MSUJBREQgKz0gQEdUS19MSUJTQAotIGxpYmRuZGNwX2xhX0xJQkFERCArPSBAR1RLTU1fTElCU0AKLSBsaWJkbmRjcF9sYV9MSUJBREQgKz0gQFZNVE9PTFNfTElCU0AKLSBsaWJkbmRjcF9sYV9MSUJBREQgKz0gQEhHRlNfTElCU0AKLStsaWJkbmRjcF9sYV9MSUJBREQgKz0gQExJQlRJUlBDX0xJQlNACi0gbGliZG5kY3BfbGFfTElCQUREICs9ICQodG9wX2J1aWxkZGlyKS9saWIvaGdmc1VyaS9oZ2ZzVXJpUG9zaXgubG8KLSAKLSBsaWJkbmRjcF9sYV9TT1VSQ0VTID0KLUluZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvZ3Vlc3RJbmZvL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvZ3Vlc3RJbmZvL01ha2VmaWxlLmFtCi0rKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL2d1ZXN0SW5mby9NYWtlZmlsZS5hbQotQEAgLTIyLDYgKzIyLDcgQEAgcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3Vlc3RJbmZvLmxhCi0gCi0gbGliZ3Vlc3RJbmZvX2xhX0NQUEZMQUdTID0KLSBsaWJndWVzdEluZm9fbGFfQ1BQRkxBR1MgKz0gQFBMVUdJTl9DUFBGTEFHU0AKLStsaWJndWVzdEluZm9fbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotIAotIGxpYmd1ZXN0SW5mb19sYV9MREZMQUdTID0KLSBsaWJndWVzdEluZm9fbGFfTERGTEFHUyArPSBAUExVR0lOX0xERkxBR1NACi1JbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3Jlc29sdXRpb25TZXQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvc2VydmljZXMvcGx1Z2lucy9yZXNvbHV0aW9uU2V0L01ha2VmaWxlLmFtCi0rKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3Jlc29sdXRpb25TZXQvTWFrZWZpbGUuYW0KLUBAIC0yMSw2ICsyMSw3IEBAIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYnJlc29sdXRpb25TZXQubGEKLSBsaWJyZXNvbHV0aW9uU2V0X2xhX0NQUEZMQUdTID0KLSBsaWJyZXNvbHV0aW9uU2V0X2xhX0NQUEZMQUdTICs9IEBHVEtfQ1BQRkxBR1NACi0gbGlicmVzb2x1dGlvblNldF9sYV9DUFBGTEFHUyArPSBAUExVR0lOX0NQUEZMQUdTQAotK2xpYnJlc29sdXRpb25TZXRfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotIGxpYnJlc29sdXRpb25TZXRfbGFfQ1BQRkxBR1MgKz0gLURSRVNPTFVUSU9OX1gxMQotIAotIGxpYnJlc29sdXRpb25TZXRfbGFfTERGTEFHUyA9Ci1AQCAtMzAsNiArMzEsNyBAQCBsaWJyZXNvbHV0aW9uU2V0X2xhX0xJQkFERCA9Ci0gbGlicmVzb2x1dGlvblNldF9sYV9MSUJBREQgKz0gQENPTU1PTl9YTElCU0AKLSBsaWJyZXNvbHV0aW9uU2V0X2xhX0xJQkFERCArPSBAR1RLX0xJQlNACi0gbGlicmVzb2x1dGlvblNldF9sYV9MSUJBREQgKz0gQFZNVE9PTFNfTElCU0AKLStsaWJyZXNvbHV0aW9uU2V0X2xhX0xJQkFERCArPSBATElCVElSUENfTElCU0AKLSAKLSBsaWJyZXNvbHV0aW9uU2V0X2xhX1NPVVJDRVMgPQotIGxpYnJlc29sdXRpb25TZXRfbGFfU09VUkNFUyArPSBsaWJ2bXdhcmVjdHJsLmMKLUluZGV4OiBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdml4L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvdml4L01ha2VmaWxlLmFtCi0rKysgb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZpeC9NYWtlZmlsZS5hbQotQEAgLTIwLDYgKzIwLDcgQEAgcGx1Z2luX0xUTElCUkFSSUVTID0gbGlidml4LmxhCi0gCi0gbGlidml4X2xhX0NQUEZMQUdTID0KLSBsaWJ2aXhfbGFfQ1BQRkxBR1MgKz0gQFBMVUdJTl9DUFBGTEFHU0AKLStsaWJ2aXhfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotIGxpYnZpeF9sYV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvdmdhdXRoL3B1YmxpYwotIAotIGxpYnZpeF9sYV9MREZMQUdTID0KLUBAIC0yOSw2ICszMCw3IEBAIGxpYnZpeF9sYV9MSUJBREQgPQotIGxpYnZpeF9sYV9MSUJBREQgKz0gQFZJWF9MSUJBRERACi0gbGlidml4X2xhX0xJQkFERCArPSBAVk1UT09MU19MSUJTQAotIGxpYnZpeF9sYV9MSUJBREQgKz0gQEhHRlNfTElCU0AKLStsaWJ2aXhfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAotIGxpYnZpeF9sYV9MSUJBREQgKz0gJCh0b3BfYnVpbGRkaXIpL2xpYi9hdXRoL2xpYkF1dGgubGEKLSBsaWJ2aXhfbGFfTElCQUREICs9ICQodG9wX2J1aWxkZGlyKS9saWIvZm91bmRyeU1zZy9saWJGb3VuZHJ5TXNnLmxhCi0gbGlidml4X2xhX0xJQkFERCArPSAkKHRvcF9idWlsZGRpcikvbGliL2ltcGVyc29uYXRlL2xpYkltcGVyc29uYXRlLmxhCi1JbmRleDogb3Blbi12bS10b29scy9zZXJ2aWNlcy9wbHVnaW5zL3ZtYmFja3VwL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3Blbi12bS10b29scy5vcmlnL3NlcnZpY2VzL3BsdWdpbnMvdm1iYWNrdXAvTWFrZWZpbGUuYW0KLSsrKyBvcGVuLXZtLXRvb2xzL3NlcnZpY2VzL3BsdWdpbnMvdm1iYWNrdXAvTWFrZWZpbGUuYW0KLUBAIC0yMCw2ICsyMCw3IEBAIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYnZtYmFja3VwLmxhCi0gCi0gbGlidm1iYWNrdXBfbGFfQ1BQRkxBR1MgPQotIGxpYnZtYmFja3VwX2xhX0NQUEZMQUdTICs9IEBQTFVHSU5fQ1BQRkxBR1NACi0rbGlidm1iYWNrdXBfbGFfQ1BQRkxBR1MgKz0gQExJQlRJUlBDX0NQUEZMQUdTQAotIAotIGxpYnZtYmFja3VwX2xhX0xERkxBR1MgPQotIGxpYnZtYmFja3VwX2xhX0xERkxBR1MgKz0gQFBMVUdJTl9MREZMQUdTQAotQEAgLTI3LDYgKzI4LDcgQEAgbGlidm1iYWNrdXBfbGFfTERGTEFHUyArPSBAUExVR0lOX0xERkxBRwotIGxpYnZtYmFja3VwX2xhX0xJQkFERCA9Ci0gbGlidm1iYWNrdXBfbGFfTElCQUREICs9IEBHT0JKRUNUX0xJQlNACi0gbGlidm1iYWNrdXBfbGFfTElCQUREICs9IEBWTVRPT0xTX0xJQlNACi0rbGlidm1iYWNrdXBfbGFfTElCQUREICs9IEBMSUJUSVJQQ19MSUJTQAotIAotIGxpYnZtYmFja3VwX2xhX1NPVVJDRVMgPQotIGxpYnZtYmFja3VwX2xhX1NPVVJDRVMgKz0gbnVsbFByb3ZpZGVyLmMKLUluZGV4OiBvcGVuLXZtLXRvb2xzL3Rvb2xib3gvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuLXZtLXRvb2xzLm9yaWcvdG9vbGJveC9NYWtlZmlsZS5hbQotKysrIG9wZW4tdm0tdG9vbHMvdG9vbGJveC9NYWtlZmlsZS5hbQotQEAgLTIwLDkgKzIwLDExIEBAIGJpbl9QUk9HUkFNUyA9IHZtd2FyZS10b29sYm94LWNtZAotIHZtd2FyZV90b29sYm94X2NtZF9MREFERCA9Ci0gdm13YXJlX3Rvb2xib3hfY21kX0xEQUREICs9IC4uL2xpYmd1ZXN0bGliL2xpYmd1ZXN0bGliLmxhCi0gdm13YXJlX3Rvb2xib3hfY21kX0xEQUREICs9IEBWTVRPT0xTX0xJQlNACi0rdm13YXJlX3Rvb2xib3hfY21kX0xEQUREICs9IEBMSUJUSVJQQ19MSUJTQAotIAotIHZtd2FyZV90b29sYm94X2NtZF9DUFBGTEFHUyA9Ci0gdm13YXJlX3Rvb2xib3hfY21kX0NQUEZMQUdTICs9IEBWTVRPT0xTX0NQUEZMQUdTQAotK3Ztd2FyZV90b29sYm94X2NtZF9DUFBGTEFHUyArPSBATElCVElSUENfQ1BQRkxBR1NACi0gCi0gdm13YXJlX3Rvb2xib3hfY21kX1NPVVJDRVMgPQotIHZtd2FyZV90b29sYm94X2NtZF9TT1VSQ0VTICs9IHRvb2xib3gtY21kLmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDEwLWdudS11Y29udGV4dC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy8wMDEwLWdudS11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzliZWFjMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvMDAxMC1nbnUtdWNvbnRleHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tIDI3NDQyZTJkZDI4N2QzOTNkN2IzZjhiZjE2NGE4ODdhZmZlZjg0ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+Ci1EYXRlOiBXZWQsIDE4IE5vdiAyMDE1IDEwOjI3OjUxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIGdudS11Y29udGV4dAotCi0tLS0KLSBvcGVuLXZtLXRvb2xzL2xpYi9pbmNsdWRlL3NpZ1Bvc2l4UmVncy5oIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1JbmRleDogb3Blbi12bS10b29scy9saWIvaW5jbHVkZS9zaWdQb3NpeFJlZ3MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW4tdm0tdG9vbHMub3JpZy9saWIvaW5jbHVkZS9zaWdQb3NpeFJlZ3MuaAotKysrIG9wZW4tdm0tdG9vbHMvbGliL2luY2x1ZGUvc2lnUG9zaXhSZWdzLmgKLUBAIC0zMyw3ICszMyw3IEBACi0gI2luY2x1ZGUgImluY2x1ZGVDaGVjay5oIgotIAotIAotLSNpZiBfX2xpbnV4X18gICAgICAgICAvLyBXZSBuZWVkIHRoZSBSRUdfZm9vIG9mZnNldHMgaW4gdGhlIGdyZWdzZXRfdDsKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pIC8vIFdlIG5lZWQgdGhlIFJFR19mb28gb2Zmc2V0cyBpbiB0aGUgZ3JlZ3NldF90OwotICMgIGRlZmluZSBfR05VX1NPVVJDRSAvLyBfR05VX1NPVVJDRSBtYXBzIHRvIF9fVVNFX0dOVQotIAotIC8qIEFuZCwgdGhlIFJFR19mb28gZGVmaW5pdGlvbnMgY29uZmxpY3Qgd2l0aCBvdXIgb3duIGluIHg4Ni5oICovCi1AQCAtNzMsNyArNzMsNyBAQAotICNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KLSAjZW5kaWYKLSAKLS0jaWYgX19saW51eF9fCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICMgIGlmIGRlZmluZWQoX194ODZfNjRfXykKLSAjICAgIHVuZGVmIFJFR19SQVgKLSAjICAgIHVuZGVmIFJFR19SQlgKLUBAIC0xOTksNyArMTk5LDcgQEAKLSAjZGVmaW5lIFNDX0VTUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5tY19lc3ApCi0gI2RlZmluZSBTQ19FSVAodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQubWNfZWlwKQotICNlbmRpZgotLSNlbGlmIGRlZmluZWQgKHN1bikKLSsjZWxpZiAhZGVmaW5lZCAoX19HTElCQ19fKQotICNpZmRlZiBfX3g4Nl82NF9fCi0gI2RlZmluZSBTQ19FQVgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1JBWF0pCi0gI2RlZmluZSBTQ19FQlgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX1JCWF0pCi1AQCAtMjE5LDE1ICsyMTksMTUgQEAKLSAjZGVmaW5lIFNDX1IxNCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUjE0XSkKLSAjZGVmaW5lIFNDX1IxNSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tSRUdfUjE1XSkKLSAjZWxzZQotLSNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VBWF0pCi0tI2RlZmluZSBTQ19FQlgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRUJYXSkKLS0jZGVmaW5lIFNDX0VDWCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFQ1hdKQotLSNkZWZpbmUgU0NfRURYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VEWF0pCi0tI2RlZmluZSBTQ19FREkodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRURJXSkKLS0jZGVmaW5lIFNDX0VTSSh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFU0ldKQotLSNkZWZpbmUgU0NfRUJQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW0VCUF0pCi0tI2RlZmluZSBTQ19FU1AodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZ3JlZ3NbRVNQXSkKLS0jZGVmaW5lIFNDX0VJUCh1YykgKCh1bnNpZ25lZCBsb25nKSAodWMpLT51Y19tY29udGV4dC5ncmVnc1tFSVBdKQotKyNkZWZpbmUgU0NfRUFYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQVhdKQotKyNkZWZpbmUgU0NfRUJYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQlhdKQotKyNkZWZpbmUgU0NfRUNYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQ1hdKQotKyNkZWZpbmUgU0NfRURYKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FRFhdKQotKyNkZWZpbmUgU0NfRURJKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FREldKQotKyNkZWZpbmUgU0NfRVNJKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FU0ldKQotKyNkZWZpbmUgU0NfRUJQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FQlBdKQotKyNkZWZpbmUgU0NfRVNQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FU1BdKQotKyNkZWZpbmUgU0NfRUlQKHVjKSAoKHVuc2lnbmVkIGxvbmcpICh1YyktPnVjX21jb250ZXh0LmdyZWdzW1JFR19FSVBdKQotICNlbmRpZgotICNlbGlmIGRlZmluZWQoQU5EUk9JRF9YODYpCi0gI2RlZmluZSBTQ19FQVgodWMpICgodW5zaWduZWQgbG9uZykgKHVjKS0+dWNfbWNvbnRleHQuZWF4KQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzL2ZpeC1zdWJkaXItb2JqZWN0cy1jb25maWd1cmUtZXJyb3IucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvZml4LXN1YmRpci1vYmplY3RzLWNvbmZpZ3VyZS1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTZiZmRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzL2ZpeC1zdWJkaXItb2JqZWN0cy1jb25maWd1cmUtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorSW5kZXg6IG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3Blbi12bS10b29scy5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG9wZW4tdm0tdG9vbHMvY29uZmlndXJlLmFjCitAQCAtMzAzLDYgKzMwMyw3IEBAIEFDX0FSR19FTkFCTEUoCisgICAgW10sCisgICAgW2VuYWJsZV9yZXNvbHV0aW9ua21zPSJhdXRvIl0pCisgCisrQU1fSU5JVF9BVVRPTUFLRShbc3ViZGlyLW9iamVjdHNdKQorIEFNX0lOSVRfQVVUT01BS0UKKyAKKyAjIyMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdG9vbHMuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy90b29scy5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3Rvb2xzLmNvbmYKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29scy90b29scy5jb25mCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL2ZpbGVzL3ZtdG9vbHNkLmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvdm10b29sc2QuaW5pdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5pbml0CnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHMvdm10b29sc2QuaW5pdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9maWxlcy92bXRvb2xzZC5zZXJ2aWNlIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzL3ZtdG9vbHNkLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvZmlsZXMvdm10b29sc2Quc2VydmljZQpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzL3ZtdG9vbHNkLnNlcnZpY2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzJkMmM1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotIyBUaGlzIHJlY2lwZSBpcyBtb2RpZmllZCBmcm9tIHRoZSByZWNpcGUgb3JpZ2luYWxseSBmb3VuZCBpbiB0aGUgT3Blbi1Td2l0Y2gKLSMgcmVwb3NpdG9yeToKLSMKLSMgaHR0cHM6Ly9naXRodWIuY29tL29wZW4tc3dpdGNoL29wcy1idWlsZAotIyB5b2N0by9vcGVuc3dpdGNoL21ldGEtZm9zcy1vcGVuc3dpdGNoL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4wLjUuYmIKLSMgQ29tbWl0IDkwMDhkZTJkOGUxMDBmM2Y4NjhjNjY3NjU3NDJiY2E5ZmE5OGYzZjkKLSMKLSMgVGhlIHJlY2lwZSBwYWNrYWdpbmcgaGFzIGJlZW4gcmVsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm9yIGluY2x1c2lvbgotIyBpbiBtZXRhLW9wZW5lbWJlZGRlZCBieSBhZ3JlZW1lbnQgb2YgdGhlIGF1dGhvciAoRGllZ28gRG9tcGUpLgotIwotCi1TVU1NQVJZID0gIlRvb2xzIHRvIGVuaGFuY2UgVk1XYXJlIGd1ZXN0IGludGVncmF0aW9uIGFuZCBwZXJmb3JtYW5jZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS92bXdhcmUvb3Blbi12bS10b29scyIKLVNFQ1RJT04gPSAidm13YXJlLXRvb2xzIgotCi1MSUNFTlNFID0gIkxHUEwtMi4wICYgR1BMLTIuMCAmIEJTRCAmIENEREwtMS4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY2YmE0Y2I0ZmMwMTc2ODJjOTVlZmMzMDA0MTBlNzkiCi1MSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bWJsb2NrID0gIkJTRCIKLUxJQ0VOU0VfbW9kdWxlcy9mcmVlYnNkL3ZtbWVtY3RsID0gIkdQTC0yLjAiCi1MSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bXhuZXQgPSAiR1BMLTIuMCIKLUxJQ0VOU0VfbW9kdWxlcy9saW51eCA9ICJHUEwtMi4wIgotTElDRU5TRV9tb2R1bGVzL3NvbGFyaXMgPSAiQ0RETC0xLjAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92bXdhcmUvb3Blbi12bS10b29scy5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICBmaWxlOi8vdG9vbHMuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly92bXRvb2xzZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZtdG9vbHNkLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtdXNlLWRuZXQtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYWRkLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLWFzc3VtcHRpb25zLWFib3V0LWdsaWJjLWJlaW5nLW9ubHktbGliYy1pbXBsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2Ytb2Jzb2xldGUtc3lzLXBvbGwuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLVJlbmFtZS1wb2xsLmgtdG8tdm1fcG9sbC5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLVduby1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1hbmQtV25vLWVycm9yLWFkZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3RydWN0LXRpbWVzcGVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWRlZmluaXRpb24tb2YtQUxMUEVSTVMtYW5kLUFDQ0VTU1BFUk1TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1nbnUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1Vc2UtY29uZmlndXJlLXRlc3QtZm9yLXN5cy1zdGF0LmgtaW5jbHVkZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LUFkZC1zdXBwb3J0LWZvci1idWlsZGluZy13aXRoLXN5c3RlbS1saWJ0aXJwYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWdudS11Y29udGV4dC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICI4NTRjMGJiMzc0NjEyZjdlNjMzYjQ0OGNhMjczZjk3MGYxNTQ0NThiIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L29wZW4tdm0tdG9vbHMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIHV0aWwtbGludXggbGliZG5ldCBwcm9jcHMiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjIgotCi0jIG9wZW4tdm0tdG9vbHMgaXMgc3VwcG9ydGVkIG9ubHkgb24geDg2LgotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JwotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidm10b29sc2Quc2VydmljZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1pY3UgLS1kaXNhYmxlLW11bHRpbW9uIC0tZGlzYWJsZS1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtdGVzdHMgLS13aXRob3V0LWd0a21tIC0td2l0aG91dC14ZXJjZXMgLS13aXRob3V0LXBhbSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdyYWJiaXRtcXByb3h5IC0tZGlzYWJsZS12Z2F1dGggLS1kaXNhYmxlLWRlcGxveXBrZyBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXJvb3QtcHJpdmlsZWdlcyAtLXdpdGhvdXQta2VybmVsLW1vZHVsZXMiCi0KLU5PX1gxMV9GTEFHUyA9ICItLXdpdGhvdXQteCAtLXdpdGhvdXQtZ3RrMiAtLXdpdGhvdXQtZ3RrMyIKLVgxMV9ERVBFTkRTID0gImxpYnhleHQgbGlieGkgbGlieHJlbmRlciBsaWJ4cmFuZHIgbGlieHRzdCBndGsrIGdkay1waXhidWYiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLCR7Tk9fWDExX0ZMQUdTfSwke1gxMV9ERVBFTkRTfSIKLQotIyBmdXNlIGdldHMgaW1wbGljaXRseSBkZXRlY3RlZDsgdGhlcmUgaXMgbm8gLS13aXRob3V0LWZ1c2Ugb3B0aW9uLgotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICIsLGZ1c2UiCi0KLUNGTEFHU19hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtV25vLWFkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciIKLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy92bXN2Yy9saWIqLnNvIFwKLSAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL2NvbW1vbi9saWIqLnNvIFwKLSAgICAke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scy90b29scy5jb25mIFwKLSAgICAiCi1GSUxFU18ke1BOfS1sb2NhbGUgKz0gIiR7ZGF0YWRpcn0vb3Blbi12bS10b29scy9tZXNzYWdlcyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy9jb21tb24vbGliKi5sYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiXAotICAgICR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvY29tbW9uLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy92bXN2Yy8uZGVidWcgXAotICAgICIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scy90b29scy5jb25mIgotCi1SREVQRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4IGxpYmRuZXQgZnVzZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgbG4gLXNmICR7c2JpbmRpcn0vbW91bnQudm1oZ2ZzICR7RH0vc2Jpbi9tb3VudC52bWhnZnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8qLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3ZtdG9vbHNkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3ZtdG9vbHNkCi0gICAgZmkKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90b29scy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Ztd2FyZS10b29scy90b29scy5jb25mCi19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBDVVNUT01fRE5FVF9OQU1FPWRuZXQKLSAgICBleHBvcnQgQ1VTVE9NX0RORVRfTElCUz0tTCR7U1RBR0lOR19MSUJESVJ9L2xpYmRuZXQuc28KLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJ2bXRvb2xzZCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gInN0YXJ0IDkwIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCi0KLXB5dGhvbigpIHsKLSAgICBpZiAnbmV0d29ya2luZy1sYXllcicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpIG9yIFwKLQknZmlsZXN5c3RlbXMtbGF5ZXInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1uZXR3b3JraW5nIGFuZCBtZXRhLWZpbGVzeXN0ZW1zIHRvIGJlIHByZXNlbnQuJykKLX0KLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3Blbi12bS10b29scy9vcGVuLXZtLXRvb2xzXzEwLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc4ZDc2MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW4tdm0tdG9vbHMvb3Blbi12bS10b29sc18xMC4zLjAuYmIKQEAgLTAsMCArMSwxMTAgQEAKKyMgVGhpcyByZWNpcGUgaXMgbW9kaWZpZWQgZnJvbSB0aGUgcmVjaXBlIG9yaWdpbmFsbHkgZm91bmQgaW4gdGhlIE9wZW4tU3dpdGNoCisjIHJlcG9zaXRvcnk6CisjCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuLXN3aXRjaC9vcHMtYnVpbGQKKyMgeW9jdG8vb3BlbnN3aXRjaC9tZXRhLWZvc3Mtb3BlbnN3aXRjaC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuLXZtLXRvb2xzL29wZW4tdm0tdG9vbHNfMTAuMC41LmJiCisjIENvbW1pdCA5MDA4ZGUyZDhlMTAwZjNmODY4YzY2NzY1NzQyYmNhOWZhOThmM2Y5CisjCisjIFRoZSByZWNpcGUgcGFja2FnaW5nIGhhcyBiZWVuIHJlbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvciBpbmNsdXNpb24KKyMgaW4gbWV0YS1vcGVuZW1iZWRkZWQgYnkgYWdyZWVtZW50IG9mIHRoZSBhdXRob3IgKERpZWdvIERvbXBlKS4KKyMKKworU1VNTUFSWSA9ICJUb29scyB0byBlbmhhbmNlIFZNV2FyZSBndWVzdCBpbnRlZ3JhdGlvbiBhbmQgcGVyZm9ybWFuY2UiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdm13YXJlL29wZW4tdm0tdG9vbHMiCitTRUNUSU9OID0gInZtd2FyZS10b29scyIKKworTElDRU5TRSA9ICJMR1BMLTIuMCAmIEdQTC0yLjAgJiBCU0QgJiBDRERMLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU1OTMxNzgwOWM1NDQ0ZmIzOWNlYWY2YWM0NWM0M2FjIgorTElDRU5TRV9tb2R1bGVzL2ZyZWVic2Qvdm1ibG9jayA9ICJCU0QiCitMSUNFTlNFX21vZHVsZXMvZnJlZWJzZC92bW1lbWN0bCA9ICJHUEwtMi4wIgorTElDRU5TRV9tb2R1bGVzL2ZyZWVic2Qvdm14bmV0ID0gIkdQTC0yLjAiCitMSUNFTlNFX21vZHVsZXMvbGludXggPSAiR1BMLTIuMCIKK0xJQ0VOU0VfbW9kdWxlcy9zb2xhcmlzID0gIkNEREwtMS4wIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdm13YXJlL29wZW4tdm0tdG9vbHMuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovL3Rvb2xzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vdm10b29sc2Quc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92bXRvb2xzZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LXVzZS1kbmV0LWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWFkZC1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3RydWN0LXRpbWVzcGVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWRlZmluaXRpb24tb2YtQUxMUEVSTVMtYW5kLUFDQ0VTU1BFUk1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLWNvbmZpZ3VyZS10by10ZXN0LWZvci1mZWF0dXJlLWluc3RlYWQtb2YtcGxhdGZvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLVVzZS1jb25maWd1cmUtdGVzdC1mb3Itc3lzLXN0YXQuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1zdWJkaXItb2JqZWN0cy1jb25maWd1cmUtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXBvbGwuaC1pbnN0ZWFkLW9mLXN5cy1wb2xsLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SZW5hbWUtcG9sbC5oLXRvLXZtX3BvbGwuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVzZS1wb3NpeC1zdHJlcnJvcl9yLXVubGVzcy1vbi1nbnUtbGliYy1zeXN0ZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utb2ZmNjRfdC1pbnN0ZWFkLW9mLV9fb2ZmNjRfdC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICIyMTQ3ZGY2YWFiZTYzOWZjNWZmNDIzZWQ3OTFhOGU3ZjAyYmY4ZDBhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0L29wZW4tdm0tdG9vbHMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIHV0aWwtbGludXggbGliZG5ldCBwcm9jcHMgbGlidGlycGMiCisKKyMgb3Blbi12bS10b29scyBpcyBzdXBwb3J0ZWQgb25seSBvbiB4ODYuCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKiktbGludXgnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ2bXRvb2xzZC5zZXJ2aWNlIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWljdSAtLWRpc2FibGUtbXVsdGltb24gLS1kaXNhYmxlLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS10ZXN0cyAtLXdpdGhvdXQtZ3RrbW0gLS13aXRob3V0LXhlcmNlcyAtLXdpdGhvdXQtcGFtIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3JhYmJpdG1xcHJveHkgLS1kaXNhYmxlLXZnYXV0aCAtLWRpc2FibGUtZGVwbG95cGtnIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcm9vdC1wcml2aWxlZ2VzIC0td2l0aG91dC1rZXJuZWwtbW9kdWxlcyIKKworTk9fWDExX0ZMQUdTID0gIi0td2l0aG91dC14IC0td2l0aG91dC1ndGsyIC0td2l0aG91dC1ndGszIgorWDExX0RFUEVORFMgPSAibGlieGV4dCBsaWJ4aSBsaWJ4cmVuZGVyIGxpYnhyYW5kciBsaWJ4dHN0IGd0aysgZ2RrLXBpeGJ1ZiIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICIsJHtOT19YMTFfRkxBR1N9LCR7WDExX0RFUEVORFN9IgorCisjIGZ1c2UgZ2V0cyBpbXBsaWNpdGx5IGRldGVjdGVkOyB0aGVyZSBpcyBubyAtLXdpdGhvdXQtZnVzZSBvcHRpb24uCitQQUNLQUdFQ09ORklHW2Z1c2VdID0gIiwsZnVzZSIKKworQ0ZMQUdTX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyIgorRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL3Ztc3ZjL2xpYiouc28gXAorICAgICR7bGliZGlyfS9vcGVuLXZtLXRvb2xzL3BsdWdpbnMvY29tbW9uL2xpYiouc28gXAorICAgICR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYgXAorICAgICIKK0ZJTEVTXyR7UE59LWxvY2FsZSArPSAiJHtkYXRhZGlyfS9vcGVuLXZtLXRvb2xzL21lc3NhZ2VzIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL2NvbW1vbi9saWIqLmxhIgorRklMRVNfJHtQTn0tZGJnICs9ICJcCisgICAgJHtsaWJkaXJ9L29wZW4tdm0tdG9vbHMvcGx1Z2lucy9jb21tb24vLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vb3Blbi12bS10b29scy9wbHVnaW5zL3Ztc3ZjLy5kZWJ1ZyBcCisgICAgIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYiCisKK1JERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXggbGliZG5ldCBmdXNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBsbiAtc2YgJHtzYmluZGlyfS9tb3VudC52bWhnZnMgJHtEfS9zYmluL21vdW50LnZtaGdmcworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9Lyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vdm10b29sc2QuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvdm10b29sc2QKKyAgICBmaQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rvb2xzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdm13YXJlLXRvb2xzL3Rvb2xzLmNvbmYKK30KKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IENVU1RPTV9ETkVUX05BTUU9ZG5ldAorICAgIGV4cG9ydCBDVVNUT01fRE5FVF9MSUJTPS1MJHtTVEFHSU5HX0xJQkRJUn0vbGliZG5ldC5zbworfQorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gInZtdG9vbHNkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworcHl0aG9uKCkgeworICAgIGlmICduZXR3b3JraW5nLWxheWVyJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCkgb3IgXAorCSdmaWxlc3lzdGVtcy1sYXllcicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCdSZXF1aXJlcyBtZXRhLW5ldHdvcmtpbmcgYW5kIG1ldGEtZmlsZXN5c3RlbXMgdG8gYmUgcHJlc2VudC4nKQorfQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Qvb3BlbmN0XzAuNi4yMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCmluZGV4IDkxMzI5MGMuLjY3YjdjMjkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdC9vcGVuY3RfMC42LjIwLmJiCkBAIC04OCw3ICs4OCwzIEBACiAgICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL29wZW5jdC9zdGF0dXMKICAgICBjaG1vZCA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL29wZW5jdC9zdGF0dXMKIH0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBsbiAtc2YgY3RhcGkvbGlib3BlbmN0YXBpLnNvICR7bGliZGlyfS9saWJvcGVuY3RhcGkuc28KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1BZGQtbWlzc2luZy1tdWx0aS1saW5lLXNlcGFyYXRvci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1BZGQtbWlzc2luZy1tdWx0aS1saW5lLXNlcGFyYXRvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTM1OTdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLUFkZC1taXNzaW5nLW11bHRpLWxpbmUtc2VwYXJhdG9yLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gNjA4NTcyMjlhYWIxM2NjYzQyNjU3MmE0M2FiODkxNDA5YmI3NmVhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDkgU2VwIDIwMTggMjI6NTI6NTUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIG1pc3NpbmcgbXVsdGktbGluZSBzZXBhcmF0b3IKKworT3RoZXJ3aXNlIHRoaXMgZmFpbHMgdG8gYnVpbGQgKCBmb3VuZCBvbiBtaXBzICkKKworRml4ZXMKK2NvbnRyaWIvbW9kdWxlcy9zdXJmYWNlX21hdGNoaW5nL3NyYy9oYXNoX211cm11cjg2LmhwcDo5NzoxNTogZXJyb3I6CitleHBlY3RlZCBjb25zdHJ1Y3RvciwgZGVzdHJ1Y3Rvciwgb3IgdHlwZSBjb252ZXJzaW9uIGJlZm9yZSAnKCcgdG9rZW4KKyAgICAgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPjQgfHwgKF9fR05VQ19fPT00ICYmCitfX0dOVUNfTUlOT1JfXz49MykpCisgICAgICAgICAgICAgICBeCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliL3B1bGwvMTc2NF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtb2R1bGVzL3N1cmZhY2VfbWF0Y2hpbmcvc3JjL2hhc2hfbXVybXVyODYuaHBwIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9zdXJmYWNlX21hdGNoaW5nL3NyYy9oYXNoX211cm11cjg2LmhwcCBiL21vZHVsZXMvc3VyZmFjZV9tYXRjaGluZy9zcmMvaGFzaF9tdXJtdXI4Ni5ocHAKK2luZGV4IDFlZGY2YmY0Li4wNDc3ZDM3ZSAxMDA2NDQKKy0tLSBhL21vZHVsZXMvc3VyZmFjZV9tYXRjaGluZy9zcmMvaGFzaF9tdXJtdXI4Ni5ocHAKKysrKyBiL21vZHVsZXMvc3VyZmFjZV9tYXRjaGluZy9zcmMvaGFzaF9tdXJtdXI4Ni5ocHAKK0BAIC05Myw3ICs5Myw3IEBAIHZvaWQgaGFzaE11cm11cng4NiAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGludCBsZW4sIGNvbnN0IHVpbnQgc2VlZCwgdm9pZCAqIG91CisgLyogTm93IGZpbmQgYmVzdCB3YXkgd2UgY2FuIHRvIFJFQURfVUlOVDMyICovCisgI2lmbmRlZiBXT1JEU19CSUdFTkRJQU4KKyAjIGRlZmluZSBSRUFEX1VJTlQzMihwdHIpICAgKCooKHVpbnQzMl90KikocHRyKSkpCistI2VsaWYgZGVmaW5lZChXT1JEU19CSUdFTkRJQU4pCisrI2VsaWYgZGVmaW5lZChXT1JEU19CSUdFTkRJQU4pIFwKKyAgICAgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fPjQgfHwgKF9fR05VQ19fPT00ICYmIF9fR05VQ19NSU5PUl9fPj0zKSkKKyAjIGRlZmluZSBSRUFEX1VJTlQzMihwdHIpICAgKF9fYnVpbHRpbl9ic3dhcDMyKCooKHVpbnQzMl90KikocHRyKSkpKQorICNlbmRpZgorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtdXNpbmctaXN5c3RlbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1DaGVjay1mb3ItY2xhbmctYmVmb3JlLXVzaW5nLWlzeXN0ZW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5MDcxYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1DaGVjay1mb3ItY2xhbmctYmVmb3JlLXVzaW5nLWlzeXN0ZW0ucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBmYTc2ZDg2NDZiYjJiOWI1MTQ3MjhlZWVmNDFhZmVkN2M0M2EzNmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTEgU2VwIDIwMTggMTg6MTg6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGNsYW5nIGJlZm9yZSB1c2luZyAtaXN5c3RlbQorCitXaGVuIGNyb3NzIGNvbXBpbGluZyB3aXRoIGNsYW5nLCB0aGUgaW50ZXJuYWwgQysrIGhlYWRlcnMgYXJlIG5vdCBmb3VuZAord2hlbiBhZGRpbmcgc3lzcm9vdCB0byAtaXN5c3RlbSwgdGhhdCBpcyByZWR1bmRhbnQgYW55d2F5IGJlY2F1c2UgaXQKK3dpbGwgbG9vayBmb3IgaGVhZGVycyBpbnNpZGVyIC0tc3lzcm9vdCBwYXRoIHdpdGggc2FtZSBxdWFsaXR5IGFzIGl0Cit3b3VsZCBkbyB3aXRoIC1pc3lzdGVtIG90aGVyd2lzZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC8xMjUwNF0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjbWFrZS9PcGVuQ1ZVdGlscy5jbWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NtYWtlL09wZW5DVlV0aWxzLmNtYWtlIGIvY21ha2UvT3BlbkNWVXRpbHMuY21ha2UKK2luZGV4IGZhZTkxYzE2NWYuLjYwYzIwMTkyZGMgMTAwNjQ0CistLS0gYS9jbWFrZS9PcGVuQ1ZVdGlscy5jbWFrZQorKysrIGIvY21ha2UvT3BlbkNWVXRpbHMuY21ha2UKK0BAIC0yNTksNyArMjU5LDcgQEAgZnVuY3Rpb24ob2N2X2luY2x1ZGVfZGlyZWN0b3JpZXMpCisgICAgIG9jdl9pc19vcGVuY3ZfZGlyZWN0b3J5KF9faXNfb3BlbmN2X2RpciAiJHtkaXJ9IikKKyAgICAgaWYoX19pc19vcGVuY3ZfZGlyKQorICAgICAgIGxpc3QoQVBQRU5EIF9fYWRkX2JlZm9yZSAiJHtkaXJ9IikKKy0gICAgZWxzZWlmKENWX0dDQyBBTkQgTk9UIENNQUtFX0NYWF9DT01QSUxFUl9WRVJTSU9OIFZFUlNJT05fTEVTUyAiNi4wIiBBTkQKKysgICAgZWxzZWlmKCgoQ1ZfR0NDIEFORCBOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTICI2LjAiKSBPUiBDVl9DTEFORykgQU5ECisgICAgICAgICAgICBkaXIgTUFUQ0hFUyAiL3Vzci9pbmNsdWRlJCIpCisgICAgICAgIyB3b3JrYXJvdW5kIGZvciBHQ0MgNi54IGJ1ZworICAgICBlbHNlKCkKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1Eb250LXVzZS1pc3lzdGVtLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2gKaW5kZXggNmRkNDhmYy4uYmYwYjgwYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLURvbnQtdXNlLWlzeXN0ZW0ucGF0Y2gKQEAgLTEsMjYgKzEsMzAgQEAKLUZyb20gMmJjNmJiOTgzMWQwN2YwMzVmZWE3NGVhNzQ1Y2VhNDNkZDVmOWVmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzE0NGM0NGVjNzBkZWU3M2E2Mjg0NjNiOTlmZmVlZDc0YjFhOGVmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDkgU2VwIDIwMTcgMjM6NDg6MzEgLTA3MDAKK0RhdGU6IFR1ZSwgMTEgU2VwIDIwMTggMDA6MjE6MTggLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gRG9udCB1c2UgaXN5c3RlbQogCitjbGFuZyByZWFsbHkgZG9lcyBub3QgbGlrZSBpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisgY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZSB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKLSBjbWFrZS9PcGVuQ1ZQQ0hTdXBwb3J0LmNtYWtlIHwgMTAgKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NtYWtlL09wZW5DVlBDSFN1cHBvcnQuY21ha2UKLSsrKyBnaXQvY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZQotQEAgLTE3LDcgKzE3LDggQEAgSUYoQ01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQotICAgICBJRihOT1QgQ01BS0VfQ1hYX0NPTVBJTEVSX1ZFUlNJT04gVkVSU0lPTl9MRVNTICI0LjIuMCIpCitkaWZmIC0tZ2l0IGEvY21ha2UvT3BlbkNWUENIU3VwcG9ydC5jbWFrZSBiL2NtYWtlL09wZW5DVlBDSFN1cHBvcnQuY21ha2UKK2luZGV4IGY5YjFiNDhiNjUuLmZlMjdhMTM2ZjUgMTAwNjQ0CistLS0gYS9jbWFrZS9PcGVuQ1ZQQ0hTdXBwb3J0LmNtYWtlCisrKysgYi9jbWFrZS9PcGVuQ1ZQQ0hTdXBwb3J0LmNtYWtlCitAQCAtMTgsNiArMTgsOCBAQCBJRihDVl9HQ0MpCiAgICAgICAgICBTRVQoUENIU3VwcG9ydF9GT1VORCBUUlVFKQogICAgICBFTkRJRigpCi0tCisgCiArICAgIFNFVChDTUFLRV9JTkNMVURFX1NZU1RFTV9GTEFHX0MgIi1JIikKICsgICAgU0VUKENNQUtFX0lOQ0xVREVfU1lTVEVNX0ZMQUdfQ1hYICItSSIpCiAgICAgIFNFVChfUENIX2luY2x1ZGVfcHJlZml4ICItSSIpCiAgICAgIFNFVChfUENIX2lzeXN0ZW1fcHJlZml4ICItaXN5c3RlbSIpCiAgICAgIFNFVChfUENIX2RlZmluZV9wcmVmaXggIi1EIikKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1UZW1wb3JhcmxpeS13b3JrLWFyb3VuZC1kZXByZWNhdGVkLWZmbXBlZy1SQVctZnVuY3RpLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLVRlbXBvcmFybGl5LXdvcmstYXJvdW5kLWRlcHJlY2F0ZWQtZmZtcGVnLVJBVy1mdW5jdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNjYjdmOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1UZW1wb3JhcmxpeS13b3JrLWFyb3VuZC1kZXByZWNhdGVkLWZmbXBlZy1SQVctZnVuY3RpLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2QzMWY0MWQyYTY3NTllMjQ0OTgzNTA0Y2U4NTVmYzMyOTE2Yjk3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDkgTWF5IDIwMTggMTM6MzM6NTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVGVtcG9yYXJsaXkgd29yayBhcm91bmQgZGVwcmVjYXRlZCBmZm1wZWcgUkFXIGZ1bmN0aW9uCisgY29tcGlsZSBmYWlsdXJlIHVudGlsIG5leHQgdXByZXYKKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1vZHVsZXMvdmlkZW9pby9zcmMvY2FwX2ZmbXBlZ19pbXBsLmhwcCB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAgYi9tb2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAKK2luZGV4IDVhOWIxMGYwNzUuLjk3YzZiNzRiMDcgMTAwNjQ0CistLS0gYS9tb2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAKKysrKyBiL21vZHVsZXMvdmlkZW9pby9zcmMvY2FwX2ZmbXBlZ19pbXBsLmhwcAorQEAgLTY2Nyw2ICs2NjcsMTQgQEAgc3RydWN0IEltcGxNdXRleDo6SW1wbAorIAorICNlbmRpZgorIAorKy8qIE5PVEUgVGhpcyBpcyBkZXByZWNhdGVkIGluIGZmbXBlZyBhbmQgdGhlIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgKi8KKysjaWZuZGVmIEFWRk1UX1JBV1BJQ1RVUkUKKysjZGVmaW5lIEFWRk1UX1JBV1BJQ1RVUkUJMHgwMDIwCisrI2VuZGlmIC8qIEFWRk1UX1JBV1BJQ1RVUkUgKi8KKysjaWZuZGVmIENPREVDX0ZMQUdfR0xPQkFMX0hFQURFUgorKyNkZWZpbmUgQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSCUFWX0NPREVDX0ZMQUdfR0xPQkFMX0hFQURFUgorKyNlbmRpZgorKworIHZvaWQgSW1wbE11dGV4Ojppbml0KCkKKyB7CisgICAgIGltcGwgPSBuZXcgSW1wbCgpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAxLWJ1aWxkLXdvcmthcm91bmQtR0NDLTcuMS4xLWNvbXBpbGF0aW9uLWlzc3VlLXdpdGgtc2EucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE0MDYzMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtYnVpbGQtd29ya2Fyb3VuZC1HQ0MtNy4xLjEtY29tcGlsYXRpb24taXNzdWUtd2l0aC1zYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzkzNzYvY29tbWl0cy8wZDg1NGRiMzYxMTA2ZGZjYjA1NTIzMWZkMDExMmM1Yjg1ZWYyMjg3XQotCi1GaXggQ1ZFcyBmb3Igb3BlbmN2IDMuMy4KLQotKiBDVkUtMjAxNy0xMjU5NwotKiBDVkUtMjAxNy0xMjU5OAotKiBDVkUtMjAxNy0xMjU5OQotKiBDVkUtMjAxNy0xMjYwMAotKiBDVkUtMjAxNy0xMjYwMQotKiBDVkUtMjAxNy0xMjYwMgotKiBDVkUtMjAxNy0xMjYwMwotKiBDVkUtMjAxNy0xMjYwNAotKiBDVkUtMjAxNy0xMjYwNQotKiBDVkUtMjAxNy0xMjYwNgotKiBDVkUtMjAxNy0xMjg2MgotKiBDVkUtMjAxNy0xMjg2MwotKiBDVkUtMjAxNy0xMjg2NAotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSAwZDg1NGRiMzYxMTA2ZGZjYjA1NTIzMWZkMDExMmM1Yjg1ZWYyMjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hLmFsZWtoaW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAyMTo0NTowNSArMDAwMAotU3ViamVjdDogW1BBVENIIDEvM10gYnVpbGQ6IHdvcmthcm91bmQgR0NDIDcuMS4xIGNvbXBpbGF0aW9uIGlzc3VlIHdpdGgKLSBzYW5pdGl6ZSBmbGFncwotCi1WZXJzaW9uOiBnY2MgKEdDQykgNy4xLjEgMjAxNzA2MjIgKFJlZCBIYXQgNy4xLjEtMykKLUZsYWdzOiAtZnNhbml0aXplPWFkZHJlc3MsdW5kZWZpbmVkCi0tLS0KLSBtb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwIGIvbW9kdWxlcy90cy9zcmMvY3VkYV90ZXN0LmNwcAotaW5kZXggYTQ4ZTBhMDg3Li5lYjRjZWUxMzYgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwCi0rKysgYi9tb2R1bGVzL3RzL3NyYy9jdWRhX3Rlc3QuY3BwCi1AQCAtMzIyLDE2ICszMjIsMjAgQEAgbmFtZXNwYWNlIGN2dGVzdAotIAotICAgICAgICAgaWYgKG0xLnNpemUoKSAhPSBtMi5zaXplKCkpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCAiTWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyIDw8ICJcIiBoYXZlIGRpZmZlcmVudCBzaXplcyA6IFwiIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTEuc2l6ZSgpKSA8PCAiXSB2cyBcIiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGV4cHIyIDw8ICJcIiBbIiA8PCBQcmludFRvU3RyaW5nKG0yLnNpemUoKSkgPDwgIl0iOwotKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKLSsgICAgICAgICAgICBtc2cgPDwgIk1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMiA8PCAiXCIgaGF2ZSBkaWZmZXJlbnQgc2l6ZXMgOiBcIiIKLSsgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTEuc2l6ZSgpKSA8PCAiXSB2cyBcIiIKLSsgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcobTIuc2l6ZSgpKSA8PCAiXSI7Ci0rICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuc3RyKCk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAobTEudHlwZSgpICE9IG0yLnR5cGUoKSkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICByZXR1cm4gQXNzZXJ0aW9uRmFpbHVyZSgpIDw8ICJNYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIgPDwgIlwiIGhhdmUgZGlmZmVyZW50IHR5cGVzIDogXCIiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBleHByMSA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0xLnR5cGUoKSkpIDw8ICJdIHZzIFwiIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIFsiIDw8IFByaW50VG9TdHJpbmcoTWF0VHlwZShtMi50eXBlKCkpKSA8PCAiXSI7Ci0rICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbXNnOwotKyAgICAgICAgICAgIG1zZyA8PCAiTWF0cmljZXMgXCIiIDw8IGV4cHIxIDw8ICJcIiBhbmQgXCIiIDw8IGV4cHIyIDw8ICJcIiBoYXZlIGRpZmZlcmVudCB0eXBlcyA6IFwiIgotKyAgICAgICAgICAgICAgICA8PCBleHByMSA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0xLnR5cGUoKSkpIDw8ICJdIHZzIFwiIgotKyAgICAgICAgICAgICAgICA8PCBleHByMiA8PCAiXCIgWyIgPDwgUHJpbnRUb1N0cmluZyhNYXRUeXBlKG0yLnR5cGUoKSkpIDw8ICJdIjsKLSsgICAgICAgICAgICAgcmV0dXJuIEFzc2VydGlvbkZhaWx1cmUoKSA8PCBtc2cuc3RyKCk7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICBNYXQgZGlmZjsKLUBAIC0zNDMsMTIgKzM0NywxNCBAQCBuYW1lc3BhY2UgY3Z0ZXN0Ci0gCi0gICAgICAgICBpZiAobWF4VmFsID4gZXBzKQotICAgICAgICAgewotLSAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgIlRoZSBtYXggZGlmZmVyZW5jZSBiZXR3ZWVuIG1hdHJpY2VzIFwiIiA8PCBleHByMSA8PCAiXCIgYW5kIFwiIiA8PCBleHByMgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIGlzICIgPDwgbWF4VmFsIDw8ICIgYXQgKCIgPDwgbWF4TG9jLnkgPDwgIiwgIiA8PCBtYXhMb2MueCAvIG0xLmNoYW5uZWxzKCkgPDwgIikiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB3aGljaCBleGNlZWRzIFwiIiA8PCBlcHNfZXhwciA8PCAiXCIsIHdoZXJlIFwiIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjEgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0xLCBtYXhMb2MpIDw8ICIsIFwiIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0yLCBtYXhMb2MpIDw8ICIsIFwiIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZXBzX2V4cHIgPDwgIlwiIGV2YWx1YXRlcyB0byAiIDw8IGVwczsKLSsgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBtc2c7Ci0rICAgICAgICAgICAgbXNnIDw8ICJUaGUgbWF4IGRpZmZlcmVuY2UgYmV0d2VlbiBtYXRyaWNlcyBcIiIgPDwgZXhwcjEgPDwgIlwiIGFuZCBcIiIgPDwgZXhwcjIKLSsgICAgICAgICAgICAgICAgPDwgIlwiIGlzICIgPDwgbWF4VmFsIDw8ICIgYXQgKCIgPDwgbWF4TG9jLnkgPDwgIiwgIiA8PCBtYXhMb2MueCAvIG0xLmNoYW5uZWxzKCkgPDwgIikiCi0rICAgICAgICAgICAgICAgIDw8ICIsIHdoaWNoIGV4Y2VlZHMgXCIiIDw8IGVwc19leHByIDw8ICJcIiwgd2hlcmUgXCIiCi0rICAgICAgICAgICAgICAgIDw8IGV4cHIxIDw8ICJcIiBhdCAoIiA8PCBtYXhMb2MueSA8PCAiLCAiIDw8IG1heExvYy54IC8gbTEuY2hhbm5lbHMoKSA8PCAiKSBldmFsdWF0ZXMgdG8gIiA8PCBwcmludE1hdFZhbChtMSwgbWF4TG9jKSA8PCAiLCBcIiIKLSsgICAgICAgICAgICAgICAgPDwgZXhwcjIgPDwgIlwiIGF0ICgiIDw8IG1heExvYy55IDw8ICIsICIgPDwgbWF4TG9jLnggLyBtMS5jaGFubmVscygpIDw8ICIpIGV2YWx1YXRlcyB0byAiIDw8IHByaW50TWF0VmFsKG0yLCBtYXhMb2MpIDw8ICIsIFwiIgotKyAgICAgICAgICAgICAgICA8PCBlcHNfZXhwciA8PCAiXCIgZXZhbHVhdGVzIHRvICIgPDwgZXBzOwotKyAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOwotICAgICAgICAgfQotIAotICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN1Y2Nlc3MoKTsKLUBAIC00NjksOSArNDc1LDExIEBAIG5hbWVzcGFjZSBjdnRlc3QKLSAgICAgewotICAgICAgICAgaWYgKGdvbGQuc2l6ZSgpICE9IGFjdHVhbC5zaXplKCkpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCAiS2V5UG9pbnRzIHNpemUgbWlzdG1hY2hcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgZ29sZF9leHByIDw8ICJcIiA6ICIgPDwgZ29sZC5zaXplKCkgPDwgIlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBhY3R1YWxfZXhwciA8PCAiXCIgOiAiIDw8IGFjdHVhbC5zaXplKCk7Ci0rICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbXNnOwotKyAgICAgICAgICAgIG1zZyA8PCAiS2V5UG9pbnRzIHNpemUgbWlzdG1hY2hcbiIKLSsgICAgICAgICAgICAgICAgPDwgIlwiIiA8PCBnb2xkX2V4cHIgPDwgIlwiIDogIiA8PCBnb2xkLnNpemUoKSA8PCAiXG4iCi0rICAgICAgICAgICAgICAgIDw8ICJcIiIgPDwgYWN0dWFsX2V4cHIgPDwgIlwiIDogIiA8PCBhY3R1YWwuc2l6ZSgpOwotKyAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOwotICAgICAgICAgfQotIAotICAgICAgICAgc3RkOjpzb3J0KGFjdHVhbC5iZWdpbigpLCBhY3R1YWwuZW5kKCksIEtleVBvaW50TGVzcygpKTsKLUBAIC00ODQsMTQgKzQ5MiwxNiBAQCBuYW1lc3BhY2UgY3Z0ZXN0Ci0gCi0gICAgICAgICAgICAgaWYgKCFrZXlQb2ludHNFcXVhbHMocDEsIHAyKSkKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwgIktleVBvaW50cyBkaWZmZXIgYXQgIiA8PCBpIDw8ICJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGdvbGRfZXhwciA8PCAiXCIgdnMgXCIiIDw8IGFjdHVhbF9leHByIDw8ICJcIiA6IFxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJwdCA6ICIgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhwMS5wdCkgPDwgIiB2cyAiIDw8IHRlc3Rpbmc6OlByaW50VG9TdHJpbmcocDIucHQpIDw8ICJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAic2l6ZSA6ICIgPDwgcDEuc2l6ZSA8PCAiIHZzICIgPDwgcDIuc2l6ZSA8PCAiXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImFuZ2xlIDogIiA8PCBwMS5hbmdsZSA8PCAiIHZzICIgPDwgcDIuYW5nbGUgPDwgIlxuIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJyZXNwb25zZSA6ICIgPDwgcDEucmVzcG9uc2UgPDwgIiB2cyAiIDw8IHAyLnJlc3BvbnNlIDw8ICJcbiIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAib2N0YXZlIDogIiA8PCBwMS5vY3RhdmUgPDwgIiB2cyAiIDw8IHAyLm9jdGF2ZSA8PCAiXG4iCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgImNsYXNzX2lkIDogIiA8PCBwMS5jbGFzc19pZCA8PCAiIHZzICIgPDwgcDIuY2xhc3NfaWQ7Ci0rICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG1zZzsKLSsgICAgICAgICAgICAgICAgbXNnIDw8ICJLZXlQb2ludHMgZGlmZmVyIGF0ICIgPDwgaSA8PCAiXG4iCi0rICAgICAgICAgICAgICAgICAgICA8PCAiXCIiIDw8IGdvbGRfZXhwciA8PCAiXCIgdnMgXCIiIDw8IGFjdHVhbF9leHByIDw8ICJcIiA6IFxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgInB0IDogIiA8PCB0ZXN0aW5nOjpQcmludFRvU3RyaW5nKHAxLnB0KSA8PCAiIHZzICIgPDwgdGVzdGluZzo6UHJpbnRUb1N0cmluZyhwMi5wdCkgPDwgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgInNpemUgOiAiIDw8IHAxLnNpemUgPDwgIiB2cyAiIDw8IHAyLnNpemUgPDwgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgImFuZ2xlIDogIiA8PCBwMS5hbmdsZSA8PCAiIHZzICIgPDwgcDIuYW5nbGUgPDwgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgInJlc3BvbnNlIDogIiA8PCBwMS5yZXNwb25zZSA8PCAiIHZzICIgPDwgcDIucmVzcG9uc2UgPDwgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgIm9jdGF2ZSA6ICIgPDwgcDEub2N0YXZlIDw8ICIgdnMgIiA8PCBwMi5vY3RhdmUgPDwgIlxuIgotKyAgICAgICAgICAgICAgICAgICAgPDwgImNsYXNzX2lkIDogIiA8PCBwMS5jbGFzc19pZCA8PCAiIHZzICIgPDwgcDIuY2xhc3NfaWQ7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBBc3NlcnRpb25GYWlsdXJlKCkgPDwgbXNnLnN0cigpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1jYXJvdGVuZS1kb24tdC11c2UtX19hc21fXy13aXRoLWFhcmNoNjQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDEtY2Fyb3RlbmUtZG9uLXQtdXNlLV9fYXNtX18td2l0aC1hYXJjaDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWE1NmUwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMS1jYXJvdGVuZS1kb24tdC11c2UtX19hc21fXy13aXRoLWFhcmNoNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUwICswLDAgQEAKLUZyb20gMzUzZmM5MjYxOGNlMGRjNmJhYjRhM2U4YmZmMWMxM2MzYjYxMzExMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYWxla2hpbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE3OjQxOjIzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBjYXJvdGVuZTogZG9uJ3QgdXNlIF9fYXNtX18gd2l0aCBhYXJjaDY0Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAgIHwgICA0ICstCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIHwgICAyICstCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgICAgIHwgMTA0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwICAgICAgICAgIHwgIDU0ICsrKysrKystLS0tLS0tLQotIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcCAgICB8ICA3MiArKysrKysrKysrLS0tLS0tLS0tLQotIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCAgICB8ICAgNiArLQotIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcCAgICAgICAgICB8ICAyMCArKystLS0KLSAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcCAgICAgICAgICAgfCAgIDQgKy0KLSA4IGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAxMzMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCi1pbmRleCBmNjYzYmM2MDA1Li44MjM4YTNlY2U4IDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKLSsrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwCi1AQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgZXh0cmFjdDQoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDJTdHJpZGUgJiYgXAotICAgICAgICAgICAgICAgICAgc3JjU3RyaWRlID09IGRzdDNTdHJpZGUgJiYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gCi0gI2RlZmluZSBTUExJVF9BU00yKHNnbiwgYml0cykgX19hc21fXyAoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmxkMi4iICNiaXRzICIge2QwLCBkMn0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIgXAotQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIGV4dHJhY3Q0KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSB9Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIAotICNkZWZpbmUgQUxQSEFfUVVBRChzZ24sIGJpdHMpIHsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOyBcCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCi1pbmRleCAxNTdjOGI4MTIxLi5mYzk4ZmI5MTgxIDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbHNfY29tYmluZS5jcHAKLUBAIC03Nyw3ICs3Nyw3IEBAIG5hbWVzcGFjZSBDQVJPVEVORV9OUyB7Ci0gICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjMlN0cmlkZSAmJiBcCi0gICAgICAgICAgICAgICAgICBkc3RTdHJpZGUgPT0gc3JjM1N0cmlkZSAmJgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAKLSAjZGVmaW5lIE1FUkdFX0FTTTIoc2duLCBiaXRzKSBfX2FzbV9fICggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2bGQxLiIgI2JpdHMgIiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgICBcblx0IiBcCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAotaW5kZXggMzAzN2ZlNjcyYS4uMjZhZTU0YjE1YyAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcAotQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCByZ2IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAotICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7Ci0gICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7Ci1AQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgcmdiMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKLSAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOwotICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci1AQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgcmdieDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKLSAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKLUBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCByZ2J4MmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKLSAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOwotICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci1AQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgYmdyMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKLSAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OwotICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOwotQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIGJncjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKLSAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGJncngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAotICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7Ci0gICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7Ci1AQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgYmdyeDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKLSAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBzaiA8IHJvaXcxNjsgc2ogKz0gMTYsIGRqICs9IDQ4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICJ2bGQxLjgge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICJ2bW92LjggcTEsIHEwICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIGdyYXkycmdiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAKLSAgICAgICAgIGlmIChzaiA8IHJvaXc4KQotICAgICAgICAgewotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAidmxkMS44IHtkMH0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAidm1vdi44IGQxLCBkMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7Ci0gICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdmMyNTUgICBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgyNTUpOwotICNlbHNlCi0gICAgIHVpbnQ4eDE2eDRfdCB2UmdiYTsKLUBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IHNqIDwgcm9pdzE2OyBzaiArPSAxNiwgZGogKz0gNjQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgInZsZDEuOCB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgInZtb3YuOCBxMSwgcTAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi1AQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgZ3JheTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAKLSAgICAgICAgIGlmIChzaiA8IHJvaXc4KQotICAgICAgICAgewotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAidmxkMS44IHtkNX0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAidm1vdi44IGQ2LCBkNSAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCByZ2IycmdieChjb25zdCBTaXplMkQgJnNpemUsCi0gICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7Ci0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgIHJlZ2lzdGVyIHVpbnQ4eDhfdCB2YzI1NV8wICBhc20gKCJkMyIpID0gdm1vdl9uX3U4KDI1NSk7Ci0gI2Vsc2UKLSAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOwotQEAgLTY4OCw3ICs2ODgsNyBAQCB2b2lkIHJnYjJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOwotICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHUsIGogPSAwdTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDMyLCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLUBAIC03NDIsNyArNzQyLDcgQEAgdm9pZCByZ2J4MnJnYihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7Ci0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKLSsjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKLSAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOwotICAgICB1bmlvbiB7IHVpbnQ4eDE2eDRfdCB2NDsgdWludDh4MTZ4M190IHYzOyB9IHZfZHN0MDsKLSAgICAgdW5pb24geyB1aW50OHg4eDRfdCB2NDsgdWludDh4OHgzX3QgdjM7IH0gdl9kc3Q7Ci1AQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgcmdieDJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7Ci0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTgwNSw3ICs4MDUsNyBAQCB2b2lkIHJnYjJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAotIHsKLSAgICAgaW50ZXJuYWw6OmFzc2VydFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oKTsKLSAjaWZkZWYgQ0FST1RFTkVfTkVPTgotLSNpZiAhZGVmaW5lZChfX0dOVUNfXykgfHwgIWRlZmluZWQoX19hcm1fXykKLSsjaWYgISghZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKSkKLSAgICAgc2l6ZV90IHJvaXcxNiA9IHNpemUud2lkdGggPj0gMTUgPyBzaXplLndpZHRoIC0gMTUgOiAwOwotICNlbmRpZgotICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7Ci1AQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgcmdiMmJncihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OwotIAotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTg3NCw3ICs4NzQsNyBAQCB2b2lkIHJnYngyYmdyeChjb25zdCBTaXplMkQgJnNpemUsCi0gewotICAgICBpbnRlcm5hbDo6YXNzZXJ0U3VwcG9ydGVkQ29uZmlndXJhdGlvbigpOwotICNpZmRlZiBDQVJPVEVORV9ORU9OCi0tI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCAhZGVmaW5lZChfX2FybV9fKQotKyNpZiAhKCFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pKQotICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7Ci0gI2VuZGlmCi0gICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKLUBAIC04ODUsNyArODg1LDcgQEAgdm9pZCByZ2J4MmJncngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7Ci0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMzIsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTk0Myw3ICs5NDMsNyBAQCB2b2lkIHJnYngyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSB7Ci0gICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7Ci0gI2lmZGVmIENBUk9URU5FX05FT04KLS0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8ICFkZWZpbmVkKF9fYXJtX18pCi0rI2lmICEoIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykpCi0gICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKLSAjZW5kaWYKLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotQEAgLTk1NCw3ICs5NTQsNyBAQCB2b2lkIHJnYngyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOwotICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHUsIGogPSAwdTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLUBAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIHJnYjJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSB7Ci0gICAgIGludGVybmFsOjphc3NlcnRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKCk7Ci0gI2lmZGVmIENBUk9URU5FX05FT04KLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotICAgICByZWdpc3RlciB1aW50OHg4X3QgdmMyNTUgIGFzbSAoImQzIikgPSB2bW92X25fdTgoMjU1KTsKLSAjZWxzZQotICAgICB1bmlvbiB7IHVpbnQ4eDE2eDRfdCB2NDsgdWludDh4MTZ4M190IHYzOyB9IHZhbHMwOwotQEAgLTEwMTksNyArMTAxOSw3IEBAIHZvaWQgcmdiMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICB2YWxzOC52NC52YWxbM10gPSB2bW92X25fdTgoMjU1KTsKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8ICFkZWZpbmVkKF9fYXJtX18pCi0rI2lmICEoIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykpCi0gICAgIHNpemVfdCByb2l3MTYgPSBzaXplLndpZHRoID49IDE1ID8gc2l6ZS53aWR0aCAtIDE1IDogMDsKLSAjZW5kaWYKLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgcmdiMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7Ci0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdSwgaiA9IDB1OwotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMzIsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTE0MDksNyArMTQwOSw3IEBAIGlubGluZSB2b2lkIGNvbnZlcnRUb0hTVihjb25zdCBzMzIgciwgY29uc3QgczMyIGcsIGNvbnN0IHMzMiBiLAotICAgICAgICAgICAgICAgImQyNCIsImQyNSIsImQyNiIsImQyNyIsImQyOCIsImQyOSIsImQzMCIsImQzMSIgICAgICAgICBcCi0gICAgICAgICAgICAgKTsKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gCi0gI2RlZmluZSBZQ1JDQl9DT05TVFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZjWVIgIGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNig0ODk5KTsgICAgICAgICAgICAgICAgXAotQEAgLTE1NTUsNyArMTU1NSw3IEBAIGlubGluZSB1aW50OHg4eDNfdCBjb252ZXJ0VG9ZQ3JDYiggY29uc3QgaW50MTZ4OF90JiB2UiwgY29uc3QgaW50MTZ4OF90JiB2RywgY29uCi0gI2RlZmluZSBDT0VGRl9HICAgKCAgODY2MykKLSAjZGVmaW5lIENPRUZGX0IgICAoLTE3NzA1KQotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAjZGVmaW5lIFlVVjQyMEFMUEhBM19DT05TVAotICNkZWZpbmUgWVVWNDIwQUxQSEE0X0NPTlNUIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgYzI1NSAgYXNtICgicTEzIikgPSB2bW92cV9uX3U4KDI1NSk7Ci0gI2RlZmluZSBZVVY0MjBBTFBIQTNfQ09OVkVSVAotQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgcmdiMmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKLSAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7Ci1AQCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCByZ2IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQzLjgge2QwLWQyfSwgZDAsIGQyKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOwotQEAgLTE5MDQsNyArMTkwNCw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAotICNpZmRlZiBDQVJPVEVORV9ORU9OCi0gICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKLSAgICAgY29uc3QgczMyIGhzdl9zaGlmdCA9IDEyOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOwotQEAgLTE5MjMsNyArMTkyMyw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDQuOCB7ZDAtZDN9LCBkMCwgZDIpCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDRfdCB2UmdiID0gdmxkNF91OChzcmMgKyBzaik7Ci1AQCAtMTk1Niw3ICsxOTU2LDcgQEAgdm9pZCBiZ3IyaHN2KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAjaWZkZWYgQ0FST1RFTkVfTkVPTgotICAgICBzaXplX3Qgcm9pdzggPSBzaXplLndpZHRoID49IDcgPyBzaXplLndpZHRoIC0gNyA6IDA7Ci0gICAgIGNvbnN0IHMzMiBoc3Zfc2hpZnQgPSAxMjsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IGYzMiB2c2Rpdl90YWJsZSA9IGYzMigyNTUgPDwgaHN2X3NoaWZ0KTsKLSAgICAgcmVnaXN0ZXIgZjMyIHZoZGl2X3RhYmxlID0gZjMyKGhyYW5nZSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBjb25zdCBzMzIgdmhyYW5nZSA9IGhyYW5nZTsKLUBAIC0xOTc1LDcgKzE5NzUsNyBAQCB2b2lkIGJncjJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDMuOCB7ZDAtZDJ9LCBkMiwgZDApCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7Ci1AQCAtMjAwOCw3ICsyMDA4LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICByZWdpc3RlciBjb25zdCBmMzIgdnNkaXZfdGFibGUgPSBmMzIoMjU1IDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGYzMiB2aGRpdl90YWJsZSA9IGYzMihocmFuZ2UgPDwgaHN2X3NoaWZ0KTsKLSAgICAgcmVnaXN0ZXIgY29uc3QgczMyIHZocmFuZ2UgPSBocmFuZ2U7Ci1AQCAtMjAyNyw3ICsyMDI3LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBDT05WRVJUX1RPX0hTVl9BU00odmxkNC44IHtkMC1kM30sIGQyLCBkMCkKLSAjZWxzZQotICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2IgPSB2bGQ0X3U4KHNyYyArIHNqKTsKLUBAIC0yMDY4LDcgKzIwNjgsNyBAQCB2b2lkIHJnYngyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QyLCBkNCwgZDYsIGQ4fSwgWyVbaW4wXV0gICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgIHE0ICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QzLCBkNSwgZDcsIGQ5fSwgWyVbaW4xXV0gICAgICAgIEAgIHh4eHh4eHh4IHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIHh4eHh4eHh4IFxuXHQiCi1AQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCByZ2IyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA0OCwgZGogKz0gMzIsIGogKz0gMTYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICJ2bGQzLjgge2QyLCBkNCwgZDZ9LCBbJVtpbjBdXSAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICBxNCAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAidmxkMy44IHtkMywgZDUsIGQ3fSwgWyVbaW4xXV0gICAgICAgQCAgeHh4eHh4eHggcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggXG5cdCIKLUBAIC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIHJnYngycmdiNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA2NCwgZGogKz0gMzIsIGogKz0gMTYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QwLCBkMiwgZDQsIGQ2fSwgWyVbaW4wXV0gICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAidmxkNC44IHtkMSwgZDMsIGQ1LCBkN30sIFslW2luMV1dICAgIEAgIHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIGFhYWFBQUFBICAgXG5cdCIKLUBAIC0yMjMwLDcgKzIyMzAsNyBAQCB2b2lkIHJnYjJyZ2I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDQ4LCBkaiArPSAzMiwgaiArPSAxNikKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDAsIGQyLCBkNH0sIFslW2luMF1dICAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQzLjgge2QxLCBkMywgZDV9LCBbJVtpbjFdXSAgICAgICAgQCAgcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggICBcblx0IgotQEAgLTIyODUsNyArMjI4NSw3IEBAIHZvaWQgcmdiMnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDMuOCB7ZDAtZDJ9LCBkMCwgZDEsIGQyKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHgzX3QgdlJnYiA9IHZsZDNfdTgoc3JjICsgc2opOwotQEAgLTIzMjksNyArMjMyOSw3IEBAIHZvaWQgcmdieDJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAzMiwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQ0Ljgge2QwLWQzfSwgZDAsIGQxLCBkMikKLSAjZWxzZQotICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZSZ2JhID0gdmxkNF91OChzcmMgKyBzaik7Ci1AQCAtMjM3Myw3ICsyMzczLDcgQEAgdm9pZCBiZ3IyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMjQsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkMy44IHtkMC1kMn0sIGQyLCBkMSwgZDApCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDNfdCB2QmdyID0gdmxkM191OChzcmMgKyBzaik7Ci1AQCAtMjQxNyw3ICsyNDE3LDcgQEAgdm9pZCBiZ3J4MnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDQuOCB7ZDAtZDN9LCBkMiwgZDEsIGQwKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHg0X3QgdkJncmEgPSB2bGQ0X3U4KHNyYyArIHNqKTsKLUBAIC0yNDk5LDcgKzI0OTksNyBAQCB2b2lkIHl1djQyMHNwMnJnYihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMSwgZDAsIHE1LCBxNikKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI1NDUsNyArMjU0NSw3IEBAIHZvaWQgeXV2NDIwc3AycmdieChjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMSwgZDAsIHE1LCBxNikKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI1OTEsNyArMjU5MSw3IEBAIHZvaWQgeXV2NDIwaTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBDT05WRVJUWVVWNDIwVE9SR0IoMywgZDAsIGQxLCBxNSwgcTYpCi0gI2Vsc2UKLSAgICAgICAgICAgICBjb252ZXJ0WVVWNDIwLlRvUkdCKHkxICsgaiwgeTIgKyBqLCB1diArIGosIGRzdDEgKyBkaiwgZHN0MiArIGRqKTsKLUBAIC0yNjM3LDcgKzI2MzcsNyBAQCB2b2lkIHl1djQyMGkycmdieChjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMCwgZDEsIHE1LCBxNikKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI2ODMsNyArMjY4Myw3IEBAIHZvaWQgeXV2NDIwc3AyYmdyKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQxLCBkMCwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjcyOSw3ICsyNzI5LDcgQEAgdm9pZCB5dXY0MjBzcDJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQxLCBkMCwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjc3NSw3ICsyNzc1LDcgQEAgdm9pZCB5dXY0MjBpMmJncihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHV2ICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkxICsgaik7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHkyICsgaik7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQigzLCBkMCwgZDEsIHE2LCBxNSkKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI4MjEsNyArMjgyMSw3IEBAIHZvaWQgeXV2NDIwaTJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQwLCBkMSwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCi1pbmRleCA0MDNmMTZkODZhLi42NGI2ZGI3OGFiIDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKLUBAIC0xMDEsNyArMTAxLDcgQEAgQ1ZUX0ZVTkModTgsIHM4LCAxNiwKLSAgICAgIH0KLSB9KQotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRfRlVOQyh1OCwgdTE2LCAxNiwKLSAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAotIHsKLUBAIC0xMzUsNyArMTM1LDcgQEAgQ1ZUX0ZVTkModTgsIHUxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCi0gICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3U4KDApOwotICAgICAgcmVnaXN0ZXIgdWludDh4MTZfdCB6ZXJvMSBhc20gKCJxMiIpID0gdm1vdnFfbl91OCgwKTsKLUBAIC0xNzMsNyArMTczLDcgQEAgQ1ZUX0ZVTkModTgsIHMzMiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkModTgsIGYzMiwgMTYsCi0gLAotIHsKLUBAIC0yNDgsNyArMjQ4LDcgQEAgQ1ZUX0ZVTkMoczgsIHU4LCAxNiwKLSAgICAgIH0KLSB9KQotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRfRlVOQyhzOCwgdTE2LCAxNiwKLSAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7LAotIHsKLUBAIC0yODQsNyArMjg0LDcgQEAgQ1ZUX0ZVTkMoczgsIHUxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCi0gLAotIHsKLUBAIC0zMjMsNyArMzIzLDcgQEAgQ1ZUX0ZVTkMoczgsIHMxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCi0gLAotIHsKLUBAIC0zNzcsNyArMzc3LDcgQEAgQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCi0gLAotIHsKLUBAIC00NDAsNyArNDQwLDcgQEAgQ1ZUX0ZVTkMoczgsIGYzMiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCi0gLAotIHsKLUBAIC00NzksNyArNDc5LDcgQEAgQ1ZUX0ZVTkModTE2LCB1OCwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkModTE2LCBzOCwgMTYsCi0gICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdjEyNyBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgxMjcpOywKLSB7Ci1AQCAtNTIyLDcgKzUyMiw3IEBAIENWVF9GVU5DKHUxNiwgczgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVF9GVU5DKHUxNiwgczE2LCA4LAotICAgICAgcmVnaXN0ZXIgdWludDE2eDhfdCB2MzI3NjcgYXNtICgicTQiKSA9IHZtb3ZxX25fdTE2KDB4N0ZGRik7LAotIHsKLUBAIC01NTUsNyArNTU1LDcgQEAgQ1ZUX0ZVTkModTE2LCBzMTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUX0ZVTkModTE2LCBzMzIsIDgsCi0gICAgICByZWdpc3RlciB1aW50MTZ4OF90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3UxNigwKTssCi0gewotQEAgLTU4OSw3ICs1ODksNyBAQCBDVlRfRlVOQyh1MTYsIHMzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKLSAsCi0gewotQEAgLTYzMyw3ICs2MzMsNyBAQCBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKLSAsCi0gewotQEAgLTY3Miw3ICs2NzIsNyBAQCBDVlRfRlVOQyhzMTYsIHU4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKLSAsCi0gewotQEAgLTcxMSw3ICs3MTEsNyBAQCBDVlRfRlVOQyhzMTYsIHM4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRfRlVOQyhzMTYsIHUxNiwgOCwKLSAgICAgIHJlZ2lzdGVyIGludDE2eDhfdCB2WmVybyBhc20gKCJxNCIpID0gdm1vdnFfbl9zMTYoMCk7LAotIHsKLUBAIC03NDcsNyArNzQ3LDcgQEAgQ1ZUX0ZVTkMoczE2LCB1MTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCi0gLAotIHsKLUBAIC03ODYsNyArNzg2LDcgQEAgQ1ZUX0ZVTkMoczE2LCBzMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCi0gLAotIHsKLUBAIC04MjksNyArODI5LDcgQEAgQ1ZUX0ZVTkMoczE2LCBmMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoczMyLCB1OCwgOCwKLSAsCi0gewotQEAgLTg3MCw3ICs4NzAsNyBAQCBDVlRfRlVOQyhzMzIsIHU4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotIENWVF9GVU5DKHMzMiwgczgsIDgsCi0gLAotIHsKLUBAIC05MTEsNyArOTExLDcgQEAgQ1ZUX0ZVTkMoczMyLCBzOCwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKLSAsCi0gewotQEAgLTk1MCw3ICs5NTAsNyBAQCBDVlRfRlVOQyhzMzIsIHUxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKLSAsCi0gewotQEAgLTk4OSw3ICs5ODksNyBAQCBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhzMzIsIGYzMiwgOCwKLSAsCi0gewotQEAgLTEwMzQsNyArMTAzNCw3IEBAIENWVF9GVU5DKHMzMiwgZjMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotIENWVF9GVU5DKGYzMiwgdTgsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZtdWx0IGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZmxvYXQpKDEgPDwgMTYpKTsKLSAgICAgcmVnaXN0ZXIgdWludDMyeDRfdCAgdm1hc2sgYXNtICgicTEiKSA9IHZkdXBxX25fdTMyKDE8PDE2KTssCi1AQCAtMTEwMSw3ICsxMTAxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCB1OCwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhmMzIsIHM4LCA4LAotICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKLSB7Ci1AQCAtMTE1Myw3ICsxMTUzLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzOCwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSBDVlRfRlVOQyhmMzIsIHUxNiwgOCwKLSAgICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZoYWxmIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigwLjVmKTssCi0gewotQEAgLTEyMTIsNyArMTIxMiw3IEBAIENWVF9GVU5DKGYzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotIENWVF9GVU5DKGYzMiwgczE2LCA4LAotICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKLSB7Ci1AQCAtMTI3MSw3ICsxMjcxLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzMTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0gQ1ZUX0ZVTkMoZjMyLCBzMzIsIDgsCi0gICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAotIHsKLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKLWluZGV4IDBhMTRhODAzNWMuLmFlNDFhOTg1YzggMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKLSsrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAotQEAgLTEzNSw3ICsxMzUsNyBAQCBuYW1lc3BhY2UgQ0FST1RFTkVfTlMgewotIAotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gQ1ZUU19GVU5DMSh1OCwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTIyMCw3ICsyMjAsNyBAQCBDVlRTX0ZVTkMxKHU4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gQ1ZUU19GVU5DKHU4LCBzOCwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTMwNSw3ICszMDUsNyBAQCBDVlRTX0ZVTkModTgsIHM4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gQ1ZUU19GVU5DKHU4LCB1MTYsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0zODksNyArMzg5LDcgQEAgQ1ZUU19GVU5DKHU4LCB1MTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSBDVlRTX0ZVTkModTgsIHMxNiwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTQ3Myw3ICs0NzMsNyBAQCBDVlRTX0ZVTkModTgsIHMxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC01NjIsNyArNTYyLDcgQEAgQ1ZUU19GVU5DKHU4LCBzMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1OCwgZjMyLCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKLUBAIC02NDMsNyArNjQzLDcgQEAgQ1ZUU19GVU5DKHU4LCBmMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSBDVlRTX0ZVTkMoczgsIHU4LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtNzI4LDcgKzcyOCw3IEBAIENWVFNfRlVOQyhzOCwgdTgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSBDVlRTX0ZVTkMxKHM4LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtODEzLDcgKzgxMyw3IEBAIENWVFNfRlVOQzEoczgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSBDVlRTX0ZVTkMoczgsIHUxNiwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTg5OSw3ICs4OTksNyBAQCBDVlRTX0ZVTkMoczgsIHUxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotIENWVFNfRlVOQyhzOCwgczE2LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtOTg1LDcgKzk4NSw3IEBAIENWVFNfRlVOQyhzOCwgczE2LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRTX0ZVTkMoczgsIHMzMiwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTEwNzQsNyArMTA3NCw3IEBAIENWVFNfRlVOQyhzOCwgczMyLCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRTX0ZVTkMoczgsIGYzMiwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCi1AQCAtMTE1NSw3ICsxMTU1LDcgQEAgQ1ZUU19GVU5DKHM4LCBmMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1MTYsIHU4LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTIxNCw3ICsxMjE0LDcgQEAgQ1ZUU19GVU5DKHUxNiwgdTgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1MTYsIHM4LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTI3Myw3ICsxMjczLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQzEodTE2LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTMzMCw3ICsxMzMwLDcgQEAgQ1ZUU19GVU5DMSh1MTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1MTYsIHMxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTM4Nyw3ICsxMzg3LDcgQEAgQ1ZUU19GVU5DKHUxNiwgczE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1MTYsIHMzMiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTQ0Myw3ICsxNDQzLDcgQEAgQ1ZUU19GVU5DKHUxNiwgczMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyh1MTYsIGYzMiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKLUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBDVlRTX0ZVTkModTE2LCBmMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMxNiwgdTgsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNTU0LDcgKzE1NTQsNyBAQCBDVlRTX0ZVTkMoczE2LCB1OCwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMxNiwgczgsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNjEzLDcgKzE2MTMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzOCwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMxNiwgdTE2LCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNjcwLDcgKzE2NzAsNyBAQCBDVlRTX0ZVTkMoczE2LCB1MTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DMShzMTYsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNzI3LDcgKzE3MjcsNyBAQCBDVlRTX0ZVTkMxKHMxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMxNiwgczMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNzgzLDcgKzE3ODMsNyBAQCBDVlRTX0ZVTkMoczE2LCBzMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMxNiwgZjMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAotQEAgLTE4MzUsNyArMTgzNSw3IEBAIENWVFNfRlVOQyhzMTYsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRTX0ZVTkMoczMyLCB1OCwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTg5Myw3ICsxODkzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTgsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKHMzMiwgczgsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTE5NTEsNyArMTk1MSw3IEBAIENWVFNfRlVOQyhzMzIsIHM4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhzMzIsIHUxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjAwNyw3ICsyMDA3LDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhzMzIsIHMxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjA2Myw3ICsyMDYzLDcgQEAgQ1ZUU19GVU5DKHMzMiwgczE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQzEoczMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0yMTE4LDcgKzIxMTgsNyBAQCBDVlRTX0ZVTkMxKHMzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSBDVlRTX0ZVTkMoczMyLCBmMzIsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCi1AQCAtMjE2OSw3ICsyMTY5LDcgQEAgQ1ZUU19GVU5DKHMzMiwgZjMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhmMzIsIHU4LCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSphbHBoYSkpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpKCgxIDw8IDE2KSpiZXRhKSk7Ci1AQCAtMjIzOSw3ICsyMjM5LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTgsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gQ1ZUU19GVU5DKGYzMiwgczgsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTIyOTMsNyArMjI5Myw3IEBAIENWVFNfRlVOQyhmMzIsIHM4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhmMzIsIHUxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjM0NSw3ICsyMzQ1LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhmMzIsIHMxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjM5Nyw3ICsyMzk3LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQyhmMzIsIHMzMiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjQ0OCw3ICsyNDQ4LDcgQEAgQ1ZUU19GVU5DKGYzMiwgczMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotIENWVFNfRlVOQzEoZjMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAotZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAotaW5kZXggMWI1Mzk5NDM2Zi4uZjdiNWYxOGQ3OSAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAotKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCi1AQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgZ2F1c3NpYW5CbHVyNXg1KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAotICAgICAgICAgICAgICAgICB1MTYqIGxpZHgxID0gbGFuZSArIHggLSAxKjI7Ci0gICAgICAgICAgICAgICAgIHUxNiogbGlkeDMgPSBsYW5lICsgeCArIDEqMjsKLSAgICAgICAgICAgICAgICAgdTE2KiBsaWR4NCA9IGxhbmUgKyB4ICsgMioyOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2QwLCBkMn0sIFslW2luMF1dISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDEsIGQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCi0gICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqMzsKLSAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSozOwotICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjM7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDMuMTYge2QwLCBkMiwgZDR9LCBbJVtpbjBdXSEgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMy4xNiB7ZDEsIGQzLCBkNX0sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBnYXVzc2lhbkJsdXI1eDUoY29uc3QgU2l6ZTJEICZzaXplLCBzMzIgY24sCi0gICAgICAgICAgICAgICAgIHUxNiogbGlkeDEgPSBsYW5lICsgeCAtIDEqNDsKLSAgICAgICAgICAgICAgICAgdTE2KiBsaWR4MyA9IGxhbmUgKyB4ICsgMSo0OwotICAgICAgICAgICAgICAgICB1MTYqIGxpZHg0ID0gbGFuZSArIHggKyAyKjQ7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDQuMTYge2QwLCBkMiwgZDQsIGQ2fSwgWyVbaW4wXV0hICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkNC4xNiB7ZDEsIGQzLCBkNSwgZDd9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKLWluZGV4IDhlZjEyNjg5MzMuLjIzMmNjZjNlZmQgMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKLSsrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9weXJhbWlkLmNwcAotQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAotICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzg7IHggKz0gOCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKLSAgICAgICAgICAgICBmb3IgKDsgeCA8IHJvaXc0OyB4ICs9IDQpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIDIgKiB4KTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0gICAgICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAotICAgICBzdGQ6OnZlY3RvcjxmMzI+IF9idWYoY24qKHNyY1NpemUud2lkdGggKyA0KSArIDMyL3NpemVvZihmMzIpKTsKLSAgICAgZjMyKiBsYW5lID0gaW50ZXJuYWw6OmFsaWduUHRyKCZfYnVmWzIqY25dLCAzMik7Ci0gCi0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzZkNGYzMiAgYXNtICgicTExIikgPSB2bW92cV9uX2YzMigxLjVmKTsgIC8vIDYvNAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2YzFkNGYzMiAgYXNtICgicTEyIikgPSB2bW92cV9uX2YzMigwLjI1Zik7IC8vIDEvNAotIAotQEAgLTczOSw3ICs3MzksNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAotICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzQ7IHggKz0gNCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q4LWQxMX0sIFslW2luNF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTkzMiw3ICs5MzIsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgotICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgotQEAgLTk3Myw3ICs5NzMsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgotICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDI0KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyB4KTsKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2FybV9fKQotICAgICAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgICAgICJ2bW92LnUxNiBxOSwgIzYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAgICAgICAgICJ2bGQzLjE2IHtkMCwgZDIsIGQ0fSwgWyVbaW4wXV0gICAgICAgIC8qdjAqLyAgICAgICAgICAgICAgXG5cdCIKLUBAIC0xMDY0LDcgKzEwNjQsNyBAQCBweXJVcDh1SG9yaXpvbnRhbENvbnZvbHV0aW9uOgotICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMTYge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgotQEAgLTEyMTAsNyArMTIxMCw3IEBAIHB5clVwMTZzSG9yaXpvbnRhbENvbnZvbHV0aW9uOgotICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDQpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJtX18pCi0gICAgICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMzIge2QwLWQxfSwgWyVbaW4wXV0gICAgICAgLypxMCA9IHYwKi8gICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDEuMzIge2QyLWQzfSwgWyVbaW4yXV0gICAgICAgLypxMSA9IHYyKi8gICAgICAgICAgICBcblx0IgotQEAgLTEyNTEsNyArMTI1MSw3IEBAIHB5clVwMTZzSG9yaXpvbnRhbENvbnZvbHV0aW9uOgotICAgICAgICAgICAgIGZvciAoOyB4IDwgbGltOyB4ICs9IDEyKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKGxhbmUgKyB4ICsgMyk7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSAgICAgICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICAgICAidm1vdi5zMzIgcTksICM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMy4zMiB7ZDAsIGQyLCBkNH0sIFslW2luMF1dICAgICAgICAvKnYwKi8gICAgICAgICAgICAgIFxuXHQiCi1AQCAtMTM0Myw3ICsxMzQzLDcgQEAgcHlyVXAxNnNIb3Jpem9udGFsQ29udm9sdXRpb246Ci0gICAgICAgICAgICAgZm9yICg7IHggPCBsaW07IHggKz0gNCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgeCk7Ci0tI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19hcm1fXykKLSAgICAgICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAvKnEwID0gdjAqLyAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMS4zMiB7ZDItZDN9LCBbJVtpbjJdXSAgICAgICAvKnExID0gdjIqLyAgICAgICAgICAgIFxuXHQiCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAotaW5kZXggNTY5NTgwNGZlNC4uOGQzYjYzMjhiMSAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAotQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MCArIHgpOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MSArIHgpOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MiArIHgpOwotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgInZsZDEuOCB7ZDB9LCBbJVtzcmMwXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQxLjgge2QyfSwgWyVbc3JjMl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAotICAgICAgICAgeCA9IDA7Ci0gICAgICAgICBmb3IoIDsgeCA8IHJvaXc4OyB4ICs9IDggKQotICAgICAgICAgewotLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgInZsZDEuMTYge2Q0LWQ1fSwgWyVbczJwdHJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQxLjE2IHtkOC1kOX0sIFslW3M0cHRyXV0gICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLURvLW5vdC1lbmFibGUtYXNtLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJlODY4YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItRG8tbm90LWVuYWJsZS1hc20td2l0aC1jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5MyArMCwwIEBACi1Gcm9tIDMzM2Y2MDE2NWI2NzM3NTg4ZWI5NzVhNWU0MzkzZDg0NzAxMWExY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOSBTZXAgMjAxNyAxODowNzozNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRG8gbm90IGVuYWJsZSBhc20gd2l0aCBjbGFuZwotCi1jbGFuZyBwcmV0ZW5kcyB0byBiZSBnY2MgNC4yLjAgd2hpY2ggbWVhbnMgd2Ugd2lsbAotdXNlIGlubGluZSBhc20gZm9yIG5vIHJlYXNvbiwgaW5zdGVhZCBvZiBidWlsdGlucwotb24gY2xhbmcgd2hlbiBwb3NzaWJsZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLSAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcCAgfCAgNCArLQotIDNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcCB8ICAyICstCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAgICAgIHwgNzggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwICAgICAgICAgIHwgNTQgKysrKysrKysrKy0tLS0tLS0tLS0tCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnRfc2NhbGUuY3BwICAgIHwgNTYgKysrKysrKysrKy0tLS0tLS0tLS0tCi0gM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwICAgIHwgIDIgKy0KLSAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAgICAgICAgICAgfCAgOCArLS0KLSAzcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcCAgICAgICAgICAgfCAgNCArLQotIDggZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDEwNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsX2V4dHJhY3QuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKLWluZGV4IDgyMzhhM2VjZTguLmZmNGZiMzc3MGMgMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY2hhbm5lbF9leHRyYWN0LmNwcAotKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxfZXh0cmFjdC5jcHAKLUBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBleHRyYWN0NChjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICAgICAgICAgICBzcmNTdHJpZGUgPT0gZHN0MlN0cmlkZSAmJiBcCi0gICAgICAgICAgICAgICAgICBzcmNTdHJpZGUgPT0gZHN0M1N0cmlkZSAmJgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gCi0gI2RlZmluZSBTUExJVF9BU00yKHNnbiwgYml0cykgX19hc21fXyAoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmxkMi4iICNiaXRzICIge2QwLCBkMn0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIgXAotQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIGV4dHJhY3Q0KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSB9Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAKLSAjZGVmaW5lIEFMUEhBX1FVQUQoc2duLCBiaXRzKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsgXAotZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcAotaW5kZXggZmM5OGZiOTE4MS4uNWQ5MjUxZDUxYyAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jaGFubmVsc19jb21iaW5lLmNwcAotKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NoYW5uZWxzX2NvbWJpbmUuY3BwCi1AQCAtNzcsNyArNzcsNyBAQCBuYW1lc3BhY2UgQ0FST1RFTkVfTlMgewotICAgICAgICAgICAgICAgICAgZHN0U3RyaWRlID09IHNyYzJTdHJpZGUgJiYgXAotICAgICAgICAgICAgICAgICAgZHN0U3RyaWRlID09IHNyYzNTdHJpZGUgJiYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIAotICNkZWZpbmUgTUVSR0VfQVNNMihzZ24sIGJpdHMpIF9fYXNtX18gKCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZsZDEuIiAjYml0cyAiIHtkMC1kMX0sIFslW2luMF1dICAgICAgICAgICAgIFxuXHQiIFwKLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29sb3Jjb252ZXJ0LmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCi1pbmRleCAyNmFlNTRiMTVjLi5kM2E0MGZlNjRlIDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbG9yY29udmVydC5jcHAKLSsrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb2xvcmNvbnZlcnQuY3BwCi1AQCAtOTcsNyArOTcsNyBAQCB2b2lkIHJnYjJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKLSAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OwotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7Ci1AQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgcmdiMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKLSAgICAgICAgIHU4ICogZHN0ID0gaW50ZXJuYWw6OmdldFJvd1B0cihkc3RCYXNlLCBkc3RTdHJpZGUsIGkpOwotICAgICAgICAgc2l6ZV90IHNqID0gMHUsIGRqID0gMHU7Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgIGZvciAoOyBkaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIHJnYngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAotICAgICBjb25zdCB1MzIgRzJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBHMllfQlQ2MDEgOiBHMllfQlQ3MDk7Ci0gICAgIGNvbnN0IHUzMiBCMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEIyWV9CVDYwMSA6IEIyWV9CVDcwOTsKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9yMnkgYXNtICgiZDMxIikgPSB2bW92X25fczE2KFIyWSk7Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2cyeSBhc20gKCJkMzAiKSA9IHZtb3Zfbl9zMTYoRzJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfYjJ5IGFzbSAoImQyOSIpID0gdm1vdl9uX3MxNihCMlkpOwotQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIHJnYngyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAotICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7Ci0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci1AQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgYmdyMmdyYXkoY29uc3QgU2l6ZTJEICZzaXplLCBDT0xPUl9TUEFDRSBjb2xvcl9zcGFjZSwKLSAgICAgY29uc3QgdTMyIEcyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gRzJZX0JUNjAxIDogRzJZX0JUNzA5OwotICAgICBjb25zdCB1MzIgQjJZID0gY29sb3Jfc3BhY2UgPT0gQ09MT1JfU1BBQ0VfQlQ2MDEgPyBCMllfQlQ2MDEgOiBCMllfQlQ3MDk7Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfcjJ5IGFzbSAoImQzMSIpID0gdm1vdl9uX3MxNihSMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9nMnkgYXNtICgiZDMwIikgPSB2bW92X25fczE2KEcyWSk7Ci0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X2IyeSBhc20gKCJkMjkiKSA9IHZtb3Zfbl9zMTYoQjJZKTsKLUBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBiZ3IyZ3JheShjb25zdCBTaXplMkQgJnNpemUsIENPTE9SX1NQQUNFIGNvbG9yX3NwYWNlLAotICAgICAgICAgdTggKiBkc3QgPSBpbnRlcm5hbDo6Z2V0Um93UHRyKGRzdEJhc2UsIGRzdFN0cmlkZSwgaSk7Ci0gICAgICAgICBzaXplX3Qgc2ogPSAwdSwgZGogPSAwdTsKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgZm9yICg7IGRqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci1AQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgYmdyeDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgIGNvbnN0IHUzMiBHMlkgPSBjb2xvcl9zcGFjZSA9PSBDT0xPUl9TUEFDRV9CVDYwMSA/IEcyWV9CVDYwMSA6IEcyWV9CVDcwOTsKLSAgICAgY29uc3QgdTMyIEIyWSA9IGNvbG9yX3NwYWNlID09IENPTE9SX1NQQUNFX0JUNjAxID8gQjJZX0JUNjAxIDogQjJZX0JUNzA5OwotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgIHJlZ2lzdGVyIGludDE2eDRfdCB2X3IyeSBhc20gKCJkMzEiKSA9IHZtb3Zfbl9zMTYoUjJZKTsKLSAgICAgcmVnaXN0ZXIgaW50MTZ4NF90IHZfZzJ5IGFzbSAoImQzMCIpID0gdm1vdl9uX3MxNihHMlkpOwotICAgICByZWdpc3RlciBpbnQxNng0X3Qgdl9iMnkgYXNtICgiZDI5IikgPSB2bW92X25fczE2KEIyWSk7Ci1AQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgYmdyeDJncmF5KGNvbnN0IFNpemUyRCAmc2l6ZSwgQ09MT1JfU1BBQ0UgY29sb3Jfc3BhY2UsCi0gICAgICAgICB1OCAqIGRzdCA9IGludGVybmFsOjpnZXRSb3dQdHIoZHN0QmFzZSwgZHN0U3RyaWRlLCBpKTsKLSAgICAgICAgIHNpemVfdCBzaiA9IDB1LCBkaiA9IDB1OwotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICBmb3IgKDsgZGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLUBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBncmF5MnJnYihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgc2ogPCByb2l3MTY7IHNqICs9IDE2LCBkaiArPSA0OCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgInZsZDEuOCB7ZDAtZDF9LCBbJVtpbjBdXSAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgInZtb3YuOCBxMSwgcTAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi1AQCAtNTM4LDcgKzUzOCw3IEBAIHZvaWQgZ3JheTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAotIAotICAgICAgICAgaWYgKHNqIDwgcm9pdzgpCi0gICAgICAgICB7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAidmxkMS44IHtkMH0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAidm1vdi44IGQxLCBkMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICBzaXplX3Qgcm9pdzE2ID0gc2l6ZS53aWR0aCA+PSAxNSA/IHNpemUud2lkdGggLSAxNSA6IDA7Ci0gICAgIHNpemVfdCByb2l3OCA9IHNpemUud2lkdGggPj0gNyA/IHNpemUud2lkdGggLSA3IDogMDsKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICByZWdpc3RlciB1aW50OHgxNl90IHZjMjU1ICAgYXNtICgicTQiKSA9IHZtb3ZxX25fdTgoMjU1KTsKLSAjZWxzZQotICAgICB1aW50OHgxNng0X3QgdlJnYmE7Ci1AQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgZ3JheTJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBzaiA8IHJvaXcxNjsgc2ogKz0gMTYsIGRqICs9IDY0KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAidmxkMS44IHtkMC1kMX0sIFslW2luMF1dICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAidm1vdi44IHExLCBxMCAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBncmF5MnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAotIAotICAgICAgICAgaWYgKHNqIDwgcm9pdzgpCi0gICAgICAgICB7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAidmxkMS44IHtkNX0sIFslW2luXV0gICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAidm1vdi44IGQ2LCBkNSAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC0xNDA5LDcgKzE0MDksNyBAQCBpbmxpbmUgdm9pZCBjb252ZXJ0VG9IU1YoY29uc3QgczMyIHIsIGNvbnN0IHMzMiBnLCBjb25zdCBzMzIgYiwKLSAgICAgICAgICAgICAgICJkMjQiLCJkMjUiLCJkMjYiLCJkMjciLCJkMjgiLCJkMjkiLCJkMzAiLCJkMzEiICAgICAgICAgXAotICAgICAgICAgICAgICk7Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAKLSAjZGVmaW5lIFlDUkNCX0NPTlNUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICByZWdpc3RlciBpbnQxNng0X3QgdmNZUiAgYXNtICgiZDMxIikgPSB2bW92X25fczE2KDQ4OTkpOyAgICAgICAgICAgICAgICBcCi1AQCAtMTU1NSw3ICsxNTU1LDcgQEAgaW5saW5lIHVpbnQ4eDh4M190IGNvbnZlcnRUb1lDckNiKCBjb25zdCBpbnQxNng4X3QmIHZSLCBjb25zdCBpbnQxNng4X3QmIHZHLCBjb24KLSAjZGVmaW5lIENPRUZGX0cgICAoICA4NjYzKQotICNkZWZpbmUgQ09FRkZfQiAgICgtMTc3MDUpCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAjZGVmaW5lIFlVVjQyMEFMUEhBM19DT05TVAotICNkZWZpbmUgWVVWNDIwQUxQSEE0X0NPTlNUIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgYzI1NSAgYXNtICgicTEzIikgPSB2bW92cV9uX3U4KDI1NSk7Ci0gI2RlZmluZSBZVVY0MjBBTFBIQTNfQ09OVkVSVAotQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgcmdiMmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOwotQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgcmdiMmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDMuOCB7ZDAtZDJ9LCBkMCwgZDIpCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7Ci1AQCAtMTkwNCw3ICsxOTA0LDcgQEAgdm9pZCByZ2J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOwotQEAgLTE5MjMsNyArMTkyMyw3IEBAIHZvaWQgcmdieDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQ0Ljgge2QwLWQzfSwgZDAsIGQyKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHg0X3QgdlJnYiA9IHZsZDRfdTgoc3JjICsgc2opOwotQEAgLTE5NTYsNyArMTk1Niw3IEBAIHZvaWQgYmdyMmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOwotQEAgLTE5NzUsNyArMTk3NSw3IEBAIHZvaWQgYmdyMmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVF9UT19IU1ZfQVNNKHZsZDMuOCB7ZDAtZDJ9LCBkMiwgZDApCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDNfdCB2UmdiID0gdmxkM191OChzcmMgKyBzaik7Ci1AQCAtMjAwOCw3ICsyMDA4LDcgQEAgdm9pZCBiZ3J4Mmhzdihjb25zdCBTaXplMkQgJnNpemUsCi0gI2lmZGVmIENBUk9URU5FX05FT04KLSAgICAgc2l6ZV90IHJvaXc4ID0gc2l6ZS53aWR0aCA+PSA3ID8gc2l6ZS53aWR0aCAtIDcgOiAwOwotICAgICBjb25zdCBzMzIgaHN2X3NoaWZ0ID0gMTI7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgY29uc3QgZjMyIHZzZGl2X3RhYmxlID0gZjMyKDI1NSA8PCBoc3Zfc2hpZnQpOwotICAgICByZWdpc3RlciBmMzIgdmhkaXZfdGFibGUgPSBmMzIoaHJhbmdlIDw8IGhzdl9zaGlmdCk7Ci0gICAgIHJlZ2lzdGVyIGNvbnN0IHMzMiB2aHJhbmdlID0gaHJhbmdlOwotQEAgLTIwMjcsNyArMjAyNyw3IEBAIHZvaWQgYmdyeDJoc3YoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIENPTlZFUlRfVE9fSFNWX0FTTSh2bGQ0Ljgge2QwLWQzfSwgZDIsIGQwKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHg0X3QgdlJnYiA9IHZsZDRfdTgoc3JjICsgc2opOwotQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgcmdieDJiZ3I1NjUoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3MTY7IHNqICs9IDY0LCBkaiArPSAzMiwgaiArPSAxNikKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QyLCBkNCwgZDYsIGQ4fSwgWyVbaW4wXV0gICAgICAgIEAgIHEwICAgICAgIHExICAgICAgIHEyICAgICAgIHEzICAgICAgIHE0ICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QzLCBkNSwgZDcsIGQ5fSwgWyVbaW4xXV0gICAgICAgIEAgIHh4eHh4eHh4IHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIHh4eHh4eHh4IFxuXHQiCi1AQCAtMjEyMiw3ICsyMTIyLDcgQEAgdm9pZCByZ2IyYmdyNTY1KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzE2OyBzaiArPSA0OCwgZGogKz0gMzIsIGogKz0gMTYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAidmxkMy44IHtkMiwgZDQsIGQ2fSwgWyVbaW4wXV0gICAgICAgQCAgcTAgICAgICAgcTEgICAgICAgcTIgICAgICAgcTMgICAgICAgcTQgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDMsIGQ1LCBkN30sIFslW2luMV1dICAgICAgIEAgIHh4eHh4eHh4IHJycnJSUlJSIGdnZ2dHR0dHIGJiYmJCQkJCIHh4eHh4eHh4IFxuXHQiCi1AQCAtMjE3Niw3ICsyMTc2LDcgQEAgdm9pZCByZ2J4MnJnYjU2NShjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXcxNjsgc2ogKz0gNjQsIGRqICs9IDMyLCBqICs9IDE2KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgInZsZDQuOCB7ZDAsIGQyLCBkNCwgZDZ9LCBbJVtpbjBdXSAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQ0Ljgge2QxLCBkMywgZDUsIGQ3fSwgWyVbaW4xXV0gICAgQCAgcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgYWFhYUFBQUEgICBcblx0IgotQEAgLTIyMzAsNyArMjIzMCw3IEBAIHZvaWQgcmdiMnJnYjU2NShjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXcxNjsgc2ogKz0gNDgsIGRqICs9IDMyLCBqICs9IDE2KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgInZsZDMuOCB7ZDAsIGQyLCBkNH0sIFslW2luMF1dICAgICAgICBAICBxMCAgICAgICBxMSAgICAgICBxMiAgICAgICBxMyAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICJ2bGQzLjgge2QxLCBkMywgZDV9LCBbJVtpbjFdXSAgICAgICAgQCAgcnJyclJSUlIgZ2dnZ0dHR0cgYmJiYkJCQkIgeHh4eHh4eHggICBcblx0IgotQEAgLTIyODUsNyArMjI4NSw3IEBAIHZvaWQgcmdiMnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDI0LCBkaiArPSAyNCwgaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQzLjgge2QwLWQyfSwgZDAsIGQxLCBkMikKLSAjZWxzZQotICAgICAgICAgICAgIHVpbnQ4eDh4M190IHZSZ2IgPSB2bGQzX3U4KHNyYyArIHNqKTsKLUBAIC0yMzI5LDcgKzIzMjksNyBAQCB2b2lkIHJnYngyeWNyY2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgZm9yICg7IGogPCByb2l3ODsgc2ogKz0gMzIsIGRqICs9IDI0LCBqICs9IDgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaW50ZXJuYWw6OnByZWZldGNoKHNyYyArIHNqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIENPTlZFUlRUT1lDUkNCKHZsZDQuOCB7ZDAtZDN9LCBkMCwgZDEsIGQyKQotICNlbHNlCi0gICAgICAgICAgICAgdWludDh4OHg0X3QgdlJnYmEgPSB2bGQ0X3U4KHNyYyArIHNqKTsKLUBAIC0yMzczLDcgKzIzNzMsNyBAQCB2b2lkIGJncjJ5Y3JjYihjb25zdCBTaXplMkQgJnNpemUsCi0gICAgICAgICBmb3IgKDsgaiA8IHJvaXc4OyBzaiArPSAyNCwgZGogKz0gMjQsIGogKz0gOCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goc3JjICsgc2opOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFRPWUNSQ0IodmxkMy44IHtkMC1kMn0sIGQyLCBkMSwgZDApCi0gI2Vsc2UKLSAgICAgICAgICAgICB1aW50OHg4eDNfdCB2QmdyID0gdmxkM191OChzcmMgKyBzaik7Ci1AQCAtMjQxNyw3ICsyNDE3LDcgQEAgdm9pZCBiZ3J4MnljcmNiKGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgIGZvciAoOyBqIDwgcm9pdzg7IHNqICs9IDMyLCBkaiArPSAyNCwgaiArPSA4KQotICAgICAgICAgewotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcmMgKyBzaik7Ci0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgICAgICAgICBDT05WRVJUVE9ZQ1JDQih2bGQ0Ljgge2QwLWQzfSwgZDIsIGQxLCBkMCkKLSAjZWxzZQotICAgICAgICAgICAgIHVpbnQ4eDh4NF90IHZCZ3JhID0gdmxkNF91OChzcmMgKyBzaik7Ci1AQCAtMjQ5OSw3ICsyNDk5LDcgQEAgdm9pZCB5dXY0MjBzcDJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQxLCBkMCwgcTUsIHE2KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjU0NSw3ICsyNTQ1LDcgQEAgdm9pZCB5dXY0MjBzcDJyZ2J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMSwgZDAsIHE1LCBxNikKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI1OTEsNyArMjU5MSw3IEBAIHZvaWQgeXV2NDIwaTJyZ2IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQwLCBkMSwgcTUsIHE2KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjYzNyw3ICsyNjM3LDcgQEAgdm9pZCB5dXY0MjBpMnJnYngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQwLCBkMSwgcTUsIHE2KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjY4Myw3ICsyNjgzLDcgQEAgdm9pZCB5dXY0MjBzcDJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQxLCBkMCwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjcyOSw3ICsyNzI5LDcgQEAgdm9pZCB5dXY0MjBzcDJiZ3J4KGNvbnN0IFNpemUyRCAmc2l6ZSwKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2godXYgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTEgKyBqKTsKLSAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2goeTIgKyBqKTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIENPTlZFUlRZVVY0MjBUT1JHQig0LCBkMSwgZDAsIHE2LCBxNSkKLSAjZWxzZQotICAgICAgICAgICAgIGNvbnZlcnRZVVY0MjAuVG9SR0IoeTEgKyBqLCB5MiArIGosIHV2ICsgaiwgZHN0MSArIGRqLCBkc3QyICsgZGopOwotQEAgLTI3NzUsNyArMjc3NSw3IEBAIHZvaWQgeXV2NDIwaTJiZ3IoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDMsIGQwLCBkMSwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1AQCAtMjgyMSw3ICsyODIxLDcgQEAgdm9pZCB5dXY0MjBpMmJncngoY29uc3QgU2l6ZTJEICZzaXplLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh1diArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MSArIGopOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaCh5MiArIGopOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgQ09OVkVSVFlVVjQyMFRPUkdCKDQsIGQwLCBkMSwgcTYsIHE1KQotICNlbHNlCi0gICAgICAgICAgICAgY29udmVydFlVVjQyMC5Ub1JHQih5MSArIGosIHkyICsgaiwgdXYgKyBqLCBkc3QxICsgZGosIGRzdDIgKyBkaik7Ci1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCi1pbmRleCA2NGI2ZGI3OGFiLi5mMGMyZDE1M2YyIDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2NvbnZlcnQuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydC5jcHAKLUBAIC0xMDEsNyArMTAxLDcgQEAgQ1ZUX0ZVTkModTgsIHM4LCAxNiwKLSAgICAgIH0KLSB9KQotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkModTgsIHUxNiwgMTYsCi0gICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3U4KDApOywKLSB7Ci1AQCAtMTM1LDcgKzEzNSw3IEBAIENWVF9GVU5DKHU4LCB1MTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyh1OCwgczMyLCAxNiwKLSAgICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTgoMCk7Ci0gICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8xIGFzbSAoInEyIikgPSB2bW92cV9uX3U4KDApOwotQEAgLTE3Myw3ICsxNzMsNyBAQCBDVlRfRlVOQyh1OCwgczMyLCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkModTgsIGYzMiwgMTYsCi0gLAotIHsKLUBAIC0yNDgsNyArMjQ4LDcgQEAgQ1ZUX0ZVTkMoczgsIHU4LCAxNiwKLSAgICAgIH0KLSB9KQotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoczgsIHUxNiwgMTYsCi0gICAgICByZWdpc3RlciB1aW50OHgxNl90IHplcm8wIGFzbSAoInExIikgPSB2bW92cV9uX3U4KDApOywKLSB7Ci1AQCAtMjg0LDcgKzI4NCw3IEBAIENWVF9GVU5DKHM4LCB1MTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhzOCwgczE2LCAxNiwKLSAsCi0gewotQEAgLTMyMyw3ICszMjMsNyBAQCBDVlRfRlVOQyhzOCwgczE2LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCi0gLAotIHsKLUBAIC0zNzcsNyArMzc3LDcgQEAgQ1ZUX0ZVTkMoczgsIHMzMiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVF9GVU5DKHM4LCBmMzIsIDE2LAotICwKLSB7Ci1AQCAtNDQwLDcgKzQ0MCw3IEBAIENWVF9GVU5DKHM4LCBmMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyh1MTYsIHU4LCAxNiwKLSAsCi0gewotQEAgLTQ3OSw3ICs0NzksNyBAQCBDVlRfRlVOQyh1MTYsIHU4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkModTE2LCBzOCwgMTYsCi0gICAgIHJlZ2lzdGVyIHVpbnQ4eDE2X3QgdjEyNyBhc20gKCJxNCIpID0gdm1vdnFfbl91OCgxMjcpOywKLSB7Ci1AQCAtNTIyLDcgKzUyMiw3IEBAIENWVF9GVU5DKHUxNiwgczgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyh1MTYsIHMxNiwgOCwKLSAgICAgIHJlZ2lzdGVyIHVpbnQxNng4X3QgdjMyNzY3IGFzbSAoInE0IikgPSB2bW92cV9uX3UxNigweDdGRkYpOywKLSB7Ci1AQCAtNTU1LDcgKzU1NSw3IEBAIENWVF9GVU5DKHUxNiwgczE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyh1MTYsIHMzMiwgOCwKLSAgICAgIHJlZ2lzdGVyIHVpbnQxNng4X3QgemVybzAgYXNtICgicTEiKSA9IHZtb3ZxX25fdTE2KDApOywKLSB7Ci1AQCAtNTg5LDcgKzU4OSw3IEBAIENWVF9GVU5DKHUxNiwgczMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKLSAsCi0gewotQEAgLTYzMyw3ICs2MzMsNyBAQCBDVlRfRlVOQyh1MTYsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoczE2LCB1OCwgMTYsCi0gLAotIHsKLUBAIC02NzIsNyArNjcyLDcgQEAgQ1ZUX0ZVTkMoczE2LCB1OCwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVF9GVU5DKHMxNiwgczgsIDE2LAotICwKLSB7Ci1AQCAtNzExLDcgKzcxMSw3IEBAIENWVF9GVU5DKHMxNiwgczgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhzMTYsIHUxNiwgOCwKLSAgICAgIHJlZ2lzdGVyIGludDE2eDhfdCB2WmVybyBhc20gKCJxNCIpID0gdm1vdnFfbl9zMTYoMCk7LAotIHsKLUBAIC03NDcsNyArNzQ3LDcgQEAgQ1ZUX0ZVTkMoczE2LCB1MTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVF9GVU5DKHMxNiwgczMyLCA4LAotICwKLSB7Ci1AQCAtNzg2LDcgKzc4Niw3IEBAIENWVF9GVU5DKHMxNiwgczMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhzMTYsIGYzMiwgOCwKLSAsCi0gewotQEAgLTgyOSw3ICs4MjksNyBAQCBDVlRfRlVOQyhzMTYsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoczMyLCB1OCwgOCwKLSAsCi0gewotQEAgLTg3MCw3ICs4NzAsNyBAQCBDVlRfRlVOQyhzMzIsIHU4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhzMzIsIHM4LCA4LAotICwKLSB7Ci1AQCAtOTExLDcgKzkxMSw3IEBAIENWVF9GVU5DKHMzMiwgczgsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVF9GVU5DKHMzMiwgdTE2LCA4LAotICwKLSB7Ci1AQCAtOTUwLDcgKzk1MCw3IEBAIENWVF9GVU5DKHMzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKLSAsCi0gewotQEAgLTk4OSw3ICs5ODksNyBAQCBDVlRfRlVOQyhzMzIsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoczMyLCBmMzIsIDgsCi0gLAotIHsKLUBAIC0xMDM0LDcgKzEwMzQsNyBAQCBDVlRfRlVOQyhzMzIsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoZjMyLCB1OCwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3Qgdm11bHQgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmbG9hdCkoMSA8PCAxNikpOwotICAgICByZWdpc3RlciB1aW50MzJ4NF90ICB2bWFzayBhc20gKCJxMSIpID0gdmR1cHFfbl91MzIoMTw8MTYpOywKLUBAIC0xMTAxLDcgKzExMDEsNyBAQCBDVlRfRlVOQyhmMzIsIHU4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNgotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA2ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRfRlVOQyhmMzIsIHM4LCA4LAotICAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmhhbGYgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKDAuNWYpOywKLSB7Ci1AQCAtMTE1Myw3ICsxMTUzLDcgQEAgQ1ZUX0ZVTkMoZjMyLCBzOCwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoZjMyLCB1MTYsIDgsCi0gICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAotIHsKLUBAIC0xMjEyLDcgKzEyMTIsNyBAQCBDVlRfRlVOQyhmMzIsIHUxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoZjMyLCBzMTYsIDgsCi0gICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAotIHsKLUBAIC0xMjcxLDcgKzEyNzEsNyBAQCBDVlRfRlVOQyhmMzIsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDYKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNiAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUX0ZVTkMoZjMyLCBzMzIsIDgsCi0gICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2aGFsZiBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoMC41Zik7LAotIHsKLWRpZmYgLS1naXQgYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKLWluZGV4IGFlNDFhOTg1YzguLmQ1OTlkMjRjMWUgMTAwNjQ0Ci0tLS0gYS8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvY29udmVydF9zY2FsZS5jcHAKLSsrKyBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9jb252ZXJ0X3NjYWxlLmNwcAotQEAgLTQ3Myw3ICs0NzMsNyBAQCBDVlRTX0ZVTkModTgsIHMxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyh1OCwgczMyLCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtNTYyLDcgKzU2Miw3IEBAIENWVFNfRlVOQyh1OCwgczMyLCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHU4LCBmMzIsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAotQEAgLTk4NSw3ICs5ODUsNyBAQCBDVlRTX0ZVTkMoczgsIHMxNiwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyhzOCwgczMyLCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTA3NCw3ICsxMDc0LDcgQEAgQ1ZUU19GVU5DKHM4LCBzMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczgsIGYzMiwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCi1AQCAtMTE1NSw3ICsxMTU1LDcgQEAgQ1ZUU19GVU5DKHM4LCBmMzIsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkModTE2LCB1OCwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTEyMTQsNyArMTIxNCw3IEBAIENWVFNfRlVOQyh1MTYsIHU4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHUxNiwgczgsIDE2LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xMjczLDcgKzEyNzMsNyBAQCBDVlRTX0ZVTkModTE2LCBzOCwgMTYsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQzEodTE2LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTMzMCw3ICsxMzMwLDcgQEAgQ1ZUU19GVU5DMSh1MTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkModTE2LCBzMTYsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTEzODcsNyArMTM4Nyw3IEBAIENWVFNfRlVOQyh1MTYsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHUxNiwgczMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNDQzLDcgKzE0NDMsNyBAQCBDVlRTX0ZVTkModTE2LCBzMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyh1MTYsIGYzMiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEpOywKLUBAIC0xNDk1LDcgKzE0OTUsNyBAQCBDVlRTX0ZVTkModTE2LCBmMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyhzMTYsIHU4LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTU1NCw3ICsxNTU0LDcgQEAgQ1ZUU19GVU5DKHMxNiwgdTgsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczE2LCBzOCwgMTYsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTE2MTMsNyArMTYxMyw3IEBAIENWVFNfRlVOQyhzMTYsIHM4LCAxNiwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHMxNiwgdTE2LCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0xNjcwLDcgKzE2NzAsNyBAQCBDVlRTX0ZVTkMoczE2LCB1MTYsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQzEoczE2LCAxNiwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTcyNyw3ICsxNzI3LDcgQEAgQ1ZUU19GVU5DMShzMTYsIDE2LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczE2LCBzMzIsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTE3ODMsNyArMTc4Myw3IEBAIENWVFNfRlVOQyhzMTYsIHMzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHMxNiwgZjMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAotQEAgLTE4MzUsNyArMTgzNSw3IEBAIENWVFNfRlVOQyhzMTYsIGYzMiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKHMzMiwgdTgsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTE4OTMsNyArMTg5Myw3IEBAIENWVFNfRlVOQyhzMzIsIHU4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczMyLCBzOCwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMTk1MSw3ICsxOTUxLDcgQEAgQ1ZUU19GVU5DKHMzMiwgczgsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyhzMzIsIHUxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjAwNyw3ICsyMDA3LDcgQEAgQ1ZUU19GVU5DKHMzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczMyLCBzMTYsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTIwNjMsNyArMjA2Myw3IEBAIENWVFNfRlVOQyhzMzIsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DMShzMzIsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTIxMTgsNyArMjExOCw3IEBAIENWVFNfRlVOQzEoczMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoczMyLCBmMzIsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhKTssCi1AQCAtMjE2OSw3ICsyMTY5LDcgQEAgQ1ZUU19GVU5DKHMzMiwgZjMyLCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoZjMyLCB1OCwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKSgoMSA8PCAxNikqYWxwaGEpKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKSgoMSA8PCAxNikqYmV0YSkpOwotQEAgLTIyMzksNyArMjIzOSw3IEBAIENWVFNfRlVOQyhmMzIsIHU4LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoZjMyLCBzOCwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjI5Myw3ICsyMjkzLDcgQEAgQ1ZUU19GVU5DKGYzMiwgczgsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQyhmMzIsIHUxNiwgOCwKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNjYWxlIGFzbSAoInEwIikgPSB2ZHVwcV9uX2YzMigoZjMyKWFscGhhKTsKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdnNoaWZ0IGFzbSAoInExIikgPSB2ZHVwcV9uX2YzMigoZjMyKWJldGEgKyAwLjVmKTssCi1AQCAtMjM0NSw3ICsyMzQ1LDcgQEAgQ1ZUU19GVU5DKGYzMiwgdTE2LCA4LAotIH0pCi0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSBDVlRTX0ZVTkMoZjMyLCBzMTYsIDgsCi0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzY2FsZSBhc20gKCJxMCIpID0gdmR1cHFfbl9mMzIoKGYzMilhbHBoYSk7Ci0gICAgIHJlZ2lzdGVyIGZsb2F0MzJ4NF90IHZzaGlmdCBhc20gKCJxMSIpID0gdmR1cHFfbl9mMzIoKGYzMiliZXRhICsgMC41Zik7LAotQEAgLTIzOTcsNyArMjM5Nyw3IEBAIENWVFNfRlVOQyhmMzIsIHMxNiwgOCwKLSB9KQotICNlbmRpZgotIAotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gQ1ZUU19GVU5DKGYzMiwgczMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSArIDAuNWYpOywKLUBAIC0yNDQ4LDcgKzI0NDgsNyBAQCBDVlRTX0ZVTkMoZjMyLCBzMzIsIDgsCi0gfSkKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotIENWVFNfRlVOQzEoZjMyLCA4LAotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2NhbGUgYXNtICgicTAiKSA9IHZkdXBxX25fZjMyKChmMzIpYWxwaGEpOwotICAgICByZWdpc3RlciBmbG9hdDMyeDRfdCB2c2hpZnQgYXNtICgicTEiKSA9IHZkdXBxX25fZjMyKChmMzIpYmV0YSk7LAotZGlmZiAtLWdpdCBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcCBiLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAotaW5kZXggZjdiNWYxOGQ3OS4uZTVhYThmYzc1YiAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9nYXVzc2lhbl9ibHVyLmNwcAotKysrIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL2dhdXNzaWFuX2JsdXIuY3BwCi1AQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgZ2F1c3NpYW5CbHVyNXg1KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAotICAgICAgICAgICAgICAgICB1MTYqIGxpZHgxID0gbGFuZSArIHggLSAxKjI7Ci0gICAgICAgICAgICAgICAgIHUxNiogbGlkeDMgPSBsYW5lICsgeCArIDEqMjsKLSAgICAgICAgICAgICAgICAgdTE2KiBsaWR4NCA9IGxhbmUgKyB4ICsgMioyOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKLSAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkMCwgZDJ9LCBbJVtpbjBdXSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMTYge2QxLCBkM30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwIGIvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwCi1pbmRleCAyMzJjY2YzZWZkLi5kNGUzMmVhNTBmIDEwMDY0NAotLS0tIGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3B5cmFtaWQuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvcHlyYW1pZC5jcHAKLUBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKLSAgICAgICAgICAgICBmb3IgKDsgeCA8IHJvaXc4OyB4ICs9IDgpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIDIgKiB4KTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgICAgICBfX2FzbV9fICgKLSAgICAgICAgICAgICAgICAgICAgICJ2bGQyLjE2IHtkMC1kM30sIFslW2luMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMi4xNiB7ZDQtZDd9LCBbJVtpbjRdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTUzOCw3ICs1MzgsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAotICAgICAgICAgICAgIGZvciAoOyB4IDwgcm9pdzQ7IHggKz0gNCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChsYW5lICsgMiAqIHgpOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2QwLWQzfSwgWyVbaW4wXV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAgICAgInZsZDIuMzIge2Q0LWQ3fSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIGdhdXNzaWFuUHlyYW1pZERvd24oY29uc3QgU2l6ZTJEICZzcmNTaXplLAotICAgICBzdGQ6OnZlY3RvcjxmMzI+IF9idWYoY24qKHNyY1NpemUud2lkdGggKyA0KSArIDMyL3NpemVvZihmMzIpKTsKLSAgICAgZjMyKiBsYW5lID0gaW50ZXJuYWw6OmFsaWduUHRyKCZfYnVmWzIqY25dLCAzMik7Ci0gCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNwotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiAgX19HTlVDX01JTk9SX18gPCA3ICYmICFkZWZpbmVkKF9fY2xhbmdfXykKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmM2ZDRmMzIgIGFzbSAoInExMSIpID0gdm1vdnFfbl9mMzIoMS41Zik7ICAvLyA2LzQKLSAgICAgcmVnaXN0ZXIgZmxvYXQzMng0X3QgdmMxZDRmMzIgIGFzbSAoInExMiIpID0gdm1vdnFfbl9mMzIoMC4yNWYpOyAvLyAxLzQKLSAKLUBAIC03MzksNyArNzM5LDcgQEAgdm9pZCBnYXVzc2lhblB5cmFtaWREb3duKGNvbnN0IFNpemUyRCAmc3JjU2l6ZSwKLSAgICAgICAgICAgICBmb3IgKDsgeCA8IHJvaXc0OyB4ICs9IDQpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICBpbnRlcm5hbDo6cHJlZmV0Y2gobGFuZSArIDIgKiB4KTsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA3Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDcgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCi0gICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDAtZDN9LCBbJVtpbjBdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0gICAgICAgICAgICAgICAgICAgICAidmxkMi4zMiB7ZDgtZDExfSwgWyVbaW40XV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi1kaWZmIC0tZ2l0IGEvM3JkcGFydHkvY2Fyb3RlbmUvc3JjL3NjaGFyci5jcHAgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAotaW5kZXggOGQzYjYzMjhiMS4uMzZmNmIyMjc2ZSAxMDA2NDQKLS0tLSBhLzNyZHBhcnR5L2Nhcm90ZW5lL3NyYy9zY2hhcnIuY3BwCi0rKysgYi8zcmRwYXJ0eS9jYXJvdGVuZS9zcmMvc2NoYXJyLmNwcAotQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjaGFyckRlcml2KGNvbnN0IFNpemUyRCAmc2l6ZSwgczMyIGNuLAotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MCArIHgpOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MSArIHgpOwotICAgICAgICAgICAgIGludGVybmFsOjpwcmVmZXRjaChzcm93MiArIHgpOwotLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDcKLSsjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgIF9fR05VQ19NSU5PUl9fIDwgNyAmJiAhZGVmaW5lZChfX2NsYW5nX18pCi0gICAgICAgICAgICAgX19hc21fXyAoCi0gICAgICAgICAgICAgICAgICJ2bGQxLjgge2QwfSwgWyVbc3JjMF1dICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcblx0IgotICAgICAgICAgICAgICAgICAidmxkMS44IHtkMn0sIFslW3NyYzJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLUBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBTY2hhcnJEZXJpdihjb25zdCBTaXplMkQgJnNpemUsIHMzMiBjbiwKLSAgICAgICAgIHggPSAwOwotICAgICAgICAgZm9yKCA7IHggPCByb2l3ODsgeCArPSA4ICkKLSAgICAgICAgIHsKLS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA2Ci0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA9PSA0ICYmICBfX0dOVUNfTUlOT1JfXyA8IDYgJiYgIWRlZmluZWQoX19jbGFuZ19fKQotICAgICAgICAgICAgIF9fYXNtX18gKAotICAgICAgICAgICAgICAgICAidmxkMS4xNiB7ZDQtZDV9LCBbJVtzMnB0cl1dICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5cdCIKLSAgICAgICAgICAgICAgICAgInZsZDEuMTYge2Q4LWQ5fSwgWyVbczRwdHJdXSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuXHQiCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItaW1nY29kZWNzLXJlZmFjdG9yaW5nLWltcHJvdmUtY29kZS1xdWFsaXR5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAyLWltZ2NvZGVjcy1yZWZhY3RvcmluZy1pbXByb3ZlLWNvZGUtcXVhbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzlmMzNhZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDItaW1nY29kZWNzLXJlZmFjdG9yaW5nLWltcHJvdmUtY29kZS1xdWFsaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjU2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvOTM3Ni9jb21taXRzLzk5OWY0MWZiNGY0YWE5NGEwY2I0NzI1NjkxOWFlOGI1YzI5Y2E1ZjNdCi0KLUZpeCBDVkVzIGZvciBvcGVuY3YgMy4zOgotCi0qIENWRS0yMDE3LTEyNTk3Ci0qIENWRS0yMDE3LTEyNTk4Ci0qIENWRS0yMDE3LTEyNTk5Ci0qIENWRS0yMDE3LTEyNjAwCi0qIENWRS0yMDE3LTEyNjAxCi0qIENWRS0yMDE3LTEyNjAyCi0qIENWRS0yMDE3LTEyNjAzCi0qIENWRS0yMDE3LTEyNjA0Ci0qIENWRS0yMDE3LTEyNjA1Ci0qIENWRS0yMDE3LTEyNjA2Ci0qIENWRS0yMDE3LTEyODYyCi0qIENWRS0yMDE3LTEyODYzCi0qIENWRS0yMDE3LTEyODY0Ci0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1Gcm9tIDk5OWY0MWZiNGY0YWE5NGEwY2I0NzI1NjkxOWFlOGI1YzI5Y2E1ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgQWxla2hpbiA8YWxleGFuZGVyLmEuYWxla2hpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDIyOjA0OjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBpbWdjb2RlY3M6IHJlZmFjdG9yaW5nLCBpbXByb3ZlIGNvZGUgcXVhbGl0eQotCi0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5jcHAgICB8ICAgMiArCi0gbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2JpdHN0cm0uaHBwICAgfCAgMTkgKysrLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcCB8ICAxMyArKy0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcHhtLmNwcCB8IDEyMiArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwICB8IDE2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDIzMSBpbnNlcnRpb25zKCspLCA4OSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmNwcAotaW5kZXggYTdlMTg3ZmEwLi4wYTg5NDFhZWMgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5jcHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmNwcAotQEAgLTIwOSw2ICsyMDksOCBAQCBpbnQgIFJMQnl0ZVN0cmVhbTo6Z2V0Qnl0ZSgpCi0gICAgICAgICBjdXJyZW50ID0gbV9jdXJyZW50OwotICAgICB9Ci0gCi0rICAgIENWX0Fzc2VydChjdXJyZW50IDwgbV9lbmQpOwotKwotICAgICB2YWwgPSAqKCh1Y2hhciopY3VycmVudCk7Ci0gICAgIG1fY3VycmVudCA9IGN1cnJlbnQgKyAxOwotICAgICByZXR1cm4gdmFsOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmhwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmhwcAotaW5kZXggNDY1YzBhODQ3Li4yNjk0Nzk3MWYgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvYml0c3RybS5ocHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9iaXRzdHJtLmhwcAotQEAgLTQ4LDEzICs0OCwyMCBAQAotIG5hbWVzcGFjZSBjdgotIHsKLSAKLS1lbnVtCi0tewotLSAgICBSQlNfVEhST1dfRU9TPS0xMjMsICAvLyA8ZW5kIG9mIHN0cmVhbT4gZXhjZXB0aW9uIGNvZGUKLS0gICAgUkJTX1RIUk9XX0ZPUkI9LTEyNCwgIC8vIDxmb3JyYmlkZGVuIGh1ZmZtYW4gY29kZT4gZXhjZXB0aW9uIGNvZGUKLS0gICAgUkJTX0hVRkZfRk9SQj0yMDQ3LCAgLy8gZm9ycmJpZGRlbiBodWZmbWFuIGNvZGUgInZhbHVlIgotLSAgICBSQlNfQkFEX0hFQURFUj0tMTI1IC8vIGludmFsaWQgaGVhZGVyCi0rI2RlZmluZSBERUNMQVJFX1JCU19FWENFUFRJT04obmFtZSkgXAotK2NsYXNzIFJCU18gIyMgbmFtZSAjIyBfRXhjZXB0aW9uIDogcHVibGljIGN2OjpFeGNlcHRpb24gXAotK3sgXAotK3B1YmxpYzogXAotKyAgICBSQlNfICMjIG5hbWUgIyMgX0V4Y2VwdGlvbihpbnQgY29kZV8sIGNvbnN0IFN0cmluZyYgZXJyXywgY29uc3QgU3RyaW5nJiBmdW5jXywgY29uc3QgU3RyaW5nJiBmaWxlXywgaW50IGxpbmVfKSA6IFwKLSsgICAgICAgIGN2OjpFeGNlcHRpb24oY29kZV8sIGVycl8sIGZ1bmNfLCBmaWxlXywgbGluZV8pIFwKLSsgICAge30gXAotIH07Ci0rREVDTEFSRV9SQlNfRVhDRVBUSU9OKFRIUk9XX0VPUykKLSsjZGVmaW5lIFJCU19USFJPV19FT1MgUkJTX1RIUk9XX0VPU19FeGNlcHRpb24oY3Y6OkVycm9yOjpTdHNFcnJvciwgIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IHN0cmVhbSIsIENWX0Z1bmMsIF9fRklMRV9fLCBfX0xJTkVfXykKLStERUNMQVJFX1JCU19FWENFUFRJT04oVEhST1dfRk9SQikKLSsjZGVmaW5lIFJCU19USFJPV19GT1JCIFJCU19USFJPV19GT1JCX0V4Y2VwdGlvbihjdjo6RXJyb3I6OlN0c0Vycm9yLCAiRm9ycmJpZGRlbiBodWZmbWFuIGNvZGUiLCBDVl9GdW5jLCBfX0ZJTEVfXywgX19MSU5FX18pCi0rREVDTEFSRV9SQlNfRVhDRVBUSU9OKEJBRF9IRUFERVIpCi0rI2RlZmluZSBSQlNfQkFEX0hFQURFUiBSQlNfQkFEX0hFQURFUl9FeGNlcHRpb24oY3Y6OkVycm9yOjpTdHNFcnJvciwgIkludmFsaWQgaGVhZGVyIiwgQ1ZfRnVuYywgX19GSUxFX18sIF9fTElORV9fKQotIAotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB1bG9uZzsKLSAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCi1pbmRleCA4NmNhY2QzMTYuLjI1N2Y5N2MyZCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAotQEAgLTExOCw4ICsxMTgsOSBAQCBib29sICBCbXBEZWNvZGVyOjpyZWFkSGVhZGVyKCkKLSAKLSAgICAgICAgICAgICAgICAgaWYoIG1fYnBwIDw9IDggKQotICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICBtZW1zZXQoIG1fcGFsZXR0ZSwgMCwgc2l6ZW9mKG1fcGFsZXR0ZSkpOwotLSAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKCBtX3BhbGV0dGUsIChjbHJ1c2VkID09IDA/IDE8PG1fYnBwIDogY2xydXNlZCkqNCApOwotKyAgICAgICAgICAgICAgICAgICAgQ1ZfQXNzZXJ0KGNscnVzZWQgPCAyNTYpOwotKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KG1fcGFsZXR0ZSwgMCwgc2l6ZW9mKG1fcGFsZXR0ZSkpOwotKyAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKG1fcGFsZXR0ZSwgKGNscnVzZWQgPT0gMD8gMTw8bV9icHAgOiBjbHJ1c2VkKSo0ICk7Ci0gICAgICAgICAgICAgICAgICAgICBpc2NvbG9yID0gSXNDb2xvclBhbGV0dGUoIG1fcGFsZXR0ZSwgbV9icHAgKTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBlbHNlIGlmKCBtX2JwcCA9PSAxNiAmJiBtX3JsZV9jb2RlID09IEJNUF9CSVRGSUVMRFMgKQotQEAgLTI5MCw3ICsyOTEsOSBAQCBib29sICBCbXBEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiggY29kZSA+IDIgKSAvLyBhYnNvbHV0ZSBtb2RlCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGRhdGEgKyBjb2RlKm5jaCA+IGxpbmVfZW5kICkgZ290byBkZWNvZGVfcmxlNF9iYWQ7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKCBzcmMsICgoKGNvZGUgKyAxKT4+MSkgKyAxKSAmIC0yICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN6ID0gKCgoY29kZSArIDEpPj4xKSArIDEpICYgKH4xKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBDVl9Bc3NlcnQoKHNpemVfdClzeiA8IF9zcmMuc2l6ZSgpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoc3JjLCBzeik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGNvbG9yICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxDb2xvclJvdzQoIGRhdGEsIHNyYywgY29kZSwgbV9wYWxldHRlICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotQEAgLTM3OSw3ICszODIsOSBAQCBkZWNvZGVfcmxlNF9iYWQ6IDsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiggZGF0YSArIGNvZGUzID4gbGluZV9lbmQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGRlY29kZV9ybGU4X2JhZDsKLS0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoIHNyYywgKGNvZGUgKyAxKSAmIC0yICk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN6ID0gKGNvZGUgKyAxKSAmICh+MSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgQ1ZfQXNzZXJ0KChzaXplX3Qpc3ogPCBfc3JjLnNpemUoKSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKHNyYywgc3opOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBjb2xvciApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsQ29sb3JSb3c4KCBkYXRhLCBzcmMsIGNvZGUsIG1fcGFsZXR0ZSApOwotICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcHhtLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9weG0uY3BwCi1pbmRleCAxNzUwY2I3MDUuLjY4YmQ4ZmQ5MyAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9weG0uY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcHhtLmNwcAotQEAgLTQzLDUwICs0Myw1OCBAQAotICNpbmNsdWRlICJwcmVjb21wLmhwcCIKLSAjaW5jbHVkZSAidXRpbHMuaHBwIgotICNpbmNsdWRlICJncmZtdF9weG0uaHBwIgotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSAKLSBuYW1lc3BhY2UgY3YKLSB7Ci0gCi0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBQP00gcmVhZGVyIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotIAotLXN0YXRpYyBpbnQgUmVhZE51bWJlciggUkxCeXRlU3RyZWFtJiBzdHJtLCBpbnQgbWF4ZGlnaXRzICkKLStzdGF0aWMgaW50IFJlYWROdW1iZXIoUkxCeXRlU3RyZWFtJiBzdHJtLCBpbnQgbWF4ZGlnaXRzID0gMCkKLSB7Ci0gICAgIGludCBjb2RlOwotLSAgICBpbnQgdmFsID0gMDsKLSsgICAgaW50NjQgdmFsID0gMDsKLSAgICAgaW50IGRpZ2l0cyA9IDA7Ci0gCi0gICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKLSAKLS0gICAgaWYoICFpc2RpZ2l0KGNvZGUpKQotKyAgICB3aGlsZSAoIWlzZGlnaXQoY29kZSkpCi0gICAgIHsKLS0gICAgICAgIGRvCi0rICAgICAgICBpZiAoY29kZSA9PSAnIycgKQotICAgICAgICAgewotLSAgICAgICAgICAgIGlmKCBjb2RlID09ICcjJyApCi0rICAgICAgICAgICAgZG8KLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGRvCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGNvZGUgPSBzdHJtLmdldEJ5dGUoKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICB3aGlsZSggY29kZSAhPSAnXG4nICYmIGNvZGUgIT0gJ1xyJyApOwotKyAgICAgICAgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7Ci0gICAgICAgICAgICAgfQotLQotKyAgICAgICAgICAgIHdoaWxlIChjb2RlICE9ICdcbicgJiYgY29kZSAhPSAnXHInKTsKLSAgICAgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7Ci0tCi0tICAgICAgICAgICAgd2hpbGUoIGlzc3BhY2UoY29kZSkpCi0rICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmIChpc3NwYWNlKGNvZGUpKQotKyAgICAgICAgewotKyAgICAgICAgICAgIHdoaWxlIChpc3NwYWNlKGNvZGUpKQotICAgICAgICAgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7Ci0gICAgICAgICB9Ci0tICAgICAgICB3aGlsZSggIWlzZGlnaXQoIGNvZGUgKSk7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICB7Ci0rI2lmIDEKLSsgICAgICAgICAgICBDVl9FcnJvck5vUmV0dXJuXyhFcnJvcjo6U3RzRXJyb3IsICgiUFhNOiBVbmV4cGVjdGVkIGNvZGUgaW4gUmVhZE51bWJlcigpOiAweCV4ICglZCkiLCBjb2RlLCBjb2RlKSk7Ci0rI2Vsc2UKLSsgICAgICAgICAgICBjb2RlID0gc3RybS5nZXRCeXRlKCk7Ci0rI2VuZGlmCi0rICAgICAgICB9Ci0gICAgIH0KLSAKLSAgICAgZG8KLSAgICAgewotLSAgICAgICAgdmFsID0gdmFsKjEwICsgY29kZSAtICcwJzsKLS0gICAgICAgIGlmKCArK2RpZ2l0cyA+PSBtYXhkaWdpdHMgKSBicmVhazsKLSsgICAgICAgIHZhbCA9IHZhbCoxMCArIChjb2RlIC0gJzAnKTsKLSsgICAgICAgIENWX0Fzc2VydCh2YWwgPD0gSU5UX01BWCAmJiAiUFhNOiBSZWFkTnVtYmVyKCk6IHJlc3VsdCBpcyB0b28gbGFyZ2UiKTsKLSsgICAgICAgIGRpZ2l0cysrOwotKyAgICAgICAgaWYgKG1heGRpZ2l0cyAhPSAwICYmIGRpZ2l0cyA+PSBtYXhkaWdpdHMpIGJyZWFrOwotICAgICAgICAgY29kZSA9IHN0cm0uZ2V0Qnl0ZSgpOwotICAgICB9Ci0tICAgIHdoaWxlKCBpc2RpZ2l0KGNvZGUpKTsKLSsgICAgd2hpbGUgKGlzZGlnaXQoY29kZSkpOwotIAotLSAgICByZXR1cm4gdmFsOwotKyAgICByZXR1cm4gKGludCl2YWw7Ci0gfQotIAotIAotQEAgLTEyMiwxMyArMTMwLDEzIEBAIEltYWdlRGVjb2RlciBQeE1EZWNvZGVyOjpuZXdEZWNvZGVyKCkgY29uc3QKLSAgICAgcmV0dXJuIG1ha2VQdHI8UHhNRGVjb2Rlcj4oKTsKLSB9Ci0gCi0tdm9pZCAgUHhNRGVjb2Rlcjo6Y2xvc2UoKQotK3ZvaWQgUHhNRGVjb2Rlcjo6Y2xvc2UoKQotIHsKLSAgICAgbV9zdHJtLmNsb3NlKCk7Ci0gfQotIAotIAotLWJvb2wgIFB4TURlY29kZXI6OnJlYWRIZWFkZXIoKQotK2Jvb2wgUHhNRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gewotICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotIAotQEAgLTE1OCwxMCArMTY2LDEwIEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWRIZWFkZXIoKQotICAgICAgICAgbV9iaW5hcnkgPSBjb2RlID49ICc0JzsKLSAgICAgICAgIG1fdHlwZSA9IG1fYnBwID4gOCA/IENWXzhVQzMgOiBDVl84VUMxOwotIAotLSAgICAgICAgbV93aWR0aCA9IFJlYWROdW1iZXIoIG1fc3RybSwgSU5UX01BWCApOwotLSAgICAgICAgbV9oZWlnaHQgPSBSZWFkTnVtYmVyKCBtX3N0cm0sIElOVF9NQVggKTsKLSsgICAgICAgIG1fd2lkdGggPSBSZWFkTnVtYmVyKG1fc3RybSk7Ci0rICAgICAgICBtX2hlaWdodCA9IFJlYWROdW1iZXIobV9zdHJtKTsKLSAKLS0gICAgICAgIG1fbWF4dmFsID0gbV9icHAgPT0gMSA/IDEgOiBSZWFkTnVtYmVyKCBtX3N0cm0sIElOVF9NQVggKTsKLSsgICAgICAgIG1fbWF4dmFsID0gbV9icHAgPT0gMSA/IDEgOiBSZWFkTnVtYmVyKG1fc3RybSk7Ci0gICAgICAgICBpZiggbV9tYXh2YWwgPiA2NTUzNSApCi0gICAgICAgICAgICAgdGhyb3cgUkJTX0JBRF9IRUFERVI7Ci0gCi1AQCAtMTc1LDggKzE4MywxNCBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkSGVhZGVyKCkKLSAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgfQotICAgICB9Ci0tICAgIGNhdGNoKC4uLikKLSsgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mKQotKyAgICB7Ci0rICAgICAgICB0aHJvdzsKLSsgICAgfQotKyAgICBjYXRjaCAoLi4uKQotICAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgIlBYTTo6cmVhZEhlYWRlcigpOiB1bmtub3duIEMrKyBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICAgICAgdGhyb3c7Ci0gICAgIH0KLSAKLSAgICAgaWYoICFyZXN1bHQgKQotQEAgLTE4OSwzMyArMjAzLDI4IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWRIZWFkZXIoKQotIH0KLSAKLSAKLS1ib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotK2Jvb2wgUHhNRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKLSB7Ci0gICAgIGludCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKLSAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7Ci0gICAgIFBhbGV0dGVFbnRyeSBwYWxldHRlWzI1Nl07Ci0gICAgIGJvb2wgICByZXN1bHQgPSBmYWxzZTsKLS0gICAgaW50ICBiaXRfZGVwdGggPSBDVl9FTEVNX1NJWkUxKG1fdHlwZSkqODsKLS0gICAgaW50ICBzcmNfcGl0Y2ggPSAobV93aWR0aCptX2JwcCpiaXRfZGVwdGgvOCArIDcpLzg7Ci0rICAgIGNvbnN0IGludCBiaXRfZGVwdGggPSBDVl9FTEVNX1NJWkUxKG1fdHlwZSkqODsKLSsgICAgY29uc3QgaW50IHNyY19waXRjaCA9IGRpdlVwKG1fd2lkdGgqbV9icHAqKGJpdF9kZXB0aC84KSwgOCk7Ci0gICAgIGludCAgbmNoID0gQ1ZfTUFUX0NOKG1fdHlwZSk7Ci0gICAgIGludCAgd2lkdGgzID0gbV93aWR0aCpuY2g7Ci0tICAgIGludCAgaSwgeCwgeTsKLSAKLSAgICAgaWYoIG1fb2Zmc2V0IDwgMCB8fCAhbV9zdHJtLmlzT3BlbmVkKCkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICAgIEF1dG9CdWZmZXI8dWNoYXI+IF9zcmMoc3JjX3BpdGNoICsgMzIpOwotLSAgICB1Y2hhciogc3JjID0gX3NyYzsKLS0gICAgQXV0b0J1ZmZlcjx1Y2hhcj4gX2dyYXlfcGFsZXR0ZTsKLS0gICAgdWNoYXIqIGdyYXlfcGFsZXR0ZSA9IF9ncmF5X3BhbGV0dGU7Ci0rICAgIHVjaGFyIGdyYXlfcGFsZXR0ZVsyNTZdID0gezB9OwotIAotICAgICAvLyBjcmVhdGUgTFVUIGZvciBjb252ZXJ0aW5nIGNvbG9ycwotICAgICBpZiggYml0X2RlcHRoID09IDggKQotICAgICB7Ci0tICAgICAgICBfZ3JheV9wYWxldHRlLmFsbG9jYXRlKG1fbWF4dmFsICsgMSk7Ci0tICAgICAgICBncmF5X3BhbGV0dGUgPSBfZ3JheV9wYWxldHRlOwotKyAgICAgICAgQ1ZfQXNzZXJ0KG1fbWF4dmFsIDwgMjU2KTsKLSAKLS0gICAgICAgIGZvciggaSA9IDA7IGkgPD0gbV9tYXh2YWw7IGkrKyApCi0rICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBtX21heHZhbDsgaSsrKQotICAgICAgICAgICAgIGdyYXlfcGFsZXR0ZVtpXSA9ICh1Y2hhcikoKGkqMjU1L21fbWF4dmFsKV4obV9icHAgPT0gMSA/IDI1NSA6IDApKTsKLSAKLSAgICAgICAgIEZpbGxHcmF5UGFsZXR0ZSggcGFsZXR0ZSwgbV9icHA9PTEgPyAxIDogOCAsIG1fYnBwID09IDEgKTsKLUBAIC0yMjksMTIgKzIzOCwxNiBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgewotICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gMSBCUFAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAgY2FzZSAxOgotKyAgICAgICAgICAgIENWX0Fzc2VydChDVl9NQVRfREVQVEgobV90eXBlKSA9PSBDVl84VSk7Ci0gICAgICAgICAgICAgaWYoICFtX2JpbmFyeSApCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBmb3IoIHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCApCi0rICAgICAgICAgICAgICAgIEF1dG9CdWZmZXI8dWNoYXI+IF9zcmMobV93aWR0aCk7Ci0rICAgICAgICAgICAgICAgIHVjaGFyKiBzcmMgPSBfc3JjOwotKwotKyAgICAgICAgICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG1faGVpZ2h0OyB5KyssIGRhdGEgKz0gaW1nLnN0ZXApCi0gICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGZvciggeCA9IDA7IHggPCBtX3dpZHRoOyB4KysgKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY1t4XSA9IFJlYWROdW1iZXIoIG1fc3RybSwgMSApICE9IDA7Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IG1fd2lkdGg7IHgrKykKLSsgICAgICAgICAgICAgICAgICAgICAgICBzcmNbeF0gPSBSZWFkTnVtYmVyKG1fc3RybSwgMSkgIT0gMDsKLSAKLSAgICAgICAgICAgICAgICAgICAgIGlmKCBjb2xvciApCi0gICAgICAgICAgICAgICAgICAgICAgICAgRmlsbENvbG9yUm93OCggZGF0YSwgc3JjLCBtX3dpZHRoLCBwYWxldHRlICk7Ci1AQCAtMjQ0LDcgKzI1NywxMCBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBmb3IoIHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCApCi0rICAgICAgICAgICAgICAgIEF1dG9CdWZmZXI8dWNoYXI+IF9zcmMoc3JjX3BpdGNoKTsKLSsgICAgICAgICAgICAgICAgdWNoYXIqIHNyYyA9IF9zcmM7Ci0rCi0rICAgICAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCkKLSAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgbV9zdHJtLmdldEJ5dGVzKCBzcmMsIHNyY19waXRjaCApOwotIAotQEAgLTI2MCwxMyArMjc2LDE3IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyA4IEJQUCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgICBjYXNlIDg6Ci0gICAgICAgICBjYXNlIDI0OgotLSAgICAgICAgICAgIGZvciggeSA9IDA7IHkgPCBtX2hlaWdodDsgeSsrLCBkYXRhICs9IGltZy5zdGVwICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBBdXRvQnVmZmVyPHVjaGFyPiBfc3JjKHN0ZDo6bWF4PHNpemVfdD4od2lkdGgzKjIsIHNyY19waXRjaCkpOwotKyAgICAgICAgICAgIHVjaGFyKiBzcmMgPSBfc3JjOwotKwotKyAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgbV9oZWlnaHQ7IHkrKywgZGF0YSArPSBpbWcuc3RlcCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGlmKCAhbV9iaW5hcnkgKQotICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICBmb3IoIHggPSAwOyB4IDwgd2lkdGgzOyB4KysgKQotKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDM7IHgrKykKLSAgICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29kZSA9IFJlYWROdW1iZXIoIG1fc3RybSwgSU5UX01BWCApOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2RlID0gUmVhZE51bWJlcihtX3N0cm0pOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAodW5zaWduZWQpY29kZSA+ICh1bnNpZ25lZCltX21heHZhbCApIGNvZGUgPSBtX21heHZhbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiggYml0X2RlcHRoID09IDggKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNbeF0gPSBncmF5X3BhbGV0dGVbY29kZV07Ci1AQCAtMjc5LDcgKzI5OSw3IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gICAgICAgICAgICAgICAgICAgICBtX3N0cm0uZ2V0Qnl0ZXMoIHNyYywgc3JjX3BpdGNoICk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiggYml0X2RlcHRoID09IDE2ICYmICFpc0JpZ0VuZGlhbigpICkKLSAgICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBmb3IoIHggPSAwOyB4IDwgd2lkdGgzOyB4KysgKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgzOyB4KyspCi0gICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Y2hhciB2ID0gc3JjW3ggKiAyXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjW3ggKiAyXSA9IHNyY1t4ICogMiArIDFdOwotQEAgLTI5MCw3ICszMTAsNyBAQCBib29sICBQeE1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotIAotICAgICAgICAgICAgICAgICBpZiggaW1nLmRlcHRoKCkgPT0gQ1ZfOFUgJiYgYml0X2RlcHRoID09IDE2ICkKLSAgICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgZm9yKCB4ID0gMDsgeCA8IHdpZHRoMzsgeCsrICkKLSsgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgd2lkdGgzOyB4KyspCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHYgPSAoKHVzaG9ydCAqKXNyYylbeF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgc3JjW3hdID0gKHVjaGFyKSh2ID4+IDgpOwotQEAgLTMzMSwxMiArMzUxLDE5IEBAIGJvb2wgIFB4TURlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0gICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgIGFzc2VydCgwKTsKLSsgICAgICAgICAgICBDVl9FcnJvck5vUmV0dXJuKEVycm9yOjpTdHNFcnJvciwgIm1fYnBwIGlzIG5vdCBzdXBwb3J0ZWQiKTsKLSAgICAgICAgIH0KLSAgICAgfQotLSAgICBjYXRjaCguLi4pCi0rICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJikKLSsgICAgewotKyAgICAgICAgdGhyb3c7Ci0rICAgIH0KLSsgICAgY2F0Y2ggKC4uLikKLSAgICAgewotKyAgICAgICAgc3RkOjpjZXJyIDw8ICJQWE06OnJlYWREYXRhKCk6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKLSsgICAgICAgIHRocm93OwotICAgICB9Ci0gCi0gICAgIHJldHVybiByZXN1bHQ7Ci1AQCAtNDEyLDggKzQzOSw5IEBAIGJvb2wgIFB4TUVuY29kZXI6OndyaXRlKCBjb25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zICkKLSAgICAgY2hhciogYnVmZmVyID0gX2J1ZmZlcjsKLSAKLSAgICAgLy8gd3JpdGUgaGVhZGVyOwotLSAgICBzcHJpbnRmKCBidWZmZXIsICJQJWNcbiVkICVkXG4lZFxuIiwKLSsgICAgc3ByaW50ZiggYnVmZmVyLCAiUCVjXG4jIEdlbmVyYXRlZCBieSBPcGVuQ1YgJXNcbiVkICVkXG4lZFxuIiwKLSAgICAgICAgICAgICAgJzInICsgKGNoYW5uZWxzID4gMSA/IDEgOiAwKSArIChpc0JpbmFyeSA/IDMgOiAwKSwKLSsgICAgICAgICAgICAgQ1ZfVkVSU0lPTiwKLSAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgKDEgPDwgZGVwdGgpIC0gMSApOwotIAotICAgICBzdHJtLnB1dEJ5dGVzKCBidWZmZXIsIChpbnQpc3RybGVuKGJ1ZmZlcikgKTsKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNwcAotaW5kZXggM2IyMzY2MjE3Li41ZWU0Y2EzNTQgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwCi1AQCAtNTUsNiArNTUsMjcgQEAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSBDb2RlY3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLStuYW1lc3BhY2UgY3YgewotKwotKy8vIFRPRE8gQWRkIHJ1bnRpbWUgY29uZmlndXJhdGlvbgotKyNkZWZpbmUgQ1ZfSU9fTUFYX0lNQUdFX1BBUkFNUyAoNTApCi0rI2RlZmluZSBDVl9JT19NQVhfSU1BR0VfV0lEVEggKDE8PDIwKQotKyNkZWZpbmUgQ1ZfSU9fTUFYX0lNQUdFX0hFSUdIVCAoMTw8MjApCi0rI2RlZmluZSBDVl9JT19NQVhfSU1BR0VfUElYRUxTICgxPDwzMCkgLy8gMSBHaWdhcGl4ZWwKLSsKLStzdGF0aWMgU2l6ZSB2YWxpZGF0ZUlucHV0SW1hZ2VTaXplKGNvbnN0IFNpemUmIHNpemUpCi0rewotKyAgICBDVl9Bc3NlcnQoc2l6ZS53aWR0aCA+IDApOwotKyAgICBDVl9Bc3NlcnQoc2l6ZS53aWR0aCA8PSBDVl9JT19NQVhfSU1BR0VfV0lEVEgpOwotKyAgICBDVl9Bc3NlcnQoc2l6ZS5oZWlnaHQgPiAwKTsKLSsgICAgQ1ZfQXNzZXJ0KHNpemUuaGVpZ2h0IDw9IENWX0lPX01BWF9JTUFHRV9IRUlHSFQpOwotKyAgICB1aW50NjQgcGl4ZWxzID0gKHVpbnQ2NClzaXplLndpZHRoICogKHVpbnQ2NClzaXplLmhlaWdodDsKLSsgICAgQ1ZfQXNzZXJ0KHBpeGVscyA8PSBDVl9JT19NQVhfSU1BR0VfUElYRUxTKTsKLSsgICAgcmV0dXJuIHNpemU7Ci0rfQotKwotKwotIG5hbWVzcGFjZSB7Ci0gCi0gY2xhc3MgQnl0ZVN0cmVhbUJ1ZmZlcjogcHVibGljIHN0ZDo6c3RyZWFtYnVmCi1AQCAtOTQsOSArMTE1LDYgQEAgcHJvdGVjdGVkOgotIAotIH0KLSAKLS1uYW1lc3BhY2UgY3YKLS17Ci0tCi0gLyoqCi0gICogQHN0cnVjdCBJbWFnZUNvZGVjSW5pdGlhbGl6ZXIKLSAgKgotQEAgLTQwOCwxNCArNDI2LDI2IEBAIGltcmVhZF8oIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludCBmbGFncywgaW50IGhkcnR5cGUsIE1hdCogbWF0PTAgKQotICAgICAvLy8gc2V0IHRoZSBmaWxlbmFtZSBpbiB0aGUgZHJpdmVyCi0gICAgIGRlY29kZXItPnNldFNvdXJjZSggZmlsZW5hbWUgKTsKLSAKLS0gICAvLyByZWFkIHRoZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IHN1Y2NlZWRzCi0tICAgaWYoICFkZWNvZGVyLT5yZWFkSGVhZGVyKCkgKQotKyAgICB0cnkKLSsgICAgewotKyAgICAgICAgLy8gcmVhZCB0aGUgaGVhZGVyIHRvIG1ha2Ugc3VyZSBpdCBzdWNjZWVkcwotKyAgICAgICAgaWYoICFkZWNvZGVyLT5yZWFkSGVhZGVyKCkgKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQotKyAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZF8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKLSAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7Ci0rICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotIAotICAgICAvLyBlc3RhYmxpc2hlZCB0aGUgcmVxdWlyZWQgaW5wdXQgaW1hZ2Ugc2l6ZQotLSAgICBDdlNpemUgc2l6ZTsKLS0gICAgc2l6ZS53aWR0aCA9IGRlY29kZXItPndpZHRoKCk7Ci0tICAgIHNpemUuaGVpZ2h0ID0gZGVjb2Rlci0+aGVpZ2h0KCk7Ci0rICAgIFNpemUgc2l6ZSA9IHZhbGlkYXRlSW5wdXRJbWFnZVNpemUoU2l6ZShkZWNvZGVyLT53aWR0aCgpLCBkZWNvZGVyLT5oZWlnaHQoKSkpOwotIAotICAgICAvLyBncmFiIHRoZSBkZWNvZGVkIHR5cGUKLSAgICAgaW50IHR5cGUgPSBkZWNvZGVyLT50eXBlKCk7Ci1AQCAtNDUxLDcgKzQ4MSwyMSBAQCBpbXJlYWRfKCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIGludCBoZHJ0eXBlLCBNYXQqIG1hdD0wICkKLSAgICAgfQotIAotICAgICAvLyByZWFkIHRoZSBpbWFnZSBkYXRhCi0tICAgIGlmKCAhZGVjb2Rlci0+cmVhZERhdGEoICpkYXRhICkpCi0rICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotKyAgICB0cnkKLSsgICAgewotKyAgICAgICAgaWYgKGRlY29kZXItPnJlYWREYXRhKCpkYXRhKSkKLSsgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKLSsgICAgfQotKyAgICBjYXRjaCAoY29uc3QgY3Y6OkV4Y2VwdGlvbiYgZSkKLSsgICAgewotKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICB9Ci0rICAgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICB9Ci0rICAgIGlmICghc3VjY2VzcykKLSAgICAgewotICAgICAgICAgY3ZSZWxlYXNlSW1hZ2UoICZpbWFnZSApOwotICAgICAgICAgY3ZSZWxlYXNlTWF0KCAmbWF0cml4ICk7Ci1AQCAtNTA0LDggKzU0OCwyMiBAQCBpbXJlYWRtdWx0aV8oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgaW50IGZsYWdzLCBzdGQ6OnZlY3RvcjxNYXQ+JiBtYXRzKQotICAgICBkZWNvZGVyLT5zZXRTb3VyY2UoZmlsZW5hbWUpOwotIAotICAgICAvLyByZWFkIHRoZSBoZWFkZXIgdG8gbWFrZSBzdXJlIGl0IHN1Y2NlZWRzCi0tICAgIGlmICghZGVjb2Rlci0+cmVhZEhlYWRlcigpKQotKyAgICB0cnkKLSsgICAgewotKyAgICAgICAgLy8gcmVhZCB0aGUgaGVhZGVyIHRvIG1ha2Ugc3VyZSBpdCBzdWNjZWVkcwotKyAgICAgICAgaWYoICFkZWNvZGVyLT5yZWFkSGVhZGVyKCkgKQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQotKyAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgImltcmVhZG11bHRpXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRtdWx0aV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGhlYWRlcjogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSAKLSAgICAgZm9yICg7OykKLSAgICAgewotQEAgLTUyMywxNyArNTgxLDMyIEBAIGltcmVhZG11bHRpXyhjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQgZmxhZ3MsIHN0ZDo6dmVjdG9yPE1hdD4mIG1hdHMpCi0gICAgICAgICAgICAgICAgIHR5cGUgPSBDVl9NQUtFVFlQRShDVl9NQVRfREVQVEgodHlwZSksIDEpOwotICAgICAgICAgfQotIAotKyAgICAgICAgLy8gZXN0YWJsaXNoZWQgdGhlIHJlcXVpcmVkIGlucHV0IGltYWdlIHNpemUKLSsgICAgICAgIFNpemUgc2l6ZSA9IHZhbGlkYXRlSW5wdXRJbWFnZVNpemUoU2l6ZShkZWNvZGVyLT53aWR0aCgpLCBkZWNvZGVyLT5oZWlnaHQoKSkpOwotKwotICAgICAgICAgLy8gcmVhZCB0aGUgaW1hZ2UgZGF0YQotLSAgICAgICAgTWF0IG1hdChkZWNvZGVyLT5oZWlnaHQoKSwgZGVjb2Rlci0+d2lkdGgoKSwgdHlwZSk7Ci0tICAgICAgICBpZiAoIWRlY29kZXItPnJlYWREYXRhKG1hdCkpCi0rICAgICAgICBNYXQgbWF0KHNpemUuaGVpZ2h0LCBzaXplLndpZHRoLCB0eXBlKTsKLSsgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotKyAgICAgICAgdHJ5Ci0gICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gb3B0aW9uYWxseSByb3RhdGUgdGhlIGRhdGEgaWYgRVhJRicgb3JpZW50YXRpb24gZmxhZyBzYXlzIHNvCi0tICAgICAgICAgICAgaWYoIChmbGFncyAmIElNUkVBRF9JR05PUkVfT1JJRU5UQVRJT04pID09IDAgJiYgZmxhZ3MgIT0gSU1SRUFEX1VOQ0hBTkdFRCApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBBcHBseUV4aWZPcmllbnRhdGlvbihmaWxlbmFtZSwgbWF0KTsKLS0gICAgICAgICAgICB9Ci0tCi0rICAgICAgICAgICAgaWYgKGRlY29kZXItPnJlYWREYXRhKG1hdCkpCi0rICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotKyAgICAgICAgfQotKyAgICAgICAgY2F0Y2ggKGNvbnN0IGN2OjpFeGNlcHRpb24mIGUpCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJpbXJlYWRtdWx0aV8oJyIgPDwgZmlsZW5hbWUgPDwgIicpOiBjYW4ndCByZWFkIGRhdGE6ICIgPDwgZS53aGF0KCkgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7Ci0rICAgICAgICB9Ci0rICAgICAgICBjYXRjaCAoLi4uKQotKyAgICAgICAgewotKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1yZWFkbXVsdGlfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBkYXRhOiB1bmtub3duIGV4Y2VwdGlvbiIgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICAgYnJlYWs7Ci0rCi0rICAgICAgICAvLyBvcHRpb25hbGx5IHJvdGF0ZSB0aGUgZGF0YSBpZiBFWElGJyBvcmllbnRhdGlvbiBmbGFnIHNheXMgc28KLSsgICAgICAgIGlmKCAoZmxhZ3MgJiBJTVJFQURfSUdOT1JFX09SSUVOVEFUSU9OKSA9PSAwICYmIGZsYWdzICE9IElNUkVBRF9VTkNIQU5HRUQgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIEFwcGx5RXhpZk9yaWVudGF0aW9uKGZpbGVuYW1lLCBtYXQpOwotICAgICAgICAgfQotIAotICAgICAgICAgbWF0cy5wdXNoX2JhY2sobWF0KTsKLUBAIC02MTYsNiArNjg5LDcgQEAgc3RhdGljIGJvb2wgaW13cml0ZV8oIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IE1hdCYgaW1hZ2UsCi0gICAgIH0KLSAKLSAgICAgZW5jb2Rlci0+c2V0RGVzdGluYXRpb24oIGZpbGVuYW1lICk7Ci0rICAgIENWX0Fzc2VydChwYXJhbXMuc2l6ZSgpIDw9IENWX0lPX01BWF9JTUFHRV9QQVJBTVMqMik7Ci0gICAgIGJvb2wgY29kZSA9IGVuY29kZXItPndyaXRlKCAqcGltYWdlLCBwYXJhbXMgKTsKLSAKLSAgICAgLy8gICAgQ1ZfQXNzZXJ0KCBjb2RlICk7Ci1AQCAtNjYzLDIyICs3MzcsMzUgQEAgaW1kZWNvZGVfKCBjb25zdCBNYXQmIGJ1ZiwgaW50IGZsYWdzLCBpbnQgaGRydHlwZSwgTWF0KiBtYXQ9MCApCi0gICAgICAgICBkZWNvZGVyLT5zZXRTb3VyY2UoZmlsZW5hbWUpOwotICAgICB9Ci0gCi0tICAgIGlmKCAhZGVjb2Rlci0+cmVhZEhlYWRlcigpICkKLSsgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0rICAgIHRyeQotKyAgICB7Ci0rICAgICAgICBpZiAoZGVjb2Rlci0+cmVhZEhlYWRlcigpKQotKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotKyAgICB9Ci0rICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQotKyAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgImltZGVjb2RlXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgaGVhZGVyOiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICB9Ci0rICAgIGNhdGNoICguLi4pCi0rICAgIHsKLSsgICAgICAgIHN0ZDo6Y2VyciA8PCAiaW1kZWNvZGVfKCciIDw8IGZpbGVuYW1lIDw8ICInKTogY2FuJ3QgcmVhZCBoZWFkZXI6IHVua25vd24gZXhjZXB0aW9uIiA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKLSsgICAgfQotKyAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgIHsKLSAgICAgICAgIGRlY29kZXIucmVsZWFzZSgpOwotLSAgICAgICAgaWYgKCAhZmlsZW5hbWUuZW1wdHkoKSApCi0rICAgICAgICBpZiAoIWZpbGVuYW1lLmVtcHR5KCkpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgaWYgKCByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkgIT0gMCApCi0rICAgICAgICAgICAgaWYgKDAgIT0gcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgQ1ZfRXJyb3IoIENWX1N0c0Vycm9yLCAidW5hYmxlIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZSIgKTsKLSsgICAgICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJ1bmFibGUgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlOiIgPDwgZmlsZW5hbWUgPDwgc3RkOjplbmRsIDw8IHN0ZDo6Zmx1c2g7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLS0gICAgQ3ZTaXplIHNpemU7Ci0tICAgIHNpemUud2lkdGggPSBkZWNvZGVyLT53aWR0aCgpOwotLSAgICBzaXplLmhlaWdodCA9IGRlY29kZXItPmhlaWdodCgpOwotKyAgICAvLyBlc3RhYmxpc2hlZCB0aGUgcmVxdWlyZWQgaW5wdXQgaW1hZ2Ugc2l6ZQotKyAgICBTaXplIHNpemUgPSB2YWxpZGF0ZUlucHV0SW1hZ2VTaXplKFNpemUoZGVjb2Rlci0+d2lkdGgoKSwgZGVjb2Rlci0+aGVpZ2h0KCkpKTsKLSAKLSAgICAgaW50IHR5cGUgPSBkZWNvZGVyLT50eXBlKCk7Ci0gICAgIGlmKCAoZmxhZ3MgJiBJTVJFQURfTE9BRF9HREFMKSAhPSBJTVJFQURfTE9BRF9HREFMICYmIGZsYWdzICE9IElNUkVBRF9VTkNIQU5HRUQgKQotQEAgLTcxMiwxNyArNzk5LDMwIEBAIGltZGVjb2RlXyggY29uc3QgTWF0JiBidWYsIGludCBmbGFncywgaW50IGhkcnR5cGUsIE1hdCogbWF0PTAgKQotICAgICAgICAgdGVtcCA9IGN2YXJyVG9NYXQoaW1hZ2UpOwotICAgICB9Ci0gCi0tICAgIGJvb2wgY29kZSA9IGRlY29kZXItPnJlYWREYXRhKCAqZGF0YSApOwotKyAgICBzdWNjZXNzID0gZmFsc2U7Ci0rICAgIHRyeQotKyAgICB7Ci0rICAgICAgICBpZiAoZGVjb2Rlci0+cmVhZERhdGEoKmRhdGEpKQotKyAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlOwotKyAgICB9Ci0rICAgIGNhdGNoIChjb25zdCBjdjo6RXhjZXB0aW9uJiBlKQotKyAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgImltZGVjb2RlXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGwgPDwgc3RkOjpmbHVzaDsKLSsgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgICBzdGQ6OmNlcnIgPDwgImltZGVjb2RlXygnIiA8PCBmaWxlbmFtZSA8PCAiJyk6IGNhbid0IHJlYWQgZGF0YTogdW5rbm93biBleGNlcHRpb24iIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotKyAgICB9Ci0gICAgIGRlY29kZXIucmVsZWFzZSgpOwotLSAgICBpZiAoICFmaWxlbmFtZS5lbXB0eSgpICkKLSsgICAgaWYgKCFmaWxlbmFtZS5lbXB0eSgpKQotICAgICB7Ci0tICAgICAgICBpZiAoIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSAhPSAwICkKLSsgICAgICAgIGlmICgwICE9IHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBDVl9FcnJvciggQ1ZfU3RzRXJyb3IsICJ1bmFibGUgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlIiApOwotKyAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAidW5hYmxlIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZToiIDw8IGZpbGVuYW1lIDw8IHN0ZDo6ZW5kbCA8PCBzdGQ6OmZsdXNoOwotICAgICAgICAgfQotICAgICB9Ci0gCi0tICAgIGlmKCAhY29kZSApCi0rICAgIGlmICghc3VjY2VzcykKLSAgICAgewotICAgICAgICAgY3ZSZWxlYXNlSW1hZ2UoICZpbWFnZSApOwotICAgICAgICAgY3ZSZWxlYXNlTWF0KCAmbWF0cml4ICk7Ci1AQCAtODU5LDcgKzk1OSw3IEBAIGN2U2F2ZUltYWdlKCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgY29uc3QgQ3ZBcnIqIGFyciwgY29uc3QgaW50KiBfcGFyYW1zICkKLSAgICAgaWYoIF9wYXJhbXMgKQotICAgICB7Ci0gICAgICAgICBmb3IoIDsgX3BhcmFtc1tpXSA+IDA7IGkgKz0gMiApCi0tICAgICAgICAgICAgOwotKyAgICAgICAgICAgIENWX0Fzc2VydChpIDwgQ1ZfSU9fTUFYX0lNQUdFX1BBUkFNUyoyKTsgLy8gTGltaXQgbnVtYmVyIG9mIHBhcmFtcyBmb3Igc2VjdXJpdHkgcmVhc29ucwotICAgICB9Ci0gICAgIHJldHVybiBjdjo6aW13cml0ZV8oZmlsZW5hbWUsIGN2OjpjdmFyclRvTWF0KGFyciksCi0gICAgICAgICBpID4gMCA/IHN0ZDo6dmVjdG9yPGludD4oX3BhcmFtcywgX3BhcmFtcytpKSA6IHN0ZDo6dmVjdG9yPGludD4oKSwKLUBAIC04OTAsNyArOTkwLDcgQEAgY3ZFbmNvZGVJbWFnZSggY29uc3QgY2hhciogZXh0LCBjb25zdCBDdkFyciogYXJyLCBjb25zdCBpbnQqIF9wYXJhbXMgKQotICAgICBpZiggX3BhcmFtcyApCi0gICAgIHsKLSAgICAgICAgIGZvciggOyBfcGFyYW1zW2ldID4gMDsgaSArPSAyICkKLS0gICAgICAgICAgICA7Ci0rICAgICAgICAgICAgQ1ZfQXNzZXJ0KGkgPCBDVl9JT19NQVhfSU1BR0VfUEFSQU1TKjIpOyAvLyBMaW1pdCBudW1iZXIgb2YgcGFyYW1zIGZvciBzZWN1cml0eSByZWFzb25zCi0gICAgIH0KLSAgICAgY3Y6Ok1hdCBpbWcgPSBjdjo6Y3ZhcnJUb01hdChhcnIpOwotICAgICBpZiggQ1ZfSVNfSU1BR0UoYXJyKSAmJiAoKGNvbnN0IElwbEltYWdlKilhcnIpLT5vcmlnaW4gPT0gSVBMX09SSUdJTl9CTCApCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtVG8tZml4LWVycm9ycy1hcy1mb2xsb3dpbmcucGF0Y2gKaW5kZXggYTIyYjA0YS4uNTI3MGI4YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1Uby1maXgtZXJyb3JzLWFzLWZvbGxvd2luZy5wYXRjaApAQCAtMTksMjkgKzE5LDIxIEBACiAgbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcCAgIHwgMiArLQogIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCi1pbmRleCA0MWE3NmIxM2UuLjIwNTY0NjE0MCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAotKysrIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCi1AQCAtNTU1LDcgKzU1NSw3IEBAIHByb3RlY3RlZDoKK0luZGV4OiBnaXQvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMuaHBwCisrKysgZ2l0L21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzLmhwcAorQEAgLTYwOCw3ICs2MDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgIH0KICB9OwogIAogLWV4dGVybiB1aW50NjQgcGFyYW1fc2VlZDsKICtDVl9FWFBPUlRTIGV4dGVybiB1aW50NjQgcGFyYW1fc2VlZDsKICAKLSBzdHJ1Y3QgQ1ZfRVhQT1JUUyBEZWZhdWx0Um5nQXV0bworIHN0cnVjdCBEZWZhdWx0Um5nQXV0bwogIHsKLUBAIC02MTEsMTQgKzYxMSwxNCBAQCBDVl9FWFBPUlRTIHN0ZDo6c3RyaW5nIGZpbmREYXRhRmlsZShjb25zdCBzdGQ6OnN0cmluZyYgcmVsYXRpdmVfcGF0aCwgYm9vbCByZXF1aQotIAotICNpZmRlZiBIQVZFX09QRU5DTAotIG5hbWVzcGFjZSBvY2wgewotLXZvaWQgZHVtcE9wZW5DTERldmljZSgpOwotK0NWX0VYUE9SVFMgdm9pZCBkdW1wT3BlbkNMRGV2aWNlKCk7Ci0gfQotICNkZWZpbmUgVEVTVF9EVU1QX09DTF9JTkZPIGN2dGVzdDo6b2NsOjpkdW1wT3BlbkNMRGV2aWNlKCk7Ci0gI2Vsc2UKLSAjZGVmaW5lIFRFU1RfRFVNUF9PQ0xfSU5GTworQEAgLTY3MSw3ICs2NzEsNyBAQCBwcml2YXRlOgorICNlbmRpZgogICNlbmRpZgogIAogLXZvaWQgcGFyc2VDdXN0b21PcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndik7CkBAIC00OSwxMCArNDEsMTAgQEAKICAKICAjZGVmaW5lIENWX1RFU1RfSU5JVDBfTk9PUCAodm9pZCkwCiAgCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvb2NsX3Rlc3QuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvb2NsX3Rlc3QuaHBwCi1pbmRleCA1NGIzM2VjZTguLmVmNTZiZjllZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcAotKysrIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvb2NsX3Rlc3QuaHBwCitJbmRleDogZ2l0L21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL29jbF90ZXN0LmhwcAorKysrIGdpdC9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy9vY2xfdGVzdC5ocHAKIEBAIC04Miw3ICs4Miw3IEBAIGlubGluZSBVTWF0IFRvVU1hdChJbnB1dEFycmF5IHNyYykKICAgICAgcmV0dXJuIGRzdDsKICB9CkBAIC02MiwxOSArNTQsMTYgQEAKICAKICAjZGVmaW5lIE1BWF9WQUxVRSAzNTcKICAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwIGIvbW9kdWxlcy90cy9pbmNsdWRlL29wZW5jdjIvdHMvdHNfZXh0LmhwcAotaW5kZXggMGJkZDM0NmRkLi4yY2QzNGRmY2UgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCi0rKysgYi9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCitJbmRleDogZ2l0L21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9tb2R1bGVzL3RzL2luY2x1ZGUvb3BlbmN2Mi90cy90c19leHQuaHBwCisrKysgZ2l0L21vZHVsZXMvdHMvaW5jbHVkZS9vcGVuY3YyL3RzL3RzX2V4dC5ocHAKIEBAIC05LDcgKzksNyBAQAogICNkZWZpbmUgT1BFTkNWX1RTX0VYVF9IUFAKICAKICBuYW1lc3BhY2UgY3Z0ZXN0IHsKIC12b2lkIGNoZWNrSXBwU3RhdHVzKCk7CiArQ1ZfRVhQT1JUUyB2b2lkIGNoZWNrSXBwU3RhdHVzKCk7Ci0gfQotIAotICNkZWZpbmUgQ1ZfVEVTVF9JTklUIFwKLS0tIAotMi4xMy40Ci0KKyBleHRlcm4gYm9vbCBza2lwVW5zdGFibGVUZXN0czsKKyBleHRlcm4gYm9vbCBydW5CaWdEYXRhVGVzdHM7CisgZXh0ZXJuIGludCB0ZXN0VGhyZWFkczsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1pbWdwcm9jLXRlc3QtYWRkLWNoZWNrcy1mb3ItcmVtb3ZlLWNhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2LzAwMDMtaW1ncHJvYy10ZXN0LWFkZC1jaGVja3MtZm9yLXJlbW92ZS1jYWxsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjRhNjBjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvMDAwMy1pbWdwcm9jLXRlc3QtYWRkLWNoZWNrcy1mb3ItcmVtb3ZlLWNhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3YvcHVsbC85Mzc2L2NvbW1pdHMvNzhhMzEwNjMwZmIwYTFmNmQwODk1NzYyMDIzNDNlNjcyZjI3NjA5ZF0KLQotRml4IENWRXMgZm9yIG9wZW5jdiAzLjMuCi0KLSogQ1ZFLTIwMTctMTI1OTcKLSogQ1ZFLTIwMTctMTI1OTgKLSogQ1ZFLTIwMTctMTI1OTkKLSogQ1ZFLTIwMTctMTI2MDAKLSogQ1ZFLTIwMTctMTI2MDEKLSogQ1ZFLTIwMTctMTI2MDIKLSogQ1ZFLTIwMTctMTI2MDMKLSogQ1ZFLTIwMTctMTI2MDQKLSogQ1ZFLTIwMTctMTI2MDUKLSogQ1ZFLTIwMTctMTI2MDYKLSogQ1ZFLTIwMTctMTI4NjIKLSogQ1ZFLTIwMTctMTI4NjMKLSogQ1ZFLTIwMTctMTI4NjQKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLUZyb20gNzhhMzEwNjMwZmIwYTFmNmQwODk1NzYyMDIzNDNlNjcyZjI3NjA5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBBbGVraGluIDxhbGV4YW5kZXIuYWxla2hpbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDEzOjUzOjEyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBpbWdwcm9jKHRlc3QpOiBhZGQgY2hlY2tzIGZvciByZW1vdmUoKSBjYWxsCi0KLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9ncmZtdC5jcHAgICAgICB8ICAyICstCi0gbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2pwZWcuY3BwICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAgICAgICAgIHwgIDIgKy0KLSBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcmVhZF93cml0ZS5jcHAgfCAgNCArKy0tCi0gbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3RpZmYuY3BwICAgICAgIHwgIDggKysrKy0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAgICAgICAgfCAgNiArKystLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9ncmZtdC5jcHAKLWluZGV4IDY0YTBjMWUzYS4uNzRiNzJjM2IzIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2dyZm10LmNwcAotQEAgLTE3NSw3ICsxNzUsNyBAQCBURVNUX1AoSW1nY29kZWNzX0V4dFNpemUsIHdyaXRlX2ltYWdlc2VxKQotICAgICAgICAgICAgIEVYUEVDVF9MVChuLCAxLik7Ci0gICAgICAgICAgICAgRVhQRUNUX1BSRURfRk9STUFUMihjdnRlc3Q6Ok1hdENvbXBhcmF0b3IoMCwgMCksIGltZywgaW1nX2d0KTsKLSAgICAgICAgIH0KLS0gICAgICAgIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKTsKLSsgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZmlsZW5hbWUuY19zdHIoKSkpOwotICAgICB9Ci0gfQotIAotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcAotaW5kZXggNTU0NmYyZDkxLi42ZGRiMDI4NDAgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfanBlZy5jcHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9qcGVnLmNwcAotQEAgLTEyMyw4ICsxMjMsOCBAQCBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3Byb2dyZXNzaXZlX2pwZWcpCi0gCi0gICAgIEVYUEVDVF9FUSgwLCBjdnRlc3Q6Om5vcm0oaW1nX2pwZ19wcm9ncmVzc2l2ZSwgaW1nX2pwZ19ub3JtYWwsIE5PUk1fSU5GKSk7Ci0gCi0tICAgIHJlbW92ZShvdXRwdXRfcHJvZ3Jlc3NpdmUuY19zdHIoKSk7Ci0tICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9wcm9ncmVzc2l2ZS5jX3N0cigpKSk7Ci0rICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0X25vcm1hbC5jX3N0cigpKSk7Ci0gfQotIAotIFRFU1QoSW1nY29kZWNzX0pwZWcsIGVuY29kZV9kZWNvZGVfb3B0aW1pemVfanBlZykKLUBAIC0xNDgsOCArMTQ4LDggQEAgVEVTVChJbWdjb2RlY3NfSnBlZywgZW5jb2RlX2RlY29kZV9vcHRpbWl6ZV9qcGVnKQotIAotICAgICBFWFBFQ1RfRVEoMCwgY3Z0ZXN0Ojpub3JtKGltZ19qcGdfb3B0aW1pemVkLCBpbWdfanBnX25vcm1hbCwgTk9STV9JTkYpKTsKLSAKLS0gICAgcmVtb3ZlKG91dHB1dF9vcHRpbWl6ZWQuY19zdHIoKSk7Ci0tICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9vcHRpbWl6ZWQuY19zdHIoKSkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSkpOwotIH0KLSAKLSBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3JzdF9qcGVnKQotQEAgLTE3Myw4ICsxNzMsOCBAQCBURVNUKEltZ2NvZGVjc19KcGVnLCBlbmNvZGVfZGVjb2RlX3JzdF9qcGVnKQotIAotICAgICBFWFBFQ1RfRVEoMCwgY3Z0ZXN0Ojpub3JtKGltZ19qcGdfcnN0LCBpbWdfanBnX25vcm1hbCwgTk9STV9JTkYpKTsKLSAKLS0gICAgcmVtb3ZlKG91dHB1dF9yc3QuY19zdHIoKSk7Ci0tICAgIHJlbW92ZShvdXRwdXRfbm9ybWFsLmNfc3RyKCkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9yc3QuY19zdHIoKSkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dF9ub3JtYWwuY19zdHIoKSkpOwotIH0KLSAKLSAjZW5kaWYgLy8gSEFWRV9KUEVHCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcAotaW5kZXggYzQ2ZjkwMTE5Li40ZTk3MDQzZTEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfcG5nLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3BuZy5jcHAKLUBAIC0xNyw3ICsxNyw3IEBAIFRFU1QoSW1nY29kZWNzX1BuZywgd3JpdGVfYmlnKQotICAgICBFWFBFQ1RfRVEoMTMwNDMsIGltZy5jb2xzKTsKLSAgICAgRVhQRUNUX0VRKDEzOTE3LCBpbWcucm93cyk7Ci0gICAgIEFTU0VSVF9OT19USFJPVyhpbXdyaXRlKGRzdF9maWxlLCBpbWcpKTsKLS0gICAgcmVtb3ZlKGRzdF9maWxlLmNfc3RyKCkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGRzdF9maWxlLmNfc3RyKCkpKTsKLSB9Ci0gCi0gVEVTVChJbWdjb2RlY3NfUG5nLCBlbmNvZGUpCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwCi1pbmRleCAzOGYxMDIyNWYuLjUxMTk4MTNiZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9yZWFkX3dyaXRlLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3JlYWRfd3JpdGUuY3BwCi1AQCAtNTAsNyArNTAsNyBAQCBURVNUKEltZ2NvZGVjc19JbWFnZSwgcmVhZF93cml0ZV9ibXApCi0gICAgICAgICBwc25yID0gY3Z0ZXN0OjpQU05SKGJ1Zl9sb2FkZWQsIGltYWdlKTsKLSAgICAgICAgIEVYUEVDVF9HVChwc25yLCB0aHJlc0RiZWxsKTsKLSAKLS0gICAgICAgIHJlbW92ZShkc3RfbmFtZS5jX3N0cigpKTsKLSsgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZHN0X25hbWUuY19zdHIoKSkpOwotICAgICB9Ci0gfQotIAotQEAgLTk1LDcgKzk1LDcgQEAgVEVTVF9QKEltZ2NvZGVjc19JbWFnZSwgcmVhZF93cml0ZSkKLSAgICAgcHNuciA9IGN2dGVzdDo6UFNOUihidWZfbG9hZGVkLCBpbWFnZSk7Ci0gICAgIEVYUEVDVF9HVChwc25yLCB0aHJlc0RiZWxsKTsKLSAKLS0gICAgcmVtb3ZlKGZ1bGxfbmFtZS5jX3N0cigpKTsKLSsgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmdWxsX25hbWUuY19zdHIoKSkpOwotIH0KLSAKLSBjb25zdCBzdHJpbmcgZXh0c1tdID0gewotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcAotaW5kZXggMDI2NGRhNGNkLi42ZWYwYzE3NDggMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfdGlmZi5jcHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF90aWZmLmNwcAotQEAgLTQxLDggKzQxLDggQEAgVEVTVChJbWdjb2RlY3NfVGlmZiwgZGVjb2RlX3RpbGUxNjM4NHgxNjM4NCkKLSAgICAgICAgIC8vIG5vdCBlbm91Z2ggbWVtb3J5Ci0gICAgIH0KLSAKLS0gICAgcmVtb3ZlKGZpbGUzLmNfc3RyKCkpOwotLSAgICByZW1vdmUoZmlsZTQuY19zdHIoKSk7Ci0rICAgIEVYUEVDVF9FUSgwLCByZW1vdmUoZmlsZTMuY19zdHIoKSkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKGZpbGU0LmNfc3RyKCkpKTsKLSB9Ci0gCi0gVEVTVChJbWdjb2RlY3NfVGlmZiwgd3JpdGVfcmVhZF8xNmJpdF9iaWdfbGl0dGxlX2VuZGlhbikKLUBAIC04OCw3ICs4OCw3IEBAIFRFU1QoSW1nY29kZWNzX1RpZmYsIHdyaXRlX3JlYWRfMTZiaXRfYmlnX2xpdHRsZV9lbmRpYW4pCi0gICAgICAgICBFWFBFQ1RfRVEoMHhERUFELCBpbWcuYXQ8dXNob3J0PigwLDApKTsKLSAgICAgICAgIEVYUEVDVF9FUSgweEJFRUYsIGltZy5hdDx1c2hvcnQ+KDAsMSkpOwotIAotLSAgICAgICAgcmVtb3ZlKGZpbGVuYW1lLmNfc3RyKCkpOwotKyAgICAgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTQzLDcgKzE0Myw3IEBAIFRFU1QoSW1nY29kZWNzX1RpZmYsIGRlY29kZV9pbmZpbml0ZV9yb3dzcGVyc3RyaXApCi0gCi0gICAgIEVYUEVDVF9OT19USFJPVyhjdjo6aW1yZWFkKGZpbGVuYW1lLCBJTVJFQURfVU5DSEFOR0VEKSk7Ci0gCi0tICAgIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKTsKLSsgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShmaWxlbmFtZS5jX3N0cigpKSk7Ci0gfQotIAotIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAKLWluZGV4IDZkNDBjZTIxZS4uZDgyZmRkMjg5IDEwMDY0NAotLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X3dlYnAuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3Rfd2VicC5jcHAKLUBAIC00NCw3ICs0NCw3IEBAIFRFU1QoSW1nY29kZWNzX1dlYlAsIGVuY29kZV9kZWNvZGVfbG9zc2xlc3Nfd2VicCkKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICByZW1vdmUob3V0cHV0LmNfc3RyKCkpOwotKyAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dC5jX3N0cigpKSk7Ci0gCi0gICAgIGN2OjpNYXQgZGVjb2RlID0gY3Y6OmltZGVjb2RlKGJ1ZiwgSU1SRUFEX0NPTE9SKTsKLSAgICAgQVNTRVJUX0ZBTFNFKGRlY29kZS5lbXB0eSgpKTsKLUBAIC03MSw3ICs3MSw3IEBAIFRFU1QoSW1nY29kZWNzX1dlYlAsIGVuY29kZV9kZWNvZGVfbG9zc3lfd2VicCkKLSAKLSAgICAgICAgIEVYUEVDVF9OT19USFJPVyhjdjo6aW13cml0ZShvdXRwdXQsIGltZywgcGFyYW1zKSk7Ci0gICAgICAgICBjdjo6TWF0IGltZ193ZWJwID0gY3Y6OmltcmVhZChvdXRwdXQpOwotLSAgICAgICAgcmVtb3ZlKG91dHB1dC5jX3N0cigpKTsKLSsgICAgICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKLSAgICAgICAgIEVYUEVDVF9GQUxTRShpbWdfd2VicC5lbXB0eSgpKTsKLSAgICAgICAgIEVYUEVDVF9FUSgzLCAgIGltZ193ZWJwLmNoYW5uZWxzKCkpOwotICAgICAgICAgRVhQRUNUX0VRKDUxMiwgaW1nX3dlYnAuY29scyk7Ci1AQCAtOTYsNyArOTYsNyBAQCBURVNUKEltZ2NvZGVjc19XZWJQLCBlbmNvZGVfZGVjb2RlX3dpdGhfYWxwaGFfd2VicCkKLSAKLSAgICAgRVhQRUNUX05PX1RIUk9XKGN2OjppbXdyaXRlKG91dHB1dCwgaW1nKSk7Ci0gICAgIGN2OjpNYXQgaW1nX3dlYnAgPSBjdjo6aW1yZWFkKG91dHB1dCk7Ci0tICAgIHJlbW92ZShvdXRwdXQuY19zdHIoKSk7Ci0rICAgIEVYUEVDVF9FUSgwLCByZW1vdmUob3V0cHV0LmNfc3RyKCkpKTsKLSAgICAgRVhQRUNUX0ZBTFNFKGltZ193ZWJwLmVtcHR5KCkpOwotICAgICBFWFBFQ1RfRVEoNCwgICBpbWdfd2VicC5jaGFubmVscygpKTsKLSAgICAgRVhQRUNUX0VRKDUxMiwgaW1nX3dlYnAuY29scyk7Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L0NWRS0yMDE3LTE0MTM2LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9DVkUtMjAxNy0xNDEzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FkNTBhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L0NWRS0yMDE3LTE0MTM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvOTQ0OC9jb21taXRzL2FhY2FlMjBdCi0KLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxNy0xNDEzNi4KLQotUmVmOiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9pc3N1ZXMvOTQ0MwotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotRnJvbSBhYWNhZTIwNjU3NDRhZGIwNWU4NThkMzI3MTk4YzdiYmU3ZjQ1MmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEFsZWtoaW4gPGFsZXhhbmRlci5hbGVraGluQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTU6MTU6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gaW1nY29kZXNjOiBmaXggY29kZSBwcm9ibGVtcyB3aXRoIGludGVnZXIgb3ZlcmZsb3cgLyBhZGRyZXNzCi0gYXJpdGhtZXRpYyAvIFVCCi0KLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwICAgICAgfCAgOCArKy0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9leHIuY3BwICAgICAgfCAxMCArKystLS0tCi0gbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcuY3BwICAgICB8ICAyICstCi0gbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcyMDAwLmNwcCB8ICA2ICsrLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcGFtLmNwcCAgICAgIHwgIDIgKy0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfc3VucmFzLmNwcCAgIHwgIDYgKystLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5jcHAgICAgICAgICAgfCA1MSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5ocHAgICAgICAgICAgfCAgMiArKwotIDggZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9ibXAuY3BwCi1pbmRleCAyNTdmOTdjMmQ4Yi4uNjk3NjhlMjc2YTMgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYm1wLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2JtcC5jcHAKLUBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCAgQm1wRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gYm9vbCAgQm1wRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKLSB7Ci0gICAgIHVjaGFyKiBkYXRhID0gaW1nLnB0cigpOwotLSAgICBpbnQgc3RlcCA9IChpbnQpaW1nLnN0ZXA7Ci0rICAgIGludCBzdGVwID0gdmFsaWRhdGVUb0ludChpbWcuc3RlcCk7Ci0gICAgIGJvb2wgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7Ci0gICAgIHVjaGFyICBncmF5X3BhbGV0dGVbMjU2XSA9IHswfTsKLSAgICAgYm9vbCAgIHJlc3VsdCA9IGZhbHNlOwotQEAgLTIwNiw3ICsyMDYsNyBAQCBib29sICBCbXBEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotIAotICAgICBpZiggbV9vcmlnaW4gPT0gSVBMX09SSUdJTl9CTCApCi0gICAgIHsKLS0gICAgICAgIGRhdGEgKz0gKG1faGVpZ2h0IC0gMSkqc3RlcDsKLSsgICAgICAgIGRhdGEgKz0gKG1faGVpZ2h0IC0gMSkqKHNpemVfdClzdGVwOwotICAgICAgICAgc3RlcCA9IC1zdGVwOwotICAgICB9Ci0gCi1AQCAtNTMwLDcgKzUzMCw3IEBAIGJvb2wgIEJtcEVuY29kZXI6OndyaXRlKCBjb25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgKQotICAgICBpbnQgIGJpdG1hcEhlYWRlclNpemUgPSA0MDsKLSAgICAgaW50ICBwYWxldHRlU2l6ZSA9IGNoYW5uZWxzID4gMSA/IDAgOiAxMDI0OwotICAgICBpbnQgIGhlYWRlclNpemUgPSAxNCAvKiBmaWxlaGVhZGVyICovICsgYml0bWFwSGVhZGVyU2l6ZSArIHBhbGV0dGVTaXplOwotLSAgICBpbnQgIGZpbGVTaXplID0gZmlsZVN0ZXAqaGVpZ2h0ICsgaGVhZGVyU2l6ZTsKLSsgICAgc2l6ZV90IGZpbGVTaXplID0gKHNpemVfdClmaWxlU3RlcCpoZWlnaHQgKyBoZWFkZXJTaXplOwotICAgICBQYWxldHRlRW50cnkgcGFsZXR0ZVsyNTZdOwotIAotICAgICBpZiggbV9idWYgKQotQEAgLTU0MCw3ICs1NDAsNyBAQCBib29sICBCbXBFbmNvZGVyOjp3cml0ZSggY29uc3QgTWF0JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mICkKLSAgICAgc3RybS5wdXRCeXRlcyggZm10U2lnbkJtcCwgKGludClzdHJsZW4oZm10U2lnbkJtcCkgKTsKLSAKLSAgICAgLy8gd3JpdGUgZmlsZSBoZWFkZXIKLS0gICAgc3RybS5wdXREV29yZCggZmlsZVNpemUgKTsgLy8gZmlsZSBzaXplCi0rICAgIHN0cm0ucHV0RFdvcmQoIHZhbGlkYXRlVG9JbnQoZmlsZVNpemUpICk7IC8vIGZpbGUgc2l6ZQotICAgICBzdHJtLnB1dERXb3JkKCAwICk7Ci0gICAgIHN0cm0ucHV0RFdvcmQoIGhlYWRlclNpemUgKTsKLSAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZXhyLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9leHIuY3BwCi1pbmRleCAwZDJhZTlmYTdkMi4uNzhmZmU2Yzc2NjggMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZXhyLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2V4ci5jcHAKLUBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCAgRXhyRGVjb2Rlcjo6cmVhZERhdGEoIE1hdCYgaW1nICkKLSAgICAgYm9vbCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKLSAKLSAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7Ci0tICAgIGludCBzdGVwID0gaW1nLnN0ZXA7Ci0rICAgIHNpemVfdCBzdGVwID0gaW1nLnN0ZXA7Ci0gICAgIGJvb2wganVzdGNvcHkgPSBtX25hdGl2ZV9kZXB0aDsKLSAgICAgYm9vbCBjaHJvbWF0b3JnYiA9IGZhbHNlOwotICAgICBib29sIHJnYnRvZ3JheSA9IGZhbHNlOwotQEAgLTIwMyw4ICsyMDMsOCBAQCBib29sICBFeHJEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICBGcmFtZUJ1ZmZlciBmcmFtZTsKLSAgICAgaW50IHhzYW1wbGVbM10gPSB7MSwgMSwgMX07Ci0gICAgIGNoYXIgKmJ1ZmZlcjsKLS0gICAgaW50IHhzdGVwOwotLSAgICBpbnQgeXN0ZXA7Ci0rICAgIHNpemVfdCB4c3RlcCA9IDA7Ci0rICAgIHNpemVfdCB5c3RlcCA9IDA7Ci0gCi0gICAgIHhzdGVwID0gbV9uYXRpdmVfZGVwdGggPyA0IDogMTsKLSAKLUBAIC01OTMsNyArNTkzLDcgQEAgYm9vbCAgRXhyRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiApCi0gICAgIGJvb2wgaXNzaWduZWQgPSBkZXB0aCA9PSBDVl84UyB8fCBkZXB0aCA9PSBDVl8xNlMgfHwgZGVwdGggPT0gQ1ZfMzJTOwotICAgICBib29sIGlzZmxvYXQgPSBkZXB0aCA9PSBDVl8zMkYgfHwgZGVwdGggPT0gQ1ZfNjRGOwotICAgICBkZXB0aCA9IENWX0VMRU1fU0laRTEoZGVwdGgpKjg7Ci0tICAgIGNvbnN0IGludCBzdGVwID0gaW1nLnN0ZXA7Ci0rICAgIGNvbnN0IHNpemVfdCBzdGVwID0gaW1nLnN0ZXA7Ci0gCi0gICAgIEhlYWRlciBoZWFkZXIoIHdpZHRoLCBoZWlnaHQgKTsKLSAgICAgSW1mOjpQaXhlbFR5cGUgdHlwZTsKLUBAIC02MjMsNyArNjIzLDcgQEAgYm9vbCAgRXhyRW5jb2Rlcjo6d3JpdGUoIGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiApCi0gICAgIEZyYW1lQnVmZmVyIGZyYW1lOwotIAotICAgICBjaGFyICpidWZmZXI7Ci0tICAgIGludCBidWZmZXJzdGVwOwotKyAgICBzaXplX3QgYnVmZmVyc3RlcDsKLSAgICAgaW50IHNpemU7Ci0gICAgIGlmKCB0eXBlID09IEZMT0FUICYmIGRlcHRoID09IDMyICkKLSAgICAgewotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnLmNwcAotaW5kZXggY2U5NDJjYTE5OTUuLmNhZjc2OGQyNTY5IDEwMDY0NAotLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2pwZWcuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZy5jcHAKLUBAIC0zOTYsNyArMzk2LDcgQEAgaW50IG15X2pwZWdfbG9hZF9kaHQgKHN0cnVjdCBqcGVnX2RlY29tcHJlc3Nfc3RydWN0ICppbmZvLCB1bnNpZ25lZCBjaGFyICpkaHQsCi0gYm9vbCAgSnBlZ0RlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gewotICAgICB2b2xhdGlsZSBib29sIHJlc3VsdCA9IGZhbHNlOwotLSAgICBpbnQgc3RlcCA9IChpbnQpaW1nLnN0ZXA7Ci0rICAgIHNpemVfdCBzdGVwID0gaW1nLnN0ZXA7Ci0gICAgIGJvb2wgY29sb3IgPSBpbWcuY2hhbm5lbHMoKSA+IDE7Ci0gCi0gICAgIGlmKCBtX3N0YXRlICYmIG1fd2lkdGggJiYgbV9oZWlnaHQgKQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9qcGVnMjAwMC5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZzIwMDAuY3BwCi1pbmRleCA5NTBlYzIxMzc1Zi4uMjRkZmIzOGJiOWQgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZzIwMDAuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfanBlZzIwMDAuY3BwCi1AQCAtMTU2LDcgKzE1Niw3IEBAIGJvb2wgIEpwZWcyS0RlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgIGludCBjb2xvciA9IGltZy5jaGFubmVscygpID4gMTsKLSAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7Ci0tICAgIGludCBzdGVwID0gKGludClpbWcuc3RlcDsKLSsgICAgc2l6ZV90IHN0ZXAgPSBpbWcuc3RlcDsKLSAgICAgamFzX3N0cmVhbV90KiBzdHJlYW0gPSAoamFzX3N0cmVhbV90KiltX3N0cmVhbTsKLSAgICAgamFzX2ltYWdlX3QqIGltYWdlID0gKGphc19pbWFnZV90KiltX2ltYWdlOwotIAotQEAgLTI1Miw5ICsyNTIsOSBAQCBib29sICBKcGVnMktEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAhamFzX2ltYWdlX3JlYWRjbXB0KCBpbWFnZSwgY21wdGx1dFtpXSwgMCwgMCwgeGVuZCAvIHhzdGVwLCB5ZW5kIC8geXN0ZXAsIGJ1ZmZlciApKQotICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGltZy5kZXB0aCgpID09IENWXzhVICkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRDb21wb25lbnQ4dSggZGF0YSArIGksIGJ1ZmZlciwgc3RlcCwgY21wdGx1dFtpXSwgbWF4dmFsLCBvZmZzZXQsIG5jbXB0cyApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVhZENvbXBvbmVudDh1KCBkYXRhICsgaSwgYnVmZmVyLCB2YWxpZGF0ZVRvSW50KHN0ZXApLCBjbXB0bHV0W2ldLCBtYXh2YWwsIG9mZnNldCwgbmNtcHRzICk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRDb21wb25lbnQxNnUoICgodW5zaWduZWQgc2hvcnQgKilkYXRhKSArIGksIGJ1ZmZlciwgc3RlcCAvIDIsIGNtcHRsdXRbaV0sIG1heHZhbCwgb2Zmc2V0LCBuY21wdHMgKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRDb21wb25lbnQxNnUoICgodW5zaWduZWQgc2hvcnQgKilkYXRhKSArIGksIGJ1ZmZlciwgdmFsaWRhdGVUb0ludChzdGVwIC8gMiksIGNtcHRsdXRbaV0sIG1heHZhbCwgb2Zmc2V0LCBuY21wdHMgKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoICFyZXN1bHQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbmNtcHRzOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wYW0uY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BhbS5jcHAKLWluZGV4IDExMTk1ZGMzNDJjLi44ZWI5ZTAxMjMwOSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wYW0uY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcGFtLmNwcAotQEAgLTQ3OSw3ICs0NzksNyBAQCBib29sICBQQU1EZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotIHsKLSAgICAgdWNoYXIqIGRhdGEgPSBpbWcucHRyKCk7Ci0gICAgIGludCB0YXJnZXRfY2hhbm5lbHMgPSBpbWcuY2hhbm5lbHMoKTsKLS0gICAgaW50IGltcF9zdHJpZGUgPSAoaW50KWltZy5zdGVwOwotKyAgICBzaXplX3QgaW1wX3N0cmlkZSA9IGltZy5zdGVwOwotICAgICBpbnQgc2FtcGxlX2RlcHRoID0gQ1ZfRUxFTV9TSVpFMShtX3R5cGUpOwotICAgICBpbnQgc3JjX2VsZW1zX3Blcl9yb3cgPSBtX3dpZHRoKm1fY2hhbm5lbHM7Ci0gICAgIGludCBzcmNfc3RyaWRlID0gc3JjX2VsZW1zX3Blcl9yb3cqc2FtcGxlX2RlcHRoOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9zdW5yYXMuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3N1bnJhcy5jcHAKLWluZGV4IGFjYTliMzY5MzE4Li42ZDQ0OGY5NGVkMyAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9zdW5yYXMuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfc3VucmFzLmNwcAotQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sICBTdW5SYXN0ZXJEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotIHsKLSAgICAgaW50IGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOwotICAgICB1Y2hhciogZGF0YSA9IGltZy5wdHIoKTsKLS0gICAgaW50IHN0ZXAgPSAoaW50KWltZy5zdGVwOwotKyAgICBzaXplX3Qgc3RlcCA9IGltZy5zdGVwOwotICAgICB1Y2hhciAgZ3JheV9wYWxldHRlWzI1Nl0gPSB7MH07Ci0gICAgIGJvb2wgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgaW50ICBzcmNfcGl0Y2ggPSAoKG1fd2lkdGgqbV9icHAgKyA3KS84ICsgMSkgJiAtMjsKLUBAIC0zMDgsMTEgKzMwOCwxMSBAQCBib29sICBTdW5SYXN0ZXJEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBtX3N0cm0uZ2V0Qnl0ZSgpOwotIAotICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBjb2xvciApCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsVW5pQ29sb3IoIGRhdGEsIGxpbmVfZW5kLCBzdGVwLCB3aWR0aDMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBGaWxsVW5pQ29sb3IoIGRhdGEsIGxpbmVfZW5kLCB2YWxpZGF0ZVRvSW50KHN0ZXApLCB3aWR0aDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG1faGVpZ2h0LCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFsZXR0ZVtjb2RlXSApOwotICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEZpbGxVbmlHcmF5KCBkYXRhLCBsaW5lX2VuZCwgc3RlcCwgd2lkdGgzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gRmlsbFVuaUdyYXkoIGRhdGEsIGxpbmVfZW5kLCB2YWxpZGF0ZVRvSW50KHN0ZXApLCB3aWR0aDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwgbV9oZWlnaHQsIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmF5X3BhbGV0dGVbY29kZV0gKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiggeSA+PSBtX2hlaWdodCApCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmNwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5jcHAKLWluZGV4IDJlZTViYWZjNzEyLi40NzRkYWUwMDhjYSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5jcHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5jcHAKLUBAIC00Miw2ICs0MiwxMyBAQAotICNpbmNsdWRlICJwcmVjb21wLmhwcCIKLSAjaW5jbHVkZSAidXRpbHMuaHBwIgotIAotK2ludCB2YWxpZGF0ZVRvSW50KHNpemVfdCBzeikKLSt7Ci0rICAgIGludCB2YWx1ZUludCA9IChpbnQpc3o7Ci0rICAgIENWX0Fzc2VydCgoc2l6ZV90KXZhbHVlSW50ID09IHN6KTsKLSsgICAgcmV0dXJuIHZhbHVlSW50OwotK30KLSsKLSAjZGVmaW5lICBTQ0FMRSAgMTQKLSAjZGVmaW5lICBjUiAgKGludCkoMC4yOTkqKDEgPDwgU0NBTEUpICsgMC41KQotICNkZWZpbmUgIGNHICAoaW50KSgwLjU4NyooMSA8PCBTQ0FMRSkgKyAwLjUpCi1AQCAtNTM3LDIzICs1NDQsMjUgQEAgdWNoYXIqIEZpbGxDb2xvclJvdzEoIHVjaGFyKiBkYXRhLCB1Y2hhciogaW5kaWNlcywgaW50IGxlbiwgUGFsZXR0ZUVudHJ5KiBwYWxldHQKLSB7Ci0gICAgIHVjaGFyKiBlbmQgPSBkYXRhICsgbGVuKjM7Ci0gCi0rICAgIGNvbnN0IFBhbGV0dGVFbnRyeSBwMCA9IHBhbGV0dGVbMF0sIHAxID0gcGFsZXR0ZVsxXTsKLSsKLSAgICAgd2hpbGUoIChkYXRhICs9IDI0KSA8IGVuZCApCi0gICAgIHsKLSAgICAgICAgIGludCBpZHggPSAqaW5kaWNlcysrOwotLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDI0KSkgPSBwYWxldHRlWyhpZHggJiAxMjgpICE9IDBdOwotLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDIxKSkgPSBwYWxldHRlWyhpZHggJiA2NCkgIT0gMF07Ci0tICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTgpKSA9IHBhbGV0dGVbKGlkeCAmIDMyKSAhPSAwXTsKLS0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxNSkpID0gcGFsZXR0ZVsoaWR4ICYgMTYpICE9IDBdOwotLSAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDEyKSkgPSBwYWxldHRlWyhpZHggJiA4KSAhPSAwXTsKLS0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSA5KSkgPSBwYWxldHRlWyhpZHggJiA0KSAhPSAwXTsKLS0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSA2KSkgPSBwYWxldHRlWyhpZHggJiAyKSAhPSAwXTsKLS0gICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAzKSkgPSBwYWxldHRlWyhpZHggJiAxKSAhPSAwXTsKLSsgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAyNCkpID0gKGlkeCAmIDEyOCkgPyBwMSA6IHAwOwotKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDIxKSkgPSAoaWR4ICYgNjQpID8gcDEgOiBwMDsKLSsgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAxOCkpID0gKGlkeCAmIDMyKSA/IHAxIDogcDA7Ci0rICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gMTUpKSA9IChpZHggJiAxNikgPyBwMSA6IHAwOwotKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDEyKSkgPSAoaWR4ICYgOCkgPyBwMSA6IHAwOwotKyAgICAgICAgKigoUGFsZXR0ZUVudHJ5KikoZGF0YSAtIDkpKSA9IChpZHggJiA0KSA/IHAxIDogcDA7Ci0rICAgICAgICAqKChQYWxldHRlRW50cnkqKShkYXRhIC0gNikpID0gKGlkeCAmIDIpID8gcDEgOiBwMDsKLSsgICAgICAgICooKFBhbGV0dGVFbnRyeSopKGRhdGEgLSAzKSkgPSAoaWR4ICYgMSkgPyBwMSA6IHAwOwotICAgICB9Ci0gCi0tICAgIGludCBpZHggPSBpbmRpY2VzWzBdIDw8IDI0OwotKyAgICBpbnQgaWR4ID0gaW5kaWNlc1swXTsKLSAgICAgZm9yKCBkYXRhIC09IDI0OyBkYXRhIDwgZW5kOyBkYXRhICs9IDMsIGlkeCArPSBpZHggKQotICAgICB7Ci0tICAgICAgICBQYWxldHRlRW50cnkgY2xyID0gcGFsZXR0ZVtpZHggPCAwXTsKLSsgICAgICAgIGNvbnN0IFBhbGV0dGVFbnRyeSBjbHIgPSAoaWR4ICYgMTI4KSA/IHAxIDogcDA7Ci0gICAgICAgICBXUklURV9QSVgoIGRhdGEsIGNsciApOwotICAgICB9Ci0gCi1AQCAtNTY1LDIzICs1NzQsMjUgQEAgdWNoYXIqIEZpbGxHcmF5Um93MSggdWNoYXIqIGRhdGEsIHVjaGFyKiBpbmRpY2VzLCBpbnQgbGVuLCB1Y2hhciogcGFsZXR0ZSApCi0gewotICAgICB1Y2hhciogZW5kID0gZGF0YSArIGxlbjsKLSAKLSsgICAgY29uc3QgdWNoYXIgcDAgPSBwYWxldHRlWzBdLCBwMSA9IHBhbGV0dGVbMV07Ci0rCi0gICAgIHdoaWxlKCAoZGF0YSArPSA4KSA8IGVuZCApCi0gICAgIHsKLSAgICAgICAgIGludCBpZHggPSAqaW5kaWNlcysrOwotLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gOCkpID0gcGFsZXR0ZVsoaWR4ICYgMTI4KSAhPSAwXTsKLS0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDcpKSA9IHBhbGV0dGVbKGlkeCAmIDY0KSAhPSAwXTsKLS0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDYpKSA9IHBhbGV0dGVbKGlkeCAmIDMyKSAhPSAwXTsKLS0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDUpKSA9IHBhbGV0dGVbKGlkeCAmIDE2KSAhPSAwXTsKLS0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDQpKSA9IHBhbGV0dGVbKGlkeCAmIDgpICE9IDBdOwotLSAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMykpID0gcGFsZXR0ZVsoaWR4ICYgNCkgIT0gMF07Ci0tICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAyKSkgPSBwYWxldHRlWyhpZHggJiAyKSAhPSAwXTsKLS0gICAgICAgICooKHVjaGFyKikoZGF0YSAtIDEpKSA9IHBhbGV0dGVbKGlkeCAmIDEpICE9IDBdOwotKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gOCkpID0gKGlkeCAmIDEyOCkgPyBwMSA6IHAwOwotKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNykpID0gKGlkeCAmIDY0KSA/IHAxIDogcDA7Ci0rICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSA2KSkgPSAoaWR4ICYgMzIpID8gcDEgOiBwMDsKLSsgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDUpKSA9IChpZHggJiAxNikgPyBwMSA6IHAwOwotKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gNCkpID0gKGlkeCAmIDgpID8gcDEgOiBwMDsKLSsgICAgICAgICooKHVjaGFyKikoZGF0YSAtIDMpKSA9IChpZHggJiA0KSA/IHAxIDogcDA7Ci0rICAgICAgICAqKCh1Y2hhciopKGRhdGEgLSAyKSkgPSAoaWR4ICYgMikgPyBwMSA6IHAwOwotKyAgICAgICAgKigodWNoYXIqKShkYXRhIC0gMSkpID0gKGlkeCAmIDEpID8gcDEgOiBwMDsKLSAgICAgfQotIAotLSAgICBpbnQgaWR4ID0gaW5kaWNlc1swXSA8PCAyNDsKLSsgICAgaW50IGlkeCA9IGluZGljZXNbMF07Ci0gICAgIGZvciggZGF0YSAtPSA4OyBkYXRhIDwgZW5kOyBkYXRhKyssIGlkeCArPSBpZHggKQotICAgICB7Ci0tICAgICAgICBkYXRhWzBdID0gcGFsZXR0ZVtpZHggPCAwXTsKLSsgICAgICAgIGRhdGFbMF0gPSAoaWR4ICYgMTI4KSA/IHAxIDogcDA7Ci0gICAgIH0KLSAKLSAgICAgcmV0dXJuIGRhdGE7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL3V0aWxzLmhwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5ocHAKLWluZGV4IGNhYjEwNjA5ZGIyLi43YWY0YzYxNzRlZSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5ocHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy91dGlscy5ocHAKLUBAIC00Miw2ICs0Miw4IEBACi0gI2lmbmRlZiBfVVRJTFNfSF8KLSAjZGVmaW5lIF9VVElMU19IXwotIAotK2ludCB2YWxpZGF0ZVRvSW50KHNpemVfdCBzdGVwKTsKLSsKLSBzdHJ1Y3QgUGFsZXR0ZUVudHJ5Ci0gewotICAgICB1bnNpZ25lZCBjaGFyIGIsIGcsIHIsIGE7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2FscmVhZHktZXhpc3RzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9hbHJlYWR5LWV4aXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUyNGYyZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2FscmVhZHktZXhpc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzk0ICswLDAgQEAKLUZyb20gZTRiZjE0OGNkZGYyNzc4MzRlNTdjOWFmZWVjOGRhZmY4Mzc4YTY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMiBOb3YgMjAxNyAxNToyNzowNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXg6IEZpbGUgYWxyZWFkeSBleGlzdHMgaW4gZGF0YWJhc2U6IGNhZmZlLnByb3RvCi0KLUZpeGVzIGVycm9yIHdoZW4gaW1wb3J0aW5nIHB5dGhvbiBjdgotCi1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L3B1bGwvMTAwOTIKLVNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotLS0tCi0gbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKystLS0KLSBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwICAgICAgICAgICAgICAgICAgfCAxIC0KLSBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwICAgICAgICAgICAgICAgICAgICAgICAgfCAxIC0KLSBtb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gbW9kdWxlcy9kbm4vc3JjL2NhZmZlL3tjYWZmZS5wcm90byA9PiBvcGVuY3YtY2FmZmUucHJvdG99IHwgMAotIDUgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotIHJlbmFtZSBtb2R1bGVzL2Rubi9zcmMvY2FmZmUve2NhZmZlLnByb3RvID0+IG9wZW5jdi1jYWZmZS5wcm90b30gKDEwMCUpCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBjNjMyOWE3NDIyNjMuLjhlZjAwZWY5ODNmZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9tb2R1bGVzL2Rubi9DTWFrZUxpc3RzLnR4dAotQEAgLTU1LDEzICs1NSwxMyBAQCBvY3Zfd2FybmluZ3NfZGlzYWJsZShDTUFLRV9DWFhfRkxBR1MKLSAKLSBpZihQUk9UT0JVRl9VUERBVEVfRklMRVMpCi0gICBmaWxlKEdMT0IgcHJvdG9fZmlsZXMgc3JjL3RlbnNvcmZsb3cvKi5wcm90bykKLS0gIGxpc3QoQVBQRU5EIHByb3RvX2ZpbGVzIHNyYy9jYWZmZS9jYWZmZS5wcm90bykKLSsgIGxpc3QoQVBQRU5EIHByb3RvX2ZpbGVzIHNyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8pCi0gICBQUk9UT0JVRl9HRU5FUkFURV9DUFAoUHJvdG9idWZfSERSUyBQcm90b2J1Zl9TUkNTICR7cHJvdG9fZmlsZXN9KQotIGVsc2UoKQotICAgZmlsZShHTE9CIGZ3X3NyY3MgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvdGVuc29yZmxvdy8qLmNjKQotICAgZmlsZShHTE9CIGZ3X2hkcnMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L21pc2MvdGVuc29yZmxvdy8qLmgpCi0tICBsaXN0KEFQUEVORCBmd19zcmNzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL2NhZmZlLnBiLmNjKQotLSAgbGlzdChBUFBFTkQgZndfaGRycyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy9jYWZmZS9jYWZmZS5wYi5oKQotKyAgbGlzdChBUFBFTkQgZndfc3JjcyAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbWlzYy9jYWZmZS9vcGVuY3YtY2FmZmUucGIuY2MpCi0rICBsaXN0KEFQUEVORCBmd19oZHJzICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlL29wZW5jdi1jYWZmZS5wYi5oKQotICAgbGlzdChBUFBFTkQgUHJvdG9idWZfU1JDUyAke2Z3X3NyY3N9KQotICAgbGlzdChBUFBFTkQgUHJvdG9idWZfSERSUyAke2Z3X2hkcnN9KQotICAgbGlzdChBUFBFTkQgUHJvdG9idWZfSU5DTFVERV9ESVJTICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9taXNjL2NhZmZlKQotZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW1wb3J0ZXIuY3BwCi1pbmRleCBjMDc1NjUxYjk1YjMuLjJjOTc3Yzg0YjBmNCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKLSsrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKLUBAIC00Miw3ICs0Miw2IEBACi0gI2luY2x1ZGUgIi4uL3ByZWNvbXAuaHBwIgotIAotICNpZmRlZiBIQVZFX1BST1RPQlVGCi0tI2luY2x1ZGUgImNhZmZlLnBiLmgiCi0gCi0gI2luY2x1ZGUgPGlvc3RyZWFtPgotICNpbmNsdWRlIDxmc3RyZWFtPgotZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uY3BwCi1pbmRleCAwZjQ2ZWE3N2RmOWEuLjFkM2M1MThmMTMyOCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKLSsrKyBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKLUBAIC05OSw3ICs5OSw2IEBACi0gI2luY2x1ZGUgPGZzdHJlYW0+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLS0jaW5jbHVkZSAiY2FmZmUucGIuaCIKLSAjaW5jbHVkZSAiY2FmZmVfaW8uaHBwIgotICNpbmNsdWRlICJnbG9nX2VtdWxhdG9yLmhwcCIKLSAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmhwcAotaW5kZXggMDliYzU3MDlhMjRlLi5mNTkxMmMzYmNlYzEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCi0rKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCi1AQCAtOTEsNyArOTEsNyBAQAotICNkZWZpbmUgX19PUEVOQ1ZfRE5OX0NBRkZFX0lPX0hQUF9fCi0gI2lmZGVmIEhBVkVfUFJPVE9CVUYKLSAKLS0jaW5jbHVkZSAiY2FmZmUucGIuaCIKLSsjaW5jbHVkZSAib3BlbmN2LWNhZmZlLnBiLmgiCi0gCi0gbmFtZXNwYWNlIGN2IHsKLSBuYW1lc3BhY2UgZG5uIHsKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmUucHJvdG8gYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZS5wcm90bwotcmVuYW1lIHRvIG1vZHVsZXMvZG5uL3NyYy9jYWZmZS9vcGVuY3YtY2FmZmUucHJvdG8KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwIGIvbW9kdWxlcy9kbm4vc3JjL2xheWVycy9kZXRlY3Rpb25fb3V0cHV0X2xheWVyLmNwcAotaW5kZXggMGI3MjMyNmY3ZTdkLi5mNDEzYmFkNWI4MWEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCi0rKysgYi9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCi1AQCAtNDQsNyArNDQsNyBAQAotICNpbmNsdWRlICJsYXllcnNfY29tbW9uLmhwcCIKLSAjaW5jbHVkZSA8ZmxvYXQuaD4KLSAjaW5jbHVkZSA8c3RyaW5nPgotLSNpbmNsdWRlIDxjYWZmZS5wYi5oPgotKyNpbmNsdWRlIDxvcGVuY3YtY2FmZmUucGIuaD4KLSAKLSBuYW1lc3BhY2UgY3YKLSB7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pbXBvcnRlci5jcHAKLWluZGV4IDJjOTc3Yzg0YjBmNC4uYTE4MjdhMzgxMTE3IDEwMDY0NAotLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAotKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2ltcG9ydGVyLmNwcAotQEAgLTc4LDggKzc4LDggQEAgc3RhdGljIGN2OjpTdHJpbmcgdG9TdHJpbmcoY29uc3QgVCAmdikKLSAKLSBjbGFzcyBDYWZmZUltcG9ydGVyIDogcHVibGljIEltcG9ydGVyCi0gewotLSAgICBjYWZmZTo6TmV0UGFyYW1ldGVyIG5ldDsKLS0gICAgY2FmZmU6Ok5ldFBhcmFtZXRlciBuZXRCaW5hcnk7Ci0rICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIgbmV0OwotKyAgICBvcGVuY3ZjYWZmZTo6TmV0UGFyYW1ldGVyIG5ldEJpbmFyeTsKLSAKLSBwdWJsaWM6Ci0gCi1AQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICB2b2lkIGJsb2JTaGFwZUZyb21Qcm90byhjb25zdCBjYWZmZTo6QmxvYlByb3RvICZwYkJsb2IsIE1hdFNoYXBlJiBzaGFwZSkKLSsgICAgdm9pZCBibG9iU2hhcGVGcm9tUHJvdG8oY29uc3Qgb3BlbmN2Y2FmZmU6OkJsb2JQcm90byAmcGJCbG9iLCBNYXRTaGFwZSYgc2hhcGUpCi0gICAgIHsKLSAgICAgICAgIHNoYXBlLmNsZWFyKCk7Ci0gICAgICAgICBpZiAocGJCbG9iLmhhc19udW0oKSB8fCBwYkJsb2IuaGFzX2NoYW5uZWxzKCkgfHwgcGJCbG9iLmhhc19oZWlnaHQoKSB8fCBwYkJsb2IuaGFzX3dpZHRoKCkpCi1AQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYgKHBiQmxvYi5oYXNfc2hhcGUoKSkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBjb25zdCBjYWZmZTo6QmxvYlNoYXBlICZfc2hhcGUgPSBwYkJsb2Iuc2hhcGUoKTsKLSsgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6QmxvYlNoYXBlICZfc2hhcGUgPSBwYkJsb2Iuc2hhcGUoKTsKLSAKLSAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IF9zaGFwZS5kaW1fc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICAgICAgIHNoYXBlLnB1c2hfYmFjaygoaW50KV9zaGFwZS5kaW0oaSkpOwotQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6Ci0gICAgICAgICAgICAgQ1ZfRXJyb3IoRXJyb3I6OlN0c0Vycm9yLCAiVW5rbm93biBzaGFwZSBvZiBpbnB1dCBibG9iIik7Ci0gICAgIH0KLSAKLS0gICAgdm9pZCBibG9iRnJvbVByb3RvKGNvbnN0IGNhZmZlOjpCbG9iUHJvdG8gJnBiQmxvYiwgY3Y6Ok1hdCAmZHN0QmxvYikKLSsgICAgdm9pZCBibG9iRnJvbVByb3RvKGNvbnN0IG9wZW5jdmNhZmZlOjpCbG9iUHJvdG8gJnBiQmxvYiwgY3Y6Ok1hdCAmZHN0QmxvYikKLSAgICAgewotICAgICAgICAgTWF0U2hhcGUgc2hhcGU7Ci0gICAgICAgICBibG9iU2hhcGVGcm9tUHJvdG8ocGJCbG9iLCBzaGFwZSk7Ci1AQCAtMjMzLDcgKzIzMyw3IEBAIHB1YmxpYzoKLSAgICAgICAgICAgICBkc3REYXRhW2ldID0gcGJCbG9iLmRhdGEoaSk7Ci0gICAgIH0KLSAKLS0gICAgdm9pZCBleHRyYWN0QmluYXJ5TGF5ZXJQYXJtcyhjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXImIGxheWVyLCBMYXllclBhcmFtcyYgbGF5ZXJQYXJhbXMpCi0rICAgIHZvaWQgZXh0cmFjdEJpbmFyeUxheWVyUGFybXMoY29uc3Qgb3BlbmN2Y2FmZmU6OkxheWVyUGFyYW1ldGVyJiBsYXllciwgTGF5ZXJQYXJhbXMmIGxheWVyUGFyYW1zKQotICAgICB7Ci0gICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSA9IGxheWVyLm5hbWUoKTsKLSAKLUBAIC0yNDcsNyArMjQ3LDcgQEAgcHVibGljOgotICAgICAgICAgaWYgKGxpID09IG5ldEJpbmFyeS5sYXllcl9zaXplKCkgfHwgbmV0QmluYXJ5LmxheWVyKGxpKS5ibG9ic19zaXplKCkgPT0gMCkKLSAgICAgICAgICAgICByZXR1cm47Ci0gCi0tICAgICAgICBjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmJpbkxheWVyID0gbmV0QmluYXJ5LmxheWVyKGxpKTsKLSsgICAgICAgIGNvbnN0IG9wZW5jdmNhZmZlOjpMYXllclBhcmFtZXRlciAmYmluTGF5ZXIgPSBuZXRCaW5hcnkubGF5ZXIobGkpOwotICAgICAgICAgbGF5ZXJQYXJhbXMuYmxvYnMucmVzaXplKGJpbkxheWVyLmJsb2JzX3NpemUoKSk7Ci0gICAgICAgICBmb3IgKGludCBiaSA9IDA7IGJpIDwgYmluTGF5ZXIuYmxvYnNfc2l6ZSgpOyBiaSsrKQotICAgICAgICAgewotQEAgLTI4OSw3ICsyODksNyBAQCBwdWJsaWM6Ci0gCi0gICAgICAgICBmb3IgKGludCBsaSA9IDA7IGxpIDwgbGF5ZXJzU2l6ZTsgbGkrKykKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBjb25zdCBjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyID0gbmV0LmxheWVyKGxpKTsKLSsgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyID0gbmV0LmxheWVyKGxpKTsKLSAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGxheWVyLm5hbWUoKTsKLSAgICAgICAgICAgICBTdHJpbmcgdHlwZSA9IGxheWVyLnR5cGUoKTsKLSAgICAgICAgICAgICBMYXllclBhcmFtcyBsYXllclBhcmFtczsKLUBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgotICAgICAgICAgYWRkZWRCbG9icy5jbGVhcigpOwotICAgICB9Ci0gCi0tICAgIHZvaWQgYWRkT3V0cHV0KGNvbnN0IGNhZmZlOjpMYXllclBhcmFtZXRlciAmbGF5ZXIsIGludCBsYXllcklkLCBpbnQgb3V0TnVtKQotKyAgICB2b2lkIGFkZE91dHB1dChjb25zdCBvcGVuY3ZjYWZmZTo6TGF5ZXJQYXJhbWV0ZXIgJmxheWVyLCBpbnQgbGF5ZXJJZCwgaW50IG91dE51bSkKLSAgICAgewotICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUgPSBsYXllci50b3Aob3V0TnVtKTsKLSAKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmhwcAotaW5kZXggZjU5MTJjM2JjZWMxLi4yNGNkNWZhMjU0ZWIgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCi0rKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvY2FmZmVfaW8uaHBwCi1AQCAtOTgsOSArOTgsOSBAQCBuYW1lc3BhY2UgZG5uIHsKLSAKLSAvLyBSZWFkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgaW50byBhIE5ldFBhcmFtZXRlciBwcm90byBtZXNzYWdlLgotIHZvaWQgUmVhZE5ldFBhcmFtc0Zyb21UZXh0RmlsZU9yRGllKGNvbnN0IGNoYXIqIHBhcmFtX2ZpbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmZmU6Ok5ldFBhcmFtZXRlciogcGFyYW0pOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5jdmNhZmZlOjpOZXRQYXJhbWV0ZXIqIHBhcmFtKTsKLSB2b2lkIFJlYWROZXRQYXJhbXNGcm9tQmluYXJ5RmlsZU9yRGllKGNvbnN0IGNoYXIqIHBhcmFtX2ZpbGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZmZTo6TmV0UGFyYW1ldGVyKiBwYXJhbSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuY3ZjYWZmZTo6TmV0UGFyYW1ldGVyKiBwYXJhbSk7Ci0gCi0gfQotIH0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL29wZW5jdi1jYWZmZS5wcm90bwotaW5kZXggM2QyM2ZiNDhlYTZhLi5kZjRlMWQzMjY5YWUgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCi0rKysgYi9tb2R1bGVzL2Rubi9zcmMvY2FmZmUvb3BlbmN2LWNhZmZlLnByb3RvCi1AQCAtNDgsNyArNDgsNyBAQAotIAotIHN5bnRheCA9ICJwcm90bzIiOwotIAotLXBhY2thZ2UgY2FmZmU7Ci0rcGFja2FnZSBvcGVuY3ZjYWZmZTsKLSAKLSAvLyBTcGVjaWZpZXMgdGhlIHNoYXBlIChkaW1lbnNpb25zKSBvZiBhIEJsb2IuCi0gbWVzc2FnZSBCbG9iU2hhcGUgewotZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAgYi9tb2R1bGVzL2Rubi9zcmMvbGF5ZXJzL2RldGVjdGlvbl9vdXRwdXRfbGF5ZXIuY3BwCi1pbmRleCBmNDEzYmFkNWI4MWEuLjgzMmMyNTdlZWJmOSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKLSsrKyBiL21vZHVsZXMvZG5uL3NyYy9sYXllcnMvZGV0ZWN0aW9uX291dHB1dF9sYXllci5jcHAKLUBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKLSAKLSAgICAgaW50IF9iYWNrZ3JvdW5kTGFiZWxJZDsKLSAKLS0gICAgdHlwZWRlZiBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGUgQ29kZVR5cGU7Ci0rICAgIHR5cGVkZWYgb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlIENvZGVUeXBlOwotICAgICBDb2RlVHlwZSBfY29kZVR5cGU7Ci0gCi0gICAgIGJvb2wgX3ZhcmlhbmNlRW5jb2RlZEluVGFyZ2V0OwotQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgotICAgICBlbnVtIHsgX251bUF4ZXMgPSA0IH07Ci0gICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBfbGF5ZXJOYW1lOwotIAotLSAgICB0eXBlZGVmIHN0ZDo6bWFwPGludCwgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiA+IExhYmVsQkJveDsKLSsgICAgdHlwZWRlZiBzdGQ6Om1hcDxpbnQsIHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4gPiBMYWJlbEJCb3g7Ci0gCi0gICAgIGJvb2wgZ2V0UGFyYW1ldGVyRGljdChjb25zdCBMYXllclBhcmFtcyAmcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBhcmFtZXRlck5hbWUsCi1AQCAtMTMxLDExICsxMzEsMTEgQEAgcHVibGljOgotICAgICB7Ci0gICAgICAgICBTdHJpbmcgY29kZVR5cGVTdHJpbmcgPSBwYXJhbXMuZ2V0PFN0cmluZz4oImNvZGVfdHlwZSIpLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICBpZiAoY29kZVR5cGVTdHJpbmcgPT0gImNvcm5lciIpCi0tICAgICAgICAgICAgX2NvZGVUeXBlID0gY2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjsKLSsgICAgICAgICAgICBfY29kZVR5cGUgPSBvcGVuY3ZjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOwotICAgICAgICAgZWxzZSBpZiAoY29kZVR5cGVTdHJpbmcgPT0gImNlbnRlcl9zaXplIikKLS0gICAgICAgICAgICBfY29kZVR5cGUgPSBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ0VOVEVSX1NJWkU7Ci0rICAgICAgICAgICAgX2NvZGVUeXBlID0gb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NFTlRFUl9TSVpFOwotICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIF9jb2RlVHlwZSA9IGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DT1JORVI7Ci0rICAgICAgICAgICAgX2NvZGVUeXBlID0gb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjsKLSAgICAgfQotIAotICAgICBEZXRlY3Rpb25PdXRwdXRMYXllckltcGwoY29uc3QgTGF5ZXJQYXJhbXMgJnBhcmFtcykKLUBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgotICAgICAgICAgICAgIEdldENvbmZpZGVuY2VTY29yZXMoY29uZmlkZW5jZURhdGEsIG51bSwgbnVtUHJpb3JzLCBfbnVtQ2xhc3NlcywgYWxsQ29uZmlkZW5jZVNjb3Jlcyk7Ci0gCi0gICAgICAgICAgICAgLy8gUmV0cmlldmUgYWxsIHByaW9yIGJib3hlcwotLSAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4gcHJpb3JCQm94ZXM7Ci0rICAgICAgICAgICAgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiBwcmlvckJCb3hlczsKLSAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnZlY3RvcjxmbG9hdD4gPiBwcmlvclZhcmlhbmNlczsKLSAgICAgICAgICAgICBHZXRQcmlvckJCb3hlcyhwcmlvckRhdGEsIG51bVByaW9ycywgcHJpb3JCQm94ZXMsIHByaW9yVmFyaWFuY2VzKTsKLSAKLUBAIC0yNzIsNyArMjcyLDcgQEAgcHVibGljOgotICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5kaWNlcy5zaXplKCk7ICsraiwgKytjb3VudCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGludCBpZHggPSBpbmRpY2VzW2pdOwotLSAgICAgICAgICAgICAgICBjb25zdCBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGRlY29kZV9iYm94ID0gbGFiZWxfYmJveGVzLT5zZWNvbmRbaWR4XTsKLSsgICAgICAgICAgICAgICAgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBkZWNvZGVfYmJveCA9IGxhYmVsX2Jib3hlcy0+c2Vjb25kW2lkeF07Ci0gICAgICAgICAgICAgICAgIG91dHB1dHNEYXRhW2NvdW50ICogN10gPSBpOwotICAgICAgICAgICAgICAgICBvdXRwdXRzRGF0YVtjb3VudCAqIDcgKyAxXSA9IGxhYmVsOwotICAgICAgICAgICAgICAgICBvdXRwdXRzRGF0YVtjb3VudCAqIDcgKyAyXSA9IHNjb3Jlc1tpZHhdOwotQEAgLTM1NSw3ICszNTUsNyBAQCBwdWJsaWM6Ci0gCi0gICAgIC8vIENvbXB1dGUgYmJveCBzaXplCi0gICAgIHRlbXBsYXRlPGJvb2wgbm9ybWFsaXplZD4KLS0gICAgc3RhdGljIGZsb2F0IEJCb3hTaXplKGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCkKLSsgICAgc3RhdGljIGZsb2F0IEJCb3hTaXplKGNvbnN0IG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCkKLSAgICAgewotICAgICAgICAgaWYgKGJib3gueG1heCgpIDwgYmJveC54bWluKCkgfHwgYmJveC55bWF4KCkgPCBiYm94LnltaW4oKSkKLSAgICAgICAgIHsKLUBAIC0zODgsMTAgKzM4OCwxMCBAQCBwdWJsaWM6Ci0gICAgIC8vIERlY29kZSBhIGJib3ggYWNjb3JkaW5nIHRvIGEgcHJpb3IgYmJveAotICAgICB0ZW1wbGF0ZTxib29sIHZhcmlhbmNlX2VuY29kZWRfaW5fdGFyZ2V0PgotICAgICBzdGF0aWMgdm9pZCBEZWNvZGVCQm94KAotLSAgICAgICAgY29uc3QgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBwcmlvcl9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHByaW9yX3ZhcmlhbmNlLAotKyAgICAgICAgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBwcmlvcl9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHByaW9yX3ZhcmlhbmNlLAotICAgICAgICAgY29uc3QgQ29kZVR5cGUgY29kZV90eXBlLAotLSAgICAgICAgY29uc3QgYm9vbCBjbGlwX2Jib3gsIGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveCwKLS0gICAgICAgIGNhZmZlOjpOb3JtYWxpemVkQkJveCYgZGVjb2RlX2Jib3gpCi0rICAgICAgICBjb25zdCBib29sIGNsaXBfYmJveCwgY29uc3Qgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94LAotKyAgICAgICAgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBkZWNvZGVfYmJveCkKLSAgICAgewotICAgICAgICAgZmxvYXQgYmJveF94bWluID0gdmFyaWFuY2VfZW5jb2RlZF9pbl90YXJnZXQgPyBiYm94LnhtaW4oKSA6IHByaW9yX3ZhcmlhbmNlWzBdICogYmJveC54bWluKCk7Ci0gICAgICAgICBmbG9hdCBiYm94X3ltaW4gPSB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCA/IGJib3gueW1pbigpIDogcHJpb3JfdmFyaWFuY2VbMV0gKiBiYm94LnltaW4oKTsKLUBAIC0zOTksMTMgKzM5OSwxMyBAQCBwdWJsaWM6Ci0gICAgICAgICBmbG9hdCBiYm94X3ltYXggPSB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCA/IGJib3gueW1heCgpIDogcHJpb3JfdmFyaWFuY2VbM10gKiBiYm94LnltYXgoKTsKLSAgICAgICAgIHN3aXRjaChjb2RlX3R5cGUpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgY2FzZSBjYWZmZTo6UHJpb3JCb3hQYXJhbWV0ZXJfQ29kZVR5cGVfQ09STkVSOgotKyAgICAgICAgICAgIGNhc2Ugb3BlbmN2Y2FmZmU6OlByaW9yQm94UGFyYW1ldGVyX0NvZGVUeXBlX0NPUk5FUjoKLSAgICAgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htaW4ocHJpb3JfYmJveC54bWluKCkgKyBiYm94X3htaW4pOwotICAgICAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeW1pbihwcmlvcl9iYm94LnltaW4oKSArIGJib3hfeW1pbik7Ci0gICAgICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF94bWF4KHByaW9yX2Jib3gueG1heCgpICsgYmJveF94bWF4KTsKLSAgICAgICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3ltYXgocHJpb3JfYmJveC55bWF4KCkgKyBiYm94X3ltYXgpOwotICAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICBjYXNlIGNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DRU5URVJfU0laRToKLSsgICAgICAgICAgICBjYXNlIG9wZW5jdmNhZmZlOjpQcmlvckJveFBhcmFtZXRlcl9Db2RlVHlwZV9DRU5URVJfU0laRToKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGZsb2F0IHByaW9yX3dpZHRoID0gcHJpb3JfYmJveC54bWF4KCkgLSBwcmlvcl9iYm94LnhtaW4oKTsKLSAgICAgICAgICAgICAgICAgQ1ZfQXNzZXJ0KHByaW9yX3dpZHRoID4gMCk7Ci1AQCAtNDMxLDcgKzQzMSw3IEBAIHB1YmxpYzoKLSAgICAgICAgIH07Ci0gICAgICAgICBpZiAoY2xpcF9iYm94KQotICAgICAgICAgewotLSAgICAgICAgICAgIC8vIENsaXAgdGhlIGNhZmZlOjpOb3JtYWxpemVkQkJveCBzdWNoIHRoYXQgdGhlIHJhbmdlIGZvciBlYWNoIGNvcm5lciBpcyBbMCwgMV0KLSsgICAgICAgICAgICAvLyBDbGlwIHRoZSBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3ggc3VjaCB0aGF0IHRoZSByYW5nZSBmb3IgZWFjaCBjb3JuZXIgaXMgWzAsIDFdCi0gICAgICAgICAgICAgZGVjb2RlX2Jib3guc2V0X3htaW4oc3RkOjptYXgoc3RkOjptaW4oZGVjb2RlX2Jib3gueG1pbigpLCAxLmYpLCAwLmYpKTsKLSAgICAgICAgICAgICBkZWNvZGVfYmJveC5zZXRfeW1pbihzdGQ6Om1heChzdGQ6Om1pbihkZWNvZGVfYmJveC55bWluKCksIDEuZiksIDAuZikpOwotICAgICAgICAgICAgIGRlY29kZV9iYm94LnNldF94bWF4KHN0ZDo6bWF4KHN0ZDo6bWluKGRlY29kZV9iYm94LnhtYXgoKSwgMS5mKSwgMC5mKSk7Ci1AQCAtNDQzLDExICs0NDMsMTEgQEAgcHVibGljOgotIAotICAgICAvLyBEZWNvZGUgYSBzZXQgb2YgYmJveGVzIGFjY29yZGluZyB0byBhIHNldCBvZiBwcmlvciBiYm94ZXMKLSAgICAgc3RhdGljIHZvaWQgRGVjb2RlQkJveGVzKAotLSAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAotKyAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JfYmJveGVzLAotICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4mIHByaW9yX3ZhcmlhbmNlcywKLSAgICAgICAgIGNvbnN0IENvZGVUeXBlIGNvZGVfdHlwZSwgY29uc3QgYm9vbCB2YXJpYW5jZV9lbmNvZGVkX2luX3RhcmdldCwKLS0gICAgICAgIGNvbnN0IGJvb2wgY2xpcF9iYm94LCBjb25zdCBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBiYm94ZXMsCi0tICAgICAgICBzdGQ6OnZlY3RvcjxjYWZmZTo6Tm9ybWFsaXplZEJCb3g+JiBkZWNvZGVfYmJveGVzKQotKyAgICAgICAgY29uc3QgYm9vbCBjbGlwX2Jib3gsIGNvbnN0IHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGJib3hlcywKLSsgICAgICAgIHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIGRlY29kZV9iYm94ZXMpCi0gICAgIHsKLSAgICAgICAgIENWX0Fzc2VydChwcmlvcl9iYm94ZXMuc2l6ZSgpID09IHByaW9yX3ZhcmlhbmNlcy5zaXplKCkpOwotICAgICAgICAgQ1ZfQXNzZXJ0KHByaW9yX2Jib3hlcy5zaXplKCkgPT0gYmJveGVzLnNpemUoKSk7Ci1AQCAtNDcwLDcgKzQ3MCw3IEBAIHB1YmxpYzoKLSAKLSAgICAgLy8gRGVjb2RlIGFsbCBiYm94ZXMgaW4gYSBiYXRjaAotICAgICBzdGF0aWMgdm9pZCBEZWNvZGVCQm94ZXNBbGwoY29uc3Qgc3RkOjp2ZWN0b3I8TGFiZWxCQm94PiYgYWxsX2xvY19wcmVkcywKLS0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNhZmZlOjpOb3JtYWxpemVkQkJveD4mIHByaW9yX2Jib3hlcywKLSsgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveD4mIHByaW9yX2Jib3hlcywKLSAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0PiA+JiBwcmlvcl92YXJpYW5jZXMsCi0gICAgICAgICBjb25zdCBpbnQgbnVtLCBjb25zdCBib29sIHNoYXJlX2xvY2F0aW9uLAotICAgICAgICAgY29uc3QgaW50IG51bV9sb2NfY2xhc3NlcywgY29uc3QgaW50IGJhY2tncm91bmRfbGFiZWxfaWQsCi1AQCAtNTAzLDEwICs1MDMsMTAgQEAgcHVibGljOgotICAgICAvLyBHZXQgcHJpb3IgYm91bmRpbmcgYm94ZXMgZnJvbSBwcmlvcl9kYXRhCi0gICAgIC8vICAgIHByaW9yX2RhdGE6IDEgeCAyIHggbnVtX3ByaW9ycyAqIDQgeCAxIGJsb2IuCi0gICAgIC8vICAgIG51bV9wcmlvcnM6IG51bWJlciBvZiBwcmlvcnMuCi0tICAgIC8vICAgIHByaW9yX2Jib3hlczogc3RvcmVzIGFsbCB0aGUgcHJpb3IgYmJveGVzIGluIHRoZSBmb3JtYXQgb2YgY2FmZmU6Ok5vcm1hbGl6ZWRCQm94LgotKyAgICAvLyAgICBwcmlvcl9iYm94ZXM6IHN0b3JlcyBhbGwgdGhlIHByaW9yIGJib3hlcyBpbiB0aGUgZm9ybWF0IG9mIG9wZW5jdmNhZmZlOjpOb3JtYWxpemVkQkJveC4KLSAgICAgLy8gICAgcHJpb3JfdmFyaWFuY2VzOiBzdG9yZXMgYWxsIHRoZSB2YXJpYW5jZXMgbmVlZGVkIGJ5IHByaW9yIGJib3hlcy4KLSAgICAgc3RhdGljIHZvaWQgR2V0UHJpb3JCQm94ZXMoY29uc3QgZmxvYXQqIHByaW9yRGF0YSwgY29uc3QgaW50JiBudW1QcmlvcnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JCQm94ZXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgcHJpb3JCQm94ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4mIHByaW9yVmFyaWFuY2VzKQotICAgICB7Ci0gICAgICAgICBwcmlvckJCb3hlcy5jbGVhcigpOyBwcmlvckJCb3hlcy5yZXNpemUobnVtUHJpb3JzKTsKLUBAIC01MTQsNyArNTE0LDcgQEAgcHVibGljOgotICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QcmlvcnM7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnQgc3RhcnRJZHggPSBpICogNDsKLS0gICAgICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBwcmlvckJCb3hlc1tpXTsKLSsgICAgICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBwcmlvckJCb3hlc1tpXTsKLSAgICAgICAgICAgICBiYm94LnNldF94bWluKHByaW9yRGF0YVtzdGFydElkeF0pOwotICAgICAgICAgICAgIGJib3guc2V0X3ltaW4ocHJpb3JEYXRhW3N0YXJ0SWR4ICsgMV0pOwotICAgICAgICAgICAgIGJib3guc2V0X3htYXgocHJpb3JEYXRhW3N0YXJ0SWR4ICsgMl0pOwotQEAgLTU2NSw3ICs1NjUsNyBAQCBwdWJsaWM6Ci0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxCQm94W2xhYmVsXS5yZXNpemUobnVtUHJlZHNQZXJDbGFzcyk7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3ggPSBsYWJlbEJCb3hbbGFiZWxdW3BdOwotKyAgICAgICAgICAgICAgICAgICAgb3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94JiBiYm94ID0gbGFiZWxCQm94W2xhYmVsXVtwXTsKLSAgICAgICAgICAgICAgICAgICAgIGJib3guc2V0X3htaW4obG9jRGF0YVtzdGFydElkeCArIGMgKiA0XSk7Ci0gICAgICAgICAgICAgICAgICAgICBiYm94LnNldF95bWluKGxvY0RhdGFbc3RhcnRJZHggKyBjICogNCArIDFdKTsKLSAgICAgICAgICAgICAgICAgICAgIGJib3guc2V0X3htYXgobG9jRGF0YVtzdGFydElkeCArIGMgKiA0ICsgMl0pOwotQEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJsaWM6Ci0gICAgIC8vICAgIG5tc190aHJlc2hvbGQ6IGEgdGhyZXNob2xkIHVzZWQgaW4gbm9uIG1heGltdW0gc3VwcHJlc3Npb24uCi0gICAgIC8vICAgIHRvcF9rOiBpZiBub3QgLTEsIGtlZXAgYXQgbW9zdCB0b3BfayBwaWNrZWQgaW5kaWNlcy4KLSAgICAgLy8gICAgaW5kaWNlczogdGhlIGtlcHQgaW5kaWNlcyBvZiBiYm94ZXMgYWZ0ZXIgbm1zLgotLSAgICBzdGF0aWMgdm9pZCBBcHBseU5NU0Zhc3QoY29uc3Qgc3RkOjp2ZWN0b3I8Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgYmJveGVzLAotKyAgICBzdGF0aWMgdm9pZCBBcHBseU5NU0Zhc3QoY29uc3Qgc3RkOjp2ZWN0b3I8b3BlbmN2Y2FmZmU6Ok5vcm1hbGl6ZWRCQm94PiYgYmJveGVzLAotICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxmbG9hdD4mIHNjb3JlcywgY29uc3QgZmxvYXQgc2NvcmVfdGhyZXNob2xkLAotICAgICAgICAgICBjb25zdCBmbG9hdCBubXNfdGhyZXNob2xkLCBjb25zdCBmbG9hdCBldGEsIGNvbnN0IGludCB0b3BfaywKLSAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiYgaW5kaWNlcykKLUBAIC02NzQsMTAgKzY3NCwxMCBAQCBwdWJsaWM6Ci0gCi0gICAgIC8vIENvbXB1dGUgdGhlIGphY2NhcmQgKGludGVyc2VjdGlvbiBvdmVyIHVuaW9uIElvVSkgb3ZlcmxhcCBiZXR3ZWVuIHR3byBiYm94ZXMuCi0gICAgIHRlbXBsYXRlPGJvb2wgbm9ybWFsaXplZD4KLS0gICAgc3RhdGljIGZsb2F0IEphY2NhcmRPdmVybGFwKGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhZmZlOjpOb3JtYWxpemVkQkJveCYgYmJveDIpCi0rICAgIHN0YXRpYyBmbG9hdCBKYWNjYXJkT3ZlcmxhcChjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3gxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3gmIGJib3gyKQotICAgICB7Ci0tICAgICAgICBjYWZmZTo6Tm9ybWFsaXplZEJCb3ggaW50ZXJzZWN0X2Jib3g7Ci0rICAgICAgICBvcGVuY3ZjYWZmZTo6Tm9ybWFsaXplZEJCb3ggaW50ZXJzZWN0X2Jib3g7Ci0gICAgICAgICBpZiAoYmJveDIueG1pbigpID4gYmJveDEueG1heCgpIHx8IGJib3gyLnhtYXgoKSA8IGJib3gxLnhtaW4oKSB8fAotICAgICAgICAgICAgIGJib3gyLnltaW4oKSA+IGJib3gxLnltYXgoKSB8fCBiYm94Mi55bWF4KCkgPCBiYm94MS55bWluKCkpCi0gICAgICAgICB7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcCBiL21vZHVsZXMvZG5uL3NyYy9jYWZmZS9jYWZmZV9pby5jcHAKLWluZGV4IDFkM2M1MThmMTMyOC4uM2NmNmUyNTVhYTYwIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAotKysrIGIvbW9kdWxlcy9kbm4vc3JjL2NhZmZlL2NhZmZlX2lvLmNwcAotQEAgLTEwNyw3ICsxMDcsNyBAQCBuYW1lc3BhY2UgZG5uIHsKLSAKLSB1c2luZyBzdGQ6OnN0cmluZzsKLSB1c2luZyBzdGQ6Om1hcDsKLS11c2luZyBuYW1lc3BhY2UgY2FmZmU7Ci0rdXNpbmcgbmFtZXNwYWNlIG9wZW5jdmNhZmZlOwotIHVzaW5nIG5hbWVzcGFjZSA6Omdvb2dsZTo6cHJvdG9idWY7Ci0gdXNpbmcgbmFtZXNwYWNlIDo6Z29vZ2xlOjpwcm90b2J1Zjo6aW87Ci0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2ZpeHBrZ2NvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvZml4cGtnY29uZmlnLnBhdGNoCmluZGV4IDNhZWRhN2QuLjNlZDM0NjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvZml4cGtnY29uZmlnLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvZml4cGtnY29uZmlnLnBhdGNoCkBAIC0xLDI0ICsxLDI1IEBACi1kaWZmIC0tZ2l0IGEvY21ha2UvT3BlbkNWR2VuUGtnY29uZmlnLmNtYWtlIGIvY21ha2UvT3BlbkNWR2VuUGtnY29uZmlnLmNtYWtlCi1pbmRleCBiOGNiODc3N2MwNmIuLjc1MjgxZWU5NjRmZCAxMDA2NDQKLS0tLSBhL2NtYWtlL09wZW5DVkdlblBrZ2NvbmZpZy5jbWFrZQotKysrIGIvY21ha2UvT3BlbkNWR2VuUGtnY29uZmlnLmNtYWtlCi1AQCAtMjcsNyArMjcsNyBAQCBtYWNybyhmaXhfcHJlZml4IGxzdCBpc293bikKK0luZGV4OiBnaXQvY21ha2UvT3BlbkNWR2VuUGtnY29uZmlnLmNtYWtlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY21ha2UvT3BlbkNWR2VuUGtnY29uZmlnLmNtYWtlCisrKysgZ2l0L2NtYWtlL09wZW5DVkdlblBrZ2NvbmZpZy5jbWFrZQorQEAgLTMxLDcgKzMxLDcgQEAgbWFjcm8oZml4X3ByZWZpeCBsc3QgaXNvd24pCiAgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChsaWJkaXIgIiR7aXRlbX0iIFBBVEgpCi0gICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChsaWJuYW1lICIke2l0ZW19IiBOQU1FX1dFKQotICAgICAgIHN0cmluZyhSRUdFWCBSRVBMQUNFICJebGliKC4qKSIgIlxcMSIgbGlibmFtZSAiJHtsaWJuYW1lfSIpCisgICAgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfbGlibmFtZSAiJHtpdGVtfSIgTkFNRSkKKyAgICAgICBvY3ZfZ2V0X2xpYm5hbWUobGlibmFtZSAiJHtfbGlibmFtZX0iKQogLSAgICAgIGxpc3QoQVBQRU5EIF9sc3QgIi1MJHtsaWJkaXJ9IiAiLWwke2xpYm5hbWV9IikKICsgICAgICBsaXN0KEFQUEVORCBfbHN0ICItbCR7bGlibmFtZX0iKQogICAgICBlbHNlKCkKICAgICAgICBsaXN0KEFQUEVORCBfbHN0ICItbCR7aXRlbX0iKQogICAgICBlbmRpZigpCi1AQCAtNjYsMTAgKzY2LDE0IEBAIG9jdl9saXN0X3VuaXF1ZShfM3JkcGFydHkpCitAQCAtMTI0LDExICsxMjQsMTQgQEAgb2N2X2xpc3RfdW5pcXVlKF9leHRyYSkKKyBvY3ZfbGlzdF91bmlxdWUoXzNyZHBhcnR5KQogIAogIHNldChPUEVOQ1ZfUENfTElCUwotICAgIi1MXCR7ZXhlY19wcmVmaXh9LyR7T1BFTkNWX0xJQl9JTlNUQUxMX1BBVEh9IgorLSAgIi1MXCR7ZXhlY19wcmVmaXh9LyR7T1BFTkNWX0xJQl9JTlNUQUxMX1BBVEh9IgogKyAgIi1MXCR7ZXhlY19wcmVmaXh9LyR7T1BFTkNWXzNQX0xJQl9JTlNUQUxMX1BBVEh9IgogICAgIiR7X21vZHVsZXN9IgogICkKLSBpZiAoQlVJTERfU0hBUkVEX0xJQlMpCisgaWYoQlVJTERfU0hBUkVEX0xJQlMpCiAtICBzZXQoT1BFTkNWX1BDX0xJQlNfUFJJVkFURSAiJHtfZXh0cmF9IikKICsgIHNldChPUEVOQ1ZfUENfTElCU19QUklWQVRFCiArICAgICItTFwke2V4ZWNfcHJlZml4fS8ke09QRU5DVl9MSUJfSU5TVEFMTF9QQVRIfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvamF2YWdlbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3YvamF2YWdlbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY1MjZlYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L2phdmFnZW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXSBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi9wdWxsLzEwMDM5I2lzc3VlY29tbWVudC0zNDI1MzkyODgKLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dAotaW5kZXggNzRiYzBlZjA0MTY5Li40NjIyZmJmOWE1ZjEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2phdmEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL21vZHVsZXMvamF2YS9DTWFrZUxpc3RzLnR4dAotQEAgLTI5MSw3ICsyOTEsNyBAQCBmb3JlYWNoKGphdmFfZmlsZSAke3N0ZXAzX2lucHV0X2ZpbGVzfSkKLSAgIGVuZGlmKCkKLSAgIGlmKF9fY29uZmlndXJlKQotICAgICBjb25maWd1cmVfZmlsZSgiJHtqYXZhX2ZpbGV9IiAiJHtqYXZhX3NyY19kaXJ9LyR7b3V0cHV0X25hbWV9IiBAT05MWSkKLS0gIGVsc2VpZihOT1QgIiR7amF2YV9maWxlfSIgTUFUQ0hFUyAiJHtPcGVuQ1ZfQklOQVJZX0RJUn0vIikKLSsgIGVsc2VpZihFWElTVFMgIiR7amF2YV9maWxlfSIgQU5EIE5PVCAiJHtqYXZhX2ZpbGV9IiBNQVRDSEVTICIke09wZW5DVl9CSU5BUllfRElSfS8iKQotICAgICBjb25maWd1cmVfZmlsZSgiJHtqYXZhX2ZpbGV9IiAiJHtqYXZhX3NyY19kaXJ9LyR7b3V0cHV0X25hbWV9IiBDT1BZT05MWSkKLSAgIGVsc2UoKQotICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIke2phdmFfc3JjX2Rpcn0vJHtvdXRwdXRfbmFtZX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Byb3RvYnVmLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi9wcm90b2J1Zi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzZGMxNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Byb3RvYnVmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZSBiL2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZQotaW5kZXggYjZjZTFlN2ZkNTZiLi5lOTE2ZWMwZGYyYTYgMTAwNjQ0Ci0tLS0gYS9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UKLSsrKyBiL2NtYWtlL09wZW5DVkZpbmRMaWJQcm90b2J1Zi5jbWFrZQotQEAgLTcsMjEgKzcsMjEgQEAgT0NWX09QVElPTihCVUlMRF9QUk9UT0JVRiAiRm9yY2UgdG8gYnVpbGQgbGlicHJvdG9idWYgZnJvbSBzb3VyY2VzIiBPTikKLSBPQ1ZfT1BUSU9OKFBST1RPQlVGX1VQREFURV9GSUxFUyAiRm9yY2UgdG8gcmVidWlsZCAucHJvdG8gZmlsZXMiIE9GRikKLSAKLSBpZihQUk9UT0JVRl9VUERBVEVfRklMRVMpCi0tICBpZihOT1QgREVGSU5FRCBQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRSkKLSsgIGlmKE5PVCBERUZJTkVEIFBST1RPQlVGX1BST1RPQ19FWEVDVVRBQkxFKQotICAgICBmaW5kX3BhY2thZ2UoUHJvdG9idWYgUVVJRVQpCi0gICBlbmRpZigpCi0tICBpZihERUZJTkVEIFByb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFIEFORCBFWElTVFMgJHtQcm90b2J1Zl9QUk9UT0NfRVhFQ1VUQUJMRX0pCi0tICAgIG1lc3NhZ2UoU1RBVFVTICJUaGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyIGlzIGZvdW5kICgke1Byb3RvYnVmX1BST1RPQ19FWEVDVVRBQkxFfSkiKQotKyAgaWYoREVGSU5FRCBQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRSBBTkQgRVhJU1RTICR7UFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEV9KQotKyAgICBtZXNzYWdlKFNUQVRVUyAiVGhlIHByb3RvY29sIGJ1ZmZlciBjb21waWxlciBpcyBmb3VuZCAoJHtQUk9UT0JVRl9QUk9UT0NfRVhFQ1VUQUJMRX0pIikKLSAgIGVsc2UoKQotLSAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJUaGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyIGlzIG5vdCBmb3VuZCAoUHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEU9JyR7UHJvdG9idWZfUFJPVE9DX0VYRUNVVEFCTEV9JykiKQotKyAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJUaGUgcHJvdG9jb2wgYnVmZmVyIGNvbXBpbGVyIGlzIG5vdCBmb3VuZCAoUFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEU9JyR7UFJPVE9CVUZfUFJPVE9DX0VYRUNVVEFCTEV9JykiKQotICAgZW5kaWYoKQotIGVuZGlmKCkKLSAKLS1pZihOT1QgQlVJTERfUFJPVE9CVUYgQU5EIE5PVCAoREVGSU5FRCBQcm90b2J1Zl9JTkNMVURFX0RJUlMgQU5EIERFRklORUQgUHJvdG9idWZfTElCUkFSSUVTKSkKLStpZihOT1QgQlVJTERfUFJPVE9CVUYgQU5EIE5PVCAoREVGSU5FRCBQUk9UT0JVRl9JTkNMVURFX0RJUiBBTkQgREVGSU5FRCBQUk9UT0JVRl9MSUJSQVJJRVMpKQotICAgZmluZF9wYWNrYWdlKFByb3RvYnVmIFFVSUVUKQotIGVuZGlmKCkKLSAKLS1pZihQcm90b2J1Zl9GT1VORCkKLStpZihQUk9UT0JVRl9GT1VORCBPUiAoREVGSU5FRCBQUk9UT0JVRl9JTkNMVURFX0RJUiBBTkQgREVGSU5FRCBQUk9UT0JVRl9MSUJSQVJJRVMpKQotICAgIyBub3RoaW5nCi0gZWxzZSgpCi0gICBzZXQoUHJvdG9idWZfTElCUkFSSUVTIGxpYnByb3RvYnVmKQotZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0IGIvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQKLWluZGV4IDJhNzE1NjhkMWE0NC4uYzYzMjlhNzQyMjYzIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9kbm4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL21vZHVsZXMvZG5uL0NNYWtlTGlzdHMudHh0Ci1AQCAtNyw3ICs3LDcgQEAgaWYoREVGSU5FRCBCVUlMRF9vcGVuY3ZfZG5uIEFORCBOT1QgQlVJTERfb3BlbmN2X2RubikKLSBlbmRpZigpCi0gCi0gaW5jbHVkZSgke09wZW5DVl9TT1VSQ0VfRElSfS9jbWFrZS9PcGVuQ1ZGaW5kTGliUHJvdG9idWYuY21ha2UpCi0taWYoTk9UIFByb3RvYnVmX0ZPVU5EKQotK2lmKE5PVCBQUk9UT0JVRl9GT1VORCkKLSAgIG9jdl9tb2R1bGVfZGlzYWJsZShvcGVuY3ZfZG5uKQotIGVuZGlmKCkKLSAKLUBAIC03Miw3ICs3Miw3IEBAIG9jdl9zb3VyY2VfZ3JvdXAoIlNyY1xccHJvdG9idWYiIEZJTEVTICR7UHJvdG9idWZfU1JDU30gJHtQcm90b2J1Zl9IRFJTfSkKLSBvY3ZfbW9kdWxlX2luY2x1ZGVfZGlyZWN0b3JpZXMoaW5jbHVkZSAke1Byb3RvYnVmX0lOQ0xVREVfRElSU30pCi0gCi0gb2N2X2dsb2JfbW9kdWxlX3NvdXJjZXMoJHtQcm90b2J1Zl9TUkNTfSAke1Byb3RvYnVmX0hEUlN9ICR7Q0JMQVNfSF9QUk9YWV9QQVRIfSkKLS1vY3ZfY3JlYXRlX21vZHVsZSgke1Byb3RvYnVmX0xJQlJBUklFU30gJHtMQVBBQ0tfTElCUkFSSUVTfSkKLStvY3ZfY3JlYXRlX21vZHVsZSgke1BST1RPQlVGX0xJQlJBUklFU30gJHtMQVBBQ0tfTElCUkFSSUVTfSkKLSBvY3ZfYWRkX3NhbXBsZXMoKQotIG9jdl9hZGRfYWNjdXJhY3lfdGVzdHMoKQotIG9jdl9hZGRfcGVyZl90ZXN0cygpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Rpbnlkbm4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2L3Rpbnlkbm4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MzNmYzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdi90aW55ZG5uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgotZGlmZiAtLWdpdCBhL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dCBiL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNzliNjRiMTIxNjBiLi5iYTA2YTBhMTYzZTQgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2Rubl9tb2Rlcm4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL21vZHVsZXMvZG5uX21vZGVybi9DTWFrZUxpc3RzLnR4dAotQEAgLTE1LDI0ICsxNSw4IEBAIGxpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9jbWFrZSkKLSAjIE1PRFVMRSBSRVFVSVJFTUVOVFMKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAKLS1zZXQoVElOWV9ETk5fQ1BQX1BBVEggIiR7T3BlbkNWX0JJTkFSWV9ESVJ9LzNyZHBhcnR5L3Rpbnlkbm4iKQotLXNldChUSU5ZX0ROTl9DUFBfUk9PVCAiJHtUSU5ZX0ROTl9DUFBfUEFUSH0vdGlueS1kbm4tMS4wLjBhMyIpCi0tb2N2X2Rvd25sb2FkKEZJTEVOQU1FICJ2MS4wLjBhMy50YXIuZ3oiCi0tICAgICAgICAgICAgICAgSEFTSCAiYWRiMWM1MTJlMDljYTJjN2E2ZmFlZjM2ZjljNTNlNTkiCi0tICAgICAgICAgICAgICAgVVJMCi0tICAgICAgICAgICAgICAgICAiJHtPUEVOQ1ZfVElOWV9ETk5fVVJMfSIKLS0gICAgICAgICAgICAgICAgICIkRU5We09QRU5DVl9USU5ZX0ROTl9VUkx9IgotLSAgICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS90aW55LWRubi90aW55LWRubi9hcmNoaXZlLyIKLS0gICAgICAgICAgICAgICBERVNUSU5BVElPTl9ESVIgIiR7VElOWV9ETk5fQ1BQX1BBVEh9IgotLSAgICAgICAgICAgICAgIFNUQVRVUyBUSU5ZX0ROTl9ET1dOTE9BRF9TVUNDRVNTCi0tICAgICAgICAgICAgICAgSUQgInRpbnktZG5uIgotLSAgICAgICAgICAgICAgIFVOUEFDSyBSRUxBVElWRV9VUkwpCi0tCi0taWYoTk9UIFRJTllfRE5OX0RPV05MT0FEX1NVQ0NFU1MpCi0tICBtZXNzYWdlKFNUQVRVUyAiRmFpbGVkIHRvIGRvd25sb2FkIHRpbnktZG5uIHNvdXJjZXMiKQotLWVuZGlmKCkKLS0KLS1maW5kX3BhY2thZ2UoVGlueUROTiBRVUlFVCkKLStzZXQoVElOWUROTl9JTkNMVURFX0RJUlMgIiR7T3BlbkNWX1NPVVJDRV9ESVJ9LzNyZHBhcnR5L3Rpbnlkbm4vdGlueS1kbm4tMS4wLjBhMyIpCi0rc2V0KFRpbnlETk5fRk9VTkQgVFJVRSkKLSAKLSBpbmNsdWRlKENoZWNrQ1hYQ29tcGlsZXJGbGFnKQotIENIRUNLX0NYWF9DT01QSUxFUl9GTEFHKCItc3RkPWMrKzExIiBDT01QSUxFUl9TVVBQT1JUU19DWFgxMSkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNjJkZTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmN2L29wZW5jdl8zLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuY3YgOiBUaGUgT3BlbiBDb21wdXRlciBWaXNpb24gTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9vcGVuY3Yub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYjJmODc1MmNjNWVkZjUwNGQyODMxMDdkMDMzZjU0NCIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotREVQRU5EUyA9ICJsaWJ0b29sIHN3aWctbmF0aXZlIGJ6aXAyIHpsaWIgZ2xpYi0yLjAgbGlid2VicCIKLQotU1JDUkVWX29wZW5jdiA9ICI4N2MyN2EwNzRkYjlmNmQ5ZDYwNTEzZjM1MWRhYTkwMzYwNmNhMzcwIgotU1JDUkVWX2NvbnRyaWIgPSAiMmE5ZDFiMjJlZDc2ZWIyMmZhZDFhNWVkZjZmYWY0ZDA1ZjIwN2IxMyIKLVNSQ1JFVl9pcHAgPSAiYTYyZTIwNjc2YTYwZWUwYWQ2NTgxZTIxN2ZlN2U0YmFkYTNiOTVkYiIKLVNSQ1JFVl9ib29zdGRlc2MgPSAiMzRlNDIwNmFlZjQ0ZDUwZTZiYmNkMGFiMDYzNTRiNTJlNzQ2NmQyNiIKLVNSQ1JFVl92Z2cgPSAiZmNjZjdjZDZhNGIxMjA3OWY3M2JiZmIyMTc0NWY5YmFiY2Q0ZWIxZCIKLVNSQ19VUklbdGlueWRubi5tZDVzdW1dID0gImFkYjFjNTEyZTA5Y2EyYzdhNmZhZWYzNmY5YzUzZTU5IgotU1JDX1VSSVt0aW55ZG5uLnNoYTI1NnN1bV0gPSAiZTJjNjFjZThjNWRlYmFhNjQ0MTIxMTc5ZTlkYmRjZjgzZjQ5N2YzOWRlODUzZjhkZDUxNzU4NDY1MDVhYTE4YiIKLQotZGVmIGlwcF9maWxlbmFtZShkKToKLSAgICBpbXBvcnQgcmUKLSAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKLSAgICBpZiByZS5tYXRjaCgiaS44NiQiLCBhcmNoKToKLSAgICAgICAgcmV0dXJuICJpcHBpY3ZfMjAxN3UyX2xueF9pYTMyXzIwMTcwNDE4LnRneiIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gImlwcGljdl8yMDE3dTJfbG54X2ludGVsNjRfMjAxNzA0MTgudGd6IgotCi1kZWYgaXBwX21kNXN1bShkKToKLSAgICBpbXBvcnQgcmUKLSAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKLSAgICBpZiByZS5tYXRjaCgiaS44NiQiLCBhcmNoKToKLSAgICAgICAgcmV0dXJuICJmMmNlY2UwMGQ4MDJkNGRlYTg2ZGY1MmVkMDk1MjU3ZSIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIjgwOGI3OTFhNmVhYzllZDc4ZDMyYTc2NjY4MDQzMjBlIgotCi1JUFBfRklMRU5BTUUgPSAiJHtAaXBwX2ZpbGVuYW1lKGQpfSIKLUlQUF9NRDUgPSAiJHtAaXBwX21kNXN1bShkKX0iCi0KLVNSQ1JFVl9GT1JNQVQgPSAib3BlbmN2X2NvbnRyaWJfaXBwX2Jvb3N0ZGVzY192Z2ciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi5naXQ7bmFtZT1vcGVuY3YgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliLmdpdDtkZXN0c3VmZml4PWNvbnRyaWI7bmFtZT1jb250cmliIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1pcHBpY3YvbWFzdGVyXzIwMTcwNDE4O2Rlc3RzdWZmaXg9aXBwO25hbWU9aXBwIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX2Jvb3N0ZGVzY18yMDE2MTAxMjtkZXN0c3VmZml4PWJvb3N0ZGVzYztuYW1lPWJvb3N0ZGVzYyBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF92Z2dfMjAxNjAzMTc7ZGVzdHN1ZmZpeD12Z2c7bmFtZT12Z2cgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aW55LWRubi90aW55LWRubi9hcmNoaXZlL3YxLjAuMGEzLnRhci5nejtkZXN0c3VmZml4PWdpdC8zcmRwYXJ0eS90aW55ZG5uL3RpbnktZG5uLTEuMC4wYTM7bmFtZT10aW55ZG5uO3VucGFjaz1mYWxzZSBcCi0gICAgZmlsZTovLzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2ggXAotICAgIGZpbGU6Ly9maXhwa2djb25maWcucGF0Y2ggXAotICAgIGZpbGU6Ly91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCi0gICAgZmlsZTovL3Rpbnlkbm4ucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAotICAgIGZpbGU6Ly8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1idWlsZC13b3JrYXJvdW5kLUdDQy03LjEuMS1jb21waWxhdGlvbi1pc3N1ZS13aXRoLXNhLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1pbWdjb2RlY3MtcmVmYWN0b3JpbmctaW1wcm92ZS1jb2RlLXF1YWxpdHkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWltZ3Byb2MtdGVzdC1hZGQtY2hlY2tzLWZvci1yZW1vdmUtY2FsbC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtRG9udC11c2UtaXN5c3RlbS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtY2Fyb3RlbmUtZG9uLXQtdXNlLV9fYXNtX18td2l0aC1hYXJjaDY0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Eby1ub3QtZW5hYmxlLWFzbS13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxMzYucGF0Y2ggXAotICAgIGZpbGU6Ly9qYXZhZ2VuLnBhdGNoIFwKLSAgICBmaWxlOi8vcHJvdG9idWYucGF0Y2ggXAotICAgIGZpbGU6Ly9hbHJlYWR5LWV4aXN0cy5wYXRjaCBcCi0iCi1QViA9ICIzLjMrZ2l0JHtTUkNQVn0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX3VucGFja19leHRyYSgpIHsKLSAgICBta2RpciAtcCAke1N9LzNyZHBhcnR5L3Rpbnlkbm4vCi0gICAgdGFyIHh6ZiAke1dPUktESVJ9L3YxLjAuMGEzLnRhci5neiAtQyAke1N9LzNyZHBhcnR5L3Rpbnlkbm4vCi0gICAgdGFyIHh6ZiAke1dPUktESVJ9L2lwcC9pcHBpY3YvJHtJUFBfRklMRU5BTUV9IC1DICR7V09SS0RJUn0KLSAgICBjcCAke1dPUktESVJ9L3ZnZy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCi0gICAgY3AgJHtXT1JLRElSfS9ib29zdGRlc2MvKi5pICR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzL3hmZWF0dXJlczJkL3NyYwotfQotYWRkdGFzayB1bnBhY2tfZXh0cmEgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAotCi1FWFRSQV9PRUNNQUtFID0gIi1ET1BFTkNWX0VYVFJBX01PRFVMRVNfUEFUSD0ke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcyBcCi0gICAgLURXSVRIXzEzOTQ9T0ZGIFwKLSAgICAtRENNQUtFX1NLSVBfUlBBVEg9T04gXAotICAgIC1ET1BFTkNWX0lDVl9IQVNIPSR7SVBQX01ENX0gXAotICAgIC1ESVBQUk9PVD0ke1dPUktESVJ9L2lwcGljdl9sbnggXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTMiLCAiLURFTkFCTEVfU1NFPTEgLURFTkFCTEVfU1NFMj0xIC1ERU5BQkxFX1NTRTM9MSAtREVOQUJMRV9TU1NFMz0xIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4xIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRBUkdFVF9DQ19BUkNIIiwgIi1tc3NlNC4yIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSAtREVOQUJMRV9TU0U0MT0xIC1ERU5BQkxFX1NTRTQyPTEiLCAiIiwgZCl9IFwKLSAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgibGliZGlyIiwgIi91c3IvbGliNjQiLCAiLURMSUJfU1VGRklYPTY0IiwgIiIsIGQpfSBcCi0gICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjMyIiwgIi1ETElCX1NVRkZJWD0zMiIsICIiLCBkKX0gXAotIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFg4Nj1PTiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgZWlnZW4ganBlZyBwbmcgdGlmZiB2NGwgbGlidjRsIGdzdHJlYW1lciBzYW1wbGVzIHRiYiBncGhvdG8yIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJndGsiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJsaWJhdiIsICIiLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYW1kYmxhc10gPSAiLURXSVRIX09QRU5DTEFNREJMQVM9T04sLURXSVRIX09QRU5DTEFNREJMQVM9T0ZGLGxpYmNsYW1kYmxhcywiCi1QQUNLQUdFQ09ORklHW2FtZGZmdF0gPSAiLURXSVRIX09QRU5DTEFNREZGVD1PTiwtRFdJVEhfT1BFTkNMQU1ERkZUPU9GRixsaWJjbGFtZGZmdCwiCi1QQUNLQUdFQ09ORklHW2Rubl0gPSAiLURCVUlMRF9vcGVuY3ZfZG5uPU9OIC1EUFJPVE9CVUZfVVBEQVRFX0ZJTEVTPU9OIC1EQlVJTERfUFJPVE9CVUY9T0ZGLC1EQlVJTERfb3BlbmN2X2Rubj1PRkYscHJvdG9idWYgcHJvdG9idWYtbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbZWlnZW5dID0gIi1EV0lUSF9FSUdFTj1PTiwtRFdJVEhfRUlHRU49T0ZGLGxpYmVpZ2VuIGdmbGFncyBnbG9nLCIKLVBBQ0tBR0VDT05GSUdbZnJlZXR5cGVdID0gIi1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9OLC1EQlVJTERfb3BlbmN2X2ZyZWV0eXBlPU9GRixmcmVldHlwZSwiCi1QQUNLQUdFQ09ORklHW2dwaG90bzJdID0gIi1EV0lUSF9HUEhPVE8yPU9OLC1EV0lUSF9HUEhPVE8yPU9GRixsaWJncGhvdG8yLCIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRFdJVEhfR1NUUkVBTUVSPU9OLC1EV0lUSF9HU1RSRUFNRVI9T0ZGLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLCIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItRFdJVEhfR1RLPU9OLC1EV0lUSF9HVEs9T0ZGLGd0ayszLCIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRFdJVEhfSkFTUEVSPU9OLC1EV0lUSF9KQVNQRVI9T0ZGLGphc3BlciwiCi1QQUNLQUdFQ09ORklHW2phdmFdID0gIi1ESkFWQV9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtKQVZBX0hPTUV9L2luY2x1ZGUvbGludXggLURKQVZBX0FXVF9JTkNMVURFX1BBVEg9JHtKQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0FXVF9MSUJSQVJZPSR7SkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtKQVZBX0hPTUV9L2xpYi9hbWQ2NC9zZXJ2ZXIvbGlianZtLnNvLCxhbnQtbmF0aXZlIGZhc3RqYXItbmF0aXZlIG9wZW5qZGstOC1uYXRpdmUsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiwtRFdJVEhfSlBFRz1PRkYsanBlZywiCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItRFdJVEhfRkZNUEVHPU9OLC1EV0lUSF9GRk1QRUc9T0ZGLGxpYmF2LCIKLVBBQ0tBR0VDT05GSUdbbGlidjRsXSA9ICItRFdJVEhfTElCVjRMPU9OLC1EV0lUSF9MSUJWNEw9T0ZGLHY0bC11dGlscywiCi1QQUNLQUdFQ09ORklHW29wZW5jbF0gPSAiLURXSVRIX09QRU5DTD1PTiwtRFdJVEhfT1BFTkNMPU9GRixvcGVuY2wtaGVhZGVycyB2aXJ0dWFsL29wZW5jbC1pY2QsIgotUEFDS0FHRUNPTkZJR1tvcmFjbGUtamF2YV0gPSAiLURKQVZBX0lOQ0xVREVfUEFUSD0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0lOQ0xVREVfUEFUSDI9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlL2xpbnV4IC1ESkFWQV9BV1RfSU5DTFVERV9QQVRIPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZSAtREpBVkFfQVdUX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvbGliamF3dC5zbyAtREpBVkFfSlZNX0xJQlJBUlk9JHtPUkFDTEVfSkFWQV9IT01FfS9saWIvYW1kNjQvc2VydmVyL2xpYmp2bS5zbywsYW50LW5hdGl2ZSBvcmFjbGUtanNlLWpkayBvcmFjbGUtanNlLWpkay1uYXRpdmUsIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLURQWVRIT04yX05VTVBZX0lOQ0xVREVfRElSUzpQQVRIPSR7U1RBR0lOR19MSUJESVJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9udW1weS9jb3JlL2luY2x1ZGUsLHB5dGhvbi1udW1weSwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi1EUFlUSE9OM19OVU1QWV9JTkNMVURFX0RJUlM6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLCxweXRob24zLW51bXB5LCIKLVBBQ0tBR0VDT05GSUdbc2FtcGxlc10gPSAiLURCVUlMRF9FWEFNUExFUz1PTiAtRElOU1RBTExfUFlUSE9OX0VYQU1QTEVTPU9OLC1EQlVJTERfRVhBTVBMRVM9T0ZGLCwiCi1QQUNLQUdFQ09ORklHW3RiYl0gPSAiLURXSVRIX1RCQj1PTiwtRFdJVEhfVEJCPU9GRix0YmIsIgotUEFDS0FHRUNPTkZJR1t0ZXh0XSA9ICItREJVSUxEX29wZW5jdl90ZXh0PU9OLC1EQlVJTERfb3BlbmN2X3RleHQ9T0ZGLHRlc3NlcmFjdCwiCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmLCIKLVBBQ0tBR0VDT05GSUdbdjRsXSA9ICItRFdJVEhfVjRMPU9OLC1EV0lUSF9WNEw9T0ZGLHY0bC11dGlscywiCi0KLWluaGVyaXQgcGtnY29uZmlnIGNtYWtlCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdkaXN0dXRpbHMzLWJhc2UnLCAnJywgZCl9Ci1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAnZGlzdHV0aWxzLWJhc2UnLCAnJywgZCl9Ci0KLWV4cG9ydCBQWVRIT05fQ1NQRUM9Ii1JJHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLWV4cG9ydCBQWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMnLCAncHl0aG9uJywgZCl9IgotZXhwb3J0IE9SQUNMRV9KQVZBX0hPTUU9IiR7U1RBR0lOR19ESVJfTkFUSVZFfS91c3IvYmluL2phdmEiCi1leHBvcnQgSkFWQV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2xpYi9qdm0vb3Blbmpkay04LW5hdGl2ZSIKLWV4cG9ydCBBTlRfRElSPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL3NoYXJlL2FudC8iCi0KLVRBUkdFVF9DQ19BUkNIICs9ICItSSR7U30vaW5jbHVkZSAiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzYW1wbGVzJywgJyR7UE59LXNhbXBsZXMnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdvcmFjbGUtamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnamF2YScsICcke1BOfS1qYXZhJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24tJHtCUE59JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLSR7QlBOfScsICcnLCBkKX0gXAotICAgICR7UE59LWFwcHMiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBjdl9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzLWRldicsICdPcGVuQ1YgJXMgZGV2ZWxvcG1lbnQgcGFja2FnZScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLmxhJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5hJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPcGVuQ1YgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgbWV0YXBrZyA9ICBwbiArICctZGV2JwotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZyBdCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFsgXQotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgotICAgICAgICBpZiBub3QgcGtnIGluIGJsYWNrbGlzdCBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBwa2cuZW5kc3dpdGgoJy1kZXYnKToKLSAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKLSAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQotCi0gICAgbWV0YXBrZyA9ICBwbgotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGJsYWNrbGlzdCA9IFsgbWV0YXBrZywgImxpYm9wZW5jdi10cyIgXQotICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKLSAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRldicpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGJnJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kb2MnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWxvY2FsZScpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctc3RhdGljZGV2Jyk6Ci0gICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCi0gICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKLX0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9wZW5jdi0uKiIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L09wZW5DVi9qYXZhLy5kZWJ1Zy8qICR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvYmluLy5kZWJ1Zy8qIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L3BrZ2NvbmZpZyAke2RhdGFkaXJ9L09wZW5DVi8qLmNtYWtlIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2RhdGFkaXJ9L09wZW5DVi8zcmRwYXJ0eS9saWIvKi5hIgotRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0vKiAke2RhdGFkaXJ9L09wZW5DViIKLUZJTEVTXyR7UE59LWphdmEgPSAiJHtkYXRhZGlyfS9PcGVuQ1YvamF2YSIKLUZJTEVTXyR7UE59LXNhbXBsZXMgPSAiJHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy8iCi0KLUlOU0FORV9TS0lQXyR7UE59LWphdmEgPSAibGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmRpciIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotU1VNTUFSWV9weXRob24tb3BlbmN2ID0gIlB5dGhvbiBiaW5kaW5ncyB0byBvcGVuY3YiCi1GSUxFU19weXRob24tb3BlbmN2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1SREVQRU5EU19weXRob24tb3BlbmN2ID0gInB5dGhvbi1jb3JlIHB5dGhvbi1udW1weSIKLQotU1VNTUFSWV9weXRob24zLW9wZW5jdiA9ICJQeXRob24gYmluZGluZ3MgdG8gb3BlbmN2IgotRklMRVNfcHl0aG9uMy1vcGVuY3YgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLVJERVBFTkRTX3B5dGhvbjMtb3BlbmN2ID0gInB5dGhvbjMtY29yZSBweXRob24zLW51bXB5IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBjcCAke1N9L2luY2x1ZGUvb3BlbmN2LyouaCAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvCi0gICAgc2VkIC1pICcvYmxvYnRyYWNrL2QnICR7RH0ke2luY2x1ZGVkaXJ9L29wZW5jdi9jdmF1eC5oCi0KLSAgICAjIE1vdmUgUHl0aG9uIGZpbGVzIGludG8gY29ycmVjdCBsaWJyYXJ5IGZvbGRlciAoZm9yIG11bHRpbGliIGJ1aWxkKQotICAgIGlmIFsgIiRsaWJkaXIiICE9ICIvdXNyL2xpYiIgLWEgLWQgJHtEfS91c3IvbGliIF07IHRoZW4KLSAgICAgICAgbXYgJHtEfS91c3IvbGliLyogJHtEfS8ke2xpYmRpcn0vCi0gICAgICAgIHJtIC1yZiAke0R9L3Vzci9saWIKLSAgICBmaQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoIlBBQ0tBR0VDT05GSUciLCAic2FtcGxlcyIsICJ0cnVlIiwgImZhbHNlIiwgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvYmluLwotICAgICAgICBjcCAtZiBiaW4vKi10dXRvcmlhbC0qIGJpbi8qLWV4YW1wbGUtKiAke0R9JHtkYXRhZGlyfS9PcGVuQ1Yvc2FtcGxlcy9iaW4vCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5jdi9vcGVuY3ZfMy40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOTk3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuY3Yvb3BlbmN2XzMuNC4zLmJiCkBAIC0wLDAgKzEsMTkyIEBACitTVU1NQVJZID0gIk9wZW5jdiA6IFRoZSBPcGVuIENvbXB1dGVyIFZpc2lvbiBMaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL29wZW5jdi5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTYyZDg5YzVkY2IwNTgzNjA5ZWE5MTljNTZiZTBlZTc2IgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitERVBFTkRTID0gImxpYnRvb2wgc3dpZy1uYXRpdmUgYnppcDIgemxpYiBnbGliLTIuMCBsaWJ3ZWJwIgorCitTUkNSRVZfb3BlbmN2ID0gImIzOGM1MGIzZDBjMzFlODIyOTQzMTVlYzQ0YjU0YjdlZjU1OWVmMTIiCitTUkNSRVZfY29udHJpYiA9ICIxZjZkNmYwNjI2NmUxZWYzMzY0MzdhZTU0MDRiZWUxYzY1ZDQyY2RhIgorU1JDUkVWX2lwcCA9ICJiZGI3YmI4NWYzNGE4Y2IwZDM1ZTQwYTgxZjU4ZGE0MzFhYTE1NTdhIgorU1JDUkVWX2Jvb3N0ZGVzYyA9ICIzNGU0MjA2YWVmNDRkNTBlNmJiY2QwYWIwNjM1NGI1MmU3NDY2ZDI2IgorU1JDUkVWX3ZnZyA9ICJmY2NmN2NkNmE0YjEyMDc5ZjczYmJmYjIxNzQ1ZjliYWJjZDRlYjFkIgorU1JDX1VSSVt0aW55ZG5uLm1kNXN1bV0gPSAiYWRiMWM1MTJlMDljYTJjN2E2ZmFlZjM2ZjljNTNlNTkiCitTUkNfVVJJW3Rpbnlkbm4uc2hhMjU2c3VtXSA9ICJlMmM2MWNlOGM1ZGViYWE2NDQxMjExNzllOWRiZGNmODNmNDk3ZjM5ZGU4NTNmOGRkNTE3NTg0NjUwNWFhMThiIgorCitkZWYgaXBwX2ZpbGVuYW1lKGQpOgorICAgIGltcG9ydCByZQorICAgIGFyY2ggPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnLCBUcnVlKQorICAgIGlmIHJlLm1hdGNoKCJpLjg2JCIsIGFyY2gpOgorICAgICAgICByZXR1cm4gImlwcGljdl8yMDE3dTNfbG54X2lhMzJfZ2VuZXJhbF8yMDE4MDUxOC50Z3oiCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICJpcHBpY3ZfMjAxN3UzX2xueF9pbnRlbDY0X2dlbmVyYWxfMjAxODA1MTgudGd6IgorCitkZWYgaXBwX21kNXN1bShkKToKKyAgICBpbXBvcnQgcmUKKyAgICBhcmNoID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJywgVHJ1ZSkKKyAgICBpZiByZS5tYXRjaCgiaS44NiQiLCBhcmNoKToKKyAgICAgICAgcmV0dXJuICJlYTcyZGU3NGRhZTNjNjA0ZWI2MzQ4Mzk1MzY2ZTc4ZSIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gImI3Y2MzNTEyNjdkYjJkMzRiOWVmYTFjZDIyZmYwNTcyIgorCitJUFBfRklMRU5BTUUgPSAiJHtAaXBwX2ZpbGVuYW1lKGQpfSIKK0lQUF9NRDUgPSAiJHtAaXBwX21kNXN1bShkKX0iCisKK1NSQ1JFVl9GT1JNQVQgPSAib3BlbmN2X2NvbnRyaWJfaXBwX2Jvb3N0ZGVzY192Z2ciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdi5naXQ7bmFtZT1vcGVuY3YgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vb3BlbmN2L29wZW5jdl9jb250cmliLmdpdDtkZXN0c3VmZml4PWNvbnRyaWI7bmFtZT1jb250cmliIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1pcHBpY3YvbWFzdGVyXzIwMTgwNTE4O2Rlc3RzdWZmaXg9aXBwO25hbWU9aXBwIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3ZfM3JkcGFydHkuZ2l0O2JyYW5jaD1jb250cmliX3hmZWF0dXJlczJkX2Jvb3N0ZGVzY18yMDE2MTAxMjtkZXN0c3VmZml4PWJvb3N0ZGVzYztuYW1lPWJvb3N0ZGVzYyBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2XzNyZHBhcnR5LmdpdDticmFuY2g9Y29udHJpYl94ZmVhdHVyZXMyZF92Z2dfMjAxNjAzMTc7ZGVzdHN1ZmZpeD12Z2c7bmFtZT12Z2cgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90aW55LWRubi90aW55LWRubi9hcmNoaXZlL3YxLjAuMGEzLnRhci5nejtkZXN0c3VmZml4PWdpdC8zcmRwYXJ0eS90aW55ZG5uL3RpbnktZG5uLTEuMC4wYTM7bmFtZT10aW55ZG5uO3VucGFjaz1mYWxzZSBcCisgICAgZmlsZTovLzAwMDEtM3JkcGFydHktaXBwaWN2LVVzZS1wcmUtZG93bmxvYWRlZC1pcHAucGF0Y2ggXAorICAgIGZpbGU6Ly91c2Vsb2NhbHhmZWF0dXJlcy5wYXRjaDtwYXRjaGRpcj0uLi9jb250cmliLyBcCisgICAgZmlsZTovLzAwMDEtQWRkLW1pc3NpbmctbXVsdGktbGluZS1zZXBhcmF0b3IucGF0Y2g7cGF0Y2hkaXI9Li4vY29udHJpYi8gXAorICAgIGZpbGU6Ly8wMDAyLU1ha2Utb3BlbmN2LXRzLWNyZWF0ZS1zaGFyZS1saWJyYXJ5LWludGVhZC1vZi1zdGF0aWMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLVRvLWZpeC1lcnJvcnMtYXMtZm9sbG93aW5nLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4cGtnY29uZmlnLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1UZW1wb3JhcmxpeS13b3JrLWFyb3VuZC1kZXByZWNhdGVkLWZmbXBlZy1SQVctZnVuY3RpLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1Eb250LXVzZS1pc3lzdGVtLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1DaGVjay1mb3ItY2xhbmctYmVmb3JlLXVzaW5nLWlzeXN0ZW0ucGF0Y2ggXAorIgorUFYgPSAiMy40LjMrZ2l0JHtTUkNQVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX3VucGFja19leHRyYSgpIHsKKyAgICBta2RpciAtcCAke1N9LzNyZHBhcnR5L3Rpbnlkbm4vCisgICAgdGFyIHh6ZiAke1dPUktESVJ9L3YxLjAuMGEzLnRhci5neiAtQyAke1N9LzNyZHBhcnR5L3Rpbnlkbm4vCisgICAgdGFyIHh6ZiAke1dPUktESVJ9L2lwcC9pcHBpY3YvJHtJUFBfRklMRU5BTUV9IC1DICR7V09SS0RJUn0KKyAgICBjcCAke1dPUktESVJ9L3ZnZy8qLmkgJHtXT1JLRElSfS9jb250cmliL21vZHVsZXMveGZlYXR1cmVzMmQvc3JjCisgICAgY3AgJHtXT1JLRElSfS9ib29zdGRlc2MvKi5pICR7V09SS0RJUn0vY29udHJpYi9tb2R1bGVzL3hmZWF0dXJlczJkL3NyYworfQorYWRkdGFzayB1bnBhY2tfZXh0cmEgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAorCitFWFRSQV9PRUNNQUtFID0gIi1ET1BFTkNWX0VYVFJBX01PRFVMRVNfUEFUSD0ke1dPUktESVJ9L2NvbnRyaWIvbW9kdWxlcyBcCisgICAgLURXSVRIXzEzOTQ9T0ZGIFwKKyAgICAtREVOQUJMRV9QUkVDT01QSUxFRF9IRUFERVJTPU9GRiBcCisgICAgLURDTUFLRV9TS0lQX1JQQVRIPU9OIFwKKyAgICAtRE9QRU5DVl9JQ1ZfSEFTSD0ke0lQUF9NRDV9IFwKKyAgICAtRElQUFJPT1Q9JHtXT1JLRElSfS9pcHBpY3ZfbG54IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVEFSR0VUX0NDX0FSQ0giLCAiLW1zc2UzIiwgIi1ERU5BQkxFX1NTRT0xIC1ERU5BQkxFX1NTRTI9MSAtREVOQUJMRV9TU0UzPTEgLURFTkFCTEVfU1NTRTM9MSIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTQuMSIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEgLURFTkFCTEVfU1NFNDE9MSIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUQVJHRVRfQ0NfQVJDSCIsICItbXNzZTQuMiIsICItREVOQUJMRV9TU0U9MSAtREVOQUJMRV9TU0UyPTEgLURFTkFCTEVfU1NFMz0xIC1ERU5BQkxFX1NTU0UzPTEgLURFTkFCTEVfU1NFNDE9MSAtREVOQUJMRV9TU0U0Mj0xIiwgIiIsIGQpfSBcCisgICAgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoImxpYmRpciIsICIvdXNyL2xpYjY0IiwgIi1ETElCX1NVRkZJWD02NCIsICIiLCBkKX0gXAorICAgICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJsaWJkaXIiLCAiL3Vzci9saWIzMiIsICItRExJQl9TVUZGSVg9MzIiLCAiIiwgZCl9IFwKKyIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4NiA9ICIgLURYODY9T04iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIGVpZ2VuIGpwZWcgcG5nIHRpZmYgdjRsIGxpYnY0bCBnc3RyZWFtZXIgc2FtcGxlcyB0YmIgZ3Bob3RvMiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiZ3RrIiwgIiIsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAibGliYXYiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2FtZGJsYXNdID0gIi1EV0lUSF9PUEVOQ0xBTURCTEFTPU9OLC1EV0lUSF9PUEVOQ0xBTURCTEFTPU9GRixsaWJjbGFtZGJsYXMsIgorUEFDS0FHRUNPTkZJR1thbWRmZnRdID0gIi1EV0lUSF9PUEVOQ0xBTURGRlQ9T04sLURXSVRIX09QRU5DTEFNREZGVD1PRkYsbGliY2xhbWRmZnQsIgorUEFDS0FHRUNPTkZJR1tkbm5dID0gIi1EQlVJTERfb3BlbmN2X2Rubj1PTiAtRFBST1RPQlVGX1VQREFURV9GSUxFUz1PTiAtREJVSUxEX1BST1RPQlVGPU9GRiwtREJVSUxEX29wZW5jdl9kbm49T0ZGLHByb3RvYnVmIHByb3RvYnVmLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW2VpZ2VuXSA9ICItRFdJVEhfRUlHRU49T04sLURXSVRIX0VJR0VOPU9GRixsaWJlaWdlbiBnZmxhZ3MgZ2xvZywiCitQQUNLQUdFQ09ORklHW2ZyZWV0eXBlXSA9ICItREJVSUxEX29wZW5jdl9mcmVldHlwZT1PTiwtREJVSUxEX29wZW5jdl9mcmVldHlwZT1PRkYsZnJlZXR5cGUsIgorUEFDS0FHRUNPTkZJR1tncGhvdG8yXSA9ICItRFdJVEhfR1BIT1RPMj1PTiwtRFdJVEhfR1BIT1RPMj1PRkYsbGliZ3Bob3RvMiwiCitQQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLURXSVRIX0dTVFJFQU1FUj1PTiwtRFdJVEhfR1NUUkVBTUVSPU9GRixnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSwiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLURXSVRIX0dUSz1PTiwtRFdJVEhfR1RLPU9GRixndGsrMywiCitQQUNLQUdFQ09ORklHW2phc3Blcl0gPSAiLURXSVRIX0pBU1BFUj1PTiwtRFdJVEhfSkFTUEVSPU9GRixqYXNwZXIsIgorUEFDS0FHRUNPTkZJR1tqYXZhXSA9ICItREpBVkFfSU5DTFVERV9QQVRIPSR7SkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9JTkNMVURFX1BBVEgyPSR7SkFWQV9IT01FfS9pbmNsdWRlL2xpbnV4IC1ESkFWQV9BV1RfSU5DTFVERV9QQVRIPSR7SkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9BV1RfTElCUkFSWT0ke0pBVkFfSE9NRX0vbGliL2FtZDY0L2xpYmphd3Quc28gLURKQVZBX0pWTV9MSUJSQVJZPSR7SkFWQV9IT01FfS9saWIvYW1kNjQvc2VydmVyL2xpYmp2bS5zbywsYW50LW5hdGl2ZSBmYXN0amFyLW5hdGl2ZSBvcGVuamRrLTgtbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURXSVRIX0pQRUc9T04sLURXSVRIX0pQRUc9T0ZGLGpwZWcsIgorUEFDS0FHRUNPTkZJR1tsaWJhdl0gPSAiLURXSVRIX0ZGTVBFRz1PTiwtRFdJVEhfRkZNUEVHPU9GRixsaWJhdiwiCitQQUNLQUdFQ09ORklHW2xpYnY0bF0gPSAiLURXSVRIX0xJQlY0TD1PTiwtRFdJVEhfTElCVjRMPU9GRix2NGwtdXRpbHMsIgorUEFDS0FHRUNPTkZJR1tvcGVuY2xdID0gIi1EV0lUSF9PUEVOQ0w9T04sLURXSVRIX09QRU5DTD1PRkYsb3BlbmNsLWhlYWRlcnMgdmlydHVhbC9vcGVuY2wtaWNkLCIKK1BBQ0tBR0VDT05GSUdbb3JhY2xlLWphdmFdID0gIi1ESkFWQV9JTkNMVURFX1BBVEg9JHtPUkFDTEVfSkFWQV9IT01FfS9pbmNsdWRlIC1ESkFWQV9JTkNMVURFX1BBVEgyPSR7T1JBQ0xFX0pBVkFfSE9NRX0vaW5jbHVkZS9saW51eCAtREpBVkFfQVdUX0lOQ0xVREVfUEFUSD0ke09SQUNMRV9KQVZBX0hPTUV9L2luY2x1ZGUgLURKQVZBX0FXVF9MSUJSQVJZPSR7T1JBQ0xFX0pBVkFfSE9NRX0vbGliL2FtZDY0L2xpYmphd3Quc28gLURKQVZBX0pWTV9MSUJSQVJZPSR7T1JBQ0xFX0pBVkFfSE9NRX0vbGliL2FtZDY0L3NlcnZlci9saWJqdm0uc28sLGFudC1uYXRpdmUgb3JhY2xlLWpzZS1qZGsgb3JhY2xlLWpzZS1qZGstbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItRFdJVEhfUE5HPU9OLC1EV0lUSF9QTkc9T0ZGLGxpYnBuZywiCitQQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIi1EUFlUSE9OMl9OVU1QWV9JTkNMVURFX0RJUlM6UEFUSD0ke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLCxweXRob24tbnVtcHksIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItRFBZVEhPTjNfTlVNUFlfSU5DTFVERV9ESVJTOlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL251bXB5L2NvcmUvaW5jbHVkZSwscHl0aG9uMy1udW1weSwiCitQQUNLQUdFQ09ORklHW3NhbXBsZXNdID0gIi1EQlVJTERfRVhBTVBMRVM9T04gLURJTlNUQUxMX1BZVEhPTl9FWEFNUExFUz1PTiwtREJVSUxEX0VYQU1QTEVTPU9GRiwsIgorUEFDS0FHRUNPTkZJR1t0YmJdID0gIi1EV0lUSF9UQkI9T04sLURXSVRIX1RCQj1PRkYsdGJiLCIKK1BBQ0tBR0VDT05GSUdbdGV4dF0gPSAiLURCVUlMRF9vcGVuY3ZfdGV4dD1PTiwtREJVSUxEX29wZW5jdl90ZXh0PU9GRix0ZXNzZXJhY3QsIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRFdJVEhfVElGRj1PTiwtRFdJVEhfVElGRj1PRkYsdGlmZiwiCitQQUNLQUdFQ09ORklHW3Y0bF0gPSAiLURXSVRIX1Y0TD1PTiwtRFdJVEhfVjRMPU9GRix2NGwtdXRpbHMsIgorCitpbmhlcml0IHBrZ2NvbmZpZyBjbWFrZQorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQoraW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ2Rpc3R1dGlscy1iYXNlJywgJycsIGQpfQorCitleHBvcnQgUFlUSE9OX0NTUEVDPSItSSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCitleHBvcnQgUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zJywgJ3B5dGhvbicsIGQpfSIKK2V4cG9ydCBPUkFDTEVfSkFWQV9IT01FPSIke1NUQUdJTkdfRElSX05BVElWRX0vdXNyL2Jpbi9qYXZhIgorZXhwb3J0IEpBVkFfSE9NRT0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9saWIvanZtL29wZW5qZGstOC1uYXRpdmUiCitleHBvcnQgQU5UX0RJUj0iJHtTVEFHSU5HX0RJUl9OQVRJVkV9L3Vzci9zaGFyZS9hbnQvIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiLUkke1N9L2luY2x1ZGUgIgorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2FtcGxlcycsICcke1BOfS1zYW1wbGVzJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnb3JhY2xlLWphdmEnLCAnJHtQTn0tamF2YScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2phdmEnLCAnJHtQTn0tamF2YScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uLSR7QlBOfScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy0ke0JQTn0nLCAnJywgZCl9IFwKKyAgICAke1BOfS1hcHBzIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgY3ZfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgY3ZfbGliZGlyLCAnXmxpYiguKilcLnNvJCcsICdsaWIlcy1kZXYnLCAnT3BlbkNWICVzIGRldmVsb3BtZW50IHBhY2thZ2UnLCBleHRyYV9kZXBlbmRzPScke1BOfS1kZXYnLCBhbGxvd19saW5rcz1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGN2X2xpYmRpciwgJ15saWIoLiopXC5sYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuYSQnLCAnbGliJXMtZGV2JywgJ09wZW5DViAlcyBkZXZlbG9wbWVudCBwYWNrYWdlJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBjdl9saWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnT3BlbkNWICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorCisgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgIG1ldGFwa2cgPSAgcG4gKyAnLWRldicKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBibGFja2xpc3QgPSBbIG1ldGFwa2cgXQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbIF0KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgbm90IHBrZyBpbiBibGFja2xpc3QgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgcGtnLmVuZHN3aXRoKCctZGV2Jyk6CisgICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCisgICAgZC5zZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKKworICAgIG1ldGFwa2cgPSAgcG4KKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBibGFja2xpc3QgPSBbIG1ldGFwa2csICJsaWJvcGVuY3YtdHMiIF0KKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gWyBdCisgICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06CisgICAgICAgIGlmIG5vdCBwa2cgaW4gYmxhY2tsaXN0IGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kZXYnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRiZycpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZG9jJykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1sb2NhbGUnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLXN0YXRpY2RldicpOgorICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCit9CisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcGVuY3YtLioiCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9PcGVuQ1YvamF2YS8uZGVidWcvKiAke2RhdGFkaXJ9L09wZW5DVi9zYW1wbGVzL2Jpbi8uZGVidWcvKiIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9wa2djb25maWcgJHtkYXRhZGlyfS9PcGVuQ1YvKi5jbWFrZSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtkYXRhZGlyfS9PcGVuQ1YvM3JkcGFydHkvbGliLyouYSIKK0ZJTEVTXyR7UE59LWFwcHMgPSAiJHtiaW5kaXJ9LyogJHtkYXRhZGlyfS9PcGVuQ1YiCitGSUxFU18ke1BOfS1qYXZhID0gIiR7ZGF0YWRpcn0vT3BlbkNWL2phdmEiCitGSUxFU18ke1BOfS1zYW1wbGVzID0gIiR7ZGF0YWRpcn0vT3BlbkNWL3NhbXBsZXMvIgorCitJTlNBTkVfU0tJUF8ke1BOfS1qYXZhID0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJkaXIiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK1NVTU1BUllfcHl0aG9uLW9wZW5jdiA9ICJQeXRob24gYmluZGluZ3MgdG8gb3BlbmN2IgorRklMRVNfcHl0aG9uLW9wZW5jdiA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorUkRFUEVORFNfcHl0aG9uLW9wZW5jdiA9ICJweXRob24tY29yZSBweXRob24tbnVtcHkiCisKK1NVTU1BUllfcHl0aG9uMy1vcGVuY3YgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIG9wZW5jdiIKK0ZJTEVTX3B5dGhvbjMtb3BlbmN2ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitSREVQRU5EU19weXRob24zLW9wZW5jdiA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1udW1weSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgY3AgJHtTfS9pbmNsdWRlL29wZW5jdi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vb3BlbmN2LworICAgIHNlZCAtaSAnL2Jsb2J0cmFjay9kJyAke0R9JHtpbmNsdWRlZGlyfS9vcGVuY3YvY3ZhdXguaAorCisgICAgIyBNb3ZlIFB5dGhvbiBmaWxlcyBpbnRvIGNvcnJlY3QgbGlicmFyeSBmb2xkZXIgKGZvciBtdWx0aWxpYiBidWlsZCkKKyAgICBpZiBbICIkbGliZGlyIiAhPSAiL3Vzci9saWIiIC1hIC1kICR7RH0vdXNyL2xpYiBdOyB0aGVuCisgICAgICAgIG12ICR7RH0vdXNyL2xpYi8qICR7RH0vJHtsaWJkaXJ9LworICAgICAgICBybSAtcmYgJHtEfS91c3IvbGliCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2luc3RhbGwtc3RyaXAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9pbnN0YWxsLXN0cmlwLnBhdGNoCmluZGV4IDI5OTJiNzAuLjdjNjc1OTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2luc3RhbGwtc3RyaXAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvaW5zdGFsbC1zdHJpcC5wYXRjaApAQCAtMSw2ICsxLDkgQEAKICMgVGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgdGhlIGluc3RhbGwgb3BlcmF0aW9ucyB3aGljaCBzdHJpcAogIyBwcm9ncmFtcyBhbmQgbGlicmFyaWVzIChMVElOU1RBTEwpIHdvcmsgaW4gYSBjcm9zcyBidWlsZAogIyBlbnZpcm9ubWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLSBvcGVubGRhcC0yLjIuMjQvLnBjL2luc3RhbGwtc3RyaXAucGF0Y2gvYnVpbGQvdG9wLm1rCTIwMDUtMDEtMjAgMDk6MDA6NTUuMDAwMDAwMDAwIC0wODAwCiArKysgb3BlbmxkYXAtMi4yLjI0L2J1aWxkL3RvcC5tawkyMDA1LTA0LTE2IDEzOjQ4OjIwLjUzNjcxMDM3NiAtMDcwMAogQEAgLTExNiw3ICsxMTYsNyBAQApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAva2lsbC1pY3UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9raWxsLWljdS5wYXRjaAppbmRleCBkY2Y1NDExLi4zNWU0NjQ2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9raWxsLWljdS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9raWxsLWljdS5wYXRjaApAQCAtMiw3ICsyLDcgQEAKIAogc2xhcGQgZGVwZW5kcyBvbiBJQ1UgaWYgaXQgd2FzIGJ1aWx0IGZpcnN0LgogCi1VcHN0cmVhbS1zdGF0dXM6IGluYXBwcm9waWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9waWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAtLS0KICBjb25maWd1cmUuaW4gfCAgICA4IC0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9vcGVubGRhcC0yLjQuMjgtZ251dGxzLWdjcnlwdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLTIuNC4yOC1nbnV0bHMtZ2NyeXB0LnBhdGNoCmluZGV4IGM3YjE1NTIuLjg2ZDA3NjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLTIuNC4yOC1nbnV0bHMtZ2NyeXB0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLTIuNC4yOC1nbnV0bHMtZ2NyeXB0LnBhdGNoCkBAIC0xLDYgKzEsNiBAQAogRnJvbSBodHRwOi8vc291cmNlcy5nZW50b28ub3JnL2NnaS1iaW4vdmlld3ZjLmNnaS9nZW50b28teDg2L25ldC1uZHMvb3BlbmxkYXAvZmlsZXMvCiAKLVVwc3RyZWFtLXN0YXR1czogVW5rbm93bgorVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCiAKIC0tCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLUNWRS0yMDE1LTMyNzYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoCmluZGV4IGRlOWNhNTIuLjI1ZTE0OGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLUNWRS0yMDE1LTMyNzYucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvb3BlbmxkYXAtQ1ZFLTIwMTUtMzI3Ni5wYXRjaApAQCAtMTAsNiArMTAsOCBAQAogYmUgdXNlZCBhbmQgYWxsb3cgcmVtb3RlIGF0dGFja2VycyB0byBoYXZlIHVuc3BlY2lmaWVkIGltcGFjdCB2aWEKIHVua25vd24gdmVjdG9ycy4KIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IExpIFdhbmcgPGxpLndhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQogIGxpYnJhcmllcy9saWJsZGFwL3Rsc19tLmMgfCAgIDI3ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL29wZW5sZGFwLW00LXB0aHJlYWQucGF0Y2gKaW5kZXggYjY2OWI3Mi4uMzhjMGE1YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9vcGVubGRhcC1tNC1wdGhyZWFkLnBhdGNoCkBAIC0xLDMgKzEsNSBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLSBvcGVubGRhcC0yLjMuMTEvYnVpbGQvb3BlbmxkYXAubTQub3JpZwkyMDA1LTExLTExIDAwOjExOjE4LjYwNDMyMjU5MCAtMDgwMAogKysrIG9wZW5sZGFwLTIuMy4xMS9idWlsZC9vcGVubGRhcC5tNAkyMDA1LTExLTExIDAwOjI2OjIxLjYyMTE0NTg1NiAtMDgwMAogQEAgLTc4OCw3ICs3ODgsNyBAQCBBQ19ERUZVTihbT0xfUFRIUkVBRF9URVNUX0ZVTkNUSU9OXSxbWwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvcmVtb3ZlLXVzZXItaG9zdC1wd2QtZnJvbS12ZXJzaW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXAvcmVtb3ZlLXVzZXItaG9zdC1wd2QtZnJvbS12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYjM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9yZW1vdmUtdXNlci1ob3N0LXB3ZC1mcm9tLXZlcnNpb24ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorZGlmZiAtcnUgb3BlbmxkYXAtMi40LjQ2Lm9yaWcvYnVpbGQvbWt2ZXJzaW9uIG9wZW5sZGFwLTIuNC40Ni9idWlsZC9ta3ZlcnNpb24KKy0tLSBvcGVubGRhcC0yLjQuNDYub3JpZy9idWlsZC9ta3ZlcnNpb24JMjAxOC0xMC0yNSAxODo0NjoxMC4zODM3NTA0ODAgKzEzMDAKKysrKyBvcGVubGRhcC0yLjQuNDYvYnVpbGQvbWt2ZXJzaW9uCTIwMTgtMTAtMjUgMTg6NDY6MzMuMTU2MjMyNTg2ICsxMzAwCitAQCAtNTAsNyArNTAsMTUgQEAKKyBmaQorIAorIEFQUExJQ0FUSU9OPSQxCistV0hPV0hFUkU9IiRVU0VSQGB1bmFtZSAtbmA6YHB3ZGAiCisraWYgWyAtbiAiJHtTT1VSQ0VfREFURV9FUE9DSH0iIF07IHRoZW4KKysgICBXSE9XSEVSRT0ib3BlbmxkYXAiCisrICAgREFURT0kKGRhdGUgLWRAJFNPVVJDRV9EQVRFX0VQT0NIICsnICViICVkICVZICcpCisrICAgVElNRT0kKGRhdGUgLWRAJFNPVVJDRV9EQVRFX0VQT0NIICsnICVIOiVNOiVTICcpCisrZWxzZQorKyAgIFdIT1dIRVJFPSIkVVNFUkAkKHVuYW1lIC1uKTokKHB3ZCkiCisrICAgREFURT0nIiBfX0RBVEVfXyAiJworKyAgIFRJTUU9JyIgX19USU1FX18gIicKKytmaQorIAorIGNhdCA8PCBfX0VPRl9fCisgLyogVGhpcyB3b3JrIGlzIHBhcnQgb2YgT3BlbkxEQVAgU29mdHdhcmUgPGh0dHA6Ly93d3cub3BlbmxkYXAub3JnLz4uCitAQCAtNzIsNyArODAsNyBAQAorICJDT1BZSU5HIFJFU1RSSUNUSU9OUyBBUFBMWVxuIjsKKyAKKyAkc3RhdGljICRjb25zdCBjaGFyICRTWU1CT0xbXSA9CistIkAoIykgXCQkUEFDS0FHRTogJEFQUExJQ0FUSU9OICRWRVJTSU9OICgiIF9fREFURV9fICIgIiBfX1RJTUVfXyAiKSBcJFxuIgorKyJAKCMpIFwkJFBBQ0tBR0U6ICRBUFBMSUNBVElPTiAkVkVSU0lPTiAoJERBVEUgJFRJTUUpIFwkXG4iCisgIlx0JFdIT1dIRVJFXG4iOworIAorIF9fRU9GX18KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODJkNjYxOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotIyBPcGVuTERBUCwgYSBsaWNlbnNlIGZyZWUgKHNlZSBodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwpCi0jCi1TVU1NQVJZID0gIk9wZW5MREFQIERpcmVjdG9yeSBTZXJ2aWNlIgotREVTQ1JJUFRJT04gPSAiT3BlbkxEQVAgU29mdHdhcmUgaXMgYW4gb3BlbiBzb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIExpZ2h0d2VpZ2h0IERpcmVjdG9yeSBBY2Nlc3MgUHJvdG9jb2wuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5PcGVuTERBUC5vcmcvbGljZW5zZS5odG1sIgotIyBUaGUgT3BlbkxEQVAgUHVibGljIExpY2Vuc2UgLSBzZWUgdGhlIEhPTUVQQUdFIC0gZGVmaW5lcwotIyB0aGUgbGljZW5zZS4gIHd3dy5vcGVubGRhcC5vcmcgY2xhaW1zIHRoaXMgaXMgT3BlbiBTb3VyY2UKLSMgKHNlZSBodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZyksIHRoZSBsaWNlbnNlIGFwcGVhcnMgdG8gYmUKLSMgYmFzaWNhbGx5IEJTRC4gIG9wZW5zb3VyY2Uub3JnIGRvZXMgbm90IHJlY29yZCB0aGlzIGxpY2Vuc2UKLSMgYXQgcHJlc2VudCAoc28gaXQgaXMgYXBwYXJlbnRseSBub3QgT1NJIGNlcnRpZmllZCkuCi1MSUNFTlNFID0gIk9wZW5MREFQIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0yNWZkMzcyMTk2MGYzOTEyOGNkMTVhNzQ5ZmQyMTEzOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT0xNTNkMDdlZjA1MmM0YTM3YThmYWMyM2JjNjAzMTk3MiBcCi0iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxEQVBfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5vcGVubGRhcC5vcmcvcHViL09wZW5MREFQL29wZW5sZGFwLXJlbGVhc2UvJHtCUH0udGd6IFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBcCi0gICAgZmlsZTovL2tpbGwtaWN1LnBhdGNoIFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtMi40LjI4LWdudXRscy1nY3J5cHQucGF0Y2ggXAotICAgIGZpbGU6Ly91c2UtdXJhbmRvbS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXRzY3JpcHQgXAotICAgIGZpbGU6Ly9zbGFwZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vdGhyZWFkX3N0dWIucGF0Y2ggXAotICAgIGZpbGU6Ly9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAwZmY4MzAxMjc3Y2RmZDBhZjcyOGE2OTI3MDQyYTEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZDZjZmZkZWJjZDk1MTYxYTczMzA1ZWMxM2ZjN2E3OGU5NzA3YjQ2Y2E5Zjg0ZmI4OTdjZDU2MjZkZjM4MjQiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBncm9mZi1uYXRpdmUiCi0KLSMgVGhlIG9yaWdpbmFsIHRvcC5tayB1c2VkIElOU1RBTEwsIG5vdCBJTlNUQUxMX1NUUklQX1BST0dSQU0gd2hlbgotIyBpbnN0YWxsaW5nIC5zbyBhbmQgZXhlY3V0YWJsZXMsIHRoaXMgZmFpbHMgaW4gY3Jvc3MgY29tcGlsYXRpb24KLSMgZW52aXJvbm1lbnRzCi1TUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1zdHJpcC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBDViBTRVRUSU5HUwotIyBSZXF1aXJlZCB0byB3b3JrIHJvdW5kIEFDX0ZVTkNfTUVNQ01QIHdoaWNoIGdldHMgdGhlIHdyb25nIGFuc3dlcgotIyB3aGVuIGNyb3NzIGNvbXBpbGluZyAoc2hvdWxkIGJlIGluIHNpdGU/KQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllcyIKLQotIyBDT05GSUcgREVGSU5JVElPTlMKLSMgVGhlIGZvbGxvd2luZyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgYQotIyBjcm9zcyBjb21waWxlIGF1dG9tYWdpY2FsbHkuICBTZWxlY3Qgc2hvdWxkIHlpZWxkIGZpbmUgb24gYWxsIE9FCi0jIHN5c3RlbXMuLi4KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXlpZWxkaW5nLXNlbGVjdD15ZXMiCi0jIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5pY2UuLi4KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZHluYW1pYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBtb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICBtZGIgbGRhcCBtZXRhIG1vbml0b3IgbnVsbCBwYXNzd2Qgc2hlbGwgcHJveHljYWNoZSBkbnNzcnYgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotIy0td2l0aC10bHMgICAgICAgICAgICAgIHdpdGggVExTL1NTTCBzdXBwb3J0IGF1dG98b3BlbnNzbHxnbnV0bHMgW2F1dG9dCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXRscz1nbnV0bHMsLGdudXRscyBsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC10bHM9b3BlbnNzbCwsb3BlbnNzbCIKLQotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtY3lydXMtc2FzbCwtLXdpdGhvdXQtY3lydXMtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1ttb2R1bGVzXSA9ICJsdF9jdl9kbG9wZW5fc2VsZj15ZXMgLS1lbmFibGUtbW9kdWxlcywtLWRpc2FibGUtbW9kdWxlcyxsaWJ0b29sIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotCi0jIFNMQVBEIG9wdGlvbnMKLSMKLSMgVU5JWCBjcnlwdCgzKSBwYXNzd2Qgc3VwcG9ydDoKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtY3J5cHQiCi0KLSMgU0xBUEQgQkFDS0VORAotIwotIyBUaGUgYmFja2VuZCBtdXN0IGJlIHNldCBieSB0aGUgY29uZmlndXJhdGlvbi4gIFRoaXMgY29udHJvbHMgdGhlCi0jIHJlcXVpcmVkIGRhdGFiYXNlLgotIwotIyBCYWNrZW5kcz0iYmRiIGRuc3NydiBoZGIgbGRhcCBtZGIgbWV0YSBtb25pdG9yIG5kYiBudWxsIHBhc3N3ZCBwZXJsIHJlbGF5IHNoZWxsIHNvY2sgc3FsIgotIwotIyBOb3RlIHRoYXQgbXVsdGlwbGUgYmFja2VuZHMgY2FuIGJlIGJ1aWx0LiAgVGhlIGxkYm0gYmFja2VuZCByZXF1aXJlcyBhCi0jIGJ1aWxkLXRpbWUgY2hvaWNlIG9mIGRhdGFiYXNlIEFQSS4gIFRoZSBiZGIgYmFja2VuZCBmb3JjZXMgdGhpcyB0byBiZQotIyBEQjQuICBUbyB1c2UgdGhlIGdkYm0gKG9yIG90aGVyKSBBUEkgdGhlIEJlcmtlbHkgZGF0YWJhc2UgbW9kdWxlIG11c3QKLSMgYmUgcmVtb3ZlZCBmcm9tIHRoZSBidWlsZC4KLW1kID0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAiCi0jCi0jLS1lbmFibGUtYmRiICAgICAgICAgIGVuYWJsZSBCZXJrZWxleSBEQiBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCi0jIFRoZSBCZXJrZWx5IERCIGlzIHRoZSBzdGFuZGFyZCBjaG9pY2UuICBUaGlzIHZlcnNpb24gb2YgT3BlbkxEQVAgcmVxdWlyZXMKLSMgdGhlIHZlcnNpb24gNCBpbXBsZW1lbnRhdGlvbiBvciBiZXR0ZXIuCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLS1lbmFibGUtYmRiPXllcywtLWVuYWJsZS1iZGI9bm8sZGIiCi0KLSMtLWVuYWJsZS1kbnNzcnYgICAgICAgZW5hYmxlIGRuc3NydiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbZG5zc3J2XSA9ICItLWVuYWJsZS1kbnNzcnY9bW9kLC0tZW5hYmxlLWRuc3Nydj1ubyIKLQotIy0tZW5hYmxlLWhkYiAgICAgICAgICBlbmFibGUgSGllcmFyY2hpY2FsIERCIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1toZGJdID0gIi0tZW5hYmxlLWhkYj15ZXMsLS1lbmFibGUtaGRiPW5vLGRiIgotCi0jLS1lbmFibGUtbGRhcCAgICAgICAgIGVuYWJsZSBsZGFwIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwPW1vZCwtLWVuYWJsZS1sZGFwPW5vLCIKLQotIy0tZW5hYmxlLW1kYiAgICAgICAgICBlbmFibGUgbWRiIGRhdGFiYXNlIGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQotUEFDS0FHRUNPTkZJR1ttZGJdID0gIi0tZW5hYmxlLW1kYj15ZXMsLS1lbmFibGUtbWRiPW5vLCIKLQotIy0tZW5hYmxlLW1ldGEgICAgICAgICBlbmFibGUgbWV0YWRpcmVjdG9yeSBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbbWV0YV0gPSAiLS1lbmFibGUtbWV0YT1tb2QsLS1lbmFibGUtbWV0YT1ubywiCi0KLSMtLWVuYWJsZS1tb25pdG9yICAgICAgZW5hYmxlIG1vbml0b3IgYmFja2VuZCBub3x5ZXN8bW9kIHllcwotUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yPW1vZCwtLWVuYWJsZS1tb25pdG9yPW5vLCIKLQotIy0tZW5hYmxlLW5kYiAgICAgICAgICBlbmFibGUgTXlTUUwgTkRCIENsdXN0ZXIgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbbmRiXSA9ICItLWVuYWJsZS1uZGI9bW9kLC0tZW5hYmxlLW5kYj1ubywiCi0KLSMtLWVuYWJsZS1udWxsICAgICAgICAgZW5hYmxlIG51bGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW251bGxdID0gIi0tZW5hYmxlLW51bGw9bW9kLC0tZW5hYmxlLW51bGw9bm8sIgotCi0jLS1lbmFibGUtcGFzc3dkICAgICAgIGVuYWJsZSBwYXNzd2QgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW3Bhc3N3ZF0gPSAiLS1lbmFibGUtcGFzc3dkPW1vZCwtLWVuYWJsZS1wYXNzd2Q9bm8sIgotCi0jLS1lbmFibGUtcGVybCAgICAgICAgIGVuYWJsZSBwZXJsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyAgVGhpcyByZXF1aXJlcyBhIGxvYWRhYmxlIHBlcmwgZHluYW1pYyBsaWJyYXJ5LCBpZiBlbmFibGVkIHdpdGhvdXQKLSMgIGRvaW5nIHNvbWV0aGluZyBhcHByb3ByaWF0ZSAoYnVpbGRpbmcgcGVybD8pIHRoZSBidWlsZCB3aWxsIHBpY2sKLSMgIHVwIHRoZSBidWlsZCBtYWNoaW5lIHBlcmwgLSBub3QgZ29vZCAoaW5oZXJpdCBwZXJsbmF0aXZlPykKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybD1tb2QsLS1lbmFibGUtcGVybD1ubyxwZXJsIgotCi0jLS1lbmFibGUtcmVsYXkgICAgICAgIGVuYWJsZSByZWxheSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KLVBBQ0tBR0VDT05GSUdbcmVsYXldID0gIi0tZW5hYmxlLXJlbGF5PW1vZCwtLWVuYWJsZS1yZWxheT1ubywiCi0KLSMtLWVuYWJsZS1zaGVsbCAgICAgICAgZW5hYmxlIHNoZWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyBjb25maWd1cmU6IFdBUk5JTkc6IFVzZSBvZiAtLXdpdGhvdXQtdGhyZWFkcyBpcyByZWNvbW1lbmRlZCB3aXRoIGJhY2stc2hlbGwKLVBBQ0tBR0VDT05GSUdbc2hlbGxdID0gIi0tZW5hYmxlLXNoZWxsPW1vZCAtLXdpdGhvdXQtdGhyZWFkcywtLWVuYWJsZS1zaGVsbD1ubywiCi0KLSMtLWVuYWJsZS1zb2NrICAgICAgICAgZW5hYmxlIHNvY2sgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbc29ja10gPSAiLS1lbmFibGUtc29jaz1tb2QsLS1lbmFibGUtc29jaz1ubywiCi0KLSMtLWVuYWJsZS1zcWwgICAgICAgICAgZW5hYmxlIHNxbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgc3FsIHJlcXVpcmVzIHNvbWUgc3FsIGJhY2tlbmQgd2hpY2ggcHJvdmlkZXMgc3FsLmgsIHNxbGl0ZSogcHJvdmlkZXMKLSMgc3FsaXRlLmggKHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIGJ1dCBoYXNuJ3QgYmVlbiB0cmllZC4pCi1QQUNLQUdFQ09ORklHW3NxbF0gPSAiLS1lbmFibGUtc3FsPW1vZCwtLWVuYWJsZS1zcWw9bm8sc3FsaXRlMyIKLQotIy0tZW5hYmxlLWR5bmdyb3VwICAgICBEeW5hbWljIEdyb3VwIG92ZXJsYXkgbm98eWVzfG1vZCBubwotIyAgVGhpcyBpcyBhIGRlbW8sIFByb3h5IENhY2hlIGRlZmluZXMgaW5pdF9tb2R1bGUgd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlCi0jICBzYW1lIHN5bWJvbCBpbiBkeW5ncm91cAotUEFDS0FHRUNPTkZJR1tkeW5ncm91cF0gPSAiLS1lbmFibGUtZHluZ3JvdXA9bW9kLC0tZW5hYmxlLWR5bmdyb3VwPW5vLCIKLQotIy0tZW5hYmxlLXByb3h5Y2FjaGUgICBQcm94eSBDYWNoZSBvdmVybGF5IG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbcHJveHljYWNoZV0gPSAiLS1lbmFibGUtcHJveHljYWNoZT1tb2QsLS1lbmFibGUtcHJveHljYWNoZT1ubywiCi1GSUxFU18ke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUgPSAiJHttZH0vcGNhY2hlLSouc28uKiIKLVBBQ0tBR0VTICs9ICIke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUiCi0KLSMgQXBwZW5kIFVSQU5ET01fREVWSUNFPScvZGV2L3VyYW5kb20nIHRvIENQUEZMQUdTOgotIyBUaGlzIGFsbG93cyB0bHMgdG8gb2J0YWluIHJhbmRvbSBiaXRzIGZyb20gL2Rldi91cmFuZG9tLCBieSBkZWZhdWx0Ci0jIGl0IHdhcyBkaXNhYmxlZCBmb3IgY3Jvc3MtY29tcGlsaW5nLgotQ1BQRkxBR1NfYXBwZW5kID0gIiAtRF9HTlVfU09VUkNFIC1EVVJBTkRPTV9ERVZJQ0U9XCcvZGV2L3VyYW5kb21cJyAtZlBJQyIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9saWJ0b29sL2J1aWxkLWF1eC9sdG1haW4uc2ggJHtTfS9idWlsZAotICAgIHJtIC1mICR7U30vbGlidG9vbAotICAgIGFjbG9jYWwKLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1jb3B5Ci0gICAgZ251LWNvbmZpZ2l6ZQotICAgIGF1dG9jb25mCi0gICAgb2VfcnVuY29uZgotfQotCi1MRUFEX1NPTkFNRSA9ICJsaWJsZGFwLSR7TERBUF9WRVJ9LnNvLioiCi0KLSMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZS4gIFRoaXMgYWxsb3dzIHRoZQotIyBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcmllcyB3aXRoIG5vIGRhZW1vbiBzdXBwb3J0LgotIyBFYWNoIG1vZHVsZSBhbHNvIGhhcyBpdHMgb3duIHBhY2thZ2UgLSBzZWUgYWJvdmUuCi1QQUNLQUdFUyArPSAiJHtQTn0tc2xhcGQgJHtQTn0tc2x1cnBkICR7UE59LWJpbiIKLQotIyBQYWNrYWdlIGNvbnRlbnRzIC0gc2hpZnQgbW9zdCBzdGFuZGFyZCBjb250ZW50cyB0byAtYmluCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvbGRhcC4qICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEiCi1GSUxFU18ke1BOfS1zbGFwZCA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZCAke2xpYmV4ZWNkaXJ9L3NsYXBkICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4gXAotICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NjaGVtYSBcCi0gICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9EQl9DT05GSUcuZXhhbXBsZSAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCi1GSUxFU18ke1BOfS1zbHVycGQgPSAiJHtsaWJleGVjZGlyfS9zbHVycGQgJHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1zbHVycCAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5sYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvLmRlYnVnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXRzY3JpcHQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKLSAgICBjaG1vZCA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCi0gICAgIyBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gL2V0Yy9vcGVubGRhcCBhbmQgaXMgZm9yIHNsYXBkCi0gICAgcm0gLWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtZGF0YS9EQl9DT05GSUcuZXhhbXBsZQotCi0gICAgIyBJbnN0YWxsaW5nIHNsYXBkIHVuZGVyICR7c2Jpbn0gaXMgbW9yZSBGSFMgYW5kIExTQiBjb21wbGlhbmNlCi0gICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vc2xhcGQgJHtEfS8ke3NiaW5kaXJ9L3NsYXBkCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBTTEFQVE9PTFM9InNsYXBhZGQgc2xhcGNhdCBzbGFwZG4gc2xhcGluZGV4IHNsYXBwYXNzd2Qgc2xhcHRlc3Qgc2xhcGF1dGggc2xhcGFjbCBzbGFwc2NoZW1hIgotICAgIGNkICR7RH0vJHtzYmluZGlyfS8KLSAgICBybSAtZiAke1NMQVBUT09MU30KLSAgICBmb3IgaSBpbiAke1NMQVBUT09MU307IGRvIGxuIC1zZiBzbGFwZCAkaTsgZG9uZQotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NsYXBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0gICAgIyBVc2VzIG1kbSBhcyB0aGUgZGF0YWJhc2UKLSAgICAjICBhbmQgbG9jYWxzdGF0ZWRpciBhcyBkYXRhIGRpcmVjdG9yeSAuLi4KLSAgICBzZWQgLWUgJ3MvIyBtb2R1bGVwYXRoL21vZHVsZXBhdGgvJyBcCi0gICAgICAgIC1lICdzLyMgbW9kdWxlbG9hZFxzKmJhY2tfYmRiLiovbW9kdWxlbG9hZCAgICBiYWNrX21kYi8nIFwKLSAgICAgICAgLWUgJ3MvZGF0YWJhc2VccypiZGIvZGF0YWJhc2UgICAgICAgIG1kYi8nIFwKLSAgICAgICAgLWUgJ3MlXmRpcmVjdG9yeVxzKi4qJWRpcmVjdG9yeSAgICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEvJScgXAotICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC5jb25mCi0KLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YQotCi0KLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zbGFwZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zbGFwZCA9ICJvcGVubGRhcCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNsYXBkID0gImRlZmF1bHRzIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNsYXBkID0gImhvc3RhcGQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2xhcGQgPz0gImRpc2FibGUiCi0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LWJhY2tlbmRzLiogXiR7UE59LWJhY2tlbmQtLioiCi0KLSMgVGhlIG1vZHVsZXMgcmVxdWlyZSB0aGVpciAuc28gdG8gYmUgZHluYW1pY2FseSBsb2FkZWQKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtZG5zc3J2ICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1sZGFwICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1ldGEgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWRiICAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tb25pdG9yICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW51bGwgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtcGFzc3dkICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1zaGVsbCAgICs9ICJkZXYtc28iCi0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGJhY2tlbmRfZGlyICAgID0gZC5leHBhbmQoJyR7bGliZXhlY2Rpcn0vb3BlbmxkYXAnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwuc28kJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLS4qXC5zb1wuLiokJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICBtZXRhcGtnID0gIiR7UE59LWJhY2tlbmRzIgotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIHBrZy5jb3VudCgib3BlbmxkYXAtYmFja2VuZC0iKSBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmNvdW50KCItZGV2IikgYW5kIG5vdCBwa2cuY291bnQoIi1kYmciKSBhbmQgbm90IHBrZy5jb3VudCgic3RhdGljIikgYW5kIG5vdCBwa2cuY291bnQoImxvY2FsZSIpOgotICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi0gICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnT3BlbkxEQVAgYmFja2VuZHMgbWV0YSBwYWNrYWdlJykKLSAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTlmYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDYuYmIKQEAgLTAsMCArMSwyNTUgQEAKK1NVTU1BUlkgPSAiT3BlbkxEQVAgRGlyZWN0b3J5IFNlcnZpY2UiCitERVNDUklQVElPTiA9ICJPcGVuTERBUCBTb2Z0d2FyZSBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwiCisjIFRoZSBPcGVuTERBUCBQdWJsaWMgTGljZW5zZSAtIHNlZSB0aGUgSE9NRVBBR0UgLSBkZWZpbmVzCisjIHRoZSBsaWNlbnNlLiAgd3d3Lm9wZW5sZGFwLm9yZyBjbGFpbXMgdGhpcyBpcyBPcGVuIFNvdXJjZQorIyAoc2VlIGh0dHA6Ly93d3cub3BlbmxkYXAub3JnKSwgdGhlIGxpY2Vuc2UgYXBwZWFycyB0byBiZQorIyBiYXNpY2FsbHkgQlNELiAgb3BlbnNvdXJjZS5vcmcgZG9lcyBub3QgcmVjb3JkIHRoaXMgbGljZW5zZQorIyBhdCBwcmVzZW50IChzbyBpdCBpcyBhcHBhcmVudGx5IG5vdCBPU0kgY2VydGlmaWVkKS4KK0xJQ0VOU0UgPSAiT3BlbkxEQVAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTI1YjRlYWQwZTQ1MTgyZTdjMjkxNGU1OWZmNTcwMDlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTE1M2QwN2VmMDUyYzRhMzdhOGZhYzIzYmM2MDMxOTcyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJsaWJzIgorCitMREFQX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAub3BlbmxkYXAub3JnL3B1Yi9PcGVuTERBUC9vcGVubGRhcC1yZWxlYXNlLyR7QlB9LnRneiBcCisgICAgZmlsZTovL29wZW5sZGFwLW00LXB0aHJlYWQucGF0Y2ggXAorICAgIGZpbGU6Ly9raWxsLWljdS5wYXRjaCBcCisgICAgZmlsZTovL29wZW5sZGFwLTIuNC4yOC1nbnV0bHMtZ2NyeXB0LnBhdGNoIFwKKyAgICBmaWxlOi8vdXNlLXVyYW5kb20ucGF0Y2ggXAorICAgIGZpbGU6Ly9pbml0c2NyaXB0IFwKKyAgICBmaWxlOi8vc2xhcGQuc2VydmljZSBcCisgICAgZmlsZTovL3RocmVhZF9zdHViLnBhdGNoIFwKKyAgICBmaWxlOi8vb3BlbmxkYXAtQ1ZFLTIwMTUtMzI3Ni5wYXRjaCBcCisgICAgZmlsZTovL3JlbW92ZS11c2VyLWhvc3QtcHdkLWZyb20tdmVyc2lvbi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MjkwMTZjNWE5ZjQ1YzUxYWRjNTAwNzNhYzZmOWZkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTkwZGNiODZiOTlhZTc5MGNjYWI5M2I3NTg1YTMxZmJjYmVlYzhjOTRiZjBmN2FiMGNhMGE4N2VhMGM0YjJkIgorCitERVBFTkRTID0gInV0aWwtbGludXggZ3JvZmYtbmF0aXZlIgorCisjIFRoZSBvcmlnaW5hbCB0b3AubWsgdXNlZCBJTlNUQUxMLCBub3QgSU5TVEFMTF9TVFJJUF9QUk9HUkFNIHdoZW4KKyMgaW5zdGFsbGluZyAuc28gYW5kIGV4ZWN1dGFibGVzLCB0aGlzIGZhaWxzIGluIGNyb3NzIGNvbXBpbGF0aW9uCisjIGVudmlyb25tZW50cworU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtc3RyaXAucGF0Y2giCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKKyMgQ1YgU0VUVElOR1MKKyMgUmVxdWlyZWQgdG8gd29yayByb3VuZCBBQ19GVU5DX01FTUNNUCB3aGljaCBnZXRzIHRoZSB3cm9uZyBhbnN3ZXIKKyMgd2hlbiBjcm9zcyBjb21waWxpbmcgKHNob3VsZCBiZSBpbiBzaXRlPykKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz15ZXMiCisKKyMgQ09ORklHIERFRklOSVRJT05TCisjIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgY2Fubm90IGJlIGRldGVybWluZWQgZm9yIGEKKyMgY3Jvc3MgY29tcGlsZSBhdXRvbWFnaWNhbGx5LiAgU2VsZWN0IHNob3VsZCB5aWVsZCBmaW5lIG9uIGFsbCBPRQorIyBzeXN0ZW1zLi4uCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC15aWVsZGluZy1zZWxlY3Q9eWVzIgorIyBTaGFyZWQgbGlicmFyaWVzIGFyZSBuaWNlLi4uCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWR5bmFtaWMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgbW9kdWxlcyBcCisgICAgICAgICAgICAgICAgICAgbWRiIGxkYXAgbWV0YSBtb25pdG9yIG51bGwgcGFzc3dkIHNoZWxsIHByb3h5Y2FjaGUgZG5zc3J2IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKKyMtLXdpdGgtdGxzICAgICAgICAgICAgICB3aXRoIFRMUy9TU0wgc3VwcG9ydCBhdXRvfG9wZW5zc2x8Z251dGxzIFthdXRvXQorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC10bHM9Z251dGxzLCxnbnV0bHMgbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtdGxzPW9wZW5zc2wsLG9wZW5zc2wiCisKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLWN5cnVzLXNhc2wsLS13aXRob3V0LWN5cnVzLXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbbW9kdWxlc10gPSAibHRfY3ZfZGxvcGVuX3NlbGY9eWVzIC0tZW5hYmxlLW1vZHVsZXMsLS1kaXNhYmxlLW1vZHVsZXMsbGlidG9vbCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKKworIyBTTEFQRCBvcHRpb25zCisjCisjIFVOSVggY3J5cHQoMykgcGFzc3dkIHN1cHBvcnQ6CitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWNyeXB0IgorCisjIFNMQVBEIEJBQ0tFTkQKKyMKKyMgVGhlIGJhY2tlbmQgbXVzdCBiZSBzZXQgYnkgdGhlIGNvbmZpZ3VyYXRpb24uICBUaGlzIGNvbnRyb2xzIHRoZQorIyByZXF1aXJlZCBkYXRhYmFzZS4KKyMKKyMgQmFja2VuZHM9ImJkYiBkbnNzcnYgaGRiIGxkYXAgbWRiIG1ldGEgbW9uaXRvciBuZGIgbnVsbCBwYXNzd2QgcGVybCByZWxheSBzaGVsbCBzb2NrIHNxbCIKKyMKKyMgTm90ZSB0aGF0IG11bHRpcGxlIGJhY2tlbmRzIGNhbiBiZSBidWlsdC4gIFRoZSBsZGJtIGJhY2tlbmQgcmVxdWlyZXMgYQorIyBidWlsZC10aW1lIGNob2ljZSBvZiBkYXRhYmFzZSBBUEkuICBUaGUgYmRiIGJhY2tlbmQgZm9yY2VzIHRoaXMgdG8gYmUKKyMgREI0LiAgVG8gdXNlIHRoZSBnZGJtIChvciBvdGhlcikgQVBJIHRoZSBCZXJrZWx5IGRhdGFiYXNlIG1vZHVsZSBtdXN0CisjIGJlIHJlbW92ZWQgZnJvbSB0aGUgYnVpbGQuCittZCA9ICIke2xpYmV4ZWNkaXJ9L29wZW5sZGFwIgorIworIy0tZW5hYmxlLWJkYiAgICAgICAgICBlbmFibGUgQmVya2VsZXkgREIgYmFja2VuZCBub3x5ZXN8bW9kIHllcworIyBUaGUgQmVya2VseSBEQiBpcyB0aGUgc3RhbmRhcmQgY2hvaWNlLiAgVGhpcyB2ZXJzaW9uIG9mIE9wZW5MREFQIHJlcXVpcmVzCisjIHRoZSB2ZXJzaW9uIDQgaW1wbGVtZW50YXRpb24gb3IgYmV0dGVyLgorUEFDS0FHRUNPTkZJR1tiZGJdID0gIi0tZW5hYmxlLWJkYj15ZXMsLS1lbmFibGUtYmRiPW5vLGRiIgorCisjLS1lbmFibGUtZG5zc3J2ICAgICAgIGVuYWJsZSBkbnNzcnYgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2Ruc3Nydl0gPSAiLS1lbmFibGUtZG5zc3J2PW1vZCwtLWVuYWJsZS1kbnNzcnY9bm8iCisKKyMtLWVuYWJsZS1oZGIgICAgICAgICAgZW5hYmxlIEhpZXJhcmNoaWNhbCBEQiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbaGRiXSA9ICItLWVuYWJsZS1oZGI9eWVzLC0tZW5hYmxlLWhkYj1ubyxkYiIKKworIy0tZW5hYmxlLWxkYXAgICAgICAgICBlbmFibGUgbGRhcCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcD1tb2QsLS1lbmFibGUtbGRhcD1ubywiCisKKyMtLWVuYWJsZS1tZGIgICAgICAgICAgZW5hYmxlIG1kYiBkYXRhYmFzZSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KK1BBQ0tBR0VDT05GSUdbbWRiXSA9ICItLWVuYWJsZS1tZGI9eWVzLC0tZW5hYmxlLW1kYj1ubywiCisKKyMtLWVuYWJsZS1tZXRhICAgICAgICAgZW5hYmxlIG1ldGFkaXJlY3RvcnkgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW21ldGFdID0gIi0tZW5hYmxlLW1ldGE9bW9kLC0tZW5hYmxlLW1ldGE9bm8sIgorCisjLS1lbmFibGUtbW9uaXRvciAgICAgIGVuYWJsZSBtb25pdG9yIGJhY2tlbmQgbm98eWVzfG1vZCB5ZXMKK1BBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvcj1tb2QsLS1lbmFibGUtbW9uaXRvcj1ubywiCisKKyMtLWVuYWJsZS1uZGIgICAgICAgICAgZW5hYmxlIE15U1FMIE5EQiBDbHVzdGVyIGJhY2tlbmQgbm98eWVzfG1vZCBbbm9dCitQQUNLQUdFQ09ORklHW25kYl0gPSAiLS1lbmFibGUtbmRiPW1vZCwtLWVuYWJsZS1uZGI9bm8sIgorCisjLS1lbmFibGUtbnVsbCAgICAgICAgIGVuYWJsZSBudWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1tudWxsXSA9ICItLWVuYWJsZS1udWxsPW1vZCwtLWVuYWJsZS1udWxsPW5vLCIKKworIy0tZW5hYmxlLXBhc3N3ZCAgICAgICBlbmFibGUgcGFzc3dkIGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1twYXNzd2RdID0gIi0tZW5hYmxlLXBhc3N3ZD1tb2QsLS1lbmFibGUtcGFzc3dkPW5vLCIKKworIy0tZW5hYmxlLXBlcmwgICAgICAgICBlbmFibGUgcGVybCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KKyMgIFRoaXMgcmVxdWlyZXMgYSBsb2FkYWJsZSBwZXJsIGR5bmFtaWMgbGlicmFyeSwgaWYgZW5hYmxlZCB3aXRob3V0CisjICBkb2luZyBzb21ldGhpbmcgYXBwcm9wcmlhdGUgKGJ1aWxkaW5nIHBlcmw/KSB0aGUgYnVpbGQgd2lsbCBwaWNrCisjICB1cCB0aGUgYnVpbGQgbWFjaGluZSBwZXJsIC0gbm90IGdvb2QgKGluaGVyaXQgcGVybG5hdGl2ZT8pCitQQUNLQUdFQ09ORklHW3BlcmxdID0gIi0tZW5hYmxlLXBlcmw9bW9kLC0tZW5hYmxlLXBlcmw9bm8scGVybCIKKworIy0tZW5hYmxlLXJlbGF5ICAgICAgICBlbmFibGUgcmVsYXkgYmFja2VuZCBub3x5ZXN8bW9kIFt5ZXNdCitQQUNLQUdFQ09ORklHW3JlbGF5XSA9ICItLWVuYWJsZS1yZWxheT1tb2QsLS1lbmFibGUtcmVsYXk9bm8sIgorCisjLS1lbmFibGUtc2hlbGwgICAgICAgIGVuYWJsZSBzaGVsbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KKyMgY29uZmlndXJlOiBXQVJOSU5HOiBVc2Ugb2YgLS13aXRob3V0LXRocmVhZHMgaXMgcmVjb21tZW5kZWQgd2l0aCBiYWNrLXNoZWxsCitQQUNLQUdFQ09ORklHW3NoZWxsXSA9ICItLWVuYWJsZS1zaGVsbD1tb2QgLS13aXRob3V0LXRocmVhZHMsLS1lbmFibGUtc2hlbGw9bm8sIgorCisjLS1lbmFibGUtc29jayAgICAgICAgIGVuYWJsZSBzb2NrIGJhY2tlbmQgbm98eWVzfG1vZCBbbm9dCitQQUNLQUdFQ09ORklHW3NvY2tdID0gIi0tZW5hYmxlLXNvY2s9bW9kLC0tZW5hYmxlLXNvY2s9bm8sIgorCisjLS1lbmFibGUtc3FsICAgICAgICAgIGVuYWJsZSBzcWwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjIHNxbCByZXF1aXJlcyBzb21lIHNxbCBiYWNrZW5kIHdoaWNoIHByb3ZpZGVzIHNxbC5oLCBzcWxpdGUqIHByb3ZpZGVzCisjIHNxbGl0ZS5oICh3aGljaCBtYXkgYmUgY29tcGF0aWJsZSBidXQgaGFzbid0IGJlZW4gdHJpZWQuKQorUEFDS0FHRUNPTkZJR1tzcWxdID0gIi0tZW5hYmxlLXNxbD1tb2QsLS1lbmFibGUtc3FsPW5vLHNxbGl0ZTMiCisKKyMtLWVuYWJsZS1keW5ncm91cCAgICAgRHluYW1pYyBHcm91cCBvdmVybGF5IG5vfHllc3xtb2Qgbm8KKyMgIFRoaXMgaXMgYSBkZW1vLCBQcm94eSBDYWNoZSBkZWZpbmVzIGluaXRfbW9kdWxlIHdoaWNoIGNvbmZsaWN0cyB3aXRoIHRoZQorIyAgc2FtZSBzeW1ib2wgaW4gZHluZ3JvdXAKK1BBQ0tBR0VDT05GSUdbZHluZ3JvdXBdID0gIi0tZW5hYmxlLWR5bmdyb3VwPW1vZCwtLWVuYWJsZS1keW5ncm91cD1ubywiCisKKyMtLWVuYWJsZS1wcm94eWNhY2hlICAgUHJveHkgQ2FjaGUgb3ZlcmxheSBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW3Byb3h5Y2FjaGVdID0gIi0tZW5hYmxlLXByb3h5Y2FjaGU9bW9kLC0tZW5hYmxlLXByb3h5Y2FjaGU9bm8sIgorRklMRVNfJHtQTn0tb3ZlcmxheS1wcm94eWNhY2hlID0gIiR7bWR9L3BjYWNoZS0qLnNvLioiCitQQUNLQUdFUyArPSAiJHtQTn0tb3ZlcmxheS1wcm94eWNhY2hlIgorCisjIEFwcGVuZCBVUkFORE9NX0RFVklDRT0nL2Rldi91cmFuZG9tJyB0byBDUFBGTEFHUzoKKyMgVGhpcyBhbGxvd3MgdGxzIHRvIG9idGFpbiByYW5kb20gYml0cyBmcm9tIC9kZXYvdXJhbmRvbSwgYnkgZGVmYXVsdAorIyBpdCB3YXMgZGlzYWJsZWQgZm9yIGNyb3NzLWNvbXBpbGluZy4KK0NQUEZMQUdTX2FwcGVuZCA9ICIgLURfR05VX1NPVVJDRSAtRFVSQU5ET01fREVWSUNFPVwnL2Rldi91cmFuZG9tXCcgLWZQSUMiCisKK0xERkxBR1NfYXBwZW5kID0gIiAtcHRocmVhZCIKKworZG9fY29uZmlndXJlKCkgeworICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vbGlidG9vbC9idWlsZC1hdXgvbHRtYWluLnNoICR7U30vYnVpbGQKKyAgICBybSAtZiAke1N9L2xpYnRvb2wKKyAgICBhY2xvY2FsCisgICAgbGlidG9vbGl6ZSAtLWZvcmNlIC0tY29weQorICAgIGdudS1jb25maWdpemUKKyAgICBhdXRvY29uZgorICAgIG9lX3J1bmNvbmYKK30KKworTEVBRF9TT05BTUUgPSAibGlibGRhcC0ke0xEQVBfVkVSfS5zby4qIgorCisjIFRoZSBleGVjdXRhYmxlcyBnbyBpbiBhIHNlcGFyYXRlIHBhY2thZ2UuICBUaGlzIGFsbG93cyB0aGUKKyMgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJpZXMgd2l0aCBubyBkYWVtb24gc3VwcG9ydC4KKyMgRWFjaCBtb2R1bGUgYWxzbyBoYXMgaXRzIG93biBwYWNrYWdlIC0gc2VlIGFib3ZlLgorUEFDS0FHRVMgKz0gIiR7UE59LXNsYXBkICR7UE59LXNsdXJwZCAke1BOfS1iaW4iCisKKyMgUGFja2FnZSBjb250ZW50cyAtIHNoaWZ0IG1vc3Qgc3RhbmRhcmQgY29udGVudHMgdG8gLWJpbgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL2xkYXAuKiAke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhIgorRklMRVNfJHtQTn0tc2xhcGQgPSAiJHtzeXNjb25mZGlyfS9pbml0LmQgJHtsaWJleGVjZGlyfS9zbGFwZCAke3NiaW5kaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvcnVuIFwKKyAgICAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLiogJHtzeXNjb25mZGlyfS9vcGVubGRhcC9zY2hlbWEgXAorICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvREJfQ09ORklHLmV4YW1wbGUgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qIgorRklMRVNfJHtQTn0tc2x1cnBkID0gIiR7bGliZXhlY2Rpcn0vc2x1cnBkICR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtc2x1cnAgJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4iCitGSUxFU18ke1BOfS1iaW4gPSAiJHtiaW5kaXJ9IgorRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYiouc28gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyoubGEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLy5kZWJ1ZyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBjYXQgJHtXT1JLRElSfS9pbml0c2NyaXB0ID4gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCisgICAgY2htb2QgNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubGRhcAorICAgICMgVGhpcyBpcyBkdXBsaWNhdGVkIGluIC9ldGMvb3BlbmxkYXAgYW5kIGlzIGZvciBzbGFwZAorICAgIHJtIC1mICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L29wZW5sZGFwLWRhdGEvREJfQ09ORklHLmV4YW1wbGUKKworICAgICMgSW5zdGFsbGluZyBzbGFwZCB1bmRlciAke3NiaW59IGlzIG1vcmUgRkhTIGFuZCBMU0IgY29tcGxpYW5jZQorICAgIG12ICR7RH0ke2xpYmV4ZWNkaXJ9L3NsYXBkICR7RH0vJHtzYmluZGlyfS9zbGFwZAorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmV4ZWNkaXJ9CisgICAgU0xBUFRPT0xTPSJzbGFwYWRkIHNsYXBjYXQgc2xhcGRuIHNsYXBpbmRleCBzbGFwcGFzc3dkIHNsYXB0ZXN0IHNsYXBhdXRoIHNsYXBhY2wgc2xhcHNjaGVtYSIKKyAgICBjZCAke0R9LyR7c2JpbmRpcn0vCisgICAgcm0gLWYgJHtTTEFQVE9PTFN9CisgICAgZm9yIGkgaW4gJHtTTEFQVE9PTFN9OyBkbyBsbiAtc2Ygc2xhcGQgJGk7IGRvbmUKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbGFwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworICAgICMgVXNlcyBtZG0gYXMgdGhlIGRhdGFiYXNlCisgICAgIyAgYW5kIGxvY2Fsc3RhdGVkaXIgYXMgZGF0YSBkaXJlY3RvcnkgLi4uCisgICAgc2VkIC1lICdzLyMgbW9kdWxlcGF0aC9tb2R1bGVwYXRoLycgXAorICAgICAgICAtZSAncy8jIG1vZHVsZWxvYWRccypiYWNrX2JkYi4qL21vZHVsZWxvYWQgICAgYmFja19tZGIvJyBcCisgICAgICAgIC1lICdzL2RhdGFiYXNlXHMqYmRiL2RhdGFiYXNlICAgICAgICBtZGIvJyBcCisgICAgICAgIC1lICdzJV5kaXJlY3RvcnlccyouKiVkaXJlY3RvcnkgICAke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhLyUnIFwKKyAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuY29uZgorCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEKKworCit9CisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc2xhcGQiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tc2xhcGQgPSAib3BlbmxkYXAiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zbGFwZCA9ICJkZWZhdWx0cyIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1zbGFwZCA9ICJob3N0YXBkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXNsYXBkID89ICJkaXNhYmxlIgorCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1iYWNrZW5kcy4qIF4ke1BOfS1iYWNrZW5kLS4qIgorCisjIFRoZSBtb2R1bGVzIHJlcXVpcmUgdGhlaXIgLnNvIHRvIGJlIGR5bmFtaWNhbHkgbG9hZGVkCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWRuc3NydiAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbGRhcCAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZXRhICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1kYiAgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbW9uaXRvciArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1udWxsICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXBhc3N3ZCAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtc2hlbGwgICArPSAiZGV2LXNvIgorCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBiYWNrZW5kX2RpciAgICA9IGQuZXhwYW5kKCcke2xpYmV4ZWNkaXJ9L29wZW5sZGFwJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLnNvJCcsICdvcGVubGRhcC1iYWNrZW5kLSVzJywgJ09wZW5MREFQICVzIGJhY2tlbmQnLCBwcmVwZW5kPVRydWUsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC0uKlwuc29cLi4qJCcsICdvcGVubGRhcC1iYWNrZW5kLSVzJywgJ09wZW5MREFQICVzIGJhY2tlbmQnLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorCisgICAgbWV0YXBrZyA9ICIke1BOfS1iYWNrZW5kcyIKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQorICAgIG1ldGFwa2dfcmRlcGVuZHMgPSBbXQorICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIGZvciBwa2cgaW4gcGFja2FnZXNbMTpdOgorICAgICAgICBpZiBwa2cuY291bnQoIm9wZW5sZGFwLWJhY2tlbmQtIikgYW5kIG5vdCBwa2cgaW4gbWV0YXBrZ19yZGVwZW5kcyBhbmQgbm90IHBrZy5jb3VudCgiLWRldiIpIGFuZCBub3QgcGtnLmNvdW50KCItZGJnIikgYW5kIG5vdCBwa2cuY291bnQoInN0YXRpYyIpIGFuZCBub3QgcGtnLmNvdW50KCJsb2NhbGUiKToKKyAgICAgICAgICAgIG1ldGFwa2dfcmRlcGVuZHMuYXBwZW5kKHBrZykKKyAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKG1ldGFwa2dfcmRlcGVuZHMpKQorICAgIGQuc2V0VmFyKCdERVNDUklQVElPTl8nICsgbWV0YXBrZywgJ09wZW5MREFQIGJhY2tlbmRzIG1ldGEgcGFja2FnZScpCisgICAgcGFja2FnZXMuYXBwZW5kKG1ldGFwa2cpCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zYy9vcGVuc2MvMDAwMS1GaXhlZC1nY2MtOC1jb21waWxhdGlvbi1lcnJvcnMtMTM1My5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zYy9vcGVuc2MvMDAwMS1GaXhlZC1nY2MtOC1jb21waWxhdGlvbi1lcnJvcnMtMTM1My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGQ4MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnNjL29wZW5zYy8wMDAxLUZpeGVkLWdjYy04LWNvbXBpbGF0aW9uLWVycm9ycy0xMzUzLnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gODc4NTdkNWNhZTdkYjk0ZmRkNzc2OTA0ODg2MzkyYjFlODYwNTNiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZsb3JpYW4gQmV6ZGVrYSA8MTExOTY5MytmYmV6ZGVrYUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBGcmksIDE4IE1heSAyMDE4IDE4OjU0OjU2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGdjYyA4IGNvbXBpbGF0aW9uIGVycm9ycyAoIzEzNTMpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoZSBmb2xsb3dpbmcgZXJyb3JzIG9jY3VyZWQgZHVyaW5nIGEgY29tcGlsYXRpb24gdXNpbmcgZ2NjIDg6CisKK0luIGZ1bmN0aW9uIMK7Z2lkc19jcmVhdGVfZmlsZS5jb25zdHByb3DCqywKKyAgICBpbnNlcnRlZCBieSDCu2dpZHNfc2F2ZV9jZXJ0aWZpY2F0ZS5pc3JhLjjCqyBiZWljYXJkLWdpZHMuYzoxNTQ4Ojc6CitjYXJkLWdpZHMuYzo0NjU6MjogRXJyb3I6IMK7c3RybmNwecKrIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIGNvcHlpbmcgOCBieXRlcyBmcm9tIGEgc3RyaW5nIG9mIGxlbmd0aCA4IFstV2Vycm9yPXN0cmluZ29wLXRydW5jYXRpb25dCisgIHN0cm5jcHkocmVjb3JkLT5maWxlbmFtZSwgZmlsZW5hbWUsIDgpOworICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitwa2NzMTUtb2JlcnRodXIuYzogSW4gZnVuY3Rpb24gwrtzY19wa2NzMTVlbXVfb2JlcnRodXJfYWRkX3BydmtlecKrOgorcGtjczE1LW9iZXJ0aHVyLmM6NzQxOjU6IEVycm9yOiDCu3N0cm5jcHnCqyBvdXRwdXQgbWF5IGJlIHRydW5jYXRlZCBjb3B5aW5nIDI1NCBieXRlcyBmcm9tIGEgc3RyaW5nIG9mIGxlbmd0aCAyNTQgWy1XZXJyb3I9c3RyaW5nb3AtdHJ1bmNhdGlvbl0KKyAgICAgc3RybmNweShrb2JqLmxhYmVsLCBvYmpzW2lpXS0+bGFiZWwsIHNpemVvZihrb2JqLmxhYmVsKSAtIDEpOworICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL09wZW5TQy9PcGVuU0MvcHVsbC8xMzUzXQorU2lnbmVkLW9mZi1ieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2xpYm9wZW5zYy9jYXJkLWdpZHMuYyAgICAgICB8IDMgKystCisgc3JjL2xpYm9wZW5zYy9wa2NzMTUtb2JlcnRodXIuYyB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGlib3BlbnNjL2NhcmQtZ2lkcy5jIGIvc3JjL2xpYm9wZW5zYy9jYXJkLWdpZHMuYworaW5kZXggZmM1ZDJhNy4uYWMzZTU3OSAxMDA2NDQKKy0tLSBhL3NyYy9saWJvcGVuc2MvY2FyZC1naWRzLmMKKysrKyBiL3NyYy9saWJvcGVuc2MvY2FyZC1naWRzLmMKK0BAIC0zMyw2ICszMyw3IEBAIFNvbWUgZmVhdHVyZXMgYXJlIHVuZG9jdW1lbnRlZCBsaWtlIHRoZSBmb3JtYXQgdXNlZCB0byBzdG9yZSBjZXJ0aWZpY2F0ZXMuIFRoZXkKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlICIuLi9jb21tb24vY29tcGF0X3N0cmxjcHkuaCIKKyAKKyAjaWZkZWYgRU5BQkxFX09QRU5TU0wKKyAvKiBvcGVuc3NsIG9ubHkgbmVlZGVkIGZvciBjYXJkIGFkbWluaXN0cmF0aW9uICovCitAQCAtNDYyLDcgKzQ2Myw3IEBAIHN0YXRpYyBpbnQgZ2lkc19jcmVhdGVfZmlsZShzY19jYXJkX3QgKmNhcmQsIGNoYXIqIGRpcmVjdG9yeSwgY2hhciogZmlsZW5hbWUpIHsKKyAJbWVtc2V0KG1hc3RlcmZpbGVidWZmZXIgKyBvZmZzZXQsIDAsIHNpemVvZihnaWRzX21mX3JlY29yZF90KSk7CisgCXJlY29yZCA9IChnaWRzX21mX3JlY29yZF90KikgKG1hc3RlcmZpbGVidWZmZXIgKyBvZmZzZXQpOworIAlzdHJuY3B5KHJlY29yZC0+ZGlyZWN0b3J5LCBkaXJlY3RvcnksIDgpOworLQlzdHJuY3B5KHJlY29yZC0+ZmlsZW5hbWUsIGZpbGVuYW1lLCA4KTsKKysJc3RybGNweShyZWNvcmQtPmZpbGVuYW1lLCBmaWxlbmFtZSwgc2l6ZW9mKHJlY29yZC0+ZmlsZW5hbWUpKTsKKyAJcmVjb3JkLT5maWxlSWRlbnRpZmllciA9IGZpbGVJZGVudGlmaWVyOworIAlyZWNvcmQtPmRhdGFPYmplY3RJZGVudGlmaWVyID0gZGF0YU9iamVjdElkZW50aWZpZXI7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2xpYm9wZW5zYy9wa2NzMTUtb2JlcnRodXIuYyBiL3NyYy9saWJvcGVuc2MvcGtjczE1LW9iZXJ0aHVyLmMKK2luZGV4IDRmODQxZWQuLjM0MTViZTcgMTAwNjQ0CistLS0gYS9zcmMvbGlib3BlbnNjL3BrY3MxNS1vYmVydGh1ci5jCisrKysgYi9zcmMvbGlib3BlbnNjL3BrY3MxNS1vYmVydGh1ci5jCitAQCAtMjksNiArMjksNyBAQAorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgIi4uL2NvbW1vbi9jb21wYXRfc3RybGNweS5oIgorIAorICNpbmNsdWRlICJwa2NzMTUuaCIKKyAjaW5jbHVkZSAibG9nLmgiCitAQCAtNzM4LDcgKzczOSw3IEBAIHNjX3BrY3MxNWVtdV9vYmVydGh1cl9hZGRfcHJ2a2V5KHN0cnVjdCBzY19wa2NzMTVfY2FyZCAqcDE1Y2FyZCwKKyAJCQl1bnNpZ25lZCBpbnQgaWQgPSBwYXRoLnZhbHVlW3BhdGgubGVuIC0gMl0gKiAweDEwMCArIHBhdGgudmFsdWVbcGF0aC5sZW4gLSAxXTsKKyAKKyAJCQlpZiAoaWQgPT0gY2NvbnQuaWRfY2VydCkgICB7CistCQkJCXN0cm5jcHkoa29iai5sYWJlbCwgb2Jqc1tpaV0tPmxhYmVsLCBzaXplb2Yoa29iai5sYWJlbCkgLSAxKTsKKysJCQkJc3RybGNweShrb2JqLmxhYmVsLCBvYmpzW2lpXS0+bGFiZWwsIHNpemVvZihrb2JqLmxhYmVsKSk7CisgCQkJCWJyZWFrOworIAkJCX0KKyAJCX0KKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5zYy9vcGVuc2NfMC4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnNjL29wZW5zY18wLjE2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkNjcxODEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnNjL29wZW5zY18wLjE2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlNtYXJ0IGNhcmQgbGlicmFyeSBhbmQgYXBwbGljYXRpb25zIgotREVTQ1JJUFRJT04gPSAiT3BlblNDIGlzIGEgdG9vbCBmb3IgYWNjZXNzaW5nIHNtYXJ0IGNhcmQgZGV2aWNlcy4gQmFzaWNcCi1mdW5jdGlvbmFsaXR5IChlLmcuIFNFTEVDVCBGSUxFLCBSRUFEIEJJTkFSWSkgc2hvdWxkIHdvcmsgb24gYW55IElTT1wKLTc4MTYtNCBjb21wYXRpYmxlIHNtYXJ0IGNhcmQuIEVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gdXNpbmcgcHJpdmF0ZVwKLWtleXMgb24gdGhlIHNtYXJ0IGNhcmQgaXMgcG9zc2libGUgd2l0aCBQS0NTXAotc3VjaCBhcyB0aGUgRklORUlEIChGaW5uaXNoIEVsZWN0cm9uaWMgSURlbnRpdHkpIGNhcmQuIFN3ZWRpc2ggUG9zdGVuXAotZUlEIGNhcmRzIGhhdmUgYWxzbyBiZWVuIGNvbmZpcm1lZCB0byB3b3JrLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc2MtcHJvamVjdC5vcmcvb3BlbnNjLyIKLVNFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcyIKLQotU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vby8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzI0ZDEyOGYyM2NkN2E3NGIyOGQwNDMwMGNlN2JjYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FjOGMyOTU0MmJiNDgxNzllNzA4NmQzNWExYjg5MDdhNGU4NmFjYTNkZTMzMjNjMmY0OGJkNzRlYWFmNTcyOSIKLQotREVQRU5EUyA9ICJvcGVuY3QgcGNzYy1saXRlIHZpcnR1YWwvbGliaWNvbnYgb3BlbnNzbCIKLQotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtc3RhdGljIFwKLSAgICAtLWVuYWJsZS1vcGVuY3QgXAotICAgIC0tZGlzYWJsZS1wY3NjIFwKLSAgICAtLWRpc2FibGUtY3RhcGkgXAotICAgIC0tZGlzYWJsZS1kb2MgXAotIgotRVhUUkFfT0VNQUtFID0gIkRFU1RESVI9JHtEfSIKLQotUkRFUEVORFNfJHtQTn0gPSAicmVhZGxpbmUiCi0KLUZJTEVTXyR7UE59ICs9ICJcCi0gICAgJHtsaWJkaXJ9L29wZW5zYy1wa2NzMTEuc28gXAotICAgICR7bGliZGlyfS9vbmVwaW4tb3BlbnNjLXBrY3MxMS5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS1zcHkuc28gXAotIgotRklMRVNfJHtQTn0tZGV2ICs9ICJcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS9vcGVuc2MtcGtjczExLnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExL29uZXBpbi1vcGVuc2MtcGtjczExLnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExL3BrY3MxMS1zcHkuc28gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnNjL29wZW5zY18wLjE4LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVuc2Mvb3BlbnNjXzAuMTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWM5MzFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbnNjL29wZW5zY18wLjE4LjAuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJTbWFydCBjYXJkIGxpYnJhcnkgYW5kIGFwcGxpY2F0aW9ucyIKK0RFU0NSSVBUSU9OID0gIk9wZW5TQyBpcyBhIHRvb2wgZm9yIGFjY2Vzc2luZyBzbWFydCBjYXJkIGRldmljZXMuIEJhc2ljXAorZnVuY3Rpb25hbGl0eSAoZS5nLiBTRUxFQ1QgRklMRSwgUkVBRCBCSU5BUlkpIHNob3VsZCB3b3JrIG9uIGFueSBJU09cCis3ODE2LTQgY29tcGF0aWJsZSBzbWFydCBjYXJkLiBFbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIHVzaW5nIHByaXZhdGVcCitrZXlzIG9uIHRoZSBzbWFydCBjYXJkIGlzIHBvc3NpYmxlIHdpdGggUEtDU1wKK3N1Y2ggYXMgdGhlIEZJTkVJRCAoRmlubmlzaCBFbGVjdHJvbmljIElEZW50aXR5KSBjYXJkLiBTd2VkaXNoIFBvc3RlblwKK2VJRCBjYXJkcyBoYXZlIGFsc28gYmVlbiBjb25maXJtZWQgdG8gd29yay4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL29wZW5zYy8iCitTRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTgwNTIxVDEwMTQyOFovcG9vbC9tYWluL28vb3BlbnNjL29wZW5zY18wLjE4LjAub3JpZy50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1nY2MtOC1jb21waWxhdGlvbi1lcnJvcnMtMTM1My5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmNlNTE2Zjc1MmUwZGI1MzI3YWEwNmNjMDEzNmZlMjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmVmNjJiMDBlOGZkYmUzZTM4NmMzZWUyNWMyY2FkYjU2YzE5MzFlYTQyZjFhMTFkY2U4Yzk0N2Y1MWI0NTAzMyIKKworREVQRU5EUyA9ICJvcGVuY3QgcGNzYy1saXRlIHZpcnR1YWwvbGliaWNvbnYgb3BlbnNzbCIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTID0gIiR7V09SS0RJUn0vT3BlblNDLSR7UFZ9IgorRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXN0YXRpYyBcCisgICAgLS1lbmFibGUtb3BlbmN0IFwKKyAgICAtLWRpc2FibGUtcGNzYyBcCisgICAgLS1kaXNhYmxlLWN0YXBpIFwKKyAgICAtLWRpc2FibGUtZG9jIFwKKyIKK0VYVFJBX09FTUFLRSA9ICJERVNURElSPSR7RH0iCisKK1JERVBFTkRTXyR7UE59ID0gInJlYWRsaW5lIgorCitGSUxFU18ke1BOfSArPSAiXAorICAgICR7bGliZGlyfS9vcGVuc2MtcGtjczExLnNvIFwKKyAgICAke2xpYmRpcn0vb25lcGluLW9wZW5zYy1wa2NzMTEuc28gXAorICAgICR7bGliZGlyfS9wa2NzMTEtc3B5LnNvIFwKKyIKK0ZJTEVTXyR7UE59LWRldiArPSAiXAorICAgICR7bGliZGlyfS9wa2NzMTEvb3BlbnNjLXBrY3MxMS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS9vbmVwaW4tb3BlbnNjLXBrY3MxMS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS9wa2NzMTEtc3B5LnNvIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjIuYmIKaW5kZXggOTBkNThiMC4uMTBmNzI0ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjIuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYzOGIzZDFjN2VmN2ZjMmM4YjZkMjBjZDM4ZWZkYzI5IgogREVQRU5EUyA9ICJ1ZGV2IgogCi1TUkNfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzL2Rvd25sb2FkLnBocC9maWxlLzQyMjUvcGNzYy1saXRlLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJID0gImh0dHBzOi8vcGNzY2xpdGUuYXBkdS5mci9maWxlcy8ke0JQfS50YXIuYnoyIgogU1JDX1VSSVttZDVzdW1dID0gIjBlYzEwM2IxZWYyOThkMGM1OGQ2ZWY2YjAwYjljZjE3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhMzU4ZjYxZWQzYjY2YTdmNmUxZjRlNzk0YTk0YzdiZTRjODFiN2E1OGVjMzYwYzMzNzkxZThkN2Q5YmQ0MDUiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BpZGdpbi9waWRnaW5fMi4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjEyLjAuYmIKaW5kZXggMDg4ZjA4Yi4uMTQ4ZTRiNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjEyLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGlkZ2luL3BpZGdpbl8yLjEyLjAuYmIKQEAgLTU4LDcgKzU4LDkgQEAKIE9FX0xUX1JQQVRIX0FMTE9XPSI6JHtsaWJkaXJ9L3B1cnBsZS0yOiIKIE9FX0xUX1JQQVRIX0FMTE9XW2V4cG9ydF09IjEiCiAKLVBBQ0tBR0VTID0rICJsaWJwdXJwbGUtZGJnIGxpYnB1cnBsZS1kZXYgbGlicHVycGxlIGxpYmdudC1kYmcgbGliZ250IGxpYmdudC1kZXYgZmluY2gtZGJnIGZpbmNoIGZpbmNoLWRldiAke1BOfS1kYXRhIgorUEFDS0FHRVMgPSsgImxpYnB1cnBsZS1kZXYgbGlicHVycGxlIGxpYmdudCBsaWJnbnQtZGV2IGZpbmNoIGZpbmNoLWRldiAke1BOfS1kYXRhIgorCitSUFJPVklERVNfJHtQTn0tZGJnICs9ICJsaWJwdXJwbGUtZGJnIGxpYmdudC1kYmcgZmluY2gtZGJnIgogCiBMRUFEX1NPTkFNRSA9ICJsaWJwdXJwbGUuc28uMCIKIEZJTEVTX2xpYnB1cnBsZSAgICAgPSAiJHtsaWJkaXJ9L2xpYnB1cnBsZSouc28uKiAke2xpYmRpcn0vcHVycGxlLTIgJHtiaW5kaXJ9L3B1cnBsZS0qICR7c3lzY29uZmRpcn0vZ2NvbmYvc2NoZW1hcy9wdXJwbGUqICR7ZGF0YWRpcn0vcHVycGxlL2NhLWNlcnRzIgpAQCAtNjksMTUgKzcxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJvc2Nhci5zbyBcCiAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi9saWJ5bXNnLnNvIFwKICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9hY2xvY2FsIgotRklMRVNfbGlicHVycGxlLWRiZyArPSAiJHtsaWJkaXJ9Ly5kZWJ1Zy9saWJwdXJwbGUqIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wdXJwbGUtMi8uZGVidWciCiBGSUxFU19saWJnbnQgICAgICAgICA9ICIke2xpYmRpcn0vbGliZ250LnNvLiogJHtsaWJkaXJ9L2dudC8qLnNvIgogRklMRVNfbGliZ250LWRldiAgICAgPSAiJHtsaWJkaXJ9L2dudC8qLmxhIgotRklMRVNfbGliZ250LWRiZyAgICAgPSAiJHtsaWJkaXJ9L2dudC8uZGVidWciCiBGSUxFU19maW5jaCAgICAgICAgICA9ICIke2JpbmRpcn0vZmluY2giCiBGSUxFU19maW5jaC1kZXYgICAgICA9ICIke2xpYmRpcn0vZmluY2gvKi5sYSIKLUZJTEVTX2ZpbmNoLWRiZyAgICAgID0gIiR7YmluZGlyfS8uZGVidWcvZmluY2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2ZpbmNoLy5kZWJ1ZyIKIAogRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vJHtQTn0gJHtsaWJkaXJ9LyR7UE59Lyouc28gXAogICAgICAgICAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jby8wMDAxLURvbi10LXRyeS10by1pbnN0YWxsLW5vbi1leGlzdGluZy1FbmNvZGluZ3MtdGVzdHN1aXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY28vMDAwMS1Eb24tdC10cnktdG8taW5zdGFsbC1ub24tZXhpc3RpbmctRW5jb2RpbmdzLXRlc3RzdWl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YTM1OGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY28vMDAwMS1Eb24tdC10cnktdG8taW5zdGFsbC1ub24tZXhpc3RpbmctRW5jb2RpbmdzLXRlc3RzdWl0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZmEwNzlkZmM1ZTFkMjJlYTM1NzYyYmY0YzViMDk5OTliZGM1ZTczMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvY2hlbiBTcHJpY2tlcmhvZiA8Z2l0QGpvY2hlbi5zcHJpY2tlcmhvZi5kZT4KK0RhdGU6IFdlZCwgMjIgQXVnIDIwMTggMjE6NDI6MDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgdHJ5IHRvIGluc3RhbGwgbm9uIGV4aXN0aW5nIEVuY29kaW5ncy90ZXN0c3VpdGUvZGF0YQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vcG9jb3Byb2plY3QvcG9jby9wdWxsLzI0MzddCistLS0KKyBFbmNvZGluZ3MvdGVzdHN1aXRlL0NNYWtlTGlzdHMudHh0IHwgNSArLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0VuY29kaW5ncy90ZXN0c3VpdGUvQ01ha2VMaXN0cy50eHQgYi9FbmNvZGluZ3MvdGVzdHN1aXRlL0NNYWtlTGlzdHMudHh0CitpbmRleCA3NTA4ZTU1MjIuLjc5NDk1YWUwMiAxMDA2NDQKKy0tLSBhL0VuY29kaW5ncy90ZXN0c3VpdGUvQ01ha2VMaXN0cy50eHQKKysrKyBiL0VuY29kaW5ncy90ZXN0c3VpdGUvQ01ha2VMaXN0cy50eHQKK0BAIC0xOSwxMiArMTksOSBAQCBQT0NPX1NPVVJDRVNfQVVUT19QTEFUKCBURVNUX1NSQ1MgV0lOQ0UKKyBhZGRfZXhlY3V0YWJsZSggJHtURVNUVU5JVH0gJHtURVNUX1NSQ1N9ICkKKyBpZihBTkRST0lEKQorIAlhZGRfdGVzdChOQU1FICR7TElCTkFNRX0gV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9CistCQkJQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1EQU5EUk9JRF9OREs9JHtBTkRST0lEX05ES30gIi1EVEVTVF9GSUxFUz0ke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZGF0YTsiIC1ETElCUkFSWV9ESVI9JHtDTUFLRV9CSU5BUllfRElSfS9saWIgLURVTklUVEVTVD0ke0NNQUtFX0JJTkFSWV9ESVJ9L2Jpbi8ke1RFU1RVTklUfSAtRFRFU1RfUEFSQU1FVEVSPS1hbGwgLVAgJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9FeGVjdXRlT25BbmRyb2lkLmNtYWtlKQorKwkJCUNPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtREFORFJPSURfTkRLPSR7QU5EUk9JRF9OREt9IC1ETElCUkFSWV9ESVI9JHtDTUFLRV9CSU5BUllfRElSfS9saWIgLURVTklUVEVTVD0ke0NNQUtFX0JJTkFSWV9ESVJ9L2Jpbi9FbmNvZGluZ3MtdGVzdHJ1bm5lciAtRFRFU1RfUEFSQU1FVEVSPS1hbGwgLVAgJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9FeGVjdXRlT25BbmRyb2lkLmNtYWtlKQorIGVsc2UoKQorIAlhZGRfdGVzdChOQU1FICR7TElCTkFNRX0gV09SS0lOR19ESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9IENPTU1BTkQgJHtURVNUVU5JVH0gLWFsbCkKKy0JIyBUaGUgdGVzdCBpcyBydW4gaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gU28gdGhlIHRlc3QgZGF0YSBpcyBjb3BpZWQgdGhlcmUgdG9vCistCWFkZF9jdXN0b21fY29tbWFuZChUQVJHRVQgJHtURVNUVU5JVH0gUE9TVF9CVUlMRAorLQkJCQkgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY29weV9kaXJlY3RvcnkgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2RhdGEgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2RhdGEgKQorIGVuZGlmKCkKKyAjc2V0X3RhcmdldF9wcm9wZXJ0aWVzKCAke1RFU1RVTklUfSBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgJHtSRUxFQVNFX0NYWF9GTEFHU30gKQorIHRhcmdldF9saW5rX2xpYnJhcmllcyggJHtURVNUVU5JVH0gIFBvY29FbmNvZGluZ3MgUG9jb0ZvdW5kYXRpb24gQ3BwVW5pdCApCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS44LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjguMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjBiNGQzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjguMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLVNVTU1BUlkgPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBDKysgY2xhc3MgbGlicmFyaWVzIgotREVTQ1JJUFRJT04gPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBDKysgY2xhc3MgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBuZXR3b3JrLSBhbmQgaW50ZXJuZXQtYmFzZWQgYXBwbGljYXRpb25zIHRoYXQgcnVuIG9uIGRlc2t0b3AsIHNlcnZlciwgbW9iaWxlIGFuZCBlbWJlZGRlZCBzeXN0ZW1zLiIKLVNFQ1RJT04gPSAibGlicyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wb2NvcHJvamVjdC5vcmcvIgotTElDRU5TRSA9ICJCU0wtMS4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDI2N2Y0OGZjNzM4ZjUwMzgwY2JlZWI3NmY5NWNlYmMiCi0KLSMgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSByZXF1aXJlZCBieSBGb3VuZGF0aW9uCi1ERVBFTkRTID0gImxpYnBjcmUgemxpYiIKLQotaW5oZXJpdCBjbWFrZSBwdGVzdAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDUkVWID0gImFmNTI3YWIyMWZjYTVhYjI2NTkyODU0MDhhZWM5OTIwZWQ3YzdiMTciCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9wb2NvcHJvamVjdC9wb2NvLmdpdCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ01BS0UgPSAiLURDTUFLRV9CVUlMRF9UWVBFPVJlbFdpdGhEZWJJbmZvIC1EUE9DT19VTkJVTkRMRUQ9T04gXAotICAgICAgICAgICAgICAgICAgLURaTElCX0xJQlJBUllfUkVMRUFTRTpTVFJJTkc9eiAtRFBDUkVfTElCUkFSWTpTVFJJTkc9cGNyZSBcCi0gICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURFTkFCTEVfVEVTVFM9T04gJywgJycsIGQpfSIKLQotIyBGb3IgdGhlIG5hdGl2ZSBidWlsZCB3ZSB3YW50IHRvIHVzZSB0aGUgYnVuZGxlZCB2ZXJzaW9uCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EUE9DT19VTkJVTkRMRUQ9T0ZGIgotCi0jIGRvIG5vdCB1c2UgcnBhdGgKLUVYVFJBX09FQ01BS0VfYXBwZW5kID0gIiAtRENNQUtFX1NLSVBfUlBBVEg9T04iCi0KLSMgQnkgZGVmYXVsdCB0aGUgbW9zdCBjb21tb25seSB1c2VkIHBvY28gY29tcG9uZW50cyBhcmUgYnVpbHQKLSMgRm91bmRhdGlvbiBpcyBidWlsdCBhbnl3YXkgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBsaXN0ZWQgZXhwbGljaXRseQotIyB0aGVzZSBkb24ndCBoYXZlIGRlcGVuZGVuY2llcyBvdXRzaWRlIG9lLWNvcmUKLVBBQ0tBR0VDT05GSUcgPz89ICJYTUwgSlNPTiBNb25nb0RCIFBERiBVdGlsIE5ldCBOZXRTU0wgQ3J5cHRvIERhdGEgRGF0YVNRTGl0ZSBaaXAiCi0KLVBBQ0tBR0VDT05GSUdbWE1MXSA9ICItREVOQUJMRV9YTUw9T04gLURFWFBBVF9MSUJSQVJZOlNUUklORz1leHBhdCwtREVOQUJMRV9YTUw9T0ZGLGV4cGF0IgotUEFDS0FHRUNPTkZJR1tKU09OXSA9ICItREVOQUJMRV9KU09OPU9OLC1ERU5BQkxFX0pTT049T0ZGIgotUEFDS0FHRUNPTkZJR1tNb25nb0RCXSA9ICItREVOQUJMRV9NT05HT0RCPU9OLC1ERU5BQkxFX01PTkdPREI9T0ZGIgotUEFDS0FHRUNPTkZJR1tQREZdID0gIi1ERU5BQkxFX1BERj1PTiwtREVOQUJMRV9QREY9T0ZGLHpsaWIiCi1QQUNLQUdFQ09ORklHW1V0aWxdID0gIi1ERU5BQkxFX1VUSUw9T04sLURFTkFCTEVfVVRJTD1PRkYiCi1QQUNLQUdFQ09ORklHW05ldF0gPSAiLURFTkFCTEVfTkVUPU9OLC1ERU5BQkxFX05FVD1PRkYiCi1QQUNLQUdFQ09ORklHW05ldFNTTF0gPSAiLURFTkFCTEVfTkVUU1NMPU9OIC1ET1BFTlNTTF9TU0xfTElCUkFSWTpTVFJJTkc9c3NsIC1ET1BFTlNTTF9DUllQVE9fTElCUkFSWTpTVFJJTkc9Y3J5cHRvLC1ERU5BQkxFX05FVFNTTD1PRkYsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbQ3J5cHRvXSA9ICItREVOQUJMRV9DUllQVE89T04gLURPUEVOU1NMX1NTTF9MSUJSQVJZOlNUUklORz1zc2wgLURPUEVOU1NMX0NSWVBUT19MSUJSQVJZOlNUUklORz1jcnlwdG8sLURFTkFCTEVfQ1JZUFRPPU9GRixvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tEYXRhXSA9ICItREVOQUJMRV9EQVRBPU9OLC1ERU5BQkxFX0RBVEE9T0ZGIgotUEFDS0FHRUNPTkZJR1tEYXRhU1FMaXRlXSA9ICItREVOQUJMRV9EQVRBX1NRTElURT1PTiAtRFNRTElURTNfTElCUkFSWTpTVFJJTkc9c3FsaXRlMywtREVOQUJMRV9EQVRBX1NRTElURT1PRkYsc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbWmlwXSA9ICItREVOQUJMRV9aSVA9T04sLURFTkFCTEVfWklQPU9GRiIKLQotIyBBZGRpdGlvbmFsIGNvbXBvbmVudHMgbm90IGJ1aWxkIGJ5IGRlZmF1bHQsCi0jIHRoZXkgbWlnaHQgaGF2ZSBkZXBlbmRlbmNpZXMgbm90IGluY2x1ZGVkIGluIG9lLWNvcmUKLSMgb3IgdGhleSBkb24ndCB3b3JrIG9uIGFsbCBhcmNoaXRlY3R1cmVzCi1QQUNLQUdFQ09ORklHW21vZF9wb2NvXSA9ICItREVOQUJMRV9BUEFDSEVDT05ORUNUT1I9T04sLURFTkFCTEVfQVBBQ0hFQ09OTkVDVE9SPU9GRixhcHIgYXBhY2hlMiIKLVBBQ0tBR0VDT05GSUdbQ3BwUGFyc2VyXSA9ICItREVOQUJMRV9DUFBQQVJTRVI9T04sLURFTkFCTEVfQ1BQUEFSU0VSPU9GRiIKLVBBQ0tBR0VDT05GSUdbRGF0YU15U1FMXSA9ICItREVOQUJMRV9EQVRBX01ZU1FMPU9OIC1ETVlTUUxfTElCOlNUUklORz1teXNxbGNsaWVudF9yLC1ERU5BQkxFX0RBVEFfTVlTUUw9T0ZGLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW0RhdGFPREJDXSA9ICItREVOQUJMRV9EQVRBX09EQkM9T04sLURFTkFCTEVfREFUQV9PREJDPU9GRixsaWJpb2RiYyIKLVBBQ0tBR0VDT05GSUdbUGFnZUNvbXBpbGVyXSA9ICItREVOQUJMRV9QQUdFQ09NUElMRVI9T04sLURFTkFCTEVfUEFHRUNPTVBJTEVSPU9GRiIKLVBBQ0tBR0VDT05GSUdbUGFnZUNvbXBpbGVyRmlsZTJQYWdlXSA9ICItREVOQUJMRV9QQUdFQ09NUElMRVJfRklMRTJQQUdFPU9OLC1ERU5BQkxFX1BBR0VDT01QSUxFUl9GSUxFMlBBR0U9T0ZGIgotUEFDS0FHRUNPTkZJR1tTZXZlblppcF0gPSAiLURFTkFCTEVfU0VWRU5aSVA9T04sLURFTkFCTEVfU0VWRU5aSVA9T0ZGIgotCi0jIE1ha2UgYSBwYWNrYWdlIGZvciBlYWNoIGxpYnJhcnkKLVBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BPQ09fUEFDS0FHRVN9IgotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBwYWNrYWdlcyA9IFtdCi0gICAgdGVzdHJ1bm5lcnMgPSBbXQotICAgIGNvbXBvbmVudHMgPSBkLmdldFZhcigiUEFDS0FHRUNPTkZJRyIpLnNwbGl0KCkKLSAgICBjb21wb25lbnRzLmFwcGVuZCgiRm91bmRhdGlvbiIpCi0gICAgZm9yIGxpYiBpbiBjb21wb25lbnRzOgotICAgICAgICBwa2cgPSAoInBvY28tJXMiICUgbGliLmxvd2VyKCkpLnJlcGxhY2UoIl8iLCIiKQotICAgICAgICBwYWNrYWdlcy5hcHBlbmQocGtnKQotICAgICAgICBpZiBub3QgZC5nZXRWYXIoIkZJTEVTXyVzIiAlIHBrZyk6Ci0gICAgICAgICAgICBkLnNldFZhcigiRklMRVNfJXMiICUgcGtnLCAiJHtsaWJkaXJ9L2xpYlBvY28lcy5zby4qIiAlIGxpYikKLSAgICAgICAgdGVzdHJ1bm5lcnMuYXBwZW5kKCIlcyIgJSBsaWIpCi0KLSAgICBkLnNldFZhcigiUE9DT19QQUNLQUdFUyIsICIgIi5qb2luKHBhY2thZ2VzKSkKLSAgICBkLnNldFZhcigiUE9DT19URVNUUlVOTkVSUyIsICJcbiIuam9pbih0ZXN0cnVubmVycykpCi19Ci0KLSMgInBvY28iIGlzIGEgbWV0YXBhY2thZ2Ugd2hpY2ggcHVsbHMgaW4gYWxsIFBvY28gY29tcG9uZW50cwotUEFDS0FHRVMgKz0gIiR7UE59IgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7UE9DT19QQUNLQUdFU30iCi1SUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotIyAtZGV2IGxhc3QgdG8gcGljayB1cCB0aGUgcmVtYWluaW5nIHN0dWZmCi1QQUNLQUdFUyArPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWJQb2NvKi5zbyAke2xpYmRpcn0vY21ha2UiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYlBvY28qLmEiCi0KLSMgcHRlc3Qgc3VwcG9ydAotRklMRVNfJHtQTn0tZGJnICs9ICIke1BURVNUX1BBVEh9L2Jpbi8uZGVidWciCi0KLSMgY3BwdW5pdCBpcyBvbmx5IGJ1aWx0IGlmIHRlc3RzIGFyZSBlbmFibGVkCi1QQUNLQUdFUyArPSAiJHtQTn0tY3BwdW5pdCIKLUZJTEVTXyR7UE59LWNwcHVuaXQgKz0gIiR7bGliZGlyfS9saWJDcHBVbml0LnNvKiIKLUFMTE9XX0VNUFRZXyR7UE59LWNwcHVuaXQgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LWNwcHVuaXQiCi0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgICAgIGNwIC1yZiAke0J9L2Jpbi8gJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICBjcCAtZiAke0J9L2xpYi9saWJDcHBVbml0LnNvKiAke0R9JHtsaWJkaXJ9Ci0gICAgICAgY3AgLXJmICR7Qn0vKi90ZXN0c3VpdGUvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS9iaW4vCi0gICAgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1leGVjdXRhYmxlIC1leGVjIGNocnBhdGggLWQge30gXDsKLSAgICAgICBlY2hvICIke1BPQ09fVEVTVFJVTk5FUlN9IiA+ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cnVubmVycyIKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvY28vcG9jb18xLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNThjYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS4wLmJiCkBAIC0wLDAgKzEsOTkgQEAKK1NVTU1BUlkgPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBDKysgY2xhc3MgbGlicmFyaWVzIgorREVTQ1JJUFRJT04gPSAiTW9kZXJuLCBwb3dlcmZ1bCBvcGVuIHNvdXJjZSBDKysgY2xhc3MgbGlicmFyaWVzIGFuZCBmcmFtZXdvcmtzIGZvciBidWlsZGluZyBuZXR3b3JrLSBhbmQgaW50ZXJuZXQtYmFzZWQgYXBwbGljYXRpb25zIHRoYXQgcnVuIG9uIGRlc2t0b3AsIHNlcnZlciwgbW9iaWxlIGFuZCBlbWJlZGRlZCBzeXN0ZW1zLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wb2NvcHJvamVjdC5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0wtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDI2N2Y0OGZjNzM4ZjUwMzgwY2JlZWI3NmY5NWNlYmMiCisKKyMgVGhlc2UgZGVwZW5kZW5jaWVzIGFyZSByZXF1aXJlZCBieSBGb3VuZGF0aW9uCitERVBFTkRTID0gImxpYnBjcmUgemxpYiIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vcG9jb3Byb2plY3QvcG9jby5naXQ7YnJhbmNoPXBvY28tJHtQVn0gXAorICAgIGZpbGU6Ly8wMDAxLURvbi10LXRyeS10by1pbnN0YWxsLW5vbi1leGlzdGluZy1FbmNvZGluZ3MtdGVzdHN1aXQucGF0Y2ggXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgIgorU1JDUkVWID0gImRhZjAwZGE3M2FiOTE3ZTRkNDU4MWUzYWEwMGMwZWU2MWUwY2M1OGIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgcHRlc3QKKworIyBCeSBkZWZhdWx0IHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgcG9jbyBjb21wb25lbnRzIGFyZSBidWlsdAorIyBGb3VuZGF0aW9uIGlzIGJ1aWx0IGFueXdheSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGxpc3RlZCBleHBsaWNpdGx5CisjIHRoZXNlIGRvbid0IGhhdmUgZGVwZW5kZW5jaWVzIG91dHNpZGUgb2UtY29yZQorUEFDS0FHRUNPTkZJRyA/Pz0gIlhNTCBKU09OIE1vbmdvREIgUERGIFV0aWwgTmV0IE5ldFNTTCBDcnlwdG8gRGF0YSBEYXRhU1FMaXRlIFppcCBFbmNvZGluZ3MgUmVkaXMiCisKK1BBQ0tBR0VDT05GSUdbWE1MXSA9ICItREVOQUJMRV9YTUw9T04gLURFWFBBVF9MSUJSQVJZOlNUUklORz1leHBhdCwtREVOQUJMRV9YTUw9T0ZGLGV4cGF0IgorUEFDS0FHRUNPTkZJR1tKU09OXSA9ICItREVOQUJMRV9KU09OPU9OLC1ERU5BQkxFX0pTT049T0ZGIgorUEFDS0FHRUNPTkZJR1tNb25nb0RCXSA9ICItREVOQUJMRV9NT05HT0RCPU9OLC1ERU5BQkxFX01PTkdPREI9T0ZGIgorUEFDS0FHRUNPTkZJR1tQREZdID0gIi1ERU5BQkxFX1BERj1PTiwtREVOQUJMRV9QREY9T0ZGLHpsaWIiCitQQUNLQUdFQ09ORklHW1V0aWxdID0gIi1ERU5BQkxFX1VUSUw9T04sLURFTkFCTEVfVVRJTD1PRkYiCitQQUNLQUdFQ09ORklHW05ldF0gPSAiLURFTkFCTEVfTkVUPU9OLC1ERU5BQkxFX05FVD1PRkYiCitQQUNLQUdFQ09ORklHW05ldFNTTF0gPSAiLURFTkFCTEVfTkVUU1NMPU9OIC1ET1BFTlNTTF9TU0xfTElCUkFSWTpTVFJJTkc9c3NsIC1ET1BFTlNTTF9DUllQVE9fTElCUkFSWTpTVFJJTkc9Y3J5cHRvLC1ERU5BQkxFX05FVFNTTD1PRkYsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbQ3J5cHRvXSA9ICItREVOQUJMRV9DUllQVE89T04gLURPUEVOU1NMX1NTTF9MSUJSQVJZOlNUUklORz1zc2wgLURPUEVOU1NMX0NSWVBUT19MSUJSQVJZOlNUUklORz1jcnlwdG8sLURFTkFCTEVfQ1JZUFRPPU9GRixvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tEYXRhXSA9ICItREVOQUJMRV9EQVRBPU9OLC1ERU5BQkxFX0RBVEE9T0ZGIgorUEFDS0FHRUNPTkZJR1tEYXRhU1FMaXRlXSA9ICItREVOQUJMRV9EQVRBX1NRTElURT1PTiAtRFNRTElURTNfTElCUkFSWTpTVFJJTkc9c3FsaXRlMywtREVOQUJMRV9EQVRBX1NRTElURT1PRkYsc3FsaXRlMyIKK1BBQ0tBR0VDT05GSUdbWmlwXSA9ICItREVOQUJMRV9aSVA9T04sLURFTkFCTEVfWklQPU9GRiIKK1BBQ0tBR0VDT05GSUdbRW5jb2RpbmdzXSA9ICItREVOQUJMRV9FTkNPRElOR1M9T04sLURFTkFCTEVfRU5DT0RJTkdTPU9GRiIKK1BBQ0tBR0VDT05GSUdbUmVkaXNdID0gIi1ERU5BQkxFX1JFRElTPU9OLC1ERU5BQkxFX1JFRElTPU9GRiIKKworIyBBZGRpdGlvbmFsIGNvbXBvbmVudHMgbm90IGJ1aWxkIGJ5IGRlZmF1bHQsCisjIHRoZXkgbWlnaHQgaGF2ZSBkZXBlbmRlbmNpZXMgbm90IGluY2x1ZGVkIGluIG9lLWNvcmUKKyMgb3IgdGhleSBkb24ndCB3b3JrIG9uIGFsbCBhcmNoaXRlY3R1cmVzCitQQUNLQUdFQ09ORklHW21vZF9wb2NvXSA9ICItREVOQUJMRV9BUEFDSEVDT05ORUNUT1I9T04sLURFTkFCTEVfQVBBQ0hFQ09OTkVDVE9SPU9GRixhcHIgYXBhY2hlMiIKK1BBQ0tBR0VDT05GSUdbQ3BwUGFyc2VyXSA9ICItREVOQUJMRV9DUFBQQVJTRVI9T04sLURFTkFCTEVfQ1BQUEFSU0VSPU9GRiIKK1BBQ0tBR0VDT05GSUdbRGF0YU15U1FMXSA9ICItREVOQUJMRV9EQVRBX01ZU1FMPU9OIC1ETVlTUUxfTElCOlNUUklORz1teXNxbGNsaWVudF9yLC1ERU5BQkxFX0RBVEFfTVlTUUw9T0ZGLG1hcmlhZGIiCitQQUNLQUdFQ09ORklHW0RhdGFPREJDXSA9ICItREVOQUJMRV9EQVRBX09EQkM9T04sLURFTkFCTEVfREFUQV9PREJDPU9GRixsaWJpb2RiYyIKK1BBQ0tBR0VDT05GSUdbUGFnZUNvbXBpbGVyXSA9ICItREVOQUJMRV9QQUdFQ09NUElMRVI9T04sLURFTkFCTEVfUEFHRUNPTVBJTEVSPU9GRiIKK1BBQ0tBR0VDT05GSUdbUGFnZUNvbXBpbGVyRmlsZTJQYWdlXSA9ICItREVOQUJMRV9QQUdFQ09NUElMRVJfRklMRTJQQUdFPU9OLC1ERU5BQkxFX1BBR0VDT01QSUxFUl9GSUxFMlBBR0U9T0ZGIgorUEFDS0FHRUNPTkZJR1tTZXZlblppcF0gPSAiLURFTkFCTEVfU0VWRU5aSVA9T04sLURFTkFCTEVfU0VWRU5aSVA9T0ZGIgorCitFWFRSQV9PRUNNQUtFID0gIi1EQ01BS0VfQlVJTERfVFlQRT1SZWxXaXRoRGViSW5mbyAtRFBPQ09fVU5CVU5ETEVEPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1EWkxJQl9MSUJSQVJZX1JFTEVBU0U6U1RSSU5HPXogLURQQ1JFX0xJQlJBUlk6U1RSSU5HPXBjcmUgXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJy1ERU5BQkxFX1RFU1RTPU9OICcsICcnLCBkKX0iCisKKyMgRm9yIHRoZSBuYXRpdmUgYnVpbGQgd2Ugd2FudCB0byB1c2UgdGhlIGJ1bmRsZWQgdmVyc2lvbgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFBPQ09fVU5CVU5ETEVEPU9GRiIKKworIyBkbyBub3QgdXNlIHJwYXRoCitFWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgLURDTUFLRV9TS0lQX1JQQVRIPU9OIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgcG9jb19saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCisgICAgcGFja2FnZXMgPSBbXQorICAgIHRlc3RydW5uZXJzID0gW10KKworICAgIGRlZiBob29rKGYsIHBrZywgZmlsZV9yZWdleCwgb3V0cHV0X3BhdHRlcm4sIG1vZHVsZW5hbWUpOgorICAgICAgICBwYWNrYWdlcy5hcHBlbmQocGtnKQorICAgICAgICB0ZXN0cnVubmVycy5hcHBlbmQobW9kdWxlbmFtZSkKKworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBvY29fbGliZGlyLCAnXmxpYlBvY28oLiopXC5zb1wuLiokJywKKyAgICAgICAgICAgICAgICAgICAgJ3BvY28tJXMnLCAnUG9jbyAlcyBjb21wb25lbnQnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUsIGhvb2s9aG9vaykKKworICAgIGQuc2V0VmFyKCJSUkVDT01NRU5EU18lcyIgJSBwbiwgIiAiLmpvaW4ocGFja2FnZXMpKQorICAgIGQuc2V0VmFyKCJQT0NPX1RFU1RSVU5ORVJTIiwgIlxuIi5qb2luKHRlc3RydW5uZXJzKSkKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgICAgY3AgLXJmICR7Qn0vYmluLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgIGNwIC1mICR7Qn0vbGliL2xpYkNwcFVuaXQuc28qICR7RH0ke2xpYmRpcn0KKyAgICAgICBjcCAtcmYgJHtCfS8qL3Rlc3RzdWl0ZS9kYXRhICR7RH0ke1BURVNUX1BBVEh9L2Jpbi8KKyAgICAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLWV4ZWN1dGFibGUgLWV4ZWMgY2hycGF0aCAtZCB7fSBcOworICAgICAgIGVjaG8gIiR7UE9DT19URVNUUlVOTkVSU30iID4gIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RydW5uZXJzIgorfQorCitQQUNLQUdFU19EWU5BTUlDID0gInBvY28tLioiCisKKyMgInBvY28iIGlzIGEgbWV0YXBhY2thZ2Ugd2hpY2ggcHVsbHMgaW4gYWxsIFBvY28gY29tcG9uZW50cworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworIyBjcHB1bml0IGlzIG9ubHkgYnVpbHQgaWYgdGVzdHMgYXJlIGVuYWJsZWQKK1BBQ0tBR0VTID0rICIke1BOfS1jcHB1bml0IgorRklMRVNfJHtQTn0tY3BwdW5pdCArPSAiJHtsaWJkaXJ9L2xpYkNwcFVuaXQuc28qIgorQUxMT1dfRU1QVFlfJHtQTn0tY3BwdW5pdCA9ICIxIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tY3BwdW5pdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXItZGF0YV8wLjQuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDNiNmRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlci1kYXRhXzAuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmNvZGluZyBmaWxlcyBmb3IgUG9wcGxlciIKLURFU0NSSVBUSU9OID0gIkVuY29kaW5nIGZpbGVzIGZvciB1c2Ugd2l0aCBwb3BwbGVyIHRoYXQgZW5hYmxlIHBvcHBsZXIgdG8gXAotICAgICAgICAgICAgICAgY29ycmVjdGx5IHJlbmRlciBDSksgYW5kIEN5cnJpbGljLiIKLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ODcwYjk4MzQzZjBiYmIyNWZhNDNiOWQyYmE1OTQ0OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmFkb2JlO21kNT02M2M2YThhOWRmMjA0YzAwNDYxZmE1ZjE2M2Q4YTY2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmdwbDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi0KLUNNQVBfUkVTT1VSQ0VTX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlLXR5cGUtdG9vbHMvY21hcC1yZXNvdXJjZXMvcmF3LzA1NjFlYmNhMDM1ODEzZWQwNGMzNDg1YmNhNjM2YTBhYTdhYmRjMWQvY21hcHJlc291cmNlc19pZGVudGl0eS0wL0NNYXAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktSDtuYW1lPWlkaCBcCi0gICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktVjtuYW1lPWlkdiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAwZjg5ODljODA0ZGU4NGFmMGJhMmVhNjI5OTQ5OTgwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwOTZhMTgxNjFmMjYzY2NjZGM2ZDhhMmViNTU0OGM0MWZmOGZjZjlhMzYwOTI0M2YxYjYyOTZhYmRmNzI4NzIiCi1TUkNfVVJJW2lkaC5tZDVzdW1dID0gIjAwOWM5M2NmMDE0MWFiN2JkNmFjYjdlZWExNDMwNmNjIgotU1JDX1VSSVtpZGguc2hhMjU2c3VtXSA9ICJhZTcwMmMyMDNhODJlYTEyNGU5Yjk2NTkwZjgyMWRiNmZiZjg3NTRlMmM0NTQ3YTlkYmEwZTgyZjk0NzM5ZTk1IgotU1JDX1VSSVtpZHYubWQ1c3VtXSA9ICIyZjMyYTQ1ZDQzZDAwMWMyNmVlYWM2Yjg3ODg1NWZiZiIKLVNSQ19VUklbaWR2LnNoYTI1NnN1bV0gPSAiODlhODVkYWY3MDMxZTkzYzg4M2U3NmI5MTY4YTIyNmRmZDU4NWJmNTUwNmU5ZTE5NTY3NzIxNjNmMTVjYjA4MiIKLQotZG9fY29tcGlsZSgpIHsKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHByZWZpeD0ke3ByZWZpeH0gZGF0YWRpcj0ke2RhdGFkaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9wb3BwbGVyL2NNYXAKLSAgICBpbnN0YWxsIC1tNjQ0ICR7V09SS0RJUn0vSWRlbnRpdHktKiAke0R9JHtkYXRhZGlyfS9wb3BwbGVyL2NNYXAvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXItZGF0YV8wLjQuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmFmMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyLWRhdGFfMC40LjkuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJFbmNvZGluZyBmaWxlcyBmb3IgUG9wcGxlciIKK0RFU0NSSVBUSU9OID0gIkVuY29kaW5nIGZpbGVzIGZvciB1c2Ugd2l0aCBwb3BwbGVyIHRoYXQgZW5hYmxlIHBvcHBsZXIgdG8gXAorICAgICAgICAgICAgICAgY29ycmVjdGx5IHJlbmRlciBDSksgYW5kIEN5cnJpbGljLiIKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ODcwYjk4MzQzZjBiYmIyNWZhNDNiOWQyYmE1OTQ0OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmFkb2JlO21kNT02M2M2YThhOWRmMjA0YzAwNDYxZmE1ZjE2M2Q4YTY2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLmdwbDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyIKKworaW5oZXJpdCBhbGxhcmNoCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKK0NNQVBfUkVTT1VSQ0VTX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fkb2JlLXR5cGUtdG9vbHMvY21hcC1yZXNvdXJjZXMvcmF3LzA1NjFlYmNhMDM1ODEzZWQwNGMzNDg1YmNhNjM2YTBhYTdhYmRjMWQvY21hcHJlc291cmNlc19pZGVudGl0eS0wL0NNYXAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3BvcHBsZXIuZnJlZWRlc2t0b3Aub3JnLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktSDtuYW1lPWlkaCBcCisgICAgICAgICAgICR7Q01BUF9SRVNPVVJDRVNfQkFTRX0vSWRlbnRpdHktVjtuYW1lPWlkdiIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1Y2M3YmViYTAwYWExNzQ2MzE0NjZmMDY3MzJiZTQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmOWM3ZTdkZTllY2QwZGI2YWIyODczNDllMzFiZjgxNWNhMTA4YTVhMTc1Y2Y5MDZhOTAxNjNiZGJlMzIwMTIiCitTUkNfVVJJW2lkaC5tZDVzdW1dID0gIjAwOWM5M2NmMDE0MWFiN2JkNmFjYjdlZWExNDMwNmNjIgorU1JDX1VSSVtpZGguc2hhMjU2c3VtXSA9ICJhZTcwMmMyMDNhODJlYTEyNGU5Yjk2NTkwZjgyMWRiNmZiZjg3NTRlMmM0NTQ3YTlkYmEwZTgyZjk0NzM5ZTk1IgorU1JDX1VSSVtpZHYubWQ1c3VtXSA9ICIyZjMyYTQ1ZDQzZDAwMWMyNmVlYWM2Yjg3ODg1NWZiZiIKK1NSQ19VUklbaWR2LnNoYTI1NnN1bV0gPSAiODlhODVkYWY3MDMxZTkzYzg4M2U3NmI5MTY4YTIyNmRmZDU4NWJmNTUwNmU5ZTE5NTY3NzIxNjNmMTVjYjA4MiIKKworZG9fY29tcGlsZSgpIHsKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IHByZWZpeD0ke3ByZWZpeH0gZGF0YWRpcj0ke2RhdGFkaXJ9CisgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9wb3BwbGVyL2NNYXAKKyAgICBpbnN0YWxsIC1tNjQ0ICR7V09SS0RJUn0vSWRlbnRpdHktKiAke0R9JHtkYXRhZGlyfS9wb3BwbGVyL2NNYXAvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyL2Jhc2VuYW1lLWluY2x1ZGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXIvYmFzZW5hbWUtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mjg1MjhhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyL2Jhc2VuYW1lLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorTWluaWMgR05VIGJhc2VuYW1lKCkgQVBJIGZvciBub24tZ2xpYmMgbGlicmFyeSBlLmcuIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogcG9wcGxlci0wLjY0LjAvdXRpbHMvcGRmc2lnLmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcG9wcGxlci0wLjY0LjAub3JpZy91dGlscy9wZGZzaWcuY2MKKysrKyBwb3BwbGVyLTAuNjQuMC91dGlscy9wZGZzaWcuY2MKK0BAIC0zNSw2ICszNSwxMCBAQAorICNpbmNsdWRlICJXaW4zMkNvbnNvbGUuaCIKKyAjaW5jbHVkZSAibnVtYmVyb2ZjaGFyYWN0ZXJzLmgiCisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIGJhc2VuYW1lKHNyYykgKHN0cnJjaHIoc3JjLCcvJykgPyBzdHJyY2hyKHNyYywnLycpKzEgOiBzcmMpCisrI2VuZGlmCisrCisgc3RhdGljIGNvbnN0IGNoYXIgKiBnZXRSZWFkYWJsZVNpZ1N0YXRlKFNpZ25hdHVyZVZhbGlkYXRpb25TdGF0dXMgc2lnX3ZzKQorIHsKKyAgIHN3aXRjaChzaWdfdnMpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjY0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC42NC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTg3YWU2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjY0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1TVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LW92ZXJ3cml0ZS1hbGwtb3VyLWJ1aWxkLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQ2Fpcm9PdXRwdXREZXYuY2MtZml4LWJ1aWxkLWVycm9yLXdoZW4tdXNpbmctZml4ZWRwby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsaWItQ01ha2VMaXN0cy50eHQtQWRkLWxpYnBvcHBsZXItdG8tbGluay1hbG9uZy13aXQucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjdmNjg3ZWJiNjAwMDRmOGFkNjE5OTQ1NzUwMTgwNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjIxZGY5MmNhOTlmNzgwNjc3ODVjZjJkYzhlMDZkZWIwNDcyNmI2MjM4OWMwZWUxZjVkOGIxMDNjNzdmNjRiMSIKLQotREVQRU5EUyA9ICJmb250Y29uZmlnIHpsaWIgY2Fpcm8gbGNtcyBnbGliLTIuMCIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJqcGVnIG9wZW5qcGVnIHBuZyB0aWZmIG5zcyAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ3F0NS1sYXllcicsICdxdDUnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRFdJVEhfSlBFRz1PTiAtREVOQUJMRV9EQ1RERUNPREVSPWxpYmpwZWcsLURXSVRIX0pQRUc9T0ZGIC1ERU5BQkxFX0RDVERFQ09ERVI9bm9uZSxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi1EV0lUSF9QTkc9T04sLURXSVRIX1BORz1PRkYsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRFdJVEhfVElGRj1PTiwtRFdJVEhfVElGRj1PRkYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLURFTkFCTEVfTElCQ1VSTD1PTiwtREVOQUJMRV9MSUJDVVJMPU9GRixjdXJsIgotUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gPSAiLURFTkFCTEVfTElCT1BFTkpQRUc9b3BlbmpwZWcyLC1ERU5BQkxFX0xJQk9QRU5KUEVHPW5vbmUsb3BlbmpwZWciCi1QQUNLQUdFQ09ORklHW3F0NV0gPSAiLURFTkFCTEVfUVQ1PU9OLC1ERU5BQkxFX1FUNT1PRkYscXRiYXNlIHF0dG9vbHMtbmF0aXZlIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EV0lUSF9OU1MzPU9OLC1EV0lUSF9OU1MzPU9GRixuc3MiCi0KLSMgc3VycHJpc2UgLSBkaWQgbm90IGV4cGVjdCB0aGlzIHRvIHdvcmsgOikKLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi0KLUVYVFJBX09FQ01BS0UgKz0gIiBcCi0gICAgLURFTkFCTEVfQ01TPWxjbXMyIFwKLSAgICAtREVOQUJMRV9YUERGX0hFQURFUlM9T04gXAotICAgIC1EQlVJTERfR1RLX1RFU1RTPU9GRiBcCi0gICAgLURFTkFCTEVfWkxJQj1PTiBcCi0gICAgLURDTUFLRV9DWFhfSU1QTElDSVRfSU5DTFVERV9ESVJFQ1RPUklFUzpQQVRIPScke1NUQUdJTkdfSU5DRElSfScgXAotIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgICMgcG9wcGxlciBtYWNybyB1c2VzIHBrZy1jb25maWcgdG8gY2hlY2sgZm9yIGctaXIgcnVudGltZXMuIFNvbWV0aGluZwotICAgICMgbWFrZXMgdGhlbSBwb2ludCB0byAvdXNyL2Jpbi4gQWxpZ24gdGhlbSB0byBzeXNyb290IC0gdGhhdCdzIHdoZXJlIHRoZQotICAgICMgZ2l0LXdyYXBwZXJzIGFyZToKLSAgICBzZWQgLWkgJ3M6ICR7YmluZGlyfS9nLWlyOiAke1NUQUdJTkdfQklORElSfS9nLWlyOicgJHtCfS9idWlsZC5uaW5qYQotfQotCi0jIGNoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cwotZGVmIGdldF9wb3BwbGVyX2ZwdV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06Ci0gICAgICAgIHJldHVybiAiLURVU0VfRklYRURQT0lOVD1PTiIKLSAgICByZXR1cm4gIiIKLQotRVhUUkFfT0VDTUFLRSArPSAiJHtAZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpfSIKLQotUEFDS0FHRVMgPSsgImxpYnBvcHBsZXIgbGlicG9wcGxlci1nbGliIgotRklMRVNfbGlicG9wcGxlciA9ICIke2xpYmRpcn0vbGlicG9wcGxlci5zby4qIgotRklMRVNfbGlicG9wcGxlci1nbGliID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLWdsaWIuc28uKiIKLQotUkRFUEVORFNfbGlicG9wcGxlciA9ICJwb3BwbGVyLWRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC43MC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNzAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjE4ZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuNzAuMS5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICJodHRwOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LW92ZXJ3cml0ZS1hbGwtb3VyLWJ1aWxkLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQ2Fpcm9PdXRwdXREZXYuY2MtZml4LWJ1aWxkLWVycm9yLXdoZW4tdXNpbmctZml4ZWRwby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsaWItQ01ha2VMaXN0cy50eHQtQWRkLWxpYnBvcHBsZXItdG8tbGluay1hbG9uZy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmFzZW5hbWUtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZGIwNjk5ZTlhYTIwZTgxYWNkMWE1MDcwMTM3NGM4YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2Njk3MjA0N2Q5ZWY4MTYyY2M4YzM4OWQ3ZTc2OTgyOTFkZmM5ZjJiM2U0ZWE5YTlmMDhhZTYwNDEwNzQ1MWJkIgorCitERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIGdsaWItMi4wIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2pwZWddID0gIi1EV0lUSF9KUEVHPU9OIC1ERU5BQkxFX0RDVERFQ09ERVI9bGlianBlZywtRFdJVEhfSlBFRz1PRkYgLURFTkFCTEVfRENUREVDT0RFUj1ub25lLGpwZWciCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLURXSVRIX1BORz1PTiwtRFdJVEhfUE5HPU9GRixsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItREVOQUJMRV9MSUJDVVJMPU9OLC1ERU5BQkxFX0xJQkNVUkw9T0ZGLGN1cmwiCitQQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItREVOQUJMRV9MSUJPUEVOSlBFRz1vcGVuanBlZzIsLURFTkFCTEVfTElCT1BFTkpQRUc9bm9uZSxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04sLURFTkFCTEVfUVQ1PU9GRixxdGJhc2UgcXR0b29scy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLURXSVRIX05TUzM9T04sLURXSVRIX05TUzM9T0ZGLG5zcyIKKworIyBzdXJwcmlzZSAtIGRpZCBub3QgZXhwZWN0IHRoaXMgdG8gd29yayA6KQoraW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDUnLCAnY21ha2VfcXQ1JywgJycsIGQpfQorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtREVOQUJMRV9DTVM9bGNtczIgXAorICAgIC1ERU5BQkxFX1hQREZfSEVBREVSUz1PTiBcCisgICAgLURCVUlMRF9HVEtfVEVTVFM9T0ZGIFwKKyAgICAtREVOQUJMRV9aTElCPU9OIFwKKyAgICAtRENNQUtFX0NYWF9JTVBMSUNJVF9JTkNMVURFX0RJUkVDVE9SSUVTOlBBVEg9JyR7U1RBR0lOR19JTkNESVJ9JyBcCisiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgIyBwb3BwbGVyIG1hY3JvIHVzZXMgcGtnLWNvbmZpZyB0byBjaGVjayBmb3IgZy1pciBydW50aW1lcy4gU29tZXRoaW5nCisgICAgIyBtYWtlcyB0aGVtIHBvaW50IHRvIC91c3IvYmluLiBBbGlnbiB0aGVtIHRvIHN5c3Jvb3QgLSB0aGF0J3Mgd2hlcmUgdGhlCisgICAgIyBnaXQtd3JhcHBlcnMgYXJlOgorICAgIHNlZCAtaSAnczogJHtiaW5kaXJ9L2ctaXI6ICR7U1RBR0lOR19CSU5ESVJ9L2ctaXI6JyAke0J9L2J1aWxkLm5pbmphCit9CisKKyMgY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzCitkZWYgZ2V0X3BvcHBsZXJfZnB1X3NldHRpbmcoYmIsIGQpOgorICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKKyAgICAgICAgcmV0dXJuICItRFVTRV9GSVhFRFBPSU5UPU9OIgorICAgIHJldHVybiAiIgorCitFWFRSQV9PRUNNQUtFICs9ICIke0BnZXRfcG9wcGxlcl9mcHVfc2V0dGluZyhiYiwgZCl9IgorCitQQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCitGSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCitGSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgorCitSREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bwcy10b29scy9wcHMtdG9vbHNfMS4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcHMtdG9vbHMvcHBzLXRvb2xzXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YmFhNWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcHMtdG9vbHMvcHBzLXRvb2xzXzEuMC4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiVXNlci1zcGFjZSB0b29scyBmb3IgTGludXhQUFMiCitIT01FUEFHRSA9ICJodHRwOi8vbGludXhwcHMub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICJjYjQ4YjdlY2Y3MDc5Y2ViYTcwODFjNzhkNGU2MWU1MDdiMGU4ZDJkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Fnby9wcHMtdG9vbHMuZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7aW5jbHVkZWRpcn0gXAorICAgICAgICAgICAgICAgICAgICR7RH0ke2luY2x1ZGVkaXJ9L3N5cworICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bwcy10b29scy9wcHMtdG9vbHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHBzLXRvb2xzL3Bwcy10b29sc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiZjkwMzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHBzLXRvb2xzL3Bwcy10b29sc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlVzZXItc3BhY2UgdG9vbHMgZm9yIExpbnV4UFBTIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpbnV4cHBzLm9yZyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1QViA9ICIwLjAuMCtnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICIwZGViOWM3ZTEzNWU5MzgwYTZkMDllOWQyZTkzOGExNDZiYjY5OGM4IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Fnby9wcHMtdG9vbHMuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7aW5jbHVkZWRpcn0gXAotICAgICAgICAgICAgICAgICAgICR7RH0ke2luY2x1ZGVkaXJ9L3N5cwotICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Byb2NtYWlsL3Byb2NtYWlsXzMuMjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wcm9jbWFpbC9wcm9jbWFpbF8zLjIyLmJiCmluZGV4IGFhNDc0Y2UuLjYxNjA3MzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Byb2NtYWlsL3Byb2NtYWlsXzMuMjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHJvY21haWwvcHJvY21haWxfMy4yMi5iYgpAQCAtMjksNyArMjksNyBAQAogICAgIGV4cG9ydCBDRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIKICAgICBleHBvcnQgQVI9IiR7QlVJTERfQVJ9IgogICAgIGV4cG9ydCBBUz0iJHtCVUlMRF9BU30iCi0gICAgbWFrZSBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiIExERkxBR1MwPSIke0xERkxBR1N9IiBhdXRvY29uZi5oCisgICAgbWFrZSBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiIExERkxBR1MwPSIke0JVSUxEX0xERkxBR1N9IiBhdXRvY29uZi5oCiB9CiAKIGRvX2NvbXBpbGUoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAxLWRvLW5vdC1zdXBwb3J0LXB5dGhvbjIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAxLWRvLW5vdC1zdXBwb3J0LXB5dGhvbjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTVhM2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvZmlsZXMvMDAwMS1kby1ub3Qtc3VwcG9ydC1weXRob24yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotRnJvbSAyMDZmMzM0ZDYyZGExNzA5M2U3ODQwOTRjOWQ5ZTgwYzg1M2Y3MDRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAwMzowMzo0NiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBkbyBub3Qgc3VwcG9ydCBweXRob24yCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KLSBweXRob24vTWFrZWZpbGUuYW0gfCAyNCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMDBhN2NjLi44NDMxYzUxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0yMiwyMiArMjIsNiBAQCBBTV9NSVNTSU5HX1BST0coW0FVVE9NNFRFXSwgW2F1dG9tNHRlXSkKLSAjIE5lZWRlZCBieSB0ZXN0cy9hdGxvY2FsLmluLgotIEFDX1NVQlNUKFtPMENGTEFHU10sIFtgZWNobyAkQ0ZMQUdTIHwgc2VkICdzLy1PW1swLTldXSAqLy8nYF0pCi0gCi0tQU1fUEFUSF9QWVRIT04KLS1BTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCB0ZXN0IC1uICIkUFlUSE9OIikKLS1baWYgdGVzdCAteiAiJFBZVEhPTiI7IHRoZW5dCi0tICAgIFtlY2hvICJUaGUgcHl0aG9uIGludGVycHJldGVyIHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBwYXRoLiBUaGUgUHl0aG9uIGxhbmd1YWdlIGJpbmRpbmdzIl0KLS0gICAgW2VjaG8gIndpbGwgbm90IGJlIGJ1aWx0LiAgSWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIFB5dGhvbiBsYW5ndWFnZSBiaW5kaW5ncywgcGxlYXNlIGVuc3VyZSJdCi0tICAgIFtlY2hvICJ0aGF0IHB5dGhvbiBpcyBpbnN0YWxsZWQgYW5kIGl0cyBkaXJlY3RvcnkgaXMgaW5jbHVkZWQgaW4gdGhlIHNlYXJjaCBwYXRoLiJdCi0tICAgIFtlY2hvICJUaGVuIHJ1biBjb25maWd1cmUgYWdhaW4gYmVmb3JlIGF0dGVtcHRpbmcgdG8gYnVpbGQgU2F0eXIuIl0KLS1bZmldCi0tCi0tIyBKdXN0IFBLR19DSEVDS19NT0RVTEVTKFtQWVRIT05dLCBbcHl0aG9uXSkgd29ya3Mgb25seSB3aXRoIHB5dGhvbjIuNysKLS0jIEJlbG93LCBpZiBweXRob24gaXMgbm90IGZvdW5kLCB3ZSBzZXQgdXAgZm9yIHB5dGhvbjIuNiB3L28gY2hlY2tpbmc6Ci0tUEtHX0NIRUNLX01PRFVMRVMoW1BZVEhPTl0sIFtweXRob24yXSwsWwotLSAgICBQWVRIT05fTElCUz0nLUwvdXNyL2xpYjY0IC1scHl0aG9uMi42JwotLSAgICBQWVRIT05fQ0ZMQUdTPSctSS91c3IvaW5jbHVkZS9weXRob24yLjYnCi0tXSkKLS0KLSBBQ19BUkdfRU5BQkxFKFtweXRob24tbWFucGFnZV0sCi0gICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1weXRob24tbWFucGFnZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgcHl0aG9uIGJpbmRpbmdzIG1hbnBhZ2UgYnVpbGRdKV0sCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCAzNmZjMmU5Li4wYjczZjY2IDEwMDY0NAotLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgYi9weXRob24vTWFrZWZpbGUuYW0KLUBAIC0xLDEyICsxLDUgQEAKLSBTVUJESVJTID0gLiBkb2MKLSAKLS1weTJzYXR5cmRpciA9ICQocHlleGVjZGlyKS9zYXR5cgotLQotLXB5MnNhdHlyX1BZVEhPTiA9IFwKLS0gICAgX19pbml0X18ucHkKLS0KLS1weTJzYXR5cl9MVExJQlJBUklFUyA9IF9zYXR5ci5sYQotLQotIFBZRVhURklMRVMgPSBcCi0gICAgIHB5X2NsdXN0ZXIuaCBcCi0gICAgIHB5X2NsdXN0ZXIuYyBcCi1AQCAtNzUsMjMgKzY4LDYgQEAgUFlFWFRMREZMQUdTID0gXAotICAgICAtbW9kdWxlIFwKLSAgICAgLWF2b2lkLXZlcnNpb24KLSAKLS1fc2F0eXJfbGFfU09VUkNFUyA9ICQoUFlFWFRGSUxFUykKLS1fc2F0eXJfbGFfQ1BQRkxBR1MgPSBcCi0tICAgICQoUFlFWFRDUFBGTEFHUykgXAotLSAgICAkKFBZVEhPTl9DRkxBR1MpCi0tX3NhdHlyX2xhX0xERkxBR1MgPSBcCi0tICAgICQoUFlFWFRMREZMQUdTKSBcCi0tICAgIC1leHBvcnQtc3ltYm9scy1yZWdleCBpbml0X3NhdHlyCi0tCi0tIyBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyZSBvcHRpb24sIHdlIGVpdGhlciBsaW5rIGxpYnNhdHlyLnNvIGR5bmFtaWNhbGx5IChhcwotLSMgaXMgdXN1YWwpLCBvciBkaXJlY3RseSBpbmNsdWRlIGl0cyBvYmplY3QgZmlsZXMgKGJ5IGluY2x1ZGluZyB0aGUKLS0jIGNvbnZlbmllbmNlIGxpYnJhcnkpLgotLWlmIEVOQUJMRV9TVEFUSUNfUFlUSE9OX01PRFVMRQotLV9zYXR5cl9sYV9MSUJBREQgPSAuLi9saWIvbGlic2F0eXJfY29udi5sYQotLWVsc2UKLS1fc2F0eXJfbGFfTElCQUREID0gLi4vbGliL2xpYnNhdHlyLmxhCi0tZW5kaWYKLS0KLSBpZiBXSVRIX1BZVEhPTjMKLSBweTNzYXR5cmRpciA9ICQocHkzZXhlY2Rpcikvc2F0eXIKLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvZmlsZXMvMDAwMi1maXgtY29tcGlsZS1mYWlsdXJlLWFnYWluc3QtbXVzbC1DLWxpYnJhcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAppbmRleCA1ODI3ZWI0Li5iNmMzMmM0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9maWxlcy8wMDAyLWZpeC1jb21waWxlLWZhaWx1cmUtYWdhaW5zdC1tdXNsLUMtbGlicmFyeS5wYXRjaApAQCAtMTQsNyArMTQsNyBAQAogaW5kZXggOTIwZTE0NS4uNTgxNDBiZiAxMDA2NDQKIC0tLSBhL2xpYi9ycG0uYwogKysrIGIvbGliL3JwbS5jCi1AQCAtMTg4LDcgKzE4OCw3IEBAIHNyX3JwbV9wYWNrYWdlX3NvcnQoc3RydWN0IHNyX3JwbV9wYWNrYWdlICpwYWNrYWdlcykKK0BAIC0xOTEsNyArMTkxLDcgQEAgc3JfcnBtX3BhY2thZ2Vfc29ydChzdHJ1Y3Qgc3JfcnBtX3BhY2thZ2UgKnBhY2thZ2VzKQogICAgICB9CiAgCiAgICAgIC8qIFNvcnQgdGhlIGFycmF5LiAqLwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvc2F0eXJfMC4yMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhdHlyL3NhdHlyXzAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3OTVjMzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvc2F0eXJfMC4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlNhdHlyIGlzIGEgY29sbGVjdGlvbiBvZiBsb3ctbGV2ZWwgYWxnb3JpdGhtcyBmb3IgcHJvZ3JhbSBcCi1mYWlsdXJlIHByb2Nlc3NpbmcsIGFuYWx5c2lzLCBhbmQgcmVwb3J0aW5nIHN1cHBvcnRpbmcga2VybmVsIHNwYWNlLCB1c2VyIFwKLXNwYWNlLCBQeXRob24sIGFuZCBKYXZhIHByb2dyYW1zIgotCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWJydC9zYXR5ciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWJydC9zYXR5ci5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3Qtc3VwcG9ydC1weXRob24yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI0NzQyZmQ0ODU3YzQ0NmI5NmY3MTJkNTJlMmU0Y2QwYjZjZmU3Mzk4IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgKz0gIiBcCi0gICAgZ2RiIFwKLSIKLQotUEFDS0FHRVMgKz0gInB5dGhvbjMtJHtQTn0iCi1GSUxFU19weXRob24zLSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyR7QlBOfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgcnBtIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbm1hbnBhZ2VdID0gIi0tZW5hYmxlLXB5dGhvbi1tYW5wYWdlLCAtLWRpc2FibGUtcHl0aG9uLW1hbnBhZ2UiCi1QQUNLQUdFQ09ORklHW3JwbV0gPSAiLS13aXRoLXJwbSwgLS13aXRob3V0LXJwbSwgcnBtIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAke1N9L2dlbi12ZXJzaW9uCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXR5ci9zYXR5cl8wLjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvc2F0eXJfMC4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDliZWEyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2F0eXIvc2F0eXJfMC4yNi5iYgpAQCAtMCwwICsxLDMyIEBACitERVNDUklQVElPTiA9ICJTYXR5ciBpcyBhIGNvbGxlY3Rpb24gb2YgbG93LWxldmVsIGFsZ29yaXRobXMgZm9yIHByb2dyYW0gXAorZmFpbHVyZSBwcm9jZXNzaW5nLCBhbmFseXNpcywgYW5kIHJlcG9ydGluZyBzdXBwb3J0aW5nIGtlcm5lbCBzcGFjZSwgdXNlciBcCitzcGFjZSwgUHl0aG9uLCBhbmQgSmF2YSBwcm9ncmFtcyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FicnQvc2F0eXIiCitMSUNFTlNFID0gIkdQTHYyIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FicnQvc2F0eXIuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWNvbXBpbGUtZmFpbHVyZS1hZ2FpbnN0LW11c2wtQy1saWJyYXJ5LnBhdGNoIFwKKyIKK1NSQ1JFViA9ICI0YmFhMGM3NjUwNzEwNTQzMTRkMWU3ZTc4NTQ3Y2U2YjdjMTMzZmJjIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgKz0gIiBcCisgICAgZ2RiIFwKKyIKKworUEFDS0FHRVMgKz0gInB5dGhvbjMtJHtQTn0iCitGSUxFU19weXRob24zLSR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyR7QlBOfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMgcnBtIgorUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICItLXdpdGgtcHl0aG9uMiwgLS13aXRob3V0LXB5dGhvbjIsLHB5dGhvbjIiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcnBtXSA9ICItLXdpdGgtcnBtLCAtLXdpdGhvdXQtcnBtLCBycG0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICR7U30vZ2VuLXZlcnNpb24KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMC5iYgppbmRleCAzMjk5YTc3Li4zNWUyMmQzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjEwLmJiCkBAIC0xMiw2ICsxMiw4IEBACiAgICAgICAgICAgICIKIE1JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKIAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2RwYXJtLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCiBQQUNLQUdFUyA9KyAiJHtQTn0tc2NyaXB0cyIKIFJERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gImJhc2ggJHtQTn0iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHMvZ2xpYmMtMi4yOC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHMvZ2xpYmMtMi4yOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmFkNDEzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlscy9nbGliYy0yLjI4LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0ZpeGVzOgoraHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTg5Ni8KKworVE9QRElSL3RtcC1nbGliYy93b3JrL2NvcmUyLTY0LW9lLWxpbnV4L3NnMy11dGlscy8xLjQyLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL3g4Nl82NC1vZS1saW51eC8uLi8uLi9saWJleGVjL3g4Nl82NC1vZS1saW51eC9nY2MveDg2XzY0LW9lLWxpbnV4LzguMi4wL2xkOiBzZ19tYXAyNi5vOiBpbiBmdW5jdGlvbiBgbmRfbWF0Y2hfc2NhbmRpcl9zZWxlY3QnOgorL3Vzci9zcmMvZGVidWcvc2czLXV0aWxzLzEuNDItcjAvc2czX3V0aWxzLTEuNDIvc3JjL3NnX21hcDI2LmM6MzU5OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWpvcicKK1RPUERJUi90bXAtZ2xpYmMvd29yay9jb3JlMi02NC1vZS1saW51eC9zZzMtdXRpbHMvMS40Mi1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi94ODZfNjQtb2UtbGludXgvLi4vLi4vbGliZXhlYy94ODZfNjQtb2UtbGludXgvZ2NjL3g4Nl82NC1vZS1saW51eC84LjIuMC9sZDogL3Vzci9zcmMvZGVidWcvc2czLXV0aWxzLzEuNDItcjAvc2czX3V0aWxzLTEuNDIvc3JjL3NnX21hcDI2LmM6MzYxOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtaW5vcicKK1RPUERJUi90bXAtZ2xpYmMvd29yay9jb3JlMi02NC1vZS1saW51eC9zZzMtdXRpbHMvMS40Mi1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi94ODZfNjQtb2UtbGludXgvLi4vLi4vbGliZXhlYy94ODZfNjQtb2UtbGludXgvZ2NjL3g4Nl82NC1vZS1saW51eC84LjIuMC9sZDogc2dfbWFwMjYubzogaW4gZnVuY3Rpb24gYG50X3R5cF9mcm9tX2ZpbGVuYW1lJzoKKy91c3Ivc3JjL2RlYnVnL3NnMy11dGlscy8xLjQyLXIwL3NnM191dGlscy0xLjQyL3NyYy9zZ19tYXAyNi5jOjIxODogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFqb3InCitUT1BESVIvdG1wLWdsaWJjL3dvcmsvY29yZTItNjQtb2UtbGludXgvc2czLXV0aWxzLzEuNDItcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4veDg2XzY0LW9lLWxpbnV4Ly4uLy4uL2xpYmV4ZWMveDg2XzY0LW9lLWxpbnV4L2djYy94ODZfNjQtb2UtbGludXgvOC4yLjAvbGQ6IC91c3Ivc3JjL2RlYnVnL3NnMy11dGlscy8xLjQyLXIwL3NnM191dGlscy0xLjQyL3NyYy9zZ19tYXAyNi5jOjIxOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWlub3InCitjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKK01ha2VmaWxlOjgwNjogcmVjaXBlIGZvciB0YXJnZXQgJ3NnX21hcDI2JyBmYWlsZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLSBzZzNfdXRpbHMtMS40Mi5vcmlnL3NyYy9zZ19tYXAyNi5jCTIwMTgtMDgtMDkgMTE6NTM6MjYuOTA3NDkzOTk2ICswMDAwCisrKysgc2czX3V0aWxzLTEuNDIvc3JjL3NnX21hcDI2LmMJMjAxOC0wOC0wOSAxMTo1MTo1Ni43MTM0OTA3NjMgKzAwMDAKK0BAIC0zMyw2ICszMyw3IEBACisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgorIAorICNpZmRlZiBIQVZFX0NPTkZJR19ICmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDIuYmIKaW5kZXggYzdkZTA1Ny4uYzM3YzVlOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NnMy11dGlscy9zZzMtdXRpbHNfMS40Mi5iYgpAQCAtOCw5ICs4LDEzIEBACiBMSUNFTlNFID0gIkdQTHYyKyAmIEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY5MGRhN2ZjNTIxNzI1OTlkYmYwODJkNzYyMGYxOGNhIgogCi1TUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnM191dGlscy0ke1BWfS50Z3oiCitTUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wL3NnM191dGlscy0ke1BWfS50Z3ogXAorICAgIGZpbGU6Ly9nbGliYy0yLjI4LnBhdGNoIFwKKyIKIE1JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKIAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2czX3V0aWxzLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCiBTUkNfVVJJW21kNXN1bV0gPSAiMjgwODBkZTViZjIyMjJmOGI1NWEyOTA5M2JlYzhhZWEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRjYjdhMDMwOWJkMGJhM2Q0YTgzYWNiNTI2OTczYjgwMTA2ZWUyNmNkOWY3Mzk4MTg2Y2QzZjA2MzNjOWVmMyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2hhcnV0aWxzL3NoYXJ1dGlscy9DVkUtMjAxOC0xMDAwMDk3LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2hhcnV0aWxzL3NoYXJ1dGlscy9DVkUtMjAxOC0xMDAwMDk3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZGM0ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zaGFydXRpbHMvc2hhcnV0aWxzL0NWRS0yMDE4LTEwMDAwOTcucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBiZDY4YWUxMjcxNTk4ZThmZGM3MmYyYWRiNDU3ZTY4ODI2MDQ1ODJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1BldHI9MjBQPUMzPUFEc2E9QzU9OTk/PSA8cHBpc2FyQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDIyIEZlYiAyMDE4IDE2OjM5OjQzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIGhlYXAtYnVmZmVyLW92ZXJmbG93IGluIGZpbmRfYXJjaGl2ZSgpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3J3X2J1ZmZlciBoYXMgYWxsb2NhdGVkIHJ3X2Jhc2Vfc2l6ZSBieXRlcy4gQnV0IHN1YnNlcXVlbmQgZmdldHMoKSBpbgorZmluZF9hcmNoaXZlKCkgcmVhZHMgdXAtdG8gQlVGU0laIGJ5dGVzLgorCitPbiBteSBzeXN0ZW0sIEJVRlNJWiBpcyA4MTkyLiByd19iYXNlX3NpemUgaXMgdXN1YWxseSBlcXVhbGVkIHRvCithIG1lbW9yeSBwYWdlIHNpemUsIDQwOTYgb24gbXkgc3lzdGVtLiBUaHVzIGZpbmRfYXJjaGl2ZSgpIGNhbiB3cml0ZQorYmV5b25kZWQgYWxsb2NhdGVkIG1lbW1vcnkgZm9yIHJ3X2J1ZmZlciBhcnJheToKKworJCB2YWxncmluZCAtLSAuL3Vuc2hhciAvdG1wL2lkXDowMDAwMDBcLHNpZ1w6MDZcLHNyY1w6MDAwMDA1KzAwMDAzMFwsb3BcOnNwbGljZVwscmVwXDo0Cis9PTMwNTgyPT0gTWVtY2hlY2ssIGEgbWVtb3J5IGVycm9yIGRldGVjdG9yCis9PTMwNTgyPT0gQ29weXJpZ2h0IChDKSAyMDAyLTIwMTcsIGFuZCBHTlUgR1BMJ2QsIGJ5IEp1bGlhbiBTZXdhcmQgZXQgYWwuCis9PTMwNTgyPT0gVXNpbmcgVmFsZ3JpbmQtMy4xMy4wIGFuZCBMaWJWRVg7IHJlcnVuIHdpdGggLWggZm9yIGNvcHlyaWdodCBpbmZvCis9PTMwNTgyPT0gQ29tbWFuZDogLi91bnNoYXIgL3RtcC9pZDowMDAwMDAsc2lnOjA2LHNyYzowMDAwMDUrMDAwMDMwLG9wOnNwbGljZSxyZXA6NAorPT0zMDU4Mj09Cis9PTMwNTgyPT0gSW52YWxpZCB3cml0ZSBvZiBzaXplIDEKKz09MzA1ODI9PSAgICBhdCAweDRFQUI0ODA6IF9JT19nZXRsaW5lX2luZm8gKGluIC91c3IvbGliNjQvbGliYy0yLjI3LnNvKQorPT0zMDU4Mj09ICAgIGJ5IDB4NEVCNDdDMjogZmdldHNfdW5sb2NrZWQgKGluIC91c3IvbGliNjQvbGliYy0yLjI3LnNvKQorPT0zMDU4Mj09ICAgIGJ5IDB4MTBCRjYwOiBmZ2V0c191bmxvY2tlZCAoc3RkaW8yLmg6MzIwKQorPT0zMDU4Mj09ICAgIGJ5IDB4MTBCRjYwOiBmaW5kX2FyY2hpdmUgKHVuc2hhci5jOjI0MykKKz09MzA1ODI9PSAgICBieSAweDEwQkY2MDogdW5zaGFyX2ZpbGUgKHVuc2hhci5jOjM3OSkKKz09MzA1ODI9PSAgICBieSAweDEwQkNDQzogdmFsaWRhdGVfZm5hbWUgKHVuc2hhci1vcHRzLmM6NjA0KQorPT0zMDU4Mj09ICAgIGJ5IDB4MTBCQ0NDOiBtYWluICh1bnNoYXItb3B0cy5jOjYzOSkKKz09MzA1ODI9PSAgQWRkcmVzcyAweDUyM2E3OTAgaXMgMCBieXRlcyBhZnRlciBhIGJsb2NrIG9mIHNpemUgNCwwOTYgYWxsb2MnZAorPT0zMDU4Mj09ICAgIGF0IDB4NEMyREJCQjogbWFsbG9jICh2Z19yZXBsYWNlX21hbGxvYy5jOjI5OSkKKz09MzA1ODI9PSAgICBieSAweDEwQzY3MDogaW5pdF91bnNoYXIgKHVuc2hhci5jOjQ1MCkKKz09MzA1ODI9PSAgICBieSAweDEwQkM1NTogbWFpbiAodW5zaGFyLW9wdHMuYzo2MzApCisKK1RoaXMgd2FzIHJlcG9ydGVkIGluCis8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nbnUtdXRpbHMvMjAxOC0wMi9tc2cwMDAwNC5odG1sPi4KKworQ1ZFOiBDVkUtMjAxOC0xMDAwMDk3CitVcHN0cmVhbS1TdGF0dXM6IG5vIHVwc3RyZWFtIFtodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWdudS11dGlscy8yMDE4LTAyL21zZzAwMDA0Lmh0bWxdCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFDDrXNhxZkgPHBwaXNhckByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KKy0tLQorIHNyYy91bnNoYXIuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy91bnNoYXIuYyBiL3NyYy91bnNoYXIuYworaW5kZXggODBiYzNhOS4uMGZjMzc3MyAxMDA2NDQKKy0tLSBhL3NyYy91bnNoYXIuYworKysrIGIvc3JjL3Vuc2hhci5jCitAQCAtMjQwLDcgKzI0MCw3IEBAIGZpbmRfYXJjaGl2ZSAoY2hhciBjb25zdCAqIG5hbWUsIEZJTEUgKiBmaWxlLCBvZmZfdCBzdGFydCkKKyAgICAgICBvZmZfdCBwb3NpdGlvbiA9IGZ0ZWxsbyAoZmlsZSk7CisgCisgICAgICAgLyogUmVhZCBuZXh0IGxpbmUsIGZhaWwgaWYgbm8gbW9yZSBhbmQgbm8gcHJldmlvdXMgcHJvY2Vzcy4gICovCistICAgICAgaWYgKCFmZ2V0cyAocndfYnVmZmVyLCBCVUZTSVosIGZpbGUpKQorKyAgICAgIGlmICghZmdldHMgKHJ3X2J1ZmZlciwgcndfYmFzZV9zaXplLCBmaWxlKSkKKyAJeworIAkgIGlmICghc3RhcnQpCisgCSAgICBlcnJvciAoMCwgMCwgXygiRm91bmQgbm8gc2hlbGwgY29tbWFuZHMgaW4gJXMiKSwgbmFtZSk7CistLSAKKzIuMTkuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zaGFydXRpbHMvc2hhcnV0aWxzXzQuMTUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NoYXJ1dGlscy9zaGFydXRpbHNfNC4xNS4yLmJiCmluZGV4IDgxMmZlZTkuLmMxMjI4OWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NoYXJ1dGlscy9zaGFydXRpbHNfNC4xNS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NoYXJ1dGlscy9zaGFydXRpbHNfNC4xNS4yLmJiCkBAIC04LDYgKzgsNyBAQAogCiBTUkNfVVJJID0gImZ0cDovL2Z0cC5nbnUub3JnL2dudS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAwMDA5Ny5wYXRjaCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMzJhNTFiMjNlMjVhZDVlNmFmNGI4OWYyMjhiZTE4MDAiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUzMzZlNjg1NDk2NjRlN2ExOWIxMTdhZGYwMmVkZmRlYWM2MzA3ZjIyZTViYTc4YmFjYTQ1NzExNjkxNDYzNyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwaXRvb2xzL3NwaXRvb2xzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwaXRvb2xzL3NwaXRvb2xzX2dpdC5iYgppbmRleCAzZjZjZGM2Li5hZjFjZDYwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGl0b29scy9zcGl0b29sc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3BpdG9vbHMvc3BpdG9vbHNfZ2l0LmJiCkBAIC00LDExICs0LDkgQEAKIExJQ0VOU0U9IkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGMxNjY2NmFlNmMxNTk4NzZhMGJhNjMwOTk2MTQzODEiCiAKLVBSID0gInIwIgotCi1CUFYgPSAiMC44LjEiCitCUFYgPSAiMC44LjMiCiBQViA9ICIke0JQVn0iCi1TUkNSRVYgPSAiMzE4YmNhZTUyNDk3MjI4NzNiZjU4YjI3YWZkZDIwNDczYzcwNDdjYyIKK1NSQ1JFViA9ICJhM2YxZjY4YTA0OGQwZDIzMjFlZTU2MmIzNzQ0ZGQxMTYyY2FkMjJmIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0xNiw0ICsxNCwzIEBACiAKIAogaW5oZXJpdCBhdXRvdG9vbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RhcnQtc3RvcC1kYWVtb24vc3RhcnQtc3RvcC1kYWVtb24vMDAwMS1BZGQtbGludXgtbXVzbGVhYmktdG8tb3N0YWJsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uLzAwMDEtQWRkLWxpbnV4LW11c2xlYWJpLXRvLW9zdGFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY5NDQxZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uLzAwMDEtQWRkLWxpbnV4LW11c2xlYWJpLXRvLW9zdGFibGUucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAwODc4NDBlZmRiYzg2YjE0MzJlYmRkODFmMjViNGNiNzhjNzVmODE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTEgU2VwIDIwMTggMTI6Mjg6MTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGxpbnV4LW11c2xlYWJpIHRvIG9zdGFibGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgb3N0YWJsZSAgICAgIHwgMSArCisgdHJpcGxldHRhYmxlIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL29zdGFibGUgYi9vc3RhYmxlCitpbmRleCAzYmI2ODE5Li5kMGZmZGM3IDEwMDY0NAorLS0tIGEvb3N0YWJsZQorKysrIGIvb3N0YWJsZQorQEAgLTE1LDYgKzE1LDcgQEAKKyB1Y2xpYmNlYWJpLWxpbnV4CWxpbnV4LXVjbGliY2VhYmkJbGludXhbXi1dKi11Y2xpYmNlYWJpCisgdWNsaWJjLWxpbnV4CQlsaW51eC11Y2xpYmMJCWxpbnV4W14tXSotdWNsaWJjCisgbXVzbGVhYmloZi1saW51eAlsaW51eC1tdXNsZWFiaWhmCWxpbnV4W14tXSotbXVzbGVhYmloZgorK211c2xlYWJpLWxpbnV4CQlsaW51eC1tdXNsZWFiaQkJbGludXhbXi1dKi1tdXNsZWFiaQorIG11c2wtbGludXgJCWxpbnV4LW11c2wJCWxpbnV4W14tXSotbXVzbAorIGdudWVhYmloZi1saW51eAkJbGludXgtZ251ZWFiaWhmCQlsaW51eFteLV0qLWdudWVhYmloZgorIGdudWVhYmktbGludXgJCWxpbnV4LWdudWVhYmkJCWxpbnV4W14tXSotZ251ZWFiaQorZGlmZiAtLWdpdCBhL3RyaXBsZXR0YWJsZSBiL3RyaXBsZXR0YWJsZQoraW5kZXggNzI1Nzc0NC4uNDU4NjRjMyAxMDA2NDQKKy0tLSBhL3RyaXBsZXR0YWJsZQorKysrIGIvdHJpcGxldHRhYmxlCitAQCAtNiw2ICs2LDcgQEAKKyB1Y2xpYmNlYWJpLWxpbnV4LWFybQl1Y2xpYmMtbGludXgtYXJtZWwKKyB1Y2xpYmMtbGludXgtPGNwdT4JdWNsaWJjLWxpbnV4LTxjcHU+CisgbXVzbGVhYmloZi1saW51eC1hcm0JbXVzbC1saW51eC1hcm1oZgorK211c2xlYWJpLWxpbnV4LWFybQltdXNsLWxpbnV4LWFybQorIG11c2wtbGludXgtPGNwdT4JbXVzbC1saW51eC08Y3B1PgorIGdudWVhYmloZi1saW51eC1hcm0JYXJtaGYKKyBnbnVlYWJpLWxpbnV4LWFybQlhcm1lbAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RhcnQtc3RvcC1kYWVtb24vc3RhcnQtc3RvcC1kYWVtb25fMS4xNy4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0YXJ0LXN0b3AtZGFlbW9uL3N0YXJ0LXN0b3AtZGFlbW9uXzEuMTcuMjUuYmIKaW5kZXggY2MyNzI3Yi4uYjliMjJhMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RhcnQtc3RvcC1kYWVtb24vc3RhcnQtc3RvcC1kYWVtb25fMS4xNy4yNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zdGFydC1zdG9wLWRhZW1vbi9zdGFydC1zdG9wLWRhZW1vbl8xLjE3LjI1LmJiCkBAIC05LDYgKzksNyBAQAogU1JDX1VSSSA9ICIgXAogICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9kL2Rwa2cvZHBrZ18ke1BWfS50YXIueHogXAogICAgIGZpbGU6Ly8wMDAxLWRwa2ctc3RhcnQtc3RvcC1kYWVtb24tQWNjZXB0LVNJRy1wcmVmaXhlZC1zaWduYWwtbmEucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUFkZC1saW51eC1tdXNsZWFiaS10by1vc3RhYmxlLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gImU0OGZjZmRiMjE2MmU3N2Q3MmMyYTgzNDMyZDUzN2NhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3RtMzJmbGFzaC9zdG0zMmZsYXNoXzAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0bTMyZmxhc2gvc3RtMzJmbGFzaF8wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0ZGYwNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N0bTMyZmxhc2gvc3RtMzJmbGFzaF8wLjUuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJPcGVuIHNvdXJjZSBmbGFzaCBwcm9ncmFtIGZvciBTVE0zMiB1c2luZyB0aGUgU1Qgc2VyaWFsIGJvb3Rsb2FkZXIiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zdG0zMmZsYXNoLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9zdG0zMmZsYXNoL3RpY2tldHMvIgorTElDRU5TRSA9ICJHUEwtMi4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke3ByZWZpeH0KK30KKworU1JDX1VSSVttZDVzdW1dID0gIjQwZjY3MzUwMjk0OWYzYmI2NTVkMmJjYzUzOWQ3YjZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3YWE5NDIyZWYwMmU4MmY3ZGE5MDM5MzI5ZTIxYTQzN2RlY2Y5NzJjYjM5MTlhZDgxN2Y3MGFjOWE0OWUzMDYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeW5lcmd5L3N5bmVyZ3lfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3luZXJneS9zeW5lcmd5X2dpdC5iYgppbmRleCA2OGYwMzg3Li5mNTUxOGJkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeW5lcmd5L3N5bmVyZ3lfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5bmVyZ3kvc3luZXJneV9naXQuYmIKQEAgLTEsMzUgKzEsMjQgQEAKIFNVTU1BUlkgPSAiU3luZXJneSAtIGNvbnRyb2wgbXVsdGlwbGUgY29tcHV0ZXJzIHdpdGggb25lIGtleWJvYXJkIGFuZCBtb3VzZSIKIEhPTUVQQUdFID0gImh0dHA6Ly9zeW5lcmd5LXByb2plY3Qub3JnIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDJiYTUxY2E2OGUwNTU1NjZhYWRlMjQ2NjJmOWViNDEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01NGMxZmM4ZDhiYjY3NzZhZTUwMWFjZmIxNTg1ZTlkNiIKIExJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgogU0VDVElPTiA9ICJ4MTEvdXRpbHMiCiAKIERFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieHRzdCBsaWJ4aW5lcmFtYSBjdXJsIG9wZW5zc2wiCi1kb191bnBhY2tfZXh0cmFbZGVwZW5kc10gPSAidW56aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5bWxlc3Mvc3luZXJneS5naXQ7cHJvdG9jb2w9aHR0cCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeW1sZXNzL3N5bmVyZ3ktY29yZTtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xIgogCi0jIFZlcnNpb24gMS44Ljgtc3RhYmxlCi1TUkNSRVYgPz0gImMzMDMwMWUyMzQyNGRiMTEyNTY2NGRhMTdkZWI4YzNhYTZhZWM1MmQiCi1QViA9ICIxLjguOCske1NSQ1BWfSIKKyMgVmVyc2lvbiAxLjEwLjEtc3RhYmxlCitTUkNSRVYgPz0gIjFiNGMwNzYxMjc2ODdhY2VhYzkzMWQyNjllODk4YmVhYWMxY2FkOWYiCitQViA9ICIxLjEwLjErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiAKLWRvX3VucGFja19leHRyYSgpIHsKLSAgICBjZCAke1N9L2V4dAotICAgIGZvciBmaWxlIGluICouemlwOyBkbwotICAgICAgICBmbmFtZT0iJHtmaWxlIyMqL30iCi0gICAgICAgIHVuemlwICRmaWxlIC1kICR7Zm5hbWUlLip9Ci0gICAgZG9uZQotfQotYWRkdGFzayB1bnBhY2tfZXh0cmEgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAorRVhUUkFfT0VDTUFLRSArPSAiLURTWU5FUkdZX0JVSUxEX0xFR0FDWV9HVUk9T0ZGIgogCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS91c3IvYmluCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYmluL3N5bmVyZ3kqICR7RH0vdXNyL2Jpbi8KLX0KK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvMDAwMS1zeXNsb2ctbmctZml4LXNlZ21lbnQtZmF1bHQtZHVyaW5nLXNlcnZpY2Utc3RhcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvMDAwMS1zeXNsb2ctbmctZml4LXNlZ21lbnQtZmF1bHQtZHVyaW5nLXNlcnZpY2Utc3RhcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjNDBiZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy8wMDAxLXN5c2xvZy1uZy1maXgtc2VnbWVudC1mYXVsdC1kdXJpbmctc2VydmljZS1zdGFydC5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIGNhZWNjYjdiZWM0NWY2NWJjODllZmE4MTk1YjM4NTMzNjgzMjgzNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNyBTZXAgMjAxOCAxMjo0OTozNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBzeXNsb2ctbmc6IGZpeCBzZWdtZW50IGZhdWx0IGR1cmluZyBzZXJ2aWNlIHN0YXJ0IG9uIGFybTY0CisKK3NlcnZpY2Ugc3RhcnQgZmFpbGVkIHNpbmNlIHNlZ21lbnQgZmF1bHQgb24gYXJjaCBhcm02NCwKK3N5c2xvZy1uZyBoYXZlIGEgc3VibW9kdWxlIGl2eWtpcywgZnJvbSBpdnlraXMgVjAuNDIsCitpdCB1c2UgcHRocmVhZF9hdGZvcmssIGJ1dCBmb3IgYXJtNjQsIHRoaXMgc3ltYm9sIGlzCitub3QgaW5jbHVkZWQgYnkgbGlicHRocmVhZCwgc28gY2F1c2Ugc2VnbWVudCBmYXVsdC4KKworcmVmZXIgc3lzdGVtZCwgcmVwbGFjZSBwdGhyZWFkX2F0Zm9yayB3aXRoIF9fcmVnaXN0ZXJfYXRmb3JrCit0byBmaXggdGhpcyBwcm9ibGVtLgorCitJIGhhdmUgY3JlYXRlIGFuIGlzc3VlLCBhbmQgdGhpcyBwcm9wb3NhbCB0byB1cHN0cmVhbS4KK2h0dHBzOi8vZ2l0aHViLmNvbS9idXl0ZW5oL2l2eWtpcy9pc3N1ZXMvMTUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXZ5a2lzL3NyYy9wdGhyLmggfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvaXZ5a2lzL3NyYy9wdGhyLmggYi9saWIvaXZ5a2lzL3NyYy9wdGhyLmgKK2luZGV4IGE0MWVhZjMuLjcyYzUxOTAgMTAwNjQ0CistLS0gYS9saWIvaXZ5a2lzL3NyYy9wdGhyLmgKKysrKyBiL2xpYi9pdnlraXMvc3JjL3B0aHIuaAorQEAgLTI0LDYgKzI0LDE2IEBACisgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgCisrI2lmZGVmIF9fR0xJQkNfXworKy8qIFdlIHVzZSBnbGliYyBfX3JlZ2lzdGVyX2F0Zm9yaygpICsgX19kc29faGFuZGxlIGRpcmVjdGx5IGhlcmUsIGFzIHRoZXkgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgZ2xpYmMKKysgKiBoZWFkZXJzLiBfX3JlZ2lzdGVyX2F0Zm9yaygpIGlzIG1vc3RseSBlcXVpdmFsZW50IHRvIHB0aHJlYWRfYXRmb3JrKCksIGJ1dCBkb2Vzbid0IHJlcXVpcmUgdXMgdG8gbGluayBhZ2FpbnN0CisrICogbGlicHRocmVhZCwgYXMgaXQgaXMgcGFydCBvZiBnbGliYyBhbnl3YXkuICovCisrZXh0ZXJuIGludCBfX3JlZ2lzdGVyX2F0Zm9yayh2b2lkICgqcHJlcGFyZSkgKHZvaWQpLCB2b2lkICgqcGFyZW50KSAodm9pZCksIHZvaWQgKCpjaGlsZCkgKHZvaWQpLCB2b2lkICogX19kc29faGFuZGxlKTsKKytleHRlcm4gdm9pZCogX19kc29faGFuZGxlIF9fYXR0cmlidXRlX18gKChfX3dlYWtfXykpOworKyNlbHNlCisrI2RlZmluZSBfX3JlZ2lzdGVyX2F0Zm9yayhwcmVwYXJlLHBhcmVudCxjaGlsZCxkc28pIHB0aHJlYWRfYXRmb3JrKHByZXBhcmUscGFyZW50LGNoaWxkKQorKyNlbmRpZgorKworICNpZmRlZiBIQVZFX1BSQUdNQV9XRUFLCisgI3ByYWdtYSB3ZWFrIHB0aHJlYWRfY3JlYXRlCisgI2VuZGlmCitAQCAtMzYsMTYgKzQ2LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcHRocmVhZHNfYXZhaWxhYmxlKHZvaWQpCisgCisgI2lmZGVmIEhBVkVfUFJBR01BX1dFQUsKKyAKKy0vKgorLSAqIE9uIExpbnV4LCBwdGhyZWFkX2F0Zm9yaygpIGlzIGRlZmluZWQgaW4gbGlicHRocmVhZF9ub25zaGFyZWQuYSwKKy0gKiBhIHN0YXRpYyBsaWJyYXJ5LCBhbmQgd2Ugd2FudCB0byBhdm9pZCAiI3ByYWdtYSB3ZWFrIiBmb3IgdGhhdAorLSAqIHN5bWJvbCBiZWNhdXNlIHRoYXQgY2F1c2VzIGl0IHRvIGJlIHVuZGVmaW5lZCBldmVuIGlmIHlvdSBsaW5rCistICogbGlicHRocmVhZF9ub25zaGFyZWQuYSBpbiBleHBsaWNpdGx5LgorLSAqLworLSNpZm5kZWYgSEFWRV9MSUJQVEhSRUFEX05PTlNIQVJFRAorLSNwcmFnbWEgd2VhayBwdGhyZWFkX2F0Zm9yaworLSNlbmRpZgorLQorKyNwcmFnbWEgd2VhayBfX3JlZ2lzdGVyX2F0Zm9yaworICNwcmFnbWEgd2VhayBwdGhyZWFkX2NyZWF0ZQorICNwcmFnbWEgd2VhayBwdGhyZWFkX2RldGFjaAorICNwcmFnbWEgd2VhayBwdGhyZWFkX2dldHNwZWNpZmljCitAQCAtNzMsOCArNzQsNyBAQCBzdGF0aWMgaW5saW5lIGludAorIHB0aHJfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSh2b2lkKSwgdm9pZCAoKnBhcmVudCkodm9pZCksIHZvaWQgKCpjaGlsZCkodm9pZCkpCisgeworIAlpZiAocHRocmVhZHNfYXZhaWxhYmxlKCkpCistCQlyZXR1cm4gcHRocmVhZF9hdGZvcmsocHJlcGFyZSwgcGFyZW50LCBjaGlsZCk7CistCisrCQlyZXR1cm4gX19yZWdpc3Rlcl9hdGZvcmsocHJlcGFyZSwgcGFyZW50LCBjaGlsZCwgX19kc29faGFuZGxlKTsKKyAJcmV0dXJuIEVOT1NZUzsKKyB9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9GaXgtdGhlLW1lbW9yeS1sZWFrLXByb2JsZW0td2hlbi1IQVZFX0VOVklST04tZGVmaW5lZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9GaXgtdGhlLW1lbW9yeS1sZWFrLXByb2JsZW0td2hlbi1IQVZFX0VOVklST04tZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0ODFmMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvRml4LXRoZS1tZW1vcnktbGVhay1wcm9ibGVtLXdoZW4tSEFWRV9FTlZJUk9OLWRlZmluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1GaXggdGhlIG1lbW9yeSBsZWFrIHByb2JsZW0gd2hlbiBIQVZFX0VOVklST04gaXMgZGVmaW5lZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWHVmZW5nIFpoYW5nIDx4dWZlbmcuemhhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IHN5c2xvZy1uZy0zLjguMS9saWIvZ3Byb2Nlc3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c2xvZy1uZy0zLjguMS5vcmlnL2xpYi9ncHJvY2Vzcy5jCi0rKysgc3lzbG9nLW5nLTMuOC4xL2xpYi9ncHJvY2Vzcy5jCi1AQCAtMTQzMiw2ICsxNDMyLDE4IEBAIGdfcHJvY2Vzc19zdGFydHVwX29rKHZvaWQpCi0gdm9pZAotIGdfcHJvY2Vzc19maW5pc2godm9pZCkKLSB7Ci0rI2lmZGVmIEhBVkVfRU5WSVJPTgotKyAgaW50IGkgPSAwOwotKwotKyAgd2hpbGUgKGVudmlyb25baV0pIHsKLSsgICAgZ19mcmVlKGVudmlyb25baV0pOwotKyAgICArK2k7Ci0rICB9Ci0rICBpZiAoZW52aXJvbikKLSsgICAgZ19mcmVlKGVudmlyb24pOwotKyAgaWYgKHByb2Nlc3Nfb3B0cy5hcmd2X29yaWcpCi0rICAgIGZyZWUocHJvY2Vzc19vcHRzLmFyZ3Zfb3JpZyk7Ci0rI2VuZGlmCi0gICBnX3Byb2Nlc3NfcmVtb3ZlX3BpZGZpbGUoKTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZW5hYmxlLXRocmVhZC10bHMtdG8tbWFuYWdlLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1lbmFibGUtdGhyZWFkLXRscy10by1tYW5hZ2UtLnBhdGNoCmluZGV4IGMxNzJlNGUuLjRmOGEzZDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1lbmFibGUtdGhyZWFkLXRscy10by1tYW5hZ2UtLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1lbmFibGUtdGhyZWFkLXRscy10by1tYW5hZ2UtLnBhdGNoCkBAIC0xMCwyMSArMTAsMjEgQEAKICBjb25maWd1cmUuYWMgfCAxNyArKysrKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCi1JbmRleDogc3lzbG9nLW5nLTMuOC4xL2NvbmZpZ3VyZS5hYworSW5kZXg6IHN5c2xvZy1uZy0zLjE1LjEvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzbG9nLW5nLTMuOC4xLm9yaWcvY29uZmlndXJlLmFjCi0rKysgc3lzbG9nLW5nLTMuOC4xL2NvbmZpZ3VyZS5hYwotQEAgLTE0Nyw2ICsxNDcsOSBAQCBBQ19BUkdfRU5BQkxFKGdwcm9mLAorLS0tIHN5c2xvZy1uZy0zLjE1LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBzeXNsb2ctbmctMy4xNS4xL2NvbmZpZ3VyZS5hYworQEAgLTE5MCw2ICsxOTAsOSBAQCBBQ19BUkdfRU5BQkxFKGdwcm9mLAogIEFDX0FSR19FTkFCTEUobWVtdHJhY2UsCiAgICAgICAgICAgICAgICBbICAtLWVuYWJsZS1tZW10cmFjZSAgIEVuYWJsZSBhbHRlcm5hdGl2ZSBsZWFrIGRlYnVnZ2luZyBjb2RlLl0pCiAgCiArQUNfQVJHX0VOQUJMRSh0aHJlYWQtdGxzLAotKyAgICAgICAgICAgICAgWyAgLS1lbmFibGUtdGhyZWFkLXRscyAgICAgICAgRW5hYmxlIFRocmVhZCBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgc3VwcG9ydC5dLCxlbmFibGVfdGhyZWFkX3Rscz0ibm8iKQorKyAgICAgICAgICAgICAgWyAgLS1lbmFibGUtdGhyZWFkLXRscyAgICAgICAgRW5hYmxlIFRocmVhZCBMb2NhbCBTdG9yYWdlIHN1cHBvcnQuXSwsZW5hYmxlX3RocmVhZF90bHM9Im5vIikKICsKICBBQ19BUkdfRU5BQkxFKGR5bmFtaWMtbGlua2luZywKICAgICAgICAgICAgICAgIFsgIC0tZW5hYmxlLWR5bmFtaWMtbGlua2luZyAgICAgICAgTGluayBldmVyeXRoaW5nIGR5bmFtaWNhbGx5Ll0sLGVuYWJsZV9keW5hbWljX2xpbmtpbmc9ImF1dG8iKQogIAotQEAgLTQ4NiwxMiArNDg5LDE0IEBAIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0BAIC01OTEsMTIgKzU5NCwxNCBAQCBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgZG5sIElzIHRoZSBfX3RocmVhZCBrZXl3b3JkIGF2YWlsYWJsZT8KICBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgCkBAIC0zMywxNCArMzMsMTQgQEAKIC1fX3RocmVhZCBpbnQgYTsKIC1dXSwKIC1bYT0wO10pXSwKLS1bYWNfY3ZfaGF2ZV90bHM9eWVzOyBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9USFJFQURfS0VZV09SRCwgMSwgIldoZXRoZXIgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IGlzIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtIildKQorLVthY19jdl9oYXZlX3Rscz15ZXM7IEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1RIUkVBRF9LRVlXT1JELCAxLCAiV2hldGhlciBUaHJlYWQgTG9jYWwgU3RvcmFnZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbSIpXSkKICtpZiB0ZXN0ICJ4JGVuYWJsZV90aHJlYWRfdGxzIiAhPSAieG5vIjsgdGhlbgogKyAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKAogKyAgICBbWyNpbmNsdWRlIDxwdGhyZWFkLmg+CiArICAgIF9fdGhyZWFkIGludCBhOwogKyAgICBdXSwKICsgICAgW2E9MDtdKV0sCi0rICAgIFthY19jdl9oYXZlX3Rscz15ZXM7IEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1RIUkVBRF9LRVlXT1JELCAxLCAiV2hldGhlciBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgaXMgc3VwcG9ydGVkIGJ5IHRoZSBzeXN0ZW0iKV0pCisrICAgIFthY19jdl9oYXZlX3Rscz15ZXM7IEFDX0RFRklORV9VTlFVT1RFRChIQVZFX1RIUkVBRF9LRVlXT1JELCAxLCAiV2hldGhlciBUaHJlYWQgTG9jYWwgU3RvcmFnZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbSIpXSkKICtmaQogIAogIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM2ZjU0My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotQHZlcnNpb246IDMuOAotIwotIyBTeXNsb2ctbmcgY29uZmlndXJhdGlvbiBmaWxlLCBjb21wYXRpYmxlIHdpdGggZGVmYXVsdCBEZWJpYW4gc3lzbG9nZAotIyBpbnN0YWxsYXRpb24uIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBhbm9ueW1vdXMgKEkgY2FuJ3QgZmluZCBoaXMgbmFtZSkKLSMgUmV2aXNlZCwgYW5kIHJld3JpdGVkIGJ5IG1lIChTWkFMQVkgQXR0aWxhIDxzYXNhQGRlYmlhbi5vcmc+KQotCi0jIEZpcnN0LCBzZXQgc29tZSBnbG9iYWwgb3B0aW9ucy4KLW9wdGlvbnMgeyBjaGFpbl9ob3N0bmFtZXMob2ZmKTsgZmx1c2hfbGluZXMoMCk7IHVzZV9kbnMobm8pOyB1c2VfZnFkbihubyk7Ci0JICBvd25lcigicm9vdCIpOyBncm91cCgiYWRtIik7IHBlcm0oMDY0MCk7IHN0YXRzX2ZyZXEoMCk7Ci0JICBiYWRfaG9zdG5hbWUoIl5nY29uZmQkIik7Ci19OwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgU291cmNlcwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc3lza2xvZ2QgcGFja2FnZQotIyBMb2dzIG1heSBjb21lIGZyb20gdW5peCBzdHJlYW0sIGJ1dCBub3QgZnJvbSBhbm90aGVyIG1hY2hpbmUuCi0jCi1zb3VyY2Ugc19zcmMgeyB1bml4LWRncmFtKCIvZGV2L2xvZyIpOyBpbnRlcm5hbCgpOwotICAgICAgIAkgICAgIGZpbGUoIi9wcm9jL2ttc2ciIHByb2dyYW1fb3ZlcnJpZGUoImtlcm5lbCIpKTsKLX07Ci0KLSMgSWYgeW91IHdpc2ggdG8gZ2V0IGxvZ3MgZnJvbSByZW1vdGUgbWFjaGluZSB5b3Ugc2hvdWxkIHVuY29tbWVudAotIyB0aGlzIGFuZCBjb21tZW50IHRoZSBhYm92ZSBzb3VyY2UgbGluZS4KLSMKLSNzb3VyY2Ugc19uZXQgeyB0Y3AoaXAoMTI3LjAuMC4xKSBwb3J0KDEwMDApIGF1dGhlbnRpY2F0aW9uKHJlcXVpcmVkKSBlbmNyeXB0KGFsbG93KSk7IH07Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEZXN0aW5hdGlvbnMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBGaXJzdCBzb21lIHN0YW5kYXJkIGxvZ2ZpbGUKLSMKLWRlc3RpbmF0aW9uIGRfYXV0aCB7IGZpbGUoIi92YXIvbG9nL2F1dGgubG9nIik7IH07Ci1kZXN0aW5hdGlvbiBkX2Nyb24geyBmaWxlKCIvdmFyL2xvZy9jcm9uLmxvZyIpOyB9OwotZGVzdGluYXRpb24gZF9kYWVtb24geyBmaWxlKCIvdmFyL2xvZy9kYWVtb24ubG9nIik7IH07Ci1kZXN0aW5hdGlvbiBkX2tlcm4geyBmaWxlKCIvdmFyL2xvZy9rZXJuLmxvZyIpOyB9OwotZGVzdGluYXRpb24gZF9scHIgeyBmaWxlKCIvdmFyL2xvZy9scHIubG9nIik7IH07Ci1kZXN0aW5hdGlvbiBkX21haWwgeyBmaWxlKCIvdmFyL2xvZy9tYWlsLmxvZyIpOyB9OwotZGVzdGluYXRpb24gZF9zeXNsb2cgeyBmaWxlKCIvdmFyL2xvZy9zeXNsb2ciKTsgfTsKLWRlc3RpbmF0aW9uIGRfdXNlciB7IGZpbGUoIi92YXIvbG9nL3VzZXIubG9nIik7IH07Ci1kZXN0aW5hdGlvbiBkX3V1Y3AgeyBmaWxlKCIvdmFyL2xvZy91dWNwLmxvZyIpOyB9OwotCi0jIFRoaXMgZmlsZXMgYXJlIHRoZSBsb2cgY29tZSBmcm9tIHRoZSBtYWlsIHN1YnN5c3RlbS4KLSMKLWRlc3RpbmF0aW9uIGRfbWFpbGluZm8geyBmaWxlKCIvdmFyL2xvZy9tYWlsL21haWwuaW5mbyIpOyB9OwotZGVzdGluYXRpb24gZF9tYWlsd2FybiB7IGZpbGUoIi92YXIvbG9nL21haWwvbWFpbC53YXJuIik7IH07Ci1kZXN0aW5hdGlvbiBkX21haWxlcnIgeyBmaWxlKCIvdmFyL2xvZy9tYWlsL21haWwuZXJyIik7IH07Ci0KLSMgTG9nZ2luZyBmb3IgSU5OIG5ld3Mgc3lzdGVtCi0jCi1kZXN0aW5hdGlvbiBkX25ld3Njcml0IHsgZmlsZSgiL3Zhci9sb2cvbmV3cy9uZXdzLmNyaXQiKTsgfTsKLWRlc3RpbmF0aW9uIGRfbmV3c2VyciB7IGZpbGUoIi92YXIvbG9nL25ld3MvbmV3cy5lcnIiKTsgfTsKLWRlc3RpbmF0aW9uIGRfbmV3c25vdGljZSB7IGZpbGUoIi92YXIvbG9nL25ld3MvbmV3cy5ub3RpY2UiKTsgfTsKLQotIyBTb21lICdjYXRjaC1hbGwnIGxvZ2ZpbGVzLgotIwotZGVzdGluYXRpb24gZF9kZWJ1ZyB7IGZpbGUoIi92YXIvbG9nL2RlYnVnIik7IH07Ci1kZXN0aW5hdGlvbiBkX2Vycm9yIHsgZmlsZSgiL3Zhci9sb2cvZXJyb3IiKTsgfTsKLWRlc3RpbmF0aW9uIGRfbWVzc2FnZXMgeyBmaWxlKCIvdmFyL2xvZy9tZXNzYWdlcyIpOyB9OwotCi0jIFRoZSByb290J3MgY29uc29sZS4KLSMKLWRlc3RpbmF0aW9uIGRfY29uc29sZSB7IHVzZXJ0dHkoInJvb3QiKTsgfTsKLQotIyBWaXJ0dWFsIGNvbnNvbGUuCi0jCi1kZXN0aW5hdGlvbiBkX2NvbnNvbGVfYWxsIHsgZmlsZSgiL2Rldi90dHkxMCIpOyB9OwotCi0jIFRoZSBuYW1lZCBwaXBlIC9kZXYveGNvbnNvbGUgaXMgZm9yIHRoZSBuc29sZScgdXRpbGl0eS4gIFRvIHVzZSBpdCwKLSMgeW91IG11c3QgaW52b2tlIG5zb2xlJyB3aXRoIHRoZSAtZmlsZScgb3B0aW9uOgotIwotIyAgICAkIHhjb25zb2xlIC1maWxlIC9kZXYveGNvbnNvbGUgWy4uLl0KLSMKLWRlc3RpbmF0aW9uIGRfeGNvbnNvbGUgeyBwaXBlKCIvZGV2L3hjb25zb2xlIik7IH07Ci0KLSMgU2VuZCB0aGUgbWVzc2FnZXMgdG8gYW4gb3RoZXIgaG9zdAotIwotI2Rlc3RpbmF0aW9uIGRfbmV0IHsgdGNwKCIxMjcuMC4wLjEiIHBvcnQoMTAwMCkgYXV0aGVudGljYXRpb24ob24pIGVuY3J5cHQob24pIGxvZ19maWZvX3NpemUoMTAwMCkpOyB9OwotCi0jIERlYmlhbiBvbmx5Ci1kZXN0aW5hdGlvbiBkX3BwcCB7IGZpbGUoIi92YXIvbG9nL3BwcC5sb2ciKTsgfTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEZpbHRlcnMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBIZXJlJ3MgY29tZSB0aGUgZmlsdGVyIG9wdGlvbnMuIFdpdGggdGhpcyBydWxlcywgd2UgY2FuIHNldCB3aGljaAotIyBtZXNzYWdlIGdvIHdoZXJlLgotCi1maWx0ZXIgZl9kYmcgeyBsZXZlbChkZWJ1Zyk7IH07Ci1maWx0ZXIgZl9pbmZvIHsgbGV2ZWwoaW5mbyk7IH07Ci1maWx0ZXIgZl9ub3RpY2UgeyBsZXZlbChub3RpY2UpOyB9OwotZmlsdGVyIGZfd2FybiB7IGxldmVsKHdhcm4pOyB9OwotZmlsdGVyIGZfZXJyIHsgbGV2ZWwoZXJyKTsgfTsKLWZpbHRlciBmX2NyaXQgeyBsZXZlbChjcml0IC4uIGVtZXJnKTsgfTsKLQotZmlsdGVyIGZfZGVidWcgeyBsZXZlbChkZWJ1ZykgYW5kIG5vdCBmYWNpbGl0eShhdXRoLCBhdXRocHJpdiwgbmV3cywgbWFpbCk7IH07Ci1maWx0ZXIgZl9lcnJvciB7IGxldmVsKGVyciAuLiBlbWVyZykgOyB9OwotZmlsdGVyIGZfbWVzc2FnZXMgeyBsZXZlbChpbmZvLG5vdGljZSx3YXJuKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IGZhY2lsaXR5KGF1dGgsYXV0aHByaXYsY3JvbixkYWVtb24sbWFpbCxuZXdzKTsgfTsKLQotZmlsdGVyIGZfYXV0aCB7IGZhY2lsaXR5KGF1dGgsIGF1dGhwcml2KSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKLWZpbHRlciBmX2Nyb24geyBmYWNpbGl0eShjcm9uKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKLWZpbHRlciBmX2RhZW1vbiB7IGZhY2lsaXR5KGRhZW1vbikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07Ci1maWx0ZXIgZl9rZXJuIHsgZmFjaWxpdHkoa2VybikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07Ci1maWx0ZXIgZl9scHIgeyBmYWNpbGl0eShscHIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OwotZmlsdGVyIGZfbG9jYWwgeyBmYWNpbGl0eShsb2NhbDAsIGxvY2FsMSwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsNiwgbG9jYWw3KSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKLWZpbHRlciBmX21haWwgeyBmYWNpbGl0eShtYWlsKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKLWZpbHRlciBmX25ld3MgeyBmYWNpbGl0eShuZXdzKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKLWZpbHRlciBmX3N5c2xvZzMgeyBub3QgZmFjaWxpdHkoYXV0aCwgYXV0aHByaXYsIG1haWwpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OwotZmlsdGVyIGZfdXNlciB7IGZhY2lsaXR5KHVzZXIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OwotZmlsdGVyIGZfdXVjcCB7IGZhY2lsaXR5KHV1Y3ApIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OwotCi1maWx0ZXIgZl9jbmV3cyB7IGxldmVsKG5vdGljZSwgZXJyLCBjcml0KSBhbmQgZmFjaWxpdHkobmV3cyk7IH07Ci1maWx0ZXIgZl9jb3RoZXIgeyBsZXZlbChkZWJ1ZywgaW5mbywgbm90aWNlLCB3YXJuKSBvciBmYWNpbGl0eShkYWVtb24sIG1haWwpOyB9OwotCi1maWx0ZXIgZl9wcHAgeyBmYWNpbGl0eShsb2NhbDIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OwotZmlsdGVyIGZfY29uc29sZSB7IGxldmVsKHdhcm4gLi4gZW1lcmcpOyB9OwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgTG9nIHBhdGhzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2F1dGgpOyBkZXN0aW5hdGlvbihkX2F1dGgpOyB9OwotbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY3Jvbik7IGRlc3RpbmF0aW9uKGRfY3Jvbik7IH07Ci1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9kYWVtb24pOyBkZXN0aW5hdGlvbihkX2RhZW1vbik7IH07Ci1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9rZXJuKTsgZGVzdGluYXRpb24oZF9rZXJuKTsgfTsKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2xwcik7IGRlc3RpbmF0aW9uKGRfbHByKTsgfTsKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3N5c2xvZzMpOyBkZXN0aW5hdGlvbihkX3N5c2xvZyk7IH07Ci1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl91c2VyKTsgZGVzdGluYXRpb24oZF91c2VyKTsgfTsKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3V1Y3ApOyBkZXN0aW5hdGlvbihkX3V1Y3ApOyB9OwotCi1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tYWlsKTsgZGVzdGluYXRpb24oZF9tYWlsKTsgfTsKLSNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tYWlsKTsgZmlsdGVyKGZfaW5mbyk7IGRlc3RpbmF0aW9uKGRfbWFpbGluZm8pOyB9OwotI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX21haWwpOyBmaWx0ZXIoZl93YXJuKTsgZGVzdGluYXRpb24oZF9tYWlsd2Fybik7IH07Ci0jbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbWFpbCk7IGZpbHRlcihmX2Vycik7IGRlc3RpbmF0aW9uKGRfbWFpbGVycik7IH07Ci0KLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX25ld3MpOyBmaWx0ZXIoZl9jcml0KTsgZGVzdGluYXRpb24oZF9uZXdzY3JpdCk7IH07Ci1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9uZXdzKTsgZmlsdGVyKGZfZXJyKTsgZGVzdGluYXRpb24oZF9uZXdzZXJyKTsgfTsKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX25ld3MpOyBmaWx0ZXIoZl9ub3RpY2UpOyBkZXN0aW5hdGlvbihkX25ld3Nub3RpY2UpOyB9OwotI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2NuZXdzKTsgZGVzdGluYXRpb24oZF9jb25zb2xlX2FsbCk7IH07Ci0jbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY290aGVyKTsgZGVzdGluYXRpb24oZF9jb25zb2xlX2FsbCk7IH07Ci0KLSNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9wcHApOyBkZXN0aW5hdGlvbihkX3BwcCk7IH07Ci0KLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2RlYnVnKTsgZGVzdGluYXRpb24oZF9kZWJ1Zyk7IH07Ci1sb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9lcnJvcik7IGRlc3RpbmF0aW9uKGRfZXJyb3IpOyB9OwotbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbWVzc2FnZXMpOyBkZXN0aW5hdGlvbihkX21lc3NhZ2VzKTsgfTsKLQotbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY29uc29sZSk7IGRlc3RpbmF0aW9uKGRfY29uc29sZV9hbGwpOwotCQkJCSAgICBkZXN0aW5hdGlvbihkX3hjb25zb2xlKTsgfTsKLWxvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2NyaXQpOyBkZXN0aW5hdGlvbihkX2NvbnNvbGUpOyB9OwotCi0jIEFsbCBtZXNzYWdlcyBzZW5kIHRvIGEgcmVtb3RlIHNpdGUKLSMKLSNsb2cgeyBzb3VyY2Uoc19zcmMpOyBkZXN0aW5hdGlvbihkX25ldCk7IH07CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdGVtZCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllOTEwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdGVtZApAQCAtMCwwICsxLDE1NSBAQAorQHZlcnNpb246IDMuMTUKKyMKKyMgU3lzbG9nLW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgY29tcGF0aWJsZSB3aXRoIGRlZmF1bHQgRGViaWFuIHN5c2xvZ2QKKyMgaW5zdGFsbGF0aW9uLiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgYW5vbnltb3VzIChJIGNhbid0IGZpbmQgaGlzIG5hbWUpCisjIFJldmlzZWQsIGFuZCByZXdyaXRlZCBieSBtZSAoU1pBTEFZIEF0dGlsYSA8c2FzYUBkZWJpYW4ub3JnPikKKworIyBGaXJzdCwgc2V0IHNvbWUgZ2xvYmFsIG9wdGlvbnMuCitvcHRpb25zIHsgY2hhaW5faG9zdG5hbWVzKG9mZik7IGZsdXNoX2xpbmVzKDApOyB1c2VfZG5zKG5vKTsgdXNlX2ZxZG4obm8pOworCSAgb3duZXIoInJvb3QiKTsgZ3JvdXAoImFkbSIpOyBwZXJtKDA2NDApOyBzdGF0c19mcmVxKDApOworCSAgYmFkX2hvc3RuYW1lKCJeZ2NvbmZkJCIpOworfTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNvdXJjZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHN5c2tsb2dkIHBhY2thZ2UKKyMgTG9ncyBtYXkgY29tZSBmcm9tIHVuaXggc3RyZWFtLCBidXQgbm90IGZyb20gYW5vdGhlciBtYWNoaW5lLgorIworc291cmNlIHNfc3JjIHsgc3lzdGVtZF9qb3VybmFsKCk7IGludGVybmFsKCk7CisgICAgICAgCSAgICAgZmlsZSgiL3Byb2Mva21zZyIgcHJvZ3JhbV9vdmVycmlkZSgia2VybmVsIikpOworfTsKKworIyBJZiB5b3Ugd2lzaCB0byBnZXQgbG9ncyBmcm9tIHJlbW90ZSBtYWNoaW5lIHlvdSBzaG91bGQgdW5jb21tZW50CisjIHRoaXMgYW5kIGNvbW1lbnQgdGhlIGFib3ZlIHNvdXJjZSBsaW5lLgorIworI3NvdXJjZSBzX25ldCB7IHRjcChpcCgxMjcuMC4wLjEpIHBvcnQoMTAwMCkgYXV0aGVudGljYXRpb24ocmVxdWlyZWQpIGVuY3J5cHQoYWxsb3cpKTsgfTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERlc3RpbmF0aW9ucworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEZpcnN0IHNvbWUgc3RhbmRhcmQgbG9nZmlsZQorIworZGVzdGluYXRpb24gZF9hdXRoIHsgZmlsZSgiL3Zhci9sb2cvYXV0aC5sb2ciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfY3JvbiB7IGZpbGUoIi92YXIvbG9nL2Nyb24ubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX2RhZW1vbiB7IGZpbGUoIi92YXIvbG9nL2RhZW1vbi5sb2ciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfa2VybiB7IGZpbGUoIi92YXIvbG9nL2tlcm4ubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX2xwciB7IGZpbGUoIi92YXIvbG9nL2xwci5sb2ciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfbWFpbCB7IGZpbGUoIi92YXIvbG9nL21haWwubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX3N5c2xvZyB7IGZpbGUoIi92YXIvbG9nL3N5c2xvZyIpOyB9OworZGVzdGluYXRpb24gZF91c2VyIHsgZmlsZSgiL3Zhci9sb2cvdXNlci5sb2ciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfdXVjcCB7IGZpbGUoIi92YXIvbG9nL3V1Y3AubG9nIik7IH07CisKKyMgVGhpcyBmaWxlcyBhcmUgdGhlIGxvZyBjb21lIGZyb20gdGhlIG1haWwgc3Vic3lzdGVtLgorIworZGVzdGluYXRpb24gZF9tYWlsaW5mbyB7IGZpbGUoIi92YXIvbG9nL21haWwvbWFpbC5pbmZvIik7IH07CitkZXN0aW5hdGlvbiBkX21haWx3YXJuIHsgZmlsZSgiL3Zhci9sb2cvbWFpbC9tYWlsLndhcm4iKTsgfTsKK2Rlc3RpbmF0aW9uIGRfbWFpbGVyciB7IGZpbGUoIi92YXIvbG9nL21haWwvbWFpbC5lcnIiKTsgfTsKKworIyBMb2dnaW5nIGZvciBJTk4gbmV3cyBzeXN0ZW0KKyMKK2Rlc3RpbmF0aW9uIGRfbmV3c2NyaXQgeyBmaWxlKCIvdmFyL2xvZy9uZXdzL25ld3MuY3JpdCIpOyB9OworZGVzdGluYXRpb24gZF9uZXdzZXJyIHsgZmlsZSgiL3Zhci9sb2cvbmV3cy9uZXdzLmVyciIpOyB9OworZGVzdGluYXRpb24gZF9uZXdzbm90aWNlIHsgZmlsZSgiL3Zhci9sb2cvbmV3cy9uZXdzLm5vdGljZSIpOyB9OworCisjIFNvbWUgJ2NhdGNoLWFsbCcgbG9nZmlsZXMuCisjCitkZXN0aW5hdGlvbiBkX2RlYnVnIHsgZmlsZSgiL3Zhci9sb2cvZGVidWciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfZXJyb3IgeyBmaWxlKCIvdmFyL2xvZy9lcnJvciIpOyB9OworZGVzdGluYXRpb24gZF9tZXNzYWdlcyB7IGZpbGUoIi92YXIvbG9nL21lc3NhZ2VzIik7IH07CisKKyMgVGhlIHJvb3QncyBjb25zb2xlLgorIworZGVzdGluYXRpb24gZF9jb25zb2xlIHsgdXNlcnR0eSgicm9vdCIpOyB9OworCisjIFZpcnR1YWwgY29uc29sZS4KKyMKK2Rlc3RpbmF0aW9uIGRfY29uc29sZV9hbGwgeyBmaWxlKCIvZGV2L3R0eTEwIik7IH07CisKKyMgVGhlIG5hbWVkIHBpcGUgL2Rldi94Y29uc29sZSBpcyBmb3IgdGhlIG5zb2xlJyB1dGlsaXR5LiAgVG8gdXNlIGl0LAorIyB5b3UgbXVzdCBpbnZva2UgbnNvbGUnIHdpdGggdGhlIC1maWxlJyBvcHRpb246CisjCisjICAgICQgeGNvbnNvbGUgLWZpbGUgL2Rldi94Y29uc29sZSBbLi4uXQorIworZGVzdGluYXRpb24gZF94Y29uc29sZSB7IHBpcGUoIi9kZXYveGNvbnNvbGUiKTsgfTsKKworIyBTZW5kIHRoZSBtZXNzYWdlcyB0byBhbiBvdGhlciBob3N0CisjCisjZGVzdGluYXRpb24gZF9uZXQgeyB0Y3AoIjEyNy4wLjAuMSIgcG9ydCgxMDAwKSBhdXRoZW50aWNhdGlvbihvbikgZW5jcnlwdChvbikgbG9nX2ZpZm9fc2l6ZSgxMDAwKSk7IH07CisKKyMgRGViaWFuIG9ubHkKK2Rlc3RpbmF0aW9uIGRfcHBwIHsgZmlsZSgiL3Zhci9sb2cvcHBwLmxvZyIpOyB9OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRmlsdGVycworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEhlcmUncyBjb21lIHRoZSBmaWx0ZXIgb3B0aW9ucy4gV2l0aCB0aGlzIHJ1bGVzLCB3ZSBjYW4gc2V0IHdoaWNoCisjIG1lc3NhZ2UgZ28gd2hlcmUuCisKK2ZpbHRlciBmX2RiZyB7IGxldmVsKGRlYnVnKTsgfTsKK2ZpbHRlciBmX2luZm8geyBsZXZlbChpbmZvKTsgfTsKK2ZpbHRlciBmX25vdGljZSB7IGxldmVsKG5vdGljZSk7IH07CitmaWx0ZXIgZl93YXJuIHsgbGV2ZWwod2Fybik7IH07CitmaWx0ZXIgZl9lcnIgeyBsZXZlbChlcnIpOyB9OworZmlsdGVyIGZfY3JpdCB7IGxldmVsKGNyaXQgLi4gZW1lcmcpOyB9OworCitmaWx0ZXIgZl9kZWJ1ZyB7IGxldmVsKGRlYnVnKSBhbmQgbm90IGZhY2lsaXR5KGF1dGgsIGF1dGhwcml2LCBuZXdzLCBtYWlsKTsgfTsKK2ZpbHRlciBmX2Vycm9yIHsgbGV2ZWwoZXJyIC4uIGVtZXJnKSA7IH07CitmaWx0ZXIgZl9tZXNzYWdlcyB7IGxldmVsKGluZm8sbm90aWNlLHdhcm4pIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgZmFjaWxpdHkoYXV0aCxhdXRocHJpdixjcm9uLGRhZW1vbixtYWlsLG5ld3MpOyB9OworCitmaWx0ZXIgZl9hdXRoIHsgZmFjaWxpdHkoYXV0aCwgYXV0aHByaXYpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfY3JvbiB7IGZhY2lsaXR5KGNyb24pIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfZGFlbW9uIHsgZmFjaWxpdHkoZGFlbW9uKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX2tlcm4geyBmYWNpbGl0eShrZXJuKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX2xwciB7IGZhY2lsaXR5KGxwcikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl9sb2NhbCB7IGZhY2lsaXR5KGxvY2FsMCwgbG9jYWwxLCBsb2NhbDMsIGxvY2FsNCwgbG9jYWw1LAorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWw2LCBsb2NhbDcpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfbWFpbCB7IGZhY2lsaXR5KG1haWwpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfbmV3cyB7IGZhY2lsaXR5KG5ld3MpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfc3lzbG9nMyB7IG5vdCBmYWNpbGl0eShhdXRoLCBhdXRocHJpdiwgbWFpbCkgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl91c2VyIHsgZmFjaWxpdHkodXNlcikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl91dWNwIHsgZmFjaWxpdHkodXVjcCkgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CisKK2ZpbHRlciBmX2NuZXdzIHsgbGV2ZWwobm90aWNlLCBlcnIsIGNyaXQpIGFuZCBmYWNpbGl0eShuZXdzKTsgfTsKK2ZpbHRlciBmX2NvdGhlciB7IGxldmVsKGRlYnVnLCBpbmZvLCBub3RpY2UsIHdhcm4pIG9yIGZhY2lsaXR5KGRhZW1vbiwgbWFpbCk7IH07CisKK2ZpbHRlciBmX3BwcCB7IGZhY2lsaXR5KGxvY2FsMikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl9jb25zb2xlIHsgbGV2ZWwod2FybiAuLiBlbWVyZyk7IH07CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMb2cgcGF0aHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfYXV0aCk7IGRlc3RpbmF0aW9uKGRfYXV0aCk7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9jcm9uKTsgZGVzdGluYXRpb24oZF9jcm9uKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2RhZW1vbik7IGRlc3RpbmF0aW9uKGRfZGFlbW9uKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2tlcm4pOyBkZXN0aW5hdGlvbihkX2tlcm4pOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbHByKTsgZGVzdGluYXRpb24oZF9scHIpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfc3lzbG9nMyk7IGRlc3RpbmF0aW9uKGRfc3lzbG9nKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3VzZXIpOyBkZXN0aW5hdGlvbihkX3VzZXIpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfdXVjcCk7IGRlc3RpbmF0aW9uKGRfdXVjcCk7IH07CisKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX21haWwpOyBkZXN0aW5hdGlvbihkX21haWwpOyB9OworI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX21haWwpOyBmaWx0ZXIoZl9pbmZvKTsgZGVzdGluYXRpb24oZF9tYWlsaW5mbyk7IH07CisjbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbWFpbCk7IGZpbHRlcihmX3dhcm4pOyBkZXN0aW5hdGlvbihkX21haWx3YXJuKTsgfTsKKyNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tYWlsKTsgZmlsdGVyKGZfZXJyKTsgZGVzdGluYXRpb24oZF9tYWlsZXJyKTsgfTsKKworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbmV3cyk7IGZpbHRlcihmX2NyaXQpOyBkZXN0aW5hdGlvbihkX25ld3Njcml0KTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX25ld3MpOyBmaWx0ZXIoZl9lcnIpOyBkZXN0aW5hdGlvbihkX25ld3NlcnIpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbmV3cyk7IGZpbHRlcihmX25vdGljZSk7IGRlc3RpbmF0aW9uKGRfbmV3c25vdGljZSk7IH07CisjbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY25ld3MpOyBkZXN0aW5hdGlvbihkX2NvbnNvbGVfYWxsKTsgfTsKKyNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9jb3RoZXIpOyBkZXN0aW5hdGlvbihkX2NvbnNvbGVfYWxsKTsgfTsKKworI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3BwcCk7IGRlc3RpbmF0aW9uKGRfcHBwKTsgfTsKKworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfZGVidWcpOyBkZXN0aW5hdGlvbihkX2RlYnVnKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2Vycm9yKTsgZGVzdGluYXRpb24oZF9lcnJvcik7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tZXNzYWdlcyk7IGRlc3RpbmF0aW9uKGRfbWVzc2FnZXMpOyB9OworCitsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9jb25zb2xlKTsgZGVzdGluYXRpb24oZF9jb25zb2xlX2FsbCk7CisJCQkJICAgIGRlc3RpbmF0aW9uKGRfeGNvbnNvbGUpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY3JpdCk7IGRlc3RpbmF0aW9uKGRfY29uc29sZSk7IH07CisKKyMgQWxsIG1lc3NhZ2VzIHNlbmQgdG8gYSByZW1vdGUgc2l0ZQorIworI2xvZyB7IHNvdXJjZShzX3NyYyk7IGRlc3RpbmF0aW9uKGRfbmV0KTsgfTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjE4M2VlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0CkBAIC0wLDAgKzEsMTU1IEBACitAdmVyc2lvbjogMy4xNQorIworIyBTeXNsb2ctbmcgY29uZmlndXJhdGlvbiBmaWxlLCBjb21wYXRpYmxlIHdpdGggZGVmYXVsdCBEZWJpYW4gc3lzbG9nZAorIyBpbnN0YWxsYXRpb24uIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBhbm9ueW1vdXMgKEkgY2FuJ3QgZmluZCBoaXMgbmFtZSkKKyMgUmV2aXNlZCwgYW5kIHJld3JpdGVkIGJ5IG1lIChTWkFMQVkgQXR0aWxhIDxzYXNhQGRlYmlhbi5vcmc+KQorCisjIEZpcnN0LCBzZXQgc29tZSBnbG9iYWwgb3B0aW9ucy4KK29wdGlvbnMgeyBjaGFpbl9ob3N0bmFtZXMob2ZmKTsgZmx1c2hfbGluZXMoMCk7IHVzZV9kbnMobm8pOyB1c2VfZnFkbihubyk7CisJICBvd25lcigicm9vdCIpOyBncm91cCgiYWRtIik7IHBlcm0oMDY0MCk7IHN0YXRzX2ZyZXEoMCk7CisJICBiYWRfaG9zdG5hbWUoIl5nY29uZmQkIik7Cit9OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgU291cmNlcworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc3lza2xvZ2QgcGFja2FnZQorIyBMb2dzIG1heSBjb21lIGZyb20gdW5peCBzdHJlYW0sIGJ1dCBub3QgZnJvbSBhbm90aGVyIG1hY2hpbmUuCisjCitzb3VyY2Ugc19zcmMgeyB1bml4LWRncmFtKCIvZGV2L2xvZyIpOyBpbnRlcm5hbCgpOworICAgICAgIAkgICAgIGZpbGUoIi9wcm9jL2ttc2ciIHByb2dyYW1fb3ZlcnJpZGUoImtlcm5lbCIpKTsKK307CisKKyMgSWYgeW91IHdpc2ggdG8gZ2V0IGxvZ3MgZnJvbSByZW1vdGUgbWFjaGluZSB5b3Ugc2hvdWxkIHVuY29tbWVudAorIyB0aGlzIGFuZCBjb21tZW50IHRoZSBhYm92ZSBzb3VyY2UgbGluZS4KKyMKKyNzb3VyY2Ugc19uZXQgeyB0Y3AoaXAoMTI3LjAuMC4xKSBwb3J0KDEwMDApIGF1dGhlbnRpY2F0aW9uKHJlcXVpcmVkKSBlbmNyeXB0KGFsbG93KSk7IH07CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEZXN0aW5hdGlvbnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBGaXJzdCBzb21lIHN0YW5kYXJkIGxvZ2ZpbGUKKyMKK2Rlc3RpbmF0aW9uIGRfYXV0aCB7IGZpbGUoIi92YXIvbG9nL2F1dGgubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX2Nyb24geyBmaWxlKCIvdmFyL2xvZy9jcm9uLmxvZyIpOyB9OworZGVzdGluYXRpb24gZF9kYWVtb24geyBmaWxlKCIvdmFyL2xvZy9kYWVtb24ubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX2tlcm4geyBmaWxlKCIvdmFyL2xvZy9rZXJuLmxvZyIpOyB9OworZGVzdGluYXRpb24gZF9scHIgeyBmaWxlKCIvdmFyL2xvZy9scHIubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX21haWwgeyBmaWxlKCIvdmFyL2xvZy9tYWlsLmxvZyIpOyB9OworZGVzdGluYXRpb24gZF9zeXNsb2cgeyBmaWxlKCIvdmFyL2xvZy9zeXNsb2ciKTsgfTsKK2Rlc3RpbmF0aW9uIGRfdXNlciB7IGZpbGUoIi92YXIvbG9nL3VzZXIubG9nIik7IH07CitkZXN0aW5hdGlvbiBkX3V1Y3AgeyBmaWxlKCIvdmFyL2xvZy91dWNwLmxvZyIpOyB9OworCisjIFRoaXMgZmlsZXMgYXJlIHRoZSBsb2cgY29tZSBmcm9tIHRoZSBtYWlsIHN1YnN5c3RlbS4KKyMKK2Rlc3RpbmF0aW9uIGRfbWFpbGluZm8geyBmaWxlKCIvdmFyL2xvZy9tYWlsL21haWwuaW5mbyIpOyB9OworZGVzdGluYXRpb24gZF9tYWlsd2FybiB7IGZpbGUoIi92YXIvbG9nL21haWwvbWFpbC53YXJuIik7IH07CitkZXN0aW5hdGlvbiBkX21haWxlcnIgeyBmaWxlKCIvdmFyL2xvZy9tYWlsL21haWwuZXJyIik7IH07CisKKyMgTG9nZ2luZyBmb3IgSU5OIG5ld3Mgc3lzdGVtCisjCitkZXN0aW5hdGlvbiBkX25ld3Njcml0IHsgZmlsZSgiL3Zhci9sb2cvbmV3cy9uZXdzLmNyaXQiKTsgfTsKK2Rlc3RpbmF0aW9uIGRfbmV3c2VyciB7IGZpbGUoIi92YXIvbG9nL25ld3MvbmV3cy5lcnIiKTsgfTsKK2Rlc3RpbmF0aW9uIGRfbmV3c25vdGljZSB7IGZpbGUoIi92YXIvbG9nL25ld3MvbmV3cy5ub3RpY2UiKTsgfTsKKworIyBTb21lICdjYXRjaC1hbGwnIGxvZ2ZpbGVzLgorIworZGVzdGluYXRpb24gZF9kZWJ1ZyB7IGZpbGUoIi92YXIvbG9nL2RlYnVnIik7IH07CitkZXN0aW5hdGlvbiBkX2Vycm9yIHsgZmlsZSgiL3Zhci9sb2cvZXJyb3IiKTsgfTsKK2Rlc3RpbmF0aW9uIGRfbWVzc2FnZXMgeyBmaWxlKCIvdmFyL2xvZy9tZXNzYWdlcyIpOyB9OworCisjIFRoZSByb290J3MgY29uc29sZS4KKyMKK2Rlc3RpbmF0aW9uIGRfY29uc29sZSB7IHVzZXJ0dHkoInJvb3QiKTsgfTsKKworIyBWaXJ0dWFsIGNvbnNvbGUuCisjCitkZXN0aW5hdGlvbiBkX2NvbnNvbGVfYWxsIHsgZmlsZSgiL2Rldi90dHkxMCIpOyB9OworCisjIFRoZSBuYW1lZCBwaXBlIC9kZXYveGNvbnNvbGUgaXMgZm9yIHRoZSBuc29sZScgdXRpbGl0eS4gIFRvIHVzZSBpdCwKKyMgeW91IG11c3QgaW52b2tlIG5zb2xlJyB3aXRoIHRoZSAtZmlsZScgb3B0aW9uOgorIworIyAgICAkIHhjb25zb2xlIC1maWxlIC9kZXYveGNvbnNvbGUgWy4uLl0KKyMKK2Rlc3RpbmF0aW9uIGRfeGNvbnNvbGUgeyBwaXBlKCIvZGV2L3hjb25zb2xlIik7IH07CisKKyMgU2VuZCB0aGUgbWVzc2FnZXMgdG8gYW4gb3RoZXIgaG9zdAorIworI2Rlc3RpbmF0aW9uIGRfbmV0IHsgdGNwKCIxMjcuMC4wLjEiIHBvcnQoMTAwMCkgYXV0aGVudGljYXRpb24ob24pIGVuY3J5cHQob24pIGxvZ19maWZvX3NpemUoMTAwMCkpOyB9OworCisjIERlYmlhbiBvbmx5CitkZXN0aW5hdGlvbiBkX3BwcCB7IGZpbGUoIi92YXIvbG9nL3BwcC5sb2ciKTsgfTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEZpbHRlcnMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBIZXJlJ3MgY29tZSB0aGUgZmlsdGVyIG9wdGlvbnMuIFdpdGggdGhpcyBydWxlcywgd2UgY2FuIHNldCB3aGljaAorIyBtZXNzYWdlIGdvIHdoZXJlLgorCitmaWx0ZXIgZl9kYmcgeyBsZXZlbChkZWJ1Zyk7IH07CitmaWx0ZXIgZl9pbmZvIHsgbGV2ZWwoaW5mbyk7IH07CitmaWx0ZXIgZl9ub3RpY2UgeyBsZXZlbChub3RpY2UpOyB9OworZmlsdGVyIGZfd2FybiB7IGxldmVsKHdhcm4pOyB9OworZmlsdGVyIGZfZXJyIHsgbGV2ZWwoZXJyKTsgfTsKK2ZpbHRlciBmX2NyaXQgeyBsZXZlbChjcml0IC4uIGVtZXJnKTsgfTsKKworZmlsdGVyIGZfZGVidWcgeyBsZXZlbChkZWJ1ZykgYW5kIG5vdCBmYWNpbGl0eShhdXRoLCBhdXRocHJpdiwgbmV3cywgbWFpbCk7IH07CitmaWx0ZXIgZl9lcnJvciB7IGxldmVsKGVyciAuLiBlbWVyZykgOyB9OworZmlsdGVyIGZfbWVzc2FnZXMgeyBsZXZlbChpbmZvLG5vdGljZSx3YXJuKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgbm90IGZhY2lsaXR5KGF1dGgsYXV0aHByaXYsY3JvbixkYWVtb24sbWFpbCxuZXdzKTsgfTsKKworZmlsdGVyIGZfYXV0aCB7IGZhY2lsaXR5KGF1dGgsIGF1dGhwcml2KSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX2Nyb24geyBmYWNpbGl0eShjcm9uKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX2RhZW1vbiB7IGZhY2lsaXR5KGRhZW1vbikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl9rZXJuIHsgZmFjaWxpdHkoa2VybikgYW5kIG5vdCBmaWx0ZXIoZl9kZWJ1Zyk7IH07CitmaWx0ZXIgZl9scHIgeyBmYWNpbGl0eShscHIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfbG9jYWwgeyBmYWNpbGl0eShsb2NhbDAsIGxvY2FsMSwgbG9jYWwzLCBsb2NhbDQsIGxvY2FsNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsNiwgbG9jYWw3KSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX21haWwgeyBmYWNpbGl0eShtYWlsKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX25ld3MgeyBmYWNpbGl0eShuZXdzKSBhbmQgbm90IGZpbHRlcihmX2RlYnVnKTsgfTsKK2ZpbHRlciBmX3N5c2xvZzMgeyBub3QgZmFjaWxpdHkoYXV0aCwgYXV0aHByaXYsIG1haWwpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfdXNlciB7IGZhY2lsaXR5KHVzZXIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfdXVjcCB7IGZhY2lsaXR5KHV1Y3ApIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworCitmaWx0ZXIgZl9jbmV3cyB7IGxldmVsKG5vdGljZSwgZXJyLCBjcml0KSBhbmQgZmFjaWxpdHkobmV3cyk7IH07CitmaWx0ZXIgZl9jb3RoZXIgeyBsZXZlbChkZWJ1ZywgaW5mbywgbm90aWNlLCB3YXJuKSBvciBmYWNpbGl0eShkYWVtb24sIG1haWwpOyB9OworCitmaWx0ZXIgZl9wcHAgeyBmYWNpbGl0eShsb2NhbDIpIGFuZCBub3QgZmlsdGVyKGZfZGVidWcpOyB9OworZmlsdGVyIGZfY29uc29sZSB7IGxldmVsKHdhcm4gLi4gZW1lcmcpOyB9OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTG9nIHBhdGhzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2F1dGgpOyBkZXN0aW5hdGlvbihkX2F1dGgpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY3Jvbik7IGRlc3RpbmF0aW9uKGRfY3Jvbik7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9kYWVtb24pOyBkZXN0aW5hdGlvbihkX2RhZW1vbik7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9rZXJuKTsgZGVzdGluYXRpb24oZF9rZXJuKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2xwcik7IGRlc3RpbmF0aW9uKGRfbHByKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3N5c2xvZzMpOyBkZXN0aW5hdGlvbihkX3N5c2xvZyk7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl91c2VyKTsgZGVzdGluYXRpb24oZF91c2VyKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX3V1Y3ApOyBkZXN0aW5hdGlvbihkX3V1Y3ApOyB9OworCitsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tYWlsKTsgZGVzdGluYXRpb24oZF9tYWlsKTsgfTsKKyNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9tYWlsKTsgZmlsdGVyKGZfaW5mbyk7IGRlc3RpbmF0aW9uKGRfbWFpbGluZm8pOyB9OworI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX21haWwpOyBmaWx0ZXIoZl93YXJuKTsgZGVzdGluYXRpb24oZF9tYWlsd2Fybik7IH07CisjbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbWFpbCk7IGZpbHRlcihmX2Vycik7IGRlc3RpbmF0aW9uKGRfbWFpbGVycik7IH07CisKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX25ld3MpOyBmaWx0ZXIoZl9jcml0KTsgZGVzdGluYXRpb24oZF9uZXdzY3JpdCk7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9uZXdzKTsgZmlsdGVyKGZfZXJyKTsgZGVzdGluYXRpb24oZF9uZXdzZXJyKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX25ld3MpOyBmaWx0ZXIoZl9ub3RpY2UpOyBkZXN0aW5hdGlvbihkX25ld3Nub3RpY2UpOyB9OworI2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2NuZXdzKTsgZGVzdGluYXRpb24oZF9jb25zb2xlX2FsbCk7IH07CisjbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY290aGVyKTsgZGVzdGluYXRpb24oZF9jb25zb2xlX2FsbCk7IH07CisKKyNsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9wcHApOyBkZXN0aW5hdGlvbihkX3BwcCk7IH07CisKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2RlYnVnKTsgZGVzdGluYXRpb24oZF9kZWJ1Zyk7IH07Citsb2cgeyBzb3VyY2Uoc19zcmMpOyBmaWx0ZXIoZl9lcnJvcik7IGRlc3RpbmF0aW9uKGRfZXJyb3IpOyB9OworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfbWVzc2FnZXMpOyBkZXN0aW5hdGlvbihkX21lc3NhZ2VzKTsgfTsKKworbG9nIHsgc291cmNlKHNfc3JjKTsgZmlsdGVyKGZfY29uc29sZSk7IGRlc3RpbmF0aW9uKGRfY29uc29sZV9hbGwpOworCQkJCSAgICBkZXN0aW5hdGlvbihkX3hjb25zb2xlKTsgfTsKK2xvZyB7IHNvdXJjZShzX3NyYyk7IGZpbHRlcihmX2NyaXQpOyBkZXN0aW5hdGlvbihkX2NvbnNvbGUpOyB9OworCisjIEFsbCBtZXNzYWdlcyBzZW5kIHRvIGEgcmVtb3RlIHNpdGUKKyMKKyNsb2cgeyBzb3VyY2Uoc19zcmMpOyBkZXN0aW5hdGlvbihkX25ldCk7IH07CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLnNlcnZpY2UtdGhlLXN5c2xvZy1uZy1zZXJ2aWNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5zZXJ2aWNlLXRoZS1zeXNsb2ctbmctc2VydmljZS5wYXRjaAppbmRleCA2YjMwYzIwLi4zOWMzZjU5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLnNlcnZpY2UtdGhlLXN5c2xvZy1uZy1zZXJ2aWNlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuc2VydmljZS10aGUtc3lzbG9nLW5nLXNlcnZpY2UucGF0Y2gKQEAgLTcsMjUgKzcsNDAgQEAKIFVwc3RyZWFtLVN0YXR1czogcGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBMaSBYaW4gPGxpeGluLmZuc3RAY24uZnVqaXRzdS5jb20+CitVcGRhdGVkLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIC0tLQogIGNvbnRyaWIvc3lzdGVtZC9zeXNsb2ctbmcuc2VydmljZSB8IDUgKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nLnNlcnZpY2UgYi9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nLnNlcnZpY2UKLWluZGV4IGZjMTZmOGQuLjhlMDlkZWIgMTAwNjQ0Ci0tLS0gYS9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nLnNlcnZpY2UKLSsrKyBiL2NvbnRyaWIvc3lzdGVtZC9zeXNsb2ctbmcuc2VydmljZQotQEAgLTQsOCArNCw4IEBAIERlc2NyaXB0aW9uPVN5c3RlbSBMb2dnZXIgRGFlbW9uCi0gCi0gW1NlcnZpY2VdCitkaWZmIC0tZ2l0IGEvY29udHJpYi9zeXN0ZW1kL3N5c2xvZy1uZ0Auc2VydmljZSBiL2NvbnRyaWIvc3lzdGVtZC9zeXNsb2ctbmdALnNlcnZpY2UKK2luZGV4IGEyODY0MGUuLjkzYWVjOTQgMTAwNjQ0CistLS0gYS9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nQC5zZXJ2aWNlCisrKysgYi9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nQC5zZXJ2aWNlCitAQCAtNyw4ICs3LDggQEAgQ29uZmxpY3RzPWVtZXJnZW5jeS5zZXJ2aWNlIGVtZXJnZW5jeS50YXJnZXQKICBUeXBlPW5vdGlmeQotLUV4ZWNTdGFydD0vdXNyL3NiaW4vc3lzbG9nLW5nIC1GICRTWVNMT0dOR19PUFRTCisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL2RlZmF1bHQvc3lzbG9nLW5nQCVpCisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9zeXNsb2ctbmdAJWkKKy1FeGVjU3RhcnQ9L3Vzci9zYmluL3N5c2xvZy1uZyAtRiAkT1RIRVJfT1BUSU9OUyAtLWNmZ2ZpbGUgJENPTkZJR19GSUxFIC0tY29udHJvbCAkQ09OVFJPTF9GSUxFIC0tcGVyc2lzdC1maWxlICRQRVJTSVNUX0ZJTEUgLS1waWRmaWxlICRQSURfRklMRQogLUV4ZWNSZWxvYWQ9L2Jpbi9raWxsIC1IVVAgJE1BSU5QSUQKLStFeGVjU3RhcnQ9QFNCSU5ESVJAL3N5c2xvZy1uZyAtRiAkU1lTTE9HTkdfT1BUUyAtcCBATE9DQUxTVEFURURJUkAvcnVuL3N5c2xvZ2QucGlkCisrRXhlY1N0YXJ0PUBTQklORElSQC9zeXNsb2ctbmcgLUYgJE9USEVSX09QVElPTlMgLS1jZmdmaWxlICRDT05GSUdfRklMRSAtLWNvbnRyb2wgJENPTlRST0xfRklMRSAtLXBlcnNpc3QtZmlsZSAkUEVSU0lTVF9GSUxFIC0tcGlkZmlsZSAkUElEX0ZJTEUKICtFeGVjUmVsb2FkPUBCQVNFQklORElSQC9raWxsIC1IVVAgJE1BSU5QSUQKLSBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC9zeXNsb2ctbmcKLSBFbnZpcm9ubWVudEZpbGU9LS9ldGMvc3lzY29uZmlnL3N5c2xvZy1uZwogIFN0YW5kYXJkT3V0cHV0PWpvdXJuYWwKKyBTdGFuZGFyZEVycm9yPWpvdXJuYWwKKyBSZXN0YXJ0PW9uLWZhaWx1cmUKK2RpZmYgLS1naXQgYS9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nQGRlZmF1bHQgYi9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nQGRlZmF1bHQKK2luZGV4IDAyZGEyODguLjNhODIxNWQgMTAwNjQ0CistLS0gYS9jb250cmliL3N5c3RlbWQvc3lzbG9nLW5nQGRlZmF1bHQKKysrKyBiL2NvbnRyaWIvc3lzdGVtZC9zeXNsb2ctbmdAZGVmYXVsdAorQEAgLTEsNSArMSw1IEBACistQ09ORklHX0ZJTEU9L2V0Yy9zeXNsb2ctbmcuY29uZgorLVBFUlNJU1RfRklMRT0vdmFyL2xpYi9zeXNsb2ctbmcvc3lzbG9nLW5nLnBlcnNpc3QKKy1DT05UUk9MX0ZJTEU9L3Zhci9saWIvc3lzbG9nLW5nL3N5c2xvZy1uZy5jdGwKKy1QSURfRklMRT0vdmFyL3J1bi9zeXNsb2ctbmcucGlkCisrQ09ORklHX0ZJTEU9L2V0Yy9zeXNsb2ctbmcvc3lzbG9nLW5nLmNvbmYKKytQRVJTSVNUX0ZJTEU9QExPQ0FMU1RBVEVESVJAL2xpYi9zeXNsb2ctbmcvc3lzbG9nLW5nLnBlcnNpc3QKKytDT05UUk9MX0ZJTEU9QExPQ0FMU1RBVEVESVJAL2xpYi9zeXNsb2ctbmcvc3lzbG9nLW5nLmN0bAorK1BJRF9GSUxFPUBMT0NBTFNUQVRFRElSQC9ydW4vc3lzbG9nLW5nLnBpZAorIE9USEVSX09QVElPTlM9Ii0tZW5hYmxlLWNvcmUiCisKIC0tIAogMS44LjQuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCmluZGV4IDc3MWNkYjEuLmI1MmRlZmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCkBAIC0xMywxNSArMTMsMTggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0YzBjNWNiMmM4M2Q5ZjJhYjcyNTQ4MWU0ZGY1MjQwIgogCiAjIHV0aWwtbGludXggYWRkZWQgdG8gZ2V0IGxpYnV1aWQKLURFUEVORFMgPSAibGlicGNyZSBmbGV4IGV2ZW50bG9nIGdsaWItMi4wIG9wZW5zc2wgdXRpbC1saW51eCIKK0RFUEVORFMgPSAibGlicGNyZSBmbGV4IGdsaWItMi4wIG9wZW5zc2wgdXRpbC1saW51eCIKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFsYWJpdC9zeXNsb2ctbmcvcmVsZWFzZXMvZG93bmxvYWQvJHtCUH0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy1uZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1uZy5jb25mLnN5c3RlbWQgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLW5nLmNvbmYuc3lzdmluaXQgXAogICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCiAgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc3lzbG9nLW5nIFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWVuYWJsZS10aHJlYWQtdGxzLXRvLW1hbmFnZS0ucGF0Y2ggXAogIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JhbGFiaXQvc3lzbG9nLW5nL3JlbGVhc2VzIgorCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwZGF0ZS1yYy5kCiAKIEVYVFJBX09FQ09ORiA9ICIgXApAQCAtNjcsMTUgKzcwLDggQEAKIAljZCAkb2xkZGlyCiB9CiAKLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtTfS9jb250cmliL3N5c3RlbWQvKi5zZXJ2aWNlCi0gICAgc2VkIC1pIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7U30vY29udHJpYi9zeXN0ZW1kLyouc2VydmljZQotICAgIHNlZCAtaSAtZSAncyxAQkFTRUJJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgJHtTfS9jb250cmliL3N5c3RlbWQvKi5zZXJ2aWNlCi19Ci0KIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZiAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKICAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8KQEAgLTgzLDE2ICs3OSw0MyBAQAogICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0KICAgICAjIFJlbW92ZSAvdmFyL3J1biBhcyBpdCBpcyBjcmVhdGVkIG9uIHN0YXJ0dXAKICAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCisKKyAgICAjIHN1cHBvcnQgZm9yIHN5c3RlbWQKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS8ke0JQTn0uY29uZgorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbnRyaWIvc3lzdGVtZC8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59QC5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NvbnRyaWIvc3lzdGVtZC8ke0JQTn1AZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfUBkZWZhdWx0CisKKyAgICAgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfUAuc2VydmljZSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfUBkZWZhdWx0CisgICAgICAgIHNlZCAtaSAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8ke0JQTn1AZGVmYXVsdAorICAgICAgICBzZWQgLWkgLWUgJ3MsQEJBU0VCSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfUAuc2VydmljZSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfUBkZWZhdWx0CisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cworICAgICAgICBsbiAtc2YgLi4vJHtCUE59QC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzLyR7QlBOfUBkZWZhdWx0LnNlcnZpY2UKKyAgICBlbHNlCisgICAgICAgIGluc3RhbGwgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKKyAgICBmaQogfQogCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pbmNsdWRlL3NjbC8gJHtkYXRhZGlyfS94c2QgJHtkYXRhZGlyfS90b29scyIKLVJERVBFTkRTXyR7UE59ICs9ICJnYXdrIgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaW5jbHVkZS9zY2wvICR7ZGF0YWRpcn0veHNkICR7ZGF0YWRpcn0vdG9vbHMgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy8qIgorUkRFUEVORFNfJHtQTn0gKz0gImdhd2sgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCdqc29uJywnJHtQTn0tamNvbmYnLCcnLGQpfSIKKworRklMRVNfJHtQTn0tamNvbmYgKz0gIiBcCiske2RhdGFkaXJ9LyR7QlBOfS9pbmNsdWRlL3NjbC9jaW0gXAorJHtkYXRhZGlyfS8ke0JQTn0vaW5jbHVkZS9zY2wvZWxhc3RpY3NlYXJjaCBcCiske2RhdGFkaXJ9LyR7QlBOfS9pbmNsdWRlL3NjbC9ld21tIFwKKyR7ZGF0YWRpcn0vJHtCUE59L2luY2x1ZGUvc2NsL2dyYXlsb2cyIFwKKyR7ZGF0YWRpcn0vJHtCUE59L2luY2x1ZGUvc2NsL2xvZ2dseSBcCiske2RhdGFkaXJ9LyR7QlBOfS9pbmNsdWRlL3NjbC9sb2dtYXRpYyBcCisiCiAKICMgVGhpcyBvdmVyY29tZXMgdGhlIHN5c2xvZy1uZyByZGVwZW5kcyBvbiBzeXNsb2ctbmctZGV2IFFBIEVycm9yCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGlicyAke1BOfS1saWJzLWRldiAke1BOfS1saWJzLWRiZyIKK1BBQ0tBR0VTID0rICIke1BOfS1qY29uZiAke1BOfS1saWJzICR7UE59LWxpYnMtZGV2IgorUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQTn0tbGlicy1kYmciCiBGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2xpYmRpcn0vbGlic3lzbG9nLW5nLSouc28qIgogRklMRVNfJHtQTn0tbGlicy1kZXYgPSAiJHtsaWJkaXJ9LyR7QlBOfS9saWIqLmxhIgotRklMRVNfJHtQTn0tbGlicy1kYmcgPSAiJHtsaWJkaXJ9LyR7QlBOfS8uZGVidWciCiBGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vbGlidGVzdC8qLmEiCiBJTlNBTkVfU0tJUF8ke1BOfS1saWJzID0gImRldi1zbyIKIFJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWJzIgpAQCAtMTA4LDcgKzEzMSw3IEBACiBSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfUAuc2VydmljZSIKIAogSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDIwIDIgMyA0IDUgLiBzdG9wIDkwIDAgMSA2IC4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nXzMuMTYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmdfMy4xNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZjQyY2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nXzMuMTYuMS5iYgpAQCAtMCwwICsxLDE2IEBACityZXF1aXJlIHN5c2xvZy1uZy5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFsYWJpdC9zeXNsb2ctbmcvcmVsZWFzZXMvZG93bmxvYWQvJHtCUH0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1uZy5jb25mLnN5c3RlbWQgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLW5nLmNvbmYuc3lzdmluaXQgXAorICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfc3lzbG9nLW5nIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWVuYWJsZS10aHJlYWQtdGxzLXRvLW1hbmFnZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZy1saWJuZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWludmFsaWQtb3duZXJzaGlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1uZy5zZXJ2aWNlLXRoZS1zeXNsb2ctbmctc2VydmljZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2xvZy1uZy1maXgtc2VnbWVudC1mYXVsdC1kdXJpbmctc2VydmljZS1zdGFydC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjcyZDQ0YWQwMmMyZTliYTA3NDhiM2VjZDNmMTVhN2ZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3ZWU2ZjFkNWU5OGQ4NmYxOTE5NjRlNTgwMTExYmZhNzEwODFlY2JiMzI3NWNlYTAzNWJiYmExNzdiNzNhMjkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nXzMuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL3N5c2xvZy1uZ18zLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFhMGU0Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nXzMuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBzeXNsb2ctbmcuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovL2ZpeC1jb25maWctbGlibmV0LnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LWludmFsaWQtb3duZXJzaGlwLnBhdGNoIFwKLSAgICBmaWxlOi8vRml4LXRoZS1tZW1vcnktbGVhay1wcm9ibGVtLXdoZW4tSEFWRV9FTlZJUk9OLWRlZmluZWQucGF0Y2ggXAotICAgIGZpbGU6Ly9zeXNsb2ctbmcuc2VydmljZS10aGUtc3lzbG9nLW5nLXNlcnZpY2UucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWNmMTQ1NjNjZjVjZTQzNWRiOGRiMzU0ODZjZTY2YWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRiMDgxZjZlNWY5OGNiYzUyMDUyZTM0MmJjZmRjNWRlNWZlMGViZTlmNWVjMzJmZTllYWVjNTc1OTIyNGNjNSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzL2ZpbGVzLzAwMDEtZG8tbm90LXN0cmlwLXBkYXRhX3Rvb2xzLWF0LWRvX2luc3RhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90aGluLXByb3Zpc2lvbmluZy10b29scy9maWxlcy8wMDAxLWRvLW5vdC1zdHJpcC1wZGF0YV90b29scy1hdC1kb19pbnN0YWxsLnBhdGNoCmluZGV4IGI0Y2RkYTEuLjU0Nzk0OWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzL2ZpbGVzLzAwMDEtZG8tbm90LXN0cmlwLXBkYXRhX3Rvb2xzLWF0LWRvX2luc3RhbGwucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvZmlsZXMvMDAwMS1kby1ub3Qtc3RyaXAtcGRhdGFfdG9vbHMtYXQtZG9faW5zdGFsbC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZThiZTQwMmUyMGNiZGZiZDgxOTJhMTcxYWM5OTA0ZDkzNjIxMDNiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGU4NjlhZDJjYjE5ZDgxMjU3YTE1OTc3MGViZTI3NTkzYTcxNTkzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMDE6MzU6NDAgLTA0MDAKK0RhdGU6IFR1ZSwgMzEgSnVsIDIwMTggMTE6Mjk6NTEgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZG8gbm90IHN0cmlwIHBkYXRhX3Rvb2xzIGF0IGRvX2luc3RhbGwKIAogSXQgY2F1c2VkIFFBIElzc3VlOgpAQCAtMTcsMTEgKzE3LDExIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDQyNjQxOTEuLmFjMjIwNDIgMTAwNjQ0CitpbmRleCAwMmI3NWRkLi5kZjU5MGI0IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTg5LDcgKzE4OSw2IEBAIGRpc3RjbGVhbjogY2xlYW4KLSBpbnN0YWxsOiBiaW4vcGRhdGFfdG9vbHMKK0BAIC0yNjcsNyArMjY3LDYgQEAgTUFOUEFHRVM6PSQocGF0c3Vic3QgJSxtYW44LyUuOCwkKFRPT0xTKSkKKyBpbnN0YWxsOiBiaW4vcGRhdGFfdG9vbHMgJChNQU5QQUdFUykKICAJJChJTlNUQUxMX0RJUikgJChCSU5ESVIpCiAgCSQoSU5TVEFMTF9QUk9HUkFNKSBiaW4vcGRhdGFfdG9vbHMgJChCSU5ESVIpCiAtCSQoU1RSSVApICQoQklORElSKS9wZGF0YV90b29scwpAQCAtMjksNSArMjksNSBAQAogIAlsbiAtcyAtZiBwZGF0YV90b29scyAkKEJJTkRJUikvY2FjaGVfZHVtcAogIAlsbiAtcyAtZiBwZGF0YV90b29scyAkKEJJTkRJUikvY2FjaGVfbWV0YWRhdGFfc2l6ZQogLS0gCi0yLjguMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvZmlsZXMvMDAwMS1maXgtY29tcGlsZS1mYWlsZWQtd2l0aC1saWJjLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90aGluLXByb3Zpc2lvbmluZy10b29scy9maWxlcy8wMDAxLWZpeC1jb21waWxlLWZhaWxlZC13aXRoLWxpYmMtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGI0NGRhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvZmlsZXMvMDAwMS1maXgtY29tcGlsZS1mYWlsZWQtd2l0aC1saWJjLW11c2wucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBmY2JjZjljNDk0Y2NhMTY2MTA2YWU0Y2IwM2MxZGQxMzVlZTRmMjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxIEF1ZyAyMDE4IDA5OjM0OjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBjb21waWxlIGZhaWxlZCB3aXRoIGxpYmMgbXVzbAorCitUaGVyZSBpcyBhIGZhaWx1cmUgd2hpbGUgY29tcGlsaW5nIHdpdGggbGliYyBtdXNsOgorW3NuaXBdCit8Li9ibG9jay1jYWNoZS9pb19lbmdpbmUuaDoxODoxNzogZXJyb3I6IGV4cGVjdGVkCit1bnF1YWxpZmllZC1pZCBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAorfCAgdW5zaWduZWQgY29uc3QgUEFHRV9TSVpFID0gNDA5NjsKK1tzbmlwXQorCitUaGUgbXVzbCBkZWZlaW5lcyBtYWNybyBQQUdFX1NJWkUsIHVuZGVmIGl0IGNvbmRpdGlvbmFsbHkKK2NvdWxkIGZpeCB0aGUgaXNzdWUuCisKK2h0dHA6Ly9tdXNsLm9wZW53YWxsLm5hcmtpdmUuY29tL3RPOHZySGRQL3doeS1tdXNsLWRlZmluZS1wYWdlLXNpemUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2dpdDovL2dpdGh1Yi5jb20vanRob3JuYmVyL3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibG9jay1jYWNoZS9pb19lbmdpbmUuaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Jsb2NrLWNhY2hlL2lvX2VuZ2luZS5oIGIvYmxvY2stY2FjaGUvaW9fZW5naW5lLmgKK2luZGV4IDE3MDQyNTEuLmUzNmI5MzIgMTAwNjQ0CistLS0gYS9ibG9jay1jYWNoZS9pb19lbmdpbmUuaAorKysrIGIvYmxvY2stY2FjaGUvaW9fZW5naW5lLmgKK0BAIC0xMiw2ICsxMiwxMCBAQAorIAorIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKy8vIE11c2wgZGVmaW5lcworKyNpZmRlZiBQQUdFX1NJWkUKKysjdW5kZWYgUEFHRV9TSVpFCisrI2VuZGlmCisgbmFtZXNwYWNlIGJjYWNoZSB7CisgCXVzaW5nIHNlY3Rvcl90ID0gdWludDY0X3Q7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzL3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzXzAuNi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvdGhpbi1wcm92aXNpb25pbmctdG9vbHNfMC42LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM5ZDY2OTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvdGhpbi1wcm92aXNpb25pbmctdG9vbHNfMC42LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2xzIG9mIGRtLXRoaW4gZGV2aWNlLW1hcHBlciIKLURFU0NSSVBUSU9OID0gIkEgc3VpdGUgb2YgdG9vbHMgZm9yIG1hbmlwdWxhdGluZyB0aGUgbWV0YWRhdGEgb2YgdGhlIGRtLXRoaW4gZGV2aWNlLW1hcHBlciB0YXJnZXQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2p0aG9ybmJlci90aGluLXByb3Zpc2lvbmluZy10b29scyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qdGhvcm5iZXIvdGhpbi1wcm92aXNpb25pbmctdG9vbHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3Qtc3RyaXAtcGRhdGFfdG9vbHMtYXQtZG9faW5zdGFsbC5wYXRjaCBcCi0iCi0KLVNSQ1JFViA9ICI0OWJmYzEyZTljNzk1NmMxYWMxMzRiMjRhZmJlMWE2YTYwMmNlN2Q1IgotCi1ERVBFTkRTICs9ICJleHBhdCBsaWJhaW8gYm9vc3QiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvdGhpbi1wcm92aXNpb25pbmctdG9vbHNfMC43LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90aGluLXByb3Zpc2lvbmluZy10b29scy90aGluLXByb3Zpc2lvbmluZy10b29sc18wLjcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGNiMTdhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGhpbi1wcm92aXNpb25pbmctdG9vbHMvdGhpbi1wcm92aXNpb25pbmctdG9vbHNfMC43LjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJUb29scyBvZiBkbS10aGluIGRldmljZS1tYXBwZXIiCitERVNDUklQVElPTiA9ICJBIHN1aXRlIG9mIHRvb2xzIGZvciBtYW5pcHVsYXRpbmcgdGhlIG1ldGFkYXRhIG9mIHRoZSBkbS10aGluIGRldmljZS1tYXBwZXIgdGFyZ2V0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qdGhvcm5iZXIvdGhpbi1wcm92aXNpb25pbmctdG9vbHMiCitMSUNFTlNFID0gIkdQTHYzIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vanRob3JuYmVyL3RoaW4tcHJvdmlzaW9uaW5nLXRvb2xzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZG8tbm90LXN0cmlwLXBkYXRhX3Rvb2xzLWF0LWRvX2luc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29tcGlsZS1mYWlsZWQtd2l0aC1saWJjLW11c2wucGF0Y2ggXAorIgorCitTUkNSRVYgPSAiNmY5MzY5OTJiOGU2MjA4YTc4MzhmY2YxZWM4N2M1YmQzYTY5NGE3NyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworREVQRU5EUyArPSAiZXhwYXQgbGliYWlvIGJvb3N0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQwNzkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrcy8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoCkBAIC0wLDAgKzEsNzcgQEAKK0Zyb20gNjRmMDUxOTYzZDZjZGVlYmQxOWY5ZTdmMGE3ZTU4NGExZjdhY2M2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDExIEF1ZyAyMDE4IDE5OjEyOjU3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oCisKK2ZpeGVzIGJ1aWxkIHdpdGggZ2xpYmMgMi4yOCsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2RhZW1vbi5jICAgICAgICAgIHwgMSArCisgc3JjL2RldmljZS5jICAgICAgICAgIHwgMSArCisgc3JjL21vdW50LW1vbml0b3IuYyAgIHwgMSArCisgdG9vbHMvdWRpc2tzLmMgICAgICAgIHwgMSArCisgdG9vbHMvdW1vdW50LXVkaXNrcy5jIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24uYyBiL3NyYy9kYWVtb24uYworaW5kZXggMTRlOTUyZi4uMmM2MWNmYiAxMDA2NDQKKy0tLSBhL3NyYy9kYWVtb24uYworKysrIGIvc3JjL2RhZW1vbi5jCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2RldmljZS5jIGIvc3JjL2RldmljZS5jCitpbmRleCBkNzNmOWQ2Li41OTExZDc4IDEwMDY0NAorLS0tIGEvc3JjL2RldmljZS5jCisrKysgYi9zcmMvZGV2aWNlLmMKK0BAIC0yOSw2ICsyOSw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorZGlmZiAtLWdpdCBhL3NyYy9tb3VudC1tb25pdG9yLmMgYi9zcmMvbW91bnQtbW9uaXRvci5jCitpbmRleCA1NzNhNjljLi5jY2YzMzY1IDEwMDY0NAorLS0tIGEvc3JjL21vdW50LW1vbml0b3IuYworKysrIGIvc3JjL21vdW50LW1vbml0b3IuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPG1udGVudC5oPgorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL3VkaXNrcy5jIGIvdG9vbHMvdWRpc2tzLmMKK2luZGV4IGQzMDE1OWIuLmYyNGEzMGEgMTAwNjQ0CistLS0gYS90b29scy91ZGlza3MuYworKysrIGIvdG9vbHMvdWRpc2tzLmMKK0BAIC0yOSw2ICsyOSw3IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvd2FpdC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorZGlmZiAtLWdpdCBhL3Rvb2xzL3Vtb3VudC11ZGlza3MuYyBiL3Rvb2xzL3Vtb3VudC11ZGlza3MuYworaW5kZXggMjgxM2ZlMC4uNWNmNmI0ZCAxMDA2NDQKKy0tLSBhL3Rvb2xzL3Vtb3VudC11ZGlza3MuYworKysrIGIvdG9vbHMvdW1vdW50LXVkaXNrcy5jCitAQCAtMjksNiArMjksNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8cHdkLmg+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMi8wMDAxLWRhdGEtZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrczIvMDAwMS1kYXRhLWZpeC1vdXQtb2YtdHJlZS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNiZDg3Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMi8wMDAxLWRhdGEtZml4LW91dC1vZi10cmVlLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA3ZmRkNGFjZGY2ZGFmOTVjNWNjNzRlOTY4ZjQ3MTA1MTNjOGRkYWVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTg6MzM6NTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGF0YTogZml4IG91dCBvZiB0cmVlIGJ1aWxkCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXwgc2VkOiBjYW4ndCByZWFkIHVkaXNrczIuc2VydmljZS5pbjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yYWdlZC1wcm9qZWN0L3VkaXNrcy9wdWxsLzUxMAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgotLS0tCi0gZGF0YS9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2RhdGEvTWFrZWZpbGUuYW0gYi9kYXRhL01ha2VmaWxlLmFtCi1pbmRleCBkZGY5ZTNkNi4uYjM4OTI4YzggMTAwNjQ0Ci0tLS0gYS9kYXRhL01ha2VmaWxlLmFtCi0rKysgYi9kYXRhL01ha2VmaWxlLmFtCi1AQCAtMjIsNyArMjIsNyBAQCBzeXN0ZW1kc2VydmljZWRpciAgICAgICA9ICQoc3lzdGVtZHN5c3RlbXVuaXRkaXIpCi0gc3lzdGVtZHNlcnZpY2VfREFUQSAgICAgPSAkKHN5c3RlbWRzZXJ2aWNlX2luX2ZpbGVzOi5zZXJ2aWNlLmluPS5zZXJ2aWNlKQotIAotICQoc3lzdGVtZHNlcnZpY2VfREFUQSk6IHVkaXNrczIuc2VydmljZS5pbiBNYWtlZmlsZQotLQlAc2VkIC1lICJzfFxAdWRpc2tzZHByaXZkaXJcQHwkKGxpYmV4ZWNkaXIpL3VkaXNrczJ8IiB1ZGlza3MyLnNlcnZpY2UuaW4gPiB1ZGlza3MyLnNlcnZpY2UKLSsJQHNlZCAtZSAic3xcQHVkaXNrc2Rwcml2ZGlyXEB8JChsaWJleGVjZGlyKS91ZGlza3MyfCIgJChzcmNkaXIpL3VkaXNrczIuc2VydmljZS5pbiA+IHVkaXNrczIuc2VydmljZQotIGVuZGlmCi0gCi0gdWRldnJ1bGVzZGlyID0gJCh1ZGV2ZGlyKS9ydWxlcy5kCi0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDIyYWZkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJ1ZGlza3MgcHJvdmlkZXMgZGJ1cyBpbnRlcmZhY2VzIGZvciBkaXNrcyBhbmQgc3RvcmFnZSBkZXZpY2VzIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQ3OWY2ZGJiZmZkYmM4ZTg2YjA4NmE4ZjBjMGVmNDMiCi0KLURFUEVORFMgPSAiIFwKLSAgICBhY2wgXAotICAgIGxpYmF0YXNtYXJ0IFwKLSAgICBwb2xraXQgXAotICAgIGxpYmd1ZGV2IFwKLSAgICBkYnVzLWdsaWIgXAotICAgIGdsaWItMi4wIFwKLSAgICBsaWJibG9ja2RldiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBnbm9tZS1jb21tb24tbmF0aXZlIFwKLSAgICBsaWJ4c2x0LW5hdGl2ZSBcCi0iCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgotCi1SREVQRU5EU18ke1BOfSA9ICJhY2wiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL3N0b3JhZ2VkLXByb2plY3QvdWRpc2tzLmdpdCBcCi0gICAgZmlsZTovLzAwMDEtZGF0YS1maXgtb3V0LW9mLXRyZWUtYnVpbGQucGF0Y2ggXAotICAgIGZpbGU6Ly9ub24tZ251LWxpYmMucGF0Y2ggXAotIgotU1JDUkVWID0gImI2NDcxZjJlOTlmNmFhMTEzM2FmMGRlNjU4ZjFmYTA1Yzc0ODkzMmMiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DVkVfUFJPRFVDVCA9ICJ1ZGlza3MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4gLS1kaXNhYmxlLWd0ay1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xLyBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24gXAotICAgICR7bGliZGlyfS9wb2xraXQtMS9leHRlbnNpb25zLyouc28gXAotICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8qIFwKLSAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3MyXzIuNy44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YjMzOGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzMl8yLjcuOC5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gInVkaXNrcyBwcm92aWRlcyBkYnVzIGludGVyZmFjZXMgZm9yIGRpc2tzIGFuZCBzdG9yYWdlIGRldmljZXMiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDc5ZjZkYmJmZmRiYzhlODZiMDg2YThmMGMwZWY0MyIKKworREVQRU5EUyA9ICIgXAorICAgIGFjbCBcCisgICAgbGliYXRhc21hcnQgXAorICAgIHBvbGtpdCBcCisgICAgbGliZ3VkZXYgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZ2xpYi0yLjAgXAorICAgIGxpYmJsb2NrZGV2IFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAorICAgIGxpYnhzbHQtbmF0aXZlIFwKKyIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59ID0gImFjbCIKKworU1JDX1VSSSA9ICIgXAorICAgIGdpdDovL2dpdGh1Yi5jb20vc3RvcmFnZWQtcHJvamVjdC91ZGlza3MuZ2l0O2JyYW5jaD0yLjcueC1icmFuY2ggXAorICAgIGZpbGU6Ly9ub24tZ251LWxpYmMucGF0Y2ggXAorIgorU1JDUkVWID0gIjQ3YmMwMTQxY2I4NDYyNGJhMWUyMjQyZDU5NmE4OWEzMGRmMWY1ZWEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitDVkVfUFJPRFVDVCA9ICJ1ZGlza3MiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1tYW4gLS1kaXNhYmxlLWd0ay1kb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xLyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24gXAorICAgICR7bGliZGlyfS9wb2xraXQtMS9leHRlbnNpb25zLyouc28gXAorICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKKyAgICAke2V4ZWNfcHJlZml4fSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRpc2tzMi8qIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYnMiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzXzEuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWRpc2tzL3VkaXNrc18xLjAuNS5iYgppbmRleCBlMzMyNjYwLi43Y2Q5OTkyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91ZGlza3MvdWRpc2tzXzEuMC41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VkaXNrcy91ZGlza3NfMS4wLjUuYmIKQEAgLTExLDEzICsxMSwxMyBAQAogICAgIGRidXMtZ2xpYi1uYXRpdmUgXAogIgogCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2hhbC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5nejtuYW1lPSR7QlBOfSBcCi0gICAgZmlsZTovL29wdGlvbmFsLWRlcGVuZHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW5ld2VyLWdsaWJjLXZlcnNpb25zLnBhdGNoIFwKLSAgICBmaWxlOi8vdWRpc2tzLTEuMC41LWZpeC1zZXJ2aWNlLWZpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLU1ha2UtdWRldi1ydWxlcy1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSIKK1NSQ19VUkkgPSAiaHR0cDovL2hhbC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci5nejtuYW1lPSR7QlBOfSBcCisgICAgICAgICAgIGZpbGU6Ly9vcHRpb25hbC1kZXBlbmRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWJ1aWxkLXdpdGgtbmV3ZXItZ2xpYmMtdmVyc2lvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdWRpc2tzLTEuMC41LWZpeC1zZXJ2aWNlLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXVkZXYtcnVsZXMtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW3VkaXNrcy5tZDVzdW1dID0gIjcwZDQ4ZGNmZTUyM2E3NGNkN2M3ZmJiYzI4NDdmY2RkIgogU1JDX1VSSVt1ZGlza3Muc2hhMjU2c3VtXSA9ICJmMmVjODJlYjBlYTdlMDFkYzI5OWI1YjI5YjNjMThjZGY4NjEyMzZlYzQzZGNmZjY2YjM1NTJiNGIzMWM2ZjcxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWh1YmN0bC91aHViY3RsXzIuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWh1YmN0bC91aHViY3RsXzIuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMDZkZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aHViY3RsL3VodWJjdGxfMi4wLjAuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJVU0IgaHViIHBlci1wb3J0IHBvd2VyIGNvbnRyb2wiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbXZwL3VodWJjdGwiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tdnAvdWh1YmN0bC9pc3N1ZXMiCitERVBFTkRTID0gImxpYnVzYjEiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbXZwLyR7UE59L2FyY2hpdmUvdiR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YzcxMTkxMWQ3NjZkNzY4MTMzMzNjMzgxMjI3NzU3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzMxMjc4YjJjMDNlNWJlNWE2OTZjMzA4OGJjODZjZjI1NTdhNzBlMDBmNjk3Nzk5YzE2M2FiYTE4ZTNjNDBlIgorCisjIHVodWJjdGwgZ2V0cyBpdHMgcHJvZ3JhbSB2ZXJzaW9uIGZyb20gImdpdCBkZXNjcmliZSIuIEFzIHdlIHVzZSB0aGUgc291cmNlCisjIGFyY2hpdmUgZG8gcmVkdWNlIGRvd25sb2FkIHNpemUgcmVwbGFjZSB0aGUgY2FsbCB3aXRoIG91ciBoYXJkY29kZWQgdmVyc2lvbi4KK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisgICAgc2VkIC1pICJzL15cKEdJVF9WRVJTSU9OIDo9XCkuKiQvXDEgJHtQVn0vZyIgJHtTfS9NYWtlZmlsZQorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91bml4b2RiYy91bml4b2RiY18yLjMuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy42LmJiCmluZGV4IDYyZDlkYjguLjI2NzRkMzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VuaXhvZGJjL3VuaXhvZGJjXzIuMy42LmJiCkBAIC0xNCw2ICsxNCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYTg2MjlmZDI5NTNiMDRiNDYzOWQwYTlkOGE1Y2Y5ZDEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODhiNjM3ZjY0N2MwNTJlY2MzODYxYTNiYWEyNzVjM2I1MDNiMTkzYjZhNDlmZjhjMjhiMjU2ODY1NmQxNGQ2OSIKIAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidW5peE9EQkMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCiBTID0gIiR7V09SS0RJUn0vdW5peE9EQkMtJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyLzAwMDEtbGludXgtbG93ZXItc2V2ZXJpdHktb2YtdW5oYW5kbGVkLWFjdGlvbi1tZXNzYWdlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXIvMDAwMS1saW51eC1sb3dlci1zZXZlcml0eS1vZi11bmhhbmRsZWQtYWN0aW9uLW1lc3NhZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlODlkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyLzAwMDEtbGludXgtbG93ZXItc2V2ZXJpdHktb2YtdW5oYW5kbGVkLWFjdGlvbi1tZXNzYWdlcy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGY2NGI2Y2U4MDU0YjQ3ZTViZGNjOGM0Yzc5NjU1MzRiMzg4ZTYxNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEbWl0cnkgVG9yb2tob3YgPGRtaXRyeS50b3Jva2hvdkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDYgQXByIDIwMTggMTE6MjY6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGludXg6IGxvd2VyIHNldmVyaXR5IG9mICJ1bmhhbmRsZWQgYWN0aW9uIiBtZXNzYWdlcworCitOZXdlciBrZXJuZWxzIGVtaXQgYmluZC91bmJpbmQgdWV2ZW50cyB0aGF0IGFyZSBub3Qgb2YgaW50ZXJlc3QgdG8KK3Bvd2VyZC4gVG8gYXZvaWQgbGl0dGVyaW5nIGxvZ3Mgd2l0aCBzY2FyeSBtZXNzYWdlcywgbGV0J3MgbG93ZXIgdGhlaXIKK3NldmVyaXR5IHRvICJkZWJ1ZyIuCisKK2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjAxOQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CistLS0KKyBzcmMvbGludXgvdXAtYmFja2VuZC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpbnV4L3VwLWJhY2tlbmQuYyBiL3NyYy9saW51eC91cC1iYWNrZW5kLmMKK2luZGV4IGU2NjhkYzguLmI4MDIxZTcgMTAwNjQ0CistLS0gYS9zcmMvbGludXgvdXAtYmFja2VuZC5jCisrKysgYi9zcmMvbGludXgvdXAtYmFja2VuZC5jCitAQCAtMjczLDcgKzI3Myw3IEBAIHVwX2JhY2tlbmRfdWV2ZW50X3NpZ25hbF9oYW5kbGVyX2NiIChHVWRldkNsaWVudCAqY2xpZW50LCBjb25zdCBnY2hhciAqYWN0aW9uLAorIAkJZ19kZWJ1ZyAoIlNZU0ZTIGNoYW5nZSAlcyIsIGdfdWRldl9kZXZpY2VfZ2V0X3N5c2ZzX3BhdGggKGRldmljZSkpOworIAkJdXBfYmFja2VuZF9kZXZpY2VfY2hhbmdlZCAoYmFja2VuZCwgZGV2aWNlKTsKKyAJfSBlbHNlIHsKKy0JCWdfd2FybmluZyAoInVuaGFuZGxlZCBhY3Rpb24gJyVzJyBvbiAlcyIsIGFjdGlvbiwgZ191ZGV2X2RldmljZV9nZXRfc3lzZnNfcGF0aCAoZGV2aWNlKSk7CisrCQlnX2RlYnVnICgidW5oYW5kbGVkIGFjdGlvbiAnJXMnIG9uICVzIiwgYWN0aW9uLCBnX3VkZXZfZGV2aWNlX2dldF9zeXNmc19wYXRoIChkZXZpY2UpKTsKKyAJfQorIH0KKyAKKy0tIAorMi4xNy4wLjQ4NC5nMGM4NzI2MzE4Yy1nb29nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cG93ZXIvdXBvd2VyXzAuOTkuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS43LmJiCmluZGV4IDk3M2ZiZTcuLjJjZjMxNjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Vwb3dlci91cG93ZXJfMC45OS43LmJiCkBAIC00LDcgKzQsMTAgQEAKIAogREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGlidXNiMSBsaWJndWRldiBnbGliLTIuMCBkYnVzLWdsaWIgcG9sa2l0IgogCi1TUkNfVVJJID0gImh0dHA6Ly91cG93ZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL3Vwb3dlci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtbGludXgtbG93ZXItc2V2ZXJpdHktb2YtdW5oYW5kbGVkLWFjdGlvbi1tZXNzYWdlcy5wYXRjaCBcCisiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjM2YmI0MzlkOWZmMTE1MTQ1MGIzZDg1ODIzOTk1MzIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjRiY2MyZjZhYjI1YTI1MzNiYWM3MGI1ODdiY2IwMTllNTkxMjkzMDc2OTIwZjViNWUwNGJkZWRjMTQwYTQwMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC44LjQuYmIKaW5kZXggYjRiZTg1My4uYmZjZGY4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjguNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cmlwYXJzZXIvdXJpcGFyc2VyXzAuOC40LmJiCkBAIC0xMiwzICsxMiw1IEBACiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5YWFiZGMzNjExNTQ2ZjU1M2Y0YWYzNzIxNjdkZTZkNiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZTdjY2RhNDEzNjk3NDg4OTIzMWU4NDI2YTc4NWU3NTc4ZTY2YTYyODMwMDljZmQxM2YxYjI0YTVlNjU3YjIzIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnMva2VybmVsLTQuMTgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnMva2VybmVsLTQuMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlYWEzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVycy9rZXJuZWwtNC4xOC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitEZXNjcmlwdGlvbjogRml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBuZXcga2VybmVsIDQuMTgKK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czpQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorSW5kZXg6IHZib3hfbW9kdWxlL3Zib3hzZi91dGlscy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdmJveF9tb2R1bGUub3JpZy92Ym94c2YvdXRpbHMuYworKysrIHZib3hfbW9kdWxlL3Zib3hzZi91dGlscy5jCitAQCAtNTAsNyArNTAsMTEgQEAgc3RhdGljIHZvaWQgc2ZfdGltZXNwZWNfZnJvbV9mdGltZShSVFRJTQorICAgICBSVFRpbWVTcGVjU2V0TmFubyh0cywgdCk7CisgfQorICNlbHNlIC8qID49IDIuNi4wICovCisrI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDE4LCAwKQorIHN0YXRpYyB2b2lkIHNmX2Z0aW1lX2Zyb21fdGltZXNwZWMoc3RydWN0IHRpbWVzcGVjICp0diwgUlRUSU1FU1BFQyAqdHMpCisrI2Vsc2UKKytzdGF0aWMgdm9pZCBzZl9mdGltZV9mcm9tX3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYzY0ICp0diwgUlRUSU1FU1BFQyAqdHMpCisrI2VuZGlmCisgeworICAgICBpbnQ2NF90IHQgPSBSVFRpbWVTcGVjR2V0TmFubyh0cyk7CisgICAgIGludDY0X3QgbnNlYzsKK0BAIC02MCw3ICs2NCwxMSBAQCBzdGF0aWMgdm9pZCBzZl9mdGltZV9mcm9tX3RpbWVzcGVjKHN0cnVjCisgICAgIHR2LT50dl9uc2VjID0gbnNlYzsKKyB9CisgCisrI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDE4LCAwKQorIHN0YXRpYyB2b2lkIHNmX3RpbWVzcGVjX2Zyb21fZnRpbWUoUlRUSU1FU1BFQyAqdHMsIHN0cnVjdCB0aW1lc3BlYyAqdHYpCisrI2Vsc2UKKytzdGF0aWMgdm9pZCBzZl90aW1lc3BlY19mcm9tX2Z0aW1lKFJUVElNRVNQRUMgKnRzLCBzdHJ1Y3QgdGltZXNwZWM2NCAqdHYpCisrI2VuZGlmCisgeworICAgICBpbnQ2NF90IHQgPSAoaW50NjRfdCl0di0+dHZfbnNlYyArIChpbnQ2NF90KXR2LT50dl9zZWMgKiAxMDAwMDAwMDAwOworICAgICBSVFRpbWVTcGVjU2V0TmFubyh0cywgdCk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4yLjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMi4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTRjYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMi4xOC5iYgpAQCAtMCwwICsxLDc4IEBACitTVU1NQVJZID0gIlZpcnR1YWxCb3ggTGludXggR3Vlc3QgRHJpdmVycyIKK1NFQ1RJT04gPSAiY29yZSIKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vJHtWQk9YX05BTUV9L0NPUFlJTkc7bWQ1PWUxOTdkNTY0MWJiMzViMjlkNDZjYThjNGJmN2YyNjYwIgorCitERVBFTkRTID0gInZpcnR1YWwva2VybmVsIgorCitpbmhlcml0IG1vZHVsZSBrZXJuZWwtbW9kdWxlLXNwbGl0CisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0KSIKKworVkJPWF9OQU1FID0gIlZpcnR1YWxCb3gtJHtQVn0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpcnR1YWxib3gub3JnL3ZpcnR1YWxib3gvJHtQVn0vJHtWQk9YX05BTUV9LnRhci5iejIgXAorICAgIGZpbGU6Ly9NYWtlZmlsZS51dGlscyBcCisgICAgZmlsZTovL2tlcm5lbC00LjE4LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOGUyOTE1MjViODQ1NjkzNTY3NzNlZWY1MDdjNDljZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDBhN2VmZDU2YzdmMzlmYWU3OWM3ZWMzMzIxNDczZGE0MTJlZjBkNzkxNDQ1N2I2NmY0MjY3OWQ1MTNlZmNmIgorCitTID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCisKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5fRElSPScke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkJyIKKworYWRkdGFzayBleHBvcnRfc291cmNlcyBiZWZvcmUgZG9fcGF0Y2ggYWZ0ZXIgZG9fdW5wYWNrCisKK2RvX2V4cG9ydF9zb3VyY2VzKCkgeworICAgIG1rZGlyIC1wICIke1N9IgorICAgICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9leHBvcnRfbW9kdWxlcy5zaCAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKKyAgICB0YXIgLUMgIiR7U30iIC14emYgJHtUfS92Ym94X21vZHVsZXMudGFyLmd6CisKKyAgICAjIGFkZCBhIG1vdW50IHV0aWxpdHkgdG8gdXNlIHNoYXJlZCBmb2xkZXIgZnJvbSBWQm94IEFkZGl0aW9uIFNvdXJjZSBDb2RlCisgICAgbWtkaXIgLXAgIiR7U30vdXRpbHMiCisgICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy9tb3VudC52Ym94c2YuYyAke1N9L3V0aWxzCisgICAgaW5zdGFsbCAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvc2hhcmVkZm9sZGVycy92YnNmbW91bnQuYyAke1N9L3V0aWxzCisgICAgaW5zdGFsbCAke1N9Ly4uL01ha2VmaWxlLnV0aWxzICR7U30vdXRpbHMvTWFrZWZpbGUKKworfQorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHZib3hndWVzdGRyaXZlcnMvNS4yLjYtcjAvdmJveF9tb2R1bGUvdmJveGd1ZXN0L01ha2VmaWxlLmluY2x1ZGUuaGVhZGVyOjk5OiAqKiogVGhlIHZhcmlhYmxlIEtFUk5fRElSIG11c3QgYmUgYSBrZXJuZWwgYnVpbGQgZm9sZGVyIGFuZCBlbmQgd2l0aCAvYnVpbGQgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoLCBvciBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCisgICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjoxMDg6ICoqKiBUaGUga2VybmVsIGJ1aWxkIGZvbGRlciBwYXRoIG11c3QgZW5kIGluIDx2ZXJzaW9uPi9idWlsZCwgb3IgdGhlIHZhcmlhYmxlIEtFUk5fVkVSIG11c3QgYmUgc2V0LiAgU3RvcC4KKyAgICBta2RpciAtcCAke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059CisgICAgbG4gLXNuZiAke1NUQUdJTkdfS0VSTkVMX0RJUn0gJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorfQorCisjIGNvbXBpbGUgYW5kIGluc3RhbGwgbW91bnQgdXRpbGl0eQorZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgb2VfcnVubWFrZSAnTEQ9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIC1DICR7U30vdXRpbHMKKyAgICBpZiAhIFsgLWUgdmJveGd1ZXN0LmtvIC1hIC1lIHZib3hzZi5rbyAtYSAtZSB2Ym94dmlkZW8ua28gXSA7IHRoZW4KKyAgICAgICAgZWNobyAiRVJST1I6IE9uZSBvZiB2Ym94Ki5rbyBtb2R1bGVzIHdhc24ndCBidWlsdCIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKK30KKworbW9kdWxlX2RvX2luc3RhbGwoKSB7CisgICAgTU9EVUxFX0RJUj0ke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC9taXNjCisgICAgaW5zdGFsbCAtZCAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hndWVzdC5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hzZi5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3h2aWRlby5rbyAkTU9EVUxFX0RJUgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3V0aWxzL21vdW50LnZib3hzZiAke0R9JHtiYXNlX3NiaW5kaXJ9Cit9CisKK1BBQ0tBR0VTICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKKworRklMRVNfJHtQTn0gPSAiJHtiYXNlX3NiaW5kaXJ9IgorCisjIGF1dG9sb2FkIGlmIGluc3RhbGxlZAorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidmJveGd1ZXN0IHZib3hzZiB2Ym94dmlkZW8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4yLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNS4yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwMGRiNGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzUuMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCi1TRUNUSU9OID0gImNvcmUiCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCi0KLVZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vTWFrZWZpbGUudXRpbHMgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTczMWVhOWM1YzMxMDk2ZWM0YzJhM2JmYmEyNjY2NWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUyNzU5ZDQ3YjBiNGFjODFiOGI2NzFjOTQ4NWM4N2ZiMmRiMTJjMDk3YjNlN2U2OWI5NGMxMjkxYTgwODRlOCIKLQotUyA9ICIke1dPUktESVJ9L3Zib3hfbW9kdWxlIgotCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0g9IiR7QVJDSH0iCi1leHBvcnQgQlVJTERfVEFSR0VUX0FSQ0hfeDg2LTY0PSJhbWQ2NCIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJOX0RJUj0nJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZCciCi0KLWFkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX3VucGFjawotCi1kb19leHBvcnRfc291cmNlcygpIHsKLSAgICBta2RpciAtcCAiJHtTfSIKLSAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMuc2ggJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0gICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotCi0gICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQotICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCi0KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjo5OTogKioqIFRoZSB2YXJpYWJsZSBLRVJOX0RJUiBtdXN0IGJlIGEga2VybmVsIGJ1aWxkIGZvbGRlciBhbmQgZW5kIHdpdGggL2J1aWxkIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaCwgb3IgS0VSTl9WRVIgbXVzdCBiZSBzZXQuICBTdG9wLgotICAgICMgdmJveGd1ZXN0ZHJpdmVycy81LjIuNi1yMC92Ym94X21vZHVsZS92Ym94Z3Vlc3QvTWFrZWZpbGUuaW5jbHVkZS5oZWFkZXI6MTA4OiAqKiogVGhlIGtlcm5lbCBidWlsZCBmb2xkZXIgcGF0aCBtdXN0IGVuZCBpbiA8dmVyc2lvbj4vYnVpbGQsIG9yIHRoZSB2YXJpYWJsZSBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCi0gICAgbWtkaXIgLXAgJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfQotICAgIGxuIC1zbmYgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9ICR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQKLX0KLQotIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgIG9lX3J1bm1ha2UgJ0xEPSR7Q0N9JyAnTERGTEFHUz0ke0xERkxBR1N9JyAtQyAke1N9L3V0aWxzCi0gICAgaWYgISBbIC1lIHZib3hndWVzdC5rbyAtYSAtZSB2Ym94c2Yua28gLWEgLWUgdmJveHZpZGVvLmtvIF0gOyB0aGVuCi0gICAgICAgIGVjaG8gIkVSUk9SOiBPbmUgb2YgdmJveCoua28gbW9kdWxlcyB3YXNuJ3QgYnVpbHQiCi0gICAgICAgIGV4aXQgMQotICAgIGZpCi19Ci0KLW1vZHVsZV9kb19pbnN0YWxsKCkgewotICAgIE1PRFVMRV9ESVI9JHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9rZXJuZWwvbWlzYwotICAgIGluc3RhbGwgLWQgJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94Z3Vlc3Qua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94c2Yua28gJE1PRFVMRV9ESVIKLSAgICBpbnN0YWxsIC1tIDY0NCB2Ym94dmlkZW8ua28gJE1PRFVMRV9ESVIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgJHtTfS91dGlscy9tb3VudC52Ym94c2YgJHtEfSR7YmFzZV9zYmluZGlyfQotfQotCi1QQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi1SUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS12Ym94Z3Vlc3Qga2VybmVsLW1vZHVsZS12Ym94c2Yga2VybmVsLW1vZHVsZS12Ym94dmlkZW8iCi0KLUZJTEVTXyR7UE59ID0gIiR7YmFzZV9zYmluZGlyfSIKLQotIyBhdXRvbG9hZCBpZiBpbnN0YWxsZWQKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInZib3hndWVzdCB2Ym94c2YgdmJveHZpZGVvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL0NWRS0yMDE3LTE3MDg3LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL0NWRS0yMDE3LTE3MDg3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzdiOWJhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9DVkUtMjAxNy0xNzA4Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gOWMxMWY4MDMzOTM3MmI3YWEyZjQzMTUzZDU3NGYyYjVhYmI3OTcwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMTcgRGVjIDIwMTcgMjM6MDk6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdmltOiBwYXRjaCA4LjAuMTI2Mzogb3RoZXJzIGNhbiByZWFkIHRoZSBzd2FwIGZpbGUgaWYgYSB1c2VyCi0gaXMgY2FyZWxlc3MKLQotUHJvYmxlbTogICAgT3RoZXJzIGNhbiByZWFkIHRoZSBzd2FwIGZpbGUgaWYgYSB1c2VyIGlzIGNhcmVsZXNzIHdpdGggaGlzCi0gICAgICAgICAgICBwcmltYXJ5IGdyb3VwLgotU29sdXRpb246ICAgSWYgdGhlIGdyb3VwIHBlcm1pc3Npb24gYWxsb3dzIGZvciByZWFkaW5nIGJ1dCB0aGUgd29ybGQKLSAgICAgICAgICAgIHBlcm1pc3Npb25zIGRvZXNuJ3QsIG1ha2Ugc3VyZSB0aGUgZ3JvdXAgaXMgcmlnaHQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctMTcwODcKLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9maWxlaW8uYyAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKy0KLSBzcmMvdmVyc2lvbi5jIHwgIDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwotaW5kZXggZjU0ZmI4NDY1Li4yYzc3NDBhZjkgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlsZWlvLmMKLSsrKyBiL3NyYy9maWxlaW8uYwotQEAgLTcxNiw3ICs3MTYsMjkgQEAgcmVhZGZpbGUoCi0gCS8qIFNldCBzd2FwIGZpbGUgcHJvdGVjdGlvbiBiaXRzIGFmdGVyIGNyZWF0aW5nIGl0LiAqLwotIAlpZiAoc3dhcF9tb2RlID4gMCAmJiBjdXJidWYtPmJfbWwubWxfbWZwICE9IE5VTEwKLSAJCQkgICYmIGN1cmJ1Zi0+Yl9tbC5tbF9tZnAtPm1mX2ZuYW1lICE9IE5VTEwpCi0tCSAgICAodm9pZCltY2hfc2V0cGVybShjdXJidWYtPmJfbWwubWxfbWZwLT5tZl9mbmFtZSwgKGxvbmcpc3dhcF9tb2RlKTsKLSsJewotKwkgICAgY2hhcl91ICpzd2FwX2ZuYW1lID0gY3VyYnVmLT5iX21sLm1sX21mcC0+bWZfZm5hbWU7Ci0rCi0rCSAgICAvKgotKwkgICAgICogSWYgdGhlIGdyb3VwLXJlYWQgYml0IGlzIHNldCBidXQgbm90IHRoZSB3b3JsZC1yZWFkIGJpdCwgdGhlbgotKwkgICAgICogdGhlIGdyb3VwIG11c3QgYmUgZXF1YWwgdG8gdGhlIGdyb3VwIG9mIHRoZSBvcmlnaW5hbCBmaWxlLiAgSWYKLSsJICAgICAqIHdlIGNhbid0IG1ha2UgdGhhdCBoYXBwZW4gdGhlbiByZXNldCB0aGUgZ3JvdXAtcmVhZCBiaXQuICBUaGlzCi0rCSAgICAgKiBhdm9pZHMgbWFraW5nIHRoZSBzd2FwIGZpbGUgcmVhZGFibGUgdG8gbW9yZSB1c2VycyB3aGVuIHRoZQotKwkgICAgICogcHJpbWFyeSBncm91cCBvZiB0aGUgdXNlciBpcyB0b28gcGVybWlzc2l2ZS4KLSsJICAgICAqLwotKwkgICAgaWYgKChzd2FwX21vZGUgJiAwNDQpID09IDA0MCkKLSsJICAgIHsKLSsJCXN0YXRfVAlzd2FwX3N0OwotKwotKwkJaWYgKG1jaF9zdGF0KChjaGFyICopc3dhcF9mbmFtZSwgJnN3YXBfc3QpID49IDAKLSsJCQkmJiBzdC5zdF9naWQgIT0gc3dhcF9zdC5zdF9naWQKLSsJCQkmJiBmY2hvd24oY3VyYnVmLT5iX21sLm1sX21mcC0+bWZfZmQsIC0xLCBzdC5zdF9naWQpCi0rCQkJCQkJCQkJID09IC0xKQotKwkJICAgIHN3YXBfbW9kZSAmPSAwNjAwOwotKwkgICAgfQotKwotKwkgICAgKHZvaWQpbWNoX3NldHBlcm0oc3dhcF9mbmFtZSwgKGxvbmcpc3dhcF9tb2RlKTsKLSsJfQotICNlbmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uYyBiL3NyYy92ZXJzaW9uLmMKLWluZGV4IGE1Y2IwNzhmMC4uNWMwZGY0NzVmIDEwMDY0NAotLS0tIGEvc3JjL3ZlcnNpb24uYwotKysrIGIvc3JjL3ZlcnNpb24uYwotQEAgLTc3MCw2ICs3NzAsOCBAQCBzdGF0aWMgY2hhciAqKGZlYXR1cmVzW10pID0KLSBzdGF0aWMgaW50IGluY2x1ZGVkX3BhdGNoZXNbXSA9Ci0geyAgIC8qIEFkZCBuZXcgcGF0Y2ggbnVtYmVyIGJlbG93IHRoaXMgbGluZSAqLwotIC8qKi8KLSsgICAgMTI2MywKLSsvKiovCi0gICAgIDk4MywKLSAvKiovCi0gICAgIDk4MiwKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvZGlzYWJsZV9hY2xfaGVhZGVyX2NoZWNrLnBhdGNoCmluZGV4IDY1ZTVmNTguLjQ3MjAwMDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy9kaXNhYmxlX2FjbF9oZWFkZXJfY2hlY2sucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaApAQCAtMSwxNCArMSwyMyBAQAotVXBzdHJlYW0tU3RhdHVzOiBwZW5kaW5nCitGcm9tIDVlZDI1YzA3NmExZmIxODg5YTNjNTBkZGRmMjlmMjE4NTBiNTlhMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4gCitEYXRlOiBUdWUsIDI2IEp1biAyMDE4IDE3OjI5OjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRpc2FibGUgYWNsIGhlYWRlciBjaGVjawogCiBEb24ndCBjaGVjayAnc3lzL2FjbC5oJyBpZiBhY2wgc3VwcG9ydCBkaXNhYmxlZCBmb3IgdmltL3ZpbS10aW55LgogCitVcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKKwogU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvY29uZmlndXJlLmFjIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKIGRpZmYgLS1naXQgYS9zcmMvY29uZmlndXJlLmFjIGIvc3JjL2NvbmZpZ3VyZS5hYwotaW5kZXggZmI5NjVlNS4uZDczNDA2NCAxMDA2NDQKK2luZGV4IDEwN2MxNzAuLjBlZTg2YWQgMTAwNjQ0CiAtLS0gYS9zcmMvY29uZmlndXJlLmFjCiArKysgYi9zcmMvY29uZmlndXJlLmFjCi1AQCAtMjUxMSw3ICsyNTExLDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhzdGRhcmcuaCBzdGRpbnQuaCBzdGRsaWIuaCBzdHJpbmcuaCBcCitAQCAtMzIyMCw3ICszMjIwLDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhzdGRpbnQuaCBzdGRsaWIuaCBzdHJpbmcuaCBcCiAgCXN5cy9zeXN0ZW1pbmZvLmggbG9jYWxlLmggc3lzL3N0cmVhbS5oIHRlcm1pb3MuaCBcCiAgCWxpYmMuaCBzeXMvc3RhdGZzLmggcG9sbC5oIHN5cy9wb2xsLmggcHdkLmggXAogIAl1dGltZS5oIHN5cy9wYXJhbS5oIGxpYmludGwuaCBsaWJnZW4uaCBcCkBAIC0xNywxMSArMjYsMTQgQEAKICAJc3lzL2FjY2Vzcy5oIHN5cy9zeXNpbmZvLmggd2NoYXIuaCB3Y3R5cGUuaCkKICAKICBkbmwgc3lzL3B0ZW0uaCBkZXBlbmRzIG9uIHN5cy9zdHJlYW0uaCBvbiBTb2xhcmlzCi1AQCAtMzExMiw2ICszMTEyLDcgQEAgQUNfQVJHX0VOQUJMRShhY2wsCitAQCAtMzg0OCw2ICszODQ4LDcgQEAgQUNfQVJHX0VOQUJMRShhY2wsCiAgCSwgW2VuYWJsZV9hY2w9InllcyJdKQogIGlmIHRlc3QgIiRlbmFibGVfYWNsIiA9ICJ5ZXMiOyB0aGVuCi0gQUNfTVNHX1JFU1VMVChubykKLStBQ19DSEVDS19IRUFERVJTKHN5cy9hY2wuaCkKLSBBQ19DSEVDS19MSUIocG9zaXgxZSwgYWNsX2dldF9maWxlLCBbTElCUz0iJExJQlMgLWxwb3NpeDFlIl0sCisgICBBQ19NU0dfUkVTVUxUKG5vKQorKyAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMvYWNsLmgpCisgICBBQ19DSEVDS19MSUIocG9zaXgxZSwgYWNsX2dldF9maWxlLCBbTElCUz0iJExJQlMgLWxwb3NpeDFlIl0sCiAgCUFDX0NIRUNLX0xJQihhY2wsIGFjbF9nZXRfZmlsZSwgW0xJQlM9IiRMSUJTIC1sYWNsIgogIAkJICBBQ19DSEVDS19MSUIoYXR0ciwgZmdldHhhdHRyLCBMSUJTPSIkTElCUyAtbGF0dHIiLCwpXSwsKSwpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS9maWxlcy92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaAppbmRleCA2YzYyMGY5Li4zNzkxNGQ0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvdmltLWFkZC1rbm9iLXdoZXRoZXItZWxmLmgtYXJlLWNoZWNrZWQucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL3ZpbS1hZGQta25vYi13aGV0aGVyLWVsZi5oLWFyZS1jaGVja2VkLnBhdGNoCkBAIC0xLDIwICsxLDI0IEBACi12aW06IGFkZCBrbm9iIHdoZXRoZXIgZWxmLmggYXJlIGNoZWNrZWQKK0Zyb20gMzhkZTRiY2NkYjhhODYxZmZkZDQ0N2YxMmZkYWIxOWQ2ZDg1MmMwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENob25nIEx1IDxDaG9uZy5MdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNiBKdW4gMjAxOCAxNzozNDoxNSArMDgwMAorU3ViamVjdDogW1BBVENIXSB2aW06IGFkZCBrbm9iIHdoZXRoZXIgZWxmLmggYXJlIGNoZWNrZWQKIAogUHJldmlvdXNseSwgaXQgc3RpbGwgd2FzIGNoZWNrZWQgd2hlbiB0aGVyZSB3YXMgbm8gZWxmIGxpYnJhcnkgaW4gc3lzcm9vdHMgZGlyZWN0b3J5LgogQWRkIGtub2IgdG8gZGVjaWRlIHdoZXRoZXIgZWxmLmggYXJlIGNoZWNrZWQgb3Igbm90LgogCi1VcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvY29uZmlndXJlLmFjIHwgICAgNyArKysrKysrCisgc3JjL2NvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9jb25maWd1cmUuYWMgYi9zcmMvY29uZmlndXJlLmFjCi1pbmRleCBkNzM0MDY0Li5mNTA0ZmE2IDEwMDY0NAoraW5kZXggMGVlODZhZC4uNjQ3MzZmMCAxMDA2NDQKIC0tLSBhL3NyYy9jb25maWd1cmUuYWMKICsrKyBiL3NyYy9jb25maWd1cmUuYWMKLUBAIC0yNDgzLDExICsyNDgzLDE4IEBAIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkaW8uaD5dLCBbaW50IHggX19hdHRyaWJ1dGVfXygodW51c2VkKSk7XSwKK0BAIC0zMTkyLDExICszMTkyLDE4IEBAIEFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3RkaW8uaD5dLCBbaW50IHggX19hdHRyaWJ1dGVfXygodW51c2VkKSk7XSwKICAJQUNfTVNHX1JFU1VMVChubykpCiAgCiAgZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgpAQCAtMzQsNSArMzgsNSBAQAogIEFDX0hFQURFUl9ESVJFTlQKICAKIC0tIAotMS43LjkuNQorMi43LjQKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMC4wOTgzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMC4wOTgzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjhmMmI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjAuMDk4My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgdmltXyR7UFZ9LmJiCi0KLVNVTU1BUlkgKz0gIiAod2l0aCB0aW55IGZlYXR1cmVzKSIKLQotUEFDS0FHRUNPTkZJRyArPSAidGlueSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vdmltICR7RH0vJHtiaW5kaXJ9L3ZpbS50aW55Ci19Ci0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgotQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmluZGlyfS92aW0udGlueSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjEuMDM0Ny5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjEuMDM0Ny5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjFmYjdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMS4wMzQ3LmJiCkBAIC0wLDAgKzEsMTUgQEAKK3JlcXVpcmUgdmltXyR7UFZ9LmJiCisKK1NVTU1BUlkgKz0gIiAod2l0aCB0aW55IGZlYXR1cmVzKSIKKworUFJPVklERVNfcmVtb3ZlID0gInh4ZCIKK0FMVEVSTkFUSVZFXyR7UE59X3JlbW92ZSA9ICJ4eGQiCisKK1BBQ0tBR0VDT05GSUcgKz0gInRpbnkiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7U30vdmltICR7RH0vJHtiaW5kaXJ9L3ZpbS50aW55Cit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgorQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmluZGlyfS92aW0udGlueSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMC4wOTgzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGM4NjhjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4wLjA5ODMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJWaSBJTXByb3ZlZCAtIGVuaGFuY2VkIHZpIGVkaXRvciIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLURFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKLSMgdmltZGlmZiBkb2Vzbid0IGxpa2UgYnVzeWJveCBkaWZmCi1SU1VHR0VTVFNfJHtQTn0gPSAiZGlmZnV0aWxzIgotTElDRU5TRSA9ICJ2aW0iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9ydW50aW1lL2RvYy91Z2FuZGEudHh0O21kNT1lZWEzMmFjMTQyNGJiYTE0MDk2NzM2YTQ5NGFlOTA0NSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZpbS92aW0uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaDtwYXRjaGRpcj0uLiBcCi0gICAgICAgICAgIGZpbGU6Ly92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNzA4Ny5wYXRjaDtwYXRjaGRpcj0uLiBcCi0iCi1TUkNSRVYgPSAiM2Y5YTFmZjE0MTQxMmU5ZTg1ZjdkZmY0N2QwMjk0NmNiOWJlOTIyOCIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9zcmMiCi0KLVZJTURJUiA9ICJ2aW0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1DTEVBTkJST0tFTiA9ICIxIgotCi0jIHZpbSBjb25maWd1cmUuaW4gY29udGFpbnMgZnVuY3Rpb25zIHdoaWNoIGdvdCAnZHJvcHBlZCcgYnkgYXV0b3Rvb2xzLmJiY2xhc3MKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgcm0gLWYgYXV0by8qCi0gICAgdG91Y2ggYXV0by9jb25maWcubWsKLSAgICBhY2xvY2FsCi0gICAgYXV0b2NvbmYKLSAgICBvZV9ydW5jb25mCi0gICAgdG91Y2ggYXV0by9jb25maWd1cmUKLSAgICB0b3VjaCBhdXRvL2NvbmZpZy5tayBhdXRvL2NvbmZpZy5oCi19Ci0KLSNBdmFpbGFibGUgUEFDS0FHRUNPTkZJRyBvcHRpb25zIGFyZSBndGtndWksIGFjbCwgeDExLCB0aW55Ci1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbZ3RrZ3VpXSA9ICItLWVuYWJsZS1ndGsyLXRlc3QgLS1lbmFibGUtZ3VpPWd0azIsLS1lbmFibGUtZ3VpPW5vLGd0ayssIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgseHQsIgotUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLXdpdGgtZmVhdHVyZXM9dGlueSwtLXdpdGgtZmVhdHVyZXM9YmlnLCwiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCwiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGYtY2hlY2ssLGVsZnV0aWxzLCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLWdwbSBcCi0gICAgLS1kaXNhYmxlLWd0a3Rlc3QgXAotICAgIC0tZGlzYWJsZS14aW0gXAotICAgIC0tZGlzYWJsZS1uZXRiZWFucyBcCi0gICAgLS13aXRoLXRsaWI9bmN1cnNlcyBcCi0gICAgYWNfY3Zfc21hbGxfd2NoYXJfdD1ubyBcCi0gICAgdmltX2N2X2dldGN3ZF9icm9rZW49bm8gXAotICAgIHZpbV9jdl9tZW1tb3ZlX2hhbmRsZXNfb3ZlcmxhcD15ZXMgXAotICAgIHZpbV9jdl9zdGF0X2lnbm9yZXNfc2xhc2g9bm8gXAotICAgIHZpbV9jdl90ZXJtaW5mbz15ZXMgXAotICAgIHZpbV9jdl90Z2VudD1ub24temVybyBcCi0gICAgdmltX2N2X3RvdXBwZXJfYnJva2VuPW5vIFwKLSAgICB2aW1fY3ZfdHR5X2dyb3VwPXdvcmxkIFwKLSAgICBTVFJJUD0vYmluL3RydWUgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0KLSAgICAjIFdvcmsgYXJvdW5kIGZpbGUtcmRlcHMgcGlja2luZyB1cCBjc2gsIGF3aywgcGVybCBvciBweXRob24gYXMgYSBkZXAKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL3ZpbTEzMgotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvbXZlLmF3awotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5wbAotICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvKi5weQotCi0gICAgIyBJbnN0YWxsIGV4YW1wbGUgdmltcmMgZnJvbSBydW50aW1lIGZpbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL3J1bnRpbWUvdmltcmNfZXhhbXBsZS52aW0gJHtEfS8ke2RhdGFkaXJ9LyR7QlBOfS92aW1yYwotCi0gICAgIyB3ZSB1c2UgLS13aXRoLWZlYXR1cmVzPWJpZyBhcyBkZWZhdWx0Ci0gICAgbXYgJHtEfSR7YmluZGlyfS8ke0JQTn0gJHtEfSR7YmluZGlyfS8ke0JQTn0uJHtCUE59Ci19Ci0KLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNvbW1vbiAke1BOfS1zeW50YXggJHtQTn0taGVscCAke1BOfS10dXRvciAke1BOfS12aW1yYyAke1BOfS10b29scyIKLUZJTEVTXyR7UE59LXN5bnRheCA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vc3ludGF4IgotRklMRVNfJHtQTn0taGVscCA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vZG9jIgotRklMRVNfJHtQTn0tdHV0b3IgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3R1dG9yICR7YmluZGlyfS8ke0JQTn10dXRvciIKLUZJTEVTXyR7UE59LXZpbXJjID0gIiR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjIgotRklMRVNfJHtQTn0tZGF0YSA9ICIke2RhdGFkaXJ9LyR7QlBOfSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scyIKLUZJTEVTXyR7UE59LWNvbW1vbiA9ICIgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS8qLnZpbSBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2F1dG9sb2FkIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vY29sb3JzIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vY29tcGlsZXIgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9mdHBsdWdpbiBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2luZGVudCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2tleW1hcCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2xhbmcgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9tYWNyb3MgXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9wbHVnaW4gXAotICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9wcmludCBcCi0gICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3NwZWxsIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSIKLQotUkRFUEVORFNfJHtCUE59ID0gIm5jdXJzZXMtdGVybWluZm8tYmFzZSIKLSMgUmVjb21tZW5kIHRoYXQgcnVudGltZSBkYXRhIGlzIGluc3RhbGxlZCBhbG9uZyB3aXRoIHZpbQotUlJFQ09NTUVORFNfJHtCUE59ID0gIiR7UE59LXN5bnRheCAke1BOfS1oZWxwICR7UE59LXR1dG9yICR7UE59LXZpbXJjICR7UE59LWNvbW1vbiIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAidmkgdmltIgotQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmluZGlyfS8ke0JQTn0uJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3ZpXSA9ICIke2Jhc2VfYmluZGlyfS92aSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt2aW1dID0gIiR7YmluZGlyfS92aW0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbV84LjEuMDM0Ny5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4xLjAzNDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZkMjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4xLjAzNDcuYmIKQEAgLTAsMCArMSwxMTcgQEAKK1NVTU1BUlkgPSAiVmkgSU1wcm92ZWQgLSBlbmhhbmNlZCB2aSBlZGl0b3IiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK1BST1ZJREVTID0gInh4ZCIKK0RFUEVORFMgPSAibmN1cnNlcyBnZXR0ZXh0LW5hdGl2ZSIKKyMgdmltZGlmZiBkb2Vzbid0IGxpa2UgYnVzeWJveCBkaWZmCitSU1VHR0VTVFNfJHtQTn0gPSAiZGlmZnV0aWxzIgorTElDRU5TRSA9ICJ2aW0iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9ydW50aW1lL2RvYy91Z2FuZGEudHh0O2VuZGxpbmU9Mjg3O21kNT1mMWY4MmI0MjM2MDAwNWM3MGI4YzE5YjBlZjQ5M2Y3MiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZpbS92aW0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfYWNsX2hlYWRlcl9jaGVjay5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly92aW0tYWRkLWtub2Itd2hldGhlci1lbGYuaC1hcmUtY2hlY2tlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisiCitTUkNSRVYgPSAiZjFjMTE4YmU5MzE4NGU4ZTU3ZTNlODBiMWIzMzgzZjQ2NGVkNjQ5ZSIKKworUyA9ICIke1dPUktESVJ9L2dpdC9zcmMiCisKK1ZJTURJUiA9ICJ2aW0ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcworCitDTEVBTkJST0tFTiA9ICIxIgorCisjIHZpbSBjb25maWd1cmUuaW4gY29udGFpbnMgZnVuY3Rpb25zIHdoaWNoIGdvdCAnZHJvcHBlZCcgYnkgYXV0b3Rvb2xzLmJiY2xhc3MKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgcm0gLWYgYXV0by8qCisgICAgdG91Y2ggYXV0by9jb25maWcubWsKKyAgICBhY2xvY2FsCisgICAgYXV0b2NvbmYKKyAgICBvZV9ydW5jb25mCisgICAgdG91Y2ggYXV0by9jb25maWd1cmUKKyAgICB0b3VjaCBhdXRvL2NvbmZpZy5tayBhdXRvL2NvbmZpZy5oCit9CisKKyNBdmFpbGFibGUgUEFDS0FHRUNPTkZJRyBvcHRpb25zIGFyZSBndGtndWksIGFjbCwgeDExLCB0aW55CitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbZ3RrZ3VpXSA9ICItLWVuYWJsZS1ndGsyLXRlc3QgLS1lbmFibGUtZ3VpPWd0azIsLS1lbmFibGUtZ3VpPW5vLGd0ayssIgorUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXgsLS13aXRob3V0LXgseHQsIgorUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLXdpdGgtZmVhdHVyZXM9dGlueSwtLXdpdGgtZmVhdHVyZXM9YmlnLCwiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCwiCitQQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGYtY2hlY2ssLGVsZnV0aWxzLCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWdwbSBcCisgICAgLS1kaXNhYmxlLWd0a3Rlc3QgXAorICAgIC0tZGlzYWJsZS14aW0gXAorICAgIC0tZGlzYWJsZS1uZXRiZWFucyBcCisgICAgLS13aXRoLXRsaWI9bmN1cnNlcyBcCisgICAgYWNfY3Zfc21hbGxfd2NoYXJfdD1ubyBcCisgICAgdmltX2N2X2dldGN3ZF9icm9rZW49bm8gXAorICAgIHZpbV9jdl9tZW1tb3ZlX2hhbmRsZXNfb3ZlcmxhcD15ZXMgXAorICAgIHZpbV9jdl9zdGF0X2lnbm9yZXNfc2xhc2g9bm8gXAorICAgIHZpbV9jdl90ZXJtaW5mbz15ZXMgXAorICAgIHZpbV9jdl90Z2V0ZW50PW5vbi16ZXJvIFwKKyAgICB2aW1fY3ZfdG91cHBlcl9icm9rZW49bm8gXAorICAgIHZpbV9jdl90dHlfZ3JvdXA9d29ybGQgXAorICAgIFNUUklQPS9iaW4vdHJ1ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworICAgICMgV29yayBhcm91bmQgZmlsZS1yZGVwcyBwaWNraW5nIHVwIGNzaCwgYXdrLCBwZXJsIG9yIHB5dGhvbiBhcyBhIGRlcAorICAgIGNobW9kIC14ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdG9vbHMvdmltMTMyCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy9tdmUuYXdrCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnBsCisgICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy8qLnB5CisKKyAgICAjIEluc3RhbGwgZXhhbXBsZSB2aW1yYyBmcm9tIHJ1bnRpbWUgZmlsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vcnVudGltZS92aW1yY19leGFtcGxlLnZpbSAke0R9LyR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjCisKKyAgICAjIHdlIHVzZSAtLXdpdGgtZmVhdHVyZXM9YmlnIGFzIGRlZmF1bHQKKyAgICBtdiAke0R9JHtiaW5kaXJ9LyR7QlBOfSAke0R9JHtiaW5kaXJ9LyR7QlBOfS4ke0JQTn0KK30KKworUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tbW9uICR7UE59LXN5bnRheCAke1BOfS1oZWxwICR7UE59LXR1dG9yICR7UE59LXZpbXJjICR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tc3ludGF4ID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9zeW50YXgiCitGSUxFU18ke1BOfS1oZWxwID0gIiR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9kb2MiCitGSUxFU18ke1BOfS10dXRvciA9ICIke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vdHV0b3IgJHtiaW5kaXJ9LyR7QlBOfXR1dG9yIgorRklMRVNfJHtQTn0tdmltcmMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMiCitGSUxFU18ke1BOfS1kYXRhID0gIiR7ZGF0YWRpcn0vJHtCUE59IgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzIgorRklMRVNfJHtQTn0tY29tbW9uID0gIiBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9LyoudmltIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vYXV0b2xvYWQgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb2xvcnMgXAorICAgICR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS9jb21waWxlciBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L2Z0cGx1Z2luIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vaW5kZW50IFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0va2V5bWFwIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vbGFuZyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L21hY3JvcyBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3BsdWdpbiBcCisgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3ByaW50IFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vc3BlbGwgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorIgorCitSREVQRU5EU18ke0JQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgorIyBSZWNvbW1lbmQgdGhhdCBydW50aW1lIGRhdGEgaXMgaW5zdGFsbGVkIGFsb25nIHdpdGggdmltCitSUkVDT01NRU5EU18ke0JQTn0gPSAiJHtQTn0tc3ludGF4ICR7UE59LWhlbHAgJHtQTn0tdHV0b3IgJHtQTn0tdmltcmMgJHtQTn0tY29tbW9uIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ2aSB2aW0geHhkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfVEFSR0VUID0gIiR7YmluZGlyfS8ke0JQTn0uJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3ZpXSA9ICIke2Jhc2VfYmluZGlyfS92aSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt2aW1dID0gIiR7YmluZGlyfS92aW0iCitBTFRFUk5BVElWRV9UQVJHRVRbeHhkXSA9ICIke2JpbmRpcn0veHhkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3h4ZF0gPSAiJHtiaW5kaXJ9L3h4ZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC8wMDAxLUZpeC1pc3N1ZS01OTkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAxLUZpeC1pc3N1ZS01OTkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzAwMDEtRml4LWlzc3VlLTU5OS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1GaXgtaXNzdWUtNTk5LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC80Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvNGNhYjVlNWMwYzVmMTlmY2VlN2QzN2I0YTM4YjE1NmQ2M2ExNTBkNC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC43LjAvOWRkYjMwMGQ4NzRhMzBkYjM1ZTNhZDU4ZjE4ODk0NGJlZjBiZjMxYi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzlkZGIzMDBkODc0YTMwZGIzNWUzYWQ1OGYxODg5NDRiZWYwYmYzMWIucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuNy4wL2Rpc2FibGUtdGVzdHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS9kaXNhYmxlLXRlc3RzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjcuMC9kaXNhYmxlLXRlc3RzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS9kaXNhYmxlLXRlc3RzLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcF8wLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWZjOTc0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJDKysvQm9vc3QgQXNpbyBiYXNlZCB3ZWJzb2NrZXQgY2xpZW50L3NlcnZlciBsaWJyYXJ5LiIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vQ09QWUlORzttZDU9NGQxNjhkNzYzYzExMWY0ZmZjNjIyNDk4NzBlNGUwZWEiCi1ERVBFTkRTID0gIm9wZW5zc2wgYm9vc3QgemxpYiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCi0KLSMgdGFnIDAuNy4wCi1TUkNSRVY9ICIzNzg0MzdhZWNkY2IxZGZlNjIwOTZmZmQ1ZDk0NGJmMWY2NDBjY2MzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1GaXgtaXNzdWUtNTk5LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly85ZGRiMzAwZDg3NGEzMGRiMzVlM2FkNThmMTg4OTQ0YmVmMGJmMzFiLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly80Y2FiNWU1YzBjNWYxOWZjZWU3ZDM3YjRhMzhiMTU2ZDYzYTE1MGQ0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLXRlc3RzLnBhdGNoIFwKLSAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHBfMC44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhNWY4OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4xLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiQysrL0Jvb3N0IEFzaW8gYmFzZWQgd2Vic29ja2V0IGNsaWVudC9zZXJ2ZXIgbGlicmFyeS4iCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTRkMTY4ZDc2M2MxMTFmNGZmYzYyMjQ5ODcwZTRlMGVhIgorREVQRU5EUyA9ICJvcGVuc3NsIGJvb3N0IHpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorCisjIHRhZyAwLjguMQorU1JDUkVWPSAiYzZkN2UyOTViZjVhMGFiOWI1Zjg5NjcyMGNjMWEwZTBmZGMzOTdhNyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY2F0Y2gyL2NhdGNoMi8wMDAxLUZpeC1jb252ZXJ0LWZyb20tY2hhci1vbi1BUk0tYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jYXRjaDIvY2F0Y2gyLzAwMDEtRml4LWNvbnZlcnQtZnJvbS1jaGFyLW9uLUFSTS1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDczNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY2F0Y2gyL2NhdGNoMi8wMDAxLUZpeC1jb252ZXJ0LWZyb20tY2hhci1vbi1BUk0tYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA1NzI5ODc0ZmE1MDU5YzM5YWE5N2NmYTA4ZmRkZjEwN2I3YTY1YzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlndWVsIEdhaW8gPG1nYWlvMzVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAzIE9jdCAyMDE4IDEwOjIyOjE2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb252ZXJ0IGZyb20gY2hhciBvbiBBUk0gYnVpbGQKKworU29tZSBwbGF0Zm9ybXMgc2V0IHRoZSBzaWduZWRuZXNzIG9mIGNoYXIgdG8gdW5zaWduZWQgKGVnLiBBUk0pLgorQ29udmVydCBmcm9tIGNoYXIgc2hvdWxkIG5vdCBhc3N1bWUgdGhlIHNpZ25lZG5lc3Mgb2YgY2hhci4KKworRml4IGJ1aWxkIGlzc3VlIHdpdGggLVdlcnJvciwtV3RhdXRvbG9naWNhbC11bnNpZ25lZC16ZXJvLWNvbXBhcmUgZmxhZ3MuCisKK1NpZ25lZC1vZmYtYnk6IE1pZ3VlbCBHYWlvIDxtZ2FpbzM1QGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbQ29tbWl0IGYxZmFhYTljMTA3MTEzNjkyMzAxYWQ4YmI1NjA4NDQ2MGVmMWEyZmZdCisKK1NpZ25lZC1vZmYtYnk6IEJhcnRvc3ogR29sYXN6ZXdza2kgPGJnb2xhc3pld3NraUBiYXlsaWJyZS5jb20+CistLS0KKyBpbmNsdWRlL2ludGVybmFsL2NhdGNoX3Rvc3RyaW5nLmNwcCB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvaW50ZXJuYWwvY2F0Y2hfdG9zdHJpbmcuY3BwIGIvaW5jbHVkZS9pbnRlcm5hbC9jYXRjaF90b3N0cmluZy5jcHAKK2luZGV4IDRlMGMwMjdkLi44Y2JhYmJmMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvaW50ZXJuYWwvY2F0Y2hfdG9zdHJpbmcuY3BwCisrKysgYi9pbmNsdWRlL2ludGVybmFsL2NhdGNoX3Rvc3RyaW5nLmNwcAorQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGQ6OnN0cmluZyBTdHJpbmdNYWtlcjxib29sPjo6Y29udmVydChib29sIGIpIHsKKyAgICAgcmV0dXJuIGIgPyAidHJ1ZSIgOiAiZmFsc2UiOworIH0KKyAKKy1zdGQ6OnN0cmluZyBTdHJpbmdNYWtlcjxjaGFyPjo6Y29udmVydChjaGFyIHZhbHVlKSB7Cisrc3RkOjpzdHJpbmcgU3RyaW5nTWFrZXI8c2lnbmVkIGNoYXI+Ojpjb252ZXJ0KHNpZ25lZCBjaGFyIHZhbHVlKSB7CisgICAgIGlmICh2YWx1ZSA9PSAnXHInKSB7CisgICAgICAgICByZXR1cm4gIidcXHInIjsKKyAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSAnXGYnKSB7CitAQCAtMjIyLDggKzIyMiw4IEBAIHN0ZDo6c3RyaW5nIFN0cmluZ01ha2VyPGNoYXI+Ojpjb252ZXJ0KGNoYXIgdmFsdWUpIHsKKyAgICAgICAgIHJldHVybiBjaHN0cjsKKyAgICAgfQorIH0KKy1zdGQ6OnN0cmluZyBTdHJpbmdNYWtlcjxzaWduZWQgY2hhcj46OmNvbnZlcnQoc2lnbmVkIGNoYXIgYykgeworLSAgICByZXR1cm4gOjpDYXRjaDo6RGV0YWlsOjpzdHJpbmdpZnkoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpOworK3N0ZDo6c3RyaW5nIFN0cmluZ01ha2VyPGNoYXI+Ojpjb252ZXJ0KGNoYXIgYykgeworKyAgICByZXR1cm4gOjpDYXRjaDo6RGV0YWlsOjpzdHJpbmdpZnkoc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KGMpKTsKKyB9Cisgc3RkOjpzdHJpbmcgU3RyaW5nTWFrZXI8dW5zaWduZWQgY2hhcj46OmNvbnZlcnQodW5zaWduZWQgY2hhciBjKSB7CisgICAgIHJldHVybiA6OkNhdGNoOjpEZXRhaWw6OnN0cmluZ2lmeShzdGF0aWNfY2FzdDxjaGFyPihjKSk7CistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jYXRjaDIvY2F0Y2gyXzIuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY2F0Y2gyL2NhdGNoMl8yLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTgzYzJlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY2F0Y2gyL2NhdGNoMl8yLjQuMS5iYgpAQCAtMCwwICsxLDI0IEBACitERVNDUklQVElPTiA9ICJBIG1vZGVybiwgQysrLW5hdGl2ZSwgaGVhZGVyLW9ubHksIHRlc3QgZnJhbWV3b3JrIGZvciB1bml0LXRlc3RzLCBcCitUREQgYW5kIEJERCAtIHVzaW5nIEMrKzExLCBDKysxNCwgQysrMTcgYW5kIGxhdGVyLiIKK0FVVEhPUiA9ICJQaGlsIE5hc2gsIE1hcnRpbiBIb3Jlbm92c2t5IGFuZCBvdGhlcnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2F0Y2hvcmcvQ2F0Y2gyIgorTElDRU5TRSA9ICJCU0wtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2F0Y2hvcmcvQ2F0Y2gyLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1jb252ZXJ0LWZyb20tY2hhci1vbi1BUk0tYnVpbGQucGF0Y2giCitTUkNSRVYgPSAiOWUxYmRjYTQ2NjcyOTVmY2IxNjI2NWVhZTAwZWZhODQyM2YwNzAwNyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlCisKKyMgSGVhZGVyLW9ubHkgbGlicmFyeQorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtICR7RH0vJHtkYXRhZGlyfS9DYXRjaDIvbGxkYmluaXQKKyAgICBybSAke0R9LyR7ZGF0YWRpcn0vQ2F0Y2gyL2dkYmluaXQKKyAgICBybWRpciAke0R9LyR7ZGF0YWRpcn0vQ2F0Y2gyLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtQWRkLWNvcnJlY3QtcHJpbnRmLXF1YWxpZmllci1mb3Itb2ZmX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1BZGQtY29ycmVjdC1wcmludGYtcXVhbGlmaWVyLWZvci1vZmZfdC5wYXRjaAppbmRleCAxOTJlMDVmLi5jMmQ2NzlhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1BZGQtY29ycmVjdC1wcmludGYtcXVhbGlmaWVyLWZvci1vZmZfdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1BZGQtY29ycmVjdC1wcmludGYtcXVhbGlmaWVyLWZvci1vZmZfdC5wYXRjaApAQCAtMSwxOCArMSwxOSBAQAotRnJvbSAyMzJkYWY1ZmNhNmZiNTJjY2VkNWU4MTBmMjYwMWZlMWE3MWI5NmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MTNlNWNmZTc3NTEwNjgwNjJjYzkyZjgzODcwZTQzNjY2OWZjMGE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjo0OTo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvM10gQWRkIGNvcnJlY3QgcHJpbnRmIHF1YWxpZmllciBmb3Igb2ZmX3QKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGNvcnJlY3QgcHJpbnRmIHF1YWxpZmllciBmb3Igb2ZmX3QKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ2l0L3NyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCi0rKysgZ2l0L3NyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMKLUBAIC04Myw5ICs4Myw5IEBAIHN0YXRpYyBpbnQgZWJkYV90ZXN0MShmd3RzX2ZyYW1ld29yayAqZncKKy0tLQorIHNyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iaW9zL2ViZGFfcmVnaW9uL2ViZGFfcmVnaW9uLmMgYi9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCitpbmRleCAxNmMzOTM1Ny4uYWQ2ZDYzNWMgMTAwNjQ0CistLS0gYS9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCisrKysgYi9zcmMvYmlvcy9lYmRhX3JlZ2lvbi9lYmRhX3JlZ2lvbi5jCitAQCAtODMsOSArODMsOSBAQCBzdGF0aWMgaW50IGViZGFfdGVzdDEoZnd0c19mcmFtZXdvcmsgKmZ3KQogIAlpZiAoKGVudHJ5ICE9IE5VTEwpICYmCiAgCSAgICAoZW50cnktPnR5cGUgPT0gRldUU19NRU1PUllfTUFQX1JFU0VSVkVEIHx8CiAgCSAgICAgZW50cnktPnR5cGUgPT0gRldUU19NRU1PUllfTUFQX0FDUEkpKSB7CkBAIC0yNCw3ICsyNSw3IEBACiAgCQkJKGVudHJ5LT5lbmRfYWRkcmVzcyAtIGVudHJ5LT5zdGFydF9hZGRyZXNzKSAvIDEwMjQsCiAgCQkJbWVtb3J5X21hcF9uYW1lLAogIAkJCWVudHJ5LT5zdGFydF9hZGRyZXNzLAotQEAgLTkzLDggKzkzLDggQEAgc3RhdGljIGludCBlYmRhX3Rlc3QxKGZ3dHNfZnJhbWV3b3JrICpmdworQEAgLTkzLDggKzkzLDggQEAgc3RhdGljIGludCBlYmRhX3Rlc3QxKGZ3dHNfZnJhbWV3b3JrICpmdykKICAJfSBlbHNlCiAgCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKICAJCQkiRUJEQU1hcHBlZE5vdFJlc2VydmVkIiwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLUluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2YtZGVwcmVjYXRlZC1zeXMtcG9sbC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtSW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1kZXByZWNhdGVkLXN5cy1wb2xsLmgucGF0Y2gKaW5kZXggOGFkMDc4OS4uNGJhZWZlNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtSW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1kZXByZWNhdGVkLXN5cy1wb2xsLmgucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtSW5jbHVkZS1wb2xsLmgtaW5zdGVhZC1vZi1kZXByZWNhdGVkLXN5cy1wb2xsLmgucGF0Y2gKQEAgLTEsMTggKzEsMTkgQEAKLUZyb20gMTAwYTEwN2E1M2Q1ZGM5YjA1NTQyNTJhYzVkYmYyYzkzMzA2MTVlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWQ5ODhjMjdlZmRlNTM1NWMzYmE5ZDBkZThhMTRhNGE0MGY3OThjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDYgSnVuIDIwMTcgMDc6MjU6MDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEluY2x1ZGUgcG9sbC5oIGluc3RlYWQgb2YgZGVwcmVjYXRlZCBzeXMvcG9sbC5oCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgcG9sbC5oIGluc3RlYWQgb2YgZGVwcmVjYXRlZCBzeXMvcG9sbC5oCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvbGliL3NyYy9md3RzX2lwbWkuYyAgIHwgMyArKy0KICBzcmMvbGliL3NyYy9md3RzX3BpcGVpby5jIHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19pcG1pLmMgYi9zcmMvbGliL3NyYy9md3RzX2lwbWkuYwotaW5kZXggY2JiMjc2MTEuLjcwZDExY2ZhIDEwMDY0NAoraW5kZXggYTRjOGE1MTEuLmUyOTg5NjllIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19pcG1pLmMKICsrKyBiL3NyYy9saWIvc3JjL2Z3dHNfaXBtaS5jCiBAQCAtMTgsMTAgKzE4LDExIEBACkBAIC0yOSw3ICszMCw3IEBACiAgI2luY2x1ZGUgPGxpbnV4L2lwbWkuaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvbGliL3NyYy9md3RzX3BpcGVpby5jIGIvc3JjL2xpYi9zcmMvZnd0c19waXBlaW8uYwotaW5kZXggZmQ3MTk2NDAuLmJkYzViMmVhIDEwMDY0NAoraW5kZXggM2IzY2ZhZmYuLjI4OTU2NGQxIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19waXBlaW8uYwogKysrIGIvc3JjL2xpYi9zcmMvZnd0c19waXBlaW8uYwogQEAgLTMwLDkgKzMwLDkgQEAKQEAgLTQzLDYgKzQ0LDMgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1SZW1vdmUtV2Vycm9yLWZyb20tYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMS1SZW1vdmUtV2Vycm9yLWZyb20tYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExY2NjOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLVJlbW92ZS1XZXJyb3ItZnJvbS1idWlsZC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDQ3NTk3OWNmNWMxYWY5NzhmNGU4NDA5NjY2MzY1ZWM3NWIzMzIwZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBCZXJnIDxiYmVyZ0ByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyMSBBdWcgMjAxNyAxMDozNDo0MCArMDIwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgLVdlcnJvciBmcm9tIGJ1aWxkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgICAgIHwgMiArLQorIHNyYy9saWIvc3JjL01ha2VmaWxlLmFtICAgfCAyICstCisgc3JjL3V0aWxpdGllcy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggNGRhYTllOGYuLjg3M2YyM2ViIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0xNCw3ICsxNCw3IEBAIEFNX0NQUEZMQUdTID0gXAorIAlgcGtnLWNvbmZpZyAtLXNpbGVuY2UtZXJyb3JzIC0tY2ZsYWdzIGpzb25gIFwKKyAJYHBrZy1jb25maWcgLS1zaWxlbmNlLWVycm9ycyAtLWNmbGFncyBqc29uLWNgIFwKKyAJLXB0aHJlYWQgYHBrZy1jb25maWcgLS1jZmxhZ3MgZ2xpYi0yLjAgZ2lvLTIuMGAgXAorLQktV2FsbCAtV2Vycm9yIC1XZXh0cmEKKysJLVdhbGwgLVdleHRyYQorIAorIGJpbl9QUk9HUkFNUyA9IGZ3dHMKKyAKK2RpZmYgLS1naXQgYS9zcmMvbGliL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9saWIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBmYTIzMjQ1MS4uMDgyNDAzYTIgMTAwNjQ0CistLS0gYS9zcmMvbGliL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL2xpYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0yNCw3ICsyNCw3IEBAIEFNX0NQUEZMQUdTID0gXAorIAlgcGtnLWNvbmZpZyAtLXNpbGVuY2UtZXJyb3JzIC0tY2ZsYWdzIGpzb24tY2AJXAorIAlgcGtnLWNvbmZpZyAtLWNmbGFncyBnbGliLTIuMCBnaW8tMi4wYCAJCVwKKyAJLUREQVRBUk9PVERJUj1cIiQoZGF0YXJvb3RkaXIpXCIJCVwKKy0JLVdhbGwgLVdlcnJvciAtV2V4dHJhCisrCS1XYWxsIC1XZXh0cmEKKyAKKyBwa2dsaWJfTFRMSUJSQVJJRVMgPSBsaWJmd3RzLmxhCisgCitkaWZmIC0tZ2l0IGEvc3JjL3V0aWxpdGllcy9NYWtlZmlsZS5hbSBiL3NyYy91dGlsaXRpZXMvTWFrZWZpbGUuYW0KK2luZGV4IGFhMzdkZTU1Li40ZDUyOTdjYyAxMDA2NDQKKy0tLSBhL3NyYy91dGlsaXRpZXMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy91dGlsaXRpZXMvTWFrZWZpbGUuYW0KK0BAIC0xNiw3ICsxNiw3IEBACisgIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAjCisgCistQU1fQ1BQRkxBR1MgPSAtV2FsbCAtV2Vycm9yIC1XZXh0cmEgLUREQVRBUk9PVERJUj1cIiQoZGF0YXJvb3RkaXIpXCIgXAorK0FNX0NQUEZMQUdTID0gLVdhbGwgLVdleHRyYSAtRERBVEFST09URElSPVwiJChkYXRhcm9vdGRpcilcIiBcCisgCWBwa2ctY29uZmlnIC0tc2lsZW5jZS1lcnJvcnMgLS1jZmxhZ3MganNvbmAgXAorIAlgcGtnLWNvbmZpZyAtLXNpbGVuY2UtZXJyb3JzIC0tY2ZsYWdzIGpzb24tY2AKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAxLWlnbm9yZS1jb25zdGFudC1sb2dpY2FsLW9wZXJhbmQtd2FybmluZy13aXRoLWNsYW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtaWdub3JlLWNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZC13YXJuaW5nLXdpdGgtY2xhbmcucGF0Y2gKaW5kZXggYTNjYzFmZi4uYWUzNjY1YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtaWdub3JlLWNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZC13YXJuaW5nLXdpdGgtY2xhbmcucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDEtaWdub3JlLWNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZC13YXJuaW5nLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAotRnJvbSA5NTNjZmY5M2M4NWQzY2ZkNWNiY2FjNTZlMTQ0NDNkYzVmNmU1ZmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1YmQwNWFkODU2OTg4MDk4NWRkZjZkNGMwNmVkOTI3ZDM4OGMyOTdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTkgT2N0IDIwMTYgMDE6NTc6MTYgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gaWdub3JlIGNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZCB3YXJuaW5nIHdpdGggY2xhbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2RtaS9kbWljaGVjay9kbWljaGVjay5jICAgICAgICAgICAgfCAzICsrKwogIHNyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyAgICAgICAgIHwgNSArKysrKwpAQCAtMTEsMTAgKzEyLDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvZG1pL2RtaWNoZWNrL2RtaWNoZWNrLmMgYi9zcmMvZG1pL2RtaWNoZWNrL2RtaWNoZWNrLmMKLWluZGV4IGVjZDk4MjIzLi43ZmNhNGE2NCAxMDA2NDQKK2luZGV4IDNjY2E5ZGI5Li42MGZiNzU4ZiAxMDA2NDQKIC0tLSBhL3NyYy9kbWkvZG1pY2hlY2svZG1pY2hlY2suYwogKysrIGIvc3JjL2RtaS9kbWljaGVjay9kbWljaGVjay5jCi1AQCAtMjA5LDYgKzIwOSw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICp1dWlkX3BhdHRlcm5zW10gPSB7CitAQCAtMjExLDYgKzIxMSw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICp1dWlkX3BhdHRlcm5zW10gPSB7CiAgCSIwQTBBMEEwQS0wQTBBLTBBMEEtMEEwQS0wQTBBMEEwQTBBMEEiLAogIAlOVUxMLAogIH07CkBAIC0yMywxOSArMjQsMTkgQEAKICAKICBzdGF0aWMgY29uc3QgZnd0c19jaGFzc2lzX3R5cGVfbWFwIGZ3dHNfZG1pX2NoYXNzaXNfdHlwZVtdID0gewogIAl7ICJJbnZhbGlkIiwJCUZXVFNfU01CSU9TX0NIQVNTSVNfSU5WQUxJRCB9LAotQEAgLTI0NSw2ICsyNDcsNyBAQCBzdGF0aWMgY29uc3QgZnd0c19jaGFzc2lzX3R5cGVfbWFwIGZ3dHNfZG1pX2NoYXNzaXNfdHlwZVtdID0gewotIAl7ICJDb252ZXJ0aWJsZSIsCUZXVFNfU01CSU9TX0NIQVNTSVNfQ09OVkVSVElCTEUgfSwKLSAJeyAiRGV0YWNoYWJsZSIsCQlGV1RTX1NNQklPU19DSEFTU0lTX0RFVEFDSEFCTEUgfSwKK0BAIC0yNTEsNiArMjUzLDcgQEAgc3RhdGljIGNvbnN0IGZ3dHNfY2hhc3Npc190eXBlX21hcCBmd3RzX2RtaV9jaGFzc2lzX3R5cGVbXSA9IHsKKyAJeyAiTWluaSBQQyIsCQlGV1RTX1NNQklPU19DSEFTU0lTX01JTklfUEMgfSwKKyAJeyAiU3RpY2sgUEMiLAkJRldUU19TTUJJT1NfQ0hBU1NJU19TVElDS19QQyB9LAogIH07CiArI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogIAogIC8qIFJlbWFwcGluZyB0YWJsZSBmcm9tIGJ1Z2d5IHZlcnNpb24gbnVtYmVycyB0byBjb3JyZWN0IHZhbHVlcyAqLwogIHN0YXRpYyBjb25zdCBmd3RzX2RtaV92ZXJzaW9uIGRtaV92ZXJzaW9uc1tdID0gewogZGlmZiAtLWdpdCBhL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYwotaW5kZXggMzBiNDA2MGUuLmQ1MzM5YmY3IDEwMDY0NAoraW5kZXggYzdiYTU5YmUuLmJkZDIyNGFhIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCiArKysgYi9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKLUBAIC0zOTQsMTAgKzM5NCwxNCBAQCBzdGF0aWMgaW50IGZ3dHNfYWNwaV9oYW5kbGVfZmFkdCgKK0BAIC0zOTMsMTAgKzM5MywxNCBAQCBzdGF0aWMgaW50IGZ3dHNfYWNwaV9oYW5kbGVfZmFkdCgKICAJLyogRGV0ZXJtaW5lIEZBQ1MgYWRkciBhbmQgbG9hZCBpdC4KICAJICogV2lsbCBpZ25vcmUgdGhlIG1pc3NpbmcgRkFDUyBpbiB0aGUgaGFyZHdhcmUtcmVkdWNlZCBtb2RlLgogIAkgKi8KQEAgLTUwLDcgKzUxLDcgQEAKICAJaWYgKHJlc3VsdCAhPSBGV1RTX09LKSB7CiAgCQlpZiAoKHJlc3VsdCA9PSBGV1RTX05VTExfUE9JTlRFUikgJiYKICAJCQkJZnd0c19hY3BpX2lzX3JlZHVjZWRfaGFyZHdhcmUoZmFkdCkpIHsKLUBAIC00MTYsNiArNDIwLDcgQEAgc3RhdGljIGludCBmd3RzX2FjcGlfaGFuZGxlX2ZhZHQoCitAQCAtNDE1LDYgKzQxOSw3IEBAIHN0YXRpYyBpbnQgZnd0c19hY3BpX2hhbmRsZV9mYWR0KAogIAkJcmV0dXJuIEZXVFNfRVJST1I7CiAgCX0KICAJcmV0dXJuIEZXVFNfT0s7CkBAIC01OSw3ICs2MCw3IEBACiAgCiAgLyoKIGRpZmYgLS1naXQgYS9zcmMvdWVmaS91ZWZpcnRhdXRodmFyL3VlZmlydGF1dGh2YXIuYyBiL3NyYy91ZWZpL3VlZmlydGF1dGh2YXIvdWVmaXJ0YXV0aHZhci5jCi1pbmRleCBjZGZkN2FhMy4uMDAxZThjYzggMTAwNjQ0CitpbmRleCBjMjAzMTc0MS4uN2EzM2QxOWQgMTAwNjQ0CiAtLS0gYS9zcmMvdWVmaS91ZWZpcnRhdXRodmFyL3VlZmlydGF1dGh2YXIuYwogKysrIGIvc3JjL3VlZmkvdWVmaXJ0YXV0aHZhci91ZWZpcnRhdXRodmFyLmMKIEBAIC0xNDIsNiArMTQyLDkgQEAgc3RhdGljIGludCB1ZWZpcnRhdXRodmFyX2RlaW5pdChmd3RzX2ZyYW1ld29yayAqZncpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1BZGQtQzk5LWRlZmluZWQtZm9ybWF0LWZvci1wcmludGluZy11aW50NjRfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLUFkZC1DOTktZGVmaW5lZC1mb3JtYXQtZm9yLXByaW50aW5nLXVpbnQ2NF90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWNlODgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLUFkZC1DOTktZGVmaW5lZC1mb3JtYXQtZm9yLXByaW50aW5nLXVpbnQ2NF90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSAyNWYxOGI5YWMzNzk2MGRjMTJhM2I2NDhhNWM4NjZiZDU2ZWYyY2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjo1MDoyMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gQWRkIEM5OSBkZWZpbmVkIGZvcm1hdCBmb3IgcHJpbnRpbmcgdWludDY0X3QKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9vcGFsL3Jlc2Vydl9tZW0uYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29wYWwvcmVzZXJ2X21lbS5jIGIvc3JjL29wYWwvcmVzZXJ2X21lbS5jCi1pbmRleCBlZWVjMjk0Ny4uZjA2NzJlMDUgMTAwNjQ0Ci0tLS0gYS9zcmMvb3BhbC9yZXNlcnZfbWVtLmMKLSsrKyBiL3NyYy9vcGFsL3Jlc2Vydl9tZW0uYwotQEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQotIAkJcmVnaW9uc1tqXS5zdGFydCA9ICh1aW50NjRfdCliZTY0dG9oKHJhbmdlc1syICogal0pOwotIAkJcmVnaW9uc1tqXS5sZW4gPSAodWludDY0X3QpYmU2NHRvaChyYW5nZXNbMiAqIGogKyAxXSk7Ci0gCQlmd3RzX2xvZ19pbmZvKGZ3LCAiUmVnaW9uIG5hbWUgJTgwcyIKLS0JCQkiIHN0YXJ0OiAweCUwOGx4LCBsZW46IDB4JTA4bHhcbiIsCi0rCQkJIiBzdGFydDogMHglMDgiIFBSSXg2NCAiLCBsZW46IDB4JTA4IiBQUkl4NjQgIlxuIiwKLSAJCQlyZWdpb25zW2pdLm5hbWUsIHJlZ2lvbnNbal0uc3RhcnQsIHJlZ2lvbnNbal0ubGVuKTsKLSAJfQotIAotQEAgLTI0OCw3ICsyNDgsNyBAQCBzdGF0aWMgaW50IHJlc2Vydl9tZW1fbGltaXRzX3Rlc3QoZnd0c19mcmFtZXdvcmsgKmZ3KQotIAkJCQlmd3RzX2ZhaWxlZChmdywgTE9HX0xFVkVMX01FRElVTSwKLSAJCQkJCSJJbWFnZVNpemVNaXNtYXRjaCIsCi0gCQkJCQkiTWlzbWF0Y2ggaW4gaG9tZXItaW1hZ2Ugc2l6ZSwgIgotLQkJCQkJImV4cGVjdGVkOiAweCVseCwgYWN0dWFsOiAweCVseCIsCi0rCQkJCQkiZXhwZWN0ZWQ6IDB4JSIgUFJJeDY0ICIsIGFjdHVhbDogMHglIiBQUkl4NjQgIiIsCi0gCQkJCQljb25maWdzdHJ1Y3QuaG9tZXIsIHJlZ2lvbnNbal0ubGVuKTsKLSAJCQkJb2sgPSBmYWxzZTsKLSAJCQl9IGVsc2UKLUBAIC0yNjEsNyArMjYxLDcgQEAgc3RhdGljIGludCByZXNlcnZfbWVtX2xpbWl0c190ZXN0KGZ3dHNfZnJhbWV3b3JrICpmdykKLSAJCQkJZnd0c19mYWlsZWQoZncsIExPR19MRVZFTF9NRURJVU0sCi0gCQkJCQkiSW1hZ2VTaXplTWlzbWF0Y2giLAotIAkJCQkJIk1pc21hdGNoIGluIHNsdy1pbWFnZSBzaXplLCAiCi0tCQkJCQkiZXhwZWN0ZWQ6IDB4JWx4LCBhY3R1YWw6IDB4JWx4IiwKLSsJCQkJCSJleHBlY3RlZDogMHglIiBQUkl4NjQgIiwgYWN0dWFsOiAweCUiIFBSSXg2NCAiIiwKLSAJCQkJCWNvbmZpZ3N0cnVjdC5zbHcsIHJlZ2lvbnNbal0ubGVuKTsKLSAJCQkJb2sgPSBmYWxzZTsKLSAJCQl9IGVsc2UKLUBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIGludCByZXNlcnZfbWVtX2xpbWl0c190ZXN0KGZ3dHNfZnJhbWV3b3JrICpmdykKLSAJCQkJZnd0c19mYWlsZWQoZncsIExPR19MRVZFTF9NRURJVU0sCi0gCQkJCQkiSW1hZ2VTaXplTWlzbWF0Y2giLAotIAkJCQkJIk1pc21hdGNoIGluIG9jYy1jb21tb24tYXJlYSBzaXplLCAiCi0tCQkJCQkiZXhwZWN0ZWQ6IDB4JWx4LCBhY3R1YWw6IDB4JWx4IiwKLSsJCQkJCSJleHBlY3RlZDogMHglIiBQUkl4NjQiLCBhY3R1YWw6IDB4JSIgUFJJeDY0IiIsCi0gCQkJCQljb25maWdzdHJ1Y3Qub2NjX2NvbW1vbiwKLSAJCQkJCXJlZ2lvbnNbal0ubGVuKTsKLSAJCQkJb2sgPSBmYWxzZTsKLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLURlZmluZS1fX1NXT1JEX1RZUEUtaWYtbm90LWRlZmluZWQtYnktbGliYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAyLURlZmluZS1fX1NXT1JEX1RZUEUtaWYtbm90LWRlZmluZWQtYnktbGliYy5wYXRjaAppbmRleCAzYjgzY2E1Li5iNDVlNDZhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMi1EZWZpbmUtX19TV09SRF9UWVBFLWlmLW5vdC1kZWZpbmVkLWJ5LWxpYmMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDItRGVmaW5lLV9fU1dPUkRfVFlQRS1pZi1ub3QtZGVmaW5lZC1ieS1saWJjLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAwZTg5MTI3Y2QwMmVjZDVlYTQ1MDZiOTM1Y2IyYjU5ZWI5NDEwN2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMTEyZTUxZDI0MGEyMDZiZGNmMjUzODc4ZWYxZjQ5NjNiOTJkYThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgNiBKdW4gMjAxNyAwNzozNzoyMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvM10gRGVmaW5lIF9fU1dPUkRfVFlQRSBpZiBub3QgZGVmaW5lZCBieSBsaWJjCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBfX1NXT1JEX1RZUEUgaWYgbm90IGRlZmluZWQgYnkgbGliYwogCiBfX1NXT1JEX1RZUEUgaXMgaW50ZXJuYWwgdG8gZ2xpYmMsIHRoZXJlZm9yZQogY2hlY2sgYW5kIGRlZmluZSBpdCBpZiBuZWVkZWQgZS5nLiBvbiBtdXNsCkBAIC05LDEyICs5LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2xpYi9zcmMvZnd0c191ZWZpLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvbGliL3NyYy9md3RzX3VlZmkuYyBiL3NyYy9saWIvc3JjL2Z3dHNfdWVmaS5jCi1pbmRleCAxZjlkMzFmYS4uMmQ5MjVmOGQgMTAwNjQ0CitpbmRleCA1NDQxNDVmYS4uNDYwYjBiNzcgMTAwNjQ0CiAtLS0gYS9zcmMvbGliL3NyYy9md3RzX3VlZmkuYwogKysrIGIvc3JjL2xpYi9zcmMvZnd0c191ZWZpLmMKIEBAIC01OSw2ICs1OSwxMCBAQCB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yOCw2ICsyOSwzIEBACiAgLyogRmlsZSBzeXN0ZW0gbWFnaWMgbnVtYmVycyAqLwogICNkZWZpbmUgUFNUT1JFRlNfTUFHSUMgICAgICAgICAgKChfX1NXT1JEX1RZUEUpMHg2MTY1Njc2QykKICAjZGVmaW5lIEVGSVZBUkZTX01BR0lDICAgICAgICAgICgoX19TV09SRF9UWVBFKTB4ZGU1ZTgxZTQpCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy1VbmRlZmluZS1QQUdFX1NJWkUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy1VbmRlZmluZS1QQUdFX1NJWkUucGF0Y2gKaW5kZXggZjg0ZmJmZi4uMWQ4YzYyMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtVW5kZWZpbmUtUEFHRV9TSVpFLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLVVuZGVmaW5lLVBBR0VfU0laRS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMDg1NzI2OWQ1YTA1M2I1YjRjMzFjZmEwMWI2NTAxNTI2YjI0MDM1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMjQ0ZTk1NTFhYjliYmMxZGZhOTFkMTljZDQ3MmVmMjU0YTk0YWU0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDYgSnVuIDIwMTcgMDc6Mzk6MjggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIFVuZGVmaW5lIFBBR0VfU0laRQorU3ViamVjdDogW1BBVENIXSBVbmRlZmluZSBQQUdFX1NJWkUKIAogbXVzbCBkZWZpbmVzIFBBR0VfU0laRSBhbmQgYnVpbGQgY29tcGxhaW5zCiBvZiBtdWx0aXBsZSBkZWZpbml0aW9ucwpAQCAtOSwxMiArOSwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jIGIvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCi1pbmRleCAxZDRmYzcwNS4uNzEwMjNhZDIgMTAwNjQ0CitpbmRleCBiZGQyMjRhYS4uNThlOTgyYTYgMTAwNjQ0CiAtLS0gYS9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKICsrKyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYwogQEAgLTQyLDYgKzQyLDcgQEAKQEAgLTI1LDYgKzI2LDMgQEAKICAjZGVmaW5lIFBBR0VfU0laRQkoNDA5NikKICAKICBzdGF0aWMgZnd0c19hY3BpX3RhYmxlX2luZm8JdGFibGVzW0FDUElfTUFYX1RBQkxFU107Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy11c2UtaW50cHRyX3QtdG8tZml4LXBvaW50ZXItdG8taW50LWNhc3QtaXNzdWVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzLzAwMDMtdXNlLWludHB0cl90LXRvLWZpeC1wb2ludGVyLXRvLWludC1jYXN0LWlzc3Vlcy5wYXRjaAppbmRleCAzY2QzZmJiLi5iZWJiZmE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHMvMDAwMy11c2UtaW50cHRyX3QtdG8tZml4LXBvaW50ZXItdG8taW50LWNhc3QtaXNzdWVzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0cy8wMDAzLXVzZS1pbnRwdHJfdC10by1maXgtcG9pbnRlci10by1pbnQtY2FzdC1pc3N1ZXMucGF0Y2gKQEAgLTEsMTMgKzEsMTQgQEAKLUZyb20gZDBkNzY4MjBlZmU1MWRkNDA0ZDM4MWZjNGM0NjU0NDAwOGU3NTdkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTg0OGI4ZjhiOWJlNTAwMDQ2Y2E1ZDYzMjc4OWEwNjhkNjE1MTgxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6NTA6NTkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIHVzZSBpbnRwdHJfdCB0byBmaXggcG9pbnRlci10by1pbnQtY2FzdCBpc3N1ZXMKK1N1YmplY3Q6IFtQQVRDSF0gdXNlIGludHB0cl90IHRvIGZpeCBwb2ludGVyLXRvLWludC1jYXN0IGlzc3VlcwogCiB1aW50cHRyX3QgaXMgZ3VhcmFudGVlZCB0byBiZSB3aWRlIGVub3VnaCB0aGF0CiBjb252ZXJ0aW5nIGEgdm9pZCogdG8gdWludHB0cl90IGFuZCBiYWNrIGFnYWluCiB3aWxsIHlpZWxkIHRoZSBvcmlnaW5hbCBwb2ludGVyIHZhbHVlCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYyB8IDQgKystLQogIHNyYy9saWIvc3JjL2Z3dHNfbW1hcC5jICAgICAgICB8IDIgKy0KQEAgLTE1LDE5ICsxNiwxOSBAQAogIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jIGIvc3JjL2xpYi9zcmMvZnd0c19hY3BpX3RhYmxlcy5jCi1pbmRleCA4MzJmOGQ2Ni4uZDAwMDY1MjkgMTAwNjQ0CitpbmRleCA1OGU5ODJhNi4uNjUyMjAzMmYgMTAwNjQ0CiAtLS0gYS9zcmMvbGliL3NyYy9md3RzX2FjcGlfdGFibGVzLmMKICsrKyBiL3NyYy9saWIvc3JjL2Z3dHNfYWNwaV90YWJsZXMuYwotQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgZnd0c19hY3BpX3RhYmxlX3JzZHAgKmZ3dHNfYWNwaV9nZXRfcnNkcChmd3RzX2ZyYW1ld29yayAqZncsIHZvaWQgKmFkZHIsCi0gCWZ3dHNfYWNwaV90YWJsZV9yc2RwICpyc2RwID0gTlVMTDsKLSAJKnJzZHBfbGVuID0gMDsKK0BAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGZ3dHNfYWNwaV90YWJsZV9yc2RwICpmd3RzX2FjcGlfZ2V0X3JzZHAoZnd0c19mcmFtZXdvcmsgKmZ3LCB2b2lkICphZGRyLAorIAkJcmV0dXJuIE5VTEw7CisgCX0KICAKIC0JaWYgKChtZW0gPSBmd3RzX21tYXAoKG9mZl90KWFkZHIsIHNpemVvZihmd3RzX2FjcGlfdGFibGVfcnNkcCkpKSA9PSBGV1RTX01BUF9GQUlMRUQpCiArCWlmICgobWVtID0gZnd0c19tbWFwKCh1aW50cHRyX3QpYWRkciwgc2l6ZW9mKGZ3dHNfYWNwaV90YWJsZV9yc2RwKSkpID09IEZXVFNfTUFQX0ZBSUxFRCkKICAJCXJldHVybiBOVUxMOwogIAotIAlpZiAoZnd0c19zYWZlX21lbXJlYWQobWVtLCBzaXplb2YoZnd0c19hY3BpX3RhYmxlX3JzZHApKSAhPSBGV1RTX09LKSB7Ci1AQCAtNDU2LDcgKzQ1Niw3IEBAIHN0YXRpYyBpbnQgZnd0c19hY3BpX2xvYWRfdGFibGVzX2Zyb21fZmlybXdhcmUoZnd0c19mcmFtZXdvcmsgKmZ3KQorIAlpZiAoZnd0c19zYWZlX21lbWNweShyc2RwLCBtZW0sIHNpemVvZihmd3RzX2FjcGlfdGFibGVfcnNkcCkpICE9IEZXVFNfT0spIHsKK0BAIC00NTUsNyArNDU1LDcgQEAgc3RhdGljIGludCBmd3RzX2FjcGlfbG9hZF90YWJsZXNfZnJvbV9maXJtd2FyZShmd3RzX2ZyYW1ld29yayAqZncpCiAgCWlmICgocnNkcCA9IGZ3dHNfYWNwaV9nZXRfcnNkcChmdywgcnNkcF9hZGRyLCAmcnNkcF9sZW4pKSA9PSBOVUxMKQogIAkJcmV0dXJuIEZXVFNfRVJST1I7CiAgCkBAIC0zNyw3ICszOCw3IEBACiAgCS8qIExvYWQgYW55IHRhYmxlcyBmcm9tIFhTRFQgaWYgaXQncyB2YWxpZCAqLwogIAlpZiAocnNkcC0+eHNkdF9hZGRyZXNzKSB7CiBkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMgYi9zcmMvbGliL3NyYy9md3RzX21tYXAuYwotaW5kZXggYTA5ZjY4OGUuLjlmZTYzMjlhIDEwMDY0NAoraW5kZXggZTI4YWJmODcuLjIxODBiMmNjIDEwMDY0NAogLS0tIGEvc3JjL2xpYi9zcmMvZnd0c19tbWFwLmMKICsrKyBiL3NyYy9saWIvc3JjL2Z3dHNfbW1hcC5jCiBAQCAtODEsNyArODEsNyBAQCBpbnQgZnd0c19tdW5tYXAodm9pZCAqbWVtLCBjb25zdCBzaXplX3Qgc2l6ZSkKQEAgLTUwLDI3ICs1MSwyNCBAQAogIAlpZiAobXVubWFwKCh2b2lkICopKCh1aW50OF90ICopbWVtIC0gb2Zmc2V0KSwgc2l6ZSArIG9mZnNldCkgPCAwKQogIAkJcmV0dXJuIEZXVFNfRVJST1I7CiBkaWZmIC0tZ2l0IGEvc3JjL2xpYi9zcmMvZnd0c19zbWJpb3MuYyBiL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKLWluZGV4IDhkMGVhMzliLi42M2I0YmYyNSAxMDA2NDQKK2luZGV4IGU1YjNjNzc0Li5jODEzNDkyNiAxMDA2NDQKIC0tLSBhL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKICsrKyBiL3NyYy9saWIvc3JjL2Z3dHNfc21iaW9zLmMKLUBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkICpmd3RzX3NtYmlvc19maW5kX2VudHJ5X3VlZmkoZnd0c19mcmFtZXdvcmsgKmZ3LCBmd3RzX3NtYmlvc19lbnRyeSAqCi0gCWlmICgoYWRkciA9IGZ3dHNfc2Nhbl9lZmlfc3lzdGFiKCJTTUJJT1MiKSkgIT0gTlVMTCkgeworQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHZvaWQgKmZ3dHNfc21iaW9zX2ZpbmRfZW50cnlfdWVmaShmd3RzX2ZyYW1ld29yayAqZncsIGZ3dHNfc21iaW9zX2VudHJ5ICoKICAJCWZ3dHNfc21iaW9zX2VudHJ5ICptYXBwZWRfZW50cnk7CisgCQljb25zdCBzaXplX3Qgc2l6ZSA9IHNpemVvZihmd3RzX3NtYmlvc19lbnRyeSk7CiAgCi0tCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgob2ZmX3QpYWRkciwgc2l6ZW9mKGZ3dHNfc21iaW9zX2VudHJ5KSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgewotKwkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKHVpbnRwdHJfdClhZGRyLCBzaXplb2YoZnd0c19zbWJpb3NfZW50cnkpKSkgIT0gRldUU19NQVBfRkFJTEVEKSB7Ci0gCQkJKmVudHJ5ID0gKm1hcHBlZF9lbnRyeTsKLSAJCQkodm9pZClmd3RzX211bm1hcChtYXBwZWRfZW50cnksIHNpemVvZihmd3RzX3NtYmlvc19lbnRyeSkpOwotIAkJCSp0eXBlICA9IEZXVFNfU01CSU9TOwotQEAgLTg0LDcgKzg0LDcgQEAgc3RhdGljIHZvaWQgKmZ3dHNfc21iaW9zMzBfZmluZF9lbnRyeV91ZWZpKGZ3dHNfZnJhbWV3b3JrICpmdywgZnd0c19zbWJpb3MzMF9lbnQKLSAJaWYgKChhZGRyID0gZnd0c19zY2FuX2VmaV9zeXN0YWIoIlNNQklPUzMiKSkgIT0gTlVMTCkgeworLQkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKG9mZl90KWFkZHIsIHNpemUpKSAhPSBGV1RTX01BUF9GQUlMRUQpIHsKKysJCWlmICgobWFwcGVkX2VudHJ5ID0gZnd0c19tbWFwKCh1aW50cHRyX3QpYWRkciwgc2l6ZSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgeworIAkJCWlmIChmd3RzX3NhZmVfbWVtY3B5KGVudHJ5LCBtYXBwZWRfZW50cnksIHNpemUpID09IEZXVFNfT0spIHsKKyAJCQkJKHZvaWQpZnd0c19tdW5tYXAobWFwcGVkX2VudHJ5LCBzaXplKTsKKyAJCQkJKnR5cGUgID0gRldUU19TTUJJT1M7CitAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgdm9pZCAqZnd0c19zbWJpb3MzMF9maW5kX2VudHJ5X3VlZmkoZnd0c19mcmFtZXdvcmsgKmZ3LCBmd3RzX3NtYmlvczMwX2VudAogIAkJZnd0c19zbWJpb3MzMF9lbnRyeSAqbWFwcGVkX2VudHJ5OworIAkJY29uc3Qgc2l6ZV90IHNpemUgPSBzaXplb2YoZnd0c19zbWJpb3MzMF9lbnRyeSk7CiAgCi0tCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgob2ZmX3QpYWRkciwgc2l6ZW9mKGZ3dHNfc21iaW9zMzBfZW50cnkpKSkgIT0gRldUU19NQVBfRkFJTEVEKSB7Ci0rCQlpZiAoKG1hcHBlZF9lbnRyeSA9IGZ3dHNfbW1hcCgodWludHB0cl90KWFkZHIsIHNpemVvZihmd3RzX3NtYmlvczMwX2VudHJ5KSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgewotIAkJCSplbnRyeSA9ICptYXBwZWRfZW50cnk7Ci0gCQkJKHZvaWQpZnd0c19tdW5tYXAobWFwcGVkX2VudHJ5LCBzaXplb2YoZnd0c19zbWJpb3MzMF9lbnRyeSkpOwotIAkJCXJldHVybiBhZGRyOwotLS0gCi0yLjEzLjEKLQorLQkJaWYgKChtYXBwZWRfZW50cnkgPSBmd3RzX21tYXAoKG9mZl90KWFkZHIsIHNpemUpKSAhPSBGV1RTX01BUF9GQUlMRUQpIHsKKysJCWlmICgobWFwcGVkX2VudHJ5ID0gZnd0c19tbWFwKCh1aW50cHRyX3QpYWRkciwgc2l6ZSkpICE9IEZXVFNfTUFQX0ZBSUxFRCkgeworIAkJCWlmIChmd3RzX3NhZmVfbWVtcmVhZChtYXBwZWRfZW50cnksIHNpemUpID09IEZXVFNfT0spIHsKKyAJCQkJKmVudHJ5ID0gKm1hcHBlZF9lbnRyeTsKKyAJCQkJKHZvaWQpZnd0c19tdW5tYXAobWFwcGVkX2VudHJ5LCBzaXplKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0c19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9md3RzL2Z3dHNfZ2l0LmJiCmluZGV4IDg3YTIzYWYuLmQzZmI2NDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2Z3dHMvZnd0c19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvZnd0cy9md3RzX2dpdC5iYgpAQCAtNSwyNyArNSwyNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTY7bWQ1PTMxZGE1OTBmM2U5ZjNiZDM0ZGNkYjllNGRiNTY4NTE5IgogCi1QViA9ICIxNy4wMy4wMCtnaXQke1NSQ1BWfSIKK1BWID0gIjE4LjA1LjAwK2dpdCR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiMDE1M2VhNTFjYjY0OGIzMDY3YTFiMzI3ZWVlNmEwNzViNmNmYTMzMCIKK1NSQ1JFViA9ICJiMGVjN2FhMmVmNzQzZDExM2ZkOGM1ZTU3YzBjYTNkNWVkZDg2ZjBlIgogU1JDX1VSSSA9ICJnaXQ6Ly9rZXJuZWwudWJ1bnR1LmNvbS9od2UvZnd0cy5naXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pZ25vcmUtY29uc3RhbnQtbG9naWNhbC1vcGVyYW5kLXdhcm5pbmctd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtcG9sbC5oLWluc3RlYWQtb2YtZGVwcmVjYXRlZC1zeXMtcG9sbC5oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItRGVmaW5lLV9fU1dPUkRfVFlQRS1pZi1ub3QtZGVmaW5lZC1ieS1saWJjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtVW5kZWZpbmUtUEFHRV9TSVpFLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWNvcnJlY3QtcHJpbnRmLXF1YWxpZmllci1mb3Itb2ZmX3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtQzk5LWRlZmluZWQtZm9ybWF0LWZvci1wcmludGluZy11aW50NjRfdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXVzZS1pbnRwdHJfdC10by1maXgtcG9pbnRlci10by1pbnQtY2FzdC1pc3N1ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtV2Vycm9yLWZyb20tYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIENPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YWFyY2g2NHxwb3dlcnBjNjQpLiotbGludXgiCiAKLURFUEVORFMgPSAibGlicGNyZSBqc29uLWMgZ2xpYi0yLjAgZHRjIgorREVQRU5EUyA9ICJsaWJwY3JlIGpzb24tYyBnbGliLTIuMCBkdGMgYmlzb24tbmF0aXZlIgogREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnCiAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS9qc29uLWMgLVduby1lcnJvcj11bmtub3duLXByYWdtYXMiCiBMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sZXhlY2luZm8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9wbS1xYS9wbS1xYV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9wbS1xYS9wbS1xYV9naXQuYmIKaW5kZXggMWVlNjU3My4uMDkyOTA5MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvcG0tcWEvcG0tcWFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3BtLXFhL3BtLXFhX2dpdC5iYgpAQCAtNjMsMyArNjMsNiBAQAogICAgIGRvbmUKIH0KIFJERVBFTkRTXyR7UE59ICs9ImJhc2giCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4Njk1Ni8KK0VYQ0xVREVfRlJPTV9XT1JMRF9saWJjLW11c2wgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1SZXZlcnQtTWFrZWZpbGUtZm9yY2Utc3luYy1hZnRlci1idWlsZC1pbi1jYXNlLXJlYm9vLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAxLVJldmVydC1NYWtlZmlsZS1mb3JjZS1zeW5jLWFmdGVyLWJ1aWxkLWluLWNhc2UtcmVib28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY5NzkxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1SZXZlcnQtTWFrZWZpbGUtZm9yY2Utc3luYy1hZnRlci1idWlsZC1pbi1jYXNlLXJlYm9vLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gN2M5NzcxMGJmYzQ0ZDg5NWI3MTExYmVmOWM1NTg2NmYwMGEzNTg5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEzIEF1ZyAyMDE4IDExOjU0OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAiTWFrZWZpbGU6IGZvcmNlIHN5bmMgYWZ0ZXIgYnVpbGQgaW4gY2FzZSByZWJvb3QgbG9zZXMKKyBleGVjdXRhYmxlIgorCitUaGlzIHJldmVydHMgY29tbWl0IGFlNjMyMmIxYmFlYTU2YTU4OTIwN2M5NmUzNThkYWFlOGVkZDBhOGYuCisKK05vdCBuZWVkZWQgZm9yIGNyb3NzLWJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0Nyb3NzIGNvbXBpbGUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYzBkYjcyYzAuLjU3ODFkZGE2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzQ4LDcgKzM0OCw2IEBAIGVuZGlmCisgc3RyZXNzLW5nOiAkKE9CSlMpCisgCUBlY2hvICJMRCAkQCIKKyAJQCQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKE9CSlMpIC1sbSAkKExERkxBR1MpIC1vICRACistCUBzeW5jCisgCisgbWFrZWNvbmZpZzoKKyAJQGlmIFsgISAtcyBjb25maWcgXTsgdGhlbiBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaAppbmRleCBkNjA0Zjg2Li5jMGIzNDQ5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmcvMDAwMS1TZXZlcmFsLWNoYW5nZXMtdG8tZml4LW11c2wtYnVpbGQucGF0Y2gKQEAgLTEsMTEgKzEsMTMgQEAKLUZyb20gNzg0ZGNkMDlkM2YyNjZlMjcxZDAwN2Y0ZmQyNTdlODUwMzY4NzJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbmFyby5vcmc+Ci1EYXRlOiBUdWUsIDE3IE9jdCAyMDE3IDEwOjEzOjIwIC0wNTAwCitGcm9tIDliY2I0ZTE3MGYwMWRiZTBhOWU3YmY2Yjg5OWM1ZDliNTI4M2Q0YzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDExIE5vdiAyMDE4IDIzOjAwOjUzIC0wNTAwCiBTdWJqZWN0OiBbUEFUQ0hdIFNldmVyYWwgY2hhbmdlcyB0byBmaXggbXVzbCBidWlsZAogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCitSZWJhc2VkIHBhdGNoIGZvcjoKKwogc3RyZXNzLXtjb250ZXh0LCBzdGFja21tYXB9LmM6IFNldCB0ZXN0cyB0byBub24taW1wbGVtZW50ZWQgYmVjYXVzZSB1c2VzCiBzd2FwY29udGV4dCwgbXVzbCBwcm92aWRlIHRoZSBkZWZpbml0aW9uIGJ1dCBub3QgdGhlIGltcGxlbWVudGF0aW9uIGR1ZQogICB0byB0aGF0IGZ1bmN0aW9ucyBhcmUgcHJlLVBPU0lYIGFuZCBzZXQgdG8gYmUgZGVwcmVjYXRlZC4KQEAgLTE5LDIwICsyMSwxOSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbmFyby5vcmc+CiBTaWduZWQtb2ZmLWJ5OiBUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KIAogVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCi0KIC0tLQogIGNhY2hlLmMgICAgICAgICAgICB8ICA0ICsrKysKICBzdHJlc3MtbWFkdmlzZS5jICAgfCAgMSArCi0gc3RyZXNzLW1hbGxvYy5jICAgIHwgIDIgKy0KICBzdHJlc3MtcHR5LmMgICAgICAgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KICBzdHJlc3MtcmVzb3VyY2VzLmMgfCAgMSAtCiAgc3RyZXNzLXN0YWNrbW1hcC5jIHwgIDIgKy0KLSA2IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisgNSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY2FjaGUuYyBiL2NhY2hlLmMKLWluZGV4IGZiZjc2NzQuLjkzNmMxZmYgMTAwNjQ0CitpbmRleCBlOGEwZjc5MS4uNGM3YmI0ODYgMTAwNjQ0CiAtLS0gYS9jYWNoZS5jCiArKysgYi9jYWNoZS5jCiBAQCAtMjgsNiArMjgsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgewpAQCAtNDcsMTAgKzQ4LDEwIEBACiAgI2RlZmluZSBTWVNfQ1BVX1BSRUZJWCAgICAgICAgICAgICAgICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdSIKICAjZGVmaW5lIEdMT0JfUEFUVEVSTiBTWVNfQ1BVX1BSRUZJWCAgIi9jcHVbMC05XSoiCiBkaWZmIC0tZ2l0IGEvc3RyZXNzLW1hZHZpc2UuYyBiL3N0cmVzcy1tYWR2aXNlLmMKLWluZGV4IDllNzFlMTEuLmRkZjhkMmQgMTAwNjQ0CitpbmRleCBiMmUzNDk3Zi4uNzdlNDNhOTEgMTAwNjQ0CiAtLS0gYS9zdHJlc3MtbWFkdmlzZS5jCiArKysgYi9zdHJlc3MtbWFkdmlzZS5jCi1AQCAtMTQ3LDYgKzE0Nyw3IEBAIHN0YXRpYyBpbnQgc3RyZXNzX3JhbmRvbV9hZHZpc2UoY29uc3QgYXJnc190ICphcmdzKQorQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGF0aWMgaW50IHN0cmVzc19yYW5kb21fYWR2aXNlKGNvbnN0IGFyZ3NfdCAqYXJncykKICAjaWYgZGVmaW5lZChNQURWX1NPRlRfT0ZGTElORSkKICAJaWYgKGFkdmlzZSA9PSBNQURWX1NPRlRfT0ZGTElORSkgewogIAkJc3RhdGljIGludCBzb2Z0X29mZmxpbmVfY291bnQ7CkBAIC01OCwyMSArNTksOCBAQAogIAogIAkJLyogLi5hbmQgbWluaW1pemUgbnVtYmVyIG9mIHNvZnQgb2ZmbGluZSBwYWdlcyAqLwogIAkJaWYgKChzb2Z0X29mZmxpbmVfY291bnQgPj0gTlVNX1NPRlRfT0ZGTElORV9NQVgpIHx8Ci1kaWZmIC0tZ2l0IGEvc3RyZXNzLW1hbGxvYy5jIGIvc3RyZXNzLW1hbGxvYy5jCi1pbmRleCBhNDZiOGM2Li40Mjc4MjdhIDEwMDY0NAotLS0tIGEvc3RyZXNzLW1hbGxvYy5jCi0rKysgYi9zdHJlc3MtbWFsbG9jLmMKLUBAIC05OSw3ICs5OSw3IEBAIGludCBzdHJlc3NfbWFsbG9jKGNvbnN0IGFyZ3NfdCAqYXJncykKLSAJCQltYWxsb2NfbWF4ID0gTUlOX01BTExPQ19NQVg7Ci0gCX0KLSAKLS0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi0rI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKE1fTU1BUF9USFJFU0hPTEQpCi0gCWlmIChnZXRfc2V0dGluZygibWFsbG9jLXRocmVzaG9sZCIsICZtYWxsb2NfdGhyZXNob2xkKSkKLSAJCSh2b2lkKW1hbGxvcHQoTV9NTUFQX1RIUkVTSE9MRCwgKGludCltYWxsb2NfdGhyZXNob2xkKTsKLSAjZW5kaWYKIGRpZmYgLS1naXQgYS9zdHJlc3MtcHR5LmMgYi9zdHJlc3MtcHR5LmMKLWluZGV4IDFiZDFmYmQuLmIxZmU1NzMgMTAwNjQ0CitpbmRleCA0ZGQ4OGFiOS4uYzc5YTcwMjEgMTAwNjQ0CiAtLS0gYS9zdHJlc3MtcHR5LmMKICsrKyBiL3N0cmVzcy1wdHkuYwogQEAgLTI2LDcgKzI2LDYgQEAKQEAgLTgzLDcgKzcxLDcgQEAKICAjaW5jbHVkZSA8dGVybWlvcy5oPgogIAogIHR5cGVkZWYgc3RydWN0IHsKLUBAIC0xMDgsNyArMTA3LDYgQEAgaW50IHN0cmVzc19wdHkoY29uc3QgYXJnc190ICphcmdzKQorQEAgLTExMSw3ICsxMTAsNiBAQCBzdGF0aWMgaW50IHN0cmVzc19wdHkoY29uc3QgYXJnc190ICphcmdzKQogIAkJICovCiAgCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgCQkJc3RydWN0IHRlcm1pb3MgaW9zOwpAQCAtOTEsNyArNzksNyBAQAogIAkJCXN0cnVjdCB3aW5zaXplIHdzOwogIAkJCWludCBhcmc7CiAgCi1AQCAtMTMwLDIyICsxMjgsNiBAQCBpbnQgc3RyZXNzX3B0eShjb25zdCBhcmdzX3QgKmFyZ3MpCitAQCAtMTMzLDIyICsxMzEsNiBAQCBzdGF0aWMgaW50IHN0cmVzc19wdHkoY29uc3QgYXJnc190ICphcmdzKQogIAkJCWlmIChpb2N0bChwdHlzW2ldLnNsYXZlLCBUQ1NFVFNGLCAmaW9zKSA8IDApCiAgCQkJCXByX2ZhaWxfZXJyKCJpb2N0bCBUQ1NFVFNGIG9uIHNsYXZlIHB0eSIpOwogICNlbmRpZgpAQCAtMTE1LDEwICsxMDMsMTAgQEAKICAJCQlpZiAoaW9jdGwocHR5c1tpXS5zbGF2ZSwgVElPQ0dMQ0tUUk1JT1MsICZpb3MpIDwgMCkKICAJCQkJcHJfZmFpbF9lcnIoImlvY3RsIFRJT0NHTENLVFJNSU9TIG9uIHNsYXZlIHB0eSIpOwogZGlmZiAtLWdpdCBhL3N0cmVzcy1yZXNvdXJjZXMuYyBiL3N0cmVzcy1yZXNvdXJjZXMuYwotaW5kZXggOTU4Yzk5YS4uYWY3OWFiZCAxMDA2NDQKK2luZGV4IGYzZGNmYjM4Li44NmY5YTViYSAxMDA2NDQKIC0tLSBhL3N0cmVzcy1yZXNvdXJjZXMuYwogKysrIGIvc3RyZXNzLXJlc291cmNlcy5jCi1AQCAtMzEsNyArMzEsNiBAQAorQEAgLTI4LDcgKzI4LDYgQEAKICAjaW5jbHVkZSA8c3lzL2lub3RpZnkuaD4KICAjZW5kaWYKICAjaWYgZGVmaW5lZChfX2xpbnV4X18pCkBAIC0xMjcsNyArMTE1LDcgQEAKICAjZW5kaWYKICAjaWYgZGVmaW5lZChIQVZFX0xJQl9QVEhSRUFEKSAmJiBkZWZpbmVkKF9fbGludXhfXykKIGRpZmYgLS1naXQgYS9zdHJlc3Mtc3RhY2ttbWFwLmMgYi9zdHJlc3Mtc3RhY2ttbWFwLmMKLWluZGV4IDljODNhNjkuLjI5ODRmMDkgMTAwNjQ0CitpbmRleCBjMmY0YzMxZC4uNTQzMDg3NzcgMTAwNjQ0CiAtLS0gYS9zdHJlc3Mtc3RhY2ttbWFwLmMKICsrKyBiL3N0cmVzcy1zdGFja21tYXAuYwogQEAgLTI0LDcgKzI0LDcgQEAKQEAgLTEzOSwzICsxMjcsNiBAQAogIAogICNpbmNsdWRlIDx1Y29udGV4dC5oPgogIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3Qvc3RyZXNzLW5nL3N0cmVzcy1uZy8wMDAyLXN0cmVzcy1mY250bC1maXgtYnVpbGQtZm9yLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzMjg3ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb20gZmFhZGJjMTQ3Mzk0Y2VhOTI3OGJjMjQ5NGYzM2UzNTIxZDg4ZTc0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgotRGF0ZTogVHVlLCA5IEphbiAyMDE4IDE4OjM4OjQ1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0cmVzcy1mY250bDogZml4IGJ1aWxkIGZvciBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IFRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPgotCi1VcHN0cmVhbS1zdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gc3RyZXNzLWZjbnRsLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3N0cmVzcy1mY250bC5jIGIvc3RyZXNzLWZjbnRsLmMKLWluZGV4IDJlYTg2N2IuLmU5MWIzNDUgMTAwNjQ0Ci0tLS0gYS9zdHJlc3MtZmNudGwuYwotKysrIGIvc3RyZXNzLWZjbnRsLmMKLUBAIC00MTUsNiArNDE1LDcgQEAgb2ZkX2xvY2tfYWJvcnQ6CXsgLyogTm93dCAqLyB9Ci0gI2lmIChkZWZpbmVkKEZfR0VUX0ZJTEVfUldfSElOVCkgJiYgZGVmaW5lZChGX1NFVF9GSUxFX1JXX0hJTlQpKSB8IFwKLSAgICAgKGRlZmluZWQoRl9HRVRfUldfSElOVCkgJiYgZGVmaW5lZChGX1NFVF9SV19ISU5UKSkKLSAJewotKwkJaW50IHJldDsKLSAJCXNpemVfdCBpOwotIAkJdW5zaWduZWQgbG9uZyBoaW50OwotIAkJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgaGludHNbXSA9IHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ZhYjQzMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgdG9vbCB0byBsb2FkIGFuZCBzdHJlc3MgYSBjb21wdXRlciBzeXN0ZW0iCi1IT01FUEFHRSA9ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3N0cmVzcy1uZy8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLURFUEVORFMgPSAiemxpYiBsaWJhaW8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItc3RyZXNzLWZjbnRsLWZpeC1idWlsZC1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovLzAwMDEtU2V2ZXJhbC1jaGFuZ2VzLXRvLWZpeC1tdXNsLWJ1aWxkLnBhdGNoIFwKLSAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMWY4YjZjMmMyODMwNzA0ZDJhMjgxNGMxNjA4MmQ0OGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDJjYWMzNGE1Y2IwNDExOTdhZjYwYzE4Njc4NDRjNmNiYjA4OWE2ZDEwYTM4Y2RjZjdiOGYyN2JmYWE2ZWY4ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID89ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA/PSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLUNGTEFHUyArPSAiLVdhbGwgLVdleHRyYSAtRFZFUlNJT049JyIkKFZFUlNJT04pIiciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc3RyZXNzLW5nICR7RH0ke2JpbmRpcn0vc3RyZXNzLW5nCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuNDUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMDkuNDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U4ZjJkNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4wOS40NS5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIkEgdG9vbCB0byBsb2FkIGFuZCBzdHJlc3MgYSBjb21wdXRlciBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3N0cmVzcy1uZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiemxpYiBsaWJhaW8iCisKK1NSQ19VUkkgPSAiaHR0cDovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy90YXJiYWxscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LU1ha2VmaWxlLWZvcmNlLXN5bmMtYWZ0ZXItYnVpbGQtaW4tY2FzZS1yZWJvby5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLVNldmVyYWwtY2hhbmdlcy10by1maXgtbXVzbC1idWlsZC5wYXRjaCBcCisgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjAzNzQ0YzJlYjY4YmY3ZTlhMzAwZTc4ZTM5N2YzNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDc0MWUzMDA0YmY1OTBiYjdhZjNkYjk3OWE0NmZlODliZWU3YWFhZDYwNjVjZDFkODdkMGI3ZmE0OTA0NmNiMiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID89ICJodHRwOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA/PSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK0NGTEFHUyArPSAiLVdhbGwgLVdleHRyYSAtRFZFUlNJT049JyIkKFZFUlNJT04pIiciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc3RyZXNzLW5nICR7RH0ke2JpbmRpcn0vc3RyZXNzLW5nCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL1JFQURNRQppbmRleCA2N2YyOTEwLi4zYzc4N2Y0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9SRUFETUUKQEAgLTUyLDcgKzUyLDcgQEAKIFRoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKIAogICBVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlCi0gIGJyYW5jaDogbWFzdGVyCisgIGJyYW5jaDogdGh1ZAogICByZXZpc2lvbjogSEVBRAogICBwcmlvOiBkZWZhdWx0CiAKQEAgLTc1LDE0ICs3NSwxMiBAQAogLS0tLS0tLS0tLS0KIAogU2VuZCBwYXRjaGVzIC8gcHVsbCByZXF1ZXN0cyB0byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyB3aXRoCi0nW21ldGEtcGVybF0nIGluIHRoZSBzdWJqZWN0LgorJ1ttZXRhLXBlcmxdW3RodWRdJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcGVybF1bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEtcGVybF1bdGh1ZF1bUEFUQ0gnCiAKLUxheWVyIG1haW50YWluZXJzOgotICAgIEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLSAgICBUaW0gIm1vdG8tdGltbyIgT3JsaW5nIDx0aWNvdGltb0BnbWFpbC5jb20+CitUaHVkIG1haW50YWluZXJzOiBBcm1pbiBrdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiBMaWNlbnNlCiAtLS0tLS0tCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgppbmRleCBlY2U2ZGQwLi5iMmJiMzc5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDQgKzE1LDQgQEAKIAogTEFZRVJERVBFTkRTX3BlcmwtbGF5ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9wZXJsLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfcGVybC1sYXllciA9ICJ0aHVkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODc2NmE3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLVNVTU1BUlkgPSAiQW5hbHl6ZXMgbG9nIGZpbGVzIGFuZCBzZW5kcyBub3RpY2VhYmxlIGV2ZW50cyBhcyBlbWFpbCIKLURFU0NSSVBUSU9OID0gIlwKLUxvZ2NoZWNrIGlzIGEgc2ltcGxlIHV0aWxpdHkgd2hpY2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBcCi10byB2aWV3IHRoZSBsb2ctZmlsZXMgd2hpY2ggYXJlIHByb2R1Y2VkIHVwb24gaG9zdHMgdW5kZXIgdGhlaXIgY29udHJvbC4gXAotSXQgZG9lcyB0aGlzIGJ5IG1haWxpbmcgc3VtbWFyaWVzIG9mIHRoZSBsb2ctZmlsZXMgdG8gdGhlbSwgYWZ0ZXIgZmlyc3QgXAotZmlsdGVyaW5nIG91dCAibm9ybWFsIiBlbnRyaWVzLiBcCi1Ob3JtYWwgZW50cmllcyBhcmUgZW50cmllcyB3aGljaCBtYXRjaCBvbmUgb2YgdGhlIG1hbnkgaW5jbHVkZWQgcmVndWxhciBcCi1leHByZXNzaW9uIGZpbGVzIGNvbnRhaW4gaW4gdGhlIGRhdGFiYXNlLiIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLUhPTUVQQUdFID0gImh0dHA6Ly9sb2djaGVjay5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZWJpYW4ub3JnL2dpdC9sb2djaGVjay9sb2djaGVjay5naXQgXAotICAgICAgICAgICBmaWxlOi8vOTlfbG9nY2hlY2sgXAotIgotU1JDUkVWID0gIjBhNTg2NWQ4MGZhMzRjNTUzODdhMTkxN2EzZTZmODg1YmNmZjdmMWQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItbSAtZyAke0JQTn0gLUcgYWRtIC1yIC1kICR7bG9jYWxzdGF0ZWRpcn0vbGliLyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1zIC9iaW4vZmFsc2UgLWMgJ2xvZ2NoZWNrIGFjY291bnQnICR7QlBOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yICR7QlBOfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICAjIEZpeCBRQSBJc3N1ZQotICAgIHNlZCAtaSAnL2luc3RhbGwgLWQgJChERVNURElSKVwvdmFyXC9sb2NrXC9sb2djaGVjay9zL14vIy8nIE1ha2VmaWxlCi0KLSAgICAjICJtYWtlIGluc3RhbGwiIGRvIG5vdCBpbnN0YWxsIHRoZSBtYW5wYWdlcy4gSW5zdGFsbCB0aGVtIG1hbnVhbGx5LgotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke21hbmRpcn0vbWFuMQotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9nY2hlY2stdGVzdC4xICR7RH0ke21hbmRpcn0vbWFuMS8KLSAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ3RhaWwuOCAke0R9JHttYW5kaXJ9L21hbjgvCi0gICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2d0YWlsMi44ICR7RH0ke21hbmRpcn0vbWFuOC8KLQotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotICAgIGluc3RhbGwgLW0gNjQ0IGRlYmlhbi9sb2djaGVjay5jcm9uLmQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kL2xvZ2NoZWNrCi0gICAgaW5zdGFsbCAtbSA3NTUgLWQgJHtEfS92YXIvbGliL2xvZ2NoZWNrCi0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci0KLSAgICAjIGluc3RhbGwgaGVhZGVyLnR4dCBmb3IgZ2VuZXJhdGVkIG1haWxzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGViaWFuL2hlYWRlci50eHQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59Ci0KLSAgICBjaG93biAtUiAke0JQTn06JHtCUE59ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0KLSAgICBjaG93biAtUiByb290OiR7QlBOfSAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KLQotICAgICMgRG9uJ3QgaW5zdGFsbCAvdmFyL2xvY2sgd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X2xvZ2NoZWNrICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgZmkKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAvdmFyL2xvY2svbG9nY2hlY2sgMDc1NSBsb2djaGVjayBsb2djaGVjayAtIiBcCi0gICAgICAgICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvbG9nY2hlY2suY29uZgotICAgIGZpCi19Ci0KLVZJUlRVQUwtUlVOVElNRV9zeXNsb2cgPz89ICJyc3lzbG9nIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgYmFzaCBcCi0gICAgY3JvbmllIFwKLSAgICBkZWJpYW51dGlscy1ydW4tcGFydHMgXAotICAgIGdyZXAgXAotICAgIGxvY2tmaWxlLXByb2dzIFwKLSAgICBtaW1lLWNvbnN0cnVjdCBcCi0gICAgcGVybCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCi0gICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKLSAgICAke1ZJUlRVQUwtUlVOVElNRV9zeXNsb2d9IFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbG9ndGFpbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLWV4dGVuZGVkL2xvZ2NoZWNrL2xvZ2NoZWNrXzEuMy4xOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzNhYzJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtZXh0ZW5kZWQvbG9nY2hlY2svbG9nY2hlY2tfMS4zLjE5LmJiCkBAIC0wLDAgKzEsNzggQEAKK1NVTU1BUlkgPSAiQW5hbHl6ZXMgbG9nIGZpbGVzIGFuZCBzZW5kcyBub3RpY2VhYmxlIGV2ZW50cyBhcyBlbWFpbCIKK0RFU0NSSVBUSU9OID0gIlwKK0xvZ2NoZWNrIGlzIGEgc2ltcGxlIHV0aWxpdHkgd2hpY2ggaXMgZGVzaWduZWQgdG8gYWxsb3cgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBcCit0byB2aWV3IHRoZSBsb2ctZmlsZXMgd2hpY2ggYXJlIHByb2R1Y2VkIHVwb24gaG9zdHMgdW5kZXIgdGhlaXIgY29udHJvbC4gXAorSXQgZG9lcyB0aGlzIGJ5IG1haWxpbmcgc3VtbWFyaWVzIG9mIHRoZSBsb2ctZmlsZXMgdG8gdGhlbSwgYWZ0ZXIgZmlyc3QgXAorZmlsdGVyaW5nIG91dCAibm9ybWFsIiBlbnRyaWVzLiBcCitOb3JtYWwgZW50cmllcyBhcmUgZW50cmllcyB3aGljaCBtYXRjaCBvbmUgb2YgdGhlIG1hbnkgaW5jbHVkZWQgcmVndWxhciBcCitleHByZXNzaW9uIGZpbGVzIGNvbnRhaW4gaW4gdGhlIGRhdGFiYXNlLiIKK1NFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sb2djaGVjay5vcmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgorCitTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9sLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzk5X2xvZ2NoZWNrIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YjUwZDEwZGE2ZjE4NTIyODYyN2M1NWZkZDUxZjYyNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjI5NGMwOTJiMjExNWVjYTNkMDU0YzU3Nzc4NzE4YzkxZGQyZTBmZDFjNDY2NTBiNzM0M2MyYTkyNjcyY2E5IgorCitpbmhlcml0IHVzZXJhZGQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLW0gLWcgJHtCUE59IC1HIGFkbSAtciAtZCAke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke0JQTn0gXAorICAgICAgICAgICAgICAgICAgICAgICAtcyAvYmluL2ZhbHNlIC1jICdsb2djaGVjayBhY2NvdW50JyAke0JQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciAke0JQTn0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgIyBGaXggUUEgSXNzdWUKKyAgICBzZWQgLWkgJy9pbnN0YWxsIC1kICQoREVTVERJUilcL3ZhclwvbG9ja1wvbG9nY2hlY2svcy9eLyMvJyBNYWtlZmlsZQorCisgICAgIyAibWFrZSBpbnN0YWxsIiBkbyBub3QgaW5zdGFsbCB0aGUgbWFucGFnZXMuIEluc3RhbGwgdGhlbSBtYW51YWxseS4KKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjEKKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDY0NCBkb2NzL2xvZ2NoZWNrLXRlc3QuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgaW5zdGFsbCAtbSA2NDQgZG9jcy9sb2d0YWlsLjggJHtEfSR7bWFuZGlyfS9tYW44LworICAgIGluc3RhbGwgLW0gNjQ0IGRvY3MvbG9ndGFpbDIuOCAke0R9JHttYW5kaXJ9L21hbjgvCisKKyAgICBpbnN0YWxsIC1tIDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQKKyAgICBpbnN0YWxsIC1tIDY0NCBkZWJpYW4vbG9nY2hlY2suY3Jvbi5kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZC9sb2djaGVjaworICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0vdmFyL2xpYi9sb2djaGVjaworCisgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorCisgICAgIyBpbnN0YWxsIGhlYWRlci50eHQgZm9yIGdlbmVyYXRlZCBtYWlscworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi9oZWFkZXIudHh0ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorCisgICAgY2hvd24gLVIgJHtCUE59OiR7QlBOfSAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvJHtCUE59CisgICAgY2hvd24gLVIgcm9vdDoke0JQTn0gJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59CisKKyAgICAjIERvbid0IGluc3RhbGwgL3Zhci9sb2NrIHdoZW4gcG9wdWxhdGluZyByb290ZnMuIERvIGl0IHRocm91Z2ggdm9sYXRpbGUKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9sb2djaGVjayAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisgICAgICAgIGVjaG8gImQgL3Zhci9sb2NrL2xvZ2NoZWNrIDA3NTUgbG9nY2hlY2sgbG9nY2hlY2sgLSIgXAorICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2xvZ2NoZWNrLmNvbmYKKyAgICBmaQorfQorCitWSVJUVUFMLVJVTlRJTUVfc3lzbG9nID8/PSAicnN5c2xvZyIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgIGJhc2ggXAorICAgIGNyb25pZSBcCisgICAgZGViaWFudXRpbHMtcnVuLXBhcnRzIFwKKyAgICBncmVwIFwKKyAgICBsb2NrZmlsZS1wcm9ncyBcCisgICAgbWltZS1jb25zdHJ1Y3QgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgIHBlcmwtbW9kdWxlLWdldG9wdC1zdGQgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCisgICAgJHtWSVJUVUFMLVJVTlRJTUVfc3lzbG9nfSBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2xvZ3RhaWwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTJhNWYwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvYWRkdXNlci9hZGR1c2VyXzMuMTE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJhIHV0aWxpdHkgdG8gYWRkIHVzZXJzL2dyb3VwcyB0byB0aGUgc3lzdGVtIgotREVTQ1JJUFRJT04gPSAiYWRkdXNlciwgYWRkZ3JvdXAgLSBhZGQgYSB1c2VyIG9yIGdyb3VwIHRvIHRoZSBzeXN0ZW0iCi1IT01FUEFHRSA9ICJodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYWRkdXNlci8iCi1TRUNUSU9OID0gImJhc2UvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1jYWVkNDlhYjE2NmYyMmVmMzFiZjExMjdmNTU4ZDBlZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FkZHVzZXItYWRkLU0tb3B0aW9uLWZvci11c2VyYWRkLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImUwNDJhNTg0MmI4ZjI0MzEyZDZmNWE5OWExYWY4ZjJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZDgxMWFkM2JhMTdkMjc5NGIxNGQxOWFjZDFkNmI1N2Y5ZGQzMWQ5MjUwZDUxZTc4Njg5NWRlZTJkYWVhYzAiCi0KLWluaGVyaXQgY3Bhbi1iYXNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vYWRkdXNlciAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2RlbHVzZXIgJHtEfSR7c2JpbmRpcn0KLQotICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L0FkZHVzZXJDb21tb24ucG0gJHtEfSR7bGliZGlyfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0RlYmlhbi9BZGR1c2VyQ29tbW9uLnBtCi0gICAgc2VkIC1pIC1lICJzL1ZFUlNJT04vJHtQVn0vIiAke0R9JHtzYmluZGlyfS8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouY29uZiAke0R9LyR7c3lzY29uZmRpcn0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW41Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouY29uZi41ICR7RH0ke21hbmRpcn0vbWFuNQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jLyouOCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci0gICAgY3AgLXJmICR7U30vZXhhbXBsZXMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBzaGFkb3cgXAotICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAotIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhZGR1c2VyIGRlbHVzZXIgYWRkZ3JvdXAgZGVsZ3JvdXAiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI2MCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGR1c2VyXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGVsdXNlcl0gPSAiJHtzYmluZGlyfS9kZWx1c2VyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZGdyb3VwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbGdyb3VwIgotQUxURVJOQVRJVkVfVEFSR0VUW2FkZGdyb3VwXSA9ICIke3NiaW5kaXJ9L2FkZHVzZXIuJHtCUE59IgotQUxURVJOQVRJVkVfVEFSR0VUW2RlbGdyb3VwXSA9ICIke3NiaW5kaXJ9L2RlbHVzZXIuJHtCUE59IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2FkZHVzZXIvYWRkdXNlcl8zLjExOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjBhN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9hZGR1c2VyL2FkZHVzZXJfMy4xMTguYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJhIHV0aWxpdHkgdG8gYWRkIHVzZXJzL2dyb3VwcyB0byB0aGUgc3lzdGVtIgorREVTQ1JJUFRJT04gPSAiYWRkdXNlciwgYWRkZ3JvdXAgLSBhZGQgYSB1c2VyIG9yIGdyb3VwIHRvIHRoZSBzeXN0ZW0iCitIT01FUEFHRSA9ICJodHRwczovL3NhbHNhLmRlYmlhbi5vcmcvZGViaWFuL2FkZHVzZXIiCitTRUNUSU9OID0gImJhc2UvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1jYWVkNDlhYjE2NmYyMmVmMzFiZjExMjdmNTU4ZDBlZiIKKworU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvZGViaWFuLythcmNoaXZlL3ByaW1hcnkvK3NvdXJjZWZpbGVzL2FkZHVzZXIvJHtQVn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGR1c2VyLWFkZC1NLW9wdGlvbi1mb3ItdXNlcmFkZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NGJhMjQ3NWViZGFhZmM5NjEzMjM2YmRkYTMyMWM5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZTllZWE2NjFjOWFhYzZiMmM3OTFiZmNjMWRlM2E5YzZhNDIyZDQ1YzhmM2QzOGVkNDE3NzM3ZWQzMTY2ZmZjIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitpbmhlcml0IGNwYW4tYmFzZSB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2FkZHVzZXIgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9kZWx1c2VyICR7RH0ke3NiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtTfS9BZGR1c2VyQ29tbW9uLnBtICR7RH0ke2xpYmRpcn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfS9EZWJpYW4vQWRkdXNlckNvbW1vbi5wbQorICAgIHNlZCAtaSAtZSAicy9WRVJTSU9OLyR7UFZ9LyIgJHtEfSR7c2JpbmRpcn0vKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8qLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLmNvbmYuNSAke0R9JHttYW5kaXJ9L21hbjUKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy8qLjggJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtZCAke0R9JHtkb2NkaXJ9LyR7QlBOfQorICAgIGNwIC1yZiAke1N9L2V4YW1wbGVzICR7RH0ke2RvY2Rpcn0vJHtCUE59Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgc2hhZG93IFwKKyAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBcCisgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkdXNlciBkZWx1c2VyIGFkZGdyb3VwIGRlbGdyb3VwIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkdXNlcl0gPSAiJHtzYmluZGlyfS9hZGR1c2VyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2RlbHVzZXJdID0gIiR7c2JpbmRpcn0vZGVsdXNlciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGRncm91cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWxncm91cCIKK0FMVEVSTkFUSVZFX1RBUkdFVFthZGRncm91cF0gPSAiJHtzYmluZGlyfS9hZGR1c2VyLiR7QlBOfSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtkZWxncm91cF0gPSAiJHtzYmluZGlyfS9kZWx1c2VyLiR7QlBOfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3J5cHQvbGliY3J5cHQtb3BlbnNzbC1ndWVzc18wLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjcnlwdC9saWJjcnlwdC1vcGVuc3NsLWd1ZXNzXzAuMTEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiZTA0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3J5cHQvbGliY3J5cHQtb3BlbnNzbC1ndWVzc18wLjExLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiR3Vlc3MgT3BlblNTTCBpbmNsdWRlIHBhdGgiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWE5MTRjYzI3MThlOGQ1M2JkNzc0NGQ5NmU2NmMwM2MiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9DcnlwdC9DcnlwdC1PcGVuU1NMLUd1ZXNzLSR7UFZ9LnRhci5neiAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNzY4ZmUyYzA3ODI2YjBhYzllYTYwNGM3OWY5MzAzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTZiMThlMzhjYjg1MmNiYWQ4MGE1OGNkOTBjMzk1YjQwODE5ZDRkMDFlMGFiMzdlNzcwMzE0OTA5NGQ3MTY3IgorCitERVBFTkRTICs9ICJvcGVuc3NsIgorCitSREVQRU5EU18ke1BOfT0icGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLWV4cG9ydGVyIHBlcmwtbW9kdWxlLXN5bWJvbCBwZXJsLW1vZHVsZS1maWxlLXNwZWMiCisKK0VYVFJBX0NQQU5GTEFHUyA9ICJJTkM9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0nIExJQlM9Jy1MJHtTVEFHSU5HX0xJQkRJUn0gLWxzc2wgLUwke1NUQUdJTkdfRElSX1RBUkdFVH0ke2Jhc2VfbGliZGlyfSAtbGNyeXB0byciCisKK1MgPSAiJHtXT1JLRElSfS9DcnlwdC1PcGVuU1NMLUd1ZXNzLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNyeXB0L2xpYmNyeXB0LW9wZW5zc2wtcnNhLXBlcmxfMC4yOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3J5cHQvbGliY3J5cHQtb3BlbnNzbC1yc2EtcGVybF8wLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM2MTBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY3J5cHQvbGliY3J5cHQtb3BlbnNzbC1yc2EtcGVybF8wLjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJDcnlwdCBPcGVuc3NsIFJTQSBjcGFuIG1vZHVsZSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zODVjNTU2NTM4ODZhY2FjMzgyMTk5OWEzY2NkMTdiMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL0NyeXB0L0NyeXB0LU9wZW5TU0wtUlNBLSR7UFZ9LnRhci5neiAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NjIxN2E1MDM2ZmM2Mzc3OWMzMDQyMGI1ZmQ4NDEyOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzU3Zjk3NzQ2NGJiM2E4MTg0Y2YyZDMzNDE4NTFhMTBkNTUxNWI0YjJiMGRmYjg4YmY3ODk5NWMwZGVkN2JlIgotCi1ERVBFTkRTICs9ICJvcGVuc3NsIgotCi1SREVQRU5EU18ke1BOfT0ibGliY3J5cHQtb3BlbnNzbC1yYW5kb20tcGVybCIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0nLUkke1NUQUdJTkdfSU5DRElSfScgTElCUz0nLUwke1NUQUdJTkdfTElCRElSfSAtbHNzbCAtTCR7U1RBR0lOR19ESVJfVEFSR0VUfSR7YmFzZV9saWJkaXJ9IC1sY3J5cHRvJyIKLQotUyA9ICIke1dPUktESVJ9L0NyeXB0LU9wZW5TU0wtUlNBLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgT1RIRVJMREZMQUdTPSctV2wsLXJwYXRoJwotICAgIGNwYW5fZG9fY29tcGlsZQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjcnlwdC9saWJjcnlwdC1vcGVuc3NsLXJzYS1wZXJsXzAuMzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNyeXB0L2xpYmNyeXB0LW9wZW5zc2wtcnNhLXBlcmxfMC4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTJhZDhhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjcnlwdC9saWJjcnlwdC1vcGVuc3NsLXJzYS1wZXJsXzAuMzAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJDcnlwdCBPcGVuc3NsIFJTQSBjcGFuIG1vZHVsZSIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjdjZWVjYzVkOWE5MWE1YTBkMDAzYmE1MGMyNjM0NiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL0NyeXB0L0NyeXB0LU9wZW5TU0wtUlNBLSR7UFZ9LnRhci5neiAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMGJjYTJmYzZkMGJhMWFhMzI5ZjIyNzQyNGFlODdkNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyM2UxMzUzMTM5N2FmMTAyZGI0ZmQyNGJjZjcwMTM3YWRkN2M4NWMyM2NjYTY5N2M0M2FhNzFjMjk1OWEyOWFjIgorCitERVBFTkRTICs9ICJsaWJjcnlwdC1vcGVuc3NsLWd1ZXNzLW5hdGl2ZSBvcGVuc3NsIgorCitSREVQRU5EU18ke1BOfT0ibGliY3J5cHQtb3BlbnNzbC1yYW5kb20tcGVybCIKKworRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0nLUkke1NUQUdJTkdfSU5DRElSfScgTElCUz0nLUwke1NUQUdJTkdfTElCRElSfSAtbHNzbCAtTCR7U1RBR0lOR19ESVJfVEFSR0VUfSR7YmFzZV9saWJkaXJ9IC1sY3J5cHRvJyIKKworUyA9ICIke1dPUktESVJ9L0NyeXB0LU9wZW5TU0wtUlNBLSR7UFZ9IgorCitpbmhlcml0IGNwYW4KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgT1RIRVJMREZMQUdTPSctV2wsLXJwYXRoJworICAgIGNwYW5fZG9fY29tcGlsZQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA1NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE3OGJjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA1NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBsaWJyYXJ5IGZvciB0cmFuc3BhcmVudCBTU0wiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBpcyBhIHRydWUgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgSU86OlNvY2tldDo6SU5FVCB0aGF0IFwKLXVzZXMgU1NMIHRvIGVuY3J5cHQgZGF0YSBiZWZvcmUgaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSByZW1vdGUgc2VydmVyIFwKLW9yIGNsaWVudC4gSU86OlNvY2tldDo6U1NMIHN1cHBvcnRzIGFsbCB0aGUgZXh0cmEgZmVhdHVyZXMgdGhhdCBvbmUgXAotbmVlZHMgdG8gd3JpdGUgYSBmdWxsLWZlYXR1cmVkIFNTTCBjbGllbnQgb3Igc2VydmVyIGFwcGxpY2F0aW9uOiBcCi1tdWx0aXBsZSBTU0wgY29udGV4dHMsIGNpcGhlciBzZWxlY3Rpb24sIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiwgYW5kIFwKLVNTTCB2ZXJzaW9uIHNlbGVjdGlvbi4gQXMgYW4gZXh0cmEgYm9udXMsIGl0IHdvcmtzIHBlcmZlY3RseSB3aXRoIFwKLW1vZF9wZXJsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9JTy1Tb2NrZXQtU1NMLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjB8R1BMdjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTExO2VuZGxpbmU9MTE7bWQ1PTk2M2NlMjgyMjgzNDc4NzVhY2U2ODJkZTU2ZWVmOGU4IgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIGxpYm5ldC1zc2xlYXktcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYXV0b2xvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldCBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUy9TVS9TVUxMUi9JTy1Tb2NrZXQtU1NMLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMWI0MTJlMjhkMTA3YzcxNmU3Y2E2MzdlMmI3ZjhiZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmVhMDRlOWEzMzZhN2QzY2E5YWE2MDRjMGM1YjVhYWYzZWZhNTEzY2VmZWNmYzczY2M3OWNlZWI1MTMxZTRiIgotCi1TID0gIiR7V09SS0RJUn0vSU8tU29ja2V0LVNTTC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQlVHUyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQ2hhbmdlcyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgLXBSUCAke1N9L2RvY3MgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vY2VydHMgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vZXhhbXBsZSAke0R9JHtkb2NkaXJ9LyR7UE59LwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtciAke0J9L2NlcnRzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGY4ODA4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNjAuYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJQZXJsIGxpYnJhcnkgZm9yIHRyYW5zcGFyZW50IFNTTCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGEgdHJ1ZSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBJTzo6U29ja2V0OjpJTkVUIHRoYXQgXAordXNlcyBTU0wgdG8gZW5jcnlwdCBkYXRhIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIHJlbW90ZSBzZXJ2ZXIgXAorb3IgY2xpZW50LiBJTzo6U29ja2V0OjpTU0wgc3VwcG9ydHMgYWxsIHRoZSBleHRyYSBmZWF0dXJlcyB0aGF0IG9uZSBcCituZWVkcyB0byB3cml0ZSBhIGZ1bGwtZmVhdHVyZWQgU1NMIGNsaWVudCBvciBzZXJ2ZXIgYXBwbGljYXRpb246IFwKK211bHRpcGxlIFNTTCBjb250ZXh0cywgY2lwaGVyIHNlbGVjdGlvbiwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgXAorU1NMIHZlcnNpb24gc2VsZWN0aW9uLiBBcyBhbiBleHRyYSBib251cywgaXQgd29ya3MgcGVyZmVjdGx5IHdpdGggXAorbW9kX3BlcmwuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0lPLVNvY2tldC1TU0wvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMTttZDU9OTYzY2UyODIyODM0Nzg3NWFjZTY4MmRlNTZlZWY4ZTgiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgbGlibmV0LXNzbGVheS1wZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtaW8tc29ja2V0IFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NVL1NVTExSL0lPLVNvY2tldC1TU0wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjk3ZmE2Y2Q2NGYxNWRiNjBmODEwY2Q4YWIwMmQ1N2ZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiNWIyODc3YWM1YjY4NmE1ZDdiOGRkNzFjZjU0NjRmZmU3NWQxMGMzMjA0N2I1NTcwNjc0ODcwZTQ2YjFiOGMiCisKK1MgPSAiJHtXT1JLRElSfS9JTy1Tb2NrZXQtU1NMLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9CVUdTICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9DaGFuZ2VzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9SRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAtcFJQICR7U30vZG9jcyAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9jZXJ0cyAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9leGFtcGxlICR7RH0ke2RvY2Rpcn0vJHtQTn0vCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yICR7Qn0vY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXBlcmxfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmFhN2Y3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBETlMucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldC1kbnMub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9OTJkOTNkOGM1YmYyMmRlNzc1Nzg1MzFlMjgzZGQyMTkiCi0KLURFUEVORFMgKz0gInBlcmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTi9OTC9OTE5FVExBQlMvTmV0LUROUy0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZGExMDk5YzBhMzU0OGQzNmVhOWUzMWQ1YmI5ZTEyMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4M2MzOGE1OTRlZWIyYzg1ZDY2ZTYwMDQ3YTBmNWI0MDNmMzRiZDkyYTVkMTM2MDZmMDJlODI4ZDQ1MDI5OWZjIgotCi1TID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsLW1vZHVsZS1pbnRlZ2VyIgotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0gICAgY3Bhbl9kb19jb21waWxlCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUwYzljNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjE4LmJiCkBAIC0wLDAgKzEsNjYgQEAKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgRE5TLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXQtZG5zLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTI7ZW5kbGluZT0yNjk7bWQ1PTI3ZGIzN2I0MmNkMWE1MTczYTUzOTIyZDY3MDcyYmNiIgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL04vTkwvTkxORVRMQUJTL05ldC1ETlMtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjdhZjdlNWMxYzMzOWY2MGM0NWMxMDU0Mzc0YmQ4ZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTJjZTE0OTRmYzk3MDdmZDVhNjBlZDcxZGI1Y2RlNzI3MTU3YjdmMjM2Mzc4N2Q3MzBkNGQxYmQ5ODAwYTlkMyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTmV0XC1ETlNcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbGliZGlnZXN0LWhtYWMtcGVybCBcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1tZDUgXAorICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1zaGEgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgcGVybC1tb2R1bGUtaW50ZWdlciBcCisgICAgcGVybC1tb2R1bGUtaW8tZmlsZSBcCisgICAgcGVybC1tb2R1bGUtaW8tc2VsZWN0IFwKKyAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQgXAorICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldC1pcCBcCisgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgIHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwgXAorIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiIFwKKyAgICBsaWJuZXQtZG5zLXNlYy1wZXJsIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtZW5jb2RlIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUtYnl0ZSBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbW0gXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1tLXVuaXggXAorICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKKyIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICAjIHJhdGhlciB0aGFuIHVzZSAiZmluZCIgdG8gZGV0ZXJtaW5lIGxpYmMtKi5zbywKKyAgICAjIHN0YXRpY2FsbHkgZXhwb3J0IHRoZSBrbm93biBwYXRocyBmb3IgZ2xpYmMgYW5kIG11c2wKKyAgICBpbXBvcnQgb3MKKyAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gImdsaWJjIjoKKyAgICAgICAgb3MuZW52aXJvblsiTElCQyJdID0gIiR7U1RBR0lOR19CQVNFTElCRElSfS9saWJjLnNvLjYiCisgICAgZWxpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgorICAgICAgICBvcy5lbnZpcm9uWyJMSUJDIl0gPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGliYy5zbyIKKyAgICBlbHNlOgorICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1zZWMtcGVybF8xLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1zZWMtcGVybF8xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYTYyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtZG5zLXNlYy1wZXJsXzEuMTAuYmIKQEAgLTAsMCArMSwzMyBAQAorREVTQ1JJUFRJT04gPSAiRE5TU0VDIGV4dGVuc2lvbnMgdG8gTmV0OjpETlMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldC1kbnMub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE2NTtlbmRsaW5lPTE5MjttZDU9NmVmNTIzZmEwOWU4YzI3MjY3NTgzOWUyMWRlMTZiZGUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9jcGFuLm1ldGFjcGFuLm9yZy9hdXRob3JzL2lkL1cvV0kvV0lMTEVNL05ldC1ETlMtU0VDLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZmE1NWE5ODk4MTkyYzlkNGM2MjNjYjEzNTdlYmE5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzN2E0N2Q0ZGVmNzJkNzMzOGYzY2M3Y2Q4MDdlYzE5YmQ5ZTJhZTYzOGFlNjU2ZmE1MzZjZjAzMTQ4MDE5ODllIgorCitERVBFTkRTICs9ICJvcGVuc3NsIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOZXRcLUROU1wtU0VDXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKKworUyA9ICIke1dPUktESVJ9L05ldC1ETlMtU0VDLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiSU5DPSctSSR7U1RBR0lOR19JTkNESVJ9JyBMSUJTPSctTCR7U1RBR0lOR19MSUJESVJ9IC1sc3NsIC1MJHtTVEFHSU5HX0JBU0VMSUJESVJ9IC1sY3J5cHRvJyIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBsaWJuZXQtZG5zLXBlcmwgXAorICAgIGxpYmNyeXB0byBcCisgICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAorICAgIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybC9uby1leGVjLW9uLWNvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybC9uby1leGVjLW9uLWNvbmZpZ3VyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWZhN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsL25vLWV4ZWMtb24tY29uZmlndXJlLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKKy0tLSBhL2luYy9Nb2R1bGUvSW5zdGFsbC9QUklWQVRFL05ldC9TU0xlYXkucG0JMjAxOC0wOC0yNyAxNDo1NjoyNC43ODg1NDQ5OTEgKzAyMDAKKysrKyBiL2luYy9Nb2R1bGUvSW5zdGFsbC9QUklWQVRFL05ldC9TU0xlYXkucG0JMjAxOC0wOC0yNyAxNTowMDoxMi44NDcyNjYzMzEgKzAyMDAKK0BAIC0yNCwyMCArMjQsNyBAQAorICAgICAkc2VsZi0+cmVxdWlyZXNfZXh0ZXJuYWxfY2M7CisgCisgICAgIG15ICRwcmVmaXggPSAkc2VsZi0+ZmluZF9vcGVuc3NsX3ByZWZpeDsKKy0gICAgbXkgJGV4ZWMgICA9ICRzZWxmLT5maW5kX29wZW5zc2xfZXhlYygkcHJlZml4KTsKKy0KKy0gICAgdW5sZXNzICgteCAkZXhlYykgeworLSAgICAgICAgcHJpbnQgPDxFT007CistKioqIENvdWxkIG5vdCBmaW5kIE9wZW5TU0wKKy0gICAgSWYgaXQncyBhbHJlYWR5IGluc3RhbGxlZCwgcGxlYXNlIHNldCB0aGUgT1BFTlNTTF9QUkVGSVggZW52aXJvbm1lbnQKKy0gICAgdmFyaWFibGUgYWNjb3JkaW5nbHkuIElmIGl0IGlzbid0IGluc3RhbGxlZCB5ZXQsIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KKy0gICAgZnJvbSBodHRwOi8vd3d3Lm9wZW5zc2wub3JnLy4KKy1FT00KKy0gICAgICAgIGV4aXQgMDsgIyBhY2NvcmRpbmcgaHR0cDovL3dpa2kuY3BhbnRlc3RlcnMub3JnL3dpa2kvQ1BBTkF1dGhvck5vdGVzIHRoaXMgaXMgYmVzdC1wcmFjdGljZSB3aGVuICJtaXNzaW5nIGxpYnJhcnkiCistICAgIH0KKy0KKy0gICAgJHNlbGYtPmNoZWNrX29wZW5zc2xfdmVyc2lvbigkcHJlZml4LCAkZXhlYyk7CistICAgIG15ICRvcHRzID0gJHNlbGYtPnNzbGVheV9nZXRfYnVpbGRfb3B0cygkcHJlZml4LCAkZXhlYyk7CisrICAgIG15ICRvcHRzID0gJHNlbGYtPnNzbGVheV9nZXRfYnVpbGRfb3B0cygkcHJlZml4KTsKKyAKKyAgICAgJHNlbGYtPm1ha2VtYWtlcl9hcmdzKAorICAgICAgICAgQ0NDRExGTEFHUyA9PiAkb3B0cy0+e2NjY2RsZmxhZ3N9LAorQEAgLTU4LDcgKzQ1LDcgQEAKKyB9CisgCisgc3ViIHNzbGVheV9nZXRfYnVpbGRfb3B0cyB7CistICAgIG15ICgkc2VsZiwgJHByZWZpeCwgJGV4ZWMpID0gQF87CisrICAgIG15ICgkc2VsZiwgJHByZWZpeCkgPSBAXzsKKyAKKyAgICAgbXkgJG9wdHMgPSB7CisgICAgICAgICBsaWJfbGlua3MgID0+IFtdLApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LXNzbGVheS1wZXJsXzEuODQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZlY2VmOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0OjpTU0xlYXkgLSBQZXJsIGV4dGVuc2lvbiBmb3IgdXNpbmcgT3BlblNTTCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIG9mZmVycyBzb21lIGhpZ2ggbGV2ZWwgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgXAotd2ViIHBhZ2VzIG9uIFNTTCBzZXJ2ZXJzIChmb3Igc3ltbWV0cnksIHNhbWUgQVBJIGlzIG9mZmVyZWQgZm9yIFwKLWFjY2Vzc2luZyBodHRwIHNlcnZlcnMsIHRvbyksIGEgc3NsY2F0KCkgZnVuY3Rpb24gZm9yIHdyaXRpbmcgeW91ciBvd24gXAotY2xpZW50cywgYW5kIGZpbmFsbHkgYWNjZXNzIHRvIHRoZSBTU0wgYXBpIG9mIFNTTGVheS9PcGVuU1NMIHBhY2thZ2UgXAotc28geW91IGNhbiB3cml0ZSBzZXJ2ZXJzIG9yIGNsaWVudHMgZm9yIG1vcmUgY29tcGxpY2F0ZWQgYXBwbGljYXRpb25zLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9OZXQtU1NMZWF5LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9Mjc0O2VuZGxpbmU9Mjk0O21kNT02N2Q2NzA5NWQ4M2UzMzlkYTUzOGEwODJmYWQ1ZjM4ZSIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgb3BlbnNzbC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIGxpYnNzbCBcCi0gICAgbGliY3J5cHRvIFwKLSAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICBwZXJsLW1vZHVsZS1lcnJubyBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyIFwKLSAgICBwZXJsLW1vZHVsZS1taW1lLWJhc2U2NCBcCi0gICAgcGVybC1tb2R1bGUtc29ja2V0IFwKLSAgICB6bGliIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9NL01JL01JS0VNL05ldC1TU0xlYXktJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNmYmU5Njg0ODcxNDk2MjY5NzhmNDI3Y2M5ZmI4Yzc3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyM2VjM2NiYjQyODMwOWQ2YTllNTZmMzYyYTkzMDA2OTNjZTMyMTViN2ZlZGUxMDlhZGI3YmUzNjFmZmYxNzciCi0KLVMgPSAiJHtXT1JLRElSfS9OZXQtU1NMZWF5LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QKLQotZXhwb3J0IE9QRU5TU0xfUFJFRklYPSIke1NUQUdJTkdfTElCRElSfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIklOQz0tSSR7U1RBR0lOR19JTkNESVJ9IExJQlM9Jy1MJHtTVEFHSU5HX0xJQkRJUn0gLWxjcnlwdG8gLWxzc2wgLUwke1NUQUdJTkdfQkFTRUxJQkRJUn0gLWx6JyIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUZJTEVTXyR7UE59LWRiZyA9KyAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL05ldC9TU0xlYXkvLmRlYnVnLyIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIHBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1zc2xlYXktcGVybF8xLjg1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjY2VmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm5ldC9saWJuZXQtc3NsZWF5LXBlcmxfMS44NS5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIk5ldDo6U1NMZWF5IC0gUGVybCBleHRlbnNpb24gZm9yIHVzaW5nIE9wZW5TU0wiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBvZmZlcnMgc29tZSBoaWdoIGxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIFwKK3dlYiBwYWdlcyBvbiBTU0wgc2VydmVycyAoZm9yIHN5bW1ldHJ5LCBzYW1lIEFQSSBpcyBvZmZlcmVkIGZvciBcCithY2Nlc3NpbmcgaHR0cCBzZXJ2ZXJzLCB0b28pLCBhIHNzbGNhdCgpIGZ1bmN0aW9uIGZvciB3cml0aW5nIHlvdXIgb3duIFwKK2NsaWVudHMsIGFuZCBmaW5hbGx5IGFjY2VzcyB0byB0aGUgU1NMIGFwaSBvZiBTU0xlYXkvT3BlblNTTCBwYWNrYWdlIFwKK3NvIHlvdSBjYW4gd3JpdGUgc2VydmVycyBvciBjbGllbnRzIGZvciBtb3JlIGNvbXBsaWNhdGVkIGFwcGxpY2F0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvTmV0LVNTTGVheS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI3NDtlbmRsaW5lPTI5NDttZDU9NjdkNjcwOTVkODNlMzM5ZGE1MzhhMDgyZmFkNWYzOGUiCisKK0RFUEVORFMgPSAib3BlbnNzbCB6bGliIG9wZW5zc2wtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBsaWJzc2wgXAorICAgIGxpYmNyeXB0byBcCisgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgcGVybC1tb2R1bGUtZXJybm8gXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgIHBlcmwtbW9kdWxlLXNvY2tldCBcCisgICAgemxpYiBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvTS9NSS9NSUtFTS9OZXQtU1NMZWF5LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1leGVjLW9uLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNjAyYmRjZTRlMDUzMWM2ZWZjMjc2ZTNlNDI5Y2E2OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDgxODhiOWZiMWNhZTNiZDc5MTk3OWMyMDU1NDkyNWQ1ZTk0YTEzOGQwMDQxNGYxYTY4MTQ1NDk5MjdiMGM4IgorCitTID0gIiR7V09SS0RJUn0vTmV0LVNTTGVheS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0CisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBleHBvcnQgT1BFTlNTTF9QUkVGSVg9IiR7U1RBR0lOR19FWEVDUFJFRklYRElSfSIKKyAgICBjcGFuX2RvX2NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRklMRVNfJHtQTn0tZGJnID0rICIke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vTmV0L1NTTGVheS8uZGVidWcvIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICIgcGVybCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL1JFQURNRQppbmRleCAwNTY2ZTQ5Li45YzEwYzc4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9SRUFETUUKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vUkVBRE1FCkBAIC01LDEwICs1LDYgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyBsYXllciBpcyBpbnRlbmRlZCB0byBiZSB0aGUgaG9tZSBvZiBweXRob24gbW9kdWxlcyBmb3IgT3BlbkVtYmVkZGVkLgotTW9kdWxlcyBpbiB0aGlzIGxheWVyIG5lZWQgdG8gYmUgaW5kZXBlbmRlbnQgb2Ygb3BlbmVtYmVkZGVkLWNvcmUgYW5kCi1tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lLiBCZWNhdXNlIG9mIHRoaXMsIG1vZHVsZXMgcmVxdWlyZWQgYnkgJ2dhdGVvbmUnCi1hbmQgJ2Fua2knIGFyZSBub3QgaW5jbHVkZWQgYW5kIHJlbWFpbiBpbjoKLSAgICAgICAgbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi4KIAogRGVwZW5kZW5jaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNywxMiArMTMsMTIgQEAKIAogCVVSSTogZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUKIAlsYXllcnM6IG1ldGEKLQlicmFuY2g6IG1hc3RlcgorCWJyYW5jaDogdGh1ZAogCXJldmlzaW9uOiBIRUFECiAKIAlVUkk6IGdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL21ldGEtb3BlbmVtYmVkZGVkCiAJbGF5ZXJzOiBtZXRhLW9lCi0JYnJhbmNoOiBtYXN0ZXIKKwlicmFuY2g6IHRodWQKIAlyZXZpc2lvbjogSEVBRAogCiBQbGVhc2UgZm9sbG93IHRoZSByZWNvbW1lbmRlZCBzZXR1cCBwcm9jZWR1cmVzIG9mIHlvdXIgT0UgZGlzdHJpYnV0aW9uLgpAQCAtMzksMTUgKzM1LDEzIEBACiBiZWZvcmUgcG9zdGluZy4KIAogU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGgKLSdbbWV0YS1weXRob25dJyBpbiB0aGUgc3ViamVjdC4KKydbbWV0YS1weXRob25dW3RodWRdJyBpbiB0aGUgc3ViamVjdC4KIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNlIHNvbWV0aGluZyBsaWtlOiAKLSdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvPW9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1weXRob25dW1BBVENIJworJ2dpdCBzZW5kLWVtYWlsIC1NIC0xIC0tdG89b3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXB5dGhvbl1bdGh1ZF1bUEFUQ0gnCiAKIE1haW50ZW5hbmNlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUxheWVyIE1haW50YWluZXJzOgotICAgICAgICBUaW0gIm1vdG8tdGltbyIgT3JsaW5nIDxUaWNvVGltb0BnbWFpbC5jb20+Ci0gICAgICAgIERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CitUaHVkIE1haW50YWluZXJzOiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKaW5kZXggNzA4OTA3MS4uMzIxZDUxYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTQsNiArMTQsNiBAQAogCiBMQVlFUkRFUEVORFNfbWV0YS1weXRob24gPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9tZXRhLXB5dGhvbiA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX21ldGEtcHl0aG9uID0gInRodWQiCiAKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYXRlb25lL2dhdGVvbmVfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2F0ZW9uZS9nYXRlb25lX2dpdC5iYgppbmRleCA0NTc3ODczLi41ZDJjYTAwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYXRlb25lL2dhdGVvbmVfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhdGVvbmUvZ2F0ZW9uZV9naXQuYmIKQEAgLTE2LDkgKzE2LDcgQEAKIAogaW5oZXJpdCBzZXR1cHRvb2xzIHB5dGhvbi1kaXIgc3lzdGVtZCB1cGRhdGUtcmMuZAogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID0gIi0tcm9vdD0ke0R9IFwKLSAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiIFwKICAgICAtLWluc3RhbGwtZGF0YT0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCiAgICAgLS1pbnN0YWxsLXNjcmlwdHM9JHtiaW5kaXJ9IFwKICAgICAtLXNraXBfaW5pdF9zY3JpcHRzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5Y29ubm1hbi9weXRob24tcHljb25ubWFuLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmViMmJhZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbi5pbmMKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiUHl0aG9uLWJhc2VkIE5ldHdvcmsgQ29ubmVjdGl2aXR5IE1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5Y29ubm1hbi8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjdmYTgyMDM0YjFjMGUxZmIxYjUxOGZmZTNiYjRmYzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDZjNjRjMDY5MjA2M2ZkMGM5ZmIwMjE2ZDQ5Zjc4ODRiZWM5ZmE5NzYwZDg0NzNkYjRiMWUyZjgxNjJmYWI0YSIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ID0gImNvbm5tYW4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHljb25ubWFuL3B5dGhvbi1weWNvbm5tYW5fMC4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHljb25ubWFuL3B5dGhvbi1weWNvbm5tYW5fMC4xLjAuYmIKaW5kZXggNzdiNWU0ZC4uM2MxMmRiOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5Y29ubm1hbi9weXRob24tcHljb25ubWFuXzAuMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbl8wLjEuMC5iYgpAQCAtMSwxMiArMSw1IEBACi1ERVNDUklQVElPTiA9ICJQeXRob24tYmFzZWQgTmV0d29yayBDb25uZWN0aXZpdHkgTWFuYWdlbWVudCIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHljb25ubWFuLyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK3JlcXVpcmUgcHl0aG9uLXB5Y29ubm1hbi5pbmMKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCitpbmhlcml0IHNldHVwdG9vbHMKIAotU1JDX1VSSVttZDVzdW1dID0gImI3ZmE4MjAzNGIxYzBlMWZiMWI1MThmZmUzYmI0ZmMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2YzY0YzA2OTIwNjNmZDBjOWZiMDIxNmQ0OWY3ODg0YmVjOWZhOTc2MGQ4NDczZGI0YjFlMmY4MTYyZmFiNGEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gImNvbm5tYW4gcHl0aG9uLWRidXMgcHl0aG9uLXBwcmludCIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tZGJ1cyBweXRob24tcHByaW50IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5Y29ubm1hbi9weXRob24zLXB5Y29ubm1hbl8wLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uMy1weWNvbm5tYW5fMC4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBmM2ZkZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uMy1weWNvbm5tYW5fMC4xLjAuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIHB5dGhvbi1weWNvbm5tYW4uaW5jCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZGJ1cyBweXRob24zLXBwcmludCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42My5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC42My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY2ODNlMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBSZW1vdGUgT2JqZWN0cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Mzc4YWNlZjM3NWUxN2EzYmZmMDNiZDBmNzhjNTMyMjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMWQ3NzJiNjdiZjdjNmY3NWZhMzE3NGJjOTVjODgzOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2N2QyYjM0MTU2NjE5YmEzN2U5MjEwMGFmOTVhYWRlODEyOWRkMmI3MzI3ZWIwNTgyMWQ0Mzg4NzQ1MWY3ZDdiIgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlybzQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tc2VsZWN0b3JzMzQgXAotICAgICR7UFlUSE9OX1BOfS1zZXJwZW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80LjczLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80LjczLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZjViMTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uLXB5cm80XzQuNzMuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gUmVtb3RlIE9iamVjdHMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNkMTNkYWZkNGVlYjA4MDJiYjZlZmVhNmI0YTRiZGJjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDM3NWMwNjFiOTM0MTFmZWI4NmRhMDFlODAxZGY4ODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTM2YjA3YTA5N2QwNjE5ZTdhYjFlZmZhMzc0N2ZkYTE3N2EyNDE2OGQxN2EwN2E5M2NhOWFjMzA5Nzc2MDhmNyIKKworUFlQSV9QQUNLQUdFID0gIlB5cm80IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXNlbGVjdG9yczM0IFwKKyAgICAke1BZVEhPTl9QTn0tc2VycGVudCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LXpsaWIgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uLXRocmlmdF8wLjExLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMS4wLmJiCmluZGV4IDgwNDdlYzcuLjEwY2ZmNDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10aHJpZnQvcHl0aG9uLXRocmlmdF8wLjExLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXRocmlmdC9weXRob24tdGhyaWZ0XzAuMTEuMC5iYgpAQCAtNyw2ICs3LDkgQEAKIAogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKIAorIyBVc2UgZGlmZmVyZW50IGZpbGVuYW1lIHRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGggdGhyaWZ0IGl0c2VsZgorUFlQSV9TUkNfVVJJX2FwcGVuZCA9ICI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS4ke1BZUElfUEFDS0FHRV9FWFR9IgorCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10eHdzL3B5dGhvbi10eHdzXzAuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIKaW5kZXggMGIyYWMxMS4uZjM2MzFjZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIKQEAgLTQsNyArNCw3IEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NjY5OTgzMGRiN2ZhOWU4OTdmNmExYWQwNWY5OGVjOCIKIAotREVQRU5EUyA9ICJweXRob24tdHdpc3RlZCBweXRob24tc2l4IHB5dGhvbi12Y3ZlcnNpb25lciIKK0RFUEVORFMgPSAicHl0aG9uLXR3aXN0ZWQgcHl0aG9uLXNpeCBweXRob24tdmN2ZXJzaW9uZXIgcHl0aG9uLXNpeC1uYXRpdmUgcHl0aG9uLXZjdmVyc2lvbmVyLW5hdGl2ZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01vc3RBd2Vzb21lRHVkZS90eFdTLmdpdCIKIFNSQ1JFVj0gIjg4Y2Y2ZDliOWI2ODVmZmExNzIwNjQ0YmQ1M2M3NDJhZmIxMGE0MTQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9wYW1lbGFfMC4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9wYW1lbGFfMC4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA3MWZjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3BhbWVsYV8wLjMuMC5iYgpAQCAtMCwwICsxLDE1IEBACitERVNDUklQVElPTiA9ICJQYW1lbGE6IHlldCBhbm90aGVyIFB5dGhvbiB3cmFwcGVyIGZvciBQQU0iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1iZmI2NjNmMzdlYjk5MjMyYmM4Y2NmYTRlYThmMTIwMiIKKworU1JDX1VSSVttZDVzdW1dID0gImRlNjUxNjExOGQ1MWViNWZjOTcwMTdmM2I2ZDVjNjhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlMTk4NDQ2YTZjZGQ4NzcwNGFhMGRlZjc2MjFkNjJlN2MyMGIwZTYwNjhlMjc4OGI5YTg2NmE4MzU1ZTVkNmIiCisKK1BZUElfUEFDS0FHRSA9ICJwYW1lbGEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ID0gImxpYnBhbSIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpYy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpYy5pbmMKaW5kZXggZjFhNjQxMi4uNDc3ZTg5YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljLmluYwpAQCAtMiw4ICsyLDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzVmMTM2MTI5NjgzNWZmOTRiZGE3M2RiN2RkMzEyYTYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1Y2ZlZjU4NjQxYzlhOTRkNGE1ZDU0N2U5NTFhN2RkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxM2I4NjExNzg4YWNmMGQ3YjYxNzc3NWRiNWMyYWUyNjU1NGE2ZDQyNjNjNTkwZWY2MjhkNDQ4ZmQwNWFlZjU2IgorU1JDX1VSSVttZDVzdW1dID0gIjc2MmFiOWJhNTZkMWMwYjFiZmJjN2M5ZjdmODQ5YzkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyZDczYjFkNzUwZjE0MTRmYTkwYzI1YTA4ZGE0N2I4N2RlMWU0YWQ4ODM5MzU3MThhOGYzNjM5NmUxOWU3OGUiCiAKIFBZUElfUEFDS0FHRSA9ICJhbGVtYmljIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpY18wLjkuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzEuMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpY18wLjkuOC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWNfMS4wLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYwppbmRleCA1YzM3OTk1Li5mMWYwYTNjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXNuMWNyeXB0by5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCkBAIC0xLDcgKzEsNyBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIGJpbmRpbmcgdG8gdGhlIE5ldHdvcmtpbmcgYW5kIENyeXB0b2dyYXBoeSAoTmFDbCkgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWNhL3B5bmFjbCIKK0RFU0NSSVBUSU9OID0gIkEgZmFzdCwgcHVyZSBQeXRob24gbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgc2VyaWFsaXppbmcgQVNOLjEgc3RydWN0dXJlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93Ym9uZC9hc24xY3J5cHRvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyMDEwY2QzYzdkN2JkOTY1YjU1NzIxZWY0ZDkzZWMyIgogCiBQWVBJX1BBQ0tBR0UgPSAiYXNuMWNyeXB0byIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYwppbmRleCBlYWQyYjZlLi5mYWUwZjEzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWQuaW5jCkBAIC00LDggKzQsOCBAQAogTElDRU5TRSA9ICJMR1BMLTIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiN2Q3ZGMwMDBiMjVmMGNiZmNjYTIwY2I5YThkYzAzMTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzVjZmFlNDdhYWMxOWM3YjQwN2I3MDk1NDEwZTg5NWU4MzZmMjI4NWNjZjEyMjAzMzZhZmJhNzQ0Y2M0YzVmMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZGQwMWVmMGQ1YjVmMGZjNzU0YzFiYTQwMTM3YjYxYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzliNTgyZGJhMDM2NmU2MzU0MDk4MmMzOTQ0YTkyMzBjYmM2ZjMwMzY0MWM1MTQ4M2ZhNTQ3ZGNjMjIzOTNhIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS42LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8xLjYuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMS42LjMuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkXzEuNi41LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzLmluYwppbmRleCBjMjlmMDU4Li5mYTczZWE1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRycy5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ0YWIyNTk0OWE3M2ZlN2Q0ZmRlZTkzYmNiZGJmOGZmIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDdhODkwNjNiMmUwZmQzNmJkODIzODljNGQ4MjgyMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM3OTYwY2NmZDZhMDA1Y2Q5ZjdiYTg4NGU2MzE2YjVlNDMwYTNmMWE2YzM3YzVmODdkOGI0M2Y4M2I1NGVjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMGQwZWI5MTQ0MWEzYjUzZGFiNGQ5Yjc0M2VhZmMxYWM0NDQ3NjI5NmEyMDUzYjZjYTNhZjBiMTM5ZmFmODdiIgorU1JDX1VSSVttZDVzdW1dID0gIjNmM2YzZTA3NTBkYWI3NGNmYTFkYzhiMGZkN2E1Zjg2IgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJzXzE3LjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xOC4xLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xNy40LjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xOC4xLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0LmluYwppbmRleCA0M2I5Y2U5Li5mNmNiYjM1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQuaW5jCkBAIC01LDggKzUsOCBAQAogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tYXV0b21hdDoiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZDdiYmE1OGQyNjJkODk1NmQ3MzIzMzBjYjVlZjUzZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYzFmZDA0ZWNmMDhhYzg3YjRkZDNmZWFlNDA5NTQyZTliZjc4MjcyNTcwOTdiMmI2ZWQ1NjkyZjY5ZDZmNmE4IgorU1JDX1VSSVttZDVzdW1dID0gImI3MmQ1YjdhODNjMmIxYmQ2ZTllYzM2MTRhNjlmOWVhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiZDc4YjgzZmEyZDgxZmUyYTRkMjNkMjU4ZTE2NjFkZDc0OTNjOWE1MGVlMmYxYTViMmNhYzYxYzE3OTNiMGUiCiAKIFBZUElfUEFDS0FHRSA9ICJBdXRvbWF0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2gKaW5kZXggZDZkZWY5OC4uYzI5YjY1OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1kZXBlbmRlbmN5LW9uLW0yci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDVlYmU0NzlmYzhmZTExYzVjNzVlN2YzNTQ4NDg0OTMyMDM0OTIyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzNiNzAyNjY5MzBjOTA5MzcxMjE3M2M0ZTBjNDE5ODE1YjU1ZTMxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CiBEYXRlOiBGcmksIDIyIERlYyAyMDE3IDA5OjA3OjAwIC0wNTAwCiBTdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiByZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gbTJyCkBAIC0xMSwxNCArMTEsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Ugc3BlY2lmaWMpCiAKIFNpZ25lZC1vZmYtYnk6IERlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+CisKIC0tLQogIHNldHVwLnB5IHwgMTAgLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBkZWxldGlvbnMoLSkKIAotSW5kZXg6IEF1dG9tYXQtMC42LjAvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBBdXRvbWF0LTAuNi4wLm9yaWcvc2V0dXAucHkKLSsrKyBBdXRvbWF0LTAuNi4wL3NldHVwLnB5CitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggZDM2MGM2NC4uN2I0MTgwYSAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQogQEAgLTQsMTQgKzQsNiBAQCBTZXR1cCBmaWxlIGZvciBhdXRvbWF0CiAgCiAgZnJvbSBzZXR1cHRvb2xzIGltcG9ydCBzZXR1cCwgZmluZF9wYWNrYWdlcwpAQCAtNDYsNCArNDcsNCBAQAogLSAgICAgICAgJ20ycicsCiAgICAgIF0sCiAgICAgIGluc3RhbGxfcmVxdWlyZXM9WwotICAgICAgICAgImF0dHJzIiwKKyAgICAgICAgICJhdHRycz49MTYuMS4wIiwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0XzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXRfMC43LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0XzAuNi4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdF8wLjcuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCmluZGV4IGEzMjk5ZTQuLjc0MjNmYTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbi5pbmMKQEAgLTcsOCArNyw4IEBACiAgICAgZmlsZTovL0FXU0lvVFB5dGhvblNESy9jb3JlL3Byb3RvY29sL3BhaG8vY2xpZW50LnB5O2VuZGxpbmU9MTQ7bWQ1PTVhM2M4YTFhNGJiNzFiZDkzNGY0NTBlY2ZmOTcyYWQ5IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjk3ZThjZjBkNDBlZjM3NjVkOTc5YzE5YjUzNGE3MTZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2OGNiZmYzOTYxNDNlODM3YjRjMjNiNjYyMWQzYjdhZTM3NDI4MWFmYzc1ZWVkOGU1MWEyODYyNWQ5MTI1YmEiCitTUkNfVVJJW21kNXN1bV0gPSAiNTBhNWM0NjQxMGMyYjQ0YjVjMDlmMWVhNWViMTVhM2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNjOGFmM2NlMjRlYWI4NjE0NDdhMTk0ZjNjMzgyNTA5ZGQ3MGU5MDQ1MmM4NmE1NDI2ZjFlNzI3MjQ2MDE3NyIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS40LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbC5pbmMKaW5kZXggNGRjYjI1NS4uMTRiNWE5ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWwuaW5jCkBAIC0xLDEwICsxLDEwIEBACiBERVNDUklQVElPTiA9ICJBIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIGludGVybmF0aW9uYWxpemluZyBQeXRob24gYXBwbGljYXRpb25zIgogSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsLmVkZ2V3YWxsLm9yZy8iCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2ZWVhYWJjOTJjZmMyZDAzZjUzZTc4OTMyNGQ3MjkyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWViZGMwNTdkYzEyYWJjYzJkNmM0NDUzNjI4YmZjZDQiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTJhNmIxN2ZlNDExMGI5NTY3NWFjZWI5YWY5ZmFiMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4Y2U0Y2I2ZmRkNDM5M2VkZDMyMzIyN2NiYTNhMDc3YmNlYjJhNmNlNTIwMWM5MDJjNjVlNzMwMDQ2ZjQxZjE0IgorU1JDX1VSSVttZDVzdW1dID0gImMzODRhYzAzMDI2ZThmZTZmOWI5MGY1NTIwMWYxYmZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjYmE1MGY0OGM1MjljYTNmYTE4Y2Y4MWZhOTQwM2JlMTc2ZDM3NGFjNGQ2MDczOGI4MzkxMjJkZmFhYTNkMjMiCiAKIFBZUElfUEFDS0FHRSA9ICJCYWJlbCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi41LjMuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbF8yLjYuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MTQzNmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFja3BvcnQgb2YgZnVuY3Rvb2xzLmxydV9jYWNoZSBmcm9tIFB5dGhvbiAzLjMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vamFyYWNvL2JhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT00NztlbmRsaW5lPTQ3O21kNT05OGZjMzY1OGU1OTcwZDI2ZjZiMjEwOTgwOGM3NjZiZSIKLQotUFlQSV9QQUNLQUdFID0gImJhY2twb3J0cy5mdW5jdG9vbHNfbHJ1X2NhY2hlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjk1NGU3ZDVlMmNhMGYwZjY2YWQyZWQxMmJhODAwZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzFmMjM1ODUyZjg4ZWRjMTU1OGQ0MjhkODkwNjYzYzQ5ZWI0NTE0ZmZlYzlmMzY1MGU3ZjNjOWU0YTEyZTM2ZiIKLQotREVQRU5EUyArPSAicHl0aG9uLXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjU0NDRmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkJhY2twb3J0IG9mIGZ1bmN0b29scy5scnVfY2FjaGUgZnJvbSBQeXRob24gMy4zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby9iYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9NTc7ZW5kbGluZT01NzttZDU9OThmYzM2NThlNTk3MGQyNmY2YjIxMDk4MDhjNzY2YmUiCisKK1BZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwZjUzZjU0Y2QzZjA0YjMzNDZjZTc1YTU0OTU5NzU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkOTg2OTdmMDg4ZWIxYjBmYTQ1MTM5MWY5MWFmYjVlM2ViZGUxNmJiZGIyNzI4MTlmZDA5MTE1MWZkYTRmMWEiCisKK0RFUEVORFMgKz0gInB5dGhvbi1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK2luaGVyaXQgc2V0dXB0b29scyBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVoYXZlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWQ3NTgwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZS5pbmMKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIGJlaGF2aW9yLWRyaXZlbiBkZXZlbG9wbWVudCBmcmFtZXdvcmssIFB5dGhvbiBzdHlsZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZWhhdmUvYmVoYXZlIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjNmMDVjODU5YTFjNDVmNWVkMzNlOTI1ODE3YWQ4ODdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjYyMzI3YWE1MzI5NGMxMzUxYjBhOWMzNjkwOTNjY2VjMWQyMTAyNmYwNTBjM2JkOWIzZTVjY2NmODFhODYiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcGFyc2UtdHlwZSBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVoYXZlXzEuMi42LmJiCmluZGV4IDY3OTczMDIuLjY2MjIxNjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJlaGF2ZV8xLjIuNi5iYgpAQCAtMSwxMCArMSw4IEBACi1TVU1NQVJZID0gIkEgYmVoYXZpb3ItZHJpdmVuIGRldmVsb3BtZW50IGZyYW1ld29yaywgUHl0aG9uIHN0eWxlIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tYmVoYXZlLmluYwogCi1TUkNfVVJJW21kNXN1bV0gPSAiM2YwNWM4NTlhMWM0NWY1ZWQzM2U5MjU4MTdhZDg4N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjk2NjIzMjdhYTUzMjk0YzEzNTFiMGE5YzM2OTA5M2NjZWMxZDIxMDI2ZjA1MGMzYmQ5YjNlNWNjY2Y4MWE4NiIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1kaWZmbGliIHB5dGhvbi1zZXR1cHRvb2xzIHB5dGhvbi1wa2d1dGlsIHB5dGhvbi1taXNjIHB5dGhvbi1hcmdwYXJzZSBweXRob24teG1sIHB5dGhvbi1lbnVtMzQgcHl0aG9uLXBhcnNlIHB5dGhvbi1wYXJzZS10eXBlIHB5dGhvbi1zaXgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAorICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAorICAgICR7UFlUSE9OX1BOfS10cmFjZWJhY2syIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYwppbmRleCAzOGEyMmY2Li40ODBmMDQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheS5pbmMKQEAgLTEsMTAgKzEsMTAgQEAKIFNVTU1BUlkgPSAiQSBoaWdoLWxldmVsIFB5dGhvbiBlZmZpY2llbnQgYXJyYXlzIG9mIGJvb2xlYW5zIC0tIEMgZXh0ZW5zaW9uIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lsYW5zY2huZWxsL2JpdGFycmF5IgogTElDRU5TRSA9ICJQU0YiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYmE0NjkzNTNmOWYyYTI0NGIyMDc1OTAyMzUxZTM3ZCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1mNGNlMWFlODBhMzg1MTQwZjBkZGIyYmNlZjQxMGIwNiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjM4MjUxODRmNTRmNGQ5MzUwOGEyODAzMWI0YzY1ZDNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkYTUwMTM1NmU0OGE4M2M2MWY0NzkzOTM2ODFjMWJjNGI5NGU1YTM0YWNlN2UwOGNiMjllN2RkOTI5MGFiMTgiCitTUkNfVVJJW21kNXN1bV0gPSAiZjMxMzFhYzJhMjc3ZjNiNzBkYmI2MTMyY2E4Zjg4ODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDUwY2QzMGI4MTBkZGIzYWE5NDFlN2RkZmJlMGQ4MDY1ZTc5MzAxMmQwYTg4Y2I1NzM5ZWMyMzYyNGI5ODk1ZSIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheV8wLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iaXRhcnJheV8wLjguMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzAuOC4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMC44LjMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKaW5kZXggYTcxYzQ3Yi4uNDZmMDg1OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbi5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkxHUEx2MyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zODEzOGJhYTEwMGQ3MjU5OTM0NTkwODUwYmMwNDA2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjMzMTBmMGFhMmE4NDkyZDBmZjYxNGVjZjYzNmVjOGE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhNWMwMWRkNjdmZWVkYTM1Zjg4ZTZjMTJlYTE0YWM4Y2FiZDQyNmI5YmUwY2M1ZjlmZDA4M2ZlOTBhOWRiZmMiCitTUkNfVVJJW21kNXN1bV0gPSAiZGNkZDNmNmI5MjRlM2YyMGFjYjFjY2Y0NTk4MjM2Y2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjVlOTNiMmVlMzJiZGQ1OTdkOWQ5MDhhZmU1MTcxYzQwMmEwNGM5Njc4YmE0N2I2MGYzMzUwNjczOGIxMzc1YiIKIAogUFlQSV9QQUNLQUdFPSJweXRob24tY2FuIgogCkBAIC0xNCw0ICsxNCw1IEBACiAgICAgJHtQWVRIT05fUE59LW1pc2MgXAogICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAogICAgICR7UFlUSE9OX1BOfS1zcWxpdGUzIFwKKyAgICAke1BZVEhPTl9QTn0td3JhcHQgXAogIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8yLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMi4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMi4xLjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMi4yLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYwppbmRleCAxNjQ4ZDNlLi4xY2MxZjRjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhc3NhbmRyYS1kcml2ZXIuaW5jCkBAIC04LDggKzgsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCiBTUkNOQU1FID0gImNhc3NhbmRyYS1kcml2ZXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YzhiNGEzYWRmYzQ4MTgwZThlYzM4YjhjNGU5OTZmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MWI2NzBmYjJiYTk1ZDUxZDkxZmE3YjU4OWFhZTM2NjZkZjQ5NDcxM2Y1ZDFlZDc4YmI1YzUxMDc3OGQ3N2YwIgorU1JDX1VSSVttZDVzdW1dID0gImM1YmVkMDI2YmY0OGM4MjE0MjRjMWY2Mjk2MTkzOTA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2NTIxOGUyNTgyMjc3ZjViNzdkMTQzNmU0MjBkYjg2MTZmNjNlMzQzN2E5ZTgzOWNkY2Q3MTcyZDc2MGU4NjEiCiAKIERJU1RVVElMU19CVUlMRF9BUkdTICs9ICIgXAogICAgIC0tbm8tbGliZXYgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmkuaW5jCmluZGV4IDI2ZGY1YzEuLmM3OTU1YzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMKQEAgLTcsNyArNyw3IEBACiBMSUNFTlNFID0gIklTQyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY3N2Y2MWQxNGVlNmZlYWM0MjI4ZDNlYmQyNmNjMWYxIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDY4ZmQ1YzNjNjkwYWU0NzUwNGIzZTBiZjRlNTZjNGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWRiYzNmMjAzNDI3ZWVmNTcxZjc5YTc2OTJiYjE2MGEyYjBmN2NjYWEzMTk1M2U5OWJkMTdlMzA3Y2Y2M2Y3ZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODQ1NzE5OTVhMjA5ZGNkMDBhMTcwMmE3NDMwMmI4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzFkNjhhMTQwOGRkMDkwZDJmM2E4NjlhYTk0YzM5NDdjYzFkOTY3ODIxZDFlZDMwMzIwOGM5ZjQxZjBmMmY0IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE4LjEuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE4LjguMTMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTguMS4xOC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNlcnRpZmlfMjAxOC44LjEzLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2xpY2suaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrLmluYwppbmRleCA3MThiYmFiLi5jODE1NDViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2xpY2suaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbGljay5pbmMKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmYzRjYzAwYzQ4NjM4MzMyMzBkM2FmOTJhZjQ4YWJkNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMTU1MTZkZjQ3OGQ1YTU2MTgwZmJmODBlNjhmMjA2MDEwZTZkMTYwZmMzOWZhNTA4YjY1ZTAzNWZkNzUxMzBiIgogCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbGljay8oP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCiBDTEVBTkJST0tFTiA9ICIxIgogCiBSREVQRU5EU18ke1BOfSArPSAiXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ1YWI5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMl8wLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0cmEgZmVhdHVyZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkncyBjbWQgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvY21kMi8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT01MTtlbmRsaW5lPTUxO21kNT0wZjEzYzljZmM3NTI4ODIyM2NmN2VkZDJmM2I5ODVhMiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwMWI5MTZmZmFjOTkxMzdiZWE0MTMyMDUxMDZmOTkzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwOTk3NmY5YWQyMzI3ODgzYzJkMDdiNWFjYjQyZTY2YWQ1MmIxN2UzNTI4NzNjMjIwNDFlZDEyNGJmZThhYmEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRvY3Rlc3QgXAotICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAotICAgICR7UFlUSE9OX1BOfS1weXBlcmNsaXAgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI3NWUzNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuOS4yLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiRXh0cmEgZmVhdHVyZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkncyBjbWQgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvY21kMi8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTYwYmM2ODQyMDAxODcwYTQxODkzNWJkODQ1NzBiNjc2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmZlMDkwMGEyMjg4MjgzYTQwZjBlZTc1MzM0ODZhMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTdiNmI0Yjc2MjcyYTA1MWM5NDNjM2M3MDljZDc2MDE0MmFmMTZmYmM5MjE4ZTBlZDNjMjJiMjhlYTM4ZDBhOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCisgICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCisgICAgJHtQWVRIT05fUE59LXB5cGVyY2xpcCBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlncGFyc2VyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdwYXJzZXIuaW5jCmluZGV4IGMxZmI4NTguLjEzM2RiYmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdwYXJzZXIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdwYXJzZXIuaW5jCkBAIC0xLDQgKzEsNCBAQAotU1VNTUFSWSA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyB0aGUgQ29uZmlnUGFyc2VyIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgYSBiYXNpYyBjb25maWd1cmF0aW9uIGxhbmd1YWdlIHdoaWNoIHByb3ZpZGVzIGEgc3RydWN0dXJlIHNpbWlsYXIgdG8gd2hhdOKAmXMgZm91bmQgaW4gTWljcm9zb2Z0IFdpbmRvd3MgSU5JIGZpbGVzLiIKK1NVTU1BUlkgPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIENvbmZpZ1BhcnNlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIGEgYmFzaWMgY29uZmlndXJhdGlvbiBsYW5ndWFnZSB3aGljaCBwcm92aWRlcyBhIHN0cnVjdHVyZSBzaW1pbGFyIHRvIHdoYXQncyBmb3VuZCBpbiBNaWNyb3NvZnQgV2luZG93cyBJTkkgZmlsZXMuIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBIT01FUEFHRSA9ICJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvY29uZmlncGFyc2VyLmh0bWwiCiBMSUNFTlNFID0gIk1JVCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2QuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVkYTdjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2QuaW5jCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciBnZW5lcmF0aW5nIG9iamVjdHMgdGhhdCBjb21wdXRlIHRoZSBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvY3JjbW9kIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5YTE5MjkxNjI3Y2FkMmQxZGZiZmNmM2M5ZmI4NWMyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmQ1YjkyMTE3ZDk1OGRjZWFkOTRmOWUxN2Y1NGNkMzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM3MDUxYTBkYjVmMmJkNDg2NjVhOTkwZDNlYzFjYzMwNWE0NjZhNzczNThjYTQ0OTI4MjZmNDFmMjgzNjAxZSIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tdW5pdHRlc3QiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2RfMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZF8xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDViOWEyYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2RfMS43LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1jcmNtb2QuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYwppbmRleCAwMGJiODdiLi5kMWUyNTRiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKQEAgLTgsOCArOCw4IEBACiAgICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjExNWI4NzBjYzhkOGI5ZjBmNDE4OWI1MTJiYzE3MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OGM0YjRmM2Y4NDg1M2VhNWQwMzhlMmY1M2QzNTUyMjlkZDgxMTlmZTljZjk0OWMzZTQ5N2M4NWM3NjBhNWNhIgorU1JDX1VSSVttZDVzdW1dID0gIjI5NGQ0NGYzMjg4NWE2Yjk3ZDVmOWNkZDdmZmM3M2EzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NmEyZGVkODRhZTM3OWU1NTY1MTVlZWM5YjY4ZGQ3NDk1NzY1MWEzODQ2NWQxMDYwNWJiOWZiYWUyODBmMTUiCiAKIFBZUElfUEFDS0FHRSA9ICJjcnlwdG9ncmFwaHlfdmVjdG9ycyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMS40LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCmluZGV4IDRiZTc5MDcuLmRiYmZlMmMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJQcm92aWRlcyBjcnlwdG9ncmFwaGljIHJlY2lwZXMgYW5kIHByaW1pdGl2ZXMgdG8gcHl0aG9uIGRldmVsb3BlcnMiCiBIT01FUEFHRSA9ICJodHRwczovL2NyeXB0b2dyYXBoeS5pby8iCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNWVkZTEyNWVkMDhkNGZkMTRlYzQ0ZDMzNGJkYjM4OCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA5N2Y4MDU4Mzc3MDBjZmFjNTcyYWMyNzRjZDM4MTI0IgogCiBERVBFTkRTICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKQEAgLTEwLDggKzEwLDggQEAKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjlmMzlkNGQ4ZjJiMDVmMjk1ZmEwZmY1MjQ3NWVjNGYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZDk2NzM3MWM1YjZiMmU2Nzg1NTA2NjQ3MWQ4NDRjNWQ1MmQyMTBjMzZjMjhkNDlhODUwN2I5NmUyYzUyOTEiCitTUkNfVVJJW21kNXN1bV0gPSAiYTBmM2Y1NjNhYjFjNWMzYmMwMmZhZThkNGFhM2FkMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzEzMmJhYjQ1ZDRiZDBmZmYxZDNmZTI5NGQ5MmIwYTZlYjg0MDRlOTMzMzdiMzEyN2JkZWM5ZjIxZGUxMTdlNiIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWNmZmkgXApAQCAtMzksNiArMzksNyBAQAogICAgICR7UFlUSE9OX1BOfS1pc284NjAxIFwKICAgICAke1BZVEhPTl9QTn0tcHJldGVuZCBcCiAgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisgICAgJHtQWVRIT05fUE59LXB5dHogXAogIgogCiBpbmhlcml0IHB0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzIuMS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeV8yLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi4xLjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCmluZGV4IDVkM2I5ZDUuLjA5MzljYWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCkBAIC03LDggKzcsOCBAQAogUFlQSV9QQUNLQUdFID0gIkN5dGhvbiIKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAotU1JDX1VSSVttZDVzdW1dID0gIjBlMDU2OGQ2YmVkNGIwOWFkMDFhZmUwYTM4ODA1MzA1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzNGUyZjEwZmM4ZDAyNmM2MzNjZmZhY2I0NWNkOGY0NTgyMTQ5ZmE2OGUxNDI4MTI0ZTc2MmRiYzU2NmU2OGEiCitTUkNfVVJJW21kNXN1bV0gPSAiMGNiNjIwZTEyNTk4MThlNGVjYzFhMDU2ZThjM2E4YmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY0NTc1MjQxZjY0ZjZlYzAwNWE0ZDQxMzczMzlmYjBiYTVlMTU2ZTgyNmRiMmZkYjVmNDU4MDYwZDk5NzllMCIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob25fMC4yOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI4LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob25fMC4yOC4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uXzAuMjguNS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIKaW5kZXggNGMxOGUyYi4uZmZiNWJlYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhZW1vbl8yLjEuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uXzIuMS4yLmJiCkBAIC0yLDcgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9wYWd1cmUuaW8vcHl0aG9uLWRhZW1vbi8iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIAotREVQRU5EUyA9ICJweXRob24tZG9jdXRpbHMiCitERVBFTkRTICs9ICJweXRob24tZG9jdXRpbHMtbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWRvY3V0aWxzIFwKICAgICAgICAgICAgICAgICAgIHB5dGhvbi1sb2NrZmlsZSAoPj0gMC4xMCkgXAogICAgICAgICAgICAgICAgICAgcHl0aG9uLXJlc291cmNlIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCmluZGV4IDMzM2I1ZTIuLjljNWE4OWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYwpAQCAtNCw4ICs0LDggQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzMTU1YzdiZGM3MWY2NmUwMjY3ODQxMWQyYWJmOTk2IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNhMDhjOGJjZjBhMmIyOWYxY2QyMWI5ZGU0ZDEyZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQ4MDc0YmU0Yzk5M2ZiZTQ5NDc4NzhjZTU5MzA1MmY3MWRhYzgyOTMyYTY3N2Q0OTE5NGQ4Y2U5Nzc4MDAyZSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNzViN2MxYTNjYzBjYjAxMTUxZWNlZDA3YzYxYzBiOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjcwMDFkZTMyZjYyN2MyMjM4MGE2ODhiY2M0M2NlODM1MDRhN2JjNWRhNDcyMjA5YjRjNzBmMDI4MjlmMGI4IgogCiBQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWRhdGV1dGlsIgogaW5oZXJpdCBweXBpCkBAIC0xMyw2ICsxMyw4IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tem9uZWluZm8iCiBGSUxFU18ke1BOfS16b25laW5mbyA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS9zaXRlLXBhY2thZ2VzL2RhdGV1dGlsL3pvbmVpbmZvIgogCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCiAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsXzIuNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi43LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjcuMy5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxOGNjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgotTElDRU5TRSA9ICJNSVQgJiBBRkwtMi4xIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCBcCi0JCSAgICBmaWxlOi8vZGJ1cy1nbWFpbi9DT1BZSU5HO21kNT0wNWMzZWFjZDUwZjY5YmIxZDU4YWZlYzQ2MGJhYWQ1NyAiCi1ERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCBweXRob24tcHlyZXgtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzLXB5dGhvbi9kYnVzLXB5dGhvbi0ke1BWfS50YXIuZ3ogXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWNlMWRkZjI1ODIwNjBmOGY5NzE2NTJlYTU0Y2MxN2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMjljMTcxNzJjZGI5Y2I2MWM2OGIxZjFhNzFkZmU3MzUxNTA2ZmM4MzA4NjkwMjljNDc0NDliZDA0ZmFlYiIKLVMgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgotCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24taW8gcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLXN0cmluZ29sZCBweXRob24tdGhyZWFkaW5nIHB5dGhvbi14bWwiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgZmlsZXMgdGhhdCBjbGFzaCB3aXRoIHB5dGhvbjMtZGJ1czsgdGhlaXIgY29udGVudCBpcyBzYW1lCi0gICAgcm0gJHtEfSR7aW5jbHVkZWRpcn0vZGJ1cy0xLjAvZGJ1cy9kYnVzLXB5dGhvbi5oICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2RidXMtcHl0aG9uLnBjCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYnVzXzEuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZjcyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuOC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiTUlUICYgQUZMLTIuMSB8IEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQgXAorCQkgICAgZmlsZTovL2RidXMtZ21haW4vQ09QWUlORzttZDU9MDVjM2VhY2Q1MGY2OWJiMWQ1OGFmZWM0NjBiYWFkNTcgIgorREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwgcHl0aG9uLXB5cmV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjczNzlkYjc3NGMxMDkwNGYyN2U3ZTI3NDNkOTBmYjQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiZjEyYmJiNzY1ZTMwMGJmOGUyYTFiMmYzMmY4NTk0OWVhYjA2OTk4ZGJkYTEyNzk1MmMzMWNiNjM5NTdiNmYiCitTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIGRvY3VtZW50YXRpb24gbmVlZHMgcHl0aG9uLXNwaGlueCwgd2hpY2ggaXMgbm90IGluIG9lLWNvcmUgb3IgbWV0YS1weXRob24gZm9yIG5vdworIyBjaGFuZ2UgdG8gdXNlIFBBQ0tBR0VDT05GSUcgd2hlbiBweXRob24tc3BoaW54IGlzIGFkZGVkIHRvIG9lLWNvcmUgb3IgbWV0YS1weXRob24KK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24iCisKK2V4cG9ydCBTVEFHSU5HX0xJQkRJUgorZXhwb3J0IFNUQUdJTkdfSU5DRElSCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi1pbyBweXRob24tbG9nZ2luZyBweXRob24tc3RyaW5nb2xkIHB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLXhtbCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIFJlbW92ZSBmaWxlcyB0aGF0IGNsYXNoIHdpdGggcHl0aG9uMy1kYnVzOyB0aGVpciBjb250ZW50IGlzIHNhbWUKKyAgICBybSAke0R9JHtpbmNsdWRlZGlyfS9kYnVzLTEuMC9kYnVzL2RidXMtcHl0aG9uLmggJHtEfSR7bGliZGlyfS9wa2djb25maWcvZGJ1cy1weXRob24ucGMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKaW5kZXggNGVmMmQ3Zi4uZWUzYWVlNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby5pbmMKQEAgLTMsMTIgKzMsMTQgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjA5ZWI0NzIwNjYxNGE0OTU0YzUxZGI4YTk0ODQwZmEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMzA2MDE1ZTE2YThkNTAyNGRiYWM5MjNhYzM0ZmZmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjM4MzU2NzM4NWE5YzQwNmQ4YTVjZTA4MGEyNjk0YzgyYzZiNzMzZTE1NzkyMjE5N2U4YjM5M2JiM2FhY2Q5IgorU1JDX1VSSVttZDVzdW1dID0gIjM4ZTgyYjU5YTFjMjdiYmY5OGNjZjA1NjRlYWQ3NDI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImViOTI3MWYwODc0ZjUzMTA2YTI3MTljMGMzNWNlNjc2MzFmNmNjMjdjZjgxYTYwYzZmOGM5ODE3YjM1YTNmNmUiCiAKIFBZUElfUEFDS0FHRSA9ICJEamFuZ28iCiBpbmhlcml0IHB5cGkKIAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+MShcLlxkKykrKSIKKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGphbmdvIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29fMS4xMS4xMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjE0LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvcmVzdGZyYW1ld29yay5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvcmVzdGZyYW1ld29yay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU1MWE4MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrLmluYwpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gICJkamFuZ29yZXN0ZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAicGlwMyBpbnN0YWxsIGRqYW5nb3Jlc3RmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2RqYW5nb3Jlc3RmcmFtZXdvcmsiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9Nzg3OWE1YTcxNjE0N2E3ODRmN2U1MjRjOWNmMTAzYzEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDQ4MWJmOGRiYjg3YmI5MjdiNDY3OThlZGMxYTliZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDc4NjViMGJiMTU5OGIxNTM3OTM4OTIxMDFkODgxNDY2YmQ1YTk5MWRlMTJiZDYyMjlhYmIxOGIxYzg2MTM2IgorUFlQSV9QQUNLQUdFID0gImRqYW5nb3Jlc3RmcmFtZXdvcmsiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kamFuZ28gXAorIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrXzMuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmtfMy45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQwZDEyZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrXzMuOS4wLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tZGphbmdvcmVzdGZyYW1ld29yay5pbmMKK2luaGVyaXQgc2V0dXB0b29scwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlLmluYwppbmRleCA3YWY0ZmUxLi5kZmIyMGU5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGUuaW5jCkBAIC0yLDggKzIsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjY5Mzc3Zjc5ZjNmNDhjNjYxNzAxMjM2ZDVhNmE4NSIKIAotU1JDX1VSSVttZDVzdW1dID0gImRlZjQxMDZjODA4OTdiN2ZhZDJhZmIzYmMwNTM2MGU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3MDljYTg2NDI1NTljM2M1YTgxYTMzYWIxMDgzOWZhMDUyMTc3YWNjZDViYTgyMTA0N2E5OWRiNjM1MjU1ZWQiCitTUkNfVVJJW21kNXN1bV0gPSAiYWFlZWU1NTQzMWQwMjg3MDYzNjU3MTIyZmY0MWEwZTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2QxYjRlNmNiODI5ZWViNDFjMDJhZDkyMDJkODNiZWY1ZjRiN2EwMzZkZDlmYWQ3MmNlOTZhZDFlMjJlZmIwNyIKIAogUFlQSV9QQUNLQUdFID0gIkZsYXNrLU1pZ3JhdGUiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlXzIuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGVfMi4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlXzIuMS4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWlncmF0ZV8yLjIuMS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNpamF4LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0ZTcwYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheC5pbmMKQEAgLTAsMCArMSw4IEBACitERVNDUklQVElPTiA9ICJBbiBleHRlbnNpb24gZm9yIHRoZSBGbGFzayBtaWNyb2ZyYW1ld29yayB0aGF0IGFkZHMgU2lqYXggc3VwcG9ydC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3BhbnRhbGVldi9mbGFzay1zaWpheCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjY2YWRjN2I5MTFiN2M4NGI4MzdiZjc3MTk2ZTFiYTYiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1TaWpheCIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1zaWpheCIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2lqYXhfMC40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2lqYXhfMC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3MzhmYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheF8wLjQuMS5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1mbGFzay1zaWpheC5pbmMKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiMmJmMmQ0Zjc1NDA4MTg1MTAyMTk1MDU1ZDc1NTQ5ZmVlOGQ5YzllOTU0ZGNhMjQyNzE4NjkyNWNkYzQyOWYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay5pbmMKaW5kZXggZWNmNTYxOS4uNjZhZDFhNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2suaW5jCkBAIC00LDEwICs0LDEwIEBACiBpbnRlbnRpb25zLiBBbmQgYmVmb3JlIHlvdSBhc2s6IEl04oCZcyBCU0QgbGljZW5zZWQhIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21pdHN1aGlrby9mbGFzay8iCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5ODY2Yjc2YjA1NGFiMzBjMjcwYzBlYjlkN2U0M2Q3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzAxMTg4M2FjMjYyMjliOGJhMzA4NGY1NWM3NjY0YzYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NzI3OGRmZGFmZGE5OGJhNzkwMmU4OTBiMDI4OTE3NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWY0NDQ2MTIzN2I2OWVjZDkwMWNjN2NlNjZmZWVhMDMxOWI5MTU4NzQzZGQyN2EyODk5OTYyYWIyMTRkYWMxIgorU1JDX1VSSVttZDVzdW1dID0gIjgyNGYwZjIwYWFlMWY0NGM5YzdkYzQwNTRhZGI3OTY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyNzFjMDA3MGRiY2I1Mjc1ZmFkNGE4MmUyOWYyM2FiOTI2ODJkYzQ1ZjlkZmJjMjJjMDJiYTliOTMyMmNlNDgiCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18wLjEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2tfMS4wLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18wLjEyLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18xLjAuMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQ3NTYxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZS5pbmMKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiQ2xlYW4gc2luZ2xlLXNvdXJjZSBzdXBwb3J0IGZvciBQeXRob24gMyBhbmQgMiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHl0aG9uLWZ1dHVyZS5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zZjQ1NzUzOGIyOTdiZDBlZjg2NTY0YjhhYzIxNmFkNyIKKworU1JDX1VSSVttZDVzdW1dID0gIjNlOGU4OGEyYmRhNDhkNTRiMWRhNzYzNGQwNDc2MGQ3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzOWNlZDFhYjc2N2I1OTM2NjQ2Y2VkYmE4YmNjZTU4MjM5ODIzM2Q2YTYyNzA2N2Q0YzZhNDU0YzkwY2ZlZGIiCisKK1BZUElfUEFDS0FHRV9IQVNIID0gIjk5YWJkZTgxNTg0MmJjNmU5N2Q1YTc4MDZhZDUxMjM2NjMwZGExNGNhMmYzYjFmY2U5NGMwYmI5NGQzZCIKKworaW5oZXJpdCBweXBpCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZV8wLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTYuMC5iYgppbmRleCA0NmY3ZmU1Li5kOTVlMWJhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTYuMC5iYgpAQCAtMSwxMyArMSwyIEBACi1ERVNDUklQVElPTiA9ICJDbGVhbiBzaW5nbGUtc291cmNlIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGFuZCAyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXRob24tZnV0dXJlLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNmNDU3NTM4YjI5N2JkMGVmODY1NjRiOGFjMjE2YWQ3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2U4ZTg4YTJiZGE0OGQ1NGIxZGE3NjM0ZDA0NzYwZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTM5Y2VkMWFiNzY3YjU5MzY2NDZjZWRiYThiY2NlNTgyMzk4MjMzZDZhNjI3MDY3ZDRjNmE0NTRjOTBjZmVkYiIKLQotUFlQSV9QQUNLQUdFX0hBU0ggPSAiOTlhYmRlODE1ODQyYmM2ZTk3ZDVhNzgwNmFkNTEyMzY2MzBkYTE0Y2EyZjNiMWZjZTk0YzBiYjk0ZDNkIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tZnV0dXJlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldC5pbmMKaW5kZXggN2E0MjI0MC4uZmNkODFmNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXQuaW5jCkBAIC0zLDcgKzMsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDMxNDNkN2ExYTlmNWQ4YTBmZWU4MjVmMjRjYTljMzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5QU0Y7bWQ1PWMxMDY5MzFkOTQyOWVkYTA0OTI2MTdmMDM3YjhmNjlhIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNmUwYjlkZDUzODVmODFkNDc4NDUxZWM4ZWQxZDYyYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZlZjgzZDQzYmY4N2E1MTk2YzkxZTczY2I5NzcyZjk0NWE0Y2FhZmY5MTI0Mjc2NmM1OTE2ZDFkZDEzODFlNCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODdiNjAyOGMzYjc0MmIyMTBiZjU5NzM5MzlkYjU5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWNjMjY4YTE1YWRlNThkOWEwYzA0NTY5ZmU2NjEzZTE5YjhiMDM0NWI2NDQ1MzA2NGUyYzNjNmQ3OTA1MWFmIgogCiBpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjEzLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JlZW5sZXRfMC40LjE0LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxY2M2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzLmluYwpAQCAtMCwwICsxLDE2IEBACitERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyB0b29scyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EU19hcHBlbmQgPSAiJHtQWVRIT05fUE59LWdycGNpbyIKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1ncnBjaW8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0JTRC0zLUNsYXVzZTttZDU9NTUwNzk0NDY1YmEwZWM1MzEyZDY5MTllMjAzYTU1ZjkiCisKK2luaGVyaXQgcHlwaQorCitTUkNfVVJJW21kNXN1bV0gPSAiYjJmYWJmYjU0Yzc4MjRjMWU0OWEwMmRlMmFhNjYyOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGNlNWFhNjYwZDc4ODRmMjNhYWMxZWFmYTkzYjk3YTRjM2UyYjUxMmVkZmY4NzFlOTFmZGI2ZWU4NmViZDVlYSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE5YmViCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjE0LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLWdycGNpby10b29scy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWUwY2MxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8tdG9vbHNfMS44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyB0b29scyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyA9ICJweXRob24tZ3JwY2lvIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLWdycGNpbyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotU1JDX1VSSVttZDVzdW1dID0gImUwNGU2NWFmZTYwNDEwY2YxNzhmZjI2OThmMDUyYTdjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkYzg0YzA5MDM5ZDNhMDEwMTJjY2Q5NzQ1MGFiZDA2ZWU2Yjk4MDcxMGY2ZDlmMTkxYjUwZGViNjc3NGE3NWMiCi0KLSMgRm9yIHVzYWdlIGluIG90aGVyIHJlY2lwaWVzIHdoZW4gY29tcGlsaW5nIHByb3RvYnVmIGZpbGVzIChlLmcuIGJ5IGdycGNpby10b29scykKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2QyNWY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby5pbmMKQEAgLTAsMCArMSwyNSBAQAorREVTQ1JJUFRJT04gPSAiR29vZ2xlIGdSUEMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdycGMuaW8vIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0RFUEVORFNfYXBwZW5kID0gIiR7UFlUSE9OX1BOfS1wcm90b2J1ZiIKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLWdycGNpbzoiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoICIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXByb3RvYnVmIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gIjA5ODdhZTJlNDdiNTEwM2RlM2NhY2M0Mzc4NzRhM2M1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZjIzNjY2ZTc2M2NhN2ZmNjAxMDQ2NTg2NGU5ZjA4OGY0YWM3ZWNjMWUxMWFiZDZmODViMjUwZTY2YjJjMDUiCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaAppbmRleCAwYzFkOTY0Li45OTY1OTdiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCkBAIC0xOCwxNiArMTgsMjUgQEAKICBzZXR1cC5weSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGdycGNpby0xLjguNC9zZXR1cC5weQorSW5kZXg6IGdycGNpby0xLjE0LjEvc2V0dXAucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnBjaW8tMS44LjQub3JpZy9zZXR1cC5weQotKysrIGdycGNpby0xLjguNC9zZXR1cC5weQotQEAgLTExNSw3ICsxMTUsNyBAQCBpZiBFWFRSQV9FTlZfQ09NUElMRV9BUkdTIGlzIE5vbmU6CistLS0gZ3JwY2lvLTEuMTQuMS5vcmlnL3NldHVwLnB5CisrKysgZ3JwY2lvLTEuMTQuMS9zZXR1cC5weQorQEAgLTEyMyw3ICsxMjMsNyBAQCBFTkFCTEVfRE9DVU1FTlRBVElPTl9CVUlMRCA9IG9zLmVudmlyb24uCisgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyA9IG9zLmVudmlyb24uZ2V0KCdHUlBDX1BZVEhPTl9DRkxBR1MnLCBOb25lKQorIEVYVFJBX0VOVl9MSU5LX0FSR1MgPSBvcy5lbnZpcm9uLmdldCgnR1JQQ19QWVRIT05fTERGTEFHUycsIE5vbmUpCisgaWYgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyBOb25lOgorLSAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyA9ICcgLXN0ZD1jKysxMScKKysgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgPSAiIgorICAgaWYgJ3dpbjMyJyBpbiBzeXMucGxhdGZvcm0gYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNSk6CisgICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtRF9oeXBvdD1oeXBvdCcKKyAgICAgIyBXZSB1c2UgZGVmaW5lIGZsYWdzIGhlcmUgYW5kIGRvbid0IGRpcmVjdGx5IGFkZCB0byBERUZJTkVfTUFDUk9TIGJlbG93IHRvCitAQCAtMTM1LDcgKzEzNSw3IEBAIGlmIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgTm9uZToKICAgICAgZWxzZToKICAgICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURfZnRpbWU9X2Z0aW1lNjQgLURfdGltZWI9X190aW1lYjY0JwogICAgZWxpZiAibGludXgiIGluIHN5cy5wbGF0Zm9ybToKLS0gICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1zdGQ9YysrMTEgLXN0ZD1nbnU5OSAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJworLSAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLXN0ZD1nbnU5OSAtZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJwogKyAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKICAgIGVsaWYgImRhcndpbiIgaW4gc3lzLnBsYXRmb3JtOgogICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKLSAKKyBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURQQl9GSUVMRF8xNkJJVCcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwYmVhNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS4xNC4xLmJiCkBAIC0wLDAgKzEsNiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1ncnBjaW8uaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICIgcHl0aG9uLWVudW0zNCBcCisgICAgICAgICAgICAgICAgICAgIHB5dGhvbi1mdXR1cmVzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWM5ZDg0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW9fMS44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHb29nbGUgZ1JQQyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3JwYy5pby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyA9ICJweXRob24tcHJvdG9idWYiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2ggIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tZW51bTM0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1mdXR1cmVzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wcm90b2J1ZiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2V0dXB0b29scyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2l4IFwKLSIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotU1JDX1VSSVttZDVzdW1dID0gIjc4NjBmN2M2MWRlMzg5MDMyMzY3MGI3YjFmZjYzZTU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4ZDg3YWFiOWM3ODg5YjNhYjI5ZGQ3NGFhYzFhNTQ5M2VkNzhiOWJmNWFmYmExYzA2OWM5ZGQ1NTMxZjk1MWQiCi0KLSMgRm9yIHVzYWdlIGluIG90aGVyIHJlY2lwZXMgd2hlbiBjb21waWxpbmcgcHJvdG9idWYgZmlsZXMgKGUuZy4gYnkgZ3JwY2lvLXRvb2xzKQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHlwZXJsaW5rLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmsuaW5jCmluZGV4IDJiNWIwYTAuLjc4ZTNlZTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmsuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmsuaW5jCkBAIC0zLDggKzMsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zODkzZDRlZDA1ZGNjODIzZjhlZDY4NWE5ZWExOWJjYiIKIAotU1JDX1VSSVttZDVzdW1dID0gImVhY2NiOTg0NWI1NTk4MTdlODM4ODQ2NjY5Y2JjNjhhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjNGZmZGJkZTliZGFkMjA0ZDUwN2JkOGY1NTRmMTZiYmE4MmRkMzU2ZjYxMzBjYjE2ZjQxNDIyOTA5YzMzYmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjAxYjRmZjc0NGYxNGJjNWQwYTIyYTZiOWYxNTI1YWI3ZDYzMTJjYjBmZjk2N2Y1OTQxNGJiYWM1MmYwYTMwNiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNDFhOTY3NzliMzI0ZDgyNDg2NDY5NmE5NGIyNDgyMyIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmtfMTcuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh5cGVybGlua18xOC4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmtfMTcuMy4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHlwZXJsaW5rXzE4LjAuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmEuaW5jCmluZGV4IGIxZDBkMTguLjUxOTgxMmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYS5pbmMKQEAgLTEsMTMgKzEsMTggQEAKIFNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGlzZWQgRG9tYWluIE5hbWVzIGluIEFwcGxpY2F0aW9ucyIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ramQvaWRuYSIKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgUHl0aG9uLTIuMCAmIFVuaWNvZGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YzliYTVhY2Q4Mjk1Nzk0OTJmZDVlYjMwNmM3YTA1NjUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9NzgyNzc1YjMyZjk2MDk4NTEyZTI4M2ZiNWQ0NTQ2Y2QiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNzA2ZTI3OTBiMDE2YmQwZWQ0ZWRkMmQ0YmE0ZDE0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzZhNWRlMzA4OTAwOWUzZGE3YzVkZGU2NGExNDFkYmM4NTUxZDViN2Y2Y2Y0ZWQ3YzI1NjhkMGNjNTIwYThmIgorU1JDX1VSSVttZDVzdW1dID0gIjBlNWJiNjkwMThkZGVmMWI5ZDk1ZjY4MTE4MmJlODJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4NGEzOGE2ZjkwM2MxZDcxZDZkNWZhYzA2NmI1OGQ3NzY4YWY0ZGUyYjgzMmU0MjZlYzc5YzMwZGFhOTRhMTYiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCiAgICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCiAiCiAKKyMgUmVtb3ZlIGJ1bmRsZWQgZWdnLWluZm8KK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBybSAtcmYgJHtTfS9pZG5hLmVnZy1pbmZvCit9CisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuNy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlkbmFfMi42LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYV8yLjcuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTZiMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWluZmxlY3Rpb24uaW5jCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiQSBwb3J0IG9mIFJ1Ynkgb24gUmFpbHMnIGluZmxlY3Rpb24gdG8gUHl0aG9uLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9pbmZsZWN0aW9uIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRlNzgzM2Q5YzJjZTAwNTJhNDA3MzkyOGM3NmExM2Q3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzk0MTE2NWU5ZjE0OGUwNTIwMDIzOTQxYzA4ODZiNDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMThlYTdmYjdhN2QxNTI4NTMzODY1MjNkZWYwODczNmFhOGMzMjYzNmIwNDdhZGU1NWY3NTc4YzRlZGViMTZjYSIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5mbGVjdGlvbl8wLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhOWQ0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5mbGVjdGlvbl8wLjMuMS5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24taW5mbGVjdGlvbi5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb2RlY3MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbnRlcnZhbHMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlY2NhMzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzLmluYwpAQCAtMCwwICsxLDE1IEBACitERVNDUklQVElPTiA9ICJJbnRlcnZhbCBhcml0aG1ldGljIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQWxleGFuZHJlRGVjYW4vcHl0aG9uLWludGVydmFscyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9CU0QtMy1DbGF1c2U7bWQ1PTU1MDc5NDQ2NWJhMGVjNTMxMmQ2OTE5ZTIwM2E1NWY5IgorCitQWVBJX1BBQ0tBR0UgOj0gInB5dGhvbi1pbnRlcnZhbHMiCisKK2luaGVyaXQgcHlwaQorCitTUkNfVVJJW21kNXN1bV0gPSAiYTM1ZGQ0NDI2OWZkYjEzNGJmMTljZmQ4MGNiMmMxMjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYThhMTViN2MyZmFkYjg0NjUzMTBmNDRhYTk2ZTM4NDgyOGIzNWEyOWRlMzhhYzc0NzM4Y2Q2NjU5MjRjYjhhYyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzXzEuNS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWludGVydmFsc18xLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzJhMzNiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWludGVydmFsc18xLjUuNC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24taW50ZXJ2YWxzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlwYWRkcmVzc18xLjAuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1MGI0Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIDMuMysncyBpcGFkZHJlc3MgZm9yIFB5dGhvbiAyLjYsIDIuNywgMy4yLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9waGloYWcvaXBhZGRyZXNzIgotTElDRU5TRSA9ICJQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9N2Y1Mzg1ODRjYzM0MDdiZjc2MDQyZGVmNzE2ODU0OGEiCi0KLURFUEVORFMgKz0gInB5dGhvbi1waXAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDY4N2VmYWY5M2EzMjQ3NmQ4MWU5MGJhMDYwOWM1NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMDBkODY4NjAxMWQ0NzBiNWU0ZGUyMDdkODAzNDQ1ZGVlZTQyNzQ1NWNkMGNiN2M5ODJiNjhjZjgyNTI0ZjgxIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3NfMS4wLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZGU4YjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4yMi5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlB5dGhvbiAzLjMrJ3MgaXBhZGRyZXNzIGZvciBQeXRob24gMi42LCAyLjcsIDMuMi4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhpaGFnL2lwYWRkcmVzcyIKK0xJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdmNTM4NTg0Y2MzNDA3YmY3NjA0MmRlZjcxNjg1NDhhIgorCitERVBFTkRTICs9ICJweXRob24tcGlwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzRjMWNlMzEwOWYzMGVhYTFhYjNkZDM0MmU3Yjc2ZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjE0NmM3NTFlYTQ1Y2FkNjE4OGRkNmNmMmQ5Yjc1N2Y2ZjRmOGQ2ZmZiOTZhMDIzZTZmMmUyNmVlYTAyYTcyYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29ydC5pbmMKaW5kZXggNmQxM2U1Zi4uMzU5YjE4MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnQuaW5jCkBAIC0xMywzICsxMyw1IEBACiAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKICAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGluZWNhY2hlMl8xLjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saW5lY2FjaGUyXzEuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NmRhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGluZWNhY2hlMl8xLjAuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIkEgYmFja3BvcnQgb2YgbGluZWNhY2hlIHRvIG9sZGVyIHN1cHBvcnRlZCBQeXRob25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctY2FiYWwvbGluZWNhY2hlMiIKK0xJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0xOTtlbmRsaW5lPTE5O21kNT0zNjhkZGM4NTg4NDMxYzE4MGFlN2MzM2Y0ZmI1NzUxOSIKKworREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tcGJyLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjdiMjVkMDI4OWVjMzZiZmYxZjllNjNjNDMyOWNlNjVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiMjZmZjRlNzExMGRiNzZlZWI2ZjVhN2I2NGE4MjYyMzgzOWQ1OTVjMjAzOGVlZGE2NjJmMmEyZGI3OGU5N2MiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK0NMRUFOX0JST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCmluZGV4IDNmM2ExZTIuLjdmMzU1YTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKQEAgLTE4LDggKzE4LDggQEAKIAogREVQRU5EUyArPSAibGlieG1sMiBsaWJ4c2x0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYzI2NmQ5MDYyZTIzYjA4ZjY2NDI2OTc5YTJiMzZmNTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTI2MjljZGJjYWQ4MmI4MzkyMmEzNDg4OTM3NjMyYTQ5ODNlY2MwZmVkM2U1Y2ZiZjQzMGQwNjkzODJlZWI5YiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMTIzOTQwMGNhNGUxMzBiNjk5OTNiYjNjMTQyMDRiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmFmYmU0MDMwOTBmNTg5M2UyNTQ5NThkMDI4NzVlMDczMjk3NWU3M2M0YzBjZGQzM2MxZjAwOWE2MTk2M2NhIgogCiBESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC14c2x0LWNvbmZpZz0ncGtnLWNvbmZpZyBsaWJ4c2x0JyBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sXzQuMi40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjIuMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfNC4yLjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzNmFiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8uaW5jCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gY3J5cHRvIGFuZCBTU0wgdG9vbGtpdCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9tMmNyeXB0by9tMmNyeXB0byIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iMGUxZjBiN2QwY2U4YTYyYzE4YjEyODdiOTkxODAwZSIKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLW0yY3J5cHRvOiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLXBsYXRmb3JtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9tMmNyeXB0by0wLjI2LjQtZ2NjX21hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZmNlM2NiZjg1ZWI4NGE2Njk2ODI4OTJiOTM1NzQ2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWIyNzUxY2RhZGM2YWZhYzNkZjhhNTc5OTY3NmI3YjdjNjdhNmFkMTQ0YmI2MmQzODU2MzA2MmU3Y2QzZmM2IgorCitQWVBJX1BBQ0tBR0UgPSAiTTJDcnlwdG8iCitpbmhlcml0IHB5cGkgc2l0ZWluZm8KKworREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24tdHlwaW5nIgorCitESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gLUkke1NUQUdJTkdfSU5DRElSfSIKK0RJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gImJ1aWxkX2V4dCAtLW9wZW5zc2w9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IgorCitTV0lHX0ZFQVRVUkVTX3g4NiA9ICItRF9faTM4Nl9fIgorU1dJR19GRUFUVVJFU194MzIgPSAiLURfX0lMUDMyX18iCitTV0lHX0ZFQVRVUkVTID89ICItRF9fJHtIT1NUX0FSQ0h9X18iCitleHBvcnQgU1dJR19GRUFUVVJFUworCisjIEdldCBhcm91bmQgYSBwcm9ibGVtIHdpdGggc3dpZywgYnV0IG9ubHkgaWYgdGhlCisjIG11bHRpbGliIGhlYWRlciBmaWxlIGV4aXN0cy4KKyMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICR7Q1BQfSAtZE0gLSA8IC9kZXYvbnVsbCB8IGdyZXAgLXYgJ19fXChTVERDXHxSRUdJU1RFUl9QUkVGSVhcfEdOVUNcfFNURENfSE9TVEVEXClfXycgXAorICAgIHwgc2VkICdzL15cKCNkZWZpbmUgXChbXiBdKlwpIC4qXCkkLyN1bmRlZiBcMlxuXDEvJyA+IFNXSUcvZ2NjX21hY3Jvcy5oCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTt0aGVuCisgICAgICAgIGJpdD0iNjQiCisgICAgZWxzZQorICAgICAgICBiaXQ9IjMyIgorICAgIGZpCisKKyAgICBpZiBbIC1lICR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wvb3BlbnNzbGNvbmYtJHtiaXR9LmggXSA7dGhlbgorICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbworICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi0ke2JpdH1cLi8iICIkaSIKKyAgICAgICAgZG9uZQorICAgIGVsaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLW4ke2JpdH0uaCBdIDt0aGVuCisgICAgICAgIGZvciBpIGluIFNXSUcvX2VjLmkgU1dJRy9fZXZwLmk7IGRvCisgICAgICAgICAgICBzZWQgLWkgLWUgInMvb3BlbnNzbGNvbmYuKlwuL29wZW5zc2xjb25mLW4ke2JpdH1cLi8iICIkaSIKKyAgICAgICAgZG9uZQorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLzAwMDEtc2V0dXAucHktbGluay1pbi1zeXNyb290LW5vdC1pbi1ob3N0LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IGM3MWIxNmYuLmIzMzlkOTMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by8wMDAxLXNldHVwLnB5LWxpbmstaW4tc3lzcm9vdC1ub3QtaW4taG9zdC1kaXJlY3Rvcmllcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vMDAwMS1zZXR1cC5weS1saW5rLWluLXN5c3Jvb3Qtbm90LWluLWhvc3QtZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTEwLDMwICsxMCwyNiBAQAogIHNldHVwLnB5IHwgNiArKystLS0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggMzQwN2M4Mi4uMTVlZDdjZCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTEyNyw3ICsxMjcsNyBAQCBjbGFzcyBfTTJDcnlwdG9CdWlsZEV4dChidWlsZF9leHQuYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgc2VsZi5vcGVuc3NsID0gb3MucGF0aC5qb2luKHNlbGYub3BlbnNzbCwgJ09wZW5TU0wnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBzZWxmLmxpYnJhcmllcyA9IFsnc3NsJywgJ2NyeXB0byddCi0tICAgICAgICAgICAgc2VsZi5vcGVuc3NsID0gJy91c3InCi0rICAgICAgICAgICAgc2VsZi5vcGVuc3NsID0gb3MuZW52aXJvbi5nZXQoICJTVEFHSU5HX0RJUiIgKQorSW5kZXg6IE0yQ3J5cHRvLTAuMzAuMS9zZXR1cC5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIE0yQ3J5cHRvLTAuMzAuMS5vcmlnL3NldHVwLnB5CisrKysgTTJDcnlwdG8tMC4zMC4xL3NldHVwLnB5CitAQCAtMTMwLDYgKzEzMCw3IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KKyAgICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdidWlsZCcsICgnYnVuZGxlZGxscycsICdidW5kbGVkbGxzJykpCiAgCi0gICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgotICAgICAgICAgJycnT3ZlcmxvYWRlZCBidWlsZF9leHQgaW1wbGVtZW50YXRpb24gdG8gYXBwZW5kIGN1c3RvbSBvcGVuc3NsCi1AQCAtMTQzLDggKzE0Myw4IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF9leHQpOgotICAgICAgICAgaWYgX29wZW5zc2wgYW5kIG9zLnBhdGguaXNkaXIoX29wZW5zc2wpOgotICAgICAgICAgICAgIHNlbGYub3BlbnNzbCA9IF9vcGVuc3NsCisgICAgICAgICBzZWxmLmxpYnJhcmllcyA9IFsnc3NsJywgJ2NyeXB0byddCisrICAgICAgICBzZWxmLm9wZW5zc2wgPSBvcy5lbnZpcm9uLmdldCggIlNUQUdJTkdfRElSIiApCisgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICBzZWxmLmxpYnJhcmllcyA9IFsnc3NsZWF5MzInLCAnbGliZWF5MzInXQorICAgICAgICAgICAgIGlmIHNlbGYub3BlbnNzbCBhbmQgb3BlbnNzbF92ZXJzaW9uKHNlbGYub3BlbnNzbCwgMHgxMDEwMDAwMCwgVHJ1ZSk6CitAQCAtMTUwLDggKzE1MSw4IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KICAKLS0gICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5vcGVuc3NsLCAnaW5jbHVkZScpKQotLSAgICAgICAgb3BlbnNzbF9saWJyYXJ5X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm9wZW5zc2wsICdsaWInKQotKyAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLmVudmlyb24uZ2V0KCAiU1RBR0lOR19JTkNESVIiICkpCi0rICAgICAgICBvcGVuc3NsX2xpYnJhcnlfZGlyID0gb3MuZW52aXJvbi5nZXQoICJTVEFHSU5HX0xJQkRJUiIgKQorICAgICAgICAgaWYgc2VsZi5vcGVuc3NsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIGxvZy5kZWJ1Zygnc2VsZi5vcGVuc3NsID0gJXMnLCBzZWxmLm9wZW5zc2wpCistICAgICAgICAgICAgb3BlbnNzbF9saWJyYXJ5X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm9wZW5zc2wsICdsaWInKQorLSAgICAgICAgICAgIG9wZW5zc2xfaW5jbHVkZV9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5vcGVuc3NsLCAnaW5jbHVkZScpCisrICAgICAgICAgICAgb3BlbnNzbF9saWJyYXJ5X2RpciA9IG9zLmVudmlyb24uZ2V0KCAiU1RBR0lOR19MSUJESVIiICkKKysgICAgICAgICAgICBvcGVuc3NsX2luY2x1ZGVfZGlyID0gb3MuZW52aXJvbi5nZXQoICJTVEFHSU5HX0lOQ0RJUiIgKQogIAotICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIkxpbnV4IjoKLSAgICAgICAgICAgICBpZiBfbXVsdGlhcmNoOiAgIyBvbiBGZWRvcmEvUkhFTCBpdCBpcyBhbiBlbXB0eSBzdHJpbmcKLS0tIAotMi43LjQKLQorICAgICAgICAgICAgIHNlbGYubGlicmFyeV9kaXJzLmFwcGVuZChvcGVuc3NsX2xpYnJhcnlfZGlyKQorICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChvcGVuc3NsX2luY2x1ZGVfZGlyKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL2Nyb3NzLWNvbXBpbGUtcGxhdGZvcm0ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaAppbmRleCBjNjY1NGU1Li40YjY0ZjQ2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaApAQCAtNCwyNyArNCwzMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1JbmRleDogTTJDcnlwdG8tMC4yNi4wL3NldHVwLnB5CitJbmRleDogTTJDcnlwdG8tMC4zMC4xL3NldHVwLnB5CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTTJDcnlwdG8tMC4yNi4wLm9yaWcvc2V0dXAucHkKLSsrKyBNMkNyeXB0by0wLjI2LjAvc2V0dXAucHkKLUBAIC0xNDEsMTkgKzE0MSw2IEBAIGNsYXNzIF9NMkNyeXB0b0J1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF8KLSAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX2RpcnMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYub3BlbnNzbCwgJ2luY2x1ZGUnLCAnb3BlbnNzbCcpKQorLS0tIE0yQ3J5cHRvLTAuMzAuMS5vcmlnL3NldHVwLnB5CisrKysgTTJDcnlwdG8tMC4zMC4xL3NldHVwLnB5CitAQCAtMTYwLDIyICsxNjAsNiBAQCBjbGFzcyBfTTJDcnlwdG9CdWlsZEV4dChidWlsZF9leHQuYnVpbGRfCisgICAgICAgICAgICAgbG9nLmRlYnVnKCdzZWxmLmluY2x1ZGVfZGlycyA9ICVzJywgc2VsZi5pbmNsdWRlX2RpcnMpCisgICAgICAgICAgICAgbG9nLmRlYnVnKCdzZWxmLmxpYnJhcnlfZGlycyA9ICVzJywgc2VsZi5saWJyYXJ5X2RpcnMpCiAgCistICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiTGludXgiOgogLSAgICAgICAgICAgICMgRm9yIFJlZEhhdC1iYXNlZCBkaXN0cm9zLCB0aGUgJy1EX197YXJjaH1fXycgb3B0aW9uIGZvcgogLSAgICAgICAgICAgICMgU3dpZyBuZWVkcyB0byBiZSBub3JtYWxpemVkLCBwYXJ0aWN1bGFybHkgb24gaTM4Ni4KIC0gICAgICAgICAgICBtYWNoID0gcGxhdGZvcm0ubWFjaGluZSgpLmxvd2VyKCkKIC0gICAgICAgICAgICBpZiBtYWNoIGluICgnaTM4NicsICdpNDg2JywgJ2k1ODYnLCAnaTY4NicpOgogLSAgICAgICAgICAgICAgICBhcmNoID0gJ19faTM4Nl9fJwotLSAgICAgICAgICAgIGVsaWYgbWFjaCBpbiAoJ3BwYzY0JywgJ3Bvd2VycGM2NCcpOgorLSAgICAgICAgICAgIGVsaWYgbWFjaCBpbiAoJ3BwYzY0JywgJ3Bvd2VycGM2NCcsICdwcGM2NGxlJywgJ3BwYzY0ZWwnKToKIC0gICAgICAgICAgICAgICAgYXJjaCA9ICdfX3Bvd2VycGM2NF9fJwogLSAgICAgICAgICAgIGVsaWYgbWFjaCBpbiAoJ3BwYycsICdwb3dlcnBjJyk6CiAtICAgICAgICAgICAgICAgIGFyY2ggPSAnX19wb3dlcnBjX18nCiAtICAgICAgICAgICAgZWxzZToKIC0gICAgICAgICAgICAgICAgYXJjaCA9ICdfXyVzX18nICUgbWFjaAogLSAgICAgICAgICAgIHNlbGYuc3dpZ19vcHRzLmFwcGVuZCgnLUQlcycgJSBhcmNoKQorLSAgICAgICAgICAgIGlmIG1hY2ggaW4gKCdwcGM2NGxlJywgJ3BwYzY0ZWwnKToKKy0gICAgICAgICAgICAgICAgc2VsZi5zd2lnX29wdHMuYXBwZW5kKCctRF9DQUxMX0VMRj0yJykKIC0KICAgICAgICAgIHNlbGYuc3dpZ19vcHRzLmV4dGVuZChbJy1JJXMnICUgaSBmb3IgaSBpbiBzZWxmLmluY2x1ZGVfZGlyc10pCi0gICAgICAgICBzZWxmLnN3aWdfb3B0cy5hcHBlbmQoJy1pbmNsdWRlYWxsJykKLSAgICAgICAgIHNlbGYuc3dpZ19vcHRzLmFwcGVuZCgnLW1vZGVybicpCisgCisgICAgICAgICAjIFNvbWUgTGludXggZGlzdHJpYnV0b3IgaGFzIGFkZGVkIHRoZSBmb2xsb3dpbmcgbGluZSBpbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL20yY3J5cHRvLTAuMjYuNC1nY2NfbWFjcm9zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvL20yY3J5cHRvLTAuMjYuNC1nY2NfbWFjcm9zLnBhdGNoCmluZGV4IDJkNzM4Y2MuLjdmNmRkMjkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by9tMmNyeXB0by0wLjI2LjQtZ2NjX21hY3Jvcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2gKQEAgLTEsMTYgKzEsMjIgQEAKIEltcG9ydGVkIGZyb20gRmVkb3JhCiAKLS0tLSBNMkNyeXB0by9TV0lHL19tMmNyeXB0by5pCTIwMTctMDktMjYgMTE6MjY6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgTTJDcnlwdG8tMC4yNi40L1NXSUcvX20yY3J5cHRvLmkJMjAxNy0wOS0yNiAyMTowNDoxNC4wODAzMzA3NDEgKzAyMDAKLUBAIC03LDYgKzcsNyBAQAotICAqIENvcHlyaWdodCAoYykgMjAwOS0yMDEwIEhlaWtraSBUb2l2b25lbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0luZGV4OiBNMkNyeXB0by0wLjMwLjEvU1dJRy9fbTJjcnlwdG8uaQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIE0yQ3J5cHRvLTAuMzAuMS5vcmlnL1NXSUcvX20yY3J5cHRvLmkKKysrKyBNMkNyeXB0by0wLjMwLjEvU1dJRy9fbTJjcnlwdG8uaQorQEAgLTgsNiArOCwxMSBAQAogICAqCiAgICovCi0rJWltcG9ydCAiZ2NjX21hY3Jvcy5oIgogIAorKyVpbXBvcnQgImdjY19tYWNyb3MuaCIKKysKKyslaWdub3JlIFdDSEFSX01BWDsKKyslaWdub3JlIFdDSEFSX01JTjsKKysKICAlbW9kdWxlKHRocmVhZHM9MSkgbTJjcnlwdG8KICAvKiBXZSByZWFsbHkgZG9uJ3QgbmVlZCB0aHJlYWRibG9jayAoUHlHSUxTdGF0ZV9FbnN1cmUoKSBldGMuKSBhbnl3aGVyZS4KLUBAIC0xNSwxMSArMTYsNiBAQAorICAgIERpc2FibGUgdGhyZWFkYWxsb3cgYXMgd2VsbCwgb25seSBlbmFibGUgaXQgZm9yIG9wZXJhdGlvbnMgbGlrZWx5IHRvCitAQCAtMTUsMTEgKzIwLDYgQEAKICAlbm90aHJlYWRibG9jazsKICAlbm90aHJlYWRhbGxvdzsKICAKQEAgLTIwLDUgKzI2LDEwIEBACiAtI2VuZGlmCiAtCiAgJXsKLSAjaWYgX19HTlVDX18gPCA1Ci0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1sYWJlbCIKKyAjaWZkZWYgX1dJTjMyCisgI2RlZmluZSBfV0lOU09DS0FQSV8KK0BAIC05NSw0ICs5NSwzIEBAIHN0YXRpYyBQeU9iamVjdCAqeDUwOV9zdG9yZV92ZXJpZnlfY2JfZnUKKyAlY29uc3RhbnQgaW50IGVuY3J5cHQgPSAxOworICVjb25zdGFudCBpbnQgZGVjcnlwdCA9IDA7CisgI2VuZGlmCistICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI2LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4yNi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzJjNzZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjI2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIGNyeXB0byBhbmQgU1NMIHRvb2xraXQiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vbTJjcnlwdG8vbTJjcnlwdG8iCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9YjBlMWYwYjdkMGNlOGE2MmMxOGIxMjg3Yjk5MTgwMGUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXNldHVwLnB5LWxpbmstaW4tc3lzcm9vdC1ub3QtaW4taG9zdC1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS1wbGF0Zm9ybS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbTJjcnlwdG8tMC4yNi40LWdjY19tYWNyb3MucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNWM3NGMyNWJhOGI0NTEyMjMxOGExNjVhM2EyMDU5YWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNhZTdhY2MwYjM0ODIxZjhjMGRkZjY2NjVlNDgyODkzZmUxZjE5OGFkNjM3OWU2MWZmYTlkOGU2NWY1YzE5OSIKLQotUFlQSV9QQUNLQUdFID0gIk0yQ3J5cHRvIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgc2l0ZWluZm8KLQotREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tdHlwaW5nIgotCi1ESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRElSX0hPU1R9IC1JJHtTVEFHSU5HX0lOQ0RJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICJidWlsZF9leHQgLS1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0iCi0KLVNXSUdfRkVBVFVSRVNfeDg2ID0gIi1EX19pMzg2X18iCi1TV0lHX0ZFQVRVUkVTID89ICItRF9fJHtIT1NUX0FSQ0h9X18iCi1leHBvcnQgU1dJR19GRUFUVVJFUwotCi0jIEdldCBhcm91bmQgYSBwcm9ibGVtIHdpdGggc3dpZywgYnV0IG9ubHkgaWYgdGhlCi0jIG11bHRpbGliIGhlYWRlciBmaWxlIGV4aXN0cy4KLSMKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAke0NQUH0gLWRNIC0gPCAvZGV2L251bGwgfCBncmVwIC12IF9fU1REQ19fIHwgZ3JlcCAtdiBfX1JFR0lTVEVSX1BSRUZJWF9fIHwgZ3JlcCAtdiBfX0dOVUNfXyBcCi0JfCBzZWQgJ3MvXlwoI2RlZmluZSBcKFteIF0qXCkgLipcKSQvI3VuZGVmIFwyXG5cMS8nID4gU1dJRy9nY2NfbWFjcm9zLmgKLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTt0aGVuCi0gICAgICAgIGJpdD0iNjQiCi0gICAgZWxzZQotICAgICAgICBiaXQ9IjMyIgotICAgIGZpCi0KLSAgICBpZiBbIC1lICR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wvb3BlbnNzbGNvbmYtJHtiaXR9LmggXSA7dGhlbgotICAgICAgICBmb3IgaSBpbiBTV0lHL19lYy5pIFNXSUcvX2V2cC5pOyBkbwotICAgICAgICAgICAgc2VkIC1pIC1lICJzL29wZW5zc2xjb25mLipcLi9vcGVuc3NsY29uZi0ke2JpdH1cLi8iICIkaSIKLSAgICAgICAgZG9uZQotICAgIGVsaWYgWyAtZSAke1NUQUdJTkdfSU5DRElSfS9vcGVuc3NsL29wZW5zc2xjb25mLW4ke2JpdH0uaCBdIDt0aGVuCi0gICAgICAgIGZvciBpIGluIFNXSUcvX2VjLmkgU1dJRy9fZXZwLmk7IGRvCi0gICAgICAgICAgICBzZWQgLWkgLWUgInMvb3BlbnNzbGNvbmYuKlwuL29wZW5zc2xjb25mLW4ke2JpdH1cLi8iICIkaSIKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMzAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjMwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYxMmZjZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0b18wLjMwLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLW0yY3J5cHRvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1jY2FiZV8wLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tY2NhYmVfMC40LjAuYmIKaW5kZXggYTg2ZDE1OC4uNmI2M2NkNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1jY2FiZV8wLjQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWNjYWJlXzAuNC4wLmJiCkBAIC0xNiwzICsxNiw1IEBACiAgICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKICAgICBweXRob24tY21kMiBcCiAgICAgcHl0aG9uLXB5cGFyc2luZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vY2tfMi4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18yLjAuMC5iYgppbmRleCA4NDBjMzZlLi4yMTA1MDJmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18yLjAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18yLjAuMC5iYgpAQCAtMSw1ICsxLDUgQEAKIFNVTU1BUlkgPSAiQSBQeXRob24gTW9ja2luZyBhbmQgUGF0Y2hpbmcgTGlicmFyeSBmb3IgVGVzdGluZyIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWRlOWRmYmY3ODA0NDZiMThhYWIxMWYwMGJhYWY1YjdlIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMGZlYmZhZmQxNDMzMGM5ZGNhYTQwZGUyZDgyZDQwYWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzVkOGFlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aW1lLm1vbm90b25pYygpIGZvciBQeXRob24gMi4wIHRocm91Z2ggMy4yIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDI3OTRjMGRmNWI5MDdmZGFjZTIzNWE2MTlkODAzMTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyOTMwMmNkNmIxMDEzYjNhYjBkMWVkNzhlMjBkMjJmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMDI2MTFkNWI1MThjZDQwNTFiZjIyZDIxYmQwYWU1NWIzYTAzZjJkMjk5M2ExOWI2YzkwZDlkMTY4NjkxZjg0IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWN0eXBlcyAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXJlICR7UFlUSE9OX1BOfS10aHJlYWRpbmciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZTdiMWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ub3RvbmljXzEuNS5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRpbWUubW9ub3RvbmljKCkgZm9yIFB5dGhvbiAyLjAgdGhyb3VnaCAzLjIiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlmODFjYjBlNTk2NjQ3OTc1NDQ1M2RlYTJiNjgyMmY0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzOTUzZDU1MDc2ZGYwMzg1NDFlNjQ4YTUzNjc2ZmIyNDk4MGY3YTFiZTI5MGNkZGEyMTMwMGIzYmMyMWRmYjAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRocmVhZGluZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKaW5kZXggZDc0MzAyMy4uOTEyMzViOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudC5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01BTklGRVNULmluO21kNT1jZTIyYzBjZDk4NmQyZGUzZjcwNzNjZDZiNTUyM2FlMCIKIAotU1JDX1VSSVttZDVzdW1dID0gImEwZDM0OWNmOTUzMGUzMzE2OTdhNmU1YWIxZjQwZGU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiYTRkNDc5OGRjYWMyOTY1ODc0ZjI0YWZiNjYzMWI0MzI2YmFhNGJkMDI1MDU3NDRkMzRmNjkwYzM1NDg1NmEiCitTUkNfVVJJW21kNXN1bV0gPSAiYjBmYzhlYTM4Zjg3ZDJjMWFiMWVkNzlhOTVjMDc4ZjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDcyZmFlZDAzNzZhYjAzOTczNmMyYmExMmUzMDY5NWUyNzg4YzRhYTU2OWM5YzNlM2Q3MjEzMWRlMjU5MjIxMCIKIAogUFlQSV9QQUNLQUdFID0gIm5kZ19odHRwc2NsaWVudCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMGViMzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbmRnLWh0dHBzY2xpZW50LmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDg4MWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmRnLWh0dHBzY2xpZW50XzAuNS4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBweXRob24tbmRnLWh0dHBzY2xpZW50LmluYworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJuZGdfaHR0cGNsaWVudCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuZGdfaHR0cGNsaWVudF0gPSAiJHtiaW5kaXJ9L25kZ19odHRwY2xpZW50IgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCmluZGV4IGI5Zjg0YTYuLmQ2Y2EyNDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXMuaW5jCkBAIC02LDEzICs2LDEzIEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVlMDQ3MGYyZGUzMzZjMzcwYTcxYzJmOGQ1ZTgxYzExIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYzdhMjc1N2I2MDc3NDgyNTVmMzI3MDIyMWFjNjFkNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDRhOTQwOTFkZDcxZjA1OTIyZWVjNjYxNjM4ZWMxYTM1ZjI2ZDU3M2MxMTlhYTJmYWQ5NjRmMTBhMjg4MGU2YyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3YjU5N2M3Zjk4OTY1MmUwYzlhZjVmMDlhMTU3ZTNhZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjI0Y2E0N2FjZjY5MjIyZTgyNTMwZTg5MTExZGQ5ZDE0ZjliOTcwYWIyY2QzYTFjMmM3OGYwYzRmYmJhNGY0IgogCiBpbmhlcml0IHB5cGkKIAogREVQRU5EUyArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtcHktbmF0aXZlIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtcHktbmF0aXZlICR7UFlUSE9OX1BOfS1jeXRob24tbmF0aXZlIFwKICIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW5kYXNfMC4yMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzXzAuMjIuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhc18wLjIzLjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTQ5ZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGUuaW5jCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiU2ltcGxpZmllcyBidWlsZGluZyBwYXJzZSB0eXBlcyBiYXNlZCBvbiB0aGUgcGFyc2UgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2plbmlzeXMvcGFyc2VfdHlwZSIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDA3MzIzODIwY2NhMGYxZDE5MmNiYmY4YTA1MTZmOTUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNWZhNTllNDU5NjVkMWIyODk2MDIzNzQyZGYyZTcwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTk2YmRjNzVkM2RkOTMwMzZmYmZlM2QwNDEyN2RhOWY2ZGYwYzI2YzM2ZTAxZTc2ZGE4NWFkZWY0MzM2YjNjIgorCitQWVBJX1BBQ0tBR0UgPSAicGFyc2VfdHlwZSIKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXBhcnNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYgppbmRleCBiNTE2YzU5Li44ZTEwZTgwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZV8wLjQuMi5iYgpAQCAtMSwxMSArMSwyIEBACi1TVU1NQVJZID0gIlNpbXBsaWZpZXMgYnVpbGRpbmcgcGFyc2UgdHlwZXMgYmFzZWQgb24gdGhlIHBhcnNlIG1vZHVsZSIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDA3MzIzODIwY2NhMGYxZDE5MmNiYmY4YTA1MTZmOTUiCi1QWVBJX1BBQ0tBR0UgPSAicGFyc2VfdHlwZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImI1ZmE1OWU0NTk2NWQxYjI4OTYwMjM3NDJkZjJlNzA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1OTZiZGM3NWQzZGQ5MzAzNmZiZmUzZDA0MTI3ZGE5ZjZkZjBjMjZjMzZlMDFlNzZkYTg1YWRlZjQzMzZiM2MiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tcGFyc2UiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXBhcnNlLXR5cGUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTU1YTkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLmluYwpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3IxY2hhcmRqMG4zcy9wYXJzZSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFyc2UucHk7YmVnaW5saW5lPTEyNzM7ZW5kbGluZT0xMjkxO21kNT01MTQ3YWZkZDliMzYxNTI5MGFkODczM2YwMTM3YTFhMSIKKworU1JDX1VSSVttZDVzdW1dID0gImZhNjlhYjJmZTg0NmY5YjE4MzQxMTM5MWY3YzY4OTdiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMzY2RmNjIwNmYyMmFlZWJmYTAwZTViOTU0ZmNmZWExM2QxYjJkYzI3MWM3NTgwNmI2MDI1Yjk0ZmI0OTA5MzkiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUxNjM3Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlBhcnNlIHN0cmluZ3MgdXNpbmcgYSBzcGVjaWZpY2F0aW9uIGJhc2VkIG9uIHRoZSBQeXRob24gZm9ybWF0KCkgc3ludGF4IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYXJzZS5weTtiZWdpbmxpbmU9MTE5MTtlbmRsaW5lPTEyMDk7bWQ1PTUxNDdhZmRkOWIzNjE1MjkwYWQ4NzMzZjAxMzdhMWExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDIwMDIzMzg1NTFiZGZhMGYwMWJiZTRlNjc5YTE3ZGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA0OGRkZTNmNWNhMDdhZDdhYzczNTA0NjA5NTJkODNiNjNlYWFjZWNkYWMxYjM3ZjQ1ZmQ3NDg3MGQ4NDlkMiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2VfMS44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxY2NjNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjguNC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcGFyc2UuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzMuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl8zLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRmZjg2Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzMuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIEJ1aWxkIFJlYXNvbmFibGVuZXNzOiBQQlIgaXMgYSBsaWJyYXJ5IHRoYXQgaW5qZWN0cyBzb21lIHVzZWZ1bCBhbmQgc2Vuc2libGUgZGVmYXVsdCBiZWhhdmlvcnMgaW50byB5b3VyIHNldHVwdG9vbHMgcnVuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wYnIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGU4MmMyZTA3YWY1NDRjNTZhNWI3MWM4MDE1MjViMDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVmNjFjNzFhYWVmYzAyZDhlMzdjMGEzZWViOTgxNWZmNTI2ZWEyOGIzYjc2MzI0NzY5ZTYxNThkN2Y5NWJlMSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICAgICBweXRob24tcGlwIFwKLSAgICAgICAgIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnJfNC4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzQuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YjU2Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzQuMi4wLmJiCkBAIC0wLDAgKzEsMyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCisjIFRoZSBpbmMgZmlsZSBpcyBpbiBvZS1jb3JlCityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVwOF8xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiCmluZGV4IGIxMmQ3MmQuLjU0Y2U5NzggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiCkBAIC0xMiwzICsxMiw1IEBACiAgICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKICAgICBweXRob24tY21kMiBcCiAgICAgcHl0aG9uLXB5cGFyc2luZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcmlwaGVyeS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVyaXBoZXJ5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzljMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcmlwaGVyeS5pbmMKQEAgLTAsMCArMSw3IEBACitERVNDUklQVElPTiA9ICJBIHB1cmUgUHl0aG9uIDIvMyBsaWJyYXJ5IGZvciBwZXJpcGhlcmFsIEkvTyAoR1BJTywgTEVELCBQV00sIFNQSSwgSTJDLCBNTUlPLCBTZXJpYWwpIGluIExpbnV4LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXRob25ob3N0ZWQub3JnL3B5dGhvbi1wZXJpcGhlcnkvIgorTElDRU5TRSA9ICJNSVQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0wNjM4NDZhZjgyYjU1NWQ0ODgyMmNmNDNkYzZkYjZhZiIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1wZXJpcGhlcnkiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBlcmlwaGVyeV8xLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXJpcGhlcnlfMS4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFlN2ZlZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXJpcGhlcnlfMS4xLjEuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcGVyaXBoZXJ5LmluYworCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmU4ZjM1MTkzNGVkY2U3MmNkOTE5YjRlYjA3MDg3OGViZmY1NTFkYjVlMjFhZWE2MWUwZjQ0NjEwMWYwYTc5ZiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMKaW5kZXggZmE4YWQwMS4uZWZlYWI4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYwpAQCAtNCw4ICs0LDggQEAKIExJQ0VOU0UgPSAiSVNDIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWM3YTcyNTI1MTg4MGFmOGM2YTE0ODE4MTY2NTM4NWIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MTNmYzBhNjhhOTE1Y2RmNmFkNDI1MDQ5M2M5NGNmNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjhlYjMyNzc3MTZhMDFmYWFmYWJhNTUzZDYyOWQzZDYwYTFhNjI0YzdjZjQ1ZGFhNjAwZDIxNDhjMzAwMjBjIgorU1JDX1VSSVttZDVzdW1dID0gImQ0ZjMzNzI5NjVhOTk2MjM4ZDU3ZDE5Yjk1ZDJlMDNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJhOGU4ODI1OTgzOTU3MWQxMjUxZDI3ODQ3NmYzZWVjNWRiMjZkZWI3M2E3MGJlNWVkNWRjNTQzNWU0MThhYmEiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuNS4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdF80LjYuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZjc3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludC5pbmMKQEAgLTAsMCArMSwxNSBAQAorREVTQ1JJUFRJT04gPSAiSW50ZXJ2YWwgYXJpdGhtZXRpYyBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FsZXhhbmRyZURlY2FuL3B5dGhvbi1pbnRlcnZhbHMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQlNELTMtQ2xhdXNlO21kNT01NTA3OTQ0NjViYTBlYzUzMTJkNjkxOWUyMDNhNTVmOSIKKworUFlQSV9QQUNLQUdFIDo9ICJQaW50IgorCitpbmhlcml0IHB5cGkKKworU1JDX1VSSVttZDVzdW1dID0gImUxZjgwZjNmOGZjNGU2MWY2OGFkMzkxMmRiMjZiM2E4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmY2YzMTQ0M2E0NzhjMzJiYmFjNGIwMDMzN2VlOTAyNmExM2QwZTJhYzgzZDMwYzc5MTUxNDYyNTEzYmIwZDQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnRfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludF8wLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODBmMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnRfMC44LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXBpbnQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzE4LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzE4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmI5NDNiMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfMTguMC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlBJUCBpcyBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGlwLnB5cGEuaW8vIgorTElDRU5TRSA9ICJNSVQgJiBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01OTNjNmNkOWQ2MzkzMDcyMjY5NzhjYmNhZTYxYWQ0YiIKKworU1JDX1VSSVttZDVzdW1dID0gIjUyZjc1Y2ViMjFlOTZjMjU4ZjI4OTg1OWEyOTk2YjYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwZTExNjQ1ZWUzN2M5MGI0MGM0NmQ2MDcwNzBjNGZkNTgzZTJjZDQ2MjMxYjFjMDZlMzg5YzVlODE0ZWVkNzYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzCisKKyMgU2luY2UgUElQIGlzIGxpa2UgQ1BBTiBmb3IgUEVSTCB3ZSBuZWVkIHRvIGRyYWcgaW4gYWxsIHB5dGhvbiBtb2R1bGVzIHRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAicHl0aG9uLW1vZHVsZXMgcHl0aG9uLWRpc3RyaWJ1dGUgcHl0aG9uLW1pc2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfOS4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlwXzkuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZjNmJhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfOS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlBJUCBpcyBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vcGlwLnB5cGEuaW8vIgotTElDRU5TRSA9ICJNSVQgJiBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0yNWZiYTQ1MTA5NTY1Zjg3ZGUyMGJhZTg1YmMzOTQ1MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImIxNWIzM2Y5YWFkNjFmODhkMGY4Yzg2NmQxNmM1NWQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiZjQ4ZjlhNjkzYmUxZDU4ZjQ5ZjdhZjdlMGFlOWZlMjlmZDY3MWNkZThhNTVlNmVkY2EzNTgxYzRlZjU3OTYiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLSMgU2luY2UgUElQIGlzIGxpa2UgQ1BBTiBmb3IgUEVSTCB3ZSBuZWVkIHRvIGRyYWcgaW4gYWxsIHB5dGhvbiBtb2R1bGVzIHRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAicHl0aG9uLW1vZHVsZXMgcHl0aG9uLWRpc3RyaWJ1dGUgcHl0aG9uLW1pc2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZV8wLjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZV8wLjcuMi5iYgppbmRleCA2ZjQzOTBlLi40MDY1NTVhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldHR5dGFibGVfMC43LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXR0eXRhYmxlXzAuNy4yLmJiCkBAIC0yMywzICsyMyw1IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1ByZXR0eVRhYmxlLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9QcmV0dHlUYWJsZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3MuaW5jCmluZGV4IDI5N2MwZDMuLjlmMDA2MTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiSVNDIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWVmNTU2NmFjNGZlZGU5ODE1ZWNjZjEyNGMyODEzMTciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjVjY2ZjYzIzMzlkNTIyYjJkZDU4MDFhYWE0MGRjNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjODhkODllZTNiZDA2NzE2YTBiOGI1NTA0ZDljM2JjYjNjMWMwYWI5OGY5NmRjN2YxZGM1ZjU2ODEyYTRmNjBhIgorU1JDX1VSSVttZDVzdW1dID0gIjA1Nzk4MWUyZjA5MDI5Mjg4ZjUyNTViMWVhM2FiNjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlMmY5ZGE4OGVkODIzNmE3NmZmZmJlZTNjZWVmZDI1OTU4OWNmNDJkZmJjMmNlYzI4NzcxMDIxODlmYWU1OGEiCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb2dyZXNzXzEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjMuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXQuaW5jCmluZGV4IGNjNDA5YTQuLjFhNGJkMzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0LmluYwpAQCAtMiw4ICsyLDggQEAKIExJQ0VOU0UgPSAiQlNEIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjJjZGU3ZGE4OWYwYzFmM2U0OWJmOTY4ZDAwZDU1NGYiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZmU3MDI5NTAwNmRiYzhhZmVkZDQzZTVlYmE5OTAzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTg1ODhmMTk4M2NhNDk3ZjFjZjRmZmRlMDFkOTc4YTNlYTAyYjAxYzhhMjZhOGJiYzVjZDJlNjZkODE2OTE3IgorU1JDX1VSSVttZDVzdW1dID0gIjhkYjhiOGU0MGU5MWJjNmRjZTEzM2Q4ZDU3MjdhNzE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmNThjZThiYjgyYzExYzQzNDE2ZGQzZWVjNzcwMWRjYmU4YzU3NmUyZDc2NDlmMWQyYjlkMjFhMmZkOTM4MDgiCiAKIFBZUElfUEFDS0FHRSA9ICJwcm9tcHRfdG9vbGtpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8yLjAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzEuMC4xNS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb21wdC10b29sa2l0XzIuMC40LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYwppbmRleCBiODQ5ODNkLi5iNjE3OTA0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMKQEAgLTcsOCArNywxNCBAQAogCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gIjM5M2E1MzQ4MzIyNGNiMzM4ZGY1YzY0MzY0NmMwMzAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ODc5YTI5NWZkNzIzNGU1MjNiNjIwNjYyMjNiMTI4YzVhOGE4OGY2ODJlM2FmZjYyZmIxMTVlNGEwZDhiZTAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTJkYWVmODBlNzAyNDlhYTFmMDUzNjM2NzBjNmIzZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTQ4OWIzNzZiMGYzNjRiY2M2Zjg5NTE5NzE4YzA1N2ViMTkxZDdhZDZmMWIzOTVmZmQ5M2QxYWE0NTU4NzgxMSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg0NzE1LworIyBDYW4ndCBmaW5kIHJlcXVpcmVkIGZpbGU6IC4uL3NyYy9nb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bworQ0xFQU5CUk9LRU4gPSAiMSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicHJvdG9idWYvKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjYuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuNS4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWZfMy42LjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKaW5kZXggNWQ4ZTYxZi4uNjdhZTExOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKQEAgLTIsOCArMiw4IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBmMDJlOTlmN2YzYzlhN2ZlOGVjZmM1ZDQ0YzJiZTYyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiM2IyOTE4MzNkYmVhNjMxZGI5ZDI3MWFhNjAyYTE2OWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTI0NjdlOTMxMmMyZmExOTE2ODdiODlmZjRiYzJhZDg4NDNiZTRhZjZmYjRkYzk1YTdjYzVmN2Q3YTMyN2IxOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMDBlMDczY2RkNTZjYzdhOWJhOWEwNjA4ODU2OTIwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODZlNWEzNWZlNGMwYWNjMjVmMzQ2NmMzMmU3MTZmMmQ0OThhYWFlN2I3ZWRjMDNlMjMwNWI2ODIyMjZiY2Y2IgogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNC42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNC4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNC42LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzcy5pbmMKaW5kZXggNDNmMmQwOS4uNDljYzVhNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYwpAQCAtNiw4ICs2LDggQEAKIAogU1JDTkFNRSA9ICJwdHlwcm9jZXNzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNiOGZlYmFlMWI4YzUzYjA1NGJkODE4ZDBiYjg2NjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTY0MTkzZjAwNDdhZDYwM2I3MWYyMDIzMzJhYjU1MjdjNWU1MmFhN2M4YjYwOTcwNGZjMjhjMGRjMjBjNDM2NSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNzQwMmQ2OWYzYjUwOTEzZDRkNDgzNTg3YmZmYWQ4ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MjNmMjk5Y2M1YWQ5MjBjNjhmMmJjMGJjOThiNzViOWY4MzhiOTNiNTk5OTQxYTZiNjNkZGJjMjQ3NjM5NGMwIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wdHlwcm9jZXNzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3NfMC42LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jCmluZGV4IGM3ZDY3MjcuLjgxNDQ1MjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5LmluYwpAQCAtMyw3ICszLDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZiYjAzMjBiMDRhMGE1MDNmMTJmNjlmZWE0NzlkZTkiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNzljYTY5YzYzMjA2OWUxYjcxZTExYjE0NjQxY2EyOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYTE4OTQzZTI4MjM1NDE3NzU2MzE2YmZhZGE2Y2Q5NmIyM2NlNjBkZDUzMjY0MjY5MGRjZmRhYmE5ODhhNzZkIgorU1JDX1VSSVttZDVzdW1dID0gIjVjY2QwY2Q1MzczYzU1MTcxY2Y5ZmQ2MWI5ZjE5YTFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2YTMwNDM1ZDA1ODQ3MzA0NmJlODM2ZDNmYzRmMjcxNjdmZDg0YzQ1Yjk5NzA0ZjJmYjU1MDllZjYxZjlhZjEiCiAKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS41LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjUuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5XzEuNi4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYwppbmRleCA5ZmE1NGNmLi44N2RiZDFkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlcy5pbmMKQEAgLTQsMTAgKzQsMTAgQEAKICBkYXRhIHN0cnVjdHVyZXMgKFguNTA5LCBQS0NTIGV0Yy4pLiIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ldGluZ29mL3B5YXNuMS1tb2R1bGVzIgogTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjgwNjA2ZDljMThmMjAwZTAzZTBjMjQ3YWM2MTQ3NWEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ODE1YWMzZjljYTY5MzAwNjM0OTA5NGIzNThhYjMxNTUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZjkzODY5ODU5MGYzMTRmZjliM2Q1YzQ4NzM3ZDg5OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjAwZWE4ZjIwMjJiNjI4N2RjMzc1YjJjNzBmMzFhYjVhZjgzOTg5ZmM2ZmU5ZWFjZDQ5NzZjZTI2Y2Q3Y2NjIgorU1JDX1VSSVttZDVzdW1dID0gIjY1Y2UxZWExMDIxNjc5YmZmZTk2MDY1YmFhYjIzMmRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwY2YzZTE4NDJlN2M2MGZkZTk3Y2IyMmQyNzVlYjZmOTUyNGY1YzUyNTA0ODllMjkyNTI5ZGU4NDE0MTc1NDciCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXNfMC4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXNfMC4yLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzXzAuMi4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCmluZGV4IGYzYzMyZTAuLmFiMzRkMjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCkBAIC0xLDEwICsxLDEwIEBACiBTVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IGltcGxlbWVudGluZyBBU04uMSB0eXBlcy4iCiBIT01FUEFHRSA9ICJodHRwOi8vcHlhc24xLnNvdXJjZWZvcmdlLm5ldC8iCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT0yODA2MDZkOWMxOGYyMDBlMDNlMGMyNDdhYzYxNDc1YSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT04MTVhYzNmOWNhNjkzMDA2MzQ5MDk0YjM1OGFiMzE1NSIKIAotU1JDX1VSSVttZDVzdW1dID0gImNiNTg4M2RkYzZhOWY0MDU2MDA0MjlmMzdjZjA3NTljIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyNThiMGE3MTk5NGY3NzcwNTk5ODM1MjQ5Y2VjZTFjYWVmM2M3MGRlZjg2OGM0OTE1ZTZlNWNhNDliNjdkMTUiCitTUkNfVVJJW21kNXN1bV0gPSAiMGQxODJiNzFlMWY3MmZlMTQ3ZDc5NTdiYzkwYmU3ZjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU4ZjJhM2QxMmZkNzU0YWExMjNlOWZhNzRmYjczNDUzMzMwMDBhMDM1ZjM5MjFkYmRhYTA4NTk3YWE1MzEzNyIKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjFfMC40LjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTEuaW5jCmluZGV4IGU0NDFkYzYuLjE3MjI4NzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExLmluYwpAQCAtMyw1ICszLDUgQEAKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YmViODcxMTdhZjY5ZmQxMGZiZjlmYjE0YzIyYTJlNjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYzY1MWE3NWEyMGRhYmJhYTE4YThiMDIzZmZkNTRjMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYmIwMzZhOGFhZDU5YTE5OWFkNjcyZjk4ODEzZjg1YzY3MjY0MmM2YTY3YjRmZjM4NjhiMWQ2YWJjNWZhZTNlIgorU1JDX1VSSVttZDVzdW1dID0gIjViOTYxMTA0MWU0ZWE2NmIyYjkxOTIzOWUzYmFjZDY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg3ZmYzYWU3NzdkOTMyNjM0OWFmNTI3Mjk3NDU4MTI3MGIyYTA5MDliMjM5MmRjMGNjNTdlYjI4Y2UyM2JjYzMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi4yLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjIuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YmluZDExXzIuMi4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y29kZXN0eWxlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGU0NmI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y29kZXN0eWxlLmluYwpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIlB5dGhvbiBzdHlsZSBndWlkZSBjaGVja2VyIChmb3JtbHkgY2FsbGVkIHBlcDgpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5Y29kZXN0eWxlIgorTElDRU5TRSA9ICJNSVQiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxODMxZGRiYWYzOTg0NzFkYTNjYzg3ZjUwMzdlODIyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODViYmViZDJjOTBkMmY4MzNjMWRiNDY3ZDRkMGU5YTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2JmY2E5OWJkNTk0YTEwZjY3NGQwY2Q5N2EzZDgwMmExZmRlZjYzNWQ0MzYxZTFhMjY1OGRlNDdlZDI2MWUzYSIKKworaW5oZXJpdCBweXBpCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZV8yLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNvZGVzdHlsZV8yLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzczNmU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y29kZXN0eWxlXzIuNC4wLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1weWNvZGVzdHlsZS5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1sYW5nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzEuNi4wLmJiCmluZGV4IDI0NDQ4NTkuLmExNmE4ODAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYWtlc18xLjYuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFrZXNfMS42LjAuYmIKQEAgLTEyLDMgKzEyLDUgQEAKICAgICAke1BZVEhPTl9QTn0tcHJldHR5dGFibGUgXAogICAgICR7UFlUSE9OX1BOfS1jbWQyIFwKICAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS0xLjYuNi8wMDAxLXB0cmFjZS1BYnN0cmFjdC1vdmVyLXVzZXJfcmVnc19zdHJ1Y3QtbmFtZS13aGljaC1kaWYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS0xLjYuNi8wMDAxLXB0cmFjZS1BYnN0cmFjdC1vdmVyLXVzZXJfcmVnc19zdHJ1Y3QtbmFtZS13aGljaC1kaWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDljNDM5NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lLTEuNi42LzAwMDEtcHRyYWNlLUFic3RyYWN0LW92ZXItdXNlcl9yZWdzX3N0cnVjdC1uYW1lLXdoaWNoLWRpZi5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDJlZjEyNGUyMzVhNDdkZDQ3NDI4MTNjZjgwZTExYTg5Y2Y0ZjAyZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXcgSmVmZmVyeSA8YW5kcmV3QGFqLmlkLmF1PgorRGF0ZTogVGh1LCAzIE1heSAyMDE4IDEyOjM1OjMxICswOTMwCitTdWJqZWN0OiBbUEFUQ0hdIHB0cmFjZTogQWJzdHJhY3Qgb3ZlciB1c2VyX3JlZ3Nfc3RydWN0IG5hbWUsIHdoaWNoIGRpZmZlcnMgb24KKyBBUk0zMgorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgSmVmZmVyeSA8YW5kcmV3QGFqLmlkLmF1PgorLS0tCisgc3JjL3B0cmFjZS5jYyB8ICA2ICsrKy0tLQorIHNyYy9wdHJhY2UuaCAgfCAxMCArKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3B0cmFjZS5jYyBiL3NyYy9wdHJhY2UuY2MKK2luZGV4IDQ4NWY1OGU0ZDgyZS4uNjEwZmFiYjNiOGU4IDEwMDY0NAorLS0tIGEvc3JjL3B0cmFjZS5jYworKysrIGIvc3JjL3B0cmFjZS5jYworQEAgLTEyMiw4ICsxMjIsOCBAQCB2b2lkIFB0cmFjZUludGVycnVwdChwaWRfdCBwaWQpIHsKKyAgIERvV2FpdChwaWQpOworIH0KKyAKKy1zdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCBQdHJhY2VHZXRSZWdzKHBpZF90IHBpZCkgeworLSAgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QgcmVnczsKKyt1c2VyX3JlZ3Nfc3RydWN0IFB0cmFjZUdldFJlZ3MocGlkX3QgcGlkKSB7CisrICB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3M7CisgICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTLCBwaWQsIDAsICZyZWdzKSkgeworICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3M7CisgICAgIHNzIDw8ICJGYWlsZWQgdG8gUFRSQUNFX0dFVFJFR1M6ICIgPDwgc3RyZXJyb3IoZXJybm8pOworQEAgLTEzMiw3ICsxMzIsNyBAQCBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCBQdHJhY2VHZXRSZWdzKHBpZF90IHBpZCkgeworICAgcmV0dXJuIHJlZ3M7CisgfQorIAorLXZvaWQgUHRyYWNlU2V0UmVncyhwaWRfdCBwaWQsIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3MpIHsKKyt2b2lkIFB0cmFjZVNldFJlZ3MocGlkX3QgcGlkLCB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3MpIHsKKyAgIGlmIChwdHJhY2UoUFRSQUNFX1NFVFJFR1MsIHBpZCwgMCwgJnJlZ3MpKSB7CisgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzczsKKyAgICAgc3MgPDwgIkZhaWxlZCB0byBQVFJBQ0VfU0VUUkVHUzogIiA8PCBzdHJlcnJvcihlcnJubyk7CitkaWZmIC0tZ2l0IGEvc3JjL3B0cmFjZS5oIGIvc3JjL3B0cmFjZS5oCitpbmRleCA3MDgzYmUxYzRkZmQuLmQ2YWY4YmY5ZjgzYSAxMDA2NDQKKy0tLSBhL3NyYy9wdHJhY2UuaAorKysrIGIvc3JjL3B0cmFjZS5oCitAQCAtMjMsNiArMjMsMTIgQEAKKyAKKyAjaW5jbHVkZSAiLi9jb25maWcuaCIKKyAKKysjaWYgZGVmaW5lZChfX2FybV9fKQorK3R5cGVkZWYgc3RydWN0IHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OworKyNlbHNlCisrdHlwZWRlZiBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0OworKyNlbmRpZgorKworIG5hbWVzcGFjZSBweWZsYW1lIHsKKyAKKyBpbnQgRG9XYWl0KHBpZF90IHBpZCwgaW50IG9wdGlvbnMgPSAwKTsKK0BAIC0zOSwxMCArNDUsMTAgQEAgdm9pZCBQdHJhY2VTZWl6ZShwaWRfdCBwaWQpOworIHZvaWQgUHRyYWNlSW50ZXJydXB0KHBpZF90IHBpZCk7CisgCisgLy8gZ2V0IHJlZ3MgZnJvbSBhIHByb2Nlc3MKKy1zdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCBQdHJhY2VHZXRSZWdzKHBpZF90IHBpZCk7CisrdXNlcl9yZWdzX3N0cnVjdCBQdHJhY2VHZXRSZWdzKHBpZF90IHBpZCk7CisgCisgLy8gc2V0IHJlZ3MgaW4gYSBwcm9jZXNzCistdm9pZCBQdHJhY2VTZXRSZWdzKHBpZF90IHBpZCwgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QgcmVncyk7Cisrdm9pZCBQdHJhY2VTZXRSZWdzKHBpZF90IHBpZCwgdXNlcl9yZWdzX3N0cnVjdCByZWdzKTsKKyAKKyAvLyBwb2tlIGEgbG9uZyB3b3JkIGludG8gYW4gYWRkcmVzcworIHZvaWQgUHRyYWNlUG9rZShwaWRfdCBwaWQsIHVuc2lnbmVkIGxvbmcgYWRkciwgbG9uZyBkYXRhKTsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lLTEuNi42LzAwMDEtc3ltYm9sLUFjY291bnQtZm9yLXByZWxpbmtlZC1zaGFyZWQtb2JqZWN0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lLTEuNi42LzAwMDEtc3ltYm9sLUFjY291bnQtZm9yLXByZWxpbmtlZC1zaGFyZWQtb2JqZWN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWVmYzljCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWUtMS42LjYvMDAwMS1zeW1ib2wtQWNjb3VudC1mb3ItcHJlbGlua2VkLXNoYXJlZC1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsMTM0IEBACitGcm9tIDAwNzk2NWQzNDEzNDk2Nzk2MDc2OTlkMDA1YzRhZjgxMWIyYzQxOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXcgSmVmZmVyeSA8YW5kcmV3QGFqLmlkLmF1PgorRGF0ZTogRnJpLCA0IE1heSAyMDE4IDExOjIzOjUzICswOTMwCitTdWJqZWN0OiBbUEFUQ0hdIHN5bWJvbDogQWNjb3VudCBmb3IgcHJlbGlua2VkIHNoYXJlZCBvYmplY3RzCisKK1NvbWUgcHJvamVjdHMsIHN1Y2ggYXMgdGhvc2UgZGVyaXZlZCBmcm9tIFlvY3RvLCB0ZW5kIHRvIHByZWxpbmsgdGhlaXIKK2JpbmFyaWVzIGFuZCBsaWJyYXJpZXMgdG8gcmVkdWNlIHJ1bnRpbWUgb3ZlcmhlYWQuIEN1cnJlbnRseSB0aGlzIHRyaXBzCit1cCBweWZsYW1lIGluIGl0cyBzeW1ib2wgYWRkcmVzcyBjYWxjdWxhdGlvbnMsIGFuZCBsZWFkcyB0byBwdHJhY2UKK2ZhaWx1cmVzIGR1ZSB0byBzcHVyaW91cyBhZGRyZXNzZXM6CisKKyAgICQgcHlmbGFtZSAtdCBweXRob24gLWMgInByaW50ICdmb28nIgorICAgVW5leHBlY3RlZCBwdHJhY2UoMikgZXhjZXB0aW9uOiBGYWlsZWQgdG8gUFRSQUNFX1BFRUtEQVRBIChwaWQgMTQ4MiwgYWRkciAweDlmOWIxZDcwKTogSW5wdXQvb3V0cHV0IGVycm9yCisgICBVbmV4cGVjdGVkIHB0cmFjZSgyKSBleGNlcHRpb246IEZhaWxlZCB0byBQVFJBQ0VfUEVFS0RBVEEgKHBpZCAxNDgyLCBhZGRyIDB4OWY5YjFkNzApOiBJbnB1dC9vdXRwdXQgZXJyb3IKKyAgIFVuZXhwZWN0ZWQgcHRyYWNlKDIpIGV4Y2VwdGlvbjogRmFpbGVkIHRvIFBUUkFDRV9QRUVLREFUQSAocGlkIDE0ODIsIGFkZHIgMHg5ZjliMWQ3MCk6IElucHV0L291dHB1dCBlcnJvcgorICAgVW5leHBlY3RlZCBwdHJhY2UoMikgZXhjZXB0aW9uOiBGYWlsZWQgdG8gUFRSQUNFX1BFRUtEQVRBIChwaWQgMTQ4MiwgYWRkciAweDlmOWIxZDcwKTogSW5wdXQvb3V0cHV0IGVycm9yCisgICBVbmV4cGVjdGVkIHB0cmFjZSgyKSBleGNlcHRpb246IEZhaWxlZCB0byBQVFJBQ0VfUEVFS0RBVEEgKHBpZCAxNDgyLCBhZGRyIDB4OWY5YjFkNzApOiBJbnB1dC9vdXRwdXQgZXJyb3IKKyAgIC4uLgorCitBZGQgc3VwcG9ydCBmb3IgcmVhZGluZyBhIHByZWxpbmtlZCBiYXNlIHBfdmFkZHIgb3V0IG9mIHRoZSBFTEYgYW5kCithZGp1c3QgdGhlIFB5QWRkcmVzc2VzIHZhbHVlcyBhY2NvcmRpbmdseS4KKworU2lnbmVkLW9mZi1ieTogQW5kcmV3IEplZmZlcnkgPGFuZHJld0Bhai5pZC5hdT4KKy0tLQorIHNyYy9zeW1ib2wuY2MgfCAxNSArKysrKysrKysrKysrKysKKyBzcmMvc3ltYm9sLmggIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zeW1ib2wuY2MgYi9zcmMvc3ltYm9sLmNjCitpbmRleCAxMjUxNzRlZmVlYjUuLjM5YzNlODEzMmRkMSAxMDA2NDQKKy0tLSBhL3NyYy9zeW1ib2wuY2MKKysrKyBiL3NyYy9zeW1ib2wuY2MKK0BAIC0xNjYsNiArMTY2LDE3IEBAIFB5QUJJIEVMRjo6V2Fsa1RhYmxlKGludCBzeW0sIGludCBzdHIsIFB5QWRkcmVzc2VzICphZGRycykgeworICAgcmV0dXJuIGFiaTsKKyB9CisgCisrYWRkcl90IEVMRjo6R2V0QmFzZUFkZHJlc3MoKSB7CisrICBpbnQzMl90IHBobnVtID0gaGRyKCktPmVfcGhudW07CisrICBpbnQzMl90IGk7CisrICBmb3IgKGkgPSAwOyBpIDwgcGhudW0gJiYgcGhkcihpKS0+cF90eXBlICE9IFBUX0xPQUQ7IGkrKykgeworKyAgfQorKyAgaWYgKGkgPT0gcGhudW0pIHsKKysgICAgdGhyb3cgRmF0YWxFeGNlcHRpb24oIkZhaWxlZCB0byBmaW5kIFBUX0xPQUQgZW50cnkgaW4gcHJvZ3JhbSBoZWFkZXJzIik7CisrICB9CisrICByZXR1cm4gcGhkcihpKS0+cF92YWRkcjsKKyt9CisrCisgUHlBZGRyZXNzZXMgRUxGOjpHZXRBZGRyZXNzZXMoUHlBQkkgKmFiaSkgeworICAgUHlBZGRyZXNzZXMgYWRkcnM7CisgICBQeUFCSSBkZXRlY3RlZF9hYmkgPSBXYWxrVGFibGUoZHluc3ltXywgZHluc3RyXywgJmFkZHJzKTsKK0BAIC0xNzYsNiArMTg3LDEwIEBAIFB5QWRkcmVzc2VzIEVMRjo6R2V0QWRkcmVzc2VzKFB5QUJJICphYmkpIHsKKyAgIGlmIChhYmkgIT0gbnVsbHB0cikgeworICAgICAqYWJpID0gZGV0ZWN0ZWRfYWJpOworICAgfQorKyAgLy8gSGFuZGxlIHByZWxpbmtlZCBzaGFyZWQgb2JqZWN0cworKyAgaWYgKGhkcigpLT5lX3R5cGUgPT0gRVRfRFlOKSB7CisrICAgIHJldHVybiBhZGRycyAtIEdldEJhc2VBZGRyZXNzKCk7CisrICB9CisgICByZXR1cm4gYWRkcnM7CisgfQorIH0gIC8vIG5hbWVzcGFjZSBweWZsYW1lCitkaWZmIC0tZ2l0IGEvc3JjL3N5bWJvbC5oIGIvc3JjL3N5bWJvbC5oCitpbmRleCAxMjQ4NTNiY2MxYzEuLmJiOTJiOWEyNjA0YiAxMDA2NDQKKy0tLSBhL3NyYy9zeW1ib2wuaAorKysrIGIvc3JjL3N5bWJvbC5oCitAQCAtMjgsMTUgKzI4LDE5IEBACisgCisgI2lmIFVTRV9FTEY2NAorICNkZWZpbmUgZWhkcl90IEVsZjY0X0VoZHIKKysjZGVmaW5lIHBoZHJfdCBFbGY2NF9QaGRyCisgI2RlZmluZSBzaGRyX3QgRWxmNjRfU2hkcgorICNkZWZpbmUgZHluX3QgRWxmNjRfRHluCisgI2RlZmluZSBzeW1fdCBFbGY2NF9TeW0KKysjZGVmaW5lIGFkZHJfdCBFbGY2NF9BZGRyCisgI2RlZmluZSBBUkNIX0VMRkNMQVNTIEVMRkNMQVNTNjQKKyAjZWxzZQorICNkZWZpbmUgZWhkcl90IEVsZjMyX0VoZHIKKysjZGVmaW5lIHBoZHJfdCBFbGYzMl9QaGRyCisgI2RlZmluZSBzaGRyX3QgRWxmMzJfU2hkcgorICNkZWZpbmUgZHluX3QgRWxmMzJfRHluCisgI2RlZmluZSBzeW1fdCBFbGYzMl9TeW0KKysjZGVmaW5lIGFkZHJfdCBFbGYzMl9BZGRyCisgI2RlZmluZSBBUkNIX0VMRkNMQVNTIEVMRkNMQVNTMzIKKyAjZW5kaWYKKyAKK0BAIC02Nyw4ICs3MSwxOCBAQCBzdHJ1Y3QgUHlBZGRyZXNzZXMgeworICAgICAgICAgaW50ZXJwX2hlYWRfaGludCgwKSwKKyAgICAgICAgIHBpZShmYWxzZSkge30KKyAKKysgIFB5QWRkcmVzc2VzIG9wZXJhdG9yLShjb25zdCB1bnNpZ25lZCBsb25nIGJhc2UpIGNvbnN0IHsKKysgICAgUHlBZGRyZXNzZXMgcmVzKCp0aGlzKTsKKysgICAgcmVzLnRzdGF0ZV9hZGRyID0gdGhpcy0+dHN0YXRlX2FkZHIgPT0gMCA/IDAgOiB0aGlzLT50c3RhdGVfYWRkciAtIGJhc2U7CisrICAgIHJlcy5pbnRlcnBfaGVhZF9hZGRyID0KKysgICAgICAgIHRoaXMtPmludGVycF9oZWFkX2FkZHIgPT0gMCA/IDAgOiB0aGlzLT5pbnRlcnBfaGVhZF9hZGRyIC0gYmFzZTsKKysgICAgcmVzLmludGVycF9oZWFkX2ZuX2FkZHIgPQorKyAgICAgICAgdGhpcy0+aW50ZXJwX2hlYWRfZm5fYWRkciA9PSAwID8gMCA6IHRoaXMtPmludGVycF9oZWFkX2ZuX2FkZHIgLSBiYXNlOworKyAgICByZXR1cm4gcmVzOworKyAgfQorKworICAgUHlBZGRyZXNzZXMgb3BlcmF0b3IrKGNvbnN0IHVuc2lnbmVkIGxvbmcgYmFzZSkgY29uc3QgeworLSAgICBQeUFkZHJlc3NlcyByZXM7CisrICAgIFB5QWRkcmVzc2VzIHJlcygqdGhpcyk7CisgICAgIHJlcy50c3RhdGVfYWRkciA9IHRoaXMtPnRzdGF0ZV9hZGRyID09IDAgPyAwIDogdGhpcy0+dHN0YXRlX2FkZHIgKyBiYXNlOworICAgICByZXMuaW50ZXJwX2hlYWRfYWRkciA9CisgICAgICAgICB0aGlzLT5pbnRlcnBfaGVhZF9hZGRyID09IDAgPyAwIDogdGhpcy0+aW50ZXJwX2hlYWRfYWRkciArIGJhc2U7CitAQCAtMTEzLDYgKzEyNyw5IEBAIGNsYXNzIEVMRiB7CisgICAvLyBBQkkuCisgICBQeUFkZHJlc3NlcyBHZXRBZGRyZXNzZXMoUHlBQkkgKmFiaSk7CisgCisrICAvLyBFeHRyYWN0IHRoZSBiYXNlIGxvYWQgYWRkcmVzcyBmcm9tIHRoZSBQcm9ncmFtIEhlYWRlciB0YWJsZQorKyAgYWRkcl90IEdldEJhc2VBZGRyZXNzKCk7CisrCisgIHByaXZhdGU6CisgICB2b2lkICphZGRyXzsKKyAgIHNpemVfdCBsZW5ndGhfOworQEAgLTEyMiw2ICsxMzksMTYgQEAgY2xhc3MgRUxGIHsKKyAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZWhkcl90ICo+KGFkZHJfKTsKKyAgIH0KKyAKKysgIGlubGluZSBjb25zdCBwaGRyX3QgKnBoZHIoaW50IGlkeCkgY29uc3QgeworKyAgICBpZiAoaWR4IDwgMCkgeworKyAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzczsKKysgICAgICBzcyA8PCAiSWxsZWdhbCBwaGRyIGluZGV4OiAiIDw8IGlkeDsKKysgICAgICB0aHJvdyBGYXRhbEV4Y2VwdGlvbihzcy5zdHIoKSk7CisrICAgIH0KKysgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgcGhkcl90ICo+KHAoKSArIGhkcigpLT5lX3Bob2ZmICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCAqIGhkcigpLT5lX3BoZW50c2l6ZSk7CisrICB9CisrCisgICBpbmxpbmUgY29uc3Qgc2hkcl90ICpzaGRyKGludCBpZHgpIGNvbnN0IHsKKyAgICAgaWYgKGlkeCA8IDApIHsKKyAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gc3M7CistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQwYWFiNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lLmluYwpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlB5ZmxhbWU6IEEgUHRyYWNpbmcgUHJvZmlsZXIgRm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS91YmVyL3B5ZmxhbWUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCitERVBFTkRTID0gInB5dGhvbiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ViZXIvcHlmbGFtZS5naXQ7cHJvdG9jb2w9aHR0cHMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKKworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaF9jbGFzcy10YXJnZXQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9hYXJjaDY0X2NsYXNzLXRhcmdldCA9ICJudWxsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWVfMS42LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFtZV8xLjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGVkYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWVfMS42LjYuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIHB5dGhvbi1weWZsYW1lLmluYworCisjIHYxLjYuNgorU1JDUkVWID0gIjhhOWQ4YzJhY2MzYjNiYjAyNzQ3NWI3MzgxMzRmMWU2ZmZmMTRlNmMiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1wdHJhY2UtQWJzdHJhY3Qtb3Zlci11c2VyX3JlZ3Nfc3RydWN0LW5hbWUtd2hpY2gtZGlmLnBhdGNoIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc3ltYm9sLUFjY291bnQtZm9yLXByZWxpbmtlZC1zaGFyZWQtb2JqZWN0cy5wYXRjaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYwppbmRleCA2MjBiMjQ0Li4yZTM5OGZjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2UuaW5jCkBAIC01LDcgKzUsNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGZlODY5ZWU5ODdhMzQwMTk4ZmIwZDU0YzU1YzQ3ZjEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwNmMzYzcxZmU1MWRmNzQwZGFlNmE4OGExM2FmYjVlMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YmI3OTEwMGNiY2Y3MzQ0YTFjY2FkZGM1NzhjZDY0NTVkYTQ3ZDhlYWM2ZWIxYmY5MDNlYzMyZTA0M2FmOTI0IgorU1JDX1VSSVttZDVzdW1dID0gImIwNjZhYTk4NDY1Njc0MjczODEyN2M5Yzc1NDM2YWI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyMzFlNTczNWQzMjljNWIyZDRmYzg4NTRmMDY5ZmRhYTU0MzZkM2VmOTFlZDY0ZWU0OWU0MWUzZjVlOGEzZjUiCiAKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aWZhY2VfMC4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZV8wLjAuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlXzAuMC41LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZV8wLjAuMTEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3QuaW5jCmluZGV4IDlmOTI4MmUuLjAwYzM4ZTMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0LmluYwpAQCAtNiw4ICs2LDggQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Njg2MjY3MDVhN2I1MTNjYThkNWY0NGEzZTIwMGVkMGMiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmN2RiZTBkNjJmMjA4N2E3NjA1OTQ2YWVlY2EwMjU0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWNiYTU3ODZmZTNiZjFhMGFlODY3Mzg3NGUyOWY5YWM0OTc4NjA5NTVjNTAxMjg5YzYzYjE1ZDNkYWFlNjNhIgorU1JDX1VSSVttZDVzdW1dID0gIjI3MzFjNmI2NmI2N2I5NWQxOTQ0ZjA3MmY1ZmEzNWE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlZTQxM2IzNTdkNTNmZDNmYjQ0NzA0NTc3YWZhYzg4ZTcyZTg3ODcxNjExNjI3MGQ3MjI3MjNkNjViNDIxNzYiCiAKIFBZUElfUEFDS0FHRSA9ICJQeUpXVCIKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0XzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0XzEuNi40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3RfMS42LjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dF8xLjYuNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYwppbmRleCA3NzY1Y2M1Li40NjhhODAxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYwpAQCAtMyw4ICszLDggQEAKIExJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTM2MzljZjU3ODBmNzFiMTI1ZDNlOWQxZGMxMjdjMjAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNGZlZTJhYmIyZDc0NjgwMTBiN2ZlOWViYzY4YjBjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDRmYmQ4ODYyZGZkZTI3ZDc2N2MwOTNkZTg3ZmVjNDJmYzYzYzcwZDgzOTM2NDNkMWEzYjRmNzY1YWFlNzhmIgorU1JDX1VSSVttZDVzdW1dID0gIjZkNTQ5YjM2Y2JmYThjMWEzMzIzYzVkNmUyOTk3ODllIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0ZWQyMDAwY2JlMWEzMTRmMWY4OGZkOGE4ZWJhNGFkMDU5NzRiMzUxYjk2ZjEyMzVjNmU1MzIxNThhMzlmZTAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwXzIuNC44OS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjkzLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwXzIuNC44OS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcF8yLjQuOTMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvLmluYwppbmRleCBiYWYzZGQ1Li5iNTI3N2YxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nby5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCkBAIC04LDggKzgsOCBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDcyYzg3ZmI5M2NlYTA3NTk1MjliZWZhZmVmY2U1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmN2ViY2I4NDY5NjJlZTQwMzc0ZGIyZDkwMTRhODliZWE5Yzk4M2FlNjNjMTg3Nzk1N2MzYTBhNzU2OTc0Nzk2IgorU1JDX1VSSVttZDVzdW1dID0gIjc0NDljODFhNmMzMmMzYzhjYjliZWJlYmM4NDhmZGVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxNGZiNmM0MDU4NzcyYTBkNzRkODI4NzRkM2I4OWQ3MjY0ZDg5YjRlZDdmYTA0MTNlYTBlZjgxMTJiMjY4YjkiCiAKIFBBQ0tBR0VTID0rICIke1BZVEhPTl9QTn0tYnNvbiIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjcuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ29fMy42LjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuNy4xLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCmluZGV4IDc3MjJlOGUuLjUxNmU3OTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCkBAIC01LDggKzUsOCBAQAogCiBERVBFTkRTICs9ICJvcGVuc3NsICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkOWM1MTM0ZGI4YmYzMTgzNTczYjc4NDA5NTRjYWM5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzEwY2ZiYTQ2YTUyYzBiMDk1MDExODk4MWQ2MWU3MmMxZTViMWFhYzQ1MWNhMWJjNzdkZTFhNjc5NDU2NzczIgorU1JDX1VSSVttZDVzdW1dID0gImM5MmU5Yzg1YjUyMGI3ZTE1M2ZlZjBmN2YzYzVkZGE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY0ODhmMTQyM2IwMGY3M2I3YWQ1MTY3ODg1MzEyYmIwY2U0MTBkMzMxMmViMjEyMzkzNzk1YjUzYzhjYWE1ODAiCiAKIFBZUElfUEFDS0FHRSA9ICJweU9wZW5TU0wiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTcuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5b3BlbnNzbF8xOC4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTcuNS4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE4LjAuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYwppbmRleCBlMDVkZTY3Li40ZWU0N2VlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYwpAQCAtMSwxMiArMSwxNCBAQAogREVTQ1JJUFRJT04gPSAiQSBjcm9zcy1wbGF0Zm9ybSBjbGlwYm9hcmQgbW9kdWxlIGZvciBQeXRob24uIChvbmx5IGhhbmRsZXMgcGxhaW4gdGV4dCBmb3Igbm93KSIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTFlZDkyMTE1YzhmOTZiMTllYzM0ZWQwOWRmNTg2ZTUxIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTRhMzEyOWEyYzFiOGJkYzBlMjg5NWExZWMwZTJkYWUyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZDJmNmEzMTI5Y2Q2ZjI1MThiNTJiYjBiOGRlZWVkYTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2U4Mjk0MzNhOWFmNjQwZTA4ZWU4OWIyMGY3YzYyMTMyNzE0YmNjNWQ3N2RmMTE0MDQ0ZDBmY2NiOGMzYjNiOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNjgwNjA3OTc0Zjk5ZDZlNDQxMWIxMDIzNThiMTg4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzQ5NmYwYTFmMzYzYTVlY2ZjNGNkYTVlYmE2YTJhM2Q1MDU2ZmU2YzdmZmI5YTk5ZmJiMWM1YTNjN2RlYTA1IgogCiBpbmhlcml0IHB5cGkKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmNsaXBfMS42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNi4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwXzEuNi4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyLmluYwppbmRleCA5ZWM5ODY2Li5lZDE5ODFlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkdQTC52MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5BcGFjaGUudjI7bWQ1PTM0MjgxZTMxMjE2NWY4NDNhMmI3ZDFmMTE0ZmU2NWNlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOWMyNTE1NDNjNDI4MmEyZjhiMWE4ZDZhYThhZmM2ODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FmYWQyOGVlMGEwZjNlN2MzNGFkYWE5Zjk1M2QwMDU2MGVkOTkxMDIwM2U5M2YxMDc4MzNiNmU4ZDE1MTE3MSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjZmOTUxZTk0MzU2YWU5ZDIyNGY0MTdkYzZlYmVkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MmJmNzQ0OTVkOTVhMDE5NmE3NGRkMTcxMzU3ZjY2MDE3NWFiYTJiZmMyM2Y5YjVmNjNlMzgzMGNjYmVmOWFjIgogCiBGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHlyb3V0ZTI6IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC40LjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC40LjIxLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTJfMC41LjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5ODY3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jCkBAIC0wLDAgKzEsMTAgQEAKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGx1Z2luIGRvZXMgbm90IHByb3ZpZGUgYW55IGhlbHBlcnMgdG8gcHl0ZXN0LCBpdCBkb2VzLCBob3dldmVyLCBwcm92aWRlIGEgaGVscGVycyBuYW1lc3BhY2UgaW4gcHl0ZXN0IHdoaWNoIGVuYWJsZXMgeW91IHRvIHJlZ2lzdGVyIGhlbHBlciBmdW5jdGlvbnMgaW4geW91ciBjb25mdGVzdC5weSB0byBiZSB1c2VkIHdpdGhpbiB5b3VyIHRlc3RzIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGVtLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYWx0c3RhY2svcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NzFmYWM0ZGZlZWU5OWMzOWM1MWY2MTdlOTQ4NjIzN2MiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MGZlM2U1MTVmNjQwYjE0NTk3MDliNTM5ZjZiODU3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGJkYjAxN2MwZjcyNzE2OTljMDg4NTBiNmIxMmUxY2U5ZTUyOTEzY2JkNDQ2MWI1ZmViZDIxMDgyYTI5MTEzIgorCitpbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2VfMjAxNi43LjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE2LjcuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI2ZWU4NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2VfMjAxNi43LjEwLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBweXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlLmluYworCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uLXB5dGVzdCBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jCmluZGV4IDc1NDY3NDMuLjNiMDU3YjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKQEAgLTIsOCArMiw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzM2YzOGJiZjQ3ZDQ4YzcwZmUwZDQwZTVmNzc0OThlIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOGY4MzYzYTUyYmJhYmM0Y2VkZDVlMjM5YmViMmJhMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY3YzNhM2NmNWFlYWQxM2Y1NGJhYWEwMWNlYjQ5ZTVhZTkyYWJhNWQzZmYxOTI4ZTgxZTE4OWM0MGJjNjcwMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YjY5NmIwZjM1NzY3ZjA2OTRmMTgzZDBhMTg1NTMwMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjNmMTE3YmUzOTkxOWYwMGRkOTFiZmZlYjRmMTVlMDMxZWM3OTc1MDFiNzE3YTI0NWUzNzdhZWUwZjU3N2JlIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXJfNC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl8zLjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzQuMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2ZjZkNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMKQEAgLTAsMCArMSwxMCBAQAorREVTQ1JJUFRJT04gPSAiQWRkcyBzdXBwb3J0IGZvciBhIHByZWRpY3RhYmxlIGFuZCByZXBlYXRhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhbHRzdGFjay9weXRlc3QtdGVtcGRpciIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTg3NTFhOWNmNGE3MGJlNGYwMjY5N2E5Yjg5ZTY4NmNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjg3ZjI1ODNmNWY4YWFjYTcyMDNkNTdhZGEzOTQ4YjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjVmZjgxNTk2NmVhNmRmYzA3Y2ExYjQzNzQ3Yzk4ODhhNmQ4ODM5NzExNzBlNjdiMTYyOTBmOWY1MGQ0MzRlYSIKKworaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXRlbXBkaXJfMjAxNi44LjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyXzIwMTYuOC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTliODNlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyXzIwMTYuOC4yMC5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYworCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uLXB5dGVzdCBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHouaW5jCmluZGV4IDUxOTQ4N2YuLmFlZGZmZTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ei5pbmMKQEAgLTUsOCArNSw4IEBACiAKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiZjA1NDQzNzkyMGM4OTVkZDE0YTQ1MDlmYWJhZmUwMjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzA2NDI1MzAyZjJjZjY2OGYxYmJhN2EwYTAzZjNjMWQzNGQ0ZWJlZWYyYzcyMDAzZGEzMDhiMzk0N2M3Zjc0OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NTQwOWNiZmEzOTI3YmRkMmYzZWU5MTRkZDViMTA2MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmI5ZWYxZGUxNzI2MDMzMDRkOWQyODE5YWY2ZjVlY2U3NmYyZTg1ZWMxMDY5MmE1MjRkZDg3NmU3MmJmMjc3IgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxOC41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0el8yMDE4LjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6XzIwMTguNS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYwppbmRleCBjYjkwNmM5Li42ODNhNzVjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYwpAQCAtMTUsNCArMTUsNSBAQAogICAgICR7UFlUSE9OX1BOfS1taXNjIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICBsaWJ1ZGV2IFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbC5pbmMKaW5kZXggM2ZlZjBjYS4uYWZjZTU0MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbC5pbmMKQEAgLTIsMTQgKzIsMTQgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl5YW1sLm9yZyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02MDE1ZjA4ODc1OWIxMGUwYmMyYmY2NDg5OGQ0YWUxNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU1OTE3MDFkMzI1OTBmOWZhOTRmM2JmZWU4MjBiNjM0IgogREVQRU5EUyA9ICJsaWJ5YW1sICR7UFlUSE9OX1BOfS1jeXRob24tbmF0aXZlICR7UFlUSE9OX1BOfSIKIAogUFlQSV9QQUNLQUdFID0gIlB5WUFNTCIKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMxMjk3NjFiNjYxZDE4MWViZjdmZjRlYjJkNzk5NTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkyNzY2YzYzMDMyMDdhMjBlZmM0NDU1ODc3NzgzMjJkN2Y3M2IxNjFiZDk5NGYyMjdhZGFhMzQxYmEyMTJhYiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzhiOTY2MzZkNjhhYzU4MWMwZTJmMzgxNThjMjI0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZWYzMDkyMTQ1ZTliNzBlM2RkZDJjN2FkNTliZGQwMjUyYTk0ZGZlMzk0OTcyMTYzM2U0MTM0NGRlMDBhNmJmIgogCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sXzMuMTMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfMy4xMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF8zLjEzLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDQ3YzJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xLmluYwpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIlB5em1xIHByb3ZpZGVzIFplcm8gbWVzc2FnZSBxdWV1ZSBhY2Nlc3MgZm9yIHRoZSBQeXRob24gbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vemVyb21xLm9yZy9iaW5kaW5nczpweXRob24iCitMSUNFTlNFID0gIkJTRCAmIExHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTExYzY1NjgwZjYzN2MzZGY3ZjU4YmJjOGQxMzNlOTZlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0xMmM1OTJmYTBiY2ZmZjNmYjA5NzdiMDY2ZTljYjY5ZSIKK0RFUEVORFMgPSAiemVyb21xIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHl6bXE6IgorCitTUkNfVVJJICs9ICJmaWxlOi8vY2x1Yi1ycGF0aC1vdXQucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiYWVjZGZjMzI4MTkzZmJkODFmNmRjMjMyMjgzMTk5NDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE5OWY3NTNhMjMwZTI2YWVjNTIzOGIwNTE4YjAzNjc4MDcwOGE0Yzg4N2Q0OTQ0NTE5NjgxYTkyMGI5ZGVlNCIKKworaW5oZXJpdCBweXBpIHBrZ2NvbmZpZworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyIKKworRklMRVNfJHtQTn0tZGJnID0rICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96bXEvYmFja2VuZC9jeXRob24vLmRlYnVnIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZWNobyBbZ2xvYmFsXSA+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyB6bXFfcHJlZml4ID0gJHtTVEFHSU5HX0RJUl9IT1NUfSA+PiAke1N9L3NldHVwLmNmZworICAgIGVjaG8gaGF2ZV9zeXNfdW5faCA9IFRydWUgPj4gJHtTfS9zZXR1cC5jZmcKKyAgICBlY2hvIHNraXBfY2hlY2tfem1xID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZworICAgIGVjaG8gbGliem1xX2V4dGVuc2lvbiA9IEZhbHNlID4+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyBub19saWJ6bXFfZXh0ZW5zaW9uID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xL2NsdWItcnBhdGgtb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xL2NsdWItcnBhdGgtb3V0LnBhdGNoCmluZGV4IDJkYzNiNzMuLjkzNmYxNjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXptcS9jbHViLXJwYXRoLW91dC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXEvY2x1Yi1ycGF0aC1vdXQucGF0Y2gKQEAgLTEsMjYgKzEsMTMgQEAKIGRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA2MmRmNDQ1Li4xZmRiZGViIDEwMDc1NQoraW5kZXggZDI0M2VhYS4uOTgwOTliYyAxMDA3NTUKIC0tLSBhL3NldHVwLnB5CiArKysgYi9zZXR1cC5weQotQEAgLTIxMywxMiArMjEzLDYgQEAgZGVmIHNldHRpbmdzX2Zyb21fcHJlZml4KHByZWZpeD1Ob25lLCBidW5kbGVfbGliem1xX2R5bGliPUZhbHNlKToKLSAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAjIHVudXNlZCBycGF0aCBhcmdzIGZvciBPUyBYOgotICAgICAgICAgICAgICAgICAjIHNldHRpbmdzWydleHRyYV9saW5rX2FyZ3MnXSA9IFsnLVdsLC1ycGF0aCcsJy1XbCwkT1JJR0lOLy4uJ10KLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICBzZXR0aW5nc1sncnVudGltZV9saWJyYXJ5X2RpcnMnXSArPSBbJyRPUklHSU4vLi4nXQotLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6Ci0tICAgICAgICAgICAgc2V0dGluZ3NbJ3J1bnRpbWVfbGlicmFyeV9kaXJzJ10gKz0gWwotLSAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoeCkgZm9yIHggaW4gc2V0dGluZ3NbJ2xpYnJhcnlfZGlycyddCi0tICAgICAgICAgICAgXQotICAgICAKLSAgICAgcmV0dXJuIHNldHRpbmdzCitAQCAtMTkyLDggKzE5Miw2IEBAIGRlZiBfYWRkX3JwYXRoKHNldHRpbmdzLCBwYXRoKToKKyAgICAgIiIiCisgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgIHNldHRpbmdzWydleHRyYV9saW5rX2FyZ3MnXS5leHRlbmQoWyctV2wsLXJwYXRoJywnLVdsLCVzJyAlIHBhdGhdKQorLSAgICBlbHNlOgorLSAgICAgICAgc2V0dGluZ3NbJ3J1bnRpbWVfbGlicmFyeV9kaXJzJ10uYXBwZW5kKHBhdGgpCiAgCi1AQCAtNTkyLDggKzU4Niw2IEBAIGNsYXNzIENvbmZpZ3VyZShidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICMgdW51c2VkIHJwYXRoIGFyZ3MgZm9yIE9TIFg6Ci0gICAgICAgICAgICAgICAgICMgc2V0dGluZ3NbJ2V4dHJhX2xpbmtfYXJncyddID0gWyctV2wsLXJwYXRoJywnLVdsLCRPUklHSU4vLi4vem1xJ10KLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICBzZXR0aW5nc1sncnVudGltZV9saWJyYXJ5X2RpcnMnXSA9IFsgb3MucGF0aC5hYnNwYXRoKHBqb2luKCcuJywgJ3ptcScpKSBdCi0gICAgICAgICAKLSAgICAgICAgIGxpbmUoKQotICAgICAgICAgaW5mbygiQ29uZmlndXJlOiBBdXRvZGV0ZWN0aW5nIFpNUSBzZXR0aW5ncy4uLiIpCisgZGVmIHNldHRpbmdzX2Zyb21fcHJlZml4KHByZWZpeD1Ob25lLCBidW5kbGVfbGliem1xX2R5bGliPUZhbHNlKToKKyAgICAgIiIibG9hZCBhcHByb3ByaWF0ZSBsaWJyYXJ5L2luY2x1ZGUgc2V0dGluZ3MgZnJvbSBaTVEgcHJlZml4IiIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTQuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xXzE0LjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjViYWY4Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTQuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXptcSBwcm92aWRlcyBaZXJvIG1lc3NhZ2UgcXVldWUgYWNjZXNzIGZvciB0aGUgUHl0aG9uIGxhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3plcm9tcS5vcmcvYmluZGluZ3M6cHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9MTFjNjU2ODBmNjM3YzNkZjdmNThiYmM4ZDEzM2U5NmUiCi1ERVBFTkRTID0gInplcm9tcSIKLQotU1JDX1VSSSA9ICJmaWxlOi8vY2x1Yi1ycGF0aC1vdXQucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiODdlM2FiYjMzYWY1Nzk0ZGI1YWU4NWM2NjdiYmYzMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc5OTRmODAzNjA0ODhlNzE1M2U2NGU1OTU5ZGM1NDcxNTMxZDE2NDhlM2E0YmZmMTRhNzE0ZDA3NGEzOGNjMiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgcGtnY29uZmlnCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tbXVsdGlwcm9jZXNzaW5nIgotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3ptcS9iYWNrZW5kL2N5dGhvbi8uZGVidWciCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBlY2hvIFtnbG9iYWxdID4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIHptcV9wcmVmaXggPSAke1NUQUdJTkdfRElSX0hPU1R9ID4+ICR7U30vc2V0dXAuY2ZnCi0gICAgZWNobyBoYXZlX3N5c191bl9oID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZwotICAgIGVjaG8gc2tpcF9jaGVja196bXEgPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCi0gICAgZWNobyBsaWJ6bXFfZXh0ZW5zaW9uID0gRmFsc2UgPj4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIG5vX2xpYnptcV9leHRlbnNpb24gPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTcuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xXzE3LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjkwMTA2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xXzE3LjEuMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLXB5em1xLmluYworaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYwppbmRleCA1ZDZkY2E1Li4zMDFjMmY4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy5pbmMKQEAgLTEsMTAgKzEsMTYgQEAKIERFU0NSSVBUSU9OID0gIlB5dGhvbiBIVFRQIGZvciBIdW1hbnMuIgogSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NzlkNmEyM2IxNDNlMTNlYTBlNWUzYWE4MTI0ODgyMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJmYmVhZmI4NWEyY2VlMjYxNTEwZDY1ZDVlYzE5MTU2IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDgxNDEyYjJlZjc5YmRjNDgyMjk4OTFhZjEzZjRkODIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM0NDNlNzMyNGJhNWI4NTA3MGM0YTgxOGFkZTI4YmZhYmVkZjE2ZWExMDIwNmRhMTEzMmVkYWE2ZGRhMjM3ZSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1yZXF1ZXN0czoiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVN0cmlwLUF1dGhvcml6YXRpb24taGVhZGVyLXdoZW5ldmVyLXJvb3QtVVJMLWNoYW5nZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItUmV3b3JrLWF1dGhvcml6YXRpb24tc3RyaXBwaW5nLWxvZ2ljLWFzLWRpc2N1c3NlZC5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YzFhMzFhZmVjOWQ2MTRlMmU3MWE5MWVlNmNhMjg3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYzIyZDgyNmEzNmVkNzJhNzM1OGZmM2ZlNTZjYmQ0YmE2OWRkN2E2NzE4ZmZkNDUwZmYwZTlkZjdhNDdjZTZhIgogCiBpbmhlcml0IHB5cGkKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLzAwMDEtU3RyaXAtQXV0aG9yaXphdGlvbi1oZWFkZXItd2hlbmV2ZXItcm9vdC1VUkwtY2hhbmdlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy8wMDAxLVN0cmlwLUF1dGhvcml6YXRpb24taGVhZGVyLXdoZW5ldmVyLXJvb3QtVVJMLWNoYW5nZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlZjVmZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy8wMDAxLVN0cmlwLUF1dGhvcml6YXRpb24taGVhZGVyLXdoZW5ldmVyLXJvb3QtVVJMLWNoYW5nZXMucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorRnJvbSBmYjBkMzkxMTM4ZGY0OGU5M2M0NGEyMDg3ZWE3OTZjY2E1ZTIyOWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1Y2UgTWVycnkgPGJtZXJyeUBza2EuYWMuemE+CitEYXRlOiBUaHUsIDI4IEp1biAyMDE4IDE2OjM4OjQyICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBTdHJpcCBBdXRob3JpemF0aW9uIGhlYWRlciB3aGVuZXZlciByb290IFVSTCBjaGFuZ2VzCisKK1ByZXZpb3VzbHkgdGhlIGhlYWRlciB3YXMgc3RyaXBwZWQgb25seSBpZiB0aGUgaG9zdG5hbWUgY2hhbmdlZCwgYnV0IGluCithbiBodHRwcyAtPiBodHRwIHJlZGlyZWN0IHRoYXQgY2FuIGxlYWsgdGhlIGNyZWRlbnRpYWxzIG9uIHRoZSB3aXJlCisoIzQ3MTYpLiBCYXNlZCBvbiB3aXRoIFJGQyA3MjM1IHNlY3Rpb24gMi4yLCB0aGUgaGVhZGVyIGlzIG5vdyBzdHJpcHBlZAoraWYgdGhlICJjYW5vbmljYWwgcm9vdCBVUkwiIChzY2hlbWUrYXV0aG9yaXR5KSBoYXMgY2hhbmdlZCwgYnkgY2hlY2tpbmcKK3NjaGVtZSwgaG9zdG5hbWUgYW5kIHBvcnQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworRml4IENWRS0yMDE4LTE4MDc0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHJlcXVlc3RzL3Nlc3Npb25zLnB5ICAgfCAgNCArKystCisgdGVzdHMvdGVzdF9yZXF1ZXN0cy5weSB8IDEyICsrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JlcXVlc3RzL3Nlc3Npb25zLnB5IGIvcmVxdWVzdHMvc2Vzc2lvbnMucHkKK2luZGV4IGJhMTM1MjYuLjI5NjlkODMgMTAwNjQ0CistLS0gYS9yZXF1ZXN0cy9zZXNzaW9ucy5weQorKysrIGIvcmVxdWVzdHMvc2Vzc2lvbnMucHkKK0BAIC0yNDIsNyArMjQyLDkgQEAgY2xhc3MgU2Vzc2lvblJlZGlyZWN0TWl4aW4ob2JqZWN0KToKKyAgICAgICAgICAgICBvcmlnaW5hbF9wYXJzZWQgPSB1cmxwYXJzZShyZXNwb25zZS5yZXF1ZXN0LnVybCkKKyAgICAgICAgICAgICByZWRpcmVjdF9wYXJzZWQgPSB1cmxwYXJzZSh1cmwpCisgCistICAgICAgICAgICAgaWYgKG9yaWdpbmFsX3BhcnNlZC5ob3N0bmFtZSAhPSByZWRpcmVjdF9wYXJzZWQuaG9zdG5hbWUpOgorKyAgICAgICAgICAgIGlmIChvcmlnaW5hbF9wYXJzZWQuaG9zdG5hbWUgIT0gcmVkaXJlY3RfcGFyc2VkLmhvc3RuYW1lCisrICAgICAgICAgICAgICAgICAgICBvciBvcmlnaW5hbF9wYXJzZWQucG9ydCAhPSByZWRpcmVjdF9wYXJzZWQucG9ydAorKyAgICAgICAgICAgICAgICAgICAgb3Igb3JpZ2luYWxfcGFyc2VkLnNjaGVtZSAhPSByZWRpcmVjdF9wYXJzZWQuc2NoZW1lKToKKyAgICAgICAgICAgICAgICAgZGVsIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXQorIAorICAgICAgICAgIyAubmV0cmMgbWlnaHQgaGF2ZSBtb3JlIGF1dGggZm9yIHVzIG9uIG91ciBuZXcgaG9zdC4KK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X3JlcXVlc3RzLnB5IGIvdGVzdHMvdGVzdF9yZXF1ZXN0cy5weQoraW5kZXggZmNkZGIxZC4uZTBlODAxYSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RfcmVxdWVzdHMucHkKKysrKyBiL3Rlc3RzL3Rlc3RfcmVxdWVzdHMucHkKK0BAIC0xNTc1LDcgKzE1NzUsMTcgQEAgY2xhc3MgVGVzdFJlcXVlc3RzOgorICAgICAgICAgICAgIGF1dGg9KCd1c2VyJywgJ3Bhc3MnKSwKKyAgICAgICAgICkKKyAgICAgICAgIGFzc2VydCByLmhpc3RvcnlbMF0ucmVxdWVzdC5oZWFkZXJzWydBdXRob3JpemF0aW9uJ10KKy0gICAgICAgIGFzc2VydCBub3Qgci5yZXF1ZXN0LmhlYWRlcnMuZ2V0KCdBdXRob3JpemF0aW9uJywgJycpCisrICAgICAgICBhc3NlcnQgJ0F1dGhvcml6YXRpb24nIG5vdCBpbiByLnJlcXVlc3QuaGVhZGVycworKworKyAgICBkZWYgdGVzdF9hdXRoX2lzX3N0cmlwcGVkX29uX3NjaGVtZV9yZWRpcmVjdChzZWxmLCBodHRwYmluLCBodHRwYmluX3NlY3VyZSwgaHR0cGJpbl9jYV9idW5kbGUpOgorKyAgICAgICAgciA9IHJlcXVlc3RzLmdldCgKKysgICAgICAgICAgICBodHRwYmluX3NlY3VyZSgncmVkaXJlY3QtdG8nKSwKKysgICAgICAgICAgICBwYXJhbXM9eyd1cmwnOiBodHRwYmluKCdnZXQnKX0sCisrICAgICAgICAgICAgYXV0aD0oJ3VzZXInLCAncGFzcycpLAorKyAgICAgICAgICAgIHZlcmlmeT1odHRwYmluX2NhX2J1bmRsZQorKyAgICAgICAgKQorKyAgICAgICAgYXNzZXJ0IHIuaGlzdG9yeVswXS5yZXF1ZXN0LmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXQorKyAgICAgICAgYXNzZXJ0ICdBdXRob3JpemF0aW9uJyBub3QgaW4gci5yZXF1ZXN0LmhlYWRlcnMKKyAKKyAgICAgZGVmIHRlc3RfYXV0aF9pc19yZXRhaW5lZF9mb3JfcmVkaXJlY3Rfb25faG9zdChzZWxmLCBodHRwYmluKToKKyAgICAgICAgIHIgPSByZXF1ZXN0cy5nZXQoaHR0cGJpbigncmVkaXJlY3QvMScpLCBhdXRoPSgndXNlcicsICdwYXNzJykpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy8wMDAyLVJld29yay1hdXRob3JpemF0aW9uLXN0cmlwcGluZy1sb2dpYy1hcy1kaXNjdXNzZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMvMDAwMi1SZXdvcmstYXV0aG9yaXphdGlvbi1zdHJpcHBpbmctbG9naWMtYXMtZGlzY3Vzc2VkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMDY5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMvMDAwMi1SZXdvcmstYXV0aG9yaXphdGlvbi1zdHJpcHBpbmctbG9naWMtYXMtZGlzY3Vzc2VkLnBhdGNoCkBAIC0wLDAgKzEsMTE4IEBACitGcm9tIDY5OGMyZmE4NTBiZmM4YjNiZGI3NjhlMWMxY2Q2ZDU3ZTY0MzgxMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCcnVjZSBNZXJyeSA8Ym1lcnJ5QHNrYS5hYy56YT4KK0RhdGU6IFR1ZSwgMTQgQXVnIDIwMTggMTM6MzA6NDMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFJld29yayBhdXRob3JpemF0aW9uIHN0cmlwcGluZyBsb2dpYyBhcyBkaXNjdXNzZWQKKworVGhlIGV4Y2VwdGlvbiBmb3IgaHR0cC0+aHR0cHMgdXBncmFkZSBub3cgcmVxdWlyZXMgdGhlIHN0YW5kYXJkIEhUVFAoUykKK3BvcnRzIHRvIGJlIHVzZWQsIGVpdGhlciBpbXBsaWNpdGx5IChubyBwb3J0IHNwZWNpZmllZCkgb3IgZXhwbGljaXRseS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitGb2xsb3ctdXAgZml4IGZvciBDVkUtMjAxOC0xODA3NAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyByZXF1ZXN0cy9zZXNzaW9ucy5weSAgIHwgMjYgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyB0ZXN0cy90ZXN0X3JlcXVlc3RzLnB5IHwgMzMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JlcXVlc3RzL3Nlc3Npb25zLnB5IGIvcmVxdWVzdHMvc2Vzc2lvbnMucHkKK2luZGV4IDI5NjlkODMuLmMxMWEzYTIgMTAwNjQ0CistLS0gYS9yZXF1ZXN0cy9zZXNzaW9ucy5weQorKysrIGIvcmVxdWVzdHMvc2Vzc2lvbnMucHkKK0BAIC0xMTUsNiArMTE1LDIyIEBAIGNsYXNzIFNlc3Npb25SZWRpcmVjdE1peGluKG9iamVjdCk6CisgICAgICAgICAgICAgcmV0dXJuIHRvX25hdGl2ZV9zdHJpbmcobG9jYXRpb24sICd1dGY4JykKKyAgICAgICAgIHJldHVybiBOb25lCisgCisrICAgIGRlZiBzaG91bGRfc3RyaXBfYXV0aChzZWxmLCBvbGRfdXJsLCBuZXdfdXJsKToKKysgICAgICAgICIiIkRlY2lkZSB3aGV0aGVyIEF1dGhvcml6YXRpb24gaGVhZGVyIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gcmVkaXJlY3RpbmciIiIKKysgICAgICAgIG9sZF9wYXJzZWQgPSB1cmxwYXJzZShvbGRfdXJsKQorKyAgICAgICAgbmV3X3BhcnNlZCA9IHVybHBhcnNlKG5ld191cmwpCisrICAgICAgICBpZiBvbGRfcGFyc2VkLmhvc3RuYW1lICE9IG5ld19wYXJzZWQuaG9zdG5hbWU6CisrICAgICAgICAgICAgcmV0dXJuIFRydWUKKysgICAgICAgICMgU3BlY2lhbCBjYXNlOiBhbGxvdyBodHRwIC0+IGh0dHBzIHJlZGlyZWN0IHdoZW4gdXNpbmcgdGhlIHN0YW5kYXJkCisrICAgICAgICAjIHBvcnRzLiBUaGlzIGlzbid0IHNwZWNpZmllZCBieSBSRkMgNzIzNSwgYnV0IGlzIGtlcHQgdG8gYXZvaWQKKysgICAgICAgICMgYnJlYWtpbmcgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiByZXF1ZXN0cworKyAgICAgICAgIyB0aGF0IGFsbG93ZWQgYW55IHJlZGlyZWN0cyBvbiB0aGUgc2FtZSBob3N0LgorKyAgICAgICAgaWYgKG9sZF9wYXJzZWQuc2NoZW1lID09ICdodHRwJyBhbmQgb2xkX3BhcnNlZC5wb3J0IGluICg4MCwgTm9uZSkKKysgICAgICAgICAgICAgICAgYW5kIG5ld19wYXJzZWQuc2NoZW1lID09ICdodHRwcycgYW5kIG5ld19wYXJzZWQucG9ydCBpbiAoNDQzLCBOb25lKSk6CisrICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrICAgICAgICAjIFN0YW5kYXJkIGNhc2U6IHJvb3QgVVJJIG11c3QgbWF0Y2gKKysgICAgICAgIHJldHVybiBvbGRfcGFyc2VkLnBvcnQgIT0gbmV3X3BhcnNlZC5wb3J0IG9yIG9sZF9wYXJzZWQuc2NoZW1lICE9IG5ld19wYXJzZWQuc2NoZW1lCisrCisgICAgIGRlZiByZXNvbHZlX3JlZGlyZWN0cyhzZWxmLCByZXNwLCByZXEsIHN0cmVhbT1GYWxzZSwgdGltZW91dD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5PVRydWUsIGNlcnQ9Tm9uZSwgcHJveGllcz1Ob25lLCB5aWVsZF9yZXF1ZXN0cz1GYWxzZSwgKiphZGFwdGVyX2t3YXJncyk6CisgICAgICAgICAiIiJSZWNlaXZlcyBhIFJlc3BvbnNlLiBSZXR1cm5zIGEgZ2VuZXJhdG9yIG9mIFJlc3BvbnNlcyBvciBSZXF1ZXN0cy4iIiIKK0BAIC0yMzYsMTYgKzI1MiwxMCBAQCBjbGFzcyBTZXNzaW9uUmVkaXJlY3RNaXhpbihvYmplY3QpOgorICAgICAgICAgaGVhZGVycyA9IHByZXBhcmVkX3JlcXVlc3QuaGVhZGVycworICAgICAgICAgdXJsID0gcHJlcGFyZWRfcmVxdWVzdC51cmwKKyAKKy0gICAgICAgIGlmICdBdXRob3JpemF0aW9uJyBpbiBoZWFkZXJzOgorKyAgICAgICAgaWYgJ0F1dGhvcml6YXRpb24nIGluIGhlYWRlcnMgYW5kIHNlbGYuc2hvdWxkX3N0cmlwX2F1dGgocmVzcG9uc2UucmVxdWVzdC51cmwsIHVybCk6CisgICAgICAgICAgICAgIyBJZiB3ZSBnZXQgcmVkaXJlY3RlZCB0byBhIG5ldyBob3N0LCB3ZSBzaG91bGQgc3RyaXAgb3V0IGFueQorICAgICAgICAgICAgICMgYXV0aGVudGljYXRpb24gaGVhZGVycy4KKy0gICAgICAgICAgICBvcmlnaW5hbF9wYXJzZWQgPSB1cmxwYXJzZShyZXNwb25zZS5yZXF1ZXN0LnVybCkKKy0gICAgICAgICAgICByZWRpcmVjdF9wYXJzZWQgPSB1cmxwYXJzZSh1cmwpCistCistICAgICAgICAgICAgaWYgKG9yaWdpbmFsX3BhcnNlZC5ob3N0bmFtZSAhPSByZWRpcmVjdF9wYXJzZWQuaG9zdG5hbWUKKy0gICAgICAgICAgICAgICAgICAgIG9yIG9yaWdpbmFsX3BhcnNlZC5wb3J0ICE9IHJlZGlyZWN0X3BhcnNlZC5wb3J0CistICAgICAgICAgICAgICAgICAgICBvciBvcmlnaW5hbF9wYXJzZWQuc2NoZW1lICE9IHJlZGlyZWN0X3BhcnNlZC5zY2hlbWUpOgorLSAgICAgICAgICAgICAgICBkZWwgaGVhZGVyc1snQXV0aG9yaXphdGlvbiddCisrICAgICAgICAgICAgZGVsIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXQorIAorICAgICAgICAgIyAubmV0cmMgbWlnaHQgaGF2ZSBtb3JlIGF1dGggZm9yIHVzIG9uIG91ciBuZXcgaG9zdC4KKyAgICAgICAgIG5ld19hdXRoID0gZ2V0X25ldHJjX2F1dGgodXJsKSBpZiBzZWxmLnRydXN0X2VudiBlbHNlIE5vbmUKK2RpZmYgLS1naXQgYS90ZXN0cy90ZXN0X3JlcXVlc3RzLnB5IGIvdGVzdHMvdGVzdF9yZXF1ZXN0cy5weQoraW5kZXggZTBlODAxYS4uMTQ4MDY3YiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Rlc3RfcmVxdWVzdHMucHkKKysrKyBiL3Rlc3RzL3Rlc3RfcmVxdWVzdHMucHkKK0BAIC0xNTY3LDE3ICsxNTY3LDcgQEAgY2xhc3MgVGVzdFJlcXVlc3RzOgorICAgICAgICAgICAgIHByZXEgPSByZXEucHJlcGFyZSgpCisgICAgICAgICAgICAgYXNzZXJ0IHRlc3RfdXJsID09IHByZXEudXJsCisgCistICAgIEBweXRlc3QubWFyay54ZmFpbChyYWlzZXM9Q29ubmVjdGlvbkVycm9yKQorLSAgICBkZWYgdGVzdF9hdXRoX2lzX3N0cmlwcGVkX29uX3JlZGlyZWN0X29mZl9ob3N0KHNlbGYsIGh0dHBiaW4pOgorLSAgICAgICAgciA9IHJlcXVlc3RzLmdldCgKKy0gICAgICAgICAgICBodHRwYmluKCdyZWRpcmVjdC10bycpLAorLSAgICAgICAgICAgIHBhcmFtcz17J3VybCc6ICdodHRwOi8vd3d3Lmdvb2dsZS5jby51ayd9LAorLSAgICAgICAgICAgIGF1dGg9KCd1c2VyJywgJ3Bhc3MnKSwKKy0gICAgICAgICkKKy0gICAgICAgIGFzc2VydCByLmhpc3RvcnlbMF0ucmVxdWVzdC5oZWFkZXJzWydBdXRob3JpemF0aW9uJ10KKy0gICAgICAgIGFzc2VydCAnQXV0aG9yaXphdGlvbicgbm90IGluIHIucmVxdWVzdC5oZWFkZXJzCistCistICAgIGRlZiB0ZXN0X2F1dGhfaXNfc3RyaXBwZWRfb25fc2NoZW1lX3JlZGlyZWN0KHNlbGYsIGh0dHBiaW4sIGh0dHBiaW5fc2VjdXJlLCBodHRwYmluX2NhX2J1bmRsZSk6CisrICAgIGRlZiB0ZXN0X2F1dGhfaXNfc3RyaXBwZWRfb25faHR0cF9kb3duZ3JhZGUoc2VsZiwgaHR0cGJpbiwgaHR0cGJpbl9zZWN1cmUsIGh0dHBiaW5fY2FfYnVuZGxlKToKKyAgICAgICAgIHIgPSByZXF1ZXN0cy5nZXQoCisgICAgICAgICAgICAgaHR0cGJpbl9zZWN1cmUoJ3JlZGlyZWN0LXRvJyksCisgICAgICAgICAgICAgcGFyYW1zPXsndXJsJzogaHR0cGJpbignZ2V0Jyl9LAorQEAgLTE1OTQsNiArMTU4NCwyNyBAQCBjbGFzcyBUZXN0UmVxdWVzdHM6CisgCisgICAgICAgICBhc3NlcnQgaDEgPT0gaDIKKyAKKysgICAgZGVmIHRlc3Rfc2hvdWxkX3N0cmlwX2F1dGhfaG9zdF9jaGFuZ2Uoc2VsZik6CisrICAgICAgICBzID0gcmVxdWVzdHMuU2Vzc2lvbigpCisrICAgICAgICBhc3NlcnQgcy5zaG91bGRfc3RyaXBfYXV0aCgnaHR0cDovL2V4YW1wbGUuY29tL2ZvbycsICdodHRwOi8vYW5vdGhlci5leGFtcGxlLmNvbS8nKQorKworKyAgICBkZWYgdGVzdF9zaG91bGRfc3RyaXBfYXV0aF9odHRwX2Rvd25ncmFkZShzZWxmKToKKysgICAgICAgIHMgPSByZXF1ZXN0cy5TZXNzaW9uKCkKKysgICAgICAgIGFzc2VydCBzLnNob3VsZF9zdHJpcF9hdXRoKCdodHRwczovL2V4YW1wbGUuY29tL2ZvbycsICdodHRwOi8vZXhhbXBsZS5jb20vYmFyJykKKysKKysgICAgZGVmIHRlc3Rfc2hvdWxkX3N0cmlwX2F1dGhfaHR0cHNfdXBncmFkZShzZWxmKToKKysgICAgICAgIHMgPSByZXF1ZXN0cy5TZXNzaW9uKCkKKysgICAgICAgIGFzc2VydCBub3Qgcy5zaG91bGRfc3RyaXBfYXV0aCgnaHR0cDovL2V4YW1wbGUuY29tL2ZvbycsICdodHRwczovL2V4YW1wbGUuY29tL2JhcicpCisrICAgICAgICBhc3NlcnQgbm90IHMuc2hvdWxkX3N0cmlwX2F1dGgoJ2h0dHA6Ly9leGFtcGxlLmNvbTo4MC9mb28nLCAnaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXInKQorKyAgICAgICAgYXNzZXJ0IG5vdCBzLnNob3VsZF9zdHJpcF9hdXRoKCdodHRwOi8vZXhhbXBsZS5jb20vZm9vJywgJ2h0dHBzOi8vZXhhbXBsZS5jb206NDQzL2JhcicpCisrICAgICAgICAjIE5vbi1zdGFuZGFyZCBwb3J0cyBzaG91bGQgdHJpZ2dlciBzdHJpcHBpbmcKKysgICAgICAgIGFzc2VydCBzLnNob3VsZF9zdHJpcF9hdXRoKCdodHRwOi8vZXhhbXBsZS5jb206ODA4MC9mb28nLCAnaHR0cHM6Ly9leGFtcGxlLmNvbS9iYXInKQorKyAgICAgICAgYXNzZXJ0IHMuc2hvdWxkX3N0cmlwX2F1dGgoJ2h0dHA6Ly9leGFtcGxlLmNvbS9mb28nLCAnaHR0cHM6Ly9leGFtcGxlLmNvbTo4NDQzL2JhcicpCisrCisrICAgIGRlZiB0ZXN0X3Nob3VsZF9zdHJpcF9hdXRoX3BvcnRfY2hhbmdlKHNlbGYpOgorKyAgICAgICAgcyA9IHJlcXVlc3RzLlNlc3Npb24oKQorKyAgICAgICAgYXNzZXJ0IHMuc2hvdWxkX3N0cmlwX2F1dGgoJ2h0dHA6Ly9leGFtcGxlLmNvbToxMjM0L2ZvbycsICdodHRwczovL2V4YW1wbGUuY29tOjQzMjEvYmFyJykKKysKKyAgICAgZGVmIHRlc3RfbWFudWFsX3JlZGlyZWN0X3dpdGhfcGFydGlhbF9ib2R5X3JlYWQoc2VsZiwgaHR0cGJpbik6CisgICAgICAgICBzID0gcmVxdWVzdHMuU2Vzc2lvbigpCisgICAgICAgICByMSA9IHMuZ2V0KGh0dHBiaW4oJ3JlZGlyZWN0LzInKSwgYWxsb3dfcmVkaXJlY3RzPUZhbHNlLCBzdHJlYW09VHJ1ZSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMTguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjE5LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjE4LjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0c18yLjE5LjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjA3YjY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiUm9ib3QgRnJhbWV3b3JrIHRlc3QgbGlicmFyeSBmb3Igc2VyaWFsIGNvbm5lY3Rpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vd2hvc2F5c25pL3JvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vQXBhY2hlLTIuMDttZDU9ODlhZWE0ZTE3ZDk5YTdjYWNkYmVlZDQ2YTAwOTZiMTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiN2M5NTY1ZDU0YzMwZGY3Y2QzZjNjMGUyOWFkZmZhMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTZhZDYwZmMwYjdkZjRiZTQ0ZDgyYzMwMmY1ZWQ4ZmFkNDkzNWNkYTk5ZTRiNDU5NDJlM2M4ODE3OWQxZTE5IgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9jZS9lMS8xZTMzN2RjODRhMjBiOWQ5MmQ3YjI0M2QxNmJiOWY2ZmMwMDg0OTY3ZWNhNzQ1NDIyOGJiNTQ2ZWZlYzcvcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS0wLjMuMS50YXIuZ3oiCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHlzZXJpYWwgXAorICAgICR7UFlUSE9OX1BOfS1yb2JvdGZyYW1ld29yayBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwZjY5YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYwppbmRleCA3OGJiYmM2Li5lOTIwYzUxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay5pbmMKQEAgLTExLDggKzExLDggQEAKIAogaW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYTQ5YTU0YjlkN2UzODMwMjcxMjE5NGU4NWMzN2VhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMDE4ZjIzMzU2ODIyN2Y5YWY4YzM2NmY5M2UyNDNhMTU3Yjc0MmYzYmFmNWI2NDllY2M5NzUwYWMwZWUxZmY3IgorU1JDX1VSSVttZDVzdW1dID0gImVlNzUzNDE1NjQ1ZmY0ODMxZmYwZDM2NmEwNDY3ZmU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiOTQyNTdjYmQ4NDhkZmNhNzE0OGUwOTJkMjMzYTEyODUzY2M3ZTg0MGNlODIzMWFmOWNiYjVlN2Y1MWFhNDciCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29ya18zLjAuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW12ZXIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjOTVjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VtdmVyLmluYwpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJQeXRob24gbW9kdWxlIGZvciBTZW1hbnRpYyBWZXJzaW9uaW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlciIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlci9pc3N1ZXMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzU3OWJhOWQwYmIyMTM3YmFkNTMyNGQ0YmRiN2U0MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjA5MDEwYTY2ZDlhMzgzNzIxMWJiN2FlNWEyMGQxMGJhODhmOGNiNDllOTJjYjEzOWE2OWVmOTBkNTA2MGQ4IgorCitpbmhlcml0IHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlcl8yLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW12ZXJfMi44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU3MmZlYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW12ZXJfMi44LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXNlbXZlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50LmluYwppbmRleCAzZjUxYmMyLi4yYmE2NTcwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCkBAIC0xLDkgKzEsOSBAQAogU1VNTUFSWSA9ICJTZXJpYWxpemF0aW9uIGJhc2VkIG9uIGFzdC5saXRlcmFsX2V2YWwiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1hY2RlYTY4ZjBlNWE4OWViNmNiZmRmNTRlMzhjMzU2ZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01YTgxOTNiYTg5ZjEwODM2MTdmMzJkNTIyZjY0ODVlOSIKIAotU1JDX1VSSVttZDVzdW1dID0gImQwYzUwZjE5NDNmZjg2ZDgzMGViM2ZlNDBmNmRjMWUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2ODU1NDgzZDk1YTAzYjZhZWUzNTgzNjM2ODRjZDM4YTNhNjcwMjQwZGE1YmM2ZGE0MjUzMDc5Y2IwN2I4ZGYiCitTUkNfVVJJW21kNXN1bV0gPSAiMGY5Njg0NjIyMTI1YTUyN2ZhNGZiZTI1ODc3Mzg5NzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY0YTAyOGUwNTljMWI1NTc3MDFhZTdjNTY3Y2RhYjMzMGRiZDIyOGZmOTI0NDg5MzQzZWZjYjM5YmQ4MjhhMCIKIAogaW5oZXJpdCBweXBpCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjI1LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjI0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudF8xLjI1LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYwppbmRleCBlYjY2NTgwLi45ODg4M2VjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy1zY20uaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKQEAgLTIsOCArMiw4IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjU1ZjljZWRkZTRhMzNhYjVkMjg2YzVmMzBlODZkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMTYzZThhMTJkMjEyMWY3NzU3NTc3M2NmYzJiNTk4ODI3NWRjMWYxZDI1NDFmZGY3ODAxMjdjMjlkYmJlYTljIgorU1JDX1VSSVttZDVzdW1dID0gImNmZWM1ZDJkYmJkMGE4NWM0MDA2NmY3OTAzNWI1ODc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3NjcxNDFmZWNkYWIxYzBiM2M4ZTRjNzg4YWM5MTJkN2M5NGEwZDZjNDUyZDQwNzc3YmE4NGY5MTgzMTYzNzkiCiAKIFBZUElfUEFDS0FHRSA9ICJzZXR1cHRvb2xzX3NjbSIKIGluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzEuMTUuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8yLjEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzEuMTUuNy5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzIuMS4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2guaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmZkNTYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoLmluYwpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlB5dGhvbiBzdWJwcm9jZXNzIHJlcGxhY2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Ftb2ZmYXQvc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01MzE3MDk0MjkyMjk2ZjAzNDA1ZjU5YWU1ZjY1NDRiNiIKKworU1JDX1VSSVttZDVzdW1dID0gImE4MzUxYWVmMjVkMjVmNzA3YzE3ZTBhN2E2MjgwMjUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MmJmNTgzM2VkMDFjN2I1YzVmYjczYTdmNzFiM2Q5OGQ0OGU5YjliODc2NDIzNjIzN2JkYzdlY2FlODUwZmMiCisKK1BZUElfUEFDS0FHRSA9ICJzaCIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcmVzb3VyY2UgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXRlcm1pbmFsIFwKKyAgICAke1BZVEhPTl9QTn0tdGVzdHMgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorIgorCisjIFdBUk5JTkc6IFdlIHdlcmUgdW5hYmxlIHRvIG1hcCB0aGUgZm9sbG93aW5nIHB5dGhvbiBwYWNrYWdlL21vZHVsZQorIyBkZXBlbmRlbmNpZXMgdG8gdGhlIGJpdGJha2UgcGFja2FnZXMgd2hpY2ggaW5jbHVkZSB0aGVtOgorIyAgICBjb3ZlcmFnZSAtIG9ubHkgdXNlZCBpbiB0ZXN0IGFuZCB0aGVyZSBpcyBhIGNoZWNrIHRvIHNlZSBpZiBpdCBpcworIyAgICAgICAgICAgICAgIGF2YWlsYWJsZSBiZWZvcmUgaW1wb3J0aW5nLgorIyAgICBxdWV1ZSAtIHBhcnQgb2YgdGhyZWFkaW5nCisjICAgIHNpZ25hbCAtIHBhcnQgb2YgY29yZSBpbiBweXRob24zLiBub3Qgc3VyZSBob3cgaXQgaXMgaW1wb3J0ZWQgaW4gcHl0aG9uMi4KKyMgICAgICAgICAgICAgTm8gY29tcGxhbnRzIGluIGNvbXBpbGluZy4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaF8xLjEyLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoXzEuMTIuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NiNTE0MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaF8xLjEyLjE0LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBweXRob24tc2guaW5jCitpbmhlcml0IHNldHVwdG9vbHMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAorICAgICR7UFlUSE9OX1BOfS1sYW5nIFwKKyAgICAke1BZVEhPTl9QTn0tdGV4dHV0aWxzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXguaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDY4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXguaW5jCkBAIC0wLDAgKzEsOCBAQAorREVTQ1JJUFRJT04gPSAiQW4gZWFzeSB0byB1c2UgQUpBWCBsaWJyYXJ5IGZvciBQeXRob24gYmFzZWQgb24galF1ZXJ5LmFqYXgiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3BhbnRhbGVldi9zaWpheC1weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTE2ZTIxM2Q3NTY0MWEzOTI0NzhkZjUwY2YwODQxOTAzIgorCitQWVBJX1BBQ0tBR0UgPSAiU2lqYXgiCitpbmhlcml0IHB5cGkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXhfMC4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXhfMC4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIyNmM0MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheF8wLjMuMi5iYgpAQCAtMCwwICsxLDExIEBACitERVNDUklQVElPTiA9ICJBbiBlYXN5IHRvIHVzZSBBSkFYIGxpYnJhcnkgZm9yIFB5dGhvbiBiYXNlZCBvbiBqUXVlcnkuYWpheCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zcGFudGFsZWV2L3NpamF4LXB5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTZlMjEzZDc1NjQxYTM5MjQ3OGRmNTBjZjA4NDE5MDMiCisKK1BZUElfUEFDS0FHRSA9ICJTaWpheCIKK2luaGVyaXQgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tc2lqYXguaW5jCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWIwNjJmNGE4YjJhYWQ5NWM4N2U3YzA5ZTVkYWY1YTZiMGQwZjA4YWJmOWVmZTVmOTFhMDA3NWM2YmU3YzBkIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwppbmRleCBlMjhkNTE4Li4zZDM2Zjk2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb24uaW5jCkBAIC00LDggKzQsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YzYzMzhkN2FiZDMyMWMwYjUwYTJhNTQ3ZTQ0MWM1MmUiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4NzBiZjYyNTc0NjVjZTJlZThjYWQxNGUyMzk0ZjdlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzRlY2YyMGUwNTQ3MTZjYzFlNWE4MWNhZGM0NGQzZjQwMjcxMDhkOGRkMDg2MWQ4YjFlM2JkN2EzMmQ0ZjBhIgorU1JDX1VSSVttZDVzdW1dID0gIjc0NGZhOTlhZWQyMDc0NzhmOGZiZjlkZDlmMDRmYWQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxZjMyOTEzOWJhNjQ3YTk1NDhhYTA1ZmI5NWQwNDZiNGE2Nzc2NDMwNzBkYzJhZmMwNWZhMmU5NzVkMDljYTUiCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjEzLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjE2LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTMuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbXBsZWpzb25fMy4xNi4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2xpcC1kYnVzXzAuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1c18wLjYuMS5iYgppbmRleCA4MDgxNDE2Li5kYzU4N2U3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2xpcC1kYnVzXzAuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbGlwLWRidXNfMC42LjEuYmIKQEAgLTI1LDMgKzI1LDcgQEAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKICAgICBzZWQgLWUgJ3MvQFZFUlNJT05ALyR7UFZ9L2cnIHNldHVwLnB5LmluID4gc2V0dXAucHkKIH0KKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg0NzEzLworIyBweXRob24tbmF0aXZlL3B5dGhvbjogY2FuJ3Qgb3BlbiBmaWxlICdzZXR1cC5weSc6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGViYzBlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZS5pbmMKQEAgLTAsMCArMSwxNSBAQAorREVTQ1JJUFRJT04gPSAiTWFuYWdlIGR5bmFtaWMgcGx1Z2lucyBmb3IgUHl0aG9uIGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3Qvc3RldmVkb3JlIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MjUxODZjYmE1Nzc4NTJlMDQwOGM5MmMzZjhmYWM2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTE1MzU0NWFjYTdhNmE0OWQ4MzM3YWNjYTRmNDFjMjEyZmJmYTYwYmY4NjRlY2QwNTZkZjBjYWZiOTYyN2U4IgorCitpbmhlcml0IHB5cGkKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXBici1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGJyICR7UFlUSE9OX1BOfS1zaXgiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZV8xLjI5LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlXzEuMjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGEwMGMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZV8xLjI5LjAuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXN0ZXZlZG9yZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvLmluYwppbmRleCAyOWQxMGRhLi4xNjg5OWY4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkby5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8uaW5jCkBAIC00LDEwICs0LDEwIEBACiBwb2xsaW5nLCBXZWJTb2NrZXRzLCBhbmQgb3RoZXIgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBhIGxvbmctbGl2ZWQgY29ubmVjdGlvbiB0byBlYWNoIHVzZXIuIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50b3JuYWRvd2ViLm9yZy9lbi9zdGFibGUvIgogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTM7ZW5kbGluZT0xNTttZDU9OGQ0NjNmYzY2ZmY4ZjI3NTM1NGZmZTg4ZDE4OTZlMTIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKIAotU1JDX1VSSVttZDVzdW1dID0gImE1ZmM3ZmQ0YWVhOTQ4Njc2MDlhNDkxY2U2NTc4NmYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkMTRlNDdlYWIwZTE1Nzk5Y2YzY2RjYzg2YjBiOTgyNzlkYTY4NTIyY2FhY2UyYmQ3Y2U2NDQyODc2ODVmMGEiCitTUkNfVVJJW21kNXN1bV0gPSAiYmQyNjQ4NTFjNDA5ZjkyNmQxZGFlMWFkNTA1NWQyOGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY2NmEyMTcyY2I5NDczODcxOTNjYTRjMmMzZTE5MTMxZjFjNzBmYThiZTQ3MGRkYmJkOTMxN2ZkMDgwMTU4MiIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0tbnVtYmVycyAke1BZVEhPTl9QTn0tZW1haWwgXAogICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsICR7UFlUSE9OX1BOfS1odG1sICR7UFlUSE9OX1BOfS1qc29uICR7UFlUSE9OX1BOfS1jZXJ0aWZpICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNC41LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb181LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzQuNS4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9ybmFkb181LjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cmFjZWJhY2syXzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRyYWNlYmFjazJfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjk2Yzg3NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cmFjZWJhY2syXzEuNC4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiQSBiYWNrcG9ydCBvZiB0cmFjZWJhY2sgdG8gb2xkZXIgc3VwcG9ydGVkIFB5dGhvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGVzdGluZy1jYWJhbC90cmFjZWJhY2syIgorTElDRU5TRSA9ICJQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTMxO2VuZGxpbmU9MzE7bWQ1PTM2OGRkYzg1ODg0MzFjMTgwYWU3YzMzZjRmYjU3NTE5IgorCitERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1wYnItbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWU5NzIzZjRkNzBiZmM2MzA4ZmE5OTJkZDE5M2M0MDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDVhY2M2N2EwOTk4MGMyZWNmZWRkMzQyM2Y3YWUwMTA0ODM5ZWNjYjU1ZmM2NDU3NzNlMWNhYTA5NTFjMzAzMCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWxpbmVjYWNoZTIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKaW5kZXggNjQ4MGFkNS4uMDE2MTZiMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYwpAQCAtNSwxMCArNSwxMCBAQAogCiAjdHdpc3RlZC90b3BmaWxlcy9ORVdTOjY1NTogLSBSZWxpY2Vuc2VkOiBOb3cgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLCByYXRoZXIgdGhhbiBMR1BMLgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YTljMmZiZmNiYTdkNzA1MDRlM2JhNTQ1ZTE4MjBlZCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA0ZTc3MzBhZWNlZGM3OWQ4MDU2MjVhOTFiYzA2MTQ1IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNmRiZWRiOTE4ZjBjNzI4OGE0YzY3MGY1OTM5M2VjZjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRhMWE3ZTM1ZDVmY2FlMzdiYzljNzk3ODk3MGI1ZmViM2JjODI4MjIxNTViODY1NGVjNjM5MjVjMDVhZjc1YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNGNjMTY0YTc4MTg1OWM3NGRlNDdmMTdmMGU4NWY0YmNlOGEzMzIxYTlkMDg5MmMwMTVjOGY4MGM0MTU4YWQ5IgorU1JDX1VSSVttZDVzdW1dID0gImRhODE0MmFkNGU5OTcxYTc1ZmU3NTFhYzk2YTMzYjk1IgogCiBQWVBJX1BBQ0tBR0UgPSAiVHdpc3RlZCIKIFBZUElfUEFDS0FHRV9FWFQgPSAidGFyLmJ6MiIKQEAgLTQ5LDkgKzQ5LDEyIEBACiAgICAgJHtQTn0tY29uY2ggXAogICAgICR7UE59LW1haWwgXAogICAgICR7UE59LW5hbWVzIFwKKyAgICAke1BOfS1wYWlyIFwKKyAgICAke1BOfS1wcm90b2NvbHMgXAogICAgICR7UE59LXJ1bm5lciBcCiAgICAgJHtQTn0td2ViIFwKICAgICAke1BOfS13b3JkcyBcCisgICAgJHtQTn0tenNoIFwKICIKIAogUkRFUEVORFNfJHtQTn0tY29yZSA9ICIke1BZVEhPTl9QTn0tY29yZSAke1BZVEhPTl9QTn0tem9wZWludGVyZmFjZSAke1BZVEhPTl9QTn0taW5jcmVtZW50YWwgJHtQWVRIT05fUE59LWNvbnN0YW50bHkgJHtQWVRIT05fUE59LWh5cGVybGluayAke1BZVEhPTl9QTn0tYXV0b21hdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE3LjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE3LjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJlMTcwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZF8xNy45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10d2lzdGVkLmluYwotCi1SREVQRU5EU18ke1BOfS1jb3JlICs9ICIke1BZVEhPTl9QTn0tY29udGV4dGxpYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE4LjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE4LjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTAzZGIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTguNC4wLmJiCkBAIC0wLDAgKzEsOCBAQAoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXR3aXN0ZWQuaW5jCisKK1JERVBFTkRTXyR7UE59LWNvcmUgKz0gIiR7UFlUSE9OX1BOfS1jb250ZXh0bGliIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BOfS1uZXdzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzLmluYwppbmRleCBjZjc5OTI2Li4yODhlZDhiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliMy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCkBAIC0zLDggKzMsOCBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWExMTQ4NTFhZDlhOGMzMTFhYWM4NzI4YTY4MWEwNjciCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZGE3YmVkM2ZlOTRiZjdkYzU5YWUzNzg4NWNjNzJmNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzQ0ZGE4ZTExNDU2MzczMzQzMTdmZWViZDcyOGJkODY5YTM1Mjg1YjkzY2JiNGNjYTI1NzdkYTdlNjJkYjRmIgorU1JDX1VSSVttZDVzdW1dID0gIjFhZDQzZTRiNWFiN2EwNzk0Yzg5ZGMwNTdlMWQ3MTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2OGFjNWUxNWU3NmU3ZTVkZDJiOGY5NDAwNzIzM2UwMWVmZmUzZTUwZThkYWRkZjY5YWNmZDgxY2I2ODZiYWYiCiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCiAgICAgJHtQWVRIT05fUE59LWNlcnRpZmkgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjNfMS4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzXzEuMjMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZjM0M2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBwYWNrYWdlIGZvciBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIHZDYXJkIGFuZCB2Q2FsZW5kYXIgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vdm9iamVjdC5za3lob3VzZWNvbnN1bHRpbmcuY29tLyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS0yLjAudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhNjI5ZDZhZTk1ZGI1ZWRmZDViMjQwMmViMTA3M2NiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmNTZjYWUxOTYzMDNkODc1NjgyYjk2NDhiNGJiNDNmZmM3NjlkMmYwZjgwMDk1OGUwYTUwNmFmODY3YjEyNDMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMxZjJmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS42LjEuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJQeXRob24gcGFja2FnZSBmb3IgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyB2Q2FyZCBhbmQgdkNhbGVuZGFyIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3ZvYmplY3Quc2t5aG91c2Vjb25zdWx0aW5nLmNvbS8iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtMi4wLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNjM1N2U5NmE4NGQ1NWRlMmE3MWIzNmQzOWY2ODUzZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjUxMmFlYzc0YjkwYWJiNzFmNmI1Mzg5OGRkN2ZlNDczMDBjYzk0MDEwNGM0Zjc5MTQ4ZjA2NzFmNzkwMTAxIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29scworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYwppbmRleCA5MTY2OTdmLi44Njg2ODZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXMuaW5jCkBAIC0yLDEzICsyLDEyIEBACiBIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1dURm9ybXMiCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWM0NTlhY2NjOTBjNmVkNmE5NDg3OGM4ZmUwNTM1YmUyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWM0NjYwYzEzMjc3MGQ1ZDBhNTc1NzU0MWY2Yjc5NDkzIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiNjkzOGE1NDFmYWZkMWExYWUyZjZiOWI4ODU4OGVlZjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZkZjEwYmQxZmE1NjViODIzMzM4MGNiNzdhMzA0Y2QzNmZkNTVjNzMwMjNlOTFkNGI4MDNjOTZiYzExZDQ2ZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MWMwMDA4ZGJlN2JkOTg4OTJjNThmNzQ1N2E0NmE0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwY2RiYWMzZTdmNjg3ODA4NmMzMzRhYTI1ZGM1YTMzODY5YTM5NTRlOWQxZTAxNTEzMGQ2NWE2OTMwOWIzYjYxIgogCiBQWVBJX1BBQ0tBR0UgPSAiV1RGb3JtcyIKLVBZUElfUEFDS0FHRV9FWFQgPSAiemlwIgogCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXNfMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXNfMi4yLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zXzIuMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXNfMi4yLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlLmluYwppbmRleCAxZmFiMmNjLi4xMjYyM2M5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCkBAIC0yLDggKzIsOCBAQAogTElDRU5TRSA9ICJaUEwtMi4xIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lNTRmZDc3NjI3NGMxYjc0MjNlYzEyODk3NGJkOWQ0NiIKIAotU1JDX1VSSVttZDVzdW1dID0gIjg3MDBhNGY1MjdjMTIwM2IzNGIxMGMyYjRlN2E2OTEyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2ZDI2ZDVkZmJmZDYwYzY1MTUyOTM4ZmNiODJmOTQ5ZThkYWRhMzdjMDQxZjcyOTE2ZmVmNjYyMWJhNWM1Y2UiCitTUkNfVVJJW21kNXN1bV0gPSAiN2I2NjljZDY5MmQ4MTc3NzJjNjFkMmUzYWQwZjFlNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdjMzg0NzBkOWY1N2UzN2FmYjQ2MGMzOTllYjI1NGU3MTkzYWM3ZmI4MDQyYmQwOWJkYzAwMTk4MWE5Yzc0YyIKIAogUFlQSV9QQUNLQUdFID0gInpvcGUuaW50ZXJmYWNlIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16b3BlaW50ZXJmYWNlXzQuNS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjQuMy5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC41LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18wLjkuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjAuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzAuOS44LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFsZW1iaWNfMS4wLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8xLjYuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8xLjYuNS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzEuNi4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMS42LjUuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTcuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyc18xOC4xLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cnNfMTcuNC4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE4LjEuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdXRvbWF0XzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdXRvbWF0XzAuNy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXRfMC42LjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjcuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uXzEuNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS4zLjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi41LjMuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi42LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFuZGl0XzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYW5kaXRfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmNDc2MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFuZGl0XzEuNC4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiU2VjdXJpdHkgb3JpZW50ZWQgc3RhdGljIGFuYWx5c2VyIGZvciBweXRob24gY29kZS4iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xZGVjZTc4MjFiZjNmZDcwZmUxMzA5ZWFhMzdkNTJhMiIKKworU1JDX1VSSVttZDVzdW1dID0gImY3NDE1NWNiOTkyMWJlODU3NjkzYjMyZDI1MzFlODU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiOTc3MDQ1NDk3ZjgzZWMzYTAyNjE2OTczYWI4NDVjODI5Y2RhYjgxNDRjZTJlNzU3ZmUwMzExMDRhOWFiZDQiCisKK0RFUEVORFMgPSAicHl0aG9uMy1weXlhbWwgcHl0aG9uMy1zaXggcHl0aG9uMy1zdGV2ZWRvcmUgcHl0aG9uMy1wYnItbmF0aXZlIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlaGF2ZV8xLjIuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVoYXZlXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNTU4NzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlaGF2ZV8xLjIuNi5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWJlaGF2ZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzAuOC4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8yLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FuXzIuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8yLjEuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMi4yLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xNC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xMy4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xNC4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNlcnRpZmlfMjAxOC4xLjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTguOC4xMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTguMS4xOC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTguOC4xMy5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC40LmJiCmluZGV4IDAzODA0M2MuLjM4ZDgxMjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjQuYmIKQEAgLTEsMiArMSw3IEBACiBpbmhlcml0IHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi1jaGFyZGV0LmluYworCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyByZW5hbWUgc2NyaXB0cyB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIFB5dGhvbiAyIGJ1aWxkIG9mIGNoYXJkZXQKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2NoYXJkZXRlY3QgJHtEfSR7YmluZGlyfS9jaGFyZGV0ZWN0MworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcmNtb2RfMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcmNtb2RfMS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5OTZiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyY21vZF8xLjcuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1jcmNtb2QuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuMS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4xLjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8yLjEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi4xLjQuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuMy5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOC41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI4LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3l0aG9uXzAuMjguNS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYXRldXRpbF8yLjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi43LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi43LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGF0ZXV0aWxfMi43LjMuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvXzEuMTEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjEwLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb18xLjExLjE0LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb3Jlc3RmcmFtZXdvcmtfMy45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRqYW5nb3Jlc3RmcmFtZXdvcmtfMy45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkNmQxNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGphbmdvcmVzdGZyYW1ld29ya18zLjkuMC5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmsuaW5jCitpbmhlcml0IHNldHVwdG9vbHMzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1taWdyYXRlXzIuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1taWdyYXRlXzIuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLW1pZ3JhdGVfMi4xLjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stbWlncmF0ZV8yLjIuMS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1zaWpheF8wLjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc2lqYXhfMC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlhNjVjNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2stc2lqYXhfMC40LjEuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWZsYXNrLXNpamF4LmluYworCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmIyYmYyZDRmNzU0MDgxODUxMDIxOTUwNTVkNzU1NDlmZWU4ZDljOWU5NTRkY2EyNDI3MTg2OTI1Y2RjNDI5ZiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzAuMTIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2tfMS4wLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZmxhc2tfMC4xMi4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrXzEuMC4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZ1dHVyZV8wLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZ1dHVyZV8wLjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA1OTE4NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZnV0dXJlXzAuMTYuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWZ1dHVyZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncmVlbmxldF8wLjQuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JlZW5sZXRfMC40LjEzLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdyZWVubGV0XzAuNC4xNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8tdG9vbHNfMS4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8tdG9vbHNfMS4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYTFhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby10b29sc18xLjE0LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1ncnBjaW8tdG9vbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpb18xLjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpb18xLjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ3MjBiNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMTQuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWdycGNpby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHlwZXJsaW5rXzE3LjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaHlwZXJsaW5rXzE4LjAuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1oeXBlcmxpbmtfMTcuMy4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh5cGVybGlua18xOC4wLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaWRuYV8yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi43LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi42LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlkbmFfMi43LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWluZmxlY3Rpb25fMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWluZmxlY3Rpb25fMC4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzNmEwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW5mbGVjdGlvbl8wLjMuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWluZmxlY3Rpb24uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWludGVydmFsc18xLjUuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW50ZXJ2YWxzXzEuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYmUxMDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWludGVydmFsc18xLjUuNC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWludGVydmFscy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGFuZ3RhYmxlXzAuMC4zOC5iYgppbmRleCAwY2E1OGM3Li5lYjQyZmU5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxhbmd0YWJsZV8wLjAuMzguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sYW5ndGFibGVfMC4wLjM4LmJiCkBAIC0xNiw4ICsxNiw4IEBACiAKIGluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID0gIi0tcHJlZml4PSR7RH0vJHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke0R9LyR7ZGF0YWRpcn0vbGFuZ3RhYmxlIgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiIFwKKyAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9L2xhbmd0YWJsZSIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjRiYzdmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tbHhtbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTVkN2JhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuMi40LmJiCkBAIC0wLDAgKzEsMyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tbHhtbC5pbmMKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW0yY3J5cHRvXzAuMzAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbTJjcnlwdG9fMC4zMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNjNkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW0yY3J5cHRvXzAuMzAuMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLW0yY3J5cHRvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZGctaHR0cHNjbGllbnRfMC40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2YwN2IyZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmRnLWh0dHBzY2xpZW50XzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YThjODEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5kZy1odHRwc2NsaWVudF8wLjUuMS5iYgpAQCAtMCwwICsxLDYgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyB1cGRhdGUtYWx0ZXJuYXRpdmVzCityZXF1aXJlIHB5dGhvbi1uZGctaHR0cHNjbGllbnQuaW5jCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIm5kZ19odHRwY2xpZW50IgorQUxURVJOQVRJVkVfTElOS19OQU1FW25kZ19odHRwY2xpZW50XSA9ICIke2JpbmRpcn0vbmRnX2h0dHBjbGllbnQiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMi4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzIuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTZkNGUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkEgTXV0YWJsZVNldCB0aGF0IHJlbWVtYmVycyBpdHMgb3JkZXIsIHNvIHRoYXQgZXZlcnkgZW50cnkgaGFzIGFuIGluZGV4LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL0x1bWlub3NvSW5zaWdodC9vcmRlcmVkLXNldCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUlULUxJQ0VOU0U7bWQ1PTBmZWIwYzg1YjcyMmY0ODhiODc4NDRmYjVmODFkMmRjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2I4ZDczZGM2NGZkM2M3ODNlY2I0OGUwNTBiZmNjMGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQyY2FkNWQ3ZDViMDc2MGQ1Y2JlOTNkZmIzODVhYzJlZDQwMmNhMWQ0OGM5ZjRlMTAyZDdkNWNjZTNhOTBlYiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMy4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzMuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmQzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzMuMC4xLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQSBNdXRhYmxlU2V0IHRoYXQgcmVtZW1iZXJzIGl0cyBvcmRlciwgc28gdGhhdCBldmVyeSBlbnRyeSBoYXMgYW4gaW5kZXguIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vTHVtaW5vc29JbnNpZ2h0L29yZGVyZWQtc2V0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NSVQtTElDRU5TRTttZDU9MmIzNmJlMGQ5OTg1NGFhMmFlMjkyYTgwMGE3YzFkNGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODA1OWM3Yjk5Y2RlMGY4ZGRhMDFkZGVlNmI0M2MyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDZmZDdiZmZiYjE1ZjYxM2E5ZThhNjI4MWJmOTdjMmQ2N2Y3YmI4Njc3ZGVjYTgyNDlkZjJmYmRkOWNjZTdiIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworREVQRU5EUyArPSAicHl0aG9uMy1weXRlc3QtcnVubmVyLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjMuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMi4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhbmRhc18wLjIzLjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UtdHlwZV8wLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UtdHlwZV8wLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWQ5Y2UyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZS10eXBlXzAuNC4yLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcGFyc2UtdHlwZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2VfMS44LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlXzEuOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjQyNTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlXzEuOC40LmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcGFyc2UuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBlcmlwaGVyeV8xLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGVyaXBoZXJ5XzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhOWE5NWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBlcmlwaGVyeV8xLjEuMS5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcGVyaXBoZXJ5LmluYworCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmU4ZjM1MTkzNGVkY2U3MmNkOTE5YjRlYjA3MDg3OGViZmY1NTFkYjVlMjFhZWE2MWUwZjQ0NjEwMWYwYTc5ZiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjUuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuNi4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpbnRfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpbnRfMC44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc5M2FjNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludF8wLjguMS5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXBpbnQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsXzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bF8xLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRlODNjZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsXzEuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSAgPSAiQ29udHJvbCBwcm9jZXNzIGF0dHJpYnV0ZXMgdGhyb3VnaCBwcmN0bCIKLURFU0NSSVBUSU9OID0gIlRoZSBsaW51eCBwcmN0bCBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGNvbnRyb2wgc3BlY2lmaWMgY2hhcmFjdGVyaXN0aWNzIG9mIGEgXAotcHJvY2VzcycgYmVoYXZpb3VyLiBVc2FnZSBvZiB0aGUgZnVuY3Rpb24gaXMgZmFpcmx5IG1lc3N5IHRob3VnaCwgZHVlIHRvIFwKLWxpbWl0YXRpb25zIGluIEMgYW5kIGxpbnV4LiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIG5pY2Ugbm9uLW1lc3N5IHB5dGhvbihpYykgXAotaW50ZXJmYWNlLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlYjJmNGJjZDYwMzI2ZjgzZTVkZWI1NDIzNzJkNTJmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1N9IgotCi1TUkNSRVYgPSAiMTEwN2QwYmU3YmVjNGIyOGM4NWM2MmM0NTQ4ODJkMTY4NDRjOTMwYSIKLVBWID0gIjEuNi4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1wcmN0bDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21wbGljYXRpb24ucGF0Y2ggXAotIgotaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCi0KLURFUEVORFMgKz0gImxpYmNhcCIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bF8xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByY3RsXzEuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDYyMGEwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmN0bF8xLjcuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSAgPSAiQ29udHJvbCBwcm9jZXNzIGF0dHJpYnV0ZXMgdGhyb3VnaCBwcmN0bCIKK0RFU0NSSVBUSU9OID0gIlRoZSBsaW51eCBwcmN0bCBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGNvbnRyb2wgc3BlY2lmaWMgY2hhcmFjdGVyaXN0aWNzIG9mIGEgXAorcHJvY2VzcycgYmVoYXZpb3VyLiBVc2FnZSBvZiB0aGUgZnVuY3Rpb24gaXMgZmFpcmx5IG1lc3N5IHRob3VnaCwgZHVlIHRvIFwKK2xpbWl0YXRpb25zIGluIEMgYW5kIGxpbnV4LiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIG5pY2Ugbm9uLW1lc3N5IHB5dGhvbihpYykgXAoraW50ZXJmYWNlLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzZmY5ZjUwNDQ5ZDRiZDBlNTEzZGYxNmU0ZDk3NTVmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiNTdjZDBhN2NhZDc2ZThmODc5MmVlYTIyZWU1YjVkMTdiYWUwYTkwZiIKK1BWID0gIjEuNytnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3NldmVhcy9weXRob24tcHJjdGw7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN1cHBvcnQtY3Jvc3MtY29tcGxpY2F0aW9uLnBhdGNoIFwKKyIKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQorCitERVBFTkRTICs9ICJsaWJjYXAiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvZ3Jlc3NfMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9ncmVzc18xLjQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvZ3Jlc3NfMS4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb2dyZXNzXzEuNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8xLjAuMTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb21wdC10b29sa2l0XzIuMC40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb21wdC10b29sa2l0XzEuMC4xNS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm9tcHQtdG9vbGtpdF8yLjAuNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy42LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy41LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy42LjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS40LjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuNC4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjQuNi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdHlwcm9jZXNzXzAuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdHlwcm9jZXNzXzAuNi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3NfMC41LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHR5cHJvY2Vzc18wLjYuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS42LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS41LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS42LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xLW1vZHVsZXNfMC4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzXzAuMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzXzAuMi4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzXzAuMi4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMV8wLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xXzAuNC40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMV8wLjQuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjFfMC40LjQuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHliaW5kMTFfMi4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMi4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMi4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YmluZDExXzIuMi4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y29kZXN0eWxlXzIuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNvZGVzdHlsZV8yLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWRjZGIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNvZGVzdHlsZV8yLjQuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXB5Y29kZXN0eWxlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXMvMDAwMS1TdXBwb3J0LWFzeW5jaHJvbm91cy1jYWxscy01OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzLzAwMDEtU3VwcG9ydC1hc3luY2hyb25vdXMtY2FsbHMtNTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVjYjlhOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzLzAwMDEtU3VwcG9ydC1hc3luY2hyb25vdXMtY2FsbHMtNTgucGF0Y2gKQEAgLTAsMCArMSw5MyBAQAorRnJvbSAzOWE3ZDc5ZWU2YzU0ODkwMmZiYWM4Yjk1YzkzNGFmN2U0YzY5MjYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmVuZHVsYSBQb25jb3ZhIDx2cG9uY292YUByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyIEF1ZyAyMDE4IDE1OjMwOjQ1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBTdXBwb3J0IGFzeW5jaHJvbm91cyBjYWxscyAoIzU4KQorCitBZGRlZCBzdXBwb3J0IGZvciBhc3luY2hyb25vdXMgY2FsbHMgb2YgbWV0aG9kcy4gQSBtZXRob2QgaXMgY2FsbGVkCitzeW5jaHJvbm91c2x5IHVubGVzcyBpdHMgY2FsbGJhY2sgcGFyYW1ldGVyIGlzIHNwZWNpZmllZC4gQSBjYWxsYmFjaworaXMgYSBmdW5jdGlvbiBmKCphcmdzLCByZXR1cm5lZD1Ob25lLCBlcnJvcj1Ob25lKSwgd2hlcmUgYXJncyBpcworY2FsbGJhY2tfYXJncyBzcGVjaWZpZWQgaW4gdGhlIG1ldGhvZCBjYWxsLCByZXR1cm5lZCBpcyBhIHJldHVybgordmFsdWUgb2YgdGhlIG1ldGhvZCBhbmQgZXJyb3IgaXMgYW4gZXhjZXB0aW9uIHJhaXNlZCBieSB0aGUgbWV0aG9kLgorCitFeGFtcGxlIG9mIGFuIGFzeW5jaHJvbm91cyBjYWxsOgorCitkZWYgZnVuYyh4LCB5LCByZXR1cm5lZD1Ob25lLCBlcnJvcj1Ob25lKToKKyAgcGFzcworCitwcm94eS5NZXRob2QoYSwgYiwgY2FsbGJhY2s9ZnVuYywgY2FsbGJhY2tfYXJncz0oeCwgeSkpCisKK1Vwc3RyZWFtLVN0YXR1czogQ2hlcnJ5LXBpY2sgW2h0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL2NnaXQvcnBtcy9weXRob24tcHlkYnVzLmdpdC9dCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHB5ZGJ1cy9wcm94eV9tZXRob2QucHkgfCA0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHlkYnVzL3Byb3h5X21ldGhvZC5weSBiL3B5ZGJ1cy9wcm94eV9tZXRob2QucHkKK2luZGV4IDg3OThlZGQuLjRlYTQzMDQgMTAwNjQ0CistLS0gYS9weWRidXMvcHJveHlfbWV0aG9kLnB5CisrKysgYi9weWRidXMvcHJveHlfbWV0aG9kLnB5CitAQCAtNjUsMTUgKzY1LDM0IEBAIGNsYXNzIFByb3h5TWV0aG9kKG9iamVjdCk6CisgCisgCQkjIFB5dGhvbiAyIHN1eAorIAkJZm9yIGt3YXJnIGluIGt3YXJnczoKKy0JCQlpZiBrd2FyZyBub3QgaW4gKCJ0aW1lb3V0IiwpOgorKwkJCWlmIGt3YXJnIG5vdCBpbiAoInRpbWVvdXQiLCAiY2FsbGJhY2siLCAiY2FsbGJhY2tfYXJncyIpOgorIAkJCQlyYWlzZSBUeXBlRXJyb3Ioc2VsZi5fX3F1YWxuYW1lX18gKyAiIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ3t9JyIuZm9ybWF0KGt3YXJnKSkKKyAJCXRpbWVvdXQgPSBrd2FyZ3MuZ2V0KCJ0aW1lb3V0IiwgTm9uZSkKKysJCWNhbGxiYWNrID0ga3dhcmdzLmdldCgiY2FsbGJhY2siLCBOb25lKQorKwkJY2FsbGJhY2tfYXJncyA9IGt3YXJncy5nZXQoImNhbGxiYWNrX2FyZ3MiLCB0dXBsZSgpKQorKworKwkJY2FsbF9hcmdzID0gKAorKwkJCWluc3RhbmNlLl9idXNfbmFtZSwKKysJCQlpbnN0YW5jZS5fcGF0aCwKKysJCQlzZWxmLl9pZmFjZV9uYW1lLAorKwkJCXNlbGYuX19uYW1lX18sCisrCQkJR0xpYi5WYXJpYW50KHNlbGYuX3NpbmFyZ3MsIGFyZ3MpLAorKwkJCUdMaWIuVmFyaWFudFR5cGUubmV3KHNlbGYuX3NvdXRhcmdzKSwKKysJCQkwLAorKwkJCXRpbWVvdXRfdG9fZ2xpYih0aW1lb3V0KSwKKysJCQlOb25lCisrCQkpCisrCisrCQlpZiBjYWxsYmFjazoKKysJCQljYWxsX2FyZ3MgKz0gKHNlbGYuX2ZpbmlzaF9hc3luY19jYWxsLCAoY2FsbGJhY2ssIGNhbGxiYWNrX2FyZ3MpKQorKwkJCWluc3RhbmNlLl9idXMuY29uLmNhbGwoKmNhbGxfYXJncykKKysJCQlyZXR1cm4gTm9uZQorKwkJZWxzZToKKysJCQlyZXQgPSBpbnN0YW5jZS5fYnVzLmNvbi5jYWxsX3N5bmMoKmNhbGxfYXJncykKKysJCQlyZXR1cm4gc2VsZi5fdW5wYWNrX3JldHVybihyZXQpCisgCistCQlyZXQgPSBpbnN0YW5jZS5fYnVzLmNvbi5jYWxsX3N5bmMoCistCQkJaW5zdGFuY2UuX2J1c19uYW1lLCBpbnN0YW5jZS5fcGF0aCwKKy0JCQlzZWxmLl9pZmFjZV9uYW1lLCBzZWxmLl9fbmFtZV9fLCBHTGliLlZhcmlhbnQoc2VsZi5fc2luYXJncywgYXJncyksIEdMaWIuVmFyaWFudFR5cGUubmV3KHNlbGYuX3NvdXRhcmdzKSwKKy0JCQkwLCB0aW1lb3V0X3RvX2dsaWIodGltZW91dCksIE5vbmUpLnVucGFjaygpCistCisrCWRlZiBfdW5wYWNrX3JldHVybihzZWxmLCB2YWx1ZXMpOgorKwkJcmV0ID0gdmFsdWVzLnVucGFjaygpCisgCQlpZiBsZW4oc2VsZi5fb3V0YXJncykgPT0gMDoKKyAJCQlyZXR1cm4gTm9uZQorIAkJZWxpZiBsZW4oc2VsZi5fb3V0YXJncykgPT0gMToKK0BAIC04MSw2ICsxMDAsMTkgQEAgY2xhc3MgUHJveHlNZXRob2Qob2JqZWN0KToKKyAJCWVsc2U6CisgCQkJcmV0dXJuIHJldAorIAorKwlkZWYgX2ZpbmlzaF9hc3luY19jYWxsKHNlbGYsIHNvdXJjZSwgcmVzdWx0LCB1c2VyX2RhdGEpOgorKwkJZXJyb3IgPSBOb25lCisrCQlyZXR1cm5fYXJncyA9IE5vbmUKKysKKysJCXRyeToKKysJCQlyZXQgPSBzb3VyY2UuY2FsbF9maW5pc2gocmVzdWx0KQorKwkJCXJldHVybl9hcmdzID0gc2VsZi5fdW5wYWNrX3JldHVybihyZXQpCisrCQlleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKysJCQllcnJvciA9IGVycgorKworKwkJY2FsbGJhY2ssIGNhbGxiYWNrX2FyZ3MgPSB1c2VyX2RhdGEKKysJCWNhbGxiYWNrKCpjYWxsYmFja19hcmdzLCByZXR1cm5lZD1yZXR1cm5fYXJncywgZXJyb3I9ZXJyb3IpCisrCisgCWRlZiBfX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcik6CisgCQlpZiBpbnN0YW5jZSBpcyBOb25lOgorIAkJCXJldHVybiBzZWxmCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzLzAwMDItU3VwcG9ydC10cmFuc2Zvcm1hdGlvbi1iZXR3ZWVuLUQtQnVzLWVycm9ycy1hbmQtZXhjZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzLzAwMDItU3VwcG9ydC10cmFuc2Zvcm1hdGlvbi1iZXR3ZWVuLUQtQnVzLWVycm9ycy1hbmQtZXhjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWMwMzkwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXMvMDAwMi1TdXBwb3J0LXRyYW5zZm9ybWF0aW9uLWJldHdlZW4tRC1CdXMtZXJyb3JzLWFuZC1leGNlLnBhdGNoCkBAIC0wLDAgKzEsMjAzIEBACitGcm9tIDY5OTY4ZGVjODY3MDUzZTM4ZGUwYjkxZDc2YWM0MWQ1YTU3MzVlMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWZW5kdWxhIFBvbmNvdmEgPHZwb25jb3ZhQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDIgQXVnIDIwMTggMTU6MzE6NTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFN1cHBvcnQgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiBELUJ1cyBlcnJvcnMgYW5kCisgZXhjZXB0aW9ucy4KKworRXhjZXB0aW9ucyBjYW4gYmUgcmVnaXN0ZXJlZCB3aXRoIGRlY29yYXRvcnMsIHJhaXNlZCBpbiBhIHJlbW90ZQorbWV0aG9kIGFuZCByZWNyZWF0ZWQgYWZ0ZXIgcmV0dXJuIGZyb20gdGhlIHJlbW90ZSBjYWxsLgorCitVcHN0cmVhbS1TdGF0dXM6IENoZXJyeS1waWNrIFtodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9jZ2l0L3JwbXMvcHl0aG9uLXB5ZGJ1cy5naXQvXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBweWRidXMvZXJyb3IucHkgICAgICAgIHwgOTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBweWRidXMvcHJveHlfbWV0aG9kLnB5IHwgMTggKysrKysrKystLQorIHB5ZGJ1cy9yZWdpc3RyYXRpb24ucHkgfCAxNiArKysrKystLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBweWRidXMvZXJyb3IucHkKKworZGlmZiAtLWdpdCBhL3B5ZGJ1cy9lcnJvci5weSBiL3B5ZGJ1cy9lcnJvci5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFhYTM1MTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3B5ZGJ1cy9lcnJvci5weQorQEAgLTAsMCArMSw5NyBAQAorK2Zyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR0xpYiwgR2lvCisrCisrCisrZGVmIHJlZ2lzdGVyX2Vycm9yKG5hbWUsIGRvbWFpbiwgY29kZSk6CisrCSIiIlJlZ2lzdGVyIGFuZCBtYXAgZGVjb3JhdGVkIGV4Y2VwdGlvbiBjbGFzcyB0byBhIERCdXMgZXJyb3IuIiIiCisrCWRlZiBkZWNvcmF0ZWQoY2xzKToKKysJCWVycm9yX3JlZ2lzdHJhdGlvbi5yZWdpc3Rlcl9lcnJvcihjbHMsIG5hbWUsIGRvbWFpbiwgY29kZSkKKysJCXJldHVybiBjbHMKKysKKysJcmV0dXJuIGRlY29yYXRlZAorKworKworK2RlZiBtYXBfZXJyb3IoZXJyb3JfbmFtZSk6CisrCSIiIk1hcCBkZWNvcmF0ZWQgZXhjZXB0aW9uIGNsYXNzIHRvIGEgREJ1cyBlcnJvci4iIiIKKysJZGVmIGRlY29yYXRlZChjbHMpOgorKwkJZXJyb3JfcmVnaXN0cmF0aW9uLm1hcF9lcnJvcihjbHMsIGVycm9yX25hbWUpCisrCQlyZXR1cm4gY2xzCisrCisrCXJldHVybiBkZWNvcmF0ZWQKKysKKysKKytkZWYgbWFwX2J5X2RlZmF1bHQoY2xzKToKKysJIiIiTWFwIGRlY29yYXRlZCBleGNlcHRpb24gY2xhc3MgdG8gYWxsIHVua25vd24gREJ1cyBlcnJvcnMuIiIiCisrCWVycm9yX3JlZ2lzdHJhdGlvbi5tYXBfYnlfZGVmYXVsdChjbHMpCisrCXJldHVybiBjbHMKKysKKysKKytjbGFzcyBFcnJvclJlZ2lzdHJhdGlvbihvYmplY3QpOgorKwkiIiJDbGFzcyBmb3IgbWFwcGluZyBleGNlcHRpb25zIHRvIERCdXMgZXJyb3JzLiIiIgorKworKwlfZGVmYXVsdCA9IE5vbmUKKysJX21hcCA9IGRpY3QoKQorKwlfcmV2ZXJzZWRfbWFwID0gZGljdCgpCisrCisrCWRlZiBtYXBfYnlfZGVmYXVsdChzZWxmLCBleGNlcHRpb25fY2xzKToKKysJCSIiIlNldCB0aGUgZXhjZXB0aW9uIGNsYXNzIGFzIGEgZGVmYXVsdC4iIiIKKysJCXNlbGYuX2RlZmF1bHQgPSBleGNlcHRpb25fY2xzCisrCisrCWRlZiBtYXBfZXJyb3Ioc2VsZiwgZXhjZXB0aW9uX2NscywgbmFtZSk6CisrCQkiIiJNYXAgdGhlIGV4Y2VwdGlvbiBjbGFzcyB0byBhIERCdXMgbmFtZS4iIiIKKysJCXNlbGYuX21hcFtuYW1lXSA9IGV4Y2VwdGlvbl9jbHMKKysJCXNlbGYuX3JldmVyc2VkX21hcFtleGNlcHRpb25fY2xzXSA9IG5hbWUKKysKKysJZGVmIHJlZ2lzdGVyX2Vycm9yKHNlbGYsIGV4Y2VwdGlvbl9jbHMsIG5hbWUsIGRvbWFpbiwgY29kZSk6CisrCQkiIiJNYXAgYW5kIHJlZ2lzdGVyIHRoZSBleGNlcHRpb24gY2xhc3MgdG8gYSBEQnVzIG5hbWUuIiIiCisrCQlzZWxmLm1hcF9lcnJvcihleGNlcHRpb25fY2xzLCBuYW1lKQorKwkJcmV0dXJuIEdpby5EQnVzRXJyb3IucmVnaXN0ZXJfZXJyb3IoZG9tYWluLCBjb2RlLCBuYW1lKQorKworKwlkZWYgaXNfcmVnaXN0ZXJlZF9leGNlcHRpb24oc2VsZiwgb2JqKToKKysJCSIiIklzIHRoZSBleGNlcHRpb24gcmVnaXN0ZXJlZD8iIiIKKysJCXJldHVybiBvYmouX19jbGFzc19fIGluIHNlbGYuX3JldmVyc2VkX21hcAorKworKwlkZWYgZ2V0X2RidXNfbmFtZShzZWxmLCBvYmopOgorKwkJIiIiR2V0IHRoZSBEQnVzIG5hbWUgb2YgdGhlIGV4Y2VwdGlvbi4iIiIKKysJCXJldHVybiBzZWxmLl9yZXZlcnNlZF9tYXAuZ2V0KG9iai5fX2NsYXNzX18pCisrCisrCWRlZiBnZXRfZXhjZXB0aW9uX2NsYXNzKHNlbGYsIG5hbWUpOgorKwkJIiIiR2V0IHRoZSBleGNlcHRpb24gY2xhc3MgbWFwcGVkIHRvIHRoZSBEQnVzIG5hbWUuIiIiCisrCQlyZXR1cm4gc2VsZi5fbWFwLmdldChuYW1lLCBzZWxmLl9kZWZhdWx0KQorKworKwlkZWYgdHJhbnNmb3JtX21lc3NhZ2Uoc2VsZiwgbmFtZSwgbWVzc2FnZSk6CisrCQkiIiJUcmFuc2Zvcm0gdGhlIG1lc3NhZ2Ugb2YgdGhlIGV4Y2VwdGlvbi4iIiIKKysJCXByZWZpeCA9ICJ7fTp7fTogIi5mb3JtYXQoIkdEQnVzLkVycm9yIiwgbmFtZSkKKysKKysJCWlmIG1lc3NhZ2Uuc3RhcnRzd2l0aChwcmVmaXgpOgorKwkJCXJldHVybiBtZXNzYWdlW2xlbihwcmVmaXgpOl0KKysKKysJCXJldHVybiBtZXNzYWdlCisrCisrCWRlZiB0cmFuc2Zvcm1fZXhjZXB0aW9uKHNlbGYsIGUpOgorKwkJIiIiVHJhbnNmb3JtIHRoZSByZW1vdGUgZXJyb3IgdG8gdGhlIGV4Y2VwdGlvbi4iIiIKKysJCWlmIG5vdCBpc2luc3RhbmNlKGUsIEdMaWIuRXJyb3IpOgorKwkJCXJldHVybiBlCisrCisrCQlpZiBub3QgR2lvLkRCdXNFcnJvci5pc19yZW1vdGVfZXJyb3IoZSk6CisrCQkJcmV0dXJuIGUKKysKKysJCSMgR2V0IERCdXMgbmFtZSBvZiB0aGUgZXJyb3IuCisrCQluYW1lID0gR2lvLkRCdXNFcnJvci5nZXRfcmVtb3RlX2Vycm9yKGUpCisrCQkjIEdldCB0aGUgZXhjZXB0aW9uIGNsYXNzLgorKwkJZXhjZXB0aW9uX2NscyA9IHNlbGYuZ2V0X2V4Y2VwdGlvbl9jbGFzcyhuYW1lKQorKworKwkJIyBSZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4KKysJCWlmIG5vdCBleGNlcHRpb25fY2xzOgorKwkJCXJldHVybiBlCisrCisrCQkjIFJldHVybiBuZXcgZXhjZXB0aW9uLgorKwkJbWVzc2FnZSA9IHNlbGYudHJhbnNmb3JtX21lc3NhZ2UobmFtZSwgZS5tZXNzYWdlKQorKwkJZXhjZXB0aW9uID0gZXhjZXB0aW9uX2NscyhtZXNzYWdlKQorKwkJZXhjZXB0aW9uLmRidXNfbmFtZSA9IG5hbWUKKysJCWV4Y2VwdGlvbi5kYnVzX2RvbWFpbiA9IGUuZG9tYWluCisrCQlleGNlcHRpb24uZGJ1c19jb2RlID0gZS5jb2RlCisrCQlyZXR1cm4gZXhjZXB0aW9uCisrCisrCisrIyBEZWZhdWx0IGVycm9yIHJlZ2lzdHJhdGlvbi4KKytlcnJvcl9yZWdpc3RyYXRpb24gPSBFcnJvclJlZ2lzdHJhdGlvbigpCitkaWZmIC0tZ2l0IGEvcHlkYnVzL3Byb3h5X21ldGhvZC5weSBiL3B5ZGJ1cy9wcm94eV9tZXRob2QucHkKK2luZGV4IDRlYTQzMDQuLmU5NDk2ZjUgMTAwNjQ0CistLS0gYS9weWRidXMvcHJveHlfbWV0aG9kLnB5CisrKysgYi9weWRidXMvcHJveHlfbWV0aG9kLnB5CitAQCAtMiw2ICsyLDcgQEAgZnJvbSBnaS5yZXBvc2l0b3J5IGltcG9ydCBHTGliCisgZnJvbSAuZ2VuZXJpYyBpbXBvcnQgYm91bmRfbWV0aG9kCisgZnJvbSAuaWRlbnRpZmllciBpbXBvcnQgZmlsdGVyX2lkZW50aWZpZXIKKyBmcm9tIC50aW1lb3V0IGltcG9ydCB0aW1lb3V0X3RvX2dsaWIKKytmcm9tIC5lcnJvciBpbXBvcnQgZXJyb3JfcmVnaXN0cmF0aW9uCisgCisgdHJ5OgorIAlmcm9tIGluc3BlY3QgaW1wb3J0IFNpZ25hdHVyZSwgUGFyYW1ldGVyCitAQCAtODcsOSArODgsMjAgQEAgY2xhc3MgUHJveHlNZXRob2Qob2JqZWN0KToKKyAJCQljYWxsX2FyZ3MgKz0gKHNlbGYuX2ZpbmlzaF9hc3luY19jYWxsLCAoY2FsbGJhY2ssIGNhbGxiYWNrX2FyZ3MpKQorIAkJCWluc3RhbmNlLl9idXMuY29uLmNhbGwoKmNhbGxfYXJncykKKyAJCQlyZXR1cm4gTm9uZQorKworIAkJZWxzZToKKy0JCQlyZXQgPSBpbnN0YW5jZS5fYnVzLmNvbi5jYWxsX3N5bmMoKmNhbGxfYXJncykKKy0JCQlyZXR1cm4gc2VsZi5fdW5wYWNrX3JldHVybihyZXQpCisrCQkJcmVzdWx0ID0gTm9uZQorKwkJCWVycm9yID0gTm9uZQorKworKwkJCXRyeToKKysJCQkJcmVzdWx0ID0gaW5zdGFuY2UuX2J1cy5jb24uY2FsbF9zeW5jKCpjYWxsX2FyZ3MpCisrCQkJZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorKwkJCQllcnJvciA9IGVycm9yX3JlZ2lzdHJhdGlvbi50cmFuc2Zvcm1fZXhjZXB0aW9uKGUpCisrCisrCQkJaWYgZXJyb3I6CisrCQkJCXJhaXNlIGVycm9yCisrCisrCQkJcmV0dXJuIHNlbGYuX3VucGFja19yZXR1cm4ocmVzdWx0KQorIAorIAlkZWYgX3VucGFja19yZXR1cm4oc2VsZiwgdmFsdWVzKToKKyAJCXJldCA9IHZhbHVlcy51bnBhY2soKQorQEAgLTEwOCw3ICsxMjAsNyBAQCBjbGFzcyBQcm94eU1ldGhvZChvYmplY3QpOgorIAkJCXJldCA9IHNvdXJjZS5jYWxsX2ZpbmlzaChyZXN1bHQpCisgCQkJcmV0dXJuX2FyZ3MgPSBzZWxmLl91bnBhY2tfcmV0dXJuKHJldCkKKyAJCWV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorLQkJCWVycm9yID0gZXJyCisrCQkJZXJyb3IgPSBlcnJvcl9yZWdpc3RyYXRpb24udHJhbnNmb3JtX2V4Y2VwdGlvbihlcnIpCisgCisgCQljYWxsYmFjaywgY2FsbGJhY2tfYXJncyA9IHVzZXJfZGF0YQorIAkJY2FsbGJhY2soKmNhbGxiYWNrX2FyZ3MsIHJldHVybmVkPXJldHVybl9hcmdzLCBlcnJvcj1lcnJvcikKK2RpZmYgLS1naXQgYS9weWRidXMvcmVnaXN0cmF0aW9uLnB5IGIvcHlkYnVzL3JlZ2lzdHJhdGlvbi5weQoraW5kZXggZjUzMTUzOS4uMWQyY2JjYiAxMDA2NDQKKy0tLSBhL3B5ZGJ1cy9yZWdpc3RyYXRpb24ucHkKKysrKyBiL3B5ZGJ1cy9yZWdpc3RyYXRpb24ucHkKK0BAIC01LDYgKzUsNyBAQCBmcm9tIC4gaW1wb3J0IGdlbmVyaWMKKyBmcm9tIC5leGl0YWJsZSBpbXBvcnQgRXhpdGFibGVXaXRoQWxpYXNlcworIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCisgZnJvbSAubWV0aG9kX2NhbGxfY29udGV4dCBpbXBvcnQgTWV0aG9kQ2FsbENvbnRleHQKKytmcm9tIC5lcnJvciBpbXBvcnQgZXJyb3JfcmVnaXN0cmF0aW9uCisgaW1wb3J0IGxvZ2dpbmcKKyAKKyB0cnk6CitAQCAtOTEsMTEgKzkyLDE2IEBAIGNsYXNzIE9iamVjdFdyYXBwZXIoRXhpdGFibGVXaXRoQWxpYXNlcygidW53cmFwIikpOgorIAkJCWxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorIAkJCWxvZ2dlci5leGNlcHRpb24oIkV4Y2VwdGlvbiB3aGlsZSBoYW5kbGluZyAlcy4lcygpIiwgaW50ZXJmYWNlX25hbWUsIG1ldGhvZF9uYW1lKQorIAorLQkJCSNUT0RPIFRoaW5rIG9mIGEgYmV0dGVyIHdheSB0byB0cmFuc2xhdGUgUHl0aG9uIGV4Y2VwdGlvbiB0eXBlcyB0byBEQnVzIGVycm9yIHR5cGVzLgorLQkJCWVfdHlwZSA9IHR5cGUoZSkuX19uYW1lX18KKy0JCQlpZiBub3QgIi4iIGluIGVfdHlwZToKKy0JCQkJZV90eXBlID0gInVua25vd24uIiArIGVfdHlwZQorLQkJCWludm9jYXRpb24ucmV0dXJuX2RidXNfZXJyb3IoZV90eXBlLCBzdHIoZSkpCisrCQkJaWYgZXJyb3JfcmVnaXN0cmF0aW9uLmlzX3JlZ2lzdGVyZWRfZXhjZXB0aW9uKGUpOgorKwkJCQluYW1lID0gZXJyb3JfcmVnaXN0cmF0aW9uLmdldF9kYnVzX25hbWUoZSkKKysJCQkJaW52b2NhdGlvbi5yZXR1cm5fZGJ1c19lcnJvcihuYW1lLCBzdHIoZSkpCisrCQkJZWxzZToKKysJCQkJbG9nZ2VyLmluZm8oIm5hbWUgaXMgbm90IHJlZ2lzdGVyZWQiKQorKwkJCQllX3R5cGUgPSB0eXBlKGUpLl9fbmFtZV9fCisrCQkJCWlmIG5vdCAiLiIgaW4gZV90eXBlOgorKwkJCQkJZV90eXBlID0gInVua25vd24uIiArIGVfdHlwZQorKworKwkJCQlpbnZvY2F0aW9uLnJldHVybl9kYnVzX2Vycm9yKGVfdHlwZSwgc3RyKGUpKQorIAorIAlkZWYgR2V0KHNlbGYsIGludGVyZmFjZV9uYW1lLCBwcm9wZXJ0eV9uYW1lKToKKyAJCXR5cGUgPSBzZWxmLnJlYWRhYmxlX3Byb3BlcnRpZXNbaW50ZXJmYWNlX25hbWUgKyAiLiIgKyBwcm9wZXJ0eV9uYW1lXQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZGJ1c18wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzXzAuNi4wLmJiCmluZGV4IDdlZDFjNjMuLmFkYWE4NmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzXzAuNi4wLmJiCkBAIC0xLDIgKzEsNiBAQAogcmVxdWlyZSBweXRob24tcHlkYnVzLmluYwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVN1cHBvcnQtYXN5bmNocm9ub3VzLWNhbGxzLTU4LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLVN1cHBvcnQtdHJhbnNmb3JtYXRpb24tYmV0d2Vlbi1ELUJ1cy1lcnJvcnMtYW5kLWV4Y2UucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC41LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aWZhY2VfMC4wLjExLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5and0XzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjYuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjYuMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjYuNC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40Ljg5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjkzLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuODkuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC45My5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuNy4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy42LjEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltb25nb18zLjcuMS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTcuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTguMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xNy41LjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE4LjAuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyY2xpcF8xLjYuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS42LjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJjbGlwXzEuNi4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNC4yMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC41LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC40LjIxLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNS4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE2LjcuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE2LjcuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzZjVkNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlXzIwMTYuNy4xMC5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZS5pbmMKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBweXRob24zLXB5dGVzdCBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl80LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl8zLjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl80LjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRlbXBkaXJfMjAxNi44LjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGVtcGRpcl8yMDE2LjguMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlODIxNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRlbXBkaXJfMjAxNi44LjIwLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBweXRob24tcHl0ZXN0LXRlbXBkaXIuaW5jCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uMy1weXRlc3QgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE4LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOC41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOC40LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOC41LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5eWFtbF8zLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfMy4xMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfMy4xMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfMy4xMy5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5em1xXzE3LjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTBmNTNhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHB5dGhvbi1weXptcS5pbmMKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZmlsZV8xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtZmlsZV8xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY1Mjg3Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZpbGVfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgdHJhbnNwb3J0IGFkYXB0ZXIgZm9yIFJlcXVlc3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZGFzaGVhL3JlcXVlc3RzLWZpbGUiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05Y2M3MjhkNjA4N2U0Mzc5NjIyN2IwYTMxNDIyZGU2YiIKLQotU1JDX1VSSVttZDVzdW1dID0gImE5MDdlZmI3NWZhZjBjY2JiMTg1NzQzMmJmOWQ4YzBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1MThlN2NmZTA0OGUwNTNmZDEwMTlkZmI4OTFiNGM1NWI4NzFjNTZjNWEzMTY5M2Q3MzMyNDBjODBiOGYxOTEiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24zLXJlcXVlc3RzIFwKLSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1maWxlXzEuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1maWxlXzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MDc3NzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLWZpbGVfMS40LjMuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJGaWxlIHRyYW5zcG9ydCBhZGFwdGVyIGZvciBSZXF1ZXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2Rhc2hlYS9yZXF1ZXN0cy1maWxlIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWNjNzI4ZDYwODdlNDM3OTYyMjdiMGEzMTQyMmRlNmIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NzA3MTFjOWI3ZTBkZTEwNTdmN2I3MmE1OGI3YWI1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZjA0YWE2MjAxYmFjZGEwNTY3ZTdhYzdmNjc3ZjE0OTliMGZjNzZiMjIxNDBjNTRiYzA2ZWRmMWJhOTJlMmZhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcHl0aG9uMy1yZXF1ZXN0cyBcCisiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjE5LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4xOC40LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMTkuMS5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MGY2OWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29scworcmVxdWlyZSBweXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmtfMy4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC4yLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjYXB5XzAuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjYXB5XzAuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlN2JhZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY2FweV8wLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUGFja2V0IGNyYWZ0aW5nL3NlbmRpbmcvc25pZmZpbmcsIFBDQVAgcHJvY2Vzc2luZyB0b29sLFwKLWJhc2VkIG9uIHNjYXB5IHdpdGggcHl0aG9uMyBjb21wYXRpYmlsaXR5IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhhZXRob24vc2NhcHkiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTk1ZWE2ZWNmYzM2MGViNDdmZTZmNDcwYWQ3MzZkN2NkIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotUFlQSV9QQUNLQUdFID0gInNjYXB5LXB5dGhvbjMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NjQyZDA5Y2E3MjdlN2UyYjQ1NTIyM2FlOTQwNTliNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzYwOTkxYTY3MTYyZjQzYWY0ZDllNjQ4MjhiY2VmYzEwMGJhODg4NTliNzUxNzdhZTlmN2FjZTU2ZTU4MTg2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY2FweV8wLjI1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY2FweV8wLjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ODVhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjYXB5XzAuMjUuYmIKQEAgLTAsMCArMSwxMyBAQAorREVTQ1JJUFRJT04gPSAiUGFja2V0IGNyYWZ0aW5nL3NlbmRpbmcvc25pZmZpbmcsIFBDQVAgcHJvY2Vzc2luZyB0b29sLFwKK2Jhc2VkIG9uIHNjYXB5IHdpdGggcHl0aG9uMyBjb21wYXRpYmlsaXR5IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcGhhZXRob24vc2NhcHkiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWE0MjgyZDRkODAyMjdmYTU5OWE5OWU3N2ZkZDk1ZTcxIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUFlQSV9QQUNLQUdFID0gInNjYXB5LXB5dGhvbjMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjOTAwM2QzOWRlZjczYzAyOGNiOGM3MWJjYmI0MjYyOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWUxYjNiZDk3NTk4NDRlODMwYTZjYzNiYTExYzNmMjViMDg0MzNhOGVlM2U3ZWRkYzA4MjI0OTA1ZTVlZjJiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbXZlcl8yLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzkyNWFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIKQEAgLTAsMCArMSwyIEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zZW12ZXIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjI1LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnRfMS4yNC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjUuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMS4xNS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8yLjEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8xLjE1LjcuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMi4xLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2hfMS4xMi4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2hfMS4xMi4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTJiZDRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaF8xLjEyLjE0LmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBweXRob24tc2guaW5jCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaWpheF8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2lqYXhfMC4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlNjgzMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2lqYXhfMC4zLjIuYmIKQEAgLTAsMCArMSw0IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1zaWpheC5pbmMKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExYjA2MmY0YThiMmFhZDk1Yzg3ZTdjMDllNWRhZjVhNmIwZDBmMDhhYmY5ZWZlNWY5MWEwMDc1YzZiZTdjMGQiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjE2LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjEzLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjE2LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RldmVkb3JlXzEuMjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RldmVkb3JlXzEuMjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjU1N2YyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdGV2ZWRvcmVfMS4yOS4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc3RldmVkb3JlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzUuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b3JuYWRvXzQuNS4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvcm5hZG9fNS4xLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXN0ZWRfMTcuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE4LjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE3LjkuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2lzdGVkXzE4LjQuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVybGxpYjNfMS4yMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjIzLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMi4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4yLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjUuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16b3BlaW50ZXJmYWNlXzQuNC4zLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC41LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMS1jb21tZW50LW91dC1zZWxpbnV4LnBhdGNoCmluZGV4IDBlZTMyMDUuLmM3N2I4NmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAxLWNvbW1lbnQtb3V0LXNlbGludXgucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDEtY29tbWVudC1vdXQtc2VsaW51eC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gN2Q0ODNjMjdhYzBhMjNjYTNiYmE3ZjMyMDkxOGFmYzQwMDEzYmQ4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjQ4YTE4YmZjNDQ3ZjA3NmQ0OGFlNDE0N2Q5ODRiOGVmNTZlMzdhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNDoyNTo1MiArMDgwMAotU3ViamVjdDogW1BBVENIIDAxLzEzXSBjb21tZW50IG91dCBzZWxpbnV4CitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE2OjEzOjQwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIGNvbW1lbnQgb3V0IHNlbGludXgKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KIApAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmxpdmV0L2ZsYWdzLnB5IGIvYmxpdmV0L2ZsYWdzLnB5Ci1pbmRleCAwNjgyMmRiLi5iNTVhOTNmIDEwMDY0NAoraW5kZXggMTg0MDEyMS4uODc4OTM5MCAxMDA2NDQKIC0tLSBhL2JsaXZldC9mbGFncy5weQogKysrIGIvYmxpdmV0L2ZsYWdzLnB5CiBAQCAtMjAsNyArMjAsNyBAQApAQCAtMjQsNyArMjQsNyBAQAogIAogIAogIGNsYXNzIEZsYWdzKG9iamVjdCk6Ci1AQCAtNDksNyArNDksOCBAQCBjbGFzcyBGbGFncyhvYmplY3QpOgorQEAgLTQ3LDcgKzQ3LDggQEAgY2xhc3MgRmxhZ3Mob2JqZWN0KToKICAgICAgICAgICMKICAgICAgICAgICMgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25hbGl0eQogICAgICAgICAgIwpAQCAtMzUsMTkgKzM1LDE5IEBACiAgICAgICAgICBzZWxmLmRtcmFpZCA9IFRydWUKICAgICAgICAgIHNlbGYuaWJmdCA9IFRydWUKIGRpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5Ci1pbmRleCBlM2U3MWNlLi4wY2Y1MTg4IDEwMDY0NAoraW5kZXggNzMzNGZmNi4uMGYyYTk5NSAxMDA2NDQKIC0tLSBhL2JsaXZldC91dGlsLnB5CiArKysgYi9ibGl2ZXQvdXRpbC5weQotQEAgLTQsNyArNCw3IEBAIGltcG9ydCBnbG9iCitAQCAtMyw3ICszLDcgQEAgaW1wb3J0IGZ1bmN0b29scworIGltcG9ydCBnbG9iCiAgaW1wb3J0IGl0ZXJ0b29scwogIGltcG9ydCBvcwotIGltcG9ydCBzaHV0aWwKIC1pbXBvcnQgc2VsaW51eAogKyNpbXBvcnQgc2VsaW51eAogIGltcG9ydCBzdWJwcm9jZXNzCiAgaW1wb3J0IHJlCiAgaW1wb3J0IHN5cwotQEAgLTQzMSw2ICs0MzEsOCBAQCBkZWYgZ2V0X2Nvd19zeXNmc19wYXRoKGRldl9wYXRoLCBkZXZfc3lzZnNQYXRoKToKK0BAIC00MzAsNiArNDMwLDggQEAgZGVmIGdldF9jb3dfc3lzZnNfcGF0aChkZXZfcGF0aCwgZGV2X3N5c2ZzUGF0aCk6CiAgZGVmIG1hdGNoX3BhdGhfY29udGV4dChwYXRoKToKICAgICAgIiIiIFJldHVybiB0aGUgZGVmYXVsdCBTRUxpbnV4IGNvbnRleHQgZm9yIHRoZSBnaXZlbiBwYXRoLiAiIiIKICAgICAgY29udGV4dCA9IE5vbmUKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgdHJ5OgogICAgICAgICAgY29udGV4dCA9IHNlbGludXgubWF0Y2hwYXRoY29uKG9zLnBhdGgubm9ybXBhdGgocGF0aCksIDApWzFdCiAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci1AQCAtNDU1LDYgKzQ1Nyw4IEBAIGRlZiBzZXRfZmlsZV9jb250ZXh0KHBhdGgsIGNvbnRleHQsIHJvb3Q9Tm9uZSk6CitAQCAtNDU0LDYgKzQ1Niw4IEBAIGRlZiBzZXRfZmlsZV9jb250ZXh0KHBhdGgsIGNvbnRleHQsIHJvb3Q9Tm9uZSk6CiAgCiAgICAgICAgICAgICAgVHJ1ZSBpZiBzdWNjZXNzZnVsLCBGYWxzZSBpZiBub3QuCiAgICAgICIiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoCmluZGV4IDAxZTcxYmUuLmZlYTIyNTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAyLXJ1bl9wcm9ncmFtLXN1cHBvcnQtdGltZW91dC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMi1ydW5fcHJvZ3JhbS1zdXBwb3J0LXRpbWVvdXQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDg2NzQ0ZDQwOGI5MWFjZGNiMDg2YTAzZDc3NzlmY2RhMTUyZjJhYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU5Njk3OWVkNTgxMDkxNDFhN2ZlZTY4MGFiOTViMjcyOTZjMDIyYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDggTWF5IDIwMTcgMTQ6Mzk6NTYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xM10gcnVuX3Byb2dyYW0gc3VwcG9ydCB0aW1lb3V0CitTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIHJ1bl9wcm9ncmFtIHN1cHBvcnQgdGltZW91dAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIApAQCAtMTEsMTAgKzExLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQotaW5kZXggMGNmNTE4OC4uZDRiZDliYiAxMDA2NDQKK2luZGV4IDBmMmE5OTUuLjA1YTI1M2MgMTAwNjQ0CiAtLS0gYS9ibGl2ZXQvdXRpbC5weQogKysrIGIvYmxpdmV0L3V0aWwucHkKLUBAIC0xNTgsNiArMTU4LDMwIEBAIGNsYXNzIFBhdGgoc3RyKToKK0BAIC0xNTcsNiArMTU3LDMwIEBAIGNsYXNzIFBhdGgoc3RyKToKICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGguX19oYXNoX18oKQogIApAQCAtNDUsNyArNDUsNyBAQAogIAogIGRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhbHNlLCBiaW5hcnlfb3V0cHV0PUZhbHNlKToKICAgICAgaWYgZW52X3BydW5lIGlzIE5vbmU6Ci1AQCAtMTgwLDM2ICsyMDQsMjIgQEAgZGVmIF9ydW5fcHJvZ3JhbShhcmd2LCByb290PScvJywgc3RkaW49Tm9uZSwgZW52X3BydW5lPU5vbmUsIHN0ZGVycl90b19zdGRvdXQ9RmEKK0BAIC0xNzksMzYgKzIwMywyMiBAQCBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYQogICAgICAgICAgICAgIHN0ZGVycl9kaXIgPSBzdWJwcm9jZXNzLlNURE9VVAogICAgICAgICAgZWxzZToKICAgICAgICAgICAgICBzdGRlcnJfZGlyID0gc3VicHJvY2Vzcy5QSVBFCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwMy1zdXBwb3J0LWluZmluaXQtdGltZW91dC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoCmluZGV4IDQ4OWZiNTYuLjM4ZjA2MWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5MjMyNjVlMDRkZjU5MjBmYzk5MzkzYWEwNWY1ODQwMzJhYTFiMzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzMjU4OThmM2YyOTUxYmJkZTA3ZGE0Nzg4ODE3NWM0MjdiMTFkZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjE4OjAyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMTNdIHN1cHBvcnQgaW5maW5pdCB0aW1lb3V0CitTdWJqZWN0OiBbUEFUQ0ggMDMvMTFdIHN1cHBvcnQgaW5maW5pdCB0aW1lb3V0CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMSwxMCArMTEsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQotaW5kZXggZDRiZDliYi4uNDRhMmRhNSAxMDA2NDQKK2luZGV4IDA1YTI1M2MuLmQ2ODA0YmUgMTAwNjQ0CiAtLS0gYS9ibGl2ZXQvdXRpbC5weQogKysrIGIvYmxpdmV0L3V0aWwucHkKLUBAIC0xNTgsNiArMTU4LDcgQEAgY2xhc3MgUGF0aChzdHIpOgorQEAgLTE1Nyw2ICsxNTcsNyBAQCBjbGFzcyBQYXRoKHN0cik6CiAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoLl9faGFzaF9fKCkKICAKQEAgLTIyLDcgKzIyLDcgQEAKICBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICIiImNhbGwgc2hlbGwtY29tbWFuZCBhbmQgZWl0aGVyIHJldHVybiBpdHMgb3V0cHV0IG9yIGtpbGwgaXQKICAgICAgaWYgaXQgZG9lc24ndCBub3JtYWxseSBleGl0IHdpdGhpbiB0aW1lb3V0IHNlY29uZHMgYW5kIHJldHVybiBOb25lIiIiCi1AQCAtMTY5LDcgKzE3MCw3IEBAIGRlZiB0aW1lb3V0X2NvbW1hbmQoYXJndiwgdGltZW91dCwgKmFyZ3MsICoqa3dhcmdzKToKK0BAIC0xNjgsNyArMTY5LDcgQEAgZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgd2hpbGUgcHJvYy5wb2xsKCkgaXMgTm9uZToKICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAgICAgICAgICBvcy5raWxsKHByb2MucGlkLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZCgtMSwgb3MuV05PSEFORykKICAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIiVkIHNlY29uZHMgdGltZW91dCIgJSB0aW1lb3V0KQotQEAgLTE4Myw3ICsxODQsNyBAQCBkZWYgdGltZW91dF9jb21tYW5kKGFyZ3YsIHRpbWVvdXQsICphcmdzLCAqKmt3YXJncyk6CitAQCAtMTgyLDcgKzE4Myw3IEBAIGRlZiB0aW1lb3V0X2NvbW1hbmQoYXJndiwgdGltZW91dCwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIlJldHVybiBjb2RlOiAlZCIsIHByb2MucmV0dXJuY29kZSkKICAgICAgcmV0dXJuIChwcm9jLnJldHVybmNvZGUsIHByb2Muc3Rkb3V0LnJlYWQoKSkKICAKQEAgLTQwLDcgKzQwLDcgQEAKICAgICAgaWYgZW52X3BydW5lIGlzIE5vbmU6CiAgICAgICAgICBlbnZfcHJ1bmUgPSBbXQogIAotQEAgLTE5Miw3ICsxOTMsMTAgQEAgZGVmIF9ydW5fcHJvZ3JhbShhcmd2LCByb290PScvJywgc3RkaW49Tm9uZSwgZW52X3BydW5lPU5vbmUsIHN0ZGVycl90b19zdGRvdXQ9RmEKK0BAIC0xOTEsNyArMTkyLDEwIEBAIGRlZiBfcnVuX3Byb2dyYW0oYXJndiwgcm9vdD0nLycsIHN0ZGluPU5vbmUsIGVudl9wcnVuZT1Ob25lLCBzdGRlcnJfdG9fc3Rkb3V0PUZhCiAgICAgICAgICAgICAgb3MuY2hyb290KHJvb3QpCiAgCiAgICAgIHdpdGggcHJvZ3JhbV9sb2dfbG9jazogICMgcHlsaW50OiBkaXNhYmxlPW5vdC1jb250ZXh0LW1hbmFnZXIKQEAgLTUyLDcgKzUyLDcgQEAKICAKICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgICBlbnYudXBkYXRlKHsiTENfQUxMIjogIkMiLAotQEAgLTIwNSw3ICsyMDksNyBAQCBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYQorQEAgLTIwNCw3ICsyMDgsNyBAQCBkZWYgX3J1bl9wcm9ncmFtKGFyZ3YsIHJvb3Q9Jy8nLCBzdGRpbj1Ob25lLCBlbnZfcHJ1bmU9Tm9uZSwgc3RkZXJyX3RvX3N0ZG91dD1GYQogICAgICAgICAgZWxzZToKICAgICAgICAgICAgICBzdGRlcnJfZGlyID0gc3VicHJvY2Vzcy5QSVBFCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNC1Nb3VudC12YXItdm9sYXRpbGUtZHVyaW5nLWluc3RhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNC1Nb3VudC12YXItdm9sYXRpbGUtZHVyaW5nLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiODM3ZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDQtTW91bnQtdmFyLXZvbGF0aWxlLWR1cmluZy1pbnN0YWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBjMzk1OWJkMDA2NjVlMjRhOTU1YmJkYmVhMWVmNTU1ZTc2MzcyZjEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjI1OjE2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTNdIE1vdW50IC92YXIvdm9sYXRpbGUgZHVyaW5nIGluc3RhbGwKLQotVGhlIGluc3RhbGxlZCBzeXN0ZW0gbmVlZHMgL3Zhci92b2xhdGlsZSBjbGVhbiwgb3RoZXJ3aXNlIGl0Ci1jYXVzZWQgc3lzdGVtZCdzIGpvdXJuYWxjdGwgZmFpbGVkIHRvIHJlY29yZCBib290IGxvZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L29zaW5zdGFsbC5weSB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYmxpdmV0L29zaW5zdGFsbC5weSBiL2JsaXZldC9vc2luc3RhbGwucHkKLWluZGV4IGE0Zjk1MzUuLjYxODE5YzIgMTAwNjQ0Ci0tLS0gYS9ibGl2ZXQvb3NpbnN0YWxsLnB5Ci0rKysgYi9ibGl2ZXQvb3NpbnN0YWxsLnB5Ci1AQCAtMjk0LDYgKzI5NCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6Ci0gICAgICAgICBzZWxmLl9zeXNmcyA9IE5vbmUKLSAgICAgICAgIHNlbGYuX3Byb2MgPSBOb25lCi0gICAgICAgICBzZWxmLl9kZXZzaG0gPSBOb25lCi0rICAgICAgICBzZWxmLl92b2xhdGlsZSA9IE5vbmUKLSAgICAgICAgIHNlbGYuX3VzYiA9IE5vbmUKLSAgICAgICAgIHNlbGYuX3NlbGludXggPSBOb25lCi0gICAgICAgICBzZWxmLl9ydW4gPSBOb25lCi1AQCAtMzM1LDYgKzMzNiwxMiBAQCBjbGFzcyBGU1NldChvYmplY3QpOgotICAgICAgICAgcmV0dXJuIHNlbGYuX2RldnNobQotIAotICAgICBAcHJvcGVydHkKLSsgICAgZGVmIHZvbGF0aWxlKHNlbGYpOgotKyAgICAgICAgaWYgbm90IHNlbGYuX3ZvbGF0aWxlOgotKyAgICAgICAgICAgIHNlbGYuX3ZvbGF0aWxlID0gTm9EZXZpY2UoZm10PWdldF9mb3JtYXQoInRtcGZzIiwgZGV2aWNlPSJ0bXBmcyIsIG1vdW50cG9pbnQ9Ii92YXIvdm9sYXRpbGUiKSkKLSsgICAgICAgIHJldHVybiBzZWxmLl92b2xhdGlsZQotKwotKyAgICBAcHJvcGVydHkKLSAgICAgZGVmIHVzYihzZWxmKToKLSAgICAgICAgIGlmIG5vdCBzZWxmLl91c2I6Ci0gICAgICAgICAgICAgc2VsZi5fdXNiID0gTm9EZXZpY2UoZm10PWdldF9mb3JtYXQoInVzYmZzIiwgZGV2aWNlPSJ1c2JmcyIsIG1vdW50cG9pbnQ9Ii9wcm9jL2J1cy91c2IiKSkKLUBAIC01OTEsNiArNTk4LDcgQEAgY2xhc3MgRlNTZXQob2JqZWN0KToKLSAKLSAgICAgICAgIGRldmljZXMgPSBsaXN0KHNlbGYubW91bnRwb2ludHMudmFsdWVzKCkpICsgc2VsZi5zd2FwX2RldmljZXMKLSAgICAgICAgIGRldmljZXMuZXh0ZW5kKFtzZWxmLmRldiwgc2VsZi5kZXZzaG0sIHNlbGYuZGV2cHRzLCBzZWxmLnN5c2ZzLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jLCBzZWxmLnNlbGludXgsIHNlbGYudXNiLCBzZWxmLnJ1bl0pCi0gICAgICAgICBpZiBpc2luc3RhbmNlKF9wbGF0Zm9ybSwgRUZJKToKLSAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChzZWxmLmVmaXZhcnMpCi1AQCAtNjUwLDYgKzY1OCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6Ci0gICAgICAgICAiIiIgdW5tb3VudCBmaWxlc3lzdGVtcywgZXhjZXB0IHN3YXAgaWYgc3dhcG9mZiA9PSBGYWxzZSAiIiIKLSAgICAgICAgIGRldmljZXMgPSBsaXN0KHNlbGYubW91bnRwb2ludHMudmFsdWVzKCkpICsgc2VsZi5zd2FwX2RldmljZXMKLSAgICAgICAgIGRldmljZXMuZXh0ZW5kKFtzZWxmLmRldiwgc2VsZi5kZXZzaG0sIHNlbGYuZGV2cHRzLCBzZWxmLnN5c2ZzLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9jLCBzZWxmLnVzYiwgc2VsZi5zZWxpbnV4LCBzZWxmLnJ1bl0pCi0gICAgICAgICBpZiBpc2luc3RhbmNlKF9wbGF0Zm9ybSwgRUZJKToKLSAgICAgICAgICAgICBkZXZpY2VzLmFwcGVuZChzZWxmLmVmaXZhcnMpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA0LWZpeC1uZXcucm9vdHMtb2JqZWN0LWlzLW5vdC1pdGVyYWJsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA0LWZpeC1uZXcucm9vdHMtb2JqZWN0LWlzLW5vdC1pdGVyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTk5N2FjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDQtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYzMxZGYxYzBmNTMyM2RkYzcwZTBkMWM2ZDExZGIyZmJmN2EwMjRhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjozMDoyMCArMDgwMAorU3ViamVjdDogW1BBVENIIDA0LzExXSBmaXggbmV3LnJvb3RzIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJsaXZldC9ibGl2ZXQucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvYmxpdmV0LnB5IGIvYmxpdmV0L2JsaXZldC5weQoraW5kZXggMzQwNTgxMC4uZjQyYjczYiAxMDA2NDQKKy0tLSBhL2JsaXZldC9ibGl2ZXQucHkKKysrKyBiL2JsaXZldC9ibGl2ZXQucHkKK0BAIC0xMTk4LDcgKzExOTgsNyBAQCBjbGFzcyBCbGl2ZXQob2JqZWN0KToKKyAgICAgICAgICAgICBwID0gcGFydGl0aW9uLmRpc2suZm9ybWF0LnBhcnRlZF9kaXNrLmdldFBhcnRpdGlvbkJ5UGF0aChwYXJ0aXRpb24ucGF0aCkKKyAgICAgICAgICAgICBwYXJ0aXRpb24ucGFydGVkX3BhcnRpdGlvbiA9IHAKKyAKKy0gICAgICAgIGZvciByb290IGluIG5ldy5yb290czoKKysgICAgICAgIGZvciByb290IGluIG5ldy5yb290cyBvciBbXToKKyAgICAgICAgICAgICByb290LnN3YXBzID0gW25ldy5kZXZpY2V0cmVlLmdldF9kZXZpY2VfYnlfaWQoZC5pZCwgaGlkZGVuPVRydWUpIGZvciBkIGluIHJvb3Quc3dhcHNdCisgICAgICAgICAgICAgcm9vdC5zd2FwcyA9IFtzIGZvciBzIGluIHJvb3Quc3dhcHMgaWYgc10KKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDUtZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2I5NTAzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDUtZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBiMzBhNzQ2NzFjYTYwM2U2YmZkNTE0ZjcyZDRmZDdmZDZmY2VlZjU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyNiBBdWcgMjAxNiAwMjowMjo0OSAtMDQwMAorU3ViamVjdDogW1BBVENIIDA1LzExXSBmaXggaW5jb3JyZWN0IHRpbWVvdXQgd2hpbGUgc3lzdGVtIHRpbWUgY2hhbmdlZAorCitXaGlsZSBzeXN0ZW0gdGltZSBjaGFuZ2VkIGJ5IE5UUCwgaW52b2tpbmcgdGltZW91dF9jb21tYW5kCiticmVha3Mgd2l0aCBpbmNvcnJlY3QgdGltZW91dC4KKy0tLS0tLS0tCit8MDU6NDA6NTUsODcyIElORk8gcHJvZ3JhbTogUnVubmluZy4uLiBtb3VudCAtdCBleHQyIC1vCisgIGRlZmF1bHRzLHJvIC9kZXYvc2RhMiAvbW50L3N5c2ltYWdlCit8MDE6NDA6NTUsMDg2IERFQlVHIHByb2dyYW06IDEwIHNlY29uZHMgdGltZW91dAorLS0tLS0tLS0KKworVXNlIG51bWJlcnQgY291bnQgdG8gcmVwbGFjZSBjdXJyZW50IHRpbWUgY291bnQgY291bGQgd29ya2Fyb3VuZAordGhlIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3V0aWwucHkgfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5CitpbmRleCBkNjgwNGJlLi5iYzA4YWY1IDEwMDY0NAorLS0tIGEvYmxpdmV0L3V0aWwucHkKKysrKyBiL2JsaXZldC91dGlsLnB5CitAQCAtMTYyLDE0ICsxNjIsMTQgQEAgZGVmIHRpbWVvdXRfY29tbWFuZChhcmd2LCB0aW1lb3V0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAiIiJjYWxsIHNoZWxsLWNvbW1hbmQgYW5kIGVpdGhlciByZXR1cm4gaXRzIG91dHB1dCBvciBraWxsIGl0CisgICAgIGlmIGl0IGRvZXNuJ3Qgbm9ybWFsbHkgZXhpdCB3aXRoaW4gdGltZW91dCBzZWNvbmRzIGFuZCByZXR1cm4gTm9uZSIiIgorICAgICBpbXBvcnQgc3VicHJvY2VzcywgZGF0ZXRpbWUsIG9zLCB0aW1lLCBzaWduYWwKKy0gICAgc3RhcnQgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorKyAgICBjb3VudCA9IDAKKyAKKyAgICAgdHJ5OgorICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJndiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgd2hpbGUgcHJvYy5wb2xsKCkgaXMgTm9uZToKKyAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKy0gICAgICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorLSAgICAgICAgICAgIGlmIHRpbWVvdXQgIT0gLTEgYW5kIChub3cgLSBzdGFydCkuc2Vjb25kcz4gdGltZW91dDoKKysgICAgICAgICAgICBjb3VudCArPSAxCisrICAgICAgICAgICAgaWYgdGltZW91dCAhPSAtMSBhbmQgY291bnQgPiB0aW1lb3V0KjEwOgorICAgICAgICAgICAgICAgICBvcy5raWxsKHByb2MucGlkLCBzaWduYWwuU0lHS0lMTCkKKyAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZCgtMSwgb3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgcHJvZ3JhbV9sb2cuZGVidWcoIiVkIHNlY29uZHMgdGltZW91dCIgJSB0aW1lb3V0KQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDUtdXBkYXRlLWZzdGFiLWJ5LWFwcGVuZGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYzNDNiNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNS11cGRhdGUtZnN0YWItYnktYXBwZW5kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAzODZmZjg5OTc2M2Y4NDczZWI5M2E3YTE1NzhmYjdjYzRmODZmNjZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjI4OjEyICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTNdIHVwZGF0ZSBmc3RhYiBieSBhcHBlbmRpbmcKLQotVGhlICdzdG9yYWdlLndyaXRlKCknIGhhcyB1cGRhdGVkIGZzdGFiIGJ5IG92ZXJ3cml0aW5nCi10aGUgb3JpZ2luYWwgb25lLCB3ZSBzaG91bGQgdXBkYXRlIGZzdGFiIGJ5IGFwcGVuZGluZwotdG8ga2VlcCBvcmlnaW5hbCB0bXBmcyBwYXJ0aXRpb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBibGl2ZXQvb3NpbnN0YWxsLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmxpdmV0L29zaW5zdGFsbC5weSBiL2JsaXZldC9vc2luc3RhbGwucHkKLWluZGV4IDYxODE5YzIuLmFmYTgyZGIgMTAwNjQ0Ci0tLS0gYS9ibGl2ZXQvb3NpbnN0YWxsLnB5Ci0rKysgYi9ibGl2ZXQvb3NpbnN0YWxsLnB5Ci1AQCAtNzI4LDcgKzcyOCw3IEBAIGNsYXNzIEZTU2V0KG9iamVjdCk6Ci0gICAgICAgICAjIC9ldGMvZnN0YWIKLSAgICAgICAgIGZzdGFiX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKCIlcy9ldGMvZnN0YWIiICUgZ2V0X3N5c3Jvb3QoKSkKLSAgICAgICAgIGZzdGFiID0gc2VsZi5mc3RhYigpCi0tICAgICAgICBvcGVuKGZzdGFiX3BhdGgsICJ3Iikud3JpdGUoZnN0YWIpCi0rICAgICAgICBvcGVuKGZzdGFiX3BhdGgsICJhIikud3JpdGUoZnN0YWIpCi0gCi0gICAgICAgICAjIC9ldGMvY3J5cHR0YWIKLSAgICAgICAgIGNyeXB0dGFiX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKCIlcy9ldGMvY3J5cHR0YWIiICUgZ2V0X3N5c3Jvb3QoKSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWZmNzU0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA2LWZpeC1uZXcucm9vdHMtb2JqZWN0LWlzLW5vdC1pdGVyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gY2Q5MmVlYThmYWIzN2JhNmIwYzdmMDNkYWE1MjU1MzQzZGM3NTcxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjozMDoyMCArMDgwMAotU3ViamVjdDogW1BBVENIIDA2LzEzXSBmaXggbmV3LnJvb3RzIG9iamVjdCBpcyBub3QgaXRlcmFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJsaXZldC9ibGl2ZXQucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ibGl2ZXQvYmxpdmV0LnB5IGIvYmxpdmV0L2JsaXZldC5weQotaW5kZXggNmEzM2U5Yy4uNzlhZTkxYSAxMDA2NDQKLS0tLSBhL2JsaXZldC9ibGl2ZXQucHkKLSsrKyBiL2JsaXZldC9ibGl2ZXQucHkKLUBAIC0xNzYxLDcgKzE3NjEsNyBAQCBjbGFzcyBCbGl2ZXQob2JqZWN0KToKLSAgICAgICAgICAgICBwID0gcGFydGl0aW9uLmRpc2suZm9ybWF0LnBhcnRlZF9kaXNrLmdldFBhcnRpdGlvbkJ5UGF0aChwYXJ0aXRpb24ucGF0aCkKLSAgICAgICAgICAgICBwYXJ0aXRpb24ucGFydGVkX3BhcnRpdGlvbiA9IHAKLSAKLS0gICAgICAgIGZvciByb290IGluIG5ldy5yb290czoKLSsgICAgICAgIGZvciByb290IGluIG5ldy5yb290cyBvciBbXToKLSAgICAgICAgICAgICByb290LnN3YXBzID0gW25ldy5kZXZpY2V0cmVlLmdldF9kZXZpY2VfYnlfaWQoZC5pZCwgaGlkZGVuPVRydWUpIGZvciBkIGluIHJvb3Quc3dhcHNdCi0gICAgICAgICAgICAgcm9vdC5zd2FwcyA9IFtzIGZvciBzIGluIHJvb3Quc3dhcHMgaWYgc10KLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNi10d2Vhay1idHJmcy1wYWNrYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTU2OGE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDYtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSAwNjU5ZDhhODViY2RkNzZjMGIyM2I4YjVhZjY5NTg3ODNkMzVhYzY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDE2OjMzOjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTFdIHR3ZWFrIGJ0cmZzIHBhY2thZ2VzCisKK0luIG9lLWNyZS95b2N0bywgd2UgbmFtZSBidHJmcyBwYWNrYWdlIHdpdGggYnRyZnMtdG9vbHMsCityYXRoZXIgdGhhbiBidHJmcy1wcm9ncy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L2RldmljZXMvYnRyZnMucHkgfCAyICstCisgYmxpdmV0L2Zvcm1hdHMvZnMucHkgICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvZGV2aWNlcy9idHJmcy5weSBiL2JsaXZldC9kZXZpY2VzL2J0cmZzLnB5CitpbmRleCBjYWRhOTQwLi43ZTRkNGI4IDEwMDY0NAorLS0tIGEvYmxpdmV0L2RldmljZXMvYnRyZnMucHkKKysrKyBiL2JsaXZldC9kZXZpY2VzL2J0cmZzLnB5CitAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBCVFJGU0RldmljZShTdG9yYWdlRGV2aWNlKToKKyAKKyAgICAgIiIiIEJhc2UgY2xhc3MgZm9yIEJUUkZTIHZvbHVtZSBhbmQgc3ViLXZvbHVtZSBkZXZpY2VzLiAiIiIKKyAgICAgX3R5cGUgPSAiYnRyZnMiCistICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtcHJvZ3MiXQorKyAgICBfcGFja2FnZXMgPSBbImJ0cmZzLXRvb2xzIl0KKyAgICAgX2V4dGVybmFsX2RlcGVuZGVuY2llcyA9IFthdmFpbGFiaWxpdHkuQkxPQ0tERVZfQlRSRlNfUExVR0lOXQorIAorICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKK2RpZmYgLS1naXQgYS9ibGl2ZXQvZm9ybWF0cy9mcy5weSBiL2JsaXZldC9mb3JtYXRzL2ZzLnB5CitpbmRleCA4MWUzNjdmLi41NWU1ZDU3IDEwMDY0NAorLS0tIGEvYmxpdmV0L2Zvcm1hdHMvZnMucHkKKysrKyBiL2JsaXZldC9mb3JtYXRzL2ZzLnB5CitAQCAtOTI2LDcgKzkyNiw3IEBAIGNsYXNzIEJUUkZTKEZTKToKKyAgICAgX2Zvcm1hdHRhYmxlID0gVHJ1ZQorICAgICBfbGludXhfbmF0aXZlID0gVHJ1ZQorICAgICBfc3VwcG9ydGVkID0gVHJ1ZQorLSAgICBfcGFja2FnZXMgPSBbImJ0cmZzLXByb2dzIl0KKysgICAgX3BhY2thZ2VzID0gWyJidHJmcy10b29scyJdCisgICAgIF9taW5fc2l6ZSA9IFNpemUoIjI1NiBNaUIiKQorICAgICBfbWF4X3NpemUgPSBTaXplKCIxNiBFaUIiKQorICAgICBfbWtmc19jbGFzcyA9IGZzbWtmcy5CVFJGU01rZnMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDctZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMmQ4Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNzhlZTJiOTA5MGY5NDAwY2NjNGY3MzBlNjc0ZjVhZTk3Mjc0MGNjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjYgQXVnIDIwMTYgMDI6MDI6NDkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xM10gZml4IGluY29ycmVjdCB0aW1lb3V0IHdoaWxlIHN5c3RlbSB0aW1lIGNoYW5nZWQKLQotV2hpbGUgc3lzdGVtIHRpbWUgY2hhbmdlZCBieSBOVFAsIGludm9raW5nIHRpbWVvdXRfY29tbWFuZAotYnJlYWtzIHdpdGggaW5jb3JyZWN0IHRpbWVvdXQuCi0tLS0tLS0tLQotfDA1OjQwOjU1LDg3MiBJTkZPIHByb2dyYW06IFJ1bm5pbmcuLi4gbW91bnQgLXQgZXh0MiAtbwotICBkZWZhdWx0cyxybyAvZGV2L3NkYTIgL21udC9zeXNpbWFnZQotfDAxOjQwOjU1LDA4NiBERUJVRyBwcm9ncmFtOiAxMCBzZWNvbmRzIHRpbWVvdXQKLS0tLS0tLS0tCi0KLVVzZSBudW1iZXJ0IGNvdW50IHRvIHJlcGxhY2UgY3VycmVudCB0aW1lIGNvdW50IGNvdWxkIHdvcmthcm91bmQKLXRoZSBpc3N1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJsaXZldC91dGlsLnB5IHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmxpdmV0L3V0aWwucHkgYi9ibGl2ZXQvdXRpbC5weQotaW5kZXggNDRhMmRhNS4uYjNjNDVhYyAxMDA2NDQKLS0tLSBhL2JsaXZldC91dGlsLnB5Ci0rKysgYi9ibGl2ZXQvdXRpbC5weQotQEAgLTE2MywxNCArMTYzLDE0IEBAIGRlZiB0aW1lb3V0X2NvbW1hbmQoYXJndiwgdGltZW91dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgIiIiY2FsbCBzaGVsbC1jb21tYW5kIGFuZCBlaXRoZXIgcmV0dXJuIGl0cyBvdXRwdXQgb3Iga2lsbCBpdAotICAgICBpZiBpdCBkb2Vzbid0IG5vcm1hbGx5IGV4aXQgd2l0aGluIHRpbWVvdXQgc2Vjb25kcyBhbmQgcmV0dXJuIE5vbmUiIiIKLSAgICAgaW1wb3J0IHN1YnByb2Nlc3MsIGRhdGV0aW1lLCBvcywgdGltZSwgc2lnbmFsCi0tICAgIHN0YXJ0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKLSsgICAgY291bnQgPSAwCi0gCi0gICAgIHRyeToKLSAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3YsICphcmdzLCAqKmt3YXJncykKLSAgICAgICAgIHdoaWxlIHByb2MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0tICAgICAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKLS0gICAgICAgICAgICBpZiB0aW1lb3V0ICE9IC0xIGFuZCAobm93IC0gc3RhcnQpLnNlY29uZHM+IHRpbWVvdXQ6Ci0rICAgICAgICAgICAgY291bnQgKz0gMQotKyAgICAgICAgICAgIGlmIHRpbWVvdXQgIT0gLTEgYW5kIGNvdW50ID4gdGltZW91dCoxMDoKLSAgICAgICAgICAgICAgICAgb3Mua2lsbChwcm9jLnBpZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoLTEsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICAgICAgIHByb2dyYW1fbG9nLmRlYnVnKCIlZCBzZWNvbmRzIHRpbWVvdXQiICUgdGltZW91dCkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDctaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDctaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMDEyMTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwNy1pbnZva2luZy1tb3VudC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5YzdhMTUzMTIyNTk4NTRmMTIxMzdhMzAyMjllNTJjMzBmYjdjNzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzMSBBdWcgMjAxNiAyMTozMDozMiAtMDQwMAorU3ViamVjdDogW1BBVENIIDA3LzExXSBpbnZva2luZyBtb3VudCB3aXRoIGluZmluaXRlIHRpbWVvdXQKKworVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAorbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3V0aWwucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5CitpbmRleCBiYzA4YWY1Li5iNjcyNzg3IDEwMDY0NAorLS0tIGEvYmxpdmV0L3V0aWwucHkKKysrKyBiL2JsaXZldC91dGlsLnB5CitAQCAtMjU2LDcgKzI1Niw3IEBAIGRlZiBtb3VudChkZXZpY2UsIG1vdW50cG9pbnQsIGZzdHlwZSwgb3B0aW9ucz1Ob25lKToKKyAKKyAgICAgYXJndiA9IFsibW91bnQiLCAiLXQiLCBmc3R5cGUsICItbyIsIG9wdGlvbnMsIGRldmljZSwgbW91bnRwb2ludF0KKyAgICAgdHJ5OgorLSAgICAgICAgcmMgPSBydW5fcHJvZ3JhbShhcmd2KQorKyAgICAgICAgcmMgPSBydW5fcHJvZ3JhbShhcmd2LCB0aW1lb3V0PS0xKQorICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIHJhaXNlCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA4LXR3ZWFrLWJ0cmZzLXBhY2thZ2VzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDgtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMTMzNmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDgtdHdlYWstYnRyZnMtcGFja2FnZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDZmNjYxYTUxMWVlYTA5NmMwNzM4ODhjN2FkYjgzNmE5YTg4MGI0NzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDggTWF5IDIwMTcgMTY6MzM6MTUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xM10gdHdlYWsgYnRyZnMgcGFja2FnZXMKLQotSW4gb2UtY3JlL3lvY3RvLCB3ZSBuYW1lIGJ0cmZzIHBhY2thZ2Ugd2l0aCBidHJmcy10b29scywKLXJhdGhlciB0aGFuIGJ0cmZzLXByb2dzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBibGl2ZXQvZGV2aWNlcy9idHJmcy5weSB8IDIgKy0KLSBibGl2ZXQvZm9ybWF0cy9mcy5weSAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JsaXZldC9kZXZpY2VzL2J0cmZzLnB5IGIvYmxpdmV0L2RldmljZXMvYnRyZnMucHkKLWluZGV4IGM1Y2IyMWYuLjlkNDE3YjIgMTAwNjQ0Ci0tLS0gYS9ibGl2ZXQvZGV2aWNlcy9idHJmcy5weQotKysrIGIvYmxpdmV0L2RldmljZXMvYnRyZnMucHkKLUBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIEJUUkZTRGV2aWNlKFN0b3JhZ2VEZXZpY2UpOgotIAotICAgICAiIiIgQmFzZSBjbGFzcyBmb3IgQlRSRlMgdm9sdW1lIGFuZCBzdWItdm9sdW1lIGRldmljZXMuICIiIgotICAgICBfdHlwZSA9ICJidHJmcyIKLS0gICAgX3BhY2thZ2VzID0gWyJidHJmcy1wcm9ncyJdCi0rICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtdG9vbHMiXQotICAgICBfZXh0ZXJuYWxfZGVwZW5kZW5jaWVzID0gW2F2YWlsYWJpbGl0eS5CTE9DS0RFVl9CVFJGU19QTFVHSU5dCi0gCi0gICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotZGlmZiAtLWdpdCBhL2JsaXZldC9mb3JtYXRzL2ZzLnB5IGIvYmxpdmV0L2Zvcm1hdHMvZnMucHkKLWluZGV4IGE0OTgyNmYuLmU4ZjIxNmQgMTAwNjQ0Ci0tLS0gYS9ibGl2ZXQvZm9ybWF0cy9mcy5weQotKysrIGIvYmxpdmV0L2Zvcm1hdHMvZnMucHkKLUBAIC05MTgsNyArOTE4LDcgQEAgY2xhc3MgQlRSRlMoRlMpOgotICAgICBfZm9ybWF0dGFibGUgPSBUcnVlCi0gICAgIF9saW51eF9uYXRpdmUgPSBUcnVlCi0gICAgIF9zdXBwb3J0ZWQgPSBUcnVlCi0tICAgIF9wYWNrYWdlcyA9IFsiYnRyZnMtcHJvZ3MiXQotKyAgICBfcGFja2FnZXMgPSBbImJ0cmZzLXRvb2xzIl0KLSAgICAgX21pbl9zaXplID0gU2l6ZSgiMjU2IE1pQiIpCi0gICAgIF9tYXhfc2l6ZSA9IFNpemUoIjE2IEVpQiIpCi0gICAgIF9ta2ZzX2NsYXNzID0gZnNta2ZzLkJUUkZTTWtmcwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOC11c2Utb2UtdmFyaWFibGUtdG8tcmVwbGFjZS1oYXJkY29kZWQtZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDgtdXNlLW9lLXZhcmlhYmxlLXRvLXJlcGxhY2UtaGFyZGNvZGVkLWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWI1NjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDgtdXNlLW9lLXZhcmlhYmxlLXRvLXJlcGxhY2UtaGFyZGNvZGVkLWRpci5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDdmNTdiMmNkMTQ1ZDY3YzIwYmViMDJkNTQ5NWI1MDJmN2FmMDEyY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDggTWF5IDIwMTcgMDM6NTQ6MTIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xMV0gdXNlIG9lIHZhcmlhYmxlIHRvIHJlcGxhY2UgaGFyZGNvZGVkIGRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXAucHkgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDdlZGFiMmMuLjliZTMxODcgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC02MSwxMCArNjEsMTAgQEAgY2xhc3MgYmxpdmV0X3NkaXN0KHNkaXN0KToKKyAKKyAKKyBkYXRhX2ZpbGVzID0gWworLSAgICAoJy9ldGMvZGJ1cy0xL3N5c3RlbS5kJywgWydkYnVzL2JsaXZldC5jb25mJ10pLAorLSAgICAoJy91c3Ivc2hhcmUvZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcycsIFsnZGJ1cy9jb20ucmVkaGF0LkJsaXZldDEuc2VydmljZSddKSwKKy0gICAgKCcvdXNyL2xpYmV4ZWMnLCBbJ2RidXMvYmxpdmV0ZCddKSwKKy0gICAgKCcvdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbScsIFsnZGJ1cy9ibGl2ZXQuc2VydmljZSddKQorKyAgICAob3MuZW52aXJvbi5nZXQoJ3N5c2NvbmZkaXInKSsnL2RidXMtMS9zeXN0ZW0uZCcsIFsnZGJ1cy9ibGl2ZXQuY29uZiddKSwKKysgICAgKG9zLmVudmlyb24uZ2V0KCdkYXRhZGlyJykrJy9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzJywgWydkYnVzL2NvbS5yZWRoYXQuQmxpdmV0MS5zZXJ2aWNlJ10pLAorKyAgICAob3MuZW52aXJvbi5nZXQoJ2xpYmV4ZWNkaXInKSwgWydkYnVzL2JsaXZldGQnXSksCisrICAgIChvcy5lbnZpcm9uLmdldCgnc3lzdGVtZF9zeXN0ZW1fdW5pdGRpcicpLCBbJ2RidXMvYmxpdmV0LnNlcnZpY2UnXSkKKyBdCisgCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA5LWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDktaW52b2tpbmctZnNjay13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBkMmQzZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDA5LWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYzc1NzY2NmY0MmY1NDNiYWVlZDVkZjYxMjY5Nzk4YzA4NTY2NWQ5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMSBKdW4gMjAxNyAxNjowNToyNyArMDgwMAorU3ViamVjdDogW1BBVENIIDA5LzExXSBpbnZva2luZyBmc2NrIHdpdGggaW5maW5pdGUgdGltZW91dAorCitUaGlzIGxhcmdlIHRpbWVvdXQgaXMgbmVlZGVkIHdoZW4gcnVubmluZyBvbiBtYWNoaW5lcyB3aXRoCitsb3RzIG9mIGRpc2tzLCBvciB3aXRoIHNsb3cgZGlza3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvdGFza3MvZnNjay5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC90YXNrcy9mc2NrLnB5IGIvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKK2luZGV4IDUyNzRmMTMuLjZlMDc0YzQgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdGFza3MvZnNjay5weQorKysrIGIvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKK0BAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIEZTQ0sodGFzay5CYXNpY0FwcGxpY2F0aW9uLCBmc3Rhc2suRlNUYXNrKToKKyAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKCJcbiIuam9pbihlcnJvcl9tc2dzKSkKKyAKKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICByYyA9IHV0aWwucnVuX3Byb2dyYW0oc2VsZi5fZnNja19jb21tYW5kKQorKyAgICAgICAgICAgIHJjID0gdXRpbC5ydW5fcHJvZ3JhbShzZWxmLl9mc2NrX2NvbW1hbmQsIHRpbWVvdXQ9LTEpCisgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIEZTRXJyb3IoImZpbGVzeXN0ZW0gY2hlY2sgZmFpbGVkOiAlcyIgJSBlKQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOS1pbnZva2luZy1tb3VudC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAwOS1pbnZva2luZy1tb3VudC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMDg0YjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMDktaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBhNmFjMjE1N2VlNjc5MzMwMmUyM2RkYmM1ZTNiMjQ5ZmE3ZGE1YjdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAzMSBBdWcgMjAxNiAyMTozMDozMiAtMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzEzXSBpbnZva2luZyBtb3VudCB3aXRoIGluZmluaXRlIHRpbWVvdXQKLQotVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAotbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L3V0aWwucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ibGl2ZXQvdXRpbC5weSBiL2JsaXZldC91dGlsLnB5Ci1pbmRleCBiM2M0NWFjLi45ZjAyYjE4IDEwMDY0NAotLS0tIGEvYmxpdmV0L3V0aWwucHkKLSsrKyBiL2JsaXZldC91dGlsLnB5Ci1AQCAtMjU3LDcgKzI1Nyw3IEBAIGRlZiBtb3VudChkZXZpY2UsIG1vdW50cG9pbnQsIGZzdHlwZSwgb3B0aW9ucz1Ob25lKToKLSAKLSAgICAgYXJndiA9IFsibW91bnQiLCAiLXQiLCBmc3R5cGUsICItbyIsIG9wdGlvbnMsIGRldmljZSwgbW91bnRwb2ludF0KLSAgICAgdHJ5OgotLSAgICAgICAgcmMgPSBydW5fcHJvZ3JhbShhcmd2KQotKyAgICAgICAgcmMgPSBydW5fcHJvZ3JhbShhcmd2LCB0aW1lb3V0PS0xKQotICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgIHJhaXNlCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLWludm9raW5nLW1rZnMtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTAtaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmNDUwMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLWludm9raW5nLW1rZnMtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNDJkOGU1N2M3NDg5NTEwOTg1MzRiZjdmNTJjNGViYzc5MGVmNjZlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMTU6NDM6MDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMV0gaW52b2tpbmcgbWtmcyB3aXRoIGluZmluaXRlIHRpbWVvdXQKKworVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAorbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC90YXNrcy9mc21rZnMucHkgYi9ibGl2ZXQvdGFza3MvZnNta2ZzLnB5CitpbmRleCBhZDE2NmFhLi43YmY1MDc1IDEwMDY0NAorLS0tIGEvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weQorKysrIGIvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weQorQEAgLTE3MCw3ICsxNzAsNyBAQCBjbGFzcyBGU01rZnModGFzay5CYXNpY0FwcGxpY2F0aW9uLCBGU01rZnNUYXNrKToKKyAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIFtdCisgICAgICAgICBjbWQgPSBzZWxmLl9ta2ZzX2NvbW1hbmQob3B0aW9ucywgbGFiZWwsIHNldF91dWlkKQorICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHJldCA9IHV0aWwucnVuX3Byb2dyYW0oY21kKQorKyAgICAgICAgICAgIHJldCA9IHV0aWwucnVuX3Byb2dyYW0oY21kLCB0aW1lb3V0PS0xKQorICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKGUpCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMC11c2Utb2UtdmFyaWFibGUtdG8tcmVwbGFjZS1oYXJkY29kZWQtZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWQ4ZmFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEwLXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGUwNzEzM2RiY2YzYzUyZTFkZGQyZjEyNzk3ZGNkMTYxNDUyNjkyNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDggTWF5IDIwMTcgMDM6NTQ6MTIgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xM10gdXNlIG9lIHZhcmlhYmxlIHRvIHJlcGxhY2UgaGFyZGNvZGVkIGRpcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDRkMDZhMzMuLmE5OTRkMDYgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC02MSwxMCArNjEsMTAgQEAgY2xhc3MgYmxpdmV0X3NkaXN0KHNkaXN0KToKLSAKLSAKLSBkYXRhX2ZpbGVzID0gWwotLSAgICAoJy9ldGMvZGJ1cy0xL3N5c3RlbS5kJywgWydkYnVzL2JsaXZldC5jb25mJ10pLAotLSAgICAoJy91c3Ivc2hhcmUvZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcycsIFsnZGJ1cy9jb20ucmVkaGF0LkJsaXZldDEuc2VydmljZSddKSwKLS0gICAgKCcvdXNyL2xpYmV4ZWMnLCBbJ2RidXMvYmxpdmV0ZCddKSwKLS0gICAgKCcvdXNyL2xpYi9zeXN0ZW1kL3N5c3RlbScsIFsnZGJ1cy9ibGl2ZXQuc2VydmljZSddKQotKyAgICAob3MuZW52aXJvbi5nZXQoJ3N5c2NvbmZkaXInKSsnL2RidXMtMS9zeXN0ZW0uZCcsIFsnZGJ1cy9ibGl2ZXQuY29uZiddKSwKLSsgICAgKG9zLmVudmlyb24uZ2V0KCdkYXRhZGlyJykrJy9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzJywgWydkYnVzL2NvbS5yZWRoYXQuQmxpdmV0MS5zZXJ2aWNlJ10pLAotKyAgICAob3MuZW52aXJvbi5nZXQoJ2xpYmV4ZWNkaXInKSwgWydkYnVzL2JsaXZldGQnXSksCi0rICAgIChvcy5lbnZpcm9uLmdldCgnc3lzdGVtZF9zeXN0ZW1fdW5pdGRpcicpLCBbJ2RidXMvYmxpdmV0LnNlcnZpY2UnXSkKLSBdCi0gCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWRkLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWRkLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjRjZTBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTEtaW52b2tpbmctZGQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTQ3NTNiM2NiYmQ1YWVlNTlkYzUzZWIxNjU2NGNhZmQ5ODYyNzYzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgNiBNYXIgMjAxOCAxNzoyODo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDExLzExXSBpbnZva2luZyBkZCB3aXRoIGluZmluaXRlIHRpbWVvdXQKKworVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAorbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5IGIvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5CitpbmRleCA0N2ZmNTQ3Li4wY2QxNjE0IDEwMDY0NAorLS0tIGEvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5CisrKysgYi9ibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkKK0BAIC02MjEsNyArNjIxLDcgQEAgY2xhc3MgUGFydGl0aW9uRGV2aWNlKFN0b3JhZ2VEZXZpY2UpOgorICAgICAgICAgY21kID0gWyJkZCIsICJpZj0vZGV2L3plcm8iLCAib2Y9JXMiICUgZGV2aWNlLCAiYnM9JWQiICUgYnMsCisgICAgICAgICAgICAgICAgInNlZWs9JWQiICUgc3RhcnQsICJjb3VudD0lZCIgJSBjb3VudF0KKyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICB1dGlsLnJ1bl9wcm9ncmFtKGNtZCkKKysgICAgICAgICAgICB1dGlsLnJ1bl9wcm9ncmFtKGNtZCwgdGltZW91dD0tMSkKKyAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgbG9nLmVycm9yKHN0cihlKSkKKyAgICAgICAgIGZpbmFsbHk6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTEtaW52b2tpbmctZnNjay13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MWZlMDEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTEtaW52b2tpbmctZnNjay13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGU5YWI0Mzc2YTE4Y2MxYmQ0MTNjMDAwYjAzNjMyMDgzM2VlYzgwZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEgSnVuIDIwMTcgMTY6MDU6MjcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xM10gaW52b2tpbmcgZnNjayB3aXRoIGluZmluaXRlIHRpbWVvdXQKLQotVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAotbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L3Rhc2tzL2ZzY2sucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ibGl2ZXQvdGFza3MvZnNjay5weSBiL2JsaXZldC90YXNrcy9mc2NrLnB5Ci1pbmRleCBjNDIxNGRjLi5lMTNhYzZiIDEwMDY0NAotLS0tIGEvYmxpdmV0L3Rhc2tzL2ZzY2sucHkKLSsrKyBiL2JsaXZldC90YXNrcy9mc2NrLnB5Ci1AQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBGU0NLKHRhc2suQmFzaWNBcHBsaWNhdGlvbiwgZnN0YXNrLkZTVGFzayk6Ci0gICAgICAgICAgICAgcmFpc2UgRlNFcnJvcigiXG4iLmpvaW4oZXJyb3JfbXNncykpCi0gCi0gICAgICAgICB0cnk6Ci0tICAgICAgICAgICAgcmMgPSB1dGlsLnJ1bl9wcm9ncmFtKHNlbGYuX2ZzY2tfY29tbWFuZCkKLSsgICAgICAgICAgICByYyA9IHV0aWwucnVuX3Byb2dyYW0oc2VsZi5fZnNja19jb21tYW5kLCB0aW1lb3V0PS0xKQotICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKCJmaWxlc3lzdGVtIGNoZWNrIGZhaWxlZDogJXMiICUgZSkKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTItaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNiZGJlOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMi1pbnZva2luZy1ta2ZzLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gOWY1YTA0ODE4MWNmMjlkMjQxZDk2ODE0ZTczNmI4MjM1YjNkNDJiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTYgSnVuIDIwMTcgMTU6NDM6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8xM10gaW52b2tpbmcgbWtmcyB3aXRoIGluZmluaXRlIHRpbWVvdXQKLQotVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAotbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JsaXZldC90YXNrcy9mc21rZnMucHkgYi9ibGl2ZXQvdGFza3MvZnNta2ZzLnB5Ci1pbmRleCBhZDE2NmFhLi43YmY1MDc1IDEwMDY0NAotLS0tIGEvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weQotKysrIGIvYmxpdmV0L3Rhc2tzL2ZzbWtmcy5weQotQEAgLTE3MCw3ICsxNzAsNyBAQCBjbGFzcyBGU01rZnModGFzay5CYXNpY0FwcGxpY2F0aW9uLCBGU01rZnNUYXNrKToKLSAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIG9yIFtdCi0gICAgICAgICBjbWQgPSBzZWxmLl9ta2ZzX2NvbW1hbmQob3B0aW9ucywgbGFiZWwsIHNldF91dWlkKQotICAgICAgICAgdHJ5OgotLSAgICAgICAgICAgIHJldCA9IHV0aWwucnVuX3Byb2dyYW0oY21kKQotKyAgICAgICAgICAgIHJldCA9IHV0aWwucnVuX3Byb2dyYW0oY21kLCB0aW1lb3V0PS0xKQotICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICByYWlzZSBGU0Vycm9yKGUpCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEyLXJlbW92ZS1kbXJhaWQtZGVwZW5kZW5jeS1jaGVjay5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDEyLXJlbW92ZS1kbXJhaWQtZGVwZW5kZW5jeS1jaGVjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZlM2ZmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTItcmVtb3ZlLWRtcmFpZC1kZXBlbmRlbmN5LWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNDQ3NmU4NDZhMWU2NGRkZTE3ZGYyZTIzNzBjODAzY2U2OTU1MTRmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgNiBBdWcgMjAxOCAxNzoxODoyNyArMDgwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmUgZG1yYWlkIGRlcGVuZGVuY3kgY2hlY2sKKworT0UgZG9lcyBub3Qgc3VwcG9ydCBkbXJhaWQsIHJlbW92ZSBpdCBmcm9tIGRlcGVuZGVuY3kgY2hlY2sKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmxpdmV0L3Rhc2tzL2F2YWlsYWJpbGl0eS5weSB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmxpdmV0L3Rhc2tzL2F2YWlsYWJpbGl0eS5weSBiL2JsaXZldC90YXNrcy9hdmFpbGFiaWxpdHkucHkKK2luZGV4IDlhODdjZmQuLjg0M2NmNmEgMTAwNjQ0CistLS0gYS9ibGl2ZXQvdGFza3MvYXZhaWxhYmlsaXR5LnB5CisrKysgYi9ibGl2ZXQvdGFza3MvYXZhaWxhYmlsaXR5LnB5CitAQCAtMzE2LDggKzMxNiw3IEBAIEJMT0NLREVWX0RNX0FMTF9NT0RFUyA9IChibG9ja2Rldi5ETVRlY2hNb2RlLkNSRUFURV9BQ1RJVkFURSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZGV2LkRNVGVjaE1vZGUuUVVFUlkpCisgQkxPQ0tERVZfRE0gPSBCbG9ja0RldlRlY2hJbmZvKHBsdWdpbl9uYW1lPSJkbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZuPWJsb2NrZGV2LmRtX2lzX3RlY2hfYXZhaWwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlY2hub2xvZ2llcz17YmxvY2tkZXYuRE1UZWNoLk1BUDogQkxPQ0tERVZfRE1fQUxMX01PREVTLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrZGV2LkRNVGVjaC5SQUlEOiBCTE9DS0RFVl9ETV9BTExfTU9ERVN9KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWNobm9sb2dpZXM9e2Jsb2NrZGV2LkRNVGVjaC5NQVA6IEJMT0NLREVWX0RNX0FMTF9NT0RFU30pCisgQkxPQ0tERVZfRE1fVEVDSCA9IEJsb2NrRGV2TWV0aG9kKEJMT0NLREVWX0RNKQorIAorICMgbGliYmxvY2tkZXYgbG9vcCBwbHVnaW4gcmVxdWlyZWQgdGVjaG5vbG9naWVzIGFuZCBtb2RlcworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZGY0Y2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTMtUmV2ZXJ0LUFkYXB0LXRvLWxvZ2dpbmctbW9kdWxlLW5hbWUtY2hhbmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBiZmRhZjc5YTIxMDlhYzZhZWQ0MDhmMGM5NGY2OTc2Njk5MWU2MGUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNyBKdWwgMjAxNyAxNDozNDozMCArMDgwMAotU3ViamVjdDogW1BBVENIIDEzLzEzXSBSZXZlcnQgIkFkYXB0IHRvIGxvZ2dpbmcgbW9kdWxlIG5hbWUgY2hhbmdlIgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljLCBzeW5jIHdpdGggYW5hY29uZGEgZjI2LXJlbGVhc2VdCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYzM2N2Q2MmE1MTZlNTQxYWQyODYzNmM4MjU5MzIxZjFjNTM0MTdjZS4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L19faW5pdF9fLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmxpdmV0L19faW5pdF9fLnB5IGIvYmxpdmV0L19faW5pdF9fLnB5Ci1pbmRleCA0OTI3N2NiLi5hMDFlNDg3IDEwMDY0NAotLS0tIGEvYmxpdmV0L19faW5pdF9fLnB5Ci0rKysgYi9ibGl2ZXQvX19pbml0X18ucHkKLUBAIC0xMjQsNyArMTI0LDcgQEAgZGVmIGVuYWJsZV9pbnN0YWxsZXJfbW9kZSgpOgotICAgICAgICAgZnJvbSBweWFuYWNvbmRhLmNvbnN0YW50cyBpbXBvcnQgUk9PVF9QQVRIICAjIHB5bGludDogZGlzYWJsZT1yZWRlZmluZWQtb3V0ZXItbmFtZSxuby1uYW1lLWluLW1vZHVsZQotICAgICAgICAgX3N0b3JhZ2Vfcm9vdCA9IF9zeXNyb290ID0gUk9PVF9QQVRICi0gCi0tICAgIGZyb20gcHlhbmFjb25kYS5hbmFjb25kYV9sb2dnaW5nIGltcG9ydCBwcm9ncmFtX2xvZ19sb2NrCi0rICAgIGZyb20gcHlhbmFjb25kYS5hbmFjb25kYV9sb2cgaW1wb3J0IHByb2dyYW1fbG9nX2xvY2sKLSAgICAgdXRpbC5wcm9ncmFtX2xvZ19sb2NrID0gcHJvZ3JhbV9sb2dfbG9jawotIAotICAgICBmbGFncy5pbnN0YWxsZXJfbW9kZSA9IFRydWUKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTMtYWRkLVoteS1hbmQteS10by1sdm0ucHZjcmVhdGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXQvMDAxMy1hZGQtWi15LWFuZC15LXRvLWx2bS5wdmNyZWF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2I1ZjUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTMtYWRkLVoteS1hbmQteS10by1sdm0ucHZjcmVhdGUucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBiZGRiZmE0OTlkZjE2YjEwOGYyZDg5MmVlNDhkNjU2MTc1MjNjMzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA5IEF1ZyAyMDE4IDExOjAwOjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFkZCBgLVogeScgYW5kIGAteScgdG8gbHZtLnB2Y3JlYXRlCisKK1doaWxlIHJlaW5zdGFsbCBhIGNyeXB0IGZzLCBpdCBvY2Nhc2lvbmFsbHkgZmFpbGVkCitbc25pcF0KK3xnaS5vdmVycmlkZXMuQmxvY2tEZXYuTFZNRXJyb3I6IFByb2Nlc3MgcmVwb3J0ZWQgZXhpdCBjb2RlIDU6CitXQVJOSU5HOiBhdGFyaSBzaWduYXR1cmUgZGV0ZWN0ZWQgb24gL2Rldi9tYXBwZXIvbHVrcy0wZTVmODkxYworLTc3MDEtNDhiYy1hNDFlLThkNjI2YjZlZjk1MyBhdCBvZmZzZXQgNDY2LiBXaXBlIGl0PyBbeS9uXToKK1tzbmlwXQorCitBZGQgYC1aIHknIGFuZCBgLXknIHRvIGx2bS5wdmNyZWF0ZQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3N0b3JhZ2VkLXByb2plY3QvYmxpdmV0L3B1bGwvNzE0XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBibGl2ZXQvZm9ybWF0cy9sdm1wdi5weSB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JsaXZldC9mb3JtYXRzL2x2bXB2LnB5IGIvYmxpdmV0L2Zvcm1hdHMvbHZtcHYucHkKK2luZGV4IDI2MGNjMGIuLjRiYmI0NmYgMTAwNjQ0CistLS0gYS9ibGl2ZXQvZm9ybWF0cy9sdm1wdi5weQorKysrIGIvYmxpdmV0L2Zvcm1hdHMvbHZtcHYucHkKK0BAIC0xMjAsOSArMTIwLDkgQEAgY2xhc3MgTFZNUGh5c2ljYWxWb2x1bWUoRGV2aWNlRm9ybWF0KToKKyAgICAgICAgIGxvZ19tZXRob2RfY2FsbChzZWxmLCBkZXZpY2U9c2VsZi5kZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1zZWxmLnR5cGUsIHN0YXR1cz1zZWxmLnN0YXR1cykKKyAKKy0gICAgICAgICMgQ29uc2lkZXIgdXNlIG9mIC1afC0temVybworLSAgICAgICAgIyAtZnwtLWZvcmNlIG9yIC15fC0teWVzIG1heSBiZSByZXF1aXJlZAorLSAgICAgICAgYmxvY2tkZXYubHZtLnB2Y3JlYXRlKHNlbGYuZGV2aWNlLCBkYXRhX2FsaWdubWVudD1zZWxmLmRhdGFfYWxpZ25tZW50KQorKyAgICAgICAgZWFfemVybyA9IGJsb2NrZGV2LkV4dHJhQXJnLm5ldygiLVoiLCAieSIpCisrICAgICAgICBlYV95ZXMgPSBibG9ja2Rldi5FeHRyYUFyZy5uZXcoIi15IiwgIiIpCisrICAgICAgICBibG9ja2Rldi5sdm0ucHZjcmVhdGUoc2VsZi5kZXZpY2UsIGRhdGFfYWxpZ25tZW50PXNlbGYuZGF0YV9hbGlnbm1lbnQsIGV4dHJhPVtlYV96ZXJvLCBlYV95ZXNdKQorIAorICAgICBkZWYgX2Rlc3Ryb3koc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgbG9nX21ldGhvZF9jYWxsKHNlbGYsIGRldmljZT1zZWxmLmRldmljZSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTQtaW52b2tpbmctZGQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0LzAwMTQtaW52b2tpbmctZGQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmE5ZTRmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldC8wMDE0LWludm9raW5nLWRkLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gOTJmZTdkZmQwMTEzMWM5M2E5YjIwMTNjYWJmNzdkNWY0NjkwMGZhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgNiBNYXIgMjAxOCAxNzoyODo1NiArMDgwMAotU3ViamVjdDogW1BBVENIXSBpbnZva2luZyBkZCB3aXRoIGluZmluaXRlIHRpbWVvdXQKLQotVGhpcyBsYXJnZSB0aW1lb3V0IGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgb24gbWFjaGluZXMgd2l0aAotbG90cyBvZiBkaXNrcywgb3Igd2l0aCBzbG93IGRpc2tzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5IGIvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5Ci1pbmRleCBhNzM3MmZiLi44OTQ3NDcyIDEwMDY0NAotLS0tIGEvYmxpdmV0L2RldmljZXMvcGFydGl0aW9uLnB5Ci0rKysgYi9ibGl2ZXQvZGV2aWNlcy9wYXJ0aXRpb24ucHkKLUBAIC01OTQsNyArNTk0LDcgQEAgY2xhc3MgUGFydGl0aW9uRGV2aWNlKFN0b3JhZ2VEZXZpY2UpOgotICAgICAgICAgY21kID0gWyJkZCIsICJpZj0vZGV2L3plcm8iLCAib2Y9JXMiICUgZGV2aWNlLCAiYnM9JWQiICUgYnMsCi0gICAgICAgICAgICAgICAgInNlZWs9JWQiICUgc3RhcnQsICJjb3VudD0lZCIgJSBjb3VudF0KLSAgICAgICAgIHRyeToKLS0gICAgICAgICAgICB1dGlsLnJ1bl9wcm9ncmFtKGNtZCkKLSsgICAgICAgICAgICB1dGlsLnJ1bl9wcm9ncmFtKGNtZCwgdGltZW91dD0tMSkKLSAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgbG9nLmVycm9yKHN0cihlKSkKLSAgICAgICAgIGZpbmFsbHk6Ci0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmRjMzJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldF8yLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgcHl0aG9uIG1vZHVsZSBmb3Igc3lzdGVtIHN0b3JhZ2UgY29uZmlndXJhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL2JsaXZldCIKLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtTfSIKLQotU1JDUkVWID0gIjM5ZGI4MmYyMGQ4ZDQ5MDRjMGM0ZGM4OTEyZTU5NTE3N2M1OWUwOTEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvYmxpdmV0O2JyYW5jaD0yLjItZGV2ZWwgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb21tZW50LW91dC1zZWxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcnVuX3Byb2dyYW0tc3VwcG9ydC10aW1lb3V0LnBhdGNoXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1zdXBwb3J0LWluZmluaXQtdGltZW91dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LU1vdW50LXZhci12b2xhdGlsZS1kdXJpbmctaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXVwZGF0ZS1mc3RhYi1ieS1hcHBlbmRpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtbmV3LnJvb3RzLW9iamVjdC1pcy1ub3QtaXRlcmFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1maXgtaW5jb3JyZWN0LXRpbWVvdXQtd2hpbGUtc3lzdGVtLXRpbWUtY2hhbmdlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXR3ZWFrLWJ0cmZzLXBhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktaW52b2tpbmctbW91bnQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtdXNlLW9lLXZhcmlhYmxlLXRvLXJlcGxhY2UtaGFyZGNvZGVkLWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWludm9raW5nLWZzY2std2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItaW52b2tpbmctbWtmcy13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1SZXZlcnQtQWRhcHQtdG8tbG9nZ2luZy1tb2R1bGUtbmFtZS1jaGFuZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1pbnZva2luZy1kZC13aXRoLWluZmluaXRlLXRpbWVvdXQucGF0Y2ggXAotIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLWluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLXB5a2lja3N0YXJ0IHB5dGhvbjMtcHl1ZGV2IFwKLSAgICAgICAgICAgICAgICAgIHBhcnRlZCBweXRob24zLXB5cGFydGVkIG11bHRpcGF0aC10b29scyBcCi0gICAgICAgICAgICAgICAgICBsc29mIGNyeXB0c2V0dXAgbGliYmxvY2tkZXYgXAotICAgICAgICAgICAgICAgICAgbGliYnl0ZXNpemUgXAotIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotIgotCi1pbmhlcml0IHN5c3RlbWQKLQotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImJsaXZldC5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzMuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0XzMuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZjAyZjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRfMy4wLjEuYmIKQEAgLTAsMCArMSw0OCBAQAorREVTQ1JJUFRJT04gPSAiQSBweXRob24gbW9kdWxlIGZvciBzeXN0ZW0gc3RvcmFnZSBjb25maWd1cmF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvYmxpdmV0IgorTElDRU5TRSA9ICJMR1BMdjIrIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorQiA9ICIke1N9IgorCitTUkNSRVYgPSAiZGRjMjRjNzFiYWQxMDIwOGIxMWVhMGM0NTg1Mzg5OGZhZGQ3MDMwYiIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9ibGl2ZXQ7YnJhbmNoPTMuMS1yZWxlYXNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29tbWVudC1vdXQtc2VsaW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXJ1bl9wcm9ncmFtLXN1cHBvcnQtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXN1cHBvcnQtaW5maW5pdC10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZml4LW5ldy5yb290cy1vYmplY3QtaXMtbm90LWl0ZXJhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZml4LWluY29ycmVjdC10aW1lb3V0LXdoaWxlLXN5c3RlbS10aW1lLWNoYW5nZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi10d2Vhay1idHJmcy1wYWNrYWdlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWludm9raW5nLW1vdW50LXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LXVzZS1vZS12YXJpYWJsZS10by1yZXBsYWNlLWhhcmRjb2RlZC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1pbnZva2luZy1mc2NrLXdpdGgtaW5maW5pdGUtdGltZW91dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWludm9raW5nLW1rZnMtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtaW52b2tpbmctZGQtd2l0aC1pbmZpbml0ZS10aW1lb3V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItcmVtb3ZlLWRtcmFpZC1kZXBlbmRlbmN5LWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTMtYWRkLVoteS1hbmQteS10by1sdm0ucHZjcmVhdGUucGF0Y2ggXAorIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJibGl2ZXQtKD9QPHB2ZXI+XGQrKFwuXGQrKSspJCIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjNuYXRpdmUKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1weWtpY2tzdGFydCBweXRob24zLXB5dWRldiBcCisgICAgICAgICAgICAgICAgICBwYXJ0ZWQgcHl0aG9uMy1weXBhcnRlZCBtdWx0aXBhdGgtdG9vbHMgXAorICAgICAgICAgICAgICAgICAgbHNvZiBjcnlwdHNldHVwIGxpYmJsb2NrZGV2IFwKKyAgICAgICAgICAgICAgICAgIGxpYmJ5dGVzaXplIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKKyIKKworaW5oZXJpdCBzeXN0ZW1kCisKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJibGl2ZXQuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWJsaXZldC9weXRob24zLWJsaXZldGd1aV8yLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhjMjU2NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRndWlfMi4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJHVUkgdG9vbCBmb3Igc3RvcmFnZSBjb25maWd1cmF0aW9uIHVzaW5nIGJsaXZldCBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2JsaXZldC1ndWkiCi1MSUNFTlNFID0gIkdQTHYyKyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtTfSIKLQotU1JDUkVWID0gIjUyYWU4YzAwMDg0M2MwNWFiZDFkODc0OWY0NGJiZTJlNWQ4OTFkM2QiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvYmxpdmV0LWd1aTticmFuY2g9bWFzdGVyIFwKLSIKLQotaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgc3lzdGVtZCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMyBweXRob24zbmF0aXZlCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcHlnb2JqZWN0IHB5dGhvbjMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1ibGl2ZXQgZ3RrKzMgIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGlkIGxpYnJlcG9ydCBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vKiBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0Z3VpXzIuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tYmxpdmV0L3B5dGhvbjMtYmxpdmV0Z3VpXzIuMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZjBkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1ibGl2ZXQvcHl0aG9uMy1ibGl2ZXRndWlfMi4xLjguYmIKQEAgLTAsMCArMSwyNyBAQAorREVTQ1JJUFRJT04gPSAiR1VJIHRvb2wgZm9yIHN0b3JhZ2UgY29uZmlndXJhdGlvbiB1c2luZyBibGl2ZXQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9ibGl2ZXQtZ3VpIgorTElDRU5TRSA9ICJHUEx2MisiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7U30iCisKK1NSQ1JFViA9ICJhNGZkNDI3ZWUyYWNjNWE4ZjVmYjAzMGJmNzgxNjkxN2NlZTYzYmQ4IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2JsaXZldC1ndWk7YnJhbmNoPW1hc3RlciBcCisiCisKK2luaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHN5c3RlbWQiCisKK2luaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uM25hdGl2ZQorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXB5Z29iamVjdCBweXRob24zIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtYmxpdmV0IGd0ayszICBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXBpZCBsaWJyZXBvcnQgXAorIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9LyogXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLW1laC9weXRob24zLW1laF8wLjQ2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTJjYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkEgcHl0aG9uIGxpYnJhcnkgZm9yIGhhbmRsaW5nIGV4Y2VwdGlvbnMiCi1ERVNDUklQVElPTiA9ICJUaGUgcHl0aG9uLW1laCBwYWNrYWdlIGlzIGEgcHl0aG9uIGxpYnJhcnkgZm9yIGhhbmRsaW5nLCBzYXZpbmcsIGFuZCByZXBvcnRpbmcgXAotZXhjZXB0aW9ucy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LmZlZG9yYWhvc3RlZC5vcmcvZ2l0Lz9wPXB5dGhvbi1tZWguZ2l0IgotTElDRU5TRSA9ICJHUEx2MisiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL3B5dGhvbi1tZWguZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIgXAotIgotU1JDUkVWID0gImJiMTE1NjcyOGE0Zjc2ZTVlMzYzOGFiMjBiOTQ1NGExNTY4YTk5ZGIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1tZWgvcHl0aG9uMy1tZWhfMC40Ny5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWQ2ZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tbWVoL3B5dGhvbjMtbWVoXzAuNDcuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJBIHB5dGhvbiBsaWJyYXJ5IGZvciBoYW5kbGluZyBleGNlcHRpb25zIgorREVTQ1JJUFRJT04gPSAiVGhlIHB5dGhvbi1tZWggcGFja2FnZSBpcyBhIHB5dGhvbiBsaWJyYXJ5IGZvciBoYW5kbGluZywgc2F2aW5nLCBhbmQgcmVwb3J0aW5nIFwKK2V4Y2VwdGlvbnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdC5mZWRvcmFob3N0ZWQub3JnL2dpdC8/cD1weXRob24tbWVoLmdpdCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weXRob24tbWVoLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKKyIKK1NSQ1JFViA9ICI3OGQ4NjhkOTkxMDQzMTdjZTg4MjBmMzlmNjFkMjA3NTY2ZTYxYTU1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyoiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDEtc3VwcG9ydC1hdXRoZW50aWNhdGlvbi1mb3Ita2lja3N0YXJ0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2gKaW5kZXggNjE3Njk5ZC4uZTc1MzNmNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIGQwZDg4OTBiNWVmNzRjMzE1MzgxYzllMWNmZjRiMWQzMjg5MjExNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGYwNWY1ZmMzNjNlMjUxMGY2OTQzNTMyZjNlMTRhNjQyM2Y2YTJjZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDEgSnVuIDIwMTcgMTU6MDc6MzYgKzA4MDAKK0RhdGU6IFR1ZSwgMzEgSnVsIDIwMTggMTc6MjQ6NDcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAxLzRdIHN1cHBvcnQgYXV0aGVudGljYXRpb24gZm9yIGtpY2tzdGFydAogCiBXaGlsZSBkb3dubG9hZCBraWNrc3RhcnQgZmlsZSBmcm9tIHdlYiBzZXJ2ZXIsCkBAIC0xMywzMCArMTMsMjkgQEAKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCi0gcHlraWNrc3RhcnQvZXJyb3JzLnB5IHwgMTkgKysrKysrKysrKysrKysrKysrKwotIHB5a2lja3N0YXJ0L2xvYWQucHkgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgcHlraWNrc3RhcnQvZXJyb3JzLnB5IHwgMTcgKysrKysrKysrKysrKysrKysKKyBweWtpY2tzdGFydC9sb2FkLnB5ICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAgcHlraWNrc3RhcnQvcGFyc2VyLnB5IHwgIDQgKystLQotIDMgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKyAzIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9weWtpY2tzdGFydC9lcnJvcnMucHkgYi9weWtpY2tzdGFydC9lcnJvcnMucHkKLWluZGV4IGI3NmU4NGMuLmZkODFiYzggMTAwNjQ0CitpbmRleCBiZjA4YWM1Li5hYWRhN2FhIDEwMDY0NAogLS0tIGEvcHlraWNrc3RhcnQvZXJyb3JzLnB5CiArKysgYi9weWtpY2tzdGFydC9lcnJvcnMucHkKLUBAIC0zNSw2ICszNSwxMCBAQCBJdCBhbHNvIGV4cG9ydHMgc2V2ZXJhbCBleGNlcHRpb24gY2xhc3NlczoKLSAKK0BAIC0zMiw2ICszMiw5IEBAIFRoaXMgbW9kdWxlIGV4cG9ydHMgc2V2ZXJhbCBleGNlcHRpb24gY2xhc3NlczoKICAgICAgS2lja3N0YXJ0VmVyc2lvbkVycm9yIC0gQW4gZXhjZXB0aW9uIGZvciBlcnJvcnMgcmVsYXRpbmcgdG8gdW5zdXBwb3J0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4IHZlcnNpb25zLgotKworIAogKyAgICBLaWNrc3RhcnRBdXRoRXJyb3IgLSBBbiBleGNlcHRpb24gZm9yIGVycm9ycyByZWxhdGluZyB0byBhdXRoZW50aWNhdGlvbgogKyAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWQgd2hpbGUgZG93bmxvYWRpbmcga2lja3N0YXJ0IGZyb20gd2ViIHNlcnZlcgogKwotICIiIgotIGltcG9ydCB3YXJuaW5ncworIEFuZCBzb21lIHdhcm5pbmcgY2xhc3NlczoKICAKLUBAIC0xMDMsMyArMTA3LDE4IEBAIGNsYXNzIEtpY2tzdGFydFZlcnNpb25FcnJvcihLaWNrc3RhcnRFcnJvcik6Ci0gCi0gICAgIGRlZiBfX3N0cl9fIChzZWxmKToKLSAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCisgICAgIEtpY2tzdGFydFdhcm5pbmcgLSBBIGdlbmVyaWMgd2FybmluZyBjbGFzcy4KK0BAIC0xMzEsMyArMTM0LDE3IEBAIGNsYXNzIEtpY2tzdGFydERlcHJlY2F0aW9uV2FybmluZyhLaWNrc3RhcnRQYXJzZVdhcm5pbmcsIERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgIGNvbW1hbmRzIGFuZCBvcHRpb25zLgorICAgICAiIiIKKyAgICAgcGFzcwogKwogK2NsYXNzIEtpY2tzdGFydEF1dGhFcnJvcihLaWNrc3RhcnRFcnJvcik6CiArICAgICIiIkFuIGV4Y2VwdGlvbiBmb3IgZXJyb3JzIHJlbGF0aW5nIHRvIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCB3aGlsZQpAQCAtNTEsOSArNTAsOCBAQAogKwogKyAgICBkZWYgX19zdHJfXyhzZWxmKToKICsgICAgICAgIHJldHVybiBzZWxmLnZhbHVlCi0rCiBkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvbG9hZC5weSBiL3B5a2lja3N0YXJ0L2xvYWQucHkKLWluZGV4IDFmNjliOWMuLjBmNTc0MWIgMTAwNjQ0CitpbmRleCBmYjkzNWYyLi40MWEyZTllIDEwMDY0NAogLS0tIGEvcHlraWNrc3RhcnQvbG9hZC5weQogKysrIGIvcHlraWNrc3RhcnQvbG9hZC5weQogQEAgLTE4LDEwICsxOCwxMyBAQApAQCAtNzEsNyArNjksNyBAQAogIGZyb20gcHlraWNrc3RhcnQuaTE4biBpbXBvcnQgXwogIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KICAKLUBAIC0yOSw3ICszMiw3IEBAIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICMgUkZDIDM5ODYKK0BAIC0yOSw3ICszMiw3IEBAIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICAjIFJGQyAzOTg2CiAgCiAgU1NMX1ZFUklGWSA9IFRydWUKICAKQEAgLTg5LDEwICs4NywxMiBAQAogICAgICBlbHNlOgogICAgICAgICAgcmV0dXJuIF9sb2FkX2ZpbGUobG9jYXRpb24pCiAgCi1AQCAtNzEsMTMgKzc0LDMyIEBAIGRlZiBsb2FkX3RvX2ZpbGUobG9jYXRpb24sIGRlc3RpbmF0aW9uKToKK0BAIC03MCwxMSArNzMsMzAgQEAgZGVmIGxvYWRfdG9fZmlsZShsb2NhdGlvbiwgZGVzdGluYXRpb24pOgogICAgICAgICAgX2NvcHlfZmlsZShsb2NhdGlvbiwgZGVzdGluYXRpb24pCiAgICAgICAgICByZXR1cm4gZGVzdGluYXRpb24KICAKKy1kZWYgX2xvYWRfdXJsKGxvY2F0aW9uKToKKy0gICAgJycnTG9hZCBhIGxvY2F0aW9uIChVUkwgb3IgZmlsZW5hbWUpIGFuZCByZXR1cm4gY29udGVudHMgYXMgc3RyaW5nJycnCiArZGVmIF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj1Ob25lLCBwYXNzd2Q9Tm9uZSk6CiArCiArICAgIGF1dGggPSBOb25lCkBAIC0xMDksMTUgKzEwOSwxMiBAQAogKyAgICAgICAgICAgIGF1dGggPSBIVFRQQmFzaWNBdXRoKHVzZXIsIHBhc3N3ZCkKICsgICAgICAgIGVsaWYgYXV0aF90eXBlID09ICJEaWdlc3QiOgogKyAgICAgICAgICAgIGF1dGg9SFRUUERpZ2VzdEF1dGgodXNlciwgcGFzc3dkKQotIAotLWRlZiBfbG9hZF91cmwobG9jYXRpb24pOgorKwogKyAgICByZXR1cm4gYXV0aAogKwogK2RlZiBfbG9hZF91cmwobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgotICAgICAnJydMb2FkIGEgbG9jYXRpb24gKFVSTCBvciBmaWxlbmFtZSkgYW5kIHJldHVybiBjb250ZW50cyBhcyBzdHJpbmcnJycKLSAKKysgICAgJycnTG9hZCBhIGxvY2F0aW9uIChVUkwgb3IgZmlsZW5hbWUpIGFuZCByZXR1cm4gY29udGVudHMgYXMgc3RyaW5nJycnCiArICAgIGF1dGggPSBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9dXNlciwgcGFzc3dkPXBhc3N3ZCkKLSsKICAgICAgdHJ5OgogLSAgICAgICAgcmVxdWVzdCA9IHJlcXVlc3RzLmdldChsb2NhdGlvbiwgdmVyaWZ5PVNTTF9WRVJJRlkpCiArICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdHMuZ2V0KGxvY2F0aW9uLCB2ZXJpZnk9U1NMX1ZFUklGWSwgYXV0aD1hdXRoKQpAQCAtMTI1LDI2ICsxMjIsMjYgQEAKICAgICAgICAgIHJhaXNlIEtpY2tzdGFydEVycm9yKF8oJ0Vycm9yIHNlY3VyZWx5IGFjY2Vzc2luZyBVUkwgIiVzIicpICUgbG9jYXRpb24gKyAnOiB7ZX0nLmZvcm1hdChlPXN0cihlKSkpCiAgICAgIGV4Y2VwdCBSZXF1ZXN0RXhjZXB0aW9uIGFzIGU6CiBkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvcGFyc2VyLnB5IGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1pbmRleCBkMmIwZmJlLi4yNmI1ZGU5IDEwMDY0NAoraW5kZXggZDg4ODBlYi4uMjJkMTRjYiAxMDA2NDQKIC0tLSBhL3B5a2lja3N0YXJ0L3BhcnNlci5weQogKysrIGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1AQCAtNzczLDcgKzc3Myw3IEBAIGNsYXNzIEtpY2tzdGFydFBhcnNlcihvYmplY3QpOgorQEAgLTc4Nyw3ICs3ODcsNyBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgIGkgPSBQdXRCYWNrSXRlcmF0b3Iocy5zcGxpdGxpbmVzKFRydWUpICsgWyIiXSkKLSAgICAgICAgIHNlbGYuX3N0YXRlTWFjaGluZSAoaSkKKyAgICAgICAgIHNlbGYuX3N0YXRlTWFjaGluZShpKQogIAogLSAgICBkZWYgcmVhZEtpY2tzdGFydChzZWxmLCBmLCByZXNldD1UcnVlKToKICsgICAgZGVmIHJlYWRLaWNrc3RhcnQoc2VsZiwgZiwgcmVzZXQ9VHJ1ZSwgdXNlcm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6CiAgICAgICAgICAiIiJQcm9jZXNzIGEga2lja3N0YXJ0IGZpbGUsIGdpdmVuIGJ5IHRoZSBmaWxlbmFtZSBmLiIiIgogICAgICAgICAgaWYgcmVzZXQ6CiAgICAgICAgICAgICAgc2VsZi5fcmVzZXQoKQotQEAgLTc5NCw3ICs3OTQsNyBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKK0BAIC04MDgsNyArODA4LDcgQEAgY2xhc3MgS2lja3N0YXJ0UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICBzZWxmLmN1cnJlbnRkaXJbc2VsZi5faW5jbHVkZURlcHRoXSA9IGNkCiAgCiAgICAgICAgICB0cnk6CiAtICAgICAgICAgICAgcyA9IGxvYWRfdG9fc3RyKGYpCiArICAgICAgICAgICAgcyA9IGxvYWRfdG9fc3RyKGYsIHVzZXI9dXNlcm5hbWUsIHBhc3N3ZD1wYXNzd29yZCkKICAgICAgICAgIGV4Y2VwdCBLaWNrc3RhcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgIHJhaXNlIEtpY2tzdGFydEVycm9yKGZvcm1hdEVycm9yTXNnKDAsIG1zZz1fKCJVbmFibGUgdG8gb3BlbiBpbnB1dCBraWNrc3RhcnQgZmlsZTogJXMiKSAlIHN0cihlKSkpCisgICAgICAgICAgICAgcmFpc2UgS2lja3N0YXJ0RXJyb3IoXygiVW5hYmxlIHRvIG9wZW4gaW5wdXQga2lja3N0YXJ0IGZpbGU6ICVzIikgJSBzdHIoZSksIGxpbmVubz0wKQogIAogLS0gCiAyLjcuNApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoCmluZGV4IGNiMjEyMzUuLjRhMDAxZjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDItcHlraWNrc3RhcnQtcGFyc2VyLnB5LWFkZC1sb2NrLWZvci1yZWFkS2lja3N0YXJ0LWFuZC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAyLXB5a2lja3N0YXJ0LXBhcnNlci5weS1hZGQtbG9jay1mb3ItcmVhZEtpY2tzdGFydC1hbmQucGF0Y2gKQEAgLTEsMjggKzEsMjYgQEAKLUZyb20gZTZlNzQ3Yjg4MzExNGJmYWQ1MWFkOTNmODIzZTY1ZjVhNGQ2NDM4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjJmZGVhZDEzOWVkYjBmMjliMmYyMjJlZmNiOGYzOWJlMTViMDU3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMSBKdW4gMjAxNyAxNToxMjoyOSArMDgwMAotU3ViamVjdDogW1BBVENIIDIvNF0gcHlraWNrc3RhcnQvcGFyc2VyLnB5OiBhZGQgbG9jayBmb3IgcmVhZEtpY2tzdGFydCBhbmQKK0RhdGU6IE1vbiwgMzAgSnVsIDIwMTggMTU6NDc6MTMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIHB5a2lja3N0YXJ0L3BhcnNlci5weTogYWRkIGxvY2sgZm9yIHJlYWRLaWNrc3RhcnQgYW5kIAogIHN1cHBvcnQgaHR0cHMgd2l0aG91dCBjZXJ0aWZpY2F0aW9uCiAKIC0gQWRkIGxvY2sgZm9yIHJlYWRLaWNrc3RhcnQgdG8gZml4IHJhY2UgaXNzdWUKIAogLSBTdXBwb3J0IHRvIGRvd25sb2FkIGtpY2tzdGFydCBmaWxlIHRocm91Z2ggaHR0cHMgd2l0aG91dCBjZXJ0aWZpY2F0aW9uCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZSBzcGVjaWZpY10KLQogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgcHlraWNrc3RhcnQvbG9hZC5weSAgIHwgIDIgKy0KLSBweWtpY2tzdGFydC9wYXJzZXIucHkgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBweWtpY2tzdGFydC9wYXJzZXIucHkgfCAxOCArKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3B5a2lja3N0YXJ0L2xvYWQucHkgYi9weWtpY2tzdGFydC9sb2FkLnB5Ci1pbmRleCAwZjU3NDFiLi40OGM4Mjc2IDEwMDY0NAoraW5kZXggYzZmMDEzZi4uN2FkYjc1MSAxMDA2NDQKIC0tLSBhL3B5a2lja3N0YXJ0L2xvYWQucHkKICsrKyBiL3B5a2lja3N0YXJ0L2xvYWQucHkKIEBAIC0zMCw3ICszMCw3IEBAIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KICAKLSBfaXNfdXJsID0gbGFtYmRhIGxvY2F0aW9uOiAnOi8vJyBpbiBsb2NhdGlvbiAjIFJGQyAzOTg2CisgX2lzX3VybCA9IGxhbWJkYSBsb2NhdGlvbjogJzovLycgaW4gbG9jYXRpb24gICMgUkZDIDM5ODYKICAKIC1TU0xfVkVSSUZZID0gVHJ1ZQogK1NTTF9WRVJJRlkgPSBGYWxzZQpAQCAtMzAsMzggKzI4LDMyIEBACiAgZGVmIGxvYWRfdG9fc3RyKGxvY2F0aW9uLCB1c2VyPU5vbmUsIHBhc3N3ZD1Ob25lKToKICAgICAgJycnTG9hZCBhIGRlc3RpbmF0aW9uIFVSTCBvciBmaWxlIGludG8gYSBzdHJpbmcuCiBkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvcGFyc2VyLnB5IGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1pbmRleCAyNmI1ZGU5Li4yNjRiYTA1IDEwMDY0NAoraW5kZXggZTQ0MDk5Yi4uZTY4MTc0ZCAxMDA2NDQKIC0tLSBhL3B5a2lja3N0YXJ0L3BhcnNlci5weQogKysrIGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1AQCAtNTcsNiArNTcsMjYgQEAgU1RBVEVfQ09NTUFORFMgPSAiY29tbWFuZHMiCitAQCAtNTUsNiArNTUsMjAgQEAgZnJvbSBweWtpY2tzdGFydC5pMThuIGltcG9ydCBfCisgU1RBVEVfRU5EID0gImVuZCIKKyBTVEFURV9DT01NQU5EUyA9ICJjb21tYW5kcyIKICAKLSB2ZXIgPSB2ZXJzaW9uLkRFVkVMCi0gCi0raW1wb3J0IGxvZ2dpbmcKLStsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigiYW5hY29uZGEiKQotKwotK2ltcG9ydCBpbnNwZWN0CiAraW1wb3J0IHRocmVhZGluZwogK19wcml2YXRlX2tzX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogKwogK2NsYXNzIEtzTG9jayhvYmplY3QpOgogKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotKyAgICAgICAgbG9nLmluZm8oIiVzICVzIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgaW5zcGVjdC5zdGFjaygpWzBdWzNdKSkKICsgICAgICAgIF9wcml2YXRlX2tzX2xvY2suYWNxdWlyZSgpCiArICAgICAgICByZXR1cm4gX3ByaXZhdGVfa3NfbG9jawogKwogKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6Ci0rICAgICAgICBsb2cuaW5mbygiJXMgJXMiICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBpbnNwZWN0LnN0YWNrKClbMF1bM10pKQogKyAgICAgICAgX3ByaXZhdGVfa3NfbG9jay5yZWxlYXNlKCkKICsKICsKICtfa3NfbG9jayA9IEtzTG9jaygpCiArCi0gZGVmIF9wcmVwcm9jZXNzU3RhdGVNYWNoaW5lIChsaW5lSXRlcik6CisgZGVmIF9wcmVwcm9jZXNzU3RhdGVNYWNoaW5lKGxpbmVJdGVyKToKICAgICAgbCA9IE5vbmUKICAgICAgbGluZW5vID0gMAotQEAgLTc3NCw2ICs3OTQsMTAgQEAgY2xhc3MgS2lja3N0YXJ0UGFyc2VyKG9iamVjdCk6Ci0gICAgICAgICBzZWxmLl9zdGF0ZU1hY2hpbmUgKGkpCitAQCAtNzg4LDYgKzgwMiwxMCBAQCBjbGFzcyBLaWNrc3RhcnRQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIHNlbGYuX3N0YXRlTWFjaGluZShpKQogIAogICAgICBkZWYgcmVhZEtpY2tzdGFydChzZWxmLCBmLCByZXNldD1UcnVlLCB1c2VybmFtZT1Ob25lLCBwYXNzd29yZD1Ob25lKToKICsgICAgICAgIHdpdGggX2tzX2xvY2s6CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDAzLWNvbW1lbnQtb3V0LXNlY3Rpb25zLXNodXRkb3duLWFuZC1lbnZpcm9ubWVudC1pbi1nZW4ucGF0Y2gKaW5kZXggOWZiMjVmYi4uODFlMzUxYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwMy1jb21tZW50LW91dC1zZWN0aW9ucy1zaHV0ZG93bi1hbmQtZW52aXJvbm1lbnQtaW4tZ2VuLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDMtY29tbWVudC1vdXQtc2VjdGlvbnMtc2h1dGRvd24tYW5kLWVudmlyb25tZW50LWluLWdlbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmU2MDEyYTVkZDQ5YWU1ZThhYzAzNTY1NGFiMWM2ZjM3ZjBkYzhmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDQyMjYzOTM4MTIzOTljNjFkZTljYTkyODFlZmEwMDJhZDRmNGMwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMSBKdW4gMjAxNyAxNToxNToxNSArMDgwMAogU3ViamVjdDogW1BBVENIIDMvNF0gY29tbWVudCBvdXQgc2VjdGlvbnMgc2h1dGRvd24gYW5kIGVudmlyb25tZW50IGluCkBAIC0xNywxMCArMTcsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5IGIvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5Ci1pbmRleCA4ODc5OWJhLi4yZDBjZWE5IDEwMDY0NAoraW5kZXggMmMxYjFjMC4uYjNlYzcxNyAxMDA2NDQKIC0tLSBhL3B5a2lja3N0YXJ0L2NvbW1hbmRzL3JlYm9vdC5weQogKysrIGIvcHlraWNrc3RhcnQvY29tbWFuZHMvcmVib290LnB5Ci1AQCAtNDEsNiArNDEsOSBAQCBjbGFzcyBGQzNfUmVib290KEtpY2tzdGFydENvbW1hbmQpOgorQEAgLTQzLDYgKzQzLDkgQEAgY2xhc3MgRkMzX1JlYm9vdChLaWNrc3RhcnRDb21tYW5kKToKICAgICAgICAgIGVsaWYgc2VsZi5hY3Rpb24gPT0gS1NfU0hVVERPV046CiAgICAgICAgICAgICAgcmV0dmFsICs9ICIjIFNodXRkb3duIGFmdGVyIGluc3RhbGxhdGlvblxuc2h1dGRvd24iCiAgICAgICAgICAgICAgcmV0dmFsICs9IHNlbGYuX2dldEFyZ3NBc1N0cigpICsgIlxuIgpAQCAtMzEsMTAgKzMxLDEwIEBACiAgICAgICAgICByZXR1cm4gcmV0dmFsCiAgCiBkaWZmIC0tZ2l0IGEvcHlraWNrc3RhcnQvcGFyc2VyLnB5IGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1pbmRleCAyNjRiYTA1Li5iM2YzM2Q3IDEwMDY0NAoraW5kZXggZTY4MTc0ZC4uZWZkNzhhNiAxMDA2NDQKIC0tLSBhL3B5a2lja3N0YXJ0L3BhcnNlci5weQogKysrIGIvcHlraWNrc3RhcnQvcGFyc2VyLnB5Ci1AQCAtMzgzLDcgKzM4Myw3IEBAIGNsYXNzIFBhY2thZ2VzKEtpY2tzdGFydE9iamVjdCk6CitAQCAtMzg1LDcgKzM4NSw3IEBAIGNsYXNzIFBhY2thZ2VzKEtpY2tzdGFydE9iamVjdCk6CiAgCiAgICAgICAgICBpZiBub3Qgc2VsZi5kZWZhdWx0OgogICAgICAgICAgICAgIGlmIHNlbGYuZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvZmlsZXMvMDAwNC1sb2FkLnB5LXJldHJ5LXRvLWludm9rZS1yZXF1ZXN0LXdpdGgtdGltZW91dC5wYXRjaAppbmRleCA3MDI1NGY2Li42ZWQxNWFiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDQtbG9hZC5weS1yZXRyeS10by1pbnZva2UtcmVxdWVzdC13aXRoLXRpbWVvdXQucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIGMwZTYzZjBkM2MwOWJkYWJiMGFkMmM4OGI3Y2M3M2U3NjE4ZGQ4NmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZmZTA2YzZkZDgxMmI2MDRkNjQ4MmU0MzUzZDU1NjRmYWQ3OGJjOTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDE3OjM1OjMzICswODAwCitEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE1OjUyOjIxICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggNC80XSBsb2FkLnB5OiByZXRyeSB0byBpbnZva2UgcmVxdWVzdCB3aXRoIHRpbWVvdXQKIAogV2hpbGUgbmV0d29ya2xlc3MsIHVzZSByZXF1ZXN0IHRvIGZldGNoIGtpY2tzdGFydCBmaWxlIGZyb20KQEAgLTEyLDExICsxMiwxMSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSBweWtpY2tzdGFydC9sb2FkLnB5IHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKykKKyBweWtpY2tzdGFydC9sb2FkLnB5IHwgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9weWtpY2tzdGFydC9sb2FkLnB5IGIvcHlraWNrc3RhcnQvbG9hZC5weQotaW5kZXggNDhjODI3Ni4uNzRiMjY2YiAxMDA2NDQKK2luZGV4IGFkM2JhZDEuLmE1Y2JiYzUgMTAwNjQ0CiAtLS0gYS9weWtpY2tzdGFydC9sb2FkLnB5CiArKysgYi9weWtpY2tzdGFydC9sb2FkLnB5CiBAQCAtMjEsNiArMjEsNyBAQCBpbXBvcnQgcmVxdWVzdHMKQEAgLTMyLDEyICszMiwxMiBAQAogIGZyb20gcmVxdWVzdHMuZXhjZXB0aW9ucyBpbXBvcnQgU1NMRXJyb3IsIFJlcXVlc3RFeGNlcHRpb24KICAKICtpbXBvcnQgbG9nZ2luZwotK2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJhbmFjb25kYSIpCisrbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoImFuYWNvbmRhLm1haW4iKQogKwotIF9pc191cmwgPSBsYW1iZGEgbG9jYXRpb246ICc6Ly8nIGluIGxvY2F0aW9uICMgUkZDIDM5ODYKKyBfaXNfdXJsID0gbGFtYmRhIGxvY2F0aW9uOiAnOi8vJyBpbiBsb2NhdGlvbiAgIyBSRkMgMzk4NgogIAogIFNTTF9WRVJJRlkgPSBGYWxzZQotQEAgLTc0LDYgKzc4LDI5IEBAIGRlZiBsb2FkX3RvX2ZpbGUobG9jYXRpb24sIGRlc3RpbmF0aW9uKToKK0BAIC03Myw2ICs3NywyOSBAQCBkZWYgbG9hZF90b19maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbik6CiAgICAgICAgICBfY29weV9maWxlKGxvY2F0aW9uLCBkZXN0aW5hdGlvbikKICAgICAgICAgIHJldHVybiBkZXN0aW5hdGlvbgogIApAQCAtNjcsMTYgKzY3LDE3IEBACiAgZGVmIF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj1Ob25lLCBwYXNzd2Q9Tm9uZSk6CiAgCiAgICAgIGF1dGggPSBOb25lCi1AQCAtOTYsNiArMTIzLDkgQEAgZGVmIF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj1Ob25lLCBwYXNzd2Q9Tm9uZSk6CitAQCAtOTQsNiArMTIxLDEwIEBAIGRlZiBfZ2V0X2F1dGgobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgorIAogIGRlZiBfbG9hZF91cmwobG9jYXRpb24sIHVzZXI9Tm9uZSwgcGFzc3dkPU5vbmUpOgogICAgICAnJydMb2FkIGEgbG9jYXRpb24gKFVSTCBvciBmaWxlbmFtZSkgYW5kIHJldHVybiBjb250ZW50cyBhcyBzdHJpbmcnJycKLSAKKysKICsgICAgaWYgbm90IF9hY2Nlc3NfdXJsKGxvY2F0aW9uKToKICsgICAgICAgIHJhaXNlIEtpY2tzdGFydEVycm9yKF8oIkNvbm5lY3Rpb24gJXMgZmFpbGVkIiAlIGxvY2F0aW9uKSkKICsKICAgICAgYXV0aCA9IF9nZXRfYXV0aChsb2NhdGlvbiwgdXNlcj11c2VyLCBwYXNzd2Q9cGFzc3dkKQotIAogICAgICB0cnk6CisgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdHMuZ2V0KGxvY2F0aW9uLCB2ZXJpZnk9U1NMX1ZFUklGWSwgYXV0aD1hdXRoKQogLS0gCiAyLjcuNAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWtpY2tzdGFydC9maWxlcy8wMDA1LXR3ZWFrLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDYxNDk1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L2ZpbGVzLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA4YTFmNTk4MjIzYmQ0Y2JjYzg3N2ViMmFiYTNmNTU4NmM3NWM5ZDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyMSBBdWcgMjAxNyAxMDowNTowNiArMDgwMAotU3ViamVjdDogW1BBVENIXSB0d2VhayBzaGViYW5nIHRvIHB5dGhvbjMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRvb2xzL2tzdmFsaWRhdG9yLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMva3N2YWxpZGF0b3IucHkgYi90b29scy9rc3ZhbGlkYXRvci5weQotaW5kZXggZDYwNTFkNS4uYzM2ODJlOCAxMDA3NTUKLS0tLSBhL3Rvb2xzL2tzdmFsaWRhdG9yLnB5Ci0rKysgYi90b29scy9rc3ZhbGlkYXRvci5weQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24KLSsjIS91c3IvYmluL3B5dGhvbjMKLSAjCi0gIyBDaHJpcyBMdW1lbnMgPGNsdW1lbnNAcmVkaGF0LmNvbT4KLSAjCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8yLjM1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8yLjM1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmU2MDNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L3B5dGhvbjMtcHlraWNrc3RhcnRfMi4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgcHl0aG9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBraWNrc3RhcnQgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9weWtpY2tzdGFydCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKLQotREVQRU5EUyA9ICJweXRob24zIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLXJlcXVlc3RzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2l4IFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weWtpY2tzdGFydC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXB5a2lja3N0YXJ0LTIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdXBwb3J0LWF1dGhlbnRpY2F0aW9uLWZvci1raWNrc3RhcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1weWtpY2tzdGFydC1wYXJzZXIucHktYWRkLWxvY2stZm9yLXJlYWRLaWNrc3RhcnQtYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtY29tbWVudC1vdXQtc2VjdGlvbnMtc2h1dGRvd24tYW5kLWVudmlyb25tZW50LWluLWdlbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWxvYWQucHktcmV0cnktdG8taW52b2tlLXJlcXVlc3Qtd2l0aC10aW1lb3V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtdHdlYWstc2hlYmFuZy10by1weXRob24zLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gImIyNzg3YTgxODU0MGU2NzhjMmY5YzVkY2EwYzZiYmQ2NWI4YjU1ZTUiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L3B5dGhvbjMtcHlraWNrc3RhcnRfMy4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLXB5a2lja3N0YXJ0L3B5dGhvbjMtcHlraWNrc3RhcnRfMy4xNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzg3NmE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlraWNrc3RhcnQvcHl0aG9uMy1weWtpY2tzdGFydF8zLjE1LmJiCkBAIC0wLDAgKzEsMjUgQEAKK0RFU0NSSVBUSU9OID0gIkEgcHl0aG9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBraWNrc3RhcnQgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9weWtpY2tzdGFydCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2ZpbGVzOiIKKworREVQRU5EUyA9ICJweXRob24zIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLXJlcXVlc3RzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2l4IFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9weWtpY2tzdGFydC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN1cHBvcnQtYXV0aGVudGljYXRpb24tZm9yLWtpY2tzdGFydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXB5a2lja3N0YXJ0LXBhcnNlci5weS1hZGQtbG9jay1mb3ItcmVhZEtpY2tzdGFydC1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jb21tZW50LW91dC1zZWN0aW9ucy1zaHV0ZG93bi1hbmQtZW52aXJvbm1lbnQtaW4tZ2VuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbG9hZC5weS1yZXRyeS10by1pbnZva2UtcmVxdWVzdC13aXRoLXRpbWVvdXQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiMDdjNGQ4OTEyOWZhNmI0NjBhY2M4NmRhZjU4ZWI1ZmY2NGNkYzgzMiIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAicig/UDxwdmVyPlxkKyhcLlxkKykrKC1cZCspKikiCisKK2luaGVyaXQgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW0uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl0aG9uLXB5d2JlbS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE1MWMzMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW0uaW5jCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiUHl0aG9uIFdCRU0gQ2xpZW50IGFuZCBQcm92aWRlciBJbnRlcmZhY2UiCitERVNDUklQVElPTiA9ICJcCitBIFB5dGhvbiBsaWJyYXJ5IGZvciBtYWtpbmcgQ0lNIChDb21tb24gSW5mb3JtYXRpb24gTW9kZWwpIG9wZXJhdGlvbnMgb3ZlciBcCitIVFRQIHVzaW5nIHRoZSBXQkVNIENJTS1YTUwgcHJvdG9jb2wuIEl0IGlzIGJhc2VkIG9uIHRoZSBpZGVhIHRoYXQgYSBnb29kIFwKK1dCRU0gY2xpZW50IHNob3VsZCBiZSBlYXN5IHRvIHVzZSBhbmQgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgYSBsYXJnZSBhbW91bnQgXAorb2YgcHJvZ3JhbW1pbmcga25vd2xlZGdlLiBJdCBpcyBzdWl0YWJsZSBmb3IgYSBsYXJnZSByYW5nZSBvZiB0YXNrcyBmcm9tIFwKK3NpbXBseSBwb2tpbmcgYXJvdW5kIHRvIHdyaXRpbmcgd2ViIGFuZCBHVUkgYXBwbGljYXRpb25zLiBcCitcCitXQkVNLCBvciBXZWIgQmFzZWQgRW50ZXJwcmlzZSBNYW5hZ2VtZW50IGlzIGEgbWFuYWdlYWJpbGl0eSBwcm90b2NvbCwgbGlrZSBcCitTTk1QLCBzdGFuZGFyZGlzZWQgYnkgdGhlIERpc3RyaWJ1dGVkIE1hbmFnZW1lbnQgVGFzayBGb3JjZSAoRE1URikgYXZhaWxhYmxlIFwKK2F0IGh0dHA6Ly93d3cuZG10Zi5vcmcvc3RhbmRhcmRzL3diZW0uIFwKK1wKK0l0IGFsc28gcHJvdmlkZXMgYSBQeXRob24gcHJvdmlkZXIgaW50ZXJmYWNlLCBhbmQgaXMgdGhlIGZhc3Rlc3QgYW5kIGVhc2llc3QgXAord2F5IHRvIHdyaXRlIHByb3ZpZGVycyBvbiB0aGUgcGxhbmV0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXdiZW0uZ2l0aHViLmlvIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3B5d2JlbS9MSUNFTlNFLnR4dDttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCitTUkNfVVJJW21kNXN1bV0gPSAiMTQ2NWRmYTkyZTRjYmU1NThjNzczODM4YjliMDA3MTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEwNWYyYzFhNmFiNGIwODU2MGE2ZGE1NWZkYWFiZDBmNTJmNGQxZTZkZjZlMjg4YjllZDkyN2JmNWMyODllZCIKKworaW5oZXJpdCBweXBpIAorCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1wbHktbmF0aXZlIFwKKyAgICAke1BZVEhPTl9QTn0tcHl5YW1sLW5hdGl2ZSBcCisgICAgJHtQWVRIT05fUE59LXNpeC1uYXRpdmUgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L3diZW1jbGkucHkgJHtEfSR7YmluZGlyfS9weXdiZW1jbGkKKworICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vKi5iYXQKK30KKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1wbHkgXAorICAgICR7UFlUSE9OX1BOfS1weXlhbWwgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorICAgICR7UFlUSE9OX1BOfS14bWwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW1fMC4xMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl0aG9uLXB5d2JlbV8wLjExLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQxMDc0OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbi1weXdiZW1fMC4xMS4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgcHl0aG9uLXB5d2JlbS5pbmMKK2luaGVyaXQgc2V0dXB0b29scworCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1tMmNyeXB0by1uYXRpdmUgXAorICAgICR7UFlUSE9OX1BOfS10eXBpbmctbmF0aXZlIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKKyAgICAke1BZVEhPTl9QTn0tbTJjcnlwdG8gXAorICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbjMtcHl3YmVtXzAuMTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5dGhvbjMtcHl3YmVtXzAuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTM1YTg3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl0aG9uMy1weXdiZW1fMC4xMS4wLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBweXRob24tcHl3YmVtLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl3YmVtXzAuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl3YmVtXzAuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjE5ODZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl3YmVtL3B5d2JlbV8wLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIFdCRU0gQ2xpZW50IGFuZCBQcm92aWRlciBJbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJcCi1BIFB5dGhvbiBsaWJyYXJ5IGZvciBtYWtpbmcgQ0lNIChDb21tb24gSW5mb3JtYXRpb24gTW9kZWwpIG9wZXJhdGlvbnMgb3ZlciBcCi1IVFRQIHVzaW5nIHRoZSBXQkVNIENJTS1YTUwgcHJvdG9jb2wuIEl0IGlzIGJhc2VkIG9uIHRoZSBpZGVhIHRoYXQgYSBnb29kIFwKLVdCRU0gY2xpZW50IHNob3VsZCBiZSBlYXN5IHRvIHVzZSBhbmQgbm90IG5lY2Vzc2FyaWx5IHJlcXVpcmUgYSBsYXJnZSBhbW91bnQgXAotb2YgcHJvZ3JhbW1pbmcga25vd2xlZGdlLiBJdCBpcyBzdWl0YWJsZSBmb3IgYSBsYXJnZSByYW5nZSBvZiB0YXNrcyBmcm9tIFwKLXNpbXBseSBwb2tpbmcgYXJvdW5kIHRvIHdyaXRpbmcgd2ViIGFuZCBHVUkgYXBwbGljYXRpb25zLiBcCi1cCi1XQkVNLCBvciBXZWIgQmFzZWQgRW50ZXJwcmlzZSBNYW5hZ2VtZW50IGlzIGEgbWFuYWdlYWJpbGl0eSBwcm90b2NvbCwgbGlrZSBcCi1TTk1QLCBzdGFuZGFyZGlzZWQgYnkgdGhlIERpc3RyaWJ1dGVkIE1hbmFnZW1lbnQgVGFzayBGb3JjZSAoRE1URikgYXZhaWxhYmxlIFwKLWF0IGh0dHA6Ly93d3cuZG10Zi5vcmcvc3RhbmRhcmRzL3diZW0uIFwKLVwKLUl0IGFsc28gcHJvdmlkZXMgYSBQeXRob24gcHJvdmlkZXIgaW50ZXJmYWNlLCBhbmQgaXMgdGhlIGZhc3Rlc3QgYW5kIGVhc2llc3QgXAotd2F5IHRvIHdyaXRlIHByb3ZpZGVycyBvbiB0aGUgcGxhbmV0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXdiZW0uc2YubmV0LyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHl3YmVtL0xJQ0VOU0UudHh0O21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLVNFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgotREVQRU5EUyA9ICJweXRob24tbTJjcnlwdG8tbmF0aXZlIHB5dGhvbi10eXBpbmctbmF0aXZlIgotU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvJHtCUE59LyR7QlBOfS8ke0JQfS8ke0JQfS1kZXYucjcwNC56aXAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODQwNzI0NTFkY2RkMWFhOWVlODIzNjM4NDhmYWY3YWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk4MDM1ODY2ZDNjYzc0MWJiY2Q2MmM0YWMyNmU2MzNhZDA3YjdjMTFkODlkYjI0NzJiOWY5MjNmM2ZkM2VkOCIKLQotUyA9ICIke1dPUktESVJ9LyR7QlB9LWRldiIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5dGhvbi1kaXIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgbXYgJHtEfSR7YmluZGlyfS93YmVtY2xpLnB5ICR7RH0ke2JpbmRpcn0vcHl3YmVtY2xpCi0gICAgbXYgJHtEfSR7YmluZGlyfS9tb2ZfY29tcGlsZXIucHkgJHtEfSR7YmluZGlyfS9tb2Zjb21wCi0KLSAgICBybSAke0R9JHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzLyR7QlBOfS93YmVtY2xpLnB5KgotICAgIHJtICR7RH0ke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvJHtCUE59L21vZl9jb21waWxlci5weSoKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9SRUFETUUKaW5kZXggN2I2MDYzMC4uNGQyYzcxMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL1JFQURNRQpAQCAtMTMsMTQgKzEzLDE0IEBACiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKIHN1YmRpcmVjdG9yeTogbWV0YQotYnJhbmNoOiBtYXN0ZXIKK2JyYW5jaDogdGh1ZAogcmV2aXNpb246IEhFQUQKIAogRm9yIHNvbWUgcmVjaXBlcywgdGhlIG1ldGEtb2UgbGF5ZXIgaXMgcmVxdWlyZWQ6CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKIHN1YmRpcmVjdG9yeTogbWV0YS1vZQotYnJhbmNoOiBtYXN0ZXIKK2JyYW5jaDogdGh1ZAogcmV2aXNpb246IEhFQUQKIAogCkBAIC01Miw5ICs1Miw5IEBACiAtLS0tLS0tLS0tLQogCiBTZW5kIHBhdGNoZXMgLyBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnCi13aXRoICdbbWV0YS13ZWJzZXJ2ZXJdJyBpbiB0aGUgc3ViamVjdC4KK3dpdGggJ1ttZXRhLXdlYnNlcnZlcl1bdGh1ZF0nIGluIHRoZSBzdWJqZWN0LgogCi1MYXllciBtYWludGFpbmVyOiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgorVGh1ZCBNYWludGFpbmVyOiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgogCiAKIExpY2Vuc2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmMjA1ZWYyLi5hYWEzYTk1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvY29uZi9sYXllci5jb25mCkBAIC0xNyw3ICsxNyw3IEBACiAKIExBWUVSREVQRU5EU193ZWJzZXJ2ZXIgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF93ZWJzZXJ2ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF93ZWJzZXJ2ZXIgPSAidGh1ZCIKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLW5hdGl2ZV8yLjQuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZjA3M2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTItbmF0aXZlXzIuNC4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAotZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKLVNVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgotREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjJiMGM3NjIzODI2ZmY5OTc2NmZmMTNmYjkwMDdmOCIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwYzU5OTQwNGVmNmI2OWVlZTk1YmNkOWZjZDA5NDQwNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Nzc3NTNhNWEyNTU2OGEyYTI3NDI4YjIyMTQ5ODA1NjRiYzFjMzhjMWFiZjljY2M3NjMwYjYzOTk5MWY3ZjAwIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAotICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKLSAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KLSAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKLSAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAotICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKLSAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCi0gICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgotCi0gICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKLSAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCi19Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLW5hdGl2ZV8yLjQuMzQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYzM4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi1uYXRpdmVfMi40LjM0LmJiCkBAIC0wLDAgKzEsNDYgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorREVQRU5EUyA9ICJleHBhdC1uYXRpdmUgcGNyZS1uYXRpdmUgYXByLW5hdGl2ZSBhcHItdXRpbC1uYXRpdmUiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG5hdGl2ZQorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTE3NjMucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNTJkMGZkMGJjNzg4ZjA2OGU2NDcxMTZjMDFkZGZjZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MThhZGNhNTJmM2JlMTg3ZmU0NWQ2ODIyNzU1YmU5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYTUzYzk1NjMxZmViYjA4YTlkZTQxZmQyODY0Y2ZmZjgxNWNmNjJkOTMwNjcyM2FiMGQ0YjhkN2FhMTYzOGYwIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHUtMS1jb25maWcgXAorICAgICAgICAgICAgICAgIC0tcHJlZml4PSR7cHJlZml4fSAtLWRhdGFkaXI9JHtkYXRhZGlyfS9hcGFjaGUyIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke2xpYmRpcn0KKyAgICBjcCBzZXJ2ZXIvZ2VuX3Rlc3RfY2hhciAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgc3VwcG9ydC9hcHhzICR7RH0ke2JpbmRpcn0vCisgICAgaW5zdGFsbCAtbSA3NTUgaHR0cGQgJHtEfSR7YmluZGlyfS8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQKKyAgICBjcCAke1N9L2J1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwIGJ1aWxkLyoubWsgJHtEfSR7ZGF0YWRpcn0vYXBhY2hlMi9idWlsZAorICAgIGNwICR7U30vYnVpbGQvaW5zdGRzby5zaCAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L2luY2x1ZGUvKiAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgaW5jbHVkZS8qICR7RH0ke2luY2x1ZGVkaXJ9L2FwYWNoZTIKKyAgICBjcCAke1N9L29zL3VuaXgvb3MuaCAke0R9JHtpbmNsdWRlZGlyfS9hcGFjaGUyCisgICAgY3AgJHtTfS9vcy91bml4L3VuaXhkLmggJHtEfSR7aW5jbHVkZWRpcn0vYXBhY2hlMgorCisgICAgY3Agc3VwcG9ydC9lbnZ2YXJzLXN0ZCAke0R9JHtiaW5kaXJ9L2VudnZhcnMKKyAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9lbnZ2YXJzCit9CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTM4YThjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gNDE5MTgxZTI0Mjg5MmRlZDA1MGY1YTM3NWE3MDliOTU4OGZiNTgxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtvZW4gS29vaSA8a29lbi5rb29pQGxpbmFyby5vcmc+CitEYXRlOiBUdWUsIDE3IEp1biAyMDE0IDA5OjEwOjU3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogdXNlIHBrZy1jb25maWcgZm9yIFBDUkUgZGV0ZWN0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW4ua29vaUBsaW5hcm8ub3JnPgorCistLS0KKyBjb25maWd1cmUuaW4gfCAyNyArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggYmU3YmQyNS4uNTRkZmQwZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjE1LDI4ICsyMTUsMTEgQEAgZmkKKyBBQ19BUkdfV0lUSChwY3JlLAorIEFQQUNIRV9IRUxQX1NUUklORygtLXdpdGgtcGNyZT1QQVRILFVzZSBleHRlcm5hbCBQQ1JFIGxpYnJhcnkpKQorIAorLUFDX1BBVEhfUFJPRyhQQ1JFX0NPTkZJRywgcGNyZS1jb25maWcsIGZhbHNlKQorLWlmIHRlc3QgLWQgIiR3aXRoX3BjcmUiICYmIHRlc3QgLXggIiR3aXRoX3BjcmUvYmluL3BjcmUtY29uZmlnIjsgdGhlbgorLSAgIFBDUkVfQ09ORklHPSR3aXRoX3BjcmUvYmluL3BjcmUtY29uZmlnCistZWxpZiB0ZXN0IC14ICIkd2l0aF9wY3JlIjsgdGhlbgorLSAgIFBDUkVfQ09ORklHPSR3aXRoX3BjcmUKKy1maQorLQorLWlmIHRlc3QgIiRQQ1JFX0NPTkZJRyIgIT0gImZhbHNlIjsgdGhlbgorLSAgaWYgJFBDUkVfQ09ORklHIC0tdmVyc2lvbiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorLSAgICBBQ19NU0dfRVJST1IoW0RpZCBub3QgZmluZCBwY3JlLWNvbmZpZyBzY3JpcHQgYXQgJFBDUkVfQ09ORklHXSkKKy0gIGZpCistICBjYXNlIGAkUENSRV9DT05GSUcgLS12ZXJzaW9uYCBpbgorLSAgW1sxLTVdLipdKQorLSAgICBBQ19NU0dfRVJST1IoW05lZWQgYXQgbGVhc3QgcGNyZSB2ZXJzaW9uIDYuMF0pCistICAgIDs7CistICBlc2FjCistICBBQ19NU0dfTk9USUNFKFtVc2luZyBleHRlcm5hbCBQQ1JFIGxpYnJhcnkgZnJvbSAkUENSRV9DT05GSUddKQorLSAgQVBSX0FERFRPKFBDUkVfSU5DTFVERVMsIFtgJFBDUkVfQ09ORklHIC0tY2ZsYWdzYF0pCistICBBUFJfQUREVE8oUENSRV9MSUJTLCBbYCRQQ1JFX0NPTkZJRyAtLWxpYnNgXSkKKy1lbHNlCistICBBQ19NU0dfRVJST1IoW3BjcmUtY29uZmlnIGZvciBsaWJwY3JlIG5vdCBmb3VuZC4gUENSRSBpcyByZXF1aXJlZCBhbmQgYXZhaWxhYmxlIGZyb20gaHR0cDovL3BjcmUub3JnL10pCistZmkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhbUENSRV0sIFtsaWJwY3JlXSwgWworKyAgQUNfREVGSU5FKFtIQVZFX1BDUkVdLCBbMV0sIFtEZWZpbmUgaWYgeW91IGhhdmUgUENSRSBsaWJyYXJ5XSkKKytdLCBbCisrICBBQ19NU0dfRVJST1IoWyRQQ1JFX1BLR19FUlJPUlNdKQorK10pCisgQVBBQ0hFX1NVQlNUKFBDUkVfTElCUykKKyAKKyBBQ19NU0dfTk9USUNFKFtdKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvQ1ZFLTIwMTgtMTE3NjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9DVkUtMjAxOC0xMTc2My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmM1YjJlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvQ1ZFLTIwMTgtMTE3NjMucGF0Y2gKQEAgLTAsMCArMSw1MTIgQEAKK0Zyb20gNDg0YWJhNTA0OGUzNDU3ZGMxZDE1MTg5ZjE5MTBkMDA3YjFhNGE3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppbSBKYWdpZWxza2kgPGppbUBhcGFjaGUub3JnPgorRGF0ZTogV2VkLCAxMiBTZXAgMjAxOCAyMDozODowMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBNZXJnZSByMTg0MDAxMCBmcm9tIHRydW5rOgorCitPbiB0aGUgdHJ1bms6CisKK21vZF9odHRwMjogY29ubmVjdGlvbiBJTyBldmVudCBoYW5kbGluZyByZXdvcmtlZC4gSW5zdGVhZCBvZiByZWFjdGluZyBvbgorICAgICBpbmNvbWluZyBieXRlcywgdGhlIHN0YXRlIG1hY2hpbmUgbm93IGFjdHMgb24gaW5jb21pbmcgZnJhbWVzIHRoYXQgYXJlCisgICAgIGFmZmVjdGluZyBpdC4gVGhpcyByZWR1Y2VzIHN0YXRlIHRyYW5zaXRpb25zLgorCisKK1N1Ym1pdHRlZCBieTogaWNpbmcKK1Jldmlld2VkIGJ5OiBpY2luZywgeWxhdmljLCBqaW0KKworCitnaXQtc3ZuLWlkOiBodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9odHRwZC9odHRwZC9icmFuY2hlcy8yLjQueEAxODQwNzU3IDEzZjc5NTM1LTQ3YmItMDMxMC05OTU2LWZmYTQ1MGVkZWY2OAorQ1ZFOiBDVkUtMjAxOC0xMTc2MworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9odHRwZC9jb21taXQvNDg0YWJhNTA0OGUzNDU3ZGMxZDE1MTg5ZjE5MTBkMDA3YjFhNGE3Nl0KKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1vZHVsZXMvaHR0cDIvaDJfc2Vzc2lvbi5jIHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KKyBtb2R1bGVzL2h0dHAyL2gyX3Nlc3Npb24uaCB8ICAgNyArLQorIG1vZHVsZXMvaHR0cDIvaDJfdmVyc2lvbi5oIHwgICA0ICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tb2R1bGVzL2h0dHAyL2gyX3Nlc3Npb24uYyBiL21vZHVsZXMvaHR0cDIvaDJfc2Vzc2lvbi5jCitpbmRleCA4MDVkNjc3NGRjLi5hMWIzMWQyYjMwIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9odHRwMi9oMl9zZXNzaW9uLmMKKysrKyBiL21vZHVsZXMvaHR0cDIvaDJfc2Vzc2lvbi5jCitAQCAtMjM1LDYgKzIzNSw3IEBAIHN0YXRpYyBpbnQgb25fZGF0YV9jaHVua19yZWN2X2NiKG5naHR0cDJfc2Vzc2lvbiAqbmdoMiwgdWludDhfdCBmbGFncywKKyAgICAgc3RyZWFtID0gaDJfc2Vzc2lvbl9zdHJlYW1fZ2V0KHNlc3Npb24sIHN0cmVhbV9pZCk7CisgICAgIGlmIChzdHJlYW0pIHsKKyAgICAgICAgIHN0YXR1cyA9IGgyX3N0cmVhbV9yZWN2X0RBVEEoc3RyZWFtLCBmbGFncywgZGF0YSwgbGVuKTsKKysgICAgICAgIGRpc3BhdGNoX2V2ZW50KHNlc3Npb24sIEgyX1NFU1NJT05fRVZfU1RSRUFNX0NIQU5HRSwgMCwgInN0cmVhbSBkYXRhIHJjdmQiKTsKKyAgICAgfQorICAgICBlbHNlIHsKKyAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIDAsIHNlc3Npb24tPmMsIEFQTE9HTk8oMDMwNjQpCitAQCAtMzE3LDkgKzMxOCw5IEBAIHN0YXRpYyBpbnQgb25faGVhZGVyX2NiKG5naHR0cDJfc2Vzc2lvbiAqbmdoMiwgY29uc3QgbmdodHRwMl9mcmFtZSAqZnJhbWUsCisgfQorIAorIC8qKgorLSAqIG5naHR0cDIgc2Vzc2lvbiBoYXMgcmVjZWl2ZWQgYSBjb21wbGV0ZSBmcmFtZS4gTW9zdCwgaXQgdXNlcworLSAqIGZvciBwcm9jZXNzaW5nIG9mIGludGVybmFsIHN0YXRlLiBIRUFERVIgYW5kIERBVEEgZnJhbWVzIGhvd2V2ZXIKKy0gKiB3ZSBuZWVkIHRvIGhhbmRsZSBvdXJzZWxmLgorKyAqIG5naHR0cDIgc2Vzc2lvbiBoYXMgcmVjZWl2ZWQgYSBjb21wbGV0ZSBmcmFtZS4gTW9zdCBhcmUgdXNlZCBieSBuZ2h0dHAyCisrICogZm9yIHByb2Nlc3Npbmcgb2YgaW50ZXJuYWwgc3RhdGUuIFNvbWUsIGxpa2UgSEVBREVSIGFuZCBEQVRBIGZyYW1lcywKKysgKiB3ZSBuZWVkIHRvIGFjdCBvbi4KKyAgKi8KKyBzdGF0aWMgaW50IG9uX2ZyYW1lX3JlY3ZfY2IobmdodHRwMl9zZXNzaW9uICpuZzJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZ2h0dHAyX2ZyYW1lICpmcmFtZSwKK0BAIC0zNzgsNiArMzc5LDkgQEAgc3RhdGljIGludCBvbl9mcmFtZV9yZWN2X2NiKG5naHR0cDJfc2Vzc2lvbiAqbmcycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJoMl9zdHJlYW0oJWxkLSVkKTogV0lORE9XX1VQREFURSBpbmNyPSVkIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZCwgKGludClmcmFtZS0+aGQuc3RyZWFtX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPndpbmRvd191cGRhdGUud2luZG93X3NpemVfaW5jcmVtZW50KTsKKysgICAgICAgICAgICBpZiAobmdodHRwMl9zZXNzaW9uX3dhbnRfd3JpdGUoc2Vzc2lvbi0+bmdoMikpIHsKKysgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZXZlbnQoc2Vzc2lvbiwgSDJfU0VTU0lPTl9FVl9GUkFNRV9SQ1ZELCAwLCAid2luZG93IHVwZGF0ZSIpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgTkdIVFRQMl9SU1RfU1RSRUFNOgorICAgICAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIDAsIHNlc3Npb24tPmMsIEFQTE9HTk8oMDMwNjcpCitAQCAtNDA0LDYgKzQwOCwxMiBAQCBzdGF0aWMgaW50IG9uX2ZyYW1lX3JlY3ZfY2IobmdodHRwMl9zZXNzaW9uICpuZzJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+Z29hd2F5LmVycm9yX2NvZGUsIE5VTEwpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgTkdIVFRQMl9TRVRUSU5HUzoKKysgICAgICAgICAgICBpZiAoQVBMT0djdHJhY2UyKHNlc3Npb24tPmMpKSB7CisrICAgICAgICAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfVFJBQ0UyLCAwLCBzZXNzaW9uLT5jLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgyX1NTU05fTVNHKHNlc3Npb24sICJTRVRUSU5HUywgbGVuPSVsZCIpLCAobG9uZylmcmFtZS0+aGQubGVuZ3RoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIGlmIChBUExPR2N0cmFjZTIoc2Vzc2lvbi0+YykpIHsKKyAgICAgICAgICAgICAgICAgY2hhciBidWZmZXJbMjU2XTsKK0BAIC00MTUsNyArNDI1LDQwIEBAIHN0YXRpYyBpbnQgb25fZnJhbWVfcmVjdl9jYihuZ2h0dHAyX3Nlc3Npb24gKm5nMnMsCisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICB9CistICAgIHJldHVybiAoQVBSX1NVQ0NFU1MgPT0gcnYpPyAwIDogTkdIVFRQMl9FUlJfUFJPVE87CisrICAgIAorKyAgICBpZiAoc2Vzc2lvbi0+c3RhdGUgPT0gSDJfU0VTU0lPTl9TVF9JRExFKSB7CisrICAgICAgICAvKiBXZSByZWNlaXZlZCBhIGZyYW1lLCBidXQgc2Vzc2lvbiBpcyBpbiBzdGF0ZSBJRExFLiBUaGF0IG1lYW5zIHRoZSBmcmFtZQorKyAgICAgICAgICogZGlkIG5vdCByZWFsbHkgcHJvZ3Jlc3MgYW55IG9mIHRoZSAocG9zc2libHkpIG9wZW4gc3RyZWFtcy4gSXQgd2FzIGEgbWV0YQorKyAgICAgICAgICogZnJhbWUsIGUuZy4gU0VUVElOR1MvV0lORE9XX1VQREFURS91bmtub3duL2V0Yy4KKysgICAgICAgICAqIFJlbWVtYmVyOiBJRExFIG1lYW5zIHdlIGNhbm5vdCBzZW5kIGJlY2F1c2UgZWl0aGVyIHRoZXJlIGFyZSBubyBzdHJlYW1zIG9wZW4gb3IKKysgICAgICAgICAqIGFsbCBvcGVuIHN0cmVhbXMgYXJlIGJsb2NrZWQgb24gZXhoYXVzdGVkIFdJTkRPV3MgZm9yIG91dGdvaW5nIGRhdGEuCisrICAgICAgICAgKiBUaGUgbW9yZSBmcmFtZXMgd2UgcmVjZWl2ZSB0aGF0IGRvIG5vdCBjaGFuZ2UgdGhpcywgdGhlIGxlc3MgaW50ZXJlc3RlZCB3ZQorKyAgICAgICAgICogYmVjb21lIGluIHNlcnZpbmcgdGhpcyBjb25uZWN0aW9uLiBUaGlzIGlzIGV4cHJlc3NlZCBpbiBpbmNyZWFzaW5nICJpZGxlX2RlbGF5cyIuCisrICAgICAgICAgKiBFdmVudHVhbGx5LCB0aGUgY29ubmVjdGlvbiB3aWxsIHRpbWVvdXQgYW5kIHdlJ2xsIGNsb3NlIGl0LiAqLworKyAgICAgICAgc2Vzc2lvbi0+aWRsZV9mcmFtZXMgPSBIMk1JTihzZXNzaW9uLT5pZGxlX2ZyYW1lcyArIDEsIHNlc3Npb24tPmZyYW1lc19yZWNlaXZlZCk7CisrICAgICAgICAgICAgYXBfbG9nX2NlcnJvciggQVBMT0dfTUFSSywgQVBMT0dfVFJBQ0UyLCAwLCBzZXNzaW9uLT5jLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgInNlc3Npb24gaGFzICVsZCBpZGxlIGZyYW1lcyIpLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nKXNlc3Npb24tPmlkbGVfZnJhbWVzKTsKKysgICAgICAgIGlmIChzZXNzaW9uLT5pZGxlX2ZyYW1lcyA+IDEwKSB7CisrICAgICAgICAgICAgYXByX3NpemVfdCBidXN5X2ZyYW1lcyA9IEgyTUFYKHNlc3Npb24tPmZyYW1lc19yZWNlaXZlZCAtIHNlc3Npb24tPmlkbGVfZnJhbWVzLCAxKTsKKysgICAgICAgICAgICBpbnQgaWRsZV9yYXRpbyA9IChpbnQpKHNlc3Npb24tPmlkbGVfZnJhbWVzIC8gYnVzeV9mcmFtZXMpOyAKKysgICAgICAgICAgICBpZiAoaWRsZV9yYXRpbyA+IDEwMCkgeworKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZGxlX2RlbGF5ID0gYXByX3RpbWVfZnJvbV9tc2VjKEgyTUlOKDEwMDAsIGlkbGVfcmF0aW8pKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZiAoaWRsZV9yYXRpbyA+IDEwKSB7CisrICAgICAgICAgICAgICAgIHNlc3Npb24tPmlkbGVfZGVsYXkgPSBhcHJfdGltZV9mcm9tX21zZWMoMTApOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIGlmIChpZGxlX3JhdGlvID4gMSkgeworKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZGxlX2RlbGF5ID0gYXByX3RpbWVfZnJvbV9tc2VjKDEpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAgICAgc2Vzc2lvbi0+aWRsZV9kZWxheSA9IDA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICB9CisrICAgIAorKyAgICBpZiAoQVBSX1NVQ0NFU1MgIT0gcnYpIHJldHVybiBOR0hUVFAyX0VSUl9QUk9UTzsKKysgICAgcmV0dXJuIDA7CisgfQorIAorIHN0YXRpYyBpbnQgaDJfc2Vzc2lvbl9jb250aW51ZV9kYXRhKGgyX3Nlc3Npb24gKnNlc3Npb24pIHsKK0BAIC0xNjAzLDIzICsxNjQ2LDU3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9jaGlsZF9zdGF0dXMoaDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IHN0YXR1cywgY29uc3QgY2hhciAqbXNnCisgCisgc3RhdGljIHZvaWQgdHJhbnNpdChoMl9zZXNzaW9uICpzZXNzaW9uLCBjb25zdCBjaGFyICphY3Rpb24sIGgyX3Nlc3Npb25fc3RhdGUgbnN0YXRlKQorIHsKKysgICAgYXByX3RpbWVfdCB0aW1lb3V0OworKyAgICBpbnQgb3N0YXRlLCBsb2dsdmw7CisrICAgIGNvbnN0IGNoYXIgKnM7CisrICAgIAorICAgICBpZiAoc2Vzc2lvbi0+c3RhdGUgIT0gbnN0YXRlKSB7CistICAgICAgICBpbnQgbG9nbHZsID0gQVBMT0dfREVCVUc7CistICAgICAgICBpZiAoKHNlc3Npb24tPnN0YXRlID09IEgyX1NFU1NJT05fU1RfQlVTWSAmJiBuc3RhdGUgPT0gSDJfU0VTU0lPTl9TVF9XQUlUKQorLSAgICAgICAgICAgIHx8IChzZXNzaW9uLT5zdGF0ZSA9PSBIMl9TRVNTSU9OX1NUX1dBSVQgJiYgbnN0YXRlID09IEgyX1NFU1NJT05fU1RfQlVTWSkpeworKyAgICAgICAgb3N0YXRlID0gc2Vzc2lvbi0+c3RhdGU7CisrICAgICAgICBzZXNzaW9uLT5zdGF0ZSA9IG5zdGF0ZTsKKysgICAgICAgIAorKyAgICAgICAgbG9nbHZsID0gQVBMT0dfREVCVUc7CisrICAgICAgICBpZiAoKG9zdGF0ZSA9PSBIMl9TRVNTSU9OX1NUX0JVU1kgJiYgbnN0YXRlID09IEgyX1NFU1NJT05fU1RfV0FJVCkKKysgICAgICAgICAgICB8fCAob3N0YXRlID09IEgyX1NFU1NJT05fU1RfV0FJVCAmJiBuc3RhdGUgPT0gSDJfU0VTU0lPTl9TVF9CVVNZKSl7CisgICAgICAgICAgICAgbG9nbHZsID0gQVBMT0dfVFJBQ0UxOworICAgICAgICAgfQorICAgICAgICAgYXBfbG9nX2NlcnJvcihBUExPR19NQVJLLCBsb2dsdmwsIDAsIHNlc3Npb24tPmMsIAorICAgICAgICAgICAgICAgICAgICAgICBIMl9TU1NOX0xPRyhBUExPR05PKDAzMDc4KSwgc2Vzc2lvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc2l0IFslc10gLS0gJXMgLS0+IFslc10iKSwgCistICAgICAgICAgICAgICAgICAgICAgIGgyX3Nlc3Npb25fc3RhdGVfc3RyKHNlc3Npb24tPnN0YXRlKSwgYWN0aW9uLCAKKysgICAgICAgICAgICAgICAgICAgICAgaDJfc2Vzc2lvbl9zdGF0ZV9zdHIob3N0YXRlKSwgYWN0aW9uLCAKKyAgICAgICAgICAgICAgICAgICAgICAgaDJfc2Vzc2lvbl9zdGF0ZV9zdHIobnN0YXRlKSk7CistICAgICAgICBzZXNzaW9uLT5zdGF0ZSA9IG5zdGF0ZTsKKysgICAgICAgIAorICAgICAgICAgc3dpdGNoIChzZXNzaW9uLT5zdGF0ZSkgeworICAgICAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9TVF9JRExFOgorLSAgICAgICAgICAgICAgICB1cGRhdGVfY2hpbGRfc3RhdHVzKHNlc3Npb24sIChzZXNzaW9uLT5vcGVuX3N0cmVhbXMgPT0gMD8gCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFUlZFUl9CVVNZX0tFRVBBTElWRQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNFUlZFUl9CVVNZX1JFQUQpLCAiaWRsZSIpOworKyAgICAgICAgICAgICAgICBpZiAoIXNlc3Npb24tPnJlbW90ZS5lbWl0dGVkX2NvdW50KSB7CisrICAgICAgICAgICAgICAgICAgICAvKiBvbiBmcmVzaCBjb25uZWN0aW9ucywgd2l0aCBhc3luYyBtcG0sIGRvIG5vdCByZXR1cm4KKysgICAgICAgICAgICAgICAgICAgICAqIHRvIG1wbSBmb3IgYSBzZWNvbmQuIFRoaXMgZ2l2ZXMgdGhlIGZpcnN0IHJlcXVlc3QgYSBiZXR0ZXIKKysgICAgICAgICAgICAgICAgICAgICAqIGNoYW5jZSB0byBhcnJpdmUgKHVuZCBjb25uZWN0aW9uIGxlYXZpbmcgSURMRSBzdGF0ZSkuCisrICAgICAgICAgICAgICAgICAgICAgKiBJZiB3ZSByZXR1cm4gdG8gbXBtIHJpZ2h0IGF3YXksIHRoaXMgY29ubmVjdGlvbiBoYXMgdGhlCisrICAgICAgICAgICAgICAgICAgICAgKiBzYW1lIGNoYW5jZSBvZiBiZWluZyBjbGVhbmVkIHVwIGJ5IHRoZSBtcG0gYXMgY29ubmVjdGlvbnMKKysgICAgICAgICAgICAgICAgICAgICAqIHRoYXQgYWxyZWFkeSBzZXJ2ZWQgcmVxdWVzdHMgLSBub3QgZmFpci4gKi8KKysgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmlkbGVfc3luY191bnRpbCA9IGFwcl90aW1lX25vdygpICsgYXByX3RpbWVfZnJvbV9zZWMoMSk7CisrICAgICAgICAgICAgICAgICAgICBzID0gInRpbWVvdXQiOworKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IEgyTUFYKHNlc3Npb24tPnMtPnRpbWVvdXQsIHNlc3Npb24tPnMtPmtlZXBfYWxpdmVfdGltZW91dCk7CisrICAgICAgICAgICAgICAgICAgICB1cGRhdGVfY2hpbGRfc3RhdHVzKHNlc3Npb24sIFNFUlZFUl9CVVNZX1JFQUQsICJpZGxlIik7CisrICAgICAgICAgICAgICAgICAgICBhcF9sb2dfY2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMSwgMCwgc2Vzc2lvbi0+YywgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgyX1NTU05fTE9HKCIiLCBzZXNzaW9uLCAiZW50ZXIgaWRsZSwgdGltZW91dCA9ICVkIHNlYyIpLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClhcHJfdGltZV9zZWMoSDJNQVgoc2Vzc2lvbi0+cy0+dGltZW91dCwgc2Vzc2lvbi0+cy0+a2VlcF9hbGl2ZV90aW1lb3V0KSkpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlc3Npb24tPm9wZW5fc3RyZWFtcykgeworKyAgICAgICAgICAgICAgICAgICAgcyA9ICJ0aW1lb3V0IjsKKysgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXNzaW9uLT5zLT5rZWVwX2FsaXZlX3RpbWVvdXQ7CisrICAgICAgICAgICAgICAgICAgICB1cGRhdGVfY2hpbGRfc3RhdHVzKHNlc3Npb24sIFNFUlZFUl9CVVNZX0tFRVBBTElWRSwgImlkbGUiKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgIC8qIG5vcm1hbCBrZWVwYWxpdmUgc2V0dXAgKi8KKysgICAgICAgICAgICAgICAgICAgIHMgPSAia2VlcGFsaXZlIjsKKysgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZXNzaW9uLT5zLT5rZWVwX2FsaXZlX3RpbWVvdXQ7CisrICAgICAgICAgICAgICAgICAgICB1cGRhdGVfY2hpbGRfc3RhdHVzKHNlc3Npb24sIFNFUlZFUl9CVVNZX0tFRVBBTElWRSwgImlkbGUiKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZGxlX3VudGlsID0gYXByX3RpbWVfbm93KCkgKyB0aW1lb3V0OyAKKysgICAgICAgICAgICAgICAgYXBfbG9nX2NlcnJvcihBUExPR19NQVJLLCBBUExPR19UUkFDRTEsIDAsIHNlc3Npb24tPmMsIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEgyX1NTU05fTE9HKCIiLCBzZXNzaW9uLCAiZW50ZXIgaWRsZSwgJXMgPSAlZCBzZWMiKSwgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgKGludClhcHJfdGltZV9zZWModGltZW91dCkpOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIEgyX1NFU1NJT05fU1RfRE9ORToKKyAgICAgICAgICAgICAgICAgdXBkYXRlX2NoaWxkX3N0YXR1cyhzZXNzaW9uLCBTRVJWRVJfQ0xPU0lORywgImRvbmUiKTsKK0BAIC0xNzI2LDggKzE4MDMsNiBAQCBzdGF0aWMgdm9pZCBoMl9zZXNzaW9uX2V2X25vX2lvKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhcmcsIGNvbnN0IGNoYXIgKm1zZykKKyAgICAgICAgICAgICAgICAgICAgICAqIFRoaXMgbWVhbnMgd2Ugb25seSB3YWl0IGZvciBXSU5ET1dfVVBEQVRFIGZyb20gdGhlIAorICAgICAgICAgICAgICAgICAgICAgICogY2xpZW50IGFuZCBjYW4gYmxvY2sgb24gUkVBRC4gKi8KKyAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXQoc2Vzc2lvbiwgIm5vIGlvIChmbG93IHdhaXQpIiwgSDJfU0VTU0lPTl9TVF9JRExFKTsKKy0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmlkbGVfdW50aWwgPSBhcHJfdGltZV9ub3coKSArIHNlc3Npb24tPnMtPnRpbWVvdXQ7CistICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5rZWVwX3N5bmNfdW50aWwgPSBzZXNzaW9uLT5pZGxlX3VudGlsOworICAgICAgICAgICAgICAgICAgICAgLyogTWFrZSBzdXJlIHdlIGhhdmUgZmx1c2hlZCBhbGwgcHJldmlvdXNseSB3cml0dGVuIG91dHB1dAorICAgICAgICAgICAgICAgICAgICAgICogc28gdGhhdCB0aGUgY2xpZW50IHdpbGwgcmVhY3QuICovCisgICAgICAgICAgICAgICAgICAgICBpZiAoaDJfY29ubl9pb19mbHVzaCgmc2Vzc2lvbi0+aW8pICE9IEFQUl9TVUNDRVNTKSB7CitAQCAtMTczOCwxMiArMTgxMyw3IEBAIHN0YXRpYyB2b2lkIGgyX3Nlc3Npb25fZXZfbm9faW8oaDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IGFyZywgY29uc3QgY2hhciAqbXNnKQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIGlmIChzZXNzaW9uLT5sb2NhbC5hY2NlcHRpbmcpIHsKKyAgICAgICAgICAgICAgICAgLyogV2hlbiB3ZSBoYXZlIG5vIHN0cmVhbXMsIGJ1dCBhY2NlcHQgbmV3LCBzd2l0Y2ggdG8gaWRsZSAqLworLSAgICAgICAgICAgICAgICBhcHJfdGltZV90IG5vdyA9IGFwcl90aW1lX25vdygpOworICAgICAgICAgICAgICAgICB0cmFuc2l0KHNlc3Npb24sICJubyBpbyAoa2VlcGFsaXZlKSIsIEgyX1NFU1NJT05fU1RfSURMRSk7CistICAgICAgICAgICAgICAgIHNlc3Npb24tPmlkbGVfdW50aWwgPSAoc2Vzc2lvbi0+cmVtb3RlLmVtaXR0ZWRfY291bnQ/IAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnMtPmtlZXBfYWxpdmVfdGltZW91dCA6IAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnMtPnRpbWVvdXQpICsgbm93OworLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5rZWVwX3N5bmNfdW50aWwgPSBub3cgKyBhcHJfdGltZV9mcm9tX3NlYygxKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIC8qIFdlIGFyZSBubyBsb25nZXIgYWNjZXB0aW5nIG5ldyBzdHJlYW1zIGFuZCB0aGVyZSBhcmUKK0BAIC0xNzU4LDEyICsxODI4LDI1IEBAIHN0YXRpYyB2b2lkIGgyX3Nlc3Npb25fZXZfbm9faW8oaDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IGFyZywgY29uc3QgY2hhciAqbXNnKQorICAgICB9CisgfQorIAorLXN0YXRpYyB2b2lkIGgyX3Nlc3Npb25fZXZfZGF0YV9yZWFkKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhcmcsIGNvbnN0IGNoYXIgKm1zZykKKytzdGF0aWMgdm9pZCBoMl9zZXNzaW9uX2V2X2ZyYW1lX3JjdmQoaDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IGFyZywgY29uc3QgY2hhciAqbXNnKQorK3sKKysgICAgc3dpdGNoIChzZXNzaW9uLT5zdGF0ZSkgeworKyAgICAgICAgY2FzZSBIMl9TRVNTSU9OX1NUX0lETEU6CisrICAgICAgICBjYXNlIEgyX1NFU1NJT05fU1RfV0FJVDoKKysgICAgICAgICAgICB0cmFuc2l0KHNlc3Npb24sICJmcmFtZSByZWNlaXZlZCIsIEgyX1NFU1NJT05fU1RfQlVTWSk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIC8qIG5vcCAqLworKyAgICAgICAgICAgIGJyZWFrOworKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkIGgyX3Nlc3Npb25fZXZfc3RyZWFtX2NoYW5nZShoMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQgYXJnLCBjb25zdCBjaGFyICptc2cpCisgeworICAgICBzd2l0Y2ggKHNlc3Npb24tPnN0YXRlKSB7CisgICAgICAgICBjYXNlIEgyX1NFU1NJT05fU1RfSURMRToKKyAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9TVF9XQUlUOgorLSAgICAgICAgICAgIHRyYW5zaXQoc2Vzc2lvbiwgImRhdGEgcmVhZCIsIEgyX1NFU1NJT05fU1RfQlVTWSk7CisrICAgICAgICAgICAgdHJhbnNpdChzZXNzaW9uLCAic3RyZWFtIGNoYW5nZSIsIEgyX1NFU1NJT05fU1RfQlVTWSk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIC8qIG5vcCAqLworQEAgLTE4MDMsMTYgKzE4ODYsNiBAQCBzdGF0aWMgdm9pZCBoMl9zZXNzaW9uX2V2X3ByZV9jbG9zZShoMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQgYXJnLCBjb25zdCBjaGFyICptcworIHN0YXRpYyB2b2lkIGV2X3N0cmVhbV9vcGVuKGgyX3Nlc3Npb24gKnNlc3Npb24sIGgyX3N0cmVhbSAqc3RyZWFtKQorIHsKKyAgICAgaDJfaXFfYXBwZW5kKHNlc3Npb24tPmluX3Byb2Nlc3MsIHN0cmVhbS0+aWQpOworLSAgICBzd2l0Y2ggKHNlc3Npb24tPnN0YXRlKSB7CistICAgICAgICBjYXNlIEgyX1NFU1NJT05fU1RfSURMRToKKy0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+b3Blbl9zdHJlYW1zID09IDEpIHsKKy0gICAgICAgICAgICAgICAgLyogZW50ZXIgdGltZW91dCwgc2luY2Ugd2UgaGF2ZSBhIHN0cmVhbSBhZ2FpbiAqLworLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZGxlX3VudGlsID0gKHNlc3Npb24tPnMtPnRpbWVvdXQgKyBhcHJfdGltZV9ub3coKSk7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgZGVmYXVsdDoKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgfQorIH0KKyAKKyBzdGF0aWMgdm9pZCBldl9zdHJlYW1fY2xvc2VkKGgyX3Nlc3Npb24gKnNlc3Npb24sIGgyX3N0cmVhbSAqc3RyZWFtKQorQEAgLTE4MjUsMTEgKzE4OTgsNiBAQCBzdGF0aWMgdm9pZCBldl9zdHJlYW1fY2xvc2VkKGgyX3Nlc3Npb24gKnNlc3Npb24sIGgyX3N0cmVhbSAqc3RyZWFtKQorICAgICB9CisgICAgIHN3aXRjaCAoc2Vzc2lvbi0+c3RhdGUpIHsKKyAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9TVF9JRExFOgorLSAgICAgICAgICAgIGlmIChzZXNzaW9uLT5vcGVuX3N0cmVhbXMgPT0gMCkgeworLSAgICAgICAgICAgICAgICAvKiBlbnRlciBrZWVwYWxpdmUgdGltZW91dCwgc2luY2Ugd2Ugbm8gbG9uZ2VyIGhhdmUgc3RyZWFtcyAqLworLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5pZGxlX3VudGlsID0gKHNlc3Npb24tPnMtPmtlZXBfYWxpdmVfdGltZW91dAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYXByX3RpbWVfbm93KCkpOworLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgYnJlYWs7CitAQCAtMTg4Nyw2ICsxOTU1LDcgQEAgc3RhdGljIHZvaWQgb25fc3RyZWFtX3N0YXRlX2VudGVyKHZvaWQgKmN0eCwgaDJfc3RyZWFtICpzdHJlYW0pCisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIGJyZWFrOworICAgICB9CisrICAgIGRpc3BhdGNoX2V2ZW50KHNlc3Npb24sIEgyX1NFU1NJT05fRVZfU1RSRUFNX0NIQU5HRSwgMCwgInN0cmVhbSBzdGF0ZSBjaGFuZ2UiKTsKKyB9CisgCisgc3RhdGljIHZvaWQgb25fc3RyZWFtX2V2ZW50KHZvaWQgKmN0eCwgaDJfc3RyZWFtICpzdHJlYW0sIAorQEAgLTE5NDUsOCArMjAxNCw4IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoX2V2ZW50KGgyX3Nlc3Npb24gKnNlc3Npb24sIGgyX3Nlc3Npb25fZXZlbnRfdCBldiwKKyAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9FVl9OT19JTzoKKyAgICAgICAgICAgICBoMl9zZXNzaW9uX2V2X25vX2lvKHNlc3Npb24sIGFyZywgbXNnKTsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNhc2UgSDJfU0VTU0lPTl9FVl9EQVRBX1JFQUQ6CistICAgICAgICAgICAgaDJfc2Vzc2lvbl9ldl9kYXRhX3JlYWQoc2Vzc2lvbiwgYXJnLCBtc2cpOworKyAgICAgICAgY2FzZSBIMl9TRVNTSU9OX0VWX0ZSQU1FX1JDVkQ6CisrICAgICAgICAgICAgaDJfc2Vzc2lvbl9ldl9mcmFtZV9yY3ZkKHNlc3Npb24sIGFyZywgbXNnKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9FVl9OR0gyX0RPTkU6CisgICAgICAgICAgICAgaDJfc2Vzc2lvbl9ldl9uZ2gyX2RvbmUoc2Vzc2lvbiwgYXJnLCBtc2cpOworQEAgLTE5NTcsNiArMjAyNiw5IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoX2V2ZW50KGgyX3Nlc3Npb24gKnNlc3Npb24sIGgyX3Nlc3Npb25fZXZlbnRfdCBldiwKKyAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9FVl9QUkVfQ0xPU0U6CisgICAgICAgICAgICAgaDJfc2Vzc2lvbl9ldl9wcmVfY2xvc2Uoc2Vzc2lvbiwgYXJnLCBtc2cpOworICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBIMl9TRVNTSU9OX0VWX1NUUkVBTV9DSEFOR0U6CisrICAgICAgICAgICAgaDJfc2Vzc2lvbl9ldl9zdHJlYW1fY2hhbmdlKHNlc3Npb24sIGFyZywgbXNnKTsKKysgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgYXBfbG9nX2NlcnJvcihBUExPR19NQVJLLCBBUExPR19UUkFDRTEsIDAsIHNlc3Npb24tPmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBIMl9TU1NOX01TRyhzZXNzaW9uLCAidW5rbm93biBldmVudCAlZCIpLCBldik7CitAQCAtMTk5MCwxMyArMjA2MiwxNSBAQCBhcHJfc3RhdHVzX3QgaDJfc2Vzc2lvbl9wcm9jZXNzKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhc3luYykKKyAgICAgYXByX3N0YXR1c190IHN0YXR1cyA9IEFQUl9TVUNDRVNTOworICAgICBjb25uX3JlYyAqYyA9IHNlc3Npb24tPmM7CisgICAgIGludCBydiwgbXBtX3N0YXRlLCB0cmFjZSA9IEFQTE9HY3RyYWNlMyhjKTsKKy0KKysgICAgYXByX3RpbWVfdCBub3c7CisrICAgIAorICAgICBpZiAodHJhY2UpIHsKKyAgICAgICAgIGFwX2xvZ19jZXJyb3IoIEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMywgc3RhdHVzLCBjLAorICAgICAgICAgICAgICAgICAgICAgICBIMl9TU1NOX01TRyhzZXNzaW9uLCAicHJvY2VzcyBzdGFydCwgYXN5bmM9JWQiKSwgYXN5bmMpOworICAgICB9CisgICAgICAgICAgICAgICAgICAgCisgICAgIHdoaWxlIChzZXNzaW9uLT5zdGF0ZSAhPSBIMl9TRVNTSU9OX1NUX0RPTkUpIHsKKysgICAgICAgIG5vdyA9IGFwcl90aW1lX25vdygpOworICAgICAgICAgc2Vzc2lvbi0+aGF2ZV9yZWFkID0gc2Vzc2lvbi0+aGF2ZV93cml0dGVuID0gMDsKKyAKKyAgICAgICAgIGlmIChzZXNzaW9uLT5sb2NhbC5hY2NlcHRpbmcgCitAQCAtMjAzNCwzOSArMjEwOCw0MiBAQCBhcHJfc3RhdHVzX3QgaDJfc2Vzc2lvbl9wcm9jZXNzKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhc3luYykKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9TVF9JRExFOgorLSAgICAgICAgICAgICAgICAvKiBXZSB0cnVzdCBvdXIgY29ubmVjdGlvbiBpbnRvIHRoZSBkZWZhdWx0IHRpbWVvdXQva2VlcGFsaXZlCistICAgICAgICAgICAgICAgICAqIGhhbmRsaW5nIG9mIHRoZSBjb3JlIGZpbHRlcnMvbXBtIGlmZjoKKy0gICAgICAgICAgICAgICAgICogLSBrZWVwX3N5bmNfdW50aWwgaXMgbm90IHNldAorLSAgICAgICAgICAgICAgICAgKiAtIHdlIGhhdmUgYW4gYXN5bmMgbXBtCistICAgICAgICAgICAgICAgICAqIC0gd2UgaGF2ZSBubyBvcGVuIHN0cmVhbXMgdG8gcHJvY2VzcworLSAgICAgICAgICAgICAgICAgKiAtIHdlIGFyZSBub3Qgc2l0dGluZyBvbiBhIFVwZ3JhZGU6IHJlcXVlc3QKKy0gICAgICAgICAgICAgICAgICogLSB3ZSBhbHJlYWR5IGhhdmUgc2VlbiBhdCBsZWFzdCBvbmUgcmVxdWVzdAorLSAgICAgICAgICAgICAgICAgKi8KKy0gICAgICAgICAgICAgICAgaWYgKCFzZXNzaW9uLT5rZWVwX3N5bmNfdW50aWwgJiYgYXN5bmMgJiYgIXNlc3Npb24tPm9wZW5fc3RyZWFtcworLSAgICAgICAgICAgICAgICAgICAgJiYgIXNlc3Npb24tPnIgJiYgc2Vzc2lvbi0+cmVtb3RlLmVtaXR0ZWRfY291bnQpIHsKKysgICAgICAgICAgICAgICAgaWYgKHNlc3Npb24tPmlkbGVfdW50aWwgJiYgKGFwcl90aW1lX25vdygpICsgc2Vzc2lvbi0+aWRsZV9kZWxheSkgPiBzZXNzaW9uLT5pZGxlX3VudGlsKSB7CisrICAgICAgICAgICAgICAgICAgICBhcF9sb2dfY2Vycm9yKCBBUExPR19NQVJLLCBBUExPR19UUkFDRTEsIHN0YXR1cywgYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgImlkbGUsIHRpbWVvdXQgcmVhY2hlZCwgY2xvc2luZyIpKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uLT5pZGxlX2RlbGF5KSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgYXByX3RhYmxlX3NldG4oc2Vzc2lvbi0+Yy0+bm90ZXMsICJzaG9ydC1saW5nZXJpbmctY2xvc2UiLCAiMSIpOyAKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoX2V2ZW50KHNlc3Npb24sIEgyX1NFU1NJT05fRVZfQ09OTl9USU1FT1VULCAwLCAidGltZW91dCIpOworKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uLT5pZGxlX2RlbGF5KSB7CisrICAgICAgICAgICAgICAgICAgICAvKiB3ZSBhcmUgbGVzcyBpbnRlcmVzdGVkIGluIHNwZW5kaW5nIHRpbWUgb24gdGhpcyBjb25uZWN0aW9uICovCisrICAgICAgICAgICAgICAgICAgICBhcF9sb2dfY2Vycm9yKCBBUExPR19NQVJLLCBBUExPR19UUkFDRTIsIHN0YXR1cywgYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgInNlc3Npb24gaXMgaWRsZSAoJWxkIG1zKSwgaWRsZSB3YWl0ICVsZCBzZWMgbGVmdCIpLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpYXByX3RpbWVfYXNfbXNlYyhzZXNzaW9uLT5pZGxlX2RlbGF5KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpYXByX3RpbWVfc2VjKHNlc3Npb24tPmlkbGVfdW50aWwgLSBub3cpKTsKKysgICAgICAgICAgICAgICAgICAgIGFwcl9zbGVlcChzZXNzaW9uLT5pZGxlX2RlbGF5KTsKKysgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmlkbGVfZGVsYXkgPSAwOworKyAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIGgyX2Nvbm5faW9fZmx1c2goJnNlc3Npb24tPmlvKTsKKysgICAgICAgICAgICAgICAgaWYgKGFzeW5jICYmICFzZXNzaW9uLT5yICYmIChub3cgPiBzZXNzaW9uLT5pZGxlX3N5bmNfdW50aWwpKSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcF9sb2dfY2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMywgc3RhdHVzLCBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uYmxvY2sgcmVhZCwgJWQgc3RyZWFtcyBvcGVuIiksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+b3Blbl9zdHJlYW1zKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIGgyX2Nvbm5faW9fZmx1c2goJnNlc3Npb24tPmlvKTsKKyAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGgyX3Nlc3Npb25fcmVhZChzZXNzaW9uLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBBUFJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmhhdmVfcmVhZCA9IDE7CistICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZXZlbnQoc2Vzc2lvbiwgSDJfU0VTU0lPTl9FVl9EQVRBX1JFQUQsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQVBSX1NUQVRVU19JU19FQUdBSU4oc3RhdHVzKSAKKy0gICAgICAgICAgICAgICAgICAgICAgICB8fCBBUFJfU1RBVFVTX0lTX1RJTUVVUChzdGF0dXMpKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcl90aW1lX25vdygpID4gc2Vzc2lvbi0+aWRsZV91bnRpbCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ldmVudChzZXNzaW9uLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU0VTU0lPTl9FVl9DT05OX1RJTUVPVVQsIDAsIE5VTEwpOworLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gQVBSX0VBR0FJTjsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CistICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQVBSX1NUQVRVU19JU19FQUdBSU4oc3RhdHVzKSB8fCBBUFJfU1RBVFVTX0lTX1RJTUVVUChzdGF0dXMpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gQVBSX0VBR0FJTjsKKysgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIHN0YXR1cywgYywKK0BAIC0yMDc4LDcgKzIxNTUsNiBAQCBhcHJfc3RhdHVzX3QgaDJfc2Vzc2lvbl9wcm9jZXNzKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhc3luYykKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgIC8qIG1ha2UgY2VydGFpbiwgd2Ugc2VuZCBldmVyeXRoaW5nIGJlZm9yZSB3ZSBpZGxlICovCistICAgICAgICAgICAgICAgICAgICBoMl9jb25uX2lvX2ZsdXNoKCZzZXNzaW9uLT5pbyk7CisgICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcF9sb2dfY2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX1RSQUNFMywgc3RhdHVzLCBjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgCitAQCAtMjA5MCw3ICsyMTY2LDYgQEAgYXByX3N0YXR1c190IGgyX3Nlc3Npb25fcHJvY2VzcyhoMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQgYXN5bmMpCisgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGgyX21wbHhfaWRsZShzZXNzaW9uLT5tcGx4KTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gQVBSX0VBR0FJTikgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoX2V2ZW50KHNlc3Npb24sIEgyX1NFU1NJT05fRVZfREFUQV9SRUFELCAwLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cyAhPSBBUFJfU1VDQ0VTUykgeworQEAgLTIxMDEsMzMgKzIxNzYsMTEgQEAgYXByX3N0YXR1c190IGgyX3Nlc3Npb25fcHJvY2VzcyhoMl9zZXNzaW9uICpzZXNzaW9uLCBpbnQgYXN5bmMpCisgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBoMl9zZXNzaW9uX3JlYWQoc2Vzc2lvbiwgMSk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IEFQUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+aGF2ZV9yZWFkID0gMTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ldmVudChzZXNzaW9uLCBIMl9TRVNTSU9OX0VWX0RBVEFfUkVBRCwgMCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXMgPT0gQVBSX0VBR0FJTikgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gcmVhZCAqLworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQVBSX1NUQVRVU19JU19USU1FVVAoc3RhdHVzKSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcl90aW1lX3Qgbm93ID0gYXByX3RpbWVfbm93KCk7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdyA+IHNlc3Npb24tPmtlZXBfc3luY191bnRpbCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiB3ZSBhcmUgb24gYW4gYXN5bmMgbXBtLCBub3cgaXMgdGhlIHRpbWUgdGhhdAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSBtYXkgZGFyZSB0byBwYXNzIGNvbnRyb2wgdG8gaXQuICovCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmtlZXBfc3luY191bnRpbCA9IDA7CistICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub3cgPiBzZXNzaW9uLT5pZGxlX3VudGlsKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFjZSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBfbG9nX2NlcnJvcihBUExPR19NQVJLLCBBUExPR19UUkFDRTMsIHN0YXR1cywgYywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZWVwYWxpdmUgdGltZW91dCIpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ldmVudChzZXNzaW9uLCAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU0VTU0lPTl9FVl9DT05OX1RJTUVPVVQsIDAsICJ0aW1lb3V0Iik7CistICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRyYWNlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwX2xvZ19jZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfVFJBQ0UzLCBzdGF0dXMsIGMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSDJfU1NTTl9NU0coc2Vzc2lvbiwgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtlZXBhbGl2ZSwgJWYgc2VjIGxlZnQiKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vzc2lvbi0+aWRsZV91bnRpbCAtIG5vdykgLyAxMDAwMDAwLjBmKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogY29udGludWUgcmVhZGluZyBoYW5kbGluZyAqLworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoQVBSX1NUQVRVU19JU19FQ09OTkFCT1JURUQoc3RhdHVzKQorQEAgLTIxNDUsNiArMjE5OCwxOCBAQCBhcHJfc3RhdHVzX3QgaDJfc2Vzc2lvbl9wcm9jZXNzKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhc3luYykKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ldmVudChzZXNzaW9uLCBIMl9TRVNTSU9OX0VWX0NPTk5fRVJST1IsIDAsICJlcnJvciIpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmIChuZ2h0dHAyX3Nlc3Npb25fd2FudF93cml0ZShzZXNzaW9uLT5uZ2gyKSkgeworKyAgICAgICAgICAgICAgICAgICAgYXBfdXBkYXRlX2NoaWxkX3N0YXR1cyhzZXNzaW9uLT5jLT5zYmgsIFNFUlZFUl9CVVNZX1dSSVRFLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IGgyX3Nlc3Npb25fc2VuZChzZXNzaW9uKTsKKysgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gQVBSX1NVQ0NFU1MpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBoMl9jb25uX2lvX2ZsdXNoKCZzZXNzaW9uLT5pbyk7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEFQUl9TVUNDRVNTKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZXZlbnQoc2Vzc2lvbiwgSDJfU0VTU0lPTl9FVl9DT05OX0VSUk9SLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIMl9FUlJfSU5URVJOQUxfRVJST1IsICJ3cml0aW5nIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgIGNhc2UgSDJfU0VTU0lPTl9TVF9CVVNZOgorQEAgLTIxNTQsNyArMjIxOSw2IEBAIGFwcl9zdGF0dXNfdCBoMl9zZXNzaW9uX3Byb2Nlc3MoaDJfc2Vzc2lvbiAqc2Vzc2lvbiwgaW50IGFzeW5jKQorICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gaDJfc2Vzc2lvbl9yZWFkKHNlc3Npb24sIDApOworICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBBUFJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPmhhdmVfcmVhZCA9IDE7CistICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfZXZlbnQoc2Vzc2lvbiwgSDJfU0VTU0lPTl9FVl9EQVRBX1JFQUQsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzID09IEFQUl9FQUdBSU4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3RoaW5nIHRvIHJlYWQgKi8KK0BAIC0yMjE4LDcgKzIyODIsNyBAQCBhcHJfc3RhdHVzX3QgaDJfc2Vzc2lvbl9wcm9jZXNzKGgyX3Nlc3Npb24gKnNlc3Npb24sIGludCBhc3luYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5pb3dhaXQpOworICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IEFQUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT53YWl0X3VzID0gMDsKKy0gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoX2V2ZW50KHNlc3Npb24sIEgyX1NFU1NJT05fRVZfREFUQV9SRUFELCAwLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9ldmVudChzZXNzaW9uLCBIMl9TRVNTSU9OX0VWX1NUUkVBTV9DSEFOR0UsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFQUl9TVEFUVVNfSVNfVElNRVVQKHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgIC8qIGdvIGJhY2sgdG8gY2hlY2tpbmcgYWxsIGlucHV0cyBhZ2FpbiAqLworZGlmZiAtLWdpdCBhL21vZHVsZXMvaHR0cDIvaDJfc2Vzc2lvbi5oIGIvbW9kdWxlcy9odHRwMi9oMl9zZXNzaW9uLmgKK2luZGV4IDQ4NjkzOGIwMDkuLmRmMmE4NjI0NDUgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2h0dHAyL2gyX3Nlc3Npb24uaAorKysrIGIvbW9kdWxlcy9odHRwMi9oMl9zZXNzaW9uLmgKK0BAIC02NiwxMCArNjYsMTEgQEAgdHlwZWRlZiBlbnVtIHsKKyAgICAgSDJfU0VTU0lPTl9FVl9QUk9UT19FUlJPUiwgICAgICAvKiBwcm90b2NvbCBlcnJvciAqLworICAgICBIMl9TRVNTSU9OX0VWX0NPTk5fVElNRU9VVCwgICAgIC8qIGNvbm5lY3Rpb24gdGltZW91dCAqLworICAgICBIMl9TRVNTSU9OX0VWX05PX0lPLCAgICAgICAgICAgIC8qIG5vdGhpbmcgaGFzIGJlZW4gcmVhZCBvciB3cml0dGVuICovCistICAgIEgyX1NFU1NJT05fRVZfREFUQV9SRUFELCAgICAgICAgLyogY29ubmVjdGlvbiBkYXRhIGhhcyBiZWVuIHJlYWQgKi8KKysgICAgSDJfU0VTU0lPTl9FVl9GUkFNRV9SQ1ZELCAgICAgICAvKiBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkICovCisgICAgIEgyX1NFU1NJT05fRVZfTkdIMl9ET05FLCAgICAgICAgLyogbmdodHRwMiB3YW50cyBuZWl0aGVyIHJlYWQgbm9yIHdyaXRlIGFueXRoaW5nICovCisgICAgIEgyX1NFU1NJT05fRVZfTVBNX1NUT1BQSU5HLCAgICAgLyogdGhlIHByb2Nlc3MgaXMgc3RvcHBpbmcgKi8KKyAgICAgSDJfU0VTU0lPTl9FVl9QUkVfQ0xPU0UsICAgICAgICAvKiBjb25uZWN0aW9uIHdpbGwgY2xvc2UgYWZ0ZXIgdGhpcyAqLworKyAgICBIMl9TRVNTSU9OX0VWX1NUUkVBTV9DSEFOR0UsICAgIC8qIGEgc3RyZWFtIChzdGF0ZS9pbnB1dC9vdXRwdXQpIGNoYW5nZWQgKi8KKyB9IGgyX3Nlc3Npb25fZXZlbnRfdDsKKyAKKyB0eXBlZGVmIHN0cnVjdCBoMl9zZXNzaW9uIHsKK0BAIC0xMTgsNyArMTE5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgaDJfc2Vzc2lvbiB7CisgICAgIGFwcl9zaXplX3QgbWF4X3N0cmVhbV9tZW07ICAgICAgLyogbWF4IGJ1ZmZlciBtZW1vcnkgZm9yIGEgc2luZ2xlIHN0cmVhbSAqLworICAgICAKKyAgICAgYXByX3RpbWVfdCBpZGxlX3VudGlsOyAgICAgICAgICAvKiBUaW1lIHdlIHNodXQgZG93biBkdWUgdG8gc2hlZXIgYm9yZWRvbSAqLworLSAgICBhcHJfdGltZV90IGtlZXBfc3luY191bnRpbDsgICAgIC8qIFRpbWUgd2Ugc3luYyB3YWl0IHVudGlsIHBhc3NpbmcgdG8gYXN5bmMgbXBtICovCisrICAgIGFwcl90aW1lX3QgaWRsZV9zeW5jX3VudGlsOyAgICAgLyogVGltZSB3ZSBzeW5jIHdhaXQgdW50aWwga2VlcGFsaXZlIGhhbmRsaW5nIGtpY2tzIGluICovCisrICAgIGFwcl9zaXplX3QgaWRsZV9mcmFtZXM7ICAgICAgICAgLyogbnVtYmVyIG9mIHJjdmQgZnJhbWVzIHRoYXQga2VwdCBzZXNzaW9uIGluIGlkbGUgc3RhdGUgKi8KKysgICAgYXByX2ludGVydmFsX3RpbWVfdCBpZGxlX2RlbGF5OyAvKiBUaW1lIHdlIGRlbGF5IHByb2Nlc3NpbmcgcmN2ZCBmcmFtZXMgaW4gaWRsZSBzdGF0ZSAqLworICAgICAKKyAgICAgYXByX2J1Y2tldF9icmlnYWRlICpiYnRtcDsgICAgICAvKiBicmlnYWRlIGZvciBrZWVwaW5nIHRlbXBvcmFyeSBkYXRhICovCisgICAgIHN0cnVjdCBhcHJfdGhyZWFkX2NvbmRfdCAqaW93YWl0OyAvKiBvdXIgY29uZCB3aGVuIHRyeXdhaXRpbmcgZm9yIGRhdGEgKi8KK2RpZmYgLS1naXQgYS9tb2R1bGVzL2h0dHAyL2gyX3ZlcnNpb24uaCBiL21vZHVsZXMvaHR0cDIvaDJfdmVyc2lvbi5oCitpbmRleCA1YzUzYWJkNTc1Li4yYWM3MThmYzBmIDEwMDY0NAorLS0tIGEvbW9kdWxlcy9odHRwMi9oMl92ZXJzaW9uLmgKKysrKyBiL21vZHVsZXMvaHR0cDIvaDJfdmVyc2lvbi5oCitAQCAtMjcsNyArMjcsNyBAQAorICAqIEBtYWNybworICAqIFZlcnNpb24gbnVtYmVyIG9mIHRoZSBodHRwMiBtb2R1bGUgYXMgYyBzdHJpbmcKKyAgKi8KKy0jZGVmaW5lIE1PRF9IVFRQMl9WRVJTSU9OICIxLjEwLjIwIgorKyNkZWZpbmUgTU9EX0hUVFAyX1ZFUlNJT04gIjEuMTEuMCIKKyAKKyAvKioKKyAgKiBAbWFjcm8KK0BAIC0zNSw3ICszNSw3IEBACisgICogcmVsZWFzZS4gVGhpcyBpcyBhIDI0IGJpdCBudW1iZXIgd2l0aCA4IGJpdHMgZm9yIG1ham9yIG51bWJlciwgOCBiaXRzCisgICogZm9yIG1pbm9yIGFuZCA4IGJpdHMgZm9yIHBhdGNoLiBWZXJzaW9uIDEuMi4zIGJlY29tZXMgMHgwMTAyMDMuCisgICovCistI2RlZmluZSBNT0RfSFRUUDJfVkVSU0lPTl9OVU0gMHgwMTBhMTQKKysjZGVmaW5lIE1PRF9IVFRQMl9WRVJTSU9OX05VTSAweDAxMGIwMAorIAorIAorICNlbmRpZiAvKiBtb2RfaDJfaDJfdmVyc2lvbl9oICovCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtY29uZmlndXJlX3BlcmxiaW4ucGF0Y2gKaW5kZXggOTJjNTNmMy4uYTJiYzZlMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaApAQCAtMSwxNCArMSwxOSBAQAotIyBBdXRob3I6IGVjaG8gPGZlaS5nZW5nQHdpbmRyaXZlci5jb20+Ci0jIERhdGU6IEFwcmlsIDI4IDIwMDkKLSMgU3VtbWFyeTpGaXggcGVybCBpbnN0YWxsIGRpcmVjdG9yeSB0byAvdXNyL2JpbgotIwotIyBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitGcm9tIDU0MTIwNzdjMzk4ZGVjNzQzMjEzODhmZTZlNTkzYTQ0YzRjODBkZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBlY2hvIDxmZWkuZ2VuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAwOSAwMzoxMTowNiArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggcGVybCBpbnN0YWxsIGRpcmVjdG9yeSB0byAvdXNyL2JpbgogCi1JbmRleDogaHR0cGQtMi40LjI5L2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGh0dHBkLTIuNC4yOS5vcmlnL2NvbmZpZ3VyZS5pbgotKysrIGh0dHBkLTIuNC4yOS9jb25maWd1cmUuaW4KLUBAIC04NTUsMTAgKzg1NSw3IEBAIEFDX0RFRklORV9VTlFVT1RFRChTRVJWRVJfQ09ORklHX0ZJTEUsICIKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworLS0tCisgY29uZmlndXJlLmluIHwgNSArLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZDgyODUxMi4uYmU3YmQyNSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtODU1LDEwICs4NTUsNyBAQCBBQ19ERUZJTkVfVU5RVU9URUQoU0VSVkVSX0NPTkZJR19GSUxFLCAiJHtyZWxfc3lzY29uZmRpcn0vJHtwcm9nbmFtZX0uY29uZiIsCiAgQUNfREVGSU5FX1VOUVVPVEVEKEFQX1RZUEVTX0NPTkZJR19GSUxFLCAiJHtyZWxfc3lzY29uZmRpcn0vbWltZS50eXBlcyIsCiAgCVtMb2NhdGlvbiBvZiB0aGUgTUlNRSB0eXBlcyBjb25maWcgZmlsZSwgcmVsYXRpdmUgdG8gdGhlIEFwYWNoZSByb290IGRpcmVjdG9yeV0pCiAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9hcGFjaGUtc3NsLWx0bWFpbi1ycGF0aC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTNkYTkxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotIGJ1aWxkL2x0bWFpbi5zaCB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBodHRwZC0yLjQuMjkvYnVpbGQvbHRtYWluLnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaHR0cGQtMi40LjI5Lm9yaWcvYnVpbGQvbHRtYWluLnNoCi0rKysgaHR0cGQtMi40LjI5L2J1aWxkL2x0bWFpbi5zaAotQEAgLTY5NjksNyArNjk2OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLS0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotKwk9KiB8IFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLSAJKikKLSAJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCi0gCSAgdGVzdCAteiAiJGFic2RpciIgJiYgXAotQEAgLTgxNjcsNyArODE2Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAkRUNITyAiKioqICRsaW5rbGliIGlzIG5vdCBwb3J0YWJsZSEiCi0gCSAgZmkKLSAJICBpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiICYmCi0tCSAgICAgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX2ludG9fbGlicyI7IHRoZW4KLSsJICAgICB0ZXN0ICJ4JHdyc191c2VfcnBhdGhzIiA9ICJ4eWVzIiAmJiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiA9IHllczsgdGhlbgotIAkgICAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRoLgotIAkgICAgIyBTa2lwIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBydW4tdGltZQotIAkgICAgIyBzZWFyY2ggcGF0aC4KLUBAIC04NDM0LDcgKzg0MzQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAlpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCi0gCSAgaWYgdGVzdCAtbiAiJGRlcGVuZGVuY3lfbGlicyIgJiYKLS0JICAgICB7IHRlc3QgeWVzICE9ICIkaGFyZGNvZGVfaW50b19saWJzIiB8fAotKyAgICAgICAgICAgICAgeyB0ZXN0IHllcyAhPSAiJGhhcmRjb2RlX2ludG9fbGlicyIgfHwgdGVzdCAieCR3cnNfdXNlX3JwYXRocyIgIT0gInh5ZXMiIHx8Ci0gCSAgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiIHx8Ci0gCSAgICAgICB0ZXN0IHllcyA9ICIkbGlua19zdGF0aWMiOyB9OyB0aGVuCi0gCSAgICAjIEV4dHJhY3QgLVIgZnJvbSBkZXBlbmRlbmN5X2xpYnMKLUBAIC05MDg2LDcgKzkwODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLS0JaWYgdGVzdCB5ZXMgIT0gIiRoYXJkY29kZV9pbnRvX2xpYnMiIHx8IHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgeWVzICE9ICIkaGFyZGNvZGVfaW50b19saWJzIiAgfHwgdGVzdCAieCR3cnNfdXNlX3JwYXRocyIgIT0gInh5ZXMiIHx8Ci0rICAgICAgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCi0gCSAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF94cnBhdGggJGRlcGVuZGVuY3lfbGlicyIKLSAJZmkKLSAgICAgICBmaQotQEAgLTk1MzQsNyArOTUzNSw3IEBAIEVPRgotIAljYXNlICRhcmNoaXZlX2NtZHMgaW4KLSAJICAqXCRMRFwgKikgd2w9IDs7Ci0gICAgICAgICBlc2FjCi0tCWlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9pbnRvX2xpYnMiOyB0aGVuCi0rCWlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9pbnRvX2xpYnMiICYmIHRlc3QgIngkd3JzX3VzZV9ycGF0aHMiID0gInh5ZXMiOyB0aGVuCi0gCSAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocwotIAkgIGhhcmRjb2RlX2xpYmRpcnM9Ci0gCSAgZGVwX3JwYXRoPQotQEAgLTEwMjcyLDYgKzEwMjczLDI3IEBAIEVPRgotICAgICAgICMgTm93IGhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCi0gICAgICAgcnBhdGg9Ci0gICAgICAgaGFyZGNvZGVfbGliZGlycz0KLSsKLSsgICAgICAjIHNob3J0IGNpcmN1aXQgcHV0dGluZyBycGF0aHMgaW4gZXhlY3V0YWJsZXMKLSsgICAgICAjCi0rICAgICAgaWYgdGVzdCAieCR3cnNfdXNlX3JwYXRocyIgIT0gInh5ZXMiIDsgdGhlbgotKyAgICAgICAgZmxhZz0KLSsgICAgICAgIGZvciBsaWJkaXIgaW4gJGNvbXBpbGVfcnBhdGg7IGRvCi0rICAgICAgICAgIGNhc2UgJChlY2hvICRsaWJkaXIgfCAke1NFRH0gJ3MsL1svXSosLyxnJykgaW4KLSsgICAgICAgICAgICAvdXNyL2xpYi8qIHwgL3Vzci9saWIzMi8qIHwgL3Vzci9saWI2NC8qICkgZmxhZz0iJGZsYWcgJGxpYmRpciIgOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgZG9uZQotKyAgICAgICAgY29tcGlsZV9ycGF0aD0iJGZsYWciCi0rCi0rICAgICAgICBmbGFnPQotKyAgICAgICAgZm9yIGxpYmRpciBpbiAkZmluYWxpemVfcnBhdGg7IGRvCi0rICAgICAgICAgIGNhc2UgJChlY2hvICRsaWJkaXIgfCAke1NFRH0gJ3MsL1svXSosLyxnJykgaW4KLSsgICAgICAgICAgICAvdXNyL2xpYi8qIHwgL3Vzci9saWIzMi8qIHwgL3Vzci9saWI2NC8qICkgZmxhZz0iJGZsYWcgJGxpYmRpciIgOzsKLSsgICAgICAgICAgZXNhYwotKyAgICAgICAgZG9uZQotKyAgICAgICAgZmluYWxpemVfcnBhdGg9IiRmbGFnIgotKyAgICAgIGZpCi0rCi0gICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCi0gCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2Y2NmYjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSAxNjZjYmMwMmY3MmQxM2Q1ZTdiZjA4YWMyMzUxYzBmMDdlMWZmNGI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDEgRGVjIDIwMTQgMDI6MDg6MjcgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gYXBhY2hlMjogYWxsb3cgdG8gZGlzYWJsZSBzZWxpbnV4IHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorCistLS0KKyBjb25maWd1cmUuaW4gfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA1NGRmZDBkLi4zNzdlMDYyIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC00NjYsMTAgKzQ2NiwxNiBAQCBnZXRsb2FkYXZnCisgZG5sIGNvbmZpcm0gdGhhdCBhIHZvaWQgcG9pbnRlciBpcyBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYSBsb25nIGludGVnZXIKKyBBUEFDSEVfQ0hFQ0tfVk9JRF9QVFJfTEVOCisgCistQUNfQ0hFQ0tfTElCKHNlbGludXgsIGlzX3NlbGludXhfZW5hYmxlZCwgWworLSAgIEFDX0RFRklORShIQVZFX1NFTElOVVgsIDEsIFtEZWZpbmVkIGlmIFNFTGludXggaXMgc3VwcG9ydGVkXSkKKy0gICBBUFJfQUREVE8oQVBfTElCUywgWy1sc2VsaW51eF0pCistXSkKKysjIFNFTGludXggc3VwcG9ydAorK0FDX0FSR19FTkFCTEUoc2VsaW51eCxBUEFDSEVfSEVMUF9TVFJJTkcoLS1lbmFibGUtc2VsaW51eCxFbmFibGUgU0VMaW51eCBzdXBwb3J0IFtkZWZhdWx0PWF1dG9dKSwKKysgICAgW10sW2VuYWJsZV9zZWxpbnV4PWF1dG9dKQorKworK2lmIHRlc3QgeCRlbmFibGVfc2VsaW51eCAhPSB4bm87IHRoZW4KKysgICAgQUNfQ0hFQ0tfTElCKHNlbGludXgsIGlzX3NlbGludXhfZW5hYmxlZCwgWworKyAgICAgICAgQUNfREVGSU5FKEhBVkVfU0VMSU5VWCwgMSwgW0RlZmluZWQgaWYgU0VMaW51eCBpcyBzdXBwb3J0ZWRdKQorKyAgICAgICAgQVBSX0FERFRPKEFQX0xJQlMsIFstbHNlbGludXhdKQorKyAgICBdKQorK2ZpCisgCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBnZXR0aWQoKV0sIGFjX2N2X2dldHRpZCwKKyBbQUNfVFJZX1JVTigjZGVmaW5lIF9HTlVfU09VUkNFCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuMS1jb3JlbGltaXQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuMS1jb3JlbGltaXQucGF0Y2gKaW5kZXggMThlNDEwNy4uYWU0ZmYwYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvaHR0cGQtMi40LjEtY29yZWxpbWl0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2h0dHBkLTIuNC4xLWNvcmVsaW1pdC5wYXRjaApAQCAtMSwxNSArMSwyNSBAQAorRnJvbSA1NWViYjA3Y2M1Nzg1NGNiZmIzNzJjM2E2ODgzNjUwMzliODA5YmM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDE3IEp1bCAyMDEyIDExOjI3OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFwYWNoZTI6IGFkZCBmcm9tIE9FLUNsYXNzaWMsIHVwZGF0ZSB0byB2ZXJzaW9uIDIuNC4yIGFuZCBmaXgKIAogQnVtcCB1cCB0aGUgY29yZSBzaXplIGxpbWl0IGlmIENvcmVEdW1wRGlyZWN0b3J5IGlzCiBjb25maWd1cmVkLgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogTm90ZTogdXBzdHJlYW1pbmcgd2FzIGRpc2N1c3NlZCBidXQgdGhlcmUgYXJlIGNvbXBldGluZyBkZXNpcmVzOwogCXRoZXJlIGFyZSBwb3J0YWJpbGl0eSBvZGRpdGllcyBoZXJlIHRvby4KIAotLS0tIGh0dHBkLTIuNC4xL3NlcnZlci9jb3JlLmMuY29yZWxpbWl0Ci0rKysgaHR0cGQtMi40LjEvc2VydmVyL2NvcmUuYwotQEAgLTQ0MzMsNiArNDQzMywyNSBAQCBzdGF0aWMgaW50IGNvcmVfcG9zdF9jb25maWcoYXByX3Bvb2xfdCAqCistLS0KKyBzZXJ2ZXIvY29yZS5jIHwgMTkgKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvY29yZS5jIGIvc2VydmVyL2NvcmUuYworaW5kZXggNGFmMDgxNi4uNGZkMmI5ZiAxMDA2NDQKKy0tLSBhL3NlcnZlci9jb3JlLmMKKysrKyBiL3NlcnZlci9jb3JlLmMKK0BAIC00OTQwLDYgKzQ5NDAsMjUgQEAgc3RhdGljIGludCBjb3JlX3Bvc3RfY29uZmlnKGFwcl9wb29sX3QgKnBjb25mLCBhcHJfcG9vbF90ICpwbG9nLCBhcHJfcG9vbF90ICpwdGUKICAgICAgfQogICAgICBhcHJfcG9vbF9jbGVhbnVwX3JlZ2lzdGVyKHBjb25mLCBOVUxMLCBhcF9tcG1fZW5kX2dlbl9oZWxwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXByX3Bvb2xfY2xlYW51cF9udWxsKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2h0dHBkLTIuNC4xLXNlbGludXgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuMS1zZWxpbnV4LnBhdGNoCmluZGV4IDg3MzMyOGQuLjAxNTAzNGMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2h0dHBkLTIuNC4xLXNlbGludXgucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvaHR0cGQtMi40LjEtc2VsaW51eC5wYXRjaApAQCAtMSwzICsxLDcgQEAKK0Zyb20gMzNjMGYyZDg4Y2NmZTAyNzc3ZjE4M2ViNzg1YmIyYjg5MWFmZjE2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorRGF0ZTogVHVlLCAxNyBKdWwgMjAxMiAxMToyNzozOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBMb2cgdGhlIFNFTGludXggY29udGV4dCBhdCBzdGFydHVwLgogCiBMb2cgdGhlIFNFTGludXggY29udGV4dCBhdCBzdGFydHVwLgogCkBAIC01LDkgKzksMTYgQEAKIAogTm90ZTogdW5saWtlbHkgdG8gYmUgYW55IGludGVyZXN0IGluIHRoaXMgdXBzdHJlYW0KIAotLS0tIGh0dHBkLTIuNC4xL2NvbmZpZ3VyZS5pbi5zZWxpbnV4Ci0rKysgaHR0cGQtMi40LjEvY29uZmlndXJlLmluCi1AQCAtNDU4LDYgKzQ1OCwxMSBAQCBmb3BlbjY0CistLS0KKyBjb25maWd1cmUuaW4gIHwgIDUgKysrKysKKyBzZXJ2ZXIvY29yZS5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggNzYxZTgzNi4uZDgyODUxMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtNDgzLDYgKzQ4MywxMSBAQCBnZXRsb2FkYXZnCiAgZG5sIGNvbmZpcm0gdGhhdCBhIHZvaWQgcG9pbnRlciBpcyBsYXJnZSBlbm91Z2ggdG8gc3RvcmUgYSBsb25nIGludGVnZXIKICBBUEFDSEVfQ0hFQ0tfVk9JRF9QVFJfTEVOCiAgCkBAIC0xOSw5ICszMCwxMSBAQAogIEFDX0NBQ0hFX0NIRUNLKFtmb3IgZ2V0dGlkKCldLCBhY19jdl9nZXR0aWQsCiAgW0FDX1RSWV9SVU4oI2RlZmluZSBfR05VX1NPVVJDRQogICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0tLSBodHRwZC0yLjQuMS9zZXJ2ZXIvY29yZS5jLnNlbGludXgKLSsrKyBodHRwZC0yLjQuMS9zZXJ2ZXIvY29yZS5jCi1AQCAtNTgsNiArNTgsMTAgQEAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvY29yZS5jIGIvc2VydmVyL2NvcmUuYworaW5kZXggNGZkMmI5Zi4uYzYxMzA0YSAxMDA2NDQKKy0tLSBhL3NlcnZlci9jb3JlLmMKKysrKyBiL3NlcnZlci9jb3JlLmMKK0BAIC01OSw2ICs1OSwxMCBAQAogICNpbmNsdWRlIDx1bmlzdGQuaD4KICAjZW5kaWYKICAKQEAgLTMyLDcgKzQ1LDcgQEAKICAvKiBMaW1pdFJlcXVlc3RCb2R5IGhhbmRsaW5nICovCiAgI2RlZmluZSBBUF9MSU1JVF9SRVFfQk9EWV9VTlNFVCAgICAgICAgICgoYXByX29mZl90KSAtMSkKICAjZGVmaW5lIEFQX0RFRkFVTFRfTElNSVRfUkVRX0JPRFkgICAgICAgKChhcHJfb2ZmX3QpIDApCi1AQCAtNDQ1Miw2ICs0NDU2LDI4IEBAIHN0YXRpYyBpbnQgY29yZV9wb3N0X2NvbmZpZyhhcHJfcG9vbF90ICoKK0BAIC00OTU5LDYgKzQ5NjMsMjggQEAgc3RhdGljIGludCBjb3JlX3Bvc3RfY29uZmlnKGFwcl9wb29sX3QgKnBjb25mLCBhcHJfcG9vbF90ICpwbG9nLCBhcHJfcG9vbF90ICpwdGUKICAgICAgfQogICNlbmRpZgogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvaHR0cGQtMi40LjMtZml4LXJhY2UtaXNzdWUtb2YtZGlyLWluc3RhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjYyZTlmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvaHR0cGQtMi40LjMtZml4LXJhY2UtaXNzdWUtb2YtZGlyLWluc3RhbGwucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSAzYjA3OWE5ZGY3NTgyZTMwNTI0NmZkODA1ODM3ZDg3YTJjNGVmNTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQGZyZWVzY2FsZS5jb20+CitEYXRlOiBGcmksIDI1IEphbiAyMDEzIDE4OjEwOjUwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFwYWNoZTI6IGZpeCB0aGUgcmFjZSBpc3N1ZSBvZiBwYXJhbGxlbCBpbnN0YWxsYXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK2ZpeCBmb2xsb3dpbmcgcmFjZSBpc3N1ZSB3aGVuIGRvIHBhcmFsbGVsIGluc3RhbGwKK3wgbWtkaXI6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IGAvaG9tZS9teXBjL3dvcmtzcGFjZS9wb2t5L2J1aWxkX3A0MDgwZHNfcmVsZWFzZS90bXAvd29yay9wcGNlNTAwbWMtZnNsX25ldHdvcmtpbmctbGludXgvYXBhY2hlMi8yLjQuMy1yMS9pbWFnZS91c3Ivc2hhcmUvYXBhY2hlMic6IEZpbGUgZXhpc3RzCisuLi4KK3wgbWtkaXI6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5IGAvaG9tZS9teXBjL3dvcmtzcGFjZS9wb2t5L2J1aWxkX3A0MDgwZHNfcmVsZWFzZS90bXAvd29yay9wcGNlNTAwbWMtZnNsX25ldHdvcmtpbmctbGludXgvYXBhY2hlMi8yLjQuMy1yMS9pbWFnZS91c3Ivc2hhcmUvYXBhY2hlMic6IEZpbGUgZXhpc3RzCit8IG1ha2VbMV06ICoqKiBbaW5zdGFsbC1tYW5dIEVycm9yIDEKK3wgbWFrZVsxXTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQGZyZWVzY2FsZS5jb20+CisKKy0tLQorIGJ1aWxkL21rZGlyLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvbWtkaXIuc2ggYi9idWlsZC9ta2Rpci5zaAoraW5kZXggZTJkNWJiNi4uZGRlNWFlMCAxMDA3NTUKKy0tLSBhL2J1aWxkL21rZGlyLnNoCisrKysgYi9idWlsZC9ta2Rpci5zaAorQEAgLTM5LDcgKzM5LDcgQEAgZm9yIGZpbGUgaW4gJHsxKyIkQCJ9IDsgZG8KKyAgICAgICAgIGVzYWMKKyAgICAgICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgorICAgICAgICAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIgMT4mMgorLSAgICAgICAgICAgIG1rZGlyICIkcGF0aGNvbXAiIHx8IGVycnN0YXR1cz0kPworKyAgICAgICAgICAgIG1rZGlyIC1wICIkcGF0aGNvbXAiIHx8IGVycnN0YXR1cz0kPworICAgICAgICAgZmkKKyAgICAgICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgorICAgICBkb25lCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuNC1leHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9odHRwZC0yLjQuNC1leHBvcnQucGF0Y2gKaW5kZXggYWZiZWQ4ZS4uODQzMjI2YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvaHR0cGQtMi40LjQtZXhwb3J0LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL2h0dHBkLTIuNC40LWV4cG9ydC5wYXRjaApAQCAtMSwxOSArMSwyNyBAQAorRnJvbSBhNTYyN2VkYmNjODhjZDUwY2FhYTQyY2EwNTFhYzdlZDNkODcwMTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDE3IEp1bCAyMDEyIDExOjI3OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFwYWNoZTI6IGFkZCBmcm9tIE9FLUNsYXNzaWMsIHVwZGF0ZSB0byB2ZXJzaW9uIDIuNC4yIGFuZCBmaXgKIAogVGhlcmUgaXMgbm8gbmVlZCB0byAic3VjayBpbiIgdGhlIGFwci9hcHItdXRpbCBzeW1ib2xzIHdoZW4gdXNpbmcKIGEgc2hhcmVkIGxpYmFwcnssdXRpbH0sIGl0IGp1c3QgYmxvYXRzIHRoZSBzeW1ib2wgdGFibGU7IHNvIGRvbid0LgogCi1VcHN0cmVhbS1IRUFEOiBuZWVkZWQKLVVwc3RyZWFtLTIuMDogb21pdAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIE5vdGU6IEVYUE9SVF9ESVJTIGNoYW5nZSBpcyBjb25kaXRpb25hbCBvbiB1c2luZyBzaGFyZWQgYXByCiAKLS0tLSBodHRwZC0yLjQuNC9zZXJ2ZXIvTWFrZWZpbGUuaW4uZXhwb3J0Ci0rKysgaHR0cGQtMi40LjQvc2VydmVyL01ha2VmaWxlLmluCi1AQCAtNTcsOSArNTcsNiBAQCBleHBvcnRfZmlsZXM6Ci0gCSggZm9yIGRpciBpbiAkKEVYUE9SVF9ESVJTKTsgZG8gXAorLS0tCisgc2VydmVyL01ha2VmaWxlLmluIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5pbiBiL3NlcnZlci9NYWtlZmlsZS5pbgoraW5kZXggY2IxMTY4NC4uMGQ0ODkyNCAxMDA2NDQKKy0tLSBhL3NlcnZlci9NYWtlZmlsZS5pbgorKysrIGIvc2VydmVyL01ha2VmaWxlLmluCitAQCAtNjAsOSArNjAsNiBAQCBleHBvcnRfZmlsZXM6CiAgCSAgICAgIGxzICQkZGlyLyouaCA7IFwKICAJICBkb25lOyBcCisgCSAgZWNobyAiJCh0b3Bfc3JjZGlyKS9zZXJ2ZXIvbXBtX2ZkcXVldWUuaCI7IFwKIC0JICBmb3IgZGlyIGluICQoRVhQT1JUX0RJUlNfQVBSKTsgZG8gXAogLQkgICAgICBscyAkJGRpci9hcFtydV0uaCAkJGRpci9hcFtydV1fKi5oIDI+L2Rldi9udWxsOyBcCiAtCSAgZG9uZTsgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL3JlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2gKaW5kZXggZTRlMDFiMi4uMDIwZjFkNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvcmVwbGFjZS1seW54LXRvLWN1cmwtaW4tYXBhY2hlY3RsLXNjcmlwdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9yZXBsYWNlLWx5bngtdG8tY3VybC1pbi1hcGFjaGVjdGwtc2NyaXB0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3NjBjY2JiMmZiMDQ2NjIxYTJhZWFlY2FiYjJiMWVmOWFhMjgwY2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NGE5ZTIyNDFlYTI3ZTc1YmFiYmZkZWIzODA0M2IxMzA0OWUyM2IwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWXVsb25nIFBlaSA8WXVsb25nLnBlaUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVGh1LCAxIFNlcCAyMDExIDAxOjAzOjE0ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHJlcGxhY2UgbHlueCB0byBjdXJsIGluIGFwYWNoZWN0bCBzY3JpcHQKQEAgLTYsMTQgKzYsMTUgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogWXVsb25nIFBlaSA8WXVsb25nLnBlaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3VwcG9ydC9hcGFjaGVjdGwuaW4gfCAgIDE0ICsrKysrKysrKystLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1JbmRleDogaHR0cGQtMi40LjI5L3N1cHBvcnQvYXBhY2hlY3RsLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaHR0cGQtMi40LjI5Lm9yaWcvc3VwcG9ydC9hcGFjaGVjdGwuaW4KLSsrKyBodHRwZC0yLjQuMjkvc3VwcG9ydC9hcGFjaGVjdGwuaW4KKy0tLQorIHN1cHBvcnQvYXBhY2hlY3RsLmluIHwgMTQgKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N1cHBvcnQvYXBhY2hlY3RsLmluIGIvc3VwcG9ydC9hcGFjaGVjdGwuaW4KK2luZGV4IDMyODFjMmUuLjZhYjRiYTUgMTAwNjQ0CistLS0gYS9zdXBwb3J0L2FwYWNoZWN0bC5pbgorKysrIGIvc3VwcG9ydC9hcGFjaGVjdGwuaW4KIEBAIC01MiwxMSArNTIsMTEgQEAgZmkKICAjIGEgY29tbWFuZCB0aGF0IG91dHB1dHMgYSBmb3JtYXR0ZWQgdGV4dCB2ZXJzaW9uIG9mIHRoZSBIVE1MIGF0IHRoZQogICMgdXJsIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuICBEZXNpZ25lZCBmb3IgbHlueCwgaG93ZXZlciBvdGhlcgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvc2VydmVyLW1ha2VmaWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTIvc2VydmVyLW1ha2VmaWxlLnBhdGNoCmluZGV4IGYxMzQ5Y2IuLjU0NzZkNGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyL3NlcnZlci1tYWtlZmlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi9zZXJ2ZXItbWFrZWZpbGUucGF0Y2gKQEAgLTEsNiArMSwxOCBAQAotLS0tIGh0dHAtMi4wLjU0L3NlcnZlci9NYWtlZmlsZS5pbi1vbGQJMjAwNS0xMi0yMCAxMzoyNjo1Ni4wMDAwMDAwMDAgLTA1MDAKLSsrKyBodHRwLTIuMC41NC9zZXJ2ZXIvTWFrZWZpbGUuaW4JMjAwNS0xMi0yMCAxMzoyNzoyMi4wMDAwMDAwMDAgLTA1MDAKLUBAIC0yNyw3ICsyNyw3IEBACitGcm9tIGFhMDJiYmZkOGYxNjg3MWRiNTU2M2E5NWZhOTRkZDE3MDk2NDk0OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgSnVsIDIwMTIgMTE6Mjc6MzkgKzAxMDAKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworLS0tCisgc2VydmVyL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmluIGIvc2VydmVyL01ha2VmaWxlLmluCitpbmRleCAxZmEzMzQ0Li5jYjExNjg0IDEwMDY0NAorLS0tIGEvc2VydmVyL01ha2VmaWxlLmluCisrKysgYi9zZXJ2ZXIvTWFrZWZpbGUuaW4KK0BAIC0yOSw3ICsyOSw3IEBAIGdlbl90ZXN0X2NoYXI6ICQoZ2VuX3Rlc3RfY2hhcl9PQkpFQ1RTKQogIAkkKExJTkspICQoRVhUUkFfTERGTEFHUykgJChnZW5fdGVzdF9jaGFyX09CSkVDVFMpICQoRVhUUkFfTElCUykKICAKICB0ZXN0X2NoYXIuaDogZ2VuX3Rlc3RfY2hhcgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDI5OGI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5NCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgQXBhY2hlIEhUVFAgU2VydmVyIGlzIGEgcG93ZXJmdWwsIGVmZmljaWVudCwgYW5kIFwKLWV4dGVuc2libGUgd2ViIHNlcnZlci4iCi1TVU1NQVJZID0gIkFwYWNoZSBIVFRQIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIKLURFUEVORFMgPSAibGlidG9vbC1uYXRpdmUgYXBhY2hlMi1uYXRpdmUgb3BlbnNzbCBleHBhdCBwY3JlIGFwciBhcHItdXRpbCIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXJ2ZXItbWFrZWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjEtY29yZWxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC40LWV4cG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMS1zZWxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlLWx5bngtdG8tY3VybC1pbi1hcGFjaGVjdGwtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS1zc2wtbHRtYWluLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4zLWZpeC1yYWNlLWlzc3VlLW9mLWRpci1pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9hcGFjaGUyIFwKLSAgICAgICAgICAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2MmIwYzc2MjM4MjZmZjk5NzY2ZmYxM2ZiOTAwN2Y4IgotU1JDX1VSSVttZDVzdW1dID0gIjBjNTk5NDA0ZWY2YjY5ZWVlOTViY2Q5ZmNkMDk0NDA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3Nzc1M2E1YTI1NTY4YTJhMjc0MjhiMjIxNDk4MDU2NGJjMWMzOGMxYWJmOWNjYzc2MzBiNjM5OTkxZjdmMDAiCi0KLVMgPSAiJHtXT1JLRElSfS9odHRwZC0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwYWNoZTIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZGlzYWJsZSIKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImFweHMgY29uZmlnX3ZhcnMubWsgY29uZmlnLm5pY2UiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1EUEFUSF9NQVg9NDA5NiIKLUNGTEFHU19wcmVwZW5kID0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCAiCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3NsIFwKLSAgICAtLXdpdGgtc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAtLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIFwKLSAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIFwKLSAgICAtLWVuYWJsZS1pbmZvIFwKLSAgICAtLWVuYWJsZS1yZXdyaXRlIFwKLSAgICAtLXdpdGgtZGJtPXNkYm0gXAotICAgIC0td2l0aC1iZXJrZWxleS1kYj1ubyBcCi0gICAgLS1sb2NhbHN0YXRlZGlyPS92YXIvJHtCUE59IFwKLSAgICAtLXdpdGgtZ2RibT1ubyBcCi0gICAgLS13aXRoLW5kYm09bm8gXAotICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS8ke0JQTn0gXAotICAgIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0vJHtCUE59L21vZHVsZXMgXAotICAgIGFwX2N2X3ZvaWRfcHRyX2x0X2xvbmc9bm8gXAotICAgIC0tZW5hYmxlLW1wbXMtc2hhcmVkIFwKLSAgICBhY19jdl9oYXZlX3RocmVhZHNhZmVfcG9sbHNldD1ubyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCAtLWVuYWJsZS1sYXlvdXQ9RGViaWFuIC0tcHJlZml4PSR7YmFzZV9wcmVmaXh9LywtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW29wZW5sZGFwXSA9ICItLWVuYWJsZS1sZGFwIC0tZW5hYmxlLWF1dGhuei1sZGFwLC0tZGlzYWJsZS1sZGFwIC0tZGlzYWJsZS1hdXRobnotbGRhcCxvcGVubGRhcCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIHNlZCAtaSAtZSAnczokJyd7cHJlZml4fS91c3IvbGliL2NnaS1iaW46JCcne2xpYmRpcn0vY2dpLWJpbjpnJyAke1N9L2NvbmZpZy5sYXlvdXQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgY2F0ICR7V09SS0RJUn0vaW5pdCB8IFwKLSAgICAgICAgc2VkIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4vLCR7YmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9saWIsJHtsaWJkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LyxnJyBcCi0gICAgICAgICAgICAtZSAncywvdXNyLywke3ByZWZpeH0vLGcnID4gJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLSAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLSAgICAjIHJlbW92ZSB0aGUgZ29vZnkgb3JpZ2luYWwgZmlsZXMuLi4KLSAgICBybSAtcmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9vcmlnaW5hbAotICAgICMgRXhwYXQgc2hvdWxkIGJlIGZvdW5kIGluIHRoZSBzdGFnaW5nIGFyZWEgdmlhIERFUEVORFMuLi4KLSAgICBybSAtZiAke0R9LyR7bGliZGlyfS9saWJleHBhdC4qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQKLQotICAgICMgRW5zdXJlIGNvbmZpZ3VyYXRpb24gZmlsZSBwdWxscyBpbiBjb25mLmQgYW5kIG1vZHVsZXMuZAotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kLyouY29uZiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5sb2FkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmNvbmZcblxuIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICAjIG1hdGNoIHdpdGggdGhhdCBpcyBpbiBpbml0IHNjcmlwdAotICAgIHByaW50ZiAiXG5QaWRGaWxlIC9ydW4vaHR0cGQucGlkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICAjIFNldCAnU2VydmVyTmFtZScgdG8gZml4IGVycm9yIG1lc3NhZ2VzIHdoZW4gcmVzdGFydCBhcGFjaGUgc2VydmljZQotICAgIHNlZCAtaSAncy9eI1NlcnZlck5hbWUgd3d3LmV4YW1wbGUuY29tL1NlcnZlck5hbWUgbG9jYWxob3N0LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZTItdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotICAgIGVsaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjA0X2FwYWNoZTIgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDRfYXBhY2hlMgotICAgIGZpCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotICAgIHNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotCi0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCi0gICAgICAgICAgIC1lICdzLEFQVV9JTkNMVURFRElSID0gLiosQVBVX0lOQ0xVREVESVIgPSAsZycgXAotICAgICAgICAgICAtZSAncyxBUFVfQ09ORklHID0gLiosQVBVX0NPTkZJRyA9ICxnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZ192YXJzLm1rCi0KLSAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotICAgICAgICAgICAtZSAncywiLiovY29uZmlndXJlIiwiY29uZmlndXJlIixnJyAke0R9JHtkYXRhZGlyfS9hcGFjaGUyL2J1aWxkL2NvbmZpZy5uaWNlCi0gICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImFwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MiCi0KLWFwYWNoZV9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2FweHMgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtEfSR7c2JpbmRpcn0vYXBhY2hlY3RsICR7U1lTUk9PVF9ERVNURElSfSR7c2JpbmRpcn0vCi0gICAgc2VkIC1pICdzIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAuKiFteSAkaW5zdGFsbGJ1aWxkZGlyID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotICAgIHNlZCAtaSAncyFteSAkbGlidG9vbCA9IC4qIW15ICRsaWJ0b29sID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotCi0gICAgc2VkIC1pICdzIV5BUFJfQ09ORklHID0gLiohQVBSX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5BUFVfQ09ORklHID0gLiohQVBVX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5pbmNsdWRlZGlyID0gLiohaW5jbHVkZWRpciA9ICR7U1RBR0lOR19JTkNESVJ9L2FwYWNoZTIhJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeQ0ZMQUdTID0gLUlbXiBdKiFDRkxBR1MgPSAtSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2whJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeRVhUUkFfTERGTEFHUyA9IC4qIUVYVFJBX0xERkxBR1MgPSAtTCR7U1RBR0lOR19MSUJESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkVYVFJBX0lOQ0xVREVTID0gLiohRVhUUkFfSU5DTFVERVMgPSAtSSQoaW5jbHVkZWRpcikgLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyEtLXN5c3Jvb3Q9W14gXSohLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotfQotCi0jCi0jIGltcGxpY2F0aW9ucyAtIHVzZWQgYnkgdXBkYXRlLXJjLmQgc2NyaXB0cwotIwotSU5JVFNDUklQVF9OQU1FID0gImFwYWNoZTIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSAyMCIKLUxFQURfU09OQU1FID0gImxpYmFwci0xLnNvLjAiCi0KLVBBQ0tBR0VTID0gIiR7UE59LXNjcmlwdHMgJHtQTn0tZG9jICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tYWdpYyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWltZS50eXBlcyBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59ICIKLQotIyB3ZSBvdmVycmlkZSBoZXJlIHJhdGhlciB0aGFuIGFwcGVuZCBzbyB0aGF0IC5zbyBsaW5rcyBhcmUKLSMgaW5jbHVkZWQgaW4gdGhlIHJ1bnRpbWUgcGFja2FnZSByYXRoZXIgdGhhbiBoZXJlICgtZGV2KQotIyBhbmQgdG8gZ2V0IGJ1aWxkLCBpY29ucywgZXJyb3IgaW50byB0aGUgLWRldiBwYWNrYWdlCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2ljb25zIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9lcnJvciBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Fwci1jb25maWcgJHtiaW5kaXJ9L2FwdS1jb25maWcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9hcHIqLmV4cCBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vKi5hIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXB4cyBcCi0gICAgICAgICAgICAgICAgIgotCi0KLSMgbWFudWFsIHRvIG1hbnVhbAotRklMRVNfJHtQTn0tZG9jICs9ICIgJHtkYXRhZGlyfS8ke0JQTn0vbWFudWFsIgotCi1GSUxFU18ke1BOfS1zY3JpcHRzICs9ICIke2JpbmRpcn0vZGJtbWFuYWdlIgotCi0jCi0jIG92ZXJyaWRlIHRoaXMgdG9vIC0gaGVyZSBpcyB0aGUgZGVmYXVsdCwgbGVzcyBkYXRhZGlyCi0jCi1GSUxFU18ke1BOfSA9ICAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0gJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICR7c2hhcmVkc3RhdGVkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0gL2JpbiAvc2JpbiAvbGliLyouc28qIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59IgotCi0jIHdlIHdhbnQgaHRkb2NzIGFuZCBjZ2ktYmluIHRvIGdvIHdpdGggdGhlIGJpbmFyeQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59L2h0ZG9jcyAke2RhdGFkaXJ9LyR7QlBOfS9jZ2ktYmluIgotCi0jbWFrZSBzdXJlIHRoZSBsb25lIC5zbyBsaW5rcyBhbHNvIGdldCB3cmFwcGVkIGluIHRoZSBiYXNlIHBhY2thZ2UKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vcGtnY29uZmlnLyoiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzLy5kZWJ1ZyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbGliZ2NjIgotUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAicGVybCAke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2NnaS1iaW4iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0vIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjM0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4N2UzODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMl8yLjQuMzQuYmIKQEAgLTAsMCArMSwyMDAgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBBcGFjaGUgSFRUUCBTZXJ2ZXIgaXMgYSBwb3dlcmZ1bCwgZWZmaWNpZW50LCBhbmQgXAorZXh0ZW5zaWJsZSB3ZWIgc2VydmVyLiIKK1NVTU1BUlkgPSAiQXBhY2hlIEhUVFAgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvIgorREVQRU5EUyA9ICJsaWJ0b29sLW5hdGl2ZSBhcGFjaGUyLW5hdGl2ZSBvcGVuc3NsIGV4cGF0IHBjcmUgYXByIGFwci11dGlsIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9odHRwZC9odHRwZC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3NlcnZlci1tYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9odHRwZC0yLjQuMS1jb3JlbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjQtZXhwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2h0dHBkLTIuNC4xLXNlbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlLWNvbmZpZ3VyZV9wZXJsYmluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHR0cGQtMi40LjMtZml4LXJhY2UtaXNzdWUtb2YtZGlyLWluc3RhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLXNlbGludXgtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMTc2My5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZTItdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjA0X2FwYWNoZTIgXAorICAgICAgICAgICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDUyZDBmZDBiYzc4OGYwNjhlNjQ3MTE2YzAxZGRmY2QiCitTUkNfVVJJW21kNXN1bV0gPSAiODE4YWRjYTUyZjNiZTE4N2ZlNDVkNjgyMjc1NWJlOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE1M2M5NTYzMWZlYmIwOGE5ZGU0MWZkMjg2NGNmZmY4MTVjZjYyZDkzMDY3MjNhYjBkNGI4ZDdhYTE2MzhmMCIKKworUyA9ICIke1dPUktESVJ9L2h0dHBkLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJodHBhc3N3ZC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2h0cGFzc3dkLjFdID0gIiR7bWFuZGlyfS9tYW4xL2h0cGFzc3dkLjEiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJhcGFjaGUyLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtRFBBVEhfTUFYPTQwOTYiCitDRkxBR1NfcHJlcGVuZCA9ICItSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2wgIgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNzbCBcCisgICAgLS13aXRoLXNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgLS13aXRoLWV4cGF0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyBcCisgICAgLS1lbmFibGUtaW5mbyBcCisgICAgLS1lbmFibGUtcmV3cml0ZSBcCisgICAgLS13aXRoLWRibT1zZGJtIFwKKyAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAorICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyLyR7QlBOfSBcCisgICAgLS13aXRoLWdkYm09bm8gXAorICAgIC0td2l0aC1uZGJtPW5vIFwKKyAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS8ke0JQTn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9LyR7QlBOfSBcCisgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzIFwKKyAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKKyAgICAtLWVuYWJsZS1tcG1zLXNoYXJlZCBcCisgICAgYWNfY3ZfaGF2ZV90aHJlYWRzYWZlX3BvbGxzZXQ9bm8gXAorICAgIC0tZW5hYmxlLWxheW91dD1EZWJpYW4gXAorICAgIC0tcHJlZml4PSR7YmFzZV9wcmVmaXh9LyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGxpYnNlbGludXgiCitQQUNLQUdFQ09ORklHW29wZW5sZGFwXSA9ICItLWVuYWJsZS1sZGFwIC0tZW5hYmxlLWF1dGhuei1sZGFwLC0tZGlzYWJsZS1sZGFwIC0tZGlzYWJsZS1hdXRobnotbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtZGVmbGF0ZSAtLXdpdGgtej0ke1NUQUdJTkdfTElCRElSfSwsemxpYix6bGliIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzOiQnJ3twcmVmaXh9L3Vzci9saWIvY2dpLWJpbjokJyd7bGliZGlyfS9jZ2ktYmluOmcnICR7U30vY29uZmlnLmxheW91dAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBjYXQgJHtXT1JLRElSfS9pbml0IHwgXAorICAgICAgICBzZWQgLWUgJ3MsL3Vzci9zYmluLywke3NiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2Jpbi8sJHtiaW5kaXJ9LyxnJyBcCisgICAgICAgICAgICAtZSAncywvdXNyL2xpYiwke2xpYmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLGcnIFwKKyAgICAgICAgICAgIC1lICdzLC91c3IvLCR7cHJlZml4fS8sZycgPiAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorICAgIGNobW9kIDc1NSAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kLyR7QlBOfQorICAgICMgcmVtb3ZlIHRoZSBnb29meSBvcmlnaW5hbCBmaWxlcy4uLgorICAgIHJtIC1yZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L29yaWdpbmFsCisgICAgIyBFeHBhdCBzaG91bGQgYmUgZm91bmQgaW4gdGhlIHN0YWdpbmcgYXJlYSB2aWEgREVQRU5EUy4uLgorICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYmV4cGF0LioKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L2NvbmYuZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZAorCisgICAgIyBFbnN1cmUgY29uZmlndXJhdGlvbiBmaWxlIHB1bGxzIGluIGNvbmYuZCBhbmQgbW9kdWxlcy5kCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQvKi5jb25mIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmxvYWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vbW9kdWxlcy5kLyouY29uZlxuXG4iID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgICMgbWF0Y2ggd2l0aCB0aGF0IGlzIGluIGluaXQgc2NyaXB0CisgICAgcHJpbnRmICJcblBpZEZpbGUgL3J1bi9odHRwZC5waWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorICAgICMgU2V0ICdTZXJ2ZXJOYW1lJyB0byBmaXggZXJyb3IgbWVzc2FnZXMgd2hlbiByZXN0YXJ0IGFwYWNoZSBzZXJ2aWNlCisgICAgc2VkIC1pICdzL14jU2VydmVyTmFtZSB3d3cuZXhhbXBsZS5jb20vU2VydmVyTmFtZSBsb2NhbGhvc3QvJyAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgZWxpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDRfYXBhY2hlMiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNF9hcGFjaGUyCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCisgICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYXBhY2hlMi5zZXJ2aWNlCisKKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCisgICAgICAgICAgIC1lICdzLEFQVV9DT05GSUcgPSAuKixBUFVfQ09ORklHID0gLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnX3ZhcnMubWsKKworICAgIHNlZCAtaSAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyBcCisgICAgICAgICAgIC1lICdzLCIuKi9jb25maWd1cmUiLCJjb25maWd1cmUiLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnLm5pY2UKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vYXB4cyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtzYmluZGlyfS9hcGFjaGVjdGwgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfS8KKyAgICBzZWQgLWkgJ3MhbXkgJGluc3RhbGxidWlsZGRpciA9IC4qIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfS8ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisgICAgc2VkIC1pICdzIW15ICRsaWJ0b29sID0gLiohbXkgJGxpYnRvb2wgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCI7IScgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9hcHhzCisKKyAgICBzZWQgLWkgJ3MhXkFQUl9DT05GSUcgPSAuKiFBUFJfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXByLTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkFQVV9DT05GSUcgPSAuKiFBUFVfQ09ORklHID0gJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vYXB1LTEtY29uZmlnIScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXmluY2x1ZGVkaXIgPSAuKiFpbmNsdWRlZGlyID0gJHtTVEFHSU5HX0lOQ0RJUn0vYXBhY2hlMiEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5DRkxBR1MgPSAtSVteIF0qIUNGTEFHUyA9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5FWFRSQV9MREZMQUdTID0gLiohRVhUUkFfTERGTEFHUyA9IC1MJHtTVEFHSU5HX0xJQkRJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeRVhUUkFfSU5DTFVERVMgPSAuKiFFWFRSQV9JTkNMVURFUyA9IC1JJChpbmNsdWRlZGlyKSAtSS4gLUkke1NUQUdJTkdfSU5DRElSfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIS0tc3lzcm9vdD1bXiBdKiEtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCit9CisKKyMKKyMgaW1wbGljYXRpb25zIC0gdXNlZCBieSB1cGRhdGUtcmMuZCBzY3JpcHRzCisjCitJTklUU0NSSVBUX05BTUUgPSAiYXBhY2hlMiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDkxIDIwIgorTEVBRF9TT05BTUUgPSAibGliYXByLTEuc28uMCIKKworUEFDS0FHRVMgPSAiJHtQTn0tc2NyaXB0cyAke1BOfS1kb2MgJHtQTn0tZGV2ICR7UE59LWRiZyAke1BOfSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21hZ2ljIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9LyR7QlBOfS9taW1lLnR5cGVzIFwKKyAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0gIgorCisjIHdlIG92ZXJyaWRlIGhlcmUgcmF0aGVyIHRoYW4gYXBwZW5kIHNvIHRoYXQgLnNvIGxpbmtzIGFyZQorIyBpbmNsdWRlZCBpbiB0aGUgcnVudGltZSBwYWNrYWdlIHJhdGhlciB0aGFuIGhlcmUgKC1kZXYpCisjIGFuZCB0byBnZXQgYnVpbGQsIGljb25zLCBlcnJvciBpbnRvIHRoZSAtZGV2IHBhY2thZ2UKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9LyR7QlBOfS9idWlsZCBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vaWNvbnMgXAorICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59L2Vycm9yIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXByLWNvbmZpZyAke2JpbmRpcn0vYXB1LWNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2FwciouZXhwIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyoubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS8qLmEgXAorICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9hcHhzIFwKKyAgICAgICAgICAgICAgICAiCisKKworIyBtYW51YWwgdG8gbWFudWFsCitGSUxFU18ke1BOfS1kb2MgKz0gIiAke2RhdGFkaXJ9LyR7QlBOfS9tYW51YWwiCisKK0ZJTEVTXyR7UE59LXNjcmlwdHMgKz0gIiR7YmluZGlyfS9kYm1tYW5hZ2UiCisKKyMKKyMgb3ZlcnJpZGUgdGhpcyB0b28gLSBoZXJlIGlzIHRoZSBkZWZhdWx0LCBsZXNzIGRhdGFkaXIKKyMKK0ZJTEVTXyR7UE59ID0gICIke2JpbmRpcn0gJHtzYmluZGlyfSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgJHtzaGFyZWRzdGF0ZWRpcn0gJHtsb2NhbHN0YXRlZGlyfSAvYmluIC9zYmluIC9saWIvKi5zbyogXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS8ke0JQTn0iCisKKyMgd2Ugd2FudCBodGRvY3MgYW5kIGNnaS1iaW4gdG8gZ28gd2l0aCB0aGUgYmluYXJ5CitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS8ke0JQTn0vaHRkb2NzICR7ZGF0YWRpcn0vJHtCUE59L2NnaS1iaW4iCisKKyNtYWtlIHN1cmUgdGhlIGxvbmUgLnNvIGxpbmtzIGFsc28gZ2V0IHdyYXBwZWQgaW4gdGhlIGJhc2UgcGFja2FnZQorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS9wa2djb25maWcvKiIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtCUE59L21vZHVsZXMvLmRlYnVnIgorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBsaWJnY2MiCitSREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJwZXJsICR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInBlcmwiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vY2dpLWJpbiIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvZmlsZXMvMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzLzAwMDEtY29uZmlndXJlLXVzZS1wa2ctY29uZmlnLWZvci1QQ1JFLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMwOTZkYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvZmlsZXMvMDAwMS1jb25maWd1cmUtdXNlLXBrZy1jb25maWctZm9yLVBDUkUtZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSBkODgzNzc1NmYyYTQ4YWRjZmU1ZDY0NWMzOWNmMTYzZDk2ZWFjNzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLURhdGU6IFR1ZSwgMTcgSnVuIDIwMTQgMDk6MTA6NTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiB1c2UgcGtnLWNvbmZpZyBmb3IgUENSRSBkZXRlY3Rpb24KLQotU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuLmtvb2lAbGluYXJvLm9yZz4KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZwotLS0tCi0gY29uZmlndXJlLmluIHwgMjcgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDg2NGQ3YzcuLmRhNDEzOGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTIxNSwyOCArMjE1LDExIEBAIGZpCi0gQUNfQVJHX1dJVEgocGNyZSwKLSBBUEFDSEVfSEVMUF9TVFJJTkcoLS13aXRoLXBjcmU9UEFUSCxVc2UgZXh0ZXJuYWwgUENSRSBsaWJyYXJ5KSkKLSAKLS1BQ19QQVRIX1BST0coUENSRV9DT05GSUcsIHBjcmUtY29uZmlnLCBmYWxzZSkKLS1pZiB0ZXN0IC1kICIkd2l0aF9wY3JlIiAmJiB0ZXN0IC14ICIkd2l0aF9wY3JlL2Jpbi9wY3JlLWNvbmZpZyI7IHRoZW4KLS0gICBQQ1JFX0NPTkZJRz0kd2l0aF9wY3JlL2Jpbi9wY3JlLWNvbmZpZwotLWVsaWYgdGVzdCAteCAiJHdpdGhfcGNyZSI7IHRoZW4KLS0gICBQQ1JFX0NPTkZJRz0kd2l0aF9wY3JlCi0tZmkKLS0KLS1pZiB0ZXN0ICIkUENSRV9DT05GSUciICE9ICJmYWxzZSI7IHRoZW4KLS0gIGlmICRQQ1JFX0NPTkZJRyAtLXZlcnNpb24gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKLS0gICAgQUNfTVNHX0VSUk9SKFtEaWQgbm90IGZpbmQgcGNyZS1jb25maWcgc2NyaXB0IGF0ICRQQ1JFX0NPTkZJR10pCi0tICBmaQotLSAgY2FzZSBgJFBDUkVfQ09ORklHIC0tdmVyc2lvbmAgaW4KLS0gIFtbMS01XS4qXSkKLS0gICAgQUNfTVNHX0VSUk9SKFtOZWVkIGF0IGxlYXN0IHBjcmUgdmVyc2lvbiA2LjBdKQotLSAgICA7OwotLSAgZXNhYwotLSAgQUNfTVNHX05PVElDRShbVXNpbmcgZXh0ZXJuYWwgUENSRSBsaWJyYXJ5IGZyb20gJFBDUkVfQ09ORklHXSkKLS0gIEFQUl9BRERUTyhQQ1JFX0lOQ0xVREVTLCBbYCRQQ1JFX0NPTkZJRyAtLWNmbGFnc2BdKQotLSAgQVBSX0FERFRPKFBDUkVfTElCUywgW2AkUENSRV9DT05GSUcgLS1saWJzYF0pCi0tZWxzZQotLSAgQUNfTVNHX0VSUk9SKFtwY3JlLWNvbmZpZyBmb3IgbGlicGNyZSBub3QgZm91bmQuIFBDUkUgaXMgcmVxdWlyZWQgYW5kIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly9wY3JlLm9yZy9dKQotLWZpCi0rUEtHX0NIRUNLX01PRFVMRVMoW1BDUkVdLCBbbGlicGNyZV0sIFsKLSsgIEFDX0RFRklORShbSEFWRV9QQ1JFXSwgWzFdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBDUkUgbGlicmFyeV0pCi0rXSwgWwotKyAgQUNfTVNHX0VSUk9SKFskUENSRV9QS0dfRVJST1JTXSkKLStdKQotIEFQQUNIRV9TVUJTVChQQ1JFX0xJQlMpCi0gCi0gQUNfTVNHX05PVElDRShbXSkKLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLXNlbGludXgtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9maWxlcy9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1zZWxpbnV4LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNWMyOTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2ZpbGVzL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLXNlbGludXgtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gZDIzZGQzM2UzNzMzNDBmNmZkZGYxMTkwNDgzOWQxYTExODgyNDQwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxIERlYyAyMDE0IDAyOjA4OjI3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFwYWNoZTI6IGFsbG93IHRvIGRpc2FibGUgc2VsaW51eCBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8ICAgMTQgKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgotaW5kZXggZGY5NGVlNS4uOGMzYWIyMSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtNDY2LDEwICs0NjYsMTYgQEAgZ2V0bG9hZGF2ZwotIGRubCBjb25maXJtIHRoYXQgYSB2b2lkIHBvaW50ZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIHN0b3JlIGEgbG9uZyBpbnRlZ2VyCi0gQVBBQ0hFX0NIRUNLX1ZPSURfUFRSX0xFTgotIAotLUFDX0NIRUNLX0xJQihzZWxpbnV4LCBpc19zZWxpbnV4X2VuYWJsZWQsIFsKLS0gICBBQ19ERUZJTkUoSEFWRV9TRUxJTlVYLCAxLCBbRGVmaW5lZCBpZiBTRUxpbnV4IGlzIHN1cHBvcnRlZF0pCi0tICAgQVBSX0FERFRPKEFQX0xJQlMsIFstbHNlbGludXhdKQotLV0pCi0rIyBTRUxpbnV4IHN1cHBvcnQKLStBQ19BUkdfRU5BQkxFKHNlbGludXgsQVBBQ0hFX0hFTFBfU1RSSU5HKC0tZW5hYmxlLXNlbGludXgsRW5hYmxlIFNFTGludXggc3VwcG9ydCBbZGVmYXVsdD1hdXRvXSksCi0rICAgIFtdLFtlbmFibGVfc2VsaW51eD1hdXRvXSkKLSsKLStpZiB0ZXN0IHgkZW5hYmxlX3NlbGludXggIT0geG5vOyB0aGVuCi0rICAgIEFDX0NIRUNLX0xJQihzZWxpbnV4LCBpc19zZWxpbnV4X2VuYWJsZWQsIFsKLSsgICAgICAgIEFDX0RFRklORShIQVZFX1NFTElOVVgsIDEsIFtEZWZpbmVkIGlmIFNFTGludXggaXMgc3VwcG9ydGVkXSkKLSsgICAgICAgIEFQUl9BRERUTyhBUF9MSUJTLCBbLWxzZWxpbnV4XSkKLSsgICAgXSkKLStmaQotIAotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgZ2V0dGlkKCldLCBhY19jdl9nZXR0aWQsCi0gW0FDX1RSWV9SVU4oI2RlZmluZSBfR05VX1NPVVJDRQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9maWxlcy9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9maWxlcy9odHRwZC0yLjQuMy1maXgtcmFjZS1pc3N1ZS1vZi1kaXItaW5zdGFsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk0ODc1My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvZmlsZXMvaHR0cGQtMi40LjMtZml4LXJhY2UtaXNzdWUtb2YtZGlyLWluc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZml4IGZvbGxvd2luZyByYWNlIGlzc3VlIHdoZW4gZG8gcGFyYWxsZWwgaW5zdGFsbAotfCBta2RpcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgYC9ob21lL215cGMvd29ya3NwYWNlL3Bva3kvYnVpbGRfcDQwODBkc19yZWxlYXNlL3RtcC93b3JrL3BwY2U1MDBtYy1mc2xfbmV0d29ya2luZy1saW51eC9hcGFjaGUyLzIuNC4zLXIxL2ltYWdlL3Vzci9zaGFyZS9hcGFjaGUyJzogRmlsZSBleGlzdHMKLS4uLgotfCBta2RpcjogY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgYC9ob21lL215cGMvd29ya3NwYWNlL3Bva3kvYnVpbGRfcDQwODBkc19yZWxlYXNlL3RtcC93b3JrL3BwY2U1MDBtYy1mc2xfbmV0d29ya2luZy1saW51eC9hcGFjaGUyLzIuNC4zLXIxL2ltYWdlL3Vzci9zaGFyZS9hcGFjaGUyJzogRmlsZSBleGlzdHMKLXwgbWFrZVsxXTogKioqIFtpbnN0YWxsLW1hbl0gRXJyb3IgMQotfCBtYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotCi0tU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQGZyZWVzY2FsZS5jb20+Ci0tLS0gaHR0cGQtMi40LjMvYnVpbGQvbWtkaXIuc2gub3JpZwkyMDEzLTAxLTI1IDAzOjQ3OjIxLjU2NTI1NTQyMCAtMDYwMAotKysrIGh0dHBkLTIuNC4zL2J1aWxkL21rZGlyLnNoCTIwMTMtMDEtMjUgMDM6NDY6MTcuODMzMDUxMjMwIC0wNjAwCi1AQCAtMzksNyArMzksNyBAQAotICAgICAgICAgZXNhYwotICAgICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0gICAgICAgICAgICAgZWNobyAibWtkaXIgJHBhdGhjb21wIiAxPiYyCi0tICAgICAgICAgICAgbWtkaXIgIiRwYXRoY29tcCIgfHwgZXJyc3RhdHVzPSQ/Ci0rICAgICAgICAgICAgbWtkaXIgLXAgIiRwYXRoY29tcCIgfHwgZXJyc3RhdHVzPSQ/Ci0gICAgICAgICBmaQotICAgICAgICAgcGF0aGNvbXA9IiRwYXRoY29tcC8iCi0gICAgIGRvbmUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuNy5iYgppbmRleCA0YzNjYTU1Li5kNmM0NDliIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC43LmJiCkBAIC0yLDcgKzIsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5oaWF3YXRoYS13ZWJzZXJ2ZXIub3JnIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQiCitERVBFTkRTID0gImxpYnhtbDIgbGlieHNsdCB2aXJ0dWFsL2NyeXB0IgogCiBTRUNUSU9OID0gIm5ldCIKIApAQCAtMjMsNyArMjMsNyBAQAogRVhUUkFfT0VDTUFLRSA9ICIgLURFTkFCTEVfSVBWNj1PRkYgXAogICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0FDSEU9T0ZGIFwKICAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX0RFQlVHPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9TU0w9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RMUz1PRkYgXAogICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9PTEtJVD1PRkYgXAogICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0hST09UPU9GRiBcCiAgICAgICAgICAgICAgICAgICAtREVOQUJMRV9YU0xUPU9OIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKaW5kZXggZTZhZTUyYS4uMjRjMmNlZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueC5pbmMKQEAgLTksNyArOSw3IEBACiAKIFNFQ1RJT04gPSAibmV0IgogCi1ERVBFTkRTID0gImxpYnBjcmUgemxpYiBvcGVuc3NsIgorREVQRU5EUyA9ICJsaWJwY3JlIHpsaWIiCiAKIFNSQ19VUkkgPSAiIFwKICAgICBodHRwOi8vbmdpbngub3JnL2Rvd25sb2FkL25naW54LSR7UFZ9LnRhci5neiBcCkBAIC0zNCw3ICszNCwxMCBAQAogRVhUUkFfT0VDT05GID0gIiIKIERJU0FCTEVfU1RBVElDID0gIiIKIAorUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCIKKwogUEFDS0FHRUNPTkZJR1todHRwMl0gPSAiLS13aXRoLWh0dHBfdjJfbW9kdWxlLCwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLWh0dHBfc3NsX21vZHVsZSwsb3BlbnNzbCIKIAogZG9fY29uZmlndXJlICgpIHsKICAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgpAQCAtNzEsNyArNzQsNyBAQAogICAgIC0taHR0cC1zY2dpLXRlbXAtcGF0aD0vcnVuL25naW54L3NjZ2lfdGVtcCBcCiAgICAgLS1waWQtcGF0aD0vcnVuL25naW54L25naW54LnBpZCBcCiAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLXdpdGgtaHR0cF9zc2xfbW9kdWxlIFwKKyAgICAtLXdpdGgtdGhyZWFkcyBcCiAgICAgLS13aXRoLWh0dHBfZ3ppcF9zdGF0aWNfbW9kdWxlIFwKICAgICAke0VYVFJBX09FQ09ORn0gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVhZDI5Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBuZ2lueC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzNzUzZGU1Zjg2YTFlZTAzNDFmZDJmOTQ5MWIyODIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZDJmYzc2MjExNDM1ZjAyOTI3MWYxY2Y2ZDdlZWFlMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDVmMzc5ZGExZDVmYjVhZWZhNzllNDVjODI5ODUyY2E2OTgzYzdjZDJhNzkzMjhmOGUwODRhMzI0Y2YwNDE2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjEzLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIzNDc5NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTMuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLSMgMS4xMi54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAotIyAxLjEzLnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2OTE0MDJjYzU0Y2UwOWY4MDBjYTM0ODYzNGEyZGZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGNkNDgyZGQ5OGQyMDIyNjU5MjEyZjE4M2U4ZmU4MWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZhZWExODg1NzUxNmZlNjhkMzBiZTM5YzMwMzJiZDIyZWQ5Y2Y4NWUxYTZmZGYzMmUzNzIxZDk2ZmY3ZmE0MiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYxYmE4ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNS4xLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgbmdpbnguaW5jCisKKyMgMS4xNC54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAorIyAxLjE1LnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTM2OTE0MDJjYzU0Y2UwOWY4MDBjYTM0ODYzNGEyZGZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmRkNWEyNjVjNTRhNzZiNjk5NDQzOTMxZDgwYTYxYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcyMDY4NThkN2Y4MzJiOGVmNzNhNDVjOWI4ZjhlNDM2YmNiMWVlODhkYjJiYzg1YjhlNDM4ZWNlYzlkNTQ2MCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE1LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY5NGY1YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNS4yLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBuZ2lueC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzY5MTQwMmNjNTRjZTA5ZjgwMGNhMzQ4NjM0YTJkZmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDYzZjc0NmQzZGM0Mjk4YWVkOWM1MThmMTY4NDE2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWJhMDlhZWNmYmU4Mjc3YWMzM2E1YTI0ODZlYzJkNjczMTczOWYzYzFjNzAxYjQyYTBjMzc4NGFmNjdhZDkwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbm9zdHJvbW8vbm9zdHJvbW9fMS45LjYuYmIKaW5kZXggMTZmNDVjZS4uYTZiMWZmMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25vc3Ryb21vL25vc3Ryb21vXzEuOS42LmJiCkBAIC0xNiw3ICsxNiw3IEBACiAKIFRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgogCi1ERVBFTkRTID0gIm9wZW5zc2wgZ3JvZmYtbmF0aXZlIGJhc2UtcGFzc3dkIgorREVQRU5EUyA9ICJvcGVuc3NsIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCB2aXJ0dWFsL2NyeXB0IgogCiBpbmhlcml0IHVwZGF0ZS1yYy5kCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvc3RodHRwZC9zdGh0dHBkXzIuMjcuMS5iYgppbmRleCAzN2JkNzUzLi44NjMyYjk3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL3N0aHR0cGQvc3RodHRwZF8yLjI3LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9zdGh0dHBkL3N0aHR0cGRfMi4yNy4xLmJiCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvdGh0dHBkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNjttZDU9MGM1NzYyYzJjMzRkY2JlOWViMTg4MTU1MTY1MDI4NzIiCiAKLURFUEVORFMgKz0gImJhc2UtcGFzc3dkIgorREVQRU5EUyArPSAiYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmx1ZW5lc3MvJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly90aHR0cGQuc2VydmljZSBcCkBAIC0xOSw3ICsxOSwxMSBAQAogCiBTID0gIiR7V09SS0RJUn0vc3RodHRwZC0ke1BWfSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJodHBhc3N3ZC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2h0cGFzc3dkLjFdID0gIiR7bWFuZGlyfS9tYW4xL2h0cGFzc3dkLjEiCiAKIFNSVl9ESVIgPz0gIiR7c2VydmljZWRpcn0vd3d3IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC43LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC43LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3MTU3MmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuNy45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWItYmFzZWQgTXlTUUwgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5waHBteWFkbWluLm5ldCIKLSMgTWFpbiBjb2RlIGlzIEdQTHYyLCB2ZW5kb3IvdGVjbmlja2NvbS90Y3BkZiBpcyB1bmRlciBMR1BMdjMsIGpzL2pxdWVyeSBpcyB1bmRlciBNSVQKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly92ZW5kb3IvdGVjbmlja2NvbS90Y3BkZi9MSUNFTlNFLlRYVDttZDU9NWM4N2I2NmE1MzU4ZWJjYzQ5NWIwM2UwYWZjZDM0MmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanMvanF1ZXJ5L01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkgXAotIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjBhODYyZTNmYTUyYzhiOTA3OGUwNDQxZWU4MmJlODMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxOWI1MDNmMGFmYjBkZDMzODlkNGJiMTFkYWIzZjQzOGQzNmU4NWVlZjExYTVjNDAwYzU5MmZkNWY1MzkzOTgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5waHBteWFkbWluLm5ldC9kb3dubG9hZHMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGhwTXlBZG1pbi0oP1A8cHZlcj5cZCsoXC5cZCspKyktYWxsLWxhbmd1YWdlcy50YXIueHoiCi0KLVMgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCi0KLWluaGVyaXQgYWxsYXJjaAotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0Ci0gICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCi0KLSAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCi0gICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC44LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc1ZjYzMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl80LjguMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgorIyBNYWluIGNvZGUgaXMgR1BMdjIsIHZlbmRvci90ZWNuaWNrY29tL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3ZlbmRvci90ZWNuaWNrY29tL3RjcGRmL0xJQ0VOU0UuVFhUO21kNT01Yzg3YjY2YTUzNThlYmNjNDk1YjAzZTBhZmNkMzQyYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcy92ZW5kb3IvanF1ZXJ5L01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkgXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImM4YTYwM2Y0Yjc4ZDFkYmNlZmMxOTFiOGFlNTk4Yzc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1ZjI2OTIwOTRkMzFjMmMzMjNkNDc2NzAyMzU4M2FiMTEyYWQ1NGZmZjllM2FmMzcyNzEwZmNiNjc2MTUxYWYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5waHBteWFkbWluLm5ldC9kb3dubG9hZHMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGhwTXlBZG1pbi0oP1A8cHZlcj5cZCsoXC5cZCspKyktYWxsLWxhbmd1YWdlcy50YXIueHoiCisKK1MgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59CisgICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59CisgICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCisKKyAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCisgICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKK30KKworRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGhwLWNsaSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTE2OTg4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nIGV4dGVuc2lvbiBmb3IgUEhQIgotTElDRU5TRSA9ICJYZGVidWciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNGRmM2EyNzRhYTEyYjc5NTQxN2M2NTYzNGMwN2YxNiIKLQotREVQRU5EUyA9ICJwaHAgcmUyYy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hkZWJ1Zy5vcmcvZmlsZXMveGRlYnVnLSR7UFZ9LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVkMzU0NTg1MmU2ZjRhMDBmYjg3MzAzNjJkMDQzMWVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MjY0Y2MwM2JmNjhmY2JiMDRiOTcyMjlmOTZkY2E1MDVkN2I4N2VjMmZiM2JkNDI0OTg5Njc4M2QyOWNiZGMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUteGRlYnVnIC13aXRoLXBocC1jb25maWc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwLWNvbmZpZyIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGNkICR7U30KLSAgICAke1NUQUdJTkdfQklORElSX0NST1NTfS9waHBpemUKLSAgICBjZCAke0J9Ci0KLSAgICAjIFJ1bm5pbmcgYXV0b3JlY29uZiBhcyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHdvdWxkIGRvIGhlcmUKLSAgICAjIGJyZWFrcyB0aGUgbGlidG9vbCBjb25maWd1cmF0aW9uIHJlc3VsdGluZyBpbiBhIGZhaWx1cmUgbGF0ZXIKLSAgICAjIGluIGRvX2NvbXBpbGUuIEl0J3MgcG9zc2libGUgdGhpcyBtYXkgYmUgZml4YWJsZSwgaG93ZXZlciB0aGUKLSAgICAjIGVhc2llc3QgY291cnNlIG9mIGFjdGlvbiBmb3IgdGhlIG1vbWVudCBpcyB0byBhdm9pZCBkb2luZyB0aGF0LgotICAgIG9lX3J1bmNvbmYKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTF9ST09UPSR7RH0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9waHAqL2V4dGVuc2lvbnMvKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzczZGJmMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi42LjEuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJEZWJ1Z2dpbmcgYW5kIHByb2ZpbGluZyBleHRlbnNpb24gZm9yIFBIUCIKK0xJQ0VOU0UgPSAiWGRlYnVnIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzRkZjNhMjc0YWExMmI3OTU0MTdjNjU2MzRjMDdmMTYiCisKK0RFUEVORFMgPSAicGhwIHJlMmMtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94ZGVidWcub3JnL2ZpbGVzL3hkZWJ1Zy0ke1BWfS50Z3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNWNjMGYyZThiN2Q0MDU1NmE5YWQ5YWZkOWM0OWFlZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWU2OTFkNmMwNTIwNzNiODg2ZTBjNmUxMzA2YTcwN2JjYTlmZDE4YTFlMzQ4NTM4NGVmNmM0YWFjZjFiZDc3IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ4ZGVidWctKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50Z3oiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUteGRlYnVnIC13aXRoLXBocC1jb25maWc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vcGhwLWNvbmZpZyIKKworZG9fY29uZmlndXJlKCkgeworICAgIGNkICR7U30KKyAgICAke1NUQUdJTkdfQklORElSX0NST1NTfS9waHBpemUKKyAgICBjZCAke0J9CisKKyAgICAjIFJ1bm5pbmcgYXV0b3JlY29uZiBhcyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHdvdWxkIGRvIGhlcmUKKyAgICAjIGJyZWFrcyB0aGUgbGlidG9vbCBjb25maWd1cmF0aW9uIHJlc3VsdGluZyBpbiBhIGZhaWx1cmUgbGF0ZXIKKyAgICAjIGluIGRvX2NvbXBpbGUuIEl0J3MgcG9zc2libGUgdGhpcyBtYXkgYmUgZml4YWJsZSwgaG93ZXZlciB0aGUKKyAgICAjIGVhc2llc3QgY291cnNlIG9mIGFjdGlvbiBmb3IgdGhlIG1vbWVudCBpcyB0byBhdm9pZCBkb2luZyB0aGF0LgorICAgIG9lX3J1bmNvbmYKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTF9ST09UPSR7RH0KK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9waHAqL2V4dGVuc2lvbnMvKi8qLnNvIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vcGhwKi9leHRlbnNpb25zLyovLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1zdXBwb3J0L2ZjZ2kvZmNnaS9GaXhfRU9GX25vdF9kZWNsYXJlZF9pc3N1ZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtc3VwcG9ydC9mY2dpL2ZjZ2kvRml4X0VPRl9ub3RfZGVjbGFyZWRfaXNzdWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGRlYWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1zdXBwb3J0L2ZjZ2kvZmNnaS9GaXhfRU9GX25vdF9kZWNsYXJlZF9pc3N1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1GaXggRU9GIG5vdCBkZWNsYXJlZCBpc3N1ZSwgZm9sbG93aW5nIGlzIHRoZSBlcnJvciBsb2cuCi1mY2dpby5jcHA6NzA6NzI6IGVycm9yOiAnRU9GJyB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgICAgICAgICAgICAgaWYgKEZDR1hfUHV0U3RyKHBiYXNlKCksIHBsZW4sIHRoaXMtPmZjZ3gpICE9IHBsZW4pIHJldHVybiBFT0Y7Ci0KLVNpZ25lZC1vZmYtYnk6IFlhbmcgSGFpYm8gPGI0MDg2OUBmcmVlc2NhbGUuY29tPgotLS0tIGZjZ2ktb3JpL2xpYmZjZ2kvZmNnaW8uY3BwIDIwMTQtMDctMjggMTg6MDE6MDAuMDAwMDAwMDAwICswODAwCi0rKysgZmNnaS0yLjQuMC9saWJmY2dpL2ZjZ2lvLmNwcCAgICAgICAyMDE0LTA3LTI4IDE4OjAxOjIyLjAwMDAwMDAwMCArMDgwMAotQEAgLTIyLDYgKzIyLDcgQEAKLSAjZGVmaW5lIERMTEFQSSAgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0gI2VuZGlmCi0KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgImZjZ2lvLmgiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtc3VwcG9ydC9mY2dpL2ZjZ2kvYWRkX2ZvcmVpZ25fdG9fQU1fSU5JVF9BVVRPTUFLRS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtc3VwcG9ydC9mY2dpL2ZjZ2kvYWRkX2ZvcmVpZ25fdG9fQU1fSU5JVF9BVVRPTUFLRS5wYXRjaAppbmRleCBlY2E2OTRhLi5lZWM5ZGQ3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXN1cHBvcnQvZmNnaS9mY2dpL2FkZF9mb3JlaWduX3RvX0FNX0lOSVRfQVVUT01BS0UucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1zdXBwb3J0L2ZjZ2kvZmNnaS9hZGRfZm9yZWlnbl90b19BTV9JTklUX0FVVE9NQUtFLnBhdGNoCkBAIC0xMCw4ICsxMCw4IEBACiAgZG5sICAgICB0byBjb25maWd1cmUgdGhlIHN5c3RlbSBmb3IgdGhlIGxvY2FsIGVudmlyb25tZW50LgogIAogLUFDX0lOSVQKLS1BTV9JTklUX0FVVE9NQUtFKGZjZ2ksIDIuNC4wKQotK0FDX0lOSVQoW2ZjZ2ldLCBbMi40LjBdKQorLUFNX0lOSVRfQVVUT01BS0UoZmNnaSwgMi40LjEtU05BUC0wOTEwMDUyMjQ5KQorK0FDX0lOSVQoW2ZjZ2ldLCBbMi40LjEtU05BUC0wOTEwMDUyMjQ5XSkKICtBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKICAKICBBTV9DT05GSUdfSEVBREVSKGZjZ2lfY29uZmlnLmgpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXN1cHBvcnQvZmNnaS9mY2dpXzIuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1zdXBwb3J0L2ZjZ2kvZmNnaV8yLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhjNTk0NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXN1cHBvcnQvZmNnaS9mY2dpXzIuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRmFzdENHSSBpcyBhIHByb3RvY29sIGZvciBpbnRlcmZhY2luZyBpbnRlcmFjdGl2ZSBwcm9ncmFtcyB3aXRoIGEgd2ViIHNlcnZlci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZhc3RjZ2kuY29tIgotTElDRU5TRSA9ICJPTUwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRFUk1TO21kNT1lM2FhY2FjM2E2NDdhZjZlN2UzMWYxODFjZGEwYTA2YSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZm9zc2llcy5vcmcvbGludXgvd3d3L29sZC8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vRml4X0VPRl9ub3RfZGVjbGFyZWRfaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWRkX2ZvcmVpZ25fdG9fQU1fSU5JVF9BVVRPTUFLRS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZDE1MDYwYTgxM2I5MTM4M2E5ZjNjNjZmYWY4NDg2N2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjZmYzQ1YzZiMzZhMjFiZjJmYmJiNjhlOTBmNzgwY2MyMWE5ZGExZmZmYmFlNzVlNzZkMmI0NDAyZDNmMDViOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUEFSQUxMRUxfTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXN1cHBvcnQvZmNnaS9mY2dpX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtc3VwcG9ydC9mY2dpL2ZjZ2lfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExN2U3MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXN1cHBvcnQvZmNnaS9mY2dpX2dpdC5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJGYXN0Q0dJIGlzIGEgcHJvdG9jb2wgZm9yIGludGVyZmFjaW5nIGludGVyYWN0aXZlIHByb2dyYW1zIHdpdGggYSB3ZWIgc2VydmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZmFzdGNnaS5jb20iCitMSUNFTlNFID0gIk9NTCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVEVSTVM7bWQ1PWUzYWFjYWMzYTY0N2FmNmU3ZTMxZjE4MWNkYTBhMDZhIgorCitTUkNSRVYgPSAiNjgxMDBiNWI4Y2IyNmYwNGI3ODQ3NzhlZDE5Y2NlZjRmZTM4OWY1NyIKK1BWID0gIjIuNC4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRmFzdENHSS1BcmNoaXZlcy9mY2dpMi5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vYWRkX2ZvcmVpZ25fdG9fQU1fSU5JVF9BVVRPTUFLRS5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1BBUkFMTEVMX01BS0UgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9SRUFETUUKaW5kZXggNzQzMWU4Yi4uNGQ4ZGM0NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL1JFQURNRQorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvUkVBRE1FCkBAIC0xLDExICsxLDExIEBACiBUaGlzIGxheWVyIGRlcGVuZHMgb246CiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvb2UtY29yZS5naXQKLWJyYW5jaDogbWFzdGVyCiticmFuY2g6IHRodWQKIHJldmlzaW9uOiBIRUFECiAKIFVSSTogZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvbWV0YS1vZS5naXQKLWJyYW5jaDogbWFzdGVyCiticmFuY2g6IHRodWQKIHJldmlzaW9uOiBIRUFECiBtZXRhLXhmY2UgZGVwZW5kcyBvbiBtZXRhLW9lLCBtZXRhLWdub21lIGFuZCBtZXRhLW11bHRpbWVkaWEgaW4gdGhpcyByZXBvc2l0b3J5LgogCkBAIC0xNCw5ICsxNCw5IEBACiAKIEJCTUFTSyA9ICJtZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhIgogCi1TZW5kIHB1bGwgcmVxdWVzdHMgdG8gb3BlbmVtYmVkZGVkLWRldmVsQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcgd2l0aCAnW21ldGEteGZjZV0nIGluIHRoZSBzdWJqZWN0JworU2VuZCBwdWxsIHJlcXVlc3RzIHRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIHdpdGggJ1ttZXRhLXhmY2VdW3RodWRdJyBpbiB0aGUgc3ViamVjdCcKIAogV2hlbiBzZW5kaW5nIHNpbmdsZSBwYXRjaGVzLCBwbGVhc2UgdXNpbmcgc29tZXRoaW5nIGxpa2U6Ci0nZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEteGZjZV1bUEFUQ0gnCisnZ2l0IHNlbmQtZW1haWwgLU0gLTEgLS10byBvcGVuZW1iZWRkZWQtZGV2ZWxAbGlzdHMub3BlbmVtYmVkZGVkLm9yZyAtLXN1YmplY3QtcHJlZml4PW1ldGEteGZjZV1bdGh1ZF1bUEFUQ0gnCiAKLUxheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK1RodWQgTWFpbnRhaW5lcjogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jbGFzc2VzL3RodW5hci1wbHVnaW4uYmJjbGFzcyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jbGFzc2VzL3RodW5hci1wbHVnaW4uYmJjbGFzcwppbmRleCA5NWY3ZDAwLi43NmIwZTcyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY2xhc3Nlcy90aHVuYXItcGx1Z2luLmJiY2xhc3MKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NsYXNzZXMvdGh1bmFyLXBsdWdpbi5iYmNsYXNzCkBAIC02LDcgKzYsNiBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnhmY2Uub3JnL3NyYy90aHVuYXItcGx1Z2lucy8ke0JQTn0vJHtAJyR7UFZ9J1swOjNdfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKIAotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90aHVuYXJ4LTIvKi5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3RodW5hcngtMi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS90aHVuYXJ4LTIvKi5sYSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdGh1bmFyeC0zLyouc28iCiAKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RodW5hcngtMy8qLmxhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NsYXNzZXMveGZjZS1wYW5lbC1wbHVnaW4uYmJjbGFzcyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jbGFzc2VzL3hmY2UtcGFuZWwtcGx1Z2luLmJiY2xhc3MKaW5kZXggNjUxNWRjMC4uMjljMTI0NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NsYXNzZXMveGZjZS1wYW5lbC1wbHVnaW4uYmJjbGFzcworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY2xhc3Nlcy94ZmNlLXBhbmVsLXBsdWdpbi5iYmNsYXNzCkBAIC0xMCw0ICsxMCw1IEBACiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyIKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQvcGFuZWwtcGx1Z2lucy8qLnNvIgogRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0veGZjZTQvcGFuZWwtcGx1Z2lucy8uZGVidWciCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKi5sYSIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY2xhc3Nlcy94ZmNlLmJiY2xhc3MgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY2xhc3Nlcy94ZmNlLmJiY2xhc3MKaW5kZXggYjQ5YmJhMS4uN2FiZTQ2ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NsYXNzZXMveGZjZS5iYmNsYXNzCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jbGFzc2VzL3hmY2UuYmJjbGFzcwpAQCAtMTIsMTEgKzEyLDMgQEAKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvKiAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8qICR7bGliZGlyfS94ZmNlNC9tb2R1bGVzLyouc28qIgogRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L3hmY2U0L2RvYyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veGZjZTQvKi8qLmxhIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veGZjZTQvKi8qLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS94ZmNlNC8qLyouYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3hmY2U0LyovKi8qLmEiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS94ZmNlNC8qLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hmY2U0LyovKi8uZGVidWciCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCmluZGV4IGJlZThlNzAuLmY1ZjQ0ZDYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTgsNyArMTgsNyBAQAogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm11bHRpbWVkaWEtbGF5ZXIiCiBMQVlFUkRFUEVORFNfeGZjZS1sYXllciArPSAibWV0YS1weXRob24iCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF94ZmNlLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfeGZjZS1sYXllciA9ICJ0aHVkIgogCiBTSUdHRU5fRVhDTFVERV9TQUZFX1JFQ0lQRV9ERVBTICs9ICIgXAogICB4ZmNlNC1zZXNzaW9uLT5tYWNoaW5lLWhvc3QgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9jYXRmaXNoL2NhdGZpc2hfMS40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2NhdGZpc2gvY2F0ZmlzaF8xLjQuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjlmODgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9jYXRmaXNoL2NhdGZpc2hfMS40LjYuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJDYXRmaXNoIGlzIGEgaGFuZHkgZmlsZSBzZWFyY2hpbmcgdG9vbCBmb3IgbGludXggYW5kIHVuaXgiCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00MzI1YWZkMzk2ZmViY2I2NTljMzZiNDk1MzMxMzVkNCIKKworaW5oZXJpdCB4ZmNlLWFwcCBkaXN0dXRpbHMzIGd0ay1pY29uLWNhY2hlCisKK0RFUEVORFMgKz0gInB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSIKKworQiA9ICIke1N9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODc5MTk3Yzk0MDBiZTJhODBkNTFhYmY0OTRiZmZmYjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFjYWVlMTRjNTI2OGFjNzgxNDM0NzAxYzBlYjI2ZWRkZmNlZDJjMGYxYWUwNjY1NDk1ODNlZDA1Zjk5YWRiZiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXB5Z29iamVjdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL21lbnVsaWJyZV8yLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbWVudWxpYnJlL21lbnVsaWJyZV8yLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFmMzQ3MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9tZW51bGlicmVfMi4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBbiBhZHZhbmNlZCBtZW51IGVkaXRvciIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9tZW51bGlicmUiCi1TRUNUSU9OID0gIngxMS9ncmFwaGljcyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICIgXAotICAgIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzIGd0ay1pY29uLWNhY2hlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9tZW51bGlicmUvMi4xLyR7UFZ9Lytkb3dubG9hZC8ke1BOfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWZjN2VkYjQ5YmIwZTVmZWE0OWUxNThiNDA1NzMzMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWYwNWIyNzIyYmFiMmFjYjcwNzBkNmM4ZWQwZTdiZDU4YmQ0YTQ1NDBiZjQ5OGFmOWU4ODk5NDRmOWRhMDhiNSIKLQotZG9fY29tcGlsZSgpIHsKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgc2VkIC1pICdzOiR7RH06OmcnICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9tZW51bGlicmUuZGVza3RvcAotICAgIHNlZCAtaSAnczpzaGFyZS9zaGFyZTpzaGFyZTpnJyAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbWVudWxpYnJlX2xpYi9tZW51bGlicmVjb25maWcucHkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAotICAgICR7ZGF0YWRpcn0vbWVudWxpYnJlIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgZ3RrKzMgXAotICAgIGd0a3NvdXJjZXZpZXczIFwKLSAgICBweXRob24zLXB5Z29iamVjdCBcCi0gICAgZ25vbWUtbWVudXMzIFwKLSAgICBweXRob24zLXVuaXhhZG1pbiBcCi0gICAgcHl0aG9uMy1wc3V0aWwgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvbWVudWxpYnJlXzIuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tZW51bGlicmUvbWVudWxpYnJlXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTQ3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21lbnVsaWJyZS9tZW51bGlicmVfMi4yLjAuYmIKQEAgLTAsMCArMSw0MSBAQAorREVTQ1JJUFRJT04gPSAiQW4gYWR2YW5jZWQgbWVudSBlZGl0b3IiCitIT01FUEFHRSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWVudWxpYnJlIgorU0VDVElPTiA9ICJ4MTEvZ3JhcGhpY3MiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK0RFUEVORFMgPSAiIFwKKyAgICBweXRob24zLWRpc3R1dGlscy1leHRyYS1uYXRpdmUgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisiCisKK2luaGVyaXQgZGlzdHV0aWxzMyBndGstaWNvbi1jYWNoZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbWVudWxpYnJlLzIuMi8ke1BWfS8rZG93bmxvYWQvJHtQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjk2OTA4NDhkYmY5MTk2YzNmN2JhYTU3NGU5MDM3OGQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0NmZlYzg3ZjQ1MWM4ZjVjMjIwZDAyYjFmMzZkZDg1MGY0Y2U5YWI2MDdmOGU5NzExZWQ4ZjIwMDllMzQ5ZmUiCisKK2RvX2NvbXBpbGUoKSB7Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHNlZCAtaSAnczoke0R9OjpnJyAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbWVudWxpYnJlLmRlc2t0b3AKKyAgICBzZWQgLWkgJ3M6c2hhcmUvc2hhcmU6c2hhcmU6ZycgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L21lbnVsaWJyZV9saWIvbWVudWxpYnJlY29uZmlnLnB5Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIFwKKyAgICAke2RhdGFkaXJ9L21lbnVsaWJyZSBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIGd0ayszIFwKKyAgICBndGtzb3VyY2V2aWV3MyBcCisgICAgcHl0aG9uMy1weWdvYmplY3QgXAorICAgIGdub21lLW1lbnVzMyBcCisgICAgcHl0aG9uMy11bml4YWRtaW4gXAorICAgIHB5dGhvbjMtcHN1dGlsIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbW91c2VwYWQvbW91c2VwYWRfMC40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21vdXNlcGFkL21vdXNlcGFkXzAuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2EyMWE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbW91c2VwYWQvbW91c2VwYWRfMC40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkEgc2ltcGxlIHRleHQgZWRpdG9yIGZvciBYZmNlIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLSMgaW50bHRvb2wgdG8gcHJvdmlkZSBpbnRsdG9vbC5tNCB3aXRoIEFDX1BST0dfSU5UTFRPT0wKLSMgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBmb3IgWERUX0kxOE4gbWFjcm8gYW5kIG1vcmUgaW1wb3J0YW50bHkgWERUX0NIRUNLX09QVElPTkFMX1BBQ0tBR0UKLSMgd2hpY2ggZml4ZXMgbW91c2VwYWQvTWFrZWZpbGUuYW06NzI6IGVycm9yOiBIQVZFX0RCVVMgZG9lcyBub3QgYXBwZWFyIGluIEFNX0NPTkRJVElPTkFMCi1ERVBFTkRTID0gImd0aysgZGJ1cyBkYnVzLWdsaWIgZ3Rrc291cmNldmlldzIgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZS1hcHAgZ3NldHRpbmdzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNTUzMTRjNWRkYTYzMjM4ODMyNDFlNmNmMDE1NTBhNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDExNDQzMWVhYzhkYjZiYjZjZTE4YmQzOGYxNjMwY2NjYjY4NDM3NWI5N2E0NDVhMWI2ZmQ2MTk4NDhkMTMyIgotCi0jIHdlIGhhdmUgbm8gZ3Rrc291cmNldmlldyAzLnggYXJvdW5kCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0azMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21vdXNlcGFkL21vdXNlcGFkXzAuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tb3VzZXBhZC9tb3VzZXBhZF8wLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTIyYmZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tb3VzZXBhZC9tb3VzZXBhZF8wLjQuMS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkEgc2ltcGxlIHRleHQgZWRpdG9yIGZvciBYZmNlIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKKyMgaW50bHRvb2wgdG8gcHJvdmlkZSBpbnRsdG9vbC5tNCB3aXRoIEFDX1BST0dfSU5UTFRPT0wKKyMgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBmb3IgWERUX0kxOE4gbWFjcm8gYW5kIG1vcmUgaW1wb3J0YW50bHkgWERUX0NIRUNLX09QVElPTkFMX1BBQ0tBR0UKKyMgd2hpY2ggZml4ZXMgbW91c2VwYWQvTWFrZWZpbGUuYW06NzI6IGVycm9yOiBIQVZFX0RCVVMgZG9lcyBub3QgYXBwZWFyIGluIEFNX0NPTkRJVElPTkFMCitERVBFTkRTID0gImd0aysgZGJ1cyBkYnVzLWdsaWIgZ3Rrc291cmNldmlldzIgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCisKK2luaGVyaXQgeGZjZS1hcHAgZ3NldHRpbmdzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYjg1YzIzYmNiMDk2YTQ2YWVlOWVjMjJiNGU0ZmRmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzOWE3Mzc5YjkyOWQ5NjQ2NjUyOTljMzg1YjJjZjcwNWUzMmU4NzYwNjk4Y2NjMzRmOTFjOTkwYmI3MzM1MThiIgorCisjIHdlIGhhdmUgbm8gZ3Rrc291cmNldmlldyAzLnggYXJvdW5kCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0azMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL29yYWdlL29yYWdlXzQuMTIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvb3JhZ2Uvb3JhZ2VfNC4xMi4xLmJiCmluZGV4IGEyZjI1NjguLmViOWRhMmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvb3JhZ2Uvb3JhZ2VfNC4xMi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvb3JhZ2Uvb3JhZ2VfNC4xMi4xLmJiCkBAIC0xNCw2ICsxNCw1IEBACiAKIFBBQ0tBR0VTID0rICJ4ZmNlNC1vcmFnZWNsb2NrLXBsdWdpbiIKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnIgogRklMRVNfeGZjZTQtb3JhZ2VjbG9jay1wbHVnaW4gPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKi5zbyAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMiCi0KK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKi5sYSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWFmdGVyLXVwZGF0ZS1vZi14ZmNvbmYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3Jpc3RyZXR0by9maWxlcy8wMDAxLUZpeC1idWlsZC1hZnRlci11cGRhdGUtb2YteGZjb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZGM4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3Jpc3RyZXR0by9maWxlcy8wMDAxLUZpeC1idWlsZC1hZnRlci11cGRhdGUtb2YteGZjb25mLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMmI2YmRiODYwZWY1Mzk3NWM3ZTg2NmYzOTNiNjFkMjUzYzAwNzU0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIyIEphbiAyMDE4IDE1OjUyOjA5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBhZnRlciB1cGRhdGUgb2YgeGZjb25mCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK3hmY29uZiBzdG9wcGVkIHVzaW5nIGRidXMtZ2xpYiBzbyByZXF1aXJlZCBmbGFncyBtdXN0IGJlIGluY2x1ZGVkIGhlcmUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAzNmEzMWRjLi4zZGQ1NmJjIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0zMCw2ICszMCw3IEBAIHJpc3RyZXR0b19DRkxBR1MgPSBcCisgCSQoR0lPX1VOSVhfQ0ZMQUdTKSBcCisgCSQoTElCRVhJRl9DRkxBR1MpIFwKKyAJJChYRkNPTkZfQ0ZMQUdTKSBcCisrCSQoREJVU19HTElCX0NGTEFHUykgXAorIAkkKEVYT19DRkxBR1MpIFwKKyAJJChDQUlST19DRkxBR1MpIFwKKyAJJChMSUJYRkNFNFVUSUxfQ0ZMQUdTKSBcCitAQCAtNDgsNiArNDksNyBAQCByaXN0cmV0dG9fTERBREQgPSBcCisgCSQoR0lPX1VOSVhfTElCUykgXAorIAkkKExJQkVYSUZfTElCUykgXAorIAkkKFhGQ09ORl9MSUJTKSBcCisrCSQoREJVU19HTElCX0xJQlMpIFwKKyAJJChFWE9fTElCUykgXAorIAkkKENBSVJPX0xJQlMpIFwKKyAJJChMSUJYRkNFNFVUSUxfTElCUykgXAorLS0gCisyLjE0LjMKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9yaXN0cmV0dG8vcmlzdHJldHRvXzAuOC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9yaXN0cmV0dG8vcmlzdHJldHRvXzAuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGJhYTcyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVGlueSBpbWFnZS12aWV3ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMvcmlzdHJldHRvIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzVkMTQ1NDI5YWQzY2JmNTMwOGQxZGM5M2Y2NjM3NmIiCi1ERVBFTkRTID0gImV4byBsaWJleGlmIGd0aysgZGJ1cy1nbGliIGxpYnhmY2U0dWkgbGlieGZjZTR1dGlsIHhmY29uZiBjYWlybyBmaWxlIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ0dW1ibGVyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYThkOGJiNmI4ZmE3Zjg2OGNmYTNhZTc3ODYzMDk0NmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjhmM2I3N2NhNmZjNzdkZGY4Y2ZmMWJiNTJlNWM1ODAyYzQ2MjY2M2Y3MmYzMjQzOTNiM2EwMzYwZjY5MDFiOCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWI5YjJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9yaXN0cmV0dG8vcmlzdHJldHRvXzAuOC4zLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAiVGlueSBpbWFnZS12aWV3ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMvcmlzdHJldHRvIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzVkMTQ1NDI5YWQzY2JmNTMwOGQxZGM5M2Y2NjM3NmIiCitERVBFTkRTID0gImV4byBsaWJleGlmIGd0aysgZGJ1cy1nbGliIGxpYnhmY2U0dWkgbGlieGZjZTR1dGlsIHhmY29uZiBjYWlybyBmaWxlIgorCitpbmhlcml0IHhmY2UtYXBwCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJ0dW1ibGVyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTg2NmI0ZTExYzMyYTM4ZjcyYmM3MzcyMzkxMDI1NDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM5YzExNzYwODE2ZGZkOWVkNTdmYjhiOWRmODZjNmE5OGEyNjA0YWI1NTFiZTMxMzM5OTZhMWMzMmNhMjY2NSIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUZpeC1idWlsZC1hZnRlci11cGRhdGUtb2YteGZjb25mLnBhdGNoIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1taXhlci9maWxlcy8wMDAxLUZpeC1idWlsZC1hZnRlci11cGRhdGUtb2YteGZjb25mLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1taXhlci9maWxlcy8wMDAxLUZpeC1idWlsZC1hZnRlci11cGRhdGUtb2YteGZjb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMjE2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW1peGVyL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLWFmdGVyLXVwZGF0ZS1vZi14ZmNvbmYucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA2ZWNhZWNlZDI5MWY5MzVhOWQ0MWU5YmMzMzQxMTM1OGM5NWE1ZTkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjIgSmFuIDIwMTggMTU6MzU6MDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIGFmdGVyIHVwZGF0ZSBvZiB4ZmNvbmYKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworeGZjb25mIHN0b3BwZWQgdXNpbmcgZGJ1cy1nbGliIHNvIHJlcXVpcmVkIGZsYWdzIG11c3QgYmUgaW5jbHVkZWQgaGVyZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIHBhbmVsLXBsdWdpbi9NYWtlZmlsZS5hbSB8IDIgKysKKyB4ZmNlNC1taXhlci9NYWtlZmlsZS5hbSAgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3BhbmVsLXBsdWdpbi9NYWtlZmlsZS5hbSBiL3BhbmVsLXBsdWdpbi9NYWtlZmlsZS5hbQoraW5kZXggYTQ5NDY4Mi4uYjA5NDQ3MiAxMDA2NDQKKy0tLSBhL3BhbmVsLXBsdWdpbi9NYWtlZmlsZS5hbQorKysrIGIvcGFuZWwtcGx1Z2luL01ha2VmaWxlLmFtCitAQCAtMjcsNiArMjcsNyBAQCBsaWJtaXhlcl9sYV9DRkxBR1MgPQkJCQkJCQlcCisgCSQoTElCWEZDRTRVSV9DRkxBR1MpCQkJCQkJXAorIAkkKExJQlhGQ0U0UEFORUxfQ0ZMQUdTKQkJCQkJCVwKKyAJJChYRkNPTkZfQ0ZMQUdTKQkJCQkJCVwKKysJJChEQlVTX0dMSUJfQ0ZMQUdTKQkJCQkJCVwKKyAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykJCQkJCVwKKyAJJChLRVlCSU5ERVJfQ0ZMQUdTKQorIAorQEAgLTQ4LDYgKzQ5LDcgQEAgbGlibWl4ZXJfbGFfTElCQUREID0JCQkJCQkJXAorIAkkKExJQlhGQ0U0VUlfTElCUykJCQkJCQlcCisgCSQoTElCWEZDRTRQQU5FTF9MSUJTKQkJCQkJCVwKKyAJJChYRkNPTkZfTElCUykJCQkJCQkJXAorKwkkKERCVVNfR0xJQl9MSUJTKQkJCQkJCVwKKyAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpCQkJCQlcCisgCS1sZ3N0YXVkaW8tMC4xMAkJCQkJCQlcCisgCS1sZ3N0aW50ZXJmYWNlcy0wLjEwCQkJCQkJXAorZGlmZiAtLWdpdCBhL3hmY2U0LW1peGVyL01ha2VmaWxlLmFtIGIveGZjZTQtbWl4ZXIvTWFrZWZpbGUuYW0KK2luZGV4IDRhZjY5ZTkuLmUwNzZmYzggMTAwNjQ0CistLS0gYS94ZmNlNC1taXhlci9NYWtlZmlsZS5hbQorKysrIGIveGZjZTQtbWl4ZXIvTWFrZWZpbGUuYW0KK0BAIC0zMiw2ICszMiw3IEBAIHhmY2U0X21peGVyX0NGTEFHUyA9IAkJCQkJCQlcCisgCSQoVU5JUVVFX0NGTEFHUykJCQkJCQlcCisgCSQoTElCWEZDRTRVVElMX0NGTEFHUykJCQkJCQlcCisgCSQoTElCWEZDRTRVSV9DRkxBR1MpCQkJCQkJXAorKwkkKERCVVNfR0xJQl9DRkxBR1MpCQkJCQkJXAorIAkkKFhGQ09ORl9DRkxBR1MpCQkJCQkJXAorIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKQorIAorQEAgLTQ2LDYgKzQ3LDcgQEAgeGZjZTRfbWl4ZXJfTERGTEFHUyA9IAkJCQkJCQlcCisgCSQoVU5JUVVFX0xJQlMpCQkJCQkJCVwKKyAJJChMSUJYRkNFNFVUSUxfTElCUykJCQkJCQlcCisgCSQoTElCWEZDRTRVSV9MSUJTKQkJCQkJCVwKKysJJChEQlVTX0dMSUJfTElCUykJCQkJCQlcCisgCSQoWEZDT05GX0xJQlMpCQkJCQkJCVwKKyAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpCQkJCQlcCisgCS1sZ3N0YXVkaW8tMC4xMAkJCQkJCQlcCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW1peGVyL3hmY2U0LW1peGVyXzQuMTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbWl4ZXIveGZjZTQtbWl4ZXJfNC4xMS4wLmJiCmluZGV4IGJkYmVjNDUuLjZjMDU3ZDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbWl4ZXIveGZjZTQtbWl4ZXJfNC4xMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtbWl4ZXIveGZjZTQtbWl4ZXJfNC4xMS4wLmJiCkBAIC02LDcgKzYsMTAgQEAKIAogREVQRU5EUyArPSAiZ2xpYi0yLjAgZ3N0LXBsdWdpbnMtYmFzZSBndGsrIHhmY29uZiBsaWJ1bmlxdWUiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL2FwcHMvJHtCUE59LyR7QHhmY2VfdmVyZGlyKCIke1BWfSIpfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMvYXBwcy8ke0JQTn0vJHtAeGZjZV92ZXJkaXIoIiR7UFZ9Iil9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtYWZ0ZXItdXBkYXRlLW9mLXhmY29uZi5wYXRjaCBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxYjM3NTNiOTEyMjQ4NjdhM2EyZGZkZGRhMjM5YzI4ZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjBjMWRmMjAxZWQxMTMwZjU0ZjE1YjkxNGNiZTVhNTkyODZlOTk0YTEzN2FjZGE1NjA5NTcwYzU3MTEyZGUyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVlYzUxYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRWFzaWx5IHRoZW1hYmxlIG5vdGlmaWNhdGlvbiBkYWVtb24gd2l0aCB0cmFuc3BhcmVuY3kgZWZmZWN0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1ub3RpZnlkIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICIgXAotICAgIGRidXMgXAotICAgIGRidXMtZ2xpYiBcCi0gICAgZGJ1cy1nbGliLW5hdGl2ZSBcCi0gICAgbGlibm90aWZ5IFwKLSAgICBsaWJ4ZmNlNHV0aWwgXAotICAgIGxpYnhmY2U0dWkgXAotICAgIHhmY29uZiBcCi0gICAgeGZjZTQtcGFuZWwgXAotIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlY2I5MzBlZjZhZTZlMWYzMTBhNWFmZTVmNjM4ZWZmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmYyOGFmNDdmZGZiNDFkYjg0YmQwMDNmMGQ3NmY1ZjRhYmYyMTM3ZDFlMjdlOWQzNzhmMDYzYmI4ZjgyMzU2IgotCi0jIEF2b2lkIHRyb3VibGUgd2l0aCBvdGhlciBkZXNrdG9wcyBlLmcgS0RFIHdoaWNoIGFsc28gc2hpcHMgZGJ1cyBzZXJ2aWNlIG5hbWVkCi0jIG9yZy5mcmVlZGVza3RvcC5Ob3RpZmljYXRpb25zCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRidXMtc3RhcnQtZGFlbW9uIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgbWtkaXIgLXAgeGZjZTQtbm90aWZ5ZCB4ZmNlNC1ub3RpZnlkLWNvbmZpZwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNCBcCi0gICAgJHtkYXRhZGlyfS90aGVtZXMgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2xpYmRpcn0veGZjZTQgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzcxOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC40LjMuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJFYXNpbHkgdGhlbWFibGUgbm90aWZpY2F0aW9uIGRhZW1vbiB3aXRoIHRyYW5zcGFyZW5jeSBlZmZlY3RzIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LW5vdGlmeWQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gIiBcCisgICAgZGJ1cyBcCisgICAgZGJ1cy1nbGliIFwKKyAgICBkYnVzLWdsaWItbmF0aXZlIFwKKyAgICBsaWJub3RpZnkgXAorICAgIGxpYnhmY2U0dXRpbCBcCisgICAgbGlieGZjZTR1aSBcCisgICAgeGZjb25mIFwKKyAgICB4ZmNlNC1wYW5lbCBcCisiCisKK2luaGVyaXQgeGZjZS1hcHAKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4ODdjNjJkZmNiNGMzZTRmNDVjOWFjZmIzZGVmNTE1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5M2RkYTA4NGNmY2E0ODg3YWU3NDBlMjcyNWZkZmM2NDQxMmJjMTBlYWM3YTU1YTkyNGViMTQ0ODJkY2VhYzAiCisKKyMgQXZvaWQgdHJvdWJsZSB3aXRoIG90aGVyIGRlc2t0b3BzIGUuZyBLREUgd2hpY2ggYWxzbyBzaGlwcyBkYnVzIHNlcnZpY2UgbmFtZWQKKyMgb3JnLmZyZWVkZXNrdG9wLk5vdGlmaWNhdGlvbnMKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGJ1cy1zdGFydC1kYWVtb24iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAtcCB4ZmNlNC1ub3RpZnlkIHhmY2U0LW5vdGlmeWQtY29uZmlnCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0IFwKKyAgICAke2RhdGFkaXJ9L3RoZW1lcyBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS94ZmNlNCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL3hmY2U0LXBhbmVsLXByb2ZpbGVzXzEuMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmEyYTdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0LCBhbmQgZXhwb3J0IHBhbmVsIGxheW91dHMiCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCBweXRob24zbmF0aXZlIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vYXJjaGl2ZS54ZmNlLm9yZy9zcmMvYXBwcy8ke0JQTn0vMS4wLyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImJjNzVhMTQzNDIzZmJhM2E4MmYxMTRmNDdlODY1ODBjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2OWUyMGY1ZTYzNzMxOWUxNDg5OGI1YzEzZmY3YmEzMWQwMDFhNmUzOGU3NTE2ZDcwZGJmZDc2MDBhZDcyZGIiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAjIHNwZWNpYWwgY29uZmlndXJlIC0gbm8gYXV0b3Rvb2xzLi4uCisgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9Cit9CisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisgICAgc2VkIC1pICdzOiR7UFlUSE9OfTpweXRob24zOmcnICR7RH0ke2JpbmRpcn0veGZjZTQtcGFuZWwtcHJvZmlsZXMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXB5Z29iamVjdCBweXRob24zLXBleHBlY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIveGZjZTQtc2NyZWVuc2hvb3Rlcl8xLjkuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDQ5ZGNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtc2NyZWVuc2hvb3Rlci94ZmNlNC1zY3JlZW5zaG9vdGVyXzEuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJBcHBsaWNhdGlvbiB0byB0YWtlIHNjcmVlbnNob3RzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXNjcmVlbnNob290ZXIiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKLURFUEVORFMgPSAieGZjZTQtcGFuZWwgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgZ2RrLXBpeGJ1ZiBndGsrIGdsaWItMi4wIGxpYnNvdXAtMi40IGV4byBsaWJ4Zml4ZXMgeGV4dCB2aXJ0dWFsL2xpYngxMSIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzVlMTUwMTQxOGY5MDQ3NjllNGZkMjVlZmY2YTM5NDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTYyYjMxZDljZjA2YTc0MTRhMjY0MDBjMmViZTdhMmFlN2MyYjIyYWE2MGY5OTdmMjUxNDVlYTllYmU2ZTBkYiIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wIGxpYgotICAgIG1rZGlyIC1wIHNyYwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAotICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucyBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL3hmY2U0LXNjcmVlbnNob290ZXJfMS45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNob290ZXIveGZjZTQtc2NyZWVuc2hvb3Rlcl8xLjkuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE0Y2RiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zaG9vdGVyL3hmY2U0LXNjcmVlbnNob290ZXJfMS45LjMuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJBcHBsaWNhdGlvbiB0byB0YWtlIHNjcmVlbnNob3RzIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXNjcmVlbnNob290ZXIiCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKK0RFUEVORFMgPSAieGZjZTQtcGFuZWwgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgZ2RrLXBpeGJ1ZiBndGsrIGdsaWItMi4wIGxpYnNvdXAtMi40IGV4byBsaWJ4Zml4ZXMgeGV4dCB2aXJ0dWFsL2xpYngxMSIKKworaW5oZXJpdCB4ZmNlLWFwcAorCitTUkNfVVJJW21kNXN1bV0gPSAiZjc4M2ViNTc1ZTIwMTVmMzllMWMxYWFlNDk5YjExM2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzY0ZWJkZGM0Yzk5NzFiNDAyM2FhODAxOWQ0ZTNiZDA4ZjA5MWI2NWRjOThiMjE4YmViNTU4NTFmNjljZWRhMiIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wIGxpYgorICAgIG1rZGlyIC1wIHNyYyBwYW5lbC1wbHVnaW4KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMgXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTU1NTg1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkVhc3kgdG8gdXNlIHRhc2sgbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCB4ZmNlLWFwcAotCi1ERVBFTkRTICs9ICJndGsrIGNhaXJvIGxpYnduY2sgbGlieG11IHhmY2U0LWRldi10b29scy1uYXRpdmUgZXhvLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZmMzBjZTNjNjg4NDU0ODEyMDA4MjgxMDY1YTZlMDVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3NDZkNDczYWQ0MjhiMTNkYjdjMDVjZmNiYzgwOTlmYmVhMTNkYTZiZTI2ZDNhOTM1OWJjYjRkZTk3MWJhNjkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10YXNrbWFuYWdlci94ZmNlNC10YXNrbWFuYWdlcl8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWZlYTFkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10YXNrbWFuYWdlci94ZmNlNC10YXNrbWFuYWdlcl8xLjIuMS5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkVhc3kgdG8gdXNlIHRhc2sgbWFuYWdlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworaW5oZXJpdCB4ZmNlLWFwcAorCitERVBFTkRTICs9ICJndGsrIGNhaXJvIGxpYnduY2sgbGlieG11IHhmY2U0LWRldi10b29scy1uYXRpdmUgZXhvLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhMmQwYjFlODAwMWZiMzQzMTM5YTk3ZDU3YjU2ZWFhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyZTUyM2UyZWUyMzE3MTNmNDBhNDg4OTBkOGNiYWU5OTMyMGFjMTE3M2Y3YzY4NTAyZjQ5MDMxOGUxZTA0MDkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC43LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzBhYmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMDE0ZDYxMzQzODg0OGI0NTJmMWY5ZWVjYmY3MDI3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYWZhMTU1MTc3OTM0ZmM3ZGNlMmQ0ZWZiMzM0MDJmNzRiMWE1OTNhMTdmZjE3ZDIxODdhNjQyOWY1OTlkZmQ2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguNy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmYzYzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC43LjQuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCisKK2luaGVyaXQgeGZjZS1hcHAKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjODYxNTQwZGQxZGQwNWY1NmU2MjM4MmIzODUxY2Y2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhODhmOThhZjRkYTcyMzk0ZjJjZmJkN2YxNGIwZjA1M2VjMGEzYjU4YTRmNmE1Nzc4MzYzNTdjNjBhNmM0MmFiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWJpbmRpbmdzL3ZhbGEveGZjZTQtdmFsYV80LjEwLjMuYmIKaW5kZXggMjhmOWNkZS4uOTcwMDdiZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYmluZGluZ3MvdmFsYS94ZmNlNC12YWxhXzQuMTAuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1iaW5kaW5ncy92YWxhL3hmY2U0LXZhbGFfNC4xMC4zLmJiCkBAIC0xMSw3ICsxMSw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMGJiYjFkNmU0NzNlMGZlOWIzMzViN2IxYjQ5ZDhhNzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdhOGYyYjdjMDlmY2RkM2Q4NmUwYzUyYWRlYTNjNThjYTAxMWQwMTQyYTkzOTk3YTAxYjRhZjc3MjYwYWU3YiIKIAotRVhUUkFfT0VDT05GID0gIi13aXRoLXZhbGEtYXBpPTAuMzgiCitFWFRSQV9PRUNPTkYgPSAiLXdpdGgtdmFsYS1hcGk9MC40MiIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdmFsYS0qL3ZhcGkiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlbWFuL2JsdWVtYW5fJS5iYmFwcGVuZCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlbWFuL2JsdWVtYW5fJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDc1MjIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWVtYW4vYmx1ZW1hbl8lLmJiYXBwZW5kCkBAIC0wLDAgKzEgQEAKK1BBQ0tBR0VDT05GSUdfYXBwZW5kID0gIiB0aHVuYXIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtZXh0ZW5kZWQvbGlidW5pcXVlL2xpYnVuaXF1ZV8xLjEuNi5iYgppbmRleCA0OWVkMDdhLi5hNjQ3NWNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1leHRlbmRlZC9saWJ1bmlxdWUvbGlidW5pcXVlXzEuMS42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnVuaXF1ZS9saWJ1bmlxdWVfMS4xLjYuYmIKQEAgLTI4LDMgKzI4LDcgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2RhdGFkaXJ9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OWYxYTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUGFyb2xlIGlzIGEgbW9kZXJuIHNpbXBsZSBtZWRpYSBwbGF5ZXIgYmFzZWQgb24gdGhlIEdTdHJlYW1lciBmcmFtZXdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMvcGFyb2xlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1pbmhlcml0IHhmY2UtYXBwIGd0ay1kb2MgbWltZQotCi1ERVBFTkRTICs9ICIgXAotICAgIGdsaWItMi4wIFwKLSAgICBkYnVzLWdsaWIgXAotICAgIGd0ayszIFwKLSAgICBcCi0gICAgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBcCi0gICAgbGlieGZjZTR1dGlsIFwKLSAgICBsaWJ4ZmNlNHVpIFwKLSAgICB4ZmNvbmYgXAotICAgIFwKLSAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIFwKLSAgICB0YWdsaWIgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDAwZDNjYTU3MTkwMDgyNmJmNWUxZjY5ODZlNDI5OTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2NmIzMzVhZWI2OTBmYjUyN2Y3N2I2MmMzMjJiYWYzNDgzNGI1OTM2NTlmZGNkMjFkMjFlZDNmMWUxNDAxMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrLWRvYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm5vdGlmeSIKLVBBQ0tBR0VDT05GSUdbY2x1dHRlcl0gPSAiLS1lbmFibGUtY2x1dHRlciwgLS1kaXNhYmxlLWNsdXR0ZXIsIGNsdXR0ZXIiCi1QQUNLQUdFQ09ORklHW25vdGlmeV0gPSAiLS1lbmFibGUtbm90aWZ5LXBsdWdpbiwgLS1kaXNhYmxlLW5vdGlmeS1wbHVnaW4sIGxpYm5vdGlmeSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKLSAgICAke2xpYmRpcn0vcGFyb2xlLTAvKi5zbyBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wYXJvbGUtMC8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wYXJvbGUtMC8qLmxhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNGU5NzQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjEuYmIKQEAgLTAsMCArMSwzOCBAQAorREVTQ1JJUFRJT04gPSAiUGFyb2xlIGlzIGEgbW9kZXJuIHNpbXBsZSBtZWRpYSBwbGF5ZXIgYmFzZWQgb24gdGhlIEdTdHJlYW1lciBmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9hcHBsaWNhdGlvbnMvcGFyb2xlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitpbmhlcml0IHhmY2UtYXBwIGd0ay1kb2MgbWltZQorCitERVBFTkRTICs9ICIgXAorICAgIGdsaWItMi4wIFwKKyAgICBkYnVzLWdsaWIgXAorICAgIGd0ayszIFwKKyAgICBcCisgICAgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBcCisgICAgbGlieGZjZTR1dGlsIFwKKyAgICBsaWJ4ZmNlNHVpIFwKKyAgICB4ZmNvbmYgXAorICAgIFwKKyAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIFwKKyAgICB0YWdsaWIgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDZmZTg2YmJlMGM0YWEwMmM1MzI0NGQ2NmU2MmU5MGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFkMjkzMWZkYjM1NDE1Y2MzZDc1NTFiNWYyMjA3YmZhYTFhYmExNTU0NWFjY2JhY2JiNDk4NGNkYWJkNzA5OSIKKworUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3RrLWRvYyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm5vdGlmeSIKK1BBQ0tBR0VDT05GSUdbY2x1dHRlcl0gPSAiLS1lbmFibGUtY2x1dHRlciwgLS1kaXNhYmxlLWNsdXR0ZXIsIGNsdXR0ZXIiCitQQUNLQUdFQ09ORklHW25vdGlmeV0gPSAiLS1lbmFibGUtbm90aWZ5LXBsdWdpbiwgLS1kaXNhYmxlLW5vdGlmeS1wbHVnaW4sIGxpYm5vdGlmeSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9hcHBkYXRhIFwKKyAgICAke2xpYmRpcn0vcGFyb2xlLTAvKi5zbyBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3Bhcm9sZS0wLyoubGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2JhdHRlcnkveGZjZTQtYmF0dGVyeS1wbHVnaW5fMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2JhdHRlcnkveGZjZTQtYmF0dGVyeS1wbHVnaW5fMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMmQ5NTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9iYXR0ZXJ5L3hmY2U0LWJhdHRlcnktcGx1Z2luXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TVU1NQVJZID0gIkEgYmF0dGVyeSBtb25pdG9yIHBhbmVsIHBsdWdpbiBmb3IgWGZjZTQsIGNvbXBhdGlibGUgd2l0aCBBUE0gYW5kIEFDUCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtYmF0dGVyeS1wbHVnaW4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotU1JDX1VSSVttZDVzdW1dID0gImY3OGQ4ZDBjYzEzZDQwNzUzYTIwN2E4MzY4NjliOTUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjOWRlZWM4ZDk1ZGE0Y2MzOWQ2ZDkwOTE0MzNlNTgyMmI2YmJlMDdkODAxMTcwNDVkZDRkZDM0ODA0MjdlY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2JhdHRlcnkveGZjZTQtYmF0dGVyeS1wbHVnaW5fMS4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2JhdHRlcnkveGZjZTQtYmF0dGVyeS1wbHVnaW5fMS4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY3YzY1YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvYmF0dGVyeS94ZmNlNC1iYXR0ZXJ5LXBsdWdpbl8xLjEuMS5iYgpAQCAtMCwwICsxLDkgQEAKK1NVTU1BUlkgPSAiQSBiYXR0ZXJ5IG1vbml0b3IgcGFuZWwgcGx1Z2luIGZvciBYZmNlNCwgY29tcGF0aWJsZSB3aXRoIEFQTSBhbmQgQUNQIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1iYXR0ZXJ5LXBsdWdpbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjY5NDFjNTc5ZWJmNDE0M2I3ZTQ5YWEwOGVlOWIzMGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5NDk2OWI5M2UwYzFkNmRhODczNjRiNjRjMGNkZmI0MGJhZTVlNGEwNTUwMzliZThiNjdiOWU1YjNkZDQ0YiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZiZGYwZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIkNsaXBtYW4gaXMgYSBjbGlwYm9hcmQgbWFuYWdlciBmb3IgWGZjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtY2xpcG1hbi1wbHVnaW4iCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1ERVBFTkRTICs9ICJ4ZmNvbmYgeHByb3RvIGxpYnh0c3QiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MTY5MTQwYWY3YzlkM2ZkZGQ4YTVjOWUwZWZiNWE2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZjJiNDVlMzI3ZTY3Y2MxODdkY2I5OWE2ZWY2ZDk1NTcwNDYzMDQ1YWNjZDI0NTQwZTE3MTcyZjAwNTE4OWIzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtbGlicXJlbmNvZGUsLS1kaXNhYmxlLWxpYnFyZW5jb2RlLHFyZW5jb2RlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYWMwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS40LjMuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJDbGlwbWFuIGlzIGEgY2xpcGJvYXJkIG1hbmFnZXIgZm9yIFhmY2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWNsaXBtYW4tcGx1Z2luIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworREVQRU5EUyArPSAieGZjb25mIHhvcmdwcm90byBsaWJ4dHN0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmEwYWNkNWY1ZTMyOThlNTZlYmQ0N2QyOTQ0Y2QwMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjljZGI4NWVmYjU0YmQ1YzljMDRjYzY5NWI3YzQ5MTRkNmRmZjk3MmI5ZmQ5NjljYmZiNTUwNGU5YzYzMmFkMiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLWxpYnFyZW5jb2RlLC0tZGlzYWJsZS1saWJxcmVuY29kZSxxcmVuY29kZSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY3B1ZnJlcS94ZmNlNC1jcHVmcmVxLXBsdWdpbl8xLjEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY3B1ZnJlcS94ZmNlNC1jcHVmcmVxLXBsdWdpbl8xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ1NDc4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NwdWZyZXEveGZjZTQtY3B1ZnJlcS1wbHVnaW5fMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFuZWwgcGx1Z2luIHRvIGRpc3BsYXkgZnJlcXVlbmN5IG9mIGFsbCBjcHVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1jcHVmcmVxLXBsdWdpbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZjZmMWMwYmUzMjQ5MWEwYzhkMjkxNTYwN2EyOGYzNiIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODU5MTIyZGEwYThjZDk5MWVlMmZiZWVlNDM0YmM5NDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzRhMTYyYzdlMTAxZGIwNDk1ZDVkYTE0N2FiYTFmNDA0YzMzNTQ0ZjA0ZThjMzRkN2QxZDcwNTY2ODEwMmQzMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY3B1ZnJlcS94ZmNlNC1jcHVmcmVxLXBsdWdpbl8xLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY3B1ZnJlcS94ZmNlNC1jcHVmcmVxLXBsdWdpbl8xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjU1ODdkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jcHVmcmVxL3hmY2U0LWNwdWZyZXEtcGx1Z2luXzEuMi4xLmJiCkBAIC0wLDAgKzEsOSBAQAorU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gdG8gZGlzcGxheSBmcmVxdWVuY3kgb2YgYWxsIGNwdXMiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWNwdWZyZXEtcGx1Z2luIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmNmYxYzBiZTMyNDkxYTBjOGQyOTE1NjA3YTI4ZjM2IgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjY2Q4ZjBmN2FlZjUxYmM0Y2FmMTA0OTk4NmQ5NjE0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWUwNDRjMGRjNDAxZDIwNjZmMjA4YTNkZjgyYTU4OGIzZTUxZmYwMTQyNWYxNTVkMGExZDBmOGZjZThmNWI1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9kaXNrcGVyZi94ZmNlNC1kaXNrcGVyZi1wbHVnaW4vMDAwMS1wYW5lbC1wbHVnaW4tSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9kaXNrcGVyZi94ZmNlNC1kaXNrcGVyZi1wbHVnaW4vMDAwMS1wYW5lbC1wbHVnaW4tSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwN2QzZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Rpc2twZXJmL3hmY2U0LWRpc2twZXJmLXBsdWdpbi8wMDAxLXBhbmVsLXBsdWdpbi1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3IucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBjMzVhOGNiMjRlOGFkYWZiMTFjYmMyNjFkZTM3ZDk3MjQ0ZTU1OTI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTEgQXVnIDIwMTggMTA6MDg6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcGFuZWwtcGx1Z2luOiBJbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IvbWlub3IKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZ2xpYmMgMi4yOCsgbmVlZHMgaXQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitDYzogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgorLS0tCisgcGFuZWwtcGx1Z2luL2RldnBlcmYuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcGFuZWwtcGx1Z2luL2RldnBlcmYuYyBiL3BhbmVsLXBsdWdpbi9kZXZwZXJmLmMKK2luZGV4IDE3NWZkNDQuLmNiMmU4OGEgMTAwNjQ0CistLS0gYS9wYW5lbC1wbHVnaW4vZGV2cGVyZi5jCisrKysgYi9wYW5lbC1wbHVnaW4vZGV2cGVyZi5jCitAQCAtMzQsNiArMzQsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorIC8qIGZvciBtYWpvcigpIGFuZCBtaW5vcigpICovCisrI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyAjZGVmaW5lIF9CU0RfU09VUkNFCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9kaXNrcGVyZi94ZmNlNC1kaXNrcGVyZi1wbHVnaW5fMi42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Rpc2twZXJmL3hmY2U0LWRpc2twZXJmLXBsdWdpbl8yLjYuMS5iYgppbmRleCAxNjFiMmJiLi5kYzdmMWZjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Rpc2twZXJmL3hmY2U0LWRpc2twZXJmLXBsdWdpbl8yLjYuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Rpc2twZXJmL3hmY2U0LWRpc2twZXJmLXBsdWdpbl8yLjYuMS5iYgpAQCAtNSw1ICs1LDggQEAKIAogaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgogCitTUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnhmY2Uub3JnL3NyYy9wYW5lbC1wbHVnaW5zLyR7QlBOfS8ke0AnJHtQVn0nWzA6M119LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGFuZWwtcGx1Z2luLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI2M2Q1ZjAzOTM0YzJkYmRkYjNhZDdiZjdmNTM1Y2MyMyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTJkZGM3NDJiZTNlZWNiNmFkNTU1NGUxYjFkZjAzZDU2ODVjYjcxZjQ4YTU1OGQ1Zjg5NWRlMzdjNTdlNGZhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9lbWJlZC94ZmNlNC1lbWJlZC1wbHVnaW5fMS4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2VtYmVkL3hmY2U0LWVtYmVkLXBsdWdpbl8xLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJkNmVkZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2VtYmVkL3hmY2U0LWVtYmVkLXBsdWdpbl8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgcGFuZWwgcGx1Z2luIHRoYXQgZW1iZWRzIGFyYml0cmFyeSB3aW5kb3dzIChvciBHdGtQbHVnIHdpZGdldHMpIGludG8gdGhlIHBhbmVsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtZW1iZWQtcGx1Z2luIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KLQotIyBERVBFTkRTICs9ICJ4ZmNvbmYgeHByb3RvIGxpYnh0c3QiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNWI4NmNiYzFjNTRlZTdjMWQyZTk1YTQ1MDJmZWQ4ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNWQ0YzZjNTZkZDY0NjhjMGU1YWZlNjZmNjU3YzE1MjZmMmQ4MzBhNTc3MTA1YTUxZGE0MzY1NzY1MTgzMmUzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9lbWJlZC94ZmNlNC1lbWJlZC1wbHVnaW5fMS42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2VtYmVkL3hmY2U0LWVtYmVkLXBsdWdpbl8xLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODdiMTgzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9lbWJlZC94ZmNlNC1lbWJlZC1wbHVnaW5fMS42LjAuYmIKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT04gPSAiQSBwYW5lbCBwbHVnaW4gdGhhdCBlbWJlZHMgYXJiaXRyYXJ5IHdpbmRvd3MgKG9yIEd0a1BsdWcgd2lkZ2V0cykgaW50byB0aGUgcGFuZWwuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1lbWJlZC1wbHVnaW4iCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCisjIERFUEVORFMgKz0gInhmY29uZiB4b3JncHJvdG8gbGlieHRzdCIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4NzBiMTE2Yjg1ZTRmYTY4ZDFiOWVmNzZiZDFkMjc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3NjdkZjYzNjBlODE5NGIzMmJjMjQ4MjNkZDAwMDk3NWVkYmEwY2FmZTUyNWMyM2Q3ODU0MDI5MzU5ZWUyMjgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2V5ZXMveGZjZTQtZXllcy1wbHVnaW5fNC40LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2V5ZXMveGZjZTQtZXllcy1wbHVnaW5fNC40LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNGM0MTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9leWVzL3hmY2U0LWV5ZXMtcGx1Z2luXzQuNC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gd2l0aCBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNwdSBmcmVxdWVuY3kiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWV5ZXMtcGx1Z2luIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMjg4MTkyNGZkY2MxMjMwZDlmYTgyYzEwZjFhNmFmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NDhmN2ExNzM4ZDg1MmFmOTQ4MmQxMTMzMGI4YWIzMzkwMWYwNTI1Njk4NGRlNzNkOGNlYTRkN2Q3MzExOTM3IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC9leWVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9leWVzL3hmY2U0LWV5ZXMtcGx1Z2luXzQuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9leWVzL3hmY2U0LWV5ZXMtcGx1Z2luXzQuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzIxYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2V5ZXMveGZjZTQtZXllcy1wbHVnaW5fNC41LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gd2l0aCBncmFwaGljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNwdSBmcmVxdWVuY3kiCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWV5ZXMtcGx1Z2luIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTI3NGNlZGEzN2M3YThhZTA4MjFkOWQ0OWU5NjVlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZGFlMDAwMzYzODMxMDVhMTVkMTJlOTgwOWFiZDU5NDVhOGYyMTUyYjE3ZTE2Y2NkZmJmZTViZDk3MzNmMjlkIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC9leWVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9nZW5tb24veGZjZTQtZ2VubW9uLXBsdWdpbl80LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvZ2VubW9uL3hmY2U0LWdlbm1vbi1wbHVnaW5fNC4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MjRmZTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9nZW5tb24veGZjZTQtZ2VubW9uLXBsdWdpbl80LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhpcyBwbHVnaW4gY3ljbGljYWxseSBzcGF3bnMgdGhlIGluZGljYXRlZCBzY3JpcHQvcHJvZ3JhbSwgY2FwdHVyZXMgaXRzIG91dHB1dCAoc3Rkb3V0KSBhbmQgZGlzcGxheXMgdGhlIHJlc3VsdGluZyBzdHJpbmcgaW50byB0aGUgcGFuZWwuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1nZW5tb24tcGx1Z2luIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY4YWQ2MmM2NGNjNmM2MjAxMjYyNDFmZDQyOWU2OGZlIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMjhjZmJmOWM4MmU3NThhMjM2YzFmNWZjYmNiOGEzNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhN2RiNGY3ODYxNjY2NDMwNzYzMjNkY2RlOTlhZDEyZTkyMzgzY2MyOWI0YjgwNjg2MmQ1NDgzZWM0NjhjM2UzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9nZW5tb24veGZjZTQtZ2VubW9uLXBsdWdpbl80LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvZ2VubW9uL3hmY2U0LWdlbm1vbi1wbHVnaW5fNC4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAyZTkzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvZ2VubW9uL3hmY2U0LWdlbm1vbi1wbHVnaW5fNC4wLjEuYmIKQEAgLTAsMCArMSw5IEBACitERVNDUklQVElPTiA9ICJUaGlzIHBsdWdpbiBjeWNsaWNhbGx5IHNwYXducyB0aGUgaW5kaWNhdGVkIHNjcmlwdC9wcm9ncmFtLCBjYXB0dXJlcyBpdHMgb3V0cHV0IChzdGRvdXQpIGFuZCBkaXNwbGF5cyB0aGUgcmVzdWx0aW5nIHN0cmluZyBpbnRvIHRoZSBwYW5lbC4iCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LWdlbm1vbi1wbHVnaW4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjhhZDYyYzY0Y2M2YzYyMDEyNjI0MWZkNDI5ZTY4ZmUiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworU1JDX1VSSVttZDVzdW1dID0gIjlkZDA2ODFjMTc5MzAyZDU2ZDkyYmJkYTU3NjViZDA5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjNmNlMzdmYmU3MTA5NDU0OGI0NDg2MjU4N2MyODEzZGE5OTFhZWFhZWNmZjhlNTcyNzI0ZGJiZWM4M2FiODYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2hvdGNvcm5lci94ZmNlNC1ob3Rjb3JuZXItcGx1Z2luLzAwMDEtQ01ha2VMaXN0cy50eHQtZml4LWxpYnJhcnktaW5zdGFsbC1wYXRoLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9ob3Rjb3JuZXIveGZjZTQtaG90Y29ybmVyLXBsdWdpbi8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1saWJyYXJ5LWluc3RhbGwtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjM0OGRjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9ob3Rjb3JuZXIveGZjZTQtaG90Y29ybmVyLXBsdWdpbi8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1saWJyYXJ5LWluc3RhbGwtcGF0aC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2JyaWFuaHN1L3hmY2U0LWhvdGNvcm5lci1wbHVnaW4vcHVsbC84XQorCitUaGUgbGlicmFyeSBpbnN0YWxsIHBhdGggbWF5IGJlICR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2xpYjY0IHJhdGhlcgordGhhbiBmaXhlZCAke0NNQUtFX0lOU1RBTExfUFJFRklYfS9saWIuIFByb3ZpZGUgYSB2YXJpYWJsZSB0byBtYWtlIGl0Citjb3VsZCBvdmVycmlkZSBieSBjbWFrZSBjb21tYW5kIGxpbmUuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggZTE5Mzc4Ny4uODRjYjUyZCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTEwLDggKzEwLDkgQEAgaW5jbHVkZShHTlVJbnN0YWxsRGlycykKKyAKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhHVEsgUkVRVUlSRUQgbGlieGZjZTRwYW5lbC0xLjAgbGlieGZjZTR1aS0xIGxpYnduY2stMy4wKQorIAorLXNldChDTUFLRV9BUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9saWIpCistc2V0KENNQUtFX0xJQlJBUllfT1VUUFVUX0RJUkVDVE9SWSAke0NNQUtFX0JJTkFSWV9ESVJ9L2xpYikKKytzZXQoQkFTRV9MSUJfUEFUSCAibGliIiBDQUNIRSBTVFJJTkcgImJhc2UgbGlicmFyeSBpbnN0YWxsIHBhdGgiKQorK3NldChDTUFLRV9BUkNISVZFX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS8ke0JBU0VfTElCX1BBVEh9KQorK3NldChDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS8ke0JBU0VfTElCX1BBVEh9KQorIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9iaW4pCisgIAorIElOQ0xVREVfRElSRUNUT1JJRVMoJHtHVEtfSU5DTFVERV9ESVJTfSkKK0BAIC0yOCw3ICsyOSw3IEBAIEFERF9MSUJSQVJZKGhvdGNvcm5lciBTSEFSRUQgc3JjL2hvdGNvcm5lci5jIHNyYy91dGlsLmMpCisgIAorIFRBUkdFVF9MSU5LX0xJQlJBUklFUyhob3Rjb3JuZXIgJHtHVEtfTElCUkFSSUVTfSkKKyAKKy1JTlNUQUxMKFRBUkdFVFMgaG90Y29ybmVyICBMSUJSQVJZIERFU1RJTkFUSU9OIGxpYi94ZmNlNC9wYW5lbC9wbHVnaW5zLykKKytJTlNUQUxMKFRBUkdFVFMgaG90Y29ybmVyICBMSUJSQVJZIERFU1RJTkFUSU9OICR7QkFTRV9MSUJfUEFUSH0veGZjZTQvcGFuZWwvcGx1Z2lucy8pCisgSU5TVEFMTChGSUxFUyBob3Rjb3JuZXIuZGVza3RvcCBERVNUSU5BVElPTiBzaGFyZS94ZmNlNC9wYW5lbC9wbHVnaW5zLykKKyBHRVRURVhUX0NSRUFURV9UUkFOU0xBVElPTlMocG8veGZjZTQtaG90Y29ybmVyLXBsdWdpbi5wb3QgQUxMIHBvL3poX1RXLnBvKQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9ob3Rjb3JuZXIveGZjZTQtaG90Y29ybmVyLXBsdWdpbl8wLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvaG90Y29ybmVyL3hmY2U0LWhvdGNvcm5lci1wbHVnaW5fMC4wLjIuYmIKaW5kZXggZjg2YzkyZS4uNTdhODE1YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9ob3Rjb3JuZXIveGZjZTQtaG90Y29ybmVyLXBsdWdpbl8wLjAuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2hvdGNvcm5lci94ZmNlNC1ob3Rjb3JuZXItcGx1Z2luXzAuMC4yLmJiCkBAIC02LDYgKzYsOSBAQAogCiBERVBFTkRTICs9ICJsaWJ3bmNrMyIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYnJpYW5oc3UvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9icmlhbmhzdS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LWZpeC1saWJyYXJ5LWluc3RhbGwtcGF0aC5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhYzMxYjQ1Y2RhMTg2N2NiNmJkNjliYjI4NTYzODI2MyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDI2ODRjOTJmOTZhMTU4ZTE0MTdlNTk3OTQ3ZjgyMjc2OWFjNTZhYTE5OTNhOGM5ZjE2NmVlNjMzZWYyYjhkIgorCitFWFRSQV9PRUNNQUtFID0gIi1EQkFTRV9MSUJfUEFUSD0ke2Jhc2VsaWJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9tb3VudC94ZmNlNC1tb3VudC1wbHVnaW5fMS4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL21vdW50L3hmY2U0LW1vdW50LXBsdWdpbl8xLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjcwMDkzNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL21vdW50L3hmY2U0LW1vdW50LXBsdWdpbl8xLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiTW91bnQvdW1vdW50IHV0aWxpdHkgZm9yIHRoZSB4ZmNlIHBhbmVsIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1tb3VudC1wbHVnaW4iCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGVjay1mb3ItZnN0YWIuaC1kdXJpbmctY29uZmlndXJlLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjdlYmE5Njk2ZDgyNDMzYTU1Nzc3NDEyMTRkMzRiNTg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0NTc4NDQ3YWJhZjlkYTYzMGE3NTBkNjRhY2RjMzdkNGZkMjBkZGE2NDYwMjA4ZDZkMWZmYWE5ZTQzZWUxYTYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL21vdW50L3hmY2U0LW1vdW50LXBsdWdpbl8xLjEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvbW91bnQveGZjZTQtbW91bnQtcGx1Z2luXzEuMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MDAxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL21vdW50L3hmY2U0LW1vdW50LXBsdWdpbl8xLjEuMy5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIk1vdW50L3Vtb3VudCB1dGlsaXR5IGZvciB0aGUgeGZjZSBwYW5lbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtbW91bnQtcGx1Z2luIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY2hlY2stZm9yLWZzdGFiLmgtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjFmOTAzZDBiZGY2ZWU2Nzc2YWZkOGFmNzM0OTdhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYWU1YmQ2Yjk4NGJjNzhkYWY2YjVmYjlkMTU4MTdhMjcyNTM2NzRhNDI2NGFkNjBmNjJjY2IxYWExOTQ5MTFlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTQxN2ExLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHVsc2VhdWRpbyBtaXhlciBmb3IgdGhlIHhmY2UgcGFuZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjVlYWM2YmIwZDZlYzBkYzY1NWU0MTc3ODFkNDAxNWYiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwdWxzZWF1ZGlvIHgxMSIKLQotREVQRU5EUyArPSAicHVsc2VhdWRpbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyZjNkZDk3ZTAyYzYwNGUyMDIzYjViYWYzMGQ0YTZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFlZjlhZDY4YTBiNjA0YTZhZWNhNGMwODE0NmYzZWI0MmJlZGI0ZmUxYzhiNjViODI2NzljZWMwZTJmYzFjYjMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYm5vdGlmeV0gPSAiLS1lbmFibGUtbGlibm90aWZ5LC0tZGlzYWJsZS1saWJub3RpZnksbGlibm90aWZ5IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwYXZ1Y29udHJvbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvcHVsc2VhdWRpby94ZmNlNC1wdWxzZWF1ZGlvLXBsdWdpbl8wLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDIzNzA3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4xLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiUHVsc2VhdWRpbyBtaXhlciBmb3IgdGhlIHhmY2UgcGFuZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjVlYWM2YmIwZDZlYzBkYzY1NWU0MTc3ODFkNDAxNWYiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwdWxzZWF1ZGlvIHgxMSIKKworREVQRU5EUyArPSAicHVsc2VhdWRpbyIKKworU1JDX1VSSVttZDVzdW1dID0gIjdkZjcyODBjMTljMmM4YjhjNWJjNGY0ZjIxMzZkMWRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjYTg4MzE0ZGJhYzNlMjRjMGUxYmZjNTkzZmFkNmVkYjY2MzE5NzY2YmU2MmU4MjU2YzgxYjAzMTRmMDQ5ZjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYm5vdGlmeV0gPSAiLS1lbmFibGUtbGlibm90aWZ5LC0tZGlzYWJsZS1saWJub3RpZnksbGlibm90aWZ5IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJwYXZ1Y29udHJvbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjguMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3dlYXRoZXIveGZjZTQtd2VhdGhlci1wbHVnaW5fMC44LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDllYWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjguMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlBhbmVsIHBsdWdpbiB0byBkaXNwbGF5IGN1cnJlbnQgdGVtcGVyYXR1cmUgYW5kIHdlYXRoZXIgY29uZGl0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC13ZWF0aGVyLXBsdWdpbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgotCi1ERVBFTkRTICs9ICJsaWJzb3VwLTIuNCBkYnVzLWdsaWIgdXBvd2VyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmJhN2Y3NTBiOTdjOGZjMzY1NjcxNTI2OGVkYWQ3OTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWU2ZDQzYzQ0NDkwNDYzMWMyNDA0NzBlMTVlOTYyMTVjMmNlNDUxMTU4YmZkYmYyMzRiY2U4OTJiZjYwZWFiOCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQvd2VhdGhlciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjYzYmI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuOS4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiUGFuZWwgcGx1Z2luIHRvIGRpc3BsYXkgY3VycmVudCB0ZW1wZXJhdHVyZSBhbmQgd2VhdGhlciBjb25kaXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LXdlYXRoZXItcGx1Z2luIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCisKK0RFUEVORFMgKz0gImxpYnNvdXAtMi40IGRidXMtZ2xpYiB1cG93ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNWQzZDlmYjJlNjg4YTYxOTIwMTY1NWY2ZWVhNTFjMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDM2OGNmMjMzMjc3NGFkMmEwNTIyNmIyOTE0ZWNiNjBlNzU1MGU5YjIxNjRiZTUzZWJlOGYzNzAxOThiYjNkIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC93ZWF0aGVyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi4xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYyY2ZmMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjEuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIG1lbnUgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vZ290dGNvZGUub3JnL3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbi8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLWluaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gY21ha2UKLQotU1JDX1VSSVttZDVzdW1dID0gImIyYjJiYWNjOGQ1ZjNjMzExOWEwZjMxN2I2MDc0Mjc2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiMmE4ZWUxNDQ1ZGYzOWEyY2RhMTM5ZTM1M2YyZTllYzM3MjBhNzgwMjk2ZGM0MWI3ZDRhZWJkZTU3MzcxZmMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJtZW51bGlicmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YTMyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjMuMC5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkFuIGFsdGVybmF0ZSBtZW51IGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL2dvdHRjb2RlLm9yZy94ZmNlNC13aGlza2VybWVudS1wbHVnaW4vIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitpbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luIGNtYWtlCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjM4M2MzZWIxYjU0YWRmNWEyMDY5NzNiZDIwZjE1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTU2OWJiMGRmZjdlM2RiM2Q5NjRlMjMzMjNmNTRjNmRlNzI0OTc0MWM2YTBlMzNhMGZhNTAxZDgzMDQwYjE2IgorCitSUkVDT01NRU5EU18ke1BOfSArPSAibWVudWxpYnJlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvYXJjaGl2ZS90aHVuYXItYXJjaGl2ZS1wbHVnaW5fMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9hcmNoaXZlL3RodW5hci1hcmNoaXZlLXBsdWdpbl8wLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBhYjZhZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9hcmNoaXZlL3RodW5hci1hcmNoaXZlLXBsdWdpbl8wLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRodW5hciBBcmNoaXZlIFBsdWdpbiBhbGxvd3MgeW91IHRvIGNyZWF0ZSBhbmQgZXh0cmFjdCBhcmNoaXZlIGZpbGVzIHVzaW5nIGZpbGUgY29udGV4dCBtZW51cyBpbiBUaHVuYXIiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy90aHVuYXItcGx1Z2lucy90aHVuYXItYXJjaGl2ZS1wbHVnaW4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjUyODkwZDllZWUyNmFhYjdiNDMyZThiOGE2MTY0NzUiCi0KLWluaGVyaXQgdGh1bmFyLXBsdWdpbgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDI1ZjRmYWFhY2U2ZGM3YTQ3MTZhMzViNzc5NTQ2M2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWFkNTU5YjBjMTEzMDhmNjg5N2FkNTY2MDRlNWEwNmRjOGYzNjlmNjQ5ZWIyMDEyMGIyZDMwMThlZjVkYTU0YyIKLQotIyBpbnN0YWxsIHRhcCBmaWxlcyBpbiAke2xpYmRpcn0vdGh1bmFyLWFyY2hpdmUtcGx1Z2luCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9hcmNoaXZlL3RodW5hci1hcmNoaXZlLXBsdWdpbl8wLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXRodW5hci1wbHVnaW5zL2FyY2hpdmUvdGh1bmFyLWFyY2hpdmUtcGx1Z2luXzAuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NGUyNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9hcmNoaXZlL3RodW5hci1hcmNoaXZlLXBsdWdpbl8wLjQuMC5iYgpAQCAtMCwwICsxLDEyIEBACitERVNDUklQVElPTiA9ICJUaHVuYXIgQXJjaGl2ZSBQbHVnaW4gYWxsb3dzIHlvdSB0byBjcmVhdGUgYW5kIGV4dHJhY3QgYXJjaGl2ZSBmaWxlcyB1c2luZyBmaWxlIGNvbnRleHQgbWVudXMgaW4gVGh1bmFyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvdGh1bmFyLXBsdWdpbnMvdGh1bmFyLWFyY2hpdmUtcGx1Z2luIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgorCitpbmhlcml0IHRodW5hci1wbHVnaW4KKworU1JDX1VSSVttZDVzdW1dID0gIjBhNzczOGEzYTVmODRiZjIxOGVjZTNmZmI1MjQxYzYzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmODJmYTg2YTM4ODEyNGViM2M0ODU0MjQ5YzMwNzEyYjI5MjJlNjE3ODk2MDcyNjhlZTE0NTQ4NTQ5YjMxMTUiCisKKyMgaW5zdGFsbCB0YXAgZmlsZXMgaW4gJHtsaWJkaXJ9L3RodW5hci1hcmNoaXZlLXBsdWdpbgorRVhUUkFfT0VDT05GICs9ICItLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvbWVkaWEtdGFncy90aHVuYXItbWVkaWEtdGFncy1wbHVnaW5fMC4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9tZWRpYS10YWdzL3RodW5hci1tZWRpYS10YWdzLXBsdWdpbl8wLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBmMTUwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9tZWRpYS10YWdzL3RodW5hci1tZWRpYS10YWdzLXBsdWdpbl8wLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiQWRkcyBJRDMvT0dHIHRhZyBzdXBwb3J0IHRvIHRoZSBUaHVuYXIgYnVsayByZW5hbWUgZGlhbG9nIgotSE9NRVBBR0UgPSAiaHR0cDovL3RodW5hci54ZmNlLm9yZyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCB0aHVuYXItcGx1Z2luCi0KLURFUEVORFMgKz0gInRhZ2xpYiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjAxMDZlOTAwNzE0Zjg2Y2NiYWZkYzcyMjM4ZDNjZjhkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1NmQwMTJhMTA0MDNlZTNlMmU1NWI2ZmYyZmFlY2I3OTY4MjFkZTllYmVlMDAwMzE1NTg5Yjk1ZDk1ZWQyNTMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9tZWRpYS10YWdzL3RodW5hci1tZWRpYS10YWdzLXBsdWdpbl8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXRodW5hci1wbHVnaW5zL21lZGlhLXRhZ3MvdGh1bmFyLW1lZGlhLXRhZ3MtcGx1Z2luXzAuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MWU3NjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9tZWRpYS10YWdzL3RodW5hci1tZWRpYS10YWdzLXBsdWdpbl8wLjMuMC5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkFkZHMgSUQzL09HRyB0YWcgc3VwcG9ydCB0byB0aGUgVGh1bmFyIGJ1bGsgcmVuYW1lIGRpYWxvZyIKK0hPTUVQQUdFID0gImh0dHA6Ly90aHVuYXIueGZjZS5vcmciCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgdGh1bmFyLXBsdWdpbgorCitERVBFTkRTICs9ICJ0YWdsaWIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZTMzMjExM2U0YjBlNTQ4ZWU3YWJkODc2Mjk2NjdmNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjY1YzQ0MTVhYmFjNDAzMzdjYzU1NjZjNmY3MDZlZmNmMGJlNGU5NzcyM2FiZTIyYmE4Yjg3NGM5M2E1OTFiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvc2hhcmVzL3RodW5hci1zaGFyZXMtcGx1Z2luXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvc2hhcmVzL3RodW5hci1zaGFyZXMtcGx1Z2luXzAuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NGM2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjAuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJRdWlja2x5IHNoYXJlIGEgZm9sZGVyIHVzaW5nIFNhbWJhIGZyb20gVGh1bmFyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitpbmhlcml0IHRodW5hci1wbHVnaW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTE3NzMxNjhjMGIzYzdjMGYyNTNhMzM5ZjAyZTVhZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZhZGMwMWNhNDVhM2QyNTY3YTJhOTY5YTNiMTZkMTc5OWE4OTc1NDUzYWIxODAzYTA2NWZhODI0OTZiNWI2NSIKKworUkRFUEVORFNfJHtQTn0gKz0gInNhbWJhLXNlcnZlciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjU2YjU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTj0iQXBwbGljYXRpb24gbGlicmFyeSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJndGsrIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHZpcnR1YWwvbGlieDExIGxpYnVyaS1wZXJsLW5hdGl2ZSBjYWlybyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSB4ZmNlNC1kZXYtdG9vbHMtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotaW5oZXJpdCB4ZmNlIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKLQotIyBTUkNfVVJJIG11c3QgZm9sbG93IGluaGVyaXRlZCBvbmUKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovL2V4by1uby10ZXN0cy0wLjgucGF0Y2ggXAotICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICBmaWxlOi8vcmVkdWNlLWJ1aWxkLXRvLWV4by1jc291cmNlLW9ubHkucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzI0YWZjY2EyMjRmNWZiMjJiNTEwOTI2ZDI3NDBlNTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjRiODgyNzFhMzdkMGVjN2RjYTA2MmM3YmM2MWNhMzIzMTE2Zjc4NTUwOTJhYzM5Njk4YzQyMWEyZjMwYTE4ZiIKLQotUEFDS0FHRVMgPSsgImV4by1jc291cmNlIgotCi0jIE5vdGU6IHB5dGhvbiBiaW5kaW5ncyBkaWQgbm90IHdvcmsgaW4gb2UtZGV2IGFuZCBhcmUgYWJvdXQgdG8gYmUgbW92ZWQgdG8KLSMgcHl4ZmNlIHNlZSBodHRwOi8vY29tbWVudHMuZ21hbmUub3JnL2dtYW5lLmNvbXAuZGVza3RvcC54ZmNlLmRldmVsLnZlcnNpb240LzE5NTYwCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC8gXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS94ZmNlNC9leG8tMSBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzLy5kZWJ1ZyBcCi0iCi0KLUZJTEVTX2V4by1jc291cmNlICs9ICIke2JpbmRpcn0vZXhvLWNzb3VyY2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0ODI5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZXhvL2V4b18wLjEyLjMuYmIKQEAgLTAsMCArMSwzNiBAQAorREVTQ1JJUFRJT049IkFwcGxpY2F0aW9uIGxpYnJhcnkgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKK0RFUEVORFMgPSAiZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSBsaWJ1cmktcGVybC1uYXRpdmUgY2Fpcm8iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCisKK2luaGVyaXQgeGZjZSBweXRob25uYXRpdmUgcGVybG5hdGl2ZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCisKKyMgU1JDX1VSSSBtdXN0IGZvbGxvdyBpbmhlcml0ZWQgb25lCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9leG8tbm8tdGVzdHMtMC44LnBhdGNoIFwKKyAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKKyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgZmlsZTovL3JlZHVjZS1idWlsZC10by1leG8tY3NvdXJjZS1vbmx5LnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImRhOTM0YzU5MzlmMmVlNDU0MGY1ZDQ4OTkxMDUzZjAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NmZlODZiYjUwNGFhOWIzMzMyYjk2MTA1ZDc1NWY1ZDkwNTJjOTAzZmQ2NTc0YjUxMmE1ZWY3NmMwYWQ0MzkiCisKK1BBQ0tBR0VTID0rICJleG8tY3NvdXJjZSIKKworIyBOb3RlOiBweXRob24gYmluZGluZ3MgZGlkIG5vdCB3b3JrIGluIG9lLWRldiBhbmQgYXJlIGFib3V0IHRvIGJlIG1vdmVkIHRvCisjIHB5eGZjZSBzZWUgaHR0cDovL2NvbW1lbnRzLmdtYW5lLm9yZy9nbWFuZS5jb21wLmRlc2t0b3AueGZjZS5kZXZlbC52ZXJzaW9uNC8xOTU2MAorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQvIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvZXhvLTEgXAorIgorCitGSUxFU19leG8tY3NvdXJjZSArPSAiJHtiaW5kaXJ9L2V4by1jc291cmNlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ3RrLXhmY2UtZW5naW5lL2d0ay14ZmNlLWVuZ2luZV8zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvZ3RrLXhmY2UtZW5naW5lL2d0ay14ZmNlLWVuZ2luZV8zLjIuMC5iYgppbmRleCBlZjRmNGJmLi44MDVlODkzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2d0ay14ZmNlLWVuZ2luZS9ndGsteGZjZS1lbmdpbmVfMy4yLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9ndGsteGZjZS1lbmdpbmUvZ3RrLXhmY2UtZW5naW5lXzMuMi4wLmJiCkBAIC0yMSwxMCArMjEsMTAgQEAKIEZJTEVTX2d0azMteGZjZS1lbmdpbmUgKz0gIiR7bGliZGlyfS9ndGstMy4wLyovdGhlbWluZy1lbmdpbmVzLyouc28iCiBGSUxFU18ke1BOfS10aGVtZXMgKz0gIiR7ZGF0YWRpcn0vdGhlbWVzIgogCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9ndGstMy4wLyovdGhlbWluZy1lbmdpbmVzLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ndGstMi4wLyovZW5naW5lcy8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9ndGstMi4wLyovZW5naW5lcy8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2d0ay0zLjAvKi90aGVtaW5nLWVuZ2luZXMvKi5sYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKyAgICAke2xpYmRpcn0vZ3RrLTIuMC8qL2VuZ2luZXMvKi5sYSBcCisgICAgJHtsaWJkaXJ9L2d0ay0zLjAvKi90aGVtaW5nLWVuZ2luZXMvKi5sYSBcCisiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BOfS10aGVtZXMiCiBSREVQRU5EU19ndGszLXhmY2UtZW5naW5lICs9ICIke1BOfS10aGVtZXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2xpYnhmY2U0dWkvbGlieGZjZTR1aV80LjEyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2xpYnhmY2U0dWkvbGlieGZjZTR1aV80LjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4NDNlMGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9saWJ4ZmNlNHVpL2xpYnhmY2U0dWlfNC4xMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlNCBXaWRnZXQgbGlicmFyeSBhbmQgWCBXaW5kb3cgU3lzdGVtIGludGVyYWN0aW9uIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAicGVybC1uYXRpdmUgZ2xpYi0yLjAgZ3RrKyBndGsrMyBpbnRsdG9vbC1uYXRpdmUgbGlieGZjZTR1dGlsIHhmY29uZiB4ZmNlNC1kZXYtdG9vbHMgdmlydHVhbC9saWJ4MTEgbGlic20gbGliaWNlIgotCi1pbmhlcml0IHhmY2UgYXV0b3Rvb2xzIGdldHRleHQgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1saWJ4ZmNlNGtiZC1wcml2YXRlLXhmY2U0LWtleWJvYXJkLXNob3J0Y3V0cy54bWwtZml4LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlYTlmYWQ3ZDA1OWZlOGY1MzFmZThkYjQyZGFiYjVhOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDYxOTgxMWJmYmU3NDc4YmI5ODRjMTY1NDNkOTgwY2FkZDA4NTg2MzY1YTdiYzI1ZTU5ZTNjYTYzODRmZjQzIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC12ZW5kb3ItaW5mbz0ke0RJU1RST30iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dsYWRldWldID0gIi0tZW5hYmxlLWdsYWRldWksLS1kaXNhYmxlLWdsYWRldWksZ2xhZGUzIgotUEFDS0FHRUNPTkZJR1tzdGFydHVwLW5vdGlmaWNhdGlvbl0gPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sLS1kaXNhYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLHN0YXJ0dXAtbm90aWZpY2F0aW9uIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3RrMiAke1BOfS1ndGszIgotRklMRVNfJHtQTn0tZ3RrMiArPSAiJHtsaWJkaXJ9L2xpYnhmY2U0dWktMS5zby4qICR7bGliZGlyfS9saWJ4ZmNlNGtiZC1wcml2YXRlLTIuc28uKiIKLUZJTEVTXyR7UE59LWd0azMgKz0gIiR7bGliZGlyfS9saWJ4ZmNlNHVpLTIuc28uKiAke2xpYmRpcn0vbGlieGZjZTRrYmQtcHJpdmF0ZS0zLnNvLioiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dsYWRlMy9tb2R1bGVzLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsYWRlMy9tb2R1bGVzLyoubGEgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xhZGUzL2NhdGFsb2dzLyouaW4iCi1QQUNLQUdFUyArPSAiJHtQTn0tZ2xhZGUiCi1GSUxFU18ke1BOfS1nbGFkZSA9ICIke2xpYmRpcn0vZ2xhZGUzIFwKLSAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2xhZGUzIgotCi1SREVQRU5EU18ke1BOfS1ndGsyID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tZ3RrMyA9ICIke1BOfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1aS9saWJ4ZmNlNHVpXzQuMTMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1aS9saWJ4ZmNlNHVpXzQuMTMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTM4NWJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9saWJ4ZmNlNHVpL2xpYnhmY2U0dWlfNC4xMy40LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiWGZjZTQgV2lkZ2V0IGxpYnJhcnkgYW5kIFggV2luZG93IFN5c3RlbSBpbnRlcmFjdGlvbiIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjUyODkwZDllZWUyNmFhYjdiNDMyZThiOGE2MTY0NzUiCitERVBFTkRTID0gInBlcmwtbmF0aXZlIGdsaWItMi4wIGd0aysgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIGxpYnhmY2U0dXRpbCB4ZmNvbmYgeGZjZTQtZGV2LXRvb2xzIHZpcnR1YWwvbGlieDExIGxpYnNtIGxpYmljZSIKKworaW5oZXJpdCB4ZmNlIGF1dG90b29scyBnZXR0ZXh0IGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly8wMDAxLWxpYnhmY2U0a2JkLXByaXZhdGUteGZjZTQta2V5Ym9hcmQtc2hvcnRjdXRzLnhtbC1maXgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImI0MDdjZGFiNzNlYmQ1YzMzYzkwZGI2YmRiM2VjNWZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2M2ZjZGI4ZTVhY2I2ZjBkMjYwNzVlYTE3ZDMyMGRiZmJlYzIwNTg1NjdjZDY3Y2I5OTgyNGM3NDAyYTFmNzkiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXZlbmRvci1pbmZvPSR7RElTVFJPfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2xhZGV1aV0gPSAiLS1lbmFibGUtZ2xhZGV1aSwtLWRpc2FibGUtZ2xhZGV1aSxnbGFkZTMiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCisKK1BBQ0tBR0VTID0rICIke1BOfS1ndGsyICR7UE59LWd0azMiCitGSUxFU18ke1BOfS1ndGsyICs9ICIke2xpYmRpcn0vbGlieGZjZTR1aS0xLnNvLiogJHtsaWJkaXJ9L2xpYnhmY2U0a2JkLXByaXZhdGUtMi5zby4qIgorRklMRVNfJHtQTn0tZ3RrMyArPSAiJHtsaWJkaXJ9L2xpYnhmY2U0dWktMi5zby4qICR7bGliZGlyfS9saWJ4ZmNlNGtiZC1wcml2YXRlLTMuc28uKiIKKworUEFDS0FHRVMgKz0gIiR7UE59LWdsYWRlIgorRklMRVNfJHtQTn0tZ2xhZGUgPSAiJHtsaWJkaXJ9L2dsYWRlMyBcCisgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsYWRlMyIKKworUkRFUEVORFNfJHtQTn0tZ3RrMiA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWd0azMgPSAiJHtQTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2xpYnhmY2U0dXRpbC9saWJ4ZmNlNHV0aWxfNC4xMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9saWJ4ZmNlNHV0aWwvbGlieGZjZTR1dGlsXzQuMTIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk4NWEwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2xpYnhmY2U0dXRpbC9saWJ4ZmNlNHV0aWxfNC4xMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJCYXNpYyB1dGlsaXR5IGxpYnJhcnkgZm9yIFhmY2U0IgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUgZ2xpYi0yLjAiCi0KLWluaGVyaXQgeGZjZSBndGstZG9jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZWIwMTJiNmMxMjkyY2VlZGIzYTgzZWJmYzFmZjA4ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NzZiZGVmYTJlMTNjYmY2OGI2MjZiMjE1ODg5MmZiOTNlODI0ZTFlZjU5Y2Y5NTExMjNhOTZjZWZiYzg4ODFkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9saWJ4ZmNlNHV0aWwvbGlieGZjZTR1dGlsXzQuMTMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1dGlsL2xpYnhmY2U0dXRpbF80LjEzLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFjYzFkYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvbGlieGZjZTR1dGlsL2xpYnhmY2U0dXRpbF80LjEzLjIuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJCYXNpYyB1dGlsaXR5IGxpYnJhcnkgZm9yIFhmY2U0IgorU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUgZ2xpYi0yLjAiCisKK2luaGVyaXQgeGZjZSBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTNlOGI5ZGQ3ZTEyMDI4ZDNlNjQyMzQ1Yjg1ZDZlZjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzU4Mjc1ZmY2NTAwODAzNjllNzQyNjk1ODYyYzgxMWNiNzg0MDJjODVmMjQzZWEwYjVhZWMxODYwMjdiZTM2MSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1leHRlbmRlZC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAteGZjZS1leHRlbmRlZC5iYgppbmRleCBiNzNjOWVlLi41ZjhjMDNjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXhmY2UtZXh0ZW5kZWQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC14ZmNlLWV4dGVuZGVkLmJiCkBAIC01Niw2ICs1Niw3IEBACiAgICAgeGZjZTQtdmVydmUtcGx1Z2luIFwKICAgICBcCiAgICAgeGZjZS1wb2xraXQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYmx1ZXRvb3RoIiwgImJsdWVtYW4iLCAiIiwgZCl9IFwKICAgICBcCiAgICAgdGh1bmFyLW1lZGlhLXRhZ3MtcGx1Z2luIFwKICAgICB0aHVuYXItYXJjaGl2ZS1wbHVnaW4gXApAQCAtNjcsNCArNjgsNyBAQAogICAgIHJpc3RyZXR0byBcCiAgICAgeGZjZTQtdGFza21hbmFnZXIgXAogICAgIGdpZ29sbyBcCisgICAgbW91c2VwYWQgXAorICAgIGNhdGZpc2ggXAorICAgIHhmY2U0LXBhbmVsLXByb2ZpbGVzIFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuLzAwMDEtRml4LXJldHVybi13aXRoLW5vLXZhbHVlLWluLWZ1bmN0aW9uLXJldHVybmluZy1ub24tdi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuLzAwMDEtRml4LXJldHVybi13aXRoLW5vLXZhbHVlLWluLWZ1bmN0aW9uLXJldHVybmluZy1ub24tdi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIzM2VhNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci12b2xtYW4vdGh1bmFyLXZvbG1hbi8wMDAxLUZpeC1yZXR1cm4td2l0aC1uby12YWx1ZS1pbi1mdW5jdGlvbi1yZXR1cm5pbmctbm9uLXYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDJlMjk1ZTljZThmN2Y2MGEyNzFhZGYwMDQ1ODhiMGQ4ZGI4OGRiMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IFRoaXJ0eXR3byA8bWF0dC41OTQ5MUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDcgTWFyIDIwMTUgMjI6NTA6MzIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHJldHVybiB3aXRoIG5vIHZhbHVlIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZCAoYnVnCi0gIzExNjU2KQotCi0tLS0KLSB0aHVuYXItdm9sbWFuL3R2bS1ibG9jay1kZXZpY2UuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3RodW5hci12b2xtYW4vdHZtLWJsb2NrLWRldmljZS5jIGIvdGh1bmFyLXZvbG1hbi90dm0tYmxvY2stZGV2aWNlLmMKLWluZGV4IGRhMzFlZmEuLmVkYjZjYWQgMTAwNjQ0Ci0tLS0gYS90aHVuYXItdm9sbWFuL3R2bS1ibG9jay1kZXZpY2UuYwotKysrIGIvdGh1bmFyLXZvbG1hbi90dm0tYmxvY2stZGV2aWNlLmMKLUBAIC03MTQsNyArNzE0LDcgQEAgdHZtX2Jsb2NrX2RldmljZV9tb3VudCAoVHZtQ29udGV4dCAqY29udGV4dCkKLSAgIEdNb3VudE9wZXJhdGlvbiAqbW91bnRfb3BlcmF0aW9uOwotICAgR1ZvbHVtZSAgICAgICAgICp2b2x1bWU7Ci0gCi0tICBnX3JldHVybl9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwpOwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKChjb250ZXh0ICE9IE5VTEwpLCBGQUxTRSk7Ci0gCi0gICAvKiBkZXRlcm1pbmUgdGhlIEdWb2x1bWUgY29ycmVzcG9uZGluZyB0byB0aGUgdWRldiBkZXZpY2UgKi8KLSAgIHZvbHVtZSA9IAotLS0gCi0xLjkuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci12b2xtYW4vdGh1bmFyLXZvbG1hbl8wLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuXzAuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjFkNDUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuXzAuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJBdXRvbWF0aWMgbWFuYWdlbWVudCBvZiByZW1vdmFibGUgZHJpdmVzIGFuZCBtZWRpYSBmb3IgdGh1bmFyIgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImV4byBnbGliLTIuMCBndGsrIGxpYnhmY2U0dWkgbGlieGZjZTR1dGlsIHhmY29uZiBsaWJub3RpZnkgbGliZ3VkZXYiCi0KLWluaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRml4LXJldHVybi13aXRoLW5vLXZhbHVlLWluLWZ1bmN0aW9uLXJldHVybmluZy1ub24tdi5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWFiNmUwNWIyZTgwOGQxZGNjOGQzNjY4M2E1OWI3ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTA4YmI1Y2UzMmMyOTZhNjRkZmJkYjI0MDZkNGU0NWEyMDhiMmM5MWU0ZWZhODMxZGMyOGYxZDZjMmFjMmJkIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmaWNhdGlvbnMsLS1kaXNhYmxlLW5vdGlmaWNhdGlvbnMsbGlibm90aWZ5IgotCi1SREVQRU5EU18ke1BOfSA9ICJlamVjdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuXzAuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXItdm9sbWFuL3RodW5hci12b2xtYW5fMC45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEzN2I2OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyLXZvbG1hbi90aHVuYXItdm9sbWFuXzAuOS4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiQXV0b21hdGljIG1hbmFnZW1lbnQgb2YgcmVtb3ZhYmxlIGRyaXZlcyBhbmQgbWVkaWEgZm9yIHRodW5hciIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorREVQRU5EUyA9ICJleG8gZ2xpYi0yLjAgbGlieGZjZTR1aSBsaWJ4ZmNlNHV0aWwgeGZjb25mIGxpYm5vdGlmeSBsaWJndWRldiIKKworaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2I0MDNhNGY4NDY5MjczOTFlYTRiZWU3NjVhMDU1ZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTRiZmZjZmVlMTU1MzBlMjc3ZmE4MDg2NWViMWRlMzFlNjNjN2VmZmFmODgzNWM5ZmE3YzcxZTVhMDA3NmIyZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZmljYXRpb25zLC0tZGlzYWJsZS1ub3RpZmljYXRpb25zLGxpYm5vdGlmeSIKKworUkRFUEVORFNfJHtQTn0gPSAiZWplY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuNi4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTcwZTI1MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS42LjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIG1hbmFnZXIgZm9yIHRoZSBYZmNlIERlc2t0b3AgRW52aXJvbm1lbnQiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAiZXhvIGdsaWItMi4wIGd0aysgZ2RrLXBpeGJ1ZiBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSB4ZmNvbmYgbGlic20gZGJ1cy1nbGliIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGxpYm5vdGlmeSB4ZmNlNC1wYW5lbCB1ZGV2IgotCi1pbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL3hmY2UvJHtCUE59LyR7QCcke1BWfSdbMDozXX0vVGh1bmFyLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiOGZlYTJhZjY5YzNhY2JiMjczZmQxYTE3N2QzZDhlNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgxMjkxYTg1MTlmNDk1ZTBhMDU5ZmYxZjJkMjk2MDhiYzZkMzdjMGJlODNiMWYzOGYzYzlhYTI1ZjhkMjUyZCIKLQotUyA9ICIke1dPUktESVJ9L1RodW5hci0ke1BWfS8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3RodW5hcngtMi8qIFwKLSAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKLSAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAotICAgICR7ZGF0YWRpcn0vYXBwZGF0YSBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotICAgICR7ZGF0YWRpcn0vVGh1bmFyIFwKLSAgICAke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvKiBcCi0iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3RodW5hcngtMi8uZGVidWcvIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnLyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9UaHVuYXIvLmRlYnVnLyIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmEwZTMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuOC4yLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiRmlsZSBtYW5hZ2VyIGZvciB0aGUgWGZjZSBEZXNrdG9wIEVudmlyb25tZW50IgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gImV4byBnbGliLTIuMCBndGsrMyBnZGstcGl4YnVmIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIHhmY29uZiBsaWJzbSBkYnVzLWdsaWIgc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCisKK2luaGVyaXQgeGZjZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL3hmY2UvJHtCUE59LyR7QCcke1BWfSdbMDozXX0vVGh1bmFyLSR7UFZ9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiNTFhMDk4ODYyNWE3ZTJjOTQ0Mzc3ZTc1ZDNlZmZjNzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzVmOTEwNDU1NDFlYjU5ODNlNzcyYTU2NGQ5N2YyM2U1OTk1MjU2YmZiOTg2M2UwZjRhMDE1MzkzNDIxZDQyOCIKKworUyA9ICIke1dPUktESVJ9L1RodW5hci0ke1BWfS8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3RodW5hcngtMy8qIFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9UaHVuYXIgXAorICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdHVtYmxlci90dW1ibGVyXzAuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90dW1ibGVyL3R1bWJsZXJfMC4yLjAuYmIKaW5kZXggN2UwYzU1NS4uOWQyNjY5NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90dW1ibGVyL3R1bWJsZXJfMC4yLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90dW1ibGVyL3R1bWJsZXJfMC4yLjAuYmIKQEAgLTI4LDggKzI4LDUgQEAKICIKIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90dW1ibGVyLTEvcGx1Z2lucy9jYWNoZS8qLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vdHVtYmxlci0xLy5kZWJ1ZyBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90dW1ibGVyLTEvcGx1Z2lucy8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vdHVtYmxlci0xL3BsdWdpbnMvY2FjaGUvLmRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3R1bWJsZXItMS9wbHVnaW5zL2NhY2hlLyoubGEgXAogIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1hcHBmaW5kZXIveGZjZTQtYXBwZmluZGVyXzQuMTMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtYXBwZmluZGVyL3hmY2U0LWFwcGZpbmRlcl80LjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlNzM5MTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1hcHBmaW5kZXIveGZjZTQtYXBwZmluZGVyXzQuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OPSJYZmNlNCBBcHBsaWNhdGlvbiBGaW5kZXIiCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFM9ImdsaWItMi4wIGd0ayszIGxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIGdhcmNvbiBkYnVzLWdsaWIgeGZjb25mIgotCi1pbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YjZjZjA4MGM4OTFmNzk0NTk1M2Y4MDg0YTkwMTU1MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGViM2IyOWViYTNjZmE5MTc1ZWQzNTE3NGU4M2EyMWZhYTJhMjQyM2RkYjc5NTAxZmU4ODQ2Y2M0MzBlM2FlIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1hcHBmaW5kZXIveGZjZTQtYXBwZmluZGVyXzQuMTMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtYXBwZmluZGVyL3hmY2U0LWFwcGZpbmRlcl80LjEzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzNmY1NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtYXBwZmluZGVyL3hmY2U0LWFwcGZpbmRlcl80LjEzLjEuYmIKQEAgLTAsMCArMSwxNCBAQAorREVTQ1JJUFRJT049IlhmY2U0IEFwcGxpY2F0aW9uIEZpbmRlciIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorREVQRU5EUz0iZ2xpYi0yLjAgZ3RrKzMgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgZ2FyY29uIGRidXMtZ2xpYiB4ZmNvbmYiCisKK2luaGVyaXQgeGZjZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjllMmExZjliNGFlMzE4M2M0NjFiNzk4OTEyMjRjMzNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjYWJiMjdiYmUwYTA4NjRiNzg1ZTFhMzg1MzVhOTE1MTY3NjNlMzhkNmJmZjQxYTM5MTVhNjFkMjgyNTRiMDMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL2ZpbGVzLzAwMDEtY2xvY2stdGltZS1tYWtlLWNoYW5nZS1vZi1zeXN0ZW0tcy10aW1lem9uZS1jaGFuZ2UtdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwvZmlsZXMvMDAwMS1jbG9jay10aW1lLW1ha2UtY2hhbmdlLW9mLXN5c3RlbS1zLXRpbWV6b25lLWNoYW5nZS10LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGNhM2JhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwvZmlsZXMvMDAwMS1jbG9jay10aW1lLW1ha2UtY2hhbmdlLW9mLXN5c3RlbS1zLXRpbWV6b25lLWNoYW5nZS10LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBjNTgyMzM4ZWY0ZjMzYjNkYzA3YTI2MzYzNDBkNTViOWZiNTMwNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogV2VkLCAxNyBGZWIgMjAxNiAwMDoxNTo0NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBjbG9jay10aW1lOiBtYWtlIGNoYW5nZSBvZiBzeXN0ZW0ncyB0aW1lem9uZSBjaGFuZ2UgdGltZSBmb3IKLSBERUZBVUxUX1RJTUVaT05FCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLWNsb2NrX3RpbWUtPnRpbWV6b25lIGlzIHNldCBpbiBjbG9ja190aW1lX2luaXQgc28gdGhlIGNvbmRpdGlvbgotCi0nY2xvY2tfdGltZS0+dGltZXpvbmUgIT0gTlVMTAotCi1pcyBtYXRjaGluZyBhbHdheXMuCi0KLVRlc3RlZCBieSBzZWxlY3Rpbmcgc2Vjb25kcyBkaXNwbGF5ZWQgKC0+IHF1aWNrIHVwZGF0ZSkgYW5kIGNoYW5naW5nIHRpbWV6b25lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbMV0KLQotWzFdIGh0dHBzOi8vYnVnemlsbGEueGZjZS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDUzCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHBsdWdpbnMvY2xvY2svY2xvY2stdGltZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9jbG9jay9jbG9jay10aW1lLmMgYi9wbHVnaW5zL2Nsb2NrL2Nsb2NrLXRpbWUuYwotaW5kZXggYjAxNWIxMy4uNDQ1OWI4NSAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvY2xvY2svY2xvY2stdGltZS5jCi0rKysgYi9wbHVnaW5zL2Nsb2NrL2Nsb2NrLXRpbWUuYwotQEAgLTE5OCw3ICsxOTgsNyBAQCBjbG9ja190aW1lX2dldF90aW1lIChDbG9ja1RpbWUgKmNsb2NrX3RpbWUpCi0gCi0gICBwYW5lbF9yZXR1cm5fdmFsX2lmX2ZhaWwgKFhGQ0VfSVNfQ0xPQ0tfVElNRSAoY2xvY2tfdGltZSksIE5VTEwpOwotIAotLSAgaWYgKGNsb2NrX3RpbWUtPnRpbWV6b25lICE9IE5VTEwpCi0rICBpZiAoZ19zdHJjbXAwIChjbG9ja190aW1lLT50aW1lem9uZV9uYW1lLCBERUZBVUxUX1RJTUVaT05FKSAhPSAwKQotICAgICBkYXRlX3RpbWUgPSBnX2RhdGVfdGltZV9uZXdfbm93IChjbG9ja190aW1lLT50aW1lem9uZSk7Ci0gICBlbHNlCi0gICAgIGRhdGVfdGltZSA9IGdfZGF0ZV90aW1lX25ld19ub3dfbG9jYWwgKCk7Ci0tLSAKLTIuNS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwvZmlsZXMvMDAwMS13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC9maWxlcy8wMDAxLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFkYjE0NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwvZmlsZXMvMDAwMS13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gMDY1MWYyMjhjZWYwMWE2YzNlNDc1OGE5OTFjYWNlMWNkNzcyMTAzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjQgU2VwIDIwMTIgMDk6NTc6NDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gd2luZG93bWVudTogZG8gbm90IGRpc3BsYXkgZGVza3RvcCBpY29uIHdoZW4gbm8gd2luZG93IGlzCisgYWN0aXZlCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKKyogZGVza3RvcCBpY29uIGlzIG9mIG5vIHVzZQorKiBkZXNrdG9wIGljb24gY29uZnVzZXMgd2hlbiB1c2luZyBzaG93ZGVza3RvcCBwbHVnaW4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KKy0tLQorIHBsdWdpbnMvd2luZG93bWVudS93aW5kb3dtZW51LmMgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvd2luZG93bWVudS93aW5kb3dtZW51LmMgYi9wbHVnaW5zL3dpbmRvd21lbnUvd2luZG93bWVudS5jCitpbmRleCBmNDdlOTkzZS4uMDYxZDY1NDQgMTAwNjQ0CistLS0gYS9wbHVnaW5zL3dpbmRvd21lbnUvd2luZG93bWVudS5jCisrKysgYi9wbHVnaW5zL3dpbmRvd21lbnUvd2luZG93bWVudS5jCitAQCAtMjUxLDcgKzI1MSw3IEBAIHdpbmRvd19tZW51X3BsdWdpbl9pbml0IChXaW5kb3dNZW51UGx1Z2luICpwbHVnaW4pCisgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAocGx1Z2luLT5idXR0b24pLCAidG9nZ2xlZCIsCisgICAgICAgR19DQUxMQkFDSyAod2luZG93X21lbnVfcGx1Z2luX21lbnUpLCBwbHVnaW4pOworIAorLSAgcGx1Z2luLT5pY29uID0gZ3RrX2ltYWdlX25ld19mcm9tX2ljb25fbmFtZSAoInVzZXItZGVza3RvcCIsIEdUS19JQ09OX1NJWkVfQlVUVE9OKTsKKysgIHBsdWdpbi0+aWNvbiA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUgKE5VTEwsIEdUS19JQ09OX1NJWkVfQlVUVE9OKTsKKyAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChwbHVnaW4tPmJ1dHRvbiksIHBsdWdpbi0+aWNvbik7CisgICBndGtfd2lkZ2V0X3Nob3cgKHBsdWdpbi0+aWNvbik7CisgfQorQEAgLTY0MCw3ICs2NDAsNyBAQCB3aW5kb3dfbWVudV9wbHVnaW5fYWN0aXZlX3dpbmRvd19jaGFuZ2VkIChXbmNrU2NyZWVuICAgICAgICpzY3JlZW4sCisgICAgICAgICAgIC8qIHNraXAgJ2Zha2UnIHdpbmRvd3MgKi8KKyAgICAgICAgICAgdHlwZSA9IHduY2tfd2luZG93X2dldF93aW5kb3dfdHlwZSAod2luZG93KTsKKyAgICAgICAgICAgaWYgKHR5cGUgPT0gV05DS19XSU5ET1dfREVTS1RPUCB8fCB0eXBlID09IFdOQ0tfV0lORE9XX0RPQ0spCistICAgICAgICAgICAgZ290byBzaG93X2Rlc2t0b3BfaWNvbjsKKysgICAgICAgICAgICBnb3RvIHNob3dfbm9faWNvbjsKKyAKKyAgICAgICAgICAgLyogZ2V0IHRoZSB3aW5kb3cgaWNvbiBhbmQgc2V0IHRoZSB0b29sdGlwICovCisgICAgICAgICAgIGd0a193aWRnZXRfc2V0X3Rvb2x0aXBfdGV4dCAoR1RLX1dJREdFVCAoaWNvbiksCitAQCAtNjYwLDEyICs2NjAsMTIgQEAgd2luZG93X21lbnVfcGx1Z2luX2FjdGl2ZV93aW5kb3dfY2hhbmdlZCAoV25ja1NjcmVlbiAgICAgICAqc2NyZWVuLAorICAgICAgICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAgICAgICAgc2hvd19kZXNrdG9wX2ljb246CisrICAgICAgICAgIHNob3dfbm9faWNvbjoKKyAKKyAgICAgICAgICAgLyogZGVza3RvcCBpcyBzaG93biByaWdodCBub3cgKi8KKy0gICAgICAgICAgZ3RrX2ltYWdlX3NldF9mcm9tX2ljb25fbmFtZSAoR1RLX0lNQUdFIChpY29uKSwgInVzZXItZGVza3RvcCIsIGljb25fc2l6ZSk7CisrICAgICAgICAgIGd0a19pbWFnZV9zZXRfZnJvbV9pY29uX25hbWUgKEdUS19JTUFHRSAoaWNvbiksIE5VTEwsIGljb25fc2l6ZSk7CisgICAgICAgICAgIGd0a19pbWFnZV9zZXRfcGl4ZWxfc2l6ZSAoR1RLX0lNQUdFIChpY29uKSwgaWNvbl9zaXplKTsKKy0gICAgICAgICAgZ3RrX3dpZGdldF9zZXRfdG9vbHRpcF90ZXh0IChHVEtfV0lER0VUIChpY29uKSwgXygiRGVza3RvcCIpKTsKKysgICAgICAgICAgZ3RrX3dpZGdldF9zZXRfdG9vbHRpcF90ZXh0IChHVEtfV0lER0VUIChpY29uKSwgXygiTm8gV2luZG93cyIpKTsKKyAgICAgICAgIH0KKyAgICAgfQorIH0KKy0tIAorMi4xNC4zCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwvZmlsZXMvMDAwMi13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC9maWxlcy8wMDAyLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZDk2MGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC9maWxlcy8wMDAyLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIDA2NTFmMjI4Y2VmMDFhNmMzZTQ3NThhOTkxY2FjZTFjZDc3MjEwMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI0IFNlcCAyMDEyIDA5OjU3OjQ2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdpbmRvd21lbnU6IGRvIG5vdCBkaXNwbGF5IGRlc2t0b3AgaWNvbiB3aGVuIG5vIHdpbmRvdyBpcwotIGFjdGl2ZQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi0qIGRlc2t0b3AgaWNvbiBpcyBvZiBubyB1c2UKLSogZGVza3RvcCBpY29uIGNvbmZ1c2VzIHdoZW4gdXNpbmcgc2hvd2Rlc2t0b3AgcGx1Z2luCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSBwbHVnaW5zL3dpbmRvd21lbnUvd2luZG93bWVudS5jIHwgICAxMiArKysrKystLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BsdWdpbnMvd2luZG93bWVudS93aW5kb3dtZW51LmMgYi9wbHVnaW5zL3dpbmRvd21lbnUvd2luZG93bWVudS5jCi1pbmRleCBjOTYxMjNhLi45NDA0MDIxIDEwMDY0NAotLS0tIGEvcGx1Z2lucy93aW5kb3dtZW51L3dpbmRvd21lbnUuYwotKysrIGIvcGx1Z2lucy93aW5kb3dtZW51L3dpbmRvd21lbnUuYwotQEAgLTI1Niw3ICsyNTYsNyBAQCB3aW5kb3dfbWVudV9wbHVnaW5faW5pdCAoV2luZG93TWVudVBsdWdpbiAqcGx1Z2luKQotICAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKHBsdWdpbi0+YnV0dG9uKSwgInRvZ2dsZWQiLAotICAgICAgIEdfQ0FMTEJBQ0sgKHdpbmRvd19tZW51X3BsdWdpbl9tZW51KSwgcGx1Z2luKTsKLSAKLS0gIHBsdWdpbi0+aWNvbiA9IHhmY2VfcGFuZWxfaW1hZ2VfbmV3X2Zyb21fc291cmNlICgidXNlci1kZXNrdG9wIik7Ci0rICBwbHVnaW4tPmljb24gPSB4ZmNlX3BhbmVsX2ltYWdlX25ld19mcm9tX3NvdXJjZSAoTlVMTCk7Ci0gICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAocGx1Z2luLT5idXR0b24pLCBwbHVnaW4tPmljb24pOwotICAgZ3RrX3dpZGdldF9zaG93IChwbHVnaW4tPmljb24pOwotIH0KLUBAIC02MzQsNyArNjM0LDcgQEAgd2luZG93X21lbnVfcGx1Z2luX2FjdGl2ZV93aW5kb3dfY2hhbmdlZCAoV25ja1NjcmVlbiAgICAgICAqc2NyZWVuLAotICAgICAgICAgICAvKiBza2lwICdmYWtlJyB3aW5kb3dzICovCi0gICAgICAgICAgIHR5cGUgPSB3bmNrX3dpbmRvd19nZXRfd2luZG93X3R5cGUgKHdpbmRvdyk7Ci0gICAgICAgICAgIGlmICh0eXBlID09IFdOQ0tfV0lORE9XX0RFU0tUT1AgfHwgdHlwZSA9PSBXTkNLX1dJTkRPV19ET0NLKQotLSAgICAgICAgICAgIGdvdG8gc2hvd19kZXNrdG9wX2ljb247Ci0rICAgICAgICAgICAgZ290byBzaG93X25vX2ljb247Ci0gCi0gICAgICAgICAgIC8qIGdldCB0aGUgd2luZG93IGljb24gYW5kIHNldCB0aGUgdG9vbHRpcCAqLwotICAgICAgICAgICBndGtfd2lkZ2V0X3NldF90b29sdGlwX3RleHQgKEdUS19XSURHRVQgKGljb24pLAotQEAgLTY0OCwxMSArNjQ4LDExIEBAIHdpbmRvd19tZW51X3BsdWdpbl9hY3RpdmVfd2luZG93X2NoYW5nZWQgKFduY2tTY3JlZW4gICAgICAgKnNjcmVlbiwKLSAgICAgICAgIH0KLSAgICAgICBlbHNlCi0gICAgICAgICB7Ci0tICAgICAgICAgIHNob3dfZGVza3RvcF9pY29uOgotKyAgICAgICAgICBzaG93X25vX2ljb246Ci0gCi0tICAgICAgICAgIC8qIGRlc2t0b3AgaXMgc2hvd24gcmlnaHQgbm93ICovCi0tICAgICAgICAgIHhmY2VfcGFuZWxfaW1hZ2Vfc2V0X2Zyb21fc291cmNlIChpY29uLCAidXNlci1kZXNrdG9wIik7Ci0tICAgICAgICAgIGd0a193aWRnZXRfc2V0X3Rvb2x0aXBfdGV4dCAoR1RLX1dJREdFVCAoaWNvbiksIF8oIkRlc2t0b3AiKSk7Ci0rICAgICAgICAgIC8qIG5vIGljb24gaXMgc2hvd24gcmlnaHQgbm93ICovCi0rICAgICAgICAgIHhmY2VfcGFuZWxfaW1hZ2Vfc2V0X2Zyb21fc291cmNlIChpY29uLCBOVUxMKTsKLSsgICAgICAgICAgZ3RrX3dpZGdldF9zZXRfdG9vbHRpcF90ZXh0IChHVEtfV0lER0VUIChpY29uKSwgXygiTm8gV2luZG93cyIpKTsKLSAgICAgICAgIH0KLSAgICAgfQotIH0KLS0tIAotMS43LjYuNQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL3hmY2U0LXBhbmVsXzQuMTIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2M5YTRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlNCBQYW5lbCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI2YThiZDc1ZDhmODQ5OGJkYmJlNjRhMjc3OTFkNGVlIgotREVQRU5EUyA9ICJsaWJ4ZmNlNHV0aWwgZ2FyY29uIGxpYnhmY2U0dWkgeGZjb25mIGV4byBndGsrIGd0ayszIGRidXMgY2Fpcm8gdmlydHVhbC9saWJ4MTEgbGlieG1sMiBsaWJ3bmNrIgotCi1pbmhlcml0IHhmY2UgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWljb24tY2FjaGUKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgwM2M5YWFiYzI5MjVkYzk3Zjk2ZGUxMjVjNTJiYTJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyMDU4YWJiODFiOGY4NzY5MWQzOTk5NjI3NDQ3ZGU3MWMzMjg1YmNmMDU1ZjMwOGFhYjVjZWZhYjJkZTBjZTkiCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly8wMDAxLWNsb2NrLXRpbWUtbWFrZS1jaGFuZ2Utb2Ytc3lzdGVtLXMtdGltZXpvbmUtY2hhbmdlLXQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2ggXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWd0azMiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIHBsdWdpbl9kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJykKLSAgICBwbHVnaW5fbmFtZSA9IGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbl9kaXIsICdebGliKC4qKS5zbyQnLCBwbHVnaW5fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAnJHtQTn0gcGx1Z2luIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycsIHByZXBlbmQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBhdXhfZmlsZXNfcGF0dGVybj1bJyR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8lcy5kZXNrdG9wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7c3lzY29uZmRpcn0veGRnL3hmY2UvcGFuZWwvJXMtKicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcy8qLSVzLnBuZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke2JpbmRpcn0vKiVzKiddKQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tcGx1Z2luLS4qIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3RrMyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9taWdyYXRlIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvd3JhcHBlci0xLjAiCi0KLUZJTEVTXyR7UE59LWd0azMgPSAiIFwKLSAgICAke2xpYmRpcn0vbGlieGZjZTRwYW5lbC0yLjAke1NPTElCU30gXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC93cmFwcGVyLTIuMCBcCi0iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvLmRlYnVnIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhYmY2NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xMy4zLmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiWGZjZTQgUGFuZWwiCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNmE4YmQ3NWQ4Zjg0OThiZGJiZTY0YTI3NzkxZDRlZSIKK0RFUEVORFMgPSAibGlieGZjZTR1dGlsIGdhcmNvbiBsaWJ4ZmNlNHVpIHhmY29uZiBleG8gZ3RrKyBndGsrMyBkYnVzIGNhaXJvIHZpcnR1YWwvbGlieDExIGxpYnhtbDIgbGlid25jazMgdmFsYS1uYXRpdmUiCisKK2luaGVyaXQgeGZjZSBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWljb24tY2FjaGUgcmVtb3ZlLWxpYnRvb2wKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjY2I0NDhlMzc5Mjk0OWViMGFlOWRiOGRjMjI3ODliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0NjdmZWI3ZWU5Nzk3YWQxMmY1NmExNTI1NzBlNDJhOTZiOTRhZDYzNTgwZDQ1NTM2YWFiZWUyODI0NDBjZTgiCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXdpbmRvd21lbnUtZG8tbm90LWRpc3BsYXktZGVza3RvcC1pY29uLXdoZW4tbm8td2luZG8ucGF0Y2ggXAorIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5fZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLycpCisgICAgcGx1Z2luX25hbWUgPSBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5fZGlyLCAnXmxpYiguKikuc28kJywgcGx1Z2luX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgJyR7UE59IHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgYXV4X2ZpbGVzX3BhdHRlcm49Wycke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJXMuZGVza3RvcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke3N5c2NvbmZkaXJ9L3hkZy94ZmNlL3BhbmVsLyVzLSonLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvKi0lcy5wbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtiaW5kaXJ9LyolcyonXSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBsdWdpbi0uKiIKKworUEFDS0FHRVMgPSsgIiR7UE59LWd0azMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQvcGFuZWwvbWlncmF0ZSBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMS4wIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyoubGEiCisKK0ZJTEVTXyR7UE59LWd0azMgPSAiIFwKKyAgICAke2xpYmRpcn0vbGlieGZjZTRwYW5lbC0yLjAke1NPTElCU30gXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC93cmFwcGVyLTIuMCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjEyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNDcyMDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJ4ZmNlNC1zZXNzaW9uIGlzIGEgc2Vzc2lvbiBtYW5hZ2VyIGZvciBYZmNlIDQgRGVza3RvcCBFbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBndGsrIGxpYnduY2sgZGJ1cyBkYnVzLWdsaWIgeGZjb25mIHBvbGtpdCIKLVJERVBFTkRTXyR7UE59ID0gIm5ldGJhc2UgeGluaXQgZGJ1cy14MTEgaWNlYXV0aCB1cG93ZXIiCi0KLWluaGVyaXQgeGZjZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjQ5MjFmYjJlNjA2ZTc0NjQzZGFmMTIxMjI2MzA3NmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTdkN2YyYTJkMGFmN2YzNjIzYjY4ZDFmMDQwOTFlMDI5MTNiMjhmOTU1NWRhYjhiMGQyNmM4YTEyOTlkMDhmZCIKLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLWhhcmQtY29kZS1wYXRoLXRvLWljZWF1dGgucGF0Y2ggXAotIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJ4LXNlc3Npb24tbWFuYWdlciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt4LXNlc3Npb24tbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L3hmY2U0LXNlc3Npb24iCi1BTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfSA9ICIxMDAiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS94ZmNlNC8qLyovKi5zbyBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0L3Nlc3Npb24vKi0qLSogXAotICAgICR7ZGF0YWRpcn0veHNlc3Npb25zIFwKLSAgICAke2RhdGFkaXJ9L3RoZW1lcy9EZWZhdWx0L2JhbG91LyogXAotICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS94ZmNlNC8qLyovLmRlYnVnIgotCi1SREVQRU5EU18ke1BOfSArPSAibWFjaGluZS1ob3N0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMWFhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjEzLjEuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJ4ZmNlNC1zZXNzaW9uIGlzIGEgc2Vzc2lvbiBtYW5hZ2VyIGZvciBYZmNlIDQgRGVza3RvcCBFbnZpcm9ubWVudCIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBndGsrIGxpYnduY2szIGRidXMgZGJ1cy1nbGliIHhmY29uZiBwb2xraXQiCitSREVQRU5EU18ke1BOfSA9ICJuZXRiYXNlIHhpbml0IGRidXMteDExIGljZWF1dGggdXBvd2VyIgorCitpbmhlcml0IHhmY2UgdXBkYXRlLWFsdGVybmF0aXZlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4taGFyZC1jb2RlLXBhdGgtdG8taWNlYXV0aC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYTQ3OTg4YTJjODcxYTQxMWMxOWUzYWYxZWVmZTU5MWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc4OWYwZjgyMzRlMDZmNTI2NmYwYzZjY2RiZGNjM2MwODVlOGQ5ZWVhMDZhMGVhZmU4ZjdjZmM0ZmUyM2FmNCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAieC1zZXNzaW9uLW1hbmFnZXIiCitBTFRFUk5BVElWRV9UQVJHRVRbeC1zZXNzaW9uLW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZmNlNC1zZXNzaW9uIgorQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0gPSAiMTAwIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0veGZjZTQvKi8qLyouc28gXAorICAgICR7bGliZGlyfS94ZmNlNC9zZXNzaW9uLyotKi0qIFwKKyAgICAke2RhdGFkaXJ9L3hzZXNzaW9ucyBcCisgICAgJHtkYXRhZGlyfS90aGVtZXMvRGVmYXVsdC9iYWxvdS8qIFwKKyAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3hmY2U0L3Nlc3Npb24vc3BsYXNoLWVuZ2luZXMvKi5sYSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJtYWNoaW5lLWhvc3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL2ZpbGVzLzAwMDItRml4LWxpbmtpbmctdG8tZGJ1cy1nbGliLWJ1Zy0xMzYzMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MvZmlsZXMvMDAwMi1GaXgtbGlua2luZy10by1kYnVzLWdsaWItYnVnLTEzNjMzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwOWI3YjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL2ZpbGVzLzAwMDItRml4LWxpbmtpbmctdG8tZGJ1cy1nbGliLWJ1Zy0xMzYzMy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGI2ZTQ2ZTZhODRlNDVmN2JkOTU0Njg3YmU3MDM5ODc4MjVhNTRjMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFcmljIEtvZWdlbCA8ZXJpYy5rb2VnZWxAZ21haWwuY29tPgorRGF0ZTogU3VuLCAxMSBKdW4gMjAxNyAxMTozODoyNiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggbGlua2luZyB0byBkYnVzLWdsaWIgKGJ1ZyAjMTM2MzMpCisKK1dpdGggeGZjb25mIG1vdmluZyB0byBHREJ1cyBub3RoaW5nIHByb3ZpZGVzIHRoZSBsaWJzIGZvciBkYnVzLWdsaWIKK3RoYXQgeGZjZTQtc2V0dGluZ3MgcmVxdWlyZXMuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgbGlicyBiYWNrIGluIHVudGlsCitzZXR0aW5ncyBjYW4gYmUgcG9ydGVkIHRvIEdEQnVzLgorCitTaWduZWQtb2ZmLWJ5OiBTZWFuIERhdmlzIDxzbWQuc2VhbmRhdmlzQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgeGZjZTQtc2V0dGluZ3MtZWRpdG9yL01ha2VmaWxlLmFtIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEveGZjZTQtc2V0dGluZ3MtZWRpdG9yL01ha2VmaWxlLmFtIGIveGZjZTQtc2V0dGluZ3MtZWRpdG9yL01ha2VmaWxlLmFtCitpbmRleCA1OTY0MzY2Li5jMmM3YzRiIDEwMDY0NAorLS0tIGEveGZjZTQtc2V0dGluZ3MtZWRpdG9yL01ha2VmaWxlLmFtCisrKysgYi94ZmNlNC1zZXR0aW5ncy1lZGl0b3IvTWFrZWZpbGUuYW0KK0BAIC0yOCw2ICsyOCw3IEBAIHhmY2U0X3NldHRpbmdzX2VkaXRvcl9DRkxBR1MgPSBcCisgCSQoTElCWEZDRTRVVElMX0NGTEFHUykgXAorIAkkKExJQlhGQ0U0VUlfQ0ZMQUdTKSBcCisgCSQoWEZDT05GX0NGTEFHUykgXAorKwkkKERCVVNfR0xJQl9DRkxBR1MpIFwKKyAJJChQTEFURk9STV9DRkxBR1MpCisgCisgeGZjZTRfc2V0dGluZ3NfZWRpdG9yX0xERkxBR1MgPSBcCitAQCAtMzksNyArNDAsOCBAQCB4ZmNlNF9zZXR0aW5nc19lZGl0b3JfTERBREQgPSBcCisgCSQoREJVU19HTElCX0xJQlMpIFwKKyAJJChMSUJYRkNFNFVUSUxfTElCUykgXAorIAkkKExJQlhGQ0U0VUlfTElCUykgXAorLQkkKFhGQ09ORl9MSUJTKQorKwkkKFhGQ09ORl9MSUJTKSBcCisrCSQoREJVU19HTElCX0xJQlMpCisgCisgZGVza3RvcGRpciA9ICQoZGF0YWRpcikvYXBwbGljYXRpb25zCisgZGVza3RvcF9pbl9maWxlcyA9IHhmY2U0LXNldHRpbmdzLWVkaXRvci5kZXNrdG9wLmluCistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfZ2l0LmJiCmluZGV4IGJmOWJkMzEuLmE0Njg1YWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfZ2l0LmJiCkBAIC0xMywxMiArMTMsMTMgQEAKICMgKyBtaW5vciBidWdmaXhlcyAtIHNlbnQgbWFpbmxpbmUgYnV0IG5vIHJlc3BvbnNlCiAjICsgb3B0aW9uIHRvIGhpZGUgbW91c2Vwb2ludGVyIGZvciBhIHNwZWNpZmljICh0b3VjaCkgaW5wdXQgZGV2aWNlIC0gc2VudCBtYWlubGluZSBidXQgbm8gcmVzcG9uc2UKIFNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL3NjaG5pdHplbHRvbnkveGZjZTQtc2V0dGluZ3MuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9Zm9yLW9lLTQuMTIuMyBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9zY2huaXR6ZWx0b255L3hmY2U0LXNldHRpbmdzLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPWZvci1vZS00LjEyLjQgXAogICAgIGZpbGU6Ly8wMDAxLXhzZXR0aW5ncy54bWwtU2V0LWRlZmF1bHQtdGhlbWVzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1GaXgtbGlua2luZy10by1kYnVzLWdsaWItYnVnLTEzNjMzLnBhdGNoIFwKICIKLVNSQ1JFViA9ICJiNzAxYWM4YjY2YjgzYzE3NDY5ZGQ1MDA5ZGE1MWVlYjU5ZWJhNDQyIgorU1JDUkVWID0gIjc1ZDdjOWIxNWU1Y2NjZTEyYjA4NjRkMzY1OWFlOWI2ZGU5NmUyNDUiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotUFYgPSAiNC4xMi4zK2dpdCR7U1JDUFZ9IgorUFYgPSAiNC4xMi40K2dpdCR7U1JDUFZ9IgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1haW50YWluZXItbW9kZSAtLWRpc2FibGUtZGVidWciCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjb25mL3hmY29uZl80LjEyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY29uZi94ZmNvbmZfNC4xMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDI0MjZmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjb25mL3hmY29uZl80LjEyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlhmY2UgY29uZmlndXJhdGlvbiBkYWVtb24gYW5kIHV0aWxpdGllcyIKLVNFQ1RJT04gPSAieDExL3dtIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotREVQRU5EUyA9ICJkYnVzLWdsaWIgbGlieGZjZTR1dGlsIHBlcmwgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZSBndGstZG9jCi0KLUVYVFJBX09FQ09ORiArPSAiUEVSTD0ke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyL2Jpbi9wZXJsIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjBkYzhkMmJmZDgwYmExMzZiZjQ5NjQwMjFiMzI3NTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzVmNDg1NjRlNTY5NGZhYTU0ZmRjMTgwY2QzMjY4ZTE2ZmMyMzUyOTQ2YTg5YTNjMmZjMTJjYmU0MDBhZGEzNiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC94ZmNvbmYveGZjb25mZCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvb3JnLnhmY2UuWGZjb25mLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY29uZi94ZmNvbmZfNC4xMy42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNvbmYveGZjb25mXzQuMTMuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjY3ZmY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNvbmYveGZjb25mXzQuMTMuNi5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlhmY2UgY29uZmlndXJhdGlvbiBkYWVtb24gYW5kIHV0aWxpdGllcyIKK1NFQ1RJT04gPSAieDExL3dtIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorREVQRU5EUyA9ICJkYnVzLWdsaWIgbGlieGZjZTR1dGlsIHBlcmwgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCisKK2luaGVyaXQgeGZjZSBndGstZG9jCisKK0VYVFJBX09FQ09ORiArPSAiUEVSTD0ke1NUQUdJTkdfRElSX1RBUkdFVH0vdXNyL2Jpbi9wZXJsIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGExOWRmMTJkYmM0OTRjOGE0ZGEzOTc0ZTM3NmQ2MzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFhM2Q0NDJkYWUxODhiNWE3MzgwYjU4MTUzNzdlNTQ4ODU3OGNkYWZiMDNhZTM2M2U5NDI2ZTNiMDExODVkZiIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC94ZmNvbmYveGZjb25mZCBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYnhmY29uZmdzZXR0aW5nc2JhY2tlbmQuc28gXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzL29yZy54ZmNlLlhmY29uZi5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9naW8vbW9kdWxlcy9saWJ4ZmNvbmZnc2V0dGluZ3NiYWNrZW5kLmxhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5Y2JlNzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiWGZjZTQgRGVza3RvcCBNYW5hZ2VyIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKyBsaWJ4ZmNlNHV0aWwgbGlieGZjZTR1aSBsaWJ3bmNrIHhmY29uZiBkYnVzLWdsaWIgZGJ1cy1nbGliLW5hdGl2ZSB0aHVuYXIgZ2FyY29uIGV4byIKLQotaW5oZXJpdCB4ZmNlIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzU3MTg4OTM2OGJlNzJkZjE4NWNlMmQ0NzBmMzcxOTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4YTM1NTEwNTYyOTA3ZTE0MzFkNWFkYmZhODMwNzQ4NGEyMzVjMWRlYzZhNDNlMmQ1OGQyYWM0MjQxZjFjYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZmljYXRpb25zLC0tZGlzYWJsZS1ub3RpZmljYXRpb25zLGxpYm5vdGlmeSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFja2dyb3VuZHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmZGVza3RvcC94ZmRlc2t0b3BfNC4xMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTY5NmExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTMuMi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlhmY2U0IERlc2t0b3AgTWFuYWdlciIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gImxpYnhmY2U0dXRpbCBsaWJ4ZmNlNHVpIGxpYnduY2sgeGZjb25mIGRidXMtZ2xpYiBkYnVzLWdsaWItbmF0aXZlIHRodW5hciBnYXJjb24gZXhvIgorCitpbmhlcml0IHhmY2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMDU1NjljMWMzOWNjZDMxNGZiNWRhMjBkNTA4NjkwOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzODdmNDNkOGE0NjE1ZjQ0MDYwYzAxOWNhZDIxMmFjMTJkZjYyYzU4ZWVhMjYwNTgxMzc0MzExNmY3MWFkM2JkIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmaWNhdGlvbnMsLS1kaXNhYmxlLW5vdGlmaWNhdGlvbnMsbGlibm90aWZ5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9iYWNrZ3JvdW5kcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xMi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTY4ZTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTj0iWGZjZTQgV2luZG93IE1hbmFnZXIiCi1TRUNUSU9OID0gIngxMS93bSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieHBtIGd0aysgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgeGZjb25mIGxpYnduY2sgZGJ1cy1nbGliIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGV4by1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2VjMTM2ZWZjNTM4N2ZkM2I1M2NkNjZiNjg0ZjUyZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE3NDA0OGE3NTY0OWE2ZTkyZGY3NjNhM2NmYjcwNmQzZmVkMWUxYTZhZGY1NjdmNjY5MzMyNWE1YTZlZmIzNiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIHRoZW1lZGlyID0gZC5leHBhbmQoJyR7ZGF0YWRpcn0vdGhlbWVzJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCB0aGVtZWRpciwgJ14oLiopJywgJ3hmd200LXRoZW1lLSVzJywgJ1hGV000IHRoZW1lICVzJywgYWxsb3dfZGlycz1UcnVlKQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeeGZ3bTQtdGhlbWUtLioiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIngtd2luZG93LW1hbmFnZXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbeC13aW5kb3ctbWFuYWdlcl0gPSAiJHtiaW5kaXJ9L3hmd200IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbeC13aW5kb3ctbWFuYWdlcl0gPSAiMzAiCi0KLVJERVBFTkRTXyR7UE59ID0gInhmd200LXRoZW1lLWRlZmF1bHQiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3hmY2U0L3hmd200L2hlbHBlci1kaWFsb2cgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0veGZ3bTQvZGVmYXVsdHMgXAotIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L3hmY2U0L3hmd200Ly5kZWJ1Zy8qIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmd200L3hmd200XzQuMTMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YWQ5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmd200L3hmd200XzQuMTMuMS5iYgpAQCAtMCwwICsxLDM4IEBACitERVNDUklQVElPTj0iWGZjZTQgV2luZG93IE1hbmFnZXIiCitTRUNUSU9OID0gIngxMS93bSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKK0RFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGZjZTR1dGlsIGxpYnhmY2U0dWkgeGZjb25mIGxpYnduY2szIGRidXMtZ2xpYiBsaWJ4aW5lcmFtYSBleG8tbmF0aXZlIgorCitpbmhlcml0IHhmY2UgdXBkYXRlLWFsdGVybmF0aXZlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjFhNzhiY2MyMTAwYzAzZjZmZWEwZGJjZTBjYTgxM2NmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc1ZWJjMjBkMzEzY2ZmNDkwNWU3NmZjMzIwMjU0YzMwNDYxZGJmYTk4NTQ2MWI4ZTc1ZGNhMDQ3NzBjZWRmMTIiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZXBveHknLCAnJywgZCl9IFwKKyAgICB4cHJlc2VudCBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorIgorCitQQUNLQUdFQ09ORklHW2Vwb3h5XSA9ICItLWVuYWJsZS1lcG94eSwtLWRpc2FibGUtZXBveHksbGliZXBveHkiCitQQUNLQUdFQ09ORklHW3hwcmVzZW50XSA9ICItLWVuYWJsZS14cHJlc2VudCwtLWRpc2FibGUteHByZXNlbnQsbGlieHByZXNlbnQiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICB0aGVtZWRpciA9IGQuZXhwYW5kKCcke2RhdGFkaXJ9L3RoZW1lcycpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgdGhlbWVkaXIsICdeKC4qKScsICd4ZndtNC10aGVtZS0lcycsICdYRldNNCB0aGVtZSAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXnhmd200LXRoZW1lLS4qIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtd2luZG93LW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZndtNCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3gtd2luZG93LW1hbmFnZXJdID0gIjMwIgorCitSREVQRU5EU18ke1BOfSA9ICJ4ZndtNC10aGVtZS1kZWZhdWx0IgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC94ZndtNC9oZWxwZXItZGlhbG9nIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3hmd200L2RlZmF1bHRzIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbnBvd2VyL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbnBvd2VyL2NvbmYvbGF5ZXIuY29uZgppbmRleCBiYjcyN2I1Li5mYWZjOTQxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5wb3dlci9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVucG93ZXIvY29uZi9sYXllci5jb25mCkBAIC04LDcgKzgsNyBAQAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJvcGVucG93ZXItbGF5ZXIiCiBCQkZJTEVfUEFUVEVSTl9vcGVucG93ZXItbGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyIKIExBWUVSVkVSU0lPTl9vcGVucG93ZXItbGF5ZXIgPSAiMSIKLUxBWUVSU0VSSUVTX0NPTVBBVF9vcGVucG93ZXItbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9vcGVucG93ZXItbGF5ZXIgPSAidGh1ZCIKIAogIyBQcm92aWRlIGEgdmFyaWFibGUgdGhhdCBwb2ludHMgdGhlIGJhc2Ugb2YgdGhlIG9wZW5wb3dlciBsYXllci4KIE9QRU5QT1dFUkJBU0UgPSAnJHtAb3MucGF0aC5ub3JtcGF0aCgiJHtMQVlFUkRJUn0vIil9JwpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9jbGFzc2VzL2ltYWdlX3R5cGVzX3Bob3NwaG9yLmJiY2xhc3MgYi9tZXRhLXBob3NwaG9yL2NsYXNzZXMvaW1hZ2VfdHlwZXNfcGhvc3Bob3IuYmJjbGFzcwppbmRleCAyNDM3MzkwLi4xZWRmM2EzIDEwMDY0NAotLS0gYS9tZXRhLXBob3NwaG9yL2NsYXNzZXMvaW1hZ2VfdHlwZXNfcGhvc3Bob3IuYmJjbGFzcworKysgYi9tZXRhLXBob3NwaG9yL2NsYXNzZXMvaW1hZ2VfdHlwZXNfcGhvc3Bob3IuYmJjbGFzcwpAQCAtOSw3ICs5LDcgQEAKICMgVGhlIHJlZmVyZW5jZSBCTUMgc29mdHdhcmUgdXBkYXRlIGltcGxlbWVudGF0aW9uLgogCiAjIEltYWdlIGNvbXBvc2l0aW9uCi1GTEFTSF9LRVJORUxfSU1BR0UgPz0gImZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfS0ke01BQ0hJTkV9LmJpbiIKK0ZMQVNIX0tFUk5FTF9JTUFHRSA/PSAiZml0SW1hZ2UtJHtJTklUUkFNRlNfSU1BR0V9LSR7TUFDSElORX0tJHtNQUNISU5FfSIKIEZMQVNIX0tFUk5FTF9JTUFHRV9kZi1vYm1jLXViaS1mcyA/PSAiZml0SW1hZ2UtJHtNQUNISU5FfS5iaW4iCiAKIElNQUdFX0JBU0VUWVBFID89ICJzcXVhc2hmcy14eiIKZGlmZiAtLWdpdCBhL21ldGEtcGhvc3Bob3IvY29uZi9sYXllci5jb25mIGIvbWV0YS1waG9zcGhvci9jb25mL2xheWVyLmNvbmYKaW5kZXggM2YyY2YzOS4uYzRhM2Y0MyAxMDA2NDQKLS0tIGEvbWV0YS1waG9zcGhvci9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1waG9zcGhvci9jb25mL2xheWVyLmNvbmYKQEAgLTgsNyArOCw3IEBACiBCQkZJTEVfQ09MTEVDVElPTlMgKz0gInBob3NwaG9yLWxheWVyIgogQkJGSUxFX1BBVFRFUk5fcGhvc3Bob3ItbGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyIKIExBWUVSVkVSU0lPTl9waG9zcGhvci1sYXllciA9ICIxIgotTEFZRVJTRVJJRVNfQ09NUEFUX3Bob3NwaG9yLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfcGhvc3Bob3ItbGF5ZXIgPSAidGh1ZCIKIAogIyBQcm92aWRlIGEgdmFyaWFibGUgdGhhdCBwb2ludHMgdGhlIGJhc2Ugb2YgdGhlIHBob3NwaG9yIGxheWVyLgogUEhPU1BIT1JCQVNFID0gJyR7QG9zLnBhdGgubm9ybXBhdGgoIiR7TEFZRVJESVJ9LyIpfScKZGlmZiAtLWdpdCBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXyUuYmJhcHBlbmQgYi9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8lLmJiYXBwZW5kCmluZGV4IGUyNDhiZTYuLjUxZTY0YWQgMTAwNjQ0Ci0tLSBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXyUuYmJhcHBlbmQKKysrIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfJS5iYmFwcGVuZApAQCAtMSwxMiArMSwxMiBAQAogIyBHZW5lcmFsIGNvbmZpZyBzZXR0aW5ncy4KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBzaGFyZWQgbm8taHcgbm8tZXJyIG5vLXBzayBuby1zcnAgbm8tZW5naW5lcyAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgc2hhcmVkIG5vLWh3IG5vLWVyciBuby1wc2sgbm8tc3JwICIKIAogIyBEaXNhYmxlIFNTTCAoa2VlcCBUTFMgb25seSkuCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbm8tc3NsMiBuby1zc2wzICIKIAogIyBEaXNhYmxlIHZhcmlvdXMgYWxnb3JpdGhtcy4KIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBuby1pZGVhIG5vLW1kMiBuby1tZGMyIG5vLXJjNSBuby1tZDQgXAotICAgICAgICBuby1yaXBlbWQxNjAgbm8tcm1kMTYwIG5vLXdoaXJscG9vbCBuby1zaGEwIG5vLWNhbWVsbGlhIFwKKyAgICAgICAgbm8tcm1kMTYwIG5vLXdoaXJscG9vbCBuby1jYW1lbGxpYSBcCiAgICAgICAgIG5vLXJjMiBuby1yYzQgbm8tYmYgbm8tY2FzdCBuby1zZWVkIG5vLWdvc3QgIgogCiBkb19jb25maWd1cmVfYXBwZW5kKCkgewpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtU3RvcC13YXRjaGRvZy1maXJzdC1vbi1zdGFydHVwLnBhdGNoIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtU3RvcC13YXRjaGRvZy1maXJzdC1vbi1zdGFydHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTI4YjgxLi4wMDAwMDAwCi0tLSBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVN0b3Atd2F0Y2hkb2ctZmlyc3Qtb24tc3RhcnR1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gYTRjNDkzYWU0MjkyNmFiMzZmZGM4MDVhNWRhOWYwNjgyYmI5OGI0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgU3BpbmxlciA8c3BpbmxlckB1cy5pYm0uY29tPgotRGF0ZTogVHVlLCAxMyBKdW4gMjAxNyAxNToyNjo0OSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBTdG9wIHdhdGNoZG9nIGZpcnN0IG9uIHN0YXJ0dXAKLQotU29tZSB3YXRjaGRvZyBpbXBsZW1lbnRhdGlvbnMgbWF5IGRvIHRoaW5ncyBvdGhlciB0aGFuIGlzc3VlCi1hIHJlYm9vdCBvbiBhIHdhdGNoZG9nIHRpbWVvdXQuICBJbiB0aGlzIGNhc2UsIHRoZXJlJ3MgdGhlCi1wb3NzaWJpbGl0eSBvZiByZXN0YXJ0aW5nIHRoaXMgcHJvZ3JhbSBmcm9tIHRoZSBzdGF0ZSBvZgotdGhlIHdhdGNoZG9nIGRldmljZSBub3QgYmVpbmcgcHJvcGVybHkgc3RvcHBlZCAoZG9uZSBieSB3cml0aW5nCi1hICdWJyBhbmQgY2xvc2luZyB0aGUgZGV2aWNlKS4gIFNpbmNlIGl0IHdhc24ndCBzdG9wcGVkLCB0aGUKLWRyaXZlciBtYXkgbm90IGJlIGFibGUgdG8gcmVzdGFydCB0aGUgd2F0Y2hkb2cgd2hlbiB0aGlzIHByb2dyYW0KLXJlb3BlbnMgaXQgYW5kIHN0YXJ0cyBwaW5naW5nIGl0LgotCi1UbyBmaXggdGhpcywgdGhlIGNvZGUgd2lsbCBhbHdheXMgZmlyc3QgaXNzdWUgdGhlIHN0b3Agd2hlbiBpdAotc3RhcnRzIHVwLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IFNwaW5sZXIgPHNwaW5sZXJAdXMuaWJtLmNvbT4KLS0tLQotIG1pc2N1dGlscy93YXRjaGRvZy5jIHwgMjEgKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9taXNjdXRpbHMvd2F0Y2hkb2cuYyBiL21pc2N1dGlscy93YXRjaGRvZy5jCi1pbmRleCAwN2FlNjRlNTIuLjIyM2UzYzMyZCAxMDA2NDQKLS0tLSBhL21pc2N1dGlscy93YXRjaGRvZy5jCi0rKysgYi9taXNjdXRpbHMvd2F0Y2hkb2cuYwotQEAgLTUzLDYgKzUzLDI0IEBAIHN0YXRpYyB2b2lkIHdhdGNoZG9nX3NodXRkb3duKGludCBzaWcgVU5VU0VEX1BBUkFNKQotIAlfZXhpdChFWElUX1NVQ0NFU1MpOwotIH0KLSAKLStzdGF0aWMgdm9pZCB3YXRjaGRvZ19vcGVuKGNvbnN0IGNoYXIqIGRldmljZSkKLSt7Ci0rCXN0YXRpYyBjb25zdCBjaGFyIG1hZ2ljX3ZhbHVlID0gJ1YnOwotKwotKwkvKiBJZiB0aGUgd2F0Y2hkb2cgZHJpdmVyIGNhbiBkbyBzb21ldGhpbmcgb3RoZXIgdGhhbiBjYXVzZSBhIHJlYm9vdAotKwkgKiBvbiBhIHRpbWVvdXQsIHRoZW4gaXQncyBwb3NzaWJsZSB0aGlzIHByb2dyYW0gbWF5IGJlIHN0YXJ0aW5nIGZyb20KLSsJICogYSBzdGF0ZSB3aGVuIHRoZSB3YXRjaGRvZyBoYWRuJ3QgYmVlbiBwcmV2aW91c2x5IHN0b3BwZWQgd2l0aAotKwkgKiB0aGUgbWFnaWMgd3JpdGUgZm9sbG93ZWQgYnkgYSBjbG9zZS4gIEluIHRoaXMgY2FzZSB0aGUgZHJpdmVyIG1heQotKwkgKiBub3Qgc3RhcnQgcHJvcGVybHksIHNvIGFsd2F5cyBkbyB0aGUgcHJvcGVyIHN0b3AgZmlyc3QganVzdCBpbiBjYXNlLgotKwkgKi8KLSsKLSsJLyogVXNlIGtub3duIGZkICMgLSBhdm9pZCBuZWVkaW5nIGdsb2JhbCAnaW50IGZkJyAqLwotKwl4bW92ZV9mZCh4b3BlbihkZXZpY2UsIE9fV1JPTkxZKSwgMyk7Ci0rCXdyaXRlKDMsICZtYWdpY192YWx1ZSwgMSk7Ci0rCWNsb3NlKDMpOwotKwl4bW92ZV9mZCh4b3BlbihkZXZpY2UsIE9fV1JPTkxZKSwgMyk7Ci0rfQotKwotIGludCB3YXRjaGRvZ19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgTUFJTl9FWFRFUk5BTExZX1ZJU0lCTEU7Ci0gaW50IHdhdGNoZG9nX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIHsKLUBAIC04OCw4ICsxMDYsNyBAQCBpbnQgd2F0Y2hkb2dfbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCi0gCWJiX3NpZ25hbHMoQkJfRkFUQUxfU0lHUywgd2F0Y2hkb2dfc2h1dGRvd24pOwotIAotLQkvKiBVc2Uga25vd24gZmQgIyAtIGF2b2lkIG5lZWRpbmcgZ2xvYmFsICdpbnQgZmQnICovCi0tCXhtb3ZlX2ZkKHhvcGVuKGFyZ3ZbYXJnYyAtIDFdLCBPX1dST05MWSksIDMpOwotKwl3YXRjaGRvZ19vcGVuKGFyZ3ZbYXJnYyAtIDFdKTsKLSAKLSAJLyogV0RJT0NfU0VUVElNRU9VVCB0YWtlcyBzZWNvbmRzLCBub3QgbWlsbGlzZWNvbmRzICovCi0gCWh0aW1lcl9kdXJhdGlvbiA9IGh0aW1lcl9kdXJhdGlvbiAvIDEwMDA7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfJS5iYmFwcGVuZCBiL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCmluZGV4IGNjODhiY2MuLjg5MDdiMDggMTAwNjQ0Ci0tLSBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCisrKyBiL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8lLmJiYXBwZW5kCkBAIC0yLDUgKzIsNCBAQAogU1JDX1VSSSArPSAiZmlsZTovL2J1c3lib3guY2ZnIgogU1JDX1VSSSArPSAiZmlsZTovL2ZsYXNoLmNmZyIKIFNSQ19VUkkgKz0gImZpbGU6Ly9tb3VudHBvaW50LmNmZyIKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVN0b3Atd2F0Y2hkb2ctZmlyc3Qtb24tc3RhcnR1cC5wYXRjaCIKIFNSQ19VUkkgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb2JtYy11YmktZnMnLCAnJywgJ2ZpbGU6Ly9yZWJvb3QuY2ZnJywgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMS1Pbmx5LWxvYWQtZHJvcGJlYXItZGVmYXVsdC1ob3N0LWtleXMtaWYtYS1rZXktaXMtbm90LnBhdGNoIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMS1Pbmx5LWxvYWQtZHJvcGJlYXItZGVmYXVsdC1ob3N0LWtleXMtaWYtYS1rZXktaXMtbm90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzJiYWVjLi4wMDAwMDAwCi0tLSBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDEtT25seS1sb2FkLWRyb3BiZWFyLWRlZmF1bHQtaG9zdC1rZXlzLWlmLWEta2V5LWlzLW5vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gOTVlZmYxY2EwYmVlYTU1MjU5YzJjZGM3ZjFiYjlmOTMwYmY1N2JjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhbVZhbiBOZ3V5ZW4gPGN0bmd1eWVuQHVzLmlibS5jb20+Ci1EYXRlOiBUdWUsIDEzIEZlYiAyMDE4IDE1OjM3OjQ3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8xXSBPbmx5IGxvYWQgZHJvcGJlYXIgZGVmYXVsdCBob3N0IGtleXMgaWYgYSBrZXkgaXMgbm90Ci0gc3BlY2lmaWVkCi0KLS0tLQotIHN2ci1ydW5vcHRzLmMgfCAxMCArKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N2ci1ydW5vcHRzLmMgYi9zdnItcnVub3B0cy5jCi1pbmRleCA4ZjYwMDU5Li5jNWMyMTQ4IDEwMDY0NAotLS0tIGEvc3ZyLXJ1bm9wdHMuYwotKysrIGIvc3ZyLXJ1bm9wdHMuYwotQEAgLTQ4OCwxNyArNDg4LDIxIEBAIHZvaWQgbG9hZF9hbGxfaG9zdGtleXMoKSB7Ci0gCQltX2ZyZWUoaG9zdGtleV9maWxlKTsKLSAJfQotIAotKwkvKiBPbmx5IGxvYWQgZGVmYXVsdCBob3N0IGtleXMgaWYgYSBob3N0IGtleSBpcyBub3Qgc3BlY2lmaWVkIGJ5IHRoZQotKwkgKiB1c2VyICovCi0rCWlmICgwID09ICBzdnJfb3B0cy5udW1faG9zdGtleV9maWxlcykgewotICNpZmRlZiBEUk9QQkVBUl9SU0EKLS0JbG9hZGhvc3RrZXkoUlNBX1BSSVZfRklMRU5BTUUsIDApOwotKwkJbG9hZGhvc3RrZXkoUlNBX1BSSVZfRklMRU5BTUUsIDApOwotICNlbmRpZgotIAotICNpZmRlZiBEUk9QQkVBUl9EU1MKLS0JbG9hZGhvc3RrZXkoRFNTX1BSSVZfRklMRU5BTUUsIDApOwotKwkJbG9hZGhvc3RrZXkoRFNTX1BSSVZfRklMRU5BTUUsIDApOwotICNlbmRpZgotIAotICNpZmRlZiBEUk9QQkVBUl9FQ0RTQQotLQlsb2FkaG9zdGtleShFQ0RTQV9QUklWX0ZJTEVOQU1FLCAwKTsKLSsJCWxvYWRob3N0a2V5KEVDRFNBX1BSSVZfRklMRU5BTUUsIDApOwotICNlbmRpZgotKwl9Ci0gCi0gI2lmZGVmIERST1BCRUFSX0RFTEFZX0hPU1RLRVkKLSAJaWYgKHN2cl9vcHRzLmRlbGF5X2hvc3RrZXkpIHsKLS0tIAotMS44LjIuMgotCmRpZmYgLS1naXQgYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLWRyb3BiZWFyLUFkZC1jLWNvbW1hbmQtb3B0aW9uLXRvLWZvcmNlLWEtc3BlY2lmaWMtY28ucGF0Y2ggYi9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLWRyb3BiZWFyLUFkZC1jLWNvbW1hbmQtb3B0aW9uLXRvLWZvcmNlLWEtc3BlY2lmaWMtY28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZDBhYzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMS1kcm9wYmVhci1BZGQtYy1jb21tYW5kLW9wdGlvbi10by1mb3JjZS1hLXNwZWNpZmljLWNvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotRnJvbSBiNGUwOTQzODFlYzg0NmY0Mzg3ZGM2YTNjMjEwYzIyMDVhOGRiNThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVyZW15IEtlcnIgPGprQG96bGFicy5vcmc+Ci1EYXRlOiBUdWUsIDEyIEFwciAyMDE2IDExOjExOjQwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRyb3BiZWFyOiBBZGQgLWMgPGNvbW1hbmQ+IG9wdGlvbiB0byBmb3JjZSBhIHNwZWNpZmljIGNvbW1hbmQKLQotVGhpcyBjaGFuZ2UgYWRkcyBhIC1jIG9wdGlvbiB0byBkcm9wYmVhciwgdG8gZm9yY2UgdGhlIHNlc3Npb24gdG8gdXNlIGEKLXNwZWNpZmljIGNvbW1hbmQsIGluIGEgc2ltaWxhciBmYXNoaW9uIHRvIE9wZW5TU0gncyBGb3JjZUNvbW1hbmQKLWNvbmZpZ3VyYXRpb24gb3B0aW9uLgotCi1UaGlzIGlzIHVzZWZ1bCB0byBwcm92aWRlIGEgc2ltcGxlIGZpeGVkIHNlcnZpY2Ugb3ZlciBzc2gsIHdpdGhvdXQKLXJlcXVpcmluZyBhbiBhdXRob3JpemVkIGtleSBmaWxlIGZvciB0aGUgcGVyLWtleSBmb3JjZWRfY29tbWFuZCBvcHRpb24uCi0KLVRoaXMgc2V0dGluZyB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlIGNoYW5uZWwgc2Vzc2lvbidzIHByb3ZpZGVkCi1jb21tYW5kLCBhbmQgdGhlIHBlci1rZXkgZm9yY2VkX2NvbW1hbmQgc2V0dGluZy4KLQotU2lnbmVkLW9mZi1ieTogSmVyZW15IEtlcnIgPGprQG96bGFicy5vcmc+Ci0tLS0KLSBydW5vcHRzLmggICAgICAgICB8ICAyICsrCi0gc3ZyLWNoYW5zZXNzaW9uLmMgfCAxMiArKysrKysrKysrLS0KLSBzdnItcnVub3B0cy5jICAgICB8ICA1ICsrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcnVub3B0cy5oIGIvcnVub3B0cy5oCi1pbmRleCBmN2M4NjlkLi5mZmI1NzNlIDEwMDY0NAotLS0tIGEvcnVub3B0cy5oCi0rKysgYi9ydW5vcHRzLmgKLUBAIC0xMTQsNiArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3Qgc3ZyX3J1bm9wdHMgewotIAlidWZmZXIgKiBiYW5uZXI7Ci0gCWNoYXIgKiBwaWRmaWxlOwotIAotKwljaGFyICogY29tbWFuZDsKLSsKLSB9IHN2cl9ydW5vcHRzOwotIAotIGV4dGVybiBzdnJfcnVub3B0cyBzdnJfb3B0czsKLWRpZmYgLS1naXQgYS9zdnItY2hhbnNlc3Npb24uYyBiL3N2ci1jaGFuc2Vzc2lvbi5jCi1pbmRleCBiZmFmN2Y2Li5kNmM5MzMwIDEwMDY0NAotLS0tIGEvc3ZyLWNoYW5zZXNzaW9uLmMKLSsrKyBiL3N2ci1jaGFuc2Vzc2lvbi5jCi1AQCAtNjcxLDggKzY3MSwxNiBAQCBzdGF0aWMgaW50IHNlc3Npb25jb21tYW5kKHN0cnVjdCBDaGFubmVsICpjaGFubmVsLCBzdHJ1Y3QgQ2hhblNlc3MgKmNoYW5zZXNzLAotIAkJfQotIAl9Ci0gCQotLQkvKiB0YWtlIHB1YmxpYyBrZXkgb3B0aW9uICdjb21tYW5kJyBpbnRvIGFjY291bnQgKi8KLS0Jc3ZyX3B1YmtleV9zZXRfZm9yY2VkX2NvbW1hbmQoY2hhbnNlc3MpOwotKwotKwkvKiB0YWtlIGdsb2JhbCBjb21tYW5kIGludG8gYWNjb3VudCAqLwotKwlpZiAoc3ZyX29wdHMuY29tbWFuZCkgewotKwkJY2hhbnNlc3MtPm9yaWdpbmFsX2NvbW1hbmQgPSBjaGFuc2Vzcy0+Y21kID8gOiBtX3N0cmR1cCgiIik7Ci0rCQljaGFuc2Vzcy0+Y21kID0gbV9zdHJkdXAoc3ZyX29wdHMuY29tbWFuZCk7Ci0rCX0gZWxzZSB7Ci0rCQkvKiB0YWtlIHB1YmxpYyBrZXkgb3B0aW9uICdjb21tYW5kJyBpbnRvIGFjY291bnQgKi8KLSsJCXN2cl9wdWJrZXlfc2V0X2ZvcmNlZF9jb21tYW5kKGNoYW5zZXNzKTsKLSsJfQotKwotIAotICNpZmRlZiBMT0dfQ09NTUFORFMKLSAJaWYgKGNoYW5zZXNzLT5jbWQpIHsKLWRpZmYgLS1naXQgYS9zdnItcnVub3B0cy5jIGIvc3ZyLXJ1bm9wdHMuYwotaW5kZXggOGY2MDA1OS4uZjg0NTMwMCAxMDA2NDQKLS0tLSBhL3N2ci1ydW5vcHRzLmMKLSsrKyBiL3N2ci1ydW5vcHRzLmMKLUBAIC03OSw2ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHByaW50aGVscChjb25zdCBjaGFyICogcHJvZ25hbWUpIHsKLSAjaWZkZWYgRU5BQkxFX1NWUl9SRU1PVEVUQ1BGV0QKLSAJCQkJCSItawkJRGlzYWJsZSByZW1vdGUgcG9ydCBmb3J3YXJkaW5nXG4iCi0gCQkJCQkiLWEJCUFsbG93IGNvbm5lY3Rpb25zIHRvIGZvcndhcmRlZCBwb3J0cyBmcm9tIGFueSBob3N0XG4iCi0rCQkJCQkiLWMgY29tbWFuZAlGb3JjZSBleGVjdXRlZCBjb21tYW5kXG4iCi0gI2VuZGlmCi0gCQkJCQkiLXAgW2FkZHJlc3M6XXBvcnRcbiIKLSAJCQkJCSIJCUxpc3RlbiBvbiBzcGVjaWZpZWQgdGNwIHBvcnQgKGFuZCBvcHRpb25hbGx5IGFkZHJlc3MpLFxuIgotQEAgLTEyNSw2ICsxMjYsNyBAQCB2b2lkIHN2cl9nZXRvcHRzKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpIHsKLSAJLyogc2VlIHByaW50aGVscCgpIGZvciBvcHRpb25zICovCi0gCXN2cl9vcHRzLmJhbm5lcmZpbGUgPSBOVUxMOwotIAlzdnJfb3B0cy5iYW5uZXIgPSBOVUxMOwotKwlzdnJfb3B0cy5jb21tYW5kID0gTlVMTDsKLSAJc3ZyX29wdHMuZm9ya2JnID0gMTsKLSAJc3ZyX29wdHMubm9yb290bG9naW4gPSAwOwotIAlzdnJfb3B0cy5ub2F1dGhwYXNzID0gMDsKLUBAIC0xNzcsNiArMTc5LDkgQEAgdm9pZCBzdnJfZ2V0b3B0cyhpbnQgYXJnYywgY2hhciAqKiBhcmd2KSB7Ci0gCQkJCWNhc2UgJ2InOgotIAkJCQkJbmV4dCA9ICZzdnJfb3B0cy5iYW5uZXJmaWxlOwotIAkJCQkJYnJlYWs7Ci0rCQkJCWNhc2UgJ2MnOgotKwkJCQkJbmV4dCA9ICZzdnJfb3B0cy5jb21tYW5kOwotKwkJCQkJYnJlYWs7Ci0gCQkJCWNhc2UgJ2QnOgotIAkJCQljYXNlICdyJzoKLSAJCQkJCW5leHQgPSAma2V5ZmlsZTsKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvbG9jYWxvcHRpb25zLmggYi9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9sb2NhbG9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWVjM2IzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvbG9jYWxvcHRpb25zLmgKQEAgLTAsMCArMSw2IEBACisvLyBEaXNhYmxlIENCQyBjaXBoZXJzIGZvciBtb2Rlcm4gc2VjdXJpdHkuCisjZGVmaW5lIERST1BCRUFSX0VOQUJMRV9DQkNfTU9ERSAwCisKKyNkZWZpbmUgRFJPUEJFQVJfU0hBMV85Nl9ITUFDIDAKKyNkZWZpbmUgRFJPUEJFQVJfU0hBMl8yNTZfSE1BQyAxCisjZGVmaW5lIERST1BCRUFSX1NIQTJfNTEyX0hNQUMgMQpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfJS5iYmFwcGVuZCBiL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXyUuYmJhcHBlbmQKaW5kZXggODA3MTQ5Ny4uY2FiNDU0YSAxMDA2NDQKLS0tIGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfJS5iYmFwcGVuZAorKysgYi9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8lLmJiYXBwZW5kCkBAIC0zLDUgKzMsNCBAQAogIyB0byB5b2N0byAyLjUgb3IgbGF0ZXIgd2hpY2ggd2lsbCBwdWxsIGluIHRoZSBsYXRlc3QgZHJvcGJlYXIgY29kZS4KIEZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKIFNSQ19VUkkgKz0gImZpbGU6Ly9kcm9wYmVhcmtleS5zZXJ2aWNlIFwKLQkgICAgZmlsZTovLzAwMDEtZHJvcGJlYXItQWRkLWMtY29tbWFuZC1vcHRpb24tdG8tZm9yY2UtYS1zcGVjaWZpYy1jby5wYXRjaCBcCi0JICAgIGZpbGU6Ly8wMDAxLU9ubHktbG9hZC1kcm9wYmVhci1kZWZhdWx0LWhvc3Qta2V5cy1pZi1hLWtleS1pcy1ub3QucGF0Y2giCisgICAgICAgICAgICBmaWxlOi8vbG9jYWxvcHRpb25zLmgiCmRpZmYgLS1naXQgYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE3Ljc1LmJiYXBwZW5kIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNy43NS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJjZGY2Zi4uMDAwMDAwMAotLS0gYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE3Ljc1LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi0jIFRPRE86IERyb3BiZWFyIDIwMTguNzYgY29udHJvbHMgb3B0aW9ucyBpbiBhIGRpZmZlcmVudCB3YXkuICBTZWUKLSMgaHR0cHM6Ly9naXRodWIuY29tL29wZW5ibWMvb3BlbmJtYy9pc3N1ZXMvMzE4NgotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotU1JDX1VSSSArPSAiZmlsZTovL29wdGlvbnMucGF0Y2giCmRpZmYgLS1naXQgYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1jb3JlLWZpeC10aGUtY2hlY2staWYtQ09ORklHX0NHUk9VUF9CUEYtaXMtb24ucGF0Y2ggYi9tZXRhLXBob3NwaG9yL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1jb3JlLWZpeC10aGUtY2hlY2staWYtQ09ORklHX0NHUk9VUF9CUEYtaXMtb24ucGF0Y2gKaW5kZXggZmMzZjllMS4uMzY0NTEwMCAxMDA2NDQKLS0tIGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtY29yZS1maXgtdGhlLWNoZWNrLWlmLUNPTkZJR19DR1JPVVBfQlBGLWlzLW9uLnBhdGNoCisrKyBiL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LWNvcmUtZml4LXRoZS1jaGVjay1pZi1DT05GSUdfQ0dST1VQX0JQRi1pcy1vbi5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gNTAxZmE2YzYwZDMwM2YwZDZlNzQ3OTM5MTcyMjgxZDc3MjQ3NjI2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBGaWxpcHBvdiA8YS5maWxpcHBvdkB5YWRyby5jb20+Ci1EYXRlOiBNb24sIDE3IFNlcCAyMDE4IDEzOjMzOjA2ICswMzAwCitGcm9tIDRlYTc5YzE4ZjFlMjA4MWQ1OWVhYTBmMWRmNDc5ZGJjNzcwMDc3OWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFZCBUYW5vdXMgPGVkLnRhbm91c0BpbnRlbC5jb20+CitEYXRlOiBTdW4sIDE2IERlYyAyMDE4IDE4OjI3OjA2IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGZpeCB0aGUgY2hlY2sgaWYgQ09ORklHX0NHUk9VUF9CUEYgaXMgb24KIAogU2luY2UgdGhlIGNvbW1pdCB0b3J2YWxkcy9saW51eEBmZGI1YzQ1MzFjMWUwZTUwZTYwOWRmODNmNzM2YjZmM2EwMjg5NmUyCkBAIC0xNCwxNiArMTQsMTkgQEAKIFJlc29sdmVzIG9wZW5ibWMvbGludXgjMTU5CiBTZWUgYWxzbyBzeXN0ZW1kL3N5c3RlbWQjNzA1NAogCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgRmlsaXBwb3YgPGEuZmlsaXBwb3ZAeWFkcm8uY29tPgorT3JpZ2luYWxseSB3cml0dGVuIGJ5OgorQWxleGFuZGVyIEZpbGlwcG92IDxhLmZpbGlwcG92QHlhZHJvLmNvbT4KKworU2lnbmVkLW9mZi1ieTogRWQgVGFub3VzIDxlZC50YW5vdXNAaW50ZWwuY29tPgogLS0tCi0gc3JjL2NvcmUvYnBmLWZpcmV3YWxsLmMgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBzcmMvY29yZS9icGYtZmlyZXdhbGwuYyB8IDE0ICsrKysrKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2JwZi1maXJld2FsbC5jIGIvc3JjL2NvcmUvYnBmLWZpcmV3YWxsLmMKLWluZGV4IGYzZjQwZmIwZTguLjUxZGM1Yjk1MDYgMTAwNjQ0CitpbmRleCA4YjY2ZWY3M2QuLmU2OGI3MGQwYyAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2JwZi1maXJld2FsbC5jCiArKysgYi9zcmMvY29yZS9icGYtZmlyZXdhbGwuYwotQEAgLTY1OCw3ICs2NTgsNyBAQCBpbnQgYnBmX2ZpcmV3YWxsX3N1cHBvcnRlZCh2b2lkKSB7CitAQCAtNjYwLDcgKzY2MCw3IEBAIGludCBicGZfZmlyZXdhbGxfc3VwcG9ydGVkKHZvaWQpIHsKICAgICAgICAgICAqIGIpIHdoZXRoZXIgdGhlIHVuaWZpZWQgaGllcmFyY2h5IGlzIGJlaW5nIHVzZWQKICAgICAgICAgICAqIGMpIHRoZSBCUEYgaW1wbGVtZW50YXRpb24gaW4gdGhlIGtlcm5lbCBzdXBwb3J0cyBCUEYgTFBNIFRSSUUgbWFwcywgd2hpY2ggd2UgcmVxdWlyZQogICAgICAgICAgICogZCkgdGhlIEJQRiBpbXBsZW1lbnRhdGlvbiBpbiB0aGUga2VybmVsIHN1cHBvcnRzIEJQRl9QUk9HX1RZUEVfQ0dST1VQX1NLQiBwcm9ncmFtcywgd2hpY2ggd2UgcmVxdWlyZQpAQCAtMzIsNyArMzUsNyBAQAogICAgICAgICAgICoKICAgICAgICAgICAqLwogIAotQEAgLTcxMSw3ICs3MTEsNyBAQCBpbnQgYnBmX2ZpcmV3YWxsX3N1cHBvcnRlZCh2b2lkKSB7CitAQCAtNzE0LDcgKzcxNCw3IEBAIGludCBicGZfZmlyZXdhbGxfc3VwcG9ydGVkKHZvaWQpIHsKICAgICAgICAgICAqIGlzIHR1cm5lZCBvZmYgYXQga2VybmVsIGNvbXBpbGF0aW9uIHRpbWUuIFRoaXMgc3Vja3Mgb2YgY291cnNlOiB3aHkgZG9lcyBpdCBhbGxvdyB1cyB0byBjcmVhdGUgYSBjZ3JvdXAgQlBGCiAgICAgICAgICAgKiBwcm9ncmFtIGlmIHdlIGNhbid0IGRvIGEgdGhpbmcgd2l0aCBpdCBsYXRlcj8KICAgICAgICAgICAqCkBAIC00MSwyNCArNDQsNDMgQEAKICAgICAgICAgICAqIENPTkZJR19DR1JPVVBfQlBGIGlzIHR1cm5lZCBvZmYsIHRoZW4gdGhlIGNhbGwgd2lsbCBmYWlsIGVhcmx5IHdpdGggRUlOVkFMLiBJZiBpdCBpcyB0dXJuZWQgb24gdGhlCiAgICAgICAgICAgKiBwYXJhbWV0ZXJzIGFyZSB2YWxpZGF0ZWQgaG93ZXZlciwgYW5kIHRoYXQnbGwgZmFpbCB3aXRoIEVCQURGIHRoZW4uICovCiAgCi1AQCAtNzIxLDE0ICs3MjEsMTQgQEAgaW50IGJwZl9maXJld2FsbF9zdXBwb3J0ZWQodm9pZCkgeworQEAgLTcyNCwxNSArNzI0LDE1IEBAIGludCBicGZfZmlyZXdhbGxfc3VwcG9ydGVkKHZvaWQpIHsKICAgICAgICAgICAgICAgICAgLmF0dGFjaF9icGZfZmQgPSAtMSwKICAgICAgICAgIH07CiAgCi0tICAgICAgICByID0gYnBmKEJQRl9QUk9HX0FUVEFDSCwgJmF0dHIsIHNpemVvZihhdHRyKSk7Ci0rICAgICAgICByID0gYnBmKEJQRl9QUk9HX0RFVEFDSCwgJmF0dHIsIHNpemVvZihhdHRyKSk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLSAgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVCQURGKSAvKiBZQVkhICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRlZCA9IHRydWU7CistICAgICAgICBpZiAoYnBmKEJQRl9QUk9HX0FUVEFDSCwgJmF0dHIsIHNpemVvZihhdHRyKSkgPCAwKSB7CisrICAgICAgICBpZiAoYnBmKEJQRl9QUk9HX0RFVEFDSCwgJmF0dHIsIHNpemVvZihhdHRyKSkgPCAwKSB7CisgICAgICAgICAgICAgICAgIGlmIChlcnJubyAhPSBFQkFERikgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhlcnJubywgIkRpZG4ndCBnZXQgRUJBREYgZnJvbSBCUEZfUFJPR19BVFRBQ0gsIEJQRiBmaXJld2FsbGluZyBpcyBub3Qgc3VwcG9ydGVkOiAlbSIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhlcnJubywgIkRpZG4ndCBnZXQgRUJBREYgZnJvbSBCUEZfUFJPR19ERVRBQ0gsIEJQRiBmaXJld2FsbGluZyBpcyBub3Qgc3VwcG9ydGVkOiAlbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWQgPSBCUEZfRklSRVdBTExfVU5TVVBQT1JURUQ7CisgICAgICAgICAgICAgICAgIH0KICAKLS0gICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKGVycm5vLCAiRGlkbid0IGdldCBFQkFERiBmcm9tIEJQRl9QUk9HX0FUVEFDSCwgQlBGIGZpcmV3YWxsaW5nIGlzIG5vdCBzdXBwb3J0ZWQ6ICVtIik7Ci0rICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhlcnJubywgIkRpZG4ndCBnZXQgRUJBREYgZnJvbSBCUEZfUFJPR19ERVRBQ0gsIEJQRiBmaXJld2FsbGluZyBpcyBub3Qgc3VwcG9ydGVkOiAlbSIpOwotICAgICAgICAgfSBlbHNlCi0tICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiV3V0PyBrZXJuZWwgYWNjZXB0ZWQgb3VyIGludmFsaWQgQlBGX1BST0dfQVRUQUNIIGNhbGw/IFNvbWV0aGluZyBpcyB3ZWlyZCwgYXNzdW1pbmcgQlBGIGZpcmV3YWxsaW5nIGlzIGJyb2tlbiBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZC4iKTsKLSsgICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJXdXQ/IGtlcm5lbCBhY2NlcHRlZCBvdXIgaW52YWxpZCBCUEZfUFJPR19ERVRBQ0ggY2FsbD8gU29tZXRoaW5nIGlzIHdlaXJkLCBhc3N1bWluZyBCUEYgZmlyZXdhbGxpbmcgaXMgYnJva2VuIGFuZCBoZW5jZSBub3Qgc3VwcG9ydGVkLiIpOworICAgICAgICAgICAgICAgICAvKiBZQVkhICovCisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICBsb2dfZGVidWcoIld1dD8gS2VybmVsIGFjY2VwdGVkIG91ciBpbnZhbGlkIEJQRl9QUk9HX0FUVEFDSCBjYWxsPyBTb21ldGhpbmcgaXMgd2VpcmQsIGFzc3VtaW5nIEJQRiBmaXJld2FsbGluZyBpcyBicm9rZW4gYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWQuIik7CisrICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiV3V0PyBLZXJuZWwgYWNjZXB0ZWQgb3VyIGludmFsaWQgQlBGX1BST0dfREVUQUNIIGNhbGw/IFNvbWV0aGluZyBpcyB3ZWlyZCwgYXNzdW1pbmcgQlBGIGZpcmV3YWxsaW5nIGlzIGJyb2tlbiBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRlZCA9IEJQRl9GSVJFV0FMTF9VTlNVUFBPUlRFRDsKKyAgICAgICAgIH0KICAKLSAgICAgICAgIHJldHVybiBzdXBwb3J0ZWQgPSBmYWxzZTsKK0BAIC03NDgsNyArNzQ4LDcgQEAgaW50IGJwZl9maXJld2FsbF9zdXBwb3J0ZWQodm9pZCkgeworICAgICAgICAgICAgICAgICAuYXR0YWNoX2ZsYWdzID0gQlBGX0ZfQUxMT1dfTVVMVEksCisgICAgICAgICB9OworIAorLSAgICAgICAgaWYgKGJwZihCUEZfUFJPR19BVFRBQ0gsICZhdHRyLCBzaXplb2YoYXR0cikpIDwgMCkgeworKyAgICAgICAgaWYgKGJwZihCUEZfUFJPR19ERVRBQ0gsICZhdHRyLCBzaXplb2YoYXR0cikpIDwgMCkgeworICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUJBREYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZGVidWdfZXJybm8oZXJybm8sICJHb3QgRUJBREYgd2hlbiB1c2luZyBCUEZfRl9BTExPV19NVUxUSSwgd2hpY2ggaW5kaWNhdGVzIGl0IGlzIHN1cHBvcnRlZC4gWWF5ISIpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdXBwb3J0ZWQgPSBCUEZfRklSRVdBTExfU1VQUE9SVEVEX1dJVEhfTVVMVEk7CitAQCAtNzYxLDcgKzc2MSw3IEBAIGludCBicGZfZmlyZXdhbGxfc3VwcG9ydGVkKHZvaWQpIHsKKyAKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRlZCA9IEJQRl9GSVJFV0FMTF9TVVBQT1JURUQ7CisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICBsb2dfZGVidWcoIld1dD8gS2VybmVsIGFjY2VwdGVkIG91ciBpbnZhbGlkIEJQRl9QUk9HX0FUVEFDSCtCUEZfRl9BTExPV19NVUxUSSBjYWxsPyBTb21ldGhpbmcgaXMgd2VpcmQsIGFzc3VtaW5nIEJQRiBmaXJld2FsbGluZyBpcyBicm9rZW4gYW5kIGhlbmNlIG5vdCBzdXBwb3J0ZWQuIik7CisrICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiV3V0PyBLZXJuZWwgYWNjZXB0ZWQgb3VyIGludmFsaWQgQlBGX1BST0dfREVUQUNIK0JQRl9GX0FMTE9XX01VTFRJIGNhbGw/IFNvbWV0aGluZyBpcyB3ZWlyZCwgYXNzdW1pbmcgQlBGIGZpcmV3YWxsaW5nIGlzIGJyb2tlbiBhbmQgaGVuY2Ugbm90IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cHBvcnRlZCA9IEJQRl9GSVJFV0FMTF9VTlNVUFBPUlRFRDsKKyAgICAgICAgIH0KICB9CiAtLSAKLTIuMTQuNAorMi4xNy4xCiAKZGlmZiAtLWdpdCBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1zeXNjZmctQWRkLXBwYzY0bGUtY3Jvc3MtYnVpbGQtc3VwcG9ydC5wYXRjaCBiL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1zeXNjZmctQWRkLXBwYzY0bGUtY3Jvc3MtYnVpbGQtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE3MWIzMS4uMDAwMDAwMAotLS0gYS9tZXRhLXBob3NwaG9yL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDEtc3lzY2ZnLUFkZC1wcGM2NGxlLWNyb3NzLWJ1aWxkLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDdmOGNhMGFlMGI4OWY0ZjQ0NDJiZjRmN2YwNTY3N2YyNTUxMjFkZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCcmFkIEJpc2hvcCA8YnJhZGxleWJAZnV6emllc3F1aXJyZWwuY29tPgotRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNjowMzozOCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBzeXNjZmc6IEFkZCBwcGM2NGxlIGNyb3NzIGJ1aWxkIHN1cHBvcnQuCi0KLSogc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIucHBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oOiBOZXcuCi0qIHNyYy9NYWtlZmlsZS5hbSAobG9ja19vYmpfcHViKTogQWRkLgotLS0KLQotU2lnbmVkLW9mZi1ieTogQnJhZCBCaXNob3AgPGJyYWRsZXliQGZ1enppZXNxdWlycmVsLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIC4uLi9sb2NrLW9iai1wdWIucHBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5wcGM2NGxlLXVua25vd24tbGludXgtZ251LmgKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggMjY4YzJhYi4uZTNlZDZjMSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNjQsNiArNjQsNyBAQCBsb2NrX29ial9wdWIgPSBcCi0gICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLnBvd2VycGMtdW5rbm93bi1saW51eC1nbnUuaCAgICAgXAotICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUuaCAgIFwKLSAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oIFwKLSsJc3lzY2ZnL2xvY2stb2JqLXB1Yi5wcGM2NGxlLXVua25vd24tbGludXgtZ251LmggICAgIFwKLSAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5wb3dlcnBjLXVua25vd24tbGludXgtZ251c3BlLmggIFwKLSAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5yaXNjdjY0LXVua25vd24tbGludXgtZ251LmggICAgIFwKLSAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuczM5MHgtaWJtLWxpbnV4LWdudS5oICAgICAgICAgICBcCi1kaWZmIC0tZ2l0IGEvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIucHBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIucHBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjk0MDdkNAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIucHBjNjRsZS11bmtub3duLWxpbnV4LWdudS5oCi1AQCAtMCwwICsxLDI1IEBACi0rIyMgbG9jay1vYmotcHViLnBwYzY0bGUtdW5rbm93bi1saW51eC1nbnUuaAotKyMjIEZpbGUgY3JlYXRlZCBieSBnZW4tcG9zaXgtbG9jay1vYmogLSBETyBOT1QgRURJVAotKyMjIFRvIGJlIGluY2x1ZGVkIGJ5IG1raGVhZGVyIGludG8gZ3BnLWVycm9yLmgKLSsKLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIGxvbmcgX3ZlcnM7Ci0rICB1bmlvbiB7Ci0rICAgIHZvbGF0aWxlIGNoYXIgX3ByaXZbNDBdOwotKyAgICBsb25nIF94X2FsaWduOwotKyAgICBsb25nICpfeHBfYWxpZ247Ci0rICB9IHU7Ci0rfSBncGdydF9sb2NrX3Q7Ci0rCi0rI2RlZmluZSBHUEdSVF9MT0NLX0lOSVRJQUxJWkVSIHsxLHt7MCwwLDAsMCwwLDAsMCwwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwfX19Ci0rIyMKLSsjIyBMb2NhbCBWYXJpYWJsZXM6Ci0rIyMgbW9kZTogYwotKyMjIGJ1ZmZlci1yZWFkLW9ubHk6IHQKLSsjIyBFbmQ6Ci0rIyMKLS0tIAotMi41LjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1waG9zcGhvci9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8lLmJiYXBwZW5kIGIvbWV0YS1waG9zcGhvci9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjEzN2RlLi4wMDAwMDAwCi0tLSBhL21ldGEtcGhvc3Bob3IvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1zeXNjZmctQWRkLXBwYzY0bGUtY3Jvc3MtYnVpbGQtc3VwcG9ydC5wYXRjaCIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MgYi9tZXRhLXJhc3BiZXJyeXBpL2NsYXNzZXMvc2RjYXJkX2ltYWdlLXJwaS5iYmNsYXNzCmluZGV4IGU3YzM0YzYuLjYyNDRlZTUgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvY2xhc3Nlcy9zZGNhcmRfaW1hZ2UtcnBpLmJiY2xhc3MKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9jbGFzc2VzL3NkY2FyZF9pbWFnZS1ycGkuYmJjbGFzcwpAQCAtMjgsOSArMjgsNiBAQAogIyBTZXQga2VybmVsIGFuZCBib290IGxvYWRlcgogSU1BR0VfQk9PVExPQURFUiA/PSAiYmNtMjgzNS1ib290ZmlsZXMiCiAKLSMgU2V0IGluaXRyYW1mcyBleHRlbnNpb24KLUtFUk5FTF9JTklUUkFNRlMgPz0gIiIKLQogIyBLZXJuZWwgaW1hZ2UgbmFtZQogU0RJTUdfS0VSTkVMSU1BR0VfcmFzcGJlcnJ5cGkgID89ICJrZXJuZWwuaW1nIgogU0RJTUdfS0VSTkVMSU1BR0VfcmFzcGJlcnJ5cGkyID89ICJrZXJuZWw3LmltZyIKQEAgLTQ5LDYgKzQ2LDkgQEAKIFNESU1HX1JPT1RGU19UWVBFID89ICJleHQzIgogU0RJTUdfUk9PVEZTID0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHtTRElNR19ST09URlNfVFlQRX0iCiAKKyMgRm9yIHRoZSBuYW1lcyBvZiBrZXJuZWwgYXJ0aWZhY3RzCitpbmhlcml0IGtlcm5lbC1hcnRpZmFjdC1uYW1lcworCiBkb19pbWFnZV9ycGlfc2RpbWdbZGVwZW5kc10gPSAiIFwKICAgICBwYXJ0ZWQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAogICAgIG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCkBAIC03NSw2ICs3NSw3IEBACiBGQVRQQVlMT0FEID89ICIiCiAKICMgU0QgY2FyZCB2ZmF0IHBhcnRpdGlvbiBpbWFnZSBuYW1lCitTRElNR19WRkFUX0RFUExPWSA/PSAiJHtSUElfVVNFX1VfQk9PVH0iCiBTRElNR19WRkFUID0gIiR7SU1BR0VfTkFNRX0udmZhdCIKIFNESU1HX0xJTktfVkZBVCA9ICIke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LnZmYXQiCiAKQEAgLTEzNSwxMCArMTM2LDE4IEBACiAgICAgZmkKICAgICBpZiBbICIke1JQSV9VU0VfVV9CT09UfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBtY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC1zICR7REVQTE9ZX0RJUl9JTUFHRX0vdS1ib290LmJpbiA6OiR7U0RJTUdfS0VSTkVMSU1BR0V9Ci0gICAgICAgIG1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9JHtLRVJORUxfSU5JVFJBTUZTfS0ke01BQ0hJTkV9LmJpbiA6OiR7S0VSTkVMX0lNQUdFVFlQRX0KICAgICAgICAgbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9L2Jvb3Quc2NyIDo6Ym9vdC5zY3IKKyAgICAgICAgaWYgWyAhIC16ICIke0lOSVRSQU1GU19JTUFHRX0iIC1hICIke0lOSVRSQU1GU19JTUFHRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgICAgICBtY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC1zICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfS0ke0lOSVRSQU1GU19MSU5LX05BTUV9LmJpbiA6OiR7S0VSTkVMX0lNQUdFVFlQRX0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gOjoke0tFUk5FTF9JTUFHRVRZUEV9CisgICAgICAgIGZpCiAgICAgZWxzZQotICAgICAgICBtY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC1zICR7REVQTE9ZX0RJUl9JTUFHRX0vJHtLRVJORUxfSU1BR0VUWVBFfSR7S0VSTkVMX0lOSVRSQU1GU30tJHtNQUNISU5FfS5iaW4gOjoke1NESU1HX0tFUk5FTElNQUdFfQorICAgICAgICBpZiBbICEgLXogIiR7SU5JVFJBTUZTX0lNQUdFfSIgLWEgIiR7SU5JVFJBTUZTX0lNQUdFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgIG1jb3B5IC1pICR7V09SS0RJUn0vYm9vdC5pbWcgLXMgJHtERVBMT1lfRElSX0lNQUdFfS8ke0tFUk5FTF9JTUFHRVRZUEV9LSR7SU5JVFJBTUZTX0xJTktfTkFNRX0uYmluIDo6JHtTRElNR19LRVJORUxJTUFHRX0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWNvcHkgLWkgJHtXT1JLRElSfS9ib290LmltZyAtcyAke0RFUExPWV9ESVJfSU1BR0V9LyR7S0VSTkVMX0lNQUdFVFlQRX0gOjoke1NESU1HX0tFUk5FTElNQUdFfQorICAgICAgICBmaQogICAgIGZpCiAKICAgICBpZiBbIC1uICR7RkFUUEFZTE9BRH0gXSA7IHRoZW4KQEAgLTE1Myw4ICsxNjIsOCBAQAogICAgIGVjaG8gIiR7SU1BR0VfTkFNRX0iID4gJHtXT1JLRElSfS9pbWFnZS12ZXJzaW9uLWluZm8KICAgICBtY29weSAtaSAke1dPUktESVJ9L2Jvb3QuaW1nIC12ICR7V09SS0RJUn0vaW1hZ2UtdmVyc2lvbi1pbmZvIDo6CiAKLSAgICAjIERlcGxveSB2ZmF0IHBhcnRpdGlvbiAoZm9yIHUtYm9vdCBjYXNlIG9ubHkpCi0gICAgaWYgWyAiJHtSUElfVVNFX1VfQk9PVH0iID0gIjEiIF07IHRoZW4KKyAgICAjIERlcGxveSB2ZmF0IHBhcnRpdGlvbgorICAgIGlmIFsgIiR7U0RJTUdfVkZBVF9ERVBMT1l9IiA9ICIxIiBdOyB0aGVuCiAgICAgICAgIGNwICR7V09SS0RJUn0vYm9vdC5pbWcgJHtJTUdERVBMT1lESVJ9LyR7U0RJTUdfVkZBVH0KICAgICAgICAgbG4gLXNmICR7U0RJTUdfVkZBVH0gJHtTRElNR19MSU5LX1ZGQVR9CiAgICAgZmkKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9sYXllci5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKaW5kZXggY2ZjMjIzNC4uNmUyZmRmNiAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiBCQkZJTEVfUEFUVEVSTl9yYXNwYmVycnlwaSA6PSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9yYXNwYmVycnlwaSA9ICI5IgogCi1MQVlFUlNFUklFU19DT01QQVRfcmFzcGJlcnJ5cGkgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9yYXNwYmVycnlwaSA9ICJzdW1vIHRodWQiCiAKICMgQWRkaXRpb25hbCBsaWNlbnNlIGRpcmVjdG9yaWVzLgogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9maWxlcy9jdXN0b20tbGljZW5zZXMiCkBAIC0yMywzICsyMyw4IEBACiAgICAgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gQkJGSUxFX0NPTExFQ1RJT05TLnNwbGl0KCkpfSIKIEJCRklMRVMgKz0gIiR7QCcgJy5qb2luKCcke0xBWUVSRElSfS9keW5hbWljLWxheWVycy8lcy9yZWNpcGVzKi8qLyouYmInICUgbGF5ZXIgXAogICAgICAgICAgICAgICAgZm9yIGxheWVyIGluIEJCRklMRV9DT0xMRUNUSU9OUy5zcGxpdCgpKX0iCisKK0JCRklMRVNfRFlOQU1JQyArPSAiIFwKKyAgICBxdDUtbGF5ZXI6JHtMQVlFUkRJUn0vZHluYW1pYy1sYXllcnMvcXQ1LWxheWVyLyovKi8qLmJiIFwKKyAgICBxdDUtbGF5ZXI6JHtMQVlFUkRJUn0vZHluYW1pYy1sYXllcnMvcXQ1LWxheWVyLyovKi8qLmJiYXBwZW5kIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKaW5kZXggNTM5ZDFiYy4uNGJiZDU3NiAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKQEAgLTE1LDcgKzE1LDkgQEAKICAgICAiCiAKIFJQSV9LRVJORUxfREVWSUNFVFJFRV9PVkVSTEFZUyA/PSAiIFwKKyAgICBvdmVybGF5cy9hdDg2cmYyMzMuZHRibyBcCiAgICAgb3ZlcmxheXMvZHdjMi5kdGJvIFwKKyAgICBvdmVybGF5cy9ncGlvLWtleS5kdGJvIFwKICAgICBvdmVybGF5cy9oaWZpYmVycnktYW1wLmR0Ym8gXAogICAgIG92ZXJsYXlzL2hpZmliZXJyeS1kYWMuZHRibyBcCiAgICAgb3ZlcmxheXMvaGlmaWJlcnJ5LWRhY3BsdXMuZHRibyBcCkBAIC0yNCwxOCArMjYsMTcgQEAKICAgICBvdmVybGF5cy9pcWF1ZGlvLWRhYy5kdGJvIFwKICAgICBvdmVybGF5cy9pcWF1ZGlvLWRhY3BsdXMuZHRibyBcCiAgICAgb3ZlcmxheXMvbGlyYy1ycGkuZHRibyBcCisgICAgb3ZlcmxheXMvcGkzLWRpc2FibGUtYnQuZHRibyBcCisgICAgb3ZlcmxheXMvcGkzLW1pbml1YXJ0LWJ0LmR0Ym8gXAogICAgIG92ZXJsYXlzL3BpdGZ0MjIuZHRibyBcCiAgICAgb3ZlcmxheXMvcGl0ZnQyOC1yZXNpc3RpdmUuZHRibyBcCiAgICAgb3ZlcmxheXMvcGl0ZnQzNS1yZXNpc3RpdmUuZHRibyBcCiAgICAgb3ZlcmxheXMvcHBzLWdwaW8uZHRibyBcCiAgICAgb3ZlcmxheXMvcnBpLWZ0NTQwNi5kdGJvIFwKICAgICBvdmVybGF5cy9ycGktcG9lLmR0Ym8gXAotICAgIG92ZXJsYXlzL3cxLWdwaW8uZHRibyBcCi0gICAgb3ZlcmxheXMvdzEtZ3Bpby1wdWxsdXAuZHRibyBcCi0gICAgb3ZlcmxheXMvcGkzLWRpc2FibGUtYnQuZHRibyBcCi0gICAgb3ZlcmxheXMvcGkzLW1pbml1YXJ0LWJ0LmR0Ym8gXAogICAgIG92ZXJsYXlzL3ZjNC1rbXMtdjNkLmR0Ym8gXAotICAgIG92ZXJsYXlzL2F0ODZyZjIzMy5kdGJvIFwKKyAgICBvdmVybGF5cy93MS1ncGlvLXB1bGx1cC5kdGJvIFwKKyAgICBvdmVybGF5cy93MS1ncGlvLmR0Ym8gXAogICAgICIKIAogUlBJX0tFUk5FTF9ERVZJQ0VUUkVFID89ICIgXApAQCAtODQsMjMgKzg1LDE4IEBACiAgICAgaW1ndHlwID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEUnKQogCiAgICAgZGVmIHRyYW5zZm9ybShkdGIpOgorICAgICAgICBiYXNlID0gb3MucGF0aC5iYXNlbmFtZShkdGIpCiAgICAgICAgIGlmIGR0Yi5lbmRzd2l0aCgnZHRiJyk6CiAgICAgICAgICAgICAjIGVnOiB3aGF0ZXZlci9iY20yNzA4LXJwaS1iLmR0YiBoYXM6Ci0gICAgICAgICAgICAjICAgICBERVBMT1lESVIgZmlsZTogJHtLRVJORUxfSU1BR0VUWVBFfS1iY20yNzA4LXJwaS1iLmR0YgorICAgICAgICAgICAgIyAgICAgREVQTE9ZRElSIGZpbGU6IGJjbTI3MDgtcnBpLWIuZHRiCiAgICAgICAgICAgICAjICAgICBkZXN0aW5hdGlvbjogYmNtMjcwOC1ycGktYi5kdGIKLSAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGR0YikKLSAgICAgICAgICAgIHNyYyA9ICd7fS17fScuZm9ybWF0KGltZ3R5cCwgYmFzZSkKLSAgICAgICAgICAgIGRzdCA9IGJhc2UKLSAgICAgICAgICAgIHJldHVybiAne307e30nLmZvcm1hdChzcmMsIGRzdCkKKyAgICAgICAgICAgIHJldHVybiBiYXNlCiAgICAgICAgIGVsaWYgZHRiLmVuZHN3aXRoKCdkdGJvJyk6CiAgICAgICAgICAgICAjIG92ZXJsYXkgZHRiOgogICAgICAgICAgICAgIyBlZzogb3ZlcmxheXMvaGlmaWJlcnJ5LWFtcC5kdGJvIGhhczoKLSAgICAgICAgICAgICMgICAgIERFUExPWURJUiBmaWxlOiAke0tFUk5FTF9JTUFHRVRZUEV9LWhpZmliZXJyeS1hbXAuZHRibworICAgICAgICAgICAgIyAgICAgREVQTE9ZRElSIGZpbGU6IGhpZmliZXJyeS1hbXAuZHRibwogICAgICAgICAgICAgIyAgICAgZGVzdGluYXRpb246IG92ZXJsYXlzL2hpZmliZXJyeS1hbXAuZHRibwotICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZHRiKQotICAgICAgICAgICAgc3JjID0gJ3t9LXt9Jy5mb3JtYXQoaW1ndHlwLCBiYXNlKQotICAgICAgICAgICAgZHN0ID0gZHRiCi0gICAgICAgICAgICByZXR1cm4gJ3t9O3t9Jy5mb3JtYXQoc3JjLCBkdGIpCisgICAgICAgICAgICByZXR1cm4gJ3t9O3t9Jy5mb3JtYXQoYmFzZSwgZHRiKQogCiAgICAgcmV0dXJuICcgJy5qb2luKFt0cmFuc2Zvcm0oZHRiKSBmb3IgZHRiIGluIGFsbGR0YnMuc3BsaXQoJyAnKSBpZiBkdGJdKQogCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS1jbTMuY29uZiBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpLWNtMy5jb25mCmluZGV4IDE1M2Q1ZDUuLjVmNmQzYjYgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpLWNtMy5jb25mCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpLWNtMy5jb25mCkBAIC0yLDUgKzIsNSBAQAogI0BOQU1FOiBSYXNwYmVycnlQaSBDb21wdXRlIE1vZHVsZSAzIChDTTMpCiAjQERFU0NSSVBUSU9OOiBNYWNoaW5lIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBSYXNwYmVycnlQaSBDb21wdXRlIE1vZHVsZSAzIChDTTMpCiAKLU1BQ0hJTkVPVkVSUklERVMgPSAicmFzcGJlcnJ5cGkyOiR7TUFDSElORX0iCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9yYXNwYmVycnlwaTIuY29uZgorTUFDSElORU9WRVJSSURFUyA9ICJyYXNwYmVycnlwaTM6JHtNQUNISU5FfSIKK2luY2x1ZGUgY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy5jb25mCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkuY29uZgppbmRleCBkZGQzODAxLi5lOTRhZDg2IDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpLmNvbmYKQEAgLTcsNyArNyw2IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6Zi1zLmluYwogaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKIAotU0VSSUFMX0NPTlNPTEUgPz0gIjExNTIwMCB0dHlBTUEwIgorU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5QU1BMCIKIAogVUJPT1RfTUFDSElORSA9ICJycGlfY29uZmlnIgotVkM0X0NNQV9TSVpFX3Jhc3BiZXJyeXBpID89ICJjbWEtNjQiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTAtd2lmaS5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLXdpZmkuY29uZgppbmRleCBhY2NkZjNjLi4yYzRmNzYwIDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTAtd2lmaS5jb25mCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC13aWZpLmNvbmYKQEAgLTcsMTEgKzcsMTAgQEAKIGluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jCiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gIlwKLSAgICBsaW51eC1maXJtd2FyZS1iY200MzQzMCBcCi0gICAgbGludXgtZmlybXdhcmUtYmNtNDM0MzBhMS1oY2QgXAorICAgIGxpbnV4LWZpcm13YXJlLXJwaWRpc3Ryby1iY200MzQzMCBcCisgICAgYmx1ZXotZmlybXdhcmUtcnBpZGlzdHJvLWJjbTQzNDMwYTEtaGNkIFwKICIKIAogU0RJTUdfS0VSTkVMSU1BR0UgPz0gImtlcm5lbC5pbWciCiBVQk9PVF9NQUNISU5FID89ICJycGlfMF93X2RlZmNvbmZpZyIKLVNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UzAiCi1WQzRfQ01BX1NJWkUgPz0gImNtYS0xMjgiCitTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMC5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKaW5kZXggM2JkOWU5NS4uODAyOTdiNSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkwLmNvbmYKQEAgLTUsNSArNSw0IEBACiBNQUNISU5FT1ZFUlJJREVTID0gInJhc3BiZXJyeXBpOiR7TUFDSElORX0iCiBpbmNsdWRlIGNvbmYvbWFjaGluZS9yYXNwYmVycnlwaS5jb25mCiAKLVNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5QU1BMCIKLVZDNF9DTUFfU0laRSA/PSAiY21hLTEyOCIKK1NFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eUFNQTAiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTIuY29uZiBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMi5jb25mCmluZGV4IGExNzI4OWMuLmJkMTkxYzMgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMi5jb25mCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMi5jb25mCkBAIC03LDcgKzcsNiBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcnRleGE3LmluYwogaW5jbHVkZSBjb25mL21hY2hpbmUvaW5jbHVkZS9ycGktYmFzZS5pbmMKIAotU0VSSUFMX0NPTlNPTEUgPz0gIjExNTIwMCB0dHlBTUEwIgorU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5QU1BMCIKIAogVUJPT1RfTUFDSElORSA9ICJycGlfMl9jb25maWciCi1WQzRfQ01BX1NJWkUgPz0gImNtYS0yNTYiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL2NvbmYvbWFjaGluZS9yYXNwYmVycnlwaTMtNjQuY29uZiBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCmluZGV4IGZiMjFiMTIuLjYzNWU0ZjYgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy02NC5jb25mCkBAIC01LDEwICs1LDEwIEBACiBNQUNISU5FT1ZFUlJJREVTID0gInJhc3BiZXJyeXBpMzoke01BQ0hJTkV9IgogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJcCi0gICAgbGludXgtZmlybXdhcmUtYmNtNDM0MzAgXAotICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDU1IFwKLSAgICBsaW51eC1maXJtd2FyZS1iY200MzQzMGExLWhjZCBcCi0gICAgbGludXgtZmlybXdhcmUtYmNtNDM0NWMwLWhjZCBcCisgICAgbGludXgtZmlybXdhcmUtcnBpZGlzdHJvLWJjbTQzNDMwIFwKKyAgICBsaW51eC1maXJtd2FyZS1ycGlkaXN0cm8tYmNtNDM0NTUgXAorICAgIGJsdWV6LWZpcm13YXJlLXJwaWRpc3Ryby1iY200MzQzMGExLWhjZCBcCisgICAgYmx1ZXotZmlybXdhcmUtcnBpZGlzdHJvLWJjbTQzNDVjMC1oY2QgXAogIgogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY4LmluYwpAQCAtMjAsOCArMjAsNyBAQAogICAgIGJyb2FkY29tL2JjbTI4MzctcnBpLTMtYi5kdGIgXAogICAgICIKIAotU0VSSUFMX0NPTlNPTEUgPz0gIjExNTIwMCB0dHlTMCIKLVZDNF9DTUFfU0laRSA/PSAiY21hLTI1NiIKK1NFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIgogCiBVQk9PVF9NQUNISU5FID0gInJwaV8zX2NvbmZpZyIKIE1BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiB2YzRncmFwaGljcyIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvY29uZi9tYWNoaW5lL3Jhc3BiZXJyeXBpMy5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKaW5kZXggOGI1Y2NlNS4uZGY2NGNiYiAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9jb25mL21hY2hpbmUvcmFzcGJlcnJ5cGkzLmNvbmYKQEAgLTcsMTMgKzcsMTIgQEAKIGluY2x1ZGUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcnBpLWJhc2UuaW5jCiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gIlwKLSAgICBsaW51eC1maXJtd2FyZS1iY200MzQzMCBcCi0gICAgbGludXgtZmlybXdhcmUtYmNtNDM0NTUgXAotICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDMwYTEtaGNkIFwKLSAgICBsaW51eC1maXJtd2FyZS1iY200MzQ1YzAtaGNkIFwKKyAgICBsaW51eC1maXJtd2FyZS1ycGlkaXN0cm8tYmNtNDM0MzAgXAorICAgIGxpbnV4LWZpcm13YXJlLXJwaWRpc3Ryby1iY200MzQ1NSBcCisgICAgYmx1ZXotZmlybXdhcmUtcnBpZGlzdHJvLWJjbTQzNDMwYTEtaGNkIFwKKyAgICBibHVlei1maXJtd2FyZS1ycGlkaXN0cm8tYmNtNDM0NWMwLWhjZCBcCiAiCiAKIFNESU1HX0tFUk5FTElNQUdFID89ICJrZXJuZWw3LmltZyIKIFVCT09UX01BQ0hJTkUgPSAicnBpXzNfMzJiX2NvbmZpZyIKLVNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UzAiCi1WQzRfQ01BX1NJWkUgPz0gImNtYS0yNTYiCitTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQgYi9tZXRhLXJhc3BiZXJyeXBpL2RvY3MvZXh0cmEtYnVpbGQtY29uZmlnLm1kCmluZGV4IDA0MzE0YWEuLjczMmMxMDIgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvZG9jcy9leHRyYS1idWlsZC1jb25maWcubWQKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9kb2NzL2V4dHJhLWJ1aWxkLWNvbmZpZy5tZApAQCAtMTU4LDE3ICsxNTgsMTggQEAKIAogVG8gYnVpbGQgYW4gaW5pdHJhbWZzIGltYWdlOgogCi0qIFNldCB0aGlzIDMga2VybmVsIHZhcmlhYmxlcyAoaW4gbGludXgtcmFzcGJlcnJ5cGkuaW5jIGZvciBleGFtcGxlKQorKiBTZXQgdGhpcyAzIGtlcm5lbCB2YXJpYWJsZXMgKGluIGtlcm5lbCdzIGRvX2NvbmZpZ3VyZV9wcmVwZW5kIGluIGxpbnV4LXJhc3BiZXJyeXBpLmluYyBhZnRlciB0aGUgbGluZSBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIExPQ0FMVkVSU0lPTiAiXCJcIiIKKykKICAgLSBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEJMS19ERVZfSU5JVFJEIHkKICAgLSBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIElOSVRSQU1GU19TT1VSQ0UgIiIKICAgLSBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFJEX0daSVAgeQogCi0qIFNldCB0aGUgeW9jdG8gdmFyaWFibGVzIChpbiBsaW51eC1yYXNwYmVycnlwaS5pbmMgZm9yIGV4YW1wbGUpCi0gIC0gYElOSVRSQU1GU19JTUFHRSA9ICI8YSBuYW1lIGZvciB5b3VyIGluaXRyYW1mcyBpbWFnZT4iYAorKiBTZXQgdGhlIHlvY3RvIHZhcmlhYmxlcyAoZS5nLiBpbiBsb2NhbC5jb25mKQorICAtIGBJTklUUkFNRlNfSU1BR0UgPSAiPG5hbWUgZm9yIHlvdXIgaW5pdHJhbWZzIGltYWdlPiJgCiAgIC0gYElOSVRSQU1GU19JTUFHRV9CVU5ETEUgPSAiMSJgCi0KLSogU2V0IHRoZSBtZXRhLXJhc2JlcnJ5cGkgdmFyaWFibGUgKGluIHJhc3BiZXJyeXBpLmNvbmYgZm9yIGV4YW1wbGUpCi0gIC0gYEtFUk5FTF9JTklUUkFNRlMgPSAiLWluaXRyYW1mcyJgCisgIC0gYEJPT1RfU1BBQ0UgPSAiMTA3Mzc0MSJgCisgIC0gYElOSVRSQU1GU19NQVhTSVpFID0gIjMxNTQwMCJgCisgIC0gYElNQUdFX0ZTVFlQRVNfcG4tJHtJTklUUkFNRlNfSU1BR0V9ID0gIiR7SU5JVFJBTUZTX0ZTVFlQRVN9ImAKIAogIyMgRW5hYmxlIFNQSSBidXMKIApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9keW5hbWljLWxheWVycy9xdDUtbGF5ZXIvcmVjaXBlcy1xdC9xdDUvcXRiYXNlXyUuYmJhcHBlbmQgYi9tZXRhLXJhc3BiZXJyeXBpL2R5bmFtaWMtbGF5ZXJzL3F0NS1sYXllci9yZWNpcGVzLXF0L3F0NS9xdGJhc2VfJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDZhYjg0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9keW5hbWljLWxheWVycy9xdDUtbGF5ZXIvcmVjaXBlcy1xdC9xdDUvcXRiYXNlXyUuYmJhcHBlbmQKQEAgLTAsMCArMSwxNyBAQAorUEFDS0FHRUNPTkZJR19HTF9ycGkgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dsJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICAgICAnb3BlbmdsJywgJ2VnbGZzIGdsZXMyIGxpbnV4ZmInLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgorI1BBQ0tBR0VDT05GSUdfR0xfcnBpID0gIiR7QGJiLnV0aWxzLmFueV9kaXN0cm9fZmVhdHVyZXMoJ3gxMSB3YXlsYW5kJywgJycsICdlZ2xmcycsIGQpfSIKK1BBQ0tBR0VDT05GSUdfRk9OVFNfcnBpID0gImZvbnRjb25maWciCitQQUNLQUdFQ09ORklHX2FwcGVuZF9ycGkgPSAiIGxpYmlucHV0IGV4YW1wbGVzIHRzbGliIHhrYiB4a2Jjb21tb24tZXZkZXYiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9ycGkgPSAidGVzdHMiCisKK09FX1FUQkFTRV9FR0xGU19ERVZJQ0VfSU5URUdSQVRJT05fcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJ2VnbGZzX2ttcycsICdlZ2xmc19icmNtJywgZCl9IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9ycGkoKSB7CisgICAgIyBBZGQgdGhlIGFwcHJvcHJpYXRlIEVHTEZTX0RFVklDRV9JTlRFR1JBVElPTgorICAgIGlmIFsgIiR7QGQuZ2V0VmFyKCdPRV9RVEJBU0VfRUdMRlNfREVWSUNFX0lOVEVHUkFUSU9OJyl9IiAhPSAiIiBdOyB0aGVuCisgICAgICAgIGVjaG8gIkVHTEZTX0RFVklDRV9JTlRFR1JBVElPTiA9ICR7T0VfUVRCQVNFX0VHTEZTX0RFVklDRV9JTlRFR1JBVElPTn0iID4gJHtTfS9ta3NwZWNzL29lLWRldmljZS1leHRyYS5wcmkKKyAgICBmaQorfQorUkRFUEVORFNfJHtQTn1fYXBwZW5kX3JwaSA9ICIgdXNlcmxhbmQiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2Jvb3RmaWxlcy9ycGktY29uZmlnX2dpdC5iYiBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCmluZGV4IGE4NWM5MTYuLmQ5MmI4ZTQgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvYm9vdGZpbGVzL3JwaS1jb25maWdfZ2l0LmJiCkBAIC0yMyw3ICsyMyw2IEBACiBQSVRGVDM1cj0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAicGl0ZnQzNXIiLCAiMSIsICIwIiwgZCl9IgogCiBWQzRHUkFQSElDUz0iJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IgotVkM0RFRCT19yYXNwYmVycnlwaTMtNjQgPz0gInZjNC1ma21zLXYzZCIKIFZDNERUQk8gPz0gInZjNC1rbXMtdjNkIgogCiBpbmhlcml0IGRlcGxveSBub3BhY2thZ2VzCkBAIC0xNTksNyArMTU4LDcgQEAKICAgICAjIFZDNCBHcmFwaGljcyBzdXBwb3J0CiAgICAgaWYgWyAiJHtWQzRHUkFQSElDU30iID0gIjEiIF07IHRoZW4KICAgICAgICAgZWNobyAiIyBFbmFibGUgVkM0IEdyYXBoaWNzIiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAotICAgICAgICBlY2hvICJkdG92ZXJsYXk9JHtWQzREVEJPfSwke1ZDNF9DTUFfU0laRX0iID4+ICR7REVQTE9ZRElSfS9iY20yODM1LWJvb3RmaWxlcy9jb25maWcudHh0CisgICAgICAgIGVjaG8gImR0b3ZlcmxheT0ke1ZDNERUQk99IiA+PiAke0RFUExPWURJUn0vYmNtMjgzNS1ib290ZmlsZXMvY29uZmlnLnR4dAogICAgIGZpCiAKICAgICAjIFdhdmVzaGFyZSAiQyIgMTAyNHg2MDAgNyIgUmV2Mi4xIElQUyBjYXBhY2l0aXZlIHRvdWNoIChodHRwOi8vd3d3LndhdmVzaGFyZS5jb20vN2luY2gtSERNSS1MQ0QtQy5odG0pCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtYnNwL2NvbW1vbi9maXJtd2FyZS5pbmMKaW5kZXggM2JhYTFmOC4uN2JlODQ4YSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC9jb21tb24vZmlybXdhcmUuaW5jCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvY29tbW9uL2Zpcm13YXJlLmluYwpAQCAtMSwxMSArMSwxMSBAQAotUlBJRldfREFURSA/PSAiMjAxODA4MTciCi1TUkNSRVYgPz0gIjUzYWM2OGUxZWIwMjEzOGY3MmE1MDU2ZWZlZDlkYWM5ZDM4ODNhM2YiCitSUElGV19EQVRFID89ICIyMDE4MDkyNCIKK1NSQ1JFViA/PSAiNWI0OWNhYTE3ZTkxZDBlNjQwMjQzODAxMTlhZDczOWJiMjAxYzY3NCIKIFJQSUZXX1NSQ19VUkkgPz0gImh0dHBzOi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9maXJtd2FyZS9hcmNoaXZlLyR7U1JDUkVWfS50YXIuZ3oiCiBSUElGV19TID89ICIke1dPUktESVJ9L2Zpcm13YXJlLSR7U1JDUkVWfSIKIAogU1JDX1VSSSA9ICIke1JQSUZXX1NSQ19VUkl9IgotU1JDX1VSSVttZDVzdW1dID0gIjZiM2Q5MDFkZWNmMmZlNGZhZDE1MWUzZWJiMjhjYjYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM2ODBkZTNlYTk4MTdiMTBmYTg5OThiMGRmYTY4MTFlNThjOTY5NDU0NzRmNGM3ODI3MTBkY2QwYTU2YzhjZjAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTEzNTI5NzJhMDI5YzZmNDdiZGU2ZDMwMmI2OTQ0MGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFmOWM1ODk1N2RmZTY4MWZmZjdlMWNmMWVhYmI5ZTBmNmZkYzk5NzIwZjFkMDU5ZmIyNGEzNzc1MDU3MzMxMCIKIAogCiBQViA9ICIke1JQSUZXX0RBVEV9IgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LzAwMDItcnBpXzBfdy1BZGQtY29uZmlncy1jb25zaXN0ZW50LXdpdGgtUnBJMy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC8wMDAyLXJwaV8wX3ctQWRkLWNvbmZpZ3MtY29uc2lzdGVudC13aXRoLVJwSTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OGZkODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LzAwMDItcnBpXzBfdy1BZGQtY29uZmlncy1jb25zaXN0ZW50LXdpdGgtUnBJMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gNWQxMTNkYzAxMzBlYTJlYTlmYWFhMDAwZmJhOWM3MzcyNjZiOTc0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERyZXcgTW9zZWxleSA8ZHJldy5tb3NlbGV5QG5vcnRoZXJuLnRlY2g+Ci1EYXRlOiBGcmksIDkgRmViIDIwMTggMTg6MTA6MDkgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gcnBpXzBfdzogQWRkIGNvbmZpZ3MgY29uc2lzdGVudCB3aXRoIFJwSTMKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC84NTY1NzIvXQotCi1TaWduZWQtb2ZmLWJ5OiBEcmV3IE1vc2VsZXkgPGRyZXcubW9zZWxleUBub3J0aGVybi50ZWNoPgotLS0tCi0gY29uZmlncy9ycGlfMF93X2RlZmNvbmZpZyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3MvcnBpXzBfd19kZWZjb25maWcgYi9jb25maWdzL3JwaV8wX3dfZGVmY29uZmlnCi1pbmRleCA5YTZkMjRiLi4xMjQ4Mjk0IDEwMDY0NAotLS0tIGEvY29uZmlncy9ycGlfMF93X2RlZmNvbmZpZwotKysrIGIvY29uZmlncy9ycGlfMF93X2RlZmNvbmZpZwotQEAgLTEyLDE0ICsxMiwyMSBAQCBDT05GSUdfU1lTX1BST01QVD0iVS1Cb290PiAiCi0gQ09ORklHX0NNRF9HUElPPXkKLSBDT05GSUdfQ01EX01NQz15Ci0gQ09ORklHX0NNRF9VU0I9eQotK0NPTkZJR19PRl9FTUJFRD15Ci0rQ09ORklHX0VOVl9GQVRfSU5URVJGQUNFPSJtbWMiCi0rQ09ORklHX0VOVl9GQVRfREVWSUNFX0FORF9QQVJUPSIwOjEiCi0rQ09ORklHX0RNX0tFWUJPQVJEPXkKLSBDT05GSUdfRE1fTU1DPXkKLSBDT05GSUdfTU1DX1NESENJPXkKLSBDT05GSUdfTU1DX1NESENJX0JDTTI4MzU9eQotIENPTkZJR19ETV9FVEg9eQotIENPTkZJR19VU0I9eQotIENPTkZJR19ETV9VU0I9eQotK0NPTkZJR19VU0JfRFdDMj15Ci0gQ09ORklHX1VTQl9TVE9SQUdFPXkKLSBDT05GSUdfVVNCX0tFWUJPQVJEPXkKLStDT05GSUdfVVNCX0hPU1RfRVRIRVI9eQotK0NPTkZJR19VU0JfRVRIRVJfU01TQzk1WFg9eQotIENPTkZJR19ETV9WSURFTz15Ci0gQ09ORklHX1NZU19XSElURV9PTl9CTEFDSz15Ci0gQ09ORklHX0NPTlNPTEVfU0NST0xMX0xJTkVTPTEwCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKaW5kZXggN2Q0YTQ5ZS4uOTUwMTVmNCAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XyUuYmJhcHBlbmQKQEAgLTEsNyArMSBAQAotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vdS1ib290OiIKLQotU1JDX1VSSV9hcHBlbmRfcnBpID0gIiBcCi0gICAgZmlsZTovLzAwMDItcnBpXzBfdy1BZGQtY29uZmlncy1jb25zaXN0ZW50LXdpdGgtUnBJMy5wYXRjaCBcCi0iCi0KIERFUEVORFNfYXBwZW5kX3JwaSA9ICIgcnBpLXUtYm9vdC1zY3IiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvYnJjbTQzNDM4LnNlcnZpY2UgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvYnJjbTQzNDM4LnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MWY2YmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2JyY200MzQzOC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1Ccm9hZGNvbSBCQ000MzQzOCBibHVldG9vdGggSENJCi1Db25kaXRpb25QYXRoSXNEaXJlY3Rvcnk9L3Byb2MvZGV2aWNlLXRyZWUvc29jL2dwaW9AN2UyMDAwMDAvYnRfcGlucwotQmVmb3JlPWJsdWV0b290aC5zZXJ2aWNlCi1CaW5kc1RvPWRldi1zZXJpYWwxLmRldmljZQotQWZ0ZXI9ZGV2LXNlcmlhbDEuZGV2aWNlCi0KLVtTZXJ2aWNlXQotVHlwZT1vbmVzaG90Ci1SZW1haW5BZnRlckV4aXQ9eWVzCi1FeGVjU3RhcnQ9L3Vzci9iaW4vYnR1YXJ0Ci0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKaW5kZXggZDFiODRkZi4uNjY1MWZiOCAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XyUuYmJhcHBlbmQKQEAgLTUsNDEgKzUsMTIgQEAKICAgICBmaWxlOi8vMDAwMi1iY200M3h4LVRoZS1VQVJULXNwZWVkLW11c3QtYmUtcmVzZXQtYWZ0ZXItdGhlLWZpcm13LnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMy1JbmNyZWFzZS1maXJtd2FyZS1sb2FkLXRpbWVvdXQtdG8tMzBzLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwNC1Nb3ZlLXRoZS00M3h4LWZpcm13YXJlLWludG8tbGliLWZpcm13YXJlLnBhdGNoIFwKLSAgICBmaWxlOi8vYnJjbTQzNDM4LnNlcnZpY2UgXAotICAgICIKLQotQkNNX0JUX1NFUlZJQ0UgPSAiYnJjbTQzNDM4LnNlcnZpY2UiCi0KLWVuYWJsZV9iY21fYmx1ZXRvb3RoKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCQ01fQlRfU0VSVklDRX0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotfQotCi1CQ01fQlRfUkRFUEVORFMgPSAiXAotICAgIHVkZXYtcnVsZXMtcnBpIFwKLSAgICBwaS1ibHVldG9vdGggXAogIgogCi0jIGZvciByYXNwYmVycnlwaTMKK0JDTV9CVF9SREVQRU5EUyA9ICJwaS1ibHVldG9vdGgiCisKK1NSQ19VUklfYXBwZW5kX3Jhc3BiZXJyeXBpMC13aWZpID0gIiAke0JDTV9CVF9TT1VSQ0VTfSIKIFNSQ19VUklfYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgJHtCQ01fQlRfU09VUkNFU30iCiAKLWRvX2luc3RhbGxfYXBwZW5kX3Jhc3BiZXJyeXBpMygpIHsKLSAgICBlbmFibGVfYmNtX2JsdWV0b290aAotfQotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn1fYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgJHtCQ01fQlRfU0VSVklDRX0iCi0KLVJERVBFTkRTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTMgPSAiICR7QkNNX0JUX1JERVBFTkRTfSIKLQotIyBmb3IgcmFzcGJlcnJ5cGkwLXdpZmkKLVNSQ19VUklfYXBwZW5kX3Jhc3BiZXJyeXBpMC13aWZpID0gIiAke0JDTV9CVF9TT1VSQ0VTfSIKLQotZG9faW5zdGFsbF9hcHBlbmRfcmFzcGJlcnJ5cGkwLXdpZmkoKSB7Ci0gICAgZW5hYmxlX2JjbV9ibHVldG9vdGgKLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfU0VSVklDRX0iCi0KIFJERVBFTkRTXyR7UE59X2FwcGVuZF9yYXNwYmVycnlwaTAtd2lmaSA9ICIgJHtCQ01fQlRfUkRFUEVORFN9IgorUkRFUEVORFNfJHtQTn1fYXBwZW5kX3Jhc3BiZXJyeXBpMyA9ICIgJHtCQ01fQlRfUkRFUEVORFN9IgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waS1ibHVldG9vdGgvcGktYmx1ZXRvb3RoLzAwMDEtYnRoZWxwZXItY29ycmVjdC1wYXRoLWZvci1oY2ljb25maWctdW5kZXItWW9jdG8ucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BpLWJsdWV0b290aC9waS1ibHVldG9vdGgvMDAwMS1idGhlbHBlci1jb3JyZWN0LXBhdGgtZm9yLWhjaWNvbmZpZy11bmRlci1Zb2N0by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTgzOTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waS1ibHVldG9vdGgvcGktYmx1ZXRvb3RoLzAwMDEtYnRoZWxwZXItY29ycmVjdC1wYXRoLWZvci1oY2ljb25maWctdW5kZXItWW9jdG8ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBhZjkxYzk2OTUxYTExZjgxZjVjZWE4OGEwMDEwMTYxNTkyYzg5MzEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIlBldGVyIEEuIEJpZ290IiA8cGFiQHBhYmlnb3QuY29tPgorRGF0ZTogV2VkLCAxNCBOb3YgMjAxOCAwOToxOTo1MSAtMDYwMAorU3ViamVjdDogW1BBVENIXSBidGhlbHBlcjogY29ycmVjdCBwYXRoIGZvciBoY2ljb25maWcgdW5kZXIgWW9jdG8KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJhdGUgW09FLXNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgQS4gQmlnb3QgPHBhYkBwYWJpZ290LmNvbT4KKy0tLQorIHVzci9iaW4vYnRoZWxwZXIgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdXNyL2Jpbi9idGhlbHBlciBiL3Vzci9iaW4vYnRoZWxwZXIKK2luZGV4IDI1NWZkZWIuLjRlMWExYTQgMTAwNzU1CistLS0gYS91c3IvYmluL2J0aGVscGVyCisrKysgYi91c3IvYmluL2J0aGVscGVyCitAQCAtMTAsNyArMTAsNyBAQCBmaQorIAorIGRldj0iJDEiCisgIyBOZWVkIHRvIGJyaW5nIGhjaSB1cCBiZWZvcmUgbG9va2luZyBhdCBNQUMgYXMgaXQgY2FuIGJlIGFsbCB6ZXJvcyBkdXJpbmcgaW5pdAorLS9iaW4vaGNpY29uZmlnICIkZGV2IiB1cAorLS9iaW4vaGNpY29uZmlnICIkZGV2IiB8Z3JlcCAtcSAiQkQgQWRkcmVzczogQjg6Mjc6RUI6IiB8fCBleGl0IDAKKysvdXNyL2Jpbi9oY2ljb25maWcgIiRkZXYiIHVwCisrL3Vzci9iaW4vaGNpY29uZmlnICIkZGV2IiB8Z3JlcCAtcSAiQkQgQWRkcmVzczogQjg6Mjc6RUI6IiB8fCBleGl0IDAKKyAvdXNyL2Jpbi9oY2l0b29sIC1pICIkZGV2IiBjbWQgMHgzZiAweDFjIDB4MDEgMHgwMiAweDAwIDB4MDEgMHgwMSA+IC9kZXYvbnVsbAorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waS1ibHVldG9vdGgvcGktYmx1ZXRvb3RoX2dpdC5iYiBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGktYmx1ZXRvb3RoL3BpLWJsdWV0b290aF9naXQuYmIKaW5kZXggZTE4NWYyNS4uYjI0MDFiOSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9waS1ibHVldG9vdGgvcGktYmx1ZXRvb3RoX2dpdC5iYgorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BpLWJsdWV0b290aC9waS1ibHVldG9vdGhfZ2l0LmJiCkBAIC02LDE3ICs2LDQxIEBACiAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTZhZjhkZTNjOGVlNzFmOGU5MWU5YjIyZjg0ZmYyMDIyIFwKICIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1JQaS1EaXN0cm8vcGktYmx1ZXRvb3RoIgotU1JDUkVWID0gIjJhNzQ3Nzk2NmJiM2M2OTgzOGIyMjRmM2VhOTJjYjQ5YTg4MTI0ZDUiCi1VUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9waS1ibHVldG9vdGggXAorICAgIGZpbGU6Ly8wMDAxLWJ0aGVscGVyLWNvcnJlY3QtcGF0aC1mb3ItaGNpY29uZmlnLXVuZGVyLVlvY3RvLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIyZTFhMzkzOTU1OTEwYWVhNjdiYmYzYzkyMWJlMzVhNjZlOGE4ZmJlIgorUFYgPSAiMS4xK2dpdCR7U1JDUFZ9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCisjIGhjaXVhcnQuc2VydmljZSByZXBsYWNlcyB3aGF0IHdhcyBicmNtNDM0Mzguc2VydmljZSAKK2luaGVyaXQgc3lzdGVtZAorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICBoY2l1YXJ0LnNlcnZpY2UgXAorICAgIGJ0aGVscGVyQC5zZXJ2aWNlIFwKKyIKKwogaW5oZXJpdCBhbGxhcmNoCiAKIGRvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9saWIvdWRldi9ydWxlcy5kLyogJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisKICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS91c3IvYmluL2J0aGVscGVyICR7RH0ke2JpbmRpcn0KICAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS91c3IvYmluL2J0dWFydCAke0R9JHtiaW5kaXJ9CisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RlYmlhbi9waS1ibHVldG9vdGguYnRoZWxwZXJALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnRoZWxwZXJALnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGViaWFuL3BpLWJsdWV0b290aC5oY2l1YXJ0LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaGNpdWFydC5zZXJ2aWNlCisgICAgZmkKIH0KIAotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9IgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7YmluZGlyfSBcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDBkODcxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYmFwcGVuZApAQCAtMCwwICsxLDIgQEAKKyMgbWVzYS1kZW1vcyBuZWVkcyBnbGVzMSBhbmQgdXNlcmxhbmQgZHJpdmVyIGRvZXMgbm90IGhhdmUgaXQsIHdvcmtzIG9rIHdpdGggdmM0IGdyYXBoaWNzIGRyaXZlcgorWDExR0xUT09MU19yZW1vdmVfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICdtZXNhLWRlbW9zJywgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtcnBpLXRlc3QuYmIgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgppbmRleCBkOTFjZTBiLi45MTU5MzQ2IDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1ycGktdGVzdC5iYgpAQCAtNiw4ICs2LDcgQEAKIAogQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCi1PTVhQTEFZRVJfcnBpID0gIm9teHBsYXllciIKLU9NWFBMQVlFUl9ycGlfYWFyY2g2NCA9ICIiCitPTVhQTEFZRVIgID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICdvbXhwbGF5ZXInLCBkKX0iCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICAke09NWFBMQVlFUn0gXApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvZmlsZXMvMDAwMS1waS1ibGFzdGVyLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWtlZGV2LnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvZmlsZXMvMDAwMS1waS1ibGFzdGVyLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWtlZGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YmM0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvcGktYmxhc3Rlci9maWxlcy8wMDAxLXBpLWJsYXN0ZXItSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ha2VkZXYucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA2YTZiNzA1ZmY1Y2JhOTYwYzU0YmRiNGQ0YmNkYWEzYjAwYTg1NGEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTEgQXVnIDIwMTggMTA6MjQ6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcGktYmxhc3RlcjogSW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ha2VkZXYoKQorCitJbiBnbGliYyAyLjI4KyB0aGlzIGhlYWRlciBpcyBub3QgaW5jbHVkZWQgaW5kaXJlY3RseSBhbnltb3JlCisKK2ZpeGVzCisKK2xkOiBwaS1ibGFzdGVyLm86IGluIGZ1bmN0aW9uIGBtYm94X29wZW4nOgorcGktYmxhc3Rlci5jOigudGV4dCsweDI4KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWRldicKK2NvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3NhcmZhdGEvcGktYmxhc3Rlci9wdWxsLzEwMF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHBpLWJsYXN0ZXIuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcGktYmxhc3Rlci5jIGIvcGktYmxhc3Rlci5jCitpbmRleCA2Y2ZkMDEwLi5mYzRlNjg2IDEwMDY0NAorLS0tIGEvcGktYmxhc3Rlci5jCisrKysgYi9waS1ibGFzdGVyLmMKK0BAIC00MSw2ICs0MSw3IEBAIHN0YXRpYyBjaGFyIFZFUlNJT05bXSA9ICJTTkFQU0hPVCI7CisgI2luY2x1ZGUgPHN5cy90aW1lLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2luY2x1ZGUgIm1haWxib3guaCIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy9waS1ibGFzdGVyL3BpLWJsYXN0ZXJfZ2l0LmJiIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKaW5kZXggMjc0ODQ1OS4uOWNlZGY1ZSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3BpLWJsYXN0ZXIvcGktYmxhc3Rlcl9naXQuYmIKQEAgLTIsMTUgKzIsMTYgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYXJmYXRhL3BpLWJsYXN0ZXIvIgogU0VDVElPTiA9ICJkZXZlbC9saWJzIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTIyNTtlbmRsaW5lPTI1MjttZDU9YTAxMjg2OGVmNWY4M2I5ZjI1N2FmMjUzZDdjYjA3YTMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7YmVnaW5saW5lPTI0NDtlbmRsaW5lPTI2ODttZDU9ODZkMTBlNGJjZjRiNDAxNGQzMDZkZGU3YzFkMmE4MGQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zYXJmYXRhL3BpLWJsYXN0ZXIgXAogICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWluaXRzY3JpcHQtbHNiLWRlcGVuZGVuY3kucGF0Y2ggXAotIgorICAgICAgICAgICBmaWxlOi8vMDAwMS1waS1ibGFzdGVyLUluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWtlZGV2LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1TUkNSRVYgPSAiMTAzNWFkN2RmZmIyNzBjNDBlZWMxYmIzYTY1NDE3MWE3NTVmYmE5OCIKK1NSQ1JFViA9ICJlOTgxYWE1ZDc2MjRjNzVhNGQ0YWZjZGRjYmQyMzVmMjVlMzJmZmU0IgogCiBpbmhlcml0IHVwZGF0ZS1yYy5kIGF1dG90b29scwogCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5ncGkvZmlsZXMvMDAwMS1BZGQtaW5pdGlhbC1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5ncGkvZmlsZXMvMDAwMS1BZGQtaW5pdGlhbC1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKaW5kZXggMDFlMDU0Ni4uZDk3YmJlZiAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ3BpL2ZpbGVzLzAwMDEtQWRkLWluaXRpYWwtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdwaS9maWxlcy8wMDAxLUFkZC1pbml0aWFsLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApAQCAtMSw4ICsxLDExIEBACi1Gcm9tIGNhMjU3ODhlMjU2M2JhZDBkNTU0ZGViOWY0MzAwZDFlN2QwNjI4MjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBdXJlbGlhbiBaYW5vc2NoaSA8YXVyZWxpYW4xN0BnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDMxIEp1bCAyMDE3IDIwOjI1OjE1ICswMzAwCitGcm9tIDlhNDdmZDVkYTU0NmQxNDg4ODZjODg5MGNkNDgyNDllYmU4MjY5NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEYW5pZWwgUmFuayA8ZHdyYW5rQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMSBBdWcgMjAxOCAyMzozMjowMCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBBZGQgaW5pdGlhbCBjcm9zcyBjb21waWxlIHN1cHBvcnQKIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgUmFuayA8ZHdyYW5rQGdtYWlsLmNvbT4KKwogLS0tCiAgZGV2TGliL01ha2VmaWxlICAgICAgICAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZXhhbXBsZXMvR2VydGJvYXJkL01ha2VmaWxlIHwgMjIgKysrKysrKysrKystLS0tLS0tCkBAIC0xMSw4ICsxNCw4IEBACiAgZXhhbXBsZXMvUGlHbG93L01ha2VmaWxlICAgIHwgIDQgKystLQogIGV4YW1wbGVzL3Eydy9NYWtlZmlsZSAgICAgICB8ICA0ICsrLS0KICBncGlvL01ha2VmaWxlICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKystLS0tLS0tLS0tLS0KLSB3aXJpbmdQaS9NYWtlZmlsZSAgICAgICAgICAgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gOCBmaWxlcyBjaGFuZ2VkLCAxMjAgaW5zZXJ0aW9ucygrKSwgODkgZGVsZXRpb25zKC0pCisgd2lyaW5nUGkvTWFrZWZpbGUgICAgICAgICAgIHwgNDYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KKyA4IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2RldkxpYi9NYWtlZmlsZSBiL2RldkxpYi9NYWtlZmlsZQogaW5kZXggY2Y2NjVkNi4uMDQwYzAzYSAxMDA2NDQKQEAgLTI0OCw3ICsyNTEsNyBAQAogIAogICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGRpZmYgLS1naXQgYS9ncGlvL01ha2VmaWxlIGIvZ3Bpby9NYWtlZmlsZQotaW5kZXggZjQxYTAwNS4uMjI3NTNlZSAxMDA2NDQKK2luZGV4IDllYzE2MGQuLmEyOTQyNDIgMTAwNjQ0CiAtLS0gYS9ncGlvL01ha2VmaWxlCiArKysgYi9ncGlvL01ha2VmaWxlCiBAQCAtMzAsMTMgKzMwLDE3IEBAIGlmbmVxICgkViwxKQpAQCAtMjg0LDggKzI4Nyw4IEBACiAtCSRRIGNob3duIHJvb3Qucm9vdAkkKERFU1RESVIpJChQUkVGSVgpL2Jpbi9ncGlvCiAtCSRRIGNobW9kIDQ3NTUJCSQoREVTVERJUikkKFBSRUZJWCkvYmluL2dwaW8KIC1lbmRpZgotLQkkUSBta2RpciAtcAkJJChERVNURElSKSQoUFJFRklYKS9tYW4vbWFuMQotLQkkUSBjcCBncGlvLjEJCSQoREVTVERJUikkKFBSRUZJWCkvbWFuL21hbjEKKy0JJFEgbWtkaXIgLXAJCSQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKKy0JJFEgY3AgZ3Bpby4xCQkkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4xCiArCSRRIGluc3RhbGwgLWQgJChCSU5fRElSKQogKwkkUSBpbnN0YWxsIC1tIDQ3NTUgLW8gcm9vdCAtZyByb290IGdwaW8gJChCSU5fRElSKQogKwkkUSBpbnN0YWxsIC1kICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKQEAgLTI5OSwxNCArMzAyLDE0IEBACiAgCSRRIGVjaG8gIltVbkluc3RhbGxdIgogLQkkUSBybSAtZiAkKERFU1RESVIpJChQUkVGSVgpL2Jpbi9ncGlvCiArCSRRIHJtIC1mICQoQklOX0RJUikvZ3BpbwotIAkkUSBybSAtZiAkKERFU1RESVIpJChQUkVGSVgpL21hbi9tYW4xL2dwaW8uMQorIAkkUSBybSAtZiAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4xL2dwaW8uMQogIAogIC5QSE9OWToJZGVwZW5kCiBkaWZmIC0tZ2l0IGEvd2lyaW5nUGkvTWFrZWZpbGUgYi93aXJpbmdQaS9NYWtlZmlsZQotaW5kZXggZTE4NjhiOS4uNzUwZDI5MCAxMDA2NDQKK2luZGV4IDI4N2ZhNTguLjY3MGE2ZGIgMTAwNjQ0CiAtLS0gYS93aXJpbmdQaS9NYWtlZmlsZQogKysrIGIvd2lyaW5nUGkvTWFrZWZpbGUKLUBAIC0yNSwyMSArMjUsMjUgQEAgVkVSU0lPTj0kKHNoZWxsIGNhdCAuLi9WRVJTSU9OKQorQEAgLTI1LDIyICsyNSwyNiBAQCBWRVJTSU9OPSQoc2hlbGwgY2F0IC4uL1ZFUlNJT04pCiAgREVTVERJUj89L3VzcgogIFBSRUZJWD89L2xvY2FsCiAgCkBAIC0zMzUsMTEgKzMzOCwxMyBAQAogK0lOQ0xVREUJPz0gLUkuCiAgREVGUwk9IC1EX0dOVV9TT1VSQ0UKIC1DRkxBR1MJPSAkKERFQlVHKSAkKERFRlMpIC1XZm9ybWF0PTIgLVdhbGwgLVdleHRyYSAtV2lubGluZSAkKElOQ0xVREUpIC1waXBlIC1mUElDCistI0NGTEFHUwk9ICQoREVCVUcpICQoREVGUykgLVdmb3JtYXQ9MiAtV2FsbCAtV2V4dHJhIC1XY29udmVyc2lvbiAtV2lubGluZSAkKElOQ0xVREUpIC1waXBlIC1mUElDCiArQ0ZMQUdTCT0gJChERUJVRykgJChERUZTKSAkKElOQ0xVREUpIC1XZm9ybWF0PTIgLVdhbGwgLVdleHRyYSAtV2lubGluZSAtcGlwZSAtZlBJQworKyNDRkxBR1MJPSAkKERFQlVHKSAkKERFRlMpICQoSU5DTFVERSkgLVdmb3JtYXQ9MiAtV2FsbCAtV2V4dHJhIC1XY29udmVyc2lvbiAtV2lubGluZSAtcGlwZSAtZlBJQwogIAogIExJQlMgICAgPSAtbG0gLWxwdGhyZWFkIC1scnQgLWxjcnlwdAogIAotQEAgLTc4LDE3ICs4MiwxNyBAQCAkKFNUQVRJQyk6CSQoT0JKKQorQEAgLTc1LDE3ICs3OSwxNyBAQCBzdGF0aWM6CiAgCiAgJChEWU5BTUlDKToJJChPQkopCiAgCSRRIGVjaG8gIltMaW5rIChEeW5hbWljKV0iCkBAIC0zNjAsNyArMzY1LDcgQEAKICAKICAuUEhPTlk6CXRhZ3MKICB0YWdzOgkkKFNSQykKLUBAIC05OSwyMiArMTAzLDIyIEBAIHRhZ3M6CSQoU1JDKQorQEAgLTk2LDEzICsxMDAsMTMgQEAgdGFnczoJJChTUkMpCiAgLlBIT05ZOglpbnN0YWxsCiAgaW5zdGFsbDoJJChEWU5BTUlDKQogIAkkUSBlY2hvICJbSW5zdGFsbCBIZWFkZXJzXSIKQEAgLTM3OCwyMiArMzgzLDkgQEAKICsJJFEgbG4gLXNmICQoRFlOQU1JQykJCQkJCQkkKExJQl9ESVIpLyQoQkFTRV9OQU1FKS5zbwogKwkkUSBsbiAtc2YgJChEWU5BTUlDKQkJCQkJCSQoTElCX0RJUikvJChCQVNFX05BTUUpLnNvLiQoRFlOX1ZFUlNfTUFKKQogIAotIC5QSE9OWToJaW5zdGFsbC1zdGF0aWMKLSBpbnN0YWxsLXN0YXRpYzoJJChTVEFUSUMpCi0gCSRRIGVjaG8gIltJbnN0YWxsIEhlYWRlcnNdIgotLQkkUSBpbnN0YWxsIC1tIDA3NTUgLWQJCQkJCQkkKERFU1RESVIpJChQUkVGSVgpL2luY2x1ZGUKLS0JJFEgaW5zdGFsbCAtbSAwNjQ0ICQoSEVBREVSUykJCQkJCSQoREVTVERJUikkKFBSRUZJWCkvaW5jbHVkZQotKwkkUSBpbnN0YWxsIC1tIDA3NTUgLWQJCQkJCQkkKElOQ0xVREVfRElSKQotKwkkUSBpbnN0YWxsIC1tIDA2NDQgJChIRUFERVJTKQkJCQkJJChJTkNMVURFX0RJUikKLSAJJFEgZWNobyAiW0luc3RhbGwgU3RhdGljIExpYl0iCi0tCSRRIGluc3RhbGwgLW0gMDc1NSAtZAkJCQkJCSQoREVTVERJUikkKFBSRUZJWCkvbGliCi0tCSRRIGluc3RhbGwgLW0gMDc1NSBsaWJ3aXJpbmdQaS5hCQkJCQkkKERFU1RESVIpJChQUkVGSVgpL2xpYgotKwkkUSBpbnN0YWxsIC1tIDA3NTUgLWQJCQkJCQkkKExJQl9ESVIpCi0rCSRRIGluc3RhbGwgLW0gMDc1NSAkKFNUQVRJQykJCQkJCSQoTElCX0RJUikKLSAKICAuUEhPTlk6CWluc3RhbGwtZGViCiAgaW5zdGFsbC1kZWI6CSQoRFlOQU1JQykKLUBAIC0xMjksOSArMTMzLDExIEBAIGluc3RhbGwtZGViOgkkKERZTkFNSUMpCitAQCAtMTE3LDkgKzEyMSwxMSBAQCBpbnN0YWxsLWRlYjoJJChEWU5BTUlDKQogIC5QSE9OWToJdW5pbnN0YWxsCiAgdW5pbnN0YWxsOgogIAkkUSBlY2hvICJbVW5JbnN0YWxsXSIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdwaS93aXJpbmdwaV9naXQuYmIgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZGV2dG9vbHMvd2lyaW5ncGkvd2lyaW5ncGlfZ2l0LmJiCmluZGV4IGYxYjAxZGIuLmU3OGM1OGEgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1kZXZ0b29scy93aXJpbmdwaS93aXJpbmdwaV9naXQuYmIKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWRldnRvb2xzL3dpcmluZ3BpL3dpcmluZ3BpX2dpdC5iYgpAQCAtNCw4ICs0LDEwIEBACiBMSUNFTlNFID0gIkxHUEx2MysiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCiAKLSMgdGFnIDIuNDQKLVNSQ1JFViA9ICI5NjM0NGZmNzEyNTE4Mjk4OWY5OGQzYmU4ZDExMTk1MmE4Zjc0ZTE1IgorREVQRU5EUyArPSAidmlydHVhbC9jcnlwdCIKKworIyB0YWcgMi40NgorU1JDUkVWID0gIjhkMTg4ZmEwZTAwYmI4YzZmZjZlZGRkMDdiZjkyODU3ZTliZDUzM2EiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfJS5iYmFwcGVuZCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfJS5iYmFwcGVuZAppbmRleCA3NjkyMTMzLi5jMTUyYmQ5IDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLWZiXyUuYmJhcHBlbmQKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby1mYl8lLmJiYXBwZW5kCkBAIC0xLDIgKzEsMiBAQAogRUdMSU5GT19ERVZJQ0VfcnBpICA9ICJyYXNwYmVycnlwaSIKLUNPTVBBVElCTEVfSE9TVF9ycGkgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAndmM0Z3JhcGhpY3MnLCAnbnVsbCcsICciKC4qKSInLCBkKX0iCitDT01QQVRJQkxFX0hPU1RfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJ251bGwnLCAnKC4qKScsIGQpfSIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfJS5iYmFwcGVuZCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzQzZmIwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV8lLmJiYXBwZW5kCkBAIC0wLDAgKzEsMiBAQAorIyB1c2VybGFuZCBkcml2ZXIgRUdMIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGhhdmUgYWxsIG5lZWRlZCBiaXRzIGZvciBpdCBzbyByZW1vdmUgaXQgZnJvbSBidWlsZAorQ09NUEFUSUJMRV9IT1NUX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcoLiopJywgJ251bGwnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zXyUuYmJhcHBlbmQgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zXyUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE4N2FiOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZGVtb3NfJS5iYmFwcGVuZApAQCAtMCwwICsxLDIgQEAKKyMgbWVzYS1kZW1vcyBuZWVkIGxpYmdsZXMxIGFuZCB1c2VybGFuZCBkcml2ZXIgZG9lcyBub3QgaGF2ZSBpdAorQ09NUEFUSUJMRV9IT1NUX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcoLiopJywgJ251bGwnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXyUuYmJhcHBlbmQgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXyUuYmJhcHBlbmQKaW5kZXggNTJmZTc1Ny4uODE1MmNjMyAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8lLmJiYXBwZW5kCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfJS5iYmFwcGVuZApAQCAtMyw1ICszLDUgQEAKICMgYXMgZGVmYXVsdC4gVG8gc3RhdGUgb3V0IGNsZWFybHkgdGhhdCBSYXNwaSBuZWVkcyBkcmkzIGFuZCB0byBhdm9pZCBzdXJwcmlzZXMKICMgaW4gY2FzZSBvZS1jb3JlIGNoYW5nZXMgdGhpcyBkZWZhdWx0LCB3ZSBzZXQgZHJpMyBleHBsaWNpdGx5LgogUEFDS0FHRUNPTkZJR19hcHBlbmRfcnBpID0gIiBnYWxsaXVtICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICd4MTEgZHJpMycsICcnLCBkKX0iCi1HQUxMSVVNRFJJVkVSU19ycGkgPSAidmM0IgorR0FMTElVTURSSVZFUlNfYXBwZW5kX3JwaSA9ICIsdmM0IgogRFJJRFJJVkVSU19ycGkgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfJS5iYmFwcGVuZCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0XyUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwM2ZkMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0XyUuYmJhcHBlbmQKQEAgLTAsMCArMSw1IEBACisjIG1lc2EtZGVtb3MgbmVlZCBsaWJnbGVzMSBhbmQgdXNlcmxhbmQgZHJpdmVyIGRvZXMgbm90IGhhdmUgaXQgc28gcmVtb3ZlIGl0IGZyb20gcGlnbGl0IHJkZXBzCitSREVQRU5EU18ke1BOfV9yZW1vdmVfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICdtZXNhLWRlbW9zJywgZCl9IgorIyBpdCBuZWVkcyBFR0wgPj0gMTEgYnV0IHVzZXJsYW5kIHNheXMgaXQgcHJvdmlkZWQgdmVyc2lvbiAxMCwgcmVtb3ZlIGl0IGZyb20gYnVpbGQKKyMgfCAtLSAgIFJlcXVlc3RlZCAnZWdsID49IDExLjAnIGJ1dCB2ZXJzaW9uIG9mIEVHTCBpcyAxMAorQ09NUEFUSUJMRV9IT1NUX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcoLiopJywgJ251bGwnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwMS1BbGxvdy1hcHBsaWNhdGlvbnMtdG8tc2V0LW5leHQtcmVzb3VyY2UtaGFuZGxlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDEtQWxsb3ctYXBwbGljYXRpb25zLXRvLXNldC1uZXh0LXJlc291cmNlLWhhbmRsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmIyYWJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDEtQWxsb3ctYXBwbGljYXRpb25zLXRvLXNldC1uZXh0LXJlc291cmNlLWhhbmRsZS5wYXRjaApAQCAtMCwwICsxLDIwOCBAQAorRnJvbSAwOGQ1NmMxMTc0ZTI3NTczYWU4ZGYyYTdiOWU2NjMyYWZkMGJmZTg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRG9tIENvYmxleSA8ZGM0QGJyb2FkY29tLmNvbT4KK0RhdGU6IFR1ZSwgOSBKdWwgMjAxMyAwOToyNjoyNiAtMDQwMAorU3ViamVjdDogW1BBVENIIDAxLzE4XSBBbGxvdyBhcHBsaWNhdGlvbnMgdG8gc2V0IG5leHQgcmVzb3VyY2UgaGFuZGxlCisKK1RoaXMgcGF0Y2ggYWRkcyBwcm92aXNpb25zIGluIHVzZXJsYW5kIHRvCitsZXQgYXBwcyBjYWxsZXJzIHNldCB0aGUgbmV4dCByZW5kZXJlaW5nIGRpc3BtYW54IHJlc291cmNlLgorSXQncyB1c2VmdWwgZm9yIGltcGxlbWVudGluZywgc2F5LCBhIGJ1ZmZlciBjYXJvdXNlbC4KKy0tLQorIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9ycGMuaCB8ICAyICsrCisgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5faW50X2lkcy5oICAgIHwgIDIgKysKKyBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIHwgMjQgKysrKysrKysrKysrKysrKy0KKyBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggfCAgMyArKy0KKyBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmggICAgICAgfCAgNSArKy0tCisgNiBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3JwYy5oIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3JwYy5oCitpbmRleCBkYzQzNTFkLi4xMGVhMDYwIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3JwYy5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmgKK0BAIC02ODUsNiArNjg1LDcgQEAgc3RhdGljIElOTElORSB2b2lkIHJwY19jYWxsMTJfb3V0X2N0cmwoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQsdWludDMyX3QgaWQKKyBzdGF0aWMgSU5MSU5FIHZvaWQgcnBjX2NhbGwxM19vdXRfY3RybChDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZCx1aW50MzJfdCBpZCwgdWludDMyX3QgcDAsIHVpbnQzMl90IHAxLCB1aW50MzJfdCBwMiwgdWludDMyX3QgcDMsIHVpbnQzMl90IHA0LCB1aW50MzJfdCBwNSwgdWludDMyX3QgcDYsIHVpbnQzMl90IHA3LCB1aW50MzJfdCBwOCwgdWludDMyX3QgcDksIHVpbnQzMl90IHAxMCwgdWludDMyX3QgcDExLCB2b2lkICpvdXQpICAgICAgICAgICAgICAgeyBycGNfYmVnaW4odGhyZWFkKTsgUlBDX0NBTEwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExKTsgICAgICBycGNfcmVjdih0aHJlYWQsIG91dCwgTlVMTCwgKFJQQ19SRUNWX0ZMQUdfVCkoUlBDX1JFQ1ZfRkxBR19DVFJMIHwgUlBDX1JFQ1ZfRkxBR19MRU4pKTsgcnBjX2VuZCh0aHJlYWQpOyB9Cisgc3RhdGljIElOTElORSB2b2lkIHJwY19jYWxsMTRfb3V0X2N0cmwoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQsdWludDMyX3QgaWQsIHVpbnQzMl90IHAwLCB1aW50MzJfdCBwMSwgdWludDMyX3QgcDIsIHVpbnQzMl90IHAzLCB1aW50MzJfdCBwNCwgdWludDMyX3QgcDUsIHVpbnQzMl90IHA2LCB1aW50MzJfdCBwNywgdWludDMyX3QgcDgsIHVpbnQzMl90IHA5LCB1aW50MzJfdCBwMTAsIHVpbnQzMl90IHAxMSwgdWludDMyX3QgcDEyLCB2b2lkICpvdXQpIHsgcnBjX2JlZ2luKHRocmVhZCk7IFJQQ19DQUxMKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyKTsgcnBjX3JlY3YodGhyZWFkLCBvdXQsIE5VTEwsIChSUENfUkVDVl9GTEFHX1QpKFJQQ19SRUNWX0ZMQUdfQ1RSTCB8IFJQQ19SRUNWX0ZMQUdfTEVOKSk7IHJwY19lbmQodGhyZWFkKTsgfQorIHN0YXRpYyBJTkxJTkUgdm9pZCBycGNfY2FsbDE1X291dF9jdHJsKENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkLHVpbnQzMl90IGlkLCB1aW50MzJfdCBwMCwgdWludDMyX3QgcDEsIHVpbnQzMl90IHAyLCB1aW50MzJfdCBwMywgdWludDMyX3QgcDQsIHVpbnQzMl90IHA1LCB1aW50MzJfdCBwNiwgdWludDMyX3QgcDcsIHVpbnQzMl90IHA4LCB1aW50MzJfdCBwOSwgdWludDMyX3QgcDEwLCB1aW50MzJfdCBwMTEsIHVpbnQzMl90IHAxMiwgdWludDMyX3QgcDEzLCB2b2lkICpvdXQpIHsgcnBjX2JlZ2luKHRocmVhZCk7IFJQQ19DQUxMKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBwMTMpOyBycGNfcmVjdih0aHJlYWQsIG91dCwgTlVMTCwgKFJQQ19SRUNWX0ZMQUdfVCkoUlBDX1JFQ1ZfRkxBR19DVFJMIHwgUlBDX1JFQ1ZfRkxBR19MRU4pKTsgcnBjX2VuZCh0aHJlYWQpOyB9Cisrc3RhdGljIElOTElORSB2b2lkIHJwY19jYWxsMTZfb3V0X2N0cmwoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQsdWludDMyX3QgaWQsIHVpbnQzMl90IHAwLCB1aW50MzJfdCBwMSwgdWludDMyX3QgcDIsIHVpbnQzMl90IHAzLCB1aW50MzJfdCBwNCwgdWludDMyX3QgcDUsIHVpbnQzMl90IHA2LCB1aW50MzJfdCBwNywgdWludDMyX3QgcDgsIHVpbnQzMl90IHA5LCB1aW50MzJfdCBwMTAsIHVpbnQzMl90IHAxMSwgdWludDMyX3QgcDEyLCB1aW50MzJfdCBwMTMsIHVpbnQzMl90IHAxNCwgdm9pZCAqb3V0KSB7IHJwY19iZWdpbih0aHJlYWQpOyBSUENfQ0FMTCh0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIHAxMiwgcDEzLCBwMTQpOyBycGNfcmVjdih0aHJlYWQsIG91dCwgTlVMTCwgKFJQQ19SRUNWX0ZMQUdfVCkoUlBDX1JFQ1ZfRkxBR19DVFJMIHwgUlBDX1JFQ1ZfRkxBR19MRU4pKTsgcnBjX2VuZCh0aHJlYWQpOyB9CisgI2VuZGlmCisgCisgI2RlZmluZSBSUENfQ0FMTDFfT1VUX0NUUkwoZm4sIHRocmVhZCwgaWQsIG91dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwY19jYWxsMV9vdXRfY3RybCh0aHJlYWQsIGlkLCBvdXQpCitAQCAtNzAyLDYgKzcwMyw3IEBAIHN0YXRpYyBJTkxJTkUgdm9pZCBycGNfY2FsbDE1X291dF9jdHJsKENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkLHVpbnQzMl90IGlkCisgI2RlZmluZSBSUENfQ0FMTDEzX09VVF9DVFJMKGZuLCB0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIG91dCkgICAgICBycGNfY2FsbDEzX291dF9jdHJsKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgb3V0KQorICNkZWZpbmUgUlBDX0NBTEwxNF9PVVRfQ1RSTChmbiwgdGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIG91dCkgcnBjX2NhbGwxNF9vdXRfY3RybCh0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIHAxMiwgb3V0KQorICNkZWZpbmUgUlBDX0NBTEwxNV9PVVRfQ1RSTChmbiwgdGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIHAxMywgb3V0KSBycGNfY2FsbDE1X291dF9jdHJsKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBwMTMsIG91dCkKKysjZGVmaW5lIFJQQ19DQUxMMTZfT1VUX0NUUkwoZm4sIHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBwMTMsIHAxNCwgb3V0KSBycGNfY2FsbDE2X291dF9jdHJsKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBwMTMsIHAxNCwgb3V0KQorIAorICMgaWYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykgIC8vdXNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGtocnBjLmNwcAorIHN0YXRpYyBJTkxJTkUgdWludDMyX3QgcnBjX2NhbGwxX291dF9jdHJsX3JlcyhDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZCx1aW50MzJfdCBpZCwgdm9pZCAqb3V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB1aW50MzJfdCByZXM7IHJwY19iZWdpbih0aHJlYWQpOyBSUENfQ0FMTCh0aHJlYWQsIGlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gcnBjX3JlY3YodGhyZWFkLCBvdXQsIE5VTEwsIChSUENfUkVDVl9GTEFHX1QpKFJQQ19SRUNWX0ZMQUdfUkVTIHwgUlBDX1JFQ1ZfRkxBR19DVFJMIHwgUlBDX1JFQ1ZfRkxBR19MRU4pKTsgcnBjX2VuZCh0aHJlYWQpOyByZXR1cm4gcmVzOyB9CitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5faW50X2lkcy5oIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5faW50X2lkcy5oCitpbmRleCA4Mzc4ZjRhLi5lYzk2MWUwIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5faW50X2lkcy5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9pbnRfaWRzLmgKK0BAIC0zNjcsNiArMzY3LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKyAKKyAjZGVmaW5lIEVHTElOVENSRUFURVNVUkZBQ0VfSUQgICAgICAgICAgICAweDQwMDAKKysjZGVmaW5lIEVHTElOVENSRUFURVNVUkZBQ0VfSURfVjIgICAgICAgICAweDQxMDAKKyAjZGVmaW5lIEVHTElOVENSRUFURUdMRVMxMV9JRCAgICAgICAgICAgICAweDQwMDEKKyAjZGVmaW5lIEVHTElOVENSRUFURUdMRVMyMF9JRCAgICAgICAgICAgICAweDQwMDIKKyAjZGVmaW5lIEVHTElOVENSRUFURVZHX0lEICAgICAgICAgICAgICAgICAweDQwMDMKK0BAIC0zNzcsNiArMzc4LDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI2RlZmluZSBFR0xJTlRNQUtFQ1VSUkVOVF9JRCAgICAgICAgICAgICAgMHg0MDA4CisgI2RlZmluZSBFR0xJTlRGTFVTSEFORFdBSVRfSUQgICAgICAgICAgICAgMHg0MDA5CisgI2RlZmluZSBFR0xJTlRTV0FQQlVGRkVSU19JRCAgICAgICAgICAgICAgMHg0MDBhCisrI2RlZmluZSBFR0xJTlRTV0FQQlVGRkVSU19JRF9WMiAgICAgICAgICAgMHg0MTBhCisgI2RlZmluZSBFR0xJTlRTRUxFQ1RNSVBNQVBfSUQgICAgICAgICAgICAgMHg0MDBiCisgI2RlZmluZSBFR0xJTlRGTFVTSF9JRCAgICAgICAgICAgICAgICAgICAgMHg0MDBjCisgI2RlZmluZSBFR0xJTlRHRVRDT0xPUkRBVEFfSUQgICAgICAgICAgICAgMHg0MDBkCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKK2luZGV4IDlkNjE3YzguLmI4YmIzNzQgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCitAQCAtMTYyLDYgKzE2MiwxNyBAQCBzdGF0aWMgdm9pZCBlZ2xfY3VycmVudF9yZWxlYXNlKENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MsIEVHTF9DVVJSRU5UX1QgKgorIHZvaWQgZWdsX2dsX2ZsdXNoX2NhbGxiYWNrKGJvb2wgd2FpdCk7Cisgdm9pZCBlZ2xfdmdfZmx1c2hfY2FsbGJhY2soYm9vbCB3YWl0KTsKKyAKKysjaW5jbHVkZSAiaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueF90eXBlcy5oIgorKy8qKkhBQ0tIQUNLIC0gZ2l2ZSB1cyB0aGUgYWJpbGl0eSB0byBpbmplY3QgYSBEaXNwbWFuWCAKKysgKiByZXNvdXJjZSBoYW5kbGUgaW50byB0aGUgQ3JlYXRlV2luZG93U3VyZmFjZSBhbmQgCisrICogU3dhcEJ1ZmZlcnMgY2FsbHMgKi8gCisrc3RhdGljIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlOworKworK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNldE5leHRSZXNvdXJjZUhhbmRsZShESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBoYW5kbGUpCisreworKyAgIG5leHRfcmVzb3VyY2VfaGFuZGxlID0gaGFuZGxlOworK30KKysKKyAvKgorIFRPRE86IGRvIGFuIFJQQyBjYWxsIHRvIG1ha2Ugc3VyZSB0aGUgS2hyb25vcyB2bGwgaXMgbG9hZGVkIChhbmQgdGhhdCBpdCBzdGF5cyBsb2FkZWQgdW50aWwgZWdsVGVybWluYXRlKQorIEFsc28gYWZmZWN0cyBnbG9iYWwgaW1hZ2UgKGFuZCBwb3NzaWJseSBvdGhlcnM/KQorQEAgLTY0NCw3ICs2NTUsOCBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9yZXNvdXJjZV9oYW5kbGUpOworIAorICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgeworQEAgLTg4OSw3ICs5MDEsNyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXBtYXBfdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZV90YXJnZXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDApOworIAorICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgeworQEAgLTEwMzEsNyArMTA0Myw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhtYXAsICgoc2VydmVyX2hhbmRsZVswXSA9PSAwKSAmJiAoc2VydmVyX2hhbmRsZVsxXSA9PSAodWludDMyX3QpKC0xKSkpID8gTlVMTCA6IHNlcnZlcl9oYW5kbGUpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4bWFwLCAoKHNlcnZlcl9oYW5kbGVbMF0gPT0gMCkgJiYgKHNlcnZlcl9oYW5kbGVbMV0gPT0gKHVpbnQzMl90KSgtMSkpKSA/IE5VTEwgOiBzZXJ2ZXJfaGFuZGxlLCAwKTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VyZmFjZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraHJuX3BvaW50ZXJfbWFwX2luc2VydCgmcHJvY2Vzcy0+c3VyZmFjZXMsIHByb2Nlc3MtPm5leHRfc3VyZmFjZSwgc3VyZmFjZSkpIHsKK0BAIC0yMzAzLDYgKzIzMTUsMTggQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKKyAKKyAgICAgICAgICAgICAgICB2Y29zX2xvZ190cmFjZSgiZWdsU3dhcEJ1ZmZlcnMgc2VydmVyIGNhbGwiKTsKKyAKKysgICAgICAgICAgICAgICBpZiAobmV4dF9yZXNvdXJjZV9oYW5kbGUpCisrICAgICAgICAgICAgICAgUlBDX0NBTEw3KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCisrICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAorKyAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lEX1YyLAorKyAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPnNlcnZlcmJ1ZmZlciksCisrICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+d2lkdGgpLAorKyAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPmhlaWdodCksCisrICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlKSwKKysgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5zd2FwX2JlaGF2aW9yID09IEVHTF9CVUZGRVJfUFJFU0VSVkVEID8gMSA6IDApLAorKyAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKGtocm5fcGxhdGZvcm1fZ2V0X3dpbmRvd19wb3NpdGlvbihzdXJmYWNlLT53aW4pKSwKKysgICAgICAgICAgICAgICAgICAgICBSUENfSU5UKG5leHRfcmVzb3VyY2VfaGFuZGxlKSk7CisrICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFJQQ19DQUxMNihlZ2xJbnRTd2FwQnVmZmVyc19pbXBsLAorICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICBFR0xJTlRTV0FQQlVGRkVSU19JRCwKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKK2luZGV4IDY4NDZkZmEuLjEyODMyNWUgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworQEAgLTMxNCw3ICszMTQsOCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCisgICAgRUdMZW51bSB0ZXh0dXJlX2Zvcm1hdCwKKyAgICBFR0xlbnVtIHRleHR1cmVfdGFyZ2V0LAorICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwLAorLSAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSkKKysgICBjb25zdCB1aW50MzJfdCAqcGl4bWFwX3NlcnZlcl9oYW5kbGUsCisrICAgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV4dF9yZXNvdXJjZV9oYW5kbGUpCisgeworICAgIEtIUk5fSU1BR0VfRk9STUFUX1QgY29sb3I7CisgICAgS0hSTl9JTUFHRV9GT1JNQVRfVCBkZXB0aDsKK0BAIC00NzMsNiArNDc0LDI3IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKKyAjZW5kaWYKKyAgICAgICAgICB1aW50MzJfdCByZXN1bHRzWzNdOworIAorKyAgICAgICAgIGlmIChuZXh0X3Jlc291cmNlX2hhbmRsZSkKKysgICAgICAgICBSUENfQ0FMTDE2X09VVF9DVFJMKGVnbEludENyZWF0ZVN1cmZhY2VfaW1wbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTElOVENSRUFURVNVUkZBQ0VfSURfVjIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzZXJ2ZXJ3aW4pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoYnVmZmVycyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVCh3aWR0aCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChoZWlnaHQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoY29sb3IpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoZGVwdGgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQobWFzayksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChtdWx0aSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChsYXJnZXN0X3BidWZmZXIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQobWlwbWFwX3RleHR1cmUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoY29uZmlnX2RlcHRoX2JpdHMpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoY29uZmlnX3N0ZW5jaWxfYml0cyksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzZW1fbmFtZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVCh0eXBlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19JTlQobmV4dF9yZXNvdXJjZV9oYW5kbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyk7CisrICAgICAgICAgZWxzZQorICAgICAgICAgIFJQQ19DQUxMMTVfT1VUX0NUUkwoZWdsSW50Q3JlYXRlU3VyZmFjZV9pbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UQ1JFQVRFU1VSRkFDRV9JRCwKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKK2luZGV4IGM5OWQ0NGMuLmI1YmY3MGEgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAorQEAgLTMyMiw3ICszMjIsOCBAQCBleHRlcm4gRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfY3JlYXRlKAorICAgIEVHTGVudW0gdGV4dHVyZV9mb3JtYXQsCisgICAgRUdMZW51bSB0ZXh0dXJlX3RhcmdldCwKKyAgICBFR0xOYXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwKKy0gICBjb25zdCB1aW50MzJfdCAqcGl4bWFwX3NlcnZlcl9oYW5kbGUpOworKyAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSwKKysgICBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBuZXh0X3Jlc291cmNlX2hhbmRsZSk7CisgZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2Zyb21fdmdfaW1hZ2UoCisgICAgVkdJbWFnZSB2Z19oYW5kbGUsCisgICAgRUdMU3VyZmFjZSBuYW1lLAorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaCBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaAoraW5kZXggOGE1NzM0Yy4uNTFiMzU4MCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCitAQCAtNTYsNyArNTYsOCBAQCBGTihpbnQsIGVnbEludENyZWF0ZVN1cmZhY2VfaW1wbCwgKAorICAgIHVpbnQzMl90IGNvbmZpZ19zdGVuY2lsX2JpdHMsCisgICAgdWludDMyX3Qgc2VtLAorICAgIHVpbnQzMl90IHR5cGUsCistICAgdWludDMyX3QgKnJlc3VsdHMpKQorKyAgIHVpbnQzMl90ICpyZXN1bHRzLAorKyAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlKSkKKyAKKyBGTihpbnQsIGVnbEludENyZWF0ZVBidWZmZXJGcm9tVkdJbWFnZV9pbXBsLCAoCisgICAgVkdJbWFnZSB2Z19oYW5kbGUsCitAQCAtMTEwLDcgKzExMSw3IEBAIEZOKHZvaWQsIGVnbEludE1ha2VDdXJyZW50X2ltcGwsICh1aW50MzJfdCBwaWRfMCwgdWludDMyX3QgcGlkXzEsIHVpbnQzMl90IGdsdmVyCisgRk4oaW50LCBlZ2xJbnRGbHVzaEFuZFdhaXRfaW1wbCwgKHVpbnQzMl90IGZsdXNoZ2wsIHVpbnQzMl90IGZsdXNodmcpKQorIEZOKHZvaWQsIGVnbEludEZsdXNoX2ltcGwsICh1aW50MzJfdCBmbHVzaGdsLCB1aW50MzJfdCBmbHVzaHZnKSkKKyAKKy1GTih2b2lkLCBlZ2xJbnRTd2FwQnVmZmVyc19pbXBsLCAoRUdMX1NVUkZBQ0VfSURfVCBzLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHByZXNlcnZlLCB1aW50MzJfdCBwb3NpdGlvbikpCisrRk4odm9pZCwgZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwgKEVHTF9TVVJGQUNFX0lEX1QgcywgdWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCwgdWludDMyX3QgaGFuZGxlLCB1aW50MzJfdCBwcmVzZXJ2ZSwgdWludDMyX3QgcG9zaXRpb24sIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5ld19iYWNrX2J1ZmZlcikpCisgRk4odm9pZCwgZWdsSW50U2VsZWN0TWlwbWFwX2ltcGwsIChFR0xfU1VSRkFDRV9JRF9UIHMsIGludCBsZXZlbCkpCisgCisgRk4odm9pZCwgZWdsSW50R2V0Q29sb3JEYXRhX2ltcGwsIChFR0xfU1VSRkFDRV9JRF9UIHMsIEtIUk5fSU1BR0VfRk9STUFUX1QgZm9ybWF0LCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCBpbnQzMl90IHN0cmlkZSwgdWludDMyX3QgeV9vZmZzZXQsIHZvaWQgKmRhdGEpKQorLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MWNkZTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwMi13YXlsYW5kLUFkZC1zdXBwb3J0LWZvci10aGUtV2F5bGFuZC13aW5zeXMucGF0Y2gKQEAgLTAsMCArMSwxODk4IEBACitGcm9tIGRhNjBhMmEzNGE0OGUyYjMyNGZjZWFlNjA4OTY0ODE0NDg4Y2M4ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUb21ldSBWaXpvc28gPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEuY29tPgorRGF0ZTogVHVlLCAxIE9jdCAyMDEzIDEzOjE5OjIwICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMThdIHdheWxhbmQ6IEFkZCBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5zeXMKKworKiBBZGRzIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSBleHRlbnNpb24KKyogQWRkcyB3YXlsYW5kLWVnbCBsaWJyYXJ5CisqIEFkZHMgd2xfZGlzcG1hbnhfYnVmZmVyIHByb3RvY29sIGV4dGVuc2lvbgorCitUT0RPOiBDaGVjayB0aGF0IHBsYXRmb3JtX2dldF9kaW1lbnNpb25zKCkgcmV0dXJuaW5nIHN3YXBjaGFpbl9jb3VudCA9PSAxIGlzIGNvcnJlY3QKKworVE9ETzogUmVtb3ZlIHRoZSByZXF1aXJlbWVudCBvZiBwYXNzaW5nIGEgdmFsaWQgRGlzcG1hblggZWxlbWVudCBoYW5kbGUgdG8KK3RoZSBTd2FwQnVmZmVycyBhbmQgQ3JlYXRlU3VyZmFjZSBSUEMgY2FsbHMuIFRoaXMgd2lsbCByZW1vdmUgdGhlIG5lZWQgdG8gb3BlbgorYSBEaXNwbWFuWCBkaXNwbGF5IGZyb20gdGhlIGNsaWVudHMuCisKK1RPRE86IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgc2hvdWxkIHByb2JhYmx5IGJlIGRlZmluZWQgaW4gYQorcHJpdmF0ZSBoZWFkZXIgdGhhdCBjYW4gYmUgaW5jbHVkZWQgZnJvbSBFR0wgYW5kIHZjXyogaW5zdGVhZCBvZiBpbgordmNfdmNoaV9kaXNwbWFueC5oCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKworIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArCisgUkVBRE1FLm1kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKKyBidWlsZG1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KKyAuLi4vbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dCAgICAgICAgfCAgIDIgKy0KKyBpbnRlcmZhY2Uva2hyb25vcy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgfCAgNTQgKysrLQorIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jICAgICAgICB8ICAxNSArKworIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oICAgICAgICB8ICAxMCArCisgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oIHwgICAzICsKKyAuLi4va2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaCAgICAgfCAgIDggKworIC4uLi9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oICAgICB8ICAgMyArCisgLi4uL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jIHwgMTE1ICsrKysrKystCisgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jIHwgMjE1ICsrKysrKysrKysrKysrKworIC4uLi9jb21tb24vbGludXgva2hybl93YXlsYW5kLmh9ICAgICAgICAgICAgICB8ICA0NiArLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyAgICAgICAgICAgIHwgIDkyICsrKysrLS0KKyBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jICAgfCAgMTEgKworIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyAgICB8ICA0MiArKy0KKyBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggICAgfCAgMzggKystCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oICAgICAgICAgIHwgICAyICstCisgaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgICAgICAgICAgIHwgMjQ2ICsrKysrKysrKysrKysrKysrKworIGludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oICAgICAgICB8ICAyMyArKworIC4uLi9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaCAgICB8ICA1MyArKysrCisgaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYyAgIHwgIDU5ICsrKysrCisgLi4uL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4gICAgIHwgIDEwICsKKyBpbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgfCAgMjEgKy0KKyBpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54LmggICAgICAgICAgICAgfCAgMTAgKworIGludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jICAgICAgICB8ICA0MiArKysKKyBpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaCAgICAgICAgfCAgMTUgKysKKyBpbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwgICAgICAgICAgICAgICAgfCAxMjMgKysrKysrKysrCisgbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UgICAgICAgICAgICAgICAgIHwgIDcyICsrKysrCisgMzAgZmlsZXMgY2hhbmdlZCwgMTI1NyBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jCisgY29weSBpbnRlcmZhY2Uve3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmggPT4ga2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmh9ICg1NiUpCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBtYWtlZmlsZXMvY21ha2UvV2F5bGFuZC5jbWFrZQorCitkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKK2luZGV4IDYzNTcwZjEuLjE0NTk0MzYgMTAwNjQ0CistLS0gYS8uZ2l0aWdub3JlCisrKysgYi8uZ2l0aWdub3JlCitAQCAtMzAsMyArMzAsNCBAQCBidWlsZC8KKyAqLnB0cworICoucHBtCisgKi5ta3YKKysqfgorZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGNmYzhhZTUuLjY3M2E1YWQgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0yNCw2ICsyNCwxNyBAQCBpbmNsdWRlKG1ha2VmaWxlcy9jbWFrZS9nbG9iYWxfc2V0dGluZ3MuY21ha2UpCisgaW5jbHVkZShtYWtlZmlsZXMvY21ha2UvYXJtLWxpbnV4LmNtYWtlKQorIGluY2x1ZGUobWFrZWZpbGVzL2NtYWtlL3ZtY3MuY21ha2UpCisgCisraWYgKEJVSUxEX1dBWUxBTkQpCisrICAgaW5jbHVkZShtYWtlZmlsZXMvY21ha2UvV2F5bGFuZC5jbWFrZSkKKysKKysgICAjIEZpbmQgV2F5bGFuZCBsaWJyYXJpZXMKKysgICBmaW5kX3BhY2thZ2UoUGtnQ29uZmlnKQorKyAgIHBrZ19jaGVja19tb2R1bGVzKFdBWUxBTkRfQ0xJRU5UIHdheWxhbmQtY2xpZW50IFJFUVVJUkVEKQorKyAgIHBrZ19jaGVja19tb2R1bGVzKFdBWUxBTkRfU0VSVkVSIHdheWxhbmQtc2VydmVyIFJFUVVJUkVEKQorKworKyAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1EQlVJTERfV0FZTEFORCIpCisrZW5kaWYoKQorKworIGVuYWJsZV9sYW5ndWFnZShBU00pCisgCisgIyBHbG9iYWwgaW5jbHVkZSBwYXRocworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXggOTRiOTNiOC4uNTBiOTBiMSAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVBRE1FLm1kCitAQCAtNiwzICs2LDcgQEAgVXNlIGJ1aWxkbWUgdG8gYnVpbGQuIEl0IHJlcXVpcmVzIGNtYWtlIHRvIGJlIGluc3RhbGxlZCBhbmQgYW4gYXJtIGNyb3NzIGNvbXBpbGUKKyBodHRwczovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvdG9vbHMvdHJlZS9tYXN0ZXIvYXJtLWJjbTI3MDgvZ2NjLWxpbmFyby1hcm0tbGludXgtZ251ZWFiaWhmLXJhc3BiaWFuCisgCisgTm90ZSB0aGF0IHRoaXMgcmVwb3NpdG9yeSBkb2VzIG5vdCBjb250YWluIHRoZSBzb3VyY2UgZm9yIHRoZSBlZGlkX3BhcnNlciBhbmQgdmNkYmcgYmluYXJpZXMgZHVlIHRvIGxpY2Vuc2luZyByZXN0cmljdGlvbnMuCisrCisrVG8gYnVpbGQgc3VwcG9ydCBmb3IgdGhlIFdheWxhbmQgd2luc3lzIGluIEVHTCwgZXhlY3V0ZSB0aGUgYnVpbGRtZSBzY3JpcHQgbGlrZSB0aGlzOgorKworKyQgQlVJTERfV0FZTEFORD0xIC4vYnVpbGRtZS4KK2RpZmYgLS1naXQgYS9idWlsZG1lIGIvYnVpbGRtZQoraW5kZXggYjhmZDQ0MC4uYTc4MGJiNiAxMDA3NTUKKy0tLSBhL2J1aWxkbWUKKysrKyBiL2J1aWxkbWUKK0BAIC04LDYgKzgsMTAgQEAgZmkKKyAKKyBCVUlMRFNVQkRJUj1gZWNobyAkQlVJTERUWVBFIHwgdHIgJ1tBLVpdJyAnW2Etel0nYDsKKyAKKytpZiBbIC1uICIkQlVJTERfV0FZTEFORCIgXTsgdGhlbgorKyAgICAgICBXQVlMQU5EX1ZBUlM9Ii1EQlVJTERfV0FZTEFORD1UUlVFIgorK2ZpCisrCisgaWYgWyAiYXJtdjZsIiA9IGBhcmNoYCBdIHx8IFsgImFybXY3bCIgPSBgYXJjaGAgXTsgdGhlbgorIAkjIE5hdGl2ZSBjb21waWxlIG9uIHRoZSBSYXNwYmVycnkgUGkKKyAJbWtkaXIgLXAgYnVpbGQvcmFzcGJlcnJ5LyRCVUlMRFNVQkRJUgorQEAgLTMyLDkgKzM2LDEzIEBAIGVsaWYgWyAiJDEiID0gIi0tbmF0aXZlIiBdOyB0aGVuCisgCW1ha2UgLWogYG5wcm9jYCAkKgorIGVsc2UKKyAJIyBDcm9zcyBjb21waWxlIG9uIGEgbW9yZSBjYXBhYmxlIG1hY2hpbmUKKysJaWYgWyAtbiAiJEJVSUxEX1dBWUxBTkQiIF07IHRoZW4KKysJCSMgVXNlIHdheWxhbmQtc2Nhbm5lciBmcm9tIHRoZSBidWlsZCBwbGF0Zm9ybQorKwkJV0FZTEFORF9WQVJTKz0iIC1EV0FZTEFORF9TQ0FOTkVSX0VYRUNVVEFCTEU6RklMRVBBVEg9L3Vzci9iaW4vd2F5bGFuZC1zY2FubmVyIgorKwlmaQorIAlta2RpciAtcCBidWlsZC9hcm0tbGludXgvJEJVSUxEU1VCRElSCisgCXB1c2hkIGJ1aWxkL2FybS1saW51eC8kQlVJTERTVUJESVIKKy0JY21ha2UgLURDTUFLRV9UT09MQ0hBSU5fRklMRT0uLi8uLi8uLi9tYWtlZmlsZXMvY21ha2UvdG9vbGNoYWlucy9hcm0tbGludXgtZ251ZWFiaWhmLmNtYWtlIC1EQ01BS0VfQlVJTERfVFlQRT0kQlVJTERUWVBFIC4uLy4uLy4uCisrCWNtYWtlIC1EQ01BS0VfVE9PTENIQUlOX0ZJTEU9Li4vLi4vLi4vbWFrZWZpbGVzL2NtYWtlL3Rvb2xjaGFpbnMvYXJtLWxpbnV4LWdudWVhYmloZi5jbWFrZSAtRENNQUtFX0JVSUxEX1RZUEU9JEJVSUxEVFlQRSAkV0FZTEFORF9WQVJTIC4uLy4uLy4uCisgCW1ha2UgLWogYG5wcm9jYAorIAorIAlpZiBbICIkMSIgIT0gIiIgXTsgdGhlbgorZGlmZiAtLWdpdCBhL2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2FwcHMvcmFzcGljYW0vQ01ha2VMaXN0cy50eHQgYi9ob3N0X2FwcGxpY2F0aW9ucy9saW51eC9hcHBzL3Jhc3BpY2FtL0NNYWtlTGlzdHMudHh0CitpbmRleCA0MjYzNmU4Li5kNDdhZDU1IDEwMDY0NAorLS0tIGEvaG9zdF9hcHBsaWNhdGlvbnMvbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dAorKysrIGIvaG9zdF9hcHBsaWNhdGlvbnMvbGludXgvYXBwcy9yYXNwaWNhbS9DTWFrZUxpc3RzLnR4dAorQEAgLTMzLDcgKzMzLDcgQEAgYWRkX2V4ZWN1dGFibGUocmFzcGl2aWR5dXYgICR7Q09NTU9OX1NPVVJDRVN9IFJhc3BpVmlkWVVWLmMpCisgCisgc2V0IChNTUFMX0xJQlMgbW1hbF9jb3JlIG1tYWxfdXRpbCBtbWFsX3ZjX2NsaWVudCkKKyAKKy10YXJnZXRfbGlua19saWJyYXJpZXMocmFzcGlzdGlsbCAke01NQUxfTElCU30gdmNvcyBiY21faG9zdCBicmNtR0xFU3YyIGJyY21FR0wgbSBkbCkKKyt0YXJnZXRfbGlua19saWJyYXJpZXMocmFzcGlzdGlsbCAke01NQUxfTElCU30gdmNvcyBiY21faG9zdCBicmNtR0xFU3YyIGJyY21FR0wgbSBkbCAke1dBWUxBTkRfU0VSVkVSX0xJQlJBUklFU30gJHtXQVlMQU5EX0NMSUVOVF9MSUJSQVJJRVN9KQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXl1diAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXZpZCAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXZpZHl1diAgICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0KQorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL0NNYWtlTGlzdHMudHh0IGIvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKK2luZGV4IDlhZDYxNWIuLjk1YzBlMTEgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKK0BAIC02LDYgKzYsMTIgQEAKKyAjIGhhdmUgcXVpdGUgYSBmZXcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBhbmQgc28gdGhlIG9ubHkgd2F5CisgIyB0byBtYWtlIGl0IHdvcmsgc2VlbXMgdG8gYmUgdG8gaGF2ZSBldmVyeXRoaW5nIHN0YXRpYy4KKyAKKytpZiAoQlVJTERfV0FZTEFORCkKKytpbmNsdWRlX2RpcmVjdG9yaWVzKAorKyAgICR7V0FZTEFORF9TRVJWRVJfSU5DTFVERV9ESVJTfQorKykKKytlbmRpZiAoKQorKworIHNldChFR0xfU09VUkNFCisgICAgZWdsL2VnbF9jbGllbnRfY29uZmlnLmMKKyAgICBlZ2wvZWdsX2NsaWVudF9jb250ZXh0LmMKK0BAIC01NSwxMiArNjEsNTUgQEAgc2V0KENMSUVOVF9TT1VSQ0UKKyAgICBjb21tb24va2hybl9pbnRfaGFzaF9hc20ucworICAgIGNvbW1vbi9raHJuX2NsaWVudF9jYWNoZS5jKQorIAorK3NldChFR0xfTElCUworKyAgIGtocm5fY2xpZW50CisrICAgdmNoaXFfYXJtCisrICAgdmNvcworKyAgIGJjbV9ob3N0KQorKworK2lmIChCVUlMRF9XQVlMQU5EKQorKyAgIHNldChFR0xfU09VUkNFCisrICAgICAgJHtFR0xfU09VUkNFfQorKyAgICAgIGV4dC9lZ2xfd2F5bGFuZC5jCisrICAgICAgY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jKQorKworKyAgIHNldChFR0xfTElCUworKyAgICAgICR7RUdMX0xJQlN9CisrICAgICAgd2F5bGFuZC1jbGllbnQKKysgICAgICB3YXlsYW5kLXNlcnZlcikKKysKKysgICBzZXQoV0FZTEFORF9FR0xfU09VUkNFCisrICAgICAgd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYykKKysKKysgICB3YXlsYW5kX2FkZF9wcm90b2NvbF9zZXJ2ZXIoCisrICAgICAgIEVHTF9TT1VSQ0UKKysgICAgICAgLi4vLi4vaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCisrICAgICAgIGRpc3BtYW54CisrICAgKQorKworKyAgIHdheWxhbmRfYWRkX3Byb3RvY29sX2NsaWVudCgKKysgICAgICAgRUdMX1NPVVJDRQorKyAgICAgICAuLi8uLi9pbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwKKysgICAgICAgZGlzcG1hbngKKysgICApCisrCisrICAgYWRkX2xpYnJhcnkod2F5bGFuZC1lZ2wgJHtTSEFSRUR9ICR7V0FZTEFORF9FR0xfU09VUkNFfSkKKysgICBpbnN0YWxsKFRBUkdFVFMgd2F5bGFuZC1lZ2wgREVTVElOQVRJT04gbGliKQorKworKyAgIGNvbmZpZ3VyZV9maWxlICgid2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4iICJ3YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYyIgQE9OTFkpCisrICAgaW5zdGFsbCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYyIKKysgICAgICAgICAgICBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQorK2VuZGlmICgpCisrCisgYWRkX2xpYnJhcnkoRUdMICR7U0hBUkVEfSAke0VHTF9TT1VSQ0V9KQorIGFkZF9saWJyYXJ5KEdMRVN2MiAke1NIQVJFRH0gJHtHTEVTX1NPVVJDRX0pCisgYWRkX2xpYnJhcnkoT3BlblZHICR7U0hBUkVEfSAke1ZHX1NPVVJDRX0pCisgYWRkX2xpYnJhcnkoV0ZDICR7U0hBUkVEfSAke1dGQ19TT1VSQ0V9KQorIGFkZF9saWJyYXJ5KGtocm5fY2xpZW50ICR7Q0xJRU5UX1NPVVJDRX0pCisgCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEVHTCBQUk9QRVJUSUVTIFNPVkVSU0lPTiAxIFZFUlNJT04gMS4wLjApCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEdMRVN2MiBQUk9QRVJUSUVTIFNPVkVSU0lPTiAyIFZFUlNJT04gMi4wLjApCisrCisgIyBUT0RPIGRvIHdlIG5lZWQgRUdMX3N0YXRpYyBhbmQgR0xFU3YyX3N0YXRpYyBub3cgdGhhdCBraHJuX3N0YXRpYyBleGlzdHM/CisgYWRkX2xpYnJhcnkoRUdMX3N0YXRpYyBTVEFUSUMgJHtFR0xfU09VUkNFfSkKKyBhZGRfbGlicmFyeShHTEVTdjJfc3RhdGljIFNUQVRJQyAke0dMRVNfU09VUkNFfSkKK0BAIC03Miw4ICsxMjEsNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzICguLi8uLi9ob3N0X2FwcGxpY2F0aW9ucy9saW51eC9saWJzL3NtICkKKyBzZXQoVkNTTV9MSUJTIHZjc20pCisgYWRkX2RlZmluaXRpb25zKC1ES0hST05PU19IQVZFX1ZDU00pCisgZW5kaWYoKQorLQorLXRhcmdldF9saW5rX2xpYnJhcmllcyhFR0wga2hybl9jbGllbnQgdmNoaXFfYXJtIHZjb3MgYmNtX2hvc3QgJHtWQ1NNX0xJQlN9IC1sbSkKKyt0YXJnZXRfbGlua19saWJyYXJpZXMoRUdMICR7RUdMX0xJQlN9ICR7VkNTTV9MSUJTfSAtbG0pCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKEdMRVN2MiBFR0wga2hybl9jbGllbnQgdmNvcykKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoV0ZDIEVHTCkKKyB0YXJnZXRfbGlua19saWJyYXJpZXMoT3BlblZHIEVHTCkKK0BAIC04Nyw3ICsxMzUsNyBAQCBhZGRfbGlicmFyeShicmNtR0xFU3YyICR7U0hBUkVEfSAke0dMRVNfU09VUkNFfSkKKyBhZGRfbGlicmFyeShicmNtT3BlblZHICR7U0hBUkVEfSAke1ZHX1NPVVJDRX0pCisgYWRkX2xpYnJhcnkoYnJjbVdGQyAke1NIQVJFRH0gJHtXRkNfU09VUkNFfSkKKyAKKy10YXJnZXRfbGlua19saWJyYXJpZXMoYnJjbUVHTCBraHJuX2NsaWVudCB2Y2hpcV9hcm0gdmNvcyBiY21faG9zdCAke1ZDU01fTElCU30gLWxtKQorK3RhcmdldF9saW5rX2xpYnJhcmllcyhicmNtRUdMICR7RUdMX0xJQlN9ICR7VkNTTV9MSUJTfSAtbG0pCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21HTEVTdjIgYnJjbUVHTCBraHJuX2NsaWVudCB2Y29zKQorIHRhcmdldF9saW5rX2xpYnJhcmllcyhicmNtV0ZDIGJyY21FR0wpCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21PcGVuVkcgYnJjbUVHTCkKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCitpbmRleCBlZjRiYWJkLi5kN2U3OThlIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCitAQCAtNTQsNiArNTQsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI2luY2x1ZGUgImFwcGxpY2F0aW9ucy92bWNzL2tocm9ub3Mva2hyb25vc19zZXJ2ZXIuaCIKKyAjZW5kaWYKKyAKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmgiCisrI2VuZGlmCisrCisgVkNPU19MT0dfQ0FUX1Qga2hybl9jbGllbnRfbG9nID0gVkNPU19MT0dfSU5JVCgia2hybl9jbGllbnQiLCBWQ09TX0xPR19XQVJOKTsKKyAKKyAvKgorQEAgLTE0Miw2ICsxNDYsMTAgQEAgdm9pZCBjbGllbnRfdHJ5X3VubG9hZF9zZXJ2ZXIoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcykKKyBib29sIGNsaWVudF9wcm9jZXNzX3N0YXRlX2luaXQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcykKKyB7CisgICAgaWYgKCFwcm9jZXNzLT5pbml0ZWQpIHsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgICAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IE5VTEw7CisrI2VuZGlmCisrCisgICAgICAgaWYgKCFraHJuX3BvaW50ZXJfbWFwX2luaXQoJnByb2Nlc3MtPmNvbnRleHRzLCA2NCkpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorQEAgLTE5NCw2ICsyMDIsMTMgQEAgYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpCisgICAgICAgfQorICNlbmRpZgorIAorKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrICAgICAgc3RydWN0IHdsX2Rpc3BsYXkgKndsX2Rpc3BsYXkgPSBraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCk7CisrICAgICAgaWYgKHdsX2Rpc3BsYXkpCisrICAgICAgICAgaWYgKCFpbml0X3Byb2Nlc3Nfd2F5bGFuZChwcm9jZXNzKSkKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrI2VuZGlmCisrCisgICAgICAgcHJvY2Vzcy0+aW5pdGVkID0gdHJ1ZTsKKyAgICB9CisgCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAoraW5kZXggODA0MDM5Yi4uNjE1ZjdiNCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAorQEAgLTMxMCw2ICszMTAsMTYgQEAgc3RydWN0IENMSUVOVF9QUk9DRVNTX1NUQVRFIHsKKyAjaWZkZWYgUlBDX0xJQlJBUlkKKyAgICBLSFJPTk9TX1NFUlZFUl9DT05ORUNUSU9OX1Qga2hybl9jb25uZWN0aW9uOworICNlbmRpZgorKworKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrICAgLyogQ2xpZW50LXNpZGUgV2F5bGFuZCBzdGF0ZSAqLworKyAgIHN0cnVjdCB3bF9yZWdpc3RyeSAqd2xfcmVnaXN0cnk7CisrICAgc3RydWN0IHdsX2Rpc3BtYW54ICp3bF9kaXNwbWFueDsKKysgICBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKndsX3F1ZXVlOworKworKyAgIC8qIENvbXBvc2l0b3Itc2lkZSBXYXlsYW5kIHN0YXRlICovCisrICAgc3RydWN0IHdsX2dsb2JhbCAqd2xfZ2xvYmFsOworKyNlbmRpZgorIH07CisgCisgZXh0ZXJuIGJvb2wgY2xpZW50X3Byb2Nlc3Nfc3RhdGVfaW5pdChDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzKTsKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgKK2luZGV4IGIzYzA0ZjQuLmI3YjIxYzUgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9tYW5nbGUuaAorQEAgLTgzLDYgKzgzLDkgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI2RlZmluZSBlZ2xSZWxlYXNlR2xvYmFsSW1hZ2VCUkNNIG1hbmdsZWRfZWdsUmVsZWFzZUdsb2JhbEltYWdlQlJDTQorICNkZWZpbmUgZWdsSW5pdEdsb2JhbEltYWdlQlJDTSBtYW5nbGVkX2VnbEluaXRHbG9iYWxJbWFnZUJSQ00KKyAjZGVmaW5lIGVnbFRlcm1HbG9iYWxJbWFnZUJSQ00gbWFuZ2xlZF9lZ2xUZXJtR2xvYmFsSW1hZ2VCUkNNCisrI2RlZmluZSBlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCBtYW5nbGVkX2VnbEJpbmRXYXlsYW5kRGlzcGxheVdMCisrI2RlZmluZSBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIG1hbmdsZWRfZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTAorKyNkZWZpbmUgZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wgbWFuZ2xlZF9lZ2xRdWVyeVdheWxhbmRCdWZmZXJXTAorIAorIC8qIE9wZW5HTCBFUyAxLjEgYW5kIDIuMCBmdW5jdGlvbnMgKi8KKyAKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaCBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9wbGF0Zm9ybS5oCitpbmRleCAxYzlkYTNhLi43MTVjNjdlIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3BsYXRmb3JtLmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9wbGF0Zm9ybS5oCitAQCAtNDgsNiArNDgsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi92Y29zL2tocm5fY2xpZW50X3BsYXRmb3JtX2ZpbGxlcl92Y29zLmgiCisgI2VuZGlmCisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC0zMjgsNCArMzMyLDggQEAgdHlwZWRlZiBzdHJ1Y3QKKyAKKyB2b2lkICpwbGF0Zm9ybV93ZmNfYm91bmNlX3RocmVhZCh2b2lkICpwYXJhbSk7CisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKytzdHJ1Y3Qgd2xfZGlzcGxheSAqa2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOworKyNlbmRpZgorKworICNlbmRpZiAvLyBLSFJOX0NMSUVOVF9QTEFURk9STV9ICitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3VubWFuZ2xlLmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAoraW5kZXggNGYzY2U0OS4uODRmNmVjMCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAorQEAgLTgzLDYgKzgzLDkgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI3VuZGVmIGVnbFJlbGVhc2VHbG9iYWxJbWFnZUJSQ00KKyAjdW5kZWYgZWdsSW5pdEdsb2JhbEltYWdlQlJDTQorICN1bmRlZiBlZ2xUZXJtR2xvYmFsSW1hZ2VCUkNNCisrI3VuZGVmIGVnbEJpbmRXYXlsYW5kRGlzcGxheVdMCisrI3VuZGVmIGVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wKKysjdW5kZWYgZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wKKyAKKyAvKiBPcGVuR0wgRVMgMS4xIGFuZCAyLjAgZnVuY3Rpb25zICovCisgCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fY2xpZW50X3BsYXRmb3JtX2xpbnV4LmMgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl9jbGllbnRfcGxhdGZvcm1fbGludXguYworaW5kZXggNzEwZDIwZi4uNTBkNjBhNiAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl9jbGllbnRfcGxhdGZvcm1fbGludXguYworQEAgLTM3LDYgKzM3LDExIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICNpbmNsdWRlICJYMTEvWGxpYi5oIgorICNlbmRpZgorIAorKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+CisrI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaCIKKysjZW5kaWYKKysKKyBleHRlcm4gVkNPU19MT0dfQ0FUX1Qga2hybl9jbGllbnRfbG9nOworIAorIGV4dGVybiB2b2lkIHZjX3ZjaGlfa2hyb25vc19pbml0KCk7CitAQCAtNDY0LDEzICs0NjksMzYgQEAgRUdMRGlzcGxheSBraHJuX3BsYXRmb3JtX3NldF9kaXNwbGF5X2lkKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQpCisgCSAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyB9CisgI2Vsc2UKKysKKysjaWZkZWYgQlVJTERfV0FZTEFORAorK3N0YXRpYyBzdHJ1Y3Qgd2xfZGlzcGxheSAqaGFja3lfZGlzcGxheSA9IE5VTEw7CisrI2VuZGlmCisrCisgRUdMRGlzcGxheSBraHJuX3BsYXRmb3JtX3NldF9kaXNwbGF5X2lkKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQpCisgeworICAgIGlmIChkaXNwbGF5X2lkID09IEVHTF9ERUZBVUxUX0RJU1BMQVkpCisgICAgICAgcmV0dXJuIChFR0xEaXNwbGF5KTE7CistICAgZWxzZQorLSAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKysgICBlbHNlIHsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgICAgIHZvaWQgKmZpcnN0X3BvaW50ZXIgPSAqKHZvaWQgKiopIGRpc3BsYXlfaWQ7CisrCisrICAgICAgLyogd2xfZGlzcGxheSBpcyBhIHdsX3Byb3h5LCB3aGljaCBpcyBhIHdsX29iamVjdC4KKysgICAgICAgKiB3bF9vYmplY3QncyBmaXJzdCBlbGVtZW50IHBvaW50cyB0byB0aGUgaW50ZXJmYWNldHlwZS4gKi8KKysgICAgICBpZiAoZmlyc3RfcG9pbnRlciA9PSAmd2xfZGlzcGxheV9pbnRlcmZhY2UpIHsKKysgICAgICAgICBoYWNreV9kaXNwbGF5ID0gKHN0cnVjdCB3bF9kaXNwbGF5KilkaXNwbGF5X2lkOworKyAgICAgICAgIHJldHVybiAoRUdMRGlzcGxheSkxOworKyAgICAgIH0gZWxzZQorKyNlbmRpZgorKyAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKysgICB9CisgfQorKworKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrc3RydWN0IHdsX2Rpc3BsYXkgKmtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKQorK3sKKysgICByZXR1cm4gaGFja3lfZGlzcGxheTsKKyt9CisrI2VuZGlmCisgI2VuZGlmCisgCisgI2lmZGVmIFdBTlRfWAorQEAgLTgwNSwyMiArODMzLDgxIEBAIHN0YXRpYyBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmNoZWNrX2RlZmF1bHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aW4pCisgdm9pZCBwbGF0Zm9ybV9nZXRfZGltZW5zaW9ucyhFR0xEaXNwbGF5IGRweSwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4sCisgICAgICAgdWludDMyX3QgKndpZHRoLCB1aW50MzJfdCAqaGVpZ2h0LCB1aW50MzJfdCAqc3dhcGNoYWluX2NvdW50KQorIHsKKy0gICBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmR3aW4gPSBjaGVja19kZWZhdWx0KHdpbik7CistICAgdmNvc19hc3NlcnQoZHdpbik7CistICAgdmNvc19hc3NlcnQoZHdpbi0+d2lkdGggPCAxPDwxNik7IC8vIHNhbml0eSBjaGVjaworLSAgIHZjb3NfYXNzZXJ0KGR3aW4tPmhlaWdodCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCistICAgKndpZHRoID0gZHdpbi0+d2lkdGg7CistICAgKmhlaWdodCA9IGR3aW4tPmhlaWdodDsKKy0gICAqc3dhcGNoYWluX2NvdW50ID0gMDsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgIGlmKGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKSkgeworKyAgICAgIHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3bF9lZ2xfd2luZG93ID0gKHN0cnVjdCB3bF9lZ2xfd2luZG93Kil3aW47CisrICAgICAgKndpZHRoID0gd2xfZWdsX3dpbmRvdy0+d2lkdGg7CisrICAgICAgKmhlaWdodCA9IHdsX2VnbF93aW5kb3ctPmhlaWdodDsKKysgICAgICAvKiBUaGlzIHNlZW1zIHRvIGJlIHVzZWQgZm9yIHN5bmMnaW5nIHdpdGggdGhlIFZDIG9uIGJ1ZmZlciBjcmVhdGlvbiwgYnV0CisrICAgICAgICAgd2UgYXJlIG1hbmFnaW5nIHRoZW0gb24gdGhlIENQVSBzaWRlICovCisrICAgICAgKnN3YXBjaGFpbl9jb3VudCA9IDE7CisrICAgfSBlbHNlIHsKKysjZW5kaWYKKysgICAgICBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmR3aW4gPSBjaGVja19kZWZhdWx0KHdpbik7CisrICAgICAgdmNvc19hc3NlcnQoZHdpbik7CisrICAgICAgdmNvc19hc3NlcnQoZHdpbi0+d2lkdGggPCAxPDwxNik7IC8vIHNhbml0eSBjaGVjaworKyAgICAgIHZjb3NfYXNzZXJ0KGR3aW4tPmhlaWdodCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCisrICAgICAgKndpZHRoID0gZHdpbi0+d2lkdGg7CisrICAgICAgKmhlaWdodCA9IGR3aW4tPmhlaWdodDsKKysgICAgICAqc3dhcGNoYWluX2NvdW50ID0gMDsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgIH0KKysjZW5kaWYKKyB9CisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKytzdGF0aWMgRElTUE1BTlhfRUxFTUVOVF9IQU5ETEVfVCBjcmVhdGVfZHVtbXlfZWxlbWVudCgpCisreworKyAgIERJU1BNQU5YX0RJU1BMQVlfSEFORExFX1QgZGlzcGxheSA9IHZjX2Rpc3BtYW54X2Rpc3BsYXlfb3BlbigwKTsKKysgICBESVNQTUFOWF9VUERBVEVfSEFORExFX1QgdXBkYXRlID0gdmNfZGlzcG1hbnhfdXBkYXRlX3N0YXJ0KDApOworKyAgIERJU1BNQU5YX0VMRU1FTlRfSEFORExFX1QgZWxlbWVudDsKKysgICBWQ19ESVNQTUFOWF9BTFBIQV9UIGFscGhhID0ge0RJU1BNQU5YX0ZMQUdTX0FMUEhBX0ZJWEVEX0FMTF9QSVhFTFMsIDI1NSwgMH07CisrICAgVkNfUkVDVF9UIHNyY19yZWN0OworKyAgIFZDX1JFQ1RfVCBkc3RfcmVjdDsKKysKKysgICBzcmNfcmVjdC54ID0gMDsKKysgICBzcmNfcmVjdC55ID0gMDsKKysgICBzcmNfcmVjdC53aWR0aCA9IDEgPDwgMTY7CisrICAgc3JjX3JlY3QuaGVpZ2h0ID0gMSA8PCAxNjsKKysKKysgICBkc3RfcmVjdC54ID0gMDsKKysgICBkc3RfcmVjdC55ID0gMDsKKysgICBkc3RfcmVjdC53aWR0aCA9IDE7CisrICAgZHN0X3JlY3QuaGVpZ2h0ID0gMTsKKysKKysgICBlbGVtZW50ID0gdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQodXBkYXRlLCBkaXNwbGF5LCAwLypsYXllciovLCAmZHN0X3JlY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAvKnNyYyovLCAmc3JjX3JlY3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJU1BNQU5YX1BST1RFQ1RJT05fTk9ORSwgJmFscGhhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLypjbGFtcCovLCAwLyp0cmFuc2Zvcm0qLyk7CisrCisrICAgdmNfZGlzcG1hbnhfdXBkYXRlX3N1Ym1pdF9zeW5jKHVwZGF0ZSk7CisrCisrICAgdmNfZGlzcG1hbnhfZGlzcGxheV9jbG9zZShkaXNwbGF5KTsKKysKKysgICByZXR1cm4gZWxlbWVudDsKKyt9CisrI2VuZGlmCisrCisgdWludDMyX3QgcGxhdGZvcm1fZ2V0X2hhbmRsZShFR0xEaXNwbGF5IGRweSwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4pCisgeworLSAgIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqZHdpbiA9IGNoZWNrX2RlZmF1bHQod2luKTsKKy0gICB2Y29zX2Fzc2VydChkd2luKTsKKy0gICB2Y29zX2Fzc2VydChkd2luLT53aWR0aCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCistICAgdmNvc19hc3NlcnQoZHdpbi0+aGVpZ2h0IDwgMTw8MTYpOyAvLyBzYW5pdHkgY2hlY2sKKy0gICByZXR1cm4gZHdpbi0+ZWxlbWVudDsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgIGlmKGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKSkgeworKyAgICAgIHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3bF9lZ2xfd2luZG93ID0gKHN0cnVjdCB3bF9lZ2xfd2luZG93Kil3aW47CisrCisrICAgICAgaWYgKHdsX2VnbF93aW5kb3ctPmR1bW15X2VsZW1lbnQgPT0gUExBVEZPUk1fV0lOX05PTkUpCisrICAgICAgICAgd2xfZWdsX3dpbmRvdy0+ZHVtbXlfZWxlbWVudCA9IGNyZWF0ZV9kdW1teV9lbGVtZW50KCk7CisrCisrICAgICAgcmV0dXJuIHdsX2VnbF93aW5kb3ctPmR1bW15X2VsZW1lbnQ7CisrICAgfSBlbHNlIHsKKysjZW5kaWYKKysgICAgICBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmR3aW4gPSBjaGVja19kZWZhdWx0KHdpbik7CisrICAgICAgdmNvc19hc3NlcnQoZHdpbik7CisrICAgICAgdmNvc19hc3NlcnQoZHdpbi0+d2lkdGggPCAxPDwxNik7IC8vIHNhbml0eSBjaGVjaworKyAgICAgIHZjb3NfYXNzZXJ0KGR3aW4tPmhlaWdodCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCisrICAgICAgcmV0dXJuIGR3aW4tPmVsZW1lbnQ7CisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysgICB9CisrI2VuZGlmCisgfQorIAorICNlbmRpZgorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjBlMWI5ZTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYworQEAgLTAsMCArMSwyMTUgQEAKKysvKgorK0NvcHlyaWdodCAoYykgMjAxMywgUmFzcGJlcnJ5IFBpIEZvdW5kYXRpb24KKytBbGwgcmlnaHRzIHJlc2VydmVkLgorKworK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisrICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisrICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3IgdGhlCisrICAgICAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKysgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysKKytUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisrQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKytXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisrRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisrRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKysoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisrT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKysoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKyovCisrCisrI2RlZmluZSBWQ09TX0xPR19DQVRFR09SWSAoJmtocm5fY2xpZW50X2xvZykKKysKKysjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5oIgorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWRpc3BtYW54LWNsaWVudC1wcm90b2NvbC5oIgorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgiCisrCisrZXh0ZXJuIFZDT1NfTE9HX0NBVF9UIGtocm5fY2xpZW50X2xvZzsKKysKKytzdGF0aWMgdm9pZCBoYW5kbGVfZGlzcG1hbnhfZm9ybWF0KHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbngsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmb3JtYXQpCisreworK30KKysKKytzdGF0aWMgdm9pZCBoYW5kbGVfZGlzcG1hbnhfYWxsb2NhdGVkKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbngsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfYnVmZmVyICp3bF9idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByZXNvdXJjZV9oYW5kbGUpCisreworKyAgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqYnVmZmVyID0gd2xfYnVmZmVyX2dldF91c2VyX2RhdGEod2xfYnVmZmVyKTsKKysKKysgICAgYnVmZmVyLT5wZW5kaW5nX2FsbG9jYXRpb24gPSAwOworKyAgICBidWZmZXItPnJlc291cmNlID0gcmVzb3VyY2VfaGFuZGxlOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2Rpc3BtYW54X2xpc3RlbmVyIGRpc3BtYW54X2xpc3RlbmVyID0geworKyAgICBoYW5kbGVfZGlzcG1hbnhfZm9ybWF0LAorKyAgICBoYW5kbGVfZGlzcG1hbnhfYWxsb2NhdGVkLAorK307CisrCisrc3RhdGljIHZvaWQKKytzeW5jX2NhbGxiYWNrKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHNlcmlhbCkKKyt7CisrICAgaW50ICpkb25lID0gZGF0YTsKKysKKysgICAqZG9uZSA9IDE7CisrCisrICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxsYmFjayk7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgc3luY19saXN0ZW5lciA9IHsKKysgICBzeW5jX2NhbGxiYWNrCisrfTsKKysKKytzdGF0aWMgaW50Cisrcm91bmR0cmlwKENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpCisreworKyAgIHN0cnVjdCB3bF9kaXNwbGF5ICp3bF9kaXNwbGF5ID0ga2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOworKyAgIHN0cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2s7CisrICAgaW50IGRvbmUgPSAwLCByZXQgPSAwOworKworKyAgIGNhbGxiYWNrID0gd2xfZGlzcGxheV9zeW5jKHdsX2Rpc3BsYXkpOworKyAgIHdsX2NhbGxiYWNrX2FkZF9saXN0ZW5lcihjYWxsYmFjaywgJnN5bmNfbGlzdGVuZXIsICZkb25lKTsKKysgICB3bF9wcm94eV9zZXRfcXVldWUoKHN0cnVjdCB3bF9wcm94eSAqKSBjYWxsYmFjaywgcHJvY2Vzcy0+d2xfcXVldWUpOworKyAgIHdoaWxlIChyZXQgIT0gLTEgJiYgIWRvbmUpCisrICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZSh3bF9kaXNwbGF5LCBwcm9jZXNzLT53bF9xdWV1ZSk7CisrCisrICAgaWYgKCFkb25lKQorKyAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworKworKyAgIHJldHVybiByZXQ7CisrfQorKworK2ludCBkb193bF9yb3VuZHRyaXAoKQorK3sKKysgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzID0gQ0xJRU5UX0dFVF9QUk9DRVNTX1NUQVRFKCk7CisrICAgcmV0dXJuIHJvdW5kdHJpcChwcm9jZXNzKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytyZWdpc3RyeV9oYW5kbGVfZ2xvYmFsKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCisrICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBuYW1lLCBjb25zdCBjaGFyICppbnRlcmZhY2UsIHVpbnQzMl90IHZlcnNpb24pCisreworKyAgIHN0cnVjdCB3bF9kaXNwbGF5ICp3bF9kaXNwbGF5ID0ga2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOworKyAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MgPSAoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqKWRhdGE7CisrCisrICAgaWYgKHN0cmNtcChpbnRlcmZhY2UsICJ3bF9kaXNwbWFueCIpID09IDApIHsKKysgICAgICBwcm9jZXNzLT53bF9kaXNwbWFueCA9IHdsX3JlZ2lzdHJ5X2JpbmQocmVnaXN0cnksIG5hbWUsCisrCSAgICAgICAmd2xfZGlzcG1hbnhfaW50ZXJmYWNlLCAxKTsKKysKKysgICAgICB3bF9wcm94eV9zZXRfcXVldWUoKHN0cnVjdCB3bF9wcm94eSAqKSBwcm9jZXNzLT53bF9kaXNwbWFueCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy0+d2xfcXVldWUpOworKyAgICAgIHdsX2Rpc3BtYW54X2FkZF9saXN0ZW5lcihwcm9jZXNzLT53bF9kaXNwbWFueCwgJmRpc3BtYW54X2xpc3RlbmVyLCB3bF9kaXNwbGF5KTsKKysgICAgICByb3VuZHRyaXAocHJvY2Vzcyk7CisrICAgfQorK30KKysKKytzdGF0aWMgdm9pZAorK3JlZ2lzdHJ5X2hhbmRsZV9nbG9iYWxfcmVtb3ZlKHZvaWQgKmRhdGEsIHN0cnVjdCB3bF9yZWdpc3RyeSAqcmVnaXN0cnksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmFtZSkKKyt7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgcmVnaXN0cnlfbGlzdGVuZXIgPSB7CisrCXJlZ2lzdHJ5X2hhbmRsZV9nbG9iYWwsCisrCXJlZ2lzdHJ5X2hhbmRsZV9nbG9iYWxfcmVtb3ZlCisrfTsKKysKKytpbnQKKytpbml0X3Byb2Nlc3Nfd2F5bGFuZChDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzKQorK3sKKysgICAgc3RydWN0IHdsX2Rpc3BsYXkgKndsX2Rpc3BsYXkgPSBraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCk7CisrCisrICAgIHByb2Nlc3MtPndsX3F1ZXVlID0gd2xfZGlzcGxheV9jcmVhdGVfcXVldWUod2xfZGlzcGxheSk7CisrICAgIGlmICghcHJvY2Vzcy0+d2xfcXVldWUpIHsKKysgICAgICAgIHZjb3NfbG9nX2Vycm9yKCJ3bF9kaXNwbGF5X2NyZWF0ZV9xdWV1ZSBmYWlsZWRcbiIpOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcGVuZGluZyh3bF9kaXNwbGF5KTsKKysKKysgICAgcHJvY2Vzcy0+d2xfcmVnaXN0cnkgPSB3bF9kaXNwbGF5X2dldF9yZWdpc3RyeSh3bF9kaXNwbGF5KTsKKysgICAgaWYgKCFwcm9jZXNzLT53bF9yZWdpc3RyeSkgeworKyAgICAgICAgdmNvc19sb2dfZXJyb3IoIndsX2Rpc3BsYXlfZ2V0X3JlZ2lzdHJ5IGZhaWxlZFxuIik7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKysgICAgd2xfcHJveHlfc2V0X3F1ZXVlKChzdHJ1Y3Qgd2xfcHJveHkgKikgcHJvY2Vzcy0+d2xfcmVnaXN0cnksCisrICAgIHByb2Nlc3MtPndsX3F1ZXVlKTsKKysKKysgICAgd2xfcmVnaXN0cnlfYWRkX2xpc3RlbmVyKHByb2Nlc3MtPndsX3JlZ2lzdHJ5LCAmcmVnaXN0cnlfbGlzdGVuZXIsIHByb2Nlc3MpOworKworKyAgICBpZiAocm91bmR0cmlwKHByb2Nlc3MpIDwgMCB8fCBwcm9jZXNzLT53bF9kaXNwbWFueCA9PSBOVUxMKSB7CisrICAgICAgICB2Y29zX2xvZ19lcnJvcigiZmFpbGVkIHRvIGdldCB3bF9kaXNwbWFueFxuIik7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKysgICAgcmV0dXJuIHRydWU7CisrfQorKworKyNpZm5kZWYgQUxJR05fVVAKKysjZGVmaW5lIEFMSUdOX1VQKHgseSkgICgoeCArICh5KS0xKSAmIH4oKHkpLTEpKQorKyNlbmRpZgorKworK3N0YXRpYyB2b2lkIGhhbmRsZV9idWZmZXJfcmVsZWFzZSh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfYnVmZmVyICpidWZmZXJfd2wpCisreworKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICp3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyID0gZGF0YTsKKysgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT5pbl91c2UgPSAwOworK30KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2J1ZmZlcl9saXN0ZW5lciBidWZmZXJfbGlzdGVuZXIgPSB7CisrICAgaGFuZGxlX2J1ZmZlcl9yZWxlYXNlCisrfTsKKysKKytzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqCisrYWxsb2NhdGVfd2xfYnVmZmVyKHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3aW5kb3csIEtIUk5fSU1BR0VfRk9STUFUX1QgY29sb3IpCisreworKyAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MgPSBDTElFTlRfR0VUX1BST0NFU1NfU1RBVEUoKTsKKysgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlcjsKKysgICBzdHJ1Y3Qgd2xfYnVmZmVyICp3bF9idWZmZXI7CisrICAgdWludDMyX3Qgc3RyaWRlID0gQUxJR05fVVAod2luZG93LT53aWR0aCAqIDQsIDE2KTsKKysgICB1aW50MzJfdCBidWZmZXJfaGVpZ2h0ID0gQUxJR05fVVAod2luZG93LT5oZWlnaHQsIDE2KTsKKysgICBlbnVtIHdsX2Rpc3BtYW54X2Zvcm1hdCBjb2xvcl9mb3JtYXQ7CisrICAgaW50IHJldCA9IDA7CisrCisrICAgc3dpdGNoIChjb2xvcikgeworKyAgIGNhc2UgQUJHUl84ODg4OgorKyAgICAgIGNvbG9yX2Zvcm1hdCA9IFdMX0RJU1BNQU5YX0ZPUk1BVF9BQkdSODg4ODsKKysgICAgICBicmVhazsKKysgICBjYXNlIFhCR1JfODg4ODoKKysgICAgICBjb2xvcl9mb3JtYXQgPSBXTF9ESVNQTUFOWF9GT1JNQVRfWEJHUjg4ODg7CisrICAgICAgYnJlYWs7CisrICAgY2FzZSBSR0JfNTY1OgorKyAgICAgIGNvbG9yX2Zvcm1hdCA9IFdMX0RJU1BNQU5YX0ZPUk1BVF9SR0I1NjU7CisrICAgICAgYnJlYWs7CisrICAgZGVmYXVsdDoKKysgICAgICB2Y29zX2xvZ19lcnJvcigidW5rbm93biBLSFJOX0lNQUdFX0ZPUk1BVF9UIDB4JXhcbiIsIGNvbG9yKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysgICB9CisrCisrICAgd2xfYnVmZmVyID0gd2xfZGlzcG1hbnhfY3JlYXRlX2J1ZmZlcihwcm9jZXNzLT53bF9kaXNwbWFueCwgd2luZG93LT53aWR0aCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+aGVpZ2h0LCBzdHJpZGUsIGJ1ZmZlcl9oZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcl9mb3JtYXQpOworKyAgIGlmICh3bF9idWZmZXIgPT0gTlVMTCkKKysgICAgICByZXR1cm4gTlVMTDsKKysKKysgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlcikpOworKyAgIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXItPndsX2J1ZmZlciA9IHdsX2J1ZmZlcjsKKysgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT5pbl91c2UgPSAwOworKyAgIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXItPnBlbmRpbmdfYWxsb2NhdGlvbiA9IDE7CisrICAgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlci0+d2lkdGggPSB3aW5kb3ctPndpZHRoOworKyAgIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXItPmhlaWdodCA9IHdpbmRvdy0+aGVpZ2h0OworKworKyAgIHdsX3Byb3h5X3NldF9xdWV1ZSgoc3RydWN0IHdsX3Byb3h5ICopIHdsX2J1ZmZlciwgcHJvY2Vzcy0+d2xfcXVldWUpOworKyAgIHdsX2J1ZmZlcl9hZGRfbGlzdGVuZXIod2xfYnVmZmVyLCAmYnVmZmVyX2xpc3RlbmVyLCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyKTsKKysKKysgICB3aGlsZSAocmV0ICE9IC0xICYmIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXItPnBlbmRpbmdfYWxsb2NhdGlvbikKKysgICAgICByZXQgPSBkb193bF9yb3VuZHRyaXAoKTsKKysKKysgICByZXR1cm4gd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlcjsKKyt9CitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmgKK3NpbWlsYXJpdHkgaW5kZXggNTYlCitjb3B5IGZyb20gaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKK2NvcHkgdG8gaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5oCitpbmRleCBiNzIzYjc2Li5iOWJmMDhjIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaAorQEAgLTEsNSArMSw1IEBACisgLyoKKy1Db3B5cmlnaHQgKGMpIDIwMTIsIEJyb2FkY29tIEV1cm9wZSBMdGQKKytDb3B5cmlnaHQgKGMpIDIwMTMsIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCisgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAKKyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK0BAIC0yNSw0NSArMjUsOSBAQCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCistI2lmbmRlZiBWQ19WQ0hJX0RJU1BNQU5YX0gKKy0jZGVmaW5lIFZDX1ZDSElfRElTUE1BTlhfSAorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaCIKKyAKKy0jaW5jbHVkZSAiaW50ZXJmYWNlL3BlZXIvdmNfdmNoaV9kaXNwbWFueF9jb21tb24uaCIKKytpbnQgaW5pdF9wcm9jZXNzX3dheWxhbmQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2Vzcyk7CisraW50IGRvX3dsX3JvdW5kdHJpcCgpOworIAorLSNkZWZpbmUgVkNfTlVNX0hPU1RfUkVTT1VSQ0VTIDY0CistI2RlZmluZSBESVNQTUFOWF9NU0dGSUZPX1NJWkUgMTAyNAorLSNkZWZpbmUgRElTUE1BTlhfQ0xJRU5UX05BTUUgTUFLRV9GT1VSQ0MoIkRJU1AiKQorLSNkZWZpbmUgRElTUE1BTlhfTk9USUZZX05BTUUgTUFLRV9GT1VSQ0MoIlVQREgiKQorLQorLS8vT3Igd2l0aCBjb21tYW5kIHRvIGluZGljYXRlIHdlIGRvbid0IG5lZWQgYSByZXNwb25zZQorLSNkZWZpbmUgRElTUE1BTlhfTk9fUkVQTFlfTUFTSyAoMTw8MzEpCistCistdHlwZWRlZiBzdHJ1Y3QgeworLSAgIGNoYXIgICAgIGRlc2NyaXB0aW9uWzMyXTsKKy0gICB1aW50MzJfdCB3aWR0aDsKKy0gICB1aW50MzJfdCBoZWlnaHQ7CistICAgdWludDMyX3QgYXNwZWN0X3BpeHdpZHRoOworLSAgIHVpbnQzMl90IGFzcGVjdF9waXhoZWlnaHQ7CistICAgdWludDMyX3QgZmllbGRyYXRlX251bTsKKy0gICB1aW50MzJfdCBmaWVsZHJhdGVfZGVub207CistICAgdWludDMyX3QgZmllbGRzX3Blcl9mcmFtZTsKKy0gICB1aW50MzJfdCB0cmFuc2Zvcm07ICAgICAgICAKKy19IEdFVF9NT0RFU19EQVRBX1Q7CistCistdHlwZWRlZiBzdHJ1Y3QgeworLSAgIGludDMyX3QgIHJlc3BvbnNlOworLSAgIHVpbnQzMl90IHdpZHRoOworLSAgIHVpbnQzMl90IGhlaWdodDsKKy0gICB1aW50MzJfdCB0cmFuc2Zvcm07CistICAgdWludDMyX3QgaW5wdXRfZm9ybWF0OworLX0gR0VUX0lORk9fREFUQV9UOworLQorLS8vQXR0cmlidXRlcyBjaGFuZ2VzIGZsYWcgbWFzaworLSNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfTEFZRVIgICAgICAgICAgKDE8PDApCistI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9PUEFDSVRZICAgICAgICAoMTw8MSkKKy0jZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX0RFU1RfUkVDVCAgICAgICgxPDwyKQorLSNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfU1JDX1JFQ1QgICAgICAgKDE8PDMpCistI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9NQVNLX1JFU09VUkNFICAoMTw8NCkKKy0jZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX1RSQU5TRk9STSAgICAgICgxPDw1KQorLQorLSNlbmRpZgorK3N0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICphbGxvY2F0ZV93bF9idWZmZXIoc3RydWN0IHdsX2VnbF93aW5kb3cgKndpbmRvdywgS0hSTl9JTUFHRV9GT1JNQVRfVCBjb2xvcik7CitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKK2luZGV4IGI4YmIzNzQuLjAzZmU2N2IgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCitAQCAtMTUzLDYgKzE1MywxMCBAQCBieSBhbiBhdHRyaWJ1dGUgdmFsdWUiCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgiCisrI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaCIKKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfY3IuYyIKKyAKK0BAIC0xNjIsMTcgKzE2Niw2IEBAIHN0YXRpYyB2b2lkIGVnbF9jdXJyZW50X3JlbGVhc2UoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcywgRUdMX0NVUlJFTlRfVCAqCisgdm9pZCBlZ2xfZ2xfZmx1c2hfY2FsbGJhY2soYm9vbCB3YWl0KTsKKyB2b2lkIGVnbF92Z19mbHVzaF9jYWxsYmFjayhib29sIHdhaXQpOworIAorLSNpbmNsdWRlICJpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54X3R5cGVzLmgiCistLyoqSEFDS0hBQ0sgLSBnaXZlIHVzIHRoZSBhYmlsaXR5IHRvIGluamVjdCBhIERpc3BtYW5YIAorLSAqIHJlc291cmNlIGhhbmRsZSBpbnRvIHRoZSBDcmVhdGVXaW5kb3dTdXJmYWNlIGFuZCAKKy0gKiBTd2FwQnVmZmVycyBjYWxscyAqLyAKKy1zdGF0aWMgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV4dF9yZXNvdXJjZV9oYW5kbGU7CistCistRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2V0TmV4dFJlc291cmNlSGFuZGxlKERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIGhhbmRsZSkKKy17CistICAgbmV4dF9yZXNvdXJjZV9oYW5kbGUgPSBoYW5kbGU7CistfQorLQorIC8qCisgVE9ETzogZG8gYW4gUlBDIGNhbGwgdG8gbWFrZSBzdXJlIHRoZSBLaHJvbm9zIHZsbCBpcyBsb2FkZWQgKGFuZCB0aGF0IGl0IHN0YXlzIGxvYWRlZCB1bnRpbCBlZ2xUZXJtaW5hdGUpCisgQWxzbyBhZmZlY3RzIGdsb2JhbCBpbWFnZSAoYW5kIHBvc3NpYmx5IG90aGVycz8pCitAQCAtNDUwLDYgKzQ0Myw5IEBAIEVHTEFQSSBjb25zdCBjaGFyIEVHTEFQSUVOVFJZICogZWdsUXVlcnlTdHJpbmcoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKQorICNpZmRlZiBFR0xfS0hSX2ZlbmNlX3N5bmMKKyAgICAgICAgICAgICAiRUdMX0tIUl9mZW5jZV9zeW5jICIKKyAjZW5kaWYKKysjZW5kaWYKKysjaWYgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5CisrICAgICAgICAgICAgIkVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSAiCisgI2VuZGlmCisgICAgICAgICAgICAgOworICAgICAgICAgIGJyZWFrOworQEAgLTY1NSw4ICs2NTEsNyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfcmVzb3VyY2VfaGFuZGxlKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOworIAorICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgeworQEAgLTkwMSw3ICs4OTYsNyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXBtYXBfdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZV90YXJnZXQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOworIAorICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgeworQEAgLTEwNDMsNyArMTAzOCw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhtYXAsICgoc2VydmVyX2hhbmRsZVswXSA9PSAwKSAmJiAoc2VydmVyX2hhbmRsZVsxXSA9PSAodWludDMyX3QpKC0xKSkpID8gTlVMTCA6IHNlcnZlcl9oYW5kbGUsIDApOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4bWFwLCAoKHNlcnZlcl9oYW5kbGVbMF0gPT0gMCkgJiYgKHNlcnZlcl9oYW5kbGVbMV0gPT0gKHVpbnQzMl90KSgtMSkpKSA/IE5VTEwgOiBzZXJ2ZXJfaGFuZGxlKTsKKyAKKyAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VyZmFjZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraHJuX3BvaW50ZXJfbWFwX2luc2VydCgmcHJvY2Vzcy0+c3VyZmFjZXMsIHByb2Nlc3MtPm5leHRfc3VyZmFjZSwgc3VyZmFjZSkpIHsKK0BAIC0yMjQ1LDYgKzIyNDAsOSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmKQorICAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkOworICAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3M7CisgICAgRUdMQm9vbGVhbiByZXN1bHQ7CisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqd2xfZGlzcGxheSA9IGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKTsKKysjZW5kaWYKKyAKKyAgICB2Y29zX2xvZ190cmFjZSgiZWdsU3dhcEJ1ZmZlcnMgc3RhcnQuIGRweT0lZC4gc3VyZj0lZC4iLCAoaW50KWRweSwgKGludClzdXJmKTsKKyAKK0BAIC0yMzE1LDE4ICsyMzEzLDU4IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmYpCisgCisgICAgICAgICAgICAgICAgdmNvc19sb2dfdHJhY2UoImVnbFN3YXBCdWZmZXJzIHNlcnZlciBjYWxsIik7CisgCistICAgICAgICAgICAgICAgaWYgKG5leHRfcmVzb3VyY2VfaGFuZGxlKQorLSAgICAgICAgICAgICAgIFJQQ19DQUxMNyhlZ2xJbnRTd2FwQnVmZmVyc19pbXBsLAorLSAgICAgICAgICAgICAgICAgICAgIHRocmVhZCwKKy0gICAgICAgICAgICAgICAgICAgICBFR0xJTlRTV0FQQlVGRkVSU19JRF9WMiwKKy0gICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5zZXJ2ZXJidWZmZXIpLAorLSAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPndpZHRoKSwKKy0gICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5oZWlnaHQpLAorLSAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPmludGVybmFsX2hhbmRsZSksCistICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+c3dhcF9iZWhhdmlvciA9PSBFR0xfQlVGRkVSX1BSRVNFUlZFRCA/IDEgOiAwKSwKKy0gICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChraHJuX3BsYXRmb3JtX2dldF93aW5kb3dfcG9zaXRpb24oc3VyZmFjZS0+d2luKSksCistICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChuZXh0X3Jlc291cmNlX2hhbmRsZSkpOworLSAgICAgICAgICAgICAgIGVsc2UKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgICAgICAgICAgICAgIGlmICh3bF9kaXNwbGF5KSB7CisrICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX2VnbF93aW5kb3cgKndsX2VnbF93aW5kb3cgPSBzdXJmYWNlLT53bF9lZ2xfd2luZG93OworKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpidWZmZXJfdGVtcDsKKysgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjb25maWdpZDsKKysgICAgICAgICAgICAgICAgICBLSFJOX0lNQUdFX0ZPUk1BVF9UIGNvbG9yOworKyAgICAgICAgICAgICAgICAgIGludCByZXQgPSAwOworKworKyAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90ZW1wID0gc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyOworKyAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyOworKyAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYnVmZmVyX3RlbXA7CisrCisrICAgICAgICAgICAgICAgICAgY29uZmlnaWQgPSBlZ2xfY29uZmlnX3RvX2lkKHN1cmZhY2UtPmNvbmZpZyk7CisrICAgICAgICAgICAgICAgICAgY29sb3IgPSBlZ2xfY29uZmlnX2dldF9jb2xvcl9mb3JtYXQoY29uZmlnaWQpOworKworKyAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9PSBOVUxMKQorKyAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYWxsb2NhdGVfd2xfYnVmZmVyKHdsX2VnbF93aW5kb3csIGNvbG9yKTsKKysgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+d2lkdGggIT0gd2lkdGggfHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+aGVpZ2h0ICE9IGhlaWdodCkgeworKworKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpidWZmZXI7CisrCisrICAgICAgICAgICAgICAgICAgICAgd2xfYnVmZmVyX2Rlc3Ryb3koc3VyZmFjZS0+YmFja193bF9idWZmZXItPndsX2J1ZmZlcik7CisrICAgICAgICAgICAgICAgICAgICAgZnJlZShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlcik7CisrCisrICAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gYWxsb2NhdGVfd2xfYnVmZmVyKHdsX2VnbF93aW5kb3csIGNvbG9yKTsKKysgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IGJ1ZmZlcjsKKysgICAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgICAgUlBDX0NBTEw3KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCisrICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lEX1YyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPnNlcnZlcmJ1ZmZlciksCisrICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+d2lkdGgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPmhlaWdodCksCisrICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5zd2FwX2JlaGF2aW9yID09IEVHTF9CVUZGRVJfUFJFU0VSVkVEID8gMSA6IDApLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKGtocm5fcGxhdGZvcm1fZ2V0X3dpbmRvd19wb3NpdGlvbihzdXJmYWNlLT53aW4pKSwKKysgICAgICAgICAgICAgICAgICAgICAgICBSUENfSU5UKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5yZXNvdXJjZSkpOworKworKyAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlci0+aW5fdXNlID0gMTsKKysgICAgICAgICAgICAgICAgICB3bF9zdXJmYWNlX2F0dGFjaCh3bF9lZ2xfd2luZG93LT53bF9zdXJmYWNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlci0+d2xfYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOworKyAgICAgICAgICAgICAgICAgIHdsX3N1cmZhY2VfZGFtYWdlKHdsX2VnbF93aW5kb3ctPndsX3N1cmZhY2UsIDAsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+d2lkdGgsIHN1cmZhY2UtPmhlaWdodCk7CisrICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9jb21taXQod2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSk7CisrCisrICAgICAgICAgICAgICAgICAgd2hpbGUocmV0ICE9IC0xICYmIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5pbl91c2UpCisrICAgICAgICAgICAgICAgICAgICAgcmV0ID0gd2xfZGlzcGxheV9kaXNwYXRjaF9xdWV1ZSh3bF9kaXNwbGF5LCBwcm9jZXNzLT53bF9xdWV1ZSk7CisrICAgICAgICAgICAgICAgfSBlbHNlCisrI2VuZGlmCisgICAgICAgICAgICAgICAgUlBDX0NBTEw2KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCisgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lELAorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X2dldF9wcm9jLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jCitpbmRleCA0Y2ZhOWZmLi42YTcxNWFmIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYworKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYworQEAgLTI1NCw2ICsyNTQsMTcgQEAgRUdMQVBJIHZvaWQgRUdMQVBJRU5UUlkgKCogZWdsR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqcHJvY25hbWUpKSh2b2lkKQorICAgICAgIHJldHVybiAodm9pZCgqKSh2b2lkKSllZ2xRdWVyeUdsb2JhbEltYWdlQlJDTTsKKyAjZW5kaWYKKyAKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyNpZiBFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkKKysgICBpZiAoIXN0cmNtcChwcm9jbmFtZSwgImVnbEJpbmRXYXlsYW5kRGlzcGxheVdMIikpCisrICAgICAgcmV0dXJuICh2b2lkKCopKHZvaWQpKWVnbEJpbmRXYXlsYW5kRGlzcGxheVdMOworKyAgIGlmICghc3RyY21wKHByb2NuYW1lLCAiZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTCIpKQorKyAgICAgIHJldHVybiAodm9pZCgqKSh2b2lkKSllZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMOworKyAgIGlmICghc3RyY21wKHByb2NuYW1lLCAiZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wiKSkKKysgICAgICByZXR1cm4gKHZvaWQoKikodm9pZCkpZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0w7CisrI2VuZGlmCisrI2VuZGlmCisrCisgICAgcmV0dXJuICh2b2lkKCopKHZvaWQpKSBOVUxMOworIH0KKyAKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKK2luZGV4IDEyODMyNWUuLjQyMzUwYmYgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworQEAgLTQ2LDYgKzQ2LDExIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgiCisgI2VuZGlmCisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oIgorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmgiCisrI2VuZGlmCisrCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorIAorQEAgLTMxNCw4ICszMTksNyBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCisgICAgRUdMZW51bSB0ZXh0dXJlX2Zvcm1hdCwKKyAgICBFR0xlbnVtIHRleHR1cmVfdGFyZ2V0LAorICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwLAorLSAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSwKKy0gICBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBuZXh0X3Jlc291cmNlX2hhbmRsZSkKKysgICBjb25zdCB1aW50MzJfdCAqcGl4bWFwX3NlcnZlcl9oYW5kbGUpCisgeworICAgIEtIUk5fSU1BR0VfRk9STUFUX1QgY29sb3I7CisgICAgS0hSTl9JTUFHRV9GT1JNQVRfVCBkZXB0aDsKK0BAIC0zMjYsNiArMzMwLDEwIEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKKyAgICBFR0xpbnQgICBjb25maWdfZGVwdGhfYml0czsKKyAgICBFR0xpbnQgICBjb25maWdfc3RlbmNpbF9iaXRzOworICAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkID0gQ0xJRU5UX0dFVF9USFJFQURfU1RBVEUoKTsKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgIHN0cnVjdCB3bF9kaXNwbGF5ICp3bF9kaXNwbGF5ID0ga2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOworKyAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIHJlc291cmNlOworKyNlbmRpZgorIAorICAgIEVHTF9TVVJGQUNFX1QgKnN1cmZhY2UgPSBlZ2xfc3VyZmFjZV9wb29sX2FsbG9jKCk7CisgCitAQCAtMzkwLDYgKzM5OCwxOCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCisgCisgICAgdmNvc19hc3NlcnQoY29sb3IgIT0gSU1BR0VfRk9STUFUX0lOVkFMSUQpOworIAorKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrICAgaWYgKHR5cGUgPT0gV0lORE9XICYmIHdsX2Rpc3BsYXkpIHsKKysgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93ID0gKHN0cnVjdCB3bF9lZ2xfd2luZG93Kil3aW47CisrICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBhbGxvY2F0ZV93bF9idWZmZXIoCisrICAgICAgICAgICAgc3VyZmFjZS0+d2xfZWdsX3dpbmRvdywgY29sb3IpOworKyAgICAgIHJlc291cmNlID0gc3VyZmFjZS0+YmFja193bF9idWZmZXItPnJlc291cmNlOworKyAgIH0gZWxzZSB7CisrICAgICAgc3VyZmFjZS0+d2xfZWdsX3dpbmRvdyA9IE5VTEw7CisrICAgICAgcmVzb3VyY2UgPSBESVNQTUFOWF9OT19IQU5ETEU7CisrICAgfQorKyNlbmRpZgorKworICNpZmRlZiBLSFJPTk9TX0VHTF9QTEFURk9STV9PUEVOV0ZDCisgICAgLy8gQ3JlYXRlIHN0cmVhbSBmb3IgdGhpcyB3aW5kb3cKKyAgICBpZih0eXBlICE9IFBCVUZGRVIpCitAQCAtNDc0LDcgKzQ5NCw4IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKKyAjZW5kaWYKKyAgICAgICAgICB1aW50MzJfdCByZXN1bHRzWzNdOworIAorLSAgICAgICAgIGlmIChuZXh0X3Jlc291cmNlX2hhbmRsZSkKKysjaWZkZWYgQlVJTERfV0FZTEFORAorKyAgICAgICAgIGlmIChyZXNvdXJjZSAhPSBESVNQTUFOWF9OT19IQU5ETEUpCisgICAgICAgICAgUlBDX0NBTEwxNl9PVVRfQ1RSTChlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJTlRDUkVBVEVTVVJGQUNFX0lEX1YyLAorQEAgLTQ5Miw5ICs1MTMsMTAgQEAgRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoY29uZmlnX3N0ZW5jaWxfYml0cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzZW1fbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVCh0eXBlKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19JTlQobmV4dF9yZXNvdXJjZV9oYW5kbGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChyZXNvdXJjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzKTsKKyAgICAgICAgICBlbHNlCisrI2VuZGlmCisgICAgICAgICAgUlBDX0NBTEwxNV9PVVRfQ1RSTChlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJTlRDUkVBVEVTVVJGQUNFX0lELAorQEAgLTY2Myw2ICs2ODUsMTggQEAgdm9pZCBlZ2xfc3VyZmFjZV9mcmVlKEVHTF9TVVJGQUNFX1QgKnN1cmZhY2UpCisgICAgaWYoIHN1cmZhY2UtPnR5cGUgPT0gV0lORE9XICkgeworICAgICAgIHZjb3NfbG9nX3RyYWNlKCJlZ2xfc3VyZmFjZV9mcmVlOiBjYWxsaW5nIHBsYXRmb3JtX2Rlc3Ryb3lfd2luaGFuZGxlLi4uIik7CisgICAgICAgcGxhdGZvcm1fZGVzdHJveV93aW5oYW5kbGUoIHN1cmZhY2UtPndpbiwgc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlICk7CisrCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysgICAgICBpZiAoc3VyZmFjZS0+YmFja193bF9idWZmZXIpIHsKKysgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKKysgICAgICAgICBmcmVlKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyKTsKKysgICAgICB9CisrCisrICAgICAgaWYgKHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlcikgeworKyAgICAgICAgIHdsX2J1ZmZlcl9kZXN0cm95KHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKKysgICAgICAgICBmcmVlKHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlcik7CisrICAgICAgfQorKyNlbmRpZgorICAgIH0KKyAgICAvKiByZXR1cm4gdmFsdWUgaWdub3JlZCAtLSByZWFkIHBlcmZvcm1lZCB0byBlbnN1cmUgYmxvY2tpbmcuIHdlIHdhbnQgdGhpcyB0bworICAgICAqIGJsb2NrIHNvIGNsaWVudHMgY2FuIHNhZmVseSBkZXN0cm95IHRoZSBzdXJmYWNlJ3Mgd2luZG93IGFzIHNvb24gYXMgdGhlCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oCitpbmRleCBiNWJmNzBhLi5lMzI4Yjc3IDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKK0BAIC0yODgsNiArMjg4LDQxIEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgICB0eXBlID09IFBJWE1BUAorICAgICovCisgICAgYm9vbCBzZXJ2ZXJfb3duZWQ7CisrCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKysgICAvKgorKyAgICAgIHdsX2VnbF93aW5kb3cKKysKKysgICAgICBWYWxpZGl0eToKKysgICAgICB0eXBlID09IFdJTkRPVworKworKyAgICAgIEludmFyaWFudDoKKysgICAgICB3YXlsYW5kIEVHTCB3aW5kb3cKKysgICAqLworKyAgIHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3bF9lZ2xfd2luZG93OworKworKyAgIC8qCisrICAgICAgZnJvbnRfd2xfYnVmZmVyCisrCisrICAgICAgVmFsaWRpdHk6CisrICAgICAgdHlwZSA9PSBXSU5ET1cKKysKKysgICAgICBJbnZhcmlhbnQ6CisrICAgICAgY2xpZW50LXNpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdsX2J1ZmZlciBpbiB0aGUgZnJvbnQKKysgICAqLworKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpmcm9udF93bF9idWZmZXI7CisrCisrICAgLyoKKysgICAgICBiYWNrX3dsX2J1ZmZlcgorKworKyAgICAgIFZhbGlkaXR5OgorKyAgICAgIHR5cGUgPT0gV0lORE9XCisrCisrICAgICAgSW52YXJpYW50OgorKyAgICAgIGNsaWVudC1zaWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3bF9idWZmZXIgaW4gdGhlIGJhY2sKKysgICAqLworKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpiYWNrX3dsX2J1ZmZlcjsKKysjZW5kaWYKKyB9IEVHTF9TVVJGQUNFX1Q7CisgCisgZXh0ZXJuIGJvb2wgZWdsX3N1cmZhY2VfY2hlY2tfYXR0cmlicygKK0BAIC0zMjIsOCArMzU3LDcgQEAgZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKKyAgICBFR0xlbnVtIHRleHR1cmVfZm9ybWF0LAorICAgIEVHTGVudW0gdGV4dHVyZV90YXJnZXQsCisgICAgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAsCistICAgY29uc3QgdWludDMyX3QgKnBpeG1hcF9zZXJ2ZXJfaGFuZGxlLAorLSAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlKTsKKysgICBjb25zdCB1aW50MzJfdCAqcGl4bWFwX3NlcnZlcl9oYW5kbGUpOworIGV4dGVybiBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9mcm9tX3ZnX2ltYWdlKAorICAgIFZHSW1hZ2UgdmdfaGFuZGxlLAorICAgIEVHTFN1cmZhY2UgbmFtZSwKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmggYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKK2luZGV4IDUxYjM1ODAuLjY4NjNhM2IgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaAorQEAgLTU3LDcgKzU3LDcgQEAgRk4oaW50LCBlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsICgKKyAgICB1aW50MzJfdCBzZW0sCisgICAgdWludDMyX3QgdHlwZSwKKyAgICB1aW50MzJfdCAqcmVzdWx0cywKKy0gICBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBuZXh0X3Jlc291cmNlX2hhbmRsZSkpCisrICAgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgcmVzb3VyY2VfaGFuZGxlKSkKKyAKKyBGTihpbnQsIGVnbEludENyZWF0ZVBidWZmZXJGcm9tVkdJbWFnZV9pbXBsLCAoCisgICAgVkdJbWFnZSB2Z19oYW5kbGUsCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjU3MzA3NDMKKy0tLSAvZGV2L251bGwKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCitAQCAtMCwwICsxLDI0NiBAQAorKy8qCisrQ29weXJpZ2h0IChjKSAyMDEzLCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgorK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisrCisrUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisrICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisrICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKysgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUKKysgICAgICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworKyAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKworK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKytBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKytESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKytESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKytMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKytPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisrU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisrKi8KKysKKysjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oIgorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmgiCisrCisrI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfa2hyX3N5bmNfY2xpZW50LmgiCisrI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbC5oIgorKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaCIKKysKKysjaW5jbHVkZSAiaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgiCisrCisrI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CisrI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZGlzcG1hbngtc2VydmVyLXByb3RvY29sLmgiCisrCisrc3RhdGljIHZvaWQKKytkZXN0cm95X2J1ZmZlcihzdHJ1Y3Qgd2xfcmVzb3VyY2UgKnJlc291cmNlKQorK3sKKysgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciAqYnVmZmVyID0gd2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSk7CisrCisrICAgaWYoIWJ1ZmZlci0+aW5fdXNlKQorKyAgICAgIHZjX2Rpc3BtYW54X3Jlc291cmNlX2RlbGV0ZShidWZmZXItPmhhbmRsZSk7CisrCisrICAgZnJlZShidWZmZXIpOworK30KKysKKytzdGF0aWMgdm9pZAorK2J1ZmZlcl9kZXN0cm95KHN0cnVjdCB3bF9jbGllbnQgKmNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlICpyZXNvdXJjZSkKKyt7CisrICAgd2xfcmVzb3VyY2VfZGVzdHJveShyZXNvdXJjZSk7CisrfQorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfYnVmZmVyX2ludGVyZmFjZSBkaXNwbWFueF9idWZmZXJfaW50ZXJmYWNlID0geworKyAgIGJ1ZmZlcl9kZXN0cm95CisrfTsKKysKKytzdGF0aWMgVkNfSU1BR0VfVFlQRV9UCisrZ2V0X3ZjX2Zvcm1hdChlbnVtIHdsX2Rpc3BtYW54X2Zvcm1hdCBmb3JtYXQpCisreworKwkvKiBYWFg6IFRoZSBhcHAgaXMgbGlrZWx5IHRvIGhhdmUgYmVlbiBwcmVtdWx0aXBseWluZyBpbiBpdHMgc2hhZGVycywKKysJICogYnV0IHRoZSBWQyBzY2Fub3V0IGhhcmR3YXJlIG9uIHRoZSBSUGkgY2Fubm90IG1peCBwcmVtdWx0aXBsaWVkIGFscGhhCisrCSAqIGNoYW5uZWwgd2l0aCB0aGUgZWxlbWVudCdzIGFscGhhLgorKwkgKi8KKysJc3dpdGNoIChmb3JtYXQpIHsKKysJY2FzZSBXTF9ESVNQTUFOWF9GT1JNQVRfQUJHUjg4ODg6CisrCQlyZXR1cm4gVkNfSU1BR0VfUkdCQTMyOworKwljYXNlIFdMX0RJU1BNQU5YX0ZPUk1BVF9YQkdSODg4ODoKKysJCXJldHVybiBWQ19JTUFHRV9CR1JYODg4ODsKKysJY2FzZSBXTF9ESVNQTUFOWF9GT1JNQVRfUkdCNTY1OgorKwkJcmV0dXJuIFZDX0lNQUdFX1JHQjU2NTsKKysJZGVmYXVsdDoKKysJCS8qIGludmFsaWQgZm9ybWF0ICovCisrCQlyZXR1cm4gVkNfSU1BR0VfTUlOOworKwl9CisrfQorKworK3N0YXRpYyB2b2lkCisrZGlzcG1hbnhfY3JlYXRlX2J1ZmZlcihzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpZCwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzdHJpZGUsIHVpbnQzMl90IGJ1ZmZlcl9oZWlnaHQsIHVpbnQzMl90IGZvcm1hdCkKKyt7CisrICAgc3RydWN0IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgKmJ1ZmZlcjsKKysgICBWQ19JTUFHRV9UWVBFX1QgdmNfZm9ybWF0ID0gZ2V0X3ZjX2Zvcm1hdChmb3JtYXQpOworKyAgIHVpbnQzMl90IGR1bW15OworKworKyAgIGlmKHZjX2Zvcm1hdCA9PSBWQ19JTUFHRV9NSU4pIHsKKysgICAgICB3bF9yZXNvdXJjZV9wb3N0X2Vycm9yKHJlc291cmNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRVJST1JfSU5WQUxJRF9GT1JNQVQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQiKTsKKysgICAgICByZXR1cm47CisrICAgfQorKworKyAgIGJ1ZmZlciA9IGNhbGxvYygxLCBzaXplb2YgKmJ1ZmZlcik7CisrICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CisrICAgICAgd2xfcmVzb3VyY2VfcG9zdF9ub19tZW1vcnkocmVzb3VyY2UpOworKyAgICAgIHJldHVybjsKKysgICB9CisrCisrICAgYnVmZmVyLT5oYW5kbGUgPSB2Y19kaXNwbWFueF9yZXNvdXJjZV9jcmVhdGUodmNfZm9ybWF0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIHwgKHN0cmlkZSA8PCAxNiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IHwgKGJ1ZmZlcl9oZWlnaHQgPDwgMTYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdW1teSk7CisrICAgaWYoYnVmZmVyLT5oYW5kbGUgPT0gRElTUE1BTlhfTk9fSEFORExFKSB7CisrICAgICAgd2xfcmVzb3VyY2VfcG9zdF9lcnJvcihyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0VSUk9SX0FMTE9DX0ZBSUxFRCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGxvY2F0aW9uIGZhaWxlZCIpOworKyAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgICByZXR1cm47CisrICAgfQorKworKyAgIGJ1ZmZlci0+d2lkdGggPSB3aWR0aDsKKysgICBidWZmZXItPmhlaWdodCA9IGhlaWdodDsKKysgICBidWZmZXItPmZvcm1hdCA9IGZvcm1hdDsKKysKKysgICBidWZmZXItPnJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKHJlc291cmNlLT5jbGllbnQsICZ3bF9idWZmZXJfaW50ZXJmYWNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgaWQpOworKyAgIGlmICghYnVmZmVyLT5yZXNvdXJjZSkgeworKyAgICAgIHdsX3Jlc291cmNlX3Bvc3Rfbm9fbWVtb3J5KHJlc291cmNlKTsKKysgICAgICB2Y19kaXNwbWFueF9yZXNvdXJjZV9kZWxldGUoYnVmZmVyLT5oYW5kbGUpOworKyAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgICByZXR1cm47CisrICAgfQorKworKyAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihidWZmZXItPnJlc291cmNlLAorKwkJCQkgICAgICAgKHZvaWQgKCoqKSh2b2lkKSkgJmRpc3BtYW54X2J1ZmZlcl9pbnRlcmZhY2UsCisrCQkJCSAgICAgICBidWZmZXIsIGRlc3Ryb3lfYnVmZmVyKTsKKysKKysgICB3bF9kaXNwbWFueF9zZW5kX2J1ZmZlcl9hbGxvY2F0ZWQocmVzb3VyY2UsIGJ1ZmZlci0+cmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+aGFuZGxlKTsKKyt9CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9kaXNwbWFueF9pbnRlcmZhY2UgZGlzcG1hbnhfaW50ZXJmYWNlID0geworKyAgIGRpc3BtYW54X2NyZWF0ZV9idWZmZXIsCisrfTsKKysKKytzdGF0aWMgdm9pZAorK2JpbmRfZGlzcG1hbngoc3RydWN0IHdsX2NsaWVudCAqY2xpZW50LCB2b2lkICpkYXRhLCB1aW50MzJfdCB2ZXJzaW9uLCB1aW50MzJfdCBpZCkKKyt7CisrICAgc3RydWN0IHdsX3Jlc291cmNlICpyZXNvdXJjZTsKKysKKysgICByZXNvdXJjZSA9IHdsX3Jlc291cmNlX2NyZWF0ZShjbGllbnQsICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsIDEsIGlkKTsKKysgICB3bF9yZXNvdXJjZV9zZXRfaW1wbGVtZW50YXRpb24ocmVzb3VyY2UsICZkaXNwbWFueF9pbnRlcmZhY2UsIE5VTEwsIE5VTEwpOworKworKyAgIHdsX3Jlc291cmNlX3Bvc3RfZXZlbnQocmVzb3VyY2UsIFdMX0RJU1BNQU5YX0ZPUk1BVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0ZPUk1BVF9BUkdCODg4OCk7CisrCisrICAgd2xfcmVzb3VyY2VfcG9zdF9ldmVudChyZXNvdXJjZSwgV0xfRElTUE1BTlhfRk9STUFULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRk9STUFUX1hSR0I4ODg4KTsKKysKKysgICB3bF9yZXNvdXJjZV9wb3N0X2V2ZW50KHJlc291cmNlLCBXTF9ESVNQTUFOWF9GT1JNQVQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBXTF9ESVNQTUFOWF9GT1JNQVRfQUJHUjg4ODgpOworKworKyAgIHdsX3Jlc291cmNlX3Bvc3RfZXZlbnQocmVzb3VyY2UsIFdMX0RJU1BNQU5YX0ZPUk1BVCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0ZPUk1BVF9YQkdSODg4OCk7CisrCisrICAgd2xfcmVzb3VyY2VfcG9zdF9ldmVudChyZXNvdXJjZSwgV0xfRElTUE1BTlhfRk9STUFULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRk9STUFUX1JHQjU2NSk7CisrfQorKworK0VHTEJvb2xlYW4gRUdMQVBJRU5UUlkKKytlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCisreworKyAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkOworKyAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3M7CisrCisrICAgaWYgKCFDTElFTlRfTE9DS19BTkRfR0VUX1NUQVRFUyhkcHksICZ0aHJlYWQsICZwcm9jZXNzKSkKKysgICAgICByZXR1cm4gRUdMX0ZBTFNFOworKworKyAgIGlmIChwcm9jZXNzLT53bF9nbG9iYWwgIT0gTlVMTCkKKysgICAgICBnb3RvIGVycm9yOworKworKyAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheSwgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGJpbmRfZGlzcG1hbngpOworKyAgIGlmIChwcm9jZXNzLT53bF9nbG9iYWwgPT0gTlVMTCkKKysgICAgICBnb3RvIGVycm9yOworKworKyAgIHJldHVybiBFR0xfVFJVRTsKKysKKytlcnJvcjoKKysgICBDTElFTlRfVU5MT0NLKCk7CisrICAgcmV0dXJuIEVHTF9GQUxTRTsKKyt9CisrCisrRUdMQm9vbGVhbiBFR0xBUElFTlRSWQorK2VnbFVuYmluZFdheWxhbmREaXNwbGF5V0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorK3sKKysgICBDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZDsKKysgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzOworKworKyAgIGlmICghQ0xJRU5UX0xPQ0tfQU5EX0dFVF9TVEFURVMoZHB5LCAmdGhyZWFkLCAmcHJvY2VzcykpCisrICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKysKKysgICB3bF9nbG9iYWxfZGVzdHJveShwcm9jZXNzLT53bF9nbG9iYWwpOworKyAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IE5VTEw7CisrCisrICAgQ0xJRU5UX1VOTE9DSygpOworKworKyAgIHJldHVybiBFR0xfVFJVRTsKKyt9CisrCisrc3RhdGljIGludAorK2dldF9lZ2xfZm9ybWF0KGVudW0gd2xfZGlzcG1hbnhfZm9ybWF0IGZvcm1hdCkKKyt7CisrCXN3aXRjaCAoZm9ybWF0KSB7CisrCWNhc2UgV0xfRElTUE1BTlhfRk9STUFUX0FCR1I4ODg4OgorKwkJcmV0dXJuIEVHTF9URVhUVVJFX1JHQkE7CisrCWNhc2UgV0xfRElTUE1BTlhfRk9STUFUX1hCR1I4ODg4OgorKwkJcmV0dXJuIEVHTF9URVhUVVJFX1JHQjsKKysJY2FzZSBXTF9ESVNQTUFOWF9GT1JNQVRfUkdCNTY1OgorKwkJcmV0dXJuIEVHTF9URVhUVVJFX1JHQjsKKysJZGVmYXVsdDoKKysJCS8qIGludmFsaWQgZm9ybWF0ICovCisrCQlyZXR1cm4gRUdMX05PX1RFWFRVUkU7CisrCX0KKyt9CisrCisrRUdMQm9vbGVhbiBFR0xBUElFTlRSWQorK2VnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcldMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKl9idWZmZXIsCisrICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkKKyt7CisrICAgc3RydWN0IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgKmJ1ZmZlciA9IHdsX3Jlc291cmNlX2dldF91c2VyX2RhdGEoX2J1ZmZlcik7CisrCisrICAgaWYgKHdsX3Jlc291cmNlX2luc3RhbmNlX29mKF9idWZmZXIsICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkaXNwbWFueF9idWZmZXJfaW50ZXJmYWNlKSkKKysgICAgICByZXR1cm4gRUdMX0ZBTFNFOworKworKyAgIHN3aXRjaCAoYXR0cmlidXRlKSB7CisrICAgY2FzZSBFR0xfVEVYVFVSRV9GT1JNQVQ6CisrICAgICAgKnZhbHVlID0gZ2V0X2VnbF9mb3JtYXQoYnVmZmVyLT5mb3JtYXQpOworKyAgICAgIGlmICgqdmFsdWUgPT0gRUdMX05PX1RFWFRVUkUpCisrICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKysgICAgICByZXR1cm4gRUdMX1RSVUU7CisrICAgY2FzZSBFR0xfV0lEVEg6CisrICAgICAgKnZhbHVlID0gYnVmZmVyLT53aWR0aDsKKysgICAgICByZXR1cm4gRUdMX1RSVUU7CisrICAgY2FzZSBFR0xfSEVJR0hUOgorKyAgICAgICp2YWx1ZSA9IGJ1ZmZlci0+aGVpZ2h0OworKyAgICAgIHJldHVybiBFR0xfVFJVRTsKKysgICB9CisrCisrICAgcmV0dXJuIEVHTF9GQUxTRTsKKyt9CitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmggYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAoraW5kZXggODlhMzM2OS4uZDdlNWJhNyAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAorQEAgLTE5MSw2ICsxOTEsMjkgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQktIUlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUcKKyAjZW5kaWYKKyAKKyAKKysjaWZuZGVmIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheQorKyNkZWZpbmUgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5IDEKKysKKysjZGVmaW5lIEVHTF9XQVlMQU5EX0JVRkZFUl9XTAkJMHgzMUQ1IC8qIGVnbENyZWF0ZUltYWdlS0hSIHRhcmdldCAqLworKyNkZWZpbmUgRUdMX1dBWUxBTkRfUExBTkVfV0wJCTB4MzFENiAvKiBlZ2xDcmVhdGVJbWFnZUtIUiB0YXJnZXQgKi8KKysjZGVmaW5lIEVHTF9URVhUVVJFX1lfVV9WX1dMICAgICAgICAgICAgMHgzMUQ3CisrI2RlZmluZSBFR0xfVEVYVFVSRV9ZX1VWX1dMICAgICAgICAgICAgIDB4MzFEOAorKyNkZWZpbmUgRUdMX1RFWFRVUkVfWV9YVVhWX1dMICAgICAgICAgICAweDMxRDkKKysKKytzdHJ1Y3Qgd2xfZGlzcGxheTsKKytzdHJ1Y3Qgd2xfcmVzb3VyY2U7CisrI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUworK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEJpbmRXYXlsYW5kRGlzcGxheVdMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSk7CisrRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpOworK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcldMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKmJ1ZmZlciwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisrI2VuZGlmCisrdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMQklORFdBWUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpOworK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFVOQklORFdBWUxBTkRESVNQTEFZV0wpIChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpOworK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZV0FZTEFOREJVRkZFUldMKSAoRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKKysKKysjZW5kaWYKKysKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGUzOGQzNgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oCitAQCAtMCwwICsxLDUzIEBACisrLyogQ29waWVkIGZyb20gTWVzYSAqLworKworKyNpZm5kZWYgX1dBWUxBTkRfRUdMX1BSSVZfSAorKyNkZWZpbmUgX1dBWUxBTkRfRUdMX1BSSVZfSAorKworKyNpZmRlZiAgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKysKKysvKiBHQ0MgdmlzaWJpbGl0eSAqLworKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+PSA0CisrI2RlZmluZSBXTF9FR0xfRVhQT1JUIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKQorKyNlbHNlCisrI2RlZmluZSBXTF9FR0xfRVhQT1JUCisrI2VuZGlmCisrCisrI2luY2x1ZGUgImludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaCIKKysjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oIgorKworKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgorKworK3N0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyIHsKKysJc3RydWN0IHdsX2J1ZmZlciAqd2xfYnVmZmVyOworKwlESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCByZXNvdXJjZTsKKysKKysJaW50IHBlbmRpbmdfYWxsb2NhdGlvbjsKKysJaW50IGluX3VzZTsKKysJaW50IHdpZHRoOworKwlpbnQgaGVpZ2h0OworK307CisrCisrc3RydWN0IHdsX2VnbF93aW5kb3cgeworKwlzdHJ1Y3Qgd2xfc3VyZmFjZSAqd2xfc3VyZmFjZTsKKysKKysJaW50IHdpZHRoOworKwlpbnQgaGVpZ2h0OworKwlpbnQgZHg7CisrCWludCBkeTsKKysKKysJaW50IGF0dGFjaGVkX3dpZHRoOworKwlpbnQgYXR0YWNoZWRfaGVpZ2h0OworKworKwkvKiBYWFg6IFRoZSBWQyBzaWRlIHNlZW1zIHRvIGV4cGVjdCBhIHZhbGlkIGVsZW1lbnQgaGFuZGxlIHRvIGJlCisrCSAgIHBhc3NlZCB0byBlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwgYW5kL29yIGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCisrCSAgIGV2ZW4gZm9yIGhvc3QtbWFuYWdlZCBzdXJmYWNlcy4gKi8KKysJRElTUE1BTlhfRUxFTUVOVF9IQU5ETEVfVCBkdW1teV9lbGVtZW50OworK307CisrCisrI2lmZGVmICBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5jIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI4ZjA1MGIKKy0tLSAvZGV2L251bGwKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBDb3BpZWQgZnJvbSBNZXNhICovCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgorKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorKyNpbmNsdWRlICJ3YXlsYW5kLWVnbC1wcml2LmgiCisrCisrV0xfRUdMX0VYUE9SVCB2b2lkCisrd2xfZWdsX3dpbmRvd19yZXNpemUoc3RydWN0IHdsX2VnbF93aW5kb3cgKmVnbF93aW5kb3csCisrCQkgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwKKysJCSAgICAgaW50IGR4LCBpbnQgZHkpCisreworKyAgICAgICAgaWYgKGVnbF93aW5kb3ctPndpZHRoID09IHdpZHRoICYmCisrCSAgICBlZ2xfd2luZG93LT5oZWlnaHQgPT0gaGVpZ2h0ICYmCisrCSAgICBlZ2xfd2luZG93LT5keCA9PSBkeCAmJgorKwkgICAgZWdsX3dpbmRvdy0+ZHkgPT0gZHkpCisrCQlyZXR1cm47CisrCisrCWVnbF93aW5kb3ctPndpZHRoID0gd2lkdGg7CisrCWVnbF93aW5kb3ctPmhlaWdodCA9IGhlaWdodDsKKysJZWdsX3dpbmRvdy0+ZHggPSBkeDsKKysJZWdsX3dpbmRvdy0+ZHkgPSBkeTsKKyt9CisrCisrV0xfRUdMX0VYUE9SVCBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqCisrd2xfZWdsX3dpbmRvd19jcmVhdGUoc3RydWN0IHdsX3N1cmZhY2UgKnN1cmZhY2UsCisrCQkgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCkKKyt7CisrCXN0cnVjdCB3bF9lZ2xfd2luZG93ICplZ2xfd2luZG93OworKworKwllZ2xfd2luZG93ID0gY2FsbG9jKDEsIHNpemVvZiAqZWdsX3dpbmRvdyk7CisrCWlmICghZWdsX3dpbmRvdykKKysJCXJldHVybiBOVUxMOworKworKwllZ2xfd2luZG93LT53bF9zdXJmYWNlID0gc3VyZmFjZTsKKysJd2xfZWdsX3dpbmRvd19yZXNpemUoZWdsX3dpbmRvdywgd2lkdGgsIGhlaWdodCwgMCwgMCk7CisrCWVnbF93aW5kb3ctPmF0dGFjaGVkX3dpZHRoICA9IDA7CisrCWVnbF93aW5kb3ctPmF0dGFjaGVkX2hlaWdodCA9IDA7CisrCWVnbF93aW5kb3ctPmR1bW15X2VsZW1lbnQgPSBQTEFURk9STV9XSU5fTk9ORTsKKysKKysJcmV0dXJuIGVnbF93aW5kb3c7CisrfQorKworK1dMX0VHTF9FWFBPUlQgdm9pZAorK3dsX2VnbF93aW5kb3dfZGVzdHJveShzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqZWdsX3dpbmRvdykKKyt7CisrCWZyZWUoZWdsX3dpbmRvdyk7CisrfQorKworK1dMX0VHTF9FWFBPUlQgdm9pZAorK3dsX2VnbF93aW5kb3dfZ2V0X2F0dGFjaGVkX3NpemUoc3RydWN0IHdsX2VnbF93aW5kb3cgKmVnbF93aW5kb3csCisrCQkJCWludCAqd2lkdGgsIGludCAqaGVpZ2h0KQorK3sKKysJaWYgKHdpZHRoKQorKwkJKndpZHRoID0gZWdsX3dpbmRvdy0+YXR0YWNoZWRfd2lkdGg7CisrCWlmIChoZWlnaHQpCisrCQkqaGVpZ2h0ID0gZWdsX3dpbmRvdy0+YXR0YWNoZWRfaGVpZ2h0OworK30KK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbiBiL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGJhZmMxNQorLS0tIC9kZXYvbnVsbAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KK0BAIC0wLDAgKzEsMTAgQEAKKytwcmVmaXg9QENNQUtFX0lOU1RBTExfUFJFRklYQAorK2V4ZWNfcHJlZml4PSR7cHJlZml4fQorK2xpYmRpcj0ke2V4ZWNfcHJlZml4fS9saWIKKytpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlCisrCisrTmFtZTogd2F5bGFuZC1lZ2wKKytEZXNjcmlwdGlvbjogVmlkZW9Db3JlIHdheWxhbmQtZWdsIGxpYnJhcnkKKytWZXJzaW9uOiBAUFJPSkVDVF9BUElWRVJACisrTGliczogLUwke2xpYmRpcn0gLWx3YXlsYW5kLWVnbAorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dCBiL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKK2luZGV4IGZkZTE4ZGEuLjY3MTgyMTUgMTAwNzU1CistLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0CisrKysgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0CitAQCAtOSwxMyArOSwyNCBAQCBhZGRfZGVmaW5pdGlvbnMoLWZuby1zdHJpY3QtYWxpYXNpbmcpCisgCisgaW5jbHVkZV9kaXJlY3Rvcmllcygke1ZNQ1NfVEFSR0VUfS92Y2ZpbGVkKQorIAorLWFkZF9saWJyYXJ5KHZjaG9zdGlmCistICAgICAgICAgICAgJHtWTUNTX1RBUkdFVH0vdmNmaWxlc3lzLmMgJHtWTUNTX1RBUkdFVH0vdmNtaXNjLmMKKy0gICAgICAgICAgICB2Y192Y2hpX2dlbmNtZC5jIHZjX3ZjaGlfZmlsZXN5cy5jIHZjX3ZjaGlfZ3B1c2Vydi5jCistICAgICAgICAgICAgdmNfdmNoaV90dnNlcnZpY2UuYyB2Y192Y2hpX2NlY3NlcnZpY2UuYworLSAgICAgICAgICAgIHZjX3ZjaGlfZGlzcG1hbnguYyB2Y19zZXJ2aWNlX2NvbW1vbi5jKQorK3NldChWQ0hPU1RJRl9TT1VSQ0UKKysgICAgJHtWTUNTX1RBUkdFVH0vdmNmaWxlc3lzLmMgJHtWTUNTX1RBUkdFVH0vdmNtaXNjLmMKKysgICAgdmNfdmNoaV9nZW5jbWQuYyB2Y192Y2hpX2ZpbGVzeXMuYyB2Y192Y2hpX2dwdXNlcnYuYworKyAgICB2Y192Y2hpX3R2c2VydmljZS5jIHZjX3ZjaGlfY2Vjc2VydmljZS5jCisrICAgIHZjX3ZjaGlfZGlzcG1hbnguYyB2Y19zZXJ2aWNlX2NvbW1vbi5jKQorICMgICAgICAgICAgICAke1ZNQ1NfVEFSR0VUfS92bWNzX21haW4uYworICMgIHZjX3ZjaGlfaGF1ZC5jCisrCisraWYgKEJVSUxEX1dBWUxBTkQpCisrd2F5bGFuZF9hZGRfcHJvdG9jb2xfc2VydmVyKAorKyAgICBWQ0hPU1RJRl9TT1VSQ0UKKysgICAgLi4vLi4vaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCisrICAgIGRpc3BtYW54CisrKQorK2VuZGlmICgpCisrCisrYWRkX2xpYnJhcnkodmNob3N0aWYgJHtWQ0hPU1RJRl9TT1VSQ0V9KQorKworICNhZGRfbGlicmFyeShidWZtYW4gICAgICAgICAgICB2Y192Y2hpX2J1Zm1hbi5jICAgICAgICAgICAgKQorIAorICMgT3Blbk1BWC9JTCBjb21wb25lbnQgc2VydmljZQorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaCBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAoraW5kZXggMzdmZGFlMS4uZmUzNjE5YSAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAorKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueC5oCitAQCAtMzksNiArMzksMTEgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCisrCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKytzdHJ1Y3Qgd2xfcmVzb3VyY2U7CisrI2VuZGlmCisrCisgLy8gU2FtZSBmdW5jdGlvbiBhcyBhYm92ZSwgdG8gYWlkIG1pZ3JhdGlvbiBvZiBjb2RlLgorIFZDSFBSRV8gaW50IFZDSFBPU1RfIHZjX2Rpc3BtYW5faW5pdCggdm9pZCApOworIC8vIFN0b3AgdGhlIHNlcnZpY2UgZnJvbSBiZWluZyB1c2VkCitAQCAtMTM1LDYgKzE0MCwxMSBAQCBWQ0hQUkVfIGludCBWQ0hQT1NUXyB2Y19kaXNwbWFueF9yZXNvdXJjZV9zZXRfcGFsZXR0ZSggRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFXworIC8vIFN0YXJ0IHRyaWdnZXJpbmcgY2FsbGJhY2tzIHN5bmNlZCB0byB2c3luYworIFZDSFBSRV8gaW50IFZDSFBPU1RfIHZjX2Rpc3BtYW54X3ZzeW5jX2NhbGxiYWNrKCBESVNQTUFOWF9ESVNQTEFZX0hBTkRMRV9UIGRpc3BsYXksIERJU1BNQU5YX0NBTExCQUNLX0ZVTkNfVCBjYl9mdW5jLCB2b2lkICpjYl9hcmcgKTsKKyAKKysjaWZkZWYgQlVJTERfV0FZTEFORAorK1ZDSFBSRV8gRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgVkNIUE9TVF8gdmNfZGlzcG1hbnhfZ2V0X2hhbmRsZV9mcm9tX3dsX2J1ZmZlciggc3RydWN0IHdsX3Jlc291cmNlICpfYnVmZmVyICk7CisrCisrVkNIUFJFXyB2b2lkIFZDSFBPU1RfIHZjX2Rpc3BtYW54X3NldF93bF9idWZmZXJfaW5fdXNlKCBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKl9idWZmZXIsIGludCBpbl91c2UgKTsKKysjZW5kaWYKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYworaW5kZXggN2E2Y2RjZC4uZWFiMTQ2ZSAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCisrKysgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYworQEAgLTEzMTksMyArMTMxOSw0NSBAQCBzdGF0aWMgdm9pZCAqZGlzcG1hbnhfbm90aWZ5X2Z1bmMoIHZvaWQgKmFyZyApIHsKKyAgICB9CisgICAgcmV0dXJuIDA7CisgfQorKworKworKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogTmFtZTogdmNfZGlzcG1hbnhfZ2V0X2hhbmRsZV9mcm9tX3dsX2J1ZmZlcgorKyAqCisrICogQXJndW1lbnRzOgorKyAqICAgICAgIHN0cnVjdCB3bF9yZXNvdXJjZSAqX2J1ZmZlcgorKyAqCisrICogRGVzY3JpcHRpb246IFJldHVybiB0aGUgaGFuZGxlIG9mIHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkIHRvIHRoaXMgV2F5bGFuZCBidWZmZXIKKysgKgorKyAqIFJldHVybnM6IEEgcmVzb3VyY2UgaGFuZGxlCisrICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrVkNIUFJFXyBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBWQ0hQT1NUXyB2Y19kaXNwbWFueF9nZXRfaGFuZGxlX2Zyb21fd2xfYnVmZmVyKCBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKl9idWZmZXIgKQorK3sKKysJc3RydWN0IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgKmJ1ZmZlciA9IChzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciopX2J1ZmZlci0+ZGF0YTsKKysJaWYgKCFidWZmZXIpCisrCQlyZXR1cm4gRElTUE1BTlhfTk9fSEFORExFOworKworKwlyZXR1cm4gYnVmZmVyLT5oYW5kbGU7CisrfQorKworKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqIE5hbWU6IHZjX2Rpc3BtYW54X3NldF93bF9idWZmZXJfaW5fdXNlCisrICoKKysgKiBBcmd1bWVudHM6CisrICogICAgICAgc3RydWN0IHdsX3Jlc291cmNlICpfYnVmZmVyCisrICogICAgICAgaW50IGluX3VzZQorKyAqCisrICogRGVzY3JpcHRpb246IE1hcmsgdGhpcyBXYXlsYW5kIGJ1ZmZlciBhcyBiZWluZyBpbiB1c2UgYnkgdGhlIGNvbXBvc2l0b3IKKysgKgorKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKytWQ0hQUkVfIHZvaWQgVkNIUE9TVF8gdmNfZGlzcG1hbnhfc2V0X3dsX2J1ZmZlcl9pbl91c2UoIHN0cnVjdCB3bF9yZXNvdXJjZSAqX2J1ZmZlciwgaW50IGluX3VzZSApCisreworKwlzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciAqYnVmZmVyID0gKHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyKilfYnVmZmVyLT5kYXRhOworKwlpZiAoIWJ1ZmZlcikKKysJCXJldHVybjsKKysKKysJYnVmZmVyLT5pbl91c2UgPSBpbl91c2U7CisrfQorKyNlbmRpZgorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKK2luZGV4IGI3MjNiNzYuLmYwYmFlMzAgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAorKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKK0BAIC02Niw0ICs2NiwxOSBAQCB0eXBlZGVmIHN0cnVjdCB7CisgI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9NQVNLX1JFU09VUkNFICAoMTw8NCkKKyAjZGVmaW5lIEVMRU1FTlRfQ0hBTkdFX1RSQU5TRk9STSAgICAgICgxPDw1KQorIAorKyNpZmRlZiBCVUlMRF9XQVlMQU5ECisrLyogWFhYOiBUaGlzIHNob3VsZCBiZSBpbiBhIHByaXZhdGUgaGVhZGVyIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGZyb20gRUdMIGFuZCB2Y18qICovCisrI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CisrI2luY2x1ZGUgImludGVyZmFjZS92bWNzX2hvc3Qvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaCIKKytzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciB7CisrCXN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2U7CisrCXN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbng7CisrCWVudW0gd2xfZGlzcG1hbnhfZm9ybWF0IGZvcm1hdDsKKysJRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgaGFuZGxlOworKwlpbnQzMl90IHdpZHRoOworKwlpbnQzMl90IGhlaWdodDsKKysJaW50IGluX3VzZTsKKyt9OworKyNlbmRpZgorKworICNlbmRpZgorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbCBiL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmMxODYyNmQKKy0tLSAvZGV2L251bGwKKysrKyBiL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAorQEAgLTAsMCArMSwxMjMgQEAKKys8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorKzxwcm90b2NvbCBuYW1lPSJkaXNwbWFueCI+CisrCisrICA8Y29weXJpZ2h0PgorKyAgICBDb3B5cmlnaHQgwqkgMjAwOC0yMDExIEtyaXN0aWFuIEjDuGdzYmVyZworKyAgICBDb3B5cmlnaHQgwqkgMjAxMC0yMDExIEludGVsIENvcnBvcmF0aW9uCisrICAgIENvcHlyaWdodCDCqSAyMDEzIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCisrCisrICAgIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMKKysgICAgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZAorKyAgICB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdFxuIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbgorKyAgICBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24KKysgICAgbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCisrICAgIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkKKysgICAgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsCisrICAgIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBtYWtlIG5vCisrICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CisrICAgIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisrICAgIHdhcnJhbnR5LgorKworKyAgICBUSEUgQ09QWVJJR0hUIEhPTERFUlMgRElTQ0xBSU0gQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUworKyAgICBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAorKyAgICBGSVRORVNTLCBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkKKysgICAgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTCisrICAgIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTgorKyAgICBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLAorKyAgICBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRgorKyAgICBUSElTIFNPRlRXQVJFLgorKyAgPC9jb3B5cmlnaHQ+CisrCisrICA8IS0tIERpc3BNYW5YIHN1cHBvcnQuIFRoaXMgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgdGhlIHNlcnZlciBhbmQgcHVibGlzaGVkCisrICAgICAgIHVzaW5nIHRoZSBkaXNwbGF5J3MgZ2xvYmFsIGV2ZW50LiAtLT4KKysgIDxpbnRlcmZhY2UgbmFtZT0id2xfZGlzcG1hbngiIHZlcnNpb249IjEiPgorKyAgICA8ZW51bSBuYW1lPSJlcnJvciI+CisrICAgICAgPGVudHJ5IG5hbWU9ImFsbG9jX2ZhaWxlZCIgdmFsdWU9IjAiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iaW52YWxpZF9mb3JtYXQiIHZhbHVlPSIxIi8+CisrICAgIDwvZW51bT4KKysKKysgICAgPGVudW0gbmFtZT0iZm9ybWF0Ij4KKysgICAgICA8IS0tIFRoZSBwaXhlbCBmb3JtYXQgY29kZXMgbWF0Y2ggdGhlICNkZWZpbmVzIGluIGRybV9mb3VyY2MuaC4KKysgICAgICAgICAgIFRoZSBmb3JtYXRzIGFjdHVhbGx5IHN1cHBvcnRlZCBieSB0aGUgY29tcG9zaXRvciB3aWxsIGJlCisrICAgICAgICAgICByZXBvcnRlZCBieSB0aGUgZm9ybWF0IGV2ZW50LiAtLT4KKysgICAgICA8ZW50cnkgbmFtZT0iYzgiIHZhbHVlPSIweDIwMjAzODQzIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYjMzMiIgdmFsdWU9IjB4Mzg0MjQ3NTIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYmdyMjMzIiB2YWx1ZT0iMHgzODUyNDc0MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ4cmdiNDQ0NCIgdmFsdWU9IjB4MzIzMTUyNTgiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieGJncjQ0NDQiIHZhbHVlPSIweDMyMzE0MjU4Ii8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYng0NDQ0IiB2YWx1ZT0iMHgzMjMxNTg1MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3J4NDQ0NCIgdmFsdWU9IjB4MzIzMTU4NDIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYXJnYjQ0NDQiIHZhbHVlPSIweDMyMzE1MjQxIi8+CisrICAgICAgPGVudHJ5IG5hbWU9ImFiZ3I0NDQ0IiB2YWx1ZT0iMHgzMjMxNDI0MSIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2JhNDQ0NCIgdmFsdWU9IjB4MzIzMTQxNTIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYmdyYTQ0NDQiIHZhbHVlPSIweDMyMzE0MTQyIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InhyZ2IxNTU1IiB2YWx1ZT0iMHgzNTMxNTI1OCIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ4YmdyMTU1NSIgdmFsdWU9IjB4MzUzMTQyNTgiLz4KKysgICAgICA8ZW50cnkgbmFtZT0icmdieDU1NTEiIHZhbHVlPSIweDM1MzE1ODUyIi8+CisrICAgICAgPGVudHJ5IG5hbWU9ImJncng1NTUxIiB2YWx1ZT0iMHgzNTMxNTg0MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJhcmdiMTU1NSIgdmFsdWU9IjB4MzUzMTUyNDEiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYWJncjE1NTUiIHZhbHVlPSIweDM1MzE0MjQxIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYmE1NTUxIiB2YWx1ZT0iMHgzNTMxNDE1MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3JhNTU1MSIgdmFsdWU9IjB4MzUzMTQxNDIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0icmdiNTY1IiB2YWx1ZT0iMHgzNjMxNDc1MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3I1NjUiIHZhbHVlPSIweDM2MzE0NzQyIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYjg4OCIgdmFsdWU9IjB4MzQzMjQ3NTIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYmdyODg4IiB2YWx1ZT0iMHgzNDMyNDc0MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ4cmdiODg4OCIgdmFsdWU9IjB4MzQzMjUyNTgiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieGJncjg4ODgiIHZhbHVlPSIweDM0MzI0MjU4Ii8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYng4ODg4IiB2YWx1ZT0iMHgzNDMyNTg1MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3J4ODg4OCIgdmFsdWU9IjB4MzQzMjU4NDIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYXJnYjg4ODgiIHZhbHVlPSIweDM0MzI1MjQxIi8+CisrICAgICAgPGVudHJ5IG5hbWU9ImFiZ3I4ODg4IiB2YWx1ZT0iMHgzNDMyNDI0MSIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2JhODg4OCIgdmFsdWU9IjB4MzQzMjQxNTIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYmdyYTg4ODgiIHZhbHVlPSIweDM0MzI0MTQyIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InhyZ2IyMTAxMDEwIiB2YWx1ZT0iMHgzMDMzNTI1OCIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ4YmdyMjEwMTAxMCIgdmFsdWU9IjB4MzAzMzQyNTgiLz4KKysgICAgICA8ZW50cnkgbmFtZT0icmdieDEwMTAxMDIiIHZhbHVlPSIweDMwMzM1ODUyIi8+CisrICAgICAgPGVudHJ5IG5hbWU9ImJncngxMDEwMTAyIiB2YWx1ZT0iMHgzMDMzNTg0MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJhcmdiMjEwMTAxMCIgdmFsdWU9IjB4MzAzMzUyNDEiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYWJncjIxMDEwMTAiIHZhbHVlPSIweDMwMzM0MjQxIi8+CisrICAgICAgPGVudHJ5IG5hbWU9InJnYmExMDEwMTAyIiB2YWx1ZT0iMHgzMDMzNDE1MiIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3JhMTAxMDEwMiIgdmFsdWU9IjB4MzAzMzQxNDIiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXV5diIgdmFsdWU9IjB4NTY1OTU1NTkiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXZ5dSIgdmFsdWU9IjB4NTU1OTU2NTkiLz4KKysgICAgICA8ZW50cnkgbmFtZT0idXl2eSIgdmFsdWU9IjB4NTk1NjU5NTUiLz4KKysgICAgICA8ZW50cnkgbmFtZT0idnl1eSIgdmFsdWU9IjB4NTk1NTU5NTYiLz4KKysgICAgICA8ZW50cnkgbmFtZT0iYXl1diIgdmFsdWU9IjB4NTY1NTU5NDEiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ibnYxMiIgdmFsdWU9IjB4MzIzMTU2NGUiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ibnYyMSIgdmFsdWU9IjB4MzEzMjU2NGUiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ibnYxNiIgdmFsdWU9IjB4MzYzMTU2NGUiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ibnY2MSIgdmFsdWU9IjB4MzEzNjU2NGUiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXV2NDEwIiB2YWx1ZT0iMHgzOTU2NTU1OSIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ5dnU0MTAiIHZhbHVlPSIweDM5NTU1NjU5Ii8+CisrICAgICAgPGVudHJ5IG5hbWU9Inl1djQxMSIgdmFsdWU9IjB4MzEzMTU1NTkiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXZ1NDExIiB2YWx1ZT0iMHgzMTMxNTY1OSIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ5dXY0MjAiIHZhbHVlPSIweDMyMzE1NTU5Ii8+CisrICAgICAgPGVudHJ5IG5hbWU9Inl2dTQyMCIgdmFsdWU9IjB4MzIzMTU2NTkiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXV2NDIyIiB2YWx1ZT0iMHgzNjMxNTU1OSIvPgorKyAgICAgIDxlbnRyeSBuYW1lPSJ5dnU0MjIiIHZhbHVlPSIweDM2MzE1NjU5Ii8+CisrICAgICAgPGVudHJ5IG5hbWU9Inl1djQ0NCIgdmFsdWU9IjB4MzQzMjU1NTkiLz4KKysgICAgICA8ZW50cnkgbmFtZT0ieXZ1NDQ0IiB2YWx1ZT0iMHgzNDMyNTY1OSIvPgorKyAgICA8L2VudW0+CisrCisrICAgIDxldmVudCBuYW1lPSJmb3JtYXQiPgorKyAgICAgIDxhcmcgbmFtZT0iZm9ybWF0IiB0eXBlPSJ1aW50Ii8+CisrICAgIDwvZXZlbnQ+CisrCisrICAgIDwhLS0gQ3JlYXRlIGEgd2F5bGFuZCBidWZmZXIgZm9yIHRoZSBEaXNwTWFuWCByZXNvdXJjZS4gLS0+CisrICAgIDxyZXF1ZXN0IG5hbWU9ImNyZWF0ZV9idWZmZXIiPgorKyAgICAgIDxhcmcgbmFtZT0iaWQiIHR5cGU9Im5ld19pZCIgaW50ZXJmYWNlPSJ3bF9idWZmZXIiLz4KKysgICAgICA8YXJnIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiLz4KKysgICAgICA8YXJnIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ii8+CisrICAgICAgPGFyZyBuYW1lPSJzdHJpZGUiIHR5cGU9InVpbnQiLz4KKysgICAgICA8YXJnIG5hbWU9ImJ1ZmZlcl9oZWlnaHQiIHR5cGU9InVpbnQiLz4KKysgICAgICA8YXJnIG5hbWU9ImZvcm1hdCIgdHlwZT0idWludCIvPgorKyAgICA8L3JlcXVlc3Q+CisrCisrICAgIDxldmVudCBuYW1lPSJidWZmZXJfYWxsb2NhdGVkIj4KKysgICAgICA8YXJnIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib2JqZWN0IiBpbnRlcmZhY2U9IndsX2J1ZmZlciIvPgorKyAgICAgIDxhcmcgbmFtZT0iaGFuZGxlIiB0eXBlPSJ1aW50Ii8+CisrICAgIDwvZXZlbnQ+CisrICA8L2ludGVyZmFjZT4KKysKKys8L3Byb3RvY29sPgorZGlmZiAtLWdpdCBhL21ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlIGIvbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hZDkwZDMwCistLS0gL2Rldi9udWxsCisrKysgYi9tYWtlZmlsZXMvY21ha2UvV2F5bGFuZC5jbWFrZQorQEAgLTAsMCArMSw3MiBAQAorKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgUGllciBMdWlnaSBGaW9yaW5pIDxwaWVybHVpZ2kuZmlvcmluaUBnbWFpbC5jb20+CisrIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyMKKysjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrIyBhcmUgbWV0OgorKyMKKysjICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysjICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKyMKKysjICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysjICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKyMgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKyMKKysjICogTmVpdGhlciB0aGUgbmFtZSBvZiBQaWVyIEx1aWdpIEZpb3Jpbmkgbm9yIHRoZSBuYW1lcyBvZiBoaXMKKysjICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisrIyAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKysjCisrIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisrIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisrIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKyMgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisrIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKysjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKysjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKysjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysKKytmaW5kX3Byb2dyYW0oV0FZTEFORF9TQ0FOTkVSX0VYRUNVVEFCTEUgTkFNRVMgd2F5bGFuZC1zY2FubmVyKQorKworKyMgd2F5bGFuZF9hZGRfcHJvdG9jb2xfY2xpZW50KG91dGZpbGVzIGlucHV0ZmlsZSBiYXNlbmFtZSkKKytmdW5jdGlvbihXQVlMQU5EX0FERF9QUk9UT0NPTF9DTElFTlQgX3NvdXJjZXMgX3Byb3RvY29sIF9iYXNlbmFtZSkKKysgICAgaWYoTk9UIFdBWUxBTkRfU0NBTk5FUl9FWEVDVVRBQkxFKQorKyAgICAgICAgbWVzc2FnZShGQVRBTCAiVGhlIHdheWxhbmQtc2Nhbm5lciBleGVjdXRhYmxlIGhhcyBudG8gYmVlbiBmb3VuZCBvbiB5b3VyIHN5c3RlbS4gWW91IG11c3QgaW5zdGFsbCBpdC4iKQorKyAgICBlbmRpZigpCisrCisrICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX2luZmlsZSAke19wcm90b2NvbH0gQUJTT0xVVEUpCisrICAgIHNldChfY2xpZW50X2hlYWRlciAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3dheWxhbmQtJHtfYmFzZW5hbWV9LWNsaWVudC1wcm90b2NvbC5oIikKKysgICAgc2V0KF9jb2RlICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vd2F5bGFuZC0ke19iYXNlbmFtZX0tcHJvdG9jb2wuYyIpCisrCisrICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgIiR7X2NsaWVudF9oZWFkZXJ9IgorKyAgICAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUl9FWEVDVVRBQkxFfSBjbGllbnQtaGVhZGVyIDwgJHtfaW5maWxlfSA+ICR7X2NsaWVudF9oZWFkZXJ9CisrICAgICAgICBERVBFTkRTICR7X2luZmlsZX0gVkVSQkFUSU0pCisrCisrICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgIiR7X2NvZGV9IgorKyAgICAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUl9FWEVDVVRBQkxFfSBjb2RlIDwgJHtfaW5maWxlfSA+ICR7X2NvZGV9CisrICAgICAgICBERVBFTkRTICR7X2luZmlsZX0gVkVSQkFUSU0pCisrCisrICAgIGxpc3QoQVBQRU5EICR7X3NvdXJjZXN9ICIke19jbGllbnRfaGVhZGVyfSIgIiR7X2NvZGV9IikKKysgICAgc2V0KCR7X3NvdXJjZXN9ICR7JHtfc291cmNlc319IFBBUkVOVF9TQ09QRSkKKytlbmRmdW5jdGlvbigpCisrCisrIyB3YXlsYW5kX2FkZF9wcm90b2NvbF9zZXJ2ZXIob3V0ZmlsZXMgaW5wdXRmaWxlIGJhc2VuYW1lKQorK2Z1bmN0aW9uKFdBWUxBTkRfQUREX1BST1RPQ09MX1NFUlZFUiBfc291cmNlcyBfcHJvdG9jb2wgX2Jhc2VuYW1lKQorKyAgICBpZihOT1QgV0FZTEFORF9TQ0FOTkVSX0VYRUNVVEFCTEUpCisrICAgICAgICBtZXNzYWdlKEZBVEFMICJUaGUgd2F5bGFuZC1zY2FubmVyIGV4ZWN1dGFibGUgaGFzIG50byBiZWVuIGZvdW5kIG9uIHlvdXIgc3lzdGVtLiBZb3UgbXVzdCBpbnN0YWxsIGl0LiIpCisrICAgIGVuZGlmKCkKKysKKysgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChfaW5maWxlICR7X3Byb3RvY29sfSBBQlNPTFVURSkKKysgICAgc2V0KF9zZXJ2ZXJfaGVhZGVyICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vd2F5bGFuZC0ke19iYXNlbmFtZX0tc2VydmVyLXByb3RvY29sLmgiKQorKworKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIke19zZXJ2ZXJfaGVhZGVyfSIKKysgICAgICAgIENPTU1BTkQgJHtXQVlMQU5EX1NDQU5ORVJfRVhFQ1VUQUJMRX0gc2VydmVyLWhlYWRlciA8ICR7X2luZmlsZX0gPiAke19zZXJ2ZXJfaGVhZGVyfQorKyAgICAgICAgREVQRU5EUyAke19pbmZpbGV9IFZFUkJBVElNKQorKworKyAgICBsaXN0KEFQUEVORCAke19zb3VyY2VzfSAiJHtfc2VydmVyX2hlYWRlcn0iKQorKyAgICBzZXQoJHtfc291cmNlc30gJHske19zb3VyY2VzfX0gUEFSRU5UX1NDT1BFKQorK2VuZGZ1bmN0aW9uKCkKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDAzLXdheWxhbmQtQWRkLVdheWxhbmQtZXhhbXBsZS5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDAzLXdheWxhbmQtQWRkLVdheWxhbmQtZXhhbXBsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODNhOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDMtd2F5bGFuZC1BZGQtV2F5bGFuZC1leGFtcGxlLnBhdGNoCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDA0LXdheWxhbmQtZWdsLUFkZC1iY21faG9zdC10by1kZXBlbmRlbmNpZXMucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwNC13YXlsYW5kLWVnbC1BZGQtYmNtX2hvc3QtdG8tZGVwZW5kZW5jaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MmFhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwNC13YXlsYW5kLWVnbC1BZGQtYmNtX2hvc3QtdG8tZGVwZW5kZW5jaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYzM3OWJkMmRjNTc1MjU2MDg0ZDllMzZmYzExYTM0N2UyMDY2MDEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDEwIEF1ZyAyMDE1IDAyOjM4OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDQvMThdIHdheWxhbmQtZWdsOiBBZGQgYmNtX2hvc3QgdG8gZGVwZW5kZW5jaWVzCisKK0l0IHVzZXMgaGVhZGVycyBsaWtlIHZjb3NfcGxhdGZvcm1fdHlwZXMuaCBidXQgZG9lcyBub3QKK2RlcGVuZCBvbiBtb2R1bGUgd2hpY2ggc2hvdWxkIGFkZCB0aGUgcmVxdWlyZWQgaW5jbHVkZSBwYXRocworbGV0cyBhZGQgdGhlIGRlcGVuZGVuY3kgb24gYmNtX2hvc3QgbW9kdWxlIHdoaWNoIHNob3VsZCBkbyBpdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KK2luZGV4IDhiYWZjMTUuLmZkMjU5YzkgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgorKysrIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KK0BAIC02LDUgKzYsNiBAQCBpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlCisgTmFtZTogd2F5bGFuZC1lZ2wKKyBEZXNjcmlwdGlvbjogVmlkZW9Db3JlIHdheWxhbmQtZWdsIGxpYnJhcnkKKyBWZXJzaW9uOiBAUFJPSkVDVF9BUElWRVJACisrUmVxdWlyZXM6IGJjbV9ob3N0CisgTGliczogLUwke2xpYmRpcn0gLWx3YXlsYW5kLWVnbAorIENmbGFnczogLUkke2luY2x1ZGVkaXJ9CistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwNS1pbnRlcmZhY2UtcmVtb3ZlLWZhdWx0eS1hc3NlcnQtdG8tbWFrZS13ZXN0b24taGFwcHktLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDUtaW50ZXJmYWNlLXJlbW92ZS1mYXVsdHktYXNzZXJ0LXRvLW1ha2Utd2VzdG9uLWhhcHB5LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmFhZGRhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDUtaW50ZXJmYWNlLXJlbW92ZS1mYXVsdHktYXNzZXJ0LXRvLW1ha2Utd2VzdG9uLWhhcHB5LS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGJkOTQwYzMyODc4ZDQwMWYzMTEyMTUyNzA1NzlmZjUxM2MyZjM5OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiWWFubiBFLiBNT1JJTiIgPHlhbm4ubW9yaW4uMTk5OEBmcmVlLmZyPgorRGF0ZTogU2F0LCAyNCBKYW4gMjAxNSAyMjowNzoxOSArMDEwMAorU3ViamVjdDogW1BBVENIIDA1LzE4XSBpbnRlcmZhY2U6IHJlbW92ZSBmYXVsdHkgYXNzZXJ0KCkgdG8gbWFrZSB3ZXN0b24gaGFwcHkKKyBhdCBydW50aW1lCisKK1RoaXMgd2FzIHJlbW92ZWQgYWZ0ZXIgYSBkaXNjdXNzaW9uIG9uIElSQyB3aXRoIHRoZSB3ZXN0b24gZ3V5cworKCdkYW5pZWxzJyBvbiBpcmMuZnJlZW5vZGUubmV0LyN3YXlsYW5kKS4KKworU2lnbmVkLW9mZi1ieTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KKy0tLQorIGludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKK2luZGV4IGVhYjE0NmUuLjI5ZTBkZWUgMTAwNzU1CistLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYworKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKK0BAIC0xMzA2LDcgKzEzMDYsNiBAQCBzdGF0aWMgdm9pZCAqZGlzcG1hbnhfbm90aWZ5X2Z1bmMoIHZvaWQgKmFyZyApIHsKKyAgICAgICAgICAgICAvLyBEZWNyZW1lbnQgdGhlIHVzZSBjb3VudCAtIHRoZSBjb3JyZXNwb25kaW5nICJ1c2UiIGlzIGluIHZjX2Rpc3BtYW54X3VwZGF0ZV9zdWJtaXQuCisgICAgICAgICAgICAgdmNoaV9zZXJ2aWNlX3JlbGVhc2UoZGlzcG1hbnhfY2xpZW50Lm5vdGlmeV9oYW5kbGVbMF0pOworICAgICAgICAgICAgIGlmIChkaXNwbWFueF9jbGllbnQudXBkYXRlX2NhbGxiYWNrICkgeworLSAgICAgICAgICAgICAgIHZjb3NfYXNzZXJ0KCBkaXNwbWFueF9jbGllbnQucGVuZGluZ191cGRhdGVfaGFuZGxlID09IGhhbmRsZSk7CisgICAgICAgICAgICAgICAgZGlzcG1hbnhfY2xpZW50LnVwZGF0ZV9jYWxsYmFjayhoYW5kbGUsIGRpc3BtYW54X2NsaWVudC51cGRhdGVfY2FsbGJhY2tfcGFyYW0pOworICAgICAgICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgeworLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDYtemVyby1vdXQtd2wtYnVmZmVycy1pbi1lZ2xfc3VyZmFjZV9mcmVlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDYtemVyby1vdXQtd2wtYnVmZmVycy1pbi1lZ2xfc3VyZmFjZV9mcmVlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNWUxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwNi16ZXJvLW91dC13bC1idWZmZXJzLWluLWVnbF9zdXJmYWNlX2ZyZWUucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA0NjZmMjhjZTMwMmY2OGFjMzliZTc1MGY0YjU1Mjg1NzkxZjQzYWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgNiBGZWIgMjAxNiAxMToxMDo0NyAtMDgwMAorU3ViamVjdDogW1BBVENIIDA2LzE4XSB6ZXJvLW91dCB3bCBidWZmZXJzIGluIGVnbF9zdXJmYWNlX2ZyZWUKKworb3JpZ2lucyBmcm9tIGJ1aWxkcm9vdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworaW5kZXggNDIzNTBiZi4uMWY5MjNkOSAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCitAQCAtNjkwLDExICs2OTAsMTMgQEAgdm9pZCBlZ2xfc3VyZmFjZV9mcmVlKEVHTF9TVVJGQUNFX1QgKnN1cmZhY2UpCisgICAgICAgaWYgKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyKSB7CisgICAgICAgICAgd2xfYnVmZmVyX2Rlc3Ryb3koc3VyZmFjZS0+YmFja193bF9idWZmZXItPndsX2J1ZmZlcik7CisgICAgICAgICAgZnJlZShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlcik7CisrICAgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSAwOworICAgICAgIH0KKyAKKyAgICAgICBpZiAoc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyKSB7CisgICAgICAgICAgd2xfYnVmZmVyX2Rlc3Ryb3koc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyLT53bF9idWZmZXIpOworICAgICAgICAgIGZyZWUoc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyKTsKKysgICAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXIgPSAwOworICAgICAgIH0KKyAjZW5kaWYKKyAgICB9CistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwNy1pbml0aWFsaXplLWZyb250LWJhY2std2F5bGFuZC1idWZmZXJzLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDctaW5pdGlhbGl6ZS1mcm9udC1iYWNrLXdheWxhbmQtYnVmZmVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjI2NGU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDctaW5pdGlhbGl6ZS1mcm9udC1iYWNrLXdheWxhbmQtYnVmZmVycy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGI0YTI5Njc1MTNmN2QwZjVmM2NhZWU4Y2Y2Y2JjN2E3YTA4NWViYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDExOjExOjQxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMThdIGluaXRpYWxpemUgZnJvbnQgYmFjayB3YXlsYW5kIGJ1ZmZlcnMKKworb3JpZ2lucyBmcm9tIG1ldHJvbG9naWNhbCB3YXlsYW5kIHN1cHBvcnQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCitpbmRleCAxZjkyM2Q5Li45YTk1ODJjIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKK0BAIC00MDEsMTEgKzQwMSwxNCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCisgI2lmZGVmIEJVSUxEX1dBWUxBTkQKKyAgICBpZiAodHlwZSA9PSBXSU5ET1cgJiYgd2xfZGlzcGxheSkgeworICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKKysgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXIgPSBOVUxMOworICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYWxsb2NhdGVfd2xfYnVmZmVyKAorICAgICAgICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3csIGNvbG9yKTsKKyAgICAgICByZXNvdXJjZSA9IHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5yZXNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSBOVUxMOworKyAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IE5VTEw7CisrICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBOVUxMOworICAgICAgIHJlc291cmNlID0gRElTUE1BTlhfTk9fSEFORExFOworICAgIH0KKyAjZW5kaWYKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDA4LVJlbW92ZS1SUENfRkxVU0gucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwOC1SZW1vdmUtUlBDX0ZMVVNILnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDBlMzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwOC1SZW1vdmUtUlBDX0ZMVVNILnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMTRjMjI5ODdkZmE5ZmVjMDI3OTQ4NTZjZDE1YjJkNjRiNGI4MWMzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDYgRmViIDIwMTYgMTE6MDk6MTggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xOF0gUmVtb3ZlIFJQQ19GTFVTSAorCitPcmlnaW5zIGZyb20gYnVpbGRyb290CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBpbnRlcmZhY2Uva2hyb25vcy9leHQvZ2xfb2VzX2VnbF9pbWFnZV9jbGllbnQuYyB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9leHQvZ2xfb2VzX2VnbF9pbWFnZV9jbGllbnQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9nbF9vZXNfZWdsX2ltYWdlX2NsaWVudC5jCitpbmRleCBmOWI3Mjg3Li5iMDRmZmVmIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2dsX29lc19lZ2xfaW1hZ2VfY2xpZW50LmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9nbF9vZXNfZWdsX2ltYWdlX2NsaWVudC5jCitAQCAtMTA3LDcgKzEwNyw2IEBAIEdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPCisgICAgICAgICAgICAgICAgICAgIEdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNfSUQsCisgICAgICAgICAgICAgICAgICAgIFJQQ19FTlVNKHRhcmdldCksCisgICAgICAgICAgICAgICAgICAgIFJQQ19FR0xJRChpbWFnZSkpOworLSAgICAgICAgIFJQQ19GTFVTSCh0aHJlYWQpOworICNpZiBFR0xfQlJDTV9nbG9iYWxfaW1hZ2UKKyAgICAgICB9CisgI2VuZGlmCistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAwOS1maXgtY21ha2UtZGVwZW5kZW5jeS1yYWNlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDktZml4LWNtYWtlLWRlcGVuZGVuY3ktcmFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjA5NDU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMDktZml4LWNtYWtlLWRlcGVuZGVuY3ktcmFjZS5wYXRjaApAQCAtMCwwICsxLDc4IEBACitGcm9tIGU1MTBiZTIyMTI3NmQwNmU2MzBhYjkzNDUyZWNiNzEyZDM5MjE3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDEzOjEyOjQ3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMThdIGZpeCBjbWFrZSBkZXBlbmRlbmN5IHJhY2UKKworRml4ZXMgZXJyb3JzIGxpa2UKKworL2EvYnVpbGRlci9tbnQvYnVpbGQtb2UvdG1wLWdsaWJjL3dvcmsvcmFzcGJlcnJ5cGkyLW9lLWxpbnV4LWdudWVhYmkvdXNlcmxhbmQvZ2l0LXI1L2dpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaDo3Mjo2NjoKK2ZhdGFsIGVycm9yOiBpbnRlcmZhY2Uvdm1jc19ob3N0L3dheWxhbmQtZGlzcG1hbngtc2VydmVyLXByb3RvY29sLmg6IE5vCitzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Citjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgoraW50ZXJmYWNlL2tocm9ub3MvQ01ha2VGaWxlcy9FR0xfc3RhdGljLmRpci9idWlsZC5tYWtlOjc3MzogcmVjaXBlIGZvcgordGFyZ2V0ICdpbnRlcmZhY2Uva2hyb25vcy9DTWFrZUZpbGVzL0VHTF9zdGF0aWMuZGlyL2V4dC9lZ2xfd2F5bGFuZC5jLm8nCitmYWlsZWQKK21ha2VbMl06ICoqKgorW2ludGVyZmFjZS9raHJvbm9zL0NNYWtlRmlsZXMvRUdMX3N0YXRpYy5kaXIvZXh0L2VnbF93YXlsYW5kLmMub10gRXJyb3IgMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMvQ01ha2VMaXN0cy50eHQgfCA4ICsrKysrKysrCisgaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dCAgICAgfCA4IC0tLS0tLS0tCisgaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmggfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcy9DTWFrZUxpc3RzLnR4dCBiL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzL0NNYWtlTGlzdHMudHh0CitpbmRleCAxZDgxY2EzLi5kNmNkNDE1IDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzL0NNYWtlTGlzdHMudHh0CitAQCAtMzMsNiArMzMsMTQgQEAgc2V0IChTT1VSQ0VTCisgICAgLi4vZ2VuZXJpYy92Y29zX2dlbmVyaWNfYmxvY2twb29sLmMKKyApCisgCisraWYgKEJVSUxEX1dBWUxBTkQpCisrd2F5bGFuZF9hZGRfcHJvdG9jb2xfc2VydmVyKAorKyAgICBTT1VSQ0VTCisrICAgIC4uLy4uLy4uL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAorKyAgICBkaXNwbWFueAorKykKKytlbmRpZiAoKQorKworIGlmIChWQ09TX1BUSFJFQURTX0JVSUxEX1NIQVJFRCkKKyAgICBhZGRfbGlicmFyeSAodmNvcyBTSEFSRUQgJHtTT1VSQ0VTfSkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMgKHZjb3MgcHRocmVhZCBkbCBydCkKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0IGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAoraW5kZXggNjcxODIxNS4uYzQxNTE3NiAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKKysrKyBiL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKK0BAIC0xNywxNCArMTcsNiBAQCBzZXQoVkNIT1NUSUZfU09VUkNFCisgIyAgICAgICAgICAgICR7Vk1DU19UQVJHRVR9L3ZtY3NfbWFpbi5jCisgIyAgdmNfdmNoaV9oYXVkLmMKKyAKKy1pZiAoQlVJTERfV0FZTEFORCkKKy13YXlsYW5kX2FkZF9wcm90b2NvbF9zZXJ2ZXIoCistICAgIFZDSE9TVElGX1NPVVJDRQorLSAgICAuLi8uLi9pbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwKKy0gICAgZGlzcG1hbngKKy0pCistZW5kaWYgKCkKKy0KKyBhZGRfbGlicmFyeSh2Y2hvc3RpZiAke1ZDSE9TVElGX1NPVVJDRX0pCisgCisgI2FkZF9saWJyYXJ5KGJ1Zm1hbiAgICAgICAgICAgIHZjX3ZjaGlfYnVmbWFuLmMgICAgICAgICAgICApCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmggYi9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAoraW5kZXggZjBiYWUzMC4uOGM0NGM1OCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oCisrKysgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAorQEAgLTY5LDcgKzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeworICNpZmRlZiBCVUlMRF9XQVlMQU5ECisgLyogWFhYOiBUaGlzIHNob3VsZCBiZSBpbiBhIHByaXZhdGUgaGVhZGVyIHRoYXQgY2FuIGJlIGluY2x1ZGVkIGZyb20gRUdMIGFuZCB2Y18qICovCisgI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CistI2luY2x1ZGUgImludGVyZmFjZS92bWNzX2hvc3Qvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaCIKKysjaW5jbHVkZSAiaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaCIKKyBzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciB7CisgCXN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2U7CisgCXN0cnVjdCB3bF9kaXNwbWFueCAqZGlzcG1hbng7CistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxMC1GaXgtZm9yLWZyYW1lcmF0ZS13aXRoLW5lc3RlZC1jb21wb3NpdGlvbi5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDEwLUZpeC1mb3ItZnJhbWVyYXRlLXdpdGgtbmVzdGVkLWNvbXBvc2l0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMGI5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxMC1GaXgtZm9yLWZyYW1lcmF0ZS13aXRoLW5lc3RlZC1jb21wb3NpdGlvbi5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDhlNmNkZTA4MDc3ZWFkZmU1NjNkYzE3YzE5OTk1ZWJjNDhlMzBiOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOSBNYXIgMjAxNiAyMDozODozMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDEwLzE4XSBGaXggZm9yIGZyYW1lcmF0ZSB3aXRoIG5lc3RlZCBjb21wb3NpdGlvbgorCitmcmFtZSByYXRlIGFwcGVhcnMgaXJyZWd1bGFyIGFuZCBsb3dlciB0aGFuIGV4cGVjdGVkIHdoZW4gdXNpbmcgbmVzdGVkIGNvbXBvc2l0aW9uLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYworaW5kZXggMDNmZTY3Yi4uMTNhMTEwYyAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKK0BAIC0yMzQyLDYgKzIzNDIsOSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmKQorICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYnVmZmVyOworICAgICAgICAgICAgICAgICAgIH0KKyAKKysgICAgICAgICAgICAgICAgICBnbEZsdXNoKCk7CisrICAgICAgICAgICAgICAgICAgZ2xGaW5pc2goKTsKKysKKyAgICAgICAgICAgICAgICAgICBSUENfQ0FMTDcoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSURfVjIsCitAQCAtMjM1Myw2ICsyMzU2LDggQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKKyAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChraHJuX3BsYXRmb3JtX2dldF93aW5kb3dfcG9zaXRpb24oc3VyZmFjZS0+d2luKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+cmVzb3VyY2UpKTsKKyAKKysgICAgICAgICAgICAgICAgICBSUENfRkxVU0godGhyZWFkKTsKKysKKyAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPmluX3VzZSA9IDE7CisgICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9hdHRhY2god2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPndsX2J1ZmZlciwKK0BAIC0yMzYwLDExICsyMzY1LDEzIEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmYpCisgICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9kYW1hZ2Uod2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT53aWR0aCwgc3VyZmFjZS0+aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICB3bF9zdXJmYWNlX2NvbW1pdCh3bF9lZ2xfd2luZG93LT53bF9zdXJmYWNlKTsKKysgICAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKHdsX2Rpc3BsYXkpOworIAorICAgICAgICAgICAgICAgICAgIHdoaWxlKHJldCAhPSAtMSAmJiBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+aW5fdXNlKQorICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWUod2xfZGlzcGxheSwgcHJvY2Vzcy0+d2xfcXVldWUpOworICAgICAgICAgICAgICAgIH0gZWxzZQorICNlbmRpZgorKyAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBSUENfQ0FMTDYoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSUQsCitAQCAtMjM3Niw2ICsyMzgzLDcgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKKyAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChraHJuX3BsYXRmb3JtX2dldF93aW5kb3dfcG9zaXRpb24oc3VyZmFjZS0+d2luKSkpOworIAorICAgICAgICAgICAgICAgIFJQQ19GTFVTSCh0aHJlYWQpOworKyAgICAgICAgICAgICAgIH0KKyAKKyAjaWZkZWYgQU5EUk9JRAorICAgICAgICAgICAgICAgIENMSUVOVF9VTkxPQ0soKTsKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmQ1MzIwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTEtYnVpbGQtc2hhcmVkLWxpYnJhcnktZm9yLXZjaG9zdGlmLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gOWE5N2Q2MDI2Mjk5OTA5M2Q2Y2U4Y2I2ODgyNzk1MDZjMjEwZDgwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIgQXByIDIwMTYgMTA6Mzc6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xOF0gYnVpbGQgc2hhcmVkIGxpYnJhcnkgZm9yIHZjaG9zdGlmCisKK0ZpeGVzICMxNDkKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0IGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAoraW5kZXggYzQxNTE3Ni4uZDBjY2ExYSAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKKysrKyBiL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKK0BAIC0xNyw3ICsxNyw3IEBAIHNldChWQ0hPU1RJRl9TT1VSQ0UKKyAjICAgICAgICAgICAgJHtWTUNTX1RBUkdFVH0vdm1jc19tYWluLmMKKyAjICB2Y192Y2hpX2hhdWQuYworIAorLWFkZF9saWJyYXJ5KHZjaG9zdGlmICR7VkNIT1NUSUZfU09VUkNFfSkKKythZGRfbGlicmFyeSh2Y2hvc3RpZiBTSEFSRUQgJHtWQ0hPU1RJRl9TT1VSQ0V9KQorIAorICNhZGRfbGlicmFyeShidWZtYW4gICAgICAgICAgICB2Y192Y2hpX2J1Zm1hbi5jICAgICAgICAgICAgKQorIAorLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTItaW1wbGVtZW50LWJ1ZmZlci13cmFwcGluZy1pbnRlcmZhY2UtZm9yLWRpc3BtYW54LnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTItaW1wbGVtZW50LWJ1ZmZlci13cmFwcGluZy1pbnRlcmZhY2UtZm9yLWRpc3BtYW54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ODRiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxMi1pbXBsZW1lbnQtYnVmZmVyLXdyYXBwaW5nLWludGVyZmFjZS1mb3ItZGlzcG1hbngucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorRnJvbSBmZWRkNzY2ODE1MjA0OWMxNWVkNThjNzA1OGU1ZjRhOWMxZmFjN2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMiBBcHIgMjAxNiAxMDo1NDo1OSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEyLzE4XSBpbXBsZW1lbnQgYnVmZmVyIHdyYXBwaW5nIGludGVyZmFjZSBmb3IgZGlzcG1hbngKKworQ291cnRlc3k6IFphbiBEb2JlcnNlaworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbCAgICAgIHwgMTAgKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYworaW5kZXggNTczMDc0My4uOWVmODljZCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYworQEAgLTEzMyw4ICsxMzMsNTAgQEAgZGlzcG1hbnhfY3JlYXRlX2J1ZmZlcihzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+aGFuZGxlKTsKKyB9CisgCisrc3RhdGljIHZvaWQKKytkaXNwbWFueF93cmFwX2J1ZmZlcihzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UsCisrICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWQsIHVpbnQzMl90IGhhbmRsZSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3RyaWRlLCB1aW50MzJfdCBidWZmZXJfaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQpCisreworKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyICpidWZmZXI7CisrICAgVkNfSU1BR0VfVFlQRV9UIHZjX2Zvcm1hdCA9IGdldF92Y19mb3JtYXQoZm9ybWF0KTsKKysgICB1aW50MzJfdCBkdW1teTsKKysKKysgICBpZih2Y19mb3JtYXQgPT0gVkNfSU1BR0VfTUlOKSB7CisrICAgICAgd2xfcmVzb3VyY2VfcG9zdF9lcnJvcihyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0VSUk9SX0lOVkFMSURfRk9STUFULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0Iik7CisrICAgICAgcmV0dXJuOworKyAgIH0KKysKKysgICBidWZmZXIgPSBjYWxsb2MoMSwgc2l6ZW9mICpidWZmZXIpOworKyAgIGlmIChidWZmZXIgPT0gTlVMTCkgeworKyAgICAgIHdsX3Jlc291cmNlX3Bvc3Rfbm9fbWVtb3J5KHJlc291cmNlKTsKKysgICAgICByZXR1cm47CisrICAgfQorKworKyAgIGJ1ZmZlci0+aGFuZGxlID0gaGFuZGxlOworKyAgIGJ1ZmZlci0+d2lkdGggPSB3aWR0aDsKKysgICBidWZmZXItPmhlaWdodCA9IGhlaWdodDsKKysgICBidWZmZXItPmZvcm1hdCA9IGZvcm1hdDsKKysKKysgICBidWZmZXItPnJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKHJlc291cmNlLT5jbGllbnQsICZ3bF9idWZmZXJfaW50ZXJmYWNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgaWQpOworKyAgIGlmICghYnVmZmVyLT5yZXNvdXJjZSkgeworKyAgICAgIHdsX3Jlc291cmNlX3Bvc3Rfbm9fbWVtb3J5KHJlc291cmNlKTsKKysgICAgICB2Y19kaXNwbWFueF9yZXNvdXJjZV9kZWxldGUoYnVmZmVyLT5oYW5kbGUpOworKyAgICAgIGZyZWUoYnVmZmVyKTsKKysgICAgICByZXR1cm47CisrICAgfQorKworKyAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihidWZmZXItPnJlc291cmNlLAorKwkJCQkgICAgICAgKHZvaWQgKCoqKSh2b2lkKSkgJmRpc3BtYW54X2J1ZmZlcl9pbnRlcmZhY2UsCisrCQkJCSAgICAgICBidWZmZXIsIGRlc3Ryb3lfYnVmZmVyKTsKKyt9CisrCisgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9kaXNwbWFueF9pbnRlcmZhY2UgZGlzcG1hbnhfaW50ZXJmYWNlID0geworICAgIGRpc3BtYW54X2NyZWF0ZV9idWZmZXIsCisrICAgZGlzcG1hbnhfd3JhcF9idWZmZXIsCisgfTsKKyAKKyBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbCBiL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAoraW5kZXggYzE4NjI2ZC4uMTFlZDFlZiAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAorKysrIGIvaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCitAQCAtMTE4LDYgKzExOCwxNiBAQAorICAgICAgIDxhcmcgbmFtZT0iYnVmZmVyIiB0eXBlPSJvYmplY3QiIGludGVyZmFjZT0id2xfYnVmZmVyIi8+CisgICAgICAgPGFyZyBuYW1lPSJoYW5kbGUiIHR5cGU9InVpbnQiLz4KKyAgICAgPC9ldmVudD4KKysKKysgICAgPHJlcXVlc3QgbmFtZT0id3JhcF9idWZmZXIiPgorKyAgICAgIDxhcmcgbmFtZT0iaWQiIHR5cGU9Im5ld19pZCIgaW50ZXJmYWNlPSJ3bF9idWZmZXIiLz4KKysgICAgICA8YXJnIG5hbWU9ImhhbmRsZSIgdHlwZT0idWludCIvPgorKyAgICAgIDxhcmcgbmFtZT0id2lkdGgiIHR5cGU9ImludCIvPgorKyAgICAgIDxhcmcgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiLz4KKysgICAgICA8YXJnIG5hbWU9InN0cmlkZSIgdHlwZT0idWludCIvPgorKyAgICAgIDxhcmcgbmFtZT0iYnVmZmVyX2hlaWdodCIgdHlwZT0idWludCIvPgorKyAgICAgIDxhcmcgbmFtZT0iZm9ybWF0IiB0eXBlPSJ1aW50Ii8+CisrICAgIDwvcmVxdWVzdD4KKyAgIDwvaW50ZXJmYWNlPgorIAorIDwvcHJvdG9jb2w+CistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxMy1JbXBsZW1lbnQtdHJpcGxlLWJ1ZmZlcmluZy1mb3Itd2F5bGFuZC5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDEzLUltcGxlbWVudC10cmlwbGUtYnVmZmVyaW5nLWZvci13YXlsYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNTIxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxMy1JbXBsZW1lbnQtdHJpcGxlLWJ1ZmZlcmluZy1mb3Itd2F5bGFuZC5wYXRjaApAQCAtMCwwICsxLDkwIEBACitGcm9tIDY1ZjhiY2E1NWFlYWQ2NzZjZDA2ZmMzMjEwYWVmZmVmMWYyMTU4YzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWZmIFdhbm5hbWFrZXIgPGplZmZfd2FubmFtYWtlckBjYWJsZS5jb21jYXN0LmNvbT4KK0RhdGU6IFRodSwgMTkgSmFuIDIwMTcgMTg6NTY6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xOF0gSW1wbGVtZW50IHRyaXBsZSBidWZmZXJpbmcgZm9yIHdheWxhbmQKKworQ2hhbmdlIGZyb20gZG91YmxlIHRvIHRyaXBsZSBidWZmZXJpbmcgZm9yIHdheWxhbmQuCitUaGlzIGVuYWJsZXMgaGlnaGVyIGZyYW1lIHJhdGVzIHdpdGhvdXQgdGVhcmluZyBhcnRpZmFjdHMKK2J5IGFsbG93aW5nIGJvdGggdGhlIGdsRmluaXNoIGFuZCB0aGUgYnVmZmVyIHJlbGVhc2UKK2ludGVybG9jayB0byBvcGVyYXRlIHdpdGhvdXQgcHVzaGluZyB0aGUgZnJhbWUgcGVyaW9kCit0byB0d28gdmVydGljYWwgaW50ZXJ2YWxzCisKK1NpZ25lZC1vZmYtYnk6IEplZmYgV2FubmFtYWtlciA8amVmZl93YW5uYW1ha2VyQGNhYmxlLmNvbWNhc3QuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMgICAgICAgICB8ICAzICsrLQorIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyB8ICA4ICsrKysrKysrCisgaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oIHwgMTEgKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCitpbmRleCAxM2ExMTBjLi4wMzgwMjc0IDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYworKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYworQEAgLTIzMjMsNyArMjMyMyw4IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmYpCisgCisgICAgICAgICAgICAgICAgICAgYnVmZmVyX3RlbXAgPSBzdXJmYWNlLT5mcm9udF93bF9idWZmZXI7CisgICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyID0gc3VyZmFjZS0+YmFja193bF9idWZmZXI7CistICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBidWZmZXJfdGVtcDsKKysgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXI7CisrICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+bWlkZGxlX3dsX2J1ZmZlciA9IGJ1ZmZlcl90ZW1wOworIAorICAgICAgICAgICAgICAgICAgIGNvbmZpZ2lkID0gZWdsX2NvbmZpZ190b19pZChzdXJmYWNlLT5jb25maWcpOworICAgICAgICAgICAgICAgICAgIGNvbG9yID0gZWdsX2NvbmZpZ19nZXRfY29sb3JfZm9ybWF0KGNvbmZpZ2lkKTsKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKK2luZGV4IDlhOTU4MmMuLjEwYjNiMDQgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYworQEAgLTQwMiwxMiArNDAyLDE0IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKKyAgICBpZiAodHlwZSA9PSBXSU5ET1cgJiYgd2xfZGlzcGxheSkgeworICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKKyAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXIgPSBOVUxMOworKyAgICAgIHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIgPSBOVUxMOworICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYWxsb2NhdGVfd2xfYnVmZmVyKAorICAgICAgICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3csIGNvbG9yKTsKKyAgICAgICByZXNvdXJjZSA9IHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5yZXNvdXJjZTsKKyAgICB9IGVsc2UgeworICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSBOVUxMOworICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IE5VTEw7CisrICAgICAgc3VyZmFjZS0+bWlkZGxlX3dsX2J1ZmZlciA9IE5VTEw7CisgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBOVUxMOworICAgICAgIHJlc291cmNlID0gRElTUE1BTlhfTk9fSEFORExFOworICAgIH0KK0BAIC02OTYsNiArNjk4LDEyIEBAIHZvaWQgZWdsX3N1cmZhY2VfZnJlZShFR0xfU1VSRkFDRV9UICpzdXJmYWNlKQorICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gMDsKKyAgICAgICB9CisgCisrICAgICAgaWYgKHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIpIHsKKysgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5taWRkbGVfd2xfYnVmZmVyLT53bF9idWZmZXIpOworKyAgICAgICAgIGZyZWUoc3VyZmFjZS0+bWlkZGxlX3dsX2J1ZmZlcik7CisrICAgICAgICAgc3VyZmFjZS0+bWlkZGxlX3dsX2J1ZmZlciA9IDA7CisrICAgICAgfQorKworICAgICAgIGlmIChzdXJmYWNlLT5mcm9udF93bF9idWZmZXIpIHsKKyAgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPndsX2J1ZmZlcik7CisgICAgICAgICAgZnJlZShzdXJmYWNlLT5mcm9udF93bF9idWZmZXIpOworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaCBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAoraW5kZXggZTMyOGI3Ny4uNThhMzE4NCAxMDA2NDQKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oCitAQCAtMzEyLDYgKzMxMiwxNyBAQCB0eXBlZGVmIHN0cnVjdCB7CisgICAgKi8KKyAgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqZnJvbnRfd2xfYnVmZmVyOworIAorKyAgIC8qCisrICAgICAgbWlkZGxlX3dsX2J1ZmZlcgorKworKyAgICAgIFZhbGlkaXR5OgorKyAgICAgIHR5cGUgPT0gV0lORE9XCisrCisrICAgICAgSW52YXJpYW50OgorKyAgICAgIGNsaWVudC1zaWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3bF9idWZmZXIgaW4gdGhlIG1pZGRsZQorKyAgICovCisrICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKm1pZGRsZV93bF9idWZmZXI7CisrCisgICAgLyoKKyAgICAgICBiYWNrX3dsX2J1ZmZlcgorIAorLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTQtR0xFUzItZ2wyZXh0LmgtRGVmaW5lLUdMX1I4X0VYVC1hbmQtR0xfUkc4X0VYVC5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM3ZDcwOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBkYzFkMDdkODM1ZTFmZTcwYzk1N2E2NTVkNmZiYjhjZGU2NTc3NWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTAgTWF5IDIwMTcgMDY6Mzk6MzQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8xOF0gR0xFUzIvZ2wyZXh0Lmg6IERlZmluZSBHTF9SOF9FWFQgYW5kIEdMX1JHOF9FWFQKKword2VzdG9uIGNvZGUgdXNlcyB0aGVzZSBkZWZpbmVzCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmggfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9HTEVTMi9nbDJleHQuaCBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKK2luZGV4IDRlYWNmN2YuLmIxYWNjOWYgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCitAQCAtMzI3LDYgKzMyNywxNCBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CisgI2RlZmluZSBHTF9SR0JYX0JSQ00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFRQorICNlbmRpZgorIAorKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfcmcKKysjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX3JnIDEKKysjZGVmaW5lIEdMX1JFRF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTAzCisrI2RlZmluZSBHTF9SR19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyNworKyNkZWZpbmUgR0xfUjhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMjkKKysjZGVmaW5lIEdMX1JHOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjJCCisrI2VuZGlmIC8qIEdMX0VYVF90ZXh0dXJlX3JnICovCisrCisgLyogR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViAqLworICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgorICNkZWZpbmUgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDgzNjgKKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE1LUVHTC1nbHBsYXRmb3JtLmgtZGVmaW5lLUVHTF9DQVNULnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTUtRUdMLWdscGxhdGZvcm0uaC1kZWZpbmUtRUdMX0NBU1QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJjZWNiOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE1LUVHTC1nbHBsYXRmb3JtLmgtZGVmaW5lLUVHTF9DQVNULnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjVmYTI5NGMwZDhmY2I2ZGQ1YmZiZmI5NmEwODg1ZGQ5ZjNhZTYwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYSBHYWxidXNlcmEgPGdpemVyb0BnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEp1bCAyMDE3IDA5OjUyOjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMThdIEVHTC9nbHBsYXRmb3JtLmg6IGRlZmluZSBFR0xfQ0FTVAorCitDKysgLyBDIHR5cGVjYXN0IG1hY3JvcyBmb3Igc3BlY2lhbCBFR0wgaGFuZGxlIHZhbHVlczogdXNlZCBieSBsaWJlcG94eSBjb2RlCitUaGUgZGVmaW5pdGlvbiBjb21lcyBmcm9tIHRoZSB1cGRhdGVkIHZlcnNpb24gb2YgdGhpcyBoZWFkZXIgaW4gbWVzYS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaCBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKK2luZGV4IDFmN2M5MzAuLmMzOWQ0MjUgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCitAQCAtMjAyLDQgKzIwMiwxMSBAQCBFR0xBUEkgdm9pZCBFR0xBUElFTlRSWSBCRUdMX0dldERlZmF1bHREcml2ZXJJbnRlcmZhY2VzKEJFR0xfRHJpdmVySW50ZXJmYWNlcyAqaQorICNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgiCisgI2VuZGlmCisgCisrLyogQysrIC8gQyB0eXBlY2FzdCBtYWNyb3MgZm9yIHNwZWNpYWwgRUdMIGhhbmRsZSB2YWx1ZXMgKi8KKysjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKKysjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKQorKyNlbHNlCisrI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKQorKyNlbmRpZgorKworICNlbmRpZiAvKiBfX2VnbHBsYXRmb3JtX2ggKi8KKy0tIAorMi4xOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE2LUFsbG93LW11bHRpcGxlLXdheWxhbmQtY29tcG9zaXRvci1zdGF0ZS1kYXRhLXBlci1wcm8ucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YWQ5MGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoCkBAIC0wLDAgKzEsMTQ1IEBACitGcm9tIGJmZjAzZjkyYzBkOGJhZTExM2UwYzcyMzRjNzE5ZjgzODU4MDhiMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZWZmIFdhbm5hbWFrZXIgPGplZmZfd2FubmFtYWtlckBjYWJsZS5jb21jYXN0LmNvbT4KK0RhdGU6IFNhdCwgMjcgSmFuIDIwMTggMTI6Mjg6MzEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8xOF0gQWxsb3cgbXVsdGlwbGUgd2F5bGFuZCBjb21wb3NpdG9yIHN0YXRlIGRhdGEgcGVyCisgcHJvY2VzcworCitXaGVuIGVnbEJpbmRXYXlsYW5kRGlzcGxheVdMIGlzIGNhbGxlZCBzdG9yZSB0aGUgd2xfZ2xvYmFsCitjcmVhdGVkIGluIGEgbGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIHdheWxhbmQgZGlzcGxheS4KK1RoaXMgYWxsb3dzIG11bHRpcGxlIHdheWxhbmQgY29tcG9zaXRvciBpbnN0YW5jZXMgdG8gYmUKK2NyZWF0ZWQgYW5kIHVzZWQgcGVyIHByb2Nlc3MuIFRoaXMgc2NlbmFyaW8gaXMgY29tbW9uIGZvcgorYXBwbGljYXRpb25zIGludGVncmF0aW5nIGV4dGVybmwgcHJvY2VzcyBVSSBlbGVtZW50cwordmlhIGVtYmVkZGVkIGNvbXBvc2l0aW9uIGUuZy4gd2VzdGVyb3MKKworU2lnbmVkLW9mZi1ieTogSmVmZiBXYW5uYW1ha2VyIDxqZWZmX3dhbm5hbWFrZXJAY2FibGUuY29tY2FzdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMgfCAgMiArLQorIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oIHwgMTEgKysrKystCisgaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKK2luZGV4IGQ3ZTc5OGUuLjYwYmRiNjMgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYworKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMKK0BAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpCisgeworICAgIGlmICghcHJvY2Vzcy0+aW5pdGVkKSB7CisgI2lmZGVmIEJVSUxEX1dBWUxBTkQKKy0gICAgICBwcm9jZXNzLT53bF9nbG9iYWwgPSBOVUxMOworKyAgICAgIHByb2Nlc3MtPndsU3RhdGVNYXAgPSBOVUxMOworICNlbmRpZgorIAorICAgICAgIGlmICgha2hybl9wb2ludGVyX21hcF9pbml0KCZwcm9jZXNzLT5jb250ZXh0cywgNjQpKQorZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKK2luZGV4IDYxNWY3YjQuLjRmYTg2ZjcgMTAwNjQ0CistLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAorKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgKK0BAIC0xNzAsNiArMTcwLDE1IEBAIHN0YXRpYyBJTkxJTkUgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICpDTElFTlRfR0VUX0NIRUNLX1RIUkVBRF9TVEFURSh2b2lkKQorICAgIHJldHVybiAoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICopcGxhdGZvcm1fdGxzX2dldF9jaGVjayhjbGllbnRfdGxzKTsKKyB9CisgCisrI2lmZGVmIEJVSUxEX1dBWUxBTkQKKyt0eXBlZGVmIHN0cnVjdCBXQVlMQU5EX1NUQVRFCisreworKyAgIHN0cnVjdCBXQVlMQU5EX1NUQVRFICpuZXh0OworKyAgIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5OworKyAgIHN0cnVjdCB3bF9nbG9iYWwgKndsX2dsb2JhbDsKKyt9IFdBWUxBTkRfU1RBVEVfVDsKKysjZW5kaWYKKysKKyAvKgorICAgIHBlci1wcm9jZXNzIHN0YXRlCisgCitAQCAtMzE4LDcgKzMyNyw3IEBAIHN0cnVjdCBDTElFTlRfUFJPQ0VTU19TVEFURSB7CisgICAgc3RydWN0IHdsX2V2ZW50X3F1ZXVlICp3bF9xdWV1ZTsKKyAKKyAgICAvKiBDb21wb3NpdG9yLXNpZGUgV2F5bGFuZCBzdGF0ZSAqLworLSAgIHN0cnVjdCB3bF9nbG9iYWwgKndsX2dsb2JhbDsKKysgICBXQVlMQU5EX1NUQVRFX1QgKndsU3RhdGVNYXA7CisgI2VuZGlmCisgfTsKKyAKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCitpbmRleCA5ZWY4OWNkLi5hYmQ1YWIzIDEwMDY0NAorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCitAQCAtMjA4LDE3ICsyMDgsMzggQEAgZWdsQmluZFdheWxhbmREaXNwbGF5V0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQorIHsKKyAgICBDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZDsKKyAgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzOworKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVJdGVyOworKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVOZXc7CisrICAgc3RydWN0IHdsX2dsb2JhbCAqd2xfZ2xvYmFsOworIAorICAgIGlmICghQ0xJRU5UX0xPQ0tfQU5EX0dFVF9TVEFURVMoZHB5LCAmdGhyZWFkLCAmcHJvY2VzcykpCisgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAKKy0gICBpZiAocHJvY2Vzcy0+d2xfZ2xvYmFsICE9IE5VTEwpCisrICAgc3RhdGVJdGVyPSBwcm9jZXNzLT53bFN0YXRlTWFwOworKyAgIHdoaWxlKCBzdGF0ZUl0ZXIgKQorKyAgIHsKKysgICAgICBpZiAoIHN0YXRlSXRlci0+ZGlzcGxheSA9PSBkaXNwbGF5ICkKKysgICAgICAgICBnb3RvIGVycm9yOworKyAgICAgIHN0YXRlSXRlcj0gc3RhdGVJdGVyLT5uZXh0OworKyAgIH0KKysKKysgICB3bF9nbG9iYWwgPSB3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXksICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsIDEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaW5kX2Rpc3BtYW54KTsKKysgICBpZiAod2xfZ2xvYmFsID09IE5VTEwpCisgICAgICAgZ290byBlcnJvcjsKKyAKKy0gICBwcm9jZXNzLT53bF9nbG9iYWwgPSB3bF9nbG9iYWxfY3JlYXRlKGRpc3BsYXksICZ3bF9kaXNwbWFueF9pbnRlcmZhY2UsIDEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBiaW5kX2Rpc3BtYW54KTsKKy0gICBpZiAocHJvY2Vzcy0+d2xfZ2xvYmFsID09IE5VTEwpCisrICAgc3RhdGVOZXc9IChXQVlMQU5EX1NUQVRFX1QqKWNhbGxvYyggMSwgc2l6ZW9mKFdBWUxBTkRfU1RBVEVfVCkpOworKyAgIGlmIChzdGF0ZU5ldyA9PSBOVUxMICkKKysgICB7CisrICAgICAgd2xfZ2xvYmFsX2Rlc3Ryb3kod2xfZ2xvYmFsKTsKKyAgICAgICBnb3RvIGVycm9yOworKyAgIH0KKysKKysgICBzdGF0ZU5ldy0+bmV4dD0gcHJvY2Vzcy0+d2xTdGF0ZU1hcDsKKysgICBzdGF0ZU5ldy0+ZGlzcGxheT0gZGlzcGxheTsKKysgICBzdGF0ZU5ldy0+d2xfZ2xvYmFsPSB3bF9nbG9iYWw7CisrICAgcHJvY2Vzcy0+d2xTdGF0ZU1hcD0gc3RhdGVOZXc7CisrICAgQ0xJRU5UX1VOTE9DSygpOworIAorICAgIHJldHVybiBFR0xfVFJVRTsKKyAKK0BAIC0yMzIsMTIgKzI1MywyOSBAQCBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKKyB7CisgICAgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQ7CisgICAgQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzczsKKysgICBXQVlMQU5EX1NUQVRFX1QgKnN0YXRlSXRlcjsKKysgICBXQVlMQU5EX1NUQVRFX1QgKnN0YXRlUHJldjsKKyAKKyAgICBpZiAoIUNMSUVOVF9MT0NLX0FORF9HRVRfU1RBVEVTKGRweSwgJnRocmVhZCwgJnByb2Nlc3MpKQorICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgCistICAgd2xfZ2xvYmFsX2Rlc3Ryb3kocHJvY2Vzcy0+d2xfZ2xvYmFsKTsKKy0gICBwcm9jZXNzLT53bF9nbG9iYWwgPSBOVUxMOworKyAgIHN0YXRlUHJldj0gTlVMTDsKKysgICBzdGF0ZUl0ZXI9IHByb2Nlc3MtPndsU3RhdGVNYXA7CisrICAgd2hpbGUoIHN0YXRlSXRlciApCisrICAgeworKyAgICAgIGlmICggc3RhdGVJdGVyLT5kaXNwbGF5ID09IGRpc3BsYXkgKQorKyAgICAgIHsKKysgICAgICAgICB3bF9nbG9iYWxfZGVzdHJveShzdGF0ZUl0ZXItPndsX2dsb2JhbCk7CisrICAgICAgICAgaWYgKCBzdGF0ZVByZXYgKQorKyAgICAgICAgICAgIHN0YXRlUHJldi0+bmV4dD0gc3RhdGVJdGVyLT5uZXh0OworKyAgICAgICAgIGVsc2UKKysgICAgICAgICAgICBwcm9jZXNzLT53bFN0YXRlTWFwPSBzdGF0ZUl0ZXItPm5leHQ7CisrICAgICAgICAgZnJlZSggc3RhdGVJdGVyICk7CisrICAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgICAgIHN0YXRlUHJldj0gc3RhdGVJdGVyOworKyAgICAgIHN0YXRlSXRlcj0gc3RhdGVJdGVyLT5uZXh0OworKyAgIH0KKyAKKyAgICBDTElFTlRfVU5MT0NLKCk7CisgCistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxNy1raHJvbm9zLWJhY2twb3J0LXR5cGVkZWYtZm9yLUVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTcta2hyb25vcy1iYWNrcG9ydC10eXBlZGVmLWZvci1FR0xfRVhUX2ltYWdlX2RtYV9idWZfaS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDZjZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL2ZpbGVzLzAwMTcta2hyb25vcy1iYWNrcG9ydC10eXBlZGVmLWZvci1FR0xfRVhUX2ltYWdlX2RtYV9idWZfaS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDhlZmQ4MWU5NmJkZDNiZTY4MDYzYTZmZDMyYmU0NzU1MjI1ZTkzYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIdWdvIEhyb21pYyA8aGhyb21pY0BnbWFpbC5jb20+CitEYXRlOiBTdW4sIDEzIE1heSAyMDE4IDEwOjQ5OjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMThdIGtocm9ub3M6IGJhY2twb3J0IHR5cGVkZWYgZm9yCisgRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydAorCitUaGUgYGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VgIHBhY2thZ2UgdmVyc2lvbiBgMS4xNGAgdXNlcyBgRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydGAsIHdoaWNoCitleHBlY3RzIHRoZSBgRUdMdWludDY0S0hSYCB0eXBlZGVmIHRoYXQgaXMgcHJlc2VudCBpbiByZWNlbnQgdmVyc2lvbnMgb2YgS2hyb25vcy4KK0hvd2V2ZXIsIHRoZSBvbGRlciB2ZXJzaW9uIGluY2x1ZGVkIGluIHVzZXJsYW5kIGRvZXMgbm90IHByb3ZpZGUgaXQuCisKK1RoaXMgcGF0Y2ggYmFja3BvcnRzIHRoZSBtaXNzaW5nIHR5cGVkZWYgZnJvbSByZWNlbnQgS2hyb25vcyBpbnRvIHVzZXJsYW5kLgorU2VlOiA8aHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvRUdML2FwaS9FR0wvZWdsZXh0Lmg+CisKK1N1Ym1pdHRlZCB0byB1c2VybGFuZCBpbiA8aHR0cHM6Ly9naXRodWIuY29tL3Jhc3BiZXJyeXBpL3VzZXJsYW5kL3B1bGwvNDY3PgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmggfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaCBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oCitpbmRleCBkN2U1YmE3Li5kY2M5MGNlIDEwMDc1NQorLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKKysrKyBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oCitAQCAtMTkwLDYgKzE5MCwxMCBAQCB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xTSUdOQUxTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeQorIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisgI2VuZGlmCisgCisrI2lmbmRlZiBFR0xfS0hSX3VpbnQ2NF90eXBlZGVmCisrI2RlZmluZSBFR0xfS0hSX3VpbnQ2NF90eXBlZGVmIDEKKyt0eXBlZGVmIGtocm9ub3NfdWludDY0X3QgRUdMdWludDY0S0hSOworKyNlbmRpZiAvKiBFR0xfS0hSX3VpbnQ2NF90eXBlZGVmICovCisgCisgI2lmbmRlZiBFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkKKyAjZGVmaW5lIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSAxCistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxOC1BZGQtRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5LXJlbGF0ZWQtZGVmaW5lcy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC9maWxlcy8wMDE4LUFkZC1FR0xfSU1HX2NvbnRleHRfcHJpb3JpdHktcmVsYXRlZC1kZWZpbmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZDg2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvZmlsZXMvMDAxOC1BZGQtRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5LXJlbGF0ZWQtZGVmaW5lcy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDljZmVhNDc2MWJhNjg3NzZmZDliZmFjNjcxYjc0YzcxNzRmOTkwMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNSBKdWwgMjAxOCAwMDo0ODozOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDE4LzE4XSBBZGQgRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5IHJlbGF0ZWQgZGVmaW5lcworCitUaGVzZSBkZWZpbmVzIGFyZSBuZWVkZWQgZm9yIGNvbXBpbGluZyB3ZXN0b24gNC54Cit0YWtlbiBmcm9tIEtocm9ub3MgaGVhZGVycworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmggfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmggYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAoraW5kZXggZGNjOTBjZS4uNjg0MmJmOSAxMDA3NTUKKy0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oCisrKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAorQEAgLTkzLDYgKzkzLDE0IEBAIHR5cGVkZWYgRUdMSW1hZ2VLSFIgKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVJTUFHRUtIUlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMCisgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZUtIUiBpbWFnZSk7CisgI2VuZGlmCisgCisrI2lmbmRlZiBFR0xfSU1HX2NvbnRleHRfcHJpb3JpdHkKKysjZGVmaW5lIEVHTF9JTUdfY29udGV4dF9wcmlvcml0eSAxCisrI2RlZmluZSBFR0xfQ09OVEVYVF9QUklPUklUWV9MRVZFTF9JTUcJCTB4MzEwMgorKyNkZWZpbmUgRUdMX0NPTlRFWFRfUFJJT1JJVFlfSElHSF9JTUcJCTB4MzEwMQorKyNkZWZpbmUgRUdMX0NPTlRFWFRfUFJJT1JJVFlfTUVESVVNX0lNRwkJMHgzMTAyCisrI2RlZmluZSBFR0xfQ09OVEVYVF9QUklPUklUWV9MT1dfSU1HCQkweDMxMDMKKysjZW5kaWYgLyogRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5ICovCisrCisgI2lmbmRlZiBFR0xfS0hSX3ZnX3BhcmVudF9pbWFnZQorICNkZWZpbmUgRUdMX0tIUl92Z19wYXJlbnRfaW1hZ2UgMQorICNkZWZpbmUgRUdMX1ZHX1BBUkVOVF9JTUFHRV9LSFIJCQkweDMwQkEJLyogZWdsQ3JlYXRlSW1hZ2VLSFIgdGFyZ2V0ICovCistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMS1BbGxvdy1hcHBsaWNhdGlvbnMtdG8tc2V0LW5leHQtcmVzb3VyY2UtaGFuZGxlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDEtQWxsb3ctYXBwbGljYXRpb25zLXRvLXNldC1uZXh0LXJlc291cmNlLWhhbmRsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzZjI3OS4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMS1BbGxvdy1hcHBsaWNhdGlvbnMtdG8tc2V0LW5leHQtcmVzb3VyY2UtaGFuZGxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLUZyb20gMGE2NGRjNjFkM2Q3ZGI2OTM4OTE1N2FlNzU3MjAzYjRiM2FmZGJmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERvbSBDb2JsZXkgPGRjNEBicm9hZGNvbS5jb20+Ci1EYXRlOiBUdWUsIDkgSnVsIDIwMTMgMDk6MjY6MjYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xNl0gQWxsb3cgYXBwbGljYXRpb25zIHRvIHNldCBuZXh0IHJlc291cmNlIGhhbmRsZQotCi1UaGlzIHBhdGNoIGFkZHMgcHJvdmlzaW9ucyBpbiB1c2VybGFuZCB0bwotbGV0IGFwcHMgY2FsbGVycyBzZXQgdGhlIG5leHQgcmVuZGVyZWluZyBkaXNwbWFueCByZXNvdXJjZS4KLUl0J3MgdXNlZnVsIGZvciBpbXBsZW1lbnRpbmcsIHNheSwgYSBidWZmZXIgY2Fyb3VzZWwuCi0tLS0KLSBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmggfCAgMiArKwotIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2ludF9pZHMuaCAgICB8ICAyICsrCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyAgICAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKystCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oIHwgIDMgKystCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oICAgICAgIHwgIDUgKysrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmgKLWluZGV4IGRjNDM1MWQuLjEwZWEwNjAgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcnBjLmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9ycGMuaAotQEAgLTY4NSw2ICs2ODUsNyBAQCBzdGF0aWMgSU5MSU5FIHZvaWQgcnBjX2NhbGwxMl9vdXRfY3RybChDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZCx1aW50MzJfdCBpZAotIHN0YXRpYyBJTkxJTkUgdm9pZCBycGNfY2FsbDEzX291dF9jdHJsKENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkLHVpbnQzMl90IGlkLCB1aW50MzJfdCBwMCwgdWludDMyX3QgcDEsIHVpbnQzMl90IHAyLCB1aW50MzJfdCBwMywgdWludDMyX3QgcDQsIHVpbnQzMl90IHA1LCB1aW50MzJfdCBwNiwgdWludDMyX3QgcDcsIHVpbnQzMl90IHA4LCB1aW50MzJfdCBwOSwgdWludDMyX3QgcDEwLCB1aW50MzJfdCBwMTEsIHZvaWQgKm91dCkgICAgICAgICAgICAgICB7IHJwY19iZWdpbih0aHJlYWQpOyBSUENfQ0FMTCh0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEpOyAgICAgIHJwY19yZWN2KHRocmVhZCwgb3V0LCBOVUxMLCAoUlBDX1JFQ1ZfRkxBR19UKShSUENfUkVDVl9GTEFHX0NUUkwgfCBSUENfUkVDVl9GTEFHX0xFTikpOyBycGNfZW5kKHRocmVhZCk7IH0KLSBzdGF0aWMgSU5MSU5FIHZvaWQgcnBjX2NhbGwxNF9vdXRfY3RybChDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZCx1aW50MzJfdCBpZCwgdWludDMyX3QgcDAsIHVpbnQzMl90IHAxLCB1aW50MzJfdCBwMiwgdWludDMyX3QgcDMsIHVpbnQzMl90IHA0LCB1aW50MzJfdCBwNSwgdWludDMyX3QgcDYsIHVpbnQzMl90IHA3LCB1aW50MzJfdCBwOCwgdWludDMyX3QgcDksIHVpbnQzMl90IHAxMCwgdWludDMyX3QgcDExLCB1aW50MzJfdCBwMTIsIHZvaWQgKm91dCkgeyBycGNfYmVnaW4odGhyZWFkKTsgUlBDX0NBTEwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIpOyBycGNfcmVjdih0aHJlYWQsIG91dCwgTlVMTCwgKFJQQ19SRUNWX0ZMQUdfVCkoUlBDX1JFQ1ZfRkxBR19DVFJMIHwgUlBDX1JFQ1ZfRkxBR19MRU4pKTsgcnBjX2VuZCh0aHJlYWQpOyB9Ci0gc3RhdGljIElOTElORSB2b2lkIHJwY19jYWxsMTVfb3V0X2N0cmwoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQsdWludDMyX3QgaWQsIHVpbnQzMl90IHAwLCB1aW50MzJfdCBwMSwgdWludDMyX3QgcDIsIHVpbnQzMl90IHAzLCB1aW50MzJfdCBwNCwgdWludDMyX3QgcDUsIHVpbnQzMl90IHA2LCB1aW50MzJfdCBwNywgdWludDMyX3QgcDgsIHVpbnQzMl90IHA5LCB1aW50MzJfdCBwMTAsIHVpbnQzMl90IHAxMSwgdWludDMyX3QgcDEyLCB1aW50MzJfdCBwMTMsIHZvaWQgKm91dCkgeyBycGNfYmVnaW4odGhyZWFkKTsgUlBDX0NBTEwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIHAxMyk7IHJwY19yZWN2KHRocmVhZCwgb3V0LCBOVUxMLCAoUlBDX1JFQ1ZfRkxBR19UKShSUENfUkVDVl9GTEFHX0NUUkwgfCBSUENfUkVDVl9GTEFHX0xFTikpOyBycGNfZW5kKHRocmVhZCk7IH0KLStzdGF0aWMgSU5MSU5FIHZvaWQgcnBjX2NhbGwxNl9vdXRfY3RybChDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZCx1aW50MzJfdCBpZCwgdWludDMyX3QgcDAsIHVpbnQzMl90IHAxLCB1aW50MzJfdCBwMiwgdWludDMyX3QgcDMsIHVpbnQzMl90IHA0LCB1aW50MzJfdCBwNSwgdWludDMyX3QgcDYsIHVpbnQzMl90IHA3LCB1aW50MzJfdCBwOCwgdWludDMyX3QgcDksIHVpbnQzMl90IHAxMCwgdWludDMyX3QgcDExLCB1aW50MzJfdCBwMTIsIHVpbnQzMl90IHAxMywgdWludDMyX3QgcDE0LCB2b2lkICpvdXQpIHsgcnBjX2JlZ2luKHRocmVhZCk7IFJQQ19DQUxMKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBwMTMsIHAxNCk7IHJwY19yZWN2KHRocmVhZCwgb3V0LCBOVUxMLCAoUlBDX1JFQ1ZfRkxBR19UKShSUENfUkVDVl9GTEFHX0NUUkwgfCBSUENfUkVDVl9GTEFHX0xFTikpOyBycGNfZW5kKHRocmVhZCk7IH0KLSAjZW5kaWYKLSAKLSAjZGVmaW5lIFJQQ19DQUxMMV9PVVRfQ1RSTChmbiwgdGhyZWFkLCBpZCwgb3V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnBjX2NhbGwxX291dF9jdHJsKHRocmVhZCwgaWQsIG91dCkKLUBAIC03MDIsNiArNzAzLDcgQEAgc3RhdGljIElOTElORSB2b2lkIHJwY19jYWxsMTVfb3V0X2N0cmwoQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQsdWludDMyX3QgaWQKLSAjZGVmaW5lIFJQQ19DQUxMMTNfT1VUX0NUUkwoZm4sIHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgb3V0KSAgICAgIHJwY19jYWxsMTNfb3V0X2N0cmwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBvdXQpCi0gI2RlZmluZSBSUENfQ0FMTDE0X09VVF9DVFJMKGZuLCB0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIHAxMiwgb3V0KSBycGNfY2FsbDE0X291dF9jdHJsKHRocmVhZCwgaWQsIHAwLCBwMSwgcDIsIHAzLCBwNCwgcDUsIHA2LCBwNywgcDgsIHA5LCBwMTAsIHAxMSwgcDEyLCBvdXQpCi0gI2RlZmluZSBSUENfQ0FMTDE1X09VVF9DVFJMKGZuLCB0aHJlYWQsIGlkLCBwMCwgcDEsIHAyLCBwMywgcDQsIHA1LCBwNiwgcDcsIHA4LCBwOSwgcDEwLCBwMTEsIHAxMiwgcDEzLCBvdXQpIHJwY19jYWxsMTVfb3V0X2N0cmwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIHAxMywgb3V0KQotKyNkZWZpbmUgUlBDX0NBTEwxNl9PVVRfQ1RSTChmbiwgdGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIHAxMywgcDE0LCBvdXQpIHJwY19jYWxsMTZfb3V0X2N0cmwodGhyZWFkLCBpZCwgcDAsIHAxLCBwMiwgcDMsIHA0LCBwNSwgcDYsIHA3LCBwOCwgcDksIHAxMCwgcDExLCBwMTIsIHAxMywgcDE0LCBvdXQpCi0gCi0gIyBpZiAhZGVmaW5lZChfX1NZTUJJQU4zMl9fKSAgLy91c2UgZnVuY3Rpb25zIGRlZmluZWQgaW4ga2hycGMuY3BwCi0gc3RhdGljIElOTElORSB1aW50MzJfdCBycGNfY2FsbDFfb3V0X2N0cmxfcmVzKENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkLHVpbnQzMl90IGlkLCB2b2lkICpvdXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHVpbnQzMl90IHJlczsgcnBjX2JlZ2luKHRocmVhZCk7IFJQQ19DQUxMKHRocmVhZCwgaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBycGNfcmVjdih0aHJlYWQsIG91dCwgTlVMTCwgKFJQQ19SRUNWX0ZMQUdfVCkoUlBDX1JFQ1ZfRkxBR19SRVMgfCBSUENfUkVDVl9GTEFHX0NUUkwgfCBSUENfUkVDVl9GTEFHX0xFTikpOyBycGNfZW5kKHRocmVhZCk7IHJldHVybiByZXM7IH0KLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9pbnRfaWRzLmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9pbnRfaWRzLmgKLWluZGV4IDgzNzhmNGEuLmVjOTYxZTAgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9pbnRfaWRzLmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2ludF9pZHMuaAotQEAgLTM2Nyw2ICszNjcsNyBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotIAotICNkZWZpbmUgRUdMSU5UQ1JFQVRFU1VSRkFDRV9JRCAgICAgICAgICAgIDB4NDAwMAotKyNkZWZpbmUgRUdMSU5UQ1JFQVRFU1VSRkFDRV9JRF9WMiAgICAgICAgIDB4NDEwMAotICNkZWZpbmUgRUdMSU5UQ1JFQVRFR0xFUzExX0lEICAgICAgICAgICAgIDB4NDAwMQotICNkZWZpbmUgRUdMSU5UQ1JFQVRFR0xFUzIwX0lEICAgICAgICAgICAgIDB4NDAwMgotICNkZWZpbmUgRUdMSU5UQ1JFQVRFVkdfSUQgICAgICAgICAgICAgICAgIDB4NDAwMwotQEAgLTM3Nyw2ICszNzgsNyBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAjZGVmaW5lIEVHTElOVE1BS0VDVVJSRU5UX0lEICAgICAgICAgICAgICAweDQwMDgKLSAjZGVmaW5lIEVHTElOVEZMVVNIQU5EV0FJVF9JRCAgICAgICAgICAgICAweDQwMDkKLSAjZGVmaW5lIEVHTElOVFNXQVBCVUZGRVJTX0lEICAgICAgICAgICAgICAweDQwMGEKLSsjZGVmaW5lIEVHTElOVFNXQVBCVUZGRVJTX0lEX1YyICAgICAgICAgICAweDQxMGEKLSAjZGVmaW5lIEVHTElOVFNFTEVDVE1JUE1BUF9JRCAgICAgICAgICAgICAweDQwMGIKLSAjZGVmaW5lIEVHTElOVEZMVVNIX0lEICAgICAgICAgICAgICAgICAgICAweDQwMGMKLSAjZGVmaW5lIEVHTElOVEdFVENPTE9SREFUQV9JRCAgICAgICAgICAgICAweDQwMGQKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYwotaW5kZXggOWQ2MTdjOC4uYjhiYjM3NCAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLUBAIC0xNjIsNiArMTYyLDE3IEBAIHN0YXRpYyB2b2lkIGVnbF9jdXJyZW50X3JlbGVhc2UoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcywgRUdMX0NVUlJFTlRfVCAqCi0gdm9pZCBlZ2xfZ2xfZmx1c2hfY2FsbGJhY2soYm9vbCB3YWl0KTsKLSB2b2lkIGVnbF92Z19mbHVzaF9jYWxsYmFjayhib29sIHdhaXQpOwotIAotKyNpbmNsdWRlICJpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54X3R5cGVzLmgiCi0rLyoqSEFDS0hBQ0sgLSBnaXZlIHVzIHRoZSBhYmlsaXR5IHRvIGluamVjdCBhIERpc3BtYW5YIAotKyAqIHJlc291cmNlIGhhbmRsZSBpbnRvIHRoZSBDcmVhdGVXaW5kb3dTdXJmYWNlIGFuZCAKLSsgKiBTd2FwQnVmZmVycyBjYWxscyAqLyAKLStzdGF0aWMgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV4dF9yZXNvdXJjZV9oYW5kbGU7Ci0rCi0rRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2V0TmV4dFJlc291cmNlSGFuZGxlKERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIGhhbmRsZSkKLSt7Ci0rICAgbmV4dF9yZXNvdXJjZV9oYW5kbGUgPSBoYW5kbGU7Ci0rfQotKwotIC8qCi0gVE9ETzogZG8gYW4gUlBDIGNhbGwgdG8gbWFrZSBzdXJlIHRoZSBLaHJvbm9zIHZsbCBpcyBsb2FkZWQgKGFuZCB0aGF0IGl0IHN0YXlzIGxvYWRlZCB1bnRpbCBlZ2xUZXJtaW5hdGUpCi0gQWxzbyBhZmZlY3RzIGdsb2JhbCBpbWFnZSAoYW5kIHBvc3NpYmx5IG90aGVycz8pCi1AQCAtNjQ0LDcgKzY1NSw4IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Jlc291cmNlX2hhbmRsZSk7Ci0gCi0gICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtODg5LDcgKzkwMSw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pcG1hcF90ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZV9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlX3RhcmdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCk7Ci0gCi0gICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtMTAzMSw3ICsxMDQzLDcgQEAgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeG1hcCwgKChzZXJ2ZXJfaGFuZGxlWzBdID09IDApICYmIChzZXJ2ZXJfaGFuZGxlWzFdID09ICh1aW50MzJfdCkoLTEpKSkgPyBOVUxMIDogc2VydmVyX2hhbmRsZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhtYXAsICgoc2VydmVyX2hhbmRsZVswXSA9PSAwKSAmJiAoc2VydmVyX2hhbmRsZVsxXSA9PSAodWludDMyX3QpKC0xKSkpID8gTlVMTCA6IHNlcnZlcl9oYW5kbGUsIDApOwotIAotICAgICAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtocm5fcG9pbnRlcl9tYXBfaW5zZXJ0KCZwcm9jZXNzLT5zdXJmYWNlcywgcHJvY2Vzcy0+bmV4dF9zdXJmYWNlLCBzdXJmYWNlKSkgewotQEAgLTIzMDMsNiArMjMxNSwxOCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmKQotIAotICAgICAgICAgICAgICAgIHZjb3NfbG9nX3RyYWNlKCJlZ2xTd2FwQnVmZmVycyBzZXJ2ZXIgY2FsbCIpOwotIAotKyAgICAgICAgICAgICAgIGlmIChuZXh0X3Jlc291cmNlX2hhbmRsZSkKLSsgICAgICAgICAgICAgICBSUENfQ0FMTDcoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKLSsgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0rICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSURfVjIsCi0rICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+c2VydmVyYnVmZmVyKSwKLSsgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT53aWR0aCksCi0rICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+aGVpZ2h0KSwKLSsgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5pbnRlcm5hbF9oYW5kbGUpLAotKyAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPnN3YXBfYmVoYXZpb3IgPT0gRUdMX0JVRkZFUl9QUkVTRVJWRUQgPyAxIDogMCksCi0rICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoa2hybl9wbGF0Zm9ybV9nZXRfd2luZG93X3Bvc2l0aW9uKHN1cmZhY2UtPndpbikpLAotKyAgICAgICAgICAgICAgICAgICAgIFJQQ19JTlQobmV4dF9yZXNvdXJjZV9oYW5kbGUpKTsKLSsgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUlBDX0NBTEw2KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAotICAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lELAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotaW5kZXggNjg0NmRmYS4uMTI4MzI1ZSAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi1AQCAtMzE0LDcgKzMxNCw4IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKLSAgICBFR0xlbnVtIHRleHR1cmVfZm9ybWF0LAotICAgIEVHTGVudW0gdGV4dHVyZV90YXJnZXQsCi0gICAgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAsCi0tICAgY29uc3QgdWludDMyX3QgKnBpeG1hcF9zZXJ2ZXJfaGFuZGxlKQotKyAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSwKLSsgICBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBuZXh0X3Jlc291cmNlX2hhbmRsZSkKLSB7Ci0gICAgS0hSTl9JTUFHRV9GT1JNQVRfVCBjb2xvcjsKLSAgICBLSFJOX0lNQUdFX0ZPUk1BVF9UIGRlcHRoOwotQEAgLTQ3Myw2ICs0NzQsMjcgQEAgRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfY3JlYXRlKAotICNlbmRpZgotICAgICAgICAgIHVpbnQzMl90IHJlc3VsdHNbM107Ci0gCi0rICAgICAgICAgaWYgKG5leHRfcmVzb3VyY2VfaGFuZGxlKQotKyAgICAgICAgIFJQQ19DQUxMMTZfT1VUX0NUUkwoZWdsSW50Q3JlYXRlU3VyZmFjZV9pbXBsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UQ1JFQVRFU1VSRkFDRV9JRF9WMiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHNlcnZlcndpbiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChidWZmZXJzKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHdpZHRoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKGhlaWdodCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChjb2xvciksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChkZXB0aCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChtYXNrKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKG11bHRpKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKGxhcmdlc3RfcGJ1ZmZlciksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChtaXBtYXBfdGV4dHVyZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChjb25maWdfZGVwdGhfYml0cyksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChjb25maWdfc3RlbmNpbF9iaXRzKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHNlbV9uYW1lKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHR5cGUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChuZXh0X3Jlc291cmNlX2hhbmRsZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzKTsKLSsgICAgICAgICBlbHNlCi0gICAgICAgICAgUlBDX0NBTEwxNV9PVVRfQ1RSTChlZ2xJbnRDcmVhdGVTdXJmYWNlX2ltcGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJTlRDUkVBVEVTVVJGQUNFX0lELAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaCBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAotaW5kZXggYzk5ZDQ0Yy4uYjViZjcwYSAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5oCi1AQCAtMzIyLDcgKzMyMiw4IEBAIGV4dGVybiBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCi0gICAgRUdMZW51bSB0ZXh0dXJlX2Zvcm1hdCwKLSAgICBFR0xlbnVtIHRleHR1cmVfdGFyZ2V0LAotICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4bWFwLAotLSAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSk7Ci0rICAgY29uc3QgdWludDMyX3QgKnBpeG1hcF9zZXJ2ZXJfaGFuZGxlLAotKyAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlKTsKLSBleHRlcm4gRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfZnJvbV92Z19pbWFnZSgKLSAgICBWR0ltYWdlIHZnX2hhbmRsZSwKLSAgICBFR0xTdXJmYWNlIG5hbWUsCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCi1pbmRleCA4YTU3MzRjLi41MWIzNTgwIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKLUBAIC01Niw3ICs1Niw4IEBAIEZOKGludCwgZWdsSW50Q3JlYXRlU3VyZmFjZV9pbXBsLCAoCi0gICAgdWludDMyX3QgY29uZmlnX3N0ZW5jaWxfYml0cywKLSAgICB1aW50MzJfdCBzZW0sCi0gICAgdWludDMyX3QgdHlwZSwKLS0gICB1aW50MzJfdCAqcmVzdWx0cykpCi0rICAgdWludDMyX3QgKnJlc3VsdHMsCi0rICAgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV4dF9yZXNvdXJjZV9oYW5kbGUpKQotIAotIEZOKGludCwgZWdsSW50Q3JlYXRlUGJ1ZmZlckZyb21WR0ltYWdlX2ltcGwsICgKLSAgICBWR0ltYWdlIHZnX2hhbmRsZSwKLUBAIC0xMTAsNyArMTExLDcgQEAgRk4odm9pZCwgZWdsSW50TWFrZUN1cnJlbnRfaW1wbCwgKHVpbnQzMl90IHBpZF8wLCB1aW50MzJfdCBwaWRfMSwgdWludDMyX3QgZ2x2ZXIKLSBGTihpbnQsIGVnbEludEZsdXNoQW5kV2FpdF9pbXBsLCAodWludDMyX3QgZmx1c2hnbCwgdWludDMyX3QgZmx1c2h2ZykpCi0gRk4odm9pZCwgZWdsSW50Rmx1c2hfaW1wbCwgKHVpbnQzMl90IGZsdXNoZ2wsIHVpbnQzMl90IGZsdXNodmcpKQotIAotLUZOKHZvaWQsIGVnbEludFN3YXBCdWZmZXJzX2ltcGwsIChFR0xfU1VSRkFDRV9JRF9UIHMsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgcHJlc2VydmUsIHVpbnQzMl90IHBvc2l0aW9uKSkKLStGTih2b2lkLCBlZ2xJbnRTd2FwQnVmZmVyc19pbXBsLCAoRUdMX1NVUkZBQ0VfSURfVCBzLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQzMl90IHByZXNlcnZlLCB1aW50MzJfdCBwb3NpdGlvbiwgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV3X2JhY2tfYnVmZmVyKSkKLSBGTih2b2lkLCBlZ2xJbnRTZWxlY3RNaXBtYXBfaW1wbCwgKEVHTF9TVVJGQUNFX0lEX1QgcywgaW50IGxldmVsKSkKLSAKLSBGTih2b2lkLCBlZ2xJbnRHZXRDb2xvckRhdGFfaW1wbCwgKEVHTF9TVVJGQUNFX0lEX1QgcywgS0hSTl9JTUFHRV9GT1JNQVRfVCBmb3JtYXQsIHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQsIGludDMyX3Qgc3RyaWRlLCB1aW50MzJfdCB5X29mZnNldCwgdm9pZCAqZGF0YSkpCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMi13YXlsYW5kLUFkZC1zdXBwb3J0LWZvci10aGUtV2F5bGFuZC13aW5zeXMucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMi13YXlsYW5kLUFkZC1zdXBwb3J0LWZvci10aGUtV2F5bGFuZC13aW5zeXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MTM1MDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDItd2F5bGFuZC1BZGQtc3VwcG9ydC1mb3ItdGhlLVdheWxhbmQtd2luc3lzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg2MSArMCwwIEBACi1Gcm9tIDU2MDhlYzgwMDJiZTgzNzBlNzhjOWRiYjFlMDdjZWU0Y2ZiMThiNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUb21ldSBWaXpvc28gPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEuY29tPgotRGF0ZTogVHVlLCAxIE9jdCAyMDEzIDEzOjE5OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTZdIHdheWxhbmQ6IEFkZCBzdXBwb3J0IGZvciB0aGUgV2F5bGFuZCB3aW5zeXMKLQotKiBBZGRzIEVHTF9XTF9iaW5kX3dheWxhbmRfZGlzcGxheSBleHRlbnNpb24KLSogQWRkcyB3YXlsYW5kLWVnbCBsaWJyYXJ5Ci0qIEFkZHMgd2xfZGlzcG1hbnhfYnVmZmVyIHByb3RvY29sIGV4dGVuc2lvbgotCi1UT0RPOiBDaGVjayB0aGF0IHBsYXRmb3JtX2dldF9kaW1lbnNpb25zKCkgcmV0dXJuaW5nIHN3YXBjaGFpbl9jb3VudCA9PSAxIGlzIGNvcnJlY3QKLQotVE9ETzogUmVtb3ZlIHRoZSByZXF1aXJlbWVudCBvZiBwYXNzaW5nIGEgdmFsaWQgRGlzcG1hblggZWxlbWVudCBoYW5kbGUgdG8KLXRoZSBTd2FwQnVmZmVycyBhbmQgQ3JlYXRlU3VyZmFjZSBSUEMgY2FsbHMuIFRoaXMgd2lsbCByZW1vdmUgdGhlIG5lZWQgdG8gb3BlbgotYSBEaXNwbWFuWCBkaXNwbGF5IGZyb20gdGhlIGNsaWVudHMuCi0KLVRPRE86IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgc2hvdWxkIHByb2JhYmx5IGJlIGRlZmluZWQgaW4gYQotcHJpdmF0ZSBoZWFkZXIgdGhhdCBjYW4gYmUgaW5jbHVkZWQgZnJvbSBFR0wgYW5kIHZjXyogaW5zdGVhZCBvZiBpbgotdmNfdmNoaV9kaXNwbWFueC5oCi0tLS0KLSAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKwotIFJFQURNRS5tZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKLSBidWlsZG1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCArLQotIC4uLi9saW51eC9hcHBzL3Jhc3BpY2FtL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgIHwgICAyICstCi0gaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgfCAgNTMgKysrKy0KLSBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYyAgICAgICAgICAgICB8ICAxNSArKwotIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oICAgICAgICAgICAgIHwgIDEwICsKLSBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmggICAgICB8ICAgMyArCi0gaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3BsYXRmb3JtLmggICAgfCAgIDggKwotIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF91bm1hbmdsZS5oICAgIHwgICAzICsKLSAuLi4vY29tbW9uL2xpbnV4L2tocm5fY2xpZW50X3BsYXRmb3JtX2xpbnV4LmMgICAgICB8IDExNSArKysrKysrKy0tCi0gaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jICAgICAgfCAyMTUgKysrKysrKysrKysrKysrKysrCi0gLi4uL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaH0gICAgICAgICAgICAgICAgICAgfCAgNDYgKy0tLQotIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMgICAgICAgICAgICAgICAgIHwgIDkyICsrKysrLS0tCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfZ2V0X3Byb2MuYyAgICAgICAgfCAgMTEgKwotIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyAgICAgICAgIHwgIDQyICsrKy0KLSBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggICAgICAgICB8ICAzOCArKystCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oICAgICAgICAgICAgICAgfCAgIDIgKy0KLSBpbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYyAgICAgICAgICAgICAgICB8IDI0NiArKysrKysrKysrKysrKysrKysrKysKLSBpbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaCAgICAgICAgICAgICB8ICAyMyArKwotIGludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaCAgIHwgIDUzICsrKysrCi0gaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYyAgICAgICAgfCAgNTkgKysrKysKLSBpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbiAgICB8ICAxMCArCi0gaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgfCAgMjEgKy0KLSBpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54LmggICAgICAgICAgICAgICAgICB8ICAxMCArCi0gaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMgICAgICAgICAgICAgfCAgNDIgKysrKwotIGludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oICAgICAgICAgICAgIHwgIDE1ICsrCi0gaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sICAgICAgICAgICAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysKLSBtYWtlZmlsZXMvY21ha2UvV2F5bGFuZC5jbWFrZSAgICAgICAgICAgICAgICAgICAgICB8ICA3MiArKysrKysKLSAzMCBmaWxlcyBjaGFuZ2VkLCAxMjU3IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmMKLSBjb3B5IGludGVyZmFjZS97dm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaCA9PiBraHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaH0gKDU2JSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG1ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlCi0KLUluZGV4OiBnaXQvLmdpdGlnbm9yZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnLy5naXRpZ25vcmUKLSsrKyBnaXQvLmdpdGlnbm9yZQotQEAgLTMwLDMgKzMwLDQgQEAgYnVpbGQvCi0gKi5wdHMKLSAqLnBwbQotICoubWt2Ci0rKn4KLUluZGV4OiBnaXQvQ01ha2VMaXN0cy50eHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9DTWFrZUxpc3RzLnR4dAotKysrIGdpdC9DTWFrZUxpc3RzLnR4dAotQEAgLTI0LDYgKzI0LDE3IEBAIGluY2x1ZGUobWFrZWZpbGVzL2NtYWtlL2dsb2JhbF9zZXR0aW5ncy4KLSBpbmNsdWRlKG1ha2VmaWxlcy9jbWFrZS9hcm0tbGludXguY21ha2UpCi0gaW5jbHVkZShtYWtlZmlsZXMvY21ha2Uvdm1jcy5jbWFrZSkKLSAKLStpZiAoQlVJTERfV0FZTEFORCkKLSsgICBpbmNsdWRlKG1ha2VmaWxlcy9jbWFrZS9XYXlsYW5kLmNtYWtlKQotKwotKyAgICMgRmluZCBXYXlsYW5kIGxpYnJhcmllcwotKyAgIGZpbmRfcGFja2FnZShQa2dDb25maWcpCi0rICAgcGtnX2NoZWNrX21vZHVsZXMoV0FZTEFORF9DTElFTlQgd2F5bGFuZC1jbGllbnQgUkVRVUlSRUQpCi0rICAgcGtnX2NoZWNrX21vZHVsZXMoV0FZTEFORF9TRVJWRVIgd2F5bGFuZC1zZXJ2ZXIgUkVRVUlSRUQpCi0rCi0rICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLURCVUlMRF9XQVlMQU5EIikKLStlbmRpZigpCi0rCi0gZW5hYmxlX2xhbmd1YWdlKEFTTSkKLSAKLSAjIEdsb2JhbCBpbmNsdWRlIHBhdGhzCi1JbmRleDogZ2l0L1JFQURNRS5tZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL1JFQURNRS5tZAotKysrIGdpdC9SRUFETUUubWQKLUBAIC02LDMgKzYsNyBAQCBVc2UgYnVpbGRtZSB0byBidWlsZC4gSXQgcmVxdWlyZXMgY21ha2UKLSBodHRwczovL2dpdGh1Yi5jb20vcmFzcGJlcnJ5cGkvdG9vbHMvdHJlZS9tYXN0ZXIvYXJtLWJjbTI3MDgvZ2NjLWxpbmFyby1hcm0tbGludXgtZ251ZWFiaWhmLXJhc3BiaWFuCi0gCi0gTm90ZSB0aGF0IHRoaXMgcmVwb3NpdG9yeSBkb2VzIG5vdCBjb250YWluIHRoZSBzb3VyY2UgZm9yIHRoZSBlZGlkX3BhcnNlciBhbmQgdmNkYmcgYmluYXJpZXMgZHVlIHRvIGxpY2Vuc2luZyByZXN0cmljdGlvbnMuCi0rCi0rVG8gYnVpbGQgc3VwcG9ydCBmb3IgdGhlIFdheWxhbmQgd2luc3lzIGluIEVHTCwgZXhlY3V0ZSB0aGUgYnVpbGRtZSBzY3JpcHQgbGlrZSB0aGlzOgotKwotKyQgQlVJTERfV0FZTEFORD0xIC4vYnVpbGRtZS4KLUluZGV4OiBnaXQvYnVpbGRtZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2J1aWxkbWUKLSsrKyBnaXQvYnVpbGRtZQotQEAgLTgsNiArOCwxMCBAQCBmaQotIAotIEJVSUxEU1VCRElSPWBlY2hvICRCVUlMRFRZUEUgfCB0ciAnW0EtWl0nICdbYS16XSdgOwotIAotK2lmIFsgLW4gIiRCVUlMRF9XQVlMQU5EIiBdOyB0aGVuCi0rICAgICAgIFdBWUxBTkRfVkFSUz0iLURCVUlMRF9XQVlMQU5EPVRSVUUiCi0rZmkKLSsKLSBpZiBbICJhcm12NmwiID0gYGFyY2hgIF0gfHwgWyAiYXJtdjdsIiA9IGBhcmNoYCBdOyB0aGVuCi0gCSMgTmF0aXZlIGNvbXBpbGUgb24gdGhlIFJhc3BiZXJyeSBQaQotIAlta2RpciAtcCBidWlsZC9yYXNwYmVycnkvJEJVSUxEU1VCRElSCi1AQCAtMzIsOSArMzYsMTMgQEAgZWxpZiBbICIkMSIgPSAiLS1uYXRpdmUiIF07IHRoZW4KLSAJbWFrZSAtaiBgbnByb2NgICQqCi0gZWxzZQotIAkjIENyb3NzIGNvbXBpbGUgb24gYSBtb3JlIGNhcGFibGUgbWFjaGluZQotKwlpZiBbIC1uICIkQlVJTERfV0FZTEFORCIgXTsgdGhlbgotKwkJIyBVc2Ugd2F5bGFuZC1zY2FubmVyIGZyb20gdGhlIGJ1aWxkIHBsYXRmb3JtCi0rCQlXQVlMQU5EX1ZBUlMrPSIgLURXQVlMQU5EX1NDQU5ORVJfRVhFQ1VUQUJMRTpGSUxFUEFUSD0vdXNyL2Jpbi93YXlsYW5kLXNjYW5uZXIiCi0rCWZpCi0gCW1rZGlyIC1wIGJ1aWxkL2FybS1saW51eC8kQlVJTERTVUJESVIKLSAJcHVzaGQgYnVpbGQvYXJtLWxpbnV4LyRCVUlMRFNVQkRJUgotLQljbWFrZSAtRENNQUtFX1RPT0xDSEFJTl9GSUxFPS4uLy4uLy4uL21ha2VmaWxlcy9jbWFrZS90b29sY2hhaW5zL2FybS1saW51eC1nbnVlYWJpaGYuY21ha2UgLURDTUFLRV9CVUlMRF9UWVBFPSRCVUlMRFRZUEUgLi4vLi4vLi4KLSsJY21ha2UgLURDTUFLRV9UT09MQ0hBSU5fRklMRT0uLi8uLi8uLi9tYWtlZmlsZXMvY21ha2UvdG9vbGNoYWlucy9hcm0tbGludXgtZ251ZWFiaWhmLmNtYWtlIC1EQ01BS0VfQlVJTERfVFlQRT0kQlVJTERUWVBFICRXQVlMQU5EX1ZBUlMgLi4vLi4vLi4KLSAJbWFrZSAtaiBgbnByb2NgCi0gCi0gCWlmIFsgIiQxIiAhPSAiIiBdOyB0aGVuCi1JbmRleDogZ2l0L2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2FwcHMvcmFzcGljYW0vQ01ha2VMaXN0cy50eHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9ob3N0X2FwcGxpY2F0aW9ucy9saW51eC9hcHBzL3Jhc3BpY2FtL0NNYWtlTGlzdHMudHh0Ci0rKysgZ2l0L2hvc3RfYXBwbGljYXRpb25zL2xpbnV4L2FwcHMvcmFzcGljYW0vQ01ha2VMaXN0cy50eHQKLUBAIC0yOCw3ICsyOCw3IEBAIGFkZF9leGVjdXRhYmxlKHJhc3BpdmlkeXV2ICAke0NPTU1PTl9TT1UKLSAKLSBzZXQgKE1NQUxfTElCUyBtbWFsX2NvcmUgbW1hbF91dGlsIG1tYWxfdmNfY2xpZW50KQotIAotLXRhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXN0aWxsICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0IGJyY21HTEVTdjIgYnJjbUVHTCBtKQotK3RhcmdldF9saW5rX2xpYnJhcmllcyhyYXNwaXN0aWxsICR7TU1BTF9MSUJTfSB2Y29zIGJjbV9ob3N0IGJyY21HTEVTdjIgYnJjbUVHTCBtICR7V0FZTEFORF9TRVJWRVJfTElCUkFSSUVTfSAke1dBWUxBTkRfQ0xJRU5UX0xJQlJBUklFU30pCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHJhc3BpeXV2ICAgJHtNTUFMX0xJQlN9IHZjb3MgYmNtX2hvc3QpCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHJhc3BpdmlkICAgJHtNTUFMX0xJQlN9IHZjb3MgYmNtX2hvc3QpCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHJhc3BpdmlkeXV2ICAgJHtNTUFMX0xJQlN9IHZjb3MgYmNtX2hvc3QpCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL0NNYWtlTGlzdHMudHh0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKLSsrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvQ01ha2VMaXN0cy50eHQKLUBAIC02LDYgKzYsMTIgQEAKLSAjIGhhdmUgcXVpdGUgYSBmZXcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLCBhbmQgc28gdGhlIG9ubHkgd2F5Ci0gIyB0byBtYWtlIGl0IHdvcmsgc2VlbXMgdG8gYmUgdG8gaGF2ZSBldmVyeXRoaW5nIHN0YXRpYy4KLSAKLStpZiAoQlVJTERfV0FZTEFORCkKLStpbmNsdWRlX2RpcmVjdG9yaWVzKAotKyAgICR7V0FZTEFORF9TRVJWRVJfSU5DTFVERV9ESVJTfQotKykKLStlbmRpZiAoKQotKwotIHNldChFR0xfU09VUkNFCi0gICAgZWdsL2VnbF9jbGllbnRfY29uZmlnLmMKLSAgICBlZ2wvZWdsX2NsaWVudF9jb250ZXh0LmMKLUBAIC01NSwxMiArNjEsNTUgQEAgc2V0KENMSUVOVF9TT1VSQ0UKLSAgICBjb21tb24va2hybl9pbnRfaGFzaF9hc20ucwotICAgIGNvbW1vbi9raHJuX2NsaWVudF9jYWNoZS5jKQotIAotK3NldChFR0xfTElCUwotKyAgIGtocm5fY2xpZW50Ci0rICAgdmNoaXFfYXJtCi0rICAgdmNvcwotKyAgIGJjbV9ob3N0KQotKwotK2lmIChCVUlMRF9XQVlMQU5EKQotKyAgIHNldChFR0xfU09VUkNFCi0rICAgICAgJHtFR0xfU09VUkNFfQotKyAgICAgIGV4dC9lZ2xfd2F5bGFuZC5jCi0rICAgICAgY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5jKQotKwotKyAgIHNldChFR0xfTElCUwotKyAgICAgICR7RUdMX0xJQlN9Ci0rICAgICAgd2F5bGFuZC1jbGllbnQKLSsgICAgICB3YXlsYW5kLXNlcnZlcikKLSsKLSsgICBzZXQoV0FZTEFORF9FR0xfU09VUkNFCi0rICAgICAgd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYykKLSsKLSsgICB3YXlsYW5kX2FkZF9wcm90b2NvbF9zZXJ2ZXIoCi0rICAgICAgIEVHTF9TT1VSQ0UKLSsgICAgICAgLi4vLi4vaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCi0rICAgICAgIGRpc3BtYW54Ci0rICAgKQotKwotKyAgIHdheWxhbmRfYWRkX3Byb3RvY29sX2NsaWVudCgKLSsgICAgICAgRUdMX1NPVVJDRQotKyAgICAgICAuLi8uLi9pbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwKLSsgICAgICAgZGlzcG1hbngKLSsgICApCi0rCi0rICAgYWRkX2xpYnJhcnkod2F5bGFuZC1lZ2wgJHtTSEFSRUR9ICR7V0FZTEFORF9FR0xfU09VUkNFfSkKLSsgICBpbnN0YWxsKFRBUkdFVFMgd2F5bGFuZC1lZ2wgREVTVElOQVRJT04gbGliKQotKwotKyAgIGNvbmZpZ3VyZV9maWxlICgid2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4iICJ3YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYyIgQE9OTFkpCi0rICAgaW5zdGFsbCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYyIKLSsgICAgICAgICAgICBERVNUSU5BVElPTiBsaWIvcGtnY29uZmlnKQotK2VuZGlmICgpCi0rCi0gYWRkX2xpYnJhcnkoRUdMICR7U0hBUkVEfSAke0VHTF9TT1VSQ0V9KQotIGFkZF9saWJyYXJ5KEdMRVN2MiAke1NIQVJFRH0gJHtHTEVTX1NPVVJDRX0pCi0gYWRkX2xpYnJhcnkoT3BlblZHICR7U0hBUkVEfSAke1ZHX1NPVVJDRX0pCi0gYWRkX2xpYnJhcnkoV0ZDICR7U0hBUkVEfSAke1dGQ19TT1VSQ0V9KQotIGFkZF9saWJyYXJ5KGtocm5fY2xpZW50ICR7Q0xJRU5UX1NPVVJDRX0pCi0gCi0rc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEVHTCBQUk9QRVJUSUVTIFNPVkVSU0lPTiAxIFZFUlNJT04gMS4wLjApCi0rc2V0X3RhcmdldF9wcm9wZXJ0aWVzKEdMRVN2MiBQUk9QRVJUSUVTIFNPVkVSU0lPTiAyIFZFUlNJT04gMi4wLjApCi0rCi0gIyBUT0RPIGRvIHdlIG5lZWQgRUdMX3N0YXRpYyBhbmQgR0xFU3YyX3N0YXRpYyBub3cgdGhhdCBraHJuX3N0YXRpYyBleGlzdHM/Ci0gYWRkX2xpYnJhcnkoRUdMX3N0YXRpYyBTVEFUSUMgJHtFR0xfU09VUkNFfSkKLSBhZGRfbGlicmFyeShHTEVTdjJfc3RhdGljIFNUQVRJQyAke0dMRVNfU09VUkNFfSkKLUBAIC03Miw4ICsxMjEsNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzICguLi8uLi9ob3N0X2FwcGxpY2F0Ci0gc2V0KFZDU01fTElCUyB2Y3NtKQotIGFkZF9kZWZpbml0aW9ucygtREtIUk9OT1NfSEFWRV9WQ1NNKQotIGVuZGlmKCkKLS0KLS10YXJnZXRfbGlua19saWJyYXJpZXMoRUdMIGtocm5fY2xpZW50IHZjaGlxX2FybSB2Y29zIGJjbV9ob3N0ICR7VkNTTV9MSUJTfSAtbG0pCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKEVHTCAke0VHTF9MSUJTfSAke1ZDU01fTElCU30gLWxtKQotIHRhcmdldF9saW5rX2xpYnJhcmllcyhHTEVTdjIgRUdMIGtocm5fY2xpZW50IHZjb3MpCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFdGQyBFR0wpCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKE9wZW5WRyBFR0wpCi1AQCAtODcsNyArMTM1LDcgQEAgYWRkX2xpYnJhcnkoYnJjbUdMRVN2MiAke1NIQVJFRH0gJHtHTEVTXwotIGFkZF9saWJyYXJ5KGJyY21PcGVuVkcgJHtTSEFSRUR9ICR7VkdfU09VUkNFfSkKLSBhZGRfbGlicmFyeShicmNtV0ZDICR7U0hBUkVEfSAke1dGQ19TT1VSQ0V9KQotIAotLXRhcmdldF9saW5rX2xpYnJhcmllcyhicmNtRUdMIGtocm5fY2xpZW50IHZjaGlxX2FybSB2Y29zIGJjbV9ob3N0ICR7VkNTTV9MSUJTfSAtbG0pCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21FR0wgJHtFR0xfTElCU30gJHtWQ1NNX0xJQlN9IC1sbSkKLSB0YXJnZXRfbGlua19saWJyYXJpZXMoYnJjbUdMRVN2MiBicmNtRUdMIGtocm5fY2xpZW50IHZjb3MpCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGJyY21XRkMgYnJjbUVHTCkKLSB0YXJnZXRfbGlua19saWJyYXJpZXMoYnJjbU9wZW5WRyBicmNtRUdMKQotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCi1AQCAtNTQsNiArNTQsMTAgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQotICNpbmNsdWRlICJhcHBsaWNhdGlvbnMvdm1jcy9raHJvbm9zL2tocm9ub3Nfc2VydmVyLmgiCi0gI2VuZGlmCi0gCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5oIgotKyNlbmRpZgotKwotIFZDT1NfTE9HX0NBVF9UIGtocm5fY2xpZW50X2xvZyA9IFZDT1NfTE9HX0lOSVQoImtocm5fY2xpZW50IiwgVkNPU19MT0dfV0FSTik7Ci0gCi0gLyoKLUBAIC0xNDIsNiArMTQ2LDEwIEBAIHZvaWQgY2xpZW50X3RyeV91bmxvYWRfc2VydmVyKENMSUVOVF9QUk8KLSBib29sIGNsaWVudF9wcm9jZXNzX3N0YXRlX2luaXQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcykKLSB7Ci0gICAgaWYgKCFwcm9jZXNzLT5pbml0ZWQpIHsKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyAgICAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IE5VTEw7Ci0rI2VuZGlmCi0rCi0gICAgICAgaWYgKCFraHJuX3BvaW50ZXJfbWFwX2luaXQoJnByb2Nlc3MtPmNvbnRleHRzLCA2NCkpCi0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotQEAgLTE5NCw2ICsyMDIsMTMgQEAgYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUgotICAgICAgIH0KLSAjZW5kaWYKLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyAgICAgIHN0cnVjdCB3bF9kaXNwbGF5ICp3bF9kaXNwbGF5ID0ga2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOwotKyAgICAgIGlmICh3bF9kaXNwbGF5KQotKyAgICAgICAgIGlmICghaW5pdF9wcm9jZXNzX3dheWxhbmQocHJvY2VzcykpCi0rICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyNlbmRpZgotKwotICAgICAgIHByb2Nlc3MtPmluaXRlZCA9IHRydWU7Ci0gICAgfQotIAotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCi1AQCAtMzEwLDYgKzMxMCwxNiBAQCBzdHJ1Y3QgQ0xJRU5UX1BST0NFU1NfU1RBVEUgewotICNpZmRlZiBSUENfTElCUkFSWQotICAgIEtIUk9OT1NfU0VSVkVSX0NPTk5FQ1RJT05fVCBraHJuX2Nvbm5lY3Rpb247Ci0gI2VuZGlmCi0rCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICAvKiBDbGllbnQtc2lkZSBXYXlsYW5kIHN0YXRlICovCi0rICAgc3RydWN0IHdsX3JlZ2lzdHJ5ICp3bF9yZWdpc3RyeTsKLSsgICBzdHJ1Y3Qgd2xfZGlzcG1hbnggKndsX2Rpc3BtYW54OwotKyAgIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqd2xfcXVldWU7Ci0rCi0rICAgLyogQ29tcG9zaXRvci1zaWRlIFdheWxhbmQgc3RhdGUgKi8KLSsgICBzdHJ1Y3Qgd2xfZ2xvYmFsICp3bF9nbG9iYWw7Ci0rI2VuZGlmCi0gfTsKLSAKLSBleHRlcm4gYm9vbCBjbGllbnRfcHJvY2Vzc19zdGF0ZV9pbml0KENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpOwotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgKLSsrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X21hbmdsZS5oCi1AQCAtODMsNiArODMsOSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCi0gI2RlZmluZSBlZ2xSZWxlYXNlR2xvYmFsSW1hZ2VCUkNNIG1hbmdsZWRfZWdsUmVsZWFzZUdsb2JhbEltYWdlQlJDTQotICNkZWZpbmUgZWdsSW5pdEdsb2JhbEltYWdlQlJDTSBtYW5nbGVkX2VnbEluaXRHbG9iYWxJbWFnZUJSQ00KLSAjZGVmaW5lIGVnbFRlcm1HbG9iYWxJbWFnZUJSQ00gbWFuZ2xlZF9lZ2xUZXJtR2xvYmFsSW1hZ2VCUkNNCi0rI2RlZmluZSBlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCBtYW5nbGVkX2VnbEJpbmRXYXlsYW5kRGlzcGxheVdMCi0rI2RlZmluZSBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMIG1hbmdsZWRfZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTAotKyNkZWZpbmUgZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0wgbWFuZ2xlZF9lZ2xRdWVyeVdheWxhbmRCdWZmZXJXTAotIAotIC8qIE9wZW5HTCBFUyAxLjEgYW5kIDIuMCBmdW5jdGlvbnMgKi8KLSAKLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3BsYXRmb3JtLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfcGxhdGZvcm0uaAotQEAgLTQ4LDYgKzQ4LDEwIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQkkKLSAjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL3Zjb3Mva2hybl9jbGllbnRfcGxhdGZvcm1fZmlsbGVyX3Zjb3MuaCIKLSAjZW5kaWYKLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyNpbmNsdWRlIDx3YXlsYW5kLWNsaWVudC5oPgotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTMyOCw0ICszMzIsOCBAQCB0eXBlZGVmIHN0cnVjdAotIAotIHZvaWQgKnBsYXRmb3JtX3dmY19ib3VuY2VfdGhyZWFkKHZvaWQgKnBhcmFtKTsKLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotK3N0cnVjdCB3bF9kaXNwbGF5ICpraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCk7Ci0rI2VuZGlmCi0rCi0gI2VuZGlmIC8vIEtIUk5fQ0xJRU5UX1BMQVRGT1JNX0gKLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50X3VubWFuZ2xlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfdW5tYW5nbGUuaAotQEAgLTgzLDYgKzgzLDkgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQotICN1bmRlZiBlZ2xSZWxlYXNlR2xvYmFsSW1hZ2VCUkNNCi0gI3VuZGVmIGVnbEluaXRHbG9iYWxJbWFnZUJSQ00KLSAjdW5kZWYgZWdsVGVybUdsb2JhbEltYWdlQlJDTQotKyN1bmRlZiBlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTAotKyN1bmRlZiBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMCi0rI3VuZGVmIGVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcldMCi0gCi0gLyogT3BlbkdMIEVTIDEuMSBhbmQgMi4wIGZ1bmN0aW9ucyAqLwotIAotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl9jbGllbnRfcGxhdGZvcm1fbGludXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX2NsaWVudF9wbGF0Zm9ybV9saW51eC5jCi1AQCAtMzcsNiArMzcsMTEgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSQotICNpbmNsdWRlICJYMTEvWGxpYi5oIgotICNlbmRpZgotIAotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaCIKLSsjZW5kaWYKLSsKLSBleHRlcm4gVkNPU19MT0dfQ0FUX1Qga2hybl9jbGllbnRfbG9nOwotIAotIGV4dGVybiB2b2lkIHZjX3ZjaGlfa2hyb25vc19pbml0KCk7Ci1AQCAtNDY0LDE0ICs0NjksMzcgQEAgRUdMRGlzcGxheSBraHJuX3BsYXRmb3JtX3NldF9kaXNwbGF5X2lkKAotIAkgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0gfQotICNlbHNlCi0rCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLStzdGF0aWMgc3RydWN0IHdsX2Rpc3BsYXkgKmhhY2t5X2Rpc3BsYXkgPSBOVUxMOwotKyNlbmRpZgotKwotIEVHTERpc3BsYXkga2hybl9wbGF0Zm9ybV9zZXRfZGlzcGxheV9pZChFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5X2lkKQotIHsKLSAgICBpZiAoZGlzcGxheV9pZCA9PSBFR0xfREVGQVVMVF9ESVNQTEFZKQotICAgICAgIHJldHVybiAoRUdMRGlzcGxheSkxOwotLSAgIGVsc2UKLS0gICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0rICAgZWxzZSB7Ci0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICAgICB2b2lkICpmaXJzdF9wb2ludGVyID0gKih2b2lkICoqKSBkaXNwbGF5X2lkOwotKwotKyAgICAgIC8qIHdsX2Rpc3BsYXkgaXMgYSB3bF9wcm94eSwgd2hpY2ggaXMgYSB3bF9vYmplY3QuCi0rICAgICAgICogd2xfb2JqZWN0J3MgZmlyc3QgZWxlbWVudCBwb2ludHMgdG8gdGhlIGludGVyZmFjZXR5cGUuICovCi0rICAgICAgaWYgKGZpcnN0X3BvaW50ZXIgPT0gJndsX2Rpc3BsYXlfaW50ZXJmYWNlKSB7Ci0rICAgICAgICAgaGFja3lfZGlzcGxheSA9IChzdHJ1Y3Qgd2xfZGlzcGxheSopZGlzcGxheV9pZDsKLSsgICAgICAgICByZXR1cm4gKEVHTERpc3BsYXkpMTsKLSsgICAgICB9IGVsc2UKLSsjZW5kaWYKLSsgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0rICAgfQotK30KLSsKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotK3N0cnVjdCB3bF9kaXNwbGF5ICpraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCkKLSt7Ci0rICAgcmV0dXJuIGhhY2t5X2Rpc3BsYXk7Ci0gfQotICNlbmRpZgotKyNlbmRpZgotIAotICNpZmRlZiBXQU5UX1gKLSBzdGF0aWMgdm9pZCBkdW1wX2hpZXJhcmNoeShXaW5kb3cgdywgV2luZG93IHRoaXN3LCBXaW5kb3cgbG9vaywgaW50IGxldmVsKQotQEAgLTgwNSwyMiArODMzLDgxIEBAIHN0YXRpYyBFR0xfRElTUE1BTlhfV0lORE9XX1QgKmNoZWNrX2RlZmEKLSB2b2lkIHBsYXRmb3JtX2dldF9kaW1lbnNpb25zKEVHTERpc3BsYXkgZHB5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwKLSAgICAgICB1aW50MzJfdCAqd2lkdGgsIHVpbnQzMl90ICpoZWlnaHQsIHVpbnQzMl90ICpzd2FwY2hhaW5fY291bnQpCi0gewotLSAgIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqZHdpbiA9IGNoZWNrX2RlZmF1bHQod2luKTsKLS0gICB2Y29zX2Fzc2VydChkd2luKTsKLS0gICB2Y29zX2Fzc2VydChkd2luLT53aWR0aCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCi0tICAgdmNvc19hc3NlcnQoZHdpbi0+aGVpZ2h0IDwgMTw8MTYpOyAvLyBzYW5pdHkgY2hlY2sKLS0gICAqd2lkdGggPSBkd2luLT53aWR0aDsKLS0gICAqaGVpZ2h0ID0gZHdpbi0+aGVpZ2h0OwotLSAgICpzd2FwY2hhaW5fY291bnQgPSAwOwotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgaWYoa2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpKSB7Ci0rICAgICAgc3RydWN0IHdsX2VnbF93aW5kb3cgKndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKLSsgICAgICAqd2lkdGggPSB3bF9lZ2xfd2luZG93LT53aWR0aDsKLSsgICAgICAqaGVpZ2h0ID0gd2xfZWdsX3dpbmRvdy0+aGVpZ2h0OwotKyAgICAgIC8qIFRoaXMgc2VlbXMgdG8gYmUgdXNlZCBmb3Igc3luYydpbmcgd2l0aCB0aGUgVkMgb24gYnVmZmVyIGNyZWF0aW9uLCBidXQKLSsgICAgICAgICB3ZSBhcmUgbWFuYWdpbmcgdGhlbSBvbiB0aGUgQ1BVIHNpZGUgKi8KLSsgICAgICAqc3dhcGNoYWluX2NvdW50ID0gMTsKLSsgICB9IGVsc2UgewotKyNlbmRpZgotKyAgICAgIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqZHdpbiA9IGNoZWNrX2RlZmF1bHQod2luKTsKLSsgICAgICB2Y29zX2Fzc2VydChkd2luKTsKLSsgICAgICB2Y29zX2Fzc2VydChkd2luLT53aWR0aCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCi0rICAgICAgdmNvc19hc3NlcnQoZHdpbi0+aGVpZ2h0IDwgMTw8MTYpOyAvLyBzYW5pdHkgY2hlY2sKLSsgICAgICAqd2lkdGggPSBkd2luLT53aWR0aDsKLSsgICAgICAqaGVpZ2h0ID0gZHdpbi0+aGVpZ2h0OwotKyAgICAgICpzd2FwY2hhaW5fY291bnQgPSAwOwotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgfQotKyNlbmRpZgotK30KLSsKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotK3N0YXRpYyBESVNQTUFOWF9FTEVNRU5UX0hBTkRMRV9UIGNyZWF0ZV9kdW1teV9lbGVtZW50KCkKLSt7Ci0rICAgRElTUE1BTlhfRElTUExBWV9IQU5ETEVfVCBkaXNwbGF5ID0gdmNfZGlzcG1hbnhfZGlzcGxheV9vcGVuKDApOwotKyAgIERJU1BNQU5YX1VQREFURV9IQU5ETEVfVCB1cGRhdGUgPSB2Y19kaXNwbWFueF91cGRhdGVfc3RhcnQoMCk7Ci0rICAgRElTUE1BTlhfRUxFTUVOVF9IQU5ETEVfVCBlbGVtZW50OwotKyAgIFZDX0RJU1BNQU5YX0FMUEhBX1QgYWxwaGEgPSB7RElTUE1BTlhfRkxBR1NfQUxQSEFfRklYRURfQUxMX1BJWEVMUywgMjU1LCAwfTsKLSsgICBWQ19SRUNUX1Qgc3JjX3JlY3Q7Ci0rICAgVkNfUkVDVF9UIGRzdF9yZWN0OwotKwotKyAgIHNyY19yZWN0LnggPSAwOwotKyAgIHNyY19yZWN0LnkgPSAwOwotKyAgIHNyY19yZWN0LndpZHRoID0gMSA8PCAxNjsKLSsgICBzcmNfcmVjdC5oZWlnaHQgPSAxIDw8IDE2OwotKwotKyAgIGRzdF9yZWN0LnggPSAwOwotKyAgIGRzdF9yZWN0LnkgPSAwOwotKyAgIGRzdF9yZWN0LndpZHRoID0gMTsKLSsgICBkc3RfcmVjdC5oZWlnaHQgPSAxOwotKwotKyAgIGVsZW1lbnQgPSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZCh1cGRhdGUsIGRpc3BsYXksIDAvKmxheWVyKi8sICZkc3RfcmVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC8qc3JjKi8sICZzcmNfcmVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElTUE1BTlhfUFJPVEVDVElPTl9OT05FLCAmYWxwaGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAvKmNsYW1wKi8sIDAvKnRyYW5zZm9ybSovKTsKLSsKLSsgICB2Y19kaXNwbWFueF91cGRhdGVfc3VibWl0X3N5bmModXBkYXRlKTsKLSsKLSsgICB2Y19kaXNwbWFueF9kaXNwbGF5X2Nsb3NlKGRpc3BsYXkpOwotKwotKyAgIHJldHVybiBlbGVtZW50OwotIH0KLSsjZW5kaWYKLSAKLSB1aW50MzJfdCBwbGF0Zm9ybV9nZXRfaGFuZGxlKEVHTERpc3BsYXkgZHB5LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbikKLSB7Ci0tICAgRUdMX0RJU1BNQU5YX1dJTkRPV19UICpkd2luID0gY2hlY2tfZGVmYXVsdCh3aW4pOwotLSAgIHZjb3NfYXNzZXJ0KGR3aW4pOwotLSAgIHZjb3NfYXNzZXJ0KGR3aW4tPndpZHRoIDwgMTw8MTYpOyAvLyBzYW5pdHkgY2hlY2sKLS0gICB2Y29zX2Fzc2VydChkd2luLT5oZWlnaHQgPCAxPDwxNik7IC8vIHNhbml0eSBjaGVjawotLSAgIHJldHVybiBkd2luLT5lbGVtZW50OwotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgaWYoa2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpKSB7Ci0rICAgICAgc3RydWN0IHdsX2VnbF93aW5kb3cgKndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKLSsKLSsgICAgICBpZiAod2xfZWdsX3dpbmRvdy0+ZHVtbXlfZWxlbWVudCA9PSBQTEFURk9STV9XSU5fTk9ORSkKLSsgICAgICAgICB3bF9lZ2xfd2luZG93LT5kdW1teV9lbGVtZW50ID0gY3JlYXRlX2R1bW15X2VsZW1lbnQoKTsKLSsKLSsgICAgICByZXR1cm4gd2xfZWdsX3dpbmRvdy0+ZHVtbXlfZWxlbWVudDsKLSsgICB9IGVsc2UgewotKyNlbmRpZgotKyAgICAgIEVHTF9ESVNQTUFOWF9XSU5ET1dfVCAqZHdpbiA9IGNoZWNrX2RlZmF1bHQod2luKTsKLSsgICAgICB2Y29zX2Fzc2VydChkd2luKTsKLSsgICAgICB2Y29zX2Fzc2VydChkd2luLT53aWR0aCA8IDE8PDE2KTsgLy8gc2FuaXR5IGNoZWNrCi0rICAgICAgdmNvc19hc3NlcnQoZHdpbi0+aGVpZ2h0IDwgMTw8MTYpOyAvLyBzYW5pdHkgY2hlY2sKLSsgICAgICByZXR1cm4gZHdpbi0+ZWxlbWVudDsKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gI2VuZGlmCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24vbGludXgva2hybl93YXlsYW5kLmMKLUBAIC0wLDAgKzEsMjE1IEBACi0rLyoKLStDb3B5cmlnaHQgKGMpIDIwMTMsIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCi0rQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsKLStSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSsgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZQotKyAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0rICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rCi0rVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0rV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0rKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotK0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotK09OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0rKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLStTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsqLwotKwotKyNkZWZpbmUgVkNPU19MT0dfQ0FURUdPUlkgKCZraHJuX2NsaWVudF9sb2cpCi0rCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaCIKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1kaXNwbWFueC1jbGllbnQtcHJvdG9jb2wuaCIKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oIgotKwotK2V4dGVybiBWQ09TX0xPR19DQVRfVCBraHJuX2NsaWVudF9sb2c7Ci0rCi0rc3RhdGljIHZvaWQgaGFuZGxlX2Rpc3BtYW54X2Zvcm1hdCh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfZGlzcG1hbnggKmRpc3BtYW54LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZm9ybWF0KQotK3sKLSt9Ci0rCi0rc3RhdGljIHZvaWQgaGFuZGxlX2Rpc3BtYW54X2FsbG9jYXRlZCh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfZGlzcG1hbnggKmRpc3BtYW54LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX2J1ZmZlciAqd2xfYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmVzb3VyY2VfaGFuZGxlKQotK3sKLSsgICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKmJ1ZmZlciA9IHdsX2J1ZmZlcl9nZXRfdXNlcl9kYXRhKHdsX2J1ZmZlcik7Ci0rCi0rICAgIGJ1ZmZlci0+cGVuZGluZ19hbGxvY2F0aW9uID0gMDsKLSsgICAgYnVmZmVyLT5yZXNvdXJjZSA9IHJlc291cmNlX2hhbmRsZTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9kaXNwbWFueF9saXN0ZW5lciBkaXNwbWFueF9saXN0ZW5lciA9IHsKLSsgICAgaGFuZGxlX2Rpc3BtYW54X2Zvcm1hdCwKLSsgICAgaGFuZGxlX2Rpc3BtYW54X2FsbG9jYXRlZCwKLSt9OwotKwotK3N0YXRpYyB2b2lkCi0rc3luY19jYWxsYmFjayh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrLCB1aW50MzJfdCBzZXJpYWwpCi0rewotKyAgIGludCAqZG9uZSA9IGRhdGE7Ci0rCi0rICAgKmRvbmUgPSAxOwotKwotKyAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOwotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNfbGlzdGVuZXIgPSB7Ci0rICAgc3luY19jYWxsYmFjawotK307Ci0rCi0rc3RhdGljIGludAotK3JvdW5kdHJpcChDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzKQotK3sKLSsgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqd2xfZGlzcGxheSA9IGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKTsKLSsgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKmNhbGxiYWNrOwotKyAgIGludCBkb25lID0gMCwgcmV0ID0gMDsKLSsKLSsgICBjYWxsYmFjayA9IHdsX2Rpc3BsYXlfc3luYyh3bF9kaXNwbGF5KTsKLSsgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIoY2FsbGJhY2ssICZzeW5jX2xpc3RlbmVyLCAmZG9uZSk7Ci0rICAgd2xfcHJveHlfc2V0X3F1ZXVlKChzdHJ1Y3Qgd2xfcHJveHkgKikgY2FsbGJhY2ssIHByb2Nlc3MtPndsX3F1ZXVlKTsKLSsgICB3aGlsZSAocmV0ICE9IC0xICYmICFkb25lKQotKyAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWUod2xfZGlzcGxheSwgcHJvY2Vzcy0+d2xfcXVldWUpOwotKwotKyAgIGlmICghZG9uZSkKLSsgICAgICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKLSsKLSsgICByZXR1cm4gcmV0OwotK30KLSsKLStpbnQgZG9fd2xfcm91bmR0cmlwKCkKLSt7Ci0rICAgQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcyA9IENMSUVOVF9HRVRfUFJPQ0VTU19TVEFURSgpOwotKyAgIHJldHVybiByb3VuZHRyaXAocHJvY2Vzcyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rcmVnaXN0cnlfaGFuZGxlX2dsb2JhbCh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LAotKyAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbmFtZSwgY29uc3QgY2hhciAqaW50ZXJmYWNlLCB1aW50MzJfdCB2ZXJzaW9uKQotK3sKLSsgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqd2xfZGlzcGxheSA9IGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKTsKLSsgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzID0gKENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKilkYXRhOwotKwotKyAgIGlmIChzdHJjbXAoaW50ZXJmYWNlLCAid2xfZGlzcG1hbngiKSA9PSAwKSB7Ci0rICAgICAgcHJvY2Vzcy0+d2xfZGlzcG1hbnggPSB3bF9yZWdpc3RyeV9iaW5kKHJlZ2lzdHJ5LCBuYW1lLAotKwkgICAgICAgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwgMSk7Ci0rCi0rICAgICAgd2xfcHJveHlfc2V0X3F1ZXVlKChzdHJ1Y3Qgd2xfcHJveHkgKikgcHJvY2Vzcy0+d2xfZGlzcG1hbngsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MtPndsX3F1ZXVlKTsKLSsgICAgICB3bF9kaXNwbWFueF9hZGRfbGlzdGVuZXIocHJvY2Vzcy0+d2xfZGlzcG1hbngsICZkaXNwbWFueF9saXN0ZW5lciwgd2xfZGlzcGxheSk7Ci0rICAgICAgcm91bmR0cmlwKHByb2Nlc3MpOwotKyAgIH0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStyZWdpc3RyeV9oYW5kbGVfZ2xvYmFsX3JlbW92ZSh2b2lkICpkYXRhLCBzdHJ1Y3Qgd2xfcmVnaXN0cnkgKnJlZ2lzdHJ5LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5hbWUpCi0rewotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3JlZ2lzdHJ5X2xpc3RlbmVyIHJlZ2lzdHJ5X2xpc3RlbmVyID0gewotKwlyZWdpc3RyeV9oYW5kbGVfZ2xvYmFsLAotKwlyZWdpc3RyeV9oYW5kbGVfZ2xvYmFsX3JlbW92ZQotK307Ci0rCi0raW50Ci0raW5pdF9wcm9jZXNzX3dheWxhbmQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcykKLSt7Ci0rICAgIHN0cnVjdCB3bF9kaXNwbGF5ICp3bF9kaXNwbGF5ID0ga2hybl9wbGF0Zm9ybV9nZXRfd2xfZGlzcGxheSgpOwotKwotKyAgICBwcm9jZXNzLT53bF9xdWV1ZSA9IHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKHdsX2Rpc3BsYXkpOwotKyAgICBpZiAoIXByb2Nlc3MtPndsX3F1ZXVlKSB7Ci0rICAgICAgICB2Y29zX2xvZ19lcnJvcigid2xfZGlzcGxheV9jcmVhdGVfcXVldWUgZmFpbGVkXG4iKTsKLSsgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgfQotKyAgICB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcod2xfZGlzcGxheSk7Ci0rCi0rICAgIHByb2Nlc3MtPndsX3JlZ2lzdHJ5ID0gd2xfZGlzcGxheV9nZXRfcmVnaXN0cnkod2xfZGlzcGxheSk7Ci0rICAgIGlmICghcHJvY2Vzcy0+d2xfcmVnaXN0cnkpIHsKLSsgICAgICAgIHZjb3NfbG9nX2Vycm9yKCJ3bF9kaXNwbGF5X2dldF9yZWdpc3RyeSBmYWlsZWRcbiIpOwotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0rCi0rICAgIHdsX3Byb3h5X3NldF9xdWV1ZSgoc3RydWN0IHdsX3Byb3h5ICopIHByb2Nlc3MtPndsX3JlZ2lzdHJ5LAotKyAgICBwcm9jZXNzLT53bF9xdWV1ZSk7Ci0rCi0rICAgIHdsX3JlZ2lzdHJ5X2FkZF9saXN0ZW5lcihwcm9jZXNzLT53bF9yZWdpc3RyeSwgJnJlZ2lzdHJ5X2xpc3RlbmVyLCBwcm9jZXNzKTsKLSsKLSsgICAgaWYgKHJvdW5kdHJpcChwcm9jZXNzKSA8IDAgfHwgcHJvY2Vzcy0+d2xfZGlzcG1hbnggPT0gTlVMTCkgewotKyAgICAgICAgdmNvc19sb2dfZXJyb3IoImZhaWxlZCB0byBnZXQgd2xfZGlzcG1hbnhcbiIpOwotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiB0cnVlOwotK30KLSsKLSsjaWZuZGVmIEFMSUdOX1VQCi0rI2RlZmluZSBBTElHTl9VUCh4LHkpICAoKHggKyAoeSktMSkgJiB+KCh5KS0xKSkKLSsjZW5kaWYKLSsKLStzdGF0aWMgdm9pZCBoYW5kbGVfYnVmZmVyX3JlbGVhc2Uodm9pZCAqZGF0YSwgc3RydWN0IHdsX2J1ZmZlciAqYnVmZmVyX3dsKQotK3sKLSsgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciA9IGRhdGE7Ci0rICAgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlci0+aW5fdXNlID0gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9idWZmZXJfbGlzdGVuZXIgYnVmZmVyX2xpc3RlbmVyID0gewotKyAgIGhhbmRsZV9idWZmZXJfcmVsZWFzZQotK307Ci0rCi0rc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKgotK2FsbG9jYXRlX3dsX2J1ZmZlcihzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqd2luZG93LCBLSFJOX0lNQUdFX0ZPUk1BVF9UIGNvbG9yKQotK3sKLSsgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzID0gQ0xJRU5UX0dFVF9QUk9DRVNTX1NUQVRFKCk7Ci0rICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKndsX2Rpc3BtYW54X2NsaWVudF9idWZmZXI7Ci0rICAgc3RydWN0IHdsX2J1ZmZlciAqd2xfYnVmZmVyOwotKyAgIHVpbnQzMl90IHN0cmlkZSA9IEFMSUdOX1VQKHdpbmRvdy0+d2lkdGggKiA0LCAxNik7Ci0rICAgdWludDMyX3QgYnVmZmVyX2hlaWdodCA9IEFMSUdOX1VQKHdpbmRvdy0+aGVpZ2h0LCAxNik7Ci0rICAgZW51bSB3bF9kaXNwbWFueF9mb3JtYXQgY29sb3JfZm9ybWF0OwotKyAgIGludCByZXQgPSAwOwotKwotKyAgIHN3aXRjaCAoY29sb3IpIHsKLSsgICBjYXNlIEFCR1JfODg4ODoKLSsgICAgICBjb2xvcl9mb3JtYXQgPSBXTF9ESVNQTUFOWF9GT1JNQVRfQUJHUjg4ODg7Ci0rICAgICAgYnJlYWs7Ci0rICAgY2FzZSBYQkdSXzg4ODg6Ci0rICAgICAgY29sb3JfZm9ybWF0ID0gV0xfRElTUE1BTlhfRk9STUFUX1hCR1I4ODg4OwotKyAgICAgIGJyZWFrOwotKyAgIGNhc2UgUkdCXzU2NToKLSsgICAgICBjb2xvcl9mb3JtYXQgPSBXTF9ESVNQTUFOWF9GT1JNQVRfUkdCNTY1OwotKyAgICAgIGJyZWFrOwotKyAgIGRlZmF1bHQ6Ci0rICAgICAgdmNvc19sb2dfZXJyb3IoInVua25vd24gS0hSTl9JTUFHRV9GT1JNQVRfVCAweCV4XG4iLCBjb2xvcik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgfQotKwotKyAgIHdsX2J1ZmZlciA9IHdsX2Rpc3BtYW54X2NyZWF0ZV9idWZmZXIocHJvY2Vzcy0+d2xfZGlzcG1hbngsIHdpbmRvdy0+d2lkdGgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3ctPmhlaWdodCwgc3RyaWRlLCBidWZmZXJfaGVpZ2h0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JfZm9ybWF0KTsKLSsgICBpZiAod2xfYnVmZmVyID09IE5VTEwpCi0rICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciA9IGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIpKTsKLSsgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT53bF9idWZmZXIgPSB3bF9idWZmZXI7Ci0rICAgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlci0+aW5fdXNlID0gMDsKLSsgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT5wZW5kaW5nX2FsbG9jYXRpb24gPSAxOwotKyAgIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXItPndpZHRoID0gd2luZG93LT53aWR0aDsKLSsgICB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT5oZWlnaHQgPSB3aW5kb3ctPmhlaWdodDsKLSsKLSsgICB3bF9wcm94eV9zZXRfcXVldWUoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9idWZmZXIsIHByb2Nlc3MtPndsX3F1ZXVlKTsKLSsgICB3bF9idWZmZXJfYWRkX2xpc3RlbmVyKHdsX2J1ZmZlciwgJmJ1ZmZlcl9saXN0ZW5lciwgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlcik7Ci0rCi0rICAgd2hpbGUgKHJldCAhPSAtMSAmJiB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyLT5wZW5kaW5nX2FsbG9jYXRpb24pCi0rICAgICAgcmV0ID0gZG9fd2xfcm91bmR0cmlwKCk7Ci0rCi0rICAgcmV0dXJuIHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXI7Ci0rfQotSW5kZXg6IGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oCi0rKysgZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oCi1AQCAtNjYsNCArNjYsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICNkZWZpbmUgRUxFTUVOVF9DSEFOR0VfTUFTS19SRVNPVVJDRSAgKDE8PDQpCi0gI2RlZmluZSBFTEVNRU5UX0NIQU5HRV9UUkFOU0ZPUk0gICAgICAoMTw8NSkKLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKy8qIFhYWDogVGhpcyBzaG91bGQgYmUgaW4gYSBwcml2YXRlIGhlYWRlciB0aGF0IGNhbiBiZSBpbmNsdWRlZCBmcm9tIEVHTCBhbmQgdmNfKiAqLwotKyNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5oPgotKyNpbmNsdWRlICJpbnRlcmZhY2Uvdm1jc19ob3N0L3dheWxhbmQtZGlzcG1hbngtc2VydmVyLXByb3RvY29sLmgiCi0rc3RydWN0IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIgewotKwlzdHJ1Y3Qgd2xfcmVzb3VyY2UgKnJlc291cmNlOwotKwlzdHJ1Y3Qgd2xfZGlzcG1hbnggKmRpc3BtYW54OwotKwllbnVtIHdsX2Rpc3BtYW54X2Zvcm1hdCBmb3JtYXQ7Ci0rCURJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIGhhbmRsZTsKLSsJaW50MzJfdCB3aWR0aDsKLSsJaW50MzJfdCBoZWlnaHQ7Ci0rCWludCBpbl91c2U7Ci0rfTsKLSsjZW5kaWYKLSsKLSAjZW5kaWYKLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2xpbnV4L2tocm5fd2F5bGFuZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaAotQEAgLTAsMCArMSwzMyBAQAotKy8qCi0rQ29weXJpZ2h0IChjKSAyMDEzLCBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgotK0FsbCByaWdodHMgcmVzZXJ2ZWQuCi0rCi0rUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0rICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0rICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSsgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0rICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vciB0aGUKLSsgICAgICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwotKyAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKwotK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLStBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotK1dBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLStESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLStESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLStMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLStPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0rU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rKi8KLSsKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmgiCi0rCi0raW50IGluaXRfcHJvY2Vzc193YXlsYW5kKENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3MpOwotK2ludCBkb193bF9yb3VuZHRyaXAoKTsKLSsKLStzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciAqYWxsb2NhdGVfd2xfYnVmZmVyKHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3aW5kb3csIEtIUk5fSU1BR0VfRk9STUFUX1QgY29sb3IpOwotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYwotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jCi1AQCAtMTUzLDYgKzE1MywxMCBAQCBieSBhbiBhdHRyaWJ1dGUgdmFsdWUiCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgiCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfY3IuYyIKLSAKLUBAIC0xNjIsMTcgKzE2Niw2IEBAIHN0YXRpYyB2b2lkIGVnbF9jdXJyZW50X3JlbGVhc2UoQ0xJRU5UX1AKLSB2b2lkIGVnbF9nbF9mbHVzaF9jYWxsYmFjayhib29sIHdhaXQpOwotIHZvaWQgZWdsX3ZnX2ZsdXNoX2NhbGxiYWNrKGJvb2wgd2FpdCk7Ci0gCi0tI2luY2x1ZGUgImludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnhfdHlwZXMuaCIKLS0vKipIQUNLSEFDSyAtIGdpdmUgdXMgdGhlIGFiaWxpdHkgdG8gaW5qZWN0IGEgRGlzcG1hblggCi0tICogcmVzb3VyY2UgaGFuZGxlIGludG8gdGhlIENyZWF0ZVdpbmRvd1N1cmZhY2UgYW5kIAotLSAqIFN3YXBCdWZmZXJzIGNhbGxzICovIAotLXN0YXRpYyBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCBuZXh0X3Jlc291cmNlX2hhbmRsZTsKLS0KLS1FR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTZXROZXh0UmVzb3VyY2VIYW5kbGUoRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgaGFuZGxlKQotLXsKLS0gICBuZXh0X3Jlc291cmNlX2hhbmRsZSA9IGhhbmRsZTsKLS19Ci0tCi0gLyoKLSBUT0RPOiBkbyBhbiBSUEMgY2FsbCB0byBtYWtlIHN1cmUgdGhlIEtocm9ub3MgdmxsIGlzIGxvYWRlZCAoYW5kIHRoYXQgaXQgc3RheXMgbG9hZGVkIHVudGlsIGVnbFRlcm1pbmF0ZSkKLSBBbHNvIGFmZmVjdHMgZ2xvYmFsIGltYWdlIChhbmQgcG9zc2libHkgb3RoZXJzPykKLUBAIC00NTEsNiArNDQ0LDkgQEAgRUdMQVBJIGNvbnN0IGNoYXIgRUdMQVBJRU5UUlkgKiBlZ2xRdWVyeQotICAgICAgICAgICAgICJFR0xfS0hSX2ZlbmNlX3N5bmMgIgotICNlbmRpZgotICNlbmRpZgotKyNpZiBFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkKLSsgICAgICAgICAgICAiRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5ICIKLSsjZW5kaWYKLSAgICAgICAgICAgICA7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBFR0xfVkVORE9SOgotQEAgLTY1NSw4ICs2NTEsNyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVXCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PX1RFWFRVUkUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9yZXNvdXJjZV9oYW5kbGUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gCi0gICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtOTAxLDcgKzg5Niw3IEBAIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pcG1hcF90ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZV9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlX3RhcmdldCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gCi0gICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtMTA0Myw3ICsxMDM4LDcgQEAgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9fVEVYVFVSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT19URVhUVVJFLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4bWFwLCAoKHNlcnZlcl9oYW5kbGVbMF0gPT0gMCkgJiYgKHNlcnZlcl9oYW5kbGVbMV0gPT0gKHVpbnQzMl90KSgtMSkpKSA/IE5VTEwgOiBzZXJ2ZXJfaGFuZGxlLCAwKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeG1hcCwgKChzZXJ2ZXJfaGFuZGxlWzBdID09IDApICYmIChzZXJ2ZXJfaGFuZGxlWzFdID09ICh1aW50MzJfdCkoLTEpKSkgPyBOVUxMIDogc2VydmVyX2hhbmRsZSk7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2hybl9wb2ludGVyX21hcF9pbnNlcnQoJnByb2Nlc3MtPnN1cmZhY2VzLCBwcm9jZXNzLT5uZXh0X3N1cmZhY2UsIHN1cmZhY2UpKSB7Ci1AQCAtMjI0NSw2ICsyMjQwLDkgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZgotICAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkOwotICAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3M7Ci0gICAgRUdMQm9vbGVhbiByZXN1bHQ7Ci0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICBzdHJ1Y3Qgd2xfZGlzcGxheSAqd2xfZGlzcGxheSA9IGtocm5fcGxhdGZvcm1fZ2V0X3dsX2Rpc3BsYXkoKTsKLSsjZW5kaWYKLSAKLSAgICB2Y29zX2xvZ190cmFjZSgiZWdsU3dhcEJ1ZmZlcnMgc3RhcnQuIGRweT0lZC4gc3VyZj0lZC4iLCAoaW50KWRweSwgKGludClzdXJmKTsKLSAKLUBAIC0yMzE1LDE4ICsyMzEzLDU4IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWYKLSAKLSAgICAgICAgICAgICAgICB2Y29zX2xvZ190cmFjZSgiZWdsU3dhcEJ1ZmZlcnMgc2VydmVyIGNhbGwiKTsKLSAKLS0gICAgICAgICAgICAgICBpZiAobmV4dF9yZXNvdXJjZV9oYW5kbGUpCi0tICAgICAgICAgICAgICAgUlBDX0NBTEw3KGVnbEludFN3YXBCdWZmZXJzX2ltcGwsCi0tICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLAotLSAgICAgICAgICAgICAgICAgICAgIEVHTElOVFNXQVBCVUZGRVJTX0lEX1YyLAotLSAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPnNlcnZlcmJ1ZmZlciksCi0tICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+d2lkdGgpLAotLSAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPmhlaWdodCksCi0tICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlKSwKLS0gICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5zd2FwX2JlaGF2aW9yID09IEVHTF9CVUZGRVJfUFJFU0VSVkVEID8gMSA6IDApLAotLSAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKGtocm5fcGxhdGZvcm1fZ2V0X3dpbmRvd19wb3NpdGlvbihzdXJmYWNlLT53aW4pKSwKLS0gICAgICAgICAgICAgICAgICAgICBSUENfSU5UKG5leHRfcmVzb3VyY2VfaGFuZGxlKSk7Ci0tICAgICAgICAgICAgICAgZWxzZQotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgICAgICAgICAgICAgaWYgKHdsX2Rpc3BsYXkpIHsKLSsgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqd2xfZWdsX3dpbmRvdyA9IHN1cmZhY2UtPndsX2VnbF93aW5kb3c7Ci0rICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKmJ1ZmZlcl90ZW1wOwotKyAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNvbmZpZ2lkOwotKyAgICAgICAgICAgICAgICAgIEtIUk5fSU1BR0VfRk9STUFUX1QgY29sb3I7Ci0rICAgICAgICAgICAgICAgICAgaW50IHJldCA9IDA7Ci0rCi0rICAgICAgICAgICAgICAgICAgYnVmZmVyX3RlbXAgPSBzdXJmYWNlLT5mcm9udF93bF9idWZmZXI7Ci0rICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyID0gc3VyZmFjZS0+YmFja193bF9idWZmZXI7Ci0rICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBidWZmZXJfdGVtcDsKLSsKLSsgICAgICAgICAgICAgICAgICBjb25maWdpZCA9IGVnbF9jb25maWdfdG9faWQoc3VyZmFjZS0+Y29uZmlnKTsKLSsgICAgICAgICAgICAgICAgICBjb2xvciA9IGVnbF9jb25maWdfZ2V0X2NvbG9yX2Zvcm1hdChjb25maWdpZCk7Ci0rCi0rICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID09IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBhbGxvY2F0ZV93bF9idWZmZXIod2xfZWdsX3dpbmRvdywgY29sb3IpOwotKyAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT53aWR0aCAhPSB3aWR0aCB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5oZWlnaHQgIT0gaGVpZ2h0KSB7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKmJ1ZmZlcjsKLSsKLSsgICAgICAgICAgICAgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKLSsgICAgICAgICAgICAgICAgICAgICBmcmVlKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyKTsKLSsKLSsgICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSBhbGxvY2F0ZV93bF9idWZmZXIod2xfZWdsX3dpbmRvdywgY29sb3IpOwotKyAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYnVmZmVyOwotKyAgICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgICBSUENfQ0FMTDcoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSURfVjIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+c2VydmVyYnVmZmVyKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT53aWR0aCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoc3VyZmFjZS0+aGVpZ2h0KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChzdXJmYWNlLT5pbnRlcm5hbF9oYW5kbGUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHN1cmZhY2UtPnN3YXBfYmVoYXZpb3IgPT0gRUdMX0JVRkZFUl9QUkVTRVJWRUQgPyAxIDogMCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgUlBDX1VJTlQoa2hybl9wbGF0Zm9ybV9nZXRfd2luZG93X3Bvc2l0aW9uKHN1cmZhY2UtPndpbikpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19JTlQoc3VyZmFjZS0+YmFja193bF9idWZmZXItPnJlc291cmNlKSk7Ci0rCi0rICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyLT5pbl91c2UgPSAxOwotKyAgICAgICAgICAgICAgICAgIHdsX3N1cmZhY2VfYXR0YWNoKHdsX2VnbF93aW5kb3ctPndsX3N1cmZhY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyLT53bF9idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0rICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9kYW1hZ2Uod2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSwgMCwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT53aWR0aCwgc3VyZmFjZS0+aGVpZ2h0KTsKLSsgICAgICAgICAgICAgICAgICB3bF9zdXJmYWNlX2NvbW1pdCh3bF9lZ2xfd2luZG93LT53bF9zdXJmYWNlKTsKLSsKLSsgICAgICAgICAgICAgICAgICB3aGlsZShyZXQgIT0gLTEgJiYgc3VyZmFjZS0+YmFja193bF9idWZmZXItPmluX3VzZSkKLSsgICAgICAgICAgICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoX3F1ZXVlKHdsX2Rpc3BsYXksIHByb2Nlc3MtPndsX3F1ZXVlKTsKLSsgICAgICAgICAgICAgICB9IGVsc2UKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICBSUENfQ0FMTDYoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSUQsCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X2dldF9wcm9jLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9nZXRfcHJvYy5jCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X2dldF9wcm9jLmMKLUBAIC0yNTQsNiArMjU0LDE3IEBAIEVHTEFQSSB2b2lkIEVHTEFQSUVOVFJZICgqIGVnbEdldFByb2NBZGQKLSAgICAgICByZXR1cm4gKHZvaWQoKikodm9pZCkpZWdsUXVlcnlHbG9iYWxJbWFnZUJSQ007Ci0gI2VuZGlmCi0gCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsjaWYgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5Ci0rICAgaWYgKCFzdHJjbXAocHJvY25hbWUsICJlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCIpKQotKyAgICAgIHJldHVybiAodm9pZCgqKSh2b2lkKSllZ2xCaW5kV2F5bGFuZERpc3BsYXlXTDsKLSsgICBpZiAoIXN0cmNtcChwcm9jbmFtZSwgImVnbFVuYmluZFdheWxhbmREaXNwbGF5V0wiKSkKLSsgICAgICByZXR1cm4gKHZvaWQoKikodm9pZCkpZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTDsKLSsgICBpZiAoIXN0cmNtcChwcm9jbmFtZSwgImVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcldMIikpCi0rICAgICAgcmV0dXJuICh2b2lkKCopKHZvaWQpKWVnbFF1ZXJ5V2F5bGFuZEJ1ZmZlcldMOwotKyNlbmRpZgotKyNlbmRpZgotKwotICAgIHJldHVybiAodm9pZCgqKSh2b2lkKSkgTlVMTDsKLSB9Ci0gCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYwotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKLUBAIC00Niw2ICs0NiwxMSBAQCBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJCi0gI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfaW50X2ltcGwuaCIKLSAjZW5kaWYKLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC1wcml2LmgiCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9saW51eC9raHJuX3dheWxhbmQuaCIKLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gCi0gCi1AQCAtMzE0LDggKzMxOSw3IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKLSAgICBFR0xlbnVtIHRleHR1cmVfZm9ybWF0LAotICAgIEVHTGVudW0gdGV4dHVyZV90YXJnZXQsCi0gICAgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAsCi0tICAgY29uc3QgdWludDMyX3QgKnBpeG1hcF9zZXJ2ZXJfaGFuZGxlLAotLSAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlKQotKyAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSkKLSB7Ci0gICAgS0hSTl9JTUFHRV9GT1JNQVRfVCBjb2xvcjsKLSAgICBLSFJOX0lNQUdFX0ZPUk1BVF9UIGRlcHRoOwotQEAgLTMyNiw2ICszMzAsMTAgQEAgRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfY3JlYXRlKAotICAgIEVHTGludCAgIGNvbmZpZ19kZXB0aF9iaXRzOwotICAgIEVHTGludCAgIGNvbmZpZ19zdGVuY2lsX2JpdHM7Ci0gICAgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQgPSBDTElFTlRfR0VUX1RIUkVBRF9TVEFURSgpOwotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgc3RydWN0IHdsX2Rpc3BsYXkgKndsX2Rpc3BsYXkgPSBraHJuX3BsYXRmb3JtX2dldF93bF9kaXNwbGF5KCk7Ci0rICAgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgcmVzb3VyY2U7Ci0rI2VuZGlmCi0gCi0gICAgRUdMX1NVUkZBQ0VfVCAqc3VyZmFjZSA9IGVnbF9zdXJmYWNlX3Bvb2xfYWxsb2MoKTsKLSAKLUBAIC0zOTAsNiArMzk4LDE4IEBAIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZSgKLSAKLSAgICB2Y29zX2Fzc2VydChjb2xvciAhPSBJTUFHRV9GT1JNQVRfSU5WQUxJRCk7Ci0gCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICBpZiAodHlwZSA9PSBXSU5ET1cgJiYgd2xfZGlzcGxheSkgewotKyAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKLSsgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IGFsbG9jYXRlX3dsX2J1ZmZlcigKLSsgICAgICAgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93LCBjb2xvcik7Ci0rICAgICAgcmVzb3VyY2UgPSBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+cmVzb3VyY2U7Ci0rICAgfSBlbHNlIHsKLSsgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93ID0gTlVMTDsKLSsgICAgICByZXNvdXJjZSA9IERJU1BNQU5YX05PX0hBTkRMRTsKLSsgICB9Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIEtIUk9OT1NfRUdMX1BMQVRGT1JNX09QRU5XRkMKLSAgICAvLyBDcmVhdGUgc3RyZWFtIGZvciB0aGlzIHdpbmRvdwotICAgIGlmKHR5cGUgIT0gUEJVRkZFUikKLUBAIC00NzQsNyArNDk0LDggQEAgRUdMX1NVUkZBQ0VfVCAqZWdsX3N1cmZhY2VfY3JlYXRlKAotICNlbmRpZgotICAgICAgICAgIHVpbnQzMl90IHJlc3VsdHNbM107Ci0gCi0tICAgICAgICAgaWYgKG5leHRfcmVzb3VyY2VfaGFuZGxlKQotKyNpZmRlZiBCVUlMRF9XQVlMQU5ECi0rICAgICAgICAgaWYgKHJlc291cmNlICE9IERJU1BNQU5YX05PX0hBTkRMRSkKLSAgICAgICAgICBSUENfQ0FMTDE2X09VVF9DVFJMKGVnbEludENyZWF0ZVN1cmZhY2VfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTElOVENSRUFURVNVUkZBQ0VfSURfVjIsCi1AQCAtNDkyLDkgKzUxMywxMCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChjb25maWdfc3RlbmNpbF9iaXRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHNlbV9uYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJQQ19VSU5UKHR5cGUpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChuZXh0X3Jlc291cmNlX2hhbmRsZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUENfSU5UKHJlc291cmNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMpOwotICAgICAgICAgIGVsc2UKLSsjZW5kaWYKLSAgICAgICAgICBSUENfQ0FMTDE1X09VVF9DVFJMKGVnbEludENyZWF0ZVN1cmZhY2VfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTElOVENSRUFURVNVUkZBQ0VfSUQsCi1AQCAtNjYzLDYgKzY4NSwxOCBAQCB2b2lkIGVnbF9zdXJmYWNlX2ZyZWUoRUdMX1NVUkZBQ0VfVCAqc3VyCi0gICAgaWYoIHN1cmZhY2UtPnR5cGUgPT0gV0lORE9XICkgewotICAgICAgIHZjb3NfbG9nX3RyYWNlKCJlZ2xfc3VyZmFjZV9mcmVlOiBjYWxsaW5nIHBsYXRmb3JtX2Rlc3Ryb3lfd2luaGFuZGxlLi4uIik7Ci0gICAgICAgcGxhdGZvcm1fZGVzdHJveV93aW5oYW5kbGUoIHN1cmZhY2UtPndpbiwgc3VyZmFjZS0+aW50ZXJuYWxfaGFuZGxlICk7Ci0rCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICAgICBpZiAoc3VyZmFjZS0+YmFja193bF9idWZmZXIpIHsKLSsgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKLSsgICAgICAgICBmcmVlKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyKTsKLSsgICAgICB9Ci0rCi0rICAgICAgaWYgKHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlcikgewotKyAgICAgICAgIHdsX2J1ZmZlcl9kZXN0cm95KHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKLSsgICAgICAgICBmcmVlKHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlcik7Ci0rICAgICAgfQotKyNlbmRpZgotICAgIH0KLSAgICAvKiByZXR1cm4gdmFsdWUgaWdub3JlZCAtLSByZWFkIHBlcmZvcm1lZCB0byBlbnN1cmUgYmxvY2tpbmcuIHdlIHdhbnQgdGhpcyB0bwotICAgICAqIGJsb2NrIHNvIGNsaWVudHMgY2FuIHNhZmVseSBkZXN0cm95IHRoZSBzdXJmYWNlJ3Mgd2luZG93IGFzIHNvb24gYXMgdGhlCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKLUBAIC0yODgsNiArMjg4LDQxIEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgICAgICB0eXBlID09IFBJWE1BUAotICAgICovCi0gICAgYm9vbCBzZXJ2ZXJfb3duZWQ7Ci0rCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsgICAvKgotKyAgICAgIHdsX2VnbF93aW5kb3cKLSsKLSsgICAgICBWYWxpZGl0eToKLSsgICAgICB0eXBlID09IFdJTkRPVwotKwotKyAgICAgIEludmFyaWFudDoKLSsgICAgICB3YXlsYW5kIEVHTCB3aW5kb3cKLSsgICAqLwotKyAgIHN0cnVjdCB3bF9lZ2xfd2luZG93ICp3bF9lZ2xfd2luZG93OwotKwotKyAgIC8qCi0rICAgICAgZnJvbnRfd2xfYnVmZmVyCi0rCi0rICAgICAgVmFsaWRpdHk6Ci0rICAgICAgdHlwZSA9PSBXSU5ET1cKLSsKLSsgICAgICBJbnZhcmlhbnQ6Ci0rICAgICAgY2xpZW50LXNpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdsX2J1ZmZlciBpbiB0aGUgZnJvbnQKLSsgICAqLwotKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpmcm9udF93bF9idWZmZXI7Ci0rCi0rICAgLyoKLSsgICAgICBiYWNrX3dsX2J1ZmZlcgotKwotKyAgICAgIFZhbGlkaXR5OgotKyAgICAgIHR5cGUgPT0gV0lORE9XCi0rCi0rICAgICAgSW52YXJpYW50OgotKyAgICAgIGNsaWVudC1zaWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3bF9idWZmZXIgaW4gdGhlIGJhY2sKLSsgICAqLwotKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICpiYWNrX3dsX2J1ZmZlcjsKLSsjZW5kaWYKLSB9IEVHTF9TVVJGQUNFX1Q7Ci0gCi0gZXh0ZXJuIGJvb2wgZWdsX3N1cmZhY2VfY2hlY2tfYXR0cmlicygKLUBAIC0zMjIsOCArMzU3LDcgQEAgZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2NyZWF0ZQotICAgIEVHTGVudW0gdGV4dHVyZV9mb3JtYXQsCi0gICAgRUdMZW51bSB0ZXh0dXJlX3RhcmdldCwKLSAgICBFR0xOYXRpdmVQaXhtYXBUeXBlIHBpeG1hcCwKLS0gICBjb25zdCB1aW50MzJfdCAqcGl4bWFwX3NlcnZlcl9oYW5kbGUsCi0tICAgRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgbmV4dF9yZXNvdXJjZV9oYW5kbGUpOwotKyAgIGNvbnN0IHVpbnQzMl90ICpwaXhtYXBfc2VydmVyX2hhbmRsZSk7Ci0gZXh0ZXJuIEVHTF9TVVJGQUNFX1QgKmVnbF9zdXJmYWNlX2Zyb21fdmdfaW1hZ2UoCi0gICAgVkdJbWFnZSB2Z19oYW5kbGUsCi0gICAgRUdMU3VyZmFjZSBuYW1lLAotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2ludF9pbXBsLmgKLSsrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9pbnRfaW1wbC5oCi1AQCAtNTcsNyArNTcsNyBAQCBGTihpbnQsIGVnbEludENyZWF0ZVN1cmZhY2VfaW1wbCwgKAotICAgIHVpbnQzMl90IHNlbSwKLSAgICB1aW50MzJfdCB0eXBlLAotICAgIHVpbnQzMl90ICpyZXN1bHRzLAotLSAgIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIG5leHRfcmVzb3VyY2VfaGFuZGxlKSkKLSsgICBESVNQTUFOWF9SRVNPVVJDRV9IQU5ETEVfVCByZXNvdXJjZV9oYW5kbGUpKQotIAotIEZOKGludCwgZWdsSW50Q3JlYXRlUGJ1ZmZlckZyb21WR0ltYWdlX2ltcGwsICgKLSAgICBWR0ltYWdlIHZnX2hhbmRsZSwKLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKLUBAIC0wLDAgKzEsMjQ2IEBACi0rLyoKLStDb3B5cmlnaHQgKGMpIDIwMTMsIFJhc3BiZXJyeSBQaSBGb3VuZGF0aW9uCi0rQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsKLStSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSttb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSsgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZQotKyAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCi0rICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rCi0rVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0rV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotK0RJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0rKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotK0xPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotK09OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0rKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLStTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSsqLwotKwotKyNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgiCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudF9ycGMuaCIKLSsKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF9raHJfc3luY19jbGllbnQuaCIKLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsLmgiCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbGV4dC5oIgotKwotKyNpbmNsdWRlICJpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaCIKLSsKLSsjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXIuaD4KLSsjaW5jbHVkZSAiaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaCIKLSsKLStzdGF0aWMgdm9pZAotK2Rlc3Ryb3lfYnVmZmVyKHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UpCi0rewotKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyICpidWZmZXIgPSB3bF9yZXNvdXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKTsKLSsKLSsgICBpZighYnVmZmVyLT5pbl91c2UpCi0rICAgICAgdmNfZGlzcG1hbnhfcmVzb3VyY2VfZGVsZXRlKGJ1ZmZlci0+aGFuZGxlKTsKLSsKLSsgICBmcmVlKGJ1ZmZlcik7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rYnVmZmVyX2Rlc3Ryb3koc3RydWN0IHdsX2NsaWVudCAqY2xpZW50LCBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKnJlc291cmNlKQotK3sKLSsgICB3bF9yZXNvdXJjZV9kZXN0cm95KHJlc291cmNlKTsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9idWZmZXJfaW50ZXJmYWNlIGRpc3BtYW54X2J1ZmZlcl9pbnRlcmZhY2UgPSB7Ci0rICAgYnVmZmVyX2Rlc3Ryb3kKLSt9OwotKwotK3N0YXRpYyBWQ19JTUFHRV9UWVBFX1QKLStnZXRfdmNfZm9ybWF0KGVudW0gd2xfZGlzcG1hbnhfZm9ybWF0IGZvcm1hdCkKLSt7Ci0rCS8qIFhYWDogVGhlIGFwcCBpcyBsaWtlbHkgdG8gaGF2ZSBiZWVuIHByZW11bHRpcGx5aW5nIGluIGl0cyBzaGFkZXJzLAotKwkgKiBidXQgdGhlIFZDIHNjYW5vdXQgaGFyZHdhcmUgb24gdGhlIFJQaSBjYW5ub3QgbWl4IHByZW11bHRpcGxpZWQgYWxwaGEKLSsJICogY2hhbm5lbCB3aXRoIHRoZSBlbGVtZW50J3MgYWxwaGEuCi0rCSAqLwotKwlzd2l0Y2ggKGZvcm1hdCkgewotKwljYXNlIFdMX0RJU1BNQU5YX0ZPUk1BVF9BQkdSODg4ODoKLSsJCXJldHVybiBWQ19JTUFHRV9SR0JBMzI7Ci0rCWNhc2UgV0xfRElTUE1BTlhfRk9STUFUX1hCR1I4ODg4OgotKwkJcmV0dXJuIFZDX0lNQUdFX0JHUlg4ODg4OwotKwljYXNlIFdMX0RJU1BNQU5YX0ZPUk1BVF9SR0I1NjU6Ci0rCQlyZXR1cm4gVkNfSU1BR0VfUkdCNTY1OwotKwlkZWZhdWx0OgotKwkJLyogaW52YWxpZCBmb3JtYXQgKi8KLSsJCXJldHVybiBWQ19JTUFHRV9NSU47Ci0rCX0KLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStkaXNwbWFueF9jcmVhdGVfYnVmZmVyKHN0cnVjdCB3bF9jbGllbnQgKmNsaWVudCwgc3RydWN0IHdsX3Jlc291cmNlICpyZXNvdXJjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0cmlkZSwgdWludDMyX3QgYnVmZmVyX2hlaWdodCwgdWludDMyX3QgZm9ybWF0KQotK3sKLSsgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciAqYnVmZmVyOwotKyAgIFZDX0lNQUdFX1RZUEVfVCB2Y19mb3JtYXQgPSBnZXRfdmNfZm9ybWF0KGZvcm1hdCk7Ci0rICAgdWludDMyX3QgZHVtbXk7Ci0rCi0rICAgaWYodmNfZm9ybWF0ID09IFZDX0lNQUdFX01JTikgewotKyAgICAgIHdsX3Jlc291cmNlX3Bvc3RfZXJyb3IocmVzb3VyY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXTF9ESVNQTUFOWF9FUlJPUl9JTlZBTElEX0ZPUk1BVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCIpOwotKyAgICAgIHJldHVybjsKLSsgICB9Ci0rCi0rICAgYnVmZmVyID0gY2FsbG9jKDEsIHNpemVvZiAqYnVmZmVyKTsKLSsgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKLSsgICAgICB3bF9yZXNvdXJjZV9wb3N0X25vX21lbW9yeShyZXNvdXJjZSk7Ci0rICAgICAgcmV0dXJuOwotKyAgIH0KLSsKLSsgICBidWZmZXItPmhhbmRsZSA9IHZjX2Rpc3BtYW54X3Jlc291cmNlX2NyZWF0ZSh2Y19mb3JtYXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggfCAoc3RyaWRlIDw8IDE2KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgfCAoYnVmZmVyX2hlaWdodCA8PCAxNiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR1bW15KTsKLSsgICBpZihidWZmZXItPmhhbmRsZSA9PSBESVNQTUFOWF9OT19IQU5ETEUpIHsKLSsgICAgICB3bF9yZXNvdXJjZV9wb3N0X2Vycm9yKHJlc291cmNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRVJST1JfQUxMT0NfRkFJTEVELAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbG9jYXRpb24gZmFpbGVkIik7Ci0rICAgICAgZnJlZShidWZmZXIpOwotKyAgICAgIHJldHVybjsKLSsgICB9Ci0rCi0rICAgYnVmZmVyLT53aWR0aCA9IHdpZHRoOwotKyAgIGJ1ZmZlci0+aGVpZ2h0ID0gaGVpZ2h0OwotKyAgIGJ1ZmZlci0+Zm9ybWF0ID0gZm9ybWF0OwotKwotKyAgIGJ1ZmZlci0+cmVzb3VyY2UgPSB3bF9yZXNvdXJjZV9jcmVhdGUocmVzb3VyY2UtPmNsaWVudCwgJndsX2J1ZmZlcl9pbnRlcmZhY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBpZCk7Ci0rICAgaWYgKCFidWZmZXItPnJlc291cmNlKSB7Ci0rICAgICAgd2xfcmVzb3VyY2VfcG9zdF9ub19tZW1vcnkocmVzb3VyY2UpOwotKyAgICAgIHZjX2Rpc3BtYW54X3Jlc291cmNlX2RlbGV0ZShidWZmZXItPmhhbmRsZSk7Ci0rICAgICAgZnJlZShidWZmZXIpOwotKyAgICAgIHJldHVybjsKLSsgICB9Ci0rCi0rICAgd2xfcmVzb3VyY2Vfc2V0X2ltcGxlbWVudGF0aW9uKGJ1ZmZlci0+cmVzb3VyY2UsCi0rCQkJCSAgICAgICAodm9pZCAoKiopKHZvaWQpKSAmZGlzcG1hbnhfYnVmZmVyX2ludGVyZmFjZSwKLSsJCQkJICAgICAgIGJ1ZmZlciwgZGVzdHJveV9idWZmZXIpOwotKwotKyAgIHdsX2Rpc3BtYW54X3NlbmRfYnVmZmVyX2FsbG9jYXRlZChyZXNvdXJjZSwgYnVmZmVyLT5yZXNvdXJjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5oYW5kbGUpOwotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHdsX2Rpc3BtYW54X2ludGVyZmFjZSBkaXNwbWFueF9pbnRlcmZhY2UgPSB7Ci0rICAgZGlzcG1hbnhfY3JlYXRlX2J1ZmZlciwKLSt9OwotKwotK3N0YXRpYyB2b2lkCi0rYmluZF9kaXNwbWFueChzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHZvaWQgKmRhdGEsIHVpbnQzMl90IHZlcnNpb24sIHVpbnQzMl90IGlkKQotK3sKLSsgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKnJlc291cmNlOwotKwotKyAgIHJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKGNsaWVudCwgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwgMSwgaWQpOwotKyAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihyZXNvdXJjZSwgJmRpc3BtYW54X2ludGVyZmFjZSwgTlVMTCwgTlVMTCk7Ci0rCi0rICAgd2xfcmVzb3VyY2VfcG9zdF9ldmVudChyZXNvdXJjZSwgV0xfRElTUE1BTlhfRk9STUFULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRk9STUFUX0FSR0I4ODg4KTsKLSsKLSsgICB3bF9yZXNvdXJjZV9wb3N0X2V2ZW50KHJlc291cmNlLCBXTF9ESVNQTUFOWF9GT1JNQVQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBXTF9ESVNQTUFOWF9GT1JNQVRfWFJHQjg4ODgpOwotKwotKyAgIHdsX3Jlc291cmNlX3Bvc3RfZXZlbnQocmVzb3VyY2UsIFdMX0RJU1BNQU5YX0ZPUk1BVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0ZPUk1BVF9BQkdSODg4OCk7Ci0rCi0rICAgd2xfcmVzb3VyY2VfcG9zdF9ldmVudChyZXNvdXJjZSwgV0xfRElTUE1BTlhfRk9STUFULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgV0xfRElTUE1BTlhfRk9STUFUX1hCR1I4ODg4KTsKLSsKLSsgICB3bF9yZXNvdXJjZV9wb3N0X2V2ZW50KHJlc291cmNlLCBXTF9ESVNQTUFOWF9GT1JNQVQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBXTF9ESVNQTUFOWF9GT1JNQVRfUkdCNTY1KTsKLSt9Ci0rCi0rRUdMQm9vbGVhbiBFR0xBUElFTlRSWQotK2VnbEJpbmRXYXlsYW5kRGlzcGxheVdMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKLSt7Ci0rICAgQ0xJRU5UX1RIUkVBRF9TVEFURV9UICp0aHJlYWQ7Ci0rICAgQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzczsKLSsKLSsgICBpZiAoIUNMSUVOVF9MT0NLX0FORF9HRVRfU1RBVEVTKGRweSwgJnRocmVhZCwgJnByb2Nlc3MpKQotKyAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0rCi0rICAgaWYgKHByb2Nlc3MtPndsX2dsb2JhbCAhPSBOVUxMKQotKyAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICAgcHJvY2Vzcy0+d2xfZ2xvYmFsID0gd2xfZ2xvYmFsX2NyZWF0ZShkaXNwbGF5LCAmd2xfZGlzcG1hbnhfaW50ZXJmYWNlLCAxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYmluZF9kaXNwbWFueCk7Ci0rICAgaWYgKHByb2Nlc3MtPndsX2dsb2JhbCA9PSBOVUxMKQotKyAgICAgIGdvdG8gZXJyb3I7Ci0rCi0rICAgcmV0dXJuIEVHTF9UUlVFOwotKwotK2Vycm9yOgotKyAgIENMSUVOVF9VTkxPQ0soKTsKLSsgICByZXR1cm4gRUdMX0ZBTFNFOwotK30KLSsKLStFR0xCb29sZWFuIEVHTEFQSUVOVFJZCi0rZWdsVW5iaW5kV2F5bGFuZERpc3BsYXlXTChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCi0rewotKyAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkOwotKyAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3M7Ci0rCi0rICAgaWYgKCFDTElFTlRfTE9DS19BTkRfR0VUX1NUQVRFUyhkcHksICZ0aHJlYWQsICZwcm9jZXNzKSkKLSsgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotKwotKyAgIHdsX2dsb2JhbF9kZXN0cm95KHByb2Nlc3MtPndsX2dsb2JhbCk7Ci0rICAgcHJvY2Vzcy0+d2xfZ2xvYmFsID0gTlVMTDsKLSsKLSsgICBDTElFTlRfVU5MT0NLKCk7Ci0rCi0rICAgcmV0dXJuIEVHTF9UUlVFOwotK30KLSsKLStzdGF0aWMgaW50Ci0rZ2V0X2VnbF9mb3JtYXQoZW51bSB3bF9kaXNwbWFueF9mb3JtYXQgZm9ybWF0KQotK3sKLSsJc3dpdGNoIChmb3JtYXQpIHsKLSsJY2FzZSBXTF9ESVNQTUFOWF9GT1JNQVRfQUJHUjg4ODg6Ci0rCQlyZXR1cm4gRUdMX1RFWFRVUkVfUkdCQTsKLSsJY2FzZSBXTF9ESVNQTUFOWF9GT1JNQVRfWEJHUjg4ODg6Ci0rCQlyZXR1cm4gRUdMX1RFWFRVUkVfUkdCOwotKwljYXNlIFdMX0RJU1BNQU5YX0ZPUk1BVF9SR0I1NjU6Ci0rCQlyZXR1cm4gRUdMX1RFWFRVUkVfUkdCOwotKwlkZWZhdWx0OgotKwkJLyogaW52YWxpZCBmb3JtYXQgKi8KLSsJCXJldHVybiBFR0xfTk9fVEVYVFVSRTsKLSsJfQotK30KLSsKLStFR0xCb29sZWFuIEVHTEFQSUVOVFJZCi0rZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9yZXNvdXJjZSAqX2J1ZmZlciwKLSsgICAgICAgICBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQotK3sKLSsgICBzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciAqYnVmZmVyID0gd2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShfYnVmZmVyKTsKLSsKLSsgICBpZiAod2xfcmVzb3VyY2VfaW5zdGFuY2Vfb2YoX2J1ZmZlciwgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpc3BtYW54X2J1ZmZlcl9pbnRlcmZhY2UpKQotKyAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0rCi0rICAgc3dpdGNoIChhdHRyaWJ1dGUpIHsKLSsgICBjYXNlIEVHTF9URVhUVVJFX0ZPUk1BVDoKLSsgICAgICAqdmFsdWUgPSBnZXRfZWdsX2Zvcm1hdChidWZmZXItPmZvcm1hdCk7Ci0rICAgICAgaWYgKCp2YWx1ZSA9PSBFR0xfTk9fVEVYVFVSRSkKLSsgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotKyAgICAgIHJldHVybiBFR0xfVFJVRTsKLSsgICBjYXNlIEVHTF9XSURUSDoKLSsgICAgICAqdmFsdWUgPSBidWZmZXItPndpZHRoOwotKyAgICAgIHJldHVybiBFR0xfVFJVRTsKLSsgICBjYXNlIEVHTF9IRUlHSFQ6Ci0rICAgICAgKnZhbHVlID0gYnVmZmVyLT5oZWlnaHQ7Ci0rICAgICAgcmV0dXJuIEVHTF9UUlVFOwotKyAgIH0KLSsKLSsgICByZXR1cm4gRUdMX0ZBTFNFOwotK30KLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdsZXh0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xleHQuaAotQEAgLTE5MSw2ICsxOTEsMjkgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMRwotICNlbmRpZgotIAotIAotKyNpZm5kZWYgRUdMX1dMX2JpbmRfd2F5bGFuZF9kaXNwbGF5Ci0rI2RlZmluZSBFR0xfV0xfYmluZF93YXlsYW5kX2Rpc3BsYXkgMQotKwotKyNkZWZpbmUgRUdMX1dBWUxBTkRfQlVGRkVSX1dMCQkweDMxRDUgLyogZWdsQ3JlYXRlSW1hZ2VLSFIgdGFyZ2V0ICovCi0rI2RlZmluZSBFR0xfV0FZTEFORF9QTEFORV9XTAkJMHgzMUQ2IC8qIGVnbENyZWF0ZUltYWdlS0hSIHRhcmdldCAqLwotKyNkZWZpbmUgRUdMX1RFWFRVUkVfWV9VX1ZfV0wgICAgICAgICAgICAweDMxRDcKLSsjZGVmaW5lIEVHTF9URVhUVVJFX1lfVVZfV0wgICAgICAgICAgICAgMHgzMUQ4Ci0rI2RlZmluZSBFR0xfVEVYVFVSRV9ZX1hVWFZfV0wgICAgICAgICAgIDB4MzFEOQotKwotK3N0cnVjdCB3bF9kaXNwbGF5OwotK3N0cnVjdCB3bF9yZXNvdXJjZTsKLSsjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCi0rRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsQmluZFdheWxhbmREaXNwbGF5V0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KTsKLStFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xVbmJpbmRXYXlsYW5kRGlzcGxheVdMKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSk7Ci0rRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVlcnlXYXlsYW5kQnVmZmVyV0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9yZXNvdXJjZSAqYnVmZmVyLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKLSsjZW5kaWYKLSt0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xCSU5EV0FZTEFORERJU1BMQVlXTCkgKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSk7Ci0rdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMVU5CSU5EV0FZTEFORERJU1BMQVlXTCkgKEVHTERpc3BsYXkgZHB5LCBzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSk7Ci0rdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVFUllXQVlMQU5EQlVGRkVSV0wpIChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX3Jlc291cmNlICpidWZmZXIsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpOwotKwotKyNlbmRpZgotKwotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIH0KLSAjZW5kaWYKLUluZGV4OiBnaXQvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wtcHJpdi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZ2l0L2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLXByaXYuaAotQEAgLTAsMCArMSw1MyBAQAotKy8qIENvcGllZCBmcm9tIE1lc2EgKi8KLSsKLSsjaWZuZGVmIF9XQVlMQU5EX0VHTF9QUklWX0gKLSsjZGVmaW5lIF9XQVlMQU5EX0VHTF9QUklWX0gKLSsKLSsjaWZkZWYgIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rLyogR0NDIHZpc2liaWxpdHkgKi8KLSsjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAotKyNkZWZpbmUgV0xfRUdMX0VYUE9SVCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSsjZWxzZQotKyNkZWZpbmUgV0xfRUdMX0VYUE9SVAotKyNlbmRpZgotKwotKyNpbmNsdWRlICJpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX2Rpc3BtYW54LmgiCi0rI2luY2x1ZGUgImludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaCIKLSsKLSsjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLSsKLStzdHJ1Y3Qgd2xfZGlzcG1hbnhfY2xpZW50X2J1ZmZlciB7Ci0rCXN0cnVjdCB3bF9idWZmZXIgKndsX2J1ZmZlcjsKLSsJRElTUE1BTlhfUkVTT1VSQ0VfSEFORExFX1QgcmVzb3VyY2U7Ci0rCi0rCWludCBwZW5kaW5nX2FsbG9jYXRpb247Ci0rCWludCBpbl91c2U7Ci0rCWludCB3aWR0aDsKLSsJaW50IGhlaWdodDsKLSt9OwotKwotK3N0cnVjdCB3bF9lZ2xfd2luZG93IHsKLSsJc3RydWN0IHdsX3N1cmZhY2UgKndsX3N1cmZhY2U7Ci0rCi0rCWludCB3aWR0aDsKLSsJaW50IGhlaWdodDsKLSsJaW50IGR4OwotKwlpbnQgZHk7Ci0rCi0rCWludCBhdHRhY2hlZF93aWR0aDsKLSsJaW50IGF0dGFjaGVkX2hlaWdodDsKLSsKLSsJLyogWFhYOiBUaGUgVkMgc2lkZSBzZWVtcyB0byBleHBlY3QgYSB2YWxpZCBlbGVtZW50IGhhbmRsZSB0byBiZQotKwkgICBwYXNzZWQgdG8gZWdsSW50Q3JlYXRlU3VyZmFjZV9pbXBsIGFuZC9vciBlZ2xJbnRTd2FwQnVmZmVyc19pbXBsLAotKwkgICBldmVuIGZvciBob3N0LW1hbmFnZWQgc3VyZmFjZXMuICovCi0rCURJU1BNQU5YX0VMRU1FTlRfSEFORExFX1QgZHVtbXlfZWxlbWVudDsKLSt9OwotKwotKyNpZmRlZiAgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmCi1JbmRleDogZ2l0L2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBnaXQvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wuYwotQEAgLTAsMCArMSw1OSBAQAotKy8qIENvcGllZCBmcm9tIE1lc2EgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0rI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0rI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+Ci0rI2luY2x1ZGUgIndheWxhbmQtZWdsLXByaXYuaCIKLSsKLStXTF9FR0xfRVhQT1JUIHZvaWQKLSt3bF9lZ2xfd2luZG93X3Jlc2l6ZShzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqZWdsX3dpbmRvdywKLSsJCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAotKwkJICAgICBpbnQgZHgsIGludCBkeSkKLSt7Ci0rICAgICAgICBpZiAoZWdsX3dpbmRvdy0+d2lkdGggPT0gd2lkdGggJiYKLSsJICAgIGVnbF93aW5kb3ctPmhlaWdodCA9PSBoZWlnaHQgJiYKLSsJICAgIGVnbF93aW5kb3ctPmR4ID09IGR4ICYmCi0rCSAgICBlZ2xfd2luZG93LT5keSA9PSBkeSkKLSsJCXJldHVybjsKLSsKLSsJZWdsX3dpbmRvdy0+d2lkdGggPSB3aWR0aDsKLSsJZWdsX3dpbmRvdy0+aGVpZ2h0ID0gaGVpZ2h0OwotKwllZ2xfd2luZG93LT5keCA9IGR4OwotKwllZ2xfd2luZG93LT5keSA9IGR5OwotK30KLSsKLStXTF9FR0xfRVhQT1JUIHN0cnVjdCB3bF9lZ2xfd2luZG93ICoKLSt3bF9lZ2xfd2luZG93X2NyZWF0ZShzdHJ1Y3Qgd2xfc3VyZmFjZSAqc3VyZmFjZSwKLSsJCSAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotK3sKLSsJc3RydWN0IHdsX2VnbF93aW5kb3cgKmVnbF93aW5kb3c7Ci0rCi0rCWVnbF93aW5kb3cgPSBjYWxsb2MoMSwgc2l6ZW9mICplZ2xfd2luZG93KTsKLSsJaWYgKCFlZ2xfd2luZG93KQotKwkJcmV0dXJuIE5VTEw7Ci0rCi0rCWVnbF93aW5kb3ctPndsX3N1cmZhY2UgPSBzdXJmYWNlOwotKwl3bF9lZ2xfd2luZG93X3Jlc2l6ZShlZ2xfd2luZG93LCB3aWR0aCwgaGVpZ2h0LCAwLCAwKTsKLSsJZWdsX3dpbmRvdy0+YXR0YWNoZWRfd2lkdGggID0gMDsKLSsJZWdsX3dpbmRvdy0+YXR0YWNoZWRfaGVpZ2h0ID0gMDsKLSsJZWdsX3dpbmRvdy0+ZHVtbXlfZWxlbWVudCA9IFBMQVRGT1JNX1dJTl9OT05FOwotKwotKwlyZXR1cm4gZWdsX3dpbmRvdzsKLSt9Ci0rCi0rV0xfRUdMX0VYUE9SVCB2b2lkCi0rd2xfZWdsX3dpbmRvd19kZXN0cm95KHN0cnVjdCB3bF9lZ2xfd2luZG93ICplZ2xfd2luZG93KQotK3sKLSsJZnJlZShlZ2xfd2luZG93KTsKLSt9Ci0rCi0rV0xfRUdMX0VYUE9SVCB2b2lkCi0rd2xfZWdsX3dpbmRvd19nZXRfYXR0YWNoZWRfc2l6ZShzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqZWdsX3dpbmRvdywKLSsJCQkJaW50ICp3aWR0aCwgaW50ICpoZWlnaHQpCi0rewotKwlpZiAod2lkdGgpCi0rCQkqd2lkdGggPSBlZ2xfd2luZG93LT5hdHRhY2hlZF93aWR0aDsKLSsJaWYgKGhlaWdodCkKLSsJCSpoZWlnaHQgPSBlZ2xfd2luZG93LT5hdHRhY2hlZF9oZWlnaHQ7Ci0rfQotSW5kZXg6IGdpdC9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGdpdC9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgotQEAgLTAsMCArMSwxMCBAQAotK3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACi0rZXhlY19wcmVmaXg9JHtwcmVmaXh9Ci0rbGliZGlyPSR7ZXhlY19wcmVmaXh9L2xpYgotK2luY2x1ZGVkaXI9JHtwcmVmaXh9L2luY2x1ZGUKLSsKLStOYW1lOiB3YXlsYW5kLWVnbAotK0Rlc2NyaXB0aW9uOiBWaWRlb0NvcmUgd2F5bGFuZC1lZ2wgbGlicmFyeQotK1ZlcnNpb246IEBQUk9KRUNUX0FQSVZFUkAKLStMaWJzOiAtTCR7bGliZGlyfSAtbHdheWxhbmQtZWdsCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLUluZGV4OiBnaXQvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKLSsrKyBnaXQvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAotQEAgLTksMTMgKzksMjQgQEAgYWRkX2RlZmluaXRpb25zKC1mbm8tc3RyaWN0LWFsaWFzaW5nKQotIAotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtWTUNTX1RBUkdFVH0vdmNmaWxlZCkKLSAKLS1hZGRfbGlicmFyeSh2Y2hvc3RpZgotLSAgICAgICAgICAgICR7Vk1DU19UQVJHRVR9L3ZjZmlsZXN5cy5jICR7Vk1DU19UQVJHRVR9L3ZjbWlzYy5jCi0tICAgICAgICAgICAgdmNfdmNoaV9nZW5jbWQuYyB2Y192Y2hpX2ZpbGVzeXMuYyB2Y192Y2hpX2dwdXNlcnYuYwotLSAgICAgICAgICAgIHZjX3ZjaGlfdHZzZXJ2aWNlLmMgdmNfdmNoaV9jZWNzZXJ2aWNlLmMKLS0gICAgICAgICAgICB2Y192Y2hpX2Rpc3BtYW54LmMgdmNfc2VydmljZV9jb21tb24uYykKLStzZXQoVkNIT1NUSUZfU09VUkNFCi0rICAgICR7Vk1DU19UQVJHRVR9L3ZjZmlsZXN5cy5jICR7Vk1DU19UQVJHRVR9L3ZjbWlzYy5jCi0rICAgIHZjX3ZjaGlfZ2VuY21kLmMgdmNfdmNoaV9maWxlc3lzLmMgdmNfdmNoaV9ncHVzZXJ2LmMKLSsgICAgdmNfdmNoaV90dnNlcnZpY2UuYyB2Y192Y2hpX2NlY3NlcnZpY2UuYwotKyAgICB2Y192Y2hpX2Rpc3BtYW54LmMgdmNfc2VydmljZV9jb21tb24uYykKLSAjICAgICAgICAgICAgJHtWTUNTX1RBUkdFVH0vdm1jc19tYWluLmMKLSAjICB2Y192Y2hpX2hhdWQuYwotKwotK2lmIChCVUlMRF9XQVlMQU5EKQotK3dheWxhbmRfYWRkX3Byb3RvY29sX3NlcnZlcigKLSsgICAgVkNIT1NUSUZfU09VUkNFCi0rICAgIC4uLy4uL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotKyAgICBkaXNwbWFueAotKykKLStlbmRpZiAoKQotKwotK2FkZF9saWJyYXJ5KHZjaG9zdGlmICR7VkNIT1NUSUZfU09VUkNFfSkKLSsKLSAjYWRkX2xpYnJhcnkoYnVmbWFuICAgICAgICAgICAgdmNfdmNoaV9idWZtYW4uYyAgICAgICAgICAgICkKLSAKLSAjIE9wZW5NQVgvSUwgY29tcG9uZW50IHNlcnZpY2UKLUluZGV4OiBnaXQvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueC5oCi0rKysgZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfZGlzcG1hbnguaAotQEAgLTM5LDYgKzM5LDExIEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQkkKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLSsKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotK3N0cnVjdCB3bF9yZXNvdXJjZTsKLSsjZW5kaWYKLSsKLSAvLyBTYW1lIGZ1bmN0aW9uIGFzIGFib3ZlLCB0byBhaWQgbWlncmF0aW9uIG9mIGNvZGUuCi0gVkNIUFJFXyBpbnQgVkNIUE9TVF8gdmNfZGlzcG1hbl9pbml0KCB2b2lkICk7Ci0gLy8gU3RvcCB0aGUgc2VydmljZSBmcm9tIGJlaW5nIHVzZWQKLUBAIC0xMzUsNiArMTQwLDExIEBAIFZDSFBSRV8gaW50IFZDSFBPU1RfIHZjX2Rpc3BtYW54X3Jlc291cmMKLSAvLyBTdGFydCB0cmlnZ2VyaW5nIGNhbGxiYWNrcyBzeW5jZWQgdG8gdnN5bmMKLSBWQ0hQUkVfIGludCBWQ0hQT1NUXyB2Y19kaXNwbWFueF92c3luY19jYWxsYmFjayggRElTUE1BTlhfRElTUExBWV9IQU5ETEVfVCBkaXNwbGF5LCBESVNQTUFOWF9DQUxMQkFDS19GVU5DX1QgY2JfZnVuYywgdm9pZCAqY2JfYXJnICk7Ci0gCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLStWQ0hQUkVfIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIFZDSFBPU1RfIHZjX2Rpc3BtYW54X2dldF9oYW5kbGVfZnJvbV93bF9idWZmZXIoIHN0cnVjdCB3bF9yZXNvdXJjZSAqX2J1ZmZlciApOwotKwotK1ZDSFBSRV8gdm9pZCBWQ0hQT1NUXyB2Y19kaXNwbWFueF9zZXRfd2xfYnVmZmVyX2luX3VzZSggc3RydWN0IHdsX3Jlc291cmNlICpfYnVmZmVyLCBpbnQgaW5fdXNlICk7Ci0rI2VuZGlmCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gfQotICNlbmRpZgotSW5kZXg6IGdpdC9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCi0rKysgZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCi1AQCAtMTMxOSwzICsxMzE5LDQ1IEBAIHN0YXRpYyB2b2lkICpkaXNwbWFueF9ub3RpZnlfZnVuYyggdm9pZAotICAgIH0KLSAgICByZXR1cm4gMDsKLSB9Ci0rCi0rCi0rI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSsgKiBOYW1lOiB2Y19kaXNwbWFueF9nZXRfaGFuZGxlX2Zyb21fd2xfYnVmZmVyCi0rICoKLSsgKiBBcmd1bWVudHM6Ci0rICogICAgICAgc3RydWN0IHdsX3Jlc291cmNlICpfYnVmZmVyCi0rICoKLSsgKiBEZXNjcmlwdGlvbjogUmV0dXJuIHRoZSBoYW5kbGUgb2YgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgdG8gdGhpcyBXYXlsYW5kIGJ1ZmZlcgotKyAqCi0rICogUmV0dXJuczogQSByZXNvdXJjZSBoYW5kbGUKLSsgKgotKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLStWQ0hQUkVfIERJU1BNQU5YX1JFU09VUkNFX0hBTkRMRV9UIFZDSFBPU1RfIHZjX2Rpc3BtYW54X2dldF9oYW5kbGVfZnJvbV93bF9idWZmZXIoIHN0cnVjdCB3bF9yZXNvdXJjZSAqX2J1ZmZlciApCi0rewotKwlzdHJ1Y3Qgd2xfZGlzcG1hbnhfc2VydmVyX2J1ZmZlciAqYnVmZmVyID0gKHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyKilfYnVmZmVyLT5kYXRhOwotKwlpZiAoIWJ1ZmZlcikKLSsJCXJldHVybiBESVNQTUFOWF9OT19IQU5ETEU7Ci0rCi0rCXJldHVybiBidWZmZXItPmhhbmRsZTsKLSt9Ci0rCi0rLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0rICogTmFtZTogdmNfZGlzcG1hbnhfc2V0X3dsX2J1ZmZlcl9pbl91c2UKLSsgKgotKyAqIEFyZ3VtZW50czoKLSsgKiAgICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKl9idWZmZXIKLSsgKiAgICAgICBpbnQgaW5fdXNlCi0rICoKLSsgKiBEZXNjcmlwdGlvbjogTWFyayB0aGlzIFdheWxhbmQgYnVmZmVyIGFzIGJlaW5nIGluIHVzZSBieSB0aGUgY29tcG9zaXRvcgotKyAqCi0rICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotK1ZDSFBSRV8gdm9pZCBWQ0hQT1NUXyB2Y19kaXNwbWFueF9zZXRfd2xfYnVmZmVyX2luX3VzZSggc3RydWN0IHdsX3Jlc291cmNlICpfYnVmZmVyLCBpbnQgaW5fdXNlICkKLSt7Ci0rCXN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyICpidWZmZXIgPSAoc3RydWN0IHdsX2Rpc3BtYW54X3NlcnZlcl9idWZmZXIqKV9idWZmZXItPmRhdGE7Ci0rCWlmICghYnVmZmVyKQotKwkJcmV0dXJuOwotKwotKwlidWZmZXItPmluX3VzZSA9IGluX3VzZTsKLSt9Ci0rI2VuZGlmCi1JbmRleDogZ2l0L2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGdpdC9pbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwKLUBAIC0wLDAgKzEsMTIzIEBACi0rPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLSs8cHJvdG9jb2wgbmFtZT0iZGlzcG1hbngiPgotKwotKyAgPGNvcHlyaWdodD4KLSsgICAgQ29weXJpZ2h0IMKpIDIwMDgtMjAxMSBLcmlzdGlhbiBIw7hnc2JlcmcKLSsgICAgQ29weXJpZ2h0IMKpIDIwMTAtMjAxMSBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgICBDb3B5cmlnaHQgwqkgMjAxMyBSYXNwYmVycnkgUGkgRm91bmRhdGlvbgotKwotKyAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzCi0rICAgIHNvZnR3YXJlIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQKLSsgICAgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXRcbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4KLSsgICAgYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCi0rICAgIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZgotKyAgICB0aGUgY29weXJpZ2h0IGhvbGRlcnMgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5Ci0rICAgIHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotKyAgICB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBUaGUgY29weXJpZ2h0IGhvbGRlcnMgbWFrZSBubwotKyAgICByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotKyAgICBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAotKyAgICB3YXJyYW50eS4KLSsKLSsgICAgVEhFIENPUFlSSUdIVCBIT0xERVJTIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMKLSsgICAgU09GVFdBUkUsIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKLSsgICAgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0rICAgIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotKyAgICBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4KLSsgICAgQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwKLSsgICAgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YKLSsgICAgVEhJUyBTT0ZUV0FSRS4KLSsgIDwvY29weXJpZ2h0PgotKwotKyAgPCEtLSBEaXNwTWFuWCBzdXBwb3J0LiBUaGlzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXIgYW5kIHB1Ymxpc2hlZAotKyAgICAgICB1c2luZyB0aGUgZGlzcGxheSdzIGdsb2JhbCBldmVudC4gLS0+Ci0rICA8aW50ZXJmYWNlIG5hbWU9IndsX2Rpc3BtYW54IiB2ZXJzaW9uPSIxIj4KLSsgICAgPGVudW0gbmFtZT0iZXJyb3IiPgotKyAgICAgIDxlbnRyeSBuYW1lPSJhbGxvY19mYWlsZWQiIHZhbHVlPSIwIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImludmFsaWRfZm9ybWF0IiB2YWx1ZT0iMSIvPgotKyAgICA8L2VudW0+Ci0rCi0rICAgIDxlbnVtIG5hbWU9ImZvcm1hdCI+Ci0rICAgICAgPCEtLSBUaGUgcGl4ZWwgZm9ybWF0IGNvZGVzIG1hdGNoIHRoZSAjZGVmaW5lcyBpbiBkcm1fZm91cmNjLmguCi0rICAgICAgICAgICBUaGUgZm9ybWF0cyBhY3R1YWxseSBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBvc2l0b3Igd2lsbCBiZQotKyAgICAgICAgICAgcmVwb3J0ZWQgYnkgdGhlIGZvcm1hdCBldmVudC4gLS0+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImM4IiB2YWx1ZT0iMHgyMDIwMzg0MyIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2IzMzIiIHZhbHVlPSIweDM4NDI0NzUyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImJncjIzMyIgdmFsdWU9IjB4Mzg1MjQ3NDIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieHJnYjQ0NDQiIHZhbHVlPSIweDMyMzE1MjU4Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InhiZ3I0NDQ0IiB2YWx1ZT0iMHgzMjMxNDI1OCIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2J4NDQ0NCIgdmFsdWU9IjB4MzIzMTU4NTIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYmdyeDQ0NDQiIHZhbHVlPSIweDMyMzE1ODQyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImFyZ2I0NDQ0IiB2YWx1ZT0iMHgzMjMxNTI0MSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJhYmdyNDQ0NCIgdmFsdWU9IjB4MzIzMTQyNDEiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0icmdiYTQ0NDQiIHZhbHVlPSIweDMyMzE0MTUyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImJncmE0NDQ0IiB2YWx1ZT0iMHgzMjMxNDE0MiIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJ4cmdiMTU1NSIgdmFsdWU9IjB4MzUzMTUyNTgiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieGJncjE1NTUiIHZhbHVlPSIweDM1MzE0MjU4Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InJnYng1NTUxIiB2YWx1ZT0iMHgzNTMxNTg1MiIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3J4NTU1MSIgdmFsdWU9IjB4MzUzMTU4NDIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYXJnYjE1NTUiIHZhbHVlPSIweDM1MzE1MjQxIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImFiZ3IxNTU1IiB2YWx1ZT0iMHgzNTMxNDI0MSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2JhNTU1MSIgdmFsdWU9IjB4MzUzMTQxNTIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYmdyYTU1NTEiIHZhbHVlPSIweDM1MzE0MTQyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InJnYjU2NSIgdmFsdWU9IjB4MzYzMTQ3NTIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYmdyNTY1IiB2YWx1ZT0iMHgzNjMxNDc0MiIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2I4ODgiIHZhbHVlPSIweDM0MzI0NzUyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImJncjg4OCIgdmFsdWU9IjB4MzQzMjQ3NDIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieHJnYjg4ODgiIHZhbHVlPSIweDM0MzI1MjU4Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InhiZ3I4ODg4IiB2YWx1ZT0iMHgzNDMyNDI1OCIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2J4ODg4OCIgdmFsdWU9IjB4MzQzMjU4NTIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYmdyeDg4ODgiIHZhbHVlPSIweDM0MzI1ODQyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImFyZ2I4ODg4IiB2YWx1ZT0iMHgzNDMyNTI0MSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJhYmdyODg4OCIgdmFsdWU9IjB4MzQzMjQyNDEiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0icmdiYTg4ODgiIHZhbHVlPSIweDM0MzI0MTUyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImJncmE4ODg4IiB2YWx1ZT0iMHgzNDMyNDE0MiIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJ4cmdiMjEwMTAxMCIgdmFsdWU9IjB4MzAzMzUyNTgiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieGJncjIxMDEwMTAiIHZhbHVlPSIweDMwMzM0MjU4Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InJnYngxMDEwMTAyIiB2YWx1ZT0iMHgzMDMzNTg1MiIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJiZ3J4MTAxMDEwMiIgdmFsdWU9IjB4MzAzMzU4NDIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYXJnYjIxMDEwMTAiIHZhbHVlPSIweDMwMzM1MjQxIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImFiZ3IyMTAxMDEwIiB2YWx1ZT0iMHgzMDMzNDI0MSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJyZ2JhMTAxMDEwMiIgdmFsdWU9IjB4MzAzMzQxNTIiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0iYmdyYTEwMTAxMDIiIHZhbHVlPSIweDMwMzM0MTQyIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl1eXYiIHZhbHVlPSIweDU2NTk1NTU5Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl2eXUiIHZhbHVlPSIweDU1NTk1NjU5Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InV5dnkiIHZhbHVlPSIweDU5NTY1OTU1Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9InZ5dXkiIHZhbHVlPSIweDU5NTU1OTU2Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9ImF5dXYiIHZhbHVlPSIweDU2NTU1OTQxIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Im52MTIiIHZhbHVlPSIweDMyMzE1NjRlIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Im52MjEiIHZhbHVlPSIweDMxMzI1NjRlIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Im52MTYiIHZhbHVlPSIweDM2MzE1NjRlIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Im52NjEiIHZhbHVlPSIweDMxMzY1NjRlIi8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl1djQxMCIgdmFsdWU9IjB4Mzk1NjU1NTkiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieXZ1NDEwIiB2YWx1ZT0iMHgzOTU1NTY1OSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJ5dXY0MTEiIHZhbHVlPSIweDMxMzE1NTU5Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl2dTQxMSIgdmFsdWU9IjB4MzEzMTU2NTkiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieXV2NDIwIiB2YWx1ZT0iMHgzMjMxNTU1OSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJ5dnU0MjAiIHZhbHVlPSIweDMyMzE1NjU5Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl1djQyMiIgdmFsdWU9IjB4MzYzMTU1NTkiLz4KLSsgICAgICA8ZW50cnkgbmFtZT0ieXZ1NDIyIiB2YWx1ZT0iMHgzNjMxNTY1OSIvPgotKyAgICAgIDxlbnRyeSBuYW1lPSJ5dXY0NDQiIHZhbHVlPSIweDM0MzI1NTU5Ii8+Ci0rICAgICAgPGVudHJ5IG5hbWU9Inl2dTQ0NCIgdmFsdWU9IjB4MzQzMjU2NTkiLz4KLSsgICAgPC9lbnVtPgotKwotKyAgICA8ZXZlbnQgbmFtZT0iZm9ybWF0Ij4KLSsgICAgICA8YXJnIG5hbWU9ImZvcm1hdCIgdHlwZT0idWludCIvPgotKyAgICA8L2V2ZW50PgotKwotKyAgICA8IS0tIENyZWF0ZSBhIHdheWxhbmQgYnVmZmVyIGZvciB0aGUgRGlzcE1hblggcmVzb3VyY2UuIC0tPgotKyAgICA8cmVxdWVzdCBuYW1lPSJjcmVhdGVfYnVmZmVyIj4KLSsgICAgICA8YXJnIG5hbWU9ImlkIiB0eXBlPSJuZXdfaWQiIGludGVyZmFjZT0id2xfYnVmZmVyIi8+Ci0rICAgICAgPGFyZyBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ii8+Ci0rICAgICAgPGFyZyBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCIvPgotKyAgICAgIDxhcmcgbmFtZT0ic3RyaWRlIiB0eXBlPSJ1aW50Ii8+Ci0rICAgICAgPGFyZyBuYW1lPSJidWZmZXJfaGVpZ2h0IiB0eXBlPSJ1aW50Ii8+Ci0rICAgICAgPGFyZyBuYW1lPSJmb3JtYXQiIHR5cGU9InVpbnQiLz4KLSsgICAgPC9yZXF1ZXN0PgotKwotKyAgICA8ZXZlbnQgbmFtZT0iYnVmZmVyX2FsbG9jYXRlZCI+Ci0rICAgICAgPGFyZyBuYW1lPSJidWZmZXIiIHR5cGU9Im9iamVjdCIgaW50ZXJmYWNlPSJ3bF9idWZmZXIiLz4KLSsgICAgICA8YXJnIG5hbWU9ImhhbmRsZSIgdHlwZT0idWludCIvPgotKyAgICA8L2V2ZW50PgotKyAgPC9pbnRlcmZhY2U+Ci0rCi0rPC9wcm90b2NvbD4KLUluZGV4OiBnaXQvbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBnaXQvbWFrZWZpbGVzL2NtYWtlL1dheWxhbmQuY21ha2UKLUBAIC0wLDAgKzEsNzIgQEAKLSsjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjIENvcHlyaWdodCAoQykgMjAxMi0yMDEzIFBpZXIgTHVpZ2kgRmlvcmluaSA8cGllcmx1aWdpLmZpb3JpbmlAZ21haWwuY29tPgotKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsjCi0rIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotKyMgYXJlIG1ldDoKLSsjCi0rIyAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rIyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSsjCi0rIyAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rIyAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSsjICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSsjCi0rIyAqIE5laXRoZXIgdGhlIG5hbWUgb2YgUGllciBMdWlnaSBGaW9yaW5pIG5vciB0aGUgbmFtZXMgb2YgaGlzCi0rIyAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotKyMgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0rIwotKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSsjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSsjIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSsjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSsjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0rIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0rIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSsjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0rIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rCi0rZmluZF9wcm9ncmFtKFdBWUxBTkRfU0NBTk5FUl9FWEVDVVRBQkxFIE5BTUVTIHdheWxhbmQtc2Nhbm5lcikKLSsKLSsjIHdheWxhbmRfYWRkX3Byb3RvY29sX2NsaWVudChvdXRmaWxlcyBpbnB1dGZpbGUgYmFzZW5hbWUpCi0rZnVuY3Rpb24oV0FZTEFORF9BRERfUFJPVE9DT0xfQ0xJRU5UIF9zb3VyY2VzIF9wcm90b2NvbCBfYmFzZW5hbWUpCi0rICAgIGlmKE5PVCBXQVlMQU5EX1NDQU5ORVJfRVhFQ1VUQUJMRSkKLSsgICAgICAgIG1lc3NhZ2UoRkFUQUwgIlRoZSB3YXlsYW5kLXNjYW5uZXIgZXhlY3V0YWJsZSBoYXMgbnRvIGJlZW4gZm91bmQgb24geW91ciBzeXN0ZW0uIFlvdSBtdXN0IGluc3RhbGwgaXQuIikKLSsgICAgZW5kaWYoKQotKwotKyAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KF9pbmZpbGUgJHtfcHJvdG9jb2x9IEFCU09MVVRFKQotKyAgICBzZXQoX2NsaWVudF9oZWFkZXIgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS93YXlsYW5kLSR7X2Jhc2VuYW1lfS1jbGllbnQtcHJvdG9jb2wuaCIpCi0rICAgIHNldChfY29kZSAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3dheWxhbmQtJHtfYmFzZW5hbWV9LXByb3RvY29sLmMiKQotKwotKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIke19jbGllbnRfaGVhZGVyfSIKLSsgICAgICAgIENPTU1BTkQgJHtXQVlMQU5EX1NDQU5ORVJfRVhFQ1VUQUJMRX0gY2xpZW50LWhlYWRlciA8ICR7X2luZmlsZX0gPiAke19jbGllbnRfaGVhZGVyfQotKyAgICAgICAgREVQRU5EUyAke19pbmZpbGV9IFZFUkJBVElNKQotKwotKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICIke19jb2RlfSIKLSsgICAgICAgIENPTU1BTkQgJHtXQVlMQU5EX1NDQU5ORVJfRVhFQ1VUQUJMRX0gY29kZSA8ICR7X2luZmlsZX0gPiAke19jb2RlfQotKyAgICAgICAgREVQRU5EUyAke19pbmZpbGV9IFZFUkJBVElNKQotKwotKyAgICBsaXN0KEFQUEVORCAke19zb3VyY2VzfSAiJHtfY2xpZW50X2hlYWRlcn0iICIke19jb2RlfSIpCi0rICAgIHNldCgke19zb3VyY2VzfSAkeyR7X3NvdXJjZXN9fSBQQVJFTlRfU0NPUEUpCi0rZW5kZnVuY3Rpb24oKQotKwotKyMgd2F5bGFuZF9hZGRfcHJvdG9jb2xfc2VydmVyKG91dGZpbGVzIGlucHV0ZmlsZSBiYXNlbmFtZSkKLStmdW5jdGlvbihXQVlMQU5EX0FERF9QUk9UT0NPTF9TRVJWRVIgX3NvdXJjZXMgX3Byb3RvY29sIF9iYXNlbmFtZSkKLSsgICAgaWYoTk9UIFdBWUxBTkRfU0NBTk5FUl9FWEVDVVRBQkxFKQotKyAgICAgICAgbWVzc2FnZShGQVRBTCAiVGhlIHdheWxhbmQtc2Nhbm5lciBleGVjdXRhYmxlIGhhcyBudG8gYmVlbiBmb3VuZCBvbiB5b3VyIHN5c3RlbS4gWW91IG11c3QgaW5zdGFsbCBpdC4iKQotKyAgICBlbmRpZigpCi0rCi0rICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoX2luZmlsZSAke19wcm90b2NvbH0gQUJTT0xVVEUpCi0rICAgIHNldChfc2VydmVyX2hlYWRlciAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L3dheWxhbmQtJHtfYmFzZW5hbWV9LXNlcnZlci1wcm90b2NvbC5oIikKLSsKLSsgICAgYWRkX2N1c3RvbV9jb21tYW5kKE9VVFBVVCAiJHtfc2VydmVyX2hlYWRlcn0iCi0rICAgICAgICBDT01NQU5EICR7V0FZTEFORF9TQ0FOTkVSX0VYRUNVVEFCTEV9IHNlcnZlci1oZWFkZXIgPCAke19pbmZpbGV9ID4gJHtfc2VydmVyX2hlYWRlcn0KLSsgICAgICAgIERFUEVORFMgJHtfaW5maWxlfSBWRVJCQVRJTSkKLSsKLSsgICAgbGlzdChBUFBFTkQgJHtfc291cmNlc30gIiR7X3NlcnZlcl9oZWFkZXJ9IikKLSsgICAgc2V0KCR7X3NvdXJjZXN9ICR7JHtfc291cmNlc319IFBBUkVOVF9TQ09QRSkKLStlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMy13YXlsYW5kLUFkZC1XYXlsYW5kLWV4YW1wbGUucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwMy13YXlsYW5kLUFkZC1XYXlsYW5kLWV4YW1wbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYTBjZjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDMtd2F5bGFuZC1BZGQtV2F5bGFuZC1leGFtcGxlLnBhdGNoCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDQtd2F5bGFuZC1lZ2wtQWRkLWJjbV9ob3N0LXRvLWRlcGVuZGVuY2llcy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA0LXdheWxhbmQtZWdsLUFkZC1iY21faG9zdC10by1kZXBlbmRlbmNpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxM2ZjM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDQtd2F5bGFuZC1lZ2wtQWRkLWJjbV9ob3N0LXRvLWRlcGVuZGVuY2llcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZjE3ODc5YjY5MTk4NGI1YzQ5NTBlNGI5NGViZjEwMmM3ODc5N2VkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEwIEF1ZyAyMDE1IDAyOjM4OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTZdIHdheWxhbmQtZWdsOiBBZGQgYmNtX2hvc3QgdG8gZGVwZW5kZW5jaWVzCi0KLUl0IHVzZXMgaGVhZGVycyBsaWtlIHZjb3NfcGxhdGZvcm1fdHlwZXMuaCBidXQgZG9lcyBub3QKLWRlcGVuZCBvbiBtb2R1bGUgd2hpY2ggc2hvdWxkIGFkZCB0aGUgcmVxdWlyZWQgaW5jbHVkZSBwYXRocwotbGV0cyBhZGQgdGhlIGRlcGVuZGVuY3kgb24gYmNtX2hvc3QgbW9kdWxlIHdoaWNoIHNob3VsZCBkbyBpdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL3dheWxhbmQtZWdsL3dheWxhbmQtZWdsLnBjLmluIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KLWluZGV4IDhiYWZjMTUuLmZkMjU5YzkgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy93YXlsYW5kLWVnbC93YXlsYW5kLWVnbC5wYy5pbgotKysrIGIvaW50ZXJmYWNlL2tocm9ub3Mvd2F5bGFuZC1lZ2wvd2F5bGFuZC1lZ2wucGMuaW4KLUBAIC02LDUgKzYsNiBAQCBpbmNsdWRlZGlyPSR7cHJlZml4fS9pbmNsdWRlCi0gTmFtZTogd2F5bGFuZC1lZ2wKLSBEZXNjcmlwdGlvbjogVmlkZW9Db3JlIHdheWxhbmQtZWdsIGxpYnJhcnkKLSBWZXJzaW9uOiBAUFJPSkVDVF9BUElWRVJACi0rUmVxdWlyZXM6IGJjbV9ob3N0Ci0gTGliczogLUwke2xpYmRpcn0gLWx3YXlsYW5kLWVnbAotIENmbGFnczogLUkke2luY2x1ZGVkaXJ9Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNS1pbnRlcmZhY2UtcmVtb3ZlLWZhdWx0eS1hc3NlcnQtdG8tbWFrZS13ZXN0b24taGFwcHktLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDUtaW50ZXJmYWNlLXJlbW92ZS1mYXVsdHktYXNzZXJ0LXRvLW1ha2Utd2VzdG9uLWhhcHB5LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGQ3ODMzMy4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNS1pbnRlcmZhY2UtcmVtb3ZlLWZhdWx0eS1hc3NlcnQtdG8tbWFrZS13ZXN0b24taGFwcHktLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSAwMjczYjdiOWQ3YTI3ZDhmZTdkM2FkODY4MGI3OTlmOTk3ZTc1ZGNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KLURhdGU6IFNhdCwgMjQgSmFuIDIwMTUgMjI6MDc6MTkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xNl0gaW50ZXJmYWNlOiByZW1vdmUgZmF1bHR5IGFzc2VydCgpIHRvIG1ha2Ugd2VzdG9uIGhhcHB5Ci0gYXQgcnVudGltZQotCi1UaGlzIHdhcyByZW1vdmVkIGFmdGVyIGEgZGlzY3Vzc2lvbiBvbiBJUkMgd2l0aCB0aGUgd2VzdG9uIGd1eXMKLSgnZGFuaWVscycgb24gaXJjLmZyZWVub2RlLm5ldC8jd2F5bGFuZCkuCi0KLVNpZ25lZC1vZmYtYnk6ICJZYW5uIEUuIE1PUklOIiA8eWFubi5tb3Jpbi4xOTk4QGZyZWUuZnI+Ci0tLS0KLSBpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYyB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguYyBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCi1pbmRleCBlYWIxNDZlLi4yOWUwZGVlIDEwMDc1NQotLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmMKLSsrKyBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5jCi1AQCAtMTMwNiw3ICsxMzA2LDYgQEAgc3RhdGljIHZvaWQgKmRpc3BtYW54X25vdGlmeV9mdW5jKCB2b2lkICphcmcgKSB7Ci0gICAgICAgICAgICAgLy8gRGVjcmVtZW50IHRoZSB1c2UgY291bnQgLSB0aGUgY29ycmVzcG9uZGluZyAidXNlIiBpcyBpbiB2Y19kaXNwbWFueF91cGRhdGVfc3VibWl0LgotICAgICAgICAgICAgIHZjaGlfc2VydmljZV9yZWxlYXNlKGRpc3BtYW54X2NsaWVudC5ub3RpZnlfaGFuZGxlWzBdKTsKLSAgICAgICAgICAgICBpZiAoZGlzcG1hbnhfY2xpZW50LnVwZGF0ZV9jYWxsYmFjayApIHsKLS0gICAgICAgICAgICAgICB2Y29zX2Fzc2VydCggZGlzcG1hbnhfY2xpZW50LnBlbmRpbmdfdXBkYXRlX2hhbmRsZSA9PSBoYW5kbGUpOwotICAgICAgICAgICAgICAgIGRpc3BtYW54X2NsaWVudC51cGRhdGVfY2FsbGJhY2soaGFuZGxlLCBkaXNwbWFueF9jbGllbnQudXBkYXRlX2NhbGxiYWNrX3BhcmFtKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA2LXplcm8tb3V0LXdsLWJ1ZmZlcnMtaW4tZWdsX3N1cmZhY2VfZnJlZS5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA2LXplcm8tb3V0LXdsLWJ1ZmZlcnMtaW4tZWdsX3N1cmZhY2VfZnJlZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNlYjdmMC4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNi16ZXJvLW91dC13bC1idWZmZXJzLWluLWVnbF9zdXJmYWNlX2ZyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDBkNjc4Y2QyMDQyNTUxY2M0ZTI2ZWM0MmZhM2FiYTdjNzJkMDMzYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDExOjEwOjQ3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTZdIHplcm8tb3V0IHdsIGJ1ZmZlcnMgaW4gZWdsX3N1cmZhY2VfZnJlZQotCi1vcmlnaW5zIGZyb20gYnVpbGRyb290Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi1pbmRleCA0MjM1MGJmLi4xZjkyM2Q5IDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKLUBAIC02OTAsMTEgKzY5MCwxMyBAQCB2b2lkIGVnbF9zdXJmYWNlX2ZyZWUoRUdMX1NVUkZBQ0VfVCAqc3VyZmFjZSkKLSAgICAgICBpZiAoc3VyZmFjZS0+YmFja193bF9idWZmZXIpIHsKLSAgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKLSAgICAgICAgICBmcmVlKHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyKTsKLSsgICAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IDA7Ci0gICAgICAgfQotIAotICAgICAgIGlmIChzdXJmYWNlLT5mcm9udF93bF9idWZmZXIpIHsKLSAgICAgICAgICB3bF9idWZmZXJfZGVzdHJveShzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPndsX2J1ZmZlcik7Ci0gICAgICAgICAgZnJlZShzdXJmYWNlLT5mcm9udF93bF9idWZmZXIpOwotKyAgICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IDA7Ci0gICAgICAgfQotICNlbmRpZgotICAgIH0KLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA3LWluaXRpYWxpemUtZnJvbnQtYmFjay13YXlsYW5kLWJ1ZmZlcnMucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwNy1pbml0aWFsaXplLWZyb250LWJhY2std2F5bGFuZC1idWZmZXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODc3NDBiLi4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA3LWluaXRpYWxpemUtZnJvbnQtYmFjay13YXlsYW5kLWJ1ZmZlcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGVjMmUwMDk4OWJmNjE0YjI1OWJjOWE0N2I1MDM1Zjg1ODZlOGEyMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDExOjExOjQxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTZdIGluaXRpYWxpemUgZnJvbnQgYmFjayB3YXlsYW5kIGJ1ZmZlcnMKLQotb3JpZ2lucyBmcm9tIG1ldHJvbG9naWNhbCB3YXlsYW5kIHN1cHBvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi1pbmRleCAxZjkyM2Q5Li45YTk1ODJjIDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKLUBAIC00MDEsMTEgKzQwMSwxNCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCi0gI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSAgICBpZiAodHlwZSA9PSBXSU5ET1cgJiYgd2xfZGlzcGxheSkgewotICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSAoc3RydWN0IHdsX2VnbF93aW5kb3cqKXdpbjsKLSsgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXIgPSBOVUxMOwotICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYWxsb2NhdGVfd2xfYnVmZmVyKAotICAgICAgICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3csIGNvbG9yKTsKLSAgICAgICByZXNvdXJjZSA9IHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyLT5yZXNvdXJjZTsKLSAgICB9IGVsc2UgewotICAgICAgIHN1cmZhY2UtPndsX2VnbF93aW5kb3cgPSBOVUxMOwotKyAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IE5VTEw7Ci0rICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBOVUxMOwotICAgICAgIHJlc291cmNlID0gRElTUE1BTlhfTk9fSEFORExFOwotICAgIH0KLSAjZW5kaWYKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA4LVJlbW92ZS1SUENfRkxVU0gucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAwOC1SZW1vdmUtUlBDX0ZMVVNILnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmYwNWMxLi4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA4LVJlbW92ZS1SUENfRkxVU0gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDU5YmE2NmMyZWExN2Y3YTU3MTI0YjlmZDZjOWJkZmY0MzI1ZmY1YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA2IEZlYiAyMDE2IDExOjA5OjE4IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMTZdIFJlbW92ZSBSUENfRkxVU0gKLQotT3JpZ2lucyBmcm9tIGJ1aWxkcm9vdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaW50ZXJmYWNlL2tocm9ub3MvZXh0L2dsX29lc19lZ2xfaW1hZ2VfY2xpZW50LmMgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2dsX29lc19lZ2xfaW1hZ2VfY2xpZW50LmMgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZ2xfb2VzX2VnbF9pbWFnZV9jbGllbnQuYwotaW5kZXggZjliNzI4Ny4uYjA0ZmZlZiAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2V4dC9nbF9vZXNfZWdsX2ltYWdlX2NsaWVudC5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZ2xfb2VzX2VnbF9pbWFnZV9jbGllbnQuYwotQEAgLTEwNyw3ICsxMDcsNiBAQCBHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlTwotICAgICAgICAgICAgICAgICAgICBHTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTX0lELAotICAgICAgICAgICAgICAgICAgICBSUENfRU5VTSh0YXJnZXQpLAotICAgICAgICAgICAgICAgICAgICBSUENfRUdMSUQoaW1hZ2UpKTsKLS0gICAgICAgICBSUENfRkxVU0godGhyZWFkKTsKLSAjaWYgRUdMX0JSQ01fZ2xvYmFsX2ltYWdlCi0gICAgICAgfQotICNlbmRpZgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDktZml4LWNtYWtlLWRlcGVuZGVuY3ktcmFjZS5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDA5LWZpeC1jbWFrZS1kZXBlbmRlbmN5LXJhY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYzFkZjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMDktZml4LWNtYWtlLWRlcGVuZGVuY3ktcmFjZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gMjY0ZDgyMzg3ZWExZTYwN2IyZTVjODk5ZmY2YmQ0NjgwN2M3YjE4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDYgRmViIDIwMTYgMTM6MTI6NDcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xNl0gZml4IGNtYWtlIGRlcGVuZGVuY3kgcmFjZQotCi1GaXhlcyBlcnJvcnMgbGlrZQotCi0vYS9idWlsZGVyL21udC9idWlsZC1vZS90bXAtZ2xpYmMvd29yay9yYXNwYmVycnlwaTItb2UtbGludXgtZ251ZWFiaS91c2VybGFuZC9naXQtcjUvZ2l0L2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oOjcyOjY2OgotZmF0YWwgZXJyb3I6IGludGVyZmFjZS92bWNzX2hvc3Qvd2F5bGFuZC1kaXNwbWFueC1zZXJ2ZXItcHJvdG9jb2wuaDogTm8KLXN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLWNvbXBpbGF0aW9uIHRlcm1pbmF0ZWQuCi1pbnRlcmZhY2Uva2hyb25vcy9DTWFrZUZpbGVzL0VHTF9zdGF0aWMuZGlyL2J1aWxkLm1ha2U6NzczOiByZWNpcGUgZm9yCi10YXJnZXQgJ2ludGVyZmFjZS9raHJvbm9zL0NNYWtlRmlsZXMvRUdMX3N0YXRpYy5kaXIvZXh0L2VnbF93YXlsYW5kLmMubycKLWZhaWxlZAotbWFrZVsyXTogKioqCi1baW50ZXJmYWNlL2tocm9ub3MvQ01ha2VGaWxlcy9FR0xfc3RhdGljLmRpci9leHQvZWdsX3dheWxhbmQuYy5vXSBFcnJvciAxCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRlcmZhY2UvdmNvcy9wdGhyZWFkcy9DTWFrZUxpc3RzLnR4dCB8IDggKysrKysrKysKLSBpbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0ICAgICB8IDggLS0tLS0tLS0KLSBpbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaCB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzL0NNYWtlTGlzdHMudHh0IGIvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDFkODFjYTMuLmQ2Y2Q0MTUgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcy9DTWFrZUxpc3RzLnR4dAotKysrIGIvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMvQ01ha2VMaXN0cy50eHQKLUBAIC0zMyw2ICszMywxNCBAQCBzZXQgKFNPVVJDRVMKLSAgICAuLi9nZW5lcmljL3Zjb3NfZ2VuZXJpY19ibG9ja3Bvb2wuYwotICkKLSAKLStpZiAoQlVJTERfV0FZTEFORCkKLSt3YXlsYW5kX2FkZF9wcm90b2NvbF9zZXJ2ZXIoCi0rICAgIFNPVVJDRVMKLSsgICAgLi4vLi4vLi4vaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCi0rICAgIGRpc3BtYW54Ci0rKQotK2VuZGlmICgpCi0rCi0gaWYgKFZDT1NfUFRIUkVBRFNfQlVJTERfU0hBUkVEKQotICAgIGFkZF9saWJyYXJ5ICh2Y29zIFNIQVJFRCAke1NPVVJDRVN9KQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyAodmNvcyBwdGhyZWFkIGRsIHJ0KQotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0Ci1pbmRleCA2NzE4MjE1Li5jNDE1MTc2IDEwMDc1NQotLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAotKysrIGIvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dAotQEAgLTE3LDE0ICsxNyw2IEBAIHNldChWQ0hPU1RJRl9TT1VSQ0UKLSAjICAgICAgICAgICAgJHtWTUNTX1RBUkdFVH0vdm1jc19tYWluLmMKLSAjICB2Y192Y2hpX2hhdWQuYwotIAotLWlmIChCVUlMRF9XQVlMQU5EKQotLXdheWxhbmRfYWRkX3Byb3RvY29sX3NlcnZlcigKLS0gICAgVkNIT1NUSUZfU09VUkNFCi0tICAgIC4uLy4uL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotLSAgICBkaXNwbWFueAotLSkKLS1lbmRpZiAoKQotLQotIGFkZF9saWJyYXJ5KHZjaG9zdGlmICR7VkNIT1NUSUZfU09VUkNFfSkKLSAKLSAjYWRkX2xpYnJhcnkoYnVmbWFuICAgICAgICAgICAgdmNfdmNoaV9idWZtYW4uYyAgICAgICAgICAgICkKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uvdm1jc19ob3N0L3ZjX3ZjaGlfZGlzcG1hbnguaCBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oCi1pbmRleCBmMGJhZTMwLi44YzQ0YzU4IDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC92Y192Y2hpX2Rpc3BtYW54LmgKLSsrKyBiL2ludGVyZmFjZS92bWNzX2hvc3QvdmNfdmNoaV9kaXNwbWFueC5oCi1AQCAtNjksNyArNjksNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gI2lmZGVmIEJVSUxEX1dBWUxBTkQKLSAvKiBYWFg6IFRoaXMgc2hvdWxkIGJlIGluIGEgcHJpdmF0ZSBoZWFkZXIgdGhhdCBjYW4gYmUgaW5jbHVkZWQgZnJvbSBFR0wgYW5kIHZjXyogKi8KLSAjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXIuaD4KLS0jaW5jbHVkZSAiaW50ZXJmYWNlL3ZtY3NfaG9zdC93YXlsYW5kLWRpc3BtYW54LXNlcnZlci1wcm90b2NvbC5oIgotKyNpbmNsdWRlICJpbnRlcmZhY2UvdmNvcy9wdGhyZWFkcy93YXlsYW5kLWRpc3BtYW54LXNlcnZlci1wcm90b2NvbC5oIgotIHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyIHsKLSAJc3RydWN0IHdsX3Jlc291cmNlICpyZXNvdXJjZTsKLSAJc3RydWN0IHdsX2Rpc3BtYW54ICpkaXNwbWFueDsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEwLUZpeC1mb3ItZnJhbWVyYXRlLXdpdGgtbmVzdGVkLWNvbXBvc2l0aW9uLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTAtRml4LWZvci1mcmFtZXJhdGUtd2l0aC1uZXN0ZWQtY29tcG9zaXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YzlhNTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTAtRml4LWZvci1mcmFtZXJhdGUtd2l0aC1uZXN0ZWQtY29tcG9zaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIDdjNTFjMmQzN2JmYWRhYWJiYmYyMDUyMzdkOTMyYjY4NWIwOWQzNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOSBNYXIgMjAxNiAyMDozODozMCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEwLzE2XSBGaXggZm9yIGZyYW1lcmF0ZSB3aXRoIG5lc3RlZCBjb21wb3NpdGlvbgotCi1mcmFtZSByYXRlIGFwcGVhcnMgaXJyZWd1bGFyIGFuZCBsb3dlciB0aGFuIGV4cGVjdGVkIHdoZW4gdXNpbmcgbmVzdGVkIGNvbXBvc2l0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYyB8IDggKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYwotaW5kZXggMDNmZTY3Yi4uMTNhMTEwYyAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLUBAIC0yMzQyLDYgKzIzNDIsOSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmKQotICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYnVmZmVyOwotICAgICAgICAgICAgICAgICAgIH0KLSAKLSsgICAgICAgICAgICAgICAgICBnbEZsdXNoKCk7Ci0rICAgICAgICAgICAgICAgICAgZ2xGaW5pc2goKTsKLSsKLSAgICAgICAgICAgICAgICAgICBSUENfQ0FMTDcoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSURfVjIsCi1AQCAtMjM1Myw2ICsyMzU2LDggQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKLSAgICAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChraHJuX3BsYXRmb3JtX2dldF93aW5kb3dfcG9zaXRpb24oc3VyZmFjZS0+d2luKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUlBDX0lOVChzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+cmVzb3VyY2UpKTsKLSAKLSsgICAgICAgICAgICAgICAgICBSUENfRkxVU0godGhyZWFkKTsKLSsKLSAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPmluX3VzZSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9hdHRhY2god2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXItPndsX2J1ZmZlciwKLUBAIC0yMzYwLDExICsyMzY1LDEzIEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmYpCi0gICAgICAgICAgICAgICAgICAgd2xfc3VyZmFjZV9kYW1hZ2Uod2xfZWdsX3dpbmRvdy0+d2xfc3VyZmFjZSwgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlLT53aWR0aCwgc3VyZmFjZS0+aGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICB3bF9zdXJmYWNlX2NvbW1pdCh3bF9lZ2xfd2luZG93LT53bF9zdXJmYWNlKTsKLSsgICAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2ZsdXNoKHdsX2Rpc3BsYXkpOwotIAotICAgICAgICAgICAgICAgICAgIHdoaWxlKHJldCAhPSAtMSAmJiBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+aW5fdXNlKQotICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWUod2xfZGlzcGxheSwgcHJvY2Vzcy0+d2xfcXVldWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICNlbmRpZgotKyAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBSUENfQ0FMTDYoZWdsSW50U3dhcEJ1ZmZlcnNfaW1wbCwKLSAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgRUdMSU5UU1dBUEJVRkZFUlNfSUQsCi1AQCAtMjM3Niw2ICsyMzgzLDcgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZikKLSAgICAgICAgICAgICAgICAgICAgICBSUENfVUlOVChraHJuX3BsYXRmb3JtX2dldF93aW5kb3dfcG9zaXRpb24oc3VyZmFjZS0+d2luKSkpOwotIAotICAgICAgICAgICAgICAgIFJQQ19GTFVTSCh0aHJlYWQpOwotKyAgICAgICAgICAgICAgIH0KLSAKLSAjaWZkZWYgQU5EUk9JRAotICAgICAgICAgICAgICAgIENMSUVOVF9VTkxPQ0soKTsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDExLWJ1aWxkLXNoYXJlZC1saWJyYXJ5LWZvci12Y2hvc3RpZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVhNWJlOC4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMS1idWlsZC1zaGFyZWQtbGlicmFyeS1mb3ItdmNob3N0aWYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGZiMzAwMmY3N2ExNzU2MzNhZjMxMDE5YzUxMzc1NGQyZWY1ZjNhYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyIEFwciAyMDE2IDEwOjM3OjI0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTZdIGJ1aWxkIHNoYXJlZCBsaWJyYXJ5IGZvciB2Y2hvc3RpZgotCi1GaXhlcyAjMTQ5Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL3ZtY3NfaG9zdC9DTWFrZUxpc3RzLnR4dCBiL2ludGVyZmFjZS92bWNzX2hvc3QvQ01ha2VMaXN0cy50eHQKLWluZGV4IGM0MTUxNzYuLmQwY2NhMWEgMTAwNzU1Ci0tLS0gYS9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0Ci0rKysgYi9pbnRlcmZhY2Uvdm1jc19ob3N0L0NNYWtlTGlzdHMudHh0Ci1AQCAtMTcsNyArMTcsNyBAQCBzZXQoVkNIT1NUSUZfU09VUkNFCi0gIyAgICAgICAgICAgICR7Vk1DU19UQVJHRVR9L3ZtY3NfbWFpbi5jCi0gIyAgdmNfdmNoaV9oYXVkLmMKLSAKLS1hZGRfbGlicmFyeSh2Y2hvc3RpZiAke1ZDSE9TVElGX1NPVVJDRX0pCi0rYWRkX2xpYnJhcnkodmNob3N0aWYgU0hBUkVEICR7VkNIT1NUSUZfU09VUkNFfSkKLSAKLSAjYWRkX2xpYnJhcnkoYnVmbWFuICAgICAgICAgICAgdmNfdmNoaV9idWZtYW4uYyAgICAgICAgICAgICkKLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEyLWltcGxlbWVudC1idWZmZXItd3JhcHBpbmctaW50ZXJmYWNlLWZvci1kaXNwbWFueC5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEyLWltcGxlbWVudC1idWZmZXItd3JhcHBpbmctaW50ZXJmYWNlLWZvci1kaXNwbWFueC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhhNWZjNi4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMi1pbXBsZW1lbnQtYnVmZmVyLXdyYXBwaW5nLWludGVyZmFjZS1mb3ItZGlzcG1hbngucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1Gcm9tIGRmOGI5NjMzYTQ1MDY5YmRkMWJmMjU2ZDk3NDYzNmVmMTFhYTM5Y2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyIEFwciAyMDE2IDEwOjU0OjU5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTZdIGltcGxlbWVudCBidWZmZXIgd3JhcHBpbmcgaW50ZXJmYWNlIGZvciBkaXNwbWFueAotCi1Db3VydGVzeTogWmFuIERvYmVyc2VrCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBpbnRlcmZhY2Uvd2F5bGFuZC9kaXNwbWFueC54bWwgICAgICB8IDEwICsrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYwotaW5kZXggNTczMDc0My4uOWVmODljZCAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYwotQEAgLTEzMyw4ICsxMzMsNTAgQEAgZGlzcG1hbnhfY3JlYXRlX2J1ZmZlcihzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci0+aGFuZGxlKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStkaXNwbWFueF93cmFwX2J1ZmZlcihzdHJ1Y3Qgd2xfY2xpZW50ICpjbGllbnQsIHN0cnVjdCB3bF9yZXNvdXJjZSAqcmVzb3VyY2UsCi0rICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaWQsIHVpbnQzMl90IGhhbmRsZSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsCi0rICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc3RyaWRlLCB1aW50MzJfdCBidWZmZXJfaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQpCi0rewotKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9zZXJ2ZXJfYnVmZmVyICpidWZmZXI7Ci0rICAgVkNfSU1BR0VfVFlQRV9UIHZjX2Zvcm1hdCA9IGdldF92Y19mb3JtYXQoZm9ybWF0KTsKLSsgICB1aW50MzJfdCBkdW1teTsKLSsKLSsgICBpZih2Y19mb3JtYXQgPT0gVkNfSU1BR0VfTUlOKSB7Ci0rICAgICAgd2xfcmVzb3VyY2VfcG9zdF9lcnJvcihyZXNvdXJjZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdMX0RJU1BNQU5YX0VSUk9SX0lOVkFMSURfRk9STUFULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0Iik7Ci0rICAgICAgcmV0dXJuOwotKyAgIH0KLSsKLSsgICBidWZmZXIgPSBjYWxsb2MoMSwgc2l6ZW9mICpidWZmZXIpOwotKyAgIGlmIChidWZmZXIgPT0gTlVMTCkgewotKyAgICAgIHdsX3Jlc291cmNlX3Bvc3Rfbm9fbWVtb3J5KHJlc291cmNlKTsKLSsgICAgICByZXR1cm47Ci0rICAgfQotKwotKyAgIGJ1ZmZlci0+aGFuZGxlID0gaGFuZGxlOwotKyAgIGJ1ZmZlci0+d2lkdGggPSB3aWR0aDsKLSsgICBidWZmZXItPmhlaWdodCA9IGhlaWdodDsKLSsgICBidWZmZXItPmZvcm1hdCA9IGZvcm1hdDsKLSsKLSsgICBidWZmZXItPnJlc291cmNlID0gd2xfcmVzb3VyY2VfY3JlYXRlKHJlc291cmNlLT5jbGllbnQsICZ3bF9idWZmZXJfaW50ZXJmYWNlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgaWQpOwotKyAgIGlmICghYnVmZmVyLT5yZXNvdXJjZSkgewotKyAgICAgIHdsX3Jlc291cmNlX3Bvc3Rfbm9fbWVtb3J5KHJlc291cmNlKTsKLSsgICAgICB2Y19kaXNwbWFueF9yZXNvdXJjZV9kZWxldGUoYnVmZmVyLT5oYW5kbGUpOwotKyAgICAgIGZyZWUoYnVmZmVyKTsKLSsgICAgICByZXR1cm47Ci0rICAgfQotKwotKyAgIHdsX3Jlc291cmNlX3NldF9pbXBsZW1lbnRhdGlvbihidWZmZXItPnJlc291cmNlLAotKwkJCQkgICAgICAgKHZvaWQgKCoqKSh2b2lkKSkgJmRpc3BtYW54X2J1ZmZlcl9pbnRlcmZhY2UsCi0rCQkJCSAgICAgICBidWZmZXIsIGRlc3Ryb3lfYnVmZmVyKTsKLSt9Ci0rCi0gc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9kaXNwbWFueF9pbnRlcmZhY2UgZGlzcG1hbnhfaW50ZXJmYWNlID0gewotICAgIGRpc3BtYW54X2NyZWF0ZV9idWZmZXIsCi0rICAgZGlzcG1hbnhfd3JhcF9idWZmZXIsCi0gfTsKLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbCBiL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotaW5kZXggYzE4NjI2ZC4uMTFlZDFlZiAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS93YXlsYW5kL2Rpc3BtYW54LnhtbAotKysrIGIvaW50ZXJmYWNlL3dheWxhbmQvZGlzcG1hbngueG1sCi1AQCAtMTE4LDYgKzExOCwxNiBAQAotICAgICAgIDxhcmcgbmFtZT0iYnVmZmVyIiB0eXBlPSJvYmplY3QiIGludGVyZmFjZT0id2xfYnVmZmVyIi8+Ci0gICAgICAgPGFyZyBuYW1lPSJoYW5kbGUiIHR5cGU9InVpbnQiLz4KLSAgICAgPC9ldmVudD4KLSsKLSsgICAgPHJlcXVlc3QgbmFtZT0id3JhcF9idWZmZXIiPgotKyAgICAgIDxhcmcgbmFtZT0iaWQiIHR5cGU9Im5ld19pZCIgaW50ZXJmYWNlPSJ3bF9idWZmZXIiLz4KLSsgICAgICA8YXJnIG5hbWU9ImhhbmRsZSIgdHlwZT0idWludCIvPgotKyAgICAgIDxhcmcgbmFtZT0id2lkdGgiIHR5cGU9ImludCIvPgotKyAgICAgIDxhcmcgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiLz4KLSsgICAgICA8YXJnIG5hbWU9InN0cmlkZSIgdHlwZT0idWludCIvPgotKyAgICAgIDxhcmcgbmFtZT0iYnVmZmVyX2hlaWdodCIgdHlwZT0idWludCIvPgotKyAgICAgIDxhcmcgbmFtZT0iZm9ybWF0IiB0eXBlPSJ1aW50Ii8+Ci0rICAgIDwvcmVxdWVzdD4KLSAgIDwvaW50ZXJmYWNlPgotIAotIDwvcHJvdG9jb2w+Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxMy1JbXBsZW1lbnQtdHJpcGxlLWJ1ZmZlcmluZy1mb3Itd2F5bGFuZC5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEzLUltcGxlbWVudC10cmlwbGUtYnVmZmVyaW5nLWZvci13YXlsYW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmZmMzE0Li4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDEzLUltcGxlbWVudC10cmlwbGUtYnVmZmVyaW5nLWZvci13YXlsYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSAyZTBlMzMxZGE4NTU2ZmVjZDg0MTM0OWNmYWUyOTRiYWYwZjE0NDg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVmZiBXYW5uYW1ha2VyIDxqZWZmX3dhbm5hbWFrZXJAY2FibGUuY29tY2FzdC5jb20+Ci1EYXRlOiBUaHUsIDE5IEphbiAyMDE3IDE4OjU2OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTZdIEltcGxlbWVudCB0cmlwbGUgYnVmZmVyaW5nIGZvciB3YXlsYW5kCi0KLUNoYW5nZSBmcm9tIGRvdWJsZSB0byB0cmlwbGUgYnVmZmVyaW5nIGZvciB3YXlsYW5kLgotVGhpcyBlbmFibGVzIGhpZ2hlciBmcmFtZSByYXRlcyB3aXRob3V0IHRlYXJpbmcgYXJ0aWZhY3RzCi1ieSBhbGxvd2luZyBib3RoIHRoZSBnbEZpbmlzaCBhbmQgdGhlIGJ1ZmZlciByZWxlYXNlCi1pbnRlcmxvY2sgdG8gb3BlcmF0ZSB3aXRob3V0IHB1c2hpbmcgdGhlIGZyYW1lIHBlcmlvZAotdG8gdHdvIHZlcnRpY2FsIGludGVydmFscwotCi1TaWduZWQtb2ZmLWJ5OiBKZWZmIFdhbm5hbWFrZXIgPGplZmZfd2FubmFtYWtlckBjYWJsZS5jb21jYXN0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jICAgICAgICAgfCAgMyArKy0KLSBpbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMgfCAgOCArKysrKysrKwotIGludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaCB8IDExICsrKysrKysrKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnQuYwotaW5kZXggMTNhMTEwYy4uMDM4MDI3NCAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50LmMKLUBAIC0yMzIzLDcgKzIzMjMsOCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmKQotIAotICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl90ZW1wID0gc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyOwotICAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmZyb250X3dsX2J1ZmZlciA9IHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyOwotLSAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gYnVmZmVyX3RlbXA7Ci0rICAgICAgICAgICAgICAgICAgc3VyZmFjZS0+YmFja193bF9idWZmZXIgPSBzdXJmYWNlLT5taWRkbGVfd2xfYnVmZmVyOwotKyAgICAgICAgICAgICAgICAgIHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIgPSBidWZmZXJfdGVtcDsKLSAKLSAgICAgICAgICAgICAgICAgICBjb25maWdpZCA9IGVnbF9jb25maWdfdG9faWQoc3VyZmFjZS0+Y29uZmlnKTsKLSAgICAgICAgICAgICAgICAgICBjb2xvciA9IGVnbF9jb25maWdfZ2V0X2NvbG9yX2Zvcm1hdChjb25maWdpZCk7Ci1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi1pbmRleCA5YTk1ODJjLi4xMGIzYjA0IDEwMDY0NAotLS0tIGEvaW50ZXJmYWNlL2tocm9ub3MvZWdsL2VnbF9jbGllbnRfc3VyZmFjZS5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmMKLUBAIC00MDIsMTIgKzQwMiwxNCBAQCBFR0xfU1VSRkFDRV9UICplZ2xfc3VyZmFjZV9jcmVhdGUoCi0gICAgaWYgKHR5cGUgPT0gV0lORE9XICYmIHdsX2Rpc3BsYXkpIHsKLSAgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93ID0gKHN0cnVjdCB3bF9lZ2xfd2luZG93Kil3aW47Ci0gICAgICAgc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyID0gTlVMTDsKLSsgICAgICBzdXJmYWNlLT5taWRkbGVfd2xfYnVmZmVyID0gTlVMTDsKLSAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IGFsbG9jYXRlX3dsX2J1ZmZlcigKLSAgICAgICAgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93LCBjb2xvcik7Ci0gICAgICAgcmVzb3VyY2UgPSBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlci0+cmVzb3VyY2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICBzdXJmYWNlLT53bF9lZ2xfd2luZG93ID0gTlVMTDsKLSAgICAgICBzdXJmYWNlLT5mcm9udF93bF9idWZmZXIgPSBOVUxMOwotKyAgICAgIHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIgPSBOVUxMOwotICAgICAgIHN1cmZhY2UtPmJhY2tfd2xfYnVmZmVyID0gTlVMTDsKLSAgICAgICByZXNvdXJjZSA9IERJU1BNQU5YX05PX0hBTkRMRTsKLSAgICB9Ci1AQCAtNjk2LDYgKzY5OCwxMiBAQCB2b2lkIGVnbF9zdXJmYWNlX2ZyZWUoRUdMX1NVUkZBQ0VfVCAqc3VyZmFjZSkKLSAgICAgICAgICBzdXJmYWNlLT5iYWNrX3dsX2J1ZmZlciA9IDA7Ci0gICAgICAgfQotIAotKyAgICAgIGlmIChzdXJmYWNlLT5taWRkbGVfd2xfYnVmZmVyKSB7Ci0rICAgICAgICAgd2xfYnVmZmVyX2Rlc3Ryb3koc3VyZmFjZS0+bWlkZGxlX3dsX2J1ZmZlci0+d2xfYnVmZmVyKTsKLSsgICAgICAgICBmcmVlKHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIpOwotKyAgICAgICAgIHN1cmZhY2UtPm1pZGRsZV93bF9idWZmZXIgPSAwOwotKyAgICAgIH0KLSsKLSAgICAgICBpZiAoc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyKSB7Ci0gICAgICAgICAgd2xfYnVmZmVyX2Rlc3Ryb3koc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyLT53bF9idWZmZXIpOwotICAgICAgICAgIGZyZWUoc3VyZmFjZS0+ZnJvbnRfd2xfYnVmZmVyKTsKLWRpZmYgLS1naXQgYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmggYi9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKLWluZGV4IGUzMjhiNzcuLjU4YTMxODQgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9lZ2wvZWdsX2NsaWVudF9zdXJmYWNlLmgKLSsrKyBiL2ludGVyZmFjZS9raHJvbm9zL2VnbC9lZ2xfY2xpZW50X3N1cmZhY2UuaAotQEAgLTMxMiw2ICszMTIsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgewotICAgICovCi0gICAgc3RydWN0IHdsX2Rpc3BtYW54X2NsaWVudF9idWZmZXIgKmZyb250X3dsX2J1ZmZlcjsKLSAKLSsgICAvKgotKyAgICAgIG1pZGRsZV93bF9idWZmZXIKLSsKLSsgICAgICBWYWxpZGl0eToKLSsgICAgICB0eXBlID09IFdJTkRPVwotKwotKyAgICAgIEludmFyaWFudDoKLSsgICAgICBjbGllbnQtc2lkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2xfYnVmZmVyIGluIHRoZSBtaWRkbGUKLSsgICAqLwotKyAgIHN0cnVjdCB3bF9kaXNwbWFueF9jbGllbnRfYnVmZmVyICptaWRkbGVfd2xfYnVmZmVyOwotKwotICAgIC8qCi0gICAgICAgYmFja193bF9idWZmZXIKLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNC1HTEVTMi1nbDJleHQuaC1EZWZpbmUtR0xfUjhfRVhULWFuZC1HTF9SRzhfRVhULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjViNmJjLi4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1Gcm9tIDhkOTI5OWQyMTlhMmE0Zjc2ZjgyNzg5NzM1ODRlMWE5ZjcxMTZjNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMCBNYXkgMjAxNyAwNjozOTozNCArMDAwMAotU3ViamVjdDogW1BBVENIIDE0LzE2XSBHTEVTMi9nbDJleHQuaDogRGVmaW5lIEdMX1I4X0VYVCBhbmQgR0xfUkc4X0VYVAotCi13ZXN0b24gY29kZSB1c2VzIHRoZXNlIGRlZmluZXMKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9HTEVTMi9nbDJleHQuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9HTEVTMi9nbDJleHQuaCBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKLWluZGV4IDRlYWNmN2YuLjI4M2UzZTEgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCi1AQCAtMzI3LDYgKzMyNyw5IEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKLSAjZGVmaW5lIEdMX1JHQlhfQlJDTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEVFCi0gI2VuZGlmCi0gCi0rI2RlZmluZSBHTF9SOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODIyOQotKyNkZWZpbmUgR0xfUkc4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMkIKLSsKLSAvKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICovCi0gI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWCi0gI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODM2OAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kLzAwMTUtRUdMLWdscGxhdGZvcm0uaC1kZWZpbmUtRUdMX0NBU1QucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNS1FR0wtZ2xwbGF0Zm9ybS5oLWRlZmluZS1FR0xfQ0FTVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA1ZDBjMC4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNS1FR0wtZ2xwbGF0Zm9ybS5oLWRlZmluZS1FR0xfQ0FTVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gYTIxODJlNTQzN2E2NjY0Y2RiMGYzMzMwZjZjYmVlODczYjZmOTc1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBHYWxidXNlcmEgPGdpemVyb0BnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE0IEp1bCAyMDE3IDA5OjUyOjU0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMTZdIEVHTC9nbHBsYXRmb3JtLmg6IGRlZmluZSBFR0xfQ0FTVAotCi1DKysgLyBDIHR5cGVjYXN0IG1hY3JvcyBmb3Igc3BlY2lhbCBFR0wgaGFuZGxlIHZhbHVlczogdXNlZCBieSBsaWJlcG94eSBjb2RlCi1UaGUgZGVmaW5pdGlvbiBjb21lcyBmcm9tIHRoZSB1cGRhdGVkIHZlcnNpb24gb2YgdGhpcyBoZWFkZXIgaW4gbWVzYS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBpbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaCBiL2ludGVyZmFjZS9raHJvbm9zL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKLWluZGV4IDFmN2M5MzAuLmMzOWQ0MjUgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCi1AQCAtMjAyLDQgKzIwMiwxMSBAQCBFR0xBUEkgdm9pZCBFR0xBUElFTlRSWSBCRUdMX0dldERlZmF1bHREcml2ZXJJbnRlcmZhY2VzKEJFR0xfRHJpdmVySW50ZXJmYWNlcyAqaQotICNpbmNsdWRlICJpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnRfbWFuZ2xlLmgiCi0gI2VuZGlmCi0gCi0rLyogQysrIC8gQyB0eXBlY2FzdCBtYWNyb3MgZm9yIHNwZWNpYWwgRUdMIGhhbmRsZSB2YWx1ZXMgKi8KLSsjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSsjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKQotKyNlbHNlCi0rI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKQotKyNlbmRpZgotKwotICNlbmRpZiAvKiBfX2VnbHBsYXRmb3JtX2ggKi8KLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE2LUFsbG93LW11bHRpcGxlLXdheWxhbmQtY29tcG9zaXRvci1zdGF0ZS1kYXRhLXBlci1wcm8ucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmQvMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjBlYzgyLi4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZC8wMDE2LUFsbG93LW11bHRpcGxlLXdheWxhbmQtY29tcG9zaXRvci1zdGF0ZS1kYXRhLXBlci1wcm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotRnJvbSA2YjRjNGQ0NjlkNDM1YmZjZmI0NjQzNTZiNmNjYzk0MjFjNmI4ZmQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmVmZiBXYW5uYW1ha2VyIDxqZWZmX3dhbm5hbWFrZXJAY2FibGUuY29tY2FzdC5jb20+Ci1EYXRlOiBTYXQsIDI3IEphbiAyMDE4IDEyOjI4OjMxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMTZdIEFsbG93IG11bHRpcGxlIHdheWxhbmQgY29tcG9zaXRvciBzdGF0ZSBkYXRhIHBlcgotIHByb2Nlc3MKLQotV2hlbiBlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTCBpcyBjYWxsZWQgc3RvcmUgdGhlIHdsX2dsb2JhbAotY3JlYXRlZCBpbiBhIGxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSB3YXlsYW5kIGRpc3BsYXkuCi1UaGlzIGFsbG93cyBtdWx0aXBsZSB3YXlsYW5kIGNvbXBvc2l0b3IgaW5zdGFuY2VzIHRvIGJlCi1jcmVhdGVkIGFuZCB1c2VkIHBlciBwcm9jZXNzLiBUaGlzIHNjZW5hcmlvIGlzIGNvbW1vbiBmb3IKLWFwcGxpY2F0aW9ucyBpbnRlZ3JhdGluZyBleHRlcm5sIHByb2Nlc3MgVUkgZWxlbWVudHMKLXZpYSBlbWJlZGRlZCBjb21wb3NpdGlvbiBlLmcuIHdlc3Rlcm9zCi0KLVNpZ25lZC1vZmYtYnk6IEplZmYgV2FubmFtYWtlciA8amVmZl93YW5uYW1ha2VyQGNhYmxlLmNvbWNhc3QuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jIHwgIDIgKy0KLSBpbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaCB8IDExICsrKysrKystCi0gaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMgICAgfCA1MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmMgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYwotaW5kZXggZDdlNzk4ZS4uNjBiZGI2MyAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5jCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuYwotQEAgLTE0Nyw3ICsxNDcsNyBAQCBib29sIGNsaWVudF9wcm9jZXNzX3N0YXRlX2luaXQoQ0xJRU5UX1BST0NFU1NfU1RBVEVfVCAqcHJvY2VzcykKLSB7Ci0gICAgaWYgKCFwcm9jZXNzLT5pbml0ZWQpIHsKLSAjaWZkZWYgQlVJTERfV0FZTEFORAotLSAgICAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IE5VTEw7Ci0rICAgICAgcHJvY2Vzcy0+d2xTdGF0ZU1hcCA9IE5VTEw7Ci0gI2VuZGlmCi0gCi0gICAgICAgaWYgKCFraHJuX3BvaW50ZXJfbWFwX2luaXQoJnByb2Nlc3MtPmNvbnRleHRzLCA2NCkpCi1kaWZmIC0tZ2l0IGEvaW50ZXJmYWNlL2tocm9ub3MvY29tbW9uL2tocm5fY2xpZW50LmggYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAotaW5kZXggNjE1ZjdiNC4uNGZhODZmNyAxMDA2NDQKLS0tLSBhL2ludGVyZmFjZS9raHJvbm9zL2NvbW1vbi9raHJuX2NsaWVudC5oCi0rKysgYi9pbnRlcmZhY2Uva2hyb25vcy9jb21tb24va2hybl9jbGllbnQuaAotQEAgLTE3MCw2ICsxNzAsMTUgQEAgc3RhdGljIElOTElORSBDTElFTlRfVEhSRUFEX1NUQVRFX1QgKkNMSUVOVF9HRVRfQ0hFQ0tfVEhSRUFEX1NUQVRFKHZvaWQpCi0gICAgcmV0dXJuIChDTElFTlRfVEhSRUFEX1NUQVRFX1QgKilwbGF0Zm9ybV90bHNfZ2V0X2NoZWNrKGNsaWVudF90bHMpOwotIH0KLSAKLSsjaWZkZWYgQlVJTERfV0FZTEFORAotK3R5cGVkZWYgc3RydWN0IFdBWUxBTkRfU1RBVEUKLSt7Ci0rICAgc3RydWN0IFdBWUxBTkRfU1RBVEUgKm5leHQ7Ci0rICAgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXk7Ci0rICAgc3RydWN0IHdsX2dsb2JhbCAqd2xfZ2xvYmFsOwotK30gV0FZTEFORF9TVEFURV9UOwotKyNlbmRpZgotKwotIC8qCi0gICAgcGVyLXByb2Nlc3Mgc3RhdGUKLSAKLUBAIC0zMTgsNyArMzI3LDcgQEAgc3RydWN0IENMSUVOVF9QUk9DRVNTX1NUQVRFIHsKLSAgICBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKndsX3F1ZXVlOwotIAotICAgIC8qIENvbXBvc2l0b3Itc2lkZSBXYXlsYW5kIHN0YXRlICovCi0tICAgc3RydWN0IHdsX2dsb2JhbCAqd2xfZ2xvYmFsOwotKyAgIFdBWUxBTkRfU1RBVEVfVCAqd2xTdGF0ZU1hcDsKLSAjZW5kaWYKLSB9OwotIAotZGlmZiAtLWdpdCBhL2ludGVyZmFjZS9raHJvbm9zL2V4dC9lZ2xfd2F5bGFuZC5jIGIvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKLWluZGV4IDllZjg5Y2QuLmFiZDVhYjMgMTAwNjQ0Ci0tLS0gYS9pbnRlcmZhY2Uva2hyb25vcy9leHQvZWdsX3dheWxhbmQuYwotKysrIGIvaW50ZXJmYWNlL2tocm9ub3MvZXh0L2VnbF93YXlsYW5kLmMKLUBAIC0yMDgsMTcgKzIwOCwzOCBAQCBlZ2xCaW5kV2F5bGFuZERpc3BsYXlXTChFR0xEaXNwbGF5IGRweSwgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXkpCi0gewotICAgIENMSUVOVF9USFJFQURfU1RBVEVfVCAqdGhyZWFkOwotICAgIENMSUVOVF9QUk9DRVNTX1NUQVRFX1QgKnByb2Nlc3M7Ci0rICAgV0FZTEFORF9TVEFURV9UICpzdGF0ZUl0ZXI7Ci0rICAgV0FZTEFORF9TVEFURV9UICpzdGF0ZU5ldzsKLSsgICBzdHJ1Y3Qgd2xfZ2xvYmFsICp3bF9nbG9iYWw7Ci0gCi0gICAgaWYgKCFDTElFTlRfTE9DS19BTkRfR0VUX1NUQVRFUyhkcHksICZ0aHJlYWQsICZwcm9jZXNzKSkKLSAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotIAotLSAgIGlmIChwcm9jZXNzLT53bF9nbG9iYWwgIT0gTlVMTCkKLSsgICBzdGF0ZUl0ZXI9IHByb2Nlc3MtPndsU3RhdGVNYXA7Ci0rICAgd2hpbGUoIHN0YXRlSXRlciApCi0rICAgewotKyAgICAgIGlmICggc3RhdGVJdGVyLT5kaXNwbGF5ID09IGRpc3BsYXkgKQotKyAgICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgICAgc3RhdGVJdGVyPSBzdGF0ZUl0ZXItPm5leHQ7Ci0rICAgfQotKwotKyAgIHdsX2dsb2JhbCA9IHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheSwgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGJpbmRfZGlzcG1hbngpOwotKyAgIGlmICh3bF9nbG9iYWwgPT0gTlVMTCkKLSAgICAgICBnb3RvIGVycm9yOwotIAotLSAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IHdsX2dsb2JhbF9jcmVhdGUoZGlzcGxheSwgJndsX2Rpc3BtYW54X2ludGVyZmFjZSwgMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGJpbmRfZGlzcG1hbngpOwotLSAgIGlmIChwcm9jZXNzLT53bF9nbG9iYWwgPT0gTlVMTCkKLSsgICBzdGF0ZU5ldz0gKFdBWUxBTkRfU1RBVEVfVCopY2FsbG9jKCAxLCBzaXplb2YoV0FZTEFORF9TVEFURV9UKSk7Ci0rICAgaWYgKHN0YXRlTmV3ID09IE5VTEwgKQotKyAgIHsKLSsgICAgICB3bF9nbG9iYWxfZGVzdHJveSh3bF9nbG9iYWwpOwotICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgfQotKwotKyAgIHN0YXRlTmV3LT5uZXh0PSBwcm9jZXNzLT53bFN0YXRlTWFwOwotKyAgIHN0YXRlTmV3LT5kaXNwbGF5PSBkaXNwbGF5OwotKyAgIHN0YXRlTmV3LT53bF9nbG9iYWw9IHdsX2dsb2JhbDsKLSsgICBwcm9jZXNzLT53bFN0YXRlTWFwPSBzdGF0ZU5ldzsKLSsgICBDTElFTlRfVU5MT0NLKCk7Ci0gCi0gICAgcmV0dXJuIEVHTF9UUlVFOwotIAotQEAgLTIzMiwxMiArMjUzLDI5IEBAIGVnbFVuYmluZFdheWxhbmREaXNwbGF5V0woRUdMRGlzcGxheSBkcHksIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5KQotIHsKLSAgICBDTElFTlRfVEhSRUFEX1NUQVRFX1QgKnRocmVhZDsKLSAgICBDTElFTlRfUFJPQ0VTU19TVEFURV9UICpwcm9jZXNzOwotKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVJdGVyOwotKyAgIFdBWUxBTkRfU1RBVEVfVCAqc3RhdGVQcmV2OwotIAotICAgIGlmICghQ0xJRU5UX0xPQ0tfQU5EX0dFVF9TVEFURVMoZHB5LCAmdGhyZWFkLCAmcHJvY2VzcykpCi0gICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAKLS0gICB3bF9nbG9iYWxfZGVzdHJveShwcm9jZXNzLT53bF9nbG9iYWwpOwotLSAgIHByb2Nlc3MtPndsX2dsb2JhbCA9IE5VTEw7Ci0rICAgc3RhdGVQcmV2PSBOVUxMOwotKyAgIHN0YXRlSXRlcj0gcHJvY2Vzcy0+d2xTdGF0ZU1hcDsKLSsgICB3aGlsZSggc3RhdGVJdGVyICkKLSsgICB7Ci0rICAgICAgaWYgKCBzdGF0ZUl0ZXItPmRpc3BsYXkgPT0gZGlzcGxheSApCi0rICAgICAgewotKyAgICAgICAgIHdsX2dsb2JhbF9kZXN0cm95KHN0YXRlSXRlci0+d2xfZ2xvYmFsKTsKLSsgICAgICAgICBpZiAoIHN0YXRlUHJldiApCi0rICAgICAgICAgICAgc3RhdGVQcmV2LT5uZXh0PSBzdGF0ZUl0ZXItPm5leHQ7Ci0rICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIHByb2Nlc3MtPndsU3RhdGVNYXA9IHN0YXRlSXRlci0+bmV4dDsKLSsgICAgICAgICBmcmVlKCBzdGF0ZUl0ZXIgKTsKLSsgICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rICAgICAgc3RhdGVQcmV2PSBzdGF0ZUl0ZXI7Ci0rICAgICAgc3RhdGVJdGVyPSBzdGF0ZUl0ZXItPm5leHQ7Ci0rICAgfQotIAotICAgIENMSUVOVF9VTkxPQ0soKTsKLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MvdXNlcmxhbmQvdXNlcmxhbmRfZ2l0LmJiCmluZGV4IDdmMmRjYTYuLmU2YWY0YmYgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy91c2VybGFuZC91c2VybGFuZF9naXQuYmIKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3VzZXJsYW5kL3VzZXJsYW5kX2dpdC5iYgpAQCAtNSwyMCArNSwxOCBAQAogTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0wNDQ4ZDY0ODhlZjhjYzM4MDYzMmIxNTY5ZWU2ZDE5NiIKIAotUFJPVklERVMgPSAidmlydHVhbC9saWJnbGVzMiBcCi0gICAgICAgICAgICB2aXJ0dWFsL2VnbCIKK1BST1ZJREVTICs9ICIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ2YzRncmFwaGljcyIsICIiLCAidmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCIsIGQpfSIKIAotUlBST1ZJREVTXyR7UE59ICs9ICJsaWJnbGVzMiBlZ2wgbGliZWdsIgotCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIiIsICJsaWJnbGVzMiBlZ2wgbGliZWdsIGxpYmVnbDEgbGliZ2wxIGxpYmdsZXN2Mi0yIiwgZCl9IgogQ09NUEFUSUJMRV9NQUNISU5FID0gIl5ycGkkIgogCiBTUkNCUkFOQ0ggPSAibWFzdGVyIgogU1JDRk9SSyA9ICJyYXNwYmVycnlwaSIKLVNSQ1JFViA9ICIxMTM4OTc3MmM3OTY4NTQ0MmUwYWI4YWE5YmU4YWQwZTMyNzAzZjY4IgorU1JDUkVWID0gImQ1NzRiNTFhNjBhMDc1YmFlZmU4NjM2NzA0NjZlZTI0ZTZjNDI1NmUiCiAKICMgVXNlIHRoZSBkYXRlIG9mIHRoZSBhYm92ZSBjb21taXQgYXMgdGhlIHBhY2thZ2UgdmVyc2lvbi4gVXBkYXRlIHRoaXMgd2hlbgogIyBTUkNSRVYgaXMgY2hhbmdlZC4KLVBWID0gIjIwMTgwMjE5IgorUFYgPSAiMjAxODExMjAiCiAKIFNSQ19VUkkgPSAiXAogICAgIGdpdDovL2dpdGh1Yi5jb20vJHtTUkNGT1JLfS91c2VybGFuZC5naXQ7cHJvdG9jb2w9Z2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXApAQCAtMzgsNiArMzYsOCBAQAogICAgIGZpbGU6Ly8wMDE0LUdMRVMyLWdsMmV4dC5oLURlZmluZS1HTF9SOF9FWFQtYW5kLUdMX1JHOF9FWFQucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDE1LUVHTC1nbHBsYXRmb3JtLmgtZGVmaW5lLUVHTF9DQVNULnBhdGNoIFwKICAgICBmaWxlOi8vMDAxNi1BbGxvdy1tdWx0aXBsZS13YXlsYW5kLWNvbXBvc2l0b3Itc3RhdGUtZGF0YS1wZXItcHJvLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAxNy1raHJvbm9zLWJhY2twb3J0LXR5cGVkZWYtZm9yLUVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAxOC1BZGQtRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5LXJlbGF0ZWQtZGVmaW5lcy5wYXRjaCBcCiAiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC02NCw2ICs2NCwxNCBAQAogCQlzZWQgLWkgJ3MvaW5jbHVkZSAidmNvc19mdXRleF9tdXRleC5oIi9pbmNsdWRlICJwdGhyZWFkc1wvdmNvc19mdXRleF9tdXRleC5oIi9nJyAke2Z9CiAJCXNlZCAtaSAncy9pbmNsdWRlICJ2Y29zX3BsYXRmb3JtX3R5cGVzLmgiL2luY2x1ZGUgInB0aHJlYWRzXC92Y29zX3BsYXRmb3JtX3R5cGVzLmgiL2cnICR7Zn0KIAlkb25lCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoIk1BQ0hJTkVfRkVBVFVSRVMiLCAidmM0Z3JhcGhpY3MiLCAiMSIsICIwIiwgZCl9IiA9ICIxIiBdOyB0aGVuCisJCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2xpYkVHTCoKKwkJcm0gLXJmICR7RH0ke2xpYmRpcn0vbGliR0xFUyoKKwkJcm0gLXJmICR7RH0ke2xpYmRpcn0vbGlid2F5bGFuZC0qCisJCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9lZ2wucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ2xlc3YyLnBjIFwKKwkJCSR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL3dheWxhbmQtZWdsLnBjCisJCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9FR0wgJHtEfSR7aW5jbHVkZWRpcn0vR0xFUyogJHtEfSR7aW5jbHVkZWRpcn0vS0hSCisJZmkKIH0KIAogIyBTaGFyZWQgbGlicyBmcm9tIHVzZXJsYW5kIHBhY2thZ2UgIGJ1aWxkIGFyZW4ndCB2ZXJzaW9uZWQsIHNvIHdlIG5lZWQKQEAgLTgzLDMgKzkxLDQgQEAKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCiAKIFJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgImxpYmVnbDEiLCAiIiwgZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8lLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YmJmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXyUuYmJhcHBlbmQKQEAgLTAsMCArMSw3IEBACisjIHVudGlsIGZ1bGx5IHRlc3RlZCwgcHJlZmVyIGBsaWJ3YXlsYW5kLWVnbGAgcHJvdmlkZWQgYnkgYHVzZXJsYW5kYCBpbnN0ZWFkIG9mIGB3YXlsYW5kYCB3aGVuIG5vdCB1c2luZyB2YzRncmFwaGljcworZG9faW5zdGFsbF9hcHBlbmRfcnBpICgpIHsKKyAgICBpZiBbICIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ2YzRncmFwaGljcyIsICIxIiwgIjAiLCBkKX0iID0gIjAiIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJ3YXlsYW5kLWVnbCoKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wa2djb25maWcvd2F5bGFuZC1lZ2wucGMKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3JwaS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTU2MmVhLi4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9ycGkveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyAKLVNlY3Rpb24gIkRldmljZSIKLQlJZGVudGlmaWVyICJtb2Rlc2V0IgotCURyaXZlciAibW9kZXNldHRpbmciCi0JT3B0aW9uICJBY2NlbE1ldGhvZCIgIk5vbmUiCi1FbmRTZWN0aW9uCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWdfJS5iYmFwcGVuZCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18lLmJiYXBwZW5kCmluZGV4IDkxOWU5NWUuLjcxZTBhZGMgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18lLmJiYXBwZW5kCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZ18lLmJiYXBwZW5kCkBAIC0zLDE5ICszLDE0IEBACiBTUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKICAgICBmaWxlOi8veG9yZy5jb25mLmQvOTgtcGl0ZnQuY29uZiBcCiAgICAgZmlsZTovL3hvcmcuY29uZi5kLzk5LWNhbGlicmF0aW9uLmNvbmYgXAotICAgIGZpbGU6Ly94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mIFwKICIKIGRvX2luc3RhbGxfYXBwZW5kX3JwaSAoKSB7CiAgICAgUElURlQ9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInBpdGZ0IiwgIjEiLCAiMCIsIGQpfSIKLSAgICBWQzQ9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIjEiLCAiMCIsIGQpfSIKICAgICBpZiBbICIke1BJVEZUfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3hvcmcuY29uZi5kLzk4LXBpdGZ0LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L1gxMS94b3JnLmNvbmYuZC8KICAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0veG9yZy5jb25mLmQvOTktY2FsaWJyYXRpb24uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLwogICAgIGZpCi0gICAgaWYgWyAiJHtWQzR9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS94b3JnLmNvbmYuZC8xMC1ub2dsYW1vci5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mLmQvMTAtbm9nbGFtb3IuY29uZgotICAgIGZpCiB9CiAKIEZJTEVTXyR7UE59X3JwaSArPSAiJHtzeXNjb25mZGlyfS9YMTEveG9yZy5jb25mICR7c3lzY29uZmRpcn0vWDExL3hvcmcuY29uZi5kLyoiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2JsdWV6LWZpcm13YXJlLXJwaWRpc3Ryby9ibHVlei1maXJtd2FyZS1ycGlkaXN0cm9fZ2l0LmJiIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9ibHVlei1maXJtd2FyZS1ycGlkaXN0cm8vYmx1ZXotZmlybXdhcmUtcnBpZGlzdHJvX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTZiMmMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9ibHVlei1maXJtd2FyZS1ycGlkaXN0cm8vYmx1ZXotZmlybXdhcmUtcnBpZGlzdHJvX2dpdC5iYgpAQCAtMCwwICsxLDg0IEBACitTVU1NQVJZID0gIkxpbnV4IGtlcm5lbCBCbHVldG9vdGggZmlybXdhcmUgZmlsZXMgZnJvbSBSYXNwYmlhbiBkaXN0cmlidXRpb24iCitERVNDUklQVElPTiA9ICJVcGRhdGVkIEJsdWV0b290aCBmaXJtd2FyZSBmaWxlcyBmb3IgUmFzcGJlcnJ5UGkgaGFyZHdhcmUuIFwKK1JQaS1EaXN0cm8gb2J0YWlucyB0aGVzZSBkaXJlY3RseSBmcm9tIEN5cHJlc3M7IHRoZXkgYXJlIG5vdCBzdWJtaXR0ZWQgXAordG8gbGludXgtZmlybXdhcmUgZm9yIGdlbmVyYWwgdXNlLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlIgorU0VDVElPTiA9ICJrZXJuZWwiCisKKyMgVXBzdHJlYW0gaGFzIHByb3ZpZGVkW14xXSBsaWNlbnNpbmcgaW5mb3JtYXRpb24gaW4gdGhlIERlYmlhbgorIyBjb3B5cmlnaHQgZmlsZS4gIFRoZSB3b3JkaW5nIG9mIHRoZSBDeXByZXNzIGxpY2Vuc2Ugc3Vic2VxdWVudGx5CisjIGNoYW5nZWQgaW4gbGludXgtZmlybXdhcmUuCisjCisjIFJhdGhlciB0aGFuIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgd2hhdCdzIHN1cHBvc2VkIHRvIGJlIHdoYXQsIHdlJ2xsCisjIHVzZSB0aGUgbGljZW5zZSBpbXBsaWVkIGJ5IHRoZSBzb3VyY2Ugb2YgdGhlc2UgZmlsZXMsIG5hbWVkIHRvIGF2b2lkCisjIGNvbmZsaWN0cyB3aXRoIGxpbnV4LWZpcm13YXJlLgorIworIyBbXjFdOiBodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9ibHVlei1maXJtd2FyZS9pc3N1ZXMvMQorTElDRU5TRSA9ICJGaXJtd2FyZS1jeXByZXNzLXJwaWRpc3RybyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9MSUNFTkNFLmN5cHJlc3MtcnBpZGlzdHJvO21kNT04NTJmOWQxMGNiZWRiYTFmNmM0Mzk3MjliZDA2MTdiNCBcCisiCisKKyMgVGhlc2UgYXJlIG5vdCBjb21tb24gbGljZW5zZXMsIHNldCBOT19HRU5FUklDX0xJQ0VOU0UgZm9yIHRoZW0KKyMgc28gdGhhdCB0aGUgbGljZW5zZSBmaWxlcyB3aWxsIGJlIGNvcGllZCBmcm9tIGZldGNoZWQgc291cmNlCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3lwcmVzcy1ycGlkaXN0cm9dID0gIkxJQ0VOQ0UuY3lwcmVzcy1ycGlkaXN0cm8iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlIgorU1JDUkVWID0gImFkZTJiYWUxYWFhZWJlZGUwOWFiYjhmYjU0NmY3NjdhMGU0Yzc4MDQiCitQViA9ICIwLjArZ2l0JHtTUkNQVn0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYWxsYXJjaAorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19leHRyYWN0X2xpYygpIHsKKyAgICAjIEV4dHJhY3QgdGhlIGxpY2Vuc2UgZnJvbSB0aGUgRGViaWFuIGNvcHlyaWdodCBmaWxlCisgICAgc2VkIC1lICcxLDIzZCcgJHtTfS9kZWJpYW4vY29weXJpZ2h0ID4gJHtTfS9MSUNFTkNFLmN5cHJlc3MtcnBpZGlzdHJvCit9CisjIE11c3QgYmUgYmVmb3JlIGJvdGggZG9faW5zdGFsbCBhbmQgZG9fcG9wdWxhdGVfbGljLiAgUHV0dGluZyBpdCBiZWZvcmUKKyMgdGhlaXIgY29tbW9uIGFuY2VzdG9yIHdvcmtzOyBvdGhlciBhcHByb2FjaGVzIGRvIG5vdC4KK2FkZHRhc2sgZXh0cmFjdF9saWMgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaAorCitkb19jb21waWxlKCkgeworICAgIDoKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20KKworICAgIGNwIExJQ0VOQ0UuY3lwcmVzcy1ycGlkaXN0cm8gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUKKyAgICBpbnN0YWxsIC1tIDA2NDQgYnJvYWRjb20vQkNNNDM0Ki5oY2QgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8KK30KKworUEFDS0FHRVMgPSAiXAorICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCisgICAgJHtQTn0tYmNtNDM0MzBhMS1oY2QgXAorICAgICR7UE59LWJjbTQzNDVjMC1oY2QgXAorIgorCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIkZpcm13YXJlLWN5cHJlc3MtcnBpZGlzdHJvIgorTElDRU5TRV8ke1BOfS1iY200MzQ1YzAtaGNkID0gIkZpcm13YXJlLWN5cHJlc3MtcnBpZGlzdHJvIgorTElDRU5TRV8ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiRmlybXdhcmUtY3lwcmVzcy1ycGlkaXN0cm8iCisKK0ZJTEVTXyR7UE59LWN5cHJlc3MtbGljZW5zZSA9ICJcCisgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MtcnBpZGlzdHJvIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIlwKKyAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vQkNNNDM0MzBBMS5oY2QgXAorIgorRklMRVNfJHtQTn0tYmNtNDM0NWMwLWhjZCA9ICJcCisgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTTQzNDVDMC5oY2QgXAorIgorCitSREVQRU5EU18ke1BOfS1iY200MzQzMGExLWhjZCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYmNtNDM0NWMwLWhjZCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorUkNPTkZMSUNUU18ke1BOfS1iY200MzQzMGExLWhjZCA9ICJsaW51eC1maXJtd2FyZS1iY200MzQzMGExLWhjZCIKK1JSRVBMQUNFU18ke1BOfS1iY200MzQzMGExLWhjZCA9ICJsaW51eC1maXJtd2FyZS1iY200MzQzMGExLWhjZCIKK1JDT05GTElDVFNfJHtQTn0tYmNtNDM0MzVjMC1oY2QgPSAibGludXgtZmlybXdhcmUtYmNtNDM0NWMwLWhjZCIKK1JSRVBMQUNFU18ke1BOfS1iY200MzQzNWMwLWhjZCA9ICJsaW51eC1maXJtd2FyZS1iY200MzQ1YzAtaGNkIgorCisjIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJ1biBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQorIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCitJTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS1ycGlkaXN0cm8vbGludXgtZmlybXdhcmUtcnBpZGlzdHJvX2dpdC5iYiBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUtcnBpZGlzdHJvL2xpbnV4LWZpcm13YXJlLXJwaWRpc3Ryb19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY2M2MzMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUtcnBpZGlzdHJvL2xpbnV4LWZpcm13YXJlLXJwaWRpc3Ryb19naXQuYmIKQEAgLTAsMCArMSw5NiBAQAorU1VNTUFSWSA9ICJMaW51eCBrZXJuZWwgZmlybXdhcmUgZmlsZXMgZnJvbSBSYXNwYmlhbiBkaXN0cmlidXRpb24iCitERVNDUklQVElPTiA9ICJVcGRhdGVkIGZpcm13YXJlIGZpbGVzIGZvciBSYXNwYmVycnlQaSBoYXJkd2FyZS4gXAorUlBpLURpc3RybyBvYnRhaW5zIHRoZXNlIGRpcmVjdGx5IGZyb20gQ3lwcmVzczsgdGhleSBhcmUgbm90IHN1Ym1pdHRlZCBcCit0byBsaW51eC1maXJtd2FyZSBmb3IgZ2VuZXJhbCB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1JQaS1EaXN0cm8vZmlybXdhcmUtbm9uZnJlZSIKK1NFQ1RJT04gPSAia2VybmVsIgorCisjIEluIG1haW50YWluZWQgdXBzdHJlYW0gbGludXgtZmlybXdhcmU6CisjICogYnJjbWZtYWM0MzQzMC1zZGlvIGZhbGxzIHVuZGVyIExJQ0VOQ0UuY3lwcmVzcworIyAqIGJyY21mbWFjNDM0NTUtc2RpbyBmYWxscyB1bmRlciBMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgKKyMKKyMgSXQgaXMgbGlrZWx5W14xXSB0aGF0IGJvdGggb2YgdGhlc2Ugc2hvdWxkIGJlIHVuZGVyIExJQ0VOQ0UuY3lwcmVzcy4KKyMgRnVydGhlciwgYXQgdGhpcyB0aW1lIHRoZSB0ZXh0IG9mIExJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCBpcyB0aGUgc2FtZQorIyBpbiBsaW51eC1maXJtd2FyZSBhbmQgUlBpLURpc3Ryby9maXJtd2FyZS1ub25mcmVlLCBidXQgdGhpcyBtYXkKKyMgY2hhbmdlLgorIworIyBSYXRoZXIgdGhhbiBtYWtlIGFzc3VtcHRpb25zIGFib3V0IHdoYXQncyBzdXBwb3NlZCB0byBiZSB3aGF0LCB3ZSdsbAorIyB1c2UgdGhlIGxpY2Vuc2UgaW1wbGllZCBieSB0aGUgc291cmNlIG9mIHRoZXNlIGZpbGVzLCBuYW1lZCB0byBhdm9pZAorIyBjb25mbGljdHMgd2l0aCBsaW51eC1maXJtd2FyZS4KKyMKKyMgW14xXTogaHR0cHM6Ly9naXRodWIuY29tL1JQaS1EaXN0cm8vYmx1ZXotZmlybXdhcmUvaXNzdWVzLzEKK0xJQ0VOU0UgPSAiXAorICAgIEZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgtcnBpZGlzdHJvIFwKKyAgICAmIFdIRU5DRSBcCisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vTElDRU5DRS5icm9hZGNvbV9iY200M3h4O21kNT0zMTYwYzE0ZGY3MjI4ODkxYjg2ODA2MGUxOTUxZGZiYyBcCisgICAgZmlsZTovL1dIRU5DRTttZDU9YTljMmMyMTdmNTEzYzIwZTFkMTZiMzg0YjNlMmMxMmQgXAorIgorCisjIFRoZXNlIGFyZSBub3QgY29tbW9uIGxpY2Vuc2VzLCBzZXQgTk9fR0VORVJJQ19MSUNFTlNFIGZvciB0aGVtCisjIHNvIHRoYXQgdGhlIGxpY2Vuc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSBmZXRjaGVkIHNvdXJjZQorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgtcnBpZGlzdHJvXSA9ICJMSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCitOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2Zpcm13YXJlLW5vbmZyZWUiCitTUkNSRVYgPSAiYjUxOGRlNDVjZWQ1MTllOGY3YTQ5OWY0Nzc4MTAwMTczNDAyYWU0MyIKK1BWID0gIjAuMCtnaXQke1NSQ1BWfSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhbGxhcmNoCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgOgorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbQorCisgICAgY3AgLi9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHggJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5icm9hZGNvbV9iY200M3h4LXJwaWRpc3RybworCisgICAgIyBSZXBsYWNlIG91dGRhdGVkIGxpbnV4LWZpcm13YXJlIGZpbGVzIHdpdGggdXBkYXRlZCBvbmVzIGZyb20KKyAgICAjIHJhc3BiaWFuIGZpcm13YXJlLW5vbmZyZWUuIFJhc3BiaWFuIGFkZHMgYmxvYnMgYW5kIG52cmFtCisgICAgIyBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHNvIG5lY2Vzc2FyeSBzbyBjb3B5IHRob3NlIHRvby4KKyAgICBmb3IgZncgaW4gYnJjbWZtYWM0MzQzMC1zZGlvIGJyY21mbWFjNDM0NTUtc2RpbyA7IGRvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBicmNtLyR7Znd9LiogJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8KKyAgICBkb25lCit9CisKK1BBQ0tBR0VTID0gIlwKKyAgICAke1BOfS1icm9hZGNvbS1saWNlbnNlIFwKKyAgICAke1BOfS1iY200MzQzMCBcCisgICAgJHtQTn0tYmNtNDM0NTUgXAorIgorCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgtcnBpZGlzdHJvIgorTElDRU5TRV8ke1BOfS1iY200MzQ1NSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4LXJwaWRpc3RybyIKK0xJQ0VOU0VfJHtQTn0tYnJvYWRjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4LXJwaWRpc3RybyIKK0ZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgtcnBpZGlzdHJvIgorRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAqIgorRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUqIgorUkRFUEVORFNfJHtQTn0tYmNtNDM0MzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK1JDT05GTElDVFNfJHtQTn0tYmNtNDM0MzAgPSAiXAorICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDMwIFwKKyAgICBsaW51eC1maXJtd2FyZS1yYXNwYmlhbi1iY200MzQzMCBcCisiCitSUkVQTEFDRVNfJHtQTn0tYmNtNDM0MzAgPSAiXAorICAgIGxpbnV4LWZpcm13YXJlLWJjbTQzNDMwIFwKKyAgICBsaW51eC1maXJtd2FyZS1yYXNwYmlhbi1iY200MzQzMCBcCisiCitSQ09ORkxJQ1RTXyR7UE59LWJjbTQzNDU1ID0gIlwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQ1NSBcCisgICAgbGludXgtZmlybXdhcmUtcmFzcGJpYW4tYmNtNDM0NTUgXAorIgorUlJFUExBQ0VTXyR7UE59LWJjbTQzNDU1ID0gIlwKKyAgICBsaW51eC1maXJtd2FyZS1iY200MzQ1NSBcCisgICAgbGludXgtZmlybXdhcmUtcmFzcGJpYW4tYmNtNDM0NTUgXAorIgorCisjIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJ1biBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQorIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCitJTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGY5ZTE3Li4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfJS5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSMgQXVnbWVudHMgdXBzdHJlYW0gbGludXgtZmlybXdhcmUgd2l0aCBhZGRpdGlvbmFsIGFuZCB1cGRhdGVkIGltYWdlcwotIyBmcm9tIFJhc3BiaWFuOgotIyBodHRwczovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9maXJtd2FyZS1ub25mcmVlCi0jIGh0dHBzOi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlCi0KLVNSQ19VUklfYXBwZW5kX3JwaSA9ICIgXAotICAgIGdpdDovL2dpdGh1Yi5jb20vUlBpLURpc3Ryby9maXJtd2FyZS1ub25mcmVlO2Rlc3RzdWZmaXg9cmFzcGJpYW4tbmY7bmFtZT1yYXNwYmlhbi1uZiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS9SUGktRGlzdHJvL2JsdWV6LWZpcm13YXJlO2Rlc3RzdWZmaXg9cmFzcGJpYW4tYmx1ZXo7bmFtZT1yYXNwYmlhbi1ibHVleiBcCi0iCi0KLVNSQ1JFVl9yYXNwYmlhbi1uZiA9ICI4NmU4OGZiZjAzNDVkYTQ5NTU1ZDBlYzM0YzgwYjRmYmFlN2QwY2QzIgotU1JDUkVWX3Jhc3BiaWFuLWJsdWV6ID0gImUyOGNkN2VlODYxNWRlMzNhYTdlYzJiNDFkNTU2YWY2MWE0YTI3MDciCi1TUkNSRVZfRk9STUFUX3JwaSA9ICJkZWZhdWx0K3Jhc3BiaWFuLW5mK3Jhc3BiaWFuLWJsdWV6IgotCi1kb19pbnN0YWxsX2FwcGVuZF9ycGkoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLwotCi0gICAgIyBSZXBsYWNlIG91dGRhdGVkIGxpbnV4LWZpcm13YXJlIGZpbGVzIHdpdGggdXBkYXRlZCBvbmVzIGZyb20KLSAgICAjIHJhc3BiaWFuIGZpcm13YXJlLW5vbmZyZWUuIFJhc3BiaWFuIGFkZHMgYmxvYnMgYW5kIG52cmFtCi0gICAgIyBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHNvIG5lY2Vzc2FyeSBzbyBjb3B5IHRob3NlIHRvby4KLSAgICBmb3IgZncgaW4gYnJjbWZtYWM0MzQzMC1zZGlvIGJyY21mbWFjNDM0NTUtc2RpbyA7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Jhc3BiaWFuLW5mL2JyY20vJHtmd30uKiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtLwotICAgIGRvbmUKLQotICAgICMgQWRkIG1pc3NpbmcgQ3lwcmVzcyBCbHVldG9vdGggZmlsZXMgZnJvbSByYXNwYmlhbiBibHVlei1maXJtd2FyZQotICAgIGZvciBmdyBpbiBCQ000MzQzMEExLmhjZCBCQ000MzQ1QzAuaGNkIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFzcGJpYW4tYmx1ZXovYnJvYWRjb20vJHtmd30gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8KLSAgICBkb25lCi19Ci0KLSMgTkI6IE11c3QgcHJlcGVuZCwgZWxzZSB0aGVzZSBiZWNvbWUgZW1wdHkgYW5kIHRoZWlyIGNvbnRlbnQgaXMgbGVmdCBpbgotIyB0aGUgcm9sbC11cCBwYWNrYWdlIHdoaWNoIHByZWNlZGVzIHRoZW0uCi1QQUNLQUdFU19wcmVwZW5kX3JwaSA9ICJcCi0gICAgJHtQTn0tYmNtNDM0MzBhMS1oY2QgXAotICAgICR7UE59LWJjbTQzNDVjMC1oY2QgXAotIgotCi0jICR7UE59LWJjbTQzNDU1IHBhY2thZ2UgYW5kIGJyY21mbWFjNDM0NTUtc2RpbyBmcm9tIGxpbnV4LWZpcm13YXJlCi0jIGlzIGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIG9lLWNvcmUgcmVjaXBlLCBzbyBkb24ndCBhZGQgaXQgdG8gUEFDS0FHRVMKLSMgYWdhaW4sIHRoZSB2ZXJzaW9uIGZyb20gcmFzcGJpYW4tbmYgc2VlbXMgYSBiaXQgbmV3ZXI6Ci0jICQgc3RyaW5ncyAuLzFfMC4wK2dpdEFVVE9JTkMrZDExNDczMjcyMys4NmU4OGZiZjAzK2UyOGNkN2VlODYtcjAvZ2l0L2JyY20vYnJjbWZtYWM0MzQ1NS1zZGlvLmJpbiB8IGdyZXAgVmVyCi0jIFZlcnNpb246IDcuNDUuMTguMCBDUkM6IGQ3MjI2MzcxIERhdGU6IFN1biAyMDE1LTAzLTAxIDA3OjMxOjU3IFBTVCBVY29kZSBWZXI6IDEwMjYuMiBGV0lEOiAwMS02YTJjOGFkNAotIyAkIHN0cmluZ3MgLi8xXzAuMCtnaXRBVVRPSU5DK2QxMTQ3MzI3MjMrODZlODhmYmYwMytlMjhjZDdlZTg2LXIwL3Jhc3BiaWFuLW5mL2JyY20vYnJjbWZtYWM0MzQ1NS1zZGlvLmJpbiB8IGdyZXAgVmVyCi0jIFZlcnNpb246IDcuNDUuMTU0IChyNjg0MTA3IENZKSBDUkM6IGIxZjc5MzgzIERhdGU6IFR1ZSAyMDE4LTAyLTI3IDAzOjE4OjE3IFBTVCBVY29kZSBWZXI6IDEwNDMuMjEwNSBGV0lEIDAxLTRmYmUwYjA0Ci0KLSMgRm9yIGFkZGl0aW9uYWwgQnJvYWRjb20KLUxJQ0VOU0VfJHtQTn0tYmNtNDM0NTUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLQotRklMRVNfJHtQTn0tYmNtNDM0MzBfYXBwZW5kX3JwaSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQzMC1zZGlvLnR4dCBcCi0iCi1GSUxFU18ke1BOfS1iY200MzQ1NSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQ1NS1zZGlvLiogXAotIgotCi1SREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLQotTElDRU5TRV8ke1BOfS1iY200MzQzMGExLWhjZCA9ICJGaXJtd2FyZS1jeXByZXNzIgotTElDRU5TRV8ke1BOfS1iY200MzQ1YzAtaGNkID0gIkZpcm13YXJlLWN5cHJlc3MiCi0KLUZJTEVTXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzQzMEExLmhjZCBcCi0iCi1GSUxFU18ke1BOfS1iY200MzQ1YzAtaGNkID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9CQ000MzQ1QzAuaGNkIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tYmNtNDM0MzBhMS1oY2QgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWJjbTQzNDVjMC1oY2QgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktcnRfNC4xNC5iYiBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGktcnRfNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTk5MGZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS1ydF80LjE0LmJiCkBAIC0wLDAgKzEsOSBAQAorTElOVVhfVkVSU0lPTiA/PSAiNC4xNC44MSIKKworU1JDUkVWID0gImFjZjU3OGQwN2Q1NzQ4MDY3NGQ1MzYxZGY5MTcxZmU5NTI4NzY1Y2IiCitTUkNfVVJJID0gIiBcCisgICAgZ2l0Oi8vZ2l0aHViLmNvbS9yYXNwYmVycnlwaS9saW51eC5naXQ7YnJhbmNoPXJwaS00LjE0LnktcnQgXAorICAgIGZpbGU6Ly8wMDAxLW1lbnVjb25maWctY2hlY2stbHhkaWFnbG9nLnNoLUFsbG93LXNwZWNpZmljYXRpb24tb2YucGF0Y2ggXAorICAgICIKKworcmVxdWlyZSBsaW51eC1yYXNwYmVycnlwaS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGkuaW5jIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKaW5kZXggMDNhY2ZiNC4uMDFmMjQyNSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaS5pbmMKQEAgLTM1LDggKzM1LDYgQEAKIENNRExJTkVfREVCVUcgPz0gIiIKIENNRExJTkVfYXBwZW5kID0gIiAke0NNRExJTkVfREVCVUd9IgogCi1LRVJORUxfSU5JVFJBTUZTID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSIsICIxIiwgIjEiLCAiIiwgZCl9JwotCiBLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJwaXRmdDI4ciIsICJzdG1wZS10cyIsICIiLCBkKX0iCiAKICMgQSBMT0FEQUREUiBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBhIHVJbWFnZSBmb3JtYXQga2VybmVsLiBUaGlzIHZhbHVlIGlzIG5vdApAQCAtMTAxLDcgKzk5LDcgQEAKICAgICAjIExvY2FsdmVyc2lvbgogICAgIGtlcm5lbF9jb25maWd1cmVfdmFyaWFibGUgTE9DQUxWRVJTSU9OICJcIlwiIgogCi0gICAgaWYgWyAhIC16ICIke0tFUk5FTF9JTklUUkFNRlN9IiBdOyB0aGVuCisgICAgaWYgWyAiJHtJTklUUkFNRlNfSU1BR0VfQlVORExFfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIE9WRVJMQVlfRlMgeQogICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIFNRVUFTSEZTIHkKICAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBVQklGU19GUyB5CkBAIC0xMDksNyArMTA3LDcgQEAKIAogICAgICMgQWN0aXZhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVkM0CiAgICAgVkM0R1JBUEhJQ1M9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIjEiLCAiMCIsIGQpfSIKLSAgICBpZiBbICR7VkM0R1JBUEhJQ1N9ID0gIjEiIF07IHRoZW4KKyAgICBpZiBbICIke1ZDNEdSQVBISUNTfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIEkyQ19CQ00yODM1IHkKICAgICAgICAga2VybmVsX2NvbmZpZ3VyZV92YXJpYWJsZSBEUk0geQogICAgICAgICBrZXJuZWxfY29uZmlndXJlX3ZhcmlhYmxlIERSTV9GQkRFVl9FTVVMQVRJT04geQpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjE0LmJiIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1yYXNwYmVycnlwaV80LjE0LmJiCmluZGV4IDU0OTM2ZmEuLmQxMWI1OTkgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtcmFzcGJlcnJ5cGlfNC4xNC5iYgorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXJhc3BiZXJyeXBpXzQuMTQuYmIKQEAgLTEsNiArMSw2IEBACi1MSU5VWF9WRVJTSU9OID89ICI0LjE0LjY4IgorTElOVVhfVkVSU0lPTiA/PSAiNC4xNC43OSIKIAotU1JDUkVWID0gIjhjODY2NmZmNmMxMjU0ZDMyNWNmYTMwMGQxNmY5OTI4YjNmMzFmYzAiCitTUkNSRVYgPSAiOWNhNzRjNTNjYmRhMWYxMDRiY2UzYjMzODUwZmQzYmYzM2ViMzc5MyIKIFNSQ19VUkkgPSAiIFwKICAgICBnaXQ6Ly9naXRodWIuY29tL3Jhc3BiZXJyeXBpL2xpbnV4LmdpdDticmFuY2g9cnBpLTQuMTQueSBcCiAgICAgZmlsZTovLzAwMDEtbWVudWNvbmZpZy1jaGVjay1seGRpYWdsb2cuc2gtQWxsb3ctc3BlY2lmaWNhdGlvbi1vZi5wYXRjaCBcCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMmRkYjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAyLWZpeC1kZWNvZGVyLWZsdXNoaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbSBmYzQ3NzNmMzZhYTMxYjRhZTBmYzk3ZDNhYTNmOTRkYjBjODhmMTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTEgRmViIDIwMTYgMTI6NTM6MjAgLTA4MDAKLQotLS0tCi0gb214L2dzdG9teC5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL29teC9nc3RvbXguYyBiL29teC9nc3RvbXguYwotaW5kZXggMDIzN2YzYy4uNDU3MzJjMyAxMDA2NDQKLS0tLSBhL29teC9nc3RvbXguYwotKysrIGIvb214L2dzdG9teC5jCi1AQCAtMTUzOCw4ICsxNTM4LDggQEAgZ3N0X29teF9wb3J0X3NldF9mbHVzaGluZyAoR3N0T01YUG9ydCAqIHBvcnQsIEdzdENsb2NrVGltZSB0aW1lb3V0LAotICAgICBsYXN0X2Vycm9yID0gT01YX0Vycm9yTm9uZTsKLSAgICAgZ3N0X29teF9jb21wb25lbnRfaGFuZGxlX21lc3NhZ2VzIChjb21wKTsKLSAgICAgd2hpbGUgKHNpZ25hbGxlZCAmJiBsYXN0X2Vycm9yID09IE9NWF9FcnJvck5vbmUgJiYgIXBvcnQtPmZsdXNoZWQKLS0gICAgICAgICYmIHBvcnQtPmJ1ZmZlcnMKLS0gICAgICAgICYmIHBvcnQtPmJ1ZmZlcnMtPmxlbiA+IGdfcXVldWVfZ2V0X2xlbmd0aCAoJnBvcnQtPnBlbmRpbmdfYnVmZmVycykpIHsKLSsgICAgIC8qICYmIHBvcnQtPmJ1ZmZlcnMKLSsgICAgICAgICYmIHBvcnQtPmJ1ZmZlcnMtPmxlbiA+IGdfcXVldWVfZ2V0X2xlbmd0aCAoJnBvcnQtPnBlbmRpbmdfYnVmZmVycykgKi8pIHsKLSAgICAgICBzaWduYWxsZWQgPSBnc3Rfb214X2NvbXBvbmVudF93YWl0X21lc3NhZ2UgKGNvbXAsIHRpbWVvdXQpOwotICAgICAgIGlmIChzaWduYWxsZWQpCi0gICAgICAgICBnc3Rfb214X2NvbXBvbmVudF9oYW5kbGVfbWVzc2FnZXMgKGNvbXApOwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMjA3MmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gZjAwOTEyZjA2MjhhZmYxNWU4ODJiZGMxNjE5ZjVkZTFkZGY1YzcyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/PSA8ZW9jYW5oYUBpZ2FsaWEuY29tPgotRGF0ZTogVHVlLCAxNyBOb3YgMjAxNSAxNjo1MToyNyArMDAwMAotU3ViamVjdDogW1BBVENIXSBQcm9wZXJseSBoYW5kbGUgZHJhaW4gcmVxdWVzdHMgd2hpbGUgZmx1c2hpbmcKLQotV2l0aG91dCB0aGlzIGNvbW1pdCB0aGUgZGVjb2RlciBzdHJlYW1pbmcgdGhyZWFkIHN0b3BzIHdpdGhvdXQgZXZlciBhdHRlbmRpbmcKLXRoZSBkcmFpbiByZXF1ZXN0LCBsZWF2aW5nIHRoZSBkZWNvZGVyIGlucHV0IHRocmVhZCB3YWl0aW5nIGZvcmV2ZXIuCi0KLS0tLQotIG9teC9nc3RvbXguYyB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL29teC9nc3RvbXguYyBiL29teC9nc3RvbXguYwotaW5kZXggNDU3MzJjMy4uNzg0YTVkNyAxMDA2NDQKLS0tLSBhL29teC9nc3RvbXguYwotKysrIGIvb214L2dzdG9teC5jCi1AQCAtNzM3LDYgKzczNywxMyBAQCBnc3Rfb214X2NvbXBvbmVudF9uZXcgKEdzdE9iamVjdCAqIHBhcmVudCwgY29uc3QgZ2NoYXIgKiBjb3JlX25hbWUsCi0gCi0gICBnX211dGV4X2xvY2sgKCZjb21wLT5sb2NrKTsKLSAgIGdzdF9vbXhfY29tcG9uZW50X2hhbmRsZV9tZXNzYWdlcyAoY29tcCk7Ci0rCi0rICBpZiAoZXJyICE9IE9NWF9FcnJvck5vbmUgJiYgY29tcC0+bGFzdF9lcnJvciA9PSBPTVhfRXJyb3JOb25lKSB7Ci0rICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbXAtPnBhcmVudCwKLSsgICAgICAgICJMYXN0IG9wZXJhdGlvbiByZXR1cm5lZCBhbiBlcnJvci4gU2V0dGluZyBsYXN0X2Vycm9yIG1hbnVhbGx5LiIpOwotKyAgICBjb21wLT5sYXN0X2Vycm9yID0gZXJyOwotKyAgfQotKwotICAgZ19tdXRleF91bmxvY2sgKCZjb21wLT5sb2NrKTsKLSAKLSAgIHJldHVybiBjb21wOwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRmZGQxYi4uMDAwMDAwMAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gMGQyYWQ2MzllNjE1OGM4MDIzYzE1N2UyMDZlZjNmZjdhYmRjMDg5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/PSA8ZW9jYW5oYUBpZ2FsaWEuY29tPgotRGF0ZTogRnJpLCA0IERlYyAyMDE1IDE4OjM5OjU5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IGFib3J0IGdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQoKSBpZiB0aGVyZSdzIGEKLSB0aW1lb3V0IHJlbGVhc2luZyB0aGUgYnVmZmVycyB0YWtlbiBieSB0aGUgZWdsX3JlbmRlciBvdXQgcG9ydAotCi0tLS0KLSBvbXgvZ3N0b214dmlkZW9kZWMuYyB8IDUgKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9vbXgvZ3N0b214dmlkZW9kZWMuYyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1pbmRleCBiYWQ2MzM1Li5jNjNiOTcyIDEwMDY0NAotLS0tIGEvb214L2dzdG9teHZpZGVvZGVjLmMKLSsrKyBiL29teC9nc3RvbXh2aWRlb2RlYy5jCi1AQCAtMTkxMSw4ICsxOTExLDExIEBAIGdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIsCi0gICAgICAgICAgICAgICA1ICogR1NUX1NFQ09ORCkgIT0gT01YX0Vycm9yTm9uZSkKLSAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICBpZiAoZ3N0X29teF9wb3J0X3dhaXRfYnVmZmVyc19yZWxlYXNlZCAob3V0X3BvcnQsCi0tICAgICAgICAgICAgICAxICogR1NUX1NFQ09ORCkgIT0gT01YX0Vycm9yTm9uZSkKLSsgICAgICAgICAgICAgIDEgKiBHU1RfU0VDT05EKSAhPSBPTVhfRXJyb3JOb25lKSB7Ci0rI2lmICEoZGVmaW5lZCAoVVNFX09NWF9UQVJHRVRfUlBJKSAmJiBkZWZpbmVkIChIQVZFX0dTVF9HTCkpCi0gICAgICAgICByZXR1cm4gRkFMU0U7Ci0rI2VuZGlmCi0rICAgICAgfQotICAgICAgIGlmIChnc3Rfb214X3BvcnRfZGVhbGxvY2F0ZV9idWZmZXJzIChzZWxmLT5kZWNfaW5fcG9ydCkgIT0gT01YX0Vycm9yTm9uZSkKLSAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICBpZiAoZ3N0X29teF92aWRlb19kZWNfZGVhbGxvY2F0ZV9vdXRwdXRfYnVmZmVycyAoc2VsZikgIT0gT01YX0Vycm9yTm9uZSkKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xNC8wMDAxLURvbi10LXRyeS10by1hY3F1aXJlLWJ1ZmZlci13aGVuLXNyYy1wYWQtaXNuLXQtYWN0aXYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTIvMDAwMS1Eb24tdC10cnktdG8tYWNxdWlyZS1idWZmZXItd2hlbi1zcmMtcGFkLWlzbi10LWFjdGl2LnBhdGNoCnJlbmFtZSB0byBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjE0LzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xNC8wMDAxLWNvbmZpZy1maWxlcy1wYXRoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDEtY29uZmlnLWZpbGVzLXBhdGgucGF0Y2gKcmVuYW1lIHRvIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTQvMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xMi8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xNC8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjEyLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2gKcmVuYW1lIHRvIG1ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTQvMDAwMy1uby10aW1lb3V0LW9uLWdldC1zdGF0ZS5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXgtMS4xNC8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTQvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M5ZGQyYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTQvMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBmMDA5MTJmMDYyOGFmZjE1ZTg4MmJkYzE2MTlmNWRlMWRkZjVjNzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0VucmlxdWU9MjBPY2E9QzM9QjFhPTIwR29uej1DMz1BMWxlej89IDxlb2NhbmhhQGlnYWxpYS5jb20+CitEYXRlOiBUdWUsIDE3IE5vdiAyMDE1IDE2OjUxOjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IGhhbmRsZSBkcmFpbiByZXF1ZXN0cyB3aGlsZSBmbHVzaGluZworCitXaXRob3V0IHRoaXMgY29tbWl0IHRoZSBkZWNvZGVyIHN0cmVhbWluZyB0aHJlYWQgc3RvcHMgd2l0aG91dCBldmVyIGF0dGVuZGluZwordGhlIGRyYWluIHJlcXVlc3QsIGxlYXZpbmcgdGhlIGRlY29kZXIgaW5wdXQgdGhyZWFkIHdhaXRpbmcgZm9yZXZlci4KKworLS0tCisgb214L2dzdG9teC5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ3N0LW9teC0xLjE0LjAvb214L2dzdG9teC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3N0LW9teC0xLjE0LjAub3JpZy9vbXgvZ3N0b214LmMKKysrKyBnc3Qtb214LTEuMTQuMC9vbXgvZ3N0b214LmMKK0BAIC04MzcsNiArODM3LDEzIEBAIGdzdF9vbXhfY29tcG9uZW50X25ldyAoR3N0T2JqZWN0ICogcGFyZW4KKyAKKyAgIGdfbXV0ZXhfbG9jayAoJmNvbXAtPmxvY2spOworICAgZ3N0X29teF9jb21wb25lbnRfaGFuZGxlX21lc3NhZ2VzIChjb21wKTsKKysKKysgIGlmIChlcnIgIT0gT01YX0Vycm9yTm9uZSAmJiBjb21wLT5sYXN0X2Vycm9yID09IE9NWF9FcnJvck5vbmUpIHsKKysgICAgR1NUX0VSUk9SX09CSkVDVCAoY29tcC0+cGFyZW50LAorKyAgICAgICAgIkxhc3Qgb3BlcmF0aW9uIHJldHVybmVkIGFuIGVycm9yLiBTZXR0aW5nIGxhc3RfZXJyb3IgbWFudWFsbHkuIik7CisrICAgIGNvbXAtPmxhc3RfZXJyb3IgPSBlcnI7CisrICB9CisrCisgICBnX211dGV4X3VubG9jayAoJmNvbXAtPmxvY2spOworIAorICAgcmV0dXJuIGNvbXA7CmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjE0LzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LTEuMTQvMDAwNS1Eb24tdC1hYm9ydC1nc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0LWlmLXRoZXJlLXMtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODY0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC0xLjE0LzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDBkMmFkNjM5ZTYxNThjODAyM2MxNTdlMjA2ZWYzZmY3YWJkYzA4OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/RW5yaXF1ZT0yME9jYT1DMz1CMWE9MjBHb256PUMzPUExbGV6Pz0gPGVvY2FuaGFAaWdhbGlhLmNvbT4KK0RhdGU6IEZyaSwgNCBEZWMgMjAxNSAxODozOTo1OSArMDEwMAorU3ViamVjdDogW1BBVENIXSBEb24ndCBhYm9ydCBnc3Rfb214X3ZpZGVvX2RlY19zZXRfZm9ybWF0KCkgaWYgdGhlcmUncyBhCisgdGltZW91dCByZWxlYXNpbmcgdGhlIGJ1ZmZlcnMgdGFrZW4gYnkgdGhlIGVnbF9yZW5kZXIgb3V0IHBvcnQKKworLS0tCisgb214L2dzdG9teHZpZGVvZGVjLmMgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitJbmRleDogZ3N0LW9teC0xLjE0LjAvb214L2dzdG9teHZpZGVvZGVjLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3Qtb214LTEuMTQuMC5vcmlnL29teC9nc3RvbXh2aWRlb2RlYy5jCisrKysgZ3N0LW9teC0xLjE0LjAvb214L2dzdG9teHZpZGVvZGVjLmMKK0BAIC0yMjE0LDcgKzIyMTQsOSBAQCBnc3Rfb214X3ZpZGVvX2RlY19kaXNhYmxlIChHc3RPTVhWaWRlb0RlCisgICAgICAgcmV0dXJuIEZBTFNFOworICAgICBpZiAoZ3N0X29teF9wb3J0X3dhaXRfYnVmZmVyc19yZWxlYXNlZCAob3V0X3BvcnQsCisgICAgICAgICAgICAgMSAqIEdTVF9TRUNPTkQpICE9IE9NWF9FcnJvck5vbmUpCisrI2lmICEoZGVmaW5lZCAoVVNFX09NWF9UQVJHRVRfUlBJKSAmJiBkZWZpbmVkIChIQVZFX0dTVF9HTCkpCisgICAgICAgcmV0dXJuIEZBTFNFOworKyNlbmRpZgorICAgICBpZiAoZ3N0X29teF92aWRlb19kZWNfZGVhbGxvY2F0ZV9vdXRwdXRfYnVmZmVycyAoc2VsZikgIT0gT01YX0Vycm9yTm9uZSkKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICAgIGlmIChnc3Rfb214X3BvcnRfd2FpdF9lbmFibGVkIChvdXRfcG9ydCwgMSAqIEdTVF9TRUNPTkQpICE9IE9NWF9FcnJvck5vbmUpCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfJS5iYmFwcGVuZAppbmRleCA2N2U0NmRlLi5mODkyYzY2IDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8lLmJiYXBwZW5kCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XyUuYmJhcHBlbmQKQEAgLTEsOSArMSw5IEBACitERVBFTkRTX2FwcGVuZF9ycGkgPSAiIHVzZXJsYW5kIgogR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUX3JwaSA9ICJycGkiCiBHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUVfcnBpID0gIiR7bGliZGlyfS9saWJvcGVubWF4aWwuc28iCi0KLQogIyBIb3cgdG8gbWFrZSB0aGlzIFJQSSBzcGVjaWZpYz8KIEVYVFJBX09FQ09ORl9hcHBlbmRfcnBpICA9ICIgQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlL0lMIC1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzIC1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlL2ludGVyZmFjZS92bWNzX2hvc3QvbGludXgiIgogI2V4YW1wbGVzIG9ubHkgYnVpbGQgd2l0aCBHTCBidXQgbm90IEdMRVMsIHNvIGRpc2FibGUgaXQgZm9yIFJQSQogRVhUUkFfT0VDT05GX2FwcGVuZF9ycGkgPSAiIC0tZGlzYWJsZS1leGFtcGxlcyIKIAorUkRFUEVORFNfJHtQTn1fYXBwZW5kX3JwaSA9ICIgdXNlcmxhbmQiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyJS5iYmFwcGVuZCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIlLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzM4MWE0Li4wMDAwMDAwCi0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIlLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIwotIyBOZWVkIHRvIG1ha2UgdGhpcyBjb25kaXRpb25hbCB0byBnc3RyZWFtZXIxCi0jCi1TUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWRlY29kZXItZmx1c2hpbmcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5vLXRpbWVvdXQtb24tZ2V0LXN0YXRlLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwNC1Qcm9wZXJseS1oYW5kbGUtZHJhaW4tcmVxdWVzdHMtd2hpbGUtZmx1c2hpbmcucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LURvbi10LWFib3J0LWdzdF9vbXhfdmlkZW9fZGVjX3NldF9mb3JtYXQtaWYtdGhlcmUtcy0ucGF0Y2ggXAotIgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nc3RyZWFtZXIxLjAtb214LTEuMTI6IgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNCUuYmJhcHBlbmQgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjE0JS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjc5ODZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNCUuYmJhcHBlbmQKQEAgLTAsMCArMSwxMiBAQAorIworIyBOZWVkIHRvIG1ha2UgdGhpcyBjb25kaXRpb25hbCB0byBnc3RyZWFtZXIxCisjCitTUkNfVVJJX2FwcGVuZF9ycGkgPSAiIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctZmlsZXMtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdHJ5LXRvLWFjcXVpcmUtYnVmZmVyLXdoZW4tc3JjLXBhZC1pc24tdC1hY3Rpdi5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDMtbm8tdGltZW91dC1vbi1nZXQtc3RhdGUucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVByb3Blcmx5LWhhbmRsZS1kcmFpbi1yZXF1ZXN0cy13aGlsZS1mbHVzaGluZy5wYXRjaCBcCisgICAgICAgICAgICAgZmlsZTovLzAwMDUtRG9uLXQtYWJvcnQtZ3N0X29teF92aWRlb19kZWNfc2V0X2Zvcm1hdC1pZi10aGVyZS1zLS5wYXRjaCBcCisiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dzdHJlYW1lcjEuMC1vbXgtMS4xNDoiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXyUuYmJhcHBlbmQgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXyUuYmJhcHBlbmQKaW5kZXggNzI5MmY5MC4uODk5YTJkNCAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8lLmJiYXBwZW5kCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfJS5iYmFwcGVuZApAQCAtMSwxMiArMSBAQAotRVhUUkFfT0VDT05GX2FwcGVuZF9ycGkgPSAiIENQUEZMQUdTPSctSSR7U1RBR0lOR19JTkNESVJ9L2ludGVyZmFjZS92Y29zL3B0aHJlYWRzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLUkke1NUQUdJTkdfSU5DRElSfS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4JyIKLQotIyBpZiB1c2luZyBiY20gZHJpdmVyIGVuYWJsZSBkaXNwbWFueCBub3Qgd2hlbiB1c2luZyBWQzQgZHJpdmVyCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIGRpc3BtYW54JywgZCl9IgotCi1QQUNLQUdFQ09ORklHX0dMX3JwaSA9ICJlZ2wgZ2xlczIiCi0KIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3JwaSA9ICIgaGxzIGxpYm1tcyBmYWFkIgotCi1QQUNLQUdFQ09ORklHW2Rpc3BtYW54XSA9ICItLWVuYWJsZS1kaXNwbWFueCwtLWRpc2FibGUtZGlzcG1hbngsdXNlcmxhbmQiCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8lLmJiYXBwZW5kIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfJS5iYmFwcGVuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTg2YzAwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfJS5iYmFwcGVuZApAQCAtMCwwICsxLDEwIEBACitFWFRSQV9PRUNPTkZfYXBwZW5kX3JwaSA9ICIgQ1BQRkxBR1M9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtSSR7U1RBR0lOR19JTkNESVJ9L2ludGVyZmFjZS92bWNzX2hvc3QvbGludXgnIgorCisjIGlmIHVzaW5nIGJjbSBkcml2ZXIgZW5hYmxlIGRpc3BtYW54IG5vdCB3aGVuIHVzaW5nIFZDNCBkcml2ZXIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfcnBpID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICcgZGlzcG1hbngnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdfR0xfcnBpID0gImVnbCBnbGVzMiIKKworUEFDS0FHRUNPTkZJR1tkaXNwbWFueF0gPSAiLS1lbmFibGUtZGlzcG1hbngsLS1kaXNhYmxlLWRpc3BtYW54LHVzZXJsYW5kIgpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAxLUZpeC1idWlsZC13aXRoLXZjNC1kcml2ZXIucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDEtRml4LWJ1aWxkLXdpdGgtdmM0LWRyaXZlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2QwNzI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAxLUZpeC1idWlsZC13aXRoLXZjNC1kcml2ZXIucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAyNTMwMjQ2OWI2Y2ViMmZhMTBhYzY4YzA3ZGEyNWM2MDY4ZmZkMjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNyBOb3YgMjAxOCAwMToxNjo1OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCB2YzQgZHJpdmVyCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBTdWJ0aXRsZVJlbmRlcmVyLmNwcCB8IDcgKysrKysrLQorIFN1YnRpdGxlUmVuZGVyZXIuaCAgIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL1N1YnRpdGxlUmVuZGVyZXIuY3BwIGIvU3VidGl0bGVSZW5kZXJlci5jcHAKK2luZGV4IDU0MDE2MmYuLmZjZmM3MDggMTAwNjQ0CistLS0gYS9TdWJ0aXRsZVJlbmRlcmVyLmNwcAorKysrIGIvU3VidGl0bGVSZW5kZXJlci5jcHAKK0BAIC0zNiw2ICszNiwxMSBAQAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgI2luY2x1ZGUgImJjbV9ob3N0LmgiCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgRElTUE1BTlhfRUxFTUVOVF9IQU5ETEVfVCBlbGVtZW50OworKyAgaW50IHdpZHRoOworKyAgaW50IGhlaWdodDsKKyt9IEVHTF9ESVNQTUFOWF9XSU5ET1dfVDsKKyAKKyBjbGFzcyBCb3hSZW5kZXJlciB7CisgICBWR1BhdGggcGF0aF87CitAQCAtNjE4LDQgKzYyMyw0IEBAIHZvaWQgU3VidGl0bGVSZW5kZXJlcjo6c2V0X3JlY3QoaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyKSBCT09TVF9OT0VYQ0VQVAorICAgICBmbG9hdCBmb250X3NpemUgPSBoZWlnaHQqZm9udF9zaXplXzsKKyAgICAgRU5GT1JDRSghRlRfU2V0X1BpeGVsX1NpemVzKGZ0X2ZhY2VfLCAwLCBmb250X3NpemUpKTsKKyAgICAgRU5GT1JDRSghRlRfU2V0X1BpeGVsX1NpemVzKGZ0X2ZhY2VfaXRhbGljXywgMCwgZm9udF9zaXplKSk7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorZGlmZiAtLWdpdCBhL1N1YnRpdGxlUmVuZGVyZXIuaCBiL1N1YnRpdGxlUmVuZGVyZXIuaAoraW5kZXggM2Y2MDc5OC4uZWJhYzlhMSAxMDA2NDQKKy0tLSBhL1N1YnRpdGxlUmVuZGVyZXIuaAorKysrIGIvU3VidGl0bGVSZW5kZXJlci5oCitAQCAtMjYsNiArMjYsNyBAQAorIC8vIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorIC8vIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAKKysjaW5jbHVkZSA8aW50ZXJmYWNlL3ZtY3NfaG9zdC92Y19kaXNwbWFueC5oPgorICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPFZHL29wZW52Zy5oPgorICNpbmNsdWRlIDxmdDJidWlsZC5oPgorLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAxLVJlbW92ZS1NYWtlZmlsZS5pbmNsdWRlLXdoaWNoLWluY2x1ZGVzLWhhcmRjb2RlZC5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMS1SZW1vdmUtTWFrZWZpbGUuaW5jbHVkZS13aGljaC1pbmNsdWRlcy1oYXJkY29kZWQucGF0Y2gKaW5kZXggMTUxYzMzYy4uMGM4ODQzZSAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAxLVJlbW92ZS1NYWtlZmlsZS5pbmNsdWRlLXdoaWNoLWluY2x1ZGVzLWhhcmRjb2RlZC5wYXRjaAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDEtUmVtb3ZlLU1ha2VmaWxlLmluY2x1ZGUtd2hpY2gtaW5jbHVkZXMtaGFyZGNvZGVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMmEyOGZiN2M0ZTgzNTRjYzBmOTA0NTRlOWJkMTUxYzE2YTZiZjhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxOWM5YmM1ZmQ4ZjQzZDNlOTExNzkwNmMzYzQ4YTM4OTEzNTdmOGJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogRGF0ZTogVHVlLCAyMCBBdWcgMjAxMyAxNjoxMDo1MSArMDMwMAogU3ViamVjdDogW1BBVENIXSBSZW1vdmUgTWFrZWZpbGUuaW5jbHVkZSB3aGljaCBpbmNsdWRlcyBoYXJkY29kZWQKQEAgLTExLDggKzExLDE1IEBACiAKIFVwZGF0ZWQgcGF0Y2ggdG8gYXBwbHkgdG8gYzBkZDk1MDJlZDJjNDNjNDg3Njc0OTM5MTk1YzY5NjgwZjNkOThiMCByZXZpc2lvbgogCistLS0KKyBNYWtlZmlsZSAgICAgICAgIHwgIDEgLQorIE1ha2VmaWxlLmZmbXBlZyAgfCAgMSAtCisgTWFrZWZpbGUuaW5jbHVkZSB8IDQwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDQyIGRlbGV0aW9ucygtKQorIGRlbGV0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS5pbmNsdWRlCisKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBmMzQ4NDY1Li42NWY3NjM3IDEwMDY0NAoraW5kZXggMjg1N2U5NC4uNzZlZTliZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTEsNCArMSwzIEBACkBAIC0yMSw3ICsyOCw3IEBACiAgQ0ZMQUdTKz0tc3RkPWMrKzB4IC1EX19TVERDX0NPTlNUQU5UX01BQ1JPUyAtRF9fU1REQ19MSU1JVF9NQUNST1MgLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLWZQSUMgLURQSUMgLURfUkVFTlRSQU5UIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1ESEFWRV9DTUFLRV9DT05GSUcgLURfX1ZJREVPQ09SRTRfXyAtVV9GT1JUSUZZX1NPVVJDRSAtV2FsbCAtREhBVkVfT01YTElCIC1EVVNFX0VYVEVSTkFMX0ZGTVBFRyAgLURIQVZFX0xJQkFWQ09ERUNfQVZDT0RFQ19IIC1ESEFWRV9MSUJBVlVUSUxfT1BUX0ggLURIQVZFX0xJQkFWVVRJTF9NRU1fSCAtREhBVkVfTElCQVZVVElMX0FWVVRJTF9IIC1ESEFWRV9MSUJBVkZPUk1BVF9BVkZPUk1BVF9IIC1ESEFWRV9MSUJBVkZJTFRFUl9BVkZJTFRFUl9IIC1ESEFWRV9MSUJTV1JFU0FNUExFX1NXUkVTQU1QTEVfSCAtRE9NWCAtRE9NWF9TS0lQNjRCSVQgLWZ0cmVlLXZlY3Rvcml6ZSAtRFVTRV9FWFRFUk5BTF9PTVggLURUQVJHRVRfUkFTUEJFUlJZX1BJIC1EVVNFX0VYVEVSTkFMX0xJQkJDTV9IT1NUCiAgCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZmZtcGVnIGIvTWFrZWZpbGUuZmZtcGVnCi1pbmRleCAwODNlMjE0Li4zYjMxYTgyIDEwMDY0NAoraW5kZXggZWExMmFhZC4uNzQ5ZjQ3ZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmZmbXBlZwogKysrIGIvTWFrZWZpbGUuZmZtcGVnCiBAQCAtMSw0ICsxLDMgQEAKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMS1TcGVjaWZ5LWNjLWN4eC1hbmQtbGQtdmFyaWFibGVzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDEtU3BlY2lmeS1jYy1jeHgtYW5kLWxkLXZhcmlhYmxlcy1mcm9tLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZGZkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDEtU3BlY2lmeS1jYy1jeHgtYW5kLWxkLXZhcmlhYmxlcy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gOWI0YjdmODcyNjE3MWU5N2YxMmM1ODdkNTBlNTRiYWIwZGM0MmRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDEyIFNlcCAyMDE4IDIyOjE4OjA3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIFNwZWNpZnkgLS1jYywgLS1jeHggYW5kIC0tbGQgdmFyaWFibGVzIGZyb20gZW52aXJvbm1lbnQKKworVGhpcyBoZWxwcyBpbiBjb21waWxpbmcgd2l0aCBub24tZ2NjIGNvbXBpbGVycworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuZmZtcGVnIHwgMjIgKysrKysrKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L01ha2VmaWxlLmZmbXBlZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmZmbXBlZworKysrIGdpdC9NYWtlZmlsZS5mZm1wZWcKK0BAIC0yMiwxMiArMjIsMTUgQEAgY29uZmlndXJlOgorIAlDRkxBR1M9IiQoQ0ZMQUdTKSAke0lOQ0xVREVTfSIgXAorIAlMREZMQUdTPSIiIFwKKyAgIC4vY29uZmlndXJlIFwKKysJCQktLWxkPSIke0NDTER9IiBcCisrCQkJLS1jYz0iJHtDQ30iIFwKKysJCQktLWN4eD0iJHtDWFh9IiBcCisgCQkJLS1leHRyYS1jZmxhZ3M9IiQoRkZNUEVHX0VYVFJBX0NGTEFHUykiIFwKKyAJCQktLWV4dHJhLWxkZmxhZ3M9IiQoRkZNUEVHX0VYVFJBX0xERkxBR1MpIiBcCisgCQkJLS1lbmFibGUtc2hhcmVkIFwKKyAJCQktLWRpc2FibGUtc3RhdGljIFwKKyAJCQktLWFyY2g9YXJtIFwKKy0JCQktLWNwdT1hcm0xMTc2anpmLXMgXAorKwkJCS0tY3B1PSQoQ1BVKSBcCisgCQkJLS10YXJnZXQtb3M9bGludXggXAorIAkJCS0tZGlzYWJsZS1od2FjY2VscyBcCisgCQkJLS1lbmFibGUtcGFyc2VycyBcCitAQCAtNDIsNyArNDUsNyBAQCBjb25maWd1cmU6CisgCQkJLS1lbmFibGUtZ3BsIFwKKyAJCQktLWVuYWJsZS12ZXJzaW9uMyBcCisgCQkJLS1lbmFibGUtcHJvdG9jb2xzIFwKKy0JCQktLWVuYWJsZS1saWJzbWJjbGllbnQgXAorKwkJCS0tZGlzYWJsZS1saWJzbWJjbGllbnQgXAorIAkJCS0tZW5hYmxlLWxpYnNzaCBcCisgCQkJLS1lbmFibGUtbm9uZnJlZSBcCisgCQkJLS1lbmFibGUtb3BlbnNzbCBcCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDItTGlicmFyaWVzLWFuZC1oZWFkZXJzLWZyb20tZmZtcGVnLWFyZS1pbnN0YWxsZWQtaW4tdS5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMi1MaWJyYXJpZXMtYW5kLWhlYWRlcnMtZnJvbS1mZm1wZWctYXJlLWluc3RhbGxlZC1pbi11LnBhdGNoCmluZGV4IDIwM2YzNGIuLmRkMWQ0ZjMgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMi1MaWJyYXJpZXMtYW5kLWhlYWRlcnMtZnJvbS1mZm1wZWctYXJlLWluc3RhbGxlZC1pbi11LnBhdGNoCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMi1MaWJyYXJpZXMtYW5kLWhlYWRlcnMtZnJvbS1mZm1wZWctYXJlLWluc3RhbGxlZC1pbi11LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxZTkyZGE2NTkzNzVlYWUxNjIyOTg0ZDRjYzBmZmQyYTdiMDgyZmNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNDYyMDhjNGEzZTM1ZGE0NjFlMGU4ZjY2Mjk3MDMzOWVhZTQ3ZmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogRGF0ZTogU3VuLCAyNCBBdWcgMjAxNCAwMDoxMzoxMyArMDIwMAogU3ViamVjdDogW1BBVENIXSBMaWJyYXJpZXMgYW5kIGhlYWRlcnMgZnJvbSBmZm1wZWcgYXJlIGluc3RhbGxlZCBpbiAvdXNyLgpAQCAtOSw2ICs5LDcgQEAKIAogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorCiAtLS0KICBNYWtlZmlsZSAgICAgICAgfCA2ICsrKy0tLQogIE1ha2VmaWxlLmZmbXBlZyB8IDIgKy0KQEAgLTE4LDMwICsxOSw0MiBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL01ha2VmaWxlCiArKysgZ2l0L01ha2VmaWxlCi1AQCAtMSw5ICsxLDkgQEAKLSAKK0BAIC0yLDkgKzIsOSBAQCBDRkxBR1M9LXBpcGUgLW1mbG9hdC1hYmk9aGFyZCAtbWNwdT1hcm0xCiAgQ0ZMQUdTKz0tc3RkPWMrKzB4IC1EX19TVERDX0NPTlNUQU5UX01BQ1JPUyAtRF9fU1REQ19MSU1JVF9NQUNST1MgLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLWZQSUMgLURQSUMgLURfUkVFTlRSQU5UIC1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1ESEFWRV9DTUFLRV9DT05GSUcgLURfX1ZJREVPQ09SRTRfXyAtVV9GT1JUSUZZX1NPVVJDRSAtV2FsbCAtREhBVkVfT01YTElCIC1EVVNFX0VYVEVSTkFMX0ZGTVBFRyAgLURIQVZFX0xJQkFWQ09ERUNfQVZDT0RFQ19IIC1ESEFWRV9MSUJBVlVUSUxfT1BUX0ggLURIQVZFX0xJQkFWVVRJTF9NRU1fSCAtREhBVkVfTElCQVZVVElMX0FWVVRJTF9IIC1ESEFWRV9MSUJBVkZPUk1BVF9BVkZPUk1BVF9IIC1ESEFWRV9MSUJBVkZJTFRFUl9BVkZJTFRFUl9IIC1ESEFWRV9MSUJTV1JFU0FNUExFX1NXUkVTQU1QTEVfSCAtRE9NWCAtRE9NWF9TS0lQNjRCSVQgLWZ0cmVlLXZlY3Rvcml6ZSAtRFVTRV9FWFRFUk5BTF9PTVggLURUQVJHRVRfUkFTUEJFUlJZX1BJIC1EVVNFX0VYVEVSTkFMX0xJQkJDTV9IT1NUCiAgCi0tTERGTEFHUys9LUwuLyAtTGZmbXBlZ19jb21waWxlZC91c3IvbG9jYWwvbGliLyAtbGMgLWxXRkMgLWxHTEVTdjIgLWxFR0wgLWxiY21faG9zdCAtbG9wZW5tYXhpbCAtbGZyZWV0eXBlIC1seiAtbGFzb3VuZAotK0xERkxBR1MrPS1MLi8gLUxmZm1wZWdfY29tcGlsZWQvdXNyL2xpYi8gLWxjIC1sV0ZDIC1sR0xFU3YyIC1sRUdMIC1sYmNtX2hvc3QgLWxvcGVubWF4aWwgLWxmcmVldHlwZSAtbHogLWxhc291bmQKKyBMREZMQUdTPS1MJChTREtTVEFHRSkvb3B0L3ZjL2xpYi8KKy1MREZMQUdTKz0tTC4vIC1MZmZtcGVnX2NvbXBpbGVkL3Vzci9sb2NhbC9saWIvIC1sYyAtbGJyY21HTEVTdjIgLWxicmNtRUdMIC1sYmNtX2hvc3QgLWxvcGVubWF4aWwgLWxmcmVldHlwZSAtbHogLWxhc291bmQKKytMREZMQUdTKz0tTC4vIC1MZmZtcGVnX2NvbXBpbGVkL3Vzci9saWIvIC1sYyAtbGJyY21HTEVTdjIgLWxicmNtRUdMIC1sYmNtX2hvc3QgLWxvcGVubWF4aWwgLWxmcmVldHlwZSAtbHogLWxhc291bmQKICAKLS1JTkNMVURFUys9LUkuLyAtSWxpbnV4IC1JZmZtcGVnX2NvbXBpbGVkL3Vzci9sb2NhbC9pbmNsdWRlLyAtSSAvdXNyL2luY2x1ZGUvZGJ1cy0xLjAgLUkgL3Vzci9saWIvYXJtLWxpbnV4LWdudWVhYmloZi9kYnVzLTEuMC9pbmNsdWRlCi0rSU5DTFVERVMrPS1JLi8gLUlsaW51eCAtSWZmbXBlZ19jb21waWxlZC91c3IvaW5jbHVkZS8gLUk9L3Vzci9pbmNsdWRlL2RidXMtMS4wCistSU5DTFVERVMrPS1JLi8gLUlsaW51eCAtSWZmbXBlZ19jb21waWxlZC91c3IvbG9jYWwvaW5jbHVkZS8gLUkgL3Vzci9pbmNsdWRlL2RidXMtMS4wIC1JIC91c3IvbGliL2FybS1saW51eC1nbnVlYWJpaGYvZGJ1cy0xLjAvaW5jbHVkZSAtSS91c3IvaW5jbHVkZS9mcmVldHlwZTIgLWlzeXN0ZW0kKFNES1NUQUdFKS9vcHQvdmMvaW5jbHVkZSAtaXN5c3RlbSQoU0RLU1RBR0UpL29wdC92Yy9pbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzCisrSU5DTFVERVMrPS1JLi8gLUlsaW51eAogIAogIERJU1QgPz0gb214cGxheWVyLWRpc3QKLSAKLUBAIC04OCw1ICs4OCw1IEBAIGRpc3Q6IG9teHBsYXllci5iaW4gb214cGxheWVyLjEKKyBTVFJJUCA/PSBzdHJpcAorQEAgLTkwLDcgKzkwLDcgQEAgZGlzdDogb214cGxheWVyLmJpbiBvbXhwbGF5ZXIuMQogIAljcCBDT1BZSU5HICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIKICAJY3AgUkVBRE1FLm1kICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIvUkVBRE1FCiAgCWNwIG9teHBsYXllci4xICQoRElTVCkvdXNyL3NoYXJlL21hbi9tYW4xCiAtCWNwIC1QIGZmbXBlZ19jb21waWxlZC91c3IvbG9jYWwvbGliLyouc28qICQoRElTVCkvdXNyL2xpYi9vbXhwbGF5ZXIvCiArCWNwIC1QIGZmbXBlZ19jb21waWxlZC91c3IvbGliLyouc28qICQoRElTVCkvdXNyL2xpYi9vbXhwbGF5ZXIvCiAgCWNkICQoRElTVCk7IHRhciAtY3pmIC4uLyQoRElTVCkudGd6ICoKKyAKKyBpbnN0YWxsOgogSW5kZXg6IGdpdC9NYWtlZmlsZS5mZm1wZWcKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9NYWtlZmlsZS5mZm1wZWcKICsrKyBnaXQvTWFrZWZpbGUuZmZtcGVnCi1AQCAtMjU0LDUgKzI1NCw1IEBAIGNoZWNrb3V0OgorQEAgLTIzOCw3ICsyMzgsOCBAQCBjb25maWd1cmU6CisgCQkJLS1kaXNhYmxlLWRlY29kZXI9eGJpbiBcCisgCQkJLS1kaXNhYmxlLWRlY29kZXI9aWRmIFwKKyAJCQktLWRpc2FibGUtZGVjb2Rlcj1oZXZjIFwKKy0JCQktLWVuYWJsZS1kZWNvZGVyPW9wdXMKKysJCQktLWVuYWJsZS1kZWNvZGVyPW9wdXMgXAorKwkJCS0tZGlzYWJsZS1zdHJpcHBpbmcKKyAKKyAuUEhPTlkgOiBjbGVhbgorIGNsZWFuOgorQEAgLTI1MSw1ICsyNTIsNSBAQCBjaGVja291dDoKICAuUEhPTlkgOiBpbnN0YWxsCiAgaW5zdGFsbDoKICAJY2QgZmZtcGVnOyBtYWtlIC1qOSBERVNURElSPSIkKFdPUkspL2ZmbXBlZ19jb21waWxlZCIgaW5zdGFsbApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAzLVJlbW92ZS1zdHJpcC1zdGVwLWluLU1ha2VmaWxlLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDAzLVJlbW92ZS1zdHJpcC1zdGVwLWluLU1ha2VmaWxlLnBhdGNoCmluZGV4IDdmMzEzMzAuLjBiNmFhZmQgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwMy1SZW1vdmUtc3RyaXAtc3RlcC1pbi1NYWtlZmlsZS5wYXRjaAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDMtUmVtb3ZlLXN0cmlwLXN0ZXAtaW4tTWFrZWZpbGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI3Mzg3MjRjNmNhNDVlZTVmZWNlYmVkMDFjN2FjOTFjOTI0NDYxMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDY5NzVkOGE5MDI4MzdkZDZjNjA0ZjdmZGQyYTJmOTc3Mjg1ODU1ZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiBEYXRlOiBTdW4sIDI0IEF1ZyAyMDE0IDAwOjE4OjA1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBzdHJpcCBzdGVwIGluIE1ha2VmaWxlCkBAIC0xMCwzMCArMTAsMTggQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KKwogLS0tCiAgTWFrZWZpbGUuZmZtcGVnIHwgNSArKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgMSBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5mZm1wZWcgYi9NYWtlZmlsZS5mZm1wZWcKLWluZGV4IDlkNjZhODUuLjAwZGYxOTcgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5mZm1wZWcKLSsrKyBiL01ha2VmaWxlLmZmbXBlZwotQEAgLTI0Myw3ICsyNDMsOCBAQCBjb25maWd1cmU6Ci0gCQkJLS1kaXNhYmxlLWRlY29kZXI9eGJpbiBcCi0gCQkJLS1kaXNhYmxlLWRlY29kZXI9aWRmIFwKLSAJCQktLWVuYWJsZS1kZWNvZGVyPW9wdXMgXAotLQkJCS0tY3Jvc3MtcHJlZml4PSQoSE9TVCktCi0rCQkJLS1jcm9zcy1wcmVmaXg9JChIT1NUKS0gXAotKwkJCS0tZGlzYWJsZS1zdHJpcHBpbmcKLSAKLSAuUEhPTlkgOiBjbGVhbgotIGNsZWFuOgotQEAgLTI1Niw1ICsyNTcsMyBAQCBjaGVja291dDoKK0luZGV4OiBnaXQvTWFrZWZpbGUuZmZtcGVnCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuZmZtcGVnCisrKysgZ2l0L01ha2VmaWxlLmZmbXBlZworQEAgLTI1Miw1ICsyNTIsMyBAQCBjaGVja291dDoKICAuUEhPTlkgOiBpbnN0YWxsCiAgaW5zdGFsbDoKICAJY2QgZmZtcGVnOyBtYWtlIC1qOSBERVNURElSPSIkKFdPUkspL2ZmbXBlZ19jb21waWxlZCIgaW5zdGFsbAogLQkkKEhPU1QpLXN0cmlwIGZmbXBlZ19jb21waWxlZC91c3IvbGliLyouc28KIC0KLS0tIAotMS45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA0LUFkZC1GRk1QRUdfRVhUUkFfQ0ZMQUdTLWFuZC1GRk1QRUdfRVhUUkFfTERGTEFHUy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNC1BZGQtRkZNUEVHX0VYVFJBX0NGTEFHUy1hbmQtRkZNUEVHX0VYVFJBX0xERkxBR1MucGF0Y2gKaW5kZXggZWE4NTMwZC4uMzgzY2RmNyAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA0LUFkZC1GRk1QRUdfRVhUUkFfQ0ZMQUdTLWFuZC1GRk1QRUdfRVhUUkFfTERGTEFHUy5wYXRjaAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDQtQWRkLUZGTVBFR19FWFRSQV9DRkxBR1MtYW5kLUZGTVBFR19FWFRSQV9MREZMQUdTLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMDA5ODJlZTFmYzFjYjU3MWM3NDUzZDE0ZjlhY2Q2MGU2N2Q0NzY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZTAwN2IwMWU3ZDkxZjVmODM1MThjMDM4OGMxNmRiOGRhYjMxZDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaS5naGVyemFuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBTdW4sIDI1IEphbiAyMDE1IDExOjEzOjUxICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBGRk1QRUdfRVhUUkFfQ0ZMQUdTIGFuZCBGRk1QRUdfRVhUUkFfTERGTEFHUwpAQCAtOCwxNiArOCwxNiBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorCiAtLS0KLSBNYWtlZmlsZS5mZm1wZWcgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBNYWtlZmlsZS5mZm1wZWcgfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBJbmRleDogZ2l0L01ha2VmaWxlLmZmbXBlZwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGdpdC5vcmlnL01ha2VmaWxlLmZmbXBlZwogKysrIGdpdC9NYWtlZmlsZS5mZm1wZWcKLUBAIC0xLDYgKzEsOCBAQAotIAorQEAgLTEsNSArMSw3IEBACiAgQ0ZMQUdTPS1EX19TVERDX0NPTlNUQU5UX01BQ1JPUyAtRF9fU1REQ19MSU1JVF9NQUNST1MgLURUQVJHRVRfUE9TSVggLURUQVJHRVRfTElOVVggLWZQSUMgLURQSUMgLURfUkVFTlRSQU5UIC1EX0hBVkVfU0JSSyAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURIQVZFX0NNQUtFX0NPTkZJRyAtREhBVkVfVk1DU19DT05GSUcgLURfUkVFTlRSQU5UIC1EVVNFX1ZDSElRX0FSTSAtRFZDSElfQlVMS19BTElHTj0xIC1EVkNISV9CVUxLX0dSQU5VTEFSSVRZPTEgLURFR0xfU0VSVkVSX0RJU1BNQU5YIC1EX0xBUkdFRklMRV9TT1VSQ0UgLURfTEFSR0VGSUxFNjRfU09VUkNFIC1EX19WSURFT0NPUkU0X18gLURHUkFQSElDU19YX1ZHPTEgLVVfRk9SVElGWV9TT1VSQ0UgLVdhbGwgLURIQVZFX09NWExJQiAtRFVTRV9FWFRFUk5BTF9GRk1QRUcgIC1ESEFWRV9MSUJBVkNPREVDX0FWQ09ERUNfSCAtREhBVkVfTElCQVZVVElMX01FTV9IIC1ESEFWRV9MSUJBVlVUSUxfQVZVVElMX0ggLURIQVZFX0xJQkFWRk9STUFUX0FWRk9STUFUX0ggLURIQVZFX0xJQkFWRklMVEVSX0FWRklMVEVSX0ggLURPTVggLURPTVhfU0tJUDY0QklUCiAgCiArRkZNUEVHX0VYVFJBX0NGTEFHUz89LW1mcHU9dmZwIC1tZmxvYXQtYWJpPSQoRkxPQVQpIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnVjdHVyZS1zaXplLWJvdW5kYXJ5PTMyIC1tbm8tc2NoZWQtcHJvbG9nCkBAIC0yNSwxMyArMjUsMTMgQEAKICBXT1JLPSQoUFdEKQogIAogIC5QSE9OWSA6IGFsbAotQEAgLTIxLDcgKzIzLDggQEAgY29uZmlndXJlOgorQEAgLTIwLDcgKzIyLDggQEAgY29uZmlndXJlOgogIAlDRkxBR1M9IiQoQ0ZMQUdTKSAke0lOQ0xVREVTfSIgXAogIAlMREZMQUdTPSIiIFwKICAgIC4vY29uZmlndXJlIFwKLS0JCQktLWV4dHJhLWNmbGFncz0iLW1mcHU9dmZwIC1tZmxvYXQtYWJpPSQoRkxPQVQpIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnVjdHVyZS1zaXplLWJvdW5kYXJ5PTMyIC1tbm8tc2NoZWQtcHJvbG9nIiBcCistCQkJLS1leHRyYS1jZmxhZ3M9Ii1tZnB1PXZmcCAtbWZsb2F0LWFiaT1oYXJkIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnVjdHVyZS1zaXplLWJvdW5kYXJ5PTMyIC1tbm8tc2NoZWQtcHJvbG9nIiBcCiArCQkJLS1leHRyYS1jZmxhZ3M9IiQoRkZNUEVHX0VYVFJBX0NGTEFHUykiIFwKICsJCQktLWV4dHJhLWxkZmxhZ3M9IiQoRkZNUEVHX0VYVFJBX0xERkxBR1MpIiBcCi0gCQkJLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCiAgCQkJLS1lbmFibGUtc2hhcmVkIFwKICAJCQktLWRpc2FibGUtc3RhdGljIFwKKyAJCQktLWFyY2g9YXJtIFwKZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNS1Eb24tdC1yZXF1aXJlLWludGVybmV0LWNvbm5lY3Rpb24tZHVyaW5nLWJ1aWxkLnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2gKaW5kZXggNGY1NmFkMi4uZjZhYmQ3YiAxMDA2NDQKLS0tIGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2gKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA1LURvbi10LXJlcXVpcmUtaW50ZXJuZXQtY29ubmVjdGlvbi1kdXJpbmctYnVpbGQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk3Y2I5NDA1ZjI4MWY1NGQ0MDgzZjMxMjZkNDQxYzhiNDRlYWZiODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDgxZDFmOGJjMTAyYjIzYmRmYTYzYTAxZjI1MmYzZTRjNzRhZTdkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgogRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDE5OjE0OjIwICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHJlcXVpcmUgaW50ZXJuZXQgY29ubmVjdGlvbiBkdXJpbmcgYnVpbGQKQEAgLTExLDE2ICsxMSwxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgogVXBzdHJlYW0tc3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKIC0tLQogIE1ha2VmaWxlICAgICAgICB8IDYgKystLS0tCiAgTWFrZWZpbGUuZmZtcGVnIHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNjA1MDFiMS4uNjQ3MWYwZiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTc5LDE0ICs3OSwxMiBAQCBmZm1wZWc6CitJbmRleDogZ2l0L01ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUKKysrKyBnaXQvTWFrZWZpbGUKK0BAIC04MSwxNyArODEsMTQgQEAgZmZtcGVnOgogIAltYWtlIC1mIE1ha2VmaWxlLmZmbXBlZwogIAltYWtlIC1mIE1ha2VmaWxlLmZmbXBlZyBpbnN0YWxsCiAgCkBAIC0zNiwxMyArMzcsMTQgQEAKIC0JY3Agb214cGxheWVyLjEgJChESVNUKS91c3Ivc2hhcmUvbWFuL21hbjEKICAJY3AgLVAgZmZtcGVnX2NvbXBpbGVkL3Vzci9saWIvKi5zbyogJChESVNUKS91c3IvbGliL29teHBsYXllci8KIC0JdGFyIC1jemYgb214cGxheWVyLWRpc3QudGFyLmd6ICQoRElTVCkKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotKwl0YXIgLWN6ZiBvbXhwbGF5ZXItZGlzdC50YXIuZ3ogJChESVNUKQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmZmbXBlZyBiL01ha2VmaWxlLmZmbXBlZwotaW5kZXggMjJkNDk1Yy4uODY1MTcyNCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmZmbXBlZwotKysrIGIvTWFrZWZpbGUuZmZtcGVnCi1AQCAtNiw3ICs2LDcgQEAgRkZNUEVHX0VYVFJBX0NGTEFHUz89LW1mcHU9dmZwIC1tZmxvYXQtYWJpPSQoRkxPQVQpIC1tbm8tYXBjcy1zdGFjay1jaGVjayAtbXN0cnUKKyAKKyBpbnN0YWxsOgorIAljcCAtciAkKERJU1QpLyogLworSW5kZXg6IGdpdC9NYWtlZmlsZS5mZm1wZWcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9NYWtlZmlsZS5mZm1wZWcKKysrKyBnaXQvTWFrZWZpbGUuZmZtcGVnCitAQCAtNSw3ICs1LDcgQEAgRkZNUEVHX0VYVFJBX0NGTEFHUz89LW1mcHU9dmZwIC1tZmxvYXQtYQogIFdPUks9JChQV0QpCiAgCiAgLlBIT05ZIDogYWxsCkBAIC01MSw2ICs1MywzIEBACiAgCiAgLlBIT05ZIDogY29weQogIGNvcHk6Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNi1QcmV2ZW50LWZmbXBlZy1jb25maWd1cmUtY29tcGlsZS1yYWNlLWNvbmRpdGlvbi5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvMDAwNi1QcmV2ZW50LWZmbXBlZy1jb25maWd1cmUtY29tcGlsZS1yYWNlLWNvbmRpdGlvbi5wYXRjaAppbmRleCAzZmFjMmQxLi44OTBhZGRlIDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyLzAwMDYtUHJldmVudC1mZm1wZWctY29uZmlndXJlLWNvbXBpbGUtcmFjZS1jb25kaXRpb24ucGF0Y2gKKysrIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci8wMDA2LVByZXZlbnQtZmZtcGVnLWNvbmZpZ3VyZS1jb21waWxlLXJhY2UtY29uZGl0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0YTEzNDE5ZTM4MDViNTQxZmM1OGU1N2YxZjI3YzRhMzg4NjA5ZWY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmNTcwYjk5ODVmZjJkNTdkMjFjMWU2NGVkMDhjNDNiNmQ4OWZkMGIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KIERhdGU6IFRodSwgNyBTZXAgMjAxNyAyMDowMjoxNSArMDAwMAogU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGZmbXBlZyBjb25maWd1cmUvY29tcGlsZSByYWNlIGNvbmRpdGlvbgpAQCAtOCwxNSArOCwxNiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEJhcmtlciA8cGJhcmtlckB0b2dhbmxhYnMuY29tPgogVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCisKIC0tLQogIE1ha2VmaWxlLmZmbXBlZyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5mZm1wZWcgYi9NYWtlZmlsZS5mZm1wZWcKLWluZGV4IDg2NTE3MjQuLjYxOWM0OWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5mZm1wZWcKLSsrKyBiL01ha2VmaWxlLmZmbXBlZwotQEAgLTYsNyArNiw3IEBAIEZGTVBFR19FWFRSQV9DRkxBR1M/PS1tZnB1PXZmcCAtbWZsb2F0LWFiaT0kKEZMT0FUKSAtbW5vLWFwY3Mtc3RhY2stY2hlY2sgLW1zdHJ1CitJbmRleDogZ2l0L01ha2VmaWxlLmZmbXBlZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmZmbXBlZworKysrIGdpdC9NYWtlZmlsZS5mZm1wZWcKK0BAIC01LDcgKzUsNyBAQCBGRk1QRUdfRVhUUkFfQ0ZMQUdTPz0tbWZwdT12ZnAgLW1mbG9hdC1hCiAgV09SSz0kKFBXRCkKICAKICAuUEhPTlkgOiBhbGwKQEAgLTI1LDE1ICsyNiwxMiBAQAogIAogIC5QSE9OWSA6IGNvcHkKICBjb3B5OgotQEAgLTE0LDcgKzE0LDcgQEAgY29weToKK0BAIC0xMyw3ICsxMyw3IEBAIGNvcHk6CiAgCSQoSE9TVCktc3RyaXAgKi5zbyoKICAKICAuUEhPTlkgOiBjb21waWxlCiAtY29tcGlsZTogCiArY29tcGlsZTogY29uZmlndXJlCi0gCSskKE1BS0UpIC1DIGZmbXBlZworIAkrJChNQUtFKSAtaiQoc2hlbGwgbnByb2MpIC1DIGZmbXBlZwogIAogIC5QSE9OWSA6IGNvbmZpZ3VyZQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyL2Nyb3NzLWNyb21waWxlLWZmbXBlZy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvY3Jvc3MtY3JvbXBpbGUtZmZtcGVnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZWQ3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyL2Nyb3NzLWNyb21waWxlLWZmbXBlZy5wYXRjaApAQCAtMCwwICsxLDEyIEBACitJbmRleDogZ2l0L01ha2VmaWxlLmZmbXBlZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL01ha2VmaWxlLmZmbXBlZworKysrIGdpdC9NYWtlZmlsZS5mZm1wZWcKK0BAIC0yMiw2ICsyMiw3IEBAIGNvbmZpZ3VyZToKKyAJQ0ZMQUdTPSIkKENGTEFHUykgJHtJTkNMVURFU30iIFwKKyAJTERGTEFHUz0iIiBcCisgICAuL2NvbmZpZ3VyZSBcCisrCQkJLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCisgCQkJLS1sZD0iJHtDQ0xEfSIgXAorIAkJCS0tY2M9IiR7Q0N9IiBcCisgCQkJLS1jeHg9IiR7Q1hYfSIgXApkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci9maXgtdGFyLWNvbW1hbmQtd2l0aC1ESVNULnBhdGNoIGIvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllci9maXgtdGFyLWNvbW1hbmQtd2l0aC1ESVNULnBhdGNoCmluZGV4IGFiNDBlNDAuLjcwODU5YWEgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvZml4LXRhci1jb21tYW5kLXdpdGgtRElTVC5wYXRjaAorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyL2ZpeC10YXItY29tbWFuZC13aXRoLURJU1QucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDIzYTk3ZWZkZTJhZWYxNzEzMTIwMDBmNzg1OWVmNGM1NzNjZTJhZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CitEYXRlOiBTdW4sIDE5IEphbiAyMDE0IDIwOjM1OjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG9teHBsYXllcjogVXBkYXRlIHRvIHJlbW90ZSBIRUFECisKIFJldmVydCB0aGUgdGFyIGNvbW1hbmQgY2hhbmdlIGludHJvZHVjZWQgaW46CiBodHRwczovL2dpdGh1Yi5jb20vcG9wY29ybm1peC9vbXhwbGF5ZXIvY29tbWl0LzIwMWM3Nzk3MzE1NTg2MWU2MDQ5MmU0NWQzNTQ2N2IxOWI2OWMxYzQKIApAQCAtOCwxNCArMTMsMjAgQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIFNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KIAorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKIEluZGV4OiBnaXQvTWFrZWZpbGUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBnaXQub3JpZy9NYWtlZmlsZQogKysrIGdpdC9NYWtlZmlsZQotQEAgLTcxLDQgKzcxLDQgQEAgZGlzdDogb214cGxheWVyLmJpbgotIAljcCBDT1BZSU5HICQoRElTVCkvdXNyL3NoYXJlL2RvYy8KLSAJY3AgUkVBRE1FLm1kICQoRElTVCkvdXNyL3NoYXJlL2RvYy9SRUFETUUKK0BAIC05MSw3ICs5MSw3IEBAIGRpc3Q6IG9teHBsYXllci5iaW4gb214cGxheWVyLjEKKyAJY3AgUkVBRE1FLm1kICQoRElTVCkvdXNyL3NoYXJlL2RvYy9vbXhwbGF5ZXIvUkVBRE1FCisgCWNwIG9teHBsYXllci4xICQoRElTVCkvdXNyL3NoYXJlL21hbi9tYW4xCiAgCWNwIC1QIGZmbXBlZ19jb21waWxlZC91c3IvbGliLyouc28qICQoRElTVCkvdXNyL2xpYi9vbXhwbGF5ZXIvCiAtCWNkICQoRElTVCk7IHRhciAtY3pmIC4uLyQoRElTVCkudGd6ICoKICsJdGFyIC1jemYgb214cGxheWVyLWRpc3QudGFyLmd6ICQoRElTVCkKLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorIAorIGluc3RhbGw6CisgCWNwIC1yICQoRElTVCkvKiAvCmRpZmYgLS1naXQgYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyL3VzZS1uYXRpdmUtcGtnLWNvbmZpZy5wYXRjaCBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvdXNlLW5hdGl2ZS1wa2ctY29uZmlnLnBhdGNoCmluZGV4IGVkODE5OTkuLmU1ODA0NzAgMTAwNjQ0Ci0tLSBhL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvdXNlLW5hdGl2ZS1wa2ctY29uZmlnLnBhdGNoCisrKyBiL21ldGEtcmFzcGJlcnJ5cGkvcmVjaXBlcy1tdWx0aW1lZGlhL29teHBsYXllci9vbXhwbGF5ZXIvdXNlLW5hdGl2ZS1wa2ctY29uZmlnLnBhdGNoCkBAIC0xLDE2ICsxLDI1IEBACitGcm9tIGRhNmMyNGEyYTg3YjhjZjk2OTIwMTdlMzJiZTI1ZDMwYzBjYzdlZjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CitEYXRlOiBUdWUsIDEwIEZlYiAyMDE1IDAwOjUyOjE4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG9teHBsYXllcjogQnVtcCBTUkNSRVYKKwogRm9yY2UgdGhlIHBrZy1jb25maWcgbmF0aXZlIHRvb2wuIFN0cmFuZ2VseSBmZm1wZWcgcHJlcGVuZHMgY3Jvc3NfcHJlZml4CiB0byB0aGUgZGVmYXVsdCB2YWx1ZSB3aGljaCBvYnZpb3VzbHkgaXMgd3JvbmcuCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KIAorLS0tCisgTWFrZWZpbGUuZmZtcGVnIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKIEluZGV4OiBnaXQvTWFrZWZpbGUuZmZtcGVnCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuZmZtcGVnCiArKysgZ2l0L01ha2VmaWxlLmZmbXBlZwotQEAgLTI0NSw3ICsyNDUsOCBAQCBjb25maWd1cmU6CitAQCAtMjQyLDcgKzI0Miw4IEBAIGNvbmZpZ3VyZToKICAJCQktLWRpc2FibGUtZGVjb2Rlcj1pZGYgXAorIAkJCS0tZGlzYWJsZS1kZWNvZGVyPWhldmMgXAogIAkJCS0tZW5hYmxlLWRlY29kZXI9b3B1cyBcCi0gCQkJLS1jcm9zcy1wcmVmaXg9JChIT1NUKS0gXAogLQkJCS0tZGlzYWJsZS1zdHJpcHBpbmcKICsJCQktLWRpc2FibGUtc3RyaXBwaW5nIFwKICsJCQktLXBrZy1jb25maWc9cGtnLWNvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1yYXNwYmVycnlwaS9yZWNpcGVzLW11bHRpbWVkaWEvb214cGxheWVyL29teHBsYXllcl9naXQuYmIgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgppbmRleCAxZGY0MWE1Li5hYWQyZmVkIDEwMDY0NAotLS0gYS9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgorKysgYi9tZXRhLXJhc3BiZXJyeXBpL3JlY2lwZXMtbXVsdGltZWRpYS9vbXhwbGF5ZXIvb214cGxheWVyX2dpdC5iYgpAQCAtNywxMCArNywxMSBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgogCi1ERVBFTkRTID0gImxpYnBjcmUgbGliYXYgdmlydHVhbC9lZ2wgYm9vc3QgZnJlZXR5cGUgZGJ1cyBvcGVuc3NsIGxpYnNzaCBsaWJvbXhpbCBjb3JldXRpbHMtbmF0aXZlIGN1cmwtbmF0aXZlIgorREVQRU5EUyA9ICJsaWJwY3JlIGxpYmF2IHZpcnR1YWwvZWdsIGJvb3N0IGZyZWV0eXBlIGRidXMgb3BlbnNzbCBsaWJzc2ggbGlib214aWwgY29yZXV0aWxzLW5hdGl2ZSBjdXJsLW5hdGl2ZSB1c2VybGFuZCIKKwogUFIgPSAicjQiCiAKLVNSQ1JFVl9kZWZhdWx0ID0gImI4ZmY1OWRjY2Q5MzA3ZjEwZGFkNzFiZWMyNTI1YTk1YmQ2YzYwM2IiCitTUkNSRVZfZGVmYXVsdCA9ICJiNGJiZWY4ZmFjNWU4YzJkZGFmYTg5NWY5ODQ1NmJhNzE1YjM5YzZiIgogCiAjIG9teHBsYXllciBidWlsZHMgaXRzIG93biBjb3B5IG9mIGZmbXBlZyBmcm9tIHNvdXJjZSBpbnN0ZWFkIG9mIHVzaW5nIHRoZQogIyBzeXN0ZW0ncyBmZm1wZWcgbGlicmFyeS4gVGhpcyBpc24ndCBpZGVhbCBidXQgaXQncyBvayBmb3Igbm93LiBXZSBkbyBob3dldmVyCkBAIC0xOCwxMiArMTksMTEgQEAKICMgZmV0Y2hpbmcgdGhlIGxhdGVzdCBjb21taXQgb24gYSByZWxlYXNlIGJyYW5jaCAod2hpY2ggaXMgd2hhdCB0aGUgY2hlY2tvdXQgam9iCiAjIGluIE1ha2VmaWxlLmZmbXBlZyBpbiB0aGUgb214cGxheWVyIHNvdXJjZSB0cmVlIGRvZXMpLgogIwotIyBUaGlzIFNSQ1JFViBjb3JyZXNwb25kcyB0byB0aGUgdjMuMS4xMCByZWxlYXNlIG9mIGZmbXBlZy4KLVNSQ1JFVl9mZm1wZWcgPSAiYWZhMzRjYjM2ZWRjYTBmZjgwOWI3ZTU4NDc0YmJjZTEyMjcxZWNiYSIKKyMgVGhpcyBTUkNSRVYgY29ycmVzcG9uZHMgdG8gdGhlIHY0LjAuMyByZWxlYXNlIG9mIGZmbXBlZy4KK1NSQ1JFVl9mZm1wZWcgPSAiZmNiZDExN2RmMzA3N2JhZDQ5NWU5OWUyMGYwMWNmOTM3MzdiY2U3NiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3BvcGNvcm5taXgvb214cGxheWVyLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGdpdDovL3NvdXJjZS5mZm1wZWcub3JnL2ZmbXBlZzticmFuY2g9cmVsZWFzZS8zLjE7cHJvdG9jb2w9Z2l0O2RlcHRoPTE7bmFtZT1mZm1wZWc7ZGVzdHN1ZmZpeD1naXQvZmZtcGVnIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLU1ha2VmaWxlLmluY2x1ZGUtd2hpY2gtaW5jbHVkZXMtaGFyZGNvZGVkLnBhdGNoIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnO2JyYW5jaD1yZWxlYXNlLzQuMDtwcm90b2NvbD1naXQ7ZGVwdGg9MTtuYW1lPWZmbXBlZztkZXN0c3VmZml4PWdpdC9mZm1wZWcgXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1MaWJyYXJpZXMtYW5kLWhlYWRlcnMtZnJvbS1mZm1wZWctYXJlLWluc3RhbGxlZC1pbi11LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtUmVtb3ZlLXN0cmlwLXN0ZXAtaW4tTWFrZWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtRkZNUEVHX0VYVFJBX0NGTEFHUy1hbmQtRkZNUEVHX0VYVFJBX0xERkxBR1MucGF0Y2ggXApAQCAtMzEsMTIgKzMxLDIzIEBACiAgICAgICAgICAgIGZpbGU6Ly91c2UtbmF0aXZlLXBrZy1jb25maWcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1Eb24tdC1yZXF1aXJlLWludGVybmV0LWNvbm5lY3Rpb24tZHVyaW5nLWJ1aWxkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDYtUHJldmVudC1mZm1wZWctY29uZmlndXJlLWNvbXBpbGUtcmFjZS1jb25kaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TcGVjaWZ5LWNjLWN4eC1hbmQtbGQtdmFyaWFibGVzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY3JvbXBpbGUtZmZtcGVnLnBhdGNoIFwKICAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ2YzRncmFwaGljcyIsICIgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtdmM0LWRyaXZlci5wYXRjaCAiLCAiIiwgZCl9IgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1DT01QQVRJQkxFX01BQ0hJTkUgPz0gIm51bGwiCi1DT01QQVRJQkxFX01BQ0hJTkVfcnBpX2FhcmNoNjQgPSAibnVsbCIKLUNPTVBBVElCTEVfTUFDSElORV9ycGkgPSAiKC4qKSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJecnBpJCIKKworZGVmIGNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KKyAgICByZXR1cm4gJ2dlbmVyaWMnCisKK2V4cG9ydCBDUFUgPSAiJHtAY3B1KGQpfSIKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwogCkBAIC01NSwxMSArNjYsMTMgQEAKIGV4cG9ydCBGRk1QRUdfRVhUUkFfTERGTEFHUyAgPSAiJHtUVU5FX0NDQVJHU30gJHtUT09MQ0hBSU5fT1BUSU9OU30iCiAKICMgTmVlZGVkIGluIHRvcCBNYWtlZmlsZQorCiBleHBvcnQgTERGTEFHUyA9ICItTCR7U30vZmZtcGVnX2NvbXBpbGVkL3Vzci9saWIgXAogICAgICAgICAgICAgICAgICAgLUwke1NUQUdJTkdfRElSX0hPU1R9L2xpYiBcCiAgICAgICAgICAgICAgICAgICAtTCR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2xpYiBcCiAgICAgICAgICAgICAgICAgICIKLWV4cG9ydCBJTkNMVURFUyA9ICItaXN5c3RlbSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2luY2x1ZGUvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMgXAorZXhwb3J0IElOQ0xVREVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInZjNGdyYXBoaWNzIiwgIiAtRF9fR0JNX18iLCAiIiwgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAtaXN5c3RlbSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2luY2x1ZGUvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMgXAogICAgICAgICAgICAgICAgICAgIC1pc3lzdGVtJHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvaW5jbHVkZS9mcmVldHlwZTIgXAogICAgICAgICAgICAgICAgICAgIC1pc3lzdGVtJHtTVEFHSU5HX0RJUl9IT1NUfS91c3IvaW5jbHVkZS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4IFwKICAgICAgICAgICAgICAgICAgICAtaXN5c3RlbSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyL2luY2x1ZGUvZGJ1cy0xLjAgXApAQCAtOTAsNCArMTAzLDQgQEAKIAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vb214cGxheWVyLyouc28iCiAKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHByb2NwcyIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHByb2NwcyB1c2VybGFuZCIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvUkVBRE1FIGIvbWV0YS1zZWN1cml0eS9SRUFETUUKaW5kZXggZWY4MGYyYi4uZTIzODI3MSAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9SRUFETUUKKysrIGIvbWV0YS1zZWN1cml0eS9SRUFETUUKQEAgLTQ4LDIwOSArNDgsNiBAQAogICAgIC9wYXRoL3RvL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZyBcCiAgICAgL3BhdGgvdG8vbGF5ZXIvbWV0YS1zZWN1cml0eSBcCiAKLUNvbnRlbnRzIGFuZCBIZWxwCi09PT09PT09PT09PT09PT09PQotCi1JbiB0aGlzIHNlY3Rpb24gdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllciBpcyBsaXN0ZWQsIGFsb25nIHdpdGggYSBzaG9ydAotaGVscCBmb3IgZWFjaCBwYWNrYWdlLgotCi0gICAgICAgICA9PSBiYXN0aWxsZSA9PQotCi0gICAgICAgIEJhc3RpbGxlICBpcyAgYSAgc3lzdGVtIGhhcmRlbmluZyAvIGxvY2tkb3duIHByb2dyYW0gd2hpY2ggZW5oYW5jZXMgdGhlCi0gICAgICAgIHNlY3VyaXR5IG9mIGEgVW5peCBob3N0LiAgSXQgY29uZmlndXJlcyBkYWVtb25zLCBzeXN0ZW0gc2V0dGluZ3MgYW5kCi0gICAgICAgIGZpcmV3YWxscyB0byBiZSBtb3JlIHNlY3VyZS4gIEl0IGNhbiBzaHV0IG9mZiB1bm5lZWRlZCBzZXJ2aWNlcwotICAgICAgICBsaWtlIHJjcCBhbmQgcmxvZ2luLCBhbmQgaGVscHMgY3JlYXRlICJjaHJvb3QgamFpbHMiIHRoYXQgaGVscCBsaW1pdCB0aGUKLSAgICAgICAgdnVsbmVyYWJpbGl0eSBvZiBjb21tb24gSW50ZXJuZXQgc2VydmljZXMgbGlrZSBXZWIgc2VydmljZXMgYW5kIEROUy4KLQotICAgICAgICB1c2FnZSA6IFRoZSBmdW5jdGlvbmFsaXR5IG9mIEJhc3RpbGxlIHdoaWNoIGlzIGF2YWlsYWJsZSBpcwotICAgICAgICAgICAgICAgIHJlc3RyaWN0ZWQgdG8gYSBwdXJlbHkgaW5mb3JtYXRpb25hbCBvbmUuIFRoZSBjb21tYW5kOgotICAgICAgICAgICAgICAgIGJhc3RpbGxlIC1jIC0tb3MgWW9jdG8KLSAgICAgICAgICAgICAgICB3aWxsIGNhdXNlIGEgc2VyaWVzIG9mIG1lbnVzIGNvbnRhaW5pbmcgc2VjdXJpdHkgcXVlc3Rpb25zCi0gICAgICAgICAgICAgICAgYWJvdXQgdGhlIHN5c3RlbSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuIEZvciBlYWNoCi0gICAgICAgICAgICAgICAgcXVlc3Rpb24sIGEgZGVmYXVsdCByZXNwb25zZSwgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgZmlsZSB3aGljaCBpcyBpbnN0YWxsZWQgd2l0aCBCYXN0aWxsZSwgd2lsbCBiZSBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICBUaGUgdXNlciBtYXkgc2VsZWN0IGFuIGFsdGVybmF0ZSByZXNwb25zZS4gV2hlbiB0aGUgdXNlcgotICAgICAgICAgICAgICAgIGhhcyBjb21wbGV0ZWQgdGhlIHNlcXVlbmNlIG9mIG1lbnVzIEJhc3RpbGxlIHNhdmVzIHRoZQotICAgICAgICAgICAgICAgIHJlc3BvbnNlcyB0byB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgICAgICAgICAgICAgVGhlIGNvbW1hbmQ6Ci0gICAgICAgICAgICAgICAgYmFzdGlsbGUgLWwgbGlzdHMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBCYXN0aWxsZQotICAgICAgICAgICAgICAgIGlzIGFibGUgdG8gbG9jYXRlLgotCi0gICAgICAgICAgICAgICAgVGhlIG90aGVyIGZ1bmN0aW9uYWxpdHkgd2hpY2ggQmFzdGlsbGUgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZQotICAgICAgICAgICAgICAgIGlzIGFjdHVhbGx5IHVuYXZhaWxhYmxlLiBUaGlzIGlzIG5vdCBkdWUgdG8gZXJyb3JzIGluIHBva3kKLSAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb24uIFRoZSBCYXN0aWxsZQotICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBTaWduaWZpY2FudCBtb2RpZmljYXRpb25zCi0gICAgICAgICAgICAgICAgd291bGQgYmUgcmVxdWlyZWQgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBtYWtlIHVzZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBmdW5jdGlvbmFsaXR5IHdoaWNoIGlzIGN1cnJlbnRseSB1bmF2YWlsYWJsZS4KLQotCi0gICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgQmFzdGlsbGUgY2FuIGJlIGZvdW5kIGluIHRoZSBwYWNrYWdlCi0gICAgICAgIFJFQURNRSBmaWxlIGFuZCBvdGhlciBkb2N1bWVudGF0aW9uLgotCi0gICAgICAgIEFsdGVybmF0aXZlcyB0byBCYXN0aWxsZSBpbmNsdWRlIGJ1Y2stc2VjdXJpdHkgYW5kIGNoZWNrc2VjdXJpdHksCi0gICAgICAgIGRlc2NyaWJlZCBlbHNld2hlcmUgaW4gdGhpcyBmaWxlLgotCi0KLSAgICAgICAgPT0gcmVkaGF0LXNlY3VyaXR5ID09Ci0KLSAgICAgICAgU29tZXRpbWVzIHlvdSB3YW50IHRvIGNoZWNrIGRpZmZlcmVudCBhc3BlY3RzIG9mIGEgZGlzdHJpYnV0aW9uIGZvciBzZWN1cml0eSBwcm9ibGVtcy4KLSAgICAgICAgVGhpcyBjYW4gYmUgYW55dGhpbmcgZnJvbSBmaWxlIHBlcm1pc3Npb25zIHRvIGNvcnJlY3RuZXNzIG9mIGNvZGUuIFRoaXMgaXMgYSBjb2xsZWN0aW9uIG9mIHRob3NlIHRvb2xzLgotICAgICAgICBEZXBlbmRpbmcgb24gd2hhdCBpbmZvcm1hdGlvbiB0aGUgdG9vbCBoYXMgdG8gYWNjZXNzLCBpdCBtYXkgbmVlZCB0byBiZSBydW4gYXMgcm9vdC4KLQotICAgICAgICAtIHJwbS1jaGtzZWMuc2ggOiBUaGlzIHdpbGwgdGFrZSBhbiBycG0gbmFtZSBhcyBpbnB1dCBhbmQgdmVyaWZ5IGVhY2ggRUxGIGZpbGUgdG8gc2VlIGlmIGl0cyBjb21waWxlZCB3aXRoIHRoZSBpbnRlbmRlZCBmbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgICB0byBtb3N0IGVmZmVjdGl2ZWx5IHVzZSBQSUUgYW5kIFJFTFJPLiBHcmVlbiBpcyBnb29kLCBPcmFuZ2UgY291bGQgdXNlIHdvcmsgYnV0IGlzIGFjY2VwdGFibGUsIGFuZCBSZWQgbmVlZHMgZml4aW5nLgotICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBoYXMgYSBtb2RlIC0tYWxsIHRoYXQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgdXNpbmcgcnBtIC1xYSBhbmQgZmVlZGluZyB0aGUgcGFja2FnZXMgdG8gaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgbW9kZSBpdCB3aWxsIG9ubHkgZ2l2ZSBhIHN1bW1hcnkgcmVzdWx0IGZvciB0aGUgcGFja2FnZS4gVG8gZmluZCB3aGljaCBmaWxlcyBkb24ndCBjb21wbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlLXJ1biB1c2luZyBqdXN0IHRoZSBwYWNrYWdlIG5hbWUuCi0KLQkJISEhIFdBUk5JTkcgISEhIC0gaW4gb3JkZXIgdG8gdXNlIHRoaXMgc2NyaXB0IHlvdSBuZWVkIHRvIGFkZCB0byB5b3VyIGNvbmYvbG9jYWwuY29uZiBmaWxlIHRoZSBmb2xsb3dpbmcgbGluZXM6Ci0JCQkJCQlJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiIiAgLSBzcGVjaWZ5aW5nIHRoZSBleHRyYSBzcGFjZSBvZiB0aGUgaW1hZ2UKLQkJCQkJCUlNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlIG1hbmFnZW1lbnQiIC0gZm9yIHRoZSBjb3JyZWN0IG91dHB1dCBvZiBycG0gLXFhCi0KLSAgICAgICAgLSBmaW5kLW5vZHJvcC1ncm91cHMuc2ggOiBUaGlzIHdpbGwgc2NhbiBhIHdob2xlIGZpbGUgc3lzdGVtIHRvIHNlZSBpZiBhIHByb2dyYW0gbWFrZXMgY2FsbHMgdG8gY2hhbmdlIFVJRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBHSUQgd2l0aG91dCBhbHNvIGNhbGxpbmcgc2V0Z3JvdXBzIG9yIGluaXRncm91cHMuCi0KLSAgICAgICAgLSBycG0tZHJvcC1ncm91cHMuc2ggOiBTYW1lIGFzIGFib3ZlLCBidXQgdGFrZXMgYW4gcnBtIG5hbWUgaW5zdGVhZC4KLQotICAgICAgICAtIGZpbmQtY2hyb290LnNoIDogVGhpcyBzY3JpcHQgc2NhbnMgdGhlIHdob2xlIGZpbGUgc3lzdGVtIGxvb2tpbmcgZm9yIEVMRiBmaWxlcyB0aGF0IGNhbGxzIGNocm9vdCgyKSB0aGF0IGFsc28gZG8gbm90IGluY2x1ZGUgYSBjYWxsIHRvIGNoZGlyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvZ3JhbXMgdGhhdCBmYWlsIHRvIGRvIHRoaXMgZG8gbm90IGhhdmUgdGhlIGN3ZCBpbnNpZGUgdGhlIGNocm9vdC4gVGhpcyBtZWFucyB0aGUgYXBwIGNhbiBlc2NhcGUgdGhlIHByb3RlY3Rpb24gdGhhdCB3YXMgaW50ZW5kZWQuCi0KLSAgICAgICAgLSBmaW5kLWNocm9vdC1weS5zaCA6IFRoaXMgdGVzdCBpcyBsaWtlIHRoZSBvbmUgYWJvdmUgZXhjZXB0IGl0IGV4YW1pbmVzIHB5dGhvbiBzY3JpcHRzIGZvciB0aGUgc2FtZSBwcm9ibGVtLgotCi0gICAgICAgIC0gZmluZC1leGVjc3RhY2suc2ggOiBUaGlzIHByb2dyYW0gc2NhbnMgdGhlIHdob2xlIGZpbGUgc3lzdGVtIGZvciBFTEYgcHJvZ3JhbXMgdGhhdCBoYXZlIG1hcmtlZCB0aGUgc3RhY2sgYXMgYmVpbmcgZXhlY3V0YWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWVhbnMgdGhhdCBpZiB0aGUgcHJvZ3JhbSBoYXMgYW5vdGhlciB2dWxuZXJhYmxpdHkgc3VjaCBhcyBzdGFjayBidWZmZXIgb3ZlcmZsb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgY29kZSB0aGUgYXR0YWNrZXIgcGxhY2VzIHRoZXJlIGlzIGV4ZWN1dGFibGUuIEFueSBwcm9ncmFtIGZvdW5kIG11c3QgYmUgZml4ZWQuCi0KLSAgICAgICAgLSBmaW5kLWhpZGRlbi1leGVjLnNoIDogVGhpcyBwcm9ncmFtIHNjYW5zIHRoZSB3aG9sZSBmaWxlIHN5c3RlbSBsb29raW5nIGZvciBleGN1dGFibGVzIHRoYXQgYXJlIGhpZGRlbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW55dGhpbmcgZm91bmQgbXVzdCBiZSBpbnZlc3RpZ2F0ZWQgc2luY2UgaXRzIGhpZ2hseSB1bnVzdWFsIGZvciBleGVjdXRhYmxlcyB0byBiZSBoaWRkZW4uCi0KLSAgICAgICAgLSBmaW5kLXNoNGVycm9ycy5zaCA6IFRoaXMgcHJvZ3JhbSBzY2FucyB0aGUgd2hvbGUgZmlsZSBzeXN0ZW0gbG9va2luZyBmb3Igc2hlbGwgc2NyaXB0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IHRoZW4gZG9lcyBhIHNoIC1uIG9uIHRoZSBzY3JpcHQgd2hpY2ggY2F1c2VzIGJhc2ggdG8gcGFyc2UgdGhlIGZpbGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgbWlzdGFrZXMuCi0KLSAgICAgICAgLSBzZWxpbnV4LWNoZWNrLWRldmljZXMuc2ggOiBUaGlzIHNjcmlwdCBjaGVja3MgdGhlIC9kZXYgZGlyZWN0b3J5IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IGRldmljZXMgdGhhdCBhcmUgbm90IGNvcnJlY3RseSBsYWJlbGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueXRoaW5nIGZvdW5kIGJ5IHRoaXMgdGVzdCBzaG91bGQgYmUgcmVwb3J0ZWQgc28gdGhhdCBzZWxpbnV4IHBvbGljeSBjYW4gYmUgZml4ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0ZXN0IGlzIHZlcnkgaGFyZHdhcmUgc3BlY2lmaWMsIHNvIHRvIGJlIGVmZmVjdGl2ZSBhIGxvdCBvZiBwZW9wbGUgd2l0aCBkaWZmZXJlbnQgaGFyZHdhcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcnVuIHRoaXMgdGVzdCBlYWNoIHVwc3RyZWFtIGtlcm5lbCB2ZXJzaW9uIHJlbGVhc2UuCi0KLSAgICAgICAgLSBzZWxpbnV4LWxzLXVuY29uZmluZWQuc2ggOiAgVGhpcyBzY3JpcHQgc2NhbnMgdGhlIHJ1bm5pbmcgcHJvY2Vzc2VzIGFuZCBsb29rcyBmb3IgYW55dGhpbmcgbGFiZWxlZCB3aXRoIGluaXRyY190IG9yIGluZXRkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBib3RoIG1lYW4gdGhhdCB0aGVyZSBhcmUgZGFlbW9ucyB0aGF0IGRvIG5vdCBoYXZlIHBvbGljeSBhbmQgYXJlIHRoZXJlZm9yZSBydW5uaW5nIHVuY29uZmluZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHNob3VsZCBiZSByZXBvcnRlZCBhcyBTRSBMaW51eCBwb2xpY3kgcHJvYmxlbXMuIEJlY2F1c2UgaXQgY2hlY2tzIGN1cnJlbnRseSBydW5uaW5nIGRhZW1vbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtb3JlIHlvdSBoYXZlIHJ1bm5pbmcsIHRoZSBiZXR0ZXIgdGhlIHRlc3QgaXMuCi0KLSAgICAgICAgLSBmaW5kLXNoNHRtcC5zaCA6IFRoaXMgc2NyaXB0IHNjYW5zIHRoZSB3aG9sZSBmaWxlc3lzdGVtIHRvIGNoZWNrIGlmIHNoZWxsIHNjcmlwdHMgYXJlIHVzaW5nIHdlbGwga25vd24gdG1wIGZpbGUgbmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RlYWQgb2Ygb2JzY3VyZSBvbmVzIGNyZWF0ZWQgYnkgc29tZXRoaW5nIGxpa2UgbWt0ZW1wLgotCi0gICAgICAgIC0gZmluZC1lbGY0dG1wLnNoIDogVGhpcyBzY3JpcHQgc2NhbnMgdGhlIHdob2xlIGZpbGUgc3lzdGVtIGZvciBFTEYgZmlsZXMgdXNpbmcgL3RtcC4gV2hlbiBpdCBmaW5kcyB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0IGFsc28gbG9va3MgdG8gc2VlIGlmIGFueSBvZiB0aGUga25vd24gZ29vZCByYW5kb20gbmFtZSBnZW5lcmF0b3IgZnVuY3Rpb25zIGlzIGNhbGxlZCBieSBsb29raW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIHN5bWJvbCB0YWJsZS4gSWYgbm90LCBpdCB3aWxsIG91dHB1dCB0aGUgc3RyaW5nLgotCi0gICAgICAgIC0gbGliLWJpbi1jaGVjay5zaCA6IFRoaXMgd2lsbCBjaGVjayBhbGwgaW5zdGFsbGVkIGxpYnJhcnkgcGFja2FnZXMgdG8gc2VlIGlmIGFuIGFwcGxpY2F0aW9uIGlzIGFsc28gcGFydCBvZiB0aGUgcGFja2FnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlbGF0aW9uc2hpcCB0byBzZWN1cml0eSBpcyB0aGF0IHRoZSBTSEEyNTYgaGFzaCBjaGVjayB3aWxsIGZhaWwgaWYgYSAzMiBiaXQgdmVyc2lvbiBvdmVyd3JpdGVzIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB0aGUgbGVzcyBiaW5hcmllcyBvbiBhIHN5c3RlbSwgdGhlIG1vcmUgc2VjdXJlIGl0IGlzIGJ5IHZpcnR1ZSBvZiByZW1vdmluZyB0aGUgY2hhbmNlIGZvciBhbiBleHBsb2l0YWJsZSBidWcuCi0KLQotICAgICAgICAgICAgICAgIHVzYWdlIDogc2ltcGx5IGludm9rZSB0aGUgc2NyaXB0IG5hbWUgaW4gdGhlIHRlcm1pbmFsLgotCi0KLSAgICAgICAgPT0gcGF4LXV0aWxzID09Ci0KLQkJKCBUaGlzIHBhY2thZ2UgY2FuIGJlIGZvdW5kIGluIG9lLWNvcmUgKQotCi0gICAgICAgIHBheC11dGlscyBpcyBhIHNtYWxsIHNldCBvZiB2YXJpb3VzIFBhWCBhd2FyZSBhbmQgcmVsYXRlZCB1dGlsaXRpZXMgZm9yCi0gICAgICAgIEVMRiBiaW5hcmllcy4KLQotICAgICAgICAtIHNjYW5lbGYgOiBXaXRoIHRoaXMgYXBwbGljYXRpb24geW91IGNhbiBwcmludCBvdXQgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIEVMRiBzdHJ1Y3R1cmUgb2YgYSBiaW5hcnkuCi0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGhlbHAgcGxlYXNlIGNvbnN1bHQgdGhlIG1hbiBwYWdlcyBvciB0aGUgcmVhZG1lIGZpbGUuCi0KLSAgICAgICAgLSBwc3BheCA6IGlzIGEgdXNlci1zcGFjZSB1dGlsaXR5IHRoYXQgc2NhbnMgdGhlIHByb2MgZGlyZWN0b3J5IGFuZCBsaXN0Ci0gICAgICAgICAgICAgICAgICBFTEYgdHlwZXMsIGFzIHdlbGwgYXMgdGhlaXIgcmVzcGVjdGl2ZSBQYVggZmxhZ3MgYW5kIGZpbGVuYW1lcyBhbmQKLSAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuIERlcGVuZGluZyBvbiBidWlsZCBvcHRpb25zLCBpdCBtYXkgYWRkaXRpb25hbHkgZGlzcGxheSB0aGUKLSAgICAgICAgICAgICAgICAgIHByb2Nlc3MgcnVubmluZyBzZXQgb2YgY2FwYWJpbGl0aWVzLgotCi0gICAgICAgIC0gc2Nhbm1hY2hvIDogaXMgYSB1c2VyLXNwYWNlIHV0aWxpdHkgdG8gcXVpY2tseSBzY2FuIGdpdmVuCi0gICAgICAgICAgICAgICAgICAgICAgTWFjaC1PcywgZGlyZWN0b3JpZXMsIG9yIGNvbW1vbiBzeXN0ZW0gcGF0aHMgZm9yIGRpZmZlcmVudCBpbmZvcm1hdGlvbi4gVGhpcwotICAgICAgICAgICAgICAgICAgICAgIG1heSBpbmNsdWRlIE1hY2gtTyB0eXBlcywgdGhlaXIgaW5zdGFsbF9uYW1lcywgZXRjLgotCi0gICAgICAgIC0gZHVtcGVsZiA6IGlzIGEgdXNlci1zcGFjZSB1dGlsaXR5IHRvIGR1bXAgYWxsIG9mIHRoZSBpbnRlcm5hbAotICAgICAgICAgICAgICAgICAgICBFTEYgc3RydWN0dXJlcyBpbnRvIHRoZSBlcXVpdmFsZW50IEMgc3RydWN0dXJlcyBmb3IgZnVuIGRlYnVnZ2luZyBhbmQvb3IKLSAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlIHB1cnBvc2VzLgotCi0KLSAgICAgICAgICAgICAgICB1c2FnZSA6IHNpbXBseSBpbnZva2UgdGhlIHNjcmlwdCBuYW1lIGluIHRoZSB0ZXJtaW5hbC4KLQotCi0gICAgICAgID09IGJ1Y2stc2VjdXJpdHkgPT0KLQotICAgICAgICBCdWNrLVNlY3VyaXR5IGlzIGEgc2VjdXJpdHkgc2Nhbm5lciBmb3IgRGViaWFuIGFuZCBVYnVudHUgTGludXguIEl0IHJ1bnMgYSBjb3VwbGUgb2YgaW1wb3J0YW50IGNoZWNrcyBhbmQgaGVscHMgeW91IHRvIGhhcmRlbiB5b3VyIExpbnV4Ci0gICAgICAgIHN5c3RlbS4gVGhpcyBlbmFibGVzIHlvdSB0byBxdWlja2x5IG92ZXJ2aWV3IHRoZSBzZWN1cml0eSBzdGF0dXMgb2YgeW91ciBMaW51eCBzeXN0ZW0uCi0KLSAgICAgICAgICAgICAgICB1c2FnZSA6CSEhISBiZWZvcmUgc3RhcnRpbmcgdG8gdXNlIHRoaXMgdG9vbCBwbGVhc2UgcnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogISEhCi0KLQkJCQkJCWV4cG9ydCBHUEdfVFRZPWB0dHlgCi0KLQkJCQkJCVRoaXMgY29tbWFuZCBpcyBuZWVkZWQgZm9yIHRoZSB1c2FnZSBvZiB0aGUgY29tYW5kIC0tbWFrZS1jaGVja3N1bSwgd2hpY2ggY3JlYXRlcwotCQkJCQkJYSBjaGVja3N1bSBmb3IgdGhlIGZpbGVzIGluIHRoZSBzeXN0ZW0uCi0KLQkJCQkJCXN3aXRjaCB0byBkaXJlY3RvcnkgL3Vzci9sb2NhbC9idWNrLXNlY3VyaXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIHJ1bm5pbmcgdGhlIHNjcmlwdCwgeW91IHNob3VsZCBjaGVjayB0aGUgYWN0aXZhdGVkIGNoZWNrcyBpbiBjb25mL2J1Y2stc2VjdXJpdHkuY29uZiBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgYWx0ZXJpbmcgdGhlIGNoYW5nZXMsIHNhdmUgdGhlIGZpbGUgYW5kIHNpbXBseSBydW4gOgotCi0gICAgICAgICAgICAgICAgICAgICAgICAuL2J1Y2stc2VjdXJpdHkKLQotICAgICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjaG9vc2UgYmV0d2VlbiBkaWZmZXJlbnQgb3V0cHV0cyA6IDEsIDIoZGVmYXVsdCkgb3IgMy4KLQotICAgICAgICAgICAgICAgICAgICAgICAgTW9yZSBkZXRhaWxlZCB1c2FnZSBjYW4gYmUgZm91bmQgdHlwaW5nIC4vYnVjay1zZWN1cml0eSAtLWhlbHAKLQotCi0gICAgICAgID09IGxpYnNlY2NvbXAgPT0KLQotICAgICAgICBUaGUgbGlic2VjY29tcCBsaWJyYXJ5IHByb3ZpZGVzIGFuZCBlYXN5IHRvIHVzZSwgcGxhdGZvcm0gaW5kZXBlbmRlbnQsIGludGVyZmFjZSB0byB0aGUgTGludXggS2VybmVsJ3Mgc3lzY2FsbCBmaWx0ZXJpbmcgbWVjaGFuaXNtOiBzZWNjb21wLgotICAgICAgICBUaGUgbGlic2VjY29tcCBBUEkgaXMgZGVzaWduZWQgdG8gYWJzdHJhY3QgYXdheSB0aGUgdW5kZXJseWluZyBCUEYgYmFzZWQgc3lzY2FsbCBmaWx0ZXIgbGFuZ3VhZ2UgYW5kIHByZXNlbnQgYSBtb3JlIGNvbnZlbnRpb25hbAotICAgICAgICBmdW5jdGlvbi1jYWxsIGJhc2VkIGZpbHRlcmluZyBpbnRlcmZhY2UgdGhhdCBzaG91bGQgYmUgZmFtaWxpYXIgdG8sIGFuZCBlYXNpbHkgYWRvcHRlZCBieSBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzLgotCi0gICAgICAgICAgICAgICAgdXNhZ2UgOiBNb3JlIGRldGFpbGVkIHVzYWdlIGNhbiBiZSBmb3VuZCBpbiB0aGUgbWFuIHBhZ2VzIGFuZCBSRUFETUUgZmlsZSBvZiB0aGUgcGFja2FnZS4KLQotCi0KLSAgICAgICAgPT0gY2hlY2tzZWN1cml0eSA9PQotCi0gICAgICAgIGNoZWNrc2VjdXJpdHkgaXMgYSBzaW1wbGUgcGFja2FnZSB3aGljaCB3aWxsIHNjYW4geW91ciBzeXN0ZW0gZm9yIHNldmVyYWwgc2ltcGxlIHNlY3VyaXR5IGhvbGVzLgotICAgICAgICBJdCB1c2VzIGEgc2ltcGxlIGNvbGxlY3Rpb24gb2YgcGx1Z2lucywgYWxsIG9mIHdoaWNoIGFyZSBzaGVsbCBzY3JpcHRzIHdoaWNoIGFyZSBjb25maWd1cmVkIGJ5IGVudmlyb25tZW50YWwgdmFyaWFibGVzLgotCi0KLSAgICAgICAgICAgICAgICB1c2FnZSA6IFRvIHN0YXJ0IGNoZWNrc2VjdXJpdHkgc2ltcGx5IHdyaXRlIGluIHRoZSB0ZXJtaW5hbCA6Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrc2VjdXJpdHkKLQotICAgICAgICBNb3JlIGRldGFpbGVkIHVzYWdlIGNhbiBiZSBmb3VuZCBpbiB0aGUgbWFuIHBhZ2VzIGFuZCBSRUFETUUgZmlsZSBvZiB0aGUgcGFja2FnZS4KLQotCi0gICAgICAgID09IG5pa3RvID09Ci0KLSAgICAgICAgTmlrdG8gaXMgYW4gT3BlbiBTb3VyY2UgKEdQTCkgd2ViIHNlcnZlciBzY2FubmVyIHdoaWNoIHBlcmZvcm1zIGNvbXByZWhlbnNpdmUgdGVzdHMgYWdhaW5zdCB3ZWIgc2VydmVycyBmb3IgbXVsdGlwbGUgaXRlbXMsCi0gICAgICAgIGluY2x1ZGluZyBvdmVyIDY1MDAgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGZpbGVzL0NHSXMsIGNoZWNrcyBmb3Igb3V0ZGF0ZWQgdmVyc2lvbnMgb2Ygb3ZlciAxMjUwIHNlcnZlcnMsIGFuZCB2ZXJzaW9uIHNwZWNpZmljCi0gICAgICAgIHByb2JsZW1zIG9uIG92ZXIgMjcwIHNlcnZlcnMuIEl0IGFsc28gY2hlY2tzIGZvciBzZXJ2ZXIgY29uZmlndXJhdGlvbiBpdGVtcyBzdWNoIGFzIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSBpbmRleCBmaWxlcywKLSAgICAgICAgSFRUUCBzZXJ2ZXIgb3B0aW9ucywgYW5kIHdpbGwgYXR0ZW1wdCB0byBpZGVudGlmeSBpbnN0YWxsZWQgd2ViIHNlcnZlcnMgYW5kIHNvZnR3YXJlLgotCi0gICAgICAgICAgICAgICAgdXNhZ2UgOiBUbyBzdGFydCBuaWt0byBzaW1wbHkgd3JpdGUgaW4gdGhlIHRlcm1pbmFsIDoKLQotICAgICAgICAgICAgICAgICAgICAgICAgbmlrdG8KLQotICAgICAgICBNb3JlIGRldGFpbGVkIHVzYWdlIGNhbiBiZSBmb3VuZCBpbiB0aGUgbWFuIHBhZ2VzIGFuZCBSRUFETUUgZmlsZSBvZiB0aGUgcGFja2FnZS4KLQotCi0gICAgICAgID09IG5tYXAgPT0KLQotICAgICAgICBObWFwICgiTmV0d29yayBNYXBwZXIiKSBpcyBhIGZyZWUgYW5kIG9wZW4gc291cmNlIChsaWNlbnNlKSB1dGlsaXR5IGZvciBuZXR3b3JrIGRpc2NvdmVyeSBhbmQgc2VjdXJpdHkgYXVkaXRpbmcuCi0gICAgICAgIE1hbnkgc3lzdGVtcyBhbmQgbmV0d29yayBhZG1pbmlzdHJhdG9ycyBhbHNvIGZpbmQgaXQgdXNlZnVsIGZvciB0YXNrcyBzdWNoIGFzIG5ldHdvcmsgaW52ZW50b3J5LAotICAgICAgICBtYW5hZ2luZyBzZXJ2aWNlIHVwZ3JhZGUgc2NoZWR1bGVzLCBhbmQgbW9uaXRvcmluZyBob3N0IG9yIHNlcnZpY2UgdXB0aW1lLgotCi0gICAgICAgICAgICAgICAgdXNhZ2UgOiBUbyBzdGFydCBuaWt0byBzaW1wbHkgd3JpdGUgaW4gdGhlIHRlcm1pbmFsIDoKLQotICAgICAgICAgICAgICAgICAgICAgICAgbm1hcAotCi0gICAgICAgIE1vcmUgZGV0YWlsZWQgdXNhZ2UgY2FuIGJlIGZvdW5kIGluIHRoZSBtYW4gcGFnZXMgYW5kIFJFQURNRSBmaWxlIG9mIHRoZSBwYWNrYWdlLgogCiBNYWludGVuYW5jZQogLS0tLS0tLS0tLS0KQEAgLTI2MCw4ICs1Nyw4IEBACiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKICdnaXQgc2VuZC1lbWFpbCAtMSAtLXRvIHlvY3RvQHlvY3RvcHJvamVjdC5vcmcgLS1zdWJqZWN0LXByZWZpeD1tZXRhLXNlY3VyaXR5XVtQQVRDSCcKIAotTWFpbnRhaW5lcnM6ICAgIFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLSAgICAgICAgICAgICAgICBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KK01haW50YWluZXJzOiAgICBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorICAgICAgICAgICAgICAgIFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KIAogCiBMaWNlbnNlCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtc2VjdXJpdHkvY29uZi9sYXllci5jb25mCmluZGV4IGVmYzQyNmUuLjE5ZTY0N2UgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtc2VjdXJpdHkvY29uZi9sYXllci5jb25mCkBAIC03LDggKzcsMTAgQEAKIAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJzZWN1cml0eSIKIEJCRklMRV9QQVRURVJOX3NlY3VyaXR5ID0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfc2VjdXJpdHkgPSAiNiIKK0JCRklMRV9QUklPUklUWV9zZWN1cml0eSA9ICI4IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VjdXJpdHkgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9zZWN1cml0eSA9ICJ0aHVkIgogCiBMQVlFUkRFUEVORFNfc2VjdXJpdHkgPSAiY29yZSBvcGVuZW1iZWRkZWQtbGF5ZXIgcGVybC1sYXllciBuZXR3b3JraW5nLWxheWVyIG1ldGEtcHl0aG9uIgorCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLXNlY3VyaXR5LWJ1aWxkLWltYWdlID0gIiAke1BURVNUVEVTVFNVSVRFfSIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvZG9jcy9vdmVydmlldy50eHQgYi9tZXRhLXNlY3VyaXR5L2RvY3Mvb3ZlcnZpZXcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkMzEzNWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L2RvY3Mvb3ZlcnZpZXcudHh0CkBAIC0wLDAgKzEsMTk3IEBACitNZXRhLXNlY3VyaXR5IERvY3MKKz09PT09PT09PT09PT0KKworSW4gdGhpcyBzZWN0aW9uIHRoZSBjb250ZW50cyBvZiB0aGUgbGF5ZXIgaXMgbGlzdGVkLCBhbG9uZyB3aXRoIGEgc2hvcnQKK2hlbHAgZm9yIGVhY2ggcGFja2FnZS4KKworICAgICAgICAgPT0gYmFzdGlsbGUgPT0KKworICAgICAgICBCYXN0aWxsZSAgaXMgIGEgIHN5c3RlbSBoYXJkZW5pbmcgLyBsb2NrZG93biBwcm9ncmFtIHdoaWNoIGVuaGFuY2VzIHRoZQorICAgICAgICBzZWN1cml0eSBvZiBhIFVuaXggaG9zdC4gIEl0IGNvbmZpZ3VyZXMgZGFlbW9ucywgc3lzdGVtIHNldHRpbmdzIGFuZAorICAgICAgICBmaXJld2FsbHMgdG8gYmUgbW9yZSBzZWN1cmUuICBJdCBjYW4gc2h1dCBvZmYgdW5uZWVkZWQgc2VydmljZXMKKyAgICAgICAgbGlrZSByY3AgYW5kIHJsb2dpbiwgYW5kIGhlbHBzIGNyZWF0ZSAiY2hyb290IGphaWxzIiB0aGF0IGhlbHAgbGltaXQgdGhlCisgICAgICAgIHZ1bG5lcmFiaWxpdHkgb2YgY29tbW9uIEludGVybmV0IHNlcnZpY2VzIGxpa2UgV2ViIHNlcnZpY2VzIGFuZCBETlMuCisKKyAgICAgICAgdXNhZ2UgOiBUaGUgZnVuY3Rpb25hbGl0eSBvZiBCYXN0aWxsZSB3aGljaCBpcyBhdmFpbGFibGUgaXMKKyAgICAgICAgICAgICAgICByZXN0cmljdGVkIHRvIGEgcHVyZWx5IGluZm9ybWF0aW9uYWwgb25lLiBUaGUgY29tbWFuZDoKKyAgICAgICAgICAgICAgICBiYXN0aWxsZSAtYyAtLW9zIFlvY3RvCisgICAgICAgICAgICAgICAgd2lsbCBjYXVzZSBhIHNlcmllcyBvZiBtZW51cyBjb250YWluaW5nIHNlY3VyaXR5IHF1ZXN0aW9ucworICAgICAgICAgICAgICAgIGFib3V0IHRoZSBzeXN0ZW0gdG8gYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBGb3IgZWFjaAorICAgICAgICAgICAgICAgIHF1ZXN0aW9uLCBhIGRlZmF1bHQgcmVzcG9uc2UsIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIGZpbGUgd2hpY2ggaXMgaW5zdGFsbGVkIHdpdGggQmFzdGlsbGUsIHdpbGwgYmUgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgVGhlIHVzZXIgbWF5IHNlbGVjdCBhbiBhbHRlcm5hdGUgcmVzcG9uc2UuIFdoZW4gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICBoYXMgY29tcGxldGVkIHRoZSBzZXF1ZW5jZSBvZiBtZW51cyBCYXN0aWxsZSBzYXZlcyB0aGUKKyAgICAgICAgICAgICAgICByZXNwb25zZXMgdG8gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworICAgICAgICAgICAgICAgIFRoZSBjb21tYW5kOgorICAgICAgICAgICAgICAgIGJhc3RpbGxlIC1sIGxpc3RzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgQmFzdGlsbGUKKyAgICAgICAgICAgICAgICBpcyBhYmxlIHRvIGxvY2F0ZS4KKworICAgICAgICAgICAgICAgIFRoZSBvdGhlciBmdW5jdGlvbmFsaXR5IHdoaWNoIEJhc3RpbGxlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUKKyAgICAgICAgICAgICAgICBpcyBhY3R1YWxseSB1bmF2YWlsYWJsZS4gVGhpcyBpcyBub3QgZHVlIHRvIGVycm9ycyBpbiBwb2t5CisgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIG9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uLiBUaGUgQmFzdGlsbGUKKyAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gU2lnbmlmaWNhbnQgbW9kaWZpY2F0aW9ucworICAgICAgICAgICAgICAgIHdvdWxkIGJlIHJlcXVpcmVkIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gbWFrZSB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSB3aGljaCBpcyBjdXJyZW50bHkgdW5hdmFpbGFibGUuCisKKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IEJhc3RpbGxlIGNhbiBiZSBmb3VuZCBpbiB0aGUgcGFja2FnZQorICAgICAgICBSRUFETUUgZmlsZSBhbmQgb3RoZXIgZG9jdW1lbnRhdGlvbi4KKworICAgICAgICBBbHRlcm5hdGl2ZXMgdG8gQmFzdGlsbGUgaW5jbHVkZSBidWNrLXNlY3VyaXR5IGFuZCBjaGVja3NlY3VyaXR5LAorICAgICAgICBkZXNjcmliZWQgZWxzZXdoZXJlIGluIHRoaXMgZmlsZS4KKworCisgICAgICAgID09IHJlZGhhdC1zZWN1cml0eSA9PQorCisgICAgICAgIFNvbWV0aW1lcyB5b3Ugd2FudCB0byBjaGVjayBkaWZmZXJlbnQgYXNwZWN0cyBvZiBhIGRpc3RyaWJ1dGlvbiBmb3Igc2VjdXJpdHkgcHJvYmxlbXMuCisgICAgICAgIFRoaXMgY2FuIGJlIGFueXRoaW5nIGZyb20gZmlsZSBwZXJtaXNzaW9ucyB0byBjb3JyZWN0bmVzcyBvZiBjb2RlLiBUaGlzIGlzIGEgY29sbGVjdGlvbiBvZiB0aG9zZSB0b29scy4KKyAgICAgICAgRGVwZW5kaW5nIG9uIHdoYXQgaW5mb3JtYXRpb24gdGhlIHRvb2wgaGFzIHRvIGFjY2VzcywgaXQgbWF5IG5lZWQgdG8gYmUgcnVuIGFzIHJvb3QuCisKKyAgICAgICAgLSBycG0tY2hrc2VjLnNoIDogVGhpcyB3aWxsIHRha2UgYW4gcnBtIG5hbWUgYXMgaW5wdXQgYW5kIHZlcmlmeSBlYWNoIEVMRiBmaWxlIHRvIHNlZSBpZiBpdHMgY29tcGlsZWQgd2l0aCB0aGUgaW50ZW5kZWQgZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbW9zdCBlZmZlY3RpdmVseSB1c2UgUElFIGFuZCBSRUxSTy4gR3JlZW4gaXMgZ29vZCwgT3JhbmdlIGNvdWxkIHVzZSB3b3JrIGJ1dCBpcyBhY2NlcHRhYmxlLCBhbmQgUmVkIG5lZWRzIGZpeGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaGFzIGEgbW9kZSAtLWFsbCB0aGF0IGlzIHRoZSBlcXVpdmFsZW50IG9mIHVzaW5nIHJwbSAtcWEgYW5kIGZlZWRpbmcgdGhlIHBhY2thZ2VzIHRvIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIG1vZGUgaXQgd2lsbCBvbmx5IGdpdmUgYSBzdW1tYXJ5IHJlc3VsdCBmb3IgdGhlIHBhY2thZ2UuIFRvIGZpbmQgd2hpY2ggZmlsZXMgZG9uJ3QgY29tcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICByZS1ydW4gdXNpbmcganVzdCB0aGUgcGFja2FnZSBuYW1lLgorCisJCSEhISBXQVJOSU5HICEhISAtIGluIG9yZGVyIHRvIHVzZSB0aGlzIHNjcmlwdCB5b3UgbmVlZCB0byBhZGQgdG8geW91ciBjb25mL2xvY2FsLmNvbmYgZmlsZSB0aGUgZm9sbG93aW5nIGxpbmVzOgorCQkJCQkJSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIiIgIC0gc3BlY2lmeWluZyB0aGUgZXh0cmEgc3BhY2Ugb2YgdGhlIGltYWdlCisJCQkJCQlJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZSBtYW5hZ2VtZW50IiAtIGZvciB0aGUgY29ycmVjdCBvdXRwdXQgb2YgcnBtIC1xYQorCisgICAgICAgIC0gZmluZC1ub2Ryb3AtZ3JvdXBzLnNoIDogVGhpcyB3aWxsIHNjYW4gYSB3aG9sZSBmaWxlIHN5c3RlbSB0byBzZWUgaWYgYSBwcm9ncmFtIG1ha2VzIGNhbGxzIHRvIGNoYW5nZSBVSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgR0lEIHdpdGhvdXQgYWxzbyBjYWxsaW5nIHNldGdyb3VwcyBvciBpbml0Z3JvdXBzLgorCisgICAgICAgIC0gcnBtLWRyb3AtZ3JvdXBzLnNoIDogU2FtZSBhcyBhYm92ZSwgYnV0IHRha2VzIGFuIHJwbSBuYW1lIGluc3RlYWQuCisKKyAgICAgICAgLSBmaW5kLWNocm9vdC5zaCA6IFRoaXMgc2NyaXB0IHNjYW5zIHRoZSB3aG9sZSBmaWxlIHN5c3RlbSBsb29raW5nIGZvciBFTEYgZmlsZXMgdGhhdCBjYWxscyBjaHJvb3QoMikgdGhhdCBhbHNvIGRvIG5vdCBpbmNsdWRlIGEgY2FsbCB0byBjaGRpci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyYW1zIHRoYXQgZmFpbCB0byBkbyB0aGlzIGRvIG5vdCBoYXZlIHRoZSBjd2QgaW5zaWRlIHRoZSBjaHJvb3QuIFRoaXMgbWVhbnMgdGhlIGFwcCBjYW4gZXNjYXBlIHRoZSBwcm90ZWN0aW9uIHRoYXQgd2FzIGludGVuZGVkLgorCisgICAgICAgIC0gZmluZC1jaHJvb3QtcHkuc2ggOiBUaGlzIHRlc3QgaXMgbGlrZSB0aGUgb25lIGFib3ZlIGV4Y2VwdCBpdCBleGFtaW5lcyBweXRob24gc2NyaXB0cyBmb3IgdGhlIHNhbWUgcHJvYmxlbS4KKworICAgICAgICAtIGZpbmQtZXhlY3N0YWNrLnNoIDogVGhpcyBwcm9ncmFtIHNjYW5zIHRoZSB3aG9sZSBmaWxlIHN5c3RlbSBmb3IgRUxGIHByb2dyYW1zIHRoYXQgaGF2ZSBtYXJrZWQgdGhlIHN0YWNrIGFzIGJlaW5nIGV4ZWN1dGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHByb2dyYW0gaGFzIGFub3RoZXIgdnVsbmVyYWJsaXR5IHN1Y2ggYXMgc3RhY2sgYnVmZmVyIG92ZXJmbG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGNvZGUgdGhlIGF0dGFja2VyIHBsYWNlcyB0aGVyZSBpcyBleGVjdXRhYmxlLiBBbnkgcHJvZ3JhbSBmb3VuZCBtdXN0IGJlIGZpeGVkLgorCisgICAgICAgIC0gZmluZC1oaWRkZW4tZXhlYy5zaCA6IFRoaXMgcHJvZ3JhbSBzY2FucyB0aGUgd2hvbGUgZmlsZSBzeXN0ZW0gbG9va2luZyBmb3IgZXhjdXRhYmxlcyB0aGF0IGFyZSBoaWRkZW4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueXRoaW5nIGZvdW5kIG11c3QgYmUgaW52ZXN0aWdhdGVkIHNpbmNlIGl0cyBoaWdobHkgdW51c3VhbCBmb3IgZXhlY3V0YWJsZXMgdG8gYmUgaGlkZGVuLgorCisgICAgICAgIC0gZmluZC1zaDRlcnJvcnMuc2ggOiBUaGlzIHByb2dyYW0gc2NhbnMgdGhlIHdob2xlIGZpbGUgc3lzdGVtIGxvb2tpbmcgZm9yIHNoZWxsIHNjcmlwdHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCB0aGVuIGRvZXMgYSBzaCAtbiBvbiB0aGUgc2NyaXB0IHdoaWNoIGNhdXNlcyBiYXNoIHRvIHBhcnNlIHRoZSBmaWxlIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG1pc3Rha2VzLgorCisgICAgICAgIC0gc2VsaW51eC1jaGVjay1kZXZpY2VzLnNoIDogVGhpcyBzY3JpcHQgY2hlY2tzIHRoZSAvZGV2IGRpcmVjdG9yeSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBkZXZpY2VzIHRoYXQgYXJlIG5vdCBjb3JyZWN0bHkgbGFiZWxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnl0aGluZyBmb3VuZCBieSB0aGlzIHRlc3Qgc2hvdWxkIGJlIHJlcG9ydGVkIHNvIHRoYXQgc2VsaW51eCBwb2xpY3kgY2FuIGJlIGZpeGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdGVzdCBpcyB2ZXJ5IGhhcmR3YXJlIHNwZWNpZmljLCBzbyB0byBiZSBlZmZlY3RpdmUgYSBsb3Qgb2YgcGVvcGxlIHdpdGggZGlmZmVyZW50IGhhcmR3YXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIHJ1biB0aGlzIHRlc3QgZWFjaCB1cHN0cmVhbSBrZXJuZWwgdmVyc2lvbiByZWxlYXNlLgorCisgICAgICAgIC0gc2VsaW51eC1scy11bmNvbmZpbmVkLnNoIDogIFRoaXMgc2NyaXB0IHNjYW5zIHRoZSBydW5uaW5nIHByb2Nlc3NlcyBhbmQgbG9va3MgZm9yIGFueXRoaW5nIGxhYmVsZWQgd2l0aCBpbml0cmNfdCBvciBpbmV0ZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYm90aCBtZWFuIHRoYXQgdGhlcmUgYXJlIGRhZW1vbnMgdGhhdCBkbyBub3QgaGF2ZSBwb2xpY3kgYW5kIGFyZSB0aGVyZWZvcmUgcnVubmluZyB1bmNvbmZpbmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBzaG91bGQgYmUgcmVwb3J0ZWQgYXMgU0UgTGludXggcG9saWN5IHByb2JsZW1zLiBCZWNhdXNlIGl0IGNoZWNrcyBjdXJyZW50bHkgcnVubmluZyBkYWVtb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbW9yZSB5b3UgaGF2ZSBydW5uaW5nLCB0aGUgYmV0dGVyIHRoZSB0ZXN0IGlzLgorCisgICAgICAgIC0gZmluZC1zaDR0bXAuc2ggOiBUaGlzIHNjcmlwdCBzY2FucyB0aGUgd2hvbGUgZmlsZXN5c3RlbSB0byBjaGVjayBpZiBzaGVsbCBzY3JpcHRzIGFyZSB1c2luZyB3ZWxsIGtub3duIHRtcCBmaWxlIG5hbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIG9ic2N1cmUgb25lcyBjcmVhdGVkIGJ5IHNvbWV0aGluZyBsaWtlIG1rdGVtcC4KKworICAgICAgICAtIGZpbmQtZWxmNHRtcC5zaCA6IFRoaXMgc2NyaXB0IHNjYW5zIHRoZSB3aG9sZSBmaWxlIHN5c3RlbSBmb3IgRUxGIGZpbGVzIHVzaW5nIC90bXAuIFdoZW4gaXQgZmluZHMgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdCBhbHNvIGxvb2tzIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGtub3duIGdvb2QgcmFuZG9tIG5hbWUgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBpcyBjYWxsZWQgYnkgbG9va2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBzeW1ib2wgdGFibGUuIElmIG5vdCwgaXQgd2lsbCBvdXRwdXQgdGhlIHN0cmluZy4KKworICAgICAgICAtIGxpYi1iaW4tY2hlY2suc2ggOiBUaGlzIHdpbGwgY2hlY2sgYWxsIGluc3RhbGxlZCBsaWJyYXJ5IHBhY2thZ2VzIHRvIHNlZSBpZiBhbiBhcHBsaWNhdGlvbiBpcyBhbHNvIHBhcnQgb2YgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWxhdGlvbnNoaXAgdG8gc2VjdXJpdHkgaXMgdGhhdCB0aGUgU0hBMjU2IGhhc2ggY2hlY2sgd2lsbCBmYWlsIGlmIGEgMzIgYml0IHZlcnNpb24gb3ZlcndyaXRlcyBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxzbywgdGhlIGxlc3MgYmluYXJpZXMgb24gYSBzeXN0ZW0sIHRoZSBtb3JlIHNlY3VyZSBpdCBpcyBieSB2aXJ0dWUgb2YgcmVtb3ZpbmcgdGhlIGNoYW5jZSBmb3IgYW4gZXhwbG9pdGFibGUgYnVnLgorCisKKyAgICAgICAgICAgICAgICB1c2FnZSA6IHNpbXBseSBpbnZva2UgdGhlIHNjcmlwdCBuYW1lIGluIHRoZSB0ZXJtaW5hbC4KKworCisgICAgICAgID09IHBheC11dGlscyA9PQorCisJCSggVGhpcyBwYWNrYWdlIGNhbiBiZSBmb3VuZCBpbiBvZS1jb3JlICkKKworICAgICAgICBwYXgtdXRpbHMgaXMgYSBzbWFsbCBzZXQgb2YgdmFyaW91cyBQYVggYXdhcmUgYW5kIHJlbGF0ZWQgdXRpbGl0aWVzIGZvcgorICAgICAgICBFTEYgYmluYXJpZXMuCisKKyAgICAgICAgLSBzY2FuZWxmIDogV2l0aCB0aGlzIGFwcGxpY2F0aW9uIHlvdSBjYW4gcHJpbnQgb3V0IGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBFTEYgc3RydWN0dXJlIG9mIGEgYmluYXJ5LgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBoZWxwIHBsZWFzZSBjb25zdWx0IHRoZSBtYW4gcGFnZXMgb3IgdGhlIHJlYWRtZSBmaWxlLgorCisgICAgICAgIC0gcHNwYXggOiBpcyBhIHVzZXItc3BhY2UgdXRpbGl0eSB0aGF0IHNjYW5zIHRoZSBwcm9jIGRpcmVjdG9yeSBhbmQgbGlzdAorICAgICAgICAgICAgICAgICAgRUxGIHR5cGVzLCBhcyB3ZWxsIGFzIHRoZWlyIHJlc3BlY3RpdmUgUGFYIGZsYWdzIGFuZCBmaWxlbmFtZXMgYW5kCisgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLiBEZXBlbmRpbmcgb24gYnVpbGQgb3B0aW9ucywgaXQgbWF5IGFkZGl0aW9uYWx5IGRpc3BsYXkgdGhlCisgICAgICAgICAgICAgICAgICBwcm9jZXNzIHJ1bm5pbmcgc2V0IG9mIGNhcGFiaWxpdGllcy4KKworICAgICAgICAtIHNjYW5tYWNobyA6IGlzIGEgdXNlci1zcGFjZSB1dGlsaXR5IHRvIHF1aWNrbHkgc2NhbiBnaXZlbgorICAgICAgICAgICAgICAgICAgICAgIE1hY2gtT3MsIGRpcmVjdG9yaWVzLCBvciBjb21tb24gc3lzdGVtIHBhdGhzIGZvciBkaWZmZXJlbnQgaW5mb3JtYXRpb24uIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICBtYXkgaW5jbHVkZSBNYWNoLU8gdHlwZXMsIHRoZWlyIGluc3RhbGxfbmFtZXMsIGV0Yy4KKworICAgICAgICAtIGR1bXBlbGYgOiBpcyBhIHVzZXItc3BhY2UgdXRpbGl0eSB0byBkdW1wIGFsbCBvZiB0aGUgaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgRUxGIHN0cnVjdHVyZXMgaW50byB0aGUgZXF1aXZhbGVudCBDIHN0cnVjdHVyZXMgZm9yIGZ1biBkZWJ1Z2dpbmcgYW5kL29yCisgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSBwdXJwb3Nlcy4KKworCisgICAgICAgICAgICAgICAgdXNhZ2UgOiBzaW1wbHkgaW52b2tlIHRoZSBzY3JpcHQgbmFtZSBpbiB0aGUgdGVybWluYWwuCisKKworICAgICAgICA9PSBidWNrLXNlY3VyaXR5ID09CisKKyAgICAgICAgQnVjay1TZWN1cml0eSBpcyBhIHNlY3VyaXR5IHNjYW5uZXIgZm9yIERlYmlhbiBhbmQgVWJ1bnR1IExpbnV4LiBJdCBydW5zIGEgY291cGxlIG9mIGltcG9ydGFudCBjaGVja3MgYW5kIGhlbHBzIHlvdSB0byBoYXJkZW4geW91ciBMaW51eAorICAgICAgICBzeXN0ZW0uIFRoaXMgZW5hYmxlcyB5b3UgdG8gcXVpY2tseSBvdmVydmlldyB0aGUgc2VjdXJpdHkgc3RhdHVzIG9mIHlvdXIgTGludXggc3lzdGVtLgorCisgICAgICAgICAgICAgICAgdXNhZ2UgOgkhISEgYmVmb3JlIHN0YXJ0aW5nIHRvIHVzZSB0aGlzIHRvb2wgcGxlYXNlIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6ICEhIQorCisJCQkJCQlleHBvcnQgR1BHX1RUWT1gdHR5YAorCisJCQkJCQlUaGlzIGNvbW1hbmQgaXMgbmVlZGVkIGZvciB0aGUgdXNhZ2Ugb2YgdGhlIGNvbWFuZCAtLW1ha2UtY2hlY2tzdW0sIHdoaWNoIGNyZWF0ZXMKKwkJCQkJCWEgY2hlY2tzdW0gZm9yIHRoZSBmaWxlcyBpbiB0aGUgc3lzdGVtLgorCisJCQkJCQlzd2l0Y2ggdG8gZGlyZWN0b3J5IC91c3IvbG9jYWwvYnVjay1zZWN1cml0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBydW5uaW5nIHRoZSBzY3JpcHQsIHlvdSBzaG91bGQgY2hlY2sgdGhlIGFjdGl2YXRlZCBjaGVja3MgaW4gY29uZi9idWNrLXNlY3VyaXR5LmNvbmYgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIGFsdGVyaW5nIHRoZSBjaGFuZ2VzLCBzYXZlIHRoZSBmaWxlIGFuZCBzaW1wbHkgcnVuIDoKKworICAgICAgICAgICAgICAgICAgICAgICAgLi9idWNrLXNlY3VyaXR5CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gY2hvb3NlIGJldHdlZW4gZGlmZmVyZW50IG91dHB1dHMgOiAxLCAyKGRlZmF1bHQpIG9yIDMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgIE1vcmUgZGV0YWlsZWQgdXNhZ2UgY2FuIGJlIGZvdW5kIHR5cGluZyAuL2J1Y2stc2VjdXJpdHkgLS1oZWxwCisKKworICAgICAgICA9PSBsaWJzZWNjb21wID09CisKKyAgICAgICAgVGhlIGxpYnNlY2NvbXAgbGlicmFyeSBwcm92aWRlcyBhbmQgZWFzeSB0byB1c2UsIHBsYXRmb3JtIGluZGVwZW5kZW50LCBpbnRlcmZhY2UgdG8gdGhlIExpbnV4IEtlcm5lbCdzIHN5c2NhbGwgZmlsdGVyaW5nIG1lY2hhbmlzbTogc2VjY29tcC4KKyAgICAgICAgVGhlIGxpYnNlY2NvbXAgQVBJIGlzIGRlc2lnbmVkIHRvIGFic3RyYWN0IGF3YXkgdGhlIHVuZGVybHlpbmcgQlBGIGJhc2VkIHN5c2NhbGwgZmlsdGVyIGxhbmd1YWdlIGFuZCBwcmVzZW50IGEgbW9yZSBjb252ZW50aW9uYWwKKyAgICAgICAgZnVuY3Rpb24tY2FsbCBiYXNlZCBmaWx0ZXJpbmcgaW50ZXJmYWNlIHRoYXQgc2hvdWxkIGJlIGZhbWlsaWFyIHRvLCBhbmQgZWFzaWx5IGFkb3B0ZWQgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycy4KKworICAgICAgICAgICAgICAgIHVzYWdlIDogTW9yZSBkZXRhaWxlZCB1c2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIG1hbiBwYWdlcyBhbmQgUkVBRE1FIGZpbGUgb2YgdGhlIHBhY2thZ2UuCisKKworCisgICAgICAgID09IGNoZWNrc2VjdXJpdHkgPT0KKworICAgICAgICBjaGVja3NlY3VyaXR5IGlzIGEgc2ltcGxlIHBhY2thZ2Ugd2hpY2ggd2lsbCBzY2FuIHlvdXIgc3lzdGVtIGZvciBzZXZlcmFsIHNpbXBsZSBzZWN1cml0eSBob2xlcy4KKyAgICAgICAgSXQgdXNlcyBhIHNpbXBsZSBjb2xsZWN0aW9uIG9mIHBsdWdpbnMsIGFsbCBvZiB3aGljaCBhcmUgc2hlbGwgc2NyaXB0cyB3aGljaCBhcmUgY29uZmlndXJlZCBieSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcy4KKworCisgICAgICAgICAgICAgICAgdXNhZ2UgOiBUbyBzdGFydCBjaGVja3NlY3VyaXR5IHNpbXBseSB3cml0ZSBpbiB0aGUgdGVybWluYWwgOgorCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja3NlY3VyaXR5CisKKyAgICAgICAgTW9yZSBkZXRhaWxlZCB1c2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIG1hbiBwYWdlcyBhbmQgUkVBRE1FIGZpbGUgb2YgdGhlIHBhY2thZ2UuCisKKworICAgICAgICA9PSBuaWt0byA9PQorCisgICAgICAgIE5pa3RvIGlzIGFuIE9wZW4gU291cmNlIChHUEwpIHdlYiBzZXJ2ZXIgc2Nhbm5lciB3aGljaCBwZXJmb3JtcyBjb21wcmVoZW5zaXZlIHRlc3RzIGFnYWluc3Qgd2ViIHNlcnZlcnMgZm9yIG11bHRpcGxlIGl0ZW1zLAorICAgICAgICBpbmNsdWRpbmcgb3ZlciA2NTAwIHBvdGVudGlhbGx5IGRhbmdlcm91cyBmaWxlcy9DR0lzLCBjaGVja3MgZm9yIG91dGRhdGVkIHZlcnNpb25zIG9mIG92ZXIgMTI1MCBzZXJ2ZXJzLCBhbmQgdmVyc2lvbiBzcGVjaWZpYworICAgICAgICBwcm9ibGVtcyBvbiBvdmVyIDI3MCBzZXJ2ZXJzLiBJdCBhbHNvIGNoZWNrcyBmb3Igc2VydmVyIGNvbmZpZ3VyYXRpb24gaXRlbXMgc3VjaCBhcyB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUgaW5kZXggZmlsZXMsCisgICAgICAgIEhUVFAgc2VydmVyIG9wdGlvbnMsIGFuZCB3aWxsIGF0dGVtcHQgdG8gaWRlbnRpZnkgaW5zdGFsbGVkIHdlYiBzZXJ2ZXJzIGFuZCBzb2Z0d2FyZS4KKworICAgICAgICAgICAgICAgIHVzYWdlIDogVG8gc3RhcnQgbmlrdG8gc2ltcGx5IHdyaXRlIGluIHRoZSB0ZXJtaW5hbCA6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG5pa3RvCisKKyAgICAgICAgTW9yZSBkZXRhaWxlZCB1c2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlIG1hbiBwYWdlcyBhbmQgUkVBRE1FIGZpbGUgb2YgdGhlIHBhY2thZ2UuCisKK0xpY2Vuc2UKKz09PT09PT0KKworQWxsIG1ldGFkYXRhIGlzIE1JVCBsaWNlbnNlZCB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4gU291cmNlIGNvZGUgaW5jbHVkZWQKK2luIHRyZWUgZm9yIGluZGl2aWR1YWwgcmVjaXBlcyBpcyB1bmRlciB0aGUgTElDRU5TRSBzdGF0ZWQgaW4gZWFjaCByZWNpcGUKKyguYmIgZmlsZSkgdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9jb25mL2xheWVyLmNvbmYgYi9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9jb25mL2xheWVyLmNvbmYKaW5kZXggMzE3MTZkNi4uZmNjNWNkNiAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS1zZWN1cml0eS1jb21wbGlhbmNlL2NvbmYvbGF5ZXIuY29uZgpAQCAtNiw5ICs2LDkgQEAKIAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJzY2FubmVycy1sYXllciIKIEJCRklMRV9QQVRURVJOX3NjYW5uZXJzLWxheWVyID0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfc2Nhbm5lcnMtbGF5ZXIgPSAiNiIKK0JCRklMRV9QUklPUklUWV9zY2FubmVycy1sYXllciA9ICIxMCIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3NjYW5uZXJzLWxheWVyID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfc2Nhbm5lcnMtbGF5ZXIgPSAidGh1ZCIKIAogTEFZRVJERVBFTkRTX3NjYW5uZXJzLWxheWVyID0gIiBcCiAgICAgY29yZSBcCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLWF1ZGl0b3JzL2x5bmlzL2x5bmlzXzIuNS4xLmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1hdWRpdG9ycy9seW5pcy9seW5pc18yLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg0OTk5Yy4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLWF1ZGl0b3JzL2x5bmlzL2x5bmlzXzIuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXJtaW4gS3VzdGVyICA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLVNVTU1BUlkgPSAiTHluaXMgaXMgYSBmcmVlIGFuZCBvcGVuIHNvdXJjZSBzZWN1cml0eSBhbmQgYXVkaXRpbmcgdG9vbC4iCi1IT01FRElSID0gImh0dHBzOi8vY2lzb2Z5LmNvbS8iCi1MSUNFTlNFID0gIkdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zZWRkNjc4Mjg1NDMwNGZkMTFkYTQ5NzVhYjk3OTljMSIKLQotU1JDUkVWPSAiMWJlNTE1NGIzNWNlMTQ0ZGI0ZjM4Njg1NmRlYmU4YTA2YjQwMzg5OSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9DSVNPZnkvTHluaXMuZ2l0IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2x5bmlzCi0JaW5zdGFsbCAtbSA1NTUgJHtTfS9seW5pcyAke0R9LyR7YmluZGlyfQotCi0JaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vbHluaXMvZGIKLQlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9seW5pcy9wbHVnaW5zCi0JaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vbHluaXMvaW5jbHVkZQotCWluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L2x5bmlzL2V4dHJhcwotCi0JY3AgLXIgJHtTfS9kYi8qICR7RH0vJHtkYXRhZGlyfS9seW5pcy9kYi8uCi0JY3AgLXIgJHtTfS9wbHVnaW5zLyogICR7RH0vJHtkYXRhZGlyfS9seW5pcy9wbHVnaW5zLy4KLQljcCAtciAke1N9L2luY2x1ZGUvKiAke0R9LyR7ZGF0YWRpcn0vbHluaXMvaW5jbHVkZS8uCi0JY3AgLXIgJHtTfS9leHRyYXMvKiAgJHtEfS8ke2RhdGFkaXJ9L2x5bmlzL2V4dHJhcy8uCi0gICAgICAgIGNwICR7U30vKi5wcmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2x5bmlzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2RldmVsb3Blci5wcmYgJHtzeXNjb25mZGlyfS9kZWZhdWx0LnByZiIKLUZJTEVTXyR7UE59LWRvYyArPSAibHluaXMuOCBGQVEgUkVBRE1FIENIQU5HRUxPRy5tZCBDT05UUklCVVRJT05TLm1kIENPTlRSSUJVVE9SUy5tZCIgCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwcm9jcHMiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLWF1ZGl0b3JzL2x5bmlzL2x5bmlzXzIuNi44LmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1hdWRpdG9ycy9seW5pcy9seW5pc18yLjYuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGE0NDY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1hdWRpdG9ycy9seW5pcy9seW5pc18yLjYuOC5iYgpAQCAtMCwwICsxLDQxIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcm1pbiBLdXN0ZXIgIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMeW5pcyBpcyBhIGZyZWUgYW5kIG9wZW4gc291cmNlIHNlY3VyaXR5IGFuZCBhdWRpdGluZyB0b29sLiIKK0hPTUVESVIgPSAiaHR0cHM6Ly9jaXNvZnkuY29tLyIKK0xJQ0VOU0UgPSAiR1BMLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNlZGQ2NzgyODU0MzA0ZmQxMWRhNDk3NWFiOTc5OWMxIgorCitTUkNfVVJJID0gImh0dHBzOi8vY2lzb2Z5LmNvbS9maWxlcy8ke0JQTn0tJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTFhNTM4MDU1YmZiNjgyNzMzZWY4ZTRmZTdlYjA5MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmU0YzUxNTdhNGYyZDliYjM3ZDNmMGYxZjViZWEwM2Y5MjIzM2EyYTdkNGRmNmVkZGYyMzFhNzg0MDg3ZGZhYyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgorZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2x5bmlzCisJaW5zdGFsbCAtbSA1NTUgJHtTfS9seW5pcyAke0R9LyR7YmluZGlyfQorCisJaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vbHluaXMvZGIKKwlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfS9seW5pcy9wbHVnaW5zCisJaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vbHluaXMvaW5jbHVkZQorCWluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L2x5bmlzL2V4dHJhcworCisJY3AgLXIgJHtTfS9kYi8qICR7RH0vJHtkYXRhZGlyfS9seW5pcy9kYi8uCisJY3AgLXIgJHtTfS9wbHVnaW5zLyogICR7RH0vJHtkYXRhZGlyfS9seW5pcy9wbHVnaW5zLy4KKwljcCAtciAke1N9L2luY2x1ZGUvKiAke0R9LyR7ZGF0YWRpcn0vbHluaXMvaW5jbHVkZS8uCisJY3AgLXIgJHtTfS9leHRyYXMvKiAgJHtEfS8ke2RhdGFkaXJ9L2x5bmlzL2V4dHJhcy8uCisgICAgICAgIGNwICR7U30vKi5wcmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2x5bmlzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2RldmVsb3Blci5wcmYgJHtzeXNjb25mZGlyfS9kZWZhdWx0LnByZiIKK0ZJTEVTXyR7UE59LWRvYyArPSAibHluaXMuOCBGQVEgUkVBRE1FIENIQU5HRUxPRy5tZCBDT05UUklCVVRJT05TLm1kIENPTlRSSUJVVE9SUy5tZCIgCisKK1JERVBFTkRTXyR7UE59ICs9ICJwcm9jcHMiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLWNvcmUvb3MtcmVsZWFzZS9vcy1yZWxlYXNlLmJiYXBwZW5kIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1jb3JlL29zLXJlbGVhc2Uvb3MtcmVsZWFzZS5iYmFwcGVuZAppbmRleCBlOWZkNDRhLi42MDRiYWNiIDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLWNvcmUvb3MtcmVsZWFzZS9vcy1yZWxlYXNlLmJiYXBwZW5kCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS1zZWN1cml0eS1jb21wbGlhbmNlL3JlY2lwZXMtY29yZS9vcy1yZWxlYXNlL29zLXJlbGVhc2UuYmJhcHBlbmQKQEAgLTEsNCArMSBAQAotT1NfUkVMRUFTRV9GSUVMRFMgKz0gIkNQRV9OQU1FIgotCiBDUEVfTkFNRT0iY3BlOi9vOm9wZW5lbWJlZGRlZDpub2Rpc3RybzowIgotCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLW9wZW5zY2FwL29wZW5zY2FwLWRhZW1vbi9vcGVuc2NhcC1kYWVtb25fMC4xLjEwLmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1vcGVuc2NhcC9vcGVuc2NhcC1kYWVtb24vb3BlbnNjYXAtZGFlbW9uXzAuMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmE5MzczCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1vcGVuc2NhcC9vcGVuc2NhcC1kYWVtb24vb3BlbnNjYXAtZGFlbW9uXzAuMS4xMC5iYgpAQCAtMCwwICsxLDE4IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcm1pbiBLdXN0ZXIgIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNQVJSWSA9ICJUaGUgT3BlblNDQVAgRGFlbW9uIGlzIGEgc2VydmljZSB0aGF0IHJ1bnMgaW4gdGhlIGJhY2tncm91bmQuIgorSE9NRV9VUkwgPSAiaHR0cHM6Ly93d3cub3Blbi1zY2FwLm9yZy90b29scy9vcGVuc2NhcC1kYWVtb24vIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDBkMjU0MmI4YzQzYTNlYzJiN2Y1ZGEzMWE2OTdiODgiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitERVBFTkRTID0gInB5dGhvbjMtZGJ1cyIKKworU1JDUkVWID0gImYyNWIxNmFmYjZhYzc2MWZlYTEzMTMyZmY0MDZmYmE0Y2RmZDJiNzYiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlblNDQVAvb3BlbnNjYXAtZGFlbW9uLmdpdCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24iCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLW9wZW5zY2FwL29wZW5zY2FwLWRhZW1vbi9vcGVuc2NhcC1kYWVtb25fMC4xLjYuYmIgYi9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLW9wZW5zY2FwL29wZW5zY2FwLWRhZW1vbi9vcGVuc2NhcC1kYWVtb25fMC4xLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMDFhMTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1vcGVuc2NhcC9vcGVuc2NhcC1kYWVtb24vb3BlbnNjYXAtZGFlbW9uXzAuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXJtaW4gS3VzdGVyICA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLVNVTUFSUlkgPSAiVGhlIE9wZW5TQ0FQIERhZW1vbiBpcyBhIHNlcnZpY2UgdGhhdCBydW5zIGluIHRoZSBiYWNrZ3JvdW5kLiIKLUhPTUVfVVJMID0gImh0dHBzOi8vd3d3Lm9wZW4tc2NhcC5vcmcvdG9vbHMvb3BlbnNjYXAtZGFlbW9uLyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQwZDI1NDJiOGM0M2EzZWMyYjdmNWRhMzFhNjk3Yjg4IgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLQotREVQRU5EUyA9ICJweXRob24zLWRidXMiCi0KLVNSQ1JFViA9ICIzZmQ1Yzc1YTA4MjIzZGUzNWE4NjVkMDI2ZDJhNjk4MGVjOWMxZDc0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL09wZW5TQ0FQL29wZW5zY2FwLWRhZW1vbi5naXQiCi0KLVBWID0gIjAuMS42K2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS1zZWN1cml0eS1jb21wbGlhbmNlL3JlY2lwZXMtb3BlbnNjYXAvb3BlbnNjYXAvb3BlbnNjYXBfMS4yLjE1LmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1vcGVuc2NhcC9vcGVuc2NhcC9vcGVuc2NhcF8xLjIuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYmIxZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXNlY3VyaXR5LWNvbXBsaWFuY2UvcmVjaXBlcy1vcGVuc2NhcC9vcGVuc2NhcC9vcGVuc2NhcF8xLjIuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNyBBcm1pbiBLdXN0ZXIgIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNQVJSWSA9ICJOSVNUIENlcnRpZmllZCBTQ0FQIDEuMiB0b29sa2l0IgotSE9NRV9VUkwgPSAiaHR0cHM6Ly93d3cub3Blbi1zY2FwLm9yZy90b29scy9vcGVuc2NhcC1iYXNlLyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLQotREVQRU5EUyA9ICJhdXRvY29uZi1hcmNoaXZlIHBrZ2NvbmZpZyBnY29uZiBwcm9jcHMgY3VybCBsaWJ4bWwyIHJwbSBcCi0gICAgICAgICAgbGlieHNsdCBsaWJjYXAgc3dpZyBzd2lnLW5hdGl2ZSIKLQotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUgcGtnY29uZmlnLW5hdGl2ZSBzd2lnLW5hdGl2ZSBjdXJsLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBkcGtnLW5hdGl2ZSBsaWJnY3J5cHQtbmF0aXZlIG5zcy1uYXRpdmUiCi0KLVNSQ1JFViA9ICIyNDA5MzBkNDI2MTE5ODNjNjVlY2FlMTZkYmNhMzI0OGNlMTMwOTIxIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FrdXN0ZXIvb3BlbnNjYXAuZ2l0O2JyYW5jaD1vZSBcCi0gICAgICAgICAgIGZpbGU6Ly9jcnlwdG9fcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBwZXJsbmF0aXZlIHB0ZXN0Ci0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIm5zczMgcGNyZSBycG0iCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIiwtLWVuYWJsZS1yZWdleC1wb3NpeCwgbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtY3J5cHRvPWdjcnlwdCwsIGxpYmdjcnlwdCAiCi1QQUNLQUdFQ09ORklHW25zczNdID0gIi0td2l0aC1jcnlwdG89bnNzMywsIG5zcyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sIC0tZGlzYWJsZS1weXRob24sIHB5dGhvbiwgcHl0aG9uIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLWVuYWJsZS1weXRob24zLCAtLWRpc2FibGUtcHl0aG9uMywgcHl0aG9uMywgcHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybCwgLS1kaXNhYmxlLXBlcmwsIHBlcmwsIHBlcmwiCi1QQUNLQUdFQ09ORklHW3JwbV0gPSAiIC0tZW5hYmxlLXV0aWwtc2NhcC1hcy1ycG0sIC0tZGlzYWJsZS11dGlsLXNjYXAtYXMtcnBtLCBycG0sIHJwbSIKLQotZXhwb3J0IExERkxBR1MgKz0gIiAtbGRsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXByb2Jlcy1pbmRlcGVuZGVudCAtLWVuYWJsZS1wcm9iZXMtbGludXggXAotCQktLWVuYWJsZS1wcm9iZXMtc29sYXJpcyAtLWVuYWJsZS1wcm9iZXMtdW5peCAgLS1kaXNhYmxlLXV0aWwtb3NjYXAtZG9ja2VyXAotCQktLWVuYWJsZS11dGlsLW9zY2FwLXNzaCAtLWVuYWJsZS11dGlsLW9zY2FwIC0tZW5hYmxlLXNzcCAtLWVuYWJsZS1zY2UgXAotIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlICs9ICItLWRpc2FibGUtcHJvYmVzLWluZGVwZW5kZW50IC0tZW5hYmxlLXByb2Jlcy1saW51eCBcCi0JCS0tZGlzYWJsZS1wcm9iZXMtc29sYXJpcyAtLWRpc2FibGUtcHJvYmVzLXVuaXggXAotCQktLWVuYWJsZS11dGlsLW9zY2FwIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXNlZCAtaSAnczotSS91c3IvaW5jbHVkZTotSSR7U1RBR0lOR19JTkNESVJ9OicgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGUuYW0KLQlzZWQgLWkgJ3M6LUkvdXNyL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSfTonICR7U30vc3dpZy9weXRob24zL01ha2VmaWxlLmFtCi0Jc2VkIC1pICdzOi1JL3Vzci9pbmNsdWRlOi1JJHtTVEFHSU5HX0lOQ0RJUn06JyAke1N9L3N3aWcvcHl0aG9uMi9NYWtlZmlsZS5hbQotfQotCi0KLWluY2x1ZGUgb3BlbnNjYXAuaW5jCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlzZWQgLWkgJ3M6T1NDQVBfREVGQVVMVF9DUEVfUEFUSC4qJDpPU0NBUF9ERUZBVUxUX0NQRV9QQVRIICIke1NUQUdJTkdfT1NDQVBfQlVJTERESVJ9JHtkYXRhZGlyX25hdGl2ZX0vb3BlbnNjYXAvY3BlIjonICR7U30vY29uZmlnLmgKLQlzZWQgLWkgJ3M6T1NDQVBfREVGQVVMVF9TQ0hFTUFfUEFUSC4qJDpPU0NBUF9ERUZBVUxUX1NDSEVNQV9QQVRIICIke1NUQUdJTkdfT1NDQVBfQlVJTERESVJ9JHtkYXRhZGlyX25hdGl2ZX0vb3BlbnNjYXAvc2NoZW1hcyI6JyAke1N9L2NvbmZpZy5oCi0Jc2VkIC1pICdzOk9TQ0FQX0RFRkFVTFRfWFNMVF9QQVRILiokOk9TQ0FQX0RFRkFVTFRfWFNMVF9QQVRIICIke1NUQUdJTkdfT1NDQVBfQlVJTERESVJ9JHtkYXRhZGlyX25hdGl2ZX0vb3BlbnNjYXAveHNsIjonICR7U30vY29uZmlnLmgKLX0KLQotZG9fY2xlYW5bY2xlYW5kaXJzXSArPSAiICR7U1RBR0lOR19PU0NBUF9CVUlMRERJUn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0Jb3NjYXBkaXI9JHtTVEFHSU5HX09TQ0FQX0JVSUxERElSfS8ke2RhdGFkaXJfbmF0aXZlfQotCWluc3RhbGwgLWQgJG9zY2FwZGlyCQotCWNwIC1hICR7RH0vJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9vcGVuc2NhcCAkb3NjYXBkaXIKLX0KLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBzZWQgLWkgJ3M6cHl0aG9uMjpweXRob246JyAke1N9LyR7VEVTVERJUn0vbmlzdC90ZXN0X3dvcmtlci5weQotICAgIGVjaG8gJ2J1aWxkdGVzdC1URVNUUzogJChjaGVjayknID4+ICR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgIyBpbnN0YWxsIHRoZSB0ZXN0cwotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1SREVQRU5EU18ke1BOfSArPSAibGlieG1sMiBweXRob24gbGliZ2NjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBwZXJsIHB5dGhvbiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLW9wZW5zY2FwL29wZW5zY2FwL29wZW5zY2FwXzEuMi4xNy5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS1zZWN1cml0eS1jb21wbGlhbmNlL3JlY2lwZXMtb3BlbnNjYXAvb3BlbnNjYXAvb3BlbnNjYXBfMS4yLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYTRmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtc2VjdXJpdHktY29tcGxpYW5jZS9yZWNpcGVzLW9wZW5zY2FwL29wZW5zY2FwL29wZW5zY2FwXzEuMi4xNy5iYgpAQCAtMCwwICsxLDg3IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBBcm1pbiBLdXN0ZXIgIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNQVJSWSA9ICJOSVNUIENlcnRpZmllZCBTQ0FQIDEuMiB0b29sa2l0IgorSE9NRV9VUkwgPSAiaHR0cHM6Ly93d3cub3Blbi1zY2FwLm9yZy90b29scy9vcGVuc2NhcC1iYXNlLyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworREVQRU5EUyA9ICJhdXRvY29uZi1hcmNoaXZlIHBrZ2NvbmZpZyBnY29uZiBwcm9jcHMgY3VybCBsaWJ4bWwyIHJwbSBcCisgICAgICAgICAgbGlieHNsdCBsaWJjYXAgc3dpZyBzd2lnLW5hdGl2ZSIKKworREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUgcGtnY29uZmlnLW5hdGl2ZSBzd2lnLW5hdGl2ZSBjdXJsLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBkcGtnLW5hdGl2ZSBsaWJnY3J5cHQtbmF0aXZlIG5zcy1uYXRpdmUiCisKK1NSQ1JFViA9ICI1OWMyMzRiM2U5OTA3NDgwYzg5ZGZiZDFiNDY2YTZiZjcyYTJkMmVkIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2FrdXN0ZXIvb3BlbnNjYXAuZ2l0O2JyYW5jaD1vZSBcCisgICAgICAgICAgIGZpbGU6Ly9jcnlwdG9fcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBwZXJsbmF0aXZlIHB0ZXN0CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1BBQ0tBR0VDT05GSUcgPz0gIm5zczMgcGNyZSBycG0iCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIiwtLWVuYWJsZS1yZWdleC1wb3NpeCwgbGlicGNyZSIKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtY3J5cHRvPWdjcnlwdCwsIGxpYmdjcnlwdCAiCitQQUNLQUdFQ09ORklHW25zczNdID0gIi0td2l0aC1jcnlwdG89bnNzMywsIG5zcyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sIC0tZGlzYWJsZS1weXRob24sIHB5dGhvbiwgcHl0aG9uIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLWVuYWJsZS1weXRob24zLCAtLWRpc2FibGUtcHl0aG9uMywgcHl0aG9uMywgcHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybCwgLS1kaXNhYmxlLXBlcmwsIHBlcmwsIHBlcmwiCitQQUNLQUdFQ09ORklHW3JwbV0gPSAiIC0tZW5hYmxlLXV0aWwtc2NhcC1hcy1ycG0sIC0tZGlzYWJsZS11dGlsLXNjYXAtYXMtcnBtLCBycG0sIHJwbSIKKworZXhwb3J0IExERkxBR1MgKz0gIiAtbGRsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXByb2Jlcy1pbmRlcGVuZGVudCAtLWVuYWJsZS1wcm9iZXMtbGludXggXAorCQktLWVuYWJsZS1wcm9iZXMtc29sYXJpcyAtLWVuYWJsZS1wcm9iZXMtdW5peCAgLS1kaXNhYmxlLXV0aWwtb3NjYXAtZG9ja2VyXAorCQktLWVuYWJsZS11dGlsLW9zY2FwLXNzaCAtLWVuYWJsZS11dGlsLW9zY2FwIC0tZW5hYmxlLXNzcCAtLWVuYWJsZS1zY2UgXAorIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlICs9ICItLWRpc2FibGUtcHJvYmVzLWluZGVwZW5kZW50IC0tZW5hYmxlLXByb2Jlcy1saW51eCBcCisJCS0tZGlzYWJsZS1wcm9iZXMtc29sYXJpcyAtLWRpc2FibGUtcHJvYmVzLXVuaXggXAorCQktLWVuYWJsZS11dGlsLW9zY2FwIFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXNlZCAtaSAnczotSS91c3IvaW5jbHVkZTotSSR7U1RBR0lOR19JTkNESVJ9OicgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGUuYW0KKwlzZWQgLWkgJ3M6LUkvdXNyL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSfTonICR7U30vc3dpZy9weXRob24zL01ha2VmaWxlLmFtCisJc2VkIC1pICdzOi1JL3Vzci9pbmNsdWRlOi1JJHtTVEFHSU5HX0lOQ0RJUn06JyAke1N9L3N3aWcvcHl0aG9uMi9NYWtlZmlsZS5hbQorCXNlZCAtaSAnczpweXRob24yOnB5dGhvbjonICR7U30vdXRpbHMvc2NhcC1hcy1ycG0KK30KKworCitpbmNsdWRlIG9wZW5zY2FwLmluYworCitkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJc2VkIC1pICdzOk9TQ0FQX0RFRkFVTFRfQ1BFX1BBVEguKiQ6T1NDQVBfREVGQVVMVF9DUEVfUEFUSCAiJHtTVEFHSU5HX09TQ0FQX0JVSUxERElSfSR7ZGF0YWRpcl9uYXRpdmV9L29wZW5zY2FwL2NwZSI6JyAke1N9L2NvbmZpZy5oCisJc2VkIC1pICdzOk9TQ0FQX0RFRkFVTFRfU0NIRU1BX1BBVEguKiQ6T1NDQVBfREVGQVVMVF9TQ0hFTUFfUEFUSCAiJHtTVEFHSU5HX09TQ0FQX0JVSUxERElSfSR7ZGF0YWRpcl9uYXRpdmV9L29wZW5zY2FwL3NjaGVtYXMiOicgJHtTfS9jb25maWcuaAorCXNlZCAtaSAnczpPU0NBUF9ERUZBVUxUX1hTTFRfUEFUSC4qJDpPU0NBUF9ERUZBVUxUX1hTTFRfUEFUSCAiJHtTVEFHSU5HX09TQ0FQX0JVSUxERElSfSR7ZGF0YWRpcl9uYXRpdmV9L29wZW5zY2FwL3hzbCI6JyAke1N9L2NvbmZpZy5oCit9CisKK2RvX2NsZWFuW2NsZWFuZGlyc10gKz0gIiAke1NUQUdJTkdfT1NDQVBfQlVJTERESVJ9IgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCW9zY2FwZGlyPSR7U1RBR0lOR19PU0NBUF9CVUlMRERJUn0vJHtkYXRhZGlyX25hdGl2ZX0KKwlpbnN0YWxsIC1kICRvc2NhcGRpcgkKKwljcCAtYSAke0R9LyR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vb3BlbnNjYXAgJG9zY2FwZGlyCit9CisKK1RFU1RESVIgPSAidGVzdHMiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgc2VkIC1pICdzOnB5dGhvbjI6cHl0aG9uOicgJHtTfS8ke1RFU1RESVJ9L25pc3QvdGVzdF93b3JrZXIucHkKKyAgICBlY2hvICdidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2spJyA+PiAke1RFU1RESVJ9L01ha2VmaWxlCisgICAgb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICMgaW5zdGFsbCB0aGUgdGVzdHMKKyAgICBjcCAtcmYgJHtCfS8ke1RFU1RESVJ9ICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDIgcHl0aG9uIGxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggcGVybCBweXRob24iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9jb25mL2xheWVyLmNvbmYgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL2NvbmYvbGF5ZXIuY29uZgppbmRleCBhMmYwY2FiLi4xYjVmN2Q1IDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL2NvbmYvbGF5ZXIuY29uZgpAQCAtNiw5ICs2LDkgQEAKIAogQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ0cG0tbGF5ZXIiCiBCQkZJTEVfUEFUVEVSTl90cG0tbGF5ZXIgPSAiXiR7TEFZRVJESVJ9LyIKLUJCRklMRV9QUklPUklUWV90cG0tbGF5ZXIgPSAiNiIKK0JCRklMRV9QUklPUklUWV90cG0tbGF5ZXIgPSAiMTAiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF90cG0tbGF5ZXIgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF90cG0tbGF5ZXIgPSAidGh1ZCIKIAogTEFZRVJERVBFTkRTX3RwbS1sYXllciA9ICIgXAogICAgIGNvcmUgXApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3VwL3BhY2thZ2Vncm91cC1zZWN1cml0eS10cG0yLmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3VwL3BhY2thZ2Vncm91cC1zZWN1cml0eS10cG0yLmJiCmluZGV4IDEzYjUwNWYuLmM0YzhmYjIgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cC9wYWNrYWdlZ3JvdXAtc2VjdXJpdHktdHBtMi5iYgorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXAvcGFja2FnZWdyb3VwLXNlY3VyaXR5LXRwbTIuYmIKQEAgLTEsNCArMSw0IEBACi1ERVNDUklQVElPTiA9ICJTZWN1cml0eSBwYWNrYWdlZ3JvdXAgZm9yIFBva3kiCitERVNDUklQVElPTiA9ICJUUE0yIHBhY2thZ2Vncm91cCBmb3IgU2VjdXJpdHkiCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgpAQCAtMTIsNyArMTIsNyBAQAogICAgIHRwbTIuMC10b29scyBcCiAgICAgdHJvdXNlcnMgXAogICAgIGxpYnRzczIgXAotICAgIGxpYnRjdGlkZXZpY2UgXAotICAgIGxpYnRjdGlzb2NrZXQgXAotICAgIHJlc291cmNlbWdyIFwKKyAgICBsaWJ0c3MyLXRjdGktZGV2aWNlIFwKKyAgICBsaWJ0c3MyLXRjdGktbXNzaW0gXAorICAgIHRwbTItYWJybWQgXAogICAgICIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vbGlidHBtL2xpYnRwbV8xLjAuYmIgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL2xpYnRwbS9saWJ0cG1fMS4wLmJiCmluZGV4IGIyOWVjNmIuLmE5MzBkN2IgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vbGlidHBtL2xpYnRwbV8xLjAuYmIKKysrIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9saWJ0cG0vbGlidHBtXzEuMC5iYgpAQCAtMSwxMSArMSw5IEBACiBTVU1NQVJZID0gIkxJQlBNIC0gU29mdHdhcmUgVFBNIExpYnJhcnkiCiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk3ZTVlZWE4ZDcwMGQ3NmIzZGRmZDM1YzRjOTY0ODVmIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTczZjA3ODZhOTM2ZGEzODE0ODk2ZGYwNmFkMjI1YTkiCiAKLVNSQ1JFViA9ICIzMzg4ZDQ1MDgyYmRjNTg4YzZmYzA2NzJmNDRkNmQ3ZDBhYWE4NmZmIgotU1JDX1VSSSA9ICIgXAotCWdpdDovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL2xpYnRwbXMuZ2l0IFwKLQkiCitTUkNSRVYgPSAiNDExMWJkMWJjZjcyMWU2ZTdiNWYxMWVkOWMyYjkzMDgzNjc3YWEyNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zdGVmYW5iZXJnZXIvbGlidHBtcy5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAxLWNyZWF0ZS10cG0ta2V5LXN1cHBvcnQtd2VsbC1rbm93bi1rZXktb3B0aW9uLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwMS1jcmVhdGUtdHBtLWtleS1zdXBwb3J0LXdlbGwta25vd24ta2V5LW9wdGlvbi5wYXRjaAppbmRleCA2NzA3MWI2Li5iZWQ4YjkyIDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAxLWNyZWF0ZS10cG0ta2V5LXN1cHBvcnQtd2VsbC1rbm93bi1rZXktb3B0aW9uLnBhdGNoCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL2ZpbGVzLzAwMDEtY3JlYXRlLXRwbS1rZXktc3VwcG9ydC13ZWxsLWtub3duLWtleS1vcHRpb24ucGF0Y2gKQEAgLTgsMjAgKzgsMjAgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVueGlhbi5YaWFvIDxKdW54aWFuLlhpYW9Ad2luZHJpdmVyLmNvbT4KIAotZGlmZiAtLWdpdCBhL2NyZWF0ZV90cG1fa2V5LmMgYi9jcmVhdGVfdHBtX2tleS5jCi1pbmRleCBmZWU5MTdmLi43Yjk0ZDYyIDEwMDY0NAotLS0tIGEvY3JlYXRlX3RwbV9rZXkuYwotKysrIGIvY3JlYXRlX3RwbV9rZXkuYwotQEAgLTQ2LDYgKzQ2LDggQEAKLSAjaW5jbHVkZSA8dHJvdXNlcnMvdHNzLmg+Ci0gI2luY2x1ZGUgPHRyb3VzZXJzL3Ryb3VzZXJzLmg+CitJbmRleDogZ2l0L3NyYy9jcmVhdGVfdHBtX2tleS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NyZWF0ZV90cG1fa2V5LmMKKysrKyBnaXQvc3JjL2NyZWF0ZV90cG1fa2V5LmMKK0BAIC00OCw2ICs0OCw4IEBACisgCisgI2luY2x1ZGUgInNzbF9jb21wYXQuaCIKICAKICsjZGVmaW5lIFRQTV9XRUxMX0tOT1dOX0tFWV9MRU4gMjAgICAvKndlbGwga25vdyBrZXkgbGVuZ3RoIGlzIDIwIGJ5dGVzIHplcm8qLwogKwogICNkZWZpbmUgcHJpbnRfZXJyb3IoYSxiKSBcCiAgCWZwcmludGYoc3RkZXJyLCAiJXM6JWQgJXMgcmVzdWx0OiAweCV4ICglcylcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgXAogIAkJYSwgYiwgVHJzcGlfRXJyb3JfU3RyaW5nKGIpKQotQEAgLTcwLDYgKzcyLDcgQEAgdXNhZ2UoY2hhciAqYXJndjApCitAQCAtNzIsNiArNzQsNyBAQCB1c2FnZShjaGFyICphcmd2MCkKICAJCSJcdFx0LWV8LS1lbmMtc2NoZW1lICBlbmNyeXB0aW9uIHNjaGVtZSB0byB1c2UgW1BLQ1NWMTVdIG9yIE9BRVBcbiIKICAJCSJcdFx0LXF8LS1zaWctc2NoZW1lICBzaWduYXR1cmUgc2NoZW1lIHRvIHVzZSBbREVSXSBvciBTSEExXG4iCiAgCQkiXHRcdC1zfC0ta2V5LXNpemUgICAga2V5IHNpemUgaW4gYml0cyBbMjA0OF1cbiIKQEAgLTI5LDcgKzI5LDcgQEAKICAJCSJcdFx0LWF8LS1hdXRoICAgICAgICByZXF1aXJlIGEgcGFzc3dvcmQgZm9yIHRoZSBrZXkgW05PXVxuIgogIAkJIlx0XHQtcHwtLXBvcHVwICAgICAgIHVzZSBUU1MgR1VJIHBvcHVwIGRpYWxvZ3MgdG8gZ2V0IHRoZSBwYXNzd29yZCAiCiAgCQkiZm9yIHRoZVxuXHRcdFx0XHQga2V5IFtOT10gKGltcGxpZXMgLS1hdXRoKVxuIgotQEAgLTE0Nyw2ICsxNTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTU0LDYgKzE1Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJaW50CQlhc24xX2xlbjsKICAJY2hhcgkJKmZpbGVuYW1lLCBjLCAqb3BlbnNzbF9rZXkgPSBOVUxMOwogIAlpbnQJCW9wdGlvbl9pbmRleCwgYXV0aCA9IDAsIHBvcHVwID0gMCwgd3JhcCA9IDA7CkBAIC0zNyw3ICszNyw3IEBACiAgCVVJTlQzMgkJZW5jX3NjaGVtZSA9IFRTU19FU19SU0FFU1BLQ1NWMTU7CiAgCVVJTlQzMgkJc2lnX3NjaGVtZSA9IFRTU19TU19SU0FTU0FQS0NTMVYxNV9ERVI7CiAgCVVJTlQzMgkJa2V5X3NpemUgPSAyMDQ4OwotQEAgLTE1NCwxMiArMTU4LDE1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xNjEsMTIgKzE2NSwxNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCiAgCXdoaWxlICgxKSB7CiAgCQlvcHRpb25faW5kZXggPSAwOwpAQCAtNTQsNyArNTQsNyBAQAogIAkJCWNhc2UgJ2EnOgogIAkJCQlpbml0RmxhZ3MgfD0gVFNTX0tFWV9BVVRIT1JJWkFUSU9OOwogIAkJCQlhdXRoID0gMTsKLUBAIC0yOTMsNiArMzAwLDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTMwMCw2ICszMDcsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCiAgCWlmIChzcmtfYXV0aHVzYWdlKSB7CiAgCQljaGFyICphdXRoZGF0YSA9IGNhbGxvYygxLCAxMjgpOwpAQCAtNjMsNyArNjMsNyBAQAogIAogIAkJaWYgKCFhdXRoZGF0YSkgewogIAkJCWZwcmludGYoc3RkZXJyLCAibWFsbG9jIGZhaWxlZC5cbiIpOwotQEAgLTMwOSwxNyArMzE4LDI2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0zMTYsMTcgKzMyNSwyNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJZXhpdChyZXN1bHQpOwogIAkJfQogIApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwMi1saWJ0cG0tc3VwcG9ydC1lbnYtVFBNX1NSS19QVy5wYXRjaCBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL2ZpbGVzLzAwMDItbGlidHBtLXN1cHBvcnQtZW52LVRQTV9TUktfUFcucGF0Y2gKaW5kZXggZjcxOGYyZS4uMmNhYWFmMCAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwMi1saWJ0cG0tc3VwcG9ydC1lbnYtVFBNX1NSS19QVy5wYXRjaAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAyLWxpYnRwbS1zdXBwb3J0LWVudi1UUE1fU1JLX1BXLnBhdGNoCkBAIC05LDIwICs5LDIwIEBACiAKIFNpZ25lZC1vZmYtYnk6IEp1bnhpYW4uWGlhbyA8SnVueGlhbi5YaWFvQHdpbmRyaXZlci5jb20+CiAKLWRpZmYgLS1naXQgYS9lX3RwbS5jIGIvZV90cG0uYwotaW5kZXggZjNlOGJjZi4uN2RjYjc1YSAxMDA2NDQKLS0tLSBhL2VfdHBtLmMKLSsrKyBiL2VfdHBtLmMKK0luZGV4OiBnaXQvc3JjL2VfdHBtLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvZV90cG0uYworKysrIGdpdC9zcmMvZV90cG0uYwogQEAgLTM4LDYgKzM4LDggQEAKLSAKICAjaW5jbHVkZSAiZV90cG0uaCIKKyAjaW5jbHVkZSAic3NsX2NvbXBhdC5oIgogIAogKyNkZWZpbmUgVFBNX1dFTExfS05PV05fS0VZX0xFTiAyMCAgIC8qd2VsbCBrbm93IGtleSBsZW5ndGggaXMgMjAgYnl0ZXMgemVybyovCiArCiAgLy8jZGVmaW5lIERMT1BFTl9UU1BJCiAgCiAgI2lmbmRlZiBPUEVOU1NMX05PX0hXCi1AQCAtMjQ4LDYgKzI1MCwxMCBAQCBpbnQgdHBtX2xvYWRfc3JrKFVJX01FVEhPRCAqdWksIHZvaWQgKmNiX2RhdGEpCitAQCAtMjYyLDYgKzI2NCwxMCBAQCBpbnQgdHBtX2xvYWRfc3JrKFVJX01FVEhPRCAqdWksIHZvaWQgKmNiCiAgCVRTU19SRVNVTFQgcmVzdWx0OwogIAlVSU5UMzIgYXV0aHVzYWdlOwogIAlCWVRFICphdXRoOwpAQCAtMzMsNyArMzMsNyBAQAogIAogIAlpZiAoaFNSSyAhPSBOVUxMX0hLRVkpIHsKICAJCURCR0ZOKCJTUksgaXMgYWxyZWFkeSBsb2FkZWQuIik7Ci1AQCAtMjk5LDE4ICszMDUsMzYgQEAgaW50IHRwbV9sb2FkX3NyayhVSV9NRVRIT0QgKnVpLCB2b2lkICpjYl9kYXRhKQorQEAgLTMxMywxOCArMzE5LDM2IEBAIGludCB0cG1fbG9hZF9zcmsoVUlfTUVUSE9EICp1aSwgdm9pZCAqY2IKICAJCXJldHVybiAwOwogIAl9CiAgCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAzLUZpeC1ub3QtYnVpbGRpbmctbGlidHBtLmxhLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwMy1GaXgtbm90LWJ1aWxkaW5nLWxpYnRwbS5sYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI0YTE1MC4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAzLUZpeC1ub3QtYnVpbGRpbmctbGlidHBtLmxhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA3ODQ4NDQ1YTFmNGM3NTBlZjczYmY5NmY1ZTg5ZDQwMmY4N2ExNzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGFucyBaaGFuZyA8amlhLnpoYW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDE5IEp1biAyMDE3IDE0OjU0OjI4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBub3QgYnVpbGRpbmcgbGlidHBtLmxhCi0KLVNpZ25lZC1vZmYtYnk6IExhbnMgWmhhbmcgPGppYS56aGFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA2Njk1NjU2Li42MzRhN2U2IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMTAsNCArMTAsNiBAQCBsaWJ0cG1fbGFfTElCQUREPS1sY3J5cHRvIC1sYyAtbHRzcGkKLSBsaWJ0cG1fbGFfU09VUkNFUz1lX3RwbS5jIGVfdHBtLmggZV90cG1fZXJyLmMKLSAKLSBjcmVhdGVfdHBtX2tleV9TT1VSQ0VTPWNyZWF0ZV90cG1fa2V5LmMKLS1jcmVhdGVfdHBtX2tleV9MREFERD0tbHRzcGkKLStjcmVhdGVfdHBtX2tleV9MREZMQUdTPS1sdHNwaQotKwotK0xEQUREPWxpYnRwbS5sYQotLS0gCi0yLjcuNQotCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAzLXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtcGFyc2UtYW4tZW5jcnlwdGVkLXRwbS1TUkstcGEucGF0Y2ggYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDAzLXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtcGFyc2UtYW4tZW5jcnlwdGVkLXRwbS1TUkstcGEucGF0Y2gKaW5kZXggYTg4MTQ4Zi4uY2M4NzcyZCAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwMy10cG0tb3BlbnNzbC10cG0tZW5naW5lLXBhcnNlLWFuLWVuY3J5cHRlZC10cG0tU1JLLXBhLnBhdGNoCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL2ZpbGVzLzAwMDMtdHBtLW9wZW5zc2wtdHBtLWVuZ2luZS1wYXJzZS1hbi1lbmNyeXB0ZWQtdHBtLVNSSy1wYS5wYXRjaApAQCAtMjIsMTEgKzIyLDExIEBACiAgZV90cG1fZXJyLmMgfCAgIDQgKysKICAzIGZpbGVzIGNoYW5nZWQsIDE2NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9lX3RwbS5jIGIvZV90cG0uYwotaW5kZXggN2RjYjc1YS4uMTFiZjc0YiAxMDA2NDQKLS0tLSBhL2VfdHBtLmMKLSsrKyBiL2VfdHBtLmMKLUBAIC0yNDUsNiArMjQ1LDExOCBAQCB2b2lkIEVOR0lORV9sb2FkX3RwbSh2b2lkKQorSW5kZXg6IGdpdC9zcmMvZV90cG0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9lX3RwbS5jCisrKysgZ2l0L3NyYy9lX3RwbS5jCitAQCAtMjU5LDYgKzI1OSwxMTggQEAgdm9pZCBFTkdJTkVfbG9hZF90cG0odm9pZCkKICAJRVJSX2NsZWFyX2Vycm9yKCk7CiAgfQogIApAQCAtMTQ1LDcgKzE0NSw3IEBACiAgaW50IHRwbV9sb2FkX3NyayhVSV9NRVRIT0QgKnVpLCB2b2lkICpjYl9kYXRhKQogIHsKICAJVFNTX1JFU1VMVCByZXN1bHQ7Ci1AQCAtMzA1LDggKzQxNyw1MCBAQCBpbnQgdHBtX2xvYWRfc3JrKFVJX01FVEhPRCAqdWksIHZvaWQgKmNiX2RhdGEpCitAQCAtMzE5LDggKzQzMSw1MCBAQCBpbnQgdHBtX2xvYWRfc3JrKFVJX01FVEhPRCAqdWksIHZvaWQgKmNiCiAgCQlyZXR1cm4gMDsKICAJfQogIApAQCAtMTk3LDcgKzE5Nyw3IEBACiAgCQlpZiAoMCA9PSBzdHJjbXAoc3JrUGFzc3dkLCAiI1dFTExLTk9XTiMiKSkgewogIAkJCW1lbXNldChhdXRoLCAwLCBUUE1fV0VMTF9LTk9XTl9LRVlfTEVOKTsKICAJCQlzZWNyZXRNb2RlID0gVFNTX1NFQ1JFVF9NT0RFX1NIQTE7Ci1AQCAtMzE5LDYgKzQ3Myw3IEBAIGludCB0cG1fbG9hZF9zcmsoVUlfTUVUSE9EICp1aSwgdm9pZCAqY2JfZGF0YSkKK0BAIC0zMzMsNiArNDg3LDcgQEAgaW50IHRwbV9sb2FkX3NyayhVSV9NRVRIT0QgKnVpLCB2b2lkICpjYgogIAkJCWF1dGhsZW4gPSBzdHJsZW4oYXV0aCk7CiAgCQl9CiAgCX0KQEAgLTIwNSwxMSArMjA1LDExIEBACiAgCWVsc2UgewogIAkJaWYgKCF0cG1fZW5naW5lX2dldF9hdXRoKHVpLCAoY2hhciAqKWF1dGgsIDEyOCwKICAJCQkJIlNSSyBhdXRob3JpemF0aW9uOiAiLCBjYl9kYXRhKSkgewotZGlmZiAtLWdpdCBhL2VfdHBtLmggYi9lX3RwbS5oCi1pbmRleCA2MzE2ZTBiLi41NmZmMjAyIDEwMDY0NAotLS0tIGEvZV90cG0uaAotKysrIGIvZV90cG0uaAotQEAgLTY2LDYgKzY2LDggQEAgdm9pZCBFUlJfVFNTX2Vycm9yKGludCBmdW5jdGlvbiwgaW50IHJlYXNvbiwgY2hhciAqZmlsZSwgaW50IGxpbmUpOworSW5kZXg6IGdpdC9zcmMvZV90cG0uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9lX3RwbS5oCisrKysgZ2l0L3NyYy9lX3RwbS5oCitAQCAtNjYsNiArNjYsOCBAQCB2b2lkIEVSUl9UU1NfZXJyb3IoaW50IGZ1bmN0aW9uLCBpbnQgcmVhCiAgI2RlZmluZSBUUE1fRl9UUE1fRklMTF9SU0FfT0JKRUNUCQkxMTYKICAjZGVmaW5lIFRQTV9GX1RQTV9FTkdJTkVfR0VUX0FVVEgJCTExNwogICNkZWZpbmUgVFBNX0ZfVFBNX0NSRUFURV9TUktfUE9MSUNZCQkxMTgKQEAgLTIxOCw3ICsyMTgsNyBAQAogIAogIC8qIFJlYXNvbiBjb2Rlcy4gKi8KICAjZGVmaW5lIFRQTV9SX0FMUkVBRFlfTE9BREVECQkJMTAwCi1AQCAtOTYsNiArOTgsOCBAQCB2b2lkIEVSUl9UU1NfZXJyb3IoaW50IGZ1bmN0aW9uLCBpbnQgcmVhc29uLCBjaGFyICpmaWxlLCBpbnQgbGluZSk7CitAQCAtOTYsNiArOTgsOCBAQCB2b2lkIEVSUl9UU1NfZXJyb3IoaW50IGZ1bmN0aW9uLCBpbnQgcmVhCiAgI2RlZmluZSBUUE1fUl9JRF9JTlZBTElECQkJMTI1CiAgI2RlZmluZSBUUE1fUl9VSV9NRVRIT0RfRkFJTEVECQkJMTI2CiAgI2RlZmluZSBUUE1fUl9VTktOT1dOX1NFQ1JFVF9NT0RFCQkxMjcKQEAgLTIyNywxMSArMjI3LDExIEBACiAgCiAgLyogc3RydWN0dXJlIHBvaW50ZWQgdG8gYnkgdGhlIFJTQSBvYmplY3QncyBhcHBfZGF0YSBwb2ludGVyICovCiAgc3RydWN0IHJzYV9hcHBfZGF0YQotZGlmZiAtLWdpdCBhL2VfdHBtX2Vyci5jIGIvZV90cG1fZXJyLmMKLWluZGV4IDI1YTVkMGYuLjQzOWUyNjcgMTAwNjQ0Ci0tLS0gYS9lX3RwbV9lcnIuYwotKysrIGIvZV90cG1fZXJyLmMKLUBAIC0yMzUsNiArMjM1LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBUUE1fc3RyX2Z1bmN0c1tdID0geworSW5kZXg6IGdpdC9zcmMvZV90cG1fZXJyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zcmMvZV90cG1fZXJyLmMKKysrKyBnaXQvc3JjL2VfdHBtX2Vyci5jCitAQCAtMjM0LDYgKzIzNCw4IEBAIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgVFBNX3N0cl9mdW5jdHNbXQogIAl7RVJSX1BBQ0soMCwgVFBNX0ZfVFBNX0JJTkRfRk4sIDApLCAiVFBNX0JJTkRfRk4ifSwKICAJe0VSUl9QQUNLKDAsIFRQTV9GX1RQTV9GSUxMX1JTQV9PQkpFQ1QsIDApLCAiVFBNX0ZJTExfUlNBX09CSkVDVCJ9LAogIAl7RVJSX1BBQ0soMCwgVFBNX0ZfVFBNX0VOR0lORV9HRVRfQVVUSCwgMCksICJUUE1fRU5HSU5FX0dFVF9BVVRIIn0sCkBAIC0yNDAsNyArMjQwLDcgQEAKICAJezAsIE5VTEx9CiAgfTsKICAKLUBAIC0yNjUsNiArMjY3LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBUUE1fc3RyX3JlYXNvbnNbXSA9IHsKK0BAIC0yNjQsNiArMjY2LDggQEAgc3RhdGljIEVSUl9TVFJJTkdfREFUQSBUUE1fc3RyX3JlYXNvbnNbXQogIAl7VFBNX1JfRklMRV9SRUFEX0ZBSUxFRCwgImZhaWxlZCByZWFkaW5nIHRoZSBrZXkgZmlsZSJ9LAogIAl7VFBNX1JfSURfSU5WQUxJRCwgImVuZ2luZSBpZCBkb2Vzbid0IG1hdGNoIn0sCiAgCXtUUE1fUl9VSV9NRVRIT0RfRkFJTEVELCAidWkgZnVuY3Rpb24gZmFpbGVkIn0sCkBAIC0yNDksNiArMjQ5LDMgQEAKICAJezAsIE5VTEx9CiAgfTsKICAKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwNC10cG0tb3BlbnNzbC10cG0tZW5naW5lLWNoYW5nZS12YXJpYWJsZS1jLXR5cGUtZnJvbS1jLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvZmlsZXMvMDAwNC10cG0tb3BlbnNzbC10cG0tZW5naW5lLWNoYW5nZS12YXJpYWJsZS1jLXR5cGUtZnJvbS1jLnBhdGNoCmluZGV4IDA3NjcwNGQuLjUzNTQ3MmEgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL2ZpbGVzLzAwMDQtdHBtLW9wZW5zc2wtdHBtLWVuZ2luZS1jaGFuZ2UtdmFyaWFibGUtYy10eXBlLWZyb20tYy5wYXRjaAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy8wMDA0LXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtY2hhbmdlLXZhcmlhYmxlLWMtdHlwZS1mcm9tLWMucGF0Y2gKQEAgLTE1LDExICsxNSwxMSBAQAogIGNyZWF0ZV90cG1fa2V5LmMgfCAgICAzICsrLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2NyZWF0ZV90cG1fa2V5LmMgYi9jcmVhdGVfdHBtX2tleS5jCi1pbmRleCA3Yjk0ZDYyLi5mMzBhZjkwIDEwMDY0NAotLS0tIGEvY3JlYXRlX3RwbV9rZXkuYwotKysrIGIvY3JlYXRlX3RwbV9rZXkuYwotQEAgLTE0OCw3ICsxNDgsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitJbmRleDogZ2l0L3NyYy9jcmVhdGVfdHBtX2tleS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2NyZWF0ZV90cG1fa2V5LmMKKysrKyBnaXQvc3JjL2NyZWF0ZV90cG1fa2V5LmMKK0BAIC0xNTUsNyArMTU1LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAlBU04xX09DVEVUX1NUUklORyAqYmxvYl9zdHI7CiAgCXVuc2lnbmVkIGNoYXIJKmJsb2JfYXNuMSA9IE5VTEw7CiAgCWludAkJYXNuMV9sZW47CkBAIC0yOSw2ICsyOSwzIEBACiAgCWludAkJb3B0aW9uX2luZGV4LCBhdXRoID0gMCwgcG9wdXAgPSAwLCB3cmFwID0gMDsKICAJaW50CQl3ZWxsa25vd25rZXkgPSAwOwogIAlVSU5UMzIJCWVuY19zY2hlbWUgPSBUU1NfRVNfUlNBRVNQS0NTVjE1OwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL2ZpbGVzL29wZW5zc2wxMV9idWlsZF9maXgucGF0Y2ggYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy9vcGVuc3NsMTFfYnVpbGRfZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOGViODEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9maWxlcy9vcGVuc3NsMTFfYnVpbGRfZml4LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0ZpeCBjb21waWxpbmcgZm9yIG9wZW5zc2wgMS4xCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworSW5kZXg6IGdpdC9zcmMvZV90cG0uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9lX3RwbS5jCisrKysgZ2l0L3NyYy9lX3RwbS5jCitAQCAtMjY1LDE5ICsyNjUsMjAgQEAgc3RhdGljIGludCB0cG1fZGVjb2RlX2Jhc2U2NCh1bnNpZ25lZCBjaAorIAkJCQlpbnQgKm91dF9sZW4pCisgeworIAlpbnQgdG90YWxfbGVuLCBsZW4sIHJldDsKKy0JRVZQX0VOQ09ERV9DVFggZGN0eDsKKysJRVZQX0VOQ09ERV9DVFggKmRjdHg7CisgCistCUVWUF9EZWNvZGVJbml0KCZkY3R4KTsKKysJZGN0eCA9IEVWUF9FTkNPREVfQ1RYX25ldygpOworKwlFVlBfRGVjb2RlSW5pdChkY3R4KTsKKyAKKyAJdG90YWxfbGVuID0gMDsKKy0JcmV0ID0gRVZQX0RlY29kZVVwZGF0ZSgmZGN0eCwgb3V0ZGF0YSwgJmxlbiwgaW5kYXRhLCBpbl9sZW4pOworKwlyZXQgPSBFVlBfRGVjb2RlVXBkYXRlKGRjdHgsIG91dGRhdGEsICZsZW4sIGluZGF0YSwgaW5fbGVuKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVRTU2VycihUUE1fRl9UUE1fREVDT0RFX0JBU0U2NCwgVFBNX1JfREVDT0RFX0JBU0U2NF9GQUlMRUQpOworIAkJcmV0dXJuIDE7CisgCX0KKyAKKyAJdG90YWxfbGVuICs9IGxlbjsKKy0JcmV0ID0gRVZQX0RlY29kZUZpbmFsKCZkY3R4LCBvdXRkYXRhLCAmbGVuKTsKKysJcmV0ID0gRVZQX0RlY29kZUZpbmFsKGRjdHgsIG91dGRhdGEsICZsZW4pOworIAlpZiAocmV0IDwgMCkgeworIAkJVFNTZXJyKFRQTV9GX1RQTV9ERUNPREVfQkFTRTY0LCBUUE1fUl9ERUNPREVfQkFTRTY0X0ZBSUxFRCk7CisgCQlyZXR1cm4gMTsKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL29wZW5zc2wtdHBtLWVuZ2luZV8wLjQuMi5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vb3BlbnNzbC10cG0tZW5naW5lL29wZW5zc2wtdHBtLWVuZ2luZV8wLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg1NGY3MC4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9vcGVuc3NsLXRwbS1lbmdpbmVfMC40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuU1NMIHNlY3VyZSBlbmdpbmUgYmFzZWQgb24gVFBNIGhhcmR3YXJlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdHJvdXNlcnMvIgotU0VDVElPTiA9ICJzZWN1cml0eS90cG0iCi0KLUxJQ0VOU0UgPSAib3BlbnNzbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTExZjBlZTNhZjQ3NWM4NWI5MDc0MjZlMjg1YzliYjUyIgotCi1ERVBFTkRTICs9ICJvcGVuc3NsIHRyb3VzZXJzIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC90cm91c2Vycy9vcGVuc3NsX3RwbV9lbmdpbmUgXAotICAgIGZpbGU6Ly8wMDAxLWNyZWF0ZS10cG0ta2V5LXN1cHBvcnQtd2VsbC1rbm93bi1rZXktb3B0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJ0cG0tc3VwcG9ydC1lbnYtVFBNX1NSS19QVy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRml4LW5vdC1idWlsZGluZy1saWJ0cG0ubGEucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtcGFyc2UtYW4tZW5jcnlwdGVkLXRwbS1TUkstcGEucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtY2hhbmdlLXZhcmlhYmxlLWMtdHlwZS1mcm9tLWMucGF0Y2ggXAotIgotU1JDUkVWID0gImJiYzJiMWFmODA5ZjIwNjg2ZTBkMzU1M2E2MmYwMTc1NzQyYzBkNjAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi0jIFRoZSBkZWZpbml0aW9ucyBiZWxvdyBhcmUgdXNlZCB0byBkZWNyeXB0IHRoZSBzcmsgcGFzc3dvcmQuCi0jIEl0IGlzIGFsbG93ZWQgdG8gZGVmaW5lIHRoZSB2YWx1ZXMgaW4gMyBmb3Jtczogc3RyaW5nLCBoZXggbnVtYmVyIGFuZAotIyB0aGUgaHlicmlkLCBlLmcsCi0jIHNya19kZWNfcHcgPSAiaW5jZW5kaWEiCi0jIHNya19kZWNfcHcgPSAiXHg2OVx4NmVceDYzXHg2NVx4NmVceDY0XHg2OVx4NjEiCi0jIHNya19kZWNfcHcgPSAiXHgxIiJuYyIiXHgzIiJuZCIiXHgxIiJhIgotIwotIyBEdWUgdG8gdGhlIGxpbWl0IG9mIGVzY2FwZSBjaGFyYWN0ZXIsIHRoZSBoeWJyaWQgbXVzdCBiZSB3cml0dGVuIGluCi0jIGFib3ZlIHN0eWxlLiBUaGUgYWN0dWFsIHZhbHVlcyBkZWZpbmVkIGJlbG93IGluIEMgY29kZSBzdHlsZSBhcmU6Ci0jIHNya19kZWNfcHdbXSA9IHsgMHgwMSwgJ24nLCAnYycsIDB4MDMsICduJywgJ2QnLCAweDAxLCAnYScgfTsKLSMgc3JrX2RlY19zYWx0W10gPSB7ICdyJywgMHgwMCwgMHgwMCwgJ3QnIH07Ci1zcmtfZGVjX3B3ID89ICJcXCJcXFx4MVxcIlxcIm5jXFwiXFwiXFxceDNcXCJcXCJuZFxcIlxcIlxcXHgxXFwiXFwiYVxcIiIKLXNya19kZWNfc2FsdCA/PSAiXFwiclxcIlxcIlxcXHgwMFxcXHgwMFxcIlxcInRcXCIiCi0KLUNGTEFHU19hcHBlbmQgKz0gIi1EU1JLX0RFQ19QVz0ke3Nya19kZWNfcHd9IC1EU1JLX0RFQ19TQUxUPSR7c3JrX2RlY19zYWx0fSIKLQotIyBVbmNvbW1lbnQgYmVsb3cgbGluZSBpZiB1c2luZyB0aGUgcGxhaW4gc3JrIHBhc3N3b3JkIGZvciBkZXZlbG9wbWVudAotI0NGTEFHU19hcHBlbmQgKz0gIi1EVFBNX1NSS19QTEFJTl9QVyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgY2QgIiR7U30iCi0gICAgY3AgTElDRU5TRSBDT1BZSU5HCi0gICAgdG91Y2ggTkVXUyBBVVRIT1JTIENoYW5nZUxvZwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgIiR7RH0ke2xpYmRpcn0vZW5naW5lcyIKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgIiR7RH0ke3ByZWZpeH0vbG9jYWwvc3NsL2xpYi9lbmdpbmVzIgotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAiJHtEfSR7bGliZGlyfS9zc2wvZW5naW5lcyIKLQotICAgIGNwIC1mICIke0R9JHtsaWJkaXJ9L29wZW5zc2wvZW5naW5lcy9saWJ0cG0uc28uMC4wLjAiICIke0R9JHtsaWJkaXJ9L2xpYnRwbS5zby4wIgotICAgIGNwIC1mICIke0R9JHtsaWJkaXJ9L29wZW5zc2wvZW5naW5lcy9saWJ0cG0uc28uMC4wLjAiICIke0R9JHtsaWJkaXJ9L2VuZ2luZXMvbGlidHBtLnNvIgotICAgIGNwIC1mICIke0R9JHtsaWJkaXJ9L29wZW5zc2wvZW5naW5lcy9saWJ0cG0uc28uMC4wLjAiICIke0R9JHtwcmVmaXh9L2xvY2FsL3NzbC9saWIvZW5naW5lcy9saWJ0cG0uc28iCi0gICAgbXYgLWYgIiR7RH0ke2xpYmRpcn0vb3BlbnNzbC9lbmdpbmVzL2xpYnRwbS5zby4wLjAuMCIgIiR7RH0ke2xpYmRpcn0vc3NsL2VuZ2luZXMvbGlidHBtLnNvIgotICAgIG12IC1mICIke0R9JHtsaWJkaXJ9L29wZW5zc2wvZW5naW5lcy9saWJ0cG0ubGEiICIke0R9JHtsaWJkaXJ9L3NzbC9lbmdpbmVzL2xpYnRwbS5sYSIKLSAgICBybSAtcmYgIiR7RH0ke2xpYmRpcn0vb3BlbnNzbCIKLX0KLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMvbGlidHBtLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLy5kZWJ1ZyBcCi0gICAgJHtsaWJkaXJ9L2VuZ2luZXMvLmRlYnVnIFwKLSAgICAke3ByZWZpeH0vbG9jYWwvc3NsL2xpYi9lbmdpbmVzLy5kZWJ1ZyBcCi0iCi1GSUxFU18ke1BOfSArPSAiXAotICAgICR7bGliZGlyfS9zc2wvZW5naW5lcy9saWJ0cG0uc28qIFwKLSAgICAke2xpYmRpcn0vZW5naW5lcy9saWJ0cG0uc28qIFwKLSAgICAke2xpYmRpcn0vbGlidHBtLnNvKiBcCi0gICAgJHtwcmVmaXh9L2xvY2FsL3NzbC9saWIvZW5naW5lcy9saWJ0cG0uc28qIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYmNyeXB0byBsaWJ0c3BpIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZGlyIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvb3BlbnNzbC10cG0tZW5naW5lXzAuNS4wLmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9vcGVuc3NsLXRwbS1lbmdpbmUvb3BlbnNzbC10cG0tZW5naW5lXzAuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOThiNzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL29wZW5zc2wtdHBtLWVuZ2luZS9vcGVuc3NsLXRwbS1lbmdpbmVfMC41LjAuYmIKQEAgLTAsMCArMSw2NSBAQAorREVTQ1JJUFRJT04gPSAiT3BlblNTTCBzZWN1cmUgZW5naW5lIGJhc2VkIG9uIFRQTSBoYXJkd2FyZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZ2Vyc3RuZXIvb3BlbnNzbF90cG1fZW5naW5lIgorU0VDVElPTiA9ICJzZWN1cml0eS90cG0iCisKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTExZjBlZTNhZjQ3NWM4NWI5MDc0MjZlMjg1YzliYjUyIgorCitERVBFTkRTICs9ICJvcGVuc3NsIHRyb3VzZXJzIgorCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL21nZXJzdG5lci9vcGVuc3NsX3RwbV9lbmdpbmUuZ2l0IFwKKyAgICBmaWxlOi8vMDAwMS1jcmVhdGUtdHBtLWtleS1zdXBwb3J0LXdlbGwta25vd24ta2V5LW9wdGlvbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItbGlidHBtLXN1cHBvcnQtZW52LVRQTV9TUktfUFcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtcGFyc2UtYW4tZW5jcnlwdGVkLXRwbS1TUkstcGEucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LXRwbS1vcGVuc3NsLXRwbS1lbmdpbmUtY2hhbmdlLXZhcmlhYmxlLWMtdHlwZS1mcm9tLWMucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVuc3NsMTFfYnVpbGRfZml4LnBhdGNoIFwKKyIKK1NSQ1JFViA9ICJiMjhkZTUwNjVlNmViOWFhNWQ1YWZlMjI3NjkwNGY3NjI0YzJjYmFmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisKKyMgVGhlIGRlZmluaXRpb25zIGJlbG93IGFyZSB1c2VkIHRvIGRlY3J5cHQgdGhlIHNyayBwYXNzd29yZC4KKyMgSXQgaXMgYWxsb3dlZCB0byBkZWZpbmUgdGhlIHZhbHVlcyBpbiAzIGZvcm1zOiBzdHJpbmcsIGhleCBudW1iZXIgYW5kCisjIHRoZSBoeWJyaWQsIGUuZywKKyMgc3JrX2RlY19wdyA9ICJpbmNlbmRpYSIKKyMgc3JrX2RlY19wdyA9ICJceDY5XHg2ZVx4NjNceDY1XHg2ZVx4NjRceDY5XHg2MSIKKyMgc3JrX2RlY19wdyA9ICJceDEiIm5jIiJceDMiIm5kIiJceDEiImEiCisjCisjIER1ZSB0byB0aGUgbGltaXQgb2YgZXNjYXBlIGNoYXJhY3RlciwgdGhlIGh5YnJpZCBtdXN0IGJlIHdyaXR0ZW4gaW4KKyMgYWJvdmUgc3R5bGUuIFRoZSBhY3R1YWwgdmFsdWVzIGRlZmluZWQgYmVsb3cgaW4gQyBjb2RlIHN0eWxlIGFyZToKKyMgc3JrX2RlY19wd1tdID0geyAweDAxLCAnbicsICdjJywgMHgwMywgJ24nLCAnZCcsIDB4MDEsICdhJyB9OworIyBzcmtfZGVjX3NhbHRbXSA9IHsgJ3InLCAweDAwLCAweDAwLCAndCcgfTsKK3Nya19kZWNfcHcgPz0gIlxcIlxcXHgxXFwiXFwibmNcXCJcXCJcXFx4M1xcIlxcIm5kXFwiXFwiXFxceDFcXCJcXCJhXFwiIgorc3JrX2RlY19zYWx0ID89ICJcXCJyXFwiXFwiXFxceDAwXFxceDAwXFwiXFwidFxcIiIKKworQ0ZMQUdTX2FwcGVuZCArPSAiLURTUktfREVDX1BXPSR7c3JrX2RlY19wd30gLURTUktfREVDX1NBTFQ9JHtzcmtfZGVjX3NhbHR9IgorCisjIFVuY29tbWVudCBiZWxvdyBsaW5lIGlmIHVzaW5nIHRoZSBwbGFpbiBzcmsgcGFzc3dvcmQgZm9yIGRldmVsb3BtZW50CisjQ0ZMQUdTX2FwcGVuZCArPSAiLURUUE1fU1JLX1BMQUlOX1BXIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBjZCAke0J9CisgICAgY3AgTElDRU5TRSBDT1BZSU5HCisgICAgdG91Y2ggTkVXUyBBVVRIT1JTIENoYW5nZUxvZyBSRUFETUUKK30KKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vc3NsL2VuZ2luZXMtMS4xL3RwbS5sYSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgICR7bGliZGlyfS9zc2wvZW5naW5lcy0xLjEvLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vZW5naW5lcy0xLjEvLmRlYnVnIFwKKyAgICAke3ByZWZpeH0vbG9jYWwvc3NsL2xpYi9lbmdpbmVzLTEuMS8uZGVidWcgXAorIgorRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vc3NsL2VuZ2luZXMtMS4xL3RwbS5zbyogXAorICAgICR7bGliZGlyfS9lbmdpbmVzLTEuMS90cG0uc28qIFwKKyAgICAke2xpYmRpcn0vbGlidHBtLnNvKiBcCisgICAgJHtwcmVmaXh9L2xvY2FsL3NzbC9saWIvZW5naW5lcy0xLjEvdHBtLnNvKiBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJjcnlwdG8gbGlidHNwaSIKKworSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmRpciIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vcGNyLWV4dGVuZC9maWxlcy9maXhfb3BlbnNzbDExX2J1aWxkLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9wY3ItZXh0ZW5kL2ZpbGVzL2ZpeF9vcGVuc3NsMTFfYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyZDQzNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vcGNyLWV4dGVuZC9maWxlcy9maXhfb3BlbnNzbDExX2J1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0VuYWJsZSBidWlsZGluZyB3aXRoIG9wZW5zc2wgMS4xCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworSW5kZXg6IGdpdC9zcmMvcGNyLWV4dGVuZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL3Bjci1leHRlbmQuYworKysrIGdpdC9zcmMvcGNyLWV4dGVuZC5jCitAQCAtMTE4LDcgKzExOCw3IEBAIGR1bXBfYnVmIChGSUxFICpmaWxlLCBjaGFyICpidWYsIHNpemVfdAorIHN0YXRpYyB1bnNpZ25lZCBjaGFyKgorIHNoYTFfZmlsZSAoRklMRSAqZmlsZSwgdW5zaWduZWQgaW50ICpoYXNoX2xlbikKKyB7CistICAgIEVWUF9NRF9DVFggY3R4ID0geyAwIH07CisrICAgIEVWUF9NRF9DVFggKmN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEwsICpoYXNoID0gTlVMTDsKKyAgICAgc2l6ZV90IG51bV9yZWFkID0gMDsKKyAKK0BAIC0xMjcsNyArMTI3LDcgQEAgc2hhMV9maWxlIChGSUxFICpmaWxlLCB1bnNpZ25lZCBpbnQgKmhhcworICAgICAgICAgcGVycm9yICgibWFsbG9jOlxuIik7CisgICAgICAgICBnb3RvIHNoYTFfZmFpbDsKKyAgICAgfQorLSAgICBpZiAoRVZQX0RpZ2VzdEluaXQgKCZjdHgsIEVWUF9zaGExICgpKSA9PSAwKSB7CisrICAgIGlmIChFVlBfRGlnZXN0SW5pdCAoY3R4LCBFVlBfc2hhMSAoKSkgPT0gMCkgeworICAgICAgICAgRVJSX3ByaW50X2Vycm9yc19mcCAoc3RkZXJyKTsKKyAgICAgICAgIGdvdG8gc2hhMV9mYWlsOworICAgICB9CitAQCAtMTM1LDcgKzEzNSw3IEBAIHNoYTFfZmlsZSAoRklMRSAqZmlsZSwgdW5zaWduZWQgaW50ICpoYXMKKyAgICAgICAgIG51bV9yZWFkID0gZnJlYWQgKGJ1ZiwgMSwgQlVGX1NJWkUsIGZpbGUpOworICAgICAgICAgaWYgKG51bV9yZWFkIDw9IDApCisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBpZiAoRVZQX0RpZ2VzdFVwZGF0ZSAoJmN0eCwgYnVmLCBudW1fcmVhZCkgPT0gMCkgeworKyAgICAgICAgaWYgKEVWUF9EaWdlc3RVcGRhdGUgKGN0eCwgYnVmLCBudW1fcmVhZCkgPT0gMCkgeworICAgICAgICAgICAgIEVSUl9wcmludF9lcnJvcnNfZnAgKHN0ZGVycik7CisgICAgICAgICAgICAgZ290byBzaGExX2ZhaWw7CisgICAgICAgICB9CitAQCAtMTQ5LDcgKzE0OSw3IEBAIHNoYTFfZmlsZSAoRklMRSAqZmlsZSwgdW5zaWduZWQgaW50ICpoYXMKKyAgICAgICAgIHBlcnJvciAoImNhbGxvYyBvZiBoYXNoIGJ1ZmZlcjpcbiIpOworICAgICAgICAgZ290byBzaGExX2ZhaWw7CisgICAgIH0KKy0gICAgaWYgKEVWUF9EaWdlc3RGaW5hbCAoJmN0eCwgaGFzaCwgaGFzaF9sZW4pID09IDApIHsKKysgICAgaWYgKEVWUF9EaWdlc3RGaW5hbCAoY3R4LCBoYXNoLCBoYXNoX2xlbikgPT0gMCkgeworICAgICAgICAgRVJSX3ByaW50X2Vycm9yc19mcCAoc3RkZXJyKTsKKyAgICAgICAgIGdvdG8gc2hhMV9mYWlsOworICAgICB9CmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3Bjci1leHRlbmQvcGNyLWV4dGVuZF9naXQuYmIgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3Bjci1leHRlbmQvcGNyLWV4dGVuZF9naXQuYmIKaW5kZXggMGNjNGY2My4uZjgzNDdiNyAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS9wY3ItZXh0ZW5kL3Bjci1leHRlbmRfZ2l0LmJiCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vcGNyLWV4dGVuZC9wY3ItZXh0ZW5kX2dpdC5iYgpAQCAtOSw3ICs5LDggQEAKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIFNSQ1JFViA9ICJjMDJhZDhmNjI4YjNkOTlmNmQ0YzA4N2I0MDJmZTMxYTQwZWU2MzE2IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmxpaHAvcGNyLWV4dGVuZC5naXQgIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZsaWhwL3Bjci1leHRlbmQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9vcGVuc3NsMTFfYnVpbGQucGF0Y2ggIgogCiBpbmhlcml0IGF1dG90b29scwogCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3N3dHBtL3N3dHBtXzEuMC5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vc3d0cG0vc3d0cG1fMS4wLmJiCmluZGV4IDc0NzYwMjAuLjNmZTEzOTMgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vc3d0cG0vc3d0cG1fMS4wLmJiCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vc3d0cG0vc3d0cG1fMS4wLmJiCkBAIC0zLDIzICszLDIxIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mZTgwOTJjODMyYjcxZWYyMGRmZTRjNmQzZGVjYjNhOCIKIFNFQ1RJT04gPSAiYXBwcyIKIAotREVQRU5EUyA9ICJsaWJ0YXNuMSBleHBlY3Qgc29jYXQgZ2xpYi0yLjAgbGlidHBtIGxpYnRwbS1uYXRpdmUiCitERVBFTkRTID0gImxpYnRhc24xIGV4cGVjdCBzb2NhdCBnbGliLTIuMCBuZXQtdG9vbHMtbmF0aXZlIGxpYnRwbSBsaWJ0cG0tbmF0aXZlIgogCiAjIGNvbmZpZ3VyZSBjaGVja3MgZm9yIHRoZSB0b29scyBhbHJlYWR5IGR1cmluZyBjb21waWxhdGlvbiBhbmQKICMgdGhlbiBzd3RwbV9zZXR1cCBuZWVkcyB0aGVtIGF0IHJ1bnRpbWUKIERFUEVORFMgKz0gInRwbS10b29scy1uYXRpdmUgZXhwZWN0LW5hdGl2ZSBzb2NhdC1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSArPSAidHBtLXRvb2xzIgogCi1TUkNSRVYgPSAiNGY0ZjJmMGE3ZTMxOTVmNmRmOGQyMzVkNTg2MzBhMDhlNjk0MDNkOCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zdGVmYW5iZXJnZXIvc3d0cG0uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeF9saWJfc2VhcmNoX3BhdGgucGF0Y2ggXAorU1JDUkVWID0gIjk0YmI5ZjJkNzE2ZDA5YmNjNmNkMmEyZTAzMzAxOGY4NTkyMDA4ZTciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3RlZmFuYmVyZ2VyL3N3dHBtLmdpdDticmFuY2g9dHBtMi1wcmV2aWV3LnYyIFwKICAgICAgICAgICAgZmlsZTovL2ZpeF9mY250bF9oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2lvY3RsX2gucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogUEFSQUxMRUxfTUFLRSA9ICIiCiAKIFRTU19VU0VSPSJ0c3MiCkBAIC0zNiwyMSArMzQsMTIgQEAKIAogZXhwb3J0IFNFQVJDSF9ESVIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IgogCi0jIGR1cCBib290c3RyYXAgCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbGlidG9vbGl6ZSAtLWZvcmNlIC0tY29weQotCWF1dG9oZWFkZXIKLQlhY2xvY2FsCi0JYXV0b21ha2UgLS1hZGQtbWlzc2luZyAtYwotCWF1dG9jb25mCi19Ci0KIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAke1RTU19VU0VSfSIKIFVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWcgJHtUU1NfR1JPVVB9IC0taG9tZS1kaXIgIFwKICAgICAtLW5vLWNyZWF0ZS1ob21lICAtLXNoZWxsIC9iaW4vZmFsc2UgJHtCUE59IgogCi1SREVQRU5EU18ke1BOfSA9ICJsaWJ0cG0gZXhwZWN0IHNvY2F0IGJhc2giCitSREVQRU5EU18ke1BOfSA9ICJsaWJ0cG0gZXhwZWN0IHNvY2F0IGJhc2ggdHBtLXRvb2xzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL2ZpbGVzLzA0LWZpeC1GVEJGUy1jbGFuZy5wYXRjaCBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL2ZpbGVzLzA0LWZpeC1GVEJGUy1jbGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDE4ZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvZmlsZXMvMDQtZml4LUZUQkZTLWNsYW5nLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK1RpdGxlOiBGaXggRlRCRlMgd2l0aCBjbGFuZyBkdWUgdG8gdW5pbml0aWFsaXplZCB2YWx1ZXMKK0RhdGU6IDIwMTUtMDYtMjgKK0F1dGhvcjogQWxleGFuZGVyIDxzYW5lazIzOTk0QGdtYWlsLmNvbT4KK0J1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNzUzMDYzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK3RwbS10b29sc18xLjMuOS4xLTAuMS5kZWJpYW4udGFyCisKK1NpZ25lZC1vZmYtYnk6IEFybWluIGt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+CisKKy0tLSB0cG0tdG9vbHMtMS4zLjgvc3JjL3RwbV9tZ210L3RwbV9wcmVzZW50LmMJMjAxMi0wNS0xNyAyMTo0OTo1OC4wMDAwMDAwMDAgKzA0MDAKKysrKyB0cG0tdG9vbHMtMS4zLjgtbXkvc3JjL3RwbV9tZ210L3RwbV9wcmVzZW50LmMJMjAxNC0wNi0yOSAwMTowMToxMS41MDIwODE0NjggKzA0MDAKK0BAIC0xNjUsNyArMTY1LDcgQEAKKyAKKyAJVFNTX0JPT0wgYkNtZCwgYkh3ZDsKKyAJQk9PTCBiUmM7CistCVRTU19IUE9MSUNZIGhUcG1Qb2xpY3k7CisrCVRTU19IUE9MSUNZIGhUcG1Qb2xpY3kgPSAwOworIAljaGFyICpwd2QgPSBOVUxMOworIAlpbnQgcHN3ZF9sZW47CisgCWNoYXIgcnNwWzVdOworLS0tIHRwbS10b29scy0xLjMuOC9zcmMvdHBtX21nbXQvdHBtX3Rha2Vvd25lcnNoaXAuYwkyMDEwLTA5LTMwIDIxOjI4OjA5LjAwMDAwMDAwMCArMDQwMAorKysrIHRwbS10b29scy0xLjMuOC1teS9zcmMvdHBtX21nbXQvdHBtX3Rha2Vvd25lcnNoaXAuYwkyMDE0LTA2LTI5IDAxOjAxOjUxLjA2OTM3MzY1NSArMDQwMAorQEAgLTY3LDcgKzY3LDcgQEAKKyAJY2hhciAqc3pTcmtQYXNzd2QgPSBOVUxMOworIAlpbnQgdHBtX2xlbiwgc3JrX2xlbjsKKyAJVFNTX0hUUE0gaFRwbTsKKy0JVFNTX0hLRVkgaFNyazsKKysJVFNTX0hLRVkgaFNyayA9IDA7CisgCVRTU19GTEFHIGZTcmtBdHRyczsKKyAJVFNTX0hQT0xJQ1kgaFRwbVBvbGljeSwgaFNya1BvbGljeTsKKyAJaW50IGlSYyA9IC0xOworLS0tIHRwbS10b29scy0xLjMuOC9zcmMvdHBtX21nbXQvdHBtX252d3JpdGUuYwkyMDExLTA4LTE3IDE2OjIwOjM1LjAwMDAwMDAwMCArMDQwMAorKysrIHRwbS10b29scy0xLjMuOC1teS9zcmMvdHBtX21nbXQvdHBtX252d3JpdGUuYwkyMDE0LTA2LTI5IDAxOjAyOjQ1LjgzNjM5NzE3MiArMDQwMAorQEAgLTIyMCw3ICsyMjAsNyBAQAorIAkJY2xvc2UoZmQpOworIAkJZmQgPSAtMTsKKyAJfSBlbHNlIGlmIChmaWxsdmFsdWUgPj0gMCkgeworLQkJaWYgKGxlbmd0aCA8IDApIHsKKysJCWlmIChsZW5ndGggPT0gMCkgeworIAkJCWxvZ0Vycm9yKF8oIlJlcXVpcmluZyBzaXplIHBhcmFtZXRlci5cbiIpKTsKKyAJCQlyZXR1cm4gLTE7CisgCQl9CistLS0gdHBtLXRvb2xzLTEuMy44L3NyYy9kYXRhX21nbXQvZGF0YV9wcm90ZWN0LmMJMjAxMi0wNS0xNyAyMTo0OTo1OC4wMDAwMDAwMDAgKzA0MDAKKysrKyB0cG0tdG9vbHMtMS4zLjgtbXkvc3JjL2RhdGFfbWdtdC9kYXRhX3Byb3RlY3QuYwkyMDE0LTA2LTI5IDAxOjAzOjQ5Ljg2MzI1NDQ1OSArMDQwMAorQEAgLTQzMiw4ICs0MzIsOCBAQAorIAorIAljaGFyICpwc3pQaW4gPSBOVUxMOworIAorLQlDS19SViAgICAgICAgICAgICAgcnY7CistCUNLX1NFU1NJT05fSEFORExFICBoU2Vzc2lvbjsKKysJQ0tfUlYgICAgICAgICAgICAgIHJ2ID0gMDsKKysJQ0tfU0VTU0lPTl9IQU5ETEUgIGhTZXNzaW9uID0gMDsKKyAJQ0tfT0JKRUNUX0hBTkRMRSAgIGhPYmplY3Q7CisgCUNLX01FQ0hBTklTTSAgICAgICB0TWVjaGFuaXNtID0geyBDS01fQUVTX0VDQiwgTlVMTCwgMCB9OworIApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvZmlsZXMvMDUtb3BlbnNzbDEuMV9maXhfZGF0YV9tZ210LnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvZmlsZXMvMDUtb3BlbnNzbDEuMV9maXhfZGF0YV9tZ210LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYTI2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbS10b29scy9maWxlcy8wNS1vcGVuc3NsMS4xX2ZpeF9kYXRhX21nbXQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0F1dGhvcjogUGhpbGlwcCBLZXJuIDxwa2VybkBkZWJpYW4ub3JnPgorU3ViamVjdDogRml4IG9wZW5zc2wxLjEgc3VwcG9ydCBpbiBkYXRhX21nbXQKK0RhdGU6IFR1ZSwgMzEgSmFuIDIwMTcgMjI6NDA6MTAgKzAxMDAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAordHBtLXRvb2xzXzEuMy45LjEtMC4xLmRlYmlhbi50YXIKKworU2lnbmVkLW9mZi1ieTogQXJtaW4ga3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworLS0tCisgc3JjL2RhdGFfbWdtdC9kYXRhX2ltcG9ydC5jIHwgICA2MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2RhdGFfbWdtdC9kYXRhX2ltcG9ydC5jCisrKysgYi9zcmMvZGF0YV9tZ210L2RhdGFfaW1wb3J0LmMKK0BAIC0zNzIsNyArMzcyLDcgQEAgcmVhZFg1MDlDZXJ0KCBjb25zdCBjaGFyICAqYV9wc3pGaWxlLAorIAkJZ290byBvdXQ7CisgCX0KKyAKKy0JaWYgKCBFVlBfUEtFWV90eXBlKCBwS2V5LT50eXBlICkgIT0gRVZQX1BLRVlfUlNBICkgeworKwlpZiAoIEVWUF9QS0VZX2Jhc2VfaWQoIHBLZXkgKSAhPSBFVlBfUEtFWV9SU0EgKSB7CisgCQlsb2dFcnJvciggVE9LRU5fUlNBX0tFWV9FUlJPUiApOworIAorIAkJWDUwOV9mcmVlKCBwWDUwOSApOworQEAgLTY5MSw4ICs2OTEsMTMgQEAgY3JlYXRlUnNhUHViS2V5T2JqZWN0KCBSU0EKKyAKKyAJaW50ICByYyA9IC0xOworIAorLQlpbnQgIG5MZW4gPSBCTl9udW1fYnl0ZXMoIGFfcFJzYS0+biApOworLQlpbnQgIGVMZW4gPSBCTl9udW1fYnl0ZXMoIGFfcFJzYS0+ZSApOworKwljb25zdCBCSUdOVU0gKmJuOworKwljb25zdCBCSUdOVU0gKmJlOworKworKwlSU0FfZ2V0MF9rZXkoIGFfcFJzYSwgJmJuLCAmYmUsIE5VTEwgKTsKKysKKysJaW50ICBuTGVuID0gQk5fbnVtX2J5dGVzKCBibiApOworKwlpbnQgIGVMZW4gPSBCTl9udW1fYnl0ZXMoIGJlICk7CisgCisgCUNLX1JWICBydjsKKyAKK0BAIC03MzIsOCArNzM3LDggQEAgY3JlYXRlUnNhUHViS2V5T2JqZWN0KCBSU0EKKyAJfQorIAorIAkvLyBHZXQgYmluYXJ5IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgUlNBIGtleSBpbmZvcm1hdGlvbgorLQlCTl9ibjJiaW4oIGFfcFJzYS0+biwgbiApOworLQlCTl9ibjJiaW4oIGFfcFJzYS0+ZSwgZSApOworKwlCTl9ibjJiaW4oIGJuLCBuICk7CisrCUJOX2JuMmJpbiggYmUsIGUgKTsKKyAKKyAJLy8gQ3JlYXRlIHRoZSBSU0EgcHVibGljIGtleSBvYmplY3QKKyAJcnYgPSBjcmVhdGVPYmplY3QoIGFfaFNlc3Npb24sIHRBdHRyLCB1bEF0dHJDb3VudCwgYV9oT2JqZWN0ICk7CitAQCAtNzYwLDE0ICs3NjUsMjcgQEAgY3JlYXRlUnNhUHJpdktleU9iamVjdCggUlNBCisgCisgCWludCAgcmMgPSAtMTsKKyAKKy0JaW50ICBuTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPm4gKTsKKy0JaW50ICBlTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPmUgKTsKKy0JaW50ICBkTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPmQgKTsKKy0JaW50ICBwTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPnAgKTsKKy0JaW50ICBxTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPnEgKTsKKy0JaW50ICBkbXAxTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPmRtcDEgKTsKKy0JaW50ICBkbXExTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPmRtcTEgKTsKKy0JaW50ICBpcW1wTGVuID0gQk5fbnVtX2J5dGVzKCBhX3BSc2EtPmlxbXAgKTsKKysJY29uc3QgQklHTlVNICpibjsKKysJY29uc3QgQklHTlVNICpiZTsKKysJY29uc3QgQklHTlVNICpiZDsKKysJY29uc3QgQklHTlVNICpicDsKKysJY29uc3QgQklHTlVNICpicTsKKysJY29uc3QgQklHTlVNICpiZG1wMTsKKysJY29uc3QgQklHTlVNICpiZG1xMTsKKysJY29uc3QgQklHTlVNICpiaXFtcDsKKysKKysJUlNBX2dldDBfa2V5KCBhX3BSc2EsICZibiwgJmJlLCAmYmQpOworKwlSU0FfZ2V0MF9mYWN0b3JzKCBhX3BSc2EsICZicCwgJmJxKTsKKysJUlNBX2dldDBfY3J0X3BhcmFtcyggYV9wUnNhLCAmYmRtcDEsICZiZG1xMSwgJmJpcW1wICk7CisrCisrCWludCAgbkxlbiA9IEJOX251bV9ieXRlcyggYm4gKTsKKysJaW50ICBlTGVuID0gQk5fbnVtX2J5dGVzKCBiZSApOworKwlpbnQgIGRMZW4gPSBCTl9udW1fYnl0ZXMoIGJkICk7CisrCWludCAgcExlbiA9IEJOX251bV9ieXRlcyggYnAgKTsKKysJaW50ICBxTGVuID0gQk5fbnVtX2J5dGVzKCBicSApOworKwlpbnQgIGRtcDFMZW4gPSBCTl9udW1fYnl0ZXMoIGJkbXAxICk7CisrCWludCAgZG1xMUxlbiA9IEJOX251bV9ieXRlcyggYmRtcTEgKTsKKysJaW50ICBpcW1wTGVuID0gQk5fbnVtX2J5dGVzKCBiaXFtcCApOworIAorIAlDS19SViAgcnY7CisgCitAQCAtODIxLDE0ICs4MzksMTQgQEAgY3JlYXRlUnNhUHJpdktleU9iamVjdCggUlNBCisgCX0KKyAKKyAJLy8gR2V0IGJpbmFyeSByZXByZXNlbnRhdGlvbnMgb2YgdGhlIFJTQSBrZXkgaW5mb3JtYXRpb24KKy0JQk5fYm4yYmluKCBhX3BSc2EtPm4sIG4gKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPmUsIGUgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPmQsIGQgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPnAsIHAgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPnEsIHEgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPmRtcDEsIGRtcDEgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPmRtcTEsIGRtcTEgKTsKKy0JQk5fYm4yYmluKCBhX3BSc2EtPmlxbXAsIGlxbXAgKTsKKysJQk5fYm4yYmluKCBibiwgbiApOworKwlCTl9ibjJiaW4oIGJlLCBlICk7CisrCUJOX2JuMmJpbiggYmQsIGQgKTsKKysJQk5fYm4yYmluKCBicCwgcCApOworKwlCTl9ibjJiaW4oIGJxLCBxICk7CisrCUJOX2JuMmJpbiggYmRtcDEsIGRtcDEgKTsKKysJQk5fYm4yYmluKCBiZG1xMSwgZG1xMSApOworKwlCTl9ibjJiaW4oIGJpcW1wLCBpcW1wICk7CisgCisgCS8vIENyZWF0ZSB0aGUgUlNBIHByaXZhdGUga2V5IG9iamVjdAorIAlydiA9IGNyZWF0ZU9iamVjdCggYV9oU2Vzc2lvbiwgdEF0dHIsIHVsQXR0ckNvdW50LCBhX2hPYmplY3QgKTsKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL2ZpbGVzL29wZW5zc2wxLjFfZml4LnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvZmlsZXMvb3BlbnNzbDEuMV9maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFlM2Y3MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL2ZpbGVzL29wZW5zc2wxLjFfZml4LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBkYXRlIHRvIGJ1aWxkIHdpdGggb3BlbnNzbCAxLjEueAorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgorCitJbmRleDogZ2l0L3NyYy9jbWRzL3RwbV9leHRlbmRwY3IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3NyYy9jbWRzL3RwbV9leHRlbmRwY3IuYworKysrIGdpdC9zcmMvY21kcy90cG1fZXh0ZW5kcGNyLmMKK0BAIC0xMzYsNyArMTM2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorIAkJdW5zaWduZWQgY2hhciBtc2dbRVZQX01BWF9NRF9TSVpFXTsKKyAJCXVuc2lnbmVkIGludCBtc2dsZW47CistCQlFVlBfTURfQ1RYIGN0eDsKKysJCUVWUF9NRF9DVFggKmN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisgCQlFVlBfRGlnZXN0SW5pdCgmY3R4LCBFVlBfc2hhMSgpKTsKKyAJCXdoaWxlICgobGluZUxlbiA9IEJJT19yZWFkKGJpbiwgbGluZSwgc2l6ZW9mKGxpbmUpKSkgPiAwKQorIAkJCUVWUF9EaWdlc3RVcGRhdGUoJmN0eCwgbGluZSwgbGluZUxlbik7CmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbS10b29scy9maWxlcy90cG0tdG9vbHMtZXh0ZW5kcGNyLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvZmlsZXMvdHBtLXRvb2xzLWV4dGVuZHBjci5wYXRjaAppbmRleCBhYjVlNjgzLi40MDE1MGFmIDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbS10b29scy9maWxlcy90cG0tdG9vbHMtZXh0ZW5kcGNyLnBhdGNoCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL2ZpbGVzL3RwbS10b29scy1leHRlbmRwY3IucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogdHBtLXRvb2xzLTEuMy44L2luY2x1ZGUvdHBtX3RzcGkuaAorSW5kZXg6IGdpdC9pbmNsdWRlL3RwbV90c3BpLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0cG0tdG9vbHMtMS4zLjgub3JpZy9pbmNsdWRlL3RwbV90c3BpLmgJMjAxMS0wOC0xNyAwODoyMDozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyB0cG0tdG9vbHMtMS4zLjgvaW5jbHVkZS90cG1fdHNwaS5oCTIwMTMtMDEtMDUgMjM6MjY6MzEuNTcxNTk4MjE3IC0wNTAwCi1AQCAtMTE3LDYgKzExNywxMCBAQAorLS0tIGdpdC5vcmlnL2luY2x1ZGUvdHBtX3RzcGkuaAorKysrIGdpdC9pbmNsdWRlL3RwbV90c3BpLmgKK0BAIC0xMTcsNiArMTE3LDEwIEBAIFRTU19SRVNVTFQgdHBtUGNyUmVhZChUU1NfSFRQTSBhX2hUcG0sIFUKICAJCQlVSU5UMzIgKmFfUGNyU2l6ZSwgQllURSAqKmFfUGNyVmFsdWUpOwogIFRTU19SRVNVTFQgcGNyY29tcG9zaXRlU2V0UGNyVmFsdWUoVFNTX0hQQ1JTIGFfaFBjcnMsIFVJTlQzMiBhX0lkeCwKICAJCQkJCVVJTlQzMiBhX1BjclNpemUsIEJZVEUgKmFfUGNyVmFsdWUpOwpAQCAtMTMsMTEgKzEzLDExIEBACiAgI2lmZGVmIFRTU19MSUJfSVNfMTIKICBUU1NfUkVTVUxUIHVubG9hZFZlcnNpb25JbmZvKFVJTlQ2NCAqb2Zmc2V0LCBCWVRFICpibG9iLCBUUE1fQ0FQX1ZFUlNJT05fSU5GTyAqdik7CiAgVFNTX1JFU1VMVCBwY3Jjb21wb3NpdGVTZXRQY3JMb2NhbGl0eShUU1NfSFBDUlMgYV9oUGNycywgVUlOVDMyIGxvY2FsaXR5VmFsdWUpOwotSW5kZXg6IHRwbS10b29scy0xLjMuOC9saWIvdHBtX3RzcGkuYworSW5kZXg6IGdpdC9saWIvdHBtX3RzcGkuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRwbS10b29scy0xLjMuOC5vcmlnL2xpYi90cG1fdHNwaS5jCTIwMTEtMDgtMTcgMDg6MjA6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgdHBtLXRvb2xzLTEuMy44L2xpYi90cG1fdHNwaS5jCTIwMTMtMDEtMDUgMjM6Mjc6MzcuNzMxNTkzNDkwIC0wNTAwCi1AQCAtNTk0LDYgKzU5NCwyMCBAQAorLS0tIGdpdC5vcmlnL2xpYi90cG1fdHNwaS5jCisrKysgZ2l0L2xpYi90cG1fdHNwaS5jCitAQCAtNTk0LDYgKzU5NCwyMCBAQCBwY3Jjb21wb3NpdGVTZXRQY3JWYWx1ZShUU1NfSFBDUlMgYV9oUGNyCiAgCXJldHVybiByZXN1bHQ7CiAgfQogIApAQCAtMzgsMTAgKzM4LDEwIEBACiAgI2lmZGVmIFRTU19MSUJfSVNfMTIKICAvKgogICAqIFRoZXNlIGdldFBhc3N3ZCBmdW5jdGlvbnMgd2lsbCB3cmFwIGNhbGxzIHRvIHRoZSBvdGhlciBmdW5jdGlvbnMgYW5kIGNoZWNrIHRvIHNlZSBpZiB0aGUgVFNTCi1JbmRleDogdHBtLXRvb2xzLTEuMy44L3NyYy9jbWRzL01ha2VmaWxlLmFtCitJbmRleDogZ2l0L3NyYy9jbWRzL01ha2VmaWxlLmFtCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdHBtLXRvb2xzLTEuMy44Lm9yaWcvc3JjL2NtZHMvTWFrZWZpbGUuYW0JMjAxMS0wOC0xNSAxMzo1MjowOC4wMDAwMDAwMDAgLTA0MDAKLSsrKyB0cG0tdG9vbHMtMS4zLjgvc3JjL2NtZHMvTWFrZWZpbGUuYW0JMjAxMy0wMS0wNSAyMzozMDo0Ni4yMjM1OTM2OTggLTA1MDAKKy0tLSBnaXQub3JpZy9zcmMvY21kcy9NYWtlZmlsZS5hbQorKysrIGdpdC9zcmMvY21kcy9NYWtlZmlsZS5hbQogQEAgLTIyLDYgKzIyLDcgQEAKICAjCiAgCkBAIC01MCwxNiArNTAsMTYgQEAKICAJCQl0cG1fdW5zZWFsZGF0YQogIAogIGlmIFRTU19MSUJfSVNfMTIKLUBAIC0zMyw0ICszNCw1IEBACi0gTERBREQJCT0JJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJ0cG1fdHNwaS5sYSAtbHRzcGkgJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJ0cG1fdW5zZWFsLmxhIC1sdHBtX3Vuc2VhbCAtbGNyeXB0bworQEAgLTMzLDQgKzM0LDUgQEAgZW5kaWYKKyBMREFERAkJPQkkKHRvcF9idWlsZGRpcikvbGliL2xpYnRwbV90c3BpLmxhIC1sdHNwaSAkKHRvcF9idWlsZGRpcikvbGliL2xpYnRwbV91bnNlYWwubGEgLWx0cG1fdW5zZWFsIC1sY3J5cHRvIEBJTlRMTElCU0AKICAKICB0cG1fc2VhbGRhdGFfU09VUkNFUyA9IHRwbV9zZWFsZGF0YS5jCiArdHBtX2V4dGVuZHBjcl9TT1VSQ0VTID0gdHBtX2V4dGVuZHBjci5jCiAgdHBtX3Vuc2VhbGRhdGFfU09VUkNFUyA9IHRwbV91bnNlYWxkYXRhLmMKLUluZGV4OiB0cG0tdG9vbHMtMS4zLjgvc3JjL2NtZHMvdHBtX2V4dGVuZHBjci5jCitJbmRleDogZ2l0L3NyYy9jbWRzL3RwbV9leHRlbmRwY3IuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIHRwbS10b29scy0xLjMuOC9zcmMvY21kcy90cG1fZXh0ZW5kcGNyLmMJMjAxMy0wMS0wNSAyMzozNzo0My40MDM1ODU1MTQgLTA1MDAKKy0tLSAvZGV2L251bGwKKysrKyBnaXQvc3JjL2NtZHMvdHBtX2V4dGVuZHBjci5jCiBAQCAtMCwwICsxLDE4MSBAQAogKy8qCiArICogVGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9mIHRoZSBPcmlnaW5hbCBDb2RlIGlzIEludGVybmF0aW9uYWwKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL3RwbS10b29sc18xLjMuOS4xLmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0tdG9vbHMvdHBtLXRvb2xzXzEuMy45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlZjE5ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL3RwbS10b29sc18xLjMuOS4xLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiVGhlIHRwbS10b29scyBwYWNrYWdlIGNvbnRhaW5zIGNvbW1hbmRzIHRvIGFsbG93IHRoZSBwbGF0Zm9ybSBhZG1pbmlzdHJhdG9yIHRoZSBhYmlsaXR5IHRvIG1hbmFnZSBhbmQgZGlhZ25vc2UgdGhlIHBsYXRmb3JtJ3MgVFBNLiIKK0RFU0NSSVBUSU9OID0gIiBcCisgIFRoZSB0cG0tdG9vbHMgcGFja2FnZSBjb250YWlucyBjb21tYW5kcyB0byBhbGxvdyB0aGUgcGxhdGZvcm0gYWRtaW5pc3RyYXRvciBcCisgIHRoZSBhYmlsaXR5IHRvIG1hbmFnZSBhbmQgZGlhZ25vc2UgdGhlIHBsYXRmb3JtJ3MgVFBNLiAgQWRkaXRpb25hbGx5LCB0aGUgXAorICBwYWNrYWdlIGNvbnRhaW5zIGNvbW1hbmRzIHRvIHV0aWxpemUgc29tZSBvZiB0aGUgY2FwYWJpbGl0aWVzIGF2YWlsYWJsZSBcCisgIGluIHRoZSBUUE0gUEtDUyMxMSBpbnRlcmZhY2UgaW1wbGVtZW50ZWQgaW4gdGhlIG9wZW5DcnlwdG9raSBwcm9qZWN0LiBcCisgICIKK1NFQ1RJT04gPSAidHBtIgorTElDRU5TRSA9ICJDUEwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDU5ZThjZDYxNjVjYjRjMzFlMzUxZjJiNjkzODhmZDkiCisKK0RFUEVORFMgPSAibGlidHNwaSBvcGVuc3NsIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAidHJvdXNlcnMtbmF0aXZlIgorCitTUkNSRVYgPSAiYmRmOWYxYmM4ZjYzY2Q2ZmMzNzBjMmRlYjU4ZDAzYWM1NTA3OWU4NCIKK1NSQ19VUkkgPSAiIFwKKwlnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC90cm91c2Vycy90cG0tdG9vbHMgXAorCWZpbGU6Ly90cG0tdG9vbHMtZXh0ZW5kcGNyLnBhdGNoIFwKKwlmaWxlOi8vMDQtZml4LUZUQkZTLWNsYW5nLnBhdGNoIFwKKwlmaWxlOi8vMDUtb3BlbnNzbDEuMV9maXhfZGF0YV9tZ210LnBhdGNoIFwKKyAgICAgICAgZmlsZTovL29wZW5zc2wxLjFfZml4LnBhdGNoIFwKKwkiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBwbworCW1rZGlyIC1wIG00CisJY3AgLVIgcG9fLyogcG8vCisJdG91Y2ggcG8vTWFrZWZpbGUuaW4uaW4KKwl0b3VjaCBtNC9NYWtlZmlsZS5hbQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL3RwbS10b29sc19naXQuYmIgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbS10b29scy90cG0tdG9vbHNfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjcwYmZmLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtLXRvb2xzL3RwbS10b29sc19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSB0cG0tdG9vbHMgcGFja2FnZSBjb250YWlucyBjb21tYW5kcyB0byBhbGxvdyB0aGUgcGxhdGZvcm0gYWRtaW5pc3RyYXRvciB0aGUgYWJpbGl0eSB0byBtYW5hZ2UgYW5kIGRpYWdub3NlIHRoZSBwbGF0Zm9ybSdzIFRQTS4iCi1ERVNDUklQVElPTiA9ICIgXAotICBUaGUgdHBtLXRvb2xzIHBhY2thZ2UgY29udGFpbnMgY29tbWFuZHMgdG8gYWxsb3cgdGhlIHBsYXRmb3JtIGFkbWluaXN0cmF0b3IgXAotICB0aGUgYWJpbGl0eSB0byBtYW5hZ2UgYW5kIGRpYWdub3NlIHRoZSBwbGF0Zm9ybSdzIFRQTS4gIEFkZGl0aW9uYWxseSwgdGhlIFwKLSAgcGFja2FnZSBjb250YWlucyBjb21tYW5kcyB0byB1dGlsaXplIHNvbWUgb2YgdGhlIGNhcGFiaWxpdGllcyBhdmFpbGFibGUgXAotICBpbiB0aGUgVFBNIFBLQ1MjMTEgaW50ZXJmYWNlIGltcGxlbWVudGVkIGluIHRoZSBvcGVuQ3J5cHRva2kgcHJvamVjdC4gXAotICAiCi1TRUNUSU9OID0gInRwbSIKLUxJQ0VOU0UgPSAiQ1BMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA1OWU4Y2Q2MTY1Y2I0YzMxZTM1MWYyYjY5Mzg4ZmQ5IgotCi1ERVBFTkRTID0gImxpYnRzcGkgb3BlbnNzbCIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInRyb3VzZXJzLW5hdGl2ZSIKLQotU1JDUkVWID0gIjVjNTEyNmJlZGYyZGE5NzkwNjM1OGFkY2ZiOGM0M2M4NmU3ZGQwZWUiCi1TUkNfVVJJID0gIiBcCi0JZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvdHJvdXNlcnMvdHBtLXRvb2xzIFwKLQlmaWxlOi8vdHBtLXRvb2xzLWV4dGVuZHBjci5wYXRjaCBcCi0JIgotCi1QViA9ICIxLjMuOS4xK2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgcG8KLQlta2RpciAtcCBtNAotCWNwIC1SIHBvXy8qIHBvLwotCXRvdWNoIHBvL01ha2VmaWxlLmluLmluCi0JdG91Y2ggbTQvTWFrZWZpbGUuYW0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTItYWJybWQvdHBtMi1hYnJtZF8xLjIuMC5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi1hYnJtZC90cG0yLWFicm1kXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWQ2ODQzLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi1hYnJtZC90cG0yLWFicm1kXzEuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJUUE0yIEFjY2VzcyBCcm9rZXIgJiBSZXNvdXJjZSBNYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIHN5c3RlbSBkYWVtb24gaW1wbGVtZW50aW5nIHRoZSBUUE0yIGFjY2VzcyBcCi1icm9rZXIgKFRBQikgJiBSZXNvdXJjZSBNYW5hZ2VyIChSTSkgc3BlYyBmcm9tIHRoZSBUQ0cuIFRoZSBkYWVtb24gKHRwbTItYWJybWQpIFwKLWlzIGltcGxlbWVudGVkIHVzaW5nIEdsaWIgYW5kIHRoZSBHT2JqZWN0IHN5c3RlbS4gSW4gdGhpcyBkb2N1bWVudGF0aW9uIGFuZCBcCi1pbiB0aGUgY29kZSB3ZSB1c2UgYHRwbTItYWJybWRgIGFuZCBgdGFicm1kYCBpbnRlcmNoYW5nZWFibHkuIFwKLSIKLVNFQ1RJT04gPSAic2VjdXJpdHkvdHBtIgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vTElDRU5TRTttZDU9NTAwYjJlNzQyYmVmYzNkYTAwNjg0ZDhhMWQ1ZmQ5ZGEiCi0KLURFUEVORFMgKz0gImF1dG9jb25mLWFyY2hpdmUgZGJ1cyBnbGliLTIuMCBwa2djb25maWcgdHBtMi4wLXRzcyBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiXAotICAgIGdpdDovL2dpdGh1Yi5jb20vMDFvcmcvdHBtMi1hYnJtZC5naXQgXAotICAgIGZpbGU6Ly90cG0yLWFicm1kLWluaXQuc2ggXAotICAgIGZpbGU6Ly90cG0yLWFicm1kLmRlZmF1bHQgXAotIgotU1JDUkVWID0gIjU5Y2UxMDA4ZTVmYTNiZDVhMTQzNDM3YjBmNzM5MDg1MWZkMjViZDgiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKLQotU1lTVEVNRF9QQUNLQUdFUyArPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidHBtMi1hYnJtZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgotCi1JTklUU0NSSVBUX05BTUUgPSAiJHtQTn0iCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAyIDMgNCA1IC4gc3RvcCAxOSAwIDEgNiAuIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHNzIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtTSAtZCAvdmFyL2xpYi90cG0gLXMgL2Jpbi9mYWxzZSAtZyB0c3MgdHNzIgotCi1QQUNLQUdFQ09ORklHID89InVkZXYiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9bm8iCi1QQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2cnVsZXNkaXI9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQsIC0td2l0aG91dC11ZGV2cnVsZXNkaXIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLSAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vdHBtMi1hYnJtZC1pbml0LnNoIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RwbTItYWJybWQiCi0KLSAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0IgotICAgIGluc3RhbGwgLW0gMDY0NCAiJHtXT1JLRElSfS90cG0yLWFicm1kLmRlZmF1bHQiICIke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3RwbTItYWJybWQiCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0tcHJlc2V0IgotCi1SREVQRU5EU18ke1BOfSArPSAibGliZ2NjIGRidXMtZ2xpYiBsaWJ0c3MyIGxpYnRjdGlkZXZpY2UgbGlidGN0aXNvY2tldCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTItYWJybWQvdHBtMi1hYnJtZF8yLjAuMi5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi1hYnJtZC90cG0yLWFicm1kXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNDczNzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTItYWJybWQvdHBtMi1hYnJtZF8yLjAuMi5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIlRQTTIgQWNjZXNzIEJyb2tlciAmIFJlc291cmNlIE1hbmFnZXIiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgc3lzdGVtIGRhZW1vbiBpbXBsZW1lbnRpbmcgdGhlIFRQTTIgYWNjZXNzIFwKK2Jyb2tlciAoVEFCKSAmIFJlc291cmNlIE1hbmFnZXIgKFJNKSBzcGVjIGZyb20gdGhlIFRDRy4gVGhlIGRhZW1vbiAodHBtMi1hYnJtZCkgXAoraXMgaW1wbGVtZW50ZWQgdXNpbmcgR2xpYiBhbmQgdGhlIEdPYmplY3Qgc3lzdGVtLiBJbiB0aGlzIGRvY3VtZW50YXRpb24gYW5kIFwKK2luIHRoZSBjb2RlIHdlIHVzZSBgdHBtMi1hYnJtZGAgYW5kIGB0YWJybWRgIGludGVyY2hhbmdlYWJseS4gXAorIgorU0VDVElPTiA9ICJzZWN1cml0eS90cG0iCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9MSUNFTlNFO21kNT01MDBiMmU3NDJiZWZjM2RhMDA2ODRkOGExZDVmZDlkYSIKKworREVQRU5EUyA9ICJhdXRvY29uZi1hcmNoaXZlIGRidXMgZ2xpYi0yLjAgdHBtMi4wLXRzcyBnbGliLTIuMC1uYXRpdmUgXAorICAgICAgICAgICAgbGlidHNzMiBsaWJ0c3MyLW11IGxpYnRzczItdGN0aS1kZXZpY2UgbGlidHNzMi10Y3RpLW1zc2ltIgorCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vMDFvcmcvdHBtMi1hYnJtZC5naXQgXAorICAgIGZpbGU6Ly90cG0yLWFicm1kLWluaXQuc2ggXAorICAgIGZpbGU6Ly90cG0yLWFicm1kLmRlZmF1bHQgXAorIgorU1JDUkVWID0gImQwMTIwYWNlNThkOTdiYzk1MjBjMGQ1NTg2NTdlYWNhODdhZTczYjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKKworU1lTVEVNRF9QQUNLQUdFUyArPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidHBtMi1hYnJtZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX05BTUUgPSAiJHtQTn0iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAyIDMgNCA1IC4gc3RvcCAxOSAwIDEgNiAuIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHNzIgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtTSAtZCAvdmFyL2xpYi90cG0gLXMgL2Jpbi9mYWxzZSAtZyB0c3MgdHNzIgorCitQQUNLQUdFQ09ORklHID89IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZCcsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9bm8iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKyAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vdHBtMi1hYnJtZC1pbml0LnNoIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3RwbTItYWJybWQiCisKKyAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0IgorICAgIGluc3RhbGwgLW0gMDY0NCAiJHtXT1JLRElSfS90cG0yLWFicm1kLmRlZmF1bHQiICIke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3RwbTItYWJybWQiCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0tcHJlc2V0IFwKKwkJJHtkYXRhZGlyfS9kYnVzLTEiCisKK1JERVBFTkRTXyR7UE59ICs9ICJ0cG0yLjAtdHNzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi4wLXRvb2xzL3RwbTIuMC10b29sc18zLjEuMi5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi4wLXRvb2xzL3RwbTIuMC10b29sc18zLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjQwZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0yLjAtdG9vbHMvdHBtMi4wLXRvb2xzXzMuMS4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIFRQTTIuIgorREVTQ1JJUFRJT04gPSAidHBtMi4wLXRvb2xzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MWI3YzU0OGQ3M2VhMTY1Mzc3OTllODA2MGNlYTgxOSIKK1NFQ1RJT04gPSAidHBtIgorCitERVBFTkRTID0gInBrZ2NvbmZpZyB0cG0yLjAtdHNzIG9wZW5zc2wgY3VybCBhdXRvY29uZi1hcmNoaXZlIgorCitTUkNSRVYgPSAiNWUyZjFhYWZjNThlNjBjNTA1MGY4NTE0N2ExNDkxNDU2MWYyOGFkOSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3RwbTIuMC10b29scy5naXQ7bmFtZT10cG0yLjAtdG9vbHM7ZGVzdHN1ZmZpeD10cG0yLjAtdG9vbHM7YnJhbmNoPTMuWCIKKworUyA9ICIke1dPUktESVJ9L3RwbTIuMC10b29scyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTIuMC10b29scy90cG0yLjAtdG9vbHNfZ2l0LmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0yLjAtdG9vbHMvdHBtMi4wLXRvb2xzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VjMTJmYy4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTIuMC10b29scy90cG0yLjAtdG9vbHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgVFBNMi4iCi1ERVNDUklQVElPTiA9ICJ0cG0yLjAtdG9vbHMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxYjdjNTQ4ZDczZWExNjUzNzc5OWU4MDYwY2VhODE5IgotU0VDVElPTiA9ICJ0cG0iCi0KLURFUEVORFMgPSAicGtnY29uZmlnIHRwbTIuMC10c3Mgb3BlbnNzbCBjdXJsIGF1dG9jb25mLWFyY2hpdmUiCi0KLSMgSnVseSAxMCwgMjAxNwotU1JDUkVWID0gIjI2YzA1NTcwNDBjMWNmODEwN2ZhM2ViYmNmMmE1YjA3Y2M4NGI4ODEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy90cG0yLjAtdG9vbHMuZ2l0O25hbWU9dHBtMi4wLXRvb2xzO2Rlc3RzdWZmaXg9dHBtMi4wLXRvb2xzIgotCi1TID0gIiR7V09SS0RJUn0vdHBtMi4wLXRvb2xzIgotCi1QViA9ICIyLjAuMCtnaXQke1NSQ1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTIuMC10c3MvdHBtMi4wLXRzc18xLjMuMC5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi4wLXRzcy90cG0yLjAtdHNzXzEuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjczYzJiLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi4wLXRzcy90cG0yLjAtdHNzXzEuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTb2Z0d2FyZSBzdGFjayBmb3IgVFBNMi4iCi1ERVNDUklQVElPTiA9ICJ0cG0yLjAtdHNzIGxpa2Ugd29haC4iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUwMGIyZTc0MmJlZmMzZGEwMDY4NGQ4YTFkNWZkOWRhIgotU0VDVElPTiA9ICJ0cG0iCi0KLURFUEVORFMgPSAiYXV0b2NvbmYtYXJjaGl2ZSBwa2djb25maWciCi0KLVNSQ1JFViA9ICJiMWQ5ZWNlOGM2YmVhMmUzMDQzOTQzYjJlZGZhZWJjZGNhMzMwYzM4IgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0Oi8vZ2l0aHViLmNvbS90cG0yLXNvZnR3YXJlL3RwbTItdHNzLmdpdDticmFuY2g9MS54IFwKLSAgICBmaWxlOi8vYXhfcHRocmVhZC5tNCBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke1N9L200Ci0JY3AgJHtXT1JLRElSfS9heF9wdGhyZWFkLm00ICR7U30vbTQKLQkjIGV4ZWN1dGUgdGhlIGJvb3RzdHJhcCBzY3JpcHQKLQljdXJyZW50ZGlyPSQocHdkKQotCWNkICR7U30KLQlBQ0xPQ0FMPSJhY2xvY2FsIC0tc3lzdGVtLWFjZGlyPSR7U1RBR0lOR19EQVRBRElSfS9hY2xvY2FsIiAuL2Jvb3RzdHJhcAotCWNkICRjdXJyZW50ZGlyCi19Ci0KLUlOSEVSSVQgKz0gImV4dHJhdXNlcnMiCi1FWFRSQV9VU0VSU19QQVJBTVMgPSAiXAotCXVzZXJhZGQgLXAgJycgdHNzOyBcCi0JZ3JvdXBhZGQgdHNzOyBcCi0JIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gInJlc291cmNlbWdyIgotU1lTVEVNRF9TRVJWSUNFX3Jlc291cmNlbWdyID0gInJlc291cmNlbWdyLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFX3Jlc291cmNlbWdyID0gImVuYWJsZSIKLQotZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInLCdzeXN0ZW1kJywnZml4X3N5c3RlbWRfdW5pdCcsJycsIGQpfSIKLWZpeF9zeXN0ZW1kX3VuaXQgKCkgewotICAgIHNlZCAtaSAtZSAnczteRXhlY1N0YXJ0PS4qL3Jlc291cmNlbWdyO0V4ZWNTdGFydD0ke3NiaW5kaXJ9L3Jlc291cmNlbWdyOycgJHtTfS9jb250cmliL3Jlc291cmNlbWdyLnNlcnZpY2UKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0wNjQ0ICR7U30vY29udHJpYi9yZXNvdXJjZW1nci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Jlc291cmNlbWdyLnNlcnZpY2UKLSAgICBmaQotfQotCi1QUk9WSURFUyA9ICIke1BBQ0tBR0VTfSIKLVBBQ0tBR0VTID0gIiBcCi0gICAgJHtQTn0tZGJnIFwKLSAgICAke1BOfS1kb2MgXAotICAgIGxpYnRzczIgXAotICAgIGxpYnRzczItZGV2IFwKLSAgICBsaWJ0c3MyLXN0YXRpY2RldiBcCi0gICAgbGlidGN0aWRldmljZSBcCi0gICAgbGlidGN0aWRldmljZS1kZXYgXAotICAgIGxpYnRjdGlkZXZpY2Utc3RhdGljZGV2IFwKLSAgICBsaWJ0Y3Rpc29ja2V0IFwKLSAgICBsaWJ0Y3Rpc29ja2V0LWRldiBcCi0gICAgbGlidGN0aXNvY2tldC1zdGF0aWNkZXYgXAotICAgIHJlc291cmNlbWdyIFwKLSIKLQotRklMRVNfbGlidHNzMiA9ICIgXAotCSR7bGliZGlyfS9saWJzYXBpLnNvLjAuMC4wIFwKLQkke2xpYmRpcn0vbGlibWFyc2hhbC5zby4wLjAuMCBcCi0iCi1GSUxFU19saWJ0c3MyLWRldiA9ICIgXAotICAgICR7aW5jbHVkZWRpcn0vc2FwaSBcCi0gICAgJHtpbmNsdWRlZGlyfS90Y3RpL2NvbW1vbi5oIFwKLSAgICAke2xpYmRpcn0vbGlic2FwaS5zbyogXAotICAgICR7bGliZGlyfS9saWJtYXJzaGFsLnNvKiBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9zYXBpLnBjIFwKLSIKLUZJTEVTX2xpYnRzczItc3RhdGljZGV2ID0gIiBcCi0gICAgJHtsaWJkaXJ9L2xpYnNhcGkuYSBcCi0gICAgJHtsaWJkaXJ9L2xpYnNhcGkubGEgXAotICAgICR7bGliZGlyfS9saWJtYXJzaGFsLmEgXAotICAgICR7bGliZGlyfS9saWJtYXJzaGFsLmxhIFwKLSIKLUZJTEVTX2xpYnRjdGlkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYnRjdGktZGV2aWNlLnNvLjAuMC4wIgotRklMRVNfbGlidGN0aWRldmljZS1kZXYgPSAiIFwKLSAgICAke2luY2x1ZGVkaXJ9L3RjdGkvdGN0aV9kZXZpY2UuaCBcCi0gICAgJHtsaWJkaXJ9L2xpYnRjdGktZGV2aWNlLnNvKiBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy90Y3RpLWRldmljZS5wYyBcCi0iCi1GSUxFU19saWJ0Y3RpZGV2aWNlLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlidGN0aS1kZXZpY2UuKmEiCi1GSUxFU19saWJ0Y3Rpc29ja2V0ID0gIiR7bGliZGlyfS9saWJ0Y3RpLXNvY2tldC5zby4wLjAuMCIKLUZJTEVTX2xpYnRjdGlzb2NrZXQtZGV2ID0gIiBcCi0gICAgJHtpbmNsdWRlZGlyfS90Y3RpL3RjdGlfc29ja2V0LmggXAotICAgICR7bGliZGlyfS9saWJ0Y3RpLXNvY2tldC5zbyogXAotICAgICR7bGliZGlyfS9wa2djb25maWcvdGN0aS1zb2NrZXQucGMgXAotIgotRklMRVNfbGlidGN0aXNvY2tldC1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYnRjdGktc29ja2V0LiphIgotRklMRVNfcmVzb3VyY2VtZ3IgPSAiJHtzYmluZGlyfS9yZXNvdXJjZW1nciAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Jlc291cmNlbWdyLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTIuMC10c3MvdHBtMi4wLXRzc18yLjAuMS5iYiBiL21ldGEtc2VjdXJpdHkvbWV0YS10cG0vcmVjaXBlcy10cG0vdHBtMi4wLXRzcy90cG0yLjAtdHNzXzIuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWZmNzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTIuMC10c3MvdHBtMi4wLXRzc18yLjAuMS5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlNvZnR3YXJlIHN0YWNrIGZvciBUUE0yLiIKK0RFU0NSSVBUSU9OID0gInRwbTIuMC10c3MgbGlrZSB3b2FoLiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGIxZDYzMWM0MjE4YjcyZjZiMDVjYjU4NjEzNjA2ZjQiCitTRUNUSU9OID0gInRwbSIKKworREVQRU5EUyA9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSBsaWJnY3J5cHQiCisKK1NSQ1JFViA9ICJkYzMxZThkY2E5ZGJjNzdkMTZlNDE5ZGM1MTRjZThjNTI2Y2QzMzUxIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdHBtMi1zb2Z0d2FyZS90cG0yLXRzcy5naXQ7YnJhbmNoPTIuMC54IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHN5c3RlbWQKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgIC4vYm9vdHN0cmFwCit9CisKK0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiCitFWFRSQV9VU0VSU19QQVJBTVMgPSAiXAorCXVzZXJhZGQgLXAgJycgdHNzOyBcCisJZ3JvdXBhZGQgdHNzOyBcCisJIgorCitQUk9WSURFUyA9ICIke1BBQ0tBR0VTfSIKK1BBQ0tBR0VTID0gIiBcCisgICAgJHtQTn0gXAorICAgICR7UE59LWRiZyBcCisgICAgJHtQTn0tZG9jIFwKKyAgICBsaWJ0c3MyLW11IFwKKyAgICBsaWJ0c3MyLW11LWRldiBcCisgICAgbGlidHNzMi1tdS1zdGF0aWNkZXYgXAorICAgIGxpYnRzczItdGN0aS1kZXZpY2UgXAorICAgIGxpYnRzczItdGN0aS1kZXZpY2UtZGV2IFwKKyAgICBsaWJ0c3MyLXRjdGktZGV2aWNlLXN0YXRpY2RldiBcCisgICAgbGlidHNzMi10Y3RpLW1zc2ltIFwKKyAgICBsaWJ0c3MyLXRjdGktbXNzaW0tZGV2IFwKKyAgICBsaWJ0c3MyLXRjdGktbXNzaW0tc3RhdGljZGV2IFwKKyAgICBsaWJ0c3MyIFwKKyAgICBsaWJ0c3MyLWRldiBcCisgICAgbGlidHNzMi1zdGF0aWNkZXYgXAorIgorCitGSUxFU19saWJ0c3MyLXRjdGktZGV2aWNlID0gIiR7bGliZGlyfS9saWJ0c3MyLXRjdGktZGV2aWNlLnNvLioiCitGSUxFU19saWJ0c3MyLXRjdGktZGV2aWNlLWRldiA9ICIgXAorICAgICR7aW5jbHVkZWRpcn0vdHNzMi90c3MyX3RjdGlfZGV2aWNlLmggXAorICAgICR7bGliZGlyfS9wa2djb25maWcvdHNzMi10Y3RpLWRldmljZS5wYyBcCisgICAgJHtsaWJkaXJ9L2xpYnRzczItdGN0aS1kZXZpY2Uuc28iCitGSUxFU19saWJ0c3MyLXRjdGktZGV2aWNlLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlidHNzMi10Y3RpLWRldmljZS4qYSIKKworRklMRVNfbGlidHNzMi10Y3RpLW1zc2ltID0gIiR7bGliZGlyfS9saWJ0c3MyLXRjdGktbXNzaW0uc28uKiIKK0ZJTEVTX2xpYnRzczItdGN0aS1tc3NpbS1kZXYgPSAiIFwKKyAgICAke2luY2x1ZGVkaXJ9L3RzczIvdHNzMl90Y3RpX21zc2ltLmggXAorICAgICR7bGliZGlyfS9wa2djb25maWcvdHNzMi10Y3RpLW1zc2ltLnBjIFwKKyAgICAke2xpYmRpcn0vbGlidHNzMi10Y3RpLW1zc2ltLnNvIgorRklMRVNfbGlidHNzMi10Y3RpLW1zc2ltLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlidHNzMi10Y3RpLW1zc2ltLiphIgorCitGSUxFU19saWJ0c3MyLW11ID0gIiR7bGliZGlyfS9saWJ0c3MyLW11LnNvLioiCitGSUxFU19saWJ0c3MyLW11LWRldiA9ICIgXAorICAgICR7aW5jbHVkZWRpcn0vdHNzMi90c3MyX211LmggXAorICAgICR7bGliZGlyfS9wa2djb25maWcvdHNzMi1tdS5wYyBcCisgICAgJHtsaWJkaXJ9L2xpYnRzczItbXUuc28iCitGSUxFU19saWJ0c3MyLW11LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlidHNzMi1tdS4qYSIKKworRklMRVNfbGlidHNzMiA9ICIke2xpYmRpcn0vbGlidHNzMipzby4qIgorRklMRVNfbGlidHNzMi1kZXYgPSAiIFwKKyAgICAke2luY2x1ZGVkaXJ9IFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnIFwKKyAgICAke2xpYmRpcn0vbGlidHNzMipzbyIKK0ZJTEVTX2xpYnRzczItc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJ0c3MqYSIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L3VkZXYiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTJzaW11bGF0b3IvdHBtMnNpbXVsYXRvci1uYXRpdmVfMTM4LmJiIGIvbWV0YS1zZWN1cml0eS9tZXRhLXRwbS9yZWNpcGVzLXRwbS90cG0yc2ltdWxhdG9yL3RwbTJzaW11bGF0b3JfMTM4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTJzaW11bGF0b3IvdHBtMnNpbXVsYXRvci1uYXRpdmVfMTM4LmJiCnJlbmFtZSB0byBtZXRhLXNlY3VyaXR5L21ldGEtdHBtL3JlY2lwZXMtdHBtL3RwbTJzaW11bGF0b3IvdHBtMnNpbXVsYXRvcl8xMzguYmIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1icm93ZXJzL3Rvci90b3JfNi41LjIuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtYnJvd2Vycy90b3IvdG9yXzYuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTNhODEyLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1icm93ZXJzL3Rvci90b3JfNi41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9yIGlzIGZyZWUgc29mdHdhcmUgYW5kIGFuIG9wZW4gbmV0d29yayB0aGF0IGhlbHBzIHlvdSBkZWZlbmQgYWdhaW5zdCB0cmFmZmljIGFuYWx5c2lzLCBhIGZvcm0gb2YgbmV0d29yayBzdXJ2ZWlsbGFuY2UgdGhhdCB0aHJlYXRlbnMgcGVyc29uYWwgZnJlZWRvbSBhbmQgcHJpdmFjeSwgY29uZmlkZW50aWFsIGJ1c2luZXNzIGFjdGl2aXRpZXMgYW5kIHJlbGF0aW9uc2hpcHMsIGFuZCBzdGF0ZSBzZWN1cml0eS4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LnRvcnByb2plY3Qub3JnLyIKLQotTElDRU5TRSA9ICJHUFYtdjIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL1RoZVRvclByb2plY3QvZ2V0dG9yYnJvd3Nlci9hcmNoaXZlL3Y2LjUuMi50YXIuZ3oiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvYWZmbGliL2FmZmxpYl8zLjYuNi5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9hZmZsaWIvYWZmbGliXzMuNi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODI2ZDFkLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9hZmZsaWIvYWZmbGliXzMuNi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgQWR2YW5jZWQgRm9yZW5zaWMgRm9ybWF0IChBRkYpIGlzIG9uLWRpc2sgZm9ybWF0IGZvciBzdG9yaW5nIGNvbXB1dGVyIGZvcmVuc2ljIGluZm9ybWF0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWZmbGliLm9yZy8iCi1MSUNFTlNFID0gIiBCU0QtNC1DbGF1c2UgICYgQ1BMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQxYjJjNmQwZDY5MDhmNDVkMTQzZWY2MzgwNzI3ODI4IgotCi1ERVBFTkRTID0gIiB6bGliIG5jdXJzZXMgcmVhZGxpbmUgb3BlbnNzbCBsaWJnY3J5cHQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC91bml2ZXJzZS9hLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3o7bmFtZT1vcmlnIFwKLSAgICAgICAgaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC91bml2ZXJzZS9hLyR7QlBOfS8ke0JQTn1fJHtQVn0tMS4xLmRpZmYuZ3o7bmFtZT1kcGF0Y2ggXAotICAgICAgICBmaWxlOi8vY29uZmlndXJlX3JtX21zX2ZsYWdzLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW29yaWcubWQ1c3VtXSA9ICJiN2ZmNGQyOTQ1ODgyMDE4ZWIxNTM2Y2FkMTgyYWQwMSIKLVNSQ19VUklbb3JpZy5zaGEyNTZzdW1dID0gIjE5Y2FjZmQ1NThkYzAwZTExOTc1ZTgyMGUzYzQzODNiNTJhYWJiZDVjYTA4MWQyN2JiNzk5NGEwMzVkMmY0YWQiCi1TUkNfVVJJW2RwYXRjaC5tZDVzdW1dID0gIjE3MWU4NzEwMjQ1NDViNDg3NTg5ZTZjODUyOTA1NzZmIgotU1JDX1VSSVtkcGF0Y2guc2hhMjU2c3VtXSA9ICJkYjYzMmUyNTRlZTUxYTFlNDMyOGNkNDQ0OWQ0MTRlZmY0Nzk1MDUzZDRlMzZiZmE4ZTAwMjBmY2I0MDg1Y2RkIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLUNQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0iCi1MREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0td2l0aC1jdXJsPSR7U1RBR0lOR19MSUJESVJ9LCAtLXdpdGhvdXQtY3VybCwgY3VybCIKLVBBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRob3V0LWV4cGF0LCBleHBhdCIKLVBBQ0tBR0VDT05GSUdbZnVzZV0gPSAiLS1lbmFibGUtZnVzZT15ZXMsIC0tZW5hYmxlLWZ1c2U9bm8sIGZ1c2UiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uPXllcywgLS1lbmFibGUtcHl0aG9uPW5vLCBweXRob24iCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtczM9bm8gQ1BQRkxBR1M9LUkke1NUQUdJTkdfSU5DRElSfSBMREZMQUdTPS1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRU1BS0UgKz0gIkNQUEZMQUdTPScke0NQUEZMQUdTfScgTERGTEFHUz0nLUwke1NUQUdJTkdfTElCRElSfSAtSSR7U1RBR0lOR19JTkNESVJ9JyIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9hZmZsaWIvZmlsZXMvY29uZmlndXJlX3JtX21zX2ZsYWdzLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLWZvcmVuc2ljL2FmZmxpYi9maWxlcy9jb25maWd1cmVfcm1fbXNfZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMzM1MDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLWZvcmVuc2ljL2FmZmxpYi9maWxlcy9jb25maWd1cmVfcm1fbXNfZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLXJlbW92ZSBtcyBsaWIgb3B0aW9ucyB3aGVuIGNyb3NzIGNvbXBpbGluZwotCi1TaWduZWQtT2ZmLUJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotCi1JbmRleDogY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGEvY29uZmlndXJlLmFjCi1AQCAtNDcsNyArNDcsNiBAQCBpZiB0ZXN0IHgiJHtjcm9zc19jb21waWxpbmd9IiA9ICJ4bm8iIDsKLSAgIEFDX01TR19OT1RJQ0UoWyBMREZMQUdTID0gJHtMREZMQUdTfSBdKQotIGVsc2UKLSAgIEFDX01TR19OT1RJQ0UoW0Nyb3NzIENvbXBpbGluZyAtLS0gd2lsbCBub3QgdXBkYXRlIENQUEZBTEdTIG9yIExERkxBR1Mgd2l0aCAvdXNyL2xvY2FsLCAvb3B0L2xvY2FsIG9yIC9zd10pCi0tICBMSUJTPSIkTElCUyAtbHdzMl8zMiAtbGdkaTMyIgotIGZpCi0gCi0gaWYgdGVzdCAtciAvYmluL3VuYW1lLmV4ZSA7IHRoZW4KZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9saWJld2YvZmlsZXMvZ2NjNV9maXgucGF0Y2ggYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvbGliZXdmL2ZpbGVzL2djYzVfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODgxZjI1Li4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9saWJld2YvZmlsZXMvZ2NjNV9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1VcHN0cmVhbSBTdGF0dXM6IHBlbmRpbmcKLQotRG9uJ3QgdXNlIGlubGluZSB3aXRoIGdjYyA1LjAKLQotZml4ZXM6Ci11bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsaWJ1bmFfdW5pY29kZV9jaGFyYWN0ZXJfc2l6ZV90b191dGY4JwotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotCi1JbmRleDogbGlidW5hL2xpYnVuYV9pbmxpbmUuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbGlidW5hL2xpYnVuYV9pbmxpbmUuaAotKysrIGIvbGlidW5hL2xpYnVuYV9pbmxpbmUuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaWYgZGVmaW5lZCggX01TQ19WRVIgKQotICNkZWZpbmUgTElCVU5BX0lOTElORSBfaW5saW5lCi0gCi0tI2VsaWYgZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgZGVmaW5lZCggX19jbGFuZ19fICkKLSsjZWxpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCBkZWZpbmVkKCBfX2NsYW5nX18gKSB8fCAoIF9fR05VQ19fID4gNCApCi0gI2RlZmluZSBMSUJVTkFfSU5MSU5FIC8qIGlubGluZSAqLwotIAotICNlbHNlCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvbGliZXdmL2xpYmV3Zl8yMDE0MDYwOC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9saWJld2YvbGliZXdmXzIwMTQwNjA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2RjZTEyLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1mb3JlbnNpYy9saWJld2YvbGliZXdmXzIwMTQwNjA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJyYXJ5IHdpdGggc3VwcG9ydCBmb3IgRXhwZXJ0IFdpdG5lc3MgQ29tcHJlc3Npb24gRm9ybWF0IgotTElDRU5TRSA9ICJMR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThjMzliMjZjMDU0OWY4ZTFiYjQxMjIxNzNmNDc0Y2QiCi0KLURFUEVORFMgPSAidmlydHVhbC9nZXR0ZXh0IGxpYnRvb2wiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC91bml2ZXJzZS9saWJlLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3o7bmFtZT1vcmlnIFwKLSAgICAgICAgZmlsZTovL2djYzVfZml4LnBhdGNoIFwKLSAgICAgICAgIgotU1JDX1VSSVtvcmlnLm1kNXN1bV0gPSAiZmRmNjE1ZjIzOTM3ZmFkOGUwMmI2MGI5ZTNlNWZiMzUiCi1TUkNfVVJJW29yaWcuc2hhMjU2c3VtXSA9ICJkMTQwMzBjZTYxMjI3Mjc5MzVmYmQ2NzZkMDg3NjgwOGRhMWUxMTI3MjFmM2NiMTA4NTY0YTRkOWJmNzNkYTcxIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIgc3NsIGJ6MiIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsIC0td2l0aG91dC16bGliLCB6bGliLCB6bGliIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iemlwMiwgLS13aXRob3V0LWJ6aXAyLCBiemlwMiwgYnppcDIiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICItLXdpdGgtbGliZnVzZSwgLS13aXRob3V0LWxpYmZ1c2UsIGZ1c2UiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLCAtLWRpc2FibGUtcHl0aG9uLCBweXRob24iCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWdudS1sZCAtLWRpc2FibGUtcnBhdGgiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgdXRpbC1saW51eC1saWJ1dWlkIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLWZvcmVuc2ljL3NsZXV0aC9maWxlcy9maXhfaG9zdF9wb2lzb24ucGF0Y2ggYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvc2xldXRoL2ZpbGVzL2ZpeF9ob3N0X3BvaXNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiMWZiOS4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvc2xldXRoL2ZpbGVzL2ZpeF9ob3N0X3BvaXNvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotRG9uJ3QgdXNlIGhvc3QgaW5jbHVkZSBvciBsaWIgcGF0aHMgaW4gKkZMQUdTCi0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0KLUluZGV4OiBjb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODQsMTIgKzg0LDYgQEAgQVhfUFRIUkVBRChbCi0gICAgIExERkxBR1M9IiRMREZMQUdTICRQVEhSRUFEX0NGTEFHUyIKLSAgICAgQ0M9IiRQVEhSRUFEX0NDIl0sW10pCi0gCi0tZG5sIE5vdCBhbGwgY29tcGlsZXJzIGluY2x1ZGUgL3Vzci9sb2NhbCBpbiB0aGUgaW5jbHVkZSBhbmQgbGluayBwYXRoCi0taWYgdGVzdCAtZCAvdXNyL2xvY2FsL2luY2x1ZGU7IHRoZW4KLS0gICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvbG9jYWwvaW5jbHVkZSIKLS0gICAgTERGTEFHUz0iJExERkxBR1MgLUwvdXNyL2xvY2FsL2xpYiIKLS1maQotLQotIGRubCBBZGQgZW5hYmxlL2Rpc2FibGUgb3B0aW9uCi0gQUNfQVJHX0VOQUJMRShbamF2YV0sCi0gICAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWphdmFdLCBbRG8gbm90IGJ1aWxkIHRoZSBqYXZhIGJpbmRpbmdzIG9yIGphciBmaWxlXSldKQpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLWZvcmVuc2ljL3NsZXV0aC9zbGV1dGhraXRfNC4xLjMuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvc2xldXRoL3NsZXV0aGtpdF80LjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEzMzVmMy4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtZm9yZW5zaWMvc2xldXRoL3NsZXV0aGtpdF80LjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFNsZXV0aCBLaXQgKFRTSykgaXMgYSBsaWJyYXJ5IGFuZCBjb2xsZWN0aW9uIG9mIGNvbW1hbmQgbGluZSB0b29scyB0aGF0IGFsbG93IHlvdSB0byBpbnZlc3RpZ2F0ZSBkaXNrIGltYWdlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnNsZXV0aGtpdC5vcmcvc2xldXRoa2l0LyIKLUxJQ0VOU0UgPSAiSVBMLTEuMCAmIEdQTHYyICYgQ1BMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2VzL0dOVS1DT1BZSU5HO3N0YXJ0bGluZT00O2VuZGxpbmU9NTttZDU9NDc1YjQ3ODQ5MDM4NTBiNTc5ZGM2ZTYzMTBiZDVmMDhcCi0gICAgZmlsZTovL2xpY2Vuc2VzL0lCTS1MSUNFTlNFO3N0YXJ0bGluZT0xO2VuZGxpbmU9MjttZDU9MWZjMzMwMDM4OGIwZDZlNjIxNjgyNWRkODljMmUzYTJcCi0gICAgZmlsZTovL2xpY2Vuc2VzL2NwbDEuMC50eHQ7c3RhcnRsaW5lPTE7ZW5kbGluZT0yO21kNT05ZTU4Yzg3ODIwMmM3M2E0ZTNlZDRiZTcyNTk4ZmI5MiIKLQotREVQRU5EUyA9ICJsaWJ0b29sIgotCi1TUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1L3Bvb2wvdW5pdmVyc2Uvcy8ke0JQTn0vJHtCUE59XyR7UFZ9Lm9yaWcudGFyLmd6O25hbWU9b3JpZyBcCi0gICAgICAgICAgICBmaWxlOi8vZml4X2hvc3RfcG9pc29uLnBhdGNoIFwKLSAgICAgICAgIgotU1JDX1VSSVtvcmlnLm1kNXN1bV0gPSAiMTM5YTEyZjA2OTUyZDhhNDBiYmUwNzg4NDk5NGNmNWQiCi1TUkNfVVJJW29yaWcuc2hhMjU2c3VtXSA9ICI2N2Y5ZDJhMzFhODg4NGQ1ODY5OGQ2MTIyZmMxYTFiZmE5YmYyMzg1ODJiZGUyYjQ5MjI4ZWM5Yjg5OWYwMzI3IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImFmZiB6bGliIGV3ZiIKLVBBQ0tBR0VDT05GSUdbYWZmXSA9ICItLXdpdGgtYWZmbGliPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyLCAtLXdpdGhvdXQtYWZmbGliLCBhZmZsaWIiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyLCAtLXdpdGhvdXQtemxpYiwgemxpYiIKLVBBQ0tBR0VDT05GSUdbZXdmXSA9ICItLXdpdGgtbGliZXdmPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyLCAtLXdpdGhvdXQtbGliZXdmLCBsaWJld2YiCi0KLSMtLXdpdGgtZ251LWxkCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXN0YXRpYz1ubyAtLWRpc2FibGUtamF2YSBMSUJTPSctTCR7U1RBR0lOR19MSUJESVJ9JyBMREZMQUdTPSctTCR7U1RBR0lOR19MSUJESVJ9JyBDUFBGTEFHUz0nLUkke1NUQUdJTkdfSU5DRElSfSciCi0KLSMgQXZvaWQgUUEgSXNzdWU6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5Ci1JTlNBTkVfU0tJUF8ke1BOfSA9ICJsZGZsYWdzIiAKLQotRklMRVNfJHtQTn0gKz0gIiAke2RhdGFkaXJ9L3RzayIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBwZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L0FwcEFybW9yL2FwcGFybW9yXzIuMTEuMC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9BcHBBcm1vci9hcHBhcm1vcl8yLjExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOWI2MTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L0FwcEFybW9yL2FwcGFybW9yXzIuMTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi1TVU1NQVJZID0gIkFwcEFybW9yIGFub3RoZXIgTUFDIGNvbnRyb2wgc3lzdGVtIgotREVTQ1JJUFRJT04gPSAidXNlci1zcGFjZSBwYXJzZXIgdXRpbGl0eSBmb3IgQXBwQXJtb3IgXAotIFRoaXMgcHJvdmlkZXMgdGhlIHN5c3RlbSBpbml0aWFsaXphdGlvbiBzY3JpcHRzIG5lZWRlZCB0byB1c2UgdGhlIFwKLSBBcHBBcm1vciBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgc3lzdGVtLCBpbmNsdWRpbmcgdGhlIEFwcEFybW9yIFBhcnNlciBcCi0gd2hpY2ggaXMgcmVxdWlyZWQgdG8gY29udmVydCBBcHBBcm1vciB0ZXh0IHByb2ZpbGVzIGludG8gbWFjaGluZS1yZWFkYWJsZSBcCi0gcG9saWNpZXMgdGhhdCBhcmUgbG9hZGVkIGludG8gdGhlIGtlcm5lbCBmb3IgdXNlIHdpdGggdGhlIEFwcEFybW9yIExpbnV4IFwKLSBTZWN1cml0eSBNb2R1bGUuIgotSE9NRUFQQUdFID0gImh0dHA6Ly9hcHBhcm1vci5uZXQvIgotU0VDVElPTiA9ICJhZG1pbiIKLQotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIEJTRC0zLUNsYXVzZSAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vTElDRU5TRTttZDU9ZmQ1N2E0YjBiYzc4MmQ3YjgwZmQ0MzFmMTBiYmY5ZDAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGFwciBnZXR0ZXh0LW5hdGl2ZSBjb3JldXRpbHMtbmF0aXZlIgotCi1TUkNfVVJJID0gIiBcCi0JaHR0cDovL2FyY2hpdmUudWJ1bnR1LmNvbS91YnVudHUvcG9vbC9tYWluL2EvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0JZmlsZTovL2Rpc2FibGVfcGVybF9oX2NoZWNrLnBhdGNoIFwKLQlmaWxlOi8vY3Jvc3Njb21waWxlX3BlcmxfYmluZGluZ3MucGF0Y2ggXAotCWZpbGU6Ly9hcHBhcm1vci5yYyBcCi0JZmlsZTovL2Z1bmN0aW9ucyBcCi0JZmlsZTovL2FwcGFybW9yIFwKLQlmaWxlOi8vYXBwYXJtb3Iuc2VydmljZSBcCi0gICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotCSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg5OWZkODM0ZGM1YzhlYmYyZDUyYjk3ZTRhMTc0YWY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxYzQ4OWVhMTFlNzc3MWI4ZTZiMTgxNTMyY2FmYmY5ZWJlNjYwM2UzY2IwMGUyNTU4ZjIxYjdhNWJkZDczOWEiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBwdGVzdCBjcGFuCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCcnLCBkKX0KLQotUyA9ICIke1dPUktESVJ9L2FwcGFybW9yLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID89Im1hbiBweXRob24gcGVybCIKLVBBQ0tBR0VDT05GSUdbbWFuXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbiwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMyBzd2lnLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmwsIC0td2l0aG91dC1wZXJsLCBwZXJsIHBlcmwtbmF0aXZlIHN3aWctbmF0aXZlIgotUEFDS0FHRUNPTkZJR1thcGFjaGUyXSA9ICIsLGFwYWNoZTIsIgotCi1QQU1MSUI9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJzEnLCAnMCcsIGQpfSIKLUhUVFBEPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhcGFjaGUyJywgJzEnLCAnMCcsIGQpfSIKLQotCi1weXRob24oKSB7Ci0gICAgaWYgJ2FwYWNoZTInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJykuc3BsaXQoKSBhbmQgXAotCSd3ZWJzZXJ2ZXInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS13ZWJzZXJ2ZXIgdG8gYmUgcHJlc2VudC4nKQotfQotCi1DT05GSUdVUkVPUFRTX3JlbW92ZSA9ICItLWRpc2FibGUtc3RhdGljIgotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1lbmFibGUtc3RhdGljIgotCi1kb19jb25maWd1cmUoKSB7Ci0JY2QgJHtTfS9saWJyYXJpZXMvbGliYXBwYXJtb3IKLQlhY2xvY2FsCi0JYXV0b2NvbmYgLS1mb3JjZQotCWxpYnRvb2xpemUgLS1hdXRvbWFrZSAtYyAtLWZvcmNlCi0JYXV0b21ha2UgLWFjCi0JLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KLQlzZWQgLWkgLWUgJ3MjXllBQ0MuKiNZQUNDIDo9IGJpc29uIycgJHtTfS9wYXJzZXIvTWFrZWZpbGUKLQlzZWQgLWkgLWUgJ3MjXkxFWC4qI0xFWCA6PSBmbGV4IycgJHtTfS9wYXJzZXIvTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9L2xpYnJhcmllcy9saWJhcHBhcm1vcgotICAgICAgICBvZV9ydW5tYWtlIC1DICR7Qn0vYmludXRpbHMKLSAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L3V0aWxzCi0gICAgICAgIG9lX3J1bm1ha2UgLUMgJHtCfS9wYXJzZXIKLSAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L3Byb2ZpbGVzCi0KLQlpZiB0ZXN0IC16ICIke0hUVFBEfSIgOyB0aGVuCi0gICAgICAgIAlvZV9ydW5tYWtlIC1DICR7Qn0vY2hhbmdlaGF0L21vZF9hcHBhcm1vcgotCWZpCQotCi0JaWYgdGVzdCAteiAiJHtQQU1MSUJ9IiA7IHRoZW4KLSAgICAgICAgCW9lX3J1bm1ha2UgLUMgJHtCfS9jaGFuZ2VoYXQvcGFtX2FwcGFybW9yCi0JZmkKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7SU5JVF9EX0RJUn0KLQlpbnN0YWxsIC1kICR7RH0vbGliL2FwcGFybW9yCi0JCQotCW9lX3J1bm1ha2UgLUMgJHtCfS9saWJyYXJpZXMvbGliYXBwYXJtb3IgREVTVERJUj0iJHtEfSIgaW5zdGFsbAotCW9lX3J1bm1ha2UgLUMgJHtCfS9iaW51dGlscyBERVNURElSPSIke0R9IiBpbnN0YWxsCi0Jb2VfcnVubWFrZSAtQyAke0J9L3V0aWxzIERFU1RESVI9IiR7RH0iIGluc3RhbGwKLQlvZV9ydW5tYWtlIC1DICR7Qn0vcGFyc2VyIERFU1RESVI9IiR7RH0iIGluc3RhbGwKLQlvZV9ydW5tYWtlIC1DICR7Qn0vcHJvZmlsZXMgREVTVERJUj0iJHtEfSIgaW5zdGFsbAotCi0JaWYgdGVzdCAteiAiJHtIVFRQRH0iIDsgdGhlbgotCQlvZV9ydW5tYWtlIC1DICR7Qn0vY2hhbmdlaGF0L21vZF9hcHBhcm1vciBERVNURElSPSIke0R9IiBpbnN0YWxsCi0JZmkKLQotCWlmIHRlc3QgLXogIiR7UEFNTElCfSIgOyB0aGVuCi0JCW9lX3J1bm1ha2UgLUMgJHtCfS9jaGFuZ2VoYXQvcGFtX2FwcGFybW9yIERFU1RESVI9IiR7RH0iIGluc3RhbGwKLQlmaQotCi0JIyBhYS1lYXN5cHJvZiBpcyBpbnN0YWxsZWQgYnkgcHl0aG9uLXRvb2xzLXNldHVwLnB5LCBmaXggaXQgdXAKLQlzZWQgLWkgLWUgJ3M6L3Vzci9iaW4vZW52Lio6L3Vzci9iaW4vcHl0aG9uMzonICR7RH0ke2JpbmRpcn0vYWEtZWFzeXByb2YKLQljaG1vZCAwNzU1ICR7RH0ke2JpbmRpcn0vYWEtZWFzeXByb2YKLQotCWluc3RhbGwgJHtXT1JLRElSfS9hcHBhcm1vciAke0R9LyR7SU5JVF9EX0RJUn0vYXBwYXJtb3IKLQlpbnN0YWxsICR7V09SS0RJUn0vZnVuY3Rpb25zICR7RH0vbGliL2FwcGFybW9yCi0JaWYgWyAiJHtWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyfSIgPSAic3lzdGVtZCIgXTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0JCWluc3RhbGwgJHtXT1JLRElSfS9hcHBhcm1vci5zZXJ2aWNlIFwKLQkJCSR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0JZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCAoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cy9yZWdyZXNzaW9uL2FwcGFybW9yCi0gICAgICAgIG9lX3J1bm1ha2UgLUMgJHtCfS9wYXJzZXIvdHN0Ci0gICAgICAgIG9lX3J1bm1ha2UgLUMgJHtCfS9saWJyYXJpZXMvbGliYXBwYXJtb3IKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JdD0ke0R9LyR7UFRFU1RfUEFUSH0vdGVzdHN1aXRlCi0JaW5zdGFsbCAtZCAke3R9Ci0JaW5zdGFsbCAtZCAke3R9L3Rlc3RzL3JlZ3Jlc3Npb24vYXBwYXJtb3IKLQljcCAtcmYgJHtCfS90ZXN0cy9yZWdyZXNzaW9uL2FwcGFybW9yICR7dH0vdGVzdHMvcmVncmVzc2lvbgotCi0JaW5zdGFsbCAtZCAke3R9L3BhcnNlci90c3QKLQljcCAtcmYgJHtCfS9wYXJzZXIvdHN0ICR7dH0vcGFyc2VyCi0JY3AgJHtCfS9wYXJzZXIvYXBwYXJtb3JfcGFyc2VyICR7dH0vcGFyc2VyCi0JY3AgJHtCfS9wYXJzZXIvZnJvYl9zbGFja19yYyAke3R9L3BhcnNlcgotCi0JaW5zdGFsbCAtZCAke3R9L2xpYnJhcmllcy9saWJhcHBhcm1vcgotCWNwIC1yZiAke0J9L2xpYnJhcmllcy9saWJhcHBhcm1vciAke3R9L2xpYnJhcmllcwotCi0JaW5zdGFsbCAtZCAke3R9L2NvbW1vbgotCWNwIC1yZiAke0J9L2NvbW1vbiAke3R9Ci0KLQlpbnN0YWxsIC1kICR7dH0vYmludXRpbHMKLQljcCAtcmYgJHtCfS9iaW51dGlscyAke3R9Ci19Ci0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCi1JTklUU0NSSVBUX05BTUUgPSAiYXBwYXJtb3IiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAxNiAyIDMgNCA1IC4gc3RvcCAzNSAwIDEgNiAuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwcGFybW9yLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhcGFjaGUyJywgJ21vZC0ke1BOfScsICcnLCBkKX0iCi0KLUZJTEVTXyR7UE59ICs9ICIvbGliL2FwcGFybW9yLyAke3N5c2NvbmZkaXJ9L2FwcGFybW9yICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotRklMRVNfbW9kLSR7UE59ID0gIiR7bGliZGlyfS9hcGFjaGUyL21vZHVsZXMvKiIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggbHNiIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywncHl0aG9uJywncHl0aG9uMyBweXRob24zLW1vZHVsZXMnLCcnLCBkKX0iCi1SREVQRU5EU18ke1BOfV9yZW1vdmUgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywncGVybCcsJycsJ3BlcmwnLCBkKX0iCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybCBjb3JldXRpbHMgZGJ1cy1saWIiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvQXBwQXJtb3IvYXBwYXJtb3JfMi4xMi5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9BcHBBcm1vci9hcHBhcm1vcl8yLjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZjhkYzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvQXBwQXJtb3IvYXBwYXJtb3JfMi4xMi5iYgpAQCAtMCwwICsxLDE1OSBAQAorU1VNTUFSWSA9ICJBcHBBcm1vciBhbm90aGVyIE1BQyBjb250cm9sIHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gInVzZXItc3BhY2UgcGFyc2VyIHV0aWxpdHkgZm9yIEFwcEFybW9yIFwKKyBUaGlzIHByb3ZpZGVzIHRoZSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gc2NyaXB0cyBuZWVkZWQgdG8gdXNlIHRoZSBcCisgQXBwQXJtb3IgTWFuZGF0b3J5IEFjY2VzcyBDb250cm9sIHN5c3RlbSwgaW5jbHVkaW5nIHRoZSBBcHBBcm1vciBQYXJzZXIgXAorIHdoaWNoIGlzIHJlcXVpcmVkIHRvIGNvbnZlcnQgQXBwQXJtb3IgdGV4dCBwcm9maWxlcyBpbnRvIG1hY2hpbmUtcmVhZGFibGUgXAorIHBvbGljaWVzIHRoYXQgYXJlIGxvYWRlZCBpbnRvIHRoZSBrZXJuZWwgZm9yIHVzZSB3aXRoIHRoZSBBcHBBcm1vciBMaW51eCBcCisgU2VjdXJpdHkgTW9kdWxlLiIKK0hPTUVBUEFHRSA9ICJodHRwOi8vYXBwYXJtb3IubmV0LyIKK1NFQ1RJT04gPSAiYWRtaW4iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QtMy1DbGF1c2UgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0xJQ0VOU0U7bWQ1PWZkNTdhNGIwYmM3ODJkN2I4MGZkNDMxZjEwYmJmOWQwIgorCitERVBFTkRTID0gImJpc29uLW5hdGl2ZSBhcHIgZ2V0dGV4dC1uYXRpdmUgY29yZXV0aWxzLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIgXAorCWh0dHA6Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1L3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0ub3JpZy50YXIuZ3ogXAorCWZpbGU6Ly9kaXNhYmxlX3BlcmxfaF9jaGVjay5wYXRjaCBcCisJZmlsZTovL2Nyb3NzY29tcGlsZV9wZXJsX2JpbmRpbmdzLnBhdGNoIFwKKwlmaWxlOi8vYXBwYXJtb3IucmMgXAorCWZpbGU6Ly9mdW5jdGlvbnMgXAorCWZpbGU6Ly9hcHBhcm1vciBcCisJZmlsZTovL2FwcGFybW9yLnNlcnZpY2UgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorCSIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ5MDU0ZjU4MDQyZjhlNTFlYTkyY2M4NjY1NzVhODMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmIwY2QwODNmYWE0ZDA2NDBmNTc5MDI0YmUzYTYyOWZhYTdkYjNiOTk1NDA3OThhMWEwNTBlMmVhYmEwNTYiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBwdGVzdCBjcGFuCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCcnLCBkKX0KKworUyA9ICIke1dPUktESVJ9L2FwcGFybW9yLSR7UFZ9IgorCitQQUNLQUdFQ09ORklHID89Im1hbiBweXRob24gcGVybCIKK1BBQ0tBR0VDT05GSUdbbWFuXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbiwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMyBzd2lnLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmwsIC0td2l0aG91dC1wZXJsLCBwZXJsIHBlcmwtbmF0aXZlIHN3aWctbmF0aXZlIgorUEFDS0FHRUNPTkZJR1thcGFjaGUyXSA9ICIsLGFwYWNoZTIsIgorCitQQU1MSUI9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJzEnLCAnMCcsIGQpfSIKK0hUVFBEPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhcGFjaGUyJywgJzEnLCAnMCcsIGQpfSIKKworCitweXRob24oKSB7CisgICAgaWYgJ2FwYWNoZTInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJykuc3BsaXQoKSBhbmQgXAorICAgICAgICAgICAgJ3dlYnNlcnZlcicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCdSZXF1aXJlcyBtZXRhLXdlYnNlcnZlciB0byBiZSBwcmVzZW50LicpCit9CisKK0NPTkZJR1VSRU9QVFNfcmVtb3ZlID0gIi0tZGlzYWJsZS1zdGF0aWMiCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zdGF0aWMiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwljZCAke1N9L2xpYnJhcmllcy9saWJhcHBhcm1vcgorCWFjbG9jYWwKKwlhdXRvY29uZiAtLWZvcmNlCisJbGlidG9vbGl6ZSAtLWF1dG9tYWtlIC1jIC0tZm9yY2UKKwlhdXRvbWFrZSAtYWMKKwkuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfQorCXNlZCAtaSAtZSAncyNeWUFDQy4qI1lBQ0MgOj0gYmlzb24jJyAke1N9L3BhcnNlci9NYWtlZmlsZQorCXNlZCAtaSAtZSAncyNeTEVYLiojTEVYIDo9IGZsZXgjJyAke1N9L3BhcnNlci9NYWtlZmlsZQorfQorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vbGlicmFyaWVzL2xpYmFwcGFybW9yCisgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtCfS9iaW51dGlscworICAgICAgICBvZV9ydW5tYWtlIC1DICR7Qn0vdXRpbHMKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L3BhcnNlcgorICAgICAgICBvZV9ydW5tYWtlIC1DICR7Qn0vcHJvZmlsZXMKKworCWlmIHRlc3QgLXogIiR7SFRUUER9IiA7IHRoZW4KKyAgICAgICAgCW9lX3J1bm1ha2UgLUMgJHtCfS9jaGFuZ2VoYXQvbW9kX2FwcGFybW9yCisJZmkJCisKKwlpZiB0ZXN0IC16ICIke1BBTUxJQn0iIDsgdGhlbgorICAgICAgICAJb2VfcnVubWFrZSAtQyAke0J9L2NoYW5nZWhhdC9wYW1fYXBwYXJtb3IKKwlmaQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtJTklUX0RfRElSfQorCWluc3RhbGwgLWQgJHtEfS9saWIvYXBwYXJtb3IKKwkJCisJb2VfcnVubWFrZSAtQyAke0J9L2xpYnJhcmllcy9saWJhcHBhcm1vciBERVNURElSPSIke0R9IiBpbnN0YWxsCisJb2VfcnVubWFrZSAtQyAke0J9L2JpbnV0aWxzIERFU1RESVI9IiR7RH0iIGluc3RhbGwKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdXRpbHMgREVTVERJUj0iJHtEfSIgaW5zdGFsbAorCW9lX3J1bm1ha2UgLUMgJHtCfS9wYXJzZXIgREVTVERJUj0iJHtEfSIgaW5zdGFsbAorCW9lX3J1bm1ha2UgLUMgJHtCfS9wcm9maWxlcyBERVNURElSPSIke0R9IiBpbnN0YWxsCisKKwlpZiB0ZXN0IC16ICIke0hUVFBEfSIgOyB0aGVuCisJCW9lX3J1bm1ha2UgLUMgJHtCfS9jaGFuZ2VoYXQvbW9kX2FwcGFybW9yIERFU1RESVI9IiR7RH0iIGluc3RhbGwKKwlmaQorCisJaWYgdGVzdCAteiAiJHtQQU1MSUJ9IiA7IHRoZW4KKwkJb2VfcnVubWFrZSAtQyAke0J9L2NoYW5nZWhhdC9wYW1fYXBwYXJtb3IgREVTVERJUj0iJHtEfSIgaW5zdGFsbAorCWZpCisKKwkjIGFhLWVhc3lwcm9mIGlzIGluc3RhbGxlZCBieSBweXRob24tdG9vbHMtc2V0dXAucHksIGZpeCBpdCB1cAorCXNlZCAtaSAtZSAnczovdXNyL2Jpbi9lbnYuKjovdXNyL2Jpbi9weXRob24zOicgJHtEfSR7YmluZGlyfS9hYS1lYXN5cHJvZgorCWNobW9kIDA3NTUgJHtEfSR7YmluZGlyfS9hYS1lYXN5cHJvZgorCisJaW5zdGFsbCAke1dPUktESVJ9L2FwcGFybW9yICR7RH0vJHtJTklUX0RfRElSfS9hcHBhcm1vcgorCWluc3RhbGwgJHtXT1JLRElSfS9mdW5jdGlvbnMgJHtEfS9saWIvYXBwYXJtb3IKKwlpZiBbICIke1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXJ9IiA9ICJzeXN0ZW1kIiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwkJaW5zdGFsbCAke1dPUktESVJ9L2FwcGFybW9yLnNlcnZpY2UgXAorCQkJJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwlmaQorfQorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzL3JlZ3Jlc3Npb24vYXBwYXJtb3IKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L3BhcnNlci90c3QKKyAgICAgICAgb2VfcnVubWFrZSAtQyAke0J9L2xpYnJhcmllcy9saWJhcHBhcm1vcgorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwl0PSR7RH0vJHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUKKwlpbnN0YWxsIC1kICR7dH0KKwlpbnN0YWxsIC1kICR7dH0vdGVzdHMvcmVncmVzc2lvbi9hcHBhcm1vcgorCWNwIC1yZiAke0J9L3Rlc3RzL3JlZ3Jlc3Npb24vYXBwYXJtb3IgJHt0fS90ZXN0cy9yZWdyZXNzaW9uCisKKwlpbnN0YWxsIC1kICR7dH0vcGFyc2VyL3RzdAorCWNwIC1yZiAke0J9L3BhcnNlci90c3QgJHt0fS9wYXJzZXIKKwljcCAke0J9L3BhcnNlci9hcHBhcm1vcl9wYXJzZXIgJHt0fS9wYXJzZXIKKwljcCAke0J9L3BhcnNlci9mcm9iX3NsYWNrX3JjICR7dH0vcGFyc2VyCisKKwlpbnN0YWxsIC1kICR7dH0vbGlicmFyaWVzL2xpYmFwcGFybW9yCisJY3AgLXJmICR7Qn0vbGlicmFyaWVzL2xpYmFwcGFybW9yICR7dH0vbGlicmFyaWVzCisKKwlpbnN0YWxsIC1kICR7dH0vY29tbW9uCisJY3AgLXJmICR7Qn0vY29tbW9uICR7dH0KKworCWluc3RhbGwgLWQgJHt0fS9iaW51dGlscworCWNwIC1yZiAke0J9L2JpbnV0aWxzICR7dH0KK30KKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJhcHBhcm1vciIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDE2IDIgMyA0IDUgLiBzdG9wIDM1IDAgMSA2IC4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiYXBwYXJtb3Iuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAnbW9kLSR7UE59JywgJycsIGQpfSIKKworRklMRVNfJHtQTn0gKz0gIi9saWIvYXBwYXJtb3IvICR7c3lzY29uZmRpcn0vYXBwYXJtb3IgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCitGSUxFU19tb2QtJHtQTn0gPSAiJHtsaWJkaXJ9L2FwYWNoZTIvbW9kdWxlcy8qIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCBsc2IiCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCdweXRob24nLCdweXRob24zIHB5dGhvbjMtbW9kdWxlcycsJycsIGQpfSIKK1JERVBFTkRTXyR7UE59X3JlbW92ZSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCdwZXJsJywnJywncGVybCcsIGQpfSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsIGNvcmV1dGlscyBkYnVzLWxpYiIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9haXJjcmFjay1uZy9haXJjcmFjay1uZ18xLjIuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvYWlyY3JhY2stbmcvYWlyY3JhY2stbmdfMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGYwNzJlLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9haXJjcmFjay1uZy9haXJjcmFjay1uZ18xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkFpcmNyYWNrLW5nIGlzIGEgc2V0IG9mIHRvb2xzIGZvciBhdWRpdGluZyB3aXJlbGVzcyBuZXR3b3JrcyIKLURFU0NSSVBUSU9OID0gIkFpcmNyYWNrLW5nIGlzIGFuIDgwMi4xMSBXRVAgYW5kIFdQQS1QU0sga2V5cyBjcmFja2luZyBwcm9ncmFtIHRoYXQgY2FuIHJlY292ZXIga2V5cyBvbmNlIGVub3VnaCBkYXRhIHBhY2tldHMgaGF2ZSBiZWVuIGNhcHR1cmVkLiBJdCBpbXBsZW1lbnRzIHRoZSBzdGFuZGFyZCBGTVMgYXR0YWNrIGFsb25nIHdpdGggc29tZSBvcHRpbWl6YXRpb25zIGxpa2UgS29yZUsgYXR0YWNrcywgYXMgd2VsbCBhcyB0aGUgUFRXIGF0dGFjaywgdGh1cyBtYWtpbmcgdGhlIGF0dGFjayBtdWNoIGZhc3RlciBjb21wYXJlZCB0byBvdGhlciBXRVAgY3JhY2tpbmcgdG9vbHMuIgotU0VDVElPTiA9ICJzZWN1cml0eSIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9MTtlbmRsaW5lPTI7bWQ1PTFmYmQ4MTI0MWZlMjUyZWMwZjU2NThhNTIxYWI3ZGQ4IgotCi1ERVBFTkRTID0gImxpYm5sIG9wZW5zc2wgc3FsaXRlMyBsaWJwY3JlIGxpYnBjYXAiCi1SQyA9ICJyYzIiCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5haXJjcmFjay1uZy5vcmcvJHtCUH0tJHtSQ30udGFyLmd6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXh1cF9jZmxhZ3MucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYmU5ZDUzN2YwNmY0ZDY5NTYyMTNhZjA5YzQ0NzZkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYTViM2VkYTQ0MjU0ZWZjNWI3YzlmNzc2ZWI3NTZmN2NjMzIzYWQ1ZDA4MTNjMTAxZTkyZWRiNDgzZDE1N2U5IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQfS1yYzIiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLUNGTEFHUyArPSAiIC1JJHtTfS9zcmMvaW5jbHVkZSIKLQotT0VNQUtFX0VYVFJBID0gInNxbGl0ZT10cnVlIGV4cGVyaW1lbnRhbD10cnVlIHBjcmU9dHJ1ZSBcCi0gICAgICAgICAgICAgICAgcHJlZml4PSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIgotCi1kb19jb21waWxlICgpIHsKLSAgICBtYWtlICR7T0VNQUtFX0VYVFJBfSBUT09MX1BSRUZJWD0ke1RBUkdFVF9TWVN9LQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBtYWtlIERFU1RESVI9JHtEfSAke09FTUFLRV9FWFRSQX0gZXh0X3NjcmlwdHM9dHJ1ZSBpbnN0YWxsCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIvdXNyL2xvY2FsLyIKLQotUkRFUEVORFNfJHtQTn0gPSAibGlicGNhcCIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9haXJjcmFjay1uZy9haXJjcmFjay1uZ18xLjMuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvYWlyY3JhY2stbmcvYWlyY3JhY2stbmdfMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzkyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvYWlyY3JhY2stbmcvYWlyY3JhY2stbmdfMS4zLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQWlyY3JhY2stbmcgaXMgYSBzZXQgb2YgdG9vbHMgZm9yIGF1ZGl0aW5nIHdpcmVsZXNzIG5ldHdvcmtzIgorREVTQ1JJUFRJT04gPSAiQWlyY3JhY2stbmcgaXMgYW4gODAyLjExIFdFUCBhbmQgV1BBLVBTSyBrZXlzIGNyYWNraW5nIHByb2dyYW0gdGhhdCBjYW4gcmVjb3ZlciBrZXlzIG9uY2UgZW5vdWdoIGRhdGEgcGFja2V0cyBoYXZlIGJlZW4gY2FwdHVyZWQuIEl0IGltcGxlbWVudHMgdGhlIHN0YW5kYXJkIEZNUyBhdHRhY2sgYWxvbmcgd2l0aCBzb21lIG9wdGltaXphdGlvbnMgbGlrZSBLb3JlSyBhdHRhY2tzLCBhcyB3ZWxsIGFzIHRoZSBQVFcgYXR0YWNrLCB0aHVzIG1ha2luZyB0aGUgYXR0YWNrIG11Y2ggZmFzdGVyIGNvbXBhcmVkIHRvIG90aGVyIFdFUCBjcmFja2luZyB0b29scy4iCitTRUNUSU9OID0gInNlY3VyaXR5IgorTElDRU5TRSA9ICJHUEwtMi4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT0xO2VuZGxpbmU9MjttZDU9MWZiZDgxMjQxZmUyNTJlYzBmNTY1OGE1MjFhYjdkZDgiCisKK0RFUEVORFMgPSAibGlibmwgb3BlbnNzbCBzcWxpdGUzIGxpYnBjcmUgbGlicGNhcCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuYWlyY3JhY2stbmcub3JnLyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImM3YzViMDc2ZGVlMGMyNWVlNTgwYjBmNTZmNDU1NjIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhZTA4YTdjMjg3NDFmNmFjZTI3NjkyNjcxMTIwNTMzNjY1NTBlN2Y3NDY0NzcwODExODhhZDM4NDEwMzgzY2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorQ0ZMQUdTICs9ICIgLUkke1N9L3NyYy9pbmNsdWRlIgorCitPRU1BS0VfRVhUUkEgPSAic3FsaXRlPXRydWUgZXhwZXJpbWVudGFsPXRydWUgcGNyZT10cnVlIFwKKyAgICAgICAgICAgICAgICBwcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAiCisKK2RvX2NvbXBpbGUgKCkgeworICAgIG1ha2UgJHtPRU1BS0VfRVhUUkF9IFRPT0xfUFJFRklYPSR7VEFSR0VUX1NZU30tCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG1ha2UgREVTVERJUj0ke0R9ICR7T0VNQUtFX0VYVFJBfSBleHRfc2NyaXB0cz10cnVlIGluc3RhbGwKK30KKworRklMRVNfJHtQTn0gKz0gIi91c3IvbG9jYWwvIgorCitSREVQRU5EU18ke1BOfSA9ICJsaWJwY2FwIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2FpcmNyYWNrLW5nL2ZpbGVzL2ZpeHVwX2NmbGFncy5wYXRjaCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9haXJjcmFjay1uZy9maWxlcy9maXh1cF9jZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxM2RkMjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2FpcmNyYWNrLW5nL2ZpbGVzL2ZpeHVwX2NmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtIFN0YXR1czogSWluYXBwcm9wcmlhdGUKLQotSXNzdWVzIGRvIHRvIGJ1aWxkIGVudi4KLQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLQotSW5kZXg6IGFpcmNyYWNrLW5nLTEuMi1yYzIvc3JjL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWlyY3JhY2stbmctMS4yLXJjMi5vcmlnL3NyYy9NYWtlZmlsZQotKysrIGFpcmNyYWNrLW5nLTEuMi1yYzIvc3JjL01ha2VmaWxlCi1AQCAtMyw4ICszLDYgQEAgaW5jbHVkZSAkKEFDX1JPT1QpL2NvbW1vbi5tYWsKLSAKLSBURVNUX0RJUgk9ICQoQUNfUk9PVCkvdGVzdAotIAotLUNGTEFHUwkJKz0gLUlpbmNsdWRlCi0tCi0gaUNDICAgICAgICAgICAgID0gJChzaGVsbCBmaW5kIC9vcHQvaW50ZWwvY2MvKi9iaW4vaWNjKQotIGlDRkxBR1MgICAgICAgICA9IC13IC1tY3B1PXBlbnRpdW1wcm8gLW1hcmNoPXBlbnRpdW1wcm8gJChDT01NT05fQ0ZMQUdTKQotIGlPUFRGTEFHUyAgICAgICA9IC1PMyAtaXAgLWlwbyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0Ci1AQCAtMTAyLDcgKzEwMCw3IEBAIGVuZGlmCi0gCi0gCi0gaWZlcSAoJChzdWJzdCBUUlVFLHRydWUsJChmaWx0ZXIgVFJVRSB0cnVlLCQoc3FsaXRlKSAkKFNRTElURSkpKSx0cnVlKQotLQlMSUJTUUwJCT0gLUwvdXNyL2xvY2FsL2xpYiAtbHNxbGl0ZTMKLSsJTElCU1FMCQk9IC1sc3FsaXRlMwotIGVsc2UKLSAJTElCU1FMCQk9Ci0gZW5kaWYKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9iYXN0aWxsZS9iYXN0aWxsZV8zLjIuMS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9iYXN0aWxsZS9iYXN0aWxsZV8zLjIuMS5iYgppbmRleCBlZWUxYTM4Li4xNTJjMDNhIDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvYmFzdGlsbGUvYmFzdGlsbGVfMy4yLjEuYmIKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2Jhc3RpbGxlL2Jhc3RpbGxlXzMuMi4xLmJiCkBAIC05LDcgKzksNyBAQAogUkRFUEVORFNfJHtQTn0gPSAicGVybCBiYXNoIHRjbCBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS10ZXh0LXdyYXAgbGliLXBlcmwgcGVybC1tb2R1bGUtZmlsZS1wYXRoIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1lcnJubyBwZXJsLW1vZHVsZS1maWxlLWdsb2IgcGVybC1tb2R1bGUtdGllLWhhc2gtbmFtZWRjYXB0dXJlIHBlcmwtbW9kdWxlLWZpbGUtY29weSBwZXJsLW1vZHVsZS1lbmdsaXNoIHBlcmwtbW9kdWxlLWV4cG9ydGVyIHBlcmwtbW9kdWxlLWN3ZCBsaWJjdXJzZXMtcGVybCBjb3JldXRpbHMiCiBGSUxFU18ke1BOfSArPSAiL3J1bi9sb2NrL3N1YnN5cy9iYXN0aWxsZSIKIAotaW5oZXJpdCBhbGxhcmNoIG1vZHVsZS1iYXNlCitpbmhlcml0IG1vZHVsZS1iYXNlCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9iYXN0aWxsZS1saW51eC9maWxlcy9iYXN0aWxsZS1saW51eC8zLjIuMS9CYXN0aWxsZS0zLjIuMS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL0FjY291bnRQZXJtaXNzaW9uLnBtIFwKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9jbGFtYXYvY2xhbWF2XzAuOTkuMy5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9jbGFtYXYvY2xhbWF2XzAuOTkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg4MjUwZC4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvY2xhbWF2L2NsYW1hdl8wLjk5LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotU1VNTUFSWSA9ICJDbGFtQVYgYW50aS12aXJ1cyB1dGlsaXR5IGZvciBVbml4IC0gY29tbWFuZC1saW5lIGludGVyZmFjZSIKLURFU0NSSVBUSU9OID0gIkNsYW1BViBpcyBhbiBvcGVuIHNvdXJjZSBhbnRpdmlydXMgZW5naW5lIGZvciBkZXRlY3RpbmcgdHJvamFucywgdmlydXNlcywgbWFsd2FyZSAmIG90aGVyIG1hbGljaW91cyB0aHJlYXRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuY2xhbWF2Lm5ldC9pbmRleC5odG1sIgotU0VDVElPTiA9ICJzZWN1cml0eSIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLURFUEVORFMgPSAibGlidG9vbCBkYiBsaWJtc3BhY2sgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEdQTDtiZWdpbmxpbmU9MjtlbmRsaW5lPTM7bWQ1PTRiODljMDVhY2M3MTE5NWU5YTA2ZWRmYTJmYTdkMDkyIgotCi1TUkNSRVYgPSAiMjI0ZjczNDYxYTQ0ZTI3OGU5ZmE1MGJhNTlmNTFlZTVlNjQzNzNlMCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZydGFkbWluL2NsYW1hdi1kZXZlbDticmFuY2g9cmVsLzAuOTkgXAotICAgIGZpbGU6Ly9jbGFtZC5jb25mIFwKLSAgICBmaWxlOi8vZnJlc2hjbGFtLmNvbmYgXAotICAgIGZpbGU6Ly92b2xhdGlsZXMuMDNfY2xhbWF2IFwKLSAgICBmaWxlOi8vJHtCUE59LnNlcnZpY2UgXAotICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTEVBRF9TT05BTUUgPSAibGliY2xhbWF2LnNvIgotU09fVkVSID0gIjcuMS4xIgotCi1FWFRSQU5BVElWRVBBVEggKz0gImNocnBhdGgtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHVzZXJhZGQgc3lzdGVtZAotCi1VSUQgPSAiY2xhbWF2IgotR0lEID0gImNsYW1hdiIKLQotIyBDbGFtYXYgaGFzIGEgYnVpbHQgbGx2bSB2ZXJzaW9uIDIgYnV0IGRvZXMgbm90IGJ1aWxkIHdpdGggZ2NjIDYueCwKLSMgZGlzYWJsZSB0aGUgaW50ZXJuYWwgb25lLiBUaGlzIGlzIGEga25vd24gaXNzdWUKLSMgSWYgeW91IHdhbnQgTExWTSBzdXBwb3J0LCB1c2UgbWV0YS1vZSBsbHZtMy4zIHRvIGJ1aWxkIGZvciBHQ0MgNi5YLAotIyBhcyBkZWZpbmVkIGJlbG93Ci0KLUNMQU1BVl9MTFZNID89ICJvZWxsdm0iCi1DTEFNQVZfTExWTV9SRUxFQVNFID89ICI2LjAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIm5jdXJzZXMgb3BlbnNzbCBiejIgemxpYiAke0NMQU1BVl9MTFZNfSIKLVBBQ0tBR0VDT05GSUcgKz0gIiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImlwdjYiLCAiaXB2NiIsICIiLCBkKX0iCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbb2VsbHZtXSA9ICItLXdpdGgtc3lzdGVtLWxsdm0gLS13aXRoLWxsdm0tbGlua2luZz1keW5hbWljIC0tZGlzYWJsZS1sbHZtLCAsbGx2bSR7Q0xBTUFWX0xMVk1fUkVMRUFTRX0iCi0KLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmU9JHtTVEFHSU5HX0xJQkRJUn0sICAtLXdpdGhvdXQtcGNyZSwgbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbeG1sXSA9ICItLXdpdGgteG1sPSR7U1RBR0lOR19MSUJESVJ9Ly4uLCAtLXdpdGgteG1sPW5vLCBsaWJ4bWwyLCIKLVBBQ0tBR0VDT05GSUdbanNvbl0gPSAiLS13aXRoLWxpYmpzb249JHtTVEFHSU5HX0xJQkRJUn0sIC0td2l0aG91dC1saWJqc29uLCBqc29uLCIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS13aXRoLWxpYmN1cmw9JHtTVEFHSU5HX0xJQkRJUn0sIC0td2l0aG91dC1saWJjdXJsLCBjdXJsLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwgLS1kaXNhYmxlLWlwdjYiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0vdXNyLCAtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IgLS1kaXNhYmxlLXpsaWItdmNoZWNrICwgLS13aXRob3V0LXpsaWIsIHpsaWIsICIKLVBBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtbGliYnoyLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwgLS13aXRob3V0LWxpYmJ6Mi1wcmVmaXgsICIKLVBBQ0tBR0VDT05GSUdbbmN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLCAtLXdpdGhvdXQtbGlibmN1cnNlcy1wcmVmaXgsIG5jdXJzZXMsICIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsICIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLXVzZXI9JHtVSUR9ICAtLXdpdGgtZ3JvdXA9JHtHSUR9IFwKLSAgICAgICAgICAgIC0td2l0aG91dC1saWJjaGVjay1wcmVmaXggLS1kaXNhYmxlLXVucmFyIFwKLSAgICAgICAgICAgIC0tZGlzYWJsZS1tZW1wb29sIFwKLSAgICAgICAgICAgIC0tcHJvZ3JhbS1wcmVmaXg9IiIgXAotICAgICAgICAgICAgLS1kaXNhYmxlLXlhcmEgXAotICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1N9Ci0gICAgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gCi19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kKCkgewotICAgICMgYnJ1dGUgZm9yY2UgcmVtb3ZpbmcgUlBBVEgKLSAgICBjaHJwYXRoIC1kICAke0J9L2xpYmNsYW1hdi8ubGlicy9saWJjbGFtYXYuc28uJHtTT19WRVJ9Ci0gICAgY2hycGF0aCAtZCAgJHtCfS9zaWd0b29sLy5saWJzL3NpZ3Rvb2wKLSAgICBjaHJwYXRoIC1kICAke0J9L2NsYW1iYy8ubGlicy9jbGFtYmMKLSAgICBjaHJwYXRoIC1kICAke0J9L2NsYW1zY2FuLy5saWJzL2NsYW1zY2FuCi0gICAgY2hycGF0aCAtZCAgJHtCfS9jbGFtY29uZi8ubGlicy9jbGFtY29uZgotICAgIGNocnBhdGggLWQgICR7Qn0vY2xhbWQvLmxpYnMvY2xhbWQKLSAgICBjaHJwYXRoIC1kICAke0J9L2ZyZXNoY2xhbS8ubGlicy9mcmVzaGNsYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvY2xhbWF2Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jbGFtYXYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vY2xhbWQuY29uZiAke0R9LyR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2ZyZXNoY2xhbS5jb25mICR7RH0vJHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19jbGFtYXYgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzL3ZvbGF0aWxlcy4wM19jbGFtYXYKLSAgICBzZWQgLWkgLWUgJ3MjJHtTVEFHSU5HX0RJUl9IT1NUfSMjZycgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliY2xhbWF2LnBjCi0gICAgcm0gJHtEfS8ke2xpYmRpcn0vbGliY2xhbWF2LnNvCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2NsYW1hdi5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NsYW1hdi5zZXJ2aWNlCi0gICAgZmkKLX0KLQotcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpIHsKLSAgICBpZiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0gICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotICAgIGZpCi0gICAgY2hvd24gJHtVSUR9OiR7R0lEfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9jbGFtYXYKLX0KLQotCi1QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYgJHtQTn0tZGJnICR7UE59LWRhZW1vbiAke1BOfS1kb2MgXAotICAgICAgICAgICAgJHtQTn0tY2xhbWRzY2FuICR7UE59LWZyZXNoY2xhbSAke1BOfS1saWJjbGFtYXYgJHtQTn0tc3RhdGljZGV2IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vY2xhbWJjICR7YmluZGlyfS9jbGFtc2NhbiAke2JpbmRpcn0vY2xhbXN1Ym1pdCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9LypzaWd0b29sICR7bWFuZGlyfS9tYW4xL2NsYW1iYyogJHttYW5kaXJ9L21hbjEvY2xhbXNjYW4qIFwKLSAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9zaWd0b29sKiAke21hbmRpcn0vbWFuMS9jbGFtYnN1Ym1pdCogIFwKLSAgICAgICAgICAgICAgICAke2RvY2Rpcn0vY2xhbWF2LyogIgotCi1GSUxFU18ke1BOfS1jbGFtZHNjYW4gPSAiICR7YmluZGlyfS9jbGFtZHNjYW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2NsYW1kc2Nhbi8qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2NsYW1kc2NhbiogXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kYWVtb24gPSAiJHtiaW5kaXJ9L2NsYW1jb25mICR7YmluZGlyfS9jbGFtZHRvcCAke3NiaW5kaXJ9L2NsYW1kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2NsYW1jb25mKiAke21hbmRpcn0vbWFuMS9jbGFtZHRvcCogXAotICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjUvY2xhbWQqICAke21hbmRpcn0vbWFuOC9jbGFtZCogXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9jbGFtZC5jb25mKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NsYW1hdi1kYWVtb24vKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vY2xhbWF2LWRhZW1vbi8qICAke3N5c2NvbmZkaXJ9L2NsYW1hdi1kYWVtb24gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9sb2djaGVjay9pZ25vcmUuZC5zZXJ2ZXIvY2xhbWF2LWRhZW1vbiAiCi0KLUZJTEVTXyR7UE59LWZyZXNoY2xhbSA9ICIke2JpbmRpcn0vZnJlc2hjbGFtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZnJlc2hjbGFtLmNvbmYqICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2NsYW1hdiAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL2NsYW1hdiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vJHtQTn0tZnJlc2hjbGFtICR7bWFuZGlyfS9tYW4xL2ZyZXNoY2xhbS4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW41L2ZyZXNoY2xhbS5jb25mLiogXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jbGFtYXYtZnJlc2hjbGFtLnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59LWRldiA9ICIgJHtiaW5kaXJ9L2NsYW1hdi1jb25maWcgJHtsaWJkaXJ9LyoubGEgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnLyoucGMgXAotICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9jbGFtYXYtY29uZmlnLiogXAotICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyouaCAke2RvY2Rpcn0vbGliY2xhbWF2KiAiCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIke2xpYmRpcn0vKi5hIgotCi1GSUxFU18ke1BOfS1saWJjbGFtYXYgPSAiJHtsaWJkaXJ9L2xpYmNsYW1hdi5zbyogJHtsaWJkaXJ9L2xpYm1zcGFjay5zbypcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9saWJjbGFtYXYvKiAiCi0KLUZJTEVTXyR7UE59LWRvYyA9ICIke21hbmRpcn0vbWFuLyogXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vbWFuLyogXAotICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS8qICIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtICR7VUlEfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWcgJHtHSUR9IC0taG9tZS1kaXIgIFwKLSAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sLyR7QlBOfSBcCi0gICAgLS1uby1jcmVhdGUtaG9tZSAgLS1zaGVsbCAvYmluL2ZhbHNlICR7QlBOfSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbmN1cnNlcy1saWJuY3Vyc2VzIGxpYmJ6MiBuY3Vyc2VzLWxpYnRpbmZvIGNsYW1hdi1mcmVzaGNsYW0gY2xhbWF2LWxpYmNsYW1hdiIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9jbGFtYXYvY2xhbWF2XzAuOTkuNC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9jbGFtYXYvY2xhbWF2XzAuOTkuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzJjMmZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2NsYW1hdi9jbGFtYXZfMC45OS40LmJiCkBAIC0wLDAgKzEsMTU4IEBACitTVU1NQVJZID0gIkNsYW1BViBhbnRpLXZpcnVzIHV0aWxpdHkgZm9yIFVuaXggLSBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIgorREVTQ1JJUFRJT04gPSAiQ2xhbUFWIGlzIGFuIG9wZW4gc291cmNlIGFudGl2aXJ1cyBlbmdpbmUgZm9yIGRldGVjdGluZyB0cm9qYW5zLCB2aXJ1c2VzLCBtYWx3YXJlICYgb3RoZXIgbWFsaWNpb3VzIHRocmVhdHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jbGFtYXYubmV0L2luZGV4Lmh0bWwiCitTRUNUSU9OID0gInNlY3VyaXR5IgorTElDRU5TRSA9ICJMR1BMLTIuMSIKKworREVQRU5EUyA9ICJsaWJ0b29sIGRiIGxpYm1zcGFjayBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MR1BMO2JlZ2lubGluZT0yO2VuZGxpbmU9MzttZDU9NGI4OWMwNWFjYzcxMTk1ZTlhMDZlZGZhMmZhN2QwOTIiCisKK1NSQ1JFViA9ICJiNjZlNWUyN2I0OGMwYTA3NDk0ZjlkZjliODA5ZWQ5MzNjZWRlMDQ3IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdnJ0YWRtaW4vY2xhbWF2LWRldmVsO2JyYW5jaD1yZWwvMC45OSBcCisgICAgZmlsZTovL2NsYW1kLmNvbmYgXAorICAgIGZpbGU6Ly9mcmVzaGNsYW0uY29uZiBcCisgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19jbGFtYXYgXAorICAgIGZpbGU6Ly8ke0JQTn0uc2VydmljZSBcCisgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMRUFEX1NPTkFNRSA9ICJsaWJjbGFtYXYuc28iCitTT19WRVIgPSAiNy4xLjEiCisKK0VYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgdXNlcmFkZCBzeXN0ZW1kCisKK1VJRCA9ICJjbGFtYXYiCitHSUQgPSAiY2xhbWF2IgorCisjIENsYW1hdiBoYXMgYSBidWlsdCBsbHZtIHZlcnNpb24gMiBidXQgZG9lcyBub3QgYnVpbGQgd2l0aCBnY2MgNi54LAorIyBkaXNhYmxlIHRoZSBpbnRlcm5hbCBvbmUuIFRoaXMgaXMgYSBrbm93biBpc3N1ZQorIyBJZiB5b3Ugd2FudCBMTFZNIHN1cHBvcnQsIHVzZSBtZXRhLW9lIGxsdm0zLjMgdG8gYnVpbGQgZm9yIEdDQyA2LlgsCisjIGFzIGRlZmluZWQgYmVsb3cKKworQ0xBTUFWX0xMVk0gPz0gIm9lbGx2bSIKK0NMQU1BVl9MTFZNX1JFTEVBU0UgPz0gIjYuMCIKKworUEFDS0FHRUNPTkZJRyA/PSAibmN1cnNlcyBvcGVuc3NsIGJ6MiB6bGliICR7Q0xBTUFWX0xMVk19IgorUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiaXB2NiIsICJpcHY2IiwgIiIsIGQpfSIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tvZWxsdm1dID0gIi0td2l0aC1zeXN0ZW0tbGx2bSAtLXdpdGgtbGx2bS1saW5raW5nPWR5bmFtaWMgLS1kaXNhYmxlLWxsdm0sICxsbHZtJHtDTEFNQVZfTExWTV9SRUxFQVNFfSIKKworUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZT0ke1NUQUdJTkdfTElCRElSfSwgIC0td2l0aG91dC1wY3JlLCBsaWJwY3JlIgorUEFDS0FHRUNPTkZJR1t4bWxdID0gIi0td2l0aC14bWw9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aC14bWw9bm8sIGxpYnhtbDIsIgorUEFDS0FHRUNPTkZJR1tqc29uXSA9ICItLXdpdGgtbGlianNvbj0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRob3V0LWxpYmpzb24sIGpzb24sIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtbGliY3VybD0ke1NUQUdJTkdfTElCRElSfSwgLS13aXRob3V0LWxpYmN1cmwsIGN1cmwsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfS91c3IsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfRElSX0hPU1R9L3VzciAtLWRpc2FibGUtemxpYi12Y2hlY2sgLCAtLXdpdGhvdXQtemxpYiwgemxpYiwgIgorUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1saWJiejItcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLCAtLXdpdGhvdXQtbGliYnoyLXByZWZpeCwgIgorUEFDS0FHRUNPTkZJR1tuY3Vyc2VzXSA9ICItLXdpdGgtbGlibmN1cnNlcy1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aG91dC1saWJuY3Vyc2VzLXByZWZpeCwgbmN1cnNlcywgIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8sIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciwgIgorCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGgtdXNlcj0ke1VJRH0gIC0td2l0aC1ncm91cD0ke0dJRH0gXAorICAgICAgICAgICAgLS13aXRob3V0LWxpYmNoZWNrLXByZWZpeCAtLWRpc2FibGUtdW5yYXIgXAorICAgICAgICAgICAgLS1kaXNhYmxlLW1lbXBvb2wgXAorICAgICAgICAgICAgLS1wcm9ncmFtLXByZWZpeD0iIiBcCisgICAgICAgICAgICAtLWRpc2FibGUteWFyYSBcCisgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGNkICR7U30KKyAgICAuL2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfSAKK30KKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgIyBicnV0ZSBmb3JjZSByZW1vdmluZyBSUEFUSAorICAgIGNocnBhdGggLWQgICR7Qn0vbGliY2xhbWF2Ly5saWJzL2xpYmNsYW1hdi5zby4ke1NPX1ZFUn0KKyAgICBjaHJwYXRoIC1kICAke0J9L3NpZ3Rvb2wvLmxpYnMvc2lndG9vbAorICAgIGNocnBhdGggLWQgICR7Qn0vY2xhbWJjLy5saWJzL2NsYW1iYworICAgIGNocnBhdGggLWQgICR7Qn0vY2xhbXNjYW4vLmxpYnMvY2xhbXNjYW4KKyAgICBjaHJwYXRoIC1kICAke0J9L2NsYW1jb25mLy5saWJzL2NsYW1jb25mCisgICAgY2hycGF0aCAtZCAgJHtCfS9jbGFtZC8ubGlicy9jbGFtZAorICAgIGNocnBhdGggLWQgICR7Qn0vZnJlc2hjbGFtLy5saWJzL2ZyZXNoY2xhbQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLWQgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9jbGFtYXYKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2NsYW1hdiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9jbGFtZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZnJlc2hjbGFtLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX2NsYW1hdiAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX2NsYW1hdgorICAgIHNlZCAtaSAtZSAncyMke1NUQUdJTkdfRElSX0hPU1R9IyNnJyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJjbGFtYXYucGMKKyAgICBybSAke0R9LyR7bGliZGlyfS9saWJjbGFtYXYuc28KKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vY2xhbWF2LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY2xhbWF2LnNlcnZpY2UKKyAgICBmaQorfQorCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkgeworICAgIGlmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KKyAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgZmkKKyAgICBjaG93biAke1VJRH06JHtHSUR9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2NsYW1hdgorfQorCisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRldiAke1BOfS1kYmcgJHtQTn0tZGFlbW9uICR7UE59LWRvYyBcCisgICAgICAgICAgICAke1BOfS1jbGFtZHNjYW4gJHtQTn0tZnJlc2hjbGFtICR7UE59LWxpYmNsYW1hdiAke1BOfS1zdGF0aWNkZXYiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9jbGFtYmMgJHtiaW5kaXJ9L2NsYW1zY2FuICR7YmluZGlyfS9jbGFtc3VibWl0IFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vKnNpZ3Rvb2wgJHttYW5kaXJ9L21hbjEvY2xhbWJjKiAke21hbmRpcn0vbWFuMS9jbGFtc2NhbiogXAorICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL3NpZ3Rvb2wqICR7bWFuZGlyfS9tYW4xL2NsYW1ic3VibWl0KiAgXAorICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9jbGFtYXYvKiAiCisKK0ZJTEVTXyR7UE59LWNsYW1kc2NhbiA9ICIgJHtiaW5kaXJ9L2NsYW1kc2NhbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vY2xhbWRzY2FuLyogXAorICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvY2xhbWRzY2FuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRhZW1vbiA9ICIke2JpbmRpcn0vY2xhbWNvbmYgJHtiaW5kaXJ9L2NsYW1kdG9wICR7c2JpbmRpcn0vY2xhbWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvY2xhbWNvbmYqICR7bWFuZGlyfS9tYW4xL2NsYW1kdG9wKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuNS9jbGFtZCogICR7bWFuZGlyfS9tYW44L2NsYW1kKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2NsYW1kLmNvbmYqIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY2xhbWF2LWRhZW1vbi8qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9jbGFtYXYtZGFlbW9uLyogICR7c3lzY29uZmRpcn0vY2xhbWF2LWRhZW1vbiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2xvZ2NoZWNrL2lnbm9yZS5kLnNlcnZlci9jbGFtYXYtZGFlbW9uICIKKworRklMRVNfJHtQTn0tZnJlc2hjbGFtID0gIiR7YmluZGlyfS9mcmVzaGNsYW0gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9mcmVzaGNsYW0uY29uZiogIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY2xhbWF2ICR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvY2xhbWF2IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS8ke1BOfS1mcmVzaGNsYW0gJHttYW5kaXJ9L21hbjEvZnJlc2hjbGFtLiogXAorICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjUvZnJlc2hjbGFtLmNvbmYuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2NsYW1hdi1mcmVzaGNsYW0uc2VydmljZSIKKworRklMRVNfJHtQTn0tZGV2ID0gIiAke2JpbmRpcn0vY2xhbWF2LWNvbmZpZyAke2xpYmRpcn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvKi5wYyBcCisgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2NsYW1hdi1jb25maWcuKiBcCisgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKi5oICR7ZG9jZGlyfS9saWJjbGFtYXYqICIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfS8qLmEiCisKK0ZJTEVTXyR7UE59LWxpYmNsYW1hdiA9ICIke2xpYmRpcn0vbGliY2xhbWF2LnNvKiAke2xpYmRpcn0vbGlibXNwYWNrLnNvKlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2xpYmNsYW1hdi8qICIKKworRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfS9tYW4vKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYW4vKiBcCisgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9LyogIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gJHtVSUR9IgorVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyAke0dJRH0gLS1ob21lLWRpciAgXAorICAgICR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvJHtCUE59IFwKKyAgICAtLW5vLWNyZWF0ZS1ob21lICAtLXNoZWxsIC9iaW4vZmFsc2UgJHtCUE59IgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCBuY3Vyc2VzLWxpYm5jdXJzZXMgbGliYnoyIG5jdXJzZXMtbGlidGluZm8gY2xhbWF2LWZyZXNoY2xhbSBjbGFtYXYtbGliY2xhbWF2IgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2VjcnlwdGZzLXV0aWxzL2VjcnlwdGZzLXV0aWxzXzExMS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9lY3J5cHRmcy11dGlscy9lY3J5cHRmcy11dGlsc18xMTEuYmIKaW5kZXggZjU1YjBjMy4uMWY3ODBmOSAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2VjcnlwdGZzLXV0aWxzL2VjcnlwdGZzLXV0aWxzXzExMS5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZWNyeXB0ZnMtdXRpbHMvZWNyeXB0ZnMtdXRpbHNfMTExLmJiCkBAIC0yOSw2ICsyOSw3IEBACiAgICAgLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICAgIC0tZGlzYWJsZS1weXdyYXAgXAogICAgIC0tZGlzYWJsZS1ubHMgXAorICAgIC0td2l0aC1wYW1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkgXAogICAgICIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIm5zcyBcCkBAIC00MywxMiArNDQsMTYgQEAKICAgICBleHBvcnQgTlNTX0xJQlM9Ii1MJHtTVEFHSU5HX0JBU0VMSUJESVJ9IC1sc3NsMyAtbHNtaW1lMyAtbG5zczMgLWxzb2Z0b2tuMyAtbG5zc3V0aWwzIgogICAgIGV4cG9ydCBLRVlVVElMU19DRkxBR1M9Ii1JJHtTVEFHSU5HX0lOQ0RJUn0iCiAgICAgZXhwb3J0IEtFWVVUSUxTX0xJQlM9Ii1MJHtTVEFHSU5HX0xJQkRJUn0gLWxrZXl1dGlscyIKKyAgICBzZWQgLWkgLWUgInM7cm9vdHNiaW5kaXI9XCIvc2JpblwiO3Jvb3RzYmluZGlyPVwiXCR7YmFzZV9zYmluZGlyfVwiO2ciICR7U30vY29uZmlndXJlLmFjCiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGNobW9kIDQ3NTUgJHtEfSR7YmFzZV9zYmluZGlyfS9tb3VudC5lY3J5cHRmc19wcml2YXRlCi0gICAgbWtkaXIgLXAgJHtEfS8ke2xpYmRpcn0KLSAgICBtdiAke0R9LyR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9LyR7bGliZGlyfQorICAgICMgJHtiYXNlX2xpYmRpcn0gaXMgaWRlbnRpY2FsIHRvICR7bGliZGlyfSB3aGVuIHVzcm1lcmdlIGVuYWJsZWQKKyAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7RH0vJHtsaWJkaXJ9CisgICAgICAgIG12ICR7RH0vJHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0vJHtsaWJkaXJ9CisgICAgZmkKICAgICBzZWQgLWkgLWUgJ3M6LUkke1NUQUdJTkdfSU5DRElSfTo6JyBcCiAgICAgICAgICAgIC1lICdzOi1MJHtTVEFHSU5HX0xJQkRJUn06OicgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmVjcnlwdGZzLnBjCiAgICAgc2VkIC1pIC1lICJzOiAke2Jhc2Vfc2JpbmRpcn0vY3J5cHRzZXR1cDogJHtzYmluZGlyfS9jcnlwdHNldHVwOiIgJHtEfSR7YmluZGlyfS9lY3J5cHRmcy1zZXR1cC1zd2FwCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZmFpbDJiYW4vZmFpbDJiYW5fMC4xMC4yLmJiIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZhaWwyYmFuL2ZhaWwyYmFuXzAuMTAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UyZGViYS4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZmFpbDJiYW4vZmFpbDJiYW5fMC4xMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJEYWVtb24gdG8gYmFuIGhvc3RzIHRoYXQgY2F1c2UgbXVsdGlwbGUgYXV0aGVudGljYXRpb24gZXJyb3JzLiIKLURFU0NSSVBUSU9OID0gIkZhaWwyQmFuIHNjYW5zIGxvZyBmaWxlcyBsaWtlIC92YXIvbG9nL2F1dGgubG9nIGFuZCBiYW5zIElQIGFkZHJlc3NlcyBoYXZpbmcgdG9vIFwKLW1hbnkgZmFpbGVkIGxvZ2luIGF0dGVtcHRzLiBJdCBkb2VzIHRoaXMgYnkgdXBkYXRpbmcgc3lzdGVtIGZpcmV3YWxsIHJ1bGVzIHRvIHJlamVjdCBuZXcgXAotY29ubmVjdGlvbnMgZnJvbSB0aG9zZSBJUCBhZGRyZXNzZXMsIGZvciBhIGNvbmZpZ3VyYWJsZSBhbW91bnQgb2YgdGltZS4gRmFpbDJCYW4gY29tZXMgXAotb3V0LW9mLXRoZS1ib3ggcmVhZHkgdG8gcmVhZCBtYW55IHN0YW5kYXJkIGxvZyBmaWxlcywgc3VjaCBhcyB0aG9zZSBmb3Igc3NoZCBhbmQgQXBhY2hlLCBcCi1hbmQgaXMgZWFzeSB0byBjb25maWd1cmUgdG8gcmVhZCBhbnkgbG9nIGZpbGUgeW91IGNob29zZSwgZm9yIGFueSBlcnJvciB5b3UgY2hvb3NlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZmFpbDJiYW4ub3JnIgotCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lY2FiYzMxZTkwMzExZGE4NDM3NTNiYTc3Mjg4NWQ5ZiIKLQotU1JDUkVWID0iYTQ1NDg4NDY1ZTBkZDU0N2ViODQ3OWMwZmE5ZmQ1NzdjMTgzNzIxMyIKLVNSQ19VUkkgPSAiIFwKLQlnaXQ6Ly9naXRodWIuY29tL2ZhaWwyYmFuL2ZhaWwyYmFuLmdpdDticmFuY2g9MC4xMCBcCi0JZmlsZTovL2luaXRkIFwKLQlmaWxlOi8vZmFpbDJiYW5fc2V0dXAucHkgXAotIgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHNldHVwdG9vbHMKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKLUlOSVRTQ1JJUFRfTkFNRSA9ICJmYWlsMmJhbi1zZXJ2ZXIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyAyNSIKLQotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICBjcCAke1dPUktESVJ9L2ZhaWwyYmFuX3NldHVwLnB5ICR7U30vc2V0dXAucHkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2ZhaWwyYmFuCi0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mYWlsMmJhbi1zZXJ2ZXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIi9ydW4iCi0KLUlOU0FORV9TS0lQXyR7UE59X2FwcGVuZCA9ICJhbHJlYWR5LXN0cmlwcGVkIgotCi1SREVQRU5EU18ke1BOfSA9ICJzeXNrbG9nZCBpcHRhYmxlcyBzcWxpdGUzIHB5dGhvbiBweXRob24tcHlpbm90aWZ5IgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZhaWwyYmFuL2ZpbGVzL3J1bi1wdGVzdCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2YWViZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworIyNQWVRIT04jIyBmYWlsMmJhbi10ZXN0Y2FzZXMKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9weXRob24tZmFpbDJiYW4uaW5jIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZhaWwyYmFuL3B5dGhvbi1mYWlsMmJhbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI0NWYxNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9weXRob24tZmFpbDJiYW4uaW5jCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRGFlbW9uIHRvIGJhbiBob3N0cyB0aGF0IGNhdXNlIG11bHRpcGxlIGF1dGhlbnRpY2F0aW9uIGVycm9ycy4iCitERVNDUklQVElPTiA9ICJGYWlsMkJhbiBzY2FucyBsb2cgZmlsZXMgbGlrZSAvdmFyL2xvZy9hdXRoLmxvZyBhbmQgYmFucyBJUCBhZGRyZXNzZXMgaGF2aW5nIHRvbyBcCittYW55IGZhaWxlZCBsb2dpbiBhdHRlbXB0cy4gSXQgZG9lcyB0aGlzIGJ5IHVwZGF0aW5nIHN5c3RlbSBmaXJld2FsbCBydWxlcyB0byByZWplY3QgbmV3IFwKK2Nvbm5lY3Rpb25zIGZyb20gdGhvc2UgSVAgYWRkcmVzc2VzLCBmb3IgYSBjb25maWd1cmFibGUgYW1vdW50IG9mIHRpbWUuIEZhaWwyQmFuIGNvbWVzIFwKK291dC1vZi10aGUtYm94IHJlYWR5IHRvIHJlYWQgbWFueSBzdGFuZGFyZCBsb2cgZmlsZXMsIHN1Y2ggYXMgdGhvc2UgZm9yIHNzaGQgYW5kIEFwYWNoZSwgXAorYW5kIGlzIGVhc3kgdG8gY29uZmlndXJlIHRvIHJlYWQgYW55IGxvZyBmaWxlIHlvdSBjaG9vc2UsIGZvciBhbnkgZXJyb3IgeW91IGNob29zZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZhaWwyYmFuLm9yZyIKKworTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNhYmMzMWU5MDMxMWRhODQzNzUzYmE3NzI4ODVkOWYiCisKK1NSQ1JFViA9ImFjMGQ0NDFmZDY4ODUyZmZkYTdiMTVjNzFmMTZiN2Y0ZmRlMWE3ZWUiCitTUkNfVVJJID0gIiBcCisJZ2l0Oi8vZ2l0aHViLmNvbS9mYWlsMmJhbi9mYWlsMmJhbi5naXQ7YnJhbmNoPTAuMTEgXAorCWZpbGU6Ly9pbml0ZCBcCisgICAgICAgIGZpbGU6Ly9mYWlsMmJhbl9zZXR1cC5weSBcCisgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitpbmhlcml0IHVwZGF0ZS1yYy5kIHB0ZXN0CisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0iCitJTklUU0NSSVBUX05BTUUgPSAiZmFpbDJiYW4tc2VydmVyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgMjUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisgICAgY3AgJHtXT1JLRElSfS9mYWlsMmJhbl9zZXR1cC5weSAke1N9L3NldHVwLnB5Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9mYWlsMmJhbgorCWluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZmFpbDJiYW4tc2VydmVyCisJY2hvd24gLVIgcm9vdDpyb290ICR7RH0vJHtiaW5kaXJ9Cit9CisKK2RvX2luc3RhbGxfcHRlc3RfYXBwZW5kICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWkgLWUgJ3MvIyNQWVRIT04jIy8ke1BZVEhPTl9QTn0vZycgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisgICAgICAgIGluc3RhbGwgLUQgJHtTfS9iaW4vZmFpbDJiYW4tdGVzdGNhc2VzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKK0ZJTEVTXyR7UE59ICs9ICIvcnVuIgorCitJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmQgPSAiYWxyZWFkeS1zdHJpcHBlZCIKKworUkRFUEVORFNfJHtQTn0gPSAic3lza2xvZ2QgaXB0YWJsZXMgc3FsaXRlMyAke1BZVEhPTl9QTn0gJHtQWVRIT05fUE59LXB5aW5vdGlmeSIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9weXRob24tZmFpbDJiYW5fMC4xMC4zLjEuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZmFpbDJiYW4vcHl0aG9uLWZhaWwyYmFuXzAuMTAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YTdkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZmFpbDJiYW4vcHl0aG9uLWZhaWwyYmFuXzAuMTAuMy4xLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzCityZXF1aXJlIHB5dGhvbi1mYWlsMmJhbi5pbmMKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAicHl0aG9uIHB5dGhvbi1tb2R1bGVzIHB5dGhvbi1mYWlsMmJhbiIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9weXRob24zLWZhaWwyYmFuXzAuMTAuMy4xLmJiIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZhaWwyYmFuL3B5dGhvbjMtZmFpbDJiYW5fMC4xMC4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM4ODdlOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mYWlsMmJhbi9weXRob24zLWZhaWwyYmFuXzAuMTAuMy4xLmJiCkBAIC0wLDAgKzEsNCBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZmFpbDJiYW4uaW5jCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbjMtY29yZSBweXRob24zLWlvIHB5dGhvbjMtbW9kdWxlcyBweXRob24zLWZhaWwyYmFuIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZzY3J5cHRjdGwvZnNjcnlwdGN0bF8wLjEuMC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9mc2NyeXB0Y3RsL2ZzY3J5cHRjdGxfMC4xLjAuYmIKaW5kZXggNGYwYjEyYy4uODg0N2EwZiAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ZzY3J5cHRjdGwvZnNjcnlwdGN0bF8wLjEuMC5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvZnNjcnlwdGN0bC9mc2NyeXB0Y3RsXzAuMS4wLmJiCkBAIC05LDcgKzksNyBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCiAKLVNSQ1JFViA9ICJlNGM0ZDA5ODRkZWUyNTMxODk3ZTEzYzMyYTE4ZDVlNTRhMmE0YWE2IgorU1JDUkVWID0gIjE0MjMyNjgxMGViMTlkNjc5NDc5M2RiNmQyNGQwNzc1YTE1YWE4ZTUiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2ZzY3J5cHRjdGwuZ2l0IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ltYWdlcy9zZWN1cml0eS1idWlsZC1pbWFnZS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9pbWFnZXMvc2VjdXJpdHktYnVpbGQtaW1hZ2UuYmIKaW5kZXggMWE3YWY4Ni4uYTg3NTdmOSAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2ltYWdlcy9zZWN1cml0eS1idWlsZC1pbWFnZS5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvaW1hZ2VzL3NlY3VyaXR5LWJ1aWxkLWltYWdlLmJiCkBAIC02LDkgKzYsNyBAQAogICAgIHBhY2thZ2Vncm91cC1iYXNlIFwKICAgICBwYWNrYWdlZ3JvdXAtY29yZS1ib290IFwKICAgICBwYWNrYWdlZ3JvdXAtY29yZS1zZWN1cml0eSBcCi0gICAgb3MtcmVsZWFzZSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAicGFja2FnZWdyb3VwLXhmY2UtYmFzZSIsICIiLCBkKX0gXAotICAgICR7Q09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMfSIKKyAgICBvcy1yZWxlYXNlIiAKIAogSU1BR0VfTElOR1VBUyA/PSAiICIKIApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleW5vdGUva2V5bm90ZS0yLjMvY29uZmlndXJlLXJlbW92ZS1oYXJkY29kZS1wYXRoLnBhdGNoIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleW5vdGUva2V5bm90ZS0yLjMvY29uZmlndXJlLXJlbW92ZS1oYXJkY29kZS1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjNlZjQyLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9rZXlub3RlL2tleW5vdGUtMi4zL2NvbmZpZ3VyZS1yZW1vdmUtaGFyZGNvZGUtcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVJlbW92ZSB0aGUgaGFyZGNvZGVkIGxpYiBhbmQgaW5jbHVkZSBkaXJzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MgY29tcGlsZSBzcGVjaWZpY10KLQotd3JpdHRlbiBieTogQW15IEZvbmcgPGFteS5mb25nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotCi0tLS0ga2V5bm90ZS0yLjMvY29uZmlndXJlLmluLm9yaWcJMjAxMC0wNS0yNCAwNDo0NDoxNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBrZXlub3RlLTIuMy9jb25maWd1cmUuaW4JMjAxMC0wNS0yNCAwNDo0NDo1NS4wMDAwMDAwMDAgLTA3MDAKLUBAIC0yMSwyNyArMjEsMTYgQEAKLSBBQ19QQVRIX1BST0coRUNITywgZWNobywgL2Jpbi9lY2hvKQotIEFDX1BBVEhfUFJPRyhTRUQsIHNlZCwgL3Vzci9iaW4vc2VkKQotIAotLWRubCBDaGVja3MgZm9yIGxpYnJhcmllcy4KLS1MSUJTPSItTC91c3IvbGliIC1ML3Vzci9sb2NhbC9saWIgLUwvdXNyL3NzbC9saWIgLUwvdXNyL29wZW5zc2wvbGliXAotLSAtTC91c3IvbG9jYWwvc3NsL2xpYiAtTC91c3IvbG9jYWwvb3BlbnNzbC9saWIgLUwvdXNyL3BrZy9saWIgLUwvcGtnL2xpYiIKLS0KLSBBQ19DSEVDS19MSUIobSwgZmxvb3IsIExJQlM9IiRMSUJTIC1sbSIpCi0gQUNfQ0hFQ0tfTElCKHJzYXJlZiwgUlNBUHJpdmF0ZURlY3J5cHQsIExJQlM9IiRMSUJTIC1scnNhcmVmIikKLSBBQ19DSEVDS19MSUIoY3J5cHRvLCBpMmFfQVNOMV9TVFJJTkcsIExJQlM9IiRMSUJTIC1sY3J5cHRvIikKLSBBQ19DSEVDS19MSUIoUlNBZ2x1ZSwgUlNBX3JlZl9wcml2YXRlX2VuY3J5cHQsIExJQlM9IiRMSUJTIC1sUlNBZ2x1ZSIpCi0gCi0tZG5sIENoZWNrcyBmb3IgaGVhZGVyIGZpbGVzLgotLUNQUEZMQUdTPSItSS91c3IvaW5jbHVkZSAtSS91c3IvbG9jYWwvaW5jbHVkZSAtSS91c3Ivc3NsL2luY2x1ZGVcCi0tIC1JL3Vzci9sb2NhbC9zc2wvaW5jbHVkZSAtSS91c3Ivb3BlbnNzbC9pbmNsdWRlIC1JL3Vzci9wa2cvaW5jbHVkZVwKLS0gLUkvdXNyL2xvY2FsL29wZW5zc2wvaW5jbHVkZSAtSS9wa2cvaW5jbHVkZSIKLS0KLSBBQ19IRUFERVJfU1REQwotIEFDX0hFQURFUl9USU1FCi0gQUNfQ0hFQ0tfSEVBREVSUyhmY250bC5oIGxpbWl0cy5oIHVuaXN0ZC5oIHJlZ2V4Lmggc3lzL3RpbWUuaCBpby5oKQotIEFDX0NIRUNLX0hFQURFUlMoc3NsL2NyeXB0by5oIG9wZW5zc2wvY3J5cHRvLmggY3J5cHRvLmggbWVtb3J5LmgpCi0gCi0tZG5sIENoZWNrcyBmb3Igb3RoZXIgZmlsZXMKLS0KLSBkbmwgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KLSBBQ19DX0NPTlNUCi0gQUNfQ0hFQ0tfVFlQRSh1X2ludCwgdW5zaWduZWQgaW50KQpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleW5vdGUva2V5bm90ZS0yLjMvbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5bm90ZS9rZXlub3RlLTIuMy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkODdjZi4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5bm90ZS9rZXlub3RlLTIuMy9tYWtlZmlsZS1hZGQtbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUFkZCBMREZMQUdTIHZhcmlhYmxlIHRvIE1ha2VmaWxlIHNvIHRoYXQgZXh0cmEgbGlua2VyIGZsYWdzIGNhbiBiZSBzZW50IHZpYSB0aGlzIHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYjIxNjY0OC4uNDJiNDgyNyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTM1LDYgKzM1LDcgQEAgTUtESVIgPSBATUtESVJACi0gU0VEID0gQFNFREAKLSBFQ0hPID0gQEVDSE9ACi0gVFIgPSBAVFJACi0rTERGTEFHUyA9IEBMREZMQUdTQAotIAotIFRBUkZMQUdTID0gLWN2emYgJHtESVNURklMRX0KLSBZQUNDRkxBR1MyID0gLWQgLXAga3YgLWIgegotQEAgLTgzLDcgKzg0LDcgQEAgJChUQVJHRVQpOiAkKE9CSlMpCi0gCSQoUkFOTElCKSAkKFRBUkdFVCkKLSAKLSAkKFRBUkdFVDIpOiAkKFRBUkdFVCkgJChPQkpTMikKLS0JJChDQykgJChDRkxBR1MpIC1vICQoVEFSR0VUMikgJChPQkpTMikgJChMSUJTKQotKwkkKENDKSAkKENGTEFHUykgJChMREZMQUdTKSAtbyAkKFRBUkdFVDIpICQoT0JKUzIpICQoTElCUykKLSAKLSBrLnRhYi5jOiBrZXlub3RlLnkgaGVhZGVyLmgga2V5bm90ZS5oIGFzc2VydGlvbi5oIGNvbmZpZy5oCi0gCSQoWUFDQykgJChZQUNDRkxBR1MpIGtleW5vdGUueQotQEAgLTEzMSw3ICsxMzIsNyBAQCAkKFNTTENFUlQpICQoU1NMS0VZKToKLSAJLWtleW91dCAkKFNTTEtFWSkKLSAKLSB0ZXN0LXNhbXBsZTogYWxsICQoT0JKUzMpCi0tCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkKFRBUkdFVDMpICQoT0JKUzMpICQoTElCUykKLSsJJChDQykgJChDRkxBR1MpICQoTERGTEFHUykgLW8gJChUQVJHRVQzKSAkKE9CSlMzKSAkKExJQlMpCi0gCi0gdGVzdC1zaWc6IGFsbCAkKFNTTENFUlQpICQoU1NMS0VZKQotIAkkKFNFRCkgLWUgJ3MvLS0uKi8vJyA8ICQoU1NMQ0VSVCkgPiAkKFNTTENFUlQpLjEKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9rZXlub3RlL2tleW5vdGUtMi4zL3J1bi1wdGVzdCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9rZXlub3RlL2tleW5vdGUtMi4zL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRjMzVjOS4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5bm90ZS9rZXlub3RlLTIuMy9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0jIS9iaW4vc2gKLQotY2QgQFBURVNUX1BBVEhACi1rZXlub3RlIHZlcmlmeSAtZSB0ZXN0c3VpdGUvdGVzdC1lbnYgXAotICAgICAgICAgICAgICAgLXIgZmFsc2UsbWF5YmUscHJvYmFibHksdHJ1ZSBcCi0gICAgICAgICAgICAgICAtayB0ZXN0c3VpdGUvYXV0aDEgLWsgdGVzdHN1aXRlL2F1dGgyIFwKLSAgICAgICAgICAgICAgIC1rIHRlc3RzdWl0ZS9hdXRoMyAtayB0ZXN0c3VpdGUvYXV0aDQgXAotICAgICAgICAgICAgICAgLWwgdGVzdHN1aXRlL3Rlc3QtYXNzZXJ0aW9uMSBcCi0gICAgICAgICAgICAgICAtbCB0ZXN0c3VpdGUvdGVzdC1hc3NlcnRpb24yIFwKLSAgICAgICAgICAgICAgIC1sIHRlc3RzdWl0ZS90ZXN0LWFzc2VydGlvbjMgXAotICAgICAgICAgICAgICAgLWwgdGVzdHN1aXRlL3Rlc3QtYXNzZXJ0aW9uNCBcCi0gICAgICAgICAgICAgICAtbCB0ZXN0c3VpdGUvdGVzdC1hc3NlcnRpb241IFwKLSAgICAgICAgICAgICAgIC1sIHRlc3RzdWl0ZS90ZXN0LWFzc2VydGlvbjYgXAotICAgICAgICAgICAgICAgLWwgdGVzdHN1aXRlL3Rlc3QtYXNzZXJ0aW9uNyBcCi0gICAgICAgICAgICAgICAmJiBlY2hvICJQQVNTOiBrZXlub3RlLXB0ZXN0IiBcCi0gICAgICAgICAgICAgICB8fCBlY2hvICJGQUlMOiBrZXlub3RlLXB0ZXN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleW5vdGUva2V5bm90ZV8yLjMuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5bm90ZS9rZXlub3RlXzIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MjQ4NS4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5bm90ZS9rZXlub3RlXzIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5bm90ZSB0b29sIGFuZCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiS2V5Tm90ZSBpcyBhIHNpbXBsZSBhbmQgZmxleGlibGUgdHJ1c3QtbWFuYWdlbWVudCBcCi0gIHN5c3RlbSBkZXNpZ25lZCB0byB3b3JrIHdlbGwgZm9yIGEgdmFyaWV0eSBvZiBsYXJnZS0gYW5kIHNtYWxsLSBcCi0gIHNjYWxlIEludGVybmV0LWJhc2VkIGFwcGxpY2F0aW9ucy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jcy5jb2x1bWJpYS5lZHUvfmFuZ2Vsb3Mva2V5bm90ZS5odG1sIgotU0VDVElPTiA9ICJzZWN1cml0eSIKLQotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYTI2NTA5NWM1NDljMTgwODY4NmE2NzZmMjY5OWM5OCIKLQotTUFJTl9JRCA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKLU1JTk9SX0lEID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0tJHtNQUlOX0lEfS0ke01JTk9SX0lEfS8ke0JQTn1fJHtQVn0udGFyLmd6IFwKLSAgICAgICBmaWxlOi8vY29uZmlndXJlLXJlbW92ZS1oYXJkY29kZS1wYXRoLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vbWFrZWZpbGUtYWRkLWxkZmxhZ3MucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfStkZnNnLm9yaWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTE0NTUzZTZhZDkyMWI1Yzg1MDI2Y2U1YmVjM2FmZTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhkMmFjZmExYzM2MzBhMDdhZGNiNWM4ZmU5MmQyYWVmN2YwZTZkMjQyYjg5OThiMmJiYjFjNmU0YzQwOGQ0NiIKLQotREVQRU5EUyA9ICJmbGV4IG9wZW5zc2wiCi0KLUVYVFJBX09FTUFLRSArPSAidGVzdC1zYW1wbGUgLWoxIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L2tleW5vdGUgJHtEfSR7YmluZGlyfS9rZXlub3RlCi0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vbGlia2V5bm90ZS5hICR7RH0ke2xpYmRpcn0vbGlia2V5bm90ZS5hCi0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30va2V5bm90ZS5oICR7RH0ke2luY2x1ZGVkaXJ9L2tleW5vdGUuaAotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1N9L3NhbXBsZS1hcHAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtciAke1N9L3Rlc3RzdWl0ZSAke0R9JHtQVEVTVF9QQVRIfQotICAgIHNlZCAtaSAnc3xAUFRFU1RfUEFUSEB8JHtQVEVTVF9QQVRIfXwnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleXV0aWxzL2tleXV0aWxzXzEuNS4xMC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9rZXl1dGlscy9rZXl1dGlsc18xLjUuMTAuYmIKaW5kZXggMmVhZDhmYS4uYTQyMjJiOSAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2tleXV0aWxzL2tleXV0aWxzXzEuNS4xMC5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkva2V5dXRpbHMva2V5dXRpbHNfMS41LjEwLmJiCkBAIC0yNyw2ICsyNyw4IEBACiAKIEVYVFJBX09FTUFLRSA9ICInQ0ZMQUdTPSR7Q0ZMQUdTfSAtV2FsbCcgXAogICAgIE5PX0FSTElCPTEgXAorICAgIEJJTkRJUj0ke2Jhc2VfYmluZGlyfSBcCisgICAgU0JJTkRJUj0ke2Jhc2Vfc2JpbmRpcn0gXAogICAgIExJQkRJUj0ke2Jhc2VfbGliZGlyfSBcCiAgICAgVVNSTElCRElSPSR7YmFzZV9saWJkaXJ9IFwKICAgICBCVUlMREZPUj0ke1NJVEVJTkZPX0JJVFN9LWJpdCBcCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbGlic2VjY29tcC9saWJzZWNjb21wXzIuMy4zLmJiIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L2xpYnNlY2NvbXAvbGlic2VjY29tcF8yLjMuMy5iYgppbmRleCA4ZDU4MTYzLi45YzY2ZGI2IDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbGlic2VjY29tcC9saWJzZWNjb21wXzIuMy4zLmJiCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9saWJzZWNjb21wL2xpYnNlY2NvbXBfMi4zLjMuYmIKQEAgLTM1LDggKzM1LDcgQEAKICAgICBkb25lCiB9CiAKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2xpYmRpcn0vJHtQTn0uc28qIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS8ke0JQTn0uc28qIgogRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vJHtQTn0vdGVzdHMvLmRlYnVnLyogJHtsaWJkaXJ9LyR7UE59L3Rvb2xzLy5kZWJ1ZyIKIAotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKIFJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9ubWFwXzcuNjAuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9ubWFwXzcuNjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NjE2ZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjYwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJuZXR3b3JrIGF1ZGl0aW5nIHRvb2wiCi1ERVNDUklQVElPTiA9ICJObWFwICgiTmV0d29yayBNYXBwZXIiKSBpcyBhIGZyZWUgYW5kIG9wZW4gc291cmNlIChsaWNlbnNlKSB1dGlsaXR5IGZvciBuZXR3b3JrIGRpc2NvdmVyeSBhbmQgc2VjdXJpdHkgYXVkaXRpbmcuXG5HdWkgc3VwcG9ydCB2aWEgYXBwZW5kaW5nIHRvIElNQUdFX0ZFQVRVUkVTIHgxMS1iYXNlIGluIGxvY2FsLmNvbmYiCi1TRUNUSU9OID0gInNlY3VyaXR5IgotTElDRU5TRSA9ICJHUEwtMi4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT03O2VuZGxpbmU9MTI7bWQ1PTcwMGM2OTBmNGNhNmIxNzU0ZjNmMWRiODY0NWU0MmQ5IgotCi1TUkNfVVJJID0gImh0dHA6Ly9ubWFwLm9yZy9kaXN0LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbm1hcC1yZWRlZmluZS10aGUtcHl0aG9uLWxpYnJhcnktZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25tYXAtcmVwbGFjZS1zaHRvb2wtbWtkaXItd2l0aC1jb3JldXRpbHMtbWtkaXItY29tbWFuZC5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZTQ1NDI2NjU1OWRkZjJjNGUyMTA5ODY2YzYyNTYwYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODc5NmVjYzRmYTZjMzhhYWQ2MTM5ZDk1MTVkYzgxMTMwMjNhODJlOWQ3ODdlNWE1ZmI1ZmExYjA1NTE2ZjIxIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUEFDS0FHRUNPTkZJRyA/PSAibmNhdCBucGluZyBuZGlmZiBwY2FwIgotUEFDS0FHRUNPTkZJRyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GRUFUVVJFUycsICd4MTEtYmFzZScsICd6ZW5tYXAnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3BjYXBdID0gIi0td2l0aC1wY2FwPWxpbnV4LCAtLXdpdGhvdXQtcGNhcCwgbGlicGNhcCwgbGlicGNhcCIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLWxpYnBjcmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aC1saWJwY3JlPWluY2x1ZGVkLCBsaWJwcmUiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzc2gyXSA9ICItLXdpdGgtb3BlbnNzaDI9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aG91dC1vcGVuc3NoMiwgbGlic3NoMiwgbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbGliel0gPSAiLS13aXRoLWxpYno9JHtTVEFHSU5HX0xJQkRJUn0vLi4sIC0td2l0aG91dC1saWJ6LCB6bGliLCB6bGliIgotCi0jZGlzYWJsZS9lbmFibGUgcGFja2FnZXMKLVBBQ0tBR0VDT05GSUdbbnBpbmddID0gIiwtLXdpdGhvdXQtbnBpbmcsIgotUEFDS0FHRUNPTkZJR1tuY2F0XSA9ICIsLS13aXRob3V0LW5jYXQsIgotUEFDS0FHRUNPTkZJR1tuZGlmZl0gPSAiLC0td2l0aG91dC1uZGlmZixweXRob24iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZV0gPSAiLC0td2l0aG91dC1ubWFwLXVwZGF0ZSwiCi0KLSNBZGQgZ3VpCi1QQUNLQUdFQ09ORklHW3plbm1hcF0gPSAiLS13aXRoLXplbm1hcCwgLS13aXRob3V0LXplbm1hcCwgZ3RrKyBweXRob24tY29yZSBweXRob24tY29kZWNzIHB5dGhvbi1pbyBweXRob24tbG9nZ2luZyBweXRob24tdW5pdHRlc3QgcHl0aG9uLXhtbCBweXRob24tbmV0Y2xpZW50IHB5dGhvbi1kb2N0ZXN0IHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1weWd0aywgcHl0aG9uLWNvcmUgcHl0aG9uLWNvZGVjcyBweXRob24taW8gcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLW5ldGNsaWVudCBweXRob24teG1sIHB5dGhvbi11bml0dGVzdCBweXRob24tZG9jdGVzdCBweXRob24tc3VicHJvY2VzcyAgcHl0aG9uLXB5Z3RrIGd0aysiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliZG5ldD1pbmNsdWRlZCAtLXdpdGgtbGlibGluZWFyPWluY2x1ZGVkIC0td2l0aG91dC1zdWJ2ZXJzaW9uIC0td2l0aC1saWJsdWE9aW5jbHVkZWQiCi0KLWV4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgIyBzdHJpcCBoYXJkIGNvZGVkIHB5dGhvbjIjCi0gICAgc2VkIC1pIC1lICdzPXB5dGhvbjJcLio9cHl0aG9uPWcnICAke1N9L2NvbmZpZ3VyZS5hYwotICAgIHNlZCAtaSAtZSAncz1weXRob24yXC4qPXB5dGhvbj1nJyAgJHtTfS9jb25maWd1cmUKLSAgICBhdXRvY29uZgotICAgIG9lX3J1bmNvbmYKLX0KLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3plbm1hcCcsICcke1BOfS16ZW5tYXAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi1GSUxFU18ke1BOfS16ZW5tYXAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlBBQ0tBR0VDT05GSUciLCAiemVubWFwIiwgIiR7YmluZGlyfS8qemVubWFwICR7YmluZGlyfS94bm1hcCAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy8qICAke2JpbmRpcn0vbm1hcGZlICR7ZGF0YWRpcn0vemVubWFwLyogJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcmFkaWFsbmV0LyogJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vemVubWFwKiIsICIiLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKLVJERVBFTkRTXyR7UE59LXplbm1hcCA9ICJubWFwIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3BhY2thZ2Vncm91cC9wYWNrYWdlZ3JvdXAtY29yZS1zZWN1cml0eS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9wYWNrYWdlZ3JvdXAvcGFja2FnZWdyb3VwLWNvcmUtc2VjdXJpdHkuYmIKaW5kZXggNjY4MmQyOS4uZTg0Nzg0NyAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3BhY2thZ2Vncm91cC9wYWNrYWdlZ3JvdXAtY29yZS1zZWN1cml0eS5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvcGFja2FnZWdyb3VwL3BhY2thZ2Vncm91cC1jb3JlLXNlY3VyaXR5LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAgICAgcGFja2FnZWdyb3VwLXNlY3VyaXR5LWlkcyAgXAogICAgIHBhY2thZ2Vncm91cC1zZWN1cml0eS1tYWMgIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJ0cG0iLCAicGFja2FnZWdyb3VwLXNlY3VyaXR5LXRwbSIsICIiLGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICJwYWNrYWdlZ3JvdXAtc2VjdXJpdHktcHRlc3QiLCAiIiwgZCl9IFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXNlY3VyaXR5ID0gIlwKQEAgLTIwLDYgKzIxLDcgQEAKICAgICBwYWNrYWdlZ3JvdXAtc2VjdXJpdHktaWRzICBcCiAgICAgcGFja2FnZWdyb3VwLXNlY3VyaXR5LW1hYyAgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJNQUNISU5FX0ZFQVRVUkVTIiwgInRwbSIsICJwYWNrYWdlZ3JvdXAtc2VjdXJpdHktdHBtIiwgIiIsZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgInBhY2thZ2Vncm91cC1zZWN1cml0eS1wdGVzdCIsICIiLCBkKX0gXAogICAgICIKIAogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtc2VjdXJpdHktdXRpbHMgPSAiU2VjdXJpdHkgdXRpbGl0aWVzIgpAQCAtMjcsNyArMjksMTEgQEAKICAgICBjaGVja3NlYyBcCiAgICAgbm1hcCBcCiAgICAgcGluZW50cnkgXAotICAgIHNjYXB5IFwKKyAgICBweXRob24tc2NhcHkgXAorICAgIGRpbmctbGlicyBcCisgICAgeG1sc2VjMSBcCisgICAga2V5dXRpbHMgXAorICAgIGxpYnNlY2NvbXAgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicGF4IiwgInBheC11dGlscyIsICIiLGQpfSBcCiAgICAgIgogCkBAIC01MiwxMyArNTgsMjggQEAKIFNVTU1BUllfcGFja2FnZWdyb3VwLXNlY3VyaXR5LWlkcyA9ICJTZWN1cml0eSBJbnRydXNpb24gRGV0ZWN0aW9uIHN5c3RlbXMiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtc2VjdXJpdHktaWRzID0gIiBcCiAgICAgdHJpcHdpcmUgXAotICAgIHNhbWhhaW4tY2xpZW50IFwKKyAgICBzYW1oYWluLXN0YW5kYWxvbmUgXAogICAgIHN1cmljYXRhIFwKICAgICAiCiAKIFNVTU1BUllfcGFja2FnZWdyb3VwLXNlY3VyaXR5LW1hYyA9ICJTZWN1cml0eSBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgc3lzdGVtcyIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1zZWN1cml0eS1tYWMgPSAiIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInRvbW95byIsICJjY3MtdG9vbHMiLCAiIixkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBwYXJtb3IiLCAiIiwgIiIsZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImFwcGFybW9yIiwgImFwcGFybW9yIiwgIiIsZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInNtYWNrIiwgInNtYWNrIiwgIiIsZCl9IFwKICAgICAiCisKK1NVTU1BUllfcGFja2FnZWdyb3VwLXNlY3VyaXR5LXB0ZXN0ID0gIlNlY3VyaXR5IHBhY2thZ2VzIHdpdGggcHRlc3RzIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlY3VyaXR5LXB0ZXN0ID0gIiBcCisgICAgc2FtaGFpbi1zdGFuZGFsb25lLXB0ZXN0IFwKKyAgICB4bWxzZWMxLXB0ZXN0IFwKKyAgICBrZXl1dGlscy1wdGVzdCBcCisgICAgbGlic2VjY29tcC1wdGVzdCBcCisgICAgcHl0aG9uLXNjYXB5LXB0ZXN0IFwKKyAgICBzdXJpY2F0YS1wdGVzdCBcCisgICAgdHJpcHdpcmUtcHRlc3QgXAorICAgIHB5dGhvbjMtZmFpbDJiYW4tcHRlc3QgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYXBwYXJtb3IiLCAiYXBwYXJtb3ItcHRlc3QiLCAiIixkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAic21hY2siLCAic21hY2stcHRlc3QiLCAiIixkKX0gXAorICAgIHB0ZXN0LXJ1bm5lciBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi1jbGllbnRfNC4yLjIuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2FtaGFpbi9zYW1oYWluLWNsaWVudF80LjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi1jbGllbnRfNC4yLjIuYmIKcmVuYW1lIHRvIG1ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zYW1oYWluL3NhbWhhaW4tY2xpZW50XzQuMy4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2FtaGFpbi9zYW1oYWluLXNlcnZlcl80LjIuMi5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zYW1oYWluL3NhbWhhaW4tc2VydmVyXzQuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2FtaGFpbi9zYW1oYWluLXNlcnZlcl80LjIuMi5iYgpyZW5hbWUgdG8gbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi1zZXJ2ZXJfNC4zLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zYW1oYWluL3NhbWhhaW4tc3RhbmRhbG9uZV80LjIuMi5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zYW1oYWluL3NhbWhhaW4tc3RhbmRhbG9uZV80LjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi1zdGFuZGFsb25lXzQuMi4yLmJiCnJlbmFtZSB0byBtZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2FtaGFpbi9zYW1oYWluLXN0YW5kYWxvbmVfNC4zLjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zYW1oYWluL3NhbWhhaW4uaW5jIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi5pbmMKaW5kZXggZGI5NjI2NC4uOTQ0YmYwZCAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi5pbmMKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NhbWhhaW4vc2FtaGFpbi5pbmMKQEAgLTE5LDggKzE5LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly9zYW1oYWluLnNlcnZpY2UgXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNDk5ZDVkMDZiZmQxZDc4NzA3M2E0NWJmMjhkZDYwZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjNlNjRhZmIzZjAwMDY0YzliMTM2ZDM0YTcyZDU4MGNkNDEyNDhjNTk0MWViYTA0NTJmMzY0YTEwOTAwM2M3IgorU1JDX1VSSVttZDVzdW1dID0gImEwMGU5OTM3NTY3NWZjNmU1MGNjYTNlMjA4ZjUyMDdlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1NTFkYzNiMDg1MTg4OWEyYjk3OTA5N2U5YzAyMzA5YjQwZDQ4YjQ2NTlmMDJlZmU3ZmU1MjVjZTgzNjFhMGQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5sYS1zYW1obmEuZGUvc2FtaGFpbi9hcmNoaXZlLmh0bWwiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJzYW1oYWluX3NpZ25lZC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKVwudGFyIgogCiBTID0gIiR7V09SS0RJUn0vc2FtaGFpbi0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NjYXB5L3NjYXB5L3J1bi1wdGVzdCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9maWxlcy9ydW4tcHRlc3QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9zY2FweS9ydW4tcHRlc3QKcmVuYW1lIHRvIG1ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9maWxlcy9ydW4tcHRlc3QKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9weXRob24tc2NhcHkuaW5jIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NjYXB5L3B5dGhvbi1zY2FweS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFiZTdkYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9weXRob24tc2NhcHkuaW5jCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBzY2FubmluZyBhbmQgbWFuaXB1bGF0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJTY2FweSBpcyBhIHBvd2VyZnVsIGludGVyYWN0aXZlIHBhY2tldCBtYW5pcHVsYXRpb24gcHJvZ3JhbS4gSXQgaXMgYWJsZSB0byBmb3JnZSBvciBkZWNvZGUgcGFja2V0cyBvZiBhIHdpZGUgbnVtYmVyIG9mIHByb3RvY29scywgc2VuZCB0aGVtIG9uIHRoZSB3aXJlLCBjYXB0dXJlIHRoZW0sIG1hdGNoIHJlcXVlc3RzIGFuZCByZXBsaWVzLCBhbmQgbXVjaCBtb3JlLiBJdCBjYW4gZWFzaWx5IGhhbmRsZSBtb3N0IGNsYXNzaWNhbCB0YXNrcyBsaWtlIHNjYW5uaW5nLCB0cmFjZXJvdXRpbmcsIHByb2JpbmcsIHVuaXQgdGVzdHMsIGF0dGFja3Mgb3IgbmV0d29yayBkaXNjb3ZlcnkgKGl0IGNhbiByZXBsYWNlIGhwaW5nLCA4NSUgb2Ygbm1hcCwgYXJwc3Bvb2YsIGFycC1zaywgYXJwaW5nLCB0Y3BkdW1wLCB0ZXRoZXJlYWwsIHAwZiwgZXRjLikuIEl0IGFsc28gcGVyZm9ybXMgdmVyeSB3ZWxsIGF0IGEgbG90IG9mIG90aGVyIHNwZWNpZmljIHRhc2tzIHRoYXQgbW9zdCBvdGhlciB0b29scyBjYW4ndCBoYW5kbGUsIGxpa2Ugc2VuZGluZyBpbnZhbGlkIGZyYW1lcywgaW5qZWN0aW5nIHlvdXIgb3duIDgwMi4xMSBmcmFtZXMsIGNvbWJpbmluZyB0ZWNobmljcyAoVkxBTiBob3BwaW5nK0FSUCBjYWNoZSBwb2lzb25pbmcsIFZPSVAgZGVjb2Rpbmcgb24gV0VQIGVuY3J5cHRlZCBjaGFubmVsLCAuLi4pLCBldGMuIgorU0VDVElPTiA9ICJzZWN1cml0eSIKK0xJQ0VOU0UgPSAiR1BMdjIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Jpbi9zY2FweTtiZWdpbmxpbmU9OTtlbmRsaW5lPTEzO21kNT0xZDUyNDk4NzJjYzU0Y2Q0Y2EzZDM4NzkyNjJkMGM2OSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3ZDNjNDI5NGY1YTcxOGUyMzQ3NzVkMzhkYmViN2VjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1MmY3MTRmNWMyZWFjNmZkMGE2MTQ2YjFkYmRkZmMyNGRkNWY0MTAzZjNlZDc2MjI3OTk1YTQ4OGNmYjJiNzMiCisKK2luaGVyaXQgcHlwaSBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rlc3QvcmVncmVzc2lvbi51dHMgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBzZWQgLWkgJ3MsQFBURVNUX1BBVEhALCR7UFRFU1RfUEFUSH0sJyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKK30KKworUkRFUEVORFNfJHtQTn0gPSAidGNwZHVtcCAke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LW5ldGNsaWVudCAgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciAke1BZVEhPTl9QTn0tcHlkb2MgJHtQWVRIT05fUE59LXBrZ3V0aWwgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgJHtQWVRIT05fUE59LW51bWJlcnMgJHtQWVRIT05fUE59LXB5Y3J5cHRvIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NjYXB5L3B5dGhvbi1zY2FweV8yLjQuMC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9weXRob24tc2NhcHlfMi40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkYjFmZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9weXRob24tc2NhcHlfMi40LjAuYmIKQEAgLTAsMCArMSw2IEBACitpbmhlcml0IHNldHVwdG9vbHMKK3JlcXVpcmUgcHl0aG9uLXNjYXB5LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXN1YnByb2Nlc3MiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2NhcHkvcHl0aG9uMy1zY2FweV8yLjQuMC5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9weXRob24zLXNjYXB5XzIuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzY2E3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc2NhcHkvcHl0aG9uMy1zY2FweV8yLjQuMC5iYgpAQCAtMCwwICsxLDQgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXNjYXB5LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NjYXB5L3NjYXB5XzIuMy4zLmJiIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3NjYXB5L3NjYXB5XzIuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzg2ODViLi4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zY2FweS9zY2FweV8yLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBzY2FubmluZyBhbmQgbWFuaXB1bGF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJTY2FweSBpcyBhIHBvd2VyZnVsIGludGVyYWN0aXZlIHBhY2tldCBtYW5pcHVsYXRpb24gcHJvZ3JhbS4gSXQgaXMgYWJsZSB0byBmb3JnZSBvciBkZWNvZGUgcGFja2V0cyBvZiBhIHdpZGUgbnVtYmVyIG9mIHByb3RvY29scywgc2VuZCB0aGVtIG9uIHRoZSB3aXJlLCBjYXB0dXJlIHRoZW0sIG1hdGNoIHJlcXVlc3RzIGFuZCByZXBsaWVzLCBhbmQgbXVjaCBtb3JlLiBJdCBjYW4gZWFzaWx5IGhhbmRsZSBtb3N0IGNsYXNzaWNhbCB0YXNrcyBsaWtlIHNjYW5uaW5nLCB0cmFjZXJvdXRpbmcsIHByb2JpbmcsIHVuaXQgdGVzdHMsIGF0dGFja3Mgb3IgbmV0d29yayBkaXNjb3ZlcnkgKGl0IGNhbiByZXBsYWNlIGhwaW5nLCA4NSUgb2Ygbm1hcCwgYXJwc3Bvb2YsIGFycC1zaywgYXJwaW5nLCB0Y3BkdW1wLCB0ZXRoZXJlYWwsIHAwZiwgZXRjLikuIEl0IGFsc28gcGVyZm9ybXMgdmVyeSB3ZWxsIGF0IGEgbG90IG9mIG90aGVyIHNwZWNpZmljIHRhc2tzIHRoYXQgbW9zdCBvdGhlciB0b29scyBjYW4ndCBoYW5kbGUsIGxpa2Ugc2VuZGluZyBpbnZhbGlkIGZyYW1lcywgaW5qZWN0aW5nIHlvdXIgb3duIDgwMi4xMSBmcmFtZXMsIGNvbWJpbmluZyB0ZWNobmljcyAoVkxBTiBob3BwaW5nK0FSUCBjYWNoZSBwb2lzb25pbmcsIFZPSVAgZGVjb2Rpbmcgb24gV0VQIGVuY3J5cHRlZCBjaGFubmVsLCAuLi4pLCBldGMuIgotU0VDVElPTiA9ICJzZWN1cml0eSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Jpbi9zY2FweTtiZWdpbmxpbmU9OTtlbmRsaW5lPTEzO21kNT0xZDUyNDk4NzJjYzU0Y2Q0Y2EzZDM4NzkyNjJkMGM2OSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2VjZGV2LyR7QlBOfS9hcmNoaXZlL3Yke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMzNmQ2ODMyMTEwZWZjZjc5YWQzMGM5ODU2ZWY1ODQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY3NjQyY2Y3YjgwNmUwMmRhZWRkZDU4ODU3NzU4OGNhZWJkZGMzNDI2ZGI3OTA0ZTc5OTlhMGIwMzM0YTYzYjUiCi0KLWluaGVyaXQgc2V0dXB0b29scyBwdGVzdAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3Rlc3QvcmVncmVzc2lvbi51dHMgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBzZWQgLWkgJ3MsQFBURVNUX1BBVEhALCR7UFRFU1RfUEFUSH0sJyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAidGNwZHVtcCBweXRob24tc3VicHJvY2VzcyBweXRob24tY29tcHJlc3Npb24gcHl0aG9uLW5ldGNsaWVudCAgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldHNlcnZlciBweXRob24tcHlkb2MgcHl0aG9uLXBrZ3V0aWwgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi10aHJlYWRpbmcgcHl0aG9uLW51bWJlcnMgcHl0aG9uLXB5Y3J5cHRvIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3Nzc2Qvc3NzZF8xLjE2LjAuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3NzZC9zc3NkXzEuMTYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY1YjYxOC4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3NzZC9zc3NkXzEuMTYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAic3lzdGVtIHNlY3VyaXR5IHNlcnZpY2VzIGRhZW1vbiIKLURFU0NSSVBUSU9OID0gIlNTU0QgaXMgYSBzeXN0ZW0gc2VjdXJpdHkgc2VydmljZXMgZGFlbW9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL3Nzc2QvIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotREVQRU5EUyA9ICJvcGVubGRhcCBjeXJ1cy1zYXNsIGxpYnRkYiBkaW5nLWxpYnMgbGlicGFtIGMtYXJlcyBrcmI1IGF1dG9jb25mLWFyY2hpdmUiCi1ERVBFTkRTICs9ICJsaWJsZGIgZGJ1cyBsaWJ0YWxsb2MgbGlicGNyZSBnbGliLTIuMCBwb3B0IGUyZnNwcm9ncyBsaWJ0ZXZlbnQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL1NTU0QvJHtCUE59LyR7QlB9LnRhci5nelwKLSAgICAgICAgICAgIGZpbGU6Ly9zc3NkLmNvbmYgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjcyMWFjZTJlYmZhNjc0NGNmZWE1NWUzZWNkMmQ4MmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzU4MWE2ZTUzNjVjZWY4N2ZjYTQxOWMwYzk1NjNjZjE1ZWFkYmI2ODI4NjNkNjQ4ZDg1ZmZjZGVkN2EzOTQwZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgcHl0aG9uLWRpciBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInBhbSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9sZGFwX2Nvbm5jYl9sY19hcmc9bm8gXAotICAgIGFjX2N2X3BhdGhfTlNVUERBVEU9JHtiaW5kaXJ9IFwKLSAgICBhY19jdl9wYXRoX1BZVEhPTjI9JHtQWVRIT05fRElSfSBhY19jdl9wcm9nX0hBVkVfUFlUSE9OMz0ke1BZVEhPTl9ESVJ9IFwKLSAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0ibnNzIG5zY2QiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAnc2VsaW51eCcsICcnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbc3NoXSA9ICItLXdpdGgtc3NoLCAtLXdpdGgtc3NoPW5vLCAiCi1QQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLXdpdGgtc2FtYmEsIC0td2l0aC1zYW1iYT1ubywgc2FtYmEiCi1QQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0td2l0aC1zZWxpbnV4LCAtLXdpdGgtc2VsaW51eD1ubyAtLXdpdGgtc2VtYW5hZ2U9bm8sIGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLXdpdGgtbWFucGFnZXMsIC0td2l0aC1tYW5wYWdlcz1ubyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLS13aXRoLXB5dGhvbjItYmluZGluZ3MsIC0td2l0aG91dC1weXRob24yLWJpbmRpbmdzIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMy1iaW5kaW5ncywgLS13aXRob3V0LXB5dGhvbjMtYmluZGluZ3MiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLWNyeXB0bz1uc3MsICxuc3MsIgotUEFDS0FHRUNPTkZJR1tjeXJwdG9dID0gIi0td2l0aC1jcnlwdG89bGliY3J5cHRvLCAsIGxpYmNyeXB0byIKLVBBQ0tBR0VDT05GSUdbbnNjZF0gPSAiLS13aXRoLW5zY2Q9JHtzYmluZGlyfSwgLS13aXRoLW5zY2Q9bm8gIgotUEFDS0FHRUNPTkZJR1tubF0gPSAiLS13aXRoLWxpYm5sLCAtLXdpdGgtbGlibmw9bm8sIGxpYm5sIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZHVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8sIC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0iCi1QQUNLQUdFQ09ORklHW2h0dHBdID0gIi0td2l0aC1zZWNyZXRzLCAtLXdpdGhvdXQtc2VjcmV0cywgYXBhY2hlMiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS13aXRoLXNlY3JldHMgLS13aXRoLWtjbSwgLS13aXRob3V0LXNlY3JldHMgLS13aXRob3V0LWtjbSwgY3VybCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2lmcy1pZG1hcC1wbHVnaW4gLS13aXRob3V0LW5mc3Y0LWlkbWFwZC1wbHVnaW4gLS13aXRob3V0LWlwYS1nZXRrZXl0YWIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7QVVUT1RPT0xTX0FVWERJUn0vYnVpbGQKLSAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvY29uZmlnLnJwYXRoICR7QVVUT1RPT0xTX0FVWERJUn0vYnVpbGQvCi0KLSAgICAjIGxpYnJlc292ZSBoYXMgaG9zdCBwYXRoLCByZW1vdmUgaXQKLSAgICBzZWQgLWkgLWUgInMjXCRzc3NfZXh0cmFfbGliZGlyIyMiICR7U30vc3JjL2V4dGVybmFsL2xpYnJlc29sdi5tNAotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgIERFU1RESVI9IiR7RH0iCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0vJHtiaW5kaXJ9IgotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotICAgIGluc3RhbGwgLW0gNjAwICR7V09SS0RJUn0vJHtCUE59LmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJzc3NkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0gJHtkYXRhZGlyfSAvcnVuICR7bGliZGlyfS8qLnNvKiAiCi1GSUxFU18ke1BOfS1kZXYgPSAiICR7aW5jbHVkZWRpcn0vKiAke2xpYmRpcn0vKmxhICR7bGliZGlyfS8qLypsYSIKLQotIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiaW5kIGRidXMiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3NzZC9zc3NkXzEuMTYuMy5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zc3NkL3Nzc2RfMS4xNi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmN2Y4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3NzZC9zc3NkXzEuMTYuMy5iYgpAQCAtMCwwICsxLDczIEBACitTVU1NQVJZID0gInN5c3RlbSBzZWN1cml0eSBzZXJ2aWNlcyBkYWVtb24iCitERVNDUklQVElPTiA9ICJTU1NEIGlzIGEgc3lzdGVtIHNlY3VyaXR5IHNlcnZpY2VzIGRhZW1vbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGFndXJlLmlvL1NTU0Qvc3NzZC8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitERVBFTkRTID0gIm9wZW5sZGFwIGN5cnVzLXNhc2wgbGlidGRiIGRpbmctbGlicyBsaWJwYW0gYy1hcmVzIGtyYjUgYXV0b2NvbmYtYXJjaGl2ZSIKK0RFUEVORFMgKz0gImxpYmxkYiBkYnVzIGxpYnRhbGxvYyBsaWJwY3JlIGdsaWItMi4wIHBvcHQgZTJmc3Byb2dzIGxpYnRldmVudCIKKworU1JDX1VSSSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvU1NTRC8ke0JQTn0vJHtCUH0udGFyLmd6XAorICAgICAgICAgICAgZmlsZTovL3Nzc2QuY29uZiAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZjQyODhjOWQxZjk5NTNlM2IzYjZlMGIxNjVhNWVjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZTVkMTdhMGM2NjNjMDk4MTljYmFiOTM2NDA4NWI5ZTU3ZmFlY2EwMjQwNmNjMzBlZmUxNGNjMGNmYzA0ZWM0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCBweXRob24tZGlyIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9tZW1iZXJfc3RydWN0X2xkYXBfY29ubmNiX2xjX2FyZz1ubyBcCisgICAgYWNfY3ZfcGF0aF9OU1VQREFURT0ke2JpbmRpcn0gXAorICAgIGFjX2N2X3BhdGhfUFlUSE9OMj0ke1BZVEhPTl9ESVJ9IGFjX2N2X3Byb2dfSEFWRV9QWVRIT04zPSR7UFlUSE9OX0RJUn0gXAorICAgICIKKworUEFDS0FHRUNPTkZJRyA/PSJuc3MgbnNjZCIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdzZWxpbnV4JywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tzc2hdID0gIi0td2l0aC1zc2gsIC0td2l0aC1zc2g9bm8sICIKK1BBQ0tBR0VDT05GSUdbc2FtYmFdID0gIi0td2l0aC1zYW1iYSwgLS13aXRoLXNhbWJhPW5vLCBzYW1iYSIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXgsIC0td2l0aC1zZWxpbnV4PW5vIC0td2l0aC1zZW1hbmFnZT1ubywgbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0td2l0aC1tYW5wYWdlcywgLS13aXRoLW1hbnBhZ2VzPW5vIgorUEFDS0FHRUNPTkZJR1tweXRob24yXSA9ICItLXdpdGgtcHl0aG9uMi1iaW5kaW5ncywgLS13aXRob3V0LXB5dGhvbjItYmluZGluZ3MiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLWJpbmRpbmdzLCAtLXdpdGhvdXQtcHl0aG9uMy1iaW5kaW5ncyIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywgLG5zcywiCitQQUNLQUdFQ09ORklHW2N5cnB0b10gPSAiLS13aXRoLWNyeXB0bz1saWJjcnlwdG8sICwgbGliY3J5cHRvIgorUEFDS0FHRUNPTkZJR1tuc2NkXSA9ICItLXdpdGgtbnNjZD0ke3NiaW5kaXJ9LCAtLXdpdGgtbnNjZD1ubyAiCitQQUNLQUdFQ09ORklHW25sXSA9ICItLXdpdGgtbGlibmwsIC0td2l0aC1saWJubD1ubywgbGlibmwiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywgLS13aXRoLXN5c3RlbWR1bml0ZGlyPSIKK1BBQ0tBR0VDT05GSUdbaHR0cF0gPSAiLS13aXRoLXNlY3JldHMsIC0td2l0aG91dC1zZWNyZXRzLCBhcGFjaGUyIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtc2VjcmV0cyAtLXdpdGgta2NtLCAtLXdpdGhvdXQtc2VjcmV0cyAtLXdpdGhvdXQta2NtLCBjdXJsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jaWZzLWlkbWFwLXBsdWdpbiAtLXdpdGhvdXQtbmZzdjQtaWRtYXBkLXBsdWdpbiAtLXdpdGhvdXQtaXBhLWdldGtleXRhYiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgbWtkaXIgLXAgJHtBVVRPVE9PTFNfQVVYRElSfS9idWlsZAorICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9jb25maWcucnBhdGggJHtBVVRPVE9PTFNfQVVYRElSfS9idWlsZC8KKworICAgICMgbGlicmVzb3ZlIGhhcyBob3N0IHBhdGgsIHJlbW92ZSBpdAorICAgIHNlZCAtaSAtZSAicyNcJHNzc19leHRyYV9saWJkaXIjIyIgJHtTfS9zcmMvZXh0ZXJuYWwvbGlicmVzb2x2Lm00Cit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCAgREVTVERJUj0iJHtEfSIKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfS8ke2JpbmRpcn0iCisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CisgICAgaW5zdGFsbCAtbSA2MDAgJHtXT1JLRElSfS8ke0JQTn0uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Cit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyR7QlBOfS8ke0JQTn0uY29uZiIKKworSU5JVFNDUklQVF9OQU1FID0gInNzc2QiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSAke2RhdGFkaXJ9IC9ydW4gJHtsaWJkaXJ9Lyouc28qICIKK0ZJTEVTXyR7UE59LWRldiA9ICIgJHtpbmNsdWRlZGlyfS8qICR7bGliZGlyfS8qbGEgJHtsaWJkaXJ9LyovKmxhIgorCisjIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImJpbmQgZGJ1cyIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9maWxlcy9lbWVyZ2luZy5ydWxlcy50YXIuZ3ogYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvZW1lcmdpbmcucnVsZXMudGFyLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZDM3NTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvZW1lcmdpbmcucnVsZXMudGFyLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9maWxlcy9ydW4tcHRlc3QgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NmJhOWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3N1cmljYXRhIC11CmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvc3VyaWNhdGEuc2VydmljZSBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9maWxlcy9zdXJpY2F0YS5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OWE3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvZmlsZXMvc3VyaWNhdGEuc2VydmljZQpAQCAtMCwwICsxLDIwIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVN1cmljYXRhIElEUy9JRFAgZGFlbW9uCitBZnRlcj1uZXR3b3JrLnRhcmdldAorUmVxdWlyZXM9bmV0d29yay50YXJnZXQKK0RvY3VtZW50YXRpb249bWFuOnN1cmljYXRhKDgpIG1hbjpzdXJpY2F0YXNjKDgpCitEb2N1bWVudGF0aW9uPWh0dHBzOi8vcmVkbWluZS5vcGVuaW5mb3NlY2ZvdW5kYXRpb24ub3JnL3Byb2plY3RzL3N1cmljYXRhL3dpa2kKKworW1NlcnZpY2VdCitUeXBlPXNpbXBsZQorQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9ORVRfQURNSU4gQ0FQX05FVF9SQVcKK1Jlc3RyaWN0QWRkcmVzc0ZhbWlsaWVzPQorRXhlY1N0YXJ0PS91c3IvYmluL3N1cmljYXRhIC1jIC9ldGMvc3VyaWNhdGEvc3VyaWNhdGEueWFtbCBldGgwCitFeGVjUmVsb2FkPS9iaW4va2lsbCAtSFVQICRNQUlOUElECitQcml2YXRlVG1wPXllcworUHJvdGVjdEhvbWU9eWVzCitQcm90ZWN0U3lzdGVtPXllcworCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CisKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9maWxlcy9zdXJpY2F0YS55YW1sIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL2ZpbGVzL3N1cmljYXRhLnlhbWwKaW5kZXggOTA0MTdiMC4uOGQwNmEyNyAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL2ZpbGVzL3N1cmljYXRhLnlhbWwKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL2ZpbGVzL3N1cmljYXRhLnlhbWwKQEAgLTc4Nyw3ICs3ODcsNyBAQAogICAgICAgZW5hYmxlZDogbm8KICAgICAgIGZpbGVuYW1lOiAvdmFyL2xvZy9zdXJpY2F0YS5sb2cKICAgLSBzeXNsb2c6Ci0gICAgICBlbmFibGVkOiBubworICAgICAgZW5hYmxlZDogeWVzCiAgICAgICBmYWNpbGl0eTogbG9jYWw1CiAgICAgICBmb3JtYXQ6ICJbJWldIDwlZD4gLS0gIgogCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvbGliaHRwXzAuNS4yNS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9saWJodHBfMC41LjI3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvbGliaHRwXzAuNS4yNS5iYgpyZW5hbWUgdG8gbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL2xpYmh0cF8wLjUuMjcuYmIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9zdXJpY2F0YS5pbmMgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvc3VyaWNhdGEuaW5jCmluZGV4IGEyZDM2ZWIuLjFmNDIxMjEgMTAwNjQ0Ci0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9zdXJpY2F0YS5pbmMKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL3N1cmljYXRhLmluYwpAQCAtMiw4ICsyLDggQEAKIFNFQ1RJT04gPSAic2VjdXJpdHkgTW9uaXRvci9BZG1pbiIKIExJQ0VOU0UgPSAiR1BMdjIiCiAKLVZFUiA9ICI0LjAuMCIKK1ZFUiA9ICI0LjAuNSIKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuaW5mb3NlY2ZvdW5kYXRpb24ub3JnL2Rvd25sb2FkL3N1cmljYXRhLSR7VkVSfS50YXIuZ3oiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWZiOTFiNGNiYzY3MDViMzUzZTRiZGQwMmMzZGY0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjhiMTgzYTg0MDk4MjljYTkyYzcxODU0Y2MxYWJlZDQ1ZjA0Y2NmYjdmMTRjMDgyMTFmNGVkZjU3MWZhNTc3IgorU1JDX1VSSVttZDVzdW1dID0gImVhMGNiODIzZDZhODY1NjgxNTJmNzVhZGU2ZGU0NDJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc0ZGFjYjQzNTlkNTdmYmQzNDUyZTM4NGVlZWIxZGQ3N2I2YWUwMGYwMmU5OTk0YWQ1YTdiNDYxZDVmNGM2YzIiCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvc3VyaWNhdGFfNC4wLjAuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvc3VyaWNhdGEvc3VyaWNhdGFfNC4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxNjM0ODYuLjAwMDAwMDAKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL3N1cmljYXRhXzQuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgU3VyaWNhdGEgRW5naW5lIGlzIGFuIE9wZW4gU291cmNlIE5leHQgR2VuZXJhdGlvbiBJbnRydXNpb24gRGV0ZWN0aW9uIGFuZCBQcmV2ZW50aW9uIEVuZ2luZSIKLQotcmVxdWlyZSBzdXJpY2F0YS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9MTtlbmRsaW5lPTI7bWQ1PWM3MGQ4ZDMzMTA5NDFkY2RmY2QxZTAyODAwYTFmNTQ4IgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3N1cmljYXRhIFwKLSAgICAgICAgICAgZmlsZTovL3N1cmljYXRhLnlhbWwgXAotICAgICAgICAgICAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9uLWRpciAKLQotQ0ZMQUdTICs9ICItRF9ERUZBVUxUX1NPVVJDRSIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGVhZGVyX2h0cF9odHBfaD15ZXMgYWNfY3ZfbGliX2h0cF9odHBfY29ubl9jcmVhdGU9eWVzICIKLQotRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLWRlYnVnIFwKLSAgICAtLWVuYWJsZS1ub24tYnVuZGxlZC1odHAgXAotICAgIC0tZGlzYWJsZS1nY2NtYXJjaC1uYXRpdmUgXAotICAgICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImh0cCBqYW5zc29uIGZpbGUgcGNyZSB5YW1sIHBjYXAgY2FwLW5nIG5ldCBuZm5ldGxpbmsgbnNzIG5zcHIiCi1QQUNLQUdFQ09ORklHW2h0cF0gPSAiLS13aXRoLWxpYmh0cC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGliaHRwLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLGxpYmh0cCwiCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1saWJwY3JlLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJwY3JlLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLGxpYnBjcmUgLCIgCi1QQUNLQUdFQ09ORklHW3lhbWxdID0gIi0td2l0aC1saWJ5YW1sLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJ5YW1sLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLGxpYnlhbWwgLCIKLVBBQ0tBR0VDT05GSUdbcGNhcF0gPSAiLS13aXRoLWxpYnBjYXAtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYnBjYXAtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGlicGNhcCAsIiAKLVBBQ0tBR0VDT05GSUdbY2FwLW5nXSA9ICItLXdpdGgtbGliY2FwX25nLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJjYXBfbmctbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGliY2FwLW5nICwgIgotUEFDS0FHRUNPTkZJR1tuZXRdID0gIi0td2l0aC1saWJuZXQtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYm5ldC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sICwgbGlibmV0LCIgCi1QQUNLQUdFQ09ORklHW25mbmV0bGlua10gPSAiLS13aXRoLWxpYm5mbmV0bGluay1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGlibmZuZXRsaW5rLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLGxpYm5mbmV0bGluayAsIgotCi1QQUNLQUdFQ09ORklHW2phbnNzb25dID0gIi0td2l0aC1saWJqYW5zc29uLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJqYW5zc29uLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwsamFuc3NvbiwgamFuc3NvbiIKLVBBQ0tBR0VDT05GSUdbZmlsZV0gPSAiLCxmaWxlLCBmaWxlIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1saWJuc3MtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYm5zcy1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIG5zcywgbnNzLCIgCi1QQUNLQUdFQ09ORklHW25zcHJdID0gIi0td2l0aC1saWJuc3ByLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJuc3ByLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgbnNwciwgbnNwciwiIAotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiwgLS1kaXNhYmxlLXB5dGhvbiwgcHl0aG9uLCBweXRob24iIAotCi1leHBvcnQgbG9nZGlyID0gIiR7bG9jYWxzdGF0ZWRpcn0vbG9nIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zdXJpY2F0YQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3VyaWNhdGEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBpbnN0YWxsIC1tIDY0NCBjbGFzc2lmaWNhdGlvbi5jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3VyaWNhdGEKLSAgICBpbnN0YWxsIC1tIDY0NCByZWZlcmVuY2UuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N1cmljYXRhCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zdXJpY2F0YS55YW1sICR7RH0ke3N5c2NvbmZkaXJ9L3N1cmljYXRhCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3N1cmljYXRhICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy92b2xhdGlsZXMuMDNfc3VyaWNhdGEKLX0KLQotcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpIHsKLWlmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KLSAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLWZpCi0gICAgJHtiaW5kaXJ9L3N1cmljYXRhIC1jICR7c3lzY29uZmRpcn0vc3VyaWNhdGEueWFtbCAtaSBldGgwIAotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3N1cmljYXRhICR7c3lzY29uZmRpcn0vZGVmYXVsdCAke3N5c2NvbmZkaXJ9L3N1cmljYXRhICR7bG9nZGlyfS9zdXJpY2F0YSIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2JpbmRpcn0vc3VyaWNhdGFzYyAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9zdXJpY2F0YV80LjAuNS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS9zdXJpY2F0YS9zdXJpY2F0YV80LjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzBhMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3N1cmljYXRhL3N1cmljYXRhXzQuMC41LmJiCkBAIC0wLDAgKzEsOTYgQEAKK1NVTU1BUlkgPSAiVGhlIFN1cmljYXRhIEVuZ2luZSBpcyBhbiBPcGVuIFNvdXJjZSBOZXh0IEdlbmVyYXRpb24gSW50cnVzaW9uIERldGVjdGlvbiBhbmQgUHJldmVudGlvbiBFbmdpbmUiCisKK3JlcXVpcmUgc3VyaWNhdGEuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0yO21kNT1jNzBkOGQzMzEwOTQxZGNkZmNkMWUwMjgwMGExZjU0OCIKKworU1JDX1VSSSArPSAiZmlsZTovL2VtZXJnaW5nLnJ1bGVzLnRhci5nejtuYW1lPXJ1bGVzIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjAzX3N1cmljYXRhIFwKKyAgICAgICAgICAgZmlsZTovL3N1cmljYXRhLnlhbWwgXAorICAgICAgICAgICBmaWxlOi8vc3VyaWNhdGEuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbcnVsZXMubWQ1c3VtXSA9ICIyMDVjNWU1YjU0ZTQ4OTIwN2VkODkyYzAzYWQ3NWIzMyIKK1NSQ19VUklbcnVsZXMuc2hhMjU2c3VtXSA9ICI0YWE4MTAxMWIyNDY4NzVhNTcxODFjNmEwNTY5Y2E4ODc4NDVlMzY2OTA0YmNhZjAwNDMyMjBmMzNiZDY5Nzk4IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB5dGhvbi1kaXIgc3lzdGVtZCBwdGVzdAorCitDRkxBR1MgKz0gIi1EX0RFRkFVTFRfU09VUkNFIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oZWFkZXJfaHRwX2h0cF9oPXllcyBhY19jdl9saWJfaHRwX2h0cF9jb25uX2NyZWF0ZT15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9IQVZFX1dHRVQ9bm8gYWNfY3ZfcGF0aF9IQVZFX0NVUkw9bm8gIgorCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtZGVidWcgXAorICAgIC0tZW5hYmxlLW5vbi1idW5kbGVkLWh0cCBcCisgICAgLS1kaXNhYmxlLWdjY21hcmNoLW5hdGl2ZSBcCisgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAiaHRwIGphbnNzb24gZmlsZSBwY3JlIHlhbWwgcGNhcCBjYXAtbmcgbmV0IG5mbmV0bGluayBuc3MgbnNwciIKK1BBQ0tBR0VDT05GSUdfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ3VuaXR0ZXN0cycsICcnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbaHRwXSA9ICItLXdpdGgtbGliaHRwLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJodHAtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGliaHRwLCIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLWxpYnBjcmUtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYnBjcmUtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGlicGNyZSAsIiAKK1BBQ0tBR0VDT05GSUdbeWFtbF0gPSAiLS13aXRoLWxpYnlhbWwtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYnlhbWwtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGlieWFtbCAsIgorUEFDS0FHRUNPTkZJR1twY2FwXSA9ICItLXdpdGgtbGlicGNhcC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGlicGNhcC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sICxsaWJwY2FwICwiIAorUEFDS0FHRUNPTkZJR1tjYXAtbmddID0gIi0td2l0aC1saWJjYXBfbmctaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWxpYmNhcF9uZy1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sICxsaWJjYXAtbmcgLCAiCitQQUNLQUdFQ09ORklHW25ldF0gPSAiLS13aXRoLWxpYm5ldC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGlibmV0LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgLCBsaWJuZXQsIiAKK1BBQ0tBR0VDT05GSUdbbmZuZXRsaW5rXSA9ICItLXdpdGgtbGlibmZuZXRsaW5rLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJuZm5ldGxpbmstbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCAsbGlibmZuZXRsaW5rICwiCitQQUNLQUdFQ09ORklHW25mcV0gPSAiLS1lbmFibGUtbmZxdWV1ZSwgLS1kaXNhYmxlLW5mcXVldWUsbGlibmV0ZmlsdGVyLXF1ZXVlLCIKKworUEFDS0FHRUNPTkZJR1tqYW5zc29uXSA9ICItLXdpdGgtbGliamFuc3Nvbi1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGliamFuc3Nvbi1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLGphbnNzb24sIGphbnNzb24iCitQQUNLQUdFQ09ORklHW2ZpbGVdID0gIiwsZmlsZSwgZmlsZSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtbGlibnNzLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0td2l0aC1saWJuc3MtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBuc3MsIG5zcywiIAorUEFDS0FHRUNPTkZJR1tuc3ByXSA9ICItLXdpdGgtbGlibnNwci1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXdpdGgtbGlibnNwci1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sIG5zcHIsIG5zcHIsIiAKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sIC0tZGlzYWJsZS1weXRob24sIHB5dGhvbiwgcHl0aG9uIiAKK1BBQ0tBR0VDT05GSUdbdW5pdHRlc3RzXSA9ICItLWVuYWJsZS11bml0dGVzdHMsIC0tZGlzYWJsZS11bml0dGVzdHMsIiAKKworZXhwb3J0IGxvZ2RpciA9ICIke2xvY2Fsc3RhdGVkaXJ9L2xvZyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zdXJpY2F0YQorCisgICAgb2VfcnVubWFrZSBpbnN0YWxsLWNvbmYgREVTVERJUj0ke0R9CisKKyAgICAjIG1pbWljIG1vdmUgb2YgZG93bmxvYWRlZCBydWxlcyB0byBlX3N5c2NvbmZydWxlc2RpcgorICAgIGNwIC1yZiAgJHtXT1JLRElSfS9ydWxlcyAke0R9JHtzeXNjb25mZGlyfS9zdXJpY2F0YQorCisgICAgb2VfcnVubWFrZSBpbnN0YWxsLXJ1bGVzIERFU1RESVI9JHtEfQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zdXJpY2F0YSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zdXJpY2F0YSAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX3N1cmljYXRhCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90aHJlc2hvbGQuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N1cmljYXRhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkICAtZSBzOi9ldGM6JHtzeXNjb25mZGlyfTpnIFwKKyAgICAgICAgIC1lIHM6L3Zhci9ydW46L3J1bjpnIFwKKyAgICAgICAgIC1lIHM6L3Zhcjoke2xvY2Fsc3RhdGVkaXJ9OmcgXAorICAgICAgICAgLWUgczovdXNyL2Jpbjoke2JpbmRpcn06ZyBcCisgICAgICAgICAtZSBzOi9iaW4va2lsbDoke2Jhc2VfYmluZGlyfS9raWxsOmcgXAorICAgICAgICAgLWUgczovdXNyL2xpYjoke2xpYmRpcn06ZyBcCisgICAgICAgICAke1dPUktESVJ9L3N1cmljYXRhLnNlcnZpY2UgPiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zdXJpY2F0YS5zZXJ2aWNlCisKKyAgICAjIFJlbW92ZSAvdmFyL3J1biBhcyBpdCBpcyBjcmVhdGVkIG9uIHN0YXJ0dXAKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCisKK30KKworcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpIHsKK2lmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXSA7IHRoZW4KKyAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKK2ZpCit9CisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCisKK1BBQ0tBR0VTID0rICIke1BOfS1zb2NrZXRjb250cm9sIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKK0ZJTEVTXyR7UE59LXNvY2tldGNvbnRyb2wgPSAiJHtiaW5kaXJ9L3N1cmljYXRhc2MgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1cmljYXRhL3N1cmljYXRhLnlhbWwiCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbiA9ICJweXRob24iCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvdHJpcHdpcmUvZmlsZXMvcnVuLXB0ZXN0IGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3RyaXB3aXJlL2ZpbGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWRmZGRjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3RyaXB3aXJlL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCisuL3R3dGVzdC5wbApkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3RyaXB3aXJlL3RyaXB3aXJlXzIuNC4zLjYuYmIgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvdHJpcHdpcmUvdHJpcHdpcmVfMi40LjMuNi5iYgppbmRleCA0NjU5NjBmLi41OWQxZjM1IDEwMDY0NAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvdHJpcHdpcmUvdHJpcHdpcmVfMi40LjMuNi5iYgorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkvdHJpcHdpcmUvdHJpcHdpcmVfMi40LjMuNi5iYgpAQCAtMTYsMTEgKzE2LDEyIEBACiAJZmlsZTovL3R3Y2ZnLnR4dCBcCiAJZmlsZTovL3R3aW5zdGFsbC5zaCBcCiAJZmlsZTovL3R3cG9sLXlvY3RvLnR4dCBcCisJZmlsZTovL3J1bi1wdGVzdCBcCiAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBwdGVzdAogCiBJTklUU0NSSVBUX05BTUUgPSAidHJpcHdpcmUiCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA0MCBTIC4iCkBAIC01OCw5ICs1OSwxNSBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RyaXB3aXJlLnR4dCAke0R9JHtkb2NkaXJ9LyR7QlBOfQogfQogCitkb19pbnN0YWxsX3B0ZXN0X2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1hICR7U30vc3JjL3Rlc3QtaGFybmVzcy8qICR7RH0ke1BURVNUX1BBVEh9Cit9CiAKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0gJHtkb2NkaXJ9LyR7UE59LyoiCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7c3lzY29uZmRpcn0vJHtQTn0vLmRlYnVnIgogRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi8ke1BOfS9saWIqLmEiCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtQVEVTVF9QQVRIfS90ZXN0cyAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgcGVybCBuYW5vIG1zbXRwIGNyb25pZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiBwZXJsIGxpYi1wZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3htbHNlYzEveG1sc2VjMS9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzEvY2hhbmdlLWZpbmRpbmctcGF0aC1vZi1uc3MucGF0Y2gKaW5kZXggZmNjNjNiMy4uMWNlYzQ3ZiAxMDA2NDQKLS0tIGEvbWV0YS1zZWN1cml0eS9yZWNpcGVzLXNlY3VyaXR5L3htbHNlYzEveG1sc2VjMS9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkveG1sc2VjMS94bWxzZWMxL2NoYW5nZS1maW5kaW5nLXBhdGgtb2YtbnNzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0NzM3OTc0N2UzNGY5NTJkMzFhZjAyOGM2NzI5NDBjYTc4NTlhZTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjMWM5ODBhOTVkODViY2FmODgwMjUyNGQ2MTQ4NzgzNTIyYjMwMGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogWXVsb25nIFBlaSA8WXVsb25nLnBlaUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyMSBKdWwgMjAxMCAyMjozMzo0MyArMDgwMAogU3ViamVjdDogW1BBVENIXSBjaGFuZ2UgZmluZGluZyBwYXRoIG9mIG5zcyBhbmQgbnNwcgpAQCAtNyw2NiArNyw2MSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBZdWxvbmcgUGVpIDxZdWxvbmcucGVpQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KLSBjb25maWd1cmUuYWMgfCAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAzMjc4MjAwLi42ZWRlYzdkIDEwMDY0NAoraW5kZXggOTUxYjNlYi4uMWZkZWIwZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNjQ0LDcgKzY0NCw3IEBAIGlmIHRlc3QgInokTlNTX0ZPVU5EIiA9ICJ6bm8iIDsgdGhlbgorQEAgLTg2NiwxMCArODY2LDEwIEBAIE1PWklMTEFfTUlOX1ZFUlNJT049IjEuNCIKKyBOU1NfQ1JZUFRPX0xJQj0iJFhNTFNFQ19QQUNLQUdFLW5zcyIKKyBOU1BSX1BBQ0tBR0U9bW96aWxsYS1uc3ByCisgTlNTX1BBQ0tBR0U9bW96aWxsYS1uc3MKKy1OU1BSX0lOQ0xVREVfTUFSS0VSPSJuc3ByL25zcHIuaCIKKytOU1BSX0lOQ0xVREVfTUFSS0VSPSJuc3ByLmgiCisgTlNQUl9MSUJfTUFSS0VSPSJsaWJuc3ByNCRzaHJleHQiCisgTlNQUl9MSUJTX0xJU1Q9Ii1sbnNwcjQgLWxwbGRzNCAtbHBsYzQiCistTlNTX0lOQ0xVREVfTUFSS0VSPSJuc3MvbnNzLmgiCisrTlNTX0lOQ0xVREVfTUFSS0VSPSJuc3MzL25zcy5oIgorIE5TU19MSUJfTUFSS0VSPSJsaWJuc3MzJHNocmV4dCIKKyBOU1NfTElCU19MSVNUPSItbG5zczMgLWxzbWltZTMiCiAgCi0gICAgIGlmIHRlc3QgInokd2l0aF9uc3ByIiAhPSAieiIgOyB0aGVuCi0gCU5TUFJfUFJFRklYPSIkd2l0aF9uc3ByIgotLQlOU1BSX0NGTEFHUz0iLUkkd2l0aF9uc3ByL2luY2x1ZGUgLUkkd2l0aF9uc3ByL2luY2x1ZGUvbnNwciIKLSsJTlNQUl9DRkxBR1M9Ii1JJHdpdGhfbnNwci91c3IvaW5jbHVkZSAtSSR3aXRoX25zcHIvdXNyL2luY2x1ZGUvbnNwcjQiCi0gCWlmIHRlc3QgInokd2l0aF9nbnVfbGQiID0gInp5ZXMiIDsgdGhlbgotIAkgICAgTlNQUl9MSUJTPSItV2wsLXJwYXRoLWxpbmsgLVdsLCR3aXRoX25zcHIvbGliIC1MJHdpdGhfbnNwci9saWIgJE5TUFJfTElCU19MSVNUIgotIAllbHNlCi1AQCAtNjUyLDcgKzY1Miw3IEBAIGlmIHRlc3QgInokTlNTX0ZPVU5EIiA9ICJ6bm8iIDsgdGhlbgotIAlmaQotIAlOU1BSX0lOQ0xVREVTX0ZPVU5EPSJ5ZXMiCi0gCU5TUFJfTElCU19GT1VORD0ieWVzIgotLQlOU1BSX1BSSU5JVF9IPSIkd2l0aF9uc3ByL2luY2x1ZGUvcHJpbml0LmgiCi0rCU5TUFJfUFJJTklUX0g9IiR3aXRoX25zcHIvdXNyL2luY2x1ZGUvbnNwcjQvcHJpbml0LmgiCitAQCAtODk4LDI0ICs4OTgsMjQgQEAgZmkKKyBkbmwgUHJpb3JpdHkgMTogVXNlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8gaW5zdGFsbGF0aW9uCisgaWYgdGVzdCAieiROU1BSX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNwciIgIT0gInoiIC1hICJ6JHdpdGhfbnNwciIgIT0gInp5ZXMiIDsgdGhlbgorICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG5zcHIgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcHIiIGZvbGRlcikKKy0gICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNwci9pbmNsdWRlLyROU1BSX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNwci9saWIvJE5TUFJfTElCX01BUktFUiIgOyB0aGVuCistICAgICAgICBOU1BSX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNwci9pbmNsdWRlIgorLSAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci9saWIiCisrICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcHIvdXNyL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIC1hIC1mICIkd2l0aF9uc3ByLyR7bGliZGlyfS8kTlNQUl9MSUJfTUFSS0VSIiA7IHRoZW4KKysgICAgICAgIE5TUFJfSU5DTFVERV9QQVRIPSIkd2l0aF9uc3ByL3Vzci9pbmNsdWRlIgorKyAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci8ke2xpYmRpcn0iCisgICAgICAgICBOU1BSX0ZPVU5EPSJ5ZXMiCisgICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQogICAgICBlbHNlCi0gCWZvciBkaXIgaW4gJGFjX25zc19pbmNfZGlyIDsgZG8KLSAgICAgCSAgICBpZiB0ZXN0IC1mICRkaXIvbnNwci9wcmluaXQuaCA7IHRoZW4KLUBAIC02OTAsNyArNjkwLDcgQEAgaWYgdGVzdCAieiROU1NfRk9VTkQiID0gInpubyIgOyB0aGVuCi0gCU9MRF9DUFBGTEFHUz0kQ1BQRkxBR1MKLSAJQ1BQRkxBR1M9IiROU1BSX0NGTEFHUyIKLSAJQUNfRUdSRVBfQ1BQKHllcyxbCi0tICAgIAkgICAgI2luY2x1ZGUgPHByaW5pdC5oPgotKwkgICAgI2luY2x1ZGUgPG5zcHI0L3ByaW5pdC5oPgotICAgICAgICAgICAgICNpZiBQUl9WTUFKT1IgPj0gNAotICAgICAgICAgICAgICAgIHllcwotICAgICAgICAgICAgICNlbmRpZgotQEAgLTcxNSw3ICs3MTUsNyBAQCBpZiB0ZXN0ICJ6JE5TU19GT1VORCIgPSAiem5vIiA7IHRoZW4KLSAgICAgTlNTX05TU19IPSIiCistICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcHIvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByL2xpYi8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKysgICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNwci91c3IvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByLyR7bGliZGlyfS8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKyAgICAgZmkKKyBmaQorIGlmIHRlc3QgInokTlNTX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNzIiAhPSAieiIgLWEgInokd2l0aF9uc3MiICE9ICJ6eWVzIiA7IHRoZW4KKyAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBuc3MgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcyIgZm9sZGVyKQorLSAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3MvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNzL2xpYi8kTlNTX0xJQl9NQVJLRVIiIDsgdGhlbgorLSAgICAgICAgTlNTX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNzL2luY2x1ZGUiCistICAgICAgICBOU1NfTElCX1BBVEg9IiR3aXRoX25zcy9saWIiCisrICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcy91c3IvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNzLyR7bGliZGlyfS8kTlNTX0xJQl9NQVJLRVIiIDsgdGhlbgorKyAgICAgICAgTlNTX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNzL3Vzci9pbmNsdWRlL25zczMiCisrICAgICAgICBOU1NfTElCX1BBVEg9IiR3aXRoX25zcy8ke2xpYmRpcn0iCisgICAgICAgICBOU1NfRk9VTkQ9InllcyIKKyAgICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgIGVsc2UKKy0gICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNzL2luY2x1ZGUvJE5TU19JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3MvbGliLyROU1NfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCisrICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcy91c3IvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiBhbmQvb3IgIiR3aXRoX25zcy8ke2xpYmRpcn0vJE5TU19MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKyAgICAgZmkKKyBmaQogIAotICAgICBpZiB0ZXN0ICJ6JHdpdGhfbnNzIiAhPSAieiIgOyB0aGVuCi0tCU5TU19DRkxBR1M9IiROU1NfQ0ZMQUdTIC1JJHdpdGhfbnNzL2luY2x1ZGUgLUkkd2l0aF9uc3MvaW5jbHVkZS9uc3MiCi0rCU5TU19DRkxBR1M9IiROU1NfQ0ZMQUdTIC1JJHdpdGhfbnNzL3Vzci9pbmNsdWRlIC1JJHdpdGhfbnNzL3Vzci9pbmNsdWRlL25zczMgLUkkd2l0aF9uc3ByL3Vzci9pbmNsdWRlL25zcHI0IgotIAlpZiB0ZXN0ICJ6JHdpdGhfZ251X2xkIiA9ICJ6eWVzIiA7IHRoZW4KLSAJICAgIE5TU19MSUJTPSIkTlNTX0xJQlMgLVdsLC1ycGF0aC1saW5rIC1XbCwkd2l0aF9uc3MvbGliIC1MJHdpdGhfbnNzL2xpYiAkTlNTX0xJQlNfTElTVCIKLSAgICAgICAgIGVsc2UKLUBAIC03MjMsNyArNzIzLDcgQEAgaWYgdGVzdCAieiROU1NfRk9VTkQiID0gInpubyIgOyB0aGVuCi0gICAgICAgICBmaQotIAlOU1NfSU5DTFVERVNfRk9VTkQ9InllcyIKLSAJTlNTX0xJQlNfRk9VTkQ9InllcyIKLS0JTlNTX05TU19IPSIkd2l0aF9uc3MvaW5jbHVkZS9uc3MuaCIKLSsJTlNTX05TU19IPSIkd2l0aF9uc3MvdXNyL2luY2x1ZGUvbnNzMy9uc3MuaCIKLSAgICAgZWxzZQotIAlmb3IgZGlyIGluICRhY19uc3NfaW5jX2RpciA7IGRvCi0gCSAgICBpZiB0ZXN0IC1mICRkaXIvbnNzL25zcy5oIDsgdGhlbgotQEAgLTc2MSw3ICs3NjEsNyBAQCBpZiB0ZXN0ICJ6JE5TU19GT1VORCIgPSAiem5vIiA7IHRoZW4KLSAgICAgICAgT0xEX0NQUEZMQUdTPSRDUFBGTEFHUwotICAgICAgICBDUFBGTEFHUz0iJE5TUFJfQ0ZMQUdTICROU1NfQ0ZMQUdTIgotICAgICAgICBBQ19FR1JFUF9DUFAoeWVzLFsKLS0gICAgICAgICAgI2luY2x1ZGUgPG5zcy5oPgotKwkgICNpbmNsdWRlIDxuc3MzL25zcy5oPgotICAgICAgICAgICAjaWYgTlNTX1ZNQUpPUiA+PSAzICYmIE5TU19WTUlOT1IgPj0gMgotICAgICAgICAgICAgICB5ZXMKLSAgICAgICAgICAgI2VuZGlmCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzEveG1sc2VjMS1maXgtYS10eXBvLWluLWV4YW1wbGVzLXZlcmlmeTMuYy5wYXRjaCBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzEveG1sc2VjMS1maXgtYS10eXBvLWluLWV4YW1wbGVzLXZlcmlmeTMuYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY5NjdiYi4uMDAwMDAwMAotLS0gYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkveG1sc2VjMS94bWxzZWMxL3htbHNlYzEtZml4LWEtdHlwby1pbi1leGFtcGxlcy12ZXJpZnkzLmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gcm9tIDFkOGFlNGIzMmJkNzZjMTllYzIzOGYzMGViOWIxZWU1ODJjYmU5OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyIE1hciAyMDE4IDAxOjEwOjU4IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHhtbHNlYzE6IGZpeCBhIHR5cG8gaW4gZXhhbXBsZXMvdmVyaWZ5My5jCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbHNoMTIzL3htbHNlYy9wdWxsLzE1M10KLQotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gZXhhbXBsZXMvdmVyaWZ5My5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvdmVyaWZ5My5jIGIvZXhhbXBsZXMvdmVyaWZ5My5jCi1pbmRleCAyZDI2YWU3Li42OGY1MmFiIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvdmVyaWZ5My5jCi0rKysgYi9leGFtcGxlcy92ZXJpZnkzLmMKLUBAIC0xLDQgKzEsNCBAQAotLTQvKiogCi0rLyoqCi0gICogWE1MIFNlY3VyaXR5IExpYnJhcnkgZXhhbXBsZTogVmVyaWZ5aW5nIGEgZmlsZSBzaWduZWQgd2l0aCBYNTA5IGNlcnRpZmljYXRlCi0gICoKLSAgKiBWZXJpZmllcyBhIGZpbGUgc2lnbmVkIHdpdGggWDUwOSBjZXJ0aWZpY2F0ZS4gCmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkveG1sc2VjMS94bWxzZWMxXzEuMi4yNS5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzFfMS4yLjI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDFjYTA4Li4wMDAwMDAwCi0tLSBhL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzFfMS4yLjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgU2VjdXJpdHkgTGlicmFyeSBpcyBhIEMgbGlicmFyeSBiYXNlZCBvbiBMaWJYTUwyIgotREVTQ1JJUFRJT04gPSAiXAotICAgIFhNTCBTZWN1cml0eSBMaWJyYXJ5IGlzIGEgQyBsaWJyYXJ5IGJhc2VkIG9uIFwKLSAgICBMaWJYTUwyIGFuZCBPcGVuU1NMLiBUaGUgbGlicmFyeSB3YXMgY3JlYXRlZCB3aXRoIGEgZ29hbCB0byBzdXBwb3J0IG1ham9yIFwKLSAgICBYTUwgc2VjdXJpdHkgc3RhbmRhcmRzICJYTUwgRGlnaXRhbCBTaWduYXR1cmUiIGFuZCAiWE1MIEVuY3J5cHRpb24iLiBcCi0gICAgIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMvIgotREVQRU5EUyA9ICJsaWJ0b29sIGxpYnhtbDIgbGlieHNsdCBvcGVuc3NsIHpsaWIgbGliZ2NyeXB0IGdudXRscyBuc3MgbnNwciBsaWJncGctZXJyb3IiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzUyNzkxZDYyMDkyZWE4MTA0ZjA4NTA0MmRlN2Y0ZDAiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYy9kb3dubG9hZC8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9maXgtbHRtYWluLnNoLnBhdGNoIFwKLSAgICBmaWxlOi8vY2hhbmdlLWZpbmRpbmctcGF0aC1vZi1uc3MucGF0Y2ggXAotICAgIGZpbGU6Ly9tYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgZmlsZTovL3htbHNlYzEtZXhhbXBsZXMtYWxsb3ctYnVpbGQtaW4tc2VwYXJhdGUtZGlyLnBhdGNoIFwKLSAgICBmaWxlOi8veG1sc2VjMS1maXgtYS10eXBvLWluLWV4YW1wbGVzLXZlcmlmeTMuYy5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGJiZWYxZWZjNjllNjFiYzQ2Mjk2NTAyMDVhMDViNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY3Y2E4M2VkZjI1Y2NiNWI0OGEzYzRhMDlhZDM0MDVhNjMzNjU1NzY1MDNiZjM0MjkwYTQyZGUxYjkyZmNkMiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0IHBrZ2NvbmZpZwotCi1DRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNwcjQgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgotQ1BQRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNwcjQgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0td2l0aC1uc3M9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLi4gLS13aXRoLW5zcHI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLi4gXAotICAgICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sc2VjMUNvbmYuc2giCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vLmRlYnVnLyoiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1kZXYiCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiZGV2LWRlcHMiCi0KLVBURVNUX0VYVFJBX0FSR1MgPSAidG9wX3NyY2Rpcj0ke1N9IHRvcF9idWlsZGRpcj0ke0J9IgotCi1kb19jb21waWxlX3B0ZXN0ICgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7U30vZXhhbXBsZXMgJHtQVEVTVF9FWFRSQV9BUkdTfSBhbGwKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgZm9yIGkgaW4gJHtiaW5kaXJ9L3htbHNlYzEtY29uZmlnICR7bGliZGlyfS94bWxzZWMxQ29uZi5zaCBcCi0gICAgICAgICR7bGliZGlyfS9wa2djb25maWcveG1sc2VjMS1vcGVuc3NsLnBjOyBkbwotICAgICAgICBzZWQgLWkgLWUgInNAJHtSRUNJUEVfU1lTUk9PVH1AQGciICR7RH0kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1N9L2V4YW1wbGVzIERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gJHtQVEVTVF9FWFRSQV9BUkdTfSBpbnN0YWxsLXB0ZXN0Ci19CmRpZmYgLS1naXQgYS9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkveG1sc2VjMS94bWxzZWMxXzEuMi4yNi5iYiBiL21ldGEtc2VjdXJpdHkvcmVjaXBlcy1zZWN1cml0eS94bWxzZWMxL3htbHNlYzFfMS4yLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYmJmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXNlY3VyaXR5L3JlY2lwZXMtc2VjdXJpdHkveG1sc2VjMS94bWxzZWMxXzEuMi4yNi5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIlhNTCBTZWN1cml0eSBMaWJyYXJ5IGlzIGEgQyBsaWJyYXJ5IGJhc2VkIG9uIExpYlhNTDIiCitERVNDUklQVElPTiA9ICJcCisgICAgWE1MIFNlY3VyaXR5IExpYnJhcnkgaXMgYSBDIGxpYnJhcnkgYmFzZWQgb24gXAorICAgIExpYlhNTDIgYW5kIE9wZW5TU0wuIFRoZSBsaWJyYXJ5IHdhcyBjcmVhdGVkIHdpdGggYSBnb2FsIHRvIHN1cHBvcnQgbWFqb3IgXAorICAgIFhNTCBzZWN1cml0eSBzdGFuZGFyZHMgIlhNTCBEaWdpdGFsIFNpZ25hdHVyZSIgYW5kICJYTUwgRW5jcnlwdGlvbiIuIFwKKyAgICAiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYy8iCitERVBFTkRTID0gImxpYnRvb2wgbGlieG1sMiBsaWJ4c2x0IG9wZW5zc2wgemxpYiBsaWJnY3J5cHQgZ251dGxzIG5zcyBuc3ByIGxpYmdwZy1lcnJvciIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNTI3OTFkNjIwOTJlYTgxMDRmMDg1MDQyZGU3ZjRkMCIKKworU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjL2Rvd25sb2FkLyR7QlB9LnRhci5neiBcCisgICAgZmlsZTovL2ZpeC1sdG1haW4uc2gucGF0Y2ggXAorICAgIGZpbGU6Ly9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaCBcCisgICAgZmlsZTovL21ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICBmaWxlOi8veG1sc2VjMS1leGFtcGxlcy1hbGxvdy1idWlsZC1pbi1zZXBhcmF0ZS1kaXIucGF0Y2ggXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjljNGFhZjlmZjYxNWE3MzkyMWI5ZTNiZjQ5ODhkODc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkODI3NmM5YzcyMGNhNDJhM2IwMDIzZGY4YjdhZTQxYTJkNmM1ZjlhYThkMjBlZDE2NzJkODRjYzg5ODJkNTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBwa2djb25maWcKKworQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L25zcHI0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKK0NQUEZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L25zcHI0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLXdpdGgtbnNzPSR7U1RBR0lOR19MSUJESVJ9Ly4uLy4uIC0td2l0aC1uc3ByPSR7U1RBR0lOR19MSUJESVJ9Ly4uLy4uIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbHNlYzFDb25mLnNoIgorRklMRVNfJHtQTn0tZGJnICs9ICIke1BURVNUX1BBVEh9Ly5kZWJ1Zy8qIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tZGV2IgorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImRldi1kZXBzIgorCitQVEVTVF9FWFRSQV9BUkdTID0gInRvcF9zcmNkaXI9JHtTfSB0b3BfYnVpbGRkaXI9JHtCfSIKKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisgICAgb2VfcnVubWFrZSAtQyAke1N9L2V4YW1wbGVzICR7UFRFU1RfRVhUUkFfQVJHU30gYWxsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGZvciBpIGluICR7YmluZGlyfS94bWxzZWMxLWNvbmZpZyAke2xpYmRpcn0veG1sc2VjMUNvbmYuc2ggXAorICAgICAgICAke2xpYmRpcn0vcGtnY29uZmlnL3htbHNlYzEtb3BlbnNzbC5wYzsgZG8KKyAgICAgICAgc2VkIC1pIC1lICJzQCR7UkVDSVBFX1NZU1JPT1R9QEBnIiAke0R9JGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIG9lX3J1bm1ha2UgLUMgJHtTfS9leGFtcGxlcyBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9ICR7UFRFU1RfRVhUUkFfQVJHU30gaW5zdGFsbC1wdGVzdAorfQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL1JFQURNRS5idWlsZGluZy5tZCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9SRUFETUUuYnVpbGRpbmcubWQKaW5kZXggZTBlM2YyNi4uNTRkNjFjMyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL1JFQURNRS5idWlsZGluZy5tZAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvUkVBRE1FLmJ1aWxkaW5nLm1kCkBAIC0xMSw5ICsxMSwxNCBAQAogCUJCTEFZRVJTID89ICIgXAogCQk8cGF0aCB0byBsYXllcj4vb2UtY29yZS9tZXRhIFwKIAkJPHBhdGggdG8gbGF5ZXI+L21ldGEteGlsaW54LWJzcCBcCisJCTxwYXRoIHRvIGxheWVyPi9tZXRhLXhpbGlueC1zdGFuZGFsb25lIFwKIAkJPHBhdGggdG8gbGF5ZXI+L21ldGEteGlsaW54LWNvbnRyaWIgXAogCQkiCiAKK21ldGEteGlsaW54LXN0YW5kYWxvbmUgbGF5ZXIgcHJvdmlkZXMgcmVjaXBlcyB3aGljaCBlbmFibGUgYnVpbGRpbmcgYmFyZW1ldGFsCit0b29sY2hhaW4gZm9yIFBNVSBmaXJtd2FyZS4gVGhpcyBsYXllciBpcyByZXF1aXJlZCBmb3IgWlUrIGRldmljZXMgd2hpY2gKK2RlcGVuZHMgb24gUE1VIGZpcm13YXJlCisKIG1ldGEteGlsaW54LWNvbnRyaWIgaXMgYSBjb250cmlidXRpb24gbGF5ZXIgYW5kIGlzIG9wdGlvbmFsLgogCiBUbyBidWlsZCBhIHNwZWNpZmljIHRhcmdldCBCU1AgY29uZmlndXJlIHRoZSBhc3NvY2lhdGVkIG1hY2hpbmUgaW4gYGxvY2FsLmNvbmZgOgpAQCAtMjcsNiArMzIsMzYgQEAKIE9uY2UgY29tcGxldGUgdGhlIGltYWdlcyBmb3IgdGhlIHRhcmdldCBtYWNoaW5lIHdpbGwgYmUgYXZhaWxhYmxlIGluIHRoZSBvdXRwdXQKIGRpcmVjdG9yeSBgdG1wL2RlcGxveS9pbWFnZXMvPG1hY2hpbmUgbmFtZT4vYC4KIAorVXNpbmcgbXVsdGljb25maWcgdG8gYnVpbGQgWlUrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbXVsdGljb25maWcgZGVwZW5kZW5jeSBoYXMgdG8gYmUgYWRkZWQgaW4gaW1hZ2UgZmlsZSBvciBsb2NhbC5jb25mLgorRm9yIGV4YW1wbGUgaW4gY29yZS1pbWFnZS1taW5pbWFsIHlvdSB3aWxsIG5lZWQgIAorZG9faW1hZ2VbbWNkZXBlbmRzXSA9ICJtdWx0aWNvbmZpZzp6Y3UxMDI6cG11OnBtdS1maXJtd2FyZTpkb19kZXBsb3kiCisKK0FkZCBjb25mL211bHRpY29uZmlnIGluIHRoZSBidWlsZCBkaXJlY3RvcnkgYW5kIGNyZWF0ZSBwbXUuY29uZiBhbmQgemN1MTAyLmNvbmYKKworQWRkIHRoZSBmb2xsb3dpbmcgaW4gcG11LmNvbmY6ICAKKwlNQUNISU5FPSJ6eW5xbXAtcG11IiAgCisJRElTVFJPPSJ4aWxpbngtc3RhbmRhbG9uZSIgIAorICAgIAlHQ0NWRVJTSU9OPSI3LiUiICAKKyAgICAJVE1QRElSPSIke1RPUERJUn0vcG11dG1wIiAgCisKK0FkZCB0aGUgZm9sbG93aW5nIGluIHpjdTEwMi5jb25mOiAgCisJTUFDSElORT0iemN1MTAyLXp5bnFtcCIgIAorICAgIAlESVNUUk89InBva3kiICAKKworSW4gbG9jYWwuY29uZiBtdWx0aWNvbmZpZyBpcyBlbmFibGVkIGJ5OiBCQk1VTFRJQ09ORklHID89ICJ6Y3UxMDIgcG11IgorCitiaXRiYWtlIG11bHRpY29uZmlnOnpjdTEwMjpjb3JlLWltYWdlLW1pbmltYWwgIAorCitNb3JlIGluZm9ybWF0aW9uIGFib3V0IG11bHRpY29uZmlnOgoraHR0cHM6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzL2N1cnJlbnQvbWVnYS1tYW51YWwvbWVnYS1tYW51YWwuaHRtbCNkZXYtYnVpbGRpbmctaW1hZ2VzLWZvci1tdWx0aXBsZS10YXJnZXRzLXVzaW5nLW11bHRpcGxlLWNvbmZpZ3VyYXRpb25zCisKK1dvcmthcm91bmQ6ICAKK1RoZXJlIGlzIGFkZGl0aW9uYWwgd29ya2Fyb3VuZCByZXF1aXJlZCBpbiB1LWJvb3QteGxueCByZWNpcGUuIEFkZCB0aGUgYmVsb3cgZGVwZW5kZW5jeSAgCitkb19jb21waWxlW21jZGVwZW5kc10gPSAibXVsdGljb25maWc6emN1MTAyOnBtdTpwbXUtZmlybXdhcmU6ZG9fZGVwbG95IgorCiBBZGRpdGlvbmFsIEluZm9ybWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL2ltYWdlLXdpYy11dGlscy5iYmNsYXNzIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NsYXNzZXMvaW1hZ2Utd2ljLXV0aWxzLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY2NmQ1NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL2ltYWdlLXdpYy11dGlscy5iYmNsYXNzCkBAIC0wLDAgKzEsNTEgQEAKKyMgSGVscGVyL3V0aWxpdHkgZnVuY3Rpb25zIHRvIHdvcmsgd2l0aCB0aGUgSU1BR0VfQk9PVF9GSUxFUyB2YXJpYWJsZSBhbmQgaXRzCisjIGV4cGVjdGVkIGJlaHZhaW9yIHdpdGggcmVnYXJkcyB0byB0aGUgY29udGVudHMgb2YgdGhlIERFUExPWV9ESVJfSU1BR0UuCisjCisjIFRoZSB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBkZXBsb3kgZGlyZWN0b3J5IGlzIHBvcHVsYXRlZCB3aXRoCisjIGFueSBkZXBlbmRlbnQgZmlsZXMvZXRjLiBTdWNoIHRoYXQgdGhlIHJlY2lwZSB1c2luZyB0aGVzZSBmdW5jdGlvbnMgZGVwZW5kcworIyBvbiB0aGUgcmVjaXBlIHRoYXQgcHJvdmlkZXMgdGhlIGZpbGVzIGJlaW5nIHVzZWQvcXVlcmllZC4KKworZGVmIGJvb3RfZmlsZXNfc3BsaXRfZXhwYW5kKGQpOgorICAgICMgSU1BR0VfQk9PVF9GSUxFUyBoYXMgZXh0cmEgcmVuYW1pbmcgaW5mbyBpbiB0aGUgZm9ybWF0ICc8c291cmNlPjs8dGFyZ2V0PicKKyAgICBmb3IgZiBpbiAoZC5nZXRWYXIoIklNQUdFX0JPT1RfRklMRVMiKSBvciAiIikuc3BsaXQoIiAiKToKKyAgICAgICAgcGFydHMgPSBmLnNwbGl0KCI7IiwgMSkKKyAgICAgICAgc291cmNlcyA9IFtwYXJ0c1swXV0KKyAgICAgICAgaWYgIioiIGluIHBhcnRzWzBdOgorICAgICAgICAgICAgIyBoYXMgZ2xvYiBwYXJ0CisgICAgICAgICAgICBpbXBvcnQgZ2xvYgorICAgICAgICAgICAgZGVwbG95cm9vdCA9IGQuZ2V0VmFyKCJERVBMT1lfRElSX0lNQUdFIikKKyAgICAgICAgICAgIHNvdXJjZXMgPSBbXQorICAgICAgICAgICAgZm9yIGkgaW4gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihkZXBsb3lyb290LCBwYXJ0c1swXSkpOgorICAgICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUoaSkpCisKKyAgICAgICAgIyBmb3IgYWxsIHNvdXJjZXMsIHlpZWxkIGFuIGVudHJ5CisgICAgICAgIGZvciBzIGluIHNvdXJjZXM6CisgICAgICAgICAgICBpZiBsZW4ocGFydHMpID09IDI6CisgICAgICAgICAgICAgICAgeWllbGQgcywgcGFydHNbMV0KKyAgICAgICAgICAgIHlpZWxkIHMsIHMKKworZGVmIGJvb3RfZmlsZXNfYml0c3RyZWFtKGQpOgorICAgIGV4cGVjdGVkZmlsZXMgPSBbKCJiaXRzdHJlYW0iLCBUcnVlKV0KKyAgICBleHBlY3RlZGV4dHMgPSBbKCIuYml0IiwgVHJ1ZSksICgiLmJpbiIsIEZhbHNlKV0KKyAgICAjIHNlYXJjaCBmb3IgYml0c3RyZWFtIHBhdGhzLCB1c2UgdGhlIHJlbmFtZWQgZmlsZS4gRmlyc3QgbWF0Y2hpbmcgaXMgdXNlZAorICAgIGZvciBzb3VyY2UsIHRhcmdldCBpbiBib290X2ZpbGVzX3NwbGl0X2V4cGFuZChkKToKKyAgICAgICAgIyBza2lwIGJvb3QuYmluIGFuZCB1LWJvb3QuYmluLCBpdCBpcyBub3QgYSBiaXRzdHJlYW0KKyAgICAgICAgc2tpcCA9IFsiYm9vdC5iaW4iLCAidS1ib290LmJpbiJdCisgICAgICAgIGlmIHNvdXJjZSBpbiBza2lwIG9yIHRhcmdldCBpbiBza2lwOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBmb3IgZSwgdCBpbiBleHBlY3RlZGZpbGVzOgorICAgICAgICAgICAgaWYgc291cmNlID09IGUgb3IgdGFyZ2V0ID09IGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCwgdAorICAgICAgICBmb3IgZSwgdCBpbiBleHBlY3RlZGV4dHM6CisgICAgICAgICAgICBpZiBzb3VyY2UuZW5kc3dpdGgoZSkgb3IgdGFyZ2V0LmVuZHN3aXRoKGUpOgorICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQsIHQKKyAgICByZXR1cm4gIiIsIEZhbHNlCisKK2RlZiBib290X2ZpbGVzX2R0Yl9maWxlcGF0aChkKToKKyAgICBkdGJzID0gKGQuZ2V0VmFyKCJJTUFHRV9CT09UX0ZJTEVTIikgb3IgIiIpLnNwbGl0KCIgIikKKyAgICBmb3Igc291cmNlLCB0YXJnZXQgaW4gYm9vdF9maWxlc19zcGxpdF9leHBhbmQoZCk6CisgICAgICAgIGlmIHRhcmdldC5lbmRzd2l0aCgiLmR0YiIpOgorICAgICAgICAgICAgcmV0dXJuIHRhcmdldAorICAgIHJldHVybiAiIgorCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY2xhc3Nlcy9rZXJuZWwtc2ltcGxlaW1hZ2UuYmJjbGFzcyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL2tlcm5lbC1zaW1wbGVpbWFnZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNzBmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY2xhc3Nlcy9rZXJuZWwtc2ltcGxlaW1hZ2UuYmJjbGFzcwpAQCAtMCwwICsxLDIyIEBACitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgIGtlcm5lbHR5cGVzID0gc2V0KChkLmdldFZhcigiS0VSTkVMX0lNQUdFVFlQRSIpIG9yICIiKS5zcGxpdCgpKQorICAgIGtlcm5lbHR5cGVzIHw9IHNldCgoZC5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEVTIikgb3IgIiIpLnNwbGl0KCkpCisgICAgaWYgYW55KHQuc3RhcnRzd2l0aCgic2ltcGxlSW1hZ2UuIikgZm9yIHQgaW4ga2VybmVsdHlwZXMpOgorICAgICAgICAjIEVuYWJsZSBidWlsZGluZyBvZiBzaW1wbGVJbWFnZQorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCdkb19wcmVwX3NpbXBsZWltYWdlJywgJ2RvX2NvbXBpbGUnLCAnZG9fY29uZmlndXJlJywgZCkKKyAgICB1YXJjaCA9IGQuZ2V0VmFyKCJVQk9PVF9BUkNIIikKKyAgICBpZiB1YXJjaCA9PSAibWljcm9ibGF6ZSI6CisgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcHJlcF9zaW1wbGVpbWFnZScsICdkZXBlbmRzJywgJyB2aXJ0dWFsL2R0Yjpkb19wb3B1bGF0ZV9zeXNyb290JykKK30KKworZG9fcHJlcF9zaW1wbGVpbWFnZVtkaXJzXSArPSAiJHtCfSIKK2RvX3ByZXBfc2ltcGxlaW1hZ2UgKCkgeworICAgIGluc3RhbGwgLWQgJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMKKyAgICBmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisgICAgICAgIGlmIFtbICIke3R5cGV9IiA9fiAic2ltcGxlSW1hZ2UiIF1dICYmIFsgJHtBUkNIfSA9ICJtaWNyb2JsYXplIiBdOyB0aGVuCisgICAgICAgICAgICBleHQ9IiR7dHlwZSMjKi59IgorICAgICAgICAgICAgY3AgJHtSRUNJUEVfU1lTUk9PVH0vYm9vdC9kZXZpY2V0cmVlLyR7ZXh0fS5kdGIgJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMvCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY2xhc3Nlcy94aWxpbngtdGVzdGltYWdlLmJiY2xhc3MgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY2xhc3Nlcy94aWxpbngtdGVzdGltYWdlLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkwODZlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL3hpbGlueC10ZXN0aW1hZ2UuYmJjbGFzcwpAQCAtMCwwICsxLDkgQEAKK2luaGVyaXQgdGVzdGltYWdlCisKK0hPU1RUT09MUyArPSAnaXAgcGluZyBwcyBzY3Agc3NoIHN0dHknCisKK3B5dGhvbiBkb190ZXN0aW1hZ2VfcHJlcGVuZCAoKSB7CisgICAgZnJvbSBvZXFhLmNvcmUudGFyZ2V0LnFlbXUgaW1wb3J0IHN1cHBvcnRlZF9mc3R5cGVzCisgICAgc3VwcG9ydGVkX2ZzdHlwZXMuYXBwZW5kKCd3aWMucWVtdS1zZCcpCit9CisKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL3p5bnFtcC1wbXUuYmJjbGFzcyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jbGFzc2VzL3p5bnFtcC1wbXUuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE0ZWI5Ni4uMDAwMDAwMAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY2xhc3Nlcy96eW5xbXAtcG11LmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotIwotIyBUaGlzIGNsYXNzIGhhbmRsZXMgY29uZmlndXJpbmcgYSByZWNpcGUgdG8gYnVpbGQgZm9yIHRoZSBaeW5xTVAgUE1VCi0jIGFyY2hpdGVjdHVyZS4gVGhlIHJlYXNvbiBmb3IgdGhpcyBjbGFzcyBpcyBkdWUgdG8gbGltaXRhdGlvbnMgb2YgbXVsdGlsaWIKLSMgd2l0aCByZWdhcmRzIHRvIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgKHdoaWNoIGRvIG5vdCB3b3JrIGNvcnJlY3RseSkuCi0jCi0jIFRoaXMgY2xhc3MgaXMgc3BlY2lmaWNhbGx5IGludGVuZGVkIHRvIGV4dGVuZCB0aGUgYmludXRpbHMtY3Jvc3MsIGdjYy1jcm9zcywKLSMgbmV3bGliLCBsaWJnbG9zcyBhbmQgcG11LWZpcm13YXJlIHJlY2lwZXMgc28gdGhhdCBiaW5hcmllcyBjYW4gYmUgZW1pdHRlZAotIyB3aGljaCB0YXJnZXQgdGhlIFBNVSBhcmNoaXRlY3R1cmUgYWxvbmdzaWRlIGJ1aWxkaW5nIGZvciB0aGUgQVBVIGFyY2hpdGVjdHVyZQotIyAoQVJNNjQpLiBCdXQgdGhlIGNsYXNzIGNhbiBiZSBhcHBsaWVkIGdsb2JhbGx5IHZpYSBCQkNMQVNTRVhURU5EIGluIGZvcgotIyBleGFtcGxlIGEgPG1hY2hpbmU+LmNvbmYuCi0jCi0jIFRoaXMgY2xhc3MgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIGEgbXVsdGlsaWIgdmFyaWFudCB3aXRoIGN1c3RvbSBUVU5FXyogc2V0dXAKLSMgdG8gYWxsb3cgZm9yIGEgc3dpdGNoZWQgVFVORV9BUkNILgotIwotCi1PUklHX1RBUkdFVF9BUkNIIDo9ICIke1RBUkdFVF9BUkNIfSIKLQotIyB6eW5xbXAtcG11IHRhcmdldCBhcmNoIChoYXJkY29kZWQgYmFzZWQgb24gcHJlLWdlbiBkYXRhIGZyb20gYXJjaC1taWNyb2JsYXplLmluYykKLURFRkFVTFRUVU5FID0gIm1pY3JvYmxhemUiCi1BQklFWFRFTlNJT04gPSAiIgotVFVORV9BUkNIID0gIm1pY3JvYmxhemVlbCIKLSNUVU5FX0ZFQVRVUkVTX3R1bmUtbWljcm9ibGF6ZSArPSAidjkuMiBiYXJyZWwtc2hpZnQgcGF0dGVybi1jb21wYXJlIgotVFVORV9DQ0FSR1MgPSAiLW1saXR0bGUtZW5kaWFuIC1teGwtYmFycmVsLXNoaWZ0IC1teGwtcGF0dGVybi1jb21wYXJlIC1tbm8teGwtcmVvcmRlciAtbWNwdT12OS4yIC1teGwtc29mdC1tdWwgLW14bC1zb2Z0LWRpdiIKLVRVTkVfTERBUkdTID0gIiIKLVRVTkVfQVNBUkdTID0gIiIKLVRVTkVfUEtHQVJDSCA9ICJtaWNyb2JsYXplZWwtdjkuMi1icy1jbXAiCi1UQVJHRVRfT1MgPSAiZWxmIgotVEFSR0VUX0ZQVSA9ICJmcHUtc29mdCIKLQotIyByZWJ1aWxkIHRoZSBNQUNISU5FIG92ZXJyaWRlcwotTUFDSElORU9WRVJSSURFUyA9ICIke01BQ0hJTkV9JHtAJzoke1NPQ19GQU1JTFl9JyBpZiBkLmdldFZhcignU09DX0ZBTUlMWScpIGVsc2UgJyd9Om1pY3JvYmxhemUiCi0KLSMgb3ZlcnJpZGUgdHVuZSBwcm92aWRlZCBhcmNocwotUEFDS0FHRV9FWFRSQV9BUkNIUyA9ICIke1RVTkVfUEtHQVJDSH0iCi0KLSMgYmFyZW1ldGFsIGVxdWl2YWxlbnQgY29uZmlnIChub3RlIHRoZSB0Y2xpYmMgaXMgbm90IGluY2x1ZGVkLCB0aGlzIGlzIHB1cmVseQotIyBmb3IgcmVjaXBlcy9ldGMgdGhhdCBjaGVjayBmb3IgdGhlIHZhbHVlKQotVENMSUJDID0gImJhcmVtZXRhbCIKLUxJQkNFWFRFTlNJT04gPSAiIgotTElCQ09WRVJSSURFID0gIjpsaWJjLWJhcmVtZXRhbCIKLVVTRV9OTFMgPSAibm8iCi1JTUFHRV9MSU5HVUFTID0gIiIKLUxJQkNfREVQRU5ERU5DSUVTID0gIiIKLQotIyBnY2MtY3Jvc3Mgc3BlY2lmaWMgYmFyZW1ldGFsIHNldHVwIChkdWUgdG8gdGhlIG92ZXJyaWRlIG9yZGVyIHRoaXMgaXMgaW1wb3J0YW50KQotRVhUUkFfT0VDT05GX3BuLSR7TUxQUkVGSVh9Z2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9X2FwcGVuZCA9ICIgLS13aXRob3V0LWhlYWRlcnMiCi0KLUVYVFJBX09FQ09ORl9HQ0NfRkxPQVQgPSAiIgotCi0jIFNldHVwIGEgbXVsdGlhcmNoIGxpa2UgcHJlZml4LgotcHJlZml4ID0gIi91c3IvJHtUQVJHRVRfU1lTfSIKLSMgTWFrZSBzdXJlIEdDQyBjYW4gc2VhcmNoIGluIHRoZSBwcmVmaXggZGlyIChmb3IgbGliZ2NjKQotVE9PTENIQUlOX09QVElPTlMgKz0gIi1CJHtSRUNJUEVfU1lTUk9PVH0ke2luY2x1ZGVkaXJ9LyAtQiR7UkVDSVBFX1NZU1JPT1R9JHtsaWJkaXJ9LyIKLVRPT0xDSEFJTl9PUFRJT05TICs9ICItSSA9JHtpbmNsdWRlZGlyfSAtTCA9JHtsaWJkaXJ9IgotCi1weXRob24gbXVsdGl0YXJnZXRfenlucW1wX3BtdV92aXJ0Y2xhc3NfaGFuZGxlciAoKSB7Ci0gICAgdmFyaWFudCA9ICJ6eW5xbXAtcG11IgotICAgIHBuID0gZC5nZXRWYXIoIlBOIikKLSAgICBpZiBub3QgKHBuLnN0YXJ0c3dpdGgodmFyaWFudCArICItIikgb3IgcG4uZW5kc3dpdGgoIi0iICsgdmFyaWFudCkpOgotICAgICAgICByZXR1cm4KLQotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGUuZGF0YSkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZS5kYXRhKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zc3NkaycsIGUuZGF0YSk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJDYW4ndCBleHRlbmQgbmF0aXZlL25hdGl2ZXNkay9jcm9zc3NkayByZWNpcGVzIikKLQotICAgIGluaXRpYWxwbiA9IGUuZGF0YS5nZXRWYXIoIlBOIikucmVwbGFjZSgiLSIgKyB2YXJpYW50LCAiIikucmVwbGFjZSh2YXJpYW50ICsgIi0iLCAiIikKLSAgICBlLmRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsIHZhcmlhbnQgKyAiLSIpCi0gICAgZS5kYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgZS5kYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtIiArIHZhcmlhbnQpCi0KLSAgICAjIGhpZGUgbXVsdGlsaWIgdmFyaWFudHMsIHRoaXMgY2xhc3MgaXMgbm90IG9uZSBidXQgdGhpcyB3b3JrcyBhcm91bmQgcmVjaXBlcyB0aGlua2luZyBpdCBpcyAoZHVlIHRvIE1MUFJFRklYKS4KLSAgICBlLmRhdGEuc2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIsICIiKQotCi0gICAgIyB3b3JrIGFyb3VuZCBmb3IgLWNyb3NzIHJlY2lwZXMgdGhhdCBlbWJlZCB0aGUgVEFSR0VUX0FSQ0ggdmFsdWUKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGUuZGF0YSk6Ci0gICAgICAgIGlmIGluaXRpYWxwbi5lbmRzd2l0aCgiLSIgKyBkLmdldFZhcigiT1JJR19UQVJHRVRfQVJDSCIpKToKLSAgICAgICAgICAgIGluaXRpYWxwbiA9IGluaXRpYWxwbi5yZXBsYWNlKCItIiArIGQuZ2V0VmFyKCJPUklHX1RBUkdFVF9BUkNIIiksICItIiArIGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpKQotCi0gICAgZS5kYXRhLnNldFZhcigiUE4iLCB2YXJpYW50ICsgIi0iICsgaW5pdGlhbHBuKQotfQotCi1hZGRoYW5kbGVyIG11bHRpdGFyZ2V0X3p5bnFtcF9wbXVfdmlydGNsYXNzX2hhbmRsZXIKLW11bHRpdGFyZ2V0X3p5bnFtcF9wbXVfdmlydGNsYXNzX2hhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSIKLQotcHl0aG9uICgpIHsKLSAgICB2YXJpYW50ID0gInp5bnFtcC1wbXUiCi0gICAgcG4gPSBkLmdldFZhcigiUE4iKQotICAgIGlmIG5vdCBwbi5zdGFydHN3aXRoKHZhcmlhbnQgKyAiLSIpOgotICAgICAgICByZXR1cm4KLQotICAgIGlmIHBuLmVuZHN3aXRoKCJnY2MtY3Jvc3MtIiArIGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpKToKLSAgICAgICAgIyB3b3JrIGFyb3VuZCwgREVQRU5EUyBfcmVtb3ZlIGJlaW5nIGltbWVkaWF0ZSBpbiBnY2MtY3Jvc3MKLSAgICAgICAgZC5zZXRWYXIoIkRFUEVORFNfcmVtb3ZlIiwgInZpcnR1YWwvJXNsaWJjLWZvci1nY2MiICUgZC5nZXRWYXIoIlRBUkdFVF9QUkVGSVgiKSkKLQotICAgIGlmIHBuLmVuZHN3aXRoKCJsaWJnY2MiKToKLSAgICAgICAgIyB3b3JrIGFyb3VuZCwgc3RyaXAgZGVwZW5kcyBvbiBsaWJjIHZpYSBkb19wYWNrYWdlKiB0YXNrcyAodGhpcyBjbGFzcyBjYW5ub3Qgc2V0IEFTU1VNRV9QUk9WSURFRCArPSBsaWJjKQotICAgICAgICBmb3IgaSBpbiBbImRvX3BhY2thZ2UiLCAiZG9fcGFja2FnZV93cml0ZV9pcGsiLCAiZG9fcGFja2FnZV93cml0ZV9kZWIiLCAiZG9fcGFja2FnZV93cml0ZV9ycG0iXToKLSAgICAgICAgICAgIHNhbml0aXplZCA9ICIgIi5qb2luKFtkZXAgZm9yIGRlcCBpbiBkLmdldFZhckZsYWcoaSwgImRlcGVuZHMiKS5zcGxpdCgpIGlmIG5vdCBkZXAuc3RhcnRzd2l0aCgidmlydHVhbC8lcy1saWJjIiAlIHZhcmlhbnQpXSkKLSAgICAgICAgICAgIGQuc2V0VmFyRmxhZyhpLCAiZGVwZW5kcyIsIHNhbml0aXplZCkKLQotICAgIGltcG9ydCBvZS5jbGFzc2V4dGVuZAotCi0gICAgY2xzZXh0ZW5kID0gb2UuY2xhc3NleHRlbmQuQ2xhc3NFeHRlbmRlcih2YXJpYW50LCBkKQotCi0gICAgY2xzZXh0ZW5kLm1hcF9kZXBlbmRzX3ZhcmlhYmxlKCJERVBFTkRTIikKLSAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJQUk9WSURFUyIpCi0KLSAgICBjbHNleHRlbmQucmVuYW1lX3BhY2thZ2VzKCkKLSAgICBjbHNleHRlbmQucmVuYW1lX3BhY2thZ2VfdmFyaWFibGVzKChkLmdldFZhcigiUEFDS0FHRVZBUlMiKSBvciAiIikuc3BsaXQoKSkKLQotICAgIGNsc2V4dGVuZC5tYXBfcGFja2FnZXZhcnMoKQotICAgIGNsc2V4dGVuZC5tYXBfcmVnZXhwX3ZhcmlhYmxlKCJQQUNLQUdFU19EWU5BTUlDIikKLSAgICBjbHNleHRlbmQubWFwX3ZhcmlhYmxlKCJQQUNLQUdFX0lOU1RBTEwiKQotfQotCi0jIG1pY3JvYmxhemUgZWxmIGluc2FuZSBkZWZpbml0aW9ucyBub3QgY3VycmVudGx5IGluIGluc2FuZS5iYmNsYXNzCi1QQUNLQUdFUUFfRVhUUkFfTUFDSERFRkZVTkNTICs9ICJwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3RfbWljcm9ibGF6ZWVsZiIKLWRlZiBwYWNrYWdlX3FhX2dldF9tYWNoaW5lX2RpY3RfbWljcm9ibGF6ZWVsZihtYWNoZGF0YSwgZCk6Ci0gICAgbWFjaGRhdGFbImVsZiJdID0gIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgcmV0dXJuIG1hY2hkYXRhCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9sYXllci5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbGF5ZXIuY29uZgppbmRleCA1NWY2NjgwLi5mYzUxMTY1IDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL2xheWVyLmNvbmYKQEAgLTExLDUgKzExLDUgQEAKIAogTEFZRVJERVBFTkRTX3hpbGlueCA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfeGlsaW54ID0gInN1bW8iCitMQVlFUlNFUklFU19DT01QQVRfeGlsaW54ID0gInN1bW8gdGh1ZCIKIApkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWJvYXJkLmluYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1ib2FyZC5pbmMKaW5kZXggYmE5YTM2Yi4uMTcwNDFlNCAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWJvYXJkLmluYworKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCkBAIC0yLDUgKzIsMyBAQAogCiBFWFRSQV9JTUFHRURFUEVORFMgKz0gInZpcnR1YWwvYm9vdGxvYWRlciIKIAotSU1BR0VfQk9PVF9GSUxFUyA/PSAiJHtLRVJORUxfSU1BR0VUWVBFfSAke1VCT09UX0JJTkFSWX0iCi0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYwppbmRleCA3N2ZiZWM4Li4xNTNhNDdmIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWRlZmF1bHQuaW5jCkBAIC0yNSw2ICsyNSwxNCBAQAogVUJPT1RfRUxGID89ICJ1LWJvb3QiCiBVQk9PVF9FTEZfYWFyY2g2NCA/PSAidS1ib290LmVsZiIKIAorI0hhcmR3YXJlIGFjY2VsYXJhdGlvbgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2xlczFfbWFsaTQwMCA9ICJsaWJtYWxpLXhsbngiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbGVzMl9tYWxpNDAwID0gImxpYm1hbGkteGxueCIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2VnbF9tYWxpNDAwID0gImxpYm1hbGkteGxueCIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsX21hbGk0MDAgPSAibWVzYS1nbCIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL21lc2FfbWFsaTQwMCA9ICJtZXNhLWdsIgorCisKIFhTRVJWRVIgPz0gIiBcCiAJeHNlcnZlci14b3JnIFwKIAl4Zjg2LWlucHV0LWV2ZGV2IFwKQEAgLTM0LDYgKzQyLDM1IEBACiAJJHtYU0VSVkVSX0VYVH0gXAogCSIKIAorSU1BR0VfQk9PVF9GSUxFUyA/PSAiJHtAZ2V0X2RlZmF1bHRfaW1hZ2VfYm9vdF9maWxlcyhkKX0iCisKK2RlZiBnZXRfZGVmYXVsdF9pbWFnZV9ib290X2ZpbGVzKGQpOgorICAgIGZpbGVzID0gW10KKworICAgICMga2VybmVsIGltYWdlcworICAgIGtlcm5lbHR5cGVzID0gc2V0KChkLmdldFZhcigiS0VSTkVMX0lNQUdFVFlQRSIpIG9yICIiKS5zcGxpdCgpKQorICAgIGtlcm5lbHR5cGVzIHw9IHNldCgoZC5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEVTIikgb3IgIiIpLnNwbGl0KCkpCisgICAgZm9yIGkgaW4ga2VybmVsdHlwZXM6CisgICAgICAgIGZpbGVzLmFwcGVuZChpKQorCisgICAgIyB1LWJvb3QgaW1hZ2UKKyAgICBpZiBkLmdldFZhcigiVUJPT1RfQklOQVJZIik6CisgICAgICAgIGZpbGVzLmFwcGVuZChkLmdldFZhcigiVUJPT1RfQklOQVJZIikpCisKKyAgICAjIGRldmljZSB0cmVlcyAoZGV2aWNlLXRyZWUgb25seSksIHRoZXNlIGFyZSBmaXJzdCBhcyB0aGV5IGFyZSBsaWtlbHkgZGVzaXJlZCBvdmVyIHRoZSBrZXJuZWwgb25lcworICAgIGlmICJkZXZpY2UtdHJlZSIgaW4gKGQuZ2V0VmFyKCJNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyIpIG9yICIiKToKKyAgICAgICAgZmlsZXMuYXBwZW5kKCJkZXZpY2V0cmVlLyouZHRiIikKKworCisgICAgIyBkZXZpY2UgdHJlZXMgKGtlcm5lbCBvbmx5KQorICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfREVWSUNFVFJFRSIpOgorICAgICAgICBkdGJzID0gZC5nZXRWYXIoIktFUk5FTF9ERVZJQ0VUUkVFIikuc3BsaXQoIiAiKQorICAgICAgICBkdGJzID0gW29zLnBhdGguYmFzZW5hbWUoZCkgZm9yIGQgaW4gZHRic10KKyAgICAgICAgZm9yIGR0YiBpbiBkdGJzOgorICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGR0YikKKworICAgIHJldHVybiAiICIuam9pbihmaWxlcykKKwogWFNFUlZFUl9FWFQgPz0gIiIKIFhTRVJWRVJfRVhUX3p5bnFtcCA/PSAieGY4Ni12aWRlby1hcm1zb2MiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1xZW11LmluYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1xZW11LmluYwppbmRleCBkZDI3NWYzLi41ZWI0YjVjIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtcWVtdS5pbmMKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LXFlbXUuaW5jCkBAIC04LDE1ICs4LDExIEBACiAgICAgaWYgZC5nZXRWYXIoIklNQUdFX0JPT1RfRklMRVMiLCBUcnVlKToKICAgICAgICAgZHRicyA9IGQuZ2V0VmFyKCJJTUFHRV9CT09UX0ZJTEVTIiwgVHJ1ZSkuc3BsaXQoIiAiKQogICAgICAgICAjIElNQUdFX0JPT1RfRklMRVMgaGFzIGV4dHJhIHJlbmFtaW5nIGluZm8gaW4gdGhlIGZvcm1hdCAnPHNvdXJjZT47PHRhcmdldD4nCisgICAgICAgICMgTm90ZTogV2lsZGNhcmQgc291cmNlcyB3b3JrIGhlcmUgb25seSBiZWNhdXNlIHJ1bnFlbXUgZXhwYW5kcyB0aGVtIGF0IHJ1biB0aW1lCiAgICAgICAgIGR0YnMgPSBbZi5zcGxpdCgiOyIpWzBdIGZvciBmIGluIGR0YnNdCiAgICAgICAgIGR0YnMgPSBbZiBmb3IgZiBpbiBkdGJzIGlmIGYuZW5kc3dpdGgoIi5kdGIiKV0KICAgICAgICAgaWYgbGVuKGR0YnMpICE9IDA6CiAgICAgICAgICAgICByZXR1cm4gZHRic1swXQotICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfREVWSUNFVFJFRSIsIFRydWUpOgotICAgICAgICBkdGJzID0gZC5nZXRWYXIoIktFUk5FTF9ERVZJQ0VUUkVFIiwgVHJ1ZSkuc3BsaXQoIiAiKQotICAgICAgICBkdGJzID0gW29zLnBhdGguYmFzZW5hbWUoZCkgZm9yIGQgaW4gZHRic10KLSAgICAgICAgaWYgbGVuKGR0YnMpICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4gZC5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEUiLCBUcnVlKSArICItIiArIGR0YnNbMF0KICAgICByZXR1cm4gIiIKIAogZGVmIHFlbXVfZGVmYXVsdF9zZXJpYWwoZCk6CmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS12ZXJzYWwuaW5jIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtdmVyc2FsLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2FjZjZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtdmVyc2FsLmluYwpAQCAtMCwwICsxLDE0IEBACitERUZBVUxUVFVORSA/PSAiYWFyY2g2NCIKK1NPQ19GQU1JTFkgPz0gInZlcnNhbCIKKworIyBBdmFpbGFibGUgU09DX1ZBUklBTlQncyBmb3IgdmVyc2FsOgorIyB2aXJ0CisKK1NPQ19WQVJJQU5UID89ICIiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjguaW5jCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3NvYy1mYW1pbHkuaW5jCisKKyMgTGludXggQ29uZmlndXJhdGlvbgorS0VSTkVMX0lNQUdFVFlQRSA/PSAiSW1hZ2UiCisKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS96eW5xbXAtcG11LWNvbmZpZy5pbmMgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvenlucW1wLXBtdS1jb25maWcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDllOTgwLi4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS96eW5xbXAtcG11LWNvbmZpZy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0KLSMgRW5hYmxlIHRoZSB1c2Ugb2YgenlucW1wLXBtdSBmb3Igc3BlY2lmaWMgcmVjaXBlcyBvbmx5Ci1kZWYgenlucW1wX3BtdV9lbmFibGVfZm9yX2JwbnMoZCk6Ci0gICAgYnBuID0gZC5nZXRWYXIoIkJQTiIpCi0gICAgY3Jvc3NicG5zID0gWyJiaW51dGlscyIsICJnY2MiXQotICAgIHRhcmdldGJwbnMgPSBbImxpYmdjYyIsICJuZXdsaWIiLCAibGliZ2xvc3MiXQotICAgIGlmIGJwbiBpbiB0YXJnZXRicG5zOgotICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGlmIGJwbiBpbiBjcm9zc2JwbnMgYW5kIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2Nyb3NzJywgZCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLUJCQ0xBU1NFWFRFTkRfYXBwZW5kID0gIiR7QCcgenlucW1wLXBtdScgaWYgenlucW1wX3BtdV9lbmFibGVfZm9yX2JwbnMoZCkgZWxzZSAnJ30iCi0KLSMgQWRkIHRoZSBwa2dhcmNoIHRvIHRoZSBleHRyYSBsaXN0LCB0aGlzIGlzIGRvbmUgdG8gYXZvaWQgd2FybmluZ3MgYWJvdXQKLSMgbWlzc2luZyBtYW5pZmVzdHMgZHVlIHRvIGltcGxpY2l0IGRlcGVuZGVuY3kgY2hhaW5zIG9uIHBvcHVsYXRlX3N5c3Jvb3Qgd2hlbgotIyBhIHJlY2lwZS90YXNrIGRlcGVuZHMgb24gYSBJTUFHRV9FWFRSQURFUEVORFMvZG9fZGVwbG95IHRhc2sgd2hpY2ggaXMKLSMgcHJvdmlkZWQgYnkgYSB6eW5xbXAtcG11LSogdGFyZ2V0LgotUEFDS0FHRV9FWFRSQV9BUkNIU19hcHBlbmQgPSAiIG1pY3JvYmxhemVlbC12OS4yLWJzLWNtcCIKLQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9rYzcwNS1taWNyb2JsYXplZWwuY29uZiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUva2M3MDUtbWljcm9ibGF6ZWVsLmNvbmYKaW5kZXggYjc3N2MyNC4uNzNmZjQwZiAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9rYzcwNS1taWNyb2JsYXplZWwuY29uZgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL2tjNzA1LW1pY3JvYmxhemVlbC5jb25mCkBAIC01LDcgKzUsNiBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWljcm9ibGF6ZS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCiAKIFRVTkVfRkVBVFVSRVNfdHVuZS1taWNyb2JsYXplICs9ICJ2MTAuMCBiYXJyZWwtc2hpZnQgcmVvcmRlciBwYXR0ZXJuLWNvbXBhcmUgbXVsdGlwbHktaGlnaCBkaXZpZGUtaGFyZCIKIApAQCAtMjAsNiArMTksNiBAQAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC14bG54IgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYm9vdGxvYWRlciA/PSAidS1ib290LXhsbngiCiAKLUVYVFJBX0lNQUdFREVQRU5EUyArPSAidmlydHVhbC9iaXRzdHJlYW0iCitFWFRSQV9JTUFHRURFUEVORFMgKz0gInZpcnR1YWwvYml0c3RyZWFtIHZpcnR1YWwvYm9vdGxvYWRlciIKIAogVUJPT1RfTUFDSElORSA/PSAibWljcm9ibGF6ZS1nZW5lcmljX2NvbmZpZyIKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvbWljcm96ZWQtenlucTcuY29uZiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvbWljcm96ZWQtenlucTcuY29uZgppbmRleCA5Y2M5N2VjLi44ODY5NDI0IDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL21pY3JvemVkLXp5bnE3LmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9taWNyb3plZC16eW5xNy5jb25mCkBAIC03LDI3ICs3LDI2IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtenlucS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtb3ZlcnJpZGVzLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYwotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1ib2FyZC5pbmMKIAogTUFDSElORV9GRUFUVVJFUyA9ICJleHQyIHZmYXQgdXNiaG9zdCIKIAogIyB1LWJvb3QgY29uZmlndXJhdGlvbgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYm9vdGxvYWRlciA9ICJ1LWJvb3QiCiBVQk9PVF9NQUNISU5FID0gInp5bnFfbWljcm96ZWRfY29uZmlnIgotU1BMX0JJTkFSWSA9ICJzcGwvYm9vdC5iaW4iCitTUExfQklOQVJZID89ICJzcGwvYm9vdC5iaW4iCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAiIFwKIAkJdS1ib290LXp5bnEtdWVudiBcCiAJCXZpcnR1YWwvYm9vdC1iaW4gXAorCQl2aXJ0dWFsL2Jvb3Rsb2FkZXIgXAogCQkiCiAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlQUzAiCiAKLU1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTICs9ICJkZXZpY2UtdHJlZSIKK0tFUk5FTF9ERVZJQ0VUUkVFID0gInp5bnEtbWljcm96ZWQuZHRiIgogCiBJTUFHRV9CT09UX0ZJTEVTICs9ICIgXAogCQlib290LmJpbiBcCi0JCSR7TUFDSElORX0uZHRiIFwKIAkJdUVudi50eHQgXAogCQkiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvcGljb3plZC16eW5xNy5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9waWNvemVkLXp5bnE3LmNvbmYKaW5kZXggODc2MjgzMi4uOTExYmY5MCAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9waWNvemVkLXp5bnE3LmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9waWNvemVkLXp5bnE3LmNvbmYKQEAgLTExLDE4ICsxMSwxOCBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXp5bnEuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LW92ZXJyaWRlcy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCiAKIE1BQ0hJTkVfRkVBVFVSRVMgPSAiZXh0MiB2ZmF0IHVzYmhvc3QgdXNiZ2FkZ2V0IgogCiAjIHUtYm9vdCBjb25maWd1cmF0aW9uCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9ib290bG9hZGVyID0gInUtYm9vdCIKIFVCT09UX01BQ0hJTkUgPSAienlucV9waWNvemVkX2NvbmZpZyIKLVNQTF9CSU5BUlkgPSAic3BsL2Jvb3QuYmluIgorU1BMX0JJTkFSWSA/PSAic3BsL2Jvb3QuYmluIgogCiBFWFRSQV9JTUFHRURFUEVORFMgKz0gIiBcCiAJCXUtYm9vdC16eW5xLXVlbnYgXAogCQl2aXJ0dWFsL2Jvb3QtYmluIFwKKwkJdmlydHVhbC9ib290bG9hZGVyIFwKIAkJIgogCiBTRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UFMwIgpAQCAtMzEsNyArMzEsNiBAQAogCiBJTUFHRV9CT09UX0ZJTEVTICs9ICIgXAogCQlib290LmJpbiBcCi0JCSR7TUFDSElORX0uZHRiIFwKIAkJdUVudi50eHQgXAogCQkiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvcWVtdS16eW5xNy5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9xZW11LXp5bnE3LmNvbmYKaW5kZXggMmM4NmVkYi4uOTcyNTEwNCAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9xZW11LXp5bnE3LmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS9xZW11LXp5bnE3LmNvbmYKQEAgLTE0LDcgKzE0LDYgQEAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlQUzAiCiAKIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTICs9ICJkZXZpY2UtdHJlZSIKLUlNQUdFX0JPT1RfRklMRVMgKz0gIiR7TUFDSElORX0uZHRiIgogCiAjIFVzZSB0aGUgbmV0d29ya2luZyBzZXR1cCBmcm9tIHFlbXVhcm0KIEZJTEVTT1ZFUlJJREVTX2FwcGVuZF9wbi1pbml0LWlmdXBkb3duID0gIjpxZW11YXJtIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96YzcwMi16eW5xNy5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96YzcwMi16eW5xNy5jb25mCmluZGV4IDliMDhkMWIuLmZiZDU4YTYgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemM3MDItenlucTcuY29uZgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3pjNzAyLXp5bnE3LmNvbmYKQEAgLTEzLDI1ICsxMywyOCBAQAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXp5bnEuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LW92ZXJyaWRlcy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LXFlbXUuaW5jCiAKIE1BQ0hJTkVfRkVBVFVSRVMgPSAicnRjIGV4dDIgZXh0MyB2ZmF0IHVzYmhvc3QiCiAKICMgdS1ib290IGNvbmZpZ3VyYXRpb24KIFVCT09UX01BQ0hJTkUgPSAienlucV96YzcwMl9jb25maWciCi1TUExfQklOQVJZID0gInNwbC9ib290LmJpbiIKK1NQTF9CSU5BUlkgPz0gInNwbC9ib290LmJpbiIKIAogRVhUUkFfSU1BR0VERVBFTkRTICs9ICIgXAogCQl1LWJvb3QtenlucS11ZW52IFwKIAkJdmlydHVhbC9ib290LWJpbiBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAogU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eVBTMCIKIAogS0VSTkVMX0RFVklDRVRSRUUgPSAienlucS16YzcwMi5kdGIiCiAKLUlNQUdFX0JPT1RfRklMRVMgKz0gImJvb3QuYmluIHVFbnYudHh0ICR7S0VSTkVMX0lNQUdFVFlQRX0tenlucS16YzcwMi5kdGIiCitJTUFHRV9CT09UX0ZJTEVTICs9ICIgXAorCQlib290LmJpbiBcCisJCXVFbnYudHh0IFwKKwkJIgogCiAjIEFsdGhvdWdoIG5vdCBmdWxseSBzdXBwb3J0ZWQgeW91IGNhbiBydW4gdGhpcyBtYWNoaW5lIG9uIHRoZSBtYWlubGluZSBRRU1VICd4aWxpbngtenlucS1hOScgbWFjaGluZQogSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3pjNzA2LXp5bnE3LmNvbmYgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3pjNzA2LXp5bnE3LmNvbmYKaW5kZXggNjI4ZDQwNC4uNzQxZWY1ZCAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96YzcwNi16eW5xNy5jb25mCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemM3MDYtenlucTcuY29uZgpAQCAtMTQsMTggKzE0LDE4IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtenlucS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtb3ZlcnJpZGVzLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYwotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1ib2FyZC5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtcWVtdS5pbmMKIAogTUFDSElORV9GRUFUVVJFUyA9ICJydGMgZXh0MiBleHQzIHZmYXQgdXNiaG9zdCB1c2JnYWRnZXQiCiAKICMgdS1ib290IGNvbmZpZ3VyYXRpb24KIFVCT09UX01BQ0hJTkUgPSAienlucV96YzcwNl9jb25maWciCi1TUExfQklOQVJZID0gInNwbC9ib290LmJpbiIKK1NQTF9CSU5BUlkgPz0gInNwbC9ib290LmJpbiIKIAogRVhUUkFfSU1BR0VERVBFTkRTICs9ICIgXAogCQl1LWJvb3QtenlucS11ZW52IFwKIAkJdmlydHVhbC9ib290LWJpbiBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAogU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eVBTMCIKQEAgLTM0LDcgKzM0LDYgQEAKIAogSU1BR0VfQk9PVF9GSUxFUyArPSAiIFwKIAkJYm9vdC5iaW4gXAotCQkke0tFUk5FTF9JTUFHRVRZUEV9LXp5bnEtemM3MDYuZHRiIFwKIAkJdUVudi50eHQgXAogCQkiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemN1MTAyLXp5bnFtcC5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDItenlucW1wLmNvbmYKaW5kZXggZDdmMTljYS4uZmJhNTVhMyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDItenlucW1wLmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDItenlucW1wLmNvbmYKQEAgLTcsMTQgKzcsMTIgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS16eW5xbXAuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LW92ZXJyaWRlcy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LXFlbXUuaW5jCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3p5bnFtcC1wbXUtY29uZmlnLmluYwogCiBNQUNISU5FX0ZFQVRVUkVTID0gInJ0YyBleHQyIGV4dDMgdmZhdCB1c2Job3N0IgogCiBVQk9PVF9NQUNISU5FID0gInhpbGlueF96eW5xbXBfemN1MTAyX3JldjFfMF9kZWZjb25maWciCi1TUExfQklOQVJZID0gInNwbC9ib290LmJpbiIKK1NQTF9CSU5BUlkgPz0gInNwbC9ib290LmJpbiIKIAogIyBEZWZhdWx0IFNEIGltYWdlIGJ1aWxkIG9uZmlndXJhdGlvbiwgdXNlIHFlbXUtc2QgdG8gcGFkCiBJTUFHRV9DTEFTU0VTICs9ICJpbWFnZS10eXBlcy14aWxpbngtcWVtdSIKQEAgLTI4LDIzICsyNiwyNSBAQAogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXhsbngiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9ib290bG9hZGVyID89ICJ1LWJvb3QteGxueCIKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3BtdS1maXJtd2FyZSA/PSAienlucW1wLXBtdS1wbXUtZmlybXdhcmUiCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAiIFwKIAkJdS1ib290LXp5bnEtdWVudiBcCiAJCWFybS10cnVzdGVkLWZpcm13YXJlIFwKIAkJcWVtdS1kZXZpY2V0cmVlcyBcCi0JCXZpcnR1YWwvcG11LWZpcm13YXJlIFwKIAkJdmlydHVhbC9ib290LWJpbiBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAotSU1BR0VfQk9PVF9GSUxFUyArPSAidUVudi50eHQgYXRmLXVib290LnViICR7S0VSTkVMX0lNQUdFVFlQRX0tenlucW1wLXpjdTEwMi1yZXYxLjAuZHRiIgorSU1BR0VfQk9PVF9GSUxFUyArPSAiIFwKKwkJdUVudi50eHQgXAorCQlhdGYtdWJvb3QudWIgXAorCQkiCiAKICMgVGhpcyBtYWNoaW5lIGhhcyBhIFFFTVUgbW9kZWwsIHJ1bnFlbXUgc2V0dXA6CiBJTUFHRV9DTEFTU0VTICs9ICJxZW11Ym9vdC14aWxpbngiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHhsbngtemN1MTAyIgogUUJfTUVNID0gIi1tIDQwOTYiCi1RQl9PUFRfQVBQRU5EID0gIi1ub2dyYXBoaWMgLXNlcmlhbCBtb246c3RkaW8gLXNlcmlhbCBudWxsIgorUUJfT1BUX0FQUEVORCA/PSAiLW5vZ3JhcGhpYyAtc2VyaWFsIG1vbjpzdGRpbyAtc2VyaWFsIG51bGwiCiBRQl9ORVRXT1JLX0RFVklDRSA9ICItbmV0IG5pYyAtbmV0IG5pYyAtbmV0IG5pYyAtbmV0IG5pYyxuZXRkZXY9bmV0MCxtYWNhZGRyPUBNQUNAIgogCiAjIFVzZSBxZW11LXhpbGlueCBpbnN0ZWFkIG9mIG1haW5saW5lCkBAIC02OCwxNCArNjgsMTggQEAKIAogIyBQTVUgaW5zdGFuY2UgYXJncwogUE1VX1JPTSA/PSAiJHtERVBMT1lfRElSX0lNQUdFfS9wbXUtcm9tLmVsZiIKK1BNVV9GSVJNV0FSRV9ERVBMT1lfRElSID89ICIke1RPUERJUn0vcG11dG1wL2RlcGxveS9pbWFnZXMvenlucW1wLXBtdSIKK1BNVV9GSVJNV0FSRV9JTUFHRV9OQU1FID89ICJwbXUtZmlybXdhcmUtenlucW1wLXBtdSIKKwogUUJfUE1VX09QVCA9ICIgXAogCQktTSBtaWNyb2JsYXplLWZkdCBcCiAJCS1kaXNwbGF5IG5vbmUgXAogCQktaHctZHRiICR7REVQTE9ZX0RJUl9JTUFHRX0vcWVtdS1ody1kZXZpY2V0cmVlcy9tdWx0aWFyY2gvenlucW1wLXBtdS5kdGIgXAogCQkta2VybmVsICR7UE1VX1JPTX0gXAotCQktZGV2aWNlIGxvYWRlcixmaWxlPSR7REVQTE9ZX0RJUl9JTUFHRX0vcG11LWZpcm13YXJlLSR7TUFDSElORX0uZWxmIFwKKwkJLWRldmljZSBsb2FkZXIsZmlsZT0ke1BNVV9GSVJNV0FSRV9ERVBMT1lfRElSfS8ke1BNVV9GSVJNV0FSRV9JTUFHRV9OQU1FfS5lbGYgXAogCQktZGV2aWNlIGxvYWRlcixhZGRyPTB4ZmQxYTAwNzQsZGF0YT0weDEwMTEwMDMsZGF0YS1sZW49NCBcCiAJCS1kZXZpY2UgbG9hZGVyLGFkZHI9MHhmZDFhMDA3QyxkYXRhPTB4MTAxMGYwMyxkYXRhLWxlbj00IFwKIAkJIgogUUJfT1BUX0FQUEVORF9hcHBlbmRfcWVtdWJvb3QteGlsaW54ID0gIiAtcG11LWFyZ3MgJyR7UUJfUE1VX09QVH0nIgogCitkb193cml0ZV9xZW11Ym9vdF9jb25mW2RlcGVuZHNdICs9ICJ1LWJvb3QtenlucS11ZW52OmRvX2RlcGxveSIKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemN1MTA0LXp5bnFtcC5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDQtenlucW1wLmNvbmYKaW5kZXggZjVhMmFmOS4uYzRiNGEwMyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDQtenlucW1wLmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDQtenlucW1wLmNvbmYKQEAgLTgsMTMgKzgsMTEgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS16eW5xbXAuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LW92ZXJyaWRlcy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3p5bnFtcC1wbXUtY29uZmlnLmluYwogCiBNQUNISU5FX0ZFQVRVUkVTID0gInJ0YyBleHQyIGV4dDMgdmZhdCB1c2Job3N0IgogCiBVQk9PVF9NQUNISU5FID0gInhpbGlueF96eW5xbXBfemN1MTA0X3JldkNfZGVmY29uZmlnIgotU1BMX0JJTkFSWSA9ICJzcGwvYm9vdC5iaW4iCitTUExfQklOQVJZID89ICJzcGwvYm9vdC5iaW4iCiAKIFNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UFMwIgogCkBAIC0yNCwxNSArMjIsMjAgQEAKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC14bG54IgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvYm9vdGxvYWRlciA/PSAidS1ib290LXhsbngiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9wbXUtZmlybXdhcmUgPz0gInp5bnFtcC1wbXUtcG11LWZpcm13YXJlIgorCitQTVVfRklSTVdBUkVfSU1BR0VfTkFNRSA/PSAicG11LWZpcm13YXJlLXp5bnFtcC1wbXUiCitQTVVfRklSTVdBUkVfREVQTE9ZX0RJUiA/PSAiJHtUT1BESVJ9L3BtdXRtcC9kZXBsb3kvaW1hZ2VzL3p5bnFtcC1wbXUiCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAiIFwKIAkJdS1ib290LXp5bnEtdWVudiBcCiAJCWFybS10cnVzdGVkLWZpcm13YXJlIFwKLQkJdmlydHVhbC9wbXUtZmlybXdhcmUgXAogCQl2aXJ0dWFsL2Jvb3QtYmluIFwKKwkJdmlydHVhbC9ib290bG9hZGVyIFwKIAkJIgotSU1BR0VfQk9PVF9GSUxFUyArPSAidUVudi50eHQgYXRmLXVib290LnViICR7S0VSTkVMX0lNQUdFVFlQRX0tenlucW1wLXpjdTEwNC1yZXZDLmR0YiIKK0lNQUdFX0JPT1RfRklMRVMgKz0gIiBcCisJCXVFbnYudHh0IFwKKwkJYXRmLXVib290LnViIFwKKwkJIgogCiBNQUNISU5FX0hXQ09ERUNTID0gImxpYm9teGlsLXhsbngiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemN1MTA2LXp5bnFtcC5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDYtenlucW1wLmNvbmYKaW5kZXggNjI4ZWM2Yy4uMTM2ZWZiOSAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDYtenlucW1wLmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96Y3UxMDYtenlucW1wLmNvbmYKQEAgLTcsMTMgKzcsMTEgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS16eW5xbXAuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LW92ZXJyaWRlcy5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtZGVmYXVsdC5pbmMKLXJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtYm9hcmQuaW5jCi1pbmNsdWRlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3p5bnFtcC1wbXUtY29uZmlnLmluYwogCiBNQUNISU5FX0ZFQVRVUkVTID0gInJ0YyBleHQyIGV4dDMgdmZhdCB1c2Job3N0IgogCiBVQk9PVF9NQUNISU5FID0gInhpbGlueF96eW5xbXBfemN1MTA2X3JldkFfZGVmY29uZmlnIgotU1BMX0JJTkFSWSA9ICJzcGwvYm9vdC5iaW4iCitTUExfQklOQVJZID89ICJzcGwvYm9vdC5iaW4iCiAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlQUzAiCiBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sgPSAiJHtTRVJJQUxfQ09OU09MRVN9IgpAQCAtMjIsMTUgKzIwLDIwIEBACiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteGxueCIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2Jvb3Rsb2FkZXIgPz0gInUtYm9vdC14bG54IgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvcG11LWZpcm13YXJlID89ICJ6eW5xbXAtcG11LXBtdS1maXJtd2FyZSIKKworUE1VX0ZJUk1XQVJFX0lNQUdFX05BTUUgPz0gInBtdS1maXJtd2FyZS16eW5xbXAtcG11IgorUE1VX0ZJUk1XQVJFX0RFUExPWV9ESVIgPz0gIiR7VE9QRElSfS9wbXV0bXAvZGVwbG95L2ltYWdlcy96eW5xbXAtcG11IgogCiBFWFRSQV9JTUFHRURFUEVORFMgKz0gIiBcCiAJCXUtYm9vdC16eW5xLXVlbnYgXAogCQlhcm0tdHJ1c3RlZC1maXJtd2FyZSBcCi0JCXZpcnR1YWwvcG11LWZpcm13YXJlIFwKIAkJdmlydHVhbC9ib290LWJpbiBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAotSU1BR0VfQk9PVF9GSUxFUyArPSAidUVudi50eHQgYXRmLXVib290LnViICR7S0VSTkVMX0lNQUdFVFlQRX0tenlucW1wLXpjdTEwNi1yZXZBLmR0YiIKK0lNQUdFX0JPT1RfRklMRVMgKz0gIiBcCisJCXVFbnYudHh0IFwKKwkJYXRmLXVib290LnViIFwKKwkJIgogCiBNQUNISU5FX0hXQ09ERUNTID0gImxpYm9teGlsLXhsbngiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3plZGJvYXJkLXp5bnE3LmNvbmYgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3plZGJvYXJkLXp5bnE3LmNvbmYKaW5kZXggYTMyOTA3NC4uMzZjNTFiNyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96ZWRib2FyZC16eW5xNy5jb25mCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvemVkYm9hcmQtenlucTcuY29uZgpAQCAtMTMsMjAgKzEzLDIzIEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtenlucS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtb3ZlcnJpZGVzLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYwotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1ib2FyZC5pbmMKIAogIyB1LWJvb3QgY29uZmlndXJhdGlvbgogVUJPT1RfTUFDSElORSA9ICJ6eW5xX3plZF9jb25maWciCi1TUExfQklOQVJZID0gInNwbC9ib290LmJpbiIKK1NQTF9CSU5BUlkgPz0gInNwbC9ib290LmJpbiIKIAogRVhUUkFfSU1BR0VERVBFTkRTICs9ICIgXAogCQl1LWJvb3QtenlucS11ZW52IFwKIAkJdmlydHVhbC9ib290LWJpbiBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAogU0VSSUFMX0NPTlNPTEUgPSAiMTE1MjAwIHR0eVBTMCIKIAogS0VSTkVMX0RFVklDRVRSRUUgPSAienlucS16ZWQuZHRiIgogCi1JTUFHRV9CT09UX0ZJTEVTICs9ICJib290LmJpbiB1RW52LnR4dCAke0tFUk5FTF9JTUFHRVRZUEV9LXp5bnEtemVkLmR0YiIKK0lNQUdFX0JPT1RfRklMRVMgKz0gIiBcCisJCWJvb3QuYmluIFwKKwkJdUVudi50eHQgXAorCQkiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9jb25mL21hY2hpbmUvenliby1saW51eC1iZC16eW5xNy5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96eWJvLWxpbnV4LWJkLXp5bnE3LmNvbmYKaW5kZXggMjdiNmQwNy4uYmEzNTVkNSAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96eWJvLWxpbnV4LWJkLXp5bnE3LmNvbmYKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96eWJvLWxpbnV4LWJkLXp5bnE3LmNvbmYKQEAgLTEwLDcgKzEwLDYgQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS16eW5xLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1vdmVycmlkZXMuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWRlZmF1bHQuaW5jCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWJvYXJkLmluYwogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXhsbngiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9ib290bG9hZGVyID89ICJ1LWJvb3QiCkBAIC0yMSwxOCArMjAsMTggQEAKIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTICs9ICJkZXZpY2UtdHJlZSIKIAogVUJPT1RfTUFDSElORSA9ICJ6eW5xX3p5Ym9fY29uZmlnIgotU1BMX0JJTkFSWSA9ICJzcGwvYm9vdC5iaW4iCitTUExfQklOQVJZID89ICJzcGwvYm9vdC5iaW4iCiBGT1JDRV9QTEFURk9STV9JTklUID0gIjEiCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAiIFwKIAkJdS1ib290LXp5bnEtdWVudiBcCiAJCXZpcnR1YWwvYm9vdC1iaW4gXAogCQl2aXJ0dWFsL2JpdHN0cmVhbSBcCisJCXZpcnR1YWwvYm9vdGxvYWRlciBcCiAJCSIKIAogSU1BR0VfQk9PVF9GSUxFUyArPSAiIFwKIAkJYm9vdC5iaW4gXAotCQkke01BQ0hJTkV9LmR0YiBcCiAJCWJpdHN0cmVhbSBcCiAJCXVFbnYudHh0IFwKIAkJIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL2NvbmYvbWFjaGluZS96eWJvLXp5bnE3LmNvbmYgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3p5Ym8tenlucTcuY29uZgppbmRleCA1YjQwNTYzLi4wNDlhZGQ5IDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3p5Ym8tenlucTcuY29uZgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvY29uZi9tYWNoaW5lL3p5Ym8tenlucTcuY29uZgpAQCAtMTEsMTggKzExLDE4IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtenlucS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWFjaGluZS14aWxpbngtb3ZlcnJpZGVzLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1kZWZhdWx0LmluYwotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tYWNoaW5lLXhpbGlueC1ib2FyZC5pbmMKIAogTUFDSElORV9GRUFUVVJFUyA9ICJleHQyIHZmYXQgdXNiaG9zdCB1c2JnYWRnZXQiCiAKICMgdS1ib290IGNvbmZpZ3VyYXRpb24KIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2Jvb3Rsb2FkZXIgPSAidS1ib290IgogVUJPT1RfTUFDSElORSA9ICJ6eW5xX3p5Ym9fY29uZmlnIgotU1BMX0JJTkFSWSA9ICJzcGwvYm9vdC5iaW4iCitTUExfQklOQVJZID89ICJzcGwvYm9vdC5iaW4iCiAKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAiIFwKIAkJdS1ib290LXp5bnEtdWVudiBcCiAJCXZpcnR1YWwvYm9vdC1iaW4gXAorCQl2aXJ0dWFsL2Jvb3Rsb2FkZXIgXAogCQkiCiAKIFNFUklBTF9DT05TT0xFID0gIjExNTIwMCB0dHlQUzAiCkBAIC0zMSw3ICszMSw2IEBACiAKIElNQUdFX0JPT1RfRklMRVMgKz0gIiBcCiAJCWJvb3QuYmluIFwKLQkJJHtLRVJORUxfSU1BR0VUWVBFfS16eW5xLXp5Ym8uZHRiIFwKIAkJdUVudi50eHQgXAogCQkiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9hcm0tdHJ1c3RlZC1maXJtd2FyZS9hcm0tdHJ1c3RlZC1maXJtd2FyZS5pbmMgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvYXJtLXRydXN0ZWQtZmlybXdhcmUvYXJtLXRydXN0ZWQtZmlybXdhcmUuaW5jCmluZGV4IDAyYmJjNzMuLmQ2NGZhZDkgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9hcm0tdHJ1c3RlZC1maXJtd2FyZS9hcm0tdHJ1c3RlZC1maXJtd2FyZS5pbmMKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL2FybS10cnVzdGVkLWZpcm13YXJlL2FybS10cnVzdGVkLWZpcm13YXJlLmluYwpAQCAtMSw3ICsxLDcgQEAKIERFU0NSSVBUSU9OID0gIkFSTSBUcnVzdGVkIEZpcm13YXJlIgogCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UucnN0O21kNT0zMzA2NTMzNWVhMDNkOTc3ZDA1NjlmMjcwYjM5NjAzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UucnN0O21kNT1lOTI3ZTAyYmNhNjQ3ZTE0ZWZkODdlOWU5MTRiMjQ0MyIKIAogUFJPVklERVMgPSAidmlydHVhbC9hcm0tdHJ1c3RlZC1maXJtd2FyZSIKIApAQCAtMjgsNiArMjgsNyBAQAogQ09NUEFUSUJMRV9NQUNISU5FID0gInp5bnFtcCIKIFBMQVRGT1JNX3p5bnFtcCA9ICJ6eW5xbXAiCiAKKwogIyByZXF1aXJlcyBDUk9TU19DT01QSUxFIHNldCBieSBoYW5kIGFzIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZSBzY3JpcHQKIGV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgogCkBAIC0zNyw4ICszOCwyMyBAQAogQVNbdW5leHBvcnRdID0gIjEiCiBMRFt1bmV4cG9ydF0gPSAiMSIKIAorQVRGX0NPTlNPTEUgPz0gIiIKK0FURl9DT05TT0xFX3p5bnFtcCA9ICJjYWRlbmNlIgorCitERUJVRyA/PSAiIgorRVhUUkFfT0VNQUtFX3p5bnFtcF9hcHBlbmQgPSAiJHtAJyBaWU5RTVBfQ09OU09MRT0ke0FURl9DT05TT0xFfScgaWYgZC5nZXRWYXIoJ0FURl9DT05TT0xFJywgVHJ1ZSkgIT0gJycgZWxzZSAnJ30iCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnREVCVUcnLCAnMScsICcgREVCVUc9JHtERUJVR30nLCAnJywgZCl9IgorCitPVVRQVVRfRElSID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdERUJVRycsICcxJywgJyR7Qn0vJHtQTEFURk9STX0vZGVidWcnLCAnJHtCfS8ke1BMQVRGT1JNfS9yZWxlYXNlJywgZCl9IgorCitBVEZfTUVNX0JBU0UgPz0gIiIKK0FURl9NRU1fU0laRSA/PSAiIgorCitFWFRSQV9PRU1BS0VfenlucW1wX2FwcGVuZCA9ICIke0AnIFpZTlFNUF9BVEZfTUVNX0JBU0U9JHtBVEZfTUVNX0JBU0V9JyBpZiBkLmdldFZhcignQVRGX01FTV9CQVNFJywgVHJ1ZSkgIT0gJycgZWxzZSAnJ30iCitFWFRSQV9PRU1BS0VfenlucW1wX2FwcGVuZCA9ICIke0AnIFpZTlFNUF9BVEZfTUVNX1NJWkU9JHtBVEZfTUVNX1NJWkV9JyBpZiBkLmdldFZhcignQVRGX01FTV9TSVpFJywgVHJ1ZSkgIT0gJycgZWxzZSAnJ30iCisKIGRvX2NvbmZpZ3VyZSgpIHsKLQk6CisJb2VfcnVubWFrZSBjbGVhbiAtQyAke1N9IEJVSUxEX0JBU0U9JHtCfSBQTEFUPSR7UExBVEZPUk19CiB9CiAKIGRvX2NvbXBpbGUoKSB7CkBAIC00OSw4ICs2NSw2IEBACiAJOgogfQogCi1PVVRQVVRfRElSID0gIiR7Qn0vJHtQTEFURk9STX0vcmVsZWFzZSIKLQogZG9fZGVwbG95KCkgewogCWluc3RhbGwgLWQgJHtERVBMT1lESVJ9CiAJaW5zdGFsbCAtbSAwNjQ0ICR7T1VUUFVUX0RJUn0vYmwzMS9ibDMxLmVsZiAke0RFUExPWURJUn0vJHtBVEZfQkFTRV9OQU1FfS5lbGYKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9hcm0tdHJ1c3RlZC1maXJtd2FyZS9hcm0tdHJ1c3RlZC1maXJtd2FyZV8yMDE4LjEuYmIgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvYXJtLXRydXN0ZWQtZmlybXdhcmUvYXJtLXRydXN0ZWQtZmlybXdhcmVfMjAxOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTllZWE2Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9hcm0tdHJ1c3RlZC1maXJtd2FyZS9hcm0tdHJ1c3RlZC1maXJtd2FyZV8yMDE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUFURl9WRVJTSU9OID0gIjEuNCIKLVhJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMSIKLUJSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID89ICJkZjRhN2U5N2Q1NzQ5NGM3ZDc5ZGU1MWIxZTBlNDUwZDk4MmNlYTk4IgotCi1pbmNsdWRlIGFybS10cnVzdGVkLWZpcm13YXJlLmluYwotCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvYXJtLXRydXN0ZWQtZmlybXdhcmUvYXJtLXRydXN0ZWQtZmlybXdhcmVfMjAxOC4zLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL2FybS10cnVzdGVkLWZpcm13YXJlL2FybS10cnVzdGVkLWZpcm13YXJlXzIwMTguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzhhNWQwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL2FybS10cnVzdGVkLWZpcm13YXJlL2FybS10cnVzdGVkLWZpcm13YXJlXzIwMTguMy5iYgpAQCAtMCwwICsxLDcgQEAKK0FURl9WRVJTSU9OID0gIjEuNSIKK1hJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMyIKK0JSQU5DSCA/PSAibWFzdGVyIgorU1JDUkVWID89ICIwODU2MGMzNmVhNWI2ZjQ4Yjk2MmNiNGJkOWE3OWIzNWJiM2Q5NWNlIgorCitpbmNsdWRlIGFybS10cnVzdGVkLWZpcm13YXJlLmluYworCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvZGV2aWNlLXRyZWUvZGV2aWNlLXRyZWUuYmIgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvZGV2aWNlLXRyZWUvZGV2aWNlLXRyZWUuYmIKaW5kZXggZGM0OWNiYi4uODE5NjVjMSAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL2RldmljZS10cmVlL2RldmljZS10cmVlLmJiCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9kZXZpY2UtdHJlZS9kZXZpY2UtdHJlZS5iYgpAQCAtMSw4NSArMSwzOSBAQAotU1VNTUFSWSA9ICJEZXZpY2UgVHJlZXMgZm9yIEJTUHMiCi1ERVNDUklQVElPTiA9ICJEZXZpY2UgVHJlZSBnZW5lcmF0aW9uIGFuZCBwYWNrYWdpbmcgZm9yIEJTUCBEZXZpY2UgVHJlZXMuIgorU1VNTUFSWSA9ICJYaWxpbnggQlNQIGRldmljZSB0cmVlcyIKK0RFU0NSSVBUSU9OID0gIlhpbGlueCBCU1AgZGV2aWNlIHRyZWVzIGZyb20gd2l0aGluIGxheWVyLiIKIFNFQ1RJT04gPSAiYnNwIgogCisjIHRoZSBkZXZpY2UgdHJlZXMgZnJvbSB3aXRoaW4gdGhlIGxheWVyIGFyZSBsaWNlbnNlZCBhcyBNSVQsIGtlcm5lbCBpbmNsdWRlcyBhcmUgR1BMCiBMSUNFTlNFID0gIk1JVCAmIEdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAogCQlmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIgXAogCQlmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0dQTC0yLjA7bWQ1PTgwMWY4MDk4MGQxNzFkZDY0MjU2MTA4MzNhMjJkYmU2IFwKIAkJIgogCi1pbmhlcml0IGRlcGxveSBrZXJuZWwtYXJjaAoraW5oZXJpdCBkZXZpY2V0cmVlCiAKIFBST1ZJREVTID0gInZpcnR1YWwvZHRiIgogCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotREVQRU5EUyArPSAiZHRjLW5hdGl2ZSIKKyMgY29tbW9uIHp5bnEgaW5jbHVkZQorU1JDX1VSSV9hcHBlbmRfenlucSA9ICIgZmlsZTovL3p5bnEtNzAwMC1xc3BpLWR1bW15LmR0c2kiCiAKLUNPTVBBVElCTEVfTUFDSElORSA/PSAiXiQiCisjIGRldmljZSB0cmVlIHNvdXJjZXMgZm9yIHRoZSB2YXJpb3VzIG1hY2hpbmVzCitDT01QQVRJQkxFX01BQ0hJTkVfcGljb3plZC16eW5xNyA9ICIuKiIKK1NSQ19VUklfYXBwZW5kX3BpY296ZWQtenlucTcgPSAiIGZpbGU6Ly9waWNvemVkLXp5bnE3LmR0cyIKIAotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKK0NPTVBBVElCTEVfTUFDSElORV9xZW11LXp5bnE3ID0gIi4qIgorU1JDX1VSSV9hcHBlbmRfcWVtdS16eW5xNyA9ICIgZmlsZTovL3FlbXUtenlucTcuZHRzIgogCi1GSUxFU18ke1BOfSA9ICIvYm9vdC9kZXZpY2V0cmVlLyouZHRiIC9ib290L2RldmljZXRyZWUvKi5kdGJvIgotCi1TID0gIiR7V09SS0RJUn0iCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi0KLVNZU1JPT1RfRElSUyArPSAiL2Jvb3QvZGV2aWNldHJlZSIKLQotIyBCeSBkZWZhdWx0IHByb3ZpZGUgdGhlIGN1cnJlbnQga2VybmVsIGFyY2gncyBib290L2R0cyBhbmQgYm9vdC9kdHMvaW5jbHVkZS4KLUtFUk5FTF9EVFNfSU5DTFVERSA/Pz0gIiBcCi0JCSR7U1RBR0lOR19LRVJORUxfRElSfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMgXAotCQkke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZHRzL2luY2x1ZGUgXAotCQkiCi0jIEZvciBhcm02NC96eW5xbXAgdGhlIHhpbGlueCBzcGVjaWZpYyBpbmNsdWRlcyBhcmUgc3ViZGlyZWQgdW5kZXIgYSB2ZW5kb3IgZGlyZWN0b3J5LgotS0VSTkVMX0RUU19JTkNMVURFX2FwcGVuZF96eW5xbXAgPSAiIFwKLQkJJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gvJHtBUkNIfS9ib290L2R0cy94aWxpbnggXAorQ09NUEFUSUJMRV9NQUNISU5FX3p5Ym8tbGludXgtYmQtenlucTcgPSAiLioiCitTUkNfVVJJX2FwcGVuZF96eWJvLWxpbnV4LWJkLXp5bnE3ID0gIiBcCisJCWZpbGU6Ly96eWJvLWxpbnV4LWJkLXp5bnE3LmR0cyBcCisJCWZpbGU6Ly9wY3cuZHRzaSBcCisJCWZpbGU6Ly9wbC5kdHNpIFwKIAkJIgogCi1EVFNfRklMRVNfUEFUSCA/PSAiJHtTfSIKLURUU19JTkNMVURFID89ICIke0RUU19GSUxFU19QQVRIfSAke0tFUk5FTF9EVFNfSU5DTFVERX0iCi0KLURUX1BBRERJTkdfU0laRSA/PSAiMHgzMDAwIgotREVWSUNFVFJFRV9GTEFHUyA/PSAiIFwKLQkJLVIgOCAtcCAke0RUX1BBRERJTkdfU0laRX0gLWIgMCBcCi0JCSR7QCcgJy5qb2luKFsnLWkgJXMnICUgaSBmb3IgaSBpbiBkLmdldFZhcignRFRTX0lOQ0xVREUnLCBUcnVlKS5zcGxpdCgpXSl9IFwKLSAgICAgICAgICAgICAgICIKLURFVklDRVRSRUVfT0ZMQUdTID89ICItQCAtSCBlcGFwciIKLURFVklDRVRSRUVfUFBfRkxBR1MgPz0gIiBcCi0JCS1ub3N0ZGluYyAtVWxpbnV4IC14IGFzc2VtYmxlci13aXRoLWNwcCBcCi0JCSR7QCcgJy5qb2luKFsnLUklcycgJSBpIGZvciBpIGluIGQuZ2V0VmFyKCdEVFNfSU5DTFVERScsIFRydWUpLnNwbGl0KCldKX0gXAorQ09NUEFUSUJMRV9NQUNISU5FX2tjNzA1LW1pY3JvYmxhemVlbCA9ICIuKiIKK1NSQ19VUklfYXBwZW5kX2tjNzA1LW1pY3JvYmxhemVlbCA9ICIgXAorCQlmaWxlOi8va2M3MDUtbWljcm9ibGF6ZWVsLmR0cyBcCisJCWZpbGU6Ly9wbC5kdHNpIFwKKwkJZmlsZTovL3N5c3RlbS1jb25mLmR0c2kgXAogCQkiCiAKLXB5dGhvbiAoKSB7Ci0gICAgIyBhdXRvIGFkZCBkZXBlbmRlbmN5IG9uIGtlcm5lbCB0cmVlCi0gICAgaWYgZC5nZXRWYXIoIktFUk5FTF9EVFNfSU5DTFVERSIpICE9ICIiOgotICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX2NvbXBpbGUiLCAiZGVwZW5kcyIsICIgdmlydHVhbC9rZXJuZWw6ZG9fY29uZmlndXJlIikKLX0KLQotZG9fY29tcGlsZSgpIHsKLQlmb3IgRFRTX0ZJTEUgaW4gJHtEVFNfRklMRVNfUEFUSH0vKi5kdHM7IGRvCi0JCURUU19OQU1FPWBiYXNlbmFtZSAtcyAuZHRzICR7RFRTX0ZJTEV9YAotCQkke0JVSUxEX0NQUH0gJHtERVZJQ0VUUkVFX1BQX0ZMQUdTfSAtbyBgYmFzZW5hbWUgJHtEVFNfRklMRX1gLnBwICR7RFRTX0ZJTEV9Ci0KLQkJIyBmb3Igbm93IHVzZSB0aGUgZXhpc3RhbmNlIG9mIHRoZSAnL3BsdWdpbi8nIHRhZyB0byBkZXRlY3Qgb3ZlcmxheXMKLQkJaWYgZ3JlcCAtcXNlICIvcGx1Z2luLzsiIGBiYXNlbmFtZSAke0RUU19GSUxFfWAucHA7IHRoZW4KLQkJCWR0YyAke0RFVklDRVRSRUVfT0ZMQUdTfSAtSSBkdHMgLU8gZHRiICR7REVWSUNFVFJFRV9GTEFHU30gLW8gJHtEVFNfTkFNRX0uZHRibyBgYmFzZW5hbWUgJHtEVFNfRklMRX1gLnBwCi0JCWVsc2UKLQkJCWR0YyAtSSBkdHMgLU8gZHRiICR7REVWSUNFVFJFRV9GTEFHU30gLW8gJHtEVFNfTkFNRX0uZHRiIGBiYXNlbmFtZSAke0RUU19GSUxFfWAucHAKLQkJZmkKLQlkb25lCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JZm9yIERUQl9GSUxFIGluIGBscyAqLmR0YiAqLmR0Ym9gOyBkbwotCQlpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vJHtEVEJfRklMRX0gJHtEfS9ib290L2RldmljZXRyZWUvJHtEVEJfRklMRX0KLQlkb25lCi19Ci0KLWRvX2RlcGxveSgpIHsKLQlmb3IgRFRCX0ZJTEUgaW4gYGxzICouZHRiICouZHRib2A7IGRvCi0JCWluc3RhbGwgLURtIDA2NDQgJHtCfS8ke0RUQl9GSUxFfSAke0RFUExPWURJUn0vJHtEVEJfRklMRX0KLQlkb25lCi19Ci1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAotCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvZGV2aWNlLXRyZWUvZGV2aWNlLXRyZWUuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvZGV2aWNlLXRyZWUvZGV2aWNlLXRyZWUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMjhlMGUuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL2RldmljZS10cmVlL2RldmljZS10cmVlLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLSMgY29tbW9uIHp5bnEgaW5jbHVkZQotU1JDX1VSSV9hcHBlbmRfenlucSA9ICIgZmlsZTovL3p5bnEtNzAwMC1xc3BpLWR1bW15LmR0c2kiCi0KLSMgZGV2aWNlIHRyZWUgc291cmNlcyBmb3IgdGhlIHZhcmlvdXMgbWFjaGluZXMKLUNPTVBBVElCTEVfTUFDSElORV9waWNvemVkLXp5bnE3ID0gIi4qIgotU1JDX1VSSV9hcHBlbmRfcGljb3plZC16eW5xNyA9ICIgZmlsZTovL3BpY296ZWQtenlucTcuZHRzIgotCi1DT01QQVRJQkxFX01BQ0hJTkVfbWljcm96ZWQtenlucTcgPSAiLioiCi1TUkNfVVJJX2FwcGVuZF9taWNyb3plZC16eW5xNyA9ICIgZmlsZTovL21pY3JvemVkLXp5bnE3LmR0cyIKLQotQ09NUEFUSUJMRV9NQUNISU5FX3FlbXUtenlucTcgPSAiLioiCi1TUkNfVVJJX2FwcGVuZF9xZW11LXp5bnE3ID0gIiBmaWxlOi8vcWVtdS16eW5xNy5kdHMiCi0KLUNPTVBBVElCTEVfTUFDSElORV96eWJvLWxpbnV4LWJkLXp5bnE3ID0gIi4qIgotU1JDX1VSSV9hcHBlbmRfenliby1saW51eC1iZC16eW5xNyA9ICIgXAotCQlmaWxlOi8venliby1saW51eC1iZC16eW5xNy5kdHMgXAotCQlmaWxlOi8vcGN3LmR0c2kgXAotCQlmaWxlOi8vcGwuZHRzaSBcCi0JCSIKLQotQ09NUEFUSUJMRV9NQUNISU5FX2tjNzA1LW1pY3JvYmxhemVlbCA9ICIuKiIKLVNSQ19VUklfYXBwZW5kX2tjNzA1LW1pY3JvYmxhemVlbCA9ICIgXAotCQlmaWxlOi8va2M3MDUtbWljcm9ibGF6ZWVsLmR0cyBcCi0JCWZpbGU6Ly9wbC5kdHNpIFwKLQkJZmlsZTovL3N5c3RlbS1jb25mLmR0c2kgXAotCQkiCi0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9kZXZpY2UtdHJlZS9maWxlcy9taWNyb3plZC16eW5xNy5kdHMgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvZGV2aWNlLXRyZWUvZmlsZXMvbWljcm96ZWQtenlucTcuZHRzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTM3NmE0Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9kZXZpY2UtdHJlZS9maWxlcy9taWNyb3plZC16eW5xNy5kdHMKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIC0gMjAxNCBYaWxpbngKLSAqIENvcHlyaWdodCAoQykgMjAxNiBKYWdhbiBUZWtpIDxqdGVraUBvcGVuZWRldi5jb20+Ci0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQKLSAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2UgdGVybXMuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotL2R0cy12MS87Ci0vaW5jbHVkZS8gInp5bnEtNzAwMC5kdHNpIgotCi0vIHsKLQltb2RlbCA9ICJaeW5xIE1pY3JvWkVEIERldmVsb3BtZW50IEJvYXJkIjsKLQljb21wYXRpYmxlID0gInhsbngsenlucS1taWNyb3plZCIsICJ4bG54LHp5bnEtNzAwMCI7Ci0KLQlhbGlhc2VzIHsKLQkJZXRoZXJuZXQwID0gJmdlbTA7Ci0JCXNlcmlhbDAgPSAmdWFydDE7Ci0JfTsKLQotCW1lbW9yeSB7Ci0JCWRldmljZV90eXBlID0gIm1lbW9yeSI7Ci0JCXJlZyA9IDwweDAgMHg0MDAwMDAwMD47Ci0JfTsKLQotCWNob3NlbiB7Ci0JCWJvb3RhcmdzID0gImVhcmx5Y29uIjsKLQkJc3Rkb3V0LXBhdGggPSAic2VyaWFsMDoxMTUyMDBuOCI7Ci0JfTsKLQotCXVzYl9waHkwOiBwaHkwIHsKLQkJY29tcGF0aWJsZSA9ICJ1c2Itbm9wLXhjZWl2IjsKLQkJI3BoeS1jZWxscyA9IDwwPjsKLQl9OwotfTsKLQotJmNsa2MgewotCXBzLWNsay1mcmVxdWVuY3kgPSA8MzMzMzMzMzM+OwotfTsKLQotJmdlbTAgewotCXN0YXR1cyA9ICJva2F5IjsKLQlwaHktbW9kZSA9ICJyZ21paS1pZCI7Ci0JcGh5LWhhbmRsZSA9IDwmZXRoZXJuZXRfcGh5PjsKLQotCWV0aGVybmV0X3BoeTogZXRoZXJuZXQtcGh5QDAgewotCQlyZWcgPSA8MD47Ci0JfTsKLX07Ci0KLSZzZGhjaTAgewotCXN0YXR1cyA9ICJva2F5IjsKLX07Ci0KLSZ1YXJ0MSB7Ci0Jc3RhdHVzID0gIm9rYXkiOwotfTsKLQotJnVzYjAgewotCXN0YXR1cyA9ICJva2F5IjsKLQlkcl9tb2RlID0gImhvc3QiOwotCXVzYi1waHkgPSA8JnVzYl9waHkwPjsKLQlwaW5jdHJsLW5hbWVzID0gImRlZmF1bHQiOwotCXBpbmN0cmwtMCA9IDwmcGluY3RybF91c2IwX2RlZmF1bHQ+OwotfTsKLQotJnBpbmN0cmwwIHsKLQlwaW5jdHJsX3VzYjBfZGVmYXVsdDogdXNiMC1kZWZhdWx0IHsKLQkJbXV4IHsKLQkJCWdyb3VwcyA9ICJ1c2IwXzBfZ3JwIjsKLQkJCWZ1bmN0aW9uID0gInVzYjAiOwotCQl9OwotCi0JCWNvbmYgewotCQkJZ3JvdXBzID0gInVzYjBfMF9ncnAiOwotCQkJc2xldy1yYXRlID0gPDA+OwotCQkJaW8tc3RhbmRhcmQgPSA8MT47Ci0JCX07Ci0KLQkJY29uZi1yeCB7Ci0JCQlwaW5zID0gIk1JTzI5IiwgIk1JTzMxIiwgIk1JTzM2IjsKLQkJCWJpYXMtaGlnaC1pbXBlZGFuY2U7Ci0JCX07Ci0KLQkJY29uZi10eCB7Ci0JCQlwaW5zID0gIk1JTzI4IiwgIk1JTzMwIiwgIk1JTzMyIiwgIk1JTzMzIiwgIk1JTzM0IiwKLQkJCSAgICAgICAiTUlPMzUiLCAiTUlPMzciLCAiTUlPMzgiLCAiTUlPMzkiOwotCQkJYmlhcy1kaXNhYmxlOwotCQl9OwotCX07Ci19OwpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3BtdS1maXJtd2FyZS9wbXUtZmlybXdhcmVfMjAxOC4xLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3BtdS1maXJtd2FyZS9wbXUtZmlybXdhcmVfMjAxOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTRlMTAzLi4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9wbXUtZmlybXdhcmUvcG11LWZpcm13YXJlXzIwMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLVNVTU1BUlkgPSAiRmlybXdhcmUgZm9yIHRoZSBQTVUgb24gdGhlIFp5bnFNUCBQcm9ncmFtbWFibGUgU2lsaWNvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9YaWxpbngvZW1iZWRkZWRzdyIKLVNFQ1RJT04gPSAiYnNwIgotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MgbmV3bGliIGxpYmdsb3NzIGxpYmdjYyIKLQotIyBmb3JjZSB0aGlzIHJlY2lwZSB0byBwcm92aWRlIGEgdGFyZ2V0IHZpcnR1YWwvcG11LWZpcm13YXJlLiB0aGlzIGlzIGFwcGxpZWQKLSMgYWZ0ZXIgYW55IGNsYXNzIGV4dGVuZGVyIG1hcHBpbmcgYW5kIHJlc3VsdHMgaW4gdGhpcyByZWNpcGUgYWx3YXlzIHByb3ZpZGluZwotIyAndmlydHVhbC9wbXUtZmlybXdhcmUnLgotcHl0aG9uIGFwcGVuZF90YXJnZXRfcHJvdmlkZXMgKCkgewotICAgIGQuYXBwZW5kVmFyKCJQUk9WSURFUyIsICIgdmlydHVhbC9wbXUtZmlybXdhcmUiKQotfQotYWRkaGFuZGxlciBhcHBlbmRfdGFyZ2V0X3Byb3ZpZGVzCi1hcHBlbmRfdGFyZ2V0X3Byb3ZpZGVzW2V2ZW50bWFza10gPSAiYmIuZXZlbnQuUmVjaXBlUGFyc2VkIgotCi0jIFRoaXMgc291cmNlIGxpbmtzIGluIGEgbnVtYmVyIG9mIGNvbXBvbmVudHMgd2l0aCBkaWZmZXJpbmcgbGljZW5zZXMsIGFuZCBzb21lCi0jIGxpY2Vuc2VzIGFyZSBub3QgT3BlbiBTb3VyY2UgY29tcGF0aWJsZS4gQWRkaXRpb25hbGx5IHRoZSBwbXUtZmlybXdhcmUgc291cmNlCi0jIGl0c2VsZiBpcyBsaWNlbnNlZCB1bmRlciBhIG1vZGlmaWVkIE1JVCBsaWNlbnNlIHdoaWNoIHJlc3RyaWN0cyB1c2UgdG8gWGlsaW54Ci0jIGRldmljZXMgb25seS4KLUxJQ0VOU0UgPSAiUHJvcHJpZXRhcnkiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi8uLi8uLi8uLi9saWNlbnNlLnR4dDttZDU9MDQ4NDFjNWFkODQwOWI0NzRkYTcxODBkZTUzOTE5MjYiCi0KLWluaGVyaXQgZGVwbG95Ci0KLVhJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMSIKLVNSQ1JFViA9ICJhYWE1NjZiYzNmYTE5MjU1ZGU0ZDQzNGViZmE1N2FlM2E5ZDI2MWIyIgotUFYgPSAiJHtYSUxJTlhfUkVMRUFTRV9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1hpbGlueC9lbWJlZGRlZHN3LmdpdDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xIgotCi1DT01QQVRJQkxFX0hPU1QgPSAibWljcm9ibGF6ZS4qLWVsZiIKLUNPTVBBVElCTEVfTUFDSElORSA9ICJeJCIKLUNPTVBBVElCTEVfTUFDSElORV96eW5xbXAgPSAienlucW1wIgotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L2xpYi9zd19hcHBzL3p5bnFtcF9wbXVmdy9zcmMiCi0KLSMgVGhlIG1ha2VmaWxlIGRvZXMgbm90IGhhbmRsZSBwYXJhbGxlbGl6YXRpb24KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1kb19jb25maWd1cmUoKSB7Ci0JIyBtYW51YWxseSBkbyB0aGUgY29weV9ic3Agc3RlcCBmaXJzdCwgc28gYXMgdG8gYmUgYWJsZSB0byBmaXggdXAgdXNlIG9mCi0JIyBtYi0qIGNvbW1hbmRzCi0JJHtTfS8uLi9taXNjL2NvcHlfYnNwLnNoCi19Ci0KLUNPTVBJTEVSID0gIiR7Q0N9IgotQ09NUElMRVJfRkxBR1MgPSAiLU8yIC1jIgotRVhUUkFfQ09NUElMRVJfRkxBR1MgPSAiLWcgLVdhbGwgLVdleHRyYSAtT3MgLWZsdG8gLWZmYXQtbHRvLW9iamVjdHMiCi1BUkNISVZFUiA9ICIke0FSfSIKLQotIyBIQUNLOiBmaXggdGhlIGRpcnR5IGJ1ZyB3aGVyZSB4aWxzZWN1cmUgd2FudHMgdG8gY2FsbCB0aGlzIFBTVmVyc2lvbgotIyBmdW5jdGlvbiwgd2hpY2ggaXMgbm90IGltcGxlbWVudGVkIGZvciBtaWNyb2JsYXplLiBUaGUgc3ltYm9scyBuZXZlciBtYWtlIGl0Ci0jIGludG8gdGhlIGZpbmFsIGVsZiBhcyB0aGUgeGlsc2VjdXJlIGZ1bmN0aW9uIHRoYXQgdXNlcyBpdCBpcyBub3QgY2FsbGVkIGluCi0jIHBtdWZ3LgotRVhUUkFfQ09NUElMRVJfRkxBR1NfYXBwZW5kID0gIiAtRFhHZXRQU1ZlcnNpb25fSW5mbz1hdGV4aXQiCi0KLUJTUF9ESVIgPz0gIiR7U30vLi4vbWlzYy96eW5xbXBfcG11ZndfYnNwIgotQlNQX1RBUkdFVFNfRElSID89ICIke0JTUF9ESVJ9L3BzdV9wbXVfMC9saWJzcmMiCi0KLWRlZiBic3BfbWFrZV92YXJzKGQpOgotICAgIHMgPSBbIkNPTVBJTEVSIiwgIkNDIiwgIkNPTVBJTEVSX0ZMQUdTIiwgIkVYVFJBX0NPTVBJTEVSX0ZMQUdTIiwgIkFSQ0hJVkVSIiwgIkFSIiwgIkFTIl0KLSAgICByZXR1cm4gIiAiLmpvaW4oWyJcIiVzPSVzXCIiICUgKHYsIGQuZ2V0VmFyKHYpKSBmb3IgdiBpbiBzXSkKLQotZG9fY29tcGlsZSgpIHsKLQkjIHRoZSBNYWtlZmlsZSBpbiAke1N9Ly4uL21pc2MvTWFrZWZpbGUsIGRvZXMgbm90IGhhbmRsZSBDQywgQVIsIEFTLCBldGMKLQkjIHByb3Blcmx5LiBTbyBkbyBpdHMgam9iIG1hbnVhbGx5LiBQcmVwYXJpbmcgdGhlIGluY2x1ZGVzIGZpcnN0LCB0aGVuIGxpYnMuCi0JZm9yIGkgaW4gJChscyAke0JTUF9UQVJHRVRTX0RJUn0vKi9zcmMvTWFrZWZpbGUpOyBkbwotCQlvZV9ydW5tYWtlIC1DICQoZGlybmFtZSAkaSkgLXMgaW5jbHVkZSAke0Bic3BfbWFrZV92YXJzKGQpfQotCWRvbmUKLQlmb3IgaSBpbiAkKGxzICR7QlNQX1RBUkdFVFNfRElSfS8qL3NyYy9NYWtlZmlsZSk7IGRvCi0JCW9lX3J1bm1ha2UgLUMgJChkaXJuYW1lICRpKSAtcyBsaWJzICR7QGJzcF9tYWtlX3ZhcnMoZCl9Ci0JZG9uZQotCi0JIyAtLWJ1aWxkLWlkPW5vbmUgaXMgcmVxdWlyZWQgZHVlIHRvIGxpbmtlciBzY3JpcHQgbm90IGRlZmluaW5nIGEgbG9jYXRpb24gZm9yIGl0LgotCW9lX3J1bm1ha2UgQ0M9IiR7Q0N9IiBDQ19GTEFHUz0iLU1NRCAtTVAgLVdsLC0tYnVpbGQtaWQ9bm9uZSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQk6Ci19Ci0KLVBNVV9GSVJNV0FSRV9CQVNFX05BTUUgPz0gIiR7QlBOfS0ke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgotUE1VX0ZJUk1XQVJFX0JBU0VfTkFNRVt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCi0KLWRvX2RlcGxveSgpIHsKLQlpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vZXhlY3V0YWJsZS5lbGYgJHtERVBMT1lESVJ9LyR7UE1VX0ZJUk1XQVJFX0JBU0VfTkFNRX0uZWxmCi0JbG4gLXNmICR7UE1VX0ZJUk1XQVJFX0JBU0VfTkFNRX0uZWxmICR7REVQTE9ZRElSfS8ke0JQTn0tJHtNQUNISU5FfS5lbGYKLQlsbiAtc2YgJHtCUE59LSR7TUFDSElORX0uZWxmICR7REVQTE9ZRElSfS9wbXUtJHtNQUNISU5FfS5lbGYKLQkke09CSkNPUFl9IC1PIGJpbmFyeSAke0J9L2V4ZWN1dGFibGUuZWxmICR7Qn0vZXhlY3V0YWJsZS5iaW4KLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9leGVjdXRhYmxlLmJpbiAke0RFUExPWURJUn0vJHtQTVVfRklSTVdBUkVfQkFTRV9OQU1FfS5iaW4KLQlsbiAtc2YgJHtQTVVfRklSTVdBUkVfQkFTRV9OQU1FfS5iaW4gJHtERVBMT1lESVJ9LyR7QlBOfS0ke01BQ0hJTkV9LmJpbgotCWxuIC1zZiAke0JQTn0tJHtNQUNISU5FfS5iaW4gJHtERVBMT1lESVJ9L3BtdS0ke01BQ0hJTkV9LmJpbgotfQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKLQotQkJDTEFTU0VYVEVORCA9ICJ6eW5xbXAtcG11IgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3JlZmVyZW5jZS1kZXNpZ24va2M3MDUtYml0c3RyZWFtXzIwMTguMS5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9yZWZlcmVuY2UtZGVzaWduL2tjNzA1LWJpdHN0cmVhbV8yMDE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNmNhMjAuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3JlZmVyZW5jZS1kZXNpZ24va2M3MDUtYml0c3RyZWFtXzIwMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiS0M3MDUgUHJlLWJ1aWx0IEJpdHN0cmVhbSIKLURFU0NSSVBUSU9OID0gIkEgUHJlLWJ1aWx0IGJpdHN0cmVhbSBmb3IgdGhlIEtDNzA1LCB3aGljaCBpcyBjYXBhYmxlIG9mIGJvb3RpbmcgYSBMaW51eCBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54aWxpbnguY29tIgotU0VDVElPTiA9ICJic3AiCi0KLSMgVGhlIEJTUCBwYWNrYWdlIGRvZXMgbm90IGluY2x1ZGUgYW55IGxpY2Vuc2UgaW5mb3JtYXRpb24uCi1MSUNFTlNFID0gIlByb3ByaWV0YXJ5IgotTElDRU5TRV9GTEFHUyA9ICJ4aWxpbngiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vUHJvcHJpZXRhcnk7bWQ1PTA1NTdmOWQ5MmNmNThmMmNjZGQ1MGY2MmY4YWMwYjI4IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAia2M3MDUtbWljcm9ibGF6ZWVsIgotCi1pbmhlcml0IGRlcGxveQotaW5oZXJpdCB4aWxpbngtZmV0Y2gtcmVzdHJpY3RlZAotCi1CU1BfTkFNRSA9ICJ4aWxpbngta2M3MDUiCi1CU1BfRklMRSA9ICIke0JTUF9OQU1FfS12JHtQVn0tZmluYWwuYnNwIgotU1JDX1VSSSA9ICJodHRwczovL3d3dy54aWxpbnguY29tL21lbWJlci9mb3Jtcy9kb3dubG9hZC94ZWYuaHRtbD9maWxlbmFtZT0ke0JTUF9GSUxFfTtkb3dubG9hZGZpbGVuYW1lPSR7QlNQX0ZJTEV9IgotU1JDX1VSSVttZDVzdW1dID0gIjUzZTVlMGFkODdkMDM4OGZlNWIxMWZhNWZjMDI5Mjg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwMWY5OTRiZDgzNmFkNzhlYmZjOTJhZjZjMTY0NzBiNTMyNTMxMjFjYTMxNzYyZGMxZjc3MGE5ZmYxMWRjMTgiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvYml0c3RyZWFtIgotCi1GSUxFU18ke1BOfSArPSAiL2Jvb3QvZG93bmxvYWQuYml0IgotCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotIyBkZXBzIG5lZWRlZCB0byBleHRyYWN0IGNvbnRlbnQgZnJvbSB0aGUgLmJzcCBmaWxlCi1ERVBFTkRTICs9ICJ0YXItbmF0aXZlIGd6aXAtbmF0aXZlIgotCi1kb19jb21waWxlKCkgewotCSMgRXh0cmFjdCB0aGUgYml0c3RyZWFtIGludG8gd29ya2RpcgotCXRhciAteGYgJHtXT1JLRElSfS8ke0JTUF9GSUxFfSAke0JTUF9OQU1FfS1heGktZnVsbC0ke1BWfS9wcmUtYnVpbHQvbGludXgvaW1hZ2VzL2Rvd25sb2FkLmJpdCAtQyAke1N9Ci0JIyBtb3ZlIHRoZSBiaXQgZmlsZSB0byAke1N9LyBhcyBpdCBpcyBpbiBhIHN1YmRpciBpbiB0aGUgdGFyIGZpbGUKLQlmb3IgaSBpbiAkKGZpbmQgLXR5cGUgZiAtbmFtZSBkb3dubG9hZC5iaXQpOyBkbyBtdiAkaSAke1N9OyBkb25lCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtRCAke1N9L2Rvd25sb2FkLmJpdCAke0R9L2Jvb3QvZG93bmxvYWQuYml0Ci19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAtRCAke1N9L2Rvd25sb2FkLmJpdCAke0RFUExPWURJUn0vZG93bmxvYWQuYml0Ci19Ci0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCi0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC9yZWZlcmVuY2UtZGVzaWduL2tjNzA1LWJpdHN0cmVhbV8yMDE4LjMuYmIgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvcmVmZXJlbmNlLWRlc2lnbi9rYzcwNS1iaXRzdHJlYW1fMjAxOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMmNhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvcmVmZXJlbmNlLWRlc2lnbi9rYzcwNS1iaXRzdHJlYW1fMjAxOC4zLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiS0M3MDUgUHJlLWJ1aWx0IEJpdHN0cmVhbSIKK0RFU0NSSVBUSU9OID0gIkEgUHJlLWJ1aWx0IGJpdHN0cmVhbSBmb3IgdGhlIEtDNzA1LCB3aGljaCBpcyBjYXBhYmxlIG9mIGJvb3RpbmcgYSBMaW51eCBzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54aWxpbnguY29tIgorU0VDVElPTiA9ICJic3AiCisKKyMgVGhlIEJTUCBwYWNrYWdlIGRvZXMgbm90IGluY2x1ZGUgYW55IGxpY2Vuc2UgaW5mb3JtYXRpb24uCitMSUNFTlNFID0gIlByb3ByaWV0YXJ5IgorTElDRU5TRV9GTEFHUyA9ICJ4aWxpbngiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vUHJvcHJpZXRhcnk7bWQ1PTA1NTdmOWQ5MmNmNThmMmNjZGQ1MGY2MmY4YWMwYjI4IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAia2M3MDUtbWljcm9ibGF6ZWVsIgorCitpbmhlcml0IGRlcGxveQoraW5oZXJpdCB4aWxpbngtZmV0Y2gtcmVzdHJpY3RlZAorCitCU1BfTkFNRSA9ICJ4aWxpbngta2M3MDUiCitCU1BfRklMRSA9ICIke0JTUF9OQU1FfS12JHtQVn0tZmluYWwuYnNwIgorU1JDX1VSSSA9ICJodHRwczovL3d3dy54aWxpbnguY29tL21lbWJlci9mb3Jtcy9kb3dubG9hZC94ZWYuaHRtbD9maWxlbmFtZT0ke0JTUF9GSUxFfTtkb3dubG9hZGZpbGVuYW1lPSR7QlNQX0ZJTEV9IgorU1JDX1VSSVttZDVzdW1dID0gIjVjMDM2NWE4YTI2Y2MyN2I0NDE5YWExZDdkZDgyMzUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5MDlhOTFhMzdhOTkyNWVlMmY5NzJjY2IxMGY5ODZhMjZmZjk3ODVjMWE3MWE0ODM1NDVhMTkyNzgzYmY3NzMiCisKK1BST1ZJREVTID0gInZpcnR1YWwvYml0c3RyZWFtIgorCitGSUxFU18ke1BOfSArPSAiL2Jvb3QvZG93bmxvYWQuYml0IgorCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworIyBkZXBzIG5lZWRlZCB0byBleHRyYWN0IGNvbnRlbnQgZnJvbSB0aGUgLmJzcCBmaWxlCitERVBFTkRTICs9ICJ0YXItbmF0aXZlIGd6aXAtbmF0aXZlIgorCitkb19jb21waWxlKCkgeworCSMgRXh0cmFjdCB0aGUgYml0c3RyZWFtIGludG8gd29ya2RpcgorCXRhciAteGYgJHtXT1JLRElSfS8ke0JTUF9GSUxFfSAke0JTUF9OQU1FfS1heGktZnVsbC0ke1BWfS9wcmUtYnVpbHQvbGludXgvaW1hZ2VzL2Rvd25sb2FkLmJpdCAtQyAke1N9CisJIyBtb3ZlIHRoZSBiaXQgZmlsZSB0byAke1N9LyBhcyBpdCBpcyBpbiBhIHN1YmRpciBpbiB0aGUgdGFyIGZpbGUKKwlmb3IgaSBpbiAkKGZpbmQgLXR5cGUgZiAtbmFtZSBkb3dubG9hZC5iaXQpOyBkbyBtdiAkaSAke1N9OyBkb25lCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRCAke1N9L2Rvd25sb2FkLmJpdCAke0R9L2Jvb3QvZG93bmxvYWQuYml0Cit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAtRCAke1N9L2Rvd25sb2FkLmJpdCAke0RFUExPWURJUn0vZG93bmxvYWQuYml0Cit9CisKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCisKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXNwbC16eW5xLWluaXQuaW5jIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3Qtc3BsLXp5bnEtaW5pdC5pbmMKaW5kZXggOWNmMDlmZi4uY2Y4YjliNyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3Qtc3BsLXp5bnEtaW5pdC5pbmMKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3Qtc3BsLXp5bnEtaW5pdC5pbmMKQEAgLTY0LDEwICs2NCw4IEBACiAgICAgICAgIGQuc2V0VmFyKCJTUExfQklOQVJZIiwgIiIpCiAKICAgICBpZiBwcm92aWRlc2JpbiBhbmQgZC5nZXRWYXIoIlNPQ19GQU1JTFkiKSBpbiBbInp5bnFtcCJdOgotICAgICAgICAjIGRlcGVuZCBvbiB0aGUgcG11LWZpcm13YXJlIGJ1aWxkCi0gICAgICAgIGQuYXBwZW5kVmFyKCJERVBFTkRTIiwgIiB2aXJ0dWFsL3BtdS1maXJtd2FyZSIpCiAgICAgICAgICMgZGV0ZXJtaW5lIHRoZSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICByZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKGQuZXhwYW5kKCIke0RFUExPWV9ESVJfSU1BR0V9L3BtdS0ke01BQ0hJTkV9LmJpbiIpLCBkLmdldFZhcigiUyIpKQorICAgICAgICByZWxwYXRoID0gb3MucGF0aC5yZWxwYXRoKGQuZXhwYW5kKCIke1BNVV9GSVJNV0FSRV9ERVBMT1lfRElSfS8ke1BNVV9GSVJNV0FSRV9JTUFHRV9OQU1FfS5iaW4iKSwgZC5nZXRWYXIoIlMiKSkKICAgICAgICAgIyBzZXR1cCBQTVUgRmlybXdhcmUgcGF0aCB2aWEgTUFLRUZMQUdTCiAgICAgICAgIGQuYXBwZW5kVmFyKCJFWFRSQV9PRU1BS0UiLCAiIENPTkZJR19QTVVGV19JTklUX0ZJTEU9XCJ7MH1cIiIuZm9ybWF0KHJlbHBhdGgpKQogfQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QteGxueC92MjAxOC4xL21pY3JvYmxhemUta2M3MDUtQ29udmVydC1taWNyb2JsYXplLWdlbmVyaWMtdG8tay5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbngvdjIwMTguMy9taWNyb2JsYXplLWtjNzA1LUNvbnZlcnQtbWljcm9ibGF6ZS1nZW5lcmljLXRvLWsucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbngvdjIwMTguMS9taWNyb2JsYXplLWtjNzA1LUNvbnZlcnQtbWljcm9ibGF6ZS1nZW5lcmljLXRvLWsucGF0Y2gKcmVuYW1lIHRvIG1ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbngvdjIwMTguMy9taWNyb2JsYXplLWtjNzA1LUNvbnZlcnQtbWljcm9ibGF6ZS1nZW5lcmljLXRvLWsucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbnhfMjAxOC4xLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QteGxueF8yMDE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMmM2MTguLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QteGxueF8yMDE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1VQk9PVF9WRVJTSU9OID0gInYyMDE4LjAxIgotWElMSU5YX1JFTEVBU0VfVkVSU0lPTiA9ICJ2MjAxOC4xIgotCi1VQlJBTkNIID89ICJtYXN0ZXIiCi0KLVNSQ1JFViA/PSAiOTQ5ZTVjYjlhNzM2YmFjMzJlYTg4ODZlMzk1M2RhNTViZGQzMDc1NCIKLQotaW5jbHVkZSB1LWJvb3QteGxueC5pbmMKLWluY2x1ZGUgdS1ib290LXNwbC16eW5xLWluaXQuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2tjNzA1LW1pY3JvYmxhemVlbCA9ICIgZmlsZTovL21pY3JvYmxhemUta2M3MDUtQ29udmVydC1taWNyb2JsYXplLWdlbmVyaWMtdG8tay5wYXRjaCIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE7ZW5kbGluZT02O21kNT0xNTdhYjg0MDhiZWFiNDBjZDhjZTFkYzY5ZjcwMmE2YyIKLQotIyB1LWJvb3QteGxueCBoYXMgc3VwcG9ydCBmb3IgdGhlc2UKLUhBU19QTEFURk9STV9JTklUID89ICIgXAotCQl6eW5xX21pY3JvemVkX2NvbmZpZyBcCi0JCXp5bnFfemVkX2NvbmZpZyBcCi0JCXp5bnFfemM3MDJfY29uZmlnIFwKLQkJenlucV96YzcwNl9jb25maWcgXAotCQl6eW5xX3p5Ym9fY29uZmlnIFwKLQkJeGlsaW54X3p5bnFtcF96Y3UxMDJfcmV2MV8wX2NvbmZpZyBcCi0JCXhpbGlueF96eW5xbXBfemN1MTA2X3JldkFfY29uZmlnIFwKLQkJeGlsaW54X3p5bnFtcF96Y3UxMDRfcmV2Q19jb25maWcgXAotCQkiCi0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbnhfMjAxOC4zLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QteGxueF8yMDE4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg3NjcyZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXhsbnhfMjAxOC4zLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1VCT09UX1ZFUlNJT04gPSAidjIwMTguMDEiCitYSUxJTlhfUkVMRUFTRV9WRVJTSU9OID0gInYyMDE4LjMiCisKK1VCUkFOQ0ggPz0gIm1hc3RlciIKKworU1JDUkVWID89ICJkOGZjNGIzYjcwYmNjZjE1NzdkYWI2OWY2ZGRmZDRhZGE5YTkzYmFjIgorCitpbmNsdWRlIHUtYm9vdC14bG54LmluYworaW5jbHVkZSB1LWJvb3Qtc3BsLXp5bnEtaW5pdC5pbmMKKworU1JDX1VSSV9hcHBlbmRfa2M3MDUtbWljcm9ibGF6ZWVsID0gIiBmaWxlOi8vbWljcm9ibGF6ZS1rYzcwNS1Db252ZXJ0LW1pY3JvYmxhemUtZ2VuZXJpYy10by1rLnBhdGNoIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTtlbmRsaW5lPTY7bWQ1PTE1N2FiODQwOGJlYWI0MGNkOGNlMWRjNjlmNzAyYTZjIgorCisjIHUtYm9vdC14bG54IGhhcyBzdXBwb3J0IGZvciB0aGVzZQorSEFTX1BMQVRGT1JNX0lOSVQgPz0gIiBcCisJCXp5bnFfbWljcm96ZWRfY29uZmlnIFwKKwkJenlucV96ZWRfY29uZmlnIFwKKwkJenlucV96YzcwMl9jb25maWcgXAorCQl6eW5xX3pjNzA2X2NvbmZpZyBcCisJCXp5bnFfenlib19jb25maWcgXAorCQl4aWxpbnhfenlucW1wX3pjdTEwMl9yZXYxXzBfY29uZmlnIFwKKwkJeGlsaW54X3p5bnFtcF96Y3UxMDZfcmV2QV9jb25maWcgXAorCQl4aWxpbnhfenlucW1wX3pjdTEwNF9yZXZDX2NvbmZpZyBcCisJCXhpbGlueF96eW5xbXBfemN1MTAwX3JldkNfY29uZmlnIFwKKwkJeGlsaW54X3p5bnFtcF96Y3UxMTFfcmV2QV9jb25maWcgXAorCQl4aWxpbnhfenlucW1wX3pjMTI3NV9yZXZBX2NvbmZpZyBcCisJCXhpbGlueF96eW5xbXBfemMxMjc1X3JldkJfY29uZmlnIFwKKwkJeGlsaW54X3p5bnFtcF96YzEyNTRfcmV2QV9jb25maWcgXAorCQkiCisKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXp5bnEtdWVudi5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXp5bnEtdWVudi5iYgppbmRleCBmNmMyYTAwLi45NTIwNzdkIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC16eW5xLXVlbnYuYmIKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtenlucS11ZW52LmJiCkBAIC01LDQzICs1LDI4IEBACiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAorcHl0aG9uICgpIHsKKyAgICAjIFRoZSBkZXZpY2UgdHJlZXMgbXVzdCBiZSBwb3B1bGF0ZWQgaW4gdGhlIGRlcGxveSBkaXJlY3RvcnkgdG8gY29ycmVjdGx5CisgICAgIyBkZXRlY3QgdGhlbSBhbmQgdGhlaXIgbmFtZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGlzIHJlY2lwZSBuZWVkcyB0byBkZXBlbmQKKyAgICAjIG9uIHRob3NlIGRlcGxveWFibGVzIGp1c3QgbGlrZSB0aGUgaW1hZ2UgcmVjaXBlIGRvZXMuCisgICAgZGVwbG95ZGVwcyA9IFsidmlydHVhbC9rZXJuZWwiXQorICAgIGZvciBpIGluIChkLmdldFZhcigiTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUkRFUEVORFMiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgaWYgaSAhPSBkLmdldFZhcigiQlBOIik6CisgICAgICAgICAgICBkZXBsb3lkZXBzLmFwcGVuZChpKQorICAgIGZvciBpIGluIChkLmdldFZhcigiRVhUUkFfSU1BR0VERVBFTkRTIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgIGlmIGkgIT0gZC5nZXRWYXIoIkJQTiIpOgorICAgICAgICAgICAgZGVwbG95ZGVwcy5hcHBlbmQoaSkKKworICAgICMgYWRkIGFzIERFUEVORFMgc2luY2UgdGhlIHRhcmdldHMgbWlnaHQgbm90IGhhdmUgZG9fZGVwbG95IHRhc2tzCisgICAgaWYgbGVuKGRlcGxveWRlcHMpICE9IDA6CisgICAgICAgIGQuYXBwZW5kVmFyKCJERVBFTkRTIiwgIiAiICsgIiAiLmpvaW4oZGVwbG95ZGVwcykpCit9CisKIENPTVBBVElCTEVfTUFDSElORSA9ICJeJCIKIENPTVBBVElCTEVfTUFDSElORV96eW5xID0gIi4qIgogQ09NUEFUSUJMRV9NQUNISU5FX3p5bnFtcCA9ICIuKiIKIAotaW5oZXJpdCBkZXBsb3kKLQotZGVmIGJvb3RmaWxlc19iaXRzdHJlYW0oZCk6Ci0gICAgZXhwZWN0ZWRmaWxlcyA9IFsoImJpdHN0cmVhbSIsIFRydWUpXQotICAgIGV4cGVjdGVkZXh0cyA9IFsoIi5iaXQiLCBUcnVlKSwgKCIuYmluIiwgRmFsc2UpXQotICAgICMgc2VhcmNoIGZvciBiaXRzdHJlYW0gcGF0aHMsIHVzZSB0aGUgcmVuYW1lZCBmaWxlLiBGaXJzdCBtYXRjaGluZyBpcyB1c2VkCi0gICAgZm9yIGYgaW4gKGQuZ2V0VmFyKCJJTUFHRV9CT09UX0ZJTEVTIikgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgIHNmLCByZiA9IGYsIGYKLSAgICAgICAgaWYgJzsnIGluIGY6Ci0gICAgICAgICAgICBzZiwgcmYgPSBmLnNwbGl0KCc7JykKLQotICAgICAgICAjIHNraXAgYm9vdC5iaW4gYW5kIHUtYm9vdC5iaW4sIGl0IGlzIG5vdCBhIGJpdHN0cmVhbQotICAgICAgICBza2lwID0gWyJib290LmJpbiIsICJ1LWJvb3QuYmluIl0KLSAgICAgICAgaWYgc2YgaW4gc2tpcCBvciByZiBpbiBza2lwOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBmb3IgZSwgdCBpbiBleHBlY3RlZGZpbGVzOgotICAgICAgICAgICAgaWYgc2YgPT0gZSBvciByZiA9PSBlOgotICAgICAgICAgICAgICAgIHJldHVybiByZiwgdAotICAgICAgICBmb3IgZSwgdCBpbiBleHBlY3RlZGV4dHM6Ci0gICAgICAgICAgICBpZiBzZi5lbmRzd2l0aChlKSBvciByZi5lbmRzd2l0aChlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gcmYsIHQKLSAgICByZXR1cm4gIiIsIEZhbHNlCi0KLWRlZiBib290ZmlsZXNfZHRiX2ZpbGVwYXRoKGQpOgotICAgIGlmIGQuZ2V0VmFyKCJJTUFHRV9CT09UX0ZJTEVTIik6Ci0gICAgICAgIGR0YnMgPSBkLmdldFZhcigiSU1BR0VfQk9PVF9GSUxFUyIpLnNwbGl0KCIgIikKLSAgICAgICAgIyBJTUFHRV9CT09UX0ZJTEVTIGhhcyBleHRyYSByZW5hbWluZyBpbmZvIGluIHRoZSBmb3JtYXQgJzxzb3VyY2U+Ozx0YXJnZXQ+JwotICAgICAgICBkdGJzID0gW2Yuc3BsaXQoIjsiKVswXSBmb3IgZiBpbiBkdGJzXQotICAgICAgICBkdGJzID0gW2YgZm9yIGYgaW4gZHRicyBpZiBmLmVuZHN3aXRoKCIuZHRiIildCi0gICAgICAgIGlmIGxlbihkdGJzKSAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIGR0YnNbMF0KLSAgICByZXR1cm4gIiIKK2luaGVyaXQgZGVwbG95IGltYWdlLXdpYy11dGlscwogCiBkZWYgdWJvb3RfYm9vdF9jbWQoZCk6CiAgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9JTUFHRVRZUEUiKSBpbiBbInVJbWFnZSIsICJmaXRJbWFnZSJdOgpAQCAtNjEsNyArNDYsNyBAQAogICAgIGVudlsia2VybmVsX2ltYWdlIl0gPSBkLmdldFZhcigiS0VSTkVMX0lNQUdFVFlQRSIpCiAgICAgZW52WyJrZXJuZWxfbG9hZF9hZGRyZXNzIl0gPSBkLmdldFZhcigiS0VSTkVMX0xPQURfQUREUkVTUyIpCiAKLSAgICBlbnZbImRldmljZXRyZWVfaW1hZ2UiXSA9IGJvb3RmaWxlc19kdGJfZmlsZXBhdGgoZCkKKyAgICBlbnZbImRldmljZXRyZWVfaW1hZ2UiXSA9IGJvb3RfZmlsZXNfZHRiX2ZpbGVwYXRoKGQpCiAgICAgZW52WyJkZXZpY2V0cmVlX2xvYWRfYWRkcmVzcyJdID0gZC5nZXRWYXIoIkRFVklDRVRSRUVfTE9BRF9BRERSRVNTIikKIAogICAgIGVudlsiYm9vdGFyZ3MiXSA9IGQuZ2V0VmFyKCJLRVJORUxfQk9PVEFSR1MiKQpAQCAtNzMsNyArNTgsNyBAQAogICAgICMgZGVmYXVsdCB1ZW52Y21kIGRvZXMgbm90IGxvYWQgYml0c3RyZWFtCiAgICAgZW52WyJ1ZW52Y21kIl0gPSAicnVuIGJvb3RrZXJuZWwiCiAKLSAgICBiaXRzdHJlYW0sIGJpdHN0cmVhbXR5cGUgPSBib290ZmlsZXNfYml0c3RyZWFtKGQpCisgICAgYml0c3RyZWFtLCBiaXRzdHJlYW10eXBlID0gYm9vdF9maWxlc19iaXRzdHJlYW0oZCkKICAgICBpZiBiaXRzdHJlYW06CiAgICAgICAgIGVudlsiYml0c3RyZWFtX2ltYWdlIl0gPSBiaXRzdHJlYW0KICAgICAgICAgZW52WyJiaXRzdHJlYW1fbG9hZF9hZGRyZXNzIl0gPSAiMHgxMDAwMDAiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjAuMC5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmY0YTI2Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi1yZXF1aXJlIG5ld2xpYi5pbmMKLQotREVQRU5EUyArPSAibmV3bGliIgotCi1kb19jb25maWd1cmUoKSB7Ci0JJHtTfS9saWJnbG9zcy9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIGluc3RhbGwgZG9lc24ndCBjcmVhdGUgdGhpcyBpdHNlbGYsIGF2b2lkIGluc3RhbGwgZXJyb3IKLQlpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9saWIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZlIGxpYnMgdG8gZGVmYXVsdCBkaXJlY3RvcmllcyBzbyB0aGV5IGNhbiBiZSBwaWNrZWQgdXAgbGF0ZXIKLQltdiAtdiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliICR7RH0ke2xpYmRpcn0KLQotCSMgUmVtb3ZlIG9yaWdpbmFsIGRpcmVjdG9yeQotCXJtZGlyICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQotfQotCi0jIFNwbGl0IHBhY2thZ2VzIGNvcnJlY3RseQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkICR7bGliZGlyfS8qLnNwZWNzIgotCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YWQ2YmUuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYworKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLVNVTU1BUlkgPSAiTmV3bGliIGlzIGEgQyBsaWJyYXJ5IGludGVuZGVkIGZvciB1c2Ugb24gZW1iZWRkZWQgc3lzdGVtcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvbmV3bGliLyIKLURFU0NSSVBUSU9OID0gIkl0IGlzIGEgY29uZ2xvbWVyYXRpb24gb2Ygc2V2ZXJhbCBsaWJyYXJ5IHBhcnRzLCBhbGwgdW5kZXIgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlcyB0aGF0IG1ha2UgdGhlbSBlYXNpbHkgdXNhYmxlIG9uIGVtYmVkZGVkIHByb2R1Y3RzLiIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotCQlmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotCQlmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0JCWZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NzNmNWM5ODc3OWFlYTdkYmE0YTZjOTRhNzRhYjBhZTIgXAotCQlmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLQkJZmlsZTovL0NPUFlJTkcuTkVXTElCO21kNT05NTZhNGIxNDg3Zjc2NzdjZGNjZWVlZThmMDVhMjFmMCBcCi0JCWZpbGU6Ly9uZXdsaWIvbGliYy9wb3NpeC9DT1BZUklHSFQ7bWQ1PTEwMzQ2OGZmMTk4MmJlODQwZmRmNGVlOWY4YjUxYmJmIFwKLQkJZmlsZTovL25ld2xpYi9saWJjL3N5cy9saW51eC9saW51eHRocmVhZHMvTElDRU5TRTttZDU9NzM2NDAyMDdmYmM3OWIxOThjN2ZmZDRhZDRkOTdhYTAgXAotCQkiCi0KLVNSQ19VUkkgPSAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL25ld2xpYi9uZXdsaWItJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjgxZWM4NzMxMDhiODU5M2M1ODZmOTFjYTY1OTYzOTUyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4NTY2MzM1ZWU3NGU1ZmNhZWI4NTk1YjRlYmQwNDAwYzRiMDQzZDZhY2IzMjYzZWNiMTMxNGY4ZjU1MDEzMzIiCi0KLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1ERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIgotCi1QQVRIX3ByZXBlbmQgPSAiJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LiR7U1RBR0lOR0NDfToiCi1TVEFHSU5HQ0MgPSAiJHtNTFBSRUZJWH1nY2MtY3Jvc3MtaW5pdGlhbC0ke1RBUkdFVF9BUkNIfSIKLQotUyA9ICIke1dPUktESVJ9L25ld2xpYi0ke1BWfSIKLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLQotIyBEaXNhYmxlIHVzZSBvZiBhIGxpbmsgaGFzaCBzdHlsZQotVEFSR0VUX0xJTktfSEFTSF9TVFlMRV9taWNyb2JsYXplID0gIiIKLQotIyBkaXNhYmxlIHN0ZGxpYgotVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAtbm9zdGRsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0tYnVpbGQ9JHtCVUlMRF9TWVN9ICBcCi0gICAgICAgICAgICAgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCi0JCS0taG9zdD0ke0hPU1RfU1lTfSBcCi0gICAgICAgICAgICAgICAgLS1wcmVmaXg9JHtwcmVmaXh9ICBcCi0gICAgICAgICAgICAgICAgLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fSBcCi0gICAgICAgICAgICAgICAgLS1iaW5kaXI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9IFwKLQkJLS1lbmFibGUtbGFuZ3VhZ2VzPWMgXAotCQktLXdpdGgtbmV3bGliIFwKLQkJLS13aXRoLWdudS1hcyBcCi0JCS0td2l0aC1nbnUtbGQgXAotCQktLWRpc2FibGUtbXVsdGlsaWIgXAotCQkiCi0KLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JyR7RH0nCi19Ci0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjAuMC5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QzMTM1MC4uMDAwMDAwMAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIG5ld2xpYi5pbmMKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbWljcm9ibGF6ZSgpIHsKLQkjIGhhY2sgZm9yIG1pY3JvYmxhemUsIHdoaWNoIG5lZWRzIHhpbGlueC5sZCB0byBsaXRlcmFsbHkgZG8gYW55IGxpbmtpbmcgKGl0cyBoYXJkIGNvZGVkIGluIGl0cyBMSU5LX1NQRUMpCi0JZXhwb3J0IENDPSIke0NDfSAtTCR7U30vbGliZ2xvc3MvbWljcm9ibGF6ZSIKLX0KLQotZG9fY29uZmlndXJlKCkgewotCSR7U30vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgaW5jbHVkZSBmaWxlcyBhbmQgbGlicyB0byBkZWZhdWx0IGRpcmVjdG9yaWVzIHNvIHRoZXkgY2FuIGJlIHBpY2tlZCB1cCBsYXRlcgotCW12IC12ICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9saWIgJHtEfSR7bGliZGlyfQotCW12IC12ICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9pbmNsdWRlICR7RH0ke2luY2x1ZGVkaXJ9Ci0KLQkjIFJlbW92ZSBvcmlnaW5hbCBkaXJlY3RvcnkKLQlybWRpciAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KLX0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvZmlsZXMvbWVtZmQucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1kZXZ0b29scy9xZW11L2ZpbGVzL21lbWZkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmU4ZDM4Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvZmlsZXMvbWVtZmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDc1ZTViNzBlNmI1ZGNjNGYyMjE5OTkyZDdjZmZhNDYyYWE0MDZhZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyOCBOb3YgMjAxNyAxMTo1MToyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBtZW1mZDogZml4IGNvbmZpZ3VyZSB0ZXN0Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVJlY2VudCBnbGliYyBhZGRlZCBtZW1mZF9jcmVhdGUgaW4gc3lzL21tYW4uaC4gIFRoaXMgY29uZmxpY3RzIHdpdGgKLXRoZSBkZWZpbml0aW9uIGluIHV0aWwvbWVtZmQuYzoKLQotICAgIC9idWlsZGRpci9idWlsZC9CVUlMRC9xZW11LTIuMTEuMC1yYzEvdXRpbC9tZW1mZC5jOjQwOjEyOiBlcnJvcjogc3RhdGljIGRlY2xhcmF0aW9uIG9mIG1lbWZkX2NyZWF0ZSBmb2xsb3dzIG5vbi1zdGF0aWMgZGVjbGFyYXRpb24KLQotRml4IHRoZSBjb25maWd1cmUgdGVzdCwgYW5kIHJlbW92ZSB0aGUgc3lzL21lbWZkLmggaW5jbHVzaW9uIHNpbmNlIHRoZQotZmlsZSBhY3R1YWxseSBkb2VzIG5vdCBleGlzdC0tLWl0IGlzIGEgdHlwbyBpbiB0aGUgbWVtZmRfY3JlYXRlKDIpIG1hbgotcGFnZS4KLQotQ2M6IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLS0tLQotIGNvbmZpZ3VyZSAgICB8IDIgKy0KLSB1dGlsL21lbWZkLmMgfCA0ICstLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOWM4YWE1YTk4Yi4uOTljY2MxNzI1YSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMzkyMyw3ICszOTIzLDcgQEAgZmkKLSAjIGNoZWNrIGlmIG1lbWZkIGlzIHN1cHBvcnRlZAotIG1lbWZkPW5vCi0gY2F0ID4gJFRNUEMgPDwgRU9GCi0tI2luY2x1ZGUgPHN5cy9tZW1mZC5oPgotKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgotIAotIGludCBtYWluKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL3V0aWwvbWVtZmQuYyBiL3V0aWwvbWVtZmQuYwotaW5kZXggNDU3MWQxYWJhOC4uNDEyZTk0YTQwNSAxMDA2NDQKLS0tLSBhL3V0aWwvbWVtZmQuYwotKysrIGIvdXRpbC9tZW1mZC5jCi1AQCAtMzEsOSArMzEsNyBAQAotIAotICNpbmNsdWRlICJxZW11L21lbWZkLmgiCi0gCi0tI2lmZGVmIENPTkZJR19NRU1GRAotLSNpbmNsdWRlIDxzeXMvbWVtZmQuaD4KLS0jZWxpZiBkZWZpbmVkIENPTkZJR19MSU5VWAotKyNpZiBkZWZpbmVkIENPTkZJR19MSU5VWCAmJiAhZGVmaW5lZCBDT05GSUdfTUVNRkQKLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotIAotLS0gCi0yLjExLjAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvZmlsZXMvcWVtdS1zeXN0ZW0tYWFyY2g2NC1tdWx0aWFyY2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1kZXZ0b29scy9xZW11L2ZpbGVzL3FlbXUtc3lzdGVtLWFhcmNoNjQtbXVsdGlhcmNoCmluZGV4IDE1MTI0YzEuLjJjOTJjNjggMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvZmlsZXMvcWVtdS1zeXN0ZW0tYWFyY2g2NC1tdWx0aWFyY2gKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9maWxlcy9xZW11LXN5c3RlbS1hYXJjaDY0LW11bHRpYXJjaApAQCAtMSwzMiArMSw1NCBAQAotIyEvYmluL2Jhc2gKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotQklOUEFUSD0kKGRpcm5hbWUgJDApCi1NQUNISU5FX1BBVEg9JChta3RlbXAgLWQpCisjIFhpbGlueCBRRU1VIHdyYXBwZXIgdG8gbGF1bmNoIGJvdGggUE1VIGFuZCBBUFUgaW5zdGFuY2VzIChtdWx0aWFyY2gpCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzaHV0aWwKIAotQVBVX0FSR1M9Ci1QTVVfQVJHUz0KK2JpbnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK21hY2hfcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQogCi13aGlsZSBbICEgLXogIiQxIiBdOyBkbwotCWlmIFsgIiQxIiA9ICItcG11LWFyZ3MiIF07IHRoZW4KLQkJUE1VX0FSR1MrPSIgJDIiCi0JCXNoaWZ0Ci0JZWxzZQotCQlBUFVfQVJHUys9IiAkMSIKLQlmaQotCXNoaWZ0Ci1kb25lCiAKLVBNVV9ST009JChsYXN0PTsgZm9yIGkgaW4gJFBNVV9BUkdTOyBkbyBpZiBbICIkbGFzdCIgPSAiLWtlcm5lbCIgXTsgdGhlbiBlY2hvICIkaSI7IGJyZWFrOyBmaTsgbGFzdD0kaTsgZG9uZSkKLWlmIFsgISAtZSAkUE1VX1JPTSBdOyB0aGVuCi0JZWNobyAiLS0tLS0tIgotCWVjaG8gIkVycm9yOiBNaXNzaW5nIFBNVSBST00gLSAkUE1VX1JPTSIKLQllY2hvICIgICAgU2VlICdtZXRhLXhpbGlueC9SRUFETUUucWVtdS5tZCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYWNjcXVpcmluZyB0aGUgUE1VIFJPTS4iCi0JZWNobyAiLS0tLS0tIgotCWV4aXQgMjU1Ci1maQorIyBTZXBhcmF0ZSBQTVUgYW5kIEFQVSBhcmd1bWVudHMKK0FQVV9hcmdzID0gc3lzLmFyZ3ZbMTpdCitQTVVfYXJncyA9IEFQVV9hcmdzW0FQVV9hcmdzLmluZGV4KCctcG11LWFyZ3MnKSsxXQorQVBVX2FyZ3MucmVtb3ZlKCctcG11LWFyZ3MnKQorQVBVX2FyZ3MucmVtb3ZlKFBNVV9hcmdzKQorUE1VX2FyZ3MgPSBQTVVfYXJncy5zcGxpdCgpCiAKLSMgc3RhcnQgdGhlIFBNVSBpbnN0YW5jZQotJEJJTlBBVEgvcWVtdS1zeXN0ZW0tbWljcm9ibGF6ZWVsICRQTVVfQVJHUyAtbWFjaGluZS1wYXRoICRNQUNISU5FX1BBVEggJgotIyBzdGFydCB0aGUgQVBVIGluc3RhbmNlCi0kQklOUEFUSC9xZW11LXN5c3RlbS1hYXJjaDY0ICRBUFVfQVJHUyAtbWFjaGluZS1wYXRoICRNQUNISU5FX1BBVEgKK1BNVV9yb20gPSBQTVVfYXJnc1tQTVVfYXJncy5pbmRleCgnLWtlcm5lbCcpKzFdCitlcnJvcl9tc2cgPSBOb25lCiAKK2lmIG9zLnBhdGguZXhpc3RzKFBNVV9yb20pOgorCisgICAgIyBXZSBuZWVkIHRvIHN3aXRjaCB0Y3Agc2VyaWFsIGFyZ3VtZW50cyAoaWYgdGhleSBleGlzdCwgZS5nLiBxZW11cnVubmVyKSB0byBnZXQgdGhlIG91dHB1dCBjb3JyZWN0bHkKKyAgICB0Y3Bfc2VyaWFsX3BvcnRzID0gW2kgZm9yIGksIHMgaW4gZW51bWVyYXRlKEFQVV9hcmdzKSBpZiAndGNwOjEyNy4wLjAuMTonIGluIHNdCisKKyAgICAjIFdlIGNhbiBvbmx5IHN3aXRjaCB0aGVzZSBpZiB0aGVyZSBhcmUgZXhhY3RseSB0d28sIG90aGVyd2lzZSB3ZSBjYW4ndCBhc3N1bWUgd2hhdCBpcyBiZWluZyBleGVjdXRlZCBzbyB3ZSBsZWF2ZSBpdCBhcyBpcworICAgIGlmIGxlbih0Y3Bfc2VyaWFsX3BvcnRzKSA9PSAyOgorICAgICAgICBBUFVfYXJnc1t0Y3Bfc2VyaWFsX3BvcnRzWzBdXSxBUFVfYXJnc1t0Y3Bfc2VyaWFsX3BvcnRzWzFdXSA9IEFQVV9hcmdzW3RjcF9zZXJpYWxfcG9ydHNbMV1dLEFQVV9hcmdzW3RjcF9zZXJpYWxfcG9ydHNbMF1dCisKKyAgICBwbXVfY21kID0gIGJpbnBhdGggKyAnL3FlbXUtc3lzdGVtLW1pY3JvYmxhemVlbCAnICsgJyAnLmpvaW4oUE1VX2FyZ3MpICsgJyAtbWFjaGluZS1wYXRoICcgKyBtYWNoX3BhdGgKKyAgICBhcHVfY21kID0gIGJpbnBhdGggKyAnL3FlbXUtc3lzdGVtLWFhcmNoNjQgJyArICcgJy5qb2luKEFQVV9hcmdzKSArICcgLW1hY2hpbmUtcGF0aCAnICsgbWFjaF9wYXRoCisKKyAgICAjIERlYnVnIHByaW50cworICAgIHByaW50KCdcblBNVSBpbnN0YW5jZSBjbWQ6ICVzXG4nICUgcG11X2NtZCkKKyAgICBwcmludCgnQVBVIGluc3RhbmNlIGNtZDogJXNcbicgJSBhcHVfY21kKQorCisKKyAgICAjIEludm9rZSBRRU1VIHBtdSBpbnN0YW5jZQorICAgIHByb2Nlc3NfcG11ID0gc3VicHJvY2Vzcy5Qb3BlbihwbXVfY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorCisgICAgIyBJbnZva2UgUUVNVSBBUFUgaW5zdGFuY2UKKyAgICBwcm9jZXNzX2FwdSA9IHN1YnByb2Nlc3MuUG9wZW4oYXB1X2NtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICBpZiBwcm9jZXNzX2FwdS53YWl0KCk6CisgICAgICAgIGVycm9yX21zZyA9ICdcblFFTVUgQVBVIGluc3RhbmNlIGZhaWxlZDpcbiVzJyAlIHByb2Nlc3NfYXB1LnN0ZGVyci5yZWFkKCkuZGVjb2RlKCkKKworZWxzZToKKyAgICBlcnJvcl9tc2cgPSAnXG5FcnJvcjogTWlzc2luZyBQTVUgUk9NOiAlcycgJSBQTVVfcm9tCisgICAgZXJyb3JfbXNnICs9ICdcblNlZSAibWV0YS14aWxpbngvUkVBRE1FLnFlbXUubWQiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGFjY3F1aXJpbmcgdGhlIFBNVSBST00uXG4nCisKK3NodXRpbC5ybXRyZWUobWFjaF9wYXRoKQorc3lzLmV4aXQoZXJyb3JfbXNnKQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWRldmljZXRyZWVzXzIwMTguMS5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1kZXZpY2V0cmVlc18yMDE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3M2I5ZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWRldmljZXRyZWVzXzIwMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBxZW11LWRldmljZXRyZWVzLmluYwotCi1YSUxJTlhfUkVMRUFTRV9WRVJTSU9OID0gInYyMDE4LjEiCi0KLUJSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID89ICJkNTAxN2Y4MTE5YjY0OTNkOGIyZmNkZmQ1Y2FhNGU4YjE2NTgwODc3IgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWRldmljZXRyZWVzXzIwMTguMy5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1kZXZpY2V0cmVlc18yMDE4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY4ZWRhMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1kZXZpY2V0cmVlc18yMDE4LjMuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIHFlbXUtZGV2aWNldHJlZXMuaW5jCisKK1hJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMyIKKworQlJBTkNIID89ICJtYXN0ZXIiCitTUkNSRVYgPz0gImUzZTQwYjg4Mjk4OTRhNDc5YzdkNzM4MGZjODEzNzg4NjY0NWRkYTgiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUteGlsaW54LmluYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnguaW5jCmluZGV4IGI2YzVkZWUuLmRhZmY1ZmYgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnguaW5jCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnguaW5jCkBAIC0xNyw5ICsxNyw3IEBACiBSRVBPID89ICJnaXQ6Ly9naXRodWIuY29tL1hpbGlueC9xZW11LmdpdDtwcm90b2NvbD1odHRwcyIKIAogQlJBTkNIQVJHID0gIiR7QFsnbm9icmFuY2g9MScsICdicmFuY2g9JHtCUkFOQ0h9J11bZC5nZXRWYXIoJ0JSQU5DSCcsIFRydWUpICE9ICcnXX0iCi1TUkNfVVJJID0gIiR7UkVQT307JHtCUkFOQ0hBUkd9IFwKLQlmaWxlOi8vbWVtZmQucGF0Y2ggXAotCSIKK1NSQ19VUkkgPSAiJHtSRVBPfTske0JSQU5DSEFSR30iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnhfMjAxOC4xLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXhpbGlueF8yMDE4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkNjY5N2MuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXhpbGlueF8yMDE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgcWVtdS14aWxpbnguaW5jCi0KLVhJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMSIKLVhJTElOWF9RRU1VX1ZFUlNJT04gPz0gInYyLjExLjAiCi1CUkFOQ0ggPz0gIm1hc3RlciIKLVNSQ1JFViA/PSAiMWQ1NTE2OTg2ZWEyOTZkOTFhNTk5YWMyMzI1MmUzMDJhNDAwMzkxNCIKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnhfMjAxOC4zLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXhpbGlueF8yMDE4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1NDdkZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS14aWxpbnhfMjAxOC4zLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBxZW11LXhpbGlueC5pbmMKKworWElMSU5YX1JFTEVBU0VfVkVSU0lPTiA9ICJ2MjAxOC4zIgorWElMSU5YX1FFTVVfVkVSU0lPTiA/PSAidjIuMTEuMCIKK0JSQU5DSCA/PSAibWFzdGVyIgorU1JDUkVWID89ICJmNzBiZDg2ODU5YzdhMWEwNzVhYzg2NGI0NzY1MTY4ZjgyMWYxYWFlIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ2xlcy9maWxlcy9nYm0ucGMgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ncmFwaGljcy9saWJnbGVzL2ZpbGVzL2dibS5wYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmVhOTRlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ2xlcy9maWxlcy9nYm0ucGMKQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PS91c3IKK2V4ZWNfcHJlZml4PSR7cHJlZml4fQorbGliZGlyPS91c3IvbGliCitpbmNsdWRlZGlyPS91c3IvaW5jbHVkZQorCitOYW1lOiBnYm0KK0Rlc2NyaXB0aW9uOiBNQUxJIGdibSBsaWJyYXJ5CitSZXF1aXJlcy5wcml2YXRlOgorVmVyc2lvbjogcjhwMAorTGliczogLUwke2xpYmRpcn0gLWxnYm0KK0xpYnMucHJpdmF0ZTogLWxtIC1scHRocmVhZCAtbGRsCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ2xlcy9maWxlcy93YXlsYW5kLWVnbC5wYyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWdyYXBoaWNzL2xpYmdsZXMvZmlsZXMvd2F5bGFuZC1lZ2wucGMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE5ZmIzZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWdyYXBoaWNzL2xpYmdsZXMvZmlsZXMvd2F5bGFuZC1lZ2wucGMKQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PS91c3IKK2V4ZWNfcHJlZml4PSR7cHJlZml4fQorbGliZGlyPS91c3IvbGliCitpbmNsdWRlZGlyPS91c3IvaW5jbHVkZQorCitOYW1lOiB3YXlsYW5kLWVnbAorRGVzY3JpcHRpb246IE1BTEkgd2F5bGFuZC1lZ2wgbGlicmFyeQorUmVxdWlyZXMucHJpdmF0ZToKK1ZlcnNpb246IHI4cDAKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sd2F5bGFuZC1lZ2wKK0xpYnMucHJpdmF0ZTogLWxtIC1scHRocmVhZCAtbGRsCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtZ3JhcGhpY3MvbGliZ2xlcy9saWJtYWxpLXhsbnguYmIgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ncmFwaGljcy9saWJnbGVzL2xpYm1hbGkteGxueC5iYgppbmRleCAzZTY3NWQ5Li44YzZhYjNlIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ncmFwaGljcy9saWJnbGVzL2xpYm1hbGkteGxueC5iYgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1ncmFwaGljcy9saWJnbGVzL2xpYm1hbGkteGxueC5iYgpAQCAtOSw3ICs5LDcgQEAKIAogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJmYmRldiB4MTEiCiAKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCitQUk9WSURFUyArPSAidmlydHVhbC9saWJnbGVzMSB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2JtIgogCiBGSUxFU0VYVFJBUEFUSFNfYXBwZW5kIDo9ICIgXAogICAgICAgICAgICAgICAgICR7VEhJU0RJUn0vZmlsZXM6IFwKQEAgLTI2LDEwICsyNiwxMiBAQAogICAgIGZpbGU6Ly9nbGVzdjFfY20ucGMgXAogICAgIGZpbGU6Ly9nbGVzdjEucGMgXAogICAgIGZpbGU6Ly9nbGVzdjIucGMgXAorICAgIGZpbGU6Ly93YXlsYW5kLWVnbC5wYyBcCisgICAgZmlsZTovL2dibS5wYyBcCiAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc1YjE0N2M4YjRlZTk2NjE2ZTI0NTcyY2RjOWMyMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2IxNzllYzJkZjU0ZWUwNWE4ODZjY2ExNTM1YzBiZGM2Y2JhNzdhNjQ2ZTIyNzQyYWRlZGM3OWJmYzJiMzAxNyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmQzNDU2NTY0ZWY4YzgxOGUyMTQzMjIyMWM5ZTFiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNmQ0NzNhZTc3YzM2MTA0YTIxNTcxMGJlY2E1NWEyMmE3MTI4NTBkYzI2NTQ3ZGRlOTUwYzczOTgyMTA2MDJjIgogCiBDT01QQVRJQkxFX01BQ0hJTkUgPSAiXiQiCiBDT01QQVRJQkxFX01BQ0hJTkVfenlucW1wZWcgPSAienlucW1wZWciCkBAIC01MCwxNCArNTIsMTYgQEAKIAogREVQRU5EUyA9ICJcCiAJJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGxpYmRybScsICcnLCBkKX0gXAogCSIKIAotRUdMX1RZUEUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgIFwKLSAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnZmJkZXYnLCAgJ2ZiZGV2JywgJycsIGQpLCBkKX0iCitVU0VfWDExID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgInllcyIsICJubyIsIGQpfSIKK1VTRV9GQiA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImZiZGV2IiwgInllcyIsICJubyIsIGQpfSIKK1VTRV9XTCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIndheWxhbmQiLCAieWVzIiwgIm5vIiwgZCl9IgogCiBkb19jb21waWxlKCkgewogCSMgRXh0cmFjdCB0aGUgTUFMSSBiaW5hcmllcyBpbnRvIHdvcmtkaXIKLQl0YXIgLXhmICR7V09SS0RJUn0vbWFsaS9yZWwtdjIwMTguMS9yOHAwLTAxcmVsMC50YXIgLUMgJHtTfQorCXRhciAteGYgJHtXT1JLRElSfS9tYWxpL3JlbC12MjAxOC4zL3I4cDAtMDFyZWwwLnRhciAtQyAke1N9CiB9CiAKIGRvX2luc3RhbGwoKSB7CkBAIC03MSwxMyArNzUsMTMgQEAKIAogICAgICMgaW5zdGFsbCBoZWFkZXJzCiAgICAgaW5zdGFsbCAtZCAtbSAwNjU1ICR7RH0ke2luY2x1ZGVkaXJ9L0VHTAotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9LyR7RUdMX1RZUEV9L3Vzci9pbmNsdWRlL0VHTC8qLmggJHtEfSR7aW5jbHVkZWRpcn0vRUdMLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9L2dsZXNIZWFkZXJzL0VHTC8qLmggJHtEfSR7aW5jbHVkZWRpcn0vRUdMLwogICAgIGluc3RhbGwgLWQgLW0gMDY1NSAke0R9JHtpbmNsdWRlZGlyfS9HTEVTCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vJHtQVn0vJHtBUkNIX1BMQVRGT1JNX0RJUn0vJHtFR0xfVFlQRX0vdXNyL2luY2x1ZGUvR0xFUy8qLmggJHtEfSR7aW5jbHVkZWRpcn0vR0xFUy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8ke1BWfS9nbGVzSGVhZGVycy9HTEVTLyouaCAke0R9JHtpbmNsdWRlZGlyfS9HTEVTLwogICAgIGluc3RhbGwgLWQgLW0gMDY1NSAke0R9JHtpbmNsdWRlZGlyfS9HTEVTMgotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9LyR7RUdMX1RZUEV9L3Vzci9pbmNsdWRlL0dMRVMyLyouaCAke0R9JHtpbmNsdWRlZGlyfS9HTEVTMi8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS8ke1BWfS9nbGVzSGVhZGVycy9HTEVTMi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vR0xFUzIvCiAgICAgaW5zdGFsbCAtZCAtbSAwNjU1ICR7RH0ke2luY2x1ZGVkaXJ9L0tIUgotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9LyR7RUdMX1RZUEV9L3Vzci9pbmNsdWRlL0tIUi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vS0hSLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9L2dsZXNIZWFkZXJzL0tIUi8qLmggJHtEfSR7aW5jbHVkZWRpcn0vS0hSLwogCiAgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwogICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2VnbC5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9lZ2wucGMKQEAgLTg2LDcgKzkwLDI2IEBACiAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ2xlc3YxX2NtLnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dsZXN2MV9jbS5wYwogCiAgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgY3AgLWEgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgJHtTfS8ke1BWfS8ke0FSQ0hfUExBVEZPUk1fRElSfS8ke0VHTF9UWVBFfS91c3IvbGliLyouc28qICR7RH0ke2xpYmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisKKyAgICBjcCAtYSAtLW5vLXByZXNlcnZlPW93bmVyc2hpcCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9L2NvbW1vbi8qLnNvKiAke0R9JHtsaWJkaXJ9CisKKyAgICBpZiBbICIke1VTRV9XTH0iID0gInllcyIgXTsgdGhlbgorCWluc3RhbGwgLW0gMDY0NCAke1N9LyR7UFZ9L2dsZXNIZWFkZXJzL0dCTS9nYm0uaCAke0R9JHtpbmNsdWRlZGlyfS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9nYm0ucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ2JtLnBjCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vd2F5bGFuZC1lZ2wucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvd2F5bGFuZC1lZ2wucGMKKwlpbnN0YWxsIC1EbSAwNjQ0ICR7U30vJHtQVn0vJHtBUkNIX1BMQVRGT1JNX0RJUn0vd2F5bGFuZC9saWJNYWxpLnNvLjguMCAke0R9JHtsaWJkaXJ9L3dheWxhbmQvbGliTWFsaS5zby44LjAKKwlsbiAtc25mIHdheWxhbmQvbGliTWFsaS5zby44LjAgJHtEfSR7bGliZGlyfS9saWJNYWxpLnNvLjguMAorICAgIGVsaWYgWyAiJHtVU0VfWDExfSIgPSAieWVzIiBdOyB0aGVuCisJaW5zdGFsbCAtRG0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9L3gxMS9saWJNYWxpLnNvLjguMCAke0R9JHtsaWJkaXJ9L3gxMS9saWJNYWxpLnNvLjguMAorCWxuIC1zbmYgeDExL2xpYk1hbGkuc28uOC4wICR7RH0ke2xpYmRpcn0vbGliTWFsaS5zby44LjAKKyAgICBlbGlmIFsgIiR7VVNFX0ZCfSIgPSAieWVzIiBdOyB0aGVuCisJaW5zdGFsbCAtRG0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9L2ZiZGV2L2xpYk1hbGkuc28uOC4wICR7RH0ke2xpYmRpcn0vZmJkZXYvbGliTWFsaS5zby44LjAKKwlsbiAtc25mIGZiZGV2L2xpYk1hbGkuc28uOC4wICR7RH0ke2xpYmRpcn0vbGliTWFsaS5zby44LjAKKyAgICBlbHNlCisJaW5zdGFsbCAtRG0gMDY0NCAke1N9LyR7UFZ9LyR7QVJDSF9QTEFURk9STV9ESVJ9L2hlYWRsZXNzL2xpYk1hbGkuc28uOC4wICR7RH0ke2xpYmRpcn0vaGVhZGxlc3MvbGliTWFsaS5zby44LjAKKwlsbiAtc25mIGhlYWRsZXNzL2xpYk1hbGkuc28uOC4wICR7RH0ke2xpYmRpcn0vbGliTWFsaS5zby44LjAKKyAgICBmaQogCiAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgogICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmICgxKS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCkBAIC05OSwxMCArMTIyLDExIEBACiBJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKIElOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliZWdsIGxpYmdsZXMxIGxpYmdsZXN2MS1jbTEgbGliZ2xlczIgbGliZ2xlc3YyLTIiCi1SUFJPVklERVNfJHtQTn0gPSAibGliZWdsIGxpYmdsZXMxIGxpYmdsZXN2MS1jbTEgbGliZ2xlczIgbGliZ2xlc3YyLTIiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmVnbCBsaWJnbGVzMSBsaWJnbGVzdjEtY20xIGxpYmdsZXMyIGxpYmdsZXN2Mi0yIgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmVnbCBsaWJnbGVzMSBsaWJnbGVzdjEtY20xIGxpYmdsZXMyIGxpYmdsZXN2Mi0yIGxpYmdibSIKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJlZ2wgbGliZ2xlczEgbGliZ2xlc3YxLWNtMSBsaWJnbGVzMiBsaWJnbGVzdjItMiBsaWJnYm0iCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmVnbCBsaWJnbGVzMSBsaWJnbGVzdjEtY20xIGxpYmdsZXMyIGxpYmdsZXN2Mi0yIGxpYmdibSIKIAogIyBUaGVzZSBsaWJyYXJpZXMgc2hvdWxkbid0IGdldCBpbnN0YWxsZWQgaW4gd29ybGQgYnVpbGRzIHVubGVzcyBzb21ldGhpbmcKICMgZXhwbGljaXRseSBkZXBlbmRzIHVwb24gdGhlbS4KIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnguaW5jIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnguaW5jCmluZGV4IDdiNGY5YWMuLmVjMDU2ZGIgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54LmluYworKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC5pbmMKQEAgLTIzLDYgKzIzLDggQEAKIAlbIC1uICIke0tCVUlMRF9ERUZDT05GSUd9IiBdICYmIFsgLWUgJHtXT1JLRElSfS9kZWZjb25maWcgXSAmJiBybSAke1dPUktESVJ9L2RlZmNvbmZpZwogfQogCitpbmhlcml0IGtlcm5lbC1zaW1wbGVpbWFnZQorCiAjIERlZmF1bHQgdG8gYmUgb25seSBjb21wYXRpYmxlIHdpdGggc3BlY2lmaWMgbWFjaGluZXMgb3Igc29jIGZhbWlsaWVzCiBDT01QQVRJQkxFX01BQ0hJTkUgPz0gIl4kIgogQ09NUEFUSUJMRV9NQUNISU5FX3p5bnEgPSAiLioiCkBAIC00Miw0ICs0NCw3IEBACiAjIE1pY3JvQmxhemUgQlNQIGZyYWdtZW50cwogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9rYzcwNS1taWNyb2JsYXplZWwgPSAiIGJzcC9rYzcwNS1taWNyb2JsYXplZWwva2M3MDUtbWljcm9ibGF6ZWVsLnNjYyIKIAotS0VSTkVMX0ZFQVRVUkVTX3p5bnFtcCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4ZW4nLCAnIGJzcC94aWxpbngveGVuLnNjYycsICcnLCBkKX0iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3p5bnFtcCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hlbicsICcgYnNwL3hpbGlueC94ZW4uc2NjJywgJycsIGQpfSIKKworS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF96eW5xbXAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZFQVRVUkVTJywgJ2ZwZ2EtbWFuYWdlcicsICcgZmVhdHVyZXMvb3ZlcmxheS9vdmVybGF5LnNjYycsICcnLCBkKX0iCisKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54XzIwMTguMS5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54XzIwMTguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNhOGY3Ni4uMDAwMDAwMAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueF8yMDE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUxJTlVYX1ZFUlNJT04gPSAiNC4xNCIKLVhJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMSIKLUtCUkFOQ0ggPz0gInhsbnhfcmViYXNlX3Y0LjE0IgotU1JDUkVWID89ICI0YWM3NmZmYWNiNTQ3MTJiMDM2MWU1MWQwYjcxNTZlNTNkMDYyZTNjIgotCi1pbmNsdWRlIGxpbnV4LXhsbnguaW5jCi0KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54XzIwMTguMy5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54XzIwMTguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGUxM2UzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnhfMjAxOC4zLmJiCkBAIC0wLDAgKzEsNyBAQAorTElOVVhfVkVSU0lPTiA9ICI0LjE0IgorWElMSU5YX1JFTEVBU0VfVkVSU0lPTiA9ICJ2MjAxOC4zIgorS0JSQU5DSCA/PSAieGxueF9yZWJhc2VfdjQuMTQiCitTUkNSRVYgPz0gImVlYWI3M2QxMjA3ZDZmYzIwODI3NzZjOTU0ZWIxOWZkNzI5MGJmYmUiCisKK2luY2x1ZGUgbGludXgteGxueC5pbmMKKwpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L3hpbGlueC1rbWV0YS9mZWF0dXJlcy9vdmVybGF5L292ZXJsYXkuY2ZnIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L3hpbGlueC1rbWV0YS9mZWF0dXJlcy9vdmVybGF5L292ZXJsYXkuY2ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDYyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgveGlsaW54LWttZXRhL2ZlYXR1cmVzL292ZXJsYXkvb3ZlcmxheS5jZmcKQEAgLTAsMCArMSwzIEBACisjIERldmljZSBUcmVlIHN1cHBvcnQKK0NPTkZJR19PRl9DT05GSUdGUz15CitDT05GSUdfT0ZfT1ZFUkxBWT15CmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgveGlsaW54LWttZXRhL2ZlYXR1cmVzL292ZXJsYXkvb3ZlcmxheS5zY2MgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgveGlsaW54LWttZXRhL2ZlYXR1cmVzL292ZXJsYXkvb3ZlcmxheS5zY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRmMDVmZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC94aWxpbngta21ldGEvZmVhdHVyZXMvb3ZlcmxheS9vdmVybGF5LnNjYwpAQCAtMCwwICsxLDQgQEAKK2RlZmluZSBLRkVBVFVSRV9ERVNDUklQVElPTiAiRW5hYmxlIG92ZXJsYXkiCitkZWZpbmUgS0ZFQVRVUkVfQ09NUEFUSUJJTElUWSBib2FyZAorCitrY29uZmlnIGhhcmR3YXJlIG92ZXJsYXkuY2ZnCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzJS5iYmFwcGVuZCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMlLmJiYXBwZW5kCmluZGV4IDc5NWM2NzEuLjQ0NzA5NzIgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMlLmJiYXBwZW5kCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMlLmJiYXBwZW5kCkBAIC0xLDQgKzEsNCBAQAotRklMRVNFWFRSQVBBVEhTX2FwcGVuZF9taWNyb2JsYXplIDo9ICIke1RISVNESVJ9L2JpbnV0aWxzLTIuMzA6IgorRklMRVNFWFRSQVBBVEhTX2FwcGVuZF9taWNyb2JsYXplIDo9ICIke1RISVNESVJ9L2JpbnV0aWxzLTIuMzE6IgogU1JDX1VSSV9hcHBlbmRfbWljcm9ibGF6ZSA9ICIgXAogCQlmaWxlOi8vMDAwMS1NaWNyb0JsYXplLUFkZC13ZGMuZXh0LmNsZWFyLWFuZC13ZGMuZXh0LmZsdXNoLWluc25zLnBhdGNoIFwKIAkJZmlsZTovLzAwMDItTWljcm9CbGF6ZS1hZGQtbWxpdHRsZS1lbmRpYW4tYW5kLW1iaWctZW5kaWFuLWZsYWdzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDAzLURpc2FibGUtdGhlLXdhcm5pbmctbWVzc2FnZS1mb3ItZWhfZnJhbWVfaGRyLnBhdGNoIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMDMtRGlzYWJsZS10aGUtd2FybmluZy1tZXNzYWdlLWZvci1laF9mcmFtZV9oZHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMzBjNDYuLjAwMDAwMDAKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMDMtRGlzYWJsZS10aGUtd2FybmluZy1tZXNzYWdlLWZvci1laF9mcmFtZV9oZHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGRhYzcyZDgwOWJlOWZhZjkzODBiMTgxZGYwYzE5YTJjNmQ3NDRjNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiRWRnYXIgRS4gSWdsZXNpYXMiIDxlZGdhci5pZ2xlc2lhc0BnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE5OjUzOjU0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgdGhlIHdhcm5pbmcgbWVzc2FnZSBmb3IgZWhfZnJhbWVfaGRyCi0KLVNpZ25lZC1vZmYtYnk6IEVkZ2FyIEUuIElnbGVzaWFzIDxlZGdhci5pZ2xlc2lhc0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KLQotLS0tCi0gYmZkL2VsZi1laC1mcmFtZS5jIHwgOSArKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2VsZi1laC1mcmFtZS5jIGIvYmZkL2VsZi1laC1mcmFtZS5jCi1pbmRleCA5NTY5N2M0Li43MDQxMjFkIDEwMDY0NAotLS0tIGEvYmZkL2VsZi1laC1mcmFtZS5jCi0rKysgYi9iZmQvZWxmLWVoLWZyYW1lLmMKLUBAIC0xMDQyLDEwICsxMDQyLDEzIEBAIF9iZmRfZWxmX3BhcnNlX2VoX2ZyYW1lIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotICAgZ290byBzdWNjZXNzOwotIAotICBmcmVlX25vX3RhYmxlOgotLSAgKCppbmZvLT5jYWxsYmFja3MtPmVpbmZvKQotKyAgLyogRklYTUU6IFJlbW92ZSB0aGUgbWljcm9ibGF6ZSBzcGVjaWZpY3Mgd2hlbiByZWxheGluZyBnZXRzIGZpeGVkLiAgKi8KLSsgIGlmIChiZmRfZ2V0X2FyY2goYWJmZCkgIT0gYmZkX2FyY2hfbWljcm9ibGF6ZSkgewotICAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwotLSAgICAoXygiJVA6IGVycm9yIGluICVCKCVBKTsgbm8gLmVoX2ZyYW1lX2hkciB0YWJsZSB3aWxsIGJlIGNyZWF0ZWQuXG4iKSwKLS0gICAgIGFiZmQsIHNlYyk7Ci0rICAgICgqaW5mby0+Y2FsbGJhY2tzLT5laW5mbykKLSsgICAgICAoXygiJVA6IGVycm9yIGluICVCKCVBKTsgbm8gLmVoX2ZyYW1lX2hkciB0YWJsZSB3aWxsIGJlIGNyZWF0ZWQuXG4iKSwKLSsgICAgICAgYWJmZCwgc2VjKTsKLSsgIH0KLSAgIGhkcl9pbmZvLT51LmR3YXJmLnRhYmxlID0gRkFMU0U7Ci0gICBpZiAoc2VjX2luZm8pCi0gICAgIGZyZWUgKHNlY19pbmZvKTsKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA1LUZpeHVwLU1pY3JvQmxhemUtZGVidWdfbG9jLXNlY3Rpb25zLWFmdGVyLWxpbmtlci1yZWwucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwNS1GaXh1cC1NaWNyb0JsYXplLWRlYnVnX2xvYy1zZWN0aW9ucy1hZnRlci1saW5rZXItcmVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE3MjM0Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA1LUZpeHVwLU1pY3JvQmxhemUtZGVidWdfbG9jLXNlY3Rpb25zLWFmdGVyLWxpbmtlci1yZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotRnJvbSA1YmY2OGJjMzk5NzY5MDM5MjlmNzMwYjZlZWQxODY4NmMzNTYzYzA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmFnYXJhanUgTWVrYWxhIDxuYWdhcmFqdS5tZWthbGFAeGlsaW54LmNvbT4KLURhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTk6NTM6NTYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4dXAgTWljcm9CbGF6ZSBkZWJ1Z19sb2Mgc2VjdGlvbnMgYWZ0ZXIgbGlua2VyIHJlbGF4YXRpb24KLQotRml4dXAgZGVidWdfbG9jIHNlY3Rpb25zIGFmdGVyIGxpbmtlciByZWxheGF0aW9uIEFkZHMgYSBuZXcgcmVsb2N0eXBlCi1SX01JQ1JPQkxBWkVfMzJfTk9ORSwgdXNlZCBmb3IgcGFzc2luZyByZWxvYyBpbmZvIGZyb20gdGhlIGFzc2VtYmxlciB0bwotdGhlIGxpbmtlciB3aGVuIHRoZSBsaW5rZXIgbWFuYWdlcyB0byBmdWxseSByZXNvbHZlIGEgbG9jYWwgc3ltYm9sCi1yZWZlcmVuY2UuCi0KLVRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBkZXNpZ24gZmxhd3MgaW4gdGhlIGFzc2VtYmxlciB0bwotbGlua2VyIGludGVyZmFjZSB3aXRoIHJlZ2FyZHMgdG8gbGlua2VyIHJlbGF4YXRpb24uCi0KLTAzLzIwMTgKLVJlYmFzZWQgZm9yIGJpbnV0aWxzIDIuMzAKLQotU2lnbmVkLW9mZi1ieTogRWRnYXIgRS4gSWdsZXNpYXMgPGVkZ2FyLmlnbGVzaWFzQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE5hZ2FyYWp1IE1la2FsYSA8bm1la2FsYUB4aWxpbnguY29tPgotU2lnbmVkLW9mZi1ieTogTWFuanVrdW1hciBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvIDxhbGVqYW5kckB4aWxpbnguY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgICAgICAgfCAgOSArKysrKysrLS0KLSBiZmQvZWxmMzItbWljcm9ibGF6ZS5jICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIGJmZC9saWJiZmQuaCAgICAgICAgICAgICAgIHwgIDEgKwotIGJmZC9yZWxvYy5jICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jICAgICAgICAgfCAgNCArKysrCi0gZ2FzL2NvbmZpZy90Yy1taWNyb2JsYXplLmMgfCAgNSArKysrLQotIGluY2x1ZGUvZWxmL21pY3JvYmxhemUuaCAgIHwgIDEgKwotIDcgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAotaW5kZXggNDIyODYwMy4uMTkwNjE5NSAxMDA2NDQKLS0tLSBhL2JmZC9iZmQtaW4yLmgKLSsrKyBiL2JmZC9iZmQtaW4yLmgKLUBAIC01ODI2LDEwICs1ODI2LDE1IEBAIHZhbHVlIHJlbGF0aXZlIHRvIHRoZSByZWFkLXdyaXRlIHNtYWxsIGRhdGEgYXJlYSBhbmNob3IgICovCi0gZXhwcmVzc2lvbnMgb2YgdGhlIGZvcm0gIlN5bWJvbCBPcCBTeW1ib2wiICAqLwotICAgQkZEX1JFTE9DX01JQ1JPQkxBWkVfMzJfU1lNX09QX1NZTSwKLSAKLS0vKiBUaGlzIGlzIGEgNjQgYml0IHJlbG9jIHRoYXQgc3RvcmVzIHRoZSAzMiBiaXQgcGMgcmVsYXRpdmUKLSsvKiBUaGlzIGlzIGEgMzIgYml0IHJlbG9jIHRoYXQgc3RvcmVzIHRoZSAzMiBiaXQgcGMgcmVsYXRpdmUKLSB2YWx1ZSBpbiB0d28gd29yZHMgKHdpdGggYW4gaW1tIGluc3RydWN0aW9uKS4gIE5vIHJlbG9jYXRpb24gaXMKLSBkb25lIGhlcmUgLSBvbmx5IHVzZWQgZm9yIHJlbGF4aW5nICAqLwotLSAgQkZEX1JFTE9DX01JQ1JPQkxBWkVfNjRfTk9ORSwKLSsgIEJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX05PTkUsCi0rCi0rLyogVGhpcyBpcyBhIDY0IGJpdCByZWxvYyB0aGF0IHN0b3JlcyB0aGUgMzIgYml0IHBjIHJlbGF0aXZlCi0rICogICt2YWx1ZSBpbiB0d28gd29yZHMgKHdpdGggYW4gaW1tIGluc3RydWN0aW9uKS4gIE5vIHJlbG9jYXRpb24gaXMKLSsgKiAgICtkb25lIGhlcmUgLSBvbmx5IHVzZWQgZm9yIHJlbGF4aW5nICAqLwotKyAgICBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FLAotIAotIC8qIFRoaXMgaXMgYSA2NCBiaXQgcmVsb2MgdGhhdCBzdG9yZXMgdGhlIDMyIGJpdCBwYyByZWxhdGl2ZQotIHZhbHVlIGluIHR3byB3b3JkcyAod2l0aCBhbiBpbW0gaW5zdHJ1Y3Rpb24pLiAgVGhlIHJlbG9jYXRpb24gaXMKLWRpZmYgLS1naXQgYS9iZmQvZWxmMzItbWljcm9ibGF6ZS5jIGIvYmZkL2VsZjMyLW1pY3JvYmxhemUuYwotaW5kZXggYTFkODEwYy4uZmMwZDNlMSAxMDA2NDQKLS0tLSBhL2JmZC9lbGYzMi1taWNyb2JsYXplLmMKLSsrKyBiL2JmZC9lbGYzMi1taWNyb2JsYXplLmMKLUBAIC0xNzYsNiArMTc2LDIwIEBAIHN0YXRpYyByZWxvY19ob3d0b190eXBlIG1pY3JvYmxhemVfZWxmX2hvd3RvX3Jhd1tdID0KLSAJICAweDAwMDBmZmZmLAkJLyogRGVzdCBNYXNrLiAgKi8KLSAJICBGQUxTRSksCQkvKiBQQyByZWxhdGl2ZSBvZmZzZXQ/ICAqLwotIAotKyAgIEhPV1RPIChSX01JQ1JPQkxBWkVfMzJfTk9ORSwgICAvKiBUeXBlLiAgKi8KLSsgICAgICAgICAgMCwgICAgICAgICAvKiBSaWdodHNoaWZ0LiAgKi8KLSsgICAgICAgICAgMiwgICAgICAgICAgICAvKiBTaXplICgwID0gYnl0ZSwgMSA9IHNob3J0LCAyID0gbG9uZykuICAqLwotKyAgICAgICAgICAzMiwgICAgICAgICAgIC8qIEJpdHNpemUuICAqLwotKyAgICAgICAgICBUUlVFLCAgICAgICAgIC8qIFBDX3JlbGF0aXZlLiAgKi8KLSsgICAgICAgICAgMCwgICAgICAgICAgIC8qIEJpdHBvcy4gICovCi0rICAgICAgICAgIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkLCAgLyogQ29tcGxhaW4gb24gb3ZlcmZsb3cuICAqLwotKyAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIFNwZWNpYWwgRnVuY3Rpb24uICAqLwotKyAgICAgICAgICAiUl9NSUNST0JMQVpFXzMyX05PTkUiLC8qIE5hbWUuICAqLwotKyAgICAgICAgICBGQUxTRSwgICAgICAgLyogUGFydGlhbCBJbnBsYWNlLiAgKi8KLSsgICAgICAgICAgMCwgICAgICAgICAgLyogU291cmNlIE1hc2suICAqLwotKyAgICAgICAgICAwLCAgICAgICAgIC8qIERlc3QgTWFzay4gICovCi0rICAgICAgICAgIEZBTFNFKSwgICAgICAgLyogUEMgcmVsYXRpdmUgb2Zmc2V0PyAgKi8KLSsKLSAgICAvKiBUaGlzIHJlbG9jIGRvZXMgbm90aGluZy4JVXNlZCBmb3IgcmVsYXhhdGlvbi4gICovCi0gICAgSE9XVE8gKFJfTUlDUk9CTEFaRV82NF9OT05FLAkvKiBUeXBlLiAgKi8KLSAJICAwLAkJCS8qIFJpZ2h0c2hpZnQuICAqLwotQEAgLTUzMiw2ICs1NDYsOSBAQCBtaWNyb2JsYXplX2VsZl9yZWxvY190eXBlX2xvb2t1cCAoYmZkICogYWJmZCBBVFRSSUJVVEVfVU5VU0VELAotICAgICBjYXNlIEJGRF9SRUxPQ19OT05FOgotICAgICAgIG1pY3JvYmxhemVfcmVsb2MgPSBSX01JQ1JPQkxBWkVfTk9ORTsKLSAgICAgICBicmVhazsKLSsgICAgY2FzZSBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FOgotKyAgICAgIG1pY3JvYmxhemVfcmVsb2MgPSBSX01JQ1JPQkxBWkVfMzJfTk9ORTsKLSsgICAgICBicmVhazsKLSAgICAgY2FzZSBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FOgotICAgICAgIG1pY3JvYmxhemVfcmVsb2MgPSBSX01JQ1JPQkxBWkVfNjRfTk9ORTsKLSAgICAgICBicmVhazsKLUBAIC0xODMyLDE0ICsxODQ5LDIzIEBAIG1pY3JvYmxhemVfZWxmX3JlbGF4X3NlY3Rpb24gKGJmZCAqYWJmZCwKLSAJCX0KLSAJICAgICAgYnJlYWs7Ci0gCSAgICBjYXNlIFJfTUlDUk9CTEFaRV9OT05FOgotKyAgICAgICAgICAgIGNhc2UgUl9NSUNST0JMQVpFXzMyX05PTkU6Ci0gCSAgICAgIHsKLSAJCS8qIFRoaXMgd2FzIGEgUEMtcmVsYXRpdmUgaW5zdHJ1Y3Rpb24gdGhhdCB3YXMKLSAJCSAgIGNvbXBsZXRlbHkgcmVzb2x2ZWQuICAqLwotIAkJaW50IHNmaXgsIGVmaXg7Ci0rICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbDsKLSAJCWJmZF92bWEgdGFyZ2V0X2FkZHJlc3M7Ci0gCQl0YXJnZXRfYWRkcmVzcyA9IGlyZWwtPnJfYWRkZW5kICsgaXJlbC0+cl9vZmZzZXQ7Ci0gCQlzZml4ID0gY2FsY19maXh1cCAoaXJlbC0+cl9vZmZzZXQsIDAsIHNlYyk7Ci0gCQllZml4ID0gY2FsY19maXh1cCAodGFyZ2V0X2FkZHJlc3MsIDAsIHNlYyk7Ci0rCi0rICAgICAgICAgICAgLyogVmFsaWRhdGUgdGhlIGluLWJhbmQgdmFsLiAgKi8KLSsgICAgICAgICAgICB2YWwgPSBiZmRfZ2V0XzMyIChhYmZkLCBjb250ZW50cyArIGlyZWwtPnJfb2Zmc2V0KTsKLSsgICAgICAgICAgICBpZiAodmFsICE9IGlyZWwtPnJfYWRkZW5kICYmIEVMRjMyX1JfVFlQRSAoaXJlbC0+cl9pbmZvKSA9PSBSX01JQ1JPQkxBWkVfMzJfTk9ORSkgewotKyAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWQ6IENPUlJVUFQgcmVsYXggcmVsb2MgJXggJWx4XG4iLCBfX0xJTkVfXywgdmFsLCBpcmVsLT5yX2FkZGVuZCk7Ci0rICAgICAgICAgICAgfQotKwotIAkJaXJlbC0+cl9hZGRlbmQgLT0gKGVmaXggLSBzZml4KTsKLSAJCS8qIFNob3VsZCB1c2UgSE9XVE8uICAqLwotIAkJbWljcm9ibGF6ZV9iZmRfd3JpdGVfaW1tX3ZhbHVlXzMyIChhYmZkLCBjb250ZW50cyArIGlyZWwtPnJfb2Zmc2V0LAotQEAgLTE4ODcsMTIgKzE5MTMsMTYgQEAgbWljcm9ibGF6ZV9lbGZfcmVsYXhfc2VjdGlvbiAoYmZkICphYmZkLAotIAkgIGlyZWxzY2FuZW5kID0gaXJlbG9jcyArIG8tPnJlbG9jX2NvdW50OwotIAkgIGZvciAoaXJlbHNjYW4gPSBpcmVsb2NzOyBpcmVsc2NhbiA8IGlyZWxzY2FuZW5kOyBpcmVsc2NhbisrKQotIAkgICAgewotLSAgICAgICAgICAgICAgaWYgKEVMRjMyX1JfVFlQRSAoaXJlbHNjYW4tPnJfaW5mbykgPT0gKGludCkgUl9NSUNST0JMQVpFX05PTkUpCi0rICAgICAgICAgICAgICBpZiAoMSAmJiBFTEYzMl9SX1RZUEUgKGlyZWxzY2FuLT5yX2luZm8pID09IChpbnQpIFJfTUlDUk9CTEFaRV8zMl9OT05FKQotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhbDsKLSAKLSAgICAgICAgICAgICAgICAgICBpc3ltID0gaXN5bWJ1ZiArIEVMRjMyX1JfU1lNIChpcmVsc2Nhbi0+cl9pbmZvKTsKLSAKLSsgICAgICAgICAgICAgICAgICAvKiBoYXg6IFdlIG9ubHkgZG8gdGhlIGZvbGxvd2luZyBmaXh1cCBmb3IgZGVidWcgbG9jYXRpb24gbGlzdHMuICAqLwotKyAgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoIi5kZWJ1Z19sb2MiLCBvLT5uYW1lKSkKLSsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgd2FzIGEgUEMtcmVsYXRpdmUgaW5zdHJ1Y3Rpb24gdGhhdCB3YXMgY29tcGxldGVseSByZXNvbHZlZC4gICovCi0gICAgICAgICAgICAgICAgICAgaWYgKG9jb250ZW50cyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgewotQEAgLTE5MTcsMTUgKzE5NDcsMTYgQEAgbWljcm9ibGF6ZV9lbGZfcmVsYXhfc2VjdGlvbiAoYmZkICphYmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIH0KLSAKLS0gICAgICAgICAgICAgICAgICBpcmVsc2Nhbi0+cl9hZGRlbmQgLT0gY2FsY19maXh1cCAoaXJlbHNjYW4tPnJfYWRkZW5kCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaXN5bS0+c3RfdmFsdWUsIHNlYyk7Ci0gICAgICAgICAgICAgICAgICAgdmFsID0gYmZkX2dldF8zMiAoYWJmZCwgb2NvbnRlbnRzICsgaXJlbHNjYW4tPnJfb2Zmc2V0KTsKLSsKLSsgICAgICAgICAgICAgICAgICBpZiAodmFsICE9IGlyZWxzY2FuLT5yX2FkZGVuZCkgewotKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlZDogQ09SUlVQVCByZWxheCByZWxvYyEgJXggJWx4XG4iLCBfX0xJTkVfXywgdmFsLCBpcmVsc2Nhbi0+cl9hZGRlbmQpOwotKyAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICBpcmVsc2Nhbi0+cl9hZGRlbmQgLT0gY2FsY19maXh1cCAoaXJlbHNjYW4tPnJfYWRkZW5kLCAwLCBzZWMpOwotKwotICAgICAgICAgICAgICAgICAgIG1pY3JvYmxhemVfYmZkX3dyaXRlX2ltbV92YWx1ZV8zMiAoYWJmZCwgb2NvbnRlbnRzICsgaXJlbHNjYW4tPnJfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXJlbHNjYW4tPnJfYWRkZW5kKTsKLSAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgIGlmIChFTEYzMl9SX1RZUEUgKGlyZWxzY2FuLT5yX2luZm8pID09IChpbnQpIFJfTUlDUk9CTEFaRV82NF9OT05FKSB7Ci0tICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmhhbmRsZWQgTk9ORSA2NFxuIik7Ci0tICAgICAgICAgICAgICB9Ci0gCSAgICAgIGlmIChFTEYzMl9SX1RZUEUgKGlyZWxzY2FuLT5yX2luZm8pID09IChpbnQpIFJfTUlDUk9CTEFaRV8zMikKLSAJCXsKLSAJCSAgaXN5bSA9IGlzeW1idWYgKyBFTEYzMl9SX1NZTSAoaXJlbHNjYW4tPnJfaW5mbyk7Ci1AQCAtMTk4NSw3ICsyMDE2LDcgQEAgbWljcm9ibGF6ZV9lbGZfcmVsYXhfc2VjdGlvbiAoYmZkICphYmZkLAotIAkJCSAgICAgIGVsZl9zZWN0aW9uX2RhdGEgKG8pLT50aGlzX2hkci5jb250ZW50cyA9IG9jb250ZW50czsKLSAJCQkgICAgfQotIAkJCX0KLS0JCSAgICAgIGlyZWxzY2FuLT5yX2FkZGVuZCAtPSBjYWxjX2ZpeHVwIChpcmVsLT5yX2FkZGVuZAotKyAgICAgICAgICAgICAgaXJlbHNjYW4tPnJfYWRkZW5kIC09IGNhbGNfZml4dXAgKGlyZWxzY2FuLT5yX2FkZGVuZAotIAkJCQkJCQkrIGlzeW0tPnN0X3ZhbHVlLAotIAkJCQkJCQkwLAotIAkJCQkJCQlzZWMpOwotZGlmZiAtLWdpdCBhL2JmZC9saWJiZmQuaCBiL2JmZC9saWJiZmQuaAotaW5kZXggMmY1ZjE2ZS4uODU0YmIwYyAxMDA2NDQKLS0tLSBhL2JmZC9saWJiZmQuaAotKysrIGIvYmZkL2xpYmJmZC5oCi1AQCAtMjg1Myw2ICsyODUzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGJmZF9yZWxvY19jb2RlX3JlYWxfbmFtZXNbXSA9IHsgIkBAdW5pbml0aWFsaXplZEBAIiwKLSAgICJCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9ST1NEQSIsCi0gICAiQkZEX1JFTE9DX01JQ1JPQkxBWkVfMzJfUldTREEiLAotICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX1NZTV9PUF9TWU0iLAotKyAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX05PTkUiLAotICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkUiLAotICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X0dPVFBDIiwKLSAgICJCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9HT1QiLAotZGlmZiAtLWdpdCBhL2JmZC9yZWxvYy5jIGIvYmZkL3JlbG9jLmMKLWluZGV4IGExMzUzYTIuLjRiNTdkZTcgMTAwNjQ0Ci0tLS0gYS9iZmQvcmVsb2MuYwotKysrIGIvYmZkL3JlbG9jLmMKLUBAIC02OTAzLDYgKzY5MDMsMTIgQEAgRU5VTURPQwotICAgVGhpcyBpcyBhIDMyIGJpdCByZWxvYyBmb3IgdGhlIG1pY3JvYmxhemUgdG8gaGFuZGxlCi0gICBleHByZXNzaW9ucyBvZiB0aGUgZm9ybSAiU3ltYm9sIE9wIFN5bWJvbCIKLSBFTlVNCi0rICBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FCi0rRU5VTURPQwotKyAgVGhpcyBpcyBhIDMyIGJpdCByZWxvYyB0aGF0IHN0b3JlcyB0aGUgMzIgYml0IHBjIHJlbGF0aXZlCi0rICB2YWx1ZSBpbiB0d28gd29yZHMgKHdpdGggYW4gaW1tIGluc3RydWN0aW9uKS4gIE5vIHJlbG9jYXRpb24gaXMKLSsgIGRvbmUgaGVyZSAtIG9ubHkgdXNlZCBmb3IgcmVsYXhpbmcKLStFTlVNCi0gICBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FCi0gRU5VTURPQwotICAgVGhpcyBpcyBhIDY0IGJpdCByZWxvYyB0aGF0IHN0b3JlcyB0aGUgMzIgYml0IHBjIHJlbGF0aXZlCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCBmZWQwMzg3Li45MmY2NTVkIDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0xMjc3NCw2ICsxMjc3NCwxMCBAQCBpc19ub25lX3JlbG9jIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBpbnQgcmVsb2NfdHlwZSkKLSAJICAgICAgfHwgcmVsb2NfdHlwZSA9PSAzMiAvKiBSX0FWUl9ESUZGMzIuICAqLyk7Ci0gICAgIGNhc2UgRU1fTUVUQUc6Ci0gICAgICAgcmV0dXJuIHJlbG9jX3R5cGUgPT0gMzsgLyogUl9NRVRBR19OT05FLiAgKi8KLSsgICAgY2FzZSBFTV9NSUNST0JMQVpFOgotKyAgICAgIHJldHVybiByZWxvY190eXBlID09IDMwIC8qIFJfTUlDUk9CTEFaRV8zMl9OT05FLiAgKi8KLSsgICAgICAgICAgICAgfHwgcmVsb2NfdHlwZSA9PSAwIC8qIFJfTUlDUk9CTEFaRV9OT05FLiAgKi8KLSsgICAgICAgICAgICAgfHwgcmVsb2NfdHlwZSA9PSA5OyAvKiBSX01JQ1JPQkxBWkVfNjRfTk9ORS4gICovCi0gICAgIGNhc2UgRU1fTkRTMzI6Ci0gICAgICAgcmV0dXJuIChyZWxvY190eXBlID09IDAgICAgICAgLyogUl9YVEVOU0FfTk9ORS4gICovCi0gCSAgICAgIHx8IHJlbG9jX3R5cGUgPT0gMjA0ICAvKiBSX05EUzMyX0RJRkY4LiAgKi8KLWRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLW1pY3JvYmxhemUuYyBiL2dhcy9jb25maWcvdGMtbWljcm9ibGF6ZS5jCi1pbmRleCA1MGRiZmM3Li5kNjZlOTQ5IDEwMDY0NAotLS0tIGEvZ2FzL2NvbmZpZy90Yy1taWNyb2JsYXplLmMKLSsrKyBiL2dhcy9jb25maWcvdGMtbWljcm9ibGF6ZS5jCi1AQCAtMjE3OSw3ICsyMTc5LDkgQEAgbWRfYXBwbHlfZml4IChmaXhTICogICBmaXhQLAotICAgICAgIC8qIFRoaXMgZml4dXAgaGFzIGJlZW4gcmVzb2x2ZWQuICBDcmVhdGUgYSByZWxvYyBpbiBjYXNlIHRoZSBsaW5rZXIKLSAJIG1vdmVzIGNvZGUgYXJvdW5kIGR1ZSB0byByZWxheGluZy4gICovCi0gICAgICAgaWYgKGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfNjRfUENSRUwpCi0tCWZpeFAtPmZ4X3JfdHlwZSA9IEJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkU7Ci0rCSAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FOwotKyAgICAgIGVsc2UgaWYgKGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfMzIpCi0rICAgICAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FOwotICAgICAgIGVsc2UKLSAJZml4UC0+Znhfcl90eXBlID0gQkZEX1JFTE9DX05PTkU7Ci0gICAgICAgZml4UC0+ZnhfYWRkc3kgPSBzZWN0aW9uX3N5bWJvbCAoYWJzb2x1dGVfc2VjdGlvbik7Ci1AQCAtMjQwMSw2ICsyNDAzLDcgQEAgdGNfZ2VuX3JlbG9jIChhc2VjdGlvbiAqIHNlY3Rpb24gQVRUUklCVVRFX1VOVVNFRCwgZml4UyAqIGZpeHApCi0gICBzd2l0Y2ggKGZpeHAtPmZ4X3JfdHlwZSkKLSAgICAgewotICAgICBjYXNlIEJGRF9SRUxPQ19OT05FOgotKyAgICBjYXNlIEJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX05PTkU6IAotICAgICBjYXNlIEJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkU6Ci0gICAgIGNhc2UgQkZEX1JFTE9DXzMyOgotICAgICBjYXNlIEJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX0xPOgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvZWxmL21pY3JvYmxhemUuaCBiL2luY2x1ZGUvZWxmL21pY3JvYmxhemUuaAotaW5kZXggYWU5ODA5OS4uYzhjYzU3YiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZWxmL21pY3JvYmxhemUuaAotKysrIGIvaW5jbHVkZS9lbGYvbWljcm9ibGF6ZS5oCi1AQCAtNTgsNiArNTgsNyBAQCBTVEFSVF9SRUxPQ19OVU1CRVJTIChlbGZfbWljcm9ibGF6ZV9yZWxvY190eXBlKQotICAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfVExTRFRQUkVMNjQsIDI3KSAgIC8qIFRMUyBPZmZzZXQgV2l0aGluIFRMUyBCbG9jayAqLwotICAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfVExTR09UVFBSRUwzMiwgMjgpIC8qIFRMUyBPZmZzZXQgRnJvbSBUaHJlYWQgUG9pbnRlciAqLwotICAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfVExTVFBSRUwzMiwgMjkpICAgIC8qIFRMUyBPZmZzZXQgRnJvbSBUaHJlYWQgUG9pbnRlciAqLwotKyAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfMzJfTk9ORSwgMzApCi0gICAgCi0gRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlDUk9CTEFaRV9tYXgpCi0gCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwNi1GaXgtYnVnLWluLU1pY3JvQmxhemUtVExTVFBSRUwtUmVsb2NhdGlvbi5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA2LUZpeC1idWctaW4tTWljcm9CbGF6ZS1UTFNUUFJFTC1SZWxvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjcxY2Y4Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA2LUZpeC1idWctaW4tTWljcm9CbGF6ZS1UTFNUUFJFTC1SZWxvY2F0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwY2FkMjI3Y2U0OTVhOTc1YjMyYzEwYThiNmIwOTcwYzQ1MDI0ZGQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmFnYXJhanUgTWVrYWxhIDxuYWdhcmFqdS5tZWthbGFAeGlsaW54LmNvbT4KLURhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTk6NTM6NTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1ZyBpbiBNaWNyb0JsYXplIFRMU1RQUkVMIFJlbG9jYXRpb24KLQotRml4ZWQgdGhlIHByb2JsZW0gcmVsYXRlZCB0byB0aGUgZml4dXAvcmVsb2NhdGlvbnMgVExTVFBSRUwuCi1XaGVuIHRoZSBmaXh1cCBpcyBhcHBsaWVkIHRoZSBhZGRlbmQgaXMgbm90IGFkZGVkIGF0IHRoZSBjb3JyZWN0IG9mZnNldAotb2YgdGhlIGluc3RydWN0aW9uLiBUaGUgb2Zmc2V0IGlzIGhhcmQgY29kZWQgY29uc2lkZXJpbmcgaXRzIGJpZyBlbmRpYW4KLWFuZCBpdCBmYWlscyBmb3IgTGl0dGxlIGVuZGlhbi4gVGhpcyBwYXRjaCBhbGxvd3Mgc3VwcG9ydCBmb3IgYm90aAotYmlnICYgbGl0dGxlLWVuZGlhbiBjb21waWxlcnMKLQotU2lnbmVkLW9mZi1ieTogTmFnYXJhanUgTWVrYWxhIDxuYWdhcmFqdS5tZWthbGFAeGlsaW54LmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hbmp1a3VtYXIgTWF0aGEgPG1hbmp1a3VtYXIuaGFydGhpa290ZS1tYXRoYUB4aWxpbnguY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLQotIGJmZC9lbGYzMi1taWNyb2JsYXplLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLW1pY3JvYmxhemUuYyBiL2JmZC9lbGYzMi1taWNyb2JsYXplLmMKLWluZGV4IGZjMGQzZTEuLmE5NDc5OWYgMTAwNjQ0Ci0tLS0gYS9iZmQvZWxmMzItbWljcm9ibGF6ZS5jCi0rKysgYi9iZmQvZWxmMzItbWljcm9ibGF6ZS5jCi1AQCAtMTQwMiw5ICsxNDAyLDkgQEAgbWljcm9ibGF6ZV9lbGZfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAotIAkgICAgICByZWxvY2F0aW9uICs9IGFkZGVuZDsKLSAJICAgICAgcmVsb2NhdGlvbiAtPSBkdHByZWxfYmFzZShpbmZvKTsKLSAJICAgICAgYmZkX3B1dF8xNiAoaW5wdXRfYmZkLCAocmVsb2NhdGlvbiA+PiAxNikgJiAweGZmZmYsCi0tCQkJICBjb250ZW50cyArIG9mZnNldCArIDIpOwotKwkJCSAgY29udGVudHMgKyBvZmZzZXQgKyBlbmRpYW4pOwotIAkgICAgICBiZmRfcHV0XzE2IChpbnB1dF9iZmQsIHJlbG9jYXRpb24gJiAweGZmZmYsCi0tCQkJICBjb250ZW50cyArIG9mZnNldCArIDIgKyBJTlNUX1dPUkRfU0laRSk7Ci0rCQkJICBjb250ZW50cyArIG9mZnNldCArIGVuZGlhbiArIElOU1RfV09SRF9TSVpFKTsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICBjYXNlIChpbnQpIFJfTUlDUk9CTEFaRV82NF9QQ1JFTCA6Ci0gCSAgICBjYXNlIChpbnQpIFJfTUlDUk9CTEFaRV82NDoKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDAxLU1pY3JvQmxhemUtQWRkLXdkYy5leHQuY2xlYXItYW5kLXdkYy5leHQuZmx1c2gtaW5zbnMucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwMS1NaWNyb0JsYXplLUFkZC13ZGMuZXh0LmNsZWFyLWFuZC13ZGMuZXh0LmZsdXNoLWluc25zLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwMS1NaWNyb0JsYXplLUFkZC13ZGMuZXh0LmNsZWFyLWFuZC13ZGMuZXh0LmZsdXNoLWluc25zLnBhdGNoCnJlbmFtZSB0byBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwMS1NaWNyb0JsYXplLUFkZC13ZGMuZXh0LmNsZWFyLWFuZC13ZGMuZXh0LmZsdXNoLWluc25zLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwMi1NaWNyb0JsYXplLWFkZC1tbGl0dGxlLWVuZGlhbi1hbmQtbWJpZy1lbmRpYW4tZmxhZ3MucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwMi1NaWNyb0JsYXplLWFkZC1tbGl0dGxlLWVuZGlhbi1hbmQtbWJpZy1lbmRpYW4tZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDAyLU1pY3JvQmxhemUtYWRkLW1saXR0bGUtZW5kaWFuLWFuZC1tYmlnLWVuZGlhbi1mbGFncy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMDItTWljcm9CbGF6ZS1hZGQtbWxpdHRsZS1lbmRpYW4tYW5kLW1iaWctZW5kaWFuLWZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwMy1EaXNhYmxlLXRoZS13YXJuaW5nLW1lc3NhZ2UtZm9yLWVoX2ZyYW1lX2hkci5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDAzLURpc2FibGUtdGhlLXdhcm5pbmctbWVzc2FnZS1mb3ItZWhfZnJhbWVfaGRyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTBjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwMy1EaXNhYmxlLXRoZS13YXJuaW5nLW1lc3NhZ2UtZm9yLWVoX2ZyYW1lX2hkci5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGRhYzcyZDgwOWJlOWZhZjkzODBiMTgxZGYwYzE5YTJjNmQ3NDRjNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRWRnYXIgRS4gSWdsZXNpYXMiIDxlZGdhci5pZ2xlc2lhc0BnbWFpbC5jb20+CitEYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE5OjUzOjU0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgdGhlIHdhcm5pbmcgbWVzc2FnZSBmb3IgZWhfZnJhbWVfaGRyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KKworUmViYXNlZCB0byAyLjMxCisgLSBFcnJvciBoYW5sZGVyIGNoYW5nZWQKKworU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEVuZWRpbm8gSGVybmFuZGV6IFNhbWFuaWVnbyA8YWxlamFuZHJAeGlsaW54LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEVkZ2FyIEUuIElnbGVzaWFzIDxlZGdhci5pZ2xlc2lhc0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KKworLS0tCisgYmZkL2VsZi1laC1mcmFtZS5jIHwgOSArKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L2JmZC9lbGYtZWgtZnJhbWUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2JmZC9lbGYtZWgtZnJhbWUuYworKysrIGdpdC9iZmQvZWxmLWVoLWZyYW1lLmMKK0BAIC0xMDQyLDEwICsxMDQyLDEzIEBAIF9iZmRfZWxmX3BhcnNlX2VoX2ZyYW1lIChiZmQgKmFiZmQsIHN0cnUKKyAgIGdvdG8gc3VjY2VzczsKKyAKKyAgZnJlZV9ub190YWJsZToKKy0gIF9iZmRfZXJyb3JfaGFuZGxlcgorKyAgLyogRklYTUU6IFJlbW92ZSB0aGUgbWljcm9ibGF6ZSBzcGVjaWZpY3Mgd2hlbiByZWxheGluZyBnZXRzIGZpeGVkLiAgKi8KKysgIGlmIChiZmRfZ2V0X2FyY2goYWJmZCkgIT0gYmZkX2FyY2hfbWljcm9ibGF6ZSkgeworICAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLworLSAgICAoXygiZXJyb3IgaW4gJXBCKCVwQSk7IG5vIC5laF9mcmFtZV9oZHIgdGFibGUgd2lsbCBiZSBjcmVhdGVkIiksCistICAgICBhYmZkLCBzZWMpOworKyAgICBfYmZkX2Vycm9yX2hhbmRsZXIKKysgICAgICAoXygiZXJyb3IgaW4gJXBCKCVwQSk7IG5vIC5laF9mcmFtZV9oZHIgdGFibGUgd2lsbCBiZSBjcmVhdGVkIiksCisrICAgICAgIGFiZmQsIHNlYyk7CisrICB9CisgICBoZHJfaW5mby0+dS5kd2FyZi50YWJsZSA9IEZBTFNFOworICAgaWYgKHNlY19pbmZvKQorICAgICBmcmVlIChzZWNfaW5mbyk7CmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwNC1GaXgtcmVsYXhhdGlvbi1vZi1hc3NlbWJsZXItcmVzb2x2ZWQtcmVmZXJlbmNlcy5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDA0LUZpeC1yZWxheGF0aW9uLW9mLWFzc2VtYmxlci1yZXNvbHZlZC1yZWZlcmVuY2VzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwNC1GaXgtcmVsYXhhdGlvbi1vZi1hc3NlbWJsZXItcmVzb2x2ZWQtcmVmZXJlbmNlcy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMDQtRml4LXJlbGF4YXRpb24tb2YtYXNzZW1ibGVyLXJlc29sdmVkLXJlZmVyZW5jZXMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDA1LUZpeHVwLU1pY3JvQmxhemUtZGVidWdfbG9jLXNlY3Rpb25zLWFmdGVyLWxpbmtlci1yZWwucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwNS1GaXh1cC1NaWNyb0JsYXplLWRlYnVnX2xvYy1zZWN0aW9ucy1hZnRlci1saW5rZXItcmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZGQyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwNS1GaXh1cC1NaWNyb0JsYXplLWRlYnVnX2xvYy1zZWN0aW9ucy1hZnRlci1saW5rZXItcmVsLnBhdGNoCkBAIC0wLDAgKzEsMjQzIEBACitGcm9tIDViZjY4YmMzOTk3NjkwMzkyOWY3MzBiNmVlZDE4Njg2YzM1NjNjMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYWdhcmFqdSBNZWthbGEgPG5hZ2FyYWp1Lm1la2FsYUB4aWxpbnguY29tPgorRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxOTo1Mzo1NiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXh1cCBNaWNyb0JsYXplIGRlYnVnX2xvYyBzZWN0aW9ucyBhZnRlciBsaW5rZXIgcmVsYXhhdGlvbgorCitGaXh1cCBkZWJ1Z19sb2Mgc2VjdGlvbnMgYWZ0ZXIgbGlua2VyIHJlbGF4YXRpb24gQWRkcyBhIG5ldyByZWxvY3R5cGUKK1JfTUlDUk9CTEFaRV8zMl9OT05FLCB1c2VkIGZvciBwYXNzaW5nIHJlbG9jIGluZm8gZnJvbSB0aGUgYXNzZW1ibGVyIHRvCit0aGUgbGlua2VyIHdoZW4gdGhlIGxpbmtlciBtYW5hZ2VzIHRvIGZ1bGx5IHJlc29sdmUgYSBsb2NhbCBzeW1ib2wKK3JlZmVyZW5jZS4KKworVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGRlc2lnbiBmbGF3cyBpbiB0aGUgYXNzZW1ibGVyIHRvCitsaW5rZXIgaW50ZXJmYWNlIHdpdGggcmVnYXJkcyB0byBsaW5rZXIgcmVsYXhhdGlvbi4KKworMDgvMjAxOAorUmViYXNlZCBmb3IgYmludXRpbHMgMi4zMQorIC0gU29tZSBSRUxPQ19OVU1CRVJzIHdlcmUgYWRkZWQgdXBzdHJlYW0sIHJlYmFzZWQgdG8gdXNlIDMzIGluc3RlYWQgb2YgMzAKKworU2lnbmVkLW9mZi1ieTogRWRnYXIgRS4gSWdsZXNpYXMgPGVkZ2FyLmlnbGVzaWFzQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE5hZ2FyYWp1IE1la2FsYSA8bm1la2FsYUB4aWxpbnguY29tPgorU2lnbmVkLW9mZi1ieTogTWFuanVrdW1hciBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvIDxhbGVqYW5kckB4aWxpbnguY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworLS0tCisgYmZkL2JmZC1pbjIuaCAgICAgICAgICAgICAgfCAgOSArKysrKysrLS0KKyBiZmQvZWxmMzItbWljcm9ibGF6ZS5jICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIGJmZC9saWJiZmQuaCAgICAgICAgICAgICAgIHwgIDEgKworIGJmZC9yZWxvYy5jICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCisgYmludXRpbHMvcmVhZGVsZi5jICAgICAgICAgfCAgNCArKysrCisgZ2FzL2NvbmZpZy90Yy1taWNyb2JsYXplLmMgfCAgNSArKysrLQorIGluY2x1ZGUvZWxmL21pY3JvYmxhemUuaCAgIHwgIDEgKworIDcgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvYmZkL2JmZC1pbjIuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2JmZC9iZmQtaW4yLmgKKysrKyBnaXQvYmZkL2JmZC1pbjIuaAorQEAgLTU3OTEsMTAgKzU3OTEsMTUgQEAgdmFsdWUgcmVsYXRpdmUgdG8gdGhlIHJlYWQtd3JpdGUgc21hbGwgZAorIGV4cHJlc3Npb25zIG9mIHRoZSBmb3JtICJTeW1ib2wgT3AgU3ltYm9sIiAgKi8KKyAgIEJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX1NZTV9PUF9TWU0sCisgCistLyogVGhpcyBpcyBhIDY0IGJpdCByZWxvYyB0aGF0IHN0b3JlcyB0aGUgMzIgYml0IHBjIHJlbGF0aXZlCisrLyogVGhpcyBpcyBhIDMyIGJpdCByZWxvYyB0aGF0IHN0b3JlcyB0aGUgMzIgYml0IHBjIHJlbGF0aXZlCisgdmFsdWUgaW4gdHdvIHdvcmRzICh3aXRoIGFuIGltbSBpbnN0cnVjdGlvbikuICBObyByZWxvY2F0aW9uIGlzCisgZG9uZSBoZXJlIC0gb25seSB1c2VkIGZvciByZWxheGluZyAgKi8KKy0gIEJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkUsCisrICBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FLAorKworKy8qIFRoaXMgaXMgYSA2NCBiaXQgcmVsb2MgdGhhdCBzdG9yZXMgdGhlIDMyIGJpdCBwYyByZWxhdGl2ZQorKyAqICArdmFsdWUgaW4gdHdvIHdvcmRzICh3aXRoIGFuIGltbSBpbnN0cnVjdGlvbikuICBObyByZWxvY2F0aW9uIGlzCisrICogICArZG9uZSBoZXJlIC0gb25seSB1c2VkIGZvciByZWxheGluZyAgKi8KKysgICAgQkZEX1JFTE9DX01JQ1JPQkxBWkVfNjRfTk9ORSwKKyAKKyAvKiBUaGlzIGlzIGEgNjQgYml0IHJlbG9jIHRoYXQgc3RvcmVzIHRoZSAzMiBiaXQgcGMgcmVsYXRpdmUKKyB2YWx1ZSBpbiB0d28gd29yZHMgKHdpdGggYW4gaW1tIGluc3RydWN0aW9uKS4gIFRoZSByZWxvY2F0aW9uIGlzCitJbmRleDogZ2l0L2JmZC9lbGYzMi1taWNyb2JsYXplLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9iZmQvZWxmMzItbWljcm9ibGF6ZS5jCisrKysgZ2l0L2JmZC9lbGYzMi1taWNyb2JsYXplLmMKK0BAIC0xNzYsNiArMTc2LDIwIEBAIHN0YXRpYyByZWxvY19ob3d0b190eXBlIG1pY3JvYmxhemVfZWxmX2gKKyAJICAweDAwMDBmZmZmLAkJLyogRGVzdCBNYXNrLiAgKi8KKyAJICBGQUxTRSksCQkvKiBQQyByZWxhdGl2ZSBvZmZzZXQ/ICAqLworIAorKyAgIEhPV1RPIChSX01JQ1JPQkxBWkVfMzJfTk9ORSwgICAvKiBUeXBlLiAgKi8KKysgICAgICAgICAgMCwgICAgICAgICAvKiBSaWdodHNoaWZ0LiAgKi8KKysgICAgICAgICAgMiwgICAgICAgICAgICAvKiBTaXplICgwID0gYnl0ZSwgMSA9IHNob3J0LCAyID0gbG9uZykuICAqLworKyAgICAgICAgICAzMiwgICAgICAgICAgIC8qIEJpdHNpemUuICAqLworKyAgICAgICAgICBUUlVFLCAgICAgICAgIC8qIFBDX3JlbGF0aXZlLiAgKi8KKysgICAgICAgICAgMCwgICAgICAgICAgIC8qIEJpdHBvcy4gICovCisrICAgICAgICAgIGNvbXBsYWluX292ZXJmbG93X2JpdGZpZWxkLCAgLyogQ29tcGxhaW4gb24gb3ZlcmZsb3cuICAqLworKyAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIFNwZWNpYWwgRnVuY3Rpb24uICAqLworKyAgICAgICAgICAiUl9NSUNST0JMQVpFXzMyX05PTkUiLC8qIE5hbWUuICAqLworKyAgICAgICAgICBGQUxTRSwgICAgICAgLyogUGFydGlhbCBJbnBsYWNlLiAgKi8KKysgICAgICAgICAgMCwgICAgICAgICAgLyogU291cmNlIE1hc2suICAqLworKyAgICAgICAgICAwLCAgICAgICAgIC8qIERlc3QgTWFzay4gICovCisrICAgICAgICAgIEZBTFNFKSwgICAgICAgLyogUEMgcmVsYXRpdmUgb2Zmc2V0PyAgKi8KKysKKyAgICAvKiBUaGlzIHJlbG9jIGRvZXMgbm90aGluZy4JVXNlZCBmb3IgcmVsYXhhdGlvbi4gICovCisgICAgSE9XVE8gKFJfTUlDUk9CTEFaRV82NF9OT05FLAkvKiBUeXBlLiAgKi8KKyAJICAwLAkJCS8qIFJpZ2h0c2hpZnQuICAqLworQEAgLTU2Miw2ICs1NzYsOSBAQCBtaWNyb2JsYXplX2VsZl9yZWxvY190eXBlX2xvb2t1cCAoYmZkICoKKyAgICAgY2FzZSBCRkRfUkVMT0NfTk9ORToKKyAgICAgICBtaWNyb2JsYXplX3JlbG9jID0gUl9NSUNST0JMQVpFX05PTkU7CisgICAgICAgYnJlYWs7CisrICAgIGNhc2UgQkZEX1JFTE9DX01JQ1JPQkxBWkVfMzJfTk9ORToKKysgICAgICBtaWNyb2JsYXplX3JlbG9jID0gUl9NSUNST0JMQVpFXzMyX05PTkU7CisrICAgICAgYnJlYWs7CisgICAgIGNhc2UgQkZEX1JFTE9DX01JQ1JPQkxBWkVfNjRfTk9ORToKKyAgICAgICBtaWNyb2JsYXplX3JlbG9jID0gUl9NSUNST0JMQVpFXzY0X05PTkU7CisgICAgICAgYnJlYWs7CitAQCAtMTkxOCwxNCArMTkzNSwyMyBAQCBtaWNyb2JsYXplX2VsZl9yZWxheF9zZWN0aW9uIChiZmQgKmFiZmQsCisgCQl9CisgCSAgICAgIGJyZWFrOworIAkgICAgY2FzZSBSX01JQ1JPQkxBWkVfTk9ORToKKysgICAgICAgICAgICBjYXNlIFJfTUlDUk9CTEFaRV8zMl9OT05FOgorIAkgICAgICB7CisgCQkvKiBUaGlzIHdhcyBhIFBDLXJlbGF0aXZlIGluc3RydWN0aW9uIHRoYXQgd2FzCisgCQkgICBjb21wbGV0ZWx5IHJlc29sdmVkLiAgKi8KKyAJCWludCBzZml4LCBlZml4OworKyAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YWw7CisgCQliZmRfdm1hIHRhcmdldF9hZGRyZXNzOworIAkJdGFyZ2V0X2FkZHJlc3MgPSBpcmVsLT5yX2FkZGVuZCArIGlyZWwtPnJfb2Zmc2V0OworIAkJc2ZpeCA9IGNhbGNfZml4dXAgKGlyZWwtPnJfb2Zmc2V0LCAwLCBzZWMpOworIAkJZWZpeCA9IGNhbGNfZml4dXAgKHRhcmdldF9hZGRyZXNzLCAwLCBzZWMpOworKworKyAgICAgICAgICAgIC8qIFZhbGlkYXRlIHRoZSBpbi1iYW5kIHZhbC4gICovCisrICAgICAgICAgICAgdmFsID0gYmZkX2dldF8zMiAoYWJmZCwgY29udGVudHMgKyBpcmVsLT5yX29mZnNldCk7CisrICAgICAgICAgICAgaWYgKHZhbCAhPSBpcmVsLT5yX2FkZGVuZCAmJiBFTEYzMl9SX1RZUEUgKGlyZWwtPnJfaW5mbykgPT0gUl9NSUNST0JMQVpFXzMyX05PTkUpIHsKKysgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVkOiBDT1JSVVBUIHJlbGF4IHJlbG9jICV4ICVseFxuIiwgX19MSU5FX18sIHZhbCwgaXJlbC0+cl9hZGRlbmQpOworKyAgICAgICAgICAgIH0KKysKKyAJCWlyZWwtPnJfYWRkZW5kIC09IChlZml4IC0gc2ZpeCk7CisgCQkvKiBTaG91bGQgdXNlIEhPV1RPLiAgKi8KKyAJCW1pY3JvYmxhemVfYmZkX3dyaXRlX2ltbV92YWx1ZV8zMiAoYWJmZCwgY29udGVudHMgKyBpcmVsLT5yX29mZnNldCwKK0BAIC0xOTczLDEyICsxOTk5LDE2IEBAIG1pY3JvYmxhemVfZWxmX3JlbGF4X3NlY3Rpb24gKGJmZCAqYWJmZCwKKyAJICBpcmVsc2NhbmVuZCA9IGlyZWxvY3MgKyBvLT5yZWxvY19jb3VudDsKKyAJICBmb3IgKGlyZWxzY2FuID0gaXJlbG9jczsgaXJlbHNjYW4gPCBpcmVsc2NhbmVuZDsgaXJlbHNjYW4rKykKKyAJICAgIHsKKy0gICAgICAgICAgICAgIGlmIChFTEYzMl9SX1RZUEUgKGlyZWxzY2FuLT5yX2luZm8pID09IChpbnQpIFJfTUlDUk9CTEFaRV9OT05FKQorKyAgICAgICAgICAgICAgaWYgKDEgJiYgRUxGMzJfUl9UWVBFIChpcmVsc2Nhbi0+cl9pbmZvKSA9PSAoaW50KSBSX01JQ1JPQkxBWkVfMzJfTk9ORSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YWw7CisgCisgICAgICAgICAgICAgICAgICAgaXN5bSA9IGlzeW1idWYgKyBFTEYzMl9SX1NZTSAoaXJlbHNjYW4tPnJfaW5mbyk7CisgCisrICAgICAgICAgICAgICAgICAgLyogaGF4OiBXZSBvbmx5IGRvIHRoZSBmb2xsb3dpbmcgZml4dXAgZm9yIGRlYnVnIGxvY2F0aW9uIGxpc3RzLiAgKi8KKysgICAgICAgICAgICAgICAgICBpZiAoc3RyY21wKCIuZGVidWdfbG9jIiwgby0+bmFtZSkpCisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKyAgICAgICAgICAgICAgICAgICAvKiBUaGlzIHdhcyBhIFBDLXJlbGF0aXZlIGluc3RydWN0aW9uIHRoYXQgd2FzIGNvbXBsZXRlbHkgcmVzb2x2ZWQuICAqLworICAgICAgICAgICAgICAgICAgIGlmIChvY29udGVudHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC0yMDAzLDE1ICsyMDMzLDE2IEBAIG1pY3JvYmxhemVfZWxmX3JlbGF4X3NlY3Rpb24gKGJmZCAqYWJmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgICAgaXJlbHNjYW4tPnJfYWRkZW5kIC09IGNhbGNfZml4dXAgKGlyZWxzY2FuLT5yX2FkZGVuZAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGlzeW0tPnN0X3ZhbHVlLCBzZWMpOworICAgICAgICAgICAgICAgICAgIHZhbCA9IGJmZF9nZXRfMzIgKGFiZmQsIG9jb250ZW50cyArIGlyZWxzY2FuLT5yX29mZnNldCk7CisrCisrICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSBpcmVsc2Nhbi0+cl9hZGRlbmQpIHsKKysgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJWQ6IENPUlJVUFQgcmVsYXggcmVsb2MhICV4ICVseFxuIiwgX19MSU5FX18sIHZhbCwgaXJlbHNjYW4tPnJfYWRkZW5kKTsKKysgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgaXJlbHNjYW4tPnJfYWRkZW5kIC09IGNhbGNfZml4dXAgKGlyZWxzY2FuLT5yX2FkZGVuZCwgMCwgc2VjKTsKKysKKyAgICAgICAgICAgICAgICAgICBtaWNyb2JsYXplX2JmZF93cml0ZV9pbW1fdmFsdWVfMzIgKGFiZmQsIG9jb250ZW50cyArIGlyZWxzY2FuLT5yX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlyZWxzY2FuLT5yX2FkZGVuZCk7CisgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICBpZiAoRUxGMzJfUl9UWVBFIChpcmVsc2Nhbi0+cl9pbmZvKSA9PSAoaW50KSBSX01JQ1JPQkxBWkVfNjRfTk9ORSkgeworLSAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5oYW5kbGVkIE5PTkUgNjRcbiIpOworLSAgICAgICAgICAgICAgfQorIAkgICAgICBpZiAoRUxGMzJfUl9UWVBFIChpcmVsc2Nhbi0+cl9pbmZvKSA9PSAoaW50KSBSX01JQ1JPQkxBWkVfMzIpCisgCQl7CisgCQkgIGlzeW0gPSBpc3ltYnVmICsgRUxGMzJfUl9TWU0gKGlyZWxzY2FuLT5yX2luZm8pOworQEAgLTIwNzEsNyArMjEwMiw3IEBAIG1pY3JvYmxhemVfZWxmX3JlbGF4X3NlY3Rpb24gKGJmZCAqYWJmZCwKKyAJCQkgICAgICBlbGZfc2VjdGlvbl9kYXRhIChvKS0+dGhpc19oZHIuY29udGVudHMgPSBvY29udGVudHM7CisgCQkJICAgIH0KKyAJCQl9CistCQkgICAgICBpcmVsc2Nhbi0+cl9hZGRlbmQgLT0gY2FsY19maXh1cCAoaXJlbC0+cl9hZGRlbmQKKysgICAgICAgICAgICAgIGlyZWxzY2FuLT5yX2FkZGVuZCAtPSBjYWxjX2ZpeHVwIChpcmVsc2Nhbi0+cl9hZGRlbmQKKyAJCQkJCQkJKyBpc3ltLT5zdF92YWx1ZSwKKyAJCQkJCQkJMCwKKyAJCQkJCQkJc2VjKTsKK0luZGV4OiBnaXQvYmZkL2xpYmJmZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvYmZkL2xpYmJmZC5oCisrKysgZ2l0L2JmZC9saWJiZmQuaAorQEAgLTI4NjIsNiArMjg2Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBiZmRfcmVsb2NfY29kZV8KKyAgICJCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9ST1NEQSIsCisgICAiQkZEX1JFTE9DX01JQ1JPQkxBWkVfMzJfUldTREEiLAorICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX1NZTV9PUF9TWU0iLAorKyAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzMyX05PTkUiLAorICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkUiLAorICAgIkJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X0dPVFBDIiwKKyAgICJCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9HT1QiLAorSW5kZXg6IGdpdC9iZmQvcmVsb2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2JmZC9yZWxvYy5jCisrKysgZ2l0L2JmZC9yZWxvYy5jCitAQCAtNjg2NSw2ICs2ODY1LDEyIEBAIEVOVU1ET0MKKyAgIFRoaXMgaXMgYSAzMiBiaXQgcmVsb2MgZm9yIHRoZSBtaWNyb2JsYXplIHRvIGhhbmRsZQorICAgZXhwcmVzc2lvbnMgb2YgdGhlIGZvcm0gIlN5bWJvbCBPcCBTeW1ib2wiCisgRU5VTQorKyAgQkZEX1JFTE9DX01JQ1JPQkxBWkVfMzJfTk9ORQorK0VOVU1ET0MKKysgIFRoaXMgaXMgYSAzMiBiaXQgcmVsb2MgdGhhdCBzdG9yZXMgdGhlIDMyIGJpdCBwYyByZWxhdGl2ZQorKyAgdmFsdWUgaW4gdHdvIHdvcmRzICh3aXRoIGFuIGltbSBpbnN0cnVjdGlvbikuICBObyByZWxvY2F0aW9uIGlzCisrICBkb25lIGhlcmUgLSBvbmx5IHVzZWQgZm9yIHJlbGF4aW5nCisrRU5VTQorICAgQkZEX1JFTE9DX01JQ1JPQkxBWkVfNjRfTk9ORQorIEVOVU1ET0MKKyAgIFRoaXMgaXMgYSA2NCBiaXQgcmVsb2MgdGhhdCBzdG9yZXMgdGhlIDMyIGJpdCBwYyByZWxhdGl2ZQorSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKKysrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCitAQCAtMTI5MDgsNiArMTI5MDgsMTAgQEAgaXNfbm9uZV9yZWxvYyAoRmlsZWRhdGEgKiBmaWxlZGF0YSwgdW5zaQorIAkgICAgICB8fCByZWxvY190eXBlID09IDMyIC8qIFJfQVZSX0RJRkYzMi4gICovKTsKKyAgICAgY2FzZSBFTV9NRVRBRzoKKyAgICAgICByZXR1cm4gcmVsb2NfdHlwZSA9PSAzOyAvKiBSX01FVEFHX05PTkUuICAqLworKyAgICBjYXNlIEVNX01JQ1JPQkxBWkU6CisrICAgICAgcmV0dXJuIHJlbG9jX3R5cGUgPT0gMzMgLyogUl9NSUNST0JMQVpFXzMyX05PTkUuICAqLworKyAgICAgICAgICAgICB8fCByZWxvY190eXBlID09IDAgLyogUl9NSUNST0JMQVpFX05PTkUuICAqLworKyAgICAgICAgICAgICB8fCByZWxvY190eXBlID09IDk7IC8qIFJfTUlDUk9CTEFaRV82NF9OT05FLiAgKi8KKyAgICAgY2FzZSBFTV9ORFMzMjoKKyAgICAgICByZXR1cm4gKHJlbG9jX3R5cGUgPT0gMCAgICAgICAvKiBSX1hURU5TQV9OT05FLiAgKi8KKyAJICAgICAgfHwgcmVsb2NfdHlwZSA9PSAyMDQgIC8qIFJfTkRTMzJfRElGRjguICAqLworSW5kZXg6IGdpdC9nYXMvY29uZmlnL3RjLW1pY3JvYmxhemUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2dhcy9jb25maWcvdGMtbWljcm9ibGF6ZS5jCisrKysgZ2l0L2dhcy9jb25maWcvdGMtbWljcm9ibGF6ZS5jCitAQCAtMjIwMSw3ICsyMjAxLDkgQEAgbWRfYXBwbHlfZml4IChmaXhTICogICBmaXhQLAorICAgICAgIC8qIFRoaXMgZml4dXAgaGFzIGJlZW4gcmVzb2x2ZWQuICBDcmVhdGUgYSByZWxvYyBpbiBjYXNlIHRoZSBsaW5rZXIKKyAJIG1vdmVzIGNvZGUgYXJvdW5kIGR1ZSB0byByZWxheGluZy4gICovCisgICAgICAgaWYgKGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfNjRfUENSRUwpCistCWZpeFAtPmZ4X3JfdHlwZSA9IEJGRF9SRUxPQ19NSUNST0JMQVpFXzY0X05PTkU7CisrCSAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FOworKyAgICAgIGVsc2UgaWYgKGZpeFAtPmZ4X3JfdHlwZSA9PSBCRkRfUkVMT0NfMzIpCisrICAgICAgICBmaXhQLT5meF9yX3R5cGUgPSBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FOworICAgICAgIGVsc2UKKyAJZml4UC0+Znhfcl90eXBlID0gQkZEX1JFTE9DX05PTkU7CisgICAgICAgZml4UC0+ZnhfYWRkc3kgPSBzZWN0aW9uX3N5bWJvbCAoYWJzb2x1dGVfc2VjdGlvbik7CitAQCAtMjQyNiw2ICsyNDI4LDcgQEAgdGNfZ2VuX3JlbG9jIChhc2VjdGlvbiAqIHNlY3Rpb24gQVRUUklCVQorICAgc3dpdGNoIChmaXhwLT5meF9yX3R5cGUpCisgICAgIHsKKyAgICAgY2FzZSBCRkRfUkVMT0NfTk9ORToKKysgICAgY2FzZSBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9OT05FOiAKKyAgICAgY2FzZSBCRkRfUkVMT0NfTUlDUk9CTEFaRV82NF9OT05FOgorICAgICBjYXNlIEJGRF9SRUxPQ18zMjoKKyAgICAgY2FzZSBCRkRfUkVMT0NfTUlDUk9CTEFaRV8zMl9MTzoKK0luZGV4OiBnaXQvaW5jbHVkZS9lbGYvbWljcm9ibGF6ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvaW5jbHVkZS9lbGYvbWljcm9ibGF6ZS5oCisrKysgZ2l0L2luY2x1ZGUvZWxmL21pY3JvYmxhemUuaAorQEAgLTYxLDYgKzYxLDcgQEAgU1RBUlRfUkVMT0NfTlVNQkVSUyAoZWxmX21pY3JvYmxhemVfcmVsbworICAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfVEVYVFBDUkVMXzY0LCAzMCkgIC8qIFBDLXJlbGF0aXZlIFRFWFQgb2Zmc2V0LiAgKi8KKyAgIFJFTE9DX05VTUJFUiAoUl9NSUNST0JMQVpFX1RFWFRSRUxfNjQsIDMxKSAgICAvKiBURVhUIEVudHJ5IG9mZnNldCA2NC1iaXQuICAqLworICAgUkVMT0NfTlVNQkVSIChSX01JQ1JPQkxBWkVfVEVYVFJFTF8zMl9MTywgMzIpIC8qIFRFWFQgRW50cnkgb2Zmc2V0IDMyLWJpdC4gICovCisrICBSRUxPQ19OVU1CRVIgKFJfTUlDUk9CTEFaRV8zMl9OT05FLCAzMykKKyBFTkRfUkVMT0NfTlVNQkVSUyAoUl9NSUNST0JMQVpFX21heCkKKyAKKyAvKiBHbG9iYWwgYmFzZSBhZGRyZXNzIG5hbWVzLiAgKi8KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDA2LUZpeC1idWctaW4tTWljcm9CbGF6ZS1UTFNUUFJFTC1SZWxvY2F0aW9uLnBhdGNoIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMDYtRml4LWJ1Zy1pbi1NaWNyb0JsYXplLVRMU1RQUkVMLVJlbG9jYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQzZDUzOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDA2LUZpeC1idWctaW4tTWljcm9CbGF6ZS1UTFNUUFJFTC1SZWxvY2F0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gY2EwMzM2YTQ5YzMzY2NiNzg5NjI1MzBmMmFmZmZmODk4MjAyN2U4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hZ2FyYWp1IE1la2FsYSA8bmFnYXJhanUubWVrYWxhQHhpbGlueC5jb20+CitEYXRlOiBNb24sIDI4IEF1ZyAyMDE3IDE5OjUzOjU4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWcgaW4gTWljcm9CbGF6ZSBUTFNUUFJFTCBSZWxvY2F0aW9uCisKK0ZpeGVkIHRoZSBwcm9ibGVtIHJlbGF0ZWQgdG8gdGhlIGZpeHVwL3JlbG9jYXRpb25zIFRMU1RQUkVMLgorV2hlbiB0aGUgZml4dXAgaXMgYXBwbGllZCB0aGUgYWRkZW5kIGlzIG5vdCBhZGRlZCBhdCB0aGUgY29ycmVjdCBvZmZzZXQKK29mIHRoZSBpbnN0cnVjdGlvbi4gVGhlIG9mZnNldCBpcyBoYXJkIGNvZGVkIGNvbnNpZGVyaW5nIGl0cyBiaWcgZW5kaWFuCithbmQgaXQgZmFpbHMgZm9yIExpdHRsZSBlbmRpYW4uIFRoaXMgcGF0Y2ggYWxsb3dzIHN1cHBvcnQgZm9yIGJvdGgKK2JpZyAmIGxpdHRsZS1lbmRpYW4gY29tcGlsZXJzCisKK1NpZ25lZC1vZmYtYnk6IE5hZ2FyYWp1IE1la2FsYSA8bmFnYXJhanUubWVrYWxhQHhpbGlueC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBiZmQvZWxmMzItbWljcm9ibGF6ZS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1taWNyb2JsYXplLmMgYi9iZmQvZWxmMzItbWljcm9ibGF6ZS5jCitpbmRleCAxZGM1NmY3Li5kNGU1M2RlIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLW1pY3JvYmxhemUuYworKysrIGIvYmZkL2VsZjMyLW1pY3JvYmxhemUuYworQEAgLTE0NTEsOSArMTQ1MSw5IEBAIG1pY3JvYmxhemVfZWxmX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAJICAgICAgcmVsb2NhdGlvbiArPSBhZGRlbmQ7CisgCSAgICAgIHJlbG9jYXRpb24gLT0gZHRwcmVsX2Jhc2UoaW5mbyk7CisgCSAgICAgIGJmZF9wdXRfMTYgKGlucHV0X2JmZCwgKHJlbG9jYXRpb24gPj4gMTYpICYgMHhmZmZmLAorLQkJCSAgY29udGVudHMgKyBvZmZzZXQgKyAyKTsKKysJCQkgIGNvbnRlbnRzICsgb2Zmc2V0ICsgZW5kaWFuKTsKKyAJICAgICAgYmZkX3B1dF8xNiAoaW5wdXRfYmZkLCByZWxvY2F0aW9uICYgMHhmZmZmLAorLQkJCSAgY29udGVudHMgKyBvZmZzZXQgKyAyICsgSU5TVF9XT1JEX1NJWkUpOworKwkJCSAgY29udGVudHMgKyBvZmZzZXQgKyBlbmRpYW4gKyBJTlNUX1dPUkRfU0laRSk7CisgCSAgICAgIGJyZWFrOworIAkgICAgY2FzZSAoaW50KSBSX01JQ1JPQkxBWkVfVEVYVFJFTF82NDoKKyAJICAgIGNhc2UgKGludCkgUl9NSUNST0JMQVpFX1RFWFRSRUxfMzJfTE86CmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwNy1BZGQtTWljcm9CbGF6ZS1hZGRyZXNzLWV4dGVuc2lvbi1pbnN0cnVjdGlvbnMucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwNy1BZGQtTWljcm9CbGF6ZS1hZGRyZXNzLWV4dGVuc2lvbi1pbnN0cnVjdGlvbnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA3LUFkZC1NaWNyb0JsYXplLWFkZHJlc3MtZXh0ZW5zaW9uLWluc3RydWN0aW9ucy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMDctQWRkLU1pY3JvQmxhemUtYWRkcmVzcy1leHRlbnNpb24taW5zdHJ1Y3Rpb25zLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwOC1BZGQtbmV3LU1pY3JvQmxhemUtYml0LWZpZWxkLWluc3RydWN0aW9ucy5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDA4LUFkZC1uZXctTWljcm9CbGF6ZS1iaXQtZmllbGQtaW5zdHJ1Y3Rpb25zLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwOC1BZGQtbmV3LU1pY3JvQmxhemUtYml0LWZpZWxkLWluc3RydWN0aW9ucy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMDgtQWRkLW5ldy1NaWNyb0JsYXplLWJpdC1maWVsZC1pbnN0cnVjdGlvbnMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMC8wMDA5LUZpeGluZy1NaWNyb0JsYXplLUlNTS1idWcucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwOS1GaXhpbmctTWljcm9CbGF6ZS1JTU0tYnVnLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAwOS1GaXhpbmctTWljcm9CbGF6ZS1JTU0tYnVnLnBhdGNoCnJlbmFtZSB0byBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAwOS1GaXhpbmctTWljcm9CbGF6ZS1JTU0tYnVnLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAxMC1GaXhlZC1idWctaW4tR0NDLXNvLXRoYXQtaXQtd2lsbC1zdXBwb3J0LS5sb25nLTBVLWFuLnBhdGNoIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMTAtRml4ZWQtYnVnLWluLUdDQy1zby10aGF0LWl0LXdpbGwtc3VwcG9ydC0ubG9uZy0wVS1hbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMTAtRml4ZWQtYnVnLWluLUdDQy1zby10aGF0LWl0LXdpbGwtc3VwcG9ydC0ubG9uZy0wVS1hbi5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMTAtRml4ZWQtYnVnLWluLUdDQy1zby10aGF0LWl0LXdpbGwtc3VwcG9ydC0ubG9uZy0wVS1hbi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMTEtRml4aW5nLU1pY3JvQmxhemUtY29uc3RhbnQtcmFuZ2UtY2hlY2staXNzdWUucGF0Y2ggYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEvMDAxMS1GaXhpbmctTWljcm9CbGF6ZS1jb25zdGFudC1yYW5nZS1jaGVjay1pc3N1ZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMTEtRml4aW5nLU1pY3JvQmxhemUtY29uc3RhbnQtcmFuZ2UtY2hlY2staXNzdWUucGF0Y2gKcmVuYW1lIHRvIG1ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW1pY3JvYmxhemUvYmludXRpbHMvYmludXRpbHMtMi4zMS8wMDExLUZpeGluZy1NaWNyb0JsYXplLWNvbnN0YW50LXJhbmdlLWNoZWNrLWlzc3VlLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1taWNyb2JsYXplL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzAvMDAxMi1NaWNyb0JsYXplLWZpeC1tYXNrLWZvci1iYXJyZWwtc2hpZnQtaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMTItTWljcm9CbGF6ZS1maXgtbWFzay1mb3ItYmFycmVsLXNoaWZ0LWluc3RydWN0aW9ucy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMwLzAwMTItTWljcm9CbGF6ZS1maXgtbWFzay1mb3ItYmFycmVsLXNoaWZ0LWluc3RydWN0aW9ucy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbWljcm9ibGF6ZS9iaW51dGlscy9iaW51dGlscy0yLjMxLzAwMTItTWljcm9CbGF6ZS1maXgtbWFzay1mb3ItYmFycmVsLXNoaWZ0LWluc3RydWN0aW9ucy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3Uva2VybmVsLW1vZHVsZS12Y3UuYmIgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS9rZXJuZWwtbW9kdWxlLXZjdS5iYgppbmRleCBlMDlkZDVkLi44ZDEzODBmIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS9rZXJuZWwtbW9kdWxlLXZjdS5iYgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS9rZXJuZWwtbW9kdWxlLXZjdS5iYgpAQCAtNSwxNCArNSwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCiAKIFhJTElOWF9WQ1VfVkVSU0lPTiA9ICIxLjAuMCIKLVhJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAiMjAxOC4xIgorWElMSU5YX1JFTEVBU0VfVkVSU0lPTiA9ICIyMDE4LjMiCiBQViA9ICIke1hJTElOWF9WQ1VfVkVSU0lPTn0teGlsaW54LSR7WElMSU5YX1JFTEVBU0VfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIEJSQU5DSCA/PSAibWFzdGVyIgogUkVQTyA/PSAiZ2l0Oi8vZ2l0aHViLmNvbS94aWxpbngvdmN1LW1vZHVsZXMuZ2l0O3Byb3RvY29sPWh0dHBzIgotU1JDUkVWID89ICI2NDYxODUzOTBjYzE4NTA5NjljMGZhM2RiNTlmYzhmMGU1MTE5MjJlIgorU1JDUkVWID89ICJmNmE5MDkzZWMzMmVlOTdhMmRmMDY1YWVlOGI4ZTY3NmMyMDI0ZjAxIgogCiBCUkFOQ0hBUkcgPSAiJHtAWydub2JyYW5jaD0xJywgJ2JyYW5jaD0ke0JSQU5DSH0nXVtkLmdldFZhcignQlJBTkNIJywgVHJ1ZSkgIT0gJyddfSIKIFNSQ19VUkkgPSAiJHtSRVBPfTske0JSQU5DSEFSR30iCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS9saWJvbXhpbC14bG54LmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3UvbGlib214aWwteGxueC5iYgppbmRleCA3NmZkYjlhLi4xOGZhMDMyIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS9saWJvbXhpbC14bG54LmJiCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW11bHRpbWVkaWEvdmN1L2xpYm9teGlsLXhsbnguYmIKQEAgLTQsMTIgKzQsMTIgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTAzYTdhZWY3ZTZmNmE3NmE1OWZkOWI4YmE0NTBiNDkzIgogCiBYSUxJTlhfVkNVX1ZFUlNJT04gPSAiMS4wLjAiCi1YSUxJTlhfUkVMRUFTRV9WRVJTSU9OID0gIjIwMTguMSIKK1hJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAiMjAxOC4zIgogUFYgPSAiJHtYSUxJTlhfVkNVX1ZFUlNJT059LXhpbGlueC0ke1hJTElOWF9SRUxFQVNFX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBCUkFOQ0ggPz0gIm1hc3RlciIKIFJFUE8gICA/PSAiZ2l0Oi8vZ2l0aHViLmNvbS94aWxpbngvdmN1LW9teC1pbC5naXQ7cHJvdG9jb2w9aHR0cHMiCi1TUkNSRVYgPz0gIjY4ZTM4NWFjZTk5YWI2OTlmZWFhNTBmMjRiN2E3ODY4MGM0MTFmNzUiCitTUkNSRVYgPz0gImNmNGIwMzFhYzg4Yzc4ODllNGYyOWFjN2ZjOGNhNzU5MmJmMTIxNDQiCiAKIEJSQU5DSEFSRyA9ICIke0BbJ25vYnJhbmNoPTEnLCAnYnJhbmNoPSR7QlJBTkNIfSddW2QuZ2V0VmFyKCdCUkFOQ0gnLCBUcnVlKSAhPSAnJ119IgogU1JDX1VSSSA9ICIke1JFUE99OyR7QlJBTkNIQVJHfSIKQEAgLTM3LDggKzM3LDggQEAKIAogICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L29teF9oZWFkZXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9L3ZjdS1vbXgtaWwKIAotICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9iaW4vb214X2RlY29kZXIuZXhlICR7RH0vJHtiaW5kaXJ9L29teF9kZWNvZGVyLmV4ZQotICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9iaW4vb214X2VuY29kZXIuZXhlICR7RH0vJHtiaW5kaXJ9L29teF9lbmNvZGVyLmV4ZQorICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9iaW4vb214X2RlY29kZXIgJHtEfS8ke2JpbmRpcn0vb214X2RlY29kZXIKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7U30vYmluL29teF9lbmNvZGVyICR7RH0vJHtiaW5kaXJ9L29teF9lbmNvZGVyCiAKICAgICBvZV9saWJpbnN0YWxsIC1DICR7U30vYmluLyAtc28gbGliT01YLmFsbGVncm8uY29yZSAke0R9LyR7bGliZGlyfS8KICAgICBvZV9saWJpbnN0YWxsIC1DICR7U30vYmluLyAtc28gbGliT01YLmFsbGVncm8udmlkZW9fZGVjb2RlciAke0R9LyR7bGliZGlyfS8KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW11bHRpbWVkaWEvdmN1L2xpYnZjdS14bG54LmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3UvbGlidmN1LXhsbnguYmIKaW5kZXggOGUyMzY5Yi4uYjA2OGFhOCAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3UvbGlidmN1LXhsbnguYmIKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3UvbGlidmN1LXhsbnguYmIKQEAgLTQsMTIgKzQsMTIgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTAzYTdhZWY3ZTZmNmE3NmE1OWZkOWI4YmE0NTBiNDkzIgogCiBYSUxJTlhfVkNVX1ZFUlNJT04gPSAiMS4wLjAiCi1YSUxJTlhfUkVMRUFTRV9WRVJTSU9OID0gIjIwMTguMSIKK1hJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAiMjAxOC4zIgogUFYgPSAiJHtYSUxJTlhfVkNVX1ZFUlNJT059LXhpbGlueC0ke1hJTElOWF9SRUxFQVNFX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBCUkFOQ0ggPz0gIm1hc3RlciIKIFJFUE8gICA/PSAiZ2l0Oi8vZ2l0aHViLmNvbS94aWxpbngvdmN1LWN0cmwtc3cuZ2l0O3Byb3RvY29sPWh0dHBzIgotU1JDUkVWID0gImFhNGI2ODcxMzQ2YzkxNWYyOGEwNjkxOTBhZmVjNWQzMDk2Mzc2MmYiCitTUkNSRVYgPz0gIjFjYjUyODFkMzE5ZWE0ZjNjMGViNTUxNDg2NGM4MGQ5NWU3OGZlNmUiCiAKIEJSQU5DSEFSRyA9ICIke0BbJ25vYnJhbmNoPTEnLCAnYnJhbmNoPSR7QlJBTkNIfSddW2QuZ2V0VmFyKCdCUkFOQ0gnLCBUcnVlKSAhPSAnJ119IgogU1JDX1VSSSA9ICIke1JFUE99OyR7QlJBTkNIQVJHfSIKQEAgLTI5LDggKzI5LDggQEAKICAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3ZjdS1jdHJsLXN3L2luY2x1ZGUKIAotICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9iaW4vQUxfRW5jb2Rlci5leGUgJHtEfS8ke2JpbmRpcn0vQUxfRW5jb2Rlci5leGUKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7U30vYmluL0FMX0RlY29kZXIuZXhlICR7RH0vJHtiaW5kaXJ9L0FMX0RlY29kZXIuZXhlCisgICAgaW5zdGFsbCAtRG0gMDc1NSAke1N9L2Jpbi9jdHJsc3dfZW5jb2RlciAke0R9LyR7YmluZGlyfS9jdHJsc3dfZW5jb2RlcgorICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9iaW4vY3RybHN3X2RlY29kZXIgJHtEfS8ke2JpbmRpcn0vY3RybHN3X2RlY29kZXIKIAogICAgIG9lX3J1bm1ha2UgaW5zdGFsbF9oZWFkZXJzIElOU1RBTExfSERSX1BBVEg9JHtEfSR7aW5jbHVkZWRpcn0vdmN1LWN0cmwtc3cvaW5jbHVkZQogICAgIG9lX2xpYmluc3RhbGwgLUMgJHtTfS9iaW4vIC1zbyBsaWJhbGxlZ3JvX2RlY29kZSAke0R9LyR7bGliZGlyfS8KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW11bHRpbWVkaWEvdmN1L3ZjdS1maXJtd2FyZS5iYiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcC9yZWNpcGVzLW11bHRpbWVkaWEvdmN1L3ZjdS1maXJtd2FyZS5iYgppbmRleCAxY2IyMTI1Li5kYTQ0N2ZjIDEwMDY0NAotLS0gYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1ic3AvcmVjaXBlcy1tdWx0aW1lZGlhL3ZjdS92Y3UtZmlybXdhcmUuYmIKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtYnNwL3JlY2lwZXMtbXVsdGltZWRpYS92Y3UvdmN1LWZpcm13YXJlLmJiCkBAIC00LDE0ICs0LDE0IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02M2I0NTkwM2E5YTUwMTIwZGY0ODg0MzVmMDNjZjQ5OCIKIAogWElMSU5YX1ZDVV9WRVJTSU9OID0gIjEuMC4wIgotWElMSU5YX1JFTEVBU0VfVkVSU0lPTiA9ICIyMDE4LjEiCitYSUxJTlhfUkVMRUFTRV9WRVJTSU9OID0gIjIwMTguMyIKIFBWID0gIiR7WElMSU5YX1ZDVV9WRVJTSU9OfS14aWxpbngtJHtYSUxJTlhfUkVMRUFTRV9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAogUyAgPSAiJHtXT1JLRElSfS9naXQiCiAKIEJSQU5DSCA/PSAibWFzdGVyIgogUkVQTyA/PSAiZ2l0Oi8vZ2l0aHViLmNvbS94aWxpbngvdmN1LWZpcm13YXJlLmdpdDtwcm90b2NvbD1odHRwcyIKLVNSQ1JFViA/PSAiN2M2ZjI4MmRhMDcyNTNjMTk4NzY2NTg0NmVkNjc2MDU5OTI1ZWY0MCIKK1NSQ1JFViA/PSAiZDAxOTUxOTA1ZTFhZWRiMTc5ZDgzOGE2Yjg2MDE2ZjM0ZTJmNDk2NiIKIAogQlJBTkNIQVJHID0gIiR7QFsnbm9icmFuY2g9MScsICdicmFuY2g9JHtCUkFOQ0h9J11bZC5nZXRWYXIoJ0JSQU5DSCcsIFRydWUpICE9ICcnXX0iCiBTUkNfVVJJICAgPSAiJHtSRVBPfTske0JSQU5DSEFSR30iCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvY29uZi9sYXllci5jb25mCmluZGV4IGFkMjQ4NzcuLjU4YzJhNDYgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvY29uZi9sYXllci5jb25mCkBAIC0xMiw1ICsxMiw1IEBACiBMQVlFUkRFUEVORFNfeGlsaW54LWNvbnRyaWIgPSAiY29yZSIKIExBWUVSREVQRU5EU194aWxpbngtY29udHJpYiA9ICJ4aWxpbngiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF94aWxpbngtY29udHJpYiA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX3hpbGlueC1jb250cmliID0gInN1bW8gdGh1ZCIKIApkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9jb25mL21hY2hpbmUvbWluaXplZC16eW5xNy5jb25mIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9jb25mL21hY2hpbmUvbWluaXplZC16eW5xNy5jb25mCmluZGV4IDhlZTE5ODAuLmRlNjE3ZDAgMTAwNjQ0Ci0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvY29uZi9tYWNoaW5lL21pbml6ZWQtenlucTcuY29uZgorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL2NvbmYvbWFjaGluZS9taW5pemVkLXp5bnE3LmNvbmYKQEAgLTQsMTggKzQsMTYgQEAKIAogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXp5bnEuaW5jCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWRlZmF1bHQuaW5jCi1yZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21hY2hpbmUteGlsaW54LWJvYXJkLmluYwogCiBNQUNISU5FX0ZFQVRVUkVTID0gImV4dDIgdmZhdCB1c2Job3N0IHdpZmkgYmx1ZXRvb3RoIgogCiAjIHUtYm9vdCBjb25maWd1cmF0aW9uCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9ib290bG9hZGVyID0gInUtYm9vdCIKIFVCT09UX01BQ0hJTkUgPSAienlucV9taW5pemVkX2NvbmZpZyIKLVNQTF9CSU5BUlkgPSAic3BsL2Jvb3QuYmluIgogCiBFWFRSQV9JTUFHRURFUEVORFMgKz0gIiBcCiAJCXUtYm9vdC16eW5xLXVlbnYgXAotCQl2aXJ0dWFsL2Jvb3QtYmluIFwKKwkJdmlydHVhbC9ib290bG9hZGVyIFwKIAkJIgogCiBTRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UFMwIgpAQCAtMjYsNyArMjQsNSBAQAogTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImxpbnV4LWZpcm13YXJlLWJjbTQzNDMwIgogCiBJTUFHRV9CT09UX0ZJTEVTICs9ICIgXAotCQlib290LmJpbiBcCi0JCSR7TUFDSElORX0uZHRiIFwKIAkJdUVudi50eHQgXAogCQkiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9taW5pemVkLXUtYm9vdC5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL21pbml6ZWQtdS1ib290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjlkNzJiLi4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL21pbml6ZWQtdS1ib290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAKLUZyb20gZGZlNTcyYmNlYTliNzQwODZkNWJkOWI5NjNhZjI2ZTY0YTA0MzMzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENsZW1lbnQgTGFpZ2xlIDxjbGVtZW50LmxhaWdsZThAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMCBKdW4gMjAxOCAyMzoyMToyOCArMDIwMAotU3ViamVjdDogW1BBVENIXSB6eW5xOiBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBBdm5ldCBNaW5pWmVkCi0KLUluaXRpYWwgc3VwcG9ydCBmb3IgQXZuZXQgTWluaVplZCBib2FyZC4KLQotU2lnbmVkLW9mZi1ieTogQ2xlbWVudCBMYWlnbGUgPGNsZW1lbnQubGFpZ2xlOEBnbWFpbC5jb20+Ci0tLS0KLSBhcmNoL2FybS9kdHMvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKwotIGFyY2gvYXJtL2R0cy96eW5xLW1pbml6ZWQuZHRzICB8IDEwNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGNvbmZpZ3MvenlucV9taW5pemVkX2RlZmNvbmZpZyB8ICA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYXJjaC9hcm0vZHRzL3p5bnEtbWluaXplZC5kdHMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlncy96eW5xX21pbml6ZWRfZGVmY29uZmlnCi0KLWRpZmYgLS1naXQgYS9hcmNoL2FybS9kdHMvTWFrZWZpbGUgYi9hcmNoL2FybS9kdHMvTWFrZWZpbGUKLWluZGV4IGE4OTVjNzAuLjMyZjlhZTEgMTAwNjQ0Ci0tLS0gYS9hcmNoL2FybS9kdHMvTWFrZWZpbGUKLSsrKyBiL2FyY2gvYXJtL2R0cy9NYWtlZmlsZQotQEAgLTEzMiw2ICsxMzIsNyBAQCBkdGItJChDT05GSUdfQVJDSF9aWU5RKSArPSBcCi0gCXp5bnEtY3NlLXFzcGktc2luZ2xlLmR0YiBcCi0gCXp5bnEtbWljcm96ZWQuZHRiIFwKLSAJenlucS1waWNvemVkLmR0YiBcCi0rCXp5bnEtbWluaXplZC5kdGIgXAotIAl6eW5xLXN5enlneS1odWIuZHRiIFwKLSAJenlucS10b3BpYy1taWFtaS5kdGIgXAotIAl6eW5xLXRvcGljLW1pYW1pbGl0ZS5kdGIgXAotZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2R0cy96eW5xLW1pbml6ZWQuZHRzIGIvYXJjaC9hcm0vZHRzL3p5bnEtbWluaXplZC5kdHMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zYTA1NTE4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9hcmNoL2FybS9kdHMvenlucS1taW5pemVkLmR0cwotQEAgLTAsMCArMSwxMDYgQEAKLSsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKLSsvKgotKyAqIGR0cyBmaWxlIGZvciBBdm5ldCBNaW5pWmVkIGJvYXJkCi0rICoKLSsgKiAoQykgQ29weXJpZ2h0IDIwMTcgLSAyMDE4LCBYaWxpbngsIEluYy4KLSsgKgotKyAqIEliYWkgRXJraWFnYSA8aWJhaS5lcmtpYWdhLWVsb3J6YUB4aWxpbnguY29tPgotKyAqLwotKwotKy9kdHMtdjEvOwotKyNpbmNsdWRlICJ6eW5xLTcwMDAuZHRzaSIKLSsKLSsvIHsKLSsgICAgICAgbW9kZWwgPSAiQXZuZXQgWnlucSBNaW5pWmVkIERldmVsb3BtZW50IEJvYXJkIjsKLSsgICAgICAgY29tcGF0aWJsZSA9ICJhdm5ldCxtaW5pemVkIiwgInhsbngsenlucS03MDAwIjsKLSsKLSsgICAgICAgYWxpYXNlcyB7Ci0rICAgICAgICAgICAgICAgc2VyaWFsMCA9ICZ1YXJ0MTsKLSsgICAgICAgICAgICAgICBzZXJpYWwxID0gJnVhcnQwOwotKyAgICAgICAgICAgICAgIHNwaTAgPSAmcXNwaTsKLSsgICAgICAgICAgICAgICBtbWMwID0gJnNkaGNpMDsKLSsgICAgICAgfTsKLSsKLSsgICAgICAgbWVtb3J5QDAgewotKyAgICAgICAgICAgICAgIGRldmljZV90eXBlID0gIm1lbW9yeSI7Ci0rICAgICAgICAgICAgICAgcmVnID0gPDB4MCAweDIwMDAwMDAwPjsKLSsgICAgICAgfTsKLSsKLSsgICAgICAgY2hvc2VuIHsKLSsgICAgICAgICAgICAgICBib290YXJncyA9ICIiOwotKyAgICAgICAgICAgICAgIHN0ZG91dC1wYXRoID0gInNlcmlhbDA6MTE1MjAwbjgiOwotKyAgICAgICB9OwotKwotKyAgICAgICB1c2JfcGh5MDogcGh5MCB7Ci0rICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJ1c2Itbm9wLXhjZWl2IjsKLSsgICAgICAgICAgICAgICAjcGh5LWNlbGxzID0gPDA+OwotKyAgICAgICB9OwotK307Ci0rCi0rJnFzcGkgewotKyAgICAgICBzdGF0dXMgPSAib2theSI7Ci0rICAgICAgIGlzLWR1YWwgPSA8MD47Ci0rICAgICAgIG51bS1jcyA9IDwxPjsKLSsgICAgICAgZmxhc2hAMCB7Ci0rICAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJtaWNyb24sbTI1cDEyOCI7Ci0rICAgICAgICAgICAgICAgcmVnID0gPDB4MD47Ci0rICAgICAgICAgICAgICAgc3BpLXR4LWJ1cy13aWR0aCA9IDw0PjsKLSsgICAgICAgICAgICAgICBzcGktcngtYnVzLXdpZHRoID0gPDQ+OwotKyAgICAgICAgICAgICAgIHNwaS1tYXgtZnJlcXVlbmN5ID0gPDUwMDAwMDAwPjsKLSsgICAgICAgICAgICAgICBwYXJ0aXRpb25zIHsKLSsgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiZml4ZWQtcGFydGl0aW9ucyI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAjYWRkcmVzcy1jZWxscyA9IDwxPjsKLSsgICAgICAgICAgICAgICAgICAgICAgICNzaXplLWNlbGxzID0gPDE+OwotKyAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uQDAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICJib290IjsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDB4MCAweGZmMDAwMD47Ci0rICAgICAgICAgICAgICAgICAgICAgICB9OwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uQDI3MDAwMCB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gImtlcm5lbCI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDI3MDAwMCAweGQ4MDAwMD47Ci0rICAgICAgICAgICAgICAgICAgICAgICB9OwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uQGZmMDAwMCB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gImJvb3RlbnYiOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWcgPSA8MHhmZjAwMDAgMHgxMDAwMD47Ci0rICAgICAgICAgICAgICAgICAgICAgICB9OwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgcGFydGl0aW9uQDEwMDAwMDAgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICJzcGFyZSI7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZyA9IDwweDEwMDAwMDAgMHgwPjsKLSsgICAgICAgICAgICAgICAgICAgICAgIH07Ci0rICAgICAgICAgICAgICAgfTsKLSsgICAgICAgfTsKLSt9OwotKwotKyZ1YXJ0MCB7Ci0rICAgICAgIHN0YXR1cyA9ICJva2F5IjsKLSt9OwotKwotKyZ1YXJ0MSB7Ci0rICAgICAgIHUtYm9vdCxkbS1wcmUtcmVsb2M7Ci0rICAgICAgIHN0YXR1cyA9ICJva2F5IjsKLSt9OwotKwotKyZ1c2IwIHsKLSsgICAgICAgc3RhdHVzID0gIm9rYXkiOwotKyAgICAgICBkcl9tb2RlID0gImhvc3QiOwotKyAgICAgICB1c2ItcGh5ID0gPCZ1c2JfcGh5MD47Ci0rICAgICAgIHVzYi1yZXNldCA9IDwmZ3BpbzAgNyAwPjsgLyogVVNCX1JTVF9OLU1JTzcgKi8KLSt9OwotKwotKyZzZGhjaTEgewotKyAgICAgICBzdGF0dXMgPSAib2theSI7Ci0rICAgICAgIG5vbi1yZW1vdmFibGU7Ci0rICAgICAgIGJ1cy13aWR0aCA9IDw0PjsKLSsgICAgICAgbWF4LWZyZXF1ZW5jeSA9IDwxMjAwMDAwMD47Ci0rCi0rICAgICAgICNhZGRyZXNzLWNlbGxzID0gPDE+OwotKyAgICAgICAjc2l6ZS1jZWxscyA9IDwwPjsKLSsgICAgICAgbW1jY2FyZDogbW1jY2FyZEAwIHsKLSsgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gIm1tYy1jYXJkIjsKLSsgICAgICAgICAgICAgICByZWcgPSA8MD47Ci0rICAgICAgICAgICAgICAgYnJva2VuLWhwaTsKLSsgICAgICAgfTsKLSt9OwotZGlmZiAtLWdpdCBhL2NvbmZpZ3MvenlucV9taW5pemVkX2RlZmNvbmZpZyBiL2NvbmZpZ3MvenlucV9taW5pemVkX2RlZmNvbmZpZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ0ZDY1ZmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2NvbmZpZ3MvenlucV9taW5pemVkX2RlZmNvbmZpZwotQEAgLTAsMCArMSw2OCBAQAotK0NPTkZJR19BUk09eQotK0NPTkZJR19BUkNIX1pZTlE9eQotK0NPTkZJR19TWVNfVEVYVF9CQVNFPTB4NDAwMDAwMAotK0NPTkZJR19TUEw9eQotK0NPTkZJR19TUExfU1RBQ0tfUl9BRERSPTB4MjAwMDAwCi0rQ09ORklHX0RFRkFVTFRfREVWSUNFX1RSRUU9Inp5bnEtbWluaXplZCIKLStDT05GSUdfREVCVUdfVUFSVD15Ci0rQ09ORklHX0RJU1RST19ERUZBVUxUUz15Ci0rIyBDT05GSUdfRElTUExBWV9DUFVJTkZPIGlzIG5vdCBzZXQKLStDT05GSUdfRklUPXkKLStDT05GSUdfRklUX1NJR05BVFVSRT15Ci0rQ09ORklHX0ZJVF9WRVJCT1NFPXkKLStDT05GSUdfQk9PVENPTU1BTkQ9InJ1biAkbW9kZWJvb3QgfHwgcnVuIGRpc3Ryb19ib290Y21kIgotK0NPTkZJR19TUExfU1RBQ0tfUj15Ci0rQ09ORklHX1NQTF9PU19CT09UPXkKLStDT05GSUdfU1lTX1BST01QVD0iWnlucT4gIgotK0NPTkZJR19DTURfVEhPUl9ET1dOTE9BRD15Ci0rQ09ORklHX0NNRF9ERlU9eQotKyMgQ09ORklHX0NNRF9GTEFTSCBpcyBub3Qgc2V0Ci0rQ09ORklHX0NNRF9GUEdBX0xPQURCUD15Ci0rQ09ORklHX0NNRF9GUEdBX0xPQURGUz15Ci0rQ09ORklHX0NNRF9GUEdBX0xPQURNSz15Ci0rQ09ORklHX0NNRF9GUEdBX0xPQURQPXkKLStDT05GSUdfQ01EX0dQSU89eQotK0NPTkZJR19DTURfTU1DPXkKLStDT05GSUdfQ01EX1NGPXkKLStDT05GSUdfQ01EX1VTQj15Ci0rIyBDT05GSUdfQ01EX1NFVEVYUFIgaXMgbm90IHNldAotK0NPTkZJR19DTURfVEZUUFBVVD15Ci0rQ09ORklHX0NNRF9DQUNIRT15Ci0rQ09ORklHX0NNRF9FWFQ0X1dSSVRFPXkKLStDT05GSUdfRU5WX0lTX0lOX1NQSV9GTEFTSD15Ci0rQ09ORklHX05FVF9SQU5ET01fRVRIQUREUj15Ci0rQ09ORklHX1NQTF9ETV9TRVFfQUxJQVM9eQotK0NPTkZJR19ERlVfTU1DPXkKLStDT05GSUdfREZVX1JBTT15Ci0rQ09ORklHX0ZQR0FfWElMSU5YPXkKLStDT05GSUdfRlBHQV9aWU5RUEw9eQotK0NPTkZJR19ETV9HUElPPXkKLStDT05GSUdfTU1DX1NESENJPXkKLStDT05GSUdfTU1DX1NESENJX1pZTlE9eQotK0NPTkZJR19TUElfRkxBU0g9eQotK0NPTkZJR19TUElfRkxBU0hfQkFSPXkKLStDT05GSUdfU1BJX0ZMQVNIX1NQQU5TSU9OPXkKLStDT05GSUdfU1BJX0ZMQVNIX1NUTUlDUk89eQotK0NPTkZJR19TUElfRkxBU0hfV0lOQk9ORD15Ci0rQ09ORklHX1BIWV9NQVJWRUxMPXkKLStDT05GSUdfUEhZX1JFQUxURUs9eQotK0NPTkZJR19QSFlfWElMSU5YPXkKLStDT05GSUdfWllOUV9HRU09eQotK0NPTkZJR19ERUJVR19VQVJUX1pZTlE9eQotK0NPTkZJR19ERUJVR19VQVJUX0JBU0U9MHhlMDAwMTAwMAotK0NPTkZJR19ERUJVR19VQVJUX0NMT0NLPTUwMDAwMDAwCi0rQ09ORklHX1pZTlFfU0VSSUFMPXkKLStDT05GSUdfWllOUV9RU1BJPXkKLStDT05GSUdfVVNCPXkKLStDT05GSUdfVVNCX0VIQ0lfSENEPXkKLStDT05GSUdfVVNCX1VMUElfVklFV1BPUlQ9eQotK0NPTkZJR19VU0JfVUxQST15Ci0rQ09ORklHX1VTQl9TVE9SQUdFPXkKLStDT05GSUdfVVNCX0dBREdFVD15Ci0rQ09ORklHX1VTQl9HQURHRVRfTUFOVUZBQ1RVUkVSPSJYaWxpbngiCi0rQ09ORklHX1VTQl9HQURHRVRfVkVORE9SX05VTT0weDAzZmQKLStDT05GSUdfVVNCX0dBREdFVF9QUk9EVUNUX05VTT0weDAzMDAKLStDT05GSUdfQ0lfVURDPXkKLStDT05GSUdfVVNCX0dBREdFVF9ET1dOTE9BRD15Ci0rQ09ORklHX1VTQl9GVU5DVElPTl9USE9SPXkKLStDT05GSUdfT0ZfRU1CRUQ9eQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfJS5iYmFwcGVuZCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8lLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRiZGI0Li4wMDAwMDAwCi0tLSBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8lLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9maWxlczoiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vbWluaXplZC11LWJvb3QucGF0Y2giCi0KLUhBU19QTEFURk9STV9JTklUX2FwcGVuZCA9ICIgXAotCQl6eW5xX21pbml6ZWRfY29uZmlnIFwKLQkJIgotCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXyUuYmJhcHBlbmQKaW5kZXggNzY1NWNhZi4uYjM0ZWVhMyAxMDA2NDQKLS0tIGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8lLmJiYXBwZW5kCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfJS5iYmFwcGVuZApAQCAtMSwxMSArMSwzIEBACi1MSUNFTlNFX2FwcGVuZF9taW5pemVkLXp5bnE3ID0gIlwKLSAgICAmIEZpcm13YXJlLWN5cHJlc3MgXAotIgotCi1MSUNfRklMRVNfQ0hLU1VNX2FwcGVuZF9taW5pemVkLXp5bnE3ID0gIlwKLSAgICBmaWxlOi8vTElDRU5DRS5jeXByZXNzO21kNT1jYmM1ZjY2NWQwNGY3NDFmMWUwMDZkMjA5NjIzNmJhNyBcCi0iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY3lwcmVzc10gPSAiTElDRU5DRS5jeXByZXNzIgogCiBTUkNfVVJJX2FwcGVuZF9taW5pemVkLXp5bnE3ID0gIiBcCiAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9tdXJhdGEtd2lyZWxlc3MvY3l3LWZtYWMtbnZyYW07cHJvdG9jb2w9Z2l0O2JyYW5jaD1vcmdhO2Rlc3RzdWZmaXg9Y3l3LWZtYWMtbnZyYW07bmFtZT1jeXctZm1hYy1udnJhbSBcCkBAIC0yOCw3ICsyMCw2IEBACiB9CiAKIFBBQ0tBR0VTX3ByZXBlbmRfbWluaXplZC16eW5xNyA9ICJcCi0gICAgJHtQTn0tY3lwcmVzcy1saWNlbnNlIFwKICAgICAke1BOfS1iY200MzQzMGExLWhjZCBcCiAgICAgJHtQTn0tbWZndGVzdCBcCiAiCkBAIC00MSwxMSArMzIsNiBAQAogICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8gYnJjbWZtYWM0MzQzMC1zZGlvLnR4dCBcCiAiCiAKLSMgRm9yIGFkZGl0aW9uYWwgQ3lwcmVzcwotRklMRVNfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIlwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MgXAotIgotCiBMSUNFTlNFXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIkZpcm13YXJlLWN5cHJlc3MiCiAKIEZJTEVTXyR7UE59LWJjbTQzNDMwYTEtaGNkID0gIiBcCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbngvdjIwMTguMS8wMDAxLWRybS14aWxpbngtQWRkLWVuY29kZXItZm9yLURpZ2lsZW50LWJvYXJkcy5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4zLzAwMDEtZHJtLXhpbGlueC1BZGQtZW5jb2Rlci1mb3ItRGlnaWxlbnQtYm9hcmRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbngvdjIwMTguMS8wMDAxLWRybS14aWxpbngtQWRkLWVuY29kZXItZm9yLURpZ2lsZW50LWJvYXJkcy5wYXRjaApyZW5hbWUgdG8gbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54L3YyMDE4LjMvMDAwMS1kcm0teGlsaW54LUFkZC1lbmNvZGVyLWZvci1EaWdpbGVudC1ib2FyZHMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4xLzAwMDItY2xrLUFkZC1kcml2ZXItZm9yLWF4aV9keW5jbGstSVAtQ29yZS5wYXRjaCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4zLzAwMDItY2xrLUFkZC1kcml2ZXItZm9yLWF4aV9keW5jbGstSVAtQ29yZS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54L3YyMDE4LjEvMDAwMi1jbGstQWRkLWRyaXZlci1mb3ItYXhpX2R5bmNsay1JUC1Db3JlLnBhdGNoCnJlbmFtZSB0byBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbngvdjIwMTguMy8wMDAyLWNsay1BZGQtZHJpdmVyLWZvci1heGlfZHluY2xrLUlQLUNvcmUucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4xLzAwMDMtZHJtLXhpbGlueC1GaXgtRFBNUy10cmFuc2l0aW9uLXRvLW9uLnBhdGNoIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54L3YyMDE4LjMvMDAwMy1kcm0teGlsaW54LUZpeC1EUE1TLXRyYW5zaXRpb24tdG8tb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4xLzAwMDMtZHJtLXhpbGlueC1GaXgtRFBNUy10cmFuc2l0aW9uLXRvLW9uLnBhdGNoCnJlbmFtZSB0byBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbngvdjIwMTguMy8wMDAzLWRybS14aWxpbngtRml4LURQTVMtdHJhbnNpdGlvbi10by1vbi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtY29udHJpYi9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC14bG54L3YyMDE4LjEvMDAwNC1taW5pemVkLXdpZmktYmx1ZXRvb3RoLmNmZyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4zLzAwMDQtbWluaXplZC13aWZpLWJsdWV0b290aC5jZmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4xLzAwMDQtbWluaXplZC13aWZpLWJsdWV0b290aC5jZmcKcmVuYW1lIHRvIG1ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueC92MjAxOC4zLzAwMDQtbWluaXplZC13aWZpLWJsdWV0b290aC5jZmcKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LWNvbnRyaWIvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteGxueF8yMDE4LjEuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnhfMjAxOC4zLmJiYXBwZW5kCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnhfMjAxOC4xLmJiYXBwZW5kCnJlbmFtZSB0byBtZXRhLXhpbGlueC9tZXRhLXhpbGlueC1jb250cmliL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXhsbnhfMjAxOC4zLmJiYXBwZW5kCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL1JFQURNRS5tZCBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MDBmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL1JFQURNRS5tZApAQCAtMCwwICsxLDU0IEBACittZXRhLXhpbGlueC1zdGFuZGFsb25lCis9PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgbGF5ZXIgaXMgbWVhbnQgdG8gYXVnbWVudCBZb2N0by9PRSBmdW5jdGlvbmFsaXR5IHRvIHByb3ZpZGUgYSBCYXJlbWV0YWwvU3RhbmRhbG9uZSBUb29sY2hhaW4uCisKKworTWFpbnRhaW5lcnMsIE1haWxpbmcgbGlzdCwgUGF0Y2hlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQbGVhc2Ugc2VuZCBhbnkgcGF0Y2hlcywgcHVsbCByZXF1ZXN0cywgY29tbWVudHMgb3IgcXVlc3Rpb25zIGZvciB0aGlzIGxheWVyIHRvCit0aGUgW21ldGEteGlsaW54IG1haWxpbmcgbGlzdF0oaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL2xpc3RpbmZvL21ldGEteGlsaW54KToKKworCW1ldGEteGlsaW54QGxpc3RzLnlvY3RvcHJvamVjdC5vcmcKKworTWFpbnRhaW5lcnM6CisKKwlBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvIDxhbGVqYW5kckB4aWxpbnguY29tPgorCU1hbmp1a3VtYXIgSGFydGhpa290ZSBNYXRoYSA8bWFuanVrdW1hci5oYXJ0aGlrb3RlLW1hdGhhQHhpbGlueC5jb20+CisKK0RlcGVuZGVuY2llcworPT09PT09PT09PT09CisKK1RoaXMgbGF5ZXIgZGVwZW5kcyBvbjoKKworICAgICBVUkk6IGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKKworICAgICBVUkk6IGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL21ldGEteGlsaW54L21ldGEteGlsaW54LWJzcAorCitVc2FnZQorPT09PT0KKworMS4tIENsb25lIHRoaXMgbGF5ZXIgYWxvbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGxheWVycworCisyLi0gJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYKKworMy4tIEFkZCB0aGlzIGxheWVyIHRvIEJCTEFZRVJTIG9uIGNvbmYvYmJsYXllcnMuY29uZgorCis0Li0gQWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciBjb25mL2xvY2FsLmNvbmYgdG8gYnVpbGQgZm9yIHRoZSBtaWNyb2JsYXplIGFyY2hpdGVjdHVyZToKKworRElTVFJPPSJ4aWxpbngtc3RhbmRhbG9uZSIKKworTUFDSElORT0ienlucW1wLXBtdSIKKworR0NDVkVSU0lPTj0iNy4lIgorCis1Li0gQnVpbGQgYSBwYWNrYWdlOgorCitmb3IgZXhhbXBsZToKKworJCBiaXRiYWtlIG5ld2xpYgorCitvcgorCiskIGJpdGJha2UgbWV0YS10b29sY2hhaW4KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvY29uZi9kaXN0cm8veGlsaW54LXN0YW5kYWxvbmUuY29uZiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvY29uZi9kaXN0cm8veGlsaW54LXN0YW5kYWxvbmUuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2QyM2NjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtc3RhbmRhbG9uZS9jb25mL2Rpc3Ryby94aWxpbngtc3RhbmRhbG9uZS5jb25mCkBAIC0wLDAgKzEsMTMgQEAKK0RJU1RSTyA9ICJ4aWxpbngtc3RhbmRhbG9uZSIKK0RJU1RST19OQU1FID0gIlhpbGlueCBTdGFuZGFsb25lIERpc3RybyIKK0RJU1RST19WRVJTSU9OID0gIjEuMCIKK1RBUkdFVF9WRU5ET1IgPSAiLXhpbGlueCIKKworVENMSUJDID0gIm5ld2xpYiIKK1RDTElCQ0FQUEVORCA9IiIKKworIyBDaGFuZ2UgU0RLIG5hbWUKK1NES19WRVJTSU9OID0gInhpbGlueC1zdGFuZGFsb25lIgorCityZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYworSU5IRVJJVCArPSAidW5pbmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS14aWxpbngvbWV0YS14aWxpbngtc3RhbmRhbG9uZS9jb25mL2xheWVyLmNvbmYgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL2NvbmYvbGF5ZXIuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDljYzU5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtc3RhbmRhbG9uZS9jb25mL2xheWVyLmNvbmYKQEAgLTAsMCArMSwxNCBAQAorIyBXZSBoYXZlIGEgY29uZiBhbmQgY2xhc3NlcyBkaXJlY3RvcnksIGFkZCB0byBCQlBBVEgKK0JCUEFUSCAuPSAiOiR7TEFZRVJESVJ9IgorCisjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUworQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCisJJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKKworQkJGSUxFX0NPTExFQ1RJT05TICs9ICJ4aWxpbngtc3RhbmRhbG9uZSIKK0JCRklMRV9QQVRURVJOX3hpbGlueC1zdGFuZGFsb25lID0gIl4ke0xBWUVSRElSfS8iCitCQkZJTEVfUFJJT1JJVFlfeGlsaW54LXN0YW5kYWxvbmUgPSAiNSIKKworTEFZRVJERVBFTkRTX3hpbGlueC1zdGFuZGFsb25lID0gImNvcmUgeGlsaW54IgorCitMQVlFUlNFUklFU19DT01QQVRfeGlsaW54LXN0YW5kYWxvbmUgPSAidGh1ZCIKZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvY29uZi9tYWNoaW5lL3p5bnFtcC1wbXUuY29uZiBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvY29uZi9tYWNoaW5lL3p5bnFtcC1wbXUuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjY5MmRiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtc3RhbmRhbG9uZS9jb25mL21hY2hpbmUvenlucW1wLXBtdS5jb25mCkBAIC0wLDAgKzEsMTEgQEAKK0RFRkFVTFRUVU5FID89ICJtaWNyb2JsYXplIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYworCisjIEVuZGlhbmVzcywgbXVsdGlwbGllciwgYmFycmVsIHNoaWZ0LCBwYXR0ZXJuIGNvbXBhcmUsIGZsb2F0aW5nIHBvaW50IGRvdWJsZSBvciBzaW5nbGUsIGFyZSB0aGUgcG9zc2liaWxpdGllcworQVZBSUxUVU5FUyArPSAibWljcm9ibGF6ZSIKK1RVTkVfRkVBVFVSRVNfdHVuZS1taWNyb2JsYXplID0gIm1pY3JvYmxhemUgdjkuMiBiYXJyZWwtc2hpZnQgcGF0dGVybi1jb21wYXJlIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pY3JvYmxhemUgPSAiJHtUVU5FX1BLR0FSQ0h9IgorU09DX0ZBTUlMWSA9ICJ6eW5xbXAiCisKK1RBUkdFVF9MSU5LX0hBU0hfU1RZTEVfbWljcm9ibGF6ZSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9nY2MvZ2NjLWNyb3NzXyUuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9nY2MvZ2NjLWNyb3NzXyUuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZjZGEzZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvcmVjaXBlcy1zdGFuZGFsb25lL2djYy9nY2MtY3Jvc3NfJS5iYmFwcGVuZApAQCAtMCwwICsxLDE4IEBACisjIEJ5IHVzaW5nIHRjbGliYy1iYXJlbWV0YWwgd2UgbG9vc2Ugc3lzcm9vdCBmdW5jdGlvbmFsaXR5IGR1ZSB0byBzb21lCisjIGFwcGVuZC9vdmVycmlkZSBiZWhhdmlvciBXZSBuZWVkIHRvIGdldCB0aGF0IGJhY2sgLCB0aGUgZm9sbG93aW5nIGFwcGVuZAorIyBvdmVycmlkZXMgZXZlcnl0aGluZyBvbiBFWFRSQV9PRUNPTkYgZm9yIGdjYyBjcm9zcyB0YXJnZXQgaXQgYXZvaWRzCisjIG92ZXJsYXBwaW5nIHdpdGggY3J0MCBiZWNhdXNlIG9mIC0tZW5hYmxlLWxpbmtlci1pZCBmcm9tIEVYVFJBX09FQ09ORgorCitFWFRSQV9PRUNPTkZfQkFTRV9wbi1nY2MtY3Jvc3MtJHtUQVJHRVRfQVJDSH1fYXBwZW5kID0gIiBcCisgICAgJHtMVE99IFwKKyAgICAke1NTUH0gXAorICAgIC0tZW5hYmxlLWxpYml0bSBcCisgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgLS13aXRoLXBwbD1ubyBcCisgICAgLS13aXRoLWNsb29nPW5vIFwKKyAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKKyAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCisgICAgLS13aXRob3V0LWlzbCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9uZXdsaWIvbGliZ2xvc3NfMy4wLjAuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9uZXdsaWIvbGliZ2xvc3NfMy4wLjAuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM0ZGI4OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvcmVjaXBlcy1zdGFuZGFsb25lL25ld2xpYi9saWJnbG9zc18zLjAuMC5iYmFwcGVuZApAQCAtMCwwICsxLDEwIEBACitkb19jb25maWd1cmVfcHJlcGVuZF9taWNyb2JsYXplKCkgeworICAgICMgaGFjayBmb3IgbWljcm9ibGF6ZSwgd2hpY2ggbmVlZHMgeGlsaW54LmxkIHRvIGxpdGVyYWxseSBkbyBhbnkgbGlua2luZyAoaXRzIGhhcmQgY29kZWQgaW4gaXRzIExJTktfU1BFQykKKyAgICBleHBvcnQgQ0M9IiR7Q0N9IC1MJHtTfS9saWJnbG9zcy9taWNyb2JsYXplIgorfQorCisKKyMgV2UgdXNlIGxpYmdsb3NzIGFzIGlmIGl0IHdhcyBsaWJ4aWwsIHRvIGF2b2lkIGxpbmtpbmcgaXNzdWVzCitkb19pbnN0YWxsX2FwcGVuZF96eW5xbXAtcG11KCl7CisgIGNwICR7RH0vJHtsaWJkaXJ9L2xpYmdsb3NzLmEgJHtEfS8ke2xpYmRpcn0vbGlieGlsLmEKK30KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvcmVjaXBlcy1zdGFuZGFsb25lL25ld2xpYi9uZXdsaWJfMy4wLjAuYmJhcHBlbmQgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9uZXdsaWIvbmV3bGliXzMuMC4wLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MjQ5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLXhpbGlueC9tZXRhLXhpbGlueC1zdGFuZGFsb25lL3JlY2lwZXMtc3RhbmRhbG9uZS9uZXdsaWIvbmV3bGliXzMuMC4wLmJiYXBwZW5kCkBAIC0wLDAgKzEsNCBAQAorZG9fY29uZmlndXJlX3ByZXBlbmRfbWljcm9ibGF6ZSgpIHsKKyAgICAjIGhhY2sgZm9yIG1pY3JvYmxhemUsIHdoaWNoIG5lZWRzIHhpbGlueC5sZCB0byBsaXRlcmFsbHkgZG8gYW55IGxpbmtpbmcgKGl0cyBoYXJkIGNvZGVkIGluIGl0cyBMSU5LX1NQRUMpCisgICAgZXhwb3J0IENDPSIke0NDfSAtTCR7U30vbGliZ2xvc3MvbWljcm9ibGF6ZSIKK30KZGlmZiAtLWdpdCBhL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvcmVjaXBlcy1zdGFuZGFsb25lL3BtdS1maXJtd2FyZS9wbXUtZmlybXdhcmVfMjAxOC4zLmJiIGIvbWV0YS14aWxpbngvbWV0YS14aWxpbngtc3RhbmRhbG9uZS9yZWNpcGVzLXN0YW5kYWxvbmUvcG11LWZpcm13YXJlL3BtdS1maXJtd2FyZV8yMDE4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ3ZTA3MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEteGlsaW54L21ldGEteGlsaW54LXN0YW5kYWxvbmUvcmVjaXBlcy1zdGFuZGFsb25lL3BtdS1maXJtd2FyZS9wbXUtZmlybXdhcmVfMjAxOC4zLmJiCkBAIC0wLDAgKzEsNzEgQEAKK2luaGVyaXQgZGVwbG95CisKK0xJQ0VOU0UgPSAiUHJvcHJpZXRhcnkiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi8uLi8uLi8uLi9saWNlbnNlLnR4dDttZDU9NzE2MDJjZTFiYzI5MTdhOWJlMDdjZWVlNmZhYjY3MTEiCisKK1hJTElOWF9SRUxFQVNFX1ZFUlNJT04gPSAidjIwMTguMyIKK1NSQ1JFViA9ICI1NmYzZGEyYWZiYzgxNzk4OGM5YTQ1YjBiMjZhN2ZlZjJhYzkxNzA2IgorUFYgPSAiJHtYSUxJTlhfUkVMRUFTRV9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1hpbGlueC9lbWJlZGRlZHN3LmdpdDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xIgorCitDT01QQVRJQkxFX0hPU1QgPSAibWljcm9ibGF6ZS4qLWVsZiIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJeJCIKK0NPTVBBVElCTEVfTUFDSElORV96eW5xbXAtcG11ID0gInp5bnFtcC1wbXUiCisKKworUyA9ICIke1dPUktESVJ9L2dpdC9saWIvc3dfYXBwcy96eW5xbXBfcG11Zncvc3JjIgorCisjIFRoZSBtYWtlZmlsZSBkb2VzIG5vdCBoYW5kbGUgcGFyYWxsZWxpemF0aW9uCitQQVJBTExFTF9NQUtFID0gIiIKKworZG9fY29uZmlndXJlKCkgeworICAgICMgbWFudWFsbHkgZG8gdGhlIGNvcHlfYnNwIHN0ZXAgZmlyc3QsIHNvIGFzIHRvIGJlIGFibGUgdG8gZml4IHVwIHVzZSBvZgorICAgICMgbWItKiBjb21tYW5kcworICAgICR7U30vLi4vbWlzYy9jb3B5X2JzcC5zaAorfQorCitDT01QSUxFUiA9ICIke0NDfSIKK0NPTVBJTEVSX0ZMQUdTID0gIi1PMiAtYyIKK0VYVFJBX0NPTVBJTEVSX0ZMQUdTID0gIi1nIC1XYWxsIC1XZXh0cmEgLU9zIC1mbHRvIC1mZmF0LWx0by1vYmplY3RzIgorQVJDSElWRVIgPSAiJHtBUn0iCisKK0JTUF9ESVIgPz0gIiR7U30vLi4vbWlzYy96eW5xbXBfcG11ZndfYnNwIgorQlNQX1RBUkdFVFNfRElSID89ICIke0JTUF9ESVJ9L3BzdV9wbXVfMC9saWJzcmMiCisKK2RlZiBic3BfbWFrZV92YXJzKGQpOgorICAgIHMgPSBbIkNPTVBJTEVSIiwgIkNDIiwgIkNPTVBJTEVSX0ZMQUdTIiwgIkVYVFJBX0NPTVBJTEVSX0ZMQUdTIiwgIkFSQ0hJVkVSIiwgIkFSIiwgIkFTIl0KKyAgICByZXR1cm4gIiAiLmpvaW4oWyJcIiVzPSVzXCIiICUgKHYsIGQuZ2V0VmFyKHYpKSBmb3IgdiBpbiBzXSkKKworZG9fY29tcGlsZSgpIHsKKyAgICAjIHRoZSBNYWtlZmlsZSBpbiAke1N9Ly4uL21pc2MvTWFrZWZpbGUsIGRvZXMgbm90IGhhbmRsZSBDQywgQVIsIEFTLCBldGMKKyAgICAjIHByb3Blcmx5LiBTbyBkbyBpdHMgam9iIG1hbnVhbGx5LiBQcmVwYXJpbmcgdGhlIGluY2x1ZGVzIGZpcnN0LCB0aGVuIGxpYnMuCisgICAgZm9yIGkgaW4gJChscyAke0JTUF9UQVJHRVRTX0RJUn0vKi9zcmMvTWFrZWZpbGUpOyBkbworICAgICAgICBvZV9ydW5tYWtlIC1DICQoZGlybmFtZSAkaSkgLXMgaW5jbHVkZSAke0Bic3BfbWFrZV92YXJzKGQpfQorICAgIGRvbmUKKyAgICBmb3IgaSBpbiAkKGxzICR7QlNQX1RBUkdFVFNfRElSfS8qL3NyYy9NYWtlZmlsZSk7IGRvCisgICAgICAgIG9lX3J1bm1ha2UgLUMgJChkaXJuYW1lICRpKSAtcyBsaWJzICR7QGJzcF9tYWtlX3ZhcnMoZCl9CisgICAgZG9uZQorCisgICAgIyAtLWJ1aWxkLWlkPW5vbmUgaXMgcmVxdWlyZWQgZHVlIHRvIGxpbmtlciBzY3JpcHQgbm90IGRlZmluaW5nIGEgbG9jYXRpb24gZm9yIGl0LgorICAgICMgQWdhaW4sIHJlY2lwZS1zeXN0b290IGluY2x1ZGUgaXMgbmVjZXNzYXJ5CisgICAgb2VfcnVubWFrZSBDQz0iJHtDQ30iIENDX0ZMQUdTPSItTU1EIC1NUCAtV2wsLS1idWlsZC1pZD1ub25lIC1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9L3Vzci9pbmNsdWRlIgorfQorCitkb19pbnN0YWxsKCkgeworICAgIDoKK30KKworUE1VX0ZJUk1XQVJFX0JBU0VfTkFNRSA/PSAiJHtCUE59LSR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCitQTVVfRklSTVdBUkVfQkFTRV9OQU1FW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKKworZG9fZGVwbG95KCkgeworICAgIGluc3RhbGwgLURtIDA2NDQgJHtCfS9leGVjdXRhYmxlLmVsZiAke0RFUExPWURJUn0vJHtQTVVfRklSTVdBUkVfQkFTRV9OQU1FfS5lbGYKKyAgICBsbiAtc2YgJHtQTVVfRklSTVdBUkVfQkFTRV9OQU1FfS5lbGYgJHtERVBMT1lESVJ9LyR7QlBOfS0ke01BQ0hJTkV9LmVsZgorICAgICR7T0JKQ09QWX0gLU8gYmluYXJ5ICR7Qn0vZXhlY3V0YWJsZS5lbGYgJHtCfS9leGVjdXRhYmxlLmJpbgorICAgIGluc3RhbGwgLW0gMDY0NCAke0J9L2V4ZWN1dGFibGUuYmluICR7REVQTE9ZRElSfS8ke1BNVV9GSVJNV0FSRV9CQVNFX05BTUV9LmJpbgorICAgIGxuIC1zZiAke1BNVV9GSVJNV0FSRV9CQVNFX05BTUV9LmJpbiAke0RFUExPWURJUn0vJHtCUE59LSR7TUFDSElORX0uYmluCit9CisKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbnN0YWxsCisKZGlmZiAtLWdpdCBhL3Bva3kvLmdpdGlnbm9yZSBiL3Bva3kvLmdpdGlnbm9yZQppbmRleCBkM2VmNDczLi5hZDFjYjgzIDEwMDY0NAotLS0gYS9wb2t5Ly5naXRpZ25vcmUKKysrIGIvcG9reS8uZ2l0aWdub3JlCkBAIC0xLDYgKzEsNyBAQAogKi5weWMKICoucHlvCiAvKi5wYXRjaAorLy5yZXBvLwogL2J1aWxkKi8KIHB5c2h0YWJsZXMucHkKIHBzdGFnZS8KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZSBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZQppbmRleCAzNDJjZWY5Li41N2RlYzJhIDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCkBAIC0zOCw3ICszOCw3IEBACiBpZiBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgIT0gInV0Zi04IjoKICAgICBzeXMuZXhpdCgiUGxlYXNlIHVzZSBhIGxvY2FsZSBzZXR0aW5nIHdoaWNoIHN1cHBvcnRzIFVURi04IChzdWNoIGFzIExBTkc9ZW5fVVMuVVRGLTgpLlxuUHl0aG9uIGNhbid0IGNoYW5nZSB0aGUgZmlsZXN5c3RlbSBsb2NhbGUgYWZ0ZXIgbG9hZGluZyBzbyB3ZSBuZWVkIGEgVVRGLTggd2hlbiBQeXRob24gc3RhcnRzIG9yIHRoaW5ncyB3b24ndCB3b3JrLiIpCiAKLV9fdmVyc2lvbl9fID0gIjEuMzguMCIKK19fdmVyc2lvbl9fID0gIjEuNDAuMCIKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpZiBfX3ZlcnNpb25fXyAhPSBiYi5fX3ZlcnNpb25fXzoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1zZWxmdGVzdCBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1zZWxmdGVzdAppbmRleCBhZmUxNjAzLi5jZmE3YWM1IDEwMDc1NQotLS0gYS9wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utc2VsZnRlc3QKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXNlbGZ0ZXN0CkBAIC0yMiwxNiArMjIsMjEgQEAKIGltcG9ydCB1bml0dGVzdAogdHJ5OgogICAgIGltcG9ydCBiYgorICAgIGltcG9ydCBsYXllcmluZGV4bGliCiBleGNlcHQgUnVudGltZUVycm9yIGFzIGV4YzoKICAgICBzeXMuZXhpdChzdHIoZXhjKSkKIAogdGVzdHMgPSBbImJiLnRlc3RzLmNvZGVwYXJzZXIiLAorICAgICAgICAgImJiLnRlc3RzLmNvb2tlciIsCiAgICAgICAgICAiYmIudGVzdHMuY293IiwKICAgICAgICAgICJiYi50ZXN0cy5kYXRhIiwKICAgICAgICAgICJiYi50ZXN0cy5ldmVudCIsCiAgICAgICAgICAiYmIudGVzdHMuZmV0Y2giLAogICAgICAgICAgImJiLnRlc3RzLnBhcnNlIiwKLSAgICAgICAgICJiYi50ZXN0cy51dGlscyJdCisgICAgICAgICAiYmIudGVzdHMudXRpbHMiLAorICAgICAgICAgImxheWVyaW5kZXhsaWIudGVzdHMubGF5ZXJpbmRleG9iaiIsCisgICAgICAgICAibGF5ZXJpbmRleGxpYi50ZXN0cy5yZXN0YXBpIiwKKyAgICAgICAgICJsYXllcmluZGV4bGliLnRlc3RzLmNvb2tlciJdCiAKIGZvciB0IGluIHRlc3RzOgogICAgIHQgPSAnLicuam9pbih0LnNwbGl0KCcuJylbOjNdKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDRjZjBlZDkuLmY3ZDMxMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKQEAgLTM0MiwxMyArMzQyLDE0IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFdoZW4geW91IG5hbWUgYW4gYXBwZW5kIGZpbGUsIHlvdSBjYW4gdXNlIHRoZQotICAgICAgICAgICAgICAgIHdpbGRjYXJkIGNoYXJhY3RlciAoJSkgdG8gYWxsb3cgZm9yIG1hdGNoaW5nIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgd2lsZGNhcmQgY2hhcmFjdGVyIHRvIGFsbG93IGZvciBtYXRjaGluZworICAgICAgICAgICAgICAgIHJlY2lwZSBuYW1lcy4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBhbiBhcHBlbmQgZmlsZSBuYW1lZAogICAgICAgICAgICAgICAgIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBidXN5Ym94XzEuMjEuJS5iYmFwcGVuZAogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBUaGF0IGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIGFueSA8ZmlsZW5hbWU+YnVzeWJveF8xLjIxLnguYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIFRoYXQgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggYW55IDxmaWxlbmFtZT5idXN5Ym94XzEuMjEuPC9maWxlbmFtZT48cmVwbGFjZWFibGU+eDwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgcmVjaXBlLgogICAgICAgICAgICAgICAgIFNvLCB0aGUgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggdGhlIGZvbGxvd2luZyByZWNpcGUgbmFtZXM6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMzU2LDYgKzM1NywxNCBAQAogICAgICBidXN5Ym94XzEuMjEuMi5iYgogICAgICBidXN5Ym94XzEuMjEuMy5iYgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+SW1wb3J0YW50PC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiB0aGUgIjxmaWxlbmFtZT4lPC9maWxlbmFtZT4iIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICBpcyBsaW1pdGVkIGluIHRoYXQgaXQgb25seSB3b3JrcyBkaXJlY3RseSBpbiBmcm9udCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5iYmFwcGVuZDwvZmlsZW5hbWU+IHBvcnRpb24gb2YgdGhlIGFwcGVuZCBmaWxlJ3MKKyAgICAgICAgICAgICAgICAgICAgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgdGhlIHdpbGRjYXJkIGNoYXJhY3RlciBpbiBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gb2YgdGhlIG5hbWUuCisgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIElmIHRoZSA8ZmlsZW5hbWU+YnVzeWJveDwvZmlsZW5hbWU+IHJlY2lwZSB3YXMgdXBkYXRlZCB0bwogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5idXN5Ym94XzEuMy4wLmJiPC9maWxlbmFtZT4sIHRoZSBhcHBlbmQgbmFtZSB3b3VsZCBub3QKICAgICAgICAgICAgICAgICBtYXRjaC4KQEAgLTcyMyw2ICs3MzIsMTYzIEBACiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgICAgIDxzZWN0aW9uIGlkPSdleGVjdXRpbmctYS1tdWx0aXBsZS1jb25maWd1cmF0aW9uLWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+RXhlY3V0aW5nIGEgTXVsdGlwbGUgQ29uZmlndXJhdGlvbiBCdWlsZDwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBpcyBhYmxlIHRvIGJ1aWxkIG11bHRpcGxlIGltYWdlcyBvciBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICB1c2luZyBhIHNpbmdsZSBjb21tYW5kIHdoZXJlIHRoZSBkaWZmZXJlbnQgdGFyZ2V0cworICAgICAgICAgICAgICAgICAgICByZXF1aXJlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyAobXVsdGlwbGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBidWlsZHMpLgorICAgICAgICAgICAgICAgICAgICBFYWNoIHRhcmdldCwgaW4gdGhpcyBzY2VuYXJpbywgaXMgcmVmZXJyZWQgdG8gYXMgYQorICAgICAgICAgICAgICAgICAgICAibXVsdGljb25maWciLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBhY2NvbXBsaXNoIGEgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZCwgeW91IG11c3QKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIGVhY2ggdGFyZ2V0J3MgY29uZmlndXJhdGlvbiBzZXBhcmF0ZWx5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIGEgcGFyYWxsZWwgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBidWlsZCBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBmb3IgdGhlc2UgbXVsdGljb25maWcgY29uZmlndXJhdGlvbiBmaWxlcworICAgICAgICAgICAgICAgICAgICBpcyBzcGVjaWZpYy4KKyAgICAgICAgICAgICAgICAgICAgVGhleSBtdXN0IHJlc2lkZSBpbiB0aGUgY3VycmVudCBidWlsZCBkaXJlY3RvcnkgaW4KKyAgICAgICAgICAgICAgICAgICAgYSBzdWItZGlyZWN0b3J5IG9mIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm11bHRpY29uZmlnPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyBpcyBhbiBleGFtcGxlIGZvciB0d28gc2VwYXJhdGUgdGFyZ2V0czoKKyAgICAgICAgICAgICAgICAgICAgPGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2JiX211bHRpY29uZmlnX2ZpbGVzLnBuZyIgYWxpZ249ImNlbnRlciIgd2lkdGg9IjRpbiIgZGVwdGg9IjNpbiIgLz4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlYXNvbiBmb3IgdGhpcyByZXF1aXJlZCBmaWxlIGhpZXJhcmNoeQorICAgICAgICAgICAgICAgICAgICBpcyBiZWNhdXNlIHRoZSA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaXMgbm90IGNvbnN0cnVjdGVkIHVudGlsIHRoZSBsYXllcnMgYXJlIHBhcnNlZC4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAgcHJlLWNvbmZpZ3VyYXRpb24gZmlsZSBpcyBub3QgcG9zc2libGUgdW5sZXNzIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE1pbmltYWxseSwgZWFjaCBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBkZWZpbmUgdGhlCisgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBTdWdnZXN0ZWQgcHJhY3RpY2UgZGljdGF0ZXMgdGhhdCB5b3UgZG8gbm90CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXAgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB1c2VkIGR1cmluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBBc2lkZSBmcm9tIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIGVhY2gKKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCB5b3UgbXVzdCBhbHNvIGVuYWJsZSBCaXRCYWtlIHRvIHBlcmZvcm0gbXVsdGlwbGUKKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgIEVuYWJsaW5nIGlzIGFjY29tcGxpc2hlZCBieSBzZXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItQkJNVUxUSUNPTkZJRyc+PGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICBBcyBhbiBleGFtcGxlLCBzdXBwb3NlIHlvdSBoYWQgY29uZmlndXJhdGlvbiBmaWxlcworICAgICAgICAgICAgICAgICAgICBmb3IgPGZpbGVuYW1lPnRhcmdldDE8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRhcmdldDI8L2ZpbGVuYW1lPiBkZWZpbmVkIGluIHRoZSBidWlsZAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgYm90aCBlbmFibGVzCisgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgdG8gcGVyZm9ybSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoZSB0d28gbXVsdGljb25maWdzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEJCTVVMVElDT05GSUcgPSAidGFyZ2V0MSB0YXJnZXQyIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIE9uY2UgdGhlIHRhcmdldCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBpbiBwbGFjZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBoYXMgYmVlbiBlbmFibGVkIHRvIHBlcmZvcm0gbXVsdGlwbGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBidWlsZHMsIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZm9ybSB0byBzdGFydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBbbXVsdGljb25maWc6PHJlcGxhY2VhYmxlPm11bHRpY29uZmlnbmFtZTwvcmVwbGFjZWFibGU+Ol08cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gW1tbbXVsdGljb25maWc6PHJlcGxhY2VhYmxlPm11bHRpY29uZmlnbmFtZTwvcmVwbGFjZWFibGU+Ol08cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT5dIC4uLiBdCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0d28gbXVsdGljb25maWdzOgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0MTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dGFyZ2V0MjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgYml0YmFrZSBtdWx0aWNvbmZpZzp0YXJnZXQxOjxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBtdWx0aWNvbmZpZzp0YXJnZXQyOjxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgorCisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nYmItZW5hYmxpbmctbXVsdGlwbGUtY29uZmlndXJhdGlvbi1idWlsZC1kZXBlbmRlbmNpZXMnPgorICAgICAgICAgICAgICAgIDx0aXRsZT5FbmFibGluZyBNdWx0aXBsZSBDb25maWd1cmF0aW9uIEJ1aWxkIERlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIGRlcGVuZGVuY2llcyBjYW4gZXhpc3QgYmV0d2VlbiB0YXJnZXRzCisgICAgICAgICAgICAgICAgICAgIChtdWx0aWNvbmZpZ3MpIGluIGEgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHN1cHBvc2UgdGhhdCBpbiBvcmRlciB0byBidWlsZCBhbiBpbWFnZQorICAgICAgICAgICAgICAgICAgICBmb3IgYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyZSwgdGhlIHJvb3QgZmlsZXN5c3RlbSBvZgorICAgICAgICAgICAgICAgICAgICBhbm90aGVyIGJ1aWxkIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUgbmVlZHMgdG8KKyAgICAgICAgICAgICAgICAgICAgZXhpc3QuCisgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCB0aGUgaW1hZ2UgZm9yIHRoZSBmaXJzdCBtdWx0aWNvbmZpZyBkZXBlbmRzCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSByb290IGZpbGVzeXN0ZW0gb2YgdGhlIHNlY29uZCBtdWx0aWNvbmZpZy4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBkZXBlbmRlbmN5IGlzIGVzc2VudGlhbGx5IHRoYXQgdGhlIHRhc2sgaW4gdGhlIHJlY2lwZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGJ1aWxkcyBvbmUgbXVsdGljb25maWcgaXMgZGVwZW5kZW50IG9uIHRoZQorICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uIG9mIHRoZSB0YXNrIGluIHRoZSByZWNpcGUgdGhhdCBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgYW5vdGhlciBtdWx0aWNvbmZpZy4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZW5hYmxlIGRlcGVuZGVuY2llcyBpbiBhIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQsIHlvdSBtdXN0IGRlY2xhcmUgdGhlIGRlcGVuZGVuY2llcyBpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGZvcm06CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnRhc2tfb3JfcGFja2FnZTwvcmVwbGFjZWFibGU+W21jZGVwZW5kc10gPSAibXVsdGljb25maWc6PHJlcGxhY2VhYmxlPmZyb21fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+dG9fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cmVjaXBlX25hbWU8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+dGFza19vbl93aGljaF90b19kZXBlbmQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUbyBiZXR0ZXIgc2hvdyBob3cgdG8gdXNlIHRoaXMgc3RhdGVtZW50LCBjb25zaWRlciBhbgorICAgICAgICAgICAgICAgICAgICBleGFtcGxlIHdpdGggdHdvIG11bHRpY29uZmlnczogPGZpbGVuYW1lPnRhcmdldDE8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPnRhcmdldDI8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICA8cmVwbGFjZWFibGU+aW1hZ2VfdGFzazwvcmVwbGFjZWFibGU+W21jZGVwZW5kc10gPSAibXVsdGljb25maWc6dGFyZ2V0MTp0YXJnZXQyOjxyZXBsYWNlYWJsZT5pbWFnZTI8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cm9vdGZzX3Rhc2s8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUsIHRoZQorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+ZnJvbV9tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+IGlzICJ0YXJnZXQxIiBhbmQKKyAgICAgICAgICAgICAgICAgICAgdGhlIDxyZXBsYWNlYWJsZT50b19tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+IGlzICJ0YXJnZXQyIi4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHRhc2sgb24gd2hpY2ggdGhlIGltYWdlIHdob3NlIHJlY2lwZSBjb250YWlucworICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+aW1hZ2VfdGFzazwvcmVwbGFjZWFibGU+IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24gb2YgdGhlIDxyZXBsYWNlYWJsZT5yb290ZnNfdGFzazwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gYnVpbGQgb3V0IDxyZXBsYWNlYWJsZT5pbWFnZTI8L3JlcGxhY2VhYmxlPiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSAidGFyZ2V0MiIgbXVsdGljb25maWcuCisgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgIE9uY2UgeW91IHNldCB1cCB0aGlzIGRlcGVuZGVuY3ksIHlvdSBjYW4gYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgInRhcmdldDEiIG11bHRpY29uZmlnIHVzaW5nIGEgQml0QmFrZSBjb21tYW5kIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbXVsdGljb25maWc6dGFyZ2V0MTo8cmVwbGFjZWFibGU+aW1hZ2UxPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGV4ZWN1dGVzIGFsbCB0aGUgdGFza3MgbmVlZGVkIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5pbWFnZTE8L3JlcGxhY2VhYmxlPiBmb3IgdGhlICJ0YXJnZXQxIgorICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnLgorICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugb2YgdGhlIGRlcGVuZGVuY3ksIEJpdEJha2UgYWxzbyBleGVjdXRlcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgdGhlIDxyZXBsYWNlYWJsZT5yb290ZnNfdGFzazwvcmVwbGFjZWFibGU+IGZvciB0aGUgInRhcmdldDIiCisgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWcgYnVpbGQuCisgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgIEhhdmluZyBhIHJlY2lwZSBkZXBlbmQgb24gdGhlIHJvb3QgZmlsZXN5c3RlbSBvZiBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgYnVpbGQgbWlnaHQgbm90IHNlZW0gdGhhdCB1c2VmdWwuCisgICAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdGhpcyBjaGFuZ2UgdG8gdGhlIHN0YXRlbWVudCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+aW1hZ2UxPC9yZXBsYWNlYWJsZT4gcmVjaXBlOgorICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPmltYWdlX3Rhc2s8L3JlcGxhY2VhYmxlPlttY2RlcGVuZHNdID0gIm11bHRpY29uZmlnOnRhcmdldDE6dGFyZ2V0Mjo8cmVwbGFjZWFibGU+aW1hZ2UyPC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPmltYWdlX3Rhc2s8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCBCaXRCYWtlIG11c3QgY3JlYXRlCisgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmltYWdlMjwvcmVwbGFjZWFibGU+IGZvciB0aGUgInRhcmdldDIiCisgICAgICAgICAgICAgICAgICAgYnVpbGQgc2luY2UgdGhlICJ0YXJnZXQxIiBidWlsZCBkZXBlbmRzIG9uIGl0LgorICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICBCZWNhdXNlICJ0YXJnZXQxIiBhbmQgInRhcmdldDIiIGFyZSBlbmFibGVkIGZvciBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZCBoYXZlIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICBmaWxlcywgQml0QmFrZSBwbGFjZXMgdGhlIGFydGlmYWN0cyBmb3IgZWFjaCBidWlsZCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICByZXNwZWN0aXZlIHRlbXBvcmFyeSBidWlsZCBkaXJlY3Rvcmllcy4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAgPC9zZWN0aW9uPgogICAgIDwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbCBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAppbmRleCBiNGZjNjRlLi4yNDkwZjZlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCkBAIC0zNDIsNyArMzQyLDcgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoaXMgc3ludGF4LCBCaXRCYWtlIGV4cGVjdHMgb25lIG9yIG1vcmUgc3RyaW5ncy4KLSAgICAgICAgICAgICAgICBTdXJyb3VuZGluZyBzcGFjZXMgYXJlIHJlbW92ZWQgYXMgd2VsbC4KKyAgICAgICAgICAgICAgICBTdXJyb3VuZGluZyBzcGFjZXMgYW5kIHNwYWNpbmcgYXJlIHByZXNlcnZlZC4KICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBGT08gPSAiMTIzIDQ1NiA3ODkgMTIzNDU2IDEyMyA0NTYgMTIzIDQ1NiIKQEAgLTM1Miw4ICszNTIsOSBAQAogICAgICBGT08yX3JlbW92ZSA9ICJhYmMgZGVmIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICBUaGUgdmFyaWFibGUgPGZpbGVuYW1lPkZPTzwvZmlsZW5hbWU+IGJlY29tZXMKLSAgICAgICAgICAgICAgICAiNzg5IDEyMzQ1NiIgYW5kIDxmaWxlbmFtZT5GT08yPC9maWxlbmFtZT4gYmVjb21lcwotICAgICAgICAgICAgICAgICJnaGkgYWJjZGVmIi4KKyAgICAgICAgICAgICAgICAiJm5ic3A7Jm5ic3A7Nzg5IDEyMzQ1NiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyIKKyAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPkZPTzI8L2ZpbGVuYW1lPiBiZWNvbWVzCisgICAgICAgICAgICAgICAgIiZuYnNwOyZuYnNwO2doaSBhYmNkZWYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTE5MjksNiArMTkzMCwzOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNhcmVmdWwuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+W251bWJlcl90aHJlYWRzXTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIExpbWl0cyB0YXNrcyB0byBhIHNwZWNpZmljIG51bWJlciBvZiBzaW11bHRhbmVvdXMgdGhyZWFkcworICAgICAgICAgICAgICAgICAgICBkdXJpbmcgZXhlY3V0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmZsYWcgaXMgdXNlZnVsIHdoZW4geW91ciBidWlsZCBob3N0IGhhcyBhIGxhcmdlIG51bWJlcgorICAgICAgICAgICAgICAgICAgICBvZiBjb3JlcyBidXQgY2VydGFpbiB0YXNrcyBuZWVkIHRvIGJlIHJhdGUtbGltaXRlZCBkdWUgdG8gdmFyaW91cworICAgICAgICAgICAgICAgICAgICBraW5kcyBvZiByZXNvdXJjZSBjb25zdHJhaW50cyAoZS5nLiB0byBhdm9pZCBuZXR3b3JrIHRocm90dGxpbmcpLgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bnVtYmVyX3RocmVhZHM8L2ZpbGVuYW1lPiB3b3JrcyBzaW1pbGFybHkgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1CQl9OVU1CRVJfVEhSRUFEUyc+PGZpbGVuYW1lPkJCX05VTUJFUl9USFJFQURTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGJ1dCBpcyB0YXNrLXNwZWNpZmljLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZXQgdGhlIHZhbHVlIGdsb2JhbGx5LgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBtYWtlcyBzdXJlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fZmV0Y2g8L2ZpbGVuYW1lPiB0YXNrIHVzZXMgbm8gbW9yZSB0aGFuIHR3bworICAgICAgICAgICAgICAgICAgICBzaW11bHRhbmVvdXMgZXhlY3V0aW9uIHRocmVhZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9fZmV0Y2hbbnVtYmVyX3RocmVhZHNdID0gIjIiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmdzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoZSB2YXJmbGFnIGluIGluZGl2aWR1YWwgcmVjaXBlcyByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhbiBnbG9iYWxseSBjYW4gcmVzdWx0IGluIHVucHJlZGljdGFibGUgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGUgdmFyZmxhZyB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdXNlZCBpbiB0aGUgPGZpbGVuYW1lPkJCX05VTUJFUl9USFJFQURTPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgY2F1c2VzIDxmaWxlbmFtZT5udW1iZXJfdGhyZWFkczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGhhdmUgbm8gZWZmZWN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+PGZpbGVuYW1lPltwb3N0ZnVuY3NdPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBmdW5jdGlvbnMgdG8gY2FsbCBhZnRlciB0aGUgY29tcGxldGlvbiBvZiB0aGUgdGFzay4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0yNzE5LDQgKzI3NTIsMzAgQEAKICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J3dpbGRjYXJkLXN1cHBvcnQtaW4tdmFyaWFibGVzJz4KKyAgICAgICAgPHRpdGxlPldpbGRjYXJkIFN1cHBvcnQgaW4gVmFyaWFibGVzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFN1cHBvcnQgZm9yIHdpbGRjYXJkIHVzZSBpbiB2YXJpYWJsZXMgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgICAgICAgIGNvbnRleHQgaW4gd2hpY2ggaXQgaXMgdXNlZC4KKyAgICAgICAgICAgIEZvciBleGFtcGxlLCBzb21lIHZhcmlhYmxlcyBhbmQgZmlsZSBuYW1lcyBhbGxvdyBsaW1pdGVkIHVzZSBvZgorICAgICAgICAgICAgd2lsZGNhcmRzIHRocm91Z2ggdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBhbmQKKyAgICAgICAgICAgICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IiBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgT3RoZXIgdmFyaWFibGVzIG9yIG5hbWVzIHN1cHBvcnQgUHl0aG9uJ3MKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9nbG9iLmh0bWwnPjxmaWxlbmFtZT5nbG9iPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgc3ludGF4LAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ZubWF0Y2guaHRtbCNtb2R1bGUtZm5tYXRjaCc+PGZpbGVuYW1lPmZubWF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBzeW50YXgsIG9yCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xpYnJhcnkvcmUuaHRtbCNyZSc+PGZpbGVuYW1lPlJlZ3VsYXIgRXhwcmVzc2lvbiAocmUpPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgc3ludGF4LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgdmFyaWFibGVzIHRoYXQgaGF2ZSB3aWxkY2FyZCBzdXBvcnQsIHRoZQorICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBkZXNjcmliZXMgd2hpY2ggZm9ybSBvZiB3aWxkY2FyZCwgaXRzCisgICAgICAgICAgICB1c2UsIGFuZCBpdHMgbGltaXRhdGlvbnMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKIDwvY2hhcHRlcj4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggMDMxMzM1OS4uYTg0YjJiYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtcmVmLXZhcmlhYmxlcy54bWwKQEAgLTExNSw3ICsxMTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVpdGhlciBub3Qgc2V0IG9yIHNldCB0byAiMCIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGltaXRlZCBzdXBwb3J0IGZvciB3aWxkY2FyZCBtYXRjaGluZyBhZ2FpbnN0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbWl0ZWQgc3VwcG9ydCBmb3IgdGhlICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkIGNoYXJhY3RlciBmb3IgbWF0Y2hpbmcgYWdhaW5zdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbm5pbmcgb2YgaG9zdCBuYW1lcyBleGlzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgc2V0dGluZyBtYXRjaGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC5nbnUub3JnPC9maWxlbmFtZT4sCkBAIC0xMjQsNiArMTI1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBCQl9BTExPV0VEX05FVFdPUktTID0gIiouZ251Lm9yZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+KjwvZmlsZW5hbWU+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXIgb25seSB3b3JrcyBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgaG9zdCBuYW1lIGFuZCBpdCBtdXN0IGJlIGlzb2xhdGVkIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgaG9zdCBuYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIGluIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciBsb2NhdGlvbiBvZiB0aGUgbmFtZSBvciBjb21iaW5lZCB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcm9udCBwYXJ0IG9mIHRoZSBuYW1lLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgZXhhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiouZm9vLmJhcjwvZmlsZW5hbWU+IGlzIHN1cHBvcnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgPGZpbGVuYW1lPiphYS5mb28uYmFyPC9maWxlbmFtZT4gaXMgbm90LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pcnJvcnMgbm90IGluIHRoZSBob3N0IGxpc3QgYXJlIHNraXBwZWQgYW5kCkBAIC02NDYsMTAgKzY2MSwxMCBAQAogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBDb250YWlucyB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrLgotICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgZG9lcyBub3QgaW5jbHVkZSB0aGUgImRvXyIgcHJlZml4LgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaW5jbHVkZXMgdGhlICJkb18iIHByZWZpeC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgaXMKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX2NvbmZpZzwvZmlsZW5hbWU+LCB0aGUgdmFsdWUgaXMKLSAgICAgICAgICAgICAgICAgICAgImNvbmZpZyIuCisgICAgICAgICAgICAgICAgICAgICJkb19jb25maWciLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTEwODIsNyArMTA5NywxOSBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQkJGSUxFUyc+PGdsb3NzdGVybT5CQkZJTEVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+Ci0gICAgICAgICAgICAgICAgPHBhcmE+TGlzdCBvZiByZWNpcGUgZmlsZXMgQml0QmFrZSB1c2VzIHRvIGJ1aWxkIHNvZnR3YXJlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiByZWNpcGUgZmlsZXMgQml0QmFrZSB1c2VzIHRvCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgcmVjaXBlIGZpbGVzLCB5b3UgY2FuIHBhdHRlcm4gbWF0Y2ggdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgUHl0aG9uJ3MKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2dsb2IuaHRtbCc+PGZpbGVuYW1lPmdsb2I8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIHN5bnRheCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGJ5CisgICAgICAgICAgICAgICAgICAgIGZvbGxvd2luZyB0aGUgcHJldmlvdXMgbGluay4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKQEAgLTExNjYsMTUgKzExOTMsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYW55IG9mIHRoZSBleHByZXNzaW9ucy4KICAgICAgICAgICAgICAgICAgICAgSXQgaXMgYXMgaWYgQml0QmFrZSBkb2VzIG5vdCBzZWUgdGhlbSBhdCBhbGwuCiAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgbWF0Y2hpbmcgZmlsZXMgYXJlIG5vdCBwYXJzZWQgb3Igb3RoZXJ3aXNlCi0gICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgQml0QmFrZS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIHVzZWQgYnkgQml0QmFrZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlcyB5b3UgcHJvdmlkZSBhcmUgcGFzc2VkIHRvIFB5dGhvbidzIHJlZ3VsYXIKICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiBjb21waWxlci4KKyAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCB0aGUgc3ludGF4IGZvbGxvd3MgUHl0aG9uJ3MgUmVndWxhcgorICAgICAgICAgICAgICAgICAgICBFeHByZXNzaW9uIChyZSkgc3ludGF4LgogICAgICAgICAgICAgICAgICAgICBUaGUgZXhwcmVzc2lvbnMgYXJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIGZ1bGwgcGF0aHMgdG8KICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGVzLgogICAgICAgICAgICAgICAgICAgICBGb3IgY29tcGxldGUgc3ludGF4IGluZm9ybWF0aW9uLCBzZWUgUHl0aG9uJ3MKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBhdAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnL3JlbGVhc2UvMi4zL2xpYi9yZS1zeW50YXguaHRtbCc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3JlLmh0bWwjcmUnPjwvdWxpbms+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTIwNSw2ICsxMjM2LDQ1IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQk1VTFRJQ09ORklHJz48Z2xvc3N0ZXJtPkJCTVVMVElDT05GSUc8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEJCTVVMVElDT05GSUdbZG9jXSA9ICJFbmFibGVzIEJpdEJha2UgdG8gcGVyZm9ybSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcyBhbmQgbGlzdHMgZWFjaCBzZXBhcmF0ZSBjb25maWd1cmF0aW9uIChtdWx0aWNvbmZpZykuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgRW5hYmxlcyBCaXRCYWtlIHRvIHBlcmZvcm0gbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZHMKKyAgICAgICAgICAgICAgICAgICAgYW5kIGxpc3RzIGVhY2ggc2VwYXJhdGUgY29uZmlndXJhdGlvbiAobXVsdGljb25maWcpLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGlzIHZhcmlhYmxlIHRvIGNhdXNlIEJpdEJha2UgdG8gYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgdGFyZ2V0cyB3aGVyZSBlYWNoIHRhcmdldCBoYXMgYSBzZXBhcmF0ZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgICAgICBEZWZpbmUgPGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPiBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEFzIGFuIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgbGluZSBzcGVjaWZpZXMgdGhyZWUKKyAgICAgICAgICAgICAgICAgICAgbXVsdGljb25maWdzLCBlYWNoIGhhdmluZyBhIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBCQk1VTFRJRk9ORklHID0gImNvbmZpZ0EgY29uZmlnQiBjb25maWdDIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIEVhY2ggY29uZmlndXJhdGlvbiBmaWxlIHlvdSB1c2UgbXVzdCByZXNpZGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGRpcmVjdG9yeSB3aXRoaW4gYSBkaXJlY3RvcnkgbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWc8L2ZpbGVuYW1lPiAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+YnVpbGRfZGlyZWN0b3J5PC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHVzZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+QkJNVUxUSUNPTkZJRzwvZmlsZW5hbWU+IGluIGFuIGVudmlyb25tZW50IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcgdGFyZ2V0cyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdleGVjdXRpbmctYS1tdWx0aXBsZS1jb25maWd1cmF0aW9uLWJ1aWxkJz5FeGVjdXRpbmcgYSBNdWx0aXBsZSBDb25maWd1cmF0aW9uIEJ1aWxkPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1CQlBBVEgnPjxnbG9zc3Rlcm0+QkJQQVRIPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xODk0LDE1ICsxOTY0LDI3IEBACiAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHNlbGVjdCwgYW5kIHlvdSBzaG91bGQgc2V0CiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZ2x5IGZvciBwcmVjZWRlbmNlLgotICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgIjxmaWxlbmFtZT4lPC9maWxlbmFtZT4iIGNoYXJhY3RlciBhcyBhCi0gICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkIHRvIG1hdGNoIGFueSBudW1iZXIgb2YgY2hhcmFjdGVycywgd2hpY2ggY2FuIGJlCi0gICAgICAgICAgICAgICAgICAgIHVzZWZ1bCB3aGVuIHNwZWNpZnlpbmcgdmVyc2lvbnMgdGhhdCBjb250YWluIGxvbmcgcmV2aXNpb24KLSAgICAgICAgICAgICAgICAgICAgbnVtYmVycyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGNoYW5nZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUkVGRVJSRURfVkVSU0lPTjwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzIGxpbWl0ZWQgd2lsZGNhcmQgdXNlIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSBjaGFyYWN0ZXIgdG8gbWF0Y2ggYW55IG51bWJlciBvZgorICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLCB3aGljaCBjYW4gYmUgdXNlZnVsIHdoZW4gc3BlY2lmeWluZyB2ZXJzaW9ucworICAgICAgICAgICAgICAgICAgICB0aGF0IGNvbnRhaW4gbG9uZyByZXZpc2lvbiBudW1iZXJzIHRoYXQgcG90ZW50aWFsbHkgY2hhbmdlLgogICAgICAgICAgICAgICAgICAgICBIZXJlIGFyZSB0d28gZXhhbXBsZXM6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUFJFRkVSUkVEX1ZFUlNJT05fcHl0aG9uID0gIjIuNy4zIgogICAgICBQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA9ICI0LjEyJSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+SW1wb3J0YW50PC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIGxpbWl0ZWQgaW4gdGhhdCBpdCBvbmx5IHdvcmtzIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSB0aGUgd2lsZGNhcmQgY2hhcmFjdGVyIGluIGFueSBvdGhlcgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gb2YgdGhlIHN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9maWd1cmVzL2JiX211bHRpY29uZmlnX2ZpbGVzLnBuZyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9maWd1cmVzL2JiX211bHRpY29uZmlnX2ZpbGVzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDFmMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2ZpZ3VyZXMvYmJfbXVsdGljb25maWdfZmlsZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKaW5kZXggYmVjNjIwOC4uNzgxNzQ3MyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9DT1cucHkKQEAgLTE1MCw3ICsxNTAsNyBAQAogICAgICAgICAgICAgICAgIHlpZWxkIHZhbHVlCiAgICAgICAgICAgICBpZiB0eXBlID09ICJpdGVtcyI6CiAgICAgICAgICAgICAgICAgeWllbGQgKGtleSwgdmFsdWUpCi0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oKQorICAgICAgICByZXR1cm4KIAogICAgIGRlZiBpdGVya2V5cyhjbHMpOgogICAgICAgICByZXR1cm4gY2xzLml0ZXIoImtleXMiKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKaW5kZXggZDI0YWRiOC4uNGJjNDdjOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CkBAIC0yMSw3ICsyMSw3IEBACiAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCiAKLV9fdmVyc2lvbl9fID0gIjEuMzguMCIKK19fdmVyc2lvbl9fID0gIjEuNDAuMCIKIAogaW1wb3J0IHN5cwogaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA0LCAwKToKQEAgLTYzLDYgKzYzLDEwIEBACiAgICAgZGVmIHZlcmJvc2Uoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5JTkZPIC0gMSwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKKyAgICBkZWYgdmVyYm5vdGUoc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5JTkZPICsgMiwgbXNnLCAqYXJncywgKiprd2FyZ3MpCisKKwogbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQogbG9nZ2luZy5zZXRMb2dnZXJDbGFzcyhCQkxvZ2dlcikKIApAQCAtOTMsNiArOTcsMTggQEAKIGRlZiBub3RlKCphcmdzKToKICAgICBtYWlubG9nZ2VyLmluZm8oJycuam9pbihhcmdzKSkKIAorIworIyBBIGhpZ2hlciBwcmlvaXR5IG5vdGUgd2hpY2ggd2lsbCBzaG93IG9uIHRoZSBjb25zb2xlIGJ1dCBpc24ndCBhIHdhcm5pbmcKKyMKKyMgU29tZXRoaW5nIGlzIGhhcHBlbmluZyB0aGUgdXNlciBzaG91bGQgYmUgYXdhcmUgb2YgYnV0IHRoZXkgcHJvYmFibHkgZGlkCisjIHNvbWV0aGluZyB0byBtYWtlIGl0IGhhcHBlbgorIworZGVmIHZlcmJub3RlKCphcmdzKToKKyAgICBtYWlubG9nZ2VyLnZlcmJub3RlKCcnLmpvaW4oYXJncykpCisKKyMKKyMgV2FybmluZ3MgLSB0aGluZ3MgdGhlIHVzZXIgbGlrZWx5IG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gYW5kIGZpeAorIwogZGVmIHdhcm4oKmFyZ3MpOgogICAgIG1haW5sb2dnZXIud2FybmluZygnJy5qb2luKGFyZ3MpKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQppbmRleCA0NjMxYWJkLi4zZTJhOTRlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKQEAgLTQxLDggKzQxLDYgQEAKIGJibG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UnKQogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UuQnVpbGQnKQogCi1OVUxMID0gb3Blbihvcy5kZXZudWxsLCAncisnKQotCiBfX210aW1lX2NhY2hlID0ge30KIAogZGVmIGNhY2hlZF9tdGltZV9ub2Vycm9yKGYpOgpAQCAtNTMzLDcgKzUzMSw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyZWQgPSBUcnVlCiAKICAgICAjIEhhbmRsZSBsb2dmaWxlcwotICAgIHNpID0gb3BlbignL2Rldi9udWxsJywgJ3InKQogICAgIHRyeToKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShsb2dmbikpCiAgICAgICAgIGxvZ2ZpbGUgPSBvcGVuKGxvZ2ZuLCAndycpCkBAIC01NDcsNyArNTQ0LDggQEAKICAgICBvc2UgPSBbb3MuZHVwKHN5cy5zdGRlcnIuZmlsZW5vKCkpLCBzeXMuc3RkZXJyLmZpbGVubygpXQogCiAgICAgIyBSZXBsYWNlIHRob3NlIGZkcyB3aXRoIG91ciBvd24KLSAgICBvcy5kdXAyKHNpLmZpbGVubygpLCBvc2lbMV0pCisgICAgd2l0aCBvcGVuKCcvZGV2L251bGwnLCAncicpIGFzIHNpOgorICAgICAgICBvcy5kdXAyKHNpLmZpbGVubygpLCBvc2lbMV0pCiAgICAgb3MuZHVwMihsb2dmaWxlLmZpbGVubygpLCBvc29bMV0pCiAgICAgb3MuZHVwMihsb2dmaWxlLmZpbGVubygpLCBvc2VbMV0pCiAKQEAgLTYwOCw3ICs2MDYsNiBAQAogICAgICAgICBvcy5jbG9zZShvc2lbMF0pCiAgICAgICAgIG9zLmNsb3NlKG9zb1swXSkKICAgICAgICAgb3MuY2xvc2Uob3NlWzBdKQotICAgICAgICBzaS5jbG9zZSgpCiAKICAgICAgICAgbG9nZmlsZS5jbG9zZSgpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvZ2ZuKSBhbmQgb3MucGF0aC5nZXRzaXplKGxvZ2ZuKSA9PSAwOgpAQCAtODAzLDYgKzgwMCw3IEBACiAgICAgICAgICAgICBpZiBuYW1lIGluIGZsYWdzOgogICAgICAgICAgICAgICAgIGRlcHRhc2sgPSBkLmV4cGFuZChmbGFnc1tuYW1lXSkKICAgICAgICAgICAgICAgICB0YXNrX2RlcHNbbmFtZV1bdGFza10gPSBkZXB0YXNrCisgICAgICAgIGdldFRhc2soJ21jZGVwZW5kcycpCiAgICAgICAgIGdldFRhc2soJ2RlcGVuZHMnKQogICAgICAgICBnZXRUYXNrKCdyZGVwZW5kcycpCiAgICAgICAgIGdldFRhc2soJ2RlcHRhc2snKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKaW5kZXggMTY4YTc3YS4uMjU4ZDY3OSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CkBAIC0zNyw3ICszNyw3IEBACiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkNhY2hlIikKIAotX19jYWNoZV92ZXJzaW9uX18gPSAiMTUxIgorX19jYWNoZV92ZXJzaW9uX18gPSAiMTUyIgogCiBkZWYgZ2V0Q2FjaGVGaWxlKHBhdGgsIGZpbGVuYW1lLCBkYXRhX2hhc2gpOgogICAgIHJldHVybiBvcy5wYXRoLmpvaW4ocGF0aCwgZmlsZW5hbWUgKyAiLiIgKyBkYXRhX2hhc2gpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkKaW5kZXggNTMwZjQ0ZS4uZGRkMWI5NyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgIyBzbyB0aGF0IGFuIGV4aXN0aW5nIGNhY2hlIGdldHMgaW52YWxpZGF0ZWQuIEFkZGl0aW9uYWxseSB5b3UnbGwgbmVlZAogICAgICMgdG8gaW5jcmVtZW50IF9fY2FjaGVfdmVyc2lvbl9fIGluIGNhY2hlLnB5IGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IG9sZAogICAgICMgcmVjaXBlIGNhY2hlcyBkb24ndCB0cmlnZ2VyICJUYXNraGFzaCBtaXNtYXRjaCIgZXJyb3JzLgotICAgIENBQ0hFX1ZFUlNJT04gPSA5CisgICAgQ0FDSEVfVkVSU0lPTiA9IDEwCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIE11bHRpUHJvY2Vzc0NhY2hlLl9faW5pdF9fKHNlbGYpCkBAIC0yMTQsNyArMjE0LDcgQEAKICAgICAgICAgc2VsZi5idWZmZXIgPSBbXQogCiBjbGFzcyBQeXRob25QYXJzZXIoKToKLSAgICBnZXR2YXJzID0gKCIuZ2V0VmFyIiwgIi5hcHBlbmRWYXIiLCAiLnByZXBlbmRWYXIiKQorICAgIGdldHZhcnMgPSAoIi5nZXRWYXIiLCAiLmFwcGVuZFZhciIsICIucHJlcGVuZFZhciIsICJvZS51dGlscy5jb25kaXRpb25hbCIpCiAgICAgZ2V0dmFyZmxhZ3MgPSAoIi5nZXRWYXJGbGFnIiwgIi5hcHBlbmRWYXJGbGFnIiwgIi5wcmVwZW5kVmFyRmxhZyIpCiAgICAgY29udGFpbnNmdW5jcyA9ICgiYmIudXRpbHMuY29udGFpbnMiLCAiYmFzZV9jb250YWlucyIpCiAgICAgY29udGFpbnNhbnlmdW5jcyA9ICgiYmIudXRpbHMuY29udGFpbnNfYW55IiwgICJiYi51dGlscy5maWx0ZXIiKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQppbmRleCAxZmRhNDBkLi4xNjY4MWJhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weQpAQCAtNjIwLDYgKzYyMCwyNyBAQAogICAgICAgICAgICAgcnVubGlzdC5hcHBlbmQoW21jLCBrLCBrdGFzaywgZm5dKQogICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5UcmVlRGF0YVByZXBhcmF0aW9uUHJvZ3Jlc3MoY3VycmVudCwgbGVuKGZ1bGx0YXJnZXRsaXN0KSksIHNlbGYuZGF0YSkKIAorICAgICAgICBtY2RlcHMgPSB0YXNrZGF0YVttY10uZ2V0X21jZGVwZW5kcygpCisgICAgICAgICMgTm8gbmVlZCB0byBkbyBjaGVjayBwcm92aWRlcnMgaWYgdGhlcmUgYXJlIG5vIG1jZGVwcyBvciBub3QgYW4gbWMgYnVpbGQKKyAgICAgICAgaWYgbWNkZXBzIGFuZCBtYzoKKyAgICAgICAgICAgICMgTWFrZSBzdXJlIHdlIGNhbiBwcm92aWRlIHRoZSBtdWx0aWNvbmZpZyBkZXBlbmRlbmN5CisgICAgICAgICAgICBzZWVuID0gc2V0KCkKKyAgICAgICAgICAgIG5ldyA9IFRydWUKKyAgICAgICAgICAgIHdoaWxlIG5ldzoKKyAgICAgICAgICAgICAgICBuZXcgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZvciBtYyBpbiBzZWxmLm11bHRpY29uZmlnczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gbWNkZXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBpbiBzZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBsID0gay5zcGxpdCgnOicpCisgICAgICAgICAgICAgICAgICAgICAgICBkZXBtYyA9IGxbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlcG1jIG5vdCBpbiBzZWxmLm11bHRpY29uZmlnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiTXVsdGljb25maWcgZGVwZW5kZW5jeSAlcyBkZXBlbmRzIG9uIG5vbmV4aXN0ZW50IG1jIGNvbmZpZ3VyYXRpb24gJXMiICUgKGssZGVwbWMpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkFkZGluZyBwcm92aWRlcnMgZm9yIG11bHRpY29uZmlnIGRlcGVuZGVuY3kgJXMiICUgbFszXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrZGF0YVtkZXBtY10uYWRkX3Byb3ZpZGVyKGxvY2FsZGF0YVtkZXBtY10sIHNlbGYucmVjaXBlY2FjaGVzW2RlcG1jXSwgbFszXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyA9IFRydWUKICAgICAgICAgZm9yIG1jIGluIHNlbGYubXVsdGljb25maWdzOgogICAgICAgICAgICAgdGFza2RhdGFbbWNdLmFkZF91bnJlc29sdmVkKGxvY2FsZGF0YVttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXSkKIApAQCAtNzA2LDggKzcyNyw4IEBACiAgICAgICAgICAgICBpZiBub3QgZG90bmFtZSBpbiBkZXBlbmRfdHJlZVsidGRlcGVuZHMiXToKICAgICAgICAgICAgICAgICBkZXBlbmRfdHJlZVsidGRlcGVuZHMiXVtkb3RuYW1lXSA9IFtdCiAgICAgICAgICAgICBmb3IgZGVwIGluIHJxLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgKGRlcG1jLCBkZXBmbiwgZGVwdGFza25hbWUsIGRlcHRhc2tmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbihkZXApCi0gICAgICAgICAgICAgICAgZGVwcG4gPSBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX2ZuW2RlcHRhc2tmbl0KKyAgICAgICAgICAgICAgICAoZGVwbWMsIGRlcGZuLCBfLCBkZXB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4oZGVwKQorICAgICAgICAgICAgICAgIGRlcHBuID0gc2VsZi5yZWNpcGVjYWNoZXNbZGVwbWNdLnBrZ19mbltkZXB0YXNrZm5dCiAgICAgICAgICAgICAgICAgZGVwZW5kX3RyZWVbInRkZXBlbmRzIl1bZG90bmFtZV0uYXBwZW5kKCIlcy4lcyIgJSAoZGVwcG4sIGJiLnJ1bnF1ZXVlLnRhc2tuYW1lX2Zyb21fdGlkKGRlcCkpKQogICAgICAgICAgICAgaWYgdGFza2ZuIG5vdCBpbiBzZWVuX2ZuczoKICAgICAgICAgICAgICAgICBzZWVuX2Zucy5hcHBlbmQodGFza2ZuKQpAQCAtMTU2Niw3ICsxNTg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGtnc190b19idWlsZC5hcHBlbmQodCkKIAogICAgICAgICBpZiAndW5pdmVyc2UnIGluIHBrZ3NfdG9fYnVpbGQ6Ci0gICAgICAgICAgICBwYXJzZWxvZy53YXJuaW5nKCJUaGUgXCJ1bml2ZXJzZVwiIHRhcmdldCBpcyBvbmx5IGludGVuZGVkIGZvciB0ZXN0aW5nIGFuZCBtYXkgcHJvZHVjZSBlcnJvcnMuIikKKyAgICAgICAgICAgIHBhcnNlbG9nLnZlcmJub3RlKCJUaGUgXCJ1bml2ZXJzZVwiIHRhcmdldCBpcyBvbmx5IGludGVuZGVkIGZvciB0ZXN0aW5nIGFuZCBtYXkgcHJvZHVjZSBlcnJvcnMuIikKICAgICAgICAgICAgIHBhcnNlbG9nLmRlYnVnKDEsICJjb2xsYXRpbmcgcGFja2FnZXMgZm9yIFwidW5pdmVyc2VcIiIpCiAgICAgICAgICAgICBwa2dzX3RvX2J1aWxkLnJlbW92ZSgndW5pdmVyc2UnKQogICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYubXVsdGljb25maWdzOgpAQCAtMTYzMyw3ICsxNjU0LDEwIEBACiBjbGFzcyBDb29rZXJDb2xsZWN0RmlsZXMob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJpb3JpdGllcyk6CiAgICAgICAgIHNlbGYuYmJhcHBlbmRzID0gW10KLSAgICAgICAgc2VsZi5iYmZpbGVfY29uZmlnX3ByaW9yaXRpZXMgPSBwcmlvcml0aWVzCisgICAgICAgICMgUHJpb3JpdGllcyBpcyBhIGxpc3Qgb2YgdHVwcGxlcywgd2l0aCB0aGUgc2Vjb25kIGVsZW1lbnQgYXMgdGhlIHBhdHRlcm4uCisgICAgICAgICMgV2UgbmVlZCB0byBzb3J0IHRoZSBsaXN0IHdpdGggdGhlIGxvbmdlc3QgcGF0dGVybiBmaXJzdCwgYW5kIHNvIG9uIHRvCisgICAgICAgICMgdGhlIHNob3J0ZXN0LiAgVGhpcyBhbGxvd3MgbmVzdGVkIGxheWVycyB0byBiZSBwcm9wZXJseSBldmFsdWF0ZWQuCisgICAgICAgIHNlbGYuYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzID0gc29ydGVkKHByaW9yaXRpZXMsIGtleT1sYW1iZGEgdHVwOiB0dXBbMV0sIHJldmVyc2U9VHJ1ZSkKIAogICAgIGRlZiBjYWxjX2JiZmlsZV9wcmlvcml0eSggc2VsZiwgZmlsZW5hbWUsIG1hdGNoZWQgPSBOb25lICk6CiAgICAgICAgIGZvciBfLCBfLCByZWdleCwgcHJpIGluIHNlbGYuYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYWVtb25pemUucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhZW1vbml6ZS5weQppbmRleCA4MzAwZDFkLi5jOTM3Njc1IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhZW1vbml6ZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhZW1vbml6ZS5weQpAQCAtMTYsNiArMTYsMTAgQEAKICAgICBiYWNrZ3JvdW5kIGFzIGEgZGFlbW9uLCByZXR1cm5pbmcgY29udHJvbCB0byB0aGUgY2FsbGVyLgogICAgICIiIgogCisgICAgIyBFbnN1cmUgc3Rkb3V0L3N0ZGVycm9yIGFyZSBmbHVzaGVkIGJlZm9yZSBmb3JraW5nIHRvIGF2b2lkIGR1cGxpY2F0ZSBvdXRwdXQKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKwogICAgIHRyeToKICAgICAgICAgIyBGb3JrIGEgY2hpbGQgcHJvY2VzcyBzbyB0aGUgcGFyZW50IGNhbiBleGl0LiAgVGhpcyByZXR1cm5zIGNvbnRyb2wgdG8KICAgICAgICAgIyB0aGUgY29tbWFuZC1saW5lIG9yIHNoZWxsLiAgSXQgYWxzbyBndWFyYW50ZWVzIHRoYXQgdGhlIGNoaWxkIHdpbGwgbm90CkBAIC00OSw4ICs1Myw4IEBACiAgICAgICAgICAgICAjIGV4aXQoKSBvciBfZXhpdCgpPwogICAgICAgICAgICAgIyBfZXhpdCBpcyBsaWtlIGV4aXQoKSwgYnV0IGl0IGRvZXNuJ3QgY2FsbCBhbnkgZnVuY3Rpb25zIHJlZ2lzdGVyZWQKICAgICAgICAgICAgICMgd2l0aCBhdGV4aXQgKGFuZCBvbl9leGl0KSBvciBhbnkgcmVnaXN0ZXJlZCBzaWduYWwgaGFuZGxlcnMuICBJdCBhbHNvCi0gICAgICAgICAgICAjIGNsb3NlcyBhbnkgb3BlbiBmaWxlIGRlc2NyaXB0b3JzLiAgVXNpbmcgZXhpdCgpIG1heSBjYXVzZSBhbGwgc3RkaW8KLSAgICAgICAgICAgICMgc3RyZWFtcyB0byBiZSBmbHVzaGVkIHR3aWNlIGFuZCBhbnkgdGVtcG9yYXJ5IGZpbGVzIG1heSBiZSB1bmV4cGVjdGVkbHkKKyAgICAgICAgICAgICMgY2xvc2VzIGFueSBvcGVuIGZpbGUgZGVzY3JpcHRvcnMsIGJ1dCBkb2Vzbid0IGZsdXNoIGFueSBidWZmZXJlZCBvdXRwdXQuCisgICAgICAgICAgICAjIFVzaW5nIGV4aXQoKSBtYXkgY2F1c2UgYWxsIGFueSB0ZW1wb3JhcnkgZmlsZXMgdG8gYmUgdW5leHBlY3RlZGx5CiAgICAgICAgICAgICAjIHJlbW92ZWQuICBJdCdzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0aGF0IGNoaWxkIGJyYW5jaGVzIG9mIGEgZm9yaygpCiAgICAgICAgICAgICAjIGFuZCB0aGUgcGFyZW50IGJyYW5jaChlcykgb2YgYSBkYWVtb24gdXNlIF9leGl0KCkuCiAgICAgICAgICAgICBvcy5fZXhpdCgwKQpAQCAtNjEsMTcgKzY1LDE5IEBACiAgICAgIyBUaGUgc2Vjb25kIGNoaWxkLgogCiAgICAgIyBSZXBsYWNlIHN0YW5kYXJkIGZkcyB3aXRoIG91ciBvd24KLSAgICBzaSA9IG9wZW4oJy9kZXYvbnVsbCcsICdyJykKLSAgICBvcy5kdXAyKHNpLmZpbGVubygpLCBzeXMuc3RkaW4uZmlsZW5vKCkpCisgICAgd2l0aCBvcGVuKCcvZGV2L251bGwnLCAncicpIGFzIHNpOgorICAgICAgICBvcy5kdXAyKHNpLmZpbGVubygpLCBzeXMuc3RkaW4uZmlsZW5vKCkpCiAKICAgICB0cnk6CiAgICAgICAgIHNvID0gb3Blbihsb2dmaWxlLCAnYSsnKQotICAgICAgICBzZSA9IHNvCiAgICAgICAgIG9zLmR1cDIoc28uZmlsZW5vKCksIHN5cy5zdGRvdXQuZmlsZW5vKCkpCi0gICAgICAgIG9zLmR1cDIoc2UuZmlsZW5vKCksIHN5cy5zdGRlcnIuZmlsZW5vKCkpCisgICAgICAgIG9zLmR1cDIoc28uZmlsZW5vKCksIHN5cy5zdGRlcnIuZmlsZW5vKCkpCiAgICAgZXhjZXB0IGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uOgogICAgICAgICBzeXMuc3Rkb3V0ID0gb3Blbihsb2dmaWxlLCAnYSsnKQotICAgICAgICBzeXMuc3RkZXJyID0gc3lzLnN0ZG91dAorCisgICAgIyBIYXZlIHN0ZG91dCBhbmQgc3RkZXJyIGJlIHRoZSBzYW1lIHNvIGxvZyBvdXRwdXQgbWF0Y2hlcyBjaHJvbm9sb2dpY2FsbHkKKyAgICAjIGFuZCB0aGVyZSBhcmVuJ3QgdHdvIHNlcGVyYXRlIGJ1ZmZlcnMKKyAgICBzeXMuc3RkZXJyID0gc3lzLnN0ZG91dAogCiAgICAgdHJ5OgogICAgICAgICBmdW5jdGlvbigpCkBAIC03OSw0ICs4NSw5IEBACiAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGJiLmV2ZW50LnByaW50X3VpX3F1ZXVlKCkKKyAgICAgICAgIyBvcy5fZXhpdCgpIGRvZXNuJ3QgZmx1c2ggb3BlbiBmaWxlcyBsaWtlIG9zLmV4aXQoKSBkb2VzLiBNYW51YWxseSBmbHVzaAorICAgICAgICAjIHN0ZG91dCBhbmQgc3RkZXJyIHNvIHRoYXQgYW55IGxvZ2dpbmcgb3V0cHV0IHdpbGwgYmUgc2VlbiwgcGFydGljdWxhcmx5CisgICAgICAgICMgZXhjZXB0aW9uIHRyYWNlYmFja3MuCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKICAgICAgICAgb3MuX2V4aXQoMCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQppbmRleCA4MGE3ODc5Li5kNjZkOThjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CkBAIC0zOCw2ICszOCw3IEBACiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAogaW1wb3J0IHN5cywgb3MsIHJlCitpbXBvcnQgaGFzaGxpYgogaWYgc3lzLmFyZ3ZbMF1bLTU6XSA9PSAicHlkb2MiOgogICAgIHBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzFdKSkKIGVsc2U6CkBAIC0yODMsMTQgKzI4NCwxMiBAQAogICAgIHRyeToKICAgICAgICAgaWYga2V5Wy0xXSA9PSAnXSc6CiAgICAgICAgICAgICB2ZiA9IGtleVs6LTFdLnNwbGl0KCdbJykKLSAgICAgICAgICAgIHZhbHVlID0gZC5nZXRWYXJGbGFnKHZmWzBdLCB2ZlsxXSwgRmFsc2UpCi0gICAgICAgICAgICBwYXJzZXIgPSBkLmV4cGFuZFdpdGhSZWZzKHZhbHVlLCBrZXkpCisgICAgICAgICAgICB2YWx1ZSwgcGFyc2VyID0gZC5nZXRWYXJGbGFnKHZmWzBdLCB2ZlsxXSwgRmFsc2UsIHJldHBhcnNlcj1UcnVlKQogICAgICAgICAgICAgZGVwcyB8PSBwYXJzZXIucmVmZXJlbmNlcwogICAgICAgICAgICAgZGVwcyA9IGRlcHMgfCAoa2V5cyAmIHBhcnNlci5leGVjcykKICAgICAgICAgICAgIHJldHVybiBkZXBzLCB2YWx1ZQogICAgICAgICB2YXJmbGFncyA9IGQuZ2V0VmFyRmxhZ3Moa2V5LCBbInZhcmRlcHMiLCAidmFyZGVwdmFsdWUiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiZXhwb3J0cyIsICJwb3N0ZnVuY3MiLCAicHJlZnVuY3MiLCAibGluZW5vIiwgImZpbGVuYW1lIl0pIG9yIHt9CiAgICAgICAgIHZhcmRlcHMgPSB2YXJmbGFncy5nZXQoInZhcmRlcHMiKQotICAgICAgICB2YWx1ZSA9IGQuZ2V0VmFyRmxhZyhrZXksICJfY29udGVudCIsIEZhbHNlKQogCiAgICAgICAgIGRlZiBoYW5kbGVfY29udGFpbnModmFsdWUsIGNvbnRhaW5zLCBkKToKICAgICAgICAgICAgIG5ld3ZhbHVlID0gIiIKQEAgLTMwOSwxMCArMzA4LDE5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld3ZhbHVlCiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgKyBuZXd2YWx1ZQogCisgICAgICAgIGRlZiBoYW5kbGVfcmVtb3ZlKHZhbHVlLCBkZXBzLCByZW1vdmVzLCBkKToKKyAgICAgICAgICAgIGZvciByIGluIHNvcnRlZChyZW1vdmVzKToKKyAgICAgICAgICAgICAgICByMiA9IGQuZXhwYW5kV2l0aFJlZnMociwgTm9uZSkKKyAgICAgICAgICAgICAgICB2YWx1ZSArPSAiXG5fcmVtb3ZlIG9mICVzIiAlIHIKKyAgICAgICAgICAgICAgICBkZXBzIHw9IHIyLnJlZmVyZW5jZXMKKyAgICAgICAgICAgICAgICBkZXBzID0gZGVwcyB8IChrZXlzICYgcjIuZXhlY3MpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKwogICAgICAgICBpZiAidmFyZGVwdmFsdWUiIGluIHZhcmZsYWdzOgotICAgICAgICAgICB2YWx1ZSA9IHZhcmZsYWdzLmdldCgidmFyZGVwdmFsdWUiKQorICAgICAgICAgICAgdmFsdWUgPSB2YXJmbGFncy5nZXQoInZhcmRlcHZhbHVlIikKICAgICAgICAgZWxpZiB2YXJmbGFncy5nZXQoImZ1bmMiKToKICAgICAgICAgICAgIGlmIHZhcmZsYWdzLmdldCgicHl0aG9uIik6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBkLmdldFZhckZsYWcoa2V5LCAiX2NvbnRlbnQiLCBGYWxzZSkKICAgICAgICAgICAgICAgICBwYXJzZXIgPSBiYi5jb2RlcGFyc2VyLlB5dGhvblBhcnNlcihrZXksIGxvZ2dlcikKICAgICAgICAgICAgICAgICBpZiB2YWx1ZSBhbmQgIlx0IiBpbiB2YWx1ZToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlZhcmlhYmxlICVzIGNvbnRhaW5zIHRhYnMsIHBsZWFzZSByZW1vdmUgdGhlc2UgKCVzKSIgJSAoa2V5LCBkLmdldFZhcigiRklMRSIpKSkKQEAgLTMyMSwxMyArMzI5LDE1IEBACiAgICAgICAgICAgICAgICAgZGVwcyA9IGRlcHMgfCAoa2V5cyAmIHBhcnNlci5leGVjcykKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhhbmRsZV9jb250YWlucyh2YWx1ZSwgcGFyc2VyLmNvbnRhaW5zLCBkKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXJzZWR2YXIgPSBkLmV4cGFuZFdpdGhSZWZzKHZhbHVlLCBrZXkpCisgICAgICAgICAgICAgICAgdmFsdWUsIHBhcnNlZHZhciA9IGQuZ2V0VmFyRmxhZyhrZXksICJfY29udGVudCIsIEZhbHNlLCByZXRwYXJzZXI9VHJ1ZSkKICAgICAgICAgICAgICAgICBwYXJzZXIgPSBiYi5jb2RlcGFyc2VyLlNoZWxsUGFyc2VyKGtleSwgbG9nZ2VyKQogICAgICAgICAgICAgICAgIHBhcnNlci5wYXJzZV9zaGVsbChwYXJzZWR2YXIudmFsdWUpCiAgICAgICAgICAgICAgICAgZGVwcyA9IGRlcHMgfCBzaGVsbGRlcHMKICAgICAgICAgICAgICAgICBkZXBzID0gZGVwcyB8IHBhcnNlZHZhci5yZWZlcmVuY2VzCiAgICAgICAgICAgICAgICAgZGVwcyA9IGRlcHMgfCAoa2V5cyAmIHBhcnNlci5leGVjcykgfCAoa2V5cyAmIHBhcnNlZHZhci5leGVjcykKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhhbmRsZV9jb250YWlucyh2YWx1ZSwgcGFyc2VkdmFyLmNvbnRhaW5zLCBkKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIocGFyc2VkdmFyLCAicmVtb3ZlcyIpOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGhhbmRsZV9yZW1vdmUodmFsdWUsIGRlcHMsIHBhcnNlZHZhci5yZW1vdmVzLCBkKQogICAgICAgICAgICAgaWYgdmFyZGVwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHBhcnNlci5sb2cuZmx1c2goKQogICAgICAgICAgICAgaWYgInByZWZ1bmNzIiBpbiB2YXJmbGFnczoKQEAgLTMzNywxMCArMzQ3LDEyIEBACiAgICAgICAgICAgICBpZiAiZXhwb3J0cyIgaW4gdmFyZmxhZ3M6CiAgICAgICAgICAgICAgICAgZGVwcyA9IGRlcHMgfCBzZXQodmFyZmxhZ3NbImV4cG9ydHMiXS5zcGxpdCgpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFyc2VyID0gZC5leHBhbmRXaXRoUmVmcyh2YWx1ZSwga2V5KQorICAgICAgICAgICAgdmFsdWUsIHBhcnNlciA9IGQuZ2V0VmFyRmxhZyhrZXksICJfY29udGVudCIsIEZhbHNlLCByZXRwYXJzZXI9VHJ1ZSkKICAgICAgICAgICAgIGRlcHMgfD0gcGFyc2VyLnJlZmVyZW5jZXMKICAgICAgICAgICAgIGRlcHMgPSBkZXBzIHwgKGtleXMgJiBwYXJzZXIuZXhlY3MpCiAgICAgICAgICAgICB2YWx1ZSA9IGhhbmRsZV9jb250YWlucyh2YWx1ZSwgcGFyc2VyLmNvbnRhaW5zLCBkKQorICAgICAgICAgICAgaWYgaGFzYXR0cihwYXJzZXIsICJyZW1vdmVzIik6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBoYW5kbGVfcmVtb3ZlKHZhbHVlLCBkZXBzLCBwYXJzZXIucmVtb3ZlcywgZCkKIAogICAgICAgICBpZiAidmFyZGVwdmFsdWVleGNsdWRlIiBpbiB2YXJmbGFnczoKICAgICAgICAgICAgIGV4Y2x1ZGUgPSB2YXJmbGFncy5nZXQoInZhcmRlcHZhbHVlZXhjbHVkZSIpCkBAIC0zOTQsNiArNDA2LDQzIEBACiAgICAgICAgICNwcmludCAiRm9yICVzOiAlcyIgJSAodGFzaywgc3RyKGRlcHNbdGFza10pKQogICAgIHJldHVybiB0YXNrbGlzdCwgZGVwcywgdmFsdWVzCiAKK2RlZiBnZW5lcmF0ZV9kZXBlbmRlbmN5X2hhc2godGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlLCB3aGl0ZWxpc3QsIGZuKToKKyAgICB0YXNrZGVwcyA9IHt9CisgICAgYmFzZWhhc2ggPSB7fQorCisgICAgZm9yIHRhc2sgaW4gdGFza2xpc3Q6CisgICAgICAgIGRhdGEgPSBsb29rdXBjYWNoZVt0YXNrXQorCisgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIGJiLmVycm9yKCJUYXNrICVzIGZyb20gJXMgc2VlbXMgdG8gYmUgZW1wdHk/ISIgJSAodGFzaywgZm4pKQorICAgICAgICAgICAgZGF0YSA9ICcnCisKKyAgICAgICAgZ2VuZGVwc1t0YXNrXSAtPSB3aGl0ZWxpc3QKKyAgICAgICAgbmV3ZGVwcyA9IGdlbmRlcHNbdGFza10KKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHdoaWxlIG5ld2RlcHM6CisgICAgICAgICAgICBuZXh0ZGVwcyA9IG5ld2RlcHMKKyAgICAgICAgICAgIHNlZW4gfD0gbmV4dGRlcHMKKyAgICAgICAgICAgIG5ld2RlcHMgPSBzZXQoKQorICAgICAgICAgICAgZm9yIGRlcCBpbiBuZXh0ZGVwczoKKyAgICAgICAgICAgICAgICBpZiBkZXAgaW4gd2hpdGVsaXN0OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGdlbmRlcHNbZGVwXSAtPSB3aGl0ZWxpc3QKKyAgICAgICAgICAgICAgICBuZXdkZXBzIHw9IGdlbmRlcHNbZGVwXQorICAgICAgICAgICAgbmV3ZGVwcyAtPSBzZWVuCisKKyAgICAgICAgYWxsZGVwcyA9IHNvcnRlZChzZWVuKQorICAgICAgICBmb3IgZGVwIGluIGFsbGRlcHM6CisgICAgICAgICAgICBkYXRhID0gZGF0YSArIGRlcAorICAgICAgICAgICAgdmFyID0gbG9va3VwY2FjaGVbZGVwXQorICAgICAgICAgICAgaWYgdmFyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc3RyKHZhcikKKyAgICAgICAgayA9IGZuICsgIi4iICsgdGFzaworICAgICAgICBiYXNlaGFzaFtrXSA9IGhhc2hsaWIubWQ1KGRhdGEuZW5jb2RlKCJ1dGYtOCIpKS5oZXhkaWdlc3QoKQorICAgICAgICB0YXNrZGVwc1t0YXNrXSA9IGFsbGRlcHMKKworICAgIHJldHVybiB0YXNrZGVwcywgYmFzZWhhc2gKKwogZGVmIGluaGVyaXRzX2NsYXNzKGtsYXNzLCBkKToKICAgICB2YWwgPSBkLmdldFZhcignX19pbmhlcml0X2NhY2hlJywgRmFsc2UpIG9yIFtdCiAgICAgbmVlZGxlID0gb3MucGF0aC5qb2luKCdjbGFzc2VzJywgJyVzLmJiY2xhc3MnICUga2xhc3MpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKaW5kZXggN2IwOWFmNS4uNmI5NGZjNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQpAQCAtNDIsNiArNDIsNyBAQAogX19zZXR2YXJfcmVnZXhwX18gPSByZS5jb21waWxlKCcoP1A8YmFzZT4uKj8pKD9QPGtleXdvcmQ+X2FwcGVuZHxfcHJlcGVuZHxfcmVtb3ZlKShfKD9QPGFkZD5bXkEtWl0qKSk/JCcpCiBfX2V4cGFuZF92YXJfcmVnZXhwX18gPSByZS5jb21waWxlKHIiXCR7W157fUBcblx0IDpdK30iKQogX19leHBhbmRfcHl0aG9uX3JlZ2V4cF9fID0gcmUuY29tcGlsZShyIlwke0AuKz99IikKK19fd2hpdGVzcGFjZV9zcGxpdF9fID0gcmUuY29tcGlsZSgnKFxzKScpCiAKIGRlZiBpbmZlcl9jYWxsZXJfZGV0YWlscyhsb2dpbmZvLCBwYXJlbnQgPSBGYWxzZSwgdmFydmFsID0gVHJ1ZSk6CiAgICAgIiIiU2F2ZSB0aGUgY2FsbGVyIHRoZSB0cm91YmxlIG9mIHNwZWNpZnlpbmcgZXZlcnl0aGluZy4iIiIKQEAgLTEwNCwxMSArMTA1LDcgQEAKICAgICAgICAgICAgIGlmIHNlbGYudmFybmFtZSBhbmQga2V5OgogICAgICAgICAgICAgICAgIGlmIHNlbGYudmFybmFtZSA9PSBrZXk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidmFyaWFibGUgJXMgcmVmZXJlbmNlcyBpdHNlbGYhIiAlIHNlbGYudmFybmFtZSkKLSAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmLmQuZXhwYW5kX2NhY2hlOgotICAgICAgICAgICAgICAgIHZhcnBhcnNlID0gc2VsZi5kLmV4cGFuZF9jYWNoZVtrZXldCi0gICAgICAgICAgICAgICAgdmFyID0gdmFycGFyc2UudmFsdWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdmFyID0gc2VsZi5kLmdldFZhckZsYWcoa2V5LCAiX2NvbnRlbnQiKQorICAgICAgICAgICAgdmFyID0gc2VsZi5kLmdldFZhckZsYWcoa2V5LCAiX2NvbnRlbnQiKQogICAgICAgICAgICAgc2VsZi5yZWZlcmVuY2VzLmFkZChrZXkpCiAgICAgICAgICAgICBpZiB2YXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHZhcgpAQCAtMjY3LDYgKzI2NCwxNiBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYudmFyaWFibGVzW3Zhcl0uYXBwZW5kKGxvZ2luZm8uY29weSgpKQogCisgICAgZGVmIHJlbmFtZV92YXJpYWJsZV9oaXN0KHNlbGYsIG9sZHZhciwgbmV3dmFyKToKKyAgICAgICAgaWYgbm90IHNlbGYuZGF0YXJvb3QuX3RyYWNraW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIG9sZHZhciBub3QgaW4gc2VsZi52YXJpYWJsZXM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbmV3dmFyIG5vdCBpbiBzZWxmLnZhcmlhYmxlczoKKyAgICAgICAgICAgIHNlbGYudmFyaWFibGVzW25ld3Zhcl0gPSBbXQorICAgICAgICBmb3IgaSBpbiBzZWxmLnZhcmlhYmxlc1tvbGR2YXJdOgorICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbbmV3dmFyXS5hcHBlbmQoaS5jb3B5KCkpCisKICAgICBkZWYgdmFyaWFibGUoc2VsZiwgdmFyKToKICAgICAgICAgcmVtb3RlX2Nvbm5lY3RvciA9IHNlbGYuZGF0YXJvb3QuZ2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBGYWxzZSkKICAgICAgICAgaWYgcmVtb3RlX2Nvbm5lY3RvcjoKQEAgLTQwMSw5ICs0MDgsNiBAQAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOiAjIHNhbml0eSBjaGVjawogICAgICAgICAgICAgcmV0dXJuIFZhcmlhYmxlUGFyc2UodmFybmFtZSwgc2VsZiwgcykKIAotICAgICAgICBpZiB2YXJuYW1lIGFuZCB2YXJuYW1lIGluIHNlbGYuZXhwYW5kX2NhY2hlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhwYW5kX2NhY2hlW3Zhcm5hbWVdCi0KICAgICAgICAgdmFycGFyc2UgPSBWYXJpYWJsZVBhcnNlKHZhcm5hbWUsIHNlbGYpCiAKICAgICAgICAgd2hpbGUgcy5maW5kKCckeycpICE9IC0xOgpAQCAtNDI3LDkgKzQzMSw2IEBACiAKICAgICAgICAgdmFycGFyc2UudmFsdWUgPSBzCiAKLSAgICAgICAgaWYgdmFybmFtZToKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlW3Zhcm5hbWVdID0gdmFycGFyc2UKLQogICAgICAgICByZXR1cm4gdmFycGFyc2UKIAogICAgIGRlZiBleHBhbmQoc2VsZiwgcywgdmFybmFtZSA9IE5vbmUpOgpAQCAtNDk4LDYgKzQ5OSw3IEBACiAKICAgICBkZWYgc2V0VmFyKHNlbGYsIHZhciwgdmFsdWUsICoqbG9naW5mbyk6CiAgICAgICAgICNwcmludCgidmFyPSIgKyBzdHIodmFyKSArICIgIHZhbD0iICsgc3RyKHZhbHVlKSkKKyAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQogICAgICAgICBwYXJzaW5nPUZhbHNlCiAgICAgICAgIGlmICdwYXJzaW5nJyBpbiBsb2dpbmZvOgogICAgICAgICAgICAgcGFyc2luZz1UcnVlCkBAIC01MTAsNyArNTEyLDcgQEAKIAogICAgICAgICBpZiAnb3AnIG5vdCBpbiBsb2dpbmZvOgogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICJzZXQiCi0gICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KKwogICAgICAgICBtYXRjaCAgPSBfX3NldHZhcl9yZWdleHBfXy5tYXRjaCh2YXIpCiAgICAgICAgIGlmIG1hdGNoIGFuZCBtYXRjaC5ncm91cCgia2V5d29yZCIpIGluIF9fc2V0dmFyX2tleXdvcmRfXzoKICAgICAgICAgICAgIGJhc2UgPSBtYXRjaC5ncm91cCgnYmFzZScpCkBAIC02MTksNiArNjIxLDcgQEAKIAogICAgICAgICB2YWwgPSBzZWxmLmdldFZhcihrZXksIDAsIHBhcnNpbmc9VHJ1ZSkKICAgICAgICAgaWYgdmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi52YXJoaXN0b3J5LnJlbmFtZV92YXJpYWJsZV9oaXN0KGtleSwgbmV3a2V5KQogICAgICAgICAgICAgbG9naW5mb1sndmFyaWFibGUnXSA9IG5ld2tleQogICAgICAgICAgICAgbG9naW5mb1snb3AnXSA9ICdyZW5hbWUgZnJvbSAlcycgJSBrZXkKICAgICAgICAgICAgIGxvZ2luZm9bJ2RldGFpbCddID0gdmFsCkBAIC02NjAsNiArNjYzLDcgQEAKICAgICAgICAgc2VsZi5zZXRWYXIodmFyICsgIl9wcmVwZW5kIiwgdmFsdWUsIGlnbm9yZT1UcnVlLCBwYXJzaW5nPVRydWUpCiAKICAgICBkZWYgZGVsVmFyKHNlbGYsIHZhciwgKipsb2dpbmZvKToKKyAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQogICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6CiAgICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCiAgICAgICAgICAgICByZXMgPSBjb25uZWN0b3IuZGVsVmFyKHZhcikKQEAgLTY2OSw3ICs2NzMsNiBAQAogICAgICAgICBsb2dpbmZvWydkZXRhaWwnXSA9ICIiCiAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAnZGVsJwogICAgICAgICBzZWxmLnZhcmhpc3RvcnkucmVjb3JkKCoqbG9naW5mbykKLSAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQogICAgICAgICBzZWxmLmRpY3RbdmFyXSA9IHt9CiAgICAgICAgIGlmIHZhciBpbiBzZWxmLm92ZXJyaWRlZGF0YToKICAgICAgICAgICAgIGRlbCBzZWxmLm92ZXJyaWRlZGF0YVt2YXJdCkBAIC02OTIsMTMgKzY5NSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlID0gTm9uZQogCiAgICAgZGVmIHNldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCB2YWx1ZSwgKipsb2dpbmZvKToKKyAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQogICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6CiAgICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCiAgICAgICAgICAgICByZXMgPSBjb25uZWN0b3Iuc2V0VmFyRmxhZyh2YXIsIGZsYWcsIHZhbHVlKQogICAgICAgICAgICAgaWYgbm90IHJlczoKICAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZSA9IHt9CiAgICAgICAgIGlmICdvcCcgbm90IGluIGxvZ2luZm86CiAgICAgICAgICAgICBsb2dpbmZvWydvcCddID0gInNldCIKICAgICAgICAgbG9naW5mb1snZmxhZyddID0gZmxhZwpAQCAtNzE5LDkgKzcyMiwyMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZGljdFsiX19leHBvcnRsaXN0Il1bIl9jb250ZW50Il0gPSBzZXQoKQogICAgICAgICAgICAgc2VsZi5kaWN0WyJfX2V4cG9ydGxpc3QiXVsiX2NvbnRlbnQiXS5hZGQodmFyKQogCi0gICAgZGVmIGdldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCBleHBhbmQ9VHJ1ZSwgbm93ZWFrZGVmYXVsdD1GYWxzZSwgcGFyc2luZz1GYWxzZSk6CisgICAgZGVmIGdldFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCBleHBhbmQ9VHJ1ZSwgbm93ZWFrZGVmYXVsdD1GYWxzZSwgcGFyc2luZz1GYWxzZSwgcmV0cGFyc2VyPUZhbHNlKToKKyAgICAgICAgaWYgZmxhZyA9PSAiX2NvbnRlbnQiOgorICAgICAgICAgICAgY2FjaGVuYW1lID0gdmFyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3QgZmxhZzoKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJDYWxsaW5nIGdldFZhckZsYWcgd2l0aCBmbGFnIHVuc2V0IGlzIGludmFsaWQiKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBjYWNoZW5hbWUgPSB2YXIgKyAiWyIgKyBmbGFnICsgIl0iCisKKyAgICAgICAgaWYgZXhwYW5kIGFuZCBjYWNoZW5hbWUgaW4gc2VsZi5leHBhbmRfY2FjaGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5leHBhbmRfY2FjaGVbY2FjaGVuYW1lXS52YWx1ZQorCiAgICAgICAgIGxvY2FsX3Zhciwgb3ZlcnJpZGVkYXRhID0gc2VsZi5fZmluZFZhcih2YXIpCiAgICAgICAgIHZhbHVlID0gTm9uZQorICAgICAgICByZW1vdmVzID0gc2V0KCkKICAgICAgICAgaWYgZmxhZyA9PSAiX2NvbnRlbnQiIGFuZCBvdmVycmlkZWRhdGEgaXMgbm90IE5vbmUgYW5kIG5vdCBwYXJzaW5nOgogICAgICAgICAgICAgbWF0Y2ggPSBGYWxzZQogICAgICAgICAgICAgYWN0aXZlID0ge30KQEAgLTc0OCw3ICs3NjMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGFjdGl2ZVthXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBhY3RpdmVbYV0KICAgICAgICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5nZXRWYXIobWF0Y2gsIEZhbHNlKQorICAgICAgICAgICAgICAgIHZhbHVlLCBzdWJwYXJzZXIgPSBzZWxmLmdldFZhckZsYWcobWF0Y2gsICJfY29udGVudCIsIEZhbHNlLCByZXRwYXJzZXI9VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN1YnBhcnNlciwgInJlbW92ZXMiKToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHRvIGNhcnJ5IHRoZSByZW1vdmVzIGZyb20gdGhlIG92ZXJyaWRkZW4gdmFyaWFibGUgdG8gYXBwbHkgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgZW5kIG9mIHByb2Nlc3NpbmcKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlcyA9IHN1YnBhcnNlci5yZW1vdmVzCiAKICAgICAgICAgaWYgbG9jYWxfdmFyIGlzIG5vdCBOb25lIGFuZCB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgaWYgZmxhZyBpbiBsb2NhbF92YXI6CkBAIC03ODQsMTcgKzgwMywxMyBAQAogICAgICAgICAgICAgICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHIgKyB2YWx1ZQogCi0gICAgICAgIGlmIGV4cGFuZCBhbmQgdmFsdWU6Ci0gICAgICAgICAgICAjIE9ubHkgZ2V0dmFyIChmbGFnID09IF9jb250ZW50KSBoaXRzIHRoZSBleHBhbmQgY2FjaGUKLSAgICAgICAgICAgIGNhY2hlbmFtZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIGZsYWcgPT0gIl9jb250ZW50IjoKLSAgICAgICAgICAgICAgICBjYWNoZW5hbWUgPSB2YXIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2FjaGVuYW1lID0gdmFyICsgIlsiICsgZmxhZyArICJdIgotICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmV4cGFuZCh2YWx1ZSwgY2FjaGVuYW1lKQorICAgICAgICBwYXJzZXIgPSBOb25lCisgICAgICAgIGlmIGV4cGFuZCBvciByZXRwYXJzZXI6CisgICAgICAgICAgICBwYXJzZXIgPSBzZWxmLmV4cGFuZFdpdGhSZWZzKHZhbHVlLCBjYWNoZW5hbWUpCisgICAgICAgIGlmIGV4cGFuZDoKKyAgICAgICAgICAgIHZhbHVlID0gcGFyc2VyLnZhbHVlCiAKLSAgICAgICAgaWYgdmFsdWUgYW5kIGZsYWcgPT0gIl9jb250ZW50IiBhbmQgbG9jYWxfdmFyIGlzIG5vdCBOb25lIGFuZCAiX3JlbW92ZSIgaW4gbG9jYWxfdmFyOgotICAgICAgICAgICAgcmVtb3ZlcyA9IFtdCisgICAgICAgIGlmIHZhbHVlIGFuZCBmbGFnID09ICJfY29udGVudCIgYW5kIGxvY2FsX3ZhciBpcyBub3QgTm9uZSBhbmQgIl9yZW1vdmUiIGluIGxvY2FsX3ZhciBhbmQgbm90IHBhcnNpbmc6CiAgICAgICAgICAgICBzZWxmLm5lZWRfb3ZlcnJpZGVzKCkKICAgICAgICAgICAgIGZvciAociwgbykgaW4gbG9jYWxfdmFyWyJfcmVtb3ZlIl06CiAgICAgICAgICAgICAgICAgbWF0Y2ggPSBUcnVlCkBAIC04MDMsMjYgKzgxOCw0NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IG8yIGluIHNlbGYub3ZlcnJpZGVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gRmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZXMuZXh0ZW5kKHNlbGYuZXhwYW5kKHIpLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgICAgIHJlbW92ZXMuYWRkKHIpCiAKLSAgICAgICAgICAgIGlmIHJlbW92ZXM6Ci0gICAgICAgICAgICAgICAgZmlsdGVyZWQgPSBmaWx0ZXIobGFtYmRhIHY6IHYgbm90IGluIHJlbW92ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc3BsaXQoKSkKLSAgICAgICAgICAgICAgICB2YWx1ZSA9ICIgIi5qb2luKGZpbHRlcmVkKQotICAgICAgICAgICAgICAgIGlmIGV4cGFuZCBhbmQgdmFyIGluIHNlbGYuZXhwYW5kX2NhY2hlOgotICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBleHBhbmQgY2FjaGUgaGFzIHRoZSBjb3JyZWN0IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICMgZmxhZyA9PSAiX2NvbnRlbnQiIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leHBhbmRfY2FjaGVbdmFyXS52YWx1ZSA9IHZhbHVlCisgICAgICAgIGlmIHZhbHVlIGFuZCBmbGFnID09ICJfY29udGVudCIgYW5kIG5vdCBwYXJzaW5nOgorICAgICAgICAgICAgaWYgcmVtb3ZlcyBhbmQgcGFyc2VyOgorICAgICAgICAgICAgICAgIGV4cGFuZGVkX3JlbW92ZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciByIGluIHJlbW92ZXM6CisgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkX3JlbW92ZXNbcl0gPSBzZWxmLmV4cGFuZChyKS5zcGxpdCgpCisKKyAgICAgICAgICAgICAgICBwYXJzZXIucmVtb3ZlcyA9IHNldCgpCisgICAgICAgICAgICAgICAgdmFsID0gIiIKKyAgICAgICAgICAgICAgICBmb3IgdiBpbiBfX3doaXRlc3BhY2Vfc3BsaXRfXy5zcGxpdChwYXJzZXIudmFsdWUpOgorICAgICAgICAgICAgICAgICAgICBza2lwID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gcmVtb3ZlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHYgaW4gZXhwYW5kZWRfcmVtb3Zlc1tyXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIucmVtb3Zlcy5hZGQocikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBza2lwOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICsgdgorICAgICAgICAgICAgICAgIHBhcnNlci52YWx1ZSA9IHZhbAorICAgICAgICAgICAgICAgIGlmIGV4cGFuZDoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZXIudmFsdWUKKworICAgICAgICBpZiBwYXJzZXI6CisgICAgICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZVtjYWNoZW5hbWVdID0gcGFyc2VyCisKKyAgICAgICAgaWYgcmV0cGFyc2VyOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLCBwYXJzZXIKKwogICAgICAgICByZXR1cm4gdmFsdWUKIAogICAgIGRlZiBkZWxWYXJGbGFnKHNlbGYsIHZhciwgZmxhZywgKipsb2dpbmZvKToKKyAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQogICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6CiAgICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCiAgICAgICAgICAgICByZXMgPSBjb25uZWN0b3IuZGVsVmFyRmxhZyh2YXIsIGZsYWcpCiAgICAgICAgICAgICBpZiBub3QgcmVzOgogICAgICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KICAgICAgICAgbG9jYWxfdmFyLCBfID0gc2VsZi5fZmluZFZhcih2YXIpCiAgICAgICAgIGlmIG5vdCBsb2NhbF92YXI6CiAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CmluZGV4IDVkMDA0OTYuLjViMWIwOTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQpAQCAtMTQxLDYgKzE0MSw5IEBACiAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKQogICAgIGlmIG5vdCBfdWlyZWFkeToKICAgICAgICAgZnJvbSBiYi5tc2cgaW1wb3J0IEJCTG9nRm9ybWF0dGVyCisgICAgICAgICMgRmx1c2ggYW55IGV4aXN0aW5nIGJ1ZmZlcmVkIGNvbnRlbnQKKyAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogICAgICAgICBzdGRvdXQgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKICAgICAgICAgc3RkZXJyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCiAgICAgICAgIGZvcm1hdHRlciA9IEJCTG9nRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpCkBAIC0zOTUsNyArMzk4LDcgQEAKICAgICAgICAgRXZlbnQuX19pbml0X18oc2VsZikKIAogY2xhc3MgUmVjaXBlUHJlRmluYWxpc2UoUmVjaXBlRXZlbnQpOgotICAgICIiIiBSZWNpcGUgUGFyc2luZyBDb21wbGV0ZSBidXQgbm90IHlldCBmaW5pYWxpc2VkIiIiCisgICAgIiIiIFJlY2lwZSBQYXJzaW5nIENvbXBsZXRlIGJ1dCBub3QgeWV0IGZpbmFsaXNlZCIiIgogCiBjbGFzcyBSZWNpcGVUYXNrUHJlUHJvY2VzcyhSZWNpcGVFdmVudCk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IDcyZDYwOTIuLjNiODM4OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC0yNTYsNyArMjU2LDcgQEAKIAogICAgICAgICAjIElkZW50aWZ5IGlmIHRoZSBVUkkgaXMgcmVsYXRpdmUgb3Igbm90CiAgICAgICAgIGlmIHVybHAuc2NoZW1lIGluIHNlbGYuX3JlbGF0aXZlX3NjaGVtZXMgYW5kIFwKLSAgICAgICAgICAgcmUuY29tcGlsZSgiXlx3KzooPyEvLykiKS5tYXRjaCh1cmkpOgorICAgICAgICAgICByZS5jb21waWxlKHIiXlx3KzooPyEvLykiKS5tYXRjaCh1cmkpOgogICAgICAgICAgICAgc2VsZi5yZWxhdGl2ZSA9IFRydWUKIAogICAgICAgICBpZiBub3Qgc2VsZi5yZWxhdGl2ZToKQEAgLTM4Myw3ICszODMsNyBAQAogICAgICAgICBwYXRoID0gbG9jYXRpb24KICAgICBlbHNlOgogICAgICAgICBob3N0ID0gbG9jYXRpb24KLSAgICAgICAgcGF0aCA9ICIiCisgICAgICAgIHBhdGggPSAiLyIKICAgICBpZiB1c2VyOgogICAgICAgICBtID0gcmUuY29tcGlsZSgnKD9QPHVzZXI+W146XSspKDo/KD9QPHBzd2Q+LiopKScpLm1hdGNoKHVzZXIpCiAgICAgICAgIGlmIG06CkBAIC00NTIsOCArNDUyLDggQEAKICAgICAgICAgICAgICMgSGFuZGxlIFVSTCBwYXJhbWV0ZXJzCiAgICAgICAgICAgICBpZiBpOgogICAgICAgICAgICAgICAgICMgQW55IHNwZWNpZmllZCBVUkwgcGFyYW1ldGVycyBtdXN0IG1hdGNoCi0gICAgICAgICAgICAgICAgZm9yIGsgaW4gdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdOgotICAgICAgICAgICAgICAgICAgICBpZiB1cmlfZGVjb2RlZFtsb2NdW2tdICE9IHVyaV9yZXBsYWNlX2RlY29kZWRbbG9jXVtrXToKKyAgICAgICAgICAgICAgICBmb3IgayBpbiB1cmlfZmluZF9kZWNvZGVkW2xvY106CisgICAgICAgICAgICAgICAgICAgIGlmIHVyaV9kZWNvZGVkW2xvY11ba10gIT0gdXJpX2ZpbmRfZGVjb2RlZFtsb2NdW2tdOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICMgT3ZlcndyaXRlIGFueSBzcGVjaWZpZWQgcmVwbGFjZW1lbnQgcGFyYW1ldGVycwogICAgICAgICAgICAgZm9yIGsgaW4gdXJpX3JlcGxhY2VfZGVjb2RlZFtsb2NdOgpAQCAtODI3LDYgKzgyNyw3IEBACiAgICAgICAgICAgICAgICAgICAnTk9fUFJPWFknLCAnbm9fcHJveHknLAogICAgICAgICAgICAgICAgICAgJ0FMTF9QUk9YWScsICdhbGxfcHJveHknLAogICAgICAgICAgICAgICAgICAgJ0dJVF9QUk9YWV9DT01NQU5EJywKKyAgICAgICAgICAgICAgICAgICdHSVRfU1NIJywKICAgICAgICAgICAgICAgICAgICdHSVRfU1NMX0NBSU5GTycsCiAgICAgICAgICAgICAgICAgICAnR0lUX1NNQVJUX0hUVFAnLAogICAgICAgICAgICAgICAgICAgJ1NTSF9BVVRIX1NPQ0snLCAnU1NIX0FHRU5UX1BJRCcsCkBAIC04MzcsMTQgKzgzOCwxNiBAQAogICAgIGlmIG5vdCBjbGVhbnVwOgogICAgICAgICBjbGVhbnVwID0gW10KIAotICAgICMgSWYgUEFUSCBjb250YWlucyBXT1JLRElSIHdoaWNoIGNvbnRhaW5zIFBWIHdoaWNoIGNvbnRhaW5zIFNSQ1BWIHdlCisgICAgIyBJZiBQQVRIIGNvbnRhaW5zIFdPUktESVIgd2hpY2ggY29udGFpbnMgUFYtUFIgd2hpY2ggY29udGFpbnMgU1JDUFYgd2UKICAgICAjIGNhbiBlbmQgdXAgaW4gY2lyY3VsYXIgcmVjdXJzaW9uIGhlcmUgc28gZ2l2ZSB0aGUgb3B0aW9uIG9mIGJyZWFraW5nIGl0CiAgICAgIyBpbiBhIGRhdGEgc3RvcmUgY29weS4KICAgICB0cnk6CiAgICAgICAgIGQuZ2V0VmFyKCJQViIpCisgICAgICAgIGQuZ2V0VmFyKCJQUiIpCiAgICAgZXhjZXB0IGJiLmRhdGFfc21hcnQuRXhwYW5zaW9uRXJyb3I6CiAgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICAgICAgZC5zZXRWYXIoIlBWIiwgImZldGNoZXJhdm9pZHJlY3Vyc2UiKQorICAgICAgICBkLnNldFZhcigiUFIiLCAiZmV0Y2hlcmF2b2lkcmVjdXJzZSIpCiAKICAgICBvcmlnZW52ID0gZC5nZXRWYXIoIkJCX09SSUdFTlYiLCBGYWxzZSkKICAgICBmb3IgdmFyIGluIGV4cG9ydHZhcnM6CkBAIC0xMDE2LDE2ICsxMDE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3JpZ3VkLm1ldGhvZC5idWlsZF9taXJyb3JfZGF0YShvcmlndWQsIGxkKQogICAgICAgICAgICAgcmV0dXJuIG9yaWd1ZC5sb2NhbHBhdGgKICAgICAgICAgIyBPdGhlcndpc2UgdGhlIHJlc3VsdCBpcyBhIGxvY2FsIGZpbGU6Ly8gYW5kIHdlIHN5bWxpbmsgdG8gaXQKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9yaWd1ZC5sb2NhbHBhdGgpOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsob3JpZ3VkLmxvY2FscGF0aCk6Ci0gICAgICAgICAgICAgICAgIyBCcm9rZW4gc3ltYm9saWMgbGluawotICAgICAgICAgICAgICAgIG9zLnVubGluayhvcmlndWQubG9jYWxwYXRoKQotCi0gICAgICAgICAgICAjIEFzIHBlciBhYm92ZSwgaW4gY2FzZSB0d28gdGFza3MgZW5kIHVwIGhlcmUgc2ltdWx0YW5lb3VzbHkuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3Muc3ltbGluayh1ZC5sb2NhbHBhdGgsIG9yaWd1ZC5sb2NhbHBhdGgpCi0gICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZW5zdXJlX3N5bWxpbmsodWQubG9jYWxwYXRoLCBvcmlndWQubG9jYWxwYXRoKQogICAgICAgICB1cGRhdGVfc3RhbXAob3JpZ3VkLCBsZCkKICAgICAgICAgcmV0dXJuIHVkLmxvY2FscGF0aAogCkBAIC0xMDU5LDYgKzEwNTMsMjIgQEAKICAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKIAorZGVmIGVuc3VyZV9zeW1saW5rKHRhcmdldCwgbGlua19uYW1lKToKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGlua19uYW1lKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsobGlua19uYW1lKToKKyAgICAgICAgICAgICMgQnJva2VuIHN5bWJvbGljIGxpbmsKKyAgICAgICAgICAgIG9zLnVubGluayhsaW5rX25hbWUpCisKKyAgICAgICAgIyBJbiBjYXNlIHRoaXMgaXMgZXhlY3V0aW5nIHdpdGhvdXQgYW55IGZpbGUgbG9ja3MgaGVsZCAoYXMgaXMKKyAgICAgICAgIyB0aGUgY2FzZSBmb3IgZmlsZTovLyBVUkxzKSwgdHdvIHRhc2tzIG1heSBlbmQgdXAgaGVyZSBhdCB0aGUKKyAgICAgICAgIyBzYW1lIHRpbWUsIGluIHdoaWNoIGNhc2Ugd2UgZG8gbm90IHdhbnQgdGhlIHNlY29uZCB0YXNrIHRvCisgICAgICAgICMgZmFpbCB3aGVuIHRoZSBsaW5rIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBieSB0aGUgZmlyc3QgdGFzay4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3ltbGluayh0YXJnZXQsIGxpbmtfbmFtZSkKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworCiBkZWYgdHJ5X21pcnJvcnMoZmV0Y2gsIGQsIG9yaWd1ZCwgbWlycm9ycywgY2hlY2sgPSBGYWxzZSk6CiAgICAgIiIiCiAgICAgVHJ5IHRvIHVzZSBhIG1pcnJvcmVkIHZlcnNpb24gb2YgdGhlIHNvdXJjZXMuCkBAIC0xMDg4LDcgKzEwOTgsOSBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgcGtnbmFtZSA9IGQuZXhwYW5kKGQuZ2V0VmFyKCdQTicsIEZhbHNlKSkKLSAgICB0cnVzdGVkX2hvc3RzID0gZC5nZXRWYXJGbGFnKCdCQl9BTExPV0VEX05FVFdPUktTJywgcGtnbmFtZSwgRmFsc2UpCisgICAgdHJ1c3RlZF9ob3N0cyA9IE5vbmUKKyAgICBpZiBwa2duYW1lOgorICAgICAgICB0cnVzdGVkX2hvc3RzID0gZC5nZXRWYXJGbGFnKCdCQl9BTExPV0VEX05FVFdPUktTJywgcGtnbmFtZSwgRmFsc2UpCiAKICAgICBpZiBub3QgdHJ1c3RlZF9ob3N0czoKICAgICAgICAgdHJ1c3RlZF9ob3N0cyA9IGQuZ2V0VmFyKCdCQl9BTExPV0VEX05FVFdPUktTJykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weQppbmRleCAxNjEyM2Y4Li42NTg1MDJmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ienIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5CkBAIC00MSw4ICs0MSw5IEBACiAgICAgICAgIGluaXQgYnpyIHNwZWNpZmljIHZhcmlhYmxlIHdpdGhpbiB1cmwgZGF0YQogICAgICAgICAiIiIKICAgICAgICAgIyBDcmVhdGUgcGF0aHMgdG8gYnpyIGNoZWNrb3V0cworICAgICAgICBienJkaXIgPSBkLmdldFZhcigiQlpSRElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvYnpyIikKICAgICAgICAgcmVscGF0aCA9IHNlbGYuX3N0cmlwX2xlYWRpbmdfc2xhc2hlcyh1ZC5wYXRoKQotICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4oZC5leHBhbmQoJyR7QlpSRElSfScpLCB1ZC5ob3N0LCByZWxwYXRoKQorICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4oYnpyZGlyLCB1ZC5ob3N0LCByZWxwYXRoKQogCiAgICAgICAgIHVkLnNldHVwX3JldmlzaW9ucyhkKQogCkBAIC01Nyw3ICs1OCw3IEBACiAgICAgICAgIGNvbW1hbmQgaXMgImZldGNoIiwgInVwZGF0ZSIsICJyZXZubyIKICAgICAgICAgIiIiCiAKLSAgICAgICAgYmFzZWNtZCA9IGQuZXhwYW5kKCcke0ZFVENIQ01EX2J6cn0nKQorICAgICAgICBiYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX2J6ciIpIG9yICIvdXNyL2Jpbi9lbnYgYnpyIgogCiAgICAgICAgIHByb3RvID0gIHVkLnBhcm0uZ2V0KCdwcm90b2NvbCcsICdodHRwJykKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5CmluZGV4IDQ5MGM5NTQuLjBlMGEzMTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICBpZiB1ZC50YWc6CiAgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCgiLXIgJXMiICUgdWQudGFnKQogCi0gICAgICAgIGN2c2Jhc2VjbWQgPSBkLmdldFZhcigiRkVUQ0hDTURfY3ZzIikKKyAgICAgICAgY3ZzYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF9jdnMiKSBvciAiL3Vzci9iaW4vZW52IGN2cyIKICAgICAgICAgY3ZzY21kID0gY3ZzYmFzZWNtZCArICIgJy1kIiArIGN2c3Jvb3QgKyAiJyBjbyAiICsgIiAiLmpvaW4ob3B0aW9ucykgKyAiICIgKyB1ZC5tb2R1bGUKICAgICAgICAgY3ZzdXBkYXRlY21kID0gY3ZzYmFzZWNtZCArICIgJy1kIiArIGN2c3Jvb3QgKyAiJyB1cGRhdGUgLWQgLVAgIiArICIgIi5qb2luKG9wdGlvbnMpCiAKQEAgLTEyMSw3ICsxMjEsOCBAQAogICAgICAgICAjIGNyZWF0ZSBtb2R1bGUgZGlyZWN0b3J5CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRmV0Y2g6IGNoZWNraW5nIGZvciBtb2R1bGUgZGlyZWN0b3J5IikKICAgICAgICAgcGtnID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgcGtnZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdDVlNESVInKSwgcGtnKQorICAgICAgICBjdnNkaXIgPSBkLmdldFZhcigiQ1ZTRElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvY3ZzIikKKyAgICAgICAgcGtnZGlyID0gb3MucGF0aC5qb2luKGN2c2RpciwgcGtnKQogICAgICAgICBtb2RkaXIgPSBvcy5wYXRoLmpvaW4ocGtnZGlyLCBsb2NhbGRpcikKICAgICAgICAgd29ya2RpciA9IE5vbmUKICAgICAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbihtb2RkaXIsICdDVlMnKSwgb3MuUl9PSyk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKaW5kZXggN2I2MThjNi4uNTlhMmVlOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQpAQCAtMjYxLDcgKzI2MSw3IEBACiAgICAgICAgICAgICAgICAgZ2l0c3JjbmFtZSA9IGdpdHNyY25hbWUgKyAnXycgKyB1ZC5yZXZpc2lvbnNbbmFtZV0KIAogICAgICAgICBkbF9kaXIgPSBkLmdldFZhcigiRExfRElSIikKLSAgICAgICAgZ2l0ZGlyID0gZC5nZXRWYXIoIkdJVERJUiIpIG9yIChkbF9kaXIgKyAiL2dpdDIvIikKKyAgICAgICAgZ2l0ZGlyID0gZC5nZXRWYXIoIkdJVERJUiIpIG9yIChkbF9kaXIgKyAiL2dpdDIiKQogICAgICAgICB1ZC5jbG9uZWRpciA9IG9zLnBhdGguam9pbihnaXRkaXIsIGdpdHNyY25hbWUpCiAgICAgICAgIHVkLmxvY2FsZmlsZSA9IHVkLmNsb25lZGlyCiAKQEAgLTI5OSwxNyArMjk5LDIyIEBACiAgICAgICAgIHJldHVybiB1ZC5jbG9uZWRpcgogCiAgICAgZGVmIG5lZWRfdXBkYXRlKHNlbGYsIHVkLCBkKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xvbmVkaXJfbmVlZF91cGRhdGUodWQsIGQpIG9yIHNlbGYuc2hhbGxvd190YXJiYWxsX25lZWRfdXBkYXRlKHVkKSBvciBzZWxmLnRhcmJhbGxfbmVlZF91cGRhdGUodWQpCisKKyAgICBkZWYgY2xvbmVkaXJfbmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpOgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQuY2xvbmVkaXIpOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29udGFpbnNfcmVmKHVkLCBkLCBuYW1lLCB1ZC5jbG9uZWRpcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgaWYgdWQuc2hhbGxvdyBhbmQgdWQud3JpdGVfc2hhbGxvd190YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHVkLndyaXRlX3RhcmJhbGxzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgIGRlZiBzaGFsbG93X3RhcmJhbGxfbmVlZF91cGRhdGUoc2VsZiwgdWQpOgorICAgICAgICByZXR1cm4gdWQuc2hhbGxvdyBhbmQgdWQud3JpdGVfc2hhbGxvd190YXJiYWxscyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxzaGFsbG93KQorCisgICAgZGVmIHRhcmJhbGxfbmVlZF91cGRhdGUoc2VsZiwgdWQpOgorICAgICAgICByZXR1cm4gdWQud3JpdGVfdGFyYmFsbHMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKQorCiAgICAgZGVmIHRyeV9wcmVtaXJyb3Ioc2VsZiwgdWQsIGQpOgogICAgICAgICAjIElmIHdlIGRvbid0IGRvIHRoaXMsIHVwZGF0aW5nIGFuIGV4aXN0aW5nIGNoZWNrb3V0IHdpdGggb25seSBwcmVtaXJyb3JzCiAgICAgICAgICMgaXMgbm90IHBvc3NpYmxlCkBAIC0zMjIsMTYgKzMyNywxMyBAQAogICAgIGRlZiBkb3dubG9hZChzZWxmLCB1ZCwgZCk6CiAgICAgICAgICIiIkZldGNoIHVybCIiIgogCi0gICAgICAgIG5vX2Nsb25lID0gbm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKQotICAgICAgICBuZWVkX3VwZGF0ZSA9IG5vX2Nsb25lIG9yIHNlbGYubmVlZF91cGRhdGUodWQsIGQpCi0KICAgICAgICAgIyBBIGN1cnJlbnQgY2xvbmUgaXMgcHJlZmVycmVkIHRvIGVpdGhlciB0YXJiYWxsLCBhIHNoYWxsb3cgdGFyYmFsbCBpcwogICAgICAgICAjIHByZWZlcnJlZCB0byBhbiBvdXQgb2YgZGF0ZSBjbG9uZSwgYW5kIGEgbWlzc2luZyBjbG9uZSB3aWxsIHVzZQogICAgICAgICAjIGVpdGhlciB0YXJiYWxsLgotICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsc2hhbGxvdykgYW5kIG5lZWRfdXBkYXRlOgorICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsc2hhbGxvdykgYW5kIHNlbGYubmVlZF91cGRhdGUodWQsIGQpOgogICAgICAgICAgICAgdWQubG9jYWxwYXRoID0gdWQuZnVsbHNoYWxsb3cKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKHVkLmZ1bGxtaXJyb3IpIGFuZCBub19jbG9uZToKKyAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKToKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5jbG9uZWRpcikKICAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXh6ZiAlcyIgJSB1ZC5mdWxsbWlycm9yLCBkLCB3b3JrZGlyPXVkLmNsb25lZGlyKQogCkBAIC0zNTMsNiArMzU1LDggQEAKICAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29udGFpbnNfcmVmKHVkLCBkLCBuYW1lLCB1ZC5jbG9uZWRpcik6CiAgICAgICAgICAgICAgICAgbmVlZHVwZGF0ZSA9IFRydWUKKyAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIGlmIG5lZWR1cGRhdGU6CiAgICAgICAgICAgICBvdXRwdXQgPSBydW5mZXRjaGNtZCgiJXMgcmVtb3RlIiAlIHVkLmJhc2VjbWQsIGQsIHF1aWV0PVRydWUsIHdvcmtkaXI9dWQuY2xvbmVkaXIpCiAgICAgICAgICAgICBpZiAib3JpZ2luIiBpbiBvdXRwdXQ6CkBAIC0zNzIsNiArMzc2LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICBpZiBleGMuZXJybm8gIT0gZXJybm8uRU5PRU5UOgogICAgICAgICAgICAgICAgICAgICByYWlzZQorCiAgICAgICAgIGZvciBuYW1lIGluIHVkLm5hbWVzOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbnRhaW5zX3JlZih1ZCwgZCwgbmFtZSwgdWQuY2xvbmVkaXIpOgogICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5GZXRjaEVycm9yKCJVbmFibGUgdG8gZmluZCByZXZpc2lvbiAlcyBpbiBicmFuY2ggJXMgZXZlbiBmcm9tIHVwc3RyZWFtIiAlICh1ZC5yZXZpc2lvbnNbbmFtZV0sIHVkLmJyYW5jaGVzW25hbWVdKSkKQEAgLTQ3MSwxMSArNDc2LDMwIEBACiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3RkaXIpOgogICAgICAgICAgICAgYmIudXRpbHMucHJ1bmVkaXIoZGVzdGRpcikKIAotICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCAobm90IG9zLnBhdGguZXhpc3RzKHVkLmNsb25lZGlyKSBvciBzZWxmLm5lZWRfdXBkYXRlKHVkLCBkKSk6Ci0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKLSAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXh6ZiAlcyIgJSB1ZC5mdWxsc2hhbGxvdywgZCwgd29ya2Rpcj1kZXN0ZGlyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGNsb25lICVzICVzLyAlcyIgJSAodWQuYmFzZWNtZCwgdWQuY2xvbmVmbGFncywgdWQuY2xvbmVkaXIsIGRlc3RkaXIpLCBkKQorICAgICAgICBzb3VyY2VfZm91bmQgPSBGYWxzZQorICAgICAgICBzb3VyY2VfZXJyb3IgPSBbXQorCisgICAgICAgIGlmIG5vdCBzb3VyY2VfZm91bmQ6CisgICAgICAgICAgICBjbG9uZWRpcl9pc191cF90b19kYXRlID0gbm90IHNlbGYuY2xvbmVkaXJfbmVlZF91cGRhdGUodWQsIGQpCisgICAgICAgICAgICBpZiBjbG9uZWRpcl9pc191cF90b19kYXRlOgorICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlcyBjbG9uZSAlcyAlcy8gJXMiICUgKHVkLmJhc2VjbWQsIHVkLmNsb25lZmxhZ3MsIHVkLmNsb25lZGlyLCBkZXN0ZGlyKSwgZCkKKyAgICAgICAgICAgICAgICBzb3VyY2VfZm91bmQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNvdXJjZV9lcnJvci5hcHBlbmQoImNsb25lIGRpcmVjdG9yeSBub3QgYXZhaWxhYmxlIG9yIG5vdCB1cCB0byBkYXRlOiAiICsgdWQuY2xvbmVkaXIpCisKKyAgICAgICAgaWYgbm90IHNvdXJjZV9mb3VuZDoKKyAgICAgICAgICAgIGlmIHVkLnNoYWxsb3c6CisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQuZnVsbHNoYWxsb3cpOgorICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKyAgICAgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteHpmICVzIiAlIHVkLmZ1bGxzaGFsbG93LCBkLCB3b3JrZGlyPWRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9mb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZXJyb3IuYXBwZW5kKCJzaGFsbG93IGNsb25lIG5vdCBhdmFpbGFibGU6ICIgKyB1ZC5mdWxsc2hhbGxvdykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc291cmNlX2Vycm9yLmFwcGVuZCgic2hhbGxvdyBjbG9uZSBub3QgZW5hYmxlZCIpCisKKyAgICAgICAgaWYgbm90IHNvdXJjZV9mb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5VbnBhY2tFcnJvcigiTm8gdXAgdG8gZGF0ZSBzb3VyY2UgZm91bmQ6ICIgKyAiOyAiLmpvaW4oc291cmNlX2Vycm9yKSwgdWQudXJsKQogCiAgICAgICAgIHJlcG91cmwgPSBzZWxmLl9nZXRfcmVwb191cmwodWQpCiAgICAgICAgIHJ1bmZldGNoY21kKCIlcyByZW1vdGUgc2V0LXVybCBvcmlnaW4gJXMiICUgKHVkLmJhc2VjbWQsIHJlcG91cmwpLCBkLCB3b3JrZGlyPWRlc3RkaXIpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXRzbS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5CmluZGV4IDBhZmYxMDAuLjM1NzI5ZGIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5CkBAIC0zMSw5ICszMSwxMiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBiYgoraW1wb3J0IGNvcHkKIGZyb20gICBiYi5mZXRjaDIuZ2l0IGltcG9ydCBHaXQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKK2Zyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoCitmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBCQkZldGNoRXhjZXB0aW9uCiAKIGNsYXNzIEdpdFNNKEdpdCk6CiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKQEAgLTQyLDk0ICs0NSwyMDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiB1ZC50eXBlIGluIFsnZ2l0c20nXQogCi0gICAgZGVmIHVzZXNfc3VibW9kdWxlcyhzZWxmLCB1ZCwgZCwgd2QpOgotICAgICAgICBmb3IgbmFtZSBpbiB1ZC5uYW1lczoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCgiJXMgc2hvdyAlczouZ2l0bW9kdWxlcyIgJSAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW25hbWVdKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj13ZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoLkZldGNoRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBfc2V0X3JlbGF0aXZlX3BhdGhzKHNlbGYsIHJlcG9wYXRoKToKLSAgICAgICAgIiIiCi0gICAgICAgIEZpeCBzdWJtb2R1bGUgcGF0aHMgdG8gYmUgcmVsYXRpdmUgaW5zdGVhZCBvZiBhYnNvbHV0ZSwKLSAgICAgICAgc28gdGhhdCB3aGVuIHdlIG1vdmUgdGhlIHJlcG8gaXQgZG9lc24ndCBicmVhawotICAgICAgICAoSW4gR2l0IDEuNy4xMCsgdGhpcyBpcyBkb25lIGF1dG9tYXRpY2FsbHkpCi0gICAgICAgICIiIgotICAgICAgICBzdWJtb2R1bGVzID0gW10KLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyZXBvcGF0aCwgJy5naXRtb2R1bGVzJyksICdyJykgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdbc3VibW9kdWxlJyk6Ci0gICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZXMuYXBwZW5kKGxpbmUuc3BsaXQoJyInKVsxXSkKLQotICAgICAgICBmb3IgbW9kdWxlIGluIHN1Ym1vZHVsZXM6Ci0gICAgICAgICAgICByZXBvX2NvbmYgPSBvcy5wYXRoLmpvaW4ocmVwb3BhdGgsIG1vZHVsZSwgJy5naXQnKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVwb19jb25mKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocmVwb19jb25mLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIG5ld3BhdGggPSAnJwotICAgICAgICAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnZ2l0ZGlyOicpOgotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcGF0aCA9IGxpbmUuc3BsaXQoJzogJylbLTFdLnJzdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBvbGRwYXRoLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwYXRoID0gJy4uLycgKiAobW9kdWxlLmNvdW50KCcvJykgKyAxKSArICcuZ2l0L21vZHVsZXMvJyArIG1vZHVsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzW2ldID0gJ2dpdGRpcjogJXNcbicgJSBuZXdwYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiBuZXdwYXRoOgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocmVwb19jb25mLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCi0KLSAgICAgICAgICAgIHJlcG9fY29uZjIgPSBvcy5wYXRoLmpvaW4ocmVwb3BhdGgsICcuZ2l0JywgJ21vZHVsZXMnLCBtb2R1bGUsICdjb25maWcnKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVwb19jb25mMik6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKHJlcG9fY29uZjIsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgICAgICAgICAgICAgbmV3cGF0aCA9ICcnCi0gICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5zdGFydHN3aXRoKCd3b3JrdHJlZSA9ICcpOgotICAgICAgICAgICAgICAgICAgICAgICAgb2xkcGF0aCA9IGxpbmUuc3BsaXQoJyA9ICcpWy0xXS5yc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2xkcGF0aC5zdGFydHN3aXRoKCcvJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cGF0aCA9ICcuLi8nICogKG1vZHVsZS5jb3VudCgnLycpICsgMykgKyBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1tpXSA9ICdcdHdvcmt0cmVlID0gJXNcbicgJSBuZXdwYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiBuZXdwYXRoOgotICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocmVwb19jb25mMiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lKQorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcGFyc2VfZ2l0bW9kdWxlcyhnaXRtb2R1bGVzKToKKyAgICAgICAgbW9kdWxlcyA9IHt9CisgICAgICAgIG1vZHVsZSA9ICIiCisgICAgICAgIGZvciBsaW5lIGluIGdpdG1vZHVsZXMuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdbc3VibW9kdWxlJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gbGluZS5zcGxpdCgnIicpWzFdCisgICAgICAgICAgICAgICAgbW9kdWxlc1ttb2R1bGVdID0ge30KKyAgICAgICAgICAgIGVsaWYgbW9kdWxlIGFuZCBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgncGF0aCcpOgorICAgICAgICAgICAgICAgIHBhdGggPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgIG1vZHVsZXNbbW9kdWxlXVsncGF0aCddID0gcGF0aAorICAgICAgICAgICAgZWxpZiBtb2R1bGUgYW5kIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKCd1cmwnKToKKyAgICAgICAgICAgICAgICB1cmwgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoKQorICAgICAgICAgICAgICAgIG1vZHVsZXNbbW9kdWxlXVsndXJsJ10gPSB1cmwKKyAgICAgICAgcmV0dXJuIG1vZHVsZXMKIAogICAgIGRlZiB1cGRhdGVfc3VibW9kdWxlcyhzZWxmLCB1ZCwgZCk6Ci0gICAgICAgICMgV2UgaGF2ZSB0byBjb252ZXJ0IGJhcmUgLT4gZnVsbCByZXBvLCBkbyB0aGUgc3VibW9kdWxlIGJpdCwgdGhlbiBjb252ZXJ0IGJhY2sKLSAgICAgICAgdG1wY2xvbmVkaXIgPSB1ZC5jbG9uZWRpciArICIudG1wIgotICAgICAgICBnaXRkaXIgPSB0bXBjbG9uZWRpciArIG9zLnNlcCArICIuZ2l0IgotICAgICAgICBiYi51dGlscy5yZW1vdmUodG1wY2xvbmVkaXIsIFRydWUpCi0gICAgICAgIG9zLm1rZGlyKHRtcGNsb25lZGlyKQotICAgICAgICBvcy5yZW5hbWUodWQuY2xvbmVkaXIsIGdpdGRpcikKLSAgICAgICAgcnVuZmV0Y2hjbWQoInNlZCAiICsgZ2l0ZGlyICsgIi9jb25maWcgLWkgLWUgJ3MvYmFyZS4qPS4qdHJ1ZS9iYXJlID0gZmFsc2UvJyIsIGQpCi0gICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIHJlc2V0IC0taGFyZCIsIGQsIHdvcmtkaXI9dG1wY2xvbmVkaXIpCi0gICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIGNoZWNrb3V0IC1mICIgKyB1ZC5yZXZpc2lvbnNbdWQubmFtZXNbMF1dLCBkLCB3b3JrZGlyPXRtcGNsb25lZGlyKQotICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSIsIGQsIHdvcmtkaXI9dG1wY2xvbmVkaXIpCi0gICAgICAgIHNlbGYuX3NldF9yZWxhdGl2ZV9wYXRocyh0bXBjbG9uZWRpcikKLSAgICAgICAgcnVuZmV0Y2hjbWQoInNlZCAiICsgZ2l0ZGlyICsgIi9jb25maWcgLWkgLWUgJ3MvYmFyZS4qPS4qZmFsc2UvYmFyZSA9IHRydWUvJyIsIGQsIHdvcmtkaXI9dG1wY2xvbmVkaXIpCi0gICAgICAgIG9zLnJlbmFtZShnaXRkaXIsIHVkLmNsb25lZGlyLCkKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKHRtcGNsb25lZGlyLCBUcnVlKQorICAgICAgICBzdWJtb2R1bGVzID0gW10KKyAgICAgICAgcGF0aHMgPSB7fQorICAgICAgICB1cmlzID0ge30KKyAgICAgICAgbG9jYWxfcGF0aHMgPSB7fQorCisgICAgICAgIGZvciBuYW1lIGluIHVkLm5hbWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGdpdG1vZHVsZXMgPSBydW5mZXRjaGNtZCgiJXMgc2hvdyAlczouZ2l0bW9kdWxlcyIgJSAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW25hbWVdKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIE5vIHN1Ym1vZHVsZXMgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZm9yIG0sIG1kIGluIHNlbGYucGFyc2VfZ2l0bW9kdWxlcyhnaXRtb2R1bGVzKS5pdGVtcygpOgorICAgICAgICAgICAgICAgIHN1Ym1vZHVsZXMuYXBwZW5kKG0pCisgICAgICAgICAgICAgICAgcGF0aHNbbV0gPSBtZFsncGF0aCddCisgICAgICAgICAgICAgICAgdXJpc1ttXSA9IG1kWyd1cmwnXQorICAgICAgICAgICAgICAgIGlmIHVyaXNbbV0uc3RhcnRzd2l0aCgnLi4nKToKKyAgICAgICAgICAgICAgICAgICAgbmV3dWQgPSBjb3B5LmNvcHkodWQpCisgICAgICAgICAgICAgICAgICAgIG5ld3VkLnBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihuZXd1ZC5wYXRoLCBtZFsndXJsJ10pKQorICAgICAgICAgICAgICAgICAgICB1cmlzW21dID0gR2l0Ll9nZXRfcmVwb191cmwoc2VsZiwgbmV3dWQpCisKKyAgICAgICAgZm9yIG1vZHVsZSBpbiBzdWJtb2R1bGVzOgorICAgICAgICAgICAgbW9kdWxlX2hhc2ggPSBydW5mZXRjaGNtZCgiJXMgbHMtdHJlZSAteiAtZCAlcyAlcyIgJSAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW25hbWVdLCBwYXRoc1ttb2R1bGVdKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKyAgICAgICAgICAgIG1vZHVsZV9oYXNoID0gbW9kdWxlX2hhc2guc3BsaXQoKVsyXQorCisgICAgICAgICAgICAjIEJ1aWxkIG5ldyBTUkNfVVJJCisgICAgICAgICAgICBwcm90byA9IHVyaXNbbW9kdWxlXS5zcGxpdCgnOicsIDEpWzBdCisgICAgICAgICAgICB1cmwgPSB1cmlzW21vZHVsZV0ucmVwbGFjZSgnJXM6JyAlIHByb3RvLCAnZ2l0c206JywgMSkKKyAgICAgICAgICAgIHVybCArPSAnO3Byb3RvY29sPSVzJyAlIHByb3RvCisgICAgICAgICAgICB1cmwgKz0gIjtuYW1lPSVzIiAlIG1vZHVsZQorICAgICAgICAgICAgdXJsICs9ICI7YmFyZWNsb25lPTE7bm9jaGVja291dD0xO25vYnJhbmNoPTEiCisKKyAgICAgICAgICAgIGxkID0gZC5jcmVhdGVDb3B5KCkKKyAgICAgICAgICAgICMgTm90IG5lY2Vzc2FyeSB0byBzZXQgU1JDX1VSSSwgc2luY2Ugd2UncmUgcGFzc2luZyB0aGUgVVJJIHRvCisgICAgICAgICAgICAjIEZldGNoLgorICAgICAgICAgICAgI2xkLnNldFZhcignU1JDX1VSSScsIHVybCkKKyAgICAgICAgICAgIGxkLnNldFZhcignU1JDUkVWXyVzJyAlIG1vZHVsZSwgbW9kdWxlX2hhc2gpCisKKyAgICAgICAgICAgICMgV29ya2Fyb3VuZCBmb3IgaXNzdWVzIHdpdGggU1JDUFYvU1JDUkVWX0ZPUk1BVCBlcnJvcnMKKyAgICAgICAgICAgICMgZXJyb3IgcmVmZXIgdG8gJ211bHRpcGxlJyByZXBvc2l0b3JpZXMuICBPbmx5IHRoZSByZXBvc2l0b3J5CisgICAgICAgICAgICAjIGluIHRoZSBvcmlnaW5hbCBTUkNfVVJJIGFjdHVhbGx5IG1hdHRlcnMuLi4KKyAgICAgICAgICAgIGxkLnNldFZhcignU1JDUFYnLCBkLmdldFZhcignU1JDUFYnKSkKKyAgICAgICAgICAgIGxkLnNldFZhcignU1JDUkVWX0ZPUk1BVCcsIG1vZHVsZSkKKworICAgICAgICAgICAgbmV3ZmV0Y2ggPSBGZXRjaChbdXJsXSwgbGQsIGNhY2hlPUZhbHNlKQorICAgICAgICAgICAgbmV3ZmV0Y2guZG93bmxvYWQoKQorICAgICAgICAgICAgbG9jYWxfcGF0aHNbbW9kdWxlXSA9IG5ld2ZldGNoLmxvY2FscGF0aCh1cmwpCisKKyAgICAgICAgICAgICMgQ29ycmVjdCB0aGUgc3VibW9kdWxlIHJlZmVyZW5jZXMgdG8gdGhlIGxvY2FsIGRvd25sb2FkIHZlcnNpb24uLi4KKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCIlKGJhc2VjbWQpcyBjb25maWcgc3VibW9kdWxlLiUobW9kdWxlKXMudXJsICUodXJsKXMiICUgeydiYXNlY21kJzogdWQuYmFzZWNtZCwgJ21vZHVsZSc6IG1vZHVsZSwgJ3VybCcgOiBsb2NhbF9wYXRoc1ttb2R1bGVdfSwgZCwgd29ya2Rpcj11ZC5jbG9uZWRpcikKKworICAgICAgICAgICAgc3ltbGlua19wYXRoID0gb3MucGF0aC5qb2luKHVkLmNsb25lZGlyLCAnbW9kdWxlcycsIHBhdGhzW21vZHVsZV0pCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3ltbGlua19wYXRoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguZGlybmFtZShzeW1saW5rX3BhdGgpLCBleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgb3Muc3ltbGluayhsb2NhbF9wYXRoc1ttb2R1bGVdLCBzeW1saW5rX3BhdGgpCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBuZWVkX3VwZGF0ZShzZWxmLCB1ZCwgZCk6CisgICAgICAgIG1haW5fcmVwb19uZWVkc191cGRhdGUgPSBHaXQubmVlZF91cGRhdGUoc2VsZiwgdWQsIGQpCisKKyAgICAgICAgIyBGaXJzdCBjaGVjayB0aGF0IHRoZSBtYWluIHJlcG9zaXRvcnkgaGFzIGVub3VnaCBoaXN0b3J5IGZldGNoZWQuIElmIGl0IGRvZXNuJ3QsIHRoZW4gd2UgZG9uJ3QKKyAgICAgICAgIyBldmVuIGhhdmUgdGhlIC5naXRtb2R1bGVzIGFuZCBnaXRsaW5rcyBmb3IgdGhlIHN1Ym1vZHVsZXMgdG8gYXR0ZW1wdCBhc2tpbmcgd2hldGhlciB0aGUKKyAgICAgICAgIyBzdWJtb2R1bGVzJyBoaXN0b3JpZXMgYXJlIHJlY2VudCBlbm91Z2guCisgICAgICAgIGlmIG1haW5fcmVwb19uZWVkc191cGRhdGU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICMgTm93IGNoZWNrIHRoYXQgdGhlIHN1Ym1vZHVsZSBoaXN0b3JpZXMgYXJlIG5ldyBlbm91Z2guIFRoZSBnaXQtc3VibW9kdWxlIGNvbW1hbmQgZG9lc24ndCBoYXZlCisgICAgICAgICMgYW55IGNsZWFuIGludGVyZmFjZSBmb3IgZG9pbmcgdGhpcyBhc2lkZSBmcm9tIGp1c3QgYXR0ZW1wdGluZyB0aGUgY2hlY2tvdXQgKHdpdGggbmV0d29yaworICAgICAgICAjIGZldGNoZWQgZGlzYWJsZWQpLgorICAgICAgICByZXR1cm4gbm90IHNlbGYudXBkYXRlX3N1Ym1vZHVsZXModWQsIGQpCiAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgogICAgICAgICBHaXQuZG93bmxvYWQoc2VsZiwgdWQsIGQpCiAKICAgICAgICAgaWYgbm90IHVkLnNoYWxsb3cgb3IgdWQubG9jYWxwYXRoICE9IHVkLmZ1bGxzaGFsbG93OgotICAgICAgICAgICAgc3VibW9kdWxlcyA9IHNlbGYudXNlc19zdWJtb2R1bGVzKHVkLCBkLCB1ZC5jbG9uZWRpcikKLSAgICAgICAgICAgIGlmIHN1Ym1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVfc3VibW9kdWxlcyh1ZCwgZCkKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX3N1Ym1vZHVsZXModWQsIGQpCisKKyAgICBkZWYgY29weV9zdWJtb2R1bGVzKHNlbGYsIHN1Ym1vZHVsZXMsIHVkLCBkZXN0ZGlyLCBkKToKKyAgICAgICAgaWYgdWQuYmFyZWNsb25lOgorICAgICAgICAgICAgcmVwb19jb25mID0gZGVzdGRpcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVwb19jb25mID0gb3MucGF0aC5qb2luKGRlc3RkaXIsICcuZ2l0JykKKworICAgICAgICBpZiBzdWJtb2R1bGVzIGFuZCBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHJlcG9fY29uZiwgJ21vZHVsZXMnKSk6CisgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4ocmVwb19jb25mLCAnbW9kdWxlcycpKQorCisgICAgICAgIGZvciBtb2R1bGUsIG1kIGluIHN1Ym1vZHVsZXMuaXRlbXMoKToKKyAgICAgICAgICAgIHNyY3BhdGggPSBvcy5wYXRoLmpvaW4odWQuY2xvbmVkaXIsICdtb2R1bGVzJywgbWRbJ3BhdGgnXSkKKyAgICAgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4ocmVwb19jb25mLCAnbW9kdWxlcycsIG1kWydwYXRoJ10pCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNyY3BhdGgpOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzcmNwYXRoLCAnLmdpdCcpKToKKyAgICAgICAgICAgICAgICAgICAgc3JjcGF0aCA9IG9zLnBhdGguam9pbihzcmNwYXRoLCAnLmdpdCcpCisKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBtb2RwYXRoCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IG9zLnBhdGguZGlybmFtZShtb2RwYXRoKQorCisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5kaXJuYW1lKHRhcmdldCksIGV4aXN0X29rPVRydWUpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoImNwIC1mcExSICVzICVzIiAlIChzcmNwYXRoLCB0YXJnZXQpLCBkKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmV4aXN0cyhtb2RwYXRoKToKKyAgICAgICAgICAgICAgICAjIE1vZHVsZSBhbHJlYWR5IGV4aXN0cywgbGlrZWx5IHVucGFja2VkIGZyb20gYSBzaGFsbG93IG1pcnJvciBjbG9uZQorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGZhdGFsLCBhcyB3ZSBkbyBOT1Qgd2FudCBnaXQtc3VibW9kdWxlIHRvIGhpdCB0aGUgbmV0d29yaworICAgICAgICAgICAgICAgIHJhaXNlIGJiLmZldGNoMi5GZXRjaEVycm9yKCdTdWJtb2R1bGUgJXMgZG9lcyBub3QgZXhpc3QgaW4gJXMgb3IgJXMuJyAlIChtb2R1bGUsIHNyY3BhdGgsIG1vZHBhdGgpKQogCiAgICAgZGVmIGNsb25lX3NoYWxsb3dfbG9jYWwoc2VsZiwgdWQsIGRlc3QsIGQpOgogICAgICAgICBzdXBlcihHaXRTTSwgc2VsZikuY2xvbmVfc2hhbGxvd19sb2NhbCh1ZCwgZGVzdCwgZCkKIAotICAgICAgICBydW5mZXRjaGNtZCgnY3AgLWZwUFJIICIlcy9tb2R1bGVzIiAiJXMvIicgJSAodWQuY2xvbmVkaXIsIG9zLnBhdGguam9pbihkZXN0LCAnLmdpdCcpKSwgZCkKKyAgICAgICAgIyBDb3B5IG92ZXIgdGhlIHN1Ym1vZHVsZXMnIGZldGNoZWQgaGlzdG9yaWVzIHRvby4KKyAgICAgICAgcmVwb19jb25mID0gb3MucGF0aC5qb2luKGRlc3QsICcuZ2l0JykKKworICAgICAgICBzdWJtb2R1bGVzID0gW10KKyAgICAgICAgZm9yIG5hbWUgaW4gdWQubmFtZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZ2l0bW9kdWxlcyA9IHJ1bmZldGNoY21kKCIlcyBzaG93ICVzOi5naXRtb2R1bGVzIiAlICh1ZC5iYXNlY21kLCB1ZC5yZXZpc2lvbiksIGQsIHF1aWV0PVRydWUsIHdvcmtkaXI9ZGVzdCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIE5vIHN1Ym1vZHVsZXMgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgc3VibW9kdWxlcyA9IHNlbGYucGFyc2VfZ2l0bW9kdWxlcyhnaXRtb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5jb3B5X3N1Ym1vZHVsZXMoc3VibW9kdWxlcywgdWQsIGRlc3QsIGQpCiAKICAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKICAgICAgICAgR2l0LnVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCkKIAotICAgICAgICBpZiBzZWxmLnVzZXNfc3VibW9kdWxlcyh1ZCwgZCwgdWQuZGVzdGRpcik6Ci0gICAgICAgICAgICBydW5mZXRjaGNtZCh1ZC5iYXNlY21kICsgIiBjaGVja291dCAiICsgdWQucmV2aXNpb25zW3VkLm5hbWVzWzBdXSwgZCwgd29ya2Rpcj11ZC5kZXN0ZGlyKQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQodWQuYmFzZWNtZCArICIgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUiLCBkLCB3b3JrZGlyPXVkLmRlc3RkaXIpCisgICAgICAgICMgQ29weSBvdmVyIHRoZSBzdWJtb2R1bGVzJyBmZXRjaGVkIGhpc3RvcmllcyB0b28uCisgICAgICAgIGlmIHVkLmJhcmVjbG9uZToKKyAgICAgICAgICAgIHJlcG9fY29uZiA9IHVkLmRlc3RkaXIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcG9fY29uZiA9IG9zLnBhdGguam9pbih1ZC5kZXN0ZGlyLCAnLmdpdCcpCisKKyAgICAgICAgdXBkYXRlX3N1Ym1vZHVsZXMgPSBGYWxzZQorICAgICAgICBwYXRocyA9IHt9CisgICAgICAgIHVyaXMgPSB7fQorICAgICAgICBsb2NhbF9wYXRocyA9IHt9CisgICAgICAgIGZvciBuYW1lIGluIHVkLm5hbWVzOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGdpdG1vZHVsZXMgPSBydW5mZXRjaGNtZCgiJXMgc2hvdyBIRUFEOi5naXRtb2R1bGVzIiAlICh1ZC5iYXNlY21kKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj11ZC5kZXN0ZGlyKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgTm8gc3VibW9kdWxlcyB0byB1cGRhdGUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBzdWJtb2R1bGVzID0gc2VsZi5wYXJzZV9naXRtb2R1bGVzKGdpdG1vZHVsZXMpCisgICAgICAgICAgICBzZWxmLmNvcHlfc3VibW9kdWxlcyhzdWJtb2R1bGVzLCB1ZCwgdWQuZGVzdGRpciwgZCkKKworICAgICAgICAgICAgc3VibW9kdWxlc19xdWV1ZSA9IFsobW9kdWxlLCBvcy5wYXRoLmpvaW4ocmVwb19jb25mLCAnbW9kdWxlcycsIG1kWydwYXRoJ10pKSBmb3IgbW9kdWxlLCBtZCBpbiBzdWJtb2R1bGVzLml0ZW1zKCldCisgICAgICAgICAgICB3aGlsZSBsZW4oc3VibW9kdWxlc19xdWV1ZSkgIT0gMDoKKyAgICAgICAgICAgICAgICBtb2R1bGUsIG1vZHBhdGggPSBzdWJtb2R1bGVzX3F1ZXVlLnBvcCgpCisKKyAgICAgICAgICAgICAgICAjIGFkZCBzdWJtb2R1bGUgY2hpbGRyZW4gcmVjdXJzaXZlbHkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGdpdG1vZHVsZXMgPSBydW5mZXRjaGNtZCgiJXMgc2hvdyBIRUFEOi5naXRtb2R1bGVzIiAlICh1ZC5iYXNlY21kKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj1tb2RwYXRoKQorICAgICAgICAgICAgICAgICAgICBmb3IgbSwgbWQgaW4gc2VsZi5wYXJzZV9naXRtb2R1bGVzKGdpdG1vZHVsZXMpLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVzX3F1ZXVlLmFwcGVuZChbbSwgb3MucGF0aC5qb2luKG1vZHBhdGgsICdtb2R1bGVzJywgbWRbJ3BhdGgnXSldKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgIyBubyBjaGlsZHJlbgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKworICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIHN1Ym1vZHVsZXMgdG8gdXBkYXRlCisgICAgICAgICAgICAgICAgdXBkYXRlX3N1Ym1vZHVsZXMgPSBUcnVlCisKKyAgICAgICAgICAgICAgICAjIERldGVybWluZSAoZnJvbSB0aGUgc3VibW9kdWxlKSB0aGUgY29ycmVjdCB1cmwgdG8gcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBydW5mZXRjaGNtZCgiJShiYXNlY21kKXMgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsIiAlIHsnYmFzZWNtZCc6IHVkLmJhc2VjbWR9LCBkLCB3b3JrZGlyPW1vZHBhdGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IGJiLmZldGNoMi5GZXRjaEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICMgTm8gcmVtb3RlIHVybCBkZWZpbmVkIGluIHRoaXMgc3VibW9kdWxlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBsb2NhbF9wYXRoc1ttb2R1bGVdID0gb3V0cHV0CisKKyAgICAgICAgICAgICAgICAjIFNldHVwIHRoZSBsb2NhbCBVUkwgcHJvcGVybHkgKGxpa2UgZ2l0IHN1Ym1vZHVsZSBpbml0IG9yIHN5bmMgd291bGQgZG8uLi4pCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiUoYmFzZWNtZClzIGNvbmZpZyBzdWJtb2R1bGUuJShtb2R1bGUpcy51cmwgJSh1cmwpcyIgJSB7J2Jhc2VjbWQnOiB1ZC5iYXNlY21kLCAnbW9kdWxlJzogbW9kdWxlLCAndXJsJyA6IGxvY2FsX3BhdGhzW21vZHVsZV19LCBkLCB3b3JrZGlyPXVkLmRlc3RkaXIpCisKKyAgICAgICAgICAgICAgICAjIEVuc3VyZSB0aGUgc3VibW9kdWxlIHJlcG9zaXRvcnkgaXMgTk9UIHNldCB0byBiYXJlLCBzaW5jZSB3ZSdyZSBjaGVja2luZyBpdCBvdXQuLi4KKyAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCgiJXMgY29uZmlnIGNvcmUuYmFyZSBmYWxzZSIgJSAodWQuYmFzZWNtZCksIGQsIHF1aWV0PVRydWUsIHdvcmtkaXI9bW9kcGF0aCkKKworICAgICAgICBpZiB1cGRhdGVfc3VibW9kdWxlczoKKyAgICAgICAgICAgICMgUnVuIHN1Ym1vZHVsZSB1cGRhdGUsIHRoaXMgc2V0cyB1cCB0aGUgZGlyZWN0b3JpZXMgLS0gd2l0aG91dCB0b3VjaGluZyB0aGUgY29uZmlnCisgICAgICAgICAgICBydW5mZXRjaGNtZCgiJXMgc3VibW9kdWxlIHVwZGF0ZSAtLXJlY3Vyc2l2ZSAtLW5vLWZldGNoIiAlICh1ZC5iYXNlY21kKSwgZCwgcXVpZXQ9VHJ1ZSwgd29ya2Rpcj11ZC5kZXN0ZGlyKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvaGcucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQppbmRleCBkMDg1N2U2Li45MzZkMDQzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQpAQCAtODAsNyArODAsNyBAQAogICAgICAgICB1ZC5mdWxsbWlycm9yID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgbWlycm9ydGFyYmFsbCkKICAgICAgICAgdWQubWlycm9ydGFyYmFsbHMgPSBbbWlycm9ydGFyYmFsbF0KIAotICAgICAgICBoZ2RpciA9IGQuZ2V0VmFyKCJIR0RJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL2hnLyIpCisgICAgICAgIGhnZGlyID0gZC5nZXRWYXIoIkhHRElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvaGciKQogICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4oaGdkaXIsIGhnc3JjbmFtZSkKICAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQubW9kdWxlKQogICAgICAgICB1ZC5sb2NhbGZpbGUgPSB1ZC5tb2RkaXIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weQppbmRleCAyYjRmN2Q5Li42YzYwNDU2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5CkBAIC0zMiw4ICszMiw5IEBACiAgICAgICAgIHVkLm1vZHVsZSA9IHVkLnBhcm1bIm1vZHVsZSJdCiAKICAgICAgICAgIyBDcmVhdGUgcGF0aHMgdG8gb3NjIGNoZWNrb3V0cworICAgICAgICBvc2NkaXIgPSBkLmdldFZhcigiT1NDRElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvb3NjIikKICAgICAgICAgcmVscGF0aCA9IHNlbGYuX3N0cmlwX2xlYWRpbmdfc2xhc2hlcyh1ZC5wYXRoKQotICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ09TQ0RJUicpLCB1ZC5ob3N0KQorICAgICAgICB1ZC5wa2dkaXIgPSBvcy5wYXRoLmpvaW4ob3NjZGlyLCB1ZC5ob3N0KQogICAgICAgICB1ZC5tb2RkaXIgPSBvcy5wYXRoLmpvaW4odWQucGtnZGlyLCByZWxwYXRoLCB1ZC5tb2R1bGUpCiAKICAgICAgICAgaWYgJ3JldicgaW4gdWQucGFybToKQEAgLTU0LDcgKzU1LDcgQEAKICAgICAgICAgY29tbWFuZCBpcyAiZmV0Y2giLCAidXBkYXRlIiwgImluZm8iCiAgICAgICAgICIiIgogCi0gICAgICAgIGJhc2VjbWQgPSBkLmV4cGFuZCgnJHtGRVRDSENNRF9vc2N9JykKKyAgICAgICAgYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF9vc2MiKSBvciAiL3Vzci9iaW4vZW52IG9zYyIKIAogICAgICAgICBwcm90byA9IHVkLnBhcm0uZ2V0KCdwcm90b2NvbCcsICdvY3MnKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9wZXJmb3JjZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CmluZGV4IDNkZWJhZDUuLjkwM2E4ZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CkBAIC00MywxMyArNDMsOSBAQAogICAgICAgICBwcm92aWRlZCBieSB0aGUgZW52LCB1c2UgaXQuICBJZiBQNFBPUlQgaXMgc3BlY2lmaWVkIGJ5IHRoZSByZWNpcGUsIHVzZQogICAgICAgICBpdHMgdmFsdWVzLCB3aGljaCBtYXkgb3ZlcnJpZGUgdGhlIHNldHRpbmdzIGluIFA0Q09ORklHLgogICAgICAgICAiIiIKLSAgICAgICAgdWQuYmFzZWNtZCA9IGQuZ2V0VmFyKCdGRVRDSENNRF9wNCcpCi0gICAgICAgIGlmIG5vdCB1ZC5iYXNlY21kOgotICAgICAgICAgICAgdWQuYmFzZWNtZCA9ICIvdXNyL2Jpbi9lbnYgcDQiCisgICAgICAgIHVkLmJhc2VjbWQgPSBkLmdldFZhcigiRkVUQ0hDTURfcDQiKSBvciAiL3Vzci9iaW4vZW52IHA0IgogCi0gICAgICAgIHVkLmRsZGlyID0gZC5nZXRWYXIoJ1A0RElSJykKLSAgICAgICAgaWYgbm90IHVkLmRsZGlyOgotICAgICAgICAgICAgdWQuZGxkaXIgPSAnJXMvJXMnICUgKGQuZ2V0VmFyKCdETF9ESVInKSwgJ3A0JykKKyAgICAgICAgdWQuZGxkaXIgPSBkLmdldFZhcigiUDRESVIiKSBvciAoZC5nZXRWYXIoIkRMX0RJUiIpICsgIi9wNCIpCiAKICAgICAgICAgcGF0aCA9IHVkLnVybC5zcGxpdCgnOi8vJylbMV0KICAgICAgICAgcGF0aCA9IHBhdGguc3BsaXQoJzsnKVswXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcmVwby5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3JlcG8ucHkKaW5kZXggYzIyZDliNS4uOGM3ZTgxOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvcmVwby5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9yZXBvLnB5CkBAIC00NSw2ICs0NSw4IEBACiAgICAgICAgICJtYXN0ZXIiLgogICAgICAgICAiIiIKIAorICAgICAgICB1ZC5iYXNlY21kID0gZC5nZXRWYXIoIkZFVENIQ01EX3JlcG8iKSBvciAiL3Vzci9iaW4vZW52IHJlcG8iCisKICAgICAgICAgdWQucHJvdG8gPSB1ZC5wYXJtLmdldCgncHJvdG9jb2wnLCAnZ2l0JykKICAgICAgICAgdWQuYnJhbmNoID0gdWQucGFybS5nZXQoJ2JyYW5jaCcsICdtYXN0ZXInKQogICAgICAgICB1ZC5tYW5pZmVzdCA9IHVkLnBhcm0uZ2V0KCdtYW5pZmVzdCcsICdkZWZhdWx0LnhtbCcpCkBAIC02MCw4ICs2Miw4IEBACiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIiVzIGFscmVhZHkgZXhpc3RzIChvciB3YXMgc3Rhc2hlZCkuIFNraXBwaW5nIHJlcG8gaW5pdCAvIHN5bmMuIiwgdWQubG9jYWxwYXRoKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgcmVwb2RpciA9IGQuZ2V0VmFyKCJSRVBPRElSIikgb3IgKGQuZ2V0VmFyKCJETF9ESVIiKSArICIvcmVwbyIpCiAgICAgICAgIGdpdHNyY25hbWUgPSAiJXMlcyIgJSAodWQuaG9zdCwgdWQucGF0aC5yZXBsYWNlKCIvIiwgIi4iKSkKLSAgICAgICAgcmVwb2RpciA9IGQuZ2V0VmFyKCJSRVBPRElSIikgb3Igb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgInJlcG8iKQogICAgICAgICBjb2RpciA9IG9zLnBhdGguam9pbihyZXBvZGlyLCBnaXRzcmNuYW1lLCB1ZC5tYW5pZmVzdCkKIAogICAgICAgICBpZiB1ZC51c2VyOgpAQCAtNzIsMTEgKzc0LDExIEBACiAgICAgICAgIHJlcG9kaXIgPSBvcy5wYXRoLmpvaW4oY29kaXIsICJyZXBvIikKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHJlcG9kaXIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocmVwb2RpciwgIi5yZXBvIikpOgotICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsICJyZXBvIGluaXQgLW0gJXMgLWIgJXMgLXUgJXM6Ly8lcyVzJXMiICUgKHVkLm1hbmlmZXN0LCB1ZC5icmFuY2gsIHVkLnByb3RvLCB1c2VybmFtZSwgdWQuaG9zdCwgdWQucGF0aCksIHVkLnVybCkKLSAgICAgICAgICAgIHJ1bmZldGNoY21kKCJyZXBvIGluaXQgLW0gJXMgLWIgJXMgLXUgJXM6Ly8lcyVzJXMiICUgKHVkLm1hbmlmZXN0LCB1ZC5icmFuY2gsIHVkLnByb3RvLCB1c2VybmFtZSwgdWQuaG9zdCwgdWQucGF0aCksIGQsIHdvcmtkaXI9cmVwb2RpcikKKyAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCAiJXMgaW5pdCAtbSAlcyAtYiAlcyAtdSAlczovLyVzJXMlcyIgJSAodWQuYmFzZWNtZCwgdWQubWFuaWZlc3QsIHVkLmJyYW5jaCwgdWQucHJvdG8sIHVzZXJuYW1lLCB1ZC5ob3N0LCB1ZC5wYXRoKSwgdWQudXJsKQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoIiVzIGluaXQgLW0gJXMgLWIgJXMgLXUgJXM6Ly8lcyVzJXMiICUgKHVkLmJhc2VjbWQsIHVkLm1hbmlmZXN0LCB1ZC5icmFuY2gsIHVkLnByb3RvLCB1c2VybmFtZSwgdWQuaG9zdCwgdWQucGF0aCksIGQsIHdvcmtkaXI9cmVwb2RpcikKIAotICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgInJlcG8gc3luYyAlcyIgJSB1ZC51cmwsIHVkLnVybCkKLSAgICAgICAgcnVuZmV0Y2hjbWQoInJlcG8gc3luYyIsIGQsIHdvcmtkaXI9cmVwb2RpcikKKyAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsICIlcyBzeW5jICVzIiAlICh1ZC5iYXNlY21kLCB1ZC51cmwpLCB1ZC51cmwpCisgICAgICAgIHJ1bmZldGNoY21kKCIlcyBzeW5jIiAlIHVkLmJhc2VjbWQsIGQsIHdvcmtkaXI9cmVwb2RpcikKIAogICAgICAgICBzY21kYXRhID0gdWQucGFybS5nZXQoInNjbWRhdGEiLCAiIikKICAgICAgICAgaWYgc2NtZGF0YSA9PSAia2VlcCI6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkKaW5kZXggM2YxNzJlZS4uOWRjZjNlYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weQpAQCAtNDksNyArNDksNyBAQAogICAgICAgICBpZiBub3QgIm1vZHVsZSIgaW4gdWQucGFybToKICAgICAgICAgICAgIHJhaXNlIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcignbW9kdWxlJywgdWQudXJsKQogCi0gICAgICAgIHVkLmJhc2VjbWQgPSBkLmdldFZhcignRkVUQ0hDTURfc3ZuJykKKyAgICAgICAgdWQuYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF9zdm4iKSBvciAiL3Vzci9iaW4vZW52IHN2biAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRydXN0LXNlcnZlci1jZXJ0IgogCiAgICAgICAgIHVkLm1vZHVsZSA9IHVkLnBhcm1bIm1vZHVsZSJdCiAKQEAgLTU5LDkgKzU5LDEzIEBACiAgICAgICAgICAgICB1ZC5wYXRoX3NwZWMgPSB1ZC5wYXJtWyJwYXRoX3NwZWMiXQogCiAgICAgICAgICMgQ3JlYXRlIHBhdGhzIHRvIHN2biBjaGVja291dHMKKyAgICAgICAgc3ZuZGlyID0gZC5nZXRWYXIoIlNWTkRJUiIpIG9yIChkLmdldFZhcigiRExfRElSIikgKyAiL3N2biIpCiAgICAgICAgIHJlbHBhdGggPSBzZWxmLl9zdHJpcF9sZWFkaW5nX3NsYXNoZXModWQucGF0aCkKLSAgICAgICAgdWQucGtnZGlyID0gb3MucGF0aC5qb2luKGQuZXhwYW5kKCcke1NWTkRJUn0nKSwgdWQuaG9zdCwgcmVscGF0aCkKKyAgICAgICAgdWQucGtnZGlyID0gb3MucGF0aC5qb2luKHN2bmRpciwgdWQuaG9zdCwgcmVscGF0aCkKICAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQubW9kdWxlKQorICAgICAgICAjIFByb3RlY3RzIHRoZSByZXBvc2l0b3J5IGZyb20gY29uY3VycmVudCB1cGRhdGVzLCBlLmcuIGZyb20gdHdvCisgICAgICAgICMgcmVjaXBlcyBmZXRjaGluZyBkaWZmZXJlbnQgcmV2aXNpb25zIGF0IHRoZSBzYW1lIHRpbWUKKyAgICAgICAgdWQuc3ZubG9jayA9IG9zLnBhdGguam9pbih1ZC5wa2dkaXIsICJzdm4ubG9jayIpCiAKICAgICAgICAgdWQuc2V0dXBfcmV2aXNpb25zKGQpCiAKQEAgLTEyMiwzNSArMTI2LDQwIEBACiAKICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJGZXRjaDogY2hlY2tpbmcgZm9yIG1vZHVsZSBkaXJlY3RvcnkgJyIgKyB1ZC5tb2RkaXIgKyAiJyIpCiAKLSAgICAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih1ZC5tb2RkaXIsICcuc3ZuJyksIG9zLlJfT0spOgotICAgICAgICAgICAgc3ZudXBkYXRlY21kID0gc2VsZi5fYnVpbGRzdm5jb21tYW5kKHVkLCBkLCAidXBkYXRlIikKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJVcGRhdGUgIiArIHVkLnVybCkKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byBhdHRlbXB0IHRvIHJ1biBzdm4gdXBncmFkZSBmaXJzdCBpbiBjYXNlIGl0cyBhbiBvbGRlciB3b3JraW5nIGZvcm1hdAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIHVwZ3JhZGUiLCBkLCB3b3JrZGlyPXVkLm1vZGRpcikKLSAgICAgICAgICAgIGV4Y2VwdCBGZXRjaEVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bnVwZGF0ZWNtZCkKLSAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm51cGRhdGVjbWQsIHVkLnVybCkKLSAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bnVwZGF0ZWNtZCwgZCwgd29ya2Rpcj11ZC5tb2RkaXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdm5mZXRjaGNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgImZldGNoIikKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaCAiICsgdWQudXJsKQotICAgICAgICAgICAgIyBjaGVjayBvdXQgc291cmNlcyB0aGVyZQotICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHVkLnBrZ2RpcikKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmZldGNoY21kKQotICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmZldGNoY21kLCB1ZC51cmwpCi0gICAgICAgICAgICBydW5mZXRjaGNtZChzdm5mZXRjaGNtZCwgZCwgd29ya2Rpcj11ZC5wa2dkaXIpCisgICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUodWQuc3ZubG9jaykKIAotICAgICAgICBzY21kYXRhID0gdWQucGFybS5nZXQoInNjbWRhdGEiLCAiIikKLSAgICAgICAgaWYgc2NtZGF0YSA9PSAia2VlcCI6Ci0gICAgICAgICAgICB0YXJfZmxhZ3MgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGFyX2ZsYWdzID0gIi0tZXhjbHVkZT0nLnN2biciCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odWQubW9kZGlyLCAnLnN2bicpLCBvcy5SX09LKToKKyAgICAgICAgICAgICAgICBzdm51cGRhdGVjbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJ1cGRhdGUiKQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJVcGRhdGUgIiArIHVkLnVybCkKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gYXR0ZW1wdCB0byBydW4gc3ZuIHVwZ3JhZGUgZmlyc3QgaW4gY2FzZSBpdHMgYW4gb2xkZXIgd29ya2luZyBmb3JtYXQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHVkLmJhc2VjbWQgKyAiIHVwZ3JhZGUiLCBkLCB3b3JrZGlyPXVkLm1vZGRpcikKKyAgICAgICAgICAgICAgICBleGNlcHQgRmV0Y2hFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bnVwZGF0ZWNtZCkKKyAgICAgICAgICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgc3ZudXBkYXRlY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZudXBkYXRlY21kLCBkLCB3b3JrZGlyPXVkLm1vZGRpcikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ZuZmV0Y2hjbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJmZXRjaCIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoICIgKyB1ZC51cmwpCisgICAgICAgICAgICAgICAgIyBjaGVjayBvdXQgc291cmNlcyB0aGVyZQorICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih1ZC5wa2dkaXIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZuZmV0Y2hjbWQpCisgICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmZldGNoY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuZmV0Y2hjbWQsIGQsIHdvcmtkaXI9dWQucGtnZGlyKQogCi0gICAgICAgICMgdGFyIHRoZW0gdXAgdG8gYSBkZWZpbmVkIGZpbGVuYW1lCi0gICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgJXMgLWN6ZiAlcyAlcyIgJSAodGFyX2ZsYWdzLCB1ZC5sb2NhbHBhdGgsIHVkLnBhdGhfc3BlYyksIGQsCi0gICAgICAgICAgICAgICAgICAgIGNsZWFudXA9W3VkLmxvY2FscGF0aF0sIHdvcmtkaXI9dWQucGtnZGlyKQorICAgICAgICAgICAgc2NtZGF0YSA9IHVkLnBhcm0uZ2V0KCJzY21kYXRhIiwgIiIpCisgICAgICAgICAgICBpZiBzY21kYXRhID09ICJrZWVwIjoKKyAgICAgICAgICAgICAgICB0YXJfZmxhZ3MgPSAiIgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0YXJfZmxhZ3MgPSAiLS1leGNsdWRlPScuc3ZuJyIKKworICAgICAgICAgICAgIyB0YXIgdGhlbSB1cCB0byBhIGRlZmluZWQgZmlsZW5hbWUKKyAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgJXMgLWN6ZiAlcyAlcyIgJSAodGFyX2ZsYWdzLCB1ZC5sb2NhbHBhdGgsIHVkLnBhdGhfc3BlYyksIGQsCisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwPVt1ZC5sb2NhbHBhdGhdLCB3b3JrZGlyPXVkLnBrZ2RpcikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKICAgICBkZWYgY2xlYW4oc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiIgQ2xlYW4gU1ZOIHNwZWNpZmljIGZpbGVzIGFuZCBkaXJzICIiIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQppbmRleCBmMTcyM2JlLi45NmYwNzdlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL21zZy5weQpAQCAtNDAsNiArNDAsNyBAQAogICAgIFZFUkJPU0UgPSBsb2dnaW5nLklORk8gLSAxCiAgICAgTk9URSA9IGxvZ2dpbmcuSU5GTwogICAgIFBMQUlOID0gbG9nZ2luZy5JTkZPICsgMQorICAgIFZFUkJOT1RFID0gbG9nZ2luZy5JTkZPICsgMgogICAgIEVSUk9SID0gbG9nZ2luZy5FUlJPUgogICAgIFdBUk5JTkcgPSBsb2dnaW5nLldBUk5JTkcKICAgICBDUklUSUNBTCA9IGxvZ2dpbmcuQ1JJVElDQUwKQEAgLTUxLDYgKzUyLDcgQEAKICAgICAgICAgVkVSQk9TRTogJ05PVEUnLAogICAgICAgICBOT1RFICAgIDogJ05PVEUnLAogICAgICAgICBQTEFJTiAgOiAnJywKKyAgICAgICAgVkVSQk5PVEU6ICdOT1RFJywKICAgICAgICAgV0FSTklORyA6ICdXQVJOSU5HJywKICAgICAgICAgRVJST1IgICA6ICdFUlJPUicsCiAgICAgICAgIENSSVRJQ0FMOiAnRVJST1InLApAQCAtNjYsNiArNjgsNyBAQAogICAgICAgICBWRVJCT1NFIDogQkFTRUNPTE9SLAogICAgICAgICBOT1RFICAgIDogQkFTRUNPTE9SLAogICAgICAgICBQTEFJTiAgIDogQkFTRUNPTE9SLAorICAgICAgICBWRVJCTk9URTogQkFTRUNPTE9SLAogICAgICAgICBXQVJOSU5HIDogWUVMTE9XLAogICAgICAgICBFUlJPUiAgIDogUkVELAogICAgICAgICBDUklUSUNBTDogUkVELApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQppbmRleCA2NjkwZGM1Li45ZDIwYzMyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQpAQCAtMzQzLDMwICszNDMsMzEgQEAKIAogZGVmIGZpbmFsaXplKGZuLCBkLCB2YXJpYW50ID0gTm9uZSk6CiAgICAgc2F2ZWRfaGFuZGxlcnMgPSBiYi5ldmVudC5nZXRfaGFuZGxlcnMoKS5jb3B5KCkKKyAgICB0cnk6CisgICAgICAgIGZvciB2YXIgaW4gZC5nZXRWYXIoJ19fQkJIQU5ETEVSUycsIEZhbHNlKSBvciBbXToKKyAgICAgICAgICAgICMgdHJ5IHRvIGFkZCB0aGUgaGFuZGxlcgorICAgICAgICAgICAgaGFuZGxlcmZuID0gZC5nZXRWYXJGbGFnKHZhciwgImZpbGVuYW1lIiwgRmFsc2UpCisgICAgICAgICAgICBpZiBub3QgaGFuZGxlcmZuOgorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJVbmRlZmluZWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiAnJXMnIiAlIHZhcikKKyAgICAgICAgICAgIGhhbmRsZXJsbiA9IGludChkLmdldFZhckZsYWcodmFyLCAibGluZW5vIiwgRmFsc2UpKQorICAgICAgICAgICAgYmIuZXZlbnQucmVnaXN0ZXIodmFyLCBkLmdldFZhcih2YXIsIEZhbHNlKSwgKGQuZ2V0VmFyRmxhZyh2YXIsICJldmVudG1hc2siKSBvciAiIikuc3BsaXQoKSwgaGFuZGxlcmZuLCBoYW5kbGVybG4pCiAKLSAgICBmb3IgdmFyIGluIGQuZ2V0VmFyKCdfX0JCSEFORExFUlMnLCBGYWxzZSkgb3IgW106Ci0gICAgICAgICMgdHJ5IHRvIGFkZCB0aGUgaGFuZGxlcgotICAgICAgICBoYW5kbGVyZm4gPSBkLmdldFZhckZsYWcodmFyLCAiZmlsZW5hbWUiLCBGYWxzZSkKLSAgICAgICAgaWYgbm90IGhhbmRsZXJmbjoKLSAgICAgICAgICAgIGJiLmZhdGFsKCJVbmRlZmluZWQgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiAnJXMnIiAlIHZhcikKLSAgICAgICAgaGFuZGxlcmxuID0gaW50KGQuZ2V0VmFyRmxhZyh2YXIsICJsaW5lbm8iLCBGYWxzZSkpCi0gICAgICAgIGJiLmV2ZW50LnJlZ2lzdGVyKHZhciwgZC5nZXRWYXIodmFyLCBGYWxzZSksIChkLmdldFZhckZsYWcodmFyLCAiZXZlbnRtYXNrIikgb3IgIiIpLnNwbGl0KCksIGhhbmRsZXJmbiwgaGFuZGxlcmxuKQorICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlKGZuKSwgZCkKIAotICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UoZm4pLCBkKQorICAgICAgICBiYi5kYXRhLmV4cGFuZEtleXMoZCkKKyAgICAgICAgcnVuQW5vbkZ1bmNzKGQpCiAKLSAgICBiYi5kYXRhLmV4cGFuZEtleXMoZCkKLSAgICBydW5Bbm9uRnVuY3MoZCkKKyAgICAgICAgdGFza2xpc3QgPSBkLmdldFZhcignX19CQlRBU0tTJywgRmFsc2UpIG9yIFtdCisgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuUmVjaXBlVGFza1ByZVByb2Nlc3MoZm4sIGxpc3QodGFza2xpc3QpKSwgZCkKKyAgICAgICAgYmIuYnVpbGQuYWRkX3Rhc2tzKHRhc2tsaXN0LCBkKQogCi0gICAgdGFza2xpc3QgPSBkLmdldFZhcignX19CQlRBU0tTJywgRmFsc2UpIG9yIFtdCi0gICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5SZWNpcGVUYXNrUHJlUHJvY2VzcyhmbiwgbGlzdCh0YXNrbGlzdCkpLCBkKQotICAgIGJiLmJ1aWxkLmFkZF90YXNrcyh0YXNrbGlzdCwgZCkKKyAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLmZpbmFsaXNlKGZuLCBkLCB2YXJpYW50KQogCi0gICAgYmIucGFyc2Uuc2lnZ2VuLmZpbmFsaXNlKGZuLCBkLCB2YXJpYW50KQorICAgICAgICBkLnNldFZhcignQkJJTkNMVURFRCcsIGJiLnBhcnNlLmdldF9maWxlX2RlcGVuZHMoZCkpCiAKLSAgICBkLnNldFZhcignQkJJTkNMVURFRCcsIGJiLnBhcnNlLmdldF9maWxlX2RlcGVuZHMoZCkpCi0KLSAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlJlY2lwZVBhcnNlZChmbiksIGQpCi0gICAgYmIuZXZlbnQuc2V0X2hhbmRsZXJzKHNhdmVkX2hhbmRsZXJzKQorICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlJlY2lwZVBhcnNlZChmbiksIGQpCisgICAgZmluYWxseToKKyAgICAgICAgYmIuZXZlbnQuc2V0X2hhbmRsZXJzKHNhdmVkX2hhbmRsZXJzKQogCiBkZWYgX2NyZWF0ZV92YXJpYW50cyhkYXRhc3RvcmVzLCBuYW1lcywgZnVuY3Rpb24sIG9ubHlmaW5hbGlzZSk6CiAgICAgZGVmIGNyZWF0ZV92YXJpYW50KG5hbWUsIG9yaWdfZCwgYXJnID0gTm9uZSk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQppbmRleCA0ODBhODUxLi40ZDVkODc2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKQEAgLTk0LDEzICs5NCwxMyBAQAogICAgICAgICBzZWxmLmFjdGl2ZSA9IHNlbGYuYWN0aXZlIC0gMQogICAgICAgICBzZWxmLmZhaWxlZCA9IHNlbGYuZmFpbGVkICsgMQogCi0gICAgZGVmIHRhc2tDb21wbGV0ZWQoc2VsZiwgbnVtYmVyID0gMSk6Ci0gICAgICAgIHNlbGYuYWN0aXZlID0gc2VsZi5hY3RpdmUgLSBudW1iZXIKLSAgICAgICAgc2VsZi5jb21wbGV0ZWQgPSBzZWxmLmNvbXBsZXRlZCArIG51bWJlcgorICAgIGRlZiB0YXNrQ29tcGxldGVkKHNlbGYpOgorICAgICAgICBzZWxmLmFjdGl2ZSA9IHNlbGYuYWN0aXZlIC0gMQorICAgICAgICBzZWxmLmNvbXBsZXRlZCA9IHNlbGYuY29tcGxldGVkICsgMQogCi0gICAgZGVmIHRhc2tTa2lwcGVkKHNlbGYsIG51bWJlciA9IDEpOgotICAgICAgICBzZWxmLmFjdGl2ZSA9IHNlbGYuYWN0aXZlICsgbnVtYmVyCi0gICAgICAgIHNlbGYuc2tpcHBlZCA9IHNlbGYuc2tpcHBlZCArIG51bWJlcgorICAgIGRlZiB0YXNrU2tpcHBlZChzZWxmKToKKyAgICAgICAgc2VsZi5hY3RpdmUgPSBzZWxmLmFjdGl2ZSArIDEKKyAgICAgICAgc2VsZi5za2lwcGVkID0gc2VsZi5za2lwcGVkICsgMQogCiAgICAgZGVmIHRhc2tBY3RpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuYWN0aXZlID0gc2VsZi5hY3RpdmUgKyAxCkBAIC0xMzQsNiArMTM0LDcgQEAKICAgICAgICAgc2VsZi5wcmlvX21hcCA9IFtzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllcy5rZXlzKCldCiAKICAgICAgICAgc2VsZi5idWlsZGFibGUgPSBbXQorICAgICAgICBzZWxmLnNraXBfbWF4dGhyZWFkID0ge30KICAgICAgICAgc2VsZi5zdGFtcHMgPSB7fQogICAgICAgICBmb3IgdGlkIGluIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzOgogICAgICAgICAgICAgKG1jLCBmbiwgdGFza25hbWUsIHRhc2tmbikgPSBzcGxpdF90aWRfbWNmbih0aWQpCkBAIC0xNTAsOCArMTUxLDI1IEBACiAgICAgICAgIHNlbGYuYnVpbGRhYmxlID0gW3ggZm9yIHggaW4gc2VsZi5idWlsZGFibGUgaWYgeCBub3QgaW4gc2VsZi5ycS5ydW5xX3J1bm5pbmddCiAgICAgICAgIGlmIG5vdCBzZWxmLmJ1aWxkYWJsZToKICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgIyBGaWx0ZXIgb3V0IHRhc2tzIHRoYXQgaGF2ZSBhIG1heCBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IGhhdmUgYmVlbiBleGNlZWRlZAorICAgICAgICBza2lwX2J1aWxkYWJsZSA9IHt9CisgICAgICAgIGZvciBydW5uaW5nIGluIHNlbGYucnEucnVucV9ydW5uaW5nLmRpZmZlcmVuY2Uoc2VsZi5ycS5ydW5xX2NvbXBsZXRlKToKKyAgICAgICAgICAgIHJ0YXNrbmFtZSA9IHRhc2tuYW1lX2Zyb21fdGlkKHJ1bm5pbmcpCisgICAgICAgICAgICBpZiBydGFza25hbWUgbm90IGluIHNlbGYuc2tpcF9tYXh0aHJlYWQ6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwX21heHRocmVhZFtydGFza25hbWVdID0gc2VsZi5ycS5jZmdEYXRhLmdldFZhckZsYWcocnRhc2tuYW1lLCAibnVtYmVyX3RocmVhZHMiKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuc2tpcF9tYXh0aHJlYWRbcnRhc2tuYW1lXToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgcnRhc2tuYW1lIGluIHNraXBfYnVpbGRhYmxlOgorICAgICAgICAgICAgICAgIHNraXBfYnVpbGRhYmxlW3J0YXNrbmFtZV0gKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBza2lwX2J1aWxkYWJsZVtydGFza25hbWVdID0gMQorCiAgICAgICAgIGlmIGxlbihzZWxmLmJ1aWxkYWJsZSkgPT0gMToKICAgICAgICAgICAgIHRpZCA9IHNlbGYuYnVpbGRhYmxlWzBdCisgICAgICAgICAgICB0YXNrbmFtZSA9IHRhc2tuYW1lX2Zyb21fdGlkKHRpZCkKKyAgICAgICAgICAgIGlmIHRhc2tuYW1lIGluIHNraXBfYnVpbGRhYmxlIGFuZCBza2lwX2J1aWxkYWJsZVt0YXNrbmFtZV0gPj0gaW50KHNlbGYuc2tpcF9tYXh0aHJlYWRbdGFza25hbWVdKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgc3RhbXAgPSBzZWxmLnN0YW1wc1t0aWRdCiAgICAgICAgICAgICBpZiBzdGFtcCBub3QgaW4gc2VsZi5ycS5idWlsZF9zdGFtcHMudmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRpZApAQCAtMTY0LDYgKzE4Miw5IEBACiAgICAgICAgIGJlc3QgPSBOb25lCiAgICAgICAgIGJlc3RwcmlvID0gTm9uZQogICAgICAgICBmb3IgdGlkIGluIHNlbGYuYnVpbGRhYmxlOgorICAgICAgICAgICAgdGFza25hbWUgPSB0YXNrbmFtZV9mcm9tX3RpZCh0aWQpCisgICAgICAgICAgICBpZiB0YXNrbmFtZSBpbiBza2lwX2J1aWxkYWJsZSBhbmQgc2tpcF9idWlsZGFibGVbdGFza25hbWVdID49IGludChzZWxmLnNraXBfbWF4dGhyZWFkW3Rhc2tuYW1lXSk6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHByaW8gPSBzZWxmLnJldl9wcmlvX21hcFt0aWRdCiAgICAgICAgICAgICBpZiBiZXN0cHJpbyBpcyBOb25lIG9yIGJlc3RwcmlvID4gcHJpbzoKICAgICAgICAgICAgICAgICBzdGFtcCA9IHNlbGYuc3RhbXBzW3RpZF0KQEAgLTE3OCw3ICsxOTksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRoZSBpZCBvZiB0aGUgdGFzayB3ZSBzaG91bGQgYnVpbGQgbmV4dAogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5ycS5zdGF0cy5hY3RpdmUgPCBzZWxmLnJxLm51bWJlcl90YXNrczoKKyAgICAgICAgaWYgc2VsZi5ycS5jYW5fc3RhcnRfdGFzaygpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV4dF9idWlsZGFibGVfdGFzaygpCiAKICAgICBkZWYgbmV3YnVpbGRhYmxlKHNlbGYsIHRhc2spOgpAQCAtNTgxLDYgKzYwMiwxOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiB0IGluIHRhc2tEYXRhW21jXS50YXNrZW50cmllczoKICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMuYWRkKHQpCiAKKyAgICAgICAgZGVmIGFkZF9tY19kZXBlbmRlbmNpZXMobWMsIHRpZCk6CisgICAgICAgICAgICBtY2RlcHMgPSB0YXNrRGF0YVttY10uZ2V0X21jZGVwZW5kcygpCisgICAgICAgICAgICBmb3IgZGVwIGluIG1jZGVwczoKKyAgICAgICAgICAgICAgICBtY2RlcGVuZGVuY3kgPSBkZXAuc3BsaXQoJzonKQorICAgICAgICAgICAgICAgIHBuID0gbWNkZXBlbmRlbmN5WzNdCisgICAgICAgICAgICAgICAgZnJvbW1jID0gbWNkZXBlbmRlbmN5WzFdCisgICAgICAgICAgICAgICAgbWNkZXAgPSBtY2RlcGVuZGVuY3lbMl0KKyAgICAgICAgICAgICAgICBkZXB0YXNrID0gbWNkZXBlbmRlbmN5WzRdCisgICAgICAgICAgICAgICAgaWYgbWMgPT0gZnJvbW1jOgorICAgICAgICAgICAgICAgICAgICBmbiA9IHRhc2tEYXRhW21jZGVwXS5idWlsZF90YXJnZXRzW3BuXVswXQorICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSAnJXM6JXMnICUgKGZuLGRlcHRhc2spCisgICAgICAgICAgICAgICAgICAgIHRhc2tEYXRhW21jXS50YXNrZW50cmllc1t0aWRdLnRkZXBlbmRzLmFwcGVuZChuZXdkZXApCisKICAgICAgICAgZm9yIG1jIGluIHRhc2tEYXRhOgogICAgICAgICAgICAgZm9yIHRpZCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CiAKQEAgLTU5NywxMiArNjMxLDE2IEBACiAgICAgICAgICAgICAgICAgaWYgZm4gaW4gdGFza0RhdGFbbWNdLmZhaWxlZF9mbnM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgICAgICAjIFdlIGFkZCBtdWx0aWNvbmZpZyBkZXBlbmRlbmNpZXMgYmVmb3JlIHByb2Nlc3NpbmcgaW50ZXJuYWwgdGFzayBkZXBzICh0ZGVwZW5kcykKKyAgICAgICAgICAgICAgICBpZiAnbWNkZXBlbmRzJyBpbiB0YXNrX2RlcHMgYW5kIHRhc2tuYW1lIGluIHRhc2tfZGVwc1snbWNkZXBlbmRzJ106CisgICAgICAgICAgICAgICAgICAgIGFkZF9tY19kZXBlbmRlbmNpZXMobWMsIHRpZCkKKwogICAgICAgICAgICAgICAgICMgUmVzb2x2ZSB0YXNrIGludGVybmFsIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAjIGUuZy4gYWRkdGFzayBiZWZvcmUgWCBhZnRlciBZCiAgICAgICAgICAgICAgICAgZm9yIHQgaW4gdGFza0RhdGFbbWNdLnRhc2tlbnRyaWVzW3RpZF0udGRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgIChfLCBkZXBmbiwgZGVwdGFza25hbWUsIF8pID0gc3BsaXRfdGlkX21jZm4odCkKLSAgICAgICAgICAgICAgICAgICAgZGVwZW5kcy5hZGQoYnVpbGRfdGlkKG1jLCBkZXBmbiwgZGVwdGFza25hbWUpKQorICAgICAgICAgICAgICAgICAgICAoZGVwbWMsIGRlcGZuLCBkZXB0YXNrbmFtZSwgXykgPSBzcGxpdF90aWRfbWNmbih0KQorICAgICAgICAgICAgICAgICAgICBkZXBlbmRzLmFkZChidWlsZF90aWQoZGVwbWMsIGRlcGZuLCBkZXB0YXNrbmFtZSkpCiAKICAgICAgICAgICAgICAgICAjIFJlc29sdmUgJ2RlcHRhc2snIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgICMKQEAgLTEwMzIsNyArMTA3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1zZyArPSAiXG4lcyBoYXMgdW5pcXVlIHJwcm92aWRlczpcbiAgJXMiICUgKHByb3ZmbiwgIlxuICAiLmpvaW4ocnByb3ZpZGVfcmVzdWx0c1twcm92Zm5dIC0gY29tbW9ucnByb3ZzKSkKIAogICAgICAgICAgICAgICAgIGlmIHNlbGYud2Fybl9tdWx0aV9iYjoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcobXNnKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIudmVyYm5vdGUobXNnKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihtc2cpCiAKQEAgLTEwNDAsNyArMTA3OCw3IEBACiAKICAgICAgICAgIyBDcmVhdGUgYSB3aGl0ZWxpc3QgdXNhYmxlIGJ5IHRoZSBzdGFtcCBjaGVja3MKICAgICAgICAgc2VsZi5zdGFtcGZud2hpdGVsaXN0ID0ge30KLSAgICAgICAgZm9yIG1jIGluIHNlbGYudGFza0RhdGE6IAorICAgICAgICBmb3IgbWMgaW4gc2VsZi50YXNrRGF0YToKICAgICAgICAgICAgIHNlbGYuc3RhbXBmbndoaXRlbGlzdFttY10gPSBbXQogICAgICAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuc3RhbXB3aGl0ZWxpc3Quc3BsaXQoKToKICAgICAgICAgICAgICAgICBpZiBlbnRyeSBub3QgaW4gc2VsZi50YXNrRGF0YVttY10uYnVpbGRfdGFyZ2V0czoKQEAgLTEwNzIsNyArMTExMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJUYXNrICVzIGlzIG1hcmtlZCBub3N0YW1wLCBjYW5ub3QgaW52YWxpZGF0ZSB0aGlzIHRhc2siICUgdGFza25hbWUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci52ZXJib3NlKCJJbnZhbGlkYXRlIHRhc2sgJXMsICVzIiwgdGFza25hbWUsIGZuKQotICAgICAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5pbnZhbGlkYXRlX3Rhc2sodGFza25hbWUsIHNlbGYuZGF0YUNhY2hlc1ttY10sIGZuKQorICAgICAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5pbnZhbGlkYXRlX3Rhc2sodGFza25hbWUsIHNlbGYuZGF0YUNhY2hlc1ttY10sIHRhc2tmbikKIAogICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKQEAgLTE3MTcsNiArMTc1NSwxMCBAQAogICAgICAgICB2YWxpZCA9IGJiLnV0aWxzLmJldHRlcl9ldmFsKGNhbGwsIGxvY3MpCiAgICAgICAgIHJldHVybiB2YWxpZAogCisgICAgZGVmIGNhbl9zdGFydF90YXNrKHNlbGYpOgorICAgICAgICBjYW5fc3RhcnQgPSBzZWxmLnN0YXRzLmFjdGl2ZSA8IHNlbGYubnVtYmVyX3Rhc2tzCisgICAgICAgIHJldHVybiBjYW5fc3RhcnQKKwogY2xhc3MgUnVuUXVldWVFeGVjdXRlRHVtbXkoUnVuUXVldWVFeGVjdXRlKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnEpOgogICAgICAgICBzZWxmLnJxID0gcnEKQEAgLTE3OTAsMTMgKzE4MzIsMTQgQEAKICAgICAgICAgICAgIGJiLmJ1aWxkLmRlbF9zdGFtcCh0YXNrbmFtZSwgc2VsZi5ycWRhdGEuZGF0YUNhY2hlc1ttY10sIHRhc2tmbikKICAgICAgICAgICAgIHNlbGYucnEuc2NlbmVxdWV1ZV9jb3ZlcmVkLnJlbW92ZSh0aWQpCiAKLSAgICAgICAgdG9yZW1vdmUgPSBjb3ZlcmVkX3JlbW92ZQorICAgICAgICB0b3JlbW92ZSA9IGNvdmVyZWRfcmVtb3ZlIHwgc2VsZi5ycS5zY2VuZXF1ZXVlX25vdGNvdmVyZWQKICAgICAgICAgZm9yIHRhc2sgaW4gdG9yZW1vdmU6CiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgJ05vdCBza2lwcGluZyB0YXNrICVzIGR1ZSB0byBzZXRzY2VuZXZlcmlmeScsIHRhc2spCiAgICAgICAgIHdoaWxlIHRvcmVtb3ZlOgogICAgICAgICAgICAgY292ZXJlZF9yZW1vdmUgPSBbXQogICAgICAgICAgICAgZm9yIHRhc2sgaW4gdG9yZW1vdmU6Ci0gICAgICAgICAgICAgICAgcmVtb3ZlY292ZXJlZHRhc2sodGFzaykKKyAgICAgICAgICAgICAgICBpZiB0YXNrIGluIHNlbGYucnEuc2NlbmVxdWV1ZV9jb3ZlcmVkOgorICAgICAgICAgICAgICAgICAgICByZW1vdmVjb3ZlcmVkdGFzayh0YXNrKQogICAgICAgICAgICAgICAgIGZvciBkZXB0YXNrIGluIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3Rhc2tdLmRlcGVuZHM6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRlcHRhc2sgbm90IGluIHNlbGYucnEuc2NlbmVxdWV1ZV9jb3ZlcmVkOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE4NjYsMTQgKzE5MDksMTMgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgcmV2ZGVwIGluIHNlbGYucnVucV9idWlsZGFibGU6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGFsbGRlcHMgPSAxCisgICAgICAgICAgICBhbGxkZXBzID0gVHJ1ZQogICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1tyZXZkZXBdLmRlcGVuZHM6CiAgICAgICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfY29tcGxldGU6Ci0gICAgICAgICAgICAgICAgICAgIGFsbGRlcHMgPSAwCi0gICAgICAgICAgICBpZiBhbGxkZXBzID09IDE6CisgICAgICAgICAgICAgICAgICAgIGFsbGRlcHMgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgYWxsZGVwczoKICAgICAgICAgICAgICAgICBzZWxmLnNldGJ1aWxkYWJsZShyZXZkZXApCi0gICAgICAgICAgICAgICAgZm4gPSBmbl9mcm9tX3RpZChyZXZkZXApCi0gICAgICAgICAgICAgICAgdGFza25hbWUgPSB0YXNrbmFtZV9mcm9tX3RpZChyZXZkZXApCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJNYXJraW5nIHRhc2sgJXMgYXMgYnVpbGRhYmxlIiwgcmV2ZGVwKQogCiAgICAgZGVmIHRhc2tfY29tcGxldGUoc2VsZiwgdGFzayk6CkBAIC0xODk3LDggKzE5MzksOCBAQAogICAgICAgICBzZWxmLnNldGJ1aWxkYWJsZSh0YXNrKQogICAgICAgICBiYi5ldmVudC5maXJlKHJ1blF1ZXVlVGFza1NraXBwZWQodGFzaywgc2VsZi5zdGF0cywgc2VsZi5ycSwgcmVhc29uKSwgc2VsZi5jZmdEYXRhKQogICAgICAgICBzZWxmLnRhc2tfY29tcGxldGVvdXRyaWdodCh0YXNrKQotICAgICAgICBzZWxmLnN0YXRzLnRhc2tDb21wbGV0ZWQoKQogICAgICAgICBzZWxmLnN0YXRzLnRhc2tTa2lwcGVkKCkKKyAgICAgICAgc2VsZi5zdGF0cy50YXNrQ29tcGxldGVkKCkKIAogICAgIGRlZiBleGVjdXRlKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTIwMDgsNyArMjA1MCw3IEBACiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3N0YW1wczIuYXBwZW5kKHNlbGYuYnVpbGRfc3RhbXBzW3Rhc2tdKQogICAgICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcuYWRkKHRhc2spCiAgICAgICAgICAgICBzZWxmLnN0YXRzLnRhc2tBY3RpdmUoKQotICAgICAgICAgICAgaWYgc2VsZi5zdGF0cy5hY3RpdmUgPCBzZWxmLm51bWJlcl90YXNrczoKKyAgICAgICAgICAgIGlmIHNlbGYuY2FuX3N0YXJ0X3Rhc2soKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYuc3RhdHMuYWN0aXZlID4gMDoKQEAgLTIwNjMsNiArMjEwNSw3IEBACiAgICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgc2V0c2NlbmUgZnVuY3Rpb25zLCBza2lwIHRoaXMgc3RlcAogICAgICAgICBpZiBsZW4oc2VsZi5ycWRhdGEucnVucV9zZXRzY2VuZV90aWRzKSA9PSAwOgogICAgICAgICAgICAgcnEuc2NlbmVxdWV1ZV9jb3ZlcmVkID0gc2V0KCkKKyAgICAgICAgICAgIHJxLnNjZW5lcXVldWVfbm90Y292ZXJlZCA9IHNldCgpCiAgICAgICAgICAgICBycS5zdGF0ZSA9IHJ1blF1ZXVlUnVuSW5pdAogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTIyNzgsMTAgKzIzMjEsMTUgQEAKICAgICAgICAgICAgICAgICBzcV9oYXNoLmFwcGVuZChzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2gpCiAgICAgICAgICAgICAgICAgc3FfdGFza25hbWUuYXBwZW5kKHRhc2tuYW1lKQogICAgICAgICAgICAgICAgIHNxX3Rhc2suYXBwZW5kKHRpZCkKKworICAgICAgICAgICAgc2VsZi5jb29rZXIuZGF0YS5zZXRWYXIoIkJCX1NFVFNDRU5FX1NUQU1QQ1VSUkVOVF9DT1VOVCIsIGxlbihzdGFtcHByZXNlbnQpKQorCiAgICAgICAgICAgICBjYWxsID0gc2VsZi5ycS5oYXNodmFsaWRhdGUgKyAiKHNxX2ZuLCBzcV90YXNrLCBzcV9oYXNoLCBzcV9oYXNoZm4sIGQpIgogICAgICAgICAgICAgbG9jcyA9IHsgInNxX2ZuIiA6IHNxX2ZuLCAic3FfdGFzayIgOiBzcV90YXNrbmFtZSwgInNxX2hhc2giIDogc3FfaGFzaCwgInNxX2hhc2hmbiIgOiBzcV9oYXNoZm4sICJkIiA6IHNlbGYuY29va2VyLmRhdGEgfQogICAgICAgICAgICAgdmFsaWQgPSBiYi51dGlscy5iZXR0ZXJfZXZhbChjYWxsLCBsb2NzKQogCisgICAgICAgICAgICBzZWxmLmNvb2tlci5kYXRhLmRlbFZhcigiQkJfU0VUU0NFTkVfU1RBTVBDVVJSRU5UX0NPVU5UIikKKwogICAgICAgICAgICAgdmFsaWRfbmV3ID0gc3RhbXBwcmVzZW50CiAgICAgICAgICAgICBmb3IgdiBpbiB2YWxpZDoKICAgICAgICAgICAgICAgICB2YWxpZF9uZXcuYXBwZW5kKHNxX3Rhc2tbdl0pCkBAIC0yMzQzLDggKzIzOTEsOCBAQAogICAgIGRlZiB0YXNrX2ZhaWxvdXRyaWdodChzZWxmLCB0YXNrKToKICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcuYWRkKHRhc2spCiAgICAgICAgIHNlbGYucnVucV9idWlsZGFibGUuYWRkKHRhc2spCi0gICAgICAgIHNlbGYuc3RhdHMudGFza0NvbXBsZXRlZCgpCiAgICAgICAgIHNlbGYuc3RhdHMudGFza1NraXBwZWQoKQorICAgICAgICBzZWxmLnN0YXRzLnRhc2tDb21wbGV0ZWQoKQogICAgICAgICBzZWxmLnNjZW5lcXVldWVfbm90Y292ZXJlZC5hZGQodGFzaykKICAgICAgICAgc2VsZi5zY2VuZXF1ZXVlX3VwZGF0ZWNvdW50ZXJzKHRhc2ssIFRydWUpCiAKQEAgLTIzNTIsOCArMjQwMCw4IEBACiAgICAgICAgIHNlbGYucnVucV9ydW5uaW5nLmFkZCh0YXNrKQogICAgICAgICBzZWxmLnJ1bnFfYnVpbGRhYmxlLmFkZCh0YXNrKQogICAgICAgICBzZWxmLnRhc2tfY29tcGxldGVvdXRyaWdodCh0YXNrKQotICAgICAgICBzZWxmLnN0YXRzLnRhc2tDb21wbGV0ZWQoKQogICAgICAgICBzZWxmLnN0YXRzLnRhc2tTa2lwcGVkKCkKKyAgICAgICAgc2VsZi5zdGF0cy50YXNrQ29tcGxldGVkKCkKIAogICAgIGRlZiBleGVjdXRlKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTIzNjMsNyArMjQxMSw3IEBACiAgICAgICAgIHNlbGYucnEucmVhZF93b3JrZXJzKCkKIAogICAgICAgICB0YXNrID0gTm9uZQotICAgICAgICBpZiBzZWxmLnN0YXRzLmFjdGl2ZSA8IHNlbGYubnVtYmVyX3Rhc2tzOgorICAgICAgICBpZiBzZWxmLmNhbl9zdGFydF90YXNrKCk6CiAgICAgICAgICAgICAjIEZpbmQgdGhlIG5leHQgc2V0c2NlbmUgdG8gcnVuCiAgICAgICAgICAgICBmb3IgbmV4dHRhc2sgaW4gc2VsZi5ycWRhdGEucnVucV9zZXRzY2VuZV90aWRzOgogICAgICAgICAgICAgICAgIGlmIG5leHR0YXNrIGluIHNlbGYucnVucV9idWlsZGFibGUgYW5kIG5leHR0YXNrIG5vdCBpbiBzZWxmLnJ1bnFfcnVubmluZyBhbmQgc2VsZi5zdGFtcHNbbmV4dHRhc2tdIG5vdCBpbiBzZWxmLmJ1aWxkX3N0YW1wcy52YWx1ZXMoKToKQEAgLTI0MjIsNyArMjQ3MCw3IEBACiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3N0YW1wczIuYXBwZW5kKHNlbGYuYnVpbGRfc3RhbXBzW3Rhc2tdKQogICAgICAgICAgICAgc2VsZi5ydW5xX3J1bm5pbmcuYWRkKHRhc2spCiAgICAgICAgICAgICBzZWxmLnN0YXRzLnRhc2tBY3RpdmUoKQotICAgICAgICAgICAgaWYgc2VsZi5zdGF0cy5hY3RpdmUgPCBzZWxmLm51bWJlcl90YXNrczoKKyAgICAgICAgICAgIGlmIHNlbGYuY2FuX3N0YXJ0X3Rhc2soKToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHNlbGYuc3RhdHMuYWN0aXZlID4gMDoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci9wcm9jZXNzLnB5CmluZGV4IDA3NDliNWIuLjQyZDc5MDcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3Byb2Nlc3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIvcHJvY2Vzcy5weQpAQCAtMzc3LDExICszNzcsMTIgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc29ja25hbWUpOgogICAgICAgICAgICAgb3MudW5saW5rKHNvY2tuYW1lKQogCisgICAgICAgICMgUGxhY2UgdGhlIGxvZyBpbiB0aGUgYnVpbGRkaXJlY3RvcnkgYWxvbmdzaWRlIHRoZSBsb2NrIGZpbGUKKyAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc2VsZi5iaXRiYWtlX2xvY2submFtZSksICJiaXRiYWtlLWNvb2tlcmRhZW1vbi5sb2ciKQorCiAgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKICAgICAgICAgIyBBRl9VTklYIGhhcyBwYXRoIGxlbmd0aCBpc3N1ZXMgc28gY2hkaXIgaGVyZSB0byB3b3JrYXJvdW5kCiAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgIGxvZ2ZpbGUgPSBvcy5wYXRoLmpvaW4oY3dkLCAiYml0YmFrZS1jb29rZXJkYWVtb24ubG9nIikKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUoc29ja25hbWUpKQogICAgICAgICAgICAgc2VsZi5zb2NrLmJpbmQob3MucGF0aC5iYXNlbmFtZShzb2NrbmFtZSkpCkBAIC0zOTQsMTEgKzM5NSwxNiBAQAogICAgICAgICBiYi5kYWVtb25pemUuY3JlYXRlRGFlbW9uKHNlbGYuX3N0YXJ0U2VydmVyLCBsb2dmaWxlKQogICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQogICAgICAgICBzZWxmLmJpdGJha2VfbG9jay5jbG9zZSgpCisgICAgICAgIG9zLmNsb3NlKHNlbGYucmVhZHlwaXBlaW4pCiAKICAgICAgICAgcmVhZHkgPSBDb25uZWN0aW9uUmVhZGVyKHNlbGYucmVhZHlwaXBlKQogICAgICAgICByID0gcmVhZHkucG9sbCgzMCkKICAgICAgICAgaWYgcjoKLSAgICAgICAgICAgIHIgPSByZWFkeS5nZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHIgPSByZWFkeS5nZXQoKQorICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgorICAgICAgICAgICAgICAgICMgVHJhcCB0aGUgY2hpbGQgZXhpdHRpbmcvY2xvc2luZyB0aGUgcGlwZSBhbmQgZXJyb3Igb3V0CisgICAgICAgICAgICAgICAgciA9IE5vbmUKICAgICAgICAgaWYgbm90IHIgb3IgciAhPSAicmVhZHkiOgogICAgICAgICAgICAgcmVhZHkuY2xvc2UoKQogICAgICAgICAgICAgYmIuZXJyb3IoIlVuYWJsZSB0byBzdGFydCBiaXRiYWtlIHNlcnZlciIpCkBAIC00MjQsNyArNDMwLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCJTZXJ2ZXIgbG9nIGZvciB0aGlzIHNlc3Npb24gKCVzKTpcbiVzIiAlIChsb2dmaWxlLCAiIi5qb2luKGxpbmVzKSkpCiAgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0KDEpCiAgICAgICAgIHJlYWR5LmNsb3NlKCkKLSAgICAgICAgb3MuY2xvc2Uoc2VsZi5yZWFkeXBpcGVpbikKIAogICAgIGRlZiBfc3RhcnRTZXJ2ZXIoc2VsZik6CiAgICAgICAgIHByaW50KHNlbGYuc3RhcnRfbG9nX2Zvcm1hdCAlIChvcy5nZXRwaWQoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoc2VsZi5zdGFydF9sb2dfZGF0ZXRpbWVfZm9ybWF0KSkpCkBAIC00MzIsMTUgKzQzNywxMSBAQAogCiAgICAgICAgIHNlcnZlciA9IFByb2Nlc3NTZXJ2ZXIoc2VsZi5iaXRiYWtlX2xvY2ssIHNlbGYuc29jaywgc2VsZi5zb2NrbmFtZSkKICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uLnNldFNlcnZlclJlZ0lkbGVDYWxsYmFjayhzZXJ2ZXIucmVnaXN0ZXJfaWRsZV9mdW5jdGlvbikKKyAgICAgICAgb3MuY2xvc2Uoc2VsZi5yZWFkeXBpcGUpCiAgICAgICAgIHdyaXRlciA9IENvbm5lY3Rpb25Xcml0ZXIoc2VsZi5yZWFkeXBpcGVpbikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jb29rZXIgPSBiYi5jb29rZXIuQkJDb29rZXIoc2VsZi5jb25maWd1cmF0aW9uLCBzZWxmLmZlYXR1cmVzZXQpCi0gICAgICAgICAgICB3cml0ZXIuc2VuZCgicmVhZHkiKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICB3cml0ZXIuc2VuZCgiZmFpbCIpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MuY2xvc2Uoc2VsZi5yZWFkeXBpcGVpbikKKyAgICAgICAgc2VsZi5jb29rZXIgPSBiYi5jb29rZXIuQkJDb29rZXIoc2VsZi5jb25maWd1cmF0aW9uLCBzZWxmLmZlYXR1cmVzZXQpCisgICAgICAgIHdyaXRlci5zZW5kKCJyZWFkeSIpCisgICAgICAgIHdyaXRlci5jbG9zZSgpCiAgICAgICAgIHNlcnZlci5jb29rZXIgPSBzZWxmLmNvb2tlcgogICAgICAgICBzZXJ2ZXIuc2VydmVyX3RpbWVvdXQgPSBzZWxmLmNvbmZpZ3VyYXRpb24uc2VydmVyX3RpbWVvdXQKICAgICAgICAgc2VydmVyLnhtbHJwY2ludGVyZmFjZSA9IHNlbGYuY29uZmlndXJhdGlvbi54bWxycGNpbnRlcmZhY2UKQEAgLTQ1NSw5ICs0NTYsNiBAQAogICAgICMgQUZfVU5JWCBoYXMgcGF0aCBsZW5ndGggaXNzdWVzIHNvIGNoZGlyIGhlcmUgdG8gd29ya2Fyb3VuZAogICAgIGN3ZCA9IG9zLmdldGN3ZCgpCiAKLSAgICByZWFkZmQgPSB3cml0ZWZkID0gcmVhZGZkMSA9IHdyaXRlZmQxID0gcmVhZGZkMiA9IHdyaXRlZmQyID0gTm9uZQotICAgIGVxID0gY29tbWFuZF9jaGFuX3JlY3YgPSBjb21tYW5kX2NoYW4gPSBOb25lCi0KICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguZGlybmFtZShzb2NrbmFtZSkpCkBAIC00NjUsNiArNDYzLDkgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKIAorICAgICAgICByZWFkZmQgPSB3cml0ZWZkID0gcmVhZGZkMSA9IHdyaXRlZmQxID0gcmVhZGZkMiA9IHdyaXRlZmQyID0gTm9uZQorICAgICAgICBlcSA9IGNvbW1hbmRfY2hhbl9yZWN2ID0gY29tbWFuZF9jaGFuID0gTm9uZQorCiAgICAgICAgICMgU2VuZCBhbiBmZCBmb3IgdGhlIHJlbW90ZSB0byB3cml0ZSBldmVudHMgdG8KICAgICAgICAgcmVhZGZkLCB3cml0ZWZkID0gb3MucGlwZSgpCiAgICAgICAgIGVxID0gQkJVSUV2ZW50UXVldWUocmVhZGZkKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQppbmRleCA1ZWY4MmQ3Li5mZGJiMmEzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NpZ2dlbi5weQpAQCAtMTEwLDQyICsxMTAsMTMgQEAKICAgICAgICAgaWdub3JlX21pc21hdGNoID0gKChkLmdldFZhcigiQkJfSEFTSF9JR05PUkVfTUlTTUFUQ0giKSBvciAnJykgPT0gJzEnKQogICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKQogCi0gICAgICAgIHRhc2tkZXBzID0ge30KLSAgICAgICAgYmFzZWhhc2ggPSB7fQorICAgICAgICB0YXNrZGVwcywgYmFzZWhhc2ggPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY3lfaGFzaCh0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUsIHNlbGYuYmFzZXdoaXRlbGlzdCwgZm4pCiAKICAgICAgICAgZm9yIHRhc2sgaW4gdGFza2xpc3Q6Ci0gICAgICAgICAgICBkYXRhID0gbG9va3VwY2FjaGVbdGFza10KLQotICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJiLmVycm9yKCJUYXNrICVzIGZyb20gJXMgc2VlbXMgdG8gYmUgZW1wdHk/ISIgJSAodGFzaywgZm4pKQotICAgICAgICAgICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgICAgICBnZW5kZXBzW3Rhc2tdIC09IHNlbGYuYmFzZXdoaXRlbGlzdAotICAgICAgICAgICAgbmV3ZGVwcyA9IGdlbmRlcHNbdGFza10KLSAgICAgICAgICAgIHNlZW4gPSBzZXQoKQotICAgICAgICAgICAgd2hpbGUgbmV3ZGVwczoKLSAgICAgICAgICAgICAgICBuZXh0ZGVwcyA9IG5ld2RlcHMKLSAgICAgICAgICAgICAgICBzZWVuIHw9IG5leHRkZXBzCi0gICAgICAgICAgICAgICAgbmV3ZGVwcyA9IHNldCgpCi0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBuZXh0ZGVwczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZGVwIGluIHNlbGYuYmFzZXdoaXRlbGlzdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGdlbmRlcHNbZGVwXSAtPSBzZWxmLmJhc2V3aGl0ZWxpc3QKLSAgICAgICAgICAgICAgICAgICAgbmV3ZGVwcyB8PSBnZW5kZXBzW2RlcF0KLSAgICAgICAgICAgICAgICBuZXdkZXBzIC09IHNlZW4KLQotICAgICAgICAgICAgYWxsZGVwcyA9IHNvcnRlZChzZWVuKQotICAgICAgICAgICAgZm9yIGRlcCBpbiBhbGxkZXBzOgotICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgZGVwCi0gICAgICAgICAgICAgICAgdmFyID0gbG9va3VwY2FjaGVbZGVwXQotICAgICAgICAgICAgICAgIGlmIHZhciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzdHIodmFyKQotICAgICAgICAgICAgZGF0YWhhc2ggPSBoYXNobGliLm1kNShkYXRhLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAgICAgIGsgPSBmbiArICIuIiArIHRhc2sKLSAgICAgICAgICAgIGlmIG5vdCBpZ25vcmVfbWlzbWF0Y2ggYW5kIGsgaW4gc2VsZi5iYXNlaGFzaCBhbmQgc2VsZi5iYXNlaGFzaFtrXSAhPSBkYXRhaGFzaDoKLSAgICAgICAgICAgICAgICBiYi5lcnJvcigiV2hlbiByZXBhcnNpbmcgJXMsIHRoZSBiYXNlaGFzaCB2YWx1ZSBjaGFuZ2VkIGZyb20gJXMgdG8gJXMuIFRoZSBtZXRhZGF0YSBpcyBub3QgZGV0ZXJtaW5pc3RpYyBhbmQgdGhpcyBuZWVkcyB0byBiZSBmaXhlZC4iICUgKGssIHNlbGYuYmFzZWhhc2hba10sIGRhdGFoYXNoKSkKLSAgICAgICAgICAgIHNlbGYuYmFzZWhhc2hba10gPSBkYXRhaGFzaAotICAgICAgICAgICAgdGFza2RlcHNbdGFza10gPSBhbGxkZXBzCisgICAgICAgICAgICBpZiBub3QgaWdub3JlX21pc21hdGNoIGFuZCBrIGluIHNlbGYuYmFzZWhhc2ggYW5kIHNlbGYuYmFzZWhhc2hba10gIT0gYmFzZWhhc2hba106CisgICAgICAgICAgICAgICAgYmIuZXJyb3IoIldoZW4gcmVwYXJzaW5nICVzLCB0aGUgYmFzZWhhc2ggdmFsdWUgY2hhbmdlZCBmcm9tICVzIHRvICVzLiBUaGUgbWV0YWRhdGEgaXMgbm90IGRldGVybWluaXN0aWMgYW5kIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQuIiAlIChrLCBzZWxmLmJhc2VoYXNoW2tdLCBiYXNlaGFzaFtrXSkpCisgICAgICAgICAgICBzZWxmLmJhc2VoYXNoW2tdID0gYmFzZWhhc2hba10KIAogICAgICAgICBzZWxmLnRhc2tkZXBzW2ZuXSA9IHRhc2tkZXBzCiAgICAgICAgIHNlbGYuZ2VuZGVwc1tmbl0gPSBnZW5kZXBzCkBAIC0xOTMsMTkgKzE2NCwyOCBAQAogICAgICAgICByZXR1cm4gdGFpbnQKIAogICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgZm4sIHRhc2ssIGRlcHMsIGRhdGFDYWNoZSk6CisKKyAgICAgICAgbWMgPSAnJworICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCdtdWx0aWNvbmZpZzonKToKKyAgICAgICAgICAgIG1jID0gZm4uc3BsaXQoJzonKVsxXQogICAgICAgICBrID0gZm4gKyAiLiIgKyB0YXNrCisKICAgICAgICAgZGF0YSA9IGRhdGFDYWNoZS5iYXNldGFza2hhc2hba10KICAgICAgICAgc2VsZi5iYXNlaGFzaFtrXSA9IGRhdGEKICAgICAgICAgc2VsZi5ydW50YXNrZGVwc1trXSA9IFtdCiAgICAgICAgIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXNba10gPSBbXQogICAgICAgICByZWNpcGVuYW1lID0gZGF0YUNhY2hlLnBrZ19mbltmbl0KLQogICAgICAgICBmb3IgZGVwIGluIHNvcnRlZChkZXBzLCBrZXk9Y2xlYW5fYmFzZXBhdGgpOgotICAgICAgICAgICAgZGVwbmFtZSA9IGRhdGFDYWNoZS5wa2dfZm5bc2VsZi5wa2duYW1lZXh0cmFjdC5zZWFyY2goZGVwKS5ncm91cCgnZm4nKV0KKyAgICAgICAgICAgIHBrZ25hbWUgPSBzZWxmLnBrZ25hbWVleHRyYWN0LnNlYXJjaChkZXApLmdyb3VwKCdmbicpCisgICAgICAgICAgICBpZiBtYzoKKyAgICAgICAgICAgICAgICBkZXBtYyA9IHBrZ25hbWUuc3BsaXQoJzonKVsxXQorICAgICAgICAgICAgICAgIGlmIG1jICE9IGRlcG1jOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZGVwbmFtZSA9IGRhdGFDYWNoZS5wa2dfZm5bcGtnbmFtZV0KICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJ1bmRlcF9jaGVjayhmbiwgcmVjaXBlbmFtZSwgdGFzaywgZGVwLCBkZXBuYW1lLCBkYXRhQ2FjaGUpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYudGFza2hhc2g6Ci0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzIGlzIG5vdCBpbiB0YXNraGFzaCwgY2FsbGVyIGlzbid0IGNhbGxpbmcgaW4gZGVwZW5kZW5jeSBvcmRlcj8iLCBkZXApCisgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzIGlzIG5vdCBpbiB0YXNraGFzaCwgY2FsbGVyIGlzbid0IGNhbGxpbmcgaW4gZGVwZW5kZW5jeSBvcmRlcj8iICUgZGVwKQogICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnRhc2toYXNoW2RlcF0KICAgICAgICAgICAgIHNlbGYucnVudGFza2RlcHNba10uYXBwZW5kKGRlcCkKIApAQCAtMzQ3LDcgKzMyNyw3IEBACiAKICAgICBkZWYgc3RhbXBjbGVhbm1hc2soc2VsZiwgc3RhbXBiYXNlLCBmbiwgdGFza25hbWUsIGV4dHJhaW5mbyk6CiAgICAgICAgIHJldHVybiBzZWxmLnN0YW1wZmlsZShzdGFtcGJhc2UsIGZuLCB0YXNrbmFtZSwgZXh0cmFpbmZvLCBjbGVhbj1UcnVlKQotICAgICAgICAKKwogICAgIGRlZiBpbnZhbGlkYXRlX3Rhc2soc2VsZiwgdGFzaywgZCwgZm4pOgogICAgICAgICBiYi5ub3RlKCJUYWludGluZyBoYXNoIHRvIGZvcmNlIHJlYnVpbGQgb2YgdGFzayAlcywgJXMiICUgKGZuLCB0YXNrKSkKICAgICAgICAgYmIuYnVpbGQud3JpdGVfdGFpbnQodGFzaywgZCwgZm4pCkBAIC0zNjIsMTAgKzM0MiwxMCBAQAogZGVmIGluaXRfY29sb3JzKGVuYWJsZV9jb2xvcik6CiAgICAgIiIiSW5pdGlhbGlzZSBjb2xvdXIgZGljdCBmb3IgcGFzc2luZyB0byBjb21wYXJlX3NpZ2ZpbGVzKCkiIiIKICAgICAjIEZpcnN0IHNldCB1cCB0aGUgY29sb3VycwotICAgIGNvbG9ycyA9IHsnY29sb3JfdGl0bGUnOiAgICdcMDMzWzE7Mzc7NDBtJywKLSAgICAgICAgICAgICAgJ2NvbG9yX2RlZmF1bHQnOiAnXDAzM1swOzM3OzQwbScsCi0gICAgICAgICAgICAgICdjb2xvcl9hZGQnOiAgICAgJ1wwMzNbMTszMjs0MG0nLAotICAgICAgICAgICAgICAnY29sb3JfcmVtb3ZlJzogICdcMDMzWzE7MzE7NDBtJywKKyAgICBjb2xvcnMgPSB7J2NvbG9yX3RpdGxlJzogICAnXDAzM1sxbScsCisgICAgICAgICAgICAgICdjb2xvcl9kZWZhdWx0JzogJ1wwMzNbMG0nLAorICAgICAgICAgICAgICAnY29sb3JfYWRkJzogICAgICdcMDMzWzA7MzJtJywKKyAgICAgICAgICAgICAgJ2NvbG9yX3JlbW92ZSc6ICAnXDAzM1swOzMxbScsCiAgICAgICAgICAgICAgfQogICAgICMgTGVhdmUgYWxsIGtleXMgcHJlc2VudCBidXQgY2xlYXIgdGhlIHZhbHVlcwogICAgIGlmIG5vdCBlbmFibGVfY29sb3I6CkBAIC02MzYsNyArNjE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbGxhcHNlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQuZXh0ZW5kKHJlY291dCkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBhIGRlcGVuZGVudCBoYXNoIGNoYW5nZWQsIG1pZ2h0IGFzIHdlbGwgcHJpbnQgdGhlIGxpbmUgYWJvdmUgYW5kIHRoZW4gZGVmZXIgdG8gdGhlIGNoYW5nZXMgaW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBhIGRlcGVuZGVudCBoYXNoIGNoYW5nZWQsIG1pZ2h0IGFzIHdlbGwgcHJpbnQgdGhlIGxpbmUgYWJvdmUgYW5kIHRoZW4gZGVmZXIgdG8gdGhlIGNoYW5nZXMgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoYXQgaGFzaCBzaW5jZSBpbiBhbGwgbGlrZWx5aG9vZCwgdGhleSdyZSB0aGUgc2FtZSBjaGFuZ2VzIHRoaXMgdGFzayBhbHNvIHNhdy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBbb3V0cHV0Wy0xXV0gKyByZWNvdXQKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKaW5kZXggMGVhNmMwYi4uOTRlODIyYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CkBAIC03MCw2ICs3MCw4IEBACiAKICAgICAgICAgc2VsZi5za2lwbGlzdCA9IHNraXBsaXN0CiAKKyAgICAgICAgc2VsZi5tY2RlcGVuZHMgPSBbXQorCiAgICAgZGVmIGFkZF90YXNrcyhzZWxmLCBmbiwgZGF0YUNhY2hlKToKICAgICAgICAgIiIiCiAgICAgICAgIEFkZCB0YXNrcyBmb3IgYSBnaXZlbiBmbiB0byB0aGUgZGF0YWJhc2UKQEAgLTg4LDYgKzkwLDEzIEBACiAKICAgICAgICAgc2VsZi5hZGRfZXh0cmFfZGVwcyhmbiwgZGF0YUNhY2hlKQogCisgICAgICAgIGRlZiBhZGRfbWNkZXBlbmRzKHRhc2spOgorICAgICAgICAgICAgZm9yIGRlcCBpbiB0YXNrX2RlcHNbJ21jZGVwZW5kcyddW3Rhc2tdLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgaWYgbGVuKGRlcC5zcGxpdCgnOicpKSAhPSA1OgorICAgICAgICAgICAgICAgICAgICBiYi5tc2cuZmF0YWwoIlRhc2tEYXRhIiwgIkVycm9yIGZvciAlczolc1slc10sIG11bHRpY29uZmlnIGRlcGVuZGVuY3kgJXMgZG9lcyBub3QgY29udGFpbiBleGFjdGx5IGZvdXIgICc6JyBjaGFyYWN0ZXJzLlxuIFRhc2sgJyVzJyBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtICdtdWx0aWNvbmZpZzpmcm9tTUM6dG9NQzpwYWNrYWdlbmFtZTp0YXNrJyIgJSAoZm4sIHRhc2ssICdtY2RlcGVuZHMnLCBkZXAsICdtY2RlcGVuZHMnKSkKKyAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYubWNkZXBlbmRzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm1jZGVwZW5kcy5hcHBlbmQoZGVwKQorCiAgICAgICAgICMgQ29tbW9uIGNvZGUgZm9yIGRlcF9uYW1lL2RlcGVuZHMgPSAnZGVwZW5kcycvaWRlcGVuZHMgYW5kICdyZGVwZW5kcycvaXJkZXBlbmRzCiAgICAgICAgIGRlZiBoYW5kbGVfZGVwcyh0YXNrLCBkZXBfbmFtZSwgZGVwZW5kcywgc2Vlbik6CiAgICAgICAgICAgICBpZiBkZXBfbmFtZSBpbiB0YXNrX2RlcHMgYW5kIHRhc2sgaW4gdGFza19kZXBzW2RlcF9uYW1lXToKQEAgLTExMCwxNiArMTE5LDIwIEBACiAgICAgICAgICAgICBwYXJlbnRpZHMgPSBbXQogICAgICAgICAgICAgZm9yIGRlcCBpbiB0YXNrX2RlcHNbJ3BhcmVudHMnXVt0YXNrXToKICAgICAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHRhc2tfZGVwc1sndGFza3MnXToKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIk5vdCBhZGRpbmcgZGVwZW5kZW55IG9mICVzIG9uICVzIHNpbmNlICVzIGRvZXMgbm90IGV4aXN0IiAlICh0YXNrLCBkZXAsIGRlcCkpCisgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJOb3QgYWRkaW5nIGRlcGVuZGVuY3kgb2YgJXMgb24gJXMgc2luY2UgJXMgZG9lcyBub3QgZXhpc3QiICUgKHRhc2ssIGRlcCwgZGVwKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBwYXJlbnRpZCA9ICIlczolcyIgJSAoZm4sIGRlcCkKICAgICAgICAgICAgICAgICBwYXJlbnRpZHMuYXBwZW5kKHBhcmVudGlkKQogICAgICAgICAgICAgc2VsZi50YXNrZW50cmllc1t0aWRdLnRkZXBlbmRzLmV4dGVuZChwYXJlbnRpZHMpCiAKKwogICAgICAgICAgICAgIyBUb3VjaCBhbGwgaW50ZXJ0YXNrIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgaGFuZGxlX2RlcHModGFzaywgJ2RlcGVuZHMnLCBzZWxmLnRhc2tlbnRyaWVzW3RpZF0uaWRlcGVuZHMsIHNlbGYuc2Vlbl9idWlsZF90YXJnZXQpCiAgICAgICAgICAgICBoYW5kbGVfZGVwcyh0YXNrLCAncmRlcGVuZHMnLCBzZWxmLnRhc2tlbnRyaWVzW3RpZF0uaXJkZXBlbmRzLCBzZWxmLnNlZW5fcnVuX3RhcmdldCkKIAorICAgICAgICAgICAgaWYgJ21jZGVwZW5kcycgaW4gdGFza19kZXBzIGFuZCB0YXNrIGluIHRhc2tfZGVwc1snbWNkZXBlbmRzJ106CisgICAgICAgICAgICAgICAgYWRkX21jZGVwZW5kcyh0YXNrKQorCiAgICAgICAgICMgV29yayBvdXQgYnVpbGQgZGVwZW5kZW5jaWVzCiAgICAgICAgIGlmIG5vdCBmbiBpbiBzZWxmLmRlcGlkczoKICAgICAgICAgICAgIGRlcGVuZGlkcyA9IHNldCgpCkBAIC01MzcsNiArNTUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJvdm1hcFtuYW1lXSA9IHByb3ZpZGVyWzBdCiAgICAgICAgIHJldHVybiBwcm92bWFwCiAKKyAgICBkZWYgZ2V0X21jZGVwZW5kcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWNkZXBlbmRzCisKICAgICBkZWYgZHVtcF9kYXRhKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgRHVtcCBzb21lIGRlYnVnIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9jb29rZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmI0NDIzNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgZXg6dHM9NDpzdz00OnN0cz00OmV0CisjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCisjCisjIEJpdEJha2UgVGVzdHMgZm9yIGNvb2tlci5weQorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyMKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IGJiLCBiYi5jb29rZXIKK2ltcG9ydCByZQoraW1wb3J0IGxvZ2dpbmcKKworIyBDb29rZXIgdGVzdHMKK2NsYXNzIENvb2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBBdCBsZWFzdCBvbmUgdmFyaWFibGUgbmVlZHMgdG8gYmUgc2V0CisgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCisgICAgICAgIHRvcGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpLCAidGVzdGRhdGEvY29va2VyIikKKyAgICAgICAgc2VsZi5kLnNldFZhcignVE9QRElSJywgdG9wZGlyKQorCisgICAgZGVmIHRlc3RfQ29va2VyQ29sbGVjdEZpbGVzX3N1YmxheWVycyhzZWxmKToKKyAgICAgICAgJycnVGVzdCB0aGF0IGEgc3VibGF5ZXIgb2YgYW4gZXhpc3RpbmcgbGF5ZXIgZG9lcyBub3QgdHJpZ2dlcgorICAgICAgICAgICBObyBiYiBmaWxlcyBtYXRjaGVkIC4uLicnJworCisgICAgICAgIGRlZiBhcHBlbmRfY29sbGVjdGlvbih0b3BkaXIsIHBhdGgsIGQpOgorICAgICAgICAgICAgY29sbGVjdGlvbiA9IHBhdGguc3BsaXQoJy8nKVstMV0KKyAgICAgICAgICAgIHBhdHRlcm4gPSAiXiIgKyB0b3BkaXIgKyAiLyIgKyBwYXRoICsgIi8iCisgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocGF0dGVybikKKyAgICAgICAgICAgIHByaW9yaXR5ID0gNQorCisgICAgICAgICAgICBkLnNldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJywgKGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKSBvciAiIikgKyAiICIgKyBjb2xsZWN0aW9uKQorICAgICAgICAgICAgZC5zZXRWYXIoJ0JCRklMRV9QQVRURVJOXyVzJyAlIChjb2xsZWN0aW9uKSwgcGF0dGVybikKKyAgICAgICAgICAgIGQuc2V0VmFyKCdCQkZJTEVfUFJJT1JJVFlfJXMnICUgKGNvbGxlY3Rpb24pLCBwcmlvcml0eSkKKworICAgICAgICAgICAgcmV0dXJuIChjb2xsZWN0aW9uLCBwYXR0ZXJuLCByZWdleCwgcHJpb3JpdHkpCisKKyAgICAgICAgdG9wZGlyID0gc2VsZi5kLmdldFZhcigiVE9QRElSIikKKworICAgICAgICAjIFByaW9yaXRpZXM6IGxpc3Qgb2YgKGNvbGxlY3Rpb24sIHBhdHRlcm4sIHJlZ2V4LCBwcmlvcml0eSkKKyAgICAgICAgYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzID0gW10KKyAgICAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgZm9yIHRoaXMgdGVzdCwgc2hvcnRlc3QgdG8gbG9uZ2VzdCBpcyB0eXBpY2FsIGZhaWx1cmUgY2FzZQorICAgICAgICBiYmZpbGVfY29uZmlnX3ByaW9yaXRpZXMuYXBwZW5kKCBhcHBlbmRfY29sbGVjdGlvbih0b3BkaXIsICdmaXJzdCcsIHNlbGYuZCkgKQorICAgICAgICBiYmZpbGVfY29uZmlnX3ByaW9yaXRpZXMuYXBwZW5kKCBhcHBlbmRfY29sbGVjdGlvbih0b3BkaXIsICdzZWNvbmQnLCBzZWxmLmQpICkKKyAgICAgICAgYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzLmFwcGVuZCggYXBwZW5kX2NvbGxlY3Rpb24odG9wZGlyLCAnc2Vjb25kL3RoaXJkJywgc2VsZi5kKSApCisKKyAgICAgICAgcGtnZm5zID0gWyB0b3BkaXIgKyAnL2ZpcnN0L3JlY2lwZXMvc2FtcGxlMV8xLjAuYmInLAorICAgICAgICAgICAgICAgICAgIHRvcGRpciArICcvc2Vjb25kL3JlY2lwZXMvc2FtcGxlMl8xLjAuYmInLAorICAgICAgICAgICAgICAgICAgIHRvcGRpciArICcvc2Vjb25kL3RoaXJkL3JlY2lwZXMvc2FtcGxlM18xLjAuYmInIF0KKworICAgICAgICBjbGFzcyBMb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dkYXRhID0gW10KKworICAgICAgICAgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2RhdGEuYXBwZW5kKHJlY29yZC5nZXRNZXNzYWdlKCkpCisKKyAgICAgICAgIyBNb3ZlIGNvb2tlciB0byB1c2UgbXkgc3BlY2lhbCBsb2dnaW5nCisgICAgICAgIGxvZ2dlciA9IGJiLmNvb2tlci5sb2dnZXIKKyAgICAgICAgbG9nX2hhbmRsZXIgPSBMb2dIYW5kbGVyKCkKKyAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIobG9nX2hhbmRsZXIpCisgICAgICAgIGNvbGxlY3Rpb24gPSBiYi5jb29rZXIuQ29va2VyQ29sbGVjdEZpbGVzKGJiZmlsZV9jb25maWdfcHJpb3JpdGllcykKKyAgICAgICAgY29sbGVjdGlvbi5jb2xsZWN0aW9uX3ByaW9yaXRpZXMocGtnZm5zLCBzZWxmLmQpCisgICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGxvZ19oYW5kbGVyKQorCisgICAgICAgICMgU2hvdWxkIGJlIGVtcHR5IChubyBnZW5lcmF0ZWQgbWVzc2FnZXMpCisgICAgICAgIGV4cGVjdGVkID0gW10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ19oYW5kbGVyLmxvZ2RhdGEsIGV4cGVjdGVkKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5CmluZGV4IGE0YTlkZDMuLmRiM2UyMDEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2RhdGEucHkKQEAgLTI4MSw3ICsyODEsNyBAQAogICAgIGRlZiB0ZXN0X3JlbW92ZShzZWxmKToKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVCIsICIke1ZBTH0gJHtCQVJ9IikKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVF9yZW1vdmUiLCAidmFsIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmQuZ2V0VmFyKCJURVNUIiksICJiYXIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIiBiYXIiKQogCiAgICAgZGVmIHRlc3RfcmVtb3ZlX2NsZWFyZWQoc2VsZik6CiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1QiLCAiJHtWQUx9ICR7QkFSfSIpCkBAIC0zMDAsNyArMzAwLDcgQEAKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVCIsICIke1ZBTH0gJHtCQVJ9IikKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVF9yZW1vdmUiLCAidmFsIikKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVF9URVNUIiwgIiR7VEVTVH0gJHtURVNUfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kLmdldFZhcigiVEVTVF9URVNUIiksICJiYXIgYmFyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmQuZ2V0VmFyKCJURVNUX1RFU1QiKSwgIiBiYXIgIGJhciIpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9yZW1vdmUoc2VsZik6CiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1QiLCAiIikKQEAgLTMxMSwxMyArMzExLDI1IEBACiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJBUiIsICJaIikKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVCIsICIke0JBUn0vWCBZIikKICAgICAgICAgc2VsZi5kLnNldFZhcigiVEVTVF9yZW1vdmUiLCAiJHtCQVJ9L1giKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIlkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIiBZIikKIAogICAgIGRlZiB0ZXN0X3JlbW92ZV9leHBhbnNpb25faXRlbXMoc2VsZik6CiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1QiLCAiQSBCIEMgRCIpCiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIkJBUiIsICJCIEQiKQogICAgICAgICBzZWxmLmQuc2V0VmFyKCJURVNUX3JlbW92ZSIsICIke0JBUn0iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIkEgQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kLmdldFZhcigiVEVTVCIpLCAiQSAgQyAiKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX3ByZXNlcnZlX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgICMgV2hlbiB0aGUgcmVtb3ZhbCBpc24ndCBhY3RpdmUsIHRoZSBvcmlnaW5hbCB2YWx1ZSBzaG91bGQgYmUgcHJlc2VydmVkCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1QiLCAiIEEgQiIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1RfcmVtb3ZlIiwgIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIiBBIEIiKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX3ByZXNlcnZlX3doaXRlc3BhY2UyKHNlbGYpOgorICAgICAgICAjIFdoZW4gdGhlIHJlbW92YWwgaXMgYWN0aXZlIHByZXNlcnZlIHRoZSB3aGl0ZXNwYWNlCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1QiLCAiIEEgQiIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1RfcmVtb3ZlIiwgIkIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIiBBICIpCiAKIGNsYXNzIFRlc3RPdmVycmlkZXModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTM3NCw2ICszODYsMTUgQEAKICAgICAgICAgc2VsZi5kLnNldFZhcigiT1ZFUlJJREVTIiwgImZvbzpiYXI6c29tZV92YWwiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgInRlc3R2YWx1ZTMiKQogCisgICAgZGVmIHRlc3RfcmVtb3ZlX3dpdGhfb3ZlcnJpZGUoc2VsZik6CisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1RfYmFyIiwgInRlc3R2YWx1ZTIiKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJURVNUX3NvbWVfdmFsIiwgInRlc3R2YWx1ZTMgdGVzdHZhbHVlNSIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlRFU1Rfc29tZV92YWxfcmVtb3ZlIiwgInRlc3R2YWx1ZTMiKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCJURVNUX2ZvbyIsICJ0ZXN0dmFsdWU0IikKKyAgICAgICAgc2VsZi5kLnNldFZhcigiT1ZFUlJJREVTIiwgImZvbzpiYXI6c29tZV92YWwiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5nZXRWYXIoIlRFU1QiKSwgIiB0ZXN0dmFsdWU1IikKKworCiBjbGFzcyBUZXN0S2V5RXhwYW5zaW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCkBAIC00NDMsNiArNDY0LDU0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmIudXRpbHMuY29udGFpbnNfYW55KCJTT01FRkxBRyIsICJ4IHkgeiIsIFRydWUsIEZhbHNlLCBzZWxmLmQpKQogCiAKK2NsYXNzIFRhc2tIYXNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90YXNraGFzaGVzKHNlbGYpOgorICAgICAgICBkZWYgZ2V0dGFza19iYXNoaGFzaCh0YXNrbmFtZSwgZCk6CisgICAgICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKQorICAgICAgICAgICAgdGFza2RlcHMsIGJhc2VoYXNoID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmN5X2hhc2godGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlLCBzZXQoKSwgInNvbWVmaWxlIikKKyAgICAgICAgICAgIGJiLndhcm4oc3RyKGxvb2t1cGNhY2hlKSkKKyAgICAgICAgICAgIHJldHVybiBiYXNlaGFzaFsic29tZWZpbGUuIiArIHRhc2tuYW1lXQorCisgICAgICAgIGQgPSBiYi5kYXRhLmluaXQoKQorICAgICAgICBkLnNldFZhcigiX19CQlRBU0tTIiwgWyJteXRhc2siXSkKKyAgICAgICAgZC5zZXRWYXIoIl9fZXhwb3J0bGlzdCIsIFtdKQorICAgICAgICBkLnNldFZhcigibXl0YXNrIiwgIiR7TVlDT01NQU5EfSIpCisgICAgICAgIGQuc2V0VmFyKCJNWUNPTU1BTkQiLCAiJHtWQVJ9OyBmb287IGJhcjsgZXhpdCAwIikKKyAgICAgICAgZC5zZXRWYXIoIlZBUiIsICJ2YWwiKQorICAgICAgICBvcmlnaGFzaCA9IGdldHRhc2tfYmFzaGhhc2goIm15dGFzayIsIGQpCisKKyAgICAgICAgIyBDaGFuZ2luZyBhIHZhcmlhYmxlIHNob3VsZCBjaGFuZ2UgdGhlIGhhc2gKKyAgICAgICAgZC5zZXRWYXIoIlZBUiIsICJ2YWwyIikKKyAgICAgICAgbmV4dGhhc2ggPSBnZXR0YXNrX2Jhc2hoYXNoKCJteXRhc2siLCBkKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdoYXNoLCBuZXh0aGFzaCkKKworICAgICAgICBkLnNldFZhcigiVkFSIiwgInZhbCIpCisgICAgICAgICMgQWRkaW5nIGFuIGluYWN0aXZlIHJlbW92YWwgc2hvdWxkbid0IGNoYW5nZSB0aGUgaGFzaAorICAgICAgICBkLnNldFZhcigiQkFSIiwgIm5vdGJhciIpCisgICAgICAgIGQuc2V0VmFyKCJNWUNPTU1BTkRfcmVtb3ZlIiwgIiR7QkFSfSIpCisgICAgICAgIG5leHRoYXNoID0gZ2V0dGFza19iYXNoaGFzaCgibXl0YXNrIiwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnaGFzaCwgbmV4dGhhc2gpCisKKyAgICAgICAgIyBBZGRpbmcgYW4gYWN0aXZlIHJlbW92YWwgc2hvdWxkIGNoYW5nZSB0aGUgaGFzaAorICAgICAgICBkLnNldFZhcigiQkFSIiwgImJhcjsiKQorICAgICAgICBuZXh0aGFzaCA9IGdldHRhc2tfYmFzaGhhc2goIm15dGFzayIsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ2hhc2gsIG5leHRoYXNoKQorCisgICAgICAgICMgU2V0dXAgYW4gaW5hY3RpdmUgY29udGFpbnMoKQorICAgICAgICBkLnNldFZhcigiVkFSIiwgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdWQVIyJywgJ0EnLCAndmFsJywgJycsIGQpfSIpCisgICAgICAgIG9yaWdoYXNoID0gZ2V0dGFza19iYXNoaGFzaCgibXl0YXNrIiwgZCkKKworICAgICAgICAjIEFjdGl2YXRlIHRoZSBjb250YWlucygpIGFuZCB0aGUgaGFzaCBzaG91bGQgY2hhbmdlCisgICAgICAgIGQuc2V0VmFyKCJWQVIyIiwgIkEiKQorICAgICAgICBuZXh0aGFzaCA9IGdldHRhc2tfYmFzaGhhc2goIm15dGFzayIsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3JpZ2hhc2gsIG5leHRoYXNoKQorCisgICAgICAgICMgVGhlIGNvbnRhaW5zIHNob3VsZCBiZSBpbmFjdGl2ZSBidXQgZXZlbiB0aG91Z2ggVkFSMiBoYXMgYQorICAgICAgICAjIGRpZmZlcmVudCB2YWx1ZSB0aGUgaGFzaCBzaG91bGQgbWF0Y2ggdGhlIG9yaWdpbmFsCisgICAgICAgIGQuc2V0VmFyKCJWQVIyIiwgIkIiKQorICAgICAgICBuZXh0aGFzaCA9IGdldHRhc2tfYmFzaGhhc2goIm15dGFzayIsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JpZ2hhc2gsIG5leHRoYXNoKQorCiBjbGFzcyBTZXJpYWxpemUodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc2VyaWFsaXplKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKaW5kZXggNjhlYjM4OC4uNjg0ODA5NSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CkBAIC00MDIsNiArNDAyLDEyIEBACiAgICAgICAgICAgICA6ICJnaXQ6Ly9zb21ld2hlcmUub3JnL3NvbWVkaXIvbXRkLXV0aWxzLmdpdDt0YWc9MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDtwcm90b2NvbD1odHRwIiwgCiAgICAgICAgICgiZ2l0Oi8vZ2l0LmludmFsaWQuaW5mcmFkZWFkLm9yZy9mb28vbXRkLXV0aWxzLmdpdDt0YWc9MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MCIsICJnaXQ6Ly8uKi8uKiIsICJnaXQ6Ly9zb21ld2hlcmUub3JnL3NvbWVkaXIvTUlSUk9STkFNRTtwcm90b2NvbD1odHRwIikgCiAgICAgICAgICAgICA6ICJnaXQ6Ly9zb21ld2hlcmUub3JnL3NvbWVkaXIvZ2l0LmludmFsaWQuaW5mcmFkZWFkLm9yZy5mb28ubXRkLXV0aWxzLmdpdDt0YWc9MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDtwcm90b2NvbD1odHRwIiwgCisgICAgICAgICgiaHR0cDovL3NvbWV3aGVyZS5vcmcvc29tZWRpcjEvc29tZWRpcjIvc29tZWZpbGVfMS4yLjMudGFyLmd6IiwgImh0dHA6Ly8uKi8uKiIsICJodHRwOi8vc29tZXdoZXJlMi5vcmciKQorICAgICAgICAgICAgOiAiaHR0cDovL3NvbWV3aGVyZTIub3JnL3NvbWVmaWxlXzEuMi4zLnRhci5neiIsCisgICAgICAgICgiaHR0cDovL3NvbWV3aGVyZS5vcmcvc29tZWRpcjEvc29tZWRpcjIvc29tZWZpbGVfMS4yLjMudGFyLmd6IiwgImh0dHA6Ly8uKi8uKiIsICJodHRwOi8vc29tZXdoZXJlMi5vcmcvIikKKyAgICAgICAgICAgIDogImh0dHA6Ly9zb21ld2hlcmUyLm9yZy9zb21lZmlsZV8xLjIuMy50YXIuZ3oiLAorICAgICAgICAoImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2U7dGFnPTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTA7YnJhbmNoPW1hc3RlciIsICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlO2JyYW5jaD1tYXN0ZXIiLCAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZTtwcm90b2NvbD1odHRwIikKKyAgICAgICAgICAgIDogImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2U7dGFnPTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTA7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1odHRwIiwKIAogICAgICAgICAjUmVuYW1pbmcgZmlsZXMgZG9lc24ndCB3b3JrCiAgICAgICAgICMoImh0dHA6Ly9zb21ld2hlcmUub3JnL3NvbWVkaXIxL3NvbWVmaWxlXzEuMi4zLnRhci5neiIsICJodHRwOi8vc29tZXdoZXJlLm9yZy9zb21lZGlyMS9zb21lZmlsZV8xLjIuMy50YXIuZ3oiLCAiaHR0cDovL3NvbWV3aGVyZTIub3JnL3NvbWVkaXIzL3NvbWVmaWxlXzIuMy40LnRhci5neiIpIDogImh0dHA6Ly9zb21ld2hlcmUyLm9yZy9zb21lZGlyMy9zb21lZmlsZV8yLjMuNC50YXIuZ3oiCkBAIC00NTcsNiArNDYzLDEyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9CQkJCL0IvQi9CL2JpdGJha2UvYml0YmFrZS0xLjAudGFyLmd6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly9BQUFBL0EvQS9BL0IvQi9iaXRiYWtlL2JpdGJha2UtMS4wLnRhci5neiddKQogCisKK2NsYXNzIEdpdERvd25sb2FkRGlyZWN0b3J5TmFtaW5nVGVzdChGZXRjaGVyVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihHaXREb3dubG9hZERpcmVjdG9yeU5hbWluZ1Rlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5yZWNpcGVfdXJsID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCisgICAgICAgIHNlbGYucmVjaXBlX2RpciA9ICJnaXQub3BlbmVtYmVkZGVkLm9yZy5iaXRiYWtlIgorICAgICAgICBzZWxmLm1pcnJvcl91cmwgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuZW1iZWRkZWQvYml0YmFrZS5naXQiCisgICAgICAgIHNlbGYubWlycm9yX2RpciA9ICJnaXRodWIuY29tLm9wZW5lbWJlZGRlZC5iaXRiYWtlLmdpdCIKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdTUkNSRVYnLCAnODJlYTczN2EwYjQyYThiNTNlMTFjOWNkZTE0MWU5ZTljMGJkOGM0MCcpCisKKyAgICBkZWYgc2V0dXBfbWlycm9yX3Jld3JpdGUoc2VsZik6CisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCBzZWxmLnJlY2lwZV91cmwgKyAiICIgKyBzZWxmLm1pcnJvcl91cmwgKyAiIFxuIikKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X3RoYXRfZGlyZWN0b3J5X2lzX25hbWVkX2FmdGVyX3JlY2lwZV91cmxfd2hlbl9ub19taXJyb3JpbmdfaXNfdXNlZChzZWxmKToKKyAgICAgICAgc2VsZi5zZXR1cF9taXJyb3JfcmV3cml0ZSgpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbc2VsZi5yZWNpcGVfdXJsXSwgc2VsZi5kKQorCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorCisgICAgICAgIGRpciA9IG9zLmxpc3RkaXIoc2VsZi5kbGRpciArICIvZ2l0MiIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZWNpcGVfZGlyLCBkaXIpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF90aGF0X2RpcmVjdG9yeV9leGlzdHNfZm9yX21pcnJvcmVkX3VybF9hbmRfcmVjaXBlX3VybF93aGVuX21pcnJvcmluZ19pc191c2VkKHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwX21pcnJvcl9yZXdyaXRlKCkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFtzZWxmLnJlY2lwZV91cmxdLCBzZWxmLmQpCisKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICAgICAgZGlyID0gb3MubGlzdGRpcihzZWxmLmRsZGlyICsgIi9naXQyIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLm1pcnJvcl9kaXIsIGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlY2lwZV9kaXIsIGRpcikKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X3RoYXRfcmVjaXBlX2RpcmVjdG9yeV9hbmRfbWlycm9yZWRfZGlyZWN0b3J5X2V4aXN0c193aGVuX21pcnJvcmluZ19pc191c2VkX2FuZF90aGVfbWlycm9yZWRfZGlyZWN0b3J5X2FscmVhZHlfZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwX21pcnJvcl9yZXdyaXRlKCkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFtzZWxmLm1pcnJvcl91cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3NlbGYucmVjaXBlX3VybF0sIHNlbGYuZCkKKworICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgICAgICBkaXIgPSBvcy5saXN0ZGlyKHNlbGYuZGxkaXIgKyAiL2dpdDIiKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubWlycm9yX2RpciwgZGlyKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYucmVjaXBlX2RpciwgZGlyKQorCisKK2NsYXNzIFRhcmJhbGxOYW1pbmdUZXN0KEZldGNoZXJUZXN0KToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRhcmJhbGxOYW1pbmdUZXN0LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYucmVjaXBlX3VybCA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIgorICAgICAgICBzZWxmLnJlY2lwZV90YXJiYWxsID0gImdpdDJfZ2l0Lm9wZW5lbWJlZGRlZC5vcmcuYml0YmFrZS50YXIuZ3oiCisgICAgICAgIHNlbGYubWlycm9yX3VybCA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9iaXRiYWtlLmdpdCIKKyAgICAgICAgc2VsZi5taXJyb3JfdGFyYmFsbCA9ICJnaXQyX2dpdGh1Yi5jb20ub3BlbmVtYmVkZGVkLmJpdGJha2UuZ2l0LnRhci5neiIKKworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMnLCAnMScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVicsICc4MmVhNzM3YTBiNDJhOGI1M2UxMWM5Y2RlMTQxZTllOWMwYmQ4YzQwJykKKworICAgIGRlZiBzZXR1cF9taXJyb3JfcmV3cml0ZShzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsIHNlbGYucmVjaXBlX3VybCArICIgIiArIHNlbGYubWlycm9yX3VybCArICIgXG4iKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfdGhhdF90aGVfcmVjaXBlX3RhcmJhbGxfaXNfY3JlYXRlZF93aGVuX25vX21pcnJvcmluZ19pc191c2VkKHNlbGYpOgorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3NlbGYucmVjaXBlX3VybF0sIHNlbGYuZCkKKworICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgICAgICBkaXIgPSBvcy5saXN0ZGlyKHNlbGYuZGxkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZWNpcGVfdGFyYmFsbCwgZGlyKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfdGhhdF90aGVfbWlycm9yX3RhcmJhbGxfaXNfY3JlYXRlZF93aGVuX21pcnJvcmluZ19pc191c2VkKHNlbGYpOgorICAgICAgICBzZWxmLnNldHVwX21pcnJvcl9yZXdyaXRlKCkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFtzZWxmLnJlY2lwZV91cmxdLCBzZWxmLmQpCisKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICAgICAgZGlyID0gb3MubGlzdGRpcihzZWxmLmRsZGlyKQorICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubWlycm9yX3RhcmJhbGwsIGRpcikKKworCitjbGFzcyBHaXRTaGFsbG93VGFyYmFsbE5hbWluZ1Rlc3QoRmV0Y2hlclRlc3QpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoR2l0U2hhbGxvd1RhcmJhbGxOYW1pbmdUZXN0LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYucmVjaXBlX3VybCA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIgorICAgICAgICBzZWxmLnJlY2lwZV90YXJiYWxsID0gImdpdHNoYWxsb3dfZ2l0Lm9wZW5lbWJlZGRlZC5vcmcuYml0YmFrZV84MmVhNzM3LTFfbWFzdGVyLnRhci5neiIKKyAgICAgICAgc2VsZi5taXJyb3JfdXJsID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbmVtYmVkZGVkL2JpdGJha2UuZ2l0IgorICAgICAgICBzZWxmLm1pcnJvcl90YXJiYWxsID0gImdpdHNoYWxsb3dfZ2l0aHViLmNvbS5vcGVuZW1iZWRkZWQuYml0YmFrZS5naXRfODJlYTczNy0xX21hc3Rlci50YXIuZ3oiCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0lUX1NIQUxMT1cnLCAnMScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0dFTkVSQVRFX1NIQUxMT1dfVEFSQkFMTFMnLCAnMScpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1NSQ1JFVicsICc4MmVhNzM3YTBiNDJhOGI1M2UxMWM5Y2RlMTQxZTllOWMwYmQ4YzQwJykKKworICAgIGRlZiBzZXR1cF9taXJyb3JfcmV3cml0ZShzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcigiUFJFTUlSUk9SUyIsIHNlbGYucmVjaXBlX3VybCArICIgIiArIHNlbGYubWlycm9yX3VybCArICIgXG4iKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfdGhhdF90aGVfdGFyYmFsbF9pc19uYW1lZF9hZnRlcl9yZWNpcGVfdXJsX3doZW5fbm9fbWlycm9yaW5nX2lzX3VzZWQoc2VsZik6CisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbc2VsZi5yZWNpcGVfdXJsXSwgc2VsZi5kKQorCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorCisgICAgICAgIGRpciA9IG9zLmxpc3RkaXIoc2VsZi5kbGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlY2lwZV90YXJiYWxsLCBkaXIpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF90aGF0X3RoZV9taXJyb3JfdGFyYmFsbF9pc19jcmVhdGVkX3doZW5fbWlycm9yaW5nX2lzX3VzZWQoc2VsZik6CisgICAgICAgIHNlbGYuc2V0dXBfbWlycm9yX3Jld3JpdGUoKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3NlbGYucmVjaXBlX3VybF0sIHNlbGYuZCkKKworICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKworICAgICAgICBkaXIgPSBvcy5saXN0ZGlyKHNlbGYuZGxkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5taXJyb3JfdGFyYmFsbCwgZGlyKQorCisKIGNsYXNzIEZldGNoZXJMb2NhbFRlc3QoRmV0Y2hlclRlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgZGVmIHRvdWNoKGZuKToKQEAgLTc0NSwyNyArODY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoLlBhcmFtZXRlckVycm9yLCBzZWxmLmdpdGZldGNoZXIsIHVybCwgdXJsKQogCiAgICAgQHNraXBJZk5vTmV0d29yaygpCi0gICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfcHJlbWlycm9yKHNlbGYpOgotICAgICAgICB1cmwxID0gImdpdDovL2dpdC5vcGVuZW1iZWRkZWQub3JnL2JpdGJha2UiCi0gICAgICAgIHVybDIgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKKyAgICBkZWYgdGVzdF9naXRmZXRjaF9maW5kc19sb2NhbF90YXJiYWxsX2Zvcl9taXJyb3JlZF91cmxfd2hlbl9wcmV2aW91c19kb3dubG9hZGVkX2J5X3RoZV9yZWNpcGVfdXJsKHNlbGYpOgorICAgICAgICByZWNpcGV1cmwgPSAiZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvYml0YmFrZSIKKyAgICAgICAgbWlycm9ydXJsID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKLSAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihyZWNpcGV1cmwsIG1pcnJvcnVybCkKIAogICAgIEBza2lwSWZOb05ldHdvcmsoKQotICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjIoc2VsZik6Ci0gICAgICAgIHVybDEgPSB1cmwyID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfZmluZHNfbG9jYWxfdGFyYmFsbF93aGVuX3ByZXZpb3VzX2Rvd25sb2FkZWRfZnJvbV9hX3ByZW1pcnJvcihzZWxmKToKKyAgICAgICAgcmVjaXBldXJsID0gImdpdDovL3NvbWVzZXJ2ZXIub3JnL2JpdGJha2UiCiAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSBnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIFxuIikKLSAgICAgICAgc2VsZi5naXRmZXRjaGVyKHVybDEsIHVybDIpCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihyZWNpcGV1cmwsIHJlY2lwZXVybCkKIAogICAgIEBza2lwSWZOb05ldHdvcmsoKQotICAgIGRlZiB0ZXN0X2dpdGZldGNoX3ByZW1pcnJvcjMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2l0ZmV0Y2hfZmluZHNfbG9jYWxfcmVwb3NpdG9yeV93aGVuX3ByZW1pcnJvcl9yZXdyaXRlc190aGVfcmVjaXBlX3VybChzZWxmKToKICAgICAgICAgcmVhbHVybCA9ICJnaXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlIgotICAgICAgICBkdW1teXVybCA9ICJnaXQ6Ly9zb21lc2VydmVyLm9yZy9iaXRiYWtlIgorICAgICAgICByZWNpcGV1cmwgPSAiZ2l0Oi8vc29tZXNlcnZlci5vcmcvYml0YmFrZSIKICAgICAgICAgc2VsZi5zb3VyY2VkaXIgPSBzZWxmLnVucGFja2Rpci5yZXBsYWNlKCJ1bnBhY2tlZCIsICJzb3VyY2VtaXJyb3IuZ2l0IikKICAgICAgICAgb3MuY2hkaXIoc2VsZi50ZW1wZGlyKQogICAgICAgICBiYi5wcm9jZXNzLnJ1bigiZ2l0IGNsb25lICVzICVzIDI+IC9kZXYvbnVsbCIgJSAocmVhbHVybCwgc2VsZi5zb3VyY2VkaXIpLCBzaGVsbD1UcnVlKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCJQUkVNSVJST1JTIiwgIiVzIGdpdDovLyVzO3Byb3RvY29sPWZpbGUgXG4iICUgKGR1bW15dXJsLCBzZWxmLnNvdXJjZWRpcikpCi0gICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihkdW1teXVybCwgZHVtbXl1cmwpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBSRU1JUlJPUlMiLCAiJXMgZ2l0Oi8vJXM7cHJvdG9jb2w9ZmlsZSBcbiIgJSAocmVjaXBldXJsLCBzZWxmLnNvdXJjZWRpcikpCisgICAgICAgIHNlbGYuZ2l0ZmV0Y2hlcihyZWNpcGV1cmwsIHJlY2lwZXVybCkKIAogICAgIEBza2lwSWZOb05ldHdvcmsoKQogICAgIGRlZiB0ZXN0X2dpdF9zdWJtb2R1bGUoc2VsZik6CkBAIC04MzIsNyArOTU2LDcgQEAKICAgICAjIGRlY29kZXVybCBhbmQgd2UgbmVlZCB0byBoYW5kbGUgdGhlbQogICAgIGRlY29kZWRhdGEgPSBkYXRhdGFibGUuY29weSgpCiAgICAgZGVjb2RlZGF0YS51cGRhdGUoewotICAgICAgICJodHRwOi8vc29tZXNpdGUubmV0O3NvbWVwYXJhbT0xIjogKCdodHRwJywgJ3NvbWVzaXRlLm5ldCcsICcnLCAnJywgJycsIHsnc29tZXBhcmFtJzogJzEnfSksCisgICAgICAgImh0dHA6Ly9zb21lc2l0ZS5uZXQ7c29tZXBhcmFtPTEiOiAoJ2h0dHAnLCAnc29tZXNpdGUubmV0JywgJy8nLCAnJywgJycsIHsnc29tZXBhcmFtJzogJzEnfSksCiAgICAgfSkKIAogICAgIGRlZiB0ZXN0X2RlY29kZXVybChzZWxmKToKQEAgLTg2MSwxMiArOTg1LDEyIEBACiAgICAgICAgICgiZHRjIiwgImdpdDovL2dpdC5xZW11Lm9yZy9kdGMuZ2l0IiwgIjY1Y2M0ZDI3NDhhMmMyZTZmMjdmMWNmMzllMDdhNWRiYWJkODBlYmYiLCAiIikKICAgICAgICAgICAgIDogIjEuNC4wIiwKICAgICAgICAgIyBjb21iaW5hdGlvbiB2ZXJzaW9uIHBhdHRlcm4KLSAgICAgICAgKCJzeXNwcm9mIiwgImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvc3lzcHJvZjtwcm90b2NvbD1odHRwcyIsICJjZDQ0ZWU2NjQ0YzM2NDE1MDdmYjUzYjhhMmE2OTEzN2YyOTcxMjE5IiwgIiIpCisgICAgICAgICgic3lzcHJvZiIsICJnaXQ6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3N5c3Byb2YuZ2l0O3Byb3RvY29sPWh0dHBzIiwgImNkNDRlZTY2NDRjMzY0MTUwN2ZiNTNiOGEyYTY5MTM3ZjI5NzEyMTkiLCAiIikKICAgICAgICAgICAgIDogIjEuMi4wIiwKICAgICAgICAgKCJ1LWJvb3QtbWtpbWFnZSIsICJnaXQ6Ly9naXQuZGVueC5kZS91LWJvb3QuZ2l0O2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IiwgIjYyYzE3NWZiYjhhMGY5YTkyNmM4ODI5NGVhOWY3ZTg4ZWI4OThmNmMiLCAiIikKICAgICAgICAgICAgIDogIjIwMTQuMDEiLAogICAgICAgICAjIHZlcnNpb24gcGF0dGVybiAieXl5eW1tZGQiCi0gICAgICAgICgibW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIiwgImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvO3Byb3RvY29sPWh0dHBzIiwgIjRlZDE5ZTExYzI5NzUxMDViNzFiOTU2NDQwYWNkYjI1ZDQ2YTM0N2QiLCAiIikKKyAgICAgICAgKCJtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8iLCAiZ2l0Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8uZ2l0O3Byb3RvY29sPWh0dHBzIiwgIjRlZDE5ZTExYzI5NzUxMDViNzFiOTU2NDQwYWNkYjI1ZDQ2YTM0N2QiLCAiIikKICAgICAgICAgICAgIDogIjIwMTIwNjE0IiwKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoIGEgdmFsaWQgVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVgKICAgICAgICAgKCJ4Zjg2LXZpZGVvLW9tYXAiLCAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1vbWFwIiwgImFlMDM5NGU2ODdmMWE3N2U5NjZjZjcyZjg5NWRhOTE4NDBkZmZiOGYiLCAiKD9QPHB2ZXI+KFxkK1wuKFxkXC4/KSopKSIpCkBAIC0xMzM4LDYgKzE0NjIsOSBAQAogICAgICAgICBzbWRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXRzdWJtb2R1bGUnKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc21kaXIpCiAgICAgICAgIHNlbGYuZ2l0KCdpbml0JywgY3dkPXNtZGlyKQorICAgICAgICAjIE1ha2UgdGhpcyBsb29rIGxpa2UgaXQgd2FzIGNsb25lZCBmcm9tIGEgcmVtb3RlLi4uCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi51cmwgIiVzIicgJSBzbWRpciwgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4uZmV0Y2ggIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL29yaWdpbi8qIicsIGN3ZD1zbWRpcikKICAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYXN1YicsIGN3ZD1zbWRpcikKIAogICAgICAgICBzZWxmLmdpdCgnc3VibW9kdWxlIGluaXQnLCBjd2Q9c2VsZi5zcmNkaXIpCkBAIC0xNTcxLDMgKzE2OTgsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcmlnX3JldnMsIHJldnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVmcyhbJ21hc3RlcicsICdvcmlnaW4vbWFzdGVyJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQob3JpZ19yZXZzIC0gMTc1OCkKKworICAgIGRlZiB0ZXN0X3RoYXRfdW5wYWNrX3Rocm93c19hbl9lcnJvcl93aGVuX3RoZV9naXRfY2xvbmVfbm9yX3NoYWxsb3dfdGFyYmFsbF9leGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYScpCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCgpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmdpdGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5kbGRpciwgcmVjdXJzZT1UcnVlKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLlVucGFja0Vycm9yKSBhcyBjb250ZXh0OgorICAgICAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi5kLmdldFZhcignV09SS0RJUicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIk5vIHVwIHRvIGRhdGUgc291cmNlIGZvdW5kIiwgY29udGV4dC5leGNlcHRpb24ubXNnKQorICAgICAgICBzZWxmLmFzc2VydEluKCJjbG9uZSBkaXJlY3Rvcnkgbm90IGF2YWlsYWJsZSBvciBub3QgdXAgdG8gZGF0ZSIsIGNvbnRleHQuZXhjZXB0aW9uLm1zZykKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X3RoYXRfdW5wYWNrX2RvZXNfd29ya193aGVuX3VzaW5nX2dpdF9zaGFsbG93X3RhcmJhbGxfYnV0X3RhcmJhbGxfaXNfbm90X2F2YWlsYWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5kLnNldFZhcignU1JDUkVWJywgJ2U1OTM5ZmY2MDhiOTVjZGQ0ZDBhYjBlMTkzNTc4MWFiOWEyNzZhYzAnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9HSVRfU0hBTExPVycsICcxJykKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfR0VORVJBVEVfU0hBTExPV19UQVJCQUxMUycsICcxJykKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvZnN0ZXN0cyJdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLmRsZGlyICsgIi8qLnRhci5neiIpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorCisgICAgICAgIGRpciA9IG9zLmxpc3RkaXIoc2VsZi51bnBhY2tkaXIgKyAiL2dpdC8iKQorICAgICAgICBzZWxmLmFzc2VydEluKCJmc3Rlc3RzLmRvYXAiLCBkaXIpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3BhcnNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9wYXJzZS5weQppbmRleCA4ZjE2YmE0Li4xYmM0NzQwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3BhcnNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcGFyc2UucHkKQEAgLTQ0LDkgKzQ0LDEzIEBACiAiIiIKIAogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5vcmlnZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuID0gYmIuc2lnZ2VuLmluaXQoc2VsZi5kKQogCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBvcy5jaGRpcihzZWxmLm9yaWdkaXIpCisKICAgICBkZWYgcGFyc2VoZWxwZXIoc2VsZiwgY29udGVudCwgc3VmZml4ID0gIi5iYiIpOgogCiAgICAgICAgIGYgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoc3VmZml4ID0gc3VmZml4KQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQppbmRleCA1MjRhNWIwLi4zMTMyM2QyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL2J1aWxkaW5mb2hlbHBlci5weQpAQCAtMTYwMywxNCArMTYwMywxNCBAQAogICAgICAgICBtb2NrZXZlbnQubGluZW5vID0gLTEKICAgICAgICAgc2VsZi5zdG9yZV9sb2dfZXZlbnQobW9ja2V2ZW50KQogCi0gICAgZGVmIHN0b3JlX2xvZ19ldmVudChzZWxmLCBldmVudCk6CisgICAgZGVmIHN0b3JlX2xvZ19ldmVudChzZWxmLCBldmVudCxjbGlfYmFja2xvZz1UcnVlKToKICAgICAgICAgc2VsZi5fZW5zdXJlX2J1aWxkKCkKIAogICAgICAgICBpZiBldmVudC5sZXZlbG5vIDwgZm9ybWF0dGVyLldBUk5JTkc6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIGVhcmx5IHJldHVybiBmb3IgQ0xJIGJ1aWxkcwotICAgICAgICBpZiBzZWxmLmJyYmUgaXMgTm9uZToKKyAgICAgICAgaWYgY2xpX2JhY2tsb2cgYW5kIHNlbGYuYnJiZSBpcyBOb25lOgogICAgICAgICAgICAgaWYgbm90ICdiYWNrbG9nJyBpbiBzZWxmLmludGVybmFsX3N0YXRlOgogICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJuYWxfc3RhdGVbJ2JhY2tsb2cnXSA9IFtdCiAgICAgICAgICAgICBzZWxmLmludGVybmFsX3N0YXRlWydiYWNrbG9nJ10uYXBwZW5kKGV2ZW50KQpAQCAtMTYyMiw3ICsxNjIyLDcgQEAKICAgICAgICAgICAgICAgICB0ZW1wZXZlbnQgPSBzZWxmLmludGVybmFsX3N0YXRlWydiYWNrbG9nJ10ucG9wKCkKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgImJ1aWxkaW5mb2hlbHBlcjogU2F2aW5nIHN0b3JlZCBldmVudCAlcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdGVtcGV2ZW50KQotICAgICAgICAgICAgICAgIHNlbGYuc3RvcmVfbG9nX2V2ZW50KHRlbXBldmVudCkKKyAgICAgICAgICAgICAgICBzZWxmLnN0b3JlX2xvZ19ldmVudCh0ZW1wZXZlbnQsY2xpX2JhY2tsb2cpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJidWlsZGluZm9oZWxwZXI6IEFsbCBldmVudHMgc2F2ZWQiKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLmludGVybmFsX3N0YXRlWydiYWNrbG9nJ10KQEAgLTE5ODcsNyArMTk4Nyw4IEBACiAgICAgICAgIGlmICdiYWNrbG9nJyBpbiBzZWxmLmludGVybmFsX3N0YXRlOgogICAgICAgICAgICAgIyB3ZSBzYXZlIG1pc3NlZCBldmVudHMgaW4gdGhlIGRhdGFiYXNlIGZvciB0aGUgY3VycmVudCBidWlsZAogICAgICAgICAgICAgdGVtcGV2ZW50ID0gc2VsZi5pbnRlcm5hbF9zdGF0ZVsnYmFja2xvZyddLnBvcCgpCi0gICAgICAgICAgICBzZWxmLnN0b3JlX2xvZ19ldmVudCh0ZW1wZXZlbnQpCisgICAgICAgICAgICAjIERvIG5vdCBza2lwIGNvbW1hbmQgbGluZSBidWlsZCBldmVudHMKKyAgICAgICAgICAgIHNlbGYuc3RvcmVfbG9nX2V2ZW50KHRlbXBldmVudCxGYWxzZSkKIAogICAgICAgICBpZiBub3QgY29ubmVjdGlvbi5mZWF0dXJlcy5hdXRvY29tbWl0c193aGVuX2F1dG9jb21taXRfaXNfb2ZmOgogICAgICAgICAgICAgdHJhbnNhY3Rpb24uc2V0X2F1dG9jb21taXQoVHJ1ZSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQppbmRleCAwZThlOWQ0Li44MzA1ZDcwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CkBAIC0xMDMsOSArMTAzLDE2IEBACiAgICAgICAgIHNlbGYucGtnX3RyZWV2aWV3LmdldF9zZWxlY3Rpb24oKS5jb25uZWN0KCJjaGFuZ2VkIiwgc2VsZi5vbl9jdXJzb3JfY2hhbmdlZCkKICAgICAgICAgY29sdW1uID0gR3RrLlRyZWVWaWV3Q29sdW1uKCJQYWNrYWdlIiwgR3RrLkNlbGxSZW5kZXJlclRleHQoKSwgdGV4dD1DT0xfUEtHX05BTUUpCiAgICAgICAgIHNlbGYucGtnX3RyZWV2aWV3LmFwcGVuZF9jb2x1bW4oY29sdW1uKQotICAgICAgICBwYW5lLmFkZDEoc2Nyb2xsZWQpCiAgICAgICAgIHNjcm9sbGVkLmFkZChzZWxmLnBrZ190cmVldmlldykKIAorICAgICAgICBzZWxmLnNlYXJjaF9lbnRyeSA9IEd0ay5TZWFyY2hFbnRyeS5uZXcoKQorICAgICAgICBzZWxmLnBrZ190cmVldmlldy5zZXRfc2VhcmNoX2VudHJ5KHNlbGYuc2VhcmNoX2VudHJ5KQorCisgICAgICAgIGxlZnRfcGFuZWwgPSBHdGsuVlBhbmVkKCkKKyAgICAgICAgbGVmdF9wYW5lbC5hZGQoc2VsZi5zZWFyY2hfZW50cnkpCisgICAgICAgIGxlZnRfcGFuZWwuYWRkKHNjcm9sbGVkKQorICAgICAgICBwYW5lLmFkZDEobGVmdF9wYW5lbCkKKwogICAgICAgICBib3ggPSBHdGsuVkJveChob21vZ2VuZW91cz1UcnVlLCBzcGFjaW5nPTQpCiAKICAgICAgICAgIyBUYXNrIERlcGVuZHMKQEAgLTEyOSw2ICsxMzYsNyBAQAogICAgICAgICBwYW5lLmFkZDIoYm94KQogCiAgICAgICAgIHNlbGYuc2hvd19hbGwoKQorICAgICAgICBzZWxmLnNlYXJjaF9lbnRyeS5ncmFiX2ZvY3VzKCkKIAogICAgIGRlZiBvbl9wYWNrYWdlX2FjdGl2YXRlZChzZWxmLCB0cmVldmlldywgcGF0aCwgY29sdW1uLCBkYXRhX2NvbCk6CiAgICAgICAgIG1vZGVsID0gdHJlZXZpZXcuZ2V0X21vZGVsKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDJmZjdlODIuLjczYjZjYjQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtNDk3LDcgKzQ5NywxMSBAQAogICAgICAgICAgICAgICAgIGlmIHN0YXRpbmZvLnN0X2lubyA9PSBzdGF0aW5mbzIuc3RfaW5vOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGYKICAgICAgICAgICAgIGxmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGFjcXVpcmUgbG9jayAnJXMnLCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RyZXJyb3IsIG5hbWUpCisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBsZi5jbG9zZSgpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgpAQCAtOTA2LDYgKzkxMCwyMyBAQAogICAgICAgICBuZXdtdGltZSA9IHNzdGF0W3N0YXQuU1RfTVRJTUVdCiAgICAgcmV0dXJuIG5ld210aW1lCiAKK2RlZiBicmVha19oYXJkbGlua3Moc3JjLCBzc3RhdCA9IE5vbmUpOgorICAgICIiIgorICAgIEVuc3VyZXMgc3JjIGlzIHRoZSBvbmx5IGhhcmRsaW5rIHRvIHRoaXMgZmlsZS4gIE90aGVyIGhhcmRsaW5rcywKKyAgICBpZiBhbnksIGFyZSBub3QgYWZmZWN0ZWQgKG90aGVyIHRoYW4gaW4gdGhlaXIgc3RfbmxpbmsgdmFsdWUsIG9mCisgICAgY291cnNlKS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBmYWxzZSBvbiBmYWlsdXJlLgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBpZiBub3Qgc3N0YXQ6CisgICAgICAgICAgICBzc3RhdCA9IG9zLmxzdGF0KHNyYykKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJicmVha19oYXJkbGlua3M6IHN0YXQgb2YgJXMgZmFpbGVkICglcykiICUgKHNyYywgZSkpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIHNzdGF0W3N0YXQuU1RfTkxJTktdID09IDE6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIGNvcHlmaWxlKHNyYywgc3JjLCBzc3RhdD1zc3RhdCkKKwogZGVmIHdoaWNoKHBhdGgsIGl0ZW0sIGRpcmVjdGlvbiA9IDAsIGhpc3RvcnkgPSBGYWxzZSwgZXhlY3V0YWJsZT1GYWxzZSk6CiAgICAgIiIiCiAgICAgTG9jYXRlIGBpdGVtYCBpbiB0aGUgbGlzdCBvZiBwYXRocyBgcGF0aGAgKGNvbG9uIHNlcGFyYXRlZCBzdHJpbmcgbGlrZSAkUEFUSCkuCkBAIC0xMjkwLDcgKzEzMTEsNyBAQAogICAgIHJldHVybiB1cGRhdGVkCiAKIAotZGVmIGVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBhZGQsIHJlbW92ZSk6CitkZWYgZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIGFkZCwgcmVtb3ZlLCBlZGl0X2NiPU5vbmUpOgogICAgICIiIkVkaXQgYmJsYXllcnMuY29uZiwgYWRkaW5nIGFuZC9vciByZW1vdmluZyBsYXllcnMKICAgICBQYXJhbWV0ZXJzOgogICAgICAgICBiYmxheWVyc19jb25mOiBwYXRoIHRvIGJibGF5ZXJzLmNvbmYgZmlsZSB0byBlZGl0CkBAIC0xMjk4LDYgKzEzMTksOCBAQAogICAgICAgICAgICAgbGlzdCB0byBhZGQgbm90aGluZwogICAgICAgICByZW1vdmU6IGxheWVyIHBhdGggKG9yIGxpc3Qgb2YgbGF5ZXIgcGF0aHMpIHRvIHJlbW92ZTsgTm9uZSBvcgogICAgICAgICAgICAgZW1wdHkgbGlzdCB0byByZW1vdmUgbm90aGluZworICAgICAgICBlZGl0X2NiOiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgICAgICBwcm9jZXNzaW5nIGFkZHMvcmVtb3ZlcyBvbmNlIHBlciBleGlzdGluZyBlbnRyeS4KICAgICBSZXR1cm5zIGEgdHVwbGU6CiAgICAgICAgIG5vdGFkZGVkOiBsaXN0IG9mIGxheWVycyBzcGVjaWZpZWQgdG8gYmUgYWRkZWQgYnV0IHdlcmVuJ3QKICAgICAgICAgICAgIChiZWNhdXNlIHRoZXkgd2VyZSBhbHJlYWR5IGluIHRoZSBsaXN0KQpAQCAtMTM2MSw2ICsxMzg0LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIGJibGF5ZXJzLmFwcGVuZChhZGRsYXllcikKICAgICAgICAgICAgIGRlbCBhZGRsYXllcnNbOl0KIAorICAgICAgICBpZiBlZGl0X2NiOgorICAgICAgICAgICAgbmV3bGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gYmJsYXllcnM6CisgICAgICAgICAgICAgICAgcmVzID0gZWRpdF9jYihsYXllciwgY2Fub25pY2FsaXNlX3BhdGgobGF5ZXIpKQorICAgICAgICAgICAgICAgIGlmIHJlcyAhPSBsYXllcjoKKyAgICAgICAgICAgICAgICAgICAgbmV3bGlzdC5hcHBlbmQocmVzKQorICAgICAgICAgICAgICAgICAgICB1cGRhdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5ld2xpc3QuYXBwZW5kKGxheWVyKQorICAgICAgICAgICAgYmJsYXllcnMgPSBuZXdsaXN0CisKICAgICAgICAgaWYgdXBkYXRlZDoKICAgICAgICAgICAgIGlmIG9wID09ICcrPScgYW5kIG5vdCBiYmxheWVyczoKICAgICAgICAgICAgICAgICBiYmxheWVycyA9IE5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvYWN0aW9uLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKaW5kZXggYWE1NzVkMS4uYTNmNjU4ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9hY3Rpb24ucHkKQEAgLTQ1LDcgKzQ1LDcgQEAKICAgICAgICAgICAgIG5vdGFkZGVkLCBfID0gYmIudXRpbHMuZWRpdF9iYmxheWVyc19jb25mKGJibGF5ZXJzX2NvbmYsIGxheWVyZGlycywgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCAoYXJncy5mb3JjZSBvciBub3RhZGRlZCk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbmZvaWwucGFyc2VSZWNpcGVzKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdwYXJzZUNvbmZpZ3VyYXRpb24nKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBiYi50aW5mb2lsLlRpbmZvaWxVSUV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgIyBSZXN0b3JlIHRoZSBiYWNrIHVwIGNvcHkgb2YgYmJsYXllcnMuY29uZgogICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weTIoYmFja3VwLCBiYmxheWVyc19jb25mKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5CmluZGV4IDlhZjM4NWQuLjlmMDJhOWQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKQEAgLTEsMTAgKzEsOSBAQAoraW1wb3J0IGxheWVyaW5kZXhsaWIKKwogaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgaHR0cC5jbGllbnQKLWltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHVybGxpYi5wYXJzZQogCiBmcm9tIGJibGF5ZXJzLmFjdGlvbiBpbXBvcnQgQWN0aW9uUGx1Z2luCiAKQEAgLTIxLDExMCArMjAsNiBAQAogICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgQWN0aW9uUGx1Z2luIHRvIGdldCBkb19hZGRfbGF5ZXIuCiAgICAgIiIiCiAKLSAgICBkZWYgZ2V0X2pzb25fZGF0YShzZWxmLCBhcGl1cmwpOgotICAgICAgICBwcm94eV9zZXR0aW5ncyA9IG9zLmVudmlyb24uZ2V0KCJodHRwX3Byb3h5IiwgTm9uZSkKLSAgICAgICAgY29ubiA9IE5vbmUKLSAgICAgICAgX3BhcnNlZHVybCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZShhcGl1cmwpCi0gICAgICAgIHBhdGggPSBfcGFyc2VkdXJsLnBhdGgKLSAgICAgICAgcXVlcnkgPSBfcGFyc2VkdXJsLnF1ZXJ5Ci0KLSAgICAgICAgZGVmIHBhcnNlX3VybCh1cmwpOgotICAgICAgICAgICAgcGFyc2VkdXJsID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKHVybCkKLSAgICAgICAgICAgIGlmIHBhcnNlZHVybC5uZXRsb2NbMF0gPT0gJ1snOgotICAgICAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBwYXJzZWR1cmwubmV0bG9jWzE6XS5zcGxpdCgnXScsIDEpCi0gICAgICAgICAgICAgICAgaWYgJzonIGluIHBvcnQ6Ci0gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBwb3J0LnJzcGxpdCgnOicsIDEpWzFdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcG9ydCA9IE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgcGFyc2VkdXJsLm5ldGxvYy5jb3VudCgnOicpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIChob3N0LCBwb3J0KSA9IHBhcnNlZHVybC5uZXRsb2Muc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhvc3QgPSBwYXJzZWR1cmwubmV0bG9jCi0gICAgICAgICAgICAgICAgICAgIHBvcnQgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4gKGhvc3QsIDgwIGlmIHBvcnQgaXMgTm9uZSBlbHNlIGludChwb3J0KSkKLQotICAgICAgICBpZiBwcm94eV9zZXR0aW5ncyBpcyBOb25lOgotICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHBhcnNlX3VybChhcGl1cmwpCi0gICAgICAgICAgICBjb25uID0gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24oaG9zdCwgcG9ydCkKLSAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgiR0VUIiwgcGF0aCArICI/IiArIHF1ZXJ5KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaG9zdCwgcG9ydCA9IHBhcnNlX3VybChwcm94eV9zZXR0aW5ncykKLSAgICAgICAgICAgIGNvbm4gPSBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbihob3N0LCBwb3J0KQotICAgICAgICAgICAgY29ubi5yZXF1ZXN0KCJHRVQiLCBhcGl1cmwpCi0KLSAgICAgICAgciA9IGNvbm4uZ2V0cmVzcG9uc2UoKQotICAgICAgICBpZiByLnN0YXR1cyAhPSAyMDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byByZWFkICIgKyBwYXRoICsgIjogJWQgJXMiICUgKHIuc3RhdHVzLCByLnJlYXNvbikpCi0gICAgICAgIHJldHVybiBqc29uLmxvYWRzKHIucmVhZCgpLmRlY29kZSgpKQotCi0gICAgZGVmIGdldF9sYXllcl9kZXBzKHNlbGYsIGxheWVybmFtZSwgbGF5ZXJpdGVtcywgbGF5ZXJicmFuY2hlcywgbGF5ZXJkZXBlbmRlbmNpZXMsIGJyYW5jaG51bSwgc2VsZm5hbWU9RmFsc2UpOgotICAgICAgICBkZWYgbGF5ZXJpdGVtc19pbmZvX2lkKGl0ZW1zX25hbWUsIGxheWVyaXRlbXMpOgotICAgICAgICAgICAgbGl0ZW1zX2lkID0gTm9uZQotICAgICAgICAgICAgZm9yIGxpIGluIGxheWVyaXRlbXM6Ci0gICAgICAgICAgICAgICAgaWYgbGlbJ25hbWUnXSA9PSBpdGVtc19uYW1lOgotICAgICAgICAgICAgICAgICAgICBsaXRlbXNfaWQgPSBsaVsnaWQnXQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmV0dXJuIGxpdGVtc19pZAotCi0gICAgICAgIGRlZiBsYXllcmJyYW5jaGVzX2luZm8oaXRlbXNfaWQsIGxheWVyYnJhbmNoZXMpOgotICAgICAgICAgICAgbGJyYW5jaCA9IHt9Ci0gICAgICAgICAgICBmb3IgbGIgaW4gbGF5ZXJicmFuY2hlczoKLSAgICAgICAgICAgICAgICBpZiBsYlsnbGF5ZXInXSA9PSBpdGVtc19pZCBhbmQgbGJbJ2JyYW5jaCddID09IGJyYW5jaG51bToKLSAgICAgICAgICAgICAgICAgICAgbGJyYW5jaFsnaWQnXSA9IGxiWydpZCddCi0gICAgICAgICAgICAgICAgICAgIGxicmFuY2hbJ3Zjc19zdWJkaXInXSA9IGxiWyd2Y3Nfc3ViZGlyJ10KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJldHVybiBsYnJhbmNoCi0KLSAgICAgICAgZGVmIGxheWVyZGVwZW5kZW5jaWVzX2luZm8obGJfaWQsIGxheWVyZGVwZW5kZW5jaWVzKToKLSAgICAgICAgICAgIGxkX2RlcHMgPSBbXQotICAgICAgICAgICAgZm9yIGxkIGluIGxheWVyZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgICAgIGlmIGxkWydsYXllcmJyYW5jaCddID09IGxiX2lkIGFuZCBub3QgbGRbJ2RlcGVuZGVuY3knXSBpbiBsZF9kZXBzOgotICAgICAgICAgICAgICAgICAgICBsZF9kZXBzLmFwcGVuZChsZFsnZGVwZW5kZW5jeSddKQotICAgICAgICAgICAgaWYgbm90IGxkX2RlcHM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJUaGUgZGVwZW5kZW5jeSBvZiBsYXllckRlcGVuZGVuY2llcyBpcyBub3QgZm91bmQuIikKLSAgICAgICAgICAgIHJldHVybiBsZF9kZXBzCi0KLSAgICAgICAgZGVmIGxheWVyaXRlbXNfaW5mb19uYW1lX3N1YmRpcihpdGVtc19pZCwgbGF5ZXJpdGVtcyk6Ci0gICAgICAgICAgICBsaXRlbXMgPSB7fQotICAgICAgICAgICAgZm9yIGxpIGluIGxheWVyaXRlbXM6Ci0gICAgICAgICAgICAgICAgaWYgbGlbJ2lkJ10gPT0gaXRlbXNfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGxpdGVtc1sndmNzX3VybCddID0gbGlbJ3Zjc191cmwnXQotICAgICAgICAgICAgICAgICAgICBsaXRlbXNbJ25hbWUnXSA9IGxpWyduYW1lJ10KLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJldHVybiBsaXRlbXMKLQotICAgICAgICBpZiBzZWxmbmFtZToKLSAgICAgICAgICAgIHNlbGZpZCA9IGxheWVyaXRlbXNfaW5mb19pZChsYXllcm5hbWUsIGxheWVyaXRlbXMpCi0gICAgICAgICAgICBsYmluZm8gPSBsYXllcmJyYW5jaGVzX2luZm8oc2VsZmlkLCBsYXllcmJyYW5jaGVzKQotICAgICAgICAgICAgaWYgbGJpbmZvOgotICAgICAgICAgICAgICAgIHNlbGZzdWJkaXIgPSBsYmluZm9bJ3Zjc19zdWJkaXInXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGlzIG5vdCBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGJyYW5jaCIgJSBsYXllcm5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBzZWxmdXJsID0gbGF5ZXJpdGVtc19pbmZvX25hbWVfc3ViZGlyKHNlbGZpZCwgbGF5ZXJpdGVtcylbJ3Zjc191cmwnXQotICAgICAgICAgICAgaWYgc2VsZnVybDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZnVybCwgc2VsZnN1YmRpcgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNhbm5vdCBnZXQgbGF5ZXIgJXMgZ2l0IHJlcG8gYW5kIHN1YmRpciIgJSBsYXllcm5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGxkaWN0ID0ge30KLSAgICAgICAgaXRlbXNpZCA9IGxheWVyaXRlbXNfaW5mb19pZChsYXllcm5hbWUsIGxheWVyaXRlbXMpCi0gICAgICAgIGlmIG5vdCBpdGVtc2lkOgotICAgICAgICAgICAgcmV0dXJuIGxheWVybmFtZSwgTm9uZQotICAgICAgICBsYmlkID0gbGF5ZXJicmFuY2hlc19pbmZvKGl0ZW1zaWQsIGxheWVyYnJhbmNoZXMpCi0gICAgICAgIGlmIGxiaWQ6Ci0gICAgICAgICAgICBsYmlkID0gbGF5ZXJicmFuY2hlc19pbmZvKGl0ZW1zaWQsIGxheWVyYnJhbmNoZXMpWydpZCddCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzIGlzIG5vdCBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIGJyYW5jaCIgJSBsYXllcm5hbWUpCi0gICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgICAgICBmb3IgZGVwZW5kZW5jeSBpbiBsYXllcmRlcGVuZGVuY2llc19pbmZvKGxiaWQsIGxheWVyZGVwZW5kZW5jaWVzKToKLSAgICAgICAgICAgIGxuYW1lID0gbGF5ZXJpdGVtc19pbmZvX25hbWVfc3ViZGlyKGRlcGVuZGVuY3ksIGxheWVyaXRlbXMpWyduYW1lJ10KLSAgICAgICAgICAgIGx1cmwgPSBsYXllcml0ZW1zX2luZm9fbmFtZV9zdWJkaXIoZGVwZW5kZW5jeSwgbGF5ZXJpdGVtcylbJ3Zjc191cmwnXQotICAgICAgICAgICAgbHN1YmRpciA9IGxheWVyYnJhbmNoZXNfaW5mbyhkZXBlbmRlbmN5LCBsYXllcmJyYW5jaGVzKVsndmNzX3N1YmRpciddCi0gICAgICAgICAgICBsZGljdFtsbmFtZV0gPSBsdXJsLCBsc3ViZGlyCi0gICAgICAgIHJldHVybiBOb25lLCBsZGljdAotCiAgICAgZGVmIGdldF9mZXRjaF9sYXllcihzZWxmLCBmZXRjaGRpciwgdXJsLCBzdWJkaXIsIGZldGNoX2xheWVyKToKICAgICAgICAgbGF5ZXJuYW1lID0gc2VsZi5nZXRfbGF5ZXJfbmFtZSh1cmwpCiAgICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQobGF5ZXJuYW1lKVsxXSA9PSAnLmdpdCc6CkBAIC0xMzYsOTUgKzMxLDEyNCBAQAogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbCgnZ2l0IGNsb25lICVzICVzJyAlICh1cmwsIHJlcG9kaXIpLCBzaGVsbCA9IFRydWUpCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgogICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBkb3dubG9hZCAlcyIgJSB1cmwpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVybmFtZSwgbGF5ZXJkaXIKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1YmRpciwgbGF5ZXJuYW1lLCBsYXllcmRpcgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4oIlJlcG9zaXRvcnkgJXMgbmVlZHMgdG8gYmUgZmV0Y2hlZCIgJSB1cmwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxheWVybmFtZSwgbGF5ZXJkaXIKKyAgICAgICAgICAgICAgICByZXR1cm4gc3ViZGlyLCBsYXllcm5hbWUsIGxheWVyZGlyCiAgICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMobGF5ZXJkaXIpOgotICAgICAgICAgICAgcmV0dXJuIGxheWVybmFtZSwgbGF5ZXJkaXIKKyAgICAgICAgICAgIHJldHVybiBzdWJkaXIsIGxheWVybmFtZSwgbGF5ZXJkaXIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXMgaXMgbm90IGluICVzIiAlICh1cmwsIHN1YmRpcikpCi0gICAgICAgIHJldHVybiBOb25lLCBOb25lCisgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBOb25lCiAKICAgICBkZWYgZG9fbGF5ZXJpbmRleF9mZXRjaChzZWxmLCBhcmdzKToKICAgICAgICAgIiIiRmV0Y2hlcyBhIGxheWVyIGZyb20gYSBsYXllciBpbmRleCBhbG9uZyB3aXRoIGl0cyBkZXBlbmRlbnQgbGF5ZXJzLCBhbmQgYWRkcyB0aGVtIHRvIGNvbmYvYmJsYXllcnMuY29uZi4KICIiIgotICAgICAgICBhcGl1cmwgPSBzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQkxBWUVSU19MQVlFUklOREVYX1VSTCcpCi0gICAgICAgIGlmIG5vdCBhcGl1cmw6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNhbm5vdCBnZXQgQkJMQVlFUlNfTEFZRVJJTkRFWF9VUkwiKQotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGFwaXVybFstMV0gIT0gJy8nOgotICAgICAgICAgICAgICAgIGFwaXVybCArPSAnLycKLSAgICAgICAgICAgIGFwaXVybCArPSAiYXBpLyIKLSAgICAgICAgYXBpbGlua3MgPSBzZWxmLmdldF9qc29uX2RhdGEoYXBpdXJsKQotICAgICAgICBicmFuY2hlcyA9IHNlbGYuZ2V0X2pzb25fZGF0YShhcGlsaW5rc1snYnJhbmNoZXMnXSkKIAotICAgICAgICBicmFuY2hudW0gPSAwCi0gICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6Ci0gICAgICAgICAgICBpZiBicmFuY2hbJ25hbWUnXSA9PSBhcmdzLmJyYW5jaDoKLSAgICAgICAgICAgICAgICBicmFuY2hudW0gPSBicmFuY2hbJ2lkJ10KLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBicmFuY2hudW0gPT0gMDoKLSAgICAgICAgICAgIHZhbGlkYnJhbmNoZXMgPSAnLCAnLmpvaW4oW2JyYW5jaFsnbmFtZSddIGZvciBicmFuY2ggaW4gYnJhbmNoZXNdKQotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdJbnZhbGlkIGxheWVyIGJyYW5jaCBuYW1lICIlcyIuIFZhbGlkIGJyYW5jaGVzOiAlcycgJSAoYXJncy5icmFuY2gsIHZhbGlkYnJhbmNoZXMpKQotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZGVmIF9jb25zdHJ1Y3RfdXJsKGJhc2V1cmxzLCBicmFuY2hlcyk6CisgICAgICAgICAgICB1cmxzID0gW10KKyAgICAgICAgICAgIGZvciBiYXNldXJsIGluIGJhc2V1cmxzOgorICAgICAgICAgICAgICAgIGlmIGJhc2V1cmxbLTFdICE9ICcvJzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZXVybCArPSAnLycKKworICAgICAgICAgICAgICAgIGlmIG5vdCBiYXNldXJsLnN0YXJ0c3dpdGgoJ2Nvb2tlcicpOgorICAgICAgICAgICAgICAgICAgICBiYXNldXJsICs9ICJhcGkvIgorCisgICAgICAgICAgICAgICAgaWYgYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgICAgIGJhc2V1cmwgKz0gIjticmFuY2g9JXMiICUgJywnLmpvaW4oYnJhbmNoZXMpCisKKyAgICAgICAgICAgICAgICB1cmxzLmFwcGVuZChiYXNldXJsKQorCisgICAgICAgICAgICByZXR1cm4gdXJscworCisKKyAgICAgICAgIyBTZXQgdGhlIGRlZmF1bHQuLi4KKyAgICAgICAgaWYgYXJncy5icmFuY2g6CisgICAgICAgICAgICBicmFuY2hlcyA9IFthcmdzLmJyYW5jaF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5jaGVzID0gKHNlbGYudGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0xBWUVSU0VSSUVTX0NPUkVOQU1FUycpIG9yICdtYXN0ZXInKS5zcGxpdCgpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnVHJ5aW5nIGJyYW5jaGVzOiAlcycgJSBicmFuY2hlcykKIAogICAgICAgICBpZ25vcmVfbGF5ZXJzID0gW10KLSAgICAgICAgZm9yIGNvbGxlY3Rpb24gaW4gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKLSAgICAgICAgICAgIGxuYW1lID0gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FXyVzJyAlIGNvbGxlY3Rpb24pCi0gICAgICAgICAgICBpZiBsbmFtZToKLSAgICAgICAgICAgICAgICBpZ25vcmVfbGF5ZXJzLmFwcGVuZChsbmFtZSkKLQogICAgICAgICBpZiBhcmdzLmlnbm9yZToKICAgICAgICAgICAgIGlnbm9yZV9sYXllcnMuZXh0ZW5kKGFyZ3MuaWdub3JlLnNwbGl0KCcsJykpCiAKLSAgICAgICAgbGF5ZXJpdGVtcyA9IHNlbGYuZ2V0X2pzb25fZGF0YShhcGlsaW5rc1snbGF5ZXJJdGVtcyddKQotICAgICAgICBsYXllcmJyYW5jaGVzID0gc2VsZi5nZXRfanNvbl9kYXRhKGFwaWxpbmtzWydsYXllckJyYW5jaGVzJ10pCi0gICAgICAgIGxheWVyZGVwZW5kZW5jaWVzID0gc2VsZi5nZXRfanNvbl9kYXRhKGFwaWxpbmtzWydsYXllckRlcGVuZGVuY2llcyddKQotICAgICAgICBpbnZhbHVlbmFtZXMgPSBbXQotICAgICAgICByZXBvdXJscyA9IHt9Ci0gICAgICAgIHByaW50bGF5ZXJzID0gW10KKyAgICAgICAgIyBMb2FkIHRoZSBjb29rZXIgREIKKyAgICAgICAgY29va2VySW5kZXggPSBsYXllcmluZGV4bGliLkxheWVySW5kZXgoc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhKQorICAgICAgICBjb29rZXJJbmRleC5sb2FkX2xheWVyaW5kZXgoJ2Nvb2tlcjovLycsIGxvYWQ9J2xheWVyRGVwZW5kZW5jaWVzJykKIAotICAgICAgICBkZWYgcXVlcnlfZGVwZW5kZW5jaWVzKGxheWVycywgbGF5ZXJpdGVtcywgbGF5ZXJicmFuY2hlcywgbGF5ZXJkZXBlbmRlbmNpZXMsIGJyYW5jaG51bSk6Ci0gICAgICAgICAgICBkZXBzbGF5ZXIgPSBbXQotICAgICAgICAgICAgZm9yIGxheWVybmFtZSBpbiBsYXllcnM6Ci0gICAgICAgICAgICAgICAgaW52YWx1ZW5hbWUsIGxheWVyZGljdCA9IHNlbGYuZ2V0X2xheWVyX2RlcHMobGF5ZXJuYW1lLCBsYXllcml0ZW1zLCBsYXllcmJyYW5jaGVzLCBsYXllcmRlcGVuZGVuY2llcywgYnJhbmNobnVtKQotICAgICAgICAgICAgICAgIGlmIGxheWVyZGljdDoKLSAgICAgICAgICAgICAgICAgICAgcmVwb3VybHNbbGF5ZXJuYW1lXSA9IHNlbGYuZ2V0X2xheWVyX2RlcHMobGF5ZXJuYW1lLCBsYXllcml0ZW1zLCBsYXllcmJyYW5jaGVzLCBsYXllcmRlcGVuZGVuY2llcywgYnJhbmNobnVtLCBzZWxmbmFtZT1UcnVlKQotICAgICAgICAgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJkaWN0OgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxheWVyIGluIGlnbm9yZV9sYXllcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwc2xheWVyLmFwcGVuZChsYXllcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50bGF5ZXJzLmFwcGVuZCgobGF5ZXJuYW1lLCBsYXllciwgbGF5ZXJkaWN0W2xheWVyXVswXSwgbGF5ZXJkaWN0W2xheWVyXVsxXSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGF5ZXIgaW4gaWdub3JlX2xheWVycyBhbmQgbm90IGxheWVyIGluIHJlcG91cmxzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG91cmxzW2xheWVyXSA9IChsYXllcmRpY3RbbGF5ZXJdWzBdLCBsYXllcmRpY3RbbGF5ZXJdWzFdKQotICAgICAgICAgICAgICAgIGlmIGludmFsdWVuYW1lIGFuZCBub3QgaW52YWx1ZW5hbWUgaW4gaW52YWx1ZW5hbWVzOgotICAgICAgICAgICAgICAgICAgICBpbnZhbHVlbmFtZXMuYXBwZW5kKGludmFsdWVuYW1lKQotICAgICAgICAgICAgcmV0dXJuIGRlcHNsYXllcgorICAgICAgICAjIEZhc3QgcGF0aCwgY2hlY2sgaWYgd2UgYWxyZWFkeSBoYXZlIHdoYXQgaGFzIGJlZW4gcmVxdWVzdGVkIQorICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkbmFtZXMpID0gY29va2VySW5kZXguZmluZF9kZXBlbmRlbmNpZXMobmFtZXM9YXJncy5sYXllcm5hbWUsIGlnbm9yZXM9aWdub3JlX2xheWVycykKKyAgICAgICAgaWYgbm90IGFyZ3Muc2hvd19vbmx5IGFuZCBub3QgaW52YWxpZG5hbWVzOgorICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJZb3UgYWxyZWFkeSBoYXZlIHRoZSByZXF1ZXN0ZWQgbGF5ZXIocyk6ICVzIiAlIGFyZ3MubGF5ZXJuYW1lKQorICAgICAgICAgICAgcmV0dXJuIDAKIAotICAgICAgICBkZXBzbGF5ZXJzID0gcXVlcnlfZGVwZW5kZW5jaWVzKGFyZ3MubGF5ZXJuYW1lLCBsYXllcml0ZW1zLCBsYXllcmJyYW5jaGVzLCBsYXllcmRlcGVuZGVuY2llcywgYnJhbmNobnVtKQotICAgICAgICB3aGlsZSBkZXBzbGF5ZXJzOgotICAgICAgICAgICAgZGVwc2xheWVyID0gcXVlcnlfZGVwZW5kZW5jaWVzKGRlcHNsYXllcnMsIGxheWVyaXRlbXMsIGxheWVyYnJhbmNoZXMsIGxheWVyZGVwZW5kZW5jaWVzLCBicmFuY2hudW0pCi0gICAgICAgICAgICBkZXBzbGF5ZXJzID0gZGVwc2xheWVyCi0gICAgICAgIGlmIGludmFsdWVuYW1lczoKLSAgICAgICAgICAgIGZvciBpbnZhbHVlbmFtZSBpbiBpbnZhbHVlbmFtZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdMYXllciAiJXMiIG5vdCBmb3VuZCBpbiBsYXllciBpbmRleCcgJSBpbnZhbHVlbmFtZSkKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGxvZ2dlci5wbGFpbigiJXMgICVzICAlcyAgJXMiICUgKCJMYXllciIubGp1c3QoMTkpLCAiUmVxdWlyZWQgYnkiLmxqdXN0KDE5KSwgIkdpdCByZXBvc2l0b3J5Ii5sanVzdCg1NCksICJTdWJkaXJlY3RvcnkiKSkKLSAgICAgICAgbG9nZ2VyLnBsYWluKCc9JyAqIDExNSkKLSAgICAgICAgZm9yIGxheWVybmFtZSBpbiBhcmdzLmxheWVybmFtZToKLSAgICAgICAgICAgIGxheWVydXJsID0gcmVwb3VybHNbbGF5ZXJuYW1lXQotICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCIlcyAlcyAlcyAlcyIgJSAobGF5ZXJuYW1lLmxqdXN0KDIwKSwgJy0nLmxqdXN0KDIwKSwgbGF5ZXJ1cmxbMF0ubGp1c3QoNTUpLCBsYXllcnVybFsxXSkpCi0gICAgICAgIHByaW50ZWRsYXllcnMgPSBbXQotICAgICAgICBmb3IgbGF5ZXIsIGRlcGVuZGVuY3ksIGdpdHJlcG8sIHN1YmRpcmVjdG9yeSBpbiBwcmludGxheWVyczoKLSAgICAgICAgICAgIGlmIGRlcGVuZGVuY3kgaW4gcHJpbnRlZGxheWVyczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCIlcyAlcyAlcyAlcyIgJSAoZGVwZW5kZW5jeS5sanVzdCgyMCksIGxheWVyLmxqdXN0KDIwKSwgZ2l0cmVwby5sanVzdCg1NSksIHN1YmRpcmVjdG9yeSkpCi0gICAgICAgICAgICBwcmludGVkbGF5ZXJzLmFwcGVuZChkZXBlbmRlbmN5KQorICAgICAgICAjIFRoZSBpbmZvcm1hdGlvbiB0byBzaG93IGlzIGFscmVhZHkgaW4gdGhlIGNvb2tlckluZGV4CisgICAgICAgIGlmIGludmFsaWRuYW1lczoKKyAgICAgICAgICAgICMgR2VuZXJhbCBVUkwgdG8gdXNlIHRvIGFjY2VzcyB0aGUgbGF5ZXIgaW5kZXgKKyAgICAgICAgICAgICMgV2hpbGUgdGhlcmUgaXMgT05FIHJpZ2h0IG5vdywgd2UncmUgZXhwZWN0IHVzZXJzIGNvdWxkIGVudGVyIHNldmVyYWwKKyAgICAgICAgICAgIGFwaXVybCA9IHNlbGYudGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JCTEFZRVJTX0xBWUVSSU5ERVhfVVJMJykuc3BsaXQoKQorICAgICAgICAgICAgaWYgbm90IGFwaXVybDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNhbm5vdCBnZXQgQkJMQVlFUlNfTEFZRVJJTkRFWF9VUkwiKQorICAgICAgICAgICAgICAgIHJldHVybiAxCiAKLSAgICAgICAgaWYgcmVwb3VybHM6CisgICAgICAgICAgICByZW1vdGVJbmRleCA9IGxheWVyaW5kZXhsaWIuTGF5ZXJJbmRleChzZWxmLnRpbmZvaWwuY29uZmlnX2RhdGEpCisKKyAgICAgICAgICAgIGZvciByZW1vdGV1cmwgaW4gX2NvbnN0cnVjdF91cmwoYXBpdXJsLCBicmFuY2hlcyk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJMb2FkaW5nICVzLi4uIiAlIHJlbW90ZXVybCkKKyAgICAgICAgICAgICAgICByZW1vdGVJbmRleC5sb2FkX2xheWVyaW5kZXgocmVtb3RldXJsKQorCisgICAgICAgICAgICBpZiByZW1vdGVJbmRleC5pc19lbXB0eSgpOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiUmVtb3RlIGxheWVyIGluZGV4ICVzIGlzIGVtcHR5IGZvciBicmFuY2hlcyAlcyIgJSAoYXBpdXJsLCBicmFuY2hlcykpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICAgICAgbEluZGV4ID0gY29va2VySW5kZXggKyByZW1vdGVJbmRleAorCisgICAgICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkbmFtZXMpID0gbEluZGV4LmZpbmRfZGVwZW5kZW5jaWVzKG5hbWVzPWFyZ3MubGF5ZXJuYW1lLCBpZ25vcmVzPWlnbm9yZV9sYXllcnMpCisKKyAgICAgICAgICAgIGlmIGludmFsaWRuYW1lczoKKyAgICAgICAgICAgICAgICBmb3IgaW52YWx1ZW5hbWUgaW4gaW52YWxpZG5hbWVzOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoJ0xheWVyICIlcyIgbm90IGZvdW5kIGluIGxheWVyIGluZGV4JyAlIGludmFsdWVuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiAxCisKKyAgICAgICAgbG9nZ2VyLnBsYWluKCIlcyAgJXMgICVzIiAlICgiTGF5ZXIiLmxqdXN0KDQ5KSwgIkdpdCByZXBvc2l0b3J5IChicmFuY2gpIi5sanVzdCg1NCksICJTdWJkaXJlY3RvcnkiKSkKKyAgICAgICAgbG9nZ2VyLnBsYWluKCc9JyAqIDEyNSkKKworICAgICAgICBmb3IgZGVwbGF5ZXJicmFuY2ggaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgbGF5ZXJCcmFuY2ggPSBkZXBlbmRlbmNpZXNbZGVwbGF5ZXJicmFuY2hdWzBdCisKKyAgICAgICAgICAgICMgVE9ETzogRGV0ZXJtaW5lIGRpc3BsYXkgYmVoYXZpb3IKKyAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgbG9jYWwgY29udGVudCwgdW5jb21tZW50IHRvIGhpZGUgbG9jYWwKKyAgICAgICAgICAgICMgbGF5ZXJzIGZyb20gdGhlIGRpc3BsYXkuCisgICAgICAgICAgICAjaWYgbGF5ZXJCcmFuY2guaW5kZXguY29uZmlnWydUWVBFJ10gPT0gJ2Nvb2tlcic6CisgICAgICAgICAgICAjICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGxheWVyRGVwcyA9IGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaF1bMTpdCisKKyAgICAgICAgICAgIHJlcXVpcmVkYnkgPSBbXQorICAgICAgICAgICAgcmVjb21tZW5kZWRieSA9IFtdCisgICAgICAgICAgICBmb3IgZGVwIGluIGxheWVyRGVwczoKKyAgICAgICAgICAgICAgICBpZiBkZXAucmVxdWlyZWQ6CisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkYnkuYXBwZW5kKGRlcC5sYXllci5uYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGVkYnkuYXBwZW5kKGRlcC5sYXllci5uYW1lKQorCisgICAgICAgICAgICBsb2dnZXIucGxhaW4oJyVzICVzICVzJyAlICgoIiVzOiVzOiVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxheWVyQnJhbmNoLmluZGV4LmNvbmZpZ1snREVTQ1JJUFRJT04nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC5icmFuY2gubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC5sYXllci5uYW1lKSkubGp1c3QoNTApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiJXMgKCVzKSIgJSAobGF5ZXJCcmFuY2gubGF5ZXIudmNzX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC5hY3R1YWxfYnJhbmNoKSkubGp1c3QoNTUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLnZjc19zdWJkaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIGlmIHJlcXVpcmVkYnk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCcgIHJlcXVpcmVkIGJ5OiAlcycgJSAnICcuam9pbihyZXF1aXJlZGJ5KSkKKyAgICAgICAgICAgIGlmIHJlY29tbWVuZGVkYnk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCcgIHJlY29tbWVuZGVkIGJ5OiAlcycgJSAnICcuam9pbihyZWNvbW1lbmRlZGJ5KSkKKworICAgICAgICBpZiBkZXBlbmRlbmNpZXM6CiAgICAgICAgICAgICBmZXRjaGRpciA9IHNlbGYudGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JCTEFZRVJTX0ZFVENIX0RJUicpCiAgICAgICAgICAgICBpZiBub3QgZmV0Y2hkaXI6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDYW5ub3QgZ2V0IEJCTEFZRVJTX0ZFVENIX0RJUiIpCkBAIC0yMzIsMjYgKzE1NiwzOSBAQAogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZldGNoZGlyKToKICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhmZXRjaGRpcikKICAgICAgICAgICAgIGFkZGxheWVycyA9IFtdCi0gICAgICAgICAgICBmb3IgcmVwb3VybCwgc3ViZGlyIGluIHJlcG91cmxzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIG5hbWUsIGxheWVyZGlyID0gc2VsZi5nZXRfZmV0Y2hfbGF5ZXIoZmV0Y2hkaXIsIHJlcG91cmwsIHN1YmRpciwgbm90IGFyZ3Muc2hvd19vbmx5KQorCisgICAgICAgICAgICBmb3IgZGVwbGF5ZXJicmFuY2ggaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoID0gZGVwZW5kZW5jaWVzW2RlcGxheWVyYnJhbmNoXVswXQorCisgICAgICAgICAgICAgICAgaWYgbGF5ZXJCcmFuY2guaW5kZXguY29uZmlnWydUWVBFJ10gPT0gJ2Nvb2tlcic6CisgICAgICAgICAgICAgICAgICAgICMgQW55dGhpbmcgbG9hZGVkIHZpYSBjb29rZXIgaXMgYWxyZWFkeSBsb2NhbCwgc2tpcCBpdAorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgc3ViZGlyLCBuYW1lLCBsYXllcmRpciA9IHNlbGYuZ2V0X2ZldGNoX2xheWVyKGZldGNoZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2gubGF5ZXIudmNzX3VybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLnZjc19zdWJkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgYXJncy5zaG93X29ubHkpCiAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAgICAgICAgIGFkZGxheWVycy5hcHBlbmQoKHN1YmRpciwgbmFtZSwgbGF5ZXJkaXIpKQogICAgICAgICBpZiBub3QgYXJncy5zaG93X29ubHk6Ci0gICAgICAgICAgICBmb3Igc3ViZGlyLCBuYW1lLCBsYXllcmRpciBpbiBzZXQoYWRkbGF5ZXJzKToKKyAgICAgICAgICAgIGxvY2FsYXJncyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgpCisgICAgICAgICAgICBsb2NhbGFyZ3MubGF5ZXJkaXIgPSBbXQorICAgICAgICAgICAgbG9jYWxhcmdzLmZvcmNlID0gYXJncy5mb3JjZQorICAgICAgICAgICAgZm9yIHN1YmRpciwgbmFtZSwgbGF5ZXJkaXIgaW4gYWRkbGF5ZXJzOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxheWVyZGlyKToKICAgICAgICAgICAgICAgICAgICAgaWYgc3ViZGlyOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJBZGRpbmcgbGF5ZXIgXCIlc1wiIHRvIGNvbmYvYmJsYXllcnMuY29uZiIgJSBzdWJkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4oIkFkZGluZyBsYXllciBcIiVzXCIgKCVzKSB0byBjb25mL2JibGF5ZXJzLmNvbmYiICUgKHN1YmRpciwgbGF5ZXJkaXIpKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluKCJBZGRpbmcgbGF5ZXIgXCIlc1wiIHRvIGNvbmYvYmJsYXllcnMuY29uZiIgJSBuYW1lKQotICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKQotICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MubGF5ZXJkaXIgPSBsYXllcmRpcgotICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MuZm9yY2UgPSBhcmdzLmZvcmNlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZG9fYWRkX2xheWVyKGxvY2FsYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbigiQWRkaW5nIGxheWVyIFwiJXNcIiAoJXMpIHRvIGNvbmYvYmJsYXllcnMuY29uZiIgJSAobmFtZSwgbGF5ZXJkaXIpKQorICAgICAgICAgICAgICAgICAgICBsb2NhbGFyZ3MubGF5ZXJkaXIuYXBwZW5kKGxheWVyZGlyKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgICAgIGlmIGxvY2FsYXJncy5sYXllcmRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLmRvX2FkZF9sYXllcihsb2NhbGFyZ3MpCisKICAgICBkZWYgZG9fbGF5ZXJpbmRleF9zaG93X2RlcGVuZHMoc2VsZiwgYXJncyk6CiAgICAgICAgICIiIkZpbmQgbGF5ZXIgZGVwZW5kZW5jaWVzIGZyb20gbGF5ZXIgaW5kZXguCiAiIiIKQEAgLTI2MCwxMiArMTk3LDEyIEBACiAgICAgICAgIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaChhcmdzKQogCiAgICAgZGVmIHJlZ2lzdGVyX2NvbW1hbmRzKHNlbGYsIHNwKToKLSAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2ggPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1mZXRjaCcsIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaCkKKyAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2ggPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1mZXRjaCcsIHNlbGYuZG9fbGF5ZXJpbmRleF9mZXRjaCwgcGFyc2VyZWNpcGVzPUZhbHNlKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1uJywgJy0tc2hvdy1vbmx5JywgaGVscD0nc2hvdyBkZXBlbmRlbmNpZXMgYW5kIGRvIG5vdGhpbmcgZWxzZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icmFuY2gnLCBoZWxwPSdicmFuY2ggbmFtZSB0byBmZXRjaCAoZGVmYXVsdCAlKGRlZmF1bHQpcyknLCBkZWZhdWx0PSdtYXN0ZXInKQorICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnJhbmNoJywgaGVscD0nYnJhbmNoIG5hbWUgdG8gZmV0Y2gnKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1pJywgJy0taWdub3JlJywgaGVscD0nYXNzdW1lIHRoZSBzcGVjaWZpZWQgbGF5ZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGZldGNoZWQvYWRkZWQgKHNlcGFyYXRlIG11bHRpcGxlIGxheWVycyB3aXRoIGNvbW1hcywgbm8gc3BhY2VzKScsIG1ldGF2YXI9J0xBWUVSJykKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2guYWRkX2FyZ3VtZW50KCdsYXllcm5hbWUnLCBuYXJncz0nKycsIGhlbHA9J2xheWVyIHRvIGZldGNoJykKIAotICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9zaG93X2RlcGVuZHMgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnbGF5ZXJpbmRleC1zaG93LWRlcGVuZHMnLCBzZWxmLmRvX2xheWVyaW5kZXhfc2hvd19kZXBlbmRzKQotICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9zaG93X2RlcGVuZHMuYWRkX2FyZ3VtZW50KCctYicsICctLWJyYW5jaCcsIGhlbHA9J2JyYW5jaCBuYW1lIHRvIGZldGNoIChkZWZhdWx0ICUoZGVmYXVsdClzKScsIGRlZmF1bHQ9J21hc3RlcicpCisgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X3Nob3dfZGVwZW5kcyA9IHNlbGYuYWRkX2NvbW1hbmQoc3AsICdsYXllcmluZGV4LXNob3ctZGVwZW5kcycsIHNlbGYuZG9fbGF5ZXJpbmRleF9zaG93X2RlcGVuZHMsIHBhcnNlcmVjaXBlcz1GYWxzZSkKKyAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfc2hvd19kZXBlbmRzLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icmFuY2gnLCBoZWxwPSdicmFuY2ggbmFtZSB0byBmZXRjaCcpCiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X3Nob3dfZGVwZW5kcy5hZGRfYXJndW1lbnQoJ2xheWVybmFtZScsIG5hcmdzPScrJywgaGVscD0nbGF5ZXIgdG8gcXVlcnknKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL1JFQURNRSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ5MjdhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9SRUFETUUKQEAgLTAsMCArMSwyOCBAQAorVGhlIGxheWVyaW5kZXhsaWIgbW9kdWxlIGlzIGRlc2lnbmVkIHRvIHBlcm1pdCBwcm9ncmFtcyB0byB3b3JrIGRpcmVjdGx5Cit3aXRoIGxheWVyIGluZGV4IGluZm9ybWF0aW9uLiAgKFNlZSBsYXllcnMub3BlbmVtYmVkZGVkLm9yZy4uLikKKworVGhlIGxheWVyaW5kZXhsaWIgbW9kdWxlIGluY2x1ZGVzIGEgcGx1Z2luIGludGVyZmFjZSB0aGF0IGlzIHVzZWQgdG8gZXh0ZW5kCit0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eS4gIFRoZXJlIGFyZSB0d28gcHJpbWFyeSBwbHVnaW5zIGF2YWlsYWJsZTogcmVzdGFwaQorYW5kIGNvb2tlci4KKworVGhlIHJlc3RhcGkgcGx1Z2luIHdvcmtzIHdpdGggYSB3ZWIgYmFzZWQgUkVTVCBBcGkgY29tcGF0aWJsZSB3aXRoIHRoZQorbGF5ZXJpbmRleC13ZWIgcHJvamVjdCwgYXMgd2VsbCBhcyB0aGUgYWJpbGl0eSB0byBzdG9yZSBhbmQgcmV0cmllZCBhCit0aGUgaW5mb3JtYXRpb24gZm9yIG9uZSBvciBtb3JlIGZpbGVzIG9uIHRoZSBkaXNrLgorCitUaGUgY29va2VyIHBsdWdpbiB3b3JrcyBieSByZWFkaW5nIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjdXJyZW50IGJ1aWxkCitwcm9qZWN0IGFuZCBwcm9jZXNzaW5nIGl0IGFzIGlmIGl0IHdlcmUgYSBsYXllciBpbmRleC4KKworCitUT0RPOgorCitfX2luaXRfXy5weToKK0ltcGxlbWVudCBsb2NhbCBvbi1kaXNrIGNhY2hpbmcgKHVzaW5nIHRoZSByZXN0IGFwaSBzdG9yZS9sb2FkKQorSW1wbGVtZW50IGxheWVyIGluZGV4IHN0eWxlIHF1ZXJ5IG9wZXJhdGlvbnMgb24gYSBjb21iaW5lZCBpbmRleAorCitjb21tb24ucHk6CitTdG9wIG5ldHdvcmsgYWNjZXNzIGlmIEJCX05PX05FVFdPUksgb3IgYWxsb3dlZCBob3N0cyBpcyByZXN0cmljdGVkCisKK2Nvb2tlci5weToKK0Nvb2tlciAtIEltcGxlbWVudCByZWNpcGUgcGFyc2luZworCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjc5Y2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTM2MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworaW1wb3J0IGRhdGV0aW1lCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgaW1wCisKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Citmcm9tIGxheWVyaW5kZXhsaWIucGx1Z2luIGltcG9ydCBMYXllckluZGV4UGx1Z2luVXJsRXJyb3IKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UubGF5ZXJpbmRleGxpYicpCisKKyMgRXhjZXB0aW9ucworCitjbGFzcyBMYXllckluZGV4RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgJycnTGF5ZXJJbmRleCBHZW5lcmljIEV4Y2VwdGlvbicnJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIHNlbGYubXNnID0gbWVzc2FnZQorICAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBzZWxmLm1zZworCitjbGFzcyBMYXllckluZGV4VXJsRXJyb3IoTGF5ZXJJbmRleEV4Y2VwdGlvbik6CisgICAgJycnRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHVuYWJsZSB0byBhY2Nlc3MgYSBVUkwgZm9yIHNvbWUgcmVhc29uJycnCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWVzc2FnZT0iIik6CisgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAgICBtc2cgPSAiVW5hYmxlIHRvIGFjY2VzcyBsYXllcmluZGV4IHVybCAlczogJXMiICUgKHVybCwgbWVzc2FnZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJVbmFibGUgdG8gYWNjZXNzIGxheWVyaW5kZXggdXJsICVzIiAlIHVybAorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBMYXllckluZGV4RXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKworY2xhc3MgTGF5ZXJJbmRleEZldGNoRXJyb3IoTGF5ZXJJbmRleEV4Y2VwdGlvbik6CisgICAgJycnR2VuZXJhbCBsYXllcmluZGV4IGZldGNoZXIgZXhjZXB0aW9uIHdoZW4gc29tZXRoaW5nIGZhaWxzJycnCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVybCwgbWVzc2FnZT0iIik6CisgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAgICBtc2cgPSAiVW5hYmxlIHRvIGZldGNoIGxheWVyaW5kZXggdXJsICVzOiAlcyIgJSAodXJsLCBtZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gIlVuYWJsZSB0byBmZXRjaCBsYXllcmluZGV4IHVybCAlcyIgJSB1cmwKKyAgICAgICAgc2VsZi51cmwgPSB1cmwKKyAgICAgICAgTGF5ZXJJbmRleEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtc2cpCisKKworIyBJbnRlcmZhY2UgdG8gdGhlIG92ZXJhbGwgbGF5ZXJpbmRleCBzeXN0ZW0KKyMgdGhlIGxheWVyIG1heSBjb250YWluIG9uZSBvciBtb3JlIGluZGl2aWR1YWwgaW5kZXhlcworY2xhc3MgTGF5ZXJJbmRleCgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkKToKKyAgICAgICAgaWYgbm90IGQ6CisgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RXhjZXB0aW9uKCJNdXN0IGJlIGluaXRpYWxpemVkIHdpdGggYmIuZGF0YS4iKQorCisgICAgICAgIHNlbGYuZGF0YSA9IGQKKworICAgICAgICAjIExpc3Qgb2YgTGF5ZXJJbmRleE9iagorICAgICAgICBzZWxmLmluZGV4ZXMgPSBbXQorCisgICAgICAgIHNlbGYucGx1Z2lucyA9IFtdCisKKyAgICAgICAgaW1wb3J0IGJiLnV0aWxzCisgICAgICAgIGJiLnV0aWxzLmxvYWRfcGx1Z2lucyhsb2dnZXIsIHNlbGYucGx1Z2lucywgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKyAgICAgICAgZm9yIHBsdWdpbiBpbiBzZWxmLnBsdWdpbnM6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHBsdWdpbiwgJ2luaXQnKToKKyAgICAgICAgICAgICAgICBwbHVnaW4uaW5pdChzZWxmKQorCisgICAgZGVmIF9fYWRkX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBuZXdJbmRleCA9IExheWVySW5kZXgoc2VsZi5kYXRhKQorCisgICAgICAgIGlmIHNlbGYuX19jbGFzc19fICE9IG5ld0luZGV4Ll9fY2xhc3NfXyBvciBcCisgICAgICAgICAgIG90aGVyLl9fY2xhc3NfXyAhPSBuZXdJbmRleC5fX2NsYXNzX186CisgICAgICAgICAgICByYWlzZSBUeXBlRXhjZXB0aW9uKCJDYW4gbm90IGFkZCBkaWZmZXJlbnQgdHlwZXMuIikKKworICAgICAgICBmb3IgaW5kZXhFbnQgaW4gc2VsZi5pbmRleGVzOgorICAgICAgICAgICAgbmV3SW5kZXguaW5kZXhlcy5hcHBlbmQoaW5kZXhFbnQpCisKKyAgICAgICAgZm9yIGluZGV4RW50IGluIG90aGVyLmluZGV4ZXM6CisgICAgICAgICAgICBuZXdJbmRleC5pbmRleGVzLmFwcGVuZChpbmRleEVudCkKKworICAgICAgICByZXR1cm4gbmV3SW5kZXgKKworICAgIGRlZiBfcGFyc2VfcGFyYW1zKHNlbGYsIHBhcmFtcyk6CisgICAgICAgICcnJ1Rha2UgYSBwYXJhbWV0ZXIgbGlzdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBvZiBwYXJhbWV0ZXJzLgorCisgICAgICAgICAgIEV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBkYXRhIG9mIHVybGxpYi5wYXJzZS51cmxwYXJzZSh1cmwpLnBhcmFtcworCisgICAgICAgICAgIElmIHRoZXJlIGFyZSB0d28gY29uZmxpY3RpbmcgcGFyYW1ldGVycywgbGFzdCBpbiB3aW5zLi4uCisgICAgICAgICcnJworCisgICAgICAgIHBhcmFtX2RpY3QgPSB7fQorICAgICAgICBmb3IgcGFyYW0gaW4gcGFyYW1zLnNwbGl0KCc7Jyk6CisgICAgICAgICAgIGlmIG5vdCBwYXJhbToKKyAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgIGl0ZW0gPSBwYXJhbS5zcGxpdCgnPScsIDEpCisgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCBpdGVtKQorICAgICAgICAgICBwYXJhbV9kaWN0W2l0ZW1bMF1dID0gaXRlbVsxXQorCisgICAgICAgIHJldHVybiBwYXJhbV9kaWN0CisKKyAgICBkZWYgX2ZldGNoX3VybChzZWxmLCB1cmwsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsIGRlYnVnbGV2ZWw9MCk6CisgICAgICAgICcnJ0ZldGNoIGRhdGEgZnJvbSBhIHNwZWNpZmljIFVSTC4KKworICAgICAgICAgICBGZXRjaCBzb21ldGhpbmcgZnJvbSBhIHNwZWNpZmljIFVSTC4gIFRoaXMgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvCisgICAgICAgICAgIGZldGNoIGRhdGEgZnJvbSBhIGxheWVyaW5kZXgtd2ViIGluc3RhbmNlLCBidXQgbWF5IGJlIHVzZWZ1bCBmb3Igb3RoZXIKKyAgICAgICAgICAgcmF3IGZldGNoIGFjdGlvbnMuCisKKyAgICAgICAgICAgSXQgaXMgbm90IGRlc2lnbmVkIHRvIGJlIHVzZWQgdG8gZmV0Y2ggcmVjaXBlIHNvdXJjZXMgb3Igc2ltaWxhci4gIHRoZQorICAgICAgICAgICByZWd1bGFyIGZldGNoZXIgY2xhc3Mgc2hvdWxkIHVzZWQgZm9yIHRoYXQuCisKKyAgICAgICAgICAgSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gY2hlY2sgQkJfTk9fTkVUV09SSyBhbmQgcmVsYXRlZAorICAgICAgICAgICBCQl9BTExPV0VEX05FVFdPUktTLgorICAgICAgICAnJycKKworICAgICAgICBpZiBub3QgdXJsOgorICAgICAgICAgICAgcmFpc2UgTGF5ZXJJbmRleFVybEVycm9yKHVybCwgImVtcHR5IHVybCIpCisKKyAgICAgICAgaW1wb3J0IHVybGxpYgorICAgICAgICBmcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuLCBSZXF1ZXN0CisgICAgICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCisgICAgICAgIHVwID0gdXJscGFyc2UodXJsKQorCisgICAgICAgIGlmIHVzZXJuYW1lOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJDb25maWd1cmluZyBhdXRoZW50aWNhdGlvbiBmb3IgJXMuLi4iICUgdXJsKQorICAgICAgICAgICAgcGFzc3dvcmRfbWdyID0gdXJsbGliLnJlcXVlc3QuSFRUUFBhc3N3b3JkTWdyV2l0aERlZmF1bHRSZWFsbSgpCisgICAgICAgICAgICBwYXNzd29yZF9tZ3IuYWRkX3Bhc3N3b3JkKE5vbmUsICIlczovLyVzIiAlICh1cC5zY2hlbWUsIHVwLm5ldGxvYyksIHVzZXJuYW1lLCBwYXNzd29yZCkKKyAgICAgICAgICAgIGhhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3IpCisgICAgICAgICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoaGFuZGxlciwgdXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyKGRlYnVnbGV2ZWw9ZGVidWdsZXZlbCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIodXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyKGRlYnVnbGV2ZWw9ZGVidWdsZXZlbCkpCisKKyAgICAgICAgdXJsbGliLnJlcXVlc3QuaW5zdGFsbF9vcGVuZXIob3BlbmVyKQorCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiRmV0Y2hpbmcgJXMgKCVzKS4uLiIgJSAodXJsLCBbIndpdGhvdXQgYXV0aGVudGljYXRpb24iLCAid2l0aCBhdXRoZW50aWNhdGlvbiJdW2Jvb2wodXNlcm5hbWUpXSkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzID0gdXJsb3BlbihSZXF1ZXN0KHVybCwgaGVhZGVycz17J1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKGJpdGJha2UvbGliL2xheWVyaW5kZXgpJ30sIHVudmVyaWZpYWJsZT1UcnVlKSkKKyAgICAgICAgZXhjZXB0IHVybGxpYi5lcnJvci5IVFRQRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiSFRUUCBFcnJvcjogJXM6ICVzIiAlIChlLmNvZGUsIGUucmVhc29uKSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiIFJlcXVlc3RlZDogJXMiICUgKHVybCkpCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIiBBY3R1YWw6ICAgICVzIiAlIChlLmdldHVybCgpKSkKKworICAgICAgICAgICAgaWYgZS5jb2RlID09IDQwNDoKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJlcXVlc3Qgbm90IGZvdW5kLiIpCisgICAgICAgICAgICAgICAgcmFpc2UgTGF5ZXJJbmRleEZldGNoRXJyb3IodXJsLCBlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkhlYWRlcnM6XG4lcyIgJSAoZS5oZWFkZXJzKSkKKyAgICAgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RmV0Y2hFcnJvcih1cmwsIGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBlcnJvciA9IDAKKyAgICAgICAgICAgIHJlYXNvbiA9ICIiCisKKyAgICAgICAgICAgICMgUHJvY2VzcyBiYXNlIE9TRXJyb3IgZmlyc3QuLi4KKyAgICAgICAgICAgIGlmIGhhc2F0dHIoZSwgJ2Vycm5vJyk6CisgICAgICAgICAgICAgICAgZXJyb3IgPSBlLmVycm5vCisgICAgICAgICAgICAgICAgcmVhc29uID0gZS5zdHJlcnJvcgorCisgICAgICAgICAgICAjIFByb2Nlc3MgZ2FpZXJyb3IgKHNvY2tldCBlcnJvcikgc3ViY2xhc3MgaWYgYXZhaWxhYmxlLgorICAgICAgICAgICAgaWYgaGFzYXR0cihlLCAncmVhc29uJykgYW5kIGhhc2F0dHIoZS5yZWFzb24sICdlcnJubycpIGFuZCBoYXNhdHRyKGUucmVhc29uLCAnc3RyZXJyb3InKToKKyAgICAgICAgICAgICAgICBlcnJvciA9IGUucmVhc29uLmVycm5vCisgICAgICAgICAgICAgICAgcmVhc29uID0gZS5yZWFzb24uc3RyZXJyb3IKKyAgICAgICAgICAgICAgICBpZiBlcnJvciA9PSAtMjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGF5ZXJJbmRleEZldGNoRXJyb3IodXJsLCAiJXM6ICVzIiAlIChlLCByZWFzb24pKQorCisgICAgICAgICAgICBpZiBlcnJvciBhbmQgZXJyb3IgIT0gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RmV0Y2hFcnJvcih1cmwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbjogW0Vycm9yICVzXSAlcyIgJSAoZXJyb3IsIHJlYXNvbikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIExheWVySW5kZXhGZXRjaEVycm9yKHVybCwgIlVuYWJsZSB0byBmZXRjaCBPU0Vycm9yIGV4Y2VwdGlvbjogJXMiICUgZSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICIuLi5mZXRjaGluZyAlcyAoJXMpLCBkb25lLiIgJSAodXJsLCBbIndpdGhvdXQgYXV0aGVudGljYXRpb24iLCAid2l0aCBhdXRoZW50aWNhdGlvbiJdW2Jvb2wodXNlcm5hbWUpXSkpCisKKyAgICAgICAgcmV0dXJuIHJlcworCisKKyAgICBkZWYgbG9hZF9sYXllcmluZGV4KHNlbGYsIGluZGV4VVJJLCBsb2FkPVsnbGF5ZXJEZXBlbmRlbmNpZXMnLCAncmVjaXBlcycsICdtYWNoaW5lcycsICdkaXN0cm9zJ10sIHJlbG9hZD1GYWxzZSk6CisgICAgICAgICcnJ0xvYWQgdGhlIGxheWVyaW5kZXguCisKKyAgICAgICAgICAgaW5kZXhVUkkgLSBBbiBpbmRleCB0byBsb2FkLiAgKFVzZSBtdWx0aXBsZSBjYWxscyB0byBsb2FkIG11bHRpcGxlIGluZGV4ZXMpCisgICAgICAgICAgIAorICAgICAgICAgICByZWxvYWQgLSBJZiByZWxvYWQgaXMgVHJ1ZSwgdGhlbiBhbnkgcHJldmlvdXNseSBsb2FkZWQgaW5kZXhlcyB3aWxsIGJlIGZvcmdvdHRlbi4KKyAgICAgICAgICAgCisgICAgICAgICAgIGxvYWQgLSBMaXN0IG9mIGVsZW1lbnRzIHRvIGxvYWQuICBEZWZhdWx0IGxvYWRzIGFsbCBpdGVtcy4KKyAgICAgICAgICAgICAgICAgIE5vdGU6IHBsdWdzIG1heSBpZ25vcmUgdGhpcy4KKworVGhlIGZvcm1hdCBvZiB0aGUgaW5kZXhVUkk6CisKKyAgPHVybD47YnJhbmNoPTxicmFuY2g+O2NhY2hlPTxjYWNoZT47ZGVzYz08ZGVzY3JpcHRpb24+CisKKyAgTm90ZTogdGhlICdicmFuY2gnIHBhcmFtZXRlciBpZiBzZXQgY2FuIHNlbGVjdCBtdWx0aXBsZSBicmFuY2hlcyBieSB1c2luZworICBjb21tYSwgc3VjaCBhcyAnYnJhbmNoPW1hc3Rlcixtb3J0eSxweXJvJy4gIEhvd2V2ZXIsIG1hbnkgb3BlcmF0aW9ucyBvbmx5IGxvb2sKKyAgYXQgdGhlIC1maXJzdC0gYnJhbmNoIHNwZWNpZmllZCEKKworICBUaGUgY2FjaGUgdmFsdWUgbWF5IGJlIHVuZGVmaW5lZCwgaW4gdGhpcyBjYXNlIGEgbmV0d29yayBmYWlsdXJlIHdpbGwKKyAgcmVzdWx0IGluIGFuIGVycm9yLCBvdGhlcndpc2UgdGhlIHN5c3RlbSB3aWxsIGxvb2sgZm9yIGEgZmlsZSBvZiB0aGUgY2FjaGUKKyAgbmFtZSBhbmQgbG9hZCB0aGF0IGluc3RlYWQuCisKKyAgRm9yIGV4YW1wbGU6CisKKyAgaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLzticmFuY2g9bWFzdGVyO2Rlc2M9T3BlbkVtYmVkZGVkJTIwTGF5ZXIlMjBJbmRleAorICBjb29rZXI6Ly8KKycnJworICAgICAgICBpZiByZWxvYWQ6CisgICAgICAgICAgICBzZWxmLmluZGV4ZXMgPSBbXQorCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnTG9hZGluZzogJXMnICUgaW5kZXhVUkkpCisKKyAgICAgICAgaWYgbm90IHNlbGYucGx1Z2luczoKKyAgICAgICAgICAgIHJhaXNlIExheWVySW5kZXhFeGNlcHRpb24oIk5vIExheWVySW5kZXggUGx1Z2lucyBhdmFpbGFibGUiKQorCisgICAgICAgIGZvciBwbHVnaW4gaW4gc2VsZi5wbHVnaW5zOgorICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgcGx1Z2luIHdhcyBpbml0aWFsaXplZAorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdUcnlpbmcgJXMnICUgcGx1Z2luLl9fY2xhc3NfXykKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHBsdWdpbiwgJ3R5cGUnKSBvciBub3QgcGx1Z2luLnR5cGU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFRPRE86IEltcGxlbWVudCAnY2FjaGUnLCBmb3Igd2hlbiB0aGUgbmV0d29yayBpcyBub3QgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgaW5kZXhFbnQgPSBwbHVnaW4ubG9hZF9pbmRleChpbmRleFVSSSwgbG9hZCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IExheWVySW5kZXhQbHVnaW5VcmxFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXMgZG9lc24ndCBzdXBwb3J0ICVzIiAlIChwbHVnaW4udHlwZSwgZS51cmwpKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJObyBwbHVnaW5zIHN1cHBvcnQgJXMiICUgaW5kZXhVUkkpCisgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RXhjZXB0aW9uKCJObyBwbHVnaW5zIHN1cHBvcnQgJXMiICUgaW5kZXhVUkkpCisKKyAgICAgICAgIyBNYXJrIENPTkZJRyBkYXRhIGFzIHNvbWV0aGluZyB3ZSd2ZSBhZGRlZC4uLgorICAgICAgICBpbmRleEVudC5jb25maWdbJ2xvY2FsJ10gPSBbXQorICAgICAgICBpbmRleEVudC5jb25maWdbJ2xvY2FsJ10uYXBwZW5kKCdjb25maWcnKQorCisgICAgICAgICMgTm8gbG9uZ2VyIHBlcm1pdCBjaGFuZ2VzLi4KKyAgICAgICAgaW5kZXhFbnQubG9ja0RhdGEoKQorCisgICAgICAgIHNlbGYuaW5kZXhlcy5hcHBlbmQoaW5kZXhFbnQpCisKKyAgICBkZWYgc3RvcmVfbGF5ZXJpbmRleChzZWxmLCBpbmRleFVSSSwgaW5kZXg9Tm9uZSk6CisgICAgICAgICcnJ1N0b3JlIG9uZSBsYXllcmluZGV4CisKK1R5cGljYWxseSB0aGlzIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUgYSBsb2NhbCBjYWNoZSBmaWxlIG9mIGEgcmVtb3RlIGluZGV4LgorCisgIGZpbGU6Ly88cGF0aD47YnJhbmNoPTxicmFuY2g+CisKK1dlIGNhbiB3cml0ZSBvdXQgaW4gZWl0aGVyIHRoZSByZXN0YXBpIG9yIGRqYW5nbyBmb3JtYXRzLiAgVGhlIHNwbGl0IG9wdGlvbgord2lsbCB3cml0ZSBvdXQgdGhlIGluZGl2aWR1YWwgZWxlbWVudHMgc3BsaXQgYnkgbGF5ZXIgYW5kIHJlbGF0ZWQgY29tcG9uZW50cy4KKycnJworICAgICAgICBpZiBub3QgaW5kZXg6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTm8gaW5kZXggdG8gd3JpdGUsIG5vdGhpbmcgdG8gZG8uJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG5vdCBzZWxmLnBsdWdpbnM6CisgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RXhjZXB0aW9uKCJObyBMYXllckluZGV4IFBsdWdpbnMgYXZhaWxhYmxlIikKKworICAgICAgICBmb3IgcGx1Z2luIGluIHNlbGYucGx1Z2luczoKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIHBsdWdpbiB3YXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnVHJ5aW5nICVzJyAlIHBsdWdpbi5fX2NsYXNzX18pCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihwbHVnaW4sICd0eXBlJykgb3Igbm90IHBsdWdpbi50eXBlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGx1Z2luLnN0b3JlX2luZGV4KGluZGV4VVJJLCBpbmRleCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IExheWVySW5kZXhQbHVnaW5VcmxFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXMgZG9lc24ndCBzdXBwb3J0ICVzIiAlIChwbHVnaW4udHlwZSwgZS51cmwpKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJTdG9yZSBub3QgaW1wbGVtZW50ZWQgaW4gJXMiICUgcGx1Z2luLnR5cGUpCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJObyBwbHVnaW5zIHN1cHBvcnQgJXMiICUgdXJsKQorICAgICAgICAgICAgcmFpc2UgTGF5ZXJJbmRleEV4Y2VwdGlvbigiTm8gcGx1Z2lucyBzdXBwb3J0ICVzIiAlIHVybCkKKworCisgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBvciBGYWxzZSBpZiB0aGUgaW5kZXggaGFzIGFueSB1c2FibGUgZGF0YS4KKworV2UgY2hlY2sgdGhlIGluZGV4ZXMgZW50cmllcyB0byBzZWUgaWYgdGhleSBoYXZlIGEgYnJhbmNoIHNldCwgYXMgd2VsbCBhcworbGF5ZXJCcmFuY2hlcyBzZXQuICBJZiBub3QsIHRoZXkgYXJlIGVmZmVjdGl2ZWx5IGJsYW5rLicnJworCisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIGluZGV4IGluIHNlbGYuaW5kZXhlczoKKyAgICAgICAgICAgIGlmIGluZGV4Ll9fYm9vbF9fKCk6CisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIG5vdCBmb3VuZAorCisKKyAgICBkZWYgZmluZF92Y3NfdXJsKHNlbGYsIHZjc191cmwsIGJyYW5jaD1Ob25lKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSBmaXJzdCBsYXllckJyYW5jaCB3aXRoIHRoZSBnaXZlbiB2Y3NfdXJsCisKKyAgICAgICAgICAgSWYgYSBicmFuY2ggaGFzIG5vdCBiZWVuIHNwZWNpZmllZCwgd2Ugd2lsbCBpdGVyYXRlIG92ZXIgdGhlIGJyYW5jaGVzIGluCisgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdW50aWwgdGhlIGZpcnN0IHZjc191cmwvYnJhbmNoIG1hdGNoLicnJworCisgICAgICAgIGZvciBpbmRleCBpbiBzZWxmLmluZGV4ZXM6CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgJyBzZWFyY2hpbmcgJXMnICUgaW5kZXguY29uZmlnWydERVNDUklQVElPTiddKQorICAgICAgICAgICAgbGF5ZXJCcmFuY2ggPSBpbmRleC5maW5kX3Zjc191cmwodmNzX3VybCwgW2JyYW5jaF0pCisgICAgICAgICAgICBpZiBsYXllckJyYW5jaDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJCcmFuY2gKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBmaW5kX2NvbGxlY3Rpb24oc2VsZiwgY29sbGVjdGlvbiwgdmVyc2lvbj1Ob25lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybiB0aGUgZmlyc3QgbGF5ZXJCcmFuY2ggd2l0aCB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBuYW1lCisKKyAgICAgICAgICAgSWYgYSBicmFuY2ggaGFzIG5vdCBiZWVuIHNwZWNpZmllZCwgd2Ugd2lsbCBpdGVyYXRlIG92ZXIgdGhlIGJyYW5jaGVzIGluCisgICAgICAgICAgIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gdW50aWwgdGhlIGZpcnN0IGNvbGxlY3Rpb24vYnJhbmNoIG1hdGNoLicnJworCisgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnZmluZF9jb2xsZWN0aW9uOiAlcyAoJXMpICVzJyAlIChjb2xsZWN0aW9uLCB2ZXJzaW9uLCBicmFuY2gpKQorCisgICAgICAgIGlmIGJyYW5jaDoKKyAgICAgICAgICAgIGJyYW5jaGVzID0gW2JyYW5jaF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5jaGVzID0gTm9uZQorCisgICAgICAgIGZvciBpbmRleCBpbiBzZWxmLmluZGV4ZXM6CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgJyBzZWFyY2hpbmcgJXMnICUgaW5kZXguY29uZmlnWydERVNDUklQVElPTiddKQorICAgICAgICAgICAgbGF5ZXJCcmFuY2ggPSBpbmRleC5maW5kX2NvbGxlY3Rpb24oY29sbGVjdGlvbiwgdmVyc2lvbiwgYnJhbmNoZXMpCisgICAgICAgICAgICBpZiBsYXllckJyYW5jaDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJCcmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnQ29sbGVjdGlvbiAlcyAoJXMpIG5vdCBmb3VuZCBmb3IgYnJhbmNoICglcyknICUgKGNvbGxlY3Rpb24sIHZlcnNpb24sIGJyYW5jaCkpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZmluZF9sYXllcmJyYW5jaChzZWxmLCBuYW1lLCBicmFuY2g9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybiB0aGUgbGF5ZXJCcmFuY2ggaXRlbSBmb3IgYSBnaXZlbiBuYW1lIGFuZCBicmFuY2gKKworICAgICAgICAgICBJZiBhIGJyYW5jaCBoYXMgbm90IGJlZW4gc3BlY2lmaWVkLCB3ZSB3aWxsIGl0ZXJhdGUgb3ZlciB0aGUgYnJhbmNoZXMgaW4KKyAgICAgICAgICAgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB1bnRpbCB0aGUgZmlyc3QgbmFtZS9icmFuY2ggbWF0Y2guJycnCisKKyAgICAgICAgaWYgYnJhbmNoOgorICAgICAgICAgICAgYnJhbmNoZXMgPSBbYnJhbmNoXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJhbmNoZXMgPSBOb25lCisKKyAgICAgICAgZm9yIGluZGV4IGluIHNlbGYuaW5kZXhlczoKKyAgICAgICAgICAgIGxheWVyQnJhbmNoID0gaW5kZXguZmluZF9sYXllcmJyYW5jaChuYW1lLCBicmFuY2hlcykKKyAgICAgICAgICAgIGlmIGxheWVyQnJhbmNoOgorICAgICAgICAgICAgICAgIHJldHVybiBsYXllckJyYW5jaAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGZpbmRfZGVwZW5kZW5jaWVzKHNlbGYsIG5hbWVzPU5vbmUsIGxheWVyYnJhbmNoZXM9Tm9uZSwgaWdub3Jlcz1Ob25lKToKKyAgICAgICAgJycnUmV0dXJuIGEgdHVwbGUgb2YgYWxsIGRlcGVuZGVuY2llcyBhbmQgdmFsaWQgaXRlbXMgZm9yIHRoZSBsaXN0IG9mIChsYXllcikgbmFtZXMKKworICAgICAgICBUaGUgZGVwZW5kZW5jeSBzY2FubmluZyBoYXBwZW5zIGRlcHRoLWZpcnN0LiAgVGhlIHJldHVybmVkCisgICAgICAgIGRlcGVuZGVuY2llcyBzaG91bGQgYmUgaW4gdGhlIGJlc3Qgb3JkZXIgdG8gZGVmaW5lIGJibGF5ZXJzLgorCisgICAgICAgICAgbmFtZXMgLSBsaXN0IG9mIGxheWVyIG5hbWVzIChzZWFyY2hpbmcgbGF5ZXJJdGVtcykKKyAgICAgICAgICBicmFuY2hlcyAtIHdoZW4gc3BlY2lmaWVkICh3aXRoIG5hbWVzKSBvbmx5IHRoaXMgbGlzdCBvZiBicmFuY2hlcyBhcmUgZXZhbHVhdGVkCisKKyAgICAgICAgICBsYXllcmJyYW5jaGVzIC0gbGlzdCBvZiBsYXllcmJyYW5jaGVzIHRvIHJlc29sdmUgZGVwZW5kZW5jaWVzCisKKyAgICAgICAgICBpZ25vcmVzIC0gbGlzdCBvZiBsYXllciBuYW1lcyB0byBpZ25vcmUKKworICAgICAgICByZXR1cm46IChkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKyAgICAgICAgICBkZXBlbmRlbmNpZXNbTGF5ZXJJdGVtLm5hbWVdID0gWyBMYXllckJyYW5jaCwgTGF5ZXJEZXBlbmRlbmN5MSwgTGF5ZXJEZXBlbmRlbmN5MiwgLi4uIF0KKyAgICAgICAgICBpbnZhbGlkID0gWyBMYXllckl0ZW0ubmFtZTEsIExheWVySXRlbS5uYW1lMiwgLi4uIF0KKyAgICAgICAgJycnCisKKyAgICAgICAgaW52YWxpZCA9IFtdCisKKyAgICAgICAgIyBDb252ZXJ0IG5hbWUvYnJhbmNoIHRvIGxheWVyYnJhbmNoZXMKKyAgICAgICAgaWYgbGF5ZXJicmFuY2hlcyBpcyBOb25lOgorICAgICAgICAgICAgbGF5ZXJicmFuY2hlcyA9IFtdCisKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBpZiBpZ25vcmVzIGFuZCBuYW1lIGluIGlnbm9yZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZm9yIGluZGV4IGluIHNlbGYuaW5kZXhlczoKKyAgICAgICAgICAgICAgICBsYXllcmJyYW5jaCA9IGluZGV4LmZpbmRfbGF5ZXJicmFuY2gobmFtZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGF5ZXJicmFuY2g6CisgICAgICAgICAgICAgICAgICAgICMgTm90IGluIHRoaXMgaW5kZXgsIGhvcGVmdWxseSBpdCdzIGluIGFub3RoZXIuLi4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBsYXllcmJyYW5jaGVzLmFwcGVuZChsYXllcmJyYW5jaCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZChuYW1lKQorCisKKyAgICAgICAgZGVmIF9yZXNvbHZlX2RlcGVuZGVuY2llcyhsYXllcmJyYW5jaGVzLCBpZ25vcmVzLCBkZXBlbmRlbmNpZXMsIGludmFsaWQpOgorICAgICAgICAgICAgZm9yIGxheWVyYnJhbmNoIGluIGxheWVyYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgaWYgaWdub3JlcyBhbmQgbGF5ZXJicmFuY2gubGF5ZXIubmFtZSBpbiBpZ25vcmVzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgIyBHZXQgYSBsaXN0IG9mIGRlcGVuZGVuY2llcyBhbmQgdGhlbiByZWN1cnNpdmVseSBwcm9jZXNzIHRoZW0KKyAgICAgICAgICAgICAgICBmb3IgbGF5ZXJkZXBlbmRlbmN5IGluIGxheWVyYnJhbmNoLmluZGV4LmxheWVyRGVwZW5kZW5jaWVzX2xheWVyQnJhbmNoSWRbbGF5ZXJicmFuY2guaWRdOgorICAgICAgICAgICAgICAgICAgICBkZXBsYXllcmJyYW5jaCA9IGxheWVyZGVwZW5kZW5jeS5kZXBlbmRlbmN5X2xheWVyQnJhbmNoCisKKyAgICAgICAgICAgICAgICAgICAgaWYgaWdub3JlcyBhbmQgZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZSBpbiBpZ25vcmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbGl0dGxlIGJsb2NrIGlzIHdoeSB3ZSBjYW4ndCByZS11c2UgdGhlIExheWVySW5kZXhPYmogdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBtdXN0IGJlIGFibGUgdG8gc2F0aXNmeSBlYWNoIGRlcGVuZGVuY2llcyBhY3Jvc3MgbGF5ZXIgaW5kZXhlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgIyB1c2UgdGhlIGxheWVyIGluZGV4IG9yZGVyIGZvciBwcmlvcml0eS4gIChyIHN0YW5kcyBmb3IgcmVwbGFjZW1lbnQgYmVsb3cpCisKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGlzIGlzIHRoZSBwcmltYXJ5IGluZGV4LCB3ZSBjYW4gZmFzdCBwYXRoIGFuZCBza2lwIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVwbGF5ZXJicmFuY2guaW5kZXggIT0gc2VsZi5pbmRleGVzWzBdOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJcyB0aGVyZSBhbiBlbnRyeSBpbiBhIHByaW9yIGluZGV4IGZvciB0aGlzIGNvbGxlY3Rpb24vdmVyc2lvbj8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJkZXBsYXllcmJyYW5jaCA9IHNlbGYuZmluZF9jb2xsZWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb249ZGVwbGF5ZXJicmFuY2guY29sbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWRlcGxheWVyYnJhbmNoLnZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJkZXBsYXllcmJyYW5jaCAhPSBkZXBsYXllcmJyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdSZXBsYWNlZCAlczolczolcyB3aXRoICVzOiVzOiVzJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlcGxheWVyYnJhbmNoLmluZGV4LmNvbmZpZ1snREVTQ1JJUFRJT04nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxheWVyYnJhbmNoLmJyYW5jaC5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkZXBsYXllcmJyYW5jaC5pbmRleC5jb25maWdbJ0RFU0NSSVBUSU9OJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGVwbGF5ZXJicmFuY2guYnJhbmNoLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxheWVyYnJhbmNoID0gcmRlcGxheWVyYnJhbmNoCisKKyAgICAgICAgICAgICAgICAgICAgIyBOZXcgZGVwZW5kZW5jeSwgd2UgbmVlZCB0byByZXNvbHZlIGl0IG5vdy4uLiBkZXB0aC1maXJzdAorICAgICAgICAgICAgICAgICAgICBpZiBkZXBsYXllcmJyYW5jaC5sYXllci5uYW1lIG5vdCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkKSA9IF9yZXNvbHZlX2RlcGVuZGVuY2llcyhbZGVwbGF5ZXJicmFuY2hdLCBpZ25vcmVzLCBkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZSBub3QgaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzW2RlcGxheWVyYnJhbmNoLmxheWVyLm5hbWVdID0gW2RlcGxheWVyYnJhbmNoLCBsYXllcmRlcGVuZGVuY3ldCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsYXllcmRlcGVuZGVuY3kgbm90IGluIGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaC5sYXllci5uYW1lXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNbZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZV0uYXBwZW5kKGxheWVyZGVwZW5kZW5jeSkKKworICAgICAgICAgICAgcmV0dXJuIChkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKyAgICAgICAgIyBPSywgcmVzb2x2ZSB0aGlzIG9uZS4uLgorICAgICAgICBkZXBlbmRlbmNpZXMgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIChkZXBlbmRlbmNpZXMsIGludmFsaWQpID0gX3Jlc29sdmVfZGVwZW5kZW5jaWVzKGxheWVyYnJhbmNoZXMsIGlnbm9yZXMsIGRlcGVuZGVuY2llcywgaW52YWxpZCkKKworICAgICAgICBmb3IgbGF5ZXJicmFuY2ggaW4gbGF5ZXJicmFuY2hlczoKKyAgICAgICAgICAgIGlmIGxheWVyYnJhbmNoLmxheWVyLm5hbWUgbm90IGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNbbGF5ZXJicmFuY2gubGF5ZXIubmFtZV0gPSBbbGF5ZXJicmFuY2hdCisKKyAgICAgICAgcmV0dXJuIChkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKworICAgIGRlZiBsaXN0X29iaihzZWxmLCBvYmplY3QpOgorICAgICAgICAnJydQcmludCB2aWEgdGhlIHBsYWluIGxvZ2dlciBvYmplY3QgaW5mb3JtYXRpb24KKworVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGltcGxlbWVudCBkZWJ1Z2dpbmcgYW5kIHByb3ZpZGUgdGhlIHVzZXIgaW5mby4KKycnJworICAgICAgICBmb3IgbGl4IGluIHNlbGYuaW5kZXhlczoKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGxpeCwgb2JqZWN0KToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCcnKQorICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnSW5kZXg6ICVzJyAlIGxpeC5jb25maWdbJ0RFU0NSSVBUSU9OJ10pCisKKyAgICAgICAgICAgIG91dHB1dCA9IFtdCisKKyAgICAgICAgICAgIGlmIG9iamVjdCA9PSAnYnJhbmNoZXMnOgorICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAoJyVzICVzICVzJyAlICgnezoyNn0nLmZvcm1hdCgnYnJhbmNoJyksICd7OjM0fScuZm9ybWF0KCdkZXNjcmlwdGlvbicpLCAnezoyMn0nLmZvcm1hdCgnYml0YmFrZSBicmFuY2gnKSkpCisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnezotXjgwfScuZm9ybWF0KCIiKSkKKyAgICAgICAgICAgICAgICBmb3IgYnJhbmNoaWQgaW4gbGl4LmJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCclcyAlcyAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MjZ9Jy5mb3JtYXQobGl4LmJyYW5jaGVzW2JyYW5jaGlkXS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezozNH0nLmZvcm1hdChsaXguYnJhbmNoZXNbYnJhbmNoaWRdLnNob3J0X2Rlc2NyaXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezoyMn0nLmZvcm1hdChsaXguYnJhbmNoZXNbYnJhbmNoaWRdLmJpdGJha2VfYnJhbmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzb3J0ZWQob3V0cHV0KToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluIChsaW5lKQorCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgb2JqZWN0ID09ICdsYXllckl0ZW1zJzoKKyAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCclcyAlcycgJSAoJ3s6MjZ9Jy5mb3JtYXQoJ2xheWVyJyksICd7OjM0fScuZm9ybWF0KCdkZXNjcmlwdGlvbicpKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCd7Oi1eODB9Jy5mb3JtYXQoIiIpKQorICAgICAgICAgICAgICAgIGZvciBsYXllcmlkIGluIGxpeC5sYXllckl0ZW1zOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCclcyAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MjZ9Jy5mb3JtYXQobGl4LmxheWVySXRlbXNbbGF5ZXJpZF0ubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MzR9Jy5mb3JtYXQobGl4LmxheWVySXRlbXNbbGF5ZXJpZF0uc3VtbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc29ydGVkKG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAobGluZSkKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG9iamVjdCA9PSAnbGF5ZXJCcmFuY2hlcyc6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnJXMgJXMgJXMnICUgKCd7OjI2fScuZm9ybWF0KCdsYXllcicpLCAnezozNH0nLmZvcm1hdCgnZGVzY3JpcHRpb24nKSwgJ3s6MTl9Jy5mb3JtYXQoJ2NvbGxlY3Rpb246dmVyc2lvbicpKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCd7Oi1eODB9Jy5mb3JtYXQoIiIpKQorICAgICAgICAgICAgICAgIGZvciBsYXllcmJyYW5jaGlkIGluIGxpeC5sYXllckJyYW5jaGVzOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCclcyAlcyAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MjZ9Jy5mb3JtYXQobGl4LmxheWVyQnJhbmNoZXNbbGF5ZXJicmFuY2hpZF0ubGF5ZXIubmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MzR9Jy5mb3JtYXQobGl4LmxheWVyQnJhbmNoZXNbbGF5ZXJicmFuY2hpZF0ubGF5ZXIuc3VtbWFyeSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MTl9Jy5mb3JtYXQoIiVzOiVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpeC5sYXllckJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLmNvbGxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpeC5sYXllckJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLnZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNvcnRlZChvdXRwdXQpOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKGxpbmUpCisKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBvYmplY3QgPT0gJ2xheWVyRGVwZW5kZW5jaWVzJzoKKyAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCclcyAlcyAlcyAlcycgJSAoJ3s6MTl9Jy5mb3JtYXQoJ2JyYW5jaCcpLCAnezoyNn0nLmZvcm1hdCgnbGF5ZXInKSwgJ3s6MTF9Jy5mb3JtYXQoJ2RlcGVuZGVuY3knKSwgJ3s6MjZ9Jy5mb3JtYXQoJ2xheWVyJykpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAoJ3s6LV44MH0nLmZvcm1hdCgiIikpCisgICAgICAgICAgICAgICAgZm9yIGxheWVyRGVwZW5kZW5jeSBpbiBsaXgubGF5ZXJEZXBlbmRlbmNpZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXgubGF5ZXJEZXBlbmRlbmNpZXNbbGF5ZXJEZXBlbmRlbmN5XS5kZXBlbmRlbmN5X2xheWVyQnJhbmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCclcyAlcyAlcyAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MTl9Jy5mb3JtYXQobGl4LmxheWVyRGVwZW5kZW5jaWVzW2xheWVyRGVwZW5kZW5jeV0ubGF5ZXJicmFuY2guYnJhbmNoLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7OjI2fScuZm9ybWF0KGxpeC5sYXllckRlcGVuZGVuY2llc1tsYXllckRlcGVuZGVuY3ldLmxheWVyYnJhbmNoLmxheWVyLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7OjExfScuZm9ybWF0KCdyZXF1aXJlcycgaWYgbGl4LmxheWVyRGVwZW5kZW5jaWVzW2xheWVyRGVwZW5kZW5jeV0ucmVxdWlyZWQgZWxzZSAncmVjb21tZW5kcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7OjI2fScuZm9ybWF0KGxpeC5sYXllckRlcGVuZGVuY2llc1tsYXllckRlcGVuZGVuY3ldLmRlcGVuZGVuY3lfbGF5ZXJCcmFuY2gubGF5ZXIubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc29ydGVkKG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAobGluZSkKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG9iamVjdCA9PSAncmVjaXBlcyc6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnJXMgJXMgJXMnICUgKCd7OjIwfScuZm9ybWF0KCdyZWNpcGUnKSwgJ3s6MTB9Jy5mb3JtYXQoJ3ZlcnNpb24nKSwgJ2xheWVyJykpCisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnezotXjgwfScuZm9ybWF0KCIiKSkKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBbXQorICAgICAgICAgICAgICAgIGZvciByZWNpcGUgaW4gbGl4LnJlY2lwZXM6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJyVzICVzICVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezozMH0nLmZvcm1hdChsaXgucmVjaXBlc1tyZWNpcGVdLnBuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezozMH0nLmZvcm1hdChsaXgucmVjaXBlc1tyZWNpcGVdLnB2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXgucmVjaXBlc1tyZWNpcGVdLmxheWVyLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc29ydGVkKG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAobGluZSkKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG9iamVjdCA9PSAnbWFjaGluZXMnOgorICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAoJyVzICVzICVzJyAlICgnezoyNH0nLmZvcm1hdCgnbWFjaGluZScpLCAnezozNH0nLmZvcm1hdCgnZGVzY3JpcHRpb24nKSwgJ3s6MTl9Jy5mb3JtYXQoJ2xheWVyJykpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAoJ3s6LV44MH0nLmZvcm1hdCgiIikpCisgICAgICAgICAgICAgICAgZm9yIG1hY2hpbmUgaW4gbGl4Lm1hY2hpbmVzOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCclcyAlcyAlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MjR9Jy5mb3JtYXQobGl4Lm1hY2hpbmVzW21hY2hpbmVdLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7OjM0fScuZm9ybWF0KGxpeC5tYWNoaW5lc1ttYWNoaW5lXS5kZXNjcmlwdGlvbilbOjM0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezoxOX0nLmZvcm1hdChsaXgubWFjaGluZXNbbWFjaGluZV0ubGF5ZXJicmFuY2gubGF5ZXIubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc29ydGVkKG91dHB1dCk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5wbGFpbiAobGluZSkKKworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIG9iamVjdCA9PSAnZGlzdHJvcyc6CisgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluICgnJXMgJXMgJXMnICUgKCd7OjI0fScuZm9ybWF0KCdkaXN0cm8nKSwgJ3s6MzR9Jy5mb3JtYXQoJ2Rlc2NyaXB0aW9uJyksICd7OjE5fScuZm9ybWF0KCdsYXllcicpKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIucGxhaW4gKCd7Oi1eODB9Jy5mb3JtYXQoIiIpKQorICAgICAgICAgICAgICAgIGZvciBkaXN0cm8gaW4gbGl4LmRpc3Ryb3M6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJyVzICVzICVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnezoyNH0nLmZvcm1hdChsaXguZGlzdHJvc1tkaXN0cm9dLm5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd7OjM0fScuZm9ybWF0KGxpeC5kaXN0cm9zW2Rpc3Ryb10uZGVzY3JpcHRpb24pWzozNF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3s6MTl9Jy5mb3JtYXQobGl4LmRpc3Ryb3NbZGlzdHJvXS5sYXllcmJyYW5jaC5sYXllci5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzb3J0ZWQob3V0cHV0KToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnBsYWluIChsaW5lKQorCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBsb2dnZXIucGxhaW4gKCcnKQorCisKKyMgVGhpcyBjbGFzcyBob2xkcyBhIHNpbmdsZSBsYXllciBpbmRleCBpbnN0YW5jZQorIyBUaGUgTGF5ZXJJbmRleE9iaiBpcyBtYWRlIHVwIG9mIGRpY3Rpb25hcnkgb2YgZWxlbWVudHMsIHN1Y2ggYXM6CisjICAgaW5kZXhbJ2NvbmZpZyddIC0gY29uZmlndXJhdGlvbiBkYXRhIGZvciB0aGlzIGluZGV4CisjICAgaW5kZXhbJ2JyYW5jaGVzJ10gLSBkaWN0aW9uYXJ5IG9mIEJyYW5jaCBvYmplY3RzLCBieSBpZCBudW1iZXIKKyMgICBpbmRleFsnbGF5ZXJJdGVtcyddIC0gZGljdGlvbmFyeSBvZiBsYXllckl0ZW0gb2JqZWN0cywgYnkgaWQgbnVtYmVyCisjICAgLi4uZXRjLi4uICAoU2VlOiBodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9hcGkvKQorIworIyBUaGUgY2xhc3MgbmVlZHMgdG8gbWFuYWdlIHRoZSAnaW5kZXgnIGVudHJpZXMgYW5kIGFsbG93IGVhc2lseSBhZGRpbmcKKyMgb2YgbmV3IGl0ZW1zLCBhcyB3ZWxsIGFzIHNpbXBseSBsb2FkaW5nIG9mIHRoZSBpdGVtcy4KK2NsYXNzIExheWVySW5kZXhPYmooKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18oJ19pbmRleCcsIHt9KQorICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKCdfbG9jaycsIEZhbHNlKQorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAnJydGYWxzZSBpZiB0aGUgaW5kZXggaXMgZWZmZWN0aXZlbHkgZW1wdHkKKworICAgICAgICAgICBXZSBjaGVjayB0aGUgaW5kZXggdG8gc2VlIGlmIGl0IGhhcyBhIGJyYW5jaCBzZXQsIGFzIHdlbGwgYXMKKyAgICAgICAgICAgbGF5ZXJicmFuY2hlcyBzZXQuICBJZiBub3QsIGl0IGlzIGVmZmVjdGl2ZWx5IGJsYW5rLicnJworCisgICAgICAgIGlmIG5vdCBib29sKHNlbGYuX2luZGV4KToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuYnJhbmNoZXMgYW5kIHNlbGYubGF5ZXJCcmFuY2hlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19nZXRhdHRyaWJ1dGVfXyhuYW1lKQorCisgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX2luZGV4OgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJyVzIG5vdCBpbiBpbmRleCBkYXRhc3RvcmUnICUgbmFtZSkKKworICAgICAgICByZXR1cm4gc2VsZi5faW5kZXhbbmFtZV0KKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIHNlbGYuaXNMb2NrZWQoKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuIG5vdCBzZXQgYXR0cmlidXRlICclcyc6IGluZGV4IGlzIGxvY2tlZCIgJSBuYW1lKQorCisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIHNlbGYuX2luZGV4W25hbWVdID0gdmFsdWUKKworICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5pc0xvY2tlZCgpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4gbm90IGRlbGV0ZSBhdHRyaWJ1dGUgJyVzJzogaW5kZXggaXMgbG9ja2VkIiAlIG5hbWUpCisKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJyk6CisgICAgICAgICAgICBzdXBlcigpLl9fZGVsYXR0cl9fKG5hbWUpCisKKyAgICAgICAgc2VsZi5faW5kZXgucG9wKG5hbWUpCisKKyAgICBkZWYgbG9ja0RhdGEoc2VsZik6CisgICAgICAgICcnJ0xvY2sgZGF0YSBvYmplY3QgKG1ha2UgaXQgcmVhZG9ubHkpJycnCisgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18oIl9sb2NrIiwgVHJ1ZSkKKworICAgIGRlZiB1bmxvY2tEYXRhKHNlbGYpOgorICAgICAgICAnJyd1bmxvY2sgZGF0YSBvYmplY3QgKG1ha2UgaXQgcmVhZG9ubHkpJycnCisgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18oIl9sb2NrIiwgRmFsc2UpCisKKyAgICAgICAgIyBXaGVuIHRoZSBkYXRhIGlzIHVubG9ja2VkLCB3ZSBoYXZlIHRvIGNsZWFyIHRoZSBjYWNoZXMsIGFzCisgICAgICAgICMgbW9kaWZpY2F0aW9uIGlzIGFsbG93ZWQhCisgICAgICAgIGRlbChzZWxmLl9sYXllckJyYW5jaGVzX2xheWVySWRfYnJhbmNoSWQpCisgICAgICAgIGRlbChzZWxmLl9sYXllckRlcGVuZGVuY2llc19sYXllckJyYW5jaElkKQorICAgICAgICBkZWwoc2VsZi5fbGF5ZXJCcmFuY2hlc192Y3NVcmwpCisKKyAgICBkZWYgaXNMb2NrZWQoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgb2JqZWN0IGxvY2tlZCAocmVhZG9ubHkpPycnJworICAgICAgICByZXR1cm4gc2VsZi5fbG9jaworCisgICAgZGVmIGFkZF9lbGVtZW50KHNlbGYsIGluZGV4bmFtZSwgb2Jqcyk6CisgICAgICAgICcnJ0FkZCBhIGxheWVyIGluZGV4IG9iamVjdCB0byBpbmRleC48aW5kZXhuYW1lPicnJworICAgICAgICBpZiBpbmRleG5hbWUgbm90IGluIHNlbGYuX2luZGV4OgorICAgICAgICAgICAgc2VsZi5faW5kZXhbaW5kZXhuYW1lXSA9IHt9CisKKyAgICAgICAgZm9yIG9iaiBpbiBvYmpzOgorICAgICAgICAgICAgaWYgb2JqLmlkIGluIHNlbGYuX2luZGV4W2luZGV4bmFtZV06CisgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZXhbaW5kZXhuYW1lXVtvYmouaWRdID09IG9iajoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RXJyb3IoJ0NvbmZsaWN0IGFkZGluZyBvYmplY3QgJXMoJXMpIHRvIGluZGV4JyAlIChpbmRleG5hbWUsIG9iai5pZCkpCisgICAgICAgICAgICBzZWxmLl9pbmRleFtpbmRleG5hbWVdW29iai5pZF0gPSBvYmoKKworICAgIGRlZiBhZGRfcmF3X2VsZW1lbnQoc2VsZiwgaW5kZXhuYW1lLCBvYmp0eXBlLCByYXdvYmpzKToKKyAgICAgICAgJycnQ29udmVydCBhIHJhdyBsYXllciBpbmRleCBkYXRhIGl0ZW0gdG8gYSBsYXllciBpbmRleCBpdGVtIG9iamVjdCBhbmQgYWRkIHRvIHRoZSBpbmRleCcnJworICAgICAgICBvYmpzID0gW10KKyAgICAgICAgZm9yIGVudHJ5IGluIHJhd29ianM6CisgICAgICAgICAgICBvYmpzLmFwcGVuZChvYmp0eXBlKHNlbGYsIGVudHJ5KSkKKyAgICAgICAgc2VsZi5hZGRfZWxlbWVudChpbmRleG5hbWUsIG9ianMpCisKKyAgICAjIFF1aWNrIGxvb2t1cCB0YWJsZSBmb3Igc2VhcmNoaW5nIGxheWVySWQgYW5kIGJyYW5jaElEIGNvbWJvcworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsYXllckJyYW5jaGVzX2xheWVySWRfYnJhbmNoSWQoc2VsZik6CisgICAgICAgIGRlZiBjcmVhdGVDYWNoZShzZWxmKToKKyAgICAgICAgICAgIGNhY2hlID0ge30KKyAgICAgICAgICAgIGZvciBsYXllcmJyYW5jaGlkIGluIHNlbGYubGF5ZXJCcmFuY2hlczoKKyAgICAgICAgICAgICAgICBsYXllcmJyYW5jaCA9IHNlbGYubGF5ZXJCcmFuY2hlc1tsYXllcmJyYW5jaGlkXQorICAgICAgICAgICAgICAgIGNhY2hlWyIlczolcyIgJSAobGF5ZXJicmFuY2gubGF5ZXJfaWQsIGxheWVyYnJhbmNoLmJyYW5jaF9pZCldID0gbGF5ZXJicmFuY2gKKyAgICAgICAgICAgIHJldHVybiBjYWNoZQorCisgICAgICAgIGlmIHNlbGYuaXNMb2NrZWQoKToKKyAgICAgICAgICAgIGNhY2hlID0gZ2V0YXR0cihzZWxmLCAnX2xheWVyQnJhbmNoZXNfbGF5ZXJJZF9icmFuY2hJZCcsIE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYWNoZSA9IE5vbmUKKworICAgICAgICBpZiBub3QgY2FjaGU6CisgICAgICAgICAgICBjYWNoZSA9IGNyZWF0ZUNhY2hlKHNlbGYpCisKKyAgICAgICAgaWYgc2VsZi5pc0xvY2tlZCgpOgorICAgICAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXygnX2xheWVyQnJhbmNoZXNfbGF5ZXJJZF9icmFuY2hJZCcsIGNhY2hlKQorCisgICAgICAgIHJldHVybiBjYWNoZQorCisgICAgIyBRdWljayBsb29rdXAgdGFibGUgZm9yIGZpbmRpbmcgYWxsIGRlcGVuZGVuY2llcyBvZiBhIGxheWVyQnJhbmNoCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyRGVwZW5kZW5jaWVzX2xheWVyQnJhbmNoSWQoc2VsZik6CisgICAgICAgIGRlZiBjcmVhdGVDYWNoZShzZWxmKToKKyAgICAgICAgICAgIGNhY2hlID0ge30KKyAgICAgICAgICAgICMgVGhpcyBlbnN1cmVzIGVtcHR5IGxpc3RzIGZvciBhbGwgYnJhbmNoaWRzCisgICAgICAgICAgICBmb3IgbGF5ZXJicmFuY2hpZCBpbiBzZWxmLmxheWVyQnJhbmNoZXM6CisgICAgICAgICAgICAgICAgY2FjaGVbbGF5ZXJicmFuY2hpZF0gPSBbXQorCisgICAgICAgICAgICBmb3IgbGF5ZXJkZXBlbmRlbmN5aWQgaW4gc2VsZi5sYXllckRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBsYXllcmRlcGVuZGVuY3kgPSBzZWxmLmxheWVyRGVwZW5kZW5jaWVzW2xheWVyZGVwZW5kZW5jeWlkXQorICAgICAgICAgICAgICAgIGNhY2hlW2xheWVyZGVwZW5kZW5jeS5sYXllcmJyYW5jaF9pZF0uYXBwZW5kKGxheWVyZGVwZW5kZW5jeSkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZQorCisgICAgICAgIGlmIHNlbGYuaXNMb2NrZWQoKToKKyAgICAgICAgICAgIGNhY2hlID0gZ2V0YXR0cihzZWxmLCAnX2xheWVyRGVwZW5kZW5jaWVzX2xheWVyQnJhbmNoSWQnLCBOb25lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBOb25lCisKKyAgICAgICAgaWYgbm90IGNhY2hlOgorICAgICAgICAgICAgY2FjaGUgPSBjcmVhdGVDYWNoZShzZWxmKQorCisgICAgICAgIGlmIHNlbGYuaXNMb2NrZWQoKToKKyAgICAgICAgICAgIHN1cGVyKCkuX19zZXRhdHRyX18oJ19sYXllckRlcGVuZGVuY2llc19sYXllckJyYW5jaElkJywgY2FjaGUpCisKKyAgICAgICAgcmV0dXJuIGNhY2hlCisKKyAgICAjIFF1aWNrIGxvb2t1cCB0YWJsZSBmb3IgZmluZGluZyBhbGwgaW5zdGFuY2VzIG9mIGEgdmNzX3VybAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsYXllckJyYW5jaGVzX3Zjc1VybChzZWxmKToKKyAgICAgICAgZGVmIGNyZWF0ZUNhY2hlKHNlbGYpOgorICAgICAgICAgICAgY2FjaGUgPSB7fQorICAgICAgICAgICAgZm9yIGxheWVyYnJhbmNoaWQgaW4gc2VsZi5sYXllckJyYW5jaGVzOgorICAgICAgICAgICAgICAgIGxheWVyYnJhbmNoID0gc2VsZi5sYXllckJyYW5jaGVzW2xheWVyYnJhbmNoaWRdCisgICAgICAgICAgICAgICAgaWYgbGF5ZXJicmFuY2gubGF5ZXIudmNzX3VybCBub3QgaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgICAgY2FjaGVbbGF5ZXJicmFuY2gubGF5ZXIudmNzX3VybF0gPSBbbGF5ZXJicmFuY2hdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICBjYWNoZVtsYXllcmJyYW5jaC5sYXllci52Y3NfdXJsXS5hcHBlbmQobGF5ZXJicmFuY2gpCisgICAgICAgICAgICByZXR1cm4gY2FjaGUKKworICAgICAgICBpZiBzZWxmLmlzTG9ja2VkKCk6CisgICAgICAgICAgICBjYWNoZSA9IGdldGF0dHIoc2VsZiwgJ19sYXllckJyYW5jaGVzX3Zjc1VybCcsIE5vbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjYWNoZSA9IE5vbmUKKworICAgICAgICBpZiBub3QgY2FjaGU6CisgICAgICAgICAgICBjYWNoZSA9IGNyZWF0ZUNhY2hlKHNlbGYpCisKKyAgICAgICAgaWYgc2VsZi5pc0xvY2tlZCgpOgorICAgICAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXygnX2xheWVyQnJhbmNoZXNfdmNzVXJsJywgY2FjaGUpCisKKyAgICAgICAgcmV0dXJuIGNhY2hlCisKKworICAgIGRlZiBmaW5kX3Zjc191cmwoc2VsZiwgdmNzX3VybCwgYnJhbmNoZXM9Tm9uZSk6CisgICAgICAgICcnJydSZXR1cm4gdGhlIGZpcnN0IGxheWVyQnJhbmNoIHdpdGggdGhlIGdpdmVuIHZjc191cmwKKworICAgICAgICAgICAgSWYgYSBsaXN0IG9mIGJyYW5jaGVzIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQsIHdlIHdpbGwgaXRlcmF0ZSBvbgorICAgICAgICAgICAgYWxsIGJyYW5jaGVzIHVudGlsIHRoZSBmaXJzdCB2Y3NfdXJsIGlzIGZvdW5kLicnJworCisgICAgICAgIGlmIG5vdCBzZWxmLl9fYm9vbF9fKCk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGZvciBsYXllcmJyYW5jaCBpbiBzZWxmLmxheWVyQnJhbmNoZXNfdmNzVXJsOgorICAgICAgICAgICAgaWYgYnJhbmNoZXMgYW5kIGxheWVyYnJhbmNoLmJyYW5jaC5uYW1lIG5vdCBpbiBicmFuY2hlczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICByZXR1cm4gbGF5ZXJicmFuY2gKKworICAgICAgICByZXR1cm4gTm9uZQorCisKKyAgICBkZWYgZmluZF9jb2xsZWN0aW9uKHNlbGYsIGNvbGxlY3Rpb24sIHZlcnNpb249Tm9uZSwgYnJhbmNoZXM9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybiB0aGUgZmlyc3QgbGF5ZXJCcmFuY2ggd2l0aCB0aGUgZ2l2ZW4gY29sbGVjdGlvbiBuYW1lCisKKyAgICAgICAgICAgSWYgYSBsaXN0IG9mIGJyYW5jaGVzIGhhcyBub3QgYmVlbiBzcGVjaWZpZWQsIHdlIHdpbGwgaXRlcmF0ZSBvbgorICAgICAgICAgICBhbGwgYnJhbmNoZXMgdW50aWwgdGhlIGZpcnN0IGNvbGxlY3Rpb24gaXMgZm91bmQuJycnCisKKyAgICAgICAgaWYgbm90IHNlbGYuX19ib29sX18oKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgZm9yIGxheWVyYnJhbmNoaWQgaW4gc2VsZi5sYXllckJyYW5jaGVzOgorICAgICAgICAgICAgbGF5ZXJicmFuY2ggPSBzZWxmLmxheWVyQnJhbmNoZXNbbGF5ZXJicmFuY2hpZF0KKyAgICAgICAgICAgIGlmIGJyYW5jaGVzIGFuZCBsYXllcmJyYW5jaC5icmFuY2gubmFtZSBub3QgaW4gYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgbGF5ZXJicmFuY2guY29sbGVjdGlvbiA9PSBjb2xsZWN0aW9uIGFuZCBcCisgICAgICAgICAgICAgICAgKHZlcnNpb24gaXMgTm9uZSBvciB2ZXJzaW9uID09IGxheWVyYnJhbmNoLnZlcnNpb24pOgorICAgICAgICAgICAgICAgIHJldHVybiBsYXllcmJyYW5jaAorCisgICAgICAgIHJldHVybiBOb25lCisKKworICAgIGRlZiBmaW5kX2xheWVyYnJhbmNoKHNlbGYsIG5hbWUsIGJyYW5jaGVzPU5vbmUpOgorICAgICAgICAnJydSZXR1cm4gdGhlIGZpcnN0IGxheWVyYnJhbmNoIHdob3NlIGxheWVyIG5hbWUgbWF0Y2hlcworCisgICAgICAgICAgIElmIGEgbGlzdCBvZiBicmFuY2hlcyBoYXMgbm90IGJlZW4gc3BlY2lmaWVkLCB3ZSB3aWxsIGl0ZXJhdGUgb24KKyAgICAgICAgICAgYWxsIGJyYW5jaGVzIHVudGlsIHRoZSBmaXJzdCBsYXllciB3aXRoIHRoYXQgbmFtZSBpcyBmb3VuZC4nJycKKworICAgICAgICBpZiBub3Qgc2VsZi5fX2Jvb2xfXygpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBmb3IgbGF5ZXJicmFuY2hpZCBpbiBzZWxmLmxheWVyQnJhbmNoZXM6CisgICAgICAgICAgICBsYXllcmJyYW5jaCA9IHNlbGYubGF5ZXJCcmFuY2hlc1tsYXllcmJyYW5jaGlkXQorICAgICAgICAgICAgaWYgYnJhbmNoZXMgYW5kIGxheWVyYnJhbmNoLmJyYW5jaC5uYW1lIG5vdCBpbiBicmFuY2hlczoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBpZiBsYXllcmJyYW5jaC5sYXllci5uYW1lID09IG5hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxheWVyYnJhbmNoCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBmaW5kX2RlcGVuZGVuY2llcyhzZWxmLCBuYW1lcz1Ob25lLCBicmFuY2hlcz1Ob25lLCBsYXllckJyYW5jaGVzPU5vbmUsIGlnbm9yZXM9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybiBhIHR1cGxlIG9mIGFsbCBkZXBlbmRlbmNpZXMgYW5kIHZhbGlkIGl0ZW1zIGZvciB0aGUgbGlzdCBvZiAobGF5ZXIpIG5hbWVzCisKKyAgICAgICAgVGhlIGRlcGVuZGVuY3kgc2Nhbm5pbmcgaGFwcGVucyBkZXB0aC1maXJzdC4gIFRoZSByZXR1cm5lZAorICAgICAgICBkZXBlbmRlbmNpZXMgc2hvdWxkIGJlIGluIHRoZSBiZXN0IG9yZGVyIHRvIGRlZmluZSBiYmxheWVycy4KKworICAgICAgICAgIG5hbWVzIC0gbGlzdCBvZiBsYXllciBuYW1lcyAoc2VhcmNoaW5nIGxheWVySXRlbXMpCisgICAgICAgICAgYnJhbmNoZXMgLSB3aGVuIHNwZWNpZmllZCAod2l0aCBuYW1lcykgb25seSB0aGlzIGxpc3Qgb2YgYnJhbmNoZXMgYXJlIGV2YWx1YXRlZAorCisgICAgICAgICAgbGF5ZXJCcmFuY2hlcyAtIGxpc3Qgb2YgbGF5ZXJCcmFuY2hlcyB0byByZXNvbHZlIGRlcGVuZGVuY2llcworCisgICAgICAgICAgaWdub3JlcyAtIGxpc3Qgb2YgbGF5ZXIgbmFtZXMgdG8gaWdub3JlCisKKyAgICAgICAgcmV0dXJuOiAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkKQorCisgICAgICAgICAgZGVwZW5kZW5jaWVzW0xheWVySXRlbS5uYW1lXSA9IFsgTGF5ZXJCcmFuY2gsIExheWVyRGVwZW5kZW5jeTEsIExheWVyRGVwZW5kZW5jeTIsIC4uLiBdCisgICAgICAgICAgaW52YWxpZCA9IFsgTGF5ZXJJdGVtLm5hbWUxLCBMYXllckl0ZW0ubmFtZTIsIC4uLiBdJycnCisKKyAgICAgICAgaW52YWxpZCA9IFtdCisKKyAgICAgICAgIyBDb252ZXJ0IG5hbWUvYnJhbmNoIHRvIGxheWVyQnJhbmNoZXMKKyAgICAgICAgaWYgbGF5ZXJicmFuY2hlcyBpcyBOb25lOgorICAgICAgICAgICAgbGF5ZXJicmFuY2hlcyA9IFtdCisKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgICAgICBpZiBpZ25vcmVzIGFuZCBuYW1lIGluIGlnbm9yZXM6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbGF5ZXJicmFuY2ggPSBzZWxmLmZpbmRfbGF5ZXJicmFuY2gobmFtZSwgYnJhbmNoZXMpCisgICAgICAgICAgICBpZiBub3QgbGF5ZXJicmFuY2g6CisgICAgICAgICAgICAgICAgaW52YWxpZC5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGF5ZXJicmFuY2hlcy5hcHBlbmQobGF5ZXJicmFuY2gpCisKKyAgICAgICAgZm9yIGxheWVyYnJhbmNoIGluIGxheWVyYnJhbmNoZXM6CisgICAgICAgICAgICBpZiBsYXllcmJyYW5jaC5pbmRleCAhPSBzZWxmOgorICAgICAgICAgICAgICAgIHJhaXNlIExheWVySW5kZXhFeGNlcHRpb24oIkNhbiBub3QgcmVzb2x2ZSBkZXBlbmRlbmNpZXMgYWNyb3NzIGluZGV4ZXMgd2l0aCB0aGlzIGNsYXNzIGZ1bmN0aW9uISIpCisKKyAgICAgICAgZGVmIF9yZXNvbHZlX2RlcGVuZGVuY2llcyhsYXllcmJyYW5jaGVzLCBpZ25vcmVzLCBkZXBlbmRlbmNpZXMsIGludmFsaWQpOgorICAgICAgICAgICAgZm9yIGxheWVyYnJhbmNoIGluIGxheWVyYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgaWYgaWdub3JlcyBhbmQgbGF5ZXJCcmFuY2gubGF5ZXIubmFtZSBpbiBpZ25vcmVzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9yIGxheWVyZGVwZW5kZW5jeSBpbiBsYXllcmJyYW5jaC5pbmRleC5sYXllckRlcGVuZGVuY2llc19sYXllckJyYW5jaElkW2xheWVyQnJhbmNoLmlkXToKKyAgICAgICAgICAgICAgICAgICAgZGVwbGF5ZXJicmFuY2ggPSBsYXllckRlcGVuZGVuY3kuZGVwZW5kZW5jeV9sYXllckJyYW5jaAorCisgICAgICAgICAgICAgICAgICAgIGlmIGlnbm9yZXMgYW5kIGRlcGxheWVyYnJhbmNoLmxheWVyLm5hbWUgaW4gaWdub3JlczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBOZXcgZGVwZW5kZW5jeSwgd2UgbmVlZCB0byByZXNvbHZlIGl0IG5vdy4uLiBkZXB0aC1maXJzdAorICAgICAgICAgICAgICAgICAgICBpZiBkZXBsYXllcmJyYW5jaC5sYXllci5uYW1lIG5vdCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkKSA9IF9yZXNvbHZlX2RlcGVuZGVuY2llcyhbZGVwbGF5ZXJicmFuY2hdLCBpZ25vcmVzLCBkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZSBub3QgaW4gZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzW2RlcGxheWVyYnJhbmNoLmxheWVyLm5hbWVdID0gW2RlcGxheWVyYnJhbmNoLCBsYXllcmRlcGVuZGVuY3ldCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsYXllcmRlcGVuZGVuY3kgbm90IGluIGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaC5sYXllci5uYW1lXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNbZGVwbGF5ZXJicmFuY2gubGF5ZXIubmFtZV0uYXBwZW5kKGxheWVyZGVwZW5kZW5jeSkKKworICAgICAgICAgICAgICAgIHJldHVybiAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkKQorCisgICAgICAgICMgT0ssIHJlc29sdmUgdGhpcyBvbmUuLi4KKyAgICAgICAgZGVwZW5kZW5jaWVzID0gT3JkZXJlZERpY3QoKQorICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkKSA9IF9yZXNvbHZlX2RlcGVuZGVuY2llcyhsYXllcmJyYW5jaGVzLCBpZ25vcmVzLCBkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKyAgICAgICAgIyBJcyB0aGlzIGl0ZW0gYWxyZWFkeSBpbiB0aGUgbGlzdCwgaWYgbm90IGFkZCBpdAorICAgICAgICBmb3IgbGF5ZXJicmFuY2ggaW4gbGF5ZXJicmFuY2hlczoKKyAgICAgICAgICAgIGlmIGxheWVyYnJhbmNoLmxheWVyLm5hbWUgbm90IGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNbbGF5ZXJicmFuY2gubGF5ZXIubmFtZV0gPSBbbGF5ZXJicmFuY2hdCisKKyAgICAgICAgcmV0dXJuIChkZXBlbmRlbmNpZXMsIGludmFsaWQpCisKKworIyBEZWZpbmUgYSBiYXNpYyBMYXllckluZGV4SXRlbU9iai4gIFRoaXMgb2JqZWN0IGZvcm1zIHRoZSBiYXNpcyBmb3IgYWxsIG90aGVyCisjIG9iamVjdHMuICBUaGUgcmF3IExheWVyIEluZGV4IGRhdGEgaXMgc3RvcmVkIGluIHRoZSBfZGF0YSBlbGVtZW50LCBidXQgd2UKKyMgZG8gbm90IHdhbnQgdXNlcnMgdG8gYWNjZXNzIGRhdGEgZGlyZWN0bHkuICBTbyB3cmFwIHRoaXMgYW5kIHByb3RlY3QgaXQKKyMgZnJvbSBkaXJlY3QgbWFuaXB1bGF0aW9uLgorIworIyBJdCBpcyB1cCB0byB0aGUgaW5zYW50aWF0b3JzIG9mIHRoZSBvYmplY3RzIHRvIGZpbGwgdGhlbSBvdXQsIGFuZCBvbmNlIGRvbmUKKyMgbG9jayB0aGUgb2JqZWN0cyB0byBwcmV2ZW50IGZ1cnRoZXIgYWNjaWRlbnRseSBtYW5pcHVsYXRpb24uCisjCisjIFVzaW5nIHRoZSBnZXRhdHRyLCBzZXRhdHRyIGFuZCBwcm9wZXJ0aWVzIHdlIGNhbiBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUKKyMgdGhlIGRhdGEgd2l0aGluIHRoZSBkYXRhIGVsZW1lbnQuCitjbGFzcyBMYXllckluZGV4SXRlbU9iaigpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleCwgZGF0YT1Ob25lLCBsb2NrPUZhbHNlKToKKyAgICAgICAgaWYgZGF0YSBpcyBOb25lOgorICAgICAgICAgICAgZGF0YSA9IHt9CisKKyAgICAgICAgaWYgdHlwZShkYXRhKSAhPSB0eXBlKGRpY3QoKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2RhdGEgKCVzKSBpcyBub3QgYSBkaWN0JyAlIHR5cGUoZGF0YSkpCisKKyAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXygnX2xvY2snLCAgbG9jaykKKyAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXygnaW5kZXgnLCBpbmRleCkKKyAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXygnX2RhdGEnLCAgZGF0YSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBzZWxmLl9fY2xhc3NfXyAhPSBvdGhlci5fX2NsYXNzX186CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmVzPShzZWxmLl9kYXRhID09IG90aGVyLl9kYXRhKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX2RhdGEpCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICMgVGhlc2UgYXJlIGludGVybmFsIHRvIFRISVMgY2xhc3MsIGFuZCBub3QgcGFydCBvZiBkYXRhCisgICAgICAgIGlmIG5hbWUgPT0gImluZGV4IiBvciBuYW1lLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKKworICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9kYXRhOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJyVzIG5vdCBpbiBkYXRhc3RvcmUnICUgbmFtZSkKKworICAgICAgICByZXR1cm4gc2VsZi5fZGF0YVtuYW1lXQorCisgICAgZGVmIF9zZXRhdHRyKHNlbGYsIG5hbWUsIHZhbHVlLCBwcm9wPVRydWUpOgorICAgICAgICAnJydfX3NldGF0dHJfXyBsaWtlIGZ1bmN0aW9uLCBidXQgd2l0aCBjb250cm9sIG92ZXIgcHJvcGVydHkgb2JqZWN0IGJlaGF2aW9yJycnCisgICAgICAgIGlmIHNlbGYuaXNMb2NrZWQoKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuIG5vdCBzZXQgYXR0cmlidXRlICclcyc6IE9iamVjdCBkYXRhIGlzIGxvY2tlZCIgJSBuYW1lKQorCisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpOgorICAgICAgICAgICAgc3VwZXIoKS5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgU2luY2UgX19zZXRhdHRyX18gcnVucyBiZWZvcmUgcHJvcGVydGllcywgd2UgbmVlZCB0byBjaGVjayBpZgorICAgICAgICAjIHRoZXJlIGlzIGEgc2V0dGVyIHByb3BlcnR5IGFuZCB0aGVuIGV4ZWN1dGUgaXQKKyAgICAgICAgIyAuLi4gb3IgcmV0dXJuIHNlbGYuX2RhdGFbbmFtZV0KKyAgICAgICAgcHJvcGVydHlvYmogPSBnZXRhdHRyKHNlbGYuX19jbGFzc19fLCBuYW1lLCBOb25lKQorICAgICAgICBpZiBwcm9wIGFuZCBpc2luc3RhbmNlKHByb3BlcnR5b2JqLCBwcm9wZXJ0eSk6CisgICAgICAgICAgICBpZiBwcm9wZXJ0eW9iai5mc2V0OgorICAgICAgICAgICAgICAgIHByb3BlcnR5b2JqLmZzZXQoc2VsZiwgdmFsdWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdBdHRyaWJ1dGUgJXMgaXMgcmVhZG9ubHksIGFuZCBtYXkgbm90IGJlIHNldCcgJSBuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZGF0YVtuYW1lXSA9IHZhbHVlCisKKyAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBzZWxmLl9zZXRhdHRyKG5hbWUsIHZhbHVlLCBwcm9wPVRydWUpCisKKyAgICBkZWYgX2RlbGF0dHIoc2VsZiwgbmFtZSwgcHJvcD1UcnVlKToKKyAgICAgICAgIyBTaW5jZSBfX2RlbGF0dHJfXyBydW5zIGJlZm9yZSBwcm9wZXJ0aWVzLCB3ZSBuZWVkIHRvIGNoZWNrIGlmCisgICAgICAgICMgdGhlcmUgaXMgYSBkZWxldGVyIHByb3BlcnR5IGFuZCB0aGVuIGV4ZWN1dGUgaXQKKyAgICAgICAgIyAuLi4gb3Igd2UgcG9wIGl0IG91cnNlbHZlcy4uCisgICAgICAgIHByb3BlcnR5b2JqID0gZ2V0YXR0cihzZWxmLl9fY2xhc3NfXywgbmFtZSwgTm9uZSkKKyAgICAgICAgaWYgcHJvcCBhbmQgaXNpbnN0YW5jZShwcm9wZXJ0eW9iaiwgcHJvcGVydHkpOgorICAgICAgICAgICAgaWYgcHJvcGVydHlvYmouZmRlbDoKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eW9iai5mZGVsKHNlbGYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdBdHRyaWJ1dGUgJXMgaXMgcmVhZG9ubHksIGFuZCBtYXkgbm90IGJlIGRlbGV0ZWQnICUgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhdGEucG9wKG5hbWUpCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuX2RlbGF0dHIobmFtZSwgcHJvcD1UcnVlKQorCisgICAgZGVmIGxvY2tEYXRhKHNlbGYpOgorICAgICAgICAnJydMb2NrIGRhdGEgb2JqZWN0IChtYWtlIGl0IHJlYWRvbmx5KScnJworICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKCJfbG9jayIsIFRydWUpCisKKyAgICBkZWYgdW5sb2NrRGF0YShzZWxmKToKKyAgICAgICAgJycndW5sb2NrIGRhdGEgb2JqZWN0IChtYWtlIGl0IHJlYWRvbmx5KScnJworICAgICAgICBzdXBlcigpLl9fc2V0YXR0cl9fKCJfbG9jayIsIEZhbHNlKQorCisgICAgZGVmIGlzTG9ja2VkKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIG9iamVjdCBsb2NrZWQgKHJlYWRvbmx5KT8nJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2sKKworIyBCcmFuY2ggb2JqZWN0CitjbGFzcyBCcmFuY2goTGF5ZXJJbmRleEl0ZW1PYmopOgorICAgIGRlZiBkZWZpbmVfZGF0YShzZWxmLCBpZCwgbmFtZSwgYml0YmFrZV9icmFuY2gsCisgICAgICAgICAgICAgICAgIHNob3J0X2Rlc2NyaXB0aW9uPU5vbmUsIHNvcnRfcHJpb3JpdHk9MSwKKyAgICAgICAgICAgICAgICAgdXBkYXRlc19lbmFibGVkPVRydWUsIHVwZGF0ZWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXBkYXRlX2Vudmlyb25tZW50PU5vbmUpOgorICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmJpdGJha2VfYnJhbmNoID0gYml0YmFrZV9icmFuY2gKKyAgICAgICAgc2VsZi5zaG9ydF9kZXNjcmlwdGlvbiA9IHNob3J0X2Rlc2NyaXB0aW9uIG9yIG5hbWUKKyAgICAgICAgc2VsZi5zb3J0X3ByaW9yaXR5ID0gc29ydF9wcmlvcml0eQorICAgICAgICBzZWxmLnVwZGF0ZXNfZW5hYmxlZCA9IHVwZGF0ZXNfZW5hYmxlZAorICAgICAgICBzZWxmLnVwZGF0ZWQgPSB1cGRhdGVkIG9yIGRhdGV0aW1lLmRhdGV0aW1lLnRvZGF5KCkuaXNvZm9ybWF0KCkKKyAgICAgICAgc2VsZi51cGRhdGVfZW52aXJvbm1lbnQgPSB1cGRhdGVfZW52aXJvbm1lbnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2dldGF0dHJfXygnbmFtZScpCisKKyAgICBAbmFtZS5zZXR0ZXIKKyAgICBkZWYgbmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2RhdGFbJ25hbWUnXSA9IHZhbHVlCisKKyAgICAgICAgaWYgc2VsZi5iaXRiYWtlX2JyYW5jaCA9PSB2YWx1ZToKKyAgICAgICAgICAgIHNlbGYuYml0YmFrZV9icmFuY2ggPSAiIgorCisgICAgQG5hbWUuZGVsZXRlcgorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWxhdHRyKCduYW1lJywgcHJvcD1GYWxzZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBiaXRiYWtlX2JyYW5jaChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2JpdGJha2VfYnJhbmNoJykKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorCisgICAgQGJpdGJha2VfYnJhbmNoLnNldHRlcgorICAgIGRlZiBiaXRiYWtlX2JyYW5jaChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIHNlbGYubmFtZSA9PSB2YWx1ZToKKyAgICAgICAgICAgIHNlbGYuX2RhdGFbJ2JpdGJha2VfYnJhbmNoJ10gPSAiIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZGF0YVsnYml0YmFrZV9icmFuY2gnXSA9IHZhbHVlCisKKyAgICBAYml0YmFrZV9icmFuY2guZGVsZXRlcgorICAgIGRlZiBiaXRiYWtlX2JyYW5jaChzZWxmKToKKyAgICAgICAgc2VsZi5fZGVsYXR0cignYml0YmFrZV9icmFuY2gnLCBwcm9wPUZhbHNlKQorCisKK2NsYXNzIExheWVySXRlbShMYXllckluZGV4SXRlbU9iaik6CisgICAgZGVmIGRlZmluZV9kYXRhKHNlbGYsIGlkLCBuYW1lLCBzdGF0dXM9J1AnLAorICAgICAgICAgICAgICAgICBsYXllcl90eXBlPSdBJywgc3VtbWFyeT1Ob25lLAorICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICB2Y3NfdXJsPU5vbmUsIHZjc193ZWJfdXJsPU5vbmUsCisgICAgICAgICAgICAgICAgIHZjc193ZWJfdHJlZV9iYXNlX3VybD1Ob25lLAorICAgICAgICAgICAgICAgICB2Y3Nfd2ViX2ZpbGVfYmFzZV91cmw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdXNhZ2VfdXJsPU5vbmUsCisgICAgICAgICAgICAgICAgIG1haWxpbmdfbGlzdF91cmw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgaW5kZXhfcHJlZmVyZW5jZT0xLAorICAgICAgICAgICAgICAgICBjbGFzc2ljPUZhbHNlLAorICAgICAgICAgICAgICAgICB1cGRhdGVkPU5vbmUpOgorICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cworICAgICAgICBzZWxmLmxheWVyX3R5cGUgPSBsYXllcl90eXBlCisgICAgICAgIHNlbGYuc3VtbWFyeSA9IHN1bW1hcnkgb3IgbmFtZQorICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gb3Igc3VtbWFyeSBvciBuYW1lCisgICAgICAgIHNlbGYudmNzX3VybCA9IHZjc191cmwKKyAgICAgICAgc2VsZi52Y3Nfd2ViX3VybCA9IHZjc193ZWJfdXJsCisgICAgICAgIHNlbGYudmNzX3dlYl90cmVlX2Jhc2VfdXJsID0gdmNzX3dlYl90cmVlX2Jhc2VfdXJsCisgICAgICAgIHNlbGYudmNzX3dlYl9maWxlX2Jhc2VfdXJsID0gdmNzX3dlYl9maWxlX2Jhc2VfdXJsCisgICAgICAgIHNlbGYuaW5kZXhfcHJlZmVyZW5jZSA9IGluZGV4X3ByZWZlcmVuY2UKKyAgICAgICAgc2VsZi5jbGFzc2ljID0gY2xhc3NpYworICAgICAgICBzZWxmLnVwZGF0ZWQgPSB1cGRhdGVkIG9yIGRhdGV0aW1lLmRhdGV0aW1lLnRvZGF5KCkuaXNvZm9ybWF0KCkKKworCitjbGFzcyBMYXllckJyYW5jaChMYXllckluZGV4SXRlbU9iaik6CisgICAgZGVmIGRlZmluZV9kYXRhKHNlbGYsIGlkLCBjb2xsZWN0aW9uLCB2ZXJzaW9uLCBsYXllciwgYnJhbmNoLAorICAgICAgICAgICAgICAgICB2Y3Nfc3ViZGlyPSIiLCB2Y3NfbGFzdF9mZXRjaD1Ob25lLAorICAgICAgICAgICAgICAgICB2Y3NfbGFzdF9yZXY9Tm9uZSwgdmNzX2xhc3RfY29tbWl0PU5vbmUsCisgICAgICAgICAgICAgICAgIGFjdHVhbF9icmFuY2g9IiIsCisgICAgICAgICAgICAgICAgIHVwZGF0ZWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uCisgICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsYXllciwgTGF5ZXJJdGVtKToKKyAgICAgICAgICAgIHNlbGYubGF5ZXIgPSBsYXllcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5sYXllcl9pZCA9IGxheWVyCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShicmFuY2gsIEJyYW5jaCk6CisgICAgICAgICAgICBzZWxmLmJyYW5jaCA9IGJyYW5jaAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5icmFuY2hfaWQgPSBicmFuY2gKKworICAgICAgICBzZWxmLnZjc19zdWJkaXIgPSB2Y3Nfc3ViZGlyCisgICAgICAgIHNlbGYudmNzX2xhc3RfZmV0Y2ggPSB2Y3NfbGFzdF9mZXRjaAorICAgICAgICBzZWxmLnZjc19sYXN0X3JldiA9IHZjc19sYXN0X3JldgorICAgICAgICBzZWxmLnZjc19sYXN0X2NvbW1pdCA9IHZjc19sYXN0X2NvbW1pdAorICAgICAgICBzZWxmLmFjdHVhbF9icmFuY2ggPSBhY3R1YWxfYnJhbmNoCisgICAgICAgIHNlbGYudXBkYXRlZCA9IHVwZGF0ZWQgb3IgZGF0ZXRpbWUuZGF0ZXRpbWUudG9kYXkoKS5pc29mb3JtYXQoKQorCisgICAgIyBUaGlzIGlzIGEgbGl0dGxlIG9kZCwgdGhlIF9kYXRhIGF0dHJpYnV0ZSBpcyAnbGF5ZXInLCBidXQgaXQncyByZWFsbHkKKyAgICAjIHJlZmVycmluZyB0byB0aGUgbGF5ZXIgaWQuLiBzbyBsZXRzIGFkanVzdCB0aGlzIHRvIG1ha2UgaXQgdXNlZnVsCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyX2lkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2dldGF0dHJfXygnbGF5ZXInKQorCisgICAgQGxheWVyX2lkLnNldHRlcgorICAgIGRlZiBsYXllcl9pZChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX3NldGF0dHIoJ2xheWVyJywgdmFsdWUsIHByb3A9RmFsc2UpCisKKyAgICBAbGF5ZXJfaWQuZGVsZXRlcgorICAgIGRlZiBsYXllcl9pZChzZWxmKToKKyAgICAgICAgc2VsZi5fZGVsYXR0cignbGF5ZXInLCBwcm9wPUZhbHNlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleC5sYXllckl0ZW1zW3NlbGYubGF5ZXJfaWRdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdVbmFibGUgdG8gZmluZCBsYXllckl0ZW1zIGluIGluZGV4IHRvIG1hcCBsYXllcl9pZCAlcycgJSBzZWxmLmxheWVyX2lkKQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdVbmFibGUgdG8gZmluZCBsYXllcl9pZCAlcyBpbiBpbmRleCBsYXllckl0ZW1zJyAlIHNlbGYubGF5ZXJfaWQpCisKKyAgICBAbGF5ZXIuc2V0dGVyCisgICAgZGVmIGxheWVyKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIExheWVySXRlbSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3ZhbHVlIGlzIG5vdCBhIExheWVySXRlbScpCisgICAgICAgIGlmIHNlbGYuaW5kZXggIT0gdmFsdWUuaW5kZXg6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignT2JqZWN0IGFuZCB2YWx1ZSBkbyBub3Qgc2hhcmUgdGhlIHNhbWUgaW5kZXggYW5kIHRodXMga2V5IHNldC4nKQorICAgICAgICBzZWxmLmxheWVyX2lkID0gdmFsdWUuaWQKKworICAgIEBsYXllci5kZWxldGVyCisgICAgZGVmIGxheWVyKHNlbGYpOgorICAgICAgICBkZWwgc2VsZi5sYXllcl9pZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyYW5jaF9pZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2JyYW5jaCcpCisKKyAgICBAYnJhbmNoX2lkLnNldHRlcgorICAgIGRlZiBicmFuY2hfaWQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9zZXRhdHRyKCdicmFuY2gnLCB2YWx1ZSwgcHJvcD1GYWxzZSkKKworICAgIEBicmFuY2hfaWQuZGVsZXRlcgorICAgIGRlZiBicmFuY2hfaWQoc2VsZik6CisgICAgICAgIHNlbGYuX2RlbGF0dHIoJ2JyYW5jaCcsIHByb3A9RmFsc2UpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJhbmNoKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkdldCBicmFuY2ggb2JqZWN0IGZyb20gYnJhbmNoZXNbJXNdIiAlIChzZWxmLmJyYW5jaF9pZCkpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleC5icmFuY2hlc1tzZWxmLmJyYW5jaF9pZF0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGJyYW5jaGVzIGluIGluZGV4IHRvIG1hcCBicmFuY2hfaWQgJXMnICUgc2VsZi5icmFuY2hfaWQpCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGJyYW5jaF9pZCAlcyBpbiBpbmRleCBicmFuY2hlcycgJSBzZWxmLmJyYW5jaF9pZCkKKworICAgIEBicmFuY2guc2V0dGVyCisgICAgZGVmIGJyYW5jaChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBMYXllckl0ZW0pOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd2YWx1ZSBpcyBub3QgYSBMYXllckl0ZW0nKQorICAgICAgICBpZiBzZWxmLmluZGV4ICE9IHZhbHVlLmluZGV4OgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ09iamVjdCBhbmQgdmFsdWUgZG8gbm90IHNoYXJlIHRoZSBzYW1lIGluZGV4IGFuZCB0aHVzIGtleSBzZXQuJykKKyAgICAgICAgc2VsZi5icmFuY2hfaWQgPSB2YWx1ZS5pZAorCisgICAgQGJyYW5jaC5kZWxldGVyCisgICAgZGVmIGJyYW5jaChzZWxmKToKKyAgICAgICAgZGVsIHNlbGYuYnJhbmNoX2lkCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWN0dWFsX2JyYW5jaChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fX2dldGF0dHJfXygnYWN0dWFsX2JyYW5jaCcpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2FjdHVhbF9icmFuY2gnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnJhbmNoLm5hbWUKKworICAgIEBhY3R1YWxfYnJhbmNoLnNldHRlcgorICAgIGRlZiBhY3R1YWxfYnJhbmNoKHNlbGYsIHZhbHVlKToKKyAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJTZXQgYWN0dWFsX2JyYW5jaCB0byAlcyAuLiBuYW1lIGlzICVzIiAlICh2YWx1ZSwgc2VsZi5icmFuY2gubmFtZSkpCisgICAgICAgIGlmIHZhbHVlICE9IHNlbGYuYnJhbmNoLm5hbWU6CisgICAgICAgICAgICBzZWxmLl9zZXRhdHRyKCdhY3R1YWxfYnJhbmNoJywgdmFsdWUsIHByb3A9RmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zZXRhdHRyKCdhY3R1YWxfYnJhbmNoJywgJycsIHByb3A9RmFsc2UpCisKKyAgICBAYWN0dWFsX2JyYW5jaC5kZWxldGVyCisgICAgZGVmIGFjdHVhbF9icmFuY2goc2VsZik6CisgICAgICAgIHNlbGYuX2RlbGF0dHIoJ2FjdHVhbF9icmFuY2gnLCBwcm9wPUZhbHNlKQorCisjIEV4dGVuZCBMYXllckluZGV4SXRlbU9iaiB3aXRoIGNvbW1vbiBMYXllckJyYW5jaCBtYW5pcHVsYXRpb25zCisjIEFsbCBvZiB0aGUgcmVtYWluaW5nIExheWVySW5kZXggb2JqZWN0cyByZWZlciB0byBsYXllcmJyYW5jaCwgYW5kIGl0IGlzCisjIHVwIHRvIHRoZSB1c2VyIHRvIGZvbGxvdyB0aGF0IGJhY2sgdGhyb3VnaCB0aGUgTGF5ZXJCcmFuY2ggb2JqZWN0IGludG8KKyMgdGhlIGxheWVyIG9iamVjdCB0byBnZXQgdmFyaW91cyBhdHRyaWJ1dGVzLiAgU28gYWRkIGFuIGludGVybWVkaWF0ZSBzZXQKKyMgb2YgYXR0cmlidXRlcyB0aGF0IGNhbiBlYXNpbHkgZ2V0IHVzIHRoZSBsYXllcmJyYW5jaCBhcyB3ZWxsIGFzIGxheWVyLgorCitjbGFzcyBMYXllckluZGV4SXRlbU9ial9MYXllckJyYW5jaChMYXllckluZGV4SXRlbU9iaik6CisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyYnJhbmNoX2lkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2dldGF0dHJfXygnbGF5ZXJicmFuY2gnKQorCisgICAgQGxheWVyYnJhbmNoX2lkLnNldHRlcgorICAgIGRlZiBsYXllcmJyYW5jaF9pZChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX3NldGF0dHIoJ2xheWVyYnJhbmNoJywgdmFsdWUsIHByb3A9RmFsc2UpCisKKyAgICBAbGF5ZXJicmFuY2hfaWQuZGVsZXRlcgorICAgIGRlZiBsYXllcmJyYW5jaF9pZChzZWxmKToKKyAgICAgICAgc2VsZi5fZGVsYXR0cignbGF5ZXJicmFuY2gnLCBwcm9wPUZhbHNlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyYnJhbmNoKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleC5sYXllckJyYW5jaGVzW3NlbGYubGF5ZXJicmFuY2hfaWRdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdVbmFibGUgdG8gZmluZCBsYXllckJyYW5jaGVzIGluIGluZGV4IHRvIG1hcCBsYXllcmJyYW5jaF9pZCAlcycgJSBzZWxmLmxheWVyYnJhbmNoX2lkKQorICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdVbmFibGUgdG8gZmluZCBsYXllcmJyYW5jaF9pZCAlcyBpbiBpbmRleCBicmFuY2hlcycgJSBzZWxmLmxheWVyYnJhbmNoX2lkKQorCisgICAgQGxheWVyYnJhbmNoLnNldHRlcgorICAgIGRlZiBsYXllcmJyYW5jaChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBMYXllckJyYW5jaCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3ZhbHVlICglcykgaXMgbm90IGEgbGF5ZXJCcmFuY2gnICUgdHlwZSh2YWx1ZSkpCisgICAgICAgIGlmIHNlbGYuaW5kZXggIT0gdmFsdWUuaW5kZXg6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignT2JqZWN0IGFuZCB2YWx1ZSBkbyBub3Qgc2hhcmUgdGhlIHNhbWUgaW5kZXggYW5kIHRodXMga2V5IHNldC4nKQorICAgICAgICBzZWxmLmxheWVyYnJhbmNoX2lkID0gdmFsdWUuaWQKKworICAgIEBsYXllcmJyYW5jaC5kZWxldGVyCisgICAgZGVmIGxheWVyYnJhbmNoKHNlbGYpOgorICAgICAgICBkZWwgc2VsZi5sYXllcmJyYW5jaF9pZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyX2lkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXllcmJyYW5jaC5sYXllcl9pZAorCisgICAgIyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc2V0IG9yIGRlbGV0ZSBsYXllcl9pZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxheWVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5sYXllcmJyYW5jaC5sYXllcgorCisgICAgIyBEb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gc2V0IG9yIGRlbGV0ZSBsYXllcgorCisKK2NsYXNzIExheWVyRGVwZW5kZW5jeShMYXllckluZGV4SXRlbU9ial9MYXllckJyYW5jaCk6CisgICAgZGVmIGRlZmluZV9kYXRhKHNlbGYsIGlkLCBsYXllcmJyYW5jaCwgZGVwZW5kZW5jeSwgcmVxdWlyZWQ9VHJ1ZSk6CisgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICBpZiBpc2luc3RhbmNlKGxheWVyYnJhbmNoLCBMYXllckJyYW5jaCk6CisgICAgICAgICAgICBzZWxmLmxheWVyYnJhbmNoID0gbGF5ZXJicmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubGF5ZXJicmFuY2hfaWQgPSBsYXllcmJyYW5jaAorICAgICAgICBpZiBpc2luc3RhbmNlKGRlcGVuZGVuY3ksIExheWVyRGVwZW5kZW5jeSk6CisgICAgICAgICAgICBzZWxmLmRlcGVuZGVuY3kgPSBkZXBlbmRlbmN5CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmRlcGVuZGVuY3lfaWQgPSBkZXBlbmRlbmN5CisgICAgICAgIHNlbGYucmVxdWlyZWQgPSByZXF1aXJlZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlcGVuZGVuY3lfaWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fZ2V0YXR0cl9fKCdkZXBlbmRlbmN5JykKKworICAgIEBkZXBlbmRlbmN5X2lkLnNldHRlcgorICAgIGRlZiBkZXBlbmRlbmN5X2lkKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fc2V0YXR0cignZGVwZW5kZW5jeScsIHZhbHVlLCBwcm9wPUZhbHNlKQorCisgICAgQGRlcGVuZGVuY3lfaWQuZGVsZXRlcgorICAgIGRlZiBkZXBlbmRlbmN5X2lkKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWxhdHRyKCdkZXBlbmRlbmN5JywgcHJvcD1GYWxzZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXBlbmRlbmN5KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmRleC5sYXllckl0ZW1zW3NlbGYuZGVwZW5kZW5jeV9pZF0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoJ1VuYWJsZSB0byBmaW5kIGxheWVySXRlbXMgaW4gaW5kZXggdG8gbWFwIGxheWVyYnJhbmNoX2lkICVzJyAlIHNlbGYuZGVwZW5kZW5jeV9pZCkKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignVW5hYmxlIHRvIGZpbmQgZGVwZW5kZW5jeV9pZCAlcyBpbiBpbmRleCBsYXllckl0ZW1zJyAlIHNlbGYuZGVwZW5kZW5jeV9pZCkKKworICAgIEBkZXBlbmRlbmN5LnNldHRlcgorICAgIGRlZiBkZXBlbmRlbmN5KHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIExheWVyRGVwZW5kZW5jeSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3ZhbHVlICglcykgaXMgbm90IGEgZGVwZW5kZW5jeScgJSB0eXBlKHZhbHVlKSkKKyAgICAgICAgaWYgc2VsZi5pbmRleCAhPSB2YWx1ZS5pbmRleDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdPYmplY3QgYW5kIHZhbHVlIGRvIG5vdCBzaGFyZSB0aGUgc2FtZSBpbmRleCBhbmQgdGh1cyBrZXkgc2V0LicpCisgICAgICAgIHNlbGYuZGVwZW5kZW5jeV9pZCA9IHZhbHVlLmlkCisKKyAgICBAZGVwZW5kZW5jeS5kZWxldGVyCisgICAgZGVmIGRlcGVuZGVuY3koc2VsZik6CisgICAgICAgIHNlbGYuX2RlbGF0dHIoJ2RlcGVuZGVuY3knLCBwcm9wPUZhbHNlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlcGVuZGVuY3lfbGF5ZXJCcmFuY2goc2VsZik6CisgICAgICAgIGxheWVyaWQgPSBzZWxmLmRlcGVuZGVuY3lfaWQKKyAgICAgICAgYnJhbmNoaWQgPSBzZWxmLmxheWVyYnJhbmNoLmJyYW5jaF9pZAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluZGV4LmxheWVyQnJhbmNoZXNfbGF5ZXJJZF9icmFuY2hJZFsiJXM6JXMiICUgKGxheWVyaWQsIGJyYW5jaGlkKV0KKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAjIGxheWVyQnJhbmNoZXNfbGF5ZXJJZF9icmFuY2hJZCAtLSBidXQgbm90IGxheWVySWQ6YnJhbmNoSWQKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCdVbmFibGUgdG8gZmluZCBsYXllcklkOmJyYW5jaElkICVzOiVzIGluIGluZGV4IGxheWVyQnJhbmNoZXNfbGF5ZXJJZF9icmFuY2hJZCcgJSAobGF5ZXJpZCwgYnJhbmNoaWQpKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignVW5hYmxlIHRvIGZpbmQgbGF5ZXJJZDpicmFuY2hJZCAlczolcyBpbiBsYXllckl0ZW1zIGFuZCBsYXllckJyYW5jaGVzJyAlIChsYXllcmlkLCBicmFuY2hpZCkpCisKKyAgICAjIGRlcGVuZGVuY3lfbGF5ZXJCcmFuY2ggZG9lc24ndCBtYWtlIHNlbnNlIHRvIHNldCBvciBkZWwKKworCitjbGFzcyBSZWNpcGUoTGF5ZXJJbmRleEl0ZW1PYmpfTGF5ZXJCcmFuY2gpOgorICAgIGRlZiBkZWZpbmVfZGF0YShzZWxmLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGZpbGVwYXRoLCBwbiwgcHYsIGxheWVyYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5PSIiLCBkZXNjcmlwdGlvbj0iIiwgc2VjdGlvbj0iIiwgbGljZW5zZT0iIiwKKyAgICAgICAgICAgICAgICAgICAgaG9tZXBhZ2U9IiIsIGJ1Z3RyYWNrZXI9IiIsIHByb3ZpZGVzPSIiLCBiYmNsYXNzZXh0ZW5kPSIiLAorICAgICAgICAgICAgICAgICAgICBpbmhlcml0cz0iIiwgYmxhY2tsaXN0ZWQ9IiIsIHVwZGF0ZWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIHNlbGYucG4gPSBwbgorICAgICAgICBzZWxmLnB2ID0gcHYKKyAgICAgICAgc2VsZi5zdW1tYXJ5ID0gc3VtbWFyeQorICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgc2VsZi5zZWN0aW9uID0gc2VjdGlvbgorICAgICAgICBzZWxmLmxpY2Vuc2UgPSBsaWNlbnNlCisgICAgICAgIHNlbGYuaG9tZXBhZ2UgPSBob21lcGFnZQorICAgICAgICBzZWxmLmJ1Z3RyYWNrZXIgPSBidWd0cmFja2VyCisgICAgICAgIHNlbGYucHJvdmlkZXMgPSBwcm92aWRlcworICAgICAgICBzZWxmLmJiY2xhc3NleHRlbmQgPSBiYmNsYXNzZXh0ZW5kCisgICAgICAgIHNlbGYuaW5oZXJpdHMgPSBpbmhlcml0cworICAgICAgICBzZWxmLnVwZGF0ZWQgPSB1cGRhdGVkIG9yIGRhdGV0aW1lLmRhdGV0aW1lLnRvZGF5KCkuaXNvZm9ybWF0KCkKKyAgICAgICAgc2VsZi5ibGFja2xpc3RlZCA9IGJsYWNrbGlzdGVkCisgICAgICAgIGlmIGlzaW5zdGFuY2UobGF5ZXJicmFuY2gsIExheWVyQnJhbmNoKToKKyAgICAgICAgICAgIHNlbGYubGF5ZXJicmFuY2ggPSBsYXllcmJyYW5jaAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5sYXllcmJyYW5jaF9pZCA9IGxheWVyYnJhbmNoCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZnVsbHBhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5maWxlcGF0aCwgc2VsZi5maWxlbmFtZSkKKworICAgICMgU2V0IHdvdWxkIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdG8gc3BsaXQgaXQKKyAgICAjIGRlbCB3b3VsZCB3ZSBkZWwgYm90aCBwYXJ0cz8KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpbmhlcml0cyhzZWxmKToKKyAgICAgICAgaWYgJ2luaGVyaXRzJyBub3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgICMgT2xkZXIgaW5kZXhlcyBtYXkgbm90IGhhdmUgdGhpcywgc28gZW11bGF0ZSBpdAorICAgICAgICAgICAgaWYgJy1pbWFnZS0nIGluIHNlbGYucG46CisgICAgICAgICAgICAgICAgcmV0dXJuICdpbWFnZScKKyAgICAgICAgcmV0dXJuIHNlbGYuX19nZXRhdHRyX18oJ2luaGVyaXRzJykKKworICAgIEBpbmhlcml0cy5zZXR0ZXIKKyAgICBkZWYgaW5oZXJpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2V0YXR0cignaW5oZXJpdHMnLCB2YWx1ZSwgcHJvcD1GYWxzZSkKKworICAgIEBpbmhlcml0cy5kZWxldGVyCisgICAgZGVmIGluaGVyaXRzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGVsYXR0cignaW5oZXJpdHMnLCBwcm9wPUZhbHNlKQorCisKK2NsYXNzIE1hY2hpbmUoTGF5ZXJJbmRleEl0ZW1PYmpfTGF5ZXJCcmFuY2gpOgorICAgIGRlZiBkZWZpbmVfZGF0YShzZWxmLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIGxheWVyYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICB1cGRhdGVkPU5vbmUpOgorICAgICAgICBzZWxmLmlkID0gaWQKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KKyAgICAgICAgaWYgaXNpbnN0YW5jZShsYXllcmJyYW5jaCwgTGF5ZXJCcmFuY2gpOgorICAgICAgICAgICAgc2VsZi5sYXllcmJyYW5jaCA9IGxheWVyYnJhbmNoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmxheWVyYnJhbmNoX2lkID0gbGF5ZXJicmFuY2gKKyAgICAgICAgc2VsZi51cGRhdGVkID0gdXBkYXRlZCBvciBkYXRldGltZS5kYXRldGltZS50b2RheSgpLmlzb2Zvcm1hdCgpCisKK2NsYXNzIERpc3RybyhMYXllckluZGV4SXRlbU9ial9MYXllckJyYW5jaCk6CisgICAgZGVmIGRlZmluZV9kYXRhKHNlbGYsIGlkLAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBkZXNjcmlwdGlvbiwgbGF5ZXJicmFuY2gsCisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuaWQgPSBpZAorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgorICAgICAgICBpZiBpc2luc3RhbmNlKGxheWVyYnJhbmNoLCBMYXllckJyYW5jaCk6CisgICAgICAgICAgICBzZWxmLmxheWVyYnJhbmNoID0gbGF5ZXJicmFuY2gKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubGF5ZXJicmFuY2hfaWQgPSBsYXllcmJyYW5jaAorICAgICAgICBzZWxmLnVwZGF0ZWQgPSB1cGRhdGVkIG9yIGRhdGV0aW1lLmRhdGV0aW1lLnRvZGF5KCkuaXNvZm9ybWF0KCkKKworIyBXaGVuIHBlcmZvcm1pbmcgY2VydGFpbiBhY3Rpb25zLCB3ZSBtYXkgbmVlZCB0byBzb3J0IHRoZSBkYXRhLgorIyBUaGlzIHdpbGwgYWxsb3cgdXMgdG8ga2VlcCBpdCBjb25zaXN0ZW50IGZyb20gcnVuIHRvIHJ1bi4KK2RlZiBzb3J0X2VudHJ5KGl0ZW0pOgorICAgIG5ld2l0ZW0gPSBpdGVtCisgICAgdHJ5OgorICAgICAgICBpZiB0eXBlKG5ld2l0ZW0pID09IHR5cGUoZGljdCgpKToKKyAgICAgICAgICAgIG5ld2l0ZW0gPSBPcmRlcmVkRGljdChzb3J0ZWQobmV3aXRlbS5pdGVtcygpLCBrZXk9bGFtYmRhIHQ6IHRbMF0pKQorICAgICAgICAgICAgZm9yIGluZGV4IGluIG5ld2l0ZW06CisgICAgICAgICAgICAgICAgbmV3aXRlbVtpbmRleF0gPSBzb3J0X2VudHJ5KG5ld2l0ZW1baW5kZXhdKQorICAgICAgICBlbGlmIHR5cGUobmV3aXRlbSkgPT0gdHlwZShsaXN0KCkpOgorICAgICAgICAgICAgbmV3aXRlbS5zb3J0KGtleT1sYW1iZGEgb2JqOiBvYmpbJ2lkJ10pCisgICAgICAgICAgICBmb3IgaW5kZXgsIF8gaW4gZW51bWVyYXRlKG5ld2l0ZW0pOgorICAgICAgICAgICAgICAgIG5ld2l0ZW1baW5kZXhdID0gc29ydF9lbnRyeShuZXdpdGVtW2luZGV4XSkKKyAgICBleGNlcHQ6CisgICAgICAgIGxvZ2dlci5lcnJvcignU29ydCBmYWlsZWQgZm9yIGl0ZW0gJXMnICUgdHlwZShpdGVtKSkKKyAgICAgICAgcGFzcworCisgICAgcmV0dXJuIG5ld2l0ZW0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OGYwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5CkBAIC0wLDAgKzEsMzQ0IEBACisjIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyMgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IGpzb24KKworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0CisKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1bnF1b3RlLCB1cmxwYXJzZQorCitpbXBvcnQgbGF5ZXJpbmRleGxpYgorCitpbXBvcnQgbGF5ZXJpbmRleGxpYi5wbHVnaW4KKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UubGF5ZXJpbmRleGxpYi5jb29rZXInKQorCitpbXBvcnQgYmIudXRpbHMKKworZGVmIHBsdWdpbl9pbml0KHBsdWdpbnMpOgorICAgIHJldHVybiBDb29rZXJQbHVnaW4oKQorCitjbGFzcyBDb29rZXJQbHVnaW4obGF5ZXJpbmRleGxpYi5wbHVnaW4uSW5kZXhQbHVnaW4pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50eXBlID0gImNvb2tlciIKKworICAgICAgICBzZWxmLnNlcnZlcl9jb25uZWN0aW9uID0gTm9uZQorICAgICAgICBzZWxmLnVpX21vZHVsZSA9IE5vbmUKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCisKKyAgICBkZWYgX3J1bl9jb21tYW5kKHNlbGYsIGNvbW1hbmQsIHBhdGgsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3VsdCwgXyA9IGJiLnByb2Nlc3MucnVuKGNvbW1hbmQsIGN3ZD1wYXRoKQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnN0cmlwKCkKKyAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3I6CisgICAgICAgICAgICByZXN1bHQgPSBkZWZhdWx0CisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfaGFuZGxlX2dpdF9yZW1vdGUoc2VsZiwgcmVtb3RlKToKKyAgICAgICAgaWYgIjovLyIgbm90IGluIHJlbW90ZToKKyAgICAgICAgICAgIGlmICc6JyBpbiByZW1vdGU6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFzc3VtZWQgdG8gYmUgc3NoCisgICAgICAgICAgICAgICAgcmVtb3RlID0gInNzaDovLyIgKyByZW1vdGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGFzc3VtZWQgdG8gYmUgYSBmaWxlIHBhdGgKKyAgICAgICAgICAgICAgICByZW1vdGUgPSAiZmlsZTovLyIgKyByZW1vdGUKKyAgICAgICAgcmV0dXJuIHJlbW90ZQorCisgICAgZGVmIF9nZXRfYml0YmFrZV9pbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSB0dXBsZSBvZiBiaXRiYWtlIGluZm9ybWF0aW9uIiIiCisKKyAgICAgICAgIyBPdXIgcGF0aCBTSE9VTEQgYmUgLi4uL2JpdGJha2UvbGliL2xheWVyaW5kZXgvY29va2VyLnB5CisgICAgICAgIGJiX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pICMgLi4uL2JpdGJha2UvbGliL2xheWVyaW5kZXgvY29va2VyLnB5CisgICAgICAgIGJiX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUoYmJfcGF0aCkgICMgLi4uL2JpdGJha2UvbGliL2xheWVyaW5kZXgKKyAgICAgICAgYmJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShiYl9wYXRoKSAgIyAuLi4vYml0YmFrZS9saWIKKyAgICAgICAgYmJfcGF0aCA9IG9zLnBhdGguZGlybmFtZShiYl9wYXRoKSAgIyAuLi4vYml0YmFrZQorICAgICAgICBiYl9wYXRoID0gc2VsZi5fcnVuX2NvbW1hbmQoJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgZGVmYXVsdD1iYl9wYXRoKQorICAgICAgICBiYl9icmFuY2ggPSBzZWxmLl9ydW5fY29tbWFuZCgnZ2l0IHJldi1wYXJzZSAtLWFiYnJldi1yZWYgSEVBRCcsIGJiX3BhdGgsIGRlZmF1bHQ9Ijx1bmtub3duPiIpCisgICAgICAgIGJiX3JldiA9IHNlbGYuX3J1bl9jb21tYW5kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBiYl9wYXRoLCBkZWZhdWx0PSI8dW5rbm93bj4iKQorICAgICAgICBmb3IgcmVtb3RlcyBpbiBzZWxmLl9ydW5fY29tbWFuZCgnZ2l0IHJlbW90ZSAtdicsIGJiX3BhdGgsIGRlZmF1bHQ9IiIpLnNwbGl0KCJcbiIpOgorICAgICAgICAgICAgcmVtb3RlID0gcmVtb3Rlcy5zcGxpdCgiXHQiKVsxXS5zcGxpdCgiICIpWzBdCisgICAgICAgICAgICBpZiAiKGZldGNoKSIgPT0gcmVtb3Rlcy5zcGxpdCgiXHQiKVsxXS5zcGxpdCgiICIpWzFdOgorICAgICAgICAgICAgICAgIGJiX3JlbW90ZSA9IHNlbGYuX2hhbmRsZV9naXRfcmVtb3RlKHJlbW90ZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmJfcmVtb3RlID0gc2VsZi5faGFuZGxlX2dpdF9yZW1vdGUoYmJfcGF0aCkKKworICAgICAgICByZXR1cm4gKGJiX3JlbW90ZSwgYmJfYnJhbmNoLCBiYl9yZXYsIGJiX3BhdGgpCisKKyAgICBkZWYgX2xvYWRfYmJsYXllcnMoc2VsZiwgYnJhbmNoZXM9Tm9uZSk6CisgICAgICAgICIiIkxvYWQgdGhlIEJCTEFZRVJTIGFuZCByZWxhdGVkIGNvbGxlY3Rpb24gaW5mb3JtYXRpb24iIiIKKworICAgICAgICBkID0gc2VsZi5sYXllcmluZGV4LmRhdGEKKworICAgICAgICBpZiBub3QgYnJhbmNoZXM6CisgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RmV0Y2hFcnJvcigiTm8gYnJhbmNoZXMgc3BlY2lmaWVkIGZvciBfbG9hZF9iYmxheWVycyEiKQorCisgICAgICAgIGluZGV4ID0gbGF5ZXJpbmRleGxpYi5MYXllckluZGV4T2JqKCkKKworICAgICAgICBicmFuY2hJZCA9IDAKKyAgICAgICAgaW5kZXguYnJhbmNoZXMgPSB7fQorCisgICAgICAgIGxheWVySXRlbUlkID0gMAorICAgICAgICBpbmRleC5sYXllckl0ZW1zID0ge30KKworICAgICAgICBsYXllckJyYW5jaElkID0gMAorICAgICAgICBpbmRleC5sYXllckJyYW5jaGVzID0ge30KKworICAgICAgICBiYmxheWVycyA9IGQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCkKKworICAgICAgICBpZiBub3QgYmJsYXllcnM6CisgICAgICAgICAgICAjIEl0J3MgYmxhbmshICBOb3RoaW5nIHRvIHByb2Nlc3MuLi4KKyAgICAgICAgICAgIHJldHVybiBpbmRleAorCisgICAgICAgIGNvbGxlY3Rpb25zID0gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpCisgICAgICAgIGxheWVyY29uZnMgPSBkLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBkKQorICAgICAgICBiYmZpbGVfY29sbGVjdGlvbnMgPSB7bGF5ZXI6IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUocGF0aCkpIGZvciBsYXllciwgcGF0aCBpbiBsYXllcmNvbmZzLml0ZW1zKCl9CisKKyAgICAgICAgKF8sIGJiX2JyYW5jaCwgXywgXykgPSBzZWxmLl9nZXRfYml0YmFrZV9pbmZvKCkKKworICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgorICAgICAgICAgICAgYnJhbmNoSWQgKz0gMQorICAgICAgICAgICAgaW5kZXguYnJhbmNoZXNbYnJhbmNoSWRdID0gbGF5ZXJpbmRleGxpYi5CcmFuY2goaW5kZXgsIE5vbmUpCisgICAgICAgICAgICBpbmRleC5icmFuY2hlc1ticmFuY2hJZF0uZGVmaW5lX2RhdGEoYnJhbmNoSWQsIGJyYW5jaCwgYmJfYnJhbmNoKQorCisgICAgICAgIGZvciBlbnRyeSBpbiBjb2xsZWN0aW9ucy5zcGxpdCgpOgorICAgICAgICAgICAgbGF5ZXJwYXRoID0gZW50cnkKKyAgICAgICAgICAgIGlmIGVudHJ5IGluIGJiZmlsZV9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgICAgICBsYXllcnBhdGggPSBiYmZpbGVfY29sbGVjdGlvbnNbZW50cnldCisKKyAgICAgICAgICAgIGxheWVybmFtZSA9IGQuZ2V0VmFyKCdCQkxBWUVSU19MQVlFUklOREVYX05BTUVfJXMnICUgZW50cnkpIG9yIG9zLnBhdGguYmFzZW5hbWUobGF5ZXJwYXRoKQorICAgICAgICAgICAgbGF5ZXJ2ZXJzaW9uID0gZC5nZXRWYXIoJ0xBWUVSVkVSU0lPTl8lcycgJSBlbnRyeSkgb3IgIiIKKyAgICAgICAgICAgIGxheWVydXJsID0gc2VsZi5faGFuZGxlX2dpdF9yZW1vdGUobGF5ZXJwYXRoKQorCisgICAgICAgICAgICBsYXllcnN1YmRpciA9ICIiCisgICAgICAgICAgICBsYXllcnJldiA9ICI8dW5rbm93bj4iCisgICAgICAgICAgICBsYXllcmJyYW5jaCA9ICI8dW5rbm93bj4iCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobGF5ZXJwYXRoKToKKyAgICAgICAgICAgICAgICBsYXllcmJhc2VwYXRoID0gc2VsZi5fcnVuX2NvbW1hbmQoJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgbGF5ZXJwYXRoLCBkZWZhdWx0PWxheWVycGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmFic3BhdGgobGF5ZXJwYXRoKSAhPSBvcy5wYXRoLmFic3BhdGgobGF5ZXJiYXNlcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGxheWVyc3ViZGlyID0gb3MucGF0aC5hYnNwYXRoKGxheWVycGF0aClbbGVuKGxheWVyYmFzZXBhdGgpICsgMTpdCisKKyAgICAgICAgICAgICAgICBsYXllcmJyYW5jaCA9IHNlbGYuX3J1bl9jb21tYW5kKCdnaXQgcmV2LXBhcnNlIC0tYWJicmV2LXJlZiBIRUFEJywgbGF5ZXJwYXRoLCBkZWZhdWx0PSI8dW5rbm93bj4iKQorICAgICAgICAgICAgICAgIGxheWVycmV2ID0gc2VsZi5fcnVuX2NvbW1hbmQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGxheWVycGF0aCwgZGVmYXVsdD0iPHVua25vd24+IikKKworICAgICAgICAgICAgICAgIGZvciByZW1vdGVzIGluIHNlbGYuX3J1bl9jb21tYW5kKCdnaXQgcmVtb3RlIC12JywgbGF5ZXJwYXRoLCBkZWZhdWx0PSIiKS5zcGxpdCgiXG4iKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlbW90ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnVybCA9IHNlbGYuX2hhbmRsZV9naXRfcmVtb3RlKGxheWVycGF0aCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZSA9IHJlbW90ZXMuc3BsaXQoIlx0IilbMV0uc3BsaXQoIiAiKVswXQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgIihmZXRjaCkiID09IHJlbW90ZXMuc3BsaXQoIlx0IilbMV0uc3BsaXQoIiAiKVsxXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnVybCA9IHNlbGYuX2hhbmRsZV9naXRfcmVtb3RlKHJlbW90ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBsYXllckl0ZW1JZCArPSAxCisgICAgICAgICAgICBpbmRleC5sYXllckl0ZW1zW2xheWVySXRlbUlkXSA9IGxheWVyaW5kZXhsaWIuTGF5ZXJJdGVtKGluZGV4LCBOb25lKQorICAgICAgICAgICAgaW5kZXgubGF5ZXJJdGVtc1tsYXllckl0ZW1JZF0uZGVmaW5lX2RhdGEobGF5ZXJJdGVtSWQsIGxheWVybmFtZSwgZGVzY3JpcHRpb249bGF5ZXJwYXRoLCB2Y3NfdXJsPWxheWVydXJsKQorCisgICAgICAgICAgICBmb3IgYnJhbmNoSWQgaW4gaW5kZXguYnJhbmNoZXM6CisgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2hJZCArPSAxCisgICAgICAgICAgICAgICAgaW5kZXgubGF5ZXJCcmFuY2hlc1tsYXllckJyYW5jaElkXSA9IGxheWVyaW5kZXhsaWIuTGF5ZXJCcmFuY2goaW5kZXgsIE5vbmUpCisgICAgICAgICAgICAgICAgaW5kZXgubGF5ZXJCcmFuY2hlc1tsYXllckJyYW5jaElkXS5kZWZpbmVfZGF0YShsYXllckJyYW5jaElkLCBlbnRyeSwgbGF5ZXJ2ZXJzaW9uLCBsYXllckl0ZW1JZCwgYnJhbmNoSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjc19zdWJkaXI9bGF5ZXJzdWJkaXIsIHZjc19sYXN0X3Jldj1sYXllcnJldiwgYWN0dWFsX2JyYW5jaD1sYXllcmJyYW5jaCkKKworICAgICAgICByZXR1cm4gaW5kZXgKKworCisgICAgZGVmIGxvYWRfaW5kZXgoc2VsZiwgdXJsLCBsb2FkKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBGZXRjaGVzIGxheWVyIGluZm9ybWF0aW9uIGZyb20gYSBidWlsZCBjb25maWd1cmF0aW9uLgorCisgICAgICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIEFQSSwKKyAgICAgICAgICAgIGxheWVyLCBicmFuY2gsIGRlcGVuZGVuY3ksIHJlY2lwZSwgbWFjaGluZSwgZGlzdHJvLCBpbmZvcm1hdGlvbi4KKworICAgICAgICAgICAgdXJsIHR5cGUgc2hvdWxkIGJlICdjb29rZXInLgorICAgICAgICAgICAgdXJsIHBhdGggaXMgaWdub3JlZAorICAgICAgICAiIiIKKworICAgICAgICB1cCA9IHVybHBhcnNlKHVybCkKKworICAgICAgICBpZiB1cC5zY2hlbWUgIT0gJ2Nvb2tlcic6CisgICAgICAgICAgICByYWlzZSBsYXllcmluZGV4bGliLnBsdWdpbi5MYXllckluZGV4UGx1Z2luVXJsRXJyb3Ioc2VsZi50eXBlLCB1cmwpCisKKyAgICAgICAgZCA9IHNlbGYubGF5ZXJpbmRleC5kYXRhCisKKyAgICAgICAgcGFyYW1zID0gc2VsZi5sYXllcmluZGV4Ll9wYXJzZV9wYXJhbXModXAucGFyYW1zKQorCisgICAgICAgICMgT25seSByZWFzb24gdG8gcGFzcyBhIGJyYW5jaCBpcyB0byBlbXVsYXRlIHRoZW0uLi4KKyAgICAgICAgaWYgJ2JyYW5jaCcgaW4gcGFyYW1zOgorICAgICAgICAgICAgYnJhbmNoZXMgPSBwYXJhbXNbJ2JyYW5jaCddLnNwbGl0KCcsJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5jaGVzID0gWydIRUFEJ10KKworICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkxvYWRpbmcgY29va2VyIGRhdGEgYnJhbmNoZXMgJXMiICUgYnJhbmNoZXMpCisKKyAgICAgICAgaW5kZXggPSBzZWxmLl9sb2FkX2JibGF5ZXJzKGJyYW5jaGVzPWJyYW5jaGVzKQorCisgICAgICAgIGluZGV4LmNvbmZpZyA9IHt9CisgICAgICAgIGluZGV4LmNvbmZpZ1snVFlQRSddID0gc2VsZi50eXBlCisgICAgICAgIGluZGV4LmNvbmZpZ1snVVJMJ10gPSB1cmwKKworICAgICAgICBpZiAnZGVzYycgaW4gcGFyYW1zOgorICAgICAgICAgICAgaW5kZXguY29uZmlnWydERVNDUklQVElPTiddID0gdW5xdW90ZShwYXJhbXNbJ2Rlc2MnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluZGV4LmNvbmZpZ1snREVTQ1JJUFRJT04nXSA9ICdsb2NhbCcKKworICAgICAgICBpZiAnY2FjaGUnIGluIHBhcmFtczoKKyAgICAgICAgICAgIGluZGV4LmNvbmZpZ1snQ0FDSEUnXSA9IHBhcmFtc1snY2FjaGUnXQorCisgICAgICAgIGluZGV4LmNvbmZpZ1snQlJBTkNIJ10gPSBicmFuY2hlcworCisgICAgICAgICMgKCJsYXllckRlcGVuZGVuY2llcyIsIGxheWVyaW5kZXhsaWIuTGF5ZXJEZXBlbmRlbmN5KQorICAgICAgICBsYXllckRlcGVuZGVuY3lJZCA9IDAKKyAgICAgICAgaWYgImxheWVyRGVwZW5kZW5jaWVzIiBpbiBsb2FkOgorICAgICAgICAgICAgaW5kZXgubGF5ZXJEZXBlbmRlbmNpZXMgPSB7fQorICAgICAgICAgICAgZm9yIGxheWVyQnJhbmNoSWQgaW4gaW5kZXgubGF5ZXJCcmFuY2hlczoKKyAgICAgICAgICAgICAgICBicmFuY2hOYW1lID0gaW5kZXgubGF5ZXJCcmFuY2hlc1tsYXllckJyYW5jaElkXS5icmFuY2gubmFtZQorICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBpbmRleC5sYXllckJyYW5jaGVzW2xheWVyQnJhbmNoSWRdLmNvbGxlY3Rpb24KKworICAgICAgICAgICAgICAgIGRlZiBhZGRfZGVwZW5kZW5jeShsYXllckRlcGVuZGVuY3lJZCwgaW5kZXgsIGRlcHMsIHJlcXVpcmVkKToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwRGljdCA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwX3ZlcnNpb25zMihkZXBzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgYmIudXRpbHMuVmVyc2lvblN0cmluZ0V4Y2VwdGlvbiBhcyB2c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5mYXRhbCgnRXJyb3IgcGFyc2luZyBMQVlFUkRFUEVORFNfJXM6ICVzJyAlIChjLCBzdHIodnNlKSkpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgb3BsaXN0IGluIGxpc3QoZGVwRGljdC5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBzZWFyY2ggb3Vyc2VsdmVzLCBzbyB1c2UgdGhlIF8gdmVyc2lvbi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwTGF5ZXJCcmFuY2ggPSBpbmRleC5maW5kX2NvbGxlY3Rpb24oZGVwLCBicmFuY2hlcz1bYnJhbmNoTmFtZV0pCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGVwTGF5ZXJCcmFuY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNaXNzaW5nIGRlcGVuZGVuY3k/IQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignTWlzc2luZyBkZXBlbmRlbmN5ICVzICglcyknICUgKGRlcCwgYnJhbmNoTmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBhc3N1bWUgdGhhdCB0aGUgb3BsaXN0IG1hdGNoZXMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyRGVwZW5kZW5jeUlkICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyRGVwZW5kZW5jeSA9IGxheWVyaW5kZXhsaWIuTGF5ZXJEZXBlbmRlbmN5KGluZGV4LCBOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJEZXBlbmRlbmN5LmRlZmluZV9kYXRhKGlkPWxheWVyRGVwZW5kZW5jeUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXJlcXVpcmVkLCBsYXllcmJyYW5jaD1sYXllckJyYW5jaElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3k9ZGVwTGF5ZXJCcmFuY2gubGF5ZXJfaWQpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAnJXMgcmVxdWlyZXMgJXMnICUgKGxheWVyRGVwZW5kZW5jeS5sYXllci5uYW1lLCBsYXllckRlcGVuZGVuY3kuZGVwZW5kZW5jeS5uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmFkZF9lbGVtZW50KCJsYXllckRlcGVuZGVuY2llcyIsIFtsYXllckRlcGVuZGVuY3ldKQorCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXllckRlcGVuZGVuY3lJZAorCisgICAgICAgICAgICAgICAgZGVwcyA9IGQuZ2V0VmFyKCJMQVlFUkRFUEVORFNfJXMiICUgY29sbGVjdGlvbikKKyAgICAgICAgICAgICAgICBpZiBkZXBzOgorICAgICAgICAgICAgICAgICAgICBsYXllckRlcGVuZGVuY3lJZCA9IGFkZF9kZXBlbmRlbmN5KGxheWVyRGVwZW5kZW5jeUlkLCBpbmRleCwgZGVwcywgVHJ1ZSkKKworICAgICAgICAgICAgICAgIGRlcHMgPSBkLmdldFZhcigiTEFZRVJSRUNPTU1FTkRTXyVzIiAlIGNvbGxlY3Rpb24pCisgICAgICAgICAgICAgICAgaWYgZGVwczoKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJEZXBlbmRlbmN5SWQgPSBhZGRfZGVwZW5kZW5jeShsYXllckRlcGVuZGVuY3lJZCwgaW5kZXgsIGRlcHMsIEZhbHNlKQorCisgICAgICAgICMgTmVlZCB0byBsb2FkIHJlY2lwZXMgaGVyZSAocmVxdWlyZXMgY29va2VyIGFjY2VzcykKKyAgICAgICAgcmVjaXBlSWQgPSAwCisgICAgICAgICMjIFRPRE86IE5PVCBJTVBMRU1FTlRFRAorICAgICAgICAjIFRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIGlzIGFuIGV4YW1wbGUgb2Ygd2hhdCBuZWVkcyB0byBiZQorICAgICAgICAjIGltcGxlbWVudGVkLiAgSG93ZXZlciwgaXQgZG9lcyBub3Qgd29yayBhcy1pcy4KKyAgICAgICAgaWYgRmFsc2UgYW5kICdyZWNpcGVzJyBpbiBsb2FkOgorICAgICAgICAgICAgaW5kZXgucmVjaXBlcyA9IHt9CisKKyAgICAgICAgICAgIHJldCA9IHNlbGYudWlfbW9kdWxlLm1haW4oc2VsZi5zZXJ2ZXJfY29ubmVjdGlvbi5jb25uZWN0aW9uLCBzZWxmLnNlcnZlcl9jb25uZWN0aW9uLmV2ZW50cywgY29uZmlnX3BhcmFtcykKKworICAgICAgICAgICAgYWxsX3ZlcnNpb25zID0gc2VsZi5fcnVuX2NvbW1hbmQoJ2FsbFByb3ZpZGVycycpCisKKyAgICAgICAgICAgIGFsbF92ZXJzaW9uc19saXN0ID0gZGVmYXVsdGRpY3QobGlzdCwgYWxsX3ZlcnNpb25zKQorICAgICAgICAgICAgZm9yIHBuIGluIGFsbF92ZXJzaW9uc19saXN0OgorICAgICAgICAgICAgICAgIGZvciAoKHBlLCBwdiwgcHIpLCBmcGF0aCkgaW4gYWxsX3ZlcnNpb25zX2xpc3RbcG5dOgorICAgICAgICAgICAgICAgICAgICByZWFsZm4gPSBiYi5jYWNoZS52aXJ0dWFsZm4ycmVhbGZuKGZwYXRoKQorCisgICAgICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5kaXJuYW1lKHJlYWxmblswXSkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHJlYWxmblswXSkKKworICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYWxsIEhPUlJJQkxZIHNsb3csIGFuZCBsaWtlbHkgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgICAgICAgI2RzY29uID0gc2VsZi5fcnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZwYXRoLCBGYWxzZSwgW10pCisgICAgICAgICAgICAgICAgICAgICNjb25uZWN0b3IgPSBteURhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBkc2Nvbi5kc2luZGV4KQorICAgICAgICAgICAgICAgICAgICAjcmVjaXBlX2RhdGEgPSBiYi5kYXRhLmluaXQoKQorICAgICAgICAgICAgICAgICAgICAjcmVjaXBlX2RhdGEuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCisKKyAgICAgICAgICAgICAgICAgICAgI3N1bW1hcnkgPSByZWNpcGVfZGF0YS5nZXRWYXIoJ1NVTU1BUlknKQorICAgICAgICAgICAgICAgICAgICAjZGVzY3JpcHRpb24gPSByZWNpcGVfZGF0YS5nZXRWYXIoJ0RFU0NSSVBUSU9OJykKKyAgICAgICAgICAgICAgICAgICAgI3NlY3Rpb24gPSByZWNpcGVfZGF0YS5nZXRWYXIoJ1NFQ1RJT04nKQorICAgICAgICAgICAgICAgICAgICAjbGljZW5zZSA9IHJlY2lwZV9kYXRhLmdldFZhcignTElDRU5TRScpCisgICAgICAgICAgICAgICAgICAgICNob21lcGFnZSA9IHJlY2lwZV9kYXRhLmdldFZhcignSE9NRVBBR0UnKQorICAgICAgICAgICAgICAgICAgICAjYnVndHJhY2tlciA9IHJlY2lwZV9kYXRhLmdldFZhcignQlVHVFJBQ0tFUicpCisgICAgICAgICAgICAgICAgICAgICNwcm92aWRlcyA9IHJlY2lwZV9kYXRhLmdldFZhcignUFJPVklERVMnKQorCisgICAgICAgICAgICAgICAgICAgIGxheWVyID0gYmIudXRpbHMuZ2V0X2ZpbGVfbGF5ZXIocmVhbGZuWzBdLCBzZWxmLmNvbmZpZ19kYXRhKQorCisgICAgICAgICAgICAgICAgICAgIGRlcEJyYW5jaElkID0gY29sbGVjdGlvbl9sYXllcmJyYW5jaFtsYXllcl0KKworICAgICAgICAgICAgICAgICAgICByZWNpcGVJZCArPSAxCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSA9IGxheWVyaW5kZXhsaWIuUmVjaXBlKGluZGV4LCBOb25lKQorICAgICAgICAgICAgICAgICAgICByZWNpcGUuZGVmaW5lX2RhdGEoaWQ9cmVjaXBlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lLCBmaWxlcGF0aD1maWxlcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG49cG4sIHB2PXB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5PXBuLCBkZXNjcmlwdGlvbj1wbiwgc2VjdGlvbj0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2U9Jz8nLCBob21lcGFnZT0nPycsIGJ1Z3RyYWNrZXI9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlcz0nPycsIGJiY2xhc3NleHRlbmQ9Jz8nLCBpbmhlcml0cz0nPycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdGVkPSc/JywgbGF5ZXJicmFuY2g9ZGVwQnJhbmNoSWQpCisKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBhZGRFbGVtZW50KCJyZWNpcGVzIiwgW3JlY2lwZV0sIGluZGV4KQorCisgICAgICAgICMgKCJtYWNoaW5lcyIsIGxheWVyaW5kZXhsaWIuTWFjaGluZSkKKyAgICAgICAgbWFjaGluZUlkID0gMAorICAgICAgICBpZiAnbWFjaGluZXMnIGluIGxvYWQ6CisgICAgICAgICAgICBpbmRleC5tYWNoaW5lcyA9IHt9CisKKyAgICAgICAgICAgIGZvciBsYXllckJyYW5jaElkIGluIGluZGV4LmxheWVyQnJhbmNoZXM6CisgICAgICAgICAgICAgICAgIyBsb2FkX2JibGF5ZXJzIHVzZXMgdGhlIGRlc2NyaXB0aW9uIHRvIGNhY2hlIHRoZSBhY3R1YWwgcGF0aC4uLgorICAgICAgICAgICAgICAgIG1hY2hpbmVfcGF0aCA9IGluZGV4LmxheWVyQnJhbmNoZXNbbGF5ZXJCcmFuY2hJZF0ubGF5ZXIuZGVzY3JpcHRpb24KKyAgICAgICAgICAgICAgICBtYWNoaW5lX3BhdGggPSBvcy5wYXRoLmpvaW4obWFjaGluZV9wYXRoLCAnY29uZi9tYWNoaW5lJykKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG1hY2hpbmVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGZvciAoZGlycGF0aCwgXywgZmlsZW5hbWVzKSBpbiBvcy53YWxrKG1hY2hpbmVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBzdWJkaXJzLi4uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGlycGF0aC5lbmRzd2l0aCgnY29uZi9tYWNoaW5lJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmbmFtZSBpbiBmaWxlbmFtZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZm5hbWUuZW5kc3dpdGgoJy5jb25mJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVJZCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBsYXllcmluZGV4bGliLk1hY2hpbmUoaW5kZXgsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUuZGVmaW5lX2RhdGEoaWQ9bWFjaGluZUlkLCBuYW1lPWZuYW1lWzotNV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249Zm5hbWVbOi01XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcmJyYW5jaD1pbmRleC5sYXllckJyYW5jaGVzW2xheWVyQnJhbmNoSWRdKQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmFkZF9lbGVtZW50KCJtYWNoaW5lcyIsIFttYWNoaW5lXSkKKworICAgICAgICAjICgiZGlzdHJvcyIsIGxheWVyaW5kZXhsaWIuRGlzdHJvKQorICAgICAgICBkaXN0cm9JZCA9IDAKKyAgICAgICAgaWYgJ2Rpc3Ryb3MnIGluIGxvYWQ6CisgICAgICAgICAgICBpbmRleC5kaXN0cm9zID0ge30KKworICAgICAgICAgICAgZm9yIGxheWVyQnJhbmNoSWQgaW4gaW5kZXgubGF5ZXJCcmFuY2hlczoKKyAgICAgICAgICAgICAgICAjIGxvYWRfYmJsYXllcnMgdXNlcyB0aGUgZGVzY3JpcHRpb24gdG8gY2FjaGUgdGhlIGFjdHVhbCBwYXRoLi4uCisgICAgICAgICAgICAgICAgZGlzdHJvX3BhdGggPSBpbmRleC5sYXllckJyYW5jaGVzW2xheWVyQnJhbmNoSWRdLmxheWVyLmRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgZGlzdHJvX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlzdHJvX3BhdGgsICdjb25mL2Rpc3RybycpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkaXN0cm9fcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGZvciAoZGlycGF0aCwgXywgZmlsZW5hbWVzKSBpbiBvcy53YWxrKGRpc3Ryb19wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWdub3JlIHN1YmRpcnMuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJwYXRoLmVuZHN3aXRoKCdjb25mL2Rpc3RybycpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZm5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZuYW1lLmVuZHN3aXRoKCcuY29uZicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm9JZCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RybyA9IGxheWVyaW5kZXhsaWIuRGlzdHJvKGluZGV4LCBOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cm8uZGVmaW5lX2RhdGEoaWQ9ZGlzdHJvSWQsIG5hbWU9Zm5hbWVbOi01XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1mbmFtZVs6LTVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyYnJhbmNoPWluZGV4LmxheWVyQnJhbmNoZXNbbGF5ZXJCcmFuY2hJZF0pCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXguYWRkX2VsZW1lbnQoImRpc3Ryb3MiLCBbZGlzdHJvXSkKKworICAgICAgICByZXR1cm4gaW5kZXgKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYTJlOTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisKKyMgVGhlIGZpbGUgY29udGFpbnM6CisjICAgTGF5ZXJJbmRleCBleGNlcHRpb25zCisjICAgUGx1Z2luIGJhc2UgY2xhc3MKKyMgICBVdGlsaXR5IEZ1bmN0aW9ucyBmb3Igd29ya2luZyBvbiBsYXllcmluZGV4IGRhdGEKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgYmIubXNnCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLmxheWVyaW5kZXhsaWIucGx1Z2luJykKKworY2xhc3MgTGF5ZXJJbmRleFBsdWdpbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIiIkxheWVySW5kZXggR2VuZXJpYyBFeGNlcHRpb24iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICBzZWxmLm1zZyA9IG1lc3NhZ2UKKyAgICAgICAgIEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBtZXNzYWdlKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICByZXR1cm4gc2VsZi5tc2cKKworY2xhc3MgTGF5ZXJJbmRleFBsdWdpblVybEVycm9yKExheWVySW5kZXhQbHVnaW5FeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBhIHBsdWdpbiBkb2VzIG5vdCBzdXBwb3J0IGEgZ2l2ZW4gVVJMIHR5cGUiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2luLCB1cmwpOgorICAgICAgICBtc2cgPSAiJXMgZG9lcyBub3Qgc3VwcG9ydCAlczoiICUgKHBsdWdpbiwgdXJsKQorICAgICAgICBzZWxmLnBsdWdpbiA9IHBsdWdpbgorICAgICAgICBzZWxmLnVybCA9IHVybAorICAgICAgICBMYXllckluZGV4UGx1Z2luRXhjZXB0aW9uLl9faW5pdF9fKHNlbGYsIG1zZykKKworY2xhc3MgSW5kZXhQbHVnaW4oKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYudHlwZSA9IE5vbmUKKworICAgIGRlZiBpbml0KHNlbGYsIGxheWVyaW5kZXgpOgorICAgICAgICBzZWxmLmxheWVyaW5kZXggPSBsYXllcmluZGV4CisKKyAgICBkZWYgcGx1Z2luX3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUKKworICAgIGRlZiBsb2FkX2luZGV4KHNlbGYsIHVyaSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ2xvYWRfaW5kZXggaXMgbm90IGltcGxlbWVudGVkJykKKworICAgIGRlZiBzdG9yZV9pbmRleChzZWxmLCB1cmksIGluZGV4KToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3RvcmVfaW5kZXggaXMgbm90IGltcGxlbWVudGVkJykKKwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Jlc3RhcGkucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcmVzdGFwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDhlYjIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Jlc3RhcGkucHkKQEAgLTAsMCArMSwzOTggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQganNvbgorZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVucXVvdGUKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorCitpbXBvcnQgbGF5ZXJpbmRleGxpYgoraW1wb3J0IGxheWVyaW5kZXhsaWIucGx1Z2luCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLmxheWVyaW5kZXhsaWIucmVzdGFwaScpCisKK2RlZiBwbHVnaW5faW5pdChwbHVnaW5zKToKKyAgICByZXR1cm4gUmVzdEFwaVBsdWdpbigpCisKK2NsYXNzIFJlc3RBcGlQbHVnaW4obGF5ZXJpbmRleGxpYi5wbHVnaW4uSW5kZXhQbHVnaW4pOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50eXBlID0gInJlc3RhcGkiCisKKyAgICBkZWYgbG9hZF9pbmRleChzZWxmLCB1cmwsIGxvYWQpOgorICAgICAgICAiIiIKKyAgICAgICAgICAgIEZldGNoZXMgbGF5ZXIgaW5mb3JtYXRpb24gZnJvbSBhIGxvY2FsIG9yIHJlbW90ZSBsYXllciBpbmRleC4KKworICAgICAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIExheWVySW5kZXhPYmouCisKKyAgICAgICAgICAgIHVybCBpcyB0aGUgdXJsIHRvIHRoZSByZXN0IGFwaSBvZiB0aGUgbGF5ZXIgaW5kZXgsIHN1Y2ggYXM6CisgICAgICAgICAgICBodHRwOi8vbGF5ZXJzLm9wZW5lbWJlZGRlZC5vcmcvbGF5ZXJpbmRleC9hcGkvCisKKyAgICAgICAgICAgIE9yIGEgbG9jYWwgZmlsZS4uLgorICAgICAgICAiIiIKKworICAgICAgICB1cCA9IHVybHBhcnNlKHVybCkKKworICAgICAgICBpZiB1cC5zY2hlbWUgPT0gJ2ZpbGUnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9hZF9pbmRleF9maWxlKHVwLCB1cmwsIGxvYWQpCisKKyAgICAgICAgaWYgdXAuc2NoZW1lID09ICdodHRwJyBvciB1cC5zY2hlbWUgPT0gJ2h0dHBzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmxvYWRfaW5kZXhfd2ViKHVwLCB1cmwsIGxvYWQpCisKKyAgICAgICAgcmFpc2UgbGF5ZXJpbmRleGxpYi5wbHVnaW4uTGF5ZXJJbmRleFBsdWdpblVybEVycm9yKHNlbGYudHlwZSwgdXJsKQorCisKKyAgICBkZWYgbG9hZF9pbmRleF9maWxlKHNlbGYsIHVwLCB1cmwsIGxvYWQpOgorICAgICAgICAiIiIKKyAgICAgICAgICAgIEZldGNoZXMgbGF5ZXIgaW5mb3JtYXRpb24gZnJvbSBhIGxvY2FsIGZpbGUgb3IgZGlyZWN0b3J5LgorCisgICAgICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgTGF5ZXJJbmRleE9iai4KKworICAgICAgICAgICAgdWQgaXMgdGhlIHBhcnNlZCB1cmwgdG8gdGhlIGxvY2FsIGZpbGUgb3IgZGlyZWN0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHVwLnBhdGgpOgorICAgICAgICAgICAgcmFpc2UgRmlsZU5vdEZvdW5kRXJyb3IodXAucGF0aCkKKworICAgICAgICBpbmRleCA9IGxheWVyaW5kZXhsaWIuTGF5ZXJJbmRleE9iaigpCisKKyAgICAgICAgaW5kZXguY29uZmlnID0ge30KKyAgICAgICAgaW5kZXguY29uZmlnWydUWVBFJ10gPSBzZWxmLnR5cGUKKyAgICAgICAgaW5kZXguY29uZmlnWydVUkwnXSA9IHVybAorCisgICAgICAgIHBhcmFtcyA9IHNlbGYubGF5ZXJpbmRleC5fcGFyc2VfcGFyYW1zKHVwLnBhcmFtcykKKworICAgICAgICBpZiAnZGVzYycgaW4gcGFyYW1zOgorICAgICAgICAgICAgaW5kZXguY29uZmlnWydERVNDUklQVElPTiddID0gdW5xdW90ZShwYXJhbXNbJ2Rlc2MnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluZGV4LmNvbmZpZ1snREVTQ1JJUFRJT04nXSA9IHVwLnBhdGgKKworICAgICAgICBpZiAnY2FjaGUnIGluIHBhcmFtczoKKyAgICAgICAgICAgIGluZGV4LmNvbmZpZ1snQ0FDSEUnXSA9IHBhcmFtc1snY2FjaGUnXQorCisgICAgICAgIGlmICdicmFuY2gnIGluIHBhcmFtczoKKyAgICAgICAgICAgIGJyYW5jaGVzID0gcGFyYW1zWydicmFuY2gnXS5zcGxpdCgnLCcpCisgICAgICAgICAgICBpbmRleC5jb25maWdbJ0JSQU5DSCddID0gYnJhbmNoZXMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyYW5jaGVzID0gWycqJ10KKworCisgICAgICAgIGRlZiBsb2FkX2NhY2hlKHBhdGgsIGluZGV4LCBicmFuY2hlcz1bXSk6CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgJ0xvYWRpbmcganNvbiBmaWxlICVzJyAlIHBhdGgpCisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3J0JywgZW5jb2Rpbmc9J3V0Zi04JykgYXMgZjoKKyAgICAgICAgICAgICAgICBwaW5kZXggPSBqc29uLmxvYWQoZikKKworICAgICAgICAgICAgIyBGaWx0ZXIgdGhlIGJyYW5jaGVzIG9uIGxvYWRlZCBmaWxlcy4uLgorICAgICAgICAgICAgbmV3cEJyYW5jaCA9IFtdCisgICAgICAgICAgICBmb3IgYnJhbmNoIGluIGJyYW5jaGVzOgorICAgICAgICAgICAgICAgIGlmIGJyYW5jaCAhPSAnKic6CisgICAgICAgICAgICAgICAgICAgIGlmICdicmFuY2hlcycgaW4gcGluZGV4OgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJyIGluIHBpbmRleFsnYnJhbmNoZXMnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiclsnbmFtZSddID09IGJyYW5jaDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cEJyYW5jaC5hcHBlbmQoYnIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgJ2JyYW5jaGVzJyBpbiBwaW5kZXg6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYnIgaW4gcGluZGV4WydicmFuY2hlcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3BCcmFuY2guYXBwZW5kKGJyKQorCisgICAgICAgICAgICBpZiBuZXdwQnJhbmNoOgorICAgICAgICAgICAgICAgIGluZGV4LmFkZF9yYXdfZWxlbWVudCgnYnJhbmNoZXMnLCBsYXllcmluZGV4bGliLkJyYW5jaCwgbmV3cEJyYW5jaCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdObyBtYXRjaGluZyBicmFuY2hlcyAoJXMpIGluIGluZGV4IGZpbGUocyknICUgYnJhbmNoZXMpCisgICAgICAgICAgICAgICAgIyBObyBtYXRjaGluZyBicmFuY2hlcy4uIHJldHVybiBub3RoaW5nLi4uCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGZvciAobE5hbWUsIGxUeXBlKSBpbiBbKCJsYXllckl0ZW1zIiwgbGF5ZXJpbmRleGxpYi5MYXllckl0ZW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImxheWVyQnJhbmNoZXMiLCBsYXllcmluZGV4bGliLkxheWVyQnJhbmNoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJsYXllckRlcGVuZGVuY2llcyIsIGxheWVyaW5kZXhsaWIuTGF5ZXJEZXBlbmRlbmN5KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJyZWNpcGVzIiwgbGF5ZXJpbmRleGxpYi5SZWNpcGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIm1hY2hpbmVzIiwgbGF5ZXJpbmRleGxpYi5NYWNoaW5lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJkaXN0cm9zIiwgbGF5ZXJpbmRleGxpYi5EaXN0cm8pXToKKyAgICAgICAgICAgICAgICBpZiBsTmFtZSBpbiBwaW5kZXg6CisgICAgICAgICAgICAgICAgICAgIGluZGV4LmFkZF9yYXdfZWxlbWVudChsTmFtZSwgbFR5cGUsIHBpbmRleFtsTmFtZV0pCisKKworICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcih1cC5wYXRoKToKKyAgICAgICAgICAgIGxvYWRfY2FjaGUodXAucGF0aCwgaW5kZXgsIGJyYW5jaGVzKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4CisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdMb2FkaW5nIGZyb20gZGlyICVzLi4uJyAlICh1cC5wYXRoKSkKKyAgICAgICAgZm9yIChkaXJwYXRoLCBfLCBmaWxlbmFtZXMpIGluIG9zLndhbGsodXAucGF0aCk6CisgICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBmaWxlbmFtZS5lbmRzd2l0aCgnLmpzb24nKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBmcGF0aCA9IG9zLnBhdGguam9pbihkaXJwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBsb2FkX2NhY2hlKGZwYXRoLCBpbmRleCwgYnJhbmNoZXMpCisKKyAgICAgICAgcmV0dXJuIGluZGV4CisKKworICAgIGRlZiBsb2FkX2luZGV4X3dlYihzZWxmLCB1cCwgdXJsLCBsb2FkKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBGZXRjaGVzIGxheWVyIGluZm9ybWF0aW9uIGZyb20gYSByZW1vdGUgbGF5ZXIgaW5kZXguCisKKyAgICAgICAgICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBMYXllckluZGV4T2JqLgorCisgICAgICAgICAgICB1ZCBpcyB0aGUgcGFyc2VkIHVybCB0byB0aGUgcmVzdCBhcGkgb2YgdGhlIGxheWVyIGluZGV4LCBzdWNoIGFzOgorICAgICAgICAgICAgaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLworICAgICAgICAiIiIKKworICAgICAgICBkZWYgX2dldF9qc29uX3Jlc3BvbnNlKGFwaXVybD1Ob25lLCB1c2VybmFtZT1Ob25lLCBwYXNzd29yZD1Ob25lLCByZXRyeT1UcnVlKToKKyAgICAgICAgICAgIGFzc2VydCBhcGl1cmwgaXMgbm90IE5vbmUKKworICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJmZXRjaGluZyAlcyIgJSBhcGl1cmwpCisKKyAgICAgICAgICAgIHVwID0gdXJscGFyc2UoYXBpdXJsKQorCisgICAgICAgICAgICB1c2VybmFtZT11cC51c2VybmFtZQorICAgICAgICAgICAgcGFzc3dvcmQ9dXAucGFzc3dvcmQKKworICAgICAgICAgICAgIyBTdHJpcCB1c2VybmFtZS9wYXNzd29yZCBhbmQgcGFyYW1zCisgICAgICAgICAgICBpZiB1cC5wb3J0OgorICAgICAgICAgICAgICAgIHVwX3N0cmlwcGVkID0gdXAuX3JlcGxhY2UocGFyYW1zPSIiLCBuZXRsb2M9IiVzOiVzIiAlICh1cC5ob3N0bmFtZSwgdXAucG9ydCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVwX3N0cmlwcGVkID0gdXAuX3JlcGxhY2UocGFyYW1zPSIiLCBuZXRsb2M9dXAuaG9zdG5hbWUpCisKKyAgICAgICAgICAgIHJlcyA9IHNlbGYubGF5ZXJpbmRleC5fZmV0Y2hfdXJsKHVwX3N0cmlwcGVkLmdldHVybCgpLCB1c2VybmFtZT11c2VybmFtZSwgcGFzc3dvcmQ9cGFzc3dvcmQpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXJzZWQgPSBqc29uLmxvYWRzKHJlcy5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25SZXNldEVycm9yOgorICAgICAgICAgICAgICAgIGlmIHJldHJ5OgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIiVzOiBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIuICBSZXRyeWluZy4uLiIgJSB1cmwpCisgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IF9nZXRfanNvbl9yZXNwb25zZShhcGl1cmw9dXBfc3RyaXBwZWQuZ2V0dXJsKCksIHVzZXJuYW1lPXVzZXJuYW1lLCBwYXNzd29yZD1wYXNzd29yZCwgcmV0cnk9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiJXM6IHJldHJ5IHN1Y2Nlc3NmdWwuIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBMYXllckluZGV4RmV0Y2hFcnJvcignJXM6IENvbm5lY3Rpb24gcmVzZXQgYnkgcGVlci4gIElzIHRoZXJlIGEgZmlyZXdhbGwgYmxvY2tpbmcgeW91ciBjb25uZWN0aW9uPycgJSBhcGl1cmwpCisKKyAgICAgICAgICAgIHJldHVybiBwYXJzZWQKKworICAgICAgICBpbmRleCA9IGxheWVyaW5kZXhsaWIuTGF5ZXJJbmRleE9iaigpCisKKyAgICAgICAgaW5kZXguY29uZmlnID0ge30KKyAgICAgICAgaW5kZXguY29uZmlnWydUWVBFJ10gPSBzZWxmLnR5cGUKKyAgICAgICAgaW5kZXguY29uZmlnWydVUkwnXSA9IHVybAorCisgICAgICAgIHBhcmFtcyA9IHNlbGYubGF5ZXJpbmRleC5fcGFyc2VfcGFyYW1zKHVwLnBhcmFtcykKKworICAgICAgICBpZiAnZGVzYycgaW4gcGFyYW1zOgorICAgICAgICAgICAgaW5kZXguY29uZmlnWydERVNDUklQVElPTiddID0gdW5xdW90ZShwYXJhbXNbJ2Rlc2MnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluZGV4LmNvbmZpZ1snREVTQ1JJUFRJT04nXSA9IHVwLmhvc3RuYW1lCisKKyAgICAgICAgaWYgJ2NhY2hlJyBpbiBwYXJhbXM6CisgICAgICAgICAgICBpbmRleC5jb25maWdbJ0NBQ0hFJ10gPSBwYXJhbXNbJ2NhY2hlJ10KKworICAgICAgICBpZiAnYnJhbmNoJyBpbiBwYXJhbXM6CisgICAgICAgICAgICBicmFuY2hlcyA9IHBhcmFtc1snYnJhbmNoJ10uc3BsaXQoJywnKQorICAgICAgICAgICAgaW5kZXguY29uZmlnWydCUkFOQ0gnXSA9IGJyYW5jaGVzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmFuY2hlcyA9IFsnKiddCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5kZXguYXBpbGlua3MgPSBfZ2V0X2pzb25fcmVzcG9uc2UoYXBpdXJsPXVybCwgdXNlcm5hbWU9dXAudXNlcm5hbWUsIHBhc3N3b3JkPXVwLnBhc3N3b3JkKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByYWlzZSBsYXllcmluZGV4bGliLkxheWVySW5kZXhGZXRjaEVycm9yKHVybCwgZSkKKworICAgICAgICAjIExvY2FsIHJhdyBpbmRleCBzZXQuLi4KKyAgICAgICAgcGluZGV4ID0ge30KKworICAgICAgICAjIExvYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnJhbmNoZXMgYXQgdGhlIHNhbWUgdGltZSB0aW1lLAorICAgICAgICAjIGEgc3BlY2lhbCBicmFuY2ggb2YgJyonIG1lYW5zIGxvYWQgYWxsIGJyYW5jaGVzCisgICAgICAgIGZpbHRlciA9ICIiCisgICAgICAgIGlmICIqIiBub3QgaW4gYnJhbmNoZXM6CisgICAgICAgICAgICBmaWx0ZXIgPSAiP2ZpbHRlcj1uYW1lOiVzIiAlICJPUiIuam9pbihicmFuY2hlcykKKworICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkxvYWRpbmcgJXMgZnJvbSAlcyIgJSAoYnJhbmNoZXMsIGluZGV4LmFwaWxpbmtzWydicmFuY2hlcyddKSkKKworICAgICAgICAjIFRoZSBsaW5rIHdvbid0IGluY2x1ZGUgdXNlcm5hbWUvcGFzc3dvcmQsIHNvIHB1bGwgaXQgZnJvbSB0aGUgb3JpZ2luYWwgdXJsCisgICAgICAgIHBpbmRleFsnYnJhbmNoZXMnXSA9IF9nZXRfanNvbl9yZXNwb25zZShpbmRleC5hcGlsaW5rc1snYnJhbmNoZXMnXSArIGZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZT11cC51c2VybmFtZSwgcGFzc3dvcmQ9dXAucGFzc3dvcmQpCisgICAgICAgIGlmIG5vdCBwaW5kZXhbJ2JyYW5jaGVzJ106CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk5vIHZhbGlkIGJyYW5jaGVzICglcykgZm91bmQgYXQgdXJsICVzLiIgJSAoYnJhbmNoLCB1cmwpKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4CisgICAgICAgIGluZGV4LmFkZF9yYXdfZWxlbWVudCgiYnJhbmNoZXMiLCBsYXllcmluZGV4bGliLkJyYW5jaCwgcGluZGV4WydicmFuY2hlcyddKQorCisgICAgICAgICMgTG9hZCBhbGwgb2YgdGhlIGxheWVySXRlbXMgKHRoZXNlIGNhbiBub3QgYmUgZWFzaWx5IGZpbHRlcmVkKQorICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkxvYWRpbmcgJXMgZnJvbSAlcyIgJSAoJ2xheWVySXRlbXMnLCBpbmRleC5hcGlsaW5rc1snbGF5ZXJJdGVtcyddKSkKKworCisgICAgICAgICMgVGhlIGxpbmsgd29uJ3QgaW5jbHVkZSB1c2VybmFtZS9wYXNzd29yZCwgc28gcHVsbCBpdCBmcm9tIHRoZSBvcmlnaW5hbCB1cmwKKyAgICAgICAgcGluZGV4WydsYXllckl0ZW1zJ10gPSBfZ2V0X2pzb25fcmVzcG9uc2UoaW5kZXguYXBpbGlua3NbJ2xheWVySXRlbXMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9dXAudXNlcm5hbWUsIHBhc3N3b3JkPXVwLnBhc3N3b3JkKQorICAgICAgICBpZiBub3QgcGluZGV4WydsYXllckl0ZW1zJ106CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk5vIGxheWVycyB3ZXJlIGZvdW5kIGF0IHVybCAlcy4iICUgKHVybCkpCisgICAgICAgICAgICByZXR1cm4gaW5kZXgKKyAgICAgICAgaW5kZXguYWRkX3Jhd19lbGVtZW50KCJsYXllckl0ZW1zIiwgbGF5ZXJpbmRleGxpYi5MYXllckl0ZW0sIHBpbmRleFsnbGF5ZXJJdGVtcyddKQorCisKKwkjIEZyb20gdGhpcyBwb2ludCBvbiBsb2FkIHRoZSBjb250ZW50cyBmb3IgZWFjaCBicmFuY2guICBPdGhlcndpc2Ugd2UKKwkjIGNvdWxkIHJ1biBpbnRvIGEgdGltZW91dC4KKyAgICAgICAgZm9yIGJyYW5jaCBpbiBpbmRleC5icmFuY2hlczoKKyAgICAgICAgICAgIGZpbHRlciA9ICI/ZmlsdGVyPWJyYW5jaF9fbmFtZTolcyIgJSBpbmRleC5icmFuY2hlc1ticmFuY2hdLm5hbWUKKworICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJMb2FkaW5nICVzIGZyb20gJXMiICUgKCdsYXllckJyYW5jaGVzJywgaW5kZXguYXBpbGlua3NbJ2xheWVyQnJhbmNoZXMnXSkpCisKKyAgICAgICAgICAgICMgVGhlIGxpbmsgd29uJ3QgaW5jbHVkZSB1c2VybmFtZS9wYXNzd29yZCwgc28gcHVsbCBpdCBmcm9tIHRoZSBvcmlnaW5hbCB1cmwKKyAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJCcmFuY2hlcyddID0gX2dldF9qc29uX3Jlc3BvbnNlKGluZGV4LmFwaWxpbmtzWydsYXllckJyYW5jaGVzJ10gKyBmaWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lPXVwLnVzZXJuYW1lLCBwYXNzd29yZD11cC5wYXNzd29yZCkKKyAgICAgICAgICAgIGlmIG5vdCBwaW5kZXhbJ2xheWVyQnJhbmNoZXMnXToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk5vIHZhbGlkIGxheWVyIGJyYW5jaGVzICglcykgZm91bmQgYXQgdXJsICVzLiIgJSAoYnJhbmNoZXMgb3IgIioiLCB1cmwpKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmRleAorICAgICAgICAgICAgaW5kZXguYWRkX3Jhd19lbGVtZW50KCJsYXllckJyYW5jaGVzIiwgbGF5ZXJpbmRleGxpYi5MYXllckJyYW5jaCwgcGluZGV4WydsYXllckJyYW5jaGVzJ10pCisKKworICAgICAgICAgICAgIyBMb2FkIHRoZSByZXN0LCB0aGV5IGFsbCBoYXZlIGEgc2ltaWxhciBmb3JtYXQKKyAgICAgICAgICAgICMgTm90ZTogdGhlIGxheWVyIGluZGV4IGhhcyBhIGZldyBtb3JlIGl0ZW1zLCB3ZSBjYW4gYWRkIHRoZW0gaWYgbmVjZXNzYXJ5CisgICAgICAgICAgICAjIGluIHRoZSBmdXR1cmUuCisgICAgICAgICAgICBmaWx0ZXIgPSAiP2ZpbHRlcj1sYXllcmJyYW5jaF9fYnJhbmNoX19uYW1lOiVzIiAlIGluZGV4LmJyYW5jaGVzW2JyYW5jaF0ubmFtZQorICAgICAgICAgICAgZm9yIChsTmFtZSwgbFR5cGUpIGluIFsoImxheWVyRGVwZW5kZW5jaWVzIiwgbGF5ZXJpbmRleGxpYi5MYXllckRlcGVuZGVuY3kpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInJlY2lwZXMiLCBsYXllcmluZGV4bGliLlJlY2lwZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibWFjaGluZXMiLCBsYXllcmluZGV4bGliLk1hY2hpbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImRpc3Ryb3MiLCBsYXllcmluZGV4bGliLkRpc3RybyldOgorICAgICAgICAgICAgICAgIGlmIGxOYW1lIG5vdCBpbiBsb2FkOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiTG9hZGluZyAlcyBmcm9tICVzIiAlIChsTmFtZSwgaW5kZXguYXBpbGlua3NbbE5hbWVdKSkKKworICAgICAgICAgICAgICAgICMgVGhlIGxpbmsgd29uJ3QgaW5jbHVkZSB1c2VybmFtZS9wYXNzd29yZCwgc28gcHVsbCBpdCBmcm9tIHRoZSBvcmlnaW5hbCB1cmwKKyAgICAgICAgICAgICAgICBwaW5kZXhbbE5hbWVdID0gX2dldF9qc29uX3Jlc3BvbnNlKGluZGV4LmFwaWxpbmtzW2xOYW1lXSArIGZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9dXAudXNlcm5hbWUsIHBhc3N3b3JkPXVwLnBhc3N3b3JkKQorICAgICAgICAgICAgICAgIGluZGV4LmFkZF9yYXdfZWxlbWVudChsTmFtZSwgbFR5cGUsIHBpbmRleFtsTmFtZV0pCisKKyAgICAgICAgcmV0dXJuIGluZGV4CisKKyAgICBkZWYgc3RvcmVfaW5kZXgoc2VsZiwgdXJsLCBpbmRleCk6CisgICAgICAgICIiIgorICAgICAgICAgICAgU3RvcmUgbGF5ZXIgaW5mb3JtYXRpb24gaW50byBhIGxvY2FsIGZpbGUvZGlyLgorCisgICAgICAgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIEFQSSwKKyAgICAgICAgICAgIGxheWVyLCBicmFuY2gsIGRlcGVuZGVuY3ksIHJlY2lwZSwgbWFjaGluZSwgZGlzdHJvLCBpbmZvcm1hdGlvbi4KKworICAgICAgICAgICAgdWQgaXMgYSBwYXJzZWQgdXJsIHRvIGEgZGlyZWN0b3J5IG9yIGZpbGUuICBJZiB0aGUgcGF0aCBpcyBhCisgICAgICAgICAgICBkaXJlY3RvcnksIHdlIHdpbGwgc3BsaXQgdGhlIGZpbGVzIGludG8gb25lIGZpbGUgcGVyIGxheWVyLgorICAgICAgICAgICAgSWYgdGhlIHBhdGggaXMgdG8gYSBmaWxlIChleGlzdHMgb3Igbm90KSB0aGUgZW50aXJlIERCIHdpbGwgYmUKKyAgICAgICAgICAgIGR1bXBlZCBpbnRvIHRoYXQgb25lIGZpbGUuCisgICAgICAgICIiIgorCisgICAgICAgIHVwID0gdXJscGFyc2UodXJsKQorCisgICAgICAgIGlmIHVwLnNjaGVtZSAhPSAnZmlsZSc6CisgICAgICAgICAgICByYWlzZSBsYXllcmluZGV4bGliLnBsdWdpbi5MYXllckluZGV4UGx1Z2luVXJsRXJyb3Ioc2VsZi50eXBlLCB1cmwpCisKKyAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJTdG9yaW5nIHRvICVzLi4uIiAlIHVwLnBhdGgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGF5ZXJicmFuY2hlcyA9IGluZGV4LmxheWVyQnJhbmNoZXMKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdObyBsYXllckJyYW5jaGVzIHRvIHdyaXRlLicpCisgICAgICAgICAgICByZXR1cm4KKworCisgICAgICAgIGRlZiBmaWx0ZXJfaXRlbShsYXllcmJyYW5jaGlkLCBvYmplY3RzKToKKyAgICAgICAgICAgIGZpbHRlcmVkID0gW10KKyAgICAgICAgICAgIGZvciBvYmogaW4gZ2V0YXR0cihpbmRleCwgb2JqZWN0cywgTm9uZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGluZGV4LCBvYmplY3RzKVtvYmpdLmxheWVyYnJhbmNoX2lkID09IGxheWVyYnJhbmNoaWQ6CisgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkLmFwcGVuZChnZXRhdHRyKGluZGV4LCBvYmplY3RzKVtvYmpdLl9kYXRhKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdObyBvYmoubGF5ZXJicmFuY2hfaWQ6ICVzJyAlIG9iamVjdHMpCisgICAgICAgICAgICAgICAgICAgICMgTm8gc2ltcGxlIGZpbHRlciBtZXRob2QsIGp1c3QgaW5jbHVkZSBpdC4uLgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5hcHBlbmQoZ2V0YXR0cihpbmRleCwgb2JqZWN0cylbb2JqXS5fZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdObyBvYmouX2RhdGE6ICVzICVzJyAlIChvYmplY3RzLCB0eXBlKG9iaikpKQorICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWQuYXBwZW5kKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZAorCisKKyAgICAgICAgIyBXcml0ZSBvdXQgdG8gYSBzaW5nbGUgZmlsZS4KKyAgICAgICAgIyBGaWx0ZXIgb3V0IHVubmVjZXNzYXJ5IGl0ZW1zLCB0aGVuIHNvcnQgYXMgd2Ugd3JpdGUgZm9yIGRldGVybWluaXNtCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHVwLnBhdGgpOgorICAgICAgICAgICAgcGluZGV4ID0ge30KKworICAgICAgICAgICAgcGluZGV4WydicmFuY2hlcyddID0gW10KKyAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJJdGVtcyddID0gW10KKyAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJCcmFuY2hlcyddID0gW10KKworICAgICAgICAgICAgZm9yIGxheWVyYnJhbmNoaWQgaW4gbGF5ZXJicmFuY2hlczoKKyAgICAgICAgICAgICAgICBpZiBsYXllcmJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLmJyYW5jaC5fZGF0YSBub3QgaW4gcGluZGV4WydicmFuY2hlcyddOgorICAgICAgICAgICAgICAgICAgICBwaW5kZXhbJ2JyYW5jaGVzJ10uYXBwZW5kKGxheWVyYnJhbmNoZXNbbGF5ZXJicmFuY2hpZF0uYnJhbmNoLl9kYXRhKQorCisgICAgICAgICAgICAgICAgaWYgbGF5ZXJicmFuY2hlc1tsYXllcmJyYW5jaGlkXS5sYXllci5fZGF0YSBub3QgaW4gcGluZGV4WydsYXllckl0ZW1zJ106CisgICAgICAgICAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJJdGVtcyddLmFwcGVuZChsYXllcmJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLmxheWVyLl9kYXRhKQorCisgICAgICAgICAgICAgICAgaWYgbGF5ZXJicmFuY2hlc1tsYXllcmJyYW5jaGlkXS5fZGF0YSBub3QgaW4gcGluZGV4WydsYXllckJyYW5jaGVzJ106CisgICAgICAgICAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJCcmFuY2hlcyddLmFwcGVuZChsYXllcmJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLl9kYXRhKQorCisgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGluZGV4Ll9pbmRleDoKKyAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGxvY2FsIGl0ZW1zLCBhcGlsaW5rcyBhbmQgaXRlbXMgYWxyZWFkeSBwcm9jZXNzZWQKKyAgICAgICAgICAgICAgICAgICAgaWYgZW50cnkgaW4gaW5kZXguY29uZmlnWydsb2NhbCddIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgZW50cnkgPT0gJ2FwaWxpbmtzJyBvciBcCisgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5ID09ICdicmFuY2hlcycgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9PSAnbGF5ZXJCcmFuY2hlcycgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICBlbnRyeSA9PSAnbGF5ZXJJdGVtcyc6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeSBub3QgaW4gcGluZGV4OgorICAgICAgICAgICAgICAgICAgICAgICAgcGluZGV4W2VudHJ5XSA9IFtdCisgICAgICAgICAgICAgICAgICAgIHBpbmRleFtlbnRyeV0uZXh0ZW5kKGZpbHRlcl9pdGVtKGxheWVyYnJhbmNoaWQsIGVudHJ5KSkKKworICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1dyaXRpbmcgaW5kZXggdG8gJXMnICUgdXAucGF0aCkKKyAgICAgICAgICAgIHdpdGggb3Blbih1cC5wYXRoLCAnd3QnKSBhcyBmOgorICAgICAgICAgICAgICAgIGpzb24uZHVtcChsYXllcmluZGV4bGliLnNvcnRfZW50cnkocGluZGV4KSwgZiwgaW5kZW50PTQpCisgICAgICAgICAgICByZXR1cm4KKworCisgICAgICAgICMgV3JpdGUgb3V0IHRvIGEgZGlyZWN0b3J5IG9uZSBmaWxlIHBlciBsYXllckJyYW5jaAorICAgICAgICAjIFByZXBhcmUgYWxsIGxheWVyIHJlbGF0ZWQgaXRlbXMsIHRvIGNyZWF0ZSBhIG1pbmltYWwgZmlsZS4KKyAgICAgICAgIyBXZSBoYXZlIHRvIHNvcnQgdGhlIGVudHJpZXMgYXMgd2Ugd3JpdGUgc28gdGhleSBhcmUgZGV0ZXJtaW5pc3RpYworICAgICAgICBmb3IgbGF5ZXJicmFuY2hpZCBpbiBsYXllcmJyYW5jaGVzOgorICAgICAgICAgICAgcGluZGV4ID0ge30KKworICAgICAgICAgICAgZm9yIGVudHJ5IGluIGluZGV4Ll9pbmRleDoKKyAgICAgICAgICAgICAgICAjIFNraXAgbG9jYWwgaXRlbXMsIGFwaWxpbmtzIGFuZCBpdGVtcyBhbHJlYWR5IHByb2Nlc3NlZAorICAgICAgICAgICAgICAgIGlmIGVudHJ5IGluIGluZGV4LmNvbmZpZ1snbG9jYWwnXSBvciBcCisgICAgICAgICAgICAgICAgICAgZW50cnkgPT0gJ2FwaWxpbmtzJyBvciBcCisgICAgICAgICAgICAgICAgICAgZW50cnkgPT0gJ2JyYW5jaGVzJyBvciBcCisgICAgICAgICAgICAgICAgICAgZW50cnkgPT0gJ2xheWVyQnJhbmNoZXMnIG9yIFwKKyAgICAgICAgICAgICAgICAgICBlbnRyeSA9PSAnbGF5ZXJJdGVtcyc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcGluZGV4W2VudHJ5XSA9IGZpbHRlcl9pdGVtKGxheWVyYnJhbmNoaWQsIGVudHJ5KQorCisgICAgICAgICAgICAjIEFkZCB0aGUgbGF5ZXIgd2UncmUgcHJvY2Vzc2luZyBhcyB0aGUgZmlyc3Qgb25lLi4uCisgICAgICAgICAgICBwaW5kZXhbJ2JyYW5jaGVzJ10gPSBbbGF5ZXJicmFuY2hlc1tsYXllcmJyYW5jaGlkXS5icmFuY2guX2RhdGFdCisgICAgICAgICAgICBwaW5kZXhbJ2xheWVySXRlbXMnXSA9IFtsYXllcmJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLmxheWVyLl9kYXRhXQorICAgICAgICAgICAgcGluZGV4WydsYXllckJyYW5jaGVzJ10gPSBbbGF5ZXJicmFuY2hlc1tsYXllcmJyYW5jaGlkXS5fZGF0YV0KKworICAgICAgICAgICAgIyBXZSBhbHNvIG5lZWQgdG8gaW5jbHVkZSB0aGUgbGF5ZXJicmFuY2ggZm9yIGFueSBkZXBlbmRlbmNpZXMuLi4KKyAgICAgICAgICAgIGZvciBsYXllcmRlcCBpbiBwaW5kZXhbJ2xheWVyRGVwZW5kZW5jaWVzJ106CisgICAgICAgICAgICAgICAgbGF5ZXJkZXBlbmRlbmN5ID0gbGF5ZXJpbmRleGxpYi5MYXllckRlcGVuZGVuY3koaW5kZXgsIGxheWVyZGVwKQorCisgICAgICAgICAgICAgICAgbGF5ZXJpdGVtID0gbGF5ZXJkZXBlbmRlbmN5LmRlcGVuZGVuY3kKKyAgICAgICAgICAgICAgICBsYXllcmJyYW5jaCA9IGxheWVyZGVwZW5kZW5jeS5kZXBlbmRlbmN5X2xheWVyQnJhbmNoCisKKyAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gYXZvaWQgZHVwbGljYXRlcy4uLgorICAgICAgICAgICAgICAgIGlmIGxheWVyaXRlbS5fZGF0YSBub3QgaW4gcGluZGV4WydsYXllckl0ZW1zJ106CisgICAgICAgICAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJJdGVtcyddLmFwcGVuZChsYXllcml0ZW0uX2RhdGEpCisKKyAgICAgICAgICAgICAgICBpZiBsYXllcmJyYW5jaC5fZGF0YSBub3QgaW4gcGluZGV4WydsYXllckJyYW5jaGVzJ106CisgICAgICAgICAgICAgICAgICAgIHBpbmRleFsnbGF5ZXJCcmFuY2hlcyddLmFwcGVuZChsYXllcmJyYW5jaC5fZGF0YSkKKworICAgICAgICAgICAgIyBhcHBseSBtaXJyb3JpbmcgYWRqdXN0bWVudHMgaGVyZS4uLi4KKworICAgICAgICAgICAgZm5hbWUgPSBpbmRleC5jb25maWdbJ0RFU0NSSVBUSU9OJ10gKyAnX18nICsgcGluZGV4WydicmFuY2hlcyddWzBdWyduYW1lJ10gKyAnX18nICsgcGluZGV4WydsYXllckl0ZW1zJ11bMF1bJ25hbWUnXQorICAgICAgICAgICAgZm5hbWUgPSBmbmFtZS50cmFuc2xhdGUoc3RyLm1ha2V0cmFucygnLyAnLCAnX18nKSkKKyAgICAgICAgICAgIGZwYXRoID0gb3MucGF0aC5qb2luKHVwLnBhdGgsIGZuYW1lKQorCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnV3JpdGluZyBpbmRleCB0byAlcycgJSBmcGF0aCArICcuanNvbicpCisgICAgICAgICAgICB3aXRoIG9wZW4oZnBhdGggKyAnLmpzb24nLCAnd3QnKSBhcyBmOgorICAgICAgICAgICAgICAgIGpzb24uZHVtcChsYXllcmluZGV4bGliLnNvcnRfZW50cnkocGluZGV4KSwgZiwgaW5kZW50PTQpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvX19pbml0X18ucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2NvbW1vbi5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhNTQ1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb21tb24ucHkKQEAgLTAsMCArMSw0MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IGJiCisKK2ltcG9ydCBsb2dnaW5nCisKK2NsYXNzIExheWVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLm9yaWdkaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQorICAgICAgICAjIEF0IGxlYXN0IG9uZSB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQKKyAgICAgICAgc2VsZi5kLnNldFZhcignRExfRElSJywgb3MuZ2V0Y3dkKCkpCisKKyAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIkJCX1NLSVBfTkVUVEVTVFMiKSA9PSAieWVzIjoKKyAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisKKyAgICAgICAgc2VsZi50ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBvcy5jaGRpcihzZWxmLm9yaWdkaXIpCisgICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9UTVBESVJfTk9DTEVBTiIpID09ICJ5ZXMiOgorICAgICAgICAgICAgcHJpbnQoIk5vdCBjbGVhbmluZyB1cCAlcy4gUGxlYXNlIHJlbW92ZSBtYW51YWxseS4iICUgc2VsZi50ZW1wZGlyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmIudXRpbHMucHJ1bmVkaXIoc2VsZi50ZW1wZGlyKQorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvY29va2VyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGJmMDkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQpAQCAtMCwwICsxLDEyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCisKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgb3MKK2ltcG9ydCBiYgorCitpbXBvcnQgbGF5ZXJpbmRleGxpYgorZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAorCitpbXBvcnQgbG9nZ2luZworCitjbGFzcyBMYXllckluZGV4Q29va2VyVGVzdChMYXllcnNUZXN0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgTGF5ZXJzVGVzdC5zZXRVcChzZWxmKQorCisgICAgICAgICMgTm90ZSB0aGlzIGlzIE5PVCBhIGNvbXByZWhlbnNpdmUgdGVzdCBvZiBjb29rZXIsIGFzIHdlIGNhbid0IGVhc2lseQorICAgICAgICAjIGNvbmZpZ3VyZSB0aGUgdGVzdCBkYXRhLiAgQnV0IHdlIGNhbiBlbXVsYXRlIHRoZSBiYXNpY3Mgb2YgdGhlIGxheWVyLmNvbmYKKyAgICAgICAgIyBmaWxlcywgc28gdGhhdCBpcyB3aGF0IHdlIHdpbGwgZG8uCisKKyAgICAgICAgbmV3X3RvcGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpLCAidGVzdGRhdGEiKQorICAgICAgICBuZXdfYmJwYXRoID0gb3MucGF0aC5qb2luKG5ld190b3BkaXIsICJidWlsZCIpCisKKyAgICAgICAgc2VsZi5kLnNldFZhcignVE9QRElSJywgbmV3X3RvcGRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJQQVRIJywgbmV3X2JicGF0aCkKKworICAgICAgICBzZWxmLmQgPSBiYi5wYXJzZS5oYW5kbGUoIiVzL2NvbmYvYmJsYXllcnMuY29uZiIgJSBuZXdfYmJwYXRoLCBzZWxmLmQsIFRydWUpCisgICAgICAgIGZvciBsYXllciBpbiBzZWxmLmQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCk6CisgICAgICAgICAgICBzZWxmLmQgPSBiYi5wYXJzZS5oYW5kbGUoIiVzL2NvbmYvbGF5ZXIuY29uZiIgJSBsYXllciwgc2VsZi5kLCBUcnVlKQorCisgICAgICAgIHNlbGYubGF5ZXJpbmRleCA9IGxheWVyaW5kZXhsaWIuTGF5ZXJJbmRleChzZWxmLmQpCisgICAgICAgIHNlbGYubGF5ZXJpbmRleC5sb2FkX2xheWVyaW5kZXgoJ2Nvb2tlcjovLycsIGxvYWQ9WydsYXllckRlcGVuZGVuY2llcyddKQorCisgICAgZGVmIHRlc3RfbGF5ZXJpbmRleF9pc19lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxheWVyaW5kZXguaXNfZW1wdHkoKSwgbXNnPSJMYXllcmluZGV4IGlzIG5vdCBlbXB0eSEiKQorCisgICAgZGVmIHRlc3RfZGVwZW5kZW5jeV9yZXNvbHV0aW9uKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSBkZXB0aCBmaXJzdCBzZWFyY2hpbmcuLi4KKyAgICAgICAgKGRlcGVuZGVuY2llcywgaW52YWxpZG5hbWVzKSA9IHNlbGYubGF5ZXJpbmRleC5maW5kX2RlcGVuZGVuY2llcyhuYW1lcz1bJ21ldGEtcHl0aG9uJ10pCisKKyAgICAgICAgZmlyc3QgPSBUcnVlCisgICAgICAgIGZvciBkZXBsYXllcmJyYW5jaCBpbiBkZXBlbmRlbmNpZXM6CisgICAgICAgICAgICBsYXllckJyYW5jaCA9IGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaF1bMF0KKyAgICAgICAgICAgIGxheWVyRGVwcyA9IGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaF1bMTpdCisKKyAgICAgICAgICAgIGlmIG5vdCBmaXJzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgVG9wIG9mIHRoZSBkZXBzIHNob3VsZCBiZSBvcGVuZW1iZWRkZWQtY29yZSwgc2luY2UgZXZlcnl0aGluZyBkZXBlbmRzIG9uIGl0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC5sYXllci5uYW1lLCAib3BlbmVtYmVkZGVkLWNvcmUiLCBtc2c9J1RvcCBkZXBlbmRlbmN5IG5vdCBvcGVuZW1iZWRkZWQtY29yZScpCisKKyAgICAgICAgICAgICMgbWV0YS1weXRob24gc2hvdWxkIGNhdXNlIGFuIG9wZW5lbWJlZGRlZC1jb3JlIGRlcGVuZGVuY3ksIGlmIG5vdCBhc3NlcnQhCisgICAgICAgICAgICBmb3IgZGVwIGluIGxheWVyRGVwczoKKyAgICAgICAgICAgICAgICBpZiBkZXAubGF5ZXIubmFtZSA9PSAnbWV0YS1weXRob24nOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UsIG1zZz0nbWV0YS1weXRob24gd2FzIG5vdCBmb3VuZCcpCisKKyAgICAgICAgICAgICMgT25seSBjaGVjayB0aGUgZmlyc3QgZWxlbWVudC4uLgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGZpcnN0OgorICAgICAgICAgICAgICAgICMgRW1wdHkgbGlzdCwgdGhpcyBpcyBiYWQuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEZhbHNlLCBtc2c9J0VtcHR5IGxpc3Qgb2YgZGVwZW5kZW5jaWVzJykKKworICAgICAgICAgICAgIyBMYXN0IGRlcCBzaG91bGQgYmUgdGhlIHJlcXVlc3RlZCBpdGVtCisgICAgICAgICAgICBsYXllckJyYW5jaCA9IGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaF1bMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2gubGF5ZXIubmFtZSwgIm1ldGEtcHl0aG9uIiwgbXNnPSdMYXN0IGRlcGVuZGVuY3kgbm90IG1ldGEtcHl0aG9uJykKKworICAgIGRlZiB0ZXN0X2ZpbmRfY29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgZGVmIF9jaGVjayhjb2xsZWN0aW9uLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygxLCAiTG9va2luZyBmb3IgY29sbGVjdGlvbiAlcy4uLiIgJSBjb2xsZWN0aW9uKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5sYXllcmluZGV4LmZpbmRfY29sbGVjdGlvbihjb2xsZWN0aW9uKQorICAgICAgICAgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVzdWx0LCBtc2c9IkRpZCBub3QgZmluZCAlcyB3aGVuIGl0IHNob3VsZG4ndCBiZSB0aGVyZSIgJSBjb2xsZWN0aW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQsIG1zZz0iRm91bmQgJXMgd2hlbiBpdCBzaG91bGQgYmUgdGhlcmUiICUgY29sbGVjdGlvbikKKworICAgICAgICB0ZXN0cyA9IFsgKCdjb3JlJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ29wZW5lbWJlZGRlZC1jb3JlJywgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgKCduZXR3b3JraW5nLWxheWVyJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ21ldGEtcHl0aG9uJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ29wZW5lbWJlZGRlZC1sYXllcicsIFRydWUpLAorICAgICAgICAgICAgICAgICAgKCdub3RwcmVzZW50JywgRmFsc2UpIF0KKworICAgICAgICBmb3IgY29sbGVjdGlvbixyZXN1bHQgaW4gdGVzdHM6CisgICAgICAgICAgICBfY2hlY2soY29sbGVjdGlvbiwgcmVzdWx0KQorCisgICAgZGVmIHRlc3RfZmluZF9sYXllcmJyYW5jaChzZWxmKToKKyAgICAgICAgZGVmIF9jaGVjayhuYW1lLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygxLCAiTG9va2luZyBmb3IgbGF5ZXJicmFuY2ggJXMuLi4iICUgbmFtZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYubGF5ZXJpbmRleC5maW5kX2xheWVyYnJhbmNoKG5hbWUpCisgICAgICAgICAgICBpZiBleHBlY3RlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXN1bHQsIG1zZz0iRGlkIG5vdCBmaW5kICVzIHdoZW4gaXQgc2hvdWxkbid0IGJlIHRoZXJlIiAlIGNvbGxlY3Rpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCwgbXNnPSJGb3VuZCAlcyB3aGVuIGl0IHNob3VsZCBiZSB0aGVyZSIgJSBjb2xsZWN0aW9uKQorCisgICAgICAgIHRlc3RzID0gWyAoJ29wZW5lbWJlZGRlZC1jb3JlJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ2NvcmUnLCBGYWxzZSksCisgICAgICAgICAgICAgICAgICAoJ25ldHdvcmtpbmctbGF5ZXInLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICgnbWV0YS1weXRob24nLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICgnb3BlbmVtYmVkZGVkLWxheWVyJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ25vdHByZXNlbnQnLCBGYWxzZSkgXQorCisgICAgICAgIGZvciBjb2xsZWN0aW9uLHJlc3VsdCBpbiB0ZXN0czoKKyAgICAgICAgICAgIF9jaGVjayhjb2xsZWN0aW9uLCByZXN1bHQpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2xheWVyaW5kZXhvYmoucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmYmI5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9sYXllcmluZGV4b2JqLnB5CkBAIC0wLDAgKzEsMjI2IEBACisjIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyMgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQorCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IG9zCitpbXBvcnQgYmIKKworZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAorCitpbXBvcnQgbG9nZ2luZworCitjbGFzcyBMYXllckluZGV4T2JqZWN0c1Rlc3QoTGF5ZXJzVGVzdCk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIGxheWVyaW5kZXhsaWIgaW1wb3J0IExheWVySW5kZXhPYmosIEJyYW5jaCwgTGF5ZXJJdGVtLCBMYXllckJyYW5jaCwgTGF5ZXJEZXBlbmRlbmN5LCBSZWNpcGUsIE1hY2hpbmUsIERpc3RybworCisgICAgICAgIExheWVyc1Rlc3Quc2V0VXAoc2VsZikKKworICAgICAgICBzZWxmLmluZGV4ID0gTGF5ZXJJbmRleE9iaigpCisKKyAgICAgICAgYnJhbmNoSWQgPSAwCisgICAgICAgIGxheWVySXRlbUlkID0gMAorICAgICAgICBsYXllckJyYW5jaElkID0gMAorICAgICAgICBsYXllckRlcGVuZGVuY3lJZCA9IDAKKyAgICAgICAgcmVjaXBlSWQgPSAwCisgICAgICAgIG1hY2hpbmVJZCA9IDAKKyAgICAgICAgZGlzdHJvSWQgPSAwCisKKyAgICAgICAgc2VsZi5pbmRleC5icmFuY2hlcyA9IHt9CisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJJdGVtcyA9IHt9CisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlcyA9IHt9CisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJEZXBlbmRlbmNpZXMgPSB7fQorICAgICAgICBzZWxmLmluZGV4LnJlY2lwZXMgPSB7fQorICAgICAgICBzZWxmLmluZGV4Lm1hY2hpbmVzID0ge30KKyAgICAgICAgc2VsZi5pbmRleC5kaXN0cm9zID0ge30KKworICAgICAgICBicmFuY2hJZCArPSAxCisgICAgICAgIHNlbGYuaW5kZXguYnJhbmNoZXNbYnJhbmNoSWRdID0gQnJhbmNoKHNlbGYuaW5kZXgpCisgICAgICAgIHNlbGYuaW5kZXguYnJhbmNoZXNbYnJhbmNoSWRdLmRlZmluZV9kYXRhKGJyYW5jaElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2JyYW5jaCcsICdiYl90ZXN0X2JyYW5jaCcpCisgICAgICAgIHNlbGYuaW5kZXguYnJhbmNoZXNbYnJhbmNoSWRdLmxvY2tEYXRhKCkKKworICAgICAgICBsYXllckl0ZW1JZCArPTEKKyAgICAgICAgc2VsZi5pbmRleC5sYXllckl0ZW1zW2xheWVySXRlbUlkXSA9IExheWVySXRlbShzZWxmLmluZGV4KQorICAgICAgICBzZWxmLmluZGV4LmxheWVySXRlbXNbbGF5ZXJJdGVtSWRdLmRlZmluZV9kYXRhKGxheWVySXRlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2xheWVySXRlbScsIHZjc191cmw9J2dpdDovL2dpdF90ZXN0X3VybC90ZXN0X2xheWVySXRlbScpCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJJdGVtc1tsYXllckl0ZW1JZF0ubG9ja0RhdGEoKQorCisgICAgICAgIGxheWVyQnJhbmNoSWQgKz0xCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1tsYXllckJyYW5jaElkXSA9IExheWVyQnJhbmNoKHNlbGYuaW5kZXgpCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1tsYXllckJyYW5jaElkXS5kZWZpbmVfZGF0YShsYXllckJyYW5jaElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2NvbGxlY3Rpb24nLCAnOTknLCBsYXllckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hJZCkKKworICAgICAgICByZWNpcGVJZCArPSAxCisgICAgICAgIHNlbGYuaW5kZXgucmVjaXBlc1tyZWNpcGVJZF0gPSBSZWNpcGUoc2VsZi5pbmRleCkKKyAgICAgICAgc2VsZi5pbmRleC5yZWNpcGVzW3JlY2lwZUlkXS5kZWZpbmVfZGF0YShyZWNpcGVJZCwgJ3Rlc3RfZ2l0LmJiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVjaXBlcy10ZXN0JywgJ3Rlc3QnLCAnZ2l0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaElkKQorCisgICAgICAgIG1hY2hpbmVJZCArPSAxCisgICAgICAgIHNlbGYuaW5kZXgubWFjaGluZXNbbWFjaGluZUlkXSA9IE1hY2hpbmUoc2VsZi5pbmRleCkKKyAgICAgICAgc2VsZi5pbmRleC5tYWNoaW5lc1ttYWNoaW5lSWRdLmRlZmluZV9kYXRhKG1hY2hpbmVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9tYWNoaW5lJywgJ3Rlc3RfbWFjaGluZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2hJZCkKKworICAgICAgICBkaXN0cm9JZCArPSAxCisgICAgICAgIHNlbGYuaW5kZXguZGlzdHJvc1tkaXN0cm9JZF0gPSBEaXN0cm8oc2VsZi5pbmRleCkKKyAgICAgICAgc2VsZi5pbmRleC5kaXN0cm9zW2Rpc3Ryb0lkXS5kZWZpbmVfZGF0YShkaXN0cm9JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9kaXN0cm8nLCAndGVzdF9kaXN0cm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoSWQpCisKKyAgICAgICAgbGF5ZXJJdGVtSWQgKz0xCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJJdGVtc1tsYXllckl0ZW1JZF0gPSBMYXllckl0ZW0oc2VsZi5pbmRleCkKKyAgICAgICAgc2VsZi5pbmRleC5sYXllckl0ZW1zW2xheWVySXRlbUlkXS5kZWZpbmVfZGF0YShsYXllckl0ZW1JZCwgJ3Rlc3RfbGF5ZXJJdGVtIDInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjc191cmw9J2dpdDovL2dpdF90ZXN0X3VybC90ZXN0X2xheWVySXRlbScpCisKKyAgICAgICAgbGF5ZXJCcmFuY2hJZCArPTEKKyAgICAgICAgc2VsZi5pbmRleC5sYXllckJyYW5jaGVzW2xheWVyQnJhbmNoSWRdID0gTGF5ZXJCcmFuY2goc2VsZi5pbmRleCkKKyAgICAgICAgc2VsZi5pbmRleC5sYXllckJyYW5jaGVzW2xheWVyQnJhbmNoSWRdLmRlZmluZV9kYXRhKGxheWVyQnJhbmNoSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfY29sbGVjdGlvbl8yJywgJzcyJywgbGF5ZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoSWQsIGFjdHVhbF9icmFuY2g9J3NvbWVfb3RoZXJfYnJhbmNoJykKKworICAgICAgICBsYXllckRlcGVuZGVuY3lJZCArPSAxCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJEZXBlbmRlbmNpZXNbbGF5ZXJEZXBlbmRlbmN5SWRdID0gTGF5ZXJEZXBlbmRlbmN5KHNlbGYuaW5kZXgpCisgICAgICAgIHNlbGYuaW5kZXgubGF5ZXJEZXBlbmRlbmNpZXNbbGF5ZXJEZXBlbmRlbmN5SWRdLmRlZmluZV9kYXRhKGxheWVyRGVwZW5kZW5jeUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoSWQsIDEpCisKKyAgICAgICAgbGF5ZXJEZXBlbmRlbmN5SWQgKz0gMQorICAgICAgICBzZWxmLmluZGV4LmxheWVyRGVwZW5kZW5jaWVzW2xheWVyRGVwZW5kZW5jeUlkXSA9IExheWVyRGVwZW5kZW5jeShzZWxmLmluZGV4KQorICAgICAgICBzZWxmLmluZGV4LmxheWVyRGVwZW5kZW5jaWVzW2xheWVyRGVwZW5kZW5jeUlkXS5kZWZpbmVfZGF0YShsYXllckRlcGVuZGVuY3lJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaElkLCAxLCByZXF1aXJlZD1GYWxzZSkKKworICAgIGRlZiB0ZXN0X2JyYW5jaChzZWxmKToKKyAgICAgICAgYnJhbmNoID0gc2VsZi5pbmRleC5icmFuY2hlc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJyYW5jaC5pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2gubmFtZSwgJ3Rlc3RfYnJhbmNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChicmFuY2guc2hvcnRfZGVzY3JpcHRpb24sICd0ZXN0X2JyYW5jaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnJhbmNoLmJpdGJha2VfYnJhbmNoLCAnYmJfdGVzdF9icmFuY2gnKQorCisgICAgZGVmIHRlc3RfbGF5ZXJJdGVtKHNlbGYpOgorICAgICAgICBsYXllckl0ZW0gPSBzZWxmLmluZGV4LmxheWVySXRlbXNbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckl0ZW0uaWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJJdGVtLm5hbWUsICd0ZXN0X2xheWVySXRlbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJJdGVtLnN1bW1hcnksICd0ZXN0X2xheWVySXRlbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJJdGVtLmRlc2NyaXB0aW9uLCAndGVzdF9sYXllckl0ZW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVySXRlbS52Y3NfdXJsLCAnZ2l0Oi8vZ2l0X3Rlc3RfdXJsL3Rlc3RfbGF5ZXJJdGVtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckl0ZW0udmNzX3dlYl91cmwsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxheWVySXRlbS52Y3Nfd2ViX3RyZWVfYmFzZV91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxheWVySXRlbS52Y3Nfd2ViX2ZpbGVfYmFzZV91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGxheWVySXRlbS51cGRhdGVkKQorCisgICAgICAgIGxheWVySXRlbSA9IHNlbGYuaW5kZXgubGF5ZXJJdGVtc1syXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVySXRlbS5pZCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckl0ZW0ubmFtZSwgJ3Rlc3RfbGF5ZXJJdGVtIDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVySXRlbS5zdW1tYXJ5LCAndGVzdF9sYXllckl0ZW0gMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJJdGVtLmRlc2NyaXB0aW9uLCAndGVzdF9sYXllckl0ZW0gMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJJdGVtLnZjc191cmwsICdnaXQ6Ly9naXRfdGVzdF91cmwvdGVzdF9sYXllckl0ZW0nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsYXllckl0ZW0udmNzX3dlYl91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxheWVySXRlbS52Y3Nfd2ViX3RyZWVfYmFzZV91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxheWVySXRlbS52Y3Nfd2ViX2ZpbGVfYmFzZV91cmwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGxheWVySXRlbS51cGRhdGVkKQorCisgICAgZGVmIHRlc3RfbGF5ZXJCcmFuY2goc2VsZik6CisgICAgICAgIGxheWVyQnJhbmNoID0gc2VsZi5pbmRleC5sYXllckJyYW5jaGVzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2guaWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2guY29sbGVjdGlvbiwgJ3Rlc3RfY29sbGVjdGlvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2gudmVyc2lvbiwgJzk5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC52Y3Nfc3ViZGlyLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC5hY3R1YWxfYnJhbmNoLCAndGVzdF9icmFuY2gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShsYXllckJyYW5jaC51cGRhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmxheWVyX2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmJyYW5jaF9pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC5sYXllciwgc2VsZi5pbmRleC5sYXllckl0ZW1zWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmJyYW5jaCwgc2VsZi5pbmRleC5icmFuY2hlc1sxXSkKKworICAgICAgICBsYXllckJyYW5jaCA9IHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1syXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmlkLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmNvbGxlY3Rpb24sICd0ZXN0X2NvbGxlY3Rpb25fMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2gudmVyc2lvbiwgJzcyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC52Y3Nfc3ViZGlyLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC5hY3R1YWxfYnJhbmNoLCAnc29tZV9vdGhlcl9icmFuY2gnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShsYXllckJyYW5jaC51cGRhdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmxheWVyX2lkLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmJyYW5jaF9pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckJyYW5jaC5sYXllciwgc2VsZi5pbmRleC5sYXllckl0ZW1zWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmJyYW5jaCwgc2VsZi5pbmRleC5icmFuY2hlc1sxXSkKKworICAgIGRlZiB0ZXN0X2xheWVyRGVwZW5kZW5jeShzZWxmKToKKyAgICAgICAgbGF5ZXJEZXBlbmRlbmN5ID0gc2VsZi5pbmRleC5sYXllckRlcGVuZGVuY2llc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckRlcGVuZGVuY3kubGF5ZXJicmFuY2hfaWQsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmxheWVyYnJhbmNoLCBzZWxmLmluZGV4LmxheWVyQnJhbmNoZXNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmxheWVyX2lkLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5sYXllciwgc2VsZi5pbmRleC5sYXllckl0ZW1zWzJdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGF5ZXJEZXBlbmRlbmN5LnJlcXVpcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5kZXBlbmRlbmN5X2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5kZXBlbmRlbmN5LCBzZWxmLmluZGV4LmxheWVySXRlbXNbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmRlcGVuZGVuY3lfbGF5ZXJCcmFuY2gsIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1sxXSkKKworICAgICAgICBsYXllckRlcGVuZGVuY3kgPSBzZWxmLmluZGV4LmxheWVyRGVwZW5kZW5jaWVzWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmlkLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5sYXllcmJyYW5jaF9pZCwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckRlcGVuZGVuY3kubGF5ZXJicmFuY2gsIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1syXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYXllckRlcGVuZGVuY3kubGF5ZXJfaWQsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmxheWVyLCBzZWxmLmluZGV4LmxheWVySXRlbXNbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGF5ZXJEZXBlbmRlbmN5LnJlcXVpcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5kZXBlbmRlbmN5X2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyRGVwZW5kZW5jeS5kZXBlbmRlbmN5LCBzZWxmLmluZGV4LmxheWVySXRlbXNbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJEZXBlbmRlbmN5LmRlcGVuZGVuY3lfbGF5ZXJCcmFuY2gsIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1sxXSkKKworICAgIGRlZiB0ZXN0X3JlY2lwZShzZWxmKToKKyAgICAgICAgcmVjaXBlID0gc2VsZi5pbmRleC5yZWNpcGVzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmlkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2lwZS5sYXllcmJyYW5jaF9pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUubGF5ZXJicmFuY2gsIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUubGF5ZXJfaWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmxheWVyLCBzZWxmLmluZGV4LmxheWVySXRlbXNbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmZpbGVuYW1lLCAndGVzdF9naXQuYmInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2lwZS5maWxlcGF0aCwgJ3JlY2lwZXMtdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmZ1bGxwYXRoLCAncmVjaXBlcy10ZXN0L3Rlc3RfZ2l0LmJiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUuc3VtbWFyeSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmRlc2NyaXB0aW9uLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUuc2VjdGlvbiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLnBuLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLnB2LCAnZ2l0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUubGljZW5zZSwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmhvbWVwYWdlLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNpcGUuYnVndHJhY2tlciwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLnByb3ZpZGVzLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVjaXBlLnVwZGF0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjaXBlLmluaGVyaXRzLCAiIikKKworICAgIGRlZiB0ZXN0X21hY2hpbmUoc2VsZik6CisgICAgICAgIG1hY2hpbmUgPSBzZWxmLmluZGV4Lm1hY2hpbmVzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFjaGluZS5pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWNoaW5lLmxheWVyYnJhbmNoX2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hY2hpbmUubGF5ZXJicmFuY2gsIHNlbGYuaW5kZXgubGF5ZXJCcmFuY2hlc1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWNoaW5lLmxheWVyX2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hY2hpbmUubGF5ZXIsIHNlbGYuaW5kZXgubGF5ZXJJdGVtc1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWNoaW5lLm5hbWUsICd0ZXN0X21hY2hpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hY2hpbmUuZGVzY3JpcHRpb24sICd0ZXN0X21hY2hpbmUnKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShtYWNoaW5lLnVwZGF0ZWQpCisKKyAgICBkZWYgdGVzdF9kaXN0cm8oc2VsZik6CisgICAgICAgIGRpc3RybyA9IHNlbGYuaW5kZXguZGlzdHJvc1sxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3Ryby5pZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXN0cm8ubGF5ZXJicmFuY2hfaWQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdHJvLmxheWVyYnJhbmNoLCBzZWxmLmluZGV4LmxheWVyQnJhbmNoZXNbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzdHJvLmxheWVyX2lkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3Ryby5sYXllciwgc2VsZi5pbmRleC5sYXllckl0ZW1zWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3Ryby5uYW1lLCAndGVzdF9kaXN0cm8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3Ryby5kZXNjcmlwdGlvbiwgJ3Rlc3RfZGlzdHJvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZGlzdHJvLnVwZGF0ZWQpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weSBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9yZXN0YXBpLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NzY2OTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvcmVzdGFwaS5weQpAQCAtMCwwICsxLDE4NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisjIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBvcworaW1wb3J0IGJiCisKK2ltcG9ydCBsYXllcmluZGV4bGliCitmcm9tIGxheWVyaW5kZXhsaWIudGVzdHMuY29tbW9uIGltcG9ydCBMYXllcnNUZXN0CisKK2ltcG9ydCBsb2dnaW5nCisKK2RlZiBza2lwSWZOb05ldHdvcmsoKToKKyAgICBpZiBvcy5lbnZpcm9uLmdldCgiQkJfU0tJUF9ORVRURVNUUyIpID09ICJ5ZXMiOgorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcCgiTmV0d29yayB0ZXN0cyBiZWluZyBza2lwcGVkIikKKyAgICByZXR1cm4gbGFtYmRhIGY6IGYKKworY2xhc3MgTGF5ZXJJbmRleFdlYlJlc3RBcGlUZXN0KExheWVyc1Rlc3QpOgorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyIsIG1zZz0iQkJfU0tJUF9ORVRURVNUUyBzZXQsIGJ1dCB3ZSB0cmllZCB0byB0ZXN0IGFueXdheSIpCisgICAgICAgIExheWVyc1Rlc3Quc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi5sYXllcmluZGV4ID0gbGF5ZXJpbmRleGxpYi5MYXllckluZGV4KHNlbGYuZCkKKyAgICAgICAgc2VsZi5sYXllcmluZGV4LmxvYWRfbGF5ZXJpbmRleCgnaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLzticmFuY2g9c3VtbycsIGxvYWQ9WydsYXllckRlcGVuZGVuY2llcyddKQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbGF5ZXJpbmRleF9pc19lbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxheWVyaW5kZXguaXNfZW1wdHkoKSwgbXNnPSJMYXllcmluZGV4IGlzIGVtcHR5IikKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2xheWVyaW5kZXhfc3RvcmVfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5sYXllcmluZGV4LnN0b3JlX2xheWVyaW5kZXgoJ2ZpbGU6Ly8lcy9maWxlLmpzb24nICUgc2VsZi50ZW1wZGlyLCBzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoJyVzL2ZpbGUuanNvbicgJSBzZWxmLnRlbXBkaXIpLCBtc2c9IlRlbXBvcmFyeSBmaWxlIHdhcyBub3QgY3JlYXRlZCBieSBzdG9yZV9sYXllcmluZGV4IikKKworICAgICAgICByZWxvYWQgPSBsYXllcmluZGV4bGliLkxheWVySW5kZXgoc2VsZi5kKQorICAgICAgICByZWxvYWQubG9hZF9sYXllcmluZGV4KCdmaWxlOi8vJXMvZmlsZS5qc29uJyAlIHNlbGYudGVtcGRpcikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlbG9hZC5pc19lbXB0eSgpLCBtc2c9IkxheWVyaW5kZXggaXMgZW1wdHkiKQorCisgICAgICAgICMgQ2FsY3VsYXRlIGxheWVySXRlbXMgaW4gb3JpZ2luYWwgaW5kZXggdGhhdCBzaG91bGQgTk9UIGJlIGluIHJlbG9hZAorICAgICAgICBsYXllckl0ZW1OYW1lcyA9IFtdCisgICAgICAgIGZvciBpdGVtSWQgaW4gc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0ubGF5ZXJJdGVtczoKKyAgICAgICAgICAgIGxheWVySXRlbU5hbWVzLmFwcGVuZChzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXS5sYXllckl0ZW1zW2l0ZW1JZF0ubmFtZSkKKworICAgICAgICBmb3IgbGF5ZXJCcmFuY2hJZCBpbiBzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXS5sYXllckJyYW5jaGVzOgorICAgICAgICAgICAgbGF5ZXJJdGVtTmFtZXMucmVtb3ZlKHNlbGYubGF5ZXJpbmRleC5pbmRleGVzWzBdLmxheWVyQnJhbmNoZXNbbGF5ZXJCcmFuY2hJZF0ubGF5ZXIubmFtZSkKKworICAgICAgICBmb3IgaXRlbUlkIGluIHJlbG9hZC5pbmRleGVzWzBdLmxheWVySXRlbXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlbG9hZC5pbmRleGVzWzBdLmxheWVySXRlbXNbaXRlbUlkXS5uYW1lIGluIGxheWVySXRlbU5hbWVzLCBtc2c9Ikl0ZW0gcmVsb2FkZWQgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZSBiZWVuIikKKworICAgICAgICAjIENvbXBhcmUgdGhlIG9yaWdpbmFsIHRvIHdoYXQgd2Ugd3JvdGUuLi4KKyAgICAgICAgZm9yIHR5cGUgaW4gc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0uX2luZGV4OgorICAgICAgICAgICAgaWYgdHlwZSA9PSAnYXBpbGlua3MnIG9yIFwKKyAgICAgICAgICAgICAgIHR5cGUgPT0gJ2xheWVySXRlbXMnIG9yIFwKKyAgICAgICAgICAgICAgIHR5cGUgaW4gc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0uY29uZmlnWydsb2NhbCddOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3IgaWQgaW4gZ2V0YXR0cihzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXSwgdHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoMSwgInR5cGUgJXMiICUgKHR5cGUpKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlkIGluIGdldGF0dHIocmVsb2FkLmluZGV4ZXNbMF0sIHR5cGUpLCBtc2c9IklkIG51bWJlciBub3QgaW4gcmVsb2FkZWQgaW5kZXgiKQorCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoMSwgIiVzID8gJXMiICUgKGdldGF0dHIoc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0sIHR5cGUpW2lkXSwgZ2V0YXR0cihyZWxvYWQuaW5kZXhlc1swXSwgdHlwZSlbaWRdKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXSwgdHlwZSlbaWRdLCBnZXRhdHRyKHJlbG9hZC5pbmRleGVzWzBdLCB0eXBlKVtpZF0sIG1zZz0iUmVsb2FkZWQgY29udGVudHMgZGlmZmVyZW50IikKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2xheWVyaW5kZXhfc3RvcmVfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYubGF5ZXJpbmRleC5zdG9yZV9sYXllcmluZGV4KCdmaWxlOi8vJXMnICUgc2VsZi50ZW1wZGlyLCBzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXSkKKworICAgICAgICByZWxvYWQgPSBsYXllcmluZGV4bGliLkxheWVySW5kZXgoc2VsZi5kKQorICAgICAgICByZWxvYWQubG9hZF9sYXllcmluZGV4KCdmaWxlOi8vJXMnICUgc2VsZi50ZW1wZGlyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVsb2FkLmlzX2VtcHR5KCksIG1zZz0iTGF5ZXIgaW5kZXggaXMgZW1wdHkiKQorCisgICAgICAgIGZvciB0eXBlIGluIHNlbGYubGF5ZXJpbmRleC5pbmRleGVzWzBdLl9pbmRleDoKKyAgICAgICAgICAgIGlmIHR5cGUgPT0gJ2FwaWxpbmtzJyBvciBcCisgICAgICAgICAgICAgICB0eXBlID09ICdsYXllckl0ZW1zJyBvciBcCisgICAgICAgICAgICAgICB0eXBlIGluIHNlbGYubGF5ZXJpbmRleC5pbmRleGVzWzBdLmNvbmZpZ1snbG9jYWwnXToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm9yIGlkIGluIGdldGF0dHIoc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0gLHR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKDEsICJ0eXBlICVzIiAlICh0eXBlKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpZCBpbiBnZXRhdHRyKHJlbG9hZC5pbmRleGVzWzBdLCB0eXBlKSwgbXNnPSJJZCBudW1iZXIgbWlzc2luZyBmcm9tIHJlbG9hZGVkIGRhdGEiKQorCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoMSwgIiVzID8gJXMiICUgKGdldGF0dHIoc2VsZi5sYXllcmluZGV4LmluZGV4ZXNbMF0gLHR5cGUpW2lkXSwgZ2V0YXR0cihyZWxvYWQuaW5kZXhlc1swXSwgdHlwZSlbaWRdKSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzZWxmLmxheWVyaW5kZXguaW5kZXhlc1swXSAsdHlwZSlbaWRdLCBnZXRhdHRyKHJlbG9hZC5pbmRleGVzWzBdLCB0eXBlKVtpZF0sIG1zZz0icmVsb2FkZWQgZGF0YSBkb2VzIG5vdCBtYXRjaCBvcmlnaW5hbCIpCisKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9kZXBlbmRlbmN5X3Jlc29sdXRpb24oc2VsZik6CisgICAgICAgICMgVmVyaWZ5IGRlcHRoIGZpcnN0IHNlYXJjaGluZy4uLgorICAgICAgICAoZGVwZW5kZW5jaWVzLCBpbnZhbGlkbmFtZXMpID0gc2VsZi5sYXllcmluZGV4LmZpbmRfZGVwZW5kZW5jaWVzKG5hbWVzPVsnbWV0YS1weXRob24nXSkKKworICAgICAgICBmaXJzdCA9IFRydWUKKyAgICAgICAgZm9yIGRlcGxheWVyYnJhbmNoIGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgIGxheWVyQnJhbmNoID0gZGVwZW5kZW5jaWVzW2RlcGxheWVyYnJhbmNoXVswXQorICAgICAgICAgICAgbGF5ZXJEZXBzID0gZGVwZW5kZW5jaWVzW2RlcGxheWVyYnJhbmNoXVsxOl0KKworICAgICAgICAgICAgaWYgbm90IGZpcnN0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGZpcnN0ID0gRmFsc2UKKworICAgICAgICAgICAgIyBUb3Agb2YgdGhlIGRlcHMgc2hvdWxkIGJlIG9wZW5lbWJlZGRlZC1jb3JlLCBzaW5jZSBldmVyeXRoaW5nIGRlcGVuZHMgb24gaXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxheWVyQnJhbmNoLmxheWVyLm5hbWUsICJvcGVuZW1iZWRkZWQtY29yZSIsIG1zZz0nT3BlbkVtYmVkZGVkLUNvcmUgaXMgbm8gdGhlIGZpcnN0IGRlcGVuZGVuY3knKQorCisgICAgICAgICAgICAjIG1ldGEtcHl0aG9uIHNob3VsZCBjYXVzZSBhbiBvcGVuZW1iZWRkZWQtY29yZSBkZXBlbmRlbmN5LCBpZiBub3QgYXNzZXJ0IQorICAgICAgICAgICAgZm9yIGRlcCBpbiBsYXllckRlcHM6CisgICAgICAgICAgICAgICAgaWYgZGVwLmxheWVyLm5hbWUgPT0gJ21ldGEtcHl0aG9uJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoMSwgIm1ldGEtcHl0aG9uIHdhcyBub3QgZm91bmQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXRUcnVlKEZhbHNlKQorCisgICAgICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIGZpcnN0IGVsZW1lbnQuLi4KKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEVtcHR5IGxpc3QsIHRoaXMgaXMgYmFkLgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoMSwgIkVtcHR5IGxpc3Qgb2YgZGVwZW5kZW5jaWVzIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZpcnN0LCBtc2c9IkVtcHR5IGxpc3Qgb2YgZGVwZW5kZW5jaWVzIikKKworICAgICAgICAgICAgIyBMYXN0IGRlcCBzaG91bGQgYmUgdGhlIHJlcXVlc3RlZCBpdGVtCisgICAgICAgICAgICBsYXllckJyYW5jaCA9IGRlcGVuZGVuY2llc1tkZXBsYXllcmJyYW5jaF1bMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGF5ZXJCcmFuY2gubGF5ZXIubmFtZSwgIm1ldGEtcHl0aG9uIiwgbXNnPSJMYXN0IGRlcGVuZGVuY3kgbm90IG1ldGEtcHl0aG9uIikKKworICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X2ZpbmRfY29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgZGVmIF9jaGVjayhjb2xsZWN0aW9uLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygxLCAiTG9va2luZyBmb3IgY29sbGVjdGlvbiAlcy4uLiIgJSBjb2xsZWN0aW9uKQorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5sYXllcmluZGV4LmZpbmRfY29sbGVjdGlvbihjb2xsZWN0aW9uKQorICAgICAgICAgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVzdWx0LCBtc2c9IkRpZCBub3QgZmluZCAlcyB3aGVuIGl0IHNob3VsZCBiZSB0aGVyZSIgJSBjb2xsZWN0aW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQsIG1zZz0iRm91bmQgJXMgd2hlbiBpdCBzaG91bGRuJ3QgYmUgdGhlcmUiICUgY29sbGVjdGlvbikKKworICAgICAgICB0ZXN0cyA9IFsgKCdjb3JlJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ29wZW5lbWJlZGRlZC1jb3JlJywgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgKCduZXR3b3JraW5nLWxheWVyJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ21ldGEtcHl0aG9uJywgVHJ1ZSksCisgICAgICAgICAgICAgICAgICAoJ29wZW5lbWJlZGRlZC1sYXllcicsIFRydWUpLAorICAgICAgICAgICAgICAgICAgKCdub3RwcmVzZW50JywgRmFsc2UpIF0KKworICAgICAgICBmb3IgY29sbGVjdGlvbixyZXN1bHQgaW4gdGVzdHM6CisgICAgICAgICAgICBfY2hlY2soY29sbGVjdGlvbiwgcmVzdWx0KQorCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfZmluZF9sYXllcmJyYW5jaChzZWxmKToKKyAgICAgICAgZGVmIF9jaGVjayhuYW1lLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygxLCAiTG9va2luZyBmb3IgbGF5ZXJicmFuY2ggJXMuLi4iICUgbmFtZSkKKworICAgICAgICAgICAgZm9yIGluZGV4IGluIHNlbGYubGF5ZXJpbmRleC5pbmRleGVzOgorICAgICAgICAgICAgICAgIGZvciBsYXllcmJyYW5jaGlkIGluIGluZGV4LmxheWVyQnJhbmNoZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKDEsICJQcmVzZW50OiAlcyIgJSBpbmRleC5sYXllckJyYW5jaGVzW2xheWVyYnJhbmNoaWRdLmxheWVyLm5hbWUpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmxheWVyaW5kZXguZmluZF9sYXllcmJyYW5jaChuYW1lKQorICAgICAgICAgICAgaWYgZXhwZWN0ZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVzdWx0LCBtc2c9IkRpZCBub3QgZmluZCAlcyB3aGVuIGl0IHNob3VsZCBiZSB0aGVyZSIgJSBjb2xsZWN0aW9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQsIG1zZz0iRm91bmQgJXMgd2hlbiBpdCBzaG91bGRuJ3QgYmUgdGhlcmUiICUgY29sbGVjdGlvbikKKworICAgICAgICB0ZXN0cyA9IFsgKCdvcGVuZW1iZWRkZWQtY29yZScsIFRydWUpLAorICAgICAgICAgICAgICAgICAgKCdjb3JlJywgRmFsc2UpLAorICAgICAgICAgICAgICAgICAgKCdtZXRhLW5ldHdvcmtpbmcnLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICgnbWV0YS1weXRob24nLCBUcnVlKSwKKyAgICAgICAgICAgICAgICAgICgnbWV0YS1vZScsIFRydWUpLAorICAgICAgICAgICAgICAgICAgKCdub3RwcmVzZW50JywgRmFsc2UpIF0KKworICAgICAgICBmb3IgY29sbGVjdGlvbixyZXN1bHQgaW4gdGVzdHM6CisgICAgICAgICAgICBfY2hlY2soY29sbGVjdGlvbiwgcmVzdWx0KQorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvdGVzdGRhdGEvUkVBRE1FIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmFiNDBiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL1JFQURNRQpAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3QgZGF0YSBpcyB1c2VkIHRvIHZlcmlmeSB0aGUgJ2Nvb2tlcicgbW9kdWxlIG9mIHRoZSBsYXllcmluZGV4LgorCitUaGUgbW9kdWxlIGNvbnNpc3RzIG9mIGEgZmF1eCBwcm9qZWN0IGJibGF5ZXJzLmNvbmYgd2l0aCBmb3VyIGxheWVycyBkZWZpbmVkLgorCitsYXllcjEgLSBvcGVuZW1iZWRkZWQtY29yZQorbGF5ZXIyIC0gbmV0d29ya2luZy1sYXllcgorbGF5ZXIzIC0gbWV0YS1weXRob24KK2xheWVyNCAtIG9wZW5lbWJlZGRlZC1sYXllciAobWV0YS1vZSkKKworU2luY2Ugd2UgZG8gbm90IGhhdmUgYSBmdWxseSBwb3B1bGF0ZWQgY29va2VyLCB3ZSB1c2UgdGhpcyB0byB0ZXN0IHRoZQorYmFzaWMgaW5kZXggZ2VuZXJhdGlvbiwgYW5kIG5vdCBhbnkgZGVlcCByZWNpcGUgYmFzZWQgY29udGVudHMuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvdGVzdGRhdGEvYnVpbGQvY29uZi9iYmxheWVycy5jb25mIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL2J1aWxkL2NvbmYvYmJsYXllcnMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDQyOWIyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL2J1aWxkL2NvbmYvYmJsYXllcnMuY29uZgpAQCAtMCwwICsxLDE1IEBACitMQVlFUlNFUklFU19DT1JFTkFNRVMgPSAic3VtbyIKKworIyBMQVlFUl9DT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mL2JibGF5ZXJzLmNvbmYKKyMgY2hhbmdlcyBpbmNvbXBhdGlibHkKK0xDT05GX1ZFUlNJT04gPSAiNyIKKworQkJQQVRIID0gIiR7VE9QRElSfSIKK0JCRklMRVMgPz0gIiIKKworQkJMQVlFUlMgPz0gIiBcCisgICR7VE9QRElSfS9sYXllcjEgXAorICAke1RPUERJUn0vbGF5ZXIyIFwKKyAgJHtUT1BESVJ9L2xheWVyMyBcCisgICR7VE9QRElSfS9sYXllcjQgXAorICAiCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvdGVzdGRhdGEvbGF5ZXIxL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjEvY29uZi9sYXllci5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NmQ1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvdGVzdGRhdGEvbGF5ZXIxL2NvbmYvbGF5ZXIuY29uZgpAQCAtMCwwICsxLDE3IEBACisjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAorQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUworQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiIKKworQkJGSUxFX0NPTExFQ1RJT05TICs9ICJjb3JlIgorQkJGSUxFX1BBVFRFUk5fY29yZSA9ICJeJHtMQVlFUkRJUn0vIgorQkJGSUxFX1BSSU9SSVRZX2NvcmUgPSAiNSIKKworTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInN1bW8iCisKKyMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAorIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycworTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTEiCitMQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJzdW1vIgorCitCQkxBWUVSU19MQVlFUklOREVYX05BTUVfY29yZSA9ICJvcGVuZW1iZWRkZWQtY29yZSIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjIvY29uZi9sYXllci5jb25mIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL2xheWVyMi9jb25mL2xheWVyLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2OWQxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjIvY29uZi9sYXllci5jb25mCkBAIC0wLDAgKzEsMjAgQEAKKyMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJQQVRICitCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworIyBXZSBoYXZlIGEgcGFja2FnZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUworQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCisgICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorCitCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm5ldHdvcmtpbmctbGF5ZXIiCitCQkZJTEVfUEFUVEVSTl9uZXR3b3JraW5nLWxheWVyIDo9ICJeJHtMQVlFUkRJUn0vIgorQkJGSUxFX1BSSU9SSVRZX25ldHdvcmtpbmctbGF5ZXIgPSAiNSIKKworIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCisjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCitMQVlFUlZFUlNJT05fbmV0d29ya2luZy1sYXllciA9ICIxIgorCitMQVlFUkRFUEVORFNfbmV0d29ya2luZy1sYXllciA9ICJjb3JlIgorTEFZRVJERVBFTkRTX25ldHdvcmtpbmctbGF5ZXIgKz0gIm9wZW5lbWJlZGRlZC1sYXllciIKK0xBWUVSREVQRU5EU19uZXR3b3JraW5nLWxheWVyICs9ICJtZXRhLXB5dGhvbiIKKworTEFZRVJTRVJJRVNfQ09NUEFUX25ldHdvcmtpbmctbGF5ZXIgPSAic3VtbyIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjMvY29uZi9sYXllci5jb25mIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL2xheWVyMy9jb25mL2xheWVyLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA4OTA3MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjMvY29uZi9sYXllci5jb25mCkBAIC0wLDAgKzEsMTkgQEAKKyMgV2UgbWlnaHQgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRICitCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworIyBXZSBoYXZlIHJlY2lwZXMgZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCitCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcyovKi8qLmJiYXBwZW5kIgorCitCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm1ldGEtcHl0aG9uIgorQkJGSUxFX1BBVFRFUk5fbWV0YS1weXRob24gOj0gIl4ke0xBWUVSRElSfS8iCitCQkZJTEVfUFJJT1JJVFlfbWV0YS1weXRob24gPSAiNyIKKworIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCisjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCitMQVlFUlZFUlNJT05fbWV0YS1weXRob24gPSAiMSIKKworTEFZRVJERVBFTkRTX21ldGEtcHl0aG9uID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgorCitMQVlFUlNFUklFU19DT01QQVRfbWV0YS1weXRob24gPSAic3VtbyIKKworTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjQvY29uZi9sYXllci5jb25mIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Rlc3RkYXRhL2xheWVyNC9jb25mL2xheWVyLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY0OWVlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy90ZXN0ZGF0YS9sYXllcjQvY29uZi9sYXllci5jb25mCkBAIC0wLDAgKzEsMjIgQEAKKyMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRICitCQlBBVEggLj0gIjoke0xBWUVSRElSfSIKKworIyBXZSBoYXZlIGEgcmVjaXBlcyBkaXJlY3RvcnksIGFkZCB0byBCQkZJTEVTCitCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiCisKK0JCRklMRV9DT0xMRUNUSU9OUyArPSAib3BlbmVtYmVkZGVkLWxheWVyIgorQkJGSUxFX1BBVFRFUk5fb3BlbmVtYmVkZGVkLWxheWVyIDo9ICJeJHtMQVlFUkRJUn0vIgorCisjIERlZmluZSB0aGUgcHJpb3JpdHkgZm9yIHJlY2lwZXMgKC5iYiBmaWxlcykgZnJvbSB0aGlzIGxheWVyLAorIyBjaG9vc2luZyBjYXJlZnVsbHkgaG93IHRoaXMgbGF5ZXIgaW50ZXJhY3RzIHdpdGggYWxsIG9mIHRoZQorIyBvdGhlciBsYXllcnMuCisKK0JCRklMRV9QUklPUklUWV9vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiNiIKKworIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCisjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCitMQVlFUlZFUlNJT05fb3BlbmVtYmVkZGVkLWxheWVyID0gIjEiCisKK0xBWUVSREVQRU5EU19vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiY29yZSIKKworTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJzdW1vIgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CmluZGV4IDYzYjQxODcuLjk0OTA2MzUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKQEAgLTI3LDggKzI3LDkgQEAKIGltcG9ydCB0aW1lCiBmcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQotZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZQotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgTGF5ZXIsIExheWVyX1ZlcnNpb24sIFByb2plY3RMYXllciwgVG9hc3RlclNldHRpbmcKK2Zyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkUmVxdWVzdCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZSwgQnVpbGQKK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFRvYXN0ZXJTZXR0aW5nCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IHNpZ25hbF9ydW5idWlsZHMKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gdG9hc3Rlcm1haW4gaW1wb3J0IHNldHRpbmdzCkBAIC0zOCw2ICszOSw4IEBACiBpbXBvcnQgbG9nZ2luZwogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInRvYXN0ZXIiKQogCitpbnN0YWxsX2RpciA9IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RJUicpCisKIGZyb20gcHByaW50IGltcG9ydCBwcHJpbnQsIHBmb3JtYXQKIAogY2xhc3MgTG9jYWxob3N0QkVDb250cm9sbGVyKEJ1aWxkRW52aXJvbm1lbnRDb250cm9sbGVyKToKQEAgLTg3LDEwICs5MCwxMCBAQAogICAgICAgICAjbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IHVzaW5nIEhFQUQgY2hlY2tvdXQgaW4gJXMiICUgbG9jYWxfY2hlY2tvdXRfcGF0aCkKICAgICAgICAgcmV0dXJuIGxvY2FsX2NoZWNrb3V0X3BhdGgKIAotCi0gICAgZGVmIHNldENsb25lU3RhdHVzKHNlbGYsYml0YmFrZSxzdGF0dXMsdG90YWwsY3VycmVudCk6CisgICAgZGVmIHNldENsb25lU3RhdHVzKHNlbGYsYml0YmFrZSxzdGF0dXMsdG90YWwsY3VycmVudCxyZXBvX25hbWUpOgogICAgICAgICBiaXRiYWtlLnJlcS5idWlsZC5yZXBvc19jbG9uZWQ9Y3VycmVudAogICAgICAgICBiaXRiYWtlLnJlcS5idWlsZC5yZXBvc190b19jbG9uZT10b3RhbAorICAgICAgICBiaXRiYWtlLnJlcS5idWlsZC5wcm9ncmVzc19pdGVtPXJlcG9fbmFtZQogICAgICAgICBiaXRiYWtlLnJlcS5idWlsZC5zYXZlKCkKIAogICAgIGRlZiBzZXRMYXllcnMoc2VsZiwgYml0YmFrZSwgbGF5ZXJzLCB0YXJnZXRzKToKQEAgLTEwMCw2ICsxMDMsNyBAQAogCiAgICAgICAgIGxheWVybGlzdCA9IFtdCiAgICAgICAgIG5vbmdpdGxheWVybGlzdCA9IFtdCisgICAgICAgIGxheWVyX2luZGV4ID0gMAogICAgICAgICBnaXRfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgIyAobm90ZTogYWRkIGN1c3RvbSBlbnZpcm9ubWVudCBzZXR0aW5ncyBoZXJlKQogCkBAIC0xMTMsNyArMTE3LDcgQEAKICAgICAgICAgaWYgYml0YmFrZS5naXR1cmwgYW5kIGJpdGJha2UuY29tbWl0OgogICAgICAgICAgICAgZ2l0cmVwb3NbKGJpdGJha2UuZ2l0dXJsLCBiaXRiYWtlLmNvbW1pdCldID0gW10KICAgICAgICAgICAgIGdpdHJlcG9zWyhiaXRiYWtlLmdpdHVybCwgYml0YmFrZS5jb21taXQpXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgKCJiaXRiYWtlIiwgYml0YmFrZS5kaXJwYXRoKSkKKyAgICAgICAgICAgICAgICAoImJpdGJha2UiLCBiaXRiYWtlLmRpcnBhdGgsIDApKQogCiAgICAgICAgIGZvciBsYXllciBpbiBsYXllcnM6CiAgICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gZ2l0IGNsb25lIHRoZSBsYXllciBmb3IgdGhlIEN1c3RvbUltYWdlUmVjaXBlCkBAIC0xMjQsMTIgKzEyOCwxMyBAQAogICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIGxvY2FsIGxheWVycyB0aGVuIHdlIGRvbid0IG5lZWQgY2xvbmUgdGhlbQogICAgICAgICAgICAgIyBGb3IgbG9jYWwgbGF5ZXJzIGdpdHVybCB3aWxsIGJlIGVtcHR5CiAgICAgICAgICAgICBpZiBub3QgbGF5ZXIuZ2l0dXJsOgotICAgICAgICAgICAgICAgIG5vbmdpdGxheWVybGlzdC5hcHBlbmQobGF5ZXIubGF5ZXJfdmVyc2lvbi5sYXllci5sb2NhbF9zb3VyY2VfZGlyKQorICAgICAgICAgICAgICAgIG5vbmdpdGxheWVybGlzdC5hcHBlbmQoICIlMDNkOiVzIiAlIChsYXllcl9pbmRleCxsYXllci5sb2NhbF9zb3VyY2VfZGlyKSApCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgbm90IChsYXllci5naXR1cmwsIGxheWVyLmNvbW1pdCkgaW4gZ2l0cmVwb3M6CiAgICAgICAgICAgICAgICAgZ2l0cmVwb3NbKGxheWVyLmdpdHVybCwgbGF5ZXIuY29tbWl0KV0gPSBbXQotICAgICAgICAgICAgZ2l0cmVwb3NbKGxheWVyLmdpdHVybCwgbGF5ZXIuY29tbWl0KV0uYXBwZW5kKCAobGF5ZXIubmFtZSwgbGF5ZXIuZGlycGF0aCkgKQorICAgICAgICAgICAgZ2l0cmVwb3NbKGxheWVyLmdpdHVybCwgbGF5ZXIuY29tbWl0KV0uYXBwZW5kKCAobGF5ZXIubmFtZSxsYXllci5kaXJwYXRoLGxheWVyX2luZGV4KSApCisgICAgICAgICAgICBsYXllcl9pbmRleCArPSAxCiAKIAogICAgICAgICBsb2dnZXIuZGVidWcoImxvY2FsaG9zdGJlY29udHJvbGxlciwgb3VyIGdpdCByZXBvcyBhcmUgJXMiICUgcGZvcm1hdChnaXRyZXBvcykpCkBAIC0xNTksOSArMTY0LDkgQEAKICAgICAgICAgIyAzLiBjaGVja291dCB0aGUgcmVwb3NpdG9yaWVzCiAgICAgICAgIGNsb25lX2NvdW50PTAKICAgICAgICAgY2xvbmVfdG90YWw9bGVuKGdpdHJlcG9zLmtleXMoKSkKLSAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdTdGFydGVkJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCkKKyAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdTdGFydGVkJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCwnJykKICAgICAgICAgZm9yIGdpdHVybCwgY29tbWl0IGluIGdpdHJlcG9zLmtleXMoKToKLSAgICAgICAgICAgIHNlbGYuc2V0Q2xvbmVTdGF0dXMoYml0YmFrZSwncHJvZ3Jlc3MnLGNsb25lX3RvdGFsLGNsb25lX2NvdW50KQorICAgICAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdwcm9ncmVzcycsY2xvbmVfdG90YWwsY2xvbmVfY291bnQsZ2l0cmVwb3NbKGdpdHVybCwgY29tbWl0KV1bMF1bMF0pCiAgICAgICAgICAgICBjbG9uZV9jb3VudCArPSAxCiAKICAgICAgICAgICAgIGxvY2FsZGlybmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmJlLnNvdXJjZWRpciwgc2VsZi5nZXRHaXRDbG9uZURpcmVjdG9yeShnaXR1cmwsIGNvbW1pdCkpCkBAIC0xNzIsOCArMTc3LDExIEBACiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBsb2NhbHJlbW90ZXMgPSBzZWxmLl9zaGVsbGNtZCgiZ2l0IHJlbW90ZSAtdiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZGlybmFtZSxlbnY9Z2l0X2VudikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGdpdHVybCBpbiBsb2NhbHJlbW90ZXMgYW5kIGNvbW1pdCAhPSAnSEVBRCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJFeGlzdGluZyBnaXQgcmVwb3NpdG9yeSBhdCAlcywgYnV0IHdpdGggZGlmZmVyZW50IHJlbW90ZXMgKCclcycsIGV4cGVjdGVkICclcycpLiBUb2FzdGVyIHdpbGwgbm90IGNvbnRpbnVlIG91dCBvZiBmZWFyIG9mIGRhbWFnaW5nIHNvbWV0aGluZy4iICUgKGxvY2FsZGlybmFtZSwgIiwgIi5qb2luKGxvY2FscmVtb3Rlcy5zcGxpdCgiXG4iKSksIGdpdHVybCkpCisgICAgICAgICAgICAgICAgICAgICMgTk9URTogdGhpcyBuaWNlLXRvLWhhdmUgY2hlY2sgYnJlYWtzIHdoZW4gdXNpbmcgZ2l0IHJlbWFwaW5nIHRvIGdldCBwYXN0IGZpcmV3YWxsCisgICAgICAgICAgICAgICAgICAgICMgICAgICAgUmUtZW5hYmxlIGxhdGVyIHdpdGggLmdpdGNvbmZpZyByZW1hcHBpbmcgY2hlY2tzCisgICAgICAgICAgICAgICAgICAgICNpZiBub3QgZ2l0dXJsIGluIGxvY2FscmVtb3RlcyBhbmQgY29tbWl0ICE9ICdIRUFEJzoKKyAgICAgICAgICAgICAgICAgICAgIyAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJFeGlzdGluZyBnaXQgcmVwb3NpdG9yeSBhdCAlcywgYnV0IHdpdGggZGlmZmVyZW50IHJlbW90ZXMgKCclcycsIGV4cGVjdGVkICclcycpLiBUb2FzdGVyIHdpbGwgbm90IGNvbnRpbnVlIG91dCBvZiBmZWFyIG9mIGRhbWFnaW5nIHNvbWV0aGluZy4iICUgKGxvY2FsZGlybmFtZSwgIiwgIi5qb2luKGxvY2FscmVtb3Rlcy5zcGxpdCgiXG4iKSksIGdpdHVybCkpCisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBleGNlcHQgU2hlbGxDbWRFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICMgb3VyIGxvY2FsZGlybmFtZSBtaWdodCBub3QgYmUgYSBnaXQgcmVwb3NpdG9yeQogICAgICAgICAgICAgICAgICAgICAjLSB0aGF0J3MgZmluZQpAQCAtMjA1LDE2ICsyMTMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2hlbGxjbWQoImdpdCBjbG9uZSAtYiBcIiVzXCIgXCIlc1wiIFwiJXNcIiAiICUgKGJpdGJha2UuY29tbWl0LCBiaXRiYWtlLmdpdHVybCwgb3MucGF0aC5qb2luKHNlbGYucG9reWRpcm5hbWUsICdiaXRiYWtlJykpLGVudj1naXRfZW52KQogCiAgICAgICAgICAgICAjIHZlcmlmeSBvdXIgcmVwb3NpdG9yaWVzCi0gICAgICAgICAgICBmb3IgbmFtZSwgZGlycGF0aCBpbiBnaXRyZXBvc1soZ2l0dXJsLCBjb21taXQpXToKKyAgICAgICAgICAgIGZvciBuYW1lLCBkaXJwYXRoLCBpbmRleCBpbiBnaXRyZXBvc1soZ2l0dXJsLCBjb21taXQpXToKICAgICAgICAgICAgICAgICBsb2NhbGRpcnBhdGggPSBvcy5wYXRoLmpvaW4obG9jYWxkaXJuYW1lLCBkaXJwYXRoKQotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBsb2NhbGRpcnBhdGggZXhwZWN0ZWQgJyVzJyIgJSBsb2NhbGRpcnBhdGgpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IGxvY2FsZGlycGF0aCBleHBlY3RzICclcyciICUgbG9jYWxkaXJwYXRoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NhbGRpcnBhdGgpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBCdWlsZFNldHVwRXhjZXB0aW9uKCJDYW5ub3QgZmluZCBsYXllciBnaXQgcGF0aCAnJXMnIGluIGNoZWNrZWQgb3V0IHJlcG9zaXRvcnkgJyVzOiVzJy4gQWJvcnRpbmcuIiAlIChsb2NhbGRpcnBhdGgsIGdpdHVybCwgY29tbWl0KSkKIAogICAgICAgICAgICAgICAgIGlmIG5hbWUgIT0gImJpdGJha2UiOgotICAgICAgICAgICAgICAgICAgICBsYXllcmxpc3QuYXBwZW5kKGxvY2FsZGlycGF0aC5yc3RyaXAoIi8iKSkKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJsaXN0LmFwcGVuZCgiJTAzZDolcyIgJSAoaW5kZXgsbG9jYWxkaXJwYXRoLnJzdHJpcCgiLyIpKSkKIAotICAgICAgICBzZWxmLnNldENsb25lU3RhdHVzKGJpdGJha2UsJ2NvbXBsZXRlJyxjbG9uZV90b3RhbCxjbG9uZV9jb3VudCkKKyAgICAgICAgc2VsZi5zZXRDbG9uZVN0YXR1cyhiaXRiYWtlLCdjb21wbGV0ZScsY2xvbmVfdG90YWwsY2xvbmVfY291bnQsJycpCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygibG9jYWxob3N0YmVjb250cm9sbGVyOiBjdXJyZW50IGxheWVyIGxpc3QgJXMgIiAlIHBmb3JtYXQobGF5ZXJsaXN0KSkKIAogICAgICAgICAjIFJlc29sdmUgc2VsZi5wb2t5ZGlybmFtZSBpZiBub3QgcmVzb2x2ZWQgeWV0LCBjb25zaWRlciB0aGUgc2NlbmFyaW8KQEAgLTI0NCw3ICsyNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBjdXN0b21yZWNpcGUsIGxheWVycykKIAogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY3VzdG9tX2xheWVyX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBsYXllcmxpc3QuYXBwZW5kKGN1c3RvbV9sYXllcl9wYXRoKQorICAgICAgICAgICAgICAgICAgICBsYXllcmxpc3QuYXBwZW5kKCIlMDNkOiVzIiAlIChsYXllcl9pbmRleCxjdXN0b21fbGF5ZXJfcGF0aCkpCiAKICAgICAgICAgICAgIGV4Y2VwdCBDdXN0b21JbWFnZVJlY2lwZS5Eb2VzTm90RXhpc3Q6CiAgICAgICAgICAgICAgICAgY29udGludWUgICMgbm90IGEgY3VzdG9tIHJlY2lwZSwgc2tpcApAQCAtMjUyLDcgKzI2MCwxMSBAQAogICAgICAgICBsYXllcmxpc3QuZXh0ZW5kKG5vbmdpdGxheWVybGlzdCkKICAgICAgICAgbG9nZ2VyLmRlYnVnKCJcblxuc2V0IGxheWVycyBnaXZlcyB0aGlzIGxpc3QgJXMiICUgcGZvcm1hdChsYXllcmxpc3QpKQogICAgICAgICBzZWxmLmlzbGF5ZXJzZXQgPSBUcnVlCi0gICAgICAgIHJldHVybiBsYXllcmxpc3QKKworICAgICAgICAjIHJlc3RvcmUgdGhlIG9yZGVyIG9mIGxheWVyIGxpc3QgZm9yIGJibGF5ZXJzLmNvbmYKKyAgICAgICAgbGF5ZXJsaXN0LnNvcnQoKQorICAgICAgICBzb3J0ZWRfbGF5ZXJsaXN0ID0gW2xbNDpdIGZvciBsIGluIGxheWVybGlzdF0KKyAgICAgICAgcmV0dXJuIHNvcnRlZF9sYXllcmxpc3QKIAogICAgIGRlZiBzZXR1cF9jdXN0b21faW1hZ2VfcmVjaXBlKHNlbGYsIGN1c3RvbXJlY2lwZSwgbGF5ZXJzKToKICAgICAgICAgIiIiIFNldCB1cCB0b2FzdGVyLWN1c3RvbS1pbWFnZXMgbGF5ZXIgYW5kIHJlY2lwZSBmaWxlcyAiIiIKQEAgLTMyMiwzMSArMzM0LDExNSBAQAogCiAgICAgZGVmIHRyaWdnZXJCdWlsZChzZWxmLCBiaXRiYWtlLCBsYXllcnMsIHZhcmlhYmxlcywgdGFyZ2V0cywgYnJiZSk6CiAgICAgICAgIGxheWVycyA9IHNlbGYuc2V0TGF5ZXJzKGJpdGJha2UsIGxheWVycywgdGFyZ2V0cykKKyAgICAgICAgaXNfbWVyZ2VkX2F0dHIgPSBiaXRiYWtlLnJlcS5wcm9qZWN0Lm1lcmdlZF9hdHRyCisKKyAgICAgICAgZ2l0X2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICMgKG5vdGU6IGFkZCBjdXN0b20gZW52aXJvbm1lbnQgc2V0dGluZ3MgaGVyZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpbnN1cmUgdGhhdCB0aGUgcHJvamVjdCBpbml0L2J1aWxkIHVzZXMgdGhlIHNlbGVjdGVkIGJpdGJha2UsIGFuZCBub3QgVG9hc3RlcidzCisgICAgICAgICAgICBkZWwgZ2l0X2VudlsnVEVNUExBVEVDT05GJ10KKyAgICAgICAgICAgIGRlbCBnaXRfZW52WydCQkJBU0VESVInXQorICAgICAgICAgICAgZGVsIGdpdF9lbnZbJ0JVSUxERElSJ10KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgICAgICMgaW5pdCBidWlsZCBlbnZpcm9ubWVudCBmcm9tIHRoZSBjbG9uZQotICAgICAgICBidWlsZGRpciA9ICclcy10b2FzdGVyLSVkJyAlIChzZWxmLmJlLmJ1aWxkZGlyLCBiaXRiYWtlLnJlcS5wcm9qZWN0LmlkKQorICAgICAgICBpZiBiaXRiYWtlLnJlcS5wcm9qZWN0LmJ1aWxkZGlyOgorICAgICAgICAgICAgYnVpbGRkaXIgPSBiaXRiYWtlLnJlcS5wcm9qZWN0LmJ1aWxkZGlyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsZGRpciA9ICclcy10b2FzdGVyLSVkJyAlIChzZWxmLmJlLmJ1aWxkZGlyLCBiaXRiYWtlLnJlcS5wcm9qZWN0LmlkKQogICAgICAgICBvZV9pbml0ID0gb3MucGF0aC5qb2luKHNlbGYucG9reWRpcm5hbWUsICdvZS1pbml0LWJ1aWxkLWVudicpCiAgICAgICAgICMgaW5pdCBidWlsZCBlbnZpcm9ubWVudAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjdXN0b21fc2NyaXB0ID0gVG9hc3RlclNldHRpbmcub2JqZWN0cy5nZXQobmFtZT0iQ1VTVE9NX0JVSUxEX0lOSVRfU0NSSVBUIikudmFsdWUKICAgICAgICAgICAgIGN1c3RvbV9zY3JpcHQgPSBjdXN0b21fc2NyaXB0LnJlcGxhY2UoIiVCVUlMRERJUiUiICxidWlsZGRpcikKLSAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJiYXNoIC1jICdzb3VyY2UgJXMnIiAlIChjdXN0b21fc2NyaXB0KSkKKyAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJiYXNoIC1jICdzb3VyY2UgJXMnIiAlIChjdXN0b21fc2NyaXB0KSxlbnY9Z2l0X2VudikKICAgICAgICAgZXhjZXB0IFRvYXN0ZXJTZXR0aW5nLkRvZXNOb3RFeGlzdDoKICAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCJiYXNoIC1jICdzb3VyY2UgJXMgJXMnIiAlIChvZV9pbml0LCBidWlsZGRpciksCi0gICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmUuc291cmNlZGlyKQorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJlLnNvdXJjZWRpcixlbnY9Z2l0X2VudikKIAogICAgICAgICAjIHVwZGF0ZSBiYmxheWVycy5jb25mCi0gICAgICAgIGJibGNvbmZwYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi90b2FzdGVyLWJibGF5ZXJzLmNvbmYiKQotICAgICAgICB3aXRoIG9wZW4oYmJsY29uZnBhdGgsICd3JykgYXMgYmJsYXllcnM6Ci0gICAgICAgICAgICBiYmxheWVycy53cml0ZSgnIyBsaW5lIGFkZGVkIGJ5IHRvYXN0ZXIgYnVpbGQgY29udHJvbFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCTEFZRVJTID0gIiVzIicgJSAnICcuam9pbihsYXllcnMpKQorICAgICAgICBpZiBub3QgaXNfbWVyZ2VkX2F0dHI6CisgICAgICAgICAgICBiYmxjb25mcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvdG9hc3Rlci1iYmxheWVycy5jb25mIikKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmxjb25mcGF0aCwgJ3cnKSBhcyBiYmxheWVyczoKKyAgICAgICAgICAgICAgICBiYmxheWVycy53cml0ZSgnIyBsaW5lIGFkZGVkIGJ5IHRvYXN0ZXIgYnVpbGQgY29udHJvbFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkxBWUVSUyA9ICIlcyInICUgJyAnLmpvaW4obGF5ZXJzKSkKIAotICAgICAgICAjIHdyaXRlIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICAgICBjb25mcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvdG9hc3Rlci5jb25mJykKLSAgICAgICAgd2l0aCBvcGVuKGNvbmZwYXRoLCAndycpIGFzIGNvbmY6Ci0gICAgICAgICAgICBmb3IgdmFyIGluIHZhcmlhYmxlczoKLSAgICAgICAgICAgICAgICBjb25mLndyaXRlKCclcz0iJXMiXG4nICUgKHZhci5uYW1lLCB2YXIudmFsdWUpKQotICAgICAgICAgICAgY29uZi53cml0ZSgnSU5IRVJJVCs9InRvYXN0ZXIgYnVpbGRoaXN0b3J5IicpCisgICAgICAgICAgICAjIHdyaXRlIGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAgY29uZnBhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL3RvYXN0ZXIuY29uZicpCisgICAgICAgICAgICB3aXRoIG9wZW4oY29uZnBhdGgsICd3JykgYXMgY29uZjoKKyAgICAgICAgICAgICAgICBmb3IgdmFyIGluIHZhcmlhYmxlczoKKyAgICAgICAgICAgICAgICAgICAgY29uZi53cml0ZSgnJXM9IiVzIlxuJyAlICh2YXIubmFtZSwgdmFyLnZhbHVlKSkKKyAgICAgICAgICAgICAgICBjb25mLndyaXRlKCdJTkhFUklUKz0idG9hc3RlciBidWlsZGhpc3RvcnkiJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQXBwZW5kIHRoZSBUb2FzdGVyLXNwZWNpZmljIHZhbHVlcyBkaXJlY3RseSB0byB0aGUgYmJsYXllcnMuY29uZgorICAgICAgICAgICAgYmJsY29uZnBhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKQorICAgICAgICAgICAgYmJsY29uZnBhdGhfc2F2ZSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZi5zYXZlIikKKyAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShiYmxjb25mcGF0aCwgYmJsY29uZnBhdGhfc2F2ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmxjb25mcGF0aCkgYXMgYmJsYXllcnM6CisgICAgICAgICAgICAgICAgY29udGVudCA9IGJibGF5ZXJzLnJlYWRsaW5lcygpCisgICAgICAgICAgICBkb193cml0ZSA9IFRydWUKKyAgICAgICAgICAgIHdhc190b2FzdGVyID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmxjb25mcGF0aCwndycpIGFzIGJibGF5ZXJzOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGNvbnRlbnQ6CisgICAgICAgICAgICAgICAgICAgICNsaW5lID0gbGluZS5zdHJpcCgnXG4nKQorICAgICAgICAgICAgICAgICAgICBpZiAnVE9BU1RFUl9DT05GSUdfUFJPTE9HJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgZG9fd3JpdGUgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgd2FzX3RvYXN0ZXIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVsaWYgJ1RPQVNURVJfQ09ORklHX0VQSUxPRycgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvX3dyaXRlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGRvX3dyaXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgYmJsYXllcnMud3JpdGUobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgd2FzX3RvYXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGJibGF5ZXJzLndyaXRlKCdcbicpCisgICAgICAgICAgICAgICAgYmJsYXllcnMud3JpdGUoJyM9PT0gVE9BU1RFUl9DT05GSUdfUFJPTE9HID09PVxuJykKKyAgICAgICAgICAgICAgICBiYmxheWVycy53cml0ZSgnQkJMQVlFUlMgPSAiXFxcbicpCisgICAgICAgICAgICAgICAgZm9yIGxheWVyIGluIGxheWVyczoKKyAgICAgICAgICAgICAgICAgICAgYmJsYXllcnMud3JpdGUoJyAgJXMgXFxcbicgJSBsYXllcikKKyAgICAgICAgICAgICAgICBiYmxheWVycy53cml0ZSgnICAiXG4nKQorICAgICAgICAgICAgICAgIGJibGF5ZXJzLndyaXRlKCcjPT09IFRPQVNURVJfQ09ORklHX0VQSUxPRyA9PT1cbicpCisgICAgICAgICAgICAjIEFwcGVuZCB0aGUgVG9hc3Rlci1zcGVjaWZpYyB2YWx1ZXMgZGlyZWN0bHkgdG8gdGhlIGxvY2FsLmNvbmYKKyAgICAgICAgICAgIGJiY29uZnBhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQorICAgICAgICAgICAgYmJjb25mcGF0aF9zYXZlID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLnNhdmUiKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGJiY29uZnBhdGgsIGJiY29uZnBhdGhfc2F2ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmNvbmZwYXRoKSBhcyBmOgorICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWRsaW5lcygpCisgICAgICAgICAgICBkb193cml0ZSA9IFRydWUKKyAgICAgICAgICAgIHdhc190b2FzdGVyID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmNvbmZwYXRoLCd3JykgYXMgY29uZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBjb250ZW50OgorICAgICAgICAgICAgICAgICAgICAjbGluZSA9IGxpbmUuc3RyaXAoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgaWYgJ1RPQVNURVJfQ09ORklHX1BST0xPRycgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvX3dyaXRlID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhc190b2FzdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmICdUT0FTVEVSX0NPTkZJR19FUElMT0cnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBkb193cml0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmYud3JpdGUobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgd2FzX3RvYXN0ZXI6CisgICAgICAgICAgICAgICAgICAgIGNvbmYud3JpdGUoJ1xuJykKKyAgICAgICAgICAgICAgICBjb25mLndyaXRlKCcjPT09IFRPQVNURVJfQ09ORklHX1BST0xPRyA9PT1cbicpCisgICAgICAgICAgICAgICAgZm9yIHZhciBpbiB2YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIChub3QgdmFyLm5hbWUuc3RhcnRzd2l0aCgiSU5URVJOQUxfIikpIGFuZCAobm90IHZhci5uYW1lID09ICJCQkxBWUVSUyIpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29uZi53cml0ZSgnJXM9IiVzIlxuJyAlICh2YXIubmFtZSwgdmFyLnZhbHVlKSkKKyAgICAgICAgICAgICAgICBjb25mLndyaXRlKCcjPT09IFRPQVNURVJfQ09ORklHX0VQSUxPRyA9PT1cbicpCisKKyAgICAgICAgIyBJZiAndGFyZ2V0JyBpcyBqdXN0IHRoZSBwcm9qZWN0IHByZXBhcmF0aW9uIHRhcmdldCwgdGhlbiB3ZSBhcmUgZG9uZQorICAgICAgICBmb3IgdGFyZ2V0IGluIHRhcmdldHM6CisgICAgICAgICAgICBpZiAiX1BST0pFQ1RfUFJFUEFSRV8iID09IHRhcmdldC50YXJnZXQ6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdsb2NhbGhvc3RiZWNvbnRyb2xsZXI6IFByb2plY3QgaGFzIGJlZW4gcHJlcGFyZWQuIERvbmUuJykKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgQnVpbGQgUmVxdWVzdCBhbmQgcmVsZWFzZSB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICBiaXRiYWtlLnJlcS5zdGF0ZSA9IEJ1aWxkUmVxdWVzdC5SRVFfQ09NUExFVEVECisgICAgICAgICAgICAgICAgYml0YmFrZS5yZXEuc2F2ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5iZS5sb2NrID0gQnVpbGRFbnZpcm9ubWVudC5MT0NLX0ZSRUUKKyAgICAgICAgICAgICAgICBzZWxmLmJlLnNhdmUoKQorICAgICAgICAgICAgICAgICMgQ2xvc2UgdGhlIHByb2plY3QgYnVpbGQgYW5kIHByb2dyZXNzIGJhcgorICAgICAgICAgICAgICAgIGJpdGJha2UucmVxLmJ1aWxkLm91dGNvbWUgPSBCdWlsZC5TVUNDRUVERUQKKyAgICAgICAgICAgICAgICBiaXRiYWtlLnJlcS5idWlsZC5zYXZlKCkKKyAgICAgICAgICAgICAgICAjIFVwZGF0ZSB0aGUgcHJvamVjdCBzdGF0dXMKKyAgICAgICAgICAgICAgICBiaXRiYWtlLnJlcS5wcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19DTE9OSU5HX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgc2lnbmFsX3J1bmJ1aWxkcygpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBjbGVhbiB0aGUgVG9hc3RlciB0byBidWlsZCBlbnZpcm9ubWVudAogICAgICAgICBlbnZfY2xlYW4gPSAndW5zZXQgQkJQQVRIOycgIyBjbGVhbiBCQlBBVEggZm9yIDw9IFlQLTIuNC4wCkBAIC0zNjAsMTYgKzQ1NiwxOSBAQAogICAgICAgICAgICAgZm9yIHBhdGggaW4gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KG9zLnBhdGhzZXApOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwYXRoLCAnYml0YmFrZScpKToKICAgICAgICAgICAgICAgICAgICAgYml0YmFrZSA9IG9zLnBhdGguam9pbihwYXRoLCAnYml0YmFrZScpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJGb3VuZCBCaXRiYWtlIGF0OiAlcyIgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkxvb2tzIGxpa2UgQml0YmFrZSBpcyBub3QgYXZhaWxhYmxlLCBwbGVhc2UgZml4IHlvdXIgZW52aXJvbm1lbnQiKQogCi0gICAgICAgICMgcnVuIGJpdGJha2Ugc2VydmVyIGZyb20gdGhlIGNsb25lCiAgICAgICAgIHRvYXN0ZXJsYXllcnMgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsImNvbmYvdG9hc3Rlci1iYmxheWVycy5jb25mIikKLSAgICAgICAgc2VsZi5fc2hlbGxjbWQoJyVzIGJhc2ggLWMgXCJzb3VyY2UgJXMgJXM7IEJJVEJBS0VfVUk9Imtub3R0eSIgJXMgLS1yZWFkICVzIC0tcmVhZCAlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1vbmx5IC1CIDAuMC4wLjA6MFwiJyAlIChlbnZfY2xlYW4sIG9lX2luaXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkZGlyLCBiaXRiYWtlLCBjb25mcGF0aCwgdG9hc3RlcmxheWVycyksIHNlbGYuYmUuc291cmNlZGlyKQorICAgICAgICBpZiBub3QgaXNfbWVyZ2VkX2F0dHI6CisgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZCgnJXMgYmFzaCAtYyBcInNvdXJjZSAlcyAlczsgQklUQkFLRV9VST0ia25vdHR5IiAlcyAtLXJlYWQgJXMgLS1yZWFkICVzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1vbmx5IC1CIDAuMC4wLjA6MFwiJyAlIChlbnZfY2xlYW4sIG9lX2luaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGRpciwgYml0YmFrZSwgY29uZnBhdGgsIHRvYXN0ZXJsYXllcnMpLCBzZWxmLmJlLnNvdXJjZWRpcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKCclcyBiYXNoIC1jIFwic291cmNlICVzICVzOyBCSVRCQUtFX1VJPSJrbm90dHkiICVzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXNlcnZlci1vbmx5IC1CIDAuMC4wLjA6MFwiJyAlIChlbnZfY2xlYW4sIG9lX2luaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGRpciwgYml0YmFrZSksIHNlbGYuYmUuc291cmNlZGlyKQogCiAgICAgICAgICMgcmVhZCBwb3J0IG51bWJlciBmcm9tIGJpdGJha2UubG9jawogICAgICAgICBzZWxmLmJlLmJicG9ydCA9IC0xCkBAIC00MTUsMTIgKzUxNCwyMCBAQAogICAgICAgICBsb2cgPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICd0b2FzdGVyX3VpLmxvZycpCiAgICAgICAgIGxvY2FsX2JpdGJha2UgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLmdldGVudignQkJCQVNFRElSJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaXRiYWtlJykKLSAgICAgICAgc2VsZi5fc2hlbGxjbWQoWyclcyBiYXNoIC1jIFwiKFRPQVNURVJfQlJCRT0iJXMiIEJCU0VSVkVSPSIwLjAuMC4wOiVzIiAnCisgICAgICAgIGlmIG5vdCBpc19tZXJnZWRfYXR0cjoKKyAgICAgICAgICAgIHNlbGYuX3NoZWxsY21kKFsnJXMgYmFzaCAtYyBcIihUT0FTVEVSX0JSQkU9IiVzIiBCQlNFUlZFUj0iMC4wLjAuMDolcyIgJwogICAgICAgICAgICAgICAgICAgICAgICAgJyVzICVzIC11IHRvYXN0ZXJ1aSAgLS1yZWFkICVzIC0tcmVhZCAlcyAtLXRva2VuPSIiID4+JXMgMj4mMTsnCiAgICAgICAgICAgICAgICAgICAgICAgICAnQklUQkFLRV9VST0ia25vdHR5IiBCQlNFUlZFUj0wLjAuMC4wOiVzICVzIC1tKSZcIicgXAogICAgICAgICAgICAgICAgICAgICAgICAgJSAoZW52X2NsZWFuLCBicmJlLCBzZWxmLmJlLmJicG9ydCwgbG9jYWxfYml0YmFrZSwgYmJ0YXJnZXRzLCBjb25mcGF0aCwgdG9hc3RlcmxheWVycywgbG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5iZS5iYnBvcnQsIGJpdGJha2UsKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZGRpciwgbm93YWl0PVRydWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9zaGVsbGNtZChbJyVzIGJhc2ggLWMgXCIoVE9BU1RFUl9CUkJFPSIlcyIgQkJTRVJWRVI9IjAuMC4wLjA6JXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICclcyAlcyAtdSB0b2FzdGVydWkgIC0tdG9rZW49IiIgPj4lcyAyPiYxOycKKyAgICAgICAgICAgICAgICAgICAgICAgICdCSVRCQUtFX1VJPSJrbm90dHkiIEJCU0VSVkVSPTAuMC4wLjA6JXMgJXMgLW0pJlwiJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAlIChlbnZfY2xlYW4sIGJyYmUsIHNlbGYuYmUuYmJwb3J0LCBsb2NhbF9iaXRiYWtlLCBiYnRhcmdldHMsIGxvZywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYmUuYmJwb3J0LCBiaXRiYWtlLCldLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXIsIG5vd2FpdD1UcnVlKQogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnbG9jYWxob3N0YmVjb250cm9sbGVyOiBCdWlsZCBsYXVuY2hlZCwgZXhpdGluZy4gJwogICAgICAgICAgICAgICAgICAgICAgJ0ZvbGxvdyBidWlsZCBsb2dzIGF0ICVzJyAlIGxvZykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKaW5kZXggNzkxZTUzZS4uNmE1NWRkNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9ydW5idWlsZHMucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgICAgICAgICAjIHdlIGNvdWxkIG5vdCBmaW5kIGEgQkVDOyBwb3N0cG9uZSB0aGUgQlIKICAgICAgICAgICAgICAgICBici5zdGF0ZSA9IEJ1aWxkUmVxdWVzdC5SRVFfUVVFVUVECiAgICAgICAgICAgICAgICAgYnIuc2F2ZSgpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJydW5idWlsZHM6IE5vIGJ1aWxkIGVudiIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJydW5idWlsZHM6IE5vIGJ1aWxkIGVudiAoJXMpIiAlIGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJydW5idWlsZHM6IHN0YXJ0aW5nIGJ1aWxkICVzLCBlbnZpcm9ubWVudCAlcyIgJQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKaW5kZXggZDdlYTc4ZC4uZmVjOTNhYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCkBAIC0yMywxNCArMjMsMTQgQEAKICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPm1hc3RlcjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSI0Ij4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+dGh1ZDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuMzY8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS40MDwvZmllbGQ+CiAgIDwvb2JqZWN0PgogCiAgIDwhLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5zdW1vPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIFN1bW88L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5iaXRiYWtldmVyc2lvbiIgbmFtZT0iYml0YmFrZV92ZXJzaW9uIj4xPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2hfbmFtZSI+c3VtbzwvZmllbGQ+CkBAIC01MSwxMSArNTEsMTEgQEAKICAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvXCImZ3Q7T3BlbkVtYmVkZGVkIG1hc3RlciZsdDsvYSZndDsgYnJhbmNoLjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj50aHVkPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+T3BlbmVtYmVkZGVkIFJvY2tvPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9cm9ja29cIiZndDtPcGVuRW1iZWRkZWQgUm9ja28mbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj50aHVkPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9dGh1ZFwiJmd0O09wZW5FbWJlZGRlZCBUaHVkJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KICAgPC9vYmplY3Q+CiAKICAgPCEtLSBEZWZhdWx0IGxheWVycyBmb3IgZWFjaCByZWxlYXNlIC0tPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggNmM5NjZkYS4uZmI5YTc3MSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCkBAIC0yNiw5ICsyNiw5IEBACiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+Yml0YmFrZTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSI0Ij4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5yb2NrbzwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+dGh1ZDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5PC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnJvY2tvPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPnRodWQ8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPmJpdGJha2U8L2ZpZWxkPgogICA8L29iamVjdD4KIApAQCAtNTcsMTAgKzU3LDEwIEBACiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjQiPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPnJvY2tvPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkZXNjcmlwdGlvbiI+WW9jdG8gUHJvamVjdCAyLjQgIlJvY2tvIjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMi42ICJUaHVkIjwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5yb2NrbzwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IlRleHRGaWVsZCIgbmFtZT0iaGVscHRleHQiPlRvYXN0ZXIgd2lsbCBydW4geW91ciBidWlsZHMgdXNpbmcgdGhlIHRpcCBvZiB0aGUgJmx0O2EgaHJlZj0iaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvcG9reS9sb2cvP2g9cm9ja28iJmd0O1lvY3RvIFByb2plY3QgUm9ja28gYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj50aHVkPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD10aHVkIiZndDtZb2N0byBQcm9qZWN0IFRodWQgYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgogICA8L29iamVjdD4KIAogICA8IS0tIERlZmF1bHQgcHJvamVjdCBsYXllcnMgZm9yIGVhY2ggcmVsZWFzZSAtLT4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CmluZGV4IGVmYzZiM2EuLjY2MTE0ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQpAQCAtMjksNyArMjksNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKQEAgLTM3LDYgKzM2LDE4IEBACiAKIERFRkFVTFRfTEFZRVJJTkRFWF9TRVJWRVIgPSAiaHR0cDovL2xheWVycy5vcGVuZW1iZWRkZWQub3JnL2xheWVyaW5kZXgvYXBpLyIKIAorIyBBZGQgcGF0aCB0byBiaXRiYWtlIG1vZHVsZXMgZm9yIGxheWVyaW5kZXhsaWIKKyMgbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5IChhYnNwYXRoKQorIyBsaWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcyAoZGlybmFtZSkKKyMgbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQgKGRpcm5hbWUpCisjIGxpYi90b2FzdGVyL29ybSAoZGlybmFtZSkKKyMgbGliL3RvYXN0ZXIvIChkaXJuYW1lKQorIyBsaWIvIChkaXJuYW1lKQorcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCitzeXMucGF0aC5pbnNlcnQoMCwgcGF0aCkKKworaW1wb3J0IGxheWVyaW5kZXhsaWIKKwogCiBjbGFzcyBTcGlubmVyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICIiIiBBIHNpbXBsZSBwcm9ncmVzcyBzcGlubmVyIHRvIGluZGljYXRlIGRvd25sb2FkL3BhcnNpbmcgaXMgaGFwcGVuaW5nIiIiCkBAIC04Niw0NSArOTcsNiBAQAogICAgICAgICAgICAgc2VsZi5hcGl1cmwgPSBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmdldChuYW1lID0gJ0NVU1RPTV9MQVlFUklOREVYX1NFUlZFUicpLnZhbHVlCiAKICAgICAgICAgYXNzZXJ0IHNlbGYuYXBpdXJsIGlzIG5vdCBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4sIFVSTEVycm9yCi0gICAgICAgICAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgZnJvbSB1cmxsaWIyIGltcG9ydCB1cmxvcGVuLCBVUkxFcnJvcgotICAgICAgICAgICAgZnJvbSB1cmxwYXJzZSBpbXBvcnQgdXJscGFyc2UKLQotICAgICAgICBwcm94eV9zZXR0aW5ncyA9IG9zLmVudmlyb24uZ2V0KCJodHRwX3Byb3h5IiwgTm9uZSkKLQotICAgICAgICBkZWYgX2dldF9qc29uX3Jlc3BvbnNlKGFwaXVybD1Ob25lKToKLSAgICAgICAgICAgIGlmIE5vbmUgPT0gYXBpdXJsOgotICAgICAgICAgICAgICAgIGFwaXVybD1zZWxmLmFwaXVybAotICAgICAgICAgICAgaHR0cF9wcm9ncmVzcyA9IFNwaW5uZXIoKQotICAgICAgICAgICAgaHR0cF9wcm9ncmVzcy5zdGFydCgpCi0KLSAgICAgICAgICAgIF9wYXJzZWR1cmwgPSB1cmxwYXJzZShhcGl1cmwpCi0gICAgICAgICAgICBwYXRoID0gX3BhcnNlZHVybC5wYXRoCi0KLSAgICAgICAgICAgICMgbG9nZ2VyLmRlYnVnKCJGZXRjaGluZyAlcyIsIGFwaXVybCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXMgPSB1cmxvcGVuKGFwaXVybCkKLSAgICAgICAgICAgIGV4Y2VwdCBVUkxFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgJXM6ICVzIiAlIChwYXRoLCBlLnJlYXNvbikpCi0KLSAgICAgICAgICAgIHBhcnNlZCA9IGpzb24ubG9hZHMocmVzLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykpCi0KLSAgICAgICAgICAgIGh0dHBfcHJvZ3Jlc3Muc3RvcCgpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VkCi0KLSAgICAgICAgIyB2ZXJpZnkgd2UgY2FuIGdldCB0aGUgYmFzaWMgYXBpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFwaWxpbmtzID0gX2dldF9qc29uX3Jlc3BvbnNlKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICAgICAgaWYgcHJveHlfc2V0dGluZ3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkVFOiBVc2luZyBwcm94eSAlcyIgJSBwcm94eV9zZXR0aW5ncykKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJFRTogY291bGQgbm90IGNvbm5lY3QgdG8gJXMsIHNraXBwaW5nIHVwZGF0ZToiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiJXNcbiVzIiAlIChzZWxmLmFwaXVybCwgZSwgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkpCi0gICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIHVwZGF0ZSBicmFuY2hlczsgb25seSB0aG9zZSB0aGF0IHdlIGFscmVhZHkgaGF2ZSBuYW1lcyBsaXN0ZWQgaW4gdGhlCiAgICAgICAgICMgUmVsZWFzZXMgdGFibGUKQEAgLTEzMywxMTIgKzEwNSwxMTggQEAKICAgICAgICAgaWYgbGVuKHdoaXRlbGlzdF9icmFuY2hfbmFtZXMpID09IDA6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBtYWtlIGxpc3Qgb2YgYnJhbmNoZXMgdG8gZmV0Y2giKQogCi0gICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBtZXRhZGF0YSByZWxlYXNlcyBmb3IgJXMiLAorICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgbWV0YWRhdGEgZm9yICVzIiwKICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4od2hpdGVsaXN0X2JyYW5jaF9uYW1lcykpCiAKLSAgICAgICAgYnJhbmNoZXNfaW5mbyA9IF9nZXRfanNvbl9yZXNwb25zZShhcGlsaW5rc1snYnJhbmNoZXMnXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj9maWx0ZXI9bmFtZTolcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICJPUiIuam9pbih3aGl0ZWxpc3RfYnJhbmNoX25hbWVzKSkKKyAgICAgICAgIyBXZSByZXF1aXJlIGEgbm9uLWVtcHR5IGJiLmRhdGEsIGJ1dCB3ZSBjYW4gZmFrZSBpdCB3aXRoIGEgZGljdGlvbmFyeQorICAgICAgICBsYXllcmluZGV4ID0gbGF5ZXJpbmRleGxpYi5MYXllckluZGV4KHsiRFVNTVkiIDogIlZBTFVFIn0pCisKKyAgICAgICAgaHR0cF9wcm9ncmVzcyA9IFNwaW5uZXIoKQorICAgICAgICBodHRwX3Byb2dyZXNzLnN0YXJ0KCkKKworICAgICAgICBpZiB3aGl0ZWxpc3RfYnJhbmNoX25hbWVzOgorICAgICAgICAgICAgdXJsX2JyYW5jaGVzID0gIjticmFuY2g9JXMiICUgJywnLmpvaW4od2hpdGVsaXN0X2JyYW5jaF9uYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVybF9icmFuY2hlcyA9ICIiCisgICAgICAgIGxheWVyaW5kZXgubG9hZF9sYXllcmluZGV4KCIlcyVzIiAlIChzZWxmLmFwaXVybCwgdXJsX2JyYW5jaGVzKSkKKworICAgICAgICBodHRwX3Byb2dyZXNzLnN0b3AoKQorCisgICAgICAgICMgV2Uga25vdyB3ZSdyZSBvbmx5IHByb2Nlc3Npbmcgb25lIGVudHJ5LCBzbyB3ZSByZWZlcmVuY2UgaXQgaGVyZQorICAgICAgICAjICh0aGlzIGlzIGNoZWF0aW5nLi4uKQorICAgICAgICBpbmRleCA9IGxheWVyaW5kZXguaW5kZXhlc1swXQogCiAgICAgICAgICMgTWFwIHRoZSBsYXllciBpbmRleCBicmFuY2hlcyB0byB0b2FzdGVyIHJlbGVhc2VzCiAgICAgICAgIGxpX2JyYW5jaF9pZF90b190b2FzdGVyX3JlbGVhc2UgPSB7fQogCi0gICAgICAgIHRvdGFsID0gbGVuKGJyYW5jaGVzX2luZm8pCi0gICAgICAgIGZvciBpLCBicmFuY2ggaW4gZW51bWVyYXRlKGJyYW5jaGVzX2luZm8pOgotICAgICAgICAgICAgbGlfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfcmVsZWFzZVticmFuY2hbJ2lkJ11dID0gXAotICAgICAgICAgICAgICAgICAgICBSZWxlYXNlLm9iamVjdHMuZ2V0KG5hbWU9YnJhbmNoWyduYW1lJ10pCisgICAgICAgIGxvZ2dlci5pbmZvKCJQcm9jZXNzaW5nIHJlbGVhc2VzIikKKworICAgICAgICB0b3RhbCA9IGxlbihpbmRleC5icmFuY2hlcykKKyAgICAgICAgZm9yIGksIGlkIGluIGVudW1lcmF0ZShpbmRleC5icmFuY2hlcyk6CisgICAgICAgICAgICBsaV9icmFuY2hfaWRfdG9fdG9hc3Rlcl9yZWxlYXNlW2lkXSA9IFwKKyAgICAgICAgICAgICAgICAgICAgUmVsZWFzZS5vYmplY3RzLmdldChuYW1lPWluZGV4LmJyYW5jaGVzW2lkXS5uYW1lKQogICAgICAgICAgICAgc2VsZi5taW5pX3Byb2dyZXNzKCJSZWxlYXNlcyIsIGksIHRvdGFsKQogCiAgICAgICAgICMga2VlcCBhIHRyYWNrIG9mIHRoZSBsYXllcmluZGV4IChsaSkgaWQgbWFwcGluZ3Mgc28gdGhhdAogICAgICAgICAjIGxheWVyX3ZlcnNpb25zIGNhbiBiZSBjcmVhdGVkIGZvciB0aGVzZSBsYXllcnMgbGF0ZXIgb24KICAgICAgICAgbGlfbGF5ZXJfaWRfdG9fdG9hc3Rlcl9sYXllcl9pZCA9IHt9CiAKLSAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIGxheWVycyIpCisgICAgICAgIGxvZ2dlci5pbmZvKCJQcm9jZXNzaW5nIGxheWVycyIpCiAKLSAgICAgICAgbGF5ZXJzX2luZm8gPSBfZ2V0X2pzb25fcmVzcG9uc2UoYXBpbGlua3NbJ2xheWVySXRlbXMnXSkKLQotICAgICAgICB0b3RhbCA9IGxlbihsYXllcnNfaW5mbykKLSAgICAgICAgZm9yIGksIGxpIGluIGVudW1lcmF0ZShsYXllcnNfaW5mbyk6CisgICAgICAgIHRvdGFsID0gbGVuKGluZGV4LmxheWVySXRlbXMpCisgICAgICAgIGZvciBpLCBpZCBpbiBlbnVtZXJhdGUoaW5kZXgubGF5ZXJJdGVtcyk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbCwgY3JlYXRlZCA9IExheWVyLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShuYW1lPWxpWyduYW1lJ10pCi0gICAgICAgICAgICAgICAgbC51cF9kYXRlID0gbGlbJ3VwZGF0ZWQnXQotICAgICAgICAgICAgICAgIGwuc3VtbWFyeSA9IGxpWydzdW1tYXJ5J10KLSAgICAgICAgICAgICAgICBsLmRlc2NyaXB0aW9uID0gbGlbJ2Rlc2NyaXB0aW9uJ10KKyAgICAgICAgICAgICAgICBsLCBjcmVhdGVkID0gTGF5ZXIub2JqZWN0cy5nZXRfb3JfY3JlYXRlKG5hbWU9aW5kZXgubGF5ZXJJdGVtc1tpZF0ubmFtZSkKKyAgICAgICAgICAgICAgICBsLnVwX2RhdGUgPSBpbmRleC5sYXllckl0ZW1zW2lkXS51cGRhdGVkCisgICAgICAgICAgICAgICAgbC5zdW1tYXJ5ID0gaW5kZXgubGF5ZXJJdGVtc1tpZF0uc3VtbWFyeQorICAgICAgICAgICAgICAgIGwuZGVzY3JpcHRpb24gPSBpbmRleC5sYXllckl0ZW1zW2lkXS5kZXNjcmlwdGlvbgogCiAgICAgICAgICAgICAgICAgaWYgY3JlYXRlZDoKICAgICAgICAgICAgICAgICAgICAgIyBwcmVkZWZpbmVkIGxheWVycyBpbiB0aGUgZml4dHVyZXMgKGZvciBleGFtcGxlIHBva3kueG1sKQogICAgICAgICAgICAgICAgICAgICAjIGFsd2F5cyBwcmVlbXB0IHRoZSBMYXllciBJbmRleCBmb3IgdGhlc2UgdmFsdWVzCi0gICAgICAgICAgICAgICAgICAgIGwudmNzX3VybCA9IGxpWyd2Y3NfdXJsJ10KLSAgICAgICAgICAgICAgICAgICAgbC52Y3Nfd2ViX3VybCA9IGxpWyd2Y3Nfd2ViX3VybCddCi0gICAgICAgICAgICAgICAgICAgIGwudmNzX3dlYl90cmVlX2Jhc2VfdXJsID0gbGlbJ3Zjc193ZWJfdHJlZV9iYXNlX3VybCddCi0gICAgICAgICAgICAgICAgICAgIGwudmNzX3dlYl9maWxlX2Jhc2VfdXJsID0gbGlbJ3Zjc193ZWJfZmlsZV9iYXNlX3VybCddCisgICAgICAgICAgICAgICAgICAgIGwudmNzX3VybCA9IGluZGV4LmxheWVySXRlbXNbaWRdLnZjc191cmwKKyAgICAgICAgICAgICAgICAgICAgbC52Y3Nfd2ViX3VybCA9IGluZGV4LmxheWVySXRlbXNbaWRdLnZjc193ZWJfdXJsCisgICAgICAgICAgICAgICAgICAgIGwudmNzX3dlYl90cmVlX2Jhc2VfdXJsID0gaW5kZXgubGF5ZXJJdGVtc1tpZF0udmNzX3dlYl90cmVlX2Jhc2VfdXJsCisgICAgICAgICAgICAgICAgICAgIGwudmNzX3dlYl9maWxlX2Jhc2VfdXJsID0gaW5kZXgubGF5ZXJJdGVtc1tpZF0udmNzX3dlYl9maWxlX2Jhc2VfdXJsCiAgICAgICAgICAgICAgICAgbC5zYXZlKCkKICAgICAgICAgICAgIGV4Y2VwdCBMYXllci5NdWx0aXBsZU9iamVjdHNSZXR1cm5lZDoKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2tpcHBlZCAlcyBhcyB3ZSBmb3VuZCBtdWx0aXBsZSBsYXllcnMgYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3Qga25vdyB3aGljaCB0byB1cGRhdGUiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaVsnbmFtZSddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LmxheWVySXRlbXNbaWRdLm5hbWUpCiAKLSAgICAgICAgICAgIGxpX2xheWVyX2lkX3RvX3RvYXN0ZXJfbGF5ZXJfaWRbbGlbJ2lkJ11dID0gbC5waworICAgICAgICAgICAgbGlfbGF5ZXJfaWRfdG9fdG9hc3Rlcl9sYXllcl9pZFtpZF0gPSBsLnBrCiAKICAgICAgICAgICAgIHNlbGYubWluaV9wcm9ncmVzcygibGF5ZXJzIiwgaSwgdG90YWwpCiAKICAgICAgICAgIyB1cGRhdGUgbGF5ZXJfdmVyc2lvbnMKLSAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIGxheWVyIHZlcnNpb25zIikKLSAgICAgICAgbGF5ZXJicmFuY2hlc19pbmZvID0gX2dldF9qc29uX3Jlc3BvbnNlKAotICAgICAgICAgICAgYXBpbGlua3NbJ2xheWVyQnJhbmNoZXMnXSArICI/ZmlsdGVyPWJyYW5jaF9fbmFtZTolcyIgJQotICAgICAgICAgICAgIk9SIi5qb2luKHdoaXRlbGlzdF9icmFuY2hfbmFtZXMpKQorICAgICAgICBsb2dnZXIuaW5mbygiUHJvY2Vzc2luZyBsYXllciB2ZXJzaW9ucyIpCiAKICAgICAgICAgIyBNYXAgTGF5ZXIgaW5kZXggbGF5ZXJfYnJhbmNoIG9iamVjdCBpZCB0bwogICAgICAgICAjIGxheWVyX3ZlcnNpb24gdG9hc3RlciBvYmplY3QgaWQKICAgICAgICAgbGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWQgPSB7fQogCi0gICAgICAgIHRvdGFsID0gbGVuKGxheWVyYnJhbmNoZXNfaW5mbykKLSAgICAgICAgZm9yIGksIGxiaSBpbiBlbnVtZXJhdGUobGF5ZXJicmFuY2hlc19pbmZvKToKKyAgICAgICAgdG90YWwgPSBsZW4oaW5kZXgubGF5ZXJCcmFuY2hlcykKKyAgICAgICAgZm9yIGksIGlkIGluIGVudW1lcmF0ZShpbmRleC5sYXllckJyYW5jaGVzKToKICAgICAgICAgICAgICMgcmVsZWFzZSBhcyBkZWZpbmVkIGJ5IHRvYXN0ZXIgbWFwIHRvIGxheWVyaW5kZXggYnJhbmNoCi0gICAgICAgICAgICByZWxlYXNlID0gbGlfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfcmVsZWFzZVtsYmlbJ2JyYW5jaCddXQorICAgICAgICAgICAgcmVsZWFzZSA9IGxpX2JyYW5jaF9pZF90b190b2FzdGVyX3JlbGVhc2VbaW5kZXgubGF5ZXJCcmFuY2hlc1tpZF0uYnJhbmNoX2lkXQogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbHYsIGNyZWF0ZWQgPSBMYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0X29yX2NyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgbGF5ZXI9TGF5ZXIub2JqZWN0cy5nZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBwaz1saV9sYXllcl9pZF90b190b2FzdGVyX2xheWVyX2lkW2xiaVsnbGF5ZXInXV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgcGs9bGlfbGF5ZXJfaWRfdG9fdG9hc3Rlcl9sYXllcl9pZFtpbmRleC5sYXllckJyYW5jaGVzW2lkXS5sYXllcl9pZF0pLAogICAgICAgICAgICAgICAgICAgICByZWxlYXNlPXJlbGVhc2UKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoCiAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGxheWVyaW5kZXggbGF5ZXIgcmVmZXJlbmNlZCBieSBsYXllcmJyYW5jaCAlZCIgJQotICAgICAgICAgICAgICAgICAgICBsYmlbJ2xheWVyJ10pCisgICAgICAgICAgICAgICAgICAgIGluZGV4LmxheWVyQnJhbmNoZXNbaWRdLmxheWVyX2lkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGNyZWF0ZWQ6Ci0gICAgICAgICAgICAgICAgbHYucmVsZWFzZSA9IGxpX2JyYW5jaF9pZF90b190b2FzdGVyX3JlbGVhc2VbbGJpWydicmFuY2gnXV0KLSAgICAgICAgICAgICAgICBsdi51cF9kYXRlID0gbGJpWyd1cGRhdGVkJ10KLSAgICAgICAgICAgICAgICBsdi5jb21taXQgPSBsYmlbJ2FjdHVhbF9icmFuY2gnXQotICAgICAgICAgICAgICAgIGx2LmRpcnBhdGggPSBsYmlbJ3Zjc19zdWJkaXInXQorICAgICAgICAgICAgICAgIGx2LnJlbGVhc2UgPSBsaV9icmFuY2hfaWRfdG9fdG9hc3Rlcl9yZWxlYXNlW2luZGV4LmxheWVyQnJhbmNoZXNbaWRdLmJyYW5jaF9pZF0KKyAgICAgICAgICAgICAgICBsdi51cF9kYXRlID0gaW5kZXgubGF5ZXJCcmFuY2hlc1tpZF0udXBkYXRlZAorICAgICAgICAgICAgICAgIGx2LmNvbW1pdCA9IGluZGV4LmxheWVyQnJhbmNoZXNbaWRdLmFjdHVhbF9icmFuY2gKKyAgICAgICAgICAgICAgICBsdi5kaXJwYXRoID0gaW5kZXgubGF5ZXJCcmFuY2hlc1tpZF0udmNzX3N1YmRpcgogICAgICAgICAgICAgICAgIGx2LnNhdmUoKQogCi0gICAgICAgICAgICBsaV9sYXllcl9icmFuY2hfaWRfdG9fdG9hc3Rlcl9sdl9pZFtsYmlbJ2lkJ11dID1cCisgICAgICAgICAgICBsaV9sYXllcl9icmFuY2hfaWRfdG9fdG9hc3Rlcl9sdl9pZFtpbmRleC5sYXllckJyYW5jaGVzW2lkXS5pZF0gPVwKICAgICAgICAgICAgICAgICBsdi5wawogICAgICAgICAgICAgc2VsZi5taW5pX3Byb2dyZXNzKCJsYXllciB2ZXJzaW9ucyIsIGksIHRvdGFsKQogCi0gICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBsYXllciB2ZXJzaW9uIGRlcGVuZGVuY2llcyIpCi0gICAgICAgICMgdXBkYXRlIGxheWVyIGRlcGVuZGVuY2llcwotICAgICAgICBsYXllcmRlcGVuZGVuY2llc19pbmZvID0gX2dldF9qc29uX3Jlc3BvbnNlKAotICAgICAgICAgICAgYXBpbGlua3NbJ2xheWVyRGVwZW5kZW5jaWVzJ10gKwotICAgICAgICAgICAgIj9maWx0ZXI9bGF5ZXJicmFuY2hfX2JyYW5jaF9fbmFtZTolcyIgJQotICAgICAgICAgICAgIk9SIi5qb2luKHdoaXRlbGlzdF9icmFuY2hfbmFtZXMpKQorICAgICAgICBsb2dnZXIuaW5mbygiUHJvY2Vzc2luZyBsYXllciB2ZXJzaW9uIGRlcGVuZGVuY2llcyIpCiAKICAgICAgICAgZGVwZW5kbGlzdCA9IHt9Ci0gICAgICAgIGZvciBsZGkgaW4gbGF5ZXJkZXBlbmRlbmNpZXNfaW5mbzoKKyAgICAgICAgZm9yIGlkIGluIGluZGV4LmxheWVyRGVwZW5kZW5jaWVzOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGx2ID0gTGF5ZXJfVmVyc2lvbi5vYmplY3RzLmdldCgKLSAgICAgICAgICAgICAgICAgICAgcGs9bGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWRbbGRpWydsYXllcmJyYW5jaCddXSkKKyAgICAgICAgICAgICAgICAgICAgcGs9bGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWRbaW5kZXgubGF5ZXJEZXBlbmRlbmNpZXNbaWRdLmxheWVyYnJhbmNoX2lkXSkKICAgICAgICAgICAgIGV4Y2VwdCBMYXllcl9WZXJzaW9uLkRvZXNOb3RFeGlzdCBhcyBlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIGlmIGx2IG5vdCBpbiBkZXBlbmRsaXN0OgogICAgICAgICAgICAgICAgIGRlcGVuZGxpc3RbbHZdID0gW10KICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsYXllcl9pZCA9IGxpX2xheWVyX2lkX3RvX3RvYXN0ZXJfbGF5ZXJfaWRbbGRpWydkZXBlbmRlbmN5J11dCisgICAgICAgICAgICAgICAgbGF5ZXJfaWQgPSBsaV9sYXllcl9pZF90b190b2FzdGVyX2xheWVyX2lkW2luZGV4LmxheWVyRGVwZW5kZW5jaWVzW2lkXS5kZXBlbmRlbmN5X2lkXQogCiAgICAgICAgICAgICAgICAgZGVwZW5kbGlzdFtsdl0uYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBMYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0KGxheWVyX19waz1sYXllcl9pZCwKQEAgLTI0Nyw3ICsyMjUsNyBAQAogICAgICAgICAgICAgZXhjZXB0IExheWVyX1ZlcnNpb24uRG9lc05vdEV4aXN0OgogICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDYW5ub3QgZmluZCBsYXllciB2ZXJzaW9uIChsczolcyksIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cF9pZDolcyBsdjolcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLCBsZGlbJ2RlcGVuZGVuY3knXSwgbHYpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLCBpbmRleC5sYXllckRlcGVuZGVuY2llc1tpZF0uZGVwZW5kZW5jeV9pZCwgbHYpKQogCiAgICAgICAgIHRvdGFsID0gbGVuKGRlcGVuZGxpc3QpCiAgICAgICAgIGZvciBpLCBsdiBpbiBlbnVtZXJhdGUoZGVwZW5kbGlzdCk6CkBAIC0yNTgsNzMgKzIzNiw2MSBAQAogICAgICAgICAgICAgc2VsZi5taW5pX3Byb2dyZXNzKCJMYXllciB2ZXJzaW9uIGRlcGVuZGVuY2llcyIsIGksIHRvdGFsKQogCiAgICAgICAgICMgdXBkYXRlIERpc3Ryb3MKLSAgICAgICAgbG9nZ2VyLmluZm8oIkZldGNoaW5nIGRpc3RybyBpbmZvcm1hdGlvbiIpCi0gICAgICAgIGRpc3Ryb3NfaW5mbyA9IF9nZXRfanNvbl9yZXNwb25zZSgKLSAgICAgICAgICAgIGFwaWxpbmtzWydkaXN0cm9zJ10gKyAiP2ZpbHRlcj1sYXllcmJyYW5jaF9fYnJhbmNoX19uYW1lOiVzIiAlCi0gICAgICAgICAgICAiT1IiLmpvaW4od2hpdGVsaXN0X2JyYW5jaF9uYW1lcykpCisgICAgICAgIGxvZ2dlci5pbmZvKCJQcm9jZXNzaW5nIGRpc3RybyBpbmZvcm1hdGlvbiIpCiAKLSAgICAgICAgdG90YWwgPSBsZW4oZGlzdHJvc19pbmZvKQotICAgICAgICBmb3IgaSwgZGkgaW4gZW51bWVyYXRlKGRpc3Ryb3NfaW5mbyk6CisgICAgICAgIHRvdGFsID0gbGVuKGluZGV4LmRpc3Ryb3MpCisgICAgICAgIGZvciBpLCBpZCBpbiBlbnVtZXJhdGUoaW5kZXguZGlzdHJvcyk6CiAgICAgICAgICAgICBkaXN0cm8sIGNyZWF0ZWQgPSBEaXN0cm8ub2JqZWN0cy5nZXRfb3JfY3JlYXRlKAotICAgICAgICAgICAgICAgIG5hbWU9ZGlbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICBuYW1lPWluZGV4LmRpc3Ryb3NbaWRdLm5hbWUsCiAgICAgICAgICAgICAgICAgbGF5ZXJfdmVyc2lvbj1MYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0KAotICAgICAgICAgICAgICAgICAgICBwaz1saV9sYXllcl9icmFuY2hfaWRfdG9fdG9hc3Rlcl9sdl9pZFtkaVsnbGF5ZXJicmFuY2gnXV0pKQotICAgICAgICAgICAgZGlzdHJvLnVwX2RhdGUgPSBkaVsndXBkYXRlZCddCi0gICAgICAgICAgICBkaXN0cm8ubmFtZSA9IGRpWyduYW1lJ10KLSAgICAgICAgICAgIGRpc3Ryby5kZXNjcmlwdGlvbiA9IGRpWydkZXNjcmlwdGlvbiddCisgICAgICAgICAgICAgICAgICAgIHBrPWxpX2xheWVyX2JyYW5jaF9pZF90b190b2FzdGVyX2x2X2lkW2luZGV4LmRpc3Ryb3NbaWRdLmxheWVyYnJhbmNoX2lkXSkpCisgICAgICAgICAgICBkaXN0cm8udXBfZGF0ZSA9IGluZGV4LmRpc3Ryb3NbaWRdLnVwZGF0ZWQKKyAgICAgICAgICAgIGRpc3Ryby5uYW1lID0gaW5kZXguZGlzdHJvc1tpZF0ubmFtZQorICAgICAgICAgICAgZGlzdHJvLmRlc2NyaXB0aW9uID0gaW5kZXguZGlzdHJvc1tpZF0uZGVzY3JpcHRpb24KICAgICAgICAgICAgIGRpc3Ryby5zYXZlKCkKICAgICAgICAgICAgIHNlbGYubWluaV9wcm9ncmVzcygiZGlzdHJvcyIsIGksIHRvdGFsKQogCiAgICAgICAgICMgdXBkYXRlIG1hY2hpbmVzCi0gICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBtYWNoaW5lIGluZm9ybWF0aW9uIikKLSAgICAgICAgbWFjaGluZXNfaW5mbyA9IF9nZXRfanNvbl9yZXNwb25zZSgKLSAgICAgICAgICAgIGFwaWxpbmtzWydtYWNoaW5lcyddICsgIj9maWx0ZXI9bGF5ZXJicmFuY2hfX2JyYW5jaF9fbmFtZTolcyIgJQotICAgICAgICAgICAgIk9SIi5qb2luKHdoaXRlbGlzdF9icmFuY2hfbmFtZXMpKQorICAgICAgICBsb2dnZXIuaW5mbygiUHJvY2Vzc2luZyBtYWNoaW5lIGluZm9ybWF0aW9uIikKIAotICAgICAgICB0b3RhbCA9IGxlbihtYWNoaW5lc19pbmZvKQotICAgICAgICBmb3IgaSwgbWkgaW4gZW51bWVyYXRlKG1hY2hpbmVzX2luZm8pOgorICAgICAgICB0b3RhbCA9IGxlbihpbmRleC5tYWNoaW5lcykKKyAgICAgICAgZm9yIGksIGlkIGluIGVudW1lcmF0ZShpbmRleC5tYWNoaW5lcyk6CiAgICAgICAgICAgICBtbywgY3JlYXRlZCA9IE1hY2hpbmUub2JqZWN0cy5nZXRfb3JfY3JlYXRlKAotICAgICAgICAgICAgICAgIG5hbWU9bWlbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICBuYW1lPWluZGV4Lm1hY2hpbmVzW2lkXS5uYW1lLAogICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb249TGF5ZXJfVmVyc2lvbi5vYmplY3RzLmdldCgKLSAgICAgICAgICAgICAgICAgICAgcGs9bGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWRbbWlbJ2xheWVyYnJhbmNoJ11dKSkKLSAgICAgICAgICAgIG1vLnVwX2RhdGUgPSBtaVsndXBkYXRlZCddCi0gICAgICAgICAgICBtby5uYW1lID0gbWlbJ25hbWUnXQotICAgICAgICAgICAgbW8uZGVzY3JpcHRpb24gPSBtaVsnZGVzY3JpcHRpb24nXQorICAgICAgICAgICAgICAgICAgICBwaz1saV9sYXllcl9icmFuY2hfaWRfdG9fdG9hc3Rlcl9sdl9pZFtpbmRleC5tYWNoaW5lc1tpZF0ubGF5ZXJicmFuY2hfaWRdKSkKKyAgICAgICAgICAgIG1vLnVwX2RhdGUgPSBpbmRleC5tYWNoaW5lc1tpZF0udXBkYXRlZAorICAgICAgICAgICAgbW8ubmFtZSA9IGluZGV4Lm1hY2hpbmVzW2lkXS5uYW1lCisgICAgICAgICAgICBtby5kZXNjcmlwdGlvbiA9IGluZGV4Lm1hY2hpbmVzW2lkXS5kZXNjcmlwdGlvbgogICAgICAgICAgICAgbW8uc2F2ZSgpCiAgICAgICAgICAgICBzZWxmLm1pbmlfcHJvZ3Jlc3MoIm1hY2hpbmVzIiwgaSwgdG90YWwpCiAKICAgICAgICAgIyB1cGRhdGUgcmVjaXBlczsgcGFnaW5hdGUgYnkgbGF5ZXIgdmVyc2lvbiAvIGxheWVyIGJyYW5jaAotICAgICAgICBsb2dnZXIuaW5mbygiRmV0Y2hpbmcgcmVjaXBlIGluZm9ybWF0aW9uIikKLSAgICAgICAgcmVjaXBlc19pbmZvID0gX2dldF9qc29uX3Jlc3BvbnNlKAotICAgICAgICAgICAgYXBpbGlua3NbJ3JlY2lwZXMnXSArICI/ZmlsdGVyPWxheWVyYnJhbmNoX19icmFuY2hfX25hbWU6JXMiICUKLSAgICAgICAgICAgICJPUiIuam9pbih3aGl0ZWxpc3RfYnJhbmNoX25hbWVzKSkKKyAgICAgICAgbG9nZ2VyLmluZm8oIlByb2Nlc3NpbmcgcmVjaXBlIGluZm9ybWF0aW9uIikKIAotICAgICAgICB0b3RhbCA9IGxlbihyZWNpcGVzX2luZm8pCi0gICAgICAgIGZvciBpLCByaSBpbiBlbnVtZXJhdGUocmVjaXBlc19pbmZvKToKKyAgICAgICAgdG90YWwgPSBsZW4oaW5kZXgucmVjaXBlcykKKyAgICAgICAgZm9yIGksIGlkIGluIGVudW1lcmF0ZShpbmRleC5yZWNpcGVzKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsdl9pZCA9IGxpX2xheWVyX2JyYW5jaF9pZF90b190b2FzdGVyX2x2X2lkW3JpWydsYXllcmJyYW5jaCddXQorICAgICAgICAgICAgICAgIGx2X2lkID0gbGlfbGF5ZXJfYnJhbmNoX2lkX3RvX3RvYXN0ZXJfbHZfaWRbaW5kZXgucmVjaXBlc1tpZF0ubGF5ZXJicmFuY2hfaWRdCiAgICAgICAgICAgICAgICAgbHYgPSBMYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0KHBrPWx2X2lkKQogCiAgICAgICAgICAgICAgICAgcm8sIGNyZWF0ZWQgPSBSZWNpcGUub2JqZWN0cy5nZXRfb3JfY3JlYXRlKAogICAgICAgICAgICAgICAgICAgICBsYXllcl92ZXJzaW9uPWx2LAotICAgICAgICAgICAgICAgICAgICBuYW1lPXJpWydwbiddCisgICAgICAgICAgICAgICAgICAgIG5hbWU9aW5kZXgucmVjaXBlc1tpZF0ucG4KICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgICAgICAgICByby5sYXllcl92ZXJzaW9uID0gbHYKLSAgICAgICAgICAgICAgICByby51cF9kYXRlID0gcmlbJ3VwZGF0ZWQnXQotICAgICAgICAgICAgICAgIHJvLm5hbWUgPSByaVsncG4nXQotICAgICAgICAgICAgICAgIHJvLnZlcnNpb24gPSByaVsncHYnXQotICAgICAgICAgICAgICAgIHJvLnN1bW1hcnkgPSByaVsnc3VtbWFyeSddCi0gICAgICAgICAgICAgICAgcm8uZGVzY3JpcHRpb24gPSByaVsnZGVzY3JpcHRpb24nXQotICAgICAgICAgICAgICAgIHJvLnNlY3Rpb24gPSByaVsnc2VjdGlvbiddCi0gICAgICAgICAgICAgICAgcm8ubGljZW5zZSA9IHJpWydsaWNlbnNlJ10KLSAgICAgICAgICAgICAgICByby5ob21lcGFnZSA9IHJpWydob21lcGFnZSddCi0gICAgICAgICAgICAgICAgcm8uYnVndHJhY2tlciA9IHJpWydidWd0cmFja2VyJ10KLSAgICAgICAgICAgICAgICByby5maWxlX3BhdGggPSByaVsnZmlsZXBhdGgnXSArICIvIiArIHJpWydmaWxlbmFtZSddCi0gICAgICAgICAgICAgICAgaWYgJ2luaGVyaXRzJyBpbiByaToKLSAgICAgICAgICAgICAgICAgICAgcm8uaXNfaW1hZ2UgPSAnaW1hZ2UnIGluIHJpWydpbmhlcml0cyddLnNwbGl0KCkKLSAgICAgICAgICAgICAgICBlbHNlOiAgIyB3b3JrYXJvdW5kIGZvciBvbGQgc3R5bGUgbGF5ZXIgaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgcm8uaXNfaW1hZ2UgPSAiLWltYWdlLSIgaW4gcmlbJ3BuJ10KKyAgICAgICAgICAgICAgICByby51cF9kYXRlID0gaW5kZXgucmVjaXBlc1tpZF0udXBkYXRlZAorICAgICAgICAgICAgICAgIHJvLm5hbWUgPSBpbmRleC5yZWNpcGVzW2lkXS5wbgorICAgICAgICAgICAgICAgIHJvLnZlcnNpb24gPSBpbmRleC5yZWNpcGVzW2lkXS5wdgorICAgICAgICAgICAgICAgIHJvLnN1bW1hcnkgPSBpbmRleC5yZWNpcGVzW2lkXS5zdW1tYXJ5CisgICAgICAgICAgICAgICAgcm8uZGVzY3JpcHRpb24gPSBpbmRleC5yZWNpcGVzW2lkXS5kZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgIHJvLnNlY3Rpb24gPSBpbmRleC5yZWNpcGVzW2lkXS5zZWN0aW9uCisgICAgICAgICAgICAgICAgcm8ubGljZW5zZSA9IGluZGV4LnJlY2lwZXNbaWRdLmxpY2Vuc2UKKyAgICAgICAgICAgICAgICByby5ob21lcGFnZSA9IGluZGV4LnJlY2lwZXNbaWRdLmhvbWVwYWdlCisgICAgICAgICAgICAgICAgcm8uYnVndHJhY2tlciA9IGluZGV4LnJlY2lwZXNbaWRdLmJ1Z3RyYWNrZXIKKyAgICAgICAgICAgICAgICByby5maWxlX3BhdGggPSBpbmRleC5yZWNpcGVzW2lkXS5mdWxscGF0aAorICAgICAgICAgICAgICAgIHJvLmlzX2ltYWdlID0gJ2ltYWdlJyBpbiBpbmRleC5yZWNpcGVzW2lkXS5pbmhlcml0cy5zcGxpdCgpCiAgICAgICAgICAgICAgICAgcm8uc2F2ZSgpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkZhaWxlZCBzYXZpbmcgcmVjaXBlICVzIiwgZSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE4X3Byb2plY3Rfc3BlY2lmaWMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxOF9wcm9qZWN0X3NwZWNpZmljLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NGVjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxOF9wcm9qZWN0X3NwZWNpZmljLnB5CkBAIC0wLDAgKzEsMjggQEAKKyMgLSotIGNvZGluZzogdXRmLTggLSotCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKKworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworCitjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgorCisgICAgZGVwZW5kZW5jaWVzID0gWworICAgICAgICAoJ29ybScsICcwMDE3X2Rpc3Ryb19jbG9uZScpLAorICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBbCisgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCisgICAgICAgICAgICBtb2RlbF9uYW1lPSdQcm9qZWN0JywKKyAgICAgICAgICAgIG5hbWU9J2J1aWxkZGlyJywKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5UZXh0RmllbGQoKSwKKyAgICAgICAgKSwKKyAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKKyAgICAgICAgICAgIG1vZGVsX25hbWU9J1Byb2plY3QnLAorICAgICAgICAgICAgbmFtZT0nbWVyZ2VkX2F0dHInLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQorICAgICAgICApLAorICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nQnVpbGQnLAorICAgICAgICAgICAgbmFtZT0ncHJvZ3Jlc3NfaXRlbScsCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9NDApCisgICAgICAgICksCisgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQppbmRleCA0Yjc3ZThmLi43NzIwMjkwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21vZGVscy5weQpAQCAtMTIxLDggKzEyMSwxNSBAQAogCiAKIGNsYXNzIFByb2plY3RNYW5hZ2VyKG1vZGVscy5NYW5hZ2VyKToKLSAgICBkZWYgY3JlYXRlX3Byb2plY3Qoc2VsZiwgbmFtZSwgcmVsZWFzZSk6Ci0gICAgICAgIGlmIHJlbGVhc2UgaXMgbm90IE5vbmU6CisgICAgZGVmIGNyZWF0ZV9wcm9qZWN0KHNlbGYsIG5hbWUsIHJlbGVhc2UsIGV4aXN0aW5nX3Byb2plY3Q9Tm9uZSk6CisgICAgICAgIGlmIGV4aXN0aW5nX3Byb2plY3QgYW5kIChyZWxlYXNlIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgIHByaiA9IGV4aXN0aW5nX3Byb2plY3QKKyAgICAgICAgICAgIHByai5iaXRiYWtlX3ZlcnNpb24gPSByZWxlYXNlLmJpdGJha2VfdmVyc2lvbgorICAgICAgICAgICAgcHJqLnJlbGVhc2UgPSByZWxlYXNlCisgICAgICAgICAgICAjIERlbGV0ZSB0aGUgcHJldmlvdXMgUHJvamVjdExheWVyIG1hcHBpbmdzCisgICAgICAgICAgICBmb3IgcGwgaW4gUHJvamVjdExheWVyLm9iamVjdHMuZmlsdGVyKHByb2plY3Q9cHJqKToKKyAgICAgICAgICAgICAgICBwbC5kZWxldGUoKQorICAgICAgICBlbGlmIHJlbGVhc2UgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBwcmogPSBzZWxmLm1vZGVsKG5hbWU9bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0YmFrZV92ZXJzaW9uPXJlbGVhc2UuYml0YmFrZV92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlPXJlbGVhc2UpCkBAIC0xMzAsMTUgKzEzNywxNCBAQAogICAgICAgICAgICAgcHJqID0gc2VsZi5tb2RlbChuYW1lPW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdGJha2VfdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlPU5vbmUpCi0KICAgICAgICAgcHJqLnNhdmUoKQogCiAgICAgICAgIGZvciBkZWZhdWx0Y29uZiBpbiBUb2FzdGVyU2V0dGluZy5vYmplY3RzLmZpbHRlcigKICAgICAgICAgICAgICAgICBuYW1lX19zdGFydHN3aXRoPSJERUZDT05GXyIpOgogICAgICAgICAgICAgbmFtZSA9IGRlZmF1bHRjb25mLm5hbWVbODpdCi0gICAgICAgICAgICBQcm9qZWN0VmFyaWFibGUub2JqZWN0cy5jcmVhdGUocHJvamVjdD1wcmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPWRlZmF1bHRjb25mLnZhbHVlKQorICAgICAgICAgICAgcHYsY3JlYXRlID0gUHJvamVjdFZhcmlhYmxlLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShwcm9qZWN0PXByaixuYW1lPW5hbWUpCisgICAgICAgICAgICBwdi52YWx1ZSA9IGRlZmF1bHRjb25mLnZhbHVlCisgICAgICAgICAgICBwdi5zYXZlKCkKIAogICAgICAgICBpZiByZWxlYXNlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcHJqCkBAIC0xOTcsNiArMjAzLDExIEBACiAgICAgdXNlcl9pZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlKQogICAgIG9iamVjdHMgPSBQcm9qZWN0TWFuYWdlcigpCiAKKyAgICAjIGJ1aWxkIGRpcmVjdG9yeSBvdmVycmlkZSAoZS5nLiBpbXBvcnRlZCkKKyAgICBidWlsZGRpciA9IG1vZGVscy5UZXh0RmllbGQoKQorICAgICMgbWVyZ2UgdGhlIFRvYXN0ZXIgY29uZmlndXJlIGF0dHJpYnV0ZXMgZGlyZWN0bHkgaW50byB0aGUgc3RhbmRhcmQgY29uZiBmaWxlcworICAgIG1lcmdlZF9hdHRyID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQorCiAgICAgIyBzZXQgdG8gVHJ1ZSBmb3IgdGhlIHByb2plY3Qgd2hpY2ggaXMgdGhlIGRlZmF1bHQgY29udGFpbmVyCiAgICAgIyBmb3IgYnVpbGRzIGluaXRpYXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIGV0Yy4KICAgICBpc19kZWZhdWx0PSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpCkBAIC0zMDUsNiArMzE2LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gbGF5ZXJfdmVyc2lvbnMKIAogCisgICAgZGVmIGdldF9kZWZhdWx0X2ltYWdlX3JlY2lwZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucHJvamVjdHZhcmlhYmxlX3NldC5nZXQobmFtZT0iREVGQVVMVF9JTUFHRSIpLnZhbHVlCisgICAgICAgIGV4Y2VwdCAoUHJvamVjdFZhcmlhYmxlLkRvZXNOb3RFeGlzdCxJbmRleEVycm9yKToKKyAgICAgICAgICAgIHJldHVybiBOb25lOworCisgICAgZGVmIGdldF9pc19uZXcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmdldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfSVNORVcpCisKICAgICBkZWYgZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcyhzZWxmKToKICAgICAgICAgIiIiIFJldHVybnMgUXVlcnlTZXQgb2YgYWxsIE1hY2hpbmVzIHdoaWNoIGFyZSBwcm92aWRlZCBieSB0aGUKICAgICAgICAgTGF5ZXJzIGN1cnJlbnRseSBhZGRlZCB0byB0aGUgUHJvamVjdCAiIiIKQEAgLTM1Myw2ICszNzMsMzIgQEAKIAogICAgICAgICByZXR1cm4gcXVlcnlzZXQKIAorICAgICMgUHJvamVjdCBTcGVjaWZpYyBzdGF0dXMgbWFuYWdlbWVudAorICAgIFBST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTID0gJ0lOVEVSTkFMX1BST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTJworICAgIFBST0pFQ1RfU1BFQ0lGSUNfQ0FMTEJBQ0sgPSAnSU5URVJOQUxfUFJPSkVDVF9TUEVDSUZJQ19DQUxMQkFDSycKKyAgICBQUk9KRUNUX1NQRUNJRklDX0lTTkVXID0gJ0lOVEVSTkFMX1BST0pFQ1RfU1BFQ0lGSUNfSVNORVcnCisgICAgUFJPSkVDVF9TUEVDSUZJQ19ERUZBVUxUSU1BR0UgPSAnUFJPSkVDVF9TUEVDSUZJQ19ERUZBVUxUSU1BR0UnCisgICAgUFJPSkVDVF9TUEVDSUZJQ19OT05FID0gJycKKyAgICBQUk9KRUNUX1NQRUNJRklDX05FVyA9ICcxJworICAgIFBST0pFQ1RfU1BFQ0lGSUNfRURJVCA9ICcyJworICAgIFBST0pFQ1RfU1BFQ0lGSUNfQ0xPTklORyA9ICczJworICAgIFBST0pFQ1RfU1BFQ0lGSUNfQ0xPTklOR19TVUNDRVNTID0gJzQnCisgICAgUFJPSkVDVF9TUEVDSUZJQ19DTE9OSU5HX0ZBSUwgPSAnNScKKworICAgIGRlZiBnZXRfdmFyaWFibGUoc2VsZix2YXJpYWJsZSxkZWZhdWx0X3ZhbHVlID0gJycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wcm9qZWN0dmFyaWFibGVfc2V0LmdldChuYW1lPXZhcmlhYmxlKS52YWx1ZQorICAgICAgICBleGNlcHQgKFByb2plY3RWYXJpYWJsZS5Eb2VzTm90RXhpc3QsSW5kZXhFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdF92YWx1ZQorCisgICAgZGVmIHNldF92YXJpYWJsZShzZWxmLHZhcmlhYmxlLHZhbHVlKToKKyAgICAgICAgcHYsY3JlYXRlID0gUHJvamVjdFZhcmlhYmxlLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShwcm9qZWN0ID0gc2VsZiwgbmFtZSA9IHZhcmlhYmxlKQorICAgICAgICBwdi52YWx1ZSA9IHZhbHVlCisgICAgICAgIHB2LnNhdmUoKQorCisgICAgZGVmIGdldF9kZWZhdWx0X2ltYWdlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5nZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0RFRkFVTFRJTUFHRSkKKwogICAgIGRlZiBzY2hlZHVsZV9idWlsZChzZWxmKToKIAogICAgICAgICBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QsIEJSVGFyZ2V0LCBCUkxheWVyCkBAIC00NTksNiArNTA1LDkgQEAKICAgICAjIG51bWJlciBvZiByZXBvcyBjbG9uZWQgc28gZmFyIGZvciB0aGlzIGJ1aWxkIChkZWZhdWx0IG9mZikKICAgICByZXBvc19jbG9uZWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MSkKIAorICAgICMgSGludCBvbiBjdXJyZW50IHByb2dyZXNzIGl0ZW0KKyAgICBwcm9ncmVzc19pdGVtID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTQwKQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBnZXRfcmVjZW50KHByb2plY3Q9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMTcwMSw4ICsxNzUwLDggQEAKICAgICAgICAgaWYgYmFzZV9yZWNpcGVfcGF0aDoKICAgICAgICAgICAgIGJhc2VfcmVjaXBlID0gb3BlbihiYXNlX3JlY2lwZV9wYXRoLCAncicpLnJlYWQoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiQmFzZWQgb24gcmVjaXBlIGZpbGUgbm90IGZvdW5kOiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlX3JlY2lwZV9wYXRoKQorICAgICAgICAgICAgIyBQYXNzIGJhY2sgTm9uZSB0byB0cmlnZ2VyIGVycm9yIG1lc3NhZ2UgdG8gdXNlcgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICAjIEFkZCBhIHNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgcmVjaXBlIHdlIGhhdmUgYmFzZWQgYSBjdXN0b20gaW1hZ2UKICAgICAgICAgIyByZWNpcGUgb24gcmVxdWlyZXMgYW5vdGhlciByZWNpcGUuCkBAIC0xODI4LDcgKzE4NzcsNyBAQAogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKIAogICAgIGRlZiBnZXRfdmNzX2Rpc3Ryb19maWxlX2xpbmtfdXJsKHNlbGYpOgotICAgICAgICBwYXRoID0gc2VsZi5uYW1lKycuY29uZicKKyAgICAgICAgcGF0aCA9ICdjb25mL2Rpc3Ryby8lcy5jb25mJyAlIHNlbGYubmFtZQogICAgICAgICByZXR1cm4gc2VsZi5sYXllcl92ZXJzaW9uLmdldF92Y3NfZmlsZV9saW5rX3VybChwYXRoKQogCiAgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5CmluZGV4IGFiNmJhNjkuLjU2NGQ1OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKQEAgLTIyLDcgKzIyLDkgQEAKIGltcG9ydCByZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBqc29uCitpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ291bnRlcgorZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCiAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdCwgUHJvamVjdFRhcmdldCwgQnVpbGQsIExheWVyX1ZlcnNpb24KIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeSwgTGF5ZXJTb3VyY2UsIFByb2plY3RMYXllcgpAQCAtMzgsNiArNDAsMTggQEAKIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUSwgRgogZnJvbSBkamFuZ28uZGIgaW1wb3J0IEVycm9yCiBmcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBmaWx0ZXJlZF9maWxlc2l6ZWZvcm1hdAorZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCitpbXBvcnQgcHl0egorCisjIGRldmVsb3BtZW50L2RlYnVnZ2luZyBzdXBwb3J0Cit2ZXJib3NlID0gMgorZGVmIF9sb2cobXNnKToKKyAgICBpZiAxID09IHZlcmJvc2U6CisgICAgICAgIHByaW50KG1zZykKKyAgICBlbGlmIDIgPT0gdmVyYm9zZToKKyAgICAgICAgZjE9b3BlbignL3RtcC90b2FzdGVyLmxvZycsICdhJykKKyAgICAgICAgZjEud3JpdGUoInwiICsgbXNnICsgInxcbiIgKQorICAgICAgICBmMS5jbG9zZSgpCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ0b2FzdGVyIikKIApAQCAtMTM3LDYgKzE1MSwxMzAgQEAKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKIAorY2xhc3MgWGhyUHJvamVjdFVwZGF0ZShWaWV3KToKKworICAgIGRlZiBnZXQoc2VsZiwgcmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgpCisKKyAgICBkZWYgcG9zdChzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgICBQcm9qZWN0IFVwZGF0ZQorCisgICAgICAgICAgRW50cnkgcG9pbnQ6IC94aHJfcHJvamVjdHVwZGF0ZS88cHJvamVjdF9pZD4KKyAgICAgICAgICBNZXRob2Q6IFBPU1QKKworICAgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAgIHBpZDogcGlkIG9mIHByb2plY3QgdG8gdXBkYXRlCisKKyAgICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgICB7ImVycm9yIjogIm9rIn0KKyAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgIHsiZXJyb3IiOiA8ZXJyb3IgbWVzc2FnZT59CisgICAgICAgICIiIgorCisgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPWt3YXJnc1sncGlkJ10pCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiUHJvamVjdFVwZGF0ZUNhbGxiYWNrOnByb2plY3QucGs9JWQscHJvamVjdC5idWlsZGRpcj0lcyIgJSAocHJvamVjdC5wayxwcm9qZWN0LmJ1aWxkZGlyKSkKKworICAgICAgICBpZiAnZG9fdXBkYXRlJyBpbiByZXF1ZXN0LlBPU1Q6CisKKyAgICAgICAgICAgICMgRXh0cmFjdCBhbnkgZGVmYXVsdCBpbWFnZSByZWNpcGUKKyAgICAgICAgICAgIGlmICdkZWZhdWx0X2ltYWdlJyBpbiByZXF1ZXN0LlBPU1Q6CisgICAgICAgICAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0RFRkFVTFRJTUFHRSxzdHIocmVxdWVzdC5QT1NUWydkZWZhdWx0X2ltYWdlJ10pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfREVGQVVMVElNQUdFLCcnKQorCisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIlByb2plY3RVcGRhdGVDYWxsYmFjazpDaGFpbiB0byB0aGUgYnVpbGQgcmVxdWVzdCIpCisKKyAgICAgICAgICAgICMgQ2hhaW4gdG8gdGhlIGJ1aWxkIHJlcXVlc3QKKyAgICAgICAgICAgIHhockJ1aWxkUmVxdWVzdCA9IFhockJ1aWxkUmVxdWVzdCgpCisgICAgICAgICAgICByZXR1cm4geGhyQnVpbGRSZXF1ZXN0LnBvc3QocmVxdWVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCJFUlJPUjpYaHJQcm9qZWN0VXBkYXRlIikKKyAgICAgICAgcmVzcG9uc2UgPSBIdHRwUmVzcG9uc2UoKQorICAgICAgICByZXNwb25zZS5zdGF0dXNfY29kZSA9IDUwMAorICAgICAgICByZXR1cm4gcmVzcG9uc2UKKworY2xhc3MgWGhyU2V0RGVmYXVsdEltYWdlVXJsKFZpZXcpOgorCisgICAgZGVmIGdldChzZWxmLCByZXF1ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCkKKworICAgIGRlZiBwb3N0KHNlbGYsIHJlcXVlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICAgIFByb2plY3QgVXBkYXRlCisKKyAgICAgICAgICBFbnRyeSBwb2ludDogL3hocl9zZXRkZWZhdWx0aW1hZ2UvPHByb2plY3RfaWQ+CisgICAgICAgICAgTWV0aG9kOiBQT1NUCisKKyAgICAgICAgICBBcmdzOgorICAgICAgICAgICAgICBwaWQ6IHBpZCBvZiBwcm9qZWN0IHRvIHVwZGF0ZSBkZWZhdWx0IGltYWdlCisKKyAgICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgICB7ImVycm9yIjogIm9rIn0KKyAgICAgICAgICAgIG9yCisgICAgICAgICAgICAgIHsiZXJyb3IiOiA8ZXJyb3IgbWVzc2FnZT59CisgICAgICAgICIiIgorCisgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPWt3YXJnc1sncGlkJ10pCisgICAgICAgIGxvZ2dlci5kZWJ1ZygiWGhyU2V0RGVmYXVsdEltYWdlVXJsOnByb2plY3QucGs9JWQiICUgKHByb2plY3QucGspKQorCisgICAgICAgICMgc2V0IGFueSBkZWZhdWx0IGltYWdlIHJlY2lwZQorICAgICAgICBpZiAndGFyZ2V0cycgaW4gcmVxdWVzdC5QT1NUOgorICAgICAgICAgICAgZGVmYXVsdF90YXJnZXQgPSBzdHIocmVxdWVzdC5QT1NUWyd0YXJnZXRzJ10pCisgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfREVGQVVMVElNQUdFLGRlZmF1bHRfdGFyZ2V0KQorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJYaHJTZXREZWZhdWx0SW1hZ2VVcmwscHJvamVjdC5waz0lZCxwcm9qZWN0LmJ1aWxkZGlyPSVzIiAlIChwcm9qZWN0LnBrLHByb2plY3QuYnVpbGRkaXIpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yX3Jlc3BvbnNlKCdvaycpCisKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkVSUk9SOlhoclNldERlZmF1bHRJbWFnZVVybCIpCisgICAgICAgIHJlc3BvbnNlID0gSHR0cFJlc3BvbnNlKCkKKyAgICAgICAgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPSA1MDAKKyAgICAgICAgcmV0dXJuIHJlc3BvbnNlCisKKworIworIyBMYXllciBNYW5hZ2VtZW50CisjCisjIFJ1bGVzIGZvciAnbG9jYWxfc291cmNlX2RpcicgbGF5ZXJzCisjICAqIExheWVycyBtdXN0IGhhdmUgYSB1bmlxdWUgbmFtZSBpbiB0aGUgTGF5ZXJzIHRhYmxlCisjICAqIEEgJ2xvY2FsX3NvdXJjZV9kaXInIGxheWVyIGlzIHN1cHBvc2VkIHRvIGJlIHNoYXJlZAorIyAgICBieSBhbGwgcHJvamVjdHMgdGhhdCB1c2UgaXQsIHNvIHRoYXQgaXQgY2FuIGhhdmUgdGhlCisjICAgIHNhbWUgbG9naWNhbCBuYW1lCisjICAqIEVhY2ggcHJvamVjdCB0aGF0IHVzZXMgYSBsYXllciB3aWxsIGhhdmUgaXRzIG93bgorIyAgICBMYXllclZlcnNpb24gYW5kIFByb2plY3QgTGF5ZXIgZm9yIGl0CisjICAqIER1cmluZyB0aGUgUGFyb2plY3QgZGVsZXRlIHByb2Nlc3MsIHdoZW4gdGhlIGxhc3QKKyMgICAgTGF5ZXJWZXJzaW9uIGZvciBhICdsb2NhbF9zb3VyY2VfZGlyJyBsYXllciBpcyBkZWxldGVkCisjICAgIHRoZW4gdGhlIExheWVyIHJlY29yZCBpcyBkZWxldGVkIHRvIHJlbW92ZSBvcnBoYW5zCisjCisKK2RlZiBzY2FuX2xheWVyX2NvbnRlbnQobGF5ZXIsbGF5ZXJfdmVyc2lvbik6CisgICAgIyBpZiB0aGlzIGlzIGEgbG9jYWwgbGF5ZXIgZGlyZWN0b3J5LCB3ZSBjYW4gaW1tZWRpYXRlbHkgc2NhbiBpdHMgY29udGVudAorICAgIGlmIGxheWVyLmxvY2FsX3NvdXJjZV9kaXI6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcmVjaXBlcy0qLyovKi5iYgorICAgICAgICAgICAgY21kID0gJyVzICVzJyAlICgnbHMnLCBvcy5wYXRoLmpvaW4obGF5ZXIubG9jYWxfc291cmNlX2RpciwncmVjaXBlcy0qLyovKi5iYicpKQorICAgICAgICAgICAgcmVjaXBlc19saXN0ID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHNoZWxsPVRydWUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5zdGRvdXQucmVhZCgpCisgICAgICAgICAgICByZWNpcGVzX2xpc3QgPSByZWNpcGVzX2xpc3QuZGVjb2RlKCJ1dGYtOCIpLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIHJlY2lwZXNfbGlzdCBhbmQgJ05vIHN1Y2gnIG5vdCBpbiByZWNpcGVzX2xpc3Q6CisgICAgICAgICAgICAgICAgZm9yIHJlY2lwZSBpbiByZWNpcGVzX2xpc3Quc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV9wYXRoID0gcmVjaXBlW3JlY2lwZS5yZmluZCgncmVjaXBlcy0nKTpdCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lID0gcmVjaXBlW3JlY2lwZS5yZmluZCgnLycpKzE6XS5yZXBsYWNlKCcuYmInLCcnKQorICAgICAgICAgICAgICAgICAgICByZWNpcGVfdmVyID0gcmVjaXBlX25hbWUucmZpbmQoJ18nKQorICAgICAgICAgICAgICAgICAgICBpZiByZWNpcGVfdmVyID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZV9uYW1lID0gcmVjaXBlX25hbWVbMDpyZWNpcGVfdmVyXQorICAgICAgICAgICAgICAgICAgICBpZiByZWNpcGVfbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvLCBjcmVhdGVkID0gUmVjaXBlLm9iamVjdHMuZ2V0X29yX2NyZWF0ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcl92ZXJzaW9uPWxheWVyX3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1yZWNpcGVfbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3JlYXRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByby5maWxlX3BhdGggPSByZWNpcGVfcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvLnN1bW1hcnkgPSAnUmVjaXBlICVzIGZyb20gbGF5ZXIgJXMnICUgKHJlY2lwZV9uYW1lLGxheWVyLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm8uZGVzY3JpcHRpb24gPSByby5zdW1tYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICByby5zYXZlKCkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiRVJST1I6c2Nhbl9sYXllcl9jb250ZW50OiAlcyIgJSBlKQorCiBjbGFzcyBYaHJMYXllcihWaWV3KToKICAgICAiIiIgRGVsZXRlLCBHZXQsIEFkZCBhbmQgVXBkYXRlIExheWVyIGluZm9ybWF0aW9uCiAKQEAgLTI2NSw2ICs0MDMsNyBAQAogICAgICAgICAgICAgKGNzdildCiAKICAgICAgICAgIiIiCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9a3dhcmdzWydwaWQnXSkKIApAQCAtMjg1LDcgKzQyNCwxMyBAQAogICAgICAgICAgICAgaWYgbGF5ZXJfZGF0YVsnbmFtZSddIGluIGV4aXN0aW5nX2xheWVyczoKICAgICAgICAgICAgICAgICByZXR1cm4gSnNvblJlc3BvbnNlKHsiZXJyb3IiOiAibGF5ZXItbmFtZS1leGlzdHMifSkKIAotICAgICAgICAgICAgbGF5ZXIgPSBMYXllci5vYmplY3RzLmNyZWF0ZShuYW1lPWxheWVyX2RhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIGlmICgnbG9jYWxfc291cmNlX2RpcicgaW4gbGF5ZXJfZGF0YSk6CisgICAgICAgICAgICAgICAgIyBMb2NhbCBsYXllciBjYW4gYmUgc2hhcmVkIGFjcm9zcyBwcm9qZWN0cy4gVGhleSBoYXZlIG5vICdyZWxlYXNlJworICAgICAgICAgICAgICAgICMgYW5kIGFyZSBub3QgaW5jbHVkZWQgaW4gZ2V0X2FsbF9jb21wYXRpYmxlX2xheWVyX3ZlcnNpb25zKCkgYWJvdmUKKyAgICAgICAgICAgICAgICBsYXllcixjcmVhdGVkID0gTGF5ZXIub2JqZWN0cy5nZXRfb3JfY3JlYXRlKG5hbWU9bGF5ZXJfZGF0YVsnbmFtZSddKQorICAgICAgICAgICAgICAgIF9sb2coIkxvY2FsIExheWVyIGNyZWF0ZWQ9JXMiICUgY3JlYXRlZCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGF5ZXIgPSBMYXllci5vYmplY3RzLmNyZWF0ZShuYW1lPWxheWVyX2RhdGFbJ25hbWUnXSkKIAogICAgICAgICAgICAgbGF5ZXJfdmVyc2lvbiA9IExheWVyX1ZlcnNpb24ub2JqZWN0cy5jcmVhdGUoCiAgICAgICAgICAgICAgICAgbGF5ZXI9bGF5ZXIsCkBAIC0yOTMsNyArNDM4LDcgQEAKICAgICAgICAgICAgICAgICBsYXllcl9zb3VyY2U9TGF5ZXJTb3VyY2UuVFlQRV9JTVBPUlRFRCkKIAogICAgICAgICAgICAgIyBMb2NhbCBsYXllcgotICAgICAgICAgICAgaWYgKCdsb2NhbF9zb3VyY2VfZGlyJyBpbiBsYXllcl9kYXRhKSBhbmQgbGF5ZXIubG9jYWxfc291cmNlX2RpcjoKKyAgICAgICAgICAgIGlmICgnbG9jYWxfc291cmNlX2RpcicgaW4gbGF5ZXJfZGF0YSk6ICMjIyBhbmQgbGF5ZXIubG9jYWxfc291cmNlX2RpcjoKICAgICAgICAgICAgICAgICBsYXllci5sb2NhbF9zb3VyY2VfZGlyID0gbGF5ZXJfZGF0YVsnbG9jYWxfc291cmNlX2RpciddCiAgICAgICAgICAgICAjIGdpdCBsYXllcgogICAgICAgICAgICAgZWxpZiAndmNzX3VybCcgaW4gbGF5ZXJfZGF0YToKQEAgLTMyNSw2ICs0NzAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF5ZXJkZXRhaWx1cmwnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcl9kZXAuZ2V0X2RldGFpbHNwYWdlX3VybChwcm9qZWN0LnBrKX0pCiAKKyAgICAgICAgICAgICMgU2NhbiB0aGUgbGF5ZXIncyBjb250ZW50IGFuZCB1cGRhdGUgY29tcG9uZW50cworICAgICAgICAgICAgc2Nhbl9sYXllcl9jb250ZW50KGxheWVyLGxheWVyX3ZlcnNpb24pCisKICAgICAgICAgZXhjZXB0IExheWVyX1ZlcnNpb24uRG9lc05vdEV4aXN0OgogICAgICAgICAgICAgcmV0dXJuIGVycm9yX3Jlc3BvbnNlKCJsYXllci1kZXAtbm90LWZvdW5kIikKICAgICAgICAgZXhjZXB0IFByb2plY3QuRG9lc05vdEV4aXN0OgpAQCAtNTI5LDcgKzY3NywxMyBAQAogICAgICAgICByZWNpcGVfcGF0aCA9IG9zLnBhdGguam9pbihsYXllcnBhdGgsICJyZWNpcGVzIiwgIiVzLmJiIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5uYW1lKQogICAgICAgICB3aXRoIG9wZW4ocmVjaXBlX3BhdGgsICJ3IikgYXMgcmVjaXBlZjoKLSAgICAgICAgICAgIHJlY2lwZWYud3JpdGUocmVjaXBlLmdlbmVyYXRlX3JlY2lwZV9maWxlX2NvbnRlbnRzKCkpCisgICAgICAgICAgICBjb250ZW50ID0gcmVjaXBlLmdlbmVyYXRlX3JlY2lwZV9maWxlX2NvbnRlbnRzKCkKKyAgICAgICAgICAgIGlmIG5vdCBjb250ZW50OgorICAgICAgICAgICAgICAgICMgRGVsZXRlIHRoaXMgaW5jb21wbGV0ZSBpbWFnZSByZWNpcGUgb2JqZWN0CisgICAgICAgICAgICAgICAgcmVjaXBlLmRlbGV0ZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yX3Jlc3BvbnNlKCJyZWNpcGUtcGFyZW50LW5vdC1leGlzdCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlY2lwZWYud3JpdGUocmVjaXBlLmdlbmVyYXRlX3JlY2lwZV9maWxlX2NvbnRlbnRzKCkpCiAKICAgICAgICAgcmV0dXJuIEpzb25SZXNwb25zZSgKICAgICAgICAgICAgIHsiZXJyb3IiOiAib2siLApAQCAtMTAxNCw4ICsxMTY4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHN0YXRlPUJ1aWxkUmVxdWVzdC5SRVFfSU5QUk9HUkVTUyk6CiAgICAgICAgICAgICAgICAgWGhyQnVpbGRSZXF1ZXN0LmNhbmNlbF9idWlsZChicikKIAorICAgICAgICAgICAgIyBnYXRoZXIgcG90ZW50aWFsIG9ycGhhbmVkIGxvY2FsIGxheWVycyBhdHRhY2hlZCB0byB0aGlzIHByb2plY3QKKyAgICAgICAgICAgIHByb2plY3RfbG9jYWxfbGF5ZXJfbGlzdCA9IFtdCisgICAgICAgICAgICBmb3IgcGwgaW4gUHJvamVjdExheWVyLm9iamVjdHMuZmlsdGVyKHByb2plY3Q9cHJvamVjdCk6CisgICAgICAgICAgICAgICAgaWYgcGwubGF5ZXJjb21taXQubGF5ZXJfc291cmNlID09IExheWVyU291cmNlLlRZUEVfSU1QT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIHByb2plY3RfbG9jYWxfbGF5ZXJfbGlzdC5hcHBlbmQocGwubGF5ZXJjb21taXQubGF5ZXIpCisKKyAgICAgICAgICAgICMgZGVlcCBkZWxldGUgdGhlIHByb2plY3QgYW5kIGl0cyBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgIHByb2plY3QuZGVsZXRlKCkKIAorICAgICAgICAgICAgIyBkZWxldGUgYW55IGxvY2FsIGxheWVycyBub3cgb3JwaGFuZWQKKyAgICAgICAgICAgIF9sb2coIkxBWUVSX09SUEhBTl9DSEVDSzpDaGVjayBmb3Igb3JwaGFuZWQgbGF5ZXJzIikKKyAgICAgICAgICAgIGZvciBsYXllciBpbiBwcm9qZWN0X2xvY2FsX2xheWVyX2xpc3Q6CisgICAgICAgICAgICAgICAgbGF5ZXJfcmVmcyA9IExheWVyX1ZlcnNpb24ub2JqZWN0cy5maWx0ZXIobGF5ZXI9bGF5ZXIpCisgICAgICAgICAgICAgICAgX2xvZygiTEFZRVJfT1JQSEFOX0NIRUNLOlJlZiBDb3VudCBmb3IgJyVzJyA9ICVkIiAlIChsYXllci5uYW1lLGxlbihsYXllcl9yZWZzKSkpCisgICAgICAgICAgICAgICAgaWYgMCA9PSBsZW4obGF5ZXJfcmVmcyk6CisgICAgICAgICAgICAgICAgICAgIF9sb2coIkxBWUVSX09SUEhBTl9DSEVDSzpERUxFVEUgb3JwYWhuZWQgJyVzJyIgJSAobGF5ZXIubmFtZSkpCisgICAgICAgICAgICAgICAgICAgIExheWVyLm9iamVjdHMuZmlsdGVyKHBrPWxheWVyLmlkKS5kZWxldGUoKQorCiAgICAgICAgIGV4Y2VwdCBQcm9qZWN0LkRvZXNOb3RFeGlzdDoKICAgICAgICAgICAgIHJldHVybiBlcnJvcl9yZXNwb25zZSgiUHJvamVjdCAlcyBkb2VzIG5vdCBleGlzdCIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sncHJvamVjdF9pZCddKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL2xheWVyQnRuLmpzIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL2xheWVyQnRuLmpzCmluZGV4IDlmOWVkYTEuLmE1YTY1NjMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9sYXllckJ0bi5qcworKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbGF5ZXJCdG4uanMKQEAgLTY3LDYgKzY3LDE4IEBACiAgICAgICB9KTsKICAgfSk7CiAKKyAgJCgidGQgLnNldC1kZWZhdWx0LXJlY2lwZS1idG4iKS51bmJpbmQoJ2NsaWNrJyk7CisgICQoInRkIC5zZXQtZGVmYXVsdC1yZWNpcGUtYnRuIikuY2xpY2soZnVuY3Rpb24oZSl7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgIHZhciByZWNpcGUgPSAkKHRoaXMpLmRhdGEoJ3JlY2lwZS1uYW1lJyk7CisKKyAgICBsaWJ0b2FzdGVyLnNldERlZmF1bHRJbWFnZShudWxsLCByZWNpcGUsCisgICAgICBmdW5jdGlvbigpeworICAgICAgICAvKiBTdWNjZXNzICovCisgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGxpYnRvYXN0ZXIuY3R4LnByb2plY3RTcGVjaWZpY1BhZ2VVcmwpOworICAgICAgfSk7CisgIH0pOworCiAKICAgJCgiLmN1c3RvbWlzZS1idG4iKS51bmJpbmQoJ2NsaWNrJyk7CiAgICQoIi5jdXN0b21pc2UtYnRuIikuY2xpY2soZnVuY3Rpb24oZSl7CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbGlidG9hc3Rlci5qcyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9saWJ0b2FzdGVyLmpzCmluZGV4IDZmOWI1ZDAuLmYyYzQ1YzggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9saWJ0b2FzdGVyLmpzCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9saWJ0b2FzdGVyLmpzCkBAIC0yNzUsNyArMjc1LDggQEAKIAogICBmdW5jdGlvbiBfYWRkUm1MYXllcihsYXllck9iaiwgYWRkLCBkb25lQ2IpewogICAgIGlmIChsYXllck9iai54aHJMYXllclVybCA9PT0gdW5kZWZpbmVkKXsKLSAgICAgIHRocm93KCJ4aHJMYXllclVybCBpcyB1bmRlZmluZWQiKQorICAgICAgYWxlcnQoIkVSUk9SOiBtaXNzaW5nIHhockxheWVyVXJsIG9iamVjdC4gUGxlYXNlIGZpbGUgYSBidWcuIik7CisgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGFkZCA9PT0gdHJ1ZSkgewpAQCAtNDY1LDYgKzQ2NiwxMDggQEAKICAgICAkLmNvb2tpZSgndG9hc3Rlci1ub3RpZmljYXRpb24nLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgeyBwYXRoOiAnLyd9KTsKICAgfQogCisgIC8qIF91cGRhdGVQcm9qZWN0OgorICAgKiB1cmw6IHhoclByb2plY3RVcGRhdGVVcmwgb3IgbnVsbCBmb3IgY3VycmVudCBwcm9qZWN0CisgICAqIG9uc3VjY2VzczogY2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uCisgICAqIG9uZmFpbDogY2FsbGJhY2sgZm9yIGZhaWxlZCBleGVjdXRpb24KKyAgICovCisgIGZ1bmN0aW9uIF91cGRhdGVQcm9qZWN0ICh1cmwsIHRhcmdldHMsIGRlZmF1bHRfaW1hZ2UsIG9uc3VjY2Vzcywgb25mYWlsKSB7CisKKyAgICBpZiAoIXVybCkKKyAgICAgIHVybCA9IGxpYnRvYXN0ZXIuY3R4LnhoclByb2plY3RVcGRhdGVVcmw7CisKKyAgICAvKiBGbGF0dGVuIHRoZSBhcnJheSBvZiB0YXJnZXRzIGludG8gYSBzcGFjZSBzcGVhcmF0ZWQgbGlzdCAqLworICAgIGlmICh0YXJnZXRzIGluc3RhbmNlb2YgQXJyYXkpeworICAgICAgdGFyZ2V0cyA9IHRhcmdldHMucmVkdWNlKGZ1bmN0aW9uKHByZXZWLCBuZXh0Vil7CisgICAgICAgIHJldHVybiBwcmV2ICsgJyAnICsgbmV4dDsKKyAgICAgIH0pOworICAgIH0KKworICAgICQuYWpheCggeworICAgICAgICB0eXBlOiAiUE9TVCIsCisgICAgICAgIHVybDogdXJsLAorICAgICAgICBkYXRhOiB7ICdkb191cGRhdGUnIDogJ1RydWUnICwgJ3RhcmdldHMnIDogdGFyZ2V0cyAsICdkZWZhdWx0X2ltYWdlJyA6IGRlZmF1bHRfaW1hZ2UgLCB9LAorICAgICAgICBoZWFkZXJzOiB7ICdYLUNTUkZUb2tlbicgOiAkLmNvb2tpZSgnY3NyZnRva2VuJyl9LAorICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoX2RhdGEpIHsKKyAgICAgICAgICBpZiAoX2RhdGEuZXJyb3IgIT09ICJvayIpIHsKKyAgICAgICAgICAgIGNvbnNvbGUud2FybihfZGF0YS5lcnJvcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvbnN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgb25zdWNjZXNzKF9kYXRhKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoX2RhdGEpIHsKKyAgICAgICAgICBjb25zb2xlLndhcm4oIkNhbGwgZmFpbGVkIik7CisgICAgICAgICAgY29uc29sZS53YXJuKF9kYXRhKTsKKyAgICAgICAgICBpZiAob25mYWlsKSBvbmZhaWwoZGF0YSk7CisgICAgfSB9KTsKKyAgfQorCisgIC8qIF9jYW5jZWxQcm9qZWN0OgorICAgKiB1cmw6IHhoclByb2plY3RVcGRhdGVVcmwgb3IgbnVsbCBmb3IgY3VycmVudCBwcm9qZWN0CisgICAqIG9uc3VjY2VzczogY2FsbGJhY2sgZm9yIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uCisgICAqIG9uZmFpbDogY2FsbGJhY2sgZm9yIGZhaWxlZCBleGVjdXRpb24KKyAgICovCisgIGZ1bmN0aW9uIF9jYW5jZWxQcm9qZWN0ICh1cmwsIG9uc3VjY2Vzcywgb25mYWlsKSB7CisKKyAgICBpZiAoIXVybCkKKyAgICAgIHVybCA9IGxpYnRvYXN0ZXIuY3R4LnhoclByb2plY3RDYW5jZWxVcmw7CisKKyAgICAkLmFqYXgoIHsKKyAgICAgICAgdHlwZTogIlBPU1QiLAorICAgICAgICB1cmw6IHVybCwKKyAgICAgICAgZGF0YTogeyAnZG9fY2FuY2VsJyA6ICdUcnVlJyAgfSwKKyAgICAgICAgaGVhZGVyczogeyAnWC1DU1JGVG9rZW4nIDogJC5jb29raWUoJ2NzcmZ0b2tlbicpfSwKKyAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKF9kYXRhKSB7CisgICAgICAgICAgaWYgKF9kYXRhLmVycm9yICE9PSAib2siKSB7CisgICAgICAgICAgICBjb25zb2xlLndhcm4oX2RhdGEuZXJyb3IpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAob25zdWNjZXNzICE9PSB1bmRlZmluZWQpIG9uc3VjY2VzcyhfZGF0YSk7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBlcnJvcjogZnVuY3Rpb24gKF9kYXRhKSB7CisgICAgICAgICAgY29uc29sZS53YXJuKCJDYWxsIGZhaWxlZCIpOworICAgICAgICAgIGNvbnNvbGUud2FybihfZGF0YSk7CisgICAgICAgICAgaWYgKG9uZmFpbCkgb25mYWlsKGRhdGEpOworICAgIH0gfSk7CisgIH0KKworICAvKiBfc2V0RGVmYXVsdEltYWdlOgorICAgKiB1cmw6IHhoclNldERlZmF1bHRJbWFnZVVybCBvciBudWxsIGZvciBjdXJyZW50IHByb2plY3QKKyAgICogdGFyZ2V0czogYW4gYXJyYXkgb3Igc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cyB0byBzZXQgYXMgZGVmYXVsdAorICAgKiBvbnN1Y2Nlc3M6IGNhbGxiYWNrIGZvciBzdWNjZXNzZnVsIGV4ZWN1dGlvbgorICAgKiBvbmZhaWw6IGNhbGxiYWNrIGZvciBmYWlsZWQgZXhlY3V0aW9uCisgICAqLworICBmdW5jdGlvbiBfc2V0RGVmYXVsdEltYWdlICh1cmwsIHRhcmdldHMsIG9uc3VjY2Vzcywgb25mYWlsKSB7CisKKyAgICBpZiAoIXVybCkKKyAgICAgIHVybCA9IGxpYnRvYXN0ZXIuY3R4LnhoclNldERlZmF1bHRJbWFnZVVybDsKKworICAgIC8qIEZsYXR0ZW4gdGhlIGFycmF5IG9mIHRhcmdldHMgaW50byBhIHNwYWNlIHNwZWFyYXRlZCBsaXN0ICovCisgICAgaWYgKHRhcmdldHMgaW5zdGFuY2VvZiBBcnJheSl7CisgICAgICB0YXJnZXRzID0gdGFyZ2V0cy5yZWR1Y2UoZnVuY3Rpb24ocHJldlYsIG5leHRWKXsKKyAgICAgICAgcmV0dXJuIHByZXYgKyAnICcgKyBuZXh0OworICAgICAgfSk7CisgICAgfQorCisgICAgJC5hamF4KCB7CisgICAgICAgIHR5cGU6ICJQT1NUIiwKKyAgICAgICAgdXJsOiB1cmwsCisgICAgICAgIGRhdGE6IHsgJ3RhcmdldHMnIDogdGFyZ2V0cyB9LAorICAgICAgICBoZWFkZXJzOiB7ICdYLUNTUkZUb2tlbicgOiAkLmNvb2tpZSgnY3NyZnRva2VuJyl9LAorICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoX2RhdGEpIHsKKyAgICAgICAgICBpZiAoX2RhdGEuZXJyb3IgIT09ICJvayIpIHsKKyAgICAgICAgICAgIGNvbnNvbGUud2FybihfZGF0YS5lcnJvcik7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChvbnN1Y2Nlc3MgIT09IHVuZGVmaW5lZCkgb25zdWNjZXNzKF9kYXRhKTsKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoX2RhdGEpIHsKKyAgICAgICAgICBjb25zb2xlLndhcm4oIkNhbGwgZmFpbGVkIik7CisgICAgICAgICAgY29uc29sZS53YXJuKF9kYXRhKTsKKyAgICAgICAgICBpZiAob25mYWlsKSBvbmZhaWwoZGF0YSk7CisgICAgfSB9KTsKKyAgfQorCiAgIHJldHVybiB7CiAgICAgZW5hYmxlQWpheExvYWRpbmdUaW1lcjogX2VuYWJsZUFqYXhMb2FkaW5nVGltZXIsCiAgICAgZGlzYWJsZUFqYXhMb2FkaW5nVGltZXI6IF9kaXNhYmxlQWpheExvYWRpbmdUaW1lciwKQEAgLTQ4NSw2ICs1ODgsOSBAQAogICAgIGNyZWF0ZUN1c3RvbVJlY2lwZTogX2NyZWF0ZUN1c3RvbVJlY2lwZSwKICAgICBtYWtlUHJvamVjdE5hbWVWYWxpZGF0aW9uOiBfbWFrZVByb2plY3ROYW1lVmFsaWRhdGlvbiwKICAgICBzZXROb3RpZmljYXRpb246IF9zZXROb3RpZmljYXRpb24sCisgICAgdXBkYXRlUHJvamVjdCA6IF91cGRhdGVQcm9qZWN0LAorICAgIGNhbmNlbFByb2plY3QgOiBfY2FuY2VsUHJvamVjdCwKKyAgICBzZXREZWZhdWx0SW1hZ2UgOiBfc2V0RGVmYXVsdEltYWdlLAogICB9OwogfSkoKTsKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL21yYnNlY3Rpb24uanMgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcwppbmRleCBjMGM1ZmE5Li5mMDdjY2Y4IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcworKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbXJic2VjdGlvbi5qcwpAQCAtODYsNyArODYsNyBAQAogICAgICAgICAgIGlmIChidWlsZEZpbmlzaGVkKGJ1aWxkKSkgewogICAgICAgICAgICAgLy8gYSBidWlsZCBmaW5pc2hlZDogcmVsb2FkIHRoZSB3aG9sZSBwYWdlIHNvIHRoYXQgdGhlIGJ1aWxkCiAgICAgICAgICAgICAvLyBzaG93cyB1cCBpbiB0aGUgYnVpbGRzIHRhYmxlCi0gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CisgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKHRydWUpOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIGlmIChzdGF0ZUNoYW5nZWQoYnVpbGQpKSB7CiAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHdob2xlIHRlbXBsYXRlCkBAIC0xMTAsNiArMTEwLDggQEAKICAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgY2xvbmUgcHJvZ3Jlc3MgdGV4dAogICAgICAgICAgICAgc2VsZWN0b3IgPSAnI3JlcG9zLWNsb25lZC1wZXJjZW50YWdlLScgKyBidWlsZC5pZDsKICAgICAgICAgICAgICQoc2VsZWN0b3IpLmh0bWwoYnVpbGQucmVwb3NfY2xvbmVkX3BlcmNlbnRhZ2UpOworICAgICAgICAgICAgc2VsZWN0b3IgPSAnI3JlcG9zLWNsb25lZC1wcm9ncmVzc2l0ZW0tJyArIGJ1aWxkLmlkOworICAgICAgICAgICAgJChzZWxlY3RvcikuaHRtbCgnKCcrYnVpbGQucHJvZ3Jlc3NfaXRlbSsnKScpOwogCiAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIHJlY2lwZSBwcm9ncmVzcyBiYXIKICAgICAgICAgICAgIHNlbGVjdG9yID0gJyNyZXBvcy1jbG9uZWQtcGVyY2VudGFnZS1iYXItJyArIGJ1aWxkLmlkOwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL25ld2N1c3RvbWltYWdlX21vZGFsLmpzIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL25ld2N1c3RvbWltYWdlX21vZGFsLmpzCmluZGV4IGRhY2U4ZTMuLmU1NWZmZmMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9uZXdjdXN0b21pbWFnZV9tb2RhbC5qcworKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9zdGF0aWMvanMvbmV3Y3VzdG9taW1hZ2VfbW9kYWwuanMKQEAgLTI1LDYgKzI1LDggQEAKICAgdmFyIGR1cGxpY2F0ZU5hbWVNc2cgPSAiQW4gaW1hZ2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuIEltYWdlIG5hbWVzIG11c3QgYmUgdW5pcXVlLiI7CiAgIHZhciBkdXBsaWNhdGVJbWFnZUluUHJvamVjdE1zZyA9ICJBbiBpbWFnZSB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGlzIHByb2plY3QuIgogICB2YXIgaW52YWxpZEJhc2VSZWNpcGVJZE1zZyA9ICJQbGVhc2Ugc2VsZWN0IGFuIGltYWdlIHRvIGN1c3RvbWlzZS4iOworICB2YXIgbWlzc2luZ1BhcmVudFJlY2lwZSA9ICJUaGUgcGFyZW50IHJlY2lwZSBmaWxlIHdhcyBub3QgZm91bmQuIENhbmNlbCB0aGlzIGFjdGlvbiwgYnVpbGQgYW55IHRhcmdldCAobGlrZSAncXVpbHQtbmF0aXZlJykgdG8gZm9yY2UgYWxsIG5ldyBsYXllcnMgdG8gY2xvbmUsIGFuZCB0cnkgYWdhaW4iOworICB2YXIgdW5rbm93bkVycm9yID0gIlVuZXhwZWN0ZWQgZXJyb3I6ICI7CiAKICAgLy8gc2V0IGJ1dHRvbiB0byAic3VibWl0IiBzdGF0ZSBhbmQgZW5hYmxlIHRleHQgZW50cnkgc28gdXNlciBjYW4KICAgLy8gZW50ZXIgdGhlIGN1c3RvbSByZWNpcGUgbmFtZQpAQCAtNjIsNiArNjQsNyBAQAogICAgIGlmIChuYW1lSW5wdXQudmFsKCkubGVuZ3RoID4gMCkgewogICAgICAgbGlidG9hc3Rlci5jcmVhdGVDdXN0b21SZWNpcGUobmFtZUlucHV0LnZhbCgpLCBiYXNlUmVjaXBlSWQsCiAgICAgICBmdW5jdGlvbihyZXQpIHsKKyAgICAgICAgc2hvd1N1Ym1pdFN0YXRlKCk7CiAgICAgICAgIGlmIChyZXQuZXJyb3IgIT09ICJvayIpIHsKICAgICAgICAgICBjb25zb2xlLndhcm4ocmV0LmVycm9yKTsKICAgICAgICAgICBpZiAocmV0LmVycm9yID09PSAiaW52YWxpZC1uYW1lIikgewpAQCAtNzMsNiArNzYsMTAgQEAKICAgICAgICAgICB9IGVsc2UgaWYgKHJldC5lcnJvciA9PT0gImltYWdlLWFscmVhZHktZXhpc3RzIikgewogICAgICAgICAgICAgc2hvd05hbWVFcnJvcihkdXBsaWNhdGVJbWFnZUluUHJvamVjdE1zZyk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfSBlbHNlIGlmIChyZXQuZXJyb3IgPT09ICJyZWNpcGUtcGFyZW50LW5vdC1leGlzdCIpIHsKKyAgICAgICAgICAgIHNob3dOYW1lRXJyb3IobWlzc2luZ1BhcmVudFJlY2lwZSk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNob3dOYW1lRXJyb3IodW5rbm93bkVycm9yICsgcmV0LmVycm9yKTsKICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgaW1nQ3VzdG9tTW9kYWwubW9kYWwoJ2hpZGUnKTsKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3N0YXRpYy9qcy9wcm9qZWN0dG9wYmFyLmpzIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMKaW5kZXggNjkyMjBhYS4uM2Y5ZTE4NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvc3RhdGljL2pzL3Byb2plY3R0b3BiYXIuanMKQEAgLTE0LDYgKzE0LDkgQEAKICAgdmFyIG5ld0J1aWxkVGFyZ2V0QnVpbGRCdG4gPSAkKCIjYnVpbGQtYnV0dG9uIik7CiAgIHZhciBzZWxlY3RlZFRhcmdldDsKIAorICB2YXIgdXBkYXRlUHJvamVjdEJ0biA9ICQoIiN1cGRhdGUtcHJvamVjdC1idXR0b24iKTsKKyAgdmFyIGNhbmNlbFByb2plY3RCdG4gPSAkKCIjY2FuY2VsLXByb2plY3QtYnV0dG9uIik7CisKICAgLyogUHJvamVjdCBuYW1lIGNoYW5nZSBmdW5jdGlvbmFsaXR5ICovCiAgIHByb2plY3ROYW1lRm9ybVRvZ2dsZS5jbGljayhmdW5jdGlvbihlKXsKICAgICBlLnByZXZlbnREZWZhdWx0KCk7CkBAIC04OSw2ICs5MiwyNSBAQAogICAgIH0sIG51bGwpOwogICB9KTsKIAorICB1cGRhdGVQcm9qZWN0QnRuLmNsaWNrKGZ1bmN0aW9uIChlKSB7CisgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgc2VsZWN0ZWRUYXJnZXQgPSB7IG5hbWU6ICJfUFJPSkVDVF9QUkVQQVJFXyIgfTsKKworICAgIC8qIFNhdmUgY3VycmVudCBkZWZhdWx0IGJ1aWxkIGltYWdlLCBmaXJlIG9mZiB0aGUgYnVpbGQgKi8KKyAgICBsaWJ0b2FzdGVyLnVwZGF0ZVByb2plY3QobnVsbCwgc2VsZWN0ZWRUYXJnZXQubmFtZSwgbmV3QnVpbGRUYXJnZXRJbnB1dC52YWwoKS50cmltKCksCisgICAgICBmdW5jdGlvbigpeworICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShsaWJ0b2FzdGVyLmN0eC5wcm9qZWN0U3BlY2lmaWNQYWdlVXJsKTsKKyAgICB9LCBudWxsKTsKKyAgfSk7CisKKyAgY2FuY2VsUHJvamVjdEJ0bi5jbGljayhmdW5jdGlvbiAoZSkgeworICAgIGUucHJldmVudERlZmF1bHQoKTsKKworICAgIC8qIHJlZGlyZWN0IHRvICdkb25lL2NhbmNlbGVkJyBsYW5kaW5nIHBhZ2UgKi8KKyAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShsaWJ0b2FzdGVyLmN0eC5sYW5kaW5nU3BlY2lmaWNDYW5jZWxVUkwpOworICB9KTsKKwogICAvKiBDYWxsIG1ha2VQcm9qZWN0TmFtZVZhbGlkYXRpb24gZnVuY3Rpb24gKi8KICAgbGlidG9hc3Rlci5tYWtlUHJvamVjdE5hbWVWYWxpZGF0aW9uKCQoIiNwcm9qZWN0LW5hbWUtY2hhbmdlLWlucHV0IiksCiAgICAgICAkKCIjaGludC1lcnJvci1wcm9qZWN0LW5hbWUiKSwgJCgiI3ZhbGlkYXRlLXByb2plY3QtbmFtZSIpLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5CmluZGV4IGRjYTJmYTIuLjlmZjc1NmIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKQEAgLTM1LDYgKzM1LDggQEAKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXJBY3Rpb25EYXRlUmFuZ2UKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXJBY3Rpb25EYXkKIAoraW1wb3J0IG9zCisKIGNsYXNzIFByb2plY3RGaWx0ZXJzKG9iamVjdCk6CiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBpbl9wcm9qZWN0KHByb2plY3RfbGF5ZXJzKToKQEAgLTMzOSw2ICszNDEsOCBAQAogICAgICAgICAgICAgJ2ZpbHRlcl9uYW1lJyA6ICJpbl9jdXJyZW50X3Byb2plY3QiLAogICAgICAgICAgICAgJ3N0YXRpY19kYXRhX25hbWUnIDogImFkZC1kZWwtbGF5ZXJzIiwKICAgICAgICAgICAgICdzdGF0aWNfZGF0YV90ZW1wbGF0ZScgOiAneyUgaW5jbHVkZSAicmVjaXBlX2J0bi5odG1sIiAlfSd9CisgICAgaWYgJzEnID09IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX1BST0pFQ1RTUEVDSUZJQycpOgorICAgICAgICAgICAgYnVpbGRfY29sWydzdGF0aWNfZGF0YV90ZW1wbGF0ZSddID0gJ3slIGluY2x1ZGUgInJlY2lwZV9hZGRfYnRuLmh0bWwiICV9JwogCiAgICAgZGVmIGdldF9jb250ZXh0X2RhdGEoc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBwcm9qZWN0ID0gUHJvamVjdC5vYmplY3RzLmdldChwaz1rd2FyZ3NbJ3BpZCddKQpAQCAtMTYxMSwxNCArMTYxNSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZF9uYW1lPSJsYXllcl92ZXJzaW9uX19nZXRfdmNzX3JlZmVyZW5jZSIpCiAKLSAgICAgICAgd3J0ZW1wbGF0ZV9maWxlX3RlbXBsYXRlID0gJycnPGNvZGU+Y29uZi9tYWNoaW5lL3t7ZGF0YS5uYW1lfX0uY29uZjwvY29kZT4KLSAgICAgICAgPGEgaHJlZj0ie3tkYXRhLmdldF92Y3NfbWFjaGluZV9maWxlX2xpbmtfdXJsfX0iIHRhcmdldD0iX2JsYW5rIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1uZXctd2luZG93Ij48L2k+PC9hPicnJwotCisgICAgICAgIGRpc3Ryb19maWxlX3RlbXBsYXRlID0gJycnPGNvZGU+Y29uZi9kaXN0cm8ve3tkYXRhLm5hbWV9fS5jb25mPC9jb2RlPgorICAgICAgICB7JSBpZiAnTm9uZScgbm90IGluIGRhdGEuZ2V0X3Zjc19kaXN0cm9fZmlsZV9saW5rX3VybCAlfTxhIGhyZWY9Int7ZGF0YS5nZXRfdmNzX2Rpc3Ryb19maWxlX2xpbmtfdXJsfX0iIHRhcmdldD0iX2JsYW5rIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1uZXctd2luZG93Ij48L2k+PC9hPnslIGVuZGlmICV9JycnCiAgICAgICAgIHNlbGYuYWRkX2NvbHVtbih0aXRsZT0iRGlzdHJvIGZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgaGlkZGVuPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfZGF0YV9uYW1lPSJ0ZW1wbGF0ZWZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2RhdGFfdGVtcGxhdGU9d3J0ZW1wbGF0ZV9maWxlX3RlbXBsYXRlKQotCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfZGF0YV90ZW1wbGF0ZT1kaXN0cm9fZmlsZV90ZW1wbGF0ZSkKIAogICAgICAgICBzZWxmLmFkZF9jb2x1bW4odGl0bGU9IlNlbGVjdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwX3RleHQ9IlNldHMgdGhlIHNlbGVjdGVkIGRpc3RybyB0byB0aGUgcHJvamVjdCIsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZV9zcGVjaWZpYy5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vfc3BlY2lmaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzc3Y2FkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vfc3BlY2lmaWMuaHRtbApAQCAtMCwwICsxLDEyOCBAQAorPCFET0NUWVBFIGh0bWw+Cit7JSBsb2FkIHN0YXRpYyAlfQoreyUgbG9hZCBwcm9qZWN0dGFncyAlfQoreyUgbG9hZCBwcm9qZWN0X3VybF90YWcgJX0KKzxodG1sIGxhbmc9ImVuIj4KKyAgPGhlYWQ+CisgICAgPHRpdGxlPgorICAgICAgeyUgYmxvY2sgdGl0bGUgJX0gVG9hc3RlciB7JSBlbmRibG9jayAlfQorICAgIDwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JSBzdGF0aWMgJ2Nzcy9ib290c3RyYXAubWluLmNzcycgJX0iIHR5cGU9InRleHQvY3NzIi8+CisgICAgPCEtLWxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJ7JSBzdGF0aWMgJ2Nzcy9ib290c3RyYXAtdGhlbWUuY3NzJyAlfSIgdHlwZT0idGV4dC9jc3MiLy0tPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyUgc3RhdGljICdjc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MnICV9IiB0eXBlPSd0ZXh0L2NzcycvPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ieyUgc3RhdGljICdjc3MvZGVmYXVsdC5jc3MnICV9IiB0eXBlPSd0ZXh0L2NzcycvPgorCisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiIC8+CisgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtOCIgLz4KKyAgICA8c2NyaXB0IHNyYz0ieyUgc3RhdGljICdqcy9qcXVlcnktMi4wLjMubWluLmpzJyAlfSI+CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InslIHN0YXRpYyAnanMvanF1ZXJ5LmNvb2tpZS5qcycgJX0iPgorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJ7JSBzdGF0aWMgJ2pzL2Jvb3RzdHJhcC5taW4uanMnICV9Ij4KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ieyUgc3RhdGljICdqcy90eXBlYWhlYWQuanF1ZXJ5LmpzJyAlfSI+CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InslIHN0YXRpYyAnanMvanNyZW5kZXIubWluLmpzJyAlfSI+CisgICAgPC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InslIHN0YXRpYyAnanMvaGlnaGxpZ2h0LnBhY2suanMnICV9Ij4KKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ieyUgc3RhdGljICdqcy9saWJ0b2FzdGVyLmpzJyAlfSI+CisgICAgPC9zY3JpcHQ+CisgICAgeyUgaWYgREVCVUcgJX0KKyAgICA8c2NyaXB0PgorICAgICAgbGlidG9hc3Rlci5kZWJ1ZyA9IHRydWU7CisgICAgPC9zY3JpcHQ+CisgICAgeyUgZW5kaWYgJX0KKyAgICA8c2NyaXB0PgorICAgICAgLyogU2V0IEpzUmVuZGVyIGRlbGltaXRlcnMgKG1yYl9zZWN0aW9uLmh0bWwpIGRpZmZlcmVudCB0aGFuIERqYW5nbydzICovCisgICAgICAkLnZpZXdzLnNldHRpbmdzLmRlbGltaXRlcnMoIjwlIiwgIiU+Iik7CisKKyAgICAgIC8qIFRoaXMgdGFibGUgYWxsb3dzIERqYW5nbyBzdWJzdGl0dXRpb25zIHRvIGJlIHBhc3NlZCB0byBsaWJ0b2FzdGVyLmpzICovCisgICAgICBsaWJ0b2FzdGVyLmN0eCA9IHsKKyAgICAgICAganNVcmwgOiAieyUgc3RhdGljICdqcy8nICV9IiwKKyAgICAgICAgaHRtbFVybCA6ICJ7JSBzdGF0aWMgJ2h0bWwvJyAlfSIsCisgICAgICAgIHByb2plY3RzVXJsIDogInslIHVybCAnYWxsLXByb2plY3RzJyAlfSIsCisgICAgICAgIHByb2plY3RzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9wcm9qZWN0c3R5cGVhaGVhZCcgYXMgcHJqdXJsJX17e3ByanVybHxqc29ufX0sCisgICAgICAgIHslIGlmIHByb2plY3QuaWQgJX0KKyAgICAgICAgbGFuZGluZ1NwZWNpZmljVVJMIDogInslIHVybCAnbGFuZGluZ19zcGVjaWZpYycgcHJvamVjdC5pZCAlfSIsCisgICAgICAgIGxhbmRpbmdTcGVjaWZpY0NhbmNlbFVSTCA6ICJ7JSB1cmwgJ2xhbmRpbmdfc3BlY2lmaWNfY2FuY2VsJyBwcm9qZWN0LmlkICV9IiwKKyAgICAgICAgcHJvamVjdElkIDoge3twcm9qZWN0LmlkfX0sCisgICAgICAgIHByb2plY3RQYWdlVXJsIDogeyUgdXJsICdwcm9qZWN0JyBwcm9qZWN0LmlkIGFzIHB1cmwgJX17e3B1cmx8anNvbn19LAorICAgICAgICBwcm9qZWN0U3BlY2lmaWNQYWdlVXJsIDogeyUgdXJsICdwcm9qZWN0X3NwZWNpZmljJyBwcm9qZWN0LmlkIGFzIHB1cmwgJX17e3B1cmx8anNvbn19LAorICAgICAgICB4aHJQcm9qZWN0VXJsIDogeyUgdXJsICd4aHJfcHJvamVjdCcgcHJvamVjdC5pZCBhcyBweHVybCAlfXt7cHh1cmx8anNvbn19LAorICAgICAgICBwcm9qZWN0TmFtZSA6IHt7cHJvamVjdC5uYW1lfGpzb259fSwKKyAgICAgICAgcmVjaXBlc1R5cGVBaGVhZFVybDogeyUgdXJsICd4aHJfcmVjaXBlc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKKyAgICAgICAgbGF5ZXJzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9sYXllcnN0eXBlYWhlYWQnIHByb2plY3QuaWQgYXMgcGF0dXJsJX17e3BhdHVybHxqc29ufX0sCisgICAgICAgIG1hY2hpbmVzVHlwZUFoZWFkVXJsOiB7JSB1cmwgJ3hocl9tYWNoaW5lc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKKyAgICAgICAgZGlzdHJvc1R5cGVBaGVhZFVybDogeyUgdXJsICd4aHJfZGlzdHJvc3R5cGVhaGVhZCcgcHJvamVjdC5pZCBhcyBwYXR1cmwlfXt7cGF0dXJsfGpzb259fSwKKyAgICAgICAgcHJvamVjdEJ1aWxkc1VybDogeyUgdXJsICdwcm9qZWN0YnVpbGRzJyBwcm9qZWN0LmlkIGFzIHBidXJsICV9e3twYnVybHxqc29ufX0sCisgICAgICAgIHhockN1c3RvbVJlY2lwZVVybCA6ICJ7JSB1cmwgJ3hocl9jdXN0b21yZWNpcGUnICV9IiwKKyAgICAgICAgcHJvamVjdElkIDoge3twcm9qZWN0LmlkfX0sCisgICAgICAgIHhockJ1aWxkUmVxdWVzdFVybDogInslIHVybCAneGhyX2J1aWxkcmVxdWVzdCcgcHJvamVjdC5pZCAlfSIsCisgICAgICAgIG1vc3RSZWNlbnRCdWlsZHNVcmw6ICJ7JSB1cmwgJ21vc3RfcmVjZW50X2J1aWxkcycgJX0/cHJvamVjdF9pZD17e3Byb2plY3QuaWR9fSIsCisgICAgICAgIHhoclByb2plY3RVcGRhdGVVcmw6ICJ7JSB1cmwgJ3hocl9wcm9qZWN0dXBkYXRlJyBwcm9qZWN0LmlkICV9IiwKKyAgICAgICAgeGhyUHJvamVjdENhbmNlbFVybDogInslIHVybCAnbGFuZGluZ19zcGVjaWZpY19jYW5jZWwnIHByb2plY3QuaWQgJX0iLAorICAgICAgICB4aHJTZXREZWZhdWx0SW1hZ2VVcmw6ICJ7JSB1cmwgJ3hocl9zZXRkZWZhdWx0aW1hZ2UnIHByb2plY3QuaWQgJX0iLAorICAgICAgICB7JSBlbHNlICV9CisgICAgICAgIG1vc3RSZWNlbnRCdWlsZHNVcmw6ICJ7JSB1cmwgJ21vc3RfcmVjZW50X2J1aWxkcycgJX0iLAorICAgICAgICBwcm9qZWN0SWQgOiB1bmRlZmluZWQsCisgICAgICAgIHByb2plY3RQYWdlVXJsIDogdW5kZWZpbmVkLAorICAgICAgICBwcm9qZWN0TmFtZSA6IHVuZGVmaW5lZCwKKyAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgIH07CisgICAgPC9zY3JpcHQ+CisgICAgeyUgYmxvY2sgZXh0cmFoZWFkY29udGVudCAlfQorICAgIHslIGVuZGJsb2NrICV9CisgIDwvaGVhZD4KKworICA8Ym9keT4KKworICAgIHslIGNzcmZfdG9rZW4gJX0KKyAgICA8ZGl2IGlkPSJsb2FkaW5nLW5vdGlmaWNhdGlvbiIgY2xhc3M9ImFsZXJ0IGFsZXJ0LXdhcm5pbmcgbGVhZCB0ZXh0LWNlbnRlciIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+CisgICAgICBMb2FkaW5nIDxpIGNsYXNzPSJmYS1wdWxzZSBpY29uLXNwaW5uZXIiPjwvaT4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgaWQ9ImNoYW5nZS1ub3RpZmljYXRpb24iIGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIGFsZXJ0LWRpc21pc3NpYmxlIGNoYW5nZS1ub3RpZmljYXRpb24iIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgorICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgaWQ9ImhpZGUtYWxlcnQiIGRhdGEtdG9nZ2xlPSJhbGVydCI+JnRpbWVzOzwvYnV0dG9uPgorICAgICAgPHNwYW4gaWQ9ImNoYW5nZS1ub3RpZmljYXRpb24tbXNnIj48L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8bmF2IGNsYXNzPSJuYXZiYXIgbmF2YmFyLWRlZmF1bHQgbmF2YmFyLWZpeGVkLXRvcCI+CisgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJuYXZiYXItaGVhZGVyIj4KKyAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im5hdmJhci10b2dnbGUgY29sbGFwc2VkIiBkYXRhLXRvZ2dsZT0iY29sbGFwc2UiIGRhdGEtdGFyZ2V0PSIjZ2xvYmFsLW5hdiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNyLW9ubHkiPlRvZ2dsZSBuYXZpZ2F0aW9uPC9zcGFuPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imljb24tYmFyIj48L3NwYW4+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbi1iYXIiPjwvc3Bhbj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpY29uLWJhciI+PC9zcGFuPgorICAgICAgICAgIDwvYnV0dG9uPgorICAgICAgICAgIDxkaXYgY2xhc3M9InRvYXN0ZXItbmF2YmFyLWJyYW5kIj4KKyAgICAgICAgICAJeyUgaWYgcHJvamVjdF9zcGVjaWZpYyAlfQorICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsb2dvIiBzcmM9InslIHN0YXRpYyAnaW1nL2xvZ28ucG5nJyAlfSIgY2xhc3M9IiIgYWx0PSJZb2N0byBQcm9qZWN0IGxvZ28iLz4KKyAgICAgICAgICAgICAgVG9hc3RlcgorICAgICAgICAgIAl7JSBlbHNlICV9CisgICAgICAgICAgICA8YSBocmVmPSIvIj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii8iPgorICAgICAgICAgICAgICA8aW1nIGNsYXNzPSJsb2dvIiBzcmM9InslIHN0YXRpYyAnaW1nL2xvZ28ucG5nJyAlfSIgY2xhc3M9IiIgYWx0PSJZb2N0byBQcm9qZWN0IGxvZ28iLz4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxhIGNsYXNzPSJicmFuZCIgaHJlZj0iLyI+VG9hc3RlcjwvYT4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgICB7JSBpZiBERUJVRyAlfQorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24taW5mby1zaWduIiB0aXRsZT0iPHN0cm9uZz5Ub2FzdGVyIHZlcnNpb24gaW5mb3JtYXRpb248L3N0cm9uZz4iIGRhdGEtY29udGVudD0iPGRsPjxkdD5HaXQgYnJhbmNoPC9kdD48ZGQ+e3tUT0FTVEVSX0JSQU5DSH19PC9kZD48ZHQ+R2l0IHJldmlzaW9uPC9kdD48ZGQ+e3tUT0FTVEVSX1JFVklTSU9OfX08L2RkPjwvZGw+Ij48L2k+CisgICAgICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UgbmF2YmFyLWNvbGxhcHNlIiBpZD0iZ2xvYmFsLW5hdiI+CisgICAgICAgICAgICA8dWwgY2xhc3M9Im5hdiBuYXZiYXItbmF2Ij4KKyAgICAgICAgICAgIDxoMz4gUHJvamVjdCBDb25maWd1cmF0aW9uIFBhZ2UgPC9oMz4KKyAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L25hdj4KKworICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1mbHVpZCI+CisgICAgICB7JSBibG9jayBwYWdlY29udGVudCAlfQorICAgICAgeyUgZW5kYmxvY2sgJX0KKyAgICA8L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0c3BlY2lmaWNwYWdlLmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvYmFzZXByb2plY3RzcGVjaWZpY3BhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGI1ODhkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2Jhc2Vwcm9qZWN0c3BlY2lmaWNwYWdlLmh0bWwKQEAgLTAsMCArMSw0OCBAQAoreyUgZXh0ZW5kcyAiYmFzZV9zcGVjaWZpYy5odG1sIiAlfQorCit7JSBsb2FkIHByb2plY3R0YWdzICV9Cit7JSBsb2FkIGh1bWFuaXplICV9CisKK3slIGJsb2NrIHRpdGxlICV9IHt7dGl0bGV9fSAtIHt7cHJvamVjdC5uYW1lfX0gLSBUb2FzdGVyIHslIGVuZGJsb2NrICV9CisKK3slIGJsb2NrIHBhZ2Vjb250ZW50ICV9CisKKzxkaXYgY2xhc3M9InJvdyI+CisgIHslIGluY2x1ZGUgInByb2plY3Rfc3BlY2lmaWNfdG9wYmFyLmh0bWwiICV9CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CisgICAgJCgiI2NvbmZpZy1uYXYgLm5hdiBsaSBhIikuZWFjaChmdW5jdGlvbigpeworICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PT0gJCh0aGlzKS5hdHRyKCdocmVmJykpCisgICAgICAkKHRoaXMpLnBhcmVudCgpLmFkZENsYXNzKCdhY3RpdmUnKTsKKyAgICAgIGVsc2UKKyAgICAgICQodGhpcykucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOworICAgICAgfSk7CisKKyAgICAkKCIjdG9wYmFyLWNvbmZpZ3VyYXRpb24tdGFiIikuYWRkQ2xhc3MoImFjdGl2ZSIpCisgICAgfSk7CisgIDwvc2NyaXB0PgorCisgIDwhLS0gb25seSBvbiBjb25maWcgcGFnZXMgLS0+CisgIDxkaXYgaWQ9ImNvbmZpZy1uYXYiIGNsYXNzPSJjb2wtbWQtMiI+CisgICAgPHVsIGNsYXNzPSJuYXYgbmF2LXBpbGxzIG5hdi1zdGFja2VkIj4KKyAgICAgIDxsaT48YSBjbGFzcz0ibmF2LXBhcmVudCIgaHJlZj0ieyUgdXJsICdwcm9qZWN0JyBwcm9qZWN0LmlkICV9Ij5Db25maWd1cmF0aW9uPC9hPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Im5hdi1oZWFkZXIiPkNvbXBhdGlibGUgbWV0YWRhdGE8L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdGN1c3RvbWltYWdlcycgcHJvamVjdC5pZCAlfSI+Q3VzdG9tIGltYWdlczwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdGltYWdlcmVjaXBlcycgcHJvamVjdC5pZCAlfSI+SW1hZ2UgcmVjaXBlczwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdHNvZnR3YXJlcmVjaXBlcycgcHJvamVjdC5pZCAlfSI+U29mdHdhcmUgcmVjaXBlczwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdG1hY2hpbmVzJyBwcm9qZWN0LmlkICV9Ij5NYWNoaW5lczwvYT48L2xpPgorICAgICAgPGxpPjxhIGhyZWY9InslIHVybCAncHJvamVjdGxheWVycycgcHJvamVjdC5pZCAlfSI+TGF5ZXJzPC9hPjwvbGk+CisgICAgICA8bGk+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0ZGlzdHJvcycgcHJvamVjdC5pZCAlfSI+RGlzdHJvczwvYT48L2xpPgorICAgICAgPGxpIGNsYXNzPSJuYXYtaGVhZGVyIj5FeHRyYSBjb25maWd1cmF0aW9uPC9saT4KKyAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3Rjb25mJyBwcm9qZWN0LmlkICV9Ij5CaXRCYWtlIHZhcmlhYmxlczwvYT48L2xpPgorCisgICAgICA8bGkgY2xhc3M9Im5hdi1oZWFkZXIiPkFjdGlvbnM8L2xpPgorICAgIDwvdWw+CisgIDwvZGl2PgorICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTAiPgorICAgIHslIGJsb2NrIHByb2plY3RpbmZvbWFpbiAlfXslIGVuZGJsb2NrICV9CisgIDwvZGl2PgorCis8L2Rpdj4KK3slIGVuZGJsb2NrICV9CisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9jdXN0b21pc2VfYnRuLmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvY3VzdG9taXNlX2J0bi5odG1sCmluZGV4IDM4YzI1OGEuLmNlNDYyNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9jdXN0b21pc2VfYnRuLmh0bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2N1c3RvbWlzZV9idG4uaHRtbApAQCAtNSw3ICs1LDExIEBACiAgID4KICAgQ3VzdG9taXNlCiA8L2J1dHRvbj4KLTxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2sgbGF5ZXItYWRkLXt7ZGF0YS5sYXllcl92ZXJzaW9uLnBrfX0gbGF5ZXJidG4iIGRhdGEtbGF5ZXI9J3sgImlkIjoge3tkYXRhLmxheWVyX3ZlcnNpb24ucGt9fSwgIm5hbWUiOiAgInt7ZGF0YS5sYXllcl92ZXJzaW9uLmxheWVyLm5hbWV9fSIsICJsYXllcmRldGFpbHVybCI6ICJ7JXVybCAnbGF5ZXJkZXRhaWxzJyBleHRyYS5waWQgZGF0YS5sYXllcl92ZXJzaW9uLnBrJX0ifScgZGF0YS1kaXJlY3RpdmU9ImFkZCIKKzxidXR0b24gY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBidG4tYmxvY2sgbGF5ZXItYWRkLXt7ZGF0YS5sYXllcl92ZXJzaW9uLnBrfX0gbGF5ZXJidG4iCisgICAgZGF0YS1sYXllcj0neyAiaWQiOiB7e2RhdGEubGF5ZXJfdmVyc2lvbi5wa319LCAibmFtZSI6ICAie3tkYXRhLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZX19IiwKKyAgICAgICJsYXllcmRldGFpbHVybCI6ICJ7JXVybCAnbGF5ZXJkZXRhaWxzJyBleHRyYS5waWQgZGF0YS5sYXllcl92ZXJzaW9uLnBrJX0iLAorICAgICAgInhockxheWVyVXJsIjogInslIHVybCAieGhyX2xheWVyIiBleHRyYS5waWQgZGF0YS5sYXllcl92ZXJzaW9uLnBrICV9In0nCisgICAgZGF0YS1kaXJlY3RpdmU9ImFkZCIKICAgICB7JSBpZiBkYXRhLmxheWVyX3ZlcnNpb24ucGsgaW4gZXh0cmEuY3VycmVudF9sYXllcnMgJX0KICAgICBzdHlsZT0iZGlzcGxheTpub25lOyIKICAgICB7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2dlbmVyaWMtdG9hc3RlcnRhYmxlLXBhZ2UuaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9nZW5lcmljLXRvYXN0ZXJ0YWJsZS1wYWdlLmh0bWwKaW5kZXggYjNlYWJlMS4uOTlmYmIzOCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2dlbmVyaWMtdG9hc3RlcnRhYmxlLXBhZ2UuaHRtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvZ2VuZXJpYy10b2FzdGVydGFibGUtcGFnZS5odG1sCkBAIC0xLDQgKzEsNCBAQAoteyUgZXh0ZW5kcyAiYmFzZXByb2plY3RwYWdlLmh0bWwiICV9Cit7JSBleHRlbmRzIHByb2plY3Rfc3BlY2lmaWN8eWVzbm86ImJhc2Vwcm9qZWN0c3BlY2lmaWNwYWdlLmh0bWwsYmFzZXByb2plY3RwYWdlLmh0bWwiICV9CiB7JSBsb2FkIHByb2plY3R0YWdzICV9CiB7JSBsb2FkIGh1bWFuaXplICV9CiB7JSBsb2FkIHN0YXRpYyAlfQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2ltcG9ydGxheWVyLmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvaW1wb3J0bGF5ZXIuaHRtbAppbmRleCA5N2Q1MmM3Li5lMGM5ODdlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvaW1wb3J0bGF5ZXIuaHRtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvaW1wb3J0bGF5ZXIuaHRtbApAQCAtMSw0ICsxLDQgQEAKLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KK3slIGV4dGVuZHMgcHJvamVjdF9zcGVjaWZpY3x5ZXNubzoiYmFzZXByb2plY3RzcGVjaWZpY3BhZ2UuaHRtbCxiYXNlLmh0bWwiICV9CiB7JSBsb2FkIHByb2plY3R0YWdzICV9CiB7JSBsb2FkIGh1bWFuaXplICV9CiB7JSBsb2FkIHN0YXRpYyAlfQpAQCAtNiw3ICs2LDcgQEAKIHslIGJsb2NrIHBhZ2Vjb250ZW50ICV9CiAKIDxkaXYgY2xhc3M9InJvdyI+Ci0gIHslIGluY2x1ZGUgInByb2plY3R0b3BiYXIuaHRtbCIgJX0KKyAgeyUgaW5jbHVkZSBwcm9qZWN0X3NwZWNpZmljfHllc25vOiJwcm9qZWN0X3NwZWNpZmljX3RvcGJhci5odG1sLHByb2plY3R0b3BiYXIuaHRtbCIgJX0KICAgeyUgaWYgcHJvamVjdCBhbmQgcHJvamVjdC5yZWxlYXNlICV9CiAgIDxzY3JpcHQgc3JjPSJ7JSBzdGF0aWMgJ2pzL2xheWVyRGVwc01vZGFsLmpzJyAlfSI+PC9zY3JpcHQ+CiAgIDxzY3JpcHQgc3JjPSJ7JSBzdGF0aWMgJ2pzL2ltcG9ydGxheWVyLmpzJyAlfSI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbGFuZGluZ19zcGVjaWZpYy5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xhbmRpbmdfc3BlY2lmaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjg5YzdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xhbmRpbmdfc3BlY2lmaWMuaHRtbApAQCAtMCwwICsxLDUwIEBACit7JSBleHRlbmRzICJiYXNlX3NwZWNpZmljLmh0bWwiICV9CisKK3slIGxvYWQgc3RhdGljICV9Cit7JSBsb2FkIHByb2plY3R0YWdzICV9Cit7JSBsb2FkIGh1bWFuaXplICV9CisKK3slIGJsb2NrIHRpdGxlICV9IFdlbGNvbWUgdG8gVG9hc3RlciB7JSBlbmRibG9jayAlfQorCit7JSBibG9jayBwYWdlY29udGVudCAlfQorCisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAgIDwhLS0gRW1wdHkgLSBubyBidWlsZCBtb2R1bGUgLS0+CisgICAgPGRpdiBjbGFzcz0icGFnZS1oZWFkZXIgdG9wLWFpciI+CisgICAgIDxoMT4KKyAgICAgICBDb25maWd1cmF0aW9uIHslIGlmIHN0YXR1cyA9PSAiY2FuY2VsIiAlfUNhbmNlbGVkeyUgZWxzZSAlfUNvbXBsZXRlZHslIGVuZGlmICV9ISBZb3UgY2FuIG5vdyBjbG9zZSB0aGlzIHdpbmRvdy4KKyAgICAgPC9oMT4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIGxlYWQiPgorICAgICA8cD4KKyAgICAgWW91ciBwcm9qZWN0IGNvbmZpZ3VyYXRpb24geyUgaWYgc3RhdHVzID09ICJjYW5jZWwiICV9Y2hhbmdlcyBoYXZlIGJlZW4gY2FuY2VsZWR7JSBlbHNlICV9aGFzIGNvbXBsZXRlZCF7JSBlbmRpZiAlfQorICAgICA8YnI+CisgICAgIDxicj4KKyAgICAgPHVsPgorICAgICAgIDxsaT4KKyAgICAgICBUaGUgVG9hc3RlciBpbnN0YW5jZSBmb3IgcHJvamVjdCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHNodXQgZG93bgorICAgICAgIDwvbGk+CisgICAgICAgPGxpPgorICAgICAgIFlvdSBjYW4gc3RhcnQgVG9hc3RlciBpbmRlcGVuZGVudGx5IGZvciBhZHZhbmNlZCBwcm9qZWN0IG1hbmFnZW1lbnQgYW5kIGFuYWx5c2lzOgorICAgICAgICAgPHByZT48Y29kZT4KKyAgICAgICAgIFNldCB1cCBiaXRiYWtlIGVudmlyb25tZW50OgorICAgICAgICAgJCBjZCB7e2luc3RhbGxfZGlyfX0KKyAgICAgICAgICQgLiBvZS1pbml0LWJ1aWxkLWVudiBbdG9hc3Rlcl9zZXJ2ZXJdCisKKyAgICAgICAgIE9wdGlvbiAxOiBTdGFydCBhIGxvY2FsIFRvYXN0ZXIgc2VydmVyLCBvcGVuIGxvY2FsIGJyb3dzZXIgdG8gImxvY2FsaG9zdDo4MDAwIgorICAgICAgICAgJCAuIHRvYXN0ZXIgc3RhcnQgd2VicG9ydD04MDAwCisKKyAgICAgICAgIE9wdGlvbiAyOiBTdGFydCBhIHNoYXJlZCBUb2FzdGVyIHNlcnZlciwgb3BlbiBhbnkgYnJvd3NlciB0byAiW2hvc3RfaXBdOjgwMDAiCisgICAgICAgICAkIC4gdG9hc3RlciBzdGFydCB3ZWJwb3J0PTAuMC4wLjA6ODAwMAorCisgICAgICAgICBUbyBzdG9wIHRoZSBUb2FzdGVyIHNlcnZlcjoKKyAgICAgICAgICQgLiB0b2FzdGVyIHN0b3AKKyAgICAgICAgIDwvY29kZT48L3ByZT4KKyAgICAgICA8L2xpPgorICAgICA8L3VsPgorICAgICA8L3A+CisgICAgPC9kaXY+CisgICA8L2Rpdj4KKworeyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9sYXllcmRldGFpbHMuaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9sYXllcmRldGFpbHMuaHRtbAppbmRleCBlMDA2OWRiLi4xZTI2ZTMxIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbGF5ZXJkZXRhaWxzLmh0bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL2xheWVyZGV0YWlscy5odG1sCkBAIC0xLDQgKzEsNCBAQAoteyUgZXh0ZW5kcyAiYmFzZS5odG1sIiAlfQoreyUgZXh0ZW5kcyBwcm9qZWN0X3NwZWNpZmljfHllc25vOiJiYXNlcHJvamVjdHNwZWNpZmljcGFnZS5odG1sLGJhc2UuaHRtbCIgJX0KIHslIGxvYWQgcHJvamVjdHRhZ3MgJX0KIHslIGxvYWQgaHVtYW5pemUgJX0KIHslIGxvYWQgc3RhdGljICV9CkBAIC0zMTAsNiArMzEwLDcgQEAKICAgICAgICAgICAgIHslIGVuZHdpdGggJX0KICAgICAgICAgICAgIHslIGVuZHdpdGggJX0KICAgICAgICAgICA8L2Rpdj4KKwogICAgICAgICA8L2Rpdj4gPCEtLSBlbmQgdGFiIGNvbnRlbnQgLS0+CiAgICAgICA8L2Rpdj4gPCEtLSBlbmQgdGFiYWJsZSAtLT4KIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL21yYl9zZWN0aW9uLmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbXJiX3NlY3Rpb24uaHRtbAppbmRleCBjNWI5ZmU5Li45OGQ5ZmFjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbXJiX3NlY3Rpb24uaHRtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbXJiX3NlY3Rpb24uaHRtbApAQCAtMTE5LDcgKzExOSw3IEBACiAgICAgICAgICAgdGl0bGU9IlRvYXN0ZXIgaXMgY2xvbmluZyB0aGUgcmVwb3MgcmVxdWlyZWQgZm9yIHlvdXIgYnVpbGQiPgogICAgIDwvc3Bhbj4KIAotICAgIENsb25pbmcgPHNwYW4gaWQ9InJlcG9zLWNsb25lZC1wZXJjZW50YWdlLTwlOmlkJT4iPjwlOnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlJT48L3NwYW4+JSBjb21wbGV0ZQorICAgIENsb25pbmcgPHNwYW4gaWQ9InJlcG9zLWNsb25lZC1wZXJjZW50YWdlLTwlOmlkJT4iPjwlOnJlcG9zX2Nsb25lZF9wZXJjZW50YWdlJT48L3NwYW4+JSBjb21wbGV0ZSA8c3BhbiBpZD0icmVwb3MtY2xvbmVkLXByb2dyZXNzaXRlbS08JTppZCU+Ij4oPCU6cHJvZ3Jlc3NfaXRlbSU+KTwvc3Bhbj4KIAogICAgIDwlaW5jbHVkZSB0bXBsPScjY2FuY2VsLXRlbXBsYXRlJy8lPgogICA8L2Rpdj4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9uZXdjdXN0b21pbWFnZS5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld2N1c3RvbWltYWdlLmh0bWwKaW5kZXggOTgwMTc5YS4uMDc2NmU1ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld2N1c3RvbWltYWdlLmh0bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld2N1c3RvbWltYWdlLmh0bWwKQEAgLTEsNCArMSw0IEBACi17JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Cit7JSBleHRlbmRzIHByb2plY3Rfc3BlY2lmaWN8eWVzbm86ImJhc2Vwcm9qZWN0c3BlY2lmaWNwYWdlLmh0bWwsYmFzZS5odG1sIiAlfQogeyUgbG9hZCBwcm9qZWN0dGFncyAlfQogeyUgbG9hZCBodW1hbml6ZSAlfQogeyUgbG9hZCBzdGF0aWMgJX0KQEAgLTgsNyArOCw3IEBACiAKIDxkaXYgY2xhc3M9InJvdyI+CiAKLSAgeyUgaW5jbHVkZSAicHJvamVjdHRvcGJhci5odG1sIiAlfQorICB7JSBpbmNsdWRlIHByb2plY3Rfc3BlY2lmaWN8eWVzbm86InByb2plY3Rfc3BlY2lmaWNfdG9wYmFyLmh0bWwscHJvamVjdHRvcGJhci5odG1sIiAlfQogCiAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgeyUgdXJsIHRhYmxlX25hbWUgcHJvamVjdC5pZCBhcyB4aHJfdGFibGVfdXJsICV9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbmV3cHJvamVjdC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld3Byb2plY3QuaHRtbAppbmRleCBiZDAzYmI1Li43ZTFlYmIzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbmV3cHJvamVjdC5odG1sCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9uZXdwcm9qZWN0Lmh0bWwKQEAgLTIwLDIzICsyMCwxOSBAQAogICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJlcXVpcmVkIGlkPSJuZXctcHJvamVjdC1uYW1lIiBuYW1lPSJwcm9qZWN0bmFtZSI+CiAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2sgdGV4dC1kYW5nZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgaWQ9ImhpbnQtZXJyb3ItcHJvamVjdC1uYW1lIj5BIHByb2plY3Qgd2l0aCB0aGlzIG5hbWUgZXhpc3RzLiBQcm9qZWN0IG5hbWVzIG11c3QgYmUgdW5pcXVlLjwvcD4KLTwhLS0KLSAgICAgICAgICAgIDxmaWVsZHNldD4KLSAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InByb2plY3QtZm9ybSI+UHJvamVjdCB0eXBlPC9sYWJlbD4KLSAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJwcm9qZWN0LWZvcm0gcmFkaW8iPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icHR5cGUiIHZhbHVlPSJhbmFseXNpcyIgY2hlY2tlZC8+IEFuYWx5c2lzIFByb2plY3Q8L2xhYmVsPgogCisgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJwcm9qZWN0LWZvcm0iPlByb2plY3QgdHlwZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgIHslIGlmIHJlbGVhc2VzLmNvdW50ID4gMCAlfQotICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InByb2plY3QtZm9ybSByYWRpbyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJwdHlwZSIgdmFsdWU9ImJ1aWxkIiBjaGVja2VkIC8+IEJ1aWxkIFByb2plY3Q8L2xhYmVsPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9InByb2plY3QtZm9ybSByYWRpbyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzVweDsiPjxpbnB1dCBpZD0ndHlwZS1uZXcnICAgIHR5cGU9InJhZGlvIiBuYW1lPSJwdHlwZSIgdmFsdWU9Im5ldyIvPiBOZXcgcHJvamVjdDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgeyUgZW5kaWYgJX0KLSAgICAgICAgICAgICAgPC9maWVsZHNldD4gLS0+Ci0gICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InB0eXBlIiB2YWx1ZT0iYnVpbGQiIC8+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0icHJvamVjdC1mb3JtIHJhZGlvIiBzdHlsZT0icGFkZGluZy1sZWZ0OiAzNXB4OyI+PGlucHV0IGlkPSd0eXBlLWltcG9ydCcgdHlwZT0icmFkaW8iIG5hbWU9InB0eXBlIiB2YWx1ZT0iaW1wb3J0Ii8+IEltcG9ydCBjb21tYW5kIGxpbmUgcHJvamVjdDwvbGFiZWw+CiAKICAgICAgICAgeyUgaWYgcmVsZWFzZXMuY291bnQgPiAwICV9Ci0JCQkJPGRpdiBjbGFzcz0icmVsZWFzZSBmb3JtLWdyb3VwIj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlIGZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgeyUgaWYgcmVsZWFzZXMuY291bnQgPiAxICV9CiAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+CiAgICAgICAgICAgICAgICAgUmVsZWFzZQotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gZ2V0LWhlbHAiIHRpdGxlPSJUaGUgdmVyc2lvbiBvZiB0aGUgYnVpbGQgc3lzdGVtIHlvdSB3YW50IHRvIHVzZSI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gZ2V0LWhlbHAiIHRpdGxlPSJUaGUgdmVyc2lvbiBvZiB0aGUgYnVpbGQgc3lzdGVtIHlvdSB3YW50IHRvIHVzZSBmb3IgdGhpcyBwcm9qZWN0Ij48L3NwYW4+CiAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0icHJvamVjdHZlcnNpb24iIGlkPSJwcm9qZWN0dmVyc2lvbiIgY2xhc3M9ImZvcm0tY29udHJvbCI+CiAgICAgICAgICAgICAgICAgeyUgZm9yIHJlbGVhc2UgaW4gcmVsZWFzZXMgJX0KQEAgLTU5LDI4ICs1NSwyNiBAQAogICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwcm9qZWN0dmVyc2lvbiIgdmFsdWU9Int7cmVsZWFzZXMuMC5pZH19Ii8+CiAgICAgICAgICAgICB7JSBlbmRpZiAlfQotICAgICAgICAgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWNrYm94LW1lcmdlYXR0ciIgbmFtZT0ibWVyZ2VhdHRyIiB2YWx1ZT0ibWVyZ2VhdHRyIj4gIE1lcmdlZCBUb2FzdGVyIHNldHRpbmdzIChDb21tYW5kIGxpbmUgdXNlciBjb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIiB0aXRsZT0iUGxhY2UgdGhlIFRvYXN0ZXIgc2V0dGluZ3MgaW50byB0aGUgc3RhbmRhcmQgJ2xvY2FsLmNvbmYnIGFuZCAnYmJsYXllcnMuY29uZicgaW5zdGVhZCBvZiAndG9hc3Rlcl9iYmxheWVycy5jb25mJyBhbmQgJ3RvYXN0ZXIuY29uZiciPjwvc3Bhbj4KKworICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgeyUgZW5kaWYgJX0KKworICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnVpbGQtaW1wb3J0IGZvcm0tZ3JvdXAiIGlkPSJpbXBvcnQtcHJvamVjdCI+CisgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iY29udHJvbC1sYWJlbCI+SW1wb3J0IGV4aXN0aW5nIHByb2plY3QgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiBnZXQtaGVscCIgdGl0bGU9IkVudGVyIGEgcGF0aCB0byBhbiBleGlzdGluZyBidWlsZCBkaXJlY3RvcnksIGltcG9ydCB0aGUgZXhpc3Rpbmcgc2V0dGluZ3MsIGFuZCBjcmVhdGUgYSBUb2FzdGVyIFByb2plY3QgZm9yIGl0LiI+PC9zcGFuPgorICAgICAgICAgICAgICA8L2xhYmVsPgorICAgICAgICAgICAgICA8aW5wdXQgc3R5bGU9IndpZHRoOiAzMyU7InR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJlcXVpcmVkIGlkPSJpbXBvcnQtcHJvamVjdC1kaXIiIG5hbWU9ImltcG9ydGRpciI+CisgICAgICAgICAgICA8L2Rpdj4KKwogICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wLWFpciI+CiAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJjcmVhdGUtcHJvamVjdC1idXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIiB2YWx1ZT0iQ3JlYXRlIHByb2plY3QiLz4KICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtaW5saW5lIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyI+VG8gY3JlYXRlIGEgcHJvamVjdCwgeW91IG5lZWQgdG8gZW50ZXIgYSBwcm9qZWN0IG5hbWU8L3NwYW4+CiAgICAgICAgICAgICA8L2Rpdj4KIAogICAgICAgICA8L2Zvcm0+Ci0gICAgICAgIDwhLS0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUgd2VsbCI+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtYmxvY2siPgotICAgICAgICAgICAgICAgICA8aDQ+VG9hc3RlciBwcm9qZWN0IHR5cGVzPC9oND4KLSAgICAgICAgICAgICAgICAgPHA+V2l0aCBhIDxzdHJvbmc+YnVpbGQgcHJvamVjdDwvc3Ryb25nPiB5b3UgY29uZmlndXJlIGFuZCBydW4geW91ciBidWlsZHMgZnJvbSBUb2FzdGVyLjwvcD4KLSAgICAgICAgICAgICAgICAgPHA+V2l0aCBhbiA8c3Ryb25nPmFuYWx5c2lzIHByb2plY3Q8L3N0cm9uZz4sIHRoZSBidWlsZHMgYXJlIGNvbmZpZ3VyZWQgYW5kIHJ1biBieSBhbm90aGVyIHRvb2wKLSAgICAgICAgICAgICAgICAgKHNvbWV0aGluZyBsaWtlIEJ1aWxkYm90IG9yIEplbmtpbnMpLCBhbmQgdGhlIHByb2plY3Qgb25seSBjb2xsZWN0cyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gICAgICAgICAgICAgICAgIGJ1aWxkcyAocGFja2FnZXMsIHJlY2lwZXMsIGRlcGVuZGVuY2llcywgbG9ncywgZXRjKS4gPC9wPgotICAgICAgICAgICAgICAgICA8cD5Zb3UgY2FuIHJlYWQgbW9yZSBvbiA8YSBocmVmPSIjIj5ob3cgdG8gc2V0IHVwIGFuIGFuYWx5c2lzIHByb2plY3Q8L2E+Ci0gICAgICAgICAgICAgICAgIGluIHRoZSBUb2FzdGVyIG1hbnVhbC48L3A+Ci0gICAgICAgICAgICAgICAgIDxoND5SZWxlYXNlPC9oND4KLSAgICAgICAgICAgICAgICAgPHA+SWYgeW91IGNyZWF0ZSBhIDxzdHJvbmc+YnVpbGQgcHJvamVjdDwvc3Ryb25nPiwgeW91IHdpbGwgbmVlZCB0byBzZWxlY3QgYSA8c3Ryb25nPnJlbGVhc2U8L3N0cm9uZz4sCi0gICAgICAgICAgICAgICAgIHdoaWNoIGlzIHRoZSB2ZXJzaW9uIG9mIHRoZSBidWlsZCBzeXN0ZW0geW91IHdhbnQgdG8gdXNlIHRvIHJ1biB5b3VyIGJ1aWxkcy48L3A+Ci0gICAgICAgICAgICAgPC9kaXY+IC0tPgogICAgICAgPC9kaXY+CiAgICAgPC9kaXY+CiAKQEAgLTg5LDYgKzgzLDcgQEAKICAgICAgICAgICAgIC8vIGhpZGUgdGhlIG5ldyBwcm9qZWN0IGJ1dHRvbgogICAgICAgICAgICAgJCgiI25ldy1wcm9qZWN0LWJ1dHRvbiIpLmhpZGUoKTsKICAgICAgICAgICAgICQoJy5idG4tcHJpbWFyeScpLmF0dHIoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7CisgICAgICAgICAgICAkKCcjdHlwZS1uZXcnKS5hdHRyKCdjaGVja2VkJywgJ2NoZWNrZWQnKTsKIAogICAgICAgICAgICAgLy8gZW5hYmxlIHN1Ym1pdCBidXR0b24gd2hlbiBhbGwgcmVxdWlyZWQgZmllbGRzIGFyZSBwb3B1bGF0ZWQKICAgICAgICAgICAgICQoImlucHV0I25ldy1wcm9qZWN0LW5hbWUiKS5vbignaW5wdXQnLCBmdW5jdGlvbigpIHsKQEAgLTExOCwyMCArMTEzLDI0IEBACiAgICAgICAgICAgICAgICAgICQoIi5idG4tcHJpbWFyeSIpKTsKIAogCi0vKgkJCS8vIEhpZGUgdGhlIHByb2plY3QgcmVsZWFzZSB3aGVuIHlvdSBzZWxlY3QgYW4gYW5hbHlzaXMgcHJvamVjdAorCQkJLy8gSGlkZSB0aGUgcHJvamVjdCByZWxlYXNlIHdoZW4geW91IHNlbGVjdCBhbiBhbmFseXNpcyBwcm9qZWN0CiAJCQlmdW5jdGlvbiBwcm9qZWN0VHlwZSgpIHsKLQkJCQlpZiAoJCgiaW5wdXRbdHlwZT0ncmFkaW8nXTpjaGVja2VkIikudmFsKCkgPT0gJ2J1aWxkJykgeworCQkJCWlmICgkKCJpbnB1dFt0eXBlPSdyYWRpbyddOmNoZWNrZWQiKS52YWwoKSA9PSAnbmV3JykgeworCQkJCQkkKCcuYnVpbGQtaW1wb3J0JykuZmFkZU91dCgpOwogCQkJCQkkKCcucmVsZWFzZScpLmZhZGVJbigpOworICAgICAgICAgICAgICAgICAgICAkKCcjaW1wb3J0LXByb2plY3QtZGlyJykucmVtb3ZlQXR0cigncmVxdWlyZWQnKTsKIAkJCQl9CiAJCQkJZWxzZSB7CiAJCQkJCSQoJy5yZWxlYXNlJykuZmFkZU91dCgpOworCQkJCQkkKCcuYnVpbGQtaW1wb3J0JykuZmFkZUluKCk7CisgICAgICAgICAgICAgICAgICAgICQoJyNpbXBvcnQtcHJvamVjdC1kaXInKS5hdHRyKCdyZXF1aXJlZCcsICdyZXF1aXJlZCcpOwogCQkJCX0KIAkJCX0KIAkJCXByb2plY3RUeXBlKCk7CiAKIAkJCSQoJ2lucHV0OnJhZGlvJykuY2hhbmdlKGZ1bmN0aW9uKCl7CiAJCQkJcHJvamVjdFR5cGUoKTsKLQkJCX0pOyAqLworCQkJfSk7CiAgICAgICAgIH0pOwogICAgIDwvc2NyaXB0PgogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvbmV3cHJvamVjdF9zcGVjaWZpYy5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld3Byb2plY3Rfc3BlY2lmaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmE3N2YyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL25ld3Byb2plY3Rfc3BlY2lmaWMuaHRtbApAQCAtMCwwICsxLDk1IEBACit7JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Cit7JSBsb2FkIHByb2plY3R0YWdzICV9Cit7JSBsb2FkIGh1bWFuaXplICV9CisKK3slIGJsb2NrIHRpdGxlICV9IENyZWF0ZSBhIG5ldyBwcm9qZWN0IC0gVG9hc3RlciB7JSBlbmRibG9jayAlfQorCit7JSBibG9jayBwYWdlY29udGVudCAlfQorPGRpdiBjbGFzcz0icm93Ij4KKyAgPGRpdiBjbGFzcz0iY29sLW1kLTEyIj4KKyAgICA8ZGl2IGNsYXNzPSJwYWdlLWhlYWRlciI+CisgICAgICAgICAgPGgxPkNyZWF0ZSBhIG5ldyBwcm9qZWN0PC9oMT4KKyAgICAgICAgPC9kaXY+CisgICAgeyUgaWYgYWxlcnQgJX0KKyAgICAgIDxkaXYgY2xhc3M9ImFsZXJ0IGFsZXJ0LWRhbmdlciIgcm9sZT0iYWxlcnQiPnt7YWxlcnR9fTwvZGl2PgorICAgIHslIGVuZGlmICV9CisKKyAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiAgYWN0aW9uPSJ7JXVybCAibmV3cHJvamVjdF9zcGVjaWZpYyIgcHJvamVjdF9wayAlfSI+eyUgY3NyZl90b2tlbiAlfQorICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiIGlkPSJ2YWxpZGF0ZS1wcm9qZWN0LW5hbWUiPgorICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJjb250cm9sLWxhYmVsIj5Qcm9qZWN0IG5hbWUgPHNwYW4gY2xhc3M9InRleHQtbXV0ZWQiPihyZXF1aXJlZCk8L3NwYW4+PC9sYWJlbD4KKyAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiByZXF1aXJlZCBpZD0ibmV3LXByb2plY3QtbmFtZSIgbmFtZT0iZGlzcGxheV9wcm9qZWN0bmFtZSIgdmFsdWU9Int7cHJvamVjdG5hbWV9fSIgZGlzYWJsZWQ+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPHAgY2xhc3M9ImhlbHAtYmxvY2sgdGV4dC1kYW5nZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgaWQ9ImhpbnQtZXJyb3ItcHJvamVjdC1uYW1lIj5BIHByb2plY3Qgd2l0aCB0aGlzIG5hbWUgZXhpc3RzLiBQcm9qZWN0IG5hbWVzIG11c3QgYmUgdW5pcXVlLjwvcD4KKyAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icHR5cGUiIHZhbHVlPSJidWlsZCIgLz4KKyAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icHJvamVjdG5hbWUiIHZhbHVlPSJ7e3Byb2plY3RuYW1lfX0iIC8+CisKKyAgICAgICAgeyUgaWYgcmVsZWFzZXMuY291bnQgPiAwICV9CisJCQkJPGRpdiBjbGFzcz0icmVsZWFzZSBmb3JtLWdyb3VwIj4KKyAgICAgICAgICAgIHslIGlmIHJlbGVhc2VzLmNvdW50ID4gMSAlfQorICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImNvbnRyb2wtbGFiZWwiPgorICAgICAgICAgICAgICAgIFJlbGVhc2UKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIiB0aXRsZT0iVGhlIHZlcnNpb24gb2YgdGhlIGJ1aWxkIHN5c3RlbSB5b3Ugd2FudCB0byB1c2UiPjwvc3Bhbj4KKyAgICAgICAgICAgICAgPC9sYWJlbD4KKyAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJwcm9qZWN0dmVyc2lvbiIgaWQ9InByb2plY3R2ZXJzaW9uIiBjbGFzcz0iZm9ybS1jb250cm9sIj4KKyAgICAgICAgICAgICAgICB7JSBmb3IgcmVsZWFzZSBpbiByZWxlYXNlcyAlfQorICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ7e3JlbGVhc2UuaWR9fSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHslaWYgZGVmYXVsdGJyYW5jaCA9PSByZWxlYXNlLm5hbWUgJX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgeyVlbmRpZiV9CisgICAgICAgICAgICAgICAgICAgICA+e3tyZWxlYXNlLmRlc2NyaXB0aW9ufX08L29wdGlvbj4KKyAgICAgICAgICAgICAgICB7JSBlbmRmb3IgJX0KKyAgICAgICAgICAgICAgPC9zZWxlY3Q+CisgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTQiPgorICAgICAgICAgICAgICAgIHslIGZvciByZWxlYXNlIGluIHJlbGVhc2VzICV9CisgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwdGV4dCIgaWQ9ImRlc2NyaXB0aW9uLXt7cmVsZWFzZS5pZH19IiBzdHlsZT0iZGlzcGxheTogbm9uZSI+CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWJsb2NrIj57e3JlbGVhc2UuaGVscHRleHR8c2FmZX19PC9zcGFuPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgeyUgZW5kZm9yICV9CisgICAgICAgICAgICB7JSBlbHNlICV9CisgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InByb2plY3R2ZXJzaW9uIiB2YWx1ZT0ie3tyZWxlYXNlcy4wLmlkfX0iLz4KKyAgICAgICAgICAgIHslIGVuZGlmICV9CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9maWVsZHNldD4KKyAgICAgICAgeyUgZW5kaWYgJX0KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcC1haXIiPgorICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBpZD0iY3JlYXRlLXByb2plY3QtYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGJ0bi1sZyIgdmFsdWU9IkNyZWF0ZSBwcm9qZWN0Ii8+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWlubGluZSIgc3R5bGU9InZlcnRpY2FsLWFsaWduOm1pZGRsZTsiPlRvIGNyZWF0ZSBhIHByb2plY3QsIHlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIHJlbGVhc2U8L3NwYW4+CisgICAgICAgICAgICA8L2Rpdj4KKworICAgICAgICA8L2Zvcm0+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gaGlkZSB0aGUgbmV3IHByb2plY3QgYnV0dG9uLCBuYW1lIGlzIHByZXNldAorICAgICAgICAgICAgJCgiI25ldy1wcm9qZWN0LWJ1dHRvbiIpLmhpZGUoKTsKKworICAgICAgICAgICAgLy8gZW5hYmxlIHN1Ym1pdCBidXR0b24gd2hlbiBhbGwgcmVxdWlyZWQgZmllbGRzIGFyZSBwb3B1bGF0ZWQKKyAgICAgICAgICAgICQoImlucHV0I25ldy1wcm9qZWN0LW5hbWUiKS5vbignaW5wdXQnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoJCgiaW5wdXQjbmV3LXByb2plY3QtbmFtZSIpLnZhbCgpLmxlbmd0aCA+IDAgKXsKKyAgICAgICAgICAgICAgICAgICAgJCgnLmJ0bi1wcmltYXJ5JykucmVtb3ZlQXR0cignZGlzYWJsZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgJCgiLmhlbHAtaW5saW5lIikuY3NzKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAkKCcuYnRuLXByaW1hcnknKS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpOworICAgICAgICAgICAgICAgICAgICAkKCIuaGVscC1pbmxpbmUiKS5jc3MoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIHNob3cgcmVsZXZhbnQgaGVscCB0ZXh0IGZvciB0aGUgc2VsZWN0ZWQgcmVsZWFzZQorICAgICAgICAgICAgdmFyIHNlbGVjdGVkX3JlbGVhc2UgPSAkKCdzZWxlY3QnKS52YWwoKTsKKyAgICAgICAgICAgICQoIiNkZXNjcmlwdGlvbi0iICsgc2VsZWN0ZWRfcmVsZWFzZSkuc2hvdygpOworCisgICAgICAgICAgICAkKCdzZWxlY3QnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKKyAgICAgICAgICAgICAgICB2YXIgbmV3X3JlbGVhc2UgPSAkKCdzZWxlY3QnKS52YWwoKTsKKyAgICAgICAgICAgICAgICAkKCIuaGVscHRleHQiKS5oaWRlKCk7CisgICAgICAgICAgICAgICAgJCgnI2Rlc2NyaXB0aW9uLScgKyBuZXdfcmVsZWFzZSkuZmFkZUluKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKworeyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdC5odG1sCmluZGV4IDExNjAzZDEuLmZhNDFlM2MgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Lmh0bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL3Byb2plY3QuaHRtbApAQCAtMSw0ICsxLDQgQEAKLXslIGV4dGVuZHMgImJhc2Vwcm9qZWN0cGFnZS5odG1sIiAlfQoreyUgZXh0ZW5kcyBwcm9qZWN0X3NwZWNpZmljfHllc25vOiJiYXNlcHJvamVjdHNwZWNpZmljcGFnZS5odG1sLGJhc2Vwcm9qZWN0cGFnZS5odG1sIiAlfQogCiB7JSBsb2FkIHByb2plY3R0YWdzICV9CiB7JSBsb2FkIGh1bWFuaXplICV9CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgdHJ5IHsKICAgICAgIHByb2plY3RQYWdlSW5pdChjdHgpOwogICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgIGRvY3VtZW50LndyaXRlKCJTb3JyeSwgQW4gZXJyb3IgaGFzIG9jY3VycmVkIGxvYWRpbmcgdGhpcyBwYWdlIik7CisgICAgICBkb2N1bWVudC53cml0ZSgiU29ycnksIEFuIGVycm9yIGhhcyBvY2N1cnJlZCBsb2FkaW5nIHRoaXMgcGFnZSAocHJvamVjdCk6IitlKTsKICAgICAgIGNvbnNvbGUud2FybihlKTsKICAgICB9CiAgIH0pOwpAQCAtOTMsNiArOTMsNyBAQAogICAgICAgPC9mb3JtPgogICAgIDwvZGl2PgogCisJeyUgaWYgbm90IHByb2plY3Rfc3BlY2lmaWMgJX0KICAgICA8ZGl2IGNsYXNzPSJ3ZWxsIHdlbGwtdHJhbnNwYXJlbnQiPgogICAgICAgPGgzPk1vc3QgYnVpbHQgcmVjaXBlczwvaDM+CiAKQEAgLTEwNSw2ICsxMDYsNyBAQAogICAgICAgPC91bD4KICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9ImZyZXEtYnVpbGQtYnRuIiBkaXNhYmxlZD0iZGlzYWJsZWQiPkJ1aWxkIHNlbGVjdGVkIHJlY2lwZXM8L2J1dHRvbj4KICAgICA8L2Rpdj4KKyAgICB7JSBlbmRpZiAlfQogCiAgICAgPGRpdiBjbGFzcz0id2VsbCB3ZWxsLXRyYW5zcGFyZW50Ij4KICAgICAgIDxoMz5Qcm9qZWN0IHJlbGVhc2U8L2gzPgpAQCAtMTU3LDUgKzE1OSw2IEBACiAgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgbGVhZCIgaWQ9ImxheWVycy1pbi1wcm9qZWN0LWxpc3QiPgogICAgICAgPC91bD4KICAgPC9kaXY+CisKIDwvZGl2PgogeyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0X3NwZWNpZmljLmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdF9zcGVjaWZpYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MjVkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdF9zcGVjaWZpYy5odG1sCkBAIC0wLDAgKzEsMTYyIEBACit7JSBleHRlbmRzICJiYXNlcHJvamVjdHNwZWNpZmljcGFnZS5odG1sIiAlfQorCit7JSBsb2FkIHByb2plY3R0YWdzICV9Cit7JSBsb2FkIGh1bWFuaXplICV9Cit7JSBsb2FkIHN0YXRpYyAlfQorCit7JSBibG9jayB0aXRsZSAlfSBDb25maWd1cmF0aW9uIC0ge3twcm9qZWN0Lm5hbWV9fSAtIFRvYXN0ZXIgeyUgZW5kYmxvY2sgJX0KK3slIGJsb2NrIHByb2plY3RpbmZvbWFpbiAlfQorCis8c2NyaXB0IHNyYz0ieyUgc3RhdGljICdqcy9sYXllckRlcHNNb2RhbC5qcycgJX0iPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InslIHN0YXRpYyAnanMvcHJvamVjdHBhZ2UuanMnICV9Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpeworICAgIHZhciBjdHggPSB7CisgICAgICB0ZXN0UmVsZWFzZUNoYW5nZVVybDogInslIHVybCAneGhyX3Rlc3RyZWxlYXNlY2hhbmdlJyBwcm9qZWN0LmlkICV9IiwKKyAgICB9OworCisgICAgdHJ5IHsKKyAgICAgIHByb2plY3RQYWdlSW5pdChjdHgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIGRvY3VtZW50LndyaXRlKCJTb3JyeSwgQW4gZXJyb3IgaGFzIG9jY3VycmVkIGxvYWRpbmcgdGhpcyBwYWdlIik7CisgICAgICBjb25zb2xlLndhcm4oZSk7CisgICAgfQorICB9KTsKKzwvc2NyaXB0PgorCis8ZGl2IGlkPSJkZWxldGUtcHJvamVjdC1tb2RhbCIgY2xhc3M9Im1vZGFsIGZhZGUiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KKyAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIj4KKyAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4KKyAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CisgICAgICAgIDxoND5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJvamVjdD88L2g0PgorICAgICAgPC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KKyAgICAgICAgPHA+RGVsZXRpbmcgdGhlIDxzdHJvbmcgY2xhc3M9InByb2plY3QtbmFtZSI+PC9zdHJvbmc+IHByb2plY3QKKyAgICAgICAgd2lsbDo8L3A+CisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGk+Q2FuY2VsIGl0cyBidWlsZHMgY3VycmVudGx5IGluIHByb2dyZXNzPC9saT4KKyAgICAgICAgICA8bGk+UmVtb3ZlIGl0cyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uPC9saT4KKyAgICAgICAgICA8bGk+UmVtb3ZlIGl0cyBpbXBvcnRlZCBsYXllcnM8L2xpPgorICAgICAgICAgIDxsaT5SZW1vdmUgaXRzIGN1c3RvbSBpbWFnZXM8L2xpPgorICAgICAgICAgIDxsaT5SZW1vdmUgYWxsIGl0cyBidWlsZCBpbmZvcm1hdGlvbjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciI+CisgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBpZD0iZGVsZXRlLXByb2plY3QtY29uZmlybWVkIj4KKyAgICAgICAgICA8c3BhbiBkYXRhLXJvbGU9InN1Ym1pdC1zdGF0ZSI+RGVsZXRlIHByb2plY3Q8L3NwYW4+CisgICAgICAgICAgPHNwYW4gZGF0YS1yb2xlPSJsb2FkaW5nLXN0YXRlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmYS1wdWxzZSI+CisgICAgICAgICAgICA8aSBjbGFzcz0iZmEtcHVsc2UgaWNvbi1zcGlubmVyIj48L2k+CisgICAgICAgICAgPC9zcGFuPgorICAgICAgICAgICAgJm5ic3A7RGVsZXRpbmcgcHJvamVjdC4uLgorICAgICAgICAgIDwvc3Bhbj4KKyAgICAgICAgPC9idXR0b24+CisgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1saW5rIiBkYXRhLWRpc21pc3M9Im1vZGFsIj5DYW5jZWw8L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PjwhLS0gLy5tb2RhbC1jb250ZW50IC0tPgorICA8L2Rpdj48IS0tIC8ubW9kYWwtZGlhbG9nIC0tPgorPC9kaXY+CisKKworPGRpdiBjbGFzcz0icm93IiBpZD0icHJvamVjdC1wYWdlIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgPGRpdiBjbGFzcz0iY29sLW1kLTYiPgorICAgIDxkaXYgY2xhc3M9IndlbGwgd2VsbC10cmFuc3BhcmVudCIgaWQ9Im1hY2hpbmUtc2VjdGlvbiI+CisgICAgICA8aDM+TWFjaGluZTwvaDM+CisKKyAgICAgIDxwIGNsYXNzPSJsZWFkIj48c3BhbiBpZD0icHJvamVjdC1tYWNoaW5lLW5hbWUiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tZWRpdCIgaWQ9ImNoYW5nZS1tYWNoaW5lLXRvZ2dsZSI+PC9zcGFuPjwvcD4KKworICAgICAgPGZvcm0gaWQ9InNlbGVjdC1tYWNoaW5lLWZvcm0iIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBjbGFzcz0iZm9ybS1pbmxpbmUiPgorICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1ibG9jayI+TWFjaGluZSBzdWdnZXN0aW9ucyBjb21lIGZyb20gdGhlIGxpc3Qgb2YgbGF5ZXJzIGFkZGVkIHRvIHlvdXIgcHJvamVjdC4gSWYgeW91IGRvbid0IHNlZSB0aGUgbWFjaGluZSB5b3UgYXJlIGxvb2tpbmcgZm9yLCA8YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RtYWNoaW5lcycgcHJvamVjdC5pZCAlfSI+Y2hlY2sgdGhlIGZ1bGwgbGlzdCBvZiBtYWNoaW5lczwvYT48L3NwYW4+CisgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiIGlkPSJtYWNoaW5lLWlucHV0LWZvcm0iPgorICAgICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiBpZD0ibWFjaGluZS1jaGFuZ2UtaW5wdXQiIGF1dG9jb21wbGV0ZT0ib2ZmIiB2YWx1ZT0iIiBkYXRhLXByb3ZpZGU9InR5cGVhaGVhZCIgZGF0YS1taW5sZW5ndGg9IjEiIGRhdGEtYXV0b2NvbXBsZXRlPSJvZmYiIHR5cGU9InRleHQiPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJ1dHRvbiBpZD0ibWFjaGluZS1jaGFuZ2UtYnRuIiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IiB0eXBlPSJidXR0b24iPlNhdmU8L2J1dHRvbj4KKyAgICAgICAgPGEgaHJlZj0iIyIgaWQ9ImNhbmNlbC1tYWNoaW5lLWNoYW5nZSIgY2xhc3M9ImJ0biBidG4tbGluayI+Q2FuY2VsPC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1ibG9jayB0ZXh0LWRhbmdlciIgaWQ9ImludmFsaWQtbWFjaGluZS1uYW1lLWhlbHAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPkEgdmFsaWQgbWFjaGluZSBuYW1lIGNhbm5vdCBpbmNsdWRlIHNwYWNlcy48L3NwYW4+CisgICAgICAgIDxwIGNsYXNzPSJmb3JtLWxpbmsiPjxhIGhyZWY9InslIHVybCAncHJvamVjdG1hY2hpbmVzJyBwcm9qZWN0LmlkICV9Ij5WaWV3IGNvbXBhdGlibGUgbWFjaGluZXM8L2E+PC9wPgorICAgICAgPC9mb3JtPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0id2VsbCB3ZWxsLXRyYW5zcGFyZW50IiBpZD0iZGlzdHJvLXNlY3Rpb24iPgorICAgICAgPGgzPkRpc3RybzwvaDM+CisKKyAgICAgIDxwIGNsYXNzPSJsZWFkIj48c3BhbiBpZD0icHJvamVjdC1kaXN0cm8tbmFtZSI+PC9zcGFuPiA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1lZGl0IiBpZD0iY2hhbmdlLWRpc3Ryby10b2dnbGUiPjwvc3Bhbj48L3A+CisKKyAgICAgIDxmb3JtIGlkPSJzZWxlY3QtZGlzdHJvLWZvcm0iIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBjbGFzcz0iZm9ybS1pbmxpbmUiPgorICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1ibG9jayI+RGlzdHJvIHN1Z2dlc3Rpb25zIGNvbWUgZnJvbSB0aGUgTGF5ZXIgSW5kZXg8L2E+PC9zcGFuPgorICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KKyAgICAgICAgICA8aW5wdXQgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9ImRpc3Ryby1jaGFuZ2UtaW5wdXQiIGF1dG9jb21wbGV0ZT0ib2ZmIiB2YWx1ZT0iIiBkYXRhLXByb3ZpZGU9InR5cGVhaGVhZCIgZGF0YS1taW5sZW5ndGg9IjEiIGRhdGEtYXV0b2NvbXBsZXRlPSJvZmYiIHR5cGU9InRleHQiPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGJ1dHRvbiBpZD0iZGlzdHJvLWNoYW5nZS1idG4iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIHR5cGU9ImJ1dHRvbiI+U2F2ZTwvYnV0dG9uPgorICAgICAgICA8YSBocmVmPSIjIiBpZD0iY2FuY2VsLWRpc3Ryby1jaGFuZ2UiIGNsYXNzPSJidG4gYnRuLWxpbmsiPkNhbmNlbDwvYT4KKyAgICAgICAgPHAgY2xhc3M9ImZvcm0tbGluayI+PGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0ZGlzdHJvcycgcHJvamVjdC5pZCAlfSI+VmlldyBjb21wYXRpYmxlIGRpc3Ryb3M8L2E+PC9wPgorICAgICAgPC9mb3JtPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0id2VsbCB3ZWxsLXRyYW5zcGFyZW50Ij4KKyAgICAgIDxoMz5Nb3N0IGJ1aWx0IHJlY2lwZXM8L2gzPgorCisgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1pbmZvIiBzdHlsZT0iZGlzcGxheTpub25lIiBpZD0ibm8tbW9zdC1idWlsdCI+CisgICAgICAgIDxoND5Zb3UgaGF2ZW4ndCBidWlsdCBhbnkgcmVjaXBlcyB5ZXQ8L2g0PgorICAgICAgICA8cCBjbGFzcz0iZm9ybS1saW5rIj48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RpbWFnZXJlY2lwZXMnIHByb2plY3QuaWQgJX0iPkNob29zZSBhIHJlY2lwZSB0byBidWlsZDwvYT48L3A+CisgICAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGxlYWQiIGlkPSJmcmVxLWJ1aWxkLWxpc3QiPgorICAgICAgPC91bD4KKyAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaWQ9ImZyZXEtYnVpbGQtYnRuIiBkaXNhYmxlZD0iZGlzYWJsZWQiPkJ1aWxkIHNlbGVjdGVkIHJlY2lwZXM8L2J1dHRvbj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9IndlbGwgd2VsbC10cmFuc3BhcmVudCI+CisgICAgICA8aDM+UHJvamVjdCByZWxlYXNlPC9oMz4KKworICAgICAgPHAgY2xhc3M9ImxlYWQiPjxzcGFuIGlkPSJwcm9qZWN0LXJlbGVhc2UtdGl0bGUiPjwvc3Bhbj4KKworICAgICAgPCEtLSBDb21tZW50IG91dCB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIHByb2plY3QgcmVsZWFzZSwgdW50aWwgd2UgZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGlzIGZ1bmN0aW9uYWxpdHkgLS0+CisKKyAgICAgIDwhLS1pIHRpdGxlPSIiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IiIgaWQ9InJlbGVhc2UtY2hhbmdlLXRvZ2dsZSIgY2xhc3M9Imljb24tcGVuY2lsIj48L2ktLT4KKyAgICAgIDwvcD4KKworICAgICAgPCEtLSBDb21tZW50IG91dCB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgdGhlIHByb2plY3QgcmVsZWFzZSwgdW50aWwgd2UgZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGlzIGZ1bmN0aW9uYWxpdHkgLS0+CisKKyAgICAgIDwhLS1mb3JtIGNsYXNzPSJmb3JtLWlubGluZSIgaWQ9ImNoYW5nZS1yZWxlYXNlLWZvcm0iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KKyAgICAgICAgPHNlbGVjdD48L3NlbGVjdD4KKyAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBzdHlsZT0ibWFyZ2luLWxlZnQ6NXB4OyIgaWQ9ImNoYW5nZS1yZWxlYXNlLWJ0biI+Q2hhbmdlPC9idXR0b24+IDxhIGhyZWY9IiMiIGlkPSJjYW5jZWwtcmVsZWFzZS1jaGFuZ2UiIGNsYXNzPSJidG4gYnRuLWxpbmsiPkNhbmNlbDwvYT4KKyAgICAgIDwvZm9ybS0tPgorICAgIDwvZGl2PgorICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJjb2wtbWQtNiI+CisgICAgPGRpdiBjbGFzcz0id2VsbCB3ZWxsLXRyYW5zcGFyZW50IiBpZD0ibGF5ZXItY29udGFpbmVyIj4KKyAgICAgIDxoMz5MYXllcnMgPHNwYW4gY2xhc3M9ImNvdW50ZXIiPig8c3BhbiBpZD0icHJvamVjdC1sYXllcnMtY291bnQiPjwvc3Bhbj4pPC9zcGFuPgorICAgICAgICA8c3BhbiB0aXRsZT0iT3BlbkVtYmVkZGVkIG9yZ2FuaXNlcyByZWNpcGVzIGFuZCBtYWNoaW5lcyBpbnRvIHRoZW1hdGljIGdyb3VwcyBjYWxsZWQgPHN0cm9uZz5sYXllcnM8L3N0cm9uZz4uIENsaWNrIG9uIGEgbGF5ZXIgbmFtZSB0byBzZWUgdGhlIHJlY2lwZXMgYW5kIG1hY2hpbmVzIGl0IGluY2x1ZGVzLiIgY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcXVlc3Rpb24tc2lnbiBnZXQtaGVscCI+PC9zcGFuPgorICAgICAgPC9oMz4KKworICAgICAgPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyIgaWQ9Im5vLWxheWVycy1pbi1wcm9qZWN0IiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICAgICAgPGg0PlRoaXMgcHJvamVjdCBoYXMgbm8gbGF5ZXJzPC9oND4KKyAgICAgICAgSW4gb3JkZXIgdG8gYnVpbGQgdGhpcyBwcm9qZWN0IHlvdSBuZWVkIHRvIGFkZCBzb21lIGxheWVycyBmaXJzdC4gRm9yIHRoYXQgeW91IGNhbjoKKyAgICAgICAgPHVsPgorICAgICAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RsYXllcnMnIHByb2plY3QuaWQgJX0iPkNob29zZSBmcm9tIHRoZSBsYXllcnMgY29tcGF0aWJsZSB3aXRoIHRoaXMgcHJvamVjdDwvYT48L2xpPgorICAgICAgICAgIDxsaT48YSBocmVmPSJ7JSB1cmwgJ2ltcG9ydGxheWVyJyBwcm9qZWN0LmlkICV9Ij5JbXBvcnQgYSBsYXllcjwvYT48L2xpPgorICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy9jdXJyZW50L2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI3VuZGVyc3RhbmRpbmctYW5kLWNyZWF0aW5nLWxheWVycyIgdGFyZ2V0PSJfYmxhbmsiPlJlYWQgYWJvdXQgbGF5ZXJzIGluIHRoZSBkb2N1bWVudGF0aW9uPC9hPjwvbGk+CisgICAgICAgICAgPGxpPk9yIHR5cGUgYSBsYXllciBuYW1lIGJlbG93PC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgIDwvZGl2PgorCisgICAgICA8Zm9ybSBjbGFzcz0iZm9ybS1pbmxpbmUiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KKyAgICAgICAgICA8aW5wdXQgaWQ9ImxheWVyLWFkZC1pbnB1dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJUeXBlIGEgbGF5ZXIgbmFtZSIgZGF0YS1taW5sZW5ndGg9IjEiIGRhdGEtYXV0b2NvbXBsZXRlPSJvZmYiIGRhdGEtcHJvdmlkZT0idHlwZWFoZWFkIiBkYXRhLXNvdXJjZT0iIiB0eXBlPSJ0ZXh0Ij4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxidXR0b24gaWQ9ImFkZC1sYXllci1idG4iIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQiIGRpc2FibGVkPkFkZCBsYXllcjwvYnV0dG9uPgorICAgICAgICA8cCBjbGFzcz0iZm9ybS1saW5rIj4KKyAgICAgICAgICA8YSBocmVmPSJ7JSB1cmwgJ3Byb2plY3RsYXllcnMnIHByb2plY3QuaWQgJX0iIGlkPSJ2aWV3LWNvbXBhdGlibGUtbGF5ZXJzIj5WaWV3IGNvbXBhdGlibGUgbGF5ZXJzPC9hPgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LW11dGVkIj58PC9zcGFuPgorICAgICAgICAgIDxhIGhyZWY9InslIHVybCAnaW1wb3J0bGF5ZXInIHByb2plY3QuaWQgJX0iPkltcG9ydCBsYXllcjwvYT4KKyAgICAgICAgPC9wPgorICAgICAgPC9mb3JtPgorCisgICAgICA8dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgbGVhZCIgaWQ9ImxheWVycy1pbi1wcm9qZWN0LWxpc3QiPgorICAgICAgPC91bD4KKyAgPC9kaXY+CisKKzwvZGl2PgoreyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0X3NwZWNpZmljX3RvcGJhci5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGVzL3Byb2plY3Rfc3BlY2lmaWNfdG9wYmFyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyNzg3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0X3NwZWNpZmljX3RvcGJhci5odG1sCkBAIC0wLDAgKzEsODAgQEAKK3slIGxvYWQgc3RhdGljICV9Cis8c2NyaXB0IHNyYz0ieyUgc3RhdGljICdqcy9wcm9qZWN0dG9wYmFyLmpzJyAlfSI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CisgICAgdmFyIGN0eCA9IHsKKyAgICAgIG51bVByb2plY3RMYXllcnMgOiB7e3Byb2plY3QuZ2V0X3Byb2plY3RfbGF5ZXJfdmVyc2lvbnMuY291bnR9fSwKKyAgICAgIG1hY2hpbmUgOiAie3twcm9qZWN0LmdldF9jdXJyZW50X21hY2hpbmVfbmFtZXxkZWZhdWx0X2lmX25vbmU6IiJ9fSIsCisgICAgfQorCisgICAgdHJ5IHsKKyAgICAgIHByb2plY3RUb3BCYXJJbml0KGN0eCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgZG9jdW1lbnQud3JpdGUoIlNvcnJ5LCBBbiBlcnJvciBoYXMgb2NjdXJyZWQgbG9hZGluZyB0aGlzIHBhZ2UgKHBzdGIpOiIrZSk7CisgICAgICBjb25zb2xlLndhcm4oZSk7CisgICAgfQorICB9KTsKKzwvc2NyaXB0PgorCis8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgorICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1zdWNjZXNzIGFsZXJ0LWRpc21pc3NpYmxlIGNoYW5nZS1ub3RpZmljYXRpb24iIGlkPSJwcm9qZWN0LWNyZWF0ZWQtbm90aWZpY2F0aW9uIiBzdHlsZT0iZGlzcGxheTpub25lIj4KKyAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9ImFsZXJ0Ij4mdGltZXM7PC9idXR0b24+CisJCTxwPllvdXIgcHJvamVjdCA8c3Ryb25nPnt7cHJvamVjdC5uYW1lfX08L3N0cm9uZz4gaGFzIGJlZW4gY3JlYXRlZC4gWW91IGNhbiBub3cgPGEgY2xhc3M9ImFsZXJ0LWxpbmsiIGhyZWY9InslIHVybCAncHJvamVjdG1hY2hpbmVzJyBwcm9qZWN0LmlkICV9Ij5zZWxlY3QgeW91ciB0YXJnZXQgbWFjaGluZTwvYT4gYW5kIDxhIGNsYXNzPSJhbGVydC1saW5rIiBocmVmPSJ7JSB1cmwgJ3Byb2plY3RpbWFnZXJlY2lwZXMnIHByb2plY3QuaWQgJX0iPmNob29zZSBpbWFnZSByZWNpcGVzPC9hPiB0byBidWlsZC48L3A+CisgIDwvZGl2PgorICA8IS0tIHByb2plY3QgbmFtZSAtLT4KKyAgPGRpdiBjbGFzcz0icGFnZS1oZWFkZXIiPgorICAgIDxoMSBpZD0icHJvamVjdC1uYW1lLWNvbnRhaW5lciI+CisgICAgICA8c3BhbiBjbGFzcz0icHJvamVjdC1uYW1lIj57e3Byb2plY3QubmFtZX19PC9zcGFuPgorICAgICAgeyUgaWYgcHJvamVjdC5pc19kZWZhdWx0ICV9CisgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIiB0aXRsZT0iVGhpcyBwcm9qZWN0IHNob3dzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZHMgeW91IHN0YXJ0IGZyb20gdGhlIGNvbW1hbmQgbGluZSB3aGlsZSBUb2FzdGVyIGlzIHJ1bm5pbmciPjwvc3Bhbj4KKyAgICAgIHslIGVuZGlmICV9CisgICAgPC9oMT4KKyAgICA8Zm9ybSBpZD0icHJvamVjdC1uYW1lLWNoYW5nZS1mb3JtIiBjbGFzcz0iZm9ybS1pbmxpbmUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CisgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KKyAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgaW5wdXQtbGciIHR5cGU9InRleHQiIGlkPSJwcm9qZWN0LW5hbWUtY2hhbmdlLWlucHV0IiBhdXRvY29tcGxldGU9Im9mZiIgdmFsdWU9Int7cHJvamVjdC5uYW1lfX0iPgorICAgICAgPC9kaXY+CisgICAgICA8YnV0dG9uIGlkPSJwcm9qZWN0LW5hbWUtY2hhbmdlLWJ0biIgY2xhc3M9ImJ0biBidG4tZGVmYXVsdCBidG4tbGciIHR5cGU9ImJ1dHRvbiI+U2F2ZTwvYnV0dG9uPgorICAgICAgPGEgaHJlZj0iIyIgaWQ9InByb2plY3QtbmFtZS1jaGFuZ2UtY2FuY2VsIiBjbGFzcz0iYnRuIGJ0bi1sZyBidG4tbGluayI+Q2FuY2VsPC9hPgorICAgIDwvZm9ybT4KKyAgPC9kaXY+CisKKyAgeyUgd2l0aCBtcmJfdHlwZT0ncHJvamVjdCcgJX0KKyAgICB7JSBpbmNsdWRlICJtcmJfc2VjdGlvbi5odG1sIiAlfQorICB7JSBlbmR3aXRoICV9CisKKyAgeyUgaWYgbm90IHByb2plY3QuaXNfZGVmYXVsdCAlfQorICA8ZGl2IGlkPSJwcm9qZWN0LXRvcGJhciI+CisgICAgPHVsIGNsYXNzPSJuYXYgbmF2LXRhYnMiPgorICAgICAgPGxpIGlkPSJ0b3BiYXItY29uZmlndXJhdGlvbi10YWIiPgorICAgICAgPGEgaHJlZj0ieyUgdXJsICdwcm9qZWN0X3NwZWNpZmljJyBwcm9qZWN0LmlkICV9Ij4KKyAgICAgICAgQ29uZmlndXJhdGlvbgorICAgICAgPC9hPgorICAgICAgPC9saT4KKyAgICAgIDxsaT4KKyAgICAgIDxhIGhyZWY9InslIHVybCAnaW1wb3J0bGF5ZXInIHByb2plY3QuaWQgJX0iPgorICAgICAgICBJbXBvcnQgbGF5ZXIKKyAgICAgIDwvYT4KKyAgICAgIDwvbGk+CisgICAgICA8bGk+CisgICAgICA8YSBocmVmPSJ7JSB1cmwgJ25ld2N1c3RvbWltYWdlJyBwcm9qZWN0LmlkICV9Ij4KKyAgICAgICAgTmV3IGN1c3RvbSBpbWFnZQorICAgICAgPC9hPgorICAgICAgPC9saT4KKyAgICAgIDxsaSBjbGFzcz0icHVsbC1yaWdodCI+CisgICAgICAgIDxmb3JtIGNsYXNzPSJmb3JtLWlubGluZSI+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduIGdldC1oZWxwIiBkYXRhLXBsYWNlbWVudD0ibGVmdCIgdGl0bGU9IlR5cGUgdGhlIG5hbWUgb2Ygb25lIG9yIG1vcmUgcmVjaXBlcyB5b3Ugd2FudCB0byBidWlsZCwgc2VwYXJhdGVkIGJ5IGEgc3BhY2UuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgdGFzayBieSBhcHBlbmRpbmcgYSBjb2xvbiBhbmQgYSB0YXNrIG5hbWUgdG8gdGhlIHJlY2lwZSBuYW1lLCBsaWtlIHNvOiA8Y29kZT5idXN5Ym94OmNsZWFuPC9jb2RlPiI+PC9zcGFuPgorICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iYnVpbGQtaW5wdXQiIHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wgaW5wdXQtbGciIHBsYWNlaG9sZGVyPSJTZWxlY3QgdGhlIGRlZmF1bHQgaW1hZ2UgcmVjaXBlIiBhdXRvY29tcGxldGU9Im9mZiIgZGlzYWJsZWQgdmFsdWU9Int7cHJvamVjdC5nZXRfZGVmYXVsdF9pbWFnZX19Ij4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICB7JSBpZiBwcm9qZWN0LmdldF9pc19uZXcgJX0KKyAgICAgICAgICAgIDxidXR0b24gaWQ9InVwZGF0ZS1wcm9qZWN0LWJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbGciIGRhdGEtcHJvamVjdC1pZD0ie3twcm9qZWN0LmlkfX0iPlByZXBhcmUgUHJvamVjdDwvYnV0dG9uPgorICAgICAgICAgIHslIGVsc2UgJX0KKyAgICAgICAgICAgIDxidXR0b24gaWQ9ImNhbmNlbC1wcm9qZWN0LWJ1dHRvbiIgY2xhc3M9ImJ0biBpbmZvIGJ0bi1sZyIgZGF0YS1wcm9qZWN0LWlkPSJ7e3Byb2plY3QuaWR9fSI+Q2FuY2VsPC9idXR0b24+CisgICAgICAgICAgICA8YnV0dG9uIGlkPSJ1cGRhdGUtcHJvamVjdC1idXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIiBkYXRhLXByb2plY3QtaWQ9Int7cHJvamVjdC5pZH19Ij5VcGRhdGU8L2J1dHRvbj4KKyAgICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICA8L2Zvcm0+CisgICAgICA8L2xpPgorICAgIDwvdWw+CisgIDwvZGl2PgorICB7JSBlbmRpZiAlfQorPC9kaXY+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcHJvamVjdGNvbmYuaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Y29uZi5odG1sCmluZGV4IDkzM2M1ODguLmZiMjBiMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Y29uZi5odG1sCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9wcm9qZWN0Y29uZi5odG1sCkBAIC0xLDQgKzEsNCBAQAoteyUgZXh0ZW5kcyAiYmFzZXByb2plY3RwYWdlLmh0bWwiICV9Cit7JSBleHRlbmRzIHByb2plY3Rfc3BlY2lmaWN8eWVzbm86ImJhc2Vwcm9qZWN0c3BlY2lmaWNwYWdlLmh0bWwsYmFzZXByb2plY3RwYWdlLmh0bWwiICV9CiB7JSBsb2FkIHByb2plY3R0YWdzICV9CiB7JSBsb2FkIGh1bWFuaXplICV9CiAKQEAgLTQzOCw4ICs0MzgsMTEgQEAKICAgICAgICAgdmFyX2NvbnRleHQ9J20nOwogICAgICAgfQogICAgIH0KKyAgICBpZiAoY29uZmlndmFyc19zb3J0ZWRbaV1bMF0uc3RhcnRzV2l0aCgiSU5URVJOQUxfIikpIHsKKyAgICAgICAgdmFyX2NvbnRleHQ9J20nOworICAgIH0KICAgICBpZiAodmFyX2NvbnRleHQgPT0gdW5kZWZpbmVkKSB7Ci0gICAgICBvcmlnaHRtbCArPSAnPGR0PjxzcGFuIGlkPSJjb25maWdfdmFyX2VudHJ5XycrY29uZmlndmFyc19zb3J0ZWRbaV1bMl0rJyIgY2xhc3M9ImpzLWNvbmZpZy12YXItbmFtZSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXRyYXNoIGpzLWljb24tdHJhc2gtY29uZmlnX3ZhciIgaWQ9ImNvbmZpZ192YXJfdHJhc2hfJytjb25maWd2YXJzX3NvcnRlZFtpXVsyXSsnIiB4LWRhdGE9IicrY29uZmlndmFyc19zb3J0ZWRbaV1bMl0rJyI+PC9zcGFuPiA8L2R0PicKKyAgICAgICAgb3JpZ2h0bWwgKz0gJzxkdD48c3BhbiBpZD0iY29uZmlnX3Zhcl9lbnRyeV8nK2NvbmZpZ3ZhcnNfc29ydGVkW2ldWzJdKyciIGNsYXNzPSJqcy1jb25maWctdmFyLW5hbWUiPjwvc3Bhbj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi10cmFzaCBqcy1pY29uLXRyYXNoLWNvbmZpZ192YXIiIGlkPSJjb25maWdfdmFyX3RyYXNoXycrY29uZmlndmFyc19zb3J0ZWRbaV1bMl0rJyIgeC1kYXRhPSInK2NvbmZpZ3ZhcnNfc29ydGVkW2ldWzJdKyciPjwvc3Bhbj4gPC9kdD4nCiAgICAgICAgIG9yaWdodG1sICs9ICc8ZGQgY2xhc3M9InZhcmlhYmxlLWxpc3QiPicKICAgICAgICAgb3JpZ2h0bWwgKz0gJyAgICA8c3BhbiBjbGFzcz0ibGVhZCIgaWQ9ImNvbmZpZ192YXJfdmFsdWVfJytjb25maWd2YXJzX3NvcnRlZFtpXVsyXSsnIj48L3NwYW4+JwogICAgICAgICBvcmlnaHRtbCArPSAnICAgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWVkaXQganMtaWNvbi1wZW5jaWwtY29uZmlnX3ZhciIgeC1kYXRhPSInK2NvbmZpZ3ZhcnNfc29ydGVkW2ldWzJdKyciPjwvc3Bhbj4nCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcmVjaXBlX2FkZF9idG4uaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRlcy9yZWNpcGVfYWRkX2J0bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzQ2NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXMvcmVjaXBlX2FkZF9idG4uaHRtbApAQCAtMCwwICsxLDIzIEBACis8YSBkYXRhLXJlY2lwZS1uYW1lPSJ7e2RhdGEubmFtZX19IiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0IGJ0bi1ibG9jayBsYXllci1leGlzdHMte3tkYXRhLmxheWVyX3ZlcnNpb24ucGt9fSBzZXQtZGVmYXVsdC1yZWNpcGUtYnRuIiBzdHlsZT0ibWFyZ2luLXRvcDogNXB4OworICB7JSBpZiBkYXRhLmxheWVyX3ZlcnNpb24ucGsgbm90IGluIGV4dHJhLmN1cnJlbnRfbGF5ZXJzICV9CisgICAgZGlzcGxheTpub25lOworICB7JSBlbmRpZiAlfSIKKyA+CisgIFNldCByZWNpcGUKKzwvYT4KKzxhIGNsYXNzPSJidG4gYnRuLWRlZmF1bHQgYnRuLWJsb2NrIGxheWVyYnRuIGxheWVyLWFkZC17e2RhdGEubGF5ZXJfdmVyc2lvbi5wa319IgorICBkYXRhLWxheWVyPSd7CisgICJpZCI6IHt7ZGF0YS5sYXllcl92ZXJzaW9uLnBrfX0sCisgICJuYW1lIjogICJ7e2RhdGEubGF5ZXJfdmVyc2lvbi5sYXllci5uYW1lfX0iLAorICAibGF5ZXJkZXRhaWx1cmwiOiAieyV1cmwgImxheWVyZGV0YWlscyIgZXh0cmEucGlkIGRhdGEubGF5ZXJfdmVyc2lvbi5wayV9IiwKKyAgICJ4aHJMYXllclVybCI6ICJ7JSB1cmwgInhocl9sYXllciIgZXh0cmEucGlkIGRhdGEubGF5ZXJfdmVyc2lvbi5wayAlfSIKKyAgIH0nIGRhdGEtZGlyZWN0aXZlPSJhZGQiCisgICAgeyUgaWYgZGF0YS5sYXllcl92ZXJzaW9uLnBrIGluIGV4dHJhLmN1cnJlbnRfbGF5ZXJzICV9CisgICAgIHN0eWxlPSJkaXNwbGF5Om5vbmU7IgorICAgIHslIGVuZGlmICV9Cis+CisgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXBsdXMiPjwvc3Bhbj4KKyAgQWRkIGxheWVyCisgIDxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLXF1ZXN0aW9uLXNpZ24gZ2V0LWhlbHAiIHRpdGxlPSJUbyBzZXQgdGhpcworICAgICAgcmVjaXBlIHlvdSBtdXN0IGZpcnN0IGFkZCB0aGUge3tkYXRhLmxheWVyX3ZlcnNpb24ubGF5ZXIubmFtZX19IGxheWVyIHRvIHlvdXIgcHJvamVjdCI+PC9pPgorPC9hPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKaW5kZXggZTA3YjBlZi4uZGMwM2UzMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CkBAIC0xMTYsNiArMTE2LDExIEBACiAgICAgICAgICAgICB0YWJsZXMuUHJvamVjdEJ1aWxkc1RhYmxlLmFzX3ZpZXcodGVtcGxhdGVfbmFtZT0icHJvamVjdGJ1aWxkcy10b2FzdGVydGFibGUuaHRtbCIpLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdGJ1aWxkcycpLAogCisgICAgICAgIHVybChyJ15uZXdwcm9qZWN0X3NwZWNpZmljLyg/UDxwaWQ+XGQrKS8kJywgdmlld3MubmV3cHJvamVjdF9zcGVjaWZpYywgbmFtZT0nbmV3cHJvamVjdF9zcGVjaWZpYycpLAorICAgICAgICB1cmwocidecHJvamVjdF9zcGVjaWZpYy8oP1A8cGlkPlxkKykvJCcsIHZpZXdzLnByb2plY3Rfc3BlY2lmaWMsIG5hbWU9J3Byb2plY3Rfc3BlY2lmaWMnKSwKKyAgICAgICAgdXJsKHInXmxhbmRpbmdfc3BlY2lmaWMvKD9QPHBpZD5cZCspLyQnLCB2aWV3cy5sYW5kaW5nX3NwZWNpZmljLCBuYW1lPSdsYW5kaW5nX3NwZWNpZmljJyksCisgICAgICAgIHVybChyJ15sYW5kaW5nX3NwZWNpZmljX2NhbmNlbC8oP1A8cGlkPlxkKykvJCcsIHZpZXdzLmxhbmRpbmdfc3BlY2lmaWNfY2FuY2VsLCBuYW1lPSdsYW5kaW5nX3NwZWNpZmljX2NhbmNlbCcpLAorCiAgICAgICAgICMgdGhlIGltcG9ydCBsYXllciBpcyBhIHByb2plY3Qtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eTsKICAgICAgICAgdXJsKHInXnByb2plY3QvKD9QPHBpZD5cZCspL2ltcG9ydGxheWVyJCcsIHZpZXdzLmltcG9ydGxheWVyLCBuYW1lPSdpbXBvcnRsYXllcicpLAogCkBAIC0yMzMsNiArMjM4LDE0IEBACiAgICAgICAgICAgICBhcGkuWGhyQnVpbGRSZXF1ZXN0LmFzX3ZpZXcoKSwKICAgICAgICAgICAgIG5hbWU9J3hocl9idWlsZHJlcXVlc3QnKSwKIAorICAgICAgICB1cmwocideeGhyX3Byb2plY3R1cGRhdGUvcHJvamVjdC8oP1A8cGlkPlxkKykkJywKKyAgICAgICAgICAgIGFwaS5YaHJQcm9qZWN0VXBkYXRlLmFzX3ZpZXcoKSwKKyAgICAgICAgICAgIG5hbWU9J3hocl9wcm9qZWN0dXBkYXRlJyksCisKKyAgICAgICAgdXJsKHInXnhocl9zZXRkZWZhdWx0aW1hZ2UvcHJvamVjdC8oP1A8cGlkPlxkKykkJywKKyAgICAgICAgICAgIGFwaS5YaHJTZXREZWZhdWx0SW1hZ2VVcmwuYXNfdmlldygpLAorICAgICAgICAgICAgbmFtZT0neGhyX3NldGRlZmF1bHRpbWFnZScpLAorCiAgICAgICAgIHVybChyJ3hocl9wcm9qZWN0Lyg/UDxwcm9qZWN0X2lkPlxkKykkJywKICAgICAgICAgICAgIGFwaS5YaHJQcm9qZWN0LmFzX3ZpZXcoKSwKICAgICAgICAgICAgIG5hbWU9J3hocl9wcm9qZWN0JyksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3ZpZXdzLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMzRlZDJiMi4uYzcxMmIwNgotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS92aWV3cy5weQpAQCAtMjUsNiArMjUsNyBAQAogZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBGLCBRLCBTdW0KIGZyb20gZGphbmdvLmRiIGltcG9ydCBJbnRlZ3JpdHlFcnJvcgogZnJvbSBkamFuZ28uc2hvcnRjdXRzIGltcG9ydCByZW5kZXIsIHJlZGlyZWN0LCBnZXRfb2JqZWN0X29yXzQwNAorZnJvbSBkamFuZ28udXRpbHMuaHR0cCBpbXBvcnQgdXJsZW5jb2RlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJ1aWxkLCBUYXJnZXQsIFRhc2ssIExheWVyLCBMYXllcl9WZXJzaW9uLCBSZWNpcGUKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTG9nTWVzc2FnZSwgVmFyaWFibGUsIFBhY2thZ2VfRGVwZW5kZW5jeSwgUGFja2FnZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUYXNrX0RlcGVuZGVuY3ksIFBhY2thZ2VfRmlsZQpAQCAtNTEsNiArNTIsNyBAQAogCiAjIFByb2plY3QgY3JlYXRpb24gYW5kIG1hbmFnZWQgYnVpbGQgZW5hYmxlCiBwcm9qZWN0X2VuYWJsZSA9ICgnMScgPT0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfQlVJTERTRVJWRVInKSkKK2lzX3Byb2plY3Rfc3BlY2lmaWMgPSAoJzEnID09IG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX1BST0pFQ1RTUEVDSUZJQycpKQogCiBjbGFzcyBNaW1lVHlwZUZpbmRlcihvYmplY3QpOgogICAgICMgc2V0dGluZyB0aGlzIHRvIEZhbHNlIGVuYWJsZXMgYWRkaXRpb25hbCBub24tc3RhbmRhcmQgbWltZXR5cGVzCkBAIC03MCw2ICs3Miw3IEBACiAjIHNpbmdsZSBwb2ludCB0byBhZGQgZ2xvYmFsIHZhbHVlcyBpbnRvIHRoZSBjb250ZXh0IGJlZm9yZSByZW5kZXJpbmcKIGRlZiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCBwYWdlLCBjb250ZXh0KToKICAgICBjb250ZXh0Wydwcm9qZWN0X2VuYWJsZSddID0gcHJvamVjdF9lbmFibGUKKyAgICBjb250ZXh0Wydwcm9qZWN0X3NwZWNpZmljJ10gPSBpc19wcm9qZWN0X3NwZWNpZmljCiAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCBwYWdlLCBjb250ZXh0KQogCiAKQEAgLTEzOTUsNiArMTM5OCw4NiBAQAogICAgICAgICAgICAgbWFuZGF0b3J5X2ZpZWxkcyA9IFsncHJvamVjdG5hbWUnLCAncHR5cGUnXQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHB0eXBlID0gcmVxdWVzdC5QT1NULmdldCgncHR5cGUnKQorICAgICAgICAgICAgICAgIGlmIHB0eXBlID09ICJpbXBvcnQiOgorICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnlfZmllbGRzLmFwcGVuZCgnaW1wb3J0ZGlyJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtYW5kYXRvcnlfZmllbGRzLmFwcGVuZCgncHJvamVjdHZlcnNpb24nKQorICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHdlIGhhdmUgdmFsdWVzIGZvciBhbGwgbWFuZGF0b3J5X2ZpZWxkcworICAgICAgICAgICAgICAgIG1pc3NpbmcgPSBbZmllbGQgZm9yIGZpZWxkIGluIG1hbmRhdG9yeV9maWVsZHMgaWYgbGVuKHJlcXVlc3QuUE9TVC5nZXQoZmllbGQsICcnKSkgPT0gMF0KKyAgICAgICAgICAgICAgICBpZiBtaXNzaW5nOgorICAgICAgICAgICAgICAgICAgICAjIHNldCBhbGVydCBmb3IgbWlzc2luZyBmaWVsZHMKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKCJGaWVsZHMgbWlzc2luZzogJXMiICUgIiwgIi5qb2luKG1pc3NpbmcpKQorCisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCk6CisgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBhdXRoZW50aWNhdGUodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgcGFzc3dvcmQgPSAnbm9wYXNzJykKKyAgICAgICAgICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgdXNlciA9IFVzZXIub2JqZWN0cy5jcmVhdGVfdXNlcih1c2VybmFtZSA9IHJlcXVlc3QuUE9TVC5nZXQoJ3VzZXJuYW1lJywgJ19hbm9udXNlcicpLCBlbWFpbCA9IHJlcXVlc3QuUE9TVC5nZXQoJ2VtYWlsJywgJycpLCBwYXNzd29yZCA9ICJub3Bhc3MiKQorCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aGVudGljYXRlKHVzZXJuYW1lID0gdXNlci51c2VybmFtZSwgcGFzc3dvcmQgPSAnbm9wYXNzJykKKyAgICAgICAgICAgICAgICAgICAgbG9naW4ocmVxdWVzdCwgdXNlcikKKworICAgICAgICAgICAgICAgICMgIHNhdmUgdGhlIHByb2plY3QKKyAgICAgICAgICAgICAgICBpZiBwdHlwZSA9PSAiaW1wb3J0IjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoJyVzL2NvbmYnICUgcmVxdWVzdC5QT1NUWydpbXBvcnRkaXInXSk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBCYWRQYXJhbWV0ZXJFeGNlcHRpb24oIkJhZCBwYXRoIG9yIG1pc3NpbmcgJ2NvbmYnIGRpcmVjdG9yeSAoJXMpIiAlIHJlcXVlc3QuUE9TVFsnaW1wb3J0ZGlyJ10pCisgICAgICAgICAgICAgICAgICAgIGZyb20gZGphbmdvLmNvcmUgaW1wb3J0IG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudC5jYWxsX2NvbW1hbmQoJ2J1aWxkaW1wb3J0JywgJy0tY29tbWFuZD1pbXBvcnQnLCAnLS1uYW1lPSVzJyAlIHJlcXVlc3QuUE9TVFsncHJvamVjdG5hbWUnXSwgJy0tcGF0aD0lcycgJSByZXF1ZXN0LlBPU1RbJ2ltcG9ydGRpciddLCBpbnRlcmFjdGl2ZT1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgcHJqID0gUHJvamVjdC5vYmplY3RzLmdldChuYW1lID0gcmVxdWVzdC5QT1NUWydwcm9qZWN0bmFtZSddKQorICAgICAgICAgICAgICAgICAgICBwcmoubWVyZ2VkX2F0dHIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHByai5zYXZlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChwayA9IHJlcXVlc3QuUE9TVC5nZXQoJ3Byb2plY3R2ZXJzaW9uJywgTm9uZSApKQorICAgICAgICAgICAgICAgICAgICBwcmogPSBQcm9qZWN0Lm9iamVjdHMuY3JlYXRlX3Byb2plY3QobmFtZSA9IHJlcXVlc3QuUE9TVFsncHJvamVjdG5hbWUnXSwgcmVsZWFzZSA9IHJlbGVhc2UpCisgICAgICAgICAgICAgICAgICAgIHByai51c2VyX2lkID0gcmVxdWVzdC51c2VyLnBrCisgICAgICAgICAgICAgICAgICAgIGlmICdtZXJnZWF0dHInID09IHJlcXVlc3QuUE9TVC5nZXQoJ21lcmdlYXR0cicsICcnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByai5tZXJnZWRfYXR0ciA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgcHJqLnNhdmUoKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0KHJldmVyc2UocHJvamVjdCwgYXJncz0ocHJqLnBrLCkpICsgIj9ub3RpZnk9bmV3LXByb2plY3QiKQorCisgICAgICAgICAgICBleGNlcHQgKEludGVncml0eUVycm9yLCBCYWRQYXJhbWV0ZXJFeGNlcHRpb24pIGFzIGU6CisgICAgICAgICAgICAgICAgIyBmaWxsIGluIHBhZ2Ugd2l0aCBwcmV2aW91c2x5IHN1Ym1pdHRlZCB2YWx1ZXMKKyAgICAgICAgICAgICAgICBmb3IgZmllbGQgaW4gbWFuZGF0b3J5X2ZpZWxkczoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5fX3NldGl0ZW1fXyhmaWVsZCwgcmVxdWVzdC5QT1NULmdldChmaWVsZCwgIi0tIG1pc3NpbmciKSkKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGUsIEludGVncml0eUVycm9yKSBhbmQgInVzZXJuYW1lIiBpbiBzdHIoZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbJ2FsZXJ0J10gPSAiWW91ciBjaG9zZW4gdXNlcm5hbWUgaXMgYWxyZWFkeSB1c2VkIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbJ2FsZXJ0J10gPSBzdHIoZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgdGVtcGxhdGUsIGNvbnRleHQpCisKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJJbnZhbGlkIEhUVFAgbWV0aG9kIGZvciB0aGlzIHBhZ2UiKQorCisgICAgIyBuZXcgcHJvamVjdAorICAgIGRlZiBuZXdwcm9qZWN0X3NwZWNpZmljKHJlcXVlc3QsIHBpZCk6CisgICAgICAgIGlmIG5vdCBwcm9qZWN0X2VuYWJsZToKKyAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCggbGFuZGluZyApCisKKyAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9cGlkKQorICAgICAgICB0ZW1wbGF0ZSA9ICJuZXdwcm9qZWN0X3NwZWNpZmljLmh0bWwiCisgICAgICAgIGNvbnRleHQgPSB7CisgICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKSBlbHNlICcnLAorICAgICAgICAgICAgJ3VzZXJuYW1lJzogcmVxdWVzdC51c2VyLnVzZXJuYW1lIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKKyAgICAgICAgICAgICdyZWxlYXNlcyc6IFJlbGVhc2Uub2JqZWN0cy5vcmRlcl9ieSgiZGVzY3JpcHRpb24iKSwKKyAgICAgICAgICAgICdwcm9qZWN0bmFtZSc6IHByb2plY3QubmFtZSwKKyAgICAgICAgICAgICdwcm9qZWN0X3BrJzogcHJvamVjdC5waywKKyAgICAgICAgfQorCisgICAgICAgICMgV09SS0FST1VORDogaWYgd2UgYWxyZWFkeSBrbm93IHJlbGVhc2UsIHJlZGlyZWN0ICduZXdwcm9qZWN0X3NwZWNpZmljJyB0byAncHJvamVjdF9zcGVjaWZpYycKKyAgICAgICAgaWYgJzEnID09IHByb2plY3QuZ2V0X3ZhcmlhYmxlKCdJTlRFUk5BTF9QUk9KRUNUX1NQRUNJRklDX1NLSVBSRUxFQVNFJyk6CisgICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QocmV2ZXJzZShwcm9qZWN0X3NwZWNpZmljLCBhcmdzPShwcm9qZWN0LnBrLCkpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbnRleHRbJ2RlZmF1bHRicmFuY2gnXSA9IFRvYXN0ZXJTZXR0aW5nLm9iamVjdHMuZ2V0KG5hbWUgPSAiREVGQVVMVF9SRUxFQVNFIikudmFsdWUKKyAgICAgICAgZXhjZXB0IFRvYXN0ZXJTZXR0aW5nLkRvZXNOb3RFeGlzdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiR0VUIjoKKyAgICAgICAgICAgICMgcmVuZGVyIG5ldyBwcm9qZWN0IHBhZ2UKKyAgICAgICAgICAgIHJldHVybiB0b2FzdGVyX3JlbmRlcihyZXF1ZXN0LCB0ZW1wbGF0ZSwgY29udGV4dCkKKyAgICAgICAgZWxpZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CisgICAgICAgICAgICBtYW5kYXRvcnlfZmllbGRzID0gWydwcm9qZWN0bmFtZScsICdwdHlwZSddCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcHR5cGUgPSByZXF1ZXN0LlBPU1QuZ2V0KCdwdHlwZScpCiAgICAgICAgICAgICAgICAgaWYgcHR5cGUgPT0gImJ1aWxkIjoKICAgICAgICAgICAgICAgICAgICAgbWFuZGF0b3J5X2ZpZWxkcy5hcHBlbmQoJ3Byb2plY3R2ZXJzaW9uJykKICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBoYXZlIHZhbHVlcyBmb3IgYWxsIG1hbmRhdG9yeV9maWVsZHMKQEAgLTE0MTcsMTAgKzE1MDAsMTAgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChwayA9IHJlcXVlc3QuUE9TVC5nZXQoJ3Byb2plY3R2ZXJzaW9uJywgTm9uZSApKQogCi0gICAgICAgICAgICAgICAgcHJqID0gUHJvamVjdC5vYmplY3RzLmNyZWF0ZV9wcm9qZWN0KG5hbWUgPSByZXF1ZXN0LlBPU1RbJ3Byb2plY3RuYW1lJ10sIHJlbGVhc2UgPSByZWxlYXNlKQorICAgICAgICAgICAgICAgIHByaiA9IFByb2plY3Qub2JqZWN0cy5jcmVhdGVfcHJvamVjdChuYW1lID0gcmVxdWVzdC5QT1NUWydwcm9qZWN0bmFtZSddLCByZWxlYXNlID0gcmVsZWFzZSwgZXhpc3RpbmdfcHJvamVjdCA9IHByb2plY3QpCiAgICAgICAgICAgICAgICAgcHJqLnVzZXJfaWQgPSByZXF1ZXN0LnVzZXIucGsKICAgICAgICAgICAgICAgICBwcmouc2F2ZSgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlZGlyZWN0KHJldmVyc2UocHJvamVjdCwgYXJncz0ocHJqLnBrLCkpICsgIj9ub3RpZnk9bmV3LXByb2plY3QiKQorICAgICAgICAgICAgICAgIHJldHVybiByZWRpcmVjdChyZXZlcnNlKHByb2plY3Rfc3BlY2lmaWMsIGFyZ3M9KHByai5waywpKSArICI/bm90aWZ5PW5ldy1wcm9qZWN0IikKIAogICAgICAgICAgICAgZXhjZXB0IChJbnRlZ3JpdHlFcnJvciwgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKSBhcyBlOgogICAgICAgICAgICAgICAgICMgZmlsbCBpbiBwYWdlIHdpdGggcHJldmlvdXNseSBzdWJtaXR0ZWQgdmFsdWVzCkBAIC0xNDM3LDkgKzE1MjAsODcgQEAKICAgICAjIFNob3dzIHRoZSBlZGl0IHByb2plY3QgcGFnZQogICAgIGRlZiBwcm9qZWN0KHJlcXVlc3QsIHBpZCk6CiAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPXBpZCkKKworICAgICAgICBpZiAnMScgPT0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfUFJPSkVDVFNQRUNJRklDJyk6CisgICAgICAgICAgICBpZiByZXF1ZXN0LkdFVDoKKyAgICAgICAgICAgICAgICAjRXhhbXBsZTpyZXF1ZXN0LkdFVD08UXVlcnlEaWN0OiB7J3NldE1hY2hpbmUnOiBbJ3FlbXVhcm0nXX0+CisgICAgICAgICAgICAgICAgcGFyYW1zID0gdXJsZW5jb2RlKHJlcXVlc3QuR0VUKS5yZXBsYWNlKCclNUIlMjcnLCcnKS5yZXBsYWNlKCclMjclNUQnLCcnKQorICAgICAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgiJXM/JXMiICUgKHJldmVyc2UocHJvamVjdF9zcGVjaWZpYywgYXJncz0ocHJvamVjdC5waywpKSxwYXJhbXMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QocmV2ZXJzZShwcm9qZWN0X3NwZWNpZmljLCBhcmdzPShwcm9qZWN0LnBrLCkpKQogICAgICAgICBjb250ZXh0ID0geyJwcm9qZWN0IjogcHJvamVjdH0KICAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJwcm9qZWN0Lmh0bWwiLCBjb250ZXh0KQogCisgICAgIyBTaG93cyB0aGUgZWRpdCBwcm9qZWN0LXNwZWNpZmljIHBhZ2UKKyAgICBkZWYgcHJvamVjdF9zcGVjaWZpYyhyZXF1ZXN0LCBwaWQpOgorICAgICAgICBwcm9qZWN0ID0gUHJvamVjdC5vYmplY3RzLmdldChwaz1waWQpCisKKyAgICAgICAgIyBBcmUgd2UgcmVmcmVzaGluZyBmcm9tIGEgc3VjY2Vzc2Z1bCBwcm9qZWN0IHNwZWNpZmljIHVwZGF0ZSBjbG9uZT8KKyAgICAgICAgaWYgUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0NMT05JTkdfU1VDQ0VTUyA9PSBwcm9qZWN0LmdldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTKToKKyAgICAgICAgICAgIHJldHVybiByZWRpcmVjdChyZXZlcnNlKGxhbmRpbmdfc3BlY2lmaWMsYXJncz0ocHJvamVjdC5waywpKSkKKworICAgICAgICBjb250ZXh0ID0geworICAgICAgICAgICAgInByb2plY3QiOiBwcm9qZWN0LAorICAgICAgICAgICAgImlzX25ldyIgOiBwcm9qZWN0LmdldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfSVNORVcpLAorICAgICAgICAgICAgImRlZmF1bHRfaW1hZ2VfcmVjaXBlIiA6IHByb2plY3QuZ2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ERUZBVUxUSU1BR0UpLAorICAgICAgICAgICAgIm1ydSIgOiBCdWlsZC5vYmplY3RzLmFsbCgpLmZpbHRlcihwcm9qZWN0PXByb2plY3Qsb3V0Y29tZT1CdWlsZC5JTl9QUk9HUkVTUyksCisgICAgICAgICAgICB9CisgICAgICAgIGlmIHByb2plY3QuYnVpbGRfc2V0LmZpbHRlcihvdXRjb21lPUJ1aWxkLklOX1BST0dSRVNTKS5jb3VudCgpID4gMDoKKyAgICAgICAgICAgIGNvbnRleHRbJ2J1aWxkX2luX3Byb2dyZXNzX25vbmVfY29tcGxldGVkJ10gPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb250ZXh0WydidWlsZF9pbl9wcm9ncmVzc19ub25lX2NvbXBsZXRlZCddID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJwcm9qZWN0Lmh0bWwiLCBjb250ZXh0KQorCisgICAgIyBwZXJmb3JtIHRoZSBmaW5hbCBhY3Rpb25zIGZvciB0aGUgcHJvamVjdCBzcGVjaWZpYyBwYWdlCisgICAgZGVmIHByb2plY3Rfc3BlY2lmaWNfZmluYWxpemUoY21uZCwgcGlkKToKKyAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5nZXQocGs9cGlkKQorICAgICAgICBjYWxsYmFjayA9IHByb2plY3QuZ2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19DQUxMQkFDSykKKyAgICAgICAgaWYgInVwZGF0ZSIgPT0gY21uZDoKKyAgICAgICAgICAgICMgRGVsZXRlIGFsbCAnX1BST0pFQ1RfUFJFUEFSRV8nIGJ1aWxkcworICAgICAgICAgICAgZm9yIGIgaW4gQnVpbGQub2JqZWN0cy5hbGwoKS5maWx0ZXIocHJvamVjdD1wcm9qZWN0KToKKyAgICAgICAgICAgICAgICBkZWxldGVfYnVpbGQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZvciB0IGluIGIudGFyZ2V0X3NldC5hbGwoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgJ19QUk9KRUNUX1BSRVBBUkVfJyA9PSB0LnRhcmdldDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZV9idWlsZCA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBkZWxldGVfYnVpbGQ6CisgICAgICAgICAgICAgICAgICAgIGZyb20gZGphbmdvLmNvcmUgaW1wb3J0IG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudC5jYWxsX2NvbW1hbmQoJ2J1aWxkZGVsZXRlJywgc3RyKGIuaWQpLCBpbnRlcmFjdGl2ZT1GYWxzZSkKKyAgICAgICAgICAgICMgcGVyZm9ybSBjYWxsYmFjayBhdCB0aGlzIGxhc3QgbW9tZW50IGlmIGRlZmluZWQsIGluIGNhc2UgVG9hc3RlciBnZXRzIHNodXRkb3duIG5leHQKKyAgICAgICAgICAgIGRlZmF1bHRfdGFyZ2V0ID0gcHJvamVjdC5nZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0RFRkFVTFRJTUFHRSkKKyAgICAgICAgICAgIGlmIGNhbGxiYWNrOgorICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gY2FsbGJhY2sucmVwbGFjZSgiPElNQUdFPiIsZGVmYXVsdF90YXJnZXQpCisgICAgICAgIGlmICJjYW5jZWwiID09IGNtbmQ6CisgICAgICAgICAgICBpZiBjYWxsYmFjazoKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrLnJlcGxhY2UoIjxJTUFHRT4iLCJub25lIikKKyAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrLnJlcGxhY2UoIi0tdXBkYXRlIiwiLS1jYW5jZWwiKQorICAgICAgICAjIHBlcmZvcm0gY2FsbGJhY2sgYXQgdGhpcyBsYXN0IG1vbWVudCBpZiBkZWZpbmVkLCBpbiBjYXNlIHRoaXMgVG9hc3RlciBnZXRzIHNodXRkb3duIG5leHQKKyAgICAgICAgcmV0ID0gJycKKyAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICByZXQgPSBvcy5zeXN0ZW0oJ2Jhc2ggLWMgIiVzIicgJSBjYWxsYmFjaykKKyAgICAgICAgICAgIHByb2plY3Quc2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19DQUxMQkFDSywnJykKKyAgICAgICAgIyBEZWxldGUgdGhlIHRlbXAgcHJvamVjdCBzcGVjaWZpYyB2YXJpYWJsZXMKKyAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0lTTkVXLCcnKQorICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19OT05FKQorICAgICAgICAjIFdPUktBUk9VTkQ6IFJlbGVhc2UgdGhpcyB3b3JrYXJvdW5kIGZsYWcKKyAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoJ0lOVEVSTkFMX1BST0pFQ1RfU1BFQ0lGSUNfU0tJUFJFTEVBU0UnLCcnKQorCisgICAgIyBTaG93cyB0aGUgZmluYWwgbGFuZGluZyBwYWdlIGZvciBwcm9qZWN0IHNwZWNpZmljIHVwZGF0ZQorICAgIGRlZiBsYW5kaW5nX3NwZWNpZmljKHJlcXVlc3QsIHBpZCk6CisgICAgICAgIHByb2plY3Rfc3BlY2lmaWNfZmluYWxpemUoInVwZGF0ZSIsIHBpZCkKKyAgICAgICAgY29udGV4dCA9IHsKKyAgICAgICAgICAgICJpbnN0YWxsX2RpciI6IG9zLmVudmlyb25bJ1RPQVNURVJfRElSJ10sCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRvYXN0ZXJfcmVuZGVyKHJlcXVlc3QsICJsYW5kaW5nX3NwZWNpZmljLmh0bWwiLCBjb250ZXh0KQorCisgICAgIyBTaG93cyB0aGUgcmVsYXRlZCBsYW5kaW5nLXNwZWNpZmljIHBhZ2UKKyAgICBkZWYgbGFuZGluZ19zcGVjaWZpY19jYW5jZWwocmVxdWVzdCwgcGlkKToKKyAgICAgICAgcHJvamVjdF9zcGVjaWZpY19maW5hbGl6ZSgiY2FuY2VsIiwgcGlkKQorICAgICAgICBjb250ZXh0ID0geworICAgICAgICAgICAgImluc3RhbGxfZGlyIjogb3MuZW52aXJvblsnVE9BU1RFUl9ESVInXSwKKyAgICAgICAgICAgICJzdGF0dXMiOiAiY2FuY2VsIiwKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9hc3Rlcl9yZW5kZXIocmVxdWVzdCwgImxhbmRpbmdfc3BlY2lmaWMuaHRtbCIsIGNvbnRleHQpCisKICAgICBkZWYganN1bml0dGVzdHMocmVxdWVzdCk6CiAgICAgICAgICIiIiBQcm92aWRlcyBhIHBhZ2UgZm9yIHRoZSBqcyB1bml0IHRlc3RzICIiIgogICAgICAgICBiYnYgPSBCaXRiYWtlVmVyc2lvbi5vYmplY3RzLmZpbHRlcihicmFuY2g9Im1hc3RlciIpLmZpcnN0KCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CmluZGV4IGZlZWY3YzUuLmRiNWMzYWEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQpAQCAtODksNiArODksMTAgQEAKIAogICAgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMKICAgICAgICAgY29udGV4dFsncHJvamVjdF9lbmFibGUnXSA9ICgnMScgPT0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfQlVJTERTRVJWRVInKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udGV4dFsncHJvamVjdF9zcGVjaWZpYyddID0gKCcxJyA9PSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9QUk9KRUNUU1BFQ0lGSUMnKSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgY29udGV4dFsncHJvamVjdF9zcGVjaWZpYyddID0gJycKIAogICAgICAgICByZXR1cm4gY29udGV4dAogCkBAIC01MjQsNiArNTI4LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnVpbGRbJ3JlcG9zX2Nsb25lZF9wZXJjZW50YWdlJ10gPSAwCiAKKyAgICAgICAgICAgIGJ1aWxkWydwcm9ncmVzc19pdGVtJ10gPSBidWlsZF9vYmoucHJvZ3Jlc3NfaXRlbQorCiAgICAgICAgICAgICB0YXNrc19jb21wbGV0ZV9wZXJjZW50YWdlID0gMAogICAgICAgICAgICAgaWYgYnVpbGRfb2JqLm91dGNvbWUgaW4gKEJ1aWxkLlNVQ0NFRURFRCwgQnVpbGQuRkFJTEVEKToKICAgICAgICAgICAgICAgICB0YXNrc19jb21wbGV0ZV9wZXJjZW50YWdlID0gMTAwCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGRlbGV0ZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CmluZGV4IDBiZWY4ZDQuLmJmNjlhOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CkBAIC0xMCw4ICsxMCwxMiBAQAogICAgIGFyZ3MgICAgPSAnPGJ1aWxkSUQxIGJ1aWxkSUQyIC4uLi4uPicKICAgICBoZWxwICAgID0gIkRlbGV0ZXMgc2VsZWN0ZWQgYnVpbGQocykiCiAKKyAgICBkZWYgYWRkX2FyZ3VtZW50cyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdidWlsZGlkcycsIG1ldGF2YXI9J04nLCB0eXBlPWludCwgbmFyZ3M9JysnLAorICAgICAgICAgICAgICAgICAgICBoZWxwPSJCdWlsZCBJRCdzIHRvIGRlbGV0ZSIpCisKICAgICBkZWYgaGFuZGxlKHNlbGYsICphcmdzLCAqKm9wdGlvbnMpOgotICAgICAgICBmb3IgYmlkIGluIGFyZ3M6CisgICAgICAgIGZvciBiaWQgaW4gb3B0aW9uc1snYnVpbGRpZHMnXToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBiID0gQnVpbGQub2JqZWN0cy5nZXQocGsgPSBiaWQpCiAgICAgICAgICAgICBleGNlcHQgT2JqZWN0RG9lc05vdEV4aXN0OgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRpbXBvcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDU3YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRpbXBvcnQucHkKQEAgLTAsMCArMSw1ODQgQEAKKyMKKyMgZXg6dHM9NDpzdz00OnN0cz00OmV0CisjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCisjCisjIEJpdEJha2UgVG9hc3RlciBJbXBsZW1lbnRhdGlvbgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggICAgICAgIFdpbmQgUml2ZXIgU3lzdGVtcworIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKworIyBidWlsZGltcG9ydDogaW1wb3J0IGEgcHJvamVjdCBmb3IgcHJvamVjdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uCisjCisjIFVzYWdlOgorIyAgKGEpIFNldCB1cCBUb2FzdGVyIGVudmlyb25lbnQKKyMKKyMgIChiKSBDYWxsIGJ1aWxkaW1wb3J0CisjICAgICAgJCAvcGF0aC90by9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBidWlsZGltcG9ydCBcCisjICAgICAgICAtLW5hbWU9JFBST0pFQ1ROQU1FIFwKKyMgICAgICAgIC0tcGF0aD0kQlVJTERfRElSRUNUT1JZIFwKKyMgICAgICAgIC0tY2FsbGJhY2s9IiRDQUxMQkFDS19TQ1JJUFQiIFwKKyMgICAgICAgIC0tY29tbWFuZD0iY29uZmlndXJlfHJlY29uZmlndXJlfGltcG9ydCIKKyMKKyMgIChjKSBSZXR1cm4gaXMgInxEZWZhdWx0X2ltYWdlPSVzfFByb2plY3RfaWQ9JWQiCisjCisjICAoZCkgT3BlbiBUb2FzdGVyIHRvIHRoaXMgcHJvamVjdCB1c2luZyBmb3IgZXhhbXBsZToKKyMgICAgICAkIHhkZy1vcGVuIGh0dHA6Ly9sb2NhbGhvc3Q6JHRvYXN0ZXJfcG9ydC90b2FzdGVyZ3VpL3Byb2plY3Rfc3BlY2lmaWMvJHByb2plY3RfaWQKKyMKKyMgIChlKSBUbyBkZWxldGUgYSBwcm9qZWN0OgorIyAgICAgICQgL3BhdGgvdG8vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgYnVpbGRpbXBvcnQgXAorIyAgICAgICAgLS1uYW1lPSRQUk9KRUNUTkFNRSAtLWRlbGV0ZS1wcm9qZWN0CisjCisKKworIyAuLi9iaXRiYWtlL2xpYi90b2FzdGVyL21hbmFnZS5weSBidWlsZGltcG9ydCAtLW5hbWU9dGVzdCAtLXBhdGg9YHB3ZGAgLS1jYWxsYmFjaz0iIiAtLWNvbW1hbmQ9aW1wb3J0CisKK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCitmcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdERvZXNOb3RFeGlzdAorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0TWFuYWdlciwgUHJvamVjdCwgUmVsZWFzZSwgUHJvamVjdFZhcmlhYmxlCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyLCBMYXllcl9WZXJzaW9uLCBMYXllclNvdXJjZSwgUHJvamVjdExheWVyCitmcm9tIHRvYXN0ZXJndWkuYXBpIGltcG9ydCBzY2FuX2xheWVyX2NvbnRlbnQKK2Zyb20gZGphbmdvLmRiIGltcG9ydCBPcGVyYXRpb25hbEVycm9yCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzaHV0aWwKKworIyBUb2FzdGVyIHZhcmlhYmxlIHNlY3Rpb24gZGVsaW1pdGVycworVE9BU1RFUl9QUk9MT0cgPSAnIz09PSBUT0FTVEVSX0NPTkZJR19QUk9MT0cgPT09JworVE9BU1RFUl9FUElMT0cgPSAnIz09PSBUT0FTVEVSX0NPTkZJR19FUElMT0cgPT09JworCisjIHF1aWNrIGRldmVsb3BtZW50L2RlYnVnZ2luZyBzdXBwb3J0Cit2ZXJib3NlID0gMgorZGVmIF9sb2cobXNnKToKKyAgICBpZiAxID09IHZlcmJvc2U6CisgICAgICAgIHByaW50KG1zZykKKyAgICBlbGlmIDIgPT0gdmVyYm9zZToKKyAgICAgICAgZjE9b3BlbignL3RtcC90b2FzdGVyLmxvZycsICdhJykKKyAgICAgICAgZjEud3JpdGUoInwiICsgbXNnICsgInxcbiIgKQorICAgICAgICBmMS5jbG9zZSgpCisKKworX19jb25maWdfcmVnZXhwX18gID0gcmUuY29tcGlsZSggciIiIgorICAgIF4KKyAgICAoP1A8ZXhwPmV4cG9ydFxzKyk/CisgICAgKD9QPHZhcj5bYS16QS1aMC05XC1fKy4ke30vfl0rPykKKyAgICAoXFsoP1A8ZmxhZz5bYS16QS1aMC05XC1fKy5dKylcXSk/CisKKyAgICBccyogKAorICAgICAgICAoP1A8Y29sb24+Oj0pIHwKKyAgICAgICAgKD9QPGxhenlxdWVzPlw/XD89KSB8CisgICAgICAgICg/UDxxdWVzPlw/PSkgfAorICAgICAgICAoP1A8YXBwZW5kPlwrPSkgfAorICAgICAgICAoP1A8cHJlcGVuZD49XCspIHwKKyAgICAgICAgKD9QPHByZWRvdD49XC4pIHwKKyAgICAgICAgKD9QPHBvc3Rkb3Q+XC49KSB8CisgICAgICAgID0KKyAgICApIFxzKgorCisgICAgKD8hJ1teJ10qJ1teJ10qJyQpCisgICAgKD8hXCJbXlwiXSpcIlteXCJdKlwiJCkKKyAgICAoP1A8YXBvPlsnXCJdKQorICAgICg/UDx2YWx1ZT4uKikKKyAgICAoP1A9YXBvKQorICAgICQKKyAgICAiIiIsIHJlLlgpCisKK2NsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgorICAgIGFyZ3MgICAgPSAiPG5hbWU+IDxwYXRoPiA8cmVsZWFzZT4iCisgICAgaGVscCAgICA9ICJJbXBvcnQgYSBjb21tYW5kIGxpbmUgYnVpbGQgZGlyZWN0b3J5IgorICAgIHZhcnMgICAgPSB7fQorICAgIHRvYXN0ZXJfdmFycyA9IHt9CisKKyAgICBkZWYgYWRkX2FyZ3VtZW50cyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tbmFtZScsIGRlc3Q9J25hbWUnLCByZXF1aXJlZD1UcnVlLAorICAgICAgICAgICAgaGVscD0nbmFtZSBvZiB0aGUgcHJvamVjdCcsCisgICAgICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1wYXRoJywgZGVzdD0ncGF0aCcsIHJlcXVpcmVkPVRydWUsCisgICAgICAgICAgICBoZWxwPSdwYXRoIHRvIHRoZSBwcm9qZWN0JywKKyAgICAgICAgICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLXJlbGVhc2UnLCBkZXN0PSdyZWxlYXNlJywgcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSdyZWxlYXNlIGZvciB0aGUgcHJvamVjdCcsCisgICAgICAgICAgICApCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICAgICAnLS1jYWxsYmFjaycsIGRlc3Q9J2NhbGxiYWNrJywgcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSdjYWxsYmFjayBmb3IgcHJvamVjdCBjb25maWcgdXBkYXRlJywKKyAgICAgICAgICAgICkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgICAgICctLWRlbGV0ZS1wcm9qZWN0JywgZGVzdD0nZGVsZXRlX3Byb2plY3QnLCByZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9J2RlbGV0ZSB0aGlzIHByb2plY3QgZnJvbSB0aGUgZGF0YWJhc2UnLAorICAgICAgICAgICAgKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICAgICAgICAgJy0tY29tbWFuZCcsIGRlc3Q9J2NvbW1hbmQnLCByZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9J2NvbW1hbmQgKGNvbmZpZ3VyZSxyZWNvbmZpZ3VyZSxpbXBvcnQpJywKKyAgICAgICAgICAgICkKKworICAgICMgRXh0cmFjdCB0aGUgYmIgdmFyaWFibGVzIGZyb20gYSBjb25mIGZpbGUKKyAgICBkZWYgc2Nhbl9jb25mKHNlbGYsZm4pOgorICAgICAgICB2YXJzID0gc2VsZi52YXJzCisgICAgICAgIHRvYXN0ZXJfdmFycyA9IHNlbGYudG9hc3Rlcl92YXJzCisKKyAgICAgICAgI19sb2coInNjYW5fY29uZjolcyIgJSBmbikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZuKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBmID0gb3BlbihmbiwgJ3InKQorCisgICAgICAgICNzdGF0ZW1lbnRzID0gYXN0LlN0YXRlbWVudEdyb3VwKCkKKyAgICAgICAgbGluZW5vID0gMAorICAgICAgICBpc190b2FzdGVyX3NlY3Rpb24gPSBGYWxzZQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbGluZW5vID0gbGluZW5vICsgMQorICAgICAgICAgICAgcyA9IGYucmVhZGxpbmUoKQorICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHcgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICMgc2tpcCBlbXB0eSBsaW5lcworICAgICAgICAgICAgaWYgbm90IHc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgZXZhbHVhdGUgVG9hc3RlciBzZWN0aW9ucworICAgICAgICAgICAgaWYgdy5zdGFydHN3aXRoKFRPQVNURVJfUFJPTE9HKToKKyAgICAgICAgICAgICAgICBpc190b2FzdGVyX3NlY3Rpb24gPSBUcnVlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHcuc3RhcnRzd2l0aChUT0FTVEVSX0VQSUxPRyk6CisgICAgICAgICAgICAgICAgaXNfdG9hc3Rlcl9zZWN0aW9uID0gRmFsc2UKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcyA9IHMucnN0cmlwKCkKKyAgICAgICAgICAgIHdoaWxlIHNbLTFdID09ICdcXCc6CisgICAgICAgICAgICAgICAgczIgPSBmLnJlYWRsaW5lKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIGxpbmVubyA9IGxpbmVubyArIDEKKyAgICAgICAgICAgICAgICBpZiAobm90IHMyIG9yIHMyIGFuZCBzMlswXSAhPSAiIyIpIGFuZCBzWzBdID09ICIjIiA6CisgICAgICAgICAgICAgICAgICAgIGVjaG8oIlRoZXJlIGlzIGEgY29uZnVzaW5nIG11bHRpbGluZSwgcGFydGlhbGx5IGNvbW1lbnRlZCBleHByZXNzaW9uIG9uIGxpbmUgJXMgb2YgZmlsZSAlcyAoJXMpLlxuUGxlYXNlIGNsYXJpZnkgd2hldGhlciB0aGlzIGlzIGFsbCBhIGNvbW1lbnQgb3Igc2hvdWxkIGJlIHBhcnNlZC4iICUgKGxpbmVubywgZm4sIHMpKQorICAgICAgICAgICAgICAgIHMgPSBzWzotMV0gKyBzMgorICAgICAgICAgICAgIyBza2lwIGNvbW1lbnRzCisgICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBwcm9jZXNzIHRoZSBsaW5lIGZvciBqdXN0IGFzc2lnbm1lbnRzCisgICAgICAgICAgICBtID0gX19jb25maWdfcmVnZXhwX18ubWF0Y2gocykKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgZ3JvdXBkID0gbS5ncm91cGRpY3QoKQorICAgICAgICAgICAgICAgIHZhciA9IGdyb3VwZFsndmFyJ10KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGdyb3VwZFsndmFsdWUnXQorCisgICAgICAgICAgICAgICAgaWYgZ3JvdXBkWydsYXp5cXVlcyddOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgdmFyIGluIHZhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGdyb3VwZFsncXVlcyddOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgdmFyIGluIHZhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgcHJlc2V0IGVtcHR5IGJsYW5rIGZvciByZW1haW5pbmcgb3BlcmF0b3JzCisgICAgICAgICAgICAgICAgaWYgbm90IHZhciBpbiB2YXJzOgorICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSAnJworICAgICAgICAgICAgICAgIGlmIGdyb3VwZFsnYXBwZW5kJ106CisgICAgICAgICAgICAgICAgICAgIHZhcnNbdmFyXSArPSB2YWx1ZQorICAgICAgICAgICAgICAgIGVsaWYgZ3JvdXBkWydwcmVwZW5kJ106CisgICAgICAgICAgICAgICAgICAgIHZhcnNbdmFyXSA9ICIlcyVzIiAlICh2YWx1ZSx2YXJzW3Zhcl0pCisgICAgICAgICAgICAgICAgZWxpZiBncm91cGRbJ3ByZWRvdCddOgorICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSAiJXMgJXMiICUgKHZhbHVlLHZhcnNbdmFyXSkKKyAgICAgICAgICAgICAgICBlbGlmIGdyb3VwZFsncG9zdGRvdCddOgorICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSAiJXMgJXMiICUgKHZhcnNbdmFyXSx2YWx1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2YXJzW3Zhcl0gPSAiJXMiICUgKHZhbHVlKQorICAgICAgICAgICAgICAgICMgY2FwdHVyZSB2YXJzIGluIGEgVG9hc3RlciBzZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgaXNfdG9hc3Rlcl9zZWN0aW9uOgorICAgICAgICAgICAgICAgICAgICB0b2FzdGVyX3ZhcnNbdmFyXSA9IHZhcnNbdmFyXQorCisgICAgICAgICMgRE9ORSBXSVRIIFBBUlNJTkcKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYudmFycyA9IHZhcnMKKyAgICAgICAgc2VsZi50b2FzdGVyX3ZhcnMgPSB0b2FzdGVyX3ZhcnMKKworICAgICMgVXBkYXRlIHRoZSBzY2FubmVkIHByb2plY3QgdmFyaWFibGVzCisgICAgZGVmIHVwZGF0ZV9wcm9qZWN0X3ZhcnMoc2VsZixwcm9qZWN0LG5hbWUpOgorICAgICAgICBwdiwgY3JlYXRlID0gUHJvamVjdFZhcmlhYmxlLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShwcm9qZWN0ID0gcHJvamVjdCwgbmFtZSA9IG5hbWUpCisgICAgICAgIGlmIChub3QgbmFtZSBpbiBzZWxmLnZhcnMua2V5cygpKSBvciAobm90IHNlbGYudmFyc1tuYW1lXSk6CisgICAgICAgICAgICBzZWxmLnZhcnNbbmFtZV0gPSBwdi52YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgcHYudmFsdWUgIT0gc2VsZi52YXJzW25hbWVdOgorICAgICAgICAgICAgICAgIHB2LnZhbHVlID0gc2VsZi52YXJzW25hbWVdCisgICAgICAgIHB2LnNhdmUoKQorCisgICAgIyBGaW5kIHRoZSBnaXQgdmVyc2lvbiBvZiB0aGUgaW5zdGFsbGF0aW9uCisgICAgZGVmIGZpbmRfbGF5ZXJfZGlyX3ZlcnNpb24oc2VsZixwYXRoKToKKyAgICAgICAgIyAgKiByb2NrbyAgICAgICAgICAgICAgIC4uLgorCisgICAgICAgIGluc3RhbGxfdmVyc2lvbiA9ICcnCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIG9zLmNoZGlyKHBhdGgpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2JyYW5jaCcsICctYXYnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIG91dCA9IG91dC5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZm9yIGJyYW5jaCBpbiBvdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBpZiAoJyonID09IGJyYW5jaFswOjFdKSBhbmQgKCdubyBicmFuY2gnIG5vdCBpbiBicmFuY2gpOgorICAgICAgICAgICAgICAgIGluc3RhbGxfdmVyc2lvbiA9IHJlLnN1YignIC4qJywnJyxicmFuY2hbMjpdKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiAncmVtb3Rlcy9tL21hc3RlcicgaW4gYnJhbmNoOgorICAgICAgICAgICAgICAgIGluc3RhbGxfdmVyc2lvbiA9IHJlLnN1YignLipiYXNlLycsJycsYnJhbmNoKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG9zLmNoZGlyKGN3ZCkKKyAgICAgICAgcmV0dXJuIGluc3RhbGxfdmVyc2lvbgorCisgICAgIyBDb21wdXRlIHRhYmxlIG9mIHRoZSBpbnN0YWxsYXRpb24ncyByZWdpc3RlcmVkIGxheWVyIHZlcnNpb25zIChicmFuY2ggb3IgY29tbWl0KQorICAgIGRlZiBmaW5kX2xheWVyX2Rpcl92ZXJzaW9ucyhzZWxmLElOU1RBTExfVVJMX1BSRUZJWCk6CisgICAgICAgIGx2X2RpY3QgPSB7fQorICAgICAgICBsYXllcl92ZXJzaW9ucyA9IExheWVyX1ZlcnNpb24ub2JqZWN0cy5hbGwoKQorICAgICAgICBmb3IgbHYgaW4gbGF5ZXJfdmVyc2lvbnM6CisgICAgICAgICAgICBsYXllciA9IExheWVyLm9iamVjdHMuZmlsdGVyKHBrPWx2LmxheWVyLnBrKVswXQorICAgICAgICAgICAgaWYgbGF5ZXIudmNzX3VybDoKKyAgICAgICAgICAgICAgICB1cmxfc2hvcnQgPSBsYXllci52Y3NfdXJsLnJlcGxhY2UoSU5TVEFMTF9VUkxfUFJFRklYLCcnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1cmxfc2hvcnQgPSAnJworICAgICAgICAgICAgIyByZWdpc3RlciB0aGUgY29yZSwgYnJhbmNoLCBhbmQgdGhlIHZlcnNpb24gdmFyaWF0aW9ucworICAgICAgICAgICAgbHZfZGljdFsiJXMsJXMsJXMiICUgKHVybF9zaG9ydCxsdi5kaXJwYXRoLCcnKV0gPSAobHYuaWQsbGF5ZXIubmFtZSkKKyAgICAgICAgICAgIGx2X2RpY3RbIiVzLCVzLCVzIiAlICh1cmxfc2hvcnQsbHYuZGlycGF0aCxsdi5icmFuY2gpXSA9IChsdi5pZCxsYXllci5uYW1lKQorICAgICAgICAgICAgbHZfZGljdFsiJXMsJXMsJXMiICUgKHVybF9zaG9ydCxsdi5kaXJwYXRoLGx2LmNvbW1pdCldID0gKGx2LmlkLGxheWVyLm5hbWUpCisgICAgICAgICAgICAjX2xvZygiICAoJXMsJXMsJXN8JXMpID0gKCVzLCVzKSIgJSAodXJsX3Nob3J0LGx2LmRpcnBhdGgsbHYuYnJhbmNoLGx2LmNvbW1pdCxsdi5pZCxsYXllci5uYW1lKSkKKyAgICAgICAgcmV0dXJuIGx2X2RpY3QKKworICAgICMgQXBwbHkgdGFibGUgb2YgYWxsIGxheWVyIHZlcnNpb25zCisgICAgZGVmIGV4dHJhY3RfYmJsYXllcnMoc2VsZik6CisgICAgICAgICMgc2V0IHVwIHRoZSBjb25zdGFudHMKKyAgICAgICAgYmJsYXllcl9zdHIgPSBzZWxmLnZhcnNbJ0JCTEFZRVJTJ10KKyAgICAgICAgVE9BU1RFUl9ESVIgPSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9ESVInKQorICAgICAgICBJTlNUQUxMX0NMT05FX1BSRUZJWCA9IG9zLnBhdGguZGlybmFtZShUT0FTVEVSX0RJUikgKyAiLyIKKyAgICAgICAgVE9BU1RFUl9DTE9ORV9QUkVGSVggPSBUT0FTVEVSX0RJUiArICIvX3RvYXN0ZXJfY2xvbmVzLyIKKyAgICAgICAgSU5TVEFMTF9VUkxfUFJFRklYID0gJycKKyAgICAgICAgbGF5ZXJzID0gTGF5ZXIub2JqZWN0cy5maWx0ZXIobmFtZT0nb3BlbmVtYmVkZGVkLWNvcmUnKQorICAgICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzOgorICAgICAgICAgICAgaWYgbGF5ZXIudmNzX3VybDoKKyAgICAgICAgICAgICAgICBJTlNUQUxMX1VSTF9QUkVGSVggPSBsYXllci52Y3NfdXJsCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgSU5TVEFMTF9VUkxfUFJFRklYID0gSU5TVEFMTF9VUkxfUFJFRklYLnJlcGxhY2UoIi9wb2t5IiwiLyIpCisgICAgICAgIElOU1RBTExfVkVSU0lPTl9ESVIgPSBUT0FTVEVSX0RJUgorICAgICAgICBJTlNUQUxMX1VSTF9QT1NURklYID0gSU5TVEFMTF9VUkxfUFJFRklYLnJlcGxhY2UoJzonLCdfJykKKyAgICAgICAgSU5TVEFMTF9VUkxfUE9TVEZJWCA9IElOU1RBTExfVVJMX1BPU1RGSVgucmVwbGFjZSgnLycsJ18nKQorICAgICAgICBJTlNUQUxMX1VSTF9QT1NURklYID0gIiVzXyVzIiAlIChUT0FTVEVSX0NMT05FX1BSRUZJWCxJTlNUQUxMX1VSTF9QT1NURklYKQorCisgICAgICAgICMgZ2V0IHRoZSBzZXQgb2YgYXZhaWxhYmxlIGxheWVyOmxheWVyX3ZlcnNpb25zCisgICAgICAgIGx2X2RpY3QgPSBzZWxmLmZpbmRfbGF5ZXJfZGlyX3ZlcnNpb25zKElOU1RBTExfVVJMX1BSRUZJWCkKKworICAgICAgICAjIGNvbXB1dGUgdGhlIGxheWVyIG1hdGNoZXMKKyAgICAgICAgbGF5ZXJzX2xpc3QgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBiYmxheWVyX3N0ci5zcGxpdCgnICcpOgorICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxpbmUuZW5kc3dpdGgoJy9sb2NhbCcpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICMgaXNvbGF0ZSB0aGUgcmVwbworICAgICAgICAgICAgbGF5ZXJfcGF0aCA9IGxpbmUKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoSU5TVEFMTF9VUkxfUE9TVEZJWCwnJykucmVwbGFjZShJTlNUQUxMX0NMT05FX1BSRUZJWCwnJykucmVwbGFjZSgnL2xheWVycy8nLCcvJykucmVwbGFjZSgnL3Bva3kvJywnLycpCisKKyAgICAgICAgICAgICMgaXNvbGF0ZSB0aGUgc3ViLXBhdGgKKyAgICAgICAgICAgIHBhdGhfaW5kZXggPSBsaW5lLnJmaW5kKCcvJykKKyAgICAgICAgICAgIGlmIHBhdGhfaW5kZXggPiAwOgorICAgICAgICAgICAgICAgIHN1Yl9wYXRoID0gbGluZVtwYXRoX2luZGV4KzE6XQorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzA6cGF0aF9pbmRleF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ViX3BhdGggPSAnJworCisgICAgICAgICAgICAjIGlzb2xhdGUgdGhlIHZlcnNpb24KKyAgICAgICAgICAgIGlmIFRPQVNURVJfQ0xPTkVfUFJFRklYIGluIGxheWVyX3BhdGg6CisgICAgICAgICAgICAgICAgaXNfdG9hc3Rlcl9jbG9uZSA9IFRydWUKKyAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdmVyc2lvbiBmcm9tIG5hbWUgc3ludGF4CisgICAgICAgICAgICAgICAgdmVyc2lvbl9pbmRleCA9IGxpbmUuZmluZCgnXycpCisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbl9pbmRleCA+IDA6CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBsaW5lW3ZlcnNpb25faW5kZXgrMTpdCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzA6dmVyc2lvbl9pbmRleF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gJycKKyAgICAgICAgICAgICAgICBfbG9nKCJUT0FTVEVSX0NMT05FKCVzLyVzKSwgdmVyc2lvbj0lcyIgJSAobGluZSxzdWJfcGF0aCx2ZXJzaW9uKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaXNfdG9hc3Rlcl9jbG9uZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgIyB2ZXJzaW9uIGlzIGZyb20gdGhlIGluc3RhbGxhdGlvbgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSBzZWxmLmZpbmRfbGF5ZXJfZGlyX3ZlcnNpb24obGF5ZXJfcGF0aCkKKyAgICAgICAgICAgICAgICBfbG9nKCJMT0NBTF9DTE9ORSglcy8lcyksIHZlcnNpb249JXMiICUgKGxpbmUsc3ViX3BhdGgsdmVyc2lvbikpCisKKyAgICAgICAgICAgICMgY2FwdHVyZSB0aGUgbGF5ZXIgaW5mb3JtYXRpb24gaW50byBsYXllcnNfbGlzdAorICAgICAgICAgICAgbGF5ZXJzX2xpc3QuYXBwZW5kKCAobGluZSxzdWJfcGF0aCx2ZXJzaW9uLGxheWVyX3BhdGgsaXNfdG9hc3Rlcl9jbG9uZSkgKQorICAgICAgICByZXR1cm4gbGF5ZXJzX2xpc3QsbHZfZGljdAorCisgICAgIworICAgIGRlZiBmaW5kX2ltcG9ydF9yZWxlYXNlKHNlbGYsbGF5ZXJzX2xpc3QsbHZfZGljdCxkZWZhdWx0X3JlbGVhc2UpOgorICAgICAgICAjICAgcG9reSxtZXRhLHJvY2tvID0+IDQ7b3BlbmVtYmVkZGVkLWNvcmUKKyAgICAgICAgcmVsZWFzZSA9IGRlZmF1bHRfcmVsZWFzZQorICAgICAgICBmb3IgbGluZSxwYXRoLHZlcnNpb24sbGF5ZXJfcGF0aCxpc190b2FzdGVyX2Nsb25lIGluIGxheWVyc19saXN0OgorICAgICAgICAgICAga2V5ID0gIiVzLCVzLCVzIiAlIChsaW5lLHBhdGgsdmVyc2lvbikKKyAgICAgICAgICAgIGlmIGtleSBpbiBsdl9kaWN0OgorICAgICAgICAgICAgICAgIGx2X2lkID0gbHZfZGljdFtrZXldCisgICAgICAgICAgICAgICAgaWYgJ29wZW5lbWJlZGRlZC1jb3JlJyA9PSBsdl9pZFsxXToKKyAgICAgICAgICAgICAgICAgICAgX2xvZygiRmluZF9pbXBvcnRfcmVsZWFzZSglcyk6dmVyc2lvbj0lcyxUb2FzdGVyPSVzIiAlIChsdl9pZFsxXSx2ZXJzaW9uLGlzX3RvYXN0ZXJfY2xvbmUpKQorICAgICAgICAgICAgICAgICAgICAjIG9ubHkgdmVyc2lvbnMgaW4gVG9hc3RlciBtYW5hZ2VkIGxheWVycyBhcmUgYWNjZXB0ZWQKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX3RvYXN0ZXJfY2xvbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChuYW1lPXZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgX2xvZygiRmluZF9pbXBvcnRfcmVsZWFzZTpSRUxFQVNFPSVzIiAlIHJlbGVhc2UubmFtZSkKKyAgICAgICAgcmV0dXJuIHJlbGVhc2UKKworICAgICMgQXBwbHkgdGhlIGZvdW5kIGNvbmYgbGF5ZXJzCisgICAgZGVmIGFwcGx5X2NvbmZfYmJsYXllcnMoc2VsZixsYXllcnNfbGlzdCxsdl9kaWN0LHByb2plY3QscmVsZWFzZT1Ob25lKToKKyAgICAgICAgZm9yIGxpbmUscGF0aCx2ZXJzaW9uLGxheWVyX3BhdGgsaXNfdG9hc3Rlcl9jbG9uZSBpbiBsYXllcnNfbGlzdDoKKyAgICAgICAgICAgICMgQXNzZXJ0IHJlbGVhc2UgcHJvbW90ZSBpZiBwcmVzZW50CisgICAgICAgICAgICBpZiByZWxlYXNlOgorICAgICAgICAgICAgICAgIHZlcnNpb24gPSByZWxlYXNlCisgICAgICAgICAgICAjIHRyeSB0byBtYXRjaCB0aGUga2V5IHRvIGEgbGF5ZXJfdmVyc2lvbgorICAgICAgICAgICAga2V5ID0gIiVzLCVzLCVzIiAlIChsaW5lLHBhdGgsdmVyc2lvbikKKyAgICAgICAgICAgIGtleV9zaG9ydCA9ICIlcywlcywlcyIgJSAobGluZSxwYXRoLCcnKQorICAgICAgICAgICAgbHZfaWQgPSAnJworICAgICAgICAgICAgaWYga2V5IGluIGx2X2RpY3Q6CisgICAgICAgICAgICAgICAgbHZfaWQgPSBsdl9kaWN0W2tleV0KKyAgICAgICAgICAgICAgICBsdiA9IExheWVyX1ZlcnNpb24ub2JqZWN0cy5nZXQocGs9aW50KGx2X2lkWzBdKSkKKyAgICAgICAgICAgICAgICBwbCxjcmVhdGVkID0gUHJvamVjdExheWVyLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShwcm9qZWN0PXByb2plY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcmNvbW1pdD1sdikKKyAgICAgICAgICAgICAgICBwbC5vcHRpb25hbD1GYWxzZQorICAgICAgICAgICAgICAgIHBsLnNhdmUoKQorICAgICAgICAgICAgICAgIF9sb2coIiAgJXMgPT4gJXM7JXMiICUgKGtleSxsdl9pZFswXSxsdl9pZFsxXSkpCisgICAgICAgICAgICBlbGlmIGtleV9zaG9ydCBpbiBsdl9kaWN0OgorICAgICAgICAgICAgICAgIGx2X2lkID0gbHZfZGljdFtrZXlfc2hvcnRdCisgICAgICAgICAgICAgICAgbHYgPSBMYXllcl9WZXJzaW9uLm9iamVjdHMuZ2V0KHBrPWludChsdl9pZFswXSkpCisgICAgICAgICAgICAgICAgcGwsY3JlYXRlZCA9IFByb2plY3RMYXllci5vYmplY3RzLmdldF9vcl9jcmVhdGUocHJvamVjdD1wcm9qZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJjb21taXQ9bHYpCisgICAgICAgICAgICAgICAgcGwub3B0aW9uYWw9RmFsc2UKKyAgICAgICAgICAgICAgICBwbC5zYXZlKCkKKyAgICAgICAgICAgICAgICBfbG9nKCIgICVzID8+ICVzIiAlIChrZXksbHZfZGljdFtrZXlfc2hvcnRdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgX2xvZygiJXMgPD0gJXMiICUgKGtleSxsYXllcl9wYXRoKSkKKyAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgIyBkb2VzIGxvY2FsIGxheWVyIGFscmVhZHkgZXhpc3QgaW4gdGhpcyBwcm9qZWN0PworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBsIGluIFByb2plY3RMYXllci5vYmplY3RzLmZpbHRlcihwcm9qZWN0PXByb2plY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGwubGF5ZXJjb21taXQubGF5ZXIubG9jYWxfc291cmNlX2RpciA9PSBsYXllcl9wYXRoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sb2coIiAgUHJvamVjdCBMb2NhbCBMYXllciBmb3VuZCEiKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgX2xvZygiRVJST1I6IExvY2FsIExheWVyICclcyciICUgZSkKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgICAgICAgICAjIERvZXMgTGF5ZXIgbmFtZStwYXRoIGFscmVhZHkgZXhpc3Q/CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyX25hbWVfYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUobGF5ZXJfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIF9sb2coIkxheWVyX2xvb2t1cDogdHJ5ICclcycsJyVzJyIgJSAobGF5ZXJfbmFtZV9iYXNlLGxheWVyX3BhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIgPSBMYXllci5vYmplY3RzLmdldChuYW1lPWxheWVyX25hbWVfYmFzZSxsb2NhbF9zb3VyY2VfZGlyID0gbGF5ZXJfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRm91bmQhIEF0dGFjaCBsYXllcl92ZXJzaW9uIGFuZCBQcm9qZWN0TGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb24gPSBMYXllcl9WZXJzaW9uLm9iamVjdHMuY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyPWxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9cHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcl9zb3VyY2U9TGF5ZXJTb3VyY2UuVFlQRV9JTVBPUlRFRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb24uc2F2ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBwbCxjcmVhdGVkID0gUHJvamVjdExheWVyLm9iamVjdHMuZ2V0X29yX2NyZWF0ZShwcm9qZWN0PXByb2plY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyY29tbWl0PWxheWVyX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBwbC5vcHRpb25hbD1GYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGwuc2F2ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIGxheWVyIGNvbnRlbnRzIHRvIHRoaXMgbGF5ZXIgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgc2Nhbl9sYXllcl9jb250ZW50KGxheWVyLGxheWVyX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nKCIgIFBhcmVudCBMb2NhbCBMYXllciBmb3VuZCBpbiBkYiEiKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nKCJMYXllcl9leGlzdHNfdGVzdF9mYWlsZWQ6IExvY2FsIExheWVyICclcyciICUgZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICAgICAgICAgIyBJbnN1cmUgdGhhdCBsYXllciBwYXRoIGV4aXN0cywgaW4gY2FzZSBvZiB1c2VyIHR5cG8KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIobGF5ZXJfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICBfbG9nKCJFUlJPUjpMYXllciBwYXRoICclcycgbm90IGZvdW5kIiAlIGxheWVyX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAjIEFkZCBsYXllciB0byBkYiBhbmQgYXR0YWNoIHByb2plY3QgdG8gaXQKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJfbmFtZV9iYXNlID0gb3MucGF0aC5iYXNlbmFtZShsYXllcl9wYXRoKQorICAgICAgICAgICAgICAgICAgICAjIGdlbmVyYXRlIGEgdW5pcXVlIGxheWVyIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJfbmFtZV9tYXRjaGVzID0ge30KKyAgICAgICAgICAgICAgICAgICAgZm9yIGxheWVyIGluIExheWVyLm9iamVjdHMuZmlsdGVyKG5hbWVfX2NvbnRhaW5zPWxheWVyX25hbWVfYmFzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcl9uYW1lX21hdGNoZXNbbGF5ZXIubmFtZV0gPSAnMScKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXJfbmFtZV9pZHggPSAwCisgICAgICAgICAgICAgICAgICAgIGxheWVyX25hbWVfdGVzdCA9IGxheWVyX25hbWVfYmFzZQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBsYXllcl9uYW1lX3Rlc3QgaW4gbGF5ZXJfbmFtZV9tYXRjaGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyX25hbWVfaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyX25hbWVfdGVzdCA9ICIlc18lZCIgJSAobGF5ZXJfbmFtZV9iYXNlLGxheWVyX25hbWVfaWR4KQorICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgbGF5ZXIgYW5kIGxheWVyX3ZlcmlvbiBvYmplY3RzCisgICAgICAgICAgICAgICAgICAgIGxheWVyID0gTGF5ZXIub2JqZWN0cy5jcmVhdGUobmFtZT1sYXllcl9uYW1lX3Rlc3QpCisgICAgICAgICAgICAgICAgICAgIGxheWVyLmxvY2FsX3NvdXJjZV9kaXIgPSBsYXllcl9wYXRoCisgICAgICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb24gPSBMYXllcl9WZXJzaW9uLm9iamVjdHMuY3JlYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXI9bGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXByb2plY3QsCisgICAgICAgICAgICAgICAgICAgICAgICBsYXllcl9zb3VyY2U9TGF5ZXJTb3VyY2UuVFlQRV9JTVBPUlRFRCkKKyAgICAgICAgICAgICAgICAgICAgbGF5ZXIuc2F2ZSgpCisgICAgICAgICAgICAgICAgICAgIGxheWVyX3ZlcnNpb24uc2F2ZSgpCisgICAgICAgICAgICAgICAgICAgIHBsLGNyZWF0ZWQgPSBQcm9qZWN0TGF5ZXIub2JqZWN0cy5nZXRfb3JfY3JlYXRlKHByb2plY3Q9cHJvamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcmNvbW1pdD1sYXllcl92ZXJzaW9uKQorICAgICAgICAgICAgICAgICAgICBwbC5vcHRpb25hbD1GYWxzZQorICAgICAgICAgICAgICAgICAgICBwbC5zYXZlKCkKKyAgICAgICAgICAgICAgICAgICAgIyByZWdpc3RlciB0aGUgbGF5ZXIncyBjb250ZW50CisgICAgICAgICAgICAgICAgICAgIF9sb2coIiAgTG9jYWwgTGF5ZXIgQWRkIGNvbnRlbnQiKQorICAgICAgICAgICAgICAgICAgICBzY2FuX2xheWVyX2NvbnRlbnQobGF5ZXIsbGF5ZXJfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgX2xvZygiICBMb2NhbCBMYXllciBBZGRlZCAnJXMnISIgJSBsYXllcl9uYW1lX3Rlc3QpCisKKyAgICAjIFNjYW4gdGhlIHByb2plY3QncyBjb25mIGZpbGVzIChpZiBhbnkpCisgICAgZGVmIHNjYW5fY29uZl92YXJpYWJsZXMoc2VsZixwcm9qZWN0X3BhdGgpOgorICAgICAgICAjIHNjYW4gdGhlIHByb2plY3QncyBzZXR0aW5ncywgYWRkIGFueSBuZXcgbGF5ZXJzIG9yIHZhcmlhYmxlcworICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSgiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCk6CisgICAgICAgICAgICBzZWxmLnNjYW5fY29uZigiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuc2Nhbl9jb25mKCIlcy9jb25mL2JibGF5ZXJzLmNvbmYiICUgcHJvamVjdF9wYXRoKQorICAgICAgICAgICAgIyBJbXBvcnQgdGhlbiBkaXNhYmxlIG9sZCBzdHlsZSBUb2FzdGVyIGNvbmYgZmlsZXMgKGJlZm9yZSAnbWVyZ2VkX2F0dHInKQorICAgICAgICAgICAgb2xkX3RvYXN0ZXJfbG9jYWwgPSAiJXMvY29uZi90b2FzdGVyLmNvbmYiICUgcHJvamVjdF9wYXRoCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvbGRfdG9hc3Rlcl9sb2NhbCk6CisgICAgICAgICAgICAgICAgc2VsZi5zY2FuX2NvbmYob2xkX3RvYXN0ZXJfbG9jYWwpCisgICAgICAgICAgICAgICAgc2h1dGlsLm1vdmUob2xkX3RvYXN0ZXJfbG9jYWwsIG9sZF90b2FzdGVyX2xvY2FsKyJfb2xkIikKKyAgICAgICAgICAgIG9sZF90b2FzdGVyX2xheWVyID0gIiVzL2NvbmYvdG9hc3Rlci1iYmxheWVycy5jb25mIiAlIHByb2plY3RfcGF0aAorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob2xkX3RvYXN0ZXJfbGF5ZXIpOgorICAgICAgICAgICAgICAgIHNlbGYuc2Nhbl9jb25mKG9sZF90b2FzdGVyX2xheWVyKQorICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKG9sZF90b2FzdGVyX2xheWVyLCBvbGRfdG9hc3Rlcl9sYXllcisiX29sZCIpCisKKyAgICAjIFNjYW4gdGhlIGZvdW5kIGNvbmYgdmFyaWFibGVzIChpZiBhbnkpCisgICAgZGVmIGFwcGx5X2NvbmZfdmFyaWFibGVzKHNlbGYscHJvamVjdCxsYXllcnNfbGlzdCxsdl9kaWN0LHJlbGVhc2U9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYudmFyczoKKyAgICAgICAgICAgICMgQ2F0Y2ggdmFycyByZWxldmFudCB0byBUb2FzdGVyIChpbiBjYXNlIG5vIFRvYXN0ZXIgc2VjdGlvbikKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX3Byb2plY3RfdmFycyhwcm9qZWN0LCdESVNUUk8nKQorICAgICAgICAgICAgc2VsZi51cGRhdGVfcHJvamVjdF92YXJzKHByb2plY3QsJ01BQ0hJTkUnKQorICAgICAgICAgICAgc2VsZi51cGRhdGVfcHJvamVjdF92YXJzKHByb2plY3QsJ0lNQUdFX0lOU1RBTExfYXBwZW5kJykKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX3Byb2plY3RfdmFycyhwcm9qZWN0LCdJTUFHRV9GU1RZUEVTJykKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX3Byb2plY3RfdmFycyhwcm9qZWN0LCdQQUNLQUdFX0NMQVNTRVMnKQorICAgICAgICAgICAgIyBUaGVzZSB2YXJzIGFyZSB0eXBpY2FsbHkgb25seSBhc3NpZ25lZCBieSBUb2FzdGVyCisgICAgICAgICAgICAjc2VsZi51cGRhdGVfcHJvamVjdF92YXJzKHByb2plY3QsJ0RMX0RJUicpCisgICAgICAgICAgICAjc2VsZi51cGRhdGVfcHJvamVjdF92YXJzKHByb2plY3QsJ1NTVEFURV9ESVInKQorCisgICAgICAgICAgICAjIEFzc2VydCBmb3VuZCBUb2FzdGVyIHZhcnMKKyAgICAgICAgICAgIGZvciB2YXIgaW4gc2VsZi50b2FzdGVyX3ZhcnMua2V5cygpOgorICAgICAgICAgICAgICAgIHB2LCBjcmVhdGUgPSBQcm9qZWN0VmFyaWFibGUub2JqZWN0cy5nZXRfb3JfY3JlYXRlKHByb2plY3QgPSBwcm9qZWN0LCBuYW1lID0gdmFyKQorICAgICAgICAgICAgICAgIHB2LnZhbHVlID0gc2VsZi50b2FzdGVyX3ZhcnNbdmFyXQorICAgICAgICAgICAgICAgIF9sb2coIiogQWRkL3VwZGF0ZSBUb2FzdGVyIHZhciAnJXMnID0gJyVzJyIgJSAocHYubmFtZSxwdi52YWx1ZSkpCisgICAgICAgICAgICAgICAgcHYuc2F2ZSgpCisKKyAgICAgICAgICAgICMgQXNzZXJ0IGZvdW5kIEJCTEFZRVJTCisgICAgICAgICAgICBpZiAwIDwgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBmb3IgcGwgaW4gUHJvamVjdExheWVyLm9iamVjdHMuZmlsdGVyKHByb2plY3Q9cHJvamVjdCk6CisgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfbmFtZSA9ICdOb25lJyBpZiBub3QgcGwubGF5ZXJjb21taXQucmVsZWFzZSBlbHNlIHBsLmxheWVyY29tbWl0LnJlbGVhc2UubmFtZQorICAgICAgICAgICAgICAgICAgICBwcmludCgiIEJFRk9SRTpQcm9qZWN0TGF5ZXI9JXMsJXMsJXMsJXMiICUgKHBsLmxheWVyY29tbWl0LmxheWVyLm5hbWUscmVsZWFzZV9uYW1lLHBsLmxheWVyY29tbWl0LmJyYW5jaCxwbC5sYXllcmNvbW1pdC5jb21taXQpKQorICAgICAgICAgICAgc2VsZi5hcHBseV9jb25mX2JibGF5ZXJzKGxheWVyc19saXN0LGx2X2RpY3QscHJvamVjdCxyZWxlYXNlKQorICAgICAgICAgICAgaWYgMCA8IHZlcmJvc2U6CisgICAgICAgICAgICAgICAgZm9yIHBsIGluIFByb2plY3RMYXllci5vYmplY3RzLmZpbHRlcihwcm9qZWN0PXByb2plY3QpOgorICAgICAgICAgICAgICAgICAgICByZWxlYXNlX25hbWUgPSAnTm9uZScgaWYgbm90IHBsLmxheWVyY29tbWl0LnJlbGVhc2UgZWxzZSBwbC5sYXllcmNvbW1pdC5yZWxlYXNlLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiBBRlRFUiA6UHJvamVjdExheWVyPSVzLCVzLCVzLCVzIiAlIChwbC5sYXllcmNvbW1pdC5sYXllci5uYW1lLHJlbGVhc2VfbmFtZSxwbC5sYXllcmNvbW1pdC5icmFuY2gscGwubGF5ZXJjb21taXQuY29tbWl0KSkKKworCisgICAgZGVmIGhhbmRsZShzZWxmLCAqYXJncywgKipvcHRpb25zKToKKyAgICAgICAgcHJvamVjdF9uYW1lID0gb3B0aW9uc1snbmFtZSddCisgICAgICAgIHByb2plY3RfcGF0aCA9IG9wdGlvbnNbJ3BhdGgnXQorICAgICAgICBwcm9qZWN0X2NhbGxiYWNrID0gb3B0aW9uc1snY2FsbGJhY2snXSBpZiBvcHRpb25zWydjYWxsYmFjayddIGVsc2UgJycKKyAgICAgICAgcmVsZWFzZV9uYW1lID0gb3B0aW9uc1sncmVsZWFzZSddIGlmIG9wdGlvbnNbJ3JlbGVhc2UnXSBlbHNlICcnCisKKyAgICAgICAgIworICAgICAgICAjIERlbGV0ZSBwcm9qZWN0CisgICAgICAgICMKKworICAgICAgICBpZiBvcHRpb25zWydkZWxldGVfcHJvamVjdCddOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHByaW50KCJQcm9qZWN0ICclcycgZGVsZXRlIGZyb20gVG9hc3RlciBkYXRhYmFzZSIgJSAocHJvamVjdF9uYW1lKSkKKyAgICAgICAgICAgICAgICBwcm9qZWN0ID0gUHJvamVjdC5vYmplY3RzLmdldChuYW1lPXByb2plY3RfbmFtZSkKKyAgICAgICAgICAgICAgICAjIFRPRE86IGRlZXAgcHJvamVjdCBkZWxldGUKKyAgICAgICAgICAgICAgICBwcm9qZWN0LmRlbGV0ZSgpCisgICAgICAgICAgICAgICAgcHJpbnQoIlByb2plY3QgJyVzJyBEZWxldGVkIiAlIChwcm9qZWN0X25hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHByaW50KCJQcm9qZWN0ICclcycgbm90IGZvdW5kLCBub3QgZGVsZXRlZCAoJXMpIiAlIChwcm9qZWN0X25hbWUsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIworICAgICAgICAjIENyZWF0ZS9VcGRhdGUvSW1wb3J0IHByb2plY3QKKyAgICAgICAgIworCisgICAgICAgICMgU2VlIGlmIHByb2plY3QgKGJ5IG5hbWUpIGV4aXN0cworICAgICAgICBwcm9qZWN0ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIFByb2plY3QgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KG5hbWU9cHJvamVjdF9uYW1lKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBGaW5kIHRoZSBpbnN0YWxsYXRpb24ncyBkZWZhdWx0IHJlbGVhc2UKKyAgICAgICAgZGVmYXVsdF9yZWxlYXNlID0gUmVsZWFzZS5vYmplY3RzLmdldChpZD0xKQorCisgICAgICAgICMgU0FOSVRZOiBpZiAncmVjb25maWcnIGJ1dCBwcm9qZWN0IGRvZXMgbm90IGV4aXN0IChkZWxldGVkIGV4dGVybmFsbHkpLCBzd2l0Y2ggdG8gJ2ltcG9ydCcKKyAgICAgICAgaWYgKCJyZWNvbmZpZ3VyZSIgPT0gb3B0aW9uc1snY29tbWFuZCddKSBhbmQgKE5vbmUgPT0gcHJvamVjdCk6CisgICAgICAgICAgICBvcHRpb25zWydjb21tYW5kJ10gPSAnaW1wb3J0JworCisgICAgICAgICMgJ0NvbmZpZ3VyZSc6CisgICAgICAgIGlmICJjb25maWd1cmUiID09IG9wdGlvbnNbJ2NvbW1hbmQnXToKKyAgICAgICAgICAgICMgTm90ZTogaWdub3JlIGFueSBleGlzdGluZyBjb25mIGZpbGVzCisgICAgICAgICAgICAjIGNyZWF0ZSBwcm9qZWN0LCBTQU5JVFk6IHJldXNlIGFueSBwcm9qZWN0IG9mIHNhbWUgbmFtZQorICAgICAgICAgICAgcHJvamVjdCA9IFByb2plY3Qub2JqZWN0cy5jcmVhdGVfcHJvamVjdChwcm9qZWN0X25hbWUsZGVmYXVsdF9yZWxlYXNlLHByb2plY3QpCisKKyAgICAgICAgIyAnUmUtY29uZmlndXJlJzoKKyAgICAgICAgaWYgInJlY29uZmlndXJlIiA9PSBvcHRpb25zWydjb21tYW5kJ106CisgICAgICAgICAgICAjIFNjYW4gdGhlIGRpcmVjdG9yeSdzIGNvbmYgZmlsZXMKKyAgICAgICAgICAgIHNlbGYuc2Nhbl9jb25mX3ZhcmlhYmxlcyhwcm9qZWN0X3BhdGgpCisgICAgICAgICAgICAjIFNjYW4gdGhlIGxheWVyIGxpc3QKKyAgICAgICAgICAgIGxheWVyc19saXN0LGx2X2RpY3QgPSBzZWxmLmV4dHJhY3RfYmJsYXllcnMoKQorICAgICAgICAgICAgIyBBcHBseSBhbnkgbmV3IGxheWVycyBvciB2YXJpYWJsZXMKKyAgICAgICAgICAgIHNlbGYuYXBwbHlfY29uZl92YXJpYWJsZXMocHJvamVjdCxsYXllcnNfbGlzdCxsdl9kaWN0KQorCisgICAgICAgICMgJ0ltcG9ydCc6CisgICAgICAgIGlmICJpbXBvcnQiID09IG9wdGlvbnNbJ2NvbW1hbmQnXToKKyAgICAgICAgICAgICMgU2NhbiB0aGUgZGlyZWN0b3J5J3MgY29uZiBmaWxlcworICAgICAgICAgICAgc2VsZi5zY2FuX2NvbmZfdmFyaWFibGVzKHByb2plY3RfcGF0aCkKKyAgICAgICAgICAgICMgUmVtb3ZlIHRoZXNlIFRvYXN0ZXIgY29udHJvbGxlZCB2YXJpYWJsZXMKKyAgICAgICAgICAgIGZvciB2YXIgaW4gKCdETF9ESVInLCdTU1RBVEVfRElSJyk6CisgICAgICAgICAgICAgICAgc2VsZi52YXJzLnBvcCh2YXIsIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi50b2FzdGVyX3ZhcnMucG9wKHZhciwgTm9uZSkKKyAgICAgICAgICAgICMgU2NhbiB0aGUgbGF5ZXIgbGlzdAorICAgICAgICAgICAgbGF5ZXJzX2xpc3QsbHZfZGljdCA9IHNlbGYuZXh0cmFjdF9iYmxheWVycygpCisgICAgICAgICAgICAjIEZpbmQgdGhlIGRpcmVjdG9yeSdzIHJlbGVhc2UsIGFuZCBwcm9tb3RlIHRvIGRlZmF1bHRfcmVsZWFzZSBpZiBsb2NhbCBwYXRocworICAgICAgICAgICAgcmVsZWFzZSA9IHNlbGYuZmluZF9pbXBvcnRfcmVsZWFzZShsYXllcnNfbGlzdCxsdl9kaWN0LGRlZmF1bHRfcmVsZWFzZSkKKyAgICAgICAgICAgICMgY3JlYXRlIHByb2plY3QsIFNBTklUWTogcmV1c2UgYW55IHByb2plY3Qgb2Ygc2FtZSBuYW1lCisgICAgICAgICAgICBwcm9qZWN0ID0gUHJvamVjdC5vYmplY3RzLmNyZWF0ZV9wcm9qZWN0KHByb2plY3RfbmFtZSxyZWxlYXNlLHByb2plY3QpCisgICAgICAgICAgICAjIEFwcGx5IGFueSBuZXcgbGF5ZXJzIG9yIHZhcmlhYmxlcworICAgICAgICAgICAgc2VsZi5hcHBseV9jb25mX3ZhcmlhYmxlcyhwcm9qZWN0LGxheWVyc19saXN0LGx2X2RpY3QscmVsZWFzZSkKKyAgICAgICAgICAgICMgV09SS0FST1VORDogc2luY2Ugd2Ugbm93IGRlcml2ZSB0aGUgcmVsZWFzZSwgcmVkaXJlY3QgJ25ld3Byb2plY3Rfc3BlY2lmaWMnIHRvICdwcm9qZWN0X3NwZWNpZmljJworICAgICAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoJ0lOVEVSTkFMX1BST0pFQ1RfU1BFQ0lGSUNfU0tJUFJFTEVBU0UnLCcxJykKKworICAgICAgICAjIFNldCB1cCB0aGUgcHJvamVjdCdzIG1ldGEgZGF0YQorICAgICAgICBwcm9qZWN0LmJ1aWxkZGlyID0gcHJvamVjdF9wYXRoCisgICAgICAgIHByb2plY3QubWVyZ2VkX2F0dHIgPSBUcnVlCisgICAgICAgIHByb2plY3Quc2V0X3ZhcmlhYmxlKFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19DQUxMQkFDSyxwcm9qZWN0X2NhbGxiYWNrKQorICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfU1RBVFVTLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19FRElUKQorICAgICAgICBpZiAoImNvbmZpZ3VyZSIgPT0gb3B0aW9uc1snY29tbWFuZCddKSBvciAoImltcG9ydCIgPT0gb3B0aW9uc1snY29tbWFuZCddKToKKyAgICAgICAgICAgICMgcHJlc2V0IHRoZSBtb2RlIGFuZCBkZWZhdWx0IGltYWdlIHJlY2lwZQorICAgICAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0lTTkVXLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ORVcpCisgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfREVGQVVMVElNQUdFLCJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICAgICAgIyBBc3NlcnQgYW55IGV4dGVuZGVkL2N1c3RvbSBhY3Rpb25zIG9yIHZhcmlhYmxlcyBmb3IgbmV3IG5vbi1Ub2FzdGVyIHByb2plY3RzCisgICAgICAgICAgICBpZiBub3QgbGVuKHNlbGYudG9hc3Rlcl92YXJzKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfSVNORVcsUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX05PTkUpCisKKyAgICAgICAgIyBTYXZlIHRoZSB1cGRhdGVkIFByb2plY3QKKyAgICAgICAgcHJvamVjdC5zYXZlKCkKKworICAgICAgICBfbG9nKCJCdWlsZGltcG9ydDpwcm9qZWN0PSclcycgYXQgJyVkJyIgJSAocHJvamVjdF9uYW1lLHByb2plY3QuaWQpKQorCisgICAgICAgIGlmICgnREVGQVVMVF9JTUFHRScgaW4gc2VsZi52YXJzKSBhbmQgKHNlbGYudmFyc1snREVGQVVMVF9JTUFHRSddKToKKyAgICAgICAgICAgIHByaW50KCJ8RGVmYXVsdF9pbWFnZT0lc3xQcm9qZWN0X2lkPSVkIiAlIChzZWxmLnZhcnNbJ0RFRkFVTFRfSU1BR0UnXSxwcm9qZWN0LmlkKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHByaW50KCJ8UHJvamVjdF9pZD0lZCIgJSAocHJvamVjdC5pZCkpCisKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQgYi9wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0CmluZGV4IGMwZWMzNjguLmE2ODJiMDggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKysrIGIvcG9reS9iaXRiYWtlL3RvYXN0ZXItcmVxdWlyZW1lbnRzLnR4dApAQCAtMSwzICsxLDMgQEAKLURqYW5nbz4xLjgsPDEuMTEuOQorRGphbmdvPjEuOCw8MS4xMgogYmVhdXRpZnVsc291cDQ+PTQuNC4wCiBweXR6CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggZTQxZDVhMC4uMDkzNDIyZiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtMTY1LDYgKzE2NSw3IEBACiBUQVJGSUxFUyA9IGRldi1zdHlsZS5jc3MgZGV2LW1hbnVhbC5odG1sIGZpZ3VyZXMvYnVpbGRoaXN0b3J5LXdlYi5wbmcgXAogICAgICAgICAgICBmaWd1cmVzL2Rldi10aXRsZS5wbmcgZmlndXJlcy9idWlsZGhpc3RvcnkucG5nIFwKICAgICAgICAgICAgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIGZpZ3VyZXMvYml0YmFrZS1idWlsZC1mbG93LnBuZyBcCisgICAgICAgICAgIGZpZ3VyZXMvbXVsdGljb25maWdfZmlsZXMucG5nIFwKICAgICAgICAgICAgZWNsaXBzZQogCWVuZGlmCiAKQEAgLTI2MSw3ICsyNjIsNyBAQAogICAgICAgICBmaWd1cmVzL2ltYWdlLWdlbmVyYXRpb24ucG5nIGZpZ3VyZXMva2V5LWRldi1lbGVtZW50cy5wbmdcCiAJZmlndXJlcy9zZGstZ2VuZXJhdGlvbi5wbmcgZmlndXJlcy9yZWNpcGUtd29ya2Zsb3cucG5nIFwKIAlmaWd1cmVzL2J1aWxkLXdvcmtzcGFjZS1kaXJlY3RvcnkucG5nIGZpZ3VyZXMvbWVnYS10aXRsZS5wbmcgXAotCWZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmcgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgXAorCWZpZ3VyZXMvdG9hc3Rlci10aXRsZS5wbmcgZmlndXJlcy9ob3N0ZWQtc2VydmljZS5wbmcgZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmcgXAogCWZpZ3VyZXMvc2ltcGxlLWNvbmZpZ3VyYXRpb24ucG5nIGZpZ3VyZXMvcG9reS1yZWZlcmVuY2UtZGlzdHJpYnV0aW9uLnBuZyBcCiAJZmlndXJlcy9jb21wYXRpYmxlLWxheWVycy5wbmcgZmlndXJlcy9pbXBvcnQtbGF5ZXIucG5nIGZpZ3VyZXMvbmV3LXByb2plY3QucG5nIFwKIAlmaWd1cmVzL3Nkay1lbnZpcm9ubWVudC5wbmcgZmlndXJlcy9zZGstaW5zdGFsbGVkLXN0YW5kYXJkLXNkay1kaXJlY3RvcnkucG5nIFwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCmluZGV4IDYyYzQ5NjQuLmY4YjAxZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbApAQCAtMzcsMTcgKzM3LDMwIEBACiAgICAgICAgICAgICBoYXJkd2FyZS4KICAgICAgICAgICAgIFlvdSB3aWxsIHVzZSBZb2N0byBQcm9qZWN0IHRvIGJ1aWxkIGEgcmVmZXJlbmNlIGVtYmVkZGVkIE9TCiAgICAgICAgICAgICBjYWxsZWQgUG9reS4KLSAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgIFRoZSBleGFtcGxlcyBpbiB0aGlzIHBhcGVyIGFzc3VtZSB5b3UgYXJlIHVzaW5nIGEgbmF0aXZlIExpbnV4Ci0gICAgICAgICAgICAgICAgc3lzdGVtIHJ1bm5pbmcgYSByZWNlbnQgVWJ1bnR1IExpbnV4IGRpc3RyaWJ1dGlvbi4KLSAgICAgICAgICAgICAgICBJZiB0aGUgbWFjaGluZSB5b3Ugd2FudCB0byB1c2UKLSAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IG9uIHRvIGJ1aWxkIGFuIGltYWdlIGlzIG5vdCBhIG5hdGl2ZSBMaW51eAotICAgICAgICAgICAgICAgIHN5c3RlbSwgeW91IGNhbiBzdGlsbCBwZXJmb3JtIHRoZXNlIHN0ZXBzIGJ5IHVzaW5nIENST3NzCi0gICAgICAgICAgICAgICAgUGxhdGZvcm1TIChDUk9QUykgYW5kIHNldHRpbmcgdXAgYSBQb2t5IGNvbnRhaW5lci4KLSAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2UtY3JvcHMnPlNldHRpbmcgVXAgdG8gVXNlIENST3NzIFBsYXRmb3JtUyAoQ1JPUFMpPC91bGluaz4iCi0gICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yIG1vcmUKLSAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGV4YW1wbGVzIGluIHRoaXMgcGFwZXIgYXNzdW1lIHlvdSBhcmUgdXNpbmcgYQorICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlIExpbnV4IHN5c3RlbSBydW5uaW5nIGEgcmVjZW50IFVidW50dSBMaW51eAorICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIG1hY2hpbmUgeW91IHdhbnQgdG8gdXNlIFlvY3RvIFByb2plY3Qgb24gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGFuIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBhIG5hdGl2ZSBMaW51eCBzeXN0ZW0sIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0aWxsIHBlcmZvcm0gdGhlc2Ugc3RlcHMgYnkgdXNpbmcgQ1JPc3MgUGxhdGZvcm1TCisgICAgICAgICAgICAgICAgICAgICAgICAoQ1JPUFMpIGFuZCBzZXR0aW5nIHVwIGEgUG9reSBjb250YWluZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS1jcm9wcyc+U2V0dGluZyBVcCB0byBVc2UgQ1JPc3MgUGxhdGZvcm1TIChDUk9QUyk8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBhIGJ1aWxkIGhvc3QgdGhhdCBpcyB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dpbmRvd3NfU3Vic3lzdGVtX2Zvcl9MaW51eCc+V2luZG93cyBTdWJzeXN0ZW0gZm9yIExpbnV4PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIChXU0wpLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0wuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgPC9wYXJhPgogCkBAIC03NSw2ICs4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBMaW51eCBkaXN0cmlidXRpb25zIHRoYXQgc3VwcG9ydCB0aGUgWW9jdG8gUHJvamVjdCwgc2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjZGV0YWlsZWQtc3VwcG9ydGVkLWRpc3Ryb3MnPlN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHByZXBhcmluZyB5b3VyIGJ1aWxkIGhvc3QsIHNlZQorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1wcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgpAQCAtMTEwLDcgKzEyNyw3IEBACiAgICAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgICAgICBGb3IgaG9zdCBwYWNrYWdlIHJlcXVpcmVtZW50cyBvbiBhbGwgc3VwcG9ydGVkIExpbnV4CiAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9ucywgc2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCmluZGV4IDAzODljNzIuLjBkNWI2YjEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLWd1aWRlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKQEAgLTEyMiwxNCArMTIyLDE0IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKaW5kZXggMDBhMjhiMC4uMGJiMGI2OCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbApAQCAtMTg3LDcgKzE4Nyw3IEBACiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNldCBVcCB0aGUgQnVpbGQgRW52aXJvbm1lbnQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBhcmUgc2V0IHVwIHRvIHVzZSBCaXRCYWtlIGluIGEgc2hlbGwuCiAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1wcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBpbmZvcm1hdGlvbgogICAgICAgICAgICAgICAgIG9uIGhvdyB0byBnZXQgYSBidWlsZCBob3N0IHJlYWR5IHRoYXQgaXMgZWl0aGVyIGEgbmF0aXZlCiAgICAgICAgICAgICAgICAgTGludXggbWFjaGluZSBvciBhIG1hY2hpbmUgdGhhdCB1c2VzIENST1BTLgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAKICAgICAgICAgICAgICAgICB0byBTdXBwb3J0IERldmVsb3BtZW50IFVzaW5nIHRoZSBZb2N0bwogICAgICAgICAgICAgICAgIFByb2plY3Q8L2VtcGhhc2lzPjoKICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcwogICAgICAgICAgICAgICAgIE1hbnVhbCBmb3Igb3B0aW9ucyBvbiBob3cgdG8gZ2V0IGEgc3lzdGVtIHJlYWR5CiAgICAgICAgICAgICAgICAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCmluZGV4IGZlMWJmYmEuLmM3NWU3MTggMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKQEAgLTE4OSw4ICsxODksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPllvY3RvIFByb2plY3Q8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgdmVyc2lvbiBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGEgZ29vZCB3YXkgdG8gaW5kaWNhdGUgaG93Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwLXRvLWRhdGUgeW91ciBwYXJ0aWN1bGFyIGxheWVyIGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIGEgZ29vZCB3YXkgdG8gaW5kaWNhdGUgaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW91ciBwYXJ0aWN1bGFyIGxheWVyIGlzIGN1cnJlbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTMyMzcsMzAgKzMyMzcsMjIgQEAKICAgICAgICAgICAgICAgICBwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHQgdG8gYmUgZGVsYXllZCB1bnRpbCB0aGUgZmlyc3QgYm9vdC4KICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdGhlIHNjcmlwdCBtaWdodCBuZWVkIHRvIGJlIGV4ZWN1dGVkIG9uIHRoZQogICAgICAgICAgICAgICAgIGRldmljZSBpdHNlbGYuCi0gICAgICAgICAgICAgICAgVG8gZGVsYXkgc2NyaXB0IGV4ZWN1dGlvbiB1bnRpbCBib290IHRpbWUsIHVzZSB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgc3RydWN0dXJlIGluIHRoZSBwb3N0LWluc3RhbGxhdGlvbiBzY3JpcHQ6Ci0gICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBwa2dfcG9zdGluc3RfPHJlcGxhY2VhYmxlPlBBQ0tBR0VOQU1FPC9yZXBsYWNlYWJsZT4oKSB7Ci0gICAgIGlmIFsgeCIkRCIgPSAieCIgXTsgdGhlbgotICAgICAgICAgICMgQWN0aW9ucyB0byBjYXJyeSBvdXQgb24gdGhlIGRldmljZSBnbyBoZXJlCi0gICAgIGVsc2UKLSAgICAgICAgICBleGl0IDEKLSAgICAgZmkKLSAgICAgfQotICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICBUbyBkZWxheSBzY3JpcHQgZXhlY3V0aW9uIHVudGlsIGJvb3QgdGltZSwgeW91IG11c3QgZXhwbGljaXRseQorICAgICAgICAgICAgICAgIG1hcmsgcG9zdCBpbnN0YWxscyB0byBkZWZlciB0byB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgY2FsbAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZyb20gPGZpbGVuYW1lPnBrZ19wb3N0aW5zdCgpPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgICAgICAoaW5jbHVkaW5nIGV4aXQgMSkgdHJpZ2dlcnMgYW4gZXJyb3IgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlZi10YXNrcy1yb290ZnMnPjxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgdGFzay4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgVGhlIHByZXZpb3VzIGV4YW1wbGUgZGVsYXlzIGV4ZWN1dGlvbiB1bnRpbCB0aGUgaW1hZ2UgYm9vdHMKLSAgICAgICAgICAgICAgICBhZ2FpbiBiZWNhdXNlIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8ZmlsZW5hbWU+RDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgcG9pbnRzIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgaW1hZ2Ugd2hlbgotICAgICAgICAgICAgICAgIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZCBhdCBidWlsZCB0aW1lIGJ1dCBpcyB1bnNldAotICAgICAgICAgICAgICAgIHdoZW4gZXhlY3V0ZWQgb24gdGhlIGZpcnN0IGJvb3QuCi0gICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHJlY2lwZXMgdGhhdCB1c2UgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdDwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgc2NyaXB0cyBhbmQgdGhleSByZXF1aXJlIHRoZSB1c2Ugb2Ygbm9uLXN0YW5kYXJkIG5hdGl2ZQorICAgICAgICAgICAgICAgIElmIHlvdSBoYXZlIHJlY2lwZXMgdGhhdCB1c2UKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0PC9maWxlbmFtZT4gZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBhbmQgdGhleSByZXF1aXJlIHRoZSB1c2Ugb2Ygbm9uLXN0YW5kYXJkIG5hdGl2ZQogICAgICAgICAgICAgICAgIHRvb2xzIHRoYXQgaGF2ZSBkZXBlbmRlbmNpZXMgZHVyaW5nIHJvb3RmcyBjb25zdHJ1Y3Rpb24sIHlvdQogICAgICAgICAgICAgICAgIG5lZWQgdG8gdXNlIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QQUNLQUdFX1dSSVRFX0RFUFMnPjxmaWxlbmFtZT5QQUNLQUdFX1dSSVRFX0RFUFM8L2ZpbGVuYW1lPjwvdWxpbms+CkBAIC0zMjc5LDggKzMyNzEsOCBAQAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcHJlcm08L2ZpbGVuYW1lPiwgYW5kCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0cm08L2ZpbGVuYW1lPiwgcmVzcGVjdGl2ZWx5LgogICAgICAgICAgICAgICAgIFRoZXNlIHNjcmlwcyB3b3JrIGluIGV4YWN0bHkgdGhlIHNhbWUgd2F5IGFzIGRvZXMKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0PC9maWxlbmFtZT4gd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhleQotICAgICAgICAgICAgICAgIHJ1biBhdCBkaWZmZXJlbnQgdGltZXMuCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdDwvZmlsZW5hbWU+IHdpdGggdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHRoYXQgdGhleSBydW4gYXQgZGlmZmVyZW50IHRpbWVzLgogICAgICAgICAgICAgICAgIEFsc28sIGJlY2F1c2Ugb2Ygd2hlbiB0aGV5IHJ1biwgdGhleSBhcmUgbm90IGFwcGxpY2FibGUgdG8KICAgICAgICAgICAgICAgICBiZWluZyBydW4gYXQgaW1hZ2UgY3JlYXRpb24gdGltZSBsaWtlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdDwvZmlsZW5hbWU+LgpAQCAtNDI2NCw3ICs0MjU2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB5b3VyIGRldmVsb3BtZW50IGhvc3QgaXMKICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB1cCB0byB1c2UgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldCB1cCB5b3VyIGhvc3QsIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXYtcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC01MzIxLDEwNCArNTMxMywyMTUgQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdwbGF0ZGV2LWJ1aWxkaW5nLXRhcmdldHMtd2l0aC1tdWx0aXBsZS1jb25maWd1cmF0aW9ucyc+Ci0gICAgICAgICAgICA8dGl0bGU+QnVpbGRpbmcgVGFyZ2V0cyB3aXRoIE11bHRpcGxlIENvbmZpZ3VyYXRpb25zPC90aXRsZT4KKyAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1idWlsZGluZy1pbWFnZXMtZm9yLW11bHRpcGxlLXRhcmdldHMtdXNpbmctbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPgorICAgICAgICAgICAgPHRpdGxlPkJ1aWxkaW5nIEltYWdlcyBmb3IgTXVsdGlwbGUgVGFyZ2V0cyBVc2luZyBNdWx0aXBsZSBDb25maWd1cmF0aW9uczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEJpdGJha2UgYWxzbyBoYXMgZnVuY3Rpb25hbGl0eSB0aGF0IGFsbG93cyB5b3UgdG8gYnVpbGQKLSAgICAgICAgICAgICAgICBtdWx0aXBsZSB0YXJnZXRzIGF0IHRoZSBzYW1lIHRpbWUsIHdoZXJlIGVhY2ggdGFyZ2V0IHVzZXMKLSAgICAgICAgICAgICAgICBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIGEgc2luZ2xlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgIHRvIGJ1aWxkIG11bHRpcGxlIGltYWdlcyBvciBwYWNrYWdlcyBmb3IgZGlmZmVyZW50IHRhcmdldHMKKyAgICAgICAgICAgICAgICB3aGVyZSBlYWNoIGltYWdlIG9yIHBhY2thZ2UgcmVxdWlyZXMgYSBkaWZmZXJlbnQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgIChtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcykuCisgICAgICAgICAgICAgICAgVGhlIGJ1aWxkcywgaW4gdGhpcyBzY2VuYXJpbywgYXJlIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcworICAgICAgICAgICAgICAgICJtdWx0aWNvbmZpZ3MiLCBhbmQgdGhpcyBzZWN0aW9uIHVzZXMgdGhhdCB0ZXJtIHRocm91Z2hvdXQuCiAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIGFjY29tcGxpc2ggdGhpcywgeW91IHNldHVwIGVhY2ggb2YgdGhlIGNvbmZpZ3VyYXRpb25zCi0gICAgICAgICAgICAgICAgeW91IG5lZWQgdG8gdXNlIGluIHBhcmFsbGVsIGJ5IHBsYWNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4KLSAgICAgICAgICAgICAgICB5b3VyIGN1cnJlbnQgYnVpbGQgZGlyZWN0b3J5IGFsb25nc2lkZSB0aGUgdXN1YWwKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUuCisgICAgICAgICAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBob3cgdG8gc2V0IHVwIGZvciBtdWx0aXBsZQorICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gYnVpbGRzIGFuZCBob3cgdG8gYWNjb3VudCBmb3IgY3Jvc3MtYnVpbGQKKyAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGUgbXVsdGljb25maWdzLgogICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICBGb2xsb3cgdGhlc2UgZ3VpZGVsaW5lcyB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgdGhhdCBzdXBwb3J0cwotICAgICAgICAgICAgICAgIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DcmVhdGUgQ29uZmlndXJhdGlvbiBGaWxlczwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgZWFjaAotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmb3Igd2hpY2ggeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQuCi0gICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBmaWxlcyB3b3VsZCBjb250YWluIGxpbmVzIHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgTUFDSElORSA9ICJBIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGVzIHdvdWxkIGNvbnRhaW4gYW55IG90aGVyIHZhcmlhYmxlcyB0aGF0IGNhbgotICAgICAgICAgICAgICAgICAgICAgICAgYmUgc2V0IGFuZCBidWlsdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItVE1QRElSJz48ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG5vdCBjb25mbGljdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT48L3BhcmE+CisgICAgICAgICAgICA8c2VjdGlvbiBpZD0nZGV2LXNldHRpbmctdXAtYW5kLXJ1bm5pbmctYS1tdWx0aXBsZS1jb25maWd1cmF0aW9uLWJ1aWxkJz4KKyAgICAgICAgICAgICAgICA8dGl0bGU+U2V0dGluZyBVcCBhbmQgUnVubmluZyBhIE11bHRpcGxlIENvbmZpZ3VyYXRpb24gQnVpbGQ8L3RpdGxlPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZ1cnRoZXJtb3JlLCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIG11c3QgYmUgbG9jYXRlZCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgYnVpbGQgZGlyZWN0b3J5IGluIGEgZGlyZWN0b3J5IG5hbWVkCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXVsdGljb25maWc8L2ZpbGVuYW1lPiB1bmRlciB0aGUgYnVpbGQncwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmY8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gcmVzaWRlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgcmVzdHJpY3Rpb24gaXMgYmVjYXVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpcyBub3QgY29uc3RydWN0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsIHRoZSBsYXllcnMgYXJlIHBhcnNlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBhCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmUtY29uZmlndXJhdGlvbiBmaWxlIGlzIG5vdCBwb3NzaWJsZSB1bmxlc3MgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFkZCB0aGUgQml0QmFrZSBNdWx0aS1Db25maWcgVmFyaWFibGUgdG8geW91IExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvZW1waGFzaXM+OgotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91ciA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBzcGVjaWZ5IGVhY2ggc2VwYXJhdGUgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGxpbmUgdGVsbHMgQml0QmFrZSBpdCBzaG91bGQgbG9hZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbXVsdGljb25maWcvY29uZmlnQS5jb25mPC9maWxlbmFtZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tdWx0aWNvbmZpZy9jb25maWdCLmNvbmY8L2ZpbGVuYW1lPiwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29uZi9tdWx0aWNvbmZpZy9jb25maWdDLmNvbmY8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgQkJNVUxUSUNPTkZJRyA9ICJjb25maWdBIGNvbmZpZ0IgY29uZmlnQyIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIEJpdEJha2U8L2VtcGhhc2lzPjoKLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgZm9sbG93aW5nIEJpdEJha2UgY29tbWFuZCBmb3JtIHRvIGxhdW5jaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUbyBhY2NvbXBsaXNoIGEgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZCwgeW91IG11c3QKKyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIGVhY2ggdGFyZ2V0J3MgY29uZmlndXJhdGlvbiBzZXBhcmF0ZWx5IHVzaW5nCisgICAgICAgICAgICAgICAgICAgIGEgcGFyYWxsZWwgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQgeW91IG11c3QgZm9sbG93IGEgcmVxdWlyZWQgZmlsZSBoaWVyYXJjaHkuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgeW91IG11c3QgZW5hYmxlIHRoZSBtdWx0aXBsZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkcyBpbiB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIHNldCB1cCBhbmQgZXhlY3V0ZSBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGJ1aWxkczoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q3JlYXRlIFNlcGFyYXRlIENvbmZpZ3VyYXRpb24gRmlsZXM8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byBjcmVhdGUgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhY2ggYnVpbGQgdGFyZ2V0IChlYWNoIG11bHRpY29uZmlnKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pbWFsbHksIGVhY2ggY29uZmlndXJhdGlvbiBmaWxlIG11c3QgZGVmaW5lIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgYW5kIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IEJpdEJha2UgdXNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgYnVpbGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VnZ2VzdGVkIHByYWN0aWNlIGRpY3RhdGVzIHRoYXQgeW91IGRvIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXAgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgZHVyaW5nIHRoZSBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdGhhdCB5b3UgY2FuIHNoYXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciBhIHNjZW5hcmlvIHdpdGggdHdvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IG11bHRpY29uZmlncyBmb3IgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvdWxpbms+OiAicWVtdXg4NiIgYnVpbHQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHdvIGRpc3RyaWJ1dGlvbnMgc3VjaCBhcyAicG9reSIgYW5kICJwb2t5LWxzYiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB5b3UgbWlnaHQgd2FudCB0byB1c2UgdGhlIHNhbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+VE1QRElSPC9maWxlbmFtZT4uPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SGVyZSBpcyBhbiBleGFtcGxlIHNob3dpbmcgdGhlIG1pbmltYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZW1lbnRzIG5lZWRlZCBpbiBhIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhICJxZW11eDg2IiB0YXJnZXQgd2hvc2UgdGVtcG9yYXJ5IGJ1aWxkIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIDxmaWxlbmFtZT50bXBtdWx0aXg4NjwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTUFDSElORT0icWVtdXg4NiIKKyAgICAgVE1QRElSPSIke1RPUERJUn0vdG1wbXVsdGl4ODYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBsb2NhdGlvbiBmb3IgdGhlc2UgbXVsdGljb25maWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzIGlzIHNwZWNpZmljLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXkgbXVzdCByZXNpZGUgaW4gdGhlIGN1cnJlbnQgYnVpbGQgZGlyZWN0b3J5IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzdWItZGlyZWN0b3J5IG9mIDxmaWxlbmFtZT5jb25mPC9maWxlbmFtZT4gbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bXVsdGljb25maWc8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IGRlZmluZXMgdHdvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlICJ4ODYiIGFuZCAiYXJtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpY29uZmlnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvbXVsdGljb25maWdfZmlsZXMucG5nIiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iNGluIiBkZXB0aD0iM2luIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPlRoZSByZWFzb24gZm9yIHRoaXMgcmVxdWlyZWQgZmlsZSBoaWVyYXJjaHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBiZWNhdXNlIHRoZSA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgY29uc3RydWN0ZWQgdW50aWwgdGhlIGxheWVycyBhcmUgcGFyc2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgdXNpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlLWNvbmZpZ3VyYXRpb24gZmlsZSBpcyBub3QgcG9zc2libGUgdW5sZXNzIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWRkIHRoZSBCaXRCYWtlIE11bHRpLWNvbmZpZ3VyYXRpb24gVmFyaWFibGUgdG8gdGhlIExvY2FsIENvbmZpZ3VyYXRpb24gRmlsZTwvZW1waGFzaXM+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItQkJNVUxUSUNPTkZJRyc+PGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaW4geW91cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb25mL2xvY2FsLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB0byBzcGVjaWZ5IGVhY2ggbXVsdGljb25maWcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGludWluZyB3aXRoIHRoZSBleGFtcGxlIGZyb20gdGhlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlndXJlLCB0aGUgPGZpbGVuYW1lPkJCTVVMVElDT05GSUc8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIG5lZWRzIHRvIGVuYWJsZSB0d28gbXVsdGljb25maWdzOiAieDg2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAiYXJtIiBieSBzcGVjaWZ5aW5nIGVhY2ggY29uZmlndXJhdGlvbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJNVUxUSUNPTkZJRyA9ICJ4ODYgYXJtIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TGF1bmNoIEJpdEJha2U8L2VtcGhhc2lzPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIGZvbGxvd2luZyBCaXRCYWtlIGNvbW1hbmQgZm9ybSB0byBsYXVuY2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgY29uZmlndXJhdGlvbiBidWlsZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgYml0YmFrZSBbbXVsdGljb25maWc6PHJlcGxhY2VhYmxlPm11bHRpY29uZmlnbmFtZTwvcmVwbGFjZWFibGU+Ol08cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT4gW1tbbXVsdGljb25maWc6PHJlcGxhY2VhYmxlPm11bHRpY29uZmlnbmFtZTwvcmVwbGFjZWFibGU+Ol08cmVwbGFjZWFibGU+dGFyZ2V0PC9yZXBsYWNlYWJsZT5dIC4uLiBdCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB0aGF0IHN1cHBvcnRzIGJ1aWxkaW5nIGEgbWluaW1hbAotICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgZm9yIGNvbmZpZ3VyYXRpb24gQSBhbG9uZ3NpZGUgYSBzdGFuZGFyZAotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+LCB3aGljaCB0YWtlcyBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZnJvbSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+OgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIGJpdGJha2UgbXVsdGljb25maWc6Y29uZmlnQTpjb3JlLWltYWdlLW1pbmltYWwgY29yZS1pbWFnZS1zYXRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29uZmlndXJhdGlvbnMgaW4gdGhpcyBjdXJyZW50IHJlbGVhc2Ugb2YKLSAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCAoJkRJU1RST19OQU1FOyAmRElTVFJPOykgaGFzIHNvbWUga25vd24gaXNzdWVzOgotICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIE5vIGludGVyLW11bHRpLWNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGV4aXN0LgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFNoYXJlZCBTdGF0ZSAoc3N0YXRlKSBvcHRpbWl6YXRpb25zIGRvIG5vdCBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnNlcXVlbnRseSwgaWYgdGhlIGJ1aWxkIHVzZXMgdGhlIHNhbWUgb2JqZWN0IHR3aWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgZXhhbXBsZSBpbiB0aGlzIHNlY3Rpb24sIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGFwcGxpZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGJpdGJha2UgbXVsdGljb25maWc6eDg2OmNvcmUtaW1hZ2UtbWluaW1hbCBtdWx0aWNvbmZpZzphcm06Y29yZS1pbWFnZS1zYXRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBwcmV2aW91cyBCaXRCYWtlIGNvbW1hbmQgYnVpbGRzIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1taW5pbWFsPC9maWxlbmFtZT4gaW1hZ2UgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGNvbmZpZ3VyZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eDg2LmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYnVpbGRzIGEgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2UgdGhhdCBpcyBjb25maWd1cmVkIHRocm91Z2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFybS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkcyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgJkRJU1RSTzsgKCZESVNUUk9fTkFNRTspIFJlbGVhc2UgZG9lcworICAgICAgICAgICAgICAgICAgICAgICAgbm90IGluY2x1ZGUgU2hhcmVkIFN0YXRlIChzc3RhdGUpIG9wdGltaXphdGlvbnMuCisgICAgICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIGlmIGEgYnVpbGQgdXNlcyB0aGUgc2FtZSBvYmplY3QgdHdpY2UKICAgICAgICAgICAgICAgICAgICAgICAgIGluLCBmb3IgZXhhbXBsZSwgdHdvIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+IGRpcmVjdG9yaWVzLCB0aGUgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZWl0aGVyIGxvYWQgZnJvbSBhbiBleGlzdGluZyBzc3RhdGUgY2FjaGUgYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBvciBidWlsZCB0aGUgb2JqZWN0IHR3aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICBlaXRoZXIgbG9hZHMgZnJvbSBhbiBleGlzdGluZyBzc3RhdGUgY2FjaGUgZm9yIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkIGF0IHRoZSBzdGFydCBvciBidWlsZHMgdGhlIG9iamVjdCBmcmVzaC4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J2Rldi1lbmFibGluZy1tdWx0aXBsZS1jb25maWd1cmF0aW9uLWJ1aWxkLWRlcGVuZGVuY2llcyc+CisgICAgICAgICAgICAgICAgPHRpdGxlPkVuYWJsaW5nIE11bHRpcGxlIENvbmZpZ3VyYXRpb24gQnVpbGQgRGVwZW5kZW5jaWVzPC90aXRsZT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb21ldGltZXMgZGVwZW5kZW5jaWVzIGNhbiBleGlzdCBiZXR3ZWVuIHRhcmdldHMKKyAgICAgICAgICAgICAgICAgICAgKG11bHRpY29uZmlncykgaW4gYSBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGJ1aWxkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB0aGF0IGluIG9yZGVyIHRvIGJ1aWxkIGEKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2Utc2F0bzwvZmlsZW5hbWU+IGltYWdlIGZvciBhbiAieDg2IgorICAgICAgICAgICAgICAgICAgICBtdWx0aWNvbmZpZywgdGhlIHJvb3QgZmlsZXN5c3RlbSBvZiBhbiAiYXJtIgorICAgICAgICAgICAgICAgICAgICBtdWx0aWNvbmZpZyBtdXN0IGV4aXN0LgorICAgICAgICAgICAgICAgICAgICBUaGlzIGRlcGVuZGVuY3kgaXMgZXNzZW50aWFsbHkgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLWltYWdlJz48ZmlsZW5hbWU+ZG9faW1hZ2U8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIHRhc2sgaW4gdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgY29tcGxldGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLXRhc2tzLXJvb3Rmcyc+PGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgdGFzayBvZiB0aGUgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHJlY2lwZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVG8gZW5hYmxlIGRlcGVuZGVuY2llcyBpbiBhIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQsIHlvdSBtdXN0IGRlY2xhcmUgdGhlIGRlcGVuZGVuY2llcyBpbiB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3RhdGVtZW50IGZvcm06CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgPHJlcGxhY2VhYmxlPnRhc2tfb3JfcGFja2FnZTwvcmVwbGFjZWFibGU+W21jZGVwZW5kc10gPSAibXVsdGljb25maWc6PHJlcGxhY2VhYmxlPmZyb21fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+dG9fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+cmVjaXBlX25hbWU8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+dGFza19vbl93aGljaF90b19kZXBlbmQ8L3JlcGxhY2VhYmxlPiIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUbyBiZXR0ZXIgc2hvdyBob3cgdG8gdXNlIHRoaXMgc3RhdGVtZW50LCBjb25zaWRlciB0aGUKKyAgICAgICAgICAgICAgICAgICAgZXhhbXBsZSBzY2VuYXJpbyBmcm9tIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2YgdGhpcyBzZWN0aW9uLgorICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHN0YXRlbWVudCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgcmVjaXBlCisgICAgICAgICAgICAgICAgICAgIHRoYXQgYnVpbGRzIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW1hZ2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgZG9faW1hZ2VbbWNkZXBlbmRzXSA9ICJtdWx0aWNvbmZpZzp4ODY6YXJtOmNvcmUtaW1hZ2UtbWluaW1hbDpkb19yb290ZnMiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmZyb21fbXVsdGljb25maWc8L3JlcGxhY2VhYmxlPiBpcyAieDg2Ii4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxyZXBsYWNlYWJsZT50b19tdWx0aWNvbmZpZzwvcmVwbGFjZWFibGU+IGlzICJhcm0iLgorICAgICAgICAgICAgICAgICAgICBUaGUgdGFzayBvbiB3aGljaCB0aGUgPGZpbGVuYW1lPmRvX2ltYWdlPC9maWxlbmFtZT4gdGFzaworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgcmVjaXBlIGRlcGVuZHMgaXMgdGhlIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB0YXNrIGZyb20gdGhlIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWw8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICByZWNpcGUgYXNzb2NpYXRlZCB3aXRoIHRoZSAiYXJtIiBtdWx0aWNvbmZpZy4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgT25jZSB5b3Ugc2V0IHVwIHRoaXMgZGVwZW5kZW5jeSwgeW91IGNhbiBidWlsZCB0aGUKKyAgICAgICAgICAgICAgICAgICAieDg2IiBtdWx0aWNvbmZpZyB1c2luZyBhIEJpdEJha2UgY29tbWFuZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBiaXRiYWtlIG11bHRpY29uZmlnOng4Njpjb3JlLWltYWdlLXNhdG8KKyAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgVGhpcyBjb21tYW5kIGV4ZWN1dGVzIGFsbCB0aGUgdGFza3MgbmVlZGVkIHRvIGNyZWF0ZQorICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Y29yZS1pbWFnZS1zYXRvPC9maWxlbmFtZT4gaW1hZ2UgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICJ4ODYiIG11bHRpY29uZmlnLgorICAgICAgICAgICAgICAgICAgIEJlY2F1c2Ugb2YgdGhlIGRlcGVuZGVuY3ksIEJpdEJha2UgYWxzbyBleGVjdXRlcyB0aHJvdWdoCisgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPiB0YXNrIGZvciB0aGUgImFybSIKKyAgICAgICAgICAgICAgICAgICBtdWx0aWNvbmZpZyBidWlsZC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgSGF2aW5nIGEgcmVjaXBlIGRlcGVuZCBvbiB0aGUgcm9vdCBmaWxlc3lzdGVtIG9mIGFub3RoZXIKKyAgICAgICAgICAgICAgICAgICBidWlsZCBtaWdodCBub3Qgc2VlbSB0aGF0IHVzZWZ1bC4KKyAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGlzIGNoYW5nZSB0byB0aGUgc3RhdGVtZW50IGluIHRoZQorICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLXNhdG88L2ZpbGVuYW1lPiByZWNpcGU6CisgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBkb19pbWFnZVttY2RlcGVuZHNdID0gIm11bHRpY29uZmlnOng4Njphcm06Y29yZS1pbWFnZS1taW5pbWFsOmRvX2ltYWdlIgorICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIEJpdEJha2UgbXVzdCBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAiYXJtIiBidWlsZCBzaW5jZSB0aGUgIng4NiIgYnVpbGQgZGVwZW5kcyBvbiBpdC4KKyAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgQmVjYXVzZSAieDg2IiBhbmQgImFybSIgYXJlIGVuYWJsZWQgZm9yIG11bHRpcGxlCisgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBidWlsZHMgYW5kIGhhdmUgc2VwYXJhdGUgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgIGZpbGVzLCBCaXRCYWtlIHBsYWNlcyB0aGUgYXJ0aWZhY3RzIGZvciBlYWNoIGJ1aWxkIGluIHRoZQorICAgICAgICAgICAgICAgICAgIHJlc3BlY3RpdmUgdGVtcG9yYXJ5IGJ1aWxkIGRpcmVjdG9yaWVzIChpLmUuCisgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVRNUERJUic+PGZpbGVuYW1lPlRNUERJUjwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgICA8L3NlY3Rpb24+CiAKICAgICAgICAgPHNlY3Rpb24gaWQ9J2J1aWxkaW5nLWFuLWluaXRyYW1mcy1pbWFnZSc+CkBAIC03MTU5LDEzICs3MjYyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlYXNpZXItdG8tdXNlIGFuZCBtb3JlIGZsZXhpYmxlIHJlcGxhY2VtZW50cyBmb3IgYW4KICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gT0UtQ29yZSdzCiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFuZCA8ZmlsZW5hbWU+bWtlZmlkaXNrLnNoPC9maWxlbmFtZT4gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbgotICAgICAgICAgICAgICAgICAgICAgICAgV2ljIGFuZCB0aG9zZSBleGFtcGxlcyBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aXRoIFdpYyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxpdHkgb2YgdGhvc2Ugc2NyaXB0cyBpcyBpbXBsZW1lbnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgYnkgYSBnZW5lcmFsLXB1cnBvc2UgcGFydGl0aW9uaW5nIGxhbmd1YWdlLCB3aGljaCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWQgb24gUmVkaGF0IGtpY2tzdGFydCBzeW50YXguPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gV2ljIGFuZCB0aG9zZSBleGFtcGxlcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB3aXRoIFdpYyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aG9zZSBzY3JpcHRzIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRlZCBieSBhIGdlbmVyYWwtcHVycG9zZSBwYXJ0aXRpb25pbmcgbGFuZ3VhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBiYXNlZCBvbiBSZWRoYXQga2lja3N0YXJ0IHN5bnRheC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CkBAIC0xMTQwMCw4ICsxMTUwMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgc2VwYXJhdGVseSBzdGFydGVkIFFFTVUgb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdmlydHVhbCBtYWNoaW5lIG1hbmFnZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJTeXN0ZW1kLWJvb3RUYXJnZXQiOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlICJTeXN0ZW1kLWJvb3RUYXJnZXQiIGlmIHlvdXIgaGFyZHdhcmUgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlN5c3RlbWRib290VGFyZ2V0Ijo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENob29zZSAiU3lzdGVtZGJvb3RUYXJnZXQiIGlmIHlvdXIgaGFyZHdhcmUgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbiBFRkktYmFzZWQgbWFjaGluZSB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQtYm9vdDwvZmlsZW5hbWU+IGFzIGJvb3Rsb2FkZXIgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtdGVzdG1hc3RlcjwvZmlsZW5hbWU+CkBAIC0xMTQwOSwxMCArMTE1MTEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHNvLCB5b3VyIGhhcmR3YXJlIHVuZGVyIHRlc3QgbXVzdCBiZSBpbiBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhDUC1lbmFibGVkIG5ldHdvcmsgdGhhdCBnaXZlcyBpdCB0aGUgc2FtZSBJUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MgZm9yIGVhY2ggcmVib290LjwvcGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgY2hvb3NlICJTeXN0ZW1kLWJvb3RUYXJnZXQiLCB0aGVyZSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5JZiB5b3UgY2hvb3NlICJTeXN0ZW1kYm9vdFRhcmdldCIsIHRoZXJlIGFyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIGFuZCBjb25zaWRlcmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3NlbGVjdGluZy1zeXN0ZW1kLWJvb3R0YXJnZXQnPlNlbGVjdGluZyBTeXN0ZW1kLWJvb3RUYXJnZXQ8L2xpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdzZWxlY3Rpbmctc3lzdGVtZGJvb3R0YXJnZXQnPlNlbGVjdGluZyBTeXN0ZW1kYm9vdFRhcmdldDwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiwgd2hpY2ggZm9sbG93cywgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJCZWFnbGVCb25lVGFyZ2V0Ijo8L2VtcGhhc2lzPgpAQCAtMTE0NTgsMTIgKzExNTYwLDEyIEBACiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgICAgICA8c2VjdGlvbiBpZD0nc2VsZWN0aW5nLXN5c3RlbWQtYm9vdHRhcmdldCc+Ci0gICAgICAgICAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBTeXN0ZW1kLWJvb3RUYXJnZXQ8L3RpdGxlPgorICAgICAgICAgICAgPHNlY3Rpb24gaWQ9J3NlbGVjdGluZy1zeXN0ZW1kYm9vdHRhcmdldCc+CisgICAgICAgICAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBTeXN0ZW1kYm9vdFRhcmdldDwvdGl0bGU+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRpZCBub3Qgc2V0IDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgICJTeXN0ZW1kLWJvb3RUYXJnZXQiLCB0aGVuIHlvdSBkbyBub3QgbmVlZCBhbnkgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICAgICAgIlN5c3RlbWRib290VGFyZ2V0IiwgdGhlbiB5b3UgZG8gbm90IG5lZWQgYW55IGluZm9ybWF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGluIHRoaXMgc2VjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBza2lwIGRvd24gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdxZW11LWltYWdlLXJ1bm5pbmctdGVzdHMnPlJ1bm5pbmcgVGVzdHM8L2xpbms+IgpAQCAtMTE0NzIsNyArMTE1NzQsNyBAQAogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBkaWQgc2V0IDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvCi0gICAgICAgICAgICAgICAgICAgICJTeXN0ZW1kLWJvb3RUYXJnZXQiLCB5b3UgYWxzbyBuZWVkIHRvIHBlcmZvcm0gYSBvbmUtdGltZQorICAgICAgICAgICAgICAgICAgICAiU3lzdGVtZGJvb3RUYXJnZXQiLCB5b3UgYWxzbyBuZWVkIHRvIHBlcmZvcm0gYSBvbmUtdGltZQogICAgICAgICAgICAgICAgICAgICBzZXR1cCBvZiB5b3VyIG1hc3RlciBpbWFnZSBieSBkb2luZyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNldCA8ZmlsZW5hbWU+RUZJX1BST1ZJREVSPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KQEAgLTExNTQzLDcgKzExNjQ1LDcgQEAKIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGUgZmluYWwgdGhpbmcgeW91IG5lZWQgdG8gZG8gd2hlbiBzZXR0aW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvICJTeXN0ZW1kLWJvb3RUYXJnZXQiIGlzCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvICJTeXN0ZW1kYm9vdFRhcmdldCIgaXMKICAgICAgICAgICAgICAgICAgICAgdG8gc2V0IHVwIHRoZSB0ZXN0IGltYWdlOgogICAgICAgICAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlNldCB1cCB5b3VyIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZTo8L2VtcGhhc2lzPgpAQCAtMTE1NTIsNyArMTE2NTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgSU1BR0VfRlNUWVBFUyArPSAidGFyLmd6IgogICAgICBJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiCi0gICAgIFRFU1RfVEFSR0VUID0gIlN5c3RlbWQtYm9vdFRhcmdldCIKKyAgICAgVEVTVF9UQVJHRVQgPSAiU3lzdGVtZGJvb3RUYXJnZXQiCiAgICAgIFRFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguMi4zIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTExNjg3LDE2ICsxMTc4OSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgVG8gcnVuIHRoZSB0ZXN0cyBhdXRvbWF0aWNhbGx5IGFmdGVyIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBzdWNjZXNzZnVsbHkgY3JlYXRlcyBhbiBpbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IHNldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1URVNUX0lNQUdFJz48ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1URVNUSU1BR0VfQVVUTyc+PGZpbGVuYW1lPlRFU1RJTUFHRV9BVVRPPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdG8gIjEiIGluIHlvdXIgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIFRFU1RfSU1BR0UgPSAiMSIKKyAgICAgVEVTVElNQUdFX0FVVE8gPSAiMSIKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIE5leHQsIGJ1aWxkIHlvdXIgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBJZiB0aGUgaW1hZ2Ugc3VjY2Vzc2Z1bGx5IGJ1aWxkcywgdGhlIHRlc3RzIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ1bjoKKyAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSBpbWFnZSBzdWNjZXNzZnVsbHkgYnVpbGRzLCB0aGUgdGVzdHMgcnVuOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBiaXRiYWtlIGNvcmUtaW1hZ2Utc2F0bwogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PjwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTE5NjksNyArMTIwNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBjb250cm9sbGVyIG9iamVjdCB1c2VkIHRvIGRlcGxveQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXJ0IGFuIGltYWdlIG9uIGEgcGFydGljdWxhciB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIFFlbXVUYXJnZXQsIFNpbXBsZVJlbW90ZSwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW1kLWJvb3RUYXJnZXQpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtZGJvb3RUYXJnZXQpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdXN1YWxseSB1c2UgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz48ZmlsZW5hbWU+aXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgpAQCAtMTUwNzIsNiArMTUxNzMsMzEgQEAKICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgIDwvc2VjdGlvbj4KKworICAgICAgICA8c2VjdGlvbiBpZD0nY29weWluZy1saWNlbnNlcy10aGF0LWRvLW5vdC1leGlzdCc+CisgICAgICAgICAgICA8dGl0bGU+Q29weWluZyBMaWNlbnNlcyB0aGF0IERvIE5vdCBFeGlzdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFNvbWUgcGFja2FnZXMsIHN1Y2ggYXMgdGhlIGxpbnV4LWZpcm13YXJlIHBhY2thZ2UsIGhhdmUgbWFueQorICAgICAgICAgICAgICAgIGxpY2Vuc2VzIHRoYXQgYXJlIG5vdCBpbiBhbnkgd2F5IGNvbW1vbi4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIGF2b2lkIGFkZGluZyBhIGxvdCBvZiB0aGVzZSB0eXBlcyBvZiBjb21tb24gbGljZW5zZQorICAgICAgICAgICAgICAgIGZpbGVzLCB3aGljaCBhcmUgb25seSBhcHBsaWNhYmxlIHRvIGEgc3BlY2lmaWMgcGFja2FnZSwgYnkgdXNpbmcKKyAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTk9fR0VORVJJQ19MSUNFTlNFJz48ZmlsZW5hbWU+Tk9fR0VORVJJQ19MSUNFTlNFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIFVzaW5nIHRoaXMgdmFyaWFibGUgYWxzbyBhdm9pZHMgUUEgZXJyb3JzIHdoZW4geW91IHVzZSBhCisgICAgICAgICAgICAgICAgbm9uLWNvbW1vbiwgbm9uLUNMT1NFRCBsaWNlbnNlIGluIGEgcmVjaXBlLgorICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgdGhhdCB1c2VzIHRoZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5MSUNFTlNFLkFiaWxpcy50eHQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIGZpbGUgYXMgdGhlIGxpY2Vuc2UgZnJvbSB0aGUgZmV0Y2hlZCBzb3VyY2U6CisgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtQWJpbGlzXSA9ICJMSUNFTlNFLkFiaWxpcy50eHQiCisgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCiAgICAgPHNlY3Rpb24gaWQ9J3VzaW5nLXRoZS1lcnJvci1yZXBvcnRpbmctdG9vbCc+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWludHJvLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCmluZGV4IGY0NTdjODAuLjNhMzQwOTQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtaW50cm8ueG1sCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBkZXNjcmliZXMgd2hhdCB5b3UgY2FuIGdldCBmcm9tIHRoaXMgbWFudWFsOgorICAgICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICBQcm9jZWR1cmVzIHRoYXQgaGVscCB5b3UgZ2V0IGdvaW5nIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgbWFudWFsIHdpbGwgbm90IGdpdmUgeW91IHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICBUaGlzIG1hbnVhbCBkb2VzIG5vdCBwcm92aWRlIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgUmVkdW5kYW50IFN0ZXAtYnktc3RlcCBJbnN0cnVjdGlvbnM6CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IGQ4NzI2YjQuLjNmOTcxYmEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC0xMCw4ICsxMCwxMCBAQAogICAgIFRoaXMgY2hhcHRlciBwcm92aWRlcyBwcm9jZWR1cmVzIHJlbGF0ZWQgdG8gZ2V0dGluZyBzZXQgdXAgdG8gdXNlIHRoZQogICAgIFlvY3RvIFByb2plY3QuCiAgICAgWW91IGNhbiBsZWFybiBhYm91dCBjcmVhdGluZyBhIHRlYW0gZW52aXJvbm1lbnQgdGhhdCBkZXZlbG9wcyB1c2luZyB0aGUKLSAgICBZb2N0byBQcm9qZWN0LCBob3cgdG8gc2V0IHVwIGEgYnVpbGQgaG9zdCwgaG93IHRvIGxvY2F0ZSBZb2N0byBQcm9qZWN0Ci0gICAgc291cmNlIHJlcG9zaXRvcmllcywgYW5kIGhvdyB0byBjcmVhdGUgbG9jYWwgR2l0IHJlcG9zaXRvcmllcy4KKyAgICBZb2N0byBQcm9qZWN0LCBob3cgdG8gc2V0IHVwIGEKKyAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+LAorICAgIGhvdyB0byBsb2NhdGUgWW9jdG8gUHJvamVjdCBzb3VyY2UgcmVwb3NpdG9yaWVzLCBhbmQgaG93IHRvIGNyZWF0ZSBsb2NhbAorICAgIEdpdCByZXBvc2l0b3JpZXMuCiA8L3BhcmE+CiAKIDxzZWN0aW9uIGlkPSJ1c2luZ3Bva3ktY2hhbmdlcy1jb2xsYWJvcmF0ZSI+CkBAIC0xOSw2OSArMjEsNzEgQEAKIAogICAgIDxwYXJhPgogICAgICAgICBJdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgY2xlYXIgaG93IHlvdSBjYW4gdXNlIHRoZSBZb2N0bwotICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgb3Igc2NhbGUgaXQgZm9yIGEgbGFyZ2UKLSAgICAgICAgdGVhbSBvZiBkZXZlbG9wZXJzLgorICAgICAgICBQcm9qZWN0IGluIGEgdGVhbSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgb3IgaG93IHRvIHNjYWxlIGl0IGZvciBhCisgICAgICAgIGxhcmdlIHRlYW0gb2YgZGV2ZWxvcGVycy4KICAgICAgICAgT25lIG9mIHRoZSBzdHJlbmd0aHMgb2YgdGhlIFlvY3RvIFByb2plY3QgaXMgdGhhdCBpdCBpcyBleHRyZW1lbHkKICAgICAgICAgZmxleGlibGUuCiAgICAgICAgIFRodXMsIHlvdSBjYW4gYWRhcHQgaXQgdG8gbWFueSBkaWZmZXJlbnQgdXNlIGNhc2VzIGFuZCBzY2VuYXJpb3MuCi0gICAgICAgIEhvd2V2ZXIsIHRoZXNlIGNoYXJhY3RlcmlzdGljcyBjYW4gY2F1c2UgYSBzdHJ1Z2dsZSBpZiB5b3UgYXJlIHRyeWluZworICAgICAgICBIb3dldmVyLCB0aGlzIGZsZXhpYmlsaXR5IGNvdWxkIGNhdXNlIGRpZmZpY3VsdGllcyBpZiB5b3UgYXJlIHRyeWluZwogICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGFjcm9zcyBhIGxhcmdlIHRlYW0uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CiAgICAgICAgIFRvIGhlbHAgeW91IHVuZGVyc3RhbmQgaG93IHRvIHNldCB1cCB0aGlzIHR5cGUgb2YgZW52aXJvbm1lbnQsCi0gICAgICAgIHRoaXMgc2VjdGlvbiBwcmVzZW50cyBhIHByb2NlZHVyZSB0aGF0IGdpdmVzIHlvdSB0aGUgaW5mb3JtYXRpb24KLSAgICAgICAgdG8gbGVhcm4gaG93IHRvIGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KKyAgICAgICAgdGhpcyBzZWN0aW9uIHByZXNlbnRzIGEgcHJvY2VkdXJlIHRoYXQgZ2l2ZXMgeW91IGluZm9ybWF0aW9uCisgICAgICAgIHRoYXQgY2FuIGhlbHAgeW91IGdldCB0aGUgcmVzdWx0cyB5b3Ugd2FudC4KICAgICAgICAgVGhlIHByb2NlZHVyZSBpcyBoaWdoLWxldmVsIGFuZCBwcmVzZW50cyBzb21lIG9mIHRoZSBwcm9qZWN0J3MgbW9zdAogICAgICAgICBzdWNjZXNzZnVsIGV4cGVyaWVuY2VzLCBwcmFjdGljZXMsIHNvbHV0aW9ucywgYW5kIGF2YWlsYWJsZQotICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCB3b3JrIHdlbGwuCisgICAgICAgIHRlY2hub2xvZ2llcyB0aGF0IGhhdmUgcHJvdmVkIHRvIHdvcmsgd2VsbCBpbiB0aGUgcGFzdC4KICAgICAgICAgS2VlcCBpbiBtaW5kLCB0aGUgcHJvY2VkdXJlIGhlcmUgaXMgYSBzdGFydGluZyBwb2ludC4KLSAgICAgICAgWW91IGNhbiBidWlsZCBvZmYgaXQgYW5kIGN1c3RvbWl6ZSBpdCB0byBmaXQgYW55CisgICAgICAgIFlvdSBjYW4gYnVpbGQgb2ZmIHRoZXNlIHN0ZXBzIGFuZCBjdXN0b21pemUgdGhlIHByb2NlZHVyZSB0byBmaXQgYW55CiAgICAgICAgIHBhcnRpY3VsYXIgd29ya2luZyBlbnZpcm9ubWVudCBhbmQgc2V0IG9mIHByYWN0aWNlcy4KICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hvIGlzIEdvaW5nIHRvIGJlIERldmVsb3Bpbmc6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZwogICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIHdoYXQgdGhlaXIgcm9sZXMgd291bGQgYmUuCi0gICAgICAgICAgICAgICAgTWFraW5nIHRoaXMgZGV0ZXJtaW5hdGlvbiBpcyBlc3NlbnRpYWwgdG8gY29tcGxldGluZyB0aGUKKyAgICAgICAgICAgICAgICBNYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGlzIGVzc2VudGlhbCB0byBjb21wbGV0aW5nCiAgICAgICAgICAgICAgICAgc3RlcHMgdHdvIGFuZCB0aHJlZSwgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgogICAgICAgICAgICAgICAgIGFuZCBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCdzIGhhcmR3YXJlIHRvcG9sb2d5LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPlRoZSBmb2xsb3dpbmcgcm9sZXMgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3BtZW50OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSB0eXBlcyBvZiBkZXZlbG9wZXJzIGRvIGFwcGxpY2F0aW9uIGxldmVsIHdvcmsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRvcCBvZiBhbiBleGlzdGluZyBzb2Z0d2FyZSBzdGFjay4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q29yZSBTeXN0ZW0gRGV2ZWxvcG1lbnQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUgY29udGVudHMgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZi4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgbWFuYWdlcyBBdXRvYnVpbGRlcnMgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGRldmVsb3BlciBjcmVhdGVzIGFuZCBtYW5hZ2VzIGF1dG9tYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMgbmVlZGVkIHRvIGVuc3VyZSBhbGwgYXBwbGljYXRpb24gYW5kIGNvcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSBkZXZlbG9wbWVudCBtZWV0cyBkZXNpcmVkIHF1YWxpdHkgc3RhbmRhcmRzLgotICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkFwcGxpY2F0aW9uIERldmVsb3Blcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgZG9lcyBhcHBsaWNhdGlvbiBsZXZlbCB3b3JrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdG9wIG9mIGFuIGV4aXN0aW5nIHNvZnR3YXJlIHN0YWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Db3JlIFN5c3RlbSBEZXZlbG9wZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIHdvcmtzIG9uIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpbmcgc3lzdGVtIGltYWdlIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIG1hbmFnZXMgQXV0b2J1aWxkZXJzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGVzdCBFbmdpbmVlcjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHlwZSBvZiBkZXZlbG9wZXIgY3JlYXRlcyBhbmQgbWFuYWdlcyBhdXRvbWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cyB0aGF0IGFyZSB1c2VkIHRvIGVuc3VyZSBhbGwgYXBwbGljYXRpb24gYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZSBzeXN0ZW0gZGV2ZWxvcG1lbnQgbWVldHMgZGVzaXJlZCBxdWFsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhbmRhcmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2F0aGVyIHRoZSBIYXJkd2FyZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoZSBzaXplIGFuZCBtYWtlLXVwIG9mIHRoZSB0ZWFtLCBnZXQgdGhlIGhhcmR3YXJlCiAgICAgICAgICAgICAgICAgdG9nZXRoZXIuCi0gICAgICAgICAgICAgICAgQW55IGRldmVsb3BtZW50LCBidWlsZCwgb3IgdGVzdCBlbmdpbmVlciBzaG91bGQgYmUgdXNpbmcKLSAgICAgICAgICAgICAgICBhIHN5c3RlbSB0aGF0IGlzIHJ1bm5pbmcgYSBzdXBwb3J0ZWQgTGludXggZGlzdHJpYnV0aW9uLgotICAgICAgICAgICAgICAgIFN5c3RlbXMsIGluIGdlbmVyYWwsIHNob3VsZCBiZSBoaWdoIHBlcmZvcm1hbmNlIChlLmcuIGR1YWwsCi0gICAgICAgICAgICAgICAgc2l4LWNvcmUgWGVvbnMgd2l0aCAyNCBHYnl0ZXMgb2YgUkFNIGFuZCBwbGVudHkgb2YgZGlzayBzcGFjZSkuCisgICAgICAgICAgICAgICAgSWRlYWxseSwgYW55IGRldmVsb3BtZW50LCBidWlsZCwgb3IgdGVzdCBlbmdpbmVlciB1c2VzCisgICAgICAgICAgICAgICAgYSBzeXN0ZW0gdGhhdCBydW5zIGEgc3VwcG9ydGVkIExpbnV4IGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICBUaGVzZSBzeXN0ZW1zLCBpbiBnZW5lcmFsLCBzaG91bGQgYmUgaGlnaCBwZXJmb3JtYW5jZQorICAgICAgICAgICAgICAgIChlLmcuIGR1YWwsIHNpeC1jb3JlIFhlb25zIHdpdGggMjQgR2J5dGVzIG9mIFJBTSBhbmQgcGxlbnR5CisgICAgICAgICAgICAgICAgb2YgZGlzayBzcGFjZSkuCiAgICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAogICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCkBAIC0xMDcsMTEgKzExMSwxMiBAQAogICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Vc2UgR2l0IGFzIFlvdXIgU291cmNlIENvbnRyb2wgTWFuYWdlciAoU0NNKTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEtlZXBpbmcgeW91cgogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I21ldGFkYXRhJz5NZXRhZGF0YTwvdWxpbms+Ci0gICAgICAgICAgICAgICAgYW5kIGFueSBzb2Z0d2FyZSB5b3UgYXJlIGRldmVsb3BpbmcgdW5kZXIgdGhlCi0gICAgICAgICAgICAgICAgY29udHJvbCBvZiBhbiBTQ00gc3lzdGVtIHRoYXQgaXMgY29tcGF0aWJsZQotICAgICAgICAgICAgICAgIHdpdGggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gaXMgYWR2aXNhYmxlLgotICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZQotICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgdGVhbSBzdHJvbmdseSByZWNvbW1lbmRzIHVzaW5nCisgICAgICAgICAgICAgICAgKGkuZS4gcmVjaXBlcywgY29uZmlndXJhdGlvbiBmaWxlcywgY2xhc3NlcywgYW5kIHNvIGZvcnRoKQorICAgICAgICAgICAgICAgIGFuZCBhbnkgc29mdHdhcmUgeW91IGFyZSBkZXZlbG9waW5nIHVuZGVyIHRoZSBjb250cm9sIG9mIGFuIFNDTQorICAgICAgICAgICAgICAgIHN5c3RlbSB0aGF0IGlzIGNvbXBhdGlibGUgICB3aXRoIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtCisgICAgICAgICAgICAgICAgaXMgYWR2aXNhYmxlLgorICAgICAgICAgICAgICAgIE9mIHRoZSBTQ01zIEJpdEJha2Ugc3VwcG9ydHMsIHRoZSBZb2N0byBQcm9qZWN0IHRlYW0gc3Ryb25nbHkKKyAgICAgICAgICAgICAgICByZWNvbW1lbmRzIHVzaW5nCiAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfT01fVVJMOyNnaXQnPkdpdDwvdWxpbms+LgogICAgICAgICAgICAgICAgIEdpdCBpcyBhIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0IGlzIGVhc3kgdG8gYmFja3VwLAogICAgICAgICAgICAgICAgIGFsbG93cyB5b3UgdG8gd29yayByZW1vdGVseSwgYW5kIHRoZW4gY29ubmVjdHMgYmFjayB0byB0aGUKQEAgLTEyOSwyMCArMTM0LDE5IEBACiAgICAgICAgICAgICAgICAgYmVpbmcgdXNlZCB0byBnZW5lcmF0ZSB0aGUgd2ViIGludGVyZmFjZSB0aGF0IGxldHMgeW91IHZpZXcgdGhlCiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzLgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBzb2Z0d2FyZSBpZGVudGlmaWVzIHVzZXJzCi0gICAgICAgICAgICAgICAgdXNpbmcgU1NIIGtleXMgYW5kIGFsbG93cyBicmFuY2gtYmFzZWQKLSAgICAgICAgICAgICAgICBhY2Nlc3MgY29udHJvbHMgdG8gcmVwb3NpdG9yaWVzIHRoYXQgeW91IGNhbiBjb250cm9sIGFzIGxpdHRsZQotICAgICAgICAgICAgICAgIG9yIGFzIG11Y2ggYXMgbmVjZXNzYXJ5LgotCisgICAgICAgICAgICAgICAgdXNpbmcgU1NIIGtleXMgYW5kIGFsbG93cyBicmFuY2gtYmFzZWQgYWNjZXNzIGNvbnRyb2xzIHRvCisgICAgICAgICAgICAgICAgcmVwb3NpdG9yaWVzIHRoYXQgeW91IGNhbiBjb250cm9sIGFzIGxpdHRsZSBvciBhcyBtdWNoIGFzCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgIFRoZSBzZXR1cCBvZiB0aGVzZSBzZXJ2aWNlcyBpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRoaXMKICAgICAgICAgICAgICAgICAgICBtYW51YWwuCi0gICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGVzZSBleGlzdCB0aGF0IGRlc2NyaWJlIGhvdyB0bwotICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gc2V0dXA6CisgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2l0ZXMgc3VjaCBhcyB0aGUgZm9sbG93aW5nIGV4aXN0IHRoYXQgZGVzY3JpYmUKKyAgICAgICAgICAgICAgICAgICBob3cgdG8gcGVyZm9ybSBzZXR1cDoKICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZ2l0LXNjbS5jb20vYm9vay9jaDQtOC5odG1sJz5HaXQgZG9jdW1lbnRhdGlvbjwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVzIGhvdyB0byBpbnN0YWxsIDxmaWxlbmFtZT5naXRvbGl0ZTwvZmlsZW5hbWU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgc2VydmVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpYmVzIGhvdyB0byBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0b2xpdGU8L2ZpbGVuYW1lPiBvbiB0aGUgc2VydmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly9naXRvbGl0ZS5jb20nPkdpdG9saXRlPC91bGluaz46CkBAIC0xNTAsOCArMTU0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0ludGVyZmFjZXMsX2Zyb250ZW5kcyxfYW5kX3Rvb2xzJz5JbnRlcmZhY2VzLCBmcm9udGVuZHMsIGFuZCB0b29sczwvdWxpbms+OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZCBmcm9udGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgR2l0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvY3VtZW50YXRpb24gb24gaG93IHRvIGNyZWF0ZSBpbnRlcmZhY2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb250ZW5kcyBmb3IgR2l0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L25vdGU+CkBAIC0xNjEsMjMgKzE2NSwyMiBAQAogICAgICAgICAgICAgICAgIEFzIG1lbnRpb25lZCBlYXJsaWVyLCBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIGFyZSBjcmVhdGluZwogICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBvbiB0b3Agb2YgZXhpc3Rpbmcgc29mdHdhcmUgc3RhY2tzLgogICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBiZXN0IHByYWN0aWNlcyBmb3Igc2V0dGluZyB1cCBtYWNoaW5lcwotICAgICAgICAgICAgICAgIHRoYXQgZG8gYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQ6CisgICAgICAgICAgICAgICAgdXNlZCBmb3IgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQ6CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbiB0aGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgc29mdHdhcmUgc3RhY2sgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGEgcHJlLWJ1aWx0IHRvb2xjaGFpbiB0aGF0IGNvbnRhaW5zIHRoZSBzb2Z0d2FyZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgaXRzZWxmLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlbiwgZGV2ZWxvcCB0aGUgYXBwbGljYXRpb24gY29kZSBvbiB0b3Agb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWV0aG9kIHdvcmtzIHdlbGwgZm9yIHNtYWxsIG51bWJlcnMgb2YgcmVsYXRpdmVseQogICAgICAgICAgICAgICAgICAgICAgICAgaXNvbGF0ZWQgYXBwbGljYXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gcG9zc2libGUsIHVzZSB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICAgcGx1Zy1pbiBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHBvc3NpYmxlLCB1c2UgdGhlIFlvY3RvIFByb2plY3QgcGx1Zy1pbiBmb3IgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8dHJhZGVtYXJrIGNsYXNzPSd0cmFkZSc+RWNsaXBzZTwvdHJhZGVtYXJrPiBJREUKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBTREsgZGV2ZWxvcG1lbnQgcHJhY3RpY2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyc+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsnPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTE4NiwyNyArMTg5LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0b29sY2hhaW4gZG93bmxvYWRzIG9yIGFzIHVwZGF0ZXMgdGhyb3VnaCBhIHBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSBtZWNoYW5pc20gdXNpbmcgPGZpbGVuYW1lPm9wa2c8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB1cGRhdGVzIHRvIGFuIGV4aXN0aW5nIHRvb2xjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBleGFjdCBtZWNoYW5pY3Mgb2YgaG93IGFuZCB3aGVuIHRvIGRvIHRoaXMgYXJlIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uIGZvciBsb2NhbCBwb2xpY3kuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZXhhY3QgbWVjaGFuaWNzIG9mIGhvdyBhbmQgd2hlbiB0byBkbyB0aGlzIGRlcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgb24gbG9jYWwgcG9saWN5LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFVzZSBtdWx0aXBsZSB0b29sY2hhaW5zIGluc3RhbGxlZCBsb2NhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGRpZmZlcmVudCBsb2NhdGlvbnMgdG8gYWxsb3cgZGV2ZWxvcG1lbnQgYWNyb3NzCisgICAgICAgICAgICAgICAgICAgICAgICBVc2UgbXVsdGlwbGUgdG9vbGNoYWlucyBpbnN0YWxsZWQgbG9jYWxseSBpbnRvCisgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgbG9jYXRpb25zIHRvIGFsbG93IGRldmVsb3BtZW50IGFjcm9zcwogICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IHVwIHRoZSBDb3JlIERldmVsb3BtZW50IE1hY2hpbmVzOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIHRoZXNlIHR5cGVzIG9mIGRldmVsb3BlcnMgd29yayBvbiB0aGUKLSAgICAgICAgICAgICAgICBjb250ZW50cyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpdHNlbGYuCisgICAgICAgICAgICAgICAgQXMgbWVudGlvbmVkIGVhcmxpZXIsIGNvcmUgZGV2ZWxvcGVycyB3b3JrIG9uIHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgICAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGl0c2VsZi4KICAgICAgICAgICAgICAgICBGb2xsb3dpbmcgYXJlIHNvbWUgYmVzdCBwcmFjdGljZXMgZm9yIHNldHRpbmcgdXAgbWFjaGluZXMKICAgICAgICAgICAgICAgICB1c2VkIGZvciBkZXZlbG9waW5nIGltYWdlczoKICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBIYXZlIHRoZSBZb2N0byBQcm9qZWN0IGJ1aWxkIHN5c3RlbSBpdHNlbGYgYXZhaWxhYmxlIG9uCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGUgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucyBzbyBkZXZlbG9wZXJzIGNhbiBydW4gdGhlaXIgb3duCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZHMgYW5kIGRpcmVjdGx5IHJlYnVpbGQgdGhlIHNvZnR3YXJlIHN0YWNrLgorICAgICAgICAgICAgICAgICAgICAgICAgSGF2ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2J1aWxkLXN5c3RlbS10ZXJtJz5PcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBvbiB0aGUgZGV2ZWxvcGVyIHdvcmtzdGF0aW9ucyBzbyBkZXZlbG9wZXJzCisgICAgICAgICAgICAgICAgICAgICAgICBjYW4gcnVuIHRoZWlyIG93biBidWlsZHMgYW5kIGRpcmVjdGx5IHJlYnVpbGQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZSBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBLZWVwIHRoZSBjb3JlIHN5c3RlbSB1bmNoYW5nZWQgYXMgbXVjaCBhcwpAQCAtMjI4LDggKzIzMyw5IEBACiAgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzIGFyZSBvZnRlbiB0aGUgY29yZSBvZiB0aGUgZGV2ZWxvcG1lbnQKICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KICAgICAgICAgICAgICAgICBJdCBpcyBoZXJlIHRoYXQgY2hhbmdlcyBmcm9tIGluZGl2aWR1YWwgZGV2ZWxvcGVycyBhcmUgYnJvdWdodAotICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkIGFuZCBzdWJzZXF1ZW50IGRlY2lzaW9ucyBhYm91dAotICAgICAgICAgICAgICAgIHJlbGVhc2VzIGNhbiBiZSBtYWRlLgorICAgICAgICAgICAgICAgIHRvZ2V0aGVyIGFuZCBjZW50cmFsbHkgdGVzdGVkLgorICAgICAgICAgICAgICAgIEJhc2VkIG9uIHRoaXMgYXV0b21hdGVkIGJ1aWxkIGFuZCB0ZXN0IGVudmlyb25tZW50LCBzdWJzZXF1ZW50CisgICAgICAgICAgICAgICAgZGVjaXNpb25zIGFib3V0IHJlbGVhc2VzIGNhbiBiZSBtYWRlLgogICAgICAgICAgICAgICAgIEF1dG9idWlsZGVycyBhbHNvIGFsbG93IGZvciAiY29udGludW91cyBpbnRlZ3JhdGlvbiIgc3R5bGUKICAgICAgICAgICAgICAgICB0ZXN0aW5nIG9mIHNvZnR3YXJlIGNvbXBvbmVudHMgYW5kIHJlZ3Jlc3Npb24gaWRlbnRpZmljYXRpb24KICAgICAgICAgICAgICAgICBhbmQgdHJhY2tpbmcuPC9wYXJhPgpAQCAtMjM5LDIyICsyNDUsMjMgQEAKICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCB0ZWFtIGhhcyBmb3VuZCB0aGlzIGltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgd29ya3Mgd2VsbCBpbiB0aGlzIHJvbGUuCiAgICAgICAgICAgICAgICAgQSBwdWJsaWMgZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB3ZSB1c2UgdG8gdGVzdCB0aGUgb3ZlcmFsbCBoZWFsdGggb2YgdGhlCi0gICAgICAgICAgICAgICAgcHJvamVjdC48L3BhcmE+CisgICAgICAgICAgICAgICAgQXV0b2J1aWxkZXJzLCB3aGljaCB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHVzZXMgdG8gdGVzdCB0aGUKKyAgICAgICAgICAgICAgICBvdmVyYWxsIGhlYWx0aCBvZiB0aGUgcHJvamVjdC48L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgZmVhdHVyZXMgb2YgdGhpcyBzeXN0ZW0gYXJlOgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICBIaWdobGlnaHRzIHdoZW4gY29tbWl0cyBicmVhayB0aGUgYnVpbGQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVsYXRlcyBhbiBzc3RhdGUgY2FjaGUgZnJvbSB3aGljaAotICAgICAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVycyBjYW4gcHVsbCByYXRoZXIgdGhhbiByZXF1aXJpbmcgbG9jYWwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIEhpZ2hsaWdodHMgd2hlbiBjb21taXRzIGJyZWFrIHRoZSBidWlsZC4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgY29tbWl0IGhvb2sgdHJpZ2dlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0cmlnZ2VyIGJ1aWxkcyB3aGVuIGNvbW1pdHMgYXJlIG1hZGUuCisgICAgICAgICAgICAgICAgICAgICAgICBQb3B1bGF0ZXMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjc2hhcmVkLXN0YXRlLWNhY2hlJz5zc3RhdGUgY2FjaGU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCBkZXZlbG9wZXJzIGNhbiBwdWxsIHJhdGhlciB0aGFuIHJlcXVpcmluZworICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWwgYnVpbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93cyBjb21taXQgaG9vayB0cmlnZ2Vycywgd2hpY2ggdHJpZ2dlciBidWlsZHMgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWl0cyBhcmUgbWFkZS4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd3MgdHJpZ2dlcmluZyBvZiBhdXRvbWF0ZWQgaW1hZ2UgYm9vdGluZwpAQCAtMjc1LDE5ICsyODIsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93cyBzY2hlZHVsaW5nIG9mIGJ1aWxkcyBzbyB0aGF0IHJlc291cmNlcwogICAgICAgICAgICAgICAgICAgICAgICAgY2FuIGJlIHVzZWQgZWZmaWNpZW50bHkuCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgVGVzdCBNYWNoaW5lczo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgVXNlIGEgc21hbGwgbnVtYmVyIG9mIHNoYXJlZCwgaGlnaCBwZXJmb3JtYW5jZSBzeXN0ZW1zCi0gICAgICAgICAgICAgICBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KLSAgICAgICAgICAgICAgIERldmVsb3BlcnMgY2FuIHVzZSB0aGVzZSBzeXN0ZW1zIGZvciB3aWRlciwgbW9yZQotICAgICAgICAgICAgICAgZXh0ZW5zaXZlIHRlc3Rpbmcgd2hpbGUgdGhleSBjb250aW51ZSB0byBkZXZlbG9wCi0gICAgICAgICAgICAgICBsb2NhbGx5IHVzaW5nIHRoZWlyIHByaW1hcnkgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Eb2N1bWVudCBQb2xpY2llcyBhbmQgQ2hhbmdlIEZsb3c6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGl0c2VsZiB1c2VzIGEgaGllcmFyY2hpY2FsIHN0cnVjdHVyZSBhbmQgYQorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgdXAgVGVzdCBNYWNoaW5lczo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFVzZSBhIHNtYWxsIG51bWJlciBvZiBzaGFyZWQsIGhpZ2ggcGVyZm9ybWFuY2Ugc3lzdGVtcworICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorICAgICAgICAgICAgICAgIERldmVsb3BlcnMgY2FuIHVzZSB0aGVzZSBzeXN0ZW1zIGZvciB3aWRlciwgbW9yZQorICAgICAgICAgICAgICAgIGV4dGVuc2l2ZSB0ZXN0aW5nIHdoaWxlIHRoZXkgY29udGludWUgdG8gZGV2ZWxvcAorICAgICAgICAgICAgICAgIGxvY2FsbHkgdXNpbmcgdGhlaXIgcHJpbWFyeSBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkRvY3VtZW50IFBvbGljaWVzIGFuZCBDaGFuZ2UgRmxvdzo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IHVzZXMgYSBoaWVyYXJjaGljYWwgc3RydWN0dXJlIGFuZCBhCiAgICAgICAgICAgICAgICAgcHVsbCBtb2RlbC4KICAgICAgICAgICAgICAgICBTY3JpcHRzIGV4aXN0IHRvIGNyZWF0ZSBhbmQgc2VuZCBwdWxsIHJlcXVlc3RzCiAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmNyZWF0ZS1wdWxsLXJlcXVlc3Q8L2ZpbGVuYW1lPiBhbmQKQEAgLTMzMCwxNiArMzM3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIE1haW50YWluIHlvdXIgTWV0YWRhdGEgaW4gbGF5ZXJzIHRoYXQgbWFrZSBzZW5zZQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgc2l0dWF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZSAiPGxpbmsgbGlua2VuZD0ndW5kZXJzdGFuZGluZy1hbmQtY3JlYXRpbmctbGF5ZXJzJz5VbmRlcnN0YW5kaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ3JlYXRpbmcgTGF5ZXJzPC9saW5rPiIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbgotICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjdGhlLXlvY3RvLXByb2plY3QtbGF5ZXItbW9kZWwnPlRoZSBZb2N0byBQcm9qZWN0IExheWVyIE1vZGVsPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cworICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSd1bmRlcnN0YW5kaW5nLWFuZC1jcmVhdGluZy1sYXllcnMnPlVuZGVyc3RhbmRpbmcgYW5kIENyZWF0aW5nIExheWVyczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxheWVycy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBTZXBhcmF0ZSB0aGUgcHJvamVjdCdzIE1ldGFkYXRhIGFuZCBjb2RlIGJ5IHVzaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0ZSBHaXQgcmVwb3NpdG9yaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjeW9jdG8tcHJvamVjdC1yZXBvc2l0b3JpZXMnPllvY3RvIFByb2plY3QgU291cmNlIFJlcG9zaXRvcmllczwvdWxpbms+IgotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbCBmb3IgaW5mb3JtYXRpb24gb24gdGhlc2UgcmVwb3NpdG9yaWVzLgogICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2xvY2F0aW5nLXlvY3RvLXByb2plY3Qtc291cmNlLWZpbGVzJz5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvbGluaz4iCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGxvY2FsIEdpdApAQCAtMzYwLDcgKzM3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgY29tbXVuaXR5IGVuY291cmFnZXMgeW91Ci0gICAgICAgICAgICAgICAgICAgICAgICB0byBzZW5kIHBhdGNoZXMgdG8gdGhlIHByb2plY3QgdG8gZml4IGJ1Z3Mgb3IgYWRkIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgdG8gc2VuZCBwYXRjaGVzIHRvIHRoZSBwcm9qZWN0IHRvIGZpeCBidWdzIG9yIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZG8gc3VibWl0IHBhdGNoZXMsIGZvbGxvdyB0aGUgcHJvamVjdCBjb21taXQKICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlbGluZXMgZm9yIHdyaXRpbmcgZ29vZCBjb21taXQgbWVzc2FnZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdob3ctdG8tc3VibWl0LWEtY2hhbmdlJz5TdWJtaXR0aW5nIGEgQ2hhbmdlIHRvIHRoZSBZb2N0byBQcm9qZWN0PC9saW5rPiIKQEAgLTM2OSwxMCArMzgxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQgY2hhbmdlcyB0byB0aGUgY29yZSBzb29uZXIgdGhhbiBsYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgYXMgb3RoZXJzIGFyZSBsaWtlbHkgdG8gcnVuIGludG8gdGhlIHNhbWUgaXNzdWVzLgotICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHNvbWUgZ3VpZGFuY2Ugb24gbWFpbGluZyBsaXN0cyB0byB1c2UsIHNlZSB0aGUgbGlzdCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBzb21lIGd1aWRhbmNlIG9uIG1haWxpbmcgbGlzdHMgdG8gdXNlLCBzZWUgdGhlIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J2hvdy10by1zdWJtaXQtYS1jaGFuZ2UnPlN1Ym1pdHRpbmcgYSBDaGFuZ2UgdG8gdGhlIFlvY3RvIFByb2plY3Q8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGF2YWlsYWJsZSBtYWlsaW5nIGxpc3RzLCBzZWUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Jlc291cmNlcy1tYWlsaW5nbGlzdCc+TWFpbGluZyBMaXN0czwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zODIsMjIgKzM5NiwyOCBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz4KKzxzZWN0aW9uIGlkPSdkZXYtcHJlcGFyaW5nLXRoZS1idWlsZC1ob3N0Jz4KICAgICA8dGl0bGU+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcHJvY2VkdXJlcyB0byBzZXQgdXAgeW91ciBkZXZlbG9wbWVudCBob3N0IHRvCi0gICAgICAgIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhlIFlvY3RvIFByb2plY3Qgb24gYSBuYXRpdmUgTGludXggZGV2ZWxvcG1lbnQgaG9zdCBvcgotICAgICAgICB5b3UgY2FuIHVzZQorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcHJvY2VkdXJlcyB0byBzZXQgdXAgYSBzeXN0ZW0gdG8gYmUgdXNlZCBhcyB5b3VyCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC91bGluaz4KKyAgICAgICAgZm9yIGRldmVsb3BtZW50IHVzaW5nIHRoZSBZb2N0byBQcm9qZWN0LgorICAgICAgICBZb3VyIGJ1aWxkIGhvc3QgY2FuIGJlIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgKHJlY29tbWVuZGVkKSBvciBpdCBjYW4KKyAgICAgICAgYmUgYSBtYWNoaW5lIChMaW51eCwgTWFjLCBvciBXaW5kb3dzKSB0aGF0IHVzZXMKICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCi0gICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAotICAgICAgICB0byBwcmVwYXJlIGFueSBMaW51eCwgTWFjLCBvciBXaW5kb3dzIGRldmVsb3BtZW50IGhvc3QuCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LgorICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEgYnVpbGQgaG9zdCB0aGF0IGlzIHVzaW5nIHRoZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXg8L3VsaW5rPgorICAgICAgICAgICAgKFdTTCkuCisgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTC4KKyAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBPbmNlIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LAorICAgICAgICBPbmNlIHlvdXIgYnVpbGQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LAogICAgICAgICBmdXJ0aGVyIHN0ZXBzIGFyZSBuZWNlc3NhcnkgZGVwZW5kaW5nIG9uIHdoYXQgeW91IHdhbnQgdG8KICAgICAgICAgYWNjb21wbGlzaC4KICAgICAgICAgU2VlIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlcyBmb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIHByZXBhcmUgZm9yCkBAIC00MzIsNyArNDUyLDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBzdGVwcyB0byBwcmVwYXJlIGEgbmF0aXZlIExpbnV4IG1hY2hpbmUgYXMgeW91cgotICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBob3N0OgorICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBCdWlsZCBIb3N0OgogICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVzZSBhIFN1cHBvcnRlZCBMaW51eCBEaXN0cmlidXRpb246PC9lbXBoYXNpcz4KQEAgLTQ1MCw4ICs0NzAsOCBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5IYXZlIEVub3VnaCBGcmVlIE1lbW9yeTo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIGhhdmUgYXQgbGVhc3QgNTAgR2J5dGVzIG9mIGZyZWUgZGlzayBzcGFjZQotICAgICAgICAgICAgICAgICAgICBmb3IgYnVpbGRpbmcgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBZb3VyIHN5c3RlbSBzaG91bGQgaGF2ZSBhdCBsZWFzdCA1MCBHYnl0ZXMgb2YgZnJlZSBkaXNrCisgICAgICAgICAgICAgICAgICAgIHNwYWNlIGZvciBidWlsZGluZyBpbWFnZXMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk1lZXQgTWluaW1hbCBWZXJzaW9uIFJlcXVpcmVtZW50czo8L2VtcGhhc2lzPgpAQCAtNDgwLDE0ICs1MDAsMTQgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIERldmVsb3BtZW50IEhvc3QgUGFja2FnZXM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgZGV2ZWxvcG1lbnQgaG9zdCBwYWNrYWdlcyB2YXJ5IGRlcGVuZGluZyBvbiB5b3VyCi0gICAgICAgICAgICAgICAgICAgIGJ1aWxkIG1hY2hpbmUgYW5kIHdoYXQgeW91IHdhbnQgdG8gZG8gd2l0aCB0aGUgWW9jdG8KKyAgICAgICAgICAgICAgICAgICAgYnVpbGQgaG9zdCBhbmQgd2hhdCB5b3Ugd2FudCB0byBkbyB3aXRoIHRoZSBZb2N0bwogICAgICAgICAgICAgICAgICAgICBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBDb2xsZWN0aXZlbHksIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgcGFja2FnZXMgaXMgbGFyZ2UKICAgICAgICAgICAgICAgICAgICAgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBjb3ZlciBhbGwgY2FzZXMuPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBsaXN0cyBvZiByZXF1aXJlZCBwYWNrYWdlcyBmb3IgYWxsIHNjZW5hcmlvcywKICAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1idWlsZC1ob3N0Jz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CkBAIC01MTQsNyArNTM0LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFdpdGgKLSAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9jcm9wcy9hYm91dC8nPkNST1BTPC91bGluaz4sCisgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvY3JvcHMvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz5DUk9QUzwvdWxpbms+LAogICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKICAgICAgICAgICAgIHlvdSBjYW4gY3JlYXRlIGEgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0CkBAIC01MjUsNjYgKzU0NSwxMDEgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEZvbGxvdyB0aGVzZSBnZW5lcmFsIHN0ZXBzIHRvIHByZXBhcmUgYSBXaW5kb3dzLCBNYWMsIG9yIExpbnV4Ci0gICAgICAgICAgICBtYWNoaW5lIGFzIHlvdXIgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBob3N0OgorICAgICAgICAgICAgbWFjaGluZSBhcyB5b3VyIFlvY3RvIFByb2plY3QgYnVpbGQgaG9zdDoKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5HbyB0byB0aGUgRG9ja2VyIEluc3RhbGxhdGlvbiBTaXRlOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5EZXRlcm1pbmUgV2hhdCBZb3VyIEJ1aWxkIEhvc3QgTmVlZHM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS93aGF0LWRvY2tlcic+RG9ja2VyPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgaXMgYSBzb2Z0d2FyZSBjb250YWluZXIgcGxhdGZvcm0gdGhhdCB5b3UgbmVlZCB0byBpbnN0YWxsCi0gICAgICAgICAgICAgICAgICAgIG9uIHRoZSBob3N0IGRldmVsb3BtZW50IG1hY2hpbmUuCi0gICAgICAgICAgICAgICAgICAgIFRvIHN0YXJ0IHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvaW5zdGFsbGF0aW9uLyc+RG9ja2VyIEluc3RhbGxhdGlvbjwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBidWlsZCBob3N0LgorICAgICAgICAgICAgICAgICAgICBEZXBlbmRpbmcgb24geW91ciBidWlsZCBob3N0LCB5b3UgbWlnaHQgaGF2ZSB0byBpbnN0YWxsCisgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBzb2Z0d2FyZSB0byBzdXBwb3J0IERvY2tlciBjb250YWluZXJzLgorICAgICAgICAgICAgICAgICAgICBHbyB0byB0aGUgRG9ja2VyIGluc3RhbGxhdGlvbiBwYWdlIGFuZCByZWFkIGFib3V0IHRoZQorICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSByZXF1aXJlbWVudHMgaW4KKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2luc3RhbGwvI3N1cHBvcnRlZC1wbGF0Zm9ybXMnPlN1cHBvcnRlZCBQbGF0Zm9ybXM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgeW91ciBidWlsZCBob3N0IG5lZWRzIHRvIHJ1biBjb250YWluZXJzLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaG9vc2UgWW91ciBEb2NrZXIgRWRpdGlvbjo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICBEb2NrZXIgY29tZXMgaW4gc2V2ZXJhbCBlZGl0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBZb2N0byBQcm9qZWN0LCB0aGUgc3RhYmxlIGNvbW11bml0eSBlZGl0aW9uCi0gICAgICAgICAgICAgICAgICAgIChpLmUuICJEb2NrZXIgQ0UgU3RhYmxlIikgaXMgYWRlcXVhdGUuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCB0aGUgRG9ja2VyIGVkaXRpb25zIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgIHNpdGUuCisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DaG9vc2UgV2hhdCBUbyBJbnN0YWxsOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIERlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB5b3VyIGJ1aWxkIGhvc3QgbWVldHMgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cywgeW91IG5lZWQgdG8gaW5zdGFsbCAiRG9ja2VyIENFIFN0YWJsZSIgb3IKKyAgICAgICAgICAgICAgICAgICAgdGhlICJEb2NrZXIgVG9vbGJveCIuCisgICAgICAgICAgICAgICAgICAgIE1vc3Qgc2l0dWF0aW9ucyBjYWxsIGZvciBEb2NrZXIgQ0UuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBoYXZlIGEgYnVpbGQgaG9zdCB0aGF0IGRvZXMgbm90IG1lZXQKKyAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzIChlLmcuIFByZS1XaW5kb3dzIDEwIG9yIFdpbmRvd3MgMTAgIkhvbWUiCisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24pLCB5b3UgbXVzdCBpbnN0YWxsIERvY2tlciBUb29sYm94IGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkdvIHRvIHRoZSBJbnN0YWxsIFNpdGUgZm9yIFlvdXIgUGxhdGZvcm06PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQ2xpY2sgdGhlIGxpbmsgZm9yIHRoZSBEb2NrZXIgZWRpdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgeW91ciBkZXZlbG9wbWVudCBob3N0IG1hY2hpbmUncyBuYXRpdmUgc29mdHdhcmUuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBpZiB5b3VyIG1hY2hpbmUgaXMgcnVubmluZyBNaWNyb3NvZnQKKyAgICAgICAgICAgICAgICAgICAgeW91ciBidWlsZCBob3N0J3MgbmF0aXZlIHNvZnR3YXJlLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91ciBidWlsZCBob3N0IGlzIHJ1bm5pbmcgTWljcm9zb2Z0CiAgICAgICAgICAgICAgICAgICAgIFdpbmRvd3MgVmVyc2lvbiAxMCBhbmQgeW91IHdhbnQgdGhlIERvY2tlciBDRSBTdGFibGUKICAgICAgICAgICAgICAgICAgICAgZWRpdGlvbiwgY2xpY2sgdGhhdCBsaW5rIHVuZGVyICJTdXBwb3J0ZWQgUGxhdGZvcm1zIi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VW5kZXJzdGFuZCBXaGF0IFlvdSBOZWVkOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBpbnN0YWxsIHBhZ2UgaGFzIHByZS1yZXF1aXNpdGVzIHlvdXIgbWFjaGluZSBtdXN0Ci0gICAgICAgICAgICAgICAgICAgIG1lZXQuCi0gICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IHJlYWQgdGhyb3VnaCB0aGlzIHBhZ2UgYW5kIG1ha2Ugc3VyZSB5b3VyCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgbWVldHMgdGhlIHJlcXVpcmVtZW50cyB0byBydW4gRG9ja2VyLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIG1hY2hpbmUgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLCB0aGUgcGFnZQotICAgICAgICAgICAgICAgICAgICBoYXMgaW5zdHJ1Y3Rpb25zIHRvIGhhbmRsZSBleGNlcHRpb25zLgotICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgdG8gcnVuIERvY2tlciBvbiBXaW5kb3dzIDEwLCB5b3UgbXVzdCBoYXZlCi0gICAgICAgICAgICAgICAgICAgIHRoZSBwcm8gdmVyc2lvbiBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgdGhlIGhvbWUgdmVyc2lvbiwgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vdG9vbGJveC9vdmVydmlldy8jcmVhZHktdG8tZ2V0LXN0YXJ0ZWQnPkRvY2tlciBUb29sYm94PC91bGluaz4uCi0gICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KLQotICAgICAgICAgICAgICAgICAgICA8cGFyYT5Bbm90aGVyIGV4YW1wbGUgaXMgdGhhdCBhIFdpbmRvd3MgbWFjaGluZSBuZWVkcyB0bwotICAgICAgICAgICAgICAgICAgICBoYXZlIE1pY3Jvc29mdCBIeXBlci1WLgotICAgICAgICAgICAgICAgICAgICBJZiB5b3UgaGF2ZSBhIGxlZ2FjeSB2ZXJzaW9uIG9mIHRoZSB0aGUgTWljcm9zb2Z0Ci0gICAgICAgICAgICAgICAgICAgIG9wZXJhdGluZyBzeXN0ZW0gb3IgZm9yIGFueSBvdGhlciByZWFzb24geW91IGRvIG5vdCBoYXZlCi0gICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdCBIeXBlci1WLCB5b3Ugd291bGQgaGF2ZSB0byBlbnRlciB0aGUgQklPUyBhbmQKLSAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHZpcnR1YWxpemF0aW9uLgotICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5JbnN0YWxsIHRoZSBTb2Z0d2FyZTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIHVuZGVyc3Rvb2QgYWxsIHRoZSBwcmUtcmVxdWlzaXRlcywgeW91IGNhbgogICAgICAgICAgICAgICAgICAgICBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgYXBwcm9wcmlhdGUgc29mdHdhcmUuCiAgICAgICAgICAgICAgICAgICAgIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIHNwZWNpZmljIG1hY2hpbmUgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZSB0eXBlIG9mIHRoZSBzb2Z0d2FyZSB5b3UgbmVlZCB0byBpbnN0YWxsLgorICAgICAgICAgICAgICAgICAgICB0aGUgdHlwZSBvZiB0aGUgc29mdHdhcmUgeW91IG5lZWQgdG8gaW5zdGFsbDoKKyAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vZG9ja2VyLWZvci13aW5kb3dzL2luc3RhbGwvI2luc3RhbGwtZG9ja2VyLWZvci13aW5kb3dzLWRlc2t0b3AtYXBwJz5Eb2NrZXIgQ0UgZm9yIFdpbmRvd3M8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBXaW5kb3dzIGJ1aWxkIGhvc3RzIHRoYXQgbWVldCByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2RvY2tlci1mb3ItbWFjL2luc3RhbGwvI2luc3RhbGwtYW5kLXJ1bi1kb2NrZXItZm9yLW1hYyc+RG9ja2VyIENFIGZvciBNYWNzPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgTWFjIGJ1aWxkIGhvc3RzIHRoYXQgbWVldCByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL3Rvb2xib3gvdG9vbGJveF9pbnN0YWxsX3dpbmRvd3MvJz5Eb2NrZXIgVG9vbGJveCBmb3IgV2luZG93czwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIFdpbmRvd3MgYnVpbGQgaG9zdHMgdGhhdCBkbyBub3QgbWVldCBEb2NrZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL3Rvb2xib3gvdG9vbGJveF9pbnN0YWxsX21hYy8nPkRvY2tlciBUb29sYm94IGZvciBNYWNPUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIE1hYyBidWlsZCBob3N0cyB0aGF0IGRvIG5vdCBtZWV0IERvY2tlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVtZW50cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vaW5zdGFsbC9saW51eC9kb2NrZXItY2UvY2VudG9zLyc+RG9ja2VyIENFIGZvciBDZW50T1M8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBMaW51eCBidWlsZCBob3N0cyBydW5uaW5nIHRoZSBDZW50T1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2luc3RhbGwvbGludXgvZG9ja2VyLWNlL2RlYmlhbi8nPkRvY2tlciBDRSBmb3IgRGViaWFuPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgTGludXggYnVpbGQgaG9zdHMgcnVubmluZyB0aGUgRGViaWFuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9pbnN0YWxsL2xpbnV4L2RvY2tlci1jZS9mZWRvcmEvJz5Eb2NrZXIgQ0UgZm9yIEZlZG9yYTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIExpbnV4IGJ1aWxkIGhvc3RzIHJ1bm5pbmcgdGhlIEZlZG9yYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vaW5zdGFsbC9saW51eC9kb2NrZXItY2UvdWJ1bnR1Lyc+RG9ja2VyIENFIGZvciBVYnVudHU8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBMaW51eCBidWlsZCBob3N0cyBydW5uaW5nIHRoZSBVYnVudHUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0cmlidXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IE9yaWVudCBZb3Vyc2VsZiBXaXRoIERvY2tlcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHVuZmFtaWxpYXIgd2l0aCBEb2NrZXIgYW5kIHRoZSBjb250YWluZXIKICAgICAgICAgICAgICAgICAgICAgY29uY2VwdCwgeW91IGNhbiBsZWFybiBtb3JlIGhlcmUgLQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MuZG9ja2VyLmNvbS9nZXQtc3RhcnRlZC8nPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggRG9ja2VyIG9yIERvY2tlciBUb29sYm94OjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYmUgYWJsZSB0byBsYXVuY2ggRG9ja2VyIG9yIHRoZSBEb2NrZXIgVG9vbGJveAogICAgICAgICAgICAgICAgICAgICBhbmQgaGF2ZSBhIHRlcm1pbmFsIHNoZWxsIG9uIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC01OTMsNyArNjQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgR28gdG8KICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL2RvY2tlci13aW4tbWFjLWRvY3Mvd2lraSc+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgYW5kIGZvbGxvdyB0aGUgZGlyZWN0aW9ucyBmb3IgeW91ciBwYXJ0aWN1bGFyCi0gICAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50IGhvc3QgKGkuZS4gTGludXgsIE1hYywgb3IgV2luZG93cykuPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IChpLmUuIExpbnV4LCBNYWMsIG9yIFdpbmRvd3MpLjwvcGFyYT4KIAogICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHlvdSBjb21wbGV0ZSB0aGUgc2V0dXAgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyCiAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmUsIHlvdSBoYXZlIHRoZSBQb2t5LCBFeHRlbnNpYmxlIFNESywgYW5kIFRvYXN0ZXIKQEAgLTYyMiw4ICs2NzcsOCBAQAogICAgIDx0aXRsZT5Mb2NhdGluZyBZb2N0byBQcm9qZWN0IFNvdXJjZSBGaWxlczwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHByb2NlZHVyZXMgcmVsYXRlZCB0byBsb2NhdGluZyBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGZpbGVzLgorICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUgYW5kIGFjY2VzcyB0aGUKKyAgICAgICAgc291cmNlIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICBZb3UgZXN0YWJsaXNoIGFuZCB1c2UgdGhlc2UgbG9jYWwgZmlsZXMgdG8gd29yayBvbiBwcm9qZWN0cy4KICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CkBAIC02NzAsNyArNzI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IHRoZSBSZXBvc2l0b3J5OjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgIENsaWNrIG9uIHRoZSByZXBvc2l0b3J5IGluIHdoaWNoIHlvdSBhcmUgaW50ZXJlc3RlZCAoaS5lLgorICAgICAgICAgICAgICAgICAgICBDbGljayBvbiB0aGUgcmVwb3NpdG9yeSBpbiB3aGljaCB5b3UgYXJlIGludGVyZXN0ZWQgKGUuZy4KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTcwNCw2ICs3NTksNyBAQAogICAgICAgICAgICAgICAgIFRoZSBwcm9jZWR1cmUgaW4gdGhpcyBzZWN0aW9uIGV4aXN0cyBzaG91bGQgeW91IGRlc2lyZSBhCiAgICAgICAgICAgICAgICAgdGFyYmFsbCBzbmFwc2hvdCBvZiBhbnkgZ2l2ZW4gY29tcG9uZW50LgogICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIHN0ZXBzIHRvIGxvY2F0ZSBhbmQgZG93bmxvYWQgYSBwYXJ0aWN1bGFyIHRhcmJhbGw6CiAgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QWNjZXNzIHRoZSBJbmRleCBvZiBSZWxlYXNlczo8L2VtcGhhc2lzPgpAQCAtNzUzLDcgKzgwOSwxMCBAQAogICAgICAgICAgICAgdXNlcyBhICJET1dOTE9BRFMiIHBhZ2UgZnJvbSB3aGljaCB5b3UgY2FuIGxvY2F0ZSBhbmQgZG93bmxvYWQKICAgICAgICAgICAgIHRhcmJhbGxzIG9mIGFueSBZb2N0byBQcm9qZWN0IHJlbGVhc2UuCiAgICAgICAgICAgICBSYXRoZXIgdGhhbiBHaXQgcmVwb3NpdG9yaWVzLCB0aGVzZSBmaWxlcyByZXByZXNlbnQgc25hcHNob3QKLSAgICAgICAgICAgIHRhcmJhbGxzLgorICAgICAgICAgICAgdGFyYmFsbHMgc2ltaWxhciB0byB0aGUgdGFyYmFsbHMgbG9jYXRlZCBpbiB0aGUgSW5kZXggb2YgUmVsZWFzZXMKKyAgICAgICAgICAgIGRlc2NyaWJlZCBpbiB0aGUKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdhY2Nlc3NpbmctaW5kZXgtb2YtcmVsZWFzZXMnPkFjY2Vzc2luZyBJbmRleCBvZiBSZWxlYXNlczwvbGluaz4iCisgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+CiAgICAgICAgICAgICAgICAgVGhlIHJlY29tbWVuZGVkIG1ldGhvZCBmb3IgYWNjZXNzaW5nIFlvY3RvIFByb2plY3QKICAgICAgICAgICAgICAgICBjb21wb25lbnRzIGlzIHRvIHVzZSBHaXQgdG8gY2xvbmUgYSByZXBvc2l0b3J5IGFuZCB3b3JrIGZyb20KQEAgLTc3MSwxOCArODMwLDIzIEBACiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+R2V0IHRvIHRoZSBEb3dubG9hZHMgQXJlYTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBTZWxlY3QgdGhlICJET1dOTE9BRFMiIGl0ZW0gZnJvbSB0aGUgcHVsbC1kb3duCi0gICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRSIgdGFiIG1lbnUuCisgICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRSIgdGFiIG1lbnUgbmVhciB0aGUgdG9wIG9mIHRoZSBwYWdlLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZWxlY3QgYSBZb2N0byBQcm9qZWN0IFJlbGVhc2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBtZW51IG5leHQgdG8gIlJFTEVBU0UiIHRvIGRpc3BsYXkgYW5kIGNob29zZQotICAgICAgICAgICAgICAgICAgICBhIFlvY3RvIFByb2plY3QgcmVsZWFzZSAoZS5nLiBzdW1vLCByb2NrbywgcHlybywgYW5kCi0gICAgICAgICAgICAgICAgICAgIHNvIGZvcnRoLgotICAgICAgICAgICAgICAgICAgICBGb3IgYSAibWFwIiBvZiBZb2N0byBQcm9qZWN0IHJlbGVhc2VzIHRvIHZlcnNpb24gbnVtYmVycywKLSAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL1JlbGVhc2VzJz5SZWxlYXNlczwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgIHdpa2kgcGFnZS4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIGEgcmVjZW50IG9yIHBhc3Qgc3VwcG9ydGVkIFlvY3RvIFByb2plY3QgcmVsZWFzZQorICAgICAgICAgICAgICAgICAgICAoZS5nLiAmRElTVFJPX05BTUVfTk9fQ0FQOywKKyAgICAgICAgICAgICAgICAgICAgJkRJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkU7LCBhbmQgc28gZm9ydGgpLgorICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+VGlwPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIEZvciBhICJtYXAiIG9mIFlvY3RvIFByb2plY3QgcmVsZWFzZXMgdG8gdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVycywgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SZWxlYXNlcyc+UmVsZWFzZXM8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgd2lraSBwYWdlLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoZSAiUkVMRUFTRSBBUkNISVZFIiBsaW5rIHRvIHJldmVhbCBhIG1lbnUgb2YKKyAgICAgICAgICAgICAgICAgICAgYWxsIFlvY3RvIFByb2plY3QgcmVsZWFzZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RG93bmxvYWQgVG9vbHMgb3IgQm9hcmQgU3VwcG9ydCBQYWNrYWdlcyAoQlNQcyk6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgIkRPV05MT0FEUyIgcGFnZSwgeW91IGNhbiBkb3dubG9hZCB0b29scyBvcgpAQCAtNzk5LDggKzg2Myw5IEBACiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBtYWludGFpbnMgYW4gYXJlYSBmb3IgbmlnaHRseSBidWlsZHMgdGhhdCBjb250YWlucwogICAgICAgICAgICAgdGFyYmFsbCByZWxlYXNlcyBhdCA8dWxpbmsgdXJsPScmWU9DVE9fQUJfTklHSFRMWV9VUkw7Jy8+LgotICAgICAgICAgICAgVGhlc2UgYnVpbGRzIGluY2x1ZGUgWW9jdG8gUHJvamVjdCByZWxlYXNlcywgU0RLIGluc3RhbGxhdGlvbgotICAgICAgICAgICAgc2NyaXB0cywgYW5kIGV4cGVyaW1lbnRhbCBidWlsZHMuCisgICAgICAgICAgICBUaGVzZSBidWlsZHMgaW5jbHVkZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VzICgicG9reSIpLAorICAgICAgICAgICAgdG9vbGNoYWlucywgWW9jdG8gUHJvamVjdCBwbHVnaW5zIGZvciBFY2xpcHNlLCBhbmQgYnVpbGRzIGZvcgorICAgICAgICAgICAgc3VwcG9ydGVkIG1hY2hpbmVzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC04MDgsMTQgKzg3MywyMSBAQAogICAgICAgICAgICAgWW9jdG8gUHJvamVjdCBjb21wb25lbnQsIHVzZSB0aGUgZm9sbG93aW5nIHByb2NlZHVyZToKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5BY2Nlc3MgdGhlIE5pZ2h0bHkgQnVpbGRzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5Mb2NhdGUgdGhlIEluZGV4IG9mIE5pZ2h0bHkgQnVpbGRzOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIE9wZW4gYSBicm93c2VyIGFuZCBnbyB0bwogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fQUJfTklHSFRMWV9VUkw7Jy8+IHRvIGFjY2VzcyB0aGUKICAgICAgICAgICAgICAgICAgICAgTmlnaHRseSBCdWlsZHMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlNlbGVjdCBhIERhdGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gdGhlIGRhdGUgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3Ugd2FudCB0aGUgbGF0ZXN0IGJ1aWxkcywgdXNlICJDVVJSRU5UIi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2VsZWN0IGEgQnVpbGQ6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ2xpY2sgb24gYW55IGJ1aWxkIGJ5IGRhdGUgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGFyZWEgaW4gd2hpY2ggeW91IGFyZSBpbnRlcmVzdGVkLgorICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IGFyZSBsb29raW5nIGZvciB0aGUgbW9zdCByZWNlbnQKKyAgICAgICAgICAgICAgICAgICAgdG9vbGNoYWlucywgc2VsZWN0IHRoZSAidG9vbGNoYWluIiBsaW5rLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBUYXJiYWxsOjwvZW1waGFzaXM+CkBAIC04MzEsMjcgKzkwMywyMyBAQAogICAgIDwvc2VjdGlvbj4KIDwvc2VjdGlvbj4KIAotPHNlY3Rpb24gaWQ9J2Nsb25pbmctYW5kLWNoZWNraW5nLW91dC1icmFuY2hzJz4KKzxzZWN0aW9uIGlkPSdjbG9uaW5nLWFuZC1jaGVja2luZy1vdXQtYnJhbmNoZXMnPgogICAgIDx0aXRsZT5DbG9uaW5nIGFuZCBDaGVja2luZyBPdXQgQnJhbmNoZXM8L3RpdGxlPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRvIHVzZSB0aGUgWW9jdG8gUHJvamVjdCwgeW91IG5lZWQgYSByZWxlYXNlIG9mIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgIGxvY2FsbHkgaW5zdGFsbGVkIG9uIHlvdXIgZGV2ZWxvcG1lbnQgc3lzdGVtLgotICAgICAgICBUaGUgbG9jYWxseSBpbnN0YWxsZWQgc2V0IG9mIGZpbGVzIGlzIHJlZmVycmVkIHRvIGFzIHRoZQorICAgICAgICBUbyB1c2UgdGhlIFlvY3RvIFByb2plY3QgZm9yIGRldmVsb3BtZW50LCB5b3UgbmVlZCBhIHJlbGVhc2UgbG9jYWxseQorICAgICAgICBpbnN0YWxsZWQgb24geW91ciBkZXZlbG9wbWVudCBzeXN0ZW0uCisgICAgICAgIFRoaXMgbG9jYWxseSBpbnN0YWxsZWQgc2V0IG9mIGZpbGVzIGlzIHJlZmVycmVkIHRvIGFzIHRoZQogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC91bGluaz4KICAgICAgICAgaW4gdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbi4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgWW91IGNyZWF0ZSB5b3VyIFNvdXJjZSBEaXJlY3RvcnkgYnkgdXNpbmcKKyAgICAgICAgVGhlIHByZWZlcnJlZCBtZXRob2Qgb2YgY3JlYXRpbmcgeW91ciBTb3VyY2UgRGlyZWN0b3J5IGlzIGJ5IHVzaW5nCiAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPiB0byBjbG9uZSBhIGxvY2FsCiAgICAgICAgIGNvcHkgb2YgdGhlIHVwc3RyZWFtIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeS4KLSAgICAgICAgPG5vdGU+PHRpdGxlPlRpcDwvdGl0bGU+Ci0gICAgICAgICAgICBUaGUgcHJlZmVycmVkIG1ldGhvZCBvZiBnZXR0aW5nIHRoZSBZb2N0byBQcm9qZWN0IFNvdXJjZQotICAgICAgICAgICAgRGlyZWN0b3J5IHNldCB1cCBpcyB0byBjbG9uZSB0aGUgcmVwb3NpdG9yeS4KLSAgICAgICAgPC9ub3RlPgotICAgICAgICBXb3JraW5nIGZyb20gYSBjb3B5IG9mIHRoZSB1cHN0cmVhbSByZXBvc2l0b3J5IGFsbG93cyB5b3UKLSAgICAgICAgdG8gY29udHJpYnV0ZSBiYWNrIGludG8gdGhlIFlvY3RvIFByb2plY3Qgb3Igc2ltcGx5IHdvcmsgd2l0aAorICAgICAgICBXb3JraW5nIGZyb20gYSBjbG9uZWQgY29weSBvZiB0aGUgdXBzdHJlYW0gcmVwb3NpdG9yeSBhbGxvd3MgeW91CisgICAgICAgIHRvIGNvbnRyaWJ1dGUgYmFjayBpbnRvIHRoZSBZb2N0byBQcm9qZWN0IG9yIHRvIHNpbXBseSB3b3JrIHdpdGgKICAgICAgICAgdGhlIGxhdGVzdCBzb2Z0d2FyZSBvbiBhIGRldmVsb3BtZW50IGJyYW5jaC4KICAgICAgICAgQmVjYXVzZSBHaXQgbWFpbnRhaW5zIGFuZCBjcmVhdGVzIGFuIHVwc3RyZWFtIHJlcG9zaXRvcnkgd2l0aAogICAgICAgICBhIGNvbXBsZXRlIGhpc3Rvcnkgb2YgY2hhbmdlcyBhbmQgeW91IGFyZSB3b3JraW5nIHdpdGggYSBsb2NhbApAQCAtODcxLDIxICs5MzksMjMgQEAKICAgICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5TZXQgWW91ciBEaXJlY3Rvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQmUgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBsb2NhbAotICAgICAgICAgICAgICAgICAgICBjb3B5IG9mIHBva3kuCisgICAgICAgICAgICAgICAgICAgIENoYW5nZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHdoZXJlIHlvdSB3YW50IHRvCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZSB5b3VyIGxvY2FsIGNvcHkgb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2xvbmUgdGhlIFJlcG9zaXRvcnk6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBjb21tYW5kIGNsb25lcyB0aGUgcmVwb3NpdG9yeSBhbmQgdXNlcworICAgICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29tbWFuZCBjbG9uZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb2t5PC9maWxlbmFtZT4gcmVwb3NpdG9yeSBhbmQgdXNlcwogICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBuYW1lICJwb2t5IiBmb3IgeW91ciBsb2NhbCByZXBvc2l0b3J5OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZ2l0IGNsb25lIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kKICAgICAgQ2xvbmluZyBpbnRvICdwb2t5Jy4uLgotICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDM2NzE3OCwgZG9uZS4KLSAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg4ODE2MS84ODE2MSksIGRvbmUuCi0gICAgIHJlbW90ZTogVG90YWwgMzY3MTc4IChkZWx0YSAyNzI3NjEpLCByZXVzZWQgMzY2OTQyIChkZWx0YSAyNzI1MjUpCi0gICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICgzNjcxNzgvMzY3MTc4KSwgMTMzLjI2IE1pQiB8IDYuNDAgTWlCL3MsIGRvbmUuCi0gICAgIFJlc29sdmluZyBkZWx0YXM6IDEwMCUgKDI3Mjc2MS8yNzI3NjEpLCBkb25lLgorICAgICByZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDQxNjU0MiwgZG9uZS4KKyAgICAgcmVtb3RlOiBDb21wcmVzc2luZyBvYmplY3RzOiAxMDAlICg5ODYxMS85ODYxMSksIGRvbmUuCisgICAgIHJlbW90ZTogVG90YWwgNDE2NTQyIChkZWx0YSAzMTExMDQpLCByZXVzZWQgNDE2Mzc3IChkZWx0YSAzMTA5MzkpCisgICAgIFJlY2VpdmluZyBvYmplY3RzOiAxMDAlICg0MTY1NDIvNDE2NTQyKSwgMTUwLjM5IE1pQiB8IDE1Ljc3IE1pQi9zLCBkb25lLgorICAgICBSZXNvbHZpbmcgZGVsdGFzOiAxMDAlICgzMTExMDQvMzExMTA0KSwgZG9uZS4KICAgICAgQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uIGRvbmUuCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVW5sZXNzIHlvdSBzcGVjaWZ5IGEgc3BlY2lmaWMgZGV2ZWxvcG1lbnQgYnJhbmNoIG9yCkBAIC05MDAsOCArOTcwLDggQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nY2hlY2tvdXQtb3V0LWJ5LXRhZy1pbi1wb2t5Jz5DaGVja2luZyBPdXQgQnkgVGFnIGluIFBva3k8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9ucywgcmVzcGVjdGl2ZWx5LjwvcGFyYT4KIAotICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHRoZSByZXBvc2l0b3J5IGlzIGNyZWF0ZWQsIHlvdSBjYW4gY2hhbmdlIHRvCi0gICAgICAgICAgICAgICAgICAgIHRoYXQgZGlyZWN0b3J5IGFuZCBjaGVjayBpdHMgc3RhdHVzLgorICAgICAgICAgICAgICAgICAgICA8cGFyYT5PbmNlIHRoZSBsb2NhbCByZXBvc2l0b3J5IGlzIGNyZWF0ZWQsIHlvdSBjYW4KKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCBjaGVjayBpdHMgc3RhdHVzLgogICAgICAgICAgICAgICAgICAgICBIZXJlLCB0aGUgc2luZ2xlICJtYXN0ZXIiIGJyYW5jaCBleGlzdHMgb24geW91ciBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgYW5kIGJ5IGRlZmF1bHQsIGl0IGlzIGNoZWNrZWQgb3V0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC05MTYsNiArOTg2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIFlvdXIgbG9jYWwgcmVwb3NpdG9yeSBvZiBwb2t5IGlzIGlkZW50aWNhbCB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgdXBzdHJlYW0gcG9reSByZXBvc2l0b3J5IGF0IHRoZSB0aW1lIGZyb20gd2hpY2ggaXQgd2FzCiAgICAgICAgICAgICAgICAgICAgIGNsb25lZC4KKyAgICAgICAgICAgICAgICAgICAgQXMgeW91IHdvcmsgd2l0aCB0aGUgbG9jYWwgYnJhbmNoLCB5b3UgY2FuIHBlcmlvZGljYWxseQorICAgICAgICAgICAgICAgICAgICB1c2UgdGhlIDxmaWxlbmFtZT5naXQgcHVsbCAmZGFzaDsmZGFzaDtyZWJhc2U8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBjb21tYW5kIHRvIGJlIHN1cmUgeW91IGFyZSB1cC10by1kYXRlIHdpdGggdGhlIHVwc3RyZWFtCisgICAgICAgICAgICAgICAgICAgIGJyYW5jaC4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCmluZGV4IGQ0NzMxNDIuLmI1NGMwZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCkBAIC0xMDcsMTQgKzEwNywxNCBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNi4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9maWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU5MzM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCmluZGV4IDRjNmZjMzUuLjkwNTI4NzYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKQEAgLTI1LDcgKzI1LDcgQEAKICAgICAgICAgICAgIEJlZm9yZSB5b3UgY2FuIGRvIGFueSBrZXJuZWwgZGV2ZWxvcG1lbnQsIHlvdSBuZWVkIHRvIGJlCiAgICAgICAgICAgICBzdXJlIHlvdXIgYnVpbGQgaG9zdCBpcyBzZXQgdXAgdG8gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBnZXQgc2V0IHVwLCBzZWUgdGhlCi0gICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10aGUtZGV2ZWxvcG1lbnQtaG9zdC10by11c2UtdGhlLXlvY3RvLXByb2plY3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1wcmVwYXJpbmctdGhlLWJ1aWxkLWhvc3QnPlByZXBhcmluZyB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICBQYXJ0IG9mIHByZXBhcmluZyB0aGUgc3lzdGVtIGlzIGNyZWF0aW5nIGEgbG9jYWwgR2l0CiAgICAgICAgICAgICByZXBvc2l0b3J5IG9mIHRoZQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAppbmRleCBlNWU2ZmQxLi5mYzQ2YzIwIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbApAQCAtOTIsMTQgKzkyLDE0IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmcgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvZmlndXJlcy9tdWx0aWNvbmZpZ19maWxlcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1OTMzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9maWd1cmVzL211bHRpY29uZmlnX2ZpbGVzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL21lZ2EtbWFudWFsL21lZ2EtbWFudWFsLnhtbAppbmRleCA0YTY4OTk5Li43YTQxOTkxIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKQEAgLTc2LDE0ICs3NiwxNCBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNi4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKaW5kZXggY2NmNWUyNy4uZDM0YjY0MCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbApAQCAtMTI5Niw3ICsxMjk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgPHBhcmE+SXQgaXMgd29ydGggbm90aW5nIHRoYXQgdGhlIHRlcm0gInBhY2thZ2UiIGNhbiwKICAgICAgICAgICAgICAgICAgICAgaW4gZ2VuZXJhbCwgaGF2ZSBzdWJ0bGUgbWVhbmluZ3MuCiAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgcGFja2FnZXMgcmVmZXJyZWQgdG8gaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWJ1aWxkLWhvc3QnPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgQnVpbGQgSG9zdDwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgYXJlIGNvbXBpbGVkCiAgICAgICAgICAgICAgICAgICAgIGJpbmFyaWVzIHRoYXQsIHdoZW4gaW5zdGFsbGVkLCBhZGQgZnVuY3Rpb25hbGl0eSB0byB5b3VyCiAgICAgICAgICAgICAgICAgICAgIExpbnV4IGRpc3RyaWJ1dGlvbi48L3BhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC54bWwKaW5kZXggZDdmMDRhYi4uMzIwY2EzNSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApAQCAtMzcsMTQgKzM3LDE0IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQgYi9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKaW5kZXggMWI3MWI4MC4uYzc2ZmU3YiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50CisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudApAQCAtMSwxNyArMSwxNyBAQAotPCFFTlRJVFkgRElTVFJPICIyLjUuMiI+Ci08IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMjUyIj4KLTwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUCAic3VtbyI+Ci08IUVOVElUWSBESVNUUk9fTkFNRSAiU3VtbyI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVBfTUlOVVNfT05FICJyb2NrbyI+Ci08IUVOVElUWSBESVNUUk9fTkFNRV9NSU5VU19PTkUgIlJvY2tvIj4KLTwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIyLjUuMiI+Ci08IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTl9NSU5VU19PTkUgIjIuNC40Ij4KLTwhRU5USVRZIERJU1RST19SRUxfVEFHICJ5b2N0by0yLjUuMiI+Ci08IUVOVElUWSBNRVRBSU5URUxWRVJTSU9OICI5LjIiPgorPCFFTlRJVFkgRElTVFJPICIyLjYuMSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMjYxIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUCAidGh1ZCI+Cis8IUVOVElUWSBESVNUUk9fTkFNRSAiVGh1ZCI+Cis8IUVOVElUWSBESVNUUk9fTkFNRV9OT19DQVBfTUlOVVNfT05FICJzdW1vIj4KKzwhRU5USVRZIERJU1RST19OQU1FX01JTlVTX09ORSAiU3VtbyI+Cis8IUVOVElUWSBZT0NUT19ET0NfVkVSU0lPTiAiMi42LjEiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIyLjUuMiI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMi42LjEiPgorPCFFTlRJVFkgTUVUQUlOVEVMVkVSU0lPTiAiOS4wIj4KIDwhRU5USVRZIFJFTF9NT05USF9ZRUFSICJEZWNlbWJlciAyMDE4Ij4KIDwhRU5USVRZIE1FVEFfSU5URUxfUkVMX1RBRyAiJk1FVEFJTlRFTFZFUlNJT047LSZESVNUUk9fTkFNRV9OT19DQVA7LSZZT0NUT19ET0NfVkVSU0lPTjsiPgotPCFFTlRJVFkgUE9LWVZFUlNJT04gIjIwLjAuMiI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIyMDAyIj4KKzwhRU5USVRZIFBPS1lWRVJTSU9OICIyMS4wLjEiPgorPCFFTlRJVFkgUE9LWVZFUlNJT05fQ09NUFJFU1NFRCAiMjEwMSI+CiA8IUVOVElUWSBZT0NUT19QT0tZICJwb2t5LSZESVNUUk9fTkFNRV9OT19DQVA7LSZQT0tZVkVSU0lPTjsiPgogPCFFTlRJVFkgQ09QWVJJR0hUX1lFQVIgIjIwMTAtMjAxOSI+CiA8IUVOVElUWSBZT0NUT19ETF9VUkwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLWludHJvLnhtbAppbmRleCBkMzhkNjFhLi5mMTZkYjNmIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtaW50cm8ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC1pbnRyby54bWwKQEAgLTkyLDcgKzkyLDkgQEAKICAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAiZGVidWctdHdlYWtzIHRvb2xzLXByb2ZpbGUgZGJnLXBrZ3MiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoZSByaWdodCB0eXBlIG9mCi0gICAgICAgICAgICBkZWJ1Z2luZm8sIHdlIGFsc28gbmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBsb2NhbC5jb25mOgorICAgICAgICAgICAgZGVidWdpbmZvLCB3ZSBhbHNvIG5lZWQgdG8gc2V0CisgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRSc+PGZpbGVuYW1lPlBBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEU8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICBpbiB0aGUgPGZpbGVuYW1lPmxvY2FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFID0gJ2RlYnVnLWZpbGUtZGlyZWN0b3J5JwogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKaW5kZXggYzA4NzNlMS4uYTFiNTY1MSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sCkBAIC0zNzUsNyArMzc1LDkgQEAKICAgICAgRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAiZGVidWctdHdlYWtzIHRvb2xzLXByb2ZpbGUgZGJnLXBrZ3MiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIHR5cGUgb2YgZGVidWdpbmZvIHRoYXQKLSAgICAgICAgICAgICAgICBwZXJmIHVuZGVyc3RhbmRzLCB3ZSBhbHNvIG5lZWQgdG8gYWRkIHRoZSBmb2xsb3dpbmcgdG8gbG9jYWwuY29uZjoKKyAgICAgICAgICAgICAgICBwZXJmIHVuZGVyc3RhbmRzLCB3ZSBhbHNvIG5lZWQgdG8gc2V0CisgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVBBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnPjxmaWxlbmFtZT5QQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgIGluIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGU6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFID0gJ2RlYnVnLWZpbGUtZGlyZWN0b3J5JwogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCmluZGV4IDc2MjkzODYuLjEwY2E2OGUgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbApAQCAtOTIsMTQgKzkyLDE0IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAppbmRleCBiMDYwOTY4Li5jNjQ4ZDhkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKQEAgLTM2MTksNyArMzYxOSw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfSU1BR0VfQkFTRV9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0lNQUdFX0JBU0VfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9JTUFHRV9CQVNFX05BTUU8L2ZpbGVuYW1lPgogICAgICAgICAgICAgdmFyaWFibGUgbm8gbG9uZ2VyIHVzZXMgdGhlCiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0lNQUdFVFlQRSc+PGZpbGVuYW1lPktFUk5FTF9JTUFHRVRZUEU8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGNyZWF0ZSB0aGUgaW1hZ2UncyBiYXNlIG5hbWUuCkBAIC01NTU3LDggKzU1NTcsOSBAQAogICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2l0aCBvdGhlciBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhlIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IGNsYXNzIHVzZXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm5pbmphPC9maWxlbmFtZT4gaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyB1c2VzIDxmaWxlbmFtZT5uaW5qYTwvZmlsZW5hbWU+IGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBmb3IgYnVpbGRpbmcuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgaW1wcm92ZXMgYnVpbGQgcGVyZm9ybWFuY2UuCiAgICAgICAgICAgICAgICAgICAgIElmIGEgcmVjaXBlIGlzIGJyb2tlbiB3aXRoIDxmaWxlbmFtZT5uaW5qYTwvZmlsZW5hbWU+LCB0aGVuCkBAIC01NjA4LDcgKzU2MDksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGluY2x1ZGluZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgIHdpbGwgdHJpZ2dlciBhIHdhcm5pbmcgZHVyaW5nCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb19yb290ZnM8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvX3Jvb3RmczwvZmlsZW5hbWU+LjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1wb3N0LWluc3RhbGxhdGlvbi1zY3JpcHRzJz5Qb3N0LUluc3RhbGxhdGlvbiBTY3JpcHRzPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+ZWxmPC9maWxlbmFtZT4gaW1hZ2UgdHlwZSBoYXMgYmVlbiByZW1vdmVkLgpAQCAtNTY3OCw2ICs1NjgzLDY0OCBAQAogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgorCis8c2VjdGlvbiBpZD0nbW92aW5nLXRvLXRoZS15b2N0by1wcm9qZWN0LTIuNi1yZWxlYXNlJz4KKyAgICA8dGl0bGU+TW92aW5nIHRvIHRoZSBZb2N0byBQcm9qZWN0IDIuNiBSZWxlYXNlPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgbWlncmF0aW9uIGluZm9ybWF0aW9uIGZvciBtb3ZpbmcgdG8gdGhlCisgICAgICAgIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UgZnJvbSB0aGUgcHJpb3IgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1nY2MtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5HQ0MgOC4yIGlzIE5vdyBVc2VkIGJ5IERlZmF1bHQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIEdOVSBDb21waWxlciBDb2xsZWN0aW9uIHZlcnNpb24gOC4yIGlzIG5vdyB1c2VkIGJ5IGRlZmF1bHQKKyAgICAgICAgICAgIGZvciBjb21waWxhdGlvbi4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgaGFzIGNoYW5nZWQgaW4gdGhlIEdDQyA4LnggcmVsZWFzZSwKKyAgICAgICAgICAgIHNlZQorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9nY2MuZ251Lm9yZy9nY2MtOC9jaGFuZ2VzLmh0bWwnPjwvdWxpbms+LgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB5b3Ugc3RpbGwgbmVlZCB0byBjb21waWxlIHdpdGggdmVyc2lvbiA3LngsIEdDQyA3LjMgaXMKKyAgICAgICAgICAgIGFsc28gcHJvdmlkZWQuCisgICAgICAgICAgICBZb3UgY2FuIHNlbGVjdCB0aGlzIHZlcnNpb24gYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgIGFuZCBjYW4gYmUgc2VsZWN0ZWQgYnkgc2V0dGluZyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1HQ0NWRVJTSU9OJz48ZmlsZW5hbWU+R0NDVkVSU0lPTjwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgdmFyaWFibGUgdG8gIjcuJSIgaW4geW91ciBjb25maWd1cmF0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtcmVtb3ZlZC1yZWNpcGVzJz4KKyAgICAgICAgPHRpdGxlPlJlbW92ZWQgUmVjaXBlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBiZWVuIHJlbW92ZWQ6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+YmVlY3J5cHQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBObyBsb25nZXIgbmVlZGVkIHNpbmNlIG1vdmluZyB0byBSUE0gNC4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5iaWdyZXFzcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Y2FsaWJyYXRlcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZW1vdmVkIGluIGZhdm9yIG9mIDxmaWxlbmFtZT54aW5wdXQ8L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5jb21wb3NpdGVwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kYW1hZ2Vwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kbXhwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5kcmkycHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+ZHJpM3Byb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmVlZS1hY3BpLXNjcmlwdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Zml4ZXNwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5mb250c3Byb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmZzdGVzdHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z2NjbWFrZWRlcDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciB1c2VkLgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdscHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+Z25vbWUtZGVza3RvcDM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBObyBsb25nZXIgbmVlZGVkLiAgVGhpcyByZWNpcGUgaGFzIG1vdmVkIHRvIDxmaWxlbmFtZT5tZXRhLW9lPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+aWNvbi1uYW1pbmctdXRpbHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBObyBsb25nZXIgdXNlZCBzaW5jZSB0aGUgU2F0byB0aGVtZSB3YXMgcmVtb3ZlZCBpbiAyMDE2LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmlucHV0cHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+a2Jwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5saWJ1c2ItY29tcGF0PC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQmVjYW1lIG9ic29sZXRlLgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmxpYnVzZXI8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlibmZzaWRtYXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBObyBsb25nZXIgYW4gZXh0ZXJuYWwgcmVxdWlyZW1lbnQgc2luY2UgPGZpbGVuYW1lPm5mcy11dGlsczwvZmlsZW5hbWU+IDIuMi4xLiAgPGZpbGVuYW1lPmxpYm5mc2lkbWFwPC9maWxlbmFtZT4gaXMgbm93IGludGVncmF0ZWQuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+bGlieGNhbGlicmF0ZTwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQgd2l0aCA8ZmlsZW5hbWU+eGlucHV0PC9maWxlbmFtZT4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5ta3RlbXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuIFRoZSA8ZmlsZW5hbWU+bWt0ZW1wPC9maWxlbmFtZT4gY29tbWFuZCBpcyBwcm92aWRlZCBieSBib3RoIDxmaWxlbmFtZT5idXN5Ym94PC9maWxlbmFtZT4gYW5kIDxmaWxlbmFtZT5jb3JldXRpbHM8L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5vc3NwLXV1aWQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBJcyBub3QgYmVpbmcgbWFpbnRhaW5lZCBhbmQgaGFzIG1vc3RseSBiZWVuIHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT51dWlkLmg8L2ZpbGVuYW1lPiBpbiA8ZmlsZW5hbWU+dXRpbC1saW51eDwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnBheC11dGlsczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQuICBQcmV2aW91cyBRQSB0ZXN0cyB0aGF0IGRpZCB1c2UgdGhpcyByZWNpcGUgYXJlIG5vdyBkb25lIGF0IGJ1aWxkIHRpbWUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cGNtY2lhdXRpbHM8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBCZWNhbWUgb2Jzb2xldGUuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cGl4ejwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IE5vIGxvbmdlciBuZWVkZWQuIDxmaWxlbmFtZT54ejwvZmlsZW5hbWU+IG5vdyBzdXBwb3J0cyBtdWx0aS10aHJlYWRlZCBjb21wcmVzc2lvbi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5wcmVzZW50cHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+cmFuZHJwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5yZWNvcmRwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5yZW5kZXJwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5yZXNvdXJjZXByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnNjcm5zYXZlcnByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnRyYWNlLWNtZDwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4gIDxmaWxlbmFtZT5wZXJmPC9maWxlbmFtZT4gcmVwbGFjZWQgdGhpcyByZWNpcGUncyBmdW5jdGlvbmFsbHkuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+dmlkZW9wcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT53aXJlbGVzcy10b29sczwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4gIFN1cGVyc2VkZWQgYnkgPGZpbGVuYW1lPml3PC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGNtaXNjcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGV4dHByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnhmODZkZ2Fwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2ZHJpcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGY4Nm1pc2Nwcm90bzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IFJlcGxhY2VkIGJ5IDxmaWxlbmFtZT54b3JncHJvdG88L2ZpbGVuYW1lPi4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2LXZpZGVvLW9tYXBmYjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+IEJlY2FtZSBvYnNvbGV0ZS4gIFVzZSBrZXJuZWwgbW9kZXNldHRpbmcgZHJpdmVyIGluc3RlYWQuCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eGY4Ni12aWRlby1vbWFwPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gQmVjYW1lIG9ic29sZXRlLiAgVXNlIGtlcm5lbCBtb2Rlc2V0dGluZyBkcml2ZXIgaW5zdGVhZC4KKyAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT54Zjg2dmlkbW9kZXByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnhpbmVyYW1hcHJvdG88L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBSZXBsYWNlZCBieSA8ZmlsZW5hbWU+eG9yZ3Byb3RvPC9maWxlbmFtZT4uCisgICAgIDxlbXBoYXNpcz48ZmlsZW5hbWU+eHByb3RvPC9maWxlbmFtZT46PC9lbXBoYXNpcz4gUmVwbGFjZWQgYnkgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+LgorICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnlhc208L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPiBObyBsb25nZXIgbmVlZGVkIHNpbmNlIHByZXZpb3VzIHVzYWdlcyBhcmUgbm93IHNhdGlzZmllZCBieSA8ZmlsZW5hbWU+bmFzbTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnaW5nIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBwYWNrYWdpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNtYWtlLm00PC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50b29sY2hhaW48L2ZpbGVuYW1lPiBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIG1haW4gcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmlwdGFibGVzPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5pcHRhYmxlczwvZmlsZW5hbWU+IG1vZHVsZXMgaGF2ZSBiZWVuIHNwbGl0CisgICAgICAgICAgICAgICAgICAgIGludG8gc2VwYXJhdGUgcGFja2FnZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5hbHNhLWxpYjwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJhc291bmQ8L2ZpbGVuYW1lPiBpcyBub3cgaW4gdGhlIG1haW4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmFsc2EtbGliPC9maWxlbmFtZT4gcGFja2FnZSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJhc291bmQ8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPmdsaWJjPC9maWxlbmFtZT46PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYm5zcy1kYjwvZmlsZW5hbWU+IGlzIG5vdyBpbiBpdHMgb3duIHBhY2thZ2UKKyAgICAgICAgICAgICAgICAgICAgYWxvbmcgd2l0aCBhIDxmaWxlbmFtZT4vdmFyL2RiL21ha2VkYnMuc2g8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBzY3JpcHQgdG8gdXBkYXRlIGRhdGFiYXNlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPnB5dGhvbjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+OjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSBtYWluIHBhY2thZ2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSByZWNpcGUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGluc3RhbGwgc3BlY2lmaWMgcGFja2FnZXMgb3IKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnB5dGhvbi1tb2R1bGVzPC9maWxlbmFtZT4gLworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cHl0aG9uMy1tb2R1bGVzPC9maWxlbmFtZT4gZm9yIGV2ZXJ5dGhpbmcuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPjxmaWxlbmFtZT5zeXN0ZW10YXA8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBNb3ZlZCA8ZmlsZW5hbWU+c3lzdGVtdGFwLWV4cG9ydGVyPC9maWxlbmFtZT4gaW50byBpdHMgb3duCisgICAgICAgICAgICAgICAgICAgIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi14b3JnLXByb3RvY29sLWRlcGVuZGVuY2llcyc+CisgICAgICAgIDx0aXRsZT5YT3JnIFByb3RvY29sIGRlcGVuZGVuY2llczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgIipwcm90byIgdXBzdHJlYW0gcmVwb3NpdG9yaWVzIGhhdmUgYmVlbiBjb21iaW5lZCBpbnRvIG9uZQorICAgICAgICAgICAgInhvcmdwcm90byIgcmVwb3NpdG9yeS4KKyAgICAgICAgICAgIFRodXMsIHRoZSBjb3JyZXNwb25kaW5nIHJlY2lwZXMgaGF2ZSBhbHNvIGJlZW4gY29tYmluZWQgaW50byBhCisgICAgICAgICAgICBzaW5nbGUgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+IHJlY2lwZS4KKyAgICAgICAgICAgIEFueSByZWNpcGVzIHRoYXQgZGVwZW5kIHVwb24gdGhlIG9sZGVyIDxmaWxlbmFtZT4qcHJvdG88L2ZpbGVuYW1lPgorICAgICAgICAgICAgcmVjaXBlcyBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gZGVwZW5kIG9uIHRoZSBuZXdlcgorICAgICAgICAgICAgPGZpbGVuYW1lPnhvcmdwcm90bzwvZmlsZW5hbWU+IHJlY2lwZSBpbnN0ZWFkLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBGb3IgbmFtZXMgb2YgcmVjaXBlcyByZW1vdmVkIGJlY2F1c2Ugb2YgdGhpcyByZXBvc2l0b3J5IGNoYW5nZSwKKyAgICAgICAgICAgIHNlZSB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1pZ3JhdGlvbi0yLjYtcmVtb3ZlZC1yZWNpcGVzIj5SZW1vdmVkIFJlY2lwZXM8L2xpbms+CisgICAgICAgICAgICBzZWN0aW9uLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtZGlzdHV0aWxzLWRpc3R1dGlsczMtZmV0Y2hpbmctZGVwZW5kZW5jaWVzJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kaXN0dXRpbHM8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmRpc3R1dGlsczM8L2ZpbGVuYW1lPiBOb3cgUHJldmVudCBGZXRjaGluZyBEZXBlbmRlbmNpZXMgRHVyaW5nIHRoZSA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gVGFzazwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmV2aW91c2x5LCBpdCB3YXMgcG9zc2libGUgZm9yIFB5dGhvbiByZWNpcGVzIHRoYXQgaW5oZXJpdGVkCisgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWRpc3R1dGlscyc+PGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgYW5kCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1kaXN0dXRpbHMzJz48ZmlsZW5hbWU+ZGlzdHV0aWxzMzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgY2xhc3NlcyB0byBmZXRjaCBjb2RlIGR1cmluZyB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi10YXNrcy1jb25maWd1cmUnPjxmaWxlbmFtZT5kb19jb25maWd1cmU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHRhc2sgdG8gc2F0aXNmeSBkZXBlbmRlbmNpZXMgbWVudGlvbmVkIGluCisgICAgICAgICAgICA8ZmlsZW5hbWU+c2V0dXAucHk8L2ZpbGVuYW1lPiBpZiB0aG9zZSBkZXBlbmRlbmNpZXMgd2VyZSBub3QKKyAgICAgICAgICAgIHByb3ZpZGVkIGluIHRoZSBzeXNyb290IChpLmUuIHJlY2lwZXMgcHJvdmlkaW5nIHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgICAgIHdlcmUgbWlzc2luZyBmcm9tCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREVQRU5EUyc+PGZpbGVuYW1lPkRFUEVORFM8L2ZpbGVuYW1lPjwvbGluaz4pLgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhpcyBjaGFuZ2UgYWZmZWN0cyBjbGFzc2VzIGJleW9uZCBqdXN0IHRoZSB0d28gbWVudGlvbmVkCisgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmRpc3R1dGlsczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaXN0dXRpbHMzPC9maWxlbmFtZT4pLgorICAgICAgICAgICAgICAgIEFueSByZWNpcGUgdGhhdCBpbmhlcml0cyA8ZmlsZW5hbWU+ZGlzdHV0aWxzKjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgY2xhc3NlcyBhcmUgYWZmZWN0ZWQuCisgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSA8ZmlsZW5hbWU+c2V0dXB0b29sczwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zZXR1cHRvb2xzMzwvZmlsZW5hbWU+IHJlY2lwZXMgYXJlIGFmZmVjdGVkIHNpbmNlCisgICAgICAgICAgICAgICAgdGhleSBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+ZGlzdHV0aWxzKjwvZmlsZW5hbWU+IGNsYXNzZXMuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZldGNoaW5nIHRoZXNlIHR5cGVzIG9mIGRlcGVuZGVuY2llcyB0aGF0IGFyZSBub3QgcHJvdmlkZWQgaW4gdGhlCisgICAgICAgICAgICBzeXNyb290IG5lZ2F0aXZlbHkgYWZmZWN0cyB0aGUgYWJpbGl0eSB0byByZXByb2R1Y2UgYnVpbGRzLgorICAgICAgICAgICAgVGhpcyB0eXBlIG9mIGZldGNoaW5nIGlzIG5vdyBleHBsaWNpdGx5IGRpc2FibGVkLgorICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBhbnkgbWlzc2luZyBkZXBlbmRlbmNpZXMgaW4gUHl0aG9uIHJlY2lwZXMgdGhhdAorICAgICAgICAgICAgdXNlIHRoZXNlIGNsYXNzZXMgbm93IHJlc3VsdCBpbiBhbiBlcnJvciBkdXJpbmcgdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9fY29uZmlndXJlPC9maWxlbmFtZT4gdGFzay4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LWxpbnV4LXlvY3RvLWNvbmZpZ3VyYXRpb24tYXVkaXQtaXNzdWVzLW5vdy1jb3JyZWN0bHktcmVwb3J0ZWQnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gQ29uZmlndXJhdGlvbiBBdWRpdCBJc3N1ZXMgTm93IENvcnJlY3RseSBSZXBvcnRlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdWUgdG8gYSBidWcsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBhdWRpdCBmdW5jdGlvbmFsaXR5IHdhcworICAgICAgICAgICAgbm90IHdyaXRpbmcgb3V0IGFueSByZXN1bHRpbmcgd2FybmluZ3MgZHVyaW5nIHRoZSBidWlsZC4KKyAgICAgICAgICAgIFRoaXMgaXNzdWUgaXMgbm93IGNvcnJlY3RlZC4KKyAgICAgICAgICAgIFlvdSBtaWdodCBub3RpY2UgdGhlc2Ugd2FybmluZ3Mgbm93IGlmIHlvdSBoYXZlIGEgY3VzdG9tIGtlcm5lbAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiB3aXRoIGEgPGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT4gc3R5bGUKKyAgICAgICAgICAgIGtlcm5lbCByZWNpcGUuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1pbWFnZS1rZXJuZWwtYXJ0aWZhY3QtbmFtaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+SW1hZ2UvS2VybmVsIEFydGlmYWN0IE5hbWluZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIGJlZW4gbWFkZToKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBOYW1lIHZhcmlhYmxlcyAoZS5nLgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU1BR0VfTkFNRSc+PGZpbGVuYW1lPklNQUdFX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgIHVzZSBhIG5ldyA8ZmlsZW5hbWU+SU1BR0VfVkVSU0lPTl9TVUZGSVg8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1EQVRFVElNRSc+PGZpbGVuYW1lPkRBVEVUSU1FPC9maWxlbmFtZT48L2xpbms+LgorICAgICAgICAgICAgICAgICAgICBVc2luZyA8ZmlsZW5hbWU+SU1BR0VfVkVSU0lPTl9TVUZGSVg8L2ZpbGVuYW1lPiBhbGxvd3MKKyAgICAgICAgICAgICAgICAgICAgZWFzaWVyIGFuZCBtb3JlIGRpcmVjdCBjaGFuZ2VzLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGUgPGZpbGVuYW1lPklNQUdFX1ZFUlNJT05fU1VGRklYPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS5jb25mPC9maWxlbmFtZT4gY29uZmlndXJhdGlvbiBmaWxlIGFzCisgICAgICAgICAgICAgICAgICAgIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU1BR0VfVkVSU0lPTl9TVUZGSVggPSAiLSR7REFURVRJTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2V2ZXJhbCB2YXJpYWJsZXMgaGF2ZSBjaGFuZ2VkIG5hbWVzIGZvciBjb25zaXN0ZW5jeToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIE9sZCBWYXJpYWJsZSBOYW1lICAgICAgICAgICAgICAgTmV3IFZhcmlhYmxlIE5hbWUKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIEtFUk5FTF9JTUFHRV9CQVNFX05BTUUgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9JTUFHRV9OQU1FJz5LRVJORUxfSU1BR0VfTkFNRTwvbGluaz4KKyAgICBLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfSU1BR0VfTElOS19OQU1FJz5LRVJORUxfSU1BR0VfTElOS19OQU1FPC9saW5rPgorICAgIE1PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1PRFVMRV9UQVJCQUxMX05BTUUnPk1PRFVMRV9UQVJCQUxMX05BTUU8L2xpbms+CisgICAgTU9EVUxFX1RBUkJBTExfU1lNTElOS19OQU1FICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfTElOS19OQU1FJz5NT0RVTEVfVEFSQkFMTF9MSU5LX05BTUU8L2xpbms+CisgICAgSU5JVFJBTUZTX0JBU0VfTkFNRSAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX05BTUUnPklOSVRSQU1GU19OQU1FPC9saW5rPgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5NT0RVTEVfSU1BR0VfQkFTRV9OQU1FPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgICAgICAgICAgICAgVGhlIG1vZHVsZSB0YXJiYWxsIG5hbWUgaXMgbm93IGNvbnRyb2xsZWQgZGlyZWN0bHkgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1PRFVMRV9UQVJCQUxMX05BTUUnPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0RUQl9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0RUQl9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0RUQl9MSU5LX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfRFRCX0xJTktfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gY29udHJvbCBrZXJuZWwgRGV2aWNlCisgICAgICAgICAgICAgICAgICAgIFRyZWUgQmluYXJ5IChEVEIpIGFydGlmYWN0IG5hbWVzIGluc3RlYWQgb2YgbWFuZ2xpbmcKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9JTUFHRV8qPC9maWxlbmFtZT4gdmFyaWFibGVzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0ZJVF9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0ZJVF9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGFuZAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0ZJVF9MSU5LX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfRklUX0xJTktfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZgorICAgICAgICAgICAgICAgICAgICBmbGF0dGVuZWQgaW1hZ2UgdHJlZSAoRklUKSBrZXJuZWwgaW1hZ2VzIHNpbWlsYXIgdG8gb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgZGVwbG95ZWQgYXJ0aWZhY3RzLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTU9EVUxFX1RBUkJBTExfTkFNRSc+PGZpbGVuYW1lPk1PRFVMRV9UQVJCQUxMX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NT0RVTEVfVEFSQkFMTF9MSU5LX05BTUUnPjxmaWxlbmFtZT5NT0RVTEVfVEFSQkFMTF9MSU5LX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgdmFsdWVzIG5vIGxvbmdlciBpbmNsdWRlIHRoZSAibW9kdWxlLSIgcHJlZml4IG9yCisgICAgICAgICAgICAgICAgICAgICIudGd6IiBzdWZmaXguCisgICAgICAgICAgICAgICAgICAgIFRoZXNlIHBhcnRzIGFyZSBub3cgaGFyZGNvZGVkIHNvIHRoYXQgdGhlIHZhbHVlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgY29uc2lzdGVudCB3aXRoIG90aGVyIGFydGlmYWN0IG5hbWluZyB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWRkZWQgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTklUUkFNRlNfTElOS19OQU1FJz48ZmlsZW5hbWU+SU5JVFJBTUZTX0xJTktfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBzbyB0aGF0IHRoZSBzeW1saW5rIGNhbiBiZSBjb250cm9sbGVkIHNpbWlsYXJseQorICAgICAgICAgICAgICAgICAgICB0byBvdGhlciBhcnRpZmFjdCB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5JVFJBTUZTX05BTUUnPjxmaWxlbmFtZT5JTklUUkFNRlNfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBub3cgdXNlcworICAgICAgICAgICAgICAgICAgICAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICIke1BWfS0ke1BSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9Iiwgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIG90aGVyIHZhcmlhYmxlcy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXNlcmlhbC1jb25zb2xlLWRlcHJlY2F0ZWQnPgorICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4gRGVwcmVjYXRlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TRVJJQUxfQ09OU09MRSc+PGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBoYXMgYmVlbiBmdW5jdGlvbmFsbHkgcmVwbGFjZWQgYnkgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU0VSSUFMX0NPTlNPTEVTJz48ZmlsZW5hbWU+U0VSSUFMX0NPTlNPTEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICB2YXJpYWJsZSBmb3Igc29tZSB0aW1lLgorICAgICAgICAgICAgV2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgcmVsZWFzZSwKKyAgICAgICAgICAgIDxmaWxlbmFtZT5TRVJJQUxfQ09OU09MRTwvZmlsZW5hbWU+IGhhcyBiZWVuIG9mZmljaWFsbHkgZGVwcmVjYXRlZC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4gd2lsbCBjb250aW51ZSB0byB3b3JrIGFzCisgICAgICAgICAgICBiZWZvcmUgZm9yIHRoZSAyLjYgcmVsZWFzZS4KKyAgICAgICAgICAgIEhvd2V2ZXIsIGZvciB0aGUgc2FrZSBvZiBmdXR1cmUgY29tcGF0aWJpbGl0eSwgaXQgaXMgcmVjb21tZW5kZWQKKyAgICAgICAgICAgIHRoYXQgeW91IHJlcGxhY2UgYWxsIGluc3RhbmNlcyBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4gd2l0aAorICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpbiB1c2FnZSBpcyB0aGF0CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFUzwvZmlsZW5hbWU+IGV4cGVjdHMgZW50cmllcyB0byBiZQorICAgICAgICAgICAgICAgIHNlcGFyYXRlZCB1c2luZyBzZW1pY29sb25zIGFzIGNvbXBhcmVkIHRvCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNFUklBTF9DT05TT0xFPC9maWxlbmFtZT4sIHdoaWNoIGV4cGVjdHMgc3BhY2VzLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtcG9reS1zZXRzLXVua25vd24tY29uZmlndXJlLW9wdGlvbi10by1xYS1lcnJvcic+CisgICAgICAgIDx0aXRsZT5Db25maWd1cmUgU2NyaXB0IFJlcG9ydHMgVW5rbm93biBPcHRpb25zIGFzIEVycm9yczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJZiB0aGUgY29uZmlndXJlIHNjcmlwdCByZXBvcnRzIGFuIHVua25vd24gb3B0aW9uLCB0aGlzIG5vdworICAgICAgICAgICAgdHJpZ2dlcnMgYSBRQSBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZy4KKyAgICAgICAgICAgIEFueSByZWNpcGVzIHRoYXQgcHJldmlvdXNseSBnb3QgYXdheSB3aXRoIHNwZWNpZnlpbmcgc3VjaCB1bmtub3duCisgICAgICAgICAgICBvcHRpb25zIG5vdyBuZWVkIHRvIGJlIGZpeGVkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtb3ZlcnJpZGUtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5PdmVycmlkZSBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBoYXZlIG9jY3VycmVkOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5UaGUgPGZpbGVuYW1lPnZpcnRjbGFzcy1uYXRpdmU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZpcnRjbGFzcy1uYXRpdmVzZGs8L2ZpbGVuYW1lPiBPdmVycmlkZXMgSGF2ZQorICAgICAgICAgICAgICAgICAgICBCZWVuIFJlbW92ZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT52aXJ0Y2xhc3MtbmF0aXZlPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT52aXJ0Y2xhc3MtbmF0aXZlc2RrPC9maWxlbmFtZT4gb3ZlcnJpZGVzIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgYmVlbiBkZXByZWNhdGVkIHNpbmNlIDIwMTIgaW4gZmF2b3Igb2YKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNsYXNzLW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Y2xhc3MtbmF0aXZlc2RrPC9maWxlbmFtZT4sIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgQm90aCA8ZmlsZW5hbWU+dmlydGNsYXNzLW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+dmlydGNsYXNzLW5hdGl2ZXNkazwvZmlsZW5hbWU+IGFyZSBub3cgZHJvcHBlZC4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPnZpcnRjbGFzcy1tdWx0aWxpYi08L2ZpbGVuYW1lPiBvdmVycmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtdWx0aWxpYiBhcmUgc3RpbGwgdmFsaWQuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGhlIDxmaWxlbmFtZT5mb3JjZXZhcmlhYmxlPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgT3ZlcnJpZGUgTm93IEhhcyBhIEhpZ2hlciBQcmlvcml0eSBUaGFuCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjPC9maWxlbmFtZT4gT3ZlcnJpZGVzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Zm9yY2V2YXJpYWJsZTwvZmlsZW5hbWU+IG92ZXJyaWRlIGlzCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50ZWQgdG8gYmUgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgb3ZlcnJpZGUuCisgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGR1ZSB0byBhIGxvbmctc3RhbmRpbmcgcXVpcmsgb2YgaG93CisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1PVkVSUklERVMnPjxmaWxlbmFtZT5PVkVSUklERVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgaXMgc2V0LCB0aGUgPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPiBvdmVycmlkZXMgKGUuZy4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmMtZ2xpYmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmMtbXVzbDwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpIGVycm9uZW91c2x5CisgICAgICAgICAgICAgICAgICAgIGhhZCBhIGhpZ2hlciBwcmlvcml0eS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyBpc3N1ZSBpcyBub3cgY29ycmVjdGVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5JdCBpcyBsaWtlbHkgdGhpcyBjaGFuZ2Ugd2lsbCBub3QgY2F1c2UgYW55CisgICAgICAgICAgICAgICAgICAgIHByb2JsZW1zLgorICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB3aXRoIHNvbWUgdW51c3VhbCBjb25maWd1cmF0aW9ucworICAgICAgICAgICAgICAgICAgICB0aGF0IHlvdSBtaWdodCBzZWUgYSBjaGFuZ2UgaW4gYmVoYXZpb3IgaWYgeW91IHdlcmUKKyAgICAgICAgICAgICAgICAgICAgcmVseWluZyBvbiB0aGUgcHJldmlvdXMgYmVoYXZpb3IuCisgICAgICAgICAgICAgICAgICAgIEJlIHN1cmUgdG8gY2hlY2sgaG93IHlvdSB1c2UKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvcmNldmFyaWFibGU8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmMtKjwvZmlsZW5hbWU+IG92ZXJyaWRlcyBpbiB5b3VyIGN1c3RvbQorICAgICAgICAgICAgICAgICAgICBsYXllcnMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZW5zdXJlIHRoZXkgbWFrZSBzZW5zZS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VGhlIDxmaWxlbmFtZT5idWlsZC0ke0JVSUxEX09TfTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIE92ZXJyaWRlIEhhcyBCZWVuIFJlbW92ZWQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5idWlsZC0ke0JVSUxEX09TfTwvZmlsZW5hbWU+LCB3aGljaCBpcworICAgICAgICAgICAgICAgICAgICB0eXBpY2FsbHkgPGZpbGVuYW1lPmJ1aWxkLWxpbnV4PC9maWxlbmFtZT4sIG92ZXJyaWRlIGhhcworICAgICAgICAgICAgICAgICAgICBiZWVuIHJlbW92ZWQgYmVjYXVzZSBidWlsZGluZyBvbiBhIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICBvdGhlciB0aGFuIGEgcmVjZW50IHZlcnNpb24gb2YgTGludXggaXMgbmVpdGhlciBzdXBwb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgbm9yIHJlY29tbWVuZGVkLgorICAgICAgICAgICAgICAgICAgICBEcm9wcGluZyB0aGUgb3ZlcnJpZGUgYXZvaWRzIGdpdmluZyB0aGUgaW1wcmVzc2lvbiB0aGF0CisgICAgICAgICAgICAgICAgICAgIG90aGVyIGhvc3Qgb3BlcmF0aW5nIHN5c3RlbXMgbWlnaHQgYmUgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSAiX3JlbW92ZSIgb3BlcmF0b3Igbm93IHByZXNlcnZlcyB3aGl0ZXNwYWNlLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHdoZW4gc3BlY2lmeWluZyBsaXN0IGl0ZW1zIHRvIHJlbW92ZSwgYmUKKyAgICAgICAgICAgICAgICAgICAgYXdhcmUgdGhhdCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlc3VsdGluZyBmcm9tCisgICAgICAgICAgICAgICAgICAgIHRoZSByZW1vdmFsIGlzIHJldGFpbmVkLjwvcGFyYT4KKworICAgICAgICAgICAgICAgICAgICA8cGFyYT5TZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19CQl9VUkw7I3JlbW92aW5nLW92ZXJyaWRlLXN0eWxlLXN5bnRheCc+UmVtb3ZhbCAoT3ZlcnJpZGUgU3R5bGUgU3ludGF4KTwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsIGZvciBhIGRldGFpbGVkIGV4YW1wbGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1zeXN0ZW1kLWNvbmZpZ3VyYXRpb24tbm93LXNwbGl0LW91dC10by1zeXN0ZW0tY29uZic+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+c3lzdGVtZDwvZmlsZW5hbWU+IENvbmZpZ3VyYXRpb24gaXMgTm93IFNwbGl0IEludG8gPGZpbGVuYW1lPnN5c3RlbWQtY29uZjwvZmlsZW5hbWU+PC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiByZWNpcGUKKyAgICAgICAgICAgIGhhcyBiZWVuIG1vdmVkIGludG8gYSA8ZmlsZW5hbWU+c3lzdGVtLWNvbmY8L2ZpbGVuYW1lPiByZWNpcGUuCisgICAgICAgICAgICBNb3ZpbmcgdGhpcyBjb25maWd1cmF0aW9uIHRvIGEgc2VwYXJhdGUgcmVjaXBlIGF2b2lkcyB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5zeXN0ZW1kPC9maWxlbmFtZT4gcmVjaXBlIGZyb20gYmVjb21pbmcgbWFjaGluZS1zcGVjaWZpYworICAgICAgICAgICAgZm9yIGNhc2VzIHdoZXJlIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgbmVlZCB0byBiZSBhcHBsaWVkCisgICAgICAgICAgICAoZS5nLiBmb3IgPGZpbGVuYW1lPnFlbXUqPC9maWxlbmFtZT4gbWFjaGluZXMpLgorICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBDdXJyZW50bHksIHRoZSBuZXcgcmVjaXBlIHBhY2thZ2VzIHRoZSBmb2xsb3dpbmcgZmlsZXM6CisgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZAorICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZgorICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYKKyAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mCisgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIElmIHlvdSBwcmV2aW91c2x5IHVzZWQgYmJhcHBlbmQgZmlsZXMgdG8gYXBwZW5kIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQ8L2ZpbGVuYW1lPiByZWNpcGUgdG8gY2hhbmdlIGFueSBvZiB0aGUKKyAgICAgICAgICAgIGxpc3RlZCBmaWxlcywgeW91IG11c3QgZG8gc28gZm9yIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPnN5c3RlbWQtY29uZjwvZmlsZW5hbWU+IHJlY2lwZSBpbnN0ZWFkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtYXV0b21hdGljLXRlc3RpbmctY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5BdXRvbWF0aWMgVGVzdGluZyBDaGFuZ2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCBhdXRvbWF0aWMgdGVzdGluZworICAgICAgICAgICAgY2hhbmdlczoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+PGZpbGVuYW1lPlRFU1RfSU1BR0U8L2ZpbGVuYW1lPiBWYXJpYWJsZSBSZW1vdmVkOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFByaW9yIHRvIHRoaXMgcmVsZWFzZSwgeW91IHNldCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfSU1BR0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSB0byAiMSIgdG8KKyAgICAgICAgICAgICAgICAgICAgZW5hYmxlIGF1dG9tYXRpYyB0ZXN0aW5nIGZvciBzdWNjZXNzZnVsbHkgYnVpbHQgaW1hZ2VzLgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPlRFU1RfSU1BR0U8L2ZpbGVuYW1lPiB2YXJpYWJsZSBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAgICAgZXhpc3RzIGFuZCBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRFU1RJTUFHRV9BVVRPJz48ZmlsZW5hbWU+VEVTVElNQUdFX0FVVE88L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluaGVyaXRpbmcgdGhlIDxmaWxlbmFtZT50ZXN0aW1hZ2U8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRlc3RzZGs8L2ZpbGVuYW1lPiBDbGFzc2VzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIEJlc3QgcHJhY3RpY2VzIG5vdyBkaWN0YXRlIHRoYXQgeW91IHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5JTUFHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHJhdGhlciB0aGFuIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItSU5IRVJJVCc+PGZpbGVuYW1lPklOSEVSSVQ8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgd2hlbiB5b3UgaW5oZXJpdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdHNkayc+PGZpbGVuYW1lPnRlc3RzZGs8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3NlcyB1c2VkIGZvciBhdXRvbWF0aWMgdGVzdGluZy4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LW9wZW5zc2wtY2hhbmdlcyc+CisgICAgICAgIDx0aXRsZT5PcGVuU1NMIENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvJz5PcGVuU1NMPC91bGluaz4gaGFzIGJlZW4KKyAgICAgICAgICAgIHVwZ3JhZGVkIGZyb20gMS4wIHRvIDEuMS4KKyAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoaXMgdXBncmFkZSBjb3VsZCBjYXVzZSBwcm9ibGVtcyBmb3IgcmVjaXBlcyB0aGF0CisgICAgICAgICAgICBoYXZlIGJvdGggdmVyc2lvbnMgaW4gdGhlaXIgZGVwZW5kZW5jeSBjaGFpbnMuCisgICAgICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IGJvdGggdmVyc2lvbnMgY2Fubm90IGJlIGluc3RhbGxlZCB0b2dldGhlcgorICAgICAgICAgICAgYXQgYnVpbGQgdGltZS4KKyAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGhhdmUgYm90aCB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyeSBhdCBydW50aW1lLgorICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtYml0YmFrZS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPkJpdEJha2UgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgc2VydmVyIGxvZ2ZpbGUgPGZpbGVuYW1lPmJpdGJha2UtY29va2VyZGFlbW9uLmxvZzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICBub3cgYWx3YXlzIHBsYWNlZCBpbiB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTIuNi1zZWN1cml0eS1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPlNlY3VyaXR5IENoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFBva3kgZGlzdHJpYnV0aW9uIG5vdyB1c2VzIHNlY3VyaXR5IGNvbXBpbGVyIGZsYWdzIGJ5CisgICAgICAgICAgICBkZWZhdWx0LgorICAgICAgICAgICAgSW5jbHVzaW9uIG9mIHRoZXNlIGZsYWdzIGNvdWxkIGNhdXNlIG5ldyBmYWlsdXJlcyBkdWUgdG8gc3RyaWN0ZXIKKyAgICAgICAgICAgIGNoZWNraW5nIGZvciB2YXJpb3VzIHBvdGVudGlhbCBzZWN1cml0eSBpc3N1ZXMgaW4gY29kZS4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXBvc3QtaW5zdGFsbGF0aW9uLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UG9zdCBJbnN0YWxsYXRpb24gQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBZb3UgbXVzdCBleHBsaWNpdGx5IG1hcmsgcG9zdCBpbnN0YWxscyB0byBkZWZlciB0byB0aGUgdGFyZ2V0LgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBkZWZlciBhIHBvc3RpbnN0YWxsIHRvIGZpcnN0IGJvb3Qgb24KKyAgICAgICAgICAgIHRoZSB0YXJnZXQgcmF0aGVyIHRoYW4gYXQgcm9vdGZzIGNyZWF0aW9uIHRpbWUsIHVzZQorICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4gb3IgY2FsbAorICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0LWludGVyY2VwdHMgZGVmZXJfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+IGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPiBzY3JpcHQKKyAgICAgICAgICAgIChpbmNsdWRpbmcgZXhpdCAxKSB0cmlnZ2VycyBhbiBlcnJvciBkdXJpbmcgdGhlCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtdGFza3Mtcm9vdGZzJz48ZmlsZW5hbWU+ZG9fcm9vdGZzPC9maWxlbmFtZT48L2xpbms+IHRhc2suCisgICAgICAgIDwvcGFyYT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHBvc3QtaW5zdGFsbGF0aW9uIGJlaGF2aW9yLCBzZWUgdGhlCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjbmV3LXJlY2lwZS1wb3N0LWluc3RhbGxhdGlvbi1zY3JpcHRzJz5Qb3N0LUluc3RhbGxhdGlvbiBTY3JpcHRzPC91bGluaz4iCisgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMi42LXB5dGhvbi0zLXByb2ZpbGUtZ3VpZGVkLW9wdGltaXphdGlvbnMnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIDMgUHJvZmlsZS1HdWlkZWQgT3B0aW1pemF0aW9uPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+cHl0aG9uMzwvZmlsZW5hbWU+IHJlY2lwZSBub3cgZW5hYmxlcyBwcm9maWxlLWd1aWRlZAorICAgICAgICAgICAgb3B0aW1pemF0aW9uLgorICAgICAgICAgICAgVXNpbmcgdGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgYSBsaXR0bGUgZXh0cmEgYnVpbGQgdGltZSBpbgorICAgICAgICAgICAgZXhjaGFuZ2UgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlIG9uIHRoZSB0YXJnZXQgYXQgcnVudGltZS4KKyAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgdGhlIG9wdGltaXphdGlvbiBpcyBvbmx5IGVuYWJsZWQgaWYgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgaGFzIHN1cHBvcnQgZm9yIHVzZXItbW9kZSBlbXVsYXRpb24gaW4gUUVNVSAoaS5lLiAicWVtdS11c2VybW9kZSIKKyAgICAgICAgICAgIGlzIGluCisgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORV9GRUFUVVJFUyc+PGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICB3aGljaCBpdCBpcyBieSBkZWZhdWx0KS4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSBQeXRob24gcHJvZmlsZS1ndWlkZWQgb3B0aW1pemF0aW9uCisgICAgICAgICAgICByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgdGhlbiBlbnN1cmUgdGhhdAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VDT05GSUcnPjxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICBmb3IgdGhlIDxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT4gcmVjaXBlIGRvZXMgbm90IGNvbnRhaW4gInBnbyIuCisgICAgICAgICAgICBZb3UgY291bGQgYWNjb21wbGlzaCB0aGUgbGF0dGVyIHVzaW5nIHRoZSBmb2xsb3dpbmcgYXQgdGhlCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGxldmVsOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQQUNLQUdFQ09ORklHX3JlbW92ZV9wbi1weXRob24zID0gInBnbyIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc2V0CisgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+IHVzaW5nIGFuIGFwcGVuZCBmaWxlIGZvciB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5weXRob24zPC9maWxlbmFtZT4gcmVjaXBlLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0yLjYtbWlzY2VsbGFuZW91cy1jaGFuZ2VzJz4KKyAgICAgICAgPHRpdGxlPk1pc2NlbGxhbmVvdXMgQ2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgZm9sbG93aW5nIG1pc2NlbGxhbmVvdXMgY2hhbmdlcyBvY2N1cnJlZDoKKyAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IHRvIHVzaW5nIHRoZSBUaHVtYi0yIGluc3RydWN0aW9uIHNldCBmb3IgYXJtdjdhCisgICAgICAgICAgICAgICAgICAgIGFuZCBhYm92ZS4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGhhdmUgYW55IGN1c3RvbSByZWNpcGVzIHRoYXQgYnVpbGQgc29mdHdhcmUgdGhhdAorICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBiZSBidWlsdCB3aXRoIHRoZSBBUk0gaW5zdHJ1Y3Rpb24gc2V0LCBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgIHJlY2lwZSB0byBzZXQgdGhlIGluc3RydWN0aW9uIHNldCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bi1wb3N0aW5zdHM8L2ZpbGVuYW1lPiBubyBsb25nZXIgdXNlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy8qLXBvc3RpbnN0czwvZmlsZW5hbWU+IGZvcgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZHBrZy9vcGtnPC9maWxlbmFtZT4gaW4gZmF2b3Igb2YgYnVpbHQtaW4KKyAgICAgICAgICAgICAgICAgICAgcG9zdGluc3Qgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICAgICAgUlBNIGJlaGF2aW9yIHJlbWFpbnMgdW5jaGFuZ2VkLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+Tk9JU088L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk5PSEREPC9maWxlbmFtZT4gdmFyaWFibGVzIGFyZSBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgICAgICAgICAgICAgWW91IG5vdyBjb250cm9sIGJ1aWxkaW5nIDxmaWxlbmFtZT4qLmlzbzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5oZGRpbWc8L2ZpbGVuYW1lPiBpbWFnZSB0eXBlcyBkaXJlY3RseQorICAgICAgICAgICAgICAgICAgICBieSB1c2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+c2NyaXB0cy9jb250cmliL21rZWZpZGlzay5zaDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgV2ljLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlczwvZmlsZW5hbWU+IGhhcyBiZWVuIHJlbW92ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBmb3IgPGZpbGVuYW1lPnFlbXVtaXBzPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5xZW11bWlwczY0PC9maWxlbmFtZT4gbWFjaGluZXMuCisgICAgICAgICAgICAgICAgICAgIFJlbW92YWwgYWxzbyBpbXBhY3RzIHRoZSA8ZmlsZW5hbWU+eDg2LWJhc2UuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2VuZXJpY3g4NjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdlbmVyaWN4ODYtNjQ8L2ZpbGVuYW1lPiByZXRhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5rZXJuZWwtbW9kdWxlczwvZmlsZW5hbWU+IGFzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBzZXR0aW5nLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5MR1BMdjJfV0hJVEVMSVNUX0dQTC0zLjA8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBoYXMgYmVlbiByZW1vdmVkLgorICAgICAgICAgICAgICAgICAgICBJZiB5b3UgYXJlIHNldHRpbmcgdGhpcyB2YXJpYWJsZSBpbiB5b3VyIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIHNldCBvciBhcHBlbmQgaXQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5XSElURUxJU1RfR1BMLTMuMDwvZmlsZW5hbWU+IHZhcmlhYmxlIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QVNORUVERUR9PC9maWxlbmFtZT4gaXMgbm93IGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEFSR0VUX0xERkxBR1MnPjxmaWxlbmFtZT5UQVJHRVRfTERGTEFHUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBkaXJlY3RseS4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHJlbWFpbmluZyBkZWZpbml0aW9ucyBmcm9tCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGhhdmUgYmVlbiBtb3ZlZCB0byBjb3JyZXNwb25kaW5nIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgRFNBIGhvc3Qga2V5cyBoYXMgYmVlbiBkcm9wcGVkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIE9wZW5TU0ggcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBzdGlsbCB1c2luZyBEU0Ega2V5cywgeW91IG11c3Qgc3dpdGNoIG92ZXIgdG8gYQorICAgICAgICAgICAgICAgICAgICBtb3JlIHNlY3VyZSBhbGdvcml0aG0gYXMgcmVjb21tZW5kZWQgYnkgT3BlblNTSCB1cHN0cmVhbS4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRoY3A8L2ZpbGVuYW1lPiByZWNpcGUgbm93IHVzZXMgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kaGNwZDYuY29uZjwvZmlsZW5hbWU+IGNvbmZpZ3VyYXRpb24gZmlsZSBpbgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGhjcGQ2LnNlcnZpY2U8L2ZpbGVuYW1lPiBmb3IgSVB2NiBESENQIHJhdGhlcgorICAgICAgICAgICAgICAgICAgICB0aGFuIHJlLXVzaW5nIDxmaWxlbmFtZT5kaGNwZC5jb25mPC9maWxlbmFtZT4sIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIG5vdyByZXNlcnZlZCBmb3IgSVB2NC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKzwvc2VjdGlvbj4KIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbAppbmRleCA3N2YyMWVkLi5kNjAyODUxIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCkBAIC00NDksMTIgKzQ0OSwxMyBAQAogICAgIDx0aXRsZT48ZmlsZW5hbWU+Y21ha2UuYmJjbGFzczwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGUgPGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT4gY2xhc3MgYWxsb3dzIGZvcgotICAgICAgICByZWNpcGVzIHRoYXQgbmVlZCB0byBidWlsZCBzb2Z0d2FyZSB1c2luZyB0aGUgQ01ha2UgYnVpbGQgc3lzdGVtLgorICAgICAgICBUaGUgPGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT4gY2xhc3MgYWxsb3dzIGZvciByZWNpcGVzIHRoYXQgbmVlZCB0bworICAgICAgICBidWlsZCBzb2Z0d2FyZSB1c2luZyB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9jbWFrZS5vcmcvb3ZlcnZpZXcvJz5DTWFrZTwvdWxpbms+IGJ1aWxkIHN5c3RlbS4KICAgICAgICAgWW91IGNhbiB1c2UgdGhlCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1FWFRSQV9PRUNNQUtFJz48ZmlsZW5hbWU+RVhUUkFfT0VDTUFLRTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICB2YXJpYWJsZSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZCBvbgotICAgICAgICB0aGUgPGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT4gY29tbWFuZCBsaW5lLgorICAgICAgICB2YXJpYWJsZSB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGJlIHBhc3NlZAorICAgICAgICB1c2luZyB0aGUgPGZpbGVuYW1lPmNtYWtlPC9maWxlbmFtZT4gY29tbWFuZCBsaW5lLgogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIApAQCAtNjQ1LDYgKzY0Niw1NCBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAorPHNlY3Rpb24gaWQ9J3JlZi1jbGFzc2VzLWRldnVwc3RyZWFtJz4KKyAgICA8dGl0bGU+PGZpbGVuYW1lPmRldnVwc3RyZWFtLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ1cHN0cmVhbTwvZmlsZW5hbWU+IGNsYXNzIHVzZXMKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCQ0xBU1NFWFRFTkQnPjxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIHRvIGFkZCBhIHZhcmlhbnQgb2YgdGhlIHJlY2lwZSB0aGF0IGZldGNoZXMgZnJvbSBhbiBhbHRlcm5hdGl2ZSBVUkkKKyAgICAgICAgKGUuZy4gR2l0KSBpbnN0ZWFkIG9mIGEgdGFyYmFsbC4KKyAgICAgICAgRm9sbG93aW5nIGlzIGFuIGV4YW1wbGU6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJDTEFTU0VYVEVORCA9ICJkZXZ1cHN0cmVhbTp0YXJnZXQiCisgICAgIFNSQ19VUklfY2xhc3MtZGV2dXBzdHJlYW0gPSAiZ2l0Oi8vZ2l0LmV4YW1wbGUuY29tL2V4YW1wbGUiCisgICAgIFNSQ1JFVl9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJhYmNkMTIzNCIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBBZGRpbmcgdGhlIGFib3ZlIHN0YXRlbWVudHMgdG8geW91ciByZWNpcGUgY3JlYXRlcyBhIHZhcmlhbnQgdGhhdCBoYXMKKyAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURFRkFVTFRfUFJFRkVSRU5DRSc+PGZpbGVuYW1lPkRFRkFVTFRfUFJFRkVSRU5DRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICBzZXQgdG8gIi0xIi4KKyAgICAgICAgQ29uc2VxdWVudGx5LCB5b3UgbmVlZCB0byBzZWxlY3QgdGhlIHZhcmlhbnQgb2YgdGhlIHJlY2lwZSB0byB1c2UgaXQuCisgICAgICAgIEFueSBkZXZlbG9wbWVudC1zcGVjaWZpYyBhZGp1c3RtZW50cyBjYW4gYmUgZG9uZSBieSB1c2luZyB0aGUKKyAgICAgICAgPGZpbGVuYW1lPmNsYXNzLWRldnVwc3RyZWFtPC9maWxlbmFtZT4gb3ZlcnJpZGUuCisgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBERVBFTkRTX2FwcGVuZF9jbGFzcy1kZXZ1cHN0cmVhbSA9ICIgZ3BlcmYtbmF0aXZlIgorCisgICAgIGRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLWRldnVwc3RyZWFtKCkgeworICAgICAgICB0b3VjaCAke1N9L1JFQURNRQorICAgICB9CisgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgVGhlIGNsYXNzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGNyZWF0aW5nIGEgZGV2ZWxvcG1lbnQgdmFyaWFudCBvZgorICAgICAgICB0aGUgdGFyZ2V0IHJlY2lwZSwgbm90IDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiBvcgorICAgICAgICA8ZmlsZW5hbWU+bmF0aXZlc2RrPC9maWxlbmFtZT4gdmFyaWFudHMuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoZSA8ZmlsZW5hbWU+QkJDTEFTU0VYVEVORDwvZmlsZW5hbWU+IHN5bnRheAorICAgICAgICAoaS5lLiA8ZmlsZW5hbWU+ZGV2dXBzdHJlYW06dGFyZ2V0PC9maWxlbmFtZT4pIHByb3ZpZGVzIHN1cHBvcnQgZm9yCisgICAgICAgIDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPm5hdGl2ZXNkazwvZmlsZW5hbWU+CisgICAgICAgIHZhcmlhbnRzLgorICAgICAgICBDb25zZXF1ZW50bHksIHRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYmUgYWRkZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgU3VwcG9ydCBmb3Igb3RoZXIgdmVyc2lvbiBjb250cm9sIHN5c3RlbXMgc3VjaCBhcyBTdWJ2ZXJzaW9uIGlzCisgICAgICAgIGxpbWl0ZWQgZHVlIHRvIEJpdEJha2UncyBhdXRvbWF0aWMgZmV0Y2ggZGVwZW5kZW5jaWVzIChlLmcuCisgICAgICAgIDxmaWxlbmFtZT5zdWJ2ZXJzaW9uLW5hdGl2ZTwvZmlsZW5hbWU+KS4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKIDxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1kaXN0cm9fZmVhdHVyZXNfY2hlY2snPgogICAgIDx0aXRsZT48ZmlsZW5hbWU+ZGlzdHJvX2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKQEAgLTEyNjYsMjggKzEzMTUsMzUgQEAKICAgICA8dGl0bGU+PGZpbGVuYW1lPmltYWdlX3R5cGVzLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IGNsYXNzIGRlZmluZXMgYWxsIG9mCi0gICAgICAgIHRoZSBzdGFuZGFyZCBpbWFnZSBvdXRwdXQgdHlwZXMgdGhhdCB5b3UgY2FuIGVuYWJsZSB0aHJvdWdoIHRoZQorICAgICAgICBUaGUgPGZpbGVuYW1lPmltYWdlX3R5cGVzPC9maWxlbmFtZT4gY2xhc3MgZGVmaW5lcyBhbGwgb2YgdGhlCisgICAgICAgIHN0YW5kYXJkIGltYWdlIG91dHB1dCB0eXBlcyB0aGF0IHlvdSBjYW4gZW5hYmxlIHRocm91Z2ggdGhlCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgWW91IGNhbiB1c2UgdGhpcyBjbGFzcyBhcyBhIHJlZmVyZW5jZSBvbiBob3cgdG8gYWRkIHN1cHBvcnQgZm9yIGN1c3RvbQotICAgICAgICBpbWFnZSBvdXRwdXQgdHlwZXMuCisgICAgICAgIFlvdSBjYW4gdXNlIHRoaXMgY2xhc3MgYXMgYSByZWZlcmVuY2Ugb24gaG93IHRvIGFkZCBzdXBwb3J0IGZvcgorICAgICAgICBjdXN0b20gaW1hZ2Ugb3V0cHV0IHR5cGVzLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGNsYXNzIGlzIGVuYWJsZWQgdGhyb3VnaCB0aGUKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5JTUFHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgIHZhcmlhYmxlIGluCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2UuYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPi4KLSAgICAgICAgSWYgeW91IGRlZmluZSB5b3VyIG93biBpbWFnZSB0eXBlcyB1c2luZyBhIGN1c3RvbSBCaXRCYWtlIGNsYXNzIGFuZAotICAgICAgICB0aGVuIHVzZSA8ZmlsZW5hbWU+SU1BR0VfQ0xBU1NFUzwvZmlsZW5hbWU+IHRvIGVuYWJsZSBpdCwgdGhlIGN1c3RvbQotICAgICAgICBjbGFzcyBtdXN0IGVpdGhlciBpbmhlcml0IDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IG9yCi0gICAgICAgIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IG11c3QgYWxzbyBhcHBlYXIgaW4KLSAgICAgICAgPGZpbGVuYW1lPklNQUdFX0NMQVNTRVM8L2ZpbGVuYW1lPi4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWltYWdlJz48ZmlsZW5hbWU+aW1hZ2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgY2xhc3MgYXV0b21hdGljYWxseSBlbmFibGVzIHRoZSA8ZmlsZW5hbWU+aW1hZ2VfdHlwZXM8L2ZpbGVuYW1lPiBjbGFzcy4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZTwvZmlsZW5hbWU+IGNsYXNzIHVzZXMgdGhlCisgICAgICAgIDxmaWxlbmFtZT5JTUdDTEFTU0VTPC9maWxlbmFtZT4gdmFyaWFibGUgYXMgZm9sbG93czoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBJTUdDTEFTU0VTID0gInJvb3Rmc18ke0lNQUdFX1BLR1RZUEV9IGltYWdlX3R5cGVzICR7SU1BR0VfQ0xBU1NFU30iCisgICAgIElNR0NMQVNTRVMgKz0gIiR7QFsncG9wdWxhdGVfc2RrX2Jhc2UnLCAncG9wdWxhdGVfc2RrX2V4dCddWydsaW51eCcgaW4gZC5nZXRWYXIoIlNES19PUyIpXX0iCisgICAgIElNR0NMQVNTRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfRlNUWVBFUycsICdsaXZlIGlzbyBoZGRpbWcnLCAnaW1hZ2UtbGl2ZScsICcnLCBkKX0iCisgICAgIElNR0NMQVNTRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GU1RZUEVTJywgJ2NvbnRhaW5lcicsICdpbWFnZS1jb250YWluZXInLCAnJywgZCl9IgorICAgICBJTUdDTEFTU0VTICs9ICJpbWFnZV90eXBlc193aWMiCisgICAgIElNR0NMQVNTRVMgKz0gInJvb3Rmcy1wb3N0Y29tbWFuZHMiCisgICAgIElNR0NMQVNTRVMgKz0gImltYWdlLXBvc3RpbnN0LWludGVyY2VwdHMiCisgICAgIGluaGVyaXQgJHtJTUdDTEFTU0VTfQorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoaXMgY2xhc3MgYWxzbyBoYW5kbGVzIGNvbnZlcnNpb24gYW5kIGNvbXByZXNzaW9uIG9mIGltYWdlcy4KKyAgICAgICAgVGhlIDxmaWxlbmFtZT5pbWFnZV90eXBlczwvZmlsZW5hbWU+IGNsYXNzIGFsc28gaGFuZGxlcyBjb252ZXJzaW9uIGFuZAorICAgICAgICBjb21wcmVzc2lvbiBvZiBpbWFnZXMuCiAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgVG8gYnVpbGQgYSBWTXdhcmUgVk1ESyBpbWFnZSwgeW91IG5lZWQgdG8gYWRkICJ3aWMudm1kayIgdG8KICAgICAgICAgICAgIDxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT4uCkBAIC0xMzE0LDE0ICsxMzcwLDYgQEAKICAgICAgICAgTm9ybWFsbHksIHlvdSBkbyBub3QgdXNlIHRoaXMgY2xhc3MgZGlyZWN0bHkuCiAgICAgICAgIEluc3RlYWQsIHlvdSBhZGQgImxpdmUiIHRvCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GU1RZUEVTJz48ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+PC9saW5rPi4KLSAgICAgICAgWW91IGNhbiBzZWxlY3RpdmVseSBidWlsZCBqdXN0IG9uZSBvZiB0aGVzZSB0eXBlcyB0aHJvdWdoIHRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTk9JU08nPjxmaWxlbmFtZT5OT0lTTzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICBhbmQKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU5PSEREJz48ZmlsZW5hbWU+Tk9IREQ8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGVzLgotICAgICAgICBGb3IgZXhhbXBsZSwgaWYgeW91IHdlcmUgYnVpbGRpbmcgYW4gSVNPIGltYWdlLCB5b3Ugd291bGQgYWRkICJsaXZlIgotICAgICAgICB0byA8ZmlsZW5hbWU+SU1BR0VfRlNUWVBFUzwvZmlsZW5hbWU+LCBzZXQgdGhlCi0gICAgICAgIDxmaWxlbmFtZT5OT0lTTzwvZmlsZW5hbWU+IHZhcmlhYmxlIHRvICIwIiBhbmQgdGhlIGJ1aWxkIHN5c3RlbSB3b3VsZAotICAgICAgICB1c2UgdGhlIDxmaWxlbmFtZT5pbWFnZS1saXZlPC9maWxlbmFtZT4gY2xhc3MgdG8gYnVpbGQgdGhlIElTTyBpbWFnZS4KICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKQEAgLTIxNzMsOCArMjIyMSw5IEBACiAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiBjbGFzcyBwcm92aWRlcyBjb21tb24KLSAgICAgICAgZnVuY3Rpb25hbGl0eSBmb3IgcmVjaXBlcyB0aGF0IHdpc2ggdG8gYnVpbGQgdG9vbHMgdG8gcnVuIG9uIHRoZSBidWlsZAotICAgICAgICBob3N0IChpLmUuIHRvb2xzIHRoYXQgdXNlIHRoZSBjb21waWxlciBvciBvdGhlciB0b29scyBmcm9tIHRoZQorICAgICAgICBmdW5jdGlvbmFsaXR5IGZvciByZWNpcGVzIHRoYXQgYnVpbGQgdG9vbHMgdG8gcnVuIG9uIHRoZQorICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvbGluaz4KKyAgICAgICAgKGkuZS4gdG9vbHMgdGhhdCB1c2UgdGhlIGNvbXBpbGVyIG9yIG90aGVyIHRvb2xzIGZyb20gdGhlCiAgICAgICAgIGJ1aWxkIGhvc3QpLgogICAgIDwvcGFyYT4KIApAQCAtMjE4MiwzMCArMjIzMSwzNSBAQAogICAgICAgICBZb3UgY2FuIGNyZWF0ZSBhIHJlY2lwZSB0aGF0IGJ1aWxkcyB0b29scyB0aGF0IHJ1biBuYXRpdmVseSBvbiB0aGUKICAgICAgICAgaG9zdCBhIGNvdXBsZSBkaWZmZXJlbnQgd2F5czoKICAgICAgICAgPGl0ZW1pemVkbGlzdD4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DcmVhdGUgYSA8cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tbmF0aXZlLmJiPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICB0aGF0IGluaGVyaXRzIHRoZSA8ZmlsZW5hbWU+bmF0aXZlPC9maWxlbmFtZT4gY2xhc3MuCisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIGEKKyAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4tbmF0aXZlLmJiPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICByZWNpcGUgdGhhdCBpbmhlcml0cyB0aGUgPGZpbGVuYW1lPm5hdGl2ZTwvZmlsZW5hbWU+IGNsYXNzLgogICAgICAgICAgICAgICAgIElmIHlvdSB1c2UgdGhpcyBtZXRob2QsIHlvdSBtdXN0IG9yZGVyIHRoZSBpbmhlcml0IHN0YXRlbWVudAogICAgICAgICAgICAgICAgIGluIHRoZSByZWNpcGUgYWZ0ZXIgYWxsIG90aGVyIGluaGVyaXQgc3RhdGVtZW50cyBzbyB0aGF0IHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5uYXRpdmU8L2ZpbGVuYW1lPiBjbGFzcyBpcyBpbmhlcml0ZWQgbGFzdC4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+V2FybmluZzwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIFdoZW4gY3JlYXRpbmcgYSByZWNpcGUgdGhpcyB3YXksIHRoZSByZWNpcGUgbmFtZSBtdXN0CisgICAgICAgICAgICAgICAgICAgIGZvbGxvdyB0aGlzIG5hbWluZyBjb252ZW50aW9uOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT5teXJlY2lwZTwvcmVwbGFjZWFibGU+LW5hdGl2ZS5iYgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5vdCB1c2luZyB0aGlzIG5hbWluZyBjb252ZW50aW9uIGNhbiBsZWFkIHRvIHN1YnRsZQorICAgICAgICAgICAgICAgICAgICBwcm9ibGVtcyBjYXVzZWQgYnkgZXhpc3RpbmcgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhhdAorICAgICAgICAgICAgICAgICAgICBuYW1pbmcgY29udmVudGlvbi4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Q3JlYXRlIG9yIG1vZGlmeSBhIHRhcmdldCByZWNpcGUgdGhhdCBjb250YWlucwotICAgICAgICAgICAgICAgIHRoZSBmb2xsb3dpbmc6CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgQ3JlYXRlIG9yIG1vZGlmeSBhIHRhcmdldCByZWNpcGUgdGhhdCBjb250YWlucyB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUJCQ0xBU1NFWFRFTkQnPjxmaWxlbmFtZT5CQkNMQVNTRVhURU5EPC9maWxlbmFtZT48L2xpbms+ID0gIm5hdGl2ZSIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgSW5zaWRlIHRoZSByZWNpcGUsIHVzZSA8ZmlsZW5hbWU+X2NsYXNzLW5hdGl2ZTwvZmlsZW5hbWU+IGFuZAogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5fY2xhc3MtdGFyZ2V0PC9maWxlbmFtZT4gb3ZlcnJpZGVzIHRvIHNwZWNpZnkgYW55CiAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSBzcGVjaWZpYyB0byB0aGUgcmVzcGVjdGl2ZSBuYXRpdmUgb3IgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgY2FzZS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICBjYXNlLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICA8L2l0ZW1pemVkbGlzdD4KLSAgICAgICAgPG5vdGU+PHRpdGxlPldhcm5pbmc8L3RpdGxlPgotICAgICAgICAgICAgV2hlbiBjcmVhdGluZyBhIHJlY2lwZSwgeW91IG11c3QgZm9sbG93IHRoaXMgbmFtaW5nIGNvbnZlbnRpb246Ci0gICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIG5hdGl2ZS08cmVwbGFjZWFibGU+bXlyZWNpcGU8L3JlcGxhY2VhYmxlPi5iYgotICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgTm90IGRvaW5nIHNvIGNhbiBsZWFkIHRvIHN1YnRsZSBwcm9ibGVtcyBiZWNhdXNlIGNvZGUgZXhpc3RzCi0gICAgICAgICAgICB0aGF0IGRlcGVuZHMgb24gdGhlIG5hbWluZyBjb252ZW50aW9uLgotICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC0zMTQ1LDEyICszMTk5LDYgQEAKICAgICAgICAgYW5kIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItU0lURUlORk9fQklUUyc+U0lURUlORk9fQklUUzwvbGluaz48L2ZpbGVuYW1lPgogICAgICAgICB0aGF0IGNhbiBiZSB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgbWV0YWRhdGEuCiAgICAgPC9wYXJhPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIEJlY2F1c2UgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWJhc2UnPjxmaWxlbmFtZT5iYXNlPC9maWxlbmFtZT48L2xpbms+IGNsYXNzCi0gICAgICAgIGluY2x1ZGVzIHRoZSA8ZmlsZW5hbWU+c2l0ZWluZm88L2ZpbGVuYW1lPiBjbGFzcywgaXQgaXMgYWx3YXlzIGFjdGl2ZS4KLSAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKIDxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1zcGR4Jz4KQEAgLTM1MDIsNiArMzU1MCwxNCBAQAogICAgICAgICBUaGUgY2xhc3NlcyBoYW5kbGUgbG9hZGluZyB0aGUgdGVzdHMgYW5kIHN0YXJ0aW5nIHRoZSBpbWFnZS4KICAgICAgICAgVG8gdXNlIHRoZSBjbGFzc2VzLCB5b3UgbmVlZCB0byBwZXJmb3JtIHN0ZXBzIHRvIHNldCB1cCB0aGUKICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgQmVzdCBwcmFjdGljZXMgaW5jbHVkZSB1c2luZworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5JTUFHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+IHRvCisgICAgICAgICAgICBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+dGVzdGltYWdlPC9maWxlbmFtZT4gY2xhc3MgZm9yIGF1dG9tYXRlZAorICAgICAgICAgICAgaW1hZ2UgdGVzdGluZy4KKyAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzUxOSw3ICszNTc1LDcgQEAKICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICBUaGUgPGZpbGVuYW1lPnRlc3RpbWFnZS1hdXRvPC9maWxlbmFtZT4gY2xhc3MgcnVucyB0ZXN0cyBvbiBhbiBpbWFnZQogICAgICAgICBhZnRlciB0aGUgaW1hZ2UgaXMgY29uc3RydWN0ZWQgKGkuZS4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRFU1RfSU1BR0UnPjxmaWxlbmFtZT5URVNUX0lNQUdFPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUSU1BR0VfQVVUTyc+PGZpbGVuYW1lPlRFU1RJTUFHRV9BVVRPPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgIG11c3QgYmUgc2V0IHRvICIxIikuCiAgICAgPC9wYXJhPgogCkBAIC0zNTQxLDYgKzM1OTcsMTQgQEAKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIGJpdGJha2UgLWMgdGVzdHNkayBpbWFnZQogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgIDxub3RlPjx0aXRsZT5UaXA8L3RpdGxlPgorICAgICAgICAgICAgQmVzdCBwcmFjdGljZXMgaW5jbHVkZSB1c2luZworICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0NMQVNTRVMnPjxmaWxlbmFtZT5JTUFHRV9DTEFTU0VTPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICByYXRoZXIgdGhhbgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUlOSEVSSVQnPjxmaWxlbmFtZT5JTkhFUklUPC9maWxlbmFtZT48L2xpbms+IHRvCisgICAgICAgICAgICBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+dGVzdHNkazwvZmlsZW5hbWU+IGNsYXNzIGZvciBhdXRvbWF0ZWQKKyAgICAgICAgICAgIFNESyB0ZXN0aW5nLgorICAgICAgICA8L25vdGU+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCmluZGV4IDlkNDkxZTEuLmY4MzRkMmQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCkBAIC0xMjMsMTQgKzEyMywxNCBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPlNlcHRlbWJlciAyMDE4PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41LjI8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNi4xPC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41LjIgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi42LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXJlbGVhc2UtcHJvY2Vzcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbAppbmRleCBjNjY1Y2Q5Li41ZWZlMTc0IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtcmVsZWFzZS1wcm9jZXNzLnhtbApAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFJ1bm5pbmcgPGZpbGVuYW1lPm9lLXNlbGZ0ZXN0PC9maWxlbmFtZT4gcmVxdWlyZXMKICAgICAgICAgICAgICAgICAgICAgaG9zdCBwYWNrYWdlcyBiZXlvbmQgdGhlICJFc3NlbnRpYWwiIGdyb3VwaW5nLgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz5SZXF1aXJlZCBQYWNrYWdlcyBmb3IgdGhlIEhvc3QgRGV2ZWxvcG1lbnQgU3lzdGVtPC9saW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBCdWlsZCBIb3N0PC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKaW5kZXggYWVhMWZkZi4uNjlkNGI0ZSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbApAQCAtNjYsNiArNjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJlbG93LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICAoV1NMKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2hhcmR3YXJlLWJ1aWxkLXN5c3RlbS10ZXJtJz5idWlsZCBob3N0PC9saW5rPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBpcyBydW5uaW5nIFdTTC4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgZW5jb3VudGVyIHByb2JsZW1zLCBwbGVhc2UgZ28gdG8KICAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19CVUdaSUxMQV9VUkw7Jz5Zb2N0byBQcm9qZWN0IEJ1Z3ppbGxhPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdWJtaXQgYSBidWcuCkBAIC04MCw0NiArODgsNDkgQEAKICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci08IS0tCi0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMC4wNDwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTAuMDQ8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDExLjEwPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxMi4wNCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTMuMTA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjA0IChMVFMpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTQuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE0LjEwPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNS4wNDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTUuMTA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VWJ1bnR1IDE1LjEwPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTYuMDQgKExUUyk8L3BhcmE+PC9saXN0aXRlbT4KLTwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSAxNiAoVmVybmUpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlVidW50dSAxNi4xMCAoTFRTKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5VYnVudHUgMTcuMDQ8L3BhcmE+PC9saXN0aXRlbT4KKzwhLS0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE2IChWZXJuZSk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIDE3IChTcGhlcmljYWwpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDE5IChTY2hyw7ZkaW5nZXIncyBDYXQpPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDIwIChIZWlzZW5idWcpPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgMTkgKFNjaHLDtmRpbmdlcidzIENhdCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjAgKEhlaXNlbmJ1Zyk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjI8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RmVkb3JhIHJlbGVhc2UgMjM8L3BhcmE+PC9saXN0aXRlbT4KLTwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDI0PC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNlbnRPUyByZWxlYXNlIDUuNiAoRmluYWwpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkZlZG9yYSByZWxlYXNlIDI0PC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5GZWRvcmEgcmVsZWFzZSAyNjwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjYgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjcgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA1LjggKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2LjMgKEZpbmFsKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgcmVsZWFzZSA2Lng8L3BhcmE+PC9saXN0aXRlbT4gLS0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkNlbnRPUyByZWxlYXNlIDcueDwvcGFyYT48L2xpc3RpdGVtPgotPCEtLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA2LjAgKFNxdWVlemUpPC9wYXJhPjwvbGlzdGl0ZW0+Cis8IS0tICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggNi4wIChTcXVlZXplKTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcueCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA4LnggKEplc3NpZSk8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA5LnggKFN0cmV0Y2gpPC9wYXJhPjwvbGlzdGl0ZW0+Ci08IS0tICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgorPCEtLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuMyAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNCAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNSAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDcuNiAoV2hlZXp5KTwvcGFyYT48L2xpc3RpdGVtPiAtLT4KLTwhLS0gICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDExLjQ8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+RGViaWFuIEdOVS9MaW51eCA3LjYgKFdoZWV6eSk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTEuNDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMi4xPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEyLjI8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTIuMzwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4xPC9wYXJhPjwvbGlzdGl0ZW0+IC0tPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSAxMy4yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPm9wZW5TVVNFIDEzLjE8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgMTMuMjwvcGFyYT48L2xpc3RpdGVtPiAtLT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+b3BlblNVU0UgNDIuMTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5vcGVuU1VTRSA0Mi4yPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgogCkBAIC0xMzIsOCArMTQzLDggQEAKICAgICAgICAgPC9ub3RlPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdyZXF1aXJlZC1wYWNrYWdlcy1mb3ItdGhlLWhvc3QtZGV2ZWxvcG1lbnQtc3lzdGVtJz4KLSAgICA8dGl0bGU+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+CisgICAgPHRpdGxlPlJlcXVpcmVkIFBhY2thZ2VzIGZvciB0aGUgQnVpbGQgSG9zdDwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB5b3UgbmVlZCBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gY2FuCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRhc2tzLnhtbAppbmRleCBlNmNmNjg2Li44ZjNmZjI2IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGFza3MueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10YXNrcy54bWwKQEAgLTU5NiwxNSArNTk2LDYgQEAKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KIAotICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3Mtcm1fd29ya19hbGwnPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmRvX3JtX3dvcmtfYWxsPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVG9wLWxldmVsIHRhc2sgZm9yIHJlbW92aW5nIHdvcmsgZmlsZXMgYWZ0ZXIgdGhlIGJ1aWxkIHN5c3RlbSBoYXMKLSAgICAgICAgICAgIGZpbmlzaGVkIHdpdGggdGhlbS4KLSAgICAgICAgPC9wYXJhPgotICAgIDwvc2VjdGlvbj4KLQogICAgIDxzZWN0aW9uIGlkPSdyZWYtdGFza3MtdW5wYWNrJz4KICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5kb191bnBhY2s8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKQEAgLTg5NSw3ICs4ODYsNyBAQAogICAgICAgICAgICAgQm9vdHMgYW4gaW1hZ2UgYW5kIHBlcmZvcm1zIHJ1bnRpbWUgdGVzdHMgd2l0aGluIHRoZSBpbWFnZQogICAgICAgICAgICAgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQgaGFzIGJlZW4gYnVpbHQuCiAgICAgICAgICAgICBUaGlzIHRhc2sgaXMgZW5hYmxlZCB3aGVuIHlvdSBzZXQKLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1URVNUX0lNQUdFJz48ZmlsZW5hbWU+VEVTVF9JTUFHRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRFU1RJTUFHRV9BVVRPJz48ZmlsZW5hbWU+VEVTVElNQUdFX0FVVE88L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgIGVxdWFsIHRvICIxIi4KICAgICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbAppbmRleCBjYzA5ZDNmLi5jNTczYTUyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKQEAgLTI5LDExICsyOSwzMSBAQAogICAgICAgICAgICAgICAgIGluZm9ybWF0aW9uIGluIHRoZSBzaW1pbGFybHktbmFtZWQgcmVjaXBlIGZpbGUuCiAgICAgICAgICAgICAgICAgRm9yIGFuIGV4YW1wbGUgb2YgYW4gYXBwZW5kIGZpbGUgaW4gdXNlLCBzZWUgdGhlCiAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3VzaW5nLWJiYXBwZW5kLWZpbGVzJz5Vc2luZyAuYmJhcHBlbmQgRmlsZXMgaW4gWW91ciBMYXllcjwvdWxpbms+IgotICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsLgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBBcHBlbmQgZmlsZXMgY2FuIGFsc28gdXNlIHdpbGRjYXJkIHBhdHRlcm5zIGluIHRoZWlyCi0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gbnVtYmVycyBzbyB0aGV5IGNhbiBiZSBhcHBsaWVkIHRvIG1vcmUgdGhhbiBvbmUKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiBvZiB0aGUgdW5kZXJseWluZyByZWNpcGUgZmlsZS4KKyAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC48L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT5XaGVuIHlvdSBuYW1lIGFuIGFwcGVuZCBmaWxlLCB5b3UgY2FuIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgd2lsZGNhcmQgY2hhcmFjdGVyIHRvIGFsbG93IGZvcgorICAgICAgICAgICAgICAgIG1hdGNoaW5nIHJlY2lwZSBuYW1lcy4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgc3VwcG9zZSB5b3UgaGF2ZSBhbiBhcHBlbmQgZmlsZSBuYW1lZCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYnVzeWJveF8xLjIxLiUuYmJhcHBlbmQKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgVGhhdCBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCBhbnkKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveF8xLjIxLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KKyAgICAgICAgICAgICAgICBTbywgdGhlIGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIHRoZSBmb2xsb3dpbmcgcmVjaXBlIG5hbWVzOgorICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgYnVzeWJveF8xLjIxLjEuYmIKKyAgICAgYnVzeWJveF8xLjIxLjIuYmIKKyAgICAgYnVzeWJveF8xLjIxLjMuYmIKKyAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgIFRoZSB1c2Ugb2YgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaXMgbGltaXRlZCBpbiB0aGF0IGl0IG9ubHkgd29ya3MgZGlyZWN0bHkgaW4gZnJvbnQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBwb3J0aW9uIG9mIHRoZSBhcHBlbmQgZmlsZSdzCisgICAgICAgICAgICAgICAgICAgIG5hbWUuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55IG90aGVyCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBuYW1lLgogICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nYml0YmFrZS10ZXJtJz4KQEAgLTMyOSw3ICszNDksNyBAQAogICAgICAgICAgICAgICAgIDxwYXJhPkl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSB0ZXJtICJwYWNrYWdlIiBjYW4sCiAgICAgICAgICAgICAgICAgaW4gZ2VuZXJhbCwgaGF2ZSBzdWJ0bGUgbWVhbmluZ3MuCiAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBwYWNrYWdlcyByZWZlcnJlZCB0byBpbiB0aGUKLSAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtcGFja2FnZXMtZm9yLXRoZS1ob3N0LWRldmVsb3BtZW50LXN5c3RlbSc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBIb3N0IERldmVsb3BtZW50IFN5c3RlbTwvbGluaz4iCisgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+UmVxdWlyZWQgUGFja2FnZXMgZm9yIHRoZSBCdWlsZCBIb3N0PC9saW5rPiIKICAgICAgICAgICAgICAgICBzZWN0aW9uIGFyZSBjb21waWxlZCBiaW5hcmllcyB0aGF0LCB3aGVuIGluc3RhbGxlZCwgYWRkCiAgICAgICAgICAgICAgICAgZnVuY3Rpb25hbGl0eSB0byB5b3VyIExpbnV4IGRpc3RyaWJ1dGlvbi48L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggZTg4Mzg5Ni4uOWU1MWI3NSAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTY3OSw2ICs2NzksMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIEJCX0FMTE9XRURfTkVUV09SS1MgPSAiKi5nbnUub3JnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+SW1wb3J0YW50PC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+VGhlIHVzZSBvZiB0aGUgIjxmaWxlbmFtZT4qPC9maWxlbmFtZT4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciBvbmx5IHdvcmtzIGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBob3N0IG5hbWUgYW5kIGl0IG11c3QgYmUgaXNvbGF0ZWQgZnJvbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBob3N0IG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIHRoZSB3aWxkY2FyZCBjaGFyYWN0ZXIgaW4gYW55CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIGxvY2F0aW9uIG9mIHRoZSBuYW1lIG9yIGNvbWJpbmVkIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyb250IHBhcnQgb2YgdGhlIG5hbWUuPC9wYXJhPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBleGFtcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Ki5mb28uYmFyPC9maWxlbmFtZT4gaXMgc3VwcG9ydGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSA8ZmlsZW5hbWU+KmFhLmZvby5iYXI8L2ZpbGVuYW1lPiBpcyBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlycm9ycyBub3QgaW4gdGhlIGhvc3QgbGlzdCBhcmUgc2tpcHBlZCBhbmQKQEAgLTExMzMsMTIgKzExNDcsMjIgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUJCRklMRVMnPjxnbG9zc3Rlcm0+QkJGSUxFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgQkJGSUxFU1tkb2NdID0gIkxpc3Qgb2YgcmVjaXBlIGZpbGVzIHVzZWQgYnkgQml0QmFrZSB0byBidWlsZCBzb2Z0d2FyZS4iCisgICAgICAgICAgICAgICAgQkJGSUxFU1tkb2NdID0gIkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmVjaXBlIGZpbGVzIEJpdEJha2UgdXNlcyB0byBidWlsZCBzb2Z0d2FyZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHJlY2lwZSBmaWxlcyB1c2VkIGJ5IEJpdEJha2UgdG8gYnVpbGQgc29mdHdhcmUuCisgICAgICAgICAgICAgICAgICAgIEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgcmVjaXBlIGZpbGVzIEJpdEJha2UgdXNlcyB0bworICAgICAgICAgICAgICAgICAgICBidWlsZCBzb2Z0d2FyZS4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgV2hlbiBzcGVjaWZ5aW5nIHJlY2lwZSBmaWxlcywgeW91IGNhbiBwYXR0ZXJuIG1hdGNoIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIFB5dGhvbidzCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9nbG9iLmh0bWwnPjxmaWxlbmFtZT5nbG9iPC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICBzeW50YXguCisgICAgICAgICAgICAgICAgICAgIEZvciBkZXRhaWxzIG9uIHRoZSBzeW50YXgsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBieQorICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmcgdGhlIHByZXZpb3VzIGxpbmsuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpAQCAtMTI2NywxNSArMTI5MSwxOSBAQAogICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbnkgb2YgdGhlIGV4cHJlc3Npb25zLgogICAgICAgICAgICAgICAgICAgICBJdCBpcyBhcyBpZiBCaXRCYWtlIGRvZXMgbm90IHNlZSB0aGVtIGF0IGFsbC4KICAgICAgICAgICAgICAgICAgICAgQ29uc2VxdWVudGx5LCBtYXRjaGluZyBmaWxlcyBhcmUgbm90IHBhcnNlZCBvciBvdGhlcndpc2UKLSAgICAgICAgICAgICAgICAgICAgdXNlZCBieSBCaXRCYWtlLjwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICAgdXNlZCBieSBCaXRCYWtlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKwogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWVzIHlvdSBwcm92aWRlIGFyZSBwYXNzZWQgdG8gUHl0aG9uJ3MgcmVndWxhcgogICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uIGNvbXBpbGVyLgorICAgICAgICAgICAgICAgICAgICBDb25zZXF1ZW50bHksIHRoZSBzeW50YXggZm9sbG93cyBQeXRob24ncyBSZWd1bGFyCisgICAgICAgICAgICAgICAgICAgIEV4cHJlc3Npb24gKHJlKSBzeW50YXguCiAgICAgICAgICAgICAgICAgICAgIFRoZSBleHByZXNzaW9ucyBhcmUgY29tcGFyZWQgYWdhaW5zdCB0aGUgZnVsbCBwYXRocyB0bwogICAgICAgICAgICAgICAgICAgICB0aGUgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgIEZvciBjb21wbGV0ZSBzeW50YXggaW5mb3JtYXRpb24sIHNlZSBQeXRob24ncwotICAgICAgICAgICAgICAgICAgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUgcmVsZWFzZSBhdAotICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnL3JlbGVhc2UvJz48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBhdAorICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9yZS5odG1sI3JlJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTEzMzYsNyArMTM2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQk1VTFRJQ09ORklHPC9maWxlbmFtZT4gaW4gYW4gZW52aXJvbm1lbnQgdGhhdAogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBidWlsZGluZyB0YXJnZXRzIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BsYXRkZXYtYnVpbGRpbmctdGFyZ2V0cy13aXRoLW11bHRpcGxlLWNvbmZpZ3VyYXRpb25zJz5CdWlsZGluZyBUYXJnZXRzIHdpdGggTXVsdGlwbGUgQ29uZmlndXJhdGlvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1idWlsZGluZy1pbWFnZXMtZm9yLW11bHRpcGxlLXRhcmdldHMtdXNpbmctbXVsdGlwbGUtY29uZmlndXJhdGlvbnMnPkJ1aWxkaW5nIEltYWdlcyBmb3IgTXVsdGlwbGUgVGFyZ2V0cyBVc2luZyBNdWx0aXBsZSBDb25maWd1cmF0aW9uczwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTQ0Myw2ICsxNDcxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNldCB1cCBkdXJpbmcgY29tcGlsYXRpb24gc28gdGhhdCB0aGV5IGFyZSBjb3JyZWN0IGZvcgogICAgICAgICAgICAgICAgICAgICB1c2Ugd2hlbiBpbnN0YWxsZWQgaW50byB0aGUgc3lzcm9vdCBhbmQgY2FsbGVkIGJ5IHRoZQogICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzZXMgb2Ygb3RoZXIgcmVjaXBlcy4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPkJJTkNPTkZJR19HTE9CPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHA6Ly90bGRwLm9yZy9MRFAvYWJzL2h0bWwvZ2xvYmJpbmdyZWYuaHRtbCc+c2hlbGwgZ2xvYmJpbmc8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHJlY29nbml0aW9uIGFuZCBleHBhbnNpb24gb2Ygd2lsZGNhcmRzIGR1cmluZworICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiBtYXRjaGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxsIGdsb2JiaW5nIGlzIHZlcnkgc2ltaWxhciB0bworICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi9saWJyYXJ5L2ZubWF0Y2guaHRtbCNtb2R1bGUtZm5tYXRjaCc+PGZpbGVuYW1lPmZubWF0Y2g8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFyeS9nbG9iLmh0bWwnPjxmaWxlbmFtZT5nbG9iPC9maWxlbmFtZT48L3VsaW5rPi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMjM2Niw2ICsyNDA1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIERlZmluZXMgd2lsZGNhcmRzIHRvIG1hdGNoIHdoZW4gaW5zdGFsbGluZyBhIGxpc3Qgb2YKICAgICAgICAgICAgICAgICAgICAgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBmb3IgYWxsIHRoZSBwYWNrYWdlcyBleHBsaWNpdGx5CiAgICAgICAgICAgICAgICAgICAgIChvciBpbXBsaWNpdGx5KSBpbnN0YWxsZWQgaW4gYW4gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5DT01QTEVNRU5UQVJZX0dMT0I8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdXNlcyBVbml4IGZpbGVuYW1lIHBhdHRlcm4gbWF0Y2hpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZm5tYXRjaC5odG1sI21vZHVsZS1mbm1hdGNoJz48ZmlsZW5hbWU+Zm5tYXRjaDwvZmlsZW5hbWU+PC91bGluaz4pLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggaXMgc2ltaWxhciB0byB0aGUgVW5peCBzdHlsZSBwYXRobmFtZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgICAgICBleHBhbnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICg8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgbGlzdCBvZiBjb21wbGVtZW50YXJ5IHBhY2thZ2VzIGlzIGFzc29jaWF0ZWQKICAgICAgICAgICAgICAgICAgICAgd2l0aCBhbiBpdGVtIHRoYXQgY2FuIGJlIGFkZGVkIHRvCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1JTUFHRV9GRUFUVVJFUyc+PGZpbGVuYW1lPklNQUdFX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LgpAQCAtNDU4Niw3ICs0NjMzLDEyIEBACiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIDxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+IG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9jbWFrZS5vcmcvb3ZlcnZpZXcvJz5DTWFrZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtY21ha2UnPjxmaWxlbmFtZT5jbWFrZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CkBAIC00NzgyLDIzICs0ODM0LDM4IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfS9teWRpcjEgJHtiaW5kaXJ9L215ZGlyMi9teWZpbGUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGVuIHNwZWNpZnlpbmcgZmlsZXMgb3IgcGF0aHMsIHlvdSBjYW4gcGF0dGVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCB1c2luZyBQeXRob24ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvZ2xvYi5odG1sJz48ZmlsZW5hbWU+Z2xvYjwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZGV0YWlscyBvbiB0aGUgc3ludGF4LCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24gYnkgZm9sbG93aW5nIHRoZSBwcmV2aW91cyBsaW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyBwYXRocyBhcyBwYXJ0IG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ29vZCBwcmFjdGljZSB0byB1c2UgYXBwcm9wcmlhdGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2UgPGZpbGVuYW1lPiR7c3lzY29uZmRpcn08L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiA8ZmlsZW5hbWU+L2V0YzwvZmlsZW5hbWU+LCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiaW5kaXJ9PC9maWxlbmFtZT4gcmF0aGVyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlc2UgdmFyaWFibGVzIGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3Agb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gZmluZCB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlvdXMgPGZpbGVuYW1lPkZJTEVTXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhpcyBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFdoZW4gc3BlY2lmeWluZyBwYXRocyBhcyBwYXJ0IG9mIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSwgaXQgaXMgZ29vZCBwcmFjdGljZQotICAgICAgICAgICAgICAgICAgICB0byB1c2UgYXBwcm9wcmlhdGUgcGF0aCB2YXJpYWJsZXMuCi0gICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB1c2UgPGZpbGVuYW1lPiR7c3lzY29uZmRpcn08L2ZpbGVuYW1lPiByYXRoZXIKLSAgICAgICAgICAgICAgICAgICAgdGhhbiA8ZmlsZW5hbWU+L2V0YzwvZmlsZW5hbWU+LCBvcgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+JHtiaW5kaXJ9PC9maWxlbmFtZT4gcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvYmluPC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgdGhlc2UgdmFyaWFibGVzIGF0IHRoZSB0b3Agb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvYml0YmFrZS5jb25mPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvbGluaz4uCi0gICAgICAgICAgICAgICAgICAgIFlvdSB3aWxsIGFsc28gZmluZCB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIHZhcmlvdXMKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZJTEVTXyo8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgaW4gdGhpcyBmaWxlLgotICAgICAgICAgICAgICAgIDwvbm90ZT4KLQogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiBzb21lIG9mIHRoZSBmaWxlcyB5b3UgcHJvdmlkZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RklMRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBhcmUgZWRpdGFibGUgYW5kIHlvdQpAQCAtNTE2Niw2ICs1MjMzLDI4IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1HQ0NWRVJTSU9OJz48Z2xvc3N0ZXJtPkdDQ1ZFUlNJT048L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEdDQ1ZFUlNJT05bZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiB0aGUgR05VIEMgQ29tcGlsZXIgKEdDQykgdG8gdXNlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoZSBHTlUgQyBDb21waWxlciAoR0NDKQorICAgICAgICAgICAgICAgICAgICB1c2VkIGZvciBjb21waWxhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPkdDQ1ZFUlNJT048L2ZpbGVuYW1lPiBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgIjgueCIgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBmaWxlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEdDQ1ZFUlNJT04gPz0gIjguJSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgdmFsdWUgYnkgc2V0dGluZyBpdCBpbiBhIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBzdWNoIGFzIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUdEQic+PGdsb3NzdGVybT5HREI8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIEdEQltkb2NdID0gIlRoZSBtaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyB0byBydW4gdGhlIEdOVSBEZWJ1Z2dlci4iCkBAIC02OTQwLDYgKzcwMjksNjEgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUlOSVRSQU1GU19MSU5LX05BTUUnPjxnbG9zc3Rlcm0+SU5JVFJBTUZTX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU5JVFJBTUZTX0xJTktfTkFNRVtkb2NdID0gIlRoZSBsaW5rIG5hbWUgb2YgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpbmsgbmFtZSBvZiB0aGUgaW5pdGlhbCBSQU0gZmlsZXN5c3RlbSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5JVFJBTUZTX0xJTktfTkFNRSA/PSAiaW5pdHJhbWZzLSR7S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSA8ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRTwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlIHNhbWUgZmlsZSwgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRSA/PSAiJHtNQUNISU5FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1NQUNISU5FJz48ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTklUUkFNRlNfTkFNRSc+PGdsb3NzdGVybT5JTklUUkFNRlNfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgSU5JVFJBTUZTX05BTUVbZG9jXSA9ICJUaGUgYmFzZSBuYW1lIG9mIHRoZSBpbml0aWFsIFJBTSBmaWxlc3lzdGVtIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGluaXRpYWwgUkFNIGZpbGVzeXN0ZW0gaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIElOSVRSQU1GU19OQU1FID89ICJpbml0cmFtZnMtJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0FSVElGQUNUX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1JTklUUkQnPjxnbG9zc3Rlcm0+SU5JVFJEPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBJTklUUkRbZG9jXSA9ICJJbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdGlhbCBSQU0gZGlzayAoaW5pdHJkKS4iCkBAIC03MzE2LDYgKzc0NjAsNDUgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9BUlRJRkFDVF9OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9BUlRJRkFDVF9OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRVtkb2NdID0gIlNwZWNpZmllcyB0aGUgbmFtZSBvZiBhbGwgb2YgdGhlIGJ1aWxkIGFydGlmYWN0cy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgdGhlIG5hbWUgb2YgYWxsIG9mIHRoZSBidWlsZCBhcnRpZmFjdHMuCisgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gY2hhbmdlIHRoZSBuYW1lIG9mIHRoZSBhcnRpZmFjdHMgYnkgY2hhbmdpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+IHZhcmlhYmxlLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9OQU1FPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiBtZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZyBkZWZhdWx0IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHRSc+PGZpbGVuYW1lPlBLR0U8L2ZpbGVuYW1lPjwvbGluaz4sCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dWJz48ZmlsZW5hbWU+UEtHVjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR1InPjxmaWxlbmFtZT5QS0dSPC9maWxlbmFtZT48L2xpbms+LAorICAgICAgICAgICAgICAgICAgICBhbmQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPklNQUdFX1ZFUlNJT05fU1VGRklYPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURBVEVUSU1FJz48ZmlsZW5hbWU+REFURVRJTUU8L2ZpbGVuYW1lPjwvbGluaz4uCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfQ0xBU1NFUyc+PGdsb3NzdGVybT5LRVJORUxfQ0xBU1NFUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgS0VSTkVMX0NMQVNTRVNbZG9jXSA9ICJBIGxpc3Qgb2YgY2xhc3NlcyBkZWZpbmluZyBrZXJuZWwgaW1hZ2UgdHlwZXMgdGhhdCBrZXJuZWwgY2xhc3Mgc2hvdWxkIGluaGVyaXQuIgpAQCAtNzM2NSw2ICs3NTQ4LDYxIEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfRFRCX0xJTktfTkFNRSc+PGdsb3NzdGVybT5LRVJORUxfRFRCX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0RUQl9MSU5LX05BTUVbZG9jXSA9ICJUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUgYmluYXJ5IChEVEIpLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBkZXZpY2UgdHJlZSBiaW5hcnkgKERUQikuCisgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2tlcm5lbC1hcnRpZmFjdC1uYW1lcy5iYmNsYXNzPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgZmlsZSBhcyBmb2xsb3dzOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9EVEJfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0RUQl9OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9EVEJfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0RUQl9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGRldmljZSB0cmVlIGJpbmFyeSAoRFRCKS4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBUaGUgYmFzZSBuYW1lIG9mIHRoZSBrZXJuZWwgZGV2aWNlIHRyZWUgYmluYXJ5IChEVEIpLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIGlzIHNldCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfRFRCX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9BUlRJRkFDVF9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0VYVFJBX0FSR1MnPjxnbG9zc3Rlcm0+S0VSTkVMX0VYVFJBX0FSR1M8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIEtFUk5FTF9FWFRSQV9BUkdTW2RvY10gPSAiU3BlY2lmaWVzIGFkZGl0aW9uYWwgbWFrZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHBhc3NlcyBvbiB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsLiIKQEAgLTc0MjIsMzggKzc2NjAsOTMgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgogICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi0gICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGwgPSAiIGNmZy92aXJ0aW8uc2NjIgorICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYgPSAiIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCisgICAgIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02NCA9ICIgY2ZnL3NvdW5kLnNjYyIgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD48L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKLSAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfSU1BR0VfQkFTRV9OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9JTUFHRV9CQVNFX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1LRVJORUxfRklUX0xJTktfTkFNRSc+PGdsb3NzdGVybT5LRVJORUxfRklUX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRVtkb2NdID0gIlRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBpbWFnZS4iCisgICAgICAgICAgICAgICAgS0VSTkVMX0ZJVF9MSU5LX05BTUVbZG9jXSA9ICJUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZmxhdHRlbmVkIGltYWdlIHRyZWUgKEZJVCkgaW1hZ2UuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGltYWdlLgorICAgICAgICAgICAgICAgICAgICBUaGUgbGluayBuYW1lIG9mIHRoZSBrZXJuZWwgZmxhdHRlbmVkIGltYWdlIHRyZWUgKEZJVCkgaW1hZ2UuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPmtlcm5lbDwvbGluaz4gY2xhc3MKLSAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzczwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIGZpbGUgYXMgZm9sbG93czoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBLRVJORUxfSU1BR0VfQkFTRV9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9LSR7REFURVRJTUV9IgorICAgICBLRVJORUxfRklUX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIDxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FID89ICIke01BQ0hJTkV9IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR0UnPjxmaWxlbmFtZT5QS0dFPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHVic+PGZpbGVuYW1lPlBLR1Y8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dSJz48ZmlsZW5hbWU+UEtHUjwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURBVEVUSU1FJz48ZmlsZW5hbWU+REFURVRJTUU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0ZJVF9OQU1FJz48Z2xvc3N0ZXJtPktFUk5FTF9GSVRfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0ZJVF9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGZsYXR0ZW5lZCBpbWFnZSB0cmVlIChGSVQpIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBmbGF0dGVuZWQgaW1hZ2UgdHJlZSAoRklUKSBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0ZJVF9OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1LRVJORUxfQVJUSUZBQ1RfTkFNRSc+PGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9OQU1FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCB3aGljaCBpcyBzZXQgaW4gdGhlIHNhbWUgZmlsZSwgaGFzIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0FSVElGQUNUX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKworICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLUtFUk5FTF9JTUFHRV9MSU5LX05BTUUnPjxnbG9zc3Rlcm0+S0VSTkVMX0lNQUdFX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgS0VSTkVMX0lNQUdFX0xJTktfTkFNRVtkb2NdID0gIlRoZSBsaW5rIG5hbWUgZm9yIHRoZSBrZXJuZWwgaW1hZ2UuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGxpbmsgbmFtZSBmb3IgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0lNQUdFX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIDxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FID89ICIke01BQ0hJTkV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTc0ODksNiArNzc4MiwzMSBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0lNQUdFX05BTUUnPjxnbG9zc3Rlcm0+S0VSTkVMX0lNQUdFX05BTUU8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIEtFUk5FTF9JTUFHRV9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIGltYWdlLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBpbWFnZS4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgS0VSTkVMX0lNQUdFX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLUtFUk5FTF9BUlRJRkFDVF9OQU1FJz48ZmlsZW5hbWU+S0VSTkVMX0FSVElGQUNUX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIHdoaWNoIGlzIHNldCBpbiB0aGUgc2FtZSBmaWxlLCBoYXMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICB2YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBLRVJORUxfQVJUSUZBQ1RfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfSR7SU1BR0VfVkVSU0lPTl9TVUZGSVh9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItS0VSTkVMX0lNQUdFVFlQRSc+PGdsb3NzdGVybT5LRVJORUxfSU1BR0VUWVBFPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBLRVJORUxfSU1BR0VUWVBFW2RvY10gPSAiVGhlIHR5cGUgb2Yga2VybmVsIHRvIGJ1aWxkIGZvciBhIGRldmljZSwgdXN1YWxseSBzZXQgYnkgdGhlIG1hY2hpbmUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgZGVmYXVsdHMgdG8gJ3pJbWFnZScuIgpAQCAtODkwMiwzNSArOTIyMCw2IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKLSAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NT0RVTEVfSU1BR0VfQkFTRV9OQU1FJz48Z2xvc3N0ZXJtPk1PRFVMRV9JTUFHRV9CQVNFX05BTUU8L2dsb3NzdGVybT4KLSAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIE1PRFVMRV9JTUFHRV9CQVNFX05BTUVbZG9jXSA9ICJUaGUgYmFzZSBuYW1lIG9mIHRoZSBrZXJuZWwgbW9kdWxlcyB0YXJiYWxsLiIKLSAgICAgICAgICAgIDwvaW5mbz4KLSAgICAgICAgICAgIDxnbG9zc2RlZj4KLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KLTwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGVzIHRhcmJhbGwuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgaXMgc2V0IGluIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1rZXJuZWwnPmtlcm5lbDwvbGluaz4gY2xhc3MKLSAgICAgICAgICAgICAgICAgICAgYXMgZm9sbG93czoKLSAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBNT0RVTEVfSU1BR0VfQkFTRV9OQU1FID89ICJtb2R1bGVzLSR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUEtHRSc+PGZpbGVuYW1lPlBLR0U8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QS0dWJz48ZmlsZW5hbWU+UEtHVjwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVBLR1InPjxmaWxlbmFtZT5QS0dSPC9maWxlbmFtZT48L2xpbms+LAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4sCi0gICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItREFURVRJTUUnPjxmaWxlbmFtZT5EQVRFVElNRTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotICAgICAgICAgICAgPC9nbG9zc2RlZj4KLSAgICAgICAgPC9nbG9zc2VudHJ5PgotCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTU9EVUxFX1RBUkJBTExfREVQTE9ZJz48Z2xvc3N0ZXJtPk1PRFVMRV9UQVJCQUxMX0RFUExPWTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgTU9EVUxFX1RBUkJBTExfREVQTE9ZW2RvY10gPSAiQ29udHJvbHMgY3JlYXRpb24gb2YgdGhlIG1vZHVsZXMtKi50Z3ogZmlsZS4gU2V0IHRoaXMgdmFyaWFibGUgdG8gIjAiIHRvIGRpc2FibGUgY3JlYXRpb24gb2YgdGhpcyBmaWxlLCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGtlcm5lbCBtb2R1bGVzIHJlc3VsdGluZyBmcm9tIGEga2VybmVsIGJ1aWxkLiIKQEAgLTg5NDcsNiArOTIzNiw2MSBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTU9EVUxFX1RBUkJBTExfTElOS19OQU1FJz48Z2xvc3N0ZXJtPk1PRFVMRV9UQVJCQUxMX0xJTktfTkFNRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTU9EVUxFX1RBUkJBTExfTElOS19OQU1FW2RvY10gPSAiVGhlIGxpbmsgbmFtZSBvZiB0aGUga2VybmVsIG1vZHVsZSB0YXJiYWxsLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBsaW5rIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTU9EVUxFX1RBUkJBTExfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgPGZpbGVuYW1lPktFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUU8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+PGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTU9EVUxFX1RBUkJBTExfTkFNRSc+PGdsb3NzdGVybT5NT0RVTEVfVEFSQkFMTF9OQU1FPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBNT0RVTEVfVEFSQkFMTF9OQU1FW2RvY10gPSAiVGhlIGJhc2UgbmFtZSBvZiB0aGUga2VybmVsIG1vZHVsZSB0YXJiYWxsLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIG5hbWUgb2YgdGhlIGtlcm5lbCBtb2R1bGUgdGFyYmFsbC4KKyAgICAgICAgICAgICAgICAgICAgVGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3M8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTU9EVUxFX1RBUkJBTExfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItS0VSTkVMX0FSVElGQUNUX05BTUUnPjxmaWxlbmFtZT5LRVJORUxfQVJUSUZBQ1RfTkFNRTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSwgd2hpY2ggaXMgc2V0IGluIHRoZSBzYW1lIGZpbGUsIGhhcyB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIEtFUk5FTF9BUlRJRkFDVF9OQU1FID89ICIke1BLR0V9LSR7UEtHVn0tJHtQS0dSfS0ke01BQ0hJTkV9JHtJTUFHRV9WRVJTSU9OX1NVRkZJWH0iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKIDwhLS0KICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1NVUxUSU1BQ0hfSE9TVF9TWVMnPjxnbG9zc3Rlcm0+TVVMVElNQUNIX0hPU1RfU1lTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KQEAgLTkwNTgsNiArOTQwMiw0MCBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9fR0VORVJJQ19MSUNFTlNFJz48Z2xvc3N0ZXJtPk5PX0dFTkVSSUNfTElDRU5TRTwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgTk9fR0VORVJJQ19MSUNFTlNFW2RvY10gPSAiVXNlZCB0byBhbGxvdyBjb3B5aW5nIGEgbGljZW5zZSB0aGF0IGRvZXMgbm90IGV4aXN0IGluIGNvbW1vbiBsaWNlbnNlcy4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBBdm9pZHMgUUEgZXJyb3JzIHdoZW4geW91IHVzZSBhIG5vbi1jb21tb24sIG5vbi1DTE9TRUQKKyAgICAgICAgICAgICAgICAgICAgbGljZW5zZSBpbiBhIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZXMgZXhpc3QsIHN1Y2ggYXMgdGhlIGxpbnV4LWZpcm13YXJlIHBhY2thZ2UsIHdpdGgKKyAgICAgICAgICAgICAgICAgICAgbWFueSBsaWNlbnNlcyB0aGF0IGFyZSBub3QgaW4gYW55IHdheSBjb21tb24uCisgICAgICAgICAgICAgICAgICAgIEFsc28sIG5ldyBsaWNlbnNlcyBhcmUgYWRkZWQgb2NjYXNpb25hbGx5IHRvIGF2b2lkCisgICAgICAgICAgICAgICAgICAgIGludHJvZHVjaW5nIGEgbG90IG9mIGNvbW1vbiBsaWNlbnNlIGZpbGVzLCB3aGljaCBhcmUgb25seQorICAgICAgICAgICAgICAgICAgICBhcHBsaWNhYmxlIHRvIGEgc3BlY2lmaWMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk5PX0dFTkVSSUNfTElDRU5TRTwvZmlsZW5hbWU+IGlzIHVzZWQgdG8gYWxsb3cKKyAgICAgICAgICAgICAgICAgICAgY29weWluZyBhIGxpY2Vuc2UgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb21tb24gbGljZW5zZXMuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgdG8gYWRkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5OT19HRU5FUklDX0xJQ0VOU0U8L2ZpbGVuYW1lPiB0byBhIHJlY2lwZToKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBOT19HRU5FUklDX0xJQ0VOU0VbPHJlcGxhY2VhYmxlPmxpY2Vuc2VfbmFtZTwvcmVwbGFjZWFibGU+XSA9ICI8cmVwbGFjZWFibGU+bGljZW5zZV9maWxlX2luX2ZldGNoZWRfc291cmNlPC9yZXBsYWNlYWJsZT4iCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIHRoYXQgdXNlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkxJQ0VOU0UuQWJpbGlzLnR4dDwvZmlsZW5hbWU+IGZpbGUgYXMgdGhlIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgZmV0Y2hlZCBzb3VyY2U6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5TRS5BYmlsaXMudHh0IgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItTk9fUkVDT01NRU5EQVRJT05TJz48Z2xvc3N0ZXJtPk5PX1JFQ09NTUVOREFUSU9OUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+CiAgICAgICAgICAgICAgICAgTk9fUkVDT01NRU5EQVRJT05TW2RvY10gPSAiV2hlbiBzZXQgdG8gJzEnLCBubyByZWNvbW1lbmRlZCBwYWNrYWdlcyB3aWxsIGJlIGluc3RhbGxlZC4gU29tZSByZWNvbW1lbmRlZCBwYWNrYWdlcyBtaWdodCBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBzeXN0ZW0gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBrZXJuZWwtbW9kdWxlcy4gSXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gYWRkIHBhY2thZ2VzIHRvIElNQUdFX0lOU1RBTEwgYXMgbmVlZGVkLiIKQEAgLTkxNDEsNDQgKzk1MTksNiBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KLQotICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU5PSEREJz48Z2xvc3N0ZXJtPk5PSEREPC9nbG9zc3Rlcm0+Ci0gICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBOT0hERFtkb2NdID0gIkNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBza2lwIGJ1aWxkaW5nIHRoZSAuaGRkaW1nIGltYWdlLiIKLSAgICAgICAgICAgIDwvaW5mbz4KLSAgICAgICAgICAgIDxnbG9zc2RlZj4KLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KLTwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+Ci0gICAgICAgICAgICAgICAgICAgIENhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBza2lwIGJ1aWxkaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LmhkZGltZzwvZmlsZW5hbWU+IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPk5PSEREPC9maWxlbmFtZT4gdmFyaWFibGUgaXMgdXNlZCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1pbWFnZS1saXZlJz48ZmlsZW5hbWU+aW1hZ2UtbGl2ZTwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICBjbGFzcy4KLSAgICAgICAgICAgICAgICAgICAgU2V0IHRoZSB2YXJpYWJsZSB0byAiMSIgdG8gcHJldmVudCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi5oZGRpbWc8L2ZpbGVuYW1lPiBpbWFnZSBmcm9tIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvZ2xvc3NkZWY+Ci0gICAgICAgIDwvZ2xvc3NlbnRyeT4KLQotICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLU5PSVNPJz48Z2xvc3N0ZXJtPk5PSVNPPC9nbG9zc3Rlcm0+Ci0gICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBOT0lTT1tkb2NdID0gIkNhdXNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBza2lwIGJ1aWxkaW5nIHRoZSBJU08gaW1hZ2UuIgotICAgICAgICAgICAgPC9pbmZvPgotICAgICAgICAgICAgPGdsb3NzZGVmPgotICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgotPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgQ2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNraXAgYnVpbGRpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgIElTTyBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5OT0lTTzwvZmlsZW5hbWU+IHZhcmlhYmxlIGlzIHVzZWQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtaW1hZ2UtbGl2ZSc+PGZpbGVuYW1lPmltYWdlLWxpdmU8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgY2xhc3MuCi0gICAgICAgICAgICAgICAgICAgIFNldCB0aGUgdmFyaWFibGUgdG8gIjEiIHRvIHByZXZlbnQgdGhlIElTTyBpbWFnZSBmcm9tCi0gICAgICAgICAgICAgICAgICAgIGJlaW5nIGJ1aWx0LgotICAgICAgICAgICAgICAgICAgICBUbyBlbmFibGUgYnVpbGRpbmcgYW4gSVNPIGltYWdlLCBzZXQgdGhlIHZhcmlhYmxlIHRvICIwIi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L2dsb3NzZGVmPgotICAgICAgICA8L2dsb3NzZW50cnk+Ci0KICAgICA8L2dsb3NzZGl2PgogCiAgICAgPGdsb3NzZGl2IGlkPSd2YXItZ2xvc3Nhcnktbyc+PHRpdGxlPk88L3RpdGxlPgpAQCAtOTYxMiw2ICs5OTUyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi5kZWJ1ZyIgcHJldmlvdXNseSBkZXNjcmliZWQgd2l0aCB0aGUgZXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBubyBzb3VyY2UgZmlsZXMgYXJlIGluc3RhbGxlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4uCisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlYnVnLXdpdGgtc3JjcGtnIjogVGhlIHNhbWUgYmVoYXZpb3IgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLmRlYnVnIiBwcmV2aW91c2x5IGRlc2NyaWJlZCB3aXRoIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFsbCBzb3VyY2UgZmlsZXMgYXJlIHBsYWNlZCBpbiBhIHNlcGFyYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiotc3JjPC9maWxlbmFtZT4gcGtnLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTk5OTEsOSArMTAzMzcsOSBAQAogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIHRoZSBiYXNpYyBibG9jayBzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gImYxIGYyIGYzIC4uLiIKLSAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiLS13aXRoLWYxLC0td2l0aG91dC1mMSxidWlsZC1kZXBzLWYxLHJ0LWRlcHMtZjEiCi0gICAgIFBBQ0tBR0VDT05GSUdbZjJdID0gIi0td2l0aC1mMiwtLXdpdGhvdXQtZjIsYnVpbGQtZGVwcy1mMixydC1kZXBzLWYyIgotICAgICBQQUNLQUdFQ09ORklHW2YzXSA9ICItLXdpdGgtZjMsLS13aXRob3V0LWYzLGJ1aWxkLWRlcHMtZjMscnQtZGVwcy1mMyIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMV0gPSAiLS13aXRoLWYxLC0td2l0aG91dC1mMSxidWlsZC1kZXBzLWYxLHJ0LWRlcHMtZjEscnQtcmVjcy1mMSIKKyAgICAgUEFDS0FHRUNPTkZJR1tmMl0gPSAiLS13aXRoLWYyLC0td2l0aG91dC1mMixidWlsZC1kZXBzLWYyLHJ0LWRlcHMtZjIscnQtcmVjcy1mMiIKKyAgICAgUEFDS0FHRUNPTkZJR1tmM10gPSAiLS13aXRoLWYzLC0td2l0aG91dC1mMyxidWlsZC1kZXBzLWYzLHJ0LWRlcHMtZjMscnQtcmVjcy1mMyIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTAwMDIsNyArMTAzNDgsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpdHNlbGYgc3BlY2lmaWVzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzIHRvIGVuYWJsZS4KICAgICAgICAgICAgICAgICAgICAgRm9sbG93aW5nIHRoZSBmZWF0dXJlcywgeW91IGNhbiBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIG9mCi0gICAgICAgICAgICAgICAgICAgIGVhY2ggZmVhdHVyZSBieSBwcm92aWRpbmcgdXAgdG8gZm91ciBvcmRlci1kZXBlbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgZWFjaCBmZWF0dXJlIGJ5IHByb3ZpZGluZyB1cCB0byBmaXZlIG9yZGVyLWRlcGVuZGVudAogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG9taXQgYW55IGFyZ3VtZW50IHlvdSBsaWtlIGJ1dCBtdXN0IHJldGFpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGluZyBjb21tYXMuCkBAIC0xMDAyOCw2ICsxMDM3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUkRFUEVORFMnPjxmaWxlbmFtZT5SREVQRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBhZGRlZCBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFkZGl0aW9uYWwgcnVudGltZSByZWNvbW1lbmRhdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVJSRUNPTU1FTkRTJz48ZmlsZW5hbWU+UlJFQ09NTUVORFM8L2ZpbGVuYW1lPjwvbGluaz4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBzaG91bGQgYmUgYWRkZWQgaWYgdGhlIGZlYXR1cmUgaXMgZW5hYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEwMDc2LDcgKzEwNDI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFDS0FHRUNPTkZJRzwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gZWl0aGVyIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUEFDS0FHRUNPTkZJRz0iZjQgZjUiCisgICAgICBQQUNLQUdFQ09ORklHID0gImY0IGY1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPciwgeW91IGNhbiBqdXN0IGFwcGVuZCB0aGUgdmFyaWFibGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMTAwOTAsNyArMTA0NDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIHdpdGggYXBwZW5kIGZpbGVzIHByZXZpb3VzbHkgZGVzY3JpYmVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBjYW4gZWl0aGVyIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUEFDS0FHRUNPTkZJR19wbi08cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+PSJmNCBmNSIKKyAgICAgUEFDS0FHRUNPTkZJR19wbi08cmVwbGFjZWFibGU+cmVjaXBlbmFtZTwvcmVwbGFjZWFibGU+ID0gImY0IGY1IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPciwgeW91IGNhbiBqdXN0IGFtZW5kIHRoZSB2YXJpYWJsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMDcwOCwxNyArMTEwNTgsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgdG8gYnVpbGQuCiAgICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgd29ya3MgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtYmxhY2tsaXN0Jz48ZmlsZW5hbWU+YmxhY2tsaXN0PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgIGNsYXNzLCB3aGljaCB0aGUgcmVjaXBlIG11c3QgaW5oZXJpdCBnbG9iYWxseS4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MsIHdoaWNoIGlzIGluaGVyaXRlZCBnbG9iYWxseS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVG8gcHJldmVudCBhIHJlY2lwZSBmcm9tIGJlaW5nIGJ1aWx0LCBpbmhlcml0IHRoZSBjbGFzcwotICAgICAgICAgICAgICAgICAgICBnbG9iYWxseSBhbmQgdXNlIHRoZSB2YXJpYWJsZSBpbiB5b3VyCisgICAgICAgICAgICAgICAgICAgIFRvIHByZXZlbnQgYSByZWNpcGUgZnJvbSBiZWluZyBidWlsdCwgdXNlIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+UE5CTEFDS0xJU1Q8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbiB5b3VyCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5sb2NhbC5jb25mPC9maWxlbmFtZT4gZmlsZS4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgcHJldmVudHMKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm15cmVjaXBlPC9maWxlbmFtZT4gZnJvbSBiZWluZyBidWlsdDoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBJTkhFUklUICs9ICJibGFja2xpc3QiCiAgICAgIFBOQkxBQ0tMSVNUW215cmVjaXBlXSA9ICJOb3Qgc3VwcG9ydGVkIGJ5IG91ciBvcmdhbml6YXRpb24uIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTA4OTYsNDcgKzExMjQ1LDYzIEBACiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgcmVjaXBlcyBhdmFpbGFibGUsIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCByZWNpcGUgc2hvdWxkIGJlIGdpdmVuIHByZWZlcmVuY2UuCisgICAgICAgICAgICAgICAgICAgIElmIG11bHRpcGxlIHZlcnNpb25zIG9mIHJlY2lwZXMgZXhpc3QsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgZGV0ZXJtaW5lcyB3aGljaCB2ZXJzaW9uIGlzIGdpdmVuIHByZWZlcmVuY2UuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsd2F5cyBzdWZmaXggdGhlIHZhcmlhYmxlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+PGZpbGVuYW1lPlBOPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIHlvdSB3YW50IHRvIHNlbGVjdCwgYW5kIHlvdSBzaG91bGQgc2V0IHRoZQogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICBhY2NvcmRpbmdseSBmb3IgcHJlY2VkZW5jZS4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiB1c2UgdGhlICI8ZmlsZW5hbWU+JTwvZmlsZW5hbWU+IiBjaGFyYWN0ZXIgYXMgYQotICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZCB0byBtYXRjaCBhbnkgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIHdoaWNoIGNhbiBiZQotICAgICAgICAgICAgICAgICAgICB1c2VmdWwgd2hlbiBzcGVjaWZ5aW5nIHZlcnNpb25zIHRoYXQgY29udGFpbiBsb25nIHJldmlzaW9uCi0gICAgICAgICAgICAgICAgICAgIG51bWJlcnMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBsaW1pdGVkIHdpbGRjYXJkIHVzZSB0aHJvdWdoIHRoZQorICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGUgY2hhcmFjdGVyIHRvIG1hdGNoIGFueSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVycywgd2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIHNwZWNpZnlpbmcgdmVyc2lvbnMKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjb250YWluIGxvbmcgcmV2aXNpb24gbnVtYmVycyB0aGF0IHBvdGVudGlhbGx5IGNoYW5nZS4KICAgICAgICAgICAgICAgICAgICAgSGVyZSBhcmUgdHdvIGV4YW1wbGVzOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBSRUZFUlJFRF9WRVJTSU9OX3B5dGhvbiA9ICIzLjQuMCIKICAgICAgUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPSAiNC4xMiUiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgc3BlY2lmaWVkIHZlcnNpb24gaXMgbWF0Y2hlZCBhZ2FpbnN0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1hdGNoIHRoZSB2ZXJzaW9uIHBhcnQgb2YKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZWNpcGUncyBmaWxlbmFtZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0d28gcmVjaXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb18xLjIuYmI8L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fZ2l0LmJiPC9maWxlbmFtZT4gd2hlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fZ2l0LmJiPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFYgPSAiMS4xK2dpdCR7U1JDUFZ9IgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgY29ycmVjdCB3YXkgdG8gc2VsZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vX2dpdC5iYjwvZmlsZW5hbWU+IGlzIGJ5IHVzaW5nIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50IHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1ZFUlNJT05fZm9vID0gIjEuMStnaXQlIgotICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSB0aGF0IHByZXZpb3VzIGV4YW1wbGUgYWdhaW5zdCB0aGUgZm9sbG93aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNvcnJlY3QgZXhhbXBsZSwgd2hpY2ggZG9lcyBub3Qgd29yazoKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUFJFRkVSUkVEX1ZFUlNJT05fZm9vID0gImdpdCIKLSAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPkltcG9ydGFudDwvdGl0bGU+CisgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdXNlIG9mIHRoZSAiPGZpbGVuYW1lPiU8L2ZpbGVuYW1lPiIgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBpcyBsaW1pdGVkIGluIHRoYXQgaXQgb25seSB3b3JrcyBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgdGhlIHdpbGRjYXJkIGNoYXJhY3RlciBpbiBhbnkgb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uIG9mIHRoZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHNwZWNpZmllZCB2ZXJzaW9uIGlzIG1hdGNoZWQgYWdhaW5zdAorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC9saW5rPiwKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggZG9lcyBub3QgbmVjZXNzYXJpbHkgbWF0Y2ggdGhlIHZlcnNpb24gcGFydCBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgcmVjaXBlJ3MgZmlsZW5hbWUuCisgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCBjb25zaWRlciB0d28gcmVjaXBlcworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vXzEuMi5iYjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Zm9vX2dpdC5iYjwvZmlsZW5hbWU+IHdoZXJlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb29fZ2l0LmJiPC9maWxlbmFtZT4gY29udGFpbnMgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50OgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBWID0gIjEuMStnaXQke1NSQ1BWfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBjb3JyZWN0IHdheSB0byBzZWxlY3QKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmZvb19naXQuYmI8L2ZpbGVuYW1lPiBpcyBieSB1c2luZyBhbgorICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50IHN1Y2ggYXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBQUkVGRVJSRURfVkVSU0lPTl9mb28gPSAiMS4xK2dpdCUiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgQ29tcGFyZSB0aGF0IHByZXZpb3VzIGV4YW1wbGUgYWdhaW5zdCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgIGluY29ycmVjdCBleGFtcGxlLCB3aGljaCBkb2VzIG5vdCB3b3JrOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBSRUZFUlJFRF9WRVJTSU9OX2ZvbyA9ICJnaXQiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgU29tZXRpbWVzIHRoZSA8ZmlsZW5hbWU+UFJFRkVSUkVEX1ZFUlNJT048L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBjYW4gYmUgc2V0IGJ5IGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYSB3YXkgdGhhdAogICAgICAgICAgICAgICAgICAgICBpcyBoYXJkIHRvIGNoYW5nZS4KQEAgLTEyNTY2LDIyICsxMjkzMSwzMyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItU0RLX1RJVExFJz48Z2xvc3N0ZXJtPlNES19USVRMRTwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgU0RLX1RJVExFW2RvY10gPSAiU3BlY2lmaWVzIGEgdGl0bGUgdG8gYmUgcHJpbnRlZCB3aGVuIHJ1bm5pbmcgdGhlIFNESyBpbnN0YWxsZXIuIgorICAgICAgICAgICAgICAgIFNES19USVRMRVtkb2NdID0gIlRoZSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLIGluc3RhbGxlci4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CiA8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBTcGVjaWZpZXMgYSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxlci4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5TREtfVElUTEU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBkZWZhdWx0cyB0bwotICAgICAgICAgICAgICAgICAgICAiPHJlcGxhY2VhYmxlPmRpc3RybzwvcmVwbGFjZWFibGU+IFNESyIgZm9yIHRoZSBzdGFuZGFyZAotICAgICAgICAgICAgICAgICAgICBTREsgYW5kICI8cmVwbGFjZWFibGU+ZGlzdHJvPC9yZXBsYWNlYWJsZT4gRXh0ZW5zaWJsZSBTREsiCi0gICAgICAgICAgICAgICAgICAgIGZvciB0aGUgZXh0ZW5zaWJsZSBTREssIHdoZXJlCi0gICAgICAgICAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5kaXN0cm88L3JlcGxhY2VhYmxlPiBpcyB0aGUgZmlyc3Qgb25lIG9mCisgICAgICAgICAgICAgICAgICAgIFRoZSB0aXRsZSB0byBiZSBwcmludGVkIHdoZW4gcnVubmluZyB0aGUgU0RLIGluc3RhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB0aXRsZSBpcyBiYXNlZCBvbiB0aGUKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RST19OQU1FJz48ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgb3IKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIHNldCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIGFuZCBpcyBzZXQgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXBvcHVsYXRlLXNkay0qJz48ZmlsZW5hbWU+cG9wdWxhdGVfc2RrX2Jhc2U8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtfVElUTEUgPz89ICIke0BkLmdldFZhcignRElTVFJPX05BTUUnKSBvciBkLmdldFZhcignRElTVFJPJyl9IFNESyIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIGRlZmF1bHQgZGlzdHJpYnV0aW9uICJwb2t5IiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlNES19USVRMRTwvZmlsZW5hbWU+IGlzIHNldCB0bworICAgICAgICAgICAgICAgICAgICAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIuCisgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIEZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY2hhbmdlIHRoaXMgZGVmYXVsdCB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfU0RLX1VSTDsjc2RrLWNoYW5naW5nLXRoZS1zZGstaW5zdGFsbGVyLXRpdGxlJz5DaGFuZ2luZyB0aGUgRXh0ZW5zaWJsZSBTREsgSW5zdGFsbGVyIFRpdGxlPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KQEAgLTEyNjQwLDYgKzEzMDE2LDM2IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1TREtFWFRQQVRIJz48Z2xvc3N0ZXJtPlNES0VYVFBBVEg8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFNES0VYVFBBVEhbZG9jXSA9ICJUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciB0aGUgZXh0ZW5zaWJsZSBTREsuIgorICAgICAgICAgICAgPC9pbmZvPgorICAgICAgICAgICAgPGdsb3NzZGVmPgorICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgorPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBmb3IgdGhlIEV4dGVuc2libGUgU0RLLgorICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCB0aGlzIGRpcmVjdG9yeSBpcyBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLURJU1RSTyc+PGZpbGVuYW1lPkRJU1RSTzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhbmQgaXMgc2V0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L2xpbms+CisgICAgICAgICAgICAgICAgICAgIGNsYXNzIGFzIGZvbGxvd3M6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgU0RLRVhUUEFUSCA/Pz0gIn4vJHtAZC5nZXRWYXIoJ0RJU1RSTycpfV9zZGsiCisgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBkZWZhdWx0IGRpc3RyaWJ1dGlvbiAicG9reSIsIHRoZQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+U0RLRVhUUEFUSDwvZmlsZW5hbWU+IGlzIHNldCB0byAicG9reV9zZGsiLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGNoYW5nZSB0aGlzIGRlZmF1bHQgZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstY2hhbmdpbmctdGhlLWRlZmF1bHQtc2RrLWluc3RhbGxhdGlvbi1kaXJlY3RvcnknPkNoYW5naW5nIHRoZSBEZWZhdWx0IFNESyBJbnN0YWxsYXRpb24gRGlyZWN0b3J5PC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESykgbWFudWFsLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNES0lNQUdFX0ZFQVRVUkVTJz48Z2xvc3N0ZXJtPlNES0lNQUdFX0ZFQVRVUkVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBTREtJTUFHRV9GRUFUVVJFU1tkb2NdID0gIkVxdWl2YWxlbnQgdG8gSU1BR0VfRkVBVFVSRVMuIEhvd2V2ZXIsIHRoaXMgdmFyaWFibGUgYXBwbGllcyB0byB0aGUgU0RLIGdlbmVyYXRlZCBmcm9tIGFuIGltYWdlIHVzaW5nIHRoZSBjb21tYW5kICdiaXRiYWtlIC1jIHBvcHVsYXRlX3NkayBpbWFnZW5hbWUnLiIKQEAgLTEzNTA2LDcgKzEzOTEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU1JUlJPUlMnPjxmaWxlbmFtZT5NSVJST1JTPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgICAgIGFuZCA8bGluayBsaW5rZW5kPSd2YXItUFJFTUlSUk9SUyc+PGZpbGVuYW1lPlBSRU1JUlJPUlM8L2ZpbGVuYW1lPjwvbGluaz4KICAgICAgICAgICAgICAgICAgICAgYW5kIHBvaW50cyB0byB0aGUgY2FjaGUgbG9jYXRpb25zIHRvIGNoZWNrIGZvciB0aGUgc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgIG9iamVjdHMuCisgICAgICAgICAgICAgICAgICAgIHN0YXRlIChzc3RhdGUpIG9iamVjdHMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xMzUxOSw2ICsxMzkyNSwyNSBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBXaGVuIHBvaW50aW5nIHRvIHNzdGF0ZSBidWlsZCBhcnRpZmFjdHMgb24gYW5vdGhlciBtYWNoaW5lCisgICAgICAgICAgICAgICAgICAgIHRoYXQgdXNlcyBhIGRpZmZlcmVudCBHQ0MgdmVyc2lvbiBmb3IgbmF0aXZlIGJ1aWxkcywKKyAgICAgICAgICAgICAgICAgICAgeW91IG11c3QgY29uZmlndXJlIDxmaWxlbmFtZT5TU1RBVEVfTUlSUk9SPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG1hcHMgbG9jYWwgc2VhcmNoIHBhdGhzCisgICAgICAgICAgICAgICAgICAgIHRvIHNlcnZlciBwYXRocy4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHBhdGhzIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLU5BVElWRUxTQlNUUklORyc+PGZpbGVuYW1lPk5BVElWRUxTQlNUUklORzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBzZXQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXVuaW5hdGl2ZSc+PGZpbGVuYW1lPnVuaW5hdGl2ZTwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBjbGFzcy4KKyAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgbWFwcyB0aGUgbG9jYWwgc2VhcmNoIHBhdGgKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnVuaXZlcnNhbC00Ljk8L2ZpbGVuYW1lPiB0byB0aGUgc2VydmVyLXByb3ZpZGVkCisgICAgICAgICAgICAgICAgICAgIHBhdGggPHJlcGxhY2VhYmxlPnNlcnZlcl91cmxfc3N0YXRlX3BhdGg8L3JlcGxhY2VhYmxlPjoKKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTU1RBVEVfTUlSUk9SUyA/PSBmaWxlOi8vdW5pdmVyc2FsLTQuOS8oLiopIGh0dHA6Ly88cmVwbGFjZWFibGU+c2VydmVyX3VybF9zc3RhdGVfcGF0aDwvcmVwbGFjZWFibGU+L3VuaXZlcnNhbC00LjgvXDEgXG4KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBJZiBhIG1pcnJvciB1c2VzIHRoZSBzYW1lIHN0cnVjdHVyZSBhcwogICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItU1NUQVRFX0RJUic+PGZpbGVuYW1lPlNTVEFURV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4sCiAgICAgICAgICAgICAgICAgICAgIHlvdSBuZWVkIHRvIGFkZApAQCAtMTQ4NjAsNiArMTUyODUsMjYgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQyc+PGdsb3NzdGVybT5UQ0xJQkM8L2dsb3NzdGVybT4KKyAgICAgICAgICAgIDxpbmZvPgorICAgICAgICAgICAgICAgIFRDTElCQ1tkb2NdID0gIlNwZWNpZmllcyBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdnbGliYycsICdtdXNsJyBvciAibmV3bGliLiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgR05VIHN0YW5kYXJkIEMgbGlicmFyeQorICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmxpYmM8L2ZpbGVuYW1lPikgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZQorICAgICAgICAgICAgICAgICAgICBidWlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgICAgICBUaGlzIHZhcmlhYmxlIHJlcGxhY2VzIDxmaWxlbmFtZT5QT0tZTElCQzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNlbGVjdCAiZ2xpYmMiLCAibXVzbCIsICJuZXdsaWIiLCBvciAiYmFyZW1ldGFsIgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgIDwvZ2xvc3NkZWY+CisgICAgICAgIDwvZ2xvc3NlbnRyeT4KKwogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTElCQ0FQUEVORCc+PGdsb3NzdGVybT5UQ0xJQkNBUFBFTkQ8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIFRDTElCQ0FQUEVORFtkb2NdID0gIlNwZWNpZmllcyBhIHN1ZmZpeCBhcHBlbmRlZCB0byBUTVBESVIgdGhhdCBpZGVudGlmaWVzIHRoZSBsaWJjIHZhcmlhbnQgZm9yIHRoZSBidWlsZC4iCkBAIC0xNDg5MSwyNSArMTUzMzYsNiBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCi0gICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVENMSUJDJz48Z2xvc3N0ZXJtPlRDTElCQzwvZ2xvc3N0ZXJtPgotICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgVENMSUJDW2RvY10gPSAiU3BlY2lmaWVzIEdOVSBzdGFuZGFyZCBDIGxpYnJhcnkgKGxpYmMpIHZhcmlhbnQgdG8gdXNlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gWW91IGNhbiBzZWxlY3QgJ2dsaWJjJyBvciAnbXVzbCcuIgotICAgICAgICAgICAgPC9pbmZvPgotICAgICAgICAgICAgPGdsb3NzZGVmPgotICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgotPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSBHTlUgc3RhbmRhcmQgQyBsaWJyYXJ5ICg8ZmlsZW5hbWU+bGliYzwvZmlsZW5hbWU+KQotICAgICAgICAgICAgICAgICAgICB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAgICAgICAgIFRoaXMgdmFyaWFibGUgcmVwbGFjZXMgPGZpbGVuYW1lPlBPS1lMSUJDPC9maWxlbmFtZT4sIHdoaWNoIGlzIG5vIGxvbmdlcgotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQuCi0gICAgICAgICAgICAgICAgPC9wYXJhPgotCi0gICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gc2VsZWN0ICJnbGliYyIgb3IgIm11c2wiLgotICAgICAgICAgICAgICAgIDwvcGFyYT4KLSAgICAgICAgICAgIDwvZ2xvc3NkZWY+Ci0gICAgICAgIDwvZ2xvc3NlbnRyeT4KLQogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRDTU9ERSc+PGdsb3NzdGVybT5UQ01PREU8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgogICAgICAgICAgICAgICAgIFRDTU9ERVtkb2NdID0gIkVuYWJsZXMgYW4gZXh0ZXJuYWwgdG9vbGNoYWluICh3aGVyZSBwcm92aWRlZCBieSBhbiBhZGRpdGlvbmFsIGxheWVyKSBpZiBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuICdkZWZhdWx0Jy4iCkBAIC0xNTAxNyw0MSArMTU0NDMsNiBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCi0gICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEVTVF9JTUFHRSc+PGdsb3NzdGVybT5URVNUX0lNQUdFPC9nbG9zc3Rlcm0+Ci0gICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBURVNUX0lNQUdFW2RvY10gPSAiRW5hYmxlcyB0ZXN0IGJvb3Rpbmcgb2YgdmlydHVhbCBtYWNoaW5lIGltYWdlcyB1bmRlciB0aGUgUUVNVSBlbXVsYXRvciBhZnRlciBhbnkgcm9vdCBmaWxlc3lzdGVtcyBhcmUgY3JlYXRlZCBhbmQgcnVucyB0ZXN0cyBhZ2FpbnN0IHRob3NlIGltYWdlcy4iCi0gICAgICAgICAgICA8L2luZm8+Ci0gICAgICAgICAgICA8Z2xvc3NkZWY+Ci0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Ci08IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgotICAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IHJ1bnMgdGhlIHNlcmllcyBvZiBhdXRvbWF0ZWQgdGVzdHMgZm9yCi0gICAgICAgICAgICAgICAgICAgIGltYWdlcyB3aGVuIGFuIGltYWdlIGlzIHN1Y2Nlc3NmdWxseSBidWlsdC4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgVGhlc2UgdGVzdHMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIG1ha2luZyB1c2Ugb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bml0dGVzdDwvZmlsZW5hbWU+IG1vZHVsZSwgYW5kIHRoZSBtYWpvcml0eSBvZgotICAgICAgICAgICAgICAgICAgICB0aGVtIHJ1biBjb21tYW5kcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBvdmVyCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSB0byAiMSIgaW4geW91cgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICAgICAgICAgICAgICB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgcnVuCi0gICAgICAgICAgICAgICAgICAgIHRoZXNlIHRlc3RzIGFmdGVyIGFuIGltYWdlIHN1Y2Nlc3NmdWxseSBidWlsZHM6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVEVTVF9JTUFHRSA9ICIxIgotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGVuYWJsaW5nLCBydW5uaW5nLCBhbmQgd3JpdGluZwotICAgICAgICAgICAgICAgICAgICB0aGVzZSB0ZXN0cywgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjcGVyZm9ybWluZy1hdXRvbWF0ZWQtcnVudGltZS10ZXN0aW5nJz5QZXJmb3JtaW5nIEF1dG9tYXRlZCBSdW50aW1lIFRlc3Rpbmc8L3VsaW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgYW5kCi0gICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtdGVzdGltYWdlKic+PGZpbGVuYW1lPnRlc3RpbWFnZSouYmJjbGFzczwvZmlsZW5hbWU+PC9saW5rPiIKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICAgICA8L2dsb3NzZGVmPgotICAgICAgICA8L2dsb3NzZW50cnk+Ci0KICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1URVNUX0xPR19ESVInPjxnbG9zc3Rlcm0+VEVTVF9MT0dfRElSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBURVNUX0xPR19ESVJbZG9jXSA9ICJIb2xkcyB0aGUgU1NIIGxvZyBhbmQgdGhlIGJvb3QgbG9nIGZvciBRRU1VIG1hY2hpbmVzLiBUaGUgVEVTVF9MT0dfRElSIHZhcmlhYmxlIGRlZmF1bHRzIHRvICIke1dPUktESVJ9L3Rlc3RpbWFnZSIuIgpAQCAtMTUyMTEsOSArMTU2MDIsOSBAQAogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgY29udHJvbGxlciB0byB1c2Ugd2hlbiBydW5uaW5nIHRlc3RzCiAgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgYSB0ZXN0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAicWVtdSI6CisgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IGNvbnRyb2xsZXIgdG8gdXNlIGlzICJRZW11VGFyZ2V0IjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBURVNUX1RBUkdFVCA9ICJxZW11IgorICAgICBURVNUX1RBUkdFVCA9ICJRZW11VGFyZ2V0IgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0xNTIzMiwzNSArMTU2MjMsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXJndW1lbnRzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlRFU1RfVEFSR0VUPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJxZW11IiBhbmQgIlFlbXVUYXJnZXQiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJRZW11VGFyZ2V0Ijo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvb3RzIGEgUUVNVSBpbWFnZSBhbmQgcnVucyB0aGUgdGVzdHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNxZW11LWltYWdlLWVuYWJsaW5nLXRlc3RzJz5FbmFibGluZyBSdW50aW1lIFRlc3RzIG9uIFFFTVU8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4ic2ltcGxlcmVtb3RlIiBhbmQgIlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+IlNpbXBsZVJlbW90ZVRhcmdldCI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5zIHRoZSB0ZXN0cyBvbiB0YXJnZXQgaGFyZHdhcmUgdGhhdCBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXAgYW5kIHJ1bm5pbmcuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhcmR3YXJlIGNhbiBiZSBvbiB0aGUgbmV0d29yayBvciBpdCBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIGRldmljZSBydW5uaW5nIGFuIGltYWdlIG9uIFFFTVUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG11c3QgYWxzbyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVEVTVF9UQVJHRVRfSVAnPjxmaWxlbmFtZT5URVNUX1RBUkdFVF9JUDwvZmlsZW5hbWU+PC9saW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4geW91IHVzZSAic2ltcGxlcmVtb3RlIiBvciAiU2ltcGxlUmVtb3RlVGFyZ2V0Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSB1c2UgIlNpbXBsZVJlbW90ZVRhcmdldCIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJndW1lbnQgaXMgZGVmaW5lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5PC9maWxlbmFtZT4uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBzbWFsbCBjYXBzIG5hbWVzIGFyZSBrZXB0IGZvciBjb21wYXRpYmlsaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iR3VtbWlib290VGFyZ2V0Ijo8L2VtcGhhc2lzPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgZGVwbG95cyBhbmQgcnVucyB0ZXN0cyBvbiBhbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSS1lbmFibGVkIG1hY2hpbmUgdGhhdCBoYXMgYSBtYXN0ZXIgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgYXJndW1lbnQgaXMgZGVmaW5lZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weTwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9zaW1wbGVyZW1vdGUucHk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMTUzNjMsNiArMTU3NDMsNDcgQEAKICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIAorICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVRFU1RJTUFHRV9BVVRPJz48Z2xvc3N0ZXJtPlRFU1RJTUFHRV9BVVRPPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8aW5mbz4KKyAgICAgICAgICAgICAgICBURVNUSU1BR0VfQVVUT1tkb2NdID0gIkVuYWJsZXMgYXV0b21hdGljIHRlc3Rpbmcgb2YgYW4gaW1hZ2Ugb25jZSBpdCBpcyBidWlsdC4iCisgICAgICAgICAgICA8L2luZm8+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+Cis8IS0tICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPjxpbWFnZWRhdGEgZmlsZXJlZj0iZmlndXJlcy9kZWZpbmUtZ2VuZXJpYy5wbmciIC8+IC0tPgorICAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWNhbGx5IHJ1bnMgdGhlIHNlcmllcyBvZiBhdXRvbWF0ZWQgdGVzdHMgZm9yCisgICAgICAgICAgICAgICAgICAgIGltYWdlcyB3aGVuIGFuIGltYWdlIGlzIHN1Y2Nlc3NmdWxseSBidWlsdC4KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZyA8ZmlsZW5hbWU+VEVTVElNQUdFX0FVVE88L2ZpbGVuYW1lPiB0byAiMSIKKyAgICAgICAgICAgICAgICAgICAgY2F1c2VzIGFueSBpbWFnZSB0aGF0IHN1Y2Nlc3NmdWxseSBidWlsZHMgdG8gYXV0b21hdGljYWxseQorICAgICAgICAgICAgICAgICAgICBib290IHVuZGVyIFFFTVUuCisgICAgICAgICAgICAgICAgICAgIFVzaW5nIHRoZSB2YXJpYWJsZSBhbHNvIGFkZHMgaW4gZGVwZW5kZW5jaWVzIHNvIHRoYXQgYW55CisgICAgICAgICAgICAgICAgICAgIFNESyBmb3Igd2hpY2ggdGVzdGluZyBpcyByZXF1ZXN0ZWQgaXMgYXV0b21hdGljYWxseSBidWlsdAorICAgICAgICAgICAgICAgICAgICBmaXJzdC4KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlc2UgdGVzdHMgYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIG1ha2luZyB1c2Ugb2YgdGhlCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT51bml0dGVzdDwvZmlsZW5hbWU+IG1vZHVsZSwgYW5kIHRoZSBtYWpvcml0eSBvZgorICAgICAgICAgICAgICAgICAgICB0aGVtIHJ1biBjb21tYW5kcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSBvdmVyCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5zc2g8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgWW91IGNhbiBzZXQgdGhpcyB2YXJpYWJsZSB0byAiMSIgaW4geW91cgorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgorICAgICAgICAgICAgICAgICAgICB0byBoYXZlIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGF1dG9tYXRpY2FsbHkgcnVuCisgICAgICAgICAgICAgICAgICAgIHRoZXNlIHRlc3RzIGFmdGVyIGFuIGltYWdlIHN1Y2Nlc3NmdWxseSBidWlsZHM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgVEVTVElNQUdFX0FVVE8gPSAiMSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBlbmFibGluZywgcnVubmluZywgYW5kIHdyaXRpbmcKKyAgICAgICAgICAgICAgICAgICAgdGhlc2UgdGVzdHMsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3BlcmZvcm1pbmctYXV0b21hdGVkLXJ1bnRpbWUtdGVzdGluZyc+UGVyZm9ybWluZyBBdXRvbWF0ZWQgUnVudGltZSBUZXN0aW5nPC91bGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGFuZAorICAgICAgICAgICAgICAgICAgICB0aGUKKyAgICAgICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLXRlc3RpbWFnZSonPjxmaWxlbmFtZT50ZXN0aW1hZ2UqLmJiY2xhc3M8L2ZpbGVuYW1lPjwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24uCisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItVEhJU0RJUic+PGdsb3NzdGVybT5USElTRElSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBUSElTRElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgZmlsZSBCaXRCYWtlIGlzIGN1cnJlbnRseSBwYXJzaW5nIGlzIGxvY2F0ZWQuIgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1jdXN0b21pemluZy54bWwKaW5kZXggYzMyMTVlNi4uNzQ1NGM5MCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLWFwcGVuZGl4LWN1c3RvbWl6aW5nLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtY3VzdG9taXppbmcueG1sCkBAIC03LDcgKzcsNyBAQAogPHRpdGxlPkN1c3RvbWl6aW5nIHRoZSBFeHRlbnNpYmxlIFNESzwvdGl0bGU+CiAKIDxwYXJhPgotICAgIFRoaXMgYXBwZW5kaXggcHJlc2VudHMgY3VzdG9taXphdGlvbnMgeW91IGNhbiBhcHBseSB0byB0aGUgZXh0ZW5zaWJsZSBTREsuCisgICAgVGhpcyBhcHBlbmRpeCBkZXNjcmliZXMgY3VzdG9taXphdGlvbnMgeW91IGNhbiBhcHBseSB0byB0aGUgZXh0ZW5zaWJsZSBTREsuCiA8L3BhcmE+CiAKIDxzZWN0aW9uIGlkPSdzZGstY29uZmlndXJpbmctdGhlLWV4dGVuc2libGUtc2RrJz4KQEAgLTE4Niw3ICsxODYsMTMgQEAKICAgICAgICAgWW91IGNhbiBjaGFuZ2UgdGhlIGRpc3BsYXllZCB0aXRsZSBmb3IgdGhlIFNESyBpbnN0YWxsZXIgYnkgc2V0dGluZwogICAgICAgICB0aGUKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLVNES19USVRMRSc+PGZpbGVuYW1lPlNES19USVRMRTwvZmlsZW5hbWU+PC91bGluaz4KLSAgICAgICAgdmFyaWFibGUuCisgICAgICAgIHZhcmlhYmxlIGFuZCB0aGVuIHJlYnVpbGRpbmcgdGhlIHRoZSBTREsgaW5zdGFsbGVyLgorICAgICAgICBGb3IgaW5mb3JtYXRpb24gb24gaG93IHRvIGJ1aWxkIGFuIFNESyBpbnN0YWxsZXIsIHNlZSB0aGUKKyAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3Nkay1idWlsZGluZy1hbi1zZGstaW5zdGFsbGVyJz5CdWlsZGluZyBhbiBTREsgSW5zdGFsbGVyPC9saW5rPiIKKyAgICAgICAgc2VjdGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KICAgICAgICAgQnkgZGVmYXVsdCwgdGhpcyB0aXRsZSBpcyBkZXJpdmVkIGZyb20KICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLURJU1RST19OQU1FJz48ZmlsZW5hbWU+RElTVFJPX05BTUU8L2ZpbGVuYW1lPjwvdWxpbms+CiAgICAgICAgIHdoZW4gaXQgaXMgc2V0LgpAQCAtMTk4LDExICsyMDQsMjggQEAKIAogICAgIDxwYXJhPgogICAgICAgICBUaGUKLSAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfZXh0PC9maWxlbmFtZT48L3VsaW5rPgorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNyZWYtY2xhc3Nlcy1wb3B1bGF0ZS1zZGstKic+PGZpbGVuYW1lPnBvcHVsYXRlX3Nka19iYXNlPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICBjbGFzcyBkZWZpbmVzIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSA8ZmlsZW5hbWU+U0RLX1RJVExFPC9maWxlbmFtZT4KICAgICAgICAgdmFyaWFibGUgYXMgZm9sbG93czoKICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBTREtfVElUTEVfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gRXh0ZW5zaWJsZSBTREsiCisgICAgIFNES19USVRMRSA/Pz0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gU0RLIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIFdoaWxlIHNldmVyYWwgd2F5cyBleGlzdCB0byBjaGFuZ2UgdGhpcyB2YXJpYWJsZSwgYW4gZWZmaWNpZW50IG1ldGhvZAorICAgICAgICBpcyB0byBzZXQgdGhlIHZhcmlhYmxlIGluIHlvdXIgZGlzdHJpYnV0aW9uJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGFuIFNESyBpbnN0YWxsZXIgdGl0bGUgdGhhdCBhcHBsaWVzIGFjcm9zcyB5b3VyCisgICAgICAgIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIHlvdSBoYXZlIHlvdXIgb3duIGxheWVyIGZvciB5b3VyIGRpc3RyaWJ1dGlvbgorICAgICAgICBuYW1lZCAibWV0YS1teWRpc3RybyIgYW5kIHlvdSBhcmUgdXNpbmcgdGhlIHNhbWUgdHlwZSBvZiBmaWxlCisgICAgICAgIGhpZXJhcmNoeSBhcyBkb2VzIHRoZSBkZWZhdWx0ICJwb2t5IiBkaXN0cmlidXRpb24uCisgICAgICAgIElmIHNvLCB5b3UgY291bGQgdXBkYXRlIHRoZSA8ZmlsZW5hbWU+U0RLX1RJVExFPC9maWxlbmFtZT4gdmFyaWFibGUKKyAgICAgICAgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5+L21ldGEtbXlkaXN0cm8vY29uZi9kaXN0cm8vbXlkaXN0cm8uY29uZjwvZmlsZW5hbWU+IGZpbGUKKyAgICAgICAgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtOgorICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFNES19USVRMRSA9ICI8cmVwbGFjZWFibGU+eW91cl90aXRsZTwvcmVwbGFjZWFibGU+IgogICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgPC9wYXJhPgogPC9zZWN0aW9uPgpAQCAtMjY1LDYgKzI4OCw1MSBAQAogICAgIDwvcGFyYT4KIDwvc2VjdGlvbj4KIAorPHNlY3Rpb24gaWQ9J3Nkay1jaGFuZ2luZy10aGUtZGVmYXVsdC1zZGstaW5zdGFsbGF0aW9uLWRpcmVjdG9yeSc+CisgICAgPHRpdGxlPkNoYW5naW5nIHRoZSBEZWZhdWx0IFNESyBJbnN0YWxsYXRpb24gRGlyZWN0b3J5PC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgICBXaGVuIHlvdSBidWlsZCB0aGUgaW5zdGFsbGVyIGZvciB0aGUgRXh0ZW5zaWJsZSBTREssIHRoZSBkZWZhdWx0CisgICAgICAgIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgZm9yIHRoZSBTREsgaXMgYmFzZWQgb24gdGhlCisgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1ESVNUUk8nPjxmaWxlbmFtZT5ESVNUUk88L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIGFuZAorICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItU0RLRVhUUEFUSCc+PGZpbGVuYW1lPlNES0VYVFBBVEg8L2ZpbGVuYW1lPjwvdWxpbms+CisgICAgICAgIHZhcmlhYmxlcyBmcm9tIHdpdGhpbiB0aGUKKyAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVmLWNsYXNzZXMtcG9wdWxhdGUtc2RrLSonPjxmaWxlbmFtZT5wb3B1bGF0ZV9zZGtfYmFzZTwvZmlsZW5hbWU+PC91bGluaz4KKyAgICAgICAgY2xhc3MgYXMgZm9sbG93czoKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtFWFRQQVRIID8/PSAifi8ke0BkLmdldFZhcignRElTVFJPJyl9X3NkayIKKyAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aGlzIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBieSBzcGVjaWZpY2FsbHkKKyAgICAgICAgc2V0dGluZyB0aGUgPGZpbGVuYW1lPlNES0VYVFBBVEg8L2ZpbGVuYW1lPiB2YXJpYWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgICAgV2hpbGUgYSBudW1iZXIgb2Ygd2F5cyBleGlzdCB0aHJvdWdoIHdoaWNoIHlvdSBjYW4gc2V0IHRoaXMgdmFyaWFibGUsCisgICAgICAgIHRoZSBtZXRob2QgdGhhdCBtYWtlcyB0aGUgbW9zdCBzZW5zZSBpcyB0byBzZXQgdGhlIHZhcmlhYmxlIGluIHlvdXIKKyAgICAgICAgZGlzdHJpYnV0aW9uJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorICAgICAgICBEb2luZyBzbyBjcmVhdGVzIGFuIFNESyBpbnN0YWxsZXIgZGVmYXVsdCBkaXJlY3RvcnkgdGhhdCBhcHBsaWVzCisgICAgICAgIGFjcm9zcyB5b3VyIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgYXNzdW1lIHlvdSBoYXZlIHlvdXIgb3duIGxheWVyIGZvciB5b3VyIGRpc3RyaWJ1dGlvbgorICAgICAgICBuYW1lZCAibWV0YS1teWRpc3RybyIgYW5kIHlvdSBhcmUgdXNpbmcgdGhlIHNhbWUgdHlwZSBvZiBmaWxlCisgICAgICAgIGhpZXJhcmNoeSBhcyBkb2VzIHRoZSBkZWZhdWx0ICJwb2t5IiBkaXN0cmlidXRpb24uCisgICAgICAgIElmIHNvLCB5b3UgY291bGQgdXBkYXRlIHRoZSA8ZmlsZW5hbWU+U0RLRVhUUEFUSDwvZmlsZW5hbWU+IHZhcmlhYmxlCisgICAgICAgIGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+fi9tZXRhLW15ZGlzdHJvL2NvbmYvZGlzdHJvL215ZGlzdHJvLmNvbmY8L2ZpbGVuYW1lPiBmaWxlCisgICAgICAgIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICBTREtFWFRQQVRIID0gIjxyZXBsYWNlYWJsZT5zb21lX3BhdGhfZm9yX3lvdXJfaW5zdGFsbGVkX3NkazwvcmVwbGFjZWFibGU+IgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgICAgIEFmdGVyIGJ1aWxkaW5nIHlvdXIgaW5zdGFsbGVyLCBydW5uaW5nIGl0IHByb21wdHMgdGhlIHVzZXIgZm9yCisgICAgICAgIGFjY2VwdGFuY2Ugb2YgdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5zb21lX3BhdGhfZm9yX3lvdXJfaW5zdGFsbGVkX3NkazwvcmVwbGFjZWFibGU+IGRpcmVjdG9yeQorICAgICAgICBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiB0byBpbnN0YWxsIHRoZSBFeHRlbnNpYmxlIFNESy4KKyAgICA8L3BhcmE+Cis8L3NlY3Rpb24+CisKIDxzZWN0aW9uIGlkPSdzZGstcHJvdmlkaW5nLWFkZGl0aW9uYWwtaW5zdGFsbGFibGUtZXh0ZW5zaWJsZS1zZGstY29udGVudCc+CiAgICAgPHRpdGxlPlByb3ZpZGluZyBBZGRpdGlvbmFsIEluc3RhbGxhYmxlIEV4dGVuc2libGUgU0RLIENvbnRlbnQ8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCmluZGV4IGM2MDhlNmYuLjJjYWRjYzEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+U2V0IFVwIHRoZSBCdWlsZCBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIEJlIHN1cmUgeW91IGFyZSBzZXQgdXAgdG8gdXNlIEJpdEJha2UgaW4gYSBzaGVsbC4KICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3NldHRpbmctdXAtdGhlLWRldmVsb3BtZW50LWhvc3QtdG8tdXNlLXRoZS15b2N0by1wcm9qZWN0Jz5QcmVwYXJpbmcgdGhlIEJ1aWxkIEhvc3Q8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwgZm9yCiAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gb24gaG93IHRvIGdldCBhIGJ1aWxkIGhvc3QgcmVhZHkgdGhhdCBpcyBlaXRoZXIgYQogICAgICAgICAgICAgICAgIG5hdGl2ZSBMaW51eCBtYWNoaW5lIG9yIGEgbWFjaGluZSB0aGF0IHVzZXMgQ1JPUFMuCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstZWNsaXBzZS1wcm9qZWN0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sCmluZGV4IGY4YTU4NmYuLjE1YTlhZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1lY2xpcHNlLXByb2plY3QueG1sCkBAIC01NywxMiArNTcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjaGFyZHdhcmUtYnVpbGQtc3lzdGVtLXRlcm0nPmJ1aWxkIGhvc3Q8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBjYW4gdXNlIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIGEgQnVpbGQgSG9zdDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvcgogICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIHlvdXIgYnVpbGQgaG9zdC4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBCZSBzdXJlIHlvdSBpbnN0YWxsIHRoZSAieHRlcm0iIHBhY2thZ2UsIHdoaWNoIGlzIGEKLSAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtaG9zdC1kZXZlbG9wbWVudC1zeXN0ZW0nPmdyYXBoaWNhbCBhbmQgRWNsaXBzZSBwbHVnLWluIGV4dHJhPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLXBhY2thZ2VzLWZvci10aGUtYnVpbGQtaG9zdCc+Z3JhcGhpY2FsIGFuZCBFY2xpcHNlIHBsdWctaW4gZXh0cmE8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkIGJ5IEVjbGlwc2UuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCmluZGV4IDJkYWJkYjcuLjdmOTNkNWYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCkBAIC01NywxNCArNTcsMTQgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5TZXB0ZW1iZXIgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPk5vdmVtYmVyIDIwMTg8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4yPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjYuMTwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4yIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC1zdGFydC54bWwKaW5kZXggNDVmNjA0Ni4uZmMxODdlYyAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLXN0YXJ0LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwtc3RhcnQueG1sCkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgICAgICBCZWZvcmUgeW91IGNhbiB1c2UgVG9hc3RlciwgeW91IG5lZWQgdG8gZmlyc3Qgc2V0IHVwIHlvdXIKICAgICAgICAgICAgIGJ1aWxkIHN5c3RlbSB0byBydW4gdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICBUbyBkbyB0aGlzLCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUKLSAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRoZS1kZXZlbG9wbWVudC1ob3N0LXRvLXVzZS10aGUteW9jdG8tcHJvamVjdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCisgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjZGV2LXByZXBhcmluZy10aGUtYnVpbGQtaG9zdCc+UHJlcGFyaW5nIHRoZSBCdWlsZCBIb3N0PC91bGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uIG9mIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzCiAgICAgICAgICAgICBNYW51YWwuCiAgCSAgICBGb3IgVWJ1bnR1L0RlYmlhbiwgeW91IG1pZ2h0IGFsc28gbmVlZCB0byBkbyBhbiBhZGRpdGlvbmFsIGluc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwueG1sCmluZGV4IDhlMjVlNDMuLmRjYzI5OTAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApAQCAtNjcsMTQgKzY3LDE0IEBACiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+U2VwdGVtYmVyIDIwMTg8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjY8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDE4PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjUuMjwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42LjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjUuMiBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjYuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCmluZGV4IGIxNzRmYWQuLmY2ZTIwNWYgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZApAQCAtMiwzOSArMiwzOSBAQAogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyBsaWtlICJ5b2N0by1wcm9qZWN0LXFzIiBhbmQgInBva3ktcmVmLW1hbnVhbCIuCiAjIFRoaXMgaXMgdGhlIG9sZCB3YXkgdGhhdCBkaWQgaXQuICBDYW4ndCBkbyB0aGF0IG5vdyB0aGF0IHdlIGhhdmUgImJpdGJha2UtdXNlci1tYW51YWwiIHN0cmluZ3MKICMgaW4gdGhlIG1lZ2EtbWFudWFsLgotIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvW2Etel0qLVthLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi1bYS16XSouaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvcG9reS1yZWYtbWFudWFsL3Bva3ktcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCisjIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9bYS16XSotW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9wb2t5LXJlZi1tYW51YWwvcG9reS1yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKIAogIyBQcm9jZXNzZXMgYWxsIG90aGVyIG1hbnVhbHMgKDx3b3JkPi08d29yZD4gc3R5bGUpIGV4Y2VwdCBmb3IgdGhlIEJpdEJha2UgVXNlciBNYW51YWwgYmVjYXVzZQogIyBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIG1lZ2EtbWFudWFsLgogIyBUaGlzIHN0eWxlIGlzIGZvciBtYW51YWwgZm9sZGVycyB0aGF0IHVzZSB0d28gd29yZCwgd2hpY2ggaXMgdGhlIHN0YW5kYXJkIG5vdyAoZS5nLiAicmVmLW1hbnVhbCIpLgogIyBUaGlzIHdhcyB0aGUgb25lLWxpbmVyIHRoYXQgd29ya2VkIGJlZm9yZSB3ZSBpbnRyb2R1Y2VkIHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLCB3aGljaCBpcwogIyBub3QgaW4gdGhlIG1lZ2EtbWFudWFsLgotIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL1thLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUuMi9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKICMgUHJvY2VzcyBjYXNlcyB3aGVyZSBqdXN0IGFuIGV4dGVybmFsIG1hbnVhbCBpcyByZWZlcmVuY2VkIHdpdGhvdXQgYW4gaWQgYW5jaG9yCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC9hPkBZb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUuMi95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0PC9hPkBZb2N0byBQcm9qZWN0IFF1aWNrIFN0YXJ0QGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUuMi9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L2E+QFlvY3RvIHByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvYT5AWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKUBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvYnNwLWd1aWRlL2JzcC1ndWlkZS5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlPC9hPkBZb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZUBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNS4yL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjUuMi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPlRvYXN0ZXIgVXNlciBNYW51YWw8L2E+QFRvYXN0ZXIgVXNlciBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBCdWlsZDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBCdWlsZEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBRdWljayBTdGFydDwvYT5AWW9jdG8gUHJvamVjdCBRdWljayBTdGFydEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsPC9hPkBZb2N0byBwcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L2E+QFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESylAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvYT5AWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGVAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuNi4xL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi42LjEvdG9hc3Rlci1tYW51YWwvdG9hc3Rlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Ub2FzdGVyIFVzZXIgTWFudWFsPC9hPkBUb2FzdGVyIFVzZXIgTWFudWFsQGcKIAogIyBQcm9jZXNzIGEgc2luZ2xlLCByb3VnZSBvY2N1cnJlbmNlIG9mIGEgbGlua2VkIHJlZmVyZW5jZSB0byB0aGUgTWVnYS1NYW51YWwuCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi41LjIvbWVnYS1tYW51YWwvbWVnYS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IE1lZ2EtTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjYuMS9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTWVnYS1NYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTWVnYS1NYW51YWxAZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgppbmRleCBlY2ZlNWQyLi4xYzQyNmJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWxzYi5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKQEAgLTEsNiArMSw1IEBACiAKIHJlcXVpcmUgY29uZi9kaXN0cm8vcG9reS5jb25mCi1yZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCiAKIERJU1RSTyA9ICJwb2t5LWxzYiIKIERJU1RST09WRVJSSURFUyA9ICJwb2t5OmxpbnV4c3RkYmFzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKaW5kZXggN2IyMmExMy4uNjkwY2IwZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTM4LDcgKzM4LDcgQEAKICMgRGlzdHJvIGNvbmZpZyBpcyBldmFsdWF0ZWQgYWZ0ZXIgdGhlIG1hY2hpbmUgY29uZmlnLCBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkKICMgc2V0IHRoZSBrZXJuZWwgcHJvdmlkZXIgdG8gb3ZlcnJpZGUgYSBtYWNoaW5lIGNvbmZpZy4KIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC15b2N0by10aW55IgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8tdGlueSA/PSAiNC4xNCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0by10aW55ID89ICI0LjE4JSIKIAogIyBXZSBjYW4gdXNlIHBhY2thZ2Vncm91cC1jb3JlLWJvb3QsIGJ1dCBpbiB0aGUgZnV0dXJlIHdlIG1heSBuZWVkIGEgbmV3IHBhY2thZ2Vncm91cC1jb3JlLXRpbnkKICNQT0tZX0RFRkFVTFRfRVhUUkFfUkRFUEVORFMgKz0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKaW5kZXggZmI5ZTc4My4uN2U2ZmUxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgpAQCAtMSw3ICsxLDcgQEAKIERJU1RSTyA9ICJwb2t5IgogRElTVFJPX05BTUUgPSAiUG9reSAoWW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgRGlzdHJvKSIKLURJU1RST19WRVJTSU9OID0gIjIuNS4yIgotRElTVFJPX0NPREVOQU1FID0gInN1bW8iCitESVNUUk9fVkVSU0lPTiA9ICIyLjYiCitESVNUUk9fQ09ERU5BTUUgPSAidGh1ZCIKIFNES19WRU5ET1IgPSAiLXBva3lzZGsiCiBTREtfVkVSU0lPTiA6PSAiJHtAJyR7RElTVFJPX1ZFUlNJT059Jy5yZXBsYWNlKCdzbmFwc2hvdC0ke0RBVEV9Jywnc25hcHNob3QnKX0iCiAKQEAgLTIxLDcgKzIxLDcgQEAKIAogRElTVFJPX0ZFQVRVUkVTID89ICIke0RJU1RST19GRUFUVVJFU19ERUZBVUxUfSAke0RJU1RST19GRUFUVVJFU19MSUJDfSAke1BPS1lfREVGQVVMVF9ESVNUUk9fRkVBVFVSRVN9IgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOCUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtfQVJDSH0tJHtJTUFHRV9CQVNFTkFNRX0tJHtUVU5FX1BLR0FSQ0h9IgogU0RLUEFUSCA9ICIvb3B0LyR7RElTVFJPfS8ke1NES19WRVJTSU9OfSIKQEAgLTY0LDE2ICs2NCwxNyBAQAogQ09OTkVDVElWSVRZX0NIRUNLX1VSSVMgPz0gImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIKIAogU0FOSVRZX1RFU1RFRF9ESVNUUk9TID89ICIgXAotICAgICAgICAgICAgcG9reS0yLjQgXG4gXAogICAgICAgICAgICAgcG9reS0yLjUgXG4gXAotICAgICAgICAgICAgdWJ1bnR1LTE1LjA0IFxuIFwKKyAgICAgICAgICAgIHBva3ktMi42IFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4wNCBcbiBcCi0gICAgICAgICAgICB1YnVudHUtMTguMDQgXG4gXAotICAgICAgICAgICAgZmVkb3JhLTI4IFxuIFwKKyAgICAgICAgICAgIHVidW50dS0xNi4xMCBcbiBcCisgICAgICAgICAgICB1YnVudHUtMTcuMDQgXG4gXAorICAgICAgICAgICAgZmVkb3JhLTI2IFxuIFwKICAgICAgICAgICAgIGNlbnRvcy03IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi04IFxuIFwKICAgICAgICAgICAgIGRlYmlhbi05IFxuIFwKLSAgICAgICAgICAgIG9wZW5zdXNlLTQyLjMgXG4gXAorICAgICAgICAgICAgb3BlbnN1c2UtNDIuMSBcbiBcCisgICAgICAgICAgICBvcGVuc3VzZS00Mi4yIFxuIFwKICAgICAgICAgICAgICIKICMKICMgT0VMQVlPVVRfQUJJIGFsbG93cyB1cyB0byBub3RpZnkgdXNlcnMgd2hlbiB0aGUgZm9ybWF0IG9mIFRNUERJUiBjaGFuZ2VzIGluCkBAIC04OSwxMSArOTAsMTIgQEAKICMgUUEgY2hlY2sgc2V0dGluZ3MgLSBhIGxpdHRsZSBzdHJpY3RlciB0aGFuIHRoZSBPRS1Db3JlIGRlZmF1bHRzCiBXQVJOX1RPX0VSUk9SX1FBID0gImFscmVhZHktc3RyaXBwZWQgY29tcGlsZS1ob3N0LXBhdGggaW5zdGFsbC1ob3N0LXBhdGggXAogICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQtdnMtc2hpcHBlZCBsZGZsYWdzIHBuLW92ZXJyaWRlcyBycGF0aHMgc3RhdGljZGV2IFwKLSAgICAgICAgICAgICAgICAgICAgdXNlbGVzcy1ycGF0aHMiCisgICAgICAgICAgICAgICAgICAgIHVua25vd24tY29uZmlndXJlLW9wdGlvbiB1c2VsZXNzLXJwYXRocyIKIFdBUk5fUUFfcmVtb3ZlID0gIiR7V0FSTl9UT19FUlJPUl9RQX0iCiBFUlJPUl9RQV9hcHBlbmQgPSAiICR7V0FSTl9UT19FUlJPUl9RQX0iCiAKIHJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LXdvcmxkLWV4Y2x1ZGUuaW5jCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCiByZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYworcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwogSU5IRVJJVCArPSAidW5pbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCmluZGV4IDM3NjFmODcuLmI5YjI2MzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0byA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvID0gInRodWQiCiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKaW5kZXggYWE4ZGY0MC4uZDI4YmY1OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0yMzQsMTIgKzIzNCwxMiBAQAogIyBRZW11IGNvbmZpZ3VyYXRpb24KICMKICMgQnkgZGVmYXVsdCBxZW11IHdpbGwgYnVpbGQgd2l0aCBhIGJ1aWx0aW4gVk5DIHNlcnZlciB3aGVyZSBncmFwaGljYWwgb3V0cHV0IGNhbiBiZQotIyBzZWVuLiBUaGUgdHdvIGxpbmVzIGJlbG93IGVuYWJsZSB0aGUgU0RMIGJhY2tlbmQgdG9vLiBCeSBkZWZhdWx0IGxpYnNkbC1uYXRpdmUgd2lsbAorIyBzZWVuLiBUaGUgdHdvIGxpbmVzIGJlbG93IGVuYWJsZSB0aGUgU0RMIGJhY2tlbmQgdG9vLiBCeSBkZWZhdWx0IGxpYnNkbDItbmF0aXZlIHdpbGwKICMgYmUgYnVpbHQsIGlmIHlvdSB3YW50IHRvIHVzZSB5b3VyIGhvc3QncyBsaWJTREwgaW5zdGVhZCBvZiB0aGUgbWluaW1hbCBsaWJzZGwgYnVpbHQKLSMgYnkgbGlic2RsLW5hdGl2ZSB0aGVuIHVuY29tbWVudCB0aGUgQVNTVU1FX1BST1ZJREVEIGxpbmUgYmVsb3cuCisjIGJ5IGxpYnNkbDItbmF0aXZlIHRoZW4gdW5jb21tZW50IHRoZSBBU1NVTUVfUFJPVklERUQgbGluZSBiZWxvdy4KIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtbmF0aXZlID0gIiBzZGwiCiBQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1uYXRpdmVzZGstcWVtdSA9ICIgc2RsIgotI0FTU1VNRV9QUk9WSURFRCArPSAibGlic2RsLW5hdGl2ZSIKKyNBU1NVTUVfUFJPVklERUQgKz0gImxpYnNkbDItbmF0aXZlIgogCiAjIENPTkZfVkVSU0lPTiBpcyBpbmNyZWFzZWQgZWFjaCB0aW1lIGJ1aWxkL2NvbmYvIGNoYW5nZXMgaW5jb21wYXRpYmx5IGFuZCBpcyB1c2VkIHRvCiAjIHRyYWNrIHRoZSB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB3aGVuIGl0IHdhcyBnZW5lcmF0ZWQuIFRoaXMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZAppbmRleCAwNTYwZGU4Li4zYmE5OWY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQKQEAgLTMyLDcgKzMyLDcgQEAKICNESVNUUk9fRkVBVFVSRVNfTElCQyA9ICJpcHY2IGxpYmMtYmFja3RyYWNlIGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdldHMgbGliYy1jaGFyc2V0cyBsaWJjLWNyeXB0IFwKICMgICAgICAgICAgICAgICBsaWJjLWNyeXB0LXVmYyBsaWJjLWRiLWFsaWFzZXMgbGliYy1lbnZ6IGxpYmMtZmN2dCBsaWJjLWZtdG1zZyBsaWJjLWZzdGFiIGxpYmMtZnRyYXZlcnNlIFwKICMgICAgICAgICAgICAgICBsaWJjLWdldGxvZ2luIGxpYmMtaWRuIGxpYmMtaW5ldCBsaWJjLWluZXQtYW5sIGxpYmMtbGlibSBsaWJjLWxvY2FsZXMgbGliYy1sb2NhbGUtY29kZSBcCi0jICAgICAgICAgICAgICAgbGliYy1tZW11c2FnZSBsaWJjLW5pcyBsaWJjLW5zc3dpdGNoIGxpYmMtcmNtZCBsaWJjLXJ0bGQtZGVidWcgbGliYy1zcGF3biBsaWJjLXN0cmVhbXMgbGliYy1zdW5ycGMgXAorIyAgICAgICAgICAgICAgIGxpYmMtbWVtdXNhZ2UgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxpYmMtc3Bhd24gbGliYy1zdHJlYW1zIFwKICMgICAgICAgICAgICAgICBsaWJjLXV0bXAgbGliYy11dG1weCBsaWJjLXdvcmRleHAgbGliYy1wb3NpeC1jbGFuZy13Y2hhciBsaWJjLXBvc2l4LXJlZ2V4cCBsaWJjLXBvc2l4LXJlZ2V4cC1nbGliYyBcCiAjICAgICAgICAgICAgICAgbGliYy1wb3NpeC13Y2hhci1pbyIKIApAQCAtNTksNiArNTksMTEgQEAKICMgTk9URTogSWYgcmVtb3ZpbmcgZW5fVVMuVVRGLTggeW91IHdpbGwgYWxzbyBuZWVkIHRvIHVuY29tbWVudCwgYW5kIHNldAogIyBhcHByb3ByaWF0ZSB2YWx1ZSBmb3IgSU1BR0VfTElOR1VBUy4KICMgV0FSTklORzogdGhpcyBtYXkgYnJlYWsgbG9jYWxpc2F0aW9uIQorIyBXQVJOSU5HOiBzb21lIHJlY2lwZXMgZXhwZWN0IGNlcnRhaW4gbG9jYWxpemF0aW9ucyB0byBiZSBlbmFibGVkLCBlLmcuCisjIGJhc2gtcHRlc3Q6IGZyLWZyLCBkZS1kZQorIyBnbGliLTIuMC1wdGVzdDogdHItdHIsIGx0LWx0LCBqYS1qcC5ldWMtanAsIGZhLWlyLCBydS1ydSwgZGUtZGUsIGhyLWhyLCBlbC1nciwgZnItZnIsIGVzLWVzLCBlbi1nYgorIyBpZiB5b3UgcmVtb3ZlIHNvbWUgb2YgdGhlc2UgYW5kIGVuYWJsZSBwdGVzdCwgeW91J2xsIGdldCBRQSB3YXJuaW5nIGxpa2U6CisjIEVSUk9SOiBnbGliLTIuMC0xXzIuNTguMC1yMCBkb19wYWNrYWdlX3FhOiBRQSBJc3N1ZTogZ2xpYi0yLjAtcHRlc3QgcmRlcGVuZHMgb24gbG9jYWxlLWJhc2UtZGUtZGUsIGJ1dCBpdCBpc24ndCBhIGJ1aWxkIGRlcGVuZGVuY3k/IFtidWlsZC1kZXBzXQogI0dMSUJDX0dFTkVSQVRFX0xPQ0FMRVMgPSAiZW5fR0IuVVRGLTggZW5fVVMuVVRGLTgiCiAjSU1BR0VfTElOR1VBUyA/PSAiZW4tZ2IiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvc2l0ZS5jb25mLnNhbXBsZSBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvc2l0ZS5jb25mLnNhbXBsZQppbmRleCA2Y2ZlZmM1Li5hNGMyZjlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL3NpdGUuY29uZi5zYW1wbGUKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9zaXRlLmNvbmYuc2FtcGxlCkBAIC0yNCw3ICsyNCw5IEBACiAjb3IKICNBTExfUFJPWFkgPz0gImh0dHBzOi8vcHJveHkuZXhhbXBsZS5jb206ODA4MCIKICMgSWYgeW91IHdpc2ggdG8gdXNlIGNlcnRhaW4gaG9zdHMgd2l0aG91dCB0aGUgcHJveHksIHNwZWNpZnkgdGhlbSBpbiBOT19QUk9YWS4KLSMgU2VlIHRoZSBzY3JpcHQgZm9yIGRldGFpbHMgb24gc3ludGF4LgorIyBTZWUgdGhlIHNjcmlwdCBmb3IgZGV0YWlscyBvbiBzeW50YXguIFRoZSBzY3JpcHQgb2UtZ2l0LXByb3h5IHVzZXMgc29tZSB0b29scworIyB0aGF0IG1heSBub3QgYmUgaW5jbHVkZWQgb24gSE9TVFRPT0xTLCB0aHVzICBhZGQgdGhlbSBtYW51YWxseSB0aHJvdWdoCisjIEhPU1RUT09MUyArPSAiZ2V0ZW50IHNlcSIKIAogIyBVbmNvbW1lbnQgdGhpcyB0byB1c2UgYSBzaGFyZWQgZG93bmxvYWQgZGlyZWN0b3J5CiAjRExfRElSID0gIi9zb21lL3NoYXJlZC9kb3dubG9hZC9kaXJlY3RvcnkvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKaW5kZXggZjU3NGE1MC4uMDYyNmIyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5fc2VsZnRlc3QgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9zZWxmdGVzdCA9ICI1IgogCi1MQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9zZWxmdGVzdCA9ICJ0aHVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mX3J1bnRpbWUucHkgYi9wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmZfcnVudGltZS5weQppbmRleCAxYWE3Mjc0Li42NGEzNTAyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmZfcnVudGltZS5weQorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmZfcnVudGltZS5weQpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICBFeHBlY3RlZDogMS4gRmVlZHMgd2VyZSBjb3JyZWN0bHkgc2V0IGZvciBkbmYKICAgICAgICAgICAgICAgICAgIDIuIFVwZGF0ZSByZWNvdmVycyBwYWNrYWdlcyBmcm9tIGhvc3QncyByZXBvCiAgICAgICAgIEF1dGhvcjogSHVtYmVydG8gSWJhcnJhIDxodW1iZXJ0by5pYmFycmEubG9wZXpAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgogICAgICAgICAjIFdoZW4gd2UgY3JlYXRlZCBhbiBpbWFnZSwgd2UgaGFkIHRvIHN1cHBseSBmYWtlIGlwIGFuZCBwb3J0CiAgICAgICAgICMgZm9yIHRoZSBmZWVkcy4gTm93IHdlIGNhbiBwYXRjaCB0aGUgcmVhbCBvbmVzIGludG8gdGhlIGNvbmZpZyBmaWxlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9hc3BlbGwvYXNwZWxsXzAuMC4wLjEuYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2FzcGVsbC9hc3BlbGxfMC4wLjAuMS5iYgppbmRleCAwNzNjZjU2Li45MjI1MThiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2FzcGVsbC9hc3BlbGxfMC4wLjAuMS5iYgorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2FzcGVsbC9hc3BlbGxfMC4wLjAuMS5iYgpAQCAtMjgsNSArMjgsOCBAQAogRklMRVNfbGlicHNwZWxsID0gIiR7bGliZGlyfS9saWJwc3BlbGwuc28uKiIKIEZJTEVTX2xpYnBzcGVsbC1kZXYgPSAiJHtsaWJkaXJ9L2xpYnBzcGVsbCogJHtiaW5kaXJ9L3BzcGVsbC1jb25maWcgJHtpbmNsdWRlZGlyfS9wc3BlbGwiCiAKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWhhcmRsaW5rL3NlbGZ0ZXN0LWhhcmRsaW5rLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDJhOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay5iYgpAQCAtMCwwICsxLDMwIEBACitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworTElDRU5TRSA9ICJNSVQiCisKK1NSQ19VUkkgPSAiZmlsZTovL2hlbGxvLmMgXAorICAgICAgICAgICBmaWxlOi8vZ2RiLnNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9IgorCitkb19jb21waWxlICgpIHsKKwkke0NDfSBoZWxsby5jIC1vIGhlbGxvMSAke0NGTEFHU30gJHtMREZMQUdTfQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dkYi5zaCAke0R9JHtiaW5kaXJ9LworCWluc3RhbGwgLW0gNzU1IGhlbGxvMSAke0R9JHtiaW5kaXJ9L2hlbGxvMQorCWxuICR7RH0ke2JpbmRpcn0vaGVsbG8xICR7RH0ke2JpbmRpcn0vaGVsbG8yCisKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9CisJbG4gJHtEfSR7YmluZGlyfS9oZWxsbzEgJHtEfSR7bGliZXhlY2Rpcn0vaGVsbG8zCisJbG4gJHtEfSR7YmluZGlyfS9oZWxsbzEgJHtEfSR7bGliZXhlY2Rpcn0vaGVsbG80CisKKwlkZCBpZj0vZGV2L3plcm8gb2Y9JHtEfSR7YmluZGlyfS9zcGFyc2V0ZXN0IGJzPTEgY291bnQ9MCBzZWVrPTFNCit9CisKK1JERVBFTkRTXyR7UE59LWdkYiArPSAiZ2RiIgorUEFDS0FHRVMgPSsgIiR7UE59LWdkYiIKK0ZJTEVTXyR7UE59LWdkYiA9ICIke2JpbmRpcn0vZ2RiLnNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay9nZGIuc2ggYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWhhcmRsaW5rL3NlbGZ0ZXN0LWhhcmRsaW5rL2dkYi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNjQxN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay9nZGIuc2gKQEAgLTAsMCArMSw4IEBACisjIS9iaW4vc2gKK2dkYiAtcSAkMSAgPDwnRU9GJworYiBtYWluCityCitjCitxCitFT0YKK2VjaG8gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsvaGVsbG8uYyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtaGFyZGxpbmsvc2VsZnRlc3QtaGFyZGxpbmsvaGVsbG8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzQ1ZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1oYXJkbGluay9zZWxmdGVzdC1oYXJkbGluay9oZWxsby5jCkBAIC0wLDAgKzEsNSBAQAorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2ludCBtYWluKCkgeworCXByaW50ZigiSGVsbG8gV29ybGQhXG4iKTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgppbmRleCA0ZTg2OTJlLi4xM2JkYTdiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDQgKzE0LDQgQEAKIAogTEFZRVJERVBFTkRTX3NrZWxldG9uID0gImNvcmUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9za2VsZXRvbiA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX3NrZWxldG9uID0gInRodWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCmluZGV4IDY0NzIyMzguLjUzZTg3MjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9sYXllci5jb25mCkBAIC05LDQgKzksNCBAQAogQkJGSUxFX1BBVFRFUk5feW9jdG9ic3AgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV95b2N0b2JzcCA9ICI1IgogTEFZRVJWRVJTSU9OX3lvY3RvYnNwID0gIjQiCi1MQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAic3VtbyIKK0xBWUVSU0VSSUVTX0NPTVBBVF95b2N0b2JzcCA9ICJ0aHVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCmluZGV4IGFlNjgyYTQuLmU5MTFlNzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKQEAgLTIwLDEwICsyMCwxMCBAQAogSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGtlcm5lbC1kZXZpY2V0cmVlIGtlcm5lbC1pbWFnZS16aW1hZ2UiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gIm10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5TzAiCitTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eU8wIgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTUlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTglIgogCiBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKIEtFUk5FTF9ERVZJQ0VUUkVFID0gImFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKQEAgLTM3LDQgKzM3LDQgQEAKIAogTUFDSElORV9GRUFUVVJFUyA9ICJ1c2JnYWRnZXQgdXNiaG9zdCB2ZmF0IGFsc2EiCiAKLUlNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIgorSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LiR7VUJPT1RfU1VGRklYfSBNTE8gekltYWdlIGFtMzM1eC1ib25lLmR0YiBhbTMzNXgtYm9uZWJsYWNrLmR0YiBhbTMzNXgtYm9uZWdyZWVuLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgppbmRleCA2MWYyMTQ1Li5iN2E5NGU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSw5ICsxMSw5IEBACiBLRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTUlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTglIgogCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCitTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eVMwIgogVVNFX1ZUID89ICIwIgogCiBNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGVzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvaW5jbHVkZS9nZW5lcmljeDg2LWNvbW1vbi5pbmMgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwppbmRleCBlMzU2ODVjLi5mODNjZTVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYwpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICAgJHtYU0VSVkVSX1g4Nl9NT0RFU0VUVElOR30gXAogICAgICAgICAgICAiCiAKLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImxpbnV4LWZpcm13YXJlIGVlZS1hY3BpLXNjcmlwdHMiCitNQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTICs9ICJrZXJuZWwtbW9kdWxlcyBsaW51eC1maXJtd2FyZSIKIAogR0xJQkNfQURET05TID0gIm5wdGwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKaW5kZXggMzRmMTIzMC4uNmY1Yjk4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKQEAgLTEsNSArMSw1IEBACiAjQFRZUEU6IE1hY2hpbmUKLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3IgcnVubmluZyAKKyNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3IgcnVubmluZwogCiBUQVJHRVRfRlBVID0gIiIKIApAQCAtMTAsMTIgKzEwLDEyIEBACiBFWFRSQV9JTUFHRURFUEVORFMgKz0gInUtYm9vdCIKIFVCT09UX01BQ0hJTkUgPSAiTVBDODMxNUVSREJfY29uZmlnIgogCi1TRVJJQUxfQ09OU09MRSA9ICIxMTUyMDAgdHR5UzAiCitTRVJJQUxfQ09OU09MRVMgPSAiMTE1MjAwO3R0eVMwIgogCiBNQUNISU5FX0ZFQVRVUkVTID0gImtleWJvYXJkIHBjaSBleHQyIGV4dDMgc2VyaWFsIgogCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xNSUiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPSAibGludXgteW9jdG8iCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOCUiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC94c2VydmVyID89ICJ4c2VydmVyLXhvcmciCiBYU0VSVkVSID89ICJ4c2VydmVyLXhvcmcgXApAQCAtMzIsNCArMzIsNCBAQAogCiBJTUFHRV9GU1RZUEVTICs9ICJ3aWMgd2ljLmJtYXAiCiBXS1NfRklMRSA/PSAnbXBjODMxNWUtcmRiLndrcycKLUlNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC5iaW4gdUltYWdlIHVJbWFnZS1tcGM4MzE1ZXJkYi5kdGI7ZHRiIgorSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LmJpbiB1SW1hZ2UgbXBjODMxNWVyZGIuZHRiO2R0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5IGIvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKaW5kZXggMjZjNzc1Yy4uZGZkNzM5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKQEAgLTYsMjYgKzYsOSBAQAogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIHJ1bnFlbXUKIAogY2xhc3MgU3lzdGVtZGJvb3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKLSAgICBkZWYgX2NvbW1vbl9zZXR1cChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbW1vbiBzZXR1cCBmb3IgdGVzdCBjYXNlczogMTQ0NSwgMTUyOAotICAgICAgICAiIiIKLQotICAgICAgICAjIFNldCBFRklfUFJPVklERVIgPSAic3lzdGVtZGJvb3QiIGFuZCBNQUNISU5FID0gImdlbmVyaWN4ODYtNjQiIGluIGNvbmYvbG9jYWwuY29uZgotICAgICAgICBmZWF0dXJlcyA9ICdFRklfUFJPVklERVIgPSAic3lzdGVtZC1ib290IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnTUFDSElORSA9ICJnZW5lcmljeDg2LTY0IicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgZGVmIF9jb21tb25fYnVpbGQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBDb21tb24gYnVpbGQgZm9yIHRlc3QgY2FzZXM6IDE0NDUgLCAxNTI4Ci0gICAgICAgICIiIgotCi0gICAgICAgICMgQnVpbGQgYSBnZW5lcmljeDg2LTY0L2VmaSBzeXN0ZW1kYm9vdCBpbWFnZQotICAgICAgICBiaXRiYWtlKCdtdG9vbHMtbmF0aXZlIGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0KIAogICAgIEBPRVRlc3RJRCgxNDQ1KQorICAgIEBPRVRlc3RJRCgxNTI4KQogICAgIGRlZiB0ZXN0X2VmaV9zeXN0ZW1kYm9vdF9pbWFnZXNfY2FuX2JlX2J1aWx0KHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIHN5c3RlbWQtYm9vdCBpbWFnZXMgY2FuIGJlIGJ1aWx0IGNvcnJlY3RseQpAQCAtMzYsMjYgKzE5LDI1IEBACiAgICAgICAgIEF1dG9tYXRlZEJ5OiBKb3NlIFBlcmV6IENhcnJhbnphIDxqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbT4KICAgICAgICAgIiIiCiAKLSAgICAgICAgIyBXZSdkIHVzZSBERVBMT1lfRElSX0lNQUdFIGhlcmUsIGV4Y2VwdCB0aGF0IHdlIG5lZWQgaXRzIHZhbHVlIGZvcgotICAgICAgICAjIE1BQ0hJTkU9ImdlbmVyaWN4ODYtNjQgd2hpY2ggaXMgcHJvYmFibHkgbm90IHRoZSBvbmUgY29uZmlndXJlZAotICAgICAgICBzeXN0ZW1kYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignREVQTE9ZX0RJUicpLCAnaW1hZ2VzJywgJ2dlbmVyaWN4ODYtNjQnLCAnc3lzdGVtZC1ib290eDY0LmVmaScpCisgICAgICAgICMgU2V0IEVGSV9QUk9WSURFUiA9ICJzeXN0ZW1kYm9vdCIgYW5kIE1BQ0hJTkUgPSAiZ2VuZXJpY3g4Ni02NCIgaW4gY29uZi9sb2NhbC5jb25mCisgICAgICAgIGZlYXR1cmVzID0gJ0VGSV9QUk9WSURFUiA9ICJzeXN0ZW1kLWJvb3QiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdNQUNISU5FID0gImdlbmVyaWN4ODYtNjQiJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZmVhdHVyZXMpCiAKLSAgICAgICAgc2VsZi5fY29tbW9uX3NldHVwKCkKKyAgICAgICAgZGVwbG95ZGlyID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScsICJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICBzeXN0ZW1kYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnc3lzdGVtZC1ib290eDY0LmVmaScpCiAKICAgICAgICAgIyBFbnN1cmUgd2UncmUgYWN0dWFsbHkgdGVzdGluZyB0aGF0IHRoaXMgZ2V0cyBidWlsdCBhbmQgbm90IHRoYXQKICAgICAgICAgIyBpdCB3YXMgYXJvdW5kIGZyb20gYW4gZWFybGllciBidWlsZAogICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiBzeXN0ZW1kLWJvb3QnKQogICAgICAgICBydW5DbWQoJ3JtIC1mICVzJyAlIHN5c3RlbWRib290ZmlsZSkKIAotICAgICAgICBzZWxmLl9jb21tb25fYnVpbGQoKQorICAgICAgICAjIEJ1aWxkIGEgZ2VuZXJpY3g4Ni02NC9lZmkgc3lzdGVtZGJvb3QgaW1hZ2UKKyAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwnKQogCiAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoc3lzdGVtZGJvb3RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdTeXN0ZW1kLUJvb3QgZmlsZSAlcyBub3QgZm91bmQnICUgc3lzdGVtZGJvb3RmaWxlKQogCi0gICAgQE9FVGVzdElEKDE1MjgpCi0gICAgQE9FVGVzdERlcGVuZHMoWydzeXN0ZW1kX2Jvb3QuU3lzdGVtZGJvb3QudGVzdF9lZmlfc3lzdGVtZGJvb3RfaW1hZ2VzX2Nhbl9iZV9idWlsdCddKQotICAgIGRlZiB0ZXN0X2ltYWdlX2VmaV9maWxlKHNlbGYpOgotCiAgICAgICAgICIiIgogICAgICAgICBTdW1tYXJ5OiAgICAgIENoZWNrIGlmIEVGSSBib290bG9hZGVyIGZvciBzeXN0ZW1kIGlzIGNvcnJlY3RseSBidWlsZAogICAgICAgICBEZXBlbmRlbmNpZXM6IEltYWdlIHdhcyBidWlsdCBjb3JyZWN0bHkgb24gdGVzdGNhc2UgMTQ0NQpAQCAtNzEsMjggKzUzLDIxIEBACiAgICAgICAgIEF1dG9tYXRlZEJ5OiAgSm9zZSBQZXJleiBDYXJyYW56YSA8am9zZS5wZXJlei5jYXJyYW56YSBhdCBsaW51eC1pbnRlbC5jb20+CiAgICAgICAgICIiIgogCi0gICAgICAgIHN5c3RlbWRib290ZmlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdERVBMT1lfRElSJyksICdpbWFnZXMnLCAnZ2VuZXJpY3g4Ni02NCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbWQtYm9vdHg2NC5lZmknKQotICAgICAgICBzeXN0ZW1kYm9vdGltYWdlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwtZ2VuZXJpY3g4Ni02NC5oZGRpbWcnKQotICAgICAgICBpbWFnZWJvb3RmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0RFUExPWV9ESVInKSwgJ2ltYWdlcycsICdnZW5lcmljeDg2LTY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib290eDY0LmVmaScpCi0gICAgICAgIG1jb3B5bmF0aXZlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ1NUQUdJTkdfQklORElSX05BVElWRScpLCAnbWNvcHknKQorICAgICAgICBzeXN0ZW1kYm9vdGltYWdlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2NvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LmhkZGltZycpCisgICAgICAgIGltYWdlYm9vdGZpbGUgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnYm9vdHg2NC5lZmknKQorICAgICAgICBtY29weW5hdGl2ZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnLCAiY29yZS1pbWFnZS1taW5pbWFsIiksICdtY29weScpCiAKLSAgICAgICAgI0NsZWFuIGVudmlyb25tZW50IGJlZm9yZSBzdGFydCB0aGUgdGVzdAorICAgICAgICAjIENsZWFuIGVudmlyb25tZW50IGJlZm9yZSBzdGFydCB0aGUgdGVzdAogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKToKICAgICAgICAgICAgIHJ1bkNtZCgncm0gLWYgJXMnICUgaW1hZ2Vib290ZmlsZSkKIAotICAgICAgICAgICAgI1N0ZXAgMQotICAgICAgICAgICAgcnVuQ21kKCclcyAtaSAlcyA6OkVGSS9CT09UL2Jvb3R4NjQuZWZpICVzJyAlIChtY29weW5hdGl2ZSAsc3lzdGVtZGJvb3RpbWFnZSwKKyAgICAgICAgcnVuQ21kKCclcyAtaSAlcyA6OkVGSS9CT09UL2Jvb3R4NjQuZWZpICVzJyAlIChtY29weW5hdGl2ZSAsc3lzdGVtZGJvb3RpbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2Vib290ZmlsZSkpCiAKLSAgICAgICAgICAgICNTdGVwIDIKLSAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ2Jvb3R4NjQuZWZpIGZpbGUgJXMgd2FzIG5vdCBjb3BpZWQgZnJvbSBpbWFnZScKKyAgICAgICAgZm91bmQgPSBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdib290eDY0LmVmaSBmaWxlICVzIHdhcyBub3QgY29waWVkIGZyb20gaW1hZ2UnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBpbWFnZWJvb3RmaWxlKQogCi0gICAgICAgICAgICAjU3RlcCAzCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ21kNXN1bSAlcyAlcycgJSAoc3lzdGVtZGJvb3RmaWxlLCBpbWFnZWJvb3RmaWxlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zcGxpdCgpWzBdLCByZXN1bHQub3V0cHV0LnNwbGl0KClbMl0sCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnbWQ1c3VtICVzICVzJyAlIChzeXN0ZW1kYm9vdGZpbGUsIGltYWdlYm9vdGZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3BsaXQoKVswXSwgcmVzdWx0Lm91dHB1dC5zcGxpdCgpWzJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgd2FzIG5vdCBjb3JyZWNsdHkgZ2VuZXJhdGVkJyAlIGltYWdlYm9vdGZpbGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNDRkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMCwwICsxLDE1IEBACitLQlJBTkNIX2dlbmVyaWN4ODYgID0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInN0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKK0tCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJzdGFuZGFyZC9iZWFnbGVib25lIgorS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKKworS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKKworQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCitDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKK0NPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDI4MDlhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYmFwcGVuZAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUtCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS0JSQU5DSF9lZGdlcm91dGVyID0gInN0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjdlN2FjM2YwZmRhOTcwN2U5NGIzMzExYTQ1MTBhZTA4MGNkODYyMzgiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI3ZTdhYzNmMGZkYTk3MDdlOTRiMzMxMWE0NTEwYWUwODBjZDg2MjM4IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiODllMDAzNzQ2ZWVlNTRlODZiYzc4ZTExNzBlNzAyOWQ2NTk3YjU4MyIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjg5ZTAwMzc0NmVlZTU0ZTg2YmM3OGUxMTcwZTcwMjlkNjU5N2I1ODMiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjcwODBhNWZlNmFmMzM4NTc2MjA3ZmZmOTk5ZWEyY2EzNWU2ODk5OTciCi0KLQotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCi1DT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgotCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi4yNCIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjEyLjI0IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuMTIuMjQiCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xMi4yNCIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTIuMjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTQuYmJhcHBlbmQKaW5kZXggZmViOGQyZS4uNTAyNDg1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE0LmJiYXBwZW5kCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNC5iYmFwcGVuZApAQCAtOCwxMSArOCwxMSBAQAogS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgogS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKIAotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiMDg0YWY5NjI0ZDI2OGRkZjRmZDY1YjJmOWU4ZTUwY2EyZjIyZTYyYiIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjA4NGFmOTYyNGQyNjhkZGY0ZmQ2NWIyZjllOGU1MGNhMmYyMmU2MmIiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICI2NWQxYzg0OTUzNDE3OWJiZmE0OTRmNzc5NDdmOGJlNjE1ZTk4NzFhIgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiZDYyZGRmYTI2YTU5YzgzZjYxMjg3OTBiN2FhMmJhYWRjMDRkMjk2MCIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiODBhMTA2ZWNmNzM3YjY5ODY0ZTA3Yjk1NWVjY2I2MmY4MDljZjEyMCIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjJjNWNhYTdlODQzMTFmMmEwMDk3OTc0YTY5N2FjMWY1OTAzMDUzMGUiCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIyYzVjYWE3ZTg0MzExZjJhMDA5Nzk3NGE2OTdhYzFmNTkwMzA1MzBlIgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZTA2YmZhMThjNzI3YmQwZTZlMTBjZjI2ZDlmMTYxZTRjNzkxZjUyYiIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImI4ODA1ZGU3N2RjZjhmNTlkODM2OGZlZTQ5MjFjMTQ2YzEzMDBhNmEiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gImY4OGU4NzM2MGIxMGY4ZmJkODUzYTdkNDEyOTgyZTY2MjBmM2Y5NmQiCiAKIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgpAQCAtMjAsOCArMjAsOCBAQAogQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xNC42NyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjE0LjY3IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuMTQuNDgiCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xNC40OCIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTQuNDgiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xNC43NiIKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjE0Ljc2IgorTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuMTQuNzEiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xNC43MSIKK0xJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTQuNzEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTUuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2MWRhYTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xNS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE1L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTUvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKLUtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE1L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjUxMjczZmY3OWY0YWQ5MzBmNGE3ODgyNTdmNThlMTI2NmNiMjM2ZTMiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICI1MTI3M2ZmNzlmNGFkOTMwZjRhNzg4MjU3ZjU4ZTEyNjZjYjIzNmUzIgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjBiMzJlZGM0NmRmZTdjNDBiZjU0NTFlOWI3NTMzYzgyM2JiMmM2YzQiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTUuMTgiCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xNS4xOCIKLUxJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE1LjE4IgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjQuMTUuMTgiCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI0LjE1LjE4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE4LmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE4LmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiNTk5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTguYmJhcHBlbmQKQEAgLTAsMCArMSwyNyBAQAorS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NC4xOC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NC4xOC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY0LjE4L3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCitLQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjQuMTgvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY0LjE4L3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gIjMzODU5YjMwNzdjODNkOGEwMjQ5NDZiYTA2YTU5OTkwNTQ2ZmNiYzciCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICIzMzg1OWIzMDc3YzgzZDhhMDI0OTQ2YmEwNmE1OTk5MDU0NmZjYmM3IgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiMGNkYzg1NjRjNjE5NThhMzk3MDRkOTdlMDA4MTIwYmQ3Yzc2MmY2MCIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gIjBjZGM4NTY0YzYxOTU4YTM5NzA0ZDk3ZTAwODEyMGJkN2M3NjJmNjAiCitTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjIwYmUyMjMxYmIwNDdiMDIyNDhkN2Y5NjVjMWMzYWYwYzZiZTNhNWUiCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCitDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKKworTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjQuMTguMTQiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xOC4xNCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI0LjE4LjkiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xOC45IgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNC4xOC45IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvYmVhZ2xlYm9uZS15b2N0by53a3MgYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9iZWFnbGVib25lLXlvY3RvLndrcwppbmRleCA5NjdjYWQ3Li5iNzVmMjM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9iZWFnbGVib25lLXlvY3RvLndrcworKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9iZWFnbGVib25lLXlvY3RvLndrcwpAQCAtMiw1ICsyLDUgQEAKICMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhIHBhcnRpdGlvbmVkIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUuCiAjIEJvb3QgZmlsZXMgYXJlIGxvY2F0ZWQgaW4gdGhlIGZpcnN0IHZmYXQgcGFydGl0aW9uLgogCi1wYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGFydGl0aW9uIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9dmZhdCAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiA0IC0tc2l6ZSAxNgotcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGsgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHJvb3QgLS1hbGlnbiA0CitwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctcGFydGl0aW9uIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9dmZhdCAtLWxhYmVsIGJvb3QgLS1hY3RpdmUgLS1hbGlnbiA0IC0tc2l6ZSAxNiAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPXUtYm9vdCIgLS11c2UtdXVpZAorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGsgLS1mc3R5cGU9ZXh0NCAtLWxhYmVsIHJvb3QgLS1hbGlnbiA0IC0tdXNlLXV1aWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FsbGFyY2guYmJjbGFzcwppbmRleCA1MWJhNTA5Li41YmQ1YzQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzCkBAIC0yLDcgKzIsMTggQEAKICMgVGhpcyBjbGFzcyBpcyB1c2VkIGZvciBhcmNoaXRlY3R1cmUgaW5kZXBlbmRlbnQgcmVjaXBlcy9kYXRhIGZpbGVzICh1c3VhbGx5IHNjcmlwdHMpCiAjCiAKLVBBQ0tBR0VfQVJDSCA9ICJhbGwiCitweXRob24gYWxsYXJjaF9wYWNrYWdlX2FyY2hfaGFuZGxlciAoKSB7CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlIiwgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibmF0aXZlc2RrIiwgZCkgXAorICAgICAgICBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJjcm9zc3NkayIsIGQpOgorICAgICAgICByZXR1cm4KKworICAgIHZhcmlhbnRzID0gZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikKKyAgICBpZiBub3QgdmFyaWFudHM6CisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCAiYWxsIiApCit9CisKK2FkZGhhbmRsZXIgYWxsYXJjaF9wYWNrYWdlX2FyY2hfaGFuZGxlcgorYWxsYXJjaF9wYWNrYWdlX2FyY2hfaGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIgogCiBweXRob24gKCkgewogICAgICMgQWxsb3cgdGhpcyBjbGFzcyB0byBiZSBpbmNsdWRlZCBidXQgb3ZlcnJpZGRlbiAtIG9ubHkgc2V0CkBAIC00NSw2ICs1Niw3IEBACiAgICAgICAgICMgVGhlc2UgbXVsdGlsaWIgdmFsdWVzIHNob3VsZG4ndCBjaGFuZ2UgYWxsYXJjaCBwYWNrYWdlcyBzbyBleGNsdWRlIHRoZW0KICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJlbWl0X3BrZ2RhdGEiLCAidmFyZGVwc2V4Y2x1ZGUiLCAiIE1VTFRJTElCX1ZBUklBTlRTIikKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJ3cml0ZV9zcGVjZmlsZSIsICJ2YXJkZXBzZXhjbHVkZSIsICIgTVVMVElMSUJTIikKKyAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJkb19wYWNrYWdlIiwgInZhcmRlcHNleGNsdWRlIiwgIiBwYWNrYWdlX2RvX3NobGlicyIpCiAgICAgZWxpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBkKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgogICAgICAgICBiYi5lcnJvcigiUGxlYXNlIGVuc3VyZSByZWNpcGUgJXMgc2V0cyBQQUNLQUdFX0FSQ0ggYmVmb3JlIGluaGVyaXQgcGFja2FnZWdyb3VwIiAlIGQuZ2V0VmFyKCJGSUxFIikpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcwppbmRleCBkNjhhZGQ5Li4wYTlmZTRmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKQEAgLTk4LDkgKzk4LDEyIEBACiAKICAgICAgICAgIyBUaGVyZSBpcyBhIGNvcm5lciBjYXNlIHdpdGggImdjYy1zb3VyY2UtJHtQVn0iIHJlY2lwZXMsIHRoZXkgZG9uJ3QgaGF2ZQogICAgICAgICAjIHRoZSAiZG9fY29uZmlndXJlIiB0YXNrLCBzbyB3ZSBuZWVkIHRvIHVzZSAiZG9fcHJlY29uZmlndXJlIgotICAgICAgICBpZiBwbi5zdGFydHN3aXRoKCJnY2Mtc291cmNlLSIpOgorICAgICAgICBkZWYgaGFzVGFzayh0YXNrKToKKyAgICAgICAgICAgIHJldHVybiBib29sKGQuZ2V0VmFyRmxhZyh0YXNrLCAidGFzayIsIEZhbHNlKSkgYW5kIG5vdCBib29sKGQuZ2V0VmFyRmxhZyh0YXNrLCAibm9leGVjIiwgRmFsc2UpKQorCisgICAgICAgIGlmIGhhc1Rhc2soImRvX3ByZWNvbmZpZ3VyZSIpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19hcl9jb25maWd1cmVkJywgJ2RlcGVuZHMnLCAnICVzOmRvX3ByZWNvbmZpZ3VyZScgJSBwbikKLSAgICAgICAgZWxzZToKKyAgICAgICAgZWxpZiBoYXNUYXNrKCJkb19jb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19jb25maWd1cmUnICUgcG4pCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fZGVwbG95X2FyY2hpdmVzJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCiAKQEAgLTI0MywyMSArMjQ2LDI2IEBACiAgICAgICAgICMgZG9fY29uZmlndXJlLCB3ZSBhcmNoaXZlIHRoZSBhbHJlYWR5IGNvbmZpZ3VyZWQgJHtTfSB0bwogICAgICAgICAjIGluc3RlYWQgb2YuCiAgICAgICAgIGVsaWYgcG4gIT0gJ2xpYnRvb2wtbmF0aXZlJzoKKyAgICAgICAgICAgIGRlZiBydW5UYXNrKHRhc2spOgorICAgICAgICAgICAgICAgIHByZWZ1bmNzID0gZC5nZXRWYXJGbGFnKHRhc2ssICdwcmVmdW5jcycpIG9yICcnCisgICAgICAgICAgICAgICAgZm9yIGZ1bmMgaW4gcHJlZnVuY3Muc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZnVuYyAhPSAic3lzcm9vdF9jbGVhbnNzdGF0ZSI6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZnVuYywgZCkKKyAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmModGFzaywgZCkKKyAgICAgICAgICAgICAgICBwb3N0ZnVuY3MgPSBkLmdldFZhckZsYWcodGFzaywgJ3Bvc3RmdW5jcycpIG9yICcnCisgICAgICAgICAgICAgICAgZm9yIGZ1bmMgaW4gcG9zdGZ1bmNzLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgICAgIGlmIGZ1bmMgIT0gJ2RvX3FhX2NvbmZpZ3VyZSc6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZnVuYywgZCkKKwogICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIFdPUktESVIgdG8gbWFrZSBkb19jb25maWd1cmUgcnVuIGluIGFub3RoZXIgZGlyLgogICAgICAgICAgICAgZC5zZXRWYXIoJ1dPUktESVInLCBkLmdldFZhcignQVJDSElWRVJfV09SS0RJUicpKQotICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCk6Ci0gICAgICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19rZXJuZWxfY29uZmlnbWUnLCBkKQotICAgICAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY21ha2UnLCBkKToKLSAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2dlbmVyYXRlX3Rvb2xjaGFpbl9maWxlJywgZCkKLSAgICAgICAgICAgIHByZWZ1bmNzID0gZC5nZXRWYXJGbGFnKCdkb19jb25maWd1cmUnLCAncHJlZnVuY3MnKQotICAgICAgICAgICAgZm9yIGZ1bmMgaW4gKHByZWZ1bmNzIG9yICcnKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGlmIGZ1bmMgIT0gInN5c3Jvb3RfY2xlYW5zc3RhdGUiOgotICAgICAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoZnVuYywgZCkKLSAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fY29uZmlndXJlJywgZCkKLSAgICAgICAgICAgIHBvc3RmdW5jcyA9IGQuZ2V0VmFyRmxhZygnZG9fY29uZmlndXJlJywgJ3Bvc3RmdW5jcycpCi0gICAgICAgICAgICBmb3IgZnVuYyBpbiAocG9zdGZ1bmNzIG9yICcnKS5zcGxpdCgpOgotICAgICAgICAgICAgICAgIGlmIGZ1bmMgIT0gImRvX3FhX2NvbmZpZ3VyZSI6Ci0gICAgICAgICAgICAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYyhmdW5jLCBkKQorCisgICAgICAgICAgICBwcmVjZWVkcyA9IGJiLmJ1aWxkLnByZWNlZWR0YXNrKCdkb19jb25maWd1cmUnLCBGYWxzZSwgZCkKKyAgICAgICAgICAgIGZvciB0YXNrIGluIHByZWNlZWRzOgorICAgICAgICAgICAgICAgIGlmIHRhc2sgIT0gJ2RvX3BhdGNoJyBhbmQgdGFzayAhPSAnZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCc6CisgICAgICAgICAgICAgICAgICAgIHJ1blRhc2sodGFzaykKKyAgICAgICAgICAgIHJ1blRhc2soJ2RvX2NvbmZpZ3VyZScpCisKICAgICAgICAgc3JjZGlyID0gZC5nZXRWYXIoJ1MnKQogICAgICAgICBidWlsZGRpciA9IGQuZ2V0VmFyKCdCJykKICAgICAgICAgaWYgc3JjZGlyICE9IGJ1aWxkZGlyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwppbmRleCBjYzg1N2FjLi44NzY4YTZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcwpAQCAtMjI1LDcgKzIyNSw3IEBACiAJCQlmaW5kICR7U30gLWlnbm9yZV9yZWFkZGlyX3JhY2UgLW5hbWUgJGkgLWRlbGV0ZQogCQlkb25lCiAKLQkJYmJub3RlIEV4ZWN1dGluZyBBQ0xPQ0FMPVwiJEFDTE9DQUxcIiBhdXRvcmVjb25mIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCisJCWJibm90ZSBFeGVjdXRpbmcgQUNMT0NBTD1cIiRBQ0xPQ0FMXCIgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCiAJCUFDTE9DQUw9IiRBQ0xPQ0FMIiBhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlICR7RVhUUkFfQVVUT1JFQ09ORn0gJGFjcGF0aHMgfHwgZGllICJhdXRvcmVjb25mIGV4ZWN1dGlvbiBmYWlsZWQuIgogCQljZCAkb2xkZGlyCiAJZmkKQEAgLTIzNyw3ICsyMzcsNyBAQAogfQogCiBhdXRvdG9vbHNfZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCisJb2VfcnVubWFrZQogfQogCiBhdXRvdG9vbHNfZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwppbmRleCAyYTZhNmNiLi5iYzliMjM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCkBAIC0xMjgsNiArMTI4LDEyIEBACiAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhzcmN0b29sLCBkZXN0dG9vbCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbm90Zm91bmQuYXBwZW5kKHRvb2wpCisgICAgIyBGb3JjZSAicHl0aG9uIiAtPiAicHl0aG9uMiIKKyAgICBkZXN0dG9vbCA9IG9zLnBhdGguam9pbihkZXN0LCAicHl0aG9uIikKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdHRvb2wpOgorICAgICAgICBzcmN0b29sID0gInB5dGhvbjIiCisgICAgICAgIG9zLnN5bWxpbmsoc3JjdG9vbCwgZGVzdHRvb2wpCisKICAgICBpZiBub3Rmb3VuZCBhbmQgZmF0YWw6CiAgICAgICAgIGJiLmZhdGFsKCJUaGUgZm9sbG93aW5nIHJlcXVpcmVkIHRvb2xzIChhcyBzcGVjaWZpZWQgYnkgSE9TVFRPT0xTKSBhcHBlYXIgdG8gYmUgdW5hdmFpbGFibGUgaW4gUEFUSCwgcGxlYXNlIGluc3RhbGwgdGhlbSBpbiBvcmRlciB0byBwcm9jZWVkOlxuICAlcyIgJSAiICIuam9pbihub3Rmb3VuZCkpCiAKQEAgLTE1Miw3ICsxNTgsNyBAQAogYWRkdGFzayB1bnBhY2sgYWZ0ZXIgZG9fZmV0Y2gKIGRvX3VucGFja1tkaXJzXSA9ICIke1dPUktESVJ9IgogCi1kb191bnBhY2tbY2xlYW5kaXJzXSA9ICIke0BkLmdldFZhcignUycpIGlmIGQuZ2V0VmFyKCdTJykgIT0gZC5nZXRWYXIoJ1dPUktESVInKSBlbHNlIG9zLnBhdGguam9pbignJHtTfScsICdwYXRjaGVzJyl9IgorZG9fdW5wYWNrW2NsZWFuZGlyc10gPSAiJHtAZC5nZXRWYXIoJ1MnKSBpZiBvcy5wYXRoLm5vcm1wYXRoKGQuZ2V0VmFyKCdTJykpICE9IG9zLnBhdGgubm9ybXBhdGgoZC5nZXRWYXIoJ1dPUktESVInKSkgZWxzZSBvcy5wYXRoLmpvaW4oJyR7U30nLCAncGF0Y2hlcycpfSIKIAogcHl0aG9uIGJhc2VfZG9fdW5wYWNrKCkgewogICAgIHNyY191cmkgPSAoZC5nZXRWYXIoJ1NSQ19VUkknKSBvciAiIikuc3BsaXQoKQpAQCAtNTIyLDE5ICs1MjgsMTggQEAKICAgICAgICAgICAgIGluY29tcGF0d2wgPSBbXQogICAgICAgICAgICAgZm9yIGxpYyBpbiBiYWRfbGljZW5zZXM6CiAgICAgICAgICAgICAgICAgc3BkeF9saWNlbnNlID0gcmV0dXJuX3NwZHgoZCwgbGljKQotICAgICAgICAgICAgICAgIGZvciB3IGluIFsiTEdQTHYyX1dISVRFTElTVF8iLCAiV0hJVEVMSVNUXyJdOgotICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuZXh0ZW5kKChkLmdldFZhcih3ICsgbGljKSBvciAiIikuc3BsaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgc3BkeF9saWNlbnNlOgotICAgICAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIodyArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgICAgICcnJwotICAgICAgICAgICAgICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIHdoYXQgd2UgYXJlIHdoaXRlbGlzdGluZyBhbmQgd2h5LiBJZiBwbiBpcwotICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIG5vdGUgdGhhdCB0aGUgaW1hZ2UgdGhhdAotICAgICAgICAgICAgICAgICAgICBpcyBjcmVhdGVkIG1heSBpbmZhY3QgY29udGFpbiBpbmNvbXBhdGlibGUgbGljZW5zZXMgZGVzcGl0ZQotICAgICAgICAgICAgICAgICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSBiZWluZyBzZXQuCi0gICAgICAgICAgICAgICAgICAgICcnJwotICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIodyArIGxpYykgb3IgIiIpLnNwbGl0KCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY29tcGF0d2wuZXh0ZW5kKChkLmdldFZhcih3ICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBsaWMpIG9yICIiKS5zcGxpdCgpKQorICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKKyAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICAnJycKKyAgICAgICAgICAgICAgICBXZSBuZWVkIHRvIHRyYWNrIHdoYXQgd2UgYXJlIHdoaXRlbGlzdGluZyBhbmQgd2h5LiBJZiBwbiBpcworICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbm90ZSB0aGF0IHRoZSBpbWFnZSB0aGF0CisgICAgICAgICAgICAgICAgaXMgY3JlYXRlZCBtYXkgaW5mYWN0IGNvbnRhaW4gaW5jb21wYXRpYmxlIGxpY2Vuc2VzIGRlc3BpdGUKKyAgICAgICAgICAgICAgICBJTkNPTVBBVElCTEVfTElDRU5TRSBiZWluZyBzZXQuCisgICAgICAgICAgICAgICAgJycnCisgICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIGxpYykgb3IgIiIpLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgaWYgc3BkeF9saWNlbnNlOgorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIoIldISVRFTElTVF8iICsgc3BkeF9saWNlbnNlKSBvciAiIikuc3BsaXQoKSkKIAogICAgICAgICAgICAgaWYgbm90IHBuIGluIHdoaXRlbGlzdDoKICAgICAgICAgICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQpAQCAtNjI0LDcgKzYyOSw3IEBACiAgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnppcCcpIG9yIHBhdGguZW5kc3dpdGgoJy5qYXInKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIHVuemlwLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAotICAgICAgICAjIGZpbGUgaXMgbmVlZGVkIGJ5IHJwbTJjcGlvLnNoCisgICAgICAgICMgU29tZSBycG0gZmlsZXMgbWF5IGJlIGNvbXByZXNzZWQgaW50ZXJuYWxseSB1c2luZyB4eiAoZm9yIGV4YW1wbGUsIHJwbXMgZnJvbSBGZWRvcmEpCiAgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnJwbScpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IDYzOTgwZjcuLjQwYjI5MmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCkBAIC03Nyw2ICs3Nyw3IEBACiAKICAgICBpbXBvcnQgcmUKICAgICBpbXBvcnQganNvbgorICAgIGltcG9ydCBzaGxleAogICAgIGltcG9ydCBlcnJubwogCiAgICAgcGtnaGlzdGRpciA9IGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRElSX1BBQ0tBR0UnKQpAQCAtMjQ0LDcgKzI0NSw3IEBACiAgICAgICAgICAgICAgICAga2V5ID0gaXRlbVswXQogICAgICAgICAgICAgICAgIGlmIGtleS5lbmRzd2l0aCgnXycgKyBwa2cpOgogICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXlbOi1sZW4ocGtnKS0xXQotICAgICAgICAgICAgICAgIHBrZ2RhdGFba2V5XSA9IGl0ZW1bMV0KKyAgICAgICAgICAgICAgICBwa2dkYXRhW2tleV0gPSBpdGVtWzFdLmVuY29kZSgnbGF0aW4tMScpLmRlY29kZSgndW5pY29kZV9lc2NhcGUnKQogCiAgICAgICAgIHBrZ2UgPSBwa2dkYXRhLmdldCgnUEtHRScsICcwJykKICAgICAgICAgcGtndiA9IHBrZ2RhdGFbJ1BLR1YnXQpAQCAtMjg3LDcgKzI4OCw3IEBACiAgICAgICAgIGRpY3R2YWwgPSBqc29uLmxvYWRzKHZhbCkKICAgICAgICAgZmlsZWxpc3QgPSBsaXN0KGRpY3R2YWwua2V5cygpKQogICAgICAgICBmaWxlbGlzdC5zb3J0KCkKLSAgICAgICAgcGtnaW5mby5maWxlbGlzdCA9ICIgIi5qb2luKGZpbGVsaXN0KQorICAgICAgICBwa2dpbmZvLmZpbGVsaXN0ID0gIiAiLmpvaW4oW3NobGV4LnF1b3RlKHgpIGZvciB4IGluIGZpbGVsaXN0XSkKIAogICAgICAgICBwa2dpbmZvLnNpemUgPSBpbnQocGtnZGF0YVsnUEtHU0laRSddKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jbHV0dGVyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbHV0dGVyLmJiY2xhc3MKaW5kZXggZjVjZDA0Zi4uODU1MDM2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY2x1dHRlci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NsdXR0ZXIuYmJjbGFzcwpAQCAtMSw0ICsxLDMgQEAKLQogZGVmIGdldF9taW5vcl9kaXIodik6CiAgICAgaW1wb3J0IHJlCiAgICAgbSA9IHJlLm1hdGNoKCJeKFswLTldKylcLihbMC05XSspIiwgdikKQEAgLTEyLDExICsxMSw3IEBACiBWRVJNSU5PUiA9ICIke0BnZXRfbWlub3JfZGlyKCIke1BWfSIpfSIKIFJFQUxOQU1FID0gIiR7QGdldF9yZWFsX25hbWUoIiR7QlBOfSIpfSIKIAotQ0xVVFRFUl9TUkNfRlRQID0gIiR7R05PTUVfTUlSUk9SfS8ke1JFQUxOQU1FfS8ke1ZFUk1JTk9SfS8ke1JFQUxOQU1FfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgotCi1DTFVUVEVSX1NSQ19HSVQgPSAiZ2l0Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS8ke1JFQUxOQU1FfTtwcm90b2NvbD1odHRwcyIKLQotU1JDX1VSSSA9ICIke0NMVVRURVJfU1JDX0ZUUH0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke1JFQUxOQU1FfS8ke1ZFUk1JTk9SfS8ke1JFQUxOQU1FfS0ke1BWfS50YXIueHo7bmFtZT1hcmNoaXZlIgogUyA9ICIke1dPUktESVJ9LyR7UkVBTE5BTUV9LSR7UFZ9IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwppbmRleCBmY2ZkNWRkLi5mZDQwYTk4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKQEAgLTU0LDggKzU0LDYgQEAKIE9FQ01BS0VfVEFSR0VUX0NPTVBJTEUgPz0gImFsbCIKIE9FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPz0gImluc3RhbGwiCiAKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vY21ha2UiCi0KICMgQ01ha2UgZXhwZWN0cyB0YXJnZXQgYXJjaGl0ZWN0dXJlcyBpbiB0aGUgZm9ybWF0IG9mIHVuYW1lKDIpLAogIyB3aGljaCBkbyBub3QgYWx3YXlzIG1hdGNoIFRBUkdFVF9BUkNILCBzbyBhbGwgdGhlIG5lY2Vzc2FyeQogIyBjb252ZXJzaW9ucyBzaG91bGQgaGFwcGVuIGhlcmUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jb21wcmVzc19kb2MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NvbXByZXNzX2RvYy5iYmNsYXNzCmluZGV4IDA2OWQ1MzQuLjQ1YmI4ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NvbXByZXNzX2RvYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NvbXByZXNzX2RvYy5iYmNsYXNzCkBAIC03OSw2ICs3OSw3IEBACiAgICAgcmV0dXJuIGhhcmRsaW5rX2RpY3QKIAogZGVmIF9wcm9jZXNzX2hhcmRsaW5rKGhhcmRsaW5rX2RpY3QsIGNvbXByZXNzX21vZGUsIHNoZWxsX2NtZHMsIGRlY29tcHJlc3M9RmFsc2UpOgorICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgZm9yIHRhcmdldCBpbiBoYXJkbGlua19kaWN0OgogICAgICAgICBpZiBkZWNvbXByZXNzOgogICAgICAgICAgICAgY29tcHJlc3NfZm9ybWF0ID0gX2dldF9jb21wcmVzc19mb3JtYXQodGFyZ2V0LCBzaGVsbF9jbWRzLmtleXMoKSkKQEAgLTg3LDcgKzg4LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNtZCA9ICIlcyAtZiAlcyIgJSAoc2hlbGxfY21kc1tjb21wcmVzc19tb2RlXSwgdGFyZ2V0KQogICAgICAgICAgICAgYmIubm90ZSgnY29tcHJlc3MgaGFyZGxpbmsgJXMnICUgdGFyZ2V0KQotICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IHN1YnByb2Nlc3MuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKICAgICAgICAgaWYgcmV0dmFsOgogICAgICAgICAgICAgYmIud2FybigiZGUvY29tcHJlc3MgZmlsZSBmYWlsZWQgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKICAgICAgICAgICAgIHJldHVybgpAQCAtMTc2LDcgKzE3Nyw3IEBACiAgICAgICAgICAgICAgICAgIyBOb3JtYWwgZmlsZQogICAgICAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoY29tcHJlc3NfY21kc1tjb21wcmVzc19tb2RlXSwgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQpCisgICAgICAgICAgICAgICAgICAgIChyZXR2YWwsIG91dHB1dCkgPSBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgICAgICAgICAgICAgIGlmIHJldHZhbDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oImNvbXByZXNzIGZhaWxlZCAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTIwNiw3ICsyMDcsNyBAQAogICAgICAgICAgICAgICAgICMgTm9ybWFsIGZpbGUKICAgICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKGZpbGUpOgogICAgICAgICAgICAgICAgICAgICBjbWQgPSAiJXMgJXMiICUgKGRlY29tcHJlc3NfY21kc1tjb21wcmVzc19mb3JtYXRdLCBmaWxlKQotICAgICAgICAgICAgICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAgICAgICAgICAgICAgICAgKHJldHZhbCwgb3V0cHV0KSA9IHN1YnByb2Nlc3MuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKICAgICAgICAgICAgICAgICAgICAgaWYgcmV0dmFsOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiZGVjb21wcmVzcyBmYWlsZWQgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuLmJiY2xhc3MKaW5kZXggOGUwNzllMC4uYTViYzMwMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NwYW4uYmJjbGFzcwpAQCAtMTYsOCArMTYsNyBAQAogZXhwb3J0IFBFUkxIT1NUTElCID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9LyIKIAogY3Bhbl9kb19jb25maWd1cmUgKCkgewotCWV4cG9ydCBQRVJMNUxJQj0iJHtQRVJMX0FSQ0hMSUJ9IgotCXllcyAnJyB8IHBlcmwgJHtFWFRSQV9QRVJMRkxBR1N9IE1ha2VmaWxlLlBMIElOU1RBTExESVJTPXZlbmRvciAke0VYVFJBX0NQQU5GTEFHU30KKwl5ZXMgJycgfCBwZXJsICR7RVhUUkFfUEVSTEZMQUdTfSBNYWtlZmlsZS5QTCBJTlNUQUxMRElSUz12ZW5kb3IgTk9fUEVSTExPQ0FMPTEgTk9fUEFDS0xJU1Q9MSAke0VYVFJBX0NQQU5GTEFHU30KIAogCSMgTWFrZWZpbGUuUExzIGNhbiBleGl0IHdpdGggc3VjY2VzcyB3aXRob3V0IGdlbmVyYXRpbmcgYQogCSMgTWFrZWZpbGUsIGUuZy4gaW4gY2FzZXMgb2YgbWlzc2luZyBjb25maWd1cmUgdGltZQpAQCAtNDEsNiArNDAsMTYgQEAKIAlmaQogfQogCitkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICBmaW5kIC4gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLUUgLWkgXAorICAgICAgICAgICAtZSAnczpMRF9SVU5fUEFUSCA/PSA/Ij9bXiJdKiI/OjpnJworfQorCitkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAgICBmaW5kIC4gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLUUgLWkgXAorICAgICAgICAgICAtZSAnczpMRF9SVU5fUEFUSCA/PSA/Ij9bXiJdKiI/OjpnJworfQorCiBjcGFuX2RvX2NvbXBpbGUgKCkgewogCW9lX3J1bm1ha2UgUEFTVEhSVV9JTkM9IiR7Q0ZMQUdTfSIgTEQ9IiR7Q0NMRH0iCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuX2J1aWxkLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcGFuX2J1aWxkLmJiY2xhc3MKaW5kZXggZmFjMDc0ZC4uOWEyYWQ4OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Bhbl9idWlsZC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NwYW5fYnVpbGQuYmJjbGFzcwpAQCAtMzAsNyArMzAsNyBAQAogfQogCiBjcGFuX2J1aWxkX2RvX2NvbXBpbGUgKCkgewotICAgICAgICBwZXJsIEJ1aWxkIHZlcmJvc2U9MQorICAgICAgICBwZXJsIEJ1aWxkIC0tcGVybCAiJHtiaW5kaXJ9L3BlcmwiIHZlcmJvc2U9MQogfQogCiBjcGFuX2J1aWxkX2RvX2luc3RhbGwgKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKaW5kZXggZWU4YWE2MS4uYWNkZTMzMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCkBAIC0zMCw3ICszMCw3IEBACiAgICAgaWYgZC5nZXRWYXIoIk1PRElGWVRPUyIpICE9ICIxIjoKICAgICAgICAgcmV0dXJuCiAKLSAgICBpZiBkLmdldFZhcigiVENMSUJDIikgPT0gImJhcmVtZXRhbCI6CisgICAgaWYgZC5nZXRWYXIoIlRDTElCQyIpIGluIFsgJ2JhcmVtZXRhbCcsICduZXdsaWInIF06CiAgICAgICAgIHJldHVybgogCiAgICAgdG9zID0gZC5nZXRWYXIoIlRBUkdFVF9PUyIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwppbmRleCA0ZTg1Y2FiLi4zNGQ3OTUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKQEAgLTM3LDcgKzM3LDYgQEAKIENGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCiBDWFhGTEFHUyA9ICIke0JVSUxEX0NGTEFHU30iCiBMREZMQUdTID0gIiR7QlVJTERfTERGTEFHU30iCi1MREZMQUdTX2J1aWxkLWRhcndpbiA9ICItTCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSIKIAogVE9PTENIQUlOX09QVElPTlMgPSAiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZlNWE1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcwpAQCAtMCwwICsxLDE0MyBAQAorIyBUaGlzIGJiY2xhc3MgaW1wbGVtZW50cyBkZXZpY2UgdHJlZSBjb21wbGlhdGlvbiBmb3IgdXNlciBwcm92aWRlZCBkZXZpY2UgdHJlZQorIyBzb3VyY2VzLiBUaGUgY29tcGlsYXRpb24gb2YgdGhlIGRldmljZSB0cmVlIHNvdXJjZXMgaXMgdGhlIHNhbWUgYXMgdGhlIGtlcm5lbAorIyBkZXZpY2UgdHJlZSBjb21waWxhdGlvbiBwcm9jZXNzLCB0aGlzIGluY2x1ZGVzIGJlaW5nIGFibGUgdG8gaW5jbHVkZSBzb3VyY2VzCisjIGZyb20gdGhlIGtlcm5lbCBzdWNoIGFzIHNvYyBkdHNpIGZpbGVzIG9yIGhlYWRlciBmaWxlcyBzdWNoIGFzIGdwaW8uaC4gSW4KKyMgYWRkaXRpb24gdG8gZGV2aWNlIHRyZWVzIHRoaXMgYmJjbGFzcyBhbHNvIGhhbmRsZXMgY29tcGlsYXRpb24gb2YgZGV2aWNlIHRyZWUKKyMgb3ZlcmxheXMuCisjCisjIFRoZSBvdXRwdXQgb2YgdGhpcyBjbGFzcyBiZWhhdmVzIHNpbWlsYXIgdG8gaG93IGtlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKKyMgb3BlcmF0ZXMgaW4gdGhhdCB0aGUgb3V0cHV0IGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAvYm9vdC9kZXZpY2V0cmVlLgorIyBIb3dldmVyIHRoaXMgY2xhc3Mgb24gcHVycG9zZSBzZXBhcmF0ZXMgdGhlIGRlcGxveWVkIGRldmljZSB0cmVlcyBpbnRvIHRoZQorIyAnZGV2aWNldHJlZScgc3ViZGlyZWN0b3J5LiBUaGlzIHByZXZlbnRzIGNsYXNoZXMgd2l0aCB0aGUga2VybmVsLWRldmljZXRyZWUKKyMgb3V0cHV0LiBBZGRpdGlvbmFsbHkgdGhlIGRldmljZSB0cmVlcyBhcmUgcG9wdWxhdGVkIGludG8gdGhlIHN5c3Jvb3QgZm9yCisjIGFjY2VzcyB2aWEgdGhlIHN5c3Jvb3QgZnJvbSB3aXRoaW4gb3RoZXIgcmVjaXBlcy4KKworU0VDVElPTiA/PSAiYnNwIgorCisjIFRoZSBkZWZhdWx0IGluY2x1c2lvbiBvZiBrZXJuZWwgZGV2aWNlIHRyZWUgaW5jbHVkZXMgYW5kIGhlYWRlcnMgbWVhbnMgdGhhdAorIyBkZXZpY2UgdHJlZXMgYnVpbHQgd2l0aCB0aGVtIGFyZSBhdCBsZWFzdCBHUEx2MiAoYW5kIGluIHNvbWUgY2FzZXMgZHVhbAorIyBsaWNlbnNlZCkuIERlZmF1bHQgdG8gR1BMdjIgaWYgdGhlIHJlY2lwZSBkb2VzIG5vdCBzcGVjaWZ5IGEgbGljZW5zZS4KK0xJQ0VOU0UgPz0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK0RFUEVORFMgKz0gImR0Yy1uYXRpdmUiCisKK2luaGVyaXQgZGVwbG95IGtlcm5lbC1hcmNoCisKK0NPTVBBVElCTEVfTUFDSElORSA/PSAiXiQiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1NZU1JPT1RfRElSUyArPSAiL2Jvb3QvZGV2aWNldHJlZSIKK0ZJTEVTXyR7UE59ID0gIi9ib290L2RldmljZXRyZWUvKi5kdGIgL2Jvb3QvZGV2aWNldHJlZS8qLmR0Ym8iCisKK1MgPSAiJHtXT1JLRElSfSIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworIyBEZWZhdWx0IGtlcm5lbCBpbmNsdWRlcywgdGhlc2UgcmVwcmVzZW50IHdoYXQgYXJlIG5vcm1hbGx5IHVzZWQgZm9yIGluLWtlcm5lbAorIyBzb3VyY2VzLgorS0VSTkVMX0lOQ0xVREUgPz89ICIgXAorICAgICAgICAke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZHRzIFwKKyAgICAgICAgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8qIFwKKyAgICAgICAgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L3NjcmlwdHMvZHRjL2luY2x1ZGUtcHJlZml4ZXMgXAorICAgICAgICAiCisKK0RUX0lOQ0xVREVbZG9jXSA9ICJTZWFyY2ggcGF0aHMgdG8gYmUgbWFkZSBhdmFpbGFibGUgdG8gYm90aCB0aGUgZGV2aWNlIHRyZWUgY29tcGlsZXIgYW5kIHByZXByb2Nlc3NvciBmb3IgaW5jbHVzaW9uLiIKK0RUX0lOQ0xVREUgPz0gIiR7RFRfRklMRVNfUEFUSH0gJHtLRVJORUxfSU5DTFVERX0iCitEVF9GSUxFU19QQVRIW2RvY10gPSAiRGVmYXVsdHMgdG8gc291cmNlIGRpcmVjdG9yeSwgY2FuIGJlIHVzZWQgdG8gc2VsZWN0IGR0cyBmaWxlcyB0aGF0IGFyZSBub3QgaW4gc291cmNlIChlLmcuIGdlbmVyYXRlZCkuIgorRFRfRklMRVNfUEFUSCA/PSAiJHtTfSIKKworRFRfUEFERElOR19TSVpFW2RvY10gPSAiU2l6ZSBvZiBwYWRkaW5nIG9uIHRoZSBkZXZpY2UgdHJlZSBibG9iLCB1c2VkIGFzIGV4dHJhIHNwYWNlIHR5cGljYWxseSBmb3IgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGR1cmluZyBib290LiIKK0RUX1BBRERJTkdfU0laRSA/Pz0gIjB4MzAwMCIKK0RUX1JFU0VSVkVEX01BUFtkb2NdID0gIk51bWJlciBvZiByZXNlcnZlZCBtYXAgZW50aXJlcy4iCitEVF9SRVNFUlZFRF9NQVAgPz89ICI4IgorRFRfQk9PVF9DUFVbZG9jXSA9ICJUaGUgYm9vdCBjcHUsIGRlZmF1bHRzIHRvIDAiCitEVF9CT09UX0NQVSA/Pz0gIjAiCisKK0RUQ19GTEFHUyA/PSAiLVIgJHtEVF9SRVNFUlZFRF9NQVB9IC1iICR7RFRfQk9PVF9DUFV9IgorRFRDX1BQRkxBR1MgPz0gIi1ub3N0ZGluYyAtdW5kZWYgLURfX0RUU19fIC14IGFzc2VtYmxlci13aXRoLWNwcCIKK0RUQ19CRkxBR1MgPz0gIi1wICR7RFRfUEFERElOR19TSVpFfSIKK0RUQ19PRkxBR1MgPz0gIi1wIDAgLUAgLUggZXBhcHIiCisKK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9JTkNMVURFIik6CisgICAgICAgICMgYXV0byBhZGQgZGVwZW5kZW5jeSBvbiBrZXJuZWwgdHJlZSwgYnV0IG9ubHkgaWYga2VybmVsIGluY2x1ZGUgcGF0aHMKKyAgICAgICAgIyBhcmUgc3BlY2lmaWVkLgorICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX2NvbXBpbGUiLCAiZGVwZW5kcyIsICIgdmlydHVhbC9rZXJuZWw6ZG9fY29uZmlndXJlIikKK30KKworZGVmIGV4cGFuZF9pbmNsdWRlcyh2YXJuYW1lLCBkKToKKyAgICBpbXBvcnQgZ2xvYgorICAgIGluY2x1ZGVzID0gc2V0KCkKKyAgICAjIGV4cGFuZCBhbGwgaW5jbHVkZXMgd2l0aCBnbG9iCisgICAgZm9yIGkgaW4gKGQuZ2V0VmFyKHZhcm5hbWUpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICBmb3IgZyBpbiBnbG9iLmdsb2IoaSk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGcpOiAjIG9ubHkgYWRkIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUgcGF0aAorICAgICAgICAgICAgICAgIGluY2x1ZGVzLmFkZChnKQorICAgIHJldHVybiBpbmNsdWRlcworCitkZWYgZGV2aWNldHJlZV9zb3VyY2VfaXNfb3ZlcmxheShwYXRoKToKKyAgICAjIGRldGVybWluZSBpZiBhIGR0cyBmaWxlIGlzIGFuIG92ZXJsYXkgYnkgY2hlY2tpbmcgaWYgaXQgdXNlcyAiL3BsdWdpbi87IgorICAgIHdpdGggb3BlbihwYXRoLCAiciIpIGFzIGY6CisgICAgICAgIGZvciBpIGluIGY6CisgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgoIi9wbHVnaW4vOyIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiBkZXZpY2V0cmVlX2NvbXBpbGUoZHRzcGF0aCwgaW5jbHVkZXMsIGQpOgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgZHRzID0gb3MucGF0aC5iYXNlbmFtZShkdHNwYXRoKQorICAgIGR0bmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZHRzKVswXQorICAgIGJiLm5vdGUoIlByb2Nlc3NpbmcgezB9IFt7MX1dIi5mb3JtYXQoZHRuYW1lLCBkdHMpKQorCisgICAgIyBwcmVwcm9jZXNzCisgICAgcHBhcmdzID0gZC5nZXRWYXIoIkJVSUxEX0NQUCIpLnNwbGl0KCkKKyAgICBwcGFyZ3MgKz0gKGQuZ2V0VmFyKCJEVENfUFBGTEFHUyIpIG9yICIiKS5zcGxpdCgpCisgICAgZm9yIGkgaW4gaW5jbHVkZXM6CisgICAgICAgIHBwYXJncy5hcHBlbmQoIi1JezB9Ii5mb3JtYXQoaSkpCisgICAgcHBhcmdzICs9IFsiLW8iLCAiezB9LnBwIi5mb3JtYXQoZHRzKSwgZHRzcGF0aF0KKyAgICBiYi5ub3RlKCJSdW5uaW5nIHswfSIuZm9ybWF0KCIgIi5qb2luKHBwYXJncykpKQorICAgIHN1YnByb2Nlc3MucnVuKHBwYXJncywgY2hlY2sgPSBUcnVlKQorCisgICAgIyBkZXRlcm1pbmUgaWYgdGhlIGZpbGUgaXMgYW4gb3ZlcmxheSBvciBub3QgKHVzaW5nIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSkKKyAgICBpc292ZXJsYXkgPSBkZXZpY2V0cmVlX3NvdXJjZV9pc19vdmVybGF5KCJ7MH0ucHAiLmZvcm1hdChkdHMpKQorCisgICAgIyBjb21waWxlCisgICAgZHRjYXJncyA9IFsiZHRjIl0gKyAoZC5nZXRWYXIoIkRUQ19GTEFHUyIpIG9yICIiKS5zcGxpdCgpCisgICAgaWYgaXNvdmVybGF5OgorICAgICAgICBkdGNhcmdzICs9IChkLmdldFZhcigiRFRDX09GTEFHUyIpIG9yICIiKS5zcGxpdCgpCisgICAgZWxzZToKKyAgICAgICAgZHRjYXJncyArPSAoZC5nZXRWYXIoIkRUQ19CRkxBR1MiKSBvciAiIikuc3BsaXQoKQorICAgIGZvciBpIGluIGluY2x1ZGVzOgorICAgICAgICBkdGNhcmdzICs9IFsiLWkiLCBpXQorICAgIGR0Y2FyZ3MgKz0gWyItbyIsICJ7MH0uezF9Ii5mb3JtYXQoZHRuYW1lLCAiZHRibyIgaWYgaXNvdmVybGF5IGVsc2UgImR0YiIpXQorICAgIGR0Y2FyZ3MgKz0gWyItSSIsICJkdHMiLCAiLU8iLCAiZHRiIiwgInswfS5wcCIuZm9ybWF0KGR0cyldCisgICAgYmIubm90ZSgiUnVubmluZyB7MH0iLmZvcm1hdCgiICIuam9pbihkdGNhcmdzKSkpCisgICAgc3VicHJvY2Vzcy5ydW4oZHRjYXJncywgY2hlY2sgPSBUcnVlKQorCitweXRob24gZGV2aWNldHJlZV9kb19jb21waWxlKCkgeworICAgIGluY2x1ZGVzID0gZXhwYW5kX2luY2x1ZGVzKCJEVF9JTkNMVURFIiwgZCkKKyAgICBsaXN0cGF0aCA9IGQuZ2V0VmFyKCJEVF9GSUxFU19QQVRIIikKKyAgICBmb3IgZHRzIGluIG9zLmxpc3RkaXIobGlzdHBhdGgpOgorICAgICAgICBpZiBub3QgZHRzLmVuZHN3aXRoKCIuZHRzIik6CisgICAgICAgICAgICBjb250aW51ZSAjIHNraXAgbm9uLS5kdHMgZmlsZXMKKyAgICAgICAgZHRzcGF0aCA9IG9zLnBhdGguam9pbihsaXN0cGF0aCwgZHRzKQorICAgICAgICBkZXZpY2V0cmVlX2NvbXBpbGUoZHRzcGF0aCwgaW5jbHVkZXMsIGQpCit9CisKK2RldmljZXRyZWVfZG9faW5zdGFsbCgpIHsKKyAgICBmb3IgRFRCX0ZJTEUgaW4gYGxzICouZHRiICouZHRib2A7IGRvCisgICAgICAgIGluc3RhbGwgLURtIDA2NDQgJHtCfS8ke0RUQl9GSUxFfSAke0R9L2Jvb3QvZGV2aWNldHJlZS8ke0RUQl9GSUxFfQorICAgIGRvbmUKK30KKworZGV2aWNldHJlZV9kb19kZXBsb3koKSB7CisgICAgZm9yIERUQl9GSUxFIGluIGBscyAqLmR0YiAqLmR0Ym9gOyBkbworICAgICAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7Qn0vJHtEVEJfRklMRX0gJHtERVBMT1lESVJ9L2RldmljZXRyZWUvJHtEVEJfRklMRX0KKyAgICBkb25lCit9CithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAorCitFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbXBpbGUgZG9faW5zdGFsbCBkb19kZXBsb3kKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKaW5kZXggNTY4ODJhNC4uMTM3MmUzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZ0b29sLXNvdXJjZS5iYmNsYXNzCkBAIC05MCwxMSArOTAsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lIGluIGZpbGVzXSkKICAgICAgICAgcmV0dXJuIHJldAogCisgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKICAgICAjIE1vdmUgbG9jYWwgc291cmNlIGZpbGVzIGludG8gc2VwYXJhdGUgc3ViZGlyCiAgICAgcmVjaXBlX3BhdGNoZXMgPSBbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluCiAgICAgICAgICAgICAgICAgICAgICAgICBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3BhdGNoZXMoZCldCiAgICAgbG9jYWxfZmlsZXMgPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX2xvY2FsX2ZpbGVzKGQpCiAKKyAgICBpZiBpc19rZXJuZWxfeW9jdG86CisgICAgICAgIGZvciBrZXkgaW4gbG9jYWxfZmlsZXMuY29weSgpOgorICAgICAgICAgICAgaWYga2V5LmVuZHN3aXRoKCdzY2MnKToKKyAgICAgICAgICAgICAgICBzY2NmaWxlID0gb3Blbihsb2NhbF9maWxlc1trZXldLCAncicpCisgICAgICAgICAgICAgICAgZm9yIGwgaW4gc2NjZmlsZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGwuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBsaW5lWzBdIGluICgna2NvbmYnLCAncGF0Y2gnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX2ZpbGVzW2xpbmVbLTFdXSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobG9jYWxfZmlsZXNba2V5XSksIGxpbmVbLTFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUobG9jYWxfZmlsZXNba2V5XSksIGxpbmVbLTFdKSwgd29ya2RpcikKKyAgICAgICAgICAgICAgICBzY2NmaWxlLmNsb3NlKCkKKwogICAgICMgSWdub3JlIGxvY2FsIGZpbGVzIHdpdGggc3ViZGlyPXtCUH0KICAgICBzcmNhYnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKHNyY3N1YmRpcikKICAgICBsb2NhbF9maWxlcyA9IFtmbmFtZSBmb3IgZm5hbWUgaW4gbG9jYWxfZmlsZXMgaWYKQEAgLTE3MSwxNCArMTgzLDE0IEBACiAKICAgICBleHRyYV9vdmVycmlkZXMgPSBkLmdldFZhcignREVWVE9PTF9FWFRSQV9PVkVSUklERVMnKQogICAgIGlmIGV4dHJhX292ZXJyaWRlczoKLSAgICAgICAgZXh0cmFfb3ZlcnJpZGVfbGlzdCA9IGV4dHJhX292ZXJyaWRlcy5zcGxpdCgnOicpCisgICAgICAgIGV4dHJhX292ZXJyaWRlcyA9IHNldChleHRyYV9vdmVycmlkZXMuc3BsaXQoJzonKSkKICAgICAgICAgZGV2YnJhbmNoID0gZC5nZXRWYXIoJ0RFVlRPT0xfREVWQlJBTkNIJykKICAgICAgICAgZGVmYXVsdF9vdmVycmlkZXMgPSBkLmdldFZhcignT1ZFUlJJREVTJykuc3BsaXQoJzonKQogICAgICAgICBub19vdmVycmlkZXMgPSBbXQogICAgICAgICAjIEZpcnN0LCB3ZSBtYXkgaGF2ZSBzb21lIG92ZXJyaWRlcyB0aGF0IGFyZSByZWZlcnJlZCB0byBpbiB0aGUgcmVjaXBlIHNldCBpbgogICAgICAgICAjIG91ciBjb25maWd1cmF0aW9uLCBzbyB3ZSBuZWVkIHRvIG1ha2UgYSBicmFuY2ggdGhhdCBleGNsdWRlcyB0aG9zZQogICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZGVmYXVsdF9vdmVycmlkZXM6Ci0gICAgICAgICAgICBpZiBvdmVycmlkZSBub3QgaW4gZXh0cmFfb3ZlcnJpZGVfbGlzdDoKKyAgICAgICAgICAgIGlmIG92ZXJyaWRlIG5vdCBpbiBleHRyYV9vdmVycmlkZXM6CiAgICAgICAgICAgICAgICAgbm9fb3ZlcnJpZGVzLmFwcGVuZChvdmVycmlkZSkKICAgICAgICAgaWYgZGVmYXVsdF9vdmVycmlkZXMgIT0gbm9fb3ZlcnJpZGVzOgogICAgICAgICAgICAgIyBTb21lIG92ZXJyaWRlcyBhcmUgYWN0aXZlIGluIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIHNvCkBAIC0xOTYsNyArMjA4LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgY2hlY2tvdXQgJXMgLWIgZGV2dG9vbC1uby1vdmVycmlkZXMnICUgZGV2YnJhbmNoLCBjd2Q9c3Jjc3ViZGlyKQogCi0gICAgICAgIGZvciBvdmVycmlkZSBpbiBleHRyYV9vdmVycmlkZV9saXN0OgorICAgICAgICBmb3Igb3ZlcnJpZGUgaW4gZXh0cmFfb3ZlcnJpZGVzOgogICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCiAgICAgICAgICAgICBpZiBvdmVycmlkZSBpbiBkZWZhdWx0X292ZXJyaWRlczoKICAgICAgICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignZ2l0IGJyYW5jaCBkZXZ0b29sLW92ZXJyaWRlLSVzICVzJyAlIChvdmVycmlkZSwgZGV2YnJhbmNoKSwgY3dkPXNyY3N1YmRpcikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1jb21tb24tYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWNvbW1vbi1iYXNlLmJiY2xhc3MKaW5kZXggODI0YTFiNi4uOTRiNWZkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWNvbW1vbi1iYXNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWNvbW1vbi1iYXNlLmJiY2xhc3MKQEAgLTEsNiArMSwxOCBAQAogZXhwb3J0IFNUQUdJTkdfSU5DRElSCiBleHBvcnQgU1RBR0lOR19MSUJESVIKIAorIyBMRFNIQVJFRCBpcyB0aGUgbGQgKmNvbW1hbmQqIHVzZWQgdG8gY3JlYXRlIHNoYXJlZCBsaWJyYXJ5CitleHBvcnQgTERTSEFSRUQgID0gIiR7Q0NMRH0gLXNoYXJlZCIKKyMgTERYWFNIQVJFRCBpcyB0aGUgbGQgKmNvbW1hbmQqIHVzZWQgdG8gY3JlYXRlIHNoYXJlZCBsaWJyYXJ5IG9mIEMrKworIyBvYmplY3RzCitleHBvcnQgTERDWFhTSEFSRUQgID0gIiR7Q1hYfSAtc2hhcmVkIgorIyBDQ1NIQVJFRCBhcmUgdGhlIEMgKmZsYWdzKiB1c2VkIHRvIGNyZWF0ZSBvYmplY3RzIHRvIGdvIGludG8gYSBzaGFyZWQKKyMgbGlicmFyeSAobW9kdWxlKQorZXhwb3J0IENDU0hBUkVEICA9ICItZlBJQyAtRFBJQyIKKyMgTElOS0ZPUlNIQVJFRCBhcmUgdGhlIGZsYWdzIHBhc3NlZCB0byB0aGUgJChDQykgY29tbWFuZCB0aGF0IGxpbmtzCisjIHRoZSBweXRob24gZXhlY3V0YWJsZQorZXhwb3J0IExJTktGT1JTSEFSRUQgPSAie1NFQ1VSSVRZX0NGTEFHU30gLVhsaW5rZXIgLWV4cG9ydC1keW5hbWljIgorCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyogJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vKiIKIAogRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICJcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCmluZGV4IDE5MzBjMzUuLjk4NjI3MzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy5iYmNsYXNzCkBAIC00LDIwICs0LDMwIEBACiBESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTID89ICItLWluc3RhbGwtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0iCiBESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1MgPz0gIi0tcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAogICAgIC0taW5zdGFsbC1kYXRhPSR7U1RBR0lOR19EQVRBRElSfSIKLURJU1RVVElMU19JTlNUQUxMX0FSR1MgPz0gIi0tcHJlZml4PSR7RH0vJHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke0R9LyR7ZGF0YWRpcn0iCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXJvb3Q9JHtEfSBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9IgorCitkaXN0dXRpbHNfZG9fY29uZmlndXJlKCkgeworICAgICAgICBpZiBbICIke0NMRUFOQlJPS0VOfSIgIT0gIjEiIF0gOyB0aGVuCisgICAgICAgICAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGNsZWFuICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9CisgICAgICAgIGZpCit9CiAKIGRpc3R1dGlsc19kb19jb21waWxlKCkgeworICAgICAgICAgTk9fRkVUQ0hfQlVJTEQ9MSBcCiAgICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCiAgICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCBleGVjdXRpb24gZmFpbGVkLiIKKyAgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIH0KIAogZGlzdHV0aWxzX3N0YWdlX2hlYWRlcnMoKSB7CiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICIke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzIGV4ZWN1dGlvbiBmYWlsZWQuIgorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9oZWFkZXJzIGZhaWxlZC4iCiB9CiAKIGRpc3R1dGlsc19zdGFnZV9hbGwoKSB7CkBAIC0yNiw3ICszNiw3IEBACiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIChzdGFnZSkgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2FsbCBmYWlsZWQuIgogfQogCiBkaXN0dXRpbHNfZG9faW5zdGFsbCgpIHsKQEAgLTM0LDggKzQ0LDggQEAKICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgIFBZVEhPTlBBVEg9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgLS1pbnN0YWxsLWxpYj0ke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgogCiAgICAgICAgICMgc3VwcG9ydCBmaWxlbmFtZXMgd2l0aCAqc3BhY2VzKgogICAgICAgICAjIG9ubHkgbW9kaWZ5IGZpbGUgaWYgaXQgY29udGFpbnMgcGF0aCAgYW5kIHJlY29tcGlsZSBpdApAQCAtNzcsNiArODcsNiBAQAogCWZpCiB9CiAKLUVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsCitFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKIAogZXhwb3J0IExEU0hBUkVEPSIke0NDTER9IC1zaGFyZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKaW5kZXggNmMzMDMwNi4uODM0ZTMyMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcwpAQCAtNSwyMiArNSwzMiBAQAogRElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHUyA/PSAiLS1pbnN0YWxsLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgogRElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTID89ICItLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKICAgICAtLWluc3RhbGwtZGF0YT0ke1NUQUdJTkdfREFUQURJUn0iCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXByZWZpeD0ke0R9LyR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtEfS8ke2RhdGFkaXJ9IgorRElTVFVUSUxTX0lOU1RBTExfQVJHUyA/PSAiLS1yb290PSR7RH0gXAorICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgLS1pbnN0YWxsLWRhdGE9JHtkYXRhZGlyfSIKKworZGlzdHV0aWxzM19kb19jb25maWd1cmUoKSB7CisJaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdIDsgdGhlbgorCQlOT19GRVRDSF9CVUlMRD0xIFwKKwkJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGNsZWFuICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9CisJZmkKK30KIAogZGlzdHV0aWxzM19kb19jb21waWxlKCkgeworICAgICAgICBOT19GRVRDSF9CVUlMRD0xIFwKICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBcCiAgICAgICAgIGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZF9leHQgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIH0KIGRpc3R1dGlsczNfZG9fY29tcGlsZVt2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKIAogZGlzdHV0aWxzM19zdGFnZV9oZWFkZXJzKCkgewogICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGxfaGVhZGVycyBleGVjdXRpb24gZmFpbGVkLiIKKyAgICAgICAgYmJmYXRhbF9sb2cgIicke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30nIGV4ZWN1dGlvbiBmb3Igc3RhZ2VfaGVhZGVycyBmYWlsZWQuIgogfQogZGlzdHV0aWxzM19zdGFnZV9oZWFkZXJzW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgogCkBAIC0zMCw3ICs0MCw3IEBACiAgICAgICAgIGluc3RhbGwgLWQgJHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9CiAgICAgICAgIFBZVEhPTlBBVEg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9IHx8IFwKLSAgICAgICAgYmJmYXRhbF9sb2cgIiR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsIChzdGFnZSkgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2FsbCBmYWlsZWQuIgogfQogZGlzdHV0aWxzM19zdGFnZV9hbGxbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKQEAgLTM5LDggKzQ5LDggQEAKICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgIFBZVEhPTlBBVEg9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgLS1pbnN0YWxsLWxpYj0ke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30gfHwgXAorICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX0lOU1RBTExfQVJHU30nIGV4ZWN1dGlvbiBmYWlsZWQuIgogCiAgICAgICAgICMgc3VwcG9ydCBmaWxlbmFtZXMgd2l0aCAqc3BhY2VzKgogICAgICAgICBmaW5kICR7RH0gLW5hbWUgIioucHkiIC1leGVjIGdyZXAgLXEgJHtEfSB7fSBcOyAtZXhlYyBzZWQgLWkgLWUgczoke0R9OjpnIHt9IFw7CkBAIC03MSw2ICs4MSw2IEBACiB9CiBkaXN0dXRpbHMzX2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKLUVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsCitFWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKIAogZXhwb3J0IExEU0hBUkVEPSIke0NDTER9IC1zaGFyZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kb3MydW5peC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmMxN2UyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZG9zMnVuaXguYmJjbGFzcwpAQCAtMCwwICsxLDE0IEBACisjIENsYXNzIGZvciB1c2UgdG8gY29udmVydCBhbGwgQ1JMRiBsaW5lIHRlcm1pbmF0b3JzIHRvIExGCisjIHByb3ZpZGVkIHRoYXQgc29tZSBwcm9qZWN0cyBhcmUgYmVpbmcgZGV2ZWxvcGVkL21haW50YWluZWQKKyMgb24gV2luZG93cyBzbyB0aGV5IGhhdmUgZGlmZmVyZW50IGxpbmUgdGVybWluYXRvcnMoQ1JMRikgdnMKKyMgb24gTGludXgoTEYpLCB3aGljaCBjYW4gY2F1c2UgYW5ub3lpbmcgcGF0Y2hpbmcgZXJyb3JzIGR1cmluZworIyBnaXQgcHVzaC9jaGVja291dCBwcm9jZXNzZXMuCisKK2RvX2NvbnZlcnRfY3JsZl90b19sZltkZXBlbmRzXSArPSAiZG9zMnVuaXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKKyMgQ29udmVydCBDUkxGIGxpbmUgdGVybWluYXRvcnMgdG8gTEYKK2RvX2NvbnZlcnRfY3JsZl90b19sZiAoKSB7CisJZmluZCAke1N9IC10eXBlIGYgLWV4ZWMgZG9zMnVuaXgge30gXDsKK30KKworYWRkdGFzayBjb252ZXJ0X2NybGZfdG9fbGYgYWZ0ZXIgZG9fdW5wYWNrIGJlZm9yZSBkb19wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKaW5kZXggNzhhMDhjOC4uMzYxOGI5OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCkBAIC03Nyw2ICs3Nyw5IEBACiAgICAgICAgICAgICAjIER1bW15IHZhbHVlIGJlY2F1c2UgdGhlIGRlZmF1bHQgZnVuY3Rpb24gY2FuJ3QgYmUgY2FsbGVkIHdpdGggYmxhbmsgU1JDX1VSSQogICAgICAgICAgICAgZC5zZXRWYXIoJ1NSQ1BWJywgJzk5OScpCiAKKyAgICAgICAgaWYgZC5nZXRWYXIoJ0NPTkZJR1VSRU9QVF9ERVBUUkFDSycpID09ICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyc6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORklHVVJFT1BUX0RFUFRSQUNLJywgJycpCisKICAgICAgICAgdGFza3MgPSBmaWx0ZXIobGFtYmRhIGs6IGQuZ2V0VmFyRmxhZyhrLCAidGFzayIpLCBkLmtleXMoKSkKIAogICAgICAgICBmb3IgdGFzayBpbiB0YXNrczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ZvbnRjYWNoZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKaW5kZXggZTc2MzMxMS4uZjcxYTc1NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MKQEAgLTE3LDcgKzE3LDcgQEAKIEZPTlRDT05GSUdfQ0FDSEVfRU5WID89ICJGQ19ERUJVRz0xIgogZm9udGNhY2hlX2NvbW1vbigpIHsKIGlmIFsgLW4gIiREIiBdIDsgdGhlbgotCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZm9udF9jYWNoZSAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZm9udF9jYWNoZSAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9IFwKIAkJJ2JpbmRpcj0iJHtiaW5kaXJ9IicgXAogCQknbGliZGlyPSIke2xpYmRpcn0iJyBcCiAJCSdiYXNlX2xpYmRpcj0iJHtiYXNlX2xpYmRpcn0iJyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9naW8tbW9kdWxlLWNhY2hlLmJiY2xhc3MKaW5kZXggMDUyMGMyMi4uZTQyOWJkMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ2lvLW1vZHVsZS1jYWNoZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dpby1tb2R1bGUtY2FjaGUuYmJjbGFzcwpAQCAtMiw3ICsyLDYgQEAKIGluaGVyaXQgcWVtdQogCiBHSU9fTU9EVUxFX1BBQ0tBR0VTID8/PSAiJHtQTn0iCi1HSU9fTU9EVUxFX1BBQ0tBR0VTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCiAKIGdpb19tb2R1bGVfY2FjaGVfY29tbW9uKCkgewogaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKaW5kZXggZDMzZDgzZS4uYWYzMzFmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCkBAIC04LDcgKzgsNyBAQAogZXhwb3J0IEdPUk9PVAogZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCiAKLURFUEVORFNfR09MQU5HX2NsYXNzLXRhcmdldCA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1ydW50aW1lIgorREVQRU5EU19HT0xBTkdfY2xhc3MtdGFyZ2V0ID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCiBERVBFTkRTX0dPTEFOR19jbGFzcy1uYXRpdmUgPSAiZ28tbmF0aXZlIgogREVQRU5EU19HT0xBTkdfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCiAKQEAgLTE3OSwzICsxNzksMTMgQEAKIAogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MiCiBJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAibGRmbGFncyIKKworIyBBZGQgLWJ1aWxkbW9kZT1waWUgdG8gR09CVUlMREZMQUdTIHRvIHNhdGlzZnkgInRleHRyZWwiIFFBIGNoZWNraW5nLCBidXQgbWlwcworIyBkb2Vzbid0IHN1cHBvcnQgLWJ1aWxkbW9kZT1waWUsIHNvIHNraXAgdGhlIFFBIGNoZWNraW5nIGZvciBtaXBzIGFuZCBpdHMKKyMgdmFyaWFudHMuCitweXRob24oKSB7CisgICAgaWYgJ21pcHMnIGluIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpOgorICAgICAgICBkLmFwcGVuZFZhcignSU5TQU5FX1NLSVBfJXMnICUgZC5nZXRWYXIoJ1BOJyksICIgdGV4dHJlbCIpCisgICAgZWxzZToKKyAgICAgICAgZC5hcHBlbmRWYXIoJ0dPQlVJTERGTEFHUycsICcgLWJ1aWxkbW9kZT1waWUnKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwppbmRleCBmNTRjNTE2Li5iMmM5NGZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwpAQCAtMzMsOSArMzMsMTMgQEAKIENPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0ID0gIm51bGwiCiBDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKIFRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWFyY2g9bWlwczMycjIiCi1TRUNVUklUWV9DRkxBR1NfbWlwcyA9ICIke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCitTRUNVUklUWV9DRkxBR1NfbWlwc2FyY2ggPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfTk9QSUVfQ0ZMQUdTID8/PSAiIgogCiBkZWYgZ29fbWFwX2FyY2goYSwgZCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9nb2JqZWN0LWludHJvc3BlY3Rpb24uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzCmluZGV4IGI2MTYwYjguLmEzMjNjMWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvYmplY3QtaW50cm9zcGVjdGlvbi5iYmNsYXNzCkBAIC00MCw0ICs0MCw0IEBACiAgICAgCiAjIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvcgogIyBydW5uaW5nKSB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyIgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciAke2xpYmRpcn0vZ2lyLSovKi5naXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ndGstaW1tb2R1bGVzLWNhY2hlLmJiY2xhc3MKaW5kZXggM2Q4MmRiZS4uOWJiMGFmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWltbW9kdWxlcy1jYWNoZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2d0ay1pbW1vZHVsZXMtY2FjaGUuYmJjbGFzcwpAQCAtMTAsNTMgKzEwLDM5IEBACiAKIGd0a19pbW1vZHVsZV9jYWNoZV9wb3N0aW5zdCgpIHsKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLSAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTIuMCBdOyB0aGVuCi0gICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTIuMC8qL2ltbW9kdWxlcy8qLnNvKQotICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAnKX0gXAotICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlIDI+L2Rldi9udWxsICYmCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzOiREOjoiICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZQotICAgICAgICBmaQotICAgICAgICBpZiBbIC14ICREJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMy4wIF07IHRoZW4KLSAgICAgICAgICAgIElNRklMRVM9JChscyAkRCR7bGliZGlyfS9ndGstMy4wLyovaW1tb2R1bGVzLyouc28pCi0gICAgICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCcpfSBcCi0gICAgICAgICAgICAgICAgJElNRklMRVMgPiAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZQotICAgICAgICBmaQotCi0gICAgWyAkPyAtbmUgMCBdICYmIGV4aXQgMQotICAgIGV4aXQgMAotZmkKLWlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjBgIF07IHRoZW4KLSAgICBndGstcXVlcnktaW1tb2R1bGVzLTIuMCA+ICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLWZpCi1pZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wYCBdOyB0aGVuCi0gICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgPiAke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2d0a19pbW1vZHVsZXNfY2FjaGUgJHtQS0d9IFwKKyAgICAgICAgICAgIG1scHJlZml4PSR7TUxQUkVGSVh9IFwKKyAgICAgICAgICAgIGJpbnByZWZpeD0ke01MUFJFRklYfSBcCisgICAgICAgICAgICBsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgICAgIGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSBcCisgICAgICAgICAgICBiYXNlX2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgICBiaW5kaXI9JHtiaW5kaXJ9CitlbHNlCisgICAgaWYgWyAhIC16IGB3aGljaCBndGstcXVlcnktaW1tb2R1bGVzLTIuMGAgXTsgdGhlbgorICAgICAgICBndGstcXVlcnktaW1tb2R1bGVzLTIuMCA+ICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICBmaQorICAgIGlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjBgIF07IHRoZW4KKyAgICAgICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgPiAke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICBmaQogZmkKIH0KIAogZ3RrX2ltbW9kdWxlX2NhY2hlX3Bvc3RybSgpIHsKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLSAgICAgICAgaWYgWyAteCAkRCR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTIuMCBdOyB0aGVuCi0gICAgICAgICAgICBJTUZJTEVTPSQobHMgJEQke2xpYmRpcn0vZ3RrLTIuMC8qL2ltbW9kdWxlcy8qLnNvKQotICAgICAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAnKX0gXAotICAgICAgICAgICAgICAgICRJTUZJTEVTID4gJEQke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlIDI+L2Rldi9udWxsICYmCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lICJzOiREOjoiICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZQotICAgICAgICBmaQotICAgICAgICBpZiBbIC14ICREJHtiaW5kaXJ9L2d0ay1xdWVyeS1pbW1vZHVsZXMtMy4wIF07IHRoZW4KLSAgICAgICAgICAgIElNRklMRVM9JChscyAkRCR7bGliZGlyfS9ndGstMy4wLyovaW1tb2R1bGVzLyouc28pCi0gICAgICAgICAgICAke0BxZW11X3J1bl9iaW5hcnkoZCwgJyREJywgJyR7YmluZGlyfS9ndGstcXVlcnktaW1tb2R1bGVzLTMuMCcpfSBcCi0gICAgICAgICAgICAgICAgJElNRklMRVMgPiAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZSAyPi9kZXYvbnVsbCAmJgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAiczokRDo6IiAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZQotICAgICAgICBmaQotCi0gICAgWyAkPyAtbmUgMCBdICYmIGV4aXQgMQotICAgIGV4aXQgMAotZmkKLWlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjBgIF07IHRoZW4KLSAgICBndGstcXVlcnktaW1tb2R1bGVzLTIuMCA+ICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKLWZpCi1pZiBbICEgLXogYHdoaWNoIGd0ay1xdWVyeS1pbW1vZHVsZXMtMy4wYCBdOyB0aGVuCi0gICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgPiAke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICAkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2d0a19pbW1vZHVsZXNfY2FjaGUgJHtQS0d9IFwKKyAgICAgICAgICAgIG1scHJlZml4PSR7TUxQUkVGSVh9IFwKKyAgICAgICAgICAgIGJpbnByZWZpeD0ke01MUFJFRklYfSBcCisgICAgICAgICAgICBsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAgICAgICAgIGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSBcCisgICAgICAgICAgICBiYXNlX2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCisgICAgICAgICAgICBiaW5kaXI9JHtiaW5kaXJ9CitlbHNlCisgICAgaWYgWyAhIC16IGB3aGljaCBndGstcXVlcnktaW1tb2R1bGVzLTIuMGAgXTsgdGhlbgorICAgICAgICBndGstcXVlcnktaW1tb2R1bGVzLTIuMCA+ICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICBmaQorICAgIGlmIFsgISAteiBgd2hpY2ggZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjBgIF07IHRoZW4KKyAgICAgICAgZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgPiAke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUKKyAgICBmaQogZmkKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKaW5kZXggMGNhOGRlOC4uYjVhODQ1NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICByZXR1cm4gInllcyIKIAogZGVmIGljZWNjX2lzX2FsbGFyY2goYmIsIGQpOgotICAgIHJldHVybiBkLmdldFZhcigiUEFDS0FHRV9BUkNIIikgPT0gImFsbCIgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGQpCisgICAgcmV0dXJuIGQuZ2V0VmFyKCJQQUNLQUdFX0FSQ0giKSA9PSAiYWxsIgogCiBkZWYgaWNlY2NfaXNfa2VybmVsKGJiLCBkKToKICAgICByZXR1cm4gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzCmluZGV4IDk2NjI3N2MuLmFmNzFiZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1saXZlLmJiY2xhc3MKQEAgLTE5LDggKzE5LDYgQEAKIAogIyBFeHRlcm5hbCB2YXJpYWJsZXMgKGFsc28gdXNlZCBieSBzeXNsaW51eC5iYmNsYXNzKQogIyAke0lOSVRSRH0gLSBpbmRpY2F0ZXMgYSBsaXN0IG9mIGZpbGVzeXN0ZW0gaW1hZ2VzIHRvIGNvbmNhdGVuYXRlIGFuZCB1c2UgYXMgYW4gaW5pdHJkIChvcHRpb25hbCkKLSMgJHtOT0lTT30gIC0gc2tpcCBidWlsZGluZyB0aGUgSVNPIGltYWdlIGlmIHNldCB0byAxCi0jICR7Tk9IRER9ICAtIHNraXAgYnVpbGRpbmcgdGhlIEhERCBpbWFnZSBpZiBzZXQgdG8gMQogIyAke0hERElNR19JRH0gLSBGQVQgaW1hZ2Ugdm9sdW1lLWlkCiAjICR7Uk9PVEZTfSAtIGluZGljYXRlcyBhIGZpbGVzeXN0ZW0gaW1hZ2UgdG8gaW5jbHVkZSBhcyB0aGUgcm9vdCBmaWxlc3lzdGVtIChvcHRpb25hbCkKIApAQCAtODAsOCArNzgsOCBAQAogfQogCiBidWlsZF9pc28oKSB7Ci0JIyBPbmx5IGNyZWF0ZSBhbiBJU08gaWYgd2UgaGF2ZSBhbiBJTklUUkQgYW5kIE5PSVNPIHdhcyBub3Qgc2V0Ci0JaWYgWyAteiAiJHtJTklUUkR9IiBdIHx8IFsgIiR7Tk9JU099IiA9ICIxIiBdOyB0aGVuCisJIyBPbmx5IGNyZWF0ZSBhbiBJU08gaWYgd2UgaGF2ZSBhbiBJTklUUkQgYW5kIHRoZSBsaXZlIG9yIGlzbyBpbWFnZSB0eXBlIHdhcyBzZWxlY3RlZAorCWlmIFsgLXogIiR7SU5JVFJEfSIgXSB8fCBbICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnbGl2ZSBpc28nLCAnMScsICcwJywgZCl9IiAhPSAiMSIgXTsgdGhlbgogCQliYm5vdGUgIklTTyBpbWFnZSB3aWxsIG5vdCBiZSBjcmVhdGVkLiIKIAkJcmV0dXJuCiAJZmkKQEAgLTIxNyw3ICsyMTUsNyBAQAogCiBidWlsZF9oZGRpbWcoKSB7CiAJIyBDcmVhdGUgYW4gSEREIGltYWdlCi0JaWYgWyAiJHtOT0hERH0iICE9ICIxIiBdIDsgdGhlbgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfRlNUWVBFUycsICdsaXZlIGhkZGltZycsICcxJywgJzAnLCBkKX0iID0gIjEiIF0gOyB0aGVuCiAJCXBvcHVsYXRlX2xpdmUgJHtIRERESVJ9CiAKIAkJaWYgWyAiJHtQQ0JJT1N9IiA9ICIxIiBdOyB0aGVuCkBAIC0yMzIsMTEgKzIzMCwxMSBAQAogCQlpZiBbIC1mICR7SERERElSfS9yb290ZnMuaW1nIF07IHRoZW4KIAkJCXJvb3Rmc19pbWdfc2l6ZT1gc3RhdCAtYyAnJXMnICR7SERERElSfS9yb290ZnMuaW1nYAogCQkJbWF4X3NpemU9YGV4cHIgNCBcKiAxMDI0IFwqIDEwMjQgXCogMTAyNGAKLQkJCWlmIFsgJHJvb3Rmc19pbWdfc2l6ZSAtZ3QgJG1heF9zaXplIF07IHRoZW4KLQkJCQliYmVycm9yICIke0hERERJUn0vcm9vdGZzLmltZyBleGVjZWVkcyA0R0IsIgotCQkJCWJiZXJyb3IgInRoaXMgZG9lc24ndCB3b3JrIG9uIEZBVCBmaWxlc3lzdGVtLCB5b3UgY2FuIHRyeSBlaXRoZXIgb2Y6IgotCQkJCWJiZXJyb3IgIjEpIFJlZHVjZSB0aGUgc2l6ZSBvZiByb290ZnMuaW1nIgotCQkJCWJiZmF0YWwgIjIpIFVzZSBpc28sIHZtZGsgb3IgdmRpIHRvIGluc3RlYWQgb2YgaGRkaW1nXG4iCisJCQlpZiBbICRyb290ZnNfaW1nX3NpemUgLWdlICRtYXhfc2l6ZSBdOyB0aGVuCisJCQkJYmJlcnJvciAiJHtIRERESVJ9L3Jvb3Rmcy5pbWcgcm9vdGZzIHNpemUgaXMgZ3JlYXRoZXIgdGhhbiBvciBlcXVhbCB0byA0R0IsIgorCQkJCWJiZXJyb3IgImFuZCB0aGlzIGRvZXNuJ3Qgd29yayBvbiBhIEZBVCBmaWxlc3lzdGVtLiBZb3UgY2FuIGVpdGhlcjoiCisJCQkJYmJlcnJvciAiMSkgUmVkdWNlIHRoZSBzaXplIG9mIHJvb3Rmcy5pbWcsIG9yLCIKKwkJCQliYmZhdGFsICIyKSBVc2Ugd2ljLCB2bWRrIG9yIHZkaSBpbnN0ZWFkIG9mIGhkZGltZ1xuIgogCQkJZmkKIAkJZmkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbWtsaWJzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1ta2xpYnMuYmJjbGFzcwppbmRleCA1ZjZkZjFiLi42OGUxMWQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1ta2xpYnMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1ta2xpYnMuYmJjbGFzcwpAQCAtMTksNyArMTksNyBAQAogCQllY2hvICRpCiAJZG9uZSA+ICR7V09SS0RJUn0vbWtsaWJzL2V4ZWN1dGFibGVzLmxpc3QKIAotCWR5bmFtaWNfbG9hZGVyPSQobGludXhsb2FkZXIpCisJZHluYW1pY19sb2FkZXI9JHtAZ2V0X2xpbnV4bG9hZGVyKGQpfQogCiAJbWtsaWJzIC12IFwKIAkJLS1sZGxpYiAke2R5bmFtaWNfbG9hZGVyfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wb3N0aW5zdC1pbnRlcmNlcHRzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wb3N0aW5zdC1pbnRlcmNlcHRzLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQzMGJiZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXBvc3RpbnN0LWludGVyY2VwdHMuYmJjbGFzcwpAQCAtMCwwICsxLDIzIEBACisjIEdhdGhlciBleGlzdGluZyBhbmQgY2FuZGlkYXRlIHBvc3RpbnN0IGludGVyY2VwdHMgZnJvbSBCQlBBVEgKK1BPU1RJTlNUX0lOVEVSQ0VQVFNfRElSID89ICIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiCitQT1NUSU5TVF9JTlRFUkNFUFRTX1BBVEhTID89ICIke0AnOicuam9pbignJXMvcG9zdGluc3QtaW50ZXJjZXB0cycgJSBwIGZvciBwIGluICcke0JCUEFUSH0nLnNwbGl0KCc6JykpfToke1BPU1RJTlNUX0lOVEVSQ0VQVFNfRElSfSIKKworcHl0aG9uIGZpbmRfaW50ZXJjZXB0cygpIHsKKyAgICBpbnRlcmNlcHRzID0ge30KKyAgICBzZWFyY2hfcGF0aHMgPSBbXQorICAgIHBhdGhzID0gZC5nZXRWYXIoJ1BPU1RJTlNUX0lOVEVSQ0VQVFNfUEFUSFMnKS5zcGxpdCgnOicpCisgICAgb3ZlcnJpZGVzID0gKCc6JyArIGQuZ2V0VmFyKCdGSUxFU09WRVJSSURFUycpKS5zcGxpdCgnOicpICsgWycnXQorICAgIHNlYXJjaF9wYXRocyA9IFtvcy5wYXRoLmpvaW4ocCwgb3ApIGZvciBwIGluIHBhdGhzIGZvciBvcCBpbiBvdmVycmlkZXNdCisgICAgc2VhcmNoZWQgPSBvZS5wYXRoLndoaWNoX3dpbGQoJyonLCAnOicuam9pbihzZWFyY2hfcGF0aHMpLCBjYW5kaWRhdGVzPVRydWUpCisgICAgZmlsZXMsIGNoa3N1bXMgPSBbXSwgW10KKyAgICBmb3IgcGF0aG5hbWUsIGNhbmRpZGF0ZXMgaW4gc2VhcmNoZWQ6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGhuYW1lKToKKyAgICAgICAgICAgIGZpbGVzLmFwcGVuZChwYXRobmFtZSkKKyAgICAgICAgICAgIGNoa3N1bXMuYXBwZW5kKCclczpUcnVlJyAlIHBhdGhuYW1lKQorICAgICAgICAgICAgY2hrc3Vtcy5leHRlbmQoJyVzOkZhbHNlJyAlIGMgZm9yIGMgaW4gY2FuZGlkYXRlc1s6LTFdKQorCisgICAgZC5zZXRWYXIoJ1BPU1RJTlNUX0lOVEVSQ0VQVF9DSEVDS1NVTVMnLCAnICcuam9pbihjaGtzdW1zKSkKKyAgICBkLnNldFZhcignUE9TVElOU1RfSU5URVJDRVBUUycsICcgJy5qb2luKGZpbGVzKSkKK30KK2ZpbmRfaW50ZXJjZXB0c1tldmVudG1hc2tdICs9ICJiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSIKK2FkZGhhbmRsZXIgZmluZF9pbnRlcmNlcHRzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggNmE4YWZhOC4uMDRkZDU3YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcwpAQCAtMzMsNyArMzMsNyBAQAogCWZpCiAJY2F0ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiA+PiAkbGRzb2NvbmYKIAotCWR5bmFtaWNfbG9hZGVyPSQobGludXhsb2FkZXIpCisJZHluYW1pY19sb2FkZXI9JHtAZ2V0X2xpbnV4bG9hZGVyKGQpfQogCiAJIyBwcmVsaW5rIQogCWlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKaW5kZXggMjI0N2IzMC4uNDUyYjFhZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCkBAIC0xLDkgKzEsMjEgQEAKLWluaGVyaXQgcm9vdGZzXyR7SU1BR0VfUEtHVFlQRX0KIAorSU1BR0VfQ0xBU1NFUyA/Pz0gIiIKKworIyByb290ZnMgYm9vdHN0cmFwIGluc3RhbGwKKyMgd2FybmluZyAtICBpbWFnZS1jb250YWluZXIgcmVzZXRzIHRoaXMKK1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTCA9ICJydW4tcG9zdGluc3RzIgorCisjIEhhbmRsZSBpbmhlcml0cyBvZiBhbnkgb2YgdGhlIGltYWdlIGNsYXNzZXMgd2UgbmVlZAorSU1HQ0xBU1NFUyA9ICJyb290ZnNfJHtJTUFHRV9QS0dUWVBFfSBpbWFnZV90eXBlcyAke0lNQUdFX0NMQVNTRVN9IgogIyBPbmx5IExpbnV4IFNES3Mgc3VwcG9ydCBwb3B1bGF0ZV9zZGtfZXh0LCBmYWxsIGJhY2sgdG8gcG9wdWxhdGVfc2RrX2Jhc2UKICMgaW4gdGhlIG5vbi1MaW51eCBTREtfT1MgY2FzZSwgc3VjaCBhcyBtaW5ndzMyCi1TREtFWFRDTEFTUyA/PSAiJHtAWydwb3B1bGF0ZV9zZGtfYmFzZScsICdwb3B1bGF0ZV9zZGtfZXh0J11bJ2xpbnV4JyBpbiBkLmdldFZhcigiU0RLX09TIildfSIKLWluaGVyaXQgJHtTREtFWFRDTEFTU30KK0lNR0NMQVNTRVMgKz0gIiR7QFsncG9wdWxhdGVfc2RrX2Jhc2UnLCAncG9wdWxhdGVfc2RrX2V4dCddWydsaW51eCcgaW4gZC5nZXRWYXIoIlNES19PUyIpXX0iCitJTUdDTEFTU0VTICs9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnbGl2ZSBpc28gaGRkaW1nJywgJ2ltYWdlLWxpdmUnLCAnJywgZCl9IgorSU1HQ0xBU1NFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZTVFlQRVMnLCAnY29udGFpbmVyJywgJ2ltYWdlLWNvbnRhaW5lcicsICcnLCBkKX0iCitJTUdDTEFTU0VTICs9ICJpbWFnZV90eXBlc193aWMiCitJTUdDTEFTU0VTICs9ICJyb290ZnMtcG9zdGNvbW1hbmRzIgorSU1HQ0xBU1NFUyArPSAiaW1hZ2UtcG9zdGluc3QtaW50ZXJjZXB0cyIKK2luaGVyaXQgJHtJTUdDTEFTU0VTfQogCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0sgKz0gIiR7UEFDS0FHRV9JTlNUQUxMfSIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19BVFRFTVBUT05MWSArPSAiJHtQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFl9IgpAQCAtMTEsMjUgKzIzLDIzIEBACiAKIExJQ0VOU0UgPz0gIk1JVCIKIFBBQ0tBR0VTID0gIiIKLURFUEVORFMgKz0gIiR7TUxQUkVGSVh9cWVtdXdyYXBwZXItY3Jvc3MgZGVwbW9kd3JhcHBlci1jcm9zcyIKK0RFUEVORFMgKz0gIiR7QCcgJy5qb2luKFsiJXMtcWVtdXdyYXBwZXItY3Jvc3MiICUgbSBmb3IgbSBpbiBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKS5zcGxpdCgpXSl9IHFlbXV3cmFwcGVyLWNyb3NzIGRlcG1vZHdyYXBwZXItY3Jvc3MgY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSIKIFJERVBFTkRTICs9ICIke1BBQ0tBR0VfSU5TVEFMTH0gJHtMSU5HVUFTX0lOU1RBTEx9IgogUlJFQ09NTUVORFMgKz0gIiR7UEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZfSIKK1BBVEhfcHJlcGVuZCA9ICIke0AiOiIuam9pbihhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgJ1NUQUdJTkdfQklORElSX0NST1NTJykuc3BsaXQoKSl9OiIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAotVEVTVElNQUdFQ0xBU1MgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1RFU1RfSU1BR0UnLCAnMScsICd0ZXN0aW1hZ2UtYXV0bycsICcnLCBkKX0iCi1pbmhlcml0ICR7VEVTVElNQUdFQ0xBU1N9Ci0KICMgSU1BR0VfRkVBVFVSRVMgbWF5IGNvbnRhaW4gYW55IGF2YWlsYWJsZSBwYWNrYWdlIGdyb3VwCiBJTUFHRV9GRUFUVVJFUyA/PSAiIgogSU1BR0VfRkVBVFVSRVNbdHlwZV0gPSAibGlzdCIKLUlNQUdFX0ZFQVRVUkVTW3ZhbGlkaXRlbXNdICs9ICJkZWJ1Zy10d2Vha3MgcmVhZC1vbmx5LXJvb3RmcyBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIHBvc3QtaW5zdGFsbC1sb2dnaW5nIgorSU1BR0VfRkVBVFVSRVNbdmFsaWRpdGVtc10gKz0gImRlYnVnLXR3ZWFrcyByZWFkLW9ubHktcm9vdGZzIGVtcHR5LXJvb3QtcGFzc3dvcmQgYWxsb3ctZW1wdHktcGFzc3dvcmQgYWxsb3ctcm9vdC1sb2dpbiBwb3N0LWluc3RhbGwtbG9nZ2luZyIKIAogIyBHZW5lcmF0ZSBjb21wYW5pb24gZGVidWdmcz8KIElNQUdFX0dFTl9ERUJVR0ZTID89ICIwIgogCi0jIHJvb3RmcyBib290c3RyYXAgaW5zdGFsbAotUk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMID0gInJ1bi1wb3N0aW5zdHMiCisjIFRoZXNlIHBhY2Fja2FnZXMgd2lsbCBiZSBpbnN0YWxsZWQgYXMgYWRkaXRpb25hbCBpbnRvIGRlYnVnIHJvb3RmcworSU1BR0VfSU5TVEFMTF9ERUJVR0ZTID89ICIiCiAKICMgVGhlc2UgcGFja2FnZXMgd2lsbCBiZSByZW1vdmVkIGZyb20gYSByZWFkLW9ubHkgcm9vdGZzIGFmdGVyIGFsbCBvdGhlcgogIyBwYWNrYWdlcyBoYXZlIGJlZW4gaW5zdGFsbGVkCkBAIC0xMTcsNyArMTI3LDcgQEAKICAgICAgICAgICAgICAgICAgJ0lNQUdFX1JPT1RGU19NQVhTSVpFJywnSU1BR0VfTkFNRScsJ0lNQUdFX0xJTktfTkFNRScsJ0lNQUdFX01BTklGRVNUJywnREVQTE9ZX0RJUl9JTUFHRScsJ0lNQUdFX0ZTVFlQRVMnLCdJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdJTUFHRV9MSU5HVUFTJywKICAgICAgICAgICAgICAgICAgJ01VTFRJTElCUkVfQUxMT1dfUkVQJywnTVVMVElMSUJfVEVNUF9ST09URlMnLCdNVUxUSUxJQl9WQVJJQU5UUycsJ01VTFRJTElCUycsJ0FMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTJywnTVVMVElMSUJfR0xPQkFMX1ZBUklBTlRTJywnQkFEX1JFQ09NTUVOREFUSU9OUycsJ05PX1JFQ09NTUVOREFUSU9OUycsCiAgICAgICAgICAgICAgICAgICdQQUNLQUdFX0FSQ0hTJywnUEFDS0FHRV9DTEFTU0VTJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9BUkNIJywnVEFSR0VUX09TJywnT1ZFUlJJREVTJywnQkJFWFRFTkRWQVJJQU5UJywnRkVFRF9ERVBMT1lESVJfQkFTRV9VUkknLCdJTlRFUkNFUFRfRElSJywnVVNFX0RFVkZTJywKLSAgICAgICAgICAgICAgICAgJ0NPTlZFUlNJT05UWVBFUycsICdJTUFHRV9HRU5fREVCVUdGUycsICdST09URlNfUk9fVU5ORUVERUQnLCAnSU1HREVQTE9ZRElSJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJywgJ1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTJ10KKyAgICAgICAgICAgICAgICAgJ0NPTlZFUlNJT05UWVBFUycsICdJTUFHRV9HRU5fREVCVUdGUycsICdST09URlNfUk9fVU5ORUVERUQnLCAnSU1HREVQTE9ZRElSJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJywgJ1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTJywgJ0lNQUdFX0lOU1RBTExfREVCVUdGUyddCiAgICAgdmFyaWFibGVzLmV4dGVuZChyb290ZnNfY29tbWFuZF92YXJpYWJsZXMoZCkpCiAgICAgdmFyaWFibGVzLmV4dGVuZCh2YXJpYWJsZV9kZXBlbmRzKGQpKQogICAgIHJldHVybiAiICIuam9pbih2YXJpYWJsZXMpCkBAIC0xMjYsMjMgKzEzNiw2IEBACiAKIGRvX2J1aWxkW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kiCiAKLWRlZiBidWlsZF9saXZlKGQpOgotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTUFHRV9GU1RZUEVTIiwgImxpdmUiLCAibGl2ZSIsICIwIiwgZCkgPT0gIjAiOiAjIGxpdmUgaXMgbm90IHNldCBidXQgaG9iIG1pZ2h0IHNldCBpc28gb3IgaGRkaW1nCi0gICAgICAgIGQuc2V0VmFyKCdOT0lTTycsIGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9GU1RZUEVTJywgImlzbyIsICIwIiwgIjEiLCBkKSkKLSAgICAgICAgZC5zZXRWYXIoJ05PSEREJywgYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX0ZTVFlQRVMnLCAiaGRkaW1nIiwgIjAiLCAiMSIsIGQpKQotICAgICAgICBpZiBkLmdldFZhcignTk9JU08nKSA9PSAiMCIgb3IgZC5nZXRWYXIoJ05PSEREJykgPT0gIjAiOgotICAgICAgICAgICAgcmV0dXJuICJpbWFnZS1saXZlIgotICAgICAgICByZXR1cm4gIiIKLSAgICByZXR1cm4gImltYWdlLWxpdmUiCi0KLUlNQUdFX1RZUEVfbGl2ZSA9ICIke0BidWlsZF9saXZlKGQpfSIKLWluaGVyaXQgJHtJTUFHRV9UWVBFX2xpdmV9Ci0KLUlNQUdFX1RZUEVfY29udGFpbmVyID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJJTUFHRV9GU1RZUEVTIiwgImNvbnRhaW5lciIsICJpbWFnZS1jb250YWluZXIiLCAiIiwgZCl9JwotaW5oZXJpdCAke0lNQUdFX1RZUEVfY29udGFpbmVyfQotCi1JTUFHRV9UWVBFX3dpYyA9ICJpbWFnZV90eXBlc193aWMiCi1pbmhlcml0ICR7SU1BR0VfVFlQRV93aWN9CiAKIHB5dGhvbiAoKSB7CiAgICAgZGVmIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcyh0YXNrKToKQEAgLTE1MSw3ICsxNDQsNiBAQAogICAgICAgICAgICAgZGVwcyArPSAiICVzOiVzIiAlIChkZXAsIHRhc2spCiAgICAgICAgIHJldHVybiBkZXBzCiAKLSAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX3BvcHVsYXRlX2xpYycpKQogICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2VfY29tcGxldGUnLCAnZGVwZW5kcycsIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcygnZG9fcG9wdWxhdGVfc3lzcm9vdCcpKQogCiAgICAgZGVwcyA9ICIgIiArIGltYWdldHlwZXNfZ2V0ZGVwZW5kcyhkKQpAQCAtMTc3LDkgKzE2OSw2IEBACiAgICAgY2hlY2tfaW1hZ2VfZmVhdHVyZXMoZCkKIH0KIAotSU1BR0VfQ0xBU1NFUyArPSAiaW1hZ2VfdHlwZXMiCi1pbmhlcml0ICR7SU1BR0VfQ0xBU1NFU30KLQogSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCA/PSAiIgogCiAjIHNvbWUgZGVmYXVsdCBsb2NhbGVzCkBAIC0xOTEsOCArMTgwLDYgQEAKICMgYXJlbid0IHlldCBhdmFpbGFibGUuCiBQU0VVRE9fUEFTU1dEID0gIiR7SU1BR0VfUk9PVEZTfToke1NUQUdJTkdfRElSX05BVElWRX0iCiAKLWluaGVyaXQgcm9vdGZzLXBvc3Rjb21tYW5kcwotCiBQQUNLQUdFX0VYQ0xVREUgPz89ICIiCiBQQUNLQUdFX0VYQ0xVREVbdHlwZV0gPSAibGlzdCIKIApAQCAtMjYyLDYgKzI0OSw3IEBACiBkb19yb290ZnNbZGlyc10gPSAiJHtUT1BESVJ9IgogZG9fcm9vdGZzW2NsZWFuZGlyc10gKz0gIiR7U30gJHtJTUdERVBMT1lESVJ9IgogZG9fcm9vdGZzW3VtYXNrXSA9ICIwMjIiCitkb19yb290ZnNbZmlsZS1jaGVja3N1bXNdICs9ICIke1BPU1RJTlNUX0lOVEVSQ0VQVF9DSEVDS1NVTVN9IgogYWRkdGFzayByb290ZnMgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdAogCiBmYWtlcm9vdCBweXRob24gZG9faW1hZ2UgKCkgewpAQCAtNjY2LDcgKzY1NCwxMCBAQAogcmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2sgKCkgewogICAgIGlmIFsgIiR7QlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTfSIgPSAiMSIgXTsgdGhlbgogICAgICAgICBpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgotICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YGdpdCBsb2cgLTEgLS1wcmV0dHk9JWN0YAorICAgICAgICAgICAgUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlM9YGdpdCAtQyAiJHtDT1JFQkFTRX0iIGxvZyAtMSAtLXByZXR0eT0lY3QgMj4vZGV2L251bGxgIHx8IHRydWUKKyAgICAgICAgICAgIGlmIFsgIiR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9IiA9ICIiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUz1gc3RhdCAtYyVZICR7QGJiLnV0aWxzLndoaWNoKGQuZ2V0VmFyKCJCQlBBVEgiKSwgImNvbmYvYml0YmFrZS5jb25mIil9YAorICAgICAgICAgICAgZmkKICAgICAgICAgZmkKICAgICAgICAgIyBTZXQgbXRpbWUgb2YgYWxsIGZpbGVzIHRvIGEgcmVwcm9kdWNpYmxlIHZhbHVlCiAgICAgICAgIGJibm90ZSAicmVwcm9kdWNpYmxlX2ZpbmFsX2ltYWdlX3Rhc2s6IG10aW1lIHNldCB0byAkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwppbmRleCAwMGEwMGQzLi4wNWU1YjBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKQEAgLTE1NCw3ICsxNTQsNyBAQAogCWxvY2FsIHViaW5pemVfYXJncz0iJDIiCiAgICAgCiAgICAgICAgICMgQWRkZWQgcHJvbXB0IGVycm9yIG1lc3NhZ2UgZm9yIHViaSBhbmQgdWJpZnMgaW1hZ2UgY3JlYXRpb24uCi0gICAgICAgIGlmIFsgLXogIiRta3ViaWZzX2FyZ3MiXSB8fCBbIC16ICIkdWJpbml6ZV9hcmdzIiBdOyB0aGVuCisgICAgICAgIGlmIFsgLXogIiRta3ViaWZzX2FyZ3MiIF0gfHwgWyAteiAiJHViaW5pemVfYXJncyIgXTsgdGhlbgogICAgICAgICAgICAgYmJmYXRhbCAiTUtVQklGU19BUkdTIGFuZCBVQklOSVpFX0FSR1MgaGF2ZSB0byBiZSBzZXQsIHNlZSBodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnL2ZhcS91Ymlmcy5odG1sIGZvciBkZXRhaWxzIgogICAgICAgICBmaQogICAgIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwppbmRleCBlYjJkOTY3Li40NjQ0MjIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwpAQCAtNDYsMTM5ICs0Niw2IEBACiAKIFVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCA/PSAiLS1lbmFibGUtbmxzIC0tZGlzYWJsZS1ubHMgLS1kaXNhYmxlLXNpbGVudC1ydWxlcyAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyAtLXdpdGgtbGlidG9vbC1zeXNyb290IC0tZGlzYWJsZS1zdGF0aWMiCiAKLSMKLSMgZGljdGlvbmFyeSBmb3IgZWxmIGhlYWRlcnMKLSMKLSMgZmVlbCBmcmVlIHRvIGFkZCBhbmQgY29ycmVjdC4KLSMKLSMgICAgICAgICAgIFRBUkdFVF9PUyAgVEFSR0VUX0FSQ0ggICBNQUNISU5FLCBPU0FCSSwgQUJJVkVSU0lPTiwgTGl0dGxlIEVuZGlhbiwgMzJiaXQ/Ci1kZWYgcGFja2FnZV9xYV9nZXRfbWFjaGluZV9kaWN0KGQpOgotICAgIG1hY2hkYXRhID0gewotICAgICAgICAgICAgImRhcndpbjkiIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiZWFiaSIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImVsZiIgOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0X2JlIiA6KDE4MywgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiIDogICAgICAoMywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJlcGlwaGFueSI6ICAgKDQ2NDMsICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjMyIjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eCIgOiB7IAotICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjNjQiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTQ4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpYTY0IjogICAgICAgKDUwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFscGhhIjogICAgICAoMzY5MDIsICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaHBwYSI6ICAgICAgICgxNSwgICAgIDMsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtNjhrIjogICAgICAgKCA0LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTMycjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2IjogICAoIDgsICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjZlbCI6ICggOCwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJuaW9zMiI6ICAgICAgKDExMywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzMzkwIjogICAgICAgKDIyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BhcmMiOiAgICAgICggMiwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LW11c2wiIDogeyAKLSAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiI6ICAgICAgKCAgNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICggIDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk2ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKCAgNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNlbCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWIiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICggIDQyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidWNsaW51eC11Y2xpYmMiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgImJmaW4iOiAgICAgICAoIDEwNiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sIAotICAgICAgICAgICAgImxpbnV4LWdudWVhYmkiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LW11c2xlYWJpIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcm0iIDogICAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIiA6ICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1nbnVzcGUiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1tdXNsc3BlIiA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtZ251IiA6ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC1nbnVfaWxwMzIiIDogICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtZ251eDMyIiA6ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtbXVzbHgzMiIgOiAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LWdudW4zMiIgOiAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0IjogICAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NGVsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNiI6ICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjZlbCI6KCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgIH0KLQotICAgICMgQWRkIGluIGFueSBleHRyYSB1c2VyIHN1cHBsaWVkIGRhdGEgd2hpY2ggbWF5IGNvbWUgZnJvbSBhIEJTUCBsYXllciwgcmVtb3ZpbmcgdGhlCi0gICAgIyBuZWVkIHRvIGFsd2F5cyBjaGFuZ2UgdGhpcyBjbGFzcyBkaXJlY3RseQotICAgIGV4dHJhX21hY2hkYXRhID0gKGQuZ2V0VmFyKCJQQUNLQUdFUUFfRVhUUkFfTUFDSERFRkZVTkNTIikgb3IgIiIpLnNwbGl0KCkKLSAgICBmb3IgbSBpbiBleHRyYV9tYWNoZGF0YToKLSAgICAgICAgY2FsbCA9IG0gKyAiKG1hY2hkYXRhLCBkKSIKLSAgICAgICAgbG9jcyA9IHsgIm1hY2hkYXRhIiA6IG1hY2hkYXRhLCAiZCIgOiBkfQotICAgICAgICBtYWNoZGF0YSA9IGJiLnV0aWxzLmJldHRlcl9ldmFsKGNhbGwsIGxvY3MpCi0KLSAgICByZXR1cm4gbWFjaGRhdGEKLQotCiBkZWYgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsIGQsIHBrZz1Ob25lKToKICAgICAiIiIKICAgICBSZW1vdmUgcmVkdW5kYW50IHBhdGhzIGZyb20gdGhlIHBhdGggZm9yIGRpc3BsYXkuICBJZiBwa2cgaXNuJ3Qgc2V0IHRoZW4KQEAgLTQwMyw3ICsyNzAsNyBAQAogICAgICIiIgogICAgIENoZWNrIGlmIGFyY2hzIGFyZSBjb21wYXRpYmxlCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCisgICAgaW1wb3J0IHJlLCBvZS5lbGYKIAogICAgIGlmIG5vdCBlbGY6CiAgICAgICAgIHJldHVybgpAQCAtNDMwLDEyICsyOTcsMTQgQEAKIAogICAgICNpZiB0aGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLCB0aGVuIGZpeCB0aGUgZGljdCBhYm92ZQogICAgIChtYWNoaW5lLCBvc2FiaSwgYWJpdmVyc2lvbiwgbGl0dGxlZW5kaWFuLCBiaXRzKSBcCi0gICAgICAgID0gcGFja2FnZV9xYV9nZXRfbWFjaGluZV9kaWN0KGQpW3RhcmdldF9vc11bdGFyZ2V0X2FyY2hdCisgICAgICAgID0gb2UuZWxmLm1hY2hpbmVfZGljdChkKVt0YXJnZXRfb3NdW3RhcmdldF9hcmNoXQogCiAgICAgIyBDaGVjayB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBlbmRpYW5uZXMgb2YgdGhlIGJpbmFyeQogICAgIGlzXzMyID0gKCgidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUiLCBkKSkgYW5kIFwKLSAgICAgICAgICAgICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgdGFyZ2V0X29zID09ICJsaW51eC1tdXNseDMyIiBvciB0YXJnZXRfb3MgPT0gImxpbnV4LWdudV9pbHAzMiIgb3IgcmUubWF0Y2goJ21pcHM2NC4qMzInLCBkLmdldFZhcignREVGQVVMVFRVTkUnKSkpCi0gICAgaWYgbm90ICgobWFjaGluZSA9PSBlbGYubWFjaGluZSgpKSBvciBpc18zMik6CisgICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgb3IgXAorICAgICAgICAgICAgdGFyZ2V0X29zID09ICJsaW51eC1nbnVfaWxwMzIiIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQorICAgIGlzX2JwZiA9IChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoZWxmLm1hY2hpbmUoKSkgPT0gIkJQRiIpCisgICAgaWYgbm90ICgobWFjaGluZSA9PSBlbGYubWFjaGluZSgpKSBvciBpc18zMiBvciBpc19icGYpOgogICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAiYXJjaCIsICJBcmNoaXRlY3R1cmUgZGlkIG5vdCBtYXRjaCAoJXMsIGV4cGVjdGVkICVzKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAgICAgIChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoZWxmLm1hY2hpbmUoKSksIG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZyhtYWNoaW5lKSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQogICAgIGVsaWYgbm90ICgoYml0cyA9PSBlbGYuYWJpU2l6ZSgpKSBvciBpc18zMik6CkBAIC01OTksNyArNDY4LDcgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBpZiBub3QgbGljX2ZpbGVzIGFuZCBkLmdldFZhcignU1JDX1VSSScpOgotICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IFJlY2lwZSBmaWxlIGZldGNoZXMgZmlsZXMgYW5kIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChMSUNfRklMRVNfQ0hLU1VNKSIsIGQpCisgICAgICAgIHNhbmUgJj0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IFJlY2lwZSBmaWxlIGZldGNoZXMgZmlsZXMgYW5kIGRvZXMgbm90IGhhdmUgbGljZW5zZSBmaWxlIGluZm9ybWF0aW9uIChMSUNfRklMRVNfQ0hLU1VNKSIsIGQpCiAKICAgICBzcmNkaXIgPSBkLmdldFZhcignUycpCiAgICAgY29yZWJhc2VfbGljZW5zZWZpbGUgPSBkLmdldFZhcignQ09SRUJBU0UnKSArICIvTElDRU5TRSIKQEAgLTYwNywxMSArNDc2LDExIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICh0eXBlLCBob3N0LCBwYXRoLCB1c2VyLCBwc3dkLCBwYXJtKSA9IGJiLmZldGNoLmRlY29kZXVybCh1cmwpCiAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaC5NYWxmb3JtZWRVcmw6Ci0gICAgICAgICAgICBzYW5lID0gcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gY29udGFpbnMgYW4gaW52YWxpZCBVUkw6ICIgKyB1cmwsIGQpCisgICAgICAgICAgICBzYW5lICY9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBMSUNfRklMRVNfQ0hLU1VNIGNvbnRhaW5zIGFuIGludmFsaWQgVVJMOiAiICsgdXJsLCBkKQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgc3JjbGljZmlsZSA9IG9zLnBhdGguam9pbihzcmNkaXIsIHBhdGgpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzcmNsaWNmaWxlKToKLSAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgcG4gKyAiOiBMSUNfRklMRVNfQ0hLU1VNIHBvaW50cyB0byBhbiBpbnZhbGlkIGZpbGU6ICIgKyBzcmNsaWNmaWxlLCBkKQorICAgICAgICAgICAgc2FuZSAmPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBwb2ludHMgdG8gYW4gaW52YWxpZCBmaWxlOiAiICsgc3JjbGljZmlsZSwgZCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgaWYgKHNyY2xpY2ZpbGUgPT0gY29yZWJhc2VfbGljZW5zZWZpbGUpOgpAQCAtNjk1LDcgKzU2NCw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1zZyA9IHBuICsgIjogTElDX0ZJTEVTX0NIS1NVTSBpcyBub3Qgc3BlY2lmaWVkIGZvciAiICsgIHVybAogICAgICAgICAgICAgICAgIG1zZyA9IG1zZyArICJcbiIgKyBwbiArICI6IFRoZSBtZDUgY2hlY2tzdW0gaXMgIiArIG1kNWNoa3N1bQotICAgICAgICAgICAgc2FuZSA9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsaWNlbnNlLWNoZWNrc3VtIiwgbXNnLCBkKQorICAgICAgICAgICAgc2FuZSAmPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIG1zZywgZCkKIAogICAgIGlmIG5vdCBzYW5lOgogICAgICAgICBiYi5mYXRhbCgiRmF0YWwgUUEgZXJyb3JzIGZvdW5kLCBmYWlsaW5nIHRhc2suIikKQEAgLTczMiwxNCArNjAxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGVfY29udGVudCA9IGZpbGVfY29udGVudC5yZXBsYWNlKHJlY2lwZXN5c3Jvb3QsICIiKQogICAgICAgICAgICAgICAgICAgICBpZiB3b3JrZGlyIGluIGZpbGVfY29udGVudDoKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICIlcyBmYWlsZWQgc2FuaXR5IHRlc3QgKHdvcmtkaXIpIGluIHBhdGggJXMiICUgKGZpbGUscm9vdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhbmUgPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGEiLCBlcnJvcl9tc2csIGQpCisgICAgICAgICAgICAgICAgICAgICAgICBzYW5lICY9IHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJsYSIsIGVycm9yX21zZywgZCkKICAgICAgICAgICAgIGVsaWYgZmlsZS5lbmRzd2l0aCgiLnBjIik6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVfY29udGVudCA9IGYucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGZpbGVfY29udGVudCA9IGZpbGVfY29udGVudC5yZXBsYWNlKHJlY2lwZXN5c3Jvb3QsICIiKQogICAgICAgICAgICAgICAgICAgICBpZiBwa2djb25maWdjaGVjayBpbiBmaWxlX2NvbnRlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiJXMgZmFpbGVkIHNhbml0eSB0ZXN0ICh0bXBkaXIpIGluIHBhdGggJXMiICUgKGZpbGUscm9vdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNhbmUgPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigicGtnY29uZmlnIiwgZXJyb3JfbXNnLCBkKQorICAgICAgICAgICAgICAgICAgICAgICAgc2FuZSAmPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigicGtnY29uZmlnIiwgZXJyb3JfbXNnLCBkKQogCiAgICAgcmV0dXJuIHNhbmUKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1hcmNoLmJiY2xhc3MKaW5kZXggMDk3OTNmYy4uMDdlYzI0MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFyY2guYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJjaC5iYmNsYXNzCkBAIC0yMiwxMiArMjIsMTQgQEAKICAgICB2YWxpZF9hcmNocyA9IGQuZ2V0VmFyKCd2YWxpZF9hcmNocycpLnNwbGl0KCkKIAogICAgIGlmICAgcmUubWF0Y2goJyhpLjg2fGF0aGxvbnx4ODYuNjQpJCcsIGEpOiAgcmV0dXJuICd4ODYnCisgICAgZWxpZiByZS5tYXRjaCgnYXJjZWIkJywgYSk6ICAgICAgICAgICAgICAgICByZXR1cm4gJ2FyYycKICAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYiQnLCBhKTogICAgICAgICAgICAgICAgIHJldHVybiAnYXJtJwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlJCcsIGEpOiAgICAgICAgICAgIHJldHVybiAnYXJtNjQnCiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9pbHAzMiQnLCBhKTogICAgICAgICByZXR1cm4gJ2FybTY0JwogICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmVfaWxwMzIkJywgYSk6ICAgICAgcmV0dXJuICdhcm02NCcKICAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOiAgICAgIHJldHVybiAnbWlwcycKKyAgICBlbGlmIHJlLm1hdGNoKCdtY2YnLCBhKTogICAgICAgICAgICAgICAgICAgIHJldHVybiAnbTY4aycKICAgICBlbGlmIHJlLm1hdGNoKCdyaXNjdigzMnw2NHwpKGVifCkkJywgYSk6ICAgIHJldHVybiAncmlzY3YnCiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCBhKTogICAgICByZXR1cm4gJ3Bvd2VycGMnCiAgICAgZWxpZiByZS5tYXRjaCgnc2goM3w0KSQnLCBhKTogICAgICAgICAgICAgICByZXR1cm4gJ3NoJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtYXJ0aWZhY3QtbmFtZXMuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmVlY2JhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWFydGlmYWN0LW5hbWVzLmJiY2xhc3MKQEAgLTAsMCArMSwxOCBAQAorS0VSTkVMX0FSVElGQUNUX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKK0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCisKK0tFUk5FTF9JTUFHRV9OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKK0tFUk5FTF9JTUFHRV9MSU5LX05BTUUgPz0gIiR7S0VSTkVMX0FSVElGQUNUX0xJTktfTkFNRX0iCisKK0tFUk5FTF9EVEJfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTkFNRX0iCitLRVJORUxfRFRCX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKKworS0VSTkVMX0ZJVF9OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKK0tFUk5FTF9GSVRfTElOS19OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgorCitNT0RVTEVfVEFSQkFMTF9OQU1FID89ICIke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKK01PRFVMRV9UQVJCQUxMX0xJTktfTkFNRSA/PSAiJHtLRVJORUxfQVJUSUZBQ1RfTElOS19OQU1FfSIKK01PRFVMRV9UQVJCQUxMX0RFUExPWSA/PSAiMSIKKworSU5JVFJBTUZTX05BTUUgPz0gImluaXRyYW1mcy0ke0tFUk5FTF9BUlRJRkFDVF9OQU1FfSIKK0lOSVRSQU1GU19MSU5LX05BTUUgPz0gImluaXRyYW1mcy0ke0tFUk5FTF9BUlRJRkFDVF9MSU5LX05BTUV9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1kZXZpY2V0cmVlLmJiY2xhc3MKaW5kZXggNGY4MGNjNi4uODY3Yjc3NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCkBAIC0xMCwyMSArMTAsMjEgQEAKIEtFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRSA/PSAiMCIKIAogbm9ybWFsaXplX2R0YiAoKSB7Ci0JRFRCPSIkMSIKLQlpZiBlY2hvICR7RFRCfSB8IGdyZXAgLXEgJy9kdHMvJzsgdGhlbgotCQliYndhcm4gIiR7RFRCfSBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0aGUgZHRzIGZpbGUsIGJ1dCBvbmx5IHRoZSBkdGIgbmFtZSBzaG91bGQgYmUgdXNlZC4iCi0JCURUQj1gYmFzZW5hbWUgJHtEVEJ9IHwgc2VkICdzLFwuZHRzJCwuZHRiLGcnYAorCWR0Yj0iJDEiCisJaWYgZWNobyAkZHRiIHwgZ3JlcCAtcSAnL2R0cy8nOyB0aGVuCisJCWJid2FybiAiJGR0YiBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0aGUgZHRzIGZpbGUsIGJ1dCBvbmx5IHRoZSBkdGIgbmFtZSBzaG91bGQgYmUgdXNlZC4iCisJCWR0Yj1gYmFzZW5hbWUgJGR0YiB8IHNlZCAncyxcLmR0cyQsLmR0YixnJ2AKIAlmaQotCWVjaG8gIiR7RFRCfSIKKwllY2hvICIkZHRiIgogfQogCiBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgKCkgewotCURUQj0iJDEiCi0JRFRCX1BBVEg9IiR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZHRzLyR7RFRCfSIKLQlpZiBbICEgLWUgIiR7RFRCX1BBVEh9IiBdOyB0aGVuCi0JCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290LyR7RFRCfSIKKwlkdGI9IiQxIgorCWR0Yl9wYXRoPSIke0J9L2FyY2gvJHtBUkNIfS9ib290L2R0cy8kZHRiIgorCWlmIFsgISAtZSAiJGR0Yl9wYXRoIiBdOyB0aGVuCisJCWR0Yl9wYXRoPSIke0J9L2FyY2gvJHtBUkNIfS9ib290LyRkdGIiCiAJZmkKLQllY2hvICIke0RUQl9QQVRIfSIKKwllY2hvICIkZHRiX3BhdGgiCiB9CiAKIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CkBAIC01MCw2MSArNTAsNDQgQEAKIH0KIAogZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJRFRCPWBub3JtYWxpemVfZHRiICIke0RUQn0iYAotCQlvZV9ydW5tYWtlICR7RFRCfQorCWZvciBkdGJmIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbworCQlkdGI9YG5vcm1hbGl6ZV9kdGIgIiRkdGJmImAKKwkJb2VfcnVubWFrZSAkZHRiCiAJZG9uZQogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCi0JCURUQl9FWFQ9JHtEVEIjIyoufQotCQlEVEJfUEFUSD1gZ2V0X3JlYWxfZHRiX3BhdGhfaW5fa2VybmVsICIke0RUQn0iYAotCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7RFRCX1BBVEh9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0KLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJbG4gLXNmICR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vZGV2aWNldHJlZS0ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KLQotCQkJaWYgWyAiJHR5cGUiID0gInpJbWFnZSIgXSAmJiBbICIke0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KLQkJCQljYXQgJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR0eXBlIFwKLQkJCQkJJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfSBcCi0JCQkJCT4gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR0eXBlLSR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfS5iaW4KLQkJCWZpCi0JCWRvbmUKKwlmb3IgZHRiZiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KKwkJZHRiPWBub3JtYWxpemVfZHRiICIkZHRiZiJgCisJCWR0Yl9leHQ9JHtkdGIjIyoufQorCQlkdGJfYmFzZV9uYW1lPWBiYXNlbmFtZSAkZHRiIC4kZHRiX2V4dGAKKwkJZHRiX3BhdGg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJGR0YiJgCisJCWluc3RhbGwgLW0gMDY0NCAkZHRiX3BhdGggJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyRkdGJfYmFzZV9uYW1lLiRkdGJfZXh0CiAJZG9uZQogfQogCiBkb19kZXBsb3lfYXBwZW5kKCkgewotCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCi0JCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKLQkJRFRCX0VYVD0ke0RUQiMjKi59Ci0JCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAorCWZvciBkdGJmIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbworCQlkdGI9YG5vcm1hbGl6ZV9kdGIgIiRkdGJmImAKKwkJZHRiX2V4dD0ke2R0YiMjKi59CisJCWR0Yl9iYXNlX25hbWU9YGJhc2VuYW1lICRkdGIgLiRkdGJfZXh0YAorCQlpbnN0YWxsIC1kICR7REVQTE9ZRElSfQorCQlpbnN0YWxsIC1tIDA2NDQgJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyRkdGJfYmFzZV9uYW1lLiRkdGJfZXh0ICR7REVQTE9ZRElSfS8kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQKKwkJbG4gLXNmICRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9OQU1FfS4kZHRiX2V4dCAke0RFUExPWURJUn0vJGR0Yl9iYXNlX25hbWUuJGR0Yl9leHQKKwkJbG4gLXNmICRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9OQU1FfS4kZHRiX2V4dCAke0RFUExPWURJUn0vJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX0xJTktfTkFNRX0uJGR0Yl9leHQKIAkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KLQkJCWJhc2VfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQotCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9Ci0JCQlEVEJfTkFNRT1gZWNobyAke2Jhc2VfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKLQkJCWluc3RhbGwgLWQgJHtERVBMT1lESVJ9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0KLQkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9ICR7REVQTE9ZRElSfS8ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KLQkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9ICR7REVQTE9ZRElSfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0KLQogCQkJaWYgWyAiJHR5cGUiID0gInpJbWFnZSIgXSAmJiBbICIke0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KLQkJCQljYXQgJHtERVBMT1lESVJ9LyR0eXBlIFwKLQkJCQkJJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0gXAotCQkJCQk+ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9LmJpbgotCQkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9LmJpbiAke0RFUExPWURJUn0vJHR5cGUtJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbgotCisJCQkJY2F0ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8kdHlwZSBcCisJCQkJCSR7REVQTE9ZRElSfS8kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQgXAorCQkJCQk+ICR7REVQTE9ZRElSfS8kdHlwZS0kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQuYmluCisJCQkJbG4gLXNmICR0eXBlLSRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9OQU1FfS4kZHRiX2V4dC5iaW4gXAorCQkJCQkke0RFUExPWURJUn0vJHR5cGUtJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX0xJTktfTkFNRX0uJGR0Yl9leHQuYmluCiAJCQkJaWYgWyAtZSAiJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMiIF07IHRoZW4KIAkJCQkJY2F0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzIFwKLQkJCQkJCSR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9IFwKLQkJCQkJCT4gJHtERVBMT1lESVJ9LyR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluCi0JCQkJCWxuIC1zZiAke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0tJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbiBcCi0JCQkJCSAgICAgICAke0RFUExPWURJUn0vJHt0eXBlfS1pbml0cmFtZnMtJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LSR7TUFDSElORX0uYmluCisJCQkJCQkke0RFUExPWURJUn0vJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX05BTUV9LiRkdGJfZXh0CisJCQkJCQk+ICAke0RFUExPWURJUn0vJHt0eXBlfS0ke0lOSVRSQU1GU19OQU1FfS0kZHRiX2Jhc2VfbmFtZS0ke0tFUk5FTF9EVEJfTkFNRX0uJGR0Yl9leHQuYmluCisJCQkJCWxuIC1zZiAke3R5cGV9LSR7SU5JVFJBTUZTX05BTUV9LSRkdGJfYmFzZV9uYW1lLSR7S0VSTkVMX0RUQl9OQU1FfS4kZHRiX2V4dC5iaW4gXAorCQkJCQkJJHtERVBMT1lESVJ9LyR7dHlwZX0tJHtJTklUUkFNRlNfTkFNRX0tJGR0Yl9iYXNlX25hbWUtJHtLRVJORUxfRFRCX0xJTktfTkFNRX0uJGR0Yl9leHQuYmluCiAJCQkJZmkKIAkJCWZpCiAJCWRvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggNTBhOTFlMS4uNGM0ZmQ5OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKQEAgLTEsNCArMSw0IEBACi1pbmhlcml0IGtlcm5lbC11Ym9vdCB1Ym9vdC1zaWduCitpbmhlcml0IGtlcm5lbC11Ym9vdCBrZXJuZWwtYXJ0aWZhY3QtbmFtZXMgdWJvb3Qtc2lnbgogCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGtlcm5lbHR5cGVzID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVTJykgb3IgIiIKQEAgLTEzNSw2ICsxMzUsMTUgQEAKIAogCWR0Yl9jc3VtPSJzaGExIgogCisJZHRiX2xvYWRsaW5lPSIiCisJZHRiX2V4dD0ke0RUQiMjKi59CisJaWYgWyAiJHtkdGJfZXh0fSIgPSAiZHRibyIgXTsgdGhlbgorCQlpZiBbIC1uICIke1VCT09UX0RUQk9fTE9BREFERFJFU1N9IiBdOyB0aGVuCisJCQlkdGJfbG9hZGxpbmU9ImxvYWQgPSA8JHtVQk9PVF9EVEJPX0xPQURBRERSRVNTfT47IgorCQlmaQorCWVsaWYgWyAtbiAiJHtVQk9PVF9EVEJfTE9BREFERFJFU1N9IiBdOyB0aGVuCisJCWR0Yl9sb2FkbGluZT0ibG9hZCA9IDwke1VCT09UX0RUQl9MT0FEQUREUkVTU30+OyIKKwlmaQogCWNhdCA8PCBFT0YgPj4gJHsxfQogICAgICAgICAgICAgICAgIGZkdEAkezJ9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gIkZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBibG9iIjsKQEAgLTE0Miw2ICsxNTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJmbGF0X2R0IjsKICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2ggPSAiJHtVQk9PVF9BUkNIfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2lvbiA9ICJub25lIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICR7ZHRiX2xvYWRsaW5lfQogICAgICAgICAgICAgICAgICAgICAgICAgaGFzaEAxIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnbyA9ICIke2R0Yl9jc3VtfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMjQ4LDI1ICsyNTgsMzQgQEAKIAlmaQogCiAJIyBUZXN0IGlmIHdlIGhhdmUgYW55IERUQnMgYXQgYWxsCi0JY29uZl9kZXNjPSJMaW51eCBrZXJuZWwiCi0Ja2VybmVsX2xpbmU9Imtlcm5lbCA9IFwia2VybmVsQCR7Mn1cIjsiCisJc2VwPSIiCisJY29uZl9kZXNjPSIiCisJa2VybmVsX2xpbmU9IiIKIAlmZHRfbGluZT0iIgogCXJhbWRpc2tfbGluZT0iIgogCXNldHVwX2xpbmU9IiIKIAlkZWZhdWx0X2xpbmU9IiIKIAorCWlmIFsgLW4gIiR7Mn0iIF07IHRoZW4KKwkJY29uZl9kZXNjPSJMaW51eCBrZXJuZWwiCisJCXNlcD0iLCAiCisJCWtlcm5lbF9saW5lPSJrZXJuZWwgPSBcImtlcm5lbEAkezJ9XCI7IgorCWZpCisKIAlpZiBbIC1uICIkezN9IiBdOyB0aGVuCi0JCWNvbmZfZGVzYz0iJHtjb25mX2Rlc2N9LCBGRFQgYmxvYiIKKwkJY29uZl9kZXNjPSIke2NvbmZfZGVzY30ke3NlcH1GRFQgYmxvYiIKKwkJc2VwPSIsICIKIAkJZmR0X2xpbmU9ImZkdCA9IFwiZmR0QCR7M31cIjsiCiAJZmkKIAogCWlmIFsgLW4gIiR7NH0iIF07IHRoZW4KLQkJY29uZl9kZXNjPSIke2NvbmZfZGVzY30sIHJhbWRpc2siCisJCWNvbmZfZGVzYz0iJHtjb25mX2Rlc2N9JHtzZXB9cmFtZGlzayIKKwkJc2VwPSIsICIKIAkJcmFtZGlza19saW5lPSJyYW1kaXNrID0gXCJyYW1kaXNrQCR7NH1cIjsiCiAJZmkKIAogCWlmIFsgLW4gIiR7NX0iIF07IHRoZW4KLQkJY29uZl9kZXNjPSIke2NvbmZfZGVzY30sIHNldHVwIgorCQljb25mX2Rlc2M9IiR7Y29uZl9kZXNjfSR7c2VwfXNldHVwIgogCQlzZXR1cF9saW5lPSJzZXR1cCA9IFwic2V0dXBAJHs1fVwiOyIKIAlmaQogCkBAIC0yODksMTggKzMwOCwyNiBAQAogCiAJaWYgWyAhIC16ICIke2NvbmZfc2lnbl9rZXluYW1lfSIgXSA7IHRoZW4KIAotCQlzaWduX2xpbmU9InNpZ24taW1hZ2VzID0gXCJrZXJuZWxcIiIKKwkJc2lnbl9saW5lPSJzaWduLWltYWdlcyA9ICIKKwkJc2VwPSIiCisKKwkJaWYgWyAtbiAiJHsyfSIgXTsgdGhlbgorCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0ke3NlcH1cImtlcm5lbFwiIgorCQkJc2VwPSIsICIKKwkJZmkKIAogCQlpZiBbIC1uICIkezN9IiBdOyB0aGVuCi0JCQlzaWduX2xpbmU9IiR7c2lnbl9saW5lfSwgXCJmZHRcIiIKKwkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9JHtzZXB9XCJmZHRcIiIKKwkJCXNlcD0iLCAiCiAJCWZpCiAKIAkJaWYgWyAtbiAiJHs0fSIgXTsgdGhlbgotCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0sIFwicmFtZGlza1wiIgorCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0ke3NlcH1cInJhbWRpc2tcIiIKKwkJCXNlcD0iLCAiCiAJCWZpCiAKIAkJaWYgWyAtbiAiJHs1fSIgXTsgdGhlbgotCQkJc2lnbl9saW5lPSIke3NpZ25fbGluZX0sIFwic2V0dXBcIiIKKwkJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9JHtzZXB9XCJzZXR1cFwiIgogCQlmaQogCiAJCXNpZ25fbGluZT0iJHtzaWduX2xpbmV9OyIKQEAgLTM3Nyw3ICs0MDQsNyBAQAogCSMKIAlpZiBbICJ4JHtyYW1kaXNrY291bnR9IiA9ICJ4MSIgXSA7IHRoZW4KIAkJIyBGaW5kIGFuZCB1c2UgdGhlIGZpcnN0IGluaXRyYW1mcyBpbWFnZSBhcmNoaXZlIHR5cGUgd2UgZmluZAotCQlmb3IgaW1nIGluIGNwaW8ubHo0IGNwaW8ubHpvIGNwaW8ubHptYSBjcGlvLnh6IGNwaW8uZ3ogY3BpbzsgZG8KKwkJZm9yIGltZyBpbiBjcGlvLmx6NCBjcGlvLmx6byBjcGlvLmx6bWEgY3Bpby54eiBjcGlvLmd6IGV4dDIuZ3ogY3BpbzsgZG8KIAkJCWluaXRyYW1mc19wYXRoPSIke0RFUExPWV9ESVJfSU1BR0V9LyR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LiR7aW1nfSIKIAkJCWVjaG8gIlVzaW5nICRpbml0cmFtZnNfcGF0aCIKIAkJCWlmIFsgLWUgIiR7aW5pdHJhbWZzX3BhdGh9IiBdOyB0aGVuCkBAIC00MDMsNyArNDMwLDEyIEBACiAJaWYgWyAtbiAiJHtEVEJTfSIgXTsgdGhlbgogCQlpPTEKIAkJZm9yIERUQiBpbiAke0RUQlN9OyBkbwotCQkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2NvbmZpZyAkezF9ICIke2tlcm5lbGNvdW50fSIgIiR7RFRCfSIgIiR7cmFtZGlza2NvdW50fSIgIiR7c2V0dXBjb3VudH0iICJgZXhwciAke2l9ID0gJHtkdGJjb3VudH1gIgorCQkJZHRiX2V4dD0ke0RUQiMjKi59CisJCQlpZiBbICIke2R0Yl9leHR9IiA9ICJkdGJvIiBdOyB0aGVuCisJCQkJZml0aW1hZ2VfZW1pdF9zZWN0aW9uX2NvbmZpZyAkezF9ICIiICIke0RUQn0iICIiICIiICJgZXhwciAke2l9ID0gJHtkdGJjb3VudH1gIgorCQkJZWxzZQorCQkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9jb25maWcgJHsxfSAiJHtrZXJuZWxjb3VudH0iICIke0RUQn0iICIke3JhbWRpc2tjb3VudH0iICIke3NldHVwY291bnR9IiAiYGV4cHIgJHtpfSA9ICR7ZHRiY291bnR9YCIKKwkJCWZpCiAJCQlpPWBleHByICR7aX0gKyAxYAogCQlkb25lCiAJZmkKQEAgLTQyNyw3ICs0NTksNyBAQAogCQl1Ym9vdC1ta2ltYWdlIFwKIAkJCSR7QCctRCAiJHtVQk9PVF9NS0lNQUdFX0RUQ09QVFN9IicgaWYgbGVuKCcke1VCT09UX01LSU1BR0VfRFRDT1BUU30nKSBlbHNlICcnfSBcCiAJCQktRiAtayAiJHtVQk9PVF9TSUdOX0tFWURJUn0iIFwKLQkJCS1LICIke0RFUExPWV9ESVJfSU1BR0V9LyR7VUJPT1RfRFRCX0JJTkFSWX0iIFwKKwkJCSR7QCctSyAiJHtERVBMT1lfRElSX0lNQUdFfS8ke1VCT09UX0RUQl9CSU5BUll9IicgaWYgbGVuKCcke1VCT09UX0RUQl9CSU5BUll9JykgZWxzZSAnJ30gXAogCQkJLXIgYXJjaC8ke0FSQ0h9L2Jvb3QvJHsyfQogCWZpCiB9CkBAIC00NTYsMzIgKzQ4OCwyMiBAQAoga2VybmVsX2RvX2RlcGxveV9hcHBlbmQoKSB7CiAJIyBVcGRhdGUgZGVwbG95IGRpcmVjdG9yeQogCWlmIGVjaG8gJHtLRVJORUxfSU1BR0VUWVBFU30gfCBncmVwIC13cSAiZml0SW1hZ2UiOyB0aGVuCi0JCWNkICR7Qn0KIAkJZWNobyAiQ29weWluZyBmaXQtaW1hZ2UuaXRzIHNvdXJjZSBmaWxlLi4uIgotCQlpdHNfYmFzZV9uYW1lPSJmaXRJbWFnZS1pdHMtJHtQVn0tJHtQUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKLQkJaXRzX3N5bWxpbmtfbmFtZT1maXRJbWFnZS1pdHMtJHtNQUNISU5FfQotCQlpbnN0YWxsIC1tIDA2NDQgZml0LWltYWdlLml0cyAke0RFUExPWURJUn0vJHtpdHNfYmFzZV9uYW1lfS5pdHMKLQkJbGludXhfYmluX2Jhc2VfbmFtZT0iZml0SW1hZ2UtbGludXguYmluLSR7UFZ9LSR7UFJ9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi0JCWxpbnV4X2Jpbl9zeW1saW5rX25hbWU9Zml0SW1hZ2UtbGludXguYmluLSR7TUFDSElORX0KLQkJaW5zdGFsbCAtbSAwNjQ0IGxpbnV4LmJpbiAke0RFUExPWURJUn0vJHtsaW51eF9iaW5fYmFzZV9uYW1lfS5iaW4KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vZml0LWltYWdlLml0cyAke0RFUExPWURJUn0vZml0SW1hZ2UtaXRzLSR7S0VSTkVMX0ZJVF9OQU1FfS5pdHMKKwkJbG4gLXNuZiBmaXRJbWFnZS1pdHMtJHtLRVJORUxfRklUX05BTUV9Lml0cyAke0RFUExPWURJUn0vZml0SW1hZ2UtaXRzLSR7S0VSTkVMX0ZJVF9MSU5LX05BTUV9CisKKwkJZWNobyAiQ29weWluZyBsaW51eC5iaW4gZmlsZS4uLiIKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vbGludXguYmluICR7REVQTE9ZRElSfS9maXRJbWFnZS1saW51eC5iaW4tJHtLRVJORUxfRklUX05BTUV9LmJpbgorCQlsbiAtc25mIGZpdEltYWdlLWxpbnV4LmJpbi0ke0tFUk5FTF9GSVRfTkFNRX0uYmluICR7REVQTE9ZRElSfS9maXRJbWFnZS1saW51eC5iaW4tJHtLRVJORUxfRklUX0xJTktfTkFNRX0KIAogCQlpZiBbIC1uICIke0lOSVRSQU1GU19JTUFHRX0iIF07IHRoZW4KIAkJCWVjaG8gIkNvcHlpbmcgZml0LWltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfS5pdHMgc291cmNlIGZpbGUuLi4iCi0JCQlpdHNfaW5pdHJhbWZzX2Jhc2VfbmFtZT0iZml0SW1hZ2UtaXRzLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LSR7UFZ9LSR7UFJ9LSR7REFURVRJTUV9IgotCQkJaXRzX2luaXRyYW1mc19zeW1saW5rX25hbWU9Zml0SW1hZ2UtaXRzLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgZml0LWltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfS5pdHMgJHtERVBMT1lESVJ9LyR7aXRzX2luaXRyYW1mc19iYXNlX25hbWV9Lml0cwotCQkJZml0X2luaXRyYW1mc19iYXNlX25hbWU9ImZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LSR7UFZ9LSR7UFJ9LSR7REFURVRJTUV9IgotCQkJZml0X2luaXRyYW1mc19zeW1saW5rX25hbWU9Zml0SW1hZ2UtJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0KLQkJCWluc3RhbGwgLW0gMDY0NCBhcmNoLyR7QVJDSH0vYm9vdC9maXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRX0gJHtERVBMT1lESVJ9LyR7Zml0X2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgotCQlmaQorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vZml0LWltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfS5pdHMgJHtERVBMT1lESVJ9L2ZpdEltYWdlLWl0cy0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke0tFUk5FTF9GSVRfTkFNRX0uaXRzCisJCQlsbiAtc25mIGZpdEltYWdlLWl0cy0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke0tFUk5FTF9GSVRfTkFNRX0uaXRzICR7REVQTE9ZRElSfS9maXRJbWFnZS1pdHMtJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0tJHtLRVJORUxfRklUX0xJTktfTkFNRX0KIAotCQljZCAke0RFUExPWURJUn0KLQkJbG4gLXNmICR7aXRzX2Jhc2VfbmFtZX0uaXRzICR7aXRzX3N5bWxpbmtfbmFtZX0uaXRzCi0JCWxuIC1zZiAke2xpbnV4X2Jpbl9iYXNlX25hbWV9LmJpbiAke2xpbnV4X2Jpbl9zeW1saW5rX25hbWV9LmJpbgotCi0JCWlmIFsgLW4gIiR7SU5JVFJBTUZTX0lNQUdFfSIgXTsgdGhlbgotCQkJbG4gLXNmICR7aXRzX2luaXRyYW1mc19iYXNlX25hbWV9Lml0cyAke2l0c19pbml0cmFtZnNfc3ltbGlua19uYW1lfS5pdHMKLQkJCWxuIC1zZiAke2ZpdF9pbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4gJHtmaXRfaW5pdHJhbWZzX3N5bWxpbmtfbmFtZX0uYmluCisJCQllY2hvICJDb3B5aW5nIGZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFfSBmaWxlLi4uIgorCQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZml0SW1hZ2UtJHtJTklUUkFNRlNfSU1BR0V9ICR7REVQTE9ZRElSfS9maXRJbWFnZS0ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS0ke0tFUk5FTF9GSVRfTkFNRX0uYmluCisJCQlsbiAtc25mIGZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LSR7S0VSTkVMX0ZJVF9OQU1FfS5iaW4gJHtERVBMT1lESVJ9L2ZpdEltYWdlLSR7SU5JVFJBTUZTX0lNQUdFX05BTUV9LSR7S0VSTkVMX0ZJVF9MSU5LX05BTUV9CiAJCWZpCiAJZmkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11aW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11aW1hZ2UuYmJjbGFzcwppbmRleCAxZDg2NTZlLi5jMmRlNmJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVpbWFnZS5iYmNsYXNzCkBAIC0xLDcgKzEsNyBAQAogaW5oZXJpdCBrZXJuZWwtdWJvb3QKIAogcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpZiAidUltYWdlIiBpbiAoZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVTJykgb3IgIiIpLnNwbGl0KCk6CisgICAgaWYgInVJbWFnZSIgaW4gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVTJyk6CiAgICAgICAgIGRlcGVuZHMgPSBkLmdldFZhcigiREVQRU5EUyIpCiAgICAgICAgIGRlcGVuZHMgPSAiJXMgdS1ib290LW1raW1hZ2UtbmF0aXZlIiAlIGRlcGVuZHMKICAgICAgICAgZC5zZXRWYXIoIkRFUEVORFMiLCBkZXBlbmRzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwppbmRleCA4MmQ4MDc0Li40OTZjOGE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcwpAQCAtMTQwLDYgKzE0MCw4IEBACiAJCQlpbmNsdWRlcz0iJGluY2x1ZGVzIC1JJHtXT1JLRElSfS8kZi9rZXJuZWwtbWV0YSIKIAkgICAgICAgIGVsaWYgWyAtZCAiJHtXT1JLRElSfS8kZiIgXTsgdGhlbgogCQkJaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7V09SS0RJUn0vJGYiCisJCWVsaWYgWyAtZCAiJHtXT1JLRElSfS8uLi9vZS1sb2NhbC1maWxlcy8kZiIgXTsgdGhlbgorCQkJaW5jbHVkZXM9IiRpbmNsdWRlcyAtSSR7V09SS0RJUn0vLi4vb2UtbG9jYWwtZmlsZXMvJGYiCiAJCWZpCiAJZG9uZQogCWZvciBzIGluICR7c2Njc30gJHtwYXRjaGVzfTsgZG8KQEAgLTMxOSw3ICszMjEsNyBAQAogYWRkdGFzayBrZXJuZWxfY29uZmlnbWUgYmVmb3JlIGRvX2NvbmZpZ3VyZSBhZnRlciBkb19wYXRjaAogCiBweXRob24gZG9fa2VybmVsX2NvbmZpZ2NoZWNrKCkgewotICAgIGltcG9ydCByZSwgc3RyaW5nLCBzeXMKKyAgICBpbXBvcnQgcmUsIHN0cmluZywgc3lzLCBzdWJwcm9jZXNzCiAKICAgICAjIGlmIEtNRVRBIGlzbid0IHNldCBnbG9iYWxseSBieSBhIHJlY2lwZSB1c2luZyB0aGlzIHJvdXRpbmUsIHdlIG5lZWQgdG8KICAgICAjIHNldCB0aGUgZGVmYXVsdCB0byAnbWV0YScuIE90aGVyd2lzZSwga2NvbmZfY2hlY2sgaXMgbm90IHBhc3NlZCBhIHZhbGlkCkBAIC0zMjgsMTMgKzMzMCwyNCBAQAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhrbWV0YSk6CiAgICAgICAgIGttZXRhID0gIi4iICsga21ldGEKIAotICAgIHBhdGhwcmVmaXggPSAiZXhwb3J0IFBBVEg9JXM6JXM7ICIgJSAoZC5nZXRWYXIoJ1BBVEgnKSwgIiR7U30vc2NyaXB0cy91dGlsLyIpCisgICAgcyA9IGQuZ2V0VmFyKCdTJykKIAotICAgIGNtZCA9IGQuZXhwYW5kKCJzY2MgLS1jb25maWdzIC1vICR7U30vLmtlcm5lbC1tZXRhIikKLSAgICByZXQsIGNvbmZpZ3MgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIiVzJXMiICUgKHBhdGhwcmVmaXgsIGNtZCkpCisgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICBlbnZbJ1BBVEgnXSA9ICIlczolcyVzIiAlIChkLmdldFZhcignUEFUSCcpLCBzLCAiL3NjcmlwdHMvdXRpbC8iKQogCi0gICAgY21kID0gZC5leHBhbmQoImNkICR7U307IGtjb25mX2NoZWNrIC0tcmVwb3J0IC1vICR7U30vJXMvY2ZnLyAke0J9Ly5jb25maWcgJHtTfSAlcyIgJSAoa21ldGEsY29uZmlncykpCi0gICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoIiVzJXMiICUgKHBhdGhwcmVmaXgsIGNtZCkpCisgICAgdHJ5OgorICAgICAgICBjb25maWdzID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWydzY2MnLCAnLS1jb25maWdzJywgJy1vJywgcyArICcvLmtlcm5lbC1tZXRhJ10sIGVudj1lbnYpLmRlY29kZSgndXRmLTgnKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgorICAgICAgICBiYi5mYXRhbCggIkNhbm5vdCBnYXRoZXIgY29uZmlnIGZyYWdtZW50cyBmb3IgYXVkaXQ6ICVzIiAlIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSApCisKKyAgICB0cnk6CisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ2tjb25mX2NoZWNrJywgJy0tcmVwb3J0JywgJy1vJywKKyAgICAgICAgICAgICAgICAnJXMvJXMvY2ZnJyAlIChzLCBrbWV0YSksIGQuZ2V0VmFyKCdCJykgKyAnLy5jb25maWcnLCBzLCBjb25maWdzXSwgY3dkPXMsIGVudj1lbnYpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAjIFRoZSBjb25maWd1cmF0aW9uIGdhdGhlcmluZyBjYW4gcmV0dXJuIGRpZmZlcmVudCBleGl0IGNvZGVzLCBidXQKKyAgICAgICAgIyB3ZSBpbnRlcnByZXQgdGhlbSBiYXNlZCBvbiB0aGUgS0NPTkZfQVVESVRfTEVWRUwgdmFyaWFibGUsIHNvIHdlIGNhdGNoCisgICAgICAgICMgZXZlcnl0aGluZyBoZXJlLCBhbmQgbGV0IHRoZSBydW4gY29udGludWUuCisgICAgICAgIHBhc3MKIAogICAgIGNvbmZpZ19jaGVja192aXNpYmlsaXR5ID0gaW50KGQuZ2V0VmFyKCJLQ09ORl9BVURJVF9MRVZFTCIpIG9yIDApCiAgICAgYnNwX2NoZWNrX3Zpc2liaWxpdHkgPSBpbnQoZC5nZXRWYXIoIktDT05GX0JTUF9BVURJVF9MRVZFTCIpIG9yIDApCkBAIC0zNDYsNiArMzU5LDI3IEBACiAgICAgICAgICAgICB3aXRoIG9wZW4gKG1pc21hdGNoX2ZpbGUsICJyIikgYXMgbXlmaWxlOgogICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBteWZpbGUucmVhZCgpCiAgICAgICAgICAgICAgICAgYmIud2FybiggIltrZXJuZWwgY29uZmlnXTogc3BlY2lmaWVkIHZhbHVlcyBkaWQgbm90IG1ha2UgaXQgaW50byB0aGUga2VybmVsJ3MgZmluYWwgY29uZmlndXJhdGlvbjpcblxuJXMiICUgcmVzdWx0cykKKworICAgIGlmIGJzcF9jaGVja192aXNpYmlsaXR5OgorICAgICAgICBpbnZhbGlkX2ZpbGUgPSBkLmV4cGFuZCgiJHtTfS8lcy9jZmcvaW52YWxpZC5jZmciICUga21ldGEpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGludmFsaWRfZmlsZSkgYW5kIG9zLnN0YXQoaW52YWxpZF9maWxlKS5zdF9zaXplID4gMDoKKyAgICAgICAgICAgIHdpdGggb3BlbiAoaW52YWxpZF9maWxlLCAiciIpIGFzIG15ZmlsZToKKyAgICAgICAgICAgICAgICByZXN1bHRzID0gbXlmaWxlLnJlYWQoKQorICAgICAgICAgICAgICAgIGJiLndhcm4oICJba2VybmVsIGNvbmZpZ106IFRoaXMgQlNQIHNldHMgY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgbm90IG9mZmVyZWQgYW55d2hlcmUgd2l0aGluIHRoaXMga2VybmVsOlxuXG4lcyIgJSByZXN1bHRzKQorICAgICAgICBlcnJvcnNfZmlsZSA9IGQuZXhwYW5kKCIke1N9LyVzL2NmZy9mcmFnbWVudF9lcnJvcnMudHh0IiAlIGttZXRhKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhlcnJvcnNfZmlsZSkgYW5kIG9zLnN0YXQoZXJyb3JzX2ZpbGUpLnN0X3NpemUgPiAwOgorICAgICAgICAgICAgd2l0aCBvcGVuIChlcnJvcnNfZmlsZSwgInIiKSBhcyBteWZpbGU6CisgICAgICAgICAgICAgICByZXN1bHRzID0gbXlmaWxlLnJlYWQoKQorICAgICAgICAgICAgICAgYmIud2FybiggIltrZXJuZWwgY29uZmlnXTogVGhpcyBCU1AgY29udGFpbnMgZnJhZ21lbnRzIHdpdGggZXJyb3JzOlxuXG4lcyIgJSByZXN1bHRzKQorCisgICAgIyBpZiB0aGUgYXVkaXQgbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIHR3bywgd2UgcmVwb3J0IGlmIGEgZnJhZ21lbnQgaGFzIG92ZXJyaWRlbgorICAgICMgYSB2YWx1ZSBmcm9tIGEgYmFzZSBmcmFnbWVudC4gVGhpcyBpcyByZWFsbHkgb25seSB1c2VkIGZvciBuZXcga2VybmVsIGludHJvZHVjdGlvbgorICAgIGlmIGJzcF9jaGVja192aXNpYmlsaXR5ID4gMjoKKyAgICAgICAgcmVkZWZpbml0aW9uX2ZpbGUgPSBkLmV4cGFuZCgiJHtTfS8lcy9jZmcvcmVkZWZpbml0aW9uLnR4dCIgJSBrbWV0YSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVkZWZpbml0aW9uX2ZpbGUpIGFuZCBvcy5zdGF0KHJlZGVmaW5pdGlvbl9maWxlKS5zdF9zaXplID4gMDoKKyAgICAgICAgICAgIHdpdGggb3BlbiAocmVkZWZpbml0aW9uX2ZpbGUsICJyIikgYXMgbXlmaWxlOgorICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBteWZpbGUucmVhZCgpCisgICAgICAgICAgICAgICAgYmIud2FybiggIltrZXJuZWwgY29uZmlnXTogVGhpcyBCU1AgaGFzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkZWZpbmVkIGluIG1vcmUgdGhhbiBvbmUgY29uZmlnLCB3aXRoIGRpZmZlcmluZyB2YWx1ZXM6XG5cbiVzIiAlIHJlc3VsdHMpCiB9CiAKICMgRW5zdXJlIHRoYXQgdGhlIGJyYW5jaGVzIChCU1AgYW5kIG1ldGEpIGFyZSBvbiB0aGUgbG9jYXRpb25zIHNwZWNpZmllZCBieQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwppbmRleCA3Mjc4NTE0Li5lMDRkMmZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwpAQCAtNjIsMzEgKzYyLDM2IEBACiAgICAgdHlwZSA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFJykgb3IgIiIKICAgICBhbHR0eXBlID0gZC5nZXRWYXIoJ0tFUk5FTF9BTFRfSU1BR0VUWVBFJykgb3IgIiIKICAgICB0eXBlcyA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VUWVBFUycpIG9yICIiCi0gICAga25hbWUgPSBkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpIG9yICJrZXJuZWwiCiAgICAgaWYgdHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKICAgICAgICAgdHlwZXMgPSAodHlwZSArICcgJyArIHR5cGVzKS5zdHJpcCgpCiAgICAgaWYgYWx0dHlwZSBub3QgaW4gdHlwZXMuc3BsaXQoKToKICAgICAgICAgdHlwZXMgPSAoYWx0dHlwZSArICcgJyArIHR5cGVzKS5zdHJpcCgpCiAgICAgZC5zZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVTJywgdHlwZXMpCiAKLSAgICAjIHNvbWUgY29tbW9ubHkgdXNlZCBrZXJuZWwgaW1hZ2VzIGFyZW4ndCBnZW5lcmF0ZWQgYnkgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0sIHN1Y2ggYXMgdm1saW51eC5negotICAgICMgdHlwZWZvcm1ha2UgbGlzdHMgb25seSB2YWxpZCBrZXJuZWwgbWFrZSB0YXJnZXRzLCBhbmQgcG9zdCBwcm9jZXNzaW5nIGNhbiBiZSBkb25lIGFmdGVyIHRoZSBrZXJuZWwKLSAgICAjIGlzIGJ1aWx0IChzdWNoIGFzIHVzaW5nIGd6aXAgdG8gY29tcHJlc3Mgdm1saW51eCkKLSAgICB0eXBlZm9ybWFrZSA9IHR5cGVzLnJlcGxhY2UoJ3ZtbGludXguZ3onLCAndm1saW51eCcpCi0gICAgZC5zZXRWYXIoJ0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0UnLCB0eXBlZm9ybWFrZSkKKyAgICAjIEtFUk5FTF9JTUFHRVRZUEVTIG1heSBjb250YWluIGEgbWl4dHVyZSBvZiBpbWFnZSB0eXBlcyBzdXBwb3J0ZWQgZGlyZWN0bHkKKyAgICAjIGJ5IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtIGFuZCB0eXBlcyB3aGljaCBhcmUgY3JlYXRlZCBieSBwb3N0LXByb2Nlc3NpbmcKKyAgICAjIHRoZSBvdXRwdXQgb2YgdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0gKGUuZy4gY29tcHJlc3Npbmcgdm1saW51eCAtPgorICAgICMgdm1saW51eC5neiBpbiBrZXJuZWxfZG9fY29tcGlsZSgpKS4KKyAgICAjIEtFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0Ugc2hvdWxkIGNvbnRhaW4gb25seSBpbWFnZSB0eXBlcyBzdXBwb3J0ZWQKKyAgICAjIGRpcmVjdGx5IGJ5IHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLgorICAgIGlmIG5vdCBkLmdldFZhcignS0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRScpOgorICAgICAgICB0eXBlZm9ybWFrZSA9IHNldCgpCisgICAgICAgIGZvciB0eXBlIGluIHR5cGVzLnNwbGl0KCk6CisgICAgICAgICAgICBpZiB0eXBlID09ICd2bWxpbnV4Lmd6JzoKKyAgICAgICAgICAgICAgICB0eXBlID0gJ3ZtbGludXgnCisgICAgICAgICAgICB0eXBlZm9ybWFrZS5hZGQodHlwZSkKKworICAgICAgICBkLnNldFZhcignS0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRScsICcgJy5qb2luKHNvcnRlZCh0eXBlZm9ybWFrZSkpKQorCisgICAga25hbWUgPSBkLmdldFZhcignS0VSTkVMX1BBQ0tBR0VfTkFNRScpIG9yICJrZXJuZWwiCisgICAgaW1hZ2VkZXN0ID0gZC5nZXRWYXIoJ0tFUk5FTF9JTUFHRURFU1QnKQogCiAgICAgZm9yIHR5cGUgaW4gdHlwZXMuc3BsaXQoKToKICAgICAgICAgdHlwZWxvd2VyID0gdHlwZS5sb3dlcigpCi0gICAgICAgIGltYWdlZGVzdCA9IGQuZ2V0VmFyKCdLRVJORUxfSU1BR0VERVNUJykKLQogICAgICAgICBkLmFwcGVuZFZhcignUEFDS0FHRVMnLCAnICVzLWltYWdlLSVzJyAlIChrbmFtZSwgdHlwZWxvd2VyKSkKLQogICAgICAgICBkLnNldFZhcignRklMRVNfJyArIGtuYW1lICsgJy1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQotCiAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcy1pbWFnZScgJSBrbmFtZSwgJyAlcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlcikpCi0KICAgICAgICAgZC5zZXRWYXIoJ1BLR18lcy1pbWFnZS0lcycgJSAoa25hbWUsdHlwZWxvd2VyKSwgJyVzLWltYWdlLSVzLSR7S0VSTkVMX1ZFUlNJT05fUEtHX05BTUV9JyAlIChrbmFtZSwgdHlwZWxvd2VyKSkKLQogICAgICAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJXMtaW1hZ2UtJXMnICUgKGtuYW1lLCB0eXBlbG93ZXIpLCAnMScpCiAKICAgICBpbWFnZSA9IGQuZ2V0VmFyKCdJTklUUkFNRlNfSU1BR0UnKQpAQCAtMTU5LDcgKzE2NCw3IEBACiAKICMgVGhlIGRpcmVjdG9yeSB3aGVyZSBidWlsdCBrZXJuZWwgbGllcyBpbiB0aGUga2VybmVsIHRyZWUKIEtFUk5FTF9PVVRQVVRfRElSID89ICJhcmNoLyR7QVJDSH0vYm9vdCIKLUtFUk5FTF9JTUFHRURFU1QgPSAiYm9vdCIKK0tFUk5FTF9JTUFHRURFU1QgPz0gImJvb3QiCiAKICMKICMgY29uZmlndXJhdGlvbgpAQCAtMjI0LDM5ICsyMjksMzcgQEAKIAllY2hvICJGaW5pc2hlZCBjb3B5IG9mIGluaXRyYW1mcyBpbnRvIC4vdXNyIgogfQogCi1JTklUUkFNRlNfQkFTRV9OQU1FID89ICJpbml0cmFtZnMtJHtQVn0tJHtQUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKLUlOSVRSQU1GU19CQVNFX05BTUVbdmFyZGVwc2V4Y2x1ZGVdID0gIkRBVEVUSU1FIgogZG9fYnVuZGxlX2luaXRyYW1mcyAoKSB7CiAJaWYgWyAhIC16ICIke0lOSVRSQU1GU19JTUFHRX0iIC1hIHgiJHtJTklUUkFNRlNfSU1BR0VfQlVORExFfSIgPSB4MSBdOyB0aGVuCiAJCWVjaG8gIkNyZWF0aW5nIGEga2VybmVsIGltYWdlIHdpdGggYSBidW5kbGVkIGluaXRyYW1mcy4uLiIKIAkJY29weV9pbml0cmFtZnMKIAkJIyBCYWNraW5nIHVwIGtlcm5lbCBpbWFnZSByZWxpZXMgb24gaXRzIHR5cGUocmVndWxhciBmaWxlIG9yIHN5bWJvbGljIGxpbmspCiAJCXRtcF9wYXRoPSIiCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX0gOyBkbwotCQkJaWYgWyAtaCAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZSBdIDsgdGhlbgotCQkJCWxpbmtwYXRoPWByZWFkbGluayAtbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZWAKLQkJCQlyZWFscGF0aD1gcmVhZGxpbmsgLWZuICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlYAorCQlmb3IgaW1hZ2VUeXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX0gOyBkbworCQkJaWYgWyAtaCAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlIF0gOyB0aGVuCisJCQkJbGlua3BhdGg9YHJlYWRsaW5rIC1uICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGVgCisJCQkJcmVhbHBhdGg9YHJlYWRsaW5rIC1mbiAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlYAogCQkJCW12IC1mICRyZWFscGF0aCAkcmVhbHBhdGguYmFrCi0JCQkJdG1wX3BhdGg9JHRtcF9wYXRoIiAiJHR5cGUiIyIkbGlua3BhdGgiIyIkcmVhbHBhdGgKLQkJCWVsaWYgWyAtZiAke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZSBdOyB0aGVuCi0JCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuYmFrCi0JCQkJdG1wX3BhdGg9JHRtcF9wYXRoIiAiJHR5cGUiIyMiCisJCQkJdG1wX3BhdGg9JHRtcF9wYXRoIiAiJGltYWdlVHlwZSIjIiRsaW5rcGF0aCIjIiRyZWFscGF0aAorCQkJZWxpZiBbIC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUgXTsgdGhlbgorCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUgJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZS5iYWsKKwkJCQl0bXBfcGF0aD0kdG1wX3BhdGgiICIkaW1hZ2VUeXBlIiMjIgogCQkJZmkKIAkJZG9uZQogCQl1c2VfYWx0ZXJuYXRlX2luaXRyZD1DT05GSUdfSU5JVFJBTUZTX1NPVVJDRT0ke0J9L3Vzci8ke0lOSVRSQU1GU19JTUFHRV9OQU1FfS5jcGlvCiAJCWtlcm5lbF9kb19jb21waWxlCiAJCSMgUmVzdG9yaW5nIGtlcm5lbCBpbWFnZQogCQlmb3IgdHAgaW4gJHRtcF9wYXRoIDsgZG8KLQkJCXR5cGU9YGVjaG8gJHRwfGN1dCAtZCAiIyIgLWYgMWAKKwkJCWltYWdlVHlwZT1gZWNobyAkdHB8Y3V0IC1kICIjIiAtZiAxYAogCQkJbGlua3BhdGg9YGVjaG8gJHRwfGN1dCAtZCAiIyIgLWYgMmAKIAkJCXJlYWxwYXRoPWBlY2hvICR0cHxjdXQgLWQgIiMiIC1mIDNgCiAJCQlpZiBbIC1uICIkcmVhbHBhdGgiIF07IHRoZW4KIAkJCQltdiAtZiAkcmVhbHBhdGggJHJlYWxwYXRoLmluaXRyYW1mcwogCQkJCW12IC1mICRyZWFscGF0aC5iYWsgJHJlYWxwYXRoCi0JCQkJbG4gLXNmICRsaW5rcGF0aC5pbml0cmFtZnMgJHtCfS8ke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZS5pbml0cmFtZnMKKwkJCQlsbiAtc2YgJGxpbmtwYXRoLmluaXRyYW1mcyAke0J9LyR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUuaW5pdHJhbWZzCiAJCQllbHNlCi0JCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuaW5pdHJhbWZzCi0JCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHR5cGUuYmFrICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlCisJCQkJbXYgLWYgJHtLRVJORUxfT1VUUFVUX0RJUn0vJGltYWdlVHlwZSAke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlLmluaXRyYW1mcworCQkJCW12IC1mICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUuYmFrICR7S0VSTkVMX09VVFBVVF9ESVJ9LyRpbWFnZVR5cGUKIAkJCWZpCiAJCWRvbmUKIAlmaQpAQCAtMjgzLDcgKzI4Niw3IEBACiAJaWYgWyAiJHtCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVN9IiA9ICIxIiBdOyB0aGVuCiAJCSMga2VybmVsIHNvdXJjZXMgZG8gbm90IHVzZSBkb191bnBhY2ssIHNvIFNPVVJDRV9EQVRFX0VQT0NIIG1heSBub3QKIAkJIyBiZSBzZXQuLi4uCi0JCWlmIFsgIiRTT1VSQ0VfREFURV9FUE9DSCIgPSAiMCIgXTsgdGhlbgorCQlpZiBbICIke1NPVVJDRV9EQVRFX0VQT0NIfSIgPSAiIiAtbyAiJHtTT1VSQ0VfREFURV9FUE9DSH0iID0gIjAiIF07IHRoZW4KIAkJCW9sZGRpcj1gcHdkYAogCQkJY2QgJHtTfQogCQkJU09VUkNFX0RBVEVfRVBPQ0g9YGdpdCBsb2cgIC0xIC0tcHJldHR5PSVjdGAKQEAgLTM2MiwxMCArMzY1LDEwIEBACiAJIwogCWluc3RhbGwgLWQgJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9CiAJaW5zdGFsbCAtZCAke0R9L2Jvb3QKLQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCi0JCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke3R5cGV9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059CisJZm9yIGltYWdlVHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisJCWluc3RhbGwgLW0gMDY0NCAke0tFUk5FTF9PVVRQVVRfRElSfS8ke2ltYWdlVHlwZX0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7aW1hZ2VUeXBlfS0ke0tFUk5FTF9WRVJTSU9OfQogCQlpZiBbICIke0tFUk5FTF9QQUNLQUdFX05BTUV9IiA9ICJrZXJuZWwiIF07IHRoZW4KLQkJCWxuIC1zZiAke3R5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke3R5cGV9CisJCQlsbiAtc2YgJHtpbWFnZVR5cGV9LSR7S0VSTkVMX1ZFUlNJT059ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS8ke2ltYWdlVHlwZX0KIAkJZmkKIAlkb25lCiAJaW5zdGFsbCAtbSAwNjQ0IFN5c3RlbS5tYXAgJHtEfS9ib290L1N5c3RlbS5tYXAtJHtLRVJORUxfVkVSU0lPTn0KQEAgLTYzNywxMCArNjQwLDEwIEBACiAJCQlkaWUgIkludmFsaWQgS0VSTkVMX0lNQUdFX01BWFNJWkU6ICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9LCBzaG91bGQgYmUgYW4gaW50ZWdlciAoVGhlIHVuaXQgaXMgS2J5dGVzKSIKIAkJZmkKIAkJYXRfbGVhc3Rfb25lX2ZpdHM9Ci0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KLQkJCXNpemU9YGR1IC1rcyAke0J9LyR7S0VSTkVMX09VVFBVVF9ESVJ9LyR0eXBlIHwgYXdrICd7cHJpbnQgJDF9J2AKKwkJZm9yIGltYWdlVHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCisJCQlzaXplPWBkdSAta3MgJHtCfS8ke0tFUk5FTF9PVVRQVVRfRElSfS8kaW1hZ2VUeXBlIHwgYXdrICd7cHJpbnQgJDF9J2AKIAkJCWlmIFsgJHNpemUgLWdlICR7S0VSTkVMX0lNQUdFX01BWFNJWkV9IF07IHRoZW4KLQkJCQliYndhcm4gIlRoaXMga2VybmVsICR0eXBlIChzaXplPSRzaXplKEspID4gJHtLRVJORUxfSU1BR0VfTUFYU0laRX0oSykpIGlzIHRvbyBiaWcgZm9yIHlvdXIgZGV2aWNlLiIKKwkJCQliYndhcm4gIlRoaXMga2VybmVsICRpbWFnZVR5cGUgKHNpemU9JHNpemUoSykgPiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfShLKSkgaXMgdG9vIGJpZyBmb3IgeW91ciBkZXZpY2UuIgogCQkJZWxzZQogCQkJCWF0X2xlYXN0X29uZV9maXRzPXkKIAkJCWZpCkBAIC02NTQsMTYgKzY1Nyw3IEBACiAKIGFkZHRhc2sgc2l6ZWNoZWNrIGJlZm9yZSBkb19pbnN0YWxsIGFmdGVyIGRvX3N0cmlwCiAKLUtFUk5FTF9JTUFHRV9CQVNFX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi0jIERvbid0IGluY2x1ZGUgdGhlIERBVEVUSU1FIHZhcmlhYmxlIGluIHRoZSBzc3RhdGUgcGFja2FnZSBzaWduYXR1cmVzCi1LRVJORUxfSU1BR0VfQkFTRV9OQU1FW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKLUtFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUUgPz0gIiR7TUFDSElORX0iCi1NT0RVTEVfSU1BR0VfQkFTRV9OQU1FID89ICJtb2R1bGVzLSR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0iCi1NT0RVTEVfSU1BR0VfQkFTRV9OQU1FW3ZhcmRlcHNleGNsdWRlXSA9ICJEQVRFVElNRSIKLU1PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRSA/PSAiJHtNT0RVTEVfSU1BR0VfQkFTRV9OQU1FfS50Z3oiCi0jIERvbid0IGluY2x1ZGUgdGhlIERBVEVUSU1FIHZhcmlhYmxlIGluIHRoZSBzc3RhdGUgcGFja2FnZSBzaWduYXR1cmVzCi1NT0RVTEVfVEFSQkFMTF9TWU1MSU5LX05BTUUgPz0gIm1vZHVsZXMtJHtNQUNISU5FfS50Z3oiCi1NT0RVTEVfVEFSQkFMTF9ERVBMT1kgPz0gIjEiCitpbmhlcml0IGtlcm5lbC1hcnRpZmFjdC1uYW1lcwogCiBrZXJuZWxfZG9fZGVwbG95KCkgewogCWRlcGxveURpcj0iJHtERVBMT1lESVJ9IgpAQCAtNjcyLDM0ICs2NjYsMjggQEAKIAkJbWtkaXIgIiRkZXBsb3lEaXIiCiAJZmkKIAotCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KLQkJYmFzZV9uYW1lPSR7dHlwZX0tJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQotCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAkZGVwbG95RGlyLyR7YmFzZV9uYW1lfS5iaW4KKwlmb3IgaW1hZ2VUeXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KKwkJYmFzZV9uYW1lPSR7aW1hZ2VUeXBlfS0ke0tFUk5FTF9JTUFHRV9OQU1FfQorCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHtpbWFnZVR5cGV9ICRkZXBsb3lEaXIvJHtiYXNlX25hbWV9LmJpbgorCQlzeW1saW5rX25hbWU9JHtpbWFnZVR5cGV9LSR7S0VSTkVMX0lNQUdFX0xJTktfTkFNRX0KKwkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3N5bWxpbmtfbmFtZX0uYmluCisJCWxuIC1zZiAke2Jhc2VfbmFtZX0uYmluICRkZXBsb3lEaXIvJHtpbWFnZVR5cGV9CiAJZG9uZQorCiAJaWYgWyAke01PRFVMRV9UQVJCQUxMX0RFUExPWX0gPSAiMSIgXSAmJiAoZ3JlcCAtcSAtaSAtZSAnXkNPTkZJR19NT0RVTEVTPXkkJyAuY29uZmlnKTsgdGhlbgotCQlta2RpciAtcCAke0R9L2xpYgotCQl0YXIgLWN2emYgJGRlcGxveURpci8ke01PRFVMRV9UQVJCQUxMX0JBU0VfTkFNRX0gLUMgJHtEfSBsaWIKLQkJbG4gLXNmICR7TU9EVUxFX1RBUkJBTExfQkFTRV9OQU1FfSAkZGVwbG95RGlyLyR7TU9EVUxFX1RBUkJBTExfU1lNTElOS19OQU1FfQorCQlta2RpciAtcCAke0R9JHtyb290X3ByZWZpeH0vbGliCisJCXRhciAtY3Z6ZiAkZGVwbG95RGlyL21vZHVsZXMtJHtNT0RVTEVfVEFSQkFMTF9OQU1FfS50Z3ogLUMgJHtEfSR7cm9vdF9wcmVmaXh9IGxpYgorCQlsbiAtc2YgbW9kdWxlcy0ke01PRFVMRV9UQVJCQUxMX05BTUV9LnRneiAkZGVwbG95RGlyL21vZHVsZXMtJHtNT0RVTEVfVEFSQkFMTF9MSU5LX05BTUV9LnRnegogCWZpCiAKLQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCi0JCWJhc2VfbmFtZT0ke3R5cGV9LSR7S0VSTkVMX0lNQUdFX0JBU0VfTkFNRX0KLQkJc3ltbGlua19uYW1lPSR7dHlwZX0tJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQlsbiAtc2YgJHtiYXNlX25hbWV9LmJpbiAkZGVwbG95RGlyLyR7c3ltbGlua19uYW1lfS5iaW4KLQkJbG4gLXNmICR7YmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke3R5cGV9Ci0JZG9uZQotCi0JY2QgJHtCfQotCSMgVXBkYXRlIGRlcGxveSBkaXJlY3RvcnkKLQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCi0JCWlmIFsgLWUgIiR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzIiBdOyB0aGVuCi0JCQllY2hvICJDb3B5aW5nIGRlcGxveSAke3R5cGV9IGtlcm5lbC1pbml0cmFtZnMgaW1hZ2UgYW5kIHNldHRpbmcgdXAgbGlua3MuLi4iCi0JCQlpbml0cmFtZnNfYmFzZV9uYW1lPSR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfQotCQkJaW5pdHJhbWZzX3N5bWxpbmtfbmFtZT0ke3R5cGV9LWluaXRyYW1mcy0ke01BQ0hJTkV9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMgJGRlcGxveURpci8ke2luaXRyYW1mc19iYXNlX25hbWV9LmJpbgorCWlmIFsgISAteiAiJHtJTklUUkFNRlNfSU1BR0V9IiAtYSB4IiR7SU5JVFJBTUZTX0lNQUdFX0JVTkRMRX0iID0geDEgXTsgdGhlbgorCQlmb3IgaW1hZ2VUeXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRVN9IDsgZG8KKwkJCWluaXRyYW1mc19iYXNlX25hbWU9JHtpbWFnZVR5cGV9LSR7SU5JVFJBTUZTX05BTUV9CisJCQlpbml0cmFtZnNfc3ltbGlua19uYW1lPSR7aW1hZ2VUeXBlfS0ke0lOSVRSQU1GU19MSU5LX05BTUV9CisJCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHtpbWFnZVR5cGV9LmluaXRyYW1mcyAkZGVwbG95RGlyLyR7aW5pdHJhbWZzX2Jhc2VfbmFtZX0uYmluCiAJCQlsbiAtc2YgJHtpbml0cmFtZnNfYmFzZV9uYW1lfS5iaW4gJGRlcGxveURpci8ke2luaXRyYW1mc19zeW1saW5rX25hbWV9LmJpbgotCQlmaQotCWRvbmUKKwkJZG9uZQorCWZpCiB9CiBkb19kZXBsb3lbY2xlYW5kaXJzXSA9ICIke0RFUExPWURJUn0iCiBkb19kZXBsb3lbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7Qn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcwppbmRleCA5ZWEyYzAzLi4wZTM1MWI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWJjLWNvbW1vbi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MKQEAgLTEsOSArMSw1IEBACiBkb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgaW5zdGFsbF9yb290PSR7RH0gaW5zdGFsbAotCWZvciByIGluICR7cnBjc3ZjfTsgZG8KLQkJaD1gZWNobyAkcnxzZWQgLWUncyxcLngkLC5oLCdgCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9L3N1bnJwYy9ycGNzdmMvJGggJHtEfS8ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8KLQlkb25lCiAJaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2V0Yy9sZC5zby5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9sZC5zby5jb25mCiAJaW5zdGFsbCAtZCAke0R9JHtsb2NhbGVkaXJ9CiAJbWFrZSAtZiAke1dPUktESVJ9L2dlbmVyYXRlLXN1cHBvcnRlZC5tayBJTj0iJHtTfS9sb2NhbGVkYXRhL1NVUFBPUlRFRCIgT1VUPSIke1dPUktESVJ9L1NVUFBPUlRFRCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKaW5kZXggMmU3Y2QyNS4uOWQwOWM3YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKQEAgLTI1Nyw2ICsyNTcsOCBAQAogICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNmVsIjogICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAogICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6IiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCBcCiAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAorICAgICAgICAgICAgICAgICJyaXNjdjY0IjogIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCBcCisgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIsIFwKICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgXAogICAgICAgICAgICAgICAgICJpNjg2IjogICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tbGl0dGxlLWVuZGlhbiAiLCBcCiAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAiIC0tdWludDMyLWFsaWduPTQgLS1saXR0bGUtZW5kaWFuICIgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCA1MTAzZWQ4Li40Y2Y3ZjA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCkBAIC0xNiwyODQgKzE2LDYgQEAKIGRvX3BvcHVsYXRlX2xpY1tkaXJzXSA9ICIke0xJQ1NTVEFURURJUn0vJHtQTn0iCiBkb19wb3B1bGF0ZV9saWNbY2xlYW5kaXJzXSA9ICIke0xJQ1NTVEFURURJUn0iCiAKLXB5dGhvbiB3cml0ZV9wYWNrYWdlX21hbmlmZXN0KCkgewotICAgICMgR2V0IGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzCi0gICAgbGljZW5zZV9pbWFnZV9kaXIgPSBkLmV4cGFuZCgnJHtMSUNFTlNFX0RJUkVDVE9SWX0vJHtJTUFHRV9OQU1FfScpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKGxpY2Vuc2VfaW1hZ2VfZGlyKQotICAgIGZyb20gb2Uucm9vdGZzIGltcG9ydCBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcwotICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGZvcm1hdF9wa2dfbGlzdAotCi0gICAgcGtncyA9IGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzKGQpCi0gICAgb3V0cHV0ID0gZm9ybWF0X3BrZ19saXN0KHBrZ3MpCi0gICAgb3Blbihvcy5wYXRoLmpvaW4obGljZW5zZV9pbWFnZV9kaXIsICdwYWNrYWdlLm1hbmlmZXN0JyksCi0gICAgICAgICd3KycpLndyaXRlKG91dHB1dCkKLX0KLQotcHl0aG9uIHdyaXRlX2RlcGxveV9tYW5pZmVzdCgpIHsKLSAgICBsaWNlbnNlX2RlcGxveWVkX21hbmlmZXN0KGQpCi19Ci0KLXB5dGhvbiBsaWNlbnNlX2NyZWF0ZV9tYW5pZmVzdCgpIHsKLSAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKLSAgICBmcm9tIG9lLnJvb3RmcyBpbXBvcnQgaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMKLQotICAgIGJ1aWxkX2ltYWdlc19mcm9tX2ZlZWRzID0gZC5nZXRWYXIoJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJykKLSAgICBpZiBidWlsZF9pbWFnZXNfZnJvbV9mZWVkcyA9PSAiMSI6Ci0gICAgICAgIHJldHVybiAwCi0KLSAgICBwa2dfZGljID0ge30KLSAgICBmb3IgcGtnIGluIHNvcnRlZChpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcyhkKSk6Ci0gICAgICAgIHBrZ19pbmZvID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdQS0dEQVRBX0RJUicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVudGltZS1yZXZlcnNlJywgcGtnKQotICAgICAgICBwa2dfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUob3MucmVhZGxpbmsocGtnX2luZm8pKQotCi0gICAgICAgIHBrZ19kaWNbcGtnX25hbWVdID0gb2UucGFja2FnZWRhdGEucmVhZF9wa2dkYXRhZmlsZShwa2dfaW5mbykKLSAgICAgICAgaWYgbm90ICJMSUNFTlNFIiBpbiBwa2dfZGljW3BrZ19uYW1lXS5rZXlzKCk6Ci0gICAgICAgICAgICBwa2dfbGljX25hbWUgPSAiTElDRU5TRV8iICsgcGtnX25hbWUKLSAgICAgICAgICAgIHBrZ19kaWNbcGtnX25hbWVdWyJMSUNFTlNFIl0gPSBwa2dfZGljW3BrZ19uYW1lXVtwa2dfbGljX25hbWVdCi0KLSAgICByb290ZnNfbGljZW5zZV9tYW5pZmVzdCA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJyksICdsaWNlbnNlLm1hbmlmZXN0JykKLSAgICB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0LCBwa2dfZGljKQotfQotCi1kZWYgd3JpdGVfbGljZW5zZV9maWxlcyhkLCBsaWNlbnNlX21hbmlmZXN0LCBwa2dfZGljKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGJhZF9saWNlbnNlcyA9IChkLmdldFZhcigiSU5DT01QQVRJQkxFX0xJQ0VOU0UiKSBvciAiIikuc3BsaXQoKQotICAgIGJhZF9saWNlbnNlcyA9IG1hcChsYW1iZGEgbDogY2Fub25pY2FsX2xpY2Vuc2UoZCwgbCksIGJhZF9saWNlbnNlcykKLSAgICBiYWRfbGljZW5zZXMgPSBleHBhbmRfd2lsZGNhcmRfbGljZW5zZXMoZCwgYmFkX2xpY2Vuc2VzKQotCi0gICAgd2l0aCBvcGVuKGxpY2Vuc2VfbWFuaWZlc3QsICJ3IikgYXMgbGljZW5zZV9maWxlOgotICAgICAgICBmb3IgcGtnIGluIHNvcnRlZChwa2dfZGljKToKLSAgICAgICAgICAgIGlmIGJhZF9saWNlbnNlczoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIChwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdKSA9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9lLmxpY2Vuc2UubWFuaWZlc3RfbGljZW5zZXMocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGljZW5zZXMsIGNhbm9uaWNhbF9saWNlbnNlLCBkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBvZS5saWNlbnNlLkxpY2Vuc2VFcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCclczogJXMnICUgKGQuZ2V0VmFyKCdQJyksIGV4YykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSA9IHJlLnN1YignW3wmKCkqXScsICcgJywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCi0gICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdID0gcmUuc3ViKCcgIConLCAnICcsIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSkKLSAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0gPSBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0uc3BsaXQoKQotCi0gICAgICAgICAgICBpZiBub3QgIklNQUdFX01BTklGRVNUIiBpbiBwa2dfZGljW3BrZ106Ci0gICAgICAgICAgICAgICAgIyBSb290ZnMgbWFuaWZlc3QKLSAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlBBQ0tBR0UgTkFNRTogJXNcbiIgJSBwa2cpCi0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJQQUNLQUdFIFZFUlNJT046ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQViJdKQotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiUkVDSVBFIE5BTUU6ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQTiJdKQotICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiTElDRU5TRTogJXNcblxuIiAlIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKQotCi0gICAgICAgICAgICAgICAgIyBJZiB0aGUgcGFja2FnZSBkb2Vzbid0IGNvbnRhaW4gYW55IGZpbGUsIHRoYXQgaXMsIGl0cyBzaXplIGlzIDAsIHRoZSBsaWNlbnNlCi0gICAgICAgICAgICAgICAgIyBpc24ndCByZWxldmFudCBhcyBmYXIgYXMgdGhlIGZpbmFsIGltYWdlIGlzIGNvbmNlcm5lZC4gU28gZG9pbmcgbGljZW5zZSBjaGVjawotICAgICAgICAgICAgICAgICMgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UsIHNraXAgaXQuCi0gICAgICAgICAgICAgICAgaWYgcGtnX2RpY1twa2ddWyJQS0dTSVpFXyVzIiAlIHBrZ10gPT0gIjAiOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEltYWdlIG1hbmlmZXN0Ci0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJSRUNJUEUgTkFNRTogJXNcbiIgJSBwa2dfZGljW3BrZ11bIlBOIl0pCi0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJWRVJTSU9OOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiUFYiXSkKLSAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIkxJQ0VOU0U6ICVzXG4iICUgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCi0gICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJGSUxFUzogJXNcblxuIiAlIHBrZ19kaWNbcGtnXVsiRklMRVMiXSkKLQotICAgICAgICAgICAgZm9yIGxpYyBpbiBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl06Ci0gICAgICAgICAgICAgICAgbGljX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0xJQ0VOU0VfRElSRUNUT1JZJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJQTiJdLCAiZ2VuZXJpY18lcyIgJSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5zdWIoJ1wrJywgJycsIGxpYykpCi0gICAgICAgICAgICAgICAgIyBhZGQgZXhwbGljaXR5IGF2b2lkIG9mIENMT1NFRCBsaWNlbnNlIGJlY2F1c2UgaXNuJ3QgZ2VuZXJpYwotICAgICAgICAgICAgICAgIGlmIGxpYyA9PSAiQ0xPU0VEIjoKLSAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGxpY19maWxlKToKLSAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgbGljZW5zZSBsaXN0ZWQgJXMgd2FzIG5vdCBpbiB0aGUgIlwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2VzIGNvbGxlY3RlZCBmb3IgcmVjaXBlICVzIiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChsaWMsIHBrZ19kaWNbcGtnXVsiUE4iXSkpCi0KLSAgICAjIFR3byBvcHRpb25zIGhlcmU6Ci0gICAgIyAtIEp1c3QgY29weSB0aGUgbWFuaWZlc3QKLSAgICAjIC0gQ29weSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBsaWNlbnNlIGRpcmVjdG9yaWVzCi0gICAgIyBXaXRoIGJvdGggb3B0aW9ucyBzZXQgd2Ugc2VlIGEgLjUgTSBpbmNyZWFzZSBpbiBjb3JlLWltYWdlLW1pbmltYWwKLSAgICBjb3B5X2xpY19tYW5pZmVzdCA9IGQuZ2V0VmFyKCdDT1BZX0xJQ19NQU5JRkVTVCcpCi0gICAgY29weV9saWNfZGlycyA9IGQuZ2V0VmFyKCdDT1BZX0xJQ19ESVJTJykKLSAgICBpZiBjb3B5X2xpY19tYW5pZmVzdCA9PSAiMSI6Ci0gICAgICAgIHJvb3Rmc19saWNlbnNlX2RpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignSU1BR0VfUk9PVEZTJyksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNyJywgJ3NoYXJlJywgJ2NvbW1vbi1saWNlbnNlcycpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihyb290ZnNfbGljZW5zZV9kaXIpCi0gICAgICAgIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKHJvb3Rmc19saWNlbnNlX2RpciwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnNwbGl0KGxpY2Vuc2VfbWFuaWZlc3QpWzFdKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QpOgotICAgICAgICAgICAgb3MubGluayhsaWNlbnNlX21hbmlmZXN0LCByb290ZnNfbGljZW5zZV9tYW5pZmVzdCkKLQotICAgICAgICBpZiBjb3B5X2xpY19kaXJzID09ICIxIjoKLSAgICAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ19kaWMpOgotICAgICAgICAgICAgICAgIHBrZ19yb290ZnNfbGljZW5zZV9kaXIgPSBvcy5wYXRoLmpvaW4ocm9vdGZzX2xpY2Vuc2VfZGlyLCBwa2cpCi0gICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBrZ19yb290ZnNfbGljZW5zZV9kaXIpCi0gICAgICAgICAgICAgICAgcGtnX2xpY2Vuc2VfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIlBOIl0pIAotCi0gICAgICAgICAgICAgICAgcGtnX21hbmlmZXN0X2xpY2Vuc2VzID0gW2Nhbm9uaWNhbF9saWNlbnNlKGQsIGxpYykgXAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGxpYyBpbiBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl1dCi0KLSAgICAgICAgICAgICAgICBsaWNlbnNlcyA9IG9zLmxpc3RkaXIocGtnX2xpY2Vuc2VfZGlyKQotICAgICAgICAgICAgICAgIGZvciBsaWMgaW4gbGljZW5zZXM6Ci0gICAgICAgICAgICAgICAgICAgIHJvb3Rmc19saWNlbnNlID0gb3MucGF0aC5qb2luKHJvb3Rmc19saWNlbnNlX2RpciwgbGljKQotICAgICAgICAgICAgICAgICAgICBwa2dfbGljZW5zZSA9IG9zLnBhdGguam9pbihwa2dfbGljZW5zZV9kaXIsIGxpYykKLSAgICAgICAgICAgICAgICAgICAgcGtnX3Jvb3Rmc19saWNlbnNlID0gb3MucGF0aC5qb2luKHBrZ19yb290ZnNfbGljZW5zZV9kaXIsIGxpYykKLQotICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCgiXmdlbmVyaWNfLiokIiwgbGljKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyaWNfbGljID0gY2Fub25pY2FsX2xpY2Vuc2UoZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuc2VhcmNoKCJeZ2VuZXJpY18oLiopJCIsIGxpYykuZ3JvdXAoMSkpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgRG8gbm90IGNvcHkgZ2VuZXJpYyBsaWNlbnNlIGludG8gcGFja2FnZSBpZiBpc24ndAotICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWNsYXJlZCBpbnRvIExJQ0VOU0VTIG9mIHRoZSBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLnN1YignXCskJywgJycsIGdlbmVyaWNfbGljKSBpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZS5zdWIoJ1wrJywgJycsIGxpYykgZm9yIGxpYyBpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfbWFuaWZlc3RfbGljZW5zZXNdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9lLmxpY2Vuc2UubGljZW5zZV9vayhnZW5lcmljX2xpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2xpY2Vuc2VzKSA9PSBGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocm9vdGZzX2xpY2Vuc2UpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsocGtnX2xpY2Vuc2UsIHJvb3Rmc19saWNlbnNlKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGtnX3Jvb3Rmc19saWNlbnNlKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguam9pbignLi4nLCBsaWMpLCBwa2dfcm9vdGZzX2xpY2Vuc2UpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob2UubGljZW5zZS5saWNlbnNlX29rKGNhbm9uaWNhbF9saWNlbnNlKGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYyksIGJhZF9saWNlbnNlcykgPT0gRmFsc2Ugb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHMocGtnX3Jvb3Rmc19saWNlbnNlKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICAgICAgb3MubGluayhwa2dfbGljZW5zZSwgcGtnX3Jvb3Rmc19saWNlbnNlKQotCi0KLWRlZiBsaWNlbnNlX2RlcGxveWVkX21hbmlmZXN0KGQpOgotICAgICIiIgotICAgIFdyaXRlIHRoZSBsaWNlbnNlIG1hbmlmZXN0IGZvciB0aGUgZGVwbG95ZWQgcmVjaXBlcy4KLSAgICBUaGUgZGVwbG95ZWQgcmVjaXBlcyB1c3VhbGx5IGluY2x1ZGVzIHRoZSBib290bG9hZGVyCi0gICAgYW5kIGV4dHJhIGZpbGVzIHRvIGJvb3QgdGhlIHRhcmdldC4KLSAgICAiIiIKLQotICAgIGRlcF9kaWMgPSB7fQotICAgIG1hbl9kaWMgPSB7fQotICAgIGxpY19kaXIgPSBkLmdldFZhcigiTElDRU5TRV9ESVJFQ1RPUlkiKQotCi0gICAgZGVwX2RpYyA9IGdldF9kZXBsb3llZF9kZXBlbmRlbmNpZXMoZCkKLSAgICBmb3IgZGVwIGluIGRlcF9kaWMua2V5cygpOgotICAgICAgICBtYW5fZGljW2RlcF0gPSB7fQotICAgICAgICAjIEl0IGlzIG5lY2Vzc2FyeSB0byBtYXJrIHRoaXMgd2lsbCBiZSB1c2VkIGZvciBpbWFnZSBtYW5pZmVzdAotICAgICAgICBtYW5fZGljW2RlcF1bIklNQUdFX01BTklGRVNUIl0gPSBUcnVlCi0gICAgICAgIG1hbl9kaWNbZGVwXVsiUE4iXSA9IGRlcAotICAgICAgICBtYW5fZGljW2RlcF1bIkZJTEVTIl0gPSBcCi0gICAgICAgICAgICAiICIuam9pbihnZXRfZGVwbG95ZWRfZmlsZXMoZGVwX2RpY1tkZXBdKSkKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihsaWNfZGlyLCBkZXAsICJyZWNpcGVpbmZvIiksICJyIikgYXMgZjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAga2V5LHZhbCA9IGxpbmUuc3BsaXQoIjogIiwgMSkKLSAgICAgICAgICAgICAgICBtYW5fZGljW2RlcF1ba2V5XSA9IHZhbFs6LTFdCi0KLSAgICBsaWNfbWFuaWZlc3RfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0lNQUdFX05BTUUnKSkKLSAgICBiYi51dGlscy5ta2RpcmhpZXIobGljX21hbmlmZXN0X2RpcikKLSAgICBpbWFnZV9saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKGxpY19tYW5pZmVzdF9kaXIsICdpbWFnZV9saWNlbnNlLm1hbmlmZXN0JykKLSAgICB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIGltYWdlX2xpY2Vuc2VfbWFuaWZlc3QsIG1hbl9kaWMpCi0KLWRlZiBnZXRfZGVwbG95ZWRfZGVwZW5kZW5jaWVzKGQpOgotICAgICIiIgotICAgIEdldCBhbGwgdGhlIGRlcGxveWVkIGRlcGVuZGVuY2llcyBvZiBhbiBpbWFnZQotICAgICIiIgotCi0gICAgZGVwbG95ID0ge30KLSAgICAjIEdldCBhbGwgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhlIGN1cnJlbnQgdGFzayAocm9vdGZzKS4KLSAgICAjIEFsc28gZ2V0IEVYVFJBX0lNQUdFREVQRU5EUyBiZWNhdXNlIHRoZSBib290bG9hZGVyIGlzCi0gICAgIyB1c3VhbGx5IGluIHRoaXMgdmFyIGFuZCBub3QgbGlzdGVkIGluIHJvb3Rmcy4KLSAgICAjIEF0IGxhc3QsIGdldCB0aGUgZGVwZW5kZW5jaWVzIGZyb20gYm9vdCBjbGFzc2VzIGJlY2F1c2UKLSAgICAjIGl0IG1pZ2h0IGNvbnRhaW4gdGhlIGJvb3Rsb2FkZXIuCi0gICAgdGFza2RhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKLSAgICBkZXBlbmRzID0gbGlzdChzZXQoW2RlcFswXSBmb3IgZGVwCi0gICAgICAgICAgICAgICAgICAgIGluIGxpc3QodGFza2RhdGEudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkZXBbMF0uZW5kc3dpdGgoIi1uYXRpdmUiKV0pKQotICAgIGV4dHJhX2RlcGVuZHMgPSBkLmdldFZhcigiRVhUUkFfSU1BR0VERVBFTkRTIikKLSAgICBib290X2RlcGVuZHMgPSBnZXRfYm9vdF9kZXBlbmRlbmNpZXMoZCkKLSAgICBkZXBlbmRzLmV4dGVuZChleHRyYV9kZXBlbmRzLnNwbGl0KCkpCi0gICAgZGVwZW5kcy5leHRlbmQoYm9vdF9kZXBlbmRzKQotICAgIGRlcGVuZHMgPSBsaXN0KHNldChkZXBlbmRzKSkKLQotICAgICMgVG8gdmVyaWZ5IHdoYXQgd2FzIGRlcGxveWVkIGl0IGNoZWNrcyB0aGUgcm9vdGZzIGRlcGVuZGVuY2llcyBhZ2FpbnN0Ci0gICAgIyB0aGUgU1NUQVRFX01BTklGRVNUUyBmb3IgImRlcGxveSIgdGFzay4KLSAgICAjIFRoZSBtYW5pZmVzdCBmaWxlIG5hbWUgY29udGFpbnMgdGhlIGFyY2guIEJlY2F1c2Ugd2UgYXJlIG5vdCBydW5uaW5nCi0gICAgIyBpbiB0aGUgcmVjaXBlIGNvbnRleHQgaXQgaXMgbmVjZXNzYXJ5IHRvIGNoZWNrIGV2ZXJ5IGFyY2ggdXNlZC4KLSAgICBzc3RhdGVfbWFuaWZlc3RfZGlyID0gZC5nZXRWYXIoIlNTVEFURV9NQU5JRkVTVFMiKQotICAgIGFyY2hzID0gbGlzdChzZXQoZC5nZXRWYXIoIlNTVEFURV9BUkNIUyIpLnNwbGl0KCkpKQotICAgIGZvciBkZXAgaW4gZGVwZW5kczoKLSAgICAgICAgIyBTb21lIHJlY2lwZXMgaGF2ZSBhbiBhcmNoIG9uIHRoZWlyIG93biwgc28gd2UgdHJ5IHRoYXQgZmlyc3QuCi0gICAgICAgIHNwZWNpYWxfYXJjaCA9IGQuZ2V0VmFyKCJQQUNLQUdFX0FSQ0hfcG4tJXMiICUgZGVwKQotICAgICAgICBpZiBzcGVjaWFsX2FyY2g6Ci0gICAgICAgICAgICBzc3RhdGVfbWFuaWZlc3RfZmlsZSA9IG9zLnBhdGguam9pbihzc3RhdGVfbWFuaWZlc3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3QtJXMtJXMuZGVwbG95IiAlIChzcGVjaWFsX2FyY2gsIGRlcCkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzc3RhdGVfbWFuaWZlc3RfZmlsZSk6Ci0gICAgICAgICAgICAgICAgZGVwbG95W2RlcF0gPSBzc3RhdGVfbWFuaWZlc3RfZmlsZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgZm9yIGFyY2ggaW4gYXJjaHM6Ci0gICAgICAgICAgICBzc3RhdGVfbWFuaWZlc3RfZmlsZSA9IG9zLnBhdGguam9pbihzc3RhdGVfbWFuaWZlc3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAibWFuaWZlc3QtJXMtJXMuZGVwbG95IiAlIChhcmNoLCBkZXApKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc3N0YXRlX21hbmlmZXN0X2ZpbGUpOgotICAgICAgICAgICAgICAgIGRlcGxveVtkZXBdID0gc3N0YXRlX21hbmlmZXN0X2ZpbGUKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgcmV0dXJuIGRlcGxveQotZ2V0X2RlcGxveWVkX2RlcGVuZGVuY2llc1t2YXJkZXBzZXhjbHVkZV0gPSAiQkJfVEFTS0RFUERBVEEiCi0KLWRlZiBnZXRfYm9vdF9kZXBlbmRlbmNpZXMoZCk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIHRoZSBkZXBlbmRlbmNpZXMgZnJvbSBib290IHRhc2tzCi0gICAgIiIiCi0KLSAgICBkZXBlbmRzID0gW10KLSAgICB0YXNrZGVwZGF0YSA9IGQuZ2V0VmFyKCJCQl9UQVNLREVQREFUQSIsIEZhbHNlKQotICAgICMgT25seSBib290aW1nIGluY2x1ZGVzIHRoZSBkZXBlbmRzIGZsYWcKLSAgICBib290X2RlcGVuZHNfc3RyaW5nID0gZC5nZXRWYXJGbGFnKCJkb19ib290aW1nIiwgImRlcGVuZHMiKSBvciAiIgotICAgIGJvb3RfZGVwZW5kcyA9IFtkZXAuc3BsaXQoIjoiKVswXSBmb3IgZGVwCi0gICAgICAgICAgICAgICAgaW4gYm9vdF9kZXBlbmRzX3N0cmluZy5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGRlcC5zcGxpdCgiOiIpWzBdLmVuZHN3aXRoKCItbmF0aXZlIildCi0gICAgZm9yIGRlcCBpbiBib290X2RlcGVuZHM6Ci0gICAgICAgIGluZm9fZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcigiTElDRU5TRV9ESVJFQ1RPUlkiKSwKLSAgICAgICAgICAgICAgICBkZXAsICJyZWNpcGVpbmZvIikKLSAgICAgICAgIyBJZiB0aGUgcmVjaXBlIGFuZCBkZXBlbmRlbmN5IG5hbWUgaXMgdGhlIHNhbWUKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaW5mb19maWxlKToKLSAgICAgICAgICAgIGRlcGVuZHMuYXBwZW5kKGRlcCkKLSAgICAgICAgIyBXZSBuZWVkIHRvIHNlYXJjaCBmb3IgdGhlIHByb3ZpZGVyIG9mIHRoZSBkZXBlbmRlbmN5Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgdGFza2RlcCBpbiB0YXNrZGVwZGF0YS52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICAjIFRoZSBmaWZ0aCBmaWVsZCBjb250YWlucyB3aGF0IHRoZSB0YXNrIHByb3ZpZGVzCi0gICAgICAgICAgICAgICAgaWYgZGVwIGluIHRhc2tkZXBbNF06Ci0gICAgICAgICAgICAgICAgICAgIGluZm9fZmlsZSA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcigiTElDRU5TRV9ESVJFQ1RPUlkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrZGVwWzBdLCAicmVjaXBlaW5mbyIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGluZm9fZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzLmFwcGVuZCh0YXNrZGVwWzBdKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICByZXR1cm4gZGVwZW5kcwotZ2V0X2Jvb3RfZGVwZW5kZW5jaWVzW3ZhcmRlcHNleGNsdWRlXSA9ICJCQl9UQVNLREVQREFUQSIKLQotZGVmIGdldF9kZXBsb3llZF9maWxlcyhtYW5fZmlsZSk6Ci0gICAgIiIiCi0gICAgR2V0IHRoZSBmaWxlcyBkZXBsb3llZCBmcm9tIHRoZSBzc3RhdGUgbWFuaWZlc3QKLSAgICAiIiIKLQotICAgIGRlcF9maWxlcyA9IFtdCi0gICAgZXhjbHVkZWRfZmlsZXMgPSBbXQotICAgIHdpdGggb3BlbihtYW5fZmlsZSwgInIiKSBhcyBtYW5pZmVzdDoKLSAgICAgICAgYWxsX2ZpbGVzID0gbWFuaWZlc3QucmVhZCgpCi0gICAgZm9yIGYgaW4gYWxsX2ZpbGVzLnNwbGl0bGluZXMoKToKLSAgICAgICAgaWYgKChub3QgKG9zLnBhdGguaXNsaW5rKGYpIG9yIG9zLnBhdGguaXNkaXIoZikpKSBhbmQKLSAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5iYXNlbmFtZShmKSBpbiBleGNsdWRlZF9maWxlcyk6Ci0gICAgICAgICAgICBkZXBfZmlsZXMuYXBwZW5kKG9zLnBhdGguYmFzZW5hbWUoZikpCi0gICAgcmV0dXJuIGRlcF9maWxlcwotCiBweXRob24gZG9fcG9wdWxhdGVfbGljKCkgewogICAgICIiIgogICAgIFBvcHVsYXRlIExJQ0VOU0VfRElSRUNUT1JZIHdpdGggbGljZW5zZXMuCkBAIC0zNDAsNiArNjIsOSBAQAogICAgICAgICAjIGZpcnN0IGluIFBBQ0tBR0VTIHRvIGJlIHN1cmUgdGhhdCBub3RoaW5nIGVsc2UgZ2V0cyBMSUNFTlNFX0ZJTEVTX0RJUkVDVE9SWQogICAgICAgICBkLnNldFZhcignUEFDS0FHRVMnLCAiJXMgJXMiICUgKHBuX2xpYywgcGFja2FnZXMpKQogICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHBuX2xpYywgZmlsZXMpCisgICAgZm9yIHBuIGluIHBhY2thZ2VzLnNwbGl0KCk6CisgICAgICAgIGlmIHBuID09IHBuX2xpYzoKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHJyZWNvbW1lbmRzX3BuID0gZC5nZXRWYXIoJ1JSRUNPTU1FTkRTXycgKyBwbikKICAgICAgICAgaWYgcnJlY29tbWVuZHNfcG46CiAgICAgICAgICAgICBkLnNldFZhcignUlJFQ09NTUVORFNfJyArIHBuLCAiJXMgJXMiICUgKHBuX2xpYywgcnJlY29tbWVuZHNfcG4pKQpAQCAtNjc0LDExICszOTksNyBAQAogZG9fcG9wdWxhdGVfbGljW3NzdGF0ZS1pbnB1dGRpcnNdID0gIiR7TElDU1NUQVRFRElSfSIKIGRvX3BvcHVsYXRlX2xpY1tzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtMSUNFTlNFX0RJUkVDVE9SWX0vIgogCi1ST09URlNfUE9TVFBST0NFU1NfQ09NTUFORF9wcmVwZW5kID0gIndyaXRlX3BhY2thZ2VfbWFuaWZlc3Q7IGxpY2Vuc2VfY3JlYXRlX21hbmlmZXN0OyAiCi1kb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wb3B1bGF0ZV9saWMiCi0KLUlNQUdFX1BPU1RQUk9DRVNTX0NPTU1BTkRfcHJlcGVuZCA9ICJ3cml0ZV9kZXBsb3lfbWFuaWZlc3Q7ICIKLWRvX2ltYWdlW3JlY3JkZXB0YXNrXSArPSAiZG9fcG9wdWxhdGVfbGljIgorSU1BR0VfQ0xBU1NFU19hcHBlbmQgPSAiIGxpY2Vuc2VfaW1hZ2UiCiAKIHB5dGhvbiBkb19wb3B1bGF0ZV9saWNfc2V0c2NlbmUgKCkgewogICAgIHNzdGF0ZV9zZXRzY2VuZShkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwZmJiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MKQEAgLTAsMCArMSwyMzggQEAKK3B5dGhvbiB3cml0ZV9wYWNrYWdlX21hbmlmZXN0KCkgeworICAgICMgR2V0IGxpc3Qgb2YgaW5zdGFsbGVkIHBhY2thZ2VzCisgICAgbGljZW5zZV9pbWFnZV9kaXIgPSBkLmV4cGFuZCgnJHtMSUNFTlNFX0RJUkVDVE9SWX0vJHtJTUFHRV9OQU1FfScpCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGxpY2Vuc2VfaW1hZ2VfZGlyKQorICAgIGZyb20gb2Uucm9vdGZzIGltcG9ydCBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcworICAgIGZyb20gb2UudXRpbHMgaW1wb3J0IGZvcm1hdF9wa2dfbGlzdAorCisgICAgcGtncyA9IGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzKGQpCisgICAgb3V0cHV0ID0gZm9ybWF0X3BrZ19saXN0KHBrZ3MpCisgICAgb3Blbihvcy5wYXRoLmpvaW4obGljZW5zZV9pbWFnZV9kaXIsICdwYWNrYWdlLm1hbmlmZXN0JyksCisgICAgICAgICd3KycpLndyaXRlKG91dHB1dCkKK30KKworcHl0aG9uIGxpY2Vuc2VfY3JlYXRlX21hbmlmZXN0KCkgeworICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQorICAgIGZyb20gb2Uucm9vdGZzIGltcG9ydCBpbWFnZV9saXN0X2luc3RhbGxlZF9wYWNrYWdlcworCisgICAgYnVpbGRfaW1hZ2VzX2Zyb21fZmVlZHMgPSBkLmdldFZhcignQlVJTERfSU1BR0VTX0ZST01fRkVFRFMnKQorICAgIGlmIGJ1aWxkX2ltYWdlc19mcm9tX2ZlZWRzID09ICIxIjoKKyAgICAgICAgcmV0dXJuIDAKKworICAgIHBrZ19kaWMgPSB7fQorICAgIGZvciBwa2cgaW4gc29ydGVkKGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzKGQpKToKKyAgICAgICAgcGtnX2luZm8gPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1BLR0RBVEFfRElSJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdydW50aW1lLXJldmVyc2UnLCBwa2cpCisgICAgICAgIHBrZ19uYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5yZWFkbGluayhwa2dfaW5mbykpCisKKyAgICAgICAgcGtnX2RpY1twa2dfbmFtZV0gPSBvZS5wYWNrYWdlZGF0YS5yZWFkX3BrZ2RhdGFmaWxlKHBrZ19pbmZvKQorICAgICAgICBpZiBub3QgIkxJQ0VOU0UiIGluIHBrZ19kaWNbcGtnX25hbWVdLmtleXMoKToKKyAgICAgICAgICAgIHBrZ19saWNfbmFtZSA9ICJMSUNFTlNFXyIgKyBwa2dfbmFtZQorICAgICAgICAgICAgcGtnX2RpY1twa2dfbmFtZV1bIkxJQ0VOU0UiXSA9IHBrZ19kaWNbcGtnX25hbWVdW3BrZ19saWNfbmFtZV0KKworICAgIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0ID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpLAorICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0lNQUdFX05BTUUnKSwgJ2xpY2Vuc2UubWFuaWZlc3QnKQorICAgIHdyaXRlX2xpY2Vuc2VfZmlsZXMoZCwgcm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QsIHBrZ19kaWMpCit9CisKK2RlZiB3cml0ZV9saWNlbnNlX2ZpbGVzKGQsIGxpY2Vuc2VfbWFuaWZlc3QsIHBrZ19kaWMpOgorICAgIGltcG9ydCByZQorCisgICAgYmFkX2xpY2Vuc2VzID0gKGQuZ2V0VmFyKCJJTkNPTVBBVElCTEVfTElDRU5TRSIpIG9yICIiKS5zcGxpdCgpCisgICAgYmFkX2xpY2Vuc2VzID0gbWFwKGxhbWJkYSBsOiBjYW5vbmljYWxfbGljZW5zZShkLCBsKSwgYmFkX2xpY2Vuc2VzKQorICAgIGJhZF9saWNlbnNlcyA9IGV4cGFuZF93aWxkY2FyZF9saWNlbnNlcyhkLCBiYWRfbGljZW5zZXMpCisKKyAgICB3aXRoIG9wZW4obGljZW5zZV9tYW5pZmVzdCwgInciKSBhcyBsaWNlbnNlX2ZpbGU6CisgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ19kaWMpOgorICAgICAgICAgICAgaWYgYmFkX2xpY2Vuc2VzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgKHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0pID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgb2UubGljZW5zZS5tYW5pZmVzdF9saWNlbnNlcyhwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhZF9saWNlbnNlcywgY2Fub25pY2FsX2xpY2Vuc2UsIGQpCisgICAgICAgICAgICAgICAgZXhjZXB0IG9lLmxpY2Vuc2UuTGljZW5zZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoJyVzOiAlcycgJSAoZC5nZXRWYXIoJ1AnKSwgZXhjKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdID0gcmUuc3ViKCdbfCYoKSpdJywgJyAnLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkKKyAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIkxJQ0VOU0VTIl0gPSByZS5zdWIoJyAgKicsICcgJywgcGtnX2RpY1twa2ddWyJMSUNFTlNFUyJdKQorICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSA9IHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXS5zcGxpdCgpCisKKyAgICAgICAgICAgIGlmIG5vdCAiSU1BR0VfTUFOSUZFU1QiIGluIHBrZ19kaWNbcGtnXToKKyAgICAgICAgICAgICAgICAjIFJvb3RmcyBtYW5pZmVzdAorICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiUEFDS0FHRSBOQU1FOiAlc1xuIiAlIHBrZykKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlBBQ0tBR0UgVkVSU0lPTjogJXNcbiIgJSBwa2dfZGljW3BrZ11bIlBWIl0pCisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJSRUNJUEUgTkFNRTogJXNcbiIgJSBwa2dfZGljW3BrZ11bIlBOIl0pCisgICAgICAgICAgICAgICAgbGljZW5zZV9maWxlLndyaXRlKCJMSUNFTlNFOiAlc1xuXG4iICUgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCisKKyAgICAgICAgICAgICAgICAjIElmIHRoZSBwYWNrYWdlIGRvZXNuJ3QgY29udGFpbiBhbnkgZmlsZSwgdGhhdCBpcywgaXRzIHNpemUgaXMgMCwgdGhlIGxpY2Vuc2UKKyAgICAgICAgICAgICAgICAjIGlzbid0IHJlbGV2YW50IGFzIGZhciBhcyB0aGUgZmluYWwgaW1hZ2UgaXMgY29uY2VybmVkLiBTbyBkb2luZyBsaWNlbnNlIGNoZWNrCisgICAgICAgICAgICAgICAgIyBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZSwgc2tpcCBpdC4KKyAgICAgICAgICAgICAgICBpZiBwa2dfZGljW3BrZ11bIlBLR1NJWkVfJXMiICUgcGtnXSA9PSAiMCI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgSW1hZ2UgbWFuaWZlc3QKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlJFQ0lQRSBOQU1FOiAlc1xuIiAlIHBrZ19kaWNbcGtnXVsiUE4iXSkKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIlZFUlNJT046ICVzXG4iICUgcGtnX2RpY1twa2ddWyJQViJdKQorICAgICAgICAgICAgICAgIGxpY2Vuc2VfZmlsZS53cml0ZSgiTElDRU5TRTogJXNcbiIgJSBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkKKyAgICAgICAgICAgICAgICBsaWNlbnNlX2ZpbGUud3JpdGUoIkZJTEVTOiAlc1xuXG4iICUgcGtnX2RpY1twa2ddWyJGSUxFUyJdKQorCisgICAgICAgICAgICBmb3IgbGljIGluIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXToKKyAgICAgICAgICAgICAgICBsaWNfZmlsZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignTElDRU5TRV9ESVJFQ1RPUlknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZGljW3BrZ11bIlBOIl0sICJnZW5lcmljXyVzIiAlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLnN1YignXCsnLCAnJywgbGljKSkKKyAgICAgICAgICAgICAgICAjIGFkZCBleHBsaWNpdHkgYXZvaWQgb2YgQ0xPU0VEIGxpY2Vuc2UgYmVjYXVzZSBpc24ndCBnZW5lcmljCisgICAgICAgICAgICAgICAgaWYgbGljID09ICJDTE9TRUQiOgorICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGljX2ZpbGUpOgorICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBsaWNlbnNlIGxpc3RlZCAlcyB3YXMgbm90IGluIHRoZSAiXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGljZW5zZXMgY29sbGVjdGVkIGZvciByZWNpcGUgJXMiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGxpYywgcGtnX2RpY1twa2ddWyJQTiJdKSkKKworICAgICMgVHdvIG9wdGlvbnMgaGVyZToKKyAgICAjIC0gSnVzdCBjb3B5IHRoZSBtYW5pZmVzdAorICAgICMgLSBDb3B5IHRoZSBtYW5pZmVzdCBhbmQgdGhlIGxpY2Vuc2UgZGlyZWN0b3JpZXMKKyAgICAjIFdpdGggYm90aCBvcHRpb25zIHNldCB3ZSBzZWUgYSAuNSBNIGluY3JlYXNlIGluIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgIGNvcHlfbGljX21hbmlmZXN0ID0gZC5nZXRWYXIoJ0NPUFlfTElDX01BTklGRVNUJykKKyAgICBjb3B5X2xpY19kaXJzID0gZC5nZXRWYXIoJ0NPUFlfTElDX0RJUlMnKQorICAgIGlmIGNvcHlfbGljX21hbmlmZXN0ID09ICIxIjoKKyAgICAgICAgcm9vdGZzX2xpY2Vuc2VfZGlyID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdJTUFHRV9ST09URlMnKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c3InLCAnc2hhcmUnLCAnY29tbW9uLWxpY2Vuc2VzJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHJvb3Rmc19saWNlbnNlX2RpcikKKyAgICAgICAgcm9vdGZzX2xpY2Vuc2VfbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4ocm9vdGZzX2xpY2Vuc2VfZGlyLAorICAgICAgICAgICAgICAgIG9zLnBhdGguc3BsaXQobGljZW5zZV9tYW5pZmVzdClbMV0pCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyb290ZnNfbGljZW5zZV9tYW5pZmVzdCk6CisgICAgICAgICAgICBvcy5saW5rKGxpY2Vuc2VfbWFuaWZlc3QsIHJvb3Rmc19saWNlbnNlX21hbmlmZXN0KQorCisgICAgICAgIGlmIGNvcHlfbGljX2RpcnMgPT0gIjEiOgorICAgICAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQocGtnX2RpYyk6CisgICAgICAgICAgICAgICAgcGtnX3Jvb3Rmc19saWNlbnNlX2RpciA9IG9zLnBhdGguam9pbihyb290ZnNfbGljZW5zZV9kaXIsIHBrZykKKyAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocGtnX3Jvb3Rmc19saWNlbnNlX2RpcikKKyAgICAgICAgICAgICAgICBwa2dfbGljZW5zZV9kaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0xJQ0VOU0VfRElSRUNUT1JZJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19kaWNbcGtnXVsiUE4iXSkgCisKKyAgICAgICAgICAgICAgICBwa2dfbWFuaWZlc3RfbGljZW5zZXMgPSBbY2Fub25pY2FsX2xpY2Vuc2UoZCwgbGljKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGljIGluIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXV0KKworICAgICAgICAgICAgICAgIGxpY2Vuc2VzID0gb3MubGlzdGRpcihwa2dfbGljZW5zZV9kaXIpCisgICAgICAgICAgICAgICAgZm9yIGxpYyBpbiBsaWNlbnNlczoKKyAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2xpY2Vuc2UgPSBvcy5wYXRoLmpvaW4ocm9vdGZzX2xpY2Vuc2VfZGlyLCBsaWMpCisgICAgICAgICAgICAgICAgICAgIHBrZ19saWNlbnNlID0gb3MucGF0aC5qb2luKHBrZ19saWNlbnNlX2RpciwgbGljKQorICAgICAgICAgICAgICAgICAgICBwa2dfcm9vdGZzX2xpY2Vuc2UgPSBvcy5wYXRoLmpvaW4ocGtnX3Jvb3Rmc19saWNlbnNlX2RpciwgbGljKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCJeZ2VuZXJpY18uKiQiLCBsaWMpOgorICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY19saWMgPSBjYW5vbmljYWxfbGljZW5zZShkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5zZWFyY2goIl5nZW5lcmljXyguKikkIiwgbGljKS5ncm91cCgxKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgY29weSBnZW5lcmljIGxpY2Vuc2UgaW50byBwYWNrYWdlIGlmIGlzbid0CisgICAgICAgICAgICAgICAgICAgICAgICAjIGRlY2xhcmVkIGludG8gTElDRU5TRVMgb2YgdGhlIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUuc3ViKCdcKyQnLCAnJywgZ2VuZXJpY19saWMpIGluIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlLnN1YignXCsnLCAnJywgbGljKSBmb3IgbGljIGluIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19tYW5pZmVzdF9saWNlbnNlc106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgb2UubGljZW5zZS5saWNlbnNlX29rKGdlbmVyaWNfbGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRfbGljZW5zZXMpID09IEZhbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyb290ZnNfbGljZW5zZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGluayhwa2dfbGljZW5zZSwgcm9vdGZzX2xpY2Vuc2UpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dfcm9vdGZzX2xpY2Vuc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5qb2luKCcuLicsIGxpYyksIHBrZ19yb290ZnNfbGljZW5zZSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvZS5saWNlbnNlLmxpY2Vuc2Vfb2soY2Fub25pY2FsX2xpY2Vuc2UoZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGljKSwgYmFkX2xpY2Vuc2VzKSA9PSBGYWxzZSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhwa2dfcm9vdGZzX2xpY2Vuc2UpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKHBrZ19saWNlbnNlLCBwa2dfcm9vdGZzX2xpY2Vuc2UpCisKKworZGVmIGxpY2Vuc2VfZGVwbG95ZWRfbWFuaWZlc3QoZCk6CisgICAgIiIiCisgICAgV3JpdGUgdGhlIGxpY2Vuc2UgbWFuaWZlc3QgZm9yIHRoZSBkZXBsb3llZCByZWNpcGVzLgorICAgIFRoZSBkZXBsb3llZCByZWNpcGVzIHVzdWFsbHkgaW5jbHVkZXMgdGhlIGJvb3Rsb2FkZXIKKyAgICBhbmQgZXh0cmEgZmlsZXMgdG8gYm9vdCB0aGUgdGFyZ2V0LgorICAgICIiIgorCisgICAgZGVwX2RpYyA9IHt9CisgICAgbWFuX2RpYyA9IHt9CisgICAgbGljX2RpciA9IGQuZ2V0VmFyKCJMSUNFTlNFX0RJUkVDVE9SWSIpCisKKyAgICBkZXBfZGljID0gZ2V0X2RlcGxveWVkX2RlcGVuZGVuY2llcyhkKQorICAgIGZvciBkZXAgaW4gZGVwX2RpYy5rZXlzKCk6CisgICAgICAgIG1hbl9kaWNbZGVwXSA9IHt9CisgICAgICAgICMgSXQgaXMgbmVjZXNzYXJ5IHRvIG1hcmsgdGhpcyB3aWxsIGJlIHVzZWQgZm9yIGltYWdlIG1hbmlmZXN0CisgICAgICAgIG1hbl9kaWNbZGVwXVsiSU1BR0VfTUFOSUZFU1QiXSA9IFRydWUKKyAgICAgICAgbWFuX2RpY1tkZXBdWyJQTiJdID0gZGVwCisgICAgICAgIG1hbl9kaWNbZGVwXVsiRklMRVMiXSA9IFwKKyAgICAgICAgICAgICIgIi5qb2luKGdldF9kZXBsb3llZF9maWxlcyhkZXBfZGljW2RlcF0pKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGxpY19kaXIsIGRlcCwgInJlY2lwZWluZm8iKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZi5yZWFkbGluZXMoKToKKyAgICAgICAgICAgICAgICBrZXksdmFsID0gbGluZS5zcGxpdCgiOiAiLCAxKQorICAgICAgICAgICAgICAgIG1hbl9kaWNbZGVwXVtrZXldID0gdmFsWzotMV0KKworICAgIGxpY19tYW5pZmVzdF9kaXIgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0xJQ0VOU0VfRElSRUNUT1JZJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignSU1BR0VfTkFNRScpKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihsaWNfbWFuaWZlc3RfZGlyKQorICAgIGltYWdlX2xpY2Vuc2VfbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4obGljX21hbmlmZXN0X2RpciwgJ2ltYWdlX2xpY2Vuc2UubWFuaWZlc3QnKQorICAgIHdyaXRlX2xpY2Vuc2VfZmlsZXMoZCwgaW1hZ2VfbGljZW5zZV9tYW5pZmVzdCwgbWFuX2RpYykKKworZGVmIGdldF9kZXBsb3llZF9kZXBlbmRlbmNpZXMoZCk6CisgICAgIiIiCisgICAgR2V0IGFsbCB0aGUgZGVwbG95ZWQgZGVwZW5kZW5jaWVzIG9mIGFuIGltYWdlCisgICAgIiIiCisKKyAgICBkZXBsb3kgPSB7fQorICAgICMgR2V0IGFsbCB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgY3VycmVudCB0YXNrIChyb290ZnMpLgorICAgICMgQWxzbyBnZXQgRVhUUkFfSU1BR0VERVBFTkRTIGJlY2F1c2UgdGhlIGJvb3Rsb2FkZXIgaXMKKyAgICAjIHVzdWFsbHkgaW4gdGhpcyB2YXIgYW5kIG5vdCBsaXN0ZWQgaW4gcm9vdGZzLgorICAgICMgQXQgbGFzdCwgZ2V0IHRoZSBkZXBlbmRlbmNpZXMgZnJvbSBib290IGNsYXNzZXMgYmVjYXVzZQorICAgICMgaXQgbWlnaHQgY29udGFpbiB0aGUgYm9vdGxvYWRlci4KKyAgICB0YXNrZGF0YSA9IGQuZ2V0VmFyKCJCQl9UQVNLREVQREFUQSIsIEZhbHNlKQorICAgIGRlcGVuZHMgPSBsaXN0KHNldChbZGVwWzBdIGZvciBkZXAKKyAgICAgICAgICAgICAgICAgICAgaW4gbGlzdCh0YXNrZGF0YS52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRlcFswXS5lbmRzd2l0aCgiLW5hdGl2ZSIpXSkpCisKKyAgICAjIFRvIHZlcmlmeSB3aGF0IHdhcyBkZXBsb3llZCBpdCBjaGVja3MgdGhlIHJvb3RmcyBkZXBlbmRlbmNpZXMgYWdhaW5zdAorICAgICMgdGhlIFNTVEFURV9NQU5JRkVTVFMgZm9yICJkZXBsb3kiIHRhc2suCisgICAgIyBUaGUgbWFuaWZlc3QgZmlsZSBuYW1lIGNvbnRhaW5zIHRoZSBhcmNoLiBCZWNhdXNlIHdlIGFyZSBub3QgcnVubmluZworICAgICMgaW4gdGhlIHJlY2lwZSBjb250ZXh0IGl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBldmVyeSBhcmNoIHVzZWQuCisgICAgc3N0YXRlX21hbmlmZXN0X2RpciA9IGQuZ2V0VmFyKCJTU1RBVEVfTUFOSUZFU1RTIikKKyAgICBhcmNocyA9IGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkKKyAgICBmb3IgZGVwIGluIGRlcGVuZHM6CisgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgorICAgICAgICAgICAgc3N0YXRlX21hbmlmZXN0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3N0YXRlX21hbmlmZXN0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgIm1hbmlmZXN0LSVzLSVzLmRlcGxveSIgJSAoYXJjaCwgZGVwKSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNzdGF0ZV9tYW5pZmVzdF9maWxlKToKKyAgICAgICAgICAgICAgICBkZXBsb3lbZGVwXSA9IHNzdGF0ZV9tYW5pZmVzdF9maWxlCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIHJldHVybiBkZXBsb3kKK2dldF9kZXBsb3llZF9kZXBlbmRlbmNpZXNbdmFyZGVwc2V4Y2x1ZGVdID0gIkJCX1RBU0tERVBEQVRBIgorCitkZWYgZ2V0X2RlcGxveWVkX2ZpbGVzKG1hbl9maWxlKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIGZpbGVzIGRlcGxveWVkIGZyb20gdGhlIHNzdGF0ZSBtYW5pZmVzdAorICAgICIiIgorCisgICAgZGVwX2ZpbGVzID0gW10KKyAgICBleGNsdWRlZF9maWxlcyA9IFtdCisgICAgd2l0aCBvcGVuKG1hbl9maWxlLCAiciIpIGFzIG1hbmlmZXN0OgorICAgICAgICBhbGxfZmlsZXMgPSBtYW5pZmVzdC5yZWFkKCkKKyAgICBmb3IgZiBpbiBhbGxfZmlsZXMuc3BsaXRsaW5lcygpOgorICAgICAgICBpZiAoKG5vdCAob3MucGF0aC5pc2xpbmsoZikgb3Igb3MucGF0aC5pc2RpcihmKSkpIGFuZAorICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmJhc2VuYW1lKGYpIGluIGV4Y2x1ZGVkX2ZpbGVzKToKKyAgICAgICAgICAgIGRlcF9maWxlcy5hcHBlbmQob3MucGF0aC5iYXNlbmFtZShmKSkKKyAgICByZXR1cm4gZGVwX2ZpbGVzCisKK1JPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EX3ByZXBlbmQgPSAid3JpdGVfcGFja2FnZV9tYW5pZmVzdDsgbGljZW5zZV9jcmVhdGVfbWFuaWZlc3Q7ICIKK2RvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BvcHVsYXRlX2xpYyIKKworcHl0aG9uIGRvX3BvcHVsYXRlX2xpY19kZXBsb3koKSB7CisgICAgbGljZW5zZV9kZXBsb3llZF9tYW5pZmVzdChkKQorfQorCithZGR0YXNrIHBvcHVsYXRlX2xpY19kZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2ltYWdlX2NvbXBsZXRlCitkb19wb3B1bGF0ZV9saWNfZGVwbG95W3JlY3JkZXB0YXNrXSArPSAiZG9fcG9wdWxhdGVfbGljIGRvX2RlcGxveSIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKaW5kZXggOGYzMGViMy4uYjRjNDEzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCkBAIC0xLDcwICsxLDYxIEBACi1MRFNPX1RDTElCQyA9ICJnbGliYyIKLUxEU09fVENMSUJDX2xpYmMtbXVzbCA9ICJtdXNsIgotTERTT19UQ0xJQkNfbGliYy1iYXJlbWV0YWwgPSAibXVzbCIKK2RlZiBnZXRfbXVzbF9sb2FkZXIoZCk6CisgICAgaW1wb3J0IHJlCisgICAgZHluYW1pY19sb2FkZXIgPSBOb25lCiAKLWxpbnV4bG9hZGVyX2dsaWJjICgpIHsKLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JCXBvd2VycGMgfCBtaWNyb2JsYXplICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC5zby4xIgotCQkJOzsKLQkJbWlwc2lzYTMycjZlbCB8IG1pcHNpc2EzMnI2IHwgbWlwc2lzYTY0cjZlbCB8IG1pcHNpc2E2NHI2KQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LW1pcHNuOC5zby4xIgotCQkJOzsKLQkJbWlwcyogKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLnNvLjEiCi0JCQk7OwotCQlwb3dlcnBjNjQpCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQ2NC5zby4xIgotCQkJOzsKLQkJeDg2XzY0KQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotCQkJOzsKLQkJaSo4NiApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMiIKLQkJCTs7Ci0JCWFybSApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMyIKLQkJCTs7Ci0JCSogKQotCQkJZHluYW1pY19sb2FkZXI9Ii91bmtub3duX2R5bmFtaWNfbGlua2VyIgotCQkJOzsKLQllc2FjCi0JZWNobyAkZHluYW1pY19sb2FkZXIKLX0KKyAgICB0YXJnZXRhcmNoID0gZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikKKyAgICBpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoIm1pY3JvYmxhemUiKToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfS5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJtaXBzIik6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtbWlwcyR7QUJJRVhURU5TSU9OfSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKKyAgICBlbGlmIHRhcmdldGFyY2ggPT0gInBvd2VycGMiOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGMke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119LnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoID09ICJwb3dlcnBjNjQiOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGM2NC5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAieDg2XzY0IjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC14ODZfNjQuc28uMSIKKyAgICBlbGlmIHJlLnNlYXJjaCgiaS44NiIsIHRhcmdldGFyY2gpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWkzODYuc28uMSIKKyAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYXJtIik6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYXJtJHtBUk1QS0dTRlhfRU5ESUFOfSR7QVJNUEtHU0ZYX0VBQkl9LnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFhcmNoNjQiKToKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgorICAgIHJldHVybiBkeW5hbWljX2xvYWRlcgogCi1saW51eGxvYWRlcl9tdXNsICgpIHsKLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JCW1pY3JvYmxhemUqICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2VsJyAsZCl9LnNvLjEiCi0JCQk7OwotCQltaXBzKiApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taXBzJHtBQklFWFRFTlNJT059JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgotCQkJOzsKLQkJcG93ZXJwYyApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgotCQkJOzsKLQkJcG93ZXJwYzY0ICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGM2NC5zby4xIgotCQkJOzsKLQkJeDg2XzY0ICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXg4Nl82NC5zby4xIgotCQkJOzsKLQkJaSo4NiApCi0JCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1pMzg2LnNvLjEiCi0JCQk7OwotCQlhcm0qICkKLQkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFybSR7QVJNUEtHU0ZYX0VORElBTn0ke0FSTVBLR1NGWF9FQUJJfS5zby4xIgotCQkJOzsKLQkJYWFyY2g2NCogKQotCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKLQkJCTs7Ci0JCSogKQotCQkJZHluYW1pY19sb2FkZXI9Ii91bmtub3duX2R5bmFtaWNfbGlua2VyIgotCQkJOzsKLQllc2FjCi0JZWNobyAkZHluYW1pY19sb2FkZXIKLX0KK2RlZiBnZXRfZ2xpYmNfbG9hZGVyKGQpOgorICAgIGltcG9ydCByZQogCi1saW51eGxvYWRlciAoKSB7Ci0JbGludXhsb2FkZXJfJHtMRFNPX1RDTElCQ30KLX0KKyAgICBkeW5hbWljX2xvYWRlciA9IE5vbmUKKyAgICB0YXJnZXRhcmNoID0gZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikKKyAgICBpZiB0YXJnZXRhcmNoIGluIFsicG93ZXJwYyIsICJtaWNyb2JsYXplIl06CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoIGluIFsibWlwc2lzYTMycjZlbCIsICJtaXBzaXNhMzJyNiIsICJtaXBzaXNhNjRyNmVsIiwgIm1pcHNpc2E2NHI2Il06CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LW1pcHNuOC5zby4xIgorICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJtaXBzIik6CisgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoID09ICJwb3dlcnBjNjQiOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZDY0LnNvLjEiCisgICAgZWxpZiB0YXJnZXRhcmNoID09ICJ4ODZfNjQiOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC14ODYtNjQuc28uMiIKKyAgICBlbGlmIHJlLnNlYXJjaCgiaS44NiIsIHRhcmdldGFyY2gpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC5zby4yIgorICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAiYXJtIjoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbGludXguc28uMyIKKyAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYWFyY2g2NCIpOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgorICAgIHJldHVybiBkeW5hbWljX2xvYWRlcgorCitkZWYgZ2V0X2xpbnV4bG9hZGVyKGQpOgorICAgIG92ZXJyaWRlcyA9IGQuZ2V0VmFyKCJPVkVSUklERVMiKS5zcGxpdCgiOiIpCisKKyAgICBpZiAibGliYy1iYXJlbWV0YWwiIGluIG92ZXJyaWRlczoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGlmICJsaWJjLW11c2wiIGluIG92ZXJyaWRlczoKKyAgICAgICAgZHluYW1pY19sb2FkZXIgPSBnZXRfbXVzbF9sb2FkZXIoZCkKKyAgICBlbHNlOgorICAgICAgICBkeW5hbWljX2xvYWRlciA9IGdldF9nbGliY19sb2FkZXIoZCkKKyAgICByZXR1cm4gZHluYW1pY19sb2FkZXIKKworZ2V0X2xpbnV4bG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbGludXhsb2FkZXIoZCl9IgorZ2V0X211c2xfbG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbXVzbF9sb2FkZXIoZCl9IgorZ2V0X2dsaWJjX2xvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X2dsaWJjX2xvYWRlcihkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcwppbmRleCBkMTYyMzdiLi41MGMyNTQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKQEAgLTMsMyArMywzNSBAQAogIyB0ZW5kcyB0byBwdWxsIGluIHRoZSBlbnRpcmUgWE1MIHN0YWNrIGFuZCBvdGhlciB0b29scywgc28gaXQncyBub3QgZW5hYmxlZAogIyBieSBkZWZhdWx0LgogUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2FwaS1kb2N1bWVudGF0aW9uJywgJ21hbnBhZ2VzJywgJycsIGQpfSIKKworaW5oZXJpdCBxZW11CisKKyMgdXN1YWxseSBtYW51YWwgZmlsZXMgYXJlIHBhY2thZ2VkIHRvICR7UE59LWRvYyBleGNlcHQgbWFuLXBhZ2VzCitNQU5fUEtHID89ICIke1BOfS1kb2MiCisKKyMgb25seSBhZGQgbWFuLWRiIHRvIFJERVBFTkRTIHdoZW4gbWFudWFsIGZpbGVzIGFyZSBidWlsdCBhbmQgaW5zdGFsbGVkCitSREVQRU5EU18ke01BTl9QS0d9ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtYW5wYWdlcycsICdtYW4tZGInLCAnJywgZCl9IgorCitwa2dfcG9zdGluc3RfYXBwZW5kXyR7TUFOX1BLR30gKCkgeworCSMgb25seSB1cGRhdGUgbWFudWFsIHBhZ2UgaW5kZXggY2FjaGVzIHdoZW4gbWFudWFsIGZpbGVzIGFyZSBidWlsdCBhbmQgaW5zdGFsbGVkCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWFucGFnZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCAndHJ1ZScsJ2ZhbHNlJywgZCl9OyB0aGVuCisJCQkJc2VkICJzOlwoXHNcKS86XDEkRC86ZyIgJEQke3N5c2NvbmZkaXJ9L21hbl9kYi5jb25mIHwgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vbWFuZGInKX0gLUMgLSAtdSAtcSAkRCR7bWFuZGlyfQorCQkJCW1rZGlyIC1wICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4KKwkJCQltdiAkRCR7bWFuZGlyfS9pbmRleC5kYiAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuCisJCQllbHNlCisJCQkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IGRlbGF5X3RvX2ZpcnN0X2Jvb3QgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9CisJCQlmaQorCQllbHNlCisJCQltYW5kYiAtcQorCQlmaQorCWZpCit9CisKK3BrZ19wb3N0cm1fYXBwZW5kXyR7TUFOX1BLR30gKCkgeworCSMgb25seSB1cGRhdGUgbWFudWFsIHBhZ2UgaW5kZXggY2FjaGVzIHdoZW4gbWFudWFsIGZpbGVzIGFyZSBidWlsdCBhbmQgaW5zdGFsbGVkCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWFucGFnZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQltYW5kYiAtcQorCWZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwppbmRleCAyZDdlZTRmLi4zY2JkY2YxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKQEAgLTEsNCArMSw0IEBACi1pbmhlcml0IHB5dGhvbjNuYXRpdmUKK2luaGVyaXQgc2l0ZWluZm8gcHl0aG9uM25hdGl2ZQogCiBERVBFTkRTX2FwcGVuZCA9ICIgbWVzb24tbmF0aXZlIG5pbmphLW5hdGl2ZSIKIApAQCAtMjQsMjUgKzI0LDUyIEBACiAgICAgICAgICAgICAgIC0taW5mb2RpciAke0Bub3ByZWZpeCgnaW5mb2RpcicsIGQpfSBcCiAgICAgICAgICAgICAgIC0tc3lzY29uZmRpciAke3N5c2NvbmZkaXJ9IFwKICAgICAgICAgICAgICAgLS1sb2NhbHN0YXRlZGlyICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAtLXNoYXJlZHN0YXRlZGlyICR7c2hhcmVkc3RhdGVkaXJ9IgorICAgICAgICAgICAgICAtLXNoYXJlZHN0YXRlZGlyICR7c2hhcmVkc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgLURjX2FyZ3M9JyR7QlVJTERfQ1BQRkxBR1N9ICR7QlVJTERfQ0ZMQUdTfScgXAorICAgICAgICAgICAgICAtRGNfbGlua19hcmdzPScke0JVSUxEX0xERkxBR1N9JyBcCisgICAgICAgICAgICAgIC1EY3BwX2FyZ3M9JyR7QlVJTERfQ1BQRkxBR1N9ICR7QlVJTERfQ1hYRkxBR1N9JyBcCisgICAgICAgICAgICAgIC1EY3BwX2xpbmtfYXJncz0nJHtCVUlMRF9MREZMQUdTfSciCiAKIE1FU09OX1RPT0xDSEFJTl9BUkdTID0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IgogTUVTT05fQ19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q0ZMQUdTfSIKIE1FU09OX0NQUF9BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7Q1hYRkxBR1N9IgogTUVTT05fTElOS19BUkdTID0gIiR7TUVTT05fVE9PTENIQUlOX0FSR1N9ICR7TERGTEFHU30iCiAKLSMgYm90aCBhcmUgcmVxdWlyZWQgYnV0IG5vdCB1c2VkIGJ5IG1lc29uCi1NRVNPTl9IT1NUX0VORElBTiA9ICJib2d1cy1lbmRpYW4iCi1NRVNPTl9UQVJHRVRfRU5ESUFOID0gImJvZ3VzLWVuZGlhbiIKLQotRVhUUkFfT0VNRVNPTiArPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKK0VYVFJBX09FTUVTT05fYXBwZW5kID0gIiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IgogCiBNRVNPTl9DUk9TU19GSUxFID0gIiIKIE1FU09OX0NST1NTX0ZJTEVfY2xhc3MtdGFyZ2V0ID0gIi0tY3Jvc3MtZmlsZSAke1dPUktESVJ9L21lc29uLmNyb3NzIgogTUVTT05fQ1JPU1NfRklMRV9jbGFzcy1uYXRpdmVzZGsgPSAiLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24uY3Jvc3MiCiAKIGRlZiBtZXNvbl9hcnJheSh2YXIsIGQpOgotICAgIHJldHVybiAiJywgJyIuam9pbihkLmdldFZhcih2YXIpLnNwbGl0KCkpLmpvaW4oKCInIiwgIiciKSkKKyAgICBpdGVtcyA9IGQuZ2V0VmFyKHZhcikuc3BsaXQoKQorICAgIHJldHVybiByZXByKGl0ZW1zWzBdIGlmIGxlbihpdGVtcykgPT0gMSBlbHNlIGl0ZW1zKQorCisjIE1hcCBvdXIgQVJDSCB2YWx1ZXMgdG8gd2hhdCBNZXNvbiBleHBlY3RzOgorIyBodHRwOi8vbWVzb25idWlsZC5jb20vUmVmZXJlbmNlLXRhYmxlcy5odG1sI2NwdS1mYW1pbGllcworZGVmIG1lc29uX2NwdV9mYW1pbHkodmFyLCBkKToKKyAgICBpbXBvcnQgcmUKKyAgICBhcmNoID0gZC5nZXRWYXIodmFyKQorICAgIGlmIGFyY2ggPT0gJ3Bvd2VycGMnOgorICAgICAgICByZXR1cm4gJ3BwYycKKyAgICBlbGlmIGFyY2ggPT0gJ3Bvd2VycGM2NCc6CisgICAgICAgIHJldHVybiAncHBjNjQnCisgICAgZWxpZiBhcmNoID09ICdtaXBzZWwnOgorICAgICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaChyImlbMy02XTg2IiwgYXJjaCk6CisgICAgICAgIHJldHVybiAieDg2IgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBhcmNoCisKK2RlZiBtZXNvbl9lbmRpYW4ocHJlZml4LCBkKToKKyAgICBhcmNoLCBvcyA9IGQuZ2V0VmFyKHByZWZpeCArICJfQVJDSCIpLCBkLmdldFZhcihwcmVmaXggKyAiX09TIikKKyAgICBzaXRlZGF0YSA9IHNpdGVpbmZvX2RhdGFfZm9yX21hY2hpbmUoYXJjaCwgb3MsIGQpCisgICAgaWYgImVuZGlhbi1saXR0bGUiIGluIHNpdGVkYXRhOgorICAgICAgICByZXR1cm4gImxpdHRsZSIKKyAgICBlbGlmICJlbmRpYW4tYmlnIiBpbiBzaXRlZGF0YToKKyAgICAgICAgcmV0dXJuICJiaWciCisgICAgZWxzZToKKyAgICAgICAgYmIuZmF0YWwoIkNhbm5vdCBkZXRlcm1pbmUgZW5kaWFuaXNtIGZvciAlcy0lcyIgJSAoYXJjaCwgb3MpKQogCiBhZGR0YXNrIHdyaXRlX2NvbmZpZyBiZWZvcmUgZG9fY29uZmlndXJlCiBkb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIk1FU09OX0NfQVJHUyBNRVNPTl9DUFBfQVJHUyBNRVNPTl9MSU5LX0FSR1MgQ0MgQ1hYIExEIEFSIE5NIFNUUklQIFJFQURFTEYiCkBAIC01MCw2OCArNzcsNjkgQEAKICAgICAjIFRoaXMgbmVlZHMgdG8gYmUgUHkgdG8gc3BsaXQgdGhlIGFyZ3MgaW50byBzaW5nbGUtZWxlbWVudCBsaXN0cwogICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi5jcm9zcyA8PEVPRgogW2JpbmFyaWVzXQotYyA9IFske0BtZXNvbl9hcnJheSgnQ0MnLCBkKX1dCi1jcHAgPSBbJHtAbWVzb25fYXJyYXkoJ0NYWCcsIGQpfV0KLWFyID0gWyR7QG1lc29uX2FycmF5KCdBUicsIGQpfV0KLW5tID0gWyR7QG1lc29uX2FycmF5KCdOTScsIGQpfV0KLWxkID0gWyR7QG1lc29uX2FycmF5KCdMRCcsIGQpfV0KLXN0cmlwID0gWyR7QG1lc29uX2FycmF5KCdTVFJJUCcsIGQpfV0KLXJlYWRlbGYgPSBbJHtAbWVzb25fYXJyYXkoJ1JFQURFTEYnLCBkKX1dCitjID0gJHtAbWVzb25fYXJyYXkoJ0NDJywgZCl9CitjcHAgPSAke0BtZXNvbl9hcnJheSgnQ1hYJywgZCl9CithciA9ICR7QG1lc29uX2FycmF5KCdBUicsIGQpfQorbm0gPSAke0BtZXNvbl9hcnJheSgnTk0nLCBkKX0KK2xkID0gJHtAbWVzb25fYXJyYXkoJ0xEJywgZCl9CitzdHJpcCA9ICR7QG1lc29uX2FycmF5KCdTVFJJUCcsIGQpfQorcmVhZGVsZiA9ICR7QG1lc29uX2FycmF5KCdSRUFERUxGJywgZCl9CiBwa2djb25maWcgPSAncGtnLWNvbmZpZycKIAogW3Byb3BlcnRpZXNdCiBuZWVkc19leGVfd3JhcHBlciA9IHRydWUKLWNfYXJncyA9IFske0BtZXNvbl9hcnJheSgnTUVTT05fQ19BUkdTJywgZCl9XQotY19saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KLWNwcF9hcmdzID0gWyR7QG1lc29uX2FycmF5KCdNRVNPTl9DUFBfQVJHUycsIGQpfV0KLWNwcF9saW5rX2FyZ3MgPSBbJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfV0KK2NfYXJncyA9ICR7QG1lc29uX2FycmF5KCdNRVNPTl9DX0FSR1MnLCBkKX0KK2NfbGlua19hcmdzID0gJHtAbWVzb25fYXJyYXkoJ01FU09OX0xJTktfQVJHUycsIGQpfQorY3BwX2FyZ3MgPSAke0BtZXNvbl9hcnJheSgnTUVTT05fQ1BQX0FSR1MnLCBkKX0KK2NwcF9saW5rX2FyZ3MgPSAke0BtZXNvbl9hcnJheSgnTUVTT05fTElOS19BUkdTJywgZCl9CiBndGtkb2NfZXhlX3dyYXBwZXIgPSAnJHtCfS9ndGtkb2MtcWVtdXdyYXBwZXInCiAKIFtob3N0X21hY2hpbmVdCiBzeXN0ZW0gPSAnJHtIT1NUX09TfScKLWNwdV9mYW1pbHkgPSAnJHtIT1NUX0FSQ0h9JworY3B1X2ZhbWlseSA9ICcke0BtZXNvbl9jcHVfZmFtaWx5KCdIT1NUX0FSQ0gnLCBkKX0nCiBjcHUgPSAnJHtIT1NUX0FSQ0h9JwotZW5kaWFuID0gJyR7TUVTT05fSE9TVF9FTkRJQU59JworZW5kaWFuID0gJyR7QG1lc29uX2VuZGlhbignSE9TVCcsIGQpfScKIAogW3RhcmdldF9tYWNoaW5lXQogc3lzdGVtID0gJyR7VEFSR0VUX09TfScKLWNwdV9mYW1pbHkgPSAnJHtUQVJHRVRfQVJDSH0nCitjcHVfZmFtaWx5ID0gJyR7QG1lc29uX2NwdV9mYW1pbHkoJ1RBUkdFVF9BUkNIJywgZCl9JwogY3B1ID0gJyR7VEFSR0VUX0FSQ0h9JwotZW5kaWFuID0gJyR7TUVTT05fVEFSR0VUX0VORElBTn0nCitlbmRpYW4gPSAnJHtAbWVzb25fZW5kaWFuKCdUQVJHRVQnLCBkKX0nCiBFT0YKIH0KIAogQ09ORklHVVJFX0ZJTEVTID0gIm1lc29uLmJ1aWxkIgogCiBtZXNvbl9kb19jb25maWd1cmUoKSB7CisgICAgIyBXb3JrIGFyb3VuZCAiTWVzb24gZmFpbHMgaWYgL3RtcCBpcyBtb3VudGVkIHdpdGggbm9leGVjICMyOTcyIgorICAgIG1rZGlyIC1wICIke0J9L21lc29uLXByaXZhdGUvdG1wIgorICAgIGV4cG9ydCBUTVBESVI9IiR7Qn0vbWVzb24tcHJpdmF0ZS90bXAiCisgICAgYmJub3RlIEV4ZWN1dGluZyBtZXNvbiAke0VYVFJBX09FTUVTT059Li4uCiAgICAgaWYgISBtZXNvbiAke01FU09OT1BUU30gIiR7TUVTT05fU09VUkNFUEFUSH0iICIke0J9IiAke01FU09OX0NST1NTX0ZJTEV9ICR7RVhUUkFfT0VNRVNPTn07IHRoZW4KLSAgICAgICAgY2F0ICR7Qn0vbWVzb24tbG9ncy9tZXNvbi1sb2cudHh0CiAgICAgICAgIGJiZmF0YWxfbG9nIG1lc29uIGZhaWxlZAogICAgIGZpCiB9CiAKLW1lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKK292ZXJyaWRlX25hdGl2ZV90b29scygpIHsKICAgICAjIFNldCB0aGVzZSBzbyB0aGF0IG1lc29uIHVzZXMgdGhlIG5hdGl2ZSB0b29scyBmb3IgaXRzIGJ1aWxkIHNhbml0eSB0ZXN0cywKICAgICAjIHdoaWNoIHJlcXVpcmUgZXhlY3V0YWJsZXMgdG8gYmUgcnVubmFibGUuIFRoZSBjcm9zcyBmaWxlIHdpbGwgc3RpbGwKLSAgICAjIG92ZXJyaWRlIHRoZXNlIGZvciB0aGUgdGFyZ2V0IGJ1aWxkLiBOb3RlIHRoYXQgd2UgZG8gKm5vdCogc2V0IENGTEFHUywKLSAgICAjIExERkxBR1MsIGV0Yy4gYXMgdGhleSB3aWxsIGJlIHNsdXJwZWQgaW4gYnkgbWVzb24gYW5kIGFwcGxpZWQgdG8gdGhlCi0gICAgIyB0YXJnZXQgYnVpbGQsIGNhdXNpbmcgZXJyb3JzLgorICAgICMgb3ZlcnJpZGUgdGhlc2UgZm9yIHRoZSB0YXJnZXQgYnVpbGQuCiAgICAgZXhwb3J0IENDPSIke0JVSUxEX0NDfSIKICAgICBleHBvcnQgQ1hYPSIke0JVSUxEX0NYWH0iCiAgICAgZXhwb3J0IExEPSIke0JVSUxEX0xEfSIKICAgICBleHBvcnQgQVI9IiR7QlVJTERfQVJ9IgorICAgICMgVGhlc2UgY29udGFpbiAqdGFyZ2V0KiBmbGFncyBidXQgd2lsbCBiZSB1c2VkIGFzICpuYXRpdmUqIGZsYWdzLiAgVGhlCisgICAgIyBjb3JyZWN0IG5hdGl2ZSBmbGFncyB3aWxsIGJlIHBhc3NlZCB2aWEgLURjX2FyZ3MgYW5kIHNvIG9uLCB1bnNldCB0aGVtIHNvCisgICAgIyB0aGV5IGRvbid0IGludGVyZmVyZSB3aXRoIHRvb2xzIGludm9rZWQgYnkgTWVzb24gKHN1Y2ggYXMgZy1pci1zY2FubmVyKQorICAgIHVuc2V0IENQUEZMQUdTIENGTEFHUyBDWFhGTEFHUyBMREZMQUdTCit9CisKK21lc29uX2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBvdmVycmlkZV9uYXRpdmVfdG9vbHMKIH0KIAogbWVzb25fZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgICMgU2V0IHRoZXNlIHNvIHRoYXQgbWVzb24gdXNlcyB0aGUgbmF0aXZlIHRvb2xzIGZvciBpdHMgYnVpbGQgc2FuaXR5IHRlc3RzLAotICAgICMgd2hpY2ggcmVxdWlyZSBleGVjdXRhYmxlcyB0byBiZSBydW5uYWJsZS4gVGhlIGNyb3NzIGZpbGUgd2lsbCBzdGlsbAotICAgICMgb3ZlcnJpZGUgdGhlc2UgZm9yIHRoZSBuYXRpdmVzZGsgYnVpbGQuIE5vdGUgdGhhdCB3ZSBkbyAqbm90KiBzZXQgQ0ZMQUdTLAotICAgICMgTERGTEFHUywgZXRjLiBhcyB0aGV5IHdpbGwgYmUgc2x1cnBlZCBpbiBieSBtZXNvbiBhbmQgYXBwbGllZCB0byB0aGUKLSAgICAjIG5hdGl2ZXNkayBidWlsZCwgY2F1c2luZyBlcnJvcnMuCi0gICAgZXhwb3J0IENDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgQ1hYPSIke0JVSUxEX0NYWH0iCi0gICAgZXhwb3J0IExEPSIke0JVSUxEX0xEfSIKLSAgICBleHBvcnQgQVI9IiR7QlVJTERfQVJ9IgorICAgIG92ZXJyaWRlX25hdGl2ZV90b29scwogfQogCiBtZXNvbl9kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CkBAIC0xMjAsMTEgKzE0OCwxMSBAQAogCiBkb19jb21waWxlW3Byb2dyZXNzXSA9ICJvdXRvZjpeXFsoXGQrKS8oXGQrKVxdXHMrIgogbWVzb25fZG9fY29tcGlsZSgpIHsKLSAgICBuaW5qYSAke1BBUkFMTEVMX01BS0V9CisgICAgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfQogfQogCiBtZXNvbl9kb19pbnN0YWxsKCkgewotICAgIERFU1RESVI9JyR7RH0nIG5pbmphICR7UEFSQUxMRUxfTUFLRUlOU1R9IGluc3RhbGwKKyAgICBERVNURElSPScke0R9JyBuaW5qYSAtdiAke1BBUkFMTEVMX01BS0VJTlNUfSBpbnN0YWxsCiB9CiAKIEVYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCmluZGV4IDBkZjE1ODMuLjZjN2I4NjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKQEAgLTUzLDUgKzUzLDUgQEAKICAgICAgICAgICAgIHBvc3RybSArPSBkLmdldFZhcignbWltZV9wb3N0cm0nKQogICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnLCBwb3N0cm0pCiAgICAgICAgICAgICBiYi5ub3RlKCJhZGRpbmcgc2hhcmVkLW1pbWUtaW5mby1kYXRhIGRlcGVuZGVuY3kgdG8gJXMiICUgcGtnKQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICIgc2hhcmVkLW1pbWUtaW5mby1kYXRhIikKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsic2hhcmVkLW1pbWUtaW5mby1kYXRhIikKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCmluZGV4IDUxOWMxYTUuLjZjNjQ5OWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwpAQCAtMTEsOCArMTEsMTIgQEAKICAgICAjIFRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBrZXJuZWwgaW4gbXVsdGlsaWIgY29uZmlncwogICAgICMgV2UgYWxzbyBza2lwIG11bHRpbGliIHNldHVwIGZvciBtb2R1bGUgcGFja2FnZXMuCiAgICAgcHJvdmlkZXMgPSAoZS5kYXRhLmdldFZhcigiUFJPVklERVMiKSBvciAiIikuc3BsaXQoKQotICAgIGlmICJ2aXJ0dWFsL2tlcm5lbCIgaW4gcHJvdmlkZXMgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBlLmRhdGEpIG9yICJtYWtlLW1vZC1zY3JpcHRzIiBpbiBlLmRhdGEuZ2V0VmFyKCJQTiIpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJXZSBzaG91bGRuJ3QgaGF2ZSBtdWx0aWxpYiB2YXJpYW50cyBmb3IgdGhlIGtlcm5lbCIpCisgICAgbm9uX21sX3JlY2lwZXMgPSBkLmdldFZhcignTk9OX01VTFRJTElCX1JFQ0lQRVMnKS5zcGxpdCgpCisgICAgYnBuID0gZS5kYXRhLmdldFZhcigiQlBOIikKKyAgICBpZiAidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzIG9yIFwKKyAgICAgICAgICAgIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ21vZHVsZS1iYXNlJywgZS5kYXRhKSBvciBcCisgICAgICAgICAgICBicG4gaW4gbm9uX21sX3JlY2lwZXM6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIHNob3VsZG4ndCBoYXZlIG11bHRpbGliIHZhcmlhbnRzIGZvciAlcyIgJSBicG4pCiAKICAgICBzYXZlX3Zhcl9uYW1lPWUuZGF0YS5nZXRWYXIoIk1VTFRJTElCX1NBVkVfVkFSTkFNRSIpIG9yICIiCiAgICAgZm9yIG5hbWUgaW4gc2F2ZV92YXJfbmFtZS5zcGxpdCgpOgpAQCAtMzUsNiArMzksMTAgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbicsIGUuZGF0YSk6CisgICAgICAgICMgTXVsdGlsaWIgY3Jvc3MtY2FuZGlhbiBzaG91bGQgdXNlIHRoZSBzYW1lIG5hdGl2ZXNkayBzeXNyb290IHdpdGhvdXQgTUxQUkVGSVgKKyAgICAgICAgZS5kYXRhLnNldFZhcigiUkVDSVBFX1NZU1JPT1QiLCAiJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCIpCisgICAgICAgIGUuZGF0YS5zZXRWYXIoIlNUQUdJTkdfRElSX1RBUkdFVCIsICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IikKKyAgICAgICAgZS5kYXRhLnNldFZhcigiU1RBR0lOR19ESVJfSE9TVCIsICIke1dPUktESVJ9L3JlY2lwZS1zeXNyb290IikKICAgICAgICAgZS5kYXRhLnNldFZhcigiTUxQUkVGSVgiLCB2YXJpYW50ICsgIi0iKQogICAgICAgICBvdmVycmlkZSA9ICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50CiAgICAgICAgIGUuZGF0YS5zZXRWYXIoIk9WRVJSSURFUyIsIGUuZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArIG92ZXJyaWRlKQpAQCAtNDYsMTAgKzU0LDEwIEBACiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlc2RrJywgZS5kYXRhKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zc3NkaycsIGUuZGF0YSk6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIldlIGNhbid0IGV4dGVuZCBuYXRpdmVzZGsgcmVjaXBlcyIpCiAKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZS5kYXRhKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGUuZGF0YSk6CisgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGUuZGF0YSkgYW5kIG5vdCBkLmdldFZhcignTVVMVElMSUJfVkFSSUFOVFMnKSBcCisgICAgICAgIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZS5kYXRhKToKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiRG9uJ3QgZXh0ZW5kIGFsbGFyY2ggcmVjaXBlcyB3aGljaCBhcmUgbm90IHBhY2thZ2Vncm91cHMiKQogCi0KICAgICAjIEV4cGFuZCB0aGlzIHNpbmNlIHRoaXMgd29uJ3Qgd29yayBjb3JyZWN0bHkgb25jZSB3ZSBzZXQgYSBtdWx0aWxpYiBpbnRvIHBsYWNlCiAgICAgZS5kYXRhLnNldFZhcigiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiLCBlLmRhdGEuZ2V0VmFyKCJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIpKQogIApAQCAtNjUsMTIgKzczLDExIEBACiAgICAgZS5kYXRhLnNldFZhcigiUE4iLCB2YXJpYW50ICsgIi0iICsgZS5kYXRhLmdldFZhcigiUE4iLCBGYWxzZSkpCiAgICAgZS5kYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgZS5kYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgb3ZlcnJpZGUpCiAKLSAgICAjIEV4cGFuZCB0aGUgV0hJVEVMSVNUcyB3aXRoIG11bHRpbGliIHByZWZpeAotICAgIGZvciB3aGl0ZWxpc3QgaW4gWyJXSElURUxJU1RfR1BMLTMuMCIsICJMR1BMdjJfV0hJVEVMSVNUX0dQTC0zLjAiXToKLSAgICAgICAgcGtncyA9IGUuZGF0YS5nZXRWYXIod2hpdGVsaXN0KQotICAgICAgICBmb3IgcGtnIGluIHBrZ3Muc3BsaXQoKToKLSAgICAgICAgICAgIHBrZ3MgKz0gIiAiICsgdmFyaWFudCArICItIiArIHBrZwotICAgICAgICBlLmRhdGEuc2V0VmFyKHdoaXRlbGlzdCwgcGtncykKKyAgICAjIEV4cGFuZCBXSElURUxJU1RfR1BMLTMuMCB3aXRoIG11bHRpbGliIHByZWZpeAorICAgIHBrZ3MgPSBlLmRhdGEuZ2V0VmFyKCJXSElURUxJU1RfR1BMLTMuMCIpCisgICAgZm9yIHBrZyBpbiBwa2dzLnNwbGl0KCk6CisgICAgICAgIHBrZ3MgKz0gIiAiICsgdmFyaWFudCArICItIiArIHBrZworICAgIGUuZGF0YS5zZXRWYXIoIldISVRFTElTVF9HUEwtMy4wIiwgcGtncykKIAogICAgICMgREVGQVVMVFRVTkUgY2FuIGNoYW5nZSBUQVJHRVRfQVJDSCBvdmVycmlkZSBzbyBleHBhbmQgdGhpcyBub3cgYmVmb3JlIHVwZGF0ZV9kYXRhCiAgICAgbmV3dHVuZSA9IGUuZGF0YS5nZXRWYXIoIkRFRkFVTFRUVU5FXyIgKyAidmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50LCBGYWxzZSkKQEAgLTExNyw2ICsxMjQsNyBAQAogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIklOSVRTQ1JJUFRfUEFDS0FHRVMiKQogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIlVTRVJBRERfUEFDS0FHRVMiKQogICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIlNZU1RFTURfUEFDS0FHRVMiKQorICAgIGNsc2V4dGVuZC5tYXBfdmFyaWFibGUoIlVQREFURVJDUE4iKQogfQogCiBQQUNLQUdFRlVOQ1NfYXBwZW5kID0gIiBkb19wYWNrYWdlX3FhX211bHRpbGliIgpAQCAtMTMxLDcgKzEzOSw4IEBACiAgICAgICAgICAgICAgICAgaSA9IGlbbGVuKCd2aXJ0dWFsLycpOl0KICAgICAgICAgICAgIGlmIChub3QgaS5zdGFydHN3aXRoKCdrZXJuZWwtbW9kdWxlJykpIGFuZCAobm90IGkuc3RhcnRzd2l0aChtbHByZWZpeCkpIGFuZCBcCiAgICAgICAgICAgICAgICAgKG5vdCAnY3Jvc3MtY2FuYWRpYW4nIGluIGkpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgibmF0aXZlc2RrLSIpKSBhbmQgXAotICAgICAgICAgICAgICAgIChub3QgaS5zdGFydHN3aXRoKCJydGxkIikpIGFuZCAobm90IGkuc3RhcnRzd2l0aCgna2VybmVsLXZtbGludXgnKSk6CisgICAgICAgICAgICAgICAgKG5vdCBpLnN0YXJ0c3dpdGgoInJ0bGQiKSkgYW5kIChub3QgaS5zdGFydHN3aXRoKCdrZXJuZWwtdm1saW51eCcpKSBcCisgICAgICAgICAgICAgICAgYW5kIChub3QgaS5zdGFydHN3aXRoKCJrZXJuZWwtaW1hZ2UiKSk6CiAgICAgICAgICAgICAgICAgY2FuZGlkYXRlcy5hcHBlbmQoaSkKICAgICAgICAgaWYgbGVuKGNhbmRpZGF0ZXMpID4gMDoKICAgICAgICAgICAgIG1zZyA9ICIlcyBwYWNrYWdlICVzIC0gc3VzcGljaW91cyB2YWx1ZXMgJyVzJyBpbiAlcyIgXApAQCAtMTQyLDYgKzE1MSwxMCBAQAogICAgIGlmIG5vdCBtbDoKICAgICAgICAgcmV0dXJuCiAKKyAgICAjIGV4Y2VwdGlvbiBmb3IgJHtNTFBSRUZJWH10YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15CisgICAgaWYgJ3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXknIGluIGQuZ2V0VmFyKCdQTicpOgorICAgICAgICByZXR1cm4KKwogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CiAgICAgICAgIGNoZWNrX21scHJlZml4KHBrZywgJ1JERVBFTkRTJywgbWwpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9nbG9iYWwuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCmluZGV4IGQyZWMxYWQuLjY0OWNjMDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX2dsb2JhbC5iYmNsYXNzCkBAIC0xNjQsMTAgKzE2NCwxMSBAQAogICAgIGlmIHZhcmlhbnQ6CiAgICAgICAgIHJldHVybgogCisgICAgbm9uX21sX3JlY2lwZXMgPSBkLmdldFZhcignTk9OX01VTFRJTElCX1JFQ0lQRVMnKS5zcGxpdCgpCisKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwnLCBlLmRhdGEpIG9yIFwKICAgICAgICAgICAgIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ21vZHVsZS1iYXNlJywgZS5kYXRhKSBvciBcCi0gICAgICAgICAgICAoYmIuZGF0YS5pbmhlcml0c19jbGFzcygnYWxsYXJjaCcsIGUuZGF0YSkgYW5kXAotICAgICAgICAgICAgIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBlLmRhdGEpKToKKyAgICAgICAgICAgIGQuZ2V0VmFyKCdCUE4nKSBpbiBub25fbWxfcmVjaXBlczoKICAgICAgICAgICAgIHZhcmlhbnRzID0gKGUuZGF0YS5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikgb3IgIiIpLnNwbGl0KCkKIAogICAgICAgICAgICAgaW1wb3J0IG9lLmNsYXNzZXh0ZW5kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9zY3JpcHQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliX3NjcmlwdC5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYzlmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYl9zY3JpcHQuYmJjbGFzcwpAQCAtMCwwICsxLDMyIEBACisjCisjIFJlY2lwZSBuZWVkcyB0byBzZXQgTVVMVElMSUJfU0NSSVBUUyBpbiB0aGUgZm9ybSA8cGtnbmFtZT46PHNjcmlwdG5hbWU+LCBlLmcuCisjIE1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9maWxlMSAke1BOfToke2Jhc2VfYmluZGlyfS9maWxlMiIKKyMgdG8gaW5kaWNhdGUgd2hpY2ggc2NyaXB0IGZpbGVzIHRvIHByb2Nlc3MgZnJvbSB3aGljaCBwYWNrYWdlcy4KKyMKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK01VTFRJTElCX1NVRkZJWCA9ICIke0BkLmdldFZhcignYmFzZV9saWJkaXInLDEpLnNwbGl0KCcvJylbLTFdfSIKKworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJtdWx0aWxpYnNjcmlwdF9yZW5hbWUiCisKK211bHRpbGlic2NyaXB0X3JlbmFtZSgpIHsKKwk6Cit9CisKK3B5dGhvbiAoKSB7CisgICAgIyBEbyBub3RoaW5nIGlmIG11bHRpbGliIGlzbid0IGJlaW5nIHVzZWQKKyAgICBpZiBub3QgZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIik6CisgICAgICAgcmV0dXJuCisgICAgIyBEbyBub3RoaW5nIGZvciBuYXRpdmUvY3Jvc3MKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcycsIGQpOgorICAgICAgIHJldHVybgorCisgICAgZm9yIGVudHJ5IGluIChkLmdldFZhcigiTVVMVElMSUJfU0NSSVBUUyIsIEZhbHNlKSBvciAiIikuc3BsaXQoKToKKyAgICAgICBwa2csIHNjcmlwdCA9IGVudHJ5LnNwbGl0KCI6IikKKyAgICAgICBzY3JpcHRuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzY3JpcHQpCisgICAgICAgZC5hcHBlbmRWYXIoIkFMVEVSTkFUSVZFXyIgKyBwa2csIHNjcmlwdG5hbWUgKyAiICIpCisgICAgICAgZC5zZXRWYXJGbGFnKCJBTFRFUk5BVElWRV9MSU5LX05BTUUiLCBzY3JpcHRuYW1lLCBzY3JpcHQpCisgICAgICAgZC5zZXRWYXJGbGFnKCJBTFRFUk5BVElWRV9UQVJHRVQiLCBzY3JpcHRuYW1lLCBzY3JpcHQgKyAiLSR7TVVMVElMSUJfU1VGRklYfSIpCisgICAgICAgZC5hcHBlbmRWYXIoIm11bHRpbGlic2NyaXB0X3JlbmFtZSIsICAiXG4JbXYgJHtQS0dEfSIgKyBzY3JpcHQgKyAiICR7UEtHRH0iICsgc2NyaXB0ICsgIi0ke01VTFRJTElCX1NVRkZJWH0iKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwppbmRleCBhOTExZjJhLi5kZGNjZmUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtNDQsNyArNDQsNiBAQAogQ0ZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKIENYWEZMQUdTID0gIiR7QlVJTERfQ1hYRkxBR1N9IgogTERGTEFHUyA9ICIke0JVSUxEX0xERkxBR1N9IgotTERGTEFHU19idWlsZC1kYXJ3aW4gPSAiLUwke1NUQUdJTkdfTElCRElSX05BVElWRX0gIgogCiBTVEFHSU5HX0JJTkRJUiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCiBTVEFHSU5HX0JJTkRJUl9DUk9TUyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCkBAIC03OCw2ICs3Nyw3IEBACiAKIGJpbmRpciA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCiBzYmluZGlyID0gIiR7U1RBR0lOR19TQklORElSX05BVElWRX0iCitiYXNlX2xpYmRpciA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0iCiBsaWJkaXIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IgogaW5jbHVkZWRpciA9ICIke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCiBzeXNjb25mZGlyID0gIiR7U1RBR0lOR19FVENESVJfTkFUSVZFfSIKQEAgLTg5LDYgKzg5LDcgQEAKIAogTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggPz0gIiIKIGJpbmRpciAuPSAiJHtOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWH0iCitiYXNlX2xpYmRpciAuPSAiJHtOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWH0iCiBsaWJkaXIgLj0gIiR7TkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVh9IgogbGliZXhlY2RpciAuPSAiJHtOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWH0iCiAKQEAgLTE1Miw4ICsxNTMsNiBAQAogICAgICAgICAgICAgICAgIG5ld2RlcHMuYXBwZW5kKGRlcCkKICAgICAgICAgZC5zZXRWYXIodmFybmFtZSwgIiAiLmpvaW4obmV3ZGVwcykpCiAKLSAgICBlLmRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBlLmRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1uYXRpdmUiKQotCiAgICAgbWFwX2RlcGVuZGVuY2llcygiREVQRU5EUyIsIGUuZGF0YSkKICAgICBmb3IgcGtnIGluIFtlLmRhdGEuZ2V0VmFyKCJQTiIpLCAiIiwgIiR7UE59Il06CiAgICAgICAgIG1hcF9kZXBlbmRlbmNpZXMoIlJERVBFTkRTIiwgZS5kYXRhLCBwa2cpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCmluZGV4IDY5ZmI0NWMuLmYyNWIwYzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCkBAIC0xMiw2ICsxMiwxMSBAQAogCiBNVUxUSUxJQlMgPSAiIgogCisjIHdlIG5lZWQgY29uc2lzdGVudCBzdGFnaW5nIGRpciB3aGV0aGVyIG9yIG5vdCBtdWx0aWxpYiBpcyBlbmFibGVkCitTVEFHSU5HX0RJUl9IT1NUID0gIiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QiCitTVEFHSU5HX0RJUl9UQVJHRVQgPSAiJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCIKK1JFQ0lQRV9TWVNST09UID0gIiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QiCisKICMKICMgVXBkYXRlIFBBQ0tBR0VfQVJDSCBhbmQgUEFDS0FHRV9BUkNIUwogIwpAQCAtNzgsNyArODMsNiBAQAogCiAgICAgZS5kYXRhLnNldFZhcigiTUxQUkVGSVgiLCAibmF0aXZlc2RrLSIpCiAgICAgZS5kYXRhLnNldFZhcigiUE4iLCAibmF0aXZlc2RrLSIgKyBlLmRhdGEuZ2V0VmFyKCJQTiIpLnJlcGxhY2UoIi1uYXRpdmVzZGsiLCAiIikucmVwbGFjZSgibmF0aXZlc2RrLSIsICIiKSkKLSAgICBlLmRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBlLmRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1uYXRpdmVzZGsiKQogfQogCiBweXRob24gKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwppbmRleCBjMzUxZmYwLi42ZGJhZTZiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9ucG0uYmJjbGFzcwpAQCAtMTAsNyArMTAsNyBAQAogCiBOUE1QTiA/PSAiJHtAbm9kZV9wa2duYW1lKGQpfSIKIAotTlBNX0lOU1RBTExESVIgPSAiJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0iCitOUE1fSU5TVEFMTERJUiA9ICIke2xpYmRpcn0vbm9kZS8ke05QTVBOfSIKIAogIyBmdW5jdGlvbiBtYXBzIGFyY2ggbmFtZXMgdG8gbnBtIGFyY2ggbmFtZXMKIGRlZiBucG1fb2VfYXJjaF9tYXAodGFyZ2V0X2FyY2gsIGQpOgpAQCAtMjIsNyArMjIsNyBAQAogICAgIHJldHVybiB0YXJnZXRfYXJjaAogCiBOUE1fQVJDSCA/PSAiJHtAbnBtX29lX2FyY2hfbWFwKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCi1OUE1fSU5TVEFMTF9ERVYgPSAiMCIKK05QTV9JTlNUQUxMX0RFViA/PSAiMCIKIAogbnBtX2RvX2NvbXBpbGUoKSB7CiAJIyBDb3B5IGluIGFueSBhZGRpdGlvbmFsbHkgZmV0Y2hlZCBtb2R1bGVzCkBAIC01Miw5ICs1MiwxMCBAQAogCSMgY2hhbmdpbmcgdGhlIGhvbWUgZGlyZWN0b3J5IHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdGhlIC5ucG1yYyB3aWxsCiAJIyBiZSBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5CiAJZXhwb3J0IEhPTUU9JHtXT1JLRElSfQotCW1rZGlyIC1wICR7TlBNX0lOU1RBTExESVJ9LworCW1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzCiAJbnBtIHBhY2sgLgogCW5wbSBpbnN0YWxsIC0tcHJlZml4ICR7RH0ke3ByZWZpeH0gLWcgLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkgJHtOUE1QTn0tJHtQVn0udGd6CisJbXYgJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMgJHtEfSR7bGliZGlyfS9ub2RlCiAJaWYgWyAtZCAke0R9JHtwcmVmaXh9L2V0YyBdIDsgdGhlbgogCQkjIFRoaXMgd2lsbCBiZSBlbXB0eQogCQlybWRpciAke0R9JHtwcmVmaXh9L2V0YwpAQCAtNjIsMTMgKzYzLDEzIEBACiB9CiAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBpbnN0ZGlyID0gZC5leHBhbmQoJyR7RH0ke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59JykKKyAgICBpbnN0ZGlyID0gZC5leHBhbmQoJyR7RH0ke05QTV9JTlNUQUxMRElSfScpCiAgICAgZXh0cmFwYWNrYWdlcyA9IG9lLnBhY2thZ2UubnBtX3NwbGl0X3BhY2thZ2VfZGlycyhpbnN0ZGlyKQogICAgIHBrZ25hbWVzID0gZXh0cmFwYWNrYWdlcy5rZXlzKCkKICAgICBkLnByZXBlbmRWYXIoJ1BBQ0tBR0VTJywgJyVzICcgJSAnICcuam9pbihwa2duYW1lcykpCiAgICAgZm9yIHBrZ25hbWUgaW4gcGtnbmFtZXM6CiAgICAgICAgIHBrZ3JlbHBhdGgsIHBkYXRhID0gZXh0cmFwYWNrYWdlc1twa2duYW1lXQotICAgICAgICBwa2dwYXRoID0gJyR7bGliZGlyfS9ub2RlX21vZHVsZXMvJHtOUE1QTn0vJyArIHBrZ3JlbHBhdGgKKyAgICAgICAgcGtncGF0aCA9ICcke05QTV9JTlNUQUxMRElSfS8nICsgcGtncmVscGF0aAogICAgICAgICAjIHBhY2thZ2UgbmFtZXMgY2FuJ3QgaGF2ZSB1bmRlcnNjb3JlcyBidXQgbnBtIHBhY2thZ2VzIHNvbWV0aW1lcyB1c2UgdGhlbQogICAgICAgICBvZV9wa2dfbmFtZSA9IHBrZ25hbWUucmVwbGFjZSgnXycsICctJykKICAgICAgICAgZXhwYW5kZWRfcGtnbmFtZSA9IGQuZXhwYW5kKG9lX3BrZ19uYW1lKQpAQCAtODQsNyArODUsNyBAQAogfQogCiBGSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IFwKKyAgICAke05QTV9JTlNUQUxMRElSfSBcCiAiCiAKIEVYUE9SVF9GVU5DVElPTlMgZG9fY29tcGlsZSBkb19pbnN0YWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggZWRlZmZhOS4uZDFlOTEzOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtNTgsNyArNTgsNyBAQAogCiAjIElmIHlvdXIgcG9zdGluc3RhbGwgY2FuIGV4ZWN1dGUgYXQgcm9vdGZzIGNyZWF0aW9uIHRpbWUgcmF0aGVyIHRoYW4gb24KICMgdGFyZ2V0IGJ1dCBkZXBlbmRzIG9uIGEgbmF0aXZlL2Nyb3NzIHRvb2wgaW4gb3JkZXIgdG8gZXhlY3V0ZSwgeW91IG5lZWQgdG8KLSMgbGlzdCB0aGF0IHRvb2wgaW4gUEFDS0FHRV9XUklURV9ERVBFTkRTLiBUYXJnZXQgcGFja2FnZSBkZXBlbmRlbmNpZXMgYmVsb25nCisjIGxpc3QgdGhhdCB0b29sIGluIFBBQ0tBR0VfV1JJVEVfREVQUy4gVGFyZ2V0IHBhY2thZ2UgZGVwZW5kZW5jaWVzIGJlbG9uZwogIyBpbiB0aGUgcGFja2FnZSBkZXBlbmRlbmNpZXMgYXMgbm9ybWFsLCB0aGlzIGlzIGp1c3QgZm9yIG5hdGl2ZS9jcm9zcyBzdXBwb3J0CiAjIHRvb2xzIGF0IHJvb3RmcyBidWlsZCB0aW1lLgogUEFDS0FHRV9XUklURV9ERVBTID8/PSAiIgpAQCAtMzQ1LDggKzM0NSwxNiBAQAogICAgIHJldHVybiBkZWJ1Z2ZpbGVzLmtleXMoKQogCiBkZWYgYXBwZW5kX3NvdXJjZV9pbmZvKGZpbGUsIHNvdXJjZWZpbGUsIGQsIGZhdGFsPVRydWUpOgotICAgIGNtZCA9ICInZHdhcmZzcmNmaWxlcycgJyVzJyIgJSAoZmlsZSkKLSAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICBpbXBvcnQgc3VicHJvY2VzcworCisgICAgY21kID0gWyJkd2FyZnNyY2ZpbGVzIiwgZmlsZV0KKyAgICB0cnk6CisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgcmV0dmFsID0gMAorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGM6CisgICAgICAgIG91dHB1dCA9IGV4Yy5vdXRwdXQKKyAgICAgICAgcmV0dmFsID0gZXhjLnJldHVybmNvZGUKKwogICAgICMgMjU1IG1lYW5zIGEgc3BlY2lmaWMgZmlsZSB3YXNuJ3QgZnVsbHkgcGFyc2VkIHRvIGdldCB0aGUgZGVidWcgZmlsZSBsaXN0LCB3aGljaCBpcyBub3QgYSBmYXRhbCBmYWlsdXJlCiAgICAgaWYgcmV0dmFsICE9IDAgYW5kIHJldHZhbCAhPSAyNTU6CiAgICAgICAgIG1zZyA9ICJkd2FyZnNyY2ZpbGVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpCkBAIC0zNTksMTAgKzM2NywxMiBAQAogICAgICMgb2YgcnBtJ3MgZGVidWdlZGl0LCB3aGljaCB3YXMgd3JpdGluZyB0aGVtIG91dCB0aGF0IHdheSwgYW5kIHRoZSBjb2RlIGVsc2V3aGVyZQogICAgICMgaXMgc3RpbGwgYXNzdW1pbmcgdGhhdC4KICAgICBkZWJ1Z2xpc3RvdXRwdXQgPSAnXDAnLmpvaW4oZGVidWdzb3VyY2VzKSArICdcMCcKKyAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKHNvdXJjZWZpbGUgKyAiLmxvY2siKQogICAgIG9wZW4oc291cmNlZmlsZSwgJ2EnKS53cml0ZShkZWJ1Z2xpc3RvdXRwdXQpCisgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIAogCi1kZWYgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZGVidWdmaWxlLCBkZWJ1Z3NyY2Rpciwgc291cmNlZmlsZSwgZCk6CitkZWYgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIHNvdXJjZWZpbGUsIGQpOgogICAgICMgRnVuY3Rpb24gdG8gc3BsaXQgYSBzaW5nbGUgZmlsZSBpbnRvIHR3byBjb21wb25lbnRzLCBvbmUgaXMgdGhlIHN0cmlwcGVkCiAgICAgIyB0YXJnZXQgc3lzdGVtIGJpbmFyeSwgdGhlIG90aGVyIGNvbnRhaW5zIGFueSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uIFRoZQogICAgICMgdHdvIGZpbGVzIGFyZSBsaW5rZWQgdG8gcmVmZXJlbmNlIGVhY2ggb3RoZXIuCkBAIC0zNzAsNiArMzgwLDE2IEBACiAgICAgIyBzb3VyY2VmaWxlIGlzIGFsc28gZ2VuZXJhdGVkIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGRlYnVnc291cmNlcwogCiAgICAgaW1wb3J0IHN0YXQKKyAgICBpbXBvcnQgc3VicHJvY2VzcworCisgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQorICAgIGRlc3QgPSBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z2FwcGVuZAorICAgIGRlYnVnZmlsZSA9IGR2YXIgKyBkZXN0CisKKyAgICAjIFNwbGl0IHRoZSBmaWxlLi4uCisgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQorICAgICNiYi5ub3RlKCJTcGxpdCAlcyAtPiAlcyIgJSAoZmlsZSwgZGVidWdmaWxlKSkKKyAgICAjIE9ubHkgc3RvcmUgb2ZmIHRoZSBoYXJkIGxpbmsgcmVmZXJlbmNlIGlmIHdlIHN1Y2Nlc3NmdWxseSBzcGxpdCEKIAogICAgIGR2YXIgPSBkLmdldFZhcignUEtHRCcpCiAgICAgb2JqY29weSA9IGQuZ2V0VmFyKCJPQkpDT1BZIikKQEAgLTM5MCwxNiArNDEwLDEwIEBACiAKICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCiAKLSAgICBjbWQgPSAiJyVzJyAtLW9ubHkta2VlcC1kZWJ1ZyAnJXMnICclcyciICUgKG9iamNvcHksIGZpbGUsIGRlYnVnZmlsZSkKLSAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICBpZiByZXR2YWw6Ci0gICAgICAgIGJiLmZhdGFsKCJvYmpjb3B5IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtvYmpjb3B5LCAnLS1vbmx5LWtlZXAtZGVidWcnLCBmaWxlLCBkZWJ1Z2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAjIFNldCB0aGUgZGVidWdsaW5rIHRvIGhhdmUgdGhlIHZpZXcgb2YgdGhlIGZpbGUgcGF0aCBvbiB0aGUgdGFyZ2V0Ci0gICAgY21kID0gIiclcycgLS1hZGQtZ251LWRlYnVnbGluaz0nJXMnICclcyciICUgKG9iamNvcHksIGRlYnVnZmlsZSwgZmlsZSkKLSAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICBpZiByZXR2YWw6Ci0gICAgICAgIGJiLmZhdGFsKCJvYmpjb3B5IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtvYmpjb3B5LCAnLS1hZGQtZ251LWRlYnVnbGluaycsIGRlYnVnZmlsZSwgZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgIGlmIG5ld21vZGU6CiAgICAgICAgIG9zLmNobW9kKGZpbGUsIG9yaWdtb2RlKQpAQCAtNDExLDYgKzQyNSw3IEBACiAgICAgIyBhbmQgY29waWVkIHRvIHRoZSBkZXN0aW5hdGlvbiBoZXJlLgogCiAgICAgaW1wb3J0IHN0YXQKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogCiAgICAgc291cmNlZmlsZSA9IGQuZXhwYW5kKCIke1dPUktESVJ9L2RlYnVnc291cmNlcy5saXN0IikKICAgICBpZiBkZWJ1Z3NyY2RpciBhbmQgb3MucGF0aC5pc2ZpbGUoc291cmNlZmlsZSk6CkBAIC00NDcsMjMgKzQ2MiwyMCBAQAogICAgICAgICBwcm9jZXNzZGVidWdzcmMgKz0gIihjZCAnJXMnIDsgY3BpbyAtcGQwbWxMIC0tbm8tcHJlc2VydmUtb3duZXIgJyVzJXMnIDI+L2Rldi9udWxsKSIKIAogICAgICAgICBjbWQgPSBwcm9jZXNzZGVidWdzcmMgJSAoc291cmNlZmlsZSwgd29ya2Jhc2VkaXIsIGxvY2Fsc3JjX3ByZWZpeCwgd29ya3BhcmVudGRpciwgZHZhciwgZGVidWdzcmNkaXIpCi0gICAgICAgIChyZXR2YWwsIG91dHB1dCkgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kKQotICAgICAgICAjIENhbiAiZmFpbCIgaWYgaW50ZXJuYWwgaGVhZGVycy90cmFuc2llbnQgc291cmNlcyBhcmUgYXR0ZW1wdGVkCi0gICAgICAgICNpZiByZXR2YWw6Ci0gICAgICAgICMgICAgYmIuZmF0YWwoImRlYnVnIHNvdXJjZSBjb3B5IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcykiICUgKHJldHZhbCwgY21kKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICMgQ2FuICJmYWlsIiBpZiBpbnRlcm5hbCBoZWFkZXJzL3RyYW5zaWVudCBzb3VyY2VzIGFyZSBhdHRlbXB0ZWQKKyAgICAgICAgICAgIHBhc3MKIAogICAgICAgICAjIGNwaW8gc2VlbXMgdG8gaGF2ZSBhIGJ1ZyB3aXRoIC1sTCB0b2dldGhlciBhbmQgc3ltYm9saWMgbGlua3MgYXJlIGp1c3QgY29waWVkLCBub3QgZGVyZWZlcmVuY2VkLgogICAgICAgICAjIFdvcmsgYXJvdW5kIHRoaXMgYnkgbWFudWFsbHkgZmluZGluZyBhbmQgY29weWluZyBhbnkgc3ltYm9saWMgbGlua3MgdGhhdCBtYWRlIGl0IHRocm91Z2guCiAgICAgICAgIGNtZCA9ICJmaW5kICVzJXMgLXR5cGUgbCAtcHJpbnQwIC1kZWxldGUgfCBzZWQgcyMlcyVzLyMjZyB8IChjZCAnJXMnIDsgY3BpbyAtcGQwbUwgLS1uby1wcmVzZXJ2ZS1vd25lciAnJXMlcycgMj4vZGV2L251bGwpIiAlIChkdmFyLCBkZWJ1Z3NyY2RpciwgZHZhciwgZGVidWdzcmNkaXIsIHdvcmtwYXJlbnRkaXIsIGR2YXIsIGRlYnVnc3JjZGlyKQotICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICAgICAgaWYgcmV0dmFsOgotICAgICAgICAgICAgYmIuZmF0YWwoImRlYnVnc3JjIHN5bWxpbmsgZml4dXAgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVzIChjbWQgd2FzICVzKSIgJSAocmV0dmFsLCBjbWQpKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgICAgICAjIFRoZSBjb3B5IGJ5IGNwaW8gbWF5IGhhdmUgcmVzdWx0ZWQgaW4gc29tZSBlbXB0eSBkaXJlY3RvcmllcyEgIFJlbW92ZSB0aGVzZQogICAgICAgICBjbWQgPSAiZmluZCAlcyVzIC1lbXB0eSAtdHlwZSBkIC1kZWxldGUiICUgKGR2YXIsIGRlYnVnc3JjZGlyKQotICAgICAgICAocmV0dmFsLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKLSAgICAgICAgaWYgcmV0dmFsOgotICAgICAgICAgICAgYmIuZmF0YWwoImVtcHR5IGRpcmVjdG9yeSByZW1vdmFsIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyAoY21kIHdhcyAlcyklcyIgJSAocmV0dmFsLCBjbWQsICI6XG4lcyIgJSBvdXRwdXQgaWYgb3V0cHV0IGVsc2UgIiIpKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgICAgICAjIEFsc28gcmVtb3ZlIGRlYnVnc3JjZGlyIGlmIGl0cyBlbXB0eQogICAgICAgICBmb3IgcCBpbiBub3N1Y2hkaXJbOjotMV06CkBAIC00ODIsNyArNDk0LDggQEAKIAogICAgIGlmIGtleSBpbiBkYXRhOgogICAgICAgICAjIEhhdmUgdG8gYXZvaWQgdW5kb2luZyB0aGUgd3JpdGVfZXh0cmFfcGtncyhnbG9iYWxfdmFyaWFudHMuLi4pCi0gICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKSBhbmQgZGF0YVtrZXldID09IGJhc2Vwa2c6CisgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKSBhbmQgbm90IGQuZ2V0VmFyKCdNVUxUSUxJQl9WQVJJQU5UUycpIFwKKyAgICAgICAgICAgIGFuZCBkYXRhW2tleV0gPT0gYmFzZXBrZzoKICAgICAgICAgICAgIHJldHVybiBwa2cKICAgICAgICAgcmV0dXJuIGRhdGFba2V5XQogCkBAIC02MjQsMTYgKzYzNywxNiBAQAogfQogCiBweXRob24gcGVyZm9ybV9wYWNrYWdlY29weSAoKSB7CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKwogICAgIGRlc3QgPSBkLmdldFZhcignRCcpCiAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKIAogICAgICMgU3RhcnQgYnkgcGFja2FnZSBwb3B1bGF0aW9uIGJ5IHRha2luZyBhIGNvcHkgb2YgdGhlIGluc3RhbGxlZAogICAgICMgZmlsZXMgdG8gb3BlcmF0ZSBvbgogICAgICMgUHJlc2VydmUgc3BhcnNlIGZpbGVzIGFuZCBoYXJkIGxpbmtzCi0gICAgY21kID0gJ3RhciAtY2YgLSAtQyAlcyAtcCAuIHwgdGFyIC14ZiAtIC1DICVzJyAlIChkZXN0LCBkdmFyKQotICAgIChyZXR2YWwsIG91dHB1dCkgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kKQotICAgIGlmIHJldHZhbDoKLSAgICAgICAgYmIuZmF0YWwoImZpbGUgY29weSBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXMgKGNtZCB3YXMgJXMpJXMiICUgKHJldHZhbCwgY21kLCAiOlxuJXMiICUgb3V0cHV0IGlmIG91dHB1dCBlbHNlICIiKSkKKyAgICBjbWQgPSAndGFyIC1jZiAtIC1DICVzIC1wIC1TIC4gfCB0YXIgLXhmIC0gLUMgJXMnICUgKGRlc3QsIGR2YXIpCisgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKICAgICAjIHJlcGxhY2UgUlBBVEhzIGZvciB0aGUgbmF0aXZlc2RrIGJpbmFyaWVzLCB0byBtYWtlIHRoZW0gcmVsb2NhdGFibGUKICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zcy1jYW5hZGlhbicsIGQpOgpAQCAtNzYyLDcgKzc3NSwxMSBAQAogICAgICAgICBiYnBhdGggPSBkLmdldFZhcignQkJQQVRIJykKICAgICAgICAgZnNfcGVybXNfdGFibGVzID0gZC5nZXRWYXIoJ0ZJTEVTWVNURU1fUEVSTVNfVEFCTEVTJykgb3IgIiIKICAgICAgICAgZm9yIGNvbmZfZmlsZSBpbiBmc19wZXJtc190YWJsZXMuc3BsaXQoKToKLSAgICAgICAgICAgIHN0ciArPSAiICVzIiAlIGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKQorICAgICAgICAgICAgY29uZnBhdGggPSBiYi51dGlscy53aGljaChiYnBhdGgsIGNvbmZfZmlsZSkKKyAgICAgICAgICAgIGlmIGNvbmZwYXRoOgorICAgICAgICAgICAgICAgIHN0ciArPSAiICVzIiAlIGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBiYi53YXJuKCJjYW5ub3QgZmluZCAlcyBzcGVjaWZpZWQgaW4gRklMRVNZU1RFTV9QRVJNU19UQUJMRVMiICUgY29uZl9maWxlKQogICAgICAgICByZXR1cm4gc3RyCiAKIApAQCAtODgwLDYgKzg5Nyw3IEBACiAKIHB5dGhvbiBzcGxpdF9hbmRfc3RyaXBfZmlsZXMgKCkgewogICAgIGltcG9ydCBzdGF0LCBlcnJubworICAgIGltcG9ydCBzdWJwcm9jZXNzCiAKICAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKQEAgLTkxNiw0MyArOTM0LDYgQEAKICAgICBzb3VyY2VmaWxlID0gZC5leHBhbmQoIiR7V09SS0RJUn0vZGVidWdzb3VyY2VzLmxpc3QiKQogICAgIGJiLnV0aWxzLnJlbW92ZShzb3VyY2VmaWxlKQogCi0gICAgIyBSZXR1cm4gdHlwZSAoYml0cyk6Ci0gICAgIyAwIC0gbm90IGVsZgotICAgICMgMSAtIEVMRgotICAgICMgMiAtIHN0cmlwcGVkCi0gICAgIyA0IC0gZXhlY3V0YWJsZQotICAgICMgOCAtIHNoYXJlZCBsaWJyYXJ5Ci0gICAgIyAxNiAtIGtlcm5lbCBtb2R1bGUKLSAgICBkZWYgaXNFTEYocGF0aCk6Ci0gICAgICAgIHR5cGUgPSAwCi0gICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KCJmaWxlIC1iICclcyciICUgcGF0aCkKLQotICAgICAgICBpZiByZXQ6Ci0gICAgICAgICAgICBtc2cgPSAic3BsaXRfYW5kX3N0cmlwX2ZpbGVzOiAnZmlsZSAlcycgZmFpbGVkIiAlIHBhdGgKLSAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJzcGxpdC1zdHJpcCIsIG1zZywgZCkKLSAgICAgICAgICAgIHJldHVybiB0eXBlCi0KLSAgICAgICAgIyBOb3Qgc3RyaXBwZWQKLSAgICAgICAgaWYgIkVMRiIgaW4gcmVzdWx0OgotICAgICAgICAgICAgdHlwZSB8PSAxCi0gICAgICAgICAgICBpZiAibm90IHN0cmlwcGVkIiBub3QgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIHR5cGUgfD0gMgotICAgICAgICAgICAgaWYgImV4ZWN1dGFibGUiIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDQKLSAgICAgICAgICAgIGlmICJzaGFyZWQiIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDgKLSAgICAgICAgcmV0dXJuIHR5cGUKLQotICAgIGRlZiBpc1N0YXRpY0xpYihwYXRoKToKLSAgICAgICAgaWYgcGF0aC5lbmRzd2l0aCgnLmEnKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZoOgotICAgICAgICAgICAgICAgICMgVGhlIG1hZ2ljIG11c3QgaW5jbHVkZSB0aGUgZmlyc3Qgc2xhc2ggdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAjIG1hdGNoaW5nIGdvbGFuZyBzdGF0aWMgbGlicmFyaWVzCi0gICAgICAgICAgICAgICAgbWFnaWMgPSBiJyE8YXJjaD5ceDBhLycKLSAgICAgICAgICAgICAgICBzdGFydCA9IGZoLnJlYWQobGVuKG1hZ2ljKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gbWFnaWMKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KICAgICAjCiAgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzIC4uLiBkbyB0aGlzIG9ubHkgb25jZSEKICAgICAjCkBAIC05NjYsMTMgKzk0NywxNSBAQAogICAgIHNraXBmaWxlcyA9IChkLmdldFZhcigiSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTIikgb3IgIiIpLnNwbGl0KCkKICAgICBpZiAoZC5nZXRWYXIoJ0lOSElCSVRfUEFDS0FHRV9TVFJJUCcpICE9ICcxJyBvciBcCiAgICAgICAgICAgICBkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUJykgIT0gJzEnKToKKyAgICAgICAgY2hlY2tlbGYgPSB7fQorICAgICAgICBjaGVja2VsZmxpbmtzID0ge30KICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIGNwYXRoLndhbGsoZHZhcik6CiAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKICAgICAgICAgICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCiAgICAgICAgICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgiLmtvIikgYW5kIGZpbGUuZmluZCgiL2xpYi9tb2R1bGVzLyIpICE9IC0xOgogICAgICAgICAgICAgICAgICAgICBrZXJubW9kcy5hcHBlbmQoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBpc1N0YXRpY0xpYihmaWxlKToKKyAgICAgICAgICAgICAgICBpZiBvZS5wYWNrYWdlLmlzX3N0YXRpY19saWIoZmlsZSk6CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpY2xpYnMuYXBwZW5kKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKQEAgLTk5OSw1OSArOTgyLDYzIEBACiAgICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhlY3V0YWJsZQogICAgICAgICAgICAgICAgIGlmIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhVU1IpIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhHUlApIG9yIChzW3N0YXQuU1RfTU9ERV0gJiBzdGF0LlNfSVhPVEgpIFwKICAgICAgICAgICAgICAgICAgICAgICAgIG9yICgoZmlsZS5zdGFydHN3aXRoKGxpYmRpcikgb3IgZmlsZS5zdGFydHN3aXRoKGJhc2VsaWJkaXIpKSBhbmQgKCIuc28iIGluIGYgb3IgIi5ub2RlIiBpbiBmKSk6Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgaXQncyBhIHN5bWxpbmssIGFuZCBwb2ludHMgdG8gYW4gRUxGIGZpbGUsIHdlIGNhcHR1cmUgdGhlIHJlYWRsaW5rIHRhcmdldAorCiAgICAgICAgICAgICAgICAgICAgIGlmIGNwYXRoLmlzbGluayhmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IG9zLnJlYWRsaW5rKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc0VMRihsdGFyZ2V0KToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYmIubm90ZSgiU3ltOiAlcyAoJWQpIiAlIChsdGFyZ2V0LCBpc0VMRihsdGFyZ2V0KSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3NbZmlsZV0gPSB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWxmbGlua3NbZmlsZV0gPSBsdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAjIFVzZSBhIHJlZmVyZW5jZSBvZiBkZXZpY2UgSUQgYW5kIGlub2RlIG51bWJlciB0byBpZGVudGlmeSBmaWxlcworICAgICAgICAgICAgICAgICAgICBmaWxlX3JlZmVyZW5jZSA9ICIlZF8lZCIgJSAocy5zdF9kZXYsIHMuc3RfaW5vKQorICAgICAgICAgICAgICAgICAgICBjaGVja2VsZltmaWxlXSA9IChmaWxlLCBmaWxlX3JlZmVyZW5jZSkKIAotICAgICAgICAgICAgICAgICAgICAjIEl0J3MgYSBmaWxlIChvciBoYXJkbGluayksIG5vdCBhIGxpbmsKLSAgICAgICAgICAgICAgICAgICAgIyAuLi5idXQgaXMgaXQgRUxGLCBhbmQgaXMgaXQgYWxyZWFkeSBzdHJpcHBlZD8KLSAgICAgICAgICAgICAgICAgICAgZWxmX2ZpbGUgPSBpc0VMRihmaWxlKQotICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiU2tpcHBpbmcgZmlsZSAlcyBmcm9tICVzIGZvciBhbHJlYWR5LXN0cmlwcGVkIFFBIHRlc3QiICUgKGZpbGVbbGVuKGR2YXIpOl0sIHBuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmlsZSAnJXMnIGZyb20gJXMgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchIiAlIChmaWxlW2xlbihkdmFyKTpdLCBwbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImFscmVhZHktc3RyaXBwZWQiLCBtc2csIGQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmVzdWx0cyA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2gob2UucGFja2FnZS5pc19lbGYsIGNoZWNrZWxmbGlua3MudmFsdWVzKCksIGQpCisgICAgICAgIHJlc3VsdHNfbWFwID0ge30KKyAgICAgICAgZm9yIChsdGFyZ2V0LCBlbGZfZmlsZSkgaW4gcmVzdWx0czoKKyAgICAgICAgICAgIHJlc3VsdHNfbWFwW2x0YXJnZXRdID0gZWxmX2ZpbGUKKyAgICAgICAgZm9yIGZpbGUgaW4gY2hlY2tlbGZsaW5rczoKKyAgICAgICAgICAgIGx0YXJnZXQgPSBjaGVja2VsZmxpbmtzW2ZpbGVdCisgICAgICAgICAgICAjIElmIGl0J3MgYSBzeW1saW5rLCBhbmQgcG9pbnRzIHRvIGFuIEVMRiBmaWxlLCB3ZSBjYXB0dXJlIHRoZSByZWFkbGluayB0YXJnZXQKKyAgICAgICAgICAgIGlmIHJlc3VsdHNfbWFwW2x0YXJnZXRdOgorICAgICAgICAgICAgICAgIHRhcmdldCA9IG9zLnJlYWRsaW5rKGZpbGUpCisgICAgICAgICAgICAgICAgI2JiLm5vdGUoIlN5bTogJXMgKCVkKSIgJSAobHRhcmdldCwgcmVzdWx0c19tYXBbbHRhcmdldF0pKQorICAgICAgICAgICAgICAgIHN5bWxpbmtzW2ZpbGVdID0gdGFyZ2V0CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFuIHVuc3RyaXBwZWQgZWxmIGZpbGUuIFdlIG5lZWQgdG86Ci0gICAgICAgICAgICAgICAgICAgICAgICAjICBhKSBNYWtlIHN1cmUgYW55IGZpbGUgd2Ugc3RyaXAgaXMgbm90IGhhcmRsaW5rZWQgdG8gYW55dGhpbmcgZWxzZSBvdXRzaWRlIHRoaXMgdHJlZQotICAgICAgICAgICAgICAgICAgICAgICAgIyAgYikgT25seSBzdHJpcCBhbnkgaGFyZGxpbmtlZCBmaWxlIG9uY2UgKG5vIHJhY2VzKQotICAgICAgICAgICAgICAgICAgICAgICAgIyAgYykgVHJhY2sgYW55IGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIHNvIHRoYXQgd2UgY2FuIHJlY29uc3RydWN0IG1hdGNoaW5nIGRlYnVnIGZpbGUgaGFyZGxpbmtzCisgICAgICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKG9lLnBhY2thZ2UuaXNfZWxmLCBjaGVja2VsZi5rZXlzKCksIGQpCisgICAgICAgIGZvciAoZmlsZSwgZWxmX2ZpbGUpIGluIHJlc3VsdHM6CisgICAgICAgICAgICAjIEl0J3MgYSBmaWxlIChvciBoYXJkbGluayksIG5vdCBhIGxpbmsKKyAgICAgICAgICAgICMgLi4uYnV0IGlzIGl0IEVMRiwgYW5kIGlzIGl0IGFscmVhZHkgc3RyaXBwZWQ/CisgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDE6CisgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAyOgorICAgICAgICAgICAgICAgICAgICBpZiAnYWxyZWFkeS1zdHJpcHBlZCcgaW4gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcG4pIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiU2tpcHBpbmcgZmlsZSAlcyBmcm9tICVzIGZvciBhbHJlYWR5LXN0cmlwcGVkIFFBIHRlc3QiICUgKGZpbGVbbGVuKGR2YXIpOl0sIHBuKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJGaWxlICclcycgZnJvbSAlcyB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEiICUgKGZpbGVbbGVuKGR2YXIpOl0sIHBuKQorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImFscmVhZHktc3RyaXBwZWQiLCBtc2csIGQpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlIGEgcmVmZXJlbmNlIG9mIGRldmljZSBJRCBhbmQgaW5vZGUgbnVtYmVyIHRvIGlkZW50aWZ5IGZpbGVzCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3JlZmVyZW5jZSA9ICIlZF8lZCIgJSAocy5zdF9kZXYsIHMuc3RfaW5vKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsZV9yZWZlcmVuY2UgaW4gaW5vZGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXVswXSwgZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZXNbZmlsZV9yZWZlcmVuY2VdLmFwcGVuZChmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZXNbZmlsZV9yZWZlcmVuY2VdID0gW2ZpbGVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBoYXJkbGluawotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGZpbGUsIGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxmZmlsZXNbZmlsZV0gPSBlbGZfZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBNb2RpZmllZCB0aGUgZmlsZSBzbyBjbGVhciB0aGUgY2FjaGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNwYXRoLnVwZGF0ZWNhY2hlKGZpbGUpCisgICAgICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYW4gdW5zdHJpcHBlZCBlbGYgZmlsZS4gV2UgbmVlZCB0bzoKKyAgICAgICAgICAgICAgICAjICBhKSBNYWtlIHN1cmUgYW55IGZpbGUgd2Ugc3RyaXAgaXMgbm90IGhhcmRsaW5rZWQgdG8gYW55dGhpbmcgZWxzZSBvdXRzaWRlIHRoaXMgdHJlZQorICAgICAgICAgICAgICAgICMgIGIpIE9ubHkgc3RyaXAgYW55IGhhcmRsaW5rZWQgZmlsZSBvbmNlIChubyByYWNlcykKKyAgICAgICAgICAgICAgICAjICBjKSBUcmFjayBhbnkgaGFyZGxpbmtzIGJldHdlZW4gZmlsZXMgc28gdGhhdCB3ZSBjYW4gcmVjb25zdHJ1Y3QgbWF0Y2hpbmcgZGVidWcgZmlsZSBoYXJkbGlua3MKKworICAgICAgICAgICAgICAgICMgVXNlIGEgcmVmZXJlbmNlIG9mIGRldmljZSBJRCBhbmQgaW5vZGUgbnVtYmVyIHRvIGlkZW50aWZ5IGZpbGVzCisgICAgICAgICAgICAgICAgZmlsZV9yZWZlcmVuY2UgPSBjaGVja2VsZltmaWxlXVsxXQorICAgICAgICAgICAgICAgIGlmIGZpbGVfcmVmZXJlbmNlIGluIGlub2RlczoKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXVswXSwgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgaW5vZGVzW2ZpbGVfcmVmZXJlbmNlXS5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpbm9kZXNbZmlsZV9yZWZlcmVuY2VdID0gW2ZpbGVdCisgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgaGFyZGxpbmsKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuYnJlYWtfaGFyZGxpbmtzKGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGVsZmZpbGVzW2ZpbGVdID0gZWxmX2ZpbGUKKyAgICAgICAgICAgICAgICAjIE1vZGlmaWVkIHRoZSBmaWxlIHNvIGNsZWFyIHRoZSBjYWNoZQorICAgICAgICAgICAgICAgIGNwYXRoLnVwZGF0ZWNhY2hlKGZpbGUpCiAKICAgICAjCiAgICAgIyBGaXJzdCBsZXRzIHByb2Nlc3MgZGVidWcgc3BsaXR0aW5nCiAgICAgIwogICAgIGlmIChkLmdldFZhcignSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUJykgIT0gJzEnKToKLSAgICAgICAgZm9yIGZpbGUgaW4gZWxmZmlsZXM6Ci0gICAgICAgICAgICBzcmMgPSBmaWxlW2xlbihkdmFyKTpdCi0gICAgICAgICAgICBkZXN0ID0gZGVidWdsaWJkaXIgKyBvcy5wYXRoLmRpcm5hbWUoc3JjKSArIGRlYnVnZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFtZShzcmMpICsgZGVidWdhcHBlbmQKLSAgICAgICAgICAgIGZwYXRoID0gZHZhciArIGRlc3QKLQotICAgICAgICAgICAgIyBTcGxpdCB0aGUgZmlsZS4uLgotICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShmcGF0aCkpCi0gICAgICAgICAgICAjYmIubm90ZSgiU3BsaXQgJXMgLT4gJXMiICUgKGZpbGUsIGZwYXRoKSkKLSAgICAgICAgICAgICMgT25seSBzdG9yZSBvZmYgdGhlIGhhcmQgbGluayByZWZlcmVuY2UgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHNwbGl0IQotICAgICAgICAgICAgc3BsaXRkZWJ1Z2luZm8oZmlsZSwgZnBhdGgsIGRlYnVnc3JjZGlyLCBzb3VyY2VmaWxlLCBkKQorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKHNwbGl0ZGVidWdpbmZvLCBsaXN0KGVsZmZpbGVzKSwgZCwgZXh0cmFhcmdzPShkdmFyLCBkZWJ1Z2RpciwgZGVidWdsaWJkaXIsIGRlYnVnYXBwZW5kLCBkZWJ1Z3NyY2Rpciwgc291cmNlZmlsZSwgZCkpCiAKICAgICAgICAgaWYgZGVidWdzcmNkaXIgYW5kIG5vdCB0YXJnZXRvcy5zdGFydHN3aXRoKCJtaW5ndyIpOgogICAgICAgICAgICAgZm9yIGZpbGUgaW4gc3RhdGljbGliczoKQEAgLTEwNjEsMTUgKzEwNDgsMTggQEAKICAgICAgICAgZm9yIHJlZiBpbiBpbm9kZXM6CiAgICAgICAgICAgICBpZiBsZW4oaW5vZGVzW3JlZl0pID09IDE6CiAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdGFyZ2V0ID0gaW5vZGVzW3JlZl1bMF1bbGVuKGR2YXIpOl0KICAgICAgICAgICAgIGZvciBmaWxlIGluIGlub2Rlc1tyZWZdWzE6XToKICAgICAgICAgICAgICAgICBzcmMgPSBmaWxlW2xlbihkdmFyKTpdCi0gICAgICAgICAgICAgICAgZGVzdCA9IGRlYnVnbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUoc3JjKSArIGRlYnVnYXBwZW5kCisgICAgICAgICAgICAgICAgZGVzdCA9IGRlYnVnbGliZGlyICsgb3MucGF0aC5kaXJuYW1lKHNyYykgKyBkZWJ1Z2RpciArICIvIiArIG9zLnBhdGguYmFzZW5hbWUodGFyZ2V0KSArIGRlYnVnYXBwZW5kCiAgICAgICAgICAgICAgICAgZnBhdGggPSBkdmFyICsgZGVzdAotICAgICAgICAgICAgICAgIHRhcmdldCA9IGlub2Rlc1tyZWZdWzBdW2xlbihkdmFyKTpdCiAgICAgICAgICAgICAgICAgZnRhcmdldCA9IGR2YXIgKyBkZWJ1Z2xpYmRpciArIG9zLnBhdGguZGlybmFtZSh0YXJnZXQpICsgZGVidWdkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHRhcmdldCkgKyBkZWJ1Z2FwcGVuZAogICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoZnBhdGgpKQotICAgICAgICAgICAgICAgICNiYi5ub3RlKCJMaW5rICVzIC0+ICVzIiAlIChmcGF0aCwgZnRhcmdldCkpCi0gICAgICAgICAgICAgICAgb3MubGluayhmdGFyZ2V0LCBmcGF0aCkKKyAgICAgICAgICAgICAgICAjIE9ubHkgb25lIGhhcmRsaW5rIG9mIHNlcGFyYXRlZCBkZWJ1ZyBpbmZvIGZpbGUgaW4gZWFjaCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKGZwYXRoLCBvcy5SX09LKToKKyAgICAgICAgICAgICAgICAgICAgI2JiLm5vdGUoIkxpbmsgJXMgLT4gJXMiICUgKGZwYXRoLCBmdGFyZ2V0KSkKKyAgICAgICAgICAgICAgICAgICAgb3MubGluayhmdGFyZ2V0LCBmcGF0aCkKIAogICAgICAgICAjIENyZWF0ZSBzeW1saW5rcyBmb3IgYWxsIGNhc2VzIHdlIHdlcmUgYWJsZSB0byBzcGxpdCBzeW1ib2xzCiAgICAgICAgIGZvciBmaWxlIGluIHN5bWxpbmtzOgpAQCAtMTExOCw3ICsxMTA4LDcgQEAKICAgICAgICAgZm9yIGYgaW4ga2Vybm1vZHM6CiAgICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmLCAxNiwgc3RyaXApKQogCi0gICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKHNmaWxlcywgb2UucGFja2FnZS5ydW5zdHJpcCkKKyAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChvZS5wYWNrYWdlLnJ1bnN0cmlwLCBzZmlsZXMsIGQpCiAKICAgICAjCiAgICAgIyBFbmQgb2Ygc3RyaXAKQEAgLTExNTEsMjEgKzExNDEsMjIgQEAKIAogICAgICMgU2FuaXR5IGNoZWNrIFBBQ0tBR0VTIGZvciBkdXBsaWNhdGVzCiAgICAgIyBTYW5pdHkgc2hvdWxkIGJlIG1vdmVkIHRvIHNhbml0eS5iYmNsYXNzIG9uY2Ugd2UgaGF2ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUKLSAgICBwYWNrYWdlX2xpc3QgPSBbXQorICAgIHBhY2thZ2VfZGljdCA9IHt9CiAKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6Ci0gICAgICAgIGlmIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CisgICAgZm9yIGksIHBrZyBpbiBlbnVtZXJhdGUocGFja2FnZXMuc3BsaXQoKSk6CisgICAgICAgIGlmIHBrZyBpbiBwYWNrYWdlX2RpY3Q6CiAgICAgICAgICAgICBtc2cgPSAiJXMgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIiAlIHBrZwogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBhY2thZ2VzLWxpc3QiLCBtc2csIGQpCiAgICAgICAgICMgSWYgZGVidWctd2l0aC1zcmNwa2cgbW9kZSBpcyBlbmFibGVkIHRoZW4gdGhlIHNyYyBwYWNrYWdlIHdpbGwgaGF2ZQogICAgICAgICAjIHByaW9yaXR5IG92ZXIgZGJnIHBhY2thZ2Ugd2hlbiBhc3NpZ25pbmcgdGhlIGZpbGVzLgogICAgICAgICAjIFRoaXMgYWxsb3dzIHNyYyBwYWNrYWdlIHRvIGluY2x1ZGUgc291cmNlIGZpbGVzIGFuZCByZW1vdmUgdGhlbSBmcm9tIGRiZy4KICAgICAgICAgZWxpZiBzcGxpdF9zb3VyY2VfcGFja2FnZSBhbmQgcGtnLmVuZHN3aXRoKCItc3JjIik6Ci0gICAgICAgICAgICBwYWNrYWdlX2xpc3QuaW5zZXJ0KDAsIHBrZykKLSAgICAgICAgZWxpZiBhdXRvZGVidWcgYW5kIHBrZy5lbmRzd2l0aCgiLWRiZyIpIGFuZCBub3Qgc3BsaXRfc291cmNlX3BhY2thZ2U6Ci0gICAgICAgICAgICBwYWNrYWdlX2xpc3QuaW5zZXJ0KDAsIHBrZykKKyAgICAgICAgICAgIHBhY2thZ2VfZGljdFtwa2ddID0gKDEwLCBpKQorICAgICAgICBlbGlmIGF1dG9kZWJ1ZyBhbmQgcGtnLmVuZHN3aXRoKCItZGJnIik6CisgICAgICAgICAgICBwYWNrYWdlX2RpY3RbcGtnXSA9ICgzMCwgaSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhY2thZ2VfbGlzdC5hcHBlbmQocGtnKQorICAgICAgICAgICAgcGFja2FnZV9kaWN0W3BrZ10gPSAoNTAsIGkpCisgICAgcGFja2FnZV9saXN0ID0gc29ydGVkKHBhY2thZ2VfZGljdC5rZXlzKCksIGtleT1wYWNrYWdlX2RpY3QuZ2V0KQogICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VfbGlzdCkpCiAgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKIApAQCAtMTQxMSw5ICsxNDAyLDYgQEAKICAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQogICAgIHBrZ2RhdGFkaXIgPSBkLmdldFZhcignUEtHREVTVFdPUksnKQogCi0gICAgIyBUYWtlIHNoYXJlZCBsb2NrIHNpbmNlIHdlJ3JlIG9ubHkgcmVhZGluZywgbm90IHdyaXRpbmcKLSAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGQuZXhwYW5kKCIke1BBQ0tBR0VMT0NLfSIpLCBUcnVlKQotCiAgICAgZGF0YV9maWxlID0gcGtnZGF0YWRpciArIGQuZXhwYW5kKCIvJHtQTn0iICkKICAgICBmID0gb3BlbihkYXRhX2ZpbGUsICd3JykKICAgICBmLndyaXRlKCJQQUNLQUdFUzogJXNcbiIgJSBwYWNrYWdlcykKQEAgLTE0MjYsNyArMTQxNCw4IEBACiAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbW9kdWxlLWJhc2UnLCBkKToKICAgICAgICAgd3JpdGVfZXh0cmFfcGtncyh2YXJpYW50cywgcG4sIHBhY2thZ2VzLCBwa2dkYXRhZGlyKQogCi0gICAgaWYgKGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2FsbGFyY2gnLCBkKSBhbmQgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3BhY2thZ2Vncm91cCcsIGQpKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCB2YXJpYW50cyBcCisgICAgICAgIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZCk6CiAgICAgICAgIHdyaXRlX2V4dHJhX3BrZ3MoZ2xvYmFsX3ZhcmlhbnRzLCBwbiwgcGFja2FnZXMsIHBrZ2RhdGFkaXIpCiAKICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQpAQCAtMTUxNSwxMCArMTUwNCwxMCBAQAogICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ21vZHVsZS1iYXNlJywgZCk6CiAgICAgICAgIHdyaXRlX2V4dHJhX3J1bnRpbWVfcGtncyh2YXJpYW50cywgcGFja2FnZXMsIHBrZ2RhdGFkaXIpCiAKLSAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZ3JvdXAnLCBkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCB2YXJpYW50cyBcCisgICAgICAgIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZCk6CiAgICAgICAgIHdyaXRlX2V4dHJhX3J1bnRpbWVfcGtncyhnbG9iYWxfdmFyaWFudHMsIHBhY2thZ2VzLCBwa2dkYXRhZGlyKQogCi0gICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIH0KIGVtaXRfcGtnZGF0YVtkaXJzXSA9ICIke1BLR0RFU1RXT1JLfS9ydW50aW1lICR7UEtHREVTVFdPUkt9L3J1bnRpbWUtcmV2ZXJzZSAke1BLR0RFU1RXT1JLfS9ydW50aW1lLXJwcm92aWRlcyIKIApAQCAtMTU1OCw3ICsxNTQ3LDcgQEAKICAgICAgICAgZm9yIGZpbGVzIGluIGNodW5rcyhwa2dmaWxlc1twa2ddLCAxMDApOgogICAgICAgICAgICAgcGtnbGlzdC5hcHBlbmQoKHBrZywgZmlsZXMsIHJwbWRlcHMsIHBrZ2Rlc3QpKQogCi0gICAgcHJvY2Vzc2VkID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoIHBrZ2xpc3QsIG9lLnBhY2thZ2UuZmlsZWRlcHJ1bm5lcikKKyAgICBwcm9jZXNzZWQgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKG9lLnBhY2thZ2UuZmlsZWRlcHJ1bm5lciwgcGtnbGlzdCwgZCkKIAogICAgIHByb3ZpZGVzX2ZpbGVzID0ge30KICAgICByZXF1aXJlc19maWxlcyA9IHt9CkBAIC0xNTc0LDEyICsxNTYzLDEyIEBACiAgICAgICAgIGZvciBmaWxlIGluIHByb3ZpZGVzOgogICAgICAgICAgICAgcHJvdmlkZXNfZmlsZXNbcGtnXS5hcHBlbmQoZmlsZSkKICAgICAgICAgICAgIGtleSA9ICJGSUxFUlBST1ZJREVTXyIgKyBmaWxlICsgIl8iICsgcGtnCi0gICAgICAgICAgICBkLnNldFZhcihrZXksICIgIi5qb2luKHByb3ZpZGVzW2ZpbGVdKSkKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKGtleSwgIiAiICsgIiAiLmpvaW4ocHJvdmlkZXNbZmlsZV0pKQogCiAgICAgICAgIGZvciBmaWxlIGluIHJlcXVpcmVzOgogICAgICAgICAgICAgcmVxdWlyZXNfZmlsZXNbcGtnXS5hcHBlbmQoZmlsZSkKICAgICAgICAgICAgIGtleSA9ICJGSUxFUkRFUEVORFNfIiArIGZpbGUgKyAiXyIgKyBwa2cKLSAgICAgICAgICAgIGQuc2V0VmFyKGtleSwgIiAiLmpvaW4ocmVxdWlyZXNbZmlsZV0pKQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoa2V5LCAiICIgKyAiICIuam9pbihyZXF1aXJlc1tmaWxlXSkpCiAKICAgICBmb3IgcGtnIGluIHJlcXVpcmVzX2ZpbGVzOgogICAgICAgICBkLnNldFZhcigiRklMRVJERVBFTkRTRkxJU1RfIiArIHBrZywgIiAiLmpvaW4ocmVxdWlyZXNfZmlsZXNbcGtnXSkpCkBAIC0xNTkyLDcgKzE1ODEsNyBAQAogCiBweXRob24gcGFja2FnZV9kb19zaGxpYnMoKSB7CiAgICAgaW1wb3J0IHJlLCBwaXBlcwotICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHN1YgorICAgIGltcG9ydCBzdWJwcm9jZXNzCiAKICAgICBleGNsdWRlX3NobGlicyA9IGQuZ2V0VmFyKCdFWENMVURFX0ZST01fU0hMSUJTJywgRmFsc2UpCiAgICAgaWYgZXhjbHVkZV9zaGxpYnM6CkBAIC0xNjAzLDYgKzE1OTIsMTggQEAKICAgICBsaWJkaXJfcmUgPSByZS5jb21waWxlKCIuKi8lcyQiICUgZC5nZXRWYXIoJ2Jhc2VsaWInKSkKIAogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykKKworICAgIHNobGliX3BrZ3MgPSBbXQorICAgIGV4Y2x1c2lvbl9saXN0ID0gZC5nZXRWYXIoIkVYQ0xVREVfUEFDS0FHRVNfRlJPTV9TSExJQlMiKQorICAgIGlmIGV4Y2x1c2lvbl9saXN0OgorICAgICAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBwa2cgbm90IGluIGV4Y2x1c2lvbl9saXN0LnNwbGl0KCk6CisgICAgICAgICAgICAgICAgc2hsaWJfcGtncy5hcHBlbmQocGtnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJub3QgZ2VuZXJhdGluZyBzaGxpYnMgZm9yICVzIiAlIHBrZykKKyAgICBlbHNlOgorICAgICAgICBzaGxpYl9wa2dzID0gcGFja2FnZXMuc3BsaXQoKQorCiAgICAgdGFyZ2V0b3MgPSBkLmdldFZhcignVEFSR0VUX09TJykKIAogICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCkBAIC0xNjE3LDI4ICsxNjE4LDI4IEBACiAKICAgICBzaGxpYnN3b3JrX2RpciA9IGQuZ2V0VmFyKCdTSExJQlNXT1JLRElSJykKIAotICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCi0gICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKLQotICAgIGRlZiBsaW51eF9zbyhmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3Zlcik6CisgICAgZGVmIGxpbnV4X3NvKGZpbGUsIHBrZywgcGtndmVyLCBkKToKICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBGYWxzZQorICAgICAgICBuZWVkZWQgPSBzZXQoKQorICAgICAgICBzb25hbWVzID0gc2V0KCkKKyAgICAgICAgcmVuYW1lcyA9IFtdCiAgICAgICAgIGxkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZSkucmVwbGFjZShwa2dkZXN0ICsgIi8iICsgcGtnLCAnJykKICAgICAgICAgY21kID0gZC5nZXRWYXIoJ09CSkRVTVAnKSArICIgLXAgIiArIHBpcGVzLnF1b3RlKGZpbGUpICsgIiAyPi9kZXYvbnVsbCIKICAgICAgICAgZmQgPSBvcy5wb3BlbihjbWQpCiAgICAgICAgIGxpbmVzID0gZmQucmVhZGxpbmVzKCkKICAgICAgICAgZmQuY2xvc2UoKQotICAgICAgICBycGF0aCA9IFtdCisgICAgICAgIHJwYXRoID0gdHVwbGUoKQogICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgiXHMrUlBBVEhccysoW15cc10qKSIsIGwpCiAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgIHJwYXRocyA9IG0uZ3JvdXAoMSkucmVwbGFjZSgiJE9SSUdJTiIsIGxkaXIpLnNwbGl0KCI6IikKLSAgICAgICAgICAgICAgICBycGF0aCA9IGxpc3QobWFwKG9zLnBhdGgubm9ybXBhdGgsIHJwYXRocykpCisgICAgICAgICAgICAgICAgcnBhdGggPSB0dXBsZShtYXAob3MucGF0aC5ub3JtcGF0aCwgcnBhdGhzKSkKICAgICAgICAgZm9yIGwgaW4gbGluZXM6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goIlxzK05FRURFRFxzKyhbXlxzXSopIiwgbCkKICAgICAgICAgICAgIGlmIG06CiAgICAgICAgICAgICAgICAgZGVwID0gbS5ncm91cCgxKQotICAgICAgICAgICAgICAgIGlmIGRlcCBub3QgaW4gbmVlZGVkW3BrZ106Ci0gICAgICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddLmFwcGVuZCgoZGVwLCBmaWxlLCBycGF0aCkpCisgICAgICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBuZWVkZWQ6CisgICAgICAgICAgICAgICAgICAgIG5lZWRlZC5hZGQoKGRlcCwgZmlsZSwgcnBhdGgpKQogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCJccytTT05BTUVccysoW15cc10qKSIsIGwpCiAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgIHRoaXNfc29uYW1lID0gbS5ncm91cCgxKQpAQCAtMTY0NiwxMiArMTY0NywxMiBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBwcm92IGluIHNvbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbGlicmFyeSBpcyBwcml2YXRlIChvbmx5IHVzZWQgYnkgcGFja2FnZSkgdGhlbiBkbyBub3QgYnVpbGQgc2hsaWIgZm9yIGl0CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwcml2YXRlX2xpYnMgb3IgdGhpc19zb25hbWUgbm90IGluIHByaXZhdGVfbGliczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNvbmFtZXMuYXBwZW5kKHByb3YpCisgICAgICAgICAgICAgICAgICAgICAgICBzb25hbWVzLmFkZChwcm92KQogICAgICAgICAgICAgICAgIGlmIGxpYmRpcl9yZS5tYXRjaChvcy5wYXRoLmRpcm5hbWUoZmlsZSkpOgogICAgICAgICAgICAgICAgICAgICBuZWVkc19sZGNvbmZpZyA9IFRydWUKICAgICAgICAgICAgICAgICBpZiBzbmFwX3N5bWxpbmtzIGFuZCAob3MucGF0aC5iYXNlbmFtZShmaWxlKSAhPSB0aGlzX3NvbmFtZSk6CiAgICAgICAgICAgICAgICAgICAgIHJlbmFtZXMuYXBwZW5kKChmaWxlLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGZpbGUpLCB0aGlzX3NvbmFtZSkpKQotICAgICAgICByZXR1cm4gbmVlZHNfbGRjb25maWcKKyAgICAgICAgcmV0dXJuIChuZWVkc19sZGNvbmZpZywgbmVlZGVkLCBzb25hbWVzLCByZW5hbWVzKQogCiAgICAgZGVmIGRhcndpbl9zbyhmaWxlLCBuZWVkZWQsIHNvbmFtZXMsIHJlbmFtZXMsIHBrZ3Zlcik6CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlKToKQEAgLTE2NzksMTAgKzE2ODAsMTAgQEAKICAgICAgICAgICAgIGZvciBjb21ibyBpbiBjb21ib3M6CiAgICAgICAgICAgICAgICAgaWYgbm90IGNvbWJvIGluIHNvbmFtZXM6CiAgICAgICAgICAgICAgICAgICAgIHByb3YgPSAoY29tYm8sIGxkaXIsIHBrZ3ZlcikKLSAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQocHJvdikKKyAgICAgICAgICAgICAgICAgICAgc29uYW1lcy5hZGQocHJvdikKICAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmR5bGliJykgb3IgZmlsZS5lbmRzd2l0aCgnLnNvJyk6CiAgICAgICAgICAgICBycGF0aCA9IFtdCi0gICAgICAgICAgICBwID0gc3ViLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vdG9vbCIpLCAnLWwnLCBmaWxlXSxzdGRvdXQ9c3ViLlBJUEUsc3RkZXJyPXN1Yi5QSVBFKQorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfW90b29sIiksICctbCcsIGZpbGVdLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZG91dCBmb3IgcmVzdWx0cwogICAgICAgICAgICAgaWYgcC5yZXR1cm5jb2RlID09IDA6CkBAIC0xNjkxLDcgKzE2OTIsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiBsLnN0YXJ0c3dpdGgoJ3BhdGggJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBycGF0aC5hcHBlbmQobC5zcGxpdCgpWzFdKQogCi0gICAgICAgIHAgPSBzdWIuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfW90b29sIiksICctTCcsIGZpbGVdLHN0ZG91dD1zdWIuUElQRSxzdGRlcnI9c3ViLlBJUEUpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtkLmV4cGFuZCgiJHtIT1NUX1BSRUZJWH1vdG9vbCIpLCAnLUwnLCBmaWxlXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgIyBJZiByZXR1cm5lZCBzdWNjZXNzZnVsbHksIHByb2Nlc3Mgc3Rkb3V0IGZvciByZXN1bHRzCiAgICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAwOgpAQCAtMTcwMyw3ICsxNzA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5iYXNlbmFtZShsLnNwbGl0KClbMF0pLnJzcGxpdCgiLiIsIDEpWzBdCiAgICAgICAgICAgICAgICAgaWYgbmFtZSBhbmQgbmFtZSBub3QgaW4gbmVlZGVkW3BrZ106Ci0gICAgICAgICAgICAgICAgICAgICBuZWVkZWRbcGtnXS5hcHBlbmQoKG5hbWUsIGZpbGUsIFtdKSkKKyAgICAgICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddLmFkZCgobmFtZSwgZmlsZSwgdHVwbGUoKSkpCiAKICAgICBkZWYgbWluZ3dfZGxsKGZpbGUsIG5lZWRlZCwgc29uYW1lcywgcmVuYW1lcywgcGtndmVyKToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGUpOgpAQCAtMTcxMSwxOCArMTcxMiwxOCBAQAogCiAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoIi5kbGwiKToKICAgICAgICAgICAgICMgYXNzdW1lIGFsbCBkbGxzIGFyZSBzaGFyZWQgb2JqZWN0cyBwcm92aWRlZCBieSB0aGUgcGFja2FnZQotICAgICAgICAgICAgc29uYW1lcy5hcHBlbmQoKG9zLnBhdGguYmFzZW5hbWUoZmlsZSksIG9zLnBhdGguZGlybmFtZShmaWxlKS5yZXBsYWNlKHBrZ2Rlc3QgKyAiLyIgKyBwa2csICcnKSwgcGtndmVyKSkKKyAgICAgICAgICAgIHNvbmFtZXMuYWRkKChvcy5wYXRoLmJhc2VuYW1lKGZpbGUpLCBvcy5wYXRoLmRpcm5hbWUoZmlsZSkucmVwbGFjZShwa2dkZXN0ICsgIi8iICsgcGtnLCAnJyksIHBrZ3ZlcikpCiAKICAgICAgICAgaWYgKGZpbGUuZW5kc3dpdGgoIi5kbGwiKSBvciBmaWxlLmVuZHN3aXRoKCIuZXhlIikpOgogICAgICAgICAgICAgIyB1c2Ugb2JqZHVtcCB0byBzZWFyY2ggZm9yICJETEwgTmFtZTogLipcLmRsbCIKLSAgICAgICAgICAgIHAgPSBzdWIuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfW9iamR1bXAiKSwgIi1wIiwgZmlsZV0sIHN0ZG91dCA9IHN1Yi5QSVBFLCBzdGRlcnI9IHN1Yi5QSVBFKQorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW2QuZXhwYW5kKCIke0hPU1RfUFJFRklYfW9iamR1bXAiKSwgIi1wIiwgZmlsZV0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICAgICAgIyBwcm9jZXNzIHRoZSBvdXRwdXQsIGdyYWJiaW5nIGFsbCAuZGxsIG5hbWVzCiAgICAgICAgICAgICBpZiBwLnJldHVybmNvZGUgPT0gMDoKICAgICAgICAgICAgICAgICBmb3IgbSBpbiByZS5maW5kaXRlcigiRExMIE5hbWU6ICguKj9cLmRsbCkkIiwgb3V0LmRlY29kZSgpLCByZS5NVUxUSUxJTkUgfCByZS5JR05PUkVDQVNFKToKICAgICAgICAgICAgICAgICAgICAgZGxsbmFtZSA9IG0uZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGxsbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRlZFtwa2ddLmFwcGVuZCgoZGxsbmFtZSwgZmlsZSwgW10pKQorICAgICAgICAgICAgICAgICAgICAgICAgbmVlZGVkW3BrZ10uYWRkKChkbGxuYW1lLCBmaWxlLCB0dXBsZSgpKSkKIAogICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFX1NOQVBfTElCX1NZTUxJTktTJykgPT0gIjEiOgogICAgICAgICBzbmFwX3N5bWxpbmtzID0gVHJ1ZQpAQCAtMTczMiw5ICsxNzMzLDEzIEBACiAgICAgdXNlX2xkY29uZmlnID0gYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZGNvbmZpZycsIFRydWUsIEZhbHNlLCBkKQogCiAgICAgbmVlZGVkID0ge30KLSAgICBzaGxpYl9wcm92aWRlciA9IG9lLnBhY2thZ2UucmVhZF9zaGxpYl9wcm92aWRlcnMoZCkKIAotICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKKyAgICAjIFRha2Ugc2hhcmVkIGxvY2sgc2luY2Ugd2UncmUgb25seSByZWFkaW5nLCBub3Qgd3JpdGluZworICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUoZC5leHBhbmQoIiR7UEFDS0FHRUxPQ0t9IiksIFRydWUpCisgICAgc2hsaWJfcHJvdmlkZXIgPSBvZS5wYWNrYWdlLnJlYWRfc2hsaWJfcHJvdmlkZXJzKGQpCisgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKworICAgIGZvciBwa2cgaW4gc2hsaWJfcGtnczoKICAgICAgICAgcHJpdmF0ZV9saWJzID0gZC5nZXRWYXIoJ1BSSVZBVEVfTElCU18nICsgcGtnKSBvciBkLmdldFZhcignUFJJVkFURV9MSUJTJykgb3IgIiIKICAgICAgICAgcHJpdmF0ZV9saWJzID0gcHJpdmF0ZV9saWJzLnNwbGl0KCkKICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBGYWxzZQpAQCAtMTc0Niw5ICsxNzUxLDEwIEBACiAgICAgICAgIGlmIG5vdCBwa2d2ZXI6CiAgICAgICAgICAgICBwa2d2ZXIgPSB2ZXIKIAotICAgICAgICBuZWVkZWRbcGtnXSA9IFtdCi0gICAgICAgIHNvbmFtZXMgPSBsaXN0KCkKLSAgICAgICAgcmVuYW1lcyA9IGxpc3QoKQorICAgICAgICBuZWVkZWRbcGtnXSA9IHNldCgpCisgICAgICAgIHNvbmFtZXMgPSBzZXQoKQorICAgICAgICByZW5hbWVzID0gW10KKyAgICAgICAgbGludXhsaXN0ID0gW10KICAgICAgICAgZm9yIGZpbGUgaW4gcGtnZmlsZXNbcGtnXToKICAgICAgICAgICAgICAgICBzb25hbWUgPSBOb25lCiAgICAgICAgICAgICAgICAgaWYgY3BhdGguaXNsaW5rKGZpbGUpOgpAQCAtMTc1OCw4ICsxNzY0LDE3IEBACiAgICAgICAgICAgICAgICAgZWxpZiB0YXJnZXRvcy5zdGFydHN3aXRoKCJtaW5ndyIpOgogICAgICAgICAgICAgICAgICAgICBtaW5nd19kbGwoZmlsZSwgbmVlZGVkLCBzb25hbWVzLCByZW5hbWVzLCBwa2d2ZXIpCiAgICAgICAgICAgICAgICAgZWxpZiBvcy5hY2Nlc3MoZmlsZSwgb3MuWF9PSykgb3IgbGliX3JlLm1hdGNoKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBsZGNvbmZpZyA9IGxpbnV4X3NvKGZpbGUsIG5lZWRlZCwgc29uYW1lcywgcmVuYW1lcywgcGtndmVyKQotICAgICAgICAgICAgICAgICAgICBuZWVkc19sZGNvbmZpZyA9IG5lZWRzX2xkY29uZmlnIG9yIGxkY29uZmlnCisgICAgICAgICAgICAgICAgICAgIGxpbnV4bGlzdC5hcHBlbmQoZmlsZSkKKworICAgICAgICBpZiBsaW51eGxpc3Q6CisgICAgICAgICAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChsaW51eF9zbywgbGludXhsaXN0LCBkLCBleHRyYWFyZ3M9KHBrZywgcGtndmVyLCBkKSkKKyAgICAgICAgICAgIGZvciByIGluIHJlc3VsdHM6CisgICAgICAgICAgICAgICAgbGRjb25maWcgPSByWzBdCisgICAgICAgICAgICAgICAgbmVlZGVkW3BrZ10gfD0gclsxXQorICAgICAgICAgICAgICAgIHNvbmFtZXMgfD0gclsyXQorICAgICAgICAgICAgICAgIHJlbmFtZXMuZXh0ZW5kKHJbM10pCisgICAgICAgICAgICAgICAgbmVlZHNfbGRjb25maWcgPSBuZWVkc19sZGNvbmZpZyBvciBsZGNvbmZpZworCiAgICAgICAgIGZvciAob2xkLCBuZXcpIGluIHJlbmFtZXM6CiAgICAgICAgICAgICBiYi5ub3RlKCJSZW5hbWluZyAlcyB0byAlcyIgJSAob2xkLCBuZXcpKQogICAgICAgICAgICAgb3MucmVuYW1lKG9sZCwgbmV3KQpAQCAtMTc4OCw4ICsxODAzLDYgQEAKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKICAgICAgICAgYmIuZGVidWcoMSwgJ0xJQk5BTUVTOiBwa2cgJXMgc29uYW1lcyAlcycgJSAocGtnLCBzb25hbWVzKSkKIAotICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCi0KICAgICBhc3N1bWVkX2xpYnMgPSBkLmdldFZhcignQVNTVU1FX1NITElCUycpCiAgICAgaWYgYXNzdW1lZF9saWJzOgogICAgICAgICBsaWJkaXIgPSBkLmdldFZhcigibGliZGlyIikKQEAgLTE4MDYsNyArMTgxOSw3IEBACiAKICAgICBsaWJzZWFyY2hwYXRoID0gW2QuZ2V0VmFyKCdsaWJkaXInKSwgZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJyldCiAKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6CisgICAgZm9yIHBrZyBpbiBzaGxpYl9wa2dzOgogICAgICAgICBiYi5kZWJ1ZygyLCAiY2FsY3VsYXRpbmcgc2hsaWIgcmVxdWlyZW1lbnRzIGZvciAlcyIgJSBwa2cpCiAKICAgICAgICAgcHJpdmF0ZV9saWJzID0gZC5nZXRWYXIoJ1BSSVZBVEVfTElCU18nICsgcGtnKSBvciBkLmdldFZhcignUFJJVkFURV9MSUJTJykgb3IgIiIKQEAgLTE4MjcsNyArMTg0MCw3IEBACiAgICAgICAgICAgICAgICAgZm9yIGsgaW4gc2hsaWJfcHJvdmlkZXJbblswXV0ua2V5cygpOgogICAgICAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcl9wYXRoLmFwcGVuZChrKQogICAgICAgICAgICAgICAgIG1hdGNoID0gTm9uZQotICAgICAgICAgICAgICAgIGZvciBwIGluIG5bMl0gKyBzaGxpYl9wcm92aWRlcl9wYXRoICsgbGlic2VhcmNocGF0aDoKKyAgICAgICAgICAgICAgICBmb3IgcCBpbiBsaXN0KG5bMl0pICsgc2hsaWJfcHJvdmlkZXJfcGF0aCArIGxpYnNlYXJjaHBhdGg6CiAgICAgICAgICAgICAgICAgICAgIGlmIHAgaW4gc2hsaWJfcHJvdmlkZXJbblswXV06CiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xOTAyLDkgKzE5MTUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhkciA9PSAnUmVxdWlyZXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2djb25maWdfbmVlZGVkW3BrZ10gKz0gZXhwLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKIAotICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCi0gICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKLQogICAgIGZvciBwa2cgaW4gcGFja2FnZXMuc3BsaXQoKToKICAgICAgICAgcGtnc19maWxlID0gb3MucGF0aC5qb2luKHNobGlic3dvcmtfZGlyLCBwa2cgKyAiLnBjbGlzdCIpCiAgICAgICAgIGlmIHBrZ2NvbmZpZ19wcm92aWRlZFtwa2ddICE9IFtdOgpAQCAtMTkxMyw2ICsxOTIzLDkgQEAKICAgICAgICAgICAgICAgICBmLndyaXRlKCclc1xuJyAlIHApCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAorICAgICMgVGFrZSBzaGFyZWQgbG9jayBzaW5jZSB3ZSdyZSBvbmx5IHJlYWRpbmcsIG5vdCB3cml0aW5nCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShkLmV4cGFuZCgiJHtQQUNLQUdFTE9DS30iKSwgVHJ1ZSkKKwogICAgICMgR28gZnJvbSBsZWFzdCB0byBtb3N0IHNwZWNpZmljIHNpbmNlIHRoZSBsYXN0IG9uZSBmb3VuZCB3aW5zCiAgICAgZm9yIGRpciBpbiByZXZlcnNlZChzaGxpYnNfZGlycyk6CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXIpOgpAQCAtMTkyOCw2ICsxOTQxLDggQEAKICAgICAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgICAgICAgICAgcGtnY29uZmlnX3Byb3ZpZGVkW3BrZ10uYXBwZW5kKGwucnN0cmlwKCkpCiAKKyAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQorCiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBkZXBzID0gW10KICAgICAgICAgZm9yIG4gaW4gcGtnY29uZmlnX25lZWRlZFtwa2ddOgpAQCAtMTk0NSw4ICsxOTYwLDYgQEAKICAgICAgICAgICAgIGZvciBkZXAgaW4gZGVwczoKICAgICAgICAgICAgICAgICBmZC53cml0ZShkZXAgKyAnXG4nKQogICAgICAgICAgICAgZmQuY2xvc2UoKQotCi0gICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKIH0KIAogZGVmIHJlYWRfbGliZGVwX2ZpbGVzKGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKaW5kZXggMmU4ZDE3ZC4uNmY4MTU5MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCkBAIC00MSwzMiArNDEsNiBAQAogICAgIHJldHVybiBhcmNoCiAKIHB5dGhvbiBkb19wYWNrYWdlX2RlYiAoKSB7Ci0KLSAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0gICAgaW1wb3J0IHRyYWNlYmFjawotCi0gICAgY2xhc3MgRGViaWFuV3JpdGVQa2dQcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0gICAgICAgICAgICBzZWxmLl9wY29ubiwgc2VsZi5fY2Nvbm4gPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCi0gICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBOb25lCi0KLSAgICAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5ydW4oc2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKE5vbmUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgdGIgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZCgoZSwgdGIpKQotCi0gICAgICAgIEBwcm9wZXJ0eQotICAgICAgICBkZWYgZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5fcGNvbm4ucG9sbCgpOgotICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IHNlbGYuX3Bjb25uLnJlY3YoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgotCi0gICAgb2xkY3dkID0gb3MuZ2V0Y3dkKCkKLQogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykKICAgICBpZiBub3QgcGFja2FnZXM6CiAgICAgICAgIGJiLmRlYnVnKDEsICJQQUNLQUdFUyBub3QgZGVmaW5lZCwgbm90aGluZyB0byBwYWNrYWdlIikKQEAgLTc2LDMwICs1MCw3IEBACiAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiREVCX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSxvcy5SX09LKToKICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiREVCX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSkKIAotICAgIG1heF9wcm9jZXNzID0gaW50KGQuZ2V0VmFyKCJCQl9OVU1CRVJfVEhSRUFEUyIpIG9yIG9zLmNwdV9jb3VudCgpIG9yIDEpCi0gICAgbGF1bmNoZWQgPSBbXQotICAgIGVycm9yID0gTm9uZQotICAgIHBrZ3MgPSBwYWNrYWdlcy5zcGxpdCgpCi0gICAgd2hpbGUgbm90IGVycm9yIGFuZCBwa2dzOgotICAgICAgICBpZiBsZW4obGF1bmNoZWQpIDwgbWF4X3Byb2Nlc3M6Ci0gICAgICAgICAgICBwID0gRGViaWFuV3JpdGVQa2dQcm9jZXNzKHRhcmdldD1kZWJfd3JpdGVfcGtnLCBhcmdzPShwa2dzLnBvcCgpLCBkKSkKLSAgICAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICAgICAgbGF1bmNoZWQuYXBwZW5kKHApCi0gICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgotICAgICAgICAgICAgIyBUaGUgZmluaXNoZWQgcHJvY2Vzc2VzIGFyZSBqb2luZWQgd2hlbiBjYWxsaW5nIGlzX2FsaXZlKCkKLSAgICAgICAgICAgIGlmIG5vdCBxLmlzX2FsaXZlKCk6Ci0gICAgICAgICAgICAgICAgbGF1bmNoZWQucmVtb3ZlKHEpCi0gICAgICAgICAgICBpZiBxLmV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBlcnJvciwgdHJhY2ViYWNrID0gcS5leGNlcHRpb24KLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgZm9yIHAgaW4gbGF1bmNoZWQ6Ci0gICAgICAgIHAuam9pbigpCi0KLSAgICBvcy5jaGRpcihvbGRjd2QpCi0KLSAgICBpZiBlcnJvcjoKLSAgICAgICAgcmFpc2UgZXJyb3IKKyAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGRlYl93cml0ZV9wa2csIHBhY2thZ2VzLnNwbGl0KCksIGQsIGV4dHJhYXJncz0oZCwpKQogfQogZG9fcGFja2FnZV9kZWJbdmFyZGVwc10gKz0gImRlYl93cml0ZV9wa2ciCiBkb19wYWNrYWdlX2RlYlt2YXJkZXBzZXhjbHVkZV0gPSAiQkJfTlVNQkVSX1RIUkVBRFMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwppbmRleCBhMGIzNGZhLi41ZWI5MTBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKQEAgLTE3LDMyICsxNyw2IEBACiBPUEtHTElCRElSID0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliIgogCiBweXRob24gZG9fcGFja2FnZV9pcGsgKCkgewotICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLSAgICBpbXBvcnQgdHJhY2ViYWNrCi0KLSAgICBjbGFzcyBJUEtXcml0ZVBrZ1Byb2Nlc3MobXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MpOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLSAgICAgICAgICAgIHNlbGYuX3Bjb25uLCBzZWxmLl9jY29ubiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKLSAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IE5vbmUKLQotICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLnJ1bihzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoTm9uZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICB0YiA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLSAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKChlLCB0YikpCi0KLSAgICAgICAgQHByb3BlcnR5Ci0gICAgICAgIGRlZiBleGNlcHRpb24oc2VsZik6Ci0gICAgICAgICAgICBpZiBzZWxmLl9wY29ubi5wb2xsKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gc2VsZi5fcGNvbm4ucmVjdigpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhjZXB0aW9uCi0KLQotICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCi0KICAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQogICAgIG91dGRpciA9IGQuZ2V0VmFyKCdQS0dXUklURURJUklQSycpCiAgICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicpCkBAIC02MSwzMCArMzUsNyBAQAogICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odG1wZGlyLCAic3RhbXBzIiwgIklQS19QQUNLQUdFX0lOREVYX0NMRUFOIiksIG9zLlJfT0spOgogICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJJUEtfUEFDS0FHRV9JTkRFWF9DTEVBTiIpKQogCi0gICAgbWF4X3Byb2Nlc3MgPSBpbnQoZC5nZXRWYXIoIkJCX05VTUJFUl9USFJFQURTIikgb3Igb3MuY3B1X2NvdW50KCkgb3IgMSkKLSAgICBsYXVuY2hlZCA9IFtdCi0gICAgZXJyb3IgPSBOb25lCi0gICAgcGtncyA9IHBhY2thZ2VzLnNwbGl0KCkKLSAgICB3aGlsZSBub3QgZXJyb3IgYW5kIHBrZ3M6Ci0gICAgICAgIGlmIGxlbihsYXVuY2hlZCkgPCBtYXhfcHJvY2VzczoKLSAgICAgICAgICAgIHAgPSBJUEtXcml0ZVBrZ1Byb2Nlc3ModGFyZ2V0PWlwa193cml0ZV9wa2csIGFyZ3M9KHBrZ3MucG9wKCksIGQpKQotICAgICAgICAgICAgcC5zdGFydCgpCi0gICAgICAgICAgICBsYXVuY2hlZC5hcHBlbmQocCkKLSAgICAgICAgZm9yIHEgaW4gbGF1bmNoZWQ6Ci0gICAgICAgICAgICAjIFRoZSBmaW5pc2hlZCBwcm9jZXNzZXMgYXJlIGpvaW5lZCB3aGVuIGNhbGxpbmcgaXNfYWxpdmUoKQotICAgICAgICAgICAgaWYgbm90IHEuaXNfYWxpdmUoKToKLSAgICAgICAgICAgICAgICBsYXVuY2hlZC5yZW1vdmUocSkKLSAgICAgICAgICAgIGlmIHEuZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIGVycm9yLCB0cmFjZWJhY2sgPSBxLmV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICBmb3IgcCBpbiBsYXVuY2hlZDoKLSAgICAgICAgcC5qb2luKCkKLQotICAgIG9zLmNoZGlyKG9sZGN3ZCkKLQotICAgIGlmIGVycm9yOgotICAgICAgICByYWlzZSBlcnJvcgorICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2goaXBrX3dyaXRlX3BrZywgcGFja2FnZXMuc3BsaXQoKSwgZCwgZXh0cmFhcmdzPShkLCkpCiB9CiBkb19wYWNrYWdlX2lwa1t2YXJkZXBzXSArPSAiaXBrX3dyaXRlX3BrZyIKIGRvX3BhY2thZ2VfaXBrW3ZhcmRlcHNleGNsdWRlXSA9ICJCQl9OVU1CRVJfVEhSRUFEUyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCmluZGV4IDJmYzY5MjUuLjNlMGExODEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwpAQCAtMzMsNyArMzMsNyBAQAogICAgIGlmICh0ZXN0c3JjZGlyICsgb3Muc2VwKS5zdGFydHN3aXRoKHdvcmtkaXIgKyBvcy5zZXApOgogICAgICAgICAjIERvdWJsZS1jaGVjayB0aGF0IGVpdGhlciB3b3JrZGlyIG9yIFMgb3Igc29tZSBkaXJlY3RvcnkgaW4tYmV0d2VlbiBpcyBhIGdpdCByZXBvc2l0b3J5CiAgICAgICAgIGZvdW5kID0gRmFsc2UKLSAgICAgICAgd2hpbGUgdGVzdHNyY2RpciAhPSAnLyc6CisgICAgICAgIHdoaWxlIHRlc3RzcmNkaXIgIT0gd29ya2RpcjoKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZXN0c3JjZGlyLCAnLmdpdCcpKToKICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKICAgICAgICAgICAgICAgICBicmVhawpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGl4YnVmY2FjaGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BpeGJ1ZmNhY2hlLmJiY2xhc3MKaW5kZXggYjNlNTA3Zi4uMzM3OGZmMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGl4YnVmY2FjaGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9waXhidWZjYWNoZS5iYmNsYXNzCkBAIC0xMiw3ICsxMiw3IEBACiAKIHBpeGJ1ZmNhY2hlX2NvbW1vbigpIHsKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3BpeGJ1Zl9jYWNoZSAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gbGliZGlyPSR7bGliZGlyfSBcCisJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV9waXhidWZfY2FjaGUgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfSBsaWJkaXI9JHtsaWJkaXJ9IFwKIAkJYmluZGlyPSR7YmluZGlyfSBiYXNlX2xpYmRpcj0ke2Jhc2VfbGliZGlyfQogZWxzZQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcwppbmRleCAzZGEzNTA3Li42NzdiYTNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKQEAgLTEsNCArMSw0IEBACi1pbmhlcml0IG1ldGEKK2luaGVyaXQgbWV0YSBpbWFnZS1wb3N0aW5zdC1pbnRlcmNlcHRzCiAKICMgV2lsZGNhcmRzIHNwZWNpZnlpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcyB0byBpbnN0YWxsIGZvciBldmVyeSBwYWNrYWdlIHRoYXQgaGFzIGJlZW4gZXhwbGljaXRseQogIyBpbnN0YWxsZWQgaW50byB0aGUgcm9vdGZzCkBAIC00MCwxMyArNDAsMTMgQEAKIAogVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAibmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCBwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKIFRPT0xDSEFJTl9IT1NUX1RBU0tfQVRURU1QVE9OTFkgPz0gIiIKLVRPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0Jyl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAndGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teScpfSIKK1RPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0Jyl9IHRhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkiCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0tfQVRURU1QVE9OTFkgPz0gIiIKIFRPT0xDSEFJTl9PVVRQVVROQU1FID89ICIke1NES19OQU1FfS10b29sY2hhaW4tJHtTREtfVkVSU0lPTn0iCiAKIFNES19SREVQRU5EUyA9ICIke1RPT0xDSEFJTl9UQVJHRVRfVEFTS30gJHtUT09MQ0hBSU5fSE9TVF9UQVNLfSIKLVNES19ERVBFTkRTID0gInZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlIHh6LW5hdGl2ZSBjcm9zcy1sb2NhbGVkZWYtbmF0aXZlICR7TUxQUkVGSVh9cWVtdXdyYXBwZXItY3Jvc3MiCitTREtfREVQRU5EUyA9ICJ2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZSB4ei1uYXRpdmUgY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSBuYXRpdmVzZGstcWVtdXdyYXBwZXItY3Jvc3MgJHtAJyAnLmpvaW4oWyIlcy1xZW11d3JhcHBlci1jcm9zcyIgJSBtIGZvciBtIGluIGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpLnNwbGl0KCldKX0gcWVtdXdyYXBwZXItY3Jvc3MiCitQQVRIX3ByZXBlbmQgPSAiJHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcn0vY3Jvc3NzY3JpcHRzOiR7QCI6Ii5qb2luKGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAnU1RBR0lOR19CSU5ESVJfQ1JPU1MnKS5zcGxpdCgpKX06IgogU0RLX0RFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIG5hdGl2ZXNkay1nbGliYy1sb2NhbGUiCiAKICMgV2Ugd2FudCB0aGUgTVVMVElBUkNIX1RBUkdFVF9TWVMgdG8gcG9pbnQgdG8gdGhlIFRVTkVfUEtHQVJDSCwgbm90IFBBQ0tBR0VfQVJDSCBhcyBpdApAQCAtNjIsOCArNjIsOCBAQAogU0RLX1BPU1RfSU5TVEFMTF9DT01NQU5EID89ICIiCiBTREtfUkVMT0NBVEVfQUZURVJfSU5TVEFMTCA/PSAiMSIKIAotU0RLRVhUUEFUSCA/PSAifi8ke0BkLmdldFZhcignRElTVFJPJyl9X3NkayIKLVNES19USVRMRSA/PSAiJHtAZC5nZXRWYXIoJ0RJU1RST19OQU1FJykgb3IgZC5nZXRWYXIoJ0RJU1RSTycpfSBTREsiCitTREtFWFRQQVRIID8/PSAifi8ke0BkLmdldFZhcignRElTVFJPJyl9X3NkayIKK1NES19USVRMRSA/Pz0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gU0RLIgogCiBTREtfVEFSR0VUX01BTklGRVNUID0gIiR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS50YXJnZXQubWFuaWZlc3QiCiBTREtfSE9TVF9NQU5JRkVTVCA9ICIke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uaG9zdC5tYW5pZmVzdCIKQEAgLTIyOCwxNCArMjI4LDE3IEBACiAJdGFyICR7U0RLVEFST1BUU30gLWNmIC0gLiB8IHh6IC1UIDAgPiAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyLnh6CiB9CiAKK1RPT0xDSEFJTl9TSEFSX0VYVF9UTVBMID89ICIke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2giCitUT09MQ0hBSU5fU0hBUl9SRUxfVE1QTCA/PSAiJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1yZWxvY2F0ZS5zaCIKKwogZmFrZXJvb3QgY3JlYXRlX3NoYXIoKSB7CiAJIyBjb3B5IGluIHRoZSB0ZW1wbGF0ZSBzaGFyIGV4dHJhY3RvciBzY3JpcHQKLQljcCAke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2ggJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCisJY3AgJHtUT09MQ0hBSU5fU0hBUl9FWFRfVE1QTH0gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LnNoCiAKIAlybSAtZiAke1R9L3ByZV9pbnN0YWxsX2NvbW1hbmQgJHtUfS9wb3N0X2luc3RhbGxfY29tbWFuZAogCiAJaWYgWyAke1NES19SRUxPQ0FURV9BRlRFUl9JTlNUQUxMfSAtZXEgMSBdIDsgdGhlbgotCQljcCAke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLXJlbG9jYXRlLnNoICR7VH0vcG9zdF9pbnN0YWxsX2NvbW1hbmQKKwkJY3AgJHtUT09MQ0hBSU5fU0hBUl9SRUxfVE1QTH0gJHtUfS9wb3N0X2luc3RhbGxfY29tbWFuZAogCWZpCiAJY2F0IDw8ICJFT0YiID4+ICR7VH0vcHJlX2luc3RhbGxfY29tbWFuZAogJHtTREtfUFJFX0lOU1RBTExfQ09NTUFORH0KQEAgLTI1OCw3ICsyNjEsNyBAQAogCQktZSAncyNAU0RLX1ZFUlNJT05AIyR7U0RLX1ZFUlNJT059I2cnIFwKIAkJLWUgJy9AU0RLX1BSRV9JTlNUQUxMX0NPTU1BTkRAL2QnIFwKIAkJLWUgJy9AU0RLX1BPU1RfSU5TVEFMTF9DT01NQU5EQC9kJyBcCi0JCS1lICdzI0BTREtfR0NDX1ZFUkAjJHtAb2UudXRpbHMuaG9zdF9nY2NfdmVyc2lvbihkKX0jZycgXAorCQktZSAncyNAU0RLX0dDQ19WRVJAIyR7QG9lLnV0aWxzLmhvc3RfZ2NjX3ZlcnNpb24oZCwgdGFza2NvbnRleHRvbmx5PVRydWUpfSNnJyBcCiAJCSR7U0RLREVQTE9ZRElSfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5zaAogCiAJIyBhZGQgZXhlY3V0aW9uIHBlcm1pc3Npb24KQEAgLTI5MywxNyArMjk2LDE4IEBACiBkZWYgc2RrX3ZhcmlhYmxlcyhkKToKICAgICB2YXJpYWJsZXMgPSBbJ0JVSUxEX0lNQUdFU19GUk9NX0ZFRURTJywnU0RLX09TJywnU0RLX09VVFBVVCcsJ1NES1BBVEhOQVRJVkUnLCdTREtUQVJHRVRTWVNST09UJywnU0RLX0RJUicsJ1NES19WRU5ET1InLCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknLCdTREtfUEFDS0FHRV9BUkNIUycsJ1NES19PVVRQVVQnLAogICAgICAgICAgICAgICAgICAnU0RLVEFSR0VUU1lTUk9PVCcsJ01VTFRJTElCX1ZBUklBTlRTJywnTVVMVElMSUJTJywnQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMnLCdNVUxUSUxJQl9HTE9CQUxfVkFSSUFOVFMnLCdCQURfUkVDT01NRU5EQVRJT05TJywnTk9fUkVDT01NRU5EQVRJT05TJywnUEFDS0FHRV9BUkNIUycsCi0gICAgICAgICAgICAgICAgICdQQUNLQUdFX0NMQVNTRVMnLCdUQVJHRVRfVkVORE9SJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9BUkNIJywnVEFSR0VUX09TJywnQkJFWFRFTkRWQVJJQU5UJywnRkVFRF9ERVBMT1lESVJfQkFTRV9VUkknLCAnUEFDS0FHRV9FWENMVURFX0NPTVBMRU1FTlRBUlknXQorICAgICAgICAgICAgICAgICAnUEFDS0FHRV9DTEFTU0VTJywnVEFSR0VUX1ZFTkRPUicsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywgJ1BBQ0tBR0VfRVhDTFVERV9DT01QTEVNRU5UQVJZJywgJ0lNQUdFX0lOU1RBTExfREVCVUdGUyddCiAgICAgdmFyaWFibGVzLmV4dGVuZChzZGtfY29tbWFuZF92YXJpYWJsZXMoZCkpCiAgICAgcmV0dXJuICIgIi5qb2luKHZhcmlhYmxlcykKIAogZG9fcG9wdWxhdGVfc2RrW3ZhcmRlcHNdICs9ICIke0BzZGtfdmFyaWFibGVzKGQpfSIKIAotZG9fcG9wdWxhdGVfc2RrW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtDT1JFQkFTRX0vbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1yZWxvY2F0ZS5zaDpUcnVlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7Q09SRUJBU0V9L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaDpUcnVlIgorZG9fcG9wdWxhdGVfc2RrW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtUT09MQ0hBSU5fU0hBUl9SRUxfVE1QTH06VHJ1ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1RPT0xDSEFJTl9TSEFSX0VYVF9UTVBMfTpUcnVlIgogCiBkb19wb3B1bGF0ZV9zZGtbZGlyc10gPSAiJHtQS0dEQVRBX0RJUn0gJHtUT1BESVJ9IgogZG9fcG9wdWxhdGVfc2RrW2RlcGVuZHNdICs9ICIke0AnICcuam9pbihbeCArICc6ZG9fcG9wdWxhdGVfc3lzcm9vdCcgZm9yIHggaW4gZC5nZXRWYXIoJ1NES19ERVBFTkRTJykuc3BsaXQoKV0pfSAgJHtAZC5nZXRWYXJGbGFnKCdkb19yb290ZnMnLCAnZGVwZW5kcycsIEZhbHNlKX0iCiBkb19wb3B1bGF0ZV9zZGtbcmRlcGVuZHNdID0gIiR7QCcgJy5qb2luKFt4ICsgJzpkb19wYWNrYWdlX3dyaXRlXyR7SU1BR0VfUEtHVFlQRX0gJyArIHggKyAnOmRvX3BhY2thZ2VkYXRhJyBmb3IgeCBpbiBkLmdldFZhcignU0RLX1JERVBFTkRTJykuc3BsaXQoKV0pfSIKIGRvX3BvcHVsYXRlX3Nka1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2VkYXRhIGRvX3BhY2thZ2Vfd3JpdGVfcnBtIGRvX3BhY2thZ2Vfd3JpdGVfaXBrIGRvX3BhY2thZ2Vfd3JpdGVfZGViIgorZG9fcG9wdWxhdGVfc2RrW2ZpbGUtY2hlY2tzdW1zXSArPSAiJHtQT1NUSU5TVF9JTlRFUkNFUFRfQ0hFQ0tTVU1TfSIKIGFkZHRhc2sgcG9wdWxhdGVfc2RrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKaW5kZXggZTFiYmE0OS4uZTMwYzQ5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwpAQCAtMjAwLDE1ICsyMDAsOSBAQAogICAgICAgICB3b3Jrc3BhY2VfbmFtZSA9ICdvcmlnLXdvcmtzcGFjZScKICAgICBlbHNlOgogICAgICAgICB3b3Jrc3BhY2VfbmFtZSA9IE5vbmUKLSAgICBsYXllcnNfY29waWVkID0gYnVpbGRzeXN0ZW0uY29weV9iaXRiYWtlX2FuZF9sYXllcnMoYmFzZW91dHBhdGggKyAnL2xheWVycycsIHdvcmtzcGFjZV9uYW1lKQogCi0gICAgc2RrYmJsYXllcnMgPSBbXQotICAgIGNvcmViYXNlID0gb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcignQ09SRUJBU0UnKSkKLSAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzX2NvcGllZDoKLSAgICAgICAgaWYgY29yZWJhc2UgPT0gb3MucGF0aC5iYXNlbmFtZShsYXllcik6Ci0gICAgICAgICAgICBjb25mX2JicGF0aCA9IG9zLnBhdGguam9pbignbGF5ZXJzJywgbGF5ZXIsICdiaXRiYWtlJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNka2JibGF5ZXJzLmFwcGVuZChsYXllcikKKyAgICBjb3JlYmFzZSwgc2RrYmJsYXllcnMgPSBidWlsZHN5c3RlbS5jb3B5X2JpdGJha2VfYW5kX2xheWVycyhiYXNlb3V0cGF0aCArICcvbGF5ZXJzJywgd29ya3NwYWNlX25hbWUpCisgICAgY29uZl9iYnBhdGggPSBvcy5wYXRoLmpvaW4oJ2xheWVycycsIGNvcmViYXNlLCAnYml0YmFrZScpCiAKICAgICBmb3IgcGF0aCBpbiBvcy5saXN0ZGlyKGJhc2VvdXRwYXRoICsgJy9sYXllcnMnKToKICAgICAgICAgcmVscGF0aCA9IG9zLnBhdGguam9pbignbGF5ZXJzJywgcGF0aCwgb2VfaW5pdF9lbnZfc2NyaXB0KQpAQCAtMzI1LDggKzMxOSw5IEBACiAgICAgICAgICAgICBmLndyaXRlKCdUQ0xJQkNBUFBFTkQgPSAiIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ0RMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWRzIlxuJykKIAotICAgICAgICAgICAgZi53cml0ZSgnSU5IRVJJVCArPSAiJXMiXG4nICUgJ3VuaW5hdGl2ZScpCi0gICAgICAgICAgICBmLndyaXRlKCdVTklOQVRJVkVfQ0hFQ0tTVU1bJXNdID0gIiVzIlxuXG4nICUgKGQuZ2V0VmFyKCdCVUlMRF9BUkNIJyksIHVuaW5hdGl2ZV9jaGVja3N1bSkpCisgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCd1bmluYXRpdmUnLCBkKToKKyAgICAgICAgICAgICAgIGYud3JpdGUoJ0lOSEVSSVQgKz0gIiVzIlxuJyAlICd1bmluYXRpdmUnKQorICAgICAgICAgICAgICAgZi53cml0ZSgnVU5JTkFUSVZFX0NIRUNLU1VNWyVzXSA9ICIlcyJcblxuJyAlIChkLmdldFZhcignQlVJTERfQVJDSCcpLCB1bmluYXRpdmVfY2hlY2tzdW0pKQogICAgICAgICAgICAgZi53cml0ZSgnQ09ORl9WRVJTSU9OID0gIiVzIlxuXG4nICUgZC5nZXRWYXIoJ0NPTkZfVkVSU0lPTicsIEZhbHNlKSkKIAogICAgICAgICAgICAgIyBTb21lIGNsYXNzZXMgYXJlIG5vdCBzdWl0YWJsZSBmb3IgU0RLLCByZW1vdmUgdGhlbSBmcm9tIElOSEVSSVQKQEAgLTUzNiw3ICs1MzEsOCBAQAogCXNjcmlwdHM9ImRldnRvb2wgcmVjaXBldG9vbCBvZS1maW5kLW5hdGl2ZS1zeXNyb290IHJ1bnFlbXUqIHdpYyIKIAlmb3Igc2NyaXB0IGluICRzY3JpcHRzOyBkbwogCQlmb3Igc2NyaXB0Zm4gaW4gYGZpbmQgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9LyR7c2NyaXB0cmVscGF0aH0gLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLW5hbWUgIiRzY3JpcHQiYDsgZG8KLQkJCWxuciAke3NjcmlwdGZufSAke1NES19PVVRQVVR9LyR7U0RLUEFUSE5BVElWRX0ke2JpbmRpcl9uYXRpdmVzZGt9L2BiYXNlbmFtZSAkc2NyaXB0Zm5gCisJCQl0YXJnZXRzY3JpcHRmbj0iJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtiaW5kaXJfbmF0aXZlc2RrfS8kKGJhc2VuYW1lICRzY3JpcHRmbikiCisJCQl0ZXN0IC1lICR7dGFyZ2V0c2NyaXB0Zm59IHx8IGxuciAke3NjcmlwdGZufSAke3RhcmdldHNjcmlwdGZufQogCQlkb25lCiAJZG9uZQogCSMgV2UgY2FuJ3QgdXNlIHRoZSBzYW1lIG1ldGhvZCBhcyBhYm92ZSBiZWNhdXNlIGZpbGVzIGluIHRoZSBzeXNyb290IHdvbid0IGV4aXN0IGF0IHRoaXMgcG9pbnQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwppbmRleCA4OTY2NWVmLi5kYTEyYTcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCkBAIC0xLDggKzEsOCBAQAogaW5oZXJpdCBweXRob24zLWRpcgogCi1QWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSIKLUVYVFJBTkFUSVZFUEFUSCArPSAiJHtQWVRIT05fUE59LW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kID0gIiAke1BZVEhPTl9QTn0tbmF0aXZlICIKK1BZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMiCitFWFRSQU5BVElWRVBBVEggKz0gInB5dGhvbjMtbmF0aXZlIgorREVQRU5EU19hcHBlbmQgPSAiIHB5dGhvbjMtbmF0aXZlICIKIAogIyBweXRob24tY29uZmlnIGFuZCBvdGhlciBzY3JpcHRzIGFyZSB1c2luZyBkaXN0dXRpbHMgbW9kdWxlcwogIyB3aGljaCB3ZSBwYXRjaCB0byBhY2Nlc3MgdGhlc2UgdmFyaWFibGVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCmluZGV4IDRjYzhiMjcuLmFlNjYwMGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCkBAIC0xLDExICsxLDExIEBACiAKIGluaGVyaXQgcHl0aG9uLWRpcgogCi1QWVRIT049IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSIKK1BZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIgogIyBQWVRIT05fRVhFQ1VUQUJMRSBpcyB1c2VkIGJ5IGNtYWtlCiBQWVRIT05fRVhFQ1VUQUJMRT0iJHtQWVRIT059IgotRVhUUkFOQVRJVkVQQVRIICs9ICIke1BZVEhPTl9QTn0tbmF0aXZlIgotREVQRU5EU19hcHBlbmQgPSAiICR7UFlUSE9OX1BOfS1uYXRpdmUgIgorRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24tbmF0aXZlIgorREVQRU5EU19hcHBlbmQgPSAiIHB5dGhvbi1uYXRpdmUgIgogCiAjIHB5dGhvbi1jb25maWcgYW5kIG90aGVyIHNjcmlwdHMgYXJlIHVzaW5nIGRpc3R1dGlscyBtb2R1bGVzCiAjIHdoaWNoIHdlIHBhdGNoIHRvIGFjY2VzcyB0aGVzZSB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKaW5kZXggMmRmODA1My4uMGViNjk2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKQEAgLTEsMzMgKzEsMzUgQEAKLSMKICMgcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKICMKLSMgVGhpcyBiYmNsYXNzIGlzIG1haW5seSByZXNwb25zaWJsZSB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0ggb24gYSBwZXIgcmVjaXBlIGJhc2UuCi0jIFdlIG5lZWQgdG8gc2V0IGEgcmVjaXBlIHNwZWNpZmljIFNPVVJDRV9EQVRFX0VQT0NIIGluIGVhY2ggcmVjaXBlIGVudmlyb25tZW50IGZvciB2YXJpb3VzIHRhc2tzLgotIyBPbmUgd2F5IHdvdWxkIGJlIHRvIG1vZGlmeSBhbGwgcmVjaXBlcyBvbmUtYnktb25lIHRvIHNwZWNpZnkgU09VUkNFX0RBVEVfRVBPQ0ggZXhwbGljaXRseSwgCi0jIGJ1dCB0aGF0IGlzIG5vdCByZWFsaXN0aWMgYXMgdGhlcmUgYXJlIGh1bmRyZWRzIChwcm9iYWJseSB0aG91c2FuZHMpIG9mIHJlY2lwZXMgaW4gdmFyaW91cyBtZXRhLWxheWVycy4KLSMgVGhlcmVmb3JlIHdlIGRvIGl0IHRoaXMgY2xhc3MuIAotIyBBZnRlciBzb3VyY2VzIGFyZSB1bnBhY2tlZCBidXQgYmVmb3JlIHRoZXkgYXJlIHBhdGNoZWQsIHdlIHRyeSB0byBkZXRlcm1pbmUgdGhlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSC4KKyMgU2V0cyBTT1VSQ0VfREFURV9FUE9DSCBpbiBlYWNoIGNvbXBvbmVudCdzIGJ1aWxkIGVudmlyb25tZW50LgorIyBVcHN0cmVhbSBjb21wb25lbnRzIChnZW5lcmFsbHkpIHJlc3BlY3QgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSwKKyMgdXNpbmcgaXQgaW4gcGxhY2Ugb2YgdGhlICJjdXJyZW50IiBkYXRlIGFuZCB0aW1lLgorIyBTZWUgaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy9zcGVjcy9zb3VyY2UtZGF0ZS1lcG9jaC8KICMKLSMgVGhlcmUgYXJlIDQgd2F5cyB0byBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0g6CisjIEFmdGVyIHNvdXJjZXMgYXJlIHVucGFja2VkIGJ1dCBiZWZvcmUgdGhleSBhcmUgcGF0Y2hlZCwgd2Ugc2V0IGEgcmVwcm9kdWNpYmxlIHZhbHVlIGZvciBTT1VSQ0VfREFURV9FUE9DSC4KKyMgVGhpcyB2YWx1ZSBzaG91bGQgYmUgcmVwcm9kdWNpYmxlIGZvciBhbnlvbmUgd2hvIGJ1aWxkcyB0aGUgc2FtZSByZXZpc2lvbiBmcm9tIHRoZSBzYW1lIHNvdXJjZXMuCiAjCi0jIDEuIFVzZSB2YWx1ZSBmcm9tIF9fc291cmNlX2RhdGVfZXBvY2gudHh0IGZpbGUgaWYgdGhpcyBmaWxlIGV4aXN0cy4gCi0jICAgIFRoaXMgZmlsZSB3YXMgbW9zdCBsaWtlbHkgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgYnVpbGQgYnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyAyLDMsNC4gCi0jICAgIEluIHByaW5jaXBsZSwgaXQgY291bGQgYWN0dWFsbHkgcHJvdmlkZWQgYnkgYSByZWNpcGUgdmlhIFNSQ19VUkkKKyMgVGhlcmUgYXJlIDQgd2F5cyB3ZSBkZXRlcm1pbmUgU09VUkNFX0RBVEVfRVBPQ0g6CiAjCi0jIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBmaXJzdCB0cnkgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBmb3IgU09VUkNFX0RBVEVfRVBPQ0g6CisjIDEuIFVzZSB0aGUgdmFsdWUgZnJvbSBfX3NvdXJjZV9kYXRlX2Vwb2NoLnR4dCBmaWxlIGlmIHRoaXMgZmlsZSBleGlzdHMuCisjICAgIFRoaXMgZmlsZSB3YXMgbW9zdCBsaWtlbHkgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgYnVpbGQgYnkgb25lIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyAyLDMsNC4KKyMgICAgQWx0ZXJuYXRpdmVseSwgaXQgY2FuIGJlIHByb3ZpZGVkIGJ5IGEgcmVjaXBlIHZpYSBTUkNfVVJJLgogIwotIyAyLiBJZiB3ZSBkZXRlY3RlZCBhIGZvbGRlciAuZ2l0LCB1c2UgLmdpdCBsYXN0IGNvbW1pdCBkYXRlIHRpbWVzdGFtcCwgYXMgZ2l0IGRvZXMgbm90IGFsbG93IGNoZWNraW5nIG91dAotIyAgICBmaWxlcyBhbmQgcHJlc2VydmluZyB0aGVpciB0aW1lc3RhbXBzLgorIyBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdDoKKyMKKyMgMi4gSWYgdGhlcmUgaXMgYSBnaXQgY2hlY2tvdXQsIHVzZSB0aGUgbGFzdCBnaXQgY29tbWl0IHRpbWVzdGFtcC4KKyMgICAgR2l0IGRvZXMgbm90IHByZXNlcnZlIGZpbGUgdGltZXN0YW1wcyBvbiBjaGVja291dC4KICMKICMgMy4gVXNlIHRoZSBtdGltZSBvZiAia25vd24iIGZpbGVzIHN1Y2ggYXMgTkVXUywgQ0hBTkdMRUxPRywgLi4uCi0jICAgIFRoaXMgd2lsbCB3b3JrIGZpbmUgZm9yIGFueSB3ZWxsIGtlcHQgcmVwb3NpdG9yeSBkaXN0cmlidXRlZCB2aWEgdGFyYmFsbHMuCisjICAgIFRoaXMgd29ya3MgZm9yIHdlbGwta2VwdCByZXBvc2l0b3JpZXMgZGlzdHJpYnV0ZWQgdmlhIHRhcmJhbGwuCiAjCi0jIDQuIElmIHRoZSBhYm92ZSBzdGVwcyBmYWlsLCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCBwYWNrYWdlIHNvdXJjZSBmaWxlcyBhbmQgdXNlIHRoZSB5b3VuZ2VzdCBmaWxlIG9mIHRoZSBzb3VyY2UgdHJlZS4KKyMgNC4gSWYgdGhlIGFib3ZlIHN0ZXBzIGZhaWwsIHVzZSB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIHlvdW5nZXN0IGZpbGUgaW4gdGhlIHNvdXJjZSB0cmVlLgogIwotIyBPbmNlIHRoZSB2YWx1ZSBvZiBTT1VSQ0VfREFURV9FUE9DSCBpcyBkZXRlcm1pbmVkLCBpdCBpcyBzdG9yZWQgaW4gdGhlIHJlY2lwZSAke1dPUktESVJ9L3NvdXJjZV9kYXRlX2Vwb2NoIGZvbGRlcgotIyBpbiBhIHRleHQgZmlsZSAiX19zb3VyY2VfZGF0ZV9lcG9jaC50eHQnLiBJZiB0aGlzIGZpbGUgaXMgZm91bmQgYnkgb3RoZXIgcmVjaXBlIHRhc2ssIHRoZSB2YWx1ZSBpcyBleHBvcnRlZCBpbgotIyB0aGUgU09VUkNFX0RBVEVfRVBPQ0ggdmFyaWFibGUgaW4gdGhlIHRhc2sgZW52aXJvbm1lbnQuIFRoaXMgaXMgZG9uZSBpbiBhbiBhbm9ueW1vdXMgcHl0aG9uIGZ1bmN0aW9uLCAKLSMgc28gU09VUkNFX0RBVEVfRVBPQ0ggaXMgZ3VhcmFudGVlZCB0byBleGlzdCBmb3IgYWxsIHRhc2tzIHRoZSBtYXkgdXNlIGl0IChkb19jb25maWd1cmUsIGRvX2NvbXBpbGUsIGRvX3BhY2thZ2UsIC4uLikKKyMgT25jZSB0aGUgdmFsdWUgb2YgU09VUkNFX0RBVEVfRVBPQ0ggaXMgZGV0ZXJtaW5lZCwgaXQgaXMgc3RvcmVkIGluIHRoZSByZWNpcGUncyBTREVfRklMRS4KKyMgSWYgbm9uZSBvZiB0aGVzZSBtZWNoYW5pc21zIGFyZSBzdWl0YWJsZSwgcmVwbGFjZSB0aGUgZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoIHRhc2sKKyMgd2l0aCByZWNpcGUtc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSB0byB3cml0ZSB0aGUgYXBwcm9wcmlhdGUgU09VUkNFX0RBVEVfRVBPQ0ggaW50byB0aGUgU0RFX0ZJTEUuCisjCisjIElmIHRoaXMgZmlsZSBpcyBmb3VuZCBieSBvdGhlciB0YXNrcywgdGhlIHZhbHVlIGlzIGV4cG9ydGVkIGluIHRoZSBTT1VSQ0VfREFURV9FUE9DSCB2YXJpYWJsZS4KKyMgU09VUkNFX0RBVEVfRVBPQ0ggaXMgc2V0IGZvciBhbGwgdGFza3MgdGhhdCBtaWdodCB1c2UgaXQgKGRvX2NvbmZpZ3VyZSwgZG9fY29tcGlsZSwgZG9fcGFja2FnZSwgLi4uKQogCiBCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMgPz89ICcxJwogaW5oZXJpdCAke0BvZS51dGlscy5pZmVsc2UoZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpID09ICcxJywgJ3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUnLCAnJyl9CkBAIC01MCw4NiArNTIsMTAwIEBACiBhZGR0YXNrIGRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaF9zZXRzY2VuZQogYWRkdGFzayBkb19kZXBsb3lfc291cmNlX2RhdGVfZXBvY2ggYmVmb3JlIGRvX2NvbmZpZ3VyZSBhZnRlciBkb19wYXRjaAogCi1kZWYgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2tub3duX2ZpbGVzKGQsIHBhdGgpOgotICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAorZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9mcm9tX2tub3duX2ZpbGVzKGQsIHNvdXJjZWRpcik6CisgICAgc291cmNlX2RhdGVfZXBvY2ggPSBOb25lCisgICAgbmV3ZXN0X2ZpbGUgPSBOb25lCiAgICAga25vd25fZmlsZXMgPSBzZXQoWyJORVdTIiwgIkNoYW5nZUxvZyIsICJDaGFuZ2Vsb2ciLCAiQ0hBTkdFUyJdKQogICAgIGZvciBmaWxlIGluIGtub3duX2ZpbGVzOgotICAgICAgICBmaWxlcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLGZpbGUpCisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKHNvdXJjZWRpciwgZmlsZSkKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZXBhdGgpOgotICAgICAgICAgICAgbXRpbWUgPSBpbnQob3MucGF0aC5nZXRtdGltZShmaWxlcGF0aCkpCisgICAgICAgICAgICBtdGltZSA9IGludChvcy5sc3RhdChmaWxlcGF0aCkuc3RfbXRpbWUpCiAgICAgICAgICAgICAjIFRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lICJrbm93bl9maWxlIiBwcmVzZW50LCBpZiBzbywgdXNlIHRoZSB5b3VuZ2VzdCBvbmUKLSAgICAgICAgICAgIGlmIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CisgICAgICAgICAgICBpZiBub3Qgc291cmNlX2RhdGVfZXBvY2ggb3IgbXRpbWUgPiBzb3VyY2VfZGF0ZV9lcG9jaDoKICAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IG10aW1lCisgICAgICAgICAgICAgICAgbmV3ZXN0X2ZpbGUgPSBmaWxlcGF0aAorICAgIGlmIG5ld2VzdF9maWxlOgorICAgICAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0ggdGFrZW4gZnJvbTogJXMiICUgbmV3ZXN0X2ZpbGUpCiAgICAgcmV0dXJuIHNvdXJjZV9kYXRlX2Vwb2NoCiAKLWRlZiBmaW5kX2dpdF9mb2xkZXIocGF0aCk6Ci0gICAgZXhjbHVkZSA9IHNldChbInRlbXAiLCAibGljZW5zZS1kZXN0ZGlyIiwgInBhdGNoZXMiLCAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIiwgInJlY2lwZS1zeXNyb290IiwgInBzZXVkbyIsICJidWlsZCIsICJpbWFnZSIsICJzeXNyb290LWRlc3RkaXIiXSkKLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoLCB0b3Bkb3duPVRydWUpOgorZGVmIGZpbmRfZ2l0X2ZvbGRlcihkLCBzb3VyY2VkaXIpOgorICAgICMgRmlyc3QgZ3Vlc3M6IFdPUktESVIvZ2l0CisgICAgIyBUaGlzIGlzIHRoZSBkZWZhdWx0IGdpdCBmZXRjaGVyIHVucGFjayBwYXRoCisgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKKyAgICBnaXRwYXRoID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICJnaXQvLmdpdCIpCisgICAgaWYgb3MucGF0aC5pc2RpcihnaXRwYXRoKToKKyAgICAgICAgcmV0dXJuIGdpdHBhdGgKKworICAgICMgU2Vjb25kIGd1ZXNzOiAke1N9CisgICAgZ2l0cGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VkaXIsICIuZ2l0IikKKyAgICBpZiBvcy5wYXRoLmlzZGlyKGdpdHBhdGgpOgorICAgICAgICByZXR1cm4gZ2l0cGF0aAorCisgICAgIyBQZXJoYXBzIHRoZXJlIHdhcyBhIHN1YnBhdGggb3IgZGVzdHN1ZmZpeCBzcGVjaWZpZWQuCisgICAgIyBHbyBsb29raW5nIGluIHRoZSBXT1JLRElSCisgICAgZXhjbHVkZSA9IHNldChbImJ1aWxkIiwgImltYWdlIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInBzZXVkbyIsCisgICAgICAgICAgICAgICAgICAgInJlY2lwZS1zeXNyb290IiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJzeXNyb290LWRlc3RkaXIiLCAidGVtcCJdKQorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHdvcmtkaXIsIHRvcGRvd249VHJ1ZSk6CiAgICAgICAgIGRpcnNbOl0gPSBbZCBmb3IgZCBpbiBkaXJzIGlmIGQgbm90IGluIGV4Y2x1ZGVdCiAgICAgICAgIGlmICcuZ2l0JyBpbiBkaXJzOgotICAgICAgICAgICAgI2JiLndhcm4oImZvdW5kIHJvb3Q6JXMiICUgKHN0cihyb290KSkpCiAgICAgICAgICAgICByZXR1cm4gcm9vdAotICAgICAKLWRlZiBnZXRfc291cmNlX2RhdGVfZXBvY2hfZ2l0KGQsIHBhdGgpOgotICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gMAotICAgIGlmICJnaXQ6Ly8iIGluIGQuZ2V0VmFyKCdTUkNfVVJJJyk6Ci0gICAgICAgIGdpdHBhdGggPSBmaW5kX2dpdF9mb2xkZXIoZC5nZXRWYXIoJ1dPUktESVInKSkKLSAgICAgICAgaWYgZ2l0cGF0aCAhPSBOb25lOgotICAgICAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKGdpdHBhdGgsIi5naXQiKSk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGludChzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsJ2xvZycsJy0xJywnLS1wcmV0dHk9JWN0J10sIGN3ZD1wYXRoKSkKLSAgICAgICAgICAgICAgICAgICAgI2JiLndhcm4oIkpCICoqKiBnaXRwYXRoOiVzIHNkZTogJWQiICUgKGdpdHBhdGgsc291cmNlX2RhdGVfZXBvY2gpKQotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiZ2l0IHJlcG8gcGF0aDolcyBzZGU6ICVkIiAlIChnaXRwYXRoLHNvdXJjZV9kYXRlX2Vwb2NoKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZ3JlcGV4YzoKLSAgICAgICAgICAgICAgICAgICAgI2JiLndhcm4oICJFeHBlY3RlZCBnaXQgcmVwb3NpdG9yeSBub3QgZm91bmQsIChwYXRoOiAlcykgZXJyb3I6JWQiICUgKGdpdHBhdGgsIGdyZXBleGMucmV0dXJuY29kZSkpCi0gICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJFeHBlY3RlZCBnaXQgcmVwb3NpdG9yeSBub3QgZm91bmQsIChwYXRoOiAlcykgZXJyb3I6JWQiICUgKGdpdHBhdGgsIGdyZXBleGMucmV0dXJuY29kZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi53YXJuKCJGYWlsZWQgdG8gZmluZCBhIGdpdCByZXBvc2l0b3J5IGZvciBwYXRoOiVzIiAlIChwYXRoKSkKLSAgICByZXR1cm4gc291cmNlX2RhdGVfZXBvY2gKLSAgICAgICAgICAgIAotcHl0aG9uIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCgpIHsKLSAgICBwYXRoID0gZC5nZXRWYXIoJ1MnKQotICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICBiYi53YXJuKCJVbmFibGUgdG8gZGV0ZXJtaW5lIHNvdXJjZV9kYXRlX2Vwb2NoISBwYXRoOiVzIiAlIHBhdGgpCi0gICAgICAgIHJldHVybgogCisgICAgYmIud2FybigiRmFpbGVkIHRvIGZpbmQgYSBnaXQgcmVwb3NpdG9yeSBpbiBXT1JLRElSOiAlcyIgJSB3b3JrZGlyKQorICAgIHJldHVybiBOb25lCisKK2RlZiBnZXRfc291cmNlX2RhdGVfZXBvY2hfZnJvbV9naXQoZCwgc291cmNlZGlyKToKKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IE5vbmUKKyAgICBpZiAiZ2l0Oi8vIiBpbiBkLmdldFZhcignU1JDX1VSSScpOgorICAgICAgICBnaXRwYXRoID0gZmluZF9naXRfZm9sZGVyKGQsIHNvdXJjZWRpcikKKyAgICAgICAgaWYgZ2l0cGF0aDoKKyAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGludChzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsJ2xvZycsJy0xJywnLS1wcmV0dHk9JWN0J10sIGN3ZD1naXRwYXRoKSkKKyAgICAgICAgICAgIGJiLmRlYnVnKDEsICJnaXQgcmVwb3NpdG9yeTogJXMiICUgZ2l0cGF0aCkKKyAgICByZXR1cm4gc291cmNlX2RhdGVfZXBvY2gKKworZGVmIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9mcm9tX3lvdW5nZXN0X2ZpbGUoZCwgc291cmNlZGlyKToKKyAgICAjIERvIGl0IHRoZSBoYXJkIHdheTogY2hlY2sgYWxsIGZpbGVzIGFuZCBmaW5kIHRoZSB5b3VuZ2VzdCBvbmUuLi4KKyAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IE5vbmUKKyAgICBuZXdlc3RfZmlsZSA9IE5vbmUKKyAgICAjIEp1c3QgaW4gY2FzZSBTID0gV09SS0RJUgorICAgIGV4Y2x1ZGUgPSBzZXQoWyJidWlsZCIsICJpbWFnZSIsICJsaWNlbnNlLWRlc3RkaXIiLCAicGF0Y2hlcyIsICJwc2V1ZG8iLAorICAgICAgICAgICAgICAgICAgICJyZWNpcGUtc3lzcm9vdCIsICJyZWNpcGUtc3lzcm9vdC1uYXRpdmUiLCAic3lzcm9vdC1kZXN0ZGlyIiwgInRlbXAiXSkKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhzb3VyY2VkaXIsIHRvcGRvd249VHJ1ZSk6CisgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gZmlsZXMgaWYgbm90IGZbMF0gPT0gJy4nXQorICAgICAgICBkaXJzWzpdID0gW2QgZm9yIGQgaW4gZGlycyBpZiBkIG5vdCBpbiBleGNsdWRlXQorCisgICAgICAgIGZvciBmbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIGZuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG10aW1lID0gaW50KG9zLmxzdGF0KGZpbGVuYW1lKS5zdF9tdGltZSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIG10aW1lID0gMAorICAgICAgICAgICAgaWYgbm90IHNvdXJjZV9kYXRlX2Vwb2NoIG9yIG10aW1lID4gc291cmNlX2RhdGVfZXBvY2g6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBtdGltZQorICAgICAgICAgICAgICAgIG5ld2VzdF9maWxlID0gZmlsZW5hbWUKKworICAgIGlmIG5ld2VzdF9maWxlOgorICAgICAgICBiYi5kZWJ1ZygxLCAiTmV3ZXN0IGZpbGUgZm91bmQ6ICVzIiAlIG5ld2VzdF9maWxlKQorICAgIHJldHVybiBzb3VyY2VfZGF0ZV9lcG9jaAorCitweXRob24gZG9fY3JlYXRlX3NvdXJjZV9kYXRlX2Vwb2NoX3N0YW1wKCkgewogICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKLSAgICAgICAgYmIuZGVidWcoMSwgIiBwYXRoOiAlcyByZXVzaW5nIF9fc291cmNlX2RhdGVfZXBvY2gudHh0IiAlIGVwb2NoZmlsZSkKKyAgICAgICAgYmIuZGVidWcoMSwgIlJldXNpbmcgU09VUkNFX0RBVEVfRVBPQ0ggZnJvbTogJXMiICUgZXBvY2hmaWxlKQogICAgICAgICByZXR1cm4KLSAKLSAgICAjIFRyeSB0byBkZXRlY3QvZmluZCBhIGdpdCByZXBvc2l0b3J5Ci0gICAgc291cmNlX2RhdGVfZXBvY2ggPSBnZXRfc291cmNlX2RhdGVfZXBvY2hfZ2l0KGQsIHBhdGgpCisKKyAgICBzb3VyY2VkaXIgPSBkLmdldFZhcignUycpCisgICAgc291cmNlX2RhdGVfZXBvY2ggPSAoCisgICAgICAgIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9mcm9tX2dpdChkLCBzb3VyY2VkaXIpIG9yCisgICAgICAgIGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9mcm9tX2tub3duX2ZpbGVzKGQsIHNvdXJjZWRpcikgb3IKKyAgICAgICAgZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX2Zyb21feW91bmdlc3RfZmlsZShkLCBzb3VyY2VkaXIpIG9yCisgICAgICAgIDAgICAgICAgIyBMYXN0IHJlc29ydAorICAgICkKICAgICBpZiBzb3VyY2VfZGF0ZV9lcG9jaCA9PSAwOgotICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IGdldF9zb3VyY2VfZGF0ZV9lcG9jaF9rbm93bl9maWxlcyhkLCBwYXRoKQotICAgIGlmIHNvdXJjZV9kYXRlX2Vwb2NoID09IDA6Ci0gICAgICAgICMgRG8gaXQgdGhlIGhhcmQgd2F5OiBjaGVjayBhbGwgZmlsZXMgYW5kIGZpbmQgdGhlIHlvdW5nZXN0IG9uZS4uLgotICAgICAgICBmaWxlbmFtZV9kYmcgPSBOb25lCi0gICAgICAgIGV4Y2x1ZGUgPSBzZXQoWyJ0ZW1wIiwgImxpY2Vuc2UtZGVzdGRpciIsICJwYXRjaGVzIiwgInJlY2lwZS1zeXNyb290LW5hdGl2ZSIsICJyZWNpcGUtc3lzcm9vdCIsICJwc2V1ZG8iLCAiYnVpbGQiLCAiaW1hZ2UiLCAic3lzcm9vdC1kZXN0ZGlyIl0pCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgsIHRvcGRvd249VHJ1ZSk6Ci0gICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIGZpbGVzIGlmIG5vdCBmWzBdID09ICcuJ10KLSAgICAgICAgICAgIGRpcnNbOl0gPSBbZCBmb3IgZCBpbiBkaXJzIGlmIGQgbm90IGluIGV4Y2x1ZGVdCisgICAgICAgICMgZW1wdHkgZm9sZGVyLCBub3QgYSBzaW5nbGUgZmlsZSAuLi4KKyAgICAgICAgYmIuZGVidWcoMSwgIk5vIGZpbGVzIGZvdW5kIHRvIGRldGVybWluZSBTT1VSQ0VfREFURV9FUE9DSCIpCiAKLSAgICAgICAgICAgIGZvciBmbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG10aW1lID0gaW50KG9zLnBhdGguZ2V0bXRpbWUoZmlsZW5hbWUpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBtdGltZSA9IDAKLSAgICAgICAgICAgICAgICBpZiBtdGltZSA+IHNvdXJjZV9kYXRlX2Vwb2NoOgotICAgICAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IG10aW1lCi0gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lX2RiZyA9IGZpbGVuYW1lCi0KLSAgICAgICAgaWYgZmlsZW5hbWVfZGJnICE9IE5vbmU6Ci0gICAgICAgICAgICBiYi5kZWJ1ZygxLCIgU09VUkNFX0RBVEVfRVBPQ0ggJWQgZGVyaXZlZCBmcm9tOiAlcyIgJSAoc291cmNlX2RhdGVfZXBvY2gsIGZpbGVuYW1lX2RiZykpCi0KLSAgICAgICAgaWYgc291cmNlX2RhdGVfZXBvY2ggPT0gMDoKLSAgICAgICAgICAgICMgZW1wdHkgZm9sZGVyLCBub3QgYSBzaW5nbGUgZmlsZSAuLi4KLSAgICAgICAgICAgICMga2VybmVsIHNvdXJjZSBkb191bnBhY2sgaXMgc3BlY2lhbCBjYXNlZAotICAgICAgICAgICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgotICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJVbmFibGUgdG8gZGV0ZXJtaW5lIHNvdXJjZV9kYXRlX2Vwb2NoISBwYXRoOiVzIiAlIHBhdGgpCi0KKyAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0g6ICVkIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQogICAgIGJiLnV0aWxzLm1rZGlyaGllcihkLmdldFZhcignU0RFX0RJUicpKQogICAgIHdpdGggb3BlbihlcG9jaGZpbGUsICd3JykgYXMgZjoKICAgICAgICAgZi53cml0ZShzdHIoc291cmNlX2RhdGVfZXBvY2gpKQpAQCAtMTQ1LDYgKzE2MSw2IEBACiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6CiAgICAgICAgICAgICB3aXRoIG9wZW4oZXBvY2hmaWxlLCAncicpIGFzIGY6CiAgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBmLnJlYWQoKQotICAgICAgICAgICAgYmIuZGVidWcoMSwgInNvdXJjZV9kYXRlX2Vwb2NoIHN0YW1wIGZvdW5kIC0tLT4gc3RhbXAgJXMiICUgc291cmNlX2RhdGVfZXBvY2gpCisgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU09VUkNFX0RBVEVfRVBPQ0g6ICVzIiAlIHNvdXJjZV9kYXRlX2Vwb2NoKQogICAgICAgICBkLnNldFZhcignU09VUkNFX0RBVEVfRVBPQ0gnLCBzb3VyY2VfZGF0ZV9lcG9jaCkKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwppbmRleCAzMWQ5OWU0Li4xMGUxMzRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCkBAIC00Nyw1OSArNDcsNjAgQEAKICAgICBjZCBgZGlybmFtZSAke1NUQU1QfWAKICAgICBmb3IgaSBpbiBgYmFzZW5hbWUgJHtTVEFNUH1gKgogICAgIGRvCi0gICAgICAgIGZvciBqIGluICR7U1NUQVRFVEFTS1N9IGRvX3NoYXJlZF93b3JrZGlyCi0gICAgICAgIGRvCi0gICAgICAgICAgICBjYXNlICRpIGluCi0gICAgICAgICAgICAqZG9fc2V0c2NlbmUqKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpzaWdkYXRhKnwqc2lnYmFzZWRhdGEqKQotICAgICAgICAgICAgICAgIGk9ZHVtbXkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqZG9fcGFja2FnZV93cml0ZSopCi0gICAgICAgICAgICAgICAgaT1kdW1teQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpkb19pbWFnZV9jb21wbGV0ZSopCi0gICAgICAgICAgICAgICAgbXYgJGkgYGVjaG8gJGkgfCBzZWQgLWUgInMjZG9faW1hZ2VfY29tcGxldGUjZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUjImAKLSAgICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX3Jvb3Rmcyp8KmRvX2ltYWdlKnwqZG9fYm9vdGltZyp8KmRvX3dyaXRlX3FlbXVib290X2NvbmYqKQotICAgICAgICAgICAgICAgIGk9ZHVtbXkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqZG9fYnVpbGQqKQotICAgICAgICAgICAgICAgIGk9ZHVtbXkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QqKQotICAgICAgICAgICAgICAgICMgUHJlc2VydmUgcmVjaXBlLXN5c3Jvb3QtbmF0aXZlIGlmIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290IGhhcyBiZWVuIHVzZWQKLSAgICAgICAgICAgICAgICBleGNsdWRlcz0iJGV4Y2x1ZGVzIHJlY2lwZS1zeXNyb290LW5hdGl2ZSIKLSAgICAgICAgICAgICAgICBpPWR1bW15Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICA7OworICAgICAgICAjIEJ5IGRlZmF1bHQgd2UnbGwgZGVsZXRlIHRoZSBzdGFtcCwgdW5sZXNzICRpIGlzIGNoYW5nZWQgYnkgdGhlIGlubmVyIGxvb3AKKyAgICAgICAgIyAoaT1kdW1teSBkb2VzIHRoaXMpCisKKyAgICAgICAgY2FzZSAkaSBpbgorICAgICAgICAqc2lnZGF0YSp8KnNpZ2Jhc2VkYXRhKikKKyAgICAgICAgICAgICMgU2F2ZS9za2lwIGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZSBhIHNpZ25hdHVyZSBkYXRhIGZpbGUuCisgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICA7OworICAgICAgICAqZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUqKQorICAgICAgICAgICAgIyBFbnN1cmUgd2UgZG9uJ3QgJ3N0YWNrJyBzZXRzY2VuZSBleHRlbnNpb25zIHRvIHRoaXMgc3RhbXAgd2l0aCB0aGUgc2VjdGlvbiBiZWxvdworICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKmRvX2ltYWdlX2NvbXBsZXRlKikKKyAgICAgICAgICAgICMgUHJvbW90ZSBkb19pbWFnZV9jb21wbGV0ZSBzdGFtcHMgdG8gc2V0c2NlbmUgdmVyc2lvbnMgKGFoZWFkIG9mICpkb19pbWFnZSogYmVsb3cpCisgICAgICAgICAgICBtdiAkaSBgZWNobyAkaSB8IHNlZCAtZSAicyNkb19pbWFnZV9jb21wbGV0ZSNkb19pbWFnZV9jb21wbGV0ZV9zZXRzY2VuZSMiYAorICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKmRvX3BhY2thZ2Vfd3JpdGUqfCpkb19yb290ZnMqfCpkb19pbWFnZSp8KmRvX2Jvb3RpbWcqfCpkb193cml0ZV9xZW11Ym9vdF9jb25mKnwqZG9fYnVpbGQqKQorICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKmRvX2FkZHRvX3JlY2lwZV9zeXNyb290KikKKyAgICAgICAgICAgICMgUHJlc2VydmUgcmVjaXBlLXN5c3Jvb3QtbmF0aXZlIGlmIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290IGhhcyBiZWVuIHVzZWQKKyAgICAgICAgICAgIGV4Y2x1ZGVzPSIkZXhjbHVkZXMgcmVjaXBlLXN5c3Jvb3QtbmF0aXZlIgorICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKmRvX3BhY2thZ2V8KmRvX3BhY2thZ2UuKnwqZG9fcGFja2FnZV9zZXRzY2VuZS4qKQogICAgICAgICAgICAgIyBXZSByZW1vdmUgZG9fcGFja2FnZSBlbnRpcmVseSwgaW5jbHVkaW5nIGFueQogICAgICAgICAgICAgIyBzc3RhdGUgdmVyc2lvbiBzaW5jZSBvdGhlcndpc2Ugd2UnZCBuZWVkIHRvIGxlYXZlICdwbGFpbmRpcnMnIGFyb3VuZAogICAgICAgICAgICAgIyBzdWNoIGFzICdwYWNrYWdlcycgYW5kICdwYWNrYWdlcy1zcGxpdCcgYW5kIHRoZXNlIGNhbiBiZSBsYXJnZS4gTm8gZW5kCiAgICAgICAgICAgICAjIG9mIGNoYWluIHRhc2tzIGRlcGVuZCBkaXJlY3RseSBvbiBkb19wYWNrYWdlIGFueW1vcmUuCi0gICAgICAgICAgICAqZG9fcGFja2FnZXwqZG9fcGFja2FnZS4qfCpkb19wYWNrYWdlX3NldHNjZW5lLiopCi0gICAgICAgICAgICAgICAgcm0gLWYgJGk7Ci0gICAgICAgICAgICAgICAgaT1kdW1teQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICpfc2V0c2NlbmUqKQotICAgICAgICAgICAgICAgIGk9ZHVtbXkKKyAgICAgICAgICAgIHJtIC1mICRpOworICAgICAgICAgICAgaT1kdW1teQorICAgICAgICAgICAgOzsKKyAgICAgICAgKl9zZXRzY2VuZSopCisgICAgICAgICAgICAjIFNraXAgc3RhbXBzIHdoaWNoIGFyZSBhbHJlYWR5IHNldHNjZW5lIHZlcnNpb25zCisgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisKKyAgICAgICAgZm9yIGogaW4gJHtTU1RBVEVUQVNLU30gZG9fc2hhcmVkX3dvcmtkaXIKKyAgICAgICAgZG8KKyAgICAgICAgICAgIGNhc2UgJGkgaW4KKyAgICAgICAgICAgIGR1bW15KQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICokanwqJGouKikKKyAgICAgICAgICAgICAgICAjIFByb21vdGUgdGhlIHN0YW1wIHRvIGEgc2V0c2NlbmUgdmVyc2lvbgogICAgICAgICAgICAgICAgIG12ICRpIGBlY2hvICRpIHwgc2VkIC1lICJzIyR7an0jJHtqfV9zZXRzY2VuZSMiYAogICAgICAgICAgICAgICAgIGk9ZHVtbXkKICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgZXNhYwogICAgICAgICBkb25lCisKICAgICAgICAgcm0gLWYgJGkKICAgICBkb25lCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwppbmRleCAyMjE4NjllLi5iZGU1OGFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCkBAIC0yLDkgKzIsMTIgQEAKICMgWmFwIHRoZSByb290IHBhc3N3b3JkIGlmIGRlYnVnLXR3ZWFrcyBmZWF0dXJlIGlzIG5vdCBlbmFibGVkCiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJJTUFHRV9GRUFUVVJFUyIsIFsgJ2RlYnVnLXR3ZWFrcycsICdlbXB0eS1yb290LXBhc3N3b3JkJyBdLCAiIiwgInphcF9lbXB0eV9yb290X3Bhc3N3b3JkIDsgIixkKX0nCiAKLSMgQWxsb3cgZHJvcGJlYXIvb3BlbnNzaCB0byBhY2NlcHQgbG9naW5zIGZyb20gYWNjb3VudHMgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCBzdHJpbmcgaWYgZGVidWctdHdlYWtzIGlzIGVuYWJsZWQKKyMgQWxsb3cgZHJvcGJlYXIvb3BlbnNzaCB0byBhY2NlcHQgbG9naW5zIGZyb20gYWNjb3VudHMgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCBzdHJpbmcgaWYgZGVidWctdHdlYWtzIG9yIGFsbG93LWVtcHR5LXBhc3N3b3JkIGlzIGVuYWJsZWQKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWluc19hbnkoIklNQUdFX0ZFQVRVUkVTIiwgWyAnZGVidWctdHdlYWtzJywgJ2FsbG93LWVtcHR5LXBhc3N3b3JkJyBdLCAic3NoX2FsbG93X2VtcHR5X3Bhc3N3b3JkOyAiLCAiIixkKX0nCiAKKyMgQWxsb3cgZHJvcGJlYXIvb3BlbnNzaCB0byBhY2NlcHQgcm9vdCBsb2dpbnMgaWYgZGVidWctdHdlYWtzIG9yIGFsbG93LXJvb3QtbG9naW4gaXMgZW5hYmxlZAorUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiSU1BR0VfRkVBVFVSRVMiLCBbICdkZWJ1Zy10d2Vha3MnLCAnYWxsb3ctcm9vdC1sb2dpbicgXSwgInNzaF9hbGxvd19yb290X2xvZ2luOyAiLCAiIixkKX0nCisKICMgRW5hYmxlIHBvc3RpbnN0IGxvZ2dpbmcgaWYgZGVidWctdHdlYWtzIGlzIGVuYWJsZWQKIFJPT1RGU19QT1NUUFJPQ0VTU19DT01NQU5EICs9ICcke0BiYi51dGlscy5jb250YWluc19hbnkoIklNQUdFX0ZFQVRVUkVTIiwgWyAnZGVidWctdHdlYWtzJywgJ3Bvc3QtaW5zdGFsbC1sb2dnaW5nJyBdLCAicG9zdGluc3RfZW5hYmxlX2xvZ2dpbmc7ICIsICIiLGQpfScKIApAQCAtMzYsMTEgKzM5LDYgQEAKIAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gJ2VtcHR5X3Zhcl92b2xhdGlsZTsnCiAKLSMgRGlzYWJsZSBETlMgbG9va3VwcywgdGhlIFNTSF9ESVNBQkxFX0ROU19MT09LVVAgY2FuIGJlIG92ZXJyaWRkZW4gdG8gYWxsb3cKLSMgZGlzdHJvcyB0byBjaG9vc2Ugbm90IHRvIHRha2UgdGhpcyBjaGFuZ2UKLVNTSF9ESVNBQkxFX0ROU19MT09LVVAgPz0gIiBzc2hfZGlzYWJsZV9kbnNfbG9va3VwIDsgIgotUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRfYXBwZW5kX3FlbXVhbGwgPSAiJHtTU0hfRElTQUJMRV9ETlNfTE9PS1VQfSIKLQogIyBTb3J0IHRoZSB1c2VyIGFuZCBncm91cCBlbnRyaWVzIGluIC9ldGMgYnkgSUQgaW4gb3JkZXIgdG8gbWFrZSB0aGUgY29udGVudAogIyBkZXRlcm1pbmlzdGljLiBQYWNrYWdlIGluc3RhbGxzIGFyZSBub3QgZGV0ZXJtaW5pc3RpYywgY2F1c2luZyB0aGUgb3JkZXJpbmcKICMgb2YgZW50cmllcyB0byBjaGFuZ2UgYmV0d2VlbiBidWlsZHMuIEluIGNhc2UgdGhhdCB0aGlzIGlzbid0IGRlc2lyZWQsCkBAIC0xNDMsMTIgKzE0MSwxMSBAQAogfQogCiAjCi0jIGFsbG93IGRyb3BiZWFyL29wZW5zc2ggdG8gYWNjZXB0IHJvb3QgbG9naW5zIGFuZCBsb2dpbnMgZnJvbSBhY2NvdW50cyB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkIHN0cmluZworIyBhbGxvdyBkcm9wYmVhci9vcGVuc3NoIHRvIGFjY2VwdCBsb2dpbnMgZnJvbSBhY2NvdW50cyB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkIHN0cmluZwogIwogc3NoX2FsbG93X2VtcHR5X3Bhc3N3b3JkICgpIHsKIAlmb3IgY29uZmlnIGluIHNzaGRfY29uZmlnIHNzaGRfY29uZmlnX3JlYWRvbmx5OyBkbwogCQlpZiBbIC1lICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vc3NoLyRjb25maWcgXTsgdGhlbgotCQkJc2VkIC1pICdzL15bI1s6c3BhY2U6XV0qUGVybWl0Um9vdExvZ2luLiovUGVybWl0Um9vdExvZ2luIHllcy8nICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vc3NoLyRjb25maWcKIAkJCXNlZCAtaSAncy9eWyNbOnNwYWNlOl1dKlBlcm1pdEVtcHR5UGFzc3dvcmRzLiovUGVybWl0RW1wdHlQYXNzd29yZHMgeWVzLycgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9zc2gvJGNvbmZpZwogCQlmaQogCWRvbmUKQEAgLTE3MSw5ICsxNjgsMjAgQEAKIAlmaQogfQogCi1zc2hfZGlzYWJsZV9kbnNfbG9va3VwICgpIHsKLQlpZiBbIC1lICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNVc2VETlMgeWVzOlVzZUROUyBubzonICR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisjCisjIGFsbG93IGRyb3BiZWFyL29wZW5zc2ggdG8gYWNjZXB0IHJvb3QgbG9naW5zCisjCitzc2hfYWxsb3dfcm9vdF9sb2dpbiAoKSB7CisJZm9yIGNvbmZpZyBpbiBzc2hkX2NvbmZpZyBzc2hkX2NvbmZpZ19yZWFkb25seTsgZG8KKwkJaWYgWyAtZSAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC8kY29uZmlnIF07IHRoZW4KKwkJCXNlZCAtaSAncy9eWyNbOnNwYWNlOl1dKlBlcm1pdFJvb3RMb2dpbi4qL1Blcm1pdFJvb3RMb2dpbiB5ZXMvJyAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L3NzaC8kY29uZmlnCisJCWZpCisJZG9uZQorCisJaWYgWyAtZSAke0lNQUdFX1JPT1RGU30ke3NiaW5kaXJ9L2Ryb3BiZWFyIF0gOyB0aGVuCisJCWlmIGdyZXAgLXEgRFJPUEJFQVJfRVhUUkFfQVJHUyAke0lNQUdFX1JPT1RGU30ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZHJvcGJlYXIgMj4vZGV2L251bGwgOyB0aGVuCisJCQlzZWQgLWkgJy9eRFJPUEJFQVJfRVhUUkFfQVJHUz0vIHMvLXcvLycgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2Ryb3BiZWFyCisJCWZpCiAJZmkKIH0KIApAQCAtMjQ1LDcgKzI1Myw2IEBACiAgICAgcGtncyA9IGltYWdlX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzKGQpCiAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X25hbWUsICd3KycpIGFzIGltYWdlX21hbmlmZXN0OgogICAgICAgICBpbWFnZV9tYW5pZmVzdC53cml0ZShmb3JtYXRfcGtnX2xpc3QocGtncywgInZlciIpKQotICAgICAgICBpbWFnZV9tYW5pZmVzdC53cml0ZSgiXG4iKQogCiAgICAgaWYgb3MucGF0aC5leGlzdHMobWFuaWZlc3RfbmFtZSk6CiAgICAgICAgIG1hbmlmZXN0X2xpbmsgPSBkZXBsb3lfZGlyICsgIi8iICsgbGlua19uYW1lICsgIi5tYW5pZmVzdCIKQEAgLTMwOCwxNyArMzE1LDE4IEBACiBweXRob24gd3JpdGVfaW1hZ2VfdGVzdF9kYXRhKCkgewogICAgIGZyb20gb2UuZGF0YSBpbXBvcnQgZXhwb3J0Mmpzb24KIAotICAgIHRlc3RkYXRhID0gIiVzLyVzLnRlc3RkYXRhLmpzb24iICUgKGQuZ2V0VmFyKCdERVBMT1lfRElSX0lNQUdFJyksIGQuZ2V0VmFyKCdJTUFHRV9OQU1FJykpCi0gICAgdGVzdGRhdGFfbGluayA9ICIlcy8lcy50ZXN0ZGF0YS5qc29uIiAlIChkLmdldFZhcignREVQTE9ZX0RJUl9JTUFHRScpLCBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJykpCisgICAgZGVwbG95X2RpciA9IGQuZ2V0VmFyKCdJTUdERVBMT1lESVInKQorICAgIGxpbmtfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9MSU5LX05BTUUnKQorICAgIHRlc3RkYXRhX25hbWUgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgIiVzLnRlc3RkYXRhLmpzb24iICUgZC5nZXRWYXIoJ0lNQUdFX05BTUUnKSkKIAotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUodGVzdGRhdGEpKQogICAgIHNlYXJjaFN0cmluZyA9ICIlcy8iJShkLmdldFZhcigiVE9QRElSIikpLnJlcGxhY2UoIi8vIiwiLyIpCi0gICAgZXhwb3J0Mmpzb24oZCwgdGVzdGRhdGEsc2VhcmNoU3RyaW5nPXNlYXJjaFN0cmluZyxyZXBsYWNlU3RyaW5nPSIiKQorICAgIGV4cG9ydDJqc29uKGQsIHRlc3RkYXRhX25hbWUsIHNlYXJjaFN0cmluZz1zZWFyY2hTdHJpbmcsIHJlcGxhY2VTdHJpbmc9IiIpCiAKLSAgICBpZiB0ZXN0ZGF0YV9saW5rICE9IHRlc3RkYXRhOgorICAgIGlmIG9zLnBhdGguZXhpc3RzKHRlc3RkYXRhX25hbWUpOgorICAgICAgICB0ZXN0ZGF0YV9saW5rID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXIsICIlcy50ZXN0ZGF0YS5qc29uIiAlIGxpbmtfbmFtZSkKICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKHRlc3RkYXRhX2xpbmspOgotICAgICAgICAgICBvcy5yZW1vdmUodGVzdGRhdGFfbGluaykKLSAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHRlc3RkYXRhKSwgdGVzdGRhdGFfbGluaykKKyAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0ZGF0YV9saW5rKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUodGVzdGRhdGFfbmFtZSksIHRlc3RkYXRhX2xpbmspCiB9CiB3cml0ZV9pbWFnZV90ZXN0X2RhdGFbdmFyZGVwc2V4Y2x1ZGVdICs9ICJUT1BESVIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcwppbmRleCA5ZWUxZGZjLi4yYjkzNzk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2RlYi5iYmNsYXNzCkBAIC02LDcgKzYsNyBAQAogCiBkb19yb290ZnNbZGVwZW5kc10gKz0gImRwa2ctbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgYXB0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fcG9wdWxhdGVfc2RrW2RlcGVuZHNdICs9ICJkcGtnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGFwdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBiemlwMi1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKLWRvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2Vfd3JpdGVfZGViIgorZG9fcm9vdGZzW3JlY3JkZXB0YXNrXSArPSAiZG9fcGFja2FnZV93cml0ZV9kZWIgZG9fcGFja2FnZV9xYSIKIGRvX3Jvb3Rmc1t2YXJkZXBzXSArPSAiUEFDS0FHRV9GRUVEX1VSSVMiCiAKIGRvX3Jvb3Rmc1tsb2NrZmlsZXNdICs9ICIke0RFUExPWV9ESVJfREVCfS9kZWIubG9jayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19pcGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19pcGsuYmJjbGFzcwppbmRleCA1MmI0NjhkLi5hYWJjMzcwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfaXBrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX2lway5iYmNsYXNzCkBAIC0xMCw3ICsxMCw3IEBACiAKIGRvX3Jvb3Rmc1tkZXBlbmRzXSArPSAib3BrZy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBvcGtnLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fcG9wdWxhdGVfc2RrW2RlcGVuZHNdICs9ICJvcGtnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG9wa2ctdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi1kb19yb290ZnNbcmVjcmRlcHRhc2tdICs9ICJkb19wYWNrYWdlX3dyaXRlX2lwayIKK2RvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2Vfd3JpdGVfaXBrIGRvX3BhY2thZ2VfcWEiCiBkb19yb290ZnNbdmFyZGVwc10gKz0gIlBBQ0tBR0VfRkVFRF9VUklTIgogCiBkb19yb290ZnNbbG9ja2ZpbGVzXSArPSAiJHtXT1JLRElSfS9pcGsubG9jayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19ycG0uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19ycG0uYmJjbGFzcwppbmRleCA3ZjMwNWY1Li41MWY4OWVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfcnBtLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzX3JwbS5iYmNsYXNzCkBAIC0yMyw3ICsyMyw3IEBACiBkb19yb290ZnNbZGVwZW5kc10gKz0gIiR7UlBNUk9PVEZTREVQRU5EU30iCiBkb19wb3B1bGF0ZV9zZGtbZGVwZW5kc10gKz0gIiR7UlBNUk9PVEZTREVQRU5EU30iCiAKLWRvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gImRvX3BhY2thZ2Vfd3JpdGVfcnBtIgorZG9fcm9vdGZzW3JlY3JkZXB0YXNrXSArPSAiZG9fcGFja2FnZV93cml0ZV9ycG0gZG9fcGFja2FnZV9xYSIKIGRvX3Jvb3Rmc1t2YXJkZXBzXSArPSAiUEFDS0FHRV9GRUVEX1VSSVMiCiAKIHB5dGhvbiAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MKaW5kZXggNTYzNDNiMS4uYTkyM2VhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29scy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcwpAQCAtMSw4ICsxLDMgQEAKIGluaGVyaXQgZGlzdHV0aWxzCiAKLURFUEVORFMgKz0gInB5dGhvbi1kaXN0cmlidXRlLW5hdGl2ZSIKLQotRElTVFVUSUxTX0lOU1RBTExfQVJHUyA9ICItLXJvb3Q9JHtEfSBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke2RhdGFkaXJ9IgorREVQRU5EUyArPSAicHl0aG9uLXNldHVwdG9vbHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29sczMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMzLmJiY2xhc3MKaW5kZXggZGU2ZGQ5NC4uOGNhNjZlZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc2V0dXB0b29sczMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzMy5iYmNsYXNzCkBAIC0yLDcgKzIsMyBAQAogCiBERVBFTkRTICs9ICJweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgogCi1ESVNUVVRJTFNfSU5TVEFMTF9BUkdTID0gIi0tcm9vdD0ke0R9IFwKLSAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgIC0taW5zdGFsbC1kYXRhPSR7ZGF0YWRpcn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwppbmRleCA4NmJiODUzLi40MTFlNzA0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKQEAgLTE1LDExICsxNSwxMyBAQAogIyBJdCBpcyBhbiBlcnJvciBmb3IgdGhlIHRhcmdldCBub3QgdG8gZXhpc3QuCiAjIElmICd3aGF0JyBkb2Vzbid0IGV4aXN0IHRoZW4gYW4gZW1wdHkgdmFsdWUgaXMgcmV0dXJuZWQKICMKLWRlZiBzaXRlaW5mb19kYXRhKGQpOgorZGVmIHNpdGVpbmZvX2RhdGFfZm9yX21hY2hpbmUoYXJjaCwgb3MsIGQpOgogICAgIGFyY2hpbmZvID0gewogICAgICAgICAiYWxsYXJjaCI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiIsICMgYm9ndXMsIGJ1dCBiZXR0ZXIgdGhhbiBzcGVjaWFsLWNhc2luZyB0aGUgY2hlY2tzIGJlbG93IGZvciBhbGxhcmNoCiAgICAgICAgICJhYXJjaDY0IjogImVuZGlhbi1saXR0bGUgYml0LTY0IGFybS1jb21tb24gYXJtLTY0IiwKICAgICAgICAgImFhcmNoNjRfYmUiOiAiZW5kaWFuLWJpZyBiaXQtNjQgYXJtLWNvbW1vbiBhcm0tNjQiLAorICAgICAgICAiYXJjIjogImVuZGlhbi1saXR0bGUgYml0LTMyIGFyYy1jb21tb24iLAorICAgICAgICAiYXJjZWIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgYXJjLWNvbW1vbiIsCiAgICAgICAgICJhcm0iOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgYXJtLWNvbW1vbiBhcm0tMzIiLAogICAgICAgICAiYXJtZWIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgYXJtLWNvbW1vbiBhcm0tMzIiLAogICAgICAgICAiYXZyMzIiOiAiZW5kaWFuLWJpZyBiaXQtMzIgYXZyMzItY29tbW9uIiwKQEAgLTMwLDYgKzMyLDggQEAKICAgICAgICAgImk1ODYiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgaXg4Ni1jb21tb24iLAogICAgICAgICAiaTY4NiI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBpeDg2LWNvbW1vbiIsCiAgICAgICAgICJpYTY0IjogImVuZGlhbi1saXR0bGUgYml0LTY0IiwKKyAgICAgICAgImxtMzIiOiAiZW5kaWFuLWJpZyBiaXQtMzIiLAorICAgICAgICAibTY4ayI6ICJlbmRpYW4tYmlnIGJpdC0zMiIsCiAgICAgICAgICJtaWNyb2JsYXplIjogImVuZGlhbi1iaWcgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKICAgICAgICAgIm1pY3JvYmxhemVlYiI6ICJlbmRpYW4tYmlnIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCiAgICAgICAgICJtaWNyb2JsYXplZWwiOiAiZW5kaWFuLWxpdHRsZSBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLApAQCAtMTI4LDE1ICsxMzIsMTMgQEAKICAgICAgICAgbG9jcyA9IHsgImFyY2hpbmZvIiA6IGFyY2hpbmZvLCAib3NpbmZvIiA6IG9zaW5mbywgInRhcmdldGluZm8iIDogdGFyZ2V0aW5mbywgImQiIDogZH0KICAgICAgICAgYXJjaGluZm8sIG9zaW5mbywgdGFyZ2V0aW5mbyA9IGJiLnV0aWxzLmJldHRlcl9ldmFsKGNhbGwsIGxvY3MpCiAKLSAgICBob3N0YXJjaCA9IGQuZ2V0VmFyKCJIT1NUX0FSQ0giKQotICAgIGhvc3RvcyA9IGQuZ2V0VmFyKCJIT1NUX09TIikKLSAgICB0YXJnZXQgPSAiJXMtJXMiICUgKGhvc3RhcmNoLCBob3N0b3MpCisgICAgdGFyZ2V0ID0gIiVzLSVzIiAlIChhcmNoLCBvcykKIAogICAgIHNpdGVkYXRhID0gW10KLSAgICBpZiBob3N0YXJjaCBpbiBhcmNoaW5mbzoKLSAgICAgICAgc2l0ZWRhdGEuZXh0ZW5kKGFyY2hpbmZvW2hvc3RhcmNoXS5zcGxpdCgpKQotICAgIGlmIGhvc3RvcyBpbiBvc2luZm86Ci0gICAgICAgIHNpdGVkYXRhLmV4dGVuZChvc2luZm9baG9zdG9zXS5zcGxpdCgpKQorICAgIGlmIGFyY2ggaW4gYXJjaGluZm86CisgICAgICAgIHNpdGVkYXRhLmV4dGVuZChhcmNoaW5mb1thcmNoXS5zcGxpdCgpKQorICAgIGlmIG9zIGluIG9zaW5mbzoKKyAgICAgICAgc2l0ZWRhdGEuZXh0ZW5kKG9zaW5mb1tvc10uc3BsaXQoKSkKICAgICBpZiB0YXJnZXQgaW4gdGFyZ2V0aW5mbzoKICAgICAgICAgc2l0ZWRhdGEuZXh0ZW5kKHRhcmdldGluZm9bdGFyZ2V0XS5zcGxpdCgpKQogICAgIHNpdGVkYXRhLmFwcGVuZCh0YXJnZXQpCkBAIC0xNDUsNiArMTQ3LDkgQEAKICAgICBiYi5kZWJ1ZygxLCAiU0lURSBmaWxlcyAlcyIgJSBzaXRlZGF0YSk7CiAgICAgcmV0dXJuIHNpdGVkYXRhCiAKK2RlZiBzaXRlaW5mb19kYXRhKGQpOgorICAgIHJldHVybiBzaXRlaW5mb19kYXRhX2Zvcl9tYWNoaW5lKGQuZ2V0VmFyKCJIT1NUX0FSQ0giKSwgZC5nZXRWYXIoIkhPU1RfT1MiKSwgZCkKKwogcHl0aG9uICgpIHsKICAgICBzaXRlZGF0YSA9IHNldChzaXRlaW5mb19kYXRhKGQpKQogICAgIGlmICJlbmRpYW4tbGl0dGxlIiBpbiBzaXRlZGF0YToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NwZHguYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NwZHguYmJjbGFzcwppbmRleCBjNWY1NDRkLi5mYjc4ZTI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zcGR4LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3BkeC5iYmNsYXNzCkBAIC0yMDIsMTggKzIwMiwxMyBAQAogICAgIHJldHVybgogCiBkZWYgaGFzaF9maWxlKGZpbGVfbmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4oZmlsZV9uYW1lLCAncmInKSBhcyBmOgotICAgICAgICAgICAgZGF0YV9zdHJpbmcgPSBmLnJlYWQoKQotICAgICAgICAgICAgc2hhMSA9IGhhc2hfc3RyaW5nKGRhdGFfc3RyaW5nKQotICAgICAgICAgICAgcmV0dXJuIHNoYTEKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBOb25lCisgICAgZnJvbSBiYi51dGlscyBpbXBvcnQgc2hhMV9maWxlCisgICAgcmV0dXJuIHNoYTFfZmlsZShmaWxlX25hbWUpCiAKIGRlZiBoYXNoX3N0cmluZyhkYXRhKToKICAgICBpbXBvcnQgaGFzaGxpYgogICAgIHNoYTEgPSBoYXNobGliLnNoYTEoKQotICAgIHNoYTEudXBkYXRlKGRhdGEpCisgICAgc2hhMS51cGRhdGUoZGF0YS5lbmNvZGUoJ3V0Zi04JykpCiAgICAgcmV0dXJuIHNoYTEuaGV4ZGlnZXN0KCkKIAogZGVmIHJ1bl9mb3Nzb2xvZ3koZm9zc19jb21tYW5kLCBmdWxsX3NwZHgpOgpAQCAtMjI2LDcgKzIyMSw3IEBACiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBmb3NzX291dHB1dCA9IHN0cmluZy5yZXBsYWNlKGZvc3Nfb3V0cHV0LCAnXHInLCAnJykKKyAgICBmb3NzX291dHB1dCA9IGZvc3Nfb3V0cHV0LnJlcGxhY2UoJ1xyJywgJycpCiAKICAgICAjIFBhY2thZ2UgaW5mbwogICAgIHBhY2thZ2VfaW5mbyA9IHt9CkBAIC0yODksNyArMjg0LDggQEAKIGRlZiBnZXRfdmVyX2NvZGUoZGlybmFtZSk6CiAgICAgY2hrc3VtcyA9IFtdCiAgICAgZm9yIGZfZGlyLCBmIGluIGxpc3RfZmlsZXMoZGlybmFtZSk6Ci0gICAgICAgIGhhc2ggPSBoYXNoX2ZpbGUob3MucGF0aC5qb2luKGRpcm5hbWUsIGZfZGlyLCBmKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmX2RpciwgZikKKyAgICAgICAgaGFzaCA9IGhhc2hfZmlsZShwYXRoKQogICAgICAgICBpZiBub3QgaGFzaCBpcyBOb25lOgogICAgICAgICAgICAgY2hrc3Vtcy5hcHBlbmQoaGFzaCkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKaW5kZXggMGIyODg1MC4uZWZiMDA5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKQEAgLTI1LDE0ICsyNSwyMSBAQAogU1NUQVRFX0VYVFJBUEFUSFt2YXJkZXB2YWx1ZV0gPSAiIgogCiAjIEZvciBtdWx0aWxpYiBycG0gdGhlIGFsbGFyY2ggcGFja2FnZWdyb3VwIGZpbGVzIGNhbiBvdmVyd3JpdGUgKGluIHRoZW9yeSB0aGV5J3JlIGlkZW50aWNhbCkKLVNTVEFURV9EVVBXSElURUxJU1QgPSAiJHtERVBMT1lfRElSX0lNQUdFfS8gJHtERVBMT1lfRElSfS9saWNlbnNlcy8gJHtERVBMT1lfRElSX1JQTX0vbm9hcmNoLyIKK1NTVEFURV9EVVBXSElURUxJU1QgPSAiJHtERVBMT1lfRElSfS9saWNlbnNlcy8iCiAjIEF2b2lkIGRvY2Jvb2svc2dtbCBjYXRhbG9nIHdhcm5pbmdzIGZvciBub3cKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7U1RBR0lOR19FVENESVJfTkFUSVZFfS9zZ21sICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vc2dtbCIKICMgc2RrLXByb3ZpZGVzLWR1bW15LW5hdGl2ZXNkayBhbmQgbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teSBvdmVybGFwIGZvciBkaWZmZXJlbnQgU0RLTUFDSElORQogU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1JQTX0vc2RrX3Byb3ZpZGVzX2R1bW15X25hdGl2ZXNkay8gJHtERVBMT1lfRElSX0lQS30vc2RrLXByb3ZpZGVzLWR1bW15LW5hdGl2ZXNkay8iCiBTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfUlBNfS9idWlsZHRvb2xzX2R1bW15X25hdGl2ZXNkay8gJHtERVBMT1lfRElSX0lQS30vYnVpbGR0b29scy1kdW1teS1uYXRpdmVzZGsvIgorIyB0YXJnZXQtc2RrLXByb3ZpZGVzLWR1bW15IG92ZXJsYXBzIHRoYXQgYWxsYXJjaCBpcyBkaXNhYmxlZCB3aGVuIG11bHRpbGliIGlzIHVzZWQKK1NTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7Q09NUE9ORU5UU19ESVJ9L3Nkay1wcm92aWRlcy1kdW1teS10YXJnZXQvICR7REVQTE9ZX0RJUl9SUE19L3Nka19wcm92aWRlc19kdW1teV90YXJnZXQvICR7REVQTE9ZX0RJUl9JUEt9L3Nkay1wcm92aWRlcy1kdW1teS10YXJnZXQvIgogIyBBcmNoaXZlIHRoZSBzb3VyY2VzIGZvciBtYW55IGFyY2hpdGVjdHVyZXMgaW4gb25lIGRlcGxveSBmb2xkZXIKIFNTVEFURV9EVVBXSElURUxJU1QgKz0gIiR7REVQTE9ZX0RJUl9TUkN9IgorIyBvdm1mL2dydWItZWZpL3N5c3RlbWQtYm9vdC9pbnRlbC1taWNyb2NvZGUgbXVsdGlsaWIgcmVjaXBlcyBjYW4gZ2VuZXJhdGUgaWRlbnRpY2FsIG92ZXJsYXBwaW5nIGZpbGVzCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfSU1BR0V9L292bWYiCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfSU1BR0V9L2dydWItZWZpIgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX0lNQUdFfS9zeXN0ZW1kLWJvb3QiCitTU1RBVEVfRFVQV0hJVEVMSVNUICs9ICIke0RFUExPWV9ESVJfSU1BR0V9L21pY3JvY29kZSIKIAogU1NUQVRFX1NDQU5fRklMRVMgPz0gIioubGEgKi1jb25maWcgKl9jb25maWcgcG9zdGluc3QtKiIKIFNTVEFURV9TQ0FOX0NNRCA/Pz0gJ2ZpbmQgJHtTU1RBVEVfQlVJTERESVJ9IFwoIC1uYW1lICIke0AiXCIgLW8gLW5hbWUgXCIiLmpvaW4oZC5nZXRWYXIoIlNTVEFURV9TQ0FOX0ZJTEVTIikuc3BsaXQoKSl9IiBcKSAtdHlwZSBmJwpAQCAtNTksNyArNjYsNiBAQAogU1NUQVRFUE9TVFVOUEFDS0ZVTkNTID0gInNzdGF0ZV9oYXJkY29kZV9wYXRoX3VucGFjayIKIFNTVEFURVBPU1RJTlNURlVOQ1MgPSAiIgogRVhUUkFfU1RBR0lOR19GSVhNRVMgPz0gIkhPU1RUT09MU19ESVIiCi1TU1RBVEVDTEVBTkZVTkNTID0gIiIKIAogIyBDaGVjayB3aGV0aGVyIHNzdGF0ZSBleGlzdHMgZm9yIHRhc2tzIHRoYXQgc3VwcG9ydCBzc3RhdGUgYW5kIGFyZSBpbiB0aGUKICMgbG9ja2VkIHNpZ25hdHVyZXMgZmlsZS4KQEAgLTMwMSw3ICszMDcsNyBAQAogICAgIHNzdGF0ZXBrZyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHJykgKyAnXycgKyBzc1sndGFzayddICsgIi50Z3oiCiAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3N0YXRlcGtnKToKLSAgICAgICAgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIHNzdGF0ZXBrZywgZCkKKyAgICAgICAgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIGQpCiAKICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc3N0YXRlcGtnKToKICAgICAgICAgYmIubm90ZSgiU3RhZ2luZyBwYWNrYWdlICVzIGRvZXMgbm90IGV4aXN0IiAlIHNzdGF0ZXBrZykKQEAgLTQwOCw3ICs0MTQsNyBAQAogICAgICAgICBiYi5ub3RlKCJSZXBsYWNpbmcgZml4bWUgcGF0aHMgaW4gc3N0YXRlIHBhY2thZ2U6ICVzIiAlIChzc3RhdGVfaGFyZGNvZGVfY21kKSkKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKHNzdGF0ZV9oYXJkY29kZV9jbWQsIHNoZWxsPVRydWUpCiAKLSAgICAgICAgIyBOZWVkIHRvIHJlbW92ZSB0aGlzIG9yIHdlJ2QgY29weSBpdCBpbnRvIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFuZCBtYXkgCisgICAgICAgICMgTmVlZCB0byByZW1vdmUgdGhpcyBvciB3ZSdkIGNvcHkgaXQgaW50byB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhbmQgbWF5CiAgICAgICAgICMgY29uZmxpY3Qgd2l0aCBhbm90aGVyIHdyaXRlcgogICAgICAgICBvcy5yZW1vdmUoZml4bWVmbikKIH0KQEAgLTUwNywxMCArNTEzLDYgQEAKICAgICAgICAgICAgICAgICBzdGZpbGUuZW5kc3dpdGgocm1fbm9oYXNoKToKICAgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKHN0ZmlsZSkKIAotICAgICMgUmVtb3ZlcyB0aGUgdXNlcnMvZ3JvdXBzIGNyZWF0ZWQgYnkgdGhlIHBhY2thZ2UKLSAgICBmb3IgY2xlYW5mdW5jIGluIChkLmdldFZhcignU1NUQVRFQ0xFQU5GVU5DUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoY2xlYW5mdW5jLCBkKQotCiBzc3RhdGVfY2xlYW5bdmFyZGVwc2V4Y2x1ZGVdID0gIlNTVEFURV9NQU5GSUxFUFJFRklYIgogCiBDTEVBTkZVTkNTICs9ICJzc3RhdGVfY2xlYW5hbGwiCkBAIC02NDAsNyArNjQyLDcgQEAKIAogICAgIHJldHVybgogCi1kZWYgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIHNzdGF0ZXBrZywgZCk6CitkZWYgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIGQpOgogICAgIGltcG9ydCBiYi5mZXRjaDIKIAogICAgICMgT25seSB0cnkgYW5kIGZldGNoIGlmIHRoZSB1c2VyIGhhcyBjb25maWd1cmVkIGEgbWlycm9yCkBAIC03MjAsMTcgKzcyMiwyNCBAQAogIwogc3N0YXRlX2NyZWF0ZV9wYWNrYWdlICgpIHsKIAlURklMRT1gbWt0ZW1wICR7U1NUQVRFX1BLR30uWFhYWFhYWFhgCisKKyAgICAgICAgIyBVc2UgcGlneiBpZiBhdmFpbGFibGUKKyAgICAgICAgT1BUPSItY3pTIgorICAgICAgICBpZiBbIC14ICIkKGNvbW1hbmQgLXYgcGlneikiIF07IHRoZW4KKyAgICAgICAgICAgIE9QVD0iLUkgcGlneiAtY1MiCisgICAgICAgIGZpCisKIAkjIE5lZWQgdG8gaGFuZGxlIGVtcHR5IGRpcmVjdG9yaWVzCiAJaWYgWyAiJChscyAtQSkiIF07IHRoZW4KIAkJc2V0ICtlCi0JCXRhciAtY3pmICRURklMRSAqCisJCXRhciAkT1BUIC1mICRURklMRSAqCiAJCXJldD0kPwogCQlpZiBbICRyZXQgLW5lIDAgXSAmJiBbICRyZXQgLW5lIDEgXTsgdGhlbgogCQkJZXhpdCAxCiAJCWZpCiAJCXNldCAtZQogCWVsc2UKLQkJdGFyIC1jeiAtLWZpbGU9JFRGSUxFIC0tZmlsZXMtZnJvbT0vZGV2L251bGwKKwkJdGFyICRPUFQgLS1maWxlPSRURklMRSAtLWZpbGVzLWZyb209L2Rldi9udWxsCiAJZmkKIAljaG1vZCAwNjY0ICRURklMRQogCW12IC1mICRURklMRSAke1NTVEFURV9QS0d9CkBAIC04OTAsNiArODk5LDE4IEBACiAgICAgICAgICAgICBldmRhdGFbJ2ZvdW5kJ10uYXBwZW5kKCAoc3FfZm5bdGFza10sIHNxX3Rhc2tbdGFza10sIHNxX2hhc2hbdGFza10sIHNzdGF0ZWZpbGUgKSApCiAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiTWlzc2VkU3N0YXRlIiwgZXZkYXRhKSwgZCkKIAorICAgICMgUHJpbnQgc29tZSBzdW1tYXJ5IHN0YXRpc3RpY3MgYWJvdXQgdGhlIGN1cnJlbnQgdGFzayBjb21wbGV0aW9uIGFuZCBob3cgbXVjaCBzc3RhdGUKKyAgICAjIHJldXNlIHRoZXJlIHdhcy4gQXZvaWQgZGl2aWRlIGJ5IHplcm8gZXJyb3JzLgorICAgIHRvdGFsID0gbGVuKHNxX2ZuKQorICAgIGN1cnJlbnRjb3VudCA9IGQuZ2V0VmFyKCJCQl9TRVRTQ0VORV9TVEFNUENVUlJFTlRfQ09VTlQiKSBvciAwCisgICAgY29tcGxldGUgPSAwCisgICAgaWYgY3VycmVudGNvdW50OgorICAgICAgICBjb21wbGV0ZSA9IChsZW4ocmV0KSArIGN1cnJlbnRjb3VudCkgLyAodG90YWwgKyBjdXJyZW50Y291bnQpICogMTAwCisgICAgbWF0Y2ggPSAwCisgICAgaWYgdG90YWw6CisgICAgICAgIG1hdGNoID0gbGVuKHJldCkgLyB0b3RhbCAqIDEwMAorICAgIGJiLnBsYWluKCJTc3RhdGUgc3VtbWFyeTogV2FudGVkICVkIEZvdW5kICVkIE1pc3NlZCAlZCBDdXJyZW50ICVkICglZCUlIG1hdGNoLCAlZCUlIGNvbXBsZXRlKSIgJSAodG90YWwsIGxlbihyZXQpLCBsZW4obWlzc2VkKSwgY3VycmVudGNvdW50LCBtYXRjaCwgY29tcGxldGUpKQorCiAgICAgaWYgaGFzYXR0cihiYi5wYXJzZS5zaWdnZW4sICJjaGVja2hhc2hlcyIpOgogICAgICAgICBiYi5wYXJzZS5zaWdnZW4uY2hlY2toYXNoZXMobWlzc2VkLCByZXQsIHNxX2ZuLCBzcV90YXNrLCBzcV9oYXNoLCBzcV9oYXNoZm4sIGQpCiAKQEAgLTkwMiw2ICs5MjMsNyBAQAogICAgICMgdGFzayBpcyBpbmNsdWRlZCBpbiB0YXNrZGVwZW5kZWVzIHRvbwogICAgICMgUmV0dXJuIC0gRmFsc2UgLSBXZSBuZWVkIHRoaXMgZGVwZW5kZW5jeQogICAgICMgICAgICAgIC0gVHJ1ZSAtIFdlIGNhbiBza2lwIHRoaXMgZGVwZW5kZW5jeQorICAgIGltcG9ydCByZQogCiAgICAgZGVmIGxvZ2l0KG1zZywgbG9nKToKICAgICAgICAgaWYgbG9nIGlzIG5vdCBOb25lOgpAQCAtOTU2LDExICs5NzgsMjQgQEAKIAogICAgICAgICAjIENvbnNpZGVyIHN5c3Jvb3QgZGVwZW5kaW5nIG9uIHN5c3Jvb3QgdGFza3MKICAgICAgICAgaWYgdGFza2RlcGVuZGVlc1t0YXNrXVsxXSA9PSAnZG9fcG9wdWxhdGVfc3lzcm9vdCcgYW5kIHRhc2tkZXBlbmRlZXNbZGVwXVsxXSA9PSAnZG9fcG9wdWxhdGVfc3lzcm9vdCc6Ci0gICAgICAgICAgICAjIGJhc2UtcGFzc3dkL3NoYWRvdy1zeXNyb290IGRvbid0IG5lZWQgdGhlaXIgZGVwZW5kZW5jaWVzCi0gICAgICAgICAgICBpZiB0YXNrZGVwZW5kZWVzW2RlcF1bMF0uZW5kc3dpdGgoKCJiYXNlLXBhc3N3ZCIsICJzaGFkb3ctc3lzcm9vdCIpKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgIyBOb3RoaW5nIG5lZWQgZGVwZW5kIG9uIGxpYmMtaW5pdGlhbC9nY2MtY3Jvc3MtaW5pdGlhbAotICAgICAgICAgICAgaWYgIi1pbml0aWFsIiBpbiB0YXNrZGVwZW5kZWVzW3Rhc2tdWzBdOgorICAgICAgICAgICAgIyBBbGxvdyBleGNsdWRpbmcgY2VydGFpbiByZWN1cnNpdmUgZGVwZW5kZW5jaWVzLiBJZiBhIHJlY2lwZSBuZWVkcyBpdCBzaG91bGQgYWRkIGEKKyAgICAgICAgICAgICMgc3BlY2lmaWMgZGVwZW5kZW5jeSBpdHNlbGYsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gb25lIG9mIGl0cyBkZXBlbmRlZXMgdG8gcHVsbAorICAgICAgICAgICAgIyB0aGVtIGluLgorICAgICAgICAgICAgIyBTZWUgYWxzbyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxOC1KYW51YXJ5LzE0NjMyNC5odG1sCisgICAgICAgICAgICBub3RfbmVlZGVkID0gRmFsc2UKKyAgICAgICAgICAgIGV4Y2x1ZGVkZXBzID0gZC5nZXRWYXIoJ19TU1RBVEVfRVhDTFVERURFUFNfU1lTUk9PVCcpCisgICAgICAgICAgICBpZiBleGNsdWRlZGVwcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICMgQ2FjaGUgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIHNwZWVkCisgICAgICAgICAgICAgICAgZXhjbHVkZWRlcHMgPSBbXQorICAgICAgICAgICAgICAgIGZvciBleGNsIGluIChkLmdldFZhcignU1NUQVRFX0VYQ0xVREVERVBTX1NZU1JPT1QnKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWRlcHMuYXBwZW5kKChyZS5jb21waWxlKGV4Y2wuc3BsaXQoJy0+JywgMSlbMF0pLCByZS5jb21waWxlKGV4Y2wuc3BsaXQoJy0+JywgMSlbMV0pKSkKKyAgICAgICAgICAgICAgICBkLnNldFZhcignX1NTVEFURV9FWENMVURFREVQU19TWVNST09UJywgZXhjbHVkZWRlcHMpCisgICAgICAgICAgICBmb3IgZXhjbCBpbiBleGNsdWRlZGVwczoKKyAgICAgICAgICAgICAgICBpZiBleGNsWzBdLm1hdGNoKHRhc2tkZXBlbmRlZXNbZGVwXVswXSk6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4Y2xbMV0ubWF0Y2godGFza2RlcGVuZGVlc1t0YXNrXVswXSk6CisgICAgICAgICAgICAgICAgICAgICAgICBub3RfbmVlZGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdF9uZWVkZWQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICMgRm9yIG1ldGEtZXh0c2RrLXRvb2xjaGFpbiB3ZSB3YW50IGFsbCBzeXNyb290IGRlcGVuZGVuY2llcwogICAgICAgICAgICAgaWYgdGFza2RlcGVuZGVlc1tkZXBdWzBdID09ICdtZXRhLWV4dHNkay10b29sY2hhaW4nOgpAQCAtMTAwNyw3ICsxMDQyLDcgQEAKICAgICAgICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICdfJyArIHRhc2tuYW1lICsgIi50Z3oiICIuc2lnaW5mbyIsIGQpCiB9CiAKLVNTVEFURV9QUlVORV9PQlNPTEVURVdPUktESVIgPSAiMSIKK1NTVEFURV9QUlVORV9PQlNPTEVURVdPUktESVIgPz0gIjEiCiAKICMgRXZlbnQgaGFuZGxlciB3aGljaCByZW1vdmVzIG1hbmlmZXN0cyBhbmQgc3RhbXBzIGZpbGUgZm9yCiAjIHJlY2lwZXMgd2hpY2ggYXJlIG5vIGxvbmdlciByZWFjaGFibGUgaW4gYSBidWlsZCB3aGVyZSB0aGV5CkBAIC0xMDI3LDYgKzEwNjIsMTYgQEAKICAgICAgICAgd2l0aCBvcGVuKHByZXNlcnZlc3RhbXBmaWxlLCAncicpIGFzIGY6CiAgICAgICAgICAgICBwcmVzZXJ2ZXN0YW1wcyA9IGYucmVhZGxpbmVzKCkKICAgICBzZWVuID0gW10KKworICAgICMgVGhlIG1hY2hpbmUgaW5kZXggY29udGFpbnMgYWxsIHRoZSBzdGFtcHMgdGhpcyBtYWNoaW5lIGhhcyBldmVyIHNlZW4gaW4gdGhpcyBidWlsZCBkaXJlY3RvcnkuCisgICAgIyBXZSBzaG91bGQgb25seSByZW1vdmUgdGhpbmdzIHdoaWNoIHRoaXMgbWFjaGluZSBvbmNlIGFjY2Vzc2VkIGJ1dCBubyBsb25nZXIgZG9lcy4KKyAgICBtYWNoaW5laW5kZXggPSBzZXQoKQorICAgIGJiLnV0aWxzLm1rZGlyaGllcihkLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfSIpKQorICAgIG1pID0gZC5leHBhbmQoIiR7U1NUQVRFX01BTklGRVNUU30vaW5kZXgtbWFjaGluZS0ke01BQ0hJTkV9IikKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhtaSk6CisgICAgICAgIHdpdGggb3BlbihtaSwgInIiKSBhcyBmOgorICAgICAgICAgICAgbWFjaGluZWluZGV4ID0gc2V0KGxpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBmLnJlYWRsaW5lcygpKQorCiAgICAgZm9yIGEgaW4gc29ydGVkKGxpc3Qoc2V0KGQuZ2V0VmFyKCJTU1RBVEVfQVJDSFMiKS5zcGxpdCgpKSkpOgogICAgICAgICB0b3JlbW92ZSA9IFtdCiAgICAgICAgIGkgPSBkLmV4cGFuZCgiJHtTU1RBVEVfTUFOSUZFU1RTfS9pbmRleC0iICsgYSkKQEAgLTEwMzYsNyArMTA4MSw3IEBACiAgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIChzdGFtcCwgbWFuaWZlc3QsIHdvcmtkaXIpID0gbC5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaWYgc3RhbXAgbm90IGluIHN0YW1wcyBhbmQgc3RhbXAgbm90IGluIHByZXNlcnZlc3RhbXBzOgorICAgICAgICAgICAgICAgIGlmIHN0YW1wIG5vdCBpbiBzdGFtcHMgYW5kIHN0YW1wIG5vdCBpbiBwcmVzZXJ2ZXN0YW1wcyBhbmQgc3RhbXAgaW4gbWFjaGluZWluZGV4OgogICAgICAgICAgICAgICAgICAgICB0b3JlbW92ZS5hcHBlbmQobCkKICAgICAgICAgICAgICAgICAgICAgaWYgc3RhbXAgbm90IGluIHNlZW46CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiU3RhbXAgJXMgaXMgbm90IHJlYWNoYWJsZSwgcmVtb3ZpbmcgcmVsYXRlZCBtYW5pZmVzdHMiICUgc3RhbXApCkBAIC0xMDY1LDYgKzExMTAsMTEgQEAKICAgICAgICAgd2l0aCBvcGVuKGksICJ3IikgYXMgZjoKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIGYud3JpdGUobCkKKyAgICBtYWNoaW5laW5kZXggfD0gc2V0KHN0YW1wcykKKyAgICB3aXRoIG9wZW4obWksICJ3IikgYXMgZjoKKyAgICAgICAgZm9yIGwgaW4gbWFjaGluZWluZGV4OgorICAgICAgICAgICAgZi53cml0ZShsICsgIlxuIikKKwogICAgIGlmIHByZXNlcnZlc3RhbXBzOgogICAgICAgICBvcy5yZW1vdmUocHJlc2VydmVzdGFtcGZpbGUpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKaW5kZXggOTM5MDQyZS4uODRlMTNiYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwpAQCAtNzAsNyArNzAsNyBAQAogcHl0aG9uIHN5c3Jvb3Rfc3RyaXAgKCkgewogICAgIGluaGliaXRfc3lzcm9vdCA9IGQuZ2V0VmFyKCdJTkhJQklUX1NZU1JPT1RfU1RSSVAnKQogICAgIGlmIGluaGliaXRfc3lzcm9vdCBhbmQgb2UudHlwZXMuYm9vbGVhbihpbmhpYml0X3N5c3Jvb3QpOgotICAgICAgICByZXR1cm4gMAorICAgICAgICByZXR1cm4KIAogICAgIGRzdGRpciA9IGQuZ2V0VmFyKCdTWVNST09UX0RFU1RESVInKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKQEAgLTc5LDcgKzc5LDcgQEAKICAgICBxYV9hbHJlYWR5X3N0cmlwcGVkID0gJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKQogICAgIHN0cmlwX2NtZCA9IGQuZ2V0VmFyKCJTVFJJUCIpCiAKLSAgICBvZS5wYWNrYWdlLnN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwKKyAgICBvZS5wYWNrYWdlLnN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwgZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFhX2FscmVhZHlfc3RyaXBwZWQ9cWFfYWxyZWFkeV9zdHJpcHBlZCkKIH0KIApAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCJXT1JLRElSIikKICAgICAjYmIud2FybihzdHIodGFza2RlcGRhdGEpKQogICAgIHBuID0gZC5nZXRWYXIoIlBOIikKLQorICAgIG1jID0gZC5nZXRWYXIoIkJCX0NVUlJFTlRfTUMiKQogICAgIHN0YWdpbmdkaXIgPSBkLmdldFZhcigiU1RBR0lOR19ESVIiKQogICAgIHNoYXJlZG1hbmlmZXN0cyA9IGQuZ2V0VmFyKCJDT01QT05FTlRTX0RJUiIpICsgIi9tYW5pZmVzdHMiCiAgICAgcmVjaXBlc3lzcm9vdCA9IGQuZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVCIpCkBAIC0yOTQsMTIgKzI5NCwxNCBAQAogICAgIHN0YXJ0ID0gc2V0KFtzdGFydF0pCiAKICAgICBzc3RhdGV0YXNrcyA9IGQuZ2V0VmFyKCJTU1RBVEVUQVNLUyIpLnNwbGl0KCkKKyAgICAjIEFkZCByZWNpcGUgc3BlY2lmaWMgdGFza3MgcmVmZXJlbmNlZCBieSBzZXRzY2VuZV9kZXB2YWxpZCgpCisgICAgc3N0YXRldGFza3MuYXBwZW5kKCJkb19zdGFzaF9sb2NhbGUiKQogCiAgICAgZGVmIHByaW50X2RlcF90cmVlKGRlcHRyZWUpOgogICAgICAgICBkYXRhID0gIiIKICAgICAgICAgZm9yIGRlcCBpbiBkZXB0cmVlOgogICAgICAgICAgICAgZGVwcyA9ICIgICAgIiArICJcbiAgICAiLmpvaW4oZGVwdHJlZVtkZXBdWzNdKSArICJcbiIKLSAgICAgICAgICAgIGRhdGEgPSAiJXM6XG4gICVzXG4gICVzXG4lcyAgJXNcbiAgJXNcbiIgJSAoZGVwdHJlZVtkZXBdWzBdLCBkZXB0cmVlW2RlcF1bMV0sIGRlcHRyZWVbZGVwXVsyXSwgZGVwcywgZGVwdHJlZVtkZXBdWzRdLCBkZXB0cmVlW2RlcF1bNV0pCisgICAgICAgICAgICBkYXRhID0gZGF0YSArICIlczpcbiAgJXNcbiAgJXNcbiVzICAlc1xuICAlc1xuIiAlIChkZXB0cmVlW2RlcF1bMF0sIGRlcHRyZWVbZGVwXVsxXSwgZGVwdHJlZVtkZXBdWzJdLCBkZXBzLCBkZXB0cmVlW2RlcF1bNF0sIGRlcHRyZWVbZGVwXVs1XSkKICAgICAgICAgcmV0dXJuIGRhdGEKIAogICAgICNiYi5ub3RlKCJGdWxsIGRlcCB0cmVlIGlzOlxuJXMiICUgcHJpbnRfZGVwX3RyZWUodGFza2RlcGRhdGEpKQpAQCAtNDQzLDcgKzQ0NSwxMyBAQAogCiAgICAgbXNnX2V4aXN0cyA9IFtdCiAgICAgbXNnX2FkZGluZyA9IFtdCisKICAgICBmb3IgZGVwIGluIGNvbmZpZ3VyZWRlcHM6CisgICAgICAgIGlmIG1jICE9ICdkZWZhdWx0JzoKKyAgICAgICAgICAgICMgV2Ugc2hvdWxkIG5vdCBjYXJlIGFib3V0IG90aGVyIG11bHRpY29uZmlncworICAgICAgICAgICAgZGVwbWMgPSBkZXAuc3BsaXQoJzonKVsxXQorICAgICAgICAgICAgaWYgZGVwbWMgIT0gbWM6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgYyA9IHNldHNjZW5lZGVwc1tkZXBdWzBdCiAgICAgICAgIGlmIGMgbm90IGluIGluc3RhbGxlZDoKICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLmJiY2xhc3MKaW5kZXggMWIxMzQzMi4uYzdiNzg0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcwpAQCAtMzQsMTAgKzM0LDEwIEBACiAJCXN5c3RlbWN0bCBkYWVtb24tcmVsb2FkCiAJZmkKIAotCXN5c3RlbWN0bCAkT1BUUyAke1NZU1RFTURfQVVUT19FTkFCTEV9ICR7U1lTVEVNRF9TRVJWSUNFfQorCXN5c3RlbWN0bCAkT1BUUyAke1NZU1RFTURfQVVUT19FTkFCTEV9ICR7U1lTVEVNRF9TRVJWSUNFX0VTQ0FQRUR9CiAKIAlpZiBbIC16ICIkRCIgLWEgIiR7U1lTVEVNRF9BVVRPX0VOQUJMRX0iID0gImVuYWJsZSIgXTsgdGhlbgotCQlzeXN0ZW1jdGwgLS1uby1ibG9jayByZXN0YXJ0ICR7U1lTVEVNRF9TRVJWSUNFfQorCQlzeXN0ZW1jdGwgLS1uby1ibG9jayByZXN0YXJ0ICR7U1lTVEVNRF9TRVJWSUNFX0VTQ0FQRUR9CiAJZmkKIGZpCiB9CkBAIC01MSwxMCArNTEsMTAgQEAKIAogaWYgdHlwZSBzeXN0ZW1jdGwgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgogCWlmIFsgLXogIiREIiBdOyB0aGVuCi0JCXN5c3RlbWN0bCBzdG9wICR7U1lTVEVNRF9TRVJWSUNFfQorCQlzeXN0ZW1jdGwgc3RvcCAke1NZU1RFTURfU0VSVklDRV9FU0NBUEVEfQogCWZpCiAKLQlzeXN0ZW1jdGwgJE9QVFMgZGlzYWJsZSAke1NZU1RFTURfU0VSVklDRX0KKwlzeXN0ZW1jdGwgJE9QVFMgZGlzYWJsZSAke1NZU1RFTURfU0VSVklDRV9FU0NBUEVEfQogZmkKIH0KIApAQCAtNjUsNiArNjUsNyBAQAogCiBweXRob24gc3lzdGVtZF9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKICAgICBpbXBvcnQgcmUKKyAgICBpbXBvcnQgc2hsZXgKIAogICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6CiAgICAgICAgIHJldHVybgpAQCAtODUsNiArODYsOSBAQAogICAgIGRlZiBzeXN0ZW1kX2dlbmVyYXRlX3BhY2thZ2Vfc2NyaXB0cyhwa2cpOgogICAgICAgICBiYi5kZWJ1ZygxLCAnYWRkaW5nIHN5c3RlbWQgY2FsbHMgdG8gcG9zdGluc3QvcG9zdHJtIGZvciAlcycgJSBwa2cpCiAKKyAgICAgICAgcGF0aHNfZXNjYXBlZCA9ICcgJy5qb2luKHNobGV4LnF1b3RlKHMpIGZvciBzIGluIGQuZ2V0VmFyKCdTWVNURU1EX1NFUlZJQ0VfJyArIHBrZywgVHJ1ZSkuc3BsaXQoKSkKKyAgICAgICAgZC5zZXRWYXIoJ1NZU1RFTURfU0VSVklDRV9FU0NBUEVEXycgKyBwa2csIHBhdGhzX2VzY2FwZWQpCisKICAgICAgICAgIyBBZGQgcGtnIHRvIHRoZSBvdmVycmlkZXMgc28gdGhhdCBpdCBmaW5kcyB0aGUgU1lTVEVNRF9TRVJWSUNFX3BrZwogICAgICAgICAjIHZhcmlhYmxlLgogICAgICAgICBsb2NhbGRhdGEgPSBkLmNyZWF0ZUNvcHkoKQpAQCAtMTMwLDcgKzEzNCw3IEBACiAgICAgICAgICAgICAgICAgc3lzdGVtZF9hZGRfZmlsZXNfYW5kX3BhcnNlKHBrZ19zeXN0ZW1kLCBwYXRoLCBzZXJ2aWNlX2Jhc2UgKyAnQC5zZXJ2aWNlJywga2V5cykKICAgICAgICAgICAgIGZvciBrZXkgaW4ga2V5cy5zcGxpdCgpOgogICAgICAgICAgICAgICAgICMgcmVjdXJzZSBhbGwgZGVwZW5kZW5jaWVzIGZvdW5kIGluIGtleXMgKCdBbHNvJzsnQ29uZmxpY3RzJzsuLikgYW5kIGFkZCB0byBmaWxlcwotICAgICAgICAgICAgICAgIGNtZCA9ICJncmVwICVzICVzIHwgc2VkICdzLCVzPSwsZycgfCB0ciAnLCcgJ1xcbiciICUgKGtleSwgZnVsbHBhdGgsIGtleSkKKyAgICAgICAgICAgICAgICBjbWQgPSAiZ3JlcCAlcyAlcyB8IHNlZCAncywlcz0sLGcnIHwgdHIgJywnICdcXG4nIiAlIChrZXksIHNobGV4LnF1b3RlKGZ1bGxwYXRoKSwga2V5KQogICAgICAgICAgICAgICAgIHBpcGUgPSBvcy5wb3BlbihjbWQsICdyJykKICAgICAgICAgICAgICAgICBsaW5lID0gcGlwZS5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgd2hpbGUgbGluZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlcm1pbmFsLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXJtaW5hbC5iYmNsYXNzCmluZGV4IGEyN2UxMGMuLjczZTc2NWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlcm1pbmFsLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVybWluYWwuYmJjbGFzcwpAQCAtMjUsNyArMjUsOCBAQAogICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUocnVuZmlsZSkpCiAKICAgICB3aXRoIG9wZW4ocnVuZmlsZSwgJ3cnKSBhcyBzY3JpcHQ6Ci0gICAgICAgIHNjcmlwdC53cml0ZSgnIyEvYmluL3NoIC1lXG4nKQorICAgICAgICBzY3JpcHQud3JpdGUoJyMhL3Vzci9iaW4vZW52ICVzXG4nICUgZC5nZXRWYXIoJ1NIRUxMJykpCisgICAgICAgIHNjcmlwdC53cml0ZSgnc2V0IC1lXG4nKQogICAgICAgICBiYi5kYXRhLmVtaXRfZnVuYyhjbWRfZnVuYywgc2NyaXB0LCBlbnZkYXRhKQogICAgICAgICBzY3JpcHQud3JpdGUoY21kX2Z1bmMpCiAgICAgICAgIHNjcmlwdC53cml0ZSgiXG4iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzCmluZGV4IGQwNzBmMDcuLjU5Y2JhZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0ZXhwb3J0LmJiY2xhc3MKQEAgLTEzMSw2ICsxMzEsMTEgQEAKICAgICBzaHV0aWwuY29weTIoaW1hZ2VfbWFuaWZlc3QsIG9zLnBhdGguam9pbih0ZXN0X2RhdGFfcGF0aCwgJ21hbmlmZXN0JykpCiAgICAgc2h1dGlsLmNvcHkyKHRkbmFtZSwgb3MucGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAndGVzdGRhdGEuanNvbicpKQogCisgICAgZm9yIHN1YmRpciwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhleHBvcnRfcGF0aCk6CisgICAgICAgIGZvciBkaXIgaW4gZGlyczoKKyAgICAgICAgICAgIGlmIGRpciA9PSAnX19weWNhY2hlX18nOgorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5qb2luKHN1YmRpciwgZGlyKSkKKwogICAgICMgQ3JlYXRlIHRhciBmaWxlIGZvciBjb21tb24gcGFydHMgb2YgdGVzdGV4cG9ydAogICAgIGNyZWF0ZV90YXJiYWxsKGQsICJ0ZXN0ZXhwb3J0LnRhci5neiIsIGQuZ2V0VmFyKCJURVNUX0VYUE9SVF9ESVIiKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLWF1dG8uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS1hdXRvLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYTIyYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLWF1dG8uYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCi0jCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi0KLSMgUnVuIHRlc3RzIGF1dG9tYXRpY2FsbHkgb24gYW4gaW1hZ2UgYWZ0ZXIgdGhlIGltYWdlIGlzIGNvbnN0cnVjdGVkCi0jIChhcyBvcHBvc2VkIHRvIHRlc3RpbWFnZS5iYmNsYXNzIGFsb25lIHdoZXJlIHRlc3RzIG11c3QgYmUgY2FsbGVkCi0jIG1hbnVhbGx5IHVzaW5nIGJpdGJha2UgLWMgdGVzdGltYWdlIDxpbWFnZT4pLgotIwotIyBOT1RFOiB0byB1c2UgdGhpcyBjbGFzcywgc2ltcGx5IHNldCBURVNUX0lNQUdFID0gIjEiIC0gbm8gbmVlZCB0bwotIyBpbmhlcml0IGl0IHNpbmNlIHRoYXQgd2lsbCBiZSBkb25lIGluIGltYWdlLmJiY2xhc3Mgd2hlbiB0aGlzIHZhcmlhYmxlCi0jIGhhcyBiZWVuIHNldC4KLSMKLSMgU2VlIHRlc3RpbWFnZS5iYmNsYXNzIGZvciB0aGUgdGVzdCBpbXBsZW1lbnRhdGlvbi4KLQotaW5oZXJpdCB0ZXN0aW1hZ2UKLQotcHl0aG9uIGRvX3Rlc3RpbWFnZV9hdXRvKCkgewotICAgIHRlc3RpbWFnZV9tYWluKGQpCi19Ci1hZGR0YXNrIHRlc3RpbWFnZV9hdXRvIGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19pbWFnZV9jb21wbGV0ZQotZG9fdGVzdGltYWdlX2F1dG9bZGVwZW5kc10gKz0gIiR7VEVTVElNQUdFREVQRU5EU30iCi1kb190ZXN0aW1hZ2VfYXV0b1tsb2NrZmlsZXNdICs9ICIke1RFU1RJTUFHRUxPQ0t9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwppbmRleCBhOWU4YjQ5Li5mMmZmOTFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwpAQCAtMTAsNiArMTAsMTEgQEAKICMgLSBmaXJzdCBhZGQgSU1BR0VfQ0xBU1NFUyArPSAidGVzdGltYWdlIiBpbiBsb2NhbC5jb25mCiAjIC0gYnVpbGQgYSBxZW11IGNvcmUtaW1hZ2Utc2F0bwogIyAtIHRoZW4gYml0YmFrZSBjb3JlLWltYWdlLXNhdG8gLWMgdGVzdGltYWdlLiBUaGF0IHdpbGwgcnVuIGEgc3RhbmRhcmQgc3VpdGUgb2YgdGVzdHMuCisjCisjIFRoZSB0ZXN0cyBjYW4gYmUgcnVuIGF1dG9tYXRpY2FsbHkgZWFjaCB0aW1lIGFuIGltYWdlIGlzIGJ1aWx0IGlmIHlvdSBzZXQKKyMgVEVTVElNQUdFX0FVVE8gPSAiMSIKKworVEVTVElNQUdFX0FVVE8gPz89ICIwIgogCiAjIFlvdSBjYW4gc2V0IChvciBhcHBlbmQgdG8pIFRFU1RfU1VJVEVTIGluIGxvY2FsLmNvbmYgdG8gc2VsZWN0IHRoZSB0ZXN0cwogIyB3aGljaCB5b3Ugd2FudCB0byBydW4gZm9yIHlvdXIgdGFyZ2V0LgpAQCAtMzUsMjUgKzQwLDMwIEBACiBURVNUX0VYVFJBQ1RFRF9ESVIgPz0gIiR7VEVTVF9ORUVERURfUEFDS0FHRVNfRElSfS9leHRyYWN0ZWQiCiBURVNUX1BBQ0tBR0VEX0RJUiA/PSAiJHtURVNUX05FRURFRF9QQUNLQUdFU19ESVJ9L3BhY2thZ2VkIgogCi1SUE1URVNUU1VJVEUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2RuZiBycG0nLCAnJywgZCl9IgorUEtHTUFOVEVTVFNVSVRFID0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnZG5mIHJwbScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ2lwaycsICdvcGtnJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAnZGViJywgJ2FwdCcsICcnLCBkKX0gXAorICAgICIKIFNZU1RFTURTVUlURSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgogTUlOVEVTVFNVSVRFID0gInBpbmciCiBORVRURVNUU1VJVEUgPSAiJHtNSU5URVNUU1VJVEV9IHNzaCBkZiBkYXRlIHNjcCBvZV9zeXNsb2cgJHtTWVNURU1EU1VJVEV9IgogREVWVEVTVFNVSVRFID0gImdjYyBrZXJuZWxtb2R1bGUgbGRkIgorUFRFU1RURVNUU1VJVEUgPSAiJHtNSU5URVNUU1VJVEV9IHNzaCBzY3AgcHRlc3QiCiAKIERFRkFVTFRfVEVTVF9TVUlURVMgPSAiJHtNSU5URVNUU1VJVEV9IGF1dG8iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbCA9ICIke01JTlRFU1RTVUlURX0iCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1kZXYgPSAiJHtNSU5URVNUU1VJVEV9IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICIke05FVFRFU1RTVUlURX0gcGVybCBweXRob24gbG9ncm90YXRlIHB0ZXN0IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXgxMSA9ICIke01JTlRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSBwdGVzdCIKLURFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvID0gIiR7TkVUVEVTVFNVSVRFfSBjb25ubWFuIHhvcmcgcGFyc2Vsb2dzICR7UlBNVEVTVFNVSVRFfSBcCitERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIiR7TkVUVEVTVFNVSVRFfSBwYW0gcGFyc2Vsb2dzICR7UEtHTUFOVEVTVFNVSVRFfSBwdGVzdCIKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvID0gIiR7TkVUVEVTVFNVSVRFfSBjb25ubWFuIHhvcmcgcGFyc2Vsb2dzICR7UEtHTUFOVEVTVFNVSVRFfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ3B5dGhvbicsICcnLCBkKX0gcHRlc3QgZ2kiCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2Utc2F0by1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKLSAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGVybCBwYXJzZWxvZ3MgcHl0aG9uICR7UlBNVEVTVFNVSVRFfSB4b3JnIHB0ZXN0IGdpIHN0YXAiCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0gcHRlc3QgZ2kiCisgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBlcmwgcGFyc2Vsb2dzIHB5dGhvbiAke1BLR01BTlRFU1RTVUlURX0geG9yZyBwdGVzdCBnaSBzdGFwIgorREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1kZXYgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwZXJsIHB5dGhvbiBwYXJzZWxvZ3MgJHtQS0dNQU5URVNUU1VJVEV9IHB0ZXN0IGdpIgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLWxzYi1zZGsgPSAiJHtORVRURVNUU1VJVEV9IGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKLSAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1JQTVRFU1RTVUlURX0gcHRlc3QgZ2kgc3RhcCIKKyAgICBjb25ubWFuICR7REVWVEVTVFNVSVRFfSBsb2dyb3RhdGUgcGFtIHBhcnNlbG9ncyBwZXJsIHB5dGhvbiAke1BLR01BTlRFU1RTVUlURX0gcHRlc3QgZ2kgc3RhcCIKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tbWV0YS10b29sY2hhaW4gPSAiYXV0byIKIAogIyBhYXJjaDY0IGhhcyBubyBncmFwaGljcwpAQCAtNzMsMTMgKzgzLDEzIEBACiBURVNUX1RBUkdFVCA/PSAicWVtdSIKIAogVEVTVElNQUdFREVQRU5EUyA9ICIiCi1URVNUSU1BR0VERVBFTkRTX3FlbXVhbGwgPSAicWVtdS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBxZW11LWhlbHBlci1uYXRpdmU6ZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QiCitURVNUSU1BR0VERVBFTkRTX2FwcGVuZF9xZW11YWxsID0gIiBxZW11LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHFlbXUtaGVscGVyLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHFlbXUtaGVscGVyLW5hdGl2ZTpkb19hZGR0b19yZWNpcGVfc3lzcm9vdCIKIFRFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcGlvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKLVRFU1RJTUFHRURFUEVORFNfcWVtdWFsbCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2NwaW8tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgotVEVTVElNQUdFREVQRU5EU19xZW11YWxsICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAnY3JlYXRlcmVwby1jLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKK1RFU1RJTUFHRURFUEVORFNfYXBwZW5kX3FlbXVhbGwgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcGlvLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKK1RFU1RJTUFHRURFUEVORFNfYXBwZW5kX3FlbXVhbGwgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ3JwbScsICdjcmVhdGVyZXBvLWMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgogVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2RuZi1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCi1URVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdpcGsnLCAnb3BrZy11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCi1URVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdkZWInLCAnYXB0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JywgJycsIGQpfSIKK1RFU1RJTUFHRURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdJTUFHRV9QS0dUWVBFJywgJ2lwaycsICdvcGtnLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IHBhY2thZ2UtaW5kZXg6ZG9fcGFja2FnZV9pbmRleCcsICcnLCBkKX0iCitURVNUSU1BR0VERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdkZWInLCAnYXB0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290ICBwYWNrYWdlLWluZGV4OmRvX3BhY2thZ2VfaW5kZXgnLCAnJywgZCl9IgogVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2NyZWF0ZXJlcG8tYy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcsICcnLCBkKX0iCiAKIFRFU1RJTUFHRUxPQ0sgPSAiJHtUTVBESVJ9L3Rlc3RpbWFnZS5sb2NrIgpAQCAtMTQxLDcgKzE1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICdJTUFHRV9CQVNFTkFNRSc6IGQuZ2V0VmFyKCJJTUFHRV9CQVNFTkFNRSIpLAogICAgICAgICAgICAgICAgICAgICAnSU1BR0VfUEtHVFlQRSc6IGQuZ2V0VmFyKCJJTUFHRV9QS0dUWVBFIiksCiAgICAgICAgICAgICAgICAgICAgICdTVEFSVFRJTUUnOiBkLmdldFZhcigiREFURVRJTUUiKSwKLSAgICAgICAgICAgICAgICAgICAgJ0hPU1RfRElTVFJPJzogKCctJy5qb2luKHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpKSkucmVwbGFjZSgnICcsICctJyksCisgICAgICAgICAgICAgICAgICAgICdIT1NUX0RJU1RSTyc6IG9lLmxzYi5kaXN0cm9faWRlbnRpZmllcigpLnJlcGxhY2UoJyAnLCAnLScpLAogICAgICAgICAgICAgICAgICAgICAnTEFZRVJTJzogZ2V0X2xheWVycyhkLmdldFZhcigiQkJMQVlFUlMiKSl9CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KIGdldF90ZXN0aW1hZ2VfY29uZmlndXJhdGlvblt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCkBAIC0yNDAsOCArMjUwLDggQEAKICAgICAjIEdldCB1c2Vfa3ZtCiAgICAgcWVtdV91c2Vfa3ZtID0gZC5nZXRWYXIoIlFFTVVfVVNFX0tWTSIpCiAgICAgaWYgcWVtdV91c2Vfa3ZtIGFuZCBcCi0gICAgICAgKG9lLnR5cGVzLmJvb2xlYW4ocWVtdV91c2Vfa3ZtKSBhbmQgJ3g4NicgaW4gbWFjaGluZSBvciBcCi0gICAgICAgIGQuZ2V0VmFyKCdNQUNISU5FJykgaW4gcWVtdV91c2Vfa3ZtLnNwbGl0KCkpOgorICAgICAgIChkLmdldFZhcignTUFDSElORScpIGluIHFlbXVfdXNlX2t2bS5zcGxpdCgpIG9yIFwKKyAgICAgICAgb2UudHlwZXMuYm9vbGVhbihxZW11X3VzZV9rdm0pIGFuZCAneDg2JyBpbiBtYWNoaW5lKToKICAgICAgICAga3ZtID0gVHJ1ZQogICAgIGVsc2U6CiAgICAgICAgIGt2bSA9IEZhbHNlCkBAIC0zNjMsNiArMzczLDcgQEAKICAgICByZXR1cm4gTm9uZQogCiBkZWYgY3JlYXRlX3JwbV9pbmRleChkKToKKyAgICBpbXBvcnQgZ2xvYgogICAgICMgSW5kZXggUlBNcwogICAgIHJwbV9jcmVhdGVyZXBvID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJjcmVhdGVyZXBvX2MiKQogICAgIGluZGV4X2NtZHMgPSBbXQpAQCAtMzc5LDkgKzM5MCwxMyBAQAogICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKGxvY2tmaWxlbmFtZSwgRmFsc2UpCiAgICAgICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZShycG1fZGlyLCBpZHhfcGF0aCkKICAgICAgICAgIyBGdWxsIGluZGV4ZXMgb3ZlcmxvYWQgYSAyNTZNQiBpbWFnZSBzbyByZWR1Y2UgdGhlIG51bWJlciBvZiBycG1zCi0gICAgICAgICMgaW4gdGhlIGZlZWQuIEZpbHRlciB0byByKiBzaW5jZSB3ZSB1c2UgdGhlIHJ1bi1wb3N0aW5zdCBwYWNrYWdlcyBhbmQKLSAgICAgICAgIyB0aGlzIGxlYXZlcyBzb21lIGFsbGFyY2ggYW5kIG1hY2hpbmUgYXJjaCBwYWNrYWdlcyB0b28uCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZShpZHhfcGF0aCArICIqL1thLXFzLXpdKi5ycG0iKQorICAgICAgICAjIGluIHRoZSBmZWVkIGJ5IGZpbHRlcmluZyB0byBzcGVjaWZpYyBwYWNrYWdlcyBuZWVkZWQgYnkgdGhlIHRlc3RzLgorICAgICAgICBwYWNrYWdlX2xpc3QgPSBnbG9iLmdsb2IoaWR4X3BhdGggKyAiKi8qLnJwbSIpCisKKyAgICAgICAgZm9yIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5iYXNlbmFtZShwa2cpLnN0YXJ0c3dpdGgoKCJycG0iLCAicnVuLXBvc3RpbnN0cyIsICJidXN5Ym94IiwgImJhc2giLCAidXBkYXRlLWFsdGVybmF0aXZlcyIsICJsaWJjNiIsICJjdXJsIiwgIm11c2wiKSk6CisgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHBrZykKKwogICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQogICAgICAgICBjbWQgPSAnJXMgLS11cGRhdGUgLXEgJXMnICUgKHJwbV9jcmVhdGVyZXBvLCBpZHhfcGF0aCkKIApAQCAtNDA0LDQgKzQxOSw5IEBACiAKIHRlc3RpbWFnZV9tYWluW3ZhcmRlcHNleGNsdWRlXSArPSAiQkJfT1JJR0VOViBEQVRFVElNRSIKIAorcHl0aG9uICgpIHsKKyAgICBpZiBvZS50eXBlcy5ib29sZWFuKGQuZ2V0VmFyKCJURVNUSU1BR0VfQVVUTyIpIG9yICJGYWxzZSIpOgorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCJ0ZXN0aW1hZ2UiLCAiZG9fYnVpbGQiLCAiZG9faW1hZ2VfY29tcGxldGUiLCBkKQorfQorCiBpbmhlcml0IHRlc3RzZGsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwppbmRleCA2OTgxZDQwLi40NThjM2Y0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdGVzdHNkay5iYmNsYXNzCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICdJTUFHRV9CQVNFTkFNRSc6IGQuZ2V0VmFyKCJJTUFHRV9CQVNFTkFNRSIpLAogICAgICAgICAgICAgICAgICAgICAnSU1BR0VfUEtHVFlQRSc6IGQuZ2V0VmFyKCJJTUFHRV9QS0dUWVBFIiksCiAgICAgICAgICAgICAgICAgICAgICdTVEFSVFRJTUUnOiBkLmdldFZhcigiREFURVRJTUUiKSwKLSAgICAgICAgICAgICAgICAgICAgJ0hPU1RfRElTVFJPJzogKCctJy5qb2luKHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpKSkucmVwbGFjZSgnICcsICctJyksCisgICAgICAgICAgICAgICAgICAgICdIT1NUX0RJU1RSTyc6IG9lLmxzYi5kaXN0cm9faWRlbnRpZmllcigpLnJlcGxhY2UoJyAnLCAnLScpLAogICAgICAgICAgICAgICAgICAgICAnTEFZRVJTJzogZ2V0X2xheWVycyhkLmdldFZhcigiQkJMQVlFUlMiKSl9CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KIGdldF9zZGtfY29uZmlndXJhdGlvblt2YXJkZXBzZXhjbHVkZV0gPSAiREFURVRJTUUiCkBAIC02Niw2ICs2NiwxNCBAQAogICAgIGhvc3RfcGtnX21hbmlmZXN0ID0gT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLl9sb2FkX21hbmlmZXN0KAogICAgICAgICBkLmV4cGFuZCgiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTl9PVVRQVVROQU1FfS5ob3N0Lm1hbmlmZXN0IikpCiAKKyAgICBwcm9jZXNzZXMgPSBkLmdldFZhcigiVEVTVElNQUdFX05VTUJFUl9USFJFQURTIikgb3IgZC5nZXRWYXIoIkJCX05VTUJFUl9USFJFQURTIikKKyAgICBpZiBwcm9jZXNzZXM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0dG9vbHMsIHN1YnVuaXQKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgYmIud2FybigiRmFpbGVkIHRvIGltcG9ydCB0ZXN0dG9vbHMgb3Igc3VidW5pdCwgdGhlIHRlc3RjYXNlcyB3aWxsIHJ1biBzZXJpYWxseSIpCisgICAgICAgICAgICBwcm9jZXNzZXMgPSBOb25lCisKICAgICBzZGtfZGlyID0gZC5leHBhbmQoIiR7V09SS0RJUn0vdGVzdGltYWdlLXNkay8iKQogICAgIGJiLnV0aWxzLnJlbW92ZShzZGtfZGlyLCBUcnVlKQogICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZGtfZGlyKQpAQCAtODksNyArOTcsMTAgQEAKICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKICAgICAgICAgICAgIGJiLmZhdGFsKCJMb2FkaW5nIHRlc3RzIGZhaWxlZDpcbiVzIiAlIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAKLSAgICAgICAgcmVzdWx0ID0gdGMucnVuVGVzdHMoKQorICAgICAgICBpZiBwcm9jZXNzZXM6CisgICAgICAgICAgICByZXN1bHQgPSB0Yy5ydW5UZXN0cyhwcm9jZXNzZXM9aW50KHByb2Nlc3NlcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSB0Yy5ydW5UZXN0cygpCiAKICAgICAgICAgY29tcG9uZW50ID0gIiVzICVzIiAlIChwbiwgT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLm5hbWUpCiAgICAgICAgIGNvbnRleHRfbXNnID0gIiVzOiVzIiAlIChvcy5wYXRoLmJhc2VuYW1lKHRjbmFtZSksIG9zLnBhdGguYmFzZW5hbWUoc2RrX2VudikpCkBAIC0xNzksNiArMTkwLDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoJ1NTVEFURV9NSVJST1JTICs9ICIgXFxuIGZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCJcbicgJSB0ZXN0X2RhdGEuZ2V0KCdTU1RBVEVfRElSJykpCiAgICAgICAgICAgICBmLndyaXRlKCdTT1VSQ0VfTUlSUk9SX1VSTCA9ICJmaWxlOi8vJXMiXG4nICUgdGVzdF9kYXRhLmdldCgnRExfRElSJykpCiAgICAgICAgICAgICBmLndyaXRlKCdJTkhFUklUICs9ICJvd24tbWlycm9ycyJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdQUkVNSVJST1JTX3ByZXBlbmQgPSAiIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLy4qIGdpdDovLyVzL2dpdDIvZ2l0LnlvY3RvcHJvamVjdC5vcmcuQkFTRU5BTUUgXFxuICJcbicgJSB0ZXN0X2RhdGEuZ2V0KCdETF9ESVInKSkKIAogICAgICAgICAjIFdlIG5lZWQgdG8gZG8gdGhpcyBpbiBjYXNlIHdlIGhhdmUgYSBtaW5pbWFsIFNESwogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiLiAlcyA+IC9kZXYvbnVsbDsgZGV2dG9vbCBzZGstaW5zdGFsbCBtZXRhLWV4dHNkay10b29sY2hhaW4iICUgXApAQCAtMjE4LDMgKzIzMCw4IEBACiBhZGR0YXNrIHRlc3RzZGtleHQKIGRvX3Rlc3RzZGtleHRbbm9zdGFtcF0gPSAiMSIKIAorcHl0aG9uICgpIHsKKyAgICBpZiBvZS50eXBlcy5ib29sZWFuKGQuZ2V0VmFyKCJURVNUSU1BR0VfQVVUTyIpIG9yICJGYWxzZSIpOgorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKCJ0ZXN0c2RrIiwgTm9uZSwgImRvX3BvcHVsYXRlX3NkayIsIGQpCisgICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soInRlc3RzZGtleHQiLCBOb25lLCAiZG9fcG9wdWxhdGVfc2RrX2V4dCIsIGQpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwppbmRleCA3MWRhNWU1Li42ZDFiYTY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKQEAgLTUxLDYgKzUxLDEwIEBACiAJZWNobyAiZXhwb3J0IE9FQ09SRV9OQVRJVkVfU1lTUk9PVD1cIiRzZGtwYXRobmF0aXZlXCIiID4+ICRzY3JpcHQKIAllY2hvICdleHBvcnQgT0VDT1JFX1RBUkdFVF9TWVNST09UPSIkU0RLVEFSR0VUU1lTUk9PVCInID4+ICRzY3JpcHQKIAllY2hvICJleHBvcnQgT0VDT1JFX0FDTE9DQUxfT1BUUz1cIi1JICRzZGtwYXRobmF0aXZlL3Vzci9zaGFyZS9hY2xvY2FsXCIiID4+ICRzY3JpcHQKKwllY2hvICdleHBvcnQgT0VDT1JFX0JBU0VMSUI9IiR7YmFzZWxpYn0iJyA+PiAkc2NyaXB0CisJZWNobyAnZXhwb3J0IE9FQ09SRV9UQVJHRVRfQVJDSD0iJHtUQVJHRVRfQVJDSH0iJyA+PiRzY3JpcHQKKwllY2hvICdleHBvcnQgT0VDT1JFX1RBUkdFVF9PUz0iJHtUQVJHRVRfT1N9IicgPj4kc2NyaXB0CisKIAllY2hvICd1bnNldCBjb21tYW5kX25vdF9mb3VuZF9oYW5kbGUnID4+ICRzY3JpcHQKIAogCXRvb2xjaGFpbl9zaGFyZWRfZW52X3NjcmlwdApAQCAtMTE4LDE0ICsxMjIsMzQgQEAKIH0KIAogdG9vbGNoYWluX2NyZWF0ZV9wb3N0X3JlbG9jYXRlX3NjcmlwdCgpIHsKLQlzY3JpcHQ9JDEKLQlybSAtZiAkc2NyaXB0Ci0JdG91Y2ggJHNjcmlwdAorCXJlbG9jYXRlX3NjcmlwdD0kMQorCWVudl9kaXI9JDIKKwlybSAtZiAkcmVsb2NhdGVfc2NyaXB0CisJdG91Y2ggJHJlbG9jYXRlX3NjcmlwdAogCi0gICAgY2F0ID4+ICRzY3JpcHQgPDxFT0YKKwljYXQgPj4gJHJlbG9jYXRlX3NjcmlwdCA8PEVPRgorIyBTb3VyY2UgdG9wLWxldmVsIFNESyBlbnYgc2NyaXB0cyBpbiBjYXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgdGhlIHJlbG9jYXRlCisjIHNjcmlwdHMuCitmb3IgZW52X3NldHVwX3NjcmlwdCBpbiAke2Vudl9kaXJ9L2Vudmlyb25tZW50LXNldHVwLSo7IGRvCisgICAgLiBcJGVudl9zZXR1cF9zY3JpcHQKKyAgICBzdGF0dXM9XCQ/CisgICAgaWYgWyBcJHN0YXR1cyAhPSAwIF07IHRoZW4KKyAgICAgICAgZWNobyAiXCQwOiBGYWlsZWQgdG8gc291cmNlIFwkZW52X3NldHVwX3NjcmlwdCB3aXRoIHN0YXR1cyBcJHN0YXR1cyIKKyAgICAgICAgZXhpdCBcJHN0YXR1cworICAgIGZpCitkb25lCisKIGlmIFsgLWQgIiR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLyIgXTsgdGhlbgotICAgIGZvciBzIGluICR7U0RLUEFUSE5BVElWRX0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5kLyouc2g7IGRvCisgICAgZm9yIHMgaW4gJHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQvKjsgZG8KKyAgICAgICAgaWYgWyAhIC14IFwkcyBdOyB0aGVuCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmaQogICAgICAgICBcJHMgIlwkMSIKKyAgICAgICAgc3RhdHVzPVwkPworICAgICAgICBpZiBbIFwkc3RhdHVzICE9IDAgXTsgdGhlbgorICAgICAgICAgICAgZWNobyAicG9zdC1yZWxvY2F0ZSBjb21tYW5kIFwiXCRzIFwkMVwiIGZhaWxlZCB3aXRoIHN0YXR1cyBcJHN0YXR1cyIgPiYyCisgICAgICAgICAgICBleGl0IFwkc3RhdHVzCisgICAgICAgIGZpCiAgICAgZG9uZQogICAgIHJtIC1yZiAiJHtTREtQQVRITkFUSVZFfS9wb3N0LXJlbG9jYXRlLXNldHVwLmQiCiBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcwppbmRleCA2MWRmZjE0Li5jNjVjNDIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcwpAQCAtNTgsNyArNTgsNyBAQAogIwogIyBUaGUga2VybmVsIGhhcyBhbiBpbnRlcm5hbCBkZWZhdWx0IGNvbnNvbGUsIHdoaWNoIHlvdSBjYW4gb3ZlcnJpZGUgd2l0aAogIyBhIGNvbnNvbGU9Li4uc29tZV90dHkuLi4KLVVCT09UX0VYVExJTlVYX0NPTlNPTEUgPz89ICJjb25zb2xlPSR7Y29uc29sZX0iCitVQk9PVF9FWFRMSU5VWF9DT05TT0xFID8/PSAiY29uc29sZT0ke2NvbnNvbGV9LCR7YmF1ZHJhdGV9IgogVUJPT1RfRVhUTElOVVhfTEFCRUxTID8/PSAibGludXgiCiBVQk9PVF9FWFRMSU5VWF9GRFQgPz89ICIiCiBVQk9PVF9FWFRMSU5VWF9GRFRESVIgPz89ICIuLi8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCmluZGV4IGRlMjIyMWEuLmJhOTlmYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCkBAIC0xLDEwICsxLDExIEBACi1VTklOQVRJVkVfTE9BREVSID89ICIke1VOSU5BVElWRV9TVEFHSU5HX0RJUn0tdW5pbmF0aXZlLyR7QlVJTERfQVJDSH0tbGludXgvbGliLyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ3g4Nl82NCcsICdsZC1saW51eC14ODYtNjQuc28uMicsICdsZC1saW51eC5zby4yJywgZCl9IgorVU5JTkFUSVZFX0xPQURFUiA/PSAiJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZS8ke0JVSUxEX0FSQ0h9LWxpbnV4L2xpYi8ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICd4ODZfNjQnLCAnbGQtbGludXgteDg2LTY0LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnaTY4NicsICdsZC1saW51eC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2FhcmNoNjQnLCAnbGQtbGludXgtYWFyY2g2NC5zby4xJywgJycsIGQpfSIKIFVOSU5BVElWRV9TVEFHSU5HX0RJUiA/PSAiJHtTVEFHSU5HX0RJUn0iCiAKIFVOSU5BVElWRV9VUkwgPz0gInVuc2V0IgogVU5JTkFUSVZFX1RBUkJBTEwgPz0gIiR7QlVJTERfQVJDSH0tbmF0aXZlc2RrLWxpYmMudGFyLmJ6MiIKICMgRXhhbXBsZSBjaGVja3N1bXMKLSNVTklOQVRJVkVfQ0hFQ0tTVU1baTU4Nl0gPSAiZGVhZCIKKyNVTklOQVRJVkVfQ0hFQ0tTVU1bYWFyY2g2NF0gPSAiZGVhZCIKKyNVTklOQVRJVkVfQ0hFQ0tTVU1baTY4Nl0gPSAiZGVhZCIKICNVTklOQVRJVkVfQ0hFQ0tTVU1beDg2XzY0XSA9ICJkZWFkIgogVU5JTkFUSVZFX0RMRElSID89ICIke0RMX0RJUn0vdW5pbmF0aXZlLyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKaW5kZXggMDZlM2IyMS4uMjY1YzRiZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCkBAIC0zOSw5ICszOSw5IEBACiB1cGRhdGVyY2RfcG9zdGluc3QoKSB7CiBpZiAke0B1c2VfdXBkYXRlcmNkKGQpfSAmJiB0eXBlIHVwZGF0ZS1yYy5kID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KIAlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQlPUFQ9Ii1yICREIgorCQlPUFQ9Ii1mIC1yICREIgogCWVsc2UKLQkJT1BUPSItcyIKKwkJT1BUPSItZiAtcyIKIAlmaQogCXVwZGF0ZS1yYy5kICRPUFQgJHtJTklUU0NSSVBUX05BTUV9ICR7SU5JVFNDUklQVF9QQVJBTVN9CiBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZF9iYXNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkX2Jhc2UuYmJjbGFzcwppbmRleCA1NTFjODJjLi4wZDBiZGI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkX2Jhc2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkX2Jhc2UuYmJjbGFzcwpAQCAtNTEsMTAgKzUxLDEwIEBACiAJbG9jYWwgZ3JvdXBuYW1lPWBlY2hvICIkb3B0cyIgfCBhd2sgJ3sgZm9yIChpID0gMTsgaSA8IE5GOyBpKyspIGlmICgkaSA9PSAiLWciIHx8ICRpID09ICItLWdyb3VwIikgcHJpbnQgJChpKzEpIH0nYAogCWxvY2FsIHVzZXJuYW1lPWBlY2hvICIkb3B0cyIgfCBhd2sgJ3sgZm9yIChpID0gMTsgaSA8IE5GOyBpKyspIGlmICgkaSA9PSAiLWEiIHx8ICRpID09ICItLWFkZCIpIHByaW50ICQoaSsxKSB9J2AKIAliYm5vdGUgIiR7UE59OiBSdW5uaW5nIGdyb3VwbWVtcyBjb21tYW5kIHdpdGggZ3JvdXAgJGdyb3VwbmFtZSBhbmQgdXNlciAkdXNlcm5hbWUiCi0JbG9jYWwgbWVtX2V4aXN0cz0iYGdyZXAgIl4kZ3JvdXBuYW1lOlteOl0qOlteOl0qOlwoW14sXSosXCkqJHVzZXJuYW1lXCgsW14sXSpcKSoiICRyb290ZGlyL2V0Yy9ncm91cCB8fCB0cnVlYCIKKwlsb2NhbCBtZW1fZXhpc3RzPSJgZ3JlcCAiXiRncm91cG5hbWU6W146XSo6W146XSo6XChbXixdKixcKSokdXNlcm5hbWVcKCxbXixdKlwpKiQiICRyb290ZGlyL2V0Yy9ncm91cCB8fCB0cnVlYCIKIAlpZiB0ZXN0ICJ4JG1lbV9leGlzdHMiID0gIngiOyB0aGVuCiAJCWV2YWwgZmxvY2sgLXggJHJvb3RkaXIke3N5c2NvbmZkaXJ9IC1jIFwiJFBTRVVETyBncm91cG1lbXMgXCRvcHRzXCIgfHwgdHJ1ZQotCQltZW1fZXhpc3RzPSJgZ3JlcCAiXiRncm91cG5hbWU6W146XSo6W146XSo6XChbXixdKixcKSokdXNlcm5hbWVcKCxbXixdKlwpKiIgJHJvb3RkaXIvZXRjL2dyb3VwIHx8IHRydWVgIgorCQltZW1fZXhpc3RzPSJgZ3JlcCAiXiRncm91cG5hbWU6W146XSo6W146XSo6XChbXixdKixcKSokdXNlcm5hbWVcKCxbXixdKlwpKiQiICRyb290ZGlyL2V0Yy9ncm91cCB8fCB0cnVlYCIKIAkJaWYgdGVzdCAieCRtZW1fZXhpc3RzIiA9ICJ4IjsgdGhlbgogCQkJYmJmYXRhbCAiJHtQTn06IGdyb3VwbWVtcyBjb21tYW5kIGRpZCBub3Qgc3VjY2VlZC4iCiAJCWZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcwppbmRleCAzZjRmNTFiLi4wMDE2ZTVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKQEAgLTMyOCwxNSArMzI4LDggQEAKIGRlZiBhbGxfbXVsdGlsaWJfdHVuZV92YWx1ZXMoZCwgdmFyLCB1bmlxdWUgPSBUcnVlLCBuZWVkX3NwbGl0ID0gVHJ1ZSwgZGVsaW0gPSAnICcpOgogICAgICIiIlJldHVybiBhIHN0cmluZyBvZiBhbGwgJHt2YXJ9IGluIGFsbCBtdWx0aWxpYiB0dW5lIGNvbmZpZ3VyYXRpb24iIiIKICAgICB2YWx1ZXMgPSBbXQotICAgIHZhbHVlID0gZC5nZXRWYXIodmFyKSBvciAiIgotICAgIGlmIHZhbHVlICE9ICIiOgotICAgICAgICBpZiBuZWVkX3NwbGl0OgotICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoZGVsaW0pOgotICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQodmFsdWUpCi0gICAgdmFyaWFudHMgPSBkLmdldFZhcigiTVVMVElMSUJfVkFSSUFOVFMiKSBvciAiIgotICAgIGZvciBpdGVtIGluIHZhcmlhbnRzLnNwbGl0KCk6CisgICAgdmFyaWFudHMgPSAoZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikgb3IgIiIpLnNwbGl0KCkgKyBbJyddCisgICAgZm9yIGl0ZW0gaW4gdmFyaWFudHM6CiAgICAgICAgIGxvY2FsZGF0YSA9IGdldF9tdWx0aWxpYl9kYXRhc3RvcmUoaXRlbSwgZCkKICAgICAgICAgIyBXZSBuZWVkIFdPUktESVIgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBvcmlnaW5hbCBkYXRhc3RvcmUKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiV09SS0RJUiIsIGQuZ2V0VmFyKCJXT1JLRElSIikpCkBAIC0zNjcsMjMgKzM2MCwxMCBAQAogICAgIHZhbHVlcyA9IHt9CiAgICAgZm9yIHYgaW4gdmFyczoKICAgICAgICAgdmFsdWVzW3ZdID0gW10KLQotICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKS5zcGxpdCgiOiIpCi0gICAgbmV3b3ZlcnJpZGVzID0gW10KLSAgICBmb3IgbyBpbiBvdmVycmlkZXM6Ci0gICAgICAgIGlmIG5vdCBvLnN0YXJ0c3dpdGgoInZpcnRjbGFzcy1tdWx0aWxpYi0iKToKLSAgICAgICAgICAgIG5ld292ZXJyaWRlcy5hcHBlbmQobykKLSAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCAiOiIuam9pbihuZXdvdmVycmlkZXMpKQotICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgIiIpCi0gICAgb3JpZ2RlZmF1bHQgPSBsb2NhbGRhdGEuZ2V0VmFyKCJERUZBVUxUVFVORV9NVUxUSUxJQl9PUklHSU5BTCIpCi0gICAgaWYgb3JpZ2RlZmF1bHQ6Ci0gICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIkRFRkFVTFRUVU5FIiwgb3JpZ2RlZmF1bHQpCiAgICAgdmFsdWVzWydtbCddID0gWycnXQotICAgIGZvciB2IGluIHZhcnM6Ci0gICAgICAgIHZhbHVlc1t2XS5hcHBlbmQobG9jYWxkYXRhLmdldFZhcih2KSkKLSAgICB2YXJpYW50cyA9IGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpIG9yICIiCi0gICAgZm9yIGl0ZW0gaW4gdmFyaWFudHMuc3BsaXQoKToKKworICAgIHZhcmlhbnRzID0gKGQuZ2V0VmFyKCJNVUxUSUxJQl9WQVJJQU5UUyIpIG9yICIiKS5zcGxpdCgpICsgWycnXQorICAgIGZvciBpdGVtIGluIHZhcmlhbnRzOgogICAgICAgICBsb2NhbGRhdGEgPSBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKGl0ZW0sIGQpCiAgICAgICAgIHZhbHVlc1t2XS5hcHBlbmQobG9jYWxkYXRhLmdldFZhcih2KSkKICAgICAgICAgdmFsdWVzWydtbCddLmFwcGVuZChpdGVtKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCmluZGV4IGFjNDAzYjEuLmRjZjIwMDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKQEAgLTkzLDcgKzkzLDcgQEAKICMgQXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBidWlsZCB2YXJpYWJsZXMuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBJbW1lZGlhdGUgZXhwYW5zaW9uIHNpbmNlIHRoZXJlIGlzIG5vIHBvaW50IGluIHJlYXBlYXRlZGx5IGNhbGxpbmcKKyMgSW1tZWRpYXRlIGV4cGFuc2lvbiBzaW5jZSB0aGVyZSBpcyBubyBwb2ludCBpbiByZXBlYXRlZGx5IGNhbGxpbmcKICMgb3MudW5hbWUoKSB0aHJvdWdob3V0IHBhcnNpbmcKIEJVSUxEX0FSQ0ggOj0gIiR7QG9zLnVuYW1lKClbNF19IgogQlVJTERfT1MgOj0gIiR7QG9zLnVuYW1lKClbMF0ubG93ZXIoKX0iCkBAIC0zMDgsNyArMzA4LDggQEAKIEZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7RklMRVNfU09MSUJTREVWfSAke2xpYmRpcn0vKi5sYSBcCiAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7ZGF0YWRpcn0vcGtnY29uZmlnIFwKICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2FjbG9jYWwgJHtiYXNlX2xpYmRpcn0vKi5vIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59LyoubGEgJHtiYXNlX2xpYmRpcn0vKi5sYSIKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vJHtCUE59LyoubGEgJHtiYXNlX2xpYmRpcn0vKi5sYSBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vY21ha2UiCiBTRUNUSU9OXyR7UE59LWRldiA9ICJkZXZlbCIKIEFMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiR7UE59ICg9ICR7RVhURU5EUEtHVn0pIgpAQCAtMzE4LDcgKzMxOSw2IEBACiBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCiBGSUxFU18ke1BOfS1kYmcgPSAiL3Vzci9saWIvZGVidWcgL3Vzci9zcmMvZGVidWciCi0KIFNFQ1RJT05fJHtQTn0tZGJnID0gImRldmVsIgogQUxMT1dfRU1QVFlfJHtQTn0tZGJnID0gIjEiCiAKQEAgLTQ0NSw4ICs0NDUsOSBAQAogCiBJTUFHRV9ST09URlMgPSAiJHtXT1JLRElSfS9yb290ZnMiCiBJTUFHRV9CQVNFTkFNRSA9ICIke1BOfSIKLUlNQUdFX05BTUUgPSAiJHtJTUFHRV9CQVNFTkFNRX0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKLUlNQUdFX05BTUVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJEQVRFVElNRSIKK0lNQUdFX1ZFUlNJT05fU1VGRklYID0gIi0ke0RBVEVUSU1FfSIKK0lNQUdFX1ZFUlNJT05fU1VGRklYW3ZhcmRlcHNleGNsdWRlXSArPSAiREFURVRJTUUiCitJTUFHRV9OQU1FID0gIiR7SU1BR0VfQkFTRU5BTUV9LSR7TUFDSElORX0ke0lNQUdFX1ZFUlNJT05fU1VGRklYfSIKIElNQUdFX0xJTktfTkFNRSA9ICIke0lNQUdFX0JBU0VOQU1FfS0ke01BQ0hJTkV9IgogCiAjIFRoaXMgb3B0aW9uIGFsbG93cyBmb3IgYSBwZXJjZW50YWdlIG92ZXJhZ2Ugb2YgdGhlIGFjdHVhbCBpbWFnZSBzaXplIHJhdGhlciB0aGFuIGEKQEAgLTQ3NSwyMiArNDc2LDIzIEBACiBIT1NUVE9PTFNfRElSID0gIiR7VE1QRElSfS9ob3N0dG9vbHMiCiAKICMgVG9vbHMgbmVlZGVkIHRvIHJ1biBidWlsZHMgd2l0aCBPRS1Db3JlCisjIHB5dGhvbiBpcyBzcGVjaWFsIGNhc2VkIHRvIHBvaW50IGF0IHB5dGhvbjIKIEhPU1RUT09MUyArPSAiIFwKICAgICBbIGFyIGFzIGF3ayBiYXNlbmFtZSBiYXNoIGJ6aXAyIGNhdCBjaGdycCBjaG1vZCBjaG93biBjaHJwYXRoIGNtcCBjb21tIGNwIGNwaW8gXAogICAgIGNwcCBjdXQgZGF0ZSBkZCBkaWZmIGRpZmZzdGF0IGRpcm5hbWUgZHUgZWNobyBlZ3JlcCBlbnYgZXhwYW5kIGV4cHIgZmFsc2UgXAogICAgIGZncmVwIGZpbGUgZmluZCBmbG9jayBnKysgZ2F3ayBnY2MgZ2V0Y29uZiBnZXRvcHQgZ2l0IGdyZXAgZ3VuemlwIGd6aXAgXAogICAgIGhlYWQgaG9zdG5hbWUgaWQgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtYWtlaW5mbyBtZDVzdW0gbWtkaXIgbWtub2QgXAotICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwb2QybWFuIHByIHByaW50ZiBwd2QgcHl0aG9uIHB5dGhvbjIgXAorICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwb2QybWFuIHByIHByaW50ZiBwd2QgcHl0aG9uMiBcCiAgICAgcHl0aG9uMi43IHB5dGhvbjMgcmFubGliIHJlYWRlbGYgcmVhZGxpbmsgcm0gcm1kaXIgcnBjZ2VuIHNlZCBzaCBzaGEyNTZzdW0gXAogICAgIHNsZWVwIHNvcnQgc3BsaXQgc3RhdCBzdHJpbmdzIHN0cmlwIHRhaWwgdGFyIHRlZSB0ZXN0IHRvdWNoIHRyIHRydWUgdW5hbWUgXAogICAgIHVuaXEgd2Mgd2dldCB3aGljaCB4YXJncyBcCiAiCiAKICMgVG9vbHMgbmVlZGVkIHRvIHJ1biB0ZXN0aW1hZ2UgcnVudGltZSBpbWFnZSB0ZXN0aW5nCi1IT1NUVE9PTFMgKz0gIiR7QCdpcCBwaW5nIHBzIHNjcCBzc2ggc3R0eScgaWYgKGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ3Rlc3RpbWFnZScsIGQpIG9yIGQuZ2V0VmFyKCdURVNUX0lNQUdFJykgPT0gJzEnKSBlbHNlICcnfSIKK0hPU1RUT09MUyArPSAiJHtAJ2lwIHBpbmcgcHMgc2NwIHNzaCBzdHR5JyBpZiAoYmIudXRpbHMuY29udGFpbnNfYW55KCdJTUFHRV9DTEFTU0VTJywgJ3Rlc3RpbWFnZSB0ZXN0c2RrJywgVHJ1ZSwgRmFsc2UsIGQpIG9yIGFueSh4IGluIChkLmdldFZhcigiQkJJTkNMVURFRCIpIG9yICIiKSBmb3IgeCBpbiBbInRlc3RpbWFnZS5iYmNsYXNzIiwgInRlc3RzZGsuYmJjbGFzcyJdKSkgZWxzZSAnJ30iCiAKICMgTGluayB0byB0aGVzZSBpZiBwcmVzZW50Ci1IT1NUVE9PTFNfTk9ORkFUQUwgKz0gImF3cyBjY2FjaGUgZ2NjLWFyIGdwZyBsZC5iZmQgbGQuZ29sZCBuYyBzZnRwIHNvY2F0IHNzaCBzdWRvIgorSE9TVFRPT0xTX05PTkZBVEFMICs9ICJhd3MgY2NhY2hlIGdjYy1hciBncGcgbGQuYmZkIGxkLmdvbGQgbmMgcGlneiBzZnRwIHNvY2F0IHNzaCBzdWRvIgogCiAjIFRlbXBvcmFyeSBhZGQgZmV3IG1vcmUgZGV0ZWN0ZWQgaW4gYml0YmFrZSB3b3JsZAogSE9TVFRPT0xTX05PTkZBVEFMICs9ICJqb2luIG5sIHNpemUgeWVzIHpjYXQiCkBAIC01ODUsOCArNTg3LDEwIEBACiAKIFRBUkdFVF9MSU5LX0hBU0hfU1RZTEUgPz0gIiR7QFsnLVdsLC0taGFzaC1zdHlsZT1nbnUnLCcnXVtkLmdldFZhcignTElOS0VSX0hBU0hfU1RZTEUnKSAhPSAnZ251J119IgogCitBU05FRURFRCA/PSAiLVdsLC0tYXMtbmVlZGVkIgorCiBleHBvcnQgTERGTEFHUyA9ICIke1RBUkdFVF9MREZMQUdTfSIKLWV4cG9ydCBUQVJHRVRfTERGTEFHUyA9ICItV2wsLU8xICR7VEFSR0VUX0xJTktfSEFTSF9TVFlMRX0iCitleHBvcnQgVEFSR0VUX0xERkxBR1MgPSAiLVdsLC1PMSAke1RBUkdFVF9MSU5LX0hBU0hfU1RZTEV9ICR7QVNORUVERUR9IgogCiAjIFBhc3MgcGFyYWxsZWwgbWFrZSBvcHRpb25zIHRvIHRoZSBjb21waWxlIHRhc2sKIEVYVFJBX09FTUFLRV9wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke1BBUkFMTEVMX01BS0V9ICIKQEAgLTYwNyw5ICs2MTEsOSBAQAogIyBEaXNhYmxlZCB1bnRpbCB0aGUgb3B0aW9uIHdvcmtzIHByb3Blcmx5IC1mZWxpbWluYXRlLWR3YXJmMi1kdXBzCiBGVUxMX09QVElNSVpBVElPTiA9ICItTzIgLXBpcGUgJHtERUJVR19GTEFHU30iCiBERUJVR19PUFRJTUlaQVRJT04gPSAiLU8gLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgJHtERUJVR19GTEFHU30gLXBpcGUiCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtAZC5nZXRWYXIoWydGVUxMX09QVElNSVpBVElPTicsICdERUJVR19PUFRJTUlaQVRJT04nXVtkLmdldFZhcignREVCVUdfQlVJTEQnKSA9PSAnMSddKX0iCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtAZC5nZXRWYXIob2UudXRpbHMudmFydHJ1ZSgnREVCVUdfQlVJTEQnLCAnREVCVUdfT1BUSU1JWkFUSU9OJywgJ0ZVTExfT1BUSU1JWkFUSU9OJywgZCkpfSIKIFNFTEVDVEVEX09QVElNSVpBVElPTlt2YXJkZXBzXSArPSAiRlVMTF9PUFRJTUlaQVRJT04gREVCVUdfT1BUSU1JWkFUSU9OIgotQlVJTERfT1BUSU1JWkFUSU9OID0gIi1PMiAtcGlwZSIKK0JVSUxEX09QVElNSVpBVElPTiA9ICIke0BvZS51dGlscy52YXJ0cnVlKCdERUJVR19CVUlMRCcsICctTyAtZyAtZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXInLCAnLU8yJywgZCl9IC1waXBlIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dGluZ3MgdXNlZCBieSBiaXRiYWtlLWxheWVycy4KQEAgLTcxOSwyMCArNzIzLDE4IEBACiAjIGlzIGEgYmFkIGlkZWEuIFNldHRpbmcgYSBkdW1teSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBhIHRvbiBvZiBhbm9ueW1vdXMgcHl0aG9uLgogRElTVFJPID8/PSAibm9kaXN0cm8iCiBESVNUUk9fTkFNRSA/Pz0gIk9wZW5FbWJlZGRlZCIKKwogIyBPdmVycmlkZXMgYXJlIHByb2Nlc3NlZCBsZWZ0IHRvIHJpZ2h0LCBzbyB0aGUgb25lcyB0aGF0IGFyZSBuYW1lZCBsYXRlciB0YWtlIHByZWNlZGVuY2UuCi0jIFlvdSBnZW5lcmFsbHkgd2FudCB0aGVtIHRvIGdvIGZyb20gbGVhc3QgdG8gbW9zdCBzcGVjaWZpYy4KLSMKLSMgVGhpcyBtZWFucyB0aGF0IGFuIGVudmlvbm1lbnQgdmFyaWFibGUgbmFtZWQgJzxmb28+X2FybScgb3ZlcnJpZGVzIGFuCi0jIGVudmlyb25tZW50IHZhcmlhYmxlICc8Zm9vPicgKHdoZW4gJHtUQVJHRVRfQVJDSH0gaXMgYXJtKS4KLSMgQW4gZW52aXJvbm1lbnQgdmFyaWFibGUgJzxmb28+X3FlbXVhcm0nIG92ZXJyaWRlcyAnPGZvbz4nIGFuZCBvdmVycmlkZXMKLSMgJzxmb28+X2FybScgd2hlbiAke01BQ0hJTkV9IGlzICdxZW11YXJtJy4KKyMgWW91IGdlbmVyYWxseSB3YW50IHRoZW0gdG8gZ28gZnJvbSBsZWFzdCB0byBtb3N0IHNwZWNpZmljLiBUaGlzIG1lYW5zIHRoYXQ6CisjIEEgdmFyaWFibGUgJzxmb28+X2FybScgb3ZlcnJpZGVzIGEgdmFyaWFibGUgJzxmb28+JyB3aGVuICR7VEFSR0VUX0FSQ0h9IGlzIGFybS4KKyMgQSB2YXJpYWJsZSAnPGZvbz5fcWVtdWFybScgb3ZlcnJpZGVzICc8Zm9vPicgYW5kIG92ZXJyaWRlcyAnPGZvbz5fYXJtJyB3aGVuICR7TUFDSElORX0gaXMgJ3FlbXVhcm0nLgogIyBJZiB5b3UgdXNlIGNvbWJpbmF0aW9uIGllICc8Zm9vPl9xZW11YXJtX2FybScsIHRoZW4gJzxmb28+X3FlbXVhcm1fYXJtJyB3aWxsIG92ZXJyaWRlCiAjICc8Zm9vPl9xZW11YXJtJyBhbmQgdGhlbiAnPGZvbz4nIHdpbGwgYmUgb3ZlcnJpZGVuIHdpdGggdGhhdCB2YWx1ZSBmcm9tICc8Zm9vPl9xZW11YXJtJy4KICMgQW5kIGZpbmFsbHkgJzxmb28+X2ZvcmNldmFyaWFibGUnIG92ZXJyaWRlcyBhbnkgc3RhbmRhcmQgdmFyaWFibGUsIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkuCisjIFRoaXMgd29ya3MgZm9yIGZ1bmN0aW9ucyBhcyB3ZWxsLCB0aGV5IGFyZSByZWFsbHkganVzdCB2YXJpYWJsZXMuCiAjCi0jIFRoaXMgd29ya3MgZm9yICBmdW5jdGlvbnMgYXMgd2VsbCwgdGhleSBhcmUgcmVhbGx5IGp1c3QgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotIyBEZWZhdWx0IE9WRVJSSURFUyB0byBtYWtlIGNvbXBpbGF0aW9uIGZhaWwgZmFzdCBpbiBjYXNlIG9mIGJ1aWxkIHN5c3RlbSBtaXNjb25maWd1cmF0aW9uLgotT1ZFUlJJREVTID0gIiR7VEFSR0VUX09TfToke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9OmJ1aWxkLSR7QlVJTERfT1N9OnBuLSR7UE59OiR7TUFDSElORU9WRVJSSURFU306JHtESVNUUk9PVkVSUklERVN9OiR7Q0xBU1NPVkVSUklERX06Zm9yY2V2YXJpYWJsZSIKK09WRVJSSURFUyA9ICIke1RBUkdFVF9PU306JHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfTpwbi0ke1BOfToke01BQ0hJTkVPVkVSUklERVN9OiR7RElTVFJPT1ZFUlJJREVTfToke0NMQVNTT1ZFUlJJREV9JHtMSUJDT1ZFUlJJREV9OmZvcmNldmFyaWFibGUiCitMSUJDT1ZFUlJJREUgPz0gIiIKIENMQVNTT1ZFUlJJREUgPz0gImNsYXNzLXRhcmdldCIKIERJU1RST09WRVJSSURFUyA/PSAiJHtAZC5nZXRWYXIoJ0RJU1RSTycpIG9yICcnfSIKIE1BQ0hJTkVPVkVSUklERVMgPz0gIiR7TUFDSElORX0iCkBAIC04NzcsNyArODc5LDcgQEAKICAgICBmaWxlLWNoZWNrc3VtcyBweXRob24gZnVuYyB0YXNrIGV4cG9ydCB1bmV4cG9ydCBub2V4ZWMgbm9zdGFtcCBkaXJzIGNsZWFuZGlycyBcCiAgICAgc3N0YXRlLWxvY2tmaWxlLXNoYXJlZCBwcmVmdW5jcyBwb3N0ZnVuY3MgZXhwb3J0X2Z1bmMgZGVwdGFzayByZGVwdGFzayBcCiAgICAgcmVjcmRlcHRhc2sgbm9kZXBycmVjcyBzdGFtcC1leHRyYS1pbmZvIHNzdGF0ZS1vdXRwdXRkaXJzIGZpbGVuYW1lIGxpbmVubyBcCi0gICAgcHJvZ3Jlc3MiCisgICAgcHJvZ3Jlc3MgbWNkZXBlbmRzIgogCiBNTFBSRUZJWCA/Pz0gIiIKIE1VTFRJTElCX1ZBUklBTlRTID8/PSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhOGFkOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotQVNORUVERUQgPSAiLVdsLC0tYXMtbmVlZGVkIgotCi1BU05FRURFRF9wbi1iYWJlbHRyYWNlID0gIiIKLUFTTkVFREVEX3BuLWNvbnNvbGUtdG9vbHMgPSAiIgotQVNORUVERURfcG4tZGlzdGNjID0gIiIKLUFTTkVFREVEX3BuLW9wZW5vYmV4ID0gIiIKLUFTTkVFREVEX3BuLWljdSA9ICIiCi1BU05FRURFRF9wbi1wY2l1dGlscyA9ICIiCi1BU05FRURFRF9wbi1wdXp6bGVzID0gIiIKLUFTTkVFREVEX3BuLXJwbSA9ICIiCi0KLVRBUkdFVF9MREZMQUdTICs9ICIke0FTTkVFREVEfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCmluZGV4IDk2MjBhZDQuLmY1ZWM2Y2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwpAQCAtMTQsNyArMTQsNyBAQAogRElTVFJPX0ZFQVRVUkVTX0xJQkNfREVGQVVMVCA/PSAiaXB2NCBpcHY2IGxpYmMtYmFja3RyYWNlIGxpYmMtYmlnLW1hY3JvcyBsaWJjLWJzZCBsaWJjLWN4eC10ZXN0cyBsaWJjLWNhdGdldHMgbGliYy1jaGFyc2V0cyBsaWJjLWNyeXB0IFwKIAkJCQkJbGliYy1jcnlwdC11ZmMgbGliYy1kYi1hbGlhc2VzIGxpYmMtZW52eiBsaWJjLWZjdnQgbGliYy1mbXRtc2cgbGliYy1mc3RhYiBsaWJjLWZ0cmF2ZXJzZSBcCiAJCQkJCWxpYmMtZ2V0bG9naW4gbGliYy1pZG4gbGliYy1pbmV0LWFubCBsaWJjLWxpYm0gbGliYy1sb2NhbGVzIGxpYmMtbG9jYWxlLWNvZGUgXAotCQkJCQlsaWJjLW1lbXVzYWdlIGxpYmMtbmlzIGxpYmMtbnNzd2l0Y2ggbGliYy1yY21kIGxpYmMtcnRsZC1kZWJ1ZyBsaWJjLXNwYXduIGxpYmMtc3RyZWFtcyBsaWJjLXN1bnJwYyBcCisJCQkJCWxpYmMtbWVtdXNhZ2UgbGliYy1uc3N3aXRjaCBsaWJjLXJjbWQgbGliYy1ydGxkLWRlYnVnIGxpYmMtc3Bhd24gbGliYy1zdHJlYW1zIFwKIAkJCQkJbGliYy11dG1wIGxpYmMtdXRtcHggbGliYy13b3JkZXhwIGxpYmMtcG9zaXgtY2xhbmctd2NoYXIgbGliYy1wb3NpeC1yZWdleHAgbGliYy1wb3NpeC1yZWdleHAtZ2xpYmMgXAogCQkJCQlsaWJjLXBvc2l4LXdjaGFyLWlvIgogRElTVFJPX0ZFQVRVUkVTX0xJQkMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0xJQkNfREVGQVVMVH0iCkBAIC0yNCw3ICsyNCw2IEBACiBJTUFHRV9GRUFUVVJFUyA/PSAiIgogCiBXSElURUxJU1RfR1BMLTMuMCA/PSAiIgotTEdQTHYyX1dISVRFTElTVF9HUEwtMy4wID89ICIiCiAKIENPTU1FUkNJQUxfQVVESU9fUExVR0lOUyA/PSAiIgogIyBDT01NRVJDSUFMX0FVRElPX1BMVUdJTlMgPz0gImdzdC1wbHVnaW5zLXVnbHktbWFkIGdzdC1wbHVnaW5zLXVnbHktbXBlZ2F1ZGlvcGFyc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKaW5kZXggZTY1YzFlZC4uMDE5Y2VlYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwpAQCAtMjMsOSArMjMsOSBAQAogVklSVFVBTC1SVU5USU1FX2FwbSA/PSAiYXBtIgogVklSVFVBTC1SVU5USU1FX2Fsc2Etc3RhdGUgPz0gImFsc2Etc3RhdGUiCiBWSVJUVUFMLVJVTlRJTUVfZ2V0b3B0ID89ICJ1dGlsLWxpbnV4LWdldG9wdCIKLVZJUlRVQUwtUlVOVElNRV93aXJlbGVzcy10b29scyA/PSAiaXcgd2lyZWxlc3MtdG9vbHMiCiBWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlscyA/PSAiYnVzeWJveCIKIFZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLWh3Y2xvY2sgPz0gImJ1c3lib3gtaHdjbG9jayIKK1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLXN5c2xvZyA/PSAiYnVzeWJveC1zeXNsb2ciCiAKICMKICMgRGVmYXVsdCByZWNpcGUgcHJvdmlkZXJzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCmluZGV4IDNkODhlOGYuLmE2ZjMzMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCkBAIC0yLDYgKzIsMyBAQAogIyBEZWZhdWx0IHByZWZlcnJlZCB2ZXJzaW9ucwogIwogCi1QUkVGRVJSRURfVkVSU0lPTl9vcGVuc3NsID89ICIxLjAuJSIKLVBSRUZFUlJFRF9WRVJTSU9OX29wZW5zc2wtbmF0aXZlID89ICIxLjAuJSIKLVBSRUZFUlJFRF9WRVJTSU9OX25hdGl2ZXNkay1vcGVuc3NsID89ICIxLjAuJSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCmluZGV4IDEzYzdlNjUuLjc1MDI1NDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwpAQCAtMTUsNyArMTUsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWF0ayA9ICJGZWRvcmE9YXRrIE9wZW5TdVNFPWF0ayIKIERJU1RST19QTl9BTElBU19wbi1hdmFoaS11aSA9ICJVYnVudHU9YXZhaGktZGlzY292ZXIgRGViaWFuPWF2YWhpLWRpc2NvdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tYmlncmVxc3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWJpZ3JlcXNwcm90byIKIERJU1RST19QTl9BTElBU19wbi1iamFtID0gIk9wZW5TdVNFPWJvb3N0LWphbSBEZWJpbmE9YmphbSIKIERJU1RST19QTl9BTElBU19wbi1ibGt0b29sID0gIkRlYmlhbj1ibGt0b29sIE1hbmRyaXZhPWJsa3Rvb2wiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmx1ZXo1ID0gIkZlZG9yYT1ibHVleiAgT3BlbnN1c2U9Ymx1ZXoiCkBAIC0yNSw3ICsyNCw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tYnVpbGQtY29tcGFyZSA9ICJPcGVuc3VzZT1idWlsZC1jb21wYXJlIEZlZG9yYT1idWlsZC1jb21wYXJlIgogRElTVFJPX1BOX0FMSUFTX3BuLWJ1aWxkZXIgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1idWlsZHRvb2xzLXRhcmJhbGwgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1jYWxpYnJhdGVwcm90byA9ICJPU1BEVCB1cHN0cmVhbT1odHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9wcm90by9jYWxpYnJhdGVwcm90byIKIERJU1RST19QTl9BTElBU19wbi1jZHJ0b29scyA9ICJPcGVuU1VTRT1jZHJ0b29scyBPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1jaGtjb25maWctYWx0ZXJuYXRpdmVzID0gIk1hbmRyaXZhPWNoa2NvbmZpZyBEZWJpYW49Y2hrY29uZmlnIgogRElTVFJPX1BOX0FMSUFTX3BuLWNsdXR0ZXIgPSAiRmVkb3JhPWNsdXR0ZXIgT3BlblN1c2U9Y2x1dHRlciBVYnVudHU9Y2x1dHRlci0xLjAgTWFuZHJpdmE9Y2x1dHRlciBEZWJpYW49Y2x1dHRlciIKQEAgLTM3LDcgKzM1LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1jbHV0dGVyLWd0ay0xLjggPSAiRmVkb3JhPWNsdXR0ZXItZ3RrIE9wZW5TdVNFPWNsdXR0ZXItZ3RrIFVidW50dT1jbHV0dGVyLWd0ay0wLjEwIE1hbmRyaXZhPWNsdXR0ZXItZ3RrIERlYmlhbj1jbHV0dGVyLWd0ayIKIERJU1RST19QTl9BTElBU19wbi1jb2dsLTEuMCA9ICJEZWJpYW49Y29nbCBVYnVudHU9Y29nbCBGZWRvcmE9Y29nbCIKIERJU1RST19QTl9BTElBU19wbi1jb2dsID0gIkZlZG9yYT1jb2dsIE9wZW5TdXNlPWNvZ2wgVWJ1bnR1PWNvZ2wgTWFuZHJpdmE9Y29nbCBEZWJpYW49Y29nbCIKLURJU1RST19QTl9BTElBU19wbi1jb21wb3NpdGVwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1jb21wb3NpdGVwcm90byIKIERJU1RST19QTl9BTElBU19wbi1jb25ubWFuID0gIk1lZWdvPWNvbm5tYW4iCiBESVNUUk9fUE5fQUxJQVNfcG4tY29ubm1hbi1jb25mID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29ubm1hbi1nbm9tZSA9ICJJbnRlbCIKQEAgLTY4LDE0ICs2NSwxMiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWNyeXB0b2Rldi1tb2R1bGUgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jcnlwdG9kZXYtdGVzdHMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jd2F1dG9tYWNyb3MgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2N3YXV0b21hY3Jvcy5iZXJsaW9zLmRlLyIKLURJU1RST19QTl9BTElBU19wbi1kYW1hZ2Vwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1kYW1hZ2Vwcm90byIKIERJU1RST19QTl9BTElBU19wbi1kYiA9ICJEZWJpYW49ZGI1LjEgVWJ1bnR1PWRiNS4xIgogRElTVFJPX1BOX0FMSUFTX3BuLWRidXMtdGVzdCA9ICJGZWRvcmE9ZGJ1cyBVYnVudHU9ZGJ1cyIKIERJU1RST19QTl9BTElBU19wbi1kYnVzLXdhaXQgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1kZXBtb2R3cmFwcGVyLWNyb3NzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tZGlzdGNjID0gIkRlYmlhbj1kaXN0Y2MgRmVkb3JhPWRpc3RjYyIKIERJU1RST19QTl9BTElBU19wbi1kaXN0Y2MtY29uZmlnID0gIk9wZW5lZEhhbmQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZG14cHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tZG14cHJvdG8gVWJ1bnR1PXgxMXByb3RvLWRteCBEZWJpYW49eDExcHJvdG8tZG14IgogRElTVFJPX1BOX0FMSUFTX3BuLWRvY2Jvb2stZHNzc2wtc3R5bGVzaGVldHMgPSAiRmVkb3JhPWRvY2Jvb2stc3R5bGUtZHNzc2wgVWJ1bnR1PWRvY2Jvb2stZHNzc2wiCiBESVNUUk9fUE5fQUxJQVNfcG4tZG9jYm9vay1zZ21sLWR0ZC0zLjEgPSAiRmVkb3JhPWRvY2Jvb2stZHRkcyBNYW5kcml2YT1kb2Nib29rLWR0ZDMxLXNnbWwiCiBESVNUUk9fUE5fQUxJQVNfcG4tZG9jYm9vay1zZ21sLWR0ZC00LjEgPSAiRmVkb3JhPWRvY2Jvb2stZHRkcyBNYW5kcml2YT1kb2Nib29rLWR0ZDQxLXNnbWwiCkBAIC04MywyMSArNzgsMTQgQEAKIERJU1RST19QTl9BTElBU19wbi1kb2Nib29rLXhtbC1kdGQ0ID0gIlVidW50dT1kb2Nib29rLXhtbCBGZWRvcmE9ZG9jYm9vay1kdGRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlID0gIlVidW50dT1kb2Nib29rLXhtbCBGZWRvcmE9ZG9jYm9vay1kdGRzIgogRElTVFJPX1BOX0FMSUFTX3BuLWRvY2Jvb2steHNsLXN0eWxlc2hlZXRzID0gIkZlZG9yYT1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyBPcGVuc3VzZT1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyIKLURJU1RST19QTl9BTElBU19wbi1kcmkycHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tZHJpMnByb3RvIgotRElTVFJPX1BOX0FMSUFTX3BuLWRyaTNwcm90byA9ICJGZWRvcmE9ZHJpM3Byb3RvIE9wZW5zdXNlPWRyaTNwcm90by1kZXZlbCIKIERJU1RST19QTl9BTElBU19wbi1kcm9wYmVhciA9ICJEZWJpYW49ZHJvcGJlYXIgVWJ1bnR1PWRyb3BiZWFyIgogRElTVFJPX1BOX0FMSUFTX3BuLWR0YyA9ICJGZWRvcmE9ZHRjIFVidW50dT1kdGMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tZWVlLWFjcGktc2NyaXB0cyA9ICJEZWJpYW49ZWVlcGMtYWNwaS1zY3JpcHRzIFVidW50dT1lZWVwYy1hY3BpLXNjcmlwdHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZWdsaW5mby1mYiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWVnbGluZm8teDExID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tZW5jb2RpbmdzID0gIlVidW50dT14Zm9udHMtZW5jb2RpbmdzIE1hbmRyaXZhPXgxMS1mb250LWVuY29kaW5ncyBEZWJpYW49eGZvbnRzLWVuY29kaW5ncyIKLURJU1RST19QTl9BTElBU19wbi1maXhlc3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWZpeGVzcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tZm9udC1hbGlhcyA9ICJGZWRvcmE9eG9yZy14MTEtZm9udHMtYmFzZSBNYW5kcml2YT14MTEtZm9udC1hbGlhcyBNZWVnbz14b3JnLXgxMS1mb250cyIKLURJU1RST19QTl9BTElBU19wbi1mb250Y2FjaGVwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1mb250Y2FjaGVwcm90byIKLURJU1RST19QTl9BTElBU19wbi1mb250c3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWZvbnRzcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tZm9udC11dGlsID0gIk1lZWdvPXhvcmcteDExLWZvbnQtdXRpbHMgRmVkb3JhPXhvcmcteDExLWZvbnQtdXRpbHMgVWJ1bnR1PXhmb250cy11dGlscyBNYW5kcml2YT14MTEtZm9udC11dGlsIERlYmlhbj14Zm9udHMtdXRpbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZm9ybWZhY3RvciA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWZzdGVzdHMgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1nY2MtY3Jvc3MtaW5pdGlhbCA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWdjYy1jcm9zcy1pbml0aWFsLWk1ODYgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1nY2MtY3Jvc3NzZGstaW5pdGlhbCA9ICJPRS1Db3JlIgpAQCAtMTE0LDcgKzEwMiw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tZ2xpYmMtbG9jYWxlID0gIk9wZW5TdVNFPWdsaWJjLWxvY2FsZSBGZWRvcmE9Z2xpYmMtZGV2ZWwiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ2xpYmMtbXRyYWNlID0gIkZlZG9yYT1nbGliYy11dGlscyBVYnVudHU9bGliYy1kZXYtYmluIgogRElTVFJPX1BOX0FMSUFTX3BuLWdsaWJjLXNjcmlwdHMgPSAiRmVkb3JhPWdsaWJjIFVidW50dT1saWJjLWJpbiIKLURJU1RST19QTl9BTElBU19wbi1nbHByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWdscHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIkRlYmlhbj1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgRmVkb3JhPWdub21lLWRlc2t0b3AtdGVzdGluZyIKIERJU1RST19QTl9BTElBU19wbi1nbnUtY29uZmlnID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3B0ZmRpc2sgPSAiRmVkb3JhPWdkaXNrIFVidW50dT1nZGlzayIKQEAgLTE0OSwxMiArMTM2LDkgQEAKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWluaXRzY3JpcHRzID0gIkZlZG9yYT1pbml0c2NyaXB0cyBNYW5kcmF2aWE9aW5pdHNjcmlwdHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4taW5wdXRwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1pbnB1dHByb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLWlwcm91dGUyID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWpwZWcgPSAiT3BlblN1U0U9bGlianBlZyBVYnVudHU9bGlianBlZzYyIgotRElTVFJPX1BOX0FMSUFTX3BuLWticHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8ta2Jwcm90byBVYnVudHU9eDExcHJvdG8ta2ItZGV2IERlYmlhbj14MTFwcm90by1rYi1kZXYiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2VybmVsLWRldnNyYyA9ICJEZWJpYW49bGludXgtYmFzZSBVYnVudHU9bGludXgiCi1ESVNUUk9fUE5fQUxJQVNfcG4ta2VybmVsc2hhcmsgPSAiTWFuZHJpdmE9a2VybmVsc2hhcmsgVWJ1bnR1PWtlcm5lbHNoYXJrIgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIldpbmRyaXZlciIKIERJU1RST19QTl9BTElBU19wbi1rZXltYXBzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4ta2YgPSAiT1NQRFQiCkBAIC0yMDUsNyArMTg5LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1saWJ0aW1lZGF0ZS1wZXJsID0gIkRlYmlhbj1saWJ0aW1lZGF0ZS1wZXJsIFVidW50dT1saWJ0aW1lZGF0ZS1wZXJsIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnVyY3UgPSAiRmVkb3JhPXVzZXJzcGFjZS1yY3UgVWJ1bnR1PWxpYnVyY3UwIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnVzYjEgPSAiRGViaWFuPWxpYnVzYi0xLjAtMCBGZWRvcmE9bGlidXNiMSIKLURJU1RST19QTl9BTElBU19wbi1saWJ1c2ItY29tcGF0ID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYngxMSA9ICJEZWJpYW49bGlieDExLTYgRmVkb3JhPWxpYlgxMSBVYnVudHU9bGlieDExLTYgT3BlblN1U0U9eG9yZy14MTEtbGliWDExIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhjYWxpYnJhdGUgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvbGliL2xpYlhDYWxpYnJhdGUvIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhmb250MiA9ICJGZWRvcmE9bGliWGZvbnQyIENsZWFyPWxpYlhmb250MiIKQEAgLTI1Nyw3ICsyNDAsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLW1rZWxmaW1hZ2UgPSAiVWJ1bnR1PW1rZWxmaW1hZ2UgRmVkb3JhPW1rZWxmaW1hZ2UiCiBESVNUUk9fUE5fQUxJQVNfcG4tbWtmb250ZGlyID0gIk1hbmRyaXZhPW1rZm9udGRpciBVYnVudHU9eGZvbnRzLXV0aWxzIEZlZG9yYT14b3JnLXgxMS1mb250LXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLW1rZm9udHNjYWxlID0gIk1hbmRyaXZhPW1rZm9udHNjYWxlIFVidW50dT14Zm9udHMtdXRpbHMgRmVkb3JhPXhvcmcteDExLWZvbnQtdXRpbHMiCi1ESVNUUk9fUE5fQUxJQVNfcG4tbWt0ZW1wID0gIk1hbmRyaXZhPW1rdGVtcCBGZWRvcmE9bWt0ZW1wIgogRElTVFJPX1BOX0FMSUFTX3BuLW1tYy11dGlscyA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLW1vZHV0aWxzLWluaXRzY3JpcHRzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tbXRkLXV0aWxzID0gIkRlYmlhbj1tdGQtdXRpbHMgVWJ1bnR1PW10ZC11dGlscyIKQEAgLTMxNSwyMSArMjk3LDE4IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcG9ydG1hcCA9ICJEZWJpYW49cnBjYmluZCBGZWRvcmE9cnBjYmluZCIKIERJU1RST19QTl9BTElBU19wbi1wb3dlcnRvcCA9ICJNZWVnbz1wb3dlcnRvcCBGZWRvcmE9cG93ZXJ0b3AgRGViaWFuPXBvd2VydG9wIE9wZW5TdVNFPXBvd2VydG9wIE1hbmRyaXZhPXBvd2VydG9wIgogRElTVFJPX1BOX0FMSUFTX3BuLXBwcC1kaWFsaW4gPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1wcmVzZW50cHJvdG8gPSAiRGViaWFuPXgxMXByb3RvLXByZXNlbnQtZGV2IEZlZG9yYT14b3JnLXgxMS1wcm90by1kZXZlbCIKIERJU1RST19QTl9BTElBU19wbi1wc2V1ZG8gPSAiV2luZHJpdmVyIgogRElTVFJPX1BOX0FMSUFTX3BuLXBzcGxhc2ggPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1wdGVzdC1ydW5uZXIgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wdXp6bGVzID0gIkRlYmlhbj1zZ3QtcHV6emxlcyBGZWRvcmE9cHV6emxlcyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zID0gIkZlZG9yYT1weXRob24zIERlYmlhbj1weXRob24zLjIiCi1ESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1kaXN0cmlidXRlID0gIkRlYmlhbj1weXRob24zLXNldHVwdG9vbHMgRmVkb3JhPXB5dGhvbjMtc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLWluaXBhcnNlID0gIkZlZG9yYT1weXRob24taW5pcGFyc2UgRGViaWFuPXB5dGhvbi1pbmlwYXJzZSIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLXBpcCA9ICJPcGVuU3VTRT1weXRob24zLXBpcCBEZWJpYW49cHl0aG9uMy1waXAiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1weWN1cmwgPSAiRmVkb3JhPXB5dGhvbi1weWN1cmwgRGViaWFuPXB5Y3VybCIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLXB5Z3BnbWUgPSAiRmVkb3JhPXB5dGhvbi1weWdwZ21lIERlYmlhbj1weWdwZ21lIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtc2V0dXB0b29scyA9ICJPcGVuU3VTRT1weXRob24zLXNldHVwdG9vbHMgRGViaWFuPXB5dGhvbjMtc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZGJ1cyA9ICJVYnVudHU9cHl0aG9uLWRidXMgRGViaWFuPXB5dGhvbi1kYnVzIE1hbmRyaXZhPXB5dGhvbi1kYnVzIgotRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1kaXN0cmlidXRlID0gIk9wZW5zdXNlPXB5dGhvbi1zZXR1cHRvb2xzIEZlZG9yYT1weXRob24tc2V0dXB0b29scyIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tZ2l0ID0gIkRlYmlhbj1weXRob24tZ2l0IEZlZG9yYT1HaXRQeXRob24iCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLW1ha28gPSAiRmVkb3JhPXB5dGhvbi1tYWtvIE9wZW5zdXNlPXB5dGhvbi1NYWtvIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1weWNhaXJvID0gIk1lZWdvPXB5Y2Fpcm8gRmVkb3JhPXB5Y2Fpcm8gVWJ1bnR1PXB5Y2Fpcm8gRGViaWFuPXB5Y2Fpcm8iCkBAIC0zNDEsMTIgKzMyMCw4IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tcWVtdWdsID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tcWVtdS1oZWxwZXIgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLXJhbmRycHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tcmFuZHJwcm90byIKIERJU1RST19QTl9BTElBU19wbi1yZWFkbGluZSA9ICJGZWRvcmE9cmVhZGxpbmUgRGViaWFuPXJlYWRsaW5lLWNvbW1vbiIKLURJU1RST19QTl9BTElBU19wbi1yZWNvcmRwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1yZWNvcmRwcm90byIKIERJU1RST19QTl9BTElBU19wbi1yZW1ha2UgPSAiTWFuZHJpdmE9cmVtYWtlIERlYmlhbj1yZW1ha2UiCi1ESVNUUk9fUE5fQUxJQVNfcG4tcmVuZGVycHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tcmVuZGVycHJvdG8iCi1ESVNUUk9fUE5fQUxJQVNfcG4tcmVzb3VyY2Vwcm90byA9ICJNZWVnbz14b3JnLXgxMS1wcm90by1yZXNvdXJjZXByb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLXJnYiA9ICJGZWRvcmE9eG9yZy1YMTEtc2VydmVyLXV0aWxzIERlYmlhbj14MTEteHNlcnZlci11dGlscyIKIERJU1RST19QTl9BTElBU19wbi1ycG1yZXNvbHZlID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLXJ0LXRlc3RzID0gIkRlYmlhbj1ydC10ZXN0cyBVYnVudHU9cnQtdGVzdHMiCkBAIC0zNTUsNyArMzMwLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1zYXRvLXNjcmVlbnNob3QgPSAiT3BlbmVkSGFuZCIKIERJU1RST19QTl9BTElBU19wbi1zYmMgPSAiRmVkb3JhPXNiYyBEZWJpYW49bGlic2JjMSIKIERJU1RST19QTl9BTElBU19wbi1zY3JlZW5zaG90ID0gIk9wZW5lZEhhbmQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tc2NybnNhdmVycHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tc2NybnNhdmVycHJvdG8gVWJ1bnR1PXgxMXByb3RvLXNjcm5zYXZlci1kZXYgRGViaWFuPXgxMXByb3RvLXNjcm5zYXZlci1kZXYiCiBESVNUUk9fUE5fQUxJQVNfcG4tc2V0dGluZ3MtZGFlbW9uID0gIk9wZW5lZEhhbmQiCiBESVNUUk9fUE5fQUxJQVNfcG4tc2dtbC1jb21tb24gPSAiT3BlblN1U0U9c2dtbC1jb21tb24gRmVkb3JhPXNnbWwtY29tbW9uIgogRElTVFJPX1BOX0FMSUFTX3BuLXNnbWxzcGwgPSAiRGViaWFuPXNnbWxzcGwgVWJ1bnR1PXNnbWxzcGwiCkBAIC0zNzYsNyArMzUwLDYgQEAKIERJU1RST19QTl9BTElBU19wbi10Y2YtYWdlbnQgPSAiV2luZHJpdmVyIHVwc3RyZWFtPWh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZHNkcC90bS8iCiBESVNUUk9fUE5fQUxJQVNfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi10aW55LWluaXQgPSAiT1NQRFQiCi1ESVNUUk9fUE5fQUxJQVNfcG4tdHJhY2UtY21kID0gIk1hbmRyaXZhPXRyYWNlLWNtZCBVYnVudHU9dHJhY2UtY21kIgogRElTVFJPX1BOX0FMSUFTX3BuLXRyZW1vciA9ICJPU1BEVCB1cHN0cmVhbT1odHRwOi8vd3d3LnhpcGgub3JnL3ZvcmJpcy8iCiBESVNUUk9fUE5fQUxJQVNfcG4tdHRmLWJpdHN0cmVhbS12ZXJhID0gIkRlYmlhbj10dGYtYml0c3RyZWFtLXZlcmEgVWJ1bnR1PXR0Zi1iaXRzdHJlYW0tdmVyYSIKIERJU1RST19QTl9BTElBU19wbi10emNvZGUgPSAiT1NQRFQiCkBAIC0zOTIsNyArMzY1LDYgQEAKIERJU1RST19QTl9BTElBU19wbi11c2Jpbml0ID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tdXRpbC1tYWNyb3MgPSAiTWVlZ289eG9yZy14MTEtdXRpbC1tYWNyb3MgRmVkb3JhPXhvcmcteDExLXV0aWwtbWFjcm9zIE1hbmRyaXZhPXgxMS11dGlsLW1hY3JvcyIKIERJU1RST19QTl9BTElBU19wbi12ODZkID0gIkRlYmlhbj12ODZkIFVidW50dT12ODZkIgotRElTVFJPX1BOX0FMSUFTX3BuLXZpZGVvcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tdmlkZW9wcm90byIKIERJU1RST19QTl9BTElBU19wbi13YWZmbGUgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi13YXRjaGRvZyA9ICJEZWJpYW49d2F0Y2hkb2cgVWJ1bnR1PXdhdGNoZG9nIE1hbmRyaXZhPXdhdGNoZG9nIgogRElTVFJPX1BOX0FMSUFTX3BuLXdlYmtpdGd0ayA9ICJGZWRvcmE9d2Via2l0Z3RrIFVidW50dT1saWJ3ZWJraXQiCkBAIC00MDQsMjEgKzM3NiwxNSBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXhjYi11dGlsLWltYWdlID0gIkRlYmlhbj14Y2ItdXRpbCBGZWRvcmE9eGNiLXV0aWwiCiBESVNUUk9fUE5fQUxJQVNfcG4teGNiLXV0aWwta2V5c3ltcyA9ICJEZWJpYW49eGNiLXV0aWwgRmVkb3JhPXhjYi11dGlsIgogRElTVFJPX1BOX0FMSUFTX3BuLXhjYi11dGlsLXdtID0gIkRlYmlhbj14Y2ItdXRpbCBGZWRvcmE9eGNiLXV0aWwiCi1ESVNUUk9fUE5fQUxJQVNfcG4teGNtaXNjcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8teGNtaXNjcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4teGN1cnNvci10cmFuc3BhcmVudC10aGVtZSA9ICJPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLXhkcHlpbmZvID0gIkZlZG9yYT14b3JnLXgxMS11dGlscyBVYnVudHU9eDExLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLXhldiA9ICJGZWRvcmE9eG9yZy14MTEtdXRpbHMgVWJ1bnR1PXgxMS11dGlscyIKLURJU1RST19QTl9BTElBU19wbi14ZXh0cHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8teGV4dHByb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLXhleWVzID0gIlVidW50dT14MTEtYXBwcyBGZWRvcmE9eG9yZy14MTEtYXBwcyIKLURJU1RST19QTl9BTElBU19wbi14Zjg2YmlnZm9udHByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhmODZiaWdmb250cHJvdG8iCi1ESVNUUk9fUE5fQUxJQVNfcG4teGY4NmRnYXByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhmODZkZ2Fwcm90byIKLURJU1RST19QTl9BTElBU19wbi14Zjg2ZHJpcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8teGY4NmRyaXByb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLXhmODYtaW5wdXQtZXZkZXYgPSAiVWJ1bnR1PXhzZXJ2ZXIteG9yZy1pbnB1dC1ldmRldiBNYW5kcml2YT14MTEtZHJpdmVyLWlucHV0LWV2ZGV2IERlYmlhbj14c2VydmVyLXhvcmctaW5wdXQtZXZkZXYgRmVkb3JhPXhvcmcteDExLWRydi1ldmRldiBNZWVnbz14b3JnLXgxMS1kcnYtZXZkZXYiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni1pbnB1dC1rZXlib2FyZCA9ICJNZWVnbz14b3JnLXgxMS1kcnYta2V5Ym9hcmQgRmVkb3JhPXhvcmcteDExLWRydi1rZXlib2FyZCBNYW5kcml2YT14MTEtZHJpdmVyLWlucHV0LWtleWJvYXJkIERlYmlhbj14c2VydmVyLXhvcmctaW5wdXQta2V5Ym9hcmQiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni1pbnB1dC1tb3VzZSA9ICJVYnVudHU9eHNlcnZlci14b3JnLWlucHV0LW1vdXNlIE1hbmRyaXZhPXgxMS1kcml2ZXItaW5wdXQtbW91c2UgRGViaWFuPXhzZXJ2ZXIteG9yZy1pbnB1dC1tb3VzZSIKIERJU1RST19QTl9BTElBU19wbi14Zjg2LWlucHV0LXN5bmFwdGljcyA9ICJNZWVnbz14b3JnLXgxMS1kcnYtc3luYXB0aWNzIEZlZG9yYT14b3JnLXgxMS1kcnYtc3luYXB0aWNzIFVidW50dT14c2VydmVyLXhvcmctaW5wdXQtc3luYXB0aWNzIE1hbmRyaXZhPXgxMS1kcml2ZXItaW5wdXQtc3luYXB0aWNzIERlYmlhbj14ZnJlZTg2LWRyaXZlci1zeW5hcHRpY3MiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni1pbnB1dC12bW1vdXNlID0gIkZlZG9yYT14b3JnLXgxMS1kcnYtdm1tb3VzZSBVYnVudHU9eHNlcnZlci14b3JnLWlucHV0LXZtbW91c2UgTWFuZHJpdmE9eDExLWRyaXZlci1pbnB1dC12bW1vdXNlIERlYmlhbj14c2VydmVyLXhvcmctaW5wdXQtdm1tb3VzZSIKLURJU1RST19QTl9BTElBU19wbi14Zjg2bWlzY3Byb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhmODZtaXNjcHJvdG8iCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby1jaXJydXMgPSAiT3BlbnN1c2U9eGY4Ni12aWRlby1jaXJydXMgRGViaWFuPXhzZXJ2ZXIteG9yZy12aWRlby1jaXJydXMiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby1mYmRldiA9ICJVYnVudHU9eHNlcnZlci14b3JnLXZpZGVvLWZiZGV2IERlYmlhbj14c2VydmVyLXhvcmctdmlkZW8tZmJkZXYiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby1pbnRlbCA9ICJEZWJpYW49eHNlcnZlci14b3JnLXZpZGVvLWludGVsIEZlZG9yYT14b3JnLXgxMS1kcnYtaW50ZWwgTWFuZHJpdmE9eDExLWRyaXZlci12aWRlby1pbnRlbCBNZWVnbz14b3JnLXgxMS1kcnYtaW50ZWwgVWJ1bnR1PXhzZXJ2ZXIteG9yZy12aWRlby1pbnRlbCIKQEAgLTQyNywxNSArMzkzLDEzIEBACiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4teGY4Ni12aWRlby12ZXNhID0gIkRlYmlhbj14c2VydmVyLXhvcmctdmlkZW8tdmVzYSBGZWRvcmE9eG9yZy14MTEtZHJ2LXZlc2EgTWFuZHJpdmE9eDExLWRyaXZlci12aWRlby12ZXNhIFVidW50dT14c2VydmVyLXhvcmctdmlkZW8tdmVzYSIKIERJU1RST19QTl9BTElBU19wbi14Zjg2LXZpZGVvLXZtd2FyZSA9ICJEZWJpYW49eHNlcnZlci14b3JnLXZpZGVvLXZtd2FyZSBGZWRvcmE9eG9yZy14MTEtZHJ2LXZtd2FyZSBNYW5kcml2YT14MTEtZHJpdmVyLXZpZGVvLXZtd2FyZSBVYnVudHU9eHNlcnZlci14b3JnLXZpZGVvLXZtd2FyZSIKLURJU1RST19QTl9BTElBU19wbi14Zjg2dmlkbW9kZXByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhmODZ2aWRtb2RlcHJvdG8gVWJ1bnR1PXgxMXByb3RvLXhmODZ2aWRtb2RlIERlYmlhbj14MTFwcm90by14Zjg2dmlkbW9kZSIKIERJU1RST19QTl9BTElBU19wbi14aG9zdCA9ICJVYnVudHU9eDExLXhzZXJ2ZXItdXRpbHMgRmVkb3JhPXhvcmcteDExLXNlcnZlci11dGlscyIKLURJU1RST19QTl9BTElBU19wbi14aW5lcmFtYXByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLXhpbmVyYW1hcHJvdG8gVWJ1bnR1PXgxMXByb3RvLXhpbmVyYW1hIERlYmlhbj14MTFwcm90by14aW5lcmFtYSIKIERJU1RST19QTl9BTElBU19wbi14aW5wdXQtY2FsaWJyYXRvciA9ICJGZWRvcmE9eGlucHV0LWNhbGlicmF0b3IgTWFuZHJhdmlhPXhpbnB1dC1jYWxpYnJhdG9yIFVidW50dT14aW5wdXQtY2FsaWJyYXRvciIKIERJU1RST19QTl9BTElBU19wbi14a2Jjb21wID0gIlVidW50dT14MTEteGtiLXV0aWxzIEZlZG9yYT14b3JnLXgxMS14a2ItdXRpbHMiCiBESVNUUk9fUE5fQUxJQVNfcG4teG1vZG1hcCA9ICJNZWVnbz14b3JnLXgxMS11dGlscy14bW9kbWFwIEZlZG9yYT14b3JnLXgxMS1zZXJ2ZXItdXRpbHMgVWJ1bnR1PXgxMS14c2VydmVyLXV0aWxzIgogRElTVFJPX1BOX0FMSUFTX3BuLXhvcmctbWluaW1hbC1mb250cyA9ICJVYnVudHU9eGZvbnRzLWJhc2UgRmVkb3JhPXhvcmcteDExLWZvbnRzLWJhc2UiCitESVNUUk9fUE5fQUxJQVNfcG4teG9yZ3Byb3RvID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL3Byb3RvL3hvcmdwcm90byIKIERJU1RST19QTl9BTElBU19wbi14cHJvcCA9ICJNZWVnbz14b3JnLXgxMS11dGlscy14cHJvcCBGZWRvcmE9eG9yZy14MTEtdXRpbHMgVWJ1bnR1PXgxMS11dGlscyIKLURJU1RST19QTl9BTElBU19wbi14cHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8teHByb3RvIEZlZG9yYT14b3JnLXgxMS1wcm90by1kZXZlbCBVYnVudHU9eDExcHJvdG8tY29yZS1kZXYgRGViaWFuPXgxMXByb3RvLWNvcmUtZGV2IE9wZW5zdXNlPXhvcmcteDExLXByb3RvLWRldmVsIE1hbmRyaXZhPXgxMS1wcm90by1kZXZlbCIKIERJU1RST19QTl9BTElBU19wbi14cHJveHltYW5hZ2VtZW50cHJvdG9jb2wgPSAiTWVlZ289eG9yZy14MTEtcHJvdG8teHByb3h5bWFuYWdlbWVudHByb3RvY29sIgogRElTVFJPX1BOX0FMSUFTX3BuLXhyYW5kciA9ICJVYnVudHU9eDExLXhzZXJ2ZXItdXRpbHMgRmVkb3JhPXhvcmcteDExLXNlcnZlci11dGlscyIKIERJU1RST19QTl9BTElBU19wbi14cmRiID0gIlVidW50dT14MTEteHNlcnZlci11dGlscyBGZWRvcmE9eG9yZy14MTEtc2VydmVyLXV0aWxzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCmluZGV4IDQ4YWZmOTUuLjEyNzg1OTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTI5LDEwMiArMjksOTQgQEAKICMKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjbCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWNhID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaXRlc3RzID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYWR3YWl0YS1pY29uLXRoZW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjcGlkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWR3YWl0YS1pY29uLXRoZW1lID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1saWIgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtcGx1Z2lucyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1zdGF0ZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b29scyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscy1zY3JpcHRzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hcG1kID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwbWQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwci11dGlsID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHQgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXB0LW5hdGl2ZSA9ICJBbsOtYmFsIExpbcOzbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcmdwLXN0YW5kYWxvbmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc2NpaWRvYyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXNwZWxsID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3NpbXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNwZWxsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWNvcmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdHRyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZiA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZi1hcmNoaXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9nZW4tbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9tYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaS11aSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFiZWx0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtZmlsZXMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFiZWx0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmR3Z2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iZWVjcnlwdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1iaWdyZXFzcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmluZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoLWNvbXBsZXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW5kID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3NzZGsgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaXNvbiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYmphbS1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iamFtLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0b29sID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3N0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsa3RyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJtYXAtdG9vbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib29zdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ib290Y2hhcnQyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJzZC1oZWFkZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnRyZnMtdG9vbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1hcHBsaWFuY2UtaW1hZ2UgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1jb21wYXJlID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnRyZnMtdG9vbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtYXBwbGlhbmNlLWltYWdlID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLWNvbXBhcmUgPSAiUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtc3lzcm9vdHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZGVyID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94ID0gIkFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3gtaW5pdHRhYiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ6aXAyID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2EtY2VydGlmaWNhdGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2Fpcm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2FsaWJyYXRlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2EtY2VydGlmaWNhdGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhaXJvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2FudGFyZWxsLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jZHJ0b29scy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLWd0ay0xLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb21wb3NpdGVwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3RrLTEuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNtYWtlID0gIlBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvZ2wtMS4wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbiA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1nbm9tZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWNvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25ubWFuLWdub21lID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZS10b29scyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZWtpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZXV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcGlvID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3JhY2tsaWIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3JlYXRlcmVwby1jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyYWNrbGliID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JlYXRlcmVwby1jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb25pZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyb3NzLWxvY2FsZWRlZi1uYXRpdmUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbGludXggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtdGVzdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3VwcyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tY3VybCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXJsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3ZlLWNoZWNrLXRvb2wgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jd2F1dG9tYWNyb3MgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGFtYWdlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGIgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtZ2xpYiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgpAQCAtMTMyLDU1ICsxMjQsNDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtd2FpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlcG1vZHdyYXBwZXItY3Jvc3MgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kZXNrdG9wLWZpbGUtdXRpbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGhjcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnN0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZ1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZGlyZWN0ZmIgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpcmVjdGZiLWV4YW1wbGVzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXN0Y2MgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpc3RjYy1jb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRtaWRlY29kZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRteHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRuZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRtaWRlY29kZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kbmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZG9jYm9vay14bWwtZHRkNCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZG9jYm9vay14c2wtc3R5bGVzaGVldHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvczJ1bml4ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZG9zZnN0b29scyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZHBrZyA9ICJBbsOtYmFsIExpbcOzbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kcmkycHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZHJpM3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyb3BiZWFyID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kdGMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1kd2FyZnNyY2ZpbGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHRjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWR3YXJmc3JjZmlsZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZTJmc3Byb2dzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWVlLWFjcGktc2NyaXB0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby1mYiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8teDExID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZWZpbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLWZiID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8teDExID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVsZnV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY29kaW5ncyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY2hhbnQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lcGlwaGFueSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldGh0b29sID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV1ZGV2ID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV1ZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXhwYXQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZmbXBlZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mZm1wZWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmlsZSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZmluZHV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1maXhlc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsYWMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZsZXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtYWxpYXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udHNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udGNvbmZpZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvb21hdGljLWZpbHRlcnMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZnN0ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvcm1mYWN0b3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmVldHlwZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyaWJpZGkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nYXdrID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC0xOTMsNTIgKzE3Niw0OCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNhbml0aXplcnMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2Mtc291cmNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjbWFrZWRlcCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjciA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGstcGl4YnVmID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2RrLXBpeGJ1ZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdldHRleHQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1naG9zdHNjcmlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2l0ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi0yLjAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsZXcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliLTIuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItbmV0d29ya2luZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLWxvY2FsZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLW10cmFjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXNjcmlwdHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGlkZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdscHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRlc2t0b3AtdGVzdGluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdub21lLWRvYy11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS10aGVtZXMtc3RhbmRhcmQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtdGhlbWVzLXN0YW5kYXJkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ251LWNvbmZpZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtZWZpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnVwZyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ251dGxzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXRscyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tY3Jvc3MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1kZXAgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nby1oZWxsb3dvcmxkID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ29iamVjdC1pbnRyb3NwZWN0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BlcmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nb2JqZWN0LWludHJvc3BlY3Rpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BlcmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BnbWUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwdGZkaXNrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3B0ZmRpc2sgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JlcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyb2ZmID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1ib290Y29uZiA9ICJDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItZWZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1ib290Y29uZiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdydWItZWZpID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdC1leGFtcGxlcyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdC12YWxpZGF0ZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKQEAgLTI1MiwxNzcgKzIzMSwxNjIgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1weXRob24gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1kb2MgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZW5naW5lcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLXNhdG8tZW5naW5lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1aWx0LW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndW1taWJvb3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGsrID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKzMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstZG9jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1pY29uLXV0aWxzLW5hdGl2ZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhkcGFybSA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWhlbHAybWFuLW5hdGl2ZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taGljb2xvci1pY29uLXRoZW1lID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWh3bGF0ZGV0ZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taTJjLXRvb2xzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhpY29sb3ItaWNvbi10aGVtZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWh3bGF0ZGV0ZWN0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWkyYy10b29scyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljZWNjLWNyZWF0ZS1lbnYgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWljb24tbmFtaW5nLXV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdC1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWZ1cGRvd24gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0LWlmdXBkb3duID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWJvb3QgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtZnJhbWV3b3JrID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtYm9vdCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaSA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHNjcmlwdHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4taW5wdXRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1pbnRsdG9vbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWJvb3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290LXRpbnkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaS10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLXRlc3RmcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRzY3JpcHRzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW50bHRvb2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXByb3V0ZTIgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXB0YWJsZXMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXB1dGlscyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcmRhLXV0aWxzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWlzby1jb2RlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlzby1jb2RlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pdyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqcGVnLXR1cmJvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpwZWctdHVyYm8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tZ2xpYiA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2JkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2Jwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rY29uZmlnLWZyb250ZW5kcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtiZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWxzaGFyayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbC1kZXZzcmMgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2V4ZWMtdG9vbHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4ta2V5bWFwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtleGVjLXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2V5bWFwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rbW9kLW5hdGl2ZSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta21zY3ViZSA9ICJDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbDNhZnBhZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sM2FmcGFkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGFtZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGRjb25maWctbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYTUyID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhY3BpID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFpbyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFjcGkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhaW8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJjaGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFzc3VhbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhdG9taWMtb3BzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXNzdWFuID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXRvbWljLW9wcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmJzZCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjYXAtbmcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNncm91cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNncm91cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29tcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjb252ZXJ0LWFzbjEtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjcm9jbyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkYWVtb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkbXggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29tcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY3JvY28gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkYWVtb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG14ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRybSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVwb3h5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcG94eSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVyYXRpb24tZm9udHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXJyb3ItcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmRldiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmVudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJleGlmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmFrZWtleSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZmaSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0tZXh0cmEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmb250ZW5jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZGV2ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXZlbnQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJleGlmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZha2VrZXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZmZpID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZtLWV4dHJhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZvbnRlbmMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY2MtaW5pdGlhbCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdjcnlwdCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2ZvcnRyYW4gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbHUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2xvc3MgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWVoczI5QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbHUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJncGctZXJyb3IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljYWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljb252ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ3VkZXYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWQzdGFnID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpbnB1dCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlia3NiYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1hdGNoYm94ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJrc2JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1hdGNoYm94ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW5sID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibXBjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dC1weXRob24gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5mc2lkbWFwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5vdGlmeSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zbDIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJuc3MtbWRucyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvbXhpbCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJvd2wgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGFtID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjYXAgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNpYWNjZXNzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNzLW1kbnMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNzLW5pcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9nZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9teGlsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGFtID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNhcCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjaWFjY2VzcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY3JlMiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwZm00ID0gIk1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGlwZWxpbmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nMTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHJveHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHRocmVhZC1zdHVicyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJlcG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyc3ZnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGlwZWxpbmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicG5nID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHJveHkgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwdGhyZWFkLXN0dWJzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJlcG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicnN2ZyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNhbXBsZXJhdGUwID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbDIgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNlY3JldCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNlY3JldCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzbSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNuZGZpbGUxID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb2x2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvdXAtMi40ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRhc24xID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvbHYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb3VwLTIuNCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRhc24xID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGVzdC1uZWVkcy1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRoZW9yYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRoZW9yYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0aW1lZGF0ZS1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpcnBjID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpcnBjID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLWNyb3NzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVuaXN0cmluZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bndpbmQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJjdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJpLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiLWNvbXBhdCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzZXIgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNiMSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZhID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEtdXRpbHMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2b3JiaXMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndlYnAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExLWRpZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGF1ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYWxpYnJhdGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNiID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjb21wb3NpdGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGN1cnNvciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZGFtYWdlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkbWNwID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhleHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZpeGVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250MiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGluZXJhbWEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEtZGlldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhhdSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjb21wb3NpdGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4Y3Vyc29yID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGRhbWFnZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkbWNwID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGV4dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmaXhlcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZvbnQyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZ0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4aW5lcmFtYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmNvbW1vbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCkBAIC00MzAsMjUgKzM5NCwyNCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNheC1wZXJsID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1zaW1wbGUtcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwyID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHBtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVuZGVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2V0dGluZ3MtY2xpZW50ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzaG1mZW5jZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2x0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHRzdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4diA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dm1jID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2ZGdhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2bWlzYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NnZtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnlhbWwgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWdodHRwZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWR1bW15ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG11ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHBtID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJhbmRyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHJlbmRlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2NybnNhdmVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNobWZlbmNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNsdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh0c3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4diA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh2bWMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4eGY4NmRnYSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2bWlzYyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2dm0gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ5YW1sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpZ2h0dHBkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWR1bW15ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWZpcm13YXJlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtbGliYy1oZWFkZXJzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LXlvY3RvID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKQEAgLTQ1NywxMSArNDIwLDExIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by10aW55ID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxsdm0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sb2dyb3RhdGUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxyenN6ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxyenN6ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2Jpbml0c2NyaXB0cyA9ICJDaGFuZyBSZWJlY2NhIFN3ZWUgRnVuIDxyZWJlY2NhLnN3ZWUuZnVuLmNoYW5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2Jpbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYnRlc3QgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzb2YgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNvZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0cCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctbW9kdWxlcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy10b29scyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCkBAIC00NzgsMTIwICs0NDEsMTExIEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlLW1vZC1zY3JpcHRzID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1kYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWFuLXBhZ2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1jb25maWctZ3RrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3AgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtZGVza3RvcC1zYXRvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWtleWJvYXJkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uLXNhdG8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGVybWluYWwgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGhlbWUtc2F0byA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC13bSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZGFkbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWNvbmZpZy1ndGsgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gta2V5Ym9hcmQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1wYW5lbC0yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXNlc3Npb24tc2F0byA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXRlcm1pbmFsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGhlbWUtc2F0byA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXdtID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZGFkbSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lbnUtY2FjaGUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYS1kZW1vcyA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZ2wgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtZW52aXJvbm1lbnQgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudC1leHRzZGsgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1leHRzZGstdG9vbGNoYWluID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtaWRlLXN1cHBvcnQgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLXRvb2xjaGFpbiA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtaWRlLXN1cHBvcnQgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS10b29sY2hhaW4gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS13b3JsZC1wa2dkYXRhID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pLXgtc2Vzc2lvbiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZWxmaW1hZ2UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRkaXIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250c2NhbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaS14LXNlc3Npb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250ZGlyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250c2NhbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2xpYnMtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rdGVtcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tbWMtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbW1jLXV0aWxzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1vZHV0aWxzLWluaXRzY3JpcHRzID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGVnMmRlYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZWcyZGVjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZnIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGcxMjMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tc210cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1wZzEyMyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tc210cCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGQtdXRpbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGRldiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1tdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXRkZXYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdG9vbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbXVzbC11dGlscyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW14LTEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1teC0xLjAgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXNtID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWxpYnRvb2wgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1xZW11LWhlbHBlciA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1xZW11LWhlbHBlciA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXdsaWIgPSAiQWxlamFuZHJvIEhlcm5hbmRleiA8YWVoczI5QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uY3Vyc2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZWFyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldC10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXRiYXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5lYXJkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0LXRvb2xzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmV0YmFzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldHRsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy1leHBvcnQtcm9vdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbmluamEgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNwciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb2Zvbm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb2gtcHV6emxlcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NoID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ucHRoID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MtbXlob3N0bmFtZSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9mb25vID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzaCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zc2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzbDEwID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2cgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLWFyY2gtY29uZmlnID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy1rZXlyaW5ncyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2ctdXRpbHMgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1vcHJvZmlsZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9yYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcmMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcy1yZWxlYXNlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tb3NzcC11dWlkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZiA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tb3ZtZi1zaGVsbC1pbWFnZSA9ICJSaWNhcmRvIE5lcmkgPHJpY2FyZG8ubmVyaS1jYWxkZXJvbkBsaW51eC5pbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcDExLWtpdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXAxMS1raXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZS1pbmRleCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGFydGVkID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXRjaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2hlbGYgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4LXV0aWxzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY2l1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtYW5mbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWNpYXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjbWFuZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGVyZiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBlcmwtbmF0aXZlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpZ2xpdCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybC1uYXRpdmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWd6ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waW5lbnRyeSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeG1hbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1waXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcGtnY29uZiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wa2djb25maWcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG0tdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcG9pbnRlcmNhbC14aW5wdXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb25nLWNsb2NrID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeG1hbiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBrZ2NvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wa2djb25maWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wbS11dGlscyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwteGlucHV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvbmctY2xvY2sgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3B0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wb3dlcnRvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvd2VydG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHBwLWRpYWxpbiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlbGluayA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHJlc2VudHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXByb2NwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXByb2NwcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc2V1ZG8gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzbWlzYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzbWlzYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc3BsYXNoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wdGVzdC1ydW5uZXIgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHRlc3QtcnVubmVyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpbyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHVsc2VhdWRpby1jbGllbnQtY29uZi1zYXRvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wdXp6bGVzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCkBAIC02MDMsNiArNTU3LDggQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRidXMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRvY3V0aWxzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1leHRyYXMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWZpbGUtdXRpbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZ2l0ZGIgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWluaXBhcnNlID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgpAQCAtNjEwLDE5MCArNTY2LDE3MiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW51bXB5ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1wYnIgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXBpcCA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHljYWlybyA9ICJEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zaXggPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNtbWFwID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdSA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXV3cmFwcGVyLWNyb3NzID0gIkp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zdWJ1bml0ID0gIkRlcmVrIFN0cmFrYSA8ZGVyZWtAYXN0ZXJpdXMuaW8+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy10ZXN0dG9vbHMgPSAiRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXFlbXUtaGVscGVyLW5hdGl2ZSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11d3JhcHBlci1jcm9zcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcXVvdGEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmFuZHJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdW90YSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlMmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZWFkbGluZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmVjb3JkcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmVtYWtlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlbmRlcnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc29sdmNvbmYgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlc291cmNlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcmdiID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJnYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwY2JpbmQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJuZy10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ybmctdG9vbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycGNzdmMtcHJvdG8gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG0gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJwbXJlc29sdmUgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJzeW5jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ydC10ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcnVuLXBvc3RpbnN0cyA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ4dnQtdW5pY29kZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnQtdGVzdHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnVieSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1bi1wb3N0aW5zdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yeHZ0LXVuaWNvZGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYmMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcmVlbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3Juc2F2ZXJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3JlZW4gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZWQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlcmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2VyZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHNlcmlhbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0dGluZ3MtZGFlbW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHRpbmdzLWRhZW1vbiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93LXNlY3VyZXR0eSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93LXN5c3Jvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYXJlZC1taW1lLWluZm8gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc2h1dGRvd24tZGVza3RvcCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYXJlZC1taW1lLWluZm8gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaHV0ZG93bi1kZXNrdG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNpZ25pbmcta2V5cyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zbGFuZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc29jYXQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zb3VyY2UtaGlnaGxpZ2h0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXNwZWV4ID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcGVleGRzcCA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3FsaXRlMyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcWxpdGUzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3F1YXNoZnMtdG9vbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhcnR1cC1ub3RpZmljYXRpb24gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdGFydHVwLW5vdGlmaWNhdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdHJhY2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyZXNzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmVzcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1YnZlcnNpb24gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3VkbyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3dhYmJlci1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zd2lnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3aWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNmc3V0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNrbG9nZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNwcm9mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzcHJvZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdGNoYXJ0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3Rjb25mID0gIkNhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1ib290Y29uZiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1jb25mID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWNvbXBhdC11bml0cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1zZXJpYWxnZXR0eSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAtdXByb2JlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0ID0gIkNoYW5nIFJlYmVjY2EgU3dlZSBGdW4gPHJlYmVjY2Euc3dlZS5mdW4uY2hhbmdAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0LWluaXR0YWIgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGFnbGliID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbXRhcCA9ICJWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAtdXByb2JlcyA9ICJWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN2aW5pdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0LWluaXR0YWIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10YWdsaWIgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10YXIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjZi1hZ2VudCA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjZi1hZ2VudCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjbCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdGNwLXdyYXBwZXJzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRlc3RleHBvcnQtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpMmh0bWwgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10aWZmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mbyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8tZHVtbXktbmF0aXZlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGlmZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10aW1lID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpbnktaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRyYWNlLWNtZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR0Zi1iaXRzdHJlYW0tdmVyYSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXR6ZGF0YSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10dGYtYml0c3RyZWFtLXZlcmEgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHpkYXRhID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290ID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LWZ3LXV0aWxzID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LW1raW1hZ2UgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi11Ym9vdGNoYXJ0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdWRldi1leHRyYWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdW5mczMgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11ZGV2LWV4dHJhY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuZnMzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pZmRlZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuaW5hdGl2ZS10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVuemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXBkYXRlLXJjLmQgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdXNiaW5pdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYnV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdXBkYXRlLXJjLmQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2Jpbml0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYnV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbGludXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbWFjcm9zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXY4NmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsZ3JpbmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12aWRlb3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbWFjcm9zID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdjg2ZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZhbGdyaW5kID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZvbGF0aWxlLWJpbmRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi12dGUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdnVsa2FuID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXZ1bGthbi1kZW1vcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13YWZmbGUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2F0Y2hkb2cgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZy1jb25maWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dGUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4gPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4tZGVtb3MgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YWZmbGUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZy1jb25maWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2F5bGFuZCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQtcHJvdG9jb2xzID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2Via2l0Z3RrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3RvbiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3Rvbi1jb25mID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2VzdG9uLWluaXQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13Z2V0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13aGljaCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiQ2hhbmcgUmViZWNjYSBTd2VlIEZ1biA8cmViZWNjYS5zd2VlLmZ1bi5jaGFuZ0BpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4td2lyZWxlc3MtdG9vbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2hpY2ggPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13aWMtdG9vbHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGEtc3VwcGxpY2FudCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14MTEtY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teDExcGVyZiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgyNjQgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtaW1hZ2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwta2V5c3ltcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1yZW5kZXJ1dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXdtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjbWlzY3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGRnLXV0aWxzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkcHlpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXh0cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGV5ZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1ldmRldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWtleWJvYXJkID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbGliaW5wdXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1tb3VzZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXN5bmFwdGljcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXZtbW91c2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1jaXJydXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1mYmRldiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWludGVsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tb21hcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLW9tYXBmYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLXZlc2EgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGY4NmRnYXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkcmlwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2bWlzY3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZ2aWRtb2RlcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGhvc3QgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXJhbWFwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5ldGQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGluaXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dC1jYWxpYnJhdG9yID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrYmNvbXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teGtleWJvYXJkLWNvbmZpZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14YXV0aCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi1wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtaW1hZ2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1rZXlzeW1zID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtcmVuZGVydXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXdtID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGN1cnNvci10cmFuc3BhcmVudC10aGVtZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkZy11dGlscyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhkcHlpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGV5ZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWV2ZGV2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1rZXlib2FyZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbGliaW5wdXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LW1vdXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1zeW5hcHRpY3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LXZtbW91c2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWNpcnJ1cyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLWludGVsID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12ZXNhID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aG9zdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbmV0ZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbml0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGlucHV0LWNhbGlicmF0b3IgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14a2Jjb21wID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGtleWJvYXJkLWNvbmZpZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhtbHRvID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14bW9kbWFwID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhvcmctbWluaW1hbC1mb250cyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHJhbmRyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyZXN0b3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci1ub2RtLWluaXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNlcnZlci14Zjg2LWNvbmZpZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhvcmcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHNldCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dHJhbnMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHVzZXItYWNjb3VudCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi14dmlkZW8tdGVzdHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4teHZpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXh3aW5pbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhtb2RtYXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14b3JnLW1pbmltYWwtZm9udHMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14b3JncHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cHJvcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhyZXN0b3AgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLW5vZG0taW5pdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXIteGY4Ni1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhvcmcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2V0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHRyYW5zID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHVzZXItYWNjb3VudCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aWRlby10ZXN0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh2aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh3aW5pbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teHogPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi15YXNtID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi16aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi16bGliID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCmluZGV4IDdjMTY1YzcuLmNkYzUzOTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9uby1zdGF0aWMtbGlicy5pbmMKQEAgLTEsNCArMSw0IEBACi1ESVNBQkxFX1NUQVRJQyA9ICIgLS1kaXNhYmxlLXN0YXRpYyIKK0RJU0FCTEVfU1RBVElDID89ICIgLS1kaXNhYmxlLXN0YXRpYyIKIAogIyBxZW11IGFib3J0cyBvbiB1bnJlY29nbmlzZWQgb3B0aW9uCiBESVNBQkxFX1NUQVRJQ19wbi1xZW11ID0gIiIKQEAgLTM2LDYgKzM2LDcgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmQgPSAiJHtESVNBQkxFX1NUQVRJQ30iCiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kX3BuLWxpYmljYWwgPSAiIC1EU0hBUkVEX09OTFk9VHJ1ZSIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3BuLWxpYmpwZWctdHVyYm8gPSAiIC1ERU5BQkxFX1NUQVRJQz1GYWxzZSIKIAogRVhDT05GSUdfQVJHU19hcHBlbmRfcG4tbmN1cnNlcyA9ICIgLS13aXRob3V0LW5vcm1hbCIKIEVYQ09ORklHX0FSR1NfYXBwZW5kX3BuLW5jdXJzZXMtbmF0aXZlID0gIiAtLXdpdGhvdXQtbm9ybWFsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IGFhZWNhNjkuLjYyMDk3OGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKQEAgLTMsMTQgKzMsMTQgQEAKICMgb3IgYm90aCBzbyBhIGJsYWNrbGlzdCBpcyBtYWludGFpbmVkIGhlcmUuIFRoZSBpZGVhIHdvdWxkIGJlIG92ZXIKICMgdGltZSB0byByZWR1Y2UgdGhpcyBsaXN0IHRvIG5vdGhpbmcuCiAjIEZyb20gYSBZb2N0byBQcm9qZWN0IHBlcnNwZWN0aXZlLCB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYW5kIHRlc3RlZAotIyBpbiB0aGUgRElTVFJPPSJwb2t5LWxzYiIgY29uZmlndXJhdGlvbi4KKyMgaW4gdGhlIERJU1RSTz0icG9reSIgY29uZmlndXJhdGlvbi4KIAogR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKICMgSWYgc3RhdGljIFBJRSBpcyBrbm93biB0byB3b3JrIHdlbGwsIEdMSUJDUElFPSItLWVuYWJsZS1zdGF0aWMtcGllIiBjYW4gYmUgc2V0CiAKICMgX0ZPUlRJRllfU09VUkNFIHJlcXVpcmVzIC1PMSBvciBoaWdoZXIsIHNvIGRpc2FibGUgaW4gZGVidWcgYnVpbGRzIGFzIHRoZXkgdXNlCiAjIC1PMCB3aGljaCB0aGVuIHJlc3VsdHMgaW4gYSBjb21waWxlciB3YXJuaW5nLgotbGNsX21heWJlX2ZvcnRpZnkgPSAiJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ0RFQlVHX0JVSUxEJywnMScsJycsJy1EX0ZPUlRJRllfU09VUkNFPTInLGQpfSIKK2xjbF9tYXliZV9mb3J0aWZ5ID89ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnREVCVUdfQlVJTEQnLCcxJywnJywnLURfRk9SVElGWV9TT1VSQ0U9MicsZCl9IgogCiAjIEVycm9yIG9uIHVzZSBvZiBmb3JtYXQgc3RyaW5ncyB0aGF0IHJlcHJlc2VudCBwb3NzaWJsZSBzZWN1cml0eSBwcm9ibGVtcwogU0VDVVJJVFlfU1RSSU5HRk9STUFUID89ICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSIKQEAgLTIxLDE5ICsyMSwyMCBAQAogCiBTRUNVUklUWV9OT1BJRV9DRkxBR1MgPz0gIi1uby1waWUgLWZuby1QSUUiCiAKLVNFQ1VSSVRZX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7U0VDVVJJVFlfUElFX0NGTEFHU30gJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgotU0VDVVJJVFlfTk9fUElFX0NGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKK1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUiA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgogCi1TRUNVUklUWV9MREZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLVdsLC16LHJlbHJvLC16LG5vdyIKLVNFQ1VSSVRZX1hfTERGTEFHUyA/PSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIC1XbCwteixyZWxybyIKK1NFQ1VSSVRZX0NGTEFHUyA/PSAiJHtTRUNVUklUWV9TVEFDS19QUk9URUNUT1J9ICR7U0VDVVJJVFlfUElFX0NGTEFHU30gJHtsY2xfbWF5YmVfZm9ydGlmeX0gJHtTRUNVUklUWV9TVFJJTkdGT1JNQVR9IgorU0VDVVJJVFlfTk9fUElFX0NGTEFHUyA/PSAiJHtTRUNVUklUWV9TVEFDS19QUk9URUNUT1J9ICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKKworU0VDVVJJVFlfTERGTEFHUyA/PSAiJHtTRUNVUklUWV9TVEFDS19QUk9URUNUT1J9IC1XbCwteixyZWxybywteixub3ciCitTRUNVUklUWV9YX0xERkxBR1MgPz0gIiR7U0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SfSAtV2wsLXoscmVscm8iCiAKICMgcG93ZXJwYyBkb2VzIG5vdCBnZXQgb24gd2l0aCBwaWUgZm9yIHJlYXNvbnMgbm90IGxvb2tlZCBpbnRvIGFzIHlldAotU0VDVVJJVFlfQ0ZMQUdTX3Bvd2VycGMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCiBHQ0NQSUVfcG93ZXJwYyA9ICIiCiBHTElCQ1BJRV9wb3dlcnBjID0gIiIKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfcG93ZXJwYyA9ICIke1NFQ1VSSVRZX1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdjY19wb3dlcnBjID0gIiIKIAotIyBhcm0gc3BlY2lmaWMgc2VjdXJpdHkgZmxhZyBpc3N1ZXMKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYyA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2xpYmMtaW5pdGlhbCA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2NjLXJ1bnRpbWUgPSAiIgpAQCAtNDMsNyArNDQsNiBAQAogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLXg4Ni1uYXRpdmUgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdydWItZWZpLWk1ODYtbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS14ODYtNjQtbmF0aXZlID0gIiIKLQogU0VDVVJJVFlfQ0ZMQUdTX3BuLW1rZWxmaW1hZ2VfeDg2ID0gIiIKIAogU0VDVVJJVFlfQ0ZMQUdTX3BuLXZhbGdyaW5kID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKQEAgLTU4LDkgKzU4LDkgQEAKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSIKIFRBUkdFVF9MREZMQUdTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7U0VDVVJJVFlfTERGTEFHU30iCiAKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdjYy1ydW50aW1lID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdsaWJjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLWdsaWJjLWluaXRpYWwgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgorU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdjYy1ydW50aW1lID0gIiIKK1NFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nbGliYyA9ICIiCitTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2xpYmMtaW5pdGlhbCA9ICIiCiAjIEFsbCB4b3JnIG1vZHVsZSBkcml2ZXJzIG5lZWQgdG8gYmUgbGlua2VkIHRoaXMgd2F5IGFzIHdlbGwgYW5kIGFyZQogIyBoYW5kbGVkIGluIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwogU0VDVVJJVFlfTERGTEFHU19wbi14c2VydmVyLXhvcmcgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYwppbmRleCBhOGNlNmQzLi5lMDRmOGM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYwpAQCAtNCwxMSArNCw5IEBACiAKIExJQkNFWFRFTlNJT04gPSAiIgogCi0jIEFkZCBiYXJlbWV0YWwgbGliYyBvdmVycmlkZXMgdG8gdGhlIG92ZXJyaWRlcy4KIExJQkNPVkVSUklERSA9ICI6bGliYy1iYXJlbWV0YWwiCi1PVkVSUklERVMgLj0gIiR7TElCQ09WRVJSSURFfSIKIAotQVNTVU1FX1BST1ZJREVEICs9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC9saWJpY29udiIKK0FTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC9saWJjIHZpcnR1YWwvbGliaWNvbnYgdmlydHVhbC9jcnlwdCIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyA/PSAibXVzbCIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmljb252ID89ICJtdXNsIgpAQCAtMjMsNiArMjEsOSBAQAogRVhUUkFfT0VDT05GX3BuLWdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfV9hcHBlbmQgPSAiIC0td2l0aG91dC1oZWFkZXJzIgogREVQRU5EU19yZW1vdmVfcG4tbWV0YS10b29sY2hhaW4gPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyIKIAorIyBjZXJ0YWluIGNvbXBpbGVyIGxpYnMgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBsaWJjLCBhdm9pZCB0aGUgZGVwZW5kZW5jZSBvbiBjb21waWxlcmxpYnMKK0JBU0VERVBFTkRTX3JlbW92ZV9jbGFzcy10YXJnZXQgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIgorCiBUQVJHRVRfT1MgPSAiZWxmIgogVEFSR0VUX09TX2FybSA9ICJlYWJpIgogCkBAIC0zMCwzICszMSw5IEBACiBUT09MQ0hBSU5fSE9TVF9UQVNLX0FUVEVNUFRPTkxZID89ICIiCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gImxpYmdjYy1kZXYiCiBUT09MQ0hBSU5fTkVFRF9DT05GSUdTSVRFX0NBQ0hFX3JlbW92ZSA9ICJ2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyB6bGliIG5jdXJzZXMiCisKKyMgZGlzYWJsZSBzdGFjayBwcm90ZWN0b3IgYnkgZGVmYXVsdCAobm8tbGliYywgbm8gcHJvdGVjdG9yIGltcGxlbWVudGF0aW9uKQorU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX2xpYmMtYmFyZW1ldGFsID0gIiIKKyMgZGlzYWJsZSBwaWUgc2VjdXJpdHkgZmxhZ3MgYnkgZGVmYXVsdAorU0VDVVJJVFlfQ0ZMQUdTX2xpYmMtYmFyZW1ldGFsID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1NfbGliYy1iYXJlbWV0YWwgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWdsaWJjLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1nbGliYy5pbmMKaW5kZXggYWQ4MDAwZi4uOGQxMDc2NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWdsaWJjLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtZ2xpYmMuaW5jCkBAIC00LDkgKzQsNyBAQAogCiBMSUJDRVhURU5TSU9OID0gIiR7QFsnJywgJy1nbnUnXVsoZC5nZXRWYXIoJ0FCSUVYVEVOU0lPTicpIG9yICcnKSAhPSAnJ119IgogCi0jIEFkZCBnbGliYyBvdmVycmlkZXMgdG8gdGhlIG92ZXJyaWRlcyBmb3IgZ2xpYmMuCiBMSUJDT1ZFUlJJREUgPSAiOmxpYmMtZ2xpYmMiCi1PVkVSUklERVMgLj0gIiR7TElCQ09WRVJSSURFfSIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliaWNvbnYgPz0gImdsaWJjIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmljb252ID89ICJuYXRpdmVzZGstZ2xpYmMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtbXVzbC5pbmMKaW5kZXggNTRlMWFjZi4uOGJhZGJiYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYwpAQCAtNCwxMyArNCwxMiBAQAogCiBMSUJDRVhURU5TSU9OID0gIi1tdXNsIgogCi0jIEFkZCBtdXNsIGxpYmMgb3ZlcnJpZGVzIHRvIHRoZSBvdmVycmlkZXMuCiBMSUJDT1ZFUlJJREUgPSAiOmxpYmMtbXVzbCIKLU9WRVJSSURFUyAuPSAiJHtMSUJDT1ZFUlJJREV9IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjID89ICJtdXNsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliaWNvbnYgPz0gIm11c2wiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJpbnRsID89ICJtdXNsIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvY3J5cHQgPz0gIm11c2wiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliaW50bCA/PSAibmF0aXZlc2RrLWdsaWJjIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmljb252ID89ICJuYXRpdmVzZGstZ2xpYmMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk2YzBiMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jCkBAIC0wLDAgKzEsNDggQEAKKyMKKyMgTmV3bGliIGNvbmZpZ3VyYXRpb24KKyMKKworTElCQ0VYVEVOU0lPTiA9ICItbmV3bGliIgorTElCQ09WRVJSSURFID0gIjpsaWJjLW5ld2xpYiIKKworUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyA/PSAibmV3bGliIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliaWNvbnYgPz0gIm5ld2xpYiIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmludGwgPz0gIm5ld2xpYiIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL25hdGl2ZXNkay1saWJpbnRsID89ICJuYXRpdmVzZGstZ2xpYmMiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliaWNvbnYgPz0gIm5hdGl2ZXNkay1nbGliYyIKKworRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgKz0gImxkY29uZmlnIgorCisjVVNFX05MUyA/PSAibm8iCisKK0lNQUdFX0xJTkdVQVMgPSAiIgorCitMSUJDX0RFUEVOREVOQ0lFUyA9ICJcCisgICAgbmV3bGliLWRiZyBcCisgICAgbmV3bGliLWRldiBcCisgICAgbGliZ2xvc3MgXAorICAgIGxpYmdsb3NzLWRldiBcCisgICAgbGliZ2xvc3MtZGJnIFwKKyAgICBsaWJnY2MtZGV2IFwKKyAgICBsaWJnY2MtZGJnIFwKKyAgICAiCisKKyMgY29tcGlsZXJsaWJzIGRlZmF1bHRzIHRvIGdjYy1ydW50aW1lLCBidXQgd2UgZ2V0IHJ1bnRpbWUgZnJvbSBsaWJnbG9zcworIyB3ZSBzZXQgQVNTVU1FX1BST1ZJREVEIGJlY2F1c2Ugd2UgY2FudCBzZXQgUFJFRkVSUkVEX1BST1ZJREVSCisjIGZvciBjb21waWxlcmxpYnMgc2luY2UgaXRzIG92ZXJyaWRkZW4gYnkgdGNtb2RlLWRlZmF1bHQKK0FTU1VNRV9QUk9WSURFRCArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIHZpcnR1YWwvY3J5cHQiCisKKyMgSXRzIHVzZWZ1bCB0byBiZSBhYmxlIHRvIGV4dGVuZCBuZXdsaWIsIGJ1dCB3ZSBkb250IHByb3ZpZGUgYSBuYXRpdmUgdmFyaWFudCBvZiBsaWJnbG9zcworTkVXTElCX0VYVEVOREVEID89ICAibGliZ2xvc3MgbGliZ2NjIgorQkFTRV9ERUZBVUxUX0RFUFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtORVdMSUJfRVhURU5ERUR9IgorCitUQVJHRVRfT1MgPSAiZWxmIgorVEFSR0VUX09TX2FybSA9ICJlYWJpIgorCitUT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKK1RPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAiJHtMSUJDX0RFUEVOREVOQ0lFU30iCitUT09MQ0hBSU5fTkVFRF9DT05GSUdTSVRFX0NBQ0hFX3JlbW92ZSA9ICJ6bGliIG5jdXJzZXMiCisKKyMgZGlzYWJsZSBwaWUgc2VjdXJpdHkgZmxhZ3MgYnkgZGVmYXVsdAorU0VDVVJJVFlfQ0ZMQUdTX2xpYmMtbmV3bGliID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1NfbGliYy1uZXdsaWIgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCmluZGV4IDAwMzk5YWUuLmY4ZGE2NTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKQEAgLTIyLDEzICsyMiwxNCBAQAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLSR7U0RLX1BSRUZJWH1saWJjLWluaXRpYWwgPz0gIm5hdGl2ZXNkay1nbGliYy1pbml0aWFsIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvZ2V0dGV4dCA/Pz0gImdldHRleHQiCiAKLUdDQ1ZFUlNJT04gPz0gIjcuJSIKK0dDQ1ZFUlNJT04gPz0gIjguJSIKIFNES0dDQ1ZFUlNJT04gPz0gIiR7R0NDVkVSU0lPTn0iCi1CSU5VVkVSU0lPTiA/PSAiMi4zMCUiCi1HREJWRVJTSU9OID89ICI4LjAlIgotR0xJQkNWRVJTSU9OID89ICIyLjI3JSIKLUxJTlVYTElCQ1ZFUlNJT04gPz0gIjQuMTUlIgotUUVNVVZFUlNJT04gPz0gIjIuMTElIgorQklOVVZFUlNJT04gPz0gIjIuMzElIgorR0RCVkVSU0lPTiA/PSAiOC4yJSIKK0dMSUJDVkVSU0lPTiA/PSAiMi4yOCUiCitMSU5VWExJQkNWRVJTSU9OID89ICI0LjE4JSIKK1FFTVVWRVJTSU9OID89ICIzLjAlIgorR09WRVJTSU9OID89ICIxLjExJSIKIAogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjID89ICIke0dDQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2NjLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0dDQ1ZFUlNJT059IgpAQCAtNjUsMTQgKzY2LDEwIEBACiBQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ2xpYmMtaW5pdGlhbCAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmUgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogCi0KIFBSRUZFUlJFRF9WRVJTSU9OX3FlbXUgPz0gIiR7UUVNVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fcWVtdS1uYXRpdmUgPz0gIiR7UUVNVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLXFlbXUgPz0gIiR7UUVNVVZFUlNJT059IgotIyBTZXR1cCBzdWl0YWJsZSB0b29sY2hhaW4gZmxhZ3MKLXJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCiAKLUdPVkVSU0lPTiA/PSAiMS45JSIKIFBSRUZFUlJFRF9WRVJTSU9OX3ZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvID89ICIke0dPVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9nby1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHT1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ28tY3Jvc3NzZGstJHtTREtfQVJDSH0gPz0gIiR7R09WRVJTSU9OfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCmluZGV4IGM1YjA1NTYuLmM5ZDUwMmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwpAQCAtOSw2ICs5LDcgQEAKIFVOSU5BVElWRV9NQVhHTElCQ1ZFUlNJT04gPSAiMi4yOCIKIAogVU5JTkFUSVZFX1VSTCA/PSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3VuaW5hdGl2ZS8yLjMvIgorVU5JTkFUSVZFX0NIRUNLU1VNW2FhcmNoNjRdID89ICJiN2ZiYmFhZDFlYzg2ZDc2ZWNhODRkODMwOThmNTA1MjViOGE0MTI0Y2M4Njg1ZWFlZCIKIFVOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiNDQyNTNjZGRiZjYyOTA4MjU2OGNlYTRmZmY1OTQxOTEwNjg3MWEwY2Y4MWI0ODQ1YjVkMzRlNzAxNDg4N2IyMCIKIFVOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICJjNjk1NDU2M2RhZDNjOTU2MDgxMTdjNmZjMzI4MDk5MDM2YzgzMmJiZDkyNGViZjVmZGNjYjYyMmZjMGE4Njg0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKaW5kZXggMjU0ZjhmMS4uZmM2ZDAwOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtMjg4LDggKzI4OCw2IEBACiAKIE5BVElWRUxTQlNUUklOR1tkb2NdID0gIkEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBob3N0IGRpc3RyaWJ1dGlvbi4iCiBOT19SRUNPTU1FTkRBVElPTlNbZG9jXSA9ICJXaGVuIHNldCB0byAnMScsIG5vIHJlY29tbWVuZGVkIHBhY2thZ2VzIHdpbGwgYmUgaW5zdGFsbGVkLiBSZWFsaXplIHRoYXQgc29tZSByZWNvbW1lbmRlZCBwYWNrYWdlcyBtaWdodCBiZSByZXF1aXJlZCBmb3IgY2VydGFpbiBzeXN0ZW0gZnVuY3Rpb25hbGl0eSwgc3VjaCBhcyBrZXJuZWwtbW9kdWxlcy4gSXQgaXMgdXAgdG8gdGhlIHVzZXIgdG8gYWRkIHBhY2thZ2VzIHRvIElNQUdFX0lOU1RBTEwgYXMgbmVlZGVkLiIKLU5PSEREW2RvY10gPSAiQ2F1c2VzIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHNraXAgYnVpbGRpbmcgdGhlIC5oZGRpbWcgaW1hZ2UuIgotTk9JU09bZG9jXSA9ICJDYXVzZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gc2tpcCBidWlsZGluZyB0aGUgSVNPIGltYWdlLiIKIAogI08KIApAQCAtNDE3LDcgKzQxNSw3IEBACiBUQVJHRVRfU1lTW2RvY10gPSAiVGhlIHRhcmdldCBzeXN0ZW0gaXMgY29tcHJpc2VkIG9mIFRBUkdFVF9BUkNILFRBUkdFVF9WRU5ET1IgYW5kIFRBUkdFVF9PUy4iCiBUQ0xJQkNbZG9jXSA9ICJTcGVjaWZpZXMgQyBsaWJyYXJ5IChsaWJjKSB2YXJpYW50IHRvIHVzZSBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFlvdSBjYW4gc2VsZWN0ICdiYXJlbWV0YWwnLCAnZ2xpYmMnIG9yICdtdXNsJy4iCiBUQ01PREVbZG9jXSA9ICJFbmFibGVzIGFuIGV4dGVybmFsIHRvb2xjaGFpbiAod2hlcmUgcHJvdmlkZWQgYnkgYW4gYWRkaXRpb25hbCBsYXllcikgaWYgc2V0IHRvIGEgdmFsdWUgb3RoZXIgdGhhbiAnZGVmYXVsdCcuIgotVEVTVF9JTUFHRVtkb2NdID0gIkVuYWJsZXMgdGVzdCBib290aW5nIG9mIHZpcnR1YWwgbWFjaGluZSBpbWFnZXMgdW5kZXIgdGhlIFFFTVUgZW11bGF0b3IgYWZ0ZXIgYW55IHJvb3QgZmlsZXN5c3RlbXMgYXJlIGNyZWF0ZWQgYW5kIHJ1bnMgdGVzdHMgYWdhaW5zdCB0aG9zZSBpbWFnZXMuIgorVEVTVElNQUdFX0FVVE9bZG9jXSA9ICJFbmFibGVzIHRlc3QgYm9vdGluZyBvZiB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2VzIHVuZGVyIHRoZSBRRU1VIGVtdWxhdG9yIGFmdGVyIGFueSByb290IGZpbGVzeXN0ZW1zIGFyZSBjcmVhdGVkIGFuZCBydW5zIHRlc3RzIGFnYWluc3QgdGhvc2UgaW1hZ2VzIGVhY2ggdGltZSBhbiBpbWFnZSBpcyBidWlsdC4iCiBURVNUX1FFTVVCT09UX1RJTUVPVVRbZG9jXSA9ICJUaGUgdGltZSBpbiBzZWNvbmRzIGFsbG93ZWQgZm9yIGFuIGltYWdlIHRvIGJvb3QgYmVmb3JlIGF1dG9tYXRlZCBydW50aW1lIHRlc3RzIGJlZ2luIHRvIHJ1biBhZ2FpbnN0IGFuIGltYWdlLiIKIFRFU1RfU1VJVEVTW2RvY10gPSAiQW4gb3JkZXJlZCBsaXN0IG9mIHRlc3RzIChtb2R1bGVzKSB0byBydW4gYWdhaW5zdCBhbiBpbWFnZSB3aGVuIHBlcmZvcm1pbmcgYXV0b21hdGVkIHJ1bnRpbWUgdGVzdGluZy4iCiBURVNUX1BPV0VSQ09OVFJPTF9DTURbZG9jXSA9ICJGb3IgYXV0b21hdGVkIGhhcmR3YXJlIHRlc3RpbmcsIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgdG8gY29udHJvbCB0aGUgcG93ZXIgb2YgdGhlIHRhcmdldCBtYWNoaW5lIHVuZGVyIHRlc3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCAzMTVmYjkzLi5jNjdkZWM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKQEAgLTcsMTIgKzcsMTIgQEAKIEJCRklMRV9QQVRURVJOX2NvcmUgPSAiXiR7TEFZRVJESVJ9LyIKIEJCRklMRV9QUklPUklUWV9jb3JlID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09SRU5BTUVTID0gInRodWQiCiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwogTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTEiCi1MQVlFUlNFUklFU19DT01QQVRfY29yZSA9ICJzdW1vIgorTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAidGh1ZCIKIAogQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FX2NvcmUgPSAib3BlbmVtYmVkZGVkLWNvcmUiCiAKQEAgLTc0LDkgKzc0LDI3IEBACiAgIGdub21lLWljb24tdGhlbWUtPmxpYnJzdmcgXAogICBmb250LWFsaWFzLT5mb250LXV0aWwgXAogICBzeXN0ZW1kLWJvb3QtPnN5c3RlbWQtYm9vdGNvbmYgXAorICBzeXN0ZW1kLT5zeXN0ZW1kLWNvbmYgXAorICB3ZXN0b24tPndlc3Rvbi1jb25mIFwKICAgd2VzdG9uLWluaXQtPndlc3RvbiBcCiAgIHdlc3Rvbi1pbml0LT5rYmQgXAogIgogCisjIEF2b2lkIGFkZGluZyBiaXNvbi1uYXRpdmUgdG8gdGhlIHN5c3Jvb3Qgd2l0aG91dCBhIHNwZWNpZmljCisjIGRlcGVuZGVuY3kgaW4gdGhlIHJlY2lwZS4gVGhpcyBtZWFucyBpbmRpcmVjdCBkZXBlbmRlbmNpZXMKKyMgKGUuZy4gWCAtPiBZIC0+IGJpbnV0aWxzLWNyb3NzIC0+IGJpc29uLW5hdGl2ZSkgbm8gbG9uZ2VyIG1lZXQgdGhlCisjIGRlcGVuZGVuY3kgaW5jaWRlbnRhbGx5LiBUaGlzIGltcHJvdmVzIGRldGVybWluaXNtIGFuZCBhdm9pZHMgYnVpbGQKKyMgZmFpbHVyZXMgd2hlbiBwZW9wbGUgc3dpdGNoIHRvIGV4dGVybmFsIHRvb2xjaGFpbnMuCitTU1RBVEVfRVhDTFVERURFUFNfU1lTUk9PVCArPSAiLiotPmJpc29uLW5hdGl2ZSIKKyMgTm90aGluZyBuZWVkcyB0byBkZXBlbmQgb24gbGliYy1pbml0aWFsL2djYy1jcm9zcy1pbml0aWFsCisjIGJhc2UtcGFzc3dkL3NoYWRvdy1zeXNyb290IGRvbid0IG5lZWQgdGhlaXIgZGVwZW5kZW5jaWVzCitTU1RBVEVfRVhDTFVERURFUFNfU1lTUk9PVCArPSAiXAorICAgIC4qLT4uKi1pbml0aWFsLiogXAorICAgIC4qKGJhc2UtcGFzc3dkfHNoYWRvdy1zeXNyb290KS0+LiogXAorIgorIyBBdm9pZCBhZGRpbmcgYXV0b2NvbmYtYXJjaGl2ZS1uYXRpdmUgdG8gc3lzcm9vdCB3aXRob3V0IGEgc3BlY2lmaWMKKyMgZGVwZW5kZW5jeSBpbiB0aGUgcmVjaXBlLgorU1NUQVRFX0VYQ0xVREVERVBTX1NZU1JPT1QgKz0gIi4qLT5hdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKKwogIyBXZSBuZWVkIHRvIGtlZXAgYml0YmFrZSB0b29scyBpbiBQQVRICiBQQVRIIDo9ICIke0Bvcy5wYXRoLmRpcm5hbWUoYmIudXRpbHMud2hpY2goZC5nZXRWYXIoJ1BBVEgnKSwnYml0YmFrZScpKX06JHtIT1NUVE9PTFNfRElSfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2FhcmNoNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2FhcmNoNjQuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQ4MzgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvYWFyY2g2NC5jb25mCkBAIC0wLDAgKzEsMiBAQAorU0RLX0FSQ0ggPSAiYWFyY2g2NCIKK0FCSUVYVEVOU0lPTl9jbGFzcy1uYXRpdmVzZGsgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY3YS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjdhLmluYwppbmRleCBiYWQxYzI3Li5hMjY2M2Q4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjdhLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjdhLmluYwpAQCAtMSw0ICsxLDUgQEAKIERFRkFVTFRUVU5FID89ICJhcm12N2F0aGYiCitBUk1fSU5TVFJVQ1RJT05fU0VUID89ICJ0aHVtYiIKIAogVFVORVZBTElEW2FybXY3YV0gPSAiRW5hYmxlIGluc3RydWN0aW9ucyBmb3IgQVJNdjctYSIKIFRVTkVDT05GTElDVFNbYXJtdjdhXSA9ICJhcm12NCBhcm12NSBhcm12NiBhcm12NyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9tNjhrL2FyY2gtbTY4ay5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbTY4ay9hcmNoLW02OGsuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZjhhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbTY4ay9hcmNoLW02OGsuaW5jCkBAIC0wLDAgKzEsOCBAQAorIyBtNjhrIEFyY2hpdGVjdHVyZSBkZWZpbml0aW9ucworCitERUZBVUxUVFVORSA/PSAibTY4ayIKKworIyBBcmNoaXRlY3R1cmUgbmFtZQorVFVORV9BUkNIID0gIm02OGsiCisKK1RVTkVfUEtHQVJDSCA9ICIke1RVTkVfUEtHQVJDSF90dW5lLSR7REVGQVVMVFRVTkV9fSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL3R1bmUtbWlwcy03NGsuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pcHMvdHVuZS1taXBzLTc0ay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhZmVlMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taXBzL3R1bmUtbWlwcy03NGsuaW5jCkBAIC0wLDAgKzEsMzcgQEAKK0RFRkFVTFRUVU5FID89ICJtaXBzMzJyMi03NGtjIgorCitNSVBTUEtHU0ZYX01JUFMxNkUgPz89ICIiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyMi5pbmMKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvbWlwcy9mZWF0dXJlLW1pcHMtbWlwczE2ZS5pbmMKKworCitUVU5FVkFMSURbNzRrY10gPSAiRW5hYmxlIE1JUFMgNzRLIHdpdGggRFNQcjIgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiNzRrYyIsICIgLW10dW5lPTc0a2MiLCAiIiwgZCl9IgorCitBVkFJTFRVTkVTICs9ICJtaXBzMzJyMi03NGtjIG1pcHMzMnIyLTc0a2MtbTE2IgorQVZBSUxUVU5FUyArPSAibWlwczMycjJlbC03NGtjIG1pcHMzMnIyZWwtNzRrYy1tMTYiCisKKyMgYmlnIGVuZGlhbjoga2MrZHNwMj1rYywga2MrZHNwMittaXBzMTZlPWtjLW0xNgorVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyLTc0a2MgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItbmZ9IDc0a2MiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItNzRrYy1tMTYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItNzRrY30gbWlwczE2ZSIKKworTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjItNzRrYyA9ICJtaXBzMzJyMi03NGtjIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyLTc0a2MgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjItbmZ9IG1pcHMzMnIyLTc0a2MtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMi03NGtjLW5mID0gIiAtY3B1IDI0S2MiCisKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyLTc0a2MtbTE2ID0gIm1pcHMzMnIyLTc0a2Mke01JUFNQS0dTRlhfTUlQUzE2RX0iCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjItNzRrYy1tMTYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjItNzRrY30gbWlwczMycjItNzRrYy1tMTYtbmYiCitRRU1VX0VYVFJBT1BUSU9OU19taXBzMzJyMi03NGtjLW0xNi1uZiA9ICIgLWNwdSAyNEtFYyIKKworIyBsaXR0bGUgZW5kaWFuOiBrYytkc3AyPWtjLCBrYytkc3AyK21pcHMxNmU9a2MtbTE2CitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC03NGtjID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyZWwtbmZ9IDc0a2MiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjJlbC03NGtjLW0xNiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1taXBzMzJyMmVsLTc0a2N9IG1pcHMxNmUiCisKK01JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMnIyZWwtNzRrYyA9ICJtaXBzMzJyMmVsLTc0a2MiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMycjJlbC03NGtjID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtbmZ9IG1pcHMzMnIyZWwtNzRrYy1uZiIKK1FFTVVfRVhUUkFPUFRJT05TX21pcHMzMnIyZWwtNzRrYy1uZiA9ICIgLWNwdSAyNEtjIgorCitNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJyMmVsLTc0a2MtbTE2ID0gIm1pcHMzMnIyZWwtNzRrYyR7TUlQU1BLR1NGWF9NSVBTMTZFfSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJyMmVsLTc0a2MtbTE2ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwtNzRrY30gbWlwczMycjJlbC03NGtjLW0xNi1uZiIKK1FFTVVfRVhUUkFPUFRJT05TX21pcHMzMnIyZWwtNzRrYy1tMTYtbmYgPSAiIC1jcHUgMjRLRWMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKaW5kZXggYWEzMzJmZS4uNTA1MGU0MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwpAQCAtMTksNyArMTksNyBAQAogUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiIKIAogIyBVc2UgYSBjb21tb24ga2VybmVsIHJlY2lwZSBmb3IgYWxsIFFFTVUgbWFjaGluZXMKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKIAogRVhUUkFfSU1BR0VERVBFTkRTICs9ICJxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYwppbmRleCBjNjg2YmI0Li5kZGRlNzE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZTIuaW5jCkBAIC0yMSw3ICsyMSw3IEBACiBCQVNFX0xJQl90dW5lLWNvcmUyLTMyID0gImxpYiIKIFRVTkVfUEtHQVJDSF90dW5lLWNvcmUyLTMyID0gImNvcmUyLTMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcmUyLTMyID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWk2ODZ9IGNvcmUyLTMyIgotUUVNVV9FWFRSQU9QVElPTlNfY29yZTItMzIgPSAiIC1jcHUgY29yZTJkdW8iCitRRU1VX0VYVFJBT1BUSU9OU19jb3JlMi0zMiA9ICIgLWNwdSBuMjcwIgogCiBBVkFJTFRVTkVTICs9ICJjb3JlMi02NCIKIFRVTkVfRkVBVFVSRVNfdHVuZS1jb3JlMi02NCA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS14ODYtNjR9IGNvcmUyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZWk3LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmVpNy5pbmMKaW5kZXggNmVkZmI2OC4uZDA2YWY0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29yZWk3LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlaTcuaW5jCkBAIC0xLDIwICsxLDE5IEBACi0jIFNldHRpbmdzIGZvciB0aGUgR0NDKDEpIGNwdS10eXBlICJjb3JlaTciOgorIyBTZXR0aW5ncyBmb3IgdGhlIEdDQygxKSBjcHUtdHlwZSAibmVoYWxlbSI6CiAjCi0jICAgICBJbnRlbCBDb3JlIGk3IENQVSB3aXRoIDY0LWJpdCBleHRlbnNpb25zLCBNTVgsIFNTRSwgU1NFMiwgU1NFMywgU1NTRTMsIFNTRTQuMQotIyAgICAgYW5kIFNTRTQuMiBpbnN0cnVjdGlvbiBzZXQgc3VwcG9ydC4KKyMgICAgIEludGVsIE5laGFsZW0gQ1BVIHdpdGggNjQtYml0IGV4dGVuc2lvbnMsIE1NWCwgU1NFLCBTU0UyLCBTU0UzLCBTU1NFMywgU1NFNC4xLAorIyAgICAgU1NFNC4yIGFuZCBQT1BDTlQgaW5zdHJ1Y3Rpb24gc2V0IHN1cHBvcnQuCiAjCiAjIFRoaXMgdHVuZSBpcyByZWNvbW1lbmRlZCBmb3IgSW50ZWwgTmVoYWxlbSBhbmQgU2lsdmVybW9udCAoZS5nLiBCYXkgVHJhaWwpIENQVXMKICMgKGFuZCBiZXlvbmQpLgogIwogREVGQVVMVFRVTkUgPz0gImNvcmVpNy02NCIKIAotIyBQdWxsIGluIHRoZSBwcmV2aW91cyB0dW5lIGluIHRvIHB1bGwgaW4gUEFDS0FHRV9FWFRSQV9BUkNIUworIyBJbmNsdWRlIHRoZSBwcmV2aW91cyB0dW5lIHRvIHB1bGwgaW4gUEFDS0FHRV9FWFRSQV9BUkNIUwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWNvcmUyLmluYwogCi0KICMgRXh0cmEgdHVuZSBmZWF0dXJlcwogVFVORVZBTElEW2NvcmVpN10gPSAiRW5hYmxlIGNvcmVpNyBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKLVRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdjb3JlaTcnLCAnIC1tYXJjaD1jb3JlaTcgLW10dW5lPWNvcmVpNyAtbWZwbWF0aD1zc2UgLW1zc2U0LjInLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NvcmVpNycsICcgLW1hcmNoPW5laGFsZW0gLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC1tc3NlNC4yJywgJycsIGQpfSIKIAogIyBFeHRyYSB0dW5lIHNlbGVjdGlvbnMKIEFWQUlMVFVORVMgKz0gImNvcmVpNy0zMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1jZjU0NDF4LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1jZjU0NDF4LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWE0MWE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWNmNTQ0MXguaW5jCkBAIC0wLDAgKzEsMTMgQEAKK0RFRkFVTFRUVU5FID89ICJtY2Y1NDQxeCIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9tNjhrL2FyY2gtbTY4ay5pbmMKKworVFVORVZBTElEW21jZjU0NDF4XSA9ICJFbmFibGUgY29sZGZpcmUgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbWNmNTQ0MXgnLCAnIC1tY3B1PTU0NDE4JywgJycsIGQpfSIKKworQVZBSUxUVU5FUyArPSAibWNmNTQ0MXgiCitUVU5FX0ZFQVRVUkVTX3R1bmUtbWNmNTQ0MXggPSAibWNmNTQ0MXgiCitUVU5FX0FSQ0hfdHVuZS1tY2Y1NDQxeCA9ICJtY2Y1NDQxeCIKK1RVTkVfUEtHQVJDSF90dW5lLW1jZjU0NDF4ID0gIm1jZjU0NDF4IgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1jZjU0NDF4ID0gIm02OGsgbWNmNTQ0MXgiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCmluZGV4IGY4YWFjZWEuLmMyOTI3OTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwpAQCAtOCwyMCArOCwxNyBAQAogTUFDSElORV9GRUFUVVJFUyArPSAic2NyZWVuIGtleWJvYXJkIHBjaSB1c2Job3N0IGV4dDIgZXh0MyB4ODYgXAogICAgICAgICAgICAgICAgICAgICAgYWNwaSBzZXJpYWwgdXNiZ2FkZ2V0IGFsc2EiCiAKLU1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJsaXZlIgotTk9JU08gPz0gIjEiCitJTUFHRV9GU1RZUEVTID89ICJoZGRpbWciCiAKIEtFUk5FTF9JTUFHRVRZUEUgPz0gImJ6SW1hZ2UiCiAKLVNFUklBTF9DT05TT0xFID89ICIxMTUyMDAgdHR5UzAiCitTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCIKIAogIwogIyBrZXJuZWwtcmVsYXRlZCB2YXJpYWJsZXMKICMKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/Pz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE1JSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNC4xOCUiCiAKICMKICMgWFNFUlZFUiBzdWJjb21wb25lbnRzLCB1c2VkIHRvIGJ1aWxkIHRoZSBYU0VSVkVSIHZhcmlhYmxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCmluZGV4IDk0MDNiMWUuLmQyZjJjODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCkBAIC0xNiw1ICsxNiw1IEBACiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlBTUEwLDExNTIwMCBjb25zb2xlPXR0eSIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTUlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjE4JSIKIFFCX0RUQiA9ICIke0BvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvJywgJzQuNycsICcnLCAnekltYWdlLXZlcnNhdGlsZS1wYi5kdGInLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzLmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzLmNvbmYKaW5kZXggOTg2MzE1YS4uYTYwZjY3YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11bWlwcy5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHMuY29uZgpAQCAtMTAsNSArMTAsMyBAQAogS0VSTkVMX0FMVF9JTUFHRVRZUEUgPSAidm1saW51eC5iaW4iCiAKIFNFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIDExNTIwMDt0dHlTMSIKLQotTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICIga2VybmVsLW1vZHVsZXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVtaXBzNjQuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHM2NC5jb25mCmluZGV4IDNmOTFjYmUuLmExNjZhMTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHM2NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdW1pcHM2NC5jb25mCkBAIC0xMCw1ICsxMCwzIEBACiBLRVJORUxfQUxUX0lNQUdFVFlQRSA9ICJ2bWxpbnV4LmJpbiIKIAogU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgotCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gIiBrZXJuZWwtbW9kdWxlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKaW5kZXggMjMzMGM3ZC4uOTk2NmQxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKQEAgLTEyLDYgKzEyLDggQEAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3JlMi5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwogCitVQk9PVF9NQUNISU5FID89ICJxZW11LXg4Nl82NF9kZWZjb25maWciCisKIEtFUk5FTF9JTUFHRVRZUEUgPSAiYnpJbWFnZSIKIAogU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgpAQCAtMjksNiArMzEsOCBAQAogCiBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyArPSAidjg2ZCIKIAorTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCisKIEtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCiBLRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKIG1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZiBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCmluZGV4IDgxMWUzZWYuLmU3OGZiNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCkBAIC0xMSw2ICsxMSw4IEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtaTU4Ni5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwogCitVQk9PVF9NQUNISU5FID89ICJxZW11LXg4Nl9kZWZjb25maWciCisKIEtFUk5FTF9JTUFHRVRZUEUgPSAiYnpJbWFnZSIKIAogU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAgMTE1MjAwO3R0eVMxIgpAQCAtMjgsNiArMzAsOCBAQAogCiBNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyArPSAidjg2ZCIKIAorTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCisKIEtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCiBLRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKIG1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mIGIvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgppbmRleCBlNzRkZWM4Li42NWEyOGRkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKQEAgLTI2LDMgKzI2LDcgQEAKIFBLR19DT05GSUdfUEFUSCAuPSAiOiR7V09SS0RJUn0vcmVjaXBlLXN5c3Jvb3QvJHtkYXRhZGlyfS9wa2djb25maWciCiBQS0dfQ09ORklHX1BBVEhbdmFyZGVwc2V4Y2x1ZGVdID0gImRhdGFkaXIgV09SS0RJUiIKIFBLR19DT05GSUdfUEFUSFt2YXJkZXB2YWx1ZWV4Y2x1ZGVdID0gIjoke1dPUktESVJ9L3JlY2lwZS1zeXNyb290LyR7ZGF0YWRpcn0vcGtnY29uZmlnIgorCisjIFRoZXNlIHJlY2lwZXMgZG9uJ3QgbmVlZCBtdWx0aWxpYiB2YXJpYW50cywgdGhlICR7QlBOfSBQUk9WREVTL1JQUk9WREVTCisjICR7TUxQUkVGSVh9JHtCUE59CitOT05fTVVMVElMSUJfUkVDSVBFUyA9ICJncnViIGdydWItZWZpIG1ha2UtbW9kLXNjcmlwdHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZiBiL3Bva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCmluZGV4IDM5MGQzNDIuLjQ1ZTY3NTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCkBAIC0zLDcgKzMsNyBAQAogIyBTZWUgc2FuaXR5LmJiY2xhc3MKICMKICMgRXhwZXJ0IHVzZXJzIGNhbiBjb25maXJtIHRoZWlyIHNhbml0eSB3aXRoICJ0b3VjaCBjb25mL3Nhbml0eS5jb25mIgotQkJfTUlOX1ZFUlNJT04gPSAiMS4zNS4wIgorQkJfTUlOX1ZFUlNJT04gPSAiMS4zOS4xIgogCiBTQU5JVFlfQUJJRklMRSA9ICIke1RNUERJUn0vYWJpX3ZlcnNpb24iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9maWxlcy90b29sY2hhaW4tc2hhci1leHRyYWN0LnNoIGIvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKaW5kZXggZjdhYjQzMC4uOWVhYmQ2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKKysrIGIvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2gKQEAgLTMsNiArMyw3IEBACiBbIC16ICIkRU5WQ0xFQU5FRCIgXSAmJiBleGVjIC91c3IvYmluL2VudiAtaSBFTlZDTEVBTkVEPTEgSE9NRT0iJEhPTUUiIFwKIAlMQ19BTEw9ZW5fVVMuVVRGLTggXAogCVRFUk09JFRFUk0gXAorCUlDRUNDX1BBVEg9IiRJQ0VDQ19QQVRIIiBcCiAJaHR0cF9wcm94eT0iJGh0dHBfcHJveHkiIGh0dHBzX3Byb3h5PSIkaHR0cHNfcHJveHkiIGZ0cF9wcm94eT0iJGZ0cF9wcm94eSIgXAogCW5vX3Byb3h5PSIkbm9fcHJveHkiIGFsbF9wcm94eT0iJGFsbF9wcm94eSIgR0lUX1BST1hZX0NPTU1BTkQ9IiRHSVRfUFJPWFlfQ09NTUFORCIgIiQwIiAiJEAiCiBbIC1mIC9ldGMvZW52aXJvbm1lbnQgXSAmJiAuIC9ldGMvZW52aXJvbm1lbnQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvY3JlYXRlLnB5IGIvcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkKaW5kZXggYzE5MjMxNi4uMmViZjE1MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkKQEAgLTMwLDggKzMwLDEwIEBACiAgICAgICAgIGNvbmYgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsICdjb25mJykKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGNvbmYpCiAKKyAgICAgICAgbGF5ZXJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKGFyZ3MubGF5ZXJkaXIpKQorCiAgICAgICAgICMgQ3JlYXRlIHRoZSBSRUFETUUgZnJvbSB0ZW1wbGF0ZXMvUkVBRE1FCi0gICAgICAgIHJlYWRtZV90ZW1wbGF0ZSA9ICByZWFkX3RlbXBsYXRlKCdSRUFETUUnKSAlIChhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyKQorICAgICAgICByZWFkbWVfdGVtcGxhdGUgPSAgcmVhZF90ZW1wbGF0ZSgnUkVBRE1FJykuZm9ybWF0KGxheWVybmFtZT1sYXllcm5hbWUpCiAgICAgICAgIHJlYWRtZSA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ1JFQURNRScpCiAgICAgICAgIHdpdGggb3BlbihyZWFkbWUsICd3JykgYXMgZmQ6CiAgICAgICAgICAgICBmZC53cml0ZShyZWFkbWVfdGVtcGxhdGUpCkBAIC00Myw4ICs0NSwxMiBAQAogICAgICAgICBsaWNlbnNlX2RzdCA9IG9zLnBhdGguam9pbihsYXllcmRpciwgY29weWluZykKICAgICAgICAgc2h1dGlsLmNvcHkobGljZW5zZV9zcmMsIGxpY2Vuc2VfZHN0KQogCisgICAgICAgICMgR2V0IHRoZSBjb21wYXQgdmFsdWUgZm9yIGNvcmUgbGF5ZXIuCisgICAgICAgIGNvbXBhdCA9IHNlbGYudGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0xBWUVSU0VSSUVTX0NPTVBBVF9jb3JlJykgb3IgIiIKKwogICAgICAgICAjIENyZWF0ZSB0aGUgbGF5ZXIuY29uZiBmcm9tIHRlbXBsYXRlcy9sYXllci5jb25mCi0gICAgICAgIGxheWVyY29uZl90ZW1wbGF0ZSA9IHJlYWRfdGVtcGxhdGUoJ2xheWVyLmNvbmYnKSAlIChhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLnByaW9yaXR5KQorICAgICAgICBsYXllcmNvbmZfdGVtcGxhdGUgPSByZWFkX3RlbXBsYXRlKCdsYXllci5jb25mJykuZm9ybWF0KAorICAgICAgICAgICAgICAgIGxheWVybmFtZT1sYXllcm5hbWUsIHByaW9yaXR5PWFyZ3MucHJpb3JpdHksIGNvbXBhdD1jb21wYXQpCiAgICAgICAgIGxheWVyY29uZiA9IG9zLnBhdGguam9pbihjb25mLCAnbGF5ZXIuY29uZicpCiAgICAgICAgIHdpdGggb3BlbihsYXllcmNvbmYsICd3JykgYXMgZmQ6CiAgICAgICAgICAgICBmZC53cml0ZShsYXllcmNvbmZfdGVtcGxhdGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUgYi9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUKaW5kZXggNWE3N2Y4ZC4uZmIyZDI4ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FCisrKyBiL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLVRoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzIG9mIHRoZSAlcyBsYXllci4KK1RoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzIG9mIHRoZSB7bGF5ZXJuYW1lfSBsYXllci4KIAogUGxlYXNlIHNlZSB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucyBiZWxvdyBmb3IgZGV0YWlscy4KIApAQCAtMTgsNyArMTgsNyBAQAogUGF0Y2hlcwogPT09PT09PQogCi1QbGVhc2Ugc3VibWl0IGFueSBwYXRjaGVzIGFnYWluc3QgdGhlICVzIGxheWVyIHRvIHRoZSB4eHh4IG1haWxpbmcgbGlzdCAoeHh4eEB6enp6Lm9yZykKK1BsZWFzZSBzdWJtaXQgYW55IHBhdGNoZXMgYWdhaW5zdCB0aGUge2xheWVybmFtZX0gbGF5ZXIgdG8gdGhlIHh4eHggbWFpbGluZyBsaXN0ICh4eHh4QHp6enoub3JnKQogYW5kIGNjOiB0aGUgbWFpbnRhaW5lcjoKIAogTWFpbnRhaW5lcjogWFhYIFlZWVlZWSA8eHh4Lnl5eXl5eUB6enp6ei5jb20+CkBAIC0yNiwxNiArMjYsMTYgQEAKIFRhYmxlIG9mIENvbnRlbnRzCiA9PT09PT09PT09PT09PT09PQogCi0gIEkuIEFkZGluZyB0aGUgJXMgbGF5ZXIgdG8geW91ciBidWlsZAorICBJLiBBZGRpbmcgdGhlIHtsYXllcm5hbWV9IGxheWVyIHRvIHlvdXIgYnVpbGQKICBJSS4gTWlzYwogCiAKLUkuIEFkZGluZyB0aGUgJXMgbGF5ZXIgdG8geW91ciBidWlsZAorSS4gQWRkaW5nIHRoZSB7bGF5ZXJuYW1lfSBsYXllciB0byB5b3VyIGJ1aWxkCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJ1biAnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJworUnVuICdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIge2xheWVybmFtZX0nCiAKIElJLiBNaXNjCiA9PT09PT09PQogCi0tLS0gcmVwbGFjZSB3aXRoIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSAlcyBsYXllciAtLS0KKy0tLSByZXBsYWNlIHdpdGggc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHtsYXllcm5hbWV9IGxheWVyIC0tLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYKaW5kZXggM2MwMzAwMi4uZTJlYWZmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9sYXllci5jb25mCkBAIC0xLDEwICsxLDEzIEBACiAjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAotQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCitCQlBBVEggLj0gIjoke3tMQVlFUkRJUn19IgogCiAjIFdlIGhhdmUgcmVjaXBlcy0qIGRpcmVjdG9yaWVzLCBhZGQgdG8gQkJGSUxFUwotQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYiBcCi0gICAgICAgICAgICAke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIgorQkJGSUxFUyArPSAiJHt7TEFZRVJESVJ9fS9yZWNpcGVzLSovKi8qLmJiIFwKKyAgICAgICAgICAgICR7e0xBWUVSRElSfX0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCIKIAotQkJGSUxFX0NPTExFQ1RJT05TICs9ICIlcyIKLUJCRklMRV9QQVRURVJOXyVzID0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfJXMgPSAiJXMiCitCQkZJTEVfQ09MTEVDVElPTlMgKz0gIntsYXllcm5hbWV9IgorQkJGSUxFX1BBVFRFUk5fe2xheWVybmFtZX0gPSAiXiR7e0xBWUVSRElSfX0vIgorQkJGSUxFX1BSSU9SSVRZX3tsYXllcm5hbWV9ID0gIntwcmlvcml0eX0iCisKK0xBWUVSREVQRU5EU197bGF5ZXJuYW1lfSA9ICJjb3JlIgorTEFZRVJTRVJJRVNfQ09NUEFUX3tsYXllcm5hbWV9ID0gIntjb21wYXR9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkgYi9wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQppbmRleCBiMDM2NWFiLi5hZDdmY2ViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQpAQCAtMTMsNiArMTMsNyBAQAogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBnaXQKIGltcG9ydCByZQoraW1wb3J0IHNobGV4CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgYmIudXRpbHMKQEAgLTMxLDEzICszMiw2IEBACiBtb25pdG9yX251bWVyaWNfdGhyZXNob2xkID0gMTAKICMgSW1hZ2UgZmlsZXMgdG8gbW9uaXRvciAobm90ZSB0aGF0IGltYWdlLWluZm8udHh0IGlzIGhhbmRsZWQgc2VwYXJhdGVseSkKIGltZ19tb25pdG9yX2ZpbGVzID0gWydpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQnLCAnZmlsZXMtaW4taW1hZ2UudHh0J10KLSMgUmVsYXRlZCBjb250ZXh0IGZpZWxkcyBmb3IgcmVwb3J0aW5nIChub3RlOiBQRSwgUFYgJiBQUiBhcmUgYWx3YXlzIHJlcG9ydGVkIGZvciBtb25pdG9yZWQgcGFja2FnZSBmaWVsZHMpCi1yZWxhdGVkX2ZpZWxkcyA9IHt9Ci1yZWxhdGVkX2ZpZWxkc1snUkRFUEVORFMnXSA9IFsnREVQRU5EUyddCi1yZWxhdGVkX2ZpZWxkc1snUlJFQ09NTUVORFMnXSA9IFsnREVQRU5EUyddCi1yZWxhdGVkX2ZpZWxkc1snRklMRUxJU1QnXSA9IFsnRklMRVMnXQotcmVsYXRlZF9maWVsZHNbJ2ZpbGVzLWluLWltYWdlLnR4dCddID0gWydpbnN0YWxsZWQtcGFja2FnZS1uYW1lcy50eHQnLCAnVVNFUl9DTEFTU0VTJywgJ0lNQUdFX0NMQVNTRVMnLCAnUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCAnSU1BR0VfUE9TVFBST0NFU1NfQ09NTUFORCddCi1yZWxhdGVkX2ZpZWxkc1snaW5zdGFsbGVkLXBhY2thZ2UtbmFtZXMudHh0J10gPSBbJ0lNQUdFX0ZFQVRVUkVTJywgJ0lNQUdFX0xJTkdVQVMnLCAnSU1BR0VfSU5TVEFMTCcsICdCQURfUkVDT01NRU5EQVRJT05TJywgJ05PX1JFQ09NTUVOREFUSU9OUycsICdQQUNLQUdFX0VYQ0xVREUnXQogCiBjb2xvdXJzID0gewogICAgICdjb2xvdXJfZGVmYXVsdCc6ICcnLApAQCAtNjcsNyArNjEsNiBAQAogICAgICAgICBzZWxmLm9sZHZhbHVlID0gb2xkdmFsdWUKICAgICAgICAgc2VsZi5uZXd2YWx1ZSA9IG5ld3ZhbHVlCiAgICAgICAgIHNlbGYubW9uaXRvcmVkID0gbW9uaXRvcmVkCi0gICAgICAgIHNlbGYucmVsYXRlZCA9IFtdCiAgICAgICAgIHNlbGYuZmlsZWNoYW5nZXMgPSBOb25lCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTEyMywxMCArMTE2LDEzIEBACiAgICAgICAgICAgICAgICAgYWl0ZW1zID0gcGtnbGlzdF9jb21iaW5lKGRlcHZlcmEpCiAgICAgICAgICAgICAgICAgYml0ZW1zID0gcGtnbGlzdF9jb21iaW5lKGRlcHZlcmIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFpdGVtcyA9IHNlbGYub2xkdmFsdWUuc3BsaXQoKQotICAgICAgICAgICAgICAgIGJpdGVtcyA9IHNlbGYubmV3dmFsdWUuc3BsaXQoKQogICAgICAgICAgICAgICAgIGlmIHNlbGYuZmllbGRuYW1lID09ICdGSUxFTElTVCc6CisgICAgICAgICAgICAgICAgICAgIGFpdGVtcyA9IHNobGV4LnNwbGl0KHNlbGYub2xkdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGJpdGVtcyA9IHNobGV4LnNwbGl0KHNlbGYubmV3dmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHJlbmFtZWRfZGlycywgYWl0ZW1zLCBiaXRlbXMgPSBkZXRlY3RfcmVuYW1lZF9kaXJzKGFpdGVtcywgYml0ZW1zKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFpdGVtcyA9IHNlbGYub2xkdmFsdWUuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICBiaXRlbXMgPSBzZWxmLm5ld3ZhbHVlLnNwbGl0KCkKIAogICAgICAgICAgICAgcmVtb3ZlZCA9IGxpc3Qoc2V0KGFpdGVtcykgLSBzZXQoYml0ZW1zKSkKICAgICAgICAgICAgIGFkZGVkID0gbGlzdChzZXQoYml0ZW1zKSAtIHNldChhaXRlbXMpKQpAQCAtMjA2LDEzICsyMDIsNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3V0ID0gJ3t9IGNoYW5nZWQgZnJvbSAie2NvbG91cl9yZW1vdmV9e317Y29sb3VyX2RlZmF1bHR9IiB0byAie2NvbG91cl9hZGR9e317Y29sb3VyX2RlZmF1bHR9IicuZm9ybWF0KHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlLCAqKmNvbG91cnMpCiAKLSAgICAgICAgaWYgc2VsZi5yZWxhdGVkOgotICAgICAgICAgICAgZm9yIGNoZyBpbiBzZWxmLnJlbGF0ZWQ6Ci0gICAgICAgICAgICAgICAgaWYgbm90IG91dGVyIGFuZCBjaGcuZmllbGRuYW1lIGluIFsnUEUnLCAnUFYnLCAnUFInXToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBjaGcuX3N0cl9pbnRlcm5hbChGYWxzZSkuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAqICVzJyAlIGxpbmUKLQogICAgICAgICByZXR1cm4gJyVzJXMnICUgKHByZWZpeCwgb3V0KSBpZiBvdXQgZWxzZSAnJwogCiBjbGFzcyBGaWxlQ2hhbmdlOgpAQCAtNDI0LDkgKzQxMywxMyBAQAogICAgICAgICAgICAgICAgICAgICAoZGVwdmVyYSwgZGVwdmVyYikgPSBjb21wYXJlX3BrZ19saXN0cyhhc3RyLCBic3RyKQogICAgICAgICAgICAgICAgICAgICBpZiBkZXB2ZXJhID09IGRlcHZlcmI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGFsaXN0ID0gYXN0ci5zcGxpdCgpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICdGSUxFTElTVCc6CisgICAgICAgICAgICAgICAgICAgIGFsaXN0ID0gc2hsZXguc3BsaXQoYXN0cikKKyAgICAgICAgICAgICAgICAgICAgYmxpc3QgPSBzaGxleC5zcGxpdChic3RyKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGFsaXN0ID0gYXN0ci5zcGxpdCgpCisgICAgICAgICAgICAgICAgICAgIGJsaXN0ID0gYnN0ci5zcGxpdCgpCiAgICAgICAgICAgICAgICAgYWxpc3Quc29ydCgpCi0gICAgICAgICAgICAgICAgYmxpc3QgPSBic3RyLnNwbGl0KCkKICAgICAgICAgICAgICAgICBibGlzdC5zb3J0KCkKICAgICAgICAgICAgICAgICAjIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHJlbW92YWwgb2Ygc2VsZi1kZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgICBpZiBwa2duYW1lIGluIGFsaXN0IGFuZCBub3QgcGtnbmFtZSBpbiBibGlzdDoKQEAgLTYzNSwxNyArNjI4LDYgQEAKICAgICAgICAgICAgICAgICBjaGcgPSBDaGFuZ2VSZWNvcmQocGF0aCwgZmlsZW5hbWVbNzpdLCBkLmFfYmxvYi5kYXRhX3N0cmVhbS5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpLCAnJywgVHJ1ZSkKICAgICAgICAgICAgICAgICBjaGFuZ2VzLmFwcGVuZChjaGcpCiAKLSAgICAjIExpbmsgcmVsYXRlZCBjaGFuZ2VzCi0gICAgZm9yIGNoZyBpbiBjaGFuZ2VzOgotICAgICAgICBpZiBjaGcubW9uaXRvcmVkOgotICAgICAgICAgICAgZm9yIGNoZzIgaW4gY2hhbmdlczoKLSAgICAgICAgICAgICAgICAjIChDaGVjayBkaXJuYW1lIGluIHRoZSBjYXNlIG9mIGZpZWxkcyBmcm9tIHJlY2lwZSBpbmZvIGZpbGVzKQotICAgICAgICAgICAgICAgIGlmIGNoZy5wYXRoID09IGNoZzIucGF0aCBvciBvcy5wYXRoLmRpcm5hbWUoY2hnLnBhdGgpID09IGNoZzIucGF0aDoKLSAgICAgICAgICAgICAgICAgICAgaWYgY2hnMi5maWVsZG5hbWUgaW4gcmVsYXRlZF9maWVsZHMuZ2V0KGNoZy5maWVsZG5hbWUsIFtdKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZy5yZWxhdGVkLmFwcGVuZChjaGcyKQotICAgICAgICAgICAgICAgICAgICBlbGlmIGNoZy5wYXRoID09IGNoZzIucGF0aCBhbmQgY2hnLnBhdGguc3RhcnRzd2l0aCgncGFja2FnZXMvJykgYW5kIGNoZzIuZmllbGRuYW1lIGluIFsnUEUnLCAnUFYnLCAnUFInXToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZy5yZWxhdGVkLmFwcGVuZChjaGcyKQotCiAgICAgIyBmaWx0ZXIgb3V0IHVud2FudGVkIHBhdGhzCiAgICAgaWYgZXhjbHVkZV9wYXRoOgogICAgICAgICBmb3IgY2hnIGluIGNoYW5nZXM6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkgYi9wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKaW5kZXggNGI5NDgwNi4uN2NiNzg0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvY29weV9idWlsZHN5c3RlbS5weQpAQCAtMSw1ICsxLDEyIEBACiAjIFRoaXMgY2xhc3Mgc2hvdWxkIHByb3ZpZGUgZWFzeSBhY2Nlc3MgdG8gdGhlIGRpZmZlcmVudCBhc3BlY3RzIG9mIHRoZQogIyBidWlsZHN5c3RlbSBzdWNoIGFzIGxheWVycywgYml0YmFrZSBsb2NhdGlvbiwgZXRjLgorIworIyBTREtfTEFZRVJTX0VYQ0xVREU6IExheWVycyB3aGljaCB3aWxsIGJlIGV4Y2x1ZGVkIGZyb20gU0RLIGxheWVycy4KKyMgU0RLX0xBWUVSU19FWENMVURFX1BBVFRFUk46IFRoZSBzaW1pYXIgdG8gU0RLX0xBWUVSU19FWENMVURFLCB0aGlzIHN1cHBvcnRzCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24gcmVndWxhciBleHByZXNzaW9uLCB1c2Ugc3BhY2UgYXMgc2VwYXJhdG9yLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZy46ICIuKi1kb3dubG9hZHMgY2xvc2VkLS4qIgorIworCiBpbXBvcnQgc3RhdAogaW1wb3J0IHNodXRpbAogCkBAIC0yMyw5ICszMCwxMiBAQAogICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CiAgICAgICAgIHNlbGYubGF5ZXJkaXJzID0gW29zLnBhdGguYWJzcGF0aChwdGgpIGZvciBwdGggaW4gZC5nZXRWYXIoJ0JCTEFZRVJTJykuc3BsaXQoKV0KICAgICAgICAgc2VsZi5sYXllcnNfZXhjbHVkZSA9IChkLmdldFZhcignU0RLX0xBWUVSU19FWENMVURFJykgb3IgIiIpLnNwbGl0KCkKKyAgICAgICAgc2VsZi5sYXllcnNfZXhjbHVkZV9wYXR0ZXJuID0gZC5nZXRWYXIoJ1NES19MQVlFUlNfRVhDTFVERV9QQVRURVJOJykKIAogICAgIGRlZiBjb3B5X2JpdGJha2VfYW5kX2xheWVycyhzZWxmLCBkZXN0ZGlyLCB3b3Jrc3BhY2VfbmFtZT1Ob25lKToKKyAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgICMgQ29weSBpbiBhbGwgbWV0YWRhdGEgbGF5ZXJzICsgYml0YmFrZSAoYXMgcmVwb3NpdG9yaWVzKQorICAgICAgICBjb3BpZWRfY29yZWJhc2UgPSBOb25lCiAgICAgICAgIGxheWVyc19jb3BpZWQgPSBbXQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKICAgICAgICAgbGF5ZXJzID0gbGlzdChzZWxmLmxheWVyZGlycykKQEAgLTQwLDggKzUwLDE3IEBACiAgICAgICAgICMgRXhjbHVkZSBsYXllcnMKICAgICAgICAgZm9yIGxheWVyX2V4Y2x1ZGUgaW4gc2VsZi5sYXllcnNfZXhjbHVkZToKICAgICAgICAgICAgIGlmIGxheWVyX2V4Y2x1ZGUgaW4gbGF5ZXJzOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoJ0V4Y2x1ZGVkICVzIGZyb20gc2RrIGxheWVycyBzaW5jZSBpdCBpcyBpbiBTREtfTEFZRVJTX0VYQ0xVREUnICUgbGF5ZXJfZXhjbHVkZSkKICAgICAgICAgICAgICAgICBsYXllcnMucmVtb3ZlKGxheWVyX2V4Y2x1ZGUpCiAKKyAgICAgICAgaWYgc2VsZi5sYXllcnNfZXhjbHVkZV9wYXR0ZXJuOgorICAgICAgICAgICAgbGF5ZXJzX2NwID0gbGF5ZXJzWzpdCisgICAgICAgICAgICBmb3IgcGF0dGVybiBpbiBzZWxmLmxheWVyc19leGNsdWRlX3BhdHRlcm4uc3BsaXQoKToKKyAgICAgICAgICAgICAgICBmb3IgbGF5ZXIgaW4gbGF5ZXJzX2NwOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChwYXR0ZXJuLCBsYXllcik6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCdFeGNsdWRlZCAlcyBmcm9tIHNkayBsYXllcnMgc2luY2UgbWF0Y2hlZCBTREtfTEFZRVJTX0VYQ0xVREVfUEFUVEVSTicgJSBsYXllcikKKyAgICAgICAgICAgICAgICAgICAgICAgIGxheWVycy5yZW1vdmUobGF5ZXIpCisKICAgICAgICAgd29ya3NwYWNlX25ld25hbWUgPSB3b3Jrc3BhY2VfbmFtZQogICAgICAgICBpZiB3b3Jrc3BhY2VfbmV3bmFtZToKICAgICAgICAgICAgIGxheWVybmFtZXMgPSBbb3MucGF0aC5iYXNlbmFtZShsYXllcikgZm9yIGxheWVyIGluIGxheWVyc10KQEAgLTg0LDE3ICsxMDMsMTggQEAKIAogICAgICAgICAgICAgbGF5ZXJfcmVsYXRpdmUgPSBvcy5wYXRoLnJlbHBhdGgobGF5ZXJkZXN0cGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RkaXIpCi0gICAgICAgICAgICBsYXllcnNfY29waWVkLmFwcGVuZChsYXllcl9yZWxhdGl2ZSkKLQogICAgICAgICAgICAgIyBUcmVhdCBjb3JlYmFzZSBhcyBzcGVjaWFsIHNpbmNlIGl0IHR5cGljYWxseSB3aWxsIGNvbnRhaW4KICAgICAgICAgICAgICMgYnVpbGQgZGlyZWN0b3JpZXMgb3Igb3RoZXIgY3VzdG9tIGl0ZW1zLgogICAgICAgICAgICAgaWYgY29yZWJhc2UgPT0gbGF5ZXI6CisgICAgICAgICAgICAgICAgY29waWVkX2NvcmViYXNlID0gbGF5ZXJfcmVsYXRpdmUKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobGF5ZXJkZXN0cGF0aCkKICAgICAgICAgICAgICAgICBmb3IgZiBpbiBjb3JlYmFzZV9maWxlczoKICAgICAgICAgICAgICAgICAgICAgZl9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZikKICAgICAgICAgICAgICAgICAgICAgZGVzdG5hbWUgPSBvcy5wYXRoLmpvaW4obGF5ZXJkZXN0cGF0aCwgZl9iYXNlbmFtZSkKICAgICAgICAgICAgICAgICAgICAgX3NtYXJ0X2NvcHkoZiwgZGVzdG5hbWUpCiAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxheWVyc19jb3BpZWQuYXBwZW5kKGxheWVyX3JlbGF0aXZlKQorCiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGxheWVyZGVzdHBhdGgsICdjb25mL2xheWVyLmNvbmYnKSk6CiAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGxheWVyICVzLCBhbHJlYWR5IGhhbmRsZWQiICUgbGF5ZXIpCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTE0MCw3ICsxNjAsNyBAQAogICAgICAgICAgICAgICAgIGxheWVyc19jb3BpZWQucmVtb3ZlKGxheWVyKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgcmV0dXJuIGxheWVyc19jb3BpZWQKKyAgICAgICAgcmV0dXJuIGNvcGllZF9jb3JlYmFzZSwgbGF5ZXJzX2NvcGllZAogCiBkZWYgZ2VuZXJhdGVfbG9ja2VkX3NpZ3Moc2lnZmlsZSwgZCk6CiAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShzaWdmaWxlKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9lbGYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkNTlhZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5CkBAIC0wLDAgKzEsMTI4IEBACitkZWYgbWFjaGluZV9kaWN0KGQpOgorIyAgICAgICAgICAgVEFSR0VUX09TICBUQVJHRVRfQVJDSCAgIE1BQ0hJTkUsIE9TQUJJLCBBQklWRVJTSU9OLCBMaXR0bGUgRW5kaWFuLCAzMmJpdD8KKyAgICBtYWNoZGF0YSA9IHsKKyAgICAgICAgICAgICJkYXJ3aW45IiA6IHsgCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVhYmkiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJlbGYiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NF9iZSIgOigxODMsICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IiA6ICAgICAgKDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiZXBpcGhhbnkiOiAgICg0NjQzLCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsbTMyIjogICAgICAgKDEzOCwgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3Y2NCI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4IiA6IHsgCisgICAgICAgICAgICAgICAgICAgICAgICAiYWFyY2g2NCIgOiAgICgxODMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0X2JlIiA6KDE4MywgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgIDk3LCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICg0MCwgICAgOTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NCI6ICAoMjEsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTY4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgImlhNjQiOiAgICAgICAoNTAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiYWxwaGEiOiAgICAgICgzNjkwMiwgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJocHBhIjogICAgICAgKDE1LCAgICAgMywgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm02OGsiOiAgICAgICAoIDQsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNiI6ICAgKCA4LCAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2EzMnI2ZWwiOiAoIDgsICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2lzYTY0cjYiOiAgICggOCwgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjogKCA4LCAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5pb3MyIjogICAgICAoMTEzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyaXNjdjY0IjogICAgKDI0MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgInMzOTAiOiAgICAgICAoMjIsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGFyYyI6ICAgICAgKCAyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtbXVzbCIgOiB7IAorICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0X2JlIiA6KDE4MywgICAgMCwgICAgMCwgICAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKCAgMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiaTY4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoICA2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaDQiOiAgICAgICAgKCAgNDIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1Y2xpbnV4LXVjbGliYyIgOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiYmZpbiI6ICAgICAgICggMTA2LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwgCisgICAgICAgICAgICAibGludXgtZ251ZWFiaSIgOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYiIgOiAgICAgKDQwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtbXVzbGVhYmkiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LWdudXNwZSIgOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LW11c2xzcGUiIDogeworICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnUiIDogICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LWdudV9pbHAzMiIgOiAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1nbnV4MzIiIDogICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJsaW51eC1tdXNseDMyIiA6ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJ4ODZfNjQiOiAgICAgKDYyLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibGludXgtZ251bjMyIiA6ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgICAibWlwczY0ZWwiOiAgICAgKCA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHNpc2E2NHI2IjogICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzaXNhNjRyNmVsIjooIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgfQorCisgICAgIyBBZGQgaW4gYW55IGV4dHJhIHVzZXIgc3VwcGxpZWQgZGF0YSB3aGljaCBtYXkgY29tZSBmcm9tIGEgQlNQIGxheWVyLCByZW1vdmluZyB0aGUKKyAgICAjIG5lZWQgdG8gYWx3YXlzIGNoYW5nZSB0aGlzIGNsYXNzIGRpcmVjdGx5CisgICAgZXh0cmFfbWFjaGRhdGEgPSAoZCBhbmQgZC5nZXRWYXIoIlBBQ0tBR0VRQV9FWFRSQV9NQUNIREVGRlVOQ1MiIG9yIE5vbmUpIG9yICIiKS5zcGxpdCgpCisgICAgZm9yIG0gaW4gZXh0cmFfbWFjaGRhdGE6CisgICAgICAgIGNhbGwgPSBtICsgIihtYWNoZGF0YSwgZCkiCisgICAgICAgIGxvY3MgPSB7ICJtYWNoZGF0YSIgOiBtYWNoZGF0YSwgImQiIDogZH0KKyAgICAgICAgbWFjaGRhdGEgPSBiYi51dGlscy5iZXR0ZXJfZXZhbChjYWxsLCBsb2NzKQorCisgICAgcmV0dXJuIG1hY2hkYXRhCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQppbmRleCBiMTcyNzI5Li5jY2Q1YWVlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKQEAgLTMsNiArMyw4IEBACiAKIGltcG9ydCBiYgogaW1wb3J0IG9lLnV0aWxzCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHNobGV4CiAKIGNsYXNzIExvY2FsU2lnbmVyKG9iamVjdCk6CiAgICAgIiIiQ2xhc3MgZm9yIGhhbmRsaW5nIGxvY2FsIChvbiB0aGUgYnVpbGQgaG9zdCkgc2lnbmluZyIiIgpAQCAtMjMsMTAgKzI1LDcgQEAKICAgICAgICAgaWYgYXJtb3I6CiAgICAgICAgICAgICBjbWQgKz0gIi0tYXJtb3IgIgogICAgICAgICBjbWQgKz0ga2V5aWQKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoY21kKQotICAgICAgICBpZiBzdGF0dXM6Ci0gICAgICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKCdGYWlsZWQgdG8gZXhwb3J0IGdwZyBwdWJsaWMga2V5ICglcyk6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlpZCwgb3V0cHV0KSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2hsZXguc3BsaXQoY21kKSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogCiAgICAgZGVmIHNpZ25fcnBtcyhzZWxmLCBmaWxlcywga2V5aWQsIHBhc3NwaHJhc2UsIGRpZ2VzdCwgc2lnbl9jaHVuaywgZnNrPU5vbmUsIGZza19wYXNzd29yZD1Ob25lKToKICAgICAgICAgIiIiU2lnbiBSUE0gZmlsZXMiIiIKQEAgLTQ4LDEzICs0NywxMCBAQAogCiAgICAgICAgICMgU2lnbiBpbiBjaHVua3MKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGZpbGVzKSwgc2lnbl9jaHVuayk6Ci0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChjbWQgKyAnICcuam9pbihmaWxlc1tpOmkrc2lnbl9jaHVua10pKQotICAgICAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQoIkZhaWxlZCB0byBzaWduIFJQTSBwYWNrYWdlczogJXMiICUgb3V0cHV0KQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc2hsZXguc3BsaXQoY21kICsgJyAnLmpvaW4oZmlsZXNbaTppK3NpZ25fY2h1bmtdKSksIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKIAogICAgIGRlZiBkZXRhY2hfc2lnbihzZWxmLCBpbnB1dF9maWxlLCBrZXlpZCwgcGFzc3BocmFzZV9maWxlLCBwYXNzcGhyYXNlPU5vbmUsIGFybW9yPVRydWUpOgogICAgICAgICAiIiJDcmVhdGUgYSBkZXRhY2hlZCBzaWduYXR1cmUgb2YgYSBmaWxlIiIiCi0gICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAKICAgICAgICAgaWYgcGFzc3BocmFzZV9maWxlIGFuZCBwYXNzcGhyYXNlOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJZb3Ugc2hvdWxkIHVzZSBlaXRoZXIgcGFzc3BocmFzZV9maWxlIG9mIHBhc3NwaHJhc2UsIG5vdCBib3RoIikKQEAgLTEwMCw3ICs5Niw2IEBACiAKICAgICBkZWYgZ2V0X2dwZ192ZXJzaW9uKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGdwZyB2ZXJzaW9uIGFzIGEgdHVwbGUgb2YgaW50cyIiIgotICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICB0cnk6CiAgICAgICAgICAgICB2ZXJfc3RyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIsICItLW5vLXBlcm1pc3Npb24td2FybmluZyIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgcmV0dXJuIHR1cGxlKFtpbnQoaSkgZm9yIGkgaW4gdmVyX3N0ci5zcGxpdCgiLSIpWzBdLnNwbGl0KCcuJyldKQpAQCAtMTE0LDcgKzEwOSw3IEBACiAgICAgICAgIGlmIHNlbGYuZ3BnX3BhdGg6CiAgICAgICAgICAgICBjbWQgKz0gIi0taG9tZWRpciAlcyAiICUgc2VsZi5ncGdfcGF0aAogICAgICAgICBjbWQgKz0gc2lnX2ZpbGUKLSAgICAgICAgc3RhdHVzLCBfID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKHNobGV4LnNwbGl0KGNtZCkpCiAgICAgICAgIHJldCA9IEZhbHNlIGlmIHN0YXR1cyBlbHNlIFRydWUKICAgICAgICAgcmV0dXJuIHJldAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL21ha2V0eXBlLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9tYWtldHlwZS5weQppbmRleCBmODg5ODFkLi5jMzZlN2I1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL21ha2V0eXBlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvbWFrZXR5cGUucHkKQEAgLTcsNyArNywxMiBAQAogCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IG9lLnR5cGVzIGFzIHR5cGVzCi1pbXBvcnQgY29sbGVjdGlvbnMKK3RyeToKKyAgICAjIFB5dGhvbiAzLjcrCisgICAgZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IENhbGxhYmxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBQeXRob24gPCAzLjcKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDYWxsYWJsZQogCiBhdmFpbGFibGVfdHlwZXMgPSB7fQogCkBAIC05Niw3ICsxMDEsNyBAQAogICAgICAgICBjb250aW51ZQogCiAgICAgb2JqID0gZ2V0YXR0cih0eXBlcywgbmFtZSkKLSAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkNhbGxhYmxlKToKKyAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIENhbGxhYmxlKToKICAgICAgICAgY29udGludWUKIAogICAgIHJlZ2lzdGVyKG5hbWUsIG9iaikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQppbmRleCA0ZjNlMjFhLi5lZmQzNmIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CkBAIC0xLDE1ICsxLDE3IEBACitpbXBvcnQgc3RhdAoraW1wb3J0IG1tYXAKK2ltcG9ydCBzdWJwcm9jZXNzCisKIGRlZiBydW5zdHJpcChhcmcpOgogICAgICMgRnVuY3Rpb24gdG8gc3RyaXAgYSBzaW5nbGUgZmlsZSwgY2FsbGVkIGZyb20gc3BsaXRfYW5kX3N0cmlwX2ZpbGVzIGJlbG93CiAgICAgIyBBIHdvcmtpbmcgJ2ZpbGUnIChvbmUgd2hpY2ggd29ya3Mgb24gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUpCiAgICAgIwotICAgICMgVGhlIGVsZnR5cGUgaXMgYSBiaXQgcGF0dGVybiAoZXhwbGFpbmVkIGluIHNwbGl0X2FuZF9zdHJpcF9maWxlcykgdG8gdGVsbAorICAgICMgVGhlIGVsZnR5cGUgaXMgYSBiaXQgcGF0dGVybiAoZXhwbGFpbmVkIGluIGlzX2VsZiBiZWxvdykgdG8gdGVsbAogICAgICMgdXMgd2hhdCB0eXBlIG9mIGZpbGUgd2UncmUgcHJvY2Vzc2luZy4uLgogICAgICMgNCAtIGV4ZWN1dGFibGUKICAgICAjIDggLSBzaGFyZWQgbGlicmFyeQogICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCiAKLSAgICBpbXBvcnQgc3RhdCwgc3VicHJvY2VzcwotCiAgICAgKGZpbGUsIGVsZnR5cGUsIHN0cmlwKSA9IGFyZwogCiAgICAgbmV3bW9kZSA9IE5vbmUKQEAgLTE5LDExICsyMSwxNSBAQAogICAgICAgICBvcy5jaG1vZChmaWxlLCBuZXdtb2RlKQogCiAgICAgc3RyaXBjbWQgPSBbc3RyaXBdCi0KKyAgICBza2lwX3N0cmlwID0gRmFsc2UKICAgICAjIGtlcm5lbCBtb2R1bGUgICAgCiAgICAgaWYgZWxmdHlwZSAmIDE2OgotICAgICAgICBzdHJpcGNtZC5leHRlbmQoWyItLXN0cmlwLWRlYnVnIiwgIi0tcmVtb3ZlLXNlY3Rpb249LmNvbW1lbnQiLAotICAgICAgICAgICAgIi0tcmVtb3ZlLXNlY3Rpb249Lm5vdGUiLCAiLS1wcmVzZXJ2ZS1kYXRlcyJdKQorICAgICAgICBpZiBpc19rZXJuZWxfbW9kdWxlX3NpZ25lZChmaWxlKToKKyAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTa2lwIHN0cmlwIG9uIHNpZ25lZCBtb2R1bGUgJXMiICUgZmlsZSkKKyAgICAgICAgICAgIHNraXBfc3RyaXAgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdHJpcGNtZC5leHRlbmQoWyItLXN0cmlwLWRlYnVnIiwgIi0tcmVtb3ZlLXNlY3Rpb249LmNvbW1lbnQiLAorICAgICAgICAgICAgICAgICItLXJlbW92ZS1zZWN0aW9uPS5ub3RlIiwgIi0tcHJlc2VydmUtZGF0ZXMiXSkKICAgICAjIC5zbyBhbmQgc2hhcmVkIGxpYnJhcnkKICAgICBlbGlmICIuc28iIGluIGZpbGUgYW5kIGVsZnR5cGUgJiA4OgogICAgICAgICBzdHJpcGNtZC5leHRlbmQoWyItLXJlbW92ZS1zZWN0aW9uPS5jb21tZW50IiwgIi0tcmVtb3ZlLXNlY3Rpb249Lm5vdGUiLCAiLS1zdHJpcC11bm5lZWRlZCJdKQpAQCAtMzQsMTggKzQwLDU5IEBACiAgICAgc3RyaXBjbWQuYXBwZW5kKGZpbGUpCiAgICAgYmIuZGVidWcoMSwgInJ1bnN0cmlwOiAlcyIgJSBzdHJpcGNtZCkKIAotICAgIHRyeToKKyAgICBpZiBub3Qgc2tpcF9zdHJpcDoKICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoc3RyaXBjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgYmIuZXJyb3IoInJ1bnN0cmlwOiAnJXMnIHN0cmlwIGNvbW1hbmQgZmFpbGVkIHdpdGggJXMgKCVzKSIgJSAoc3RyaXBjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQogCiAgICAgaWYgbmV3bW9kZToKICAgICAgICAgb3MuY2htb2QoZmlsZSwgb3JpZ21vZGUpCiAKLSAgICByZXR1cm4KKyMgRGV0ZWN0IC5rbyBtb2R1bGUgYnkgc2VhcmNoaW5nIGZvciAidmVybWFnaWM9IiBzdHJpbmcKK2RlZiBpc19rZXJuZWxfbW9kdWxlKHBhdGgpOgorICAgIHdpdGggb3BlbihwYXRoKSBhcyBmOgorICAgICAgICByZXR1cm4gbW1hcC5tbWFwKGYuZmlsZW5vKCksIDAsIHByb3Q9bW1hcC5QUk9UX1JFQUQpLmZpbmQoYiJ2ZXJtYWdpYz0iKSA+PSAwCiAKKyMgRGV0ZWN0IGlmIC5rbyBtb2R1bGUgaXMgc2lnbmVkCitkZWYgaXNfa2VybmVsX21vZHVsZV9zaWduZWQocGF0aCk6CisgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGY6CisgICAgICAgIGYuc2VlaygtMjgsIDIpCisgICAgICAgIG1vZHVsZV90YWlsID0gZi5yZWFkKCkKKyAgICAgICAgcmV0dXJuICJNb2R1bGUgc2lnbmF0dXJlIGFwcGVuZGVkIiBpbiAiIi5qb2luKGNocihjKSBmb3IgYyBpbiBieXRlYXJyYXkobW9kdWxlX3RhaWwpKQogCi1kZWYgc3RyaXBfZXhlY3MocG4sIGRzdGRpciwgc3RyaXBfY21kLCBsaWJkaXIsIGJhc2VfbGliZGlyLCBxYV9hbHJlYWR5X3N0cmlwcGVkPUZhbHNlKToKKyMgUmV0dXJuIHR5cGUgKGJpdHMpOgorIyAwIC0gbm90IGVsZgorIyAxIC0gRUxGCisjIDIgLSBzdHJpcHBlZAorIyA0IC0gZXhlY3V0YWJsZQorIyA4IC0gc2hhcmVkIGxpYnJhcnkKKyMgMTYgLSBrZXJuZWwgbW9kdWxlCitkZWYgaXNfZWxmKHBhdGgpOgorICAgIGV4ZWNfdHlwZSA9IDAKKyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbImZpbGUiLCAiLWIiLCBwYXRoXSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKworICAgIGlmICJFTEYiIGluIHJlc3VsdDoKKyAgICAgICAgZXhlY190eXBlIHw9IDEKKyAgICAgICAgaWYgIm5vdCBzdHJpcHBlZCIgbm90IGluIHJlc3VsdDoKKyAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAyCisgICAgICAgIGlmICJleGVjdXRhYmxlIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBleGVjX3R5cGUgfD0gNAorICAgICAgICBpZiAic2hhcmVkIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBleGVjX3R5cGUgfD0gOAorICAgICAgICBpZiAicmVsb2NhdGFibGUiIGluIHJlc3VsdDoKKyAgICAgICAgICAgIGlmIHBhdGguZW5kc3dpdGgoIi5rbyIpIGFuZCBwYXRoLmZpbmQoIi9saWIvbW9kdWxlcy8iKSAhPSAtMSBhbmQgaXNfa2VybmVsX21vZHVsZShwYXRoKToKKyAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gMTYKKyAgICByZXR1cm4gKHBhdGgsIGV4ZWNfdHlwZSkKKworZGVmIGlzX3N0YXRpY19saWIocGF0aCk6CisgICAgaWYgcGF0aC5lbmRzd2l0aCgnLmEnKSBhbmQgbm90IG9zLnBhdGguaXNsaW5rKHBhdGgpOgorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZmg6CisgICAgICAgICAgICAjIFRoZSBtYWdpYyBtdXN0IGluY2x1ZGUgdGhlIGZpcnN0IHNsYXNoIHRvIGF2b2lkCisgICAgICAgICAgICAjIG1hdGNoaW5nIGdvbGFuZyBzdGF0aWMgbGlicmFyaWVzCisgICAgICAgICAgICBtYWdpYyA9IGInITxhcmNoPlx4MGEvJworICAgICAgICAgICAgc3RhcnQgPSBmaC5yZWFkKGxlbihtYWdpYykpCisgICAgICAgICAgICByZXR1cm4gc3RhcnQgPT0gbWFnaWMKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIHN0cmlwX2V4ZWNzKHBuLCBkc3RkaXIsIHN0cmlwX2NtZCwgbGliZGlyLCBiYXNlX2xpYmRpciwgZCwgcWFfYWxyZWFkeV9zdHJpcHBlZD1GYWxzZSk6CiAgICAgIiIiCiAgICAgU3RyaXAgZXhlY3V0YWJsZSBjb2RlIChsaWtlIGV4ZWN1dGFibGVzLCBzaGFyZWQgbGlicmFyaWVzKSBfaW5fcGxhY2VfCiAgICAgLSBCYXNlZCBvbiBzeXNyb290X3N0cmlwIGluIHN0YWdpbmcuYmJjbGFzcwpAQCAtNTYsMzkgKzEwMyw3IEBACiAgICAgOnBhcmFtIHFhX2FscmVhZHlfc3RyaXBwZWQ6IFNldCB0byBUcnVlIGlmIGFscmVhZHktc3RyaXBwZWQnIGluICR7SU5TQU5FX1NLSVB9CiAgICAgVGhpcyBpcyBmb3IgcHJvcGVyIGxvZ2dpbmcgYW5kIG1lc3NhZ2VzIG9ubHkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHN0YXQsIGVycm5vLCBvZS5wYXRoLCBvZS51dGlscywgbW1hcAotCi0gICAgIyBEZXRlY3QgLmtvIG1vZHVsZSBieSBzZWFyY2hpbmcgZm9yICJ2ZXJtYWdpYz0iIHN0cmluZwotICAgIGRlZiBpc19rZXJuZWxfbW9kdWxlKHBhdGgpOgotICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKLSAgICAgICAgICAgIHJldHVybiBtbWFwLm1tYXAoZi5maWxlbm8oKSwgMCwgcHJvdD1tbWFwLlBST1RfUkVBRCkuZmluZChiInZlcm1hZ2ljPSIpID49IDAKLQotICAgICMgUmV0dXJuIHR5cGUgKGJpdHMpOgotICAgICMgMCAtIG5vdCBlbGYKLSAgICAjIDEgLSBFTEYKLSAgICAjIDIgLSBzdHJpcHBlZAotICAgICMgNCAtIGV4ZWN1dGFibGUKLSAgICAjIDggLSBzaGFyZWQgbGlicmFyeQotICAgICMgMTYgLSBrZXJuZWwgbW9kdWxlCi0gICAgZGVmIGlzX2VsZihwYXRoKToKLSAgICAgICAgZXhlY190eXBlID0gMAotICAgICAgICByZXQsIHJlc3VsdCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgiZmlsZSAtYiAnJXMnIiAlIHBhdGgpCi0KLSAgICAgICAgaWYgcmV0OgotICAgICAgICAgICAgYmIuZXJyb3IoInNwbGl0X2FuZF9zdHJpcF9maWxlczogJ2ZpbGUgJXMnIGZhaWxlZCIgJSBwYXRoKQotICAgICAgICAgICAgcmV0dXJuIGV4ZWNfdHlwZQotCi0gICAgICAgIGlmICJFTEYiIGluIHJlc3VsdDoKLSAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAxCi0gICAgICAgICAgICBpZiAibm90IHN0cmlwcGVkIiBub3QgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAyCi0gICAgICAgICAgICBpZiAiZXhlY3V0YWJsZSIgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSA0Ci0gICAgICAgICAgICBpZiAic2hhcmVkIiBpbiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgZXhlY190eXBlIHw9IDgKLSAgICAgICAgICAgIGlmICJyZWxvY2F0YWJsZSIgaW4gcmVzdWx0IGFuZCBpc19rZXJuZWxfbW9kdWxlKHBhdGgpOgotICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSAxNgotICAgICAgICByZXR1cm4gZXhlY190eXBlCisgICAgaW1wb3J0IHN0YXQsIGVycm5vLCBvZS5wYXRoLCBvZS51dGlscwogCiAgICAgZWxmZmlsZXMgPSB7fQogICAgIGlub2RlcyA9IHt9CkBAIC05OCw2ICsxMTMsOCBAQAogICAgICMKICAgICAjIEZpcnN0IGxldHMgZmlndXJlIG91dCBhbGwgb2YgdGhlIGZpbGVzIHdlIG1heSBoYXZlIHRvIHByb2Nlc3MKICAgICAjCisgICAgY2hlY2tlbGYgPSBbXQorICAgIGlub2RlY2FjaGUgPSB7fQogICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRzdGRpcik6CiAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQpAQCAtMTIzLDcgKzE0MCwxMSBAQAogCiAgICAgICAgICAgICAgICAgIyBJdCdzIGEgZmlsZSAob3IgaGFyZGxpbmspLCBub3QgYSBsaW5rCiAgICAgICAgICAgICAgICAgIyAuLi5idXQgaXMgaXQgRUxGLCBhbmQgaXMgaXQgYWxyZWFkeSBzdHJpcHBlZD8KLSAgICAgICAgICAgICAgICBlbGZfZmlsZSA9IGlzX2VsZihmaWxlKQorICAgICAgICAgICAgICAgIGNoZWNrZWxmLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgIGlub2RlY2FjaGVbZmlsZV0gPSBzLnN0X2lubworICAgIHJlc3VsdHMgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGlzX2VsZiwgY2hlY2tlbGYsIGQpCisgICAgZm9yIChmaWxlLCBlbGZfZmlsZSkgaW4gcmVzdWx0czoKKyAgICAgICAgICAgICAgICAjZWxmX2ZpbGUgPSBpc19lbGYoZmlsZSkKICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDE6CiAgICAgICAgICAgICAgICAgICAgIGlmIGVsZl9maWxlICYgMjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHFhX2FscmVhZHlfc3RyaXBwZWQ6CkBAIC0xMzIsMTMgKzE1MywxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIkZpbGUgJyVzJyBmcm9tICVzIHdhcyBhbHJlYWR5IHN0cmlwcGVkLCB0aGlzIHdpbGwgcHJldmVudCBmdXR1cmUgZGVidWdnaW5nISIgJSAoZmlsZVtsZW4oZHN0ZGlyKTpdLCBwbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICAgICAgICAgIGlmIHMuc3RfaW5vIGluIGlub2RlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5vZGVjYWNoZVtmaWxlXSBpbiBpbm9kZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW3Muc3RfaW5vXSwgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxpbmsoaW5vZGVzW2lub2RlY2FjaGVbZmlsZV1dLCBmaWxlKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBicmVhayBoYXJkbGlua3Mgc28gdGhhdCB3ZSBkbyBub3Qgc3RyaXAgdGhlIG9yaWdpbmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgaW5vZGVzW3Muc3RfaW5vXSA9IGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKGZpbGUsIGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZXNbaW5vZGVjYWNoZVtmaWxlXV0gPSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5icmVha19oYXJkbGlua3MoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsZmZpbGVzW2ZpbGVdID0gZWxmX2ZpbGUKIAogICAgICMKQEAgLTE0OSw4ICsxNzAsNyBAQAogICAgICAgICBlbGZfZmlsZSA9IGludChlbGZmaWxlc1tmaWxlXSkKICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZmlsZSwgZWxmX2ZpbGUsIHN0cmlwX2NtZCkpCiAKLSAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhzZmlsZXMsIHJ1bnN0cmlwKQotCisgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChydW5zdHJpcCwgc2ZpbGVzLCBkKQogCiAKIGRlZiBmaWxlX3RyYW5zbGF0ZShmaWxlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKaW5kZXggMmQ4YWViYS4uODgyZTdjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCByZQogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgYmIKQEAgLTEzLDYgKzEyLDcgQEAKIGltcG9ydCBzdHJpbmcKIGZyb20gb2UuZ3BnX3NpZ24gaW1wb3J0IGdldF9zaWduZXIKIGltcG9ydCBoYXNobGliCitpbXBvcnQgZm5tYXRjaAogCiAjIHRoaXMgY2FuIGJlIHVzZWQgYnkgYWxsIFBNIGJhY2tlbmRzIHRvIGNyZWF0ZSB0aGUgaW5kZXggZmlsZXMgaW4gcGFyYWxsZWwKIGRlZiBjcmVhdGVfaW5kZXgoYXJnKToKQEAgLTg0LDEyICs4NCw1NSBAQAogCiAgICAgcmV0dXJuIG91dHB1dAogCi0jIE5vdGU6IHRoaXMgc2hvdWxkIGJlIGJiLmZhdGFsIGluIHRoZSBmdXR1cmUuCi1kZWYgZmFpbGVkX3Bvc3RpbnN0c193YXJuKHBrZ3MsIGxvZ19wYXRoKToKLSAgICBiYi53YXJuKCIiIkludGVudGlvbmFsbHkgZmFpbGluZyBwb3N0aW5zdGFsbCBzY3JpcHRsZXRzIG9mICVzIHRvIGRlZmVyIHRoZW0gdG8gZmlyc3QgYm9vdCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGxhY2UgdGhlbSBpbnRvIHBrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSAoKS4KLUlmIGRlZmVycmluZyB0byBmaXJzdCBib290IHdhc24ndCB0aGUgaW50ZW50LCB0aGVuIHNjcmlwdGxldCBmYWlsdXJlIG1heSBtZWFuIGFuIGlzc3VlIGluIHRoZSByZWNpcGUsIG9yIGEgcmVncmVzc2lvbiBlbHNld2hlcmUuCitkZWYgZmFpbGVkX3Bvc3RpbnN0c19hYm9ydChwa2dzLCBsb2dfcGF0aCk6CisgICAgYmIuZmF0YWwoIiIiUG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiAlcyBoYXZlIGZhaWxlZC4gSWYgdGhlIGludGVudGlvbiBpcyB0byBkZWZlciB0aGVtIHRvIGZpcnN0IGJvb3QsCit0aGVuIHBsZWFzZSBwbGFjZSB0aGVtIGludG8gcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59ICgpLgorRGVmZXJyaW5nIHRvIGZpcnN0IGJvb3QgdmlhICdleGl0IDEnIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCiBEZXRhaWxzIG9mIHRoZSBmYWlsdXJlIGFyZSBpbiAlcy4iIiIgJShwa2dzLCBsb2dfcGF0aCkpCiAKK2RlZiBnZW5lcmF0ZV9sb2NhbGVfYXJjaGl2ZShkLCByb290ZnMsIHRhcmdldF9hcmNoLCBsb2NhbGVkaXIpOgorICAgICMgUHJldHR5IHN1cmUgd2UgZG9uJ3QgbmVlZCB0aGlzIGZvciBsb2NhbGUgYXJjaGl2ZSBnZW5lcmF0aW9uIGJ1dAorICAgICMga2VlcGluZyBpdCB0byBiZSBzYWZlLi4uCisgICAgbG9jYWxlX2FyY2hfb3B0aW9ucyA9IHsgXAorICAgICAgICAiYXJtIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAiYXJtZWIiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJhYXJjaDY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAiYWFyY2g2NF9iZSI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKKyAgICAgICAgInNoNCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKKyAgICAgICAgInBvd2VycGMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJwb3dlcnBjNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJtaXBzIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAibWlwc2lzYTMycjYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJtaXBzNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCisgICAgICAgICJtaXBzaXNhNjRyNiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKKyAgICAgICAgIm1pcHNlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgIm1pcHNpc2EzMnI2ZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJtaXBzNjRlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgIm1pcHNpc2E2NHI2ZWwiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJyaXNjdjY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAicmlzY3YzMiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKKyAgICAgICAgImk1ODYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCisgICAgICAgICJpNjg2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAorICAgICAgICAieDg2XzY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdCisgICAgfQorICAgIGlmIHRhcmdldF9hcmNoIGluIGxvY2FsZV9hcmNoX29wdGlvbnM6CisgICAgICAgIGFyY2hfb3B0aW9ucyA9IGxvY2FsZV9hcmNoX29wdGlvbnNbdGFyZ2V0X2FyY2hdCisgICAgZWxzZToKKyAgICAgICAgYmIuZXJyb3IoImxvY2FsZV9hcmNoX29wdGlvbnMgbm90IGZvdW5kIGZvciB0YXJnZXRfYXJjaD0iICsgdGFyZ2V0X2FyY2gpCisgICAgICAgIGJiLmZhdGFsKCJ1bmtub3duIGFyY2g6IiArIHRhcmdldF9hcmNoICsgIiBmb3IgbG9jYWxlX2FyY2hfb3B0aW9ucyIpCisKKyAgICAjIE5lZWQgdG8gc2V0IHRoaXMgc28gY3Jvc3MtbG9jYWxlZGVmIGtub3dzIHdoZXJlIHRoZSBhcmNoaXZlIGlzCisgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgIGVudlsiTE9DQUxFQVJDSElWRSJdID0gb2UucGF0aC5qb2luKGxvY2FsZWRpciwgImxvY2FsZS1hcmNoaXZlIikKKworICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIobG9jYWxlZGlyKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsb2NhbGVkaXIsIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBjbWQgPSBbImNyb3NzLWxvY2FsZWRlZiIsICItLXZlcmJvc2UiXQorICAgICAgICAgICAgY21kICs9IGFyY2hfb3B0aW9ucworICAgICAgICAgICAgY21kICs9IFsiLS1hZGQtdG8tYXJjaGl2ZSIsIHBhdGhdCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIGVudj1lbnYsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKwogY2xhc3MgSW5kZXhlcihvYmplY3QsIG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgZGVwbG95X2Rpcik6CiAgICAgICAgIHNlbGYuZCA9IGQKQEAgLTE3Nyw3ICsyMjAsNyBAQAogICAgICAgICAgICAgYmIubm90ZSgiVGhlcmUgYXJlIG5vIHBhY2thZ2VzIGluICVzISIgJSBzZWxmLmRlcGxveV9kaXIpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhpbmRleF9jbWRzLCBjcmVhdGVfaW5kZXgpCisgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2goY3JlYXRlX2luZGV4LCBpbmRleF9jbWRzLCBzZWxmLmQpCiAKICAgICAgICAgaWYgc2lnbmVyOgogICAgICAgICAgICAgZmVlZF9zaWdfdHlwZSA9IHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEUnKQpAQCAtMjU4LDcgKzMwMSw3IEBACiAgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgbm8gcGFja2FnZXMgaW4gJXMiICUgc2VsZi5kZXBsb3lfZGlyKQogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoaW5kZXhfY21kcywgY3JlYXRlX2luZGV4KQorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfbGF1bmNoKGNyZWF0ZV9pbmRleCwgaW5kZXhfY21kcywgc2VsZi5kKQogICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfU0lHTicpID09ICcxJzoKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1BhY2thZ2UgZmVlZCBzaWduaW5nIG5vdCBpbXBsZW1lbnRkIGZvciBkcGtnJykKIApAQCAtMzM2LDE3ICszNzksMjQgQEAKIAogICAgIGRlZiBfaW5pdGlhbGl6ZV9pbnRlcmNlcHRzKHNlbGYpOgogICAgICAgICBiYi5ub3RlKCJJbml0aWFsaXppbmcgaW50ZXJjZXB0IGRpciBmb3IgJXMiICUgc2VsZi50YXJnZXRfcm9vdGZzKQotICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX2RpciA9IHNlbGYuZC5nZXRWYXIoIlBPU1RJTlNUX0lOVEVSQ0VQVFNfRElSIikKLSAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyOgotICAgICAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0c19kaXIgPSBzZWxmLmQuZXhwYW5kKCIke0NPUkVCQVNFfS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMiKQogICAgICAgICAjIEFzIHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgUGFja2FnZU1hbmFnZXIgb3BlcmF0aW5nIGF0IHRoZSBzYW1lIHRpbWUKICAgICAgICAgIyB3ZSBuZWVkIHRvIGlzb2xhdGUgdGhlIGludGVyY2VwdF9zY3JpcHRzIGRpcmVjdG9yaWVzIGZyb20gZWFjaCBvdGhlciwKICAgICAgICAgIyBoZW5jZSB0aGUgdWdseSBoYXNoIGRpZ2VzdCBpbiBkaXIgbmFtZS4KLSAgICAgICAgc2VsZi5pbnRlcmNlcHRzX2RpciA9IG9zLnBhdGguam9pbihzZWxmLmQuZ2V0VmFyKCdXT1JLRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmNlcHRfc2NyaXB0cy0lcyIgJShoYXNobGliLnNoYTI1NihzZWxmLnRhcmdldF9yb290ZnMuZW5jb2RlKCkpLmhleGRpZ2VzdCgpKSApCisgICAgICAgIHNlbGYuaW50ZXJjZXB0c19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLCAiaW50ZXJjZXB0X3NjcmlwdHMtJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFzaGxpYi5zaGEyNTYoc2VsZi50YXJnZXRfcm9vdGZzLmVuY29kZSgpKS5oZXhkaWdlc3QoKSkpCiAKKyAgICAgICAgcG9zdGluc3RfaW50ZXJjZXB0cyA9IChzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTIikgb3IgIiIpLnNwbGl0KCkKKyAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHM6CisgICAgICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX3BhdGggPSBzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTX1BBVEgiKQorICAgICAgICAgICAgaWYgbm90IHBvc3RpbnN0X2ludGVyY2VwdHNfcGF0aDoKKyAgICAgICAgICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzX3BhdGggPSBzZWxmLmQuZ2V0VmFyKCJQT1NUSU5TVF9JTlRFUkNFUFRTX0RJUiIpIG9yIHNlbGYuZC5leHBhbmQoIiR7Q09SRUJBU0V9L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cyIpCisgICAgICAgICAgICBwb3N0aW5zdF9pbnRlcmNlcHRzID0gb2UucGF0aC53aGljaF93aWxkKCcqJywgcG9zdGluc3RfaW50ZXJjZXB0c19wYXRoKQorCisgICAgICAgIGJiLmRlYnVnKDEsICdDb2xsZWN0ZWQgaW50ZXJjZXB0czpcbiVzJyAlICcnLmpvaW4oJyAgJXNcbicgJSBpIGZvciBpIGluIHBvc3RpbnN0X2ludGVyY2VwdHMpKQogICAgICAgICBiYi51dGlscy5yZW1vdmUoc2VsZi5pbnRlcmNlcHRzX2RpciwgVHJ1ZSkKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHBvc3RpbnN0X2ludGVyY2VwdHNfZGlyLCBzZWxmLmludGVyY2VwdHNfZGlyKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi5pbnRlcmNlcHRzX2RpcikKKyAgICAgICAgZm9yIGludGVyY2VwdCBpbiBwb3N0aW5zdF9pbnRlcmNlcHRzOgorICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUoaW50ZXJjZXB0LCBvcy5wYXRoLmpvaW4oc2VsZi5pbnRlcmNlcHRzX2Rpciwgb3MucGF0aC5iYXNlbmFtZShpbnRlcmNlcHQpKSkKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfaGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHNlbGYsIGZhaWxlZF9zY3JpcHQpOgpAQCAtMzcwLDcgKzQyMCw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2ludGVyY2VwdF9mYWlsdXJlKHJlZ2lzdGVyZWRfcGtncykKIAogCi0gICAgZGVmIHJ1bl9pbnRlcmNlcHRzKHNlbGYpOgorICAgIGRlZiBydW5faW50ZXJjZXB0cyhzZWxmLCBwb3B1bGF0ZV9zZGs9Tm9uZSk6CiAgICAgICAgIGludGVyY2VwdHNfZGlyID0gc2VsZi5pbnRlcmNlcHRzX2RpcgogCiAgICAgICAgIGJiLm5vdGUoIlJ1bm5pbmcgaW50ZXJjZXB0IHNjcmlwdHM6IikKQEAgLTM4Miw3ICs0MzIsOCBAQAogICAgICAgICAgICAgaWYgc2NyaXB0ID09ICJwb3N0aW5zdF9pbnRlcmNlcHQiIG9yIG5vdCBvcy5hY2Nlc3Moc2NyaXB0X2Z1bGwsIG9zLlhfT0spOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIGlmIHNjcmlwdCA9PSAiZGVsYXlfdG9fZmlyc3RfYm9vdCI6CisgICAgICAgICAgICAjIHdlIGRvIG5vdCB3YW50IHRvIHJ1biBhbnkgbXVsdGlsaWIgdmFyaWFudCBvZiB0aGlzCisgICAgICAgICAgICBpZiBzY3JpcHQuc3RhcnRzd2l0aCgiZGVsYXlfdG9fZmlyc3RfYm9vdCIpOgogICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3Rwb25lX3RvX2ZpcnN0X2Jvb3Qoc2NyaXB0X2Z1bGwpCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMzkyLDkgKzQ0MywyMiBAQAogICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgaWYgb3V0cHV0OiBiYi5ub3RlKG91dHB1dC5kZWNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIiAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCiAgICAgICAgICAgICAgICAgYmIubm90ZSgiRXhpdCBjb2RlICVkLiBPdXRwdXQ6XG4lcyIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQotICAgICAgICAgICAgICAgIHNlbGYuX3Bvc3Rwb25lX3RvX2ZpcnN0X2Jvb3Qoc2NyaXB0X2Z1bGwpCisgICAgICAgICAgICAgICAgaWYgcG9wdWxhdGVfc2RrID09ICdob3N0JzoKKyAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgZmFpbGVkLCBkZXRhaWxzIGluICVzL2xvZy5kb18lcyIgJSAoc2NyaXB0LCBzZWxmLmQuZ2V0VmFyKCdUJyksIHNlbGYuZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJykpKQorICAgICAgICAgICAgICAgIGVsaWYgcG9wdWxhdGVfc2RrID09ICd0YXJnZXQnOgorICAgICAgICAgICAgICAgICAgICBpZiAicWVtdXdyYXBwZXI6IHFlbXUgdXNlcm1vZGUgaXMgbm90IHN1cHBvcnRlZCIgaW4gZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlIHBvc3RpbnN0YWxsIGludGVyY2VwdCBob29rICclcycgY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBtaXNzaW5nIHFlbXUgdXNlcm1vZGUgc3VwcG9ydCwgZGV0YWlscyBpbiAlcy9sb2cuZG9fJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNjcmlwdCwgc2VsZi5kLmdldFZhcignVCcpLCBzZWxmLmQuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycpKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIiAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgInFlbXV3cmFwcGVyOiBxZW11IHVzZXJtb2RlIGlzIG5vdCBzdXBwb3J0ZWQiIGluIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBkdWUgdG8gbWlzc2luZyBxZW11IHVzZXJtb2RlIHN1cHBvcnQsIGRldGFpbHMgaW4gJXMvbG9nLmRvXyVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzY3JpcHQsIHNlbGYuZC5nZXRWYXIoJ1QnKSwgc2VsZi5kLmdldFZhcignQkJfQ1VSUkVOVFRBU0snKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wb3N0cG9uZV90b19maXJzdF9ib290KHNjcmlwdF9mdWxsKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGZhaWxlZCwgZGV0YWlscyBpbiAlcy9sb2cuZG9fJXMiICUgKHNjcmlwdCwgc2VsZi5kLmdldFZhcignVCcpLCBzZWxmLmQuZ2V0VmFyKCdCQl9DVVJSRU5UVEFTSycpKSkKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiB1cGRhdGUoc2VsZik6CkBAIC01MjMsNiArNTg3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICgnICcuam9pbihjbWQpLCBlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKKyAgICAgICAgdGFyZ2V0X2FyY2ggPSBzZWxmLmQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCisgICAgICAgIGxvY2FsZWRpciA9IG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsIHNlbGYuZC5nZXRWYXIoImxpYmRpciIpLCAibG9jYWxlIikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9jYWxlZGlyKSBhbmQgb3MubGlzdGRpcihsb2NhbGVkaXIpOgorICAgICAgICAgICAgZ2VuZXJhdGVfbG9jYWxlX2FyY2hpdmUoc2VsZi5kLCBzZWxmLnRhcmdldF9yb290ZnMsIHRhcmdldF9hcmNoLCBsb2NhbGVkaXIpCisgICAgICAgICAgICAjIEFuZCBub3cgZGVsZXRlIHRoZSBiaW5hcnkgbG9jYWxlcworICAgICAgICAgICAgc2VsZi5yZW1vdmUoZm5tYXRjaC5maWx0ZXIoc2VsZi5saXN0X2luc3RhbGxlZCgpLCAiZ2xpYmMtYmluYXJ5LWxvY2FsZWRhdGEtKiIpLCBGYWxzZSkKKwogICAgIGRlZiBkZXBsb3lfZGlyX2xvY2soc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZGVwbG95X2RpciBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJkZXBsb3lfZGlyIGlzIG5vdCBzZXQhIikKQEAgLTU1OSw3ICs2MzAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHJlcwogICAgICAgICByZXR1cm4gX2FwcGVuZCh1cmlzLCBiYXNlX3BhdGhzKQogCi1kZWYgY3JlYXRlX3BhY2thZ2VzX2RpcihkLCBycG1fcmVwb19kaXIsIGRlcGxveWRpciwgdGFza25hbWUsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzKToKK2RlZiBjcmVhdGVfcGFja2FnZXNfZGlyKGQsIHN1YnJlcG9fZGlyLCBkZXBsb3lkaXIsIHRhc2tuYW1lLCBmaWx0ZXJieWRlcGVuZGVuY2llcyk6CiAgICAgIiIiCiAgICAgR28gdGhyb3VnaCBvdXIgZG9fcGFja2FnZV93cml0ZV9YIGRlcGVuZGVuY2llcyBhbmQgaGFyZGxpbmsgdGhlIHBhY2thZ2VzIHdlIGRlcGVuZAogICAgIHVwb24gaW50byB0aGUgcmVwbyBkaXJlY3RvcnkuIFRoaXMgcHJldmVudHMgdXMgc2VlaW5nIG90aGVyIHBhY2thZ2VzIHRoYXQgbWF5CkBAIC01NzQsMTUgKzY0NSwxMyBAQAogICAgIHNlZW5kaXJzID0gc2V0KCkKICAgICBtdWx0aWxpYnMgPSB7fQogICAgCi0gICAgcnBtX3N1YnJlcG9fZGlyID0gb2UucGF0aC5qb2luKHJwbV9yZXBvX2RpciwgInJwbSIpCi0KLSAgICBiYi51dGlscy5yZW1vdmUocnBtX3N1YnJlcG9fZGlyLCByZWN1cnNlPVRydWUpCi0gICAgYmIudXRpbHMubWtkaXJoaWVyKHJwbV9zdWJyZXBvX2RpcikKKyAgICBiYi51dGlscy5yZW1vdmUoc3VicmVwb19kaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICBiYi51dGlscy5ta2RpcmhpZXIoc3VicmVwb19kaXIpCiAKICAgICAjIERldGVjdCBiaXRiYWtlIC1iIHVzYWdlCiAgICAgbm9kZXBzID0gZC5nZXRWYXIoIkJCX0xJTUlURURERVBTIikgb3IgRmFsc2UKICAgICBpZiBub2RlcHMgb3Igbm90IGZpbHRlcmJ5ZGVwZW5kZW5jaWVzOgotICAgICAgICBvZS5wYXRoLnN5bWxpbmsoZGVwbG95ZGlyLCBycG1fc3VicmVwb19kaXIsIFRydWUpCisgICAgICAgIG9lLnBhdGguc3ltbGluayhkZXBsb3lkaXIsIHN1YnJlcG9fZGlyLCBUcnVlKQogICAgICAgICByZXR1cm4KIAogICAgIHN0YXJ0ID0gTm9uZQpAQCAtNTkzLDI0ICs2NjIsMjQgQEAKICAgICAgICAgICAgIGJyZWFrCiAgICAgaWYgc3RhcnQgaXMgTm9uZToKICAgICAgICAgYmIuZmF0YWwoIkNvdWxkbid0IGZpbmQgb3Vyc2VsZiBpbiBCQl9UQVNLREVQREFUQT8iKQotICAgIHJwbWRlcHMgPSBzZXQoKQorICAgIHBrZ2RlcHMgPSBzZXQoKQogICAgIHN0YXJ0ID0gW3N0YXJ0XQogICAgIHNlZW4gPSBzZXQoc3RhcnQpCi0gICAgIyBTdXBwb3J0IGRpcmVjdCBkZXBlbmRlbmNpZXMgKGRvX3Jvb3RmcyAtPiBycG1zKQotICAgICMgb3IgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHdpdGhpbiBQTiAoZG9fcG9wdWxhdGVfc2RrX2V4dCAtPiBkb19yb290ZnMgLT4gcnBtcykKKyAgICAjIFN1cHBvcnQgZGlyZWN0IGRlcGVuZGVuY2llcyAoZG9fcm9vdGZzIC0+IGRvX3BhY2thZ2Vfd3JpdGVfWCkKKyAgICAjIG9yIGluZGlyZWN0IGRlcGVuZGVuY2llcyB3aXRoaW4gUE4gKGRvX3BvcHVsYXRlX3Nka19leHQgLT4gZG9fcm9vdGZzIC0+IGRvX3BhY2thZ2Vfd3JpdGVfWCkKICAgICB3aGlsZSBzdGFydDoKICAgICAgICAgbmV4dCA9IFtdCiAgICAgICAgIGZvciBkZXAyIGluIHN0YXJ0OgogICAgICAgICAgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YVtkZXAyXVszXToKICAgICAgICAgICAgICAgICBpZiB0YXNrZGVwZGF0YVtkZXBdWzBdICE9IHBuOgogICAgICAgICAgICAgICAgICAgICBpZiAiZG9fIiArIHRhc2tuYW1lIGluIGRlcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJwbWRlcHMuYWRkKGRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ2RlcHMuYWRkKGRlcCkKICAgICAgICAgICAgICAgICBlbGlmIGRlcCBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgICAgICAgbmV4dC5hcHBlbmQoZGVwKQogICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChkZXApCiAgICAgICAgIHN0YXJ0ID0gbmV4dAogCi0gICAgZm9yIGRlcCBpbiBycG1kZXBzOgorICAgIGZvciBkZXAgaW4gcGtnZGVwczoKICAgICAgICAgYyA9IHRhc2tkZXBkYXRhW2RlcF1bMF0KICAgICAgICAgbWFuaWZlc3QsIGQyID0gb2Uuc3N0YXRlc2lnLmZpbmRfc3N0YXRlX21hbmlmZXN0KGMsIHRhc2tkZXBkYXRhW2RlcF1bMl0sIHRhc2tuYW1lLCBkLCBtdWx0aWxpYnMpCiAgICAgICAgIGlmIG5vdCBtYW5pZmVzdDoKQEAgLTYyMCw4ICs2ODksMTIgQEAKICAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0LCAiciIpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbCBpbiBmOgogICAgICAgICAgICAgICAgIGwgPSBsLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBkZXN0ID0gbC5yZXBsYWNlKGRlcGxveWRpciwgIiIpCi0gICAgICAgICAgICAgICAgZGVzdCA9IHJwbV9zdWJyZXBvX2RpciArIGRlc3QKKyAgICAgICAgICAgICAgICBkZXBsb3lkaXIgPSBvcy5wYXRoLm5vcm1wYXRoKGRlcGxveWRpcikKKyAgICAgICAgICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdwYWNrYWdlZmVlZC1zdGFiaWxpdHknLCBkKToKKyAgICAgICAgICAgICAgICAgICAgZGVzdCA9IGwucmVwbGFjZShkZXBsb3lkaXIgKyAiLXByZWRpZmYiLCAiIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBkZXN0ID0gbC5yZXBsYWNlKGRlcGxveWRpciwgIiIpCisgICAgICAgICAgICAgICAgZGVzdCA9IHN1YnJlcG9fZGlyICsgZGVzdAogICAgICAgICAgICAgICAgIGlmIGwuZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgICAgICAgICAgaWYgZGVzdCBub3QgaW4gc2VlbmRpcnM6CiAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdCkKQEAgLTY2MywxMiArNzM2LDEyIEBACiAgICAgICAgICAgICBzZWxmLnByaW1hcnlfYXJjaCA9IHNlbGYuZC5nZXRWYXIoJ01BQ0hJTkVfQVJDSCcpCiAKICAgICAgICAgc2VsZi5ycG1fcmVwb19kaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLCBycG1fcmVwb193b3JrZGlyKQotICAgICAgICBjcmVhdGVfcGFja2FnZXNfZGlyKHNlbGYuZCwgc2VsZi5ycG1fcmVwb19kaXIsIGQuZ2V0VmFyKCJERVBMT1lfRElSX1JQTSIpLCAicGFja2FnZV93cml0ZV9ycG0iLCBmaWx0ZXJieWRlcGVuZGVuY2llcykKKyAgICAgICAgY3JlYXRlX3BhY2thZ2VzX2RpcihzZWxmLmQsIG9lLnBhdGguam9pbihzZWxmLnJwbV9yZXBvX2RpciwgInJwbSIpLCBkLmdldFZhcigiREVQTE9ZX0RJUl9SUE0iKSwgInBhY2thZ2Vfd3JpdGVfcnBtIiwgZmlsdGVyYnlkZXBlbmRlbmNpZXMpCiAKICAgICAgICAgc2VsZi5zYXZlZF9wYWNrYWdpbmdfZGF0YSA9IHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWRfcGFja2FnaW5nX2RhdGEvJXMnICUgc2VsZi50YXNrX25hbWUpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmQuZXhwYW5kKCcke1R9L3NhdmVkX3BhY2thZ2luZ19kYXRhJykpOgogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWRfcGFja2FnaW5nX2RhdGEnKSkKLSAgICAgICAgc2VsZi5wYWNrYWdpbmdfZGF0YV9kaXJzID0gWyd2YXIvbGliL3JwbScsICd2YXIvbGliL2RuZicsICd2YXIvY2FjaGUvZG5mJ10KKyAgICAgICAgc2VsZi5wYWNrYWdpbmdfZGF0YV9kaXJzID0gWydldGMvcnBtJywgJ2V0Yy9ycG1yYycsICdldGMvZG5mJywgJ3Zhci9saWIvcnBtJywgJ3Zhci9saWIvZG5mJywgJ3Zhci9jYWNoZS9kbmYnXQogICAgICAgICBzZWxmLnNvbHV0aW9uX21hbmlmZXN0ID0gc2VsZi5kLmV4cGFuZCgnJHtUfS9zYXZlZC8lc19zb2x1dGlvbicgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhc2tfbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZC5leHBhbmQoJyR7VH0vc2F2ZWQnKSk6CkBAIC02OTcsNyArNzcwLDkgQEAKICAgICAgICAgcnBtcmNjb25mZGlyID0gIiVzLyVzIiAlKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0Yy8iKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIocGxhdGZvcm1jb25mZGlyKQogICAgICAgICBvcGVuKHBsYXRmb3JtY29uZmRpciArICJwbGF0Zm9ybSIsICd3Jykud3JpdGUoIiVzLXBjLWxpbnV4IiAlIHNlbGYucHJpbWFyeV9hcmNoKQotICAgICAgICBvcGVuKHJwbXJjY29uZmRpciArICJycG1yYyIsICd3Jykud3JpdGUoImFyY2hfY29tcGF0OiAlczogJXNcbiIgJSAoc2VsZi5wcmltYXJ5X2FyY2gsIHNlbGYuYXJjaHMgaWYgbGVuKHNlbGYuYXJjaHMpID4gMCBlbHNlIHNlbGYucHJpbWFyeV9hcmNoKSkKKyAgICAgICAgd2l0aCBvcGVuKHJwbXJjY29uZmRpciArICJycG1yYyIsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoImFyY2hfY29tcGF0OiAlczogJXNcbiIgJSAoc2VsZi5wcmltYXJ5X2FyY2gsIHNlbGYuYXJjaHMgaWYgbGVuKHNlbGYuYXJjaHMpID4gMCBlbHNlIHNlbGYucHJpbWFyeV9hcmNoKSkKKyAgICAgICAgICAgIGYud3JpdGUoImJ1aWxkYXJjaF9jb21wYXQ6ICVzOiBub2FyY2hcbiIgJSBzZWxmLnByaW1hcnlfYXJjaCkKIAogICAgICAgICBvcGVuKHBsYXRmb3JtY29uZmRpciArICJtYWNyb3MiLCAndycpLndyaXRlKCIlX3RyYW5zYWN0aW9uX2NvbG9yIDdcbiIpCiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1JQTV9QUkVGRVJfRUxGX0FSQ0gnKToKQEAgLTc4OSwxMyArODY0LDEyIEBACiAgICAgICAgICAgICAgICAgZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXNbbGluZS5zcGxpdCgpWy0xXV0gPSBUcnVlCiAKICAgICAgICAgaWYgbGVuKGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzKSA+IDA6Ci0gICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX3dhcm4obGlzdChmYWlsZWRfc2NyaXB0bGV0c19wa2duYW1lcy5rZXlzKCkpLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQotICAgICAgICBmb3IgcGtnIGluIGZhaWxlZF9zY3JpcHRsZXRzX3BrZ25hbWVzLmtleXMoKToKLSAgICAgICAgICAgIHNlbGYuc2F2ZV9ycG1wb3N0aW5zdChwa2cpCisgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX2Fib3J0KGxpc3QoZmFpbGVkX3NjcmlwdGxldHNfcGtnbmFtZXMua2V5cygpKSwgc2VsZi5kLmV4cGFuZCgiJHtUfS9sb2cuZG9fJHtCQl9DVVJSRU5UVEFTS30iKSkKIAogICAgIGRlZiByZW1vdmUoc2VsZiwgcGtncywgd2l0aF9kZXBlbmRlbmNpZXMgPSBUcnVlKToKLSAgICAgICAgaWYgbGVuKHBrZ3MpID09IDA6CisgICAgICAgIGlmIG5vdCBwa2dzOgogICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgc2VsZi5fcHJlcGFyZV9wa2dfdHJhbnNhY3Rpb24oKQogCiAgICAgICAgIGlmIHdpdGhfZGVwZW5kZW5jaWVzOgpAQCAtODMyLDcgKzkwNiwxMCBAQAogICAgICAgICBmb3IgaSBpbiBzZWxmLnBhY2thZ2luZ19kYXRhX2RpcnM6CiAgICAgICAgICAgICBzb3VyY2VfZGlyID0gb2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywgaSkKICAgICAgICAgICAgIHRhcmdldF9kaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi5zYXZlZF9wYWNrYWdpbmdfZGF0YSwgaSkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzb3VyY2VfZGlyLCB0YXJnZXRfZGlyLCBzeW1saW5rcz1UcnVlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihzb3VyY2VfZGlyKToKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc291cmNlX2RpciwgdGFyZ2V0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUoc291cmNlX2Rpcik6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkyKHNvdXJjZV9kaXIsIHRhcmdldF9kaXIpCiAKICAgICBkZWYgcmVjb3ZlcnlfcGFja2FnaW5nX2RhdGEoc2VsZik6CiAgICAgICAgICMgTW92ZSB0aGUgcnBtbGliIGJhY2sKQEAgLTg0Miw5ICs5MTksMTAgQEAKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0YXJnZXRfZGlyKToKICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHRhcmdldF9kaXIsIFRydWUpCiAgICAgICAgICAgICAgICAgc291cmNlX2RpciA9IG9lLnBhdGguam9pbihzZWxmLnNhdmVkX3BhY2thZ2luZ19kYXRhLCBpKQotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzb3VyY2VfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNvdXJjZV9kaXIpOgorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weXRyZWUoc291cmNlX2RpciwgdGFyZ2V0X2Rpciwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKHNvdXJjZV9kaXIpOgorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weTIoc291cmNlX2RpciwgdGFyZ2V0X2RpcikKIAogICAgIGRlZiBsaXN0X2luc3RhbGxlZChzZWxmKToKICAgICAgICAgb3V0cHV0ID0gc2VsZi5faW52b2tlX2RuZihbInJlcG9xdWVyeSIsICItLWluc3RhbGxlZCIsICItLXF1ZXJ5Zm9ybWF0IiwgIlBhY2thZ2U6ICV7bmFtZX0gJXthcmNofSAle3ZlcnNpb259ICV7bmFtZX0tJXt2ZXJzaW9ufS0le3JlbGVhc2V9LiV7YXJjaH0ucnBtXG5EZXBlbmRlbmNpZXM6XG4le3JlcXVpcmVzfVxuUmVjb21tZW5kYXRpb25zOlxuJXtyZWNvbW1lbmRzfVxuRGVwZW5kZW5jaWVzRW5kSGVyZTpcbiJdLApAQCAtODg0LDcgKzk2Miw3IEBACiAgICAgICAgIG9zLmVudmlyb25bJ1JQTV9FVENDT05GSUdESVInXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwogCiAgICAgICAgIGRuZl9jbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoJ1BBVEgnKSwgImRuZiIpCi0gICAgICAgIHN0YW5kYXJkX2RuZl9hcmdzID0gKFsiLXYiLCAiLS1ycG12ZXJib3NpdHk9ZGVidWciXSBpZiBzZWxmLmQuZ2V0VmFyKCdST09URlNfUlBNX0RFQlVHJykgZWxzZSBbXSkgKyBbIi15IiwKKyAgICAgICAgc3RhbmRhcmRfZG5mX2FyZ3MgPSBbIi12IiwgIi0tcnBtdmVyYm9zaXR5PWRlYnVnIiwgIi15IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgb2UucGF0aC5qb2luKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0Yy9kbmYvZG5mLmNvbmYiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tc2V0b3B0PXJlcG9zZGlyPSVzIiAlKG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMveXVtLnJlcG9zLmQiKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXJlcG9mcm9tcGF0aD1vZS1yZXBvLCVzIiAlIChzZWxmLnJwbV9yZXBvX2RpciksCkBAIC04OTYsNyArOTc0LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICBpZiBwcmludF9vdXRwdXQ6Ci0gICAgICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCisgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgb3V0cHV0KQogICAgICAgICAgICAgcmV0dXJuIG91dHB1dAogICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgIGlmIHByaW50X291dHB1dDoKQEAgLTEwNjAsMTkgKzExMzgsMjIgQEAKICAgICAgICAgc2VsZi5tYXJrX3BhY2thZ2VzKCJ1bnBhY2tlZCIsIHJlZ2lzdGVyZWRfcGtncy5zcGxpdCgpKQogCiBjbGFzcyBPcGtnUE0oT3BrZ0Rwa2dQTSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIHRhcmdldF9yb290ZnMsIGNvbmZpZ19maWxlLCBhcmNocywgdGFza19uYW1lPSd0YXJnZXQnKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgdGFyZ2V0X3Jvb3RmcywgY29uZmlnX2ZpbGUsIGFyY2hzLCB0YXNrX25hbWU9J3RhcmdldCcsIGlwa19yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIiwgZmlsdGVyYnlkZXBlbmRlbmNpZXM9VHJ1ZSwgcHJlcGFyZV9pbmRleD1UcnVlKToKICAgICAgICAgc3VwZXIoT3BrZ1BNLCBzZWxmKS5fX2luaXRfXyhkLCB0YXJnZXRfcm9vdGZzKQogCiAgICAgICAgIHNlbGYuY29uZmlnX2ZpbGUgPSBjb25maWdfZmlsZQogICAgICAgICBzZWxmLnBrZ19hcmNocyA9IGFyY2hzCiAgICAgICAgIHNlbGYudGFza19uYW1lID0gdGFza19uYW1lCiAKLSAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gc2VsZi5kLmdldFZhcigiREVQTE9ZX0RJUl9JUEsiKQorICAgICAgICBzZWxmLmRlcGxveV9kaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLCBpcGtfcmVwb193b3JrZGlyKQogICAgICAgICBzZWxmLmRlcGxveV9sb2NrX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyLCAiZGVwbG95LmxvY2siKQogICAgICAgICBzZWxmLm9wa2dfY21kID0gYmIudXRpbHMud2hpY2gob3MuZ2V0ZW52KCdQQVRIJyksICJvcGtnIikKICAgICAgICAgc2VsZi5vcGtnX2FyZ3MgPSAiLS12b2xhdGlsZS1jYWNoZSAtZiAlcyAtdCAlcyAtbyAlcyAiICUgKHNlbGYuY29uZmlnX2ZpbGUsIHNlbGYuZC5leHBhbmQoJyR7VH0vaXBrdGVtcC8nKSAsdGFyZ2V0X3Jvb3RmcykKICAgICAgICAgc2VsZi5vcGtnX2FyZ3MgKz0gc2VsZi5kLmdldFZhcigiT1BLR19BUkdTIikKIAorICAgICAgICBpZiBwcmVwYXJlX2luZGV4OgorICAgICAgICAgICAgY3JlYXRlX3BhY2thZ2VzX2RpcihzZWxmLmQsIHNlbGYuZGVwbG95X2RpciwgZC5nZXRWYXIoIkRFUExPWV9ESVJfSVBLIiksICJwYWNrYWdlX3dyaXRlX2lwayIsIGZpbHRlcmJ5ZGVwZW5kZW5jaWVzKQorCiAgICAgICAgIG9wa2dfbGliX2RpciA9IHNlbGYuZC5nZXRWYXIoJ09QS0dMSUJESVInKQogICAgICAgICBpZiBvcGtnX2xpYl9kaXJbMF0gPT0gIi8iOgogICAgICAgICAgICAgb3BrZ19saWJfZGlyID0gb3BrZ19saWJfZGlyWzE6XQpAQCAtMTI0NSw3ICsxMzI2LDExIEBACiAgICAgICAgIGlmIG5vdCBwa2dzOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgY21kID0gIiVzICVzIGluc3RhbGwgJXMiICUgKHNlbGYub3BrZ19jbWQsIHNlbGYub3BrZ19hcmdzLCAnICcuam9pbihwa2dzKSkKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLm9wa2dfY21kLCBzZWxmLm9wa2dfYXJncykKKyAgICAgICAgZm9yIGV4Y2x1ZGUgaW4gKHNlbGYuZC5nZXRWYXIoIlBBQ0tBR0VfRVhDTFVERSIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgY21kICs9ICIgLS1hZGQtZXhjbHVkZSAlcyIgJSBleGNsdWRlCisgICAgICAgIGNtZCArPSAiIGluc3RhbGwgIgorICAgICAgICBjbWQgKz0gIiAiLmpvaW4ocGtncykKIAogICAgICAgICBvcy5lbnZpcm9uWydEJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKICAgICAgICAgb3MuZW52aXJvblsnT0ZGTElORV9ST09UJ10gPSBzZWxmLnRhcmdldF9yb290ZnMKQEAgLTEyNjUsMTMgKzEzNTAsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgYmIud2FybihsaW5lKQogICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcGtncy5hcHBlbmQobGluZS5zcGxpdCgiLiIpWzBdKQogICAgICAgICAgICAgaWYgZmFpbGVkX3BrZ3M6Ci0gICAgICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c193YXJuKGZhaWxlZF9wa2dzLCBzZWxmLmQuZXhwYW5kKCIke1R9L2xvZy5kb18ke0JCX0NVUlJFTlRUQVNLfSIpKQorICAgICAgICAgICAgICAgIGZhaWxlZF9wb3N0aW5zdHNfYWJvcnQoZmFpbGVkX3BrZ3MsIHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvXyR7QkJfQ1VSUkVOVFRBU0t9IikpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgKGJiLmZhdGFsLCBiYi53YXJuKVthdHRlbXB0X29ubHldKCJVbmFibGUgdG8gaW5zdGFsbCBwYWNrYWdlcy4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tYW5kICclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKIAogICAgIGRlZiByZW1vdmUoc2VsZiwgcGtncywgd2l0aF9kZXBlbmRlbmNpZXM9VHJ1ZSk6CisgICAgICAgIGlmIG5vdCBwa2dzOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgaWYgd2l0aF9kZXBlbmRlbmNpZXM6CiAgICAgICAgICAgICBjbWQgPSAiJXMgJXMgLS1mb3JjZS1yZW1vdmUgLS1mb3JjZS1yZW1vdmFsLW9mLWRlcGVuZGVudC1wYWNrYWdlcyByZW1vdmUgJXMiICUgXAogICAgICAgICAgICAgICAgIChzZWxmLm9wa2dfY21kLCBzZWxmLm9wa2dfYXJncywgJyAnLmpvaW4ocGtncykpCkBAIC0xNDM3LDkgKzE1MjUsMTIgQEAKICAgICAgICAgcmV0dXJuIHRtcF9kaXIKIAogY2xhc3MgRHBrZ1BNKE9wa2dEcGtnUE0pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBhcmNocywgYmFzZV9hcmNocywgYXB0X2NvbmZfZGlyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCB0YXJnZXRfcm9vdGZzLCBhcmNocywgYmFzZV9hcmNocywgYXB0X2NvbmZfZGlyPU5vbmUsIGRlYl9yZXBvX3dvcmtkaXI9Im9lLXJvb3Rmcy1yZXBvIiwgZmlsdGVyYnlkZXBlbmRlbmNpZXM9VHJ1ZSk6CiAgICAgICAgIHN1cGVyKERwa2dQTSwgc2VsZikuX19pbml0X18oZCwgdGFyZ2V0X3Jvb3RmcykKLSAgICAgICAgc2VsZi5kZXBsb3lfZGlyID0gc2VsZi5kLmdldFZhcignREVQTE9ZX0RJUl9ERUInKQorICAgICAgICBzZWxmLmRlcGxveV9kaXIgPSBvZS5wYXRoLmpvaW4oc2VsZi5kLmdldFZhcignV09SS0RJUicpLCBkZWJfcmVwb193b3JrZGlyKQorCisgICAgICAgIGNyZWF0ZV9wYWNrYWdlc19kaXIoc2VsZi5kLCBzZWxmLmRlcGxveV9kaXIsIGQuZ2V0VmFyKCJERVBMT1lfRElSX0RFQiIpLCAicGFja2FnZV93cml0ZV9kZWIiLCBmaWx0ZXJieWRlcGVuZGVuY2llcykKKwogICAgICAgICBpZiBhcHRfY29uZl9kaXIgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuYXB0X2NvbmZfZGlyID0gc2VsZi5kLmV4cGFuZCgiJHtBUFRDT05GX1RBUkdFVH0vYXB0IikKICAgICAgICAgZWxzZToKQEAgLTE1MTUsNyArMTYwNiw2IEBACiAgICAgICAgIG9zLmVudmlyb25bJ0lOVEVSQ0VQVF9ESVInXSA9IHNlbGYuaW50ZXJjZXB0c19kaXIKICAgICAgICAgb3MuZW52aXJvblsnTkFUSVZFX1JPT1QnXSA9IHNlbGYuZC5nZXRWYXIoJ1NUQUdJTkdfRElSX05BVElWRScpCiAKLSAgICAgICAgZmFpbGVkX3BrZ3MgPSBbXQogICAgICAgICBmb3IgcGtnX25hbWUgaW4gaW5zdGFsbGVkX3BrZ3M6CiAgICAgICAgICAgICBmb3IgY29udHJvbF9zY3JpcHQgaW4gY29udHJvbF9zY3JpcHRzOgogICAgICAgICAgICAgICAgIHBfZnVsbCA9IG9zLnBhdGguam9pbihpbmZvX2RpciwgcGtnX25hbWUgKyBjb250cm9sX3NjcmlwdC5zdWZmaXgpCkBAIC0xNTMwLDEyICsxNjIwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIiVzIGZvciBwYWNrYWdlICVzIGZhaWxlZCB3aXRoICVkOlxuJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRyb2xfc2NyaXB0Lm5hbWUsIHBrZ19uYW1lLCBlLnJldHVybmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQotICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkX3Bvc3RpbnN0c193YXJuKFtwa2dfbmFtZV0sIHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvXyR7QkJfQ1VSUkVOVFRBU0t9IikpCi0gICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcGtncy5hcHBlbmQocGtnX25hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIGlmIGxlbihmYWlsZWRfcGtncyk6Ci0gICAgICAgICAgICBzZWxmLm1hcmtfcGFja2FnZXMoInVucGFja2VkIiwgZmFpbGVkX3BrZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZWRfcG9zdGluc3RzX2Fib3J0KFtwa2dfbmFtZV0sIHNlbGYuZC5leHBhbmQoIiR7VH0vbG9nLmRvXyR7QkJfQ1VSUkVOVFRBU0t9IikpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYpOgogICAgICAgICBvcy5lbnZpcm9uWydBUFRfQ09ORklHJ10gPSBzZWxmLmFwdF9jb25mX2ZpbGUKQEAgLTE1ODUsNiArMTY3MCw5IEBACiAKIAogICAgIGRlZiByZW1vdmUoc2VsZiwgcGtncywgd2l0aF9kZXBlbmRlbmNpZXM9VHJ1ZSk6CisgICAgICAgIGlmIG5vdCBwa2dzOgorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgaWYgd2l0aF9kZXBlbmRlbmNpZXM6CiAgICAgICAgICAgICBvcy5lbnZpcm9uWydBUFRfQ09ORklHJ10gPSBzZWxmLmFwdF9jb25mX2ZpbGUKICAgICAgICAgICAgIGNtZCA9ICIlcyBwdXJnZSAlcyIgJSAoc2VsZi5hcHRfZ2V0X2NtZCwgJyAnLmpvaW4ocGtncykpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQppbmRleCBhZjdhYTUyLi5lMGYwNjA0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKQEAgLTIxLDYgKzIxLDcgQEAKIAogZGVmIHJ1bmNtZChhcmdzLCBkaXIgPSBOb25lKToKICAgICBpbXBvcnQgcGlwZXMKKyAgICBpbXBvcnQgc3VicHJvY2VzcwogCiAgICAgaWYgZGlyOgogICAgICAgICBvbGRkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MuY3VyZGlyKQpAQCAtMzMsNyArMzQsNyBAQAogICAgICAgICBhcmdzID0gWyBwaXBlcy5xdW90ZShzdHIoYXJnKSkgZm9yIGFyZyBpbiBhcmdzIF0KICAgICAgICAgY21kID0gIiAiLmpvaW4oYXJncykKICAgICAgICAgIyBwcmludCgiY21kOiAlcyIgJSBjbWQpCi0gICAgICAgIChleGl0c3RhdHVzLCBvdXRwdXQpID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCkKKyAgICAgICAgKGV4aXRzdGF0dXMsIG91dHB1dCkgPSBzdWJwcm9jZXNzLmdldHN0YXR1c291dHB1dChjbWQpCiAgICAgICAgIGlmIGV4aXRzdGF0dXMgIT0gMDoKICAgICAgICAgICAgIHJhaXNlIENtZEVycm9yKGNtZCwgZXhpdHN0YXR1cyA+PiA4LCBvdXRwdXQpCiAgICAgICAgIGlmICIgZnV6eiAiIGluIG91dHB1dDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQppbmRleCA3NmM1OGZhLi4xZTI0ZDA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CkBAIC04Niw3ICs4Niw3IEBACiAgICAgIyBUaGlzIHdheSB3ZSBhbHNvIHByZXNlcnZlIGhhcmRsaW5rcyBiZXR3ZWVuIGZpbGVzIGluIHRoZSB0cmVlLgogCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdCkKLSAgICBjbWQgPSAidGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1DICVzIC1wIC4gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhmIC0gLUMgJXMiICUgKHNyYywgZHN0KQorICAgIGNtZCA9ICJ0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLWNmIC0gLVMgLUMgJXMgLXAgLiB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGYgLSAtQyAlcyIgJSAoc3JjLCBkc3QpCiAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAKIGRlZiBjb3B5aGFyZGxpbmt0cmVlKHNyYywgZHN0KToKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBpZiAob3Muc3RhdChzcmMpLnN0X2RldiA9PSAgb3Muc3RhdChkc3QpLnN0X2Rldik6CiAgICAgICAgICMgTmVlZCB0byBjb3B5IGRpcmVjdG9yaWVzIG9ubHkgd2l0aCB0YXIgZmlyc3Qgc2luY2UgY3Agd2lsbCBlcnJvciBpZiB0d28gCiAgICAgICAgICMgd3JpdGVycyB0cnkgYW5kIGNyZWF0ZSBhIGRpcmVjdG9yeSBhdCB0aGUgc2FtZSB0aW1lCi0gICAgICAgIGNtZCA9ICJjZCAlczsgZmluZCAuIC10eXBlIGQgLXByaW50IHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1DICVzIC1wIC0tbm8tcmVjdXJzaW9uIC0tZmlsZXMtZnJvbSAtIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14aGYgLSAtQyAlcyIgJSAoc3JjLCBzcmMsIGRzdCkKKyAgICAgICAgY21kID0gImNkICVzOyBmaW5kIC4gLXR5cGUgZCAtcHJpbnQgfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLWNmIC0gLVMgLUMgJXMgLXAgLS1uby1yZWN1cnNpb24gLS1maWxlcy1mcm9tIC0gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhoZiAtIC1DICVzIiAlIChzcmMsIHNyYywgZHN0KQogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKICAgICAgICAgc291cmNlID0gJycKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgpAQCAtMjU5LDMgKzI1OSwzNyBAQAogICAgICAgICBpZiBub3QgcGF0aF9hYnMuc3RhcnRzd2l0aChwb3NzaWJsZV9wYXJlbnRfYWJzKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBUcnVlCisKK2RlZiB3aGljaF93aWxkKHBhdGhuYW1lLCBwYXRoPU5vbmUsIG1vZGU9b3MuRl9PSywgKiwgcmV2ZXJzZT1GYWxzZSwgY2FuZGlkYXRlcz1GYWxzZSk6CisgICAgIiIiU2VhcmNoIGEgc2VhcmNoIHBhdGggZm9yIHBhdGhuYW1lLCBzdXBwb3J0aW5nIHdpbGRjYXJkcy4KKworICAgIFJldHVybiBhbGwgcGF0aHMgaW4gdGhlIHNwZWNpZmljIHNlYXJjaCBwYXRoIG1hdGNoaW5nIHRoZSB3aWxkY2FyZCBwYXR0ZXJuCisgICAgaW4gcGF0aG5hbWUsIHJldHVybmluZyBvbmx5IHRoZSBmaXJzdCBlbmNvdW50ZXJlZCBmb3IgZWFjaCBmaWxlLiBJZgorICAgIGNhbmRpZGF0ZXMgaXMgVHJ1ZSwgaW5mb3JtYXRpb24gb24gYWxsIHBvdGVudGlhbCBjYW5kaWRhdGUgcGF0aHMgYXJlCisgICAgaW5jbHVkZWQuCisgICAgIiIiCisgICAgcGF0aHMgPSAocGF0aCBvciBvcy5lbnZpcm9uLmdldCgnUEFUSCcsIG9zLmRlZnBhdGgpKS5zcGxpdCgnOicpCisgICAgaWYgcmV2ZXJzZToKKyAgICAgICAgcGF0aHMucmV2ZXJzZSgpCisKKyAgICBzZWVuLCBmaWxlcyA9IHNldCgpLCBbXQorICAgIGZvciBpbmRleCwgZWxlbWVudCBpbiBlbnVtZXJhdGUocGF0aHMpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2FicyhlbGVtZW50KToKKyAgICAgICAgICAgIGVsZW1lbnQgPSBvcy5wYXRoLmFic3BhdGgoZWxlbWVudCkKKworICAgICAgICBjYW5kaWRhdGUgPSBvcy5wYXRoLmpvaW4oZWxlbWVudCwgcGF0aG5hbWUpCisgICAgICAgIGdsb2JiZWQgPSBnbG9iLmdsb2IoY2FuZGlkYXRlKQorICAgICAgICBpZiBnbG9iYmVkOgorICAgICAgICAgICAgZm9yIGZvdW5kX3BhdGggaW4gc29ydGVkKGdsb2JiZWQpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5hY2Nlc3MoZm91bmRfcGF0aCwgbW9kZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcmVsID0gb3MucGF0aC5yZWxwYXRoKGZvdW5kX3BhdGgsIGVsZW1lbnQpCisgICAgICAgICAgICAgICAgaWYgcmVsIG5vdCBpbiBzZWVuOgorICAgICAgICAgICAgICAgICAgICBzZWVuLmFkZChyZWwpCisgICAgICAgICAgICAgICAgICAgIGlmIGNhbmRpZGF0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoKGZvdW5kX3BhdGgsIFtvcy5wYXRoLmpvaW4ocCwgcmVsKSBmb3IgcCBpbiBwYXRoc1s6aW5kZXgrMV1dKSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFwcGVuZChmb3VuZF9wYXRoKQorCisgICAgcmV0dXJuIGZpbGVzCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcWEucHkgYi9wb2t5L21ldGEvbGliL29lL3FhLnB5CmluZGV4IDMyMzFlNjAuLjU5YzcyY2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9xYS5weQpAQCAtMTU4LDcgKzE1OCw4IEBACiAgICAgICAgICAgICAweDJBOiAiU3VwZXJIIiwKICAgICAgICAgICAgIDB4MzI6ICJJQS02NCIsCiAgICAgICAgICAgICAweDNFOiAieDg2LTY0IiwKLSAgICAgICAgICAgIDB4Qjc6ICJBQXJjaDY0IgorICAgICAgICAgICAgMHhCNzogIkFBcmNoNjQiLAorICAgICAgICAgICAgMHhGNzogIkJQRiIKICAgICAgICAgfVttYWNoaW5lXQogICAgIGV4Y2VwdDoKICAgICAgICAgcmV0dXJuICJVbmtub3duICglcykiICUgcmVwcihtYWNoaW5lKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkgYi9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQppbmRleCBjMTU2NjA3Li5lNTUxMmQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQpAQCAtMTQ0LDYgKzE0NCwyMCBAQAogICAgICAgICBiYi5ub3RlKCIgIEluc3RhbGwgY29tcGxlbWVudGFyeSAnKi1kYmcnIHBhY2thZ2VzLi4uIikKICAgICAgICAgc2VsZi5wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoJyotZGJnJykKIAorICAgICAgICBpZiBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGgtc3JjcGtnJzoKKyAgICAgICAgICAgIGJiLm5vdGUoIiAgSW5zdGFsbCBjb21wbGVtZW50YXJ5ICcqLXNyYycgcGFja2FnZXMuLi4iKQorICAgICAgICAgICAgc2VsZi5wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoJyotc3JjJykKKworICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBhZGRpdGlvbmFsIGRlYnVnIHBhY2thZ2VzLiBQb3NzaWJpbGl0eSB0byBpbnN0YWxsIGFkZGl0aW9uYWwgcGFja2FnZXMsCisgICAgICAgIHdoaWNoIGFyZSBub3QgYXV0b21hdGljYWxseSBpbnN0YWxsZWQgYXMgY29tcGxlbWVudGFyeSBwYWNrYWdlIG9mCisgICAgICAgIHN0YW5kYXJkIG9uZSwgZS5nLiBkZWJ1ZyBwYWNrYWdlIG9mIHN0YXRpYyBsaWJyYXJpZXMuCisgICAgICAgICIiIgorICAgICAgICBleHRyYV9kZWJ1Z19wa2dzID0gc2VsZi5kLmdldFZhcignSU1BR0VfSU5TVEFMTF9ERUJVR0ZTJykKKyAgICAgICAgaWYgZXh0cmFfZGVidWdfcGtnczoKKyAgICAgICAgICAgIGJiLm5vdGUoIiAgSW5zdGFsbCBleHRyYSBkZWJ1ZyBwYWNrYWdlcy4uLiIpCisgICAgICAgICAgICBzZWxmLnBtLmluc3RhbGwoZXh0cmFfZGVidWdfcGtncy5zcGxpdCgpLCBUcnVlKQorCiAgICAgICAgIGJiLm5vdGUoIiAgUmVuYW1lIGRlYnVnIHJvb3Rmcy4uLiIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5pbWFnZV9yb290ZnMgKyAnLWRiZycpCkBAIC00NzIsNyArNDg2LDggQEAKICAgICAgICAgc2VsZi5fbG9nX2NoZWNrX2Vycm9yKCkKIAogICAgIGRlZiBfY2xlYW51cChzZWxmKToKLSAgICAgICAgc2VsZi5wbS5faW52b2tlX2RuZihbImNsZWFuIiwgImFsbCJdKQorICAgICAgICBpZiBiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwgVHJ1ZSwgRmFsc2UsIHNlbGYuZCk6CisgICAgICAgICAgICBzZWxmLnBtLl9pbnZva2VfZG5mKFsiY2xlYW4iLCAiYWxsIl0pCiAKIAogY2xhc3MgRHBrZ09wa2dSb290ZnMoUm9vdGZzKToKQEAgLTU2MCw2ICs1NzUsOSBAQAogICAgICAgICByZXR1cm4gcGtnX2xpc3QKIAogICAgIGRlZiBfc2F2ZV9wb3N0aW5zdHNfY29tbW9uKHNlbGYsIGRzdF9wb3N0aW5zdF9kaXIsIHNyY19wb3N0aW5zdF9kaXIpOgorICAgICAgICBpZiBiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicGFja2FnZS1tYW5hZ2VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwgc2VsZi5kKToKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBudW0gPSAwCiAgICAgICAgIGZvciBwIGluIHNlbGYuX2dldF9kZWxheWVkX3Bvc3RpbnN0cygpOgogICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdF9wb3N0aW5zdF9kaXIpCkBAIC03ODIsNyArODAwLDcgQEAKICAgICAgICAgICAgIG1sX29wa2dfY29uZiA9IG9zLnBhdGguam9pbihtbF90ZW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgKyAiLSIgKyBvcy5wYXRoLmJhc2VuYW1lKHNlbGYub3BrZ19jb25mKSkKIAotICAgICAgICAgICAgbWxfcG0gPSBPcGtnUE0oc2VsZi5kLCBtbF90YXJnZXRfcm9vdGZzLCBtbF9vcGtnX2NvbmYsIHNlbGYucGtnX2FyY2hzKQorICAgICAgICAgICAgbWxfcG0gPSBPcGtnUE0oc2VsZi5kLCBtbF90YXJnZXRfcm9vdGZzLCBtbF9vcGtnX2NvbmYsIHNlbGYucGtnX2FyY2hzLCBwcmVwYXJlX2luZGV4PUZhbHNlKQogCiAgICAgICAgICAgICBtbF9wbS51cGRhdGUoKQogICAgICAgICAgICAgbWxfcG0uaW5zdGFsbChwa2dzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9zZGsucHkgYi9wb2t5L21ldGEvbGliL29lL3Nkay5weQppbmRleCBkNmE1MDMzLi4xNTNiMDdkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3Nkay5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3Nkay5weQpAQCAtNyw1MiArNyw2IEBACiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRyYWNlYmFjawogCi1kZWYgZ2VuZXJhdGVfbG9jYWxlX2FyY2hpdmUoZCwgcm9vdGZzKToKLSAgICAjIFByZXR0eSBzdXJlIHdlIGRvbid0IG5lZWQgdGhpcyBmb3IgU0RLIGFyY2hpdmUgZ2VuZXJhdGlvbiBidXQKLSAgICAjIGtlZXBpbmcgaXQgdG8gYmUgc2FmZS4uLgotICAgIHRhcmdldF9hcmNoID0gZC5nZXRWYXIoJ1NES19BUkNIJykKLSAgICBsb2NhbGVfYXJjaF9vcHRpb25zID0geyBcCi0gICAgICAgICJhcm0iOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCi0gICAgICAgICJhcm1lYiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgImFhcmNoNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCi0gICAgICAgICJhYXJjaDY0X2JlIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAotICAgICAgICAic2g0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAotICAgICAgICAicG93ZXJwYyI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgInBvd2VycGM2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHMiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCi0gICAgICAgICJtaXBzaXNhMzJyNiI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHM2NCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWJpZy1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHNpc2E2NHI2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAotICAgICAgICAibWlwc2VsIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAibWlwc2lzYTMycjZlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKLSAgICAgICAgIm1pcHM2NGVsIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAibWlwc2lzYTY0cjZlbCI6IFsiLS11aW50MzItYWxpZ249NCIsICItLWxpdHRsZS1lbmRpYW4iXSwKLSAgICAgICAgImk1ODYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCi0gICAgICAgICJpNjg2IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdLAotICAgICAgICAieDg2XzY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tbGl0dGxlLWVuZGlhbiJdCi0gICAgfQotICAgIGlmIHRhcmdldF9hcmNoIGluIGxvY2FsZV9hcmNoX29wdGlvbnM6Ci0gICAgICAgIGFyY2hfb3B0aW9ucyA9IGxvY2FsZV9hcmNoX29wdGlvbnNbdGFyZ2V0X2FyY2hdCi0gICAgZWxzZToKLSAgICAgICAgYmIuZXJyb3IoImxvY2FsZV9hcmNoX29wdGlvbnMgbm90IGZvdW5kIGZvciB0YXJnZXRfYXJjaD0iICsgdGFyZ2V0X2FyY2gpCi0gICAgICAgIGJiLmZhdGFsKCJ1bmtub3duIGFyY2g6IiArIHRhcmdldF9hcmNoICsgIiBmb3IgbG9jYWxlX2FyY2hfb3B0aW9ucyIpCi0KLSAgICBsb2NhbGVkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBkLmdldFZhcigibGliZGlyX25hdGl2ZXNkayIpLCAibG9jYWxlIikKLSAgICAjIE5lZWQgdG8gc2V0IHRoaXMgc28gY3Jvc3MtbG9jYWxlZGVmIGtub3dzIHdoZXJlIHRoZSBhcmNoaXZlIGlzCi0gICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQotICAgIGVudlsiTE9DQUxFQVJDSElWRSJdID0gb2UucGF0aC5qb2luKGxvY2FsZWRpciwgImxvY2FsZS1hcmNoaXZlIikKLQotICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIobG9jYWxlZGlyKToKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihsb2NhbGVkaXIsIG5hbWUpCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY21kID0gWyJjcm9zcy1sb2NhbGVkZWYiLCAiLS12ZXJib3NlIl0KLSAgICAgICAgICAgICAgICBjbWQgKz0gYXJjaF9vcHRpb25zCi0gICAgICAgICAgICAgICAgY21kICs9IFsiLS1hZGQtdG8tYXJjaGl2ZSIsIHBhdGhdCi0gICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52LCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgYmIuZmF0YWwoIkNhbm5vdCBjcmVhdGUgbG9jYWxlIGFyY2hpdmU6ICVzIiAlIGUub3V0cHV0KQotCiBjbGFzcyBTZGsob2JqZWN0LCBtZXRhY2xhc3M9QUJDTWV0YSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGQsIG1hbmlmZXN0X2Rpcik6CiAgICAgICAgIHNlbGYuZCA9IGQKQEAgLTE0NCw3ICs5OCwxMCBAQAogICAgICAgICAgICAgICAgIGZvciBsYW5nIGluIGxpbmd1YXMuc3BsaXQoKToKICAgICAgICAgICAgICAgICAgICAgcG0uaW5zdGFsbCgibmF0aXZlc2RrLWdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLSVzLnV0Zi04IiAlIGxhbmcpCiAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgbG9jYWxlIGFyY2hpdmUgb2YgdGhlbQotICAgICAgICAgICAgZ2VuZXJhdGVfbG9jYWxlX2FyY2hpdmUoc2VsZi5kLCBvZS5wYXRoLmpvaW4oc2VsZi5zZGtfaG9zdF9zeXNyb290LCBzZWxmLnNka19uYXRpdmVfcGF0aCkpCisgICAgICAgICAgICB0YXJnZXRfYXJjaCA9IHNlbGYuZC5nZXRWYXIoJ1NES19BUkNIJykKKyAgICAgICAgICAgIHJvb3RmcyA9IG9lLnBhdGguam9pbihzZWxmLnNka19ob3N0X3N5c3Jvb3QsIHNlbGYuc2RrX25hdGl2ZV9wYXRoKQorICAgICAgICAgICAgbG9jYWxlZGlyID0gb2UucGF0aC5qb2luKHJvb3Rmcywgc2VsZi5kLmdldFZhcigibGliZGlyX25hdGl2ZXNkayIpLCAibG9jYWxlIikKKyAgICAgICAgICAgIGdlbmVyYXRlX2xvY2FsZV9hcmNoaXZlKHNlbGYuZCwgcm9vdGZzLCB0YXJnZXRfYXJjaCwgbG9jYWxlZGlyKQogICAgICAgICAgICAgIyBBbmQgbm93IGRlbGV0ZSB0aGUgYmluYXJ5IGxvY2FsZXMKICAgICAgICAgICAgIHBrZ3MgPSBmbm1hdGNoLmZpbHRlcihwbS5saXN0X2luc3RhbGxlZCgpLCAibmF0aXZlc2RrLWdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLSoudXRmLTgiKQogICAgICAgICAgICAgcG0ucmVtb3ZlKHBrZ3MpCkBAIC0yMDksNyArMTY2LDcgQEAKIAogICAgICAgICBzZWxmLnRhcmdldF9wbS5pbnN0YWxsX2NvbXBsZW1lbnRhcnkoc2VsZi5kLmdldFZhcignU0RLSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJykpCiAKLSAgICAgICAgc2VsZi50YXJnZXRfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cyhwb3B1bGF0ZV9zZGs9J3RhcmdldCcpCiAKICAgICAgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKHNlbGYuZCwgc2VsZi5kLmdldFZhcigiUE9QVUxBVEVfU0RLX1BPU1RfVEFSR0VUX0NPTU1BTkQiKSkKIApAQCAtMjIwLDcgKzE3Nyw3IEBACiAgICAgICAgIHNlbGYuX3BvcHVsYXRlX3N5c3Jvb3Qoc2VsZi5ob3N0X3BtLCBzZWxmLmhvc3RfbWFuaWZlc3QpCiAgICAgICAgIHNlbGYuaW5zdGFsbF9sb2NhbGVzKHNlbGYuaG9zdF9wbSkKIAotICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMoKQorICAgICAgICBzZWxmLmhvc3RfcG0ucnVuX2ludGVyY2VwdHMocG9wdWxhdGVfc2RrPSdob3N0JykKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkQiKSkKIApAQCAtMjcwLDExICsyMjcsMTcgQEAKICAgICAgICAgc2VsZi5ob3N0X21hbmlmZXN0ID0gT3BrZ01hbmlmZXN0KGQsIHNlbGYubWFuaWZlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuaWZlc3QuTUFOSUZFU1RfVFlQRV9TREtfSE9TVCkKIAorICAgICAgICBpcGtfcmVwb193b3JrZGlyID0gIm9lLXNkay1yZXBvIgorICAgICAgICBpZiAic2RrX2V4dCIgaW4gZC5nZXRWYXIoIkJCX1JVTlRBU0siKToKKyAgICAgICAgICAgIGlwa19yZXBvX3dvcmtkaXIgPSAib2Utc2RrLWV4dC1yZXBvIgorCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtID0gT3BrZ1BNKGQsIHNlbGYuc2RrX3RhcmdldF9zeXNyb290LCBzZWxmLnRhcmdldF9jb25mLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBrX3JlcG9fd29ya2Rpcj1pcGtfcmVwb193b3JrZGlyKQogCiAgICAgICAgIHNlbGYuaG9zdF9wbSA9IE9wa2dQTShkLCBzZWxmLnNka19ob3N0X3N5c3Jvb3QsIHNlbGYuaG9zdF9jb25mLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiU0RLX1BBQ0tBR0VfQVJDSFMiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoIlNES19QQUNLQUdFX0FSQ0hTIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwa19yZXBvX3dvcmtkaXI9aXBrX3JlcG9fd29ya2RpcikKIAogICAgIGRlZiBfcG9wdWxhdGVfc3lzcm9vdChzZWxmLCBwbSwgbWFuaWZlc3QpOgogICAgICAgICBwa2dzX3RvX2luc3RhbGwgPSBtYW5pZmVzdC5wYXJzZV9pbml0aWFsX21hbmlmZXN0KCkKQEAgLTI5Nyw3ICsyNjAsNyBAQAogCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtLmluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLmQuZ2V0VmFyKCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKSkKIAotICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cygpCisgICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKHBvcHVsYXRlX3Nkaz0ndGFyZ2V0JykKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCIpKQogCkBAIC0zMDgsNyArMjcxLDcgQEAKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi5pbnN0YWxsX2xvY2FsZXMoc2VsZi5ob3N0X3BtKQogCi0gICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cygpCisgICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cyhwb3B1bGF0ZV9zZGs9J2hvc3QnKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCIpKQogCkBAIC0zNTAsMTUgKzMxMywyMSBAQAogICAgICAgICBzZWxmLmhvc3RfbWFuaWZlc3QgPSBEcGtnTWFuaWZlc3QoZCwgc2VsZi5tYW5pZmVzdF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5pZmVzdC5NQU5JRkVTVF9UWVBFX1NES19IT1NUKQogCisgICAgICAgIGRlYl9yZXBvX3dvcmtkaXIgPSAib2Utc2RrLXJlcG8iCisgICAgICAgIGlmICJzZGtfZXh0IiBpbiBkLmdldFZhcigiQkJfUlVOVEFTSyIpOgorICAgICAgICAgICAgZGViX3JlcG9fd29ya2RpciA9ICJvZS1zZGstZXh0LXJlcG8iCisKICAgICAgICAgc2VsZi50YXJnZXRfcG0gPSBEcGtnUE0oZCwgc2VsZi5zZGtfdGFyZ2V0X3N5c3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoIlBBQ0tBR0VfQVJDSFMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiRFBLR19BUkNIIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X2NvbmZfZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldF9jb25mX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGViX3JlcG9fd29ya2Rpcj1kZWJfcmVwb193b3JrZGlyKQogCiAgICAgICAgIHNlbGYuaG9zdF9wbSA9IERwa2dQTShkLCBzZWxmLnNka19ob3N0X3N5c3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCJTREtfUEFDS0FHRV9BUkNIUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kLmdldFZhcigiREVCX1NES19BUkNIIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RfY29uZl9kaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RfY29uZl9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJfcmVwb193b3JrZGlyPWRlYl9yZXBvX3dvcmtkaXIpCiAKICAgICBkZWYgX2NvcHlfYXB0X2Rpcl90byhzZWxmLCBkc3RfZGlyKToKICAgICAgICAgc3RhZ2luZ19ldGNkaXJfbmF0aXZlID0gc2VsZi5kLmdldFZhcigiU1RBR0lOR19FVENESVJfTkFUSVZFIikKQEAgLTM4Niw3ICszNTUsNyBAQAogCiAgICAgICAgIHNlbGYudGFyZ2V0X3BtLmluc3RhbGxfY29tcGxlbWVudGFyeShzZWxmLmQuZ2V0VmFyKCdTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlknKSkKIAotICAgICAgICBzZWxmLnRhcmdldF9wbS5ydW5faW50ZXJjZXB0cygpCisgICAgICAgIHNlbGYudGFyZ2V0X3BtLnJ1bl9pbnRlcmNlcHRzKHBvcHVsYXRlX3Nkaz0ndGFyZ2V0JykKIAogICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCIpKQogCkBAIC0zOTksNyArMzY4LDcgQEAKICAgICAgICAgc2VsZi5fcG9wdWxhdGVfc3lzcm9vdChzZWxmLmhvc3RfcG0sIHNlbGYuaG9zdF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi5pbnN0YWxsX2xvY2FsZXMoc2VsZi5ob3N0X3BtKQogCi0gICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cygpCisgICAgICAgIHNlbGYuaG9zdF9wbS5ydW5faW50ZXJjZXB0cyhwb3B1bGF0ZV9zZGs9J2hvc3QnKQogCiAgICAgICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhzZWxmLmQsIHNlbGYuZC5nZXRWYXIoIlBPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCIpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weSBiL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CmluZGV4IGI4MmUwZjQuLjE4YzVhMzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKICAgICAjIGFsbGFyY2ggcGFja2FnZWdyb3VwcyBhcmUgYXNzdW1lZCB0byBoYXZlIHdlbGwgYmVoYXZlZCBuYW1lcyB3aGljaCBkb24ndCBjaGFuZ2UgYmV0d2VlbiBhcmNoaXRlY3VyZXMvdHVuZXMKICAgICBpZiBpc1BhY2thZ2VHcm91cChmbikgYW5kIGlzQWxsQXJjaChmbikgYW5kIG5vdCBpc05hdGl2ZShkZXBuYW1lKToKLSAgICAgICAgcmV0dXJuIEZhbHNlICAKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAjIEV4Y2x1ZGUgd2VsbCBkZWZpbmVkIG1hY2hpbmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgd2hpY2ggZG9uJ3QgY2hhbmdlIEFCSQogICAgIGlmIGRlcG5hbWUgaW4gc2lnZ2VuLmFiaXNhZmVyZWNpcGVzIGFuZCBub3QgaXNJbWFnZShmbik6CkBAIC0xNTAsMTYgKzE1MCwyMyBAQAogICAgICAgICBpZiByZWNpcGVuYW1lIGluIHNlbGYudW5sb2NrZWRyZWNpcGVzOgogICAgICAgICAgICAgdW5sb2NrZWQgPSBUcnVlCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWYgZ2V0X21jKHRpZCk6CisgICAgICAgICAgICAgICAgdGlkID0gdGlkLnJzcGxpdCgnLicsIDEpWzBdCisgICAgICAgICAgICAgICAgaWYgdGlkLnN0YXJ0c3dpdGgoJ211bHRpY29uZmlnOicpOgorICAgICAgICAgICAgICAgICAgICBlbGVtcyA9IHRpZC5zcGxpdCgnOicpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtc1sxXQogICAgICAgICAgICAgZGVmIHJlY2lwZW5hbWVfZnJvbV9kZXAoZGVwKToKICAgICAgICAgICAgICAgICAjIFRoZSBkZXAgZW50cnkgd2lsbCBsb29rIHNvbWV0aGluZyBsaWtlCiAgICAgICAgICAgICAgICAgIyAvcGF0aC9wYXRoL3JlY2lwZW5hbWUuYmIudGFzaywgdmlydHVhbDpuYXRpdmU6L3AvZm9vLmJiLnRhc2ssCiAgICAgICAgICAgICAgICAgIyAuLi4KKwogICAgICAgICAgICAgICAgIGZuID0gZGVwLnJzcGxpdCgnLicsIDEpWzBdCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFDYWNoZS5wa2dfZm5bZm5dCiAKKyAgICAgICAgICAgIG1jID0gZ2V0X21jKGZuKQogICAgICAgICAgICAgIyBJZiBhbnkgdW5sb2NrZWQgcmVjaXBlIGlzIGluIHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzIHRoZW4gdGhlCiAgICAgICAgICAgICAjIGN1cnJlbnQgcmVjaXBlIHNob3VsZCBiZSB1bmxvY2tlZCBhcyB3ZWxsLgotICAgICAgICAgICAgZGVwbmFtZXMgPSBbIHJlY2lwZW5hbWVfZnJvbV9kZXAoeCkgZm9yIHggaW4gZGVwcyBdCisgICAgICAgICAgICBkZXBuYW1lcyA9IFsgcmVjaXBlbmFtZV9mcm9tX2RlcCh4KSBmb3IgeCBpbiBkZXBzIGlmIG1jID09IGdldF9tYyh4KV0KICAgICAgICAgICAgIGlmIGFueSh4IGluIHkgZm9yIHkgaW4gZGVwbmFtZXMgZm9yIHggaW4gc2VsZi51bmxvY2tlZHJlY2lwZXMpOgogICAgICAgICAgICAgICAgIHNlbGYudW5sb2NrZWRyZWNpcGVzW3JlY2lwZW5hbWVdID0gJycKICAgICAgICAgICAgICAgICB1bmxvY2tlZCA9IFRydWUKQEAgLTM3Miw4ICszNzksMTQgQEAKIGRlZiBmaW5kX3NzdGF0ZV9tYW5pZmVzdCh0YXNrZGF0YSwgdGFza2RhdGEyLCB0YXNrbmFtZSwgZCwgbXVsdGlsaWJjYWNoZSk6CiAgICAgZDIgPSBkCiAgICAgdmFyaWFudCA9ICcnCisgICAgY3Vycl92YXJpYW50ID0gJycKKyAgICBpZiBkLmdldFZhcigiQkJFWFRFTkRDVVJSIikgPT0gIm11bHRpbGliIjoKKyAgICAgICAgY3Vycl92YXJpYW50ID0gZC5nZXRWYXIoIkJCRVhURU5EVkFSSUFOVCIpCisgICAgICAgIGlmICJ2aXJ0Y2xhc3MtbXVsdGlsaWIiIG5vdCBpbiBkLmdldFZhcigiT1ZFUlJJREVTIik6CisgICAgICAgICAgICBjdXJyX3ZhcmlhbnQgPSAiaW52YWxpZCIKICAgICBpZiB0YXNrZGF0YTIuc3RhcnRzd2l0aCgidmlydHVhbDptdWx0aWxpYiIpOgogICAgICAgICB2YXJpYW50ID0gdGFza2RhdGEyLnNwbGl0KCI6IilbMl0KKyAgICBpZiBjdXJyX3ZhcmlhbnQgIT0gdmFyaWFudDoKICAgICAgICAgaWYgdmFyaWFudCBub3QgaW4gbXVsdGlsaWJjYWNoZToKICAgICAgICAgICAgIG11bHRpbGliY2FjaGVbdmFyaWFudF0gPSBvZS51dGlscy5nZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpCiAgICAgICAgIGQyID0gbXVsdGlsaWJjYWNoZVt2YXJpYW50XQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weSBiL3Bva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKaW5kZXggOTRhZmUzOS4uY2FlYjVlMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTG9nRXhlY1RUWShtc2csICJzY3JlZW4gLXIgJXMiICUgc19pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjUsIDEwKSwgZCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKG1zZykKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKG1zZykKIAogY2xhc3MgVG11eFJ1bm5pbmcoVGVybWluYWwpOgogICAgICIiIk9wZW4gYSBuZXcgcGFuZSBpbiB0aGUgY3VycmVudCBydW5uaW5nIHRtdXggd2luZG93IiIiCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgaWYgZDoKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTG9nRXhlY1RUWShtc2csIGF0dGFjaF9jbWQsIDAuNSwgMTApLCBkKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4obXNnKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcobXNnKQogCiBjbGFzcyBDdXN0b20oVGVybWluYWwpOgogICAgIGNvbW1hbmQgPSAnZmFsc2UnICMgVGhpcyBpcyBhIHBsYWNlaG9sZGVyCkBAIC0xODAsNyArMTgwLDcgQEAKICAgICAgICAgICAgIGlmIG5vdCAne2NvbW1hbmR9JyBpbiBzZWxmLmNvbW1hbmQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jb21tYW5kICs9ICcge2NvbW1hbmR9JwogICAgICAgICAgICAgVGVybWluYWwuX19pbml0X18oc2VsZiwgc2hfY21kLCB0aXRsZSwgZW52LCBkKQotICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ0N1c3RvbSB0ZXJtaW5hbCB3YXMgc3RhcnRlZC4nKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0N1c3RvbSB0ZXJtaW5hbCB3YXMgc3RhcnRlZC4nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICdObyBjdXN0b20gdGVybWluYWwgKE9FX1RFUk1JTkFMX0NVU1RPTUNNRCkgc2V0JykKICAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVGVybWluYWwoJ09FX1RFUk1JTkFMX0NVU1RPTUNNRCBub3Qgc2V0JykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvdHlwZXMucHkgYi9wb2t5L21ldGEvbGliL29lL3R5cGVzLnB5CmluZGV4IDRhZTU4YWMuLmY0MDE3MTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvdHlwZXMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS90eXBlcy5weQpAQCAtMTAzLDggKzEwMywxMyBAQAogICAgICIiIk9wZW5FbWJlZGRlZCAnYm9vbGVhbicgdHlwZQogCiAgICAgVmFsaWQgdmFsdWVzIGZvciB0cnVlOiAneWVzJywgJ3knLCAndHJ1ZScsICd0JywgJzEnCi0gICAgVmFsaWQgdmFsdWVzIGZvciBmYWxzZTogJ25vJywgJ24nLCAnZmFsc2UnLCAnZicsICcwJworICAgIFZhbGlkIHZhbHVlcyBmb3IgZmFsc2U6ICdubycsICduJywgJ2ZhbHNlJywgJ2YnLCAnMCcsIE5vbmUKICAgICAiIiIKKyAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGJvb2wpOgorICAgICAgICByZXR1cm4gdmFsdWUKIAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJvb2xlYW4gYWNjZXB0cyBhIHN0cmluZywgbm90ICclcyciICUgdHlwZSh2YWx1ZSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQppbmRleCA4MGYwNDQyLi44YTU4NGQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKQEAgLTEsNCArMSw2IEBACiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHRyYWNlYmFjawogCiBkZWYgcmVhZF9maWxlKGZpbGVuYW1lKToKICAgICB0cnk6CkBAIC0yMyw2ICsyNSwxMyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBmYWxzZXZhbHVlCiAKK2RlZiB2YXJ0cnVlKHZhciwgaWZ0cnVlLCBpZmZhbHNlLCBkKToKKyAgICBpbXBvcnQgb2UudHlwZXMKKyAgICBpZiBvZS50eXBlcy5ib29sZWFuKGQuZ2V0VmFyKHZhcikpOgorICAgICAgICByZXR1cm4gaWZ0cnVlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGlmZmFsc2UKKwogZGVmIGxlc3Nfb3JfZXF1YWwodmFyaWFibGUsIGNoZWNrdmFsdWUsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCk6CiAgICAgaWYgZmxvYXQoZC5nZXRWYXIodmFyaWFibGUpKSA8PSBmbG9hdChjaGVja3ZhbHVlKToKICAgICAgICAgcmV0dXJuIHRydWV2YWx1ZQpAQCAtMjQ2LDM4ICsyNTUsNzMgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIkV4ZWN1dGluZyAlcyAuLi4iICUgY21kKQogICAgICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGNtZCwgZCkKIAotZGVmIG11bHRpcHJvY2Vzc19leGVjKGNvbW1hbmRzLCBmdW5jdGlvbik6Ci0gICAgaW1wb3J0IHNpZ25hbAotICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKKyMgRm9yIGVhY2ggaXRlbSBpbiBpdGVtcywgY2FsbCB0aGUgZnVuY3Rpb24gJ3RhcmdldCcgd2l0aCBpdGVtIGFzIHRoZSBmaXJzdCAKKyMgYXJndW1lbnQsIGV4dHJhYXJncyBhcyB0aGUgb3RoZXIgYXJndW1lbnRzIGFuZCBoYW5kbGUgYW55IGV4Y2VwdGlvbnMgaW4gdGhlCisjIHBhcmVudCB0aHJlYWQKK2RlZiBtdWx0aXByb2Nlc3NfbGF1bmNoKHRhcmdldCwgaXRlbXMsIGQsIGV4dHJhYXJncz1Ob25lKToKIAotICAgIGlmIG5vdCBjb21tYW5kczoKLSAgICAgICAgcmV0dXJuIFtdCisgICAgY2xhc3MgUHJvY2Vzc0xhdW5jaChtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fcGNvbm4sIHNlbGYuX2Njb25uID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fcmVzdWx0ID0gTm9uZQogCi0gICAgZGVmIGluaXRfd29ya2VyKCk6Ci0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0lOVCwgc2lnbmFsLlNJR19JR04pCisgICAgICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0ID0gc2VsZi5fdGFyZ2V0KCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKChOb25lLCByZXQpKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoKGUsIHRiKSkKIAotICAgIGZhaWxzID0gW10KKyAgICAgICAgZGVmIHVwZGF0ZShzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Bjb25uLnBvbGwoKToKKyAgICAgICAgICAgICAgICAoZSwgdGIpID0gc2VsZi5fcGNvbm4ucmVjdigpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gKGUsIHRiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IHRiCiAKLSAgICBkZWYgZmFpbHVyZXMocmVzKToKLSAgICAgICAgZmFpbHMuYXBwZW5kKHJlcykKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIGRlZiBleGNlcHRpb24oc2VsZik6CisgICAgICAgICAgICBzZWxmLnVwZGF0ZSgpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhjZXB0aW9uCiAKLSAgICBucHJvYyA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksIGxlbihjb21tYW5kcykpCi0gICAgcG9vbCA9IGJiLnV0aWxzLm11bHRpcHJvY2Vzc2luZ3Bvb2wobnByb2MsIGluaXRfd29ya2VyKQorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHJlc3VsdChzZWxmKToKKyAgICAgICAgICAgIHNlbGYudXBkYXRlKCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXN1bHQKIAotICAgIHRyeToKLSAgICAgICAgbWFwcmVzdWx0ID0gcG9vbC5tYXBfYXN5bmMoZnVuY3Rpb24sIGNvbW1hbmRzLCBlcnJvcl9jYWxsYmFjaz1mYWlsdXJlcykKLQotICAgICAgICBwb29sLmNsb3NlKCkKLSAgICAgICAgcG9vbC5qb2luKCkKLSAgICAgICAgcmVzdWx0cyA9IG1hcHJlc3VsdC5nZXQoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcG9vbC50ZXJtaW5hdGUoKQotICAgICAgICBwb29sLmpvaW4oKQotICAgICAgICByYWlzZQotCi0gICAgaWYgZmFpbHM6Ci0gICAgICAgIHJhaXNlIGZhaWxzWzBdCi0KKyAgICBtYXhfcHJvY2VzcyA9IGludChkLmdldFZhcigiQkJfTlVNQkVSX1RIUkVBRFMiKSBvciBvcy5jcHVfY291bnQoKSBvciAxKQorICAgIGxhdW5jaGVkID0gW10KKyAgICBlcnJvcnMgPSBbXQorICAgIHJlc3VsdHMgPSBbXQorICAgIGl0ZW1zID0gbGlzdChpdGVtcykKKyAgICB3aGlsZSAoaXRlbXMgYW5kIG5vdCBlcnJvcnMpIG9yIGxhdW5jaGVkOgorICAgICAgICBpZiBub3QgZXJyb3JzIGFuZCBpdGVtcyBhbmQgbGVuKGxhdW5jaGVkKSA8IG1heF9wcm9jZXNzOgorICAgICAgICAgICAgYXJncyA9IChpdGVtcy5wb3AoKSwpCisgICAgICAgICAgICBpZiBleHRyYWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyBleHRyYWFyZ3MKKyAgICAgICAgICAgIHAgPSBQcm9jZXNzTGF1bmNoKHRhcmdldD10YXJnZXQsIGFyZ3M9YXJncykKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgbGF1bmNoZWQuYXBwZW5kKHApCisgICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgorICAgICAgICAgICAgIyBUaGUgZmluaXNoZWQgcHJvY2Vzc2VzIGFyZSBqb2luZWQgd2hlbiBjYWxsaW5nIGlzX2FsaXZlKCkKKyAgICAgICAgICAgIGlmIG5vdCBxLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgaWYgcS5leGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocS5leGNlcHRpb24pCisgICAgICAgICAgICAgICAgaWYgcS5yZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHEucmVzdWx0KQorICAgICAgICAgICAgICAgIGxhdW5jaGVkLnJlbW92ZShxKQorICAgICMgUGFyYW5vaWEgZG9lc24ndCBodXJ0CisgICAgZm9yIHAgaW4gbGF1bmNoZWQ6CisgICAgICAgIHAuam9pbigpCisgICAgaWYgZXJyb3JzOgorICAgICAgICBtc2cgPSAiIgorICAgICAgICBmb3IgKGUsIHRiKSBpbiBlcnJvcnM6CisgICAgICAgICAgICBtc2cgPSBtc2cgKyBzdHIoZSkgKyAiOiAiICsgc3RyKHRiKSArICJcbiIKKyAgICAgICAgYmIuZmF0YWwoIkZhdGFsIGVycm9ycyBvY2N1cnJlZCBpbiBzdWJwcm9jZXNzZXM6XG4lcyIgJSBtc2cpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAogZGVmIHNxdWFzaHNwYWNlcyhzdHJpbmcpOgpAQCAtMzA0LDExICszNDgsMjAgQEAKICAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQocGtnX2RpY3QpOgogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChwa2cpCiAKLSAgICByZXR1cm4gJ1xuJy5qb2luKG91dHB1dCkKKyAgICBvdXRwdXRfc3RyID0gJ1xuJy5qb2luKG91dHB1dCkKIAotZGVmIGhvc3RfZ2NjX3ZlcnNpb24oZCk6CisgICAgaWYgb3V0cHV0X3N0cjoKKyAgICAgICAgIyBtYWtlIHN1cmUgbGFzdCBsaW5lIGlzIG5ld2xpbmUgdGVybWluYXRlZAorICAgICAgICBvdXRwdXRfc3RyICs9ICdcbicKKworICAgIHJldHVybiBvdXRwdXRfc3RyCisKK2RlZiBob3N0X2djY192ZXJzaW9uKGQsIHRhc2tjb250ZXh0b25seT1GYWxzZSk6CiAgICAgaW1wb3J0IHJlLCBzdWJwcm9jZXNzCiAKKyAgICBpZiB0YXNrY29udGV4dG9ubHkgYW5kIGQuZ2V0VmFyKCdCQl9XT1JLRVJDT05URVhUJykgIT0gJzEnOgorICAgICAgICByZXR1cm4KKwogICAgIGNvbXBpbGVyID0gZC5nZXRWYXIoIkJVSUxEX0NDIikKICAgICB0cnk6CiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0zMjcsOSArMzgwLDE4IEBACiAKIGRlZiBnZXRfbXVsdGlsaWJfZGF0YXN0b3JlKHZhcmlhbnQsIGQpOgogICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgIG92ZXJyaWRlcyA9IGxvY2FsZGF0YS5nZXRWYXIoIk9WRVJSSURFUyIsIEZhbHNlKSArICI6dmlydGNsYXNzLW11bHRpbGliLSIgKyB2YXJpYW50Ci0gICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQotICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKKyAgICBpZiB2YXJpYW50OgorICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkgKyAiOnZpcnRjbGFzcy1tdWx0aWxpYi0iICsgdmFyaWFudAorICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoIk1MUFJFRklYIiwgdmFyaWFudCArICItIikKKyAgICBlbHNlOgorICAgICAgICBvcmlnZGVmYXVsdCA9IGxvY2FsZGF0YS5nZXRWYXIoIkRFRkFVTFRUVU5FX01VTFRJTElCX09SSUdJTkFMIikKKyAgICAgICAgaWYgb3JpZ2RlZmF1bHQ6CisgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJERUZBVUxUVFVORSIsIG9yaWdkZWZhdWx0KQorICAgICAgICBvdmVycmlkZXMgPSBsb2NhbGRhdGEuZ2V0VmFyKCJPVkVSUklERVMiLCBGYWxzZSkuc3BsaXQoIjoiKQorICAgICAgICBvdmVycmlkZXMgPSAiOiIuam9pbihbeCBmb3IgeCBpbiBvdmVycmlkZXMgaWYgbm90IHguc3RhcnRzd2l0aCgidmlydGNsYXNzLW11bHRpbGliLSIpXSkKKyAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQorICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCJNTFBSRUZJWCIsICIiKQogICAgIHJldHVybiBsb2NhbGRhdGEKIAogIwpAQCAtNDE5LDMgKzQ4MSw0IEBACiAgICAgICAgICAgICBtc2cgPSBtc2cgKyAnICglcyknICUgc2VsZi5kZXNjcmlwdGlvbgogCiAgICAgICAgIHJldHVybiBtc2cKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKaW5kZXggZWYwMDg0NS4uODIxYWVjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CkBAIC01NywxNCArNTcsMjEgQEAKICAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCBmaWx0ZXJzKQogICAgICAgICBzZWxmLnN1aXRlcyA9IHNlbGYubG9hZGVyLmRpc2NvdmVyKCkKIAotICAgIGRlZiBydW5UZXN0cyhzZWxmLCBza2lwcz1bXSk6CisgICAgZGVmIHJ1blRlc3RzKHNlbGYsIHByb2Nlc3Nlcz1Ob25lLCBza2lwcz1bXSk6CiAgICAgICAgIHNlbGYucnVubmVyID0gc2VsZi5ydW5uZXJDbGFzcyhzZWxmLCBkZXNjcmlwdGlvbnM9RmFsc2UsIHZlcmJvc2l0eT0yKQogCiAgICAgICAgICMgRGluYW1pY2FsbHkgc2tpcCB0aG9zZSB0ZXN0cyBzcGVjaWZpZWQgdGhvdWdoIGFyZ3VtZW50cwogICAgICAgICBzZWxmLnNraXBUZXN0cyhza2lwcykKIAogICAgICAgICBzZWxmLl9ydW5fc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihzZWxmLnN1aXRlcykKKyAgICAgICAgaWYgcHJvY2Vzc2VzOgorICAgICAgICAgICAgZnJvbSBvZXFhLmNvcmUudXRpbHMuY29uY3VycmVuY3l0ZXN0IGltcG9ydCBDb25jdXJyZW50VGVzdFN1aXRlCisKKyAgICAgICAgICAgIGNvbmN1cnJlbnRfc3VpdGUgPSBDb25jdXJyZW50VGVzdFN1aXRlKHNlbGYuc3VpdGVzLCBwcm9jZXNzZXMpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oY29uY3VycmVudF9zdWl0ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVubmVyLmJ1ZmZlciA9IFRydWUKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihzZWxmLnN1aXRlcykKICAgICAgICAgc2VsZi5fcnVuX2VuZF90aW1lID0gdGltZS50aW1lKCkKIAogICAgICAgICByZXR1cm4gcmVzdWx0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGF0YS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kYXRhLnB5CmluZGV4IDMxYzZkZDYuLmYwZjY1YWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kYXRhLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kYXRhLnB5CkBAIC01NCw2ICs1NCwyMCBAQAogICAgICAgICAgICAgc2VsZi5jYXNlLnNraXBUZXN0KHNlbGYubXNnKQogCiBAcmVnaXN0ZXJEZWNvcmF0b3IKK2NsYXNzIHNraXBJZkluRGF0YVZhcihPRVRlc3REZWNvcmF0b3IpOgorICAgICIiIgorICAgICAgICBTa2lwIHRlc3QgaWYgdmFsdWUgaXMgaW4gZGF0YSBzdG9yZSdzIHZhcmlhYmxlLgorICAgICIiIgorCisgICAgYXR0cnMgPSAoJ3ZhcicsICd2YWx1ZScsICdtc2cnKQorICAgIGRlZiBzZXRVcERlY29yYXRvcihzZWxmKToKKyAgICAgICAgbXNnID0gKCdDaGVja2luZyBpZiAlciB2YWx1ZSBjb250YWlucyAlciB0byBza2lwICcKKyAgICAgICAgICAgICAgJ3RoZSB0ZXN0JyAlIChzZWxmLnZhciwgc2VsZi52YWx1ZSkpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKG1zZykKKyAgICAgICAgaWYgc2VsZi52YWx1ZSBpbiAoc2VsZi5jYXNlLnRkLmdldChzZWxmLnZhcikpOgorICAgICAgICAgICAgc2VsZi5jYXNlLnNraXBUZXN0KHNlbGYubXNnKQorCitAcmVnaXN0ZXJEZWNvcmF0b3IKIGNsYXNzIHNraXBJZk5vdEluRGF0YVZhcihPRVRlc3REZWNvcmF0b3IpOgogICAgICIiIgogICAgICAgICBTa2lwIHRlc3QgaWYgdmFsdWUgaXMgbm90IGluIGRhdGEgc3RvcmUncyB2YXJpYWJsZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKaW5kZXggNjljNjA0ZC4uOTUwZGJhYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKQEAgLTYzLDEzICs2MywxNSBAQAogICAgIHJldHVybiBbY2FzZXNbY2FzZV9pZF0gZm9yIGNhc2VfaWQgaW4gY2FzZXNfb3JkZXJlZF0KIAogZGVmIF9za2lwVGVzdERlcGVuZGVuY3koY2FzZSwgZGVwZW5kcyk6Ci0gICAgc2tpcFJlYXNvbnMgPSBbJ2Vycm9ycycsICdmYWlsdXJlcycsICdza2lwcGVkJ10KLQotICAgIGZvciByZWFzb24gaW4gc2tpcFJlYXNvbnM6Ci0gICAgICAgIGZvciB0ZXN0LCBfIGluIGdldGF0dHIoY2FzZS50Yy5yZXN1bHRzLCByZWFzb24pOgotICAgICAgICAgICAgaWYgdGVzdC5pZCgpIGluIGRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU2tpcFRlc3QoIlRlc3QgY2FzZSAlcyBkZXBlbmRzIG9uICVzIGFuZCB3YXMgaW4gJXMuIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAlIChjYXNlLmlkKCksIHRlc3QuaWQoKSwgcmVhc29uKSkKKyAgICBmb3IgZGVwIGluIGRlcGVuZHM6CisgICAgICAgIGZvdW5kID0gRmFsc2UKKyAgICAgICAgZm9yIHRlc3QsIF8gaW4gY2FzZS50Yy5yZXN1bHRzLnN1Y2Nlc3NlczoKKyAgICAgICAgICAgIGlmIHRlc3QuaWQoKSA9PSBkZXA6CisgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgU2tpcFRlc3QoIlRlc3QgY2FzZSAlcyBkZXBlbmRzIG9uICVzIGJ1dCBpdCBkaWRuJ3QgcGFzcy9ydW4uIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAlIChjYXNlLmlkKCksIGRlcCkpCiAKIEByZWdpc3RlckRlY29yYXRvcgogY2xhc3MgT0VUZXN0RGVwZW5kcyhPRVRlc3REaXNjb3Zlcik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKaW5kZXggMjI1NWNmMS4uZTY2ZGUzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQpAQCAtNDQsNiArNDQsOCBAQAogICAgICAgICAjIEFzc3VtcHRpb246IHBhY2thZ2UgYW5kIG1vZHVsZSBuYW1lcyBkbyBub3QgY29udGFpbiB1cHBlciBjYXNlCiAgICAgICAgICMgY2hhcmFjdGVycywgd2hlcmVhcyBjbGFzcyBuYW1lcyBkbwogICAgICAgICBtID0gcmUubWF0Y2gocideKFx3KykoPzpcLihcd1teLl0qKSg/OlwuKFteLl0rKSk/KT8kJywgbW9kdWxlLCBmbGFncz1yZS5BU0NJSSkKKyAgICAgICAgaWYgbm90IG06CisgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgIG1vZHVsZV9uYW1lLCBjbGFzc19uYW1lLCB0ZXN0X25hbWUgPSBtLmdyb3VwcygpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQppbmRleCBmOGJiMjNmLi5kZjg4Yjg1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CkBAIC0zNiw2ICszNiw5IEBACiAgICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYuc3VjY2Vzc2VzID0gW10KKyAgICAgICAgc2VsZi5zdGFydHRpbWUgPSB7fQorICAgICAgICBzZWxmLmVuZHRpbWUgPSB7fQorICAgICAgICBzZWxmLnByb2dyZXNzaW5mbyA9IHt9CiAKICAgICAgICAgIyBJbmplY3QgaW50byB0YyBzbyB0aGF0IFRlc3REZXBlbmRzIGRlY29yYXRvciBjYW4gc2VlIHJlc3VsdHMKICAgICAgICAgdGMucmVzdWx0cyA9IHNlbGYKQEAgLTQzLDEzICs0NiwyNSBAQAogICAgICAgICBzZWxmLnRjID0gdGMKIAogICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6Ci0gICAgICAgICMgQWxsb3cgdXMgdG8gdHJpZ2dlciB0aGUgdGVzdGNhc2UgYnVmZmVyIG1vZGUgb24gYSBwZXIgdGVzdCBiYXNpcwotICAgICAgICAjIHNvIHN0ZG91dC9zdGRlcnIgYXJlIG9ubHkgcHJpbnRlZCB1cG9uIGZhaWx1cmUuIEVuYWJsZXMgZGVidWdnaW5nCi0gICAgICAgICMgYnV0IGNsZWFuIG91dHB1dAotICAgICAgICBpZiBoYXNhdHRyKHRlc3QsICJidWZmZXIiKToKLSAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gdGVzdC5idWZmZXIKKyAgICAgICAgIyBNYXkgaGF2ZSBiZWVuIHNldCBieSBjb25jdXJyZW5jeXRlc3QKKyAgICAgICAgaWYgdGVzdC5pZCgpIG5vdCBpbiBzZWxmLnN0YXJ0dGltZToKKyAgICAgICAgICAgIHNlbGYuc3RhcnR0aW1lW3Rlc3QuaWQoKV0gPSB0aW1lLnRpbWUoKQogICAgICAgICBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLnN0YXJ0VGVzdCh0ZXN0KQogCisgICAgZGVmIHN0b3BUZXN0KHNlbGYsIHRlc3QpOgorICAgICAgICBzZWxmLmVuZHRpbWVbdGVzdC5pZCgpXSA9IHRpbWUudGltZSgpCisgICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuc3RvcFRlc3QodGVzdCkKKyAgICAgICAgaWYgdGVzdC5pZCgpIGluIHNlbGYucHJvZ3Jlc3NpbmZvOgorICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbyhzZWxmLnByb2dyZXNzaW5mb1t0ZXN0LmlkKCldKQorCisgICAgICAgICMgUHJpbnQgdGhlIGVycm9ycy9mYWlsdXJlcyBlYXJseSB0byBhaWQvc3BlZWQgZGVidWdnaW5nLCBpdHMgYSBwYWluCisgICAgICAgICMgdG8gd2FpdCB1bnRpbCBzZWxmdGVzdCBmaW5pc2hlcyB0byBzZWUgdGhlbS4KKyAgICAgICAgZm9yIHQgaW4gWydmYWlsdXJlcycsICdlcnJvcnMnLCAnc2tpcHBlZCcsICdleHBlY3RlZEZhaWx1cmVzJ106CisgICAgICAgICAgICBmb3IgKHNjYXNlLCBtc2cpIGluIGdldGF0dHIoc2VsZiwgdCk6CisgICAgICAgICAgICAgICAgaWYgdGVzdC5pZCgpID09IHNjYXNlLmlkKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oc3RyKG1zZykpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICBkZWYgbG9nU3VtbWFyeShzZWxmLCBjb21wb25lbnQsIGNvbnRleHRfbXNnPScnKToKICAgICAgICAgZWxhcHNlZF90aW1lID0gc2VsZi50Yy5fcnVuX2VuZF90aW1lIC0gc2VsZi50Yy5fcnVuX3N0YXJ0X3RpbWUKICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiU1VNTUFSWToiKQpAQCAtNzgsMTMgKzkzLDEzIEBACiAKICAgICAgICAgICAgICAgICAjIFdoZW4gZmFpbHMgYXQgbW9kdWxlIG9yIGNsYXNzIGxldmVsIHRoZSBjbGFzcyBuYW1lIGlzIHBhc3NlZCBhcyBzdHJpbmcKICAgICAgICAgICAgICAgICAjIHNvIGZpZ3VyZSBvdXQgdG8gc2VlIGlmIG1hdGNoCi0gICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwTW9kdWxlIFwoKD9QPG1vZHVsZV9uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKKyAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHIiXnNldFVwTW9kdWxlIFwoKD9QPG1vZHVsZV9uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKICAgICAgICAgICAgICAgICBpZiBtOgogICAgICAgICAgICAgICAgICAgICBpZiBjYXNlLl9fY2xhc3NfXy5fX21vZHVsZV9fID09IG0uZ3JvdXAoJ21vZHVsZV9uYW1lJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKCJec2V0VXBDbGFzcyBcKCg/UDxjbGFzc19uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKKyAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHIiXnNldFVwQ2xhc3MgXCgoP1A8Y2xhc3NfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCiAgICAgICAgICAgICAgICAgaWYgbToKICAgICAgICAgICAgICAgICAgICAgY2xhc3NfbmFtZSA9ICIlcy4lcyIgJSAoY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZS5fX2NsYXNzX18uX19uYW1lX18pCkBAIC0xMjIsOSArMTM3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZCwgJ29laWQnKToKICAgICAgICAgICAgICAgICAgICAgICAgIG9laWQgPSBkLm9laWQKIAorICAgICAgICAgICAgdCA9ICIiCisgICAgICAgICAgICBpZiBjYXNlLmlkKCkgaW4gc2VsZi5zdGFydHRpbWUgYW5kIGNhc2UuaWQoKSBpbiBzZWxmLmVuZHRpbWU6CisgICAgICAgICAgICAgICAgdCA9ICIgKCIgKyAiezA6LjJmfSIuZm9ybWF0KHNlbGYuZW5kdGltZVtjYXNlLmlkKCldIC0gc2VsZi5zdGFydHRpbWVbY2FzZS5pZCgpXSkgKyAicykiCisKICAgICAgICAgICAgIGlmIHN0YXR1cyBub3QgaW4gbG9nczoKICAgICAgICAgICAgICAgICBsb2dzW3N0YXR1c10gPSBbXQotICAgICAgICAgICAgbG9nc1tzdGF0dXNdLmFwcGVuZCgiUkVTVUxUUyAtICVzIC0gVGVzdGNhc2UgJXM6ICVzIiAlIChjYXNlLmlkKCksIG9laWQsIHN0YXR1cykpCisgICAgICAgICAgICBsb2dzW3N0YXR1c10uYXBwZW5kKCJSRVNVTFRTIC0gJXMgLSBUZXN0Y2FzZSAlczogJXMlcyIgJSAoY2FzZS5pZCgpLCBvZWlkLCBzdGF0dXMsIHQpKQogICAgICAgICAgICAgaWYgbG9nOgogICAgICAgICAgICAgICAgIHJlc3VsdFtjYXNlLmlkKCldID0geydzdGF0dXMnOiBzdGF0dXMsICdsb2cnOiBsb2d9CiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNTAyODkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKQEAgLTAsMCArMSwyNTkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMKKyMgTW9kaWZpZWQgZm9yIHVzZSBpbiBPRSBieSBSaWNoYXJkIFB1cmRpZSwgMjAxOAorIworIyBNb2RpZmllZCBieTogQ29yZXkgR29sZGJlcmcsIDIwMTMKKyMgICBMaWNlbnNlOiBHUEx2MisKKyMKKyMgT3JpZ2luYWwgY29kZSBmcm9tOgorIyAgIEJhemFhciAoYnpybGliLnRlc3RzLl9faW5pdF9fLnB5LCB2Mi42LCBjb3BpZWQgSnVuIDAxIDIwMTMpCisjICAgQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgQ2Fub25pY2FsIEx0ZAorIyAgIExpY2Vuc2U6IEdQTHYyKworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0ZXN0dG9vbHMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgaW8KKworZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBjeWNsZQorZnJvbSBzdWJ1bml0IGltcG9ydCBQcm90b2NvbFRlc3RDYXNlLCBUZXN0UHJvdG9jb2xDbGllbnQKK2Zyb20gc3VidW5pdC50ZXN0X3Jlc3VsdHMgaW1wb3J0IEF1dG9UaW1pbmdUZXN0UmVzdWx0RGVjb3JhdG9yCitmcm9tIHRlc3R0b29scyBpbXBvcnQgVGhyZWFkc2FmZUZvcndhcmRpbmdSZXN1bHQsIGl0ZXJhdGVfdGVzdHMKKworaW1wb3J0IGJiLnV0aWxzCitpbXBvcnQgb2UucGF0aAorCitfYWxsX18gPSBbCisgICAgJ0NvbmN1cnJlbnRUZXN0U3VpdGUnLAorICAgICdmb3JrX2Zvcl90ZXN0cycsCisgICAgJ3BhcnRpdGlvbl90ZXN0cycsCitdCisKKyMKKyMgUGF0Y2ggdGhlIHZlcnNpb24gZnJvbSB0ZXN0dG9vbHMgdG8gYWxsb3cgYWNjZXNzIHRvIF90ZXN0X3N0YXJ0IGFuZCBhbGxvdworIyBjb21wdXRhdGlvbiBvZiB0aW1pbmcgaW5mb3JtYXRpb24gYW5kIHRocmVhZGluZyBwcm9ncmVzcworIworY2xhc3MgQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdChUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0LCBzZW1hcGhvcmUsIHRocmVhZG51bSwgdG90YWxpbnByb2Nlc3MsIHRvdGFsdGVzdHMpOgorICAgICAgICBzdXBlcihCQlRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0LCBzZWxmKS5fX2luaXRfXyh0YXJnZXQsIHNlbWFwaG9yZSkKKyAgICAgICAgc2VsZi50aHJlYWRudW0gPSB0aHJlYWRudW0KKyAgICAgICAgc2VsZi50b3RhbGlucHJvY2VzcyA9IHRvdGFsaW5wcm9jZXNzCisgICAgICAgIHNlbGYudG90YWx0ZXN0cyA9IHRvdGFsdGVzdHMKKworICAgIGRlZiBfYWRkX3Jlc3VsdF93aXRoX3NlbWFwaG9yZShzZWxmLCBtZXRob2QsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuc2VtYXBob3JlLmFjcXVpcmUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnJlc3VsdC5zdGFydHRpbWVbdGVzdC5pZCgpXSA9IHNlbGYuX3Rlc3Rfc3RhcnQudGltZXN0YW1wKCkKKyAgICAgICAgICAgIHNlbGYucmVzdWx0LnRocmVhZHByb2dyZXNzW3NlbGYudGhyZWFkbnVtXS5hcHBlbmQodGVzdC5pZCgpKQorICAgICAgICAgICAgdG90YWxwcm9ncmVzcyA9IHN1bShsZW4oeCkgZm9yIHggaW4gc2VsZi5yZXN1bHQudGhyZWFkcHJvZ3Jlc3MudmFsdWVzKCkpCisgICAgICAgICAgICBzZWxmLnJlc3VsdC5wcm9ncmVzc2luZm9bdGVzdC5pZCgpXSA9ICIlczogJXMvJXMgJXMvJXMgKCVzcykgKCVzKSIgJSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGhyZWFkbnVtLAorICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5yZXN1bHQudGhyZWFkcHJvZ3Jlc3Nbc2VsZi50aHJlYWRudW1dKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b3RhbGlucHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgdG90YWxwcm9ncmVzcywKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b3RhbHRlc3RzLAorICAgICAgICAgICAgICAgICAgICAiezA6LjJmfSIuZm9ybWF0KHRpbWUudGltZSgpLXNlbGYuX3Rlc3Rfc3RhcnQudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICB0ZXN0LmlkKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlbWFwaG9yZS5yZWxlYXNlKCkKKyAgICAgICAgc3VwZXIoQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCwgc2VsZikuX2FkZF9yZXN1bHRfd2l0aF9zZW1hcGhvcmUobWV0aG9kLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKKyMKKyMgQSBkdW1teSBzdHJ1Y3R1cmUgdG8gYWRkIHRvIGlvLlN0cmluZ0lPIHNvIHRoYXQgdGhlIC5idWZmZXIgb2JqZWN0CisjIGlzIGF2YWlsYWJsZSBhbmQgYWNjZXB0cyB3cml0ZXMuIFRoaXMgYWxsb3dzIHVuaXR0ZXN0IHdpdGggYnVmZmVyPVRydWUKKyMgdG8gaW50ZXJhY3Qgb2sgd2l0aCBzdWJ1bml0IHdoaWNoIHdhbnRzIHRvIGFjY2VzcyBzeXMuc3Rkb3V0LmJ1ZmZlci4KKyMKK2NsYXNzIGR1bW15YnVmKG9iamVjdCk6CisgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICBzZWxmLnAgPSBwYXJlbnQKKyAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICBzZWxmLnAud3JpdGUoZGF0YS5kZWNvZGUoInV0Zi04IikpCisKKyMKKyMgVGFrZW4gZnJvbSB0ZXN0dG9vbHMuQ29ubmN1cnJlbmN5VGVzdFN1aXRlIGJ1dCBtb2RpZmllZCBmb3IgT0UgdXNlCisjCitjbGFzcyBDb25jdXJyZW50VGVzdFN1aXRlKHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGUsIHByb2Nlc3Nlcyk6CisgICAgICAgIHN1cGVyKENvbmN1cnJlbnRUZXN0U3VpdGUsIHNlbGYpLl9faW5pdF9fKFtzdWl0ZV0pCisgICAgICAgIHNlbGYucHJvY2Vzc2VzID0gcHJvY2Vzc2VzCisKKyAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHRlc3RzLCB0b3RhbHRlc3RzID0gZm9ya19mb3JfdGVzdHMoc2VsZi5wcm9jZXNzZXMsIHNlbGYpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRocmVhZHMgPSB7fQorICAgICAgICAgICAgcXVldWUgPSBRdWV1ZSgpCisgICAgICAgICAgICBzZW1hcGhvcmUgPSB0aHJlYWRpbmcuU2VtYXBob3JlKDEpCisgICAgICAgICAgICByZXN1bHQudGhyZWFkcHJvZ3Jlc3MgPSB7fQorICAgICAgICAgICAgZm9yIGksICh0ZXN0LCB0ZXN0bnVtKSBpbiBlbnVtZXJhdGUodGVzdHMpOgorICAgICAgICAgICAgICAgIHJlc3VsdC50aHJlYWRwcm9ncmVzc1tpXSA9IFtdCisgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQgPSBCQlRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0KHJlc3VsdCwgc2VtYXBob3JlLCBpLCB0ZXN0bnVtLCB0b3RhbHRlc3RzKQorICAgICAgICAgICAgICAgICMgRm9yY2UgYnVmZmVyaW5nIG9mIHN0ZG91dC9zdGRlcnIgc28gdGhlIGNvbnNvbGUgZG9lc24ndCBnZXQgY29ycnVwdGVkIGJ5IHRlc3Qgb3V0cHV0CisgICAgICAgICAgICAgICAgIyBhcyBwZXIgZGVmYXVsdCBpbiBwYXJlbnQgY29kZQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0LmJ1ZmZlciA9IFRydWUKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgdG8gYWRkIGEgYnVmZmVyIG9iamVjdCB0byBzdGRvdXQgdG8ga2VlcCBzdWJ1bml0IGhhcHB5CisgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQuX3N0ZGVycl9idWZmZXIgPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQuX3N0ZGVycl9idWZmZXIuYnVmZmVyID0gZHVtbXlidWYocHJvY2Vzc19yZXN1bHQuX3N0ZGVycl9idWZmZXIpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQuX3N0ZG91dF9idWZmZXIgPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQuX3N0ZG91dF9idWZmZXIuYnVmZmVyID0gZHVtbXlidWYocHJvY2Vzc19yZXN1bHQuX3N0ZG91dF9idWZmZXIpCisgICAgICAgICAgICAgICAgcmVhZGVyX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQoCisgICAgICAgICAgICAgICAgICAgIHRhcmdldD1zZWxmLl9ydW5fdGVzdCwgYXJncz0odGVzdCwgcHJvY2Vzc19yZXN1bHQsIHF1ZXVlKSkKKyAgICAgICAgICAgICAgICB0aHJlYWRzW3Rlc3RdID0gcmVhZGVyX3RocmVhZCwgcHJvY2Vzc19yZXN1bHQKKyAgICAgICAgICAgICAgICByZWFkZXJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIHdoaWxlIHRocmVhZHM6CisgICAgICAgICAgICAgICAgZmluaXNoZWRfdGVzdCA9IHF1ZXVlLmdldCgpCisgICAgICAgICAgICAgICAgdGhyZWFkc1tmaW5pc2hlZF90ZXN0XVswXS5qb2luKCkKKyAgICAgICAgICAgICAgICBkZWwgdGhyZWFkc1tmaW5pc2hlZF90ZXN0XQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBmb3IgdGhyZWFkLCBwcm9jZXNzX3Jlc3VsdCBpbiB0aHJlYWRzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0LnN0b3AoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHRlc3RbMF0uX3N0cmVhbS5jbG9zZSgpCisKKyAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3QsIHByb2Nlc3NfcmVzdWx0LCBxdWV1ZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0ZXN0LnJ1bihwcm9jZXNzX3Jlc3VsdCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgIyBUaGUgcnVuIGxvZ2ljIGl0c2VsZiBmYWlsZWQKKyAgICAgICAgICAgICAgICBjYXNlID0gdGVzdHRvb2xzLkVycm9ySG9sZGVyKAorICAgICAgICAgICAgICAgICAgICAiYnJva2VuLXJ1bm5lciIsCisgICAgICAgICAgICAgICAgICAgIGVycm9yPXN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgICAgIGNhc2UucnVuKHByb2Nlc3NfcmVzdWx0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcXVldWUucHV0KHRlc3QpCisKK2RlZiByZW1vdmVidWlsZGRpcihkKToKKyAgICBkZWxheSA9IDUKKyAgICB3aGlsZSBkZWxheSBhbmQgb3MucGF0aC5leGlzdHMoZCArICIvYml0YmFrZS5sb2NrIik6CisgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgZGVsYXkgPSBkZWxheSAtIDEKKyAgICBiYi51dGlscy5wcnVuZWRpcihkKQorCitkZWYgZm9ya19mb3JfdGVzdHMoY29uY3VycmVuY3lfbnVtLCBzdWl0ZSk6CisgICAgcmVzdWx0ID0gW10KKyAgICB0ZXN0X2Jsb2NrcyA9IHBhcnRpdGlvbl90ZXN0cyhzdWl0ZSwgY29uY3VycmVuY3lfbnVtKQorICAgICMgQ2xlYXIgdGhlIHRlc3RzIGZyb20gdGhlIG9yaWdpbmFsIHN1aXRlIHNvIGl0IGRvZXNuJ3Qga2VlcCB0aGVtIGFsaXZlCisgICAgc3VpdGUuX3Rlc3RzWzpdID0gW10KKyAgICB0b3RhbHRlc3RzID0gc3VtKGxlbih4KSBmb3IgeCBpbiB0ZXN0X2Jsb2NrcykKKyAgICBmb3IgcHJvY2Vzc190ZXN0cyBpbiB0ZXN0X2Jsb2NrczoKKyAgICAgICAgbnVtdGVzdHMgPSBsZW4ocHJvY2Vzc190ZXN0cykKKyAgICAgICAgcHJvY2Vzc19zdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZShwcm9jZXNzX3Rlc3RzKQorICAgICAgICAjIEFsc28gY2xlYXIgZWFjaCBzcGxpdCBsaXN0IHNvIG5ldyBzdWl0ZSBoYXMgb25seSByZWZlcmVuY2UKKyAgICAgICAgcHJvY2Vzc190ZXN0c1s6XSA9IFtdCisgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gb3MucGlwZSgpCisgICAgICAgICMgQ2xlYXIgYnVmZmVycyBiZWZvcmUgZm9yayB0byBhdm9pZCBkdXBsaWNhdGUgb3V0cHV0CisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgb3VycGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXdidWlsZGRpciA9IE5vbmUKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBvcy5mZG9wZW4oYzJwd3JpdGUsICd3YicsIDEpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwcmVhZCkKKworICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbmV3IHNlcGFyYXRlIEJVSUxERElSIGZvciBlYWNoIGdyb3VwIG9mIHRlc3RzCisgICAgICAgICAgICAgICAgaWYgJ0JVSUxERElSJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb25bJ0JVSUxERElSJ10KKyAgICAgICAgICAgICAgICAgICAgbmV3YnVpbGRkaXIgPSBidWlsZGRpciArICItc3QtIiArIHN0cihvdXJwaWQpCisgICAgICAgICAgICAgICAgICAgIHNlbGZ0ZXN0ZGlyID0gb3MucGF0aC5hYnNwYXRoKGJ1aWxkZGlyICsgIi8uLi9tZXRhLXNlbGZ0ZXN0IikKKyAgICAgICAgICAgICAgICAgICAgbmV3c2VsZnRlc3RkaXIgPSBuZXdidWlsZGRpciArICIvbWV0YS1zZWxmdGVzdCIKKworICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobmV3YnVpbGRkaXIpCisgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NvbmYiLCBuZXdidWlsZGRpciArICIvY29uZiIpCisgICAgICAgICAgICAgICAgICAgIG9lLnBhdGguY29weXRyZWUoYnVpbGRkaXIgKyAiL2NhY2hlIiwgbmV3YnVpbGRkaXIgKyAiL2NhY2hlIikKKyAgICAgICAgICAgICAgICAgICAgb2UucGF0aC5jb3B5dHJlZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWxkZGlyIGluIG9zLmVudmlyb25bZV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvbltlXSA9IG9zLmVudmlyb25bZV0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCisKKyAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoImdpdCBpbml0OyBnaXQgYWRkICo7IGdpdCBjb21taXQgLWEgLW0gJ2luaXRpYWwnIiwgY3dkPW5ld3NlbGZ0ZXN0ZGlyLCBzaGVsbD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgICMgVHJpZWQgdG8gdXNlZCBiaXRiYWtlLWxheWVycyBhZGQvcmVtb3ZlIGJ1dCBpdCByZXF1aXJlcyByZWNpcGUgcGFyc2luZyBhbmQgaGVuY2UgaXMgdG9vIHNsb3cKKyAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoInNlZCAlcy9jb25mL2JibGF5ZXJzLmNvbmYgLWkgLWUgJ3MjJXMjJXMjZyciICUgKG5ld2J1aWxkZGlyLCBzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpLCBjd2Q9bmV3YnVpbGRkaXIsIHNoZWxsPVRydWUpCisKKyAgICAgICAgICAgICAgICAgICAgb3MuY2hkaXIobmV3YnVpbGRkaXIpCisKKyAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gcHJvY2Vzc19zdWl0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHQsICJ0YyIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjcCA9IHQudGMuY29uZmlnX3BhdGhzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBjcDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmdGVzdGRpciBpbiBjcFtwXSBhbmQgbmV3c2VsZnRlc3RkaXIgbm90IGluIGNwW3BdOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2Uoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWxkZGlyIGluIGNwW3BdIGFuZCBuZXdidWlsZGRpciBub3QgaW4gY3BbcF06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCisKKyAgICAgICAgICAgICAgICAjIExlYXZlIHN0ZGVyciBhbmQgc3Rkb3V0IG9wZW4gc28gd2UgY2FuIHNlZSB0ZXN0IG5vaXNlCisgICAgICAgICAgICAgICAgIyBDbG9zZSBzdGRpbiBzbyB0aGF0IHRoZSBjaGlsZCBnb2VzIGF3YXkgaWYgaXQgZGVjaWRlcyB0bworICAgICAgICAgICAgICAgICMgcmVhZCBmcm9tIHN0ZGluIChvdGhlcndpc2UgaXRzIGEgcm91bGV0dGUgdG8gc2VlIHdoYXQKKyAgICAgICAgICAgICAgICAjIGNoaWxkIGFjdHVhbGx5IGdldHMga2V5c3Ryb2tlcyBmb3IgcGRiIGV0YykuCisgICAgICAgICAgICAgICAgbmV3c2kgPSBvcy5vcGVuKG9zLmRldm51bGwsIG9zLk9fUkRXUikKKyAgICAgICAgICAgICAgICBvcy5kdXAyKG5ld3NpLCBzeXMuc3RkaW4uZmlsZW5vKCkpCisKKyAgICAgICAgICAgICAgICBzdWJ1bml0X2NsaWVudCA9IFRlc3RQcm90b2NvbENsaWVudChzdHJlYW0pCisgICAgICAgICAgICAgICAgIyBGb3JjZSBidWZmZXJpbmcgb2Ygc3Rkb3V0L3N0ZGVyciBzbyB0aGUgY29uc29sZSBkb2Vzbid0IGdldCBjb3JydXB0ZWQgYnkgdGVzdCBvdXRwdXQKKyAgICAgICAgICAgICAgICAjIGFzIHBlciBkZWZhdWx0IGluIHBhcmVudCBjb2RlCisgICAgICAgICAgICAgICAgc3VidW5pdF9jbGllbnQuYnVmZmVyID0gVHJ1ZQorICAgICAgICAgICAgICAgIHN1YnVuaXRfcmVzdWx0ID0gQXV0b1RpbWluZ1Rlc3RSZXN1bHREZWNvcmF0b3Ioc3VidW5pdF9jbGllbnQpCisgICAgICAgICAgICAgICAgcHJvY2Vzc19zdWl0ZS5ydW4oc3VidW5pdF9yZXN1bHQpCisgICAgICAgICAgICAgICAgaWYgb3VycGlkICE9IG9zLmdldHBpZCgpOgorICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQorICAgICAgICAgICAgICAgIGlmIG5ld2J1aWxkZGlyOgorICAgICAgICAgICAgICAgICAgICByZW1vdmVidWlsZGRpcihuZXdidWlsZGRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIERvbid0IGRvIGFueXRoaW5nIHdpdGggcHJvY2VzcyBjaGlsZHJlbgorICAgICAgICAgICAgICAgIGlmIG91cnBpZCAhPSBvcy5nZXRwaWQoKToKKyAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMSkKKyAgICAgICAgICAgICAgICAjIFRyeSBhbmQgcmVwb3J0IHRyYWNlYmFjayBvbiBzdHJlYW0sIGJ1dCBleGl0IHdpdGggZXJyb3IKKyAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgc3RyZWFtIGNvdWxkbid0IGJlIGNyZWF0ZWQgb3Igc29tZXRoaW5nIGVsc2UKKyAgICAgICAgICAgICAgICAjIGdvZXMgd3JvbmcuICBUaGUgdHJhY2ViYWNrIGlzIGZvcm1hdHRlZCB0byBhIHN0cmluZyBhbmQKKyAgICAgICAgICAgICAgICAjIHdyaXR0ZW4gaW4gb25lIGdvIHRvIGF2b2lkIGludGVybGVhdmluZyBsaW5lcyBmcm9tCisgICAgICAgICAgICAgICAgIyBtdWx0aXBsZSBmYWlsaW5nIGNoaWxkcmVuLgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5ld2J1aWxkZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlYnVpbGRkaXIobmV3YnVpbGRkaXIpCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpCisgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDEpCisgICAgICAgICAgICBzdHJlYW0uZmx1c2goKQorICAgICAgICAgICAgb3MuX2V4aXQoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLmNsb3NlKGMycHdyaXRlKQorICAgICAgICAgICAgc3RyZWFtID0gb3MuZmRvcGVuKGMycHJlYWQsICdyYicsIDEpCisgICAgICAgICAgICB0ZXN0ID0gUHJvdG9jb2xUZXN0Q2FzZShzdHJlYW0pCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCh0ZXN0LCBudW10ZXN0cykpCisgICAgcmV0dXJuIHJlc3VsdCwgdG90YWx0ZXN0cworCitkZWYgcGFydGl0aW9uX3Rlc3RzKHN1aXRlLCBjb3VudCk6CisgICAgIyBLZWVwIHRlc3RzIGZyb20gdGhlIHNhbWUgY2xhc3MgdG9nZXRoZXIgYnV0IGFsbG93IHRlc3RzIGZyb20gbW9kdWxlcworICAgICMgdG8gZ28gdG8gZGlmZmVyZW50IHByb2Nlc3NlcyB0byBhaWQgcGFyYWxsZWxpc2F0aW9uLgorICAgIG1vZHVsZXMgPSB7fQorICAgIGZvciB0ZXN0IGluIGl0ZXJhdGVfdGVzdHMoc3VpdGUpOgorICAgICAgICBtID0gdGVzdC5fX21vZHVsZV9fICsgIi4iICsgdGVzdC5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgaWYgbSBub3QgaW4gbW9kdWxlczoKKyAgICAgICAgICAgIG1vZHVsZXNbbV0gPSBbXQorICAgICAgICBtb2R1bGVzW21dLmFwcGVuZCh0ZXN0KQorCisgICAgIyBTaW1wbHkgZGl2aWRlIHRoZSB0ZXN0IGJsb2NrcyBiZXR3ZWVuIHRoZSBhdmFpbGFibGUgcHJvY2Vzc2VzCisgICAgcGFydGl0aW9ucyA9IFtsaXN0KCkgZm9yIF8gaW4gcmFuZ2UoY291bnQpXQorICAgIGZvciBwYXJ0aXRpb24sIG0gaW4gemlwKGN5Y2xlKHBhcnRpdGlvbnMpLCBtb2R1bGVzKToKKyAgICAgICAgcGFydGl0aW9uLmV4dGVuZChtb2R1bGVzW21dKQorCisgICAgIyBObyBwb2ludCBpbiBlbXB0eSB0aHJlYWRzIHNvIGRyb3AgdGhlbQorICAgIHJldHVybiBbcCBmb3IgcCBpbiBwYXJ0aXRpb25zIGlmIHBdCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnBsIGIvcG9reS9tZXRhL2xpYi9vZXFhL2ZpbGVzL3Rlc3QucGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4OWM4ZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2ZpbGVzL3Rlc3QucGwKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLSRhID0gOS4wMWUrMjEgLSA5LjAxZSsyMSArIDAuMDE7Ci1wcmludCAoInRoZSB2YWx1ZSBvZiBhIGlzICIsICRhLCAiXG4iKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9maWxlcy90ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2ZpbGVzL3Rlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzODkyMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2ZpbGVzL3Rlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWltcG9ydCBvcwotCi1vcy5zeXN0ZW0oJ3RvdWNoIC90bXAvdGVzdGZpbGUucHl0aG9uJykKLQotYSA9IDkuMDFlKzIxIC0gOS4wMWUrMjEgKyAwLjAxCi1wcmludCgidGhlIHZhbHVlIG9mIGEgaXMgJXMiICUgYSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYWJhdC5wYXRjaCBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYWJhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTQxYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9hYmF0LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKKyMjIyMjIyMjCitkaWZmIC0tZ2l0IGEvZ2x4Z2VhcnNfY2hlY2suc2ggYi9nbHhnZWFyc19jaGVjay5zaAoraW5kZXggMTc2MjJiOC4uYzRkM2I5NyAxMDA3NTUKKy0tLSBhL2dseGdlYXJzX2NoZWNrLnNoCisrKysgYi9nbHhnZWFyc19jaGVjay5zaAorQEAgLTMxLDcgKzMxLDcgQEAgZWxzZQorIAorICAgICBzbGVlcCA2CisgCistICAgIFhQSUQ9JCggcHMgYXggfCBhd2sgJ3twcmludCAkMSwgJDV9JyB8IGdyZXAgZ2x4Z2VhcnMgfCBhd2sgJ3twcmludCAkMX0nKQorKyAgICBYUElEPSQoIHBzIHwgYXdrICd7cHJpbnQgJDEsICQ1fScgfCBncmVwIGdseGdlYXJzIHwgYXdrICd7cHJpbnQgJDF9JykKKyAgICAgaWYgWyAhIC16ICIkWFBJRCIgXTsgdGhlbgorICAgICAgICAga2lsbCAtOSAkWFBJRCA+L2Rldi9udWxsIDI+JjEKKyAgICAgICAgIGVjaG8gImdseGdlYXJzIGNhbiBydW4sIFBBU1MhIgorZGlmZiAtLWdpdCBhL3hfY2xvc2Uuc2ggYi94X2Nsb3NlLnNoCitpbmRleCBlMjg3YmUxLi4zNDI5ZjFhIDEwMDc1NQorLS0tIGEveF9jbG9zZS5zaAorKysrIGIveF9jbG9zZS5zaAorQEAgLTIyLDcgKzIyLDcgQEAKKyAjCisgZnVuY3Rpb24gY2xvc2VfcHJvYygpeworIGVjaG8gImtpbGwgcHJvY2VzcyBYb3JnIgorLVhQSUQ9JCggIHBzIGF4IHwgYXdrICd7cHJpbnQgJDEsICQ1fScgfCBlZ3JlcCAiWCR8WG9yZyQiIHwgYXdrICd7cHJpbnQgJDF9JykKKytYUElEPSQoICBwcyB8IGF3ayAne3ByaW50ICQxLCAkNn0nIHwgZWdyZXAgIlgkfFhvcmckIiB8IGF3ayAne3ByaW50ICQxfScpCisgaWYgWyAhIC16ICIkWFBJRCIgXTsgdGhlbgorICAgICBraWxsICRYUElECisgICAgIHNsZWVwIDQKK2RpZmYgLS1naXQgYS94X3N0YXJ0LnNoIGIveF9zdGFydC5zaAoraW5kZXggOWNmNmVhYi4uMjMwNTc5NiAxMDA3NTUKKy0tLSBhL3hfc3RhcnQuc2gKKysrKyBiL3hfc3RhcnQuc2gKK0BAIC0yNCw3ICsyNCw3IEBACisgWF9FUlJPUj0wCisgCisgI3Rlc3Qgd2hldGhlciBYIGhhcyBzdGFydGVkCistUFhJRD0kKHBzIGF4IHxhd2sgJ3twcmludCAkMSwkNX0nIHxlZ3JlcCAiWG9yZyR8WCQiIHxncmVwIC12IGdyZXAgfCBhd2sgJ3twcmludCAkMX0nKQorK1BYSUQ9JChwcyB8YXdrICd7cHJpbnQgJDEsJDZ9JyB8ZWdyZXAgIlhvcmckfFgkIiB8Z3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDF9JykKKyBpZiBbICEgLXogIiRQWElEIiBdOyB0aGVuCisgICAgIGVjaG8gIltXQVJOSU5HXSBYb3JnIGhhcyBzdGFydGVkISIKKyAgICAgWE9SR19TVEFUVVM9InN0YXJ0ZWQiCitAQCAtMzUsOSArMzUsMTEgQEAgZWxzZQorICAgICAjc3RhcnQgdXAgdGhlIHggc2VydmVyCisgICAgIGVjaG8gIlN0YXJ0IHVwIHRoZSBYIHNlcnZlciBmb3IgdGVzdCBpbiBkaXNwbGF5ICRESVNQTEFZLi4uLi4uLi4uLi4uLi4uLiIKKyAKKy0gICAgJFhPUkdfRElSL2Jpbi9YID4vZGV2L251bGwgMj4mMSAmCisrICAgICMkWE9SR19ESVIvYmluL1ggPi9kZXYvbnVsbCAyPiYxICYKKysgICAgI3NsZWVwIDgKKysgICAgI3h0ZXJtICYKKysgICAgL2V0Yy9pbml0LmQveHNlcnZlci1ub2RtIHN0YXJ0ICYKKyAgICAgc2xlZXAgOAorLSAgICB4dGVybSAmCisgZmkKKyAgICAgWExPR19GSUxFPS92YXIvbG9nL1hvcmcuMC5sb2cKKyAgICAgWyAtZiAkWE9SR19ESVIvdmFyL2xvZy9Yb3JnLjAubG9nIF0gJiYgWExPR19GSUxFPSRYT1JHX0RJUi92YXIvbG9nL1hvcmcuMC5sb2cKK0BAIC01NCw3ICs1Niw3IEBAIGZpCisgICAgICAgICBYX0VSUk9SPTEKKyAgICAgZmkKKyAKKy0gICAgWFBJRD0kKCBwcyBheCB8IGF3ayAne3ByaW50ICQxLCAkNX0nIHwgZWdyZXAgIlgkfFhvcmckIiB8Z3JlcCAtdiBncmVwfCBhd2sgJ3twcmludCAkMX0nKQorKyAgICBYUElEPSQoIHBzIHwgYXdrICd7cHJpbnQgJDEsICQ2fScgfCBlZ3JlcCAiWCR8WG9yZyQiIHxncmVwIC12IGdyZXB8IGF3ayAne3ByaW50ICQxfScpCisgICAgIGlmIFsgLXogIiRYUElEIiBdOyB0aGVuCisgICAgICAgICBlY2hvICJTdGFydCB1cCBYIHNlcnZlciBGQUlMISIKKyAgZWNobworIyMjIyMjIyMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmIxZDNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgpAQCAtMCwwICsxLDEyMDAgQEAKK1sKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMucnBtXy1fX2luc3RhbGxfZGVwZW5kZW5jeV9wYWNrYWdlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiR2V0IGEgbm90IHByZXZpb3VzbHkgaW5zdGFsbGVkIFJQTSBwYWNrYWdlIG9yIGJ1aWxkIG9uZSBvbiBsb2NhbCBtYWNoaW5lLCB3aGljaCBzaG91bGQgaGF2ZSBydW4tdGltZSBkZXBlbmRlbmN5LkZvciBleGFtcGxlLCBcIm1jXCIgKE1pZG5pZ2h0IENvbW1hbmRlciwgd2hpY2ggaXMgYSB2aXN1YWwgZmlsZSBtYW5hZ2VyKSBzaG91bGQgZGVwZW5kIG9uIFwibmN1cnNlcy10ZXJtaW5mb1wiLiAgIFxuXG4kIGJpdGJha2UgbWMgIFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvcHkgdGhlIHBhY2thZ2UgaW50byBhIHN5c3RlbSBmb2xkZXIgKGZvciBleGFtcGxlIC9ob21lL3Jvb3QvcnBtX3BhY2thZ2VzKS4gIFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcInJwbSAtaXZoIHBhY2thZ2VfbmFtZVwiIGFuZCBjaGVjayB0aGUgb3V0cHV0LCBmb3IgZXhhbXBsZSBcInJwbSAtaXZoIG1jLnJwbSpcIiBzaG91bGQgcmVwb3J0IHRoZSBkZXBlbmRlbmN5IG9uIFwibmN1cnNlcy10ZXJtaW5mb1wiLlxuXG5cblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiMyAuIHJwbSBjb21tYW5kIHNob3VsZCByZXBvcnQgbWVzc2FnZSB3aGVuIHNvbWUgUlBNIGluc3RhbGxhdGlvbiBkZXBlbmRzIG9uIG90aGVyIHBhY2thZ2VzLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAicnBtXy1fX2luc3RhbGxfZGVwZW5kZW5jeV9wYWNrYWdlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5ib290X2FuZF9pbnN0YWxsX2Zyb21fVVNCIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1Z2luIHVzYiB3aGljaCBjb250YWlucyBsaXZlIGltYWdlIGJ1cm5lZCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzZXIgY2FuIGNob29zZSBpbnN0YWxsIHN5c3RlbSBmcm9tIHVzYiBzdGljayBvbnRvIGhhcmRkaXNrIGZyb20gYm9vdCBtZW51IG9yIGNvbW1hbmQgbGluZSBvcHRpb24gXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb25maWd1cmUgZGV2aWNlIEJJT1MgdG8gZmlyc3RseSBib290IGZyb20gVVNCIGlmIG5lY2Vzc2FyeSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluc3RhbGxlZCBzeXN0ZW0gY2FuIGJvb3QgdXAiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHRoZSBkZXZpY2UgYW5kIHNlbGVjdCBvcHRpb24gXCJJbnN0YWxsXCIgZnJvbSBib290IG1lbnUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwcm9jZWVkIHRocm91Z2ggZGVmYXVsdCBpbnN0YWxsIHByb2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZW1vdmUgVVNCLCBhbmQgcmVib290IGludG8gbmV3IGluc3RhbGxlZCBzeXN0ZW0uIFxuTm90ZTogICBJZiBpbnN0YWxsYXRpb24gd2FzIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgYW5kIHJlY2VpdmVkIHRoaXMgbWVzc2FnZSBcIlwiKHNkeCk6IFZvbHVtZSB3YXMgbm90IHByb3Blcmx5IHVubW91bnRlZC4uLlBsZWFzZSBydW4gZnNjay5cIlwiIGlnbm9yZSBpdCBiZWNhdXNlIHRoaXMgd2FzIHdoaXRlbGlzdGVkIGFjY29yZGluZyB0byBidWcgOTY1Mi4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImJvb3RfYW5kX2luc3RhbGxfZnJvbV9VU0IiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmxpdmVfYm9vdF9mcm9tX1VTQiIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlBsdWdpbiB1c2Igd2hpY2ggY29udGFpbnMgbGl2ZSBpbWFnZSBidXJuZWQuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVXNlciBjYW4gY2hvb3NlIGJvb3QgZnJvbSBsaXZlIGltYWdlIG9uIHVzYiBzdGljayBmcm9tIGJvb3QgbWVudSBvciBjb21tYW5kIGxpbmUgb3B0aW9uIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29uZmlndXJlIGRldmljZSBCSU9TIHRvIGZpcnN0bHkgYm9vdCBmcm9tIFVTQiBpZiBuZWNlc3NhcnkuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVib290IHRoZSBkZXZpY2UgYW5kIGJvb3QgZnJvbSBVU0Igc3RpY2suIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiTGl2ZSBpbWFnZSBjYW4gYm9vdCB1cCB3aXRoIHVzYiBzdGljayIKKyAgICAgICAgICAgICAgICB9CQkJCQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImxpdmVfYm9vdF9mcm9tX1VTQiIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuYm9vdF9mcm9tX3J1bmxldmVsXzMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IGludG8gc3lzdGVtIGFuZCBlZGl0IC9ldGMvaW5pdHRhYiB0byBtYWtlIHN1cmUgdGhhdCBzeXN0ZW0gZW50ZXIgYXQgdGhlIHJ1biBsZXZlbCAzIGJ5IGRlZmF1bHQsIHRoaXMgaXMgZG9uZSBieSBjaGFuZ2luZyB0aGUgbGluZSAgIFxuXG5cbmlkOjU6aW5pdGRlZmF1bHQgIFxuXG50byAgXG5cbmlkOjM6aW5pdGRlZmF1bHQgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZWJvb3Qgc3lzdGVtLCBhbmQgcHJlc3MgXCJUYWJcIiB0byBlbnRlciBcImdydWJcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCBpbnRvIHRoZSBcImtlcm5lbFwiIGxpbmUgd2l0aCB0aGUgZWRpdCBvcHRpb24gIFwiZVwiIGFuZCBhZGQgXCJwc3BsYXNoPWZhbHNlIHRleHRcIiBhdCB0aGUgZW5kIGxpbmUuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUHJlc3MgXCJGMTBcIiBvciBcImN0cmwreFwiIHRvIGJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSWYgc3lzdGVtIGFzayB5b3UgZm9yIGEgbG9naW4gdHlwZSBcInJvb3RcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlN5c3RlbSBzaG91bGQgYm9vdCB0byBydW4gbGV2ZWwgMywgc2hvd2luZyB0aGUgY29tbWFuZCBwcm9tcHQuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJib290X2Zyb21fcnVubGV2ZWxfMyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuYm9vdF9mcm9tX3J1bmxldmVsXzUiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IGludG8gc3lzdGVtIGFuZCBlZGl0IC9ldGMvaW5pdHRhYiB0byBtYWtlIHN1cmUgdGhhdCBzeXN0ZW0gZW50ZXIgYXQgdGhlIHJ1biBsZXZlbCA1IGJ5IGRlZmF1bHQsIHRoaXMgaXMgZG9uZSBieSBjaGFuZ2luZyB0aGUgbGluZSAgIFxuXG5pZDozOmluaXRkZWZhdWx0ICBcblxudG8gIFxuXG5pZDo1OmluaXRkZWZhdWx0ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVib290IHN5c3RlbSwgYW5kIHByZXNzIFwiVGFiXCIgdG8gZW50ZXIgXCJncnViXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJHZXQgaW50byB0aGUgXCJrZXJuZWxcIiBsaW5lIHdpdGggdGhlIGVkaXQgb3B0aW9uICBcImVcIiBhbmQgYWRkIFwicHNwbGFzaD1mYWxzZSB0ZXh0XCIgYXQgdGhlIGVuZCBsaW5lLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlByZXNzIFwiRjEwXCIgb3IgXCJjdHJsK3hcIiB0byBib290IHN5c3RlbSBcbk5vdGU6IFRoZSB0ZXN0IGlzIG9ubHkgZm9yIHNhdG8gaW1hZ2UuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU3lzdGVtIHNob3VsZCBib290IHRvIHJ1bmxldmVsIDUgLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiYm9vdF9mcm9tX3J1bmxldmVsXzUiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLnNodXRkb3duX3N5c3RlbSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIHRlcm1pbmFsIGFuZCBydW4gXCJzaHV0ZG93biAtaCBub3dcIiBvciBcInBvd2Vyb2ZmXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJTeXN0ZW0gY2FuIGJlIHNodXRkb3duIHN1Y2Nlc3NmdWxseSAuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2h1dGRvd25fc3lzdGVtIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5yZWJvb3Rfc3lzdGVtIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggdGVybWluYWwgYW5kIHJ1biBcInJlYm9vdFwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU3lzdGVtIGNhbiByZWJvb3Qgc3VjY2Vzc2Z1bGx5IC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJyZWJvb3Rfc3lzdGVtIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5zd2l0Y2hfYW1vbmdfbXVsdGlfYXBwbGljYXRpb25zX2FuZF9kZXNrdG9wIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIHNldmVyYWwgYXBwbGljYXRpb25zKGxpa2UgY29udGFjdHMsIGZpbGUgbWFuYWdlciwgbm90ZXMsIGV0YykiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ1c2VyIGNvdWxkIHN3aXRjaCBhbW9uZyBtdWx0aSBhcHBsaWNhdGlvbnMgYW5kIGRlc2t0b3AiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggdGVybWluYWwiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJzd2l0Y2ggYW1vbmcgbXVsdGkgYXBwbGljYXRpb25zIGFuZCBkZXNrdG9wIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2xvc2UgYXBwbGljYXRpb25zIFxuTm90ZTogVGhlIGNhc2UgaXMgZm9yIHNhdG8gaW1hZ2Ugb25seS4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJzd2l0Y2hfYW1vbmdfbXVsdGlfYXBwbGljYXRpb25zX2FuZF9kZXNrdG9wIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5VU0JfLV9tb3VudCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJvb3Qgc3lzdGVtIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQbHVnIFVTQiBzdGljaywgaXQgc2hvdWxkIGJlIG1vdW50IGluICAvcnVuL21lZGlhL3NkKHgpIElmIFgtd2luZG93IHN5c3RlbSBkb2VzIG5vdCBzdGFydCBhbmQgc2hvdyBVU0IgZGV2aWNlLCB0aGVuIHVzZSB0aGUgdGVybWluYWwgdG8gbW91bnQgaXQsIGZvbGxvd2luZyB0aGUgbmV4dCBzdGVwczogXG5hLiBMb2NhdGUgdGhlIHVzYiBzdGljayAodXN1YWxseSBpdCBpcyBvbiAvZGV2L3NkYikgXG5iLiBDcmVhdGUgYSBkaXJlY3Rvcnkgd2l0aCBcIm1rZGlyIHN0aWNrXCIgIChzbyB5b3Ugd2lsbCBoYXZlIHN1Y2ggYSBwYXRoIGFzOiAvaG9tZS9yb290L3N0aWNrKS4gXG5jLiBSdW4gdGhlIGNvbW1hbmQgIFwibW91bnQgIC9kZXYvc2RiICAvaG9tZS9yb290L3N0aWNrXCIgdG8gbW91bnQgIFVTQiBkZXZpY2Ugb24gaXQuIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJVU0IgZGV2aWNlIHNob3VsZCBiZSBtb3VudGVkIGluICAvcnVuL21lZGlhL3NkKHgpICBcbm9yIGluICAvaG9tZS9yb290L3N0aWNrICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGhlbiB5b3UgY2FuIGFjY2VzcyBVU0Igc3RpY2sgKC9ob21lL3Jvb3Qvc3RpY2spIHZpYSBUZXJtaW5hbCBvciBHVUkgIGFuZCB0cnkgdmFyaW91cyBjb21tYW5kcyBhbmQgYWN0aW9ucyBsaWtlIFwiY3BcIiwgXCJtdlwiLCBcInRvdWNoXCIgYW5kIFwicm1cIi4gIFR5cGUgXCJkbWVzZ1wiIGNvbW1hbmQgYW5kIGNoZWNrIGZvciByZWNlbnQgbW91bnRlZCBkZXZpY2VzLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkJhc2ljIGNvbW1hbmRzIHdvcmsgcHJvcGVybHkuIFRoZSBzeXN0ZW0gc2VuZHMgYSBub3RpZmljYXRpb24gaW4gXCJkbWVzZ1wiIGNvbW1hbmQsIHNob3dpbmcgdGhhdCB0aGUgVVNCIHN0aWNrIGlzIGFjY2Vzc2libGUgYW5kIHRoZSBkZXZpY2UgaXMgbW91bnRlZCAuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJVU0JfLV9tb3VudCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVVNCXy1fcmVhZF9maWxlcyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidmlldy9jb3B5IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWcgdXNiIHN0aWNrIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAidmlldyBmaWxlcyBpbiB1c2IgYnkgZmlsZSBicm93c2VyIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzb21lIGZpbGVzIGZyb20gdXNiIHRvIGxvY2FsIGhhcmR3YXJlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJVU0JfLV9yZWFkX2ZpbGVzIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5VU0JfLV91bW91bnQiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInVzYiBkaXJlY3RvcnkgaW4gZmlsZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgbWlzc2VkIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1ZyB1c2Igc3RpY2siLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ2aWV3IGZpbGVzIGluIHVzYiBieSBmaWxlIGJyb3dzZXIgXG40LnVucGx1ZyB1c2IiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlVTQl8tX3Vtb3VudCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVVNCXy1fd3JpdGVfZmlsZXMiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImNyZWF0ZS9jb3B5IHN1Y2Nlc3NmdWxseSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBsdWcgdXNiIHN0aWNrIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY3JlYXRlIGZpbGVzIGluIHVzYiBcbjQuY29weSBzb21lIGZpbGVzIGZyb20gbG9jYWwgaGFyZHdhcmUgdG8gdXNiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJVU0JfLV93cml0ZV9maWxlcyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuZXRoZXJuZXRfc3RhdGljX2lwX3NldF9pbl9jb25ubWFuIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCB0aGUgc3lzdGVtIGFuZCBjaGVjayBpbnRlcm5ldCBjb25uZWN0aW9uIGlzIG9uIC4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGNvbm5tYW5kLXByb3BlcnRpZXMgKHVwLXJpZ2h0IGNvcm5lciBvbiBkZXNrdG9wKSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNob29zZSAgRXRoZXJuZXQgZGV2aWNlIGFuZCBzZXQgYSB2YWxpZCBzdGF0aWMgaXAgYWRkcmVzcyBmb3IgaXQuIFxuRm9yIGV4YW1wbGUsIGluIG91ciBpbnRlcm5hbCBuZXR3b3JrLCB3ZSBjYW4gc2V0IGFzIGZvbGxvd2luZzogXG5pcCBhZGRyZXNzOiAxMC4yMzkuNDgueHh4IFxuTWFzazogMjU1LjI1NS4yNTUuMCBcbkdhdGV3YXkgKEJyb2FkY2FzdCk6IDEwLjIzOS40OC4yNTUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB0aGUgTmV0d29yayBjb25maWd1cmF0aW9uIHdpdGggXCJpZmNvbmZpZ1wiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU3RhdGljIElQIHdhcyBzZXQgc3VjY2Vzc2Z1bGx5ICBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInBpbmcgdG8gYW5vdGhlciBJUCBhZHJlc3MiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJQaW5nIHdvcmtzIGNvcnJlY2x0eVxuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJldGhlcm5ldF9zdGF0aWNfaXBfc2V0X2luX2Nvbm5tYW4iCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmV0aGVybmV0X2dldF9JUF9pbl9jb25ubWFuX3ZpYV9ESENQIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGNvbm5tYW5kLXByb3BlcnRpZXMgKHVwLXJpZ2h0IGNvcm5lciBvbiB5b3VyIGRlc2t0b3ApLiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayBpZiBFdGhlcm5ldCBkZXZpY2UgY2FuIHdvcmsgcHJvcGVybHkgd2l0aCBzdGF0aWMgSVAsIGRvaW5nIFwicGluZyBYWFguWFhYLlhYWC5YWFhcIiwgb25jZSB0aGlzIGlzIHNldC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJQaW5nIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseSAuICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVGhlbiBjaG9vc2UgREhDUCBtZXRob2QgZm9yIEV0aGVybmV0IGRldmljZSBpbiBjb25ubWFuZC1wcm9wZXJ0aWVzLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIHdpdGggJ2lmY29uZmlnXCIgYW5kIFwicGluZ1wiIGlmIEV0aGVybmV0IGRldmljZSBnZXQgSVAgYWRkcmVzcyB2aWEgREhDUC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJFdGhlcm5ldCBkZXZpY2UgY2FuIGdldCBkeW5hbWljIElQIGFkZHJlc3MgdmlhIERIQ1AgaW4gY29ubm1hbmQgLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiZXRoZXJuZXRfZ2V0X0lQX2luX2Nvbm5tYW5fdmlhX0RIQ1AiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5jb25ubWFuX29mZmxpbmVfbW9kZV9pbl9jb25ubWFuLWdub21lIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGNvbm5tYW4tcHJvcGVydGllcyBhZnRlciBzeXN0ZW0gYm9vdGluZyBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2hvb3NlIFwib2ZmbGluZSBtb2RlXCIgYW5kIGNoZWNrIHRoZSBjb25uZWN0aW9uIG9mIGFsbCBuZXR3b3JrIGludGVyZmFjZXMgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQWxsIGNvbm5lY3Rpb24gc2hvdWxkIGJlIG9mZiBhZnRlciBjbGlja2luZyBcIm9mZmxpbmUgbW9kZVwiIC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJjb25ubWFuX29mZmxpbmVfbW9kZV9pbl9jb25ubWFuLWdub21lIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5YX3NlcnZlcl9jYW5fc3RhcnRfdXBfd2l0aF9ydW5sZXZlbF81X2Jvb3QiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHVwIHN5c3RlbSB3aXRoIGRlZmF1bHQgcnVubGV2ZWwgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJYIHNlcnZlciBjYW4gc3RhcnQgdXAgd2VsbCBhbmQgZGVza3RvcCBkaXNwbGF5IGhhcyBubyBwcm9ibGVtIC4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ0eXBlIHJ1bmxldmVsIGF0IGNvbW1hbmQgcHJvbXB0IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiT3V0cHV0Ok4gNSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiWF9zZXJ2ZXJfY2FuX3N0YXJ0X3VwX3dpdGhfcnVubGV2ZWxfNV9ib290IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5zdGFuZGJ5IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0gYW5kIGxhdW5jaCB0ZXJtaW5hbDsgY2hlY2sgb3V0cHV0IG9mIFwiZGF0ZVwiIGFuZCBsYXVuY2ggc2NyaXB0IFwiY29udGludWUuc2hcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImVjaG8gXCJtZW1cIiA+IC9zeXMvcG93ZXIvc3RhdGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gZ28gaW50byBTMyBtb2RlLCBtb3ZlIG1vdXNlIG9yIHByZXNzIGFueSBrZXkgdG8gbWFrZSBpdCByZXN1bWUgKG9uIE5VQyBwcmVzcyBwb3dlciBidXR0b24pIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgXCJkYXRlXCIgYW5kIHNjcmlwdCBcImNvbnRpbnVlLnNoXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayBpZiBhcHBsaWNhdGlvbiBjYW4gd29yayBhcyBub3JtYWwgXG5jb250aW51ZS5zaCBhcyBiZWxvdzogXG4gXG4jIS9iaW4vc2ggXG4gXG5pPTEgXG53aGlsZSBbIDAgXSBcbmRvIFxuIGVjaG8gJGkgXG4gc2xlZXAgMSBcbiBpPSQoKGkrMSkpIFxuZG9uZSAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJTY3JlZW4gc2hvdWxkIHJlc3VtZSBiYWNrIGFuZCBzY3JpcHQgY2FuIHJ1biBjb250aW51b3VzbHkgaW5jcmVtZW50aW5nIHRoZSBpJ3MgdmFsdWUgZnJvbSB3aGVyZSBpdCB3YXMgYmVmb3JlIGdvaW5nIHRvIHN0YW5kYnkgc3RhdGUuIERhdGUgc2hvdWxkIGJlIHRoZSBzYW1lIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgdGltZSBpbmNyZW1lbnQuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJzdGFuZGJ5IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5jaGVja19DUFVfdXRpbGl6YXRpb25fYWZ0ZXJfc3RhbmRieSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlN0YXJ0IHVwIHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInJ1biBcInRvcFwiIGNvbW1hbmQgYW5kIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBwcm9jZXNzIGVhdGluZyBDUFUgdGltZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIm1ha2Ugc3lzdGVtIGludG8gc3RhbmRieSBhbmQgcmVzdW1lIGl0IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicnVuIFwidG9wXCIgY29tbWFuZCBhbmQgY2hlY2sgaWYgdGhlcmUgaXMgYW55IGRpZmZlcmVuY2Ugd2l0aCB0aGUgZGF0YSBiZWZvcmUgc3RhbmRieSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZXJlIHNob3VsZCBiZSBubyBiaWcgZGlmZmVyZW5jZSBiZWZvcmUvYWZ0ZXIgc3RhbmRieSB3aXRoIFwidG9wXCIgLiAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImNoZWNrX0NQVV91dGlsaXphdGlvbl9hZnRlcl9zdGFuZGJ5IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5UZXN0X2lmX0xBTl9kZXZpY2Vfd29ya3Nfd2VsbF9hZnRlcl9yZXN1bWVfZnJvbV9zdXNwZW5kX3N0YXRlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0gYW5kIGxhdW5jaCB0ZXJtaW5hbCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImVjaG8gXCJtZW1cIiA+IC9zeXMvcG93ZXIvc3RhdGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gZ28gaW50byBTMyBtb2RlLCBtb3ZlIG1vdXNlIG9yIHByZXNzIGFueSBrZXkgdG8gbWFrZSBpdCByZXN1bWUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjaGVjayBwaW5nIHN0YXR1cyAgXG5cbk5vdGU6IFRoaXMgVEMgYXBwbHkgb25seSBmb3IgY29yZS1pbWFnZS1mdWxsLWNtZCBhbmQgY29yZS1pbWFnZS1sc2IgLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInBpbmcgc2hvdWxkIGFsd2F5cyB3b3JrIGJlZm9yZS9hZnRlciBzdGFuZGJ5IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUZXN0X2lmX0xBTl9kZXZpY2Vfd29ya3Nfd2VsbF9hZnRlcl9yZXN1bWVfZnJvbV9zdXNwZW5kX3N0YXRlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5UZXN0X2lmX3VzYl9oaWRfZGV2aWNlX3dvcmtzX3dlbGxfYWZ0ZXJfcmVzdW1lX2Zyb21fc3VzcGVuZF9zdGF0ZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImJvb3Qgc3lzdGVtIGFuZCBsYXVuY2ggdGVybWluYWwiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJlY2hvIFwibWVtXCIgPiAvc3lzL3Bvd2VyL3N0YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgc3lzdGVtIGdvIGludG8gUzMgbW9kZSwgcmVzdW1lIHRoZSBkZXZpY2UgYnkgcHJlc3NpbmcgdGhlIHBvd2VyIGJ1dHRvbiBvciB1c2luZyBISUQgZGV2aWNlcyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkRldmljZXMgcmVzdW1lcyAiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjaGVjayB1c2IgbW91c2UgYW5kIGtleWJvYXJkIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVXNiIG1vdXNlIGFuZCBrZXlib2FyZCBzaG91bGQgd29yayIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9pZl91c2JfaGlkX2RldmljZV93b3Jrc193ZWxsX2FmdGVyX3Jlc3VtZV9mcm9tX3N1c3BlbmRfc3RhdGUiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5jbGlja190ZXJtaW5hbF9pY29uX29uX1hfZGVza3RvcCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIHN5c3RlbSBsYXVuY2ggYW5kIFggc3RhcnQgdXAsIGNsaWNrIHRlcm1pbmFsIGljb24gb24gZGVza3RvcCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIGlmIG9ubHkgb25lIHRlcm1pbmFsIHdpbmRvdyBsYXVuY2hlZCBhbmQgbm8gb3RoZXIgcHJvYmxlbSBtZXQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGVyZSBzaG91bGQgYmUgbm8gcHJvYmxlbSBhZnRlciBsYXVuY2hpbmcgdGVybWluYWwgLiAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImNsaWNrX3Rlcm1pbmFsX2ljb25fb25fWF9kZXNrdG9wIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtdG9vbHMuQWRkX211bHRpcGxlX2ZpbGVzX2luX21lZGlhX3BsYXllciIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBtZWRpYSBwbGF5ZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZGQgbXVsdGlwbGUgZmlsZXMoNSBmaWxlcykgaW4gbWVkaWEgcGxheWVyIGF0IHNhbWUgdGltZSAob2dnIG9yIHdhdikiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJWZXJpZnkgdGhlIHNvdW5kLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk1lZGlhIHBsYXllciBzaG91bGQgYmUgT0sgd2l0aCB0aGlzIGFjdGlvbiwgaXQgcmVwcm9kdWNlIGZpbGVzIGNvcnJlY3RseS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkFkZF9tdWx0aXBsZV9maWxlc19pbl9tZWRpYV9wbGF5ZXIiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLmNoZWNrX2Jhc2hfaW5faW1hZ2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzeXN0ZW0gaXMgdXAsIGNoZWNrIGlmIGJhc2ggY29tbWFuZCBleGlzdHMgd2l0aCBjb21tYW5kIFwid2hpY2ggYmFzaFwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiYmFzaCBjb21tYW5kIHNob3VsZCBleGlzdCBpbiBpbWFnZSBnaXZpbmcgc29tZXRoaW5nIGFzIGJlbG93ICBcIi9iaW4vYmFzaFwiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJjaGVja19iYXNoX2luX2ltYWdlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5NaWNyb1NEXy1fX21vdW50IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJzeXN0ZW0gbm90aWZ5IHRoYXQgTWljcm9TRGlzIGFjY2Vzc2libGUiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwbHVnIE1pY3JvU0QgY2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiTWljcm9TRF8tX19tb3VudCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuTWljcm9TRF8tX19yZWFkX2ZpbGVzIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ2aWV3L2NvcHkgc3VjY2Vzc2Z1bGx5IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1ZyBNaWNyb1NEIGNhcmQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ2aWV3IGZpbGVzIGluTWljcm9TRCBieSBmaWxlIGJyb3dzZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb3B5IHNvbWUgZmlsZXMgZnJvbU1pY3JvU0QgdG8gbG9jYWwgaGFyZHdhcmUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIk1pY3JvU0RfLV9fcmVhZF9maWxlcyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuTWljcm9TRF8tX191bW91bnQiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJib290IHN5c3RlbSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk1pY3JvU0QgaW4gZmlsZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgbWlzc2VkIC4gIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAicGx1ZyBNaWNyb1NEIGNhcmQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ2aWV3IGZpbGVzIGluIE1pY3JvU0RieSBmaWxlIGJyb3dzZXIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ1bnBsdWcgTWljcm9TRCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CQkJCQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIk1pY3JvU0RfLV9fdW1vdW50IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5NaWNyb1NEXy1fX3dyaXRlX2ZpbGVzIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiYm9vdCBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJjcmVhdGUvY29weSBzdWNjZXNzZnVsbHkiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJwbHVnIE1pY3JvU0QgY2FyZCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNyZWF0ZSBmaWxlcyBpbiBNaWNyb1NEIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzb21lIGZpbGVzIGZyb20gbG9jYWwgaGFyZHdhcmUgdG8gTWljcm9TRCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiTWljcm9TRF8tX193cml0ZV9maWxlcyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLnZpZGVvXy1fbGlidmFfY2hlY2tfKG9nZ192aWRlb19wbGF5KSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImNoZWNrIGlmIGxpYnZhIGlzIGluc3RhbGxlZCBvbiBzeXN0ZW0gKG9yIGxpYm9nZykiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb3B5IHNhbXBsZSBvZ2cgZmlsZSB0byBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggbWVkaWEgcGxheWVyIGNhbiBwbGF5IHRoZSBvZ2cgZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIm9nZyBmaWxlIGNhbiBiZSBwbGF5ZWQgd2l0aG91dCBwcm9ibGVtIHdoZW4gbGlidmEgaXMgdXNlZCAob3IgbGlib2dnKSAiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInZpZGVvXy1fbGlidmFfY2hlY2tfKG9nZ192aWRlb19wbGF5KSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLm1lZGlhX3BsYXllcl8tX3VuYWJsZV90b19wbGF5X01QRUctMV93aXRob3V0X1wiY29tbWVyY2lhbFwiX2ZsYWciLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb3B5IHNhbXBsZSBNUEVHLTEgZmlsZSB0byBhIHN5c3RlbSB3aXRob3V0IHRoZSBcImNvbW1lcmNpYWxcIiBmbGFnLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCBtZWRpYSBwbGF5ZXIgYW5kIG1ha2Ugc3VyZSBpdCBjYW5ub3QgcGxheSB0aGUgTVBFRy0xIGZpbGUuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiTVBFRy0xIGZpbGUgY2FuIG5vdCBiZSBwbGF5ZWQgb24gaW1hZ2VzIHdpdGhvdXQgdGhlIFwiY29tbWVyY2lhbFwiIGZsYWcuICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAibWVkaWFfcGxheWVyXy1fdW5hYmxlX3RvX3BsYXlfTVBFRy0xX3dpdGhvdXRfXCJjb21tZXJjaWFsXCJfZmxhZyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLm1lZGlhX3BsYXllcl8tX3BsYXlfdmlkZW9fKG9ndikiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb3B5IHNhbXBsZSBvZ3YgZmlsZSB0byBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggbWVkaWEgcGxheWVyIGFuZCBtYWtlIHN1cmUgaXQgY2FuIHBsYXkgdGhlIG9ndiBmaWxlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAib2d2IGZpbGUgY2FuIGJlIHBsYXllZCB3aXRob3V0IHByb2JsZW0iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIm1lZGlhX3BsYXllcl8tX3BsYXlfdmlkZW9fKG9ndikiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5tZWRpYV9wbGF5ZXJfLV9zdG9wL3BsYXlfYnV0dG9uXyhvZ3YpIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY29weSBzYW1wbGUgb2d2IGZpbGUgdG8gc3lzdGVtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAibGF1bmNoIG1lZGlhIHBsYXllciBjYW4gcGxheSB0aGUgb2d2IGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjbGljayBcInN0b3BcIiBidXR0b24gdG8gc3RvcCBwbGF5aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2xpY2sgXCJzdGFydFwiIGJ1dHRvbiB0byByZXN1bWUgcGxheWluZyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIm9ndiBmaWxlIGNhbiBiZSBzdGFydC9zdG9wIHdpdGhvdXQgcHJvYmxlbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAibWVkaWFfcGxheWVyXy1fc3RvcC9wbGF5X2J1dHRvbl8ob2d2KSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLmF1ZGlvXy1fcGxheV8ob2dnKV93aXRoX0hETUkiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb3B5IHNhbXBsZSBvZ2cgZmlsZSB0byBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb25uZWN0IHN5c3RlbSB3aXRoIGEgbW9uaXRvciB3aXRoIEhETUkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggbWVkaWEgcGxheWVyIGFuZCBwbGF5IHRoZSBvZ2cgZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIm9nZyBmaWxlIGNhbiBiZSBwbGF5ZWQgd2l0aG91dCBwcm9ibGVtIHdpdGggSERNSSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiYXVkaW9fLV9wbGF5XyhvZ2cpX3dpdGhfSERNSSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLmF1ZGlvXy1fcGxheV8od2F2KV93aXRoX0hETUkiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb3B5IHNhbXBsZSB3YXYgZmlsZSB0byBzeXN0ZW0iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjb25uZWN0IHN5c3RlbSB3aXRoIGEgbW9uaXRvciB3aXRoIEhETUkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJsYXVuY2ggbWVkaWEgcGxheWVyIGFuZCBwbGF5IHRoZSB3YXYgZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIndhdiBmaWxlIGNhbiBiZSBwbGF5ZWQgd2l0aG91dCBwcm9ibGVtLCB3aXRoIEhETUkiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogImF1ZGlvXy1fcGxheV8od2F2KV93aXRoX0hETUkiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy10b29scy5HcmFwaGljc18tX0FCQVQiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJEb3dubG9hZCBBQkFUIHRlc3Qgc3VpdGUgZnJvbSBpbnRlcm5hbCBnaXQgcmVwb3NpdG9yeSwgZ2l0IGNsb25lIGdpdDovL3RpbmRlcmJveC5zaC5pbnRlbC5jb20vZ2l0L2FiYXQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBcHBseSBmb2xsb3dpbmcgcGF0Y2ggdG8gbWFrZSBpdCB3b3JrIG9uIHlvY3RvIGVudmlyb25tZW50IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiLi9hYmF0LnNoXCIgdG8gcnVuIEFCQVQgdGVzdCByZWZlciB0byBhYmF0LnBhdGNoIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQWxsIEFCQVQgdGVzdCBzaG91bGQgcGFzcy4gXG5Ob3RlIDogSWYgYmVsb3cgMyBmYWlscyBhcHBlYXJzIGlnbm9yZSB0aGVtLiBcbi0gc3RhcnQgdXAgWCBzZXJ2ZXIgZmFpbC4uIGR1ZSBpcyBhbHJlYWR5IHVwIFxuLSBtb2R1bGUgW2ludGVsX2FncF0gXG4tIG1vZHVsZSBbaTkxNV0iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkdyYXBoaWNzXy1fQUJBVCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXRvb2xzLkdyYXBoaWNzXy1feDExcGVyZl8tXzJEIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwieDExcGVyZiAtYWExMHRleHRcIiBhbmQgXCJ4MTFwZXJmIC1yZ2IxMHRleHRcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCB0aGUgRlBTIHJlc3VsdCBhbmQgY29tcGFyZSBpdCB3aXRoIHVwc3RyZWFtIGdyYXBoaWNzIGRhdGEgb24gU2FuZHlicmlkZ2UiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGVyZSBzaG91bGQgbm90IGJlIGJpZyByZWdyZXNzaW9uIGJldHdlZW4gWW9jdG8gYW5kIHVwc3RyZWFtIGxpbnV4IC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJHcmFwaGljc18tX3gxMXBlcmZfLV8yRCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLW9lLWNvcmUuVGVzdF9SdW5fSW50ZWdyaXR5Xy1fQ2hlY2tfdGhhdF9pbWFnZV9pc19idWlsZGFibGUiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJjb3JuZWxpdXguc3RvaWNlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvcm5lbGl1eC5zdG9pY2VzY3VAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIHRoYXQgaW1hZ2UgY2FuIGJlIGJ1aWx0IHVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHM6ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2sgdGhhdCBpbWFnZSBpcyBidWlsdCBieSBhdXRvYnVpbGRlciBcblBsZWFzZSBjaGVjayBhdDogaHR0cHM6Ly9hdXRvYnVpbGRlci55b2N0by5pby9wdWIvcmVsZWFzZXMvIFxuQ2hvb3NlIHRoZSB0YXJnZXQgcmVsZWFzZSB0aGF0IHlvdSBhcmUgdmFsaWRhdGluZy4gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBpbWFnZSB5b3Vyc2VsZiBcblByZWZlcnJlZCB0byBidWlsZCBhbiBjb3JlLWltYWdlLXNhdG8tZGV2IHRvIGVhc2UgdGhlIHByb2Nlc3Mgb2YgdGhlIGRlcGVuZGVudCB0ZXN0IGNhc2VzIGluIHRoaXMgcnVuLiBcbk5vdGU6IFBsZWFzZSBzZXQgTUFDSElORSBpbiBjb25mL2xvY2FsLmNvbmYgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSWYgZWl0aGVyIG1ldGhvZCBmYWlscywgdGhpcyB0ZXN0IGNhc2Ugd2lsbCBiZSBmYWlsZWQgYW5kIGRlcGVuZGVudCB0ZXN0IGNhc2VzIHdpbGwgYmUgYmxvY2tlZC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUZXN0X1J1bl9JbnRlZ3JpdHlfLV9DaGVja190aGF0X2ltYWdlX2lzX2J1aWxkYWJsZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuQ2hlY2tfaWZfU0FUQV9kaXNrX2Nhbl93b3JrX2NvcnJlY3RseSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gZmRpc2sgY29tbWFuZCB0byBjcmVhdGUgcGFydGl0aW9uIG9uIFNBVEEgZGlzay4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIFNBVEEgZGV2aWNlIGNhbiBtb3VudCwgdW1vdW50LCByZWFkIGFuZCB3cml0ZS4gIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTW91bnQvVW1vdW50IFxuICBta2UyZnMgL2Rldi9zZGExIFxuICBtb3VudCAtdCBleHQyIC9kZXYvc2RhMSAvbW50L2Rpc2sgIFxuICB1bW91bnQgL21udC9kaXNrIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVhZC9Xcml0ZSAoZmlsZXN5c3RlbSkgXG4gIHRvdWNoIC9tbnQvZGlzay90ZXN0LnR4dCBcbiAgZWNobyBhYmNkID4gL21udC9kaXNrL3Rlc3QudHh0IFxuICBjYXQgL21udC9kaXNrL3Rlc3QudHh0IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmVhZC9Xcml0ZSAocmF3KSBcbiAgZGQgaWY9L2Rldi9zZGExIG9mPS90bXAvdGVzdCBicz0xayBjb3VudD0xayAgXG4gIFRoaXMgY29tbWFuZCB3aWxsIHJlYWQgMU1CIGZyb20gL2Rldi9zZGExIHRvIC90bXAvdGVzdCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiQ2hlY2tfaWZfU0FUQV9kaXNrX2Nhbl93b3JrX2NvcnJlY3RseSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuSW5zdGFsbF9hbmRfYm9vdF9mcm9tX1VTQi1kcml2ZV90b19IREQtZHJpdmUiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJkYXZpZC5pc3JhZWx4LnJvZHJpZ3Vlei5jYXN0ZWxsYW5vc0BpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJkYXZpZC5pc3JhZWx4LnJvZHJpZ3Vlei5jYXN0ZWxsYW5vc0BpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiR2V0IGEgSEREIGRyaXZlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzZXIgY2FuIGNob29zZSBpbnN0YWxsIHN5c3RlbSBmcm9tIFVTQiBzdGljayBvbiBIREQgZHJpdmUgZnJvbSBib290IG1lbnUgb3IgY29tbWFuZCBsaW5lIG9wdGlvbiBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlBsdWdpbiBVU0Igd2hpY2ggY29udGFpbnMgbGl2ZSBpbWFnZSBidXJuZWQgKFVTQjEpLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluc3RhbGxlZCBzeXN0ZW0gY2FuIGJvb3QgdXAuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29uZmlndXJlIGRldmljZSBCSU9TIHRvIGZpcnN0bHkgYm9vdCBmcm9tIFVTQiBpZiBuZWNlc3NhcnkiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IHRoZSBkZXZpY2UgYW5kIHNlbGVjdCBvcHRpb24gXCJJbnN0YWxsXCIgIGZyb20gYm9vdCBtZW51LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk1ha2Ugc3VyZSB0aGF0IHRoZSBkaXZpY2UgaW4gd2hpY2ggaW1hZ2UgaXMgZ29pbmcgdG8gYmUgaW5zdGFsbGVkIGlzIHRoZSBIREQgZHJpdmUuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUHJvY2VlZCB0aHJvdWdoIGRlZmF1bHQgaW5zdGFsbCBwcm9jZXNzLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJlbW92ZSBVU0IxLCBhbmQgcmVib290IGludG8gbmV3IGluc3RhbGxlZCBzeXN0ZW0uIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJJbnN0YWxsX2FuZF9ib290X2Zyb21fVVNCLWRyaXZlX3RvX0hERC1kcml2ZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuSW5zdGFsbF9hbmRfYm9vdF9mcm9tX1VTQi1kcml2ZV90b19TRC1kcml2ZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImRhdmlkLmlzcmFlbHgucm9kcmlndWV6LmNhc3RlbGxhbm9zQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImRhdmlkLmlzcmFlbHgucm9kcmlndWV6LmNhc3RlbGxhbm9zQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJHZXQgYSBTRC1kcml2ZSB3aXRoIGVub3VnaCBmcmVlIHNwYWNlIHRvIGluc3RhbGwgYW4gaW1hZ2UuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVXNlciBjYW4gY2hvb3NlIGluc3RhbGwgc3lzdGVtIGZyb20gVVNCIHN0aWNrIG9uIFNELWRyaXZlIGZyb20gYm9vdCBtZW51IG9yIGNvbW1hbmQgbGluZSBvcHRpb24uIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUGx1Z2luIFVTQiB3aGljaCBjb250YWlucyBsaXZlIGltYWdlIGJ1cm5lZCAoVVNCMSkuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSW5zdGFsbGVkIHN5c3RlbSBjYW4gYm9vdCB1cC4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb25maWd1cmUgZGV2aWNlIEJJT1MgdG8gZmlyc3RseSBib290IGZyb20gVVNCIGlmIG5lY2Vzc2FyeSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJvb3QgdGhlIGRldmljZSBhbmQgc2VsZWN0IG9wdGlvbiBcIkluc3RhbGxcIiAgZnJvbSBib290IG1lbnUuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTWFrZSBzdXJlIHRoYXQgdGhlIGRldmljZSBpbiB3aGljaCBpbWFnZSBpcyBnb2luZyB0byBiZSBpbnN0YWxsZWQgaXMgdGhlIFNELWRyaXZlLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlByb2NlZWQgdGhyb3VnaCBkZWZhdWx0IGluc3RhbGwgcHJvY2Vzcy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZW1vdmUgVVNCMSwgYW5kIHJlYm9vdCBpbnRvIG5ldyBpbnN0YWxsZWQgc3lzdGVtLiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiSW5zdGFsbF9hbmRfYm9vdF9mcm9tX1VTQi1kcml2ZV90b19TRC1kcml2ZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiYnNwcy1ody5ic3BzLXJ1bnRpbWUuVGVzdF9ib290X29uX3NlcmlhbF9jb21tdW5pY2F0aW9uX1NEIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiMS4tIENyZWF0ZSBhIHlvY3RvIHByb2plY3QgaW1hZ2UgaW4gYSBTRCBjYXJkIFxuZXhhbXBsZSBcbjIgLSBDb25maWd1cmUgYSBjb25uZWN0aW9uIGxpa2Ugc2hvd24gaW4gdGhlIGxpbmsgYXZvYmU6IFxuaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NaW5ub3dNYXhfYm9hcmRfU2VyaWFsX3ZpZGVvX2Nvbm5lY3Rpb25fZ3VpZGUgXG4zIC0gVmVyaWZ5IHRoZSBNaW5vdyBNYXggYm9hcmQgaXMgY29ubmVjdGVkIHRvIHRoZSBob3N0IFxuNCAtIEJvb3QgdGhlIHN5c3RlbSB0byBkZXNrdG9wIFxuNSAtIE9wZW4gYSBUZXJtaW5hbCBhbmQgY2hlY2sgdGhlIElQICBcbkluIFRlcm1pbmFsIHR5cGUgJGlmY29uZmlnXCIiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJWZXJpZnkgeW91IGNhbiBjcmVhdGUgYSBsaXZlIGltYWdlICBcbiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVGVzdF9ib290X29uX3NlcmlhbF9jb21tdW5pY2F0aW9uX1NEIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5UZXN0X2Jvb3Rfb25fc2VyaWFsX2NvbW11bmljYXRpb25fSEREIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiMSAtIENyZWF0ZSBhIHlvY3RvIHByb2plY3QgaW1hZ2UgaW4gYSBIREQgXG5leGFtcGxlIFxuMiAtIENvbmZpZ3VyZSBhIGNvbm5lY3Rpb24gbGlrZSBzaG93biBpbiB0aGUgbGluayBhdm9iZTogXG5odHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL01pbm5vd01heF9ib2FyZF9TZXJpYWxfdmlkZW9fY29ubmVjdGlvbl9ndWlkZSBcbjMgLSBWZXJpZnkgdGhlIE1pbm93IE1heCBib2FyZCBpcyBjb25uZWN0ZWQgdG8gdGhlIGhvc3QgXG40IC0gQm9vdCB0aGUgc3lzdGVtIHRvIGRlc2t0b3AgXG41IC0gT3BlbiBhIFRlcm1pbmFsIGFuZCBjaGVjayB0aGUgSVAgIFxuSW4gVGVybWluYWwgdHlwZSAkaWZjb25maWdcIj4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVmVyaWZ5IHlvdSBjYW4gY3JlYXRlIGEgbGl2ZSBpbWFnZSAgXG4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIlRlc3RfYm9vdF9vbl9zZXJpYWxfY29tbXVuaWNhdGlvbl9IREQiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ydW50aW1lLlRlc3RfYm9vdF9vbl9zZXJpYWxfY29tbXVuaWNhdGlvbl9VU0IiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAianVhbi5mZXJuYW5kb3gucmFtb3MuZnJheWxlQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIxLi0gQ3JlYXRlIGEgeW9jdG8gcHJvamVjdCBpbWFnZSBpbiBhIFVTQiBcbmV4YW1wbGUgPGRkIGlmPSBjb3JlLWltYWdlLXNhdG8tc2RrLmhkZGltZyBvZiA9L2Rldi9zZGI+IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVmVyaWZ5IHlvdSBjYW4gY3JlYXRlIGEgbGl2ZSBpbWFnZSAgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb25maWd1cmUgYSBjb25uZWN0aW9uIGxpa2Ugc2hvd24gaW4gdGhlIGxpbmsgYXZvYmU6IFxuaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9NaW5ub3dNYXhfYm9hcmRfU2VyaWFsX3ZpZGVvX2Nvbm5lY3Rpb25fZ3VpZGVcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVmlkZW8gc2lnbmFsIGlzIHByZXNlbnQgYW5kIG5vdCBkZWxheWVkIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIFZlcmlmeSB0aGUgTWlub3cgTWF4IGJvYXJkIGlzIGNvbm5lY3RlZCB0byB0aGUgaG9zdCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSB0aGUgc3lzdGVtIGJvb3Qgb2sgYW5kIG5vIGVycm9ycyBhcmUgcHJlc2VudCBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBCb290IHRoZSBzeXN0ZW0gdG8gZGVza3RvcCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiBDaGVjayB0aGF0IGEgdmFsaWQgSVAgaXMgcmV0cmlldmVkIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIE9wZW4gYSBUZXJtaW5hbCBhbmQgY2hlY2sgdGhlIElQICBcbkluIFRlcm1pbmFsIHR5cGUgJGlmY29uZmlnXCIgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUZXN0X2Jvb3Rfb25fc2VyaWFsX2NvbW11bmljYXRpb25fVVNCIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtcnVudGltZS5UZXN0X1NlZWtfYmFyX2FuZF92b2x1bWVfY29udHJvbCIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImp1YW4uZmVybmFuZG94LnJhbW9zLmZyYXlsZUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJqdWFuLmZlcm5hbmRveC5yYW1vcy5mcmF5bGVAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biBtZWRpYSBwbGF5ZXIgYW5kIGxvYWQgYSBtZWRpYSBmaWxlICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk1lZGlhIHBsYXllciBjb3JyZWN0bHkgb3BlbiBhdWRpby92aWRlbyBmaWxlIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoYXQgc2VlayBhbmQgdm9sdW1lIGNvbnRyb2wgYXJlIHByZXNlbnQgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiU2VlayBiYXIgYW5kIHZvbHVtZSBjb250cm9sIGFyZSBwcmVzZW50IFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoYXQgc2VsZWN0aW5nIHRoZSBzcGVha2VyIGljb24gb3BlbnMgdGhlIHZvbHVtZSBjb250cm9sIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVm9sdW1lIGNvbnRyb2wgYmFyIG11c3QgYXBwZWFyIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHlvdSBjYW4gaW5jcmVhc2UgYW5kIGRlY3JlYXNlIHZvbHVtZSBsZXZlbCB3aXRoIHRoZSB2b2x1bWUgY29udHJvbCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZvbHVtZSBsZXZlbCBtdXN0IGJlIGluY3JlYXNlZCBhbmQgZGVjcmVhc2VkIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiT2JzZXJ2ZSB0aGF0IHNsaWRlciBvbiB0aGUgc2VlayBiYXIgbW92ZXMgYWxvbmcgd2l0aCB0aGUgdmlkZW8vYXVkaW8gcGxheSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZpZGVvL2F1ZGlvIGZpbGUgY2FuIGJlIHBsYXllZCBhbmQgc2xpZGVyIG1vdmVzIGFsb25nIHdpdGggdGhlIHZpZGVvL2F1ZGlvIHBsYXkgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJWZXJpZnkgeW91IGNhbiBuYXZpZ2F0ZSB0aGUgdmlkZW8gd2l0aCB0aGUgc2xpZGVyIGJhY2sgYW5kIGZvcndhcmQiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgc2xpZGVyIGNhbiBtb3ZlIGJhY2sgYW5kIGZvcndhcmQgaW4gdGhlIHNlZWsgYmFyIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoYXQgc2VlayBhbmQgdm9sdW1lIGNvbnRyb2wgYXJlIGZ1bmN0aW9uYWwgaW4gZnVsbCBzY3JlZW4gbW9kZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlByZXNzIHRoZSBmdWxsIHNjcmVlbiBtb2RlIGljb24sIHNlZWsgYmFyIGFuZCB2b2x1bWUgY29udHJvbCBtdXN0IHdvcmsgZmluZSBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlZlcmlmeSB0aGF0IHByZXNzaW5nIDw8IG9yID4+IHdoaWxlIHBsYXlpbmcgYSBmaWxlIG1ha2VzIHRoZSBzbGlkZSBnb2VzIHNsb3cvYmFja3dhcmRzIG9yIGZhc3RlciIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSA8PCBhbmQgPj4gd29ya3MgY29ycmVjdGx5IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUZXN0X1NlZWtfYmFyX2FuZF92b2x1bWVfY29udHJvbCIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1xZW11Lmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1xZW11Lmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI2MGFmNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLXFlbXUuanNvbgpAQCAtMCwwICsxLDIyMiBAQAorWworICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogImJzcHMtcWVtdS5ic3BzLXRvb2xzLnFlbXVfY2FuX2JlX3N0YXJ0ZWRfd2l0aF9LVk1fZW5hYmxlZCIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIGEga2VybmVsIHdpdGggS1ZNIGVuYWJsZWQgIFxuXG5JbiBMb2NhbC5jb25mIGFkZCAgXG5cblFFTVVfVVNFX0tWTSA9IFwiJHtAICdpbnRlbC1jb3JlaTctNjQgaW50ZWwtY29yZTItMzIgcWVtdXg4NiBxZW11eDg2LTY0JyBpZiBvcy5hY2Nlc3MoJy9kZXYva3ZtJywgb3MuUl9PS3xvcy5XX09LKSBlbHNlICcnIH1cIiAgXG5cbiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJTdGFydCBxZW11IHdpdGggb3B0aW9uIFwia3ZtXCIgd2l0aCBydW5xZW11IFxuICAgIGEuIElmIHlvdSBzdGFydCBxZW11IHdpdGgga3ZtIGZhaWxlZCwgbWF5YmUgaXQgaXMgYmVjYXVzZSBob3N0IG5vdCBpbnN0YWxsIGt2bSBhbmQgdmhvc3RfbmV0IG1vZHVsZS4gRm9sbG93IGJlbG93IGxpbmsgdG8gaW5zdGFsbCB0aGVtLiBcbiAgICBiLiB2aG9zdF90ZXN0IHJlZmVyOiAgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9SdW5uaW5nX2FuX3g4Nl9Zb2N0b19MaW51eF9pbWFnZV91bmRlcl9RRU1VX0tWTSBcbiAgICBjLiBrdm0gcmVmZXI6IGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvSG93X3RvX2VuYWJsZV9LVk1fZm9yX1Bva3lfcWVtdSIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIGlmIHFlbXUgc3RhcnRzIHVwIGFuZCBpZiBrdm1faW50ZWwgbW9kdWxlIGlzIHVzZWQiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJJZiBrdm1faW50ZWwgbW9kdWxlIGlzIG5vdCB1c2VkIHdoZW4gc3RhcnRpbmcgcWVtdSwgaXQgd2lsbCBzaG93IDAgaW4gXCJVc2VkIGJ5XCIgY29sdW1uIHdoZW4geW91IHJ1biBcImxzbW9kIHwgZ3JlcCBrdm1faW50ZWxcIiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIktWTSBlbmFibGVkIHdpdGggcWVtdSBcbkV4ZWN1dGUgXCJsc21vZCB8IGdyZXAga3ZtX2ludGVsXCIgZnJvbSB5b3VyIGhvc3QgdHdpY2UsIGJlZm9yZSBhbmQgYWZ0ZXIgeW91IFxuc3RhcnQgdGhlIHFlbXUgd2l0aCBrdm0gb3B0aW9uLiBCZWZvcmUgc3RhcnQsIHRoZSBudW1iZXIgc2hvdWxkIGJlIDAsIFxuYWZ0ZXIgc3RhcnQsIHRoZSBudW1iZXIgc2hvdWxkIGJpZ2dlciB0aGFuIDAuIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAicWVtdV9jYW5fYmVfc3RhcnRlZF93aXRoX0tWTV9lbmFibGVkIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy10b29scy5Qb3N0LWluc3RhbGxhdGlvbl9sb2dnaW5nIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkRvd25sb2FkIHRoZSBwb2t5IHNvdXJjZSBhbmQgc2V0IGVudmlyb25tZW50IFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgL3Zhci9sb2cvcG9zdGluc3RhbGwubG9nIHNob3VsZCBleGlzdCBpbiB0aGUgZmlyc3QgYm9vdC4gVGhlIGNvbnRlbnQgb2YgdGhpcyBsb2cgaXMgbGlrZSBiZWxvdzogIFxuXG5SdW5uaW5nIHBvc3RpbnN0IC9ldGMvcnBtLXBvc3RpbnN0cy9tYW4uLi4gXG5MaXN0IGRpcmVjdG9yeSB0byBjaGVjayB0aGUgb3V0cHV0IGxvZyBcbmJpbiBcbmJvb3QgXG5kZXYgXG5ldGMgXG5ob21lIFxubGliIFxubG9zdCtmb3VuZCBcbm1lZGlhIFxubW50IFxucHJvYyBcbnJ1biBcbnNiaW4gXG5zeXMgXG50bXAgXG51c3IgXG52YXIgXG5MaXN0IG5vbmV4aXN0IGRpcmVjdG9yeSB0byBjaGVjayB0aGUgc3RkZXJyIHJlZGlyZWN0aW9uIGxvZyBcbmxzOiAvbm9uZXhpc3Q6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkgIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkFkZCB0aGUgZm9sbG93aW5nIGxpbmVzIHRvIGEgLmJiIGZpbGUuIEZvciBleHBhbXBsZSwgbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNi4ycDIuYmI6ICAgXG5cbnBrZ19wb3N0aW5zdF9vbnRhcmdldF8ke1BOfSAoKSB7ICBcbiAgICAgICAjIS9iaW4vc2ggLWUgIFxuICAgICAgIGlmIFsgeFwiJERcIiA9IFwieFwiIF07IHRoZW4gIFxuICAgICAgIGVjaG8gXCJMaXN0IGRpcmVjdG9yeSB0byBjaGVjayB0aGUgb3V0cHV0IGxvZ1wiICBcbiAgICAgICBscyAvICBcbiAgICAgICBlY2hvIFwiTGlzdCBub25leGlzdCBkaXJlY3RvcnkgdG8gY2hlY2sgdGhlIHN0ZGVyciByZWRpcmVjdGlvbiBsb2dcIiAgXG4gICAgICAgbHMgL25vbmV4aXN0ICBcbiAgICAgICBlbHNlICBcbiAgICAgICBleGl0IDEgIFxuICAgICAgIGZpICBcbn0gIFxuXG5NYWtlIHN1cmUgdGhlIGZlYXR1cmUgXCJkZWJ1Zy10d2Vha3NcIiBpcyBhZGRlZCBpbiBjb25mL2xvY2FsLmNvbmYgXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZGQgc3NoLXNlcnZlci1vcGVuc3NoIHRvIEVYVFJBX0lNQUdFX0ZFQVRVUkVTIGluIGxvY2FsLmNvbmYgXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCBjb3JlLWltYWdlLW1pbmltYWwgXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjUiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJCb290IHVwIHRoZSBpbWFnZSBhbmQgY2hlY2sgdGhlIC92YXIvbG9nL3Bvc3RpbnN0YWxsLmxvZyAgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJQb3N0LWluc3RhbGxhdGlvbl9sb2dnaW5nIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy10b29scy5BZGRfdXNlcl93aXRoX2NsZWFydGV4dF90eXBlX3Bhc3N3b3JkX2R1cmluZ19maWxlc3lzdGVtX2NvbnN0cnVjdGlvbiIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImtlLnpvdUB3aW5kcml2ZXIuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJrZS56b3VAd2luZHJpdmVyLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiRG93bmxvYWQgdGhlIHBva3kgc291cmNlIGFuZCBzZXQgdGhlIGVudmlyb25tZW50ICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJObyBlcnJvciBkdXJpbmcgaW1hZ2UgYnVpbGRpbmcgcHJvY2VkdXJlLiBcbiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZGQgdGhlIGZvbGxvd2luZyBsaW5lcyBpbiBjb25mL2xvY2FsLmNvbmYgIFxuXG5JTkhFUklUICs9IFwiZXh0cmF1c2Vyc1wiICBcblxuRVhUUkFfVVNFUlNfUEFSQU1TID0gXCJcXCBcbnVzZXJhZGQgLXMgL2Jpbi9zaCAtUCAndGVzdGVyMycgdGVzdGVyMztcXCBcblwiICBcblxuVGhlIGFib3ZlIHNldHRpbmdzIGRvIHRoZSBmb2xsb3dpbmcgdGhpbmdzOiBcbmEuIEFkZCBhIHVzZXIgdGVzdGVyMyB3aXRoIGNsZWFydGV4dCBwYXNzd29yZCAndGVzdGVyMycgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJJbWFnZSBjYW4gYm9vdCB1cCBcbiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCB0aGUgaW1hZ2VcbiAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkxvZ2luIHdpdGggdXNlciBuYW1lIFwidGVzdGVyM1wiIGFuZCBwYXNzd29yZCBcInRlc3RlcjNcIiAiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJBZGRfdXNlcl93aXRoX2NsZWFydGV4dF90eXBlX3Bhc3N3b3JkX2R1cmluZ19maWxlc3lzdGVtX2NvbnN0cnVjdGlvbiIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtdG9vbHMucnBtXy1fX2luc3RhbGxfZGVwZW5kZW5jeV9wYWNrYWdlIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiR2V0IGEgbm90IHByZXZpb3VzbHkgaW5zdGFsbGVkIFJQTSBwYWNrYWdlIG9yIGJ1aWxkIG9uZSBvbiBsb2NhbCBtYWNoaW5lLCB3aGljaCBzaG91bGQgaGF2ZSBydW4tdGltZSBkZXBlbmRlbmN5LkZvciBleGFtcGxlLCBcIm1jXCIgKE1pZG5pZ2h0IENvbW1hbmRlciwgd2hpY2ggaXMgYSB2aXN1YWwgZmlsZSBtYW5hZ2VyKSBzaG91bGQgZGVwZW5kIG9uIFwibmN1cnNlcy10ZXJtaW5mb1wiLiAgIFxuXG4kIGJpdGJha2UgbWMgIFxuXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkNvcHkgdGhlIHBhY2thZ2UgaW50byBhIHN5c3RlbSBmb2xkZXIgKGZvciBleGFtcGxlIC9ob21lL3Jvb3QvcnBtX3BhY2thZ2VzKS4gIFxuXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBcInJwbSAtaXZoIHBhY2thZ2VfbmFtZVwiIGFuZCBjaGVjayB0aGUgb3V0cHV0LCBmb3IgZXhhbXBsZSBcInJwbSAtaXZoIG1jLnJwbSpcIiBzaG91bGQgcmVwb3J0IHRoZSBkZXBlbmRlbmN5IG9uIFwibmN1cnNlcy10ZXJtaW5mb1wiLlxuXG5cblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIzIC4gcnBtIGNvbW1hbmQgc2hvdWxkIHJlcG9ydCBtZXNzYWdlIHdoZW4gc29tZSBSUE0gaW5zdGFsbGF0aW9uIGRlcGVuZHMgb24gb3RoZXIgcGFja2FnZXMuIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAicnBtXy1fX2luc3RhbGxfZGVwZW5kZW5jeV9wYWNrYWdlIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy10b29scy5DaGVja19ycG1faW5zdGFsbC9yZW1vdmFsX2xvZ19maWxlX3NpemUoYXV0bykiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJHZXQgc29tZSBycG0gb3Igb3RoZXIga2luZCBvZiBpbnN0YWxsYXRpb24gcGFja2FnZXMuICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJTdGVwcyAxLSA0IChtb3JlIHRoYW4gMi4zKSBcbkVhY2ggZmlsZSB3aWxsIG9jY3VweSBhcm91bmQgMTBNQiwgYW5kIHRoZXJlIHNob3VsZCBiZSBzb21lIG1ldGhvZCB0byBrZWVwIHJwbSBsb2cgaW4gYSBzbWFsbCBzaXplLiAodGhlIHNpemUgb2YgdGhlIGRiIG9mIFJQTXMgbXVzdCBub3QgYmUgdGFraW5nIHNvIG11Y2ggc3BhY2UpICBcblN0ZXAgNSAobGVzcyB0aGFuIG9yIGVxdWFsIHRvIDIuMylcblRoZSBzaXplIG9uIC92YXIvbGliL3JwbS8gbXVzdCBrZWVwIGFyb3VuZCAzME1CIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIHN5c3RlbSBpcyB1cCwgY2hlY2sgdGhlIHNpemUgb2YgbG9nIGZpbGUgbmFtZWQgYXMgXCJsb2cueHh4eHh4XCIgb24gIC92YXIvbGliL3JwbS9sb2cgIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBzZXZlcmFsIGluc3RhbGwvcmVtb3ZhbCBvZiBwYWNrYWdlcywgd2l0aCBlaXRoZXIgb2YgdGhlIGluc3RhbGwvcmVtb3ZhbCBjb21tYW5kcyAgIChycG0vc21hcnQvenlwcGVyL2RuZiBpbnN0YWxsL3JlbW92YWwpLCBjaGVjayBhZ2FpbiB0aGUgc2l6ZSBvZiBsb2cgZmlsZS4gIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJGb3IgcGFja2FnZXMgaW5zdGFsbGF0aW9uLCB0aGVyZSB3aWxsIGJlIHNvbWUgZGF0YWJhc2UgZmlsZXMgdW5kZXIgL3Zhci9saWIvcnBtLywgbmFtZWQgYXMgXCJfX2RiLnh4eFwiIGFuZCB0aGVyZSB3aWxsIGJlIHNvbWUgbG9nIGZpbGVzICAgXG51bmRlciAvdmFyL2xpYi9ycG0vbG9nLCBuYW1lZCBhcyBcIlwibG9nLnh4eHh4eFwiXCIuICAgXG5cbk5vdGU6IFlvdSB3aWxsIG9ubHkgc2VlIHRoZSBsb2cueHh4eCBvbiAvdmFyL2xpYi9ycG0vbG9nIG1lbnRpb25lZCBhYm92ZSBpZiB0aGUgcG9reSB2ZXJzaW9uIGlzIG1pbm9yIHRoYW4gMi4zLkZvciBwb2t5IDIuMyBvciBtYWpvciB2ZXJzaW9ucyB0aGlzIGhhcyBiZWVuIG1vZGlmaWVkIGFuZCB0aGUgcGFja2FnZSBSUE00IGRvZXMgbm90IHNob3cgdGhlIGxvZ3MueHh4eC4gaWYgbWFqb3IsIGZvbGxvdyB0aGUgbmV4dCBzdGVwLiAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJlcGVhdCBzdGVwcyAoMSBhbmQgMykgIGFuZCBjaGVjayB0aGUgc2l6ZSBvZiAvdmFyL2xpYi9ycG0vICBcblxuTW9yZSBpbmZvOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNTkiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogIkNoZWNrX3JwbV9pbnN0YWxsL3JlbW92YWxfbG9nX2ZpbGVfc2l6ZSIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAiYnNwcy1xZW11LmJzcHMtcnVudGltZS5vbmx5X29uZV9jb25ubWFuZF9pbl9iYWNrZ3JvdW5kKGF1dG8pIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCBzeXN0ZW0iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gXCJwcyBhdXggfGdyZXAgY29ubm1hbmRcIiBvciBcInBzIC1lZiB8IGdyZXAgY29ubm1hbmRcIiBvciBcInBzIHwgZ3JlcCBjb25ubWFuZFwiIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJDb25ubWFuZCAoY29ubmVjdGlvbiBtYW5hZ2VyLCB1c2VkIHRvIG1hbmFnZSBpbnRlcm5ldCBjb25uZWN0aW9ucykgIHNob3VsZCBiZSBzaG93biBhcyBhbiBhY3RpdmUgcHJvY2VzcyBcblxuIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIlJ1biBjb21tYW5kIFwiY29ubm1hbmRcIiB0byB0cnkgdG8gbGF1bmNoIHRvIGEgc2Vjb25kIGNvbm5tYW5kIHByb2Nlc3MiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJDaGVjaywgd2l0aCBcInBzXCIgY29ubm1hbmQgIGlmIGEgc2Vjb25kIGNvbm5tYW5kIGNhbiBiZSBnZW5lcmF0ZWQgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGVyZSBzaG91bGQgYmUgb25seSBvbmUgY29ubm1hbmQgcHJvY2VzcyBpbnN0YW5jZSBpbiBiYWNrZ3JvdW5kIC4iCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJvbmx5X29uZV9jb25ubWFuZF9pbl9iYWNrZ3JvdW5kIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJic3BzLXFlbXUuYnNwcy1ydW50aW1lLlhfc2VydmVyX2Nhbl9zdGFydF91cF93aXRoX3J1bmxldmVsXzVfYm9vdCIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJvb3QgdXAgc3lzdGVtIHdpdGggZGVmYXVsdCBydW5sZXZlbCAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiWCBzZXJ2ZXIgY2FuIHN0YXJ0IHVwIHdlbGwgYW5kIGRlc2t0b3AgZGlzcGxheSBoYXMgbm8gcHJvYmxlbSAuICBcblxuIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogInR5cGUgcnVubGV2ZWwgYXQgY29tbWFuZCBwcm9tcHQiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIk91dHB1dDpOIDUiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJYX3NlcnZlcl9jYW5fc3RhcnRfdXBfd2l0aF9ydW5sZXZlbF81X2Jvb3QiCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogImJzcHMtcWVtdS5ic3BzLXJ1bnRpbWUuY2hlY2tfYmFzaF9pbl9pbWFnZSIsCisgICAgICAiYXV0aG9yIjogWworICAgICAgICB7CisgICAgICAgICAgImVtYWlsIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIHN5c3RlbSBpcyB1cCwgY2hlY2sgaWYgYmFzaCBjb21tYW5kIGV4aXN0cyB3aXRoIGNvbW1hbmQgXCJ3aGljaCBiYXNoXCIiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImJhc2ggY29tbWFuZCBzaG91bGQgZXhpc3QgaW4gaW1hZ2UgZ2l2aW5nIHNvbWV0aGluZyBhcyBiZWxvdyAgXCIvYmluL2Jhc2hcIiIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogImNoZWNrX2Jhc2hfaW5faW1hZ2UiCisgICAgfQorICB9CitdClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9idWlsZC1hcHBsaWFuY2UuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnVpbGQtYXBwbGlhbmNlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhmODkyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnVpbGQtYXBwbGlhbmNlLmpzb24KQEAgLTAsMCArMSwxMjIgQEAKK1sKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJidWlsZC1hcHBsaWFuY2UuYnVpbGQtYXBwbGlhbmNlLkJpdGJha2VfYnVpbGQtYXBwbGlhbmNlLWltYWdlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImFsZXhhbmRydS5jLmdlb3JnZXNjdUBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiR2V0IHBva3kgc291cmNlIGNvZGUgYW5kIHByZXBhcmUgdGhlIGJ1aWxkIGVudmlyb25tZW50IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiYml0YmFrZSBidWlsZC1hcHBsaWFuY2UtaW1hZ2UgaXMgc3VjY2Vzc2Z1bCAgIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiU2V0IE1BQ0hJTkUgdG8gcWVtdXg4NiBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSB0byBjb25mL2xvY2FsLmNvbmYgOiAgU1JDUkVWX3BuLWJ1aWxkLWFwcGxpYW5jZS1pbWFnZSA9IFwiJHtBVVRPUkVWfVwiIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiYml0YmFrZSBidWlsZC1hcHBsaWFuY2UtaW1hZ2VcIiBcbiBcbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiQml0YmFrZV9idWlsZC1hcHBsaWFuY2UtaW1hZ2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJ1aWxkLWFwcGxpYW5jZS5idWlsZC1hcHBsaWFuY2UuQnVpbGRfY29yZS1pbWFnZS1taW5pbWFsX3dpdGhfYnVpbGQtYXBwbGlhbmNlLWltYWdlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiY29ybmVsaXV4LnN0b2ljZXNjdUBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjb3JuZWxpdXguc3RvaWNlc2N1QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCB3aXRoIEFVVE9SRVYgb3IgZG93bmxvYWQgZnJvbSBBdXRvYnVpbGRlciBhbiBpbWFnZSBmb3IgWW9jdG8gQnVpbGQgQXBwbGlhbmNlLiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQm9vdCB0aGUgaW1hZ2UgdW5kZXIgVk1XYXJlIFBsYXllci4gICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIHFlbXV4ODYgY29yZS1pbWFnZS1taW5pbWFsIHVzaW5nIGJpdGJha2UgY29tbWFuZCBsaW5lIGluIHRoZSBidWlsZC1hcHBsaWFuY2UtaW1hZ2UgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCB0aGUgaW1hZ2UganVzdCBidWlsdCB1c2luZyBydW5xZW11LiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiY29yZS1pbWFnZS1taW5pbWFsIHNob3VsZCBidWlsZCBhbmQgYm9vdC4gIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJCdWlsZF9jb3JlLWltYWdlLW1pbmltYWxfd2l0aF9idWlsZC1hcHBsaWFuY2UtaW1hZ2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImJ1aWxkLWFwcGxpYW5jZS5idWlsZC1hcHBsaWFuY2UuQnVpbGRfYV9pbWFnZV93aXRob3V0X2Vycm9yXyhhZGRlZF9yZWNpcGUpIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic3N0bmNyQGdtYWlsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogInNzdG5jckBnbWFpbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIEJ1aWxkIEFwcGxpYW5jZSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlVzZXIgY291bGQgYnVpbGQgYSBpbWFnZSB3aXRob3V0IGVycm9yIGFuZCB0aGUgYWRkZWQgcGFja2FnZSBpcyBpbiB0aGUgaW1hZ2UiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZXQgXCJNYWNoaW5lXCIgaW4gY29uZi9sb2NhbC5jb25mLCBmb3IgZXhhbXBsZSwgcWVtdWFybSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluc3RhbGwgYSBuZXcgcGFja2FnZSB0byB0aGUgaW1hZ2UsIGZvciBleGFtcGxlLCBhY3BpZC4gU2V0IHRoZSBmb2xsb3dpbmcgbGluZSBpbiBjb25mL2xvY2FsLmNvbmY6IElNQUdFX0lOU1RBTExfYXBwZW5kID0gXCIgYWNwaWRcIiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIGEgaW1hZ2UgdXNpbmcgYml0YmFrZSBjb21tYW5kIGxpbmUsIGZvciBleGFtcGxlLCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkFmdGVyIGJ1aWxkIGZpbmlzaGVkLCBsYXVuY2ggdGhlIGltYWdlIGFuZCBjaGVjayBpZiB0aGUgYWRkZWQgcGFja2FnZSBidWlsdCBpbnRvIGltYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJCdWlsZF9hX2ltYWdlX3dpdGhvdXRfZXJyb3JfKGFkZGVkX3JlY2lwZSkuIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJidWlsZC1hcHBsaWFuY2UuYnVpbGQtYXBwbGlhbmNlLkNyZWF0ZV9jb3JlLWltYWdlLXNhdG8tc2RrX3VzaW5nX2J1aWxkX2FwcGxpYW5jZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIHdpdGggQVVUT1JFViBvciBkb3dubG9hZCBmcm9tIEF1dG9idWlsZGVyIGFuIGltYWdlIGZvciBZb2N0byBCdWlsZCBBcHBsaWFuY2UuICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290IHRoZSBpbWFnZSB1bmRlciBWTVdhcmUgUGxheWVyLiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgcWVtdXg4NiBjb3JlLWltYWdlLXNhdG8tc2RrIHVzaW5nIGJpdGJha2UgY29tbWFuZCBsaW5lIGluIHRoZSBidWlsZC1hcHBsaWFuY2UtaW1hZ2UgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkxhdW5jaCB0aGUgaW1hZ2UganVzdCBidWlsdCB1c2luZyBydW5xZW11LiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogIkNyZWF0ZV9jb3JlLWltYWdlLXNhdG8tc2RrX3VzaW5nX2J1aWxkX2FwcGxpYW5jZSIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNmM2M4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY3JvcHMuanNvbgpAQCAtMCwwICsxLDI5NCBAQAorWworICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImNyb3BzLWRlZmF1bHQuY3JvcHMtZGVmYXVsdC5zZGtleHRfZVNES19kZXZ0b29sX2J1aWxkX21ha2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklNUE9SVEFOVCBOT1RFOiBUaGUgZmlyc3RzIDUgc3RlcHMgcmVmZXIgdG8gY29uZmlndXJhdGlvbiBvZiB0aGUgZW52aXJvbm1lbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBzdGVwcy4gVGhlc2Ugb25seSBhcHBseSBmb3IgQ1JPUFMtZVNESy4gICAgXG5cblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNyZWF0ZSB0aGUgZm9sbG93aW5nIHRyZWUgb2YgZmlsZXMgIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9zZGtleHQvZmlsZXMvbXlhcHAgPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3Nka2V4dC9maWxlcy9teWFwcF9jbWFrZSAgIFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoaW5nIHRoZSBteWFwcCBkaXJlY3RvcnkgIG15YXBwLmMgYW5kIHRoZSBNYWtlZmlsZS4gV3JpdGUgdGhlIGZvbGxvd2luZyBpbnNpZGUgb2YgZWFjaCBmaWxlOiBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5NYWtlZmlsZSBzaG91bGQgY29udGFpbiAgXG5cbmFsbDogbXlhcHAgIFxuXG5teWFwcDogbXlhcHAubyBcblx0JChDQykgJChMREZMQUdTKSAkPCAtbyAkQCAgXG5cbm15YXBwLm86IG15YXBwLmMgIFxuXHQkKENDKSAkKENGTEFHUykgLWMgJDwgLW8gJEAgXG5cbmNsZWFuOiBcblx0cm0gLXJmIG15YXBwLm8gbXlhcHAgIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5teWFwcC5jICBzaG9sZCBjb250YWluICBcblxuXG4jaW5jbHVkZSA8c3RkaW8uaD4gICAgXG5cbmludCBcbm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgXG57IFxuXHRwcmludGYoXCJIZWxsbyB3b3JsZFxcblwiKTsgXG4gXG5cdHJldHVybiAwOyBcbn0gXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJiZSBzdXJlIHRoYXQgdGhlIGluZGVudGF0aW9ucyBvbiB0aGUgbWFrZWZpbGUgYXJlIHRhYnMgbm90IHNwYWNlcy4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgQ3JlYXRlIHRoZSBmb2xsb3dpbmcgZmlsZXMgd2l0aGluIHRoZSBteWFwcF9jbWFrZSBkaXJlY3RvcnkgQ01ha2VMaXN0cy50eHQgYW5kIG15YXBwLmMuIFdyaXRlIHRoZSBmb2xsb3dpbmcgaW5zaWRlIGVhY2ggZmlsZTogIFxuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5DTWFrZUxpc3RzLnR4dCBzaG91bGQgY29udGFpbjogIFxuXG5jbWFrZV9taW5pbXVtX3JlcXVpcmVkIChWRVJTSU9OIDIuNikgXG5wcm9qZWN0IChteWFwcCkgXG4jIFRoZSB2ZXJzaW9uIG51bWJlci4gXG5zZXQgKG15YXBwX1ZFUlNJT05fTUFKT1IgMSkgXG5zZXQgKG15YXBwX1ZFUlNJT05fTUlOT1IgMCkgIFxuXG4jIGFkZCB0aGUgZXhlY3V0YWJsZSBcbmFkZF9leGVjdXRhYmxlIChteWFwcCBteWFwcC5jKSAgXG5cbmluc3RhbGwoVEFSR0VUUyBteWFwcCBcblJVTlRJTUUgREVTVElOQVRJT04gYmluKSAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbm15YXBwLmMgc2hvdWxkIGNvbnRhaW46ICBcblxuI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICBcblxuaW50ICBcbm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgIFxueyBcblx0cHJpbnRmKFwiSGVsbG8gd29ybGRcXG5cIik7ICBcblxuXHRyZXR1cm4gMDsgXG59IFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkJlIHN1cmUgdGhhdCB0aGUgaW5kZW50YXRpb25zIG9uIENNYWtlTGlzdHMudHh0IGlzIHRhYnMgbm90IHNwYWNlcy4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgc291cmNlIGVudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIG91dHB1dCBhIG1lc3NhZ2UgdGhhdCBzYXlzIFNESyBlbnZpcm9ubWVudCBub3cgc2V0IHVwOyBhZGRpdGlvbmFsbHkgeW91IG1heSBub3cgcnVuIGRldnRvb2wgdG8gcGVyZm9ybSBkZXZlbG9wbWVudCB0YXNrcyBldGMgZXRjIC4uLiAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgcnVuIGNvbW1hbmQgd2hpY2ggZGV2dG9vbCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogInRoaXMgc2hvdWxkIG91dHB1dCB0aGUgZGlyZWN0b3J5IG9mIHRoZSBkZXZ0b29sIHNjcmlwdCBhbmQgaXQgc2hvdWxkIGJlIHdpdGhpbiB0aGUgc2RrIHdvcmtkaXIgeW91IGFyZSB3b3JraW5nIGluLiAgXG5cbiAgIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjgiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBhZGQgbXlhcHAgPGRpcmVjdG9yeT4odGhpcyBpcyBteWFwcCBkaXIpICAgIFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZSBkaXJlY3RvcnkgeW91IHNob3VsZCBpbnB1dCBpcyB0aGUgbXlhcHAgZGlyZWN0b3J5LiBUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIG15YXBwLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL215YXBwL215YXBwLmJiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjkiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgYnVpbGQgbXlhcHAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBjb21waWxlIGFuIGltYWdlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEwIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIHJlc2V0IG15YXBwICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSBteWFwcCByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS4iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9lU0RLX2RldnRvb2xfYnVpbGRfbWFrZSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiY3JvcHMtZGVmYXVsdC5jcm9wcy1kZWZhdWx0LnNka2V4dF9kZXZ0b29sX2J1aWxkX2VzZGtfcGFja2FnZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSU1QT1JUQU5UIE5PVEU6IFRoZSBmaXJzdHMgNSBzdGVwcyByZWZlciB0byBjb25maWd1cmF0aW9uIG9mIHRoZSBlbnZpcm9ubWVudCB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHN0ZXBzLiBUaGVzZSBvbmx5IGFwcGx5IGZvciBDUk9QUy1lU0RLLiAgICBcblxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBJbml0aWF0ZSB5b3VyIENyb3BzLWVzZGsgZW52aXJvbm1lbnQgYXMgaXQgc2F5cyBpbiB3aWtpIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2kgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIENyZWF0ZSB0aGUgZm9sbG93aW5nIHRyZWUgb2YgZmlsZXMgICAgPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3Nka2V4dC9maWxlcy9teWFwcC8gXG4gPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3Nka2V4dC9maWxlcy9teWFwcF9jbWFrZSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoaW5nIHRoZSBteWFwcCBkaXJlY3RvcnkgIG15YXBwLmMgYW5kIHRoZSBNYWtlZmlsZS4gV3JpdGUgdGhlIGZvbGxvd2luZyBpbnNpZGUgb2YgZWFjaCBmaWxlOiBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gXG5NYWtlZmlsZSBzaG91bGQgY29udGFpbiAgXG5cbmFsbDogbXlhcHAgIFxuXG5teWFwcDogbXlhcHAubyBcblx0JChDQykgJChMREZMQUdTKSAkPCAtbyAkQCBcblxubXlhcHAubzogbXlhcHAuYyAgXG5cdCQoQ0MpICQoQ0ZMQUdTKSAtYyAkPCAtbyAkQCBcblxuY2xlYW46IFxuXHRybSAtcmYgbXlhcHAubyBteWFwcCAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBcbm15YXBwLmMgIHNob2xkIGNvbnRhaW4gIFxuXG4jaW5jbHVkZSA8c3RkaW8uaD4gICBcblxuaW50IFxubWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSBcbnsgXG5cdHByaW50ZihcIkhlbGxvIHdvcmxkXFxuXCIpOyBcbiBcblx0cmV0dXJuIDA7IFxufSBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogImJlIHN1cmUgdGhhdCB0aGUgaW5kZW50YXRpb25zIG9uIHRoZSBtYWtlZmlsZSBhcmUgdGFicyBub3Qgc3BhY2VzLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoaW4gdGhlIG15YXBwX2NtYWtlIGRpcmVjdG9yeSBDTWFrZUxpc3RzLnR4dCBhbmQgbXlhcHAuYy4gV3JpdGUgdGhlIGZvbGxvd2luZyBpbnNpZGUgZWFjaCBmaWxlOiAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbkNNYWtlTGlzdHMudHh0IHNob3VsZCBjb250YWluOiAgXG5cbmNtYWtlX21pbmltdW1fcmVxdWlyZWQgKFZFUlNJT04gMi42KSBcbnByb2plY3QgKG15YXBwKSBcbiMgVGhlIHZlcnNpb24gbnVtYmVyLiBcbnNldCAobXlhcHBfVkVSU0lPTl9NQUpPUiAxKSBcbnNldCAobXlhcHBfVkVSU0lPTl9NSU5PUiAwKSAgXG5cbiMgYWRkIHRoZSBleGVjdXRhYmxlIFxuYWRkX2V4ZWN1dGFibGUgKG15YXBwIG15YXBwLmMpICBcblxuaW5zdGFsbChUQVJHRVRTIG15YXBwIFxuUlVOVElNRSBERVNUSU5BVElPTiBiaW4pICBcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFxubXlhcHAuYyBzaG91bGQgY29udGFpbjogIFxuXG4jaW5jbHVkZTxzdGRpby5oPiAgICAgXG5cbmludCAgXG5tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pICBcbnsgXG5cdHByaW50ZihcIkhlbGxvIHdvcmxkXFxuXCIpOyAgXG5cblx0cmV0dXJuIDA7IFxufSBcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCZSBzdXJlIHRoYXQgdGhlIGluZGVudGF0aW9ucyBvbiBDTWFrZUxpc3RzLnR4dCBpcyB0YWJzIG5vdCBzcGFjZXMuICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBvdXRwdXQgYSBtZXNzYWdlIHRoYXQgc2F5cyBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MgZXRjIGV0YyAuLi4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgcnVuIGNvbW1hbmQgd2hpY2ggZGV2dG9vbCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiB0aGlzIHNob3VsZCBvdXRwdXQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGV2dG9vbCBzY3JpcHQgYW5kIGl0IHNob3VsZCBiZSB3aXRoaW4gdGhlIHNkayB3b3JrZGlyIHlvdSBhcmUgd29ya2luZyBpbi4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgZGV2dG9vbCBhZGQgbXlhcHAgPGRpcmVjdG9yeT4gICh0aGlzIGlzIG15YXBwIGRpcikgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIgVGhlIGRpcmVjdG9yeSB5b3Ugc2hvdWxkIGlucHV0IGlzIHRoZSBteWFwcCBkaXJlY3RvcnkuIFRoaXMgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZWNpcGUgbXlhcHAuYmIgdW5kZXIgPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3JlY2lwZXMvbXlhcHAvbXlhcHAuYmIgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgZGV2dG9vbCBwYWNrYWdlIG15YXBwICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIHlvdSBzaG91bGQgZXhwZWN0IGEgcGFja2FnZSBjcmVhdGlvbiBvZiBteWFwcCBhbmQgaXQgc2hvdWxkIGJlIHVuZGVyIHRoZSAgL3RtcC9kZXBsb3kvICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEwIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIHJlc2V0IG15YXBwICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSBteWFwcCByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS5cbjwvcGFja2FnZV9mb3JtYXQ+IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJzZGtleHRfZGV2dG9vbF9idWlsZF9lc2RrX3BhY2thZ2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImNyb3BzLWRlZmF1bHQuY3JvcHMtZGVmYXVsdC5zZGtleHRfZGV2dG9vbF9idWlsZF9jbWFrZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSU1QT1JUQU5UIE5PVEU6IFRoZSBmaXJzdHMgNSBzdGVwcyByZWZlciB0byBjb25maWd1cmF0aW9uIG9mIHRoZSBlbnZpcm9ubWVudCB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHN0ZXBzLiBUaGVzZSBvbmx5IGFwcGx5IGZvciBDUk9QUy1lU0RLLiAgICBcblxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBJbml0aWF0ZSB5b3VyIENyb3BzLWVzZGsgZW52aXJvbm1lbnQgYXMgaXQgc2F5cyBpbiB3aWtpIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2kgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIENyZWF0ZSB0aGUgZm9sbG93aW5nIHRyZWUgb2YgZmlsZXMgICAgPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3Nka2V4dC9maWxlcy9teWFwcCBcbiA8Y3JvcHMtZXNkay13b3JrZGlyLXdvcmtzcGFjZT4vc2RrZXh0L2ZpbGVzL215YXBwX2NtYWtlICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIENyZWF0ZSB0aGUgZm9sbG93aW5nIGZpbGVzIHdpdGhpbmcgdGhlIG15YXBwIGRpcmVjdG9yeSAgbXlhcHAuYyBhbmQgdGhlIE1ha2VmaWxlLiBXcml0ZSB0aGUgZm9sbG93aW5nIGluc2lkZSBvZiBlYWNoIGZpbGU6IFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbk1ha2VmaWxlIHNob3VsZCBjb250YWluICBcblxuYWxsOiBteWFwcCAgXG5cbm15YXBwOiBteWFwcC5vIFxuXHQkKENDKSAkKExERkxBR1MpICQ8IC1vICRAIFxuXG5teWFwcC5vOiBteWFwcC5jICBcblx0JChDQykgJChDRkxBR1MpIC1jICQ8IC1vICRAIFxuXG5jbGVhbjogXG5cdHJtIC1yZiBteWFwcC5vIG15YXBwICBcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIFxubXlhcHAuYyAgc2hvbGQgY29udGFpbiAgXG5cbiNpbmNsdWRlIDxzdGRpby5oPiAgIFxuXG5pbnQgXG5tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIFxueyBcblx0cHJpbnRmKFwiSGVsbG8gd29ybGRcXG5cIik7IFxuIFxuXHRyZXR1cm4gMDsgXG59IFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiYmUgc3VyZSB0aGF0IHRoZSBpbmRlbnRhdGlvbnMgb24gdGhlIG1ha2VmaWxlIGFyZSB0YWJzIG5vdCBzcGFjZXMuICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI1IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBDcmVhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoaW4gdGhlIG15YXBwX2NtYWtlIGRpcmVjdG9yeSBDTWFrZUxpc3RzLnR4dCBhbmQgbXlhcHAuYy4gV3JpdGUgdGhlIGZvbGxvd2luZyBpbnNpZGUgZWFjaCBmaWxlOiAgXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBcbkNNYWtlTGlzdHMudHh0IHNob3VsZCBjb250YWluOiAgXG5cbmNtYWtlX21pbmltdW1fcmVxdWlyZWQgKFZFUlNJT04gMi42KSBcbnByb2plY3QgKG15YXBwKSBcbiMgVGhlIHZlcnNpb24gbnVtYmVyLiBcbnNldCAobXlhcHBfVkVSU0lPTl9NQUpPUiAxKSBcbnNldCAobXlhcHBfVkVSU0lPTl9NSU5PUiAwKSAgXG5cbiMgYWRkIHRoZSBleGVjdXRhYmxlIFxuYWRkX2V4ZWN1dGFibGUgKG15YXBwIG15YXBwLmMpICBcblxuaW5zdGFsbChUQVJHRVRTIG15YXBwIFxuUlVOVElNRSBERVNUSU5BVElPTiBiaW4pICBcblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFxubXlhcHAuYyBzaG91bGQgY29udGFpbjogIFxuXG4jaW5jbHVkZSAgICBcblxuaW50ICBcbm1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgIFxueyBcblx0cHJpbnRmKFwiSGVsbG8gd29ybGRcXG5cIik7ICBcblxuXHRyZXR1cm4gMDsgXG59IFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkJlIHN1cmUgdGhhdCB0aGUgaW5kZW50YXRpb25zIG9uIENNYWtlTGlzdHMudHh0IGlzIHRhYnMgbm90IHNwYWNlcy4gIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIgc291cmNlIGVudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eCAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIG91dHB1dCBhIG1lc3NhZ2UgdGhhdCBzYXlzIFNESyBlbnZpcm9ubWVudCBub3cgc2V0IHVwOyBhZGRpdGlvbmFsbHkgeW91IG1heSBub3cgcnVuIGRldnRvb2wgdG8gcGVyZm9ybSBkZXZlbG9wbWVudCB0YXNrcyBldGMgZXRjIC4uLiAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBydW4gY29tbWFuZCB3aGljaCBkZXZ0b29sICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjgiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgYWRkIG15YXBwIDxkaXJlY3Rvcnk+ICAgKHRoaXMgaXMgbXlhcHBfY21ha2UgZGlyKSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoZSBkaXJlY3RvcnkgeW91IHNob3VsZCBpbnB1dCBpcyB0aGUgbXlhcHBfY21ha2UgZGlyZWN0b3J5LiBUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIG15YXBwLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL215YXBwL215YXBwLmJiICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjkiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgYnVpbGQgbXlhcHAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBjb21waWxlIGFuIGltYWdlICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEwIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBkZXZ0b29sIHJlc2V0IG15YXBwICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSBteWFwcCByZWNpcGUsIGJ1dCBpdCBsZWF2ZXMgdGhlIHNvdXJjZSB0cmVlIGludGFjdC4gbWVhbmluZyBpdCBkb2VzIG5vdCBlcmFzZS4gICIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X2RldnRvb2xfYnVpbGRfY21ha2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImNyb3BzLWRlZmF1bHQuY3JvcHMtZGVmYXVsdC5zZGtleHRfZXh0ZW5kX2F1dG90b29sc19yZWNpcGVfY3JlYXRpb24iLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklNUE9SVEFOVCBOT1RFOiBUaGUgZmlyc3RzIDIgc3RlcHMgcmVmZXIgdG8gY29uZmlndXJhdGlvbiBvZiB0aGUgZW52aXJvbm1lbnQgdG8gcnVuIHRoZSByZXN0IG9mIHRoZSBzdGVwcy4gVGhlc2Ugb25seSBhcHBseSBmb3IgQ1JPUFMtZVNESy4gICAgXG5cblxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbml0aWF0ZSB5b3VyIENyb3BzLWVzZGsgZW52aXJvbm1lbnQgYXMgaXQgc2F5cyBpbiB3aWtpIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2kgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIHNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIgVGhpcyBzaG91bGQgb3V0cHV0IGEgbWVzc2FnZSB0aGF0IHNheXMgU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzIGV0YyBldGMgLi4uICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInJ1biBjb21tYW5kIHdoaWNoIGRldnRvb2wgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ0aGlzIHNob3VsZCBvdXRwdXQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGV2dG9vbCBzY3JpcHQgYW5kIGl0IHNob3VsZCBiZSB3aXRoaW4gdGhlIHNkayB3b3JrZGlyIHlvdSBhcmUgd29ya2luZyBpbi4gICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBzZGstaW5zdGFsbCAtcyBsaWJ4bWwyICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgaW5zdGFsbCBsaWJ4bWwyICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYWRkIGxpYnJkZmEgIGh0dHBzOi8vZ2l0aHViLmNvbS9yZGZhL2xpYnJkZmEgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIGxpYnJkZmEuYmIgdW5kZXIgL3JlY2lwZXMvbGlicmRmYS9saWJyZGZhLmJiICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI3IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYnVpbGQgbGlicmRmYSAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgc2hvdWxkIGNvbXBpbGUgICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjgiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCByZXNldCBsaWJyZGZhICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSBsaWJyZGZhIHJlY2lwZSwgYnV0IGl0IGxlYXZlcyB0aGUgc291cmNlIHRyZWUgaW50YWN0LiBtZWFuaW5nIGl0IGRvZXMgbm90IGVyYXNlLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X2V4dGVuZF9hdXRvdG9vbHNfcmVjaXBlX2NyZWF0aW9uIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJjcm9wcy1kZWZhdWx0LmNyb3BzLWRlZmF1bHQuc2RrZXh0X2RldnRvb2xfa2VybmVsbW9kdWxlIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJmcmFuY2lzY28uai5wZWRyYXphLmdvbnphbGV6QGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJTVBPUlRBTlQgTk9URTogVGhlIGZpcnN0cyAyIHN0ZXBzIHJlZmVyIHRvIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGVudmlyb25tZW50IHRvIHJ1biB0aGUgcmVzdCBvZiB0aGUgc3RlcHMuIFRoZXNlIG9ubHkgYXBwbHkgZm9yIENST1BTLWVTREsuICAgIFxuXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBJbml0aWF0ZSB5b3VyIENyb3BzLWVzZGsgZW52aXJvbm1lbnQgYXMgaXQgc2F5cyBpbiB3aWtpIGh0dHBzOi8vZ2l0aHViLmNvbS9jcm9wcy9kb2NrZXItd2luLW1hYy1kb2NzL3dpa2kgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAic291cmNlIGVudmlyb25tZW50LXNldHVwLWk1ODYtcG9reS1saW51eCAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBvdXRwdXQgYSBtZXNzYWdlIHRoYXQgc2F5cyBTREsgZW52aXJvbm1lbnQgbm93IHNldCB1cDsgYWRkaXRpb25hbGx5IHlvdSBtYXkgbm93IHJ1biBkZXZ0b29sIHRvIHBlcmZvcm0gZGV2ZWxvcG1lbnQgdGFza3MgZXRjIGV0YyAuLi4gICBcbiBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInJ1biBjb21tYW5kIHdoaWNoIGRldnRvb2wgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ0aGlzIHNob3VsZCBvdXRwdXQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGV2dG9vbCBzY3JpcHQgYW5kIGl0IHNob3VsZCBiZSB3aXRoaW4gdGhlIHNkayB3b3JrZGlyIHlvdSBhcmUgd29ya2luZyBpbi4gICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBhZGQgdjRsMmxvb3BiYWNrLWRyaXZlciAgaHR0cHM6Ly9naXRodWIuY29tL3VtbGFldXRlL3Y0bDJsb29wYmFjay5naXQgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSB2NGwybG9vcGJhY2stZHJpdmVyLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL3Y0bDJsb29wYmFjay1kcml2ZXIvdjRsMmxvb3BiYWNrLWRyaXZlci5iYiAiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGJ1aWxkIHY0bDJsb29wYmFjay1kcml2ZXIgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgY29tcGlsZSBhbiBpbWFnZSAgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIHJlc2V0IHY0bDJsb29wYmFjay1kcml2ZXIgICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIGNsZWFucyBzeXNyb290IG9mIHRoZSB2NGwybG9vcGJhY2stZHJpdmVyIHJlY2lwZSwgYnV0IGl0IGxlYXZlcyB0aGUgc291cmNlIHRyZWUgaW50YWN0LiBtZWFuaW5nIGl0IGRvZXMgbm90IGVyYXNlLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X2RldnRvb2xfa2VybmVsbW9kdWxlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJjcm9wcy1kZWZhdWx0LmNyb3BzLWRlZmF1bHQuc2RrZXh0X3JlY2lwZXNfZm9yX25vZGVqcyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZnJhbmNpc2NvLmoucGVkcmF6YS5nb256YWxlekBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSU1QT1JUQU5UIE5PVEU6IFRoZSBmaXJzdHMgMiBzdGVwcyByZWZlciB0byBjb25maWd1cmF0aW9uIG9mIHRoZSBlbnZpcm9ubWVudCB0byBydW4gdGhlIHJlc3Qgb2YgdGhlIHN0ZXBzLiBUaGVzZSBvbmx5IGFwcGx5IGZvciBDUk9QUy1lU0RLLiAgICBcblxuXG5sZXRzIHNheSB2YXJpYWJsZSBucG0gPSBucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7bmFtZT13aW5zdG9uO3ZlcnNpb249Mi4yLjAgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5pdGlhdGUgeW91ciBDcm9wcy1lc2RrIGVudmlyb25tZW50IGFzIGl0IHNheXMgaW4gd2lraSBodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvZG9ja2VyLXdpbi1tYWMtZG9jcy93aWtpICAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInNvdXJjZSBlbnZpcm9ubWVudC1zZXR1cC1pNTg2LXBva3ktbGludXggICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgb3V0cHV0IGEgbWVzc2FnZSB0aGF0IHNheXMgU0RLIGVudmlyb25tZW50IG5vdyBzZXQgdXA7IGFkZGl0aW9uYWxseSB5b3UgbWF5IG5vdyBydW4gZGV2dG9vbCB0byBwZXJmb3JtIGRldmVsb3BtZW50IHRhc2tzIGV0YyBldGMgLi4uICAgXG5cbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogInJ1biBjb21tYW5kIHdoaWNoIGRldnRvb2wgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAidGhpcyBzaG91bGQgb3V0cHV0IHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGRldnRvb2wgc2NyaXB0IGFuZCBpdCBzaG91bGQgYmUgd2l0aGluIHRoZSBzZGsgd29ya2RpciB5b3UgYXJlIHdvcmtpbmcgaW4uICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIDRhKSBnaXQgY2xvbmUgZ2l0Oi8vZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvbWV0YS1vcGVuZW1iZWRkZWQgaW4gIGxheWVycy9idWlsZCAgZGlyZWN0b3J5ICAgXG4gXG40YikgQWRkIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UgaW4gYmJsYXllci5jb25mIGFzIG1lbnRpb25lZCBiZWxvdzogJHtTREtCQVNFTUVUQVBBVEh9L2xheWVycy9idWlsZC9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lIFxcICAgXG5cbjRjKSBkZXZ0b29sIGFkZCBcIm5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztuYW1lPW5wbTt2ZXJzaW9uPTIuMi4wXCIgICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIFRoaXMgc2hvdWxkIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSByZWNpcGUgbnBtLmJiIHVuZGVyIC9yZWNpcGVzL25wbS9ucG0uYmIgIFxuXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJkZXZ0b29sIGJ1aWxkIG5wbSAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBjb21waWxlIGFuIGltYWdlICBcblxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiIGRldnRvb2wgcmVzZXQgbnBtIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBjbGVhbnMgc3lzcm9vdCBvZiB0aGUgbnBtIHJlY2lwZSwgYnV0IGl0IGxlYXZlcyB0aGUgc291cmNlIHRyZWUgaW50YWN0LiBtZWFuaW5nIGl0IGRvZXMgbm90IGVyYXNlLiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAic2RrZXh0X3JlY2lwZXNfZm9yX25vZGVqcyIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg2OTE1MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbgpAQCAtMCwwICsxLDMyMiBAQAorWworICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImVjbGlwc2UtcGx1Z2luLmVjbGlwc2UtcGx1Z2luLnN1cHBvcnRfU1NIX2Nvbm5lY3Rpb25fdG9fVGFyZ2V0IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW4gRWNsaXBzZSwgc3dpY2ggdG8gUmVtb3RlIFN5c3RlbSBFeHBsb3JlciB0byBjcmVhdGUgYSBjb25uZW50aW9uIGJhc2VlZCBvbiBTU0gsIGlucHV0IHRoZSByZW1vdGUgdGFyZ2V0IElQIGFkZHJlc3MgYXMgdGhlIEhvc3QgbmFtZSwgbWFrZSBzdXJlIGRpc2FibGUgdGhlIHByb3h5IGluIFdpbmRvdy0+UHJlZmVyZW5jZXMtPkdlbmVyYWwtPk5ldHdvcmsgQ29ubmVjdGlvbiwgc2V0IERpcmVjdCBhcyBBY3RpdmUgUHJvdmlkZXIgZmllbGQuICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ0aGUgY29ubmVjdGlvbiBiYXNlZCBvbiBTU0ggY291bGQgYmUgc2V0IHVwLiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNvbmZpZ3VyZSBjb25uZWN0aW9uIGZyb20gRWNsaXBzZTogUnVuLT5SdW4gQ29uZmlndXJhdGlvbnMtPkMvQysrIFJlbW90ZSBBcHBsaWNhdGlvblxcIC0+TmV3IENvbm5lY3Rpb24tPkdlbmVyYWwtPlNTSCBPbmx5ICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJUaGVuIHJpZ2h0IGNsaWNrIHRvIGNvbm5lY3QsIGlucHV0IHRoZSB1c2VyIElEIGFuZCBwYXNzd29yZC4gICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImV4cGFuZCB0aGUgY29ubmVjdGlvbiwgaXQgd2lsbCBzaG93IHRoZSBTZnRwIEZpbGVzIGV0Yy4gICBcbk5PVEUuIE1pZ2h0IG5lZWQgdG8gY2hhbmdlIGRyb3BiZWFyIHRvIG9wZW5zc2ggYW5kIGFkZCB0aGUgcGFja2FnZWdyb3VwLWNvcmUtZWNsaXBzZS1kZWJ1ZyByZWNpcGUiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdW1tYXJ5IjogInN1cHBvcnRfU1NIX2Nvbm5lY3Rpb25fdG9fVGFyZ2V0IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJlY2xpcHNlLXBsdWdpbi5lY2xpcHNlLXBsdWdpbi5MYXVuY2hfUUVNVV9mcm9tX0VjbGlwc2UiLAorICAgICAgICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdLAorICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgICAgICAgICAiMSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJTZXQgdGhlIFlvY3RvIEFEVCdzIHRvb2xjaGFpbiByb290IGxvY2F0aW9uLCBzeXNyb290IGxvY2F0aW9uIGFuZCBrZXJuZWwsIGluIHRoZSBtZW51IFdpbmRvdyAtPiBQcmVmZXJlbmNlcyAtPiBZb2N0byBBRFQuICAgXG4gXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJ3Z2V0ICBhdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnL3B1Yi9yZWxlYXNlcy8vbWFjaGluZXMvcWVtdS9xZW11eDg2L3FlbXUgKGV4OmNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni1kYXRlLXJvb3Rmcy10YXItYnoyKSBcbnNvdXJjZSAvb3B0L3Bva3kvdmVyc2lvbi9lbnZpcm9ubWVudC1zZXR1cC1pNTg1LXBva3ktbGludXggIFxuXG5FeHRyYWN0IHFlbXUgd2l0aCBydW5xZW11LWV4dHJhY3Qtc2RrIC9ob21lL3VzZXIvZmlsZShleC5jb3JlLWltYWdlLXNhdG8tc2RrLXFlbXV4ODYuYnoyKSBcbi9ob21lL3VzZXIvcWVtdXg4Ni1zYXRvLXNkayAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiBRZW11IGNhbiBiZSBsYXVjaGVkIG5vcm1hbGx5LiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIihhKVBvaW50IHRvIHRoZSBUb29sY2hhaW46ICBcbiBcbklmIHlvdSBhcmUgdXNpbmcgYSBzdGFuZC1hbG9uZSBwcmUtYnVpbHQgdG9vbGNoYWluLCB5b3Ugc2hvdWxkIGJlIHBvaW50aW5nIHRvIHRoZSAvb3B0L3Bva3kve3Rlc3QtdmVyc2lvbn0gZGlyZWN0b3J5IGFzIFRvb2xjaGFpbiBSb290IExvY2F0aW9uLiBUaGlzIGlzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0b29sY2hhaW5zIGluc3RhbGxlZCBieSB0aGUgQURUIEluc3RhbGxlciBvciBieSBoYW5kLiBJZiBBRFQgaXMgaW5zdGFsbGVkIGluIG90aGVyIGxvY2F0aW9uLCB1c2UgdGhhdCBsb2NhdGlvbiBhcyBUb29sY2hhaW4gbG9jYXRpb24uXG5JZiB5b3UgYXJlIHVzaW5nIGEgc3lzdGVtLWRlcml2ZWQgdG9vbGNoYWluLCB0aGUgcGF0aCB5b3UgcHJvdmlkZSBmb3IgdGhlIFRvb2xjaGFpbiBSb290IExvY2F0aW9uIGZpZWxkIGlzIHRoZSBZb2N0byBQcm9qZWN0J3MgYnVpbGQgZGlyZWN0b3J5LiAgXG4gXG4gICAgICAgICAgIEUuZzovaG9tZS91c2VyL3lvY3RvL3Bva3kvYnVpbGQgXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIoYilTcGVjaWZ5IHRoZSBTeXNyb290IExvY2F0aW9uOiBcblN5c3Jvb3QgTG9jYXRpb24gaXMgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSByb290IGZpbGVzeXN0ZW0gZm9yIHRoZSB0YXJnZXQgaGFyZHdhcmUgaXMgY3JlYXRlZCBvbiB0aGUgZGV2ZWxvcG1lbnQgc3lzdGVtIGJ5IHRoZSBBRFQgSW5zdGFsbGVyIChTWVNST09UIGluIHN0ZXAgMiBvZiB0aGUgY2FzZSBBRFQgaW5zdGFsbGVyIEluc3RhbGxhdGlvbikuICBcbiAgIFxuICAgICAgICAgTG9jYWwgOiAgICAgZS5nOiAvaG9tZS91c2VyL3FlbXV4ODYtc2F0by1zZGsgXG5Vc2luZyBBRFQgOiBlLmcgOi9ob21lL3VzZXIvdGVzdC15b2N0by9xZW11eDg2ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiKGMpU2VsZWN0IHRoZSBUYXJnZXQgQXJjaGl0ZWN0dXJlOiAgXG4gXG5UaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyB0aGUgdHlwZSBvZiBoYXJkd2FyZSB5b3UgYXJlIGdvaW5nIHRvIHVzZSBvciBlbXVsYXRlLiBVc2UgdGhlIHB1bGwtZG93biBUYXJnZXQgQXJjaGl0ZWN0dXJlIG1lbnUgdG8gbWFrZSB5b3VyIHNlbGVjdGlvbi4gIFxuIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIoZCkgUUVNVTogXG5TZWxlY3QgdGhpcyBvcHRpb24gaWYgeW91IHdpbGwgYmUgdXNpbmcgdGhlIFFFTVUgZW11bGF0b3IuIFNwZWNpZnkgdGhlIEtlcm5lbCBtYXRjaGluZyB0aGUgUUVNVSBhcmNoaXRlY3R1cmUgeW91IGFyZSB1c2luZy4gXG4gICAgICB3Z2V0ICBhdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnL3B1Yi9yZWxlYXNlcy8vbWFjaGluZXMvcWVtdS9xZW11eDg2L2J6SW1hZ2UtcWVtdXg4Ni5iaW4gXG4gICAgICBlLmc6IC9ob21lLyRVU0VSL3lvY3RvL2FkdC1pbnN0YWxsZXIvZG93bmxvYWRfaW1hZ2UvYnpJbWFnZS1xZW11eDg2LmJpbiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAkKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICIoZSkgc2VsZWN0IE9LIHRvIHNhdmUgdGhlIHNldHRpbmdzLiAgXG5cblxuMTogSW4gdGhlIEVjbGlwc2UgdG9vbGJhciwgZXhwb3NlIHRoZSBSdW4gLT4gRXh0ZXJuYWwgVG9vbHMgbWVudS4gWW91ciBpbWFnZSBzaG91bGQgYXBwZWFyIGFzIGEgc2VsZWN0YWJsZSBtZW51IGl0ZW0uICBcbjI6IFNlbGVjdCB5b3VyIGltYWdlIGluIHRoZSBuYXZpZ2F0aW9uIHBhbmUgdG8gbGF1bmNoIHRoZSBlbXVsYXRvciBpbiBhIG5ldyB3aW5kb3cuIFxuMzogSWYgbmVlZGVkLCBlbnRlciB5b3VyIGhvc3Qgcm9vdCBwYXNzd29yZCBpbiB0aGUgc2hlbGwgd2luZG93IGF0IHRoZSBwcm9tcHQuIFRoaXMgc2V0cyB1cCBhIFRhcCAwIGNvbm5lY3Rpb24gbmVlZGVkIGZvciBydW5uaW5nIGluIHVzZXItc3BhY2UgTkZTIG1vZGUuIFxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0JCQkJCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiTGF1bmNoX1FFTVVfZnJvbV9FY2xpcHNlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJlY2xpcHNlLXBsdWdpbi5lY2xpcHNlLXBsdWdpbi5SZWxvY2F0YWJsZV9TREtfLV9DXy1fQnVpbGRfSGVsbG9fV29ybGRfQU5TSV9DX0F1dG90b29sc19Qcm9qZWN0IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBGaWxlIC0+IE5ldyAtPiBQcm9qZWN0LiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkRvdWJsZSBjbGljayBDL0MrKy4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDbGljayBDIG9yIEMrKyBQcm9qZWN0IHRvIGNyZWF0ZSB0aGUgcHJvamVjdC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeHBhbmQgWW9jdG8gQURUIFByb2plY3QuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiU2VsZWN0IEhlbGxvIFdvcmxkIEFOU0kgQyBBdXRvdG9vbHMgUHJvamVjdC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJQdXQgYSBuYW1lIGluIHRoZSBQcm9qZWN0IG5hbWUuIERvIG5vdCB1c2UgaHlwaGVucyBhcyBwYXJ0IG9mIHRoZSBuYW1lLiBcbiBcbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsaWNrIE5leHQuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjkiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWRkIGluZm9ybWF0aW9uIGluIHRoZSBBdXRob3IgYW5kIENvcHlyaWdodCBub3RpY2UgZmllbGRzLiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTAiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2xpY2sgRmluaXNoLiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSWYgdGhlIFwib3BlbiBwZXJzcGVjdGl2ZVwiIHByb21wdCBhcHBlYXJzLCBjbGljayBcIlllc1wiIHNvIHRoYXQgeW91IG9wZW4gdGhlIEMvQysrIHBlcnNwZWN0aXZlLiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW4gdGhlIFByb2plY3QgRXhwbG9yZXIgd2luZG93LCByaWdodCBjbGljayB0aGUgcHJvamVjdCAtPiBSZWNvbmZpZ3VyZSBwcm9qZWN0LiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW4gdGhlIFByb2plY3QgRXhwbG9yZXIgd2luZG93LCByaWdodCBjbGljayB0aGUgcHJvamVjdCAtPiBCdWlsZCBwcm9qZWN0LiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJVbmRlciB0aGUgUHJvamVjdCBmaWxlcywgYSBuZXcgZm9sZGVyIGFwcGVhcnMgY2FsbGVkIEJpbmFyaWVzLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBjb21waWxhdGlvbiBoYXZlIGJlZW4gc3VjY2Vzc2Z1bCBhbmQgdGhlIHByb2plY3QgYmluYXJ5IGhhdmUgYmVlbiBjcmVhdGVkLiBcbiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSaWdodCBjbGljayBpdCBhZ2FpbiBhbmQgUnVuIGFzIC0+IFJ1biBDb25maWd1cmF0aW9ucy4gIFxuXHRcdFx0VW5kZXIgUnVuIENvbmZpZ3VyYXRpb25zIGV4cGFuZCBcIkMvQysrIFJlbW90ZSBBcHBsaWNhdGlvblwiLiBBIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHByb2plY3Qgc2hvdWxkIGFwcGVhci4gQ2xpY2tpbmcgaXQgd2lsbCBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBcblx0XHRcdGluIFwiQy9DKysgQXBwbGljYXRpb25cIiBmaWVsZCBpbnB1dCBSZW1vdGUgQWJzb2x1dGUgRmlsZSBwYXRoIGZvciBDL0MrKyBBcHBsaWNhdGlvbi4gZS5nLjogL2hvbWUvcm9vdC9teWFwcGxpY2F0aW9uIFxuXHRcdFx0SW4gXCJDb25uZWN0aW9uXCIgZHJvcC1kb3duIGxpc3QgbWFrZSBzdXJlIGEgVENGIGNvbm5lY3Rpb24gaXMgc2V0IHVwIGZvciB5b3VyIHRhcmdldC4gSWYgbm90LCBjcmVhdGUgYSBuZXcgb25lIGJ5IGNsaWNraW5nIHRoZSBOZXcgYnV0dG9uLiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJzdGVwIDE0IHRvIHN0ZXAgMTYgLT4gQnVpbGQgc3VjY2VlZCBhbmQgdGhlIGNvbnNvbGUgb3V0cHV0cyBIZWxsbyB3b3JsZCwgeW91IGNhbiBhbHNvIGNoZWNrIHRoZSBvdXRwdXQgb24gdGFyZ2V0LiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBhbGwgc2V0dGluZ3MgYXJlIGRvbmUsIHNlbGVjdCB0aGUgUnVuIGJ1dHRvbiBvbiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciBcblxuMSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZXBlYXQgdGhlIHN0ZXBzIDE0LTE1LCBidXQgaW5zdGVhZCBvZiB1c2luZyBSdW4gQ29uZmlndXJhdGlvbnMgdXNlIERlYnVnIENvbmZpZ3VyYXRpb25zOiBcblJpZ2h0IGNsaWNrIGl0IGFnYWluIGFuZCBEZWJ1ZyBhcyAtPiBEZWJ1ZyBDb25maWd1cmF0aW9ucyBcblVuZGVyIERlYnVnIENvbmZpZ3VyYXRpb25zIGV4cGFuZCBcIkMvQysrIFJlbW90ZSBBcHBsaWNhdGlvblwiLiBBIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHByb2plY3Qgc2hvdWxkIGFwcGVhci4gQ2xpY2tpbmcgaXQgd2lsbCBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBcbmluIFwiQy9DKysgQXBwbGljYXRpb25cIiBmaWVsZCBpbnB1dCBSZW1vdGUgQWJzb2x1dGUgRmlsZSBwYXRoIGZvciBDL0MrKyBBcHBsaWNhdGlvbi5cbmUuZy46IC9ob21lL3Jvb3QvbXlhcHBsaWNhdGlvbiBcbkluIFwiQ29ubmVjdGlvblwiIGRyb3AtZG93biBsaXN0IG1ha2Ugc3VyZSBhIFRDRiBjb25uZWN0aW9uIGlzIHNldCB1cCBmb3IgeW91ciB0YXJnZXQuIElmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSBieSBjbGlja2luZyB0aGUgTmV3IGJ1dHRvbiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgYWxsIHNldHRpbmdzIGFyZSBkb25lLCBzZWxlY3QgdGhlIERlYnVnIGJ1dHRvbiBvbiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiUmVsb2NhdGFibGVfU0RLXy1fQ18tX0J1aWxkX0hlbGxvX1dvcmxkX0FOU0lfQ19BdXRvdG9vbHNfUHJvamVjdCIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAiZWNsaXBzZS1wbHVnaW4uZWNsaXBzZS1wbHVnaW4uUmVsb2NhdGFibGVfU0RLXy1fQysrXy1fQnVpbGRfSGVsbG9fV29ybGRfQysrX0F1dG90b29sc19wcm9qZWN0IiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBGaWxlIC0+IE5ldyAtPiBQcm9qZWN0LiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJEb3VibGUgY2xpY2sgQy9DKysuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsaWNrIEMgb3IgQysrIFByb2plY3QgdG8gY3JlYXRlIHRoZSBwcm9qZWN0LiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeHBhbmQgWW9jdG8gQURUIFByb2plY3QuICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBIZWxsbyBXb3JsZCBBTlNJIEMrKyBBdXRvdG9vbHMgUHJvamVjdC4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUHV0IGEgbmFtZSBpbiB0aGUgUHJvamVjdCBuYW1lLiBEbyBub3QgdXNlIGh5cGhlbnMgYXMgcGFydCBvZiB0aGUgbmFtZS4gIFxuIFxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjgiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2xpY2sgTmV4dC4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiOSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZGQgaW5mb3JtYXRpb24gaW4gdGhlIEF1dGhvciBhbmQgQ29weXJpZ2h0IG5vdGljZSBmaWVsZHMuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEwIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkNsaWNrIEZpbmlzaC4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjExIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIklmIHRoZSBcIm9wZW4gcGVyc3BlY3RpdmVcIiBwcm9tcHQgYXBwZWFycywgY2xpY2sgXCJZZXNcIiBzbyB0aGF0IHlvdSBvcGVuIHRoZSBDL0MrKyBwZXJzcGVjdGl2ZS4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHdpbmRvdywgcmlnaHQgY2xpY2sgdGhlIHByb2plY3QgLT4gUmVjb25maWd1cmUgcHJvamVjdC4gXG4xIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjEzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluIHRoZSBQcm9qZWN0IEV4cGxvcmVyIHdpbmRvdywgcmlnaHQgY2xpY2sgdGhlIHByb2plY3QgLT4gQnVpbGQgcHJvamVjdC4gXG5cbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ1bmRlciB0aGUgUHJvamVjdCBmaWxlcywgYSBuZXcgZm9sZGVyIGFwcGVhcnMgY2FsbGVkIEJpbmFyaWVzLiBUaGlzIGluZGljYXRlcyB0aGF0IHRoZSBjb21waWxhdGlvbiBoYXZlIGJlZW4gc3VjY2Vzc2Z1bCBhbmQgdGhlIHByb2plY3QgYmluYXJ5IGhhdmUgYmVlbiBjcmVhdGVkLiAgXG4iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTQiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiUmlnaHQgY2xpY2sgaXQgYWdhaW4gYW5kIFJ1biBhcyAtPiBSdW4gQ29uZmlndXJhdGlvbnMuIFxuXHRcdFx0VW5kZXIgUnVuIENvbmZpZ3VyYXRpb25zIGV4cGFuZCBcIkMvQysrIFJlbW90ZSBBcHBsaWNhdGlvblwiLiBBIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IHByb2plY3Qgc2hvdWxkIGFwcGVhci4gQ2xpY2tpbmcgaXQgd2lsbCBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIHNldHRpbmdzLiBcblx0XHRcdGluIFwiQy9DKysgQXBwbGljYXRpb25cIiBmaWVsZCBpbnB1dCBSZW1vdGUgQWJzb2x1dGUgRmlsZSBwYXRoIGZvciBDL0MrKyBBcHBsaWNhdGlvbi4gZS5nLjogL2hvbWUvcm9vdC9teWFwcGxpY2F0aW9uIFxuXHRcdFx0SW4gXCJDb25uZWN0aW9uXCIgZHJvcC1kb3duIGxpc3QgbWFrZSBzdXJlIGEgVENGIGNvbm5lY3Rpb24gaXMgc2V0IHVwIGZvciB5b3VyIHRhcmdldC4gSWYgbm90LCBjcmVhdGUgYSBuZXcgb25lIGJ5IGNsaWNraW5nIHRoZSBOZXcgYnV0dG9uLiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJzdGVwIDE0IHRvIHN0ZXAgMTYgLT4gQnVpbGQgc3VjY2VlZCBhbmQgdGhlIGNvbnNvbGUgb3V0cHV0cyBIZWxsbyB3b3JsZCwgeW91IGNhbiBhbHNvIGNoZWNrIHRoZSBvdXRwdXQgb24gdGFyZ2V0LiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJBZnRlciBhbGwgc2V0dGluZ3MgYXJlIGRvbmUsIHNlbGVjdCB0aGUgUnVuIGJ1dHRvbiBvbiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciBcblxuMSIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIxNiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSZXBlYXQgdGhlIHN0ZXBzIDE0LTE1LCBidXQgaW5zdGVhZCBvZiB1c2luZyBSdW4gQ29uZmlndXJhdGlvbnMgdXNlIERlYnVnIENvbmZpZ3VyYXRpb25zOiBcblx0XHRSaWdodCBjbGljayBpdCBhZ2FpbiBhbmQgRGVidWcgYXMgLT4gRGVidWcgQ29uZmlndXJhdGlvbnMgXG5cdFx0VW5kZXIgRGVidWcgQ29uZmlndXJhdGlvbnMgZXhwYW5kIFwiQy9DKysgUmVtb3RlIEFwcGxpY2F0aW9uXCIuIEEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1cnJlbnQgcHJvamVjdCBzaG91bGQgYXBwZWFyLiBDbGlja2luZyBpdCB3aWxsIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuIFxuXHRcdGluIFwiQy9DKysgQXBwbGljYXRpb25cIiBmaWVsZCBpbnB1dCBSZW1vdGUgQWJzb2x1dGUgRmlsZSBwYXRoIGZvciBDL0MrKyBBcHBsaWNhdGlvbi4gXG5cdFx0ZS5nLjogL2hvbWUvcm9vdC9teWFwcGxpY2F0aW9uIFxuXHRcdEluIFwiQ29ubmVjdGlvblwiIGRyb3AtZG93biBsaXN0IG1ha2Ugc3VyZSBhIFRDRiBjb25uZWN0aW9uIGlzIHNldCB1cCBmb3IgeW91ciB0YXJnZXQuIElmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSBieSBjbGlja2luZyB0aGUgTmV3IGJ1dHRvbiBcbjEiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMTciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQWZ0ZXIgYWxsIHNldHRpbmdzIGFyZSBkb25lLCBzZWxlY3QgdGhlIERlYnVnIGJ1dHRvbiBvbiB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiUmVsb2NhdGFibGVfU0RLXy1fQysrXy1fQnVpbGRfSGVsbG9fV29ybGRfQysrX0F1dG90b29sc19wcm9qZWN0IgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJlY2xpcHNlLXBsdWdpbi5lY2xpcHNlLXBsdWdpbi5CdWlsZF9FY2xpcHNlX1BsdWdpbl9mcm9tX3NvdXJjZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImxhdXJlbnRpdS5zZXJiYW5AaW50ZWwuY29tIiwKKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAibGF1cmVudGl1LnNlcmJhbkBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2xvbmUgZWNsaXBzZS1wb2t5IHNvdXJjZS4gICBcbiAgICBcbiAgICAtIGdpdCBjbG9uZSBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9lY2xpcHNlLXBva3kgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJFY2xpcHNlIHBsdWdpbiBpcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkICBcblxuRG9jdW1lbnRhdGlvbiBpcyB0aGVyZS4gRm9yIGV4YW1wbGUgaWYgeW91IGhhdmUgcmVsZWFzZSB5b2N0by0yLjAuMSB5b3Ugd2lsbCBmb3VuZCBvbiAgIGh0dHA6Ly9hdXRvYnVpbGRlci55b2N0b3Byb2plY3Qub3JnL3B1Yi9yZWxlYXNlcy95b2N0by0yLjAuMS9lY2xpcHNlLXBsdWdpbi9tYXJzLyAgYXJjaGl2ZSB3aXRoIGRvY3VtZW50YXRpb24gbGlrZSBvcmcueW9jdG8uZG9jLWRldmVsb3BtZW50LSRkYXRlLnppcCAgXG4gIFxuIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ2hlY2tvdXQgY29ycmVjdCB0YWcuICBcblxuICAgIC0gZ2l0IGNoZWNrb3V0IDxlY2xpcHNlLXZlcnNpb24+Lzx5b2N0by12ZXJzaW9uPiBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQWZ0ZXIgcGx1Z2luIGlzIGJ1aWxkIHlvdSBtdXN0IGhhdmUgIDQgYXJjaGl2ZSBpbiBmb2RlciBzY3JpcHRzIGZyb20gZWNsaXBzZS1wb2t5OiAgXG4gICAgIC0gb3JnLnlvY3RvLmJjIC0gbWFycy1tYXN0ZXItJGRhdGUuemlwICBcbiAgICAgLSBvcmcueW9jdG8uZG9jIC0gbWFycy1tYXN0ZXItJGRhdGUuemlwICAgIC0tPiBkb2N1bWVudGF0aW9uICBcbiAgICAgLSBvcmcueW9jdG8uc2RrIC0gbWFycy1tYXN0ZXItJGRhdGUuemlwICAgICAgIFxuICAgICAtIG9yZy55b2N0by5zZGsgLSBtYXJzLW1hc3Rlci0kZGF0ZS4tYXJjaGl2ZS56aXAgIC0tPiBwbHVnaW4gICIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIk1vdmUgdG8gc2NyaXB0cy8gZm9sZGVyLiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlJ1biAuL3NldHVwLnNoICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjUiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiV2hlbiB0aGUgc2NyaXB0IGZpbmlzaGVzLCBpdCBwcm9tcHRzIGEgY29tbWFuZCB0byBpc3N1ZSB0byBidWlsZCB0aGUgcGx1Z2luLiBJdCBzaG91bGQgbG9vayBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmc6ICBcblxuJCBFQ0xJUFNFX0hPTUU9L2VjbGlwc2UtcG9reS9zY3JpcHRzL2VjbGlwc2UgLi9idWlsZC5zaCAvJjEgfCB0ZWUgLWEgYnVpbGQubG9nICBcblxuSGVyZSwgdGhlIHRocmVlIGFyZ3VtZW50cyB0byB0aGUgYnVpbGQgc2NyaXB0IGFyZSB0YWcgbmFtZSwgYnJhbmNoIGZvciBkb2N1bWVudGF0aW9uIGFuZCByZWxlYXNlIG5hbWUuICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjYiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiT24gYW4gZWNsaXBzZSB3aXRob3V0IHRoZSBZb2N0byBQbHVnaW4sIHNlbGVjdCBcIkluc3RhbGwgTmV3IFNvZnR3YXJlXCIgZnJvbSBIZWxwIHB1bGwtZG93biBtZW51ICBcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjciOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiU2VsZWN0IEFkZCBhbmQgZnJvbSB0aGUgZGlhbG9nIGNob29zZSBBcmNoaXZlLi4uICBMb29rIGZvciB0aGUgKmFyY2hpdmUuemlwIGZpbGUgdGhhdCB3YXMgYnVpbHQgcHJldmlvdXNseSB3aXRoIHRoZSBidWlsZC5zaCBzY3JpcHQuIENsaWNrIE9LLiAgXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI4IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNlbGVjdCBhbGwgY29tcG9uZW50cyBhbmQgcHJvY2VlZCB3aXRoIEluc3RhbGxhdGlvbiBvZiBwbHVnaW4uIFJlc3RhcnRpbmcgZWNsaXBzZSBtaWdodCBiZSByZXF1aXJlZC5cbiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiQnVpbGRfRWNsaXBzZV9QbHVnaW5fZnJvbV9zb3VyY2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImVjbGlwc2UtcGx1Z2luLmVjbGlwc2UtcGx1Z2luLkVjbGlwc2VfUG9reV9pbnN0YWxsYXRpb25fYW5kX3NldHVwIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiSW5zdGFsbCBTREsgIFxuXHRhKURvd25sb2FkIGh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vcHViL3JlbGVhc2VzLy90b29sY2hhaW4veDg2XzY0L3Bva3ktZ2xpYmMteDg2XzY0LWNvcmUtXHRpbWFnZS1zYXRvLWk1ODYtdG9vbGNoYWluLS5zaCAgXG5cdGIpUnVuIHRoZSBTREsgaW5zdGFsbGVyIGFuZCBhY2NlcHQgdGhlIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIFwiRWNsaXBzZSBJREUgZm9yIEMvQysrIERldmVsb3BlcnNcIiBPeHlnZW4gcmVsZWFzZSAoNC43LjApICBcblx0YSkgR28gdG8gaHR0cHM6Ly93d3cuZWNsaXBzZS5vcmcvZG93bmxvYWRzL3BhY2thZ2VzL2FsbCwgY2xpY2sgXCJPeHlnZW4gUlwiICBcblx0YikgQ2xpY2sgdG8gZG93bmxvYWQgdGhlIGJ1aWxkIGZvciB5b3VyIE9TICBcblx0YykgQ2xpY2sgXCJEb3dubG9hZFwiIGJ1dHRvbiB0byBkb3dubG9hZCBmcm9tIGEgbWlycm9yICBcblx0ZCkgUnVuIFwidGFyIHhmXCIgdG8gZXh0cmFjdCB0aGUgZG93bmxvYWRlZCBhcmNoaXZlICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0IjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluc3RhbGwgXCJFY2xpcHNlIElERSBmb3IgQy9DKysgRGV2ZWxvcGVyc1wiIE94eWdlbiByZWxlYXNlICg0LjcuMCkgKENvbnRpbnVlKSAgXG5cdGUpIFJ1biBcImVjbGlwc2UvZWNsaXBzZVwiIHRvIHN0YXJ0IEVjbGlwc2UgIFxuXHRmKSBPcHRpb25hbCBzdGVwIGZvciBob3N0IG1hY2hpbmUgd2l0aGluIEludGVsIG5ldHdvcms6IEluIEVjbGlwc2Ugd29ya2JlbmNoIHdpbmRvdywgZ28gdG8gXCJXaW5kb3dcIiBtZW51IC0+IFwiUHJlZmVyZW5jZXMuLi5cIi4gIFxuXHRnKSBJbiBcIlByZWZlcmVuY2VzXCIgZGlhbG9nLCBnbyB0byBcIkdlbmVyYWxcIiAtPiBcIk5ldHdvcmsgQ29ubmVjdGlvbnNcIiwgc2V0IFwiQWN0aXZlIFByb3ZpZGVyXCIgdG8gXCJNYW51YWxcIi4gSW4gXCJQcm94eSBcdGVudHJpZXNcIiB0YWJsZSwgc2VsZWN0IEhUVFAgYW5kIGNsaWNrIFwiRWRpdFwiIGFuZCBlbnRlciBob3N0IFwicHJveHktY2hhaW4uaW50ZWwuY29tXCIgcG9ydCA5MTEsIGNsaWNrIE9LLiBSZXBlYXQgZm9yIEhUVFBTIHdpdGggcG9ydCA5MTIgXG5DbGljayBPSyB0byBjbG9zZSBcIlByZWZlcmVuY2VzXCIgZGlhbG9nLiAgXG5cdGgpIEdvIHRvIFwiRmlsZVwiIG1lbnUgLT4gXCJSZXN0YXJ0XCIgdG8gcmVzdGFydCBFY2xpcHNlIGZvciBwcm94eSBzZXR0aW5ncyB0byB0YWtlIGVmZmVjdC4gIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdCI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNCI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIEVjbGlwc2UgUG9reSBwbHVnaW5zICBcblx0YSkgRG93bmxvYWQgaHR0cHM6Ly9hdXRvYnVpbGRlci55b2N0by5pby9wdWIvcmVsZWFzZXMvPHlvY3RvLXZlcnNpb24+L2VjbGlwc2UtcGx1Z2luLzxlY2xpcHNlLXZlcnNpb24+L29yZy55b2N0by5zZGstZGV2ZWxvcG1lbnQtPGRhdGU+LWFyY2hpdmUuemlwICAgXG5cdGIpIEluIEVjbGlwc2Ugd29ya2JlbmNoIHdpbmRvdywgZ28gdG8gXCJIZWxwXCIgbWVudSAtPiBcIkluc3RhbGwgTmV3IFNvZnR3YXJlLi4uXCIgIFxuXHRjKSBJbiBcIkluc3RhbGxcIiBkaWFsb2csIGNsaWNrIFwiQWRkLi4uXCIgYnV0dG9uICBcblx0ZCkgSW4gXCJBZGQgUmVwb3NpdG9yeVwiIGRpYWxvZywgZW50ZXIgXCJFY2xpcHNlIFBva3lcIiBmb3IgKHJlcG9zaXRvcnkpIE5hbWUsIGNsaWNrIFwiQXJjaGl2ZS4uLlwiICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiNSI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJJbnN0YWxsIEVjbGlwc2UgUG9reSBwbHVnaW5zIChjb250aW51ZSkgIFxuXHRlKSBJbiBcIlJlcG9zaXRvcnkgYXJjaGl2ZVwiIGJyb3dzZSBkaWFsb2csIHNlbGVjdCB0aGUgZG93bmxvYWRlZCBFY2xpcHNlIFBva3kgcmVwb3NpdG9yeSBhcmNoaXZlICBcblx0ZikgQmFjayBpbiBcIkFkZCBSZXBvc2l0b3J5XCIgZGlhbG9nLCBjbGljayBcIk9LXCIgIFxuXHRnKSBCYWNrIGluIFwiSW5zdGFsbFwiIGRpYWxvZywgbWFrZSBzdXJlIFwiV29yayB3aXRoOlwiIGlzIHNldCB0byBcIkVjbGlwc2UgUG9reVwiIHJlcG9zaXRvcnksIHRpY2sgXCJZb2N0byBQcm9qZWN0IFx0RG9jdW1lbnRhdGlvbiBQbHVnLWluXCIgYW5kIFwiWW9jdG8gUHJvamVjdCBTREsgUGx1Zy1pblwiLCBjbGljayBcIk5leHQgPlwiIGFuZCB2ZXJpZnkgcGx1Z2lucy9mZWF0dXJlcyBuYW1lL3ZlcnNpb24sIFx0Y2xpY2sgXCJOZXh0ID5cIiBhbmQgYWNjZXB0IGxpY2Vuc2UgYWdyZWVtZW50LCBjbGljayBcIkZpbmlzaFwiICBcblx0aCkgSWYgXCJTZWN1cml0eSBXYXJuaW5nXCIgZGlhbG9nIGFwcGVhcnMsIGNsaWNrIFwiT0tcIiB0byBpbnN0YWxsIHVuc2lnbmVkIGNvbnRlbnQuICBcblx0aSkgSW4gXCJTb2Z0d2FyZSBVcGRhdGVzXCIgZGlhbG9nLCBjbGljayBcIlllc1wiIHRvIHJlc3RhcnQgRWNsaXBzZSB0byBjb21wbGV0ZSBFY2xpcHNlIFBva3kgcGx1Z2lucyBpbnN0YWxsYXRpb24uICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI2IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlNldHVwIEVjbGlwc2UgUG9reSB0byB1c2UgU0RLICBcblx0YSkgSW4gRWNsaXBzZSB3b3JrYmVuY2ggd2luZG93LCBnbyB0byBcIldpbmRvd1wiIG1lbnUgLT4gXCJQcmVmZXJlbmNlc1wiLiAgXG5cdGIpIEluIFwiUHJlZmVyZW5jZXNcIiB3aW5kb3csIGdvIHRvIFwiWW9jdG8gUHJvamVjdCBTREtcIiwgaW4gXCJDcm9zcyBDb21waWxlciBPcHRpb25zXCIgZnJhbWUsIHNlbGVjdCBcIlN0YW5kYWxvbmUgcHJlLVx0YnVpbHQgdG9vbGNoYWluXCIuICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJFY2xpcHNlIFBva3kgcGx1Z2lucyBpbnN0YWxsZWQgYW5kIHJ1bm5pbmcgc3VjY2Vzc2Z1bGx5LCBlLmcuIG9ic2VydmUgdGhhdCBcIllvY3RvIFByb2plY3QgVG9vbHNcIiBtZW51IGlzIGF2YWlsYWJsZSBvbiBFY2xpcHNlIHdvcmtiZW5jaCB3aW5kb3cuIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJFY2xpcHNlX1Bva3lfaW5zdGFsbGF0aW9uX2FuZF9zZXR1cCIKKyAgICAgICAgfQorICAgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2tlcm5lbC1kZXYuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwva2VybmVsLWRldi5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5M2I0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2tlcm5lbC1kZXYuanNvbgpAQCAtMCwwICsxLDIwMCBAQAorWworICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfZGVmY29uZmlnIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRm9sbG93IHRoZSBTZXQgVXAgcHJvY2VkdXJlIHRvIGNvbXBsZXRlIHRoZSBjb21tb24gYW5kIHNwZWNpZmljIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgdGVzdCBjYXNlLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjUHJlcmVxdWlzaXRlc183ICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeGVjdXRlIHRoZSB0ZXN0IGNhc2Ugc3RlcHMgYXNkb2N1bWVudGVkIG9uIHRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCIgd2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTdGVwc183IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUmV2aWV3IGV4cGVjdGVkIHJlc3VsdHMgb24gdGhldGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIndpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjRXhwZWN0ZWRfUmVzdWx0c183IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2RlZmNvbmZpZyIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAia2VybmVsLWNvbmZpZ3VyYXRpb24ua2VybmVsLWNvbmZpZ3VyYXRpb24uVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9kZWZjb25maWcrZnJhZ21lbnRzIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRm9sbG93IHRoZSBTZXQgVXAgcHJvY2VkdXJlIHRvIGNvbXBsZXRlIHRoZSBjb21tb24gYW5kIHNwZWNpZmljIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgdGVzdCBjYXNlLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjUHJlcmVxdWlzaXRlc184ICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeGVjdXRlIHRoZSB0ZXN0IGNhc2Ugc3RlcHMgYXNkb2N1bWVudGVkIG9uIHRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCIgd2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTdGVwc184IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUmV2aWV3IGV4cGVjdGVkIHJlc3VsdHMgb24gdGhldGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIndpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjRXhwZWN0ZWRfUmVzdWx0c184IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2RlZmNvbmZpZytmcmFnbWVudHMiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfQXBwbHlpbmdfcGF0Y2hlcyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXMgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIyIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4ZWN1dGUgdGhlIHRlc3QgY2FzZSBzdGVwcyBhc2RvY3VtZW50ZWQgb24gdGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIiB3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1N0ZXBzIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUmV2aWV3IGV4cGVjdGVkIHJlc3VsdHMgb24gdGhldGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIndpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjRXhwZWN0ZWRfUmVzdWx0cyIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9BcHBseWluZ19wYXRjaGVzIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2xpbnV4LXlvY3RvLWxvY2FsLXNvdXJjZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfMiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfMiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfMiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9saW51eC15b2N0by1sb2NhbC1zb3VyY2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfbGludXgteW9jdG8tY3VzdG9tLWxvY2FsLXNvdXJjZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfMyAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfMyIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfMyIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9saW51eC15b2N0by1jdXN0b20tbG9jYWwtc291cmNlIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X3JlY2lwZS1zcGFjZV9tZXRhIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRm9sbG93IHRoZSBTZXQgVXAgcHJvY2VkdXJlIHRvIGNvbXBsZXRlIHRoZSBjb21tb24gYW5kIHNwZWNpZmljIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgdGVzdCBjYXNlLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjUHJlcmVxdWlzaXRlc181ICAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiMiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJFeGVjdXRlIHRoZSB0ZXN0IGNhc2Ugc3RlcHMgYXNkb2N1bWVudGVkIG9uIHRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCIgd2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTdGVwc181IiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiUmV2aWV3IGV4cGVjdGVkIHJlc3VsdHMgb24gdGhldGhlIFwiS2VybmVsIERldmVsb3BtZW50IFRlc3QgQ2FzZXNcIndpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjRXhwZWN0ZWRfUmVzdWx0c181IgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X3JlY2lwZS1zcGFjZV9tZXRhIgorICAgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAgICJ0ZXN0IjogeworICAgICAgICAgICAgIkBhbGlhcyI6ICJrZXJuZWwtY29uZmlndXJhdGlvbi5rZXJuZWwtY29uZmlndXJhdGlvbi5UQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X0V4dGVybmFsX3NvdXJjZSIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkZvbGxvdyB0aGUgU2V0IFVwIHByb2NlZHVyZSB0byBjb21wbGV0ZSB0aGUgY29tbW9uIGFuZCBzcGVjaWZpYyBwcmVyZXF1aXNpdGVzIGZvciB0aGlzIHRlc3QgY2FzZS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNTZXR1cCBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfNiAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfNiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfNiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9FeHRlcm5hbF9zb3VyY2UiCisgICAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgICAgInRlc3QiOiB7CisgICAgICAgICAgICAiQGFsaWFzIjogImtlcm5lbC1jb25maWd1cmF0aW9uLmtlcm5lbC1jb25maWd1cmF0aW9uLlRDVEVNUF8yLjNfTUFOVUFMX0tlcm5lbF9kZXZfYnVpbGRpbmdfZXh0ZXJuYWxfbW9kdWxlcyhoZWxsby1tb2QpIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRm9sbG93IHRoZSBTZXQgVXAgcHJvY2VkdXJlIHRvIGNvbXBsZXRlIHRoZSBjb21tb24gYW5kIHNwZWNpZmljIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgdGVzdCBjYXNlLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjUHJlcmVxdWlzaXRlc18xMCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU2V0dXBfMTAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJSZXZpZXcgZXhwZWN0ZWQgcmVzdWx0cyBvbiB0aGV0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wid2lraS4gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9LZXJuZWxfRGV2ZWxvcG1lbnRfVGVzdF9DYXNlcyNFeHBlY3RlZF9SZXN1bHRzXzEwIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VtbWFyeSI6ICJUQ1RFTVBfMi4zX01BTlVBTF9LZXJuZWxfZGV2X2J1aWxkaW5nX2V4dGVybmFsX21vZHVsZXMoaGVsbG8tbW9kKSIKKyAgICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAia2VybmVsLWNvbmZpZ3VyYXRpb24ua2VybmVsLWNvbmZpZ3VyYXRpb24uVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9sb2NhbF9wYXJhbGxlbF9tZXRhIiwKKyAgICAgICAgICAgICJhdXRob3IiOiBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZWUucGVuZy55ZW9oQGludGVsLmNvbSIsCisgICAgICAgICAgICAgICAgICAgICJuYW1lIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICAgICAgICAgIjEiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRm9sbG93IHRoZSBTZXQgVXAgcHJvY2VkdXJlIHRvIGNvbXBsZXRlIHRoZSBjb21tb24gYW5kIHNwZWNpZmljIHByZXJlcXVpc2l0ZXMgZm9yIHRoaXMgdGVzdCBjYXNlLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1NldHVwIGh0dHBzOi8vd2lraW9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI1ByZXJlcXVpc2l0ZXNfNCAgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRXhlY3V0ZSB0aGUgdGVzdCBjYXNlIHN0ZXBzIGFzZG9jdW1lbnRlZCBvbiB0aGUgXCJLZXJuZWwgRGV2ZWxvcG1lbnQgVGVzdCBDYXNlc1wiIHdpa2kuIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvS2VybmVsX0RldmVsb3BtZW50X1Rlc3RfQ2FzZXMjU3RlcHNfNCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlJldmlldyBleHBlY3RlZCByZXN1bHRzIG9uIHRoZXRoZSBcIktlcm5lbCBEZXZlbG9wbWVudCBUZXN0IENhc2VzXCJ3aWtpLiBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL0tlcm5lbF9EZXZlbG9wbWVudF9UZXN0X0Nhc2VzI0V4cGVjdGVkX1Jlc3VsdHNfNCIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAiVENURU1QXzIuM19NQU5VQUxfS2VybmVsX2Rldl9sb2NhbF9wYXJhbGxlbF9tZXRhIgorICAgICAgICB9CisgICAgfQorXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvb2UtY29yZS5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9vZS1jb3JlLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg5M2Q4NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvb2UtY29yZS5qc29uCkBAIC0wLDAgKzEsMjYwIEBACitbCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAib2UtY29yZS5zY3JpcHRzLlVzZV9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpLnB5X3RvX2dlbmVyYXRlX2J1aWxkX3Byb2ZpbGVzIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIGEgYnVpbGQgZm9yIGEgcmVjaXBlIChlLmcuIGNvcmUtaW1hZ2UtbWluaW1hbCkiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gdGhlIHByb2ZpbGluZyBzY3JpcHQsIC4uL3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkucHkgIHRtcC9idWlsZHN0YXRzLyAgICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoZSByZXN1bHRzICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIHNjcmlwdHMgZ2VuZXJhdGVzIHN2ZyBmaWxlcyB3aXRoIHRoZSBwcm9maWxpbmcgcmVzdWx0cyAuICIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogIlVzZV9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpLnB5X3RvX2dlbmVyYXRlX2J1aWxkX3Byb2ZpbGVzIgorICAgIH0KKyAgfSwKKyAgeworICAgICJ0ZXN0IjogeworICAgICAgIkBhbGlhcyI6ICJvZS1jb3JlLnNjcmlwdHMuQ3Jvc3N0YXBfc2NyaXB0X2NoZWNrIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiYWxleGFuZHJ1LmMuZ2Vvcmdlc2N1QGludGVsLmNvbSIKKyAgICAgICAgfQorICAgICAgXSwKKyAgICAgICJleGVjdXRpb24iOiB7CisgICAgICAgICIxIjogeworICAgICAgICAgICJhY3Rpb24iOiAiQ3JlYXRlIHRoZSB0cmFjZV9vcGVuLnN0cCBzY3JpcHQgYXMgZm9sbG93cyBpbiB0aGUgaG9zdCBtYWNoaW5lOiAgXG5cblxucHJvYmUgc3lzY2FsbC5vcGVuICAgICBcblxueyAgXG5cblxuICAgICAgICBwcmludGYgKFwiJXMoJWQpIG9wZW4gKCVzKVxcblwiLCBleGVjbmFtZSgpLCBwaWQoKSwgYXJnc3RyKSAgXG5cbn0gIFxuXG5cblxuaWYgdGhlIGFib3ZlIGZhaWxlZCwgdGhlbiBjcmVhdGUgdGhlIGJlbG93IGluc3RlYWQuICBcblxucHJvYmUgc3lzY2FsbC5vcGVuIFxueyBcbiAgcHJpbnRmIChcIiVzKCVkKSBvcGVuXFxuXCIsIGV4ZWNuYW1lKCksIHBpZCgpKSBcblxufSAgXG4gXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjIiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJBZGQgJ3Rvb2xzLXByb2ZpbGUnIGFuZCAnc3NoLXNlcnZlci1vcGVuc3NoJyB0byBFWFRSQV9JTUFHRV9GRUFUVVJFUyBpbiBsb2NhbC5jb25mIFxuXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIGEgY29yZS1pbWFnZS1taW5pbWFsIGltYWdlLCBidWlsZCBzeXN0ZW10YXAtbmF0aXZlLiBTdGFydCB0aGUgaW1hZ2UgdW5kZXIgcWVtdS4gXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIk1ha2Ugc3VyZSB0aGF0IHRoZSBzc2ggc2VydmljZSBpcyBzdGFydGVkIG9uIHRoZSBRZW11IG1hY2hpbmUuIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjUiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJGcm9tIHRoZSBob3N0IG1hY2hpbmUgcG9reSBidWlsZF9kaXIsIHJ1biBcImNyb3NzdGFwIHJvb3RAMTkyLjE2OC43LjIgdHJhY2Vfb3Blbi5zdHBcIi4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjYiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJJbiBRRU1VLCB0cnkgdG8gb3BlbiBzb21lIGFwcGxpY2F0aW9ucywgc3VjaCBhcyBvcGVuIGEgdGVybWluYWwsIGlucHV0IHNvbWUgY29tbWFuZCwgIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjciOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB0aGUgaG9zdCBtYWNoaW5lLCBcImNyb3NzdGFwXCIgaGFzIHJlbGF0ZWQgb3V0cHV0LiBcblxuXG5cbk5PVEU6ICBEbyBub3QgYnVpbGQgdGhlIGtlcm5lbCBmcm9tIHNoYXJlZCBzdGF0ZShzc3RhdGUtY2FjaGUpIGZvciB0aGlzIHRvIHdvcmsuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGUgc2NyaXB0IHNob3VsZCBzdWNjZXNzZnVsbHkgY29ubmVjdCB0byB0aGUgcWVtdSBtYWNoaW5lIGFuZCB0aGVyZSBcbnNob3VsZCBiZSBwcmVzZW50ZWQgYSBsaXN0IG9mIHNlcnZpY2VzKHBpZCwgcHJvY2VzcyBuYW1lKSB3aGljaCBydW4gb24gXG50aGUgcWVtdSBtYWNoaW5lLiAiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJDcm9zc3RhcF9zY3JpcHRfY2hlY2siCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuc2NyaXB0cy5MaXN0X2FsbF90aGVfUEFDS0FHRUNPTkZJRydzX2ZsYWdzIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAieWkuemhhb0B3aW5kcml2ZXIuY29tIiwKKyAgICAgICAgICAibmFtZSI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIiBEb3dubG9hZCB0aGUgcG9reSBzb3VyY2UgYW5kIHNldHVwIHRoZSBlbnZpcm9ubWVudC4gIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiLi4vc2NyaXB0cy9jb250cmliL2xpc3QtcGFja2FnZWNvbmZpZy1mbGFncy5weVwiICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSW4gc3RlcCAyLCB3aWxsIGxpc3QgYXZhaWxhYmxlIHBrZ3Mgd2hpY2ggaGF2ZSBQQUNLQUdFQ09ORklHIGZsYWdzOiAgXG5QQUNLQUdFIE5BTUUgKG9yIFJFQ0lQRSBOQU1FKSAgICAgICAgICAgUEFDS0FHRUNPTkZJRyBGTEFHUyAgXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgXG5hbHNhLXRvb2xzLTEuMC4yNi4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0dmFsIGd0aysgIFxuYXZhaGktdWktMC42LjMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHZhbCBweXRob24gIFxuYmx1ZXo0LTQuMTAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYSBkZWZhdWx0dmFsIHBpZSAgXG4iCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiLi4vc2NyaXB0cy9jb250cmliL2xpc3QtcGFja2FnZWNvbmZpZy1mbGFncy5weSAtZlwiICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSW4gc3RlcCAzLCB3aWxsIGxpc3QgYXZhaWxhYmxlIFBBQ0tBR0VDT05GSUcgZmxhZ3MgYW5kIGFsbCBhZmZlY3RlZCBwa2dzICBcblBBQ0tBR0VDT05GSUcgRkxBRyAgICAgICBQQUNLQUdFIE5BTUVTIChvciBSRUNJUEUgTkFNRVMpICBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgXG4zZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubm1hbi0xLjE2ICBcbiAgICAgICAgXG5hdmFoaSAgICAgICAgICAgICAgICAgICAgICAgIGN1cHMtMS42LjMgIHB1bHNlYXVkaW8tNC4wICBcbmJlZWNyeXB0ICAgICAgICAgICAgICAgICAgIHJwbS01LjQuOSAgcnBtLW5hdGl2ZS01LjQuOSAgXG4iCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiUnVuIFwiLi4vc2NyaXB0cy9jb250cmliL2xpc3QtcGFja2FnZWNvbmZpZy1mbGFncy5weSAtYVwiICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiSW4gc3RlcCA0LCB3aWxsIGxpc3QgYWxsIHBrZ3MgYW5kIFBBQ0tBR0VDT05GSUcgaW5mb3JtYXRpb246ICBcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICBcbmd0aystMi4yNC4xOCAgXG4vaG9tZS9qaWFob25neHUveW9jdG8vcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMTguYmIgIFxuUEFDS0FHRUNPTkZJRyB4MTEgIFxuUEFDS0FHRUNPTkZJR1t4MTFdIC0td2l0aC14PXllcyAtLXdpdGgtZ2RrdGFyZ2V0PXgxMSwtLXdpdGgteD1ubywke1gxMURFUEVORFN9ICBcbnhmODYtdmlkZW8taW50ZWwtMi4yMS45ICBcbi9ob21lL2ppYWhvbmd4dS95b2N0by9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsXzIuMjEuOS5iYiAgXG5QQUNLQUdFQ09ORklHIE5vbmUgIFxuUEFDS0FHRUNPTkZJR1t4dm1jXSAtLWVuYWJsZS14dm1jLC0tZGlzYWJsZS14dm1jLGxpYnh2bWMgIFxuUEFDS0FHRUNPTkZJR1tzbmFdIC0tZW5hYmxlLXNuYSwtLWRpc2FibGUtc25hICBcbiIKKyAgICAgICAgfSwKKyAgICAgICAgIjUiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gXCIuLi9zY3JpcHRzL2NvbnRyaWIvbGlzdC1wYWNrYWdlY29uZmlnLWZsYWdzLnB5IC1wXCIgICAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIkluIHN0ZXAgNSwgd2lsbCBsaXN0IHBrZ3Mgd2l0aCBwcmVmZXJyZWQgdmVyc2lvbjogIFxuUEFDS0FHRSBOQU1FIChvciBSRUNJUEUgTkFNRSkgICAgICAgICAgICAgIFBBQ0tBR0VDT05GSUcgRkxBR1MgIFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICBcbmFsc2EtdG9vbHMtMS4wLjI2LjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHZhbCBndGsrICBcbmF2YWhpLXVpLTAuNi4zMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHR2YWwgcHl0aG9uICBcbmJsdWV6NC00LjEwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNhIGRlZmF1bHR2YWwgcGllICBcbmJsdWV6NS01LjcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNhIGRlZmF1bHR2YWwgb2JleC1wcm9maWxlcyAgXG5cblxuXG4gIgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiTGlzdF9hbGxfdGhlX1BBQ0tBR0VDT05GSUcnc19mbGFncyIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAib2UtY29yZS5iaXRiYWtlLlRlc3RfYml0YmFrZV9tZW51Y29uZmlnIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjbG9uZSBwb2t5ICBcbiBcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNkIHBva3kgICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAic291cmNlIG9lLWluaXQtYnVpbGQtZW52ICYmIGNkIGJ1aWxkICAgIFxuXG4iLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjQiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJzZXQgYmVsb3cgaW4gbG9jYWwuY29uZiAgIFxuXG4gIFx0TUFDSElORSA9IFwicWVtdXg4NlwiICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI1IjogeworICAgICAgICAgICJhY3Rpb24iOiAiYml0YmFrZSBsaW51eC15b2N0byAtYyBrZXJuZWxfY29uZmlnbWUgLWYgICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI2IjogeworICAgICAgICAgICJhY3Rpb24iOiAiYml0YmFrZSBsaW51eC15b2N0byAtYyBtZW51Y29uZmlnICAgXG5cbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNyI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIk9uY2UgbWVudWNvbmZpZyBsYXVuY2hlcywgdXNlIHRoZSBpbnRlcmZhY2UgdG8gbmF2aWdhdGUgdGhyb3VnaCB0aGUgc2VsZWN0aW9ucyBhbmQgXG4gICBlbmFibGUgb3B0aW9uIFwiNjQtYml0IGtlcm5lbFwiICBcblxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI4IjogeworICAgICAgICAgICJhY3Rpb24iOiAiU2F2ZSBjaGFuZ2VzIGFuZCBzZXQgbmFtZSBvZiB0aGUgZmlsZSBhcyBcInRlc3QuY29uZmlnXCIgICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiT3BlbiBmaWxlOiAgXG4gXG5wb2t5L2J1aWxkLy90bXAvd29yay9xZW11eDg2LXBva3ktbGludXgvbGludXgteW9jdG8vNC5YLlgrKi9saW51eC1xZW11eDg2LXN0YW5kYXJkLWJ1aWxkL3Rlc3QuY29uZmlnICAgXG4gIFxuIFxuXG5hbmQgdmVyaWZ5IHRoYXQgY2hhbmdlcyBhcmUgcHJlc2VudCBpbiB0aGUgZmlsZSBhcyBmb2xsb3dzOiAgIFxuIFxuQ09ORklHXzY0QklUPXkgIFxuIFxuQ09ORklHX1g4Nl82ND15IgorICAgICAgICB9CisgICAgICB9LAorICAgICAgInN1bW1hcnkiOiAiVGVzdF9iaXRiYWtlX21lbnVjb25maWciCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuYml0YmFrZS50ZXN0X2JpdGJha2VfZGV2c2hlbGwiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNsb25lIHBva3kgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiY2QgcG9reSAgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAic291cmNlIG9lLWluaXQtYnVpbGQtZW52ICYmIGNkIGJ1aWxkICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgbWF0Y2hib3gtZGVza3RvcCAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlBhY2thZ2Ugd2FzIGJ1aWxkIGNvcnJlY3RseSAiCisgICAgICAgIH0sCisgICAgICAgICI1IjogeworICAgICAgICAgICJhY3Rpb24iOiAiYml0YmFrZSBtYXRjaGJveC1kZXNrdG9wIC1jIGRldnNoZWxsICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQSB0ZXJtaW5hbCB3aXRoIGEgc2hlbGwgcHJvbXB0IHdpdGhpbiB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50IGlzIG9wZW5lZCAiCisgICAgICAgIH0sCisgICAgICAgICI2IjogeworICAgICAgICAgICJhY3Rpb24iOiAiVmVyaWZ5IHRoYXQgXCJtYXRjaGJveC1kZXNrdG9wXCIgYmluYXJ5IGZpbGUgaXMgbm90IGNyZWF0ZWQgdW5kZXJcInNyY1wiIGRpcmVjdG9yeSAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjciOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJSdW4gY29tbWFuZDouL2NvbmZpZ3VyZSAmJiBtYWtlICIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVmVyaWZ5IHRoYXQgXCJtYXRjaGJveC1kZXNrdG9wXCIgYmluYXJ5IGZpbGUgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IHVuZGVyIFwic3JjL1wiIGRpcmVjdG9yeSAiCisgICAgICAgIH0sCisgICAgICAgICI4IjogeworICAgICAgICAgICJhY3Rpb24iOiAiRXhpdCBmcm9tdGhlIGRldnNoZWxsIHRlcm1pbmFsLGV4aXQgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUZXJtaW5hbCBiYWNrIHRvIHRoZSBidWlsZCBkaXJlY3RvcnkiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJ0ZXN0X2JpdGJha2VfZGV2c2hlbGwiCisgICAgfQorICB9LAorICB7CisgICAgInRlc3QiOiB7CisgICAgICAiQGFsaWFzIjogIm9lLWNvcmUuYml0YmFrZS50ZXN0X2RlcGVuZGVuY3lfZXhwbG9yZXJfaXNfbGF1bmNoZWQiLAorICAgICAgImF1dGhvciI6IFsKKyAgICAgICAgeworICAgICAgICAgICJlbWFpbCI6ICJqb3NlLnBlcmV6LmNhcnJhbnphQGludGVsLmNvbSIsCisgICAgICAgICAgIm5hbWUiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iCisgICAgICAgIH0KKyAgICAgIF0sCisgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAiMSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNsb25lIHBva3kgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIyIjogeworICAgICAgICAgICJhY3Rpb24iOiAiY2QgcG9reSAiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgfSwKKyAgICAgICAgIjMiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYgIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICI0IjogeworICAgICAgICAgICJhY3Rpb24iOiAiYml0YmFrZSAtdSB0YXNrZXhwIC1nIGNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lICAgIFxuXG5OT1RFOiBUbyBleGVjdXRlIHRoZSBsYXN0IGNvbW1hbmQgb2YgdGhpcyB0ZXN0LCBpdCdzIG5lY2Vzc2FyeSB0aGF0IHRoZSBtYWNoaW5lIGlzIGV4ZWN1dGluZyBhbiBYMTEgc2VydmVyLCBvciBpZiB0aGF0J3Mgbm90IHRoZSBjYXNlIChmb3IgZXhhbXBsZSwgaWYgcnVubmluZyB0aGUgdGVzdCBvbiBhIGhlYWRsZXNzIHNlcnZlciksIGl0IGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBzc2ggWDExIGZvcndhcmRpbmcgb24gYm90aCwgdGhlIHNlcnZlciBhbmQgdGhlIGNsaWVudCwgYW5kIGhhdmUgdGhlIFgxMSBzZXJ2ZXIgcnVubmluZyBvbiB0aGUgY2xpZW50LiAgICBcblxuVGhlIGluc3RydWN0aW9ucyB0byBlbmFibGUgWDExIGZvcndhcmRpbmcgdmFyeSBiZXR3ZWVuIGRpc3RyaWJ1dGlvbnMuIEJ1dCBmb3IgZXhhbXBsZSwgdGhlc2UgYXJlIHRoZSBzdGVwcyB0byBlbmFibGUgaXQgYmV0d2VlbiBhIHNlcnZlciBydW5uaW5nIG9wZW5TVVNFIExlYXAgNDIuMSBhbmQgYSBjbGllbnQgd2l0aCBGZWRvcmEgMjQ6ICBcbkEuIE9uIHRoZSBzZXJ2ZXIsIG1ha2Ugc3VyZSAvaG9tZS8vLnNzaC9jb25maWcgY29udGFpbnMgdGhlIGxpbmU6ICBcbiAgICAgRm9yd2FyZFgxMSB5ZXMgIFxuQi4gT24gdGhlIHNlcnZlciwgbWFrZSBzdXJlIHhhdXRoIGlzIGluc3RhbGxlZCBieSBydW5uaW5nOiAgXG4gICAgICB3aGljaCB4YXV0aCAgXG5DLiBPbiB0aGUgY2xpZW50LCBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIsIGVuYWJsaW5nIFgxMSBmb3J3YXJkaW5nLCBmb3IgZXhhbXBsZSBieSB1c2luZzogIFxuICAgICAgc3NoIC1YIHVzZXJAc2VydmVyICAgIFxuTk9URSAyOiBkZXBleHAgd2FzIHJlbmFtZWQgdG8gdGFza2V4cCBvbiAyLjMgTTQiLAorICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlZlcmlmeSB0aGF0IGEgXCJkZXBlbmRlbmN5IGV4cGxvcmVyXCIgaXMgb3BlbmVkIGFuZCBmaWxlIFxuICAgZGVwZW5kZW5jaWVzIGFyZSBsaXN0ZWQgICIKKyAgICAgICAgfQorICAgICAgfSwKKyAgICAgICJzdW1tYXJ5IjogInRlc3RfZGVwZW5kZW5jeV9leHBsb3Jlcl9pc19sYXVuY2hlZCIKKyAgICB9CisgIH0sCisgIHsKKyAgICAidGVzdCI6IHsKKyAgICAgICJAYWxpYXMiOiAib2UtY29yZS5iaXRiYWtlLnRlc3RfYml0YmFrZV9zYW5lX2Vycm9yX2Zvcl9pbnZhbGlkX2xheWVyIiwKKyAgICAgICJhdXRob3IiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAiZW1haWwiOiAiam9zZS5wZXJlei5jYXJyYW56YUBpbnRlbC5jb20iLAorICAgICAgICAgICJuYW1lIjogImpvc2UucGVyZXouY2FycmFuemFAaW50ZWwuY29tIgorICAgICAgICB9CisgICAgICBdLAorICAgICAgImV4ZWN1dGlvbiI6IHsKKyAgICAgICAgIjEiOiB7CisgICAgICAgICAgImFjdGlvbiI6ICJjbG9uZSBwb2t5ICBcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiMiI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImNkIHBva3kgIFxuIFxuIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCisgICAgICAgIH0sCisgICAgICAgICIzIjogeworICAgICAgICAgICJhY3Rpb24iOiAic291cmNlIG9lLWluaXQtYnVpbGQtZW52ICYmIGNkIGJ1aWxkICBcbiBcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNCI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogIkFkZCBhIGludmFsaWQgbGF5ZXIgdG8gY29uZi9iYmxheWVycy5jb25mICBcIjxwb2t5IGRpcj4vbXktaW52YWxpZC1sYXllclwiIFxuXHRcbiIsCisgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICB9LAorICAgICAgICAiNSI6IHsKKyAgICAgICAgICAiYWN0aW9uIjogImJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsIiwKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCZWxvdyBlcnJvciBzaG91bGQgYmUgZGlzcGxheWVkOlxuXCJFUlJPUjogTGF5ZXIgZGlyZWN0b3J5ICBkb2VzIG5vdCBleGlzdCEgUGxlYXNlIGNoZWNrIEJCTEFZRVJTIGluIDxwb2t5IGRpcj4vPGJ1aWxkIGRpcj4vY29uZi9iYmxheWVycy5jb25mXCIiCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICAic3VtbWFyeSI6ICJ0ZXN0X2JpdGJha2Vfc2FuZV9lcnJvcl9mb3JfaW52YWxpZF9sYXllciIKKyAgICB9CisgIH0KK10KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL3Nkay5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9zZGsuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDc1NTg2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9zZGsuanNvbgpAQCAtMCwwICsxLDMyIEBACitbCisgICAgeworICAgICAgICAidGVzdCI6IHsKKyAgICAgICAgICAgICJAYWxpYXMiOiAic2RrLnNka19ydW5xZW11LnRlc3Rfc2RrX3Rvb2xjaGFpbl9jYW5fcnVuX211bHRpcGxlX1FFTVVfbWFjaGluZXNfdW5kZXJfVU5GUyIsCisgICAgICAgICAgICAiYXV0aG9yIjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImVlLnBlbmcueWVvaEBpbnRlbC5jb20iLAorICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJlZS5wZW5nLnllb2hAaW50ZWwuY29tIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF0sCisgICAgICAgICAgICAiZXhlY3V0aW9uIjogeworICAgICAgICAgICAgICAgICIxIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlByZXBhcmUga2VybmVsLCByb290ZnMgdGFyLmJ6MiBpbWFnZSwgYW5kIHFlbXUgY29uZmlndXJhdGlvbiAgXG4gICAgXHRhLiBEb3dubG9hZCBrZXJuZWwsIHJvb3RmcyB0YXIuYnoyIGltYWdlIGFuZCBxZW11IGNvbmZpZ3VyYXRpb24gZnJvbSBwdWJsaWMgYXV0b2J1aWxkZXIgd2VicGFnZSAgXG4gICAgXHRiLiBHb3RvIGh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vcHViL3JlbGVhc2VzLzx0YXJnZXRfcmVsZWFzZT4vbWFjaGluZXMvcWVtdS9xZW11eDg2LyBcbiAgICBcdGMuIERvd25sb2FkICBcbiAgICBcdCAgXHRpLiByb290ZnMgdGFyLmJ6MjogY29yZS1pbWFnZS1zYXRvLXNkay1xZW11eDg2LnRhci5iejIgXG4gICAgICBcdFx0aWkuIGtlcm5lbDogYnpJbWFnZS1xZW11eDg2LmJpbiBcbiAgICAgIFx0XHRpaWkuIHFlbXUgY29uZmlndXJhdGlvbjogY29yZS1pbWFnZS1zYXRvLXNkay1xZW11eDg2LnFlbXVib290LmNvbmYgIiwKKyAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIjIiOiB7CisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRG93bmxvYWQgJiBpbnN0YWxsIHNkayB0b29sY2hhaW4gZnJvbSBwdWJsaWMgYXV0b2J1aWxkZXIgXG4gICAgXHRhLiBHb3RvIGh0dHBzOi8vYXV0b2J1aWxkZXIueW9jdG8uaW8vcHViL3JlbGVhc2VzLzx0YXJnZXRfcmVsZWFzZT4vdG9vbGNoYWluL3g4Nl82NC8gXG4gICAgXHRiLiBEb3dubG9hZCBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tc2RrLTx0eXBlLWFyY2g+LXRvb2xjaGFpbi08cmVsZWFzZS12ZXJzaW9uPi5zaCBcbiAgICBcdGMuIFJ1biBjb21tYW5kOiBwb2t5LWdsaWJjLXg4Nl82NC1jb3JlLWltYWdlLXNhdG8tc2RrLTx0eXBlLWFyY2g+LXRvb2xjaGFpbi08cmVsZWFzZS12ZXJzaW9uPi5zaCIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICIzIjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkV4dHJhY3Qgcm9vdGZzIHR3aWNlIGludG8gdHdvIGltYWdlcyBcbiAgICBcdGEuIFJ1biAyIGNvbW1hbmRzIGJlbG93OiAgXG4gICAgICAgICAgICAgICAgICBydW5xZW11LWV4dHJhY3Qtc2RrIGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni50YXIuYnoyIHFlbXV4ODZfcm9vdGZzX2ltYWdlMSAgXG4gICAgICAgICAgICAgICAgICBydW5xZW11LWV4dHJhY3Qtc2RrIGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni50YXIuYnoyIHFlbXV4ODZfcm9vdGZzX2ltYWdlMiIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICI0IjogeworICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIiBGcm9tIHRoZSAyIHRlcm1pbmFscywgc3RhcnQgcWVtdSB0byBib290IHVwIGJvdGggdHdvIGltYWdlcyBcbiAgICBcdGEuIFJ1biAyIGNvbW1hbmRzIGJlbG93OiAgXG4gICAgICAgICAgICAgICAgICBydW5xZW11IGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni5xZW11Ym9vdC5jb25mIHFlbXV4ODZfcm9vdGZzX2ltYWdlMSAgXG4gICAgICAgICAgICAgICAgICBydW5xZW11IGNvcmUtaW1hZ2Utc2F0by1zZGstcWVtdXg4Ni5xZW11Ym9vdC5jb25mIHFlbXV4ODZfcm9vdGZzX2ltYWdlMiAiLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJFeHBlY3QgYm90aCBxZW11IHRvIGJvb3QgdXAgc3VjY2Vzc2Z1bGx5LiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1bW1hcnkiOiAidGVzdF9zZGtfdG9vbGNoYWluX2Nhbl9ydW5fbXVsdGlwbGVfUUVNVV9tYWNoaW5lc191bmRlcl9VTkZTIgorICAgICAgICB9CisgICAgfQorXQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQppbmRleCA4ZDRkZDM1Li43OTMxNDNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgc2VydmljZV9yZXBvID0gb3MucGF0aC5qb2luKGNscy50Yy50ZFsnREVQTE9ZX0RJUl9ERUInXSwgJ2FsbCcpCi0gICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXApCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywgY2xzLnRjLnRhcmdldC5zZXJ2ZXJfaXAsIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKaW5kZXggMmY4NzI5Ni4uYzFlZDM5ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQpAQCAtNTUsNyArNTUsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKG9zLnBhdGguam9pbihjbHMudGMudGRbJ1dPUktESVInXSwgJ29lLXRlc3RpbWFnZS1yZXBvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCwgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY3LDcgKzY3LDggQEAKICAgICAgICAgZGVwbG95X3VybCA9ICdodHRwOi8vJXM6JXMvJyAlKHNlbGYudGFyZ2V0LnNlcnZlcl9pcCwgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQogICAgICAgICBjbWRsaW5lcmVwb29wdHMgPSBbIi0tcmVwb2Zyb21wYXRoPW9lLXRlc3RpbWFnZS1yZXBvLSVzLCVzJXMiICUoYXJjaCwgZGVwbG95X3VybCwgYXJjaCkgZm9yIGFyY2ggaW4gcGtnYXJjaHNdCiAKLSAgICAgICAgc2VsZi5kbmYoIiAiLmpvaW4oY21kbGluZXJlcG9vcHRzKSArICIgLS1ub2dwZ2NoZWNrICIgKyBjb21tYW5kKQorICAgICAgICBvdXRwdXQgPSBzZWxmLmRuZigiICIuam9pbihjbWRsaW5lcmVwb29wdHMpICsgIiAtLW5vZ3BnY2hlY2sgIiArIGNvbW1hbmQpCisgICAgICAgIHJldHVybiBvdXRwdXQKIAogICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZkJhc2ljVGVzdC50ZXN0X2RuZl9oZWxwJ10pCiAgICAgQE9FVGVzdElEKDE3NDQpCkBAIC04OCw2ICs4OSw5IEBACiAgICAgQE9FVGVzdERlcGVuZHMoWydkbmYuRG5mUmVwb1Rlc3QudGVzdF9kbmZfbWFrZWNhY2hlJ10pCiAgICAgQE9FVGVzdElEKDE3NDApCiAgICAgZGVmIHRlc3RfZG5mX2luc3RhbGwoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHNlbGYuZG5mX3dpdGhfcmVwbygnbGlzdCBydW4tcG9zdGluc3RzLWRldicpCisgICAgICAgIGlmICdJbnN0YWxsZWQgUGFja2FnZXMnIGluIG91dHB1dDoKKyAgICAgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygncmVtb3ZlIC15IHJ1bi1wb3N0aW5zdHMtZGV2JykKICAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdpbnN0YWxsIC15IHJ1bi1wb3N0aW5zdHMtZGV2JykKIAogICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZlJlcG9UZXN0LnRlc3RfZG5mX2luc3RhbGwnXSkKQEAgLTEyMCw0ICsxMjQsNDQgQEAKICAgICBkZWYgdGVzdF9kbmZfcmVpbnN0YWxsKHNlbGYpOgogICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ3JlaW5zdGFsbCAteSBydW4tcG9zdGluc3RzLWRldicpCiAKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9tYWtlY2FjaGUnXSkKKyAgICBAT0VUZXN0SUQoMTc3MSkKKyAgICBkZWYgdGVzdF9kbmZfaW5zdGFsbHJvb3Qoc2VsZik6CisgICAgICAgIHJvb3RwYXRoID0gJy9ob21lL3Jvb3QvY2hyb290L3Rlc3QnCisgICAgICAgICNDb3B5IG5lY2Vzc2FyeSBmaWxlcyB0byBhdm9pZCBlcnJvcnMgd2l0aCBub3QgeWV0IGluc3RhbGxlZCB0b29scyBvbgorICAgICAgICAjaW5zdGFsbHJvb3QgZGlyZWN0b3J5LgorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL2V0YycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9iaW4gJXMvc2JpbiAlcy91c3IvYmluICVzL3Vzci9zYmluJyAlIChyb290cGF0aCwgcm9vdHBhdGgsIHJvb3RwYXRoLCByb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvZGV2JyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICAjSGFuZGxlIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzIGxpYiBkaXJzCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvbGliJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL2xpYngzMicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9saWI2NCcgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvbGliL2xpYnRpbmZvLnNvLjUgJXMvbGliJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC9saWJ4MzIvbGlidGluZm8uc28uNSAlcy9saWJ4MzInICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgL2xpYjY0L2xpYnRpbmZvLnNvLjUgJXMvbGliNjQnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgLXIgL2V0Yy9ycG0gJXMvZXRjJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC1yIC9ldGMvZG5mICVzL2V0YycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvYmluL3NoICVzL2JpbicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdtb3VudCAtbyBiaW5kIC9kZXYgJXMvZGV2LycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdpbnN0YWxsIC0taW5zdGFsbHJvb3Q9JXMgLXYgLXkgLS1ycG12ZXJib3NpdHk9ZGVidWcgYnVzeWJveCBydW4tcG9zdGluc3RzJyAlIHJvb3RwYXRoKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigndGVzdCAtZSAlcy92YXIvY2FjaGUvZG5mJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cywgb3V0cHV0KQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigndGVzdCAtZSAlcy9iaW4vYnVzeWJveCcgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG91dHB1dCkKIAorICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZlJlcG9UZXN0LnRlc3RfZG5mX21ha2VjYWNoZSddKQorICAgIEBPRVRlc3RJRCgxNzcyKQorICAgIGRlZiB0ZXN0X2RuZl9leGNsdWRlKHNlbGYpOgorICAgICAgICBleGNsdWRlcGtnID0gJ2N1cmwtZGV2JworICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ2luc3RhbGwgLXkgY3VybConKQorICAgICAgICBzZWxmLmRuZignbGlzdCAlcycgJSBleGNsdWRlcGtnLCAwKQorICAgICAgICAjQXZvaWQgcmVtb3ZlIGRlcGVuZGVuY2llcyB0byBza2lwIHNvbWUgZXJyb3JzIG9uIGRpZmZlcmVudCBhcmNocyBhbmQgaW1hZ2VzCisgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygncmVtb3ZlIC0tc2V0b3B0PWNsZWFuX3JlcXVpcmVtZW50c19vbl9yZW1vdmU9MCAteSBjdXJsKicpCisgICAgICAgICNjaGVjayBjdXJsLWRldiBpcyBub3QgaW5zdGFsbGVkIGFkdGVyIHJlbW92aW5nIGFsbCBjdXJsIG9jY3VycmVuY2VzCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdkbmYgbGlzdCAtLWluc3RhbGxlZCB8IGdyZXAgJXMnJSBleGNsdWRlcGtnLCAxNTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgIiVzIHdhcyBub3QgcmVtb3ZlZCwgIGlzIGxpc3RlZCBhcyBpbnN0YWxsZWQiJWV4Y2x1ZGVwa2cpCisgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygnaW5zdGFsbCAteSAtLWV4Y2x1ZGU9JXMgLS1leGNsdWRlPWN1cmwtc3RhdGljZGV2IGN1cmwqJyAlIGV4Y2x1ZGVwa2cpCisgICAgICAgICNjaGVjayBjdXJsLWRldiBpcyBub3QgaW5zdGFsbGVkIGFmdGVyIGJlaW5nIGV4Y2x1ZGVkCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdkbmYgbGlzdCAtLWluc3RhbGxlZCB8IGdyZXAgJXMnJSBleGNsdWRlcGtnICwgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICIlcyB3YXMgbm90IGV4Y2x1ZGVkLCBpcyBsaXN0ZWQgYXMgaW5zdGFsbGVkIiVleGNsdWRlcGtnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMva3NhbXBsZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tzYW1wbGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0Y2M5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2tzYW1wbGUucHkKQEAgLTAsMCArMSwyMjEgQEAKK2ltcG9ydCBvcworaW1wb3J0IHRpbWUKKworZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3RGZWF0dXJlCisKKyMgbmVlZCBzb21lIGtlcm5lbCBmcmFnbWVudHMKKyMgZWNobyAiS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCArPSBcIiBmZWF0dXJlc1wva2VybmVsXC1zYW1wbGVcL2tlcm5lbFwtc2FtcGxlLnNjY1wiIiA+PiBsb2NhbC5jb25mCitjbGFzcyBLU2FtcGxlKE9FUnVudGltZVRlc3RDYXNlKToKKyAgICBkZWYgY21kX2FuZF9jaGVjayhzZWxmLCBjbWQ9JycsIG1hdGNoX3N0cmluZz0nJyk6CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKKyAgICAgICAgaWYgbm90IG1hdGNoX3N0cmluZzoKKyAgICAgICAgICAgICMgc2VuZCBjbWQKKyAgICAgICAgICAgIG1zZyA9ICclcyBmYWlsZWQsICVzJyAlIChjbWQsIG91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgICAgIHJlc3VsdCA9ICgiJXMiICUgbWF0Y2hfc3RyaW5nKSBpbiBvdXRwdXQKKyAgICAgICAgICAgIG1zZyA9IG91dHB1dAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3VsdCwgbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIGNtZCkKKworICAgIGRlZiBjaGVja19jb25maWcoc2VsZiwgY29uZmlnX29wdD0nJyk6CisgICAgICAgIGNtZCA9ICJ6Y2F0IC9wcm9jL2NvbmZpZy5neiB8IGdyZXAgJXMiICUgY29uZmlnX29wdAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgIHJlc3VsdCA9ICgiJXM9eSIgJSBjb25maWdfb3B0KSBpbiBvdXRwdXQKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIiVzIGlzIG5vdCBzZXQiICUgY29uZmlnX29wdCkKKworICAgIGRlZiBjaGVja19tb2R1bGVfZXhpc3Qoc2VsZiwgcGF0aD0nJywgbW9kdWxlX25hbWU9JycpOgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigidW5hbWUgLXIiKQorICAgICAgICBjbWQgPSAibHMgIiArICIvbGliL21vZHVsZXMvIiArIG91dHB1dCArICIva2VybmVsL3NhbXBsZXMvIiArIHBhdGggKyBtb2R1bGVfbmFtZQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCisgICAgICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgZXJyb3JfaW5mbyA9IG1vZHVsZV9uYW1lICsgIiBkb2Vzbid0IGV4aXN0IgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdChlcnJvcl9pbmZvKQorCisgICAgZGVmIGtmaWZvX2Z1bmMoc2VsZiwgbmFtZT0nJyk6CisgICAgICAgIG1vZHVsZV9wcmVuYW1lID0gbmFtZSArICItZXhhbXBsZSIKKyAgICAgICAgbW9kdWxlX25hbWUgPSBuYW1lICsgIi1leGFtcGxlLmtvIgorICAgICAgICBzeXNtYm9sX25hbWUgPSBuYW1lICsgIl9leGFtcGxlIgorCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoImtmaWZvLyIsIG1vZHVsZV9uYW1lKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgJXMiICUgbW9kdWxlX3ByZW5hbWUpCisgICAgICAgICMgbHNtb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJsc21vZCB8IGdyZXAgJXMgfCBjdXQgLWRcJyBcJyAtZjEiICUgc3lzbWJvbF9uYW1lLCBzeXNtYm9sX25hbWUpCisgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZG1lc2cgfCBncmVwIFwidGVzdCBwYXNzZWRcIiAiLCAidGVzdCBwYXNzZWQiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgJXMiICUgIG1vZHVsZV9wcmVuYW1lKQorCisgICAgZGVmIGtwcm9iZV9mdW5jKHNlbGYsIG5hbWU9JycpOgorICAgICAgICAjIGNoZWNrIGNvbmZpZworICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZygiQ09ORklHX0tQUk9CRVMiKQorCisgICAgICAgIG1vZHVsZV9wcmVuYW1lID0gbmFtZSArICJfZXhhbXBsZSIKKyAgICAgICAgbW9kdWxlX25hbWUgPSBuYW1lICsgIl9leGFtcGxlLmtvIgorICAgICAgICBzeXNtYm9sX25hbWUgPSBtb2R1bGVfcHJlbmFtZQorCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoImtwcm9iZXMvIiwgbW9kdWxlX25hbWUpCisgICAgICAgICMgbW9kcHJvYmUKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJtb2Rwcm9iZSAlcyIgJSBtb2R1bGVfcHJlbmFtZSkKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCAlcyB8IGN1dCAtZFwnIFwnIC1mMSIgJSBzeXNtYm9sX25hbWUsIHN5c21ib2xfbmFtZSkKKyAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJkbWVzZyB8IGdyZXAgUGxhbnRlZCB8IGhlYWQgLW4xMCIsICJQbGFudGVkIikKKyAgICAgICAgIyBybW1vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soInJtbW9kICVzIiAlIG1vZHVsZV9wcmVuYW1lKQorCisgICAgZGVmIGtvYmplY3RfZnVuYyhzZWxmLCBuYW1lPScnKToKKyAgICAgICAgbW9kdWxlX3ByZW5hbWUgPSBuYW1lICsgIl9leGFtcGxlIgorICAgICAgICBtb2R1bGVfbmFtZSA9IG5hbWUgKyAiLWV4YW1wbGUua28iCisgICAgICAgIHN5c21ib2xfbmFtZSA9IG1vZHVsZV9wcmVuYW1lCisKKyAgICAgICAgIyBtYWtlIHN1cmUgaWYgbW9kdWxlIGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX21vZHVsZV9leGlzdCgia29iamVjdC8iLCBtb2R1bGVfbmFtZSkKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlICVzIiAlIG1vZHVsZV9wcmVuYW1lKQorICAgICAgICAjIGxzbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHNtb2QgfCBncmVwICVzIHwgY3V0IC1kXCcgXCcgLWYxIiAlIHN5c21ib2xfbmFtZSwgc3lzbWJvbF9uYW1lKQorICAgICAgICAjIGNoZWNrIHJlc3VsdAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzIC9zeXMva2VybmVsLyVzLyIgJSBzeXNtYm9sX25hbWUsICJiYXIiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgJXMiICUgbW9kdWxlX3ByZW5hbWUpCisKK2NsYXNzIEtTYW1wbGVUZXN0KEtTYW1wbGUpOgorICAgICMga2ZpZm8KKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCisgICAgZGVmIHRlc3Rfa2ZpZm9fdGVzdChzZWxmKToKKyAgICAgICAgaW5kZXggPSBbImRtYSIsICJieXRlc3RyZWFtIiwgImludHR5cGUiLCAicmVjb3JkIl0KKyAgICAgICAgZm9yIGkgaW4gaW5kZXg6CisgICAgICAgICAgICBzZWxmLmtmaWZvX2Z1bmMoaSkKKworICAgICMga3Byb2JlCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X2twcm9iZV90ZXN0KHNlbGYpOgorICAgICAgICBpbmRleCA9IFsia3Byb2JlIiwgImtyZXRwcm9iZSJdCisgICAgICAgIGZvciBpIGluIGluZGV4OgorICAgICAgICAgICAgc2VsZi5rcHJvYmVfZnVuYyhpKQorCisgICAgIyBrb2JqZWN0CisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X2tvYmplY3RfdGVzdChzZWxmKToKKyAgICAgICAgaW5kZXggPSBbImtvYmplY3QiLCAia3NldCJdCisgICAgICAgIGZvciBpIGluIGluZGV4OgorICAgICAgICAgICAgc2VsZi5rb2JqZWN0X2Z1bmMoaSkKKworICAgICN0cmFjZQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF90cmFjZV9ldmVudHMoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29uZmlnCisgICAgICAgIHNlbGYuY2hlY2tfY29uZmlnKCJDT05GSUdfVFJBQ0lOR19TVVBQT1JUIikKKyAgICAgICAgIyBtYWtlIHN1cmUgaWYgbW9kdWxlIGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX21vZHVsZV9leGlzdCgidHJhY2VfZXZlbnRzLyIsICJ0cmFjZS1ldmVudHMtc2FtcGxlLmtvIikKKyAgICAgICAgIyBtb2Rwcm9iZQorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soIm1vZHByb2JlIHRyYWNlLWV2ZW50cy1zYW1wbGUiKQorICAgICAgICAjIGxzbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHNtb2QgfCBncmVwIHRyYWNlX2V2ZW50c19zYW1wbGUgfCBjdXQgLWRcJyBcJyAtZjEiLCAidHJhY2VfZXZlbnRzX3NhbXBsZSIpCisgICAgICAgICMgY2hlY2sgZGlyCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHMgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvIHwgZ3JlcCBzYW1wbGUtdHJhY2UiLCAic2FtcGxlLXRyYWNlIikKKyAgICAgICAgIyBlbmFibGUgdHJhY2UKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJlY2hvIDEgPiAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL2V2ZW50cy9zYW1wbGUtdHJhY2UvZW5hYmxlIikKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc2FtcGxlLXRyYWNlL2VuYWJsZSIpCisgICAgICAgICMgY2hlY2sgcmVzdWx0CisgICAgICAgIHN0YXR1cyA9IDEKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2NhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90cmFjaW5nL3RyYWNlIHwgZ3JlcCBoZWxsbyB8IGhlYWQgLW4xIHwgY3V0IC1kXCc6XCcgLWYyJykKKyAgICAgICAgICAgIGlmICIgZm9vX2JhciIgaW4gb3V0cHV0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBjb3VudCA9IGNvdW50ICsgMQorICAgICAgICAgICAgaWYgY291bnQgPiA1OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSwgIlRpbWUgb3V0IHdoZW4gY2hlY2sgcmVzdWx0IikKKyAgICAgICAgIyBkaXNhYmxlIHRyYWNlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygiZWNobyAwID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy9ldmVudHMvc2FtcGxlLXRyYWNlL2VuYWJsZSIpCisgICAgICAgICMgY2xlYW4gdXAgdHJhY2UKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJlY2hvID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZSIpCisgICAgICAgICMgcm1tb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJybW1vZCB0cmFjZS1ldmVudHMtc2FtcGxlIikKKworICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF90cmFjZV9wcmludGsoc2VsZik6CisgICAgICAgICMgY2hlY2sgY29uZmlnCisgICAgICAgIHNlbGYuY2hlY2tfY29uZmlnKCJDT05GSUdfVFJBQ0lOR19TVVBQT1JUIikKKyAgICAgICAgIyBtYWtlIHN1cmUgaWYgbW9kdWxlIGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX21vZHVsZV9leGlzdCgidHJhY2VfcHJpbnRrLyIsICJ0cmFjZS1wcmludGsua28iKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgdHJhY2UtcHJpbnRrIikKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCB0cmFjZV9wcmludGsgfCBjdXQgLWRcJyBcJyAtZjEiLCAidHJhY2VfcHJpbnRrIikKKyAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJjYXQgL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZSB8IGdyZXAgdHJhY2VfcHJpbnRrX2lycV93b3JrIHwgaGVhZCAtbjEgfCBjdXQgLWRcJzpcJyAtZjIiLCAiIHRyYWNlX3ByaW50a19pcnFfd29yayIpCisgICAgICAgICMgY2xlYW4gdXAgdHJhY2UKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJlY2hvID4gL3N5cy9rZXJuZWwvZGVidWcvdHJhY2luZy90cmFjZSIpCisgICAgICAgICMgcm1tb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJybW1vZCB0cmFjZS1wcmludGsiKQorCisgICAgIyBodyBicmVha3BvaW50CisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X2h3X2JyZWFrcG9pbnRfZXhhbXBsZShzZWxmKToKKyAgICAgICAgIyBjaGVjayBhcmNoCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCJ1bmFtZSAtbSIpCisgICAgICAgIHJlc3VsdCA9ICgieDg2IiBpbiBvdXRwdXQpIG9yICgiYWFyY2g2NCIgaW4gb3V0cHV0KQorICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidGhlIGFyY2ggZG9lc24ndCBzdXBwb3J0IGh3IGJyZWFrcG9pbnQiICUgb3V0cHV0KQorICAgICAgICAjIGNoZWNrIGNvbmZpZworICAgICAgICBzZWxmLmNoZWNrX2NvbmZpZygiQ09ORklHX0tBTExTWU1TX0FMTCIpCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoImh3X2JyZWFrcG9pbnQvIiwgImRhdGFfYnJlYWtwb2ludC5rbyIpCisgICAgICAgICMgbW9kcHJvYmUKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJtb2Rwcm9iZSBkYXRhX2JyZWFrcG9pbnQiKQorICAgICAgICAjIGxzbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibHNtb2QgfCBncmVwIGRhdGFfYnJlYWtwb2ludCB8IGN1dCAtZFwnIFwnIC1mMSIsICJkYXRhX2JyZWFrcG9pbnQiKQorICAgICAgICAjIGNoZWNrIHJlc3VsdAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImNhdCAvdmFyL2xvZy9tZXNzYWdlcyB8IGdyZXAgc2FtcGxlX2hicF9oYW5kbGVyIiwgInNhbXBsZV9oYnBfaGFuZGxlciIpCisgICAgICAgICMgcm1tb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJybW1vZCBkYXRhX2JyZWFrcG9pbnQiKQorCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X2NvbmZpZ2ZzX3NhbXBsZShzZWxmKToKKyAgICAgICAgIyBjaGVjayBjb25maWcKKyAgICAgICAgc3RhdHVzLCByZXQgPSBzZWxmLnRhcmdldC5ydW4oJ3pjYXQgL3Byb2MvY29uZmlnLmd6IHwgZ3JlcCBDT05GSUdfQ09ORklHRlNfRlMnKQorICAgICAgICBpZiBub3QgWyJDT05GSUdfQ09ORklHRlNfRlM9bSIgaW4gcmV0IG9yICJDT05GSUdfQ09ORklHRlNfRlM9eSIgaW4gcmV0XToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNPTkZJRyBlcnJvciIpCisgICAgICAgICMgbWFrZSBzdXJlIGlmIG1vZHVsZSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja19tb2R1bGVfZXhpc3QoImNvbmZpZ2ZzLyIsICJjb25maWdmc19zYW1wbGUua28iKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgY29uZmlnZnNfc2FtcGxlIikKKyAgICAgICAgIyBsc21vZAorICAgICAgICBzZWxmLmNtZF9hbmRfY2hlY2soImxzbW9kIHwgZ3JlcCBjb25maWdmc19zYW1wbGUgfCBjdXQgLWRcJyBcJyAtZjEgfCBoZWFkIC1uMSIsICJjb25maWdmc19zYW1wbGUiKQorCisgICAgICAgIHN0YXR1cyA9IDEKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgc3RhdHVzLCByZXQgPSBzZWxmLnRhcmdldC5ydW4oJ2NhdCAvc3lzL2tlcm5lbC9jb25maWcvMDEtY2hpbGRsZXNzL2Rlc2NyaXB0aW9uJykKKyAgICAgICAgICAgIGNvdW50ID0gY291bnQgKyAxCisgICAgICAgICAgICBpZiBjb3VudCA+IDIwMDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUaW1lIG91dCBmb3IgY2hlY2sgZGlyIikKKworICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgY29uZmlnZnNfc2FtcGxlIikKKworICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9jbl90ZXN0KHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSBpZiBtb2R1bGUgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlX2V4aXN0KCJjb25uZWN0b3IvIiwgImNuX3Rlc3Qua28iKQorICAgICAgICAjIG1vZHByb2JlCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygibW9kcHJvYmUgY25fdGVzdCIpCisgICAgICAgICMgbHNtb2QKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJsc21vZCB8IGdyZXAgY25fdGVzdCB8IGN1dCAtZFwnIFwnIC1mMSIsICJjbl90ZXN0IikKKyAgICAgICAgIyBjaGVjayByZXN1bHQKKyAgICAgICAgc2VsZi5jbWRfYW5kX2NoZWNrKCJjYXQgL3Byb2MvbmV0L2Nvbm5lY3RvciB8IGdyZXAgY25fdGVzdCB8IGhlYWQgLW4xIHwgY3V0IC1kXCcgXCcgLWYxIiwgImNuX3Rlc3QiKQorICAgICAgICAjIHJtbW9kCisgICAgICAgIHNlbGYuY21kX2FuZF9jaGVjaygicm1tb2QgY25fdGVzdCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sZGQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sZGQucHkKaW5kZXggYzZkOTJmZC4uNWJkZTE4NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbGRkLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xkZC5weQpAQCAtMiwyNCArMiwyMyBAQAogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKIAogY2xhc3MgTGRkVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CiAKICAgICBAT0VUZXN0SUQoOTYyKQotICAgIEBza2lwSWZOb3RGZWF0dXJlKCd0b29scy1zZGsnLAotICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHRvb2xzLXNkayB0byBiZSBpbiBJTUFHRV9GRUFUVVJFUycpCisgICAgQE9FSGFzUGFja2FnZShbImxkZCJdKQogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKLSAgICBkZWYgdGVzdF9sZGRfZXhpc3RzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xkZChzZWxmKToKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIGxkZCcpCiAgICAgICAgIG1zZyA9ICdsZGQgZG9lcyBub3QgZXhpc3QgaW4gUEFUSDogd2hpY2ggbGRkOiAlcycgJSBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCiAKLSAgICBAT0VUZXN0SUQoMjM5KQotICAgIEBPRVRlc3REZXBlbmRzKFsnbGRkLkxkZFRlc3QudGVzdF9sZGRfZXhpc3RzJ10pCi0gICAgZGVmIHRlc3RfbGRkX3J0bGRsaXN0X2NoZWNrKHNlbGYpOgogICAgICAgICBjbWQgPSAoJ2ZvciBpIGluICQod2hpY2ggbGRkIHwgeGFyZ3MgY2F0IHwgZ3JlcCAiXlJUTERMSVNUInwgJwogICAgICAgICAgICAgICAnY3V0IC1kXCc9XCcgLWYyfHRyIC1kIFwnIlwnKTsgJwogICAgICAgICAgICAgICAnZG8gdGVzdCAtZiAkaSAmJiBlY2hvICRpICYmIGJyZWFrOyBkb25lJykKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQotICAgICAgICBtc2cgPSAibGRkIHBhdGggbm90IGNvcnJlY3Qgb3IgUlRMRExJU1QgZmlsZXMgZG9uJ3QgZXhpc3QuIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz0ibGRkIHBhdGggbm90IGNvcnJlY3Qgb3IgUlRMRExJU1QgZmlsZXMgZG9uJ3QgZXhpc3QuIikKKworICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigibGRkIC9iaW4vdHJ1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9ImxkZCBmYWlsZWQgdG8gZXhlY3V0ZTogJXMiICUgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CmluZGV4IDk5MmZlZjIuLmRiNmU2OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKQEAgLTIxLDkgKzIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKIAogICAgICAgICBjbWQgPSAoJ3NlZCAtaSAicyN3dG1wIHsjd3RtcCB7XFxuICAgIG9sZGRpciAkSE9NRS9sb2dyb3RhdGVfZGlyIyInCi0gICAgICAgICAgICAgICAnIC9ldGMvbG9ncm90YXRlLmNvbmYnKQorICAgICAgICAgICAgICAgJyAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAnKQogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCi0gICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIGxvZ3JvdGF0ZS5jb25mIGZpbGUuIFN0YXR1cyBhbmQgb3V0cHV0OiAnCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIGxvZ3JvdGF0ZS5kL3d0bXAgZmlsZS4gU3RhdHVzIGFuZCBvdXRwdXQ6ICcKICAgICAgICAgICAgICAgICcgJXMgYW5kICVzJyAlIChzdGF0dXMsIG91dHB1dCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weQppbmRleCAwMDViNjk3Li5hOTJhMWYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vZV9zeXNsb2cucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb2Vfc3lzbG9nLnB5CkBAIC04LDEyICs4LDE0IEBACiAKICAgICBAT0VUZXN0SUQoMjAxKQogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKLSAgICBAT0VIYXNQYWNrYWdlKFsiYnVzeWJveC1zeXNsb2ciLCAic3lza2xvZ2QiXSkKKyAgICBAT0VIYXNQYWNrYWdlKFsiYnVzeWJveC1zeXNsb2ciLCAic3lza2xvZ2QiLCAicnN5c2xvZyIsICJzeXNsb2ctbmciXSkKICAgICBkZWYgdGVzdF9zeXNsb2dfcnVubmluZyhzZWxmKToKLSAgICAgICAgY21kID0gJyVzICB8IGdyZXAgLWkgW3NdeXNsb2dkJyAlIHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10KLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQotICAgICAgICBtc2cgPSAiTm8gc3lzbG9nZCBwcm9jZXNzOyBwcyBvdXRwdXQ6ICVzIiAlIG91dHB1dAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddKQorICAgICAgICBtc2cgPSAiRmFpbGVkIHRvIGV4ZWN1dGUgJXMiICUgc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKyAgICAgICAgbXNnID0gIk5vIHN5c2xvZyBkYWVtb24gcHJvY2VzczsgJXMgb3V0cHV0OlxuJXMiICUgKHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10sIG91dHB1dCkKKyAgICAgICAgaGFzZGFlbW9uID0gInN5c2xvZ2QiIGluIG91dHB1dCBvciAic3lzbG9nLW5nIiBpbiBvdXRwdXQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2RhZW1vbiwgbXNnPW1zZykKIAogY2xhc3MgU3lzbG9nVGVzdENvbmZpZyhPRVJ1bnRpbWVUZXN0Q2FzZSk6CiAKQEAgLTQ1LDcgKzQ3LDcgQEAKIAogICAgIEBPRVRlc3RJRCgyMDIpCiAgICAgQE9FVGVzdERlcGVuZHMoWydvZV9zeXNsb2cuU3lzbG9nVGVzdENvbmZpZy50ZXN0X3N5c2xvZ19sb2dnZXInXSkKLSAgICBAT0VIYXNQYWNrYWdlKFsiIXN5c2tsb2dkIiwgImJ1c3lib3giXSkKKyAgICBAT0VIYXNQYWNrYWdlKFsiYnVzeWJveC1zeXNsb2ciXSkKICAgICBAc2tpcElmRGF0YVZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicsICdzeXN0ZW1kJywKICAgICAgICAgICAgICAgICAgICAnTm90IGFwcHJvcGlhdGUgZm9yIHN5c3RlbWQgaW1hZ2UnKQogICAgIGRlZiB0ZXN0X3N5c2xvZ19zdGFydHVwX2NvbmZpZyhzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CmluZGV4IDY3MWVlMDYuLjI5ZTk5MDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQpAQCAtMTcsOCArMTcsMTEgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIHNlcnZpY2VfcmVwbyA9IG9zLnBhdGguam9pbihjbHMudGMudGRbJ0RFUExPWV9ESVJfSVBLJ10sICdhbGwnKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShzZXJ2aWNlX3JlcG8sIGNscy50Yy50YXJnZXQuc2VydmVyX2lwKQorICAgICAgICBhbGxhcmNoZmVlZCA9ICdhbGwnCisgICAgICAgIGlmIGNscy50Yy50ZFsiTVVMVElMSUJfVkFSSUFOVFMiXToKKyAgICAgICAgICAgIGFsbGFyY2hmZWVkID0gY2xzLnRjLnRkWyJUVU5FX1BLR0FSQ0giXQorICAgICAgICBzZXJ2aWNlX3JlcG8gPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSX0lQSyddLCBhbGxhcmNoZmVlZCkKKyAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLCBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCwgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCiAgICAgICAgIGNscy5yZXBvX3NlcnZlci5zdGFydCgpCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQppbmRleCAxZjM2YzYxLi5mNmU5ODIwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CkBAIC00OSw2ICs0OSwxMCBAQAogICAgICJlcnJvcjogY291bGRuXCd0IG1vdW50IGJlY2F1c2Ugb2YgdW5zdXBwb3J0ZWQgb3B0aW9uYWwgZmVhdHVyZXMiLAogICAgICJHUFQ6IFVzZSBHTlUgUGFydGVkIHRvIGNvcnJlY3QgR1BUIGVycm9ycyIsCiAgICAgIkNhbm5vdCBzZXQgeGF0dHIgdXNlci5MaWJyZXBvLkRvd25sb2FkSW5Qcm9ncmVzcyIsCisgICAgIkZhaWxlZCB0byByZWFkIC92YXIvbGliL25mcy9zdGF0ZC9zdGF0ZTogU3VjY2VzcyIsCisgICAgImVycm9yIHJldHJ5IHRpbWUtb3V0ID0iLAorICAgICJsb2dpbmQ6IGNhbm5vdCBzZXR1cCBzeXN0ZW1kLWxvZ2luZCBoZWxwZXIgKC02MSksIHVzaW5nIGxlZ2FjeSBmYWxsYmFjayIsCisgICAgIkVycm9yIGNoYW5naW5nIG5ldCBpbnRlcmZhY2UgbmFtZSAnZXRoMCcgdG8gIgogICAgIF0KIAogdmlkZW9fcmVsYXRlZCA9IFsKQEAgLTEyMCwxNSArMTI0LDYgQEAKICAgICAgICAgJ2RtaTogRmlybXdhcmUgcmVnaXN0cmF0aW9uIGZhaWxlZC4nLAogICAgICAgICAnaXJxOiB0eXBlIG1pc21hdGNoLCBmYWlsZWQgdG8gbWFwIGh3aXJxLTI3IGZvciAvaW50YycsCiAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAotICAgICdlbWVubG93JyA6IFsKLSAgICAgICAgJ1tGaXJtd2FyZSBCdWddOiBBQ1BJOiBObyBfQlFDIG1ldGhvZCwgY2Fubm90IGRldGVybWluZSBpbml0aWFsIGJyaWdodG5lc3MnLAotICAgICAgICAnKEVFKSBGYWlsZWQgdG8gbG9hZCBtb2R1bGUgInBzYiInLAotICAgICAgICAnKEVFKSBGYWlsZWQgdG8gbG9hZCBtb2R1bGUgcHNiJywKLSAgICAgICAgJyhFRSkgRmFpbGVkIHRvIGxvYWQgbW9kdWxlICJwc2JkcnYiJywKLSAgICAgICAgJyhFRSkgRmFpbGVkIHRvIGxvYWQgbW9kdWxlIHBzYmRydicsCi0gICAgICAgICcoRUUpIG9wZW4gL2Rldi9mYjA6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknLAotICAgICAgICAnKEVFKSBBSUdMWDogcmV2ZXJ0aW5nIHRvIHNvZnR3YXJlIHJlbmRlcmluZycsCi0gICAgICAgIF0gKyB4ODZfY29tbW9uLAogICAgICdpbnRlbC1jb3JlMi0zMicgOiBbCiAgICAgICAgICdBQ1BJOiBObyBfQlFDIG1ldGhvZCwgY2Fubm90IGRldGVybWluZSBpbml0aWFsIGJyaWdodG5lc3MnLAogICAgICAgICAnW0Zpcm13YXJlIEJ1Z106IEFDUEk6IE5vIF9CUUMgbWV0aG9kLCBjYW5ub3QgZGV0ZXJtaW5lIGluaXRpYWwgYnJpZ2h0bmVzcycsCkBAIC0xNTYsNyArMTUxLDYgQEAKICAgICAgICAgJ0JsdWV0b290aDogaGNpMDogRmFpbGVkIHRvIHNlbmQgZmlybXdhcmUgZGF0YSAoLTM4KScsCiAgICAgICAgICdhdGtiZCBzZXJpbzA6IEZhaWxlZCB0byBlbmFibGUga2V5Ym9hcmQgb24gaXNhMDA2MC9zZXJpbzAnLAogICAgICAgICBdICsgeDg2X2NvbW1vbiwKLSAgICAnY3Jvd25iYXknIDogeDg2X2NvbW1vbiwKICAgICAnZ2VuZXJpY3g4NicgOiB4ODZfY29tbW9uLAogICAgICdnZW5lcmljeDg2LTY0JyA6IFsKICAgICAgICAgJ0RpcmVjdCBmaXJtd2FyZSBsb2FkIGZvciBpOTE1JywKQEAgLTE2OSwxMCArMTYzLDYgQEAKICAgICAnZWRnZXJvdXRlcicgOiBbCiAgICAgICAgICdGYXRhbCBzZXJ2ZXIgZXJyb3I6JywKICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCi0gICAgJ2phc3BlcmZvcmVzdCcgOiBbCi0gICAgICAgICdBY3RpdmF0ZWQgc2VydmljZSBcJ29yZy5ibHVlelwnIGZhaWxlZDonLAotICAgICAgICAnVW5hYmxlIHRvIGZpbmQgTkZDIG5ldGxpbmsgZmFtaWx5JywKLSAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiB9CiAKIGxvZ19sb2NhdGlvbnMgPSBbIi92YXIvbG9nLyIsIi92YXIvbG9nL2RtZXNnIiwgIi90bXAvZG1lc2dfb3V0cHV0LmxvZyJdCkBAIC0zMjMsNyArMzEzLDcgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByZXN1bHRzW2xvZy5yZXBsYWNlKCd0YXJnZXRfbG9ncy8nLCcnKV0gPSB7fQorICAgICAgICAgICAgICAgIHJlc3VsdHNbbG9nXSA9IHt9CiAgICAgICAgICAgICAgICAgcmV6ID0gcmVzdWx0LnNwbGl0bGluZXMoKQogCiAgICAgICAgICAgICAgICAgZm9yIHhyZXogaW4gcmV6OgpAQCAtMzMzLDcgKzMyMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBncmVwX291dHB1dCA9IGNoZWNrX291dHB1dChjbWQpLmRlY29kZSgndXRmLTgnKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbbG9nLnJlcGxhY2UoJ3RhcmdldF9sb2dzLycsJycpXVt4cmV6XT1ncmVwX291dHB1dAorICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2xvZ11beHJlel09Z3JlcF9vdXRwdXQKIAogICAgICAgICByZXR1cm4gcmVzdWx0cwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wZXJsLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGVybC5weQppbmRleCBkMGI3ZThlLi5hZmVlYjE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wZXJsLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BlcmwucHkKQEAgLTEsMzcgKzEsMTMgQEAKIGltcG9ydCBvcwogCiBmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAogZnJvbSBvZXFhLnJ1bnRpbWUuZGVjb3JhdG9yLnBhY2thZ2UgaW1wb3J0IE9FSGFzUGFja2FnZQogCiBjbGFzcyBQZXJsVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmZpbGVzX2RpciwgJ3Rlc3QucGwnKQotICAgICAgICBkc3QgPSAnL3RtcC90ZXN0LnBsJwotICAgICAgICBjbHMudGMudGFyZ2V0LmNvcHlUbyhzcmMsIGRzdCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRzdCA9ICcvdG1wL3Rlc3QucGwnCi0gICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAlcycgJSBkc3QpCi0KLSAgICBAT0VUZXN0SUQoMTE0MSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCi0gICAgQE9FSGFzUGFja2FnZShbJ3BlcmwnXSkKLSAgICBkZWYgdGVzdF9wZXJsX2V4aXN0cyhzZWxmKToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIHBlcmwnKQotICAgICAgICBtc2cgPSAnUGVybCBiaW5hcnkgbm90IGluIFBBVEggb3Igbm90IG9uIHRhcmdldC4nCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQotCiAgICAgQE9FVGVzdElEKDIwOCkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3BlcmwuUGVybFRlc3QudGVzdF9wZXJsX2V4aXN0cyddKQorICAgIEBPRUhhc1BhY2thZ2UoWydwZXJsJ10pCiAgICAgZGVmIHRlc3RfcGVybF93b3JrcyhzZWxmKToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3BlcmwgL3RtcC90ZXN0LnBsJykKLSAgICAgICAgbXNnID0gJ0V4aXQgc3RhdHVzIHdhcyBub3QgMC4gT3V0cHV0OiAlcycgJSBvdXRwdXQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCi0KLSAgICAgICAgbXNnID0gJ0luY29ycmVjdCBvdXRwdXQ6ICVzJyAlIG91dHB1dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgInRoZSB2YWx1ZSBvZiBhIGlzIDAuMDEiLCBtc2c9bXNnKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigicGVybCAtZSAnJF89XCJVcnl5YiwgamJleXFcIjsgdHIvYS16QS1aL24temEtbU4tWkEtTS87cHJpbnQnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiSGVsbG8sIHdvcmxkIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B5dGhvbi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B5dGhvbi5weQppbmRleCBiZjNlMTc5Li40NDE5YTlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9weXRob24ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHl0aG9uLnB5CkBAIC0xLDQzICsxLDIxIEBACi1pbXBvcnQgb3MKLQogZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKLWZyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKIAogY2xhc3MgUHl0aG9uVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6Ci0KICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmZpbGVzX2RpciwgJ3Rlc3QucHknKQotICAgICAgICBkc3QgPSAnL3RtcC90ZXN0LnB5JwotICAgICAgICBjbHMudGMudGFyZ2V0LmNvcHlUbyhzcmMsIGRzdCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRzdCA9ICcvdG1wL3Rlc3QucHknCi0gICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAlcycgJSBkc3QpCi0KLSAgICBAT0VUZXN0SUQoMTE0NSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCi0gICAgQE9FSGFzUGFja2FnZShbJ3B5dGhvbi1jb3JlJ10pCi0gICAgZGVmIHRlc3RfcHl0aG9uX2V4aXN0cyhzZWxmKToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIHB5dGhvbicpCi0gICAgICAgIG1zZyA9ICdQeXRob24gYmluYXJ5IG5vdCBpbiBQQVRIIG9yIG5vdCBvbiB0YXJnZXQuJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKKyAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgIGlmICJweXRob24zLWNvcmUiIG5vdCBpbiBjbHMudGMuaW1hZ2VfcGFja2FnZXM6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiUHl0aG9uMyBub3Qgb24gdGFyZ2V0IikKIAogICAgIEBPRVRlc3RJRCg5NjUpCi0gICAgQE9FVGVzdERlcGVuZHMoWydweXRob24uUHl0aG9uVGVzdC50ZXN0X3B5dGhvbl9leGlzdHMnXSkKLSAgICBkZWYgdGVzdF9weXRob25fc3Rkb3V0KHNlbGYpOgotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncHl0aG9uIC90bXAvdGVzdC5weScpCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIGRlZiB0ZXN0X3B5dGhvbjMoc2VsZik6CisgICAgICAgIGNtZCA9ICJweXRob24zIC1jIFwiaW1wb3J0IGNvZGVjczsgcHJpbnQoY29kZWNzLmVuY29kZSgnVXJ5eWIsIGpiZXlxJywgJ3JvdDEzJykpXCIiCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKICAgICAgICAgbXNnID0gJ0V4aXQgc3RhdHVzIHdhcyBub3QgMC4gT3V0cHV0OiAlcycgJSBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCiAKICAgICAgICAgbXNnID0gJ0luY29ycmVjdCBvdXRwdXQ6ICVzJyAlIG91dHB1dAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgInRoZSB2YWx1ZSBvZiBhIGlzIDAuMDEiLCBtc2c9bXNnKQotCi0gICAgQE9FVGVzdElEKDExNDYpCi0gICAgQE9FVGVzdERlcGVuZHMoWydweXRob24uUHl0aG9uVGVzdC50ZXN0X3B5dGhvbl9zdGRvdXQnXSkKLSAgICBkZWYgdGVzdF9weXRob25fdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdscyAvdG1wL3Rlc3RmaWxlLnB5dGhvbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9J1B5dGhvbiB0ZXN0IGZpbGUgZ2VuZXJhdGUgZmFpbGVkLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiSGVsbG8sIHdvcmxkIiwgbXNnPW1zZykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3JwbS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3JwbS5weQppbmRleCA4NGM1OWE2Li4xZTVlNDYzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9ycG0ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcnBtLnB5CkBAIC0zOSwzMSArMzksMzEgQEAKIAogICAgICAgICBwa2dhcmNoID0gY2xzLnRkWydUVU5FX1BLR0FSQ0gnXS5yZXBsYWNlKCctJywgJ18nKQogICAgICAgICBycG1kaXIgPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSJ10sICdycG0nLCBwa2dhcmNoKQotICAgICAgICAjIFBpY2sgcnBtLWRvYyBhcyBhIHRlc3QgZmlsZSB0byBnZXQgaW5zdGFsbGVkLCBiZWNhdXNlIGl0J3Mgc21hbGwKKyAgICAgICAgIyBQaWNrIGJhc2UtcGFzc3dkLWRvYyBhcyBhIHRlc3QgZmlsZSB0byBnZXQgaW5zdGFsbGVkLCBiZWNhdXNlIGl0J3Mgc21hbGwKICAgICAgICAgIyBhbmQgaXQgd2lsbCBhbHdheXMgYmUgYnVpbHQgZm9yIHN0YW5kYXJkIHRhcmdldHMKLSAgICAgICAgcnBtX2RvYyA9ICdycG0tZG9jLSouJXMucnBtJyAlIHBrZ2FyY2gKKyAgICAgICAgcnBtX2RvYyA9ICdiYXNlLXBhc3N3ZC1kb2MtKi4lcy5ycG0nICUgcGtnYXJjaAogICAgICAgICBmb3IgZiBpbiBmbm1hdGNoLmZpbHRlcihvcy5saXN0ZGlyKHJwbWRpciksIHJwbV9kb2MpOgogICAgICAgICAgICAgdGVzdF9maWxlID0gb3MucGF0aC5qb2luKHJwbWRpciwgZikKLSAgICAgICAgZHN0ID0gJy90bXAvcnBtLWRvYy5ycG0nCisgICAgICAgIGRzdCA9ICcvdG1wL2Jhc2UtcGFzc3dkLWRvYy5ycG0nCiAgICAgICAgIGNscy50Yy50YXJnZXQuY29weVRvKHRlc3RfZmlsZSwgZHN0KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZHN0ID0gJy90bXAvcnBtLWRvYy5ycG0nCisgICAgICAgIGRzdCA9ICcvdG1wL2Jhc2UtcGFzc3dkLWRvYy5ycG0nCiAgICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdybSAtZiAlcycgJSBkc3QpCiAKICAgICBAT0VUZXN0SUQoMTkyKQogICAgIEBPRVRlc3REZXBlbmRzKFsncnBtLlJwbUJhc2ljVGVzdC50ZXN0X3JwbV9oZWxwJ10pCiAgICAgZGVmIHRlc3RfcnBtX2luc3RhbGwoc2VsZik6Ci0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWl2aCAvdG1wL3JwbS1kb2MucnBtJykKLSAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBpbnN0YWxsIHJwbS1kb2MgcGFja2FnZTogJXMnICUgb3V0cHV0CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWl2aCAvdG1wL2Jhc2UtcGFzc3dkLWRvYy5ycG0nKQorICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIGluc3RhbGwgYmFzZS1wYXNzd2QtZG9jIHBhY2thZ2U6ICVzJyAlIG91dHB1dAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPW1zZykKIAogICAgIEBPRVRlc3RJRCgxOTQpCiAgICAgQE9FVGVzdERlcGVuZHMoWydycG0uUnBtSW5zdGFsbFJlbW92ZVRlc3QudGVzdF9ycG1faW5zdGFsbCddKQogICAgIGRlZiB0ZXN0X3JwbV9yZW1vdmUoc2VsZik6Ci0gICAgICAgIHN0YXR1cyxvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3JwbSAtZSBycG0tZG9jJykKLSAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byByZW1vdmUgcnBtLWRvYyBwYWNrYWdlOiAlcycgJSBvdXRwdXQKKyAgICAgICAgc3RhdHVzLG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1lIGJhc2UtcGFzc3dkLWRvYycpCisgICAgICAgIG1zZyA9ICdGYWlsZWQgdG8gcmVtb3ZlIGJhc2UtcGFzc3dkLWRvYyBwYWNrYWdlOiAlcycgJSBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCiAKICAgICBAT0VUZXN0SUQoMTA5NikKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgICBFeHBlY3RlZDogICAgVGhlcmUgc2hvdWxkIGJlIHNvbWUgUlBNIHByZWZpeGVkIGVudHJpZXMgaW4gdGhlIGFib3ZlIGZpbGUuCiAgICAgICAgIFByb2R1Y3Q6ICAgICBCU1BzCiAgICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kcnUgR2Vvcmdlc2N1IDxhbGV4YW5kcnUuYy5nZW9yZ2VzY3VAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgogICAgICAgICAiIiIKICAgICAgICAgZGJfZmlsZXNfY21kID0gJ2xzIC92YXIvbGliL3JwbS9fX2RiLionCkBAIC0xMTksMTYgKzExOSwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cywgbXNnPW1zZykKIAogICAgICAgICAjIFJlbW92ZSB0aGUgcGFja2FnZSBqdXN0IGluIGNhc2UKLSAgICAgICAgc2VsZi50YXJnZXQucnVuKCdycG0gLWUgcnBtLWRvYycpCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bigncnBtIC1lIGJhc2UtcGFzc3dkLWRvYycpCiAKICAgICAgICAgIyBJbnN0YWxsL1JlbW92ZSBhIHBhY2thZ2UgMTAgdGltZXMKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3JwbSAtaXZoIC90bXAvcnBtLWRvYy5ycG0nKQotICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBpbnN0YWxsIHJwbS1kb2MgcGFja2FnZS4gUmVhc29uOiB7fScuZm9ybWF0KG91dHB1dCkKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWl2aCAvdG1wL2Jhc2UtcGFzc3dkLWRvYy5ycG0nKQorICAgICAgICAgICAgbXNnID0gJ0ZhaWxlZCB0byBpbnN0YWxsIGJhc2UtcGFzc3dkLWRvYyBwYWNrYWdlLiBSZWFzb246IHt9Jy5mb3JtYXQob3V0cHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG1zZz1tc2cpCiAKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdycG0gLWUgcnBtLWRvYycpCi0gICAgICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIHJlbW92ZSBycG0tZG9jIHBhY2thZ2UuIFJlYXNvbjoge30nLmZvcm1hdChvdXRwdXQpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncnBtIC1lIGJhc2UtcGFzc3dkLWRvYycpCisgICAgICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIHJlbW92ZSBiYXNlLXBhc3N3ZC1kb2MgcGFja2FnZS4gUmVhc29uOiB7fScuZm9ybWF0KG91dHB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzLCBtc2c9bXNnKQogCiAgICAgICAgICMgaWYgdXNpbmcgc3lzdGVtZCB0aGlzIHNob3VsZCBlbnN1cmUgYWxsIGVudHJpZXMgYXJlIGZsdXNoZWQgdG8gL3ZhcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc2NhbmVsZi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3NjYW5lbGYucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYTFmNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc2NhbmVsZi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWZyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCi1mcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECi1mcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCi0KLWNsYXNzIFNjYW5lbGZUZXN0KE9FUnVudGltZVRlc3RDYXNlKToKLSAgICBzY2FuY21kID0gJ3NjYW5lbGYgLS1xdWlldCAtLXJlY3Vyc2l2ZSAtLW1vdW50IC0tbGRwYXRoIC0tcGF0aCcKLQotICAgIEBPRVRlc3RJRCg5NjYpCi0gICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQotICAgIEBPRUhhc1BhY2thZ2UoWydwYXgtdXRpbHMnXSkKLSAgICBkZWYgdGVzdF9zY2FuZWxmX3RleHRyZWwoc2VsZik6Ci0gICAgICAgICMgcHJpbnQgVEVYVFJFTCBpbmZvcm1hdGlvbgotICAgICAgICBjbWQgPSAnJXMgLS10ZXh0cmVsJyAlIHNlbGYuc2NhbmNtZAotICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjbWQpCi0gICAgICAgIG1zZyA9ICdcbicuam9pbihbY21kLCBvdXRwdXRdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5zdHJpcCgpLCAnJywgbXNnPW1zZykKLQotICAgIEBPRVRlc3RJRCg5NjcpCi0gICAgQE9FVGVzdERlcGVuZHMoWydzY2FuZWxmLlNjYW5lbGZUZXN0LnRlc3Rfc2NhbmVsZl90ZXh0cmVsJ10pCi0gICAgZGVmIHRlc3Rfc2NhbmVsZl9ycGF0aChzZWxmKToKLSAgICAgICAgIyBwcmludCBSUEFUSCBpbmZvcm1hdGlvbgotICAgICAgICBjbWQgPSAnJXMgLS10ZXh0cmVsIC0tcnBhdGgnICUgc2VsZi5zY2FuY21kCi0gICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKGNtZCkKLSAgICAgICAgbXNnID0gJ1xuJy5qb2luKFtjbWQsIG91dHB1dF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnN0cmlwKCksICcnLCBtc2c9bXNnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N0YXAucHkKaW5kZXggZmM3MjhiZi4uOTZlMTk3YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3RhcC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zdGFwLnB5CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgZGVmIHRlc3Rfc3RhcChzZWxmKToKICAgICAgICAgY21kcyA9IFsKICAgICAgICAgICAgICdjZCAvdXNyL3NyYy9rZXJuZWwgJiYgbWFrZSBzY3JpcHRzIHByZXBhcmUnLAotICAgICAgICAgICAgJ2NkIC9saWIvbW9kdWxlcy9gdW5hbWUgLXJgICYmIChpZiBbICEgLUwgYnVpbGQgXTsgdGhlbiBsbiAtcyAvdXNyL3NyYy9rZXJuZWwgYnVpbGQ7IGZpKScsCisgICAgICAgICAgICAnY2QgL2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAgJiYgKGlmIFsgISAtZSBidWlsZCBdOyB0aGVuIGxuIC1zIC91c3Ivc3JjL2tlcm5lbCBidWlsZDsgZmkpJywKICAgICAgICAgICAgICdzdGFwIC0tZGlzYWJsZS1jYWNoZSAtRFNUUF9OT19WRVJSRUxfQ0hFQ0sgL3RtcC9oZWxsby5zdHAnCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciBjbWQgaW4gY21kczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N5c3RlbWQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9zeXN0ZW1kLnB5CmluZGV4IGRiNjkzODQuLjQ2MGI4ZmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3N5c3RlbWQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvc3lzdGVtZC5weQpAQCAtMTEsMTEgKzExLDExIEBACiBjbGFzcyBTeXN0ZW1kVGVzdChPRVJ1bnRpbWVUZXN0Q2FzZSk6CiAKICAgICBkZWYgc3lzdGVtY3RsKHNlbGYsIGFjdGlvbj0nJywgdGFyZ2V0PScnLCBleHBlY3RlZD0wLCB2ZXJib3NlPUZhbHNlKToKLSAgICAgICAgY29tbWFuZCA9ICdzeXN0ZW1jdGwgJXMgJXMnICUgKGFjdGlvbiwgdGFyZ2V0KQorICAgICAgICBjb21tYW5kID0gJ1NZU1RFTURfQlVTX1RJTUVPVVQ9MjQwcyBzeXN0ZW1jdGwgJXMgJXMnICUgKGFjdGlvbiwgdGFyZ2V0KQogICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bihjb21tYW5kKQogICAgICAgICBtZXNzYWdlID0gJ1xuJy5qb2luKFtjb21tYW5kLCBvdXRwdXRdKQogICAgICAgICBpZiBzdGF0dXMgIT0gZXhwZWN0ZWQgYW5kIHZlcmJvc2U6Ci0gICAgICAgICAgICBjbWQgPSAnc3lzdGVtY3RsIHN0YXR1cyAtLWZ1bGwgJXMnICUgdGFyZ2V0CisgICAgICAgICAgICBjbWQgPSAnU1lTVEVNRF9CVVNfVElNRU9VVD0yNDBzIHN5c3RlbWN0bCBzdGF0dXMgLS1mdWxsICVzJyAlIHRhcmdldAogICAgICAgICAgICAgbWVzc2FnZSArPSBzZWxmLnRhcmdldC5ydW4oY21kKVsxXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZXhwZWN0ZWQsIG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBvdXRwdXQKQEAgLTYzLDcgKzYzLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGVuZHRpbWUgPSB0aW1lLnRpbWUoKSArICg2MCAqIDIpCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIC0tc3RhdGU9YWN0aXZhdGluZycpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignU1lTVEVNRF9CVVNfVElNRU9VVD0yNDBzIHN5c3RlbWN0bCAtLXN0YXRlPWFjdGl2YXRpbmcnKQogICAgICAgICAgICAgaWYgIjAgbG9hZGVkIHVuaXRzIGxpc3RlZCIgaW4gb3V0cHV0OgogICAgICAgICAgICAgICAgIHJldHVybiAoVHJ1ZSwgJycpCiAgICAgICAgICAgICBpZiB0aW1lLnRpbWUoKSA+PSBlbmR0aW1lOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKaW5kZXggMDI5NDAwMy4uYTdmMzgyMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CkBAIC0xMTIsMTIgKzExMiw5IEBACiAgICAgICAgICAgICAjIFhYWDogRG9uJ3QgYmFzZSB5b3VyIHRhcmdldHMgb24gdGhpcyBjb2RlIGl0IHdpbGwgYmUgcmVmYWN0b3JlZAogICAgICAgICAgICAgIyBpbiB0aGUgbmVhciBmdXR1cmUuCiAgICAgICAgICAgICAjIEN1c3RvbSB0YXJnZXQgbW9kdWxlIGxvYWRpbmcKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0YXJnZXRfbW9kdWxlc19wYXRoID0ga3dhcmdzLmdldCgndGFyZ2V0X21vZHVsZXNfcGF0aCcsICcnKQotICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBPRVJ1bnRpbWVUZXN0Q29udGV4dEV4ZWN1dG9yLmdldENvbnRyb2xsZXJNb2R1bGUodGFyZ2V0X3R5cGUsIHRhcmdldF9tb2R1bGVzX3BhdGgpCi0gICAgICAgICAgICAgICAgdGFyZ2V0ID0gY29udHJvbGxlcihsb2dnZXIsIHRhcmdldF9pcCwgc2VydmVyX2lwLCAqKmt3YXJncykKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRmFpbGVkIHRvIGltcG9ydCAlcyBmcm9tIGF2YWlsYWJsZSBjb250cm9sbGVyIG1vZHVsZXMiICUgdGFyZ2V0X3R5cGUpCisgICAgICAgICAgICB0YXJnZXRfbW9kdWxlc19wYXRoID0ga3dhcmdzLmdldCgndGFyZ2V0X21vZHVsZXNfcGF0aCcsICcnKQorICAgICAgICAgICAgY29udHJvbGxlciA9IE9FUnVudGltZVRlc3RDb250ZXh0RXhlY3V0b3IuZ2V0Q29udHJvbGxlck1vZHVsZSh0YXJnZXRfdHlwZSwgdGFyZ2V0X21vZHVsZXNfcGF0aCkKKyAgICAgICAgICAgIHRhcmdldCA9IGNvbnRyb2xsZXIobG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpCiAKICAgICAgICAgcmV0dXJuIHRhcmdldAogCkBAIC0xNzMsMTAgKzE3MCw3IEBACiAgICAgZGVmIF9sb2FkQ29udHJvbGxlckZyb21Nb2R1bGUodGFyZ2V0LCBtb2R1bGVuYW1lKToKICAgICAgICAgb2JqID0gTm9uZQogICAgICAgICAjIGltcG9ydCBtb2R1bGUsIGFsbG93aW5nIGl0IHRvIHJhaXNlIGltcG9ydCBleGNlcHRpb24KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXyhtb2R1bGVuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbdGFyZ2V0XSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcmV0dXJuIG9iagorICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG1vZHVsZW5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFt0YXJnZXRdKQogICAgICAgICAjIGxvb2sgZm9yIHRhcmdldCBjbGFzcyBpbiB0aGUgbW9kdWxlLCBjYXRjaGluZyBhbnkgZXhjZXB0aW9ucyBhcyBpdAogICAgICAgICAjIGlzIHZhbGlkIHRoYXQgYSBtb2R1bGUgbWF5IG5vdCBoYXZlIHRoZSB0YXJnZXQgY2xhc3MuCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYXNzaW1wLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9hc3NpbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjMWRmMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYXNzaW1wLnB5CkBAIC0wLDAgKzEsNjMgQEAKK2ltcG9ydCBvcywgc3VicHJvY2VzcywgdW5pdHRlc3QKK2ltcG9ydCBiYgorZnJvbSBvZXFhLnNkay5jYXNlIGltcG9ydCBPRVNES1Rlc3RDYXNlCisKK2Zyb20gb2VxYS51dGlscy5zdWJwcm9jZXNzdHdlYWsgaW1wb3J0IGVycm9yc19oYXZlX291dHB1dAorZXJyb3JzX2hhdmVfb3V0cHV0KCkKKworY2xhc3MgQnVpbGRBc3NpbXAoT0VTREtUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBjYXNlIHRvIGJ1aWxkIGEgcHJvamVjdCB1c2luZyBjbWFrZS4KKyAgICAiIiIKKworICAgIHRkX3ZhcnMgPSBbJ0RBVEVUSU1FJywgJ1RBUkdFVF9PUycsICdUQVJHRVRfQVJDSCddCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstY21ha2UiKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoImNtYWtlLW5hdGl2ZSIpKToKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJOZWVkcyBjbWFrZSIpCisKKyAgICBkZWYgZmV0Y2goc2VsZiwgd29ya2RpciwgZGxfZGlyLCB1cmwsIGFyY2hpdmU9Tm9uZSk6CisgICAgICAgIGlmIG5vdCBhcmNoaXZlOgorICAgICAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCisgICAgICAgICAgICBhcmNoaXZlID0gb3MucGF0aC5iYXNlbmFtZSh1cmxwYXJzZSh1cmwpLnBhdGgpCisKKyAgICAgICAgaWYgZGxfZGlyOgorICAgICAgICAgICAgdGFyYmFsbCA9IG9zLnBhdGguam9pbihkbF9kaXIsIGFyY2hpdmUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFyYmFsbAorCisgICAgICAgIHRhcmJhbGwgPSBvcy5wYXRoLmpvaW4od29ya2RpciwgYXJjaGl2ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJ3Z2V0IiwgIi1PIiwgdGFyYmFsbCwgdXJsXSkKKyAgICAgICAgcmV0dXJuIHRhcmJhbGwKKworICAgIGRlZiB0ZXN0X2Fzc2ltcChzZWxmKToKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgICAgIGltcG9ydCBvZS5xYSwgb2UuZWxmCisKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4PSJhc3NpbXAiLCBkaXI9c2VsZi50Yy5zZGtfZGlyKSBhcyB0ZXN0ZGlyOgorICAgICAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCisgICAgICAgICAgICB0YXJiYWxsID0gc2VsZi5mZXRjaCh0ZXN0ZGlyLCBkbF9kaXIsICJodHRwczovL2dpdGh1Yi5jb20vYXNzaW1wL2Fzc2ltcC9hcmNoaXZlL3Y0LjEuMC50YXIuZ3oiKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJ0YXIiLCAieGYiLCB0YXJiYWxsLCAiLUMiLCB0ZXN0ZGlyXSkKKworICAgICAgICAgICAgc291cmNlZGlyID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJhc3NpbXAtNC4xLjAiKSAKKyAgICAgICAgICAgIGJ1aWxkZGlyID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJidWlsZCIpCisgICAgICAgICAgICBpbnN0YWxsZGlyID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJpbnN0YWxsIikKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihidWlsZGRpcikKKworICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCAlcyAmJiBjbWFrZSAtRENNQUtFX1ZFUkJPU0VfTUFLRUZJTEU6Qk9PTD1PTiAlcyAiICUgKGJ1aWxkZGlyLCBzb3VyY2VkaXIpKQorICAgICAgICAgICAgc2VsZi5fcnVuKCJjbWFrZSAtLWJ1aWxkICVzIC0tIC1qIiAlIGJ1aWxkZGlyKQorICAgICAgICAgICAgc2VsZi5fcnVuKCJjbWFrZSAtLWJ1aWxkICVzIC0tdGFyZ2V0IGluc3RhbGwgLS0gREVTVERJUj0lcyIgJSAoYnVpbGRkaXIsIGluc3RhbGxkaXIpKQorCisgICAgICAgICAgICBlbGYgPSBvZS5xYS5FTEZGaWxlKG9zLnBhdGguam9pbihpbnN0YWxsZGlyLCAidXNyIiwgImxvY2FsIiwgImxpYiIsICJsaWJhc3NpbXAuc28uNC4xLjAiKSkKKyAgICAgICAgICAgIGVsZi5vcGVuKCkKKworICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCJlY2hvICRPRUNPUkVfVEFSR0VUX09TOiRPRUNPUkVfVEFSR0VUX0FSQ0giKQorICAgICAgICAgICAgdGFyZ2V0X29zLCB0YXJnZXRfYXJjaCA9IG91dHB1dC5zdHJpcCgpLnNwbGl0KCI6IikKKyAgICAgICAgICAgIG1hY2hpbmVfZGF0YSA9IG9lLmVsZi5tYWNoaW5lX2RpY3QoTm9uZSlbdGFyZ2V0X29zXVt0YXJnZXRfYXJjaF0KKyAgICAgICAgICAgIChtYWNoaW5lLCBvc2FiaSwgYWJpdmVyc2lvbiwgZW5kaWFuLCBiaXRzKSA9IG1hY2hpbmVfZGF0YQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hY2hpbmUsIGVsZi5tYWNoaW5lKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIGVsZi5hYmlTaXplKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZGlhbiwgZWxmLmlzTGl0dGxlRW5kaWFuKCkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CmluZGV4IDc4MGFmY2MuLjA1MGQxYjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CkBAIC04LDkgKzgsMTEgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ3RrXCszIikgb3JcCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJsaWJndGstMy4wIikpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ3RrKzMiLCBtdWx0aWxpYj1UcnVlKSBvciBcCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJsaWJndGstMy4wIiwgbXVsdGlsaWI9VHJ1ZSkpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkdhbGN1bGF0b3JUZXN0IGNsYXNzOiBTREsgZG9uJ3Qgc3VwcG9ydCBndGsrMyIpCisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLWdldHRleHQtZGV2IikpOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkdhbGN1bGF0b3JUZXN0IGNsYXNzOiBTREsgZG9lc24ndCBjb250YWluIGdldHRleHQiKQogCiAgICAgZGVmIHRlc3RfZ2FsY3VsYXRvcihzZWxmKToKICAgICAgICAgZGxfZGlyID0gc2VsZi50ZC5nZXQoJ0RMX0RJUicsIE5vbmUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CmluZGV4IDNhODljZTguLmIyOGNjM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CkBAIC0xNyw4ICsxNyw4IEBACiAKICAgICAgICAgbWFjaGluZSA9IHNlbGYudGQuZ2V0KCJNQUNISU5FIikKIAotICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJnY2MiKSk6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgiXmdjYy0iLCByZWdleD1UcnVlKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiU0RLIGRvZXNuJ3QgY29udGFpbiBhIGNyb3NzLWNhbmFkaWFuIHRvb2xjaGFpbiIpCiAKICAgICBkZWYgdGVzdF9semlwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQppbmRleCBkMTFmNGI2Li5iMzJiMDFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQpAQCAtMTgsOCArMTgsOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBtYWNoaW5lID0gc2VsZi50ZC5nZXQoIk1BQ0hJTkUiKQotICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCi0gICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJnY2MiKSk6CisgICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgiXmdjYy0iLCByZWdleD1UcnVlKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiR2NjQ29tcGlsZVRlc3QgY2xhc3M6IFNESyBkb2Vzbid0IGNvbnRhaW4gYSBjcm9zcy1jYW5hZGlhbiB0b29sY2hhaW4iKQogCiAgICAgZGVmIHRlc3RfZ2NjX2NvbXBpbGUoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3BlcmwucHkKaW5kZXggODA4NTY3OC4uZmY1MGI0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weQpAQCAtMSw4ICsxLDQgQEAKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gb2VxYS5jb3JlLnV0aWxzLnBhdGggaW1wb3J0IHJlbW92ZV9zYWZlCiBmcm9tIG9lcWEuc2RrLmNhc2UgaW1wb3J0IE9FU0RLVGVzdENhc2UKIAogY2xhc3MgUGVybFRlc3QoT0VTREtUZXN0Q2FzZSk6CkBAIC0xMiwxNyArOCwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBlcmwtbmF0aXZlIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIk5vIHBlcmwgcGFja2FnZSBpbiB0aGUgU0RLIikKIAotICAgICAgICBmb3IgZiBpbiBbJ3Rlc3QucGwnXToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50Yy5maWxlc19kaXIsIGYpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtfZGlyLCBmKSkKLSAgICAgICAgc2VsZi50ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRjLnNka19kaXIsICJ0ZXN0LnBsIikKLQotICAgIGRlZiB0ZXN0X3BlcmxfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLl9ydW4oJ3doaWNoIHBlcmwnKQotCi0gICAgZGVmIHRlc3RfcGVybF93b3JrcyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuKCdwZXJsICVzJyAlIHNlbGYudGVzdGZpbGUpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKLSAgICAgICAgcmVtb3ZlX3NhZmUoc2VsZi50ZXN0ZmlsZSkKKyAgICBkZWYgdGVzdF9wZXJsKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjbWQgPSAicGVybCAtZSAnJF89XCJVcnl5YiwgamJleXFcIjsgdHIvYS16QS1aL24temEtbU4tWkEtTS87cHJpbnQnIgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiSGVsbG8sIHdvcmxkIikKKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlVuZXhwZWN0ZWQgZXhpdCAlZCAob3V0cHV0ICVzKSIgJSAoZS5yZXR1cm5jb2RlLCBlLm91dHB1dCkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CmluZGV4IDcyZGZjYzcuLmJkNWYxZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CkBAIC0xLDMyICsxLDE3IEBACi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIG9lcWEuY29yZS51dGlscy5wYXRoIGltcG9ydCByZW1vdmVfc2FmZQoraW1wb3J0IHN1YnByb2Nlc3MsIHVuaXR0ZXN0CiBmcm9tIG9lcWEuc2RrLmNhc2UgaW1wb3J0IE9FU0RLVGVzdENhc2UKIAogY2xhc3MgUHl0aG9uVGVzdChPRVNES1Rlc3RDYXNlKToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcHl0aG9uIikgb3IKLSAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJweXRob24tbmF0aXZlIikpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1weXRob24zIikgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJweXRob24zLW5hdGl2ZSIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJObyBweXRob24gcGFja2FnZSBpbiB0aGUgU0RLIikKIAotICAgICAgICBmb3IgZiBpbiBbJ3Rlc3QucHknXToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50Yy5maWxlc19kaXIsIGYpLAotICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnRjLnNka19kaXIsIGYpKQotCi0gICAgZGVmIHRlc3RfcHl0aG9uX2V4aXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuKCd3aGljaCBweXRob24nKQotCi0gICAgZGVmIHRlc3RfcHl0aG9uX3N0ZG91dChzZWxmKToKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCdweXRob24gJXMvdGVzdC5weScgJSBzZWxmLnRjLnNka19kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnN0cmlwKCksICJ0aGUgdmFsdWUgb2YgYSBpcyAwLjAxIiwgbXNnPSJJbmNvcnJlY3Qgb3V0cHV0OiAlcyIgJSBvdXRwdXQpCi0KLSAgICBkZWYgdGVzdF9weXRob25fdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bignbHMgL3RtcC90ZXN0ZmlsZS5weXRob24nKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3Moc2VsZik6Ci0gICAgICAgIHJlbW92ZV9zYWZlKCIlcy90ZXN0LnB5IiAlIHNlbGYudGMuc2RrX2RpcikKLSAgICAgICAgcmVtb3ZlX3NhZmUoIi90bXAvdGVzdGZpbGUucHl0aG9uIikKKyAgICBkZWYgdGVzdF9weXRob24zKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjbWQgPSAicHl0aG9uMyAtYyBcImltcG9ydCBjb2RlY3M7IHByaW50KGNvZGVjcy5lbmNvZGUoJ1VyeXliLCBqYmV5cScsICdyb3QxMycpKVwiIgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiSGVsbG8sIHdvcmxkXG4iKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiVW5leHBlY3RlZCBleGl0ICVkIChvdXRwdXQgJXMpIiAlIChlLnJldHVybmNvZGUsIGUub3V0cHV0KSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQppbmRleCA4MmU0YzE5Li5hZGM0MTY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CkBAIC0yMCwxNyArMjAsMzAgQEAKICAgICAgICAgc2VsZi50YXJnZXRfcGtnX21hbmlmZXN0ID0gdGFyZ2V0X3BrZ19tYW5pZmVzdAogICAgICAgICBzZWxmLmhvc3RfcGtnX21hbmlmZXN0ID0gaG9zdF9wa2dfbWFuaWZlc3QKIAotICAgIGRlZiBfaGFzUGFja2FnZShzZWxmLCBtYW5pZmVzdCwgcGtnKToKLSAgICAgICAgZm9yIGhvc3RfcGtnIGluIG1hbmlmZXN0LmtleXMoKToKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChwa2csIGhvc3RfcGtnKToKKyAgICBkZWYgX2hhc1BhY2thZ2Uoc2VsZiwgbWFuaWZlc3QsIHBrZywgcmVnZXg9RmFsc2UpOgorICAgICAgICBpZiByZWdleDoKKyAgICAgICAgICAgICMgZG8gcmVnZXggbWF0Y2gKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocGtnKQorICAgICAgICAgICAgZm9yIHAgaW4gbWFuaWZlc3Qua2V5cygpOgorICAgICAgICAgICAgICAgIGlmIHBhdC5zZWFyY2gocCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGRvIGV4YWN0IG1hdGNoCisgICAgICAgICAgICBpZiBwa2cgaW4gbWFuaWZlc3Qua2V5cygpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIGhhc0hvc3RQYWNrYWdlKHNlbGYsIHBrZyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9oYXNQYWNrYWdlKHNlbGYuaG9zdF9wa2dfbWFuaWZlc3QsIHBrZykKKyAgICBkZWYgaGFzSG9zdFBhY2thZ2Uoc2VsZiwgcGtnLCByZWdleD1GYWxzZSk6CisgICAgICAgIHJldHVybiBzZWxmLl9oYXNQYWNrYWdlKHNlbGYuaG9zdF9wa2dfbWFuaWZlc3QsIHBrZywgcmVnZXg9cmVnZXgpCiAKLSAgICBkZWYgaGFzVGFyZ2V0UGFja2FnZShzZWxmLCBwa2cpOgotICAgICAgICByZXR1cm4gc2VsZi5faGFzUGFja2FnZShzZWxmLnRhcmdldF9wa2dfbWFuaWZlc3QsIHBrZykKKyAgICBkZWYgaGFzVGFyZ2V0UGFja2FnZShzZWxmLCBwa2csIG11bHRpbGliPUZhbHNlLCByZWdleD1GYWxzZSk6CisgICAgICAgIGlmIG11bHRpbGliOgorICAgICAgICAgICAgIyBtYXRjaCBtdWx0aWxpYiBhY2NvcmRpbmcgdG8gc2RrX2VudgorICAgICAgICAgICAgbWxzID0gc2VsZi50ZC5nZXQoJ01VTFRJTElCX1ZBUklBTlRTJywgJycpLnNwbGl0KCkKKyAgICAgICAgICAgIGZvciBtbCBpbiBtbHM6CisgICAgICAgICAgICAgICAgaWYgKCdtbCcrbWwpIGluIHNlbGYuc2RrX2VudjoKKyAgICAgICAgICAgICAgICAgICAgcGtnID0gbWwgKyAnLScgKyBwa2cKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhc1BhY2thZ2Uoc2VsZi50YXJnZXRfcGtnX21hbmlmZXN0LCBwa2csIHJlZ2V4PXJlZ2V4KQogCiBjbGFzcyBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IoT0VUZXN0Q29udGV4dEV4ZWN1dG9yKToKICAgICBfY29udGV4dF9jbGFzcyA9IE9FU0RLVGVzdENvbnRleHQKQEAgLTY1LDYgKzc4LDkgQEAKICAgICAgICAgc2RrX3Jncm91cC5hZGRfYXJndW1lbnQoJy0tc2RrLWRpcicsIHJlcXVpcmVkPUZhbHNlLCBhY3Rpb249J3N0b3JlJywgCiAgICAgICAgICAgICBoZWxwPSdzZGsgaW5zdGFsbGVkIGRpcmVjdG9yeScpCiAKKyAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctaicsICctLW51bS1wcm9jZXNzZXMnLCBkZXN0PSdwcm9jZXNzZXMnLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICB0eXBlPWludCwgaGVscD0ibnVtYmVyIG9mIHByb2Nlc3NlcyB0byBleGVjdXRlIGluIHBhcmFsbGVsIHdpdGgiKQorCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfbG9hZF9tYW5pZmVzdChtYW5pZmVzdCk6CiAgICAgICAgIHBrZ19tYW5pZmVzdCA9IHt9CkBAIC04NSw2ICsxMDEsNyBAQAogICAgICAgICAgICAgICAgIE9FU0RLVGVzdENvbnRleHRFeGVjdXRvci5fbG9hZF9tYW5pZmVzdChhcmdzLnRhcmdldF9tYW5pZmVzdCkKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnaG9zdF9wa2dfbWFuaWZlc3QnXSA9IFwKICAgICAgICAgICAgICAgICBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IuX2xvYWRfbWFuaWZlc3QoYXJncy5ob3N0X21hbmlmZXN0KQorICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3Byb2Nlc3NlcyddID0gYXJncy5wcm9jZXNzZXMKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX2dldF9zZGtfZW52aXJvbnMoc2RrX2Rpcik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL3V0aWxzL3Nka2J1aWxkcHJvamVjdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvdXRpbHMvc2RrYnVpbGRwcm9qZWN0LnB5CmluZGV4IDRlMjUxMTQuLjZmZWQ3M2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvdXRpbHMvc2RrYnVpbGRwcm9qZWN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvdXRpbHMvc2RrYnVpbGRwcm9qZWN0LnB5CkBAIC0yMCwxMCArMjAsOSBAQAogICAgICAgICBCdWlsZFByb2plY3QuX19pbml0X18oc2VsZiwgdXJpLCBmb2xkZXJuYW1lLCB0bXBkaXI9dGVzdHBhdGgsIGRsX2Rpcj1kbF9kaXIpCiAKICAgICBkZWYgZG93bmxvYWRfYXJjaGl2ZShzZWxmKToKLQogICAgICAgICBzZWxmLl9kb3dubG9hZF9hcmNoaXZlKCkKIAotICAgICAgICBjbWQgPSAndGFyIHhmICVzJXMgLUMgJXMnICUgKHNlbGYudGFyZ2V0ZGlyLCBzZWxmLmFyY2hpdmUsIHNlbGYudGFyZ2V0ZGlyKQorICAgICAgICBjbWQgPSAndGFyIHhmICVzIC1DICVzJyAlIChvcy5wYXRoLmpvaW4oc2VsZi50YXJnZXRkaXIsIHNlbGYuYXJjaGl2ZSksIHNlbGYudGFyZ2V0ZGlyKQogICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpCiAKICAgICAgICAgI0NoYW5nZSB0YXJnZXRkaXIgdG8gcHJvamVjdCBmb2xkZXIKQEAgLTQyLDQgKzQxLDkgQEAKIAogICAgIGRlZiBfcnVuKHNlbGYsIGNtZCk6CiAgICAgICAgIHNlbGYubG9nKCJSdW5uaW5nIC4gJXM7ICIgJSBzZWxmLnNka2VudiArIGNtZCkKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbCgiLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kLCBzaGVsbD1UcnVlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBwcmludChleGMub3V0cHV0LmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIHJldHVybiBleGMucmV0dXJuY29kZQorICAgICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CmluZGV4IGVhOTA1MTcuLjA4NjBlOGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIG9lcWEuc2RrZXh0LmNhc2UgaW1wb3J0IE9FU0RLRXh0VGVzdENhc2UKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKIGZyb20gb2VxYS51dGlscy5odHRwc2VydmVyIGltcG9ydCBIVFRQU2VydmljZQogCkBAIC00NSwyOCArNDQsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuc3RhcnRzd2l0aChzZWxmLnRjLnNka19kaXIpLCBUcnVlLCBcCiAgICAgICAgICAgICBtc2c9IlNlZW1zIHRoYXQgZGV2dG9vbCBpc24ndCB0aGUgZVNESyBvbmU6ICVzIiAlIG91dHB1dCkKIAotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfcmVzZXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBhZGQgbXlhcHAgJXMnICUgc2VsZi5teWFwcF9kc3QpCiAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCBteWFwcCcpCiAKICAgICBAT0VUZXN0SUQoMTYwNSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbiddKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRfbWFrZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9kZXZ0b29sX2J1aWxkKHNlbGYubXlhcHBfZHN0KQogCiAgICAgQE9FVGVzdElEKDE2MDYpCi0gICAgQE9FVGVzdERlcGVuZHMoWyd0ZXN0X2RldnRvb2xfbG9jYXRpb24nXSkKICAgICBkZWYgdGVzdF9kZXZ0b29sX2J1aWxkX2VzZGtfcGFja2FnZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9kZXZ0b29sX2J1aWxkX3BhY2thZ2Uoc2VsZi5teWFwcF9kc3QpCiAKICAgICBAT0VUZXN0SUQoMTYwNykKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbiddKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfYnVpbGRfY21ha2Uoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZGV2dG9vbF9idWlsZChzZWxmLm15YXBwX2NtYWtlX2RzdCkKIAogICAgIEBPRVRlc3RJRCgxNjA4KQotICAgIEBPRVRlc3REZXBlbmRzKFsndGVzdF9kZXZ0b29sX2xvY2F0aW9uJ10pCiAgICAgZGVmIHRlc3RfZXh0ZW5kX2F1dG90b29sc19yZWNpcGVfY3JlYXRpb24oc2VsZik6CiAgICAgICAgIHJlcSA9ICdodHRwczovL2dpdGh1Yi5jb20vcmRmYS9saWJyZGZhJwogICAgICAgICByZWNpcGUgPSAibGlicmRmYSIKQEAgLTc4LDcgKzcyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCiAKICAgICBAT0VUZXN0SUQoMTYwOSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbiddKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfa2VybmVsbW9kdWxlKHNlbGYpOgogICAgICAgICBkb2NmaWxlID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS91bWxhZXV0ZS92NGwybG9vcGJhY2suZ2l0JwogICAgICAgICByZWNpcGUgPSAndjRsMmxvb3BiYWNrLWRyaXZlcicKQEAgLTg5LDcgKzgyLDYgQEAKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcycgJSByZWNpcGUpCiAKICAgICBAT0VUZXN0SUQoMTYxMCkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3Rlc3RfZGV2dG9vbF9sb2NhdGlvbiddKQogICAgIGRlZiB0ZXN0X3JlY2lwZXNfZm9yX25vZGVqcyhzZWxmKToKICAgICAgICAgcGFja2FnZV9ub2RlanMgPSAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9d2luc3Rvbjt2ZXJzaW9uPTIuMi4wIgogICAgICAgICBzZWxmLl9ydW4oJ2RldnRvb2wgYWRkICVzICcgJSBwYWNrYWdlX25vZGVqcykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKaW5kZXggMmU0NDZiMC4uOWMwOGQ1OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKQEAgLTIxNSwzMSArMjE1LDMxIEBACiAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQogCiAgICAgZGVmIHJlY2lwZWluYyhzZWxmLCByZWNpcGUpOgotICAgICAgICAiIiJSZXR1cm4gYWJzb2x1dGUgcGF0aCBvZiBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgIiIiUmV0dXJuIGFic29sdXRlIHBhdGggb2YgbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCiAKICAgICBkZWYgd3JpdGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6Ci0gICAgICAgICIiIldyaXRlIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICAiIiJXcml0ZSB0byBtZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKICAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQogICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShpbmNfZmlsZSwgZGF0YSkKICAgICAgICAgcmV0dXJuIGluY19maWxlCiAKICAgICBkZWYgYXBwZW5kX3JlY2lwZWluYyhzZWxmLCByZWNpcGUsIGRhdGEpOgotICAgICAgICAiIiJBcHBlbmQgZGF0YSB0byBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgIiIiQXBwZW5kIGRhdGEgdG8gbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCiAgICAgICAgIGluY19maWxlID0gc2VsZi5yZWNpcGVpbmMocmVjaXBlKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQogICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCiAgICAgICAgIHJldHVybiBpbmNfZmlsZQogCiAgICAgZGVmIHJlbW92ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKLSAgICAgICAgIiIiUmVtb3ZlIGRhdGEgZnJvbSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKKyAgICAgICAgIiIiUmVtb3ZlIGRhdGEgZnJvbSBtZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMiIiIKICAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQogICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShpbmNfZmlsZSwgZGF0YSkKIAogICAgIGRlZiBkZWxldGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSk6Ci0gICAgICAgICIiIkRlbGV0ZSBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMgZmlsZSIiIgorICAgICAgICAiIiJEZWxldGUgbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIGZpbGUiIiIKICAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJEZWxldGluZyBmaWxlOiAlcyIgJSBpbmNfZmlsZSkKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5CmluZGV4IDkwYTIyNDkuLjQ0N2M1NGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYmxheWVycy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJsYXllcnMucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgcmUKIAogaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXIKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwogCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKQEAgLTg1LDYgKzg1LDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBub25leGlzdGVudGNsYXNzIHNob3VsZCBoYXZlIGZhaWxlZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOicsIHJlc3VsdC5vdXRwdXQpCiAKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX2NyZWF0ZWxheWVyKHNlbGYpOgorICAgICAgICBwcmlvcml0eSA9IDEwCisgICAgICAgIGxheWVybmFtZSA9ICd0ZXN0LWJpdGJha2VsYXllci1sYXllcmNyZWF0ZScKKyAgICAgICAgbGF5ZXJwYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsIGxheWVybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhsYXllcnBhdGgpLCAnJXMgc2hvdWxkIG5vdCBleGlzdCBhdCB0aGlzIHBvaW50IGluIHRpbWUnICUgbGF5ZXJwYXRoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGNyZWF0ZS1sYXllciAtLXByaW9yaXR5PSVkICVzJyAlIChwcmlvcml0eSwgbGF5ZXJwYXRoKSkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChsYXllcnBhdGgpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIGxheWVycGF0aCkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIGxheWVycGF0aCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIGZpbmRfaW5fY29udGVudHMgPSByZS5zZWFyY2gocmUuZXNjYXBlKGxheWVybmFtZSkgKyByJ1xzKycgKyByZS5lc2NhcGUobGF5ZXJwYXRoKSArIHInXHMrJyArIHJlLmVzY2FwZShzdHIocHJpb3JpdHkpKSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfaW5fY29udGVudHMsICIlcyBub3QgZm91bmQgaW4gbGF5ZXJzXG4lcyIgJSAobGF5ZXJuYW1lLCByZXN1bHQub3V0cHV0KSkKKworICAgICAgICBsYXllcnZhcnMgPSBbJ0JCRklMRV9QUklPUklUWScsICdCQkZJTEVfUEFUVEVSTicsICdMQVlFUkRFUEVORFMnLCAnTEFZRVJTRVJJRVNfQ09NUEFUJ10KKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnQkJGSUxFX0NPTExFQ1RJT05TJ10gKyBbJyVzXyVzJyAlICh2LCBsYXllcm5hbWUpIGZvciB2IGluIGxheWVydmFyc10pCisKKyAgICAgICAgZm9yIHYgaW4gbGF5ZXJ2YXJzOgorICAgICAgICAgICAgdmFybmFtZSA9ICclc18lcycgJSAodiwgbGF5ZXJuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoYmJfdmFyc1t2YXJuYW1lXSwgIiVzIG5vdCBmb3VuZCIgJSB2YXJuYW1lKQorCisgICAgICAgIGZpbmRfaW5fY29udGVudHMgPSByZS5zZWFyY2gocicoXnxccyknICsgcmUuZXNjYXBlKGxheWVybmFtZSkgKyByJygkfFxzKScsIGJiX3ZhcnNbJ0JCRklMRV9DT0xMRUNUSU9OUyddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9pbl9jb250ZW50cywgIiVzIG5vdCBpbiBCQkZJTEVfQ09MTEVDVElPTlMiICUgbGF5ZXJuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmJfdmFyc1snQkJGSUxFX1BSSU9SSVRZXyVzJyAlIGxheWVybmFtZV0sIHN0cihwcmlvcml0eSksICdCQkZJTEVfUFJJT1JJVFlfJXMgIT0gJWQnICUgKGxheWVybmFtZSwgcHJpb3JpdHkpKQorCiAgICAgZGVmIGdldF9yZWNpcGVfYmFzZW5hbWUoc2VsZiwgcmVjaXBlKToKICAgICAgICAgcmVjaXBlX2ZpbGUgPSAiIgogICAgICAgICByZXN1bHQgPSBydW5DbWQoImJpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtZiAlcyIgJSByZWNpcGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CmluZGV4IDM1MDYxNDkuLjAwNWZkZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CkBAIC0xNSwxNiArMTUsMjYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbAogCiAgICAgQE9FVGVzdElEKDc4OSkKKyAgICAjIFRlc3QgYml0YmFrZSBjYW4gcnVuIGZyb20gdGhlIDxidWlsZGRpcj4vY29uZiBkaXJlY3RvcnkKICAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8xKHNlbGYpOgogICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gXCJjb25mXCIgZGlyIikKIAogICAgIEBPRVRlc3RJRCg3OTApCisgICAgIyBUZXN0IGJpdGJha2UgY2FuIHJ1biBmcm9tIHRoZSA8YnVpbGRkaXI+J3MgcGFyZW50IGRpcmVjdG9yeQogICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzIoc2VsZik6CiAgICAgICAgIG15X2VudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIG15X2VudlsnQkJQQVRIJ10gPSBteV9lbnZbJ0JVSUxERElSJ10KICAgICAgICAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKG9zLmVudmlyb25bJ0JVSUxERElSJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJywgZW52PW15X2Vudikuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBidWlsZGRpciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnLCBlbnY9bXlfZW52KS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIGJ1aWxkZGlyJ3MgcGFyZW50IGRpcmVjdG9yeSIpCisKKyAgICAjIFRlc3QgYml0YmFrZSBjYW4gcnVuIGZyb20gc29tZSBvdGhlciByYW5kb20gc3lzdGVtIGxvY2F0aW9uICh3ZSB1c2UgL3RtcC8pCisgICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMyhzZWxmKToKKyAgICAgICAgbXlfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbXlfZW52WydCQlBBVEgnXSA9IG15X2VudlsnQlVJTERESVInXQorICAgICAgICBvcy5jaGRpcigiL3RtcC8iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJywgZW52PW15X2Vudikuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSAvdG1wLyIpCisKIAogICAgIEBPRVRlc3RJRCg4MDYpCiAgICAgZGVmIHRlc3RfZXZlbnRfaGFuZGxlcihzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRvcHRpb25zLnB5CmluZGV4IDI0NTk3YWMuLmYyMzRiYWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQpAQCAtMTgwLDMgKzE4MCwyNiBAQAogCiAgICAgICAgIGJpdGJha2UoJ2djYy1ydW50aW1lIGxpYmdmb3J0cmFuJykKIAorY2xhc3MgU291cmNlTWlycm9yaW5nKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIyBDYW4gd2UgZG93bmxvYWQgZXZlcnl0aGluZyBmcm9tIHRoZSBZb2N0byBTb3VyY2VzIE1pcnJvciBvdmVyIGh0dHAgb25seQorICAgIGRlZiB0ZXN0X3lvY3RvX3NvdXJjZV9taXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorQkJfQUxMT1dFRF9ORVRXT1JLUyA9ICJkb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyIKK01JUlJPUlMgPSAiIgorRExfRElSID0gIiR7VE1QRElSfS90ZXN0X2Rvd25sb2FkcyIKK1BSRU1JUlJPUlMgPSAiXFwKKyAgICBienI6Ly8uKi8uKiAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgY3ZzOi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIGdpdDovLy4qLy4qICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBnaXRzbTovLy4qLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgaGc6Ly8uKi8uKiAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIG9zYzovLy4qLy4qICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBwNDovLy4qLy4qICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgc3ZuOi8vLiovLiogICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiBcXAorICAgIGZ0cDovLy4qLy4qICAgICAgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyBcXG4gXFwKKyAgICBodHRwOi8vLiovLiogICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXFxuIFxcCisgICAgaHR0cHM6Ly8uKi8uKiAgICBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvIFxcbiIKKyIiIikKKworICAgICAgICBiaXRiYWtlKCJ3b3JsZCAtLXJ1bmFsbCBmZXRjaCIpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggZDViNmE0Ni4uOWViOWJhZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTExLDkgKzExLDEyNCBAQAogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycywgcnVucWVtdSwgZ2V0X3Rlc3RfbGF5ZXIKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAogCitvbGRtZXRhcGF0aCA9IE5vbmUKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaW1wb3J0IGJiLnV0aWxzCisKKyAgICBnbG9iYWwgdGVtcGxheWVyZGlyCisgICAgdGVtcGxheWVyZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgY29yZWNvcHlkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCAnY29yZS1jb3B5JykKKyAgICBiYmxheWVyc19jb25mID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0JVSUxERElSJ10sICdjb25mJywgJ2JibGF5ZXJzLmNvbmYnKQorICAgIGVkaXRlZF9sYXllcnMgPSBbXQorCisgICAgIyBXZSBuZWVkIHRvIHRha2UgYSBjb3B5IG9mIHRoZSBtZXRhIGxheWVyIHNvIHdlIGNhbiBtb2RpZnkgaXQgYW5kIG5vdAorICAgICMgaGF2ZSBhbnkgcmFjZXMgYWdhaW5zdCBvdGhlciB0ZXN0cyB0aGF0IG1pZ2h0IGJlIHJ1bm5pbmcgaW4gcGFyYWxsZWwKKyAgICAjIGhvd2V2ZXIgdGhpbmdzIGxpa2UgQ09SRUJBU0UgbWVhbiB0aGF0IHlvdSBjYW4ndCBqdXN0IGNvcHkgbWV0YSwgeW91CisgICAgIyBuZWVkIHRoZSB3aG9sZSByZXBvc2l0b3J5LgorICAgIGRlZiBiYmxheWVyc19lZGl0X2NiKGxheWVycGF0aCwgY2Fub25pY2FsX2xheWVycGF0aCk6CisgICAgICAgIGdsb2JhbCBvbGRtZXRhcGF0aAorICAgICAgICBpZiBub3QgY2Fub25pY2FsX2xheWVycGF0aC5lbmRzd2l0aCgnLycpOgorICAgICAgICAgICAgIyBUaGlzIGhlbHBzIHVzIG1hdGNoIGV4YWN0bHkgd2hlbiB3ZSdyZSB1c2luZyB0aGlzIHBhdGggbGF0ZXIKKyAgICAgICAgICAgIGNhbm9uaWNhbF9sYXllcnBhdGggKz0gJy8nCisgICAgICAgIGlmIG5vdCBlZGl0ZWRfbGF5ZXJzIGFuZCBjYW5vbmljYWxfbGF5ZXJwYXRoLmVuZHN3aXRoKCcvbWV0YS8nKToKKyAgICAgICAgICAgIGNhbm9uaWNhbF9sYXllcnBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKGNhbm9uaWNhbF9sYXllcnBhdGgpICsgJy8nCisgICAgICAgICAgICBlZGl0ZWRfbGF5ZXJzLmFwcGVuZChsYXllcnBhdGgpCisgICAgICAgICAgICBvbGRtZXRhcGF0aCA9IG9zLnBhdGgucmVhbHBhdGgobGF5ZXJwYXRoKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIC0tc2hvdy10b3BsZXZlbCcsIGN3ZD1jYW5vbmljYWxfbGF5ZXJwYXRoKQorICAgICAgICAgICAgb2xkcmVwb3Jvb3QgPSByZXN1bHQub3V0cHV0LnJzdHJpcCgpCisgICAgICAgICAgICBuZXdtZXRhcGF0aCA9IG9zLnBhdGguam9pbihjb3JlY29weWRpciwgb3MucGF0aC5yZWxwYXRoKG9sZG1ldGFwYXRoLCBvbGRyZXBvcm9vdCkpCisgICAgICAgICAgICBydW5DbWQoJ2dpdCBjbG9uZSAlcyAlcycgJSAob2xkcmVwb3Jvb3QsIGNvcmVjb3B5ZGlyKSwgY3dkPXRlbXBsYXllcmRpcikKKyAgICAgICAgICAgICMgTm93IHdlIG5lZWQgdG8gY29weSBhbnkgbW9kaWZpZWQgZmlsZXMKKyAgICAgICAgICAgICMgWW91IG1pZ2h0IGFzayAid2h5IG5vdCBqdXN0IGNvcHkgdGhlIGVudGlyZSB0cmVlIGluc3RlYWQgb2YKKyAgICAgICAgICAgICMgY2xvbmluZyBhbmQgZG9pbmcgdGhpcz8iIC0gd2VsbCwgdGhlIHByb2JsZW0gd2l0aCB0aGF0IGlzCisgICAgICAgICAgICAjIFRNUERJUiBvciBhbiBlcXVhbGx5IGxhcmdlIHN1YmRpcmVjdG9yeSBtaWdodCBleGlzdAorICAgICAgICAgICAgIyB1bmRlciBDT1JFQkFTRSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBjb3B5IHRoYXQsIHNvIHdlIGhhdmUKKyAgICAgICAgICAgICMgdG8gYmUgc2VsZWN0aXZlLgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPW9sZHJlcG9yb290KQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcgTSAnKSBvciBsaW5lLnN0YXJ0c3dpdGgoJz8/ICcpOgorICAgICAgICAgICAgICAgICAgICByZWxwdGggPSBsaW5lLnNwbGl0KClbMV0KKyAgICAgICAgICAgICAgICAgICAgcHRoID0gb3MucGF0aC5qb2luKG9sZHJlcG9yb290LCByZWxwdGgpCisgICAgICAgICAgICAgICAgICAgIGlmIHB0aC5zdGFydHN3aXRoKGNhbm9uaWNhbF9sYXllcnBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVscHRoLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihjb3JlY29weWRpciwgcmVscHRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShwdGgsIGRlc3RkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oY29yZWNvcHlkaXIsIG9zLnBhdGguZGlybmFtZShyZWxwdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5MihwdGgsIGRlc3RkaXIpCisgICAgICAgICAgICByZXR1cm4gbmV3bWV0YXBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBsYXllcnBhdGgKKyAgICBiYi51dGlscy5lZGl0X2JibGF5ZXJzX2NvbmYoYmJsYXllcnNfY29uZiwgTm9uZSwgTm9uZSwgYmJsYXllcnNfZWRpdF9jYikKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWYgb2xkbWV0YXBhdGg6CisgICAgICAgIGVkaXRlZF9sYXllcnMgPSBbXQorICAgICAgICBkZWYgYmJsYXllcnNfZWRpdF9jYihsYXllcnBhdGgsIGNhbm9uaWNhbF9sYXllcnBhdGgpOgorICAgICAgICAgICAgaWYgbm90IGVkaXRlZF9sYXllcnMgYW5kIGNhbm9uaWNhbF9sYXllcnBhdGguZW5kc3dpdGgoJy9tZXRhJyk6CisgICAgICAgICAgICAgICAgZWRpdGVkX2xheWVycy5hcHBlbmQobGF5ZXJwYXRoKQorICAgICAgICAgICAgICAgIHJldHVybiBvbGRtZXRhcGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGF5ZXJwYXRoCisgICAgICAgIGJibGF5ZXJzX2NvbmYgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnQlVJTERESVInXSwgJ2NvbmYnLCAnYmJsYXllcnMuY29uZicpCisgICAgICAgIGJiLnV0aWxzLmVkaXRfYmJsYXllcnNfY29uZihiYmxheWVyc19jb25mLCBOb25lLCBOb25lLCBiYmxheWVyc19lZGl0X2NiKQorICAgIHNodXRpbC5ybXRyZWUodGVtcGxheWVyZGlyKQorCiBjbGFzcyBEZXZ0b29sQmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCi0gICAgYnVmZmVyID0gVHJ1ZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKERldnRvb2xCYXNlLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydUT1BESVInLCAnU1NUQVRFX0RJUiddKQorICAgICAgICBjbHMub3JpZ2luYWxfc3N0YXRlID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCisgICAgICAgIGNscy5kZXZ0b29sX3NzdGF0ZSA9IG9zLnBhdGguam9pbihiYl92YXJzWydUT1BESVInXSwgJ3NzdGF0ZV9kZXZ0b29sJykKKyAgICAgICAgY2xzLnNzdGF0ZV9jb25mICA9ICdTU1RBVEVfRElSID0gIiVzIlxuJyAlIGNscy5kZXZ0b29sX3NzdGF0ZQorICAgICAgICBjbHMuc3N0YXRlX2NvbmYgKz0gKCdTU1RBVEVfTUlSUk9SUyArPSAiZmlsZTovLy4qIGZpbGU6Ly8vJXMvUEFUSCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNscy5vcmlnaW5hbF9zc3RhdGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMubG9nZ2VyLmRlYnVnKCdEZWxldGluZyBkZXZ0b29sIHNzdGF0ZSBjYWNoZSBvbiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKKyAgICAgICAgc3VwZXIoRGV2dG9vbEJhc2UsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlRlc3QgY2FzZSBzZXR1cCBmdW5jdGlvbiIiIgorICAgICAgICBzdXBlcihEZXZ0b29sQmFzZSwgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLndvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksCisgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoc2VsZi5zc3RhdGVfY29uZikKKworICAgIGRlZiBfY2hlY2tfc3JjX3JlcG8oc2VsZiwgcmVwb19kaXIpOgorICAgICAgICAiIiJDaGVjayBzcmN0cmVlIGdpdCByZXBvc2l0b3J5IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihyZXBvX2RpciwgJy5naXQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIG5vdCBmb3VuZCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvX2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVhdGVkIGdpdCByZXBvIGlzIG5vdCBjbGVhbicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN5bWJvbGljLXJlZiBIRUFEJywgY3dkPXJlcG9fZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgInJlZnMvaGVhZHMvZGV2dG9vbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1dyb25nIGJyYW5jaCBpbiBnaXQgcmVwbycpCisKKyAgICBkZWYgX2NoZWNrX3JlcG9fc3RhdHVzKHNlbGYsIHJlcG9fZGlyLCBleHBlY3RlZF9zdGF0dXMpOgorICAgICAgICAiIiJDaGVjayB0aGUgd29ya3RyZWUgc3RhdHVzIG9mIGEgcmVwb3NpdG9yeSIiIgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLiAtLXBvcmNlbGFpbicsCisgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9cmVwb19kaXIpCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZm9yIGluZCwgKGZfc3RhdHVzLCBmbl9yZSkgaW4gZW51bWVyYXRlKGV4cGVjdGVkX3N0YXR1cyk6CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goZm5fcmUsIGxpbmVbMzpdKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZl9zdGF0dXMgIT0gbGluZVs6Ml06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgc3RhdHVzIGluIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1cy5wb3AoaW5kKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgbW9kaWZpZWQgZmlsZSBpbiBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICBpZiBleHBlY3RlZF9zdGF0dXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ01pc3NpbmcgZmlsZSBjaGFuZ2VzOiAlcycgJSBleHBlY3RlZF9zdGF0dXMpCiAKICAgICBkZWYgX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHNlbGYsIHJlY2lwZWZpbGUsIGNoZWNrdmFycywgY2hlY2tpbmhlcml0cyk6CiAgICAgICAgIHdpdGggb3BlbihyZWNpcGVmaWxlLCAncicpIGFzIGY6CkBAIC0xMTgsNTggKzIzMyw2IEBACiAKIGNsYXNzIERldnRvb2xUZXN0cyhEZXZ0b29sQmFzZSk6CiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIGNscykuc2V0VXBDbGFzcygpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RPUERJUicsICdTU1RBVEVfRElSJ10pCi0gICAgICAgIGNscy5vcmlnaW5hbF9zc3RhdGUgPSBiYl92YXJzWydTU1RBVEVfRElSJ10KLSAgICAgICAgY2xzLmRldnRvb2xfc3N0YXRlID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ1RPUERJUiddLCAnc3N0YXRlX2RldnRvb2wnKQotICAgICAgICBjbHMuc3N0YXRlX2NvbmYgID0gJ1NTVEFURV9ESVIgPSAiJXMiXG4nICUgY2xzLmRldnRvb2xfc3N0YXRlCi0gICAgICAgIGNscy5zc3RhdGVfY29uZiArPSAoJ1NTVEFURV9NSVJST1JTICs9ICJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgY2xzLm9yaWdpbmFsX3NzdGF0ZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5sb2dnZXIuZGVidWcoJ0RlbGV0aW5nIGRldnRvb2wgc3N0YXRlIGNhY2hlIG9uICVzJyAlIGNscy5kZXZ0b29sX3NzdGF0ZSkKLSAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQotICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIGNscykudGVhckRvd25DbGFzcygpCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY2FzZSBzZXR1cCBmdW5jdGlvbiIiIgotICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIHNlbGYpLnNldFVwKCkKLSAgICAgICAgc2VsZi53b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKHNlbGYuc3N0YXRlX2NvbmYpCi0KLSAgICBkZWYgX2NoZWNrX3NyY19yZXBvKHNlbGYsIHJlcG9fZGlyKToKLSAgICAgICAgIiIiQ2hlY2sgc3JjdHJlZSBnaXQgcmVwb3NpdG9yeSIiIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocmVwb19kaXIsICcuZ2l0JykpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSBub3QgZm91bmQnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9cmVwb19kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlYXRlZCBnaXQgcmVwbyBpcyBub3QgY2xlYW4nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzeW1ib2xpYy1yZWYgSEVBRCcsIGN3ZD1yZXBvX2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICJyZWZzL2hlYWRzL2RldnRvb2wiLAotICAgICAgICAgICAgICAgICAgICAgICAgICdXcm9uZyBicmFuY2ggaW4gZ2l0IHJlcG8nKQotCi0gICAgZGVmIF9jaGVja19yZXBvX3N0YXR1cyhzZWxmLCByZXBvX2RpciwgZXhwZWN0ZWRfc3RhdHVzKToKLSAgICAgICAgIiIiQ2hlY2sgdGhlIHdvcmt0cmVlIHN0YXR1cyBvZiBhIHJlcG9zaXRvcnkiIiIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC4gLS1wb3JjZWxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXJlcG9fZGlyKQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGZvciBpbmQsIChmX3N0YXR1cywgZm5fcmUpIGluIGVudW1lcmF0ZShleHBlY3RlZF9zdGF0dXMpOgotICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGZuX3JlLCBsaW5lWzM6XSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZfc3RhdHVzICE9IGxpbmVbOjJdOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIHN0YXR1cyBpbiBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMucG9wKGluZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIG1vZGlmaWVkIGZpbGUgaW4gbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgaWYgZXhwZWN0ZWRfc3RhdHVzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdNaXNzaW5nIGZpbGUgY2hhbmdlczogJXMnICUgZXhwZWN0ZWRfc3RhdHVzKQotCiAgICAgQE9FVGVzdElEKDExNTgpCiAgICAgZGVmIHRlc3RfY3JlYXRlX3dvcmtzcGFjZShzZWxmKToKICAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCkBAIC0xOTEsNiArMjU0LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYud29ya3NwYWNlZGlyLCByZXN1bHQub3V0cHV0KQogCitjbGFzcyBEZXZ0b29sQWRkVGVzdHMoRGV2dG9vbEJhc2UpOgorCiAgICAgQE9FVGVzdElEKDExNTkpCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGQoc2VsZik6CiAgICAgICAgICMgRmV0Y2ggc291cmNlCkBAIC0yMzUsNiArMzAwLDggQEAKIAogICAgIEBPRVRlc3RJRCgxNDIzKQogICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2dpdF9sb2NhbChzZWxmKToKKyAgICAgICAgIyBXZSBuZWVkIGRidXMgYnVpbHQgc28gdGhhdCBERVBFTkRTIHJlY29nbml0aW9uIHdvcmtzCisgICAgICAgIGJpdGJha2UoJ2RidXMnKQogICAgICAgICAjIEZldGNoIHNvdXJjZSBmcm9tIGEgcmVtb3RlIFVSTCwgYnV0IGRvIGl0IG91dHNpZGUgb2YgZGV2dG9vbAogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKQEAgLTQ0NCw2ICs1MTEsOCBAQAogICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCiAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCiAKK2NsYXNzIERldnRvb2xNb2RpZnlUZXN0cyhEZXZ0b29sQmFzZSk6CisKICAgICBAT0VUZXN0SUQoMTE2NCkKICAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeShzZWxmKToKICAgICAgICAgaW1wb3J0IG9lLnBhdGgKQEAgLTY4OSw2ICs3NTgsNyBAQAogICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQogICAgICAgICAjIFRoaXMgaXMgcHJvYmFibHkgc3VmZmljaWVudAogCitjbGFzcyBEZXZ0b29sVXBkYXRlVGVzdHMoRGV2dG9vbEJhc2UpOgogCiAgICAgQE9FVGVzdElEKDExNjkpCiAgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlKHNlbGYpOgpAQCAtMTEwNSw2ICsxMTc1LDggQEAKICAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gW10KICAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCiAKK2NsYXNzIERldnRvb2xFeHRyYWN0VGVzdHMoRGV2dG9vbEJhc2UpOgorCiAgICAgQE9FVGVzdElEKDExNjMpCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9leHRyYWN0KHNlbGYpOgogICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCkBAIC0xMjc0LDYgKzEzNDYsOCBAQAogICAgICAgICBpZiByZXFwa2dzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdUaGUgZm9sbG93aW5nIHBhY2thZ2VzIHdlcmUgbm90IHByZXNlbnQgaW4gdGhlIGltYWdlIGFzIGV4cGVjdGVkOiAlcycgJSAnLCAnLmpvaW4ocmVxcGtncykpCiAKK2NsYXNzIERldnRvb2xVcGdyYWRlVGVzdHMoRGV2dG9vbEJhc2UpOgorCiAgICAgQE9FVGVzdElEKDEzNjcpCiAgICAgZGVmIHRlc3RfZGV2dG9vbF91cGdyYWRlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKaW5kZXggN2IyODAwNC4uZTdiNWUzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrcyBkbyBub3QgcmVncmVzcwogICAgICAgICBFeHBlY3RlZDogICAgVXBzdHJlYW0gdmVyc2lvbiBjaGVja3Mgc2hvdWxkIHN1Y2NlZWQgZXhjZXB0IGZvciB0aGUgcmVjaXBlcyBsaXN0ZWQgaW4gdGhlIGV4Y2VwdGlvbiBsaXN0LgogICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICAiIiIKICAgICAgICAgY2hlY2twa2dfcmVzdWx0ID0gb3Blbihvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiTE9HX0RJUiIpLCAiY2hlY2twa2cuY3N2IikpLnJlYWRsaW5lcygpWzE6XQogICAgICAgICByZWdyZXNzZWRfZmFpbHVyZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ1VOS05PV05fQlJPS0VOJ10KQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBvZS1jb3JlIHJlY2lwZXMgaGF2ZSBhIG1haW50YWluZXIKICAgICAgICAgRXhwZWN0ZWQ6ICAgIEFsbCBvZS1jb3JlIHJlY2lwZXMgKGV4Y2VwdCBhIGZldyBzcGVjaWFsIHN0YXRpYy90ZXN0aW5nIG9uZXMpIHNob3VsZCBoYXZlIGEgbWFpbnRhaW5lciBsaXN0ZWQgaW4gbWFpbnRhaW5lcnMuaW5jIGZpbGUuCiAgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAgICAgICAgICIiIgogICAgICAgICBkZWYgaXNfZXhjZXB0aW9uKHBrZyk6CiAgICAgICAgICAgICBleGNlcHRpb25zID0gWyJwYWNrYWdlZ3JvdXAtIiwgImluaXRyYW1mcy0iLCAic3lzdGVtZC1tYWNoaW5lLXVuaXRzIiwgInRhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkiXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2VmaWJvb3RwYXJ0aXRpb24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQppbmRleCAwYzgzMjU2Li5jNmYzOWQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZWZpYm9vdHBhcnRpdGlvbi5weQpAQCAtMTEsNyArMTEsNiBAQAogY2xhc3MgR2VuZXJpY0VGSVRlc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKICAgICAiIiJFRkkgYm9vdGluZyB0ZXN0IGNsYXNzIiIiCiAKLSAgICBidWZmZXIgPSBUcnVlCiAgICAgY21kX2NvbW1vbiA9ICJydW5xZW11IG5vZ3JhcGhpYyBzZXJpYWwgd2ljIG92bWYiCiAgICAgZWZpX3Byb3ZpZGVyID0gInN5c3RlbWQtYm9vdCIKICAgICBpbWFnZSA9ICJjb3JlLWltYWdlLW1pbmltYWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZmV0Y2gucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZmV0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjYzhjZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9mZXRjaC5weQpAQCAtMCwwICsxLDQ5IEBACitpbXBvcnQgb2UucGF0aAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgRmV0Y2goT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBAT0VUZXN0SUQoMTA1OCkKKyAgICBkZWYgdGVzdF9naXRfbWlycm9ycyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFZlcmlmeSB0aGF0IHRoZSBnaXQgZmV0Y2hlciB3aWxsIGZhbGwgYmFjayB0byB0aGUgSFRUUCBtaXJyb3JzLiBUaGUKKyAgICAgICAgcmVjaXBlIG5lZWRzIHRvIGJlIG9uZSB0aGF0IHdlIGhhdmUgb24gdGhlIFlvY3RvIFByb2plY3Qgc291cmNlIG1pcnJvcgorICAgICAgICBhbmQgaXMgaG9zdGVkIGluIGdpdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBUT0RPOiBta3RlbXBkIGluc3RlYWQgb2YgaGFyZGNvZGluZworICAgICAgICBkbGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtZ2l0LW1pcnJvcnMiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRsZGlyKQorCisgICAgICAgICMgTm8gbWlycm9ycywgc2hvdWxkIHVzZSBnaXQgdG8gZmV0Y2ggc3VjY2Vzc2Z1bGx5CisgICAgICAgIGZlYXR1cmVzID0gIiIiCitETF9ESVIgPSAiJXMiCitNSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIgorUFJFTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiIKKyIiIiAlIGRsZGlyCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorICAgICAgICBvZS5wYXRoLnJlbW92ZShkbGRpciwgcmVjdXJzZT1UcnVlKQorICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQgLWMgZmV0Y2ggLWYiKQorCisgICAgICAgICMgTm8gbWlycm9ycyBhbmQgYnJva2VuIGdpdCwgc2hvdWxkIGZhaWwKKyAgICAgICAgZmVhdHVyZXMgPSAiIiIKK0RMX0RJUiA9ICIlcyIKK0dJVF9QUk9YWV9DT01NQU5EID0gImZhbHNlIgorTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gIiIKK1BSRU1JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICIiCisiIiIgJSBkbGRpcgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgb2UucGF0aC5yZW1vdmUoZGxkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBiaXRiYWtlKCJkYnVzLXdhaXQgLWMgZmV0Y2ggLWYiKQorCisgICAgICAgICMgQnJva2VuIGdpdCBidXQgYSBzcGVjaWZpYyBtaXJyb3IKKyAgICAgICAgZmVhdHVyZXMgPSAiIiIKK0RMX0RJUiA9ICIlcyIKK0dJVF9QUk9YWV9DT01NQU5EID0gImZhbHNlIgorTUlSUk9SU19mb3JjZXZhcmlhYmxlID0gImdpdDovLy4qLy4qIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8iCisiIiIgJSBkbGRpcgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgb2UucGF0aC5yZW1vdmUoZGxkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgYml0YmFrZSgiZGJ1cy13YWl0IC1jIGZldGNoIC1mIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZV90eXBlZGVwLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkKaW5kZXggZTY3ODg4NS4uOTMyYzdmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkKQEAgLTI5LDExICsyOSwxNCBAQAogICAgICAgICAjIGxpa2UgQ09OVkVSU0lPTl9ERVBFTkRTX2J6Mj0ic29tZWRlcCIKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWUgZW1wdHl0ZXN0JykKIAorICAgICAgICBkZXAgPSBOb25lCiAgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJyk6CiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NPTlZFUlNJT05fREVQRU5EU19iejInKToKICAgICAgICAgICAgICAgICBkZXAgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoJyInKQogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZGVwLCAiQ09OVkVSU0lPTl9ERVBFTkRTX2J6MiBkZXBlbmRlbmN5IG5vdCBmb3VuZCBpbiBiaXRiYWtlIC1lIG91dHB1dCIpCisKICAgICAgICAgIyBOb3cgZ2V0IHRoZSBkZXBlbmRlbmN5IHRhc2sgbGlzdCBhbmQgY2hlY2sgZm9yIHRoZSBleHBlY3RlZCB0YXNrCiAgICAgICAgICMgZGVwZW5kZW5jeQogICAgICAgICBiaXRiYWtlKCctZyBlbXB0eXRlc3QnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQppbmRleCAwOWUwYjIwLi44Yzk1NDMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQpAQCAtMTAsOCArMTAsNiBAQAogICAgIHRlc3RfdXNlciA9ICd0ZXN0ZXInCiAgICAgcm9vdF91c2VyID0gJ3Jvb3QnCiAKLSAgICBidWZmZXIgPSBUcnVlCi0KICAgICBAT0VUZXN0SUQoMTEwNykKICAgICBkZWYgdGVzdF9ub25fcm9vdF91c2VyX2Nhbl9jb25uZWN0X3ZpYV9zc2hfd2l0aG91dF9wYXNzd29yZChzZWxmKToKICAgICAgICAgIiIiCkBAIC0yMyw3ICsyMSw3IEBACiAgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CiAgICAgICAgICIiIgogCi0gICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJworICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggZW1wdHktcm9vdC1wYXNzd29yZCBhbGxvdy1lbXB0eS1wYXNzd29yZCBhbGxvdy1yb290LWxvZ2luIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKQEAgLTQ5LDcgKzQ3LDcgQEAKICAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KICAgICAgICAgIiIiCiAKLSAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJworICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggYWxsb3ctZW1wdHktcGFzc3dvcmQgYWxsb3ctcm9vdC1sb2dpbiJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiXG4nCiAgICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9VU0VSU19QQVJBTVMgPSAidXNlcmFkZCAtcCBcJ1wnIHt9OyB1c2VybW9kIC1zIC9iaW4vc2gge307IicuZm9ybWF0KHNlbGYudGVzdF91c2VyLCBzZWxmLnRlc3RfdXNlcikKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xpY19jaGVja3N1bS5weQppbmRleCAzNzQwNzE1Li5mOTkyYjM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgb3MuY2xvc2UobGljX2ZpbGUpCiAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGljX3BhdGgpCiAKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCisKICAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICIiIgogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyVzO21kNT1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZSIKQEAgLTI5LDcgKzMxLDYgQEAKICAgICAgICAgd2l0aCBvcGVuKGxpY19wYXRoLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCJkYXRhIikKIAotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCwgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6CiAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihyZXN1bHQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9lbGYucHkKaW5kZXggNzRlZTZhMS4uMTVjMDNmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2VsZi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5CkBAIC0xNSw2ICsxNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MzIpLCAiSUEtNjQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDNFKSwgIng4Ni02NCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4QjcpLCAiQUFyY2g2NCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4RjcpLCAiQlBGIikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAwKSwgIlVua25vd24gKDApIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhERUFEQkVFRiksICJVbmtub3duICgzNzM1OTI4NTU5KSIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvdXRpbHMucHkKaW5kZXggOWZiNmMxNS4uNzg5YzZmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3V0aWxzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weQpAQCAtMSw1ICsxLDggQEAKK2ltcG9ydCBzeXMKIGZyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKLWZyb20gb2UudXRpbHMgaW1wb3J0IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtLCB0cmltX3ZlcnNpb24KK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIG9lLnV0aWxzIGltcG9ydCBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbSwgdHJpbV92ZXJzaW9uLCBtdWx0aXByb2Nlc3NfbGF1bmNoCiAKIGNsYXNzIFRlc3RQYWNrYWdlc0ZpbHRlck91dFN5c3RlbShUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgpAQCAtNDksMyArNTIsNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMiksICIxLjIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAzKSwgIjEuMi4zIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgNCksICIxLjIuMyIpCisKKworY2xhc3MgVGVzdE11bHRpcHJvY2Vzc0xhdW5jaChUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tdWx0aXByb2Nlc3NsYXVuY2goc2VsZik6CisgICAgICAgIGltcG9ydCBiYgorCisgICAgICAgIGRlZiB0ZXN0ZnVuY3Rpb24oaXRlbSwgZCk6CisgICAgICAgICAgICBpZiBpdGVtID09ICIyIiBvciBpdGVtID09ICIxIjoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiSW52YWxpZCBudW1iZXIgJXMiICUgaXRlbSkKKyAgICAgICAgICAgIHJldHVybiAiRm91bmQgJXMiICUgaXRlbQorCisgICAgICAgIGRlZiBkdW1teWVycm9yKG1zZyk6CisgICAgICAgICAgICBwcmludCgiRVJST1I6ICVzIiAlIG1zZykKKyAgICAgICAgZGVmIGR1bW15ZmF0YWwobXNnKToKKyAgICAgICAgICAgIHByaW50KCJFUlJPUjogJXMiICUgbXNnKQorICAgICAgICAgICAgcmFpc2UgYmIuQkJIYW5kbGVkRXhjZXB0aW9uKCkKKworICAgICAgICBAY29udGV4dG1hbmFnZXIKKyAgICAgICAgZGVmIGNhcHR1cmVkX291dHB1dCgpOgorICAgICAgICAgICAgbmV3X291dCwgbmV3X2VyciA9IFN0cmluZ0lPKCksIFN0cmluZ0lPKCkKKyAgICAgICAgICAgIG9sZF9vdXQsIG9sZF9lcnIgPSBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciA9IG5ld19vdXQsIG5ld19lcnIKKyAgICAgICAgICAgICAgICB5aWVsZCBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIgPSBvbGRfb3V0LCBvbGRfZXJyCisKKyAgICAgICAgZCA9IGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KCkKKyAgICAgICAgYmIuZXJyb3IgPSBkdW1teWVycm9yCisgICAgICAgIGJiLmZhdGFsID0gZHVtbXlmYXRhbAorCisgICAgICAgICMgQXNzZXJ0IHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSByaWdodCByZXN1bHRzCisgICAgICAgIHJlc3VsdCA9IG11bHRpcHJvY2Vzc19sYXVuY2godGVzdGZ1bmN0aW9uLCBbIjMiLCAiNCIsICI1IiwgIjYiXSwgZCwgZXh0cmFhcmdzPShkLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkZvdW5kIDMiLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkZvdW5kIDQiLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkZvdW5kIDUiLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIkZvdW5kIDYiLCByZXN1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdCksIDQpCisKKyAgICAgICAgIyBBc3NlcnQgdGhlIGZ1bmN0aW9uIHByaW50cyBleGNlcHRpb25zCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCkgYXMgKG91dCwgZXJyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLkJCSGFuZGxlZEV4Y2VwdGlvbiwgbXVsdGlwcm9jZXNzX2xhdW5jaCwgdGVzdGZ1bmN0aW9uLCBbIjEiLCAiMiIsICIzIiwgIjQiLCAiNSIsICI2Il0sIGQsIGV4dHJhYXJncz0oZCwpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJLZXlFcnJvcjogJ0ludmFsaWQgbnVtYmVyIDEnIiwgb3V0LmdldHZhbHVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIktleUVycm9yOiAnSW52YWxpZCBudW1iZXIgMiciLCBvdXQuZ2V0dmFsdWUoKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CmluZGV4IDFlZTc1MzcuLmJjZGMyZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQpAQCAtMTAsNiArMTAsMTkgQEAKICAgICAgICAgdGFyZ2V0ID0gJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnCiAgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjFcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1UcnVlKQogICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIwXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1UcnVlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoIm9lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBLR1YgJXMiICUgdGFyZ2V0KQorICAgICAgICBwa2d2ID0gcmVzdWx0Lm91dHB1dC5yc3RyaXAoKQogICAgICAgICByZXN1bHQgPSBydW5DbWQoImJ1aWxkaGlzdG9yeS1kaWZmIC1wICVzIiAlIGdldF9iYl92YXIoJ0JVSUxESElTVE9SWV9ESVInKSkKLSAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gJ1BSIGNoYW5nZWQgZnJvbSAicjEiIHRvICJyMCInCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZF9vdXRwdXQgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSJEaWQgbm90IGZpbmQgZXhwZWN0ZWQgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBleHBlY3RlZF9lbmRsaW5lcyA9IFsKKyAgICAgICAgICAgICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRldjogUkRFUEVORFM6IHJlbW92ZWQgXCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIChbJz0gJXMtcjEnXSlcIiwgYWRkZWQgXCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIChbJz0gJXMtcjAnXSlcIiIgJSAocGtndiwgcGtndiksCisgICAgICAgICAgICAieGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1zdGF0aWNkZXY6IFJERVBFTkRTOiByZW1vdmVkIFwieGN1cnNvci10cmFuc3BhcmVudC10aGVtZS1kZXYgKFsnPSAlcy1yMSddKVwiLCBhZGRlZCBcInhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtZGV2IChbJz0gJXMtcjAnXSlcIiIgJSAocGtndiwgcGtndikKKyAgICAgICAgXQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGZvciBlbCBpbiBleHBlY3RlZF9lbmRsaW5lczoKKyAgICAgICAgICAgICAgICBpZiBsaW5lLmVuZHN3aXRoKGVsKToKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZW5kbGluZXMucmVtb3ZlKGVsKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgbGluZTpcbiVzXG5FeHBlY3RlZCBsaW5lIGVuZGluZ3M6XG4gICVzJyAlIChsaW5lLCAnXG4gICcuam9pbihleHBlY3RlZF9lbmRsaW5lcykpKQorICAgICAgICBpZiBleHBlY3RlZF9lbmRsaW5lczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnTWlzc2luZyBleHBlY3RlZCBsaW5lIGVuZGluZ3M6XG4gICVzJyAlICdcbiAgJy5qb2luKGV4cGVjdGVkX2VuZGxpbmVzKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wYWNrYWdlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKaW5kZXggMTY5Njk4Zi4uMGE4OGRjMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKQEAgLTEsNiArMSw3IEBACiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIGdldF9iYl92YXIsIHJ1bnFlbXUKK2ltcG9ydCBzdGF0CiBpbXBvcnQgc3VicHJvY2Vzcywgb3MKIGltcG9ydCBvZS5wYXRoCiAKQEAgLTI5LDcgKzMwLDcgQEAKICAgICAgICAgY2xzLmJpbmRpciA9IG9lLnBhdGguam9pbihjbHMuc3RhZ2luZywgdmFyc1siYmluZGlyX25hdGl2ZSJdKQogICAgICAgICBjbHMubGliZGlyID0gb2UucGF0aC5qb2luKGNscy5zdGFnaW5nLCB2YXJzWyJsaWJkaXJfbmF0aXZlIl0pCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CiAgICAgICAgICMgSnVzdCBmb3IgY29udmVuaWVuY2UKICAgICAgICAgc2VsZi5zdGFnaW5nID0gdHlwZShzZWxmKS5zdGFnaW5nCiAgICAgICAgIHNlbGYuYmluZGlyID0gdHlwZShzZWxmKS5iaW5kaXIKQEAgLTg0LDMgKzg1LDY1IEBACiAgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCwgZW52PWVudikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RhdHVzLCAoOTksIDEwMCwgMTAxKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzIC0gMTAwLCBzb3J0LCAiJXMgJXMgKCVkKSBmYWlsZWQiICUgKHZlcjEsIHZlcjIsIHNvcnQpKQorCitjbGFzcyBQYWNrYWdlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAjIFZlcmlmeSB0aGF0IGEgcmVjaXBlIHdoaWNoIHNldHMgdXAgaGFyZGxpbmsgZmlsZXMgaGFzIHRob3NlIHByZXNlcnZlZCBpbnRvIHNwbGl0IHBhY2thZ2VzCisgICAgIyBBbHNvIHRlc3QgZmlsZSBzcGFyc2VuZXNzIGlzIHByZXNlcnZlZAorICAgIGRlZiB0ZXN0X3ByZXNlcnZlX3NwYXJzZV9oYXJkbGlua3Moc2VsZik6CisgICAgICAgIGJpdGJha2UoInNlbGZ0ZXN0LWhhcmRsaW5rIC1jIHBhY2thZ2UiKQorCisgICAgICAgIGRlc3QgPSBnZXRfYmJfdmFyKCdQS0dERVNUJywgJ3NlbGZ0ZXN0LWhhcmRsaW5rJykKKyAgICAgICAgYmluZGlyID0gZ2V0X2JiX3ZhcignYmluZGlyJywgJ3NlbGZ0ZXN0LWhhcmRsaW5rJykKKworICAgICAgICBkZWYgY2hlY2tmaWxlcygpOgorICAgICAgICAgICAgIyBSZWNpcGUgY3JlYXRlcyA0IGhhcmRsaW5rZWQgZmlsZXMsIHRoZXJlIGlzIGEgY29weSBpbiBwYWNrYWdlLyBhbmQgYSBjb3B5IGluIHBhY2thZ2VzLXNwbGl0LworICAgICAgICAgICAgIyBzbyBleHBlY3QgOCBpbiB0b3RhbC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChkZXN0ICsgIi9zZWxmdGVzdC1oYXJkbGluayIgKyBiaW5kaXIgKyAiL2hlbGxvMSIpLnN0X25saW5rLCA4KQorCisgICAgICAgICAgICAjIFRlc3QgYSBzcGFyc2UgZmlsZSByZW1haW5zIHNwYXJzZQorICAgICAgICAgICAgc3BhcnNlc3RhdCA9IG9zLnN0YXQoZGVzdCArICIvc2VsZnRlc3QtaGFyZGxpbmsiICsgYmluZGlyICsgIi9zcGFyc2V0ZXN0IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BhcnNlc3RhdC5zdF9ibG9ja3MsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwYXJzZXN0YXQuc3Rfc2l6ZSwgMTA0ODU3NikKKworICAgICAgICBjaGVja2ZpbGVzKCkKKworICAgICAgICAjIENsZWFuIGFuZCByZWluc3RhbGwgc28gaXRzIG5vdyBkZWZpbml0ZWx5IGZyb20gc3N0YXRlLCB0aGVuIHJldGVzdC4KKyAgICAgICAgYml0YmFrZSgic2VsZnRlc3QtaGFyZGxpbmsgLWMgY2xlYW4iKQorICAgICAgICBiaXRiYWtlKCJzZWxmdGVzdC1oYXJkbGluayAtYyBwYWNrYWdlIikKKworICAgICAgICBjaGVja2ZpbGVzKCkKKworICAgICMgVmVyaWZ5IGdkYiB0byByZWFkIHN5bWJvbHMgZnJvbSBzZXBhcmF0ZWQgZGVidWcgaGFyZGxpbmsgZmlsZSBjb3JyZWN0bHkKKyAgICBkZWYgdGVzdF9nZGJfaGFyZGxpbmtfZGVidWcoc2VsZik6CisgICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBzZWxmdGVzdC1oYXJkbGluayJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBzZWxmdGVzdC1oYXJkbGluay1kYmciXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgc2VsZnRlc3QtaGFyZGxpbmstZ2RiIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKworICAgICAgICBkZWYgZ2RidGVzdChxZW11LCBiaW5hcnkpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBDaGVjayB0aGF0IGdkYiBgYGJpbmFyeWBgIHRvIHJlYWQgc3ltYm9scyBmcm9tIHNlcGFyYXRlZCBkZWJ1ZyBmaWxlCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oImdkYnRlc3QgJXMiICUgYmluYXJ5KQorICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoJy91c3IvYmluL2dkYi5zaCAlcycgJSBiaW5hcnksIHRpbWVvdXQ9NjApCisgICAgICAgICAgICBmb3IgbCBpbiBvdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICAgICAgIyBDaGVjayBkZWJ1Z2dpbmcgc3ltYm9scyBleGlzdHMKKyAgICAgICAgICAgICAgICBpZiAnKG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kKScgaW4gbDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIk5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kLiBHREIgcmVzdWx0OlxuJXMiICUgb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgZGVidWdnaW5nIHN5bWJvbHMgd29ya3MgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgZWxpZiAiQnJlYWtwb2ludCAxLCBtYWluICgpIGF0IGhlbGxvLmM6NCIgaW4gbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkdEQiByZXN1bHQ6XG4lczogJXMiICUgb3V0cHV0KQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgZm9yIGJpbmFyeSBpbiBbJy91c3IvYmluL2hlbGxvMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9iaW4vaGVsbG8yJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYmV4ZWMvaGVsbG8zJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYmV4ZWMvaGVsbG80J106CisgICAgICAgICAgICAgICAgaWYgbm90IGdkYnRlc3QocWVtdSwgYmluYXJ5KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdHREIgJXMgZmFpbGVkJyAlIGJpbmFyeSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKaW5kZXggNDM3ZWIyYS4uMDZmOTgwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKQEAgLTQyNyw2ICs0MjcsOCBAQAogCiAgICAgQE9FVGVzdElEKDE0MTgpCiAgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfY21ha2Uoc2VsZik6CisgICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2VkYXRhIGd0aysnKQorCiAgICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQogICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCiAgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCkBAIC00MzksNyArNDQxLDcgQEAKICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL25hdml0LSR7UFZ9LnRhci5neicKICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW21kNXN1bV0nXSA9ICcyNDJmMzk4ZTk3OWE2YjhjMGYzYzgwMmI2MzQzNWI2OCcKICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9ICcxMzM1MzQ4MWQ3ZmMwMWE0ZjY0ZTM4NWRkYTQ2MGI1MTQ5NjM2NmJiYTBmZDJjYzg1YTg5YTA3NDc5MTBlOTRkJwotICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2ZyZWV0eXBlJywgJ3psaWInLCAnb3BlbnNzbCcsICdnbGliLTIuMCcsICd2aXJ0dWFsL2xpYmdsJywgJ3ZpcnR1YWwvZWdsJywgJ2d0aysnLCAnbGlicG5nJywgJ2xpYnNkbCcsICdmcmVlZ2x1dCcsICdkYnVzLWdsaWInXSkKKyAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydmcmVldHlwZScsICd6bGliJywgJ29wZW5zc2wnLCAnZ2xpYi0yLjAnLCAndmlydHVhbC9saWJnbCcsICd2aXJ0dWFsL2VnbCcsICdndGsrJywgJ2xpYnBuZycsICdsaWJzZGwnLCAnZnJlZWdsdXQnLCAnZGJ1cy1nbGliJywgJ2ZyaWJpZGknXSkKICAgICAgICAgaW5oZXJpdHMgPSBbJ2NtYWtlJywgJ3B5dGhvbi1kaXInLCAnZ2V0dGV4dCcsICdwa2djb25maWcnXQogICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CmluZGV4IGE3NThhYWYuLjRlMzViYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5CkBAIC0xNCw4ICsxNCw2IEBACiAKICAgICBpbWFnZV9pc19yZWFkeSA9IEZhbHNlCiAgICAgZGVwbG95X2Rpcl9pbWFnZSA9ICcnCi0gICAgIyBXZSBvbmx5IHdhbnQgdG8gcHJpbnQgcnVucWVtdSBzdGRvdXQvc3RkZXJyIGlmIHRoZXJlIGlzIGEgdGVzdCBjYXNlIGZhaWx1cmUKLSAgICBidWZmZXIgPSBUcnVlCiAKICAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKICAgICAgICAgc3VwZXIoUnVucWVtdVRlc3RzLCBzZWxmKS5zZXRVcExvY2FsKCkKQEAgLTE3NiwxNCArMTc0LDE3IEBACiAgICAgICAgICMgd2hlbiBxZW11IHdhcyBzaHV0ZG93biBieSB0aGUgYWJvdmUgc2h1dGRvd24gY29tbWFuZAogICAgICAgICBxZW11LnJ1bm5lci5zdG9wX3RocmVhZCgpCiAgICAgICAgIHRpbWVfdHJhY2sgPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpc19hbGl2ZSA9IHFlbXUuY2hlY2soKQotICAgICAgICAgICAgaWYgbm90IGlzX2FsaXZlOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBpZiB0aW1lX3RyYWNrID4gdGltZW91dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgICAgIHRpbWVfdHJhY2sgKz0gMQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGlzX2FsaXZlID0gcWVtdS5jaGVjaygpCisgICAgICAgICAgICAgICAgaWYgbm90IGlzX2FsaXZlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIHRpbWVfdHJhY2sgPiB0aW1lb3V0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAgICAgdGltZV90cmFjayArPSAxCisgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiB0ZXN0X3FlbXVfY2FuX3NodXRkb3duKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhzZWxmLnFlbXVib290X2NvbmYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQppbmRleCAxNDZkYWY4Li45MDZlNDYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKQEAgLTEyMiw2ICsxMjIsNyBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgbm90IGJ1aWxkYWJsZSBmb3IgcG9reS10aW55JykKIAogICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICIgbGlic3NsIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggc2VsZnRlc3QiXG4nCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQogCkBAIC0xMzUsNyArMTM2LDcgQEAKICAgICAgICAgU3VtbWFyeTogQ2hlY2sgcGFja2FnZSBmZWVkcyBmdW5jdGlvbmFsaXR5IGZvciBkbmYKICAgICAgICAgRXhwZWN0ZWQ6IDEuIENoZWNrIHRoYXQgcmVtb3RlIHBhY2thZ2UgZmVlZHMgY2FuIGJlIGFjY2Vzc2VkCiAgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICAiIiIKICAgICAgICAgaWYgZ2V0X2JiX3ZhcignRElTVFJPJykgPT0gJ3Bva3ktdGlueSc6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBub3QgYnVpbGRhYmxlIGZvciBwb2t5LXRpbnknKQpAQCAtMjMzLDcgKzIzNCw3IEBACiAgICAgICAgIEV4cGVjdGVkOiAgICAgICBUaGUgc2NyaXB0bGV0IGZhaWx1cmUgaXMgcHJvcGVybHkgcmVwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB0aGF0IGlzIGNyZWF0ZWQgYWZ0ZXIgdGhlIGVycm9yIGluIHRoZSBzY3JpcHRsZXQgaXMgbm90IHByZXNlbnQuCiAgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICAiIiIKIAogICAgICAgICBpbXBvcnQgb2UucGF0aApAQCAtMjUxLDggKzI1Miw4IEBACiAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBvc3RpbnN0LXJvb3Rmcy1mYWlsaW5nIlxuJwogICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0NMQVNTRVMgPSAiJXMiXG4nICUgY2xhc3NlcwogICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotICAgICAgICAgICAgICAgIGJiX3Jlc3VsdCA9IGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYmJfcmVzdWx0Lm91dHB1dC5maW5kKCJJbnRlbnRpb25hbGx5IGZhaWxpbmcgcG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiBbJ3Bvc3RpbnN0LXJvb3Rmcy1mYWlsaW5nJ10gdG8gZGVmZXIgdGhlbSB0byBmaXJzdCBib290IGlzIGRlcHJlY2F0ZWQuIiksIDAsCisgICAgICAgICAgICAgICAgYmJfcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGJiX3Jlc3VsdC5vdXRwdXQuZmluZCgiUG9zdGluc3RhbGwgc2NyaXB0bGV0cyBvZiBbJ3Bvc3RpbnN0LXJvb3Rmcy1mYWlsaW5nJ10gaGF2ZSBmYWlsZWQuIiksIDAsCiAgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nIGFib3V0IGEgZmFpbGVkIHNjcmlwdGxldCBub3QgZm91bmQgaW4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlKGJiX3Jlc3VsdC5vdXRwdXQpKQogCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihob3N0dGVzdGRpciwgInJvb3Rmcy1iZWZvcmUtZmFpbHVyZSIpKSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKaW5kZXggMGVkYWY0MC4uNGZhOTlhYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgRXhwZWN0ZWQ6ICAgIEltYWdlcyBjYW4gYmUgY3JlYXRlZCBmcm9tIHNpZ25lZCBwYWNrYWdlcwogICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQogICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgogICAgICAgICAiIiIKICAgICAgICAgaW1wb3J0IG9lLnBhY2thZ2VkYXRhCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKaW5kZXggN2IwMDhlNC4uMDc3ZDZlNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQpAQCAtMjYyLDYgKzI2Miw3IEBACiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogTUFDSElORSA9ICJxZW11eDg2IgogVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCitUQ0xJQkNBUFBFTkQgPSAiIgogQlVJTERfQVJDSCA9ICJ4ODZfNjQiCiBCVUlMRF9PUyA9ICJsaW51eCIKIFNES01BQ0hJTkUgPSAieDg2XzY0IgpAQCAtMjcyLDYgKzI3Myw3IEBACiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogTUFDSElORSA9ICJxZW11eDg2IgogVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgorVENMSUJDQVBQRU5EID0gIiIKIEJVSUxEX0FSQ0ggPSAiaTY4NiIKIEJVSUxEX09TID0gImxpbnV4IgogU0RLTUFDSElORSA9ICJpNjg2IgpAQCAtMzA3LDEyICszMDksMTQgQEAKIAogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBOQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0FcIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQogICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitUQ0xJQkNBUFBFTkQgPSBcIlwiCiBOQVRJVkVMU0JTVFJJTkcgPSBcIkRpc3Ryb0JcIgogIiIiKQogICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKQEAgLTM0MCwyNSArMzQ0LDI1IEBACiAKICAgICAgICAgY29uZmlnQSA9ICIiIgogVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKIE1BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgogIiIiCiAgICAgICAgIGNvbmZpZ0IgPSAiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdWFybVwiCiAiIiIKICAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQogCiAgICAgQE9FVGVzdElEKDE2NDUpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3NfbXVsdGlsaWIoc2VsZik6CisgICAgZGVmIHRlc3Rfc3N0YXRlX25hdGl2ZXNka19zYW1lc2lnc19tdWx0aWxpYihzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIGFsbGFyY2ggbXVsdGlsaWIgcGFja2FnZXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlcgotICAgICAgICBNQUNISU5FIGlzIHNldC4gQ2hlY2sgdGhpcyB1c2luZyBiaXRiYWtlIC1TLgotICAgICAgICBBbHNvLCByYXRoZXIgdGhhbiBkdXBsaWNhdGUgdGhlIHRlc3QsIGNoZWNrIG5hdGl2ZXNkayBzdGFtcHMgYXJlIHRoZSBzYW1lIGJldHdlZW4KLSAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KKyAgICAgICAgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgogICAgICAgICAiIiIKIAogICAgICAgICBjb25maWdBID0gIiIiCiBUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCiByZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgogTVVMVElMSUJTID0gXCJtdWx0aWxpYjpsaWIzMlwiCkBAIC0zNjYsNiArMzcwLDcgQEAKICIiIgogICAgICAgICBjb25maWdCID0gIiIiCiBUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK1RDTElCQ0FQUEVORCA9IFwiXCIKIE1BQ0hJTkUgPSBcInFlbXVhcm1cIgogcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKIE1VTFRJTElCUyA9IFwiXCIKQEAgLTM5MiwxMCArMzk3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIChfLCB0YXNrLCBfLCBzaGFzaCkgPSBuYW1lLnJzcGxpdCgiLiIsIDMpCiAgICAgICAgICAgICAgICAgICAgICAgICBmW29zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKHJvb3QpLCB0YXNrKV0gPSBzaGFzaAogICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy9hbGwiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi0iICsgc2VsZi50YXJnZXRfb3MpCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlczEsIGZpbGVzMikKIAogICAgICAgICBuYXRpdmVzZGtkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKGdsb2IuZ2xvYihzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8qLW5hdGl2ZXNkayotbGludXgiKVswXSkKIApAQCAtNDE0LDYgKzQxNSw3IEBACiAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCiBUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdXg4NlwiCiByZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgogTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgpAQCAtNDIzLDYgKzQyNSw3IEBACiAgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKIFRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorVENMSUJDQVBQRU5EID0gXCJcIgogTUFDSElORSA9IFwicWVtdXg4NmNvcHlcIgogcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKIE1VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKQEAgLTQ1OCw2ICs0NjEsNyBAQAogCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCitUQ0xJQkNBUFBFTkQgPSAiIgogQkJfTlVNQkVSX1RIUkVBRFMgPSAiJHtAb2UudXRpbHMuY3B1X2NvdW50KCl9IgogUEFSQUxMRUxfTUFLRSA9ICItaiAxIgogRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDEiCkBAIC00NzEsNiArNDc1LDcgQEAKICAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgogVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgorVENMSUJDQVBQRU5EID0gIiIKIEJCX05VTUJFUl9USFJFQURTID0gIiR7QG9lLnV0aWxzLmNwdV9jb3VudCgpKzF9IgogUEFSQUxMRUxfTUFLRSA9ICItaiAyIgogRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQppbmRleCBiYWYzYWY2Li4zNmVlNWU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKQEAgLTYxLDk0ICs2MSwxMDMgQEAKICAgICByZXR1cm4gd3JhcHBlcgogCiAKLWNsYXNzIFdpYyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorY2xhc3MgV2ljVGVzdENhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKICAgICAiIiJXaWMgdGVzdCBjbGFzcy4iIiIKIAogICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKLSAgICBuYXRpdmVfc3lzcm9vdCA9IE5vbmUKICAgICB3aWNlbnZfY2FjaGUgPSB7fQogCiAgICAgZGVmIHNldFVwTG9jYWwoc2VsZik6CiAgICAgICAgICIiIlRoaXMgY29kZSBpcyBleGVjdXRlZCBiZWZvcmUgZWFjaCB0ZXN0IG1ldGhvZC4iIiIKICAgICAgICAgc2VsZi5yZXN1bHRkaXIgPSBzZWxmLmJ1aWxkZGlyICsgIi93aWMtdG1wLyIKLSAgICAgICAgc3VwZXIoV2ljLCBzZWxmKS5zZXRVcExvY2FsKCkKLSAgICAgICAgaWYgbm90IHNlbGYubmF0aXZlX3N5c3Jvb3Q6Ci0gICAgICAgICAgICBXaWMubmF0aXZlX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKyAgICAgICAgc3VwZXIoV2ljVGVzdENhc2UsIHNlbGYpLnNldFVwTG9jYWwoKQogCiAgICAgICAgICMgRG8gdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gc2V0VXBDbGFzcyBhcyB0aGUgYmFzZSBzZXRVcCBkb2VzIHNvbWUKICAgICAgICAgIyBjbGVhbiB1cCB3aGljaCBjYW4gcmVzdWx0IGluIHRoZSBuYXRpdmUgdG9vbHMgYnVpbHQgZWFybGllciBpbgogICAgICAgICAjIHNldFVwQ2xhc3MgYmVpbmcgdW5hdmFpbGFibGUuCi0gICAgICAgIGlmIG5vdCBXaWMuaW1hZ2VfaXNfcmVhZHk6CisgICAgICAgIGlmIG5vdCBXaWNUZXN0Q2FzZS5pbWFnZV9pc19yZWFkeToKICAgICAgICAgICAgIGlmIGdldF9iYl92YXIoJ1VTRV9OTFMnKSA9PSAneWVzJzoKICAgICAgICAgICAgICAgICBiaXRiYWtlKCd3aWMtdG9vbHMnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd3aWMtdG9vbHMgY2Fubm90IGJlIGJ1aWx0IGR1ZSBpdHMgKGludGx0b29sfGdldHRleHQpLW5hdGl2ZSBkZXBlbmRlbmN5IGFuZCBOTFMgZGlzYWJsZScpCiAKICAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgICAgICBXaWMuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCisgICAgICAgICAgICBXaWNUZXN0Q2FzZS5pbWFnZV9pc19yZWFkeSA9IFRydWUKIAogICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAogICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgogICAgICAgICAiIiJSZW1vdmUgcmVzdWx0ZGlyIGFzIGl0IG1heSBjb250YWluIGltYWdlcy4iIiIKICAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCi0gICAgICAgIHN1cGVyKFdpYywgc2VsZikudGVhckRvd25Mb2NhbCgpCisgICAgICAgIHN1cGVyKFdpY1Rlc3RDYXNlLCBzZWxmKS50ZWFyRG93bkxvY2FsKCkKKworICAgIGRlZiBfZ2V0X2ltYWdlX2Vudl9wYXRoKHNlbGYsIGltYWdlKToKKyAgICAgICAgIiIiR2VuZXJhdGUgYW5kIG9idGFpbiB0aGUgcGF0aCB0byA8aW1hZ2U+LmVudiIiIgorICAgICAgICBpZiBpbWFnZSBub3QgaW4gV2ljVGVzdENhc2Uud2ljZW52X2NhY2hlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCclcyAtYyBkb19yb290ZnNfd2ljZW52JyAlIGltYWdlKS5zdGF0dXMpCisgICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RJUicsICdNQUNISU5FJ10sIGltYWdlKQorICAgICAgICAgICAgc3RkaXIgPSBiYl92YXJzWydTVEFHSU5HX0RJUiddCisgICAgICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCisgICAgICAgICAgICBXaWNUZXN0Q2FzZS53aWNlbnZfY2FjaGVbaW1hZ2VdID0gb3MucGF0aC5qb2luKHN0ZGlyLCBtYWNoaW5lLCAnaW1nZGF0YScpCisgICAgICAgIHJldHVybiBXaWNUZXN0Q2FzZS53aWNlbnZfY2FjaGVbaW1hZ2VdCisKK2NsYXNzIFdpYyhXaWNUZXN0Q2FzZSk6CiAKICAgICBAT0VUZXN0SUQoMTU1MikKICAgICBkZWYgdGVzdF92ZXJzaW9uKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyAtLXZlcnNpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtLXZlcnNpb24nKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIC0tdmVyc2lvbicpCiAKICAgICBAT0VUZXN0SUQoMTIwOCkKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyAtLWhlbHAgYW5kIHdpYyAtaCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0taGVscCcpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyAtaCcpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgLS1oZWxwJykKKyAgICAgICAgcnVuQ21kKCd3aWMgLWgnKQogCiAgICAgQE9FVGVzdElEKDEyMDkpCiAgICAgZGVmIHRlc3RfY3JlYXRlaGVscChzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIC0taGVscCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGNyZWF0ZSAtLWhlbHAnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGNyZWF0ZSAtLWhlbHAnKQogCiAgICAgQE9FVGVzdElEKDEyMTApCiAgICAgZGVmIHRlc3RfbGlzdGhlbHAoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGxpc3QgLS1oZWxwIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCAtLWhlbHAnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGxpc3QgLS1oZWxwJykKIAogICAgIEBPRVRlc3RJRCgxNTUzKQogICAgIGRlZiB0ZXN0X2hlbHBfY3JlYXRlKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGNyZWF0ZSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgY3JlYXRlJykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBoZWxwIGNyZWF0ZScpCiAKICAgICBAT0VUZXN0SUQoMTU1NCkKICAgICBkZWYgdGVzdF9oZWxwX2xpc3Qoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgbGlzdCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgbGlzdCcpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgaGVscCBsaXN0JykKIAogICAgIEBPRVRlc3RJRCgxMjE1KQogICAgIGRlZiB0ZXN0X2hlbHBfb3ZlcnZpZXcoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAgb3ZlcnZpZXciIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIG92ZXJ2aWV3Jykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBoZWxwIG92ZXJ2aWV3JykKIAogICAgIEBPRVRlc3RJRCgxMjE2KQogICAgIGRlZiB0ZXN0X2hlbHBfcGx1Z2lucyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBwbHVnaW5zIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBwbHVnaW5zJykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBoZWxwIHBsdWdpbnMnKQogCiAgICAgQE9FVGVzdElEKDEyMTcpCiAgICAgZGVmIHRlc3RfaGVscF9raWNrc3RhcnQoc2VsZik6CiAgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAga2lja3N0YXJ0IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBraWNrc3RhcnQnKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgnd2ljIGhlbHAga2lja3N0YXJ0JykKIAogICAgIEBPRVRlc3RJRCgxNTU1KQogICAgIGRlZiB0ZXN0X2xpc3RfaW1hZ2VzKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IGltYWdlcyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGxpc3QgaW1hZ2VzJykuc3RhdHVzKQorICAgICAgICBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpCiAKICAgICBAT0VUZXN0SUQoMTU1NikKICAgICBkZWYgdGVzdF9saXN0X3NvdXJjZV9wbHVnaW5zKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBsaXN0IHNvdXJjZS1wbHVnaW5zIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucycpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCd3aWMgbGlzdCBzb3VyY2UtcGx1Z2lucycpCiAKICAgICBAT0VUZXN0SUQoMTU1NykKICAgICBkZWYgdGVzdF9saXN0ZWRfaW1hZ2VzX2hlbHAoc2VsZik6CkBAIC0xNTYsNyArMTY1LDcgQEAKICAgICAgICAgb3V0cHV0ID0gcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5vdXRwdXQKICAgICAgICAgaW1hZ2VsaXN0ID0gW2xpbmUuc3BsaXQoKVswXSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXQogICAgICAgICBmb3IgaW1hZ2UgaW4gaW1hZ2VsaXN0OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0ICVzIGhlbHAnICUgaW1hZ2UpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZCgnd2ljIGxpc3QgJXMgaGVscCcgJSBpbWFnZSkKIAogICAgIEBPRVRlc3RJRCgxMjEzKQogICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3N1YmNvbW1hbmQoc2VsZik6CkBAIC0xNzIsNyArMTgxLDcgQEAKICAgICBkZWYgdGVzdF9idWlsZF9pbWFnZV9uYW1lKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCIiIgogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDExNTcpCkBAIC0xODAsNyArMTg5LDcgQEAKICAgICBkZWYgdGVzdF9ncHRfaW1hZ2Uoc2VsZik6CiAgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgY29yZS1pbWFnZS1taW5pbWFsIHdpdGggZ3B0IHRhYmxlIGFuZCBVVUlEIGJvb3QiIiIKICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1ncHQgLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEzNDYpCkBAIC0xOTQsNyArMjAzLDcgQEAKICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIGNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMnKQogICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBta2h5YnJpZGlzbyAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouZGlyZWN0IikpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouaXNvIikpKQogCkBAIC0yMDMsNyArMjEyLDcgQEAKICAgICBkZWYgdGVzdF9xZW11eDg2X2RpcmVjdGRpc2soc2VsZik6CiAgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgcWVtdXgtODYtZGlyZWN0ZGlzayBpbWFnZSIiIgogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBxZW11eDg2LWRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInFlbXV4ODYtZGlyZWN0ZGlzay0qZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEzNTApCkBAIC0yMTEsNyArMjIwLDcgQEAKICAgICBkZWYgdGVzdF9ta2VmaWRpc2soc2VsZik6CiAgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgbWtlZmlkaXNrIGltYWdlIiIiCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1rZWZpZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTM4NSkKQEAgLTIyMyw3ICsyMzIsNyBAQAogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQogICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTU2MCkKQEAgLTIzNSw3ICsyNDQsNyBAQAogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQogICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzeXN0ZW1kLWJvb3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzeXN0ZW1kLWJvb3RkaXNrLSpkaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTU2MSkKQEAgLTI0NCw3ICsyNTMsNyBAQAogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgogICAgICAgICBraW1ndHlwZSA9IGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lNQUdFX0JPT1RfRklMRVMgPSAiJXMiXG4nICUga2ltZ3R5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNTYyKQpAQCAtMjU4LDcgKzI2Nyw3IEBACiAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCiAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCiAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYigiZGlyZWN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjEyKQpAQCAtMjcxLDM3ICsyODAsMzYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpKQogICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KICAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi1iICUoc3RhZ2luZ19kYXRhZGlyKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi1rICUoZGVwbG95X2Rpcl9pbWFnZSlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICItbiAlKHJlY2lwZV9zeXNyb290X25hdGl2ZSlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICItciAlKGltYWdlX3Jvb3RmcylzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItbyAlKHJlc3VsdGRpcilzIiAlIGJidmFycykuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgIi1vICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTI2NCkKICAgICBkZWYgdGVzdF9jb21wcmVzc19nemlwKHNlbGYpOgogICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggZ3ppcCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGd6aXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGd6aXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuZ3oiKSkpCiAKICAgICBAT0VUZXN0SUQoMTI2NSkKICAgICBkZWYgdGVzdF9jb21wcmVzc19iemlwMihzZWxmKToKICAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIGJ6aXAyIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgYnppcDIgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGJ6aXAyIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0LmJ6MiIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjY2KQogICAgIGRlZiB0ZXN0X2NvbXByZXNzX3h6KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggeHoiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNvbXByZXNzLXdpdGg9eHogLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tY29tcHJlc3Mtd2l0aD14eiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC54eiIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjY3KQpAQCAtMzE1LDYzICszMjMsNjIgQEAKICAgICBAT0VUZXN0SUQoMTU1OCkKICAgICBkZWYgdGVzdF9kZWJ1Z19zaG9ydChzZWxmKToKICAgICAgICAgIiIiVGVzdCAtRCBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCiAKICAgICBAT0VUZXN0SUQoMTY1OCkKICAgICBkZWYgdGVzdF9kZWJ1Z19sb25nKHNlbGYpOgogICAgICAgICAiIiJUZXN0IC0tZGVidWcgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1kZWJ1ZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1kZWJ1ZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNTYzKQogICAgIGRlZiB0ZXN0X3NraXBfYnVpbGRfY2hlY2tfc2hvcnQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgLXMgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1zIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE2NzEpCiAgICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19sb25nKHNlbGYpOgogICAgICAgICAiIiJUZXN0IC0tc2tpcC1idWlsZC1jaGVjayBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXNraXAtYnVpbGQtY2hlY2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE1NjQpCiAgICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX3Nob3J0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IC1mIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1mIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxNjU2KQogICAgIGRlZiB0ZXN0X2J1aWxkX3Jvb3Rmc19sb25nKHNlbGYpOgogICAgICAgICAiIiJUZXN0IC0tYnVpbGQtcm9vdGZzIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tYnVpbGQtcm9vdGZzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKIAogICAgIEBPRVRlc3RJRCgxMjY4KQogICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQogICAgIGRlZiB0ZXN0X3Jvb3Rmc19pbmRpcmVjdF9yZWNpcGVzKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHVzYWdlIG9mIHJvb3RmcyBwbHVnaW4gd2l0aCByb290ZnMgcmVjaXBlcyIiIgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczE9Y29yZS1pbWFnZS1taW5pbWFsICIKICAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3RmcyByb290ZnMyPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyouZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEyNjkpCkBAIC0zODUsMTQgKzM5MiwxMyBAQAogICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KICAgICAgICAgYmJ2YXJzWyd3a3MnXSA9ICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyIKICAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSAlKHdrcylzICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICUod2tzKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tYm9vdGltZy1kaXI9JShzdGFnaW5nX2RhdGFkaXIpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiLS1rZXJuZWwtZGlyPSUoZGVwbG95X2Rpcl9pbWFnZSlzICIKICAgICAgICAgICAgICAgICAgICAgICAgICItLW5hdGl2ZS1zeXNyb290PSUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMxPSUoaW1hZ2Vfcm9vdGZzKXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMyPSUoaW1hZ2Vfcm9vdGZzKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJSh3a3Mpcy0qLmRpcmVjdCIgJSBiYnZhcnMpKSkKIAogICAgIEBPRVRlc3RJRCgxNjYxKQpAQCAtNDExLDggKzQxNyw4IEBACiBwYXJ0IC91c3IgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLXJvb3Rmcy1kaXIgJXMvdXNyCiBwYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCBiaW4vIC0tcm9vdGZzLWRpciAlcy91c3IiIiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocm9vdGZzX2Rpciwgcm9vdGZzX2RpcikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpCiAKICAgICAgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKICAgICAgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSAndGVtcCcpCkBAIC00MjIsNyArNDI4LDYgQEAKIAogICAgICAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgYiBwIDI+L2Rldi9udWxsIiAlIHdpY2ltZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKIAogICAgICAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKICAgICAgICAgICAgICMgQllUO1xuCkBAIC00MzgsOCArNDQzLDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihwYXJ0bG4pKQogICAgICAgICAgICAgICAgIHN0YXJ0ID0gaW50KHBhcnRsblsxXS5yc3RyaXAoIkIiKSkgLyA1MTIKICAgICAgICAgICAgICAgICBsZW5ndGggPSBpbnQocGFydGxuWzNdLnJzdHJpcCgiQiIpKSAvIDUxMgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJkZCBpZj0lcyBvZj0lcyBza2lwPSVkIGNvdW50PSVkIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpY2ltZywgcGFydF9maWxlLCBzdGFydCwgbGVuZ3RoKSkuc3RhdHVzKQorICAgICAgICAgICAgICAgIHJ1bkNtZCgiZGQgaWY9JXMgb2Y9JXMgc2tpcD0lZCBjb3VudD0lZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWNpbWcsIHBhcnRfZmlsZSwgc3RhcnQsIGxlbmd0aCkpCiAKICAgICAgICAgICAgIGRlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKICAgICAgICAgICAgICAgICAiIiIKQEAgLTQ2Myw3ICs0NjgsNiBAQAogICAgICAgICAgICAgIyAvdXNyLgogICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDEiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKICAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZXRjIiwgZmlsZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKQEAgLTQ3Miw3ICs0NzYsNiBAQAogICAgICAgICAgICAgIyBkaXJlY3Rvcmllcy4KICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQyIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCiAgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCkBAIC00ODIsNyArNDg1LDYgQEAKICAgICAgICAgICAgICMgZGlyZWN0b3J5LCBidXQgbm90IHRoZSBmaWxlcyBpbnNpZGUgaXQuCiAgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQogICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJldGMiLCBmaWxlcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQpAQCAtNDkwLDcgKzQ5Miw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiaW4iLCBmaWxlcykKICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAgYmluJyAlcyAyPi9kZXYvbnVsbCIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQogICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuIiwgZmlsZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuLiIsIGZpbGVzKQpAQCAtNTIyLDEyICs1MjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCiAgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKIAorY2xhc3MgV2ljMihXaWNUZXN0Q2FzZSk6CisKICAgICBAT0VUZXN0SUQoMTQ5NikKICAgICBkZWYgdGVzdF9ibWFwX3Nob3J0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSAtbSBvcHRpb24iIiIKICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1tIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKIApAQCAtNTM1LDIxICs1MzcsMTAgQEAKICAgICBkZWYgdGVzdF9ibWFwX2xvbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC0tYm1hcCBvcHRpb24iIiIKICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC0tYm1hcCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoY21kKS5zdGF0dXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0LmJtYXAiKSkpCiAKLSAgICBkZWYgX2dldF9pbWFnZV9lbnZfcGF0aChzZWxmLCBpbWFnZSk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGFuZCBvYnRhaW4gdGhlIHBhdGggdG8gPGltYWdlPi5lbnYiIiIKLSAgICAgICAgaWYgaW1hZ2Ugbm90IGluIHNlbGYud2ljZW52X2NhY2hlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCclcyAtYyBkb19yb290ZnNfd2ljZW52JyAlIGltYWdlKS5zdGF0dXMpCi0gICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RJUicsICdNQUNISU5FJ10sIGltYWdlKQotICAgICAgICAgICAgc3RkaXIgPSBiYl92YXJzWydTVEFHSU5HX0RJUiddCi0gICAgICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCi0gICAgICAgICAgICBzZWxmLndpY2Vudl9jYWNoZVtpbWFnZV0gPSBvcy5wYXRoLmpvaW4oc3RkaXIsIG1hY2hpbmUsICdpbWdkYXRhJykKLSAgICAgICAgcmV0dXJuIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXQotCiAgICAgQE9FVGVzdElEKDEzNDcpCiAgICAgZGVmIHRlc3RfaW1hZ2VfZW52KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgPGltYWdlPi5lbnYgZmlsZXMuIiIiCkBAIC01ODAsMTAgKzU3MSwxMCBAQAogICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCiAgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgIndpYy10b29scyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzIC12ICVzIC1uICVzIC1vICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBuYXRpdmVfc3lzcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ZGlyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDE2NjUpCkBAIC01OTMsMTMgKzU4NCwxMyBAQAogICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCiAgICAgICAgIG5hdGl2ZV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgIndpYy10b29scyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tdmFycyAlcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW5hdGl2ZS1zeXNyb290ICVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBuYXRpdmVfc3lzcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ZGlyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQogCiAgICAgQE9FVGVzdElEKDEzNTEpCkBAIC02NzksMTkgKzY3MCwyMSBAQAogICAgICAgICBUZXN0IGNyZWF0aW9uIG9mIGEgc2ltcGxlIGltYWdlIHdpdGggcGFydGl0aW9uIHNpemUgY29udHJvbGxlZCB0aHJvdWdoCiAgICAgICAgIC0tZml4ZWQtc2l6ZSBmbGFnCiAgICAgICAgICIiIgotICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDIwMCkKKyAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYzIuX21ha2VfZml4ZWRfc2l6ZV93a3MoMjAwKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpcikpCiAgICAgICAgIG9zLnJlbW92ZSh3a3NwYXRoKQogICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4od2ljb3V0KSkKIAogICAgICAgICB3aWNpbWcgPSB3aWNvdXRbMF0KIAorICAgICAgICBuYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQorCiAgICAgICAgICMgdmVyaWZ5IHBhcnRpdGlvbiBzaXplIHdpdGggd2ljCiAgICAgICAgIHJlcyA9IHJ1bkNtZCgicGFydGVkIC1tICVzIHVuaXQgbWliIHAgMj4vZGV2L251bGwiICUgd2ljaW1nLAotICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9c2VsZi5uYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290PW5hdGl2ZV9zeXNyb290KQogCiAgICAgICAgICMgcGFyc2UgcGFydGVkIG91dHB1dCB3aGljaCBsb29rcyBsaWtlIHRoaXM6CiAgICAgICAgICMgQllUO1xuCkBAIC03MDksNyArNzAyLDcgQEAKICAgICAgICAgLS1maXhlZC1zaXplIGZsYWcuIFRoZSBzaXplIG9mIHBhcnRpdGlvbiBpcyBpbnRlbnRpb25hbGx5IHNldCB0byAxTWlCCiAgICAgICAgIGluIG9yZGVyIHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gd2ljLgogICAgICAgICAiIiIKLSAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYy5fbWFrZV9maXhlZF9zaXplX3drcygxKQorICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljMi5fbWFrZV9maXhlZF9zaXplX3drcygxKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NwYXRoLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQpAQCAtNzQ2LDcgKzczOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jvb3Rsb2FkZXIgLS10aW1lb3V0PTAgLS1hcHBlbmQ9ImNvbnNvbGU9dHR5UzAsMTE1MjAwbjgiXG4nXSkKICAgICAgICAgICAgIHdrcy5mbHVzaCgpCiAgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KICAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKQEAgLTc2MywxMCArNzU2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHl2ZmF0ICAgLS1mc3R5cGUgdmZhdCAgIC0tc2l6ZSAxTVxuJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eW1zZG9zICAtLWZzdHlwZSBtc2RvcyAgLS1zaXplIDFNXG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5ZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAtLXNpemUgMU1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlidHJmcyAgLS1mc3R5cGUgYnRyZnMgIC0tc2l6ZSAxMDBNXG4nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWJ0cmZzICAtLWZzdHlwZSBidHJmcyAgLS1zaXplIDE1ME1cbiddKQogICAgICAgICAgICAgd2tzLmZsdXNoKCkKICAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKGNtZCkKICAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQogICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQpAQCAtNzc5LDcgKzc3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3ZlcmhlYWQtZmFjdG9yIDEuMiAtLXNpemUgMTAwa1xuJ10pCiAgICAgICAgICAgICB3a3MuZmx1c2goKQogICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlICh3a3MubmFtZSwgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZChjbWQpCiAgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KICAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKQEAgLTc5MSw3ICs3ODQsNyBAQAogICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lICVzIC1vICVzIiAlIChpbWcsIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBjb25maWcgPSAnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyoiJyAlIGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCBpbWcpCiAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBydW5DbWQoY21kKQogICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKIApAQCAtODI3LDkgKzgyMCw5IEBACiAgICAgQE9FVGVzdElEKDE4NTcpCiAgICAgZGVmIHRlc3Rfd2ljX2xzKHNlbGYpOgogICAgICAgICAiIiJUZXN0IGxpc3RpbmcgaW1hZ2UgY29udGVudCB1c2luZyAnd2ljIGxzJyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCiAKQEAgLTgzNywyMCArODMwLDE4IEBACiAKICAgICAgICAgIyBsaXN0IHBhcnRpdGlvbnMKICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXMgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCiAKICAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCiAKICAgICBAT0VUZXN0SUQoMTg1NikKICAgICBkZWYgdGVzdF93aWNfY3Aoc2VsZik6CiAgICAgICAgICIiIlRlc3QgY29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHRoZSB3aWMgaW1hZ2UuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKQogICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKIApAQCAtODU4LDE5ICs4NDksMTYgQEAKIAogICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKIAogICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndpYy1jcCIpIGFzIHRlc3RmaWxlOgogICAgICAgICAgICAgdGVzdGZpbGUud3JpdGUoInRlc3QiKQogCiAgICAgICAgICAgICAjIGNvcHkgZmlsZSB0byB0aGUgcGFydGl0aW9uCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBjcCAlcyAlczoxLyAtbiAlcyIgJSAodGVzdGZpbGUubmFtZSwgaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgICAgIHJ1bkNtZCgid2ljIGNwICVzICVzOjEvIC1uICVzIiAlICh0ZXN0ZmlsZS5uYW1lLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQogCiAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKSBpbiByZXN1bHQub3V0cHV0KQogCkBAIC04ODEsMjEgKzg2OSwxOSBAQAogICAgICAgICAgICAgY29weSh0ZXN0ZmlsZS5uYW1lLCB0ZXN0ZGlyKQogCiAgICAgICAgICAgICAjIGNvcHkgZGlyZWN0b3J5IHRvIHRoZSBwYXJ0aXRpb24KLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGNwICVzICVzOjEvIC1uICVzIiAlICh0ZXN0ZGlyLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3AgJXMgJXM6MS8gLW4gJXMiICUgKHRlc3RkaXIsIGltYWdlc1swXSwgc3lzcm9vdCkpCiAKICAgICAgICAgICAgICMgY2hlY2sgaWYgZGlyZWN0b3J5IGlzIHRoZXJlCiAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguYmFzZW5hbWUodGVzdGRpcikgaW4gcmVzdWx0Lm91dHB1dCkKIAogICAgIEBPRVRlc3RJRCgxODU4KQogICAgIGRlZiB0ZXN0X3dpY19ybShzZWxmKToKICAgICAgICAgIiIiVGVzdCByZW1vdmluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgZnJvbSB0aGUgdGhlIHdpYyBpbWFnZS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKKyAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKi5kaXJlY3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQogCkBAIC05MDMsMjEgKzg4OSwxNyBAQAogCiAgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRJbignXG5CWklNQUdFICAgICAgICAnLCByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEluKCdcbkVGSSAgICAgICAgICA8RElSPiAgICAgJywgcmVzdWx0Lm91dHB1dCkKIAogICAgICAgICAjIHJlbW92ZSBmaWxlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjEvYnppbWFnZSAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBydW5DbWQoIndpYyBybSAlczoxL2J6aW1hZ2UgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCiAKICAgICAgICAgIyByZW1vdmUgZGlyZWN0b3J5Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIHJtICVzOjEvZWZpIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHJ1bkNtZCgid2ljIHJtICVzOjEvZWZpIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQogCiAgICAgICAgICMgY2hlY2sgaWYgdGhleSdyZSByZW1vdmVkCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXG5CWklNQUdFICAgICAgICAnLCByZXN1bHQub3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdcbkVGSSAgICAgICAgICA8RElSPiAgICAgJywgcmVzdWx0Lm91dHB1dCkKIApAQCAtOTM2LDcgKzkxOCw3IEBACiAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5YnRyZnMgIC0tZnN0eXBlIGJ0cmZzICAtLXNpemUgMTAwTSAtLW1rZnMtZXh0cmFvcHRzICItLW1peGVkIC1LIlxuJ10pCiAgICAgICAgICAgICB3a3MuZmx1c2goKQogICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICBydW5DbWQoY21kKQogICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCiAgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCkBAIC05NjYsNyArOTQ4LDcgQEAKIAogICAgICAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQogICAgICAgICAgICAgY21kID0gIndpYyB3cml0ZSAtbiAlcyAtLWV4cGFuZCAxOjAgJXMgJXMiICUgKHN5c3Jvb3QsIGltYWdlX3BhdGgsIG5ld19pbWFnZV9wYXRoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICBydW5DbWQoY21kKQogCiAgICAgICAgICAgICAjIGNoZWNrIGlmIHBhcnRpdGlvbnMgYXJlIGV4cGFuZGVkCiAgICAgICAgICAgICBvcmlnID0gcnVuQ21kKCJ3aWMgbHMgJXMgLW4gJXMiICUgKGltYWdlX3BhdGgsIHN5c3Jvb3QpKQpAQCAtOTk2LDkgKzk3OCw5IEBACiAKICAgICBkZWYgdGVzdF93aWNfbHNfZXh0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IGxpc3RpbmcgY29udGVudCBvZiB0aGUgZXh0IHBhcnRpdGlvbiB1c2luZyAnd2ljIGxzJyIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikKICAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCiAKQEAgLTEwMDYsMTUgKzk4OCwxNCBAQAogCiAgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgc2Vjb25kIGV4dDQgcGFydGl0aW9uCiAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoWydiaW4nLCAnaG9tZScsICdwcm9jJywgJ3VzcicsICd2YXInLCAnZGV2JywgJ2xpYicsICdzYmluJ10pLmlzc3Vic2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkpKQogCiAgICAgZGVmIHRlc3Rfd2ljX2NwX2V4dChzZWxmKToKICAgICAgICAgIiIiVGVzdCBjb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgZXh0IHBhcnRpdGlvbi4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQogCkBAIC0xMDIyLDcgKzEwMDMsNiBAQAogCiAgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZXh0NCBwYXJ0aXRpb24KICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgZGlycyA9IHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChbJ2JpbicsICdob21lJywgJ3Byb2MnLCAndXNyJywgJ3ZhcicsICdkZXYnLCAnbGliJywgJ3NiaW4nXSkuaXNzdWJzZXQoZGlycykpCiAKQEAgLTEwMzAsMjAgKzEwMTAsMTggQEAKICAgICAgICAgICAgIHRlc3RmaWxlLndyaXRlKCJ0ZXN0IikKIAogICAgICAgICAgICAgIyBjb3B5IGZpbGUgdG8gdGhlIHBhcnRpdGlvbgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgY3AgJXMgJXM6Mi8gLW4gJXMiICUgKHRlc3RmaWxlLm5hbWUsIGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcCAlcyAlczoyLyAtbiAlcyIgJSAodGVzdGZpbGUubmFtZSwgaW1hZ2VzWzBdLCBzeXNyb290KSkKIAogICAgICAgICAgICAgIyBjaGVjayBpZiBmaWxlIGlzIHRoZXJlCiAgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgICAgIG5ld2RpcnMgPSBzZXQobGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2RpcnMuZGlmZmVyZW5jZShkaXJzKSwgc2V0KFtvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpXSkpCiAKICAgICBkZWYgdGVzdF93aWNfcm1fZXh0KHNlbGYpOgogICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGZyb20gdGhlIGV4dCBwYXJ0aXRpb24uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIG1rZWZpZGlzayAiCisgICAgICAgIHJ1bkNtZCgid2ljIGNyZWF0ZSBta2VmaWRpc2sgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpCiAgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAibWtlZmlkaXNrLSouZGlyZWN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKIApAQCAtMTA1MSwxNCArMTAyOSwxMSBAQAogCiAgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgL2V0YyBkaXJlY3Rvcnkgb24gZXh0NCBwYXJ0aXRpb24KICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi9ldGMvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZnN0YWInIGluIFtsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZV0pCiAKICAgICAgICAgIyByZW1vdmUgZmlsZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBybSAlczoyL2V0Yy9mc3RhYiAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBydW5DbWQoIndpYyBybSAlczoyL2V0Yy9mc3RhYiAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKIAogICAgICAgICAjIGNoZWNrIGlmIGl0J3MgcmVtb3ZlZAogICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyL2V0Yy8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgbm90IGluIFtsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZV0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CmluZGV4IDlhNTY4ODguLmM1MjEyOTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5CkBAIC0xMSw2ICsxMSw3IEBACiBmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCiAKIGltcG9ydCBvZXFhCitpbXBvcnQgb2UKIAogZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dCwgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFQcmVSdW4sIE9FUUFUZXN0Tm90Rm91bmQKQEAgLTI1LDE0ICsyNiwxNCBAQAogICAgICAgICBzZWxmLmN1c3RvbW1hY2hpbmUgPSBOb25lCiAgICAgICAgIHNlbGYuY29uZmlnX3BhdGhzID0gY29uZmlnX3BhdGhzCiAKLSAgICBkZWYgcnVuVGVzdHMoc2VsZiwgbWFjaGluZT1Ob25lLCBza2lwcz1bXSk6CisgICAgZGVmIHJ1blRlc3RzKHNlbGYsIHByb2Nlc3Nlcz1Ob25lLCBtYWNoaW5lPU5vbmUsIHNraXBzPVtdKToKICAgICAgICAgaWYgbWFjaGluZToKICAgICAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IG1hY2hpbmUKICAgICAgICAgICAgIGlmIG1hY2hpbmUgPT0gJ3JhbmRvbSc6CiAgICAgICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gY2hvaWNlKHNlbGYubWFjaGluZXMpCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSdW4gdGVzdHMgd2l0aCBjdXN0b20gTUFDSElORSBzZXQgdG86ICVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lKQotICAgICAgICByZXR1cm4gc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5ydW5UZXN0cyhza2lwcykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q29udGV4dCwgc2VsZikucnVuVGVzdHMocHJvY2Vzc2VzLCBza2lwcykKIAogICAgIGRlZiBsaXN0VGVzdHMoc2VsZiwgZGlzcGxheV90eXBlLCBtYWNoaW5lPU5vbmUpOgogICAgICAgICByZXR1cm4gc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5saXN0VGVzdHMoZGlzcGxheV90eXBlKQpAQCAtNjgsNiArNjksOSBAQAogICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgaGVscD0nTGlzdCBhbGwgYXZhaWxhYmxlIHRlc3RzLicpCiAKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWonLCAnLS1udW0tcHJvY2Vzc2VzJywgZGVzdD0ncHJvY2Vzc2VzJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgdHlwZT1pbnQsIGhlbHA9Im51bWJlciBvZiBwcm9jZXNzZXMgdG8gZXhlY3V0ZSBpbiBwYXJhbGxlbCB3aXRoIikKKwogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW1hY2hpbmUnLCByZXF1aXJlZD1GYWxzZSwgY2hvaWNlcz1bJ3JhbmRvbScsICdhbGwnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSdW4gdGVzdHMgb24gZGlmZmVyZW50IG1hY2hpbmVzIChyYW5kb20vYWxsKS4nKQogICAgICAgICAKQEAgLTk2LDcgKzEwMCw2IEBACiAgICAgICAgIHJldHVybiBjYXNlc19wYXRocwogCiAgICAgZGVmIF9wcm9jZXNzX2FyZ3Moc2VsZiwgbG9nZ2VyLCBhcmdzKToKLQogICAgICAgICBhcmdzLnRlc3Rfc3RhcnRfdGltZSA9IHRpbWUuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpCiAgICAgICAgIGFyZ3MudGVzdF9kYXRhX2ZpbGUgPSBOb25lCiAgICAgICAgIGFyZ3MuQ0FTRVNfUEFUSFMgPSBOb25lCkBAIC0xNDMsNiArMTQ2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10pCiAKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydza2lwcyddID0gYXJncy5za2lwcworICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3Byb2Nlc3NlcyddID0gYXJncy5wcm9jZXNzZXMKIAogICAgIGRlZiBfcHJlX3J1bihzZWxmKToKICAgICAgICAgZGVmIF9jaGVja19yZXF1aXJlZF9lbnZfdmFyaWFibGVzKHZhcnMpOgpAQCAtMTU4LDcgKzE2Miw3IEBACiAgICAgICAgICAgICAgICAgb3MuY2hkaXIoYnVpbGRkaXIpCiAKICAgICAgICAgICAgIGlmIG5vdCAibWV0YS1zZWxmdGVzdCIgaW4gc2VsZi50Yy50ZFsiQkJMQVlFUlMiXToKLSAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci53YXJuKCJtZXRhLXNlbGZ0ZXN0IGxheWVyIG5vdCBmb3VuZCBpbiBCQkxBWUVSUywgYWRkaW5nIGl0IikKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci53YXJuaW5nKCJtZXRhLXNlbGZ0ZXN0IGxheWVyIG5vdCBmb3VuZCBpbiBCQkxBWUVSUywgYWRkaW5nIGl0IikKICAgICAgICAgICAgICAgICBtZXRhX3NlbGZ0ZXN0ZGlyID0gb3MucGF0aC5qb2luKAogICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLnRkWyJCQkxBWUVSU19GRVRDSF9ESVIiXSwgJ21ldGEtc2VsZnRlc3QnKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWV0YV9zZWxmdGVzdGRpcik6CkBAIC0xODksNiArMTkzLDEwIEBACiAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiWW91IGhhdmUgYnVpbGRoaXN0b3J5IGVuYWJsZWQgYWxyZWFkeSBhbmQgdGhpcyBpc24ndCByZWNvbW1lbmRlZCBmb3Igc2VsZnRlc3QsIHBsZWFzZSBkaXNhYmxlIGl0IGZpcnN0LiIpCiAgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCiAKKyAgICAgICAgaWYgInJtX3dvcmsuYmJjbGFzcyIgaW4gc2VsZi50Yy50ZFsiQkJJTkNMVURFRCJdOgorICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIllvdSBoYXZlIHJtX3dvcmsgZW5hYmxlZCB3aGljaCBpc24ndCByZWNvbW1lbmRlZCB3aGlsZSBydW5uaW5nIG9lLXNlbGZ0ZXN0LiBQbGVhc2UgZGlzYWJsZSBpdCBiZWZvcmUgY29udGludWluZy4iKQorICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCiAgICAgICAgIGlmICJQUlNFUlZfSE9TVCIgaW4gc2VsZi50Yy50ZDoKICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmVycm9yKCJQbGVhc2UgdW5zZXQgUFJTRVJWX0hPU1QgaW4gb3JkZXIgdG8gcnVuIG9lLXNlbGZ0ZXN0IikKICAgICAgICAgICAgIHJhaXNlIE9FUUFQcmVSdW4KQEAgLTE5OSw4ICsyMDcsOCBAQAogCiAgICAgICAgIF9hZGRfbGF5ZXJfbGlicygpCiAKLSAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUnVubmluZyBiaXRiYWtlIC1wIikKLSAgICAgICAgcnVuQ21kKCJiaXRiYWtlIC1wIikKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUnVubmluZyBiaXRiYWtlIC1lIHRvIHRlc3QgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQvcGFyc2FibGUiKQorICAgICAgICBydW5DbWQoImJpdGJha2UgLWUiKQogCiAgICAgZGVmIGdldF9qc29uX3Jlc3VsdF9kaXIoc2VsZiwgYXJncyk6CiAgICAgICAgIGpzb25fcmVzdWx0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRjLnRkWyJMT0dfRElSIl0sICdvZXFhJykKQEAgLTIxNiw3ICsyMjQsNyBAQAogICAgICAgICBjb25maWd1cmF0aW9uID0geydURVNUX1RZUEUnOiAnb2VzZWxmdGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAnU1RBUlRUSU1FJzogYXJncy50ZXN0X3N0YXJ0X3RpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAnTUFDSElORSc6IHNlbGYudGMudGRbIk1BQ0hJTkUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdIT1NUX0RJU1RSTyc6ICgnLScuam9pbihwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSkpLnJlcGxhY2UoJyAnLCAnLScpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0hPU1RfRElTVFJPJzogb2UubHNiLmRpc3Ryb19pZGVudGlmaWVyKCkucmVwbGFjZSgnICcsICctJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAnSE9TVF9OQU1FJzogbWV0YWRhdGFbJ2hvc3RuYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAnTEFZRVJTJzogbWV0YWRhdGFbJ2xheWVycyddfQogICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2h0dHBzZXJ2ZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQppbmRleCA3ZDEyMzMxLi5hNDhkNDk5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weQpAQCAtMSwxMyArMSwxMyBAQAogaW1wb3J0IGh0dHAuc2VydmVyCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgb3MKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCBzaWduYWwKIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdNaXhJbgogCiBjbGFzcyBIVFRQU2VydmVyKFRocmVhZGluZ01peEluLCBodHRwLnNlcnZlci5IVFRQU2VydmVyKToKIAotICAgIGRlZiBzZXJ2ZXJfc3RhcnQoc2VsZiwgcm9vdF9kaXIpOgotICAgICAgICBpbXBvcnQgc2lnbmFsCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNpZ25hbC5TSUdfREZMKQorICAgIGRlZiBzZXJ2ZXJfc3RhcnQoc2VsZiwgcm9vdF9kaXIsIGxvZ2dlcik6CiAgICAgICAgIG9zLmNoZGlyKHJvb3RfZGlyKQogICAgICAgICBzZWxmLnNlcnZlX2ZvcmV2ZXIoKQogCkBAIC0xOCwxOSArMTgsNDAgQEAKIAogY2xhc3MgSFRUUFNlcnZpY2Uob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBob3N0PScnLCBsb2dnZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYucm9vdF9kaXIgPSByb290X2RpcgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgIHNlbGYucG9ydCA9IDAKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAogICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucm9vdF9kaXIpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiTm90IHN0YXJ0aW5nIEhUVFBTZXJ2aWNlIGZvciBkaXJlY3RvcnkgJXMgd2hpY2ggZG9lc24ndCBleGlzdCIgJSAoc2VsZi5yb290X2RpcikpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBzZWxmLnNlcnZlciA9IEhUVFBTZXJ2ZXIoKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgSFRUUFJlcXVlc3RIYW5kbGVyKQogICAgICAgICBpZiBzZWxmLnBvcnQgPT0gMDoKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHNlbGYuc2VydmVyLnNlcnZlcl9wb3J0Ci0gICAgICAgIHNlbGYucHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNlcnZlci5zZXJ2ZXJfc3RhcnQsIGFyZ3M9W3NlbGYucm9vdF9kaXJdKQorICAgICAgICBzZWxmLnByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5zZXJ2ZXIuc2VydmVyX3N0YXJ0LCBhcmdzPVtzZWxmLnJvb3RfZGlyLCBzZWxmLmxvZ2dlcl0pCisKKyAgICAgICAgIyBUaGUgc2lnbmFsIGhhbmRsZXIgZnJvbSB0ZXN0aW1hZ2UuYmJjbGFzcyBjYW4gY2F1c2UgZGVhZGxvY2tzIGhlcmUKKyAgICAgICAgIyBpZiB0aGUgSFRUUFNlcnZlciBpcyB0ZXJtaW5hdGVkIGJlZm9yZSBpdCBjYW4gcmVzdG9yZSB0aGUgc3RhbmRhcmQgCisgICAgICAgICNzaWduYWwgYmVoYXZpb3VyCisgICAgICAgIG9yaWcgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdURVJNKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBzaWduYWwuU0lHX0RGTCkKICAgICAgICAgc2VsZi5wcm9jZXNzLnN0YXJ0KCkKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgb3JpZykKKworICAgICAgICBpZiBzZWxmLmxvZ2dlcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0YXJ0ZWQgSFRUUFNlcnZpY2Ugb24gJXM6JXMiICUgKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKKwogCiAgICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHNlbGYucHJvY2Vzcy50ZXJtaW5hdGUoKQotICAgICAgICBzZWxmLnByb2Nlc3Muam9pbigpCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgInNlcnZlciIpOgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAicHJvY2VzcyIpOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxmLnByb2Nlc3Muam9pbigpCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RvcHBlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3BhY2thZ2VfbWFuYWdlci5weQppbmRleCBhZmQ1YjhlLi4xNDk1Zjg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcGFja2FnZV9tYW5hZ2VyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTIyLDEzICsyMiwxNSBAQAogICAgICAgICBwbSA9IE9wa2dQTShkLAogICAgICAgICAgICAgICAgICAgICByb290X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJJUEtHQ09ORl9UQVJHRVQiKSwKLSAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIkFMTF9NVUxUSUxJQl9QQUNLQUdFX0FSQ0hTIikpCisgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCJBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUyIpLAorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJieWRlcGVuZGVuY2llcz1GYWxzZSkKIAogICAgIGVsaWYgcGtnX2NsYXNzID09ICJkZWIiOgogICAgICAgICBwbSA9IERwa2dQTShkLAogICAgICAgICAgICAgICAgICAgICByb290X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdQQUNLQUdFX0FSQ0hTJyksCi0gICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdEUEtHX0FSQ0gnKSkKKyAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0RQS0dfQVJDSCcpLAorICAgICAgICAgICAgICAgICAgICBmaWx0ZXJieWRlcGVuZGVuY2llcz1GYWxzZSkKIAogICAgIHBtLndyaXRlX2luZGV4KCkKICAgICBwbS51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQppbmRleCBiODdkNzc2Li5jNzQ0MmEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQpAQCAtMzUwLDEwICszNTAsMTAgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKLSAgICAgICAgc2VsZi5zdG9wX3FlbXVfc3lzdGVtKCkKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAib3JpZ2NobGRoYW5kbGVyIik6CiAgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdDSExELCBzZWxmLm9yaWdjaGxkaGFuZGxlcikKKyAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCisgICAgICAgIHNlbGYuc3RvcF9xZW11X3N5c3RlbSgpCiAgICAgICAgIGlmIHNlbGYucnVucWVtdToKICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIm1vbml0b3JwaWQiKToKICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYubW9uaXRvcnBpZCwgc2lnbmFsLlNJR0tJTEwpCkBAIC0zOTIsNyArMzkyLDcgQEAKICAgICAgICAgICAgICAgICAjIHFlbXUtc3lzdGVtIGJlaGF2ZXMgd2VsbCBhbmQgYSBTSUdURVJNIGlzIGVub3VnaAogICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5xZW11cGlkLCBzaWduYWwuU0lHVEVSTSkKICAgICAgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuKCdxZW11LXN5c3RlbSBlbmRlZCB1bmV4cGVjdGVkbHknKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ3FlbXUtc3lzdGVtIGVuZGVkIHVuZXhwZWN0ZWRseScpCiAKICAgICBkZWYgc3RvcF90aHJlYWQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYudGhyZWFkIGFuZCBzZWxmLnRocmVhZC5pc19hbGl2ZSgpOgpAQCAtNDA4LDcgKzQwOCw3IEBACiAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5ydW5xZW11OgorICAgICAgICBpZiBub3Qgc2VsZi5ydW5xZW11IG9yIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5xZW11X3BpZGZpbGUpOgogICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5xZW11X3BpZGZpbGUsICdyJykKQEAgLTQ2OSw3ICs0NjksNyBAQAogCiAgICAgZGVmIF9kdW1wX2hvc3Qoc2VsZik6CiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIuY3JlYXRlX2RpcigicWVtdSIpCi0gICAgICAgIHNlbGYubG9nZ2VyLndhcm4oIlFlbXUgZW5kZWQgdW5leHBlY3RlZGx5LCBkdW1wIGRhdGEgZnJvbSBob3N0IgorICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJRZW11IGVuZGVkIHVuZXhwZWN0ZWRseSwgZHVtcCBkYXRhIGZyb20gaG9zdCIKICAgICAgICAgICAgICAgICAiIGlzIGluICVzIiAlIHNlbGYuaG9zdF9kdW1wZXIuZHVtcF9kaXIpCiAgICAgICAgIHNlbGYuaG9zdF9kdW1wZXIuZHVtcF9ob3N0KCkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hY3BpZC9hY3BpZF8yLjAuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NjUyNmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBhY3BpZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWNwaWQuaDtlbmRsaW5lPTI0O21kNT0zMjRhOWNmMjI1YWU2OWRkYWFkMWJmOWQ5NDIxMTViNSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0MzI0MDdiNWZmNzVhZThlMDhhZmI0MzA1MmZkZTJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4MGMzYTU0YjBkM2YyZmQ0OWZkODQ1YTA1ODRjNWMyYWJlYWFiOWU5YWMwOWZjYmI2ODY4NmJiYjU3YTcxMTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWNwaWQvYWNwaWRfMi4wLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTE5ZDI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FjcGlkL2FjcGlkXzIuMC4zMC5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgYWNwaWQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2FjcGlkLmg7ZW5kbGluZT0yNDttZDU9MzI0YTljZjIyNWFlNjlkZGFhZDFiZjlkOTQyMTE1YjUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTI4MDQwYjVkMzRmOGMyNGViYWJkOTdiZWZiZjkxMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOGI3N2I2MmQzZjY0ZWJkMWMyYTNkMTZiY2NjNmQ0MzMzYjRlMjRhODZhZWFjZWJlYzI1NWZhZDIyM2NmNGNiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2FwbWQvYXBtZC9sZWdhY3kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kL2xlZ2FjeS5wYXRjaAppbmRleCA1ZGI4OTVlLi44ODcxMzExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kL2xlZ2FjeS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYXBtZC9hcG1kL2xlZ2FjeS5wYXRjaApAQCAtNyw3ICs3LDcgQEAKIGZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vYS9hcG1kL2FwbWRfMy4yLjItMTUuZGViaWFuLnRhci54egogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQogIE1ha2VmaWxlIHwgIDIgKy0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9lZWUtYWNwaS1zY3JpcHRzL2VlZS1hY3BpLXNjcmlwdHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZWVlLWFjcGktc2NyaXB0c19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYTAyYWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZWVlLWFjcGktc2NyaXB0c19naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gImVlZVBDIHNwZWNpZmljIEFDUEkgc2NyaXB0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9kZWJpYW4tZWVlcGMvIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NzdlZjgzYWI1ZjRhZjkzOGE5M2VkYjYxZjdiNzRmMmMiCi0KLVNSQ1JFViA9ICI5ZDRjZGVkY2EyNWIzOTY0MDVmODU4N2Y5YzRmYmY4MjI5ZTA0MWMyIgotUFYgPSAiMS4xLjEyK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZWJpYW4ub3JnL2dpdC9kZWJpYW4tZWVlcGMvZWVlcGMtYWNwaS1zY3JpcHRzLmdpdCBcCi0JICAgZmlsZTovL3JlbW92ZS1kb2MtY2hlY2sucGF0Y2ggXAotCSAgIGZpbGU6Ly9wb3dlcmJ0bi5wYXRjaCBcCi0JICAgZmlsZTovL3BvbGljeS1mdW5jcyAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vYWNwaS1zdXBwb3J0LyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2VlZXBjLWFjcGktc2NyaXB0cyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYWNwaS8iCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FjcGkvYWN0aW9ucy8KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FjcGkvZXZlbnRzLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWNwaS9saWIvdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9lZWVwYy1hY3BpLXNjcmlwdHMvCi0JaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hY3BpLXN1cHBvcnQvCi0JaW5zdGFsbCAtbSA2NDQgJHtTfS9ldmVudHMvKiAke0R9JHtzeXNjb25mZGlyfS9hY3BpL2V2ZW50cy8KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2xpYi91ZGV2L3J1bGVzLmQvKiAke0R9JHtzeXNjb25mZGlyfS9hY3BpL2xpYi91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAke1N9L2FjdGlvbnMvKiAke0R9JHtzeXNjb25mZGlyfS9hY3BpL2FjdGlvbnMvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vYWNwaWxpYi9mdW5jdGlvbnMuc2ggJHtEfSR7ZGF0YWRpcn0vZWVlcGMtYWNwaS1zY3JpcHRzLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BvbGljeS1mdW5jcyAke0R9JHtkYXRhZGlyfS9hY3BpLXN1cHBvcnQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGViaWFuL2VlZXBjLWFjcGktc2NyaXB0cy5kZWZhdWx0KiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotfQotCi1SREVQRU5EU18ke1BOfSA9ICJwbS11dGlscyIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG9saWN5LWZ1bmNzIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG9saWN5LWZ1bmNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDA5OWRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9lZWUtYWNwaS1zY3JpcHRzL2ZpbGVzL3BvbGljeS1mdW5jcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotQ2hlY2tQb2xpY3koKSB7Ci0JaWYgcGlkb2YgZ25vbWUtcG93ZXItbWFuYWdlciBrcG93ZXJzYXZlID4gL2Rldi9udWxsIHx8Ci0JICAgKHBpZG9mIGRjb3BzZXJ2ZXIgPiAvZGV2L251bGwgJiYgdGVzdCAteCAvdXNyL2Jpbi9kY29wICYmIC91c3IvYmluL2Rjb3Aga2RlZCBrZGVkIGxvYWRlZE1vZHVsZXMgfCBncmVwIC1xIGtsYXB0b3BkYWVtb24pIDsgdGhlbgotCQllY2hvIDA7Ci0JZWxzZQotCQllY2hvIDE7Ci0JZmkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9lZWUtYWNwaS1zY3JpcHRzL2ZpbGVzL3Bvd2VyYnRuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG93ZXJidG4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwM2U1NTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcG93ZXJidG4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0tLS0KLSBhY3Rpb25zL3Bvd2VyLnNoIHwgICAgMyArKysKLSBldmVudHMvcG93ZXJidG4gIHwgICAgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW5hYmxlIGZlYXR1cmVdCi0KLUluZGV4OiBnaXQvZXZlbnRzL3Bvd2VyYnRuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2l0L2V2ZW50cy9wb3dlcmJ0bgkyMDA4LTEwLTA4IDE3OjQzOjM1LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSwyIEBACi0rZXZlbnQ9YnV0dG9uL3Bvd2VyIFBXUkYKLSthY3Rpb249L2V0Yy9hY3BpL2FjdGlvbnMvcG93ZXIuc2gKLUluZGV4OiBnaXQvYWN0aW9ucy9wb3dlci5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdpdC9hY3Rpb25zL3Bvd2VyLnNoCTIwMDgtMTAtMDggMTc6NDU6MjYuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDMgQEAKLSsjIS9iaW4vc2gKLSsKLSsvc2Jpbi9zaHV0ZG93biAtaCBub3cgIlBvd2VyIGJ1dHRvbiBwcmVzc2VkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcmVtb3ZlLWRvYy1jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9lZWUtYWNwaS1zY3JpcHRzL2ZpbGVzL3JlbW92ZS1kb2MtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYjNkY2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2VlZS1hY3BpLXNjcmlwdHMvZmlsZXMvcmVtb3ZlLWRvYy1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS0tLQotIGFjdGlvbnMvaG90a2V5LnNoICAgICB8ICAgIDMgLS0tCi0gYWN0aW9ucy9zdXNwZW5kLnNoICAgIHwgICAgMyAtLS0KLSBhY3Rpb25zL3ZnYS10b2dnbGUuc2ggfCAgICAzIC0tLQotIGFjdGlvbnMvdm9sdW1lLnNoICAgICB8ICAgIDMgLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1JbmRleDogZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy92b2x1bWUuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9lZWVwYy1hY3BpLXNjcmlwdHMvdm9sdW1lLnNoCTIwMTEtMTEtMjkgMTk6MjE6NTUuMDAwMDAwMDAwICswODAwCi0rKysgZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy92b2x1bWUuc2gJMjAxMS0xMS0yOSAxOTo0MTozNi4wMDAwMDAwMDAgKzA4MDAKLUBAIC0zLDEyICszLDEwIEBACi0gWyAtZCAvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMgXSB8fCBbIC1kIC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS9lZWVwYy13bWkgXSB8fCBleGl0IDAKLSAjIFZvbHVtZSBjb250cm9scwotIAotLSMgZG8gbm90aGluZyBpZiBwYWNrYWdlIGlzIHJlbW92ZWQKLSBQS0c9ZWVlcGMtYWNwaS1zY3JpcHRzCi0gUEtHX0RJUj0vdXNyL3NoYXJlL2FjcGktc3VwcG9ydC8kUEtHCi0gRlVOQ19MSUI9JFBLR19ESVIvbGliL2Z1bmN0aW9ucy5zaAotIERFRkFVTFQ9L2V0Yy9kZWZhdWx0LyRQS0cKLS1bIC1lICIkRlVOQ19MSUIiIF0gfHwgZXhpdCAwCi0gCi0gLiAkRlVOQ19MSUIKLSAuICRQS0dfRElSL2xpYi9zb3VuZC5zaAotSW5kZXg6IGdpdC9lZWVwYy1hY3BpLXNjcmlwdHMvaG90a2V5LnNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZWVlcGMtYWNwaS1zY3JpcHRzL2hvdGtleS5zaAkyMDExLTExLTI5IDE5OjIxOjU1LjAwMDAwMDAwMCArMDgwMAotKysrIGdpdC9lZWVwYy1hY3BpLXNjcmlwdHMvaG90a2V5LnNoCTIwMTEtMTEtMjkgMTk6Mzk6NTEuMDAwMDAwMDAwICswODAwCi1AQCAtMSwxMiArMSwxMCBAQAotICMhL2Jpbi9zaAotIAotIFsgLWQgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2VlZXBjIF0gfHwgWyAtZCAvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMtd21pIF0gfHwgZXhpdCAwCi0tIyBkbyBub3RoaW5nIGlmIHBhY2thZ2UgaXMgcmVtb3ZlZAotIFBLRz1lZWVwYy1hY3BpLXNjcmlwdHMKLSBQS0dfRElSPS91c3Ivc2hhcmUvYWNwaS1zdXBwb3J0LyRQS0cKLSBGVU5DX0xJQj0kUEtHX0RJUi9saWIvZnVuY3Rpb25zLnNoCi0gREVGQVVMVD0vZXRjL2RlZmF1bHQvJFBLRwotLVsgLWUgIiRGVU5DX0xJQiIgXSB8fCBleGl0IDAKLSAKLSBjYXNlICQocnVubGV2ZWwpIGluCi0gICAgICowfCo2KQotSW5kZXg6IGdpdC9lZWVwYy1hY3BpLXNjcmlwdHMvdmdhLXRvZ2dsZS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2VlZXBjLWFjcGktc2NyaXB0cy92Z2EtdG9nZ2xlLnNoCTIwMTEtMTEtMjkgMTk6MjE6NTUuMDAwMDAwMDAwICswODAwCi0rKysgZ2l0L2VlZXBjLWFjcGktc2NyaXB0cy92Z2EtdG9nZ2xlLnNoCTIwMTEtMTEtMjkgMTk6NDA6MjQuMDAwMDAwMDAwICswODAwCi1AQCAtMSwxMiArMSwxMCBAQAotICMhL2Jpbi9zaAotIAotIFsgLWQgL3N5cy9kZXZpY2VzL3BsYXRmb3JtL2VlZXBjIF0gfHwgWyAtZCAvc3lzL2RldmljZXMvcGxhdGZvcm0vZWVlcGMtd21pIF0gfHwgZXhpdCAwCi0tIyBkbyBub3RoaW5nIGlmIHBhY2thZ2UgaXMgcmVtb3ZlZAotIFBLRz1lZWVwYy1hY3BpLXNjcmlwdHMKLSBQS0dfRElSPS91c3Ivc2hhcmUvYWNwaS1zdXBwb3J0LyRQS0cKLSBGVU5DX0xJQj0kUEtHX0RJUi9saWIvZnVuY3Rpb25zLnNoCi0gREVGQVVMVD0vZXRjL2RlZmF1bHQvJFBLRwotLVsgLWUgIiRGVU5DX0xJQiIgXSB8fCBleGl0IDAKLSAKLSBpZiBbIC1lICIkREVGQVVMVCIgXTsgdGhlbiAuICIkREVGQVVMVCI7IGZpCi0gLiAkRlVOQ19MSUIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvbGliLU1ha2VmaWxlLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAppbmRleCAxYjJhZTFlLi5kYzAwYjhmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAwZGFhMzU0YTE2YWEzY2FkZTU2ZWQ0MjNkMGY4YTA0Y2YxYzIyZjlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZWM4YzJhNzAzMDRlYWJkNTc2MDkzN2E0ZWMzZmJjNDA2OGE3N2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDIzIEFwciAyMDE1IDAxOjQ5OjMxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYi9NYWtlZmlsZTogZml4IHBhcmFsbGVsIGlzc3VlCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBsaWIvTWFrZWZpbGU6IGZpeCBwYXJhbGxlbCBpc3N1ZQogCiBGaXhlZDoKIEFzc2VtYmxlciBtZXNzYWdlczoKQEAgLTE3LDIyICsxNywyMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQotIGxpYi9NYWtlZmlsZSB8ICAgIDIgKysKKyBsaWIvTWFrZWZpbGUgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCi1pbmRleCBkYzRiOTRhLi5mNjRkMWVkIDEwMDY0NAoraW5kZXggMDQ4NzUxYS4uZWQzOWJiYiAxMDA2NDQKIC0tLSBhL2xpYi9NYWtlZmlsZQogKysrIGIvbGliL01ha2VmaWxlCi1AQCAtNzMsNiArNzMsOCBAQCBhbGw6IGxpYnN1YmRpcnMgbGliZWZpLmEKK0BAIC03NCw2ICs3NCw4IEBAIGFsbDogbGlic3ViZGlycyBsaWJlZmkuYQogIGxpYnN1YmRpcnM6CiAgCWZvciBzZGlyIGluICQoU1VCRElSUyk7IGRvIG1rZGlyIC1wICQkc2RpcjsgZG9uZQogIAogKyQoT0JKUyk6IGxpYnN1YmRpcnMKICsKICBsaWJlZmkuYTogJChPQkpTKQotIAkkKEFSKSBydiAkQCAkKE9CSlMpCisgCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogIAogLS0gCi0xLjcuOS41CisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL3BhcmFsbGVsLW1ha2UtYXJjaGl2ZXMucGF0Y2gKaW5kZXggMDExMDI2MC4uYTk4MDZjZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMTY4NjVkZTY2ZGIzM2NhNzA4NzIxOTllNzBkOTNlZmNjZWNjODU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDhiMmNkYmNkNzYxMTA1ZThlYmFkNDEyZmNiZjIzZGIxYWM0ZWY3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KIERhdGU6IFN1biwgOSBNYXIgMjAxNCAxNToyMjoxNSArMDIwMAogU3ViamVjdDogW1BBVENIIDEvM10gRml4IHBhcmFsbGVsIG1ha2UgZmFpbHVyZSBmb3IgYXJjaGl2ZXMKQEAgLTE3LDEzICsxNywxNSBAQAogU2lnbmVkLW9mZi1ieTogRGFycmVuIEhhcnQgPGR2aGFydEBsaW51eC5pbnRlbC5jb20+CiBbUmViYXNlZCBmb3IgMy4wLjZdCiBTaWduZWQtb2ZmLWJ5OiBDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPgorW1JlYmFzZWQgZm9yIDMuMC44XQorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgogLS0tCiAgZ251ZWZpL01ha2VmaWxlIHwgMyArKy0KICBsaWIvTWFrZWZpbGUgICAgfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nbnVlZmkvTWFrZWZpbGUgYi9nbnVlZmkvTWFrZWZpbGUKLWluZGV4IDJhNjE2OTkuLjE0ODEwNmUgMTAwNjQ0CitpbmRleCAyYTYxNjk5Li44OWI1NjBhIDEwMDY0NAogLS0tIGEvZ251ZWZpL01ha2VmaWxlCiArKysgYi9nbnVlZmkvTWFrZWZpbGUKIEBAIC01NCw3ICs1NCw4IEBAIFRBUkdFVFMJPSBjcnQwLWVmaS0kKEFSQ0gpLm8gbGliZ251ZWZpLmEKQEAgLTMyLDIzICszNCwyMyBAQAogIAogLWxpYmdudWVmaS5hOiAkKHBhdHN1YnN0ICUsbGliZ251ZWZpLmEoJSksJChPQkpTKSkKICtsaWJnbnVlZmkuYTogJChPQkpTKQotKwkkKEFSKSBydiAkQCAkKE9CSlMpCisrCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogIAogIGNsZWFuOgogIAlybSAtZiAkKFRBUkdFVFMpICp+ICoubyAkKE9CSlMpCiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlIGIvbGliL01ha2VmaWxlCi1pbmRleCBiOGQxY2U3Li42ZWY4MTA3IDEwMDY0NAoraW5kZXggMGU2NDEwZC4uMDQ4NzUxYSAxMDA2NDQKIC0tLSBhL2xpYi9NYWtlZmlsZQogKysrIGIvbGliL01ha2VmaWxlCiBAQCAtNzUsNyArNzUsNyBAQCBsaWJzdWJkaXJzOgogIAlmb3Igc2RpciBpbiAkKFNVQkRJUlMpOyBkbyBta2RpciAtcCAkJHNkaXI7IGRvbmUKICAKICBsaWJlZmkuYTogJChPQkpTKQotLQkkKEFSKSBydiAtVSAkQCAkXgotKwkkKEFSKSBydiAkQCAkKE9CSlMpCistCSQoQVIpICQoQVJGTEFHUykgJEAgJF4KKysJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpCiAgCiAgY2xlYW46CiAgCXJtIC1mIGxpYmVmaS5hICp+ICQoT0JKUykgKi8qLm8KIC0tIAotMi45LjQKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTYwNzE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ251LWVmaS8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MisgfCBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYXJtLlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFhcmNoNjQuUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxpbnRmLmg7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjA7bWQ1PTIwMjc2NmI3OWQ3MDhlZmYzY2M3MGZjZTE1ZmI4MGM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbHBhcm0uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTExO21kNT00NjhiMTIzMWIwNWJiYzg0YmFlM2EwZDU3NzRlM2JiNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NmY2MzM3NThhOGEzN2RiOWZkNjkwOWZlMjcwYzI2YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTUxNTkwMmQ4MGZiZWEyMzMyOGE2MWQ3MGQzZDUxYTQ3MjA0YWJkMTUwN2ViZmEyNzU1MGE3YjliZjIyYzkxIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi0KLWRvX2NvbmZpZ3VyZV9saW51eC1nbnV4MzJfcHJlcGVuZCgpIHsKLQljcCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMteDMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLTY0LmgKLQljcCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS02NC5oCi19Ci0KLWRlZiBnbnVfZWZpX2FyY2goZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQotICAgIGlmIHJlLm1hdGNoKCJpWzM0NTY3ODldODYiLCB0YXJjaCk6Ci0gICAgICAgIHJldHVybiAiaWEzMiIKLSAgICByZXR1cm4gdGFyY2gKLQotRVhUUkFfT0VNQUtFID0gIidBUkNIPSR7QGdudV9lZmlfYXJjaChkKX0nICdDQz0ke0NDfScgJ0FTPSR7QVN9JyAnTEQ9JHtMRH0nICdBUj0ke0FSfScgXAotICAgICAgICAgICAgICAgICdSQU5MSUI9JHtSQU5MSUJ9JyAnT0JKQ09QWT0ke09CSkNPUFl9JyAnUFJFRklYPSR7cHJlZml4fScgJ0xJQkRJUj0ke2xpYmRpcn0nIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgZ251LWVmaSdzIE1ha2VmaWxlIHRyZWF0cyBwcmVmaXggYXMgdG9vbGNoYWluIHByZWZpeCwgc28gZG9uJ3QKLSMgZXhwb3J0IGl0LgotcHJlZml4W3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9IiR7RH0iCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5sZHMiCi0KLSMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgRUZJIHdoZW4gdGFyZ2V0aW5nIFgzMgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LW11c2x4MzIgPSAiIGFyY2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEl0IGRvZXNuJ3Qgc3VwcG9ydCBzc2UsIGl0cyBtYWtlLmRlZmF1bHRzIHNldHM6Ci0jIENGTEFHUyArPSAtbW5vLW1teCAtbW5vLXNzZQotIyBTbyBhbHNvIHJlbW92ZSAtbWZwbWF0aD1zc2UgZnJvbSBUVU5FX0NDQVJHUwotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLQotcHl0aG9uICgpIHsKLSAgICBjY2FyZ3MgPSBkLmdldFZhcignVFVORV9DQ0FSR1MnKS5zcGxpdCgpCi0gICAgaWYgJy1teDMyJyBpbiBjY2FyZ3M6Ci0gICAgICAgICMgdXNlIHg4Nl82NCBFRkkgQUJJCi0gICAgICAgIGNjYXJncy5yZW1vdmUoJy1teDMyJykKLSAgICAgICAgY2NhcmdzLmFwcGVuZCgnLW02NCcpCi0gICAgICAgIGQuc2V0VmFyKCdUVU5FX0NDQVJHUycsICcgJy5qb2luKGNjYXJncykpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmE0NzMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuOC5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIkxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ251LWVmaS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MisgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYXJtLlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFhcmNoNjQuUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxpbnRmLmg7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjA7bWQ1PTIwMjc2NmI3OWQ3MDhlZmYzY2M3MGZjZTE1ZmI4MGM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbHBhcm0uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTExO21kNT00NjhiMTIzMWIwNWJiYzg0YmFlM2EwZDU3NzRlM2JiNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZTMyMDExY2ZlNmIxYzQwYzBmMjQ0YjlhNDliYTE4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjAwNmQ4ZWE4ZDY3YmNmNzJmMzVkMDlkNDNlOWVmNmE2OTQwMGQ2ZDVkNGJmNjRiYWYxYWI3NDM0ZTJiNzIyIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCisKK2RvX2NvbmZpZ3VyZV9saW51eC1nbnV4MzJfcHJlcGVuZCgpIHsKKwljcCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMteDMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLTY0LmgKKwljcCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS02NC5oCit9CisKK2RlZiBnbnVfZWZpX2FyY2goZCk6CisgICAgaW1wb3J0IHJlCisgICAgdGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQorICAgIGlmIHJlLm1hdGNoKCJpWzM0NTY3ODldODYiLCB0YXJjaCk6CisgICAgICAgIHJldHVybiAiaWEzMiIKKyAgICByZXR1cm4gdGFyY2gKKworRVhUUkFfT0VNQUtFID0gIidBUkNIPSR7QGdudV9lZmlfYXJjaChkKX0nICdDQz0ke0NDfScgJ0FTPSR7QVN9JyAnTEQ9JHtMRH0nICdBUj0ke0FSfScgXAorICAgICAgICAgICAgICAgICdSQU5MSUI9JHtSQU5MSUJ9JyAnT0JKQ09QWT0ke09CSkNPUFl9JyAnUFJFRklYPSR7cHJlZml4fScgJ0xJQkRJUj0ke2xpYmRpcn0nIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgZ251LWVmaSdzIE1ha2VmaWxlIHRyZWF0cyBwcmVmaXggYXMgdG9vbGNoYWluIHByZWZpeCwgc28gZG9uJ3QKKyMgZXhwb3J0IGl0LgorcHJlZml4W3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9IiR7RH0iCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5sZHMiCisKKyMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgRUZJIHdoZW4gdGFyZ2V0aW5nIFgzMgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCitJTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LW11c2x4MzIgPSAiIGFyY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIEl0IGRvZXNuJ3Qgc3VwcG9ydCBzc2UsIGl0cyBtYWtlLmRlZmF1bHRzIHNldHM6CisjIENGTEFHUyArPSAtbW5vLW1teCAtbW5vLXNzZQorIyBTbyBhbHNvIHJlbW92ZSAtbWZwbWF0aD1zc2UgZnJvbSBUVU5FX0NDQVJHUworVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKKworcHl0aG9uICgpIHsKKyAgICBjY2FyZ3MgPSBkLmdldFZhcignVFVORV9DQ0FSR1MnKS5zcGxpdCgpCisgICAgaWYgJy1teDMyJyBpbiBjY2FyZ3M6CisgICAgICAgICMgdXNlIHg4Nl82NCBFRkkgQUJJCisgICAgICAgIGNjYXJncy5yZW1vdmUoJy1teDMyJykKKyAgICAgICAgY2NhcmdzLmFwcGVuZCgnLW02NCcpCisgICAgICAgIGQuc2V0VmFyKCdUVU5FX0NDQVJHUycsICcgJy5qb2luKGNjYXJncykpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXg4Ni02NC1UcmVhdC1SX1g4Nl82NF9QTFQzMi1hcy1SX1g4Nl82NF9QQzMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS14ODYtNjQtVHJlYXQtUl9YODZfNjRfUExUMzItYXMtUl9YODZfNjRfUEMzMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWQ1OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS14ODYtNjQtVHJlYXQtUl9YODZfNjRfUExUMzItYXMtUl9YODZfNjRfUEMzMi5wYXRjaApAQCAtMCwwICsxLDc2IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDg0MmMzOTA0NjllMmMyZTEwYjVhYTM2NzAwMzI0Y2QzYmRlMjU4NzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjQ3OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHg4Ni02NDogVHJlYXQgUl9YODZfNjRfUExUMzIgYXMgUl9YODZfNjRfUEMzMgorCitTdGFydGluZyBmcm9tIGJpbnV0aWxzIGNvbW1pdCBiZDdhYjE2YjQ1Mzc3ODhhZDUzNTIxYzQ1NDY5YTFiZGFlODRhZDRhOgorCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1iaW51dGlscy1nZGIuZ2l0O2E9Y29tbWl0O2g9YmQ3YWIxNmI0NTM3Nzg4YWQ1MzUyMWM0NTQ2OWExYmRhZTg0YWQ0YQorCit4ODYtNjQgYXNzZW1ibGVyIGdlbmVyYXRlcyBSX1g4Nl82NF9QTFQzMiwgaW5zdGVhZCBvZiBSX1g4Nl82NF9QQzMyLCBmb3IKKzMyLWJpdCBQQy1yZWxhdGl2ZSBicmFuY2hlcy4gIEdydWIyIHNob3VsZCB0cmVhdCBSX1g4Nl82NF9QTFQzMiBhcworUl9YODZfNjRfUEMzMi4KKworU2lnbmVkLW9mZi1ieTogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBEYW5pZWwgS2lwZXIgPGRhbmllbC5raXBlckBvcmFjbGUuY29tPgorLS0tCisgZ3J1Yi1jb3JlL2VmaWVtdS9pMzg2L2xvYWRjb3JlNjQuYyB8IDEgKworIGdydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jICAgICAgICAgfCAxICsKKyB1dGlsL2dydWItbWtpbWFnZXh4LmMgICAgICAgICAgICAgIHwgMSArCisgdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jICAgICAgICB8IDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ncnViLWNvcmUvZWZpZW11L2kzODYvbG9hZGNvcmU2NC5jIGIvZ3J1Yi1jb3JlL2VmaWVtdS9pMzg2L2xvYWRjb3JlNjQuYworaW5kZXggZTQ5ZDBiNmZmLi4xOGZhY2Y0N2YgMTAwNjQ0CistLS0gYS9ncnViLWNvcmUvZWZpZW11L2kzODYvbG9hZGNvcmU2NC5jCisrKysgYi9ncnViLWNvcmUvZWZpZW11L2kzODYvbG9hZGNvcmU2NC5jCitAQCAtOTgsNiArOTgsNyBAQCBncnViX2FyY2hfZWZpZW11X3JlbG9jYXRlX3N5bWJvbHM2NCAoZ3J1Yl9lZmllbXVfc2VnbWVudF90IHNlZ3MsCisgCQkgICAgYnJlYWs7CisgCisgCQkgIGNhc2UgUl9YODZfNjRfUEMzMjoKKysJCSAgY2FzZSBSX1g4Nl82NF9QTFQzMjoKKyAJCSAgICBlcnIgPSBncnViX2VmaWVtdV93cml0ZV92YWx1ZSAoYWRkciwKKyAJCQkJCQkgICAqYWRkcjMyICsgcmVsLT5yX2FkZGVuZAorIAkJCQkJCSAgICsgc3ltLm9mZgorZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKK2luZGV4IDQ0MDY5MDY3My4uM2E3M2U2ZTZjIDEwMDY0NAorLS0tIGEvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKKysrKyBiL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jCitAQCAtNzAsNiArNzAsNyBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkciwKKyAJICBicmVhazsKKyAKKyAJY2FzZSBSX1g4Nl82NF9QQzMyOgorKwljYXNlIFJfWDg2XzY0X1BMVDMyOgorIAkgIHsKKyAJICAgIGdydWJfaW50NjRfdCB2YWx1ZTsKKyAJICAgIHZhbHVlID0gKChncnViX2ludDMyX3QpICphZGRyMzIpICsgcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWUgLQorZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi1ta2ltYWdleHguYyBiL3V0aWwvZ3J1Yi1ta2ltYWdleHguYworaW5kZXggYTJiYjA1NDM5Li4zOWQ3ZWZiOTEgMTAwNjQ0CistLS0gYS91dGlsL2dydWItbWtpbWFnZXh4LmMKKysrKyBiL3V0aWwvZ3J1Yi1ta2ltYWdleHguYworQEAgLTg0MSw2ICs4NDEsNyBAQCBTVUZGSVggKHJlbG9jYXRlX2FkZHJlc3NlcykgKEVsZl9FaGRyICplLCBFbGZfU2hkciAqc2VjdGlvbnMsCisgCQkgIGJyZWFrOworIAorIAkJY2FzZSBSX1g4Nl82NF9QQzMyOgorKwkJY2FzZSBSX1g4Nl82NF9QTFQzMjoKKyAJCSAgeworIAkJICAgIGdydWJfdWludDMyX3QgKnQzMiA9IChncnViX3VpbnQzMl90ICopIHRhcmdldDsKKyAJCSAgICAqdDMyID0gZ3J1Yl9ob3N0X3RvX3RhcmdldDY0IChncnViX3RhcmdldF90b19ob3N0MzIgKCp0MzIpCitkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jIGIvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jCitpbmRleCA5MTc5Mjg1YTUuLmE3OTI3MWY2NiAxMDA2NDQKKy0tLSBhL3V0aWwvZ3J1Yi1tb2R1bGUtdmVyaWZpZXIuYworKysrIGIvdXRpbC9ncnViLW1vZHVsZS12ZXJpZmllci5jCitAQCAtMTksNiArMTksNyBAQCBzdHJ1Y3QgZ3J1Yl9tb2R1bGVfdmVyaWZpZXJfYXJjaCBhcmNoc1tdID0geworICAgICAgIC0xCisgICAgIH0sIChpbnRbXSl7CisgICAgICAgUl9YODZfNjRfUEMzMiwKKysgICAgICBSX1g4Nl82NF9QTFQzMiwKKyAgICAgICAtMQorICAgICB9CisgICB9LAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKaW5kZXggN2JmYzhlZS4uMTRmY2U5NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAyLmJiCkBAIC0yNSw2ICsyNSw5IEBACiAgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCcsIHRhcmdldCk6CiAgICAgICAgIGdydWJ0YXJnZXQgPSAnYXJtNjQnCiAgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290YWE2NC5lZmkiCisgICAgZWxpZiByZS5tYXRjaCgnYXJtJywgdGFyZ2V0KToKKyAgICAgICAgZ3J1YnRhcmdldCA9ICdhcm0nCisgICAgICAgIGdydWJpbWFnZSA9IHByZWZpeCArICJib290YXJtLmVmaSIKICAgICBlbHNlOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQogICAgIGQuc2V0VmFyKCJHUlVCX1RBUkdFVCIsIGdydWJ0YXJnZXQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKaW5kZXggYThmMzM1ZS4uMzI1ZWNhMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYwpAQCAtMTcsOCArMTcsOSBAQAogICAgICAgICAgICBmaWxlOi8vYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2ggXAotCSAgIGZpbGU6Ly9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9nY2M4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LTY0LVRyZWF0LVJfWDg2XzY0X1BMVDMyLWFzLVJfWDg2XzY0X1BDMzIucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjExMTZkMWY2MGM4NDBlNmRiZDY3YWJiYzk5YWNiNDVkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MGVlMTM2ZmJjZWUwODg1ODUxNmVkNGRlMmFkODcwNjhiZmUxYjZiOGIzNzg5NmNlMzUyOWZmMDU0YTcyNmQiCkBAIC0zMiw3ICszMyw3IEBACiAjIGNvbmZpZ3VyZS5hYyBoYXMgY29kZSB0byBzZXQgdGhpcyBhdXRvbWFnaWNhbGx5IGZyb20gdGhlIHRhcmdldCB0dXBsZQogIyBidXQgdGhlIE9FIGZyZWVmb3JtIG9uZSAoY29yZTItZm9vLWJhci1saW51eCkgZG9uJ3Qgd29yayB3aXRoIHRoYXQuCiAKLUdSVUJQTEFURk9STV9hcm0gPSAidWJvb3QiCitHUlVCUExBVEZPUk1fYXJtID0gImVmaSIKIEdSVUJQTEFURk9STV9hYXJjaDY0ID0gImVmaSIKIEdSVUJQTEFURk9STSA/Pz0gInBjIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxOGI3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCi10byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCi1IT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAiemxpYiBrbW9kIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhlNTIyNzgzOTliN2IzNWZjZmMwMzFiYzA1ZGE4MGE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzNDZlZWI5MGNjZTA5MTBjMDViODc3ZmU0OWVhZGM3NjBmYTA4NGMwNDU1ZmQzMTNlMzlkNGIyYzJkNGJiMjEiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCi0KLVBDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgotCi0jIHNlZSBjb25maWd1cmUucGF0Y2gKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0JKAotCSAgY2QgbGliICYmIFwKLQkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCi0JICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKLQkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQotCSkKLX0KLQotZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCi1leHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgotZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCi1leHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKLQotIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0Ci1IT1NUW3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKLQotCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCi1GSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKLUZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCi1TVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgotREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMzQyMWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjIuYmIKQEAgLTAsMCArMSw2MCBAQAorU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCit0byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCitIT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAiemxpYiBrbW9kIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjc3OTYzNzk2ZDFiZTRmNDUxYjgzZTZkYTI4YmE0ZjgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiNDUyZWM5ODZlZGVmZDg4YWYwZDIyMmQyMmY2MTAyZjgwMzBhODYzM2ZkZmU4NDZjM2FlNGJkZTliYjkzZjMiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCisKK1BDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgorCisjIHNlZSBjb25maWd1cmUucGF0Y2gKK2RvX2NvbmZpZ3VyZSAoKSB7CisJKAorCSAgY2QgbGliICYmIFwKKwkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCisJICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKKwkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQorCSkKK30KKworZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCitleHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgorZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCitleHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKKworQVNORUVERUQgPSAiIgorCisjIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKK0hPU1RbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKKworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKK0ZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgorRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKK1NVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCitERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZjNmQ3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNtY2lhdXRpbHMvcGNtY2lhdXRpbHMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBrZXJuZWwgdXNlcmxhbmQgdXRpbGl0aWVzIGZvciB0aGUgUENNQ0lBIHN1YnN5c3RlbSIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9wY21jaWEvIgotU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotREVQRU5EUyA9ICJ1ZGV2IHN5c2ZzdXRpbHMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAidWRldiBtb2R1bGUtaW5pdC10b29scyIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL2tlcm5lbC9wY21jaWEvJHtCUH0udGFyLnh6IgotCi1TID0gIiR7V09SS0RJUn0vcGNtY2lhdXRpbHMtJHtQVn0iCi0KLWluaGVyaXQgcGtnY29uZmlnCi0KLWV4cG9ydCBIT1NUQ0MgPSAiJHtCVUlMRF9DQ30iCi1leHBvcnQgZXRjZGlyID0gIiR7c3lzY29uZmRpcn0iCi1leHBvcnQgc2JpbmRpciA9ICIke2Jhc2Vfc2JpbmRpcn0iCi1leHBvcnQgcGNtY2lhY29uZmRpciA9ICIke3N5c2NvbmZkaXJ9L3BjbWNpYSIKLWV4cG9ydCB1ZGV2ZGlyID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLWV4cG9ydCB1ZGV2cnVsZXNkaXIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQiCi1leHBvcnQgVURFViA9ICIxIgotTEQgPSAiJHtDQ30iCi1DRkxBR1MgPSsgIi1JJHtTfS9zcmMiCi1DRkxBR1MgPSsgIi1EUENNQ0lBVVRJTFNfVkVSU0lPTj1cXCIke1BWfVxcIiIKLQotRVhUUkFfT0VNQUtFID0gIi1lICdTVFJJUD1lY2hvJyAnTElCX09CSlM9LWxjIC1sc3lzZnMnICdMRVg9ZmxleCciCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQotCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vcGNtY2lhL2NvbmZpZy5vcHRzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY21jaWF1dGlscy9wY21jaWF1dGlsc18wMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMGY1OGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjbWNpYXV0aWxzL3BjbWNpYXV0aWxzXzAxOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgcGNtY2lhdXRpbHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZV9maXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlX3JhY2UucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2xleF9zeXNfdHlwZXMucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODg1NDMxYzNjZWZiNzZmZmRhZDhjYjk4NTEzNGU5OTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdjMjdiZThmMDRlZjRkNTM1YmNmYTk4ODU2NzMxNmNjNTc2NTlmZTY5MDY4MzI3NDg2ZGFiNTM3OTFlNjU1OCIKLQotUFIgPSAicjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtZWZpX2xvYWRlci1hdm9pZC1tYWtlLXJhY2UtY29uZGl0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy8wMDAxLWVmaV9sb2FkZXItYXZvaWQtbWFrZS1yYWNlLWNvbmRpdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE3ZTI3Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtZWZpX2xvYWRlci1hdm9pZC1tYWtlLXJhY2UtY29uZGl0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA1YzJlMjRhOWVkNTRkZmVlNzdkMTg0NGEwODBlOTk4YjRhZmZlOTE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGVpbnJpY2ggU2NodWNoYXJkdCA8eHlwcm9uLmdscGtAZ214LmRlPgotRGF0ZTogU2F0LCAyIEp1biAyMDE4IDE5OjAwOjQxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVmaV9sb2FkZXI6IGF2b2lkIG1ha2UgcmFjZSBjb25kaXRpb24KLQotV2hlbiBVLUJvb3QgaXMgYnVpbHQgd2l0aCAnbWFrZSAtaicgdGhlcmUgaXMgbm90IGd1YXJhbnRlZSB0aGF0IHRhcmdldHMgaW4KLWRpcmVjdG9yeSBhcmNoLyBhcmUgYnVpbHQgYmVmb3JlIHRhcmdldHMgaW4gZGlyZWN0b3J5IGxpYi8uIFRoZSBjdXJyZW50Ci1idWlsZCBpbnN0cnVjdGlvbiBmb3IgRUZJIGJpbmFyaWVzIGluIGxpYi8gcmVseSBvbiBkZXBlbmRlbmNpZXMgaW4gYXJjaC8uCi1JZiAkKEVGSV9DUlQwKSBvciAkKEVGSV9SRUxPQykgaXMgbm90IHlldCBidWlsdCBiZWZvcmUgdHJ5aW5nIHRvIGJ1aWxkCi0lLmVmaSBhbiBlcnJvcgotICAgICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICclLmVmaScKLW9jY3Vycy4KLQotV2l0aCB0aGUgcGF0Y2ggc2VwYXJhdGUgY29waWVzIG9mICQoRUZJX0NSVDApIGFuZCAkKEVGSV9SRUxPQykgbmFtZWQKLWVmaV9jcnQwLm8gYW5kIGVmaV9yZWxvYy5vIGFyZSBidWlsdCBpbiBsaWIvZWZpX2xvYWRlciBhbmQKLWxpYi9lZmlfc2VsZnRlc3QuCi0KLVNpZ25lZC1vZmYtYnk6IEhlaW5yaWNoIFNjaHVjaGFyZHQgPHh5cHJvbi5nbHBrQGdteC5kZT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBHcmFmIDxhZ3JhZkBzdXNlLmRlPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IGZyb20gMjAxOC4wNwotCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+Ci0tLS0KLSBzY3JpcHRzL01ha2VmaWxlLmxpYiB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2NyaXB0cy9NYWtlZmlsZS5saWIgYi9zY3JpcHRzL01ha2VmaWxlLmxpYgotaW5kZXggOGYxOWIyZGI1Ni4uZjJmMzk4YzkzNSAxMDA2NDQKLS0tLSBhL3NjcmlwdHMvTWFrZWZpbGUubGliCi0rKysgYi9zY3JpcHRzL01ha2VmaWxlLmxpYgotQEAgLTQwNCw4ICs0MDQsMTQgQEAgY21kX2VmaV9sZCA9ICQoTEQpIC1ub3N0ZGxpYiAtem5vY29tYnJlbG9jIC1UICQoRUZJX0xEU19QQVRIKSAtc2hhcmVkIFwKLSAKLSBFRklfTERTX1BBVEggPSAkKHNyY3RyZWUpL2FyY2gvJChBUkNIKS9saWIvJChFRklfTERTKQotIAotLSQob2JqKS8lX2VmaS5zbzogJChvYmopLyUubyBhcmNoLyQoQVJDSCkvbGliLyQoRUZJX0NSVDApIFwKLS0JCWFyY2gvJChBUkNIKS9saWIvJChFRklfUkVMT0MpCi0rJChvYmopL2VmaV9jcnQwLm86ICQoc3JjdHJlZSkvYXJjaC8kKEFSQ0gpL2xpYi8kKEVGSV9DUlQwOi5vPS5TKQotKwkkKGNhbGwgaWZfY2hhbmdlZF9kZXAsYXNfb19TKQotKwotKyQob2JqKS9lZmlfcmVsb2MubzogJChzcmN0cmVlKS9hcmNoLyQoQVJDSCkvbGliLyQoRUZJX1JFTE9DOi5vPS5jKSAkKHJlY29yZG1jb3VudF9zb3VyY2UpIEZPUkNFCi0rCSQoY2FsbCBjbWQsZm9yY2VfY2hlY2tzcmMpCi0rCSQoY2FsbCBpZl9jaGFuZ2VkX3J1bGUsY2Nfb19jKQotKwotKyQob2JqKS8lX2VmaS5zbzogJChvYmopLyUubyAkKG9iaikvZWZpX2NydDAubyAkKG9iaikvZWZpX3JlbG9jLm8KLSAJJChjYWxsIGNtZCxlZmlfbGQpCi0gCi0gIyBBQ1BJCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL0NWRS0yMDE4LTEwMDAyMDUtMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvQ1ZFLTIwMTgtMTAwMDIwNS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDNjM2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL0NWRS0yMDE4LTEwMDAyMDUtMS5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDczNDZjMWUxOTJkNjNjZDM1Zjk5YzdlODQ1ZTUzYzVkNGQwYmRjMjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUZWRkeSBSZWVkIDx0ZWRkeS5yZWVkQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBKdW4gMjAxOCAxMTo0NToyMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSB2Ym9vdDogRG8gbm90IHVzZSBoYXNoZWQtc3RyaW5ncyBvZmZzZXQKKworVGhlIGhhc2hlZC1zdHJpbmdzIHNpZ25hdHVyZSBwcm9wZXJ0eSBpbmNsdWRlcyB0d28gdWludDMyX3QgdmFsdWVzLgorVGhlIGZpcnN0IGlzIHVubmVlZGVkIGFzIHRoZXJlIHNob3VsZCBuZXZlciBiZSBhIHN0YXJ0IG9mZnNldCBpbnRvIHRoZQorc3RyaW5ncyByZWdpb24uIFRoZSBzZWNvbmQsIHRoZSBzaXplLCBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgYWRkZWQKK3NpZ25hdHVyZSBub2RlIGFwcGVuZHMgdG8gdGhpcyByZWdpb24uCisKK1NlZSB0b29scy9pbWFnZS1ob3N0LmMsIHdoZXJlIGEgc3RhdGljIDAgdmFsdWUgaXMgdXNlZCBmb3IgdGhlIG9mZnNldC4KKworU2lnbmVkLW9mZi1ieTogVGVkZHkgUmVlZCA8dGVkZHkucmVlZEBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogU2ltb24gR2xhc3MgPHNqZ0BjaHJvbWl1bS5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbaHR0cDovL2dpdC5kZW54LmRlLz9wPXUtYm9vdC5naXQ7YT1jb21taXQ7CisgICAgICAgICAgICAgICAgIGg9NzM0NmMxZTE5MmQ2M2NkMzVmOTljN2U4NDVlNTNjNWQ0ZDBiZGMyNF0KKworQ1ZFOiBDVkUtMjAxOC0xMDAwMjA1CisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb21tb24vaW1hZ2Utc2lnLmMgfCA3ICsrKysrLS0KKyB0b29scy9pbWFnZS1ob3N0LmMgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbW1vbi9pbWFnZS1zaWcuYyBiL2NvbW1vbi9pbWFnZS1zaWcuYworaW5kZXggOGQyZmQxMC4uNWEyNjlkMyAxMDA2NDQKKy0tLSBhL2NvbW1vbi9pbWFnZS1zaWcuYworKysrIGIvY29tbW9uL2ltYWdlLXNpZy5jCitAQCAtMzc3LDggKzM3NywxMSBAQCBpbnQgZml0X2NvbmZpZ19jaGVja19zaWcoY29uc3Qgdm9pZCAqZml0LCBpbnQgbm9mZnNldCwgaW50IHJlcXVpcmVkX2tleW5vZGUsCisgCS8qIEFkZCB0aGUgc3RyaW5ncyAqLworIAlzdHJpbmdzID0gZmR0X2dldHByb3AoZml0LCBub2Zmc2V0LCAiaGFzaGVkLXN0cmluZ3MiLCBOVUxMKTsKKyAJaWYgKHN0cmluZ3MpIHsKKy0JCWZkdF9yZWdpb25zW2NvdW50XS5vZmZzZXQgPSBmZHRfb2ZmX2R0X3N0cmluZ3MoZml0KSArCistCQkJCWZkdDMyX3RvX2NwdShzdHJpbmdzWzBdKTsKKysJCS8qCisrCQkgKiBUaGUgc3RyaW5ncyByZWdpb24gb2Zmc2V0IG11c3QgYmUgYSBzdGF0aWMgMHgwLgorKwkJICogVGhpcyBpcyBzZXQgaW4gdG9vbC9pbWFnZS1ob3N0LmMKKysJCSAqLworKwkJZmR0X3JlZ2lvbnNbY291bnRdLm9mZnNldCA9IGZkdF9vZmZfZHRfc3RyaW5ncyhmaXQpOworIAkJZmR0X3JlZ2lvbnNbY291bnRdLnNpemUgPSBmZHQzMl90b19jcHUoc3RyaW5nc1sxXSk7CisgCQljb3VudCsrOworIAl9CitkaWZmIC0tZ2l0IGEvdG9vbHMvaW1hZ2UtaG9zdC5jIGIvdG9vbHMvaW1hZ2UtaG9zdC5jCitpbmRleCA4ZTQzNjcxLi5iZTJkNTliIDEwMDY0NAorLS0tIGEvdG9vbHMvaW1hZ2UtaG9zdC5jCisrKysgYi90b29scy9pbWFnZS1ob3N0LmMKK0BAIC0xMzUsNiArMTM1LDcgQEAgc3RhdGljIGludCBmaXRfaW1hZ2Vfd3JpdGVfc2lnKHZvaWQgKmZpdCwgaW50IG5vZmZzZXQsIHVpbnQ4X3QgKnZhbHVlLAorIAorIAkJcmV0ID0gZmR0X3NldHByb3AoZml0LCBub2Zmc2V0LCAiaGFzaGVkLW5vZGVzIiwKKyAJCQkJICAgcmVnaW9uX3Byb3AsIHJlZ2lvbl9wcm9wbGVuKTsKKysJCS8qIFRoaXMgaXMgYSBsZWdhY3kgb2Zmc2V0LCBpdCBpcyB1bnVzZWQsIGFuZCBtdXN0IHJlbWFpbiAwLiAqLworIAkJc3RyZGF0YVswXSA9IDA7CisgCQlzdHJkYXRhWzFdID0gY3B1X3RvX2ZkdDMyKHN0cmluZ19zaXplKTsKKyAJCWlmICghcmV0KSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvQ1ZFLTIwMTgtMTAwMDIwNS0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9DVkUtMjAxOC0xMDAwMjA1LTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3OWFmMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvQ1ZFLTIwMTgtMTAwMDIwNS0yLnBhdGNoCkBAIC0wLDAgKzEsMTQzIEBACitGcm9tIDcyMjM5ZmM4NWYzZWRhMDc4NTQ3OTU2NjA4YzA2M2FiOTY1ZTkwZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUZWRkeSBSZWVkIDx0ZWRkeS5yZWVkQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgOSBKdW4gMjAxOCAxMTozODowNSAtMDQwMAorU3ViamVjdDogW1BBVENIXSB2Ym9vdDogQWRkIEZJVF9TSUdOQVRVUkVfTUFYX1NJWkUgcHJvdGVjdGlvbgorCitUaGlzIGFkZHMgYSBuZXcgY29uZmlnIHZhbHVlIEZJVF9TSUdOQVRVUkVfTUFYX1NJWkUsIHdoaWNoIGNvbnRyb2xzIHRoZQorbWF4IHNpemUgb2YgYSBGSVQgaGVhZGVyJ3MgdG90YWxzaXplIGZpZWxkLiBUaGUgZmllbGQgaXMgY2hlY2tlZCBiZWZvcmUKK3NpZ25hdHVyZSBjaGVja3MgYXJlIGFwcGxpZWQgdG8gcHJvdGVjdCBmcm9tIHJlYWRpbmcgcGFzdCB0aGUgaW50ZW5kZWQKK0ZJVCByZWdpb25zLgorCitUaGlzIGZpZWxkIGlzIG5vdCBwYXJ0IG9mIHRoZSB2Ym9vdCBzaWduYXR1cmUgc28gaXQgc2hvdWxkIGJlIHNhbml0eQorY2hlY2tlZC4gSWYgdGhlIGZpZWxkIGlzIGNvcnJ1cHRlZCB0aGVuIHRoZSBzdHJ1Y3R1cmUgb3Igc3RyaW5nIHJlZ2lvbgorcmVhZHMgbWF5IGhhdmUgdW5pbnRlbmRlZCBiZWhhdmlvciwgc3VjaCBhcyByZWFkaW5nIGZyb20gZGV2aWNlIG1lbW9yeS4KK0EgZGVmYXVsdCB2YWx1ZSBvZiAyNTZNQiBpcyBzZXQgYW5kIGludGVuZGVkIHRvIHN1cHBvcnQgbW9zdCBtYXggc3RvcmFnZQorc2l6ZXMuCisKK1N1Z2dlc3RlZC1ieTogU2ltb24gR2xhc3MgPHNqZ0BjaHJvbWl1bS5vcmc+CitTaWduZWQtb2ZmLWJ5OiBUZWRkeSBSZWVkIDx0ZWRkeS5yZWVkQGdtYWlsLmNvbT4KK1Jldmlld2VkLWJ5OiBTaW1vbiBHbGFzcyA8c2pnQGNocm9taXVtLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwOi8vZ2l0LmRlbnguZGUvP3A9dS1ib290LmdpdDthPWNvbW1pdDsKKyAgICAgICAgICAgICAgICAgaD03MjIzOWZjODVmM2VkYTA3ODU0Nzk1NjYwOGMwNjNhYjk2NWU5MGU5XQorCitDVkU6IENWRS0yMDE4LTEwMDAyMDUKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIEtjb25maWcgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKysKKyBjb21tb24vaW1hZ2Utc2lnLmMgICAgICAgICAgfCAgNSArKysrKworIHRlc3QvcHkvdGVzdHMvdGVzdF92Ym9vdC5weSB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHRvb2xzL01ha2VmaWxlICAgICAgICAgICAgICB8ICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0tjb25maWcgYi9LY29uZmlnCitpbmRleCA1YTgyYzk1Li5jOGI4NmNkIDEwMDY0NAorLS0tIGEvS2NvbmZpZworKysrIGIvS2NvbmZpZworQEAgLTI2Nyw2ICsyNjcsMTYgQEAgY29uZmlnIEZJVF9TSUdOQVRVUkUKKyAJICBmb3JtYXQgc3VwcG9ydCBpbiB0aGlzIGNhc2UsIGVuYWJsZSBpdCB1c2luZworIAkgIENPTkZJR19JTUFHRV9GT1JNQVRfTEVHQUNZLgorIAorK2NvbmZpZyBGSVRfU0lHTkFUVVJFX01BWF9TSVpFCisrCWhleCAiTWF4IHNpemUgb2Ygc2lnbmVkIEZJVCBzdHJ1Y3R1cmVzIgorKwlkZXBlbmRzIG9uIEZJVF9TSUdOQVRVUkUKKysJZGVmYXVsdCAweDEwMDAwMDAwCisrCWhlbHAKKysJICBUaGlzIG9wdGlvbiBzZXRzIGEgbWF4IHNpemUgaW4gYnl0ZXMgZm9yIHZlcmlmaWVkIEZJVCB1SW1hZ2VzLgorKwkgIEEgc2FuZSB2YWx1ZSBvZiAyNTZNQiBwcm90ZWN0cyBjb3JydXB0ZWQgRFRCIHN0cnVjdHVyZXMgZnJvbSBvdmVybGFwcGluZworKwkgIGRldmljZSBtZW1vcnkuIEFzc3VyZSB0aGlzIHNpemUgZG9lcyBub3QgZXh0ZW5kIHBhc3QgZXhwZWN0ZWQgc3RvcmFnZQorKwkgIHNwYWNlLgorKworIGNvbmZpZyBGSVRfVkVSQk9TRQorIAlib29sICJTaG93IHZlcmJvc2UgbWVzc2FnZXMgd2hlbiBGSVQgaW1hZ2VzIGZhaWwiCisgCWhlbHAKK2RpZmYgLS1naXQgYS9jb21tb24vaW1hZ2Utc2lnLmMgYi9jb21tb24vaW1hZ2Utc2lnLmMKK2luZGV4IGY2NWQ4ODMuLjhkMmZkMTAgMTAwNjQ0CistLS0gYS9jb21tb24vaW1hZ2Utc2lnLmMKKysrKyBiL2NvbW1vbi9pbWFnZS1zaWcuYworQEAgLTE1Niw2ICsxNTYsMTEgQEAgc3RhdGljIGludCBmaXRfaW1hZ2Vfc2V0dXBfdmVyaWZ5KHN0cnVjdCBpbWFnZV9zaWduX2luZm8gKmluZm8sCisgeworIAljaGFyICphbGdvX25hbWU7CisgCisrCWlmIChmZHRfdG90YWxzaXplKGZpdCkgPiBDT05GSUdfRklUX1NJR05BVFVSRV9NQVhfU0laRSkgeworKwkJKmVycl9tc2dwID0gIlRvdGFsIHNpemUgdG9vIGxhcmdlIjsKKysJCXJldHVybiAxOworKwl9CisrCisgCWlmIChmaXRfaW1hZ2VfaGFzaF9nZXRfYWxnbyhmaXQsIG5vZmZzZXQsICZhbGdvX25hbWUpKSB7CisgCQkqZXJyX21zZ3AgPSAiQ2FuJ3QgZ2V0IGhhc2ggYWxnbyBwcm9wZXJ0eSI7CisgCQlyZXR1cm4gLTE7CitkaWZmIC0tZ2l0IGEvdGVzdC9weS90ZXN0cy90ZXN0X3Zib290LnB5IGIvdGVzdC9weS90ZXN0cy90ZXN0X3Zib290LnB5CitpbmRleCBlZTkzOWYyLi4zZDI1ZWMzIDEwMDY0NAorLS0tIGEvdGVzdC9weS90ZXN0cy90ZXN0X3Zib290LnB5CisrKysgYi90ZXN0L3B5L3Rlc3RzL3Rlc3RfdmJvb3QucHkKK0BAIC0yNiw2ICsyNiw3IEBAIFRlc3RzIHJ1biB3aXRoIGJvdGggU0hBMSBhbmQgU0hBMjU2IGhhc2hpbmcuCisgCisgaW1wb3J0IHB5dGVzdAorIGltcG9ydCBzeXMKKytpbXBvcnQgc3RydWN0CisgaW1wb3J0IHVfYm9vdF91dGlscyBhcyB1dGlsCisgCisgQHB5dGVzdC5tYXJrLmJvYXJkc3BlYygnc2FuZGJveCcpCitAQCAtMTA1LDYgKzEwNiwyNiBAQCBkZWYgdGVzdF92Ym9vdCh1X2Jvb3RfY29uc29sZSk6CisgICAgICAgICB1dGlsLnJ1bl9hbmRfbG9nKGNvbnMsIFtta2ltYWdlLCAnLUYnLCAnLWsnLCB0bXBkaXIsICctSycsIGR0YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctcicsIGZpdF0pCisgCisrICAgIGRlZiByZXBsYWNlX2ZpdF90b3RhbHNpemUoc2l6ZSk6CisrICAgICAgICAiIiJSZXBsYWNlIEZJVCBoZWFkZXIncyB0b3RhbHNpemUgd2l0aCBzb21ldGhpbmcgZ3JlYXRlci4KKysKKysgICAgICAgIFRoZSB0b3RhbHNpemUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gRklUX1NJR05BVFVSRV9NQVhfU0laRS4KKysgICAgICAgIElmIHRoZSBzaXplIGlzIGdyZWF0ZXIsIHRoZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIHNob3VsZCByZXR1cm4gZmFsc2UuCisrCisrICAgICAgICBBcmdzOgorKyAgICAgICAgICAgIHNpemU6IFRoZSBuZXcgdG90YWxzaXplIG9mIHRoZSBoZWFkZXIKKysKKysgICAgICAgIFJldHVybnM6CisrICAgICAgICAgICAgcHJldl9zaXplOiBUaGUgcHJldmlvdXMgdG90YWxzaXplIHJlYWQgZnJvbSB0aGUgaGVhZGVyCisrICAgICAgICAiIiIKKysgICAgICAgIHRvdGFsX3NpemUgPSAwCisrICAgICAgICB3aXRoIG9wZW4oZml0LCAncitiJykgYXMgaGFuZGxlOgorKyAgICAgICAgICAgIGhhbmRsZS5zZWVrKDQpCisrICAgICAgICAgICAgdG90YWxfc2l6ZSA9IGhhbmRsZS5yZWFkKDQpCisrICAgICAgICAgICAgaGFuZGxlLnNlZWsoNCkKKysgICAgICAgICAgICBoYW5kbGUud3JpdGUoc3RydWN0LnBhY2soIj5JIiwgc2l6ZSkpCisrICAgICAgICByZXR1cm4gc3RydWN0LnVucGFjaygiPkkiLCB0b3RhbF9zaXplKVswXQorKworICAgICBkZWYgdGVzdF93aXRoX2FsZ28oc2hhX2FsZ28pOgorICAgICAgICAgIiIiVGVzdCB2ZXJpZmllZCBib290IHdpdGggdGhlIGdpdmVuIGhhc2ggYWxnb3JpdGhtLgorIAorQEAgLTE0Niw2ICsxNjcsMTggQEAgZGVmIHRlc3RfdmJvb3QodV9ib290X2NvbnNvbGUpOgorICAgICAgICAgdXRpbC5ydW5fYW5kX2xvZyhjb25zLCBbZml0X2NoZWNrX3NpZ24sICctZicsIGZpdCwgJy1rJywgdG1wZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1rJywgZHRiXSkKKyAKKysgICAgICAgICMgUmVwbGFjZSBoZWFkZXIgYnl0ZXMKKysgICAgICAgIGJjZmcgPSB1X2Jvb3RfY29uc29sZS5jb25maWcuYnVpbGRjb25maWcKKysgICAgICAgIG1heF9zaXplID0gaW50KGJjZmcuZ2V0KCdjb25maWdfZml0X3NpZ25hdHVyZV9tYXhfc2l6ZScsIDB4MTAwMDAwMDApLCAwKQorKyAgICAgICAgZXhpc3Rpbmdfc2l6ZSA9IHJlcGxhY2VfZml0X3RvdGFsc2l6ZShtYXhfc2l6ZSArIDEpCisrICAgICAgICBydW5fYm9vdG0oc2hhX2FsZ28sICdTaWduZWQgY29uZmlnIHdpdGggYmFkIGhhc2gnLCAnQmFkIERhdGEgSGFzaCcsIEZhbHNlKQorKyAgICAgICAgY29ucy5sb2cuYWN0aW9uKCclczogQ2hlY2sgb3ZlcmZsb3dlZCBGSVQgaGVhZGVyIHRvdGFsc2l6ZScgJSBzaGFfYWxnbykKKysKKysgICAgICAgICMgUmVwbGFjZSB3aXRoIGV4aXN0aW5nIGhlYWRlciBieXRlcworKyAgICAgICAgcmVwbGFjZV9maXRfdG90YWxzaXplKGV4aXN0aW5nX3NpemUpCisrICAgICAgICBydW5fYm9vdG0oc2hhX2FsZ28sICdzaWduZWQgY29uZmlnJywgJ2RldisnLCBUcnVlKQorKyAgICAgICAgY29ucy5sb2cuYWN0aW9uKCclczogQ2hlY2sgZGVmYXVsdCBGSVQgaGVhZGVyIHRvdGFsc2l6ZScgJSBzaGFfYWxnbykKKysKKyAgICAgICAgICMgSW5jcmVtZW50IHRoZSBmaXJzdCBieXRlIG9mIHRoZSBzaWduYXR1cmUsIHdoaWNoIHNob3VsZCBjYXVzZSBmYWlsdXJlCisgICAgICAgICBzaWcgPSB1dGlsLnJ1bl9hbmRfbG9nKGNvbnMsICdmZHRnZXQgLXQgYnggJXMgJXMgdmFsdWUnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpdCwgc2lnX25vZGUpKQorZGlmZiAtLWdpdCBhL3Rvb2xzL01ha2VmaWxlIGIvdG9vbHMvTWFrZWZpbGUKK2luZGV4IDVkZDMzZWQuLjBjMzM0MWUgMTAwNjQ0CistLS0gYS90b29scy9NYWtlZmlsZQorKysrIGIvdG9vbHMvTWFrZWZpbGUKK0BAIC0xMzMsNiArMTMzLDcgQEAgaWZkZWYgQ09ORklHX0ZJVF9TSUdOQVRVUkUKKyAjIFRoaXMgYWZmZWN0cyBpbmNsdWRlL2ltYWdlLmgsIGJ1dCBpbmNsdWRpbmcgdGhlIGJvYXJkIGNvbmZpZyBmaWxlCisgIyBpcyB0cmlja3ksIHNvIG1hbnVhbGx5IGRlZmluZSB0aGlzIG9wdGlvbnMgaGVyZS4KKyBIT1NUX0VYVFJBQ0ZMQUdTCSs9IC1EQ09ORklHX0ZJVF9TSUdOQVRVUkUKKytIT1NUX0VYVFJBQ0ZMQUdTCSs9IC1EQ09ORklHX0ZJVF9TSUdOQVRVUkVfTUFYX1NJWkU9JChDT05GSUdfRklUX1NJR05BVFVSRV9NQVhfU0laRSkKKyBlbmRpZgorIAorIGlmZGVmIENPTkZJR19TWVNfVV9CT09UX09GRlMKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjYWExNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUVuYWJsZWQgZGhjcCBjbGllbnQgZnVuY3Rpb25hbGl0eSBmb3IgWW9jdG8gcmVmZXJlbmNlCi1oYXJkd2FyZSBNUEM4MzE1RS1SREIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IGdpdC9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCi0rKysgZ2l0L2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCi1AQCAtMTIsNiArMTIsNyBAQCBDT05GSUdfQ01EX1BDST15Ci0gQ09ORklHX0NNRF9TQVRBPXkKLSBDT05GSUdfQ01EX1VTQj15Ci0gIyBDT05GSUdfQ01EX1NFVEVYUFIgaXMgbm90IHNldAotK0NPTkZJR19DTURfREhDUD15Ci0gQ09ORklHX0NNRF9NSUk9eQotIENPTkZJR19DTURfUElORz15Ci0gQ09ORklHX0NNRF9EQVRFPXkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjAxLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiODJiNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxOC4wMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZSIKLVNFQ1RJT04gPSAiYm9vdGxvYWRlcnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZXMvUkVBRE1FO21kNT1hMmM2NzhjZmQ0YTRkOTcxMzU1ODVjYWQ5MDg1NDFjNiIKLVBFID0gIjEiCi0KLSMgV2UgdXNlIHRoZSByZXZpc2lvbiBpbiBvcmRlciB0byBhdm9pZCBoYXZpbmcgdG8gZmV0Y2ggaXQgZnJvbSB0aGUKLSMgcmVwbyBkdXJpbmcgcGFyc2UKLVNSQ1JFViA9ICJmM2RkODdlMGI5ODk5OWE3OGU1MDBlOGM2ZDJiMDYzZWJhZGY1MzVhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5kZW54LmRlL3UtYm9vdC5naXQgXAotICAgIGZpbGU6Ly9NUEM4MzE1RVJEQi1lbmFibGUtREhDUC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZWZpX2xvYWRlci1hdm9pZC1tYWtlLXJhY2UtY29uZGl0aW9uLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjA3LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE4LjA3LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmI0NGRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTguMDcuaW5jCkBAIC0wLDAgKzEsMTggQEAKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgorU0VDVElPTiA9ICJib290bG9hZGVycyIKK0RFUEVORFMgKz0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PTMwNTAzZmQzMjE0MzJmYzcxMzIzOGY1ODIxOTNiNzhlIgorUEUgPSAiMSIKKworIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQorIyByZXBvIGR1cmluZyBwYXJzZQorU1JDUkVWID0gIjhjNWQ0ZmQwZWMyMjI3MDE1OThhMjdiMjZhYjcyNjVkNGNlZTQ1YTMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwMjA1LTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAwMDIwNS0yLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE4LjAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjg4N2ExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgZndfcHJpbnRlbnYvc2V0ZW52IHV0aWxpdGllcyIKLURFUEVORFMgPSAibXRkLXV0aWxzIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhbHJlYWR5LXN0cmlwcGVkIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnSE9TVENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgVj0xJwotCi1pbmhlcml0IHVib290LWNvbmZpZwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICR7VUJPT1RfTUFDSElORX0KLQlvZV9ydW5tYWtlIGVudnRvb2xzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3ByaW50ZW52Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19zZXRlbnYKLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9lbnYvZndfZW52LmNvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3NzfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3NldGVudgotfQotCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiAke2JpbmRpcl9jcm9zc30iCi0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi1CQkNMQVNTRVhURU5EID0gImNyb3NzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOC4wNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjMTNlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTguMDcuYmIKQEAgLTAsMCArMSwzNCBAQAorcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYworCitTVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMiCitERVBFTkRTICs9ICJtdGQtdXRpbHMiCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdIT1NUQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCisKK2luaGVyaXQgdWJvb3QtY29uZmlnCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQorCW9lX3J1bm1ha2UgZW52dG9vbHMKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgorCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKK30KKworZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Cit9CisKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKK0JCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMDA4YmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE4LjAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIGltYWdlIGNyZWF0aW9uIHRvb2wiCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLUVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKLQotCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKLQkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCi0JIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KLQlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCi0KLQlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiZHRjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTguMDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhiZmYxZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxOC4wNy5iYgpAQCAtMCwwICsxLDI5IEBACityZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKK0RFUEVORFMgKz0gIm9wZW5zc2wiCisKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2Ugc2FuZGJveF9kZWZjb25maWcKKworCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKKwkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCisJIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KKwlzZWQgLWkgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAuY29uZmlnCisKKwlvZV9ydW5tYWtlIGNyb3NzX3Rvb2xzIE5PX1NETD0xCit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2ltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtpbWFnZQorCWxuIC1zZiB1Ym9vdC1ta2ltYWdlICR7RH0ke2JpbmRpcn0vbWtpbWFnZQorfQorCitSREVQRU5EU18ke1BOfSArPSAiZHRjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKaW5kZXggOTVjMmY0ZC4uNDhmYmM1NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwpAQCAtMjMxLDcgKzIzMSw3IEBACiAgICAgICAgIHJtIC1mICR7VUJPT1RfQklOQVJZfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX1NZTUxJTkt9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke1VCT09UX0JJTkFSWX0KLSAgIGZpCisgICAgZmkKIAogICAgIGlmIFsgLW4gIiR7VUJPT1RfRUxGfSIgXQogICAgIHRoZW4KQEAgLTI2MywzMiArMjYzLDMyIEBACiAKICAgICAgaWYgWyAtbiAiJHtTUExfQklOQVJZfSIgXQogICAgICB0aGVuCi0gICAgICAgICBpZiBbIC1uICIke1VCT09UX0NPTkZJR30iIF0KLSAgICAgICAgIHRoZW4KLSAgICAgICAgICAgICBmb3IgY29uZmlnIGluICR7VUJPT1RfTUFDSElORX07IGRvCi0gICAgICAgICAgICAgICAgIGk9JChleHByICRpICsgMSk7Ci0gICAgICAgICAgICAgICAgIGZvciB0eXBlIGluICR7VUJPT1RfQ09ORklHfTsgZG8KLSAgICAgICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7Ci0gICAgICAgICAgICAgICAgICAgICBpZiBbICRqIC1lcSAkaSBdCi0gICAgICAgICAgICAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vJHtTUExfQklOQVJZfSAke0RFUExPWURJUn0vJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0KLSAgICAgICAgICAgICAgICAgICAgICAgICBybSAtZiAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9LSR7dHlwZX0KLSAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9LSR7dHlwZX0KLSAgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfS0ke3R5cGV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQotICAgICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgICAgICB1bnNldCAgagotICAgICAgICAgICAgIGRvbmUKLSAgICAgICAgICAgICB1bnNldCAgaQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtTUExfQklOQVJZfSAke0RFUExPWURJUn0vJHtTUExfSU1BR0V9Ci0gICAgICAgICAgICAgcm0gLWYgJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9ICR7REVQTE9ZRElSfS8ke1NQTF9TWU1MSU5LfQotICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9Ci0gICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30KLSAgICAgICAgIGZpCi0gICAgIGZpCisgICAgICAgIGlmIFsgLW4gIiR7VUJPT1RfQ09ORklHfSIgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBmb3IgY29uZmlnIGluICR7VUJPT1RfTUFDSElORX07IGRvCisgICAgICAgICAgICAgICAgaT0kKGV4cHIgJGkgKyAxKTsKKyAgICAgICAgICAgICAgICBmb3IgdHlwZSBpbiAke1VCT09UX0NPTkZJR307IGRvCisgICAgICAgICAgICAgICAgICAgIGo9JChleHByICRqICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KKyAgICAgICAgICAgICAgICAgICAgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vJHtTUExfQklOQVJZfSAke0RFUExPWURJUn0vJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJtIC1mICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30tJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfS0ke3R5cGV9CisgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX0JJTkFSWU5BTUV9CisgICAgICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9LSR7dHlwZX0tJHtQVn0tJHtQUn0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9LSR7dHlwZX0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiAke1NQTF9JTUFHRX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30KKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgdW5zZXQgIGoKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgIHVuc2V0ICBpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtTUExfQklOQVJZfSAke0RFUExPWURJUn0vJHtTUExfSU1BR0V9CisgICAgICAgICAgICBybSAtZiAke0RFUExPWURJUn0vJHtTUExfQklOQVJZTkFNRX0gJHtERVBMT1lESVJ9LyR7U1BMX1NZTUxJTkt9CisgICAgICAgICAgICBsbiAtc2YgJHtTUExfSU1BR0V9ICR7REVQTE9ZRElSfS8ke1NQTF9CSU5BUllOQU1FfQorICAgICAgICAgICAgbG4gLXNmICR7U1BMX0lNQUdFfSAke0RFUExPWURJUn0vJHtTUExfU1lNTElOS30KKyAgICAgICAgZmkKKyAgICBmaQogCiAKICAgICBpZiBbIC1uICIke1VCT09UX0VOVn0iIF0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTguMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE4LjA3LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE4LjAxLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE4LjA3LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaAppbmRleCBhNmIyNDFmLi43ZWRmZjI2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHMvdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlscy91c2ItZGV2aWNlcy1hdm9pZC1kZXBlbmRlbmN5LW9uLWJhc2gucGF0Y2gKQEAgLTEsMzAgKzEsMzAgQEAKLUZyb20gMzMzZDVmYmJjMDM0ODFmMWFhMjIyYmQ2OGMyNjA5ZGIxNjhhZTNlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotRGF0ZTogVGh1LCAyNiBKdWwgMjAxMiAxMDozNzozMiArMDEwMAotU3ViamVjdDogW1BBVENIXSB1c2ItZGV2aWNlczogYXZvaWQgZGVwZW5kZW5jeSBvbiBiYXNoCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChodHRwczovL2dpdGh1Yi5jb20vZ3JlZ2toL3VzYnV0aWxzL2NvbW1pdC81MDhkMWFjZjQyZTFiZmQ0NzBjNmJmMWExODg1NzRjNjljMjBhZWVkKQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIAotQnkgdmlydHVlIG9mIGhhdmluZyAjIS9iaW4vYmFzaCB0aGlzIHNjcmlwdCBkZWNsYXJlZCB0aGF0IGl0IHJlcXVpcmVzCi1iYXNoLCBob3dldmVyIG1hbnVhbCBleGFtaW5hdGlvbiwgY2hlY2tiYXNoaXNtcyBhbmQgdGVzdHMgd2l0aCBkYXNoCi1hbmQgYnVzeWJveCBzaG93IHRoYXQgaXQgZG9lc24ndCBjb250YWluIGFueSBiYXNoaXNtcywgc28gY2hhbmdlIHRoZQotaGVhZGVyIHRvIGF2b2lkIHRoZSBkZXBlbmRlbmN5LgorRnJvbSAxYzkxNjJhNWIzMDU1MGFlYzhmYTE2MzkwNjA2N2JjMTc5MjkxYjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjcgSnVsIDIwMTggMTU6Mjg6MzQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdXNiLWRldmljZXM6IHVzZSAvYmluL3NoCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVGhpcyBzY3JpcHQgZG9lc24ndCB1c2UgYW55IGJhc2hpc21zLCBzbyBjaGFuZ2UgdGhlIGhhc2hiYW5nIHRvIC9iaW4vc2guCiAKLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorRml4ZXMgIzczLgorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogLS0tCi0gdXNiLWRldmljZXMgfCAgICAyICstCisgdXNiLWRldmljZXMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS91c2ItZGV2aWNlcyBiL3VzYi1kZXZpY2VzCi1pbmRleCBiMjA1MmUyLi4xNGE1MzU4IDEwMDc1NQoraW5kZXggYWZiNDIxNy4uODlkMWI3ZCAxMDA3NTUKIC0tLSBhL3VzYi1kZXZpY2VzCiArKysgYi91c2ItZGV2aWNlcwogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2Jhc2gKICsjIS9iaW4vc2gKLSAKLSAjIENvcHlyaWdodDogMjAwOSBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdAa3JvYWguY29tPgotICMgICAgICAgICAgICAyMDA5IFJhbmR5IER1bmxhcCA8cmR1bmxhcEB4ZW5vdGltZS5uZXQ+CisgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDkgR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVnQGtyb2FoLmNvbT4KIC0tIAotMS43LjkuNQorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdXNidXRpbHMvdXNidXRpbHNfMDA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmZjMGRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkhvc3Qgc2lkZSBVU0IgY29uc29sZSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbHN1c2IgdXRpbGl0eSBmb3IgaW5zcGVjdGluZyB0aGUgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIFVTQiBidXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saW51eC11c2Iub3JnIgotU0VDVElPTiA9ICJiYXNlIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1ERVBFTkRTID0gImxpYnVzYiB6bGliIHZpcnR1YWwvbGliaWNvbnYgdWRldiIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL3VzYi91c2J1dGlscy91c2J1dGlscy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdXNiLWRldmljZXMtYXZvaWQtZGVwZW5kZW5jeS1vbi1iYXNoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNWRiYzQ5OGIyZWI1MDU4ZjdhNTdmYzY1MzJkMGFhZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzM1NDMyOTNhMTdjNzgwMzk5NGVhYzk3YTQ5ZTU4YjM3N2UwOGU2Mjk5YmExMWFhZDA5Nzk0YjkxMzQwZThiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAibHN1c2IiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9wa2djb25maWciCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gInVkZXYtaHdkYiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImxpYmJvb3N0LXN5c3RlbSBsaWJib29zdC10aHJlYWQiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0rICIke1BOfS1weXRob24iCi1GSUxFU18ke1BOfS1weXRob24gKz0gIiR7YmluZGlyfS9sc3VzYi5weSIKLVJERVBFTkRTXyR7UE59LXB5dGhvbiA9ICJweXRob24zLWNvcmUiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHNlZCAtaSAtRSAnMXMsIyEuK3B5dGhvbiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9sc3VzYi5weQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3VzYnV0aWxzL3VzYnV0aWxzXzAxMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZkMDViOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91c2J1dGlscy91c2J1dGlsc18wMTAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJIb3N0IHNpZGUgVVNCIGNvbnNvbGUgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiQ29udGFpbnMgdGhlIGxzdXNiIHV0aWxpdHkgZm9yIGluc3BlY3RpbmcgdGhlIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBVU0IgYnVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGludXgtdXNiLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisgJiAoR1BMdjIgfCBHUEx2MykiCisjIExpY2Vuc2UgZmlsZXMgd2VudCBtaXNzaW5nIGluIDAxMCwgd2hlbiAwMTEgaXMgcmVsZWFzZWQgYWRkIExJQ0VOU0VTLyogYmFjaworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbHN1c2IuYztlbmRsaW5lPTE7bWQ1PTdkNDg2MWQ5NzhmZjViYTdjYjJiMzE5ZWQxZDRhZmUzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xzdXNiLnB5LmluO2JlZ2lubGluZT0yO2VuZGxpbmU9MjttZDU9MTk0ZDZhMDIyNmJmOTBmNGY2ODNlODk2ODg3OGI2Y2QiCisKK0RFUEVORFMgPSAibGlidXNiMSB2aXJ0dWFsL2xpYmljb252IHVkZXYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy91c2IvdXNidXRpbHMvdXNidXRpbHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3VzYi1kZXZpY2VzLWF2b2lkLWRlcGVuZGVuY3ktb24tYmFzaC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjVlYjJkMmQ2OGY5ZWQ2ZGMzZTk2NTlhNTk4OGY3ZWQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4MWJhNDdmYjJkZjEwYzNiYTU0YTRjZDY3NTVhOTAzNzcxODA4OTA3ODhlNDc2Zjk5ZDQ4MGVhOWJjOGJiNTgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsc3VzYiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworIyBUaGUgYmluYXJpZXMgYXJlIG1vc3RseSBHUEx2MisgYXBhcnQgZnJvbSBsc3VzYi5weSB3aGljaCBpcyBHUEx2MiBvciB2My4KK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1weXRob24gPSAiR1BMdjIgfCBHUEx2MyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAidWRldi1od2RiIgorCitQQUNLQUdFX0JFRk9SRV9QTiA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke2JpbmRpcn0vbHN1c2IucHkiCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uMy1jb3JlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9TdXBwb3J0LWZvci1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmQvU3VwcG9ydC1mb3ItY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmNzBhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmQvU3VwcG9ydC1mb3ItY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA4ZWRhNTk2NTRmZDMxNDE2MTY0Yzc4ZjYwNjg3MTViMDE3NjdlZDRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2VyaGV5IFBvcG92eWNoIDxzZXJoZS5wb3BvdnljaEBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDMxIE9jdCAyMDE4IDA3OjMxOjQ3IC0wNDAwCitTdWJqZWN0OiB2ODZkOiBTdXBwb3J0IGZvciBjcm9zcyBjb21waWxhdGlvbgorCitJdCBpcyBjb21tb24gdG8gYnVpbGQgb24gb25lIHN5c3RlbSBmb3IgYW5vdGhlciAoZS5nLiBvbiBJQk0gUG93ZXIKK21hY2hpbmUgZm9yIEludGVsIHg4Nikgd2hlcmUgSE9TVF9BUkNIICh1bmFtZSAtbSkgIT0gVEFSR0VUX0FSQ0guCisKK1Rha2UgVEFSR0VUX0FSQ0ggZnJvbSBlbnZpcm9ubWVudCBpZiBpdCBpcyBnaXZlbiwgb3RoZXJ3aXNlIGZhbGwgYmFjawordG8gYHVuYW1lIC1tYC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBTZXJoZXkgUG9wb3Z5Y2ggPHNlcmhlLnBvcG92eWNoQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBjYmJkNmIzLi4wNDZhYTk5IDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC0yMyw3ICsyMyw4IEBAIGNvcHRfeDg2ZW11X3R5cGU9ImJvb2wiCisgY29wdF94ODZlbXVfZGVmPWF1dG8KKyBjb3B0X3g4NmVtdV90ZXN0KCkKKyB7CistCWxvY2FsIG09YHVuYW1lIC1tYAorKwlsb2NhbCBtPSIke1RBUkdFVF9BUkNIOi0kKHVuYW1lIC1tKX0iCisrCisgCWlmIFsgIiRtIiA9ICJpNjg2IiAtbyAiJG0iID0gImk1ODYiIC1vICIkbSIgPSAiaTQ4NiIgLW8gIiRtIiA9ICJpMzg2IiBdOyB0aGVuCisgCQllY2hvICJuIjsKKyAJZWxpZiBbICIkbSIgPSAieDg2XzY0IiBdOyB0aGVuCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3Y4NmQvdjg2ZC9hYXJjaDY0LWhvc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkL2FhcmNoNjQtaG9zdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAxZmVkNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkL2FhcmNoNjQtaG9zdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUFjY2VwdCBhYXJjaDY0IGFzIHZhbGlkIGJ1aWxkIGhvc3QKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogdjg2ZC0wLjEuMTAvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdjg2ZC0wLjEuMTAub3JpZy9jb25maWd1cmUKLSsrKyB2ODZkLTAuMS4xMC9jb25maWd1cmUKLUBAIC0yNiw3ICsyNiw3IEBAIGNvcHRfeDg2ZW11X3Rlc3QoKQotIAlsb2NhbCBtPWB1bmFtZSAtbWAKLSAJaWYgWyAiJG0iID0gImk2ODYiIC1vICIkbSIgPSAiaTU4NiIgLW8gIiRtIiA9ICJpNDg2IiAtbyAiJG0iID0gImkzODYiIF07IHRoZW4KLSAJCWVjaG8gIm4iOwotLQllbGlmIFsgIiRtIiA9ICJ4ODZfNjQiIF07IHRoZW4KLSsJZWxpZiBbICIkbSIgPSAieDg2XzY0IiAtbyAiJG0iID0gImFhcmNoNjQiIF07IHRoZW4KLSAJCWVjaG8gInkiOwotIAllbHNlCi0gCQllY2hvICJJdCBsb29rcyBsaWtlIHlvdXIgYXJjaGl0ZWN0dXJlICckbScgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiB2ODZkLiIgPiYyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avdjg2ZC92ODZkXzAuMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCmluZGV4IGY5N2I4MGQuLjg0ZTI3ZDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC92ODZkL3Y4NmRfMC4xLjEwLmJiCkBAIC0xMiw3ICsxMiw3IEBACiBTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTEwNDI3VDAzNTUwNlovcG9vbC9tYWluL3YvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9VcGRhdGUteDg2ZW11LWZyb20tWC5vcmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYXItZnJvbS1lbnYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFyY2g2NC1ob3N0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1N1cHBvcnQtZm9yLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjg4OTY4NmVjODQyNDQ2OGZlMGQyMDU3NDJlNzdhNGMyIgpAQCAtMjIsNyArMjIsNyBAQAogQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKIAogZG9fY29uZmlndXJlICgpIHsKLQkuL2NvbmZpZ3VyZSAtLXdpdGgteDg2ZW11CisJVEFSR0VUX0FSQ0g9IiR7VEFSR0VUX0FSQ0h9IiAuL2NvbmZpZ3VyZSAtLXdpdGgteDg2ZW11CiB9CiAKIGRvX2NvbXBpbGUgKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKaW5kZXggNTY0OGUzOC4uYTc3NjUzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiCkBAIC0xLDMxICsxLDE4IEBACi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb21tb24vYWRkcmVzcy5oO2VuZGxpbmU9MjU7bWQ1PWIxZDFkMmNkYTFjMDdlYjg0OGVhN2Q2MjE1NzEyZDlkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWNvcmUvZG5zLmg7ZW5kbGluZT0yMzttZDU9NmZlODI1OTBiODFhYTBkZGVhNTA5NWI1NDhlMmZkY2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktZGFlbW9uL21haW4uYztlbmRsaW5lPTIxO21kNT05ZWU3NzM2OGM1NDA3YWY3N2NhYWVmMWIwNzI4NTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jbGllbnQvY2xpZW50Lmg7ZW5kbGluZT0yMzttZDU9ZjRhYzc0MWEyNWM0ZjQzNDAzOWJhM2UxOGM4Njc0Y2YiCi0KIHJlcXVpcmUgYXZhaGkuaW5jCiAKIGluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAotU1JDX1VSSVttZDVzdW1dID0gImQ3NmM1OWQwODgyYWM2YzI1NmQ3MGEyYTU4NTM2MmE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YTk5YjVkZmU3ZmRhZTc5NGUzZDFlZTdhNjI5NzNhMzY4ZTkxZTQxNGJkMGRmYTVkODQ0MzRkZTViMTQ4MDQiCi0KIERFUEVORFMgKz0gImF2YWhpIgogCiBBVkFISV9HVEsgPSAiZ3RrMyIKIAogUyA9ICIke1dPUktESVJ9L2F2YWhpLSR7UFZ9IgogCi1QQUNLQUdFUyA9ICIke1BOfSAke1BOfS11dGlscyAke1BOfS1kYmcgJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiAke1BOfS1kb2MgYXZhaGktZGlzY292ZXIiCitQQUNLQUdFUyArPSAiJHtQTn0tdXRpbHMgYXZhaGktZGlzY292ZXIiCiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJhdmFoaS11aSouc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmF2YWhpLXVpJHtTT0xJQlNERVZ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuYSIKLQogRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2IqICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zL2IqIgotCiBGSUxFU19hdmFoaS1kaXNjb3ZlciA9ICIke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9hdmFoaS1kaXNjb3Zlci5kZXNrdG9wIFwKICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYXZhaGkvaW50ZXJmYWNlcy9hdmFoaS1kaXNjb3Zlci51aSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXZhaGktZGlzY292ZXItc3RhbmRhbG9uZSBcCkBAIC01OSw0ICs0NiwzIEBACiAgICAgICAgIHJtICR7RH0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8gLXJmCiAgICAgICAgIHJtICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvIC1yZgogfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwppbmRleCBlYzM2OGRlLi4xMTg0Njg0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKQEAgLTEzLDE2ICsxMywyMCBAQAogIyBtYWpvciBwYXJ0IGlzIHVuZGVyIExHUEx2Mi4xKywgYnV0IHNldmVyYWwgLmR0ZCwgLnhzbCwgaW5pdHNjcmlwdHMgYW5kCiAjIHB5dGhvbiBzY3JpcHRzIGFyZSB1bmRlciBHUEx2MisKIExJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29tbW9uL2FkZHJlc3MuaDtlbmRsaW5lPTI1O21kNT1iMWQxZDJjZGExYzA3ZWI4NDhlYTdkNjIxNTcxMmQ5ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb3JlL2Rucy5oO2VuZGxpbmU9MjM7bWQ1PTZmZTgyNTkwYjgxYWEwZGRlYTUwOTViNTQ4ZTJmZGNiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWRhZW1vbi9tYWluLmM7ZW5kbGluZT0yMTttZDU9OWVlNzczNjhjNTQwN2FmNzdjYWFlZjFiMDcyODU5NjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY2xpZW50L2NsaWVudC5oO2VuZGxpbmU9MjM7bWQ1PWY0YWM3NDFhMjVjNGY0MzQwMzliYTNlMThjODY3NGNmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9hdmFoaS0ke1BWfS50YXIuZ3oiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9yZWxlYXNlcy8iCitTUkNfVVJJW21kNXN1bV0gPSAiZDc2YzU5ZDA4ODJhYzZjMjU2ZDcwYTJhNTg1MzYyYTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdhOTliNWRmZTdmZGFlNzk0ZTNkMWVlN2E2Mjk3M2EzNjhlOTFlNDE0YmQwZGZhNWQ4NDQzNGRlNWIxNDgwNCIKIAogREVQRU5EUyA9ICJleHBhdCBsaWJjYXAgbGliZGFlbW9uIGdsaWItMi4wIGludGx0b29sLW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9hdmFoaS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vYXZhaGktJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICBmaWxlOi8vMDBhdmFoaS1hdXRvaXBkIFwKLSAgICAgICAgICBmaWxlOi8vOTlhdmFoaS1hdXRvaXBkIFwKLSAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3JlbGVhc2VzLyIKLQogIyBGb3IgZ3RrIHJlbGF0ZWQgUEFDS0FHRUNPTkZJR3M6IGd0aywgZ3RrMwogQVZBSElfR1RLID89ICIiCiAKQEAgLTMxLDE4ICszNSw3IEBACiBQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKyIKIFBBQ0tBR0VDT05GSUdbZ3RrM10gPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKIAotVVNFUkFERF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktYXV0b2lwZCIKLVVTRVJBRERfUEFSQU1fYXZhaGktZGFlbW9uID0gIi0tc3lzdGVtIC0taG9tZSAvcnVuL2F2YWhpLWRhZW1vbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgYXZhaGkiCi0KLVVTRVJBRERfUEFSQU1fYXZhaGktYXV0b2lwZCA9ICItLXN5c3RlbSAtLWhvbWUgL3J1bi9hdmFoaS1hdXRvaXBkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtYyBcIkF2YWhpIGF1dG9pcCBkYWVtb25cIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFoaS1hdXRvaXBkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCB1c2VyYWRkIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtYXZhaGktcHJpdi1hY2Nlc3MtZ3JvdXA9YWRtIFwKICAgICAgICAgICAgICAtLWRpc2FibGUtc3RhY2stcHJvdGVjdG9yIFwKQEAgLTczLDY3ICs2NiwxMiBAQAogICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2F2YWhpLWdvYmplY3QvLmxpYnM6JHtCfS9hdmFoaS1jb21tb24vLmxpYnM6JHtCfS9hdmFoaS1jbGllbnQvLmxpYnM6JHtCfS9hdmFoaS1nbGliLy5saWJzIgogfQogCi1QQUNLQUdFUyA9KyAiYXZhaGktZGFlbW9uIGxpYmF2YWhpLWNvbW1vbiBsaWJhdmFoaS1jb3JlIGxpYmF2YWhpLWNsaWVudCBhdmFoaS1kbnNjb25mZCBsaWJhdmFoaS1nbGliIGxpYmF2YWhpLXVpIGF2YWhpLWF1dG9pcGQgYXZhaGktdXRpbHMiCi0KLSMgQXMgYXZhaGkgZG9lc24ndCBwdXQgYW55IGZpbGVzIGludG8gUE4sIGNsZWFyIHRoZSBmaWxlcyBsaXN0IHRvIGF2b2lkIHByb2JsZW1zCi0jIGlmIGV4dHJhIGxpYnJhcmllcyBhcHBlYXIuCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hdmFoaS1hdXRvaXBkID0gIiR7c2JpbmRpcn0vYXZhaGktYXV0b2lwZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktYXV0b2lwZC5hY3Rpb24gXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RoY3AvKi9hdmFoaS1hdXRvaXBkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGhjcGMuZC8wMGF2YWhpLWF1dG9pcGQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkaGNwYy5kLzk5YXZhaGktYXV0b2lwZCIKLUZJTEVTX2xpYmF2YWhpLWNvbW1vbiA9ICIke2xpYmRpcn0vbGliYXZhaGktY29tbW9uLnNvLioiCi1GSUxFU19saWJhdmFoaS1jb3JlID0gIiR7bGliZGlyfS9saWJhdmFoaS1jb3JlLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvQXZhaGlDb3JlKi50eXBlbGliIgotRklMRVNfYXZhaGktZGFlbW9uID0gIiR7c2JpbmRpcn0vYXZhaGktZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL2F2YWhpLWRhZW1vbi5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL2hvc3RzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvYXZhaGktZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL2ludHJvc3BlY3Rpb24vKi5pbnRyb3NwZWN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL2F2YWhpLXNlcnZpY2UuZHRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL3NlcnZpY2UtdHlwZXMgXAotICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyIKLUZJTEVTX2xpYmF2YWhpLWNsaWVudCA9ICIke2xpYmRpcn0vbGliYXZhaGktY2xpZW50LnNvLioiCi1GSUxFU19saWJhdmFoaS11aSA9ICIke2xpYmRpcn0vbGliYXZhaGktdWkuc28uKiIKLUZJTEVTX2F2YWhpLWRuc2NvbmZkID0gIiR7c2JpbmRpcn0vYXZhaGktZG5zY29uZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1kbnNjb25mZC5hY3Rpb24gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvYXZhaGktZG5zY29uZmQiCi1GSUxFU19saWJhdmFoaS1nbGliID0gIiR7bGliZGlyfS9saWJhdmFoaS1nbGliLnNvLioiCi1GSUxFU19saWJhdmFoaS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJhdmFoaS1nb2JqZWN0LnNvLiogICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wL0F2YWhpKi50eXBlbGliIgotRklMRVNfYXZhaGktdXRpbHMgPSAiJHtiaW5kaXJ9L2F2YWhpLSoiCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICJhdmFoaS1kYWVtb24gKD0gJHtFWFRFTkRQS0dWfSkgbGliYXZhaGktY29yZSAoPSAke0VYVEVORFBLR1Z9KSBsaWJhdmFoaS1jbGllbnQgKD0gJHtFWFRFTkRQS0dWfSkiCi0KLVJSRUNPTU1FTkRTX2F2YWhpLWRhZW1vbl9hcHBlbmRfbGliYy1nbGliYyA9ICIgbGlibnNzLW1kbnMiCiBSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgbGlibnNzLW1kbnMiCiAKLUNPTkZGSUxFU19hdmFoaS1kYWVtb24gPSAiJHtzeXNjb25mZGlyfS9hdmFoaS9hdmFoaS1kYWVtb24uY29uZiIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktZG5zY29uZmQiCi1JTklUU0NSSVBUX05BTUVfYXZhaGktZGFlbW9uID0gImF2YWhpLWRhZW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TX2F2YWhpLWRhZW1vbiA9ICJkZWZhdWx0cyAyMSAxOSIKLUlOSVRTQ1JJUFRfTkFNRV9hdmFoaS1kbnNjb25mZCA9ICJhdmFoaS1kbnNjb25mZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX2F2YWhpLWRuc2NvbmZkID0gImRlZmF1bHRzIDIyIDE5IgotCiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCiAJcm0gLXJmICR7RH0vcnVuCiAJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzCiAJdGVzdCAtZCAke0R9JHtkYXRhZGlyfS9kYnVzLTEgJiYgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7ZGF0YWRpcn0vZGJ1cy0xCiAJcm0gLXJmICR7RH0ke2xpYmRpcn0vYXZhaGkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQKLQlpbnN0YWxsICR7V09SS0RJUn0vMDBhdmFoaS1hdXRvaXBkICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kCi0JaW5zdGFsbCAke1dPUktESVJ9Lzk5YXZhaGktYXV0b2lwZCAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZAotfQotCi0jIEF0IHRoZSB0aW1lIHRoZSBwb3N0aW5zdCBydW5zLCBkYnVzIG1pZ2h0IG5vdCBiZSBzZXR1cCBzbyBvbmx5IHJlc3RhcnQgaWYgcnVubmluZyAKLSMgRG9uJ3QgZXhpdCBlYXJseSwgYmVjYXVzZSB1cGRhdGUtcmMuZCBuZWVkcyB0byBydW4gc3Vic2VxdWVudGx5LgotCi1wa2dfcG9zdGluc3RfYXZhaGktZGFlbW9uICgpIHsKLWlmIFsgLXogIiREIiBdOyB0aGVuCi0Ja2lsbGFsbCAtcSAtSFVQIGRidXMtZGFlbW9uIHx8IHRydWUKLWZpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgppbmRleCA3YzkxZjEwLi4zZDVmMzM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKQEAgLTEsMjAgKzEsODAgQEAKIHJlcXVpcmUgYXZhaGkuaW5jCiAKLWluaGVyaXQgc3lzdGVtZAorU1JDX1VSSSArPSAiZmlsZTovLzAwYXZhaGktYXV0b2lwZCBcCisgICAgICAgICAgIGZpbGU6Ly85OWF2YWhpLWF1dG9pcGQgXAorICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vcGVuaW5nLWV0Yy1yZXNvbHYuY29uZi1lcnJvci5wYXRjaCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQKKworUEFDS0FHRVMgPSsgImxpYmF2YWhpLWdvYmplY3QgYXZhaGktZGFlbW9uIGxpYmF2YWhpLWNvbW1vbiBsaWJhdmFoaS1jb3JlIGxpYmF2YWhpLWNsaWVudCBhdmFoaS1kbnNjb25mZCBsaWJhdmFoaS1nbGliIGF2YWhpLWF1dG9pcGQgYXZhaGktdXRpbHMiCisKKyMgQXMgYXZhaGkgZG9lc24ndCBwdXQgYW55IGZpbGVzIGludG8gUE4sIGNsZWFyIHRoZSBmaWxlcyBsaXN0IHRvIGF2b2lkIHByb2JsZW1zCisjIGlmIGV4dHJhIGxpYnJhcmllcyBhcHBlYXIuCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU19hdmFoaS1hdXRvaXBkID0gIiR7c2JpbmRpcn0vYXZhaGktYXV0b2lwZCBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktYXV0b2lwZC5hY3Rpb24gXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RoY3AvKi9hdmFoaS1hdXRvaXBkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGhjcGMuZC8wMGF2YWhpLWF1dG9pcGQgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkaGNwYy5kLzk5YXZhaGktYXV0b2lwZCIKK0ZJTEVTX2xpYmF2YWhpLWNvbW1vbiA9ICIke2xpYmRpcn0vbGliYXZhaGktY29tbW9uLnNvLioiCitGSUxFU19saWJhdmFoaS1jb3JlID0gIiR7bGliZGlyfS9saWJhdmFoaS1jb3JlLnNvLiogJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAvQXZhaGlDb3JlKi50eXBlbGliIgorRklMRVNfYXZhaGktZGFlbW9uID0gIiR7c2JpbmRpcn0vYXZhaGktZGFlbW9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL2F2YWhpLWRhZW1vbi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL2hvc3RzIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2F2YWhpL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvYXZhaGktZGFlbW9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL2ludHJvc3BlY3Rpb24vKi5pbnRyb3NwZWN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL2F2YWhpLXNlcnZpY2UuZHRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2F2YWhpL3NlcnZpY2UtdHlwZXMgXAorICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyIKK0ZJTEVTX2xpYmF2YWhpLWNsaWVudCA9ICIke2xpYmRpcn0vbGliYXZhaGktY2xpZW50LnNvLioiCitGSUxFU19hdmFoaS1kbnNjb25mZCA9ICIke3NiaW5kaXJ9L2F2YWhpLWRuc2NvbmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZG5zY29uZmQuYWN0aW9uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2F2YWhpLWRuc2NvbmZkIgorRklMRVNfbGliYXZhaGktZ2xpYiA9ICIke2xpYmRpcn0vbGliYXZhaGktZ2xpYi5zby4qIgorRklMRVNfbGliYXZhaGktZ29iamVjdCA9ICIke2xpYmRpcn0vbGliYXZhaGktZ29iamVjdC5zby4qICAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC9BdmFoaSoudHlwZWxpYiIKK0ZJTEVTX2F2YWhpLXV0aWxzID0gIiR7YmluZGlyfS9hdmFoaS0qIgorCitSREVQRU5EU18ke1BOfS1kZXYgPSAiYXZhaGktZGFlbW9uICg9ICR7RVhURU5EUEtHVn0pIGxpYmF2YWhpLWNvcmUgKD0gJHtFWFRFTkRQS0dWfSkgbGliYXZhaGktY2xpZW50ICg9ICR7RVhURU5EUEtHVn0pIgorCitSUkVDT01NRU5EU19hdmFoaS1kYWVtb25fYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYm5zcy1tZG5zIgorCitDT05GRklMRVNfYXZhaGktZGFlbW9uID0gIiR7c3lzY29uZmRpcn0vYXZhaGkvYXZhaGktZGFlbW9uLmNvbmYiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiYXZhaGktZGFlbW9uIGF2YWhpLWF1dG9pcGQiCitVU0VSQUREX1BBUkFNX2F2YWhpLWRhZW1vbiA9ICItLXN5c3RlbSAtLWhvbWUgL3J1bi9hdmFoaS1kYWVtb24gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGF2YWhpIgorCitVU0VSQUREX1BBUkFNX2F2YWhpLWF1dG9pcGQgPSAiLS1zeXN0ZW0gLS1ob21lIC9ydW4vYXZhaGktYXV0b2lwZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWMgXCJBdmFoaSBhdXRvaXAgZGFlbW9uXCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaGktYXV0b2lwZCIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJhdmFoaS1kYWVtb24gYXZhaGktZG5zY29uZmQiCitJTklUU0NSSVBUX05BTUVfYXZhaGktZGFlbW9uID0gImF2YWhpLWRhZW1vbiIKK0lOSVRTQ1JJUFRfUEFSQU1TX2F2YWhpLWRhZW1vbiA9ICJkZWZhdWx0cyAyMSAxOSIKK0lOSVRTQ1JJUFRfTkFNRV9hdmFoaS1kbnNjb25mZCA9ICJhdmFoaS1kbnNjb25mZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2F2YWhpLWRuc2NvbmZkID0gImRlZmF1bHRzIDIyIDE5IgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWRhZW1vbiAke1BOfS1kbnNjb25mZCIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1kYWVtb24gPSAiYXZhaGktZGFlbW9uLnNlcnZpY2UiCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0tZG5zY29uZmQgPSAiYXZhaGktZG5zY29uZmQuc2VydmljZSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY29tbW9uL2FkZHJlc3MuaDtlbmRsaW5lPTI1O21kNT1iMWQxZDJjZGExYzA3ZWI4NDhlYTdkNjIxNTcxMmQ5ZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdmFoaS1jb3JlL2Rucy5oO2VuZGxpbmU9MjM7bWQ1PTZmZTgyNTkwYjgxYWEwZGRlYTUwOTViNTQ4ZTJmZGNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F2YWhpLWRhZW1vbi9tYWluLmM7ZW5kbGluZT0yMTttZDU9OWVlNzczNjhjNTQwN2FmNzdjYWFlZjFiMDcyODU5NjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXZhaGktY2xpZW50L2NsaWVudC5oO2VuZGxpbmU9MjM7bWQ1PWY0YWM3NDFhMjVjNGY0MzQwMzliYTNlMThjODY3NGNmIgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZAorCWluc3RhbGwgJHtXT1JLRElSfS8wMGF2YWhpLWF1dG9pcGQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQKKwlpbnN0YWxsICR7V09SS0RJUn0vOTlhdmFoaS1hdXRvaXBkICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kCit9CiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNzZjNTlkMDg4MmFjNmMyNTZkNzBhMmE1ODUzNjJhNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1N2E5OWI1ZGZlN2ZkYWU3OTRlM2QxZWU3YTYyOTczYTM2OGU5MWU0MTRiZDBkZmE1ZDg0NDM0ZGU1YjE0ODA0IgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUiCi0KLVBBQ0tBR0VTID0rICJsaWJhdmFoaS1nb2JqZWN0IgorIyBBdCB0aGUgdGltZSB0aGUgcG9zdGluc3QgcnVucywgZGJ1cyBtaWdodCBub3QgYmUgc2V0dXAgc28gb25seSByZXN0YXJ0IGlmIHJ1bm5pbmcgCisjIERvbid0IGV4aXQgZWFybHksIGJlY2F1c2UgdXBkYXRlLXJjLmQgbmVlZHMgdG8gcnVuIHN1YnNlcXVlbnRseS4KK3BrZ19wb3N0aW5zdF9hdmFoaS1kYWVtb24gKCkgeworaWYgWyAteiAiJEQiIF07IHRoZW4KKwlraWxsYWxsIC1xIC1IVVAgZGJ1cy1kYWVtb24gfHwgdHJ1ZQorZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLUZpeC1vcGVuaW5nLWV0Yy1yZXNvbHYuY29uZi1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLUZpeC1vcGVuaW5nLWV0Yy1yZXNvbHYuY29uZi1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWU3ZThhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gNzg5Njc4MTRmNWMzN2VkNjdmNGNmNjRkNzBjOWY3NmEwM2VlODliYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjAgSnVuIDIwMTggMTM6NTc6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IG9wZW5pbmcgL2V0Yy9yZXNvbHYuY29uZiBlcnJvcgorCitGaXggdG8gc3RhcnQgYXZhaGktZGFlbW9uIGFmdGVyIHN5c3RlbWQtcmVzb2x2ZWQuc2VydmljZS4gVGhpcyBpcyBiZWNhdXNlCisvZXRjL3Jlc29sdi5jb25mIGlzIGEgbGluayB0byAvZXRjL3Jlc29sdi1jb25mLnN5c3RlbWQgd2hpY2ggaW4gdHVybiBpcworYSBzeW1saW5rIHRvIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mLiBBbmQgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYKK2lzIGNyZWF0ZWQgYnkgc3lzdGVtZC1yZXNvbHZlZC5zZXJ2aWNlIGJ5IGRlZmF1bHQgaW4gY3VycmVudCBPRSdzIHN5c3RlbWQKK2Jhc2VkIHN5c3RlbXMuCisKK1RoaXMgZml4ZXMgZXJycm8gbGlrZSBiZWxvdy4KKworICBGYWlsZWQgdG8gb3BlbiAvZXRjL3Jlc29sdi5jb25mOiBJbnZhbGlkIGFyZ3VtZW50CisKK0luIGZhY3QsIGhhbmRsaW5nIG9mIC9ldGMvcmVzb2x2LmNvbmYgaXMgcXVpdGUgZGlzdHJvIHNwZWNpZmljLiBTbyB0aGlzIHBhdGNoCitpcyBtYXJrZWQgYXMgT0Ugc3BlY2lmaWMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGF2YWhpLWRhZW1vbi9hdmFoaS1kYWVtb24uc2VydmljZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5zZXJ2aWNlLmluIGIvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5zZXJ2aWNlLmluCitpbmRleCA1NDhjODM0Li42M2UyOGU0IDEwMDY0NAorLS0tIGEvYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5zZXJ2aWNlLmluCisrKysgYi9hdmFoaS1kYWVtb24vYXZhaGktZGFlbW9uLnNlcnZpY2UuaW4KK0BAIC0xOCw2ICsxOCw3IEBACisgW1VuaXRdCisgRGVzY3JpcHRpb249QXZhaGkgbUROUy9ETlMtU0QgU3RhY2sKKyBSZXF1aXJlcz1hdmFoaS1kYWVtb24uc29ja2V0CisrQWZ0ZXI9c3lzdGVtZC1yZXNvbHZlZC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1kYnVzCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1hdm9pZC1zdGFydC1mYWlsdXJlLXdpdGgtYmluZC11c2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYjk2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDMxZGRlMzU2MmYyODc0MjllZWE5NGI3NzI1MGQxODQ4MThiNDkwNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE1IE9jdCAyMDE4IDE2OjU1OjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIHN0YXJ0IGZhaWx1cmUgd2l0aCBiaW5kIHVzZXIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGluaXQuZCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaW5pdC5kIGIvaW5pdC5kCitpbmRleCBiMmVlYzYwLi42ZTAzOTM2IDEwMDY0NAorLS0tIGEvaW5pdC5kCisrKysgYi9pbml0LmQKK0BAIC01Nyw2ICs1Nyw3IEBAIGNhc2UgIiQxIiBpbgorIAltb2Rwcm9iZSBjYXBhYmlsaXR5ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgCWlmIFsgISAtZiAvZXRjL2JpbmQvcm5kYy5rZXkgXTsgdGhlbgorIAkgICAgL3Vzci9zYmluL3JuZGMtY29uZmdlbiAtYSAtYiA1MTIgLXIgL2Rldi91cmFuZG9tCisrCSAgICBjaG93biByb290OmJpbmQgL2V0Yy9iaW5kL3JuZGMua2V5ID4vZGV2L251bGwgMj4mMSB8fCB0cnVlCisgCSAgICBjaG1vZCAwNjQwIC9ldGMvYmluZC9ybmRjLmtleQorIAlmaQorIAlpZiBbIC1mIC92YXIvcnVuL25hbWVkL25hbWVkLnBpZCBdOyB0aGVuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MWJiMmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gOTUwODY3ZDlmZDNmNjkwZTI3MWM4YzgwN2I2ZWVkMTQ0YjI5MzViMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjcgQXVnIDIwMTggMTU6MDA6NTEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmluOiByZW1vdmUgdXNlbGVzcyBgLUwkdXNlX29wZW5zc2wvbGliJworCitTaW5jZSBgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fScgaXMgdXNlZCBpbiBiaW5kIHJlY2lwZSwKK3RoZSBgLUwkdXNlX29wZW5zc2wvbGliJyBoYXMgYSBoYXJkY29kZWQgc3VmZml4LCByZW1vdmluZyBpdCBpcyBoYXJtbGVzcworYW5kIGhlbHBmdWwgZm9yIGNsZWFuIHVwIGhvc3QgYnVpbGQgcGF0aCBpbiBpc2MtY29uZmlnLnNoCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCitpbmRleCA1NGVmYzU1Li43NmFjMGViIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmluCisrKysgYi9jb25maWd1cmUuaW4KK0BAIC0xNjkxLDcgKzE2OTEsNyBAQCBJZiB5b3UgZG9uJ3Qgd2FudCBPcGVuU1NMLCB1c2UgLS13aXRob3V0LW9wZW5zc2xdKQorIAkJCQlmaQorIAkJCQk7OworIAkJCSopCistCQkJCURTVF9PUEVOU1NMX0xJQlM9Ii1MJHVzZV9vcGVuc3NsL2xpYiAtbGNyeXB0byIKKysJCQkJRFNUX09QRU5TU0xfTElCUz0iLWxjcnlwdG8iCisgCQkJCTs7CisgCQkJZXNhYworIAkJZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaAppbmRleCAxMjE1MDkzLi5hOGQ2MDFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaApAQCAtNywxMSArNywxMSBAQAogIGxpYi9kbnMvZ2VuLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9saWIvZG5zL2dlbi5jIGIvbGliL2Rucy9nZW4uYwotaW5kZXggN2E3ZGFmYi4uNTFhMDQzNSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvZ2VuLmMKLSsrKyBiL2xpYi9kbnMvZ2VuLmMKLUBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQorSW5kZXg6IGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBiaW5kLTkuMTEuMy5vcmlnL2xpYi9kbnMvZ2VuLmMKKysrKyBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCitAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KICAjZGVmaW5lIFRZUEVDTEFTU0JVRiAoVFlQRUNMQVNTTEVOICsgMSkKICAjZGVmaW5lIFRZUEVDTEFTU0ZNVCAiJSIgU1RSKFRZUEVDTEFTU0xFTikgIlstMC05YS16XV8lZCIKICAjZGVmaW5lIEFUVFJJQlVURVNJWkUgMjU2CkBAIC0yMCw2ICsyMCwzIEBACiAgCiAgc3RhdGljIHN0cnVjdCBjYyB7CiAgCXN0cnVjdCBjYyAqbmV4dDsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoCmluZGV4IDFlZDg1OGMuLjAxODc0YTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2gKQEAgLTEzLDExICsxMywxMSBAQAogIGxpYi9kbnMvZ2VuLmMgfCAgICA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9saWIvZG5zL2dlbi5jIGIvbGliL2Rucy9nZW4uYwotaW5kZXggNTFhMDQzNS4uM2Q3MjE0ZiAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvZ2VuLmMKLSsrKyBiL2xpYi9kbnMvZ2VuLmMKLUBAIC0xNDgsNyArMTQ4LDExIEBAIHN0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KK0luZGV4OiBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYmluZC05LjExLjMub3JpZy9saWIvZG5zL2dlbi5jCisrKysgYmluZC05LjExLjMvbGliL2Rucy9nZW4uYworQEAgLTEzMCw3ICsxMzAsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQogICNkZWZpbmUgVFlQRUNMQVNTQlVGIChUWVBFQ0xBU1NMRU4gKyAxKQogICNkZWZpbmUgVFlQRUNMQVNTRk1UICIlIiBTVFIoVFlQRUNMQVNTTEVOKSAiWy0wLTlhLXpdXyVkIgogICNkZWZpbmUgQVRUUklCVVRFU0laRSAyNTYKQEAgLTI5LDYgKzI5LDMgQEAKICAKICBzdGF0aWMgc3RydWN0IGNjIHsKICAJc3RydWN0IGNjICpuZXh0OwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1uYW1lZC1sd3Jlc2QtVi1hbmQtc3RhcnQtbG9nLWhpZGUtYnVpbGQtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1uYW1lZC1sd3Jlc2QtVi1hbmQtc3RhcnQtbG9nLWhpZGUtYnVpbGQtb3B0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTkwOGFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYTNhZjRhNDA1YmFmNWZmNTgyZTgyYWFiYTM5MmRkOTY2N2Q5NGJkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjcgQXVnIDIwMTggMjE6MjQ6MjAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYG5hbWVkL2x3cmVzZCAtVicgYW5kIHN0YXJ0IGxvZyBoaWRlIGJ1aWxkIG9wdGlvbnMKKworVGhlIGJ1aWxkIG9wdGlvbnMgZXhwb3NlIGJ1aWxkIHBhdGggZGlyZWN0b3JpZXMsIHNvIGhpZGUgdGhlbS4KK1tzbmlwXQorJCBuYW1lZCAtVgorfGJ1aWx0IGJ5IG1ha2Ugd2l0aCAqKiogKG9wdGlvbnMgYXJlIGhpZGRlbikKK1tzbmlwXQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2dsb2JhbHMuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2dsb2JhbHMuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2dsb2JhbHMuaAoraW5kZXggYmEzNDU3ZS4uNzc0MWRhNyAxMDA2NDQKKy0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2dsb2JhbHMuaAorKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvZ2xvYmFscy5oCitAQCAtNjgsNyArNjgsNyBAQCBFWFRFUk4gY29uc3QgY2hhciAqCQluc19nX3ZlcnNpb24JCUlOSVQoVkVSU0lPTik7CisgRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19wcm9kdWN0CQlJTklUKFBST0RVQ1QpOworIEVYVEVSTiBjb25zdCBjaGFyICoJCW5zX2dfZGVzY3JpcHRpb24JSU5JVChERVNDUklQVElPTik7CisgRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19zcmNpZAkJSU5JVChTUkNJRCk7CistRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19jb25maWdhcmdzCQlJTklUKENPTkZJR0FSR1MpOworK0VYVEVSTiBjb25zdCBjaGFyICoJCW5zX2dfY29uZmlnYXJncwkJSU5JVCgiKioqIChvcHRpb25zIGFyZSBoaWRkZW4pIik7CisgRVhURVJOIGNvbnN0IGNoYXIgKgkJbnNfZ19idWlsZGVyCQlJTklUKEJVSUxERVIpOworIEVYVEVSTiBpbl9wb3J0X3QJCW5zX2dfcG9ydAkJSU5JVCgwKTsKKyBFWFRFUk4gaXNjX2RzY3BfdAkJbnNfZ19kc2NwCQlJTklUKC0xKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxOC01NzQwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxOC01NzQwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMmJhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE4LTU3NDAucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvOS4xMS40LVAxL3BhdGNoZXMvQ1ZFLTIwMTgtNTc0MF0KKworQ1ZFOiBDVkUtMjAxOC01NzQwCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUworaW5kZXggNzUwYjYwMC4uM2Q4ZDY1NSAxMDA2NDQKKy0tLSBhL0NIQU5HRVMKKysrKyBiL0NIQU5HRVMKK0BAIC0xLDMgKzEsOSBAQAorKwktLS0gOS4xMS40LVAxIHJlbGVhc2VkIC0tLQorKworKzQ5OTcuCVtzZWN1cml0eV0JbmFtZWQgY291bGQgY3Jhc2ggZHVyaW5nIHJlY3Vyc2l2ZSBwcm9jZXNzaW5nCisrCQkJb2YgRE5BTUUgcmVjb3JkcyB3aGVuICJkZW55LWFuc3dlci1hbGlhc2VzIiB3YXMKKysJCQlpbiB1c2UuIChDVkUtMjAxOC01NzQwKSBbR0wgIzM4N10KKysKKyAJLS0tIDkuMTEuNCByZWxlYXNlZCAtLS0KKyAKKyAJLS0tIDkuMTEuNHJjMiByZWxlYXNlZCAtLS0KK2RpZmYgLS1naXQgYS9saWIvZG5zL3Jlc29sdmVyLmMgYi9saWIvZG5zL3Jlc29sdmVyLmMKK2luZGV4IDhmNjc0YTIuLjQxZDEzODUgMTAwNjQ0CistLS0gYS9saWIvZG5zL3Jlc29sdmVyLmMKKysrKyBiL2xpYi9kbnMvcmVzb2x2ZXIuYworQEAgLTYzMTgsNiArNjMxOCw3IEBAIGlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKGZldGNoY3R4X3QgKmZjdHgsIGRuc19uYW1lX3QgKnFuYW1lLCBkbnNfbmFtZV90ICpybmFtZSwKKyAJdW5zaWduZWQgaW50IG5sYWJlbHM7CisgCWRuc19maXhlZG5hbWVfdCBmaXhlZDsKKyAJZG5zX25hbWVfdCBwcmVmaXg7CisrCWludCBvcmRlcjsKKyAKKyAJUkVRVUlSRShyZGF0YXNldCAhPSBOVUxMKTsKKyAJUkVRVUlSRShyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2NuYW1lIHx8CitAQCAtNjM0MCwxNyArNjM0MSwyNSBAQCBpc19hbnN3ZXJ0YXJnZXRfYWxsb3dlZChmZXRjaGN0eF90ICpmY3R4LCBkbnNfbmFtZV90ICpxbmFtZSwgZG5zX25hbWVfdCAqcm5hbWUsCisgCQl0bmFtZSA9ICZjbmFtZS5jbmFtZTsKKyAJCWJyZWFrOworIAljYXNlIGRuc19yZGF0YXR5cGVfZG5hbWU6CisrCQlpZiAoZG5zX25hbWVfZnVsbGNvbXBhcmUocW5hbWUsIHJuYW1lLCAmb3JkZXIsICZubGFiZWxzKSAhPQorKwkJICAgIGRuc19uYW1lcmVsbl9zdWJkb21haW4pCisrCQl7CisrCQkJcmV0dXJuIChJU0NfVFJVRSk7CisrCQl9CisgCQlyZXN1bHQgPSBkbnNfcmRhdGFfdG9zdHJ1Y3QoJnJkYXRhLCAmZG5hbWUsIE5VTEwpOworIAkJUlVOVElNRV9DSEVDSyhyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyk7CisgCQlkbnNfbmFtZV9pbml0KCZwcmVmaXgsIE5VTEwpOworIAkJdG5hbWUgPSBkbnNfZml4ZWRuYW1lX2luaXRuYW1lKCZmaXhlZCk7CistCQlubGFiZWxzID0gZG5zX25hbWVfY291bnRsYWJlbHMocW5hbWUpIC0KKy0JCQkgIGRuc19uYW1lX2NvdW50bGFiZWxzKHJuYW1lKTsKKysJCW5sYWJlbHMgPSBkbnNfbmFtZV9jb3VudGxhYmVscyhybmFtZSk7CisgCQlkbnNfbmFtZV9zcGxpdChxbmFtZSwgbmxhYmVscywgJnByZWZpeCwgTlVMTCk7CisgCQlyZXN1bHQgPSBkbnNfbmFtZV9jb25jYXRlbmF0ZSgmcHJlZml4LCAmZG5hbWUuZG5hbWUsIHRuYW1lLAorIAkJCQkJICAgICAgTlVMTCk7CistCQlpZiAocmVzdWx0ID09IEROU19SX05BTUVUT09MT05HKQorKwkJaWYgKHJlc3VsdCA9PSBETlNfUl9OQU1FVE9PTE9ORykgeworKwkJCWlmIChjaGFpbmluZ3AgIT0gTlVMTCkgeworKwkJCQkqY2hhaW5pbmdwID0gSVNDX1RSVUU7CisrCQkJfQorIAkJCXJldHVybiAoSVNDX1RSVUUpOworKwkJfQorIAkJUlVOVElNRV9DSEVDSyhyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyk7CisgCQlicmVhazsKKyAJZGVmYXVsdDoKK0BAIC03MDcxLDcgKzcwODAsOSBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgeworIAkJfQorIAkJaWYgKChhcmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9jbmFtZSB8fAorIAkJICAgICBhcmRhdGFzZXQtPnR5cGUgPT0gZG5zX3JkYXRhdHlwZV9kbmFtZSkgJiYKKy0JCSAgICAgIWlzX2Fuc3dlcnRhcmdldF9hbGxvd2VkKGZjdHgsIHFuYW1lLCBhbmFtZSwgYXJkYXRhc2V0LAorKwkJICAgIHR5cGUgIT0gYXJkYXRhc2V0LT50eXBlICYmCisrCQkgICAgdHlwZSAhPSBkbnNfcmRhdGF0eXBlX2FueSAmJgorKwkJICAgICFpc19hbnN3ZXJ0YXJnZXRfYWxsb3dlZChmY3R4LCBxbmFtZSwgYW5hbWUsIGFyZGF0YXNldCwKKyAJCQkJCSAgICAgIE5VTEwpKQorIAkJeworIAkJCXJldHVybiAoRE5TX1JfU0VSVkZBSUwpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJjNGVhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gOWI0MDYxOWZmNmZkZGZlZjI3NThiYTc5Nzc4OWY4NDg3ZjQxMmRmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxNiBGZWIgMjAxNSAwMDo1MDowMSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjb25mZ2VuOiBkb24ndCBidWlsZCB1bml4Lm8gdHdpY2UKLQotRml4ZWQ6Ci11bml4L29zLm86IGZpbGUgbm90IHJlY29nbml6ZWQ6IEZpbGUgdHJ1bmNhdGVkCi1jb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVGhpcyBpcyBiZWNhdXNlIG9zLm8gd2FzIGJ1aWx0IHR3aWNlOgotKiBUaGUgaW1wbGljaXR5IHJ1bGUgKGRlcGVuZHMgb24gdW5peC9vcy5vKQotKiBUaGUgIm1ha2UgYWxsIiBpbiB1bml4IHN1YmRpciAoZGVwZW5kcyBvbiB1bml4L29zLm8pCi0KLURlcGVuZCBvbiBzdWJkaXJzIHdoaWNoIGlzIHVuaXggb25seSByYXRoZXIgdGhhbiB1bml4L29zLm8gd2lsbCBmaXggdGhlCi1wcm9ibGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLVVwZGF0ZSBjb250ZXh0KHRyYWlsaW5nIHdoaXRlc3BhY2UpIGZvciB2ZXJzaW9uIDkuMTAuNS1QMy4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW4vY29uZmdlbi9NYWtlZmlsZS5pbiB8ICAgIDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbiBiL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluCi1pbmRleCBkY2EyNzJmLi4wMmJlY2NlIDEwMDY0NAotLS0tIGEvYmluL2NvbmZnZW4vTWFrZWZpbGUuaW4KLSsrKyBiL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluCi1AQCAtNzQsMTEgKzc0LDExIEBAIHJuZGMtY29uZmdlbi5AT0A6IHJuZGMtY29uZmdlbi5jCi0gZGRucy1jb25mZ2VuLkBPQDogZGRucy1jb25mZ2VuLmMKLSAJJHtMSUJUT09MX01PREVfQ09NUElMRX0gJHtDQ30gJHtBTExfQ0ZMQUdTfSAtYyAke3NyY2Rpcn0vZGRucy1jb25mZ2VuLmMKLSAKLS1ybmRjLWNvbmZnZW5ARVhFRVhUQDogcm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9Ci0rcm5kYy1jb25mZ2VuQEVYRUVYVEA6IHJuZGMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke0NPTkZERVBMSUJTfSAkKFNVQkRJUlMpCi0gCWV4cG9ydCBCQVNFT0JKUz0icm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9IjsgXAotIAkke0ZJTkFMQlVJTERDTUR9Ci0gCi0tZGRucy1jb25mZ2VuQEVYRUVYVEA6IGRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSAke0NPTkZERVBMSUJTfQotK2RkbnMtY29uZmdlbkBFWEVFWFRAOiBkZG5zLWNvbmZnZW4uQE9AIHV0aWwuQE9AIGtleWdlbi5AT0AgJHtDT05GREVQTElCU30gJChTVUJESVJTKQotIAlleHBvcnQgQkFTRU9CSlM9ImRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSI7IFwKLSAJJHtGSU5BTEJVSUxEQ01EfQotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaAppbmRleCAxM2RmM2JiLi4zN2UyMTBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCkBAIC0zMSwxMSArMzEsMTEgQEAKICBjb25maWd1cmUuaW4gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IGM5ZWYzYTYwMTM0My4uMTdhMWY2MTNlOWFjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0yMTM5LDcgKzIxMzksNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCitJbmRleDogYmluZC05LjExLjMvY29uZmlndXJlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYmluZC05LjExLjMub3JpZy9jb25maWd1cmUuaW4KKysrKyBiaW5kLTkuMTEuMy9jb25maWd1cmUuaW4KK0BAIC0yNTc0LDcgKzI1NzQsNyBAQCBjYXNlICIkdXNlX2xpYmpzb24iIGluCiAgCQlsaWJqc29uX2xpYnM9IiIKICAJCTs7CiAgCWF1dG98eWVzKQpAQCAtNDQsNiArNDQsMyBAQAogIAkJZG8KICAJCQlpZiB0ZXN0IC1mICIke2R9L2luY2x1ZGUvanNvbi9qc29uLmgiCiAgCQkJdGhlbgotLS0gCi0yLjQuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9kb250LXRlc3Qtb24taG9zdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyZWNiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotSW5kZXg6IGJpbmQtOS45LjUvYmluL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYmluZC05LjkuNS5vcmlnL2Jpbi9NYWtlZmlsZS5pbgotKysrIGJpbmQtOS45LjUvYmluL01ha2VmaWxlLmluCi1AQCAtMTksNyArMTksNyBAQCBzcmNkaXIgPQlAc3JjZGlyQAotIFZQQVRIID0JCUBzcmNkaXJACi0gdG9wX3NyY2RpciA9CUB0b3Bfc3JjZGlyQAotIAotLVNVQkRJUlMgPQluYW1lZCBybmRjIGRpZyBkZWx2IGRuc3NlYyB0b29scyB0ZXN0cyBuc3VwZGF0ZSBcCi0rU1VCRElSUyA9CW5hbWVkIHJuZGMgZGlnIGRlbHYgZG5zc2VjIHRvb2xzIG5zdXBkYXRlIFwKLSAJCWNoZWNrIGNvbmZnZW4gQFBZVEhPTl9UT09MU0AgQFBLQ1MxMV9UT09MU0AKLSBUQVJHRVRTID0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MjlmMTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Vc2UgcHl0aG9uMyByYXRoZXIgZGVmYXVsdCBweXRob24gd2hpY2ggbWF5YmUgbGlua3MgdG8gcHl0aG9uMiBmb3Igb2UuIEFuZCBhZGQKLW9wdGlvbiBmb3Igc2V0dXAucHkgdG8gaW5zdGFsbCBmaWxlcyB0byByaWdodCBkaXJlY3RvcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvYmluL3B5dGhvbi9NYWtlZmlsZS5pbiBiL2Jpbi9weXRob24vTWFrZWZpbGUuaW4KLWluZGV4IGE0M2EzYzEuLjJlNzI3ZjIgMTAwNjQ0Ci0tLS0gYS9iaW4vcHl0aG9uL01ha2VmaWxlLmluCi0rKysgYi9iaW4vcHl0aG9uL01ha2VmaWxlLmluCi1AQCAtNTUsOSArNTUsOSBAQCBpbnN0YWxsOjogJHtUQVJHRVRTfSBpbnN0YWxsZGlycwotIAkke0lOU1RBTExfREFUQX0gJHtzcmNkaXJ9L2Ruc3NlYy1jb3ZlcmFnZS44ICR7REVTVERJUn0ke21hbmRpcn0vbWFuOAotIAlpZiB0ZXN0IC1uICIke1BZVEhPTn0iIDsgdGhlbiBcCi0gCQlpZiB0ZXN0IC1uICIke0RFU1RESVJ9IiA7IHRoZW4gXAotLQkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXJvb3Q9JHtERVNURElSfSAtLXByZWZpeD0ke3ByZWZpeH0gOyBcCi0rCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0ke0RFU1RESVJ9IC0tcHJlZml4PSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IDsgXAotIAkJZWxzZSBcCi0tCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7cHJlZml4fSA7IFwKLSsJCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtwcmVmaXh9IC0taW5zdGFsbC1saWI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gOyBcCi0gCQlmaSBcCi0gCWZpCi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAzMTRiYjkwLi44Njc5MjNlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0yMjcsNyArMjI3LDcgQEAgQUNfQVJHX1dJVEgocHl0aG9uLAotIFsgIC0td2l0aC1weXRob249UEFUSCAgICAgIHNwZWNpZnkgcGF0aCB0byBweXRob24gaW50ZXJwcmV0ZXJdLAotICAgICB1c2VfcHl0aG9uPSIkd2l0aHZhbCIsIHVzZV9weXRob249InVuc3BlYyIpCi0gCi0tcHl0aG9uPSJweXRob24gcHl0aG9uMyBweXRob24zLjUgcHl0aG9uMy40IHB5dGhvbjMuMyBweXRob24zLjIgcHl0aG9uMiBweXRob24yLjciCi0rcHl0aG9uPSJweXRob24zIHB5dGhvbjMuNSBweXRob24zLjQgcHl0aG9uMy4zIHB5dGhvbjMuMiBweXRob24yIHB5dGhvbjIuNyIKLSAKLSB0ZXN0YXJncGFyc2U9J3RyeTogaW1wb3J0IGFyZ3BhcnNlCi0gZXhjZXB0OiBleGl0KDEpJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI4ODM1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1TVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJJU0MgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWRiYTQ2NTA3NDQ2MTk4MTE5YmNkZTMyYTRmZWFhYjQzIgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LXRlc3Qtb24taG9zdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uYW1lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQ5IFwKLSAgICAgICAgICAgZmlsZTovL2luaXQuZC1hZGQtc3VwcG9ydC1mb3ItcmVhZC1vbmx5LXJvb3Rmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NGU2NjMyODRiMTdhZWUwZGYxY2U2ZjI0OGIxMzdkNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxN2JiY2QyYmQ3YjFkMzJmNWJhNGIzMGQ1ZGJlOGEzOWJjZTIwMDA3OTA0ODA3M2QxZTBkMDUwZmRmNDdlNjlkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OShcLlxkKykrKC1QXGQrKSopLyIKLQotCi1FTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCi1FWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWVuYWJsZS1lcG9sbCAtLXdpdGgtZ29zdD1ubyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1nc3NhcGk9bm8gLS13aXRoLWVjZHNhPXllcyBcCi0gICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L2JpbmQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgcHl0aG9uMy1kaXIKLQotZXhwb3J0IFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSCi0KLSMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCi1QQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgotUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgotCi1JTklUU0NSSVBUX05BTUUgPSAiYmluZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKLQotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9pc2MtY29uZmlnLmgiCi1GSUxFU18ke1BOfSArPSAiJHtzYmluZGlyfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWxpYnMiCi1GSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS8qLnNvKiIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCi0JIyBieSAibWFrZSBpbnN0YWxsIjoKLQkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKLQlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICIke0R9JHtiaW5kaXJ9L25zbG9va3VwIgotCXJtICIke0R9JHttYW5kaXJ9L21hbjEvbnNsb29rdXAuMSIKLQlybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLQlpbnN0YWxsIC1kIC1vIGJpbmQgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCi0JaW5zdGFsbCAtbSA2NDQgJHtTfS9jb25mLyogIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQvIgotCWluc3RhbGwgLW0gNzU1ICIke1N9L2luaXQuZCIgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9iaW5kIgotCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke0R9JHtzYmluZGlyfS9kbnNzZWMtY2hlY2tkcwotCi0JIyBJbnN0YWxsIHN5c3RlbWQgcmVsYXRlZCBmaWxlcwotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25hbWVkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmFtZWQuc2VydmljZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmluZDkgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JCWVjaG8gImQgL3J1bi9uYW1lZCAwNzU1IGJpbmQgYmluZCAtIC0iID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9iaW5kLmNvbmYKLQlmaQotCi0gICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2lzYy8qLnB5YwotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAotCSIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjRhMjFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjQuYmIKQEAgLTAsMCArMSwxMzcgQEAKK1NVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIklTQyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9NmJhN2M5ZmUwYzg4OGE5NDNjNzljOTNlNmRlNzQ0ZmIiCisKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAgemxpYiIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC01NzQwLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjliNDgzNGQ3OGYzMGNkYjc5NmNlNDM3MjYyMjcyYTM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5NTA3MGIwMzFmODY5Zjg5Mzk2NTZiNWE1ZDExYjEyMTIxMTk2N2YxNWY2YWZlYWZhODk1ZGY3NDUyNzk2MTciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45KFwuXGQrKSsoLVBcZCspKikvIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQgcGtnY29uZmlnIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9iaW5kOS1jb25maWcgJHtQTn06JHtiaW5kaXJ9L2lzYy1jb25maWcuc2giCisKKyMgUEFDS0FHRUNPTkZJR3MgcmVhZGxpbmUgYW5kIGxpYmVkaXQgc2hvdWxkIE5PVCBiZSBzZXQgYXQgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID89ICJyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0gLS13aXRoLXB5dGhvbi1pbnN0YWxsLWRpcj0ke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMy1wbHktbmF0aXZlLCIKKworRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgorRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgLS13aXRoLWVkZHNhPW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxtZGI9bm8gXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAiCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KKworIyBkaGNwIG5lZWRzIC5sYSBzbyBrZWVwIHRoZW0KK1JFTU9WRV9MSUJUT09MX0xBID0gIjAiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgorCitJTklUU0NSSVBUX05BTUUgPSAiYmluZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCisJIyBieSAibWFrZSBpbnN0YWxsIjoKKwkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKKwlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCisJcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCisJcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgorCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKwlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCisJaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24zLCMhIC91c3IvYmluL3B5dGhvbjMsJyBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSBcCisJCSR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWtleW1ncgorCWZpCisKKwkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgorCWZpCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCisJIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitGSUxFU18ke1BOfS11dGlscyA9ICIke2JpbmRpcn0vaG9zdCAke2JpbmRpcn0vZGlnICR7YmluZGlyfS9tZGlnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgorRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2giCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8qLmxhIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWJpbmQnLCAnJywgZCl9IgorRklMRVNfcHl0aG9uMy1iaW5kID0gIiR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAorICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZG5zc2VjLWtleW1nciAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LXV0aWxzID0gImJhc2giCitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUkRFUEVORFNfcHl0aG9uMy1iaW5kID0gInB5dGhvbjMtY29yZSBweXRob24zLXBseSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYwppbmRleCBhZTJhODMzLi45ZDk3MzllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCkBAIC00Miw2ICs0Miw3IEBACiBQQUNLQUdFQ09ORklHW3RocmVhZHNdID0gIi0tZW5hYmxlLXRocmVhZHMsLS1kaXNhYmxlLXRocmVhZHMiCiBQQUNLQUdFQ09ORklHW2RlcHJlY2F0ZWRdID0gIi0tZW5hYmxlLWRlcHJlY2F0ZWQsLS1kaXNhYmxlLWRlcHJlY2F0ZWQiCiBQQUNLQUdFQ09ORklHW21lc2hdID0gIi0tZW5hYmxlLW1lc2gsLS1kaXNhYmxlLW1lc2gsIGpzb24tYyIKK1BBQ0tBR0VDT05GSUdbYnRwY2xpZW50XSA9ICItLWVuYWJsZS1idHBjbGllbnQsLS1kaXNhYmxlLWJ0cGNsaWVudCwgZWxsIgogCiBTUkNfVVJJID0gIlwKICAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXApAQCAtNTAsNiArNTEsNyBAQAogICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnZmlsZTovLzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCcsIGQpfSBcCiAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoIFwKICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCmluZGV4IDJmZGU3YmMuLmRhNzE0MDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKQEAgLTEsMyArMSw0IEBACitGcm9tIDk5Y2NkYmUxNTUwMjhjNGM3ODk4MDNhNDI5MDcyNjc1Yjg3ZDBjM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHaW92YW5uaSBDYW1wYWduYSA8Z2NhbXBhZ25hLWNOVWRsUm90Rk1uTkx4alRlbkxldHdAcHVibGljLmdtYW5lLm9yZz4KIERhdGU6IFNhdCwgMTIgT2N0IDIwMTMgMTc6NDU6MjUgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgdXNpbmcgb2JleGQgd2l0aG91dCBzeXN0ZW1kIGluIHRoZSB1c2VyIHNlc3Npb24KQEAgLTE0LDE5ICsxNSwxOCBAQAogaHR0cDovL3RocmVhZC5nbWFuZS5vcmcvZ21hbmUubGludXguYmx1ZXoua2VybmVsLzM4NzI1L2ZvY3VzPTM4ODQzCiAKIFNpZ25lZC1vZmYtYnk6IEphdmllciBWaWd1ZXJhIDxqYXZpZXIudmlndWVyYUBkaWdpLmNvbT4KKwogLS0tCi0gTWFrZWZpbGUub2JleGQgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBvYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZSAgICB8IDQgLS0tLQotIG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluIHwgNCArKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCisgTWFrZWZpbGUub2JleGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgb2JleGQvc3JjL3tvcmcuYmx1ZXoub2JleC5zZXJ2aWNlID0+IG9yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW59IHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHJlbmFtZSBvYmV4ZC9zcmMve29yZy5ibHVlei5vYmV4LnNlcnZpY2UgPT4gb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbn0gKDc2JSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9iZXhkIGIvTWFrZWZpbGUub2JleGQKLWluZGV4IDJlMzNjYmM3MmYyYi4uZDVkODU4Yzg1N2I0IDEwMDY0NAoraW5kZXggYzQ2MjY5Mi4uMDMyNWY2NiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLm9iZXhkCiArKysgYi9NYWtlZmlsZS5vYmV4ZAotQEAgLTIsMTIgKzIsMTIgQEAKK0BAIC0xLDEyICsxLDEyIEBACiAgaWYgU1lTVEVNRAogIHN5c3RlbWR1c2VydW5pdGRpciA9IEBTWVNURU1EX1VTRVJVTklURElSQAogIHN5c3RlbWR1c2VydW5pdF9EQVRBID0gb2JleGQvc3JjL29iZXguc2VydmljZQpAQCAtMzksMjUgKzM5LDE4IEBACiAtRVhUUkFfRElTVCArPSBvYmV4ZC9zcmMvb2JleC5zZXJ2aWNlLmluIG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCiArRVhUUkFfRElTVCArPSBvYmV4ZC9zcmMvb2JleC5zZXJ2aWNlLmluIG9iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCiAgCi0gb2JleF9wbHVnaW5kaXIgPSAkKGxpYmRpcikvb2JleC9wbHVnaW5zCisgaWYgT0JFWAogIAotZGlmZiAtLWdpdCBhL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlIGIvb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTUzODA4ODg0NTU0Li4wMDAwMDAwMDAwMDAKK2RpZmYgLS1naXQgYS9vYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZSBiL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmluCitzaW1pbGFyaXR5IGluZGV4IDc2JQorcmVuYW1lIGZyb20gb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UKK3JlbmFtZSB0byBvYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbgoraW5kZXggYTUzODA4OC4uOWM4MTVmMiAxMDA2NDQKIC0tLSBhL29iZXhkL3NyYy9vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCi0rKysgL2Rldi9udWxsCi1AQCAtMSw0ICswLDAgQEAKLS1bRC1CVVMgU2VydmljZV0KLS1OYW1lPW9yZy5ibHVlei5vYmV4Ci0tRXhlYz0vYmluL2ZhbHNlCi0tU3lzdGVtZFNlcnZpY2U9ZGJ1cy1vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCi1kaWZmIC0tZ2l0IGEvb2JleGQvc3JjL29yZy5ibHVlei5vYmV4LnNlcnZpY2UuaW4gYi9vYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAwMC4uOWM4MTVmMjQ2Yjc3Ci0tLS0gL2Rldi9udWxsCiArKysgYi9vYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbgotQEAgLTAsMCArMSw0IEBACi0rW0QtQlVTIFNlcnZpY2VdCi0rTmFtZT1vcmcuYmx1ZXoub2JleAorQEAgLTEsNCArMSw0IEBACisgW0QtQlVTIFNlcnZpY2VdCisgTmFtZT1vcmcuYmx1ZXoub2JleAorLUV4ZWM9L2Jpbi9mYWxzZQogK0V4ZWM9QGxpYmV4ZWNkaXJAL29iZXhkCi0rU3lzdGVtZFNlcnZpY2U9ZGJ1cy1vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCisgU3lzdGVtZFNlcnZpY2U9ZGJ1cy1vcmcuYmx1ZXoub2JleC5zZXJ2aWNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRlc3QtZ2F0dC1GaXgtaHVuZy1pc3N1ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdGVzdC1nYXR0LUZpeC1odW5nLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MGI2YTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRlc3QtZ2F0dC1GaXgtaHVuZy1pc3N1ZS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDYxZTc0MTY1NGNjMmViMTY3YmNhMjEyYTNiYjJiYThmM2JhMjgwYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyNCBBdWcgMjAxOCAxMjowNDowMyArMDgwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0LWdhdHQ6IEZpeCBodW5nIGlzc3VlCisKK1RoZSBiZWxvdyB0ZXN0IGhhbmdzIGluZmluaXRlbHkKKyQgdW5pdC90ZXN0LWdhdHQgLXAgIC9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IC1kCisvcm9idXN0bmVzcy91bmtvd24tcmVxdWVzdCAtIGluaXQKKy9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IC0gc2V0dXAKKy9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IC0gc2V0dXAgY29tcGxldGUKKy9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IC0gcnVuCisgIEdBVFQ6IDwgMDIgMTcgMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgorICBidF9nYXR0X3NlcnZlcjpNVFUgZXhjaGFuZ2UgY29tcGxldGUsIHdpdGggTVRVOiAyMworICBHQVRUOiA+IDAzIDAwIDAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgUERVOiA9IDAzIDAwIDAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4KKyAgR0FUVDogPCBiZiAwMAorCitBY3R1YWxseSwgdGhlIC9yb2J1c3RuZXNzL3Vua293bi1yZXF1ZXN0IHRlc3QgZG9lcworbm8gYWN0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9tYXJjLmluZm8vP2w9bGludXgtYmx1ZXRvb3RoJm09MTUzNTA4ODgxODA0NjM1Jnc9Ml0KKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHVuaXQvdGVzdC1nYXR0LmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91bml0L3Rlc3QtZ2F0dC5jIGIvdW5pdC90ZXN0LWdhdHQuYworaW5kZXggYzdlMjhmOC4uYjU3MzczYiAxMDA2NDQKKy0tLSBhL3VuaXQvdGVzdC1nYXR0LmMKKysrKyBiL3VuaXQvdGVzdC1nYXR0LmMKK0BAIC00NDYzLDcgKzQ0NjMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCXRlc3Rfc2VydmVyLCBzZXJ2aWNlX2RiXzEsIE5VTEwsCisgCQkJcmF3X3BkdSgweDAzLCAweDAwLCAweDAyKSwKKyAJCQlyYXdfcGR1KDB4YmYsIDB4MDApLAorLQkJCXJhd19wZHUoMHgwMSwgMHhiZiwgMHgwMCwgMHgwMCwgMHgwNikpOworKwkJCXJhd19wZHUoKSk7CisgCisgCWRlZmluZV90ZXN0X3NlcnZlcigiL3JvYnVzdG5lc3MvdW5rb3duLWNvbW1hbmQiLAorIAkJCXRlc3Rfc2VydmVyLCBzZXJ2aWNlX2RiXzEsIE5VTEwsCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGE2Y2QyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1yZXF1aXJlIGJsdWV6NS5pbmMKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKLQotU1JDX1VSSVttZDVzdW1dID0gImM5Yzg1M2YzYzkwNTY0Y2FiZWM3NWFiMzUxMDZjMzU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5YTg3MjMwNzJlZjY2YmFlN2VjMzAxYzc3NDkwMmViY2I0NDRjOWM1YjE0OWI1YTE5OWU2MGExYmE5NzBlOTAiCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAotICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAotICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAotICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAotICAgIHRvb2xzL29iZXhjdGwgXAotICAgIHRvb2xzL2J0bWdtdCBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCi0gICAgZW11bGF0b3IvYnR2aXJ0IFwKLSAgICBlbXVsYXRvci9iMWVlIFwKLSAgICBlbXVsYXRvci9oZnAgXAotICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAotICAgIHRvb2xzLzNkc3AgXAotICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKLSAgICB0b29scy9nYXAtdGVzdGVyIFwKLSAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAotICAgIHRvb2xzL3Njby10ZXN0ZXIgXAotICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAotICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAotICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAotICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKLSAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAotIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfQlQgPz0gIiBcCi0gICAgdG9vbHMvYmRhZGRyIFwKLSAgICB0b29scy9hdmluZm8gXAotICAgIHRvb2xzL2F2dGVzdCBcCi0gICAgdG9vbHMvc2NvdGVzdCBcCi0gICAgdG9vbHMvYW1wdGVzdCBcCi0gICAgdG9vbHMvaHdkYiBcCi0gICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKLSAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAotICAgIHRvb2xzL2J0aW5mbyBcCi0gICAgdG9vbHMvYnRzbm9vcCBcCi0gICAgdG9vbHMvYnRwcm94eSBcCi0gICAgdG9vbHMvYnRpb3Rlc3QgXAotICAgIHRvb2xzL2JuZXB0ZXN0IFwKLSAgICB0b29scy9tY2FwdGVzdCBcCi0gICAgdG9vbHMvY2x0ZXN0IFwKLSAgICB0b29scy9vb2J0ZXN0IFwKLSAgICB0b29scy9hZHZ0ZXN0IFwKLSAgICB0b29scy9zZXEyYnNlcSBcCi0gICAgdG9vbHMvbm9rZncgXAotICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCi0gICAgdG9vbHMvZWRkeXN0b25lIFwKLSAgICB0b29scy9pYmVhY29uIFwKLSAgICB0b29scy9idGdhdHQtY2xpZW50IFwKLSAgICB0b29scy9idGdhdHQtc2VydmVyIFwKLSAgICB0b29scy90ZXN0LXJ1bm5lciBcCi0gICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAotICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCi0gICAgcHJvZmlsZXMvaWFwL2lhcGQgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS41MC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyNzE0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBibHVlejUuaW5jCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJibHVlejUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZTM1YzY3YzgxYTU1ZDNhZDRjOWYyMjI4MGRhZTE3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmZjYWFlMThiYmI2MTU1ZjE1OTFiZThjMjQ4OThkYzEyZjA2MjA3NWE0MGI1MzhiNzQ1YmZkNDc3NDgxOTExIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBSRUFETElORQorIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfUkVBRExJTkUgPz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGVwcmVjYXRlZCcsICdhdHRyaWIvZ2F0dHRvb2wnLCAnJywgZCl9IFwKKyAgICB0b29scy9vYmV4LWNsaWVudC10b29sIFwKKyAgICB0b29scy9vYmV4LXNlcnZlci10b29sIFwKKyAgICB0b29scy9ibHVldG9vdGgtcGxheWVyIFwKKyAgICB0b29scy9vYmV4Y3RsIFwKKyAgICB0b29scy9idG1nbXQgXAorIgorCisjIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBURVNUSU5HCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19URVNUSU5HID89ICIgXAorICAgIGVtdWxhdG9yL2J0dmlydCBcCisgICAgZW11bGF0b3IvYjFlZSBcCisgICAgZW11bGF0b3IvaGZwIFwKKyAgICBwZXJpcGhlcmFsL2J0c2Vuc29yIFwKKyAgICB0b29scy8zZHNwIFwKKyAgICB0b29scy9tZ210LXRlc3RlciBcCisgICAgdG9vbHMvZ2FwLXRlc3RlciBcCisgICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKKyAgICB0b29scy9zY28tdGVzdGVyIFwKKyAgICB0b29scy9zbXAtdGVzdGVyIFwKKyAgICB0b29scy9oY2ktdGVzdGVyIFwKKyAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKKyAgICB0b29scy9ibmVwLXRlc3RlciBcCisgICAgdG9vbHMvdXNlcmNoYW4tdGVzdGVyIFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVE9PTFMKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX0JUID89ICIgXAorICAgIHRvb2xzL2JkYWRkciBcCisgICAgdG9vbHMvYXZpbmZvIFwKKyAgICB0b29scy9hdnRlc3QgXAorICAgIHRvb2xzL3Njb3Rlc3QgXAorICAgIHRvb2xzL2FtcHRlc3QgXAorICAgIHRvb2xzL2h3ZGIgXAorICAgIHRvb2xzL2hjaWV2ZW50bWFzayBcCisgICAgdG9vbHMvaGNpc2VjZmlsdGVyIFwKKyAgICB0b29scy9idGluZm8gXAorICAgIHRvb2xzL2J0c25vb3AgXAorICAgIHRvb2xzL2J0cHJveHkgXAorICAgIHRvb2xzL2J0aW90ZXN0IFwKKyAgICB0b29scy9ibmVwdGVzdCBcCisgICAgdG9vbHMvbWNhcHRlc3QgXAorICAgIHRvb2xzL2NsdGVzdCBcCisgICAgdG9vbHMvb29idGVzdCBcCisgICAgdG9vbHMvYWR2dGVzdCBcCisgICAgdG9vbHMvc2VxMmJzZXEgXAorICAgIHRvb2xzL25va2Z3IFwKKyAgICB0b29scy9jcmVhdGUtaW1hZ2UgXAorICAgIHRvb2xzL2VkZHlzdG9uZSBcCisgICAgdG9vbHMvaWJlYWNvbiBcCisgICAgdG9vbHMvYnRnYXR0LWNsaWVudCBcCisgICAgdG9vbHMvYnRnYXR0LXNlcnZlciBcCisgICAgdG9vbHMvdGVzdC1ydW5uZXIgXAorICAgIHRvb2xzL2NoZWNrLXNlbGZ0ZXN0IFwKKyAgICB0b29scy9nYXR0LXNlcnZpY2UgXAorICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdidHBjbGllbnQnLCAndG9vbHMvYnRwY2xpZW50JywgJycsIGQpfSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItcmVzb2x2ZS1tdXNsLWRvZXMtbm90LWltcGxlbWVudC1yZXNfbmluaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDItcmVzb2x2ZS1tdXNsLWRvZXMtbm90LWltcGxlbWVudC1yZXNfbmluaXQucGF0Y2gKaW5kZXggMDU5MzQyNy4uNjM5Y2NmYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMi1yZXNvbHZlLW11c2wtZG9lcy1ub3QtaW1wbGVtZW50LXJlc19uaW5pdC5wYXRjaApAQCAtMTcsNiArMTcsMTQgQEAKIGluZGV4IDVjZjdhOWEuLjNhZDhlNzAgMTAwNjQ0CiAtLS0gYS9nd2ViL2dyZXNvbHYuYwogKysrIGIvZ3dlYi9ncmVzb2x2LmMKK0BAIC0zNiw2ICszNiw3IEBACisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgI2luY2x1ZGUgImdyZXNvbHYuaCIKKyAKIEBAIC04NzUsOCArODc1LDYgQEAgR1Jlc29sdiAqZ19yZXNvbHZfbmV3KGludCBpbmRleCkKICAJcmVzb2x2LT5pbmRleCA9IGluZGV4OwogIAlyZXNvbHYtPm5hbWVzZXJ2ZXJfbGlzdCA9IE5VTEw7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL2luY2x1ZGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi9pbmNsdWRlcy5wYXRjaAppbmRleCA1NWNiMTg3Li45ZjczOTVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuL2luY2x1ZGVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vaW5jbHVkZXMucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBGaXggdmFyaW91cyBpc3N1ZXMgd2hpY2ggY2F1c2UgcHJvYmxlbXMgdW5kZXIgbXVzbC4KIAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2JkMTMyNmJhN2Q2OGRmMzhjNWNjYWFmZDI0MDNhNWZiMzBiZDQ1MmJdCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCiBGcm9tIDYzMDUxNmJjYzAyMzNiMDQ3ZjY1NjY1YzAwMzIwMWJhNmU3NzQ1M2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkBAIC0zMDAsMjAgKzMwMCwxNCBAQAogaW5kZXggOGE1MWE5Zi4uZDU1MDI3YyAxMDA2NDQKIC0tLSBhL2d3ZWIvZ3Jlc29sdi5jCiArKysgYi9nd2ViL2dyZXNvbHYuYwotQEAgLTIzLDExICsyMywxMyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgorQEAgLTI5LDYgKzI5LDcgQEAKICAjaW5jbHVkZSA8c3RyaW5nLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxyZXNvbHYuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8bmV0ZGIuaD4KIGRpZmYgLS1naXQgYS9wbHVnaW5zL3dpZmkuYyBiL3BsdWdpbnMvd2lmaS5jCiBpbmRleCA5ZDU2NjcxLi4xNDgxMzFkIDEwMDY0NAogLS0tIGEvcGx1Z2lucy93aWZpLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKaW5kZXggNDRlOTQ2Yy4uM2U2NWU1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKQEAgLTgsOSArOCw5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvIgogCiBMSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTQ7bWQ1PWM1YzY0ZDY5NjEwN2Y4NGI1NmZlMzM3ZDE0ZGExNzUzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDttZDU9MDA0YTRkYjUwYTFlMjA5NzJlOTI0YTg2MTg3NDdjMDEiCiAKLURFUEVORFMgPSAib3BlbnNzbCIKK0RFUEVORFMgPSAib3BlbnNzbCBiaW5kIgogCiBTUkNfVVJJID0gImh0dHA6Ly9mdHAuaXNjLm9yZy9pc2MvZGhjcC8ke1BWfS9kaGNwLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LXJlbGF5IGZpbGU6Ly9kZWZhdWx0LXJlbGF5IFwKQEAgLTI0LDcgKzI0LDcgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJmdHA6Ly9mdHAuaXNjLm9yZy9pc2MvZGhjcC8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkK1wuKFxkKz8pKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgdXNlcmFkZCB1cGRhdGUtcmMuZAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQgdXNlcmFkZCB1cGRhdGUtcmMuZAogCiBVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LXNlcnZlciIKIFVTRVJBRERfUEFSQU1fJHtQTn0tc2VydmVyID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi8ke0JQTn0gLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCAke0JQTn0iCkBAIC01MCw4ICs1MCwxNSBAQAogICAgICAgICAgICAgICAgIC0td2l0aC1jbGk2LWxlYXNlLWZpbGU9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGhjcC9kaGNsaWVudDYubGVhc2VzIFwKICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wYXJhbm9pYSAtLWRpc2FibGUtc3RhdGljIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGliYmluZD0ke1NUQUdJTkdfRElSX0hPU1R9IFwKKwkJLS1lbmFibGUtbGlidG9vbCBcCiAgICAgICAgICAgICAgICAiCiAKKyNFbmFibGUgc2hhcmVkIGxpYnMgcGVyIGRoY3AgUkVBRE1FCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgY29uZmlndXJlLmFjK2x0IGNvbmZpZ3VyZS5hYworfQorCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKQEAgLTk1LDggKzEwMiw3IEBACiBQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKLQotRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliZGhjcGN0bC5zby4wKiAke2xpYmRpcn0vbGlib21hcGkuc28uMCoiCitGSUxFU18ke1BOfS1saWJzID0gIiR7bGliZGlyfS9saWJkaGNwY3RsLnNvLjAqICR7bGliZGlyfS9saWJvbWFwaS5zby4wKiAke2xpYmRpcn0vbGliZGhjcC5zby4wKiIKIAogRklMRVNfJHtQTn0tc2VydmVyID0gIiR7c2JpbmRpcn0vZGhjcGQgJHtzeXNjb25mZGlyfS9pbml0LmQvZGhjcC1zZXJ2ZXIiCiBSUkVDT01NRU5EU18ke1BOfS1zZXJ2ZXIgPSAiZGhjcC1zZXJ2ZXItY29uZmlnIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaAppbmRleCBlNWIzY2Y5Li5kMWI1N2YwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgaW5jbHVkZXMvc2l0ZS5oIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKLWluZGV4IGIyZjdmZDcuLjI4MGZiYjkgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlcy9zaXRlLmgKLSsrKyBiL2luY2x1ZGVzL3NpdGUuaAotQEAgLTE0OSw3ICsxNDksOCBAQAorSW5kZXg6IGRoY3AtNC40LjEvaW5jbHVkZXMvc2l0ZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2luY2x1ZGVzL3NpdGUuaAorKysrIGRoY3AtNC40LjEvaW5jbHVkZXMvc2l0ZS5oCitAQCAtMTQ4LDcgKzE0OCw4IEBACiAgLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdGhlIGRoY3BkLmNvbmYgZmlsZSB0byBnbyBzb21ld2hlcmUgb3RoZXIgdGhhbgogICAgIHRoZSBkZWZhdWx0IGxvY2F0aW9uLiAgIEJ5IGRlZmF1bHQsIGl0IGdvZXMgaW4gL2V0Yy9kaGNwZC5jb25mLiAqLwogIApAQCAtMjUsNiArMjUsMyBAQAogIAogIC8qIE5ldHdvcmsgQVBJIGRlZmluaXRpb25zLiAgIFlvdSBkbyBub3QgbmVlZCB0byBjaG9vc2Ugb25lIG9mIHRoZXNlIC0gaWYKICAgICB5b3UgZG9uJ3QgY2hvb3NlLCBvbmUgd2lsbCBiZSBjaG9zZW4gZm9yIHlvdSBpbiB5b3VyIHN5c3RlbSdzIGNvbmZpZwotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaAppbmRleCA4MTBjN2I2Li41YjM1OTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAzLWxpbmstd2l0aC1sY3J5cHRvLnBhdGNoCkBAIC0xOCwxMSArMTgsMTEgQEAKICBjb25maWd1cmUuYWMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNkZmEzNTIuLjQ0ZmI1N2UgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU5MSw2ICs1OTEsMTAgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW3ZvaWQgZm9vKCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKK0luZGV4OiBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYworQEAgLTYxMiw2ICs2MTIsMTAgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLAogICMgTG9vayBmb3Igb3B0aW9uYWwgaGVhZGVycy4KICBBQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXQuaCBuZXQvaWZfZGwuaCBuZXQvaWY2LmggcmVnZXguaCkKICAKQEAgLTMzLDYgKzMzLDMgQEAKICAjIFNvbGFyaXMgbmVlZHMgc29tZSBsaWJyYXJpZXMgZm9yIGZ1bmN0aW9ucwogIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgW3NvY2tldF0pCiAgQUNfU0VBUkNIX0xJQlMoaW5ldF9udG9hLCBbbnNsXSkKLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IDdkMWQ4NjcuLmI3MWM5M2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0xOSw4MiArMTksNzUgQEAKICBzZXJ2ZXIvTWFrZWZpbGUuYW0gIHwgMiArLQogIDYgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvY2xpZW50L01ha2VmaWxlLmFtIGIvY2xpZW50L01ha2VmaWxlLmFtCi1pbmRleCAyY2I4M2Q4Li40NzMwYmIzIDEwMDY0NAotLS0tIGEvY2xpZW50L01ha2VmaWxlLmFtCi0rKysgYi9jbGllbnQvTWFrZWZpbGUuYW0KLUBAIC03LDExICs3LDExIEBAIFNVQkRJUlMgPSAuIHRlc3RzCi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLSBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJyBcCi0tCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJwotKwkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNsaWVudC5jb25mLmV4YW1wbGUKLSBzYmluX1BST0dSQU1TID0gZGhjbGllbnQKLS1kaGNsaWVudF9TT1VSQ0VTID0gY2xwYXJzZS5jIGRoY2xpZW50LmMgZGhjNi5jIFwKLStkaGNsaWVudF9TT1VSQ0VTID0gJChzcmNkaXIpL2NscGFyc2UuYyAkKHNyY2RpcikvZGhjbGllbnQuYyAkKHNyY2RpcikvZGhjNi5jIFwKLSAJCSAgIHNjcmlwdHMvYnNkb3Mgc2NyaXB0cy9mcmVlYnNkIHNjcmlwdHMvbGludXggc2NyaXB0cy9tYWNvcyBcCi0gCQkgICBzY3JpcHRzL25ldGJzZCBzY3JpcHRzL25leHRzdGVwIHNjcmlwdHMvb3BlbmJzZCBcCi0gCQkgICBzY3JpcHRzL3NvbGFyaXMgc2NyaXB0cy9vcGVud3J0Ci1kaWZmIC0tZ2l0IGEvY29tbW9uL01ha2VmaWxlLmFtIGIvY29tbW9uL01ha2VmaWxlLmFtCi1pbmRleCAxMTNhZWU4Li4wZjI0ZmJiIDEwMDY0NAotLS0tIGEvY29tbW9uL01ha2VmaWxlLmFtCi0rKysgYi9jb21tb24vTWFrZWZpbGUuYW0KK0luZGV4OiBkaGNwLTQuNC4xL2NvbW1vbi9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9jb21tb24vTWFrZWZpbGUuYW0KKysrKyBkaGNwLTQuNC4xL2NvbW1vbi9NYWtlZmlsZS5hbQogQEAgLTEsNCArMSw1IEBACiAtQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICtBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKICsKICBBTV9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQogIAotIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJkaGNwLmEKLWRpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotaW5kZXggY2ViMGRlMS4uYmE4ZGQ4YiAxMDA2NDQKLS0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0xLDUgKzEsNyBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgbGliX0xJQlJBUklFUyA9IGxpYmRoY3AuYQorSW5kZXg6IGRoY3AtNC40LjEvZGhjcGN0bC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9kaGNwY3RsL01ha2VmaWxlLmFtCisrKysgZGhjcC00LjQuMS9kaGNwY3RsL01ha2VmaWxlLmFtCitAQCAtMyw2ICszLDggQEAgQklORExJQkROU0RJUj1AQklORExJQkROU0RJUkAKKyBCSU5ETElCSVNDQ0ZHRElSPUBCSU5ETElCSVNDQ0ZHRElSQAorIEJJTkRMSUJJU0NESVI9QEJJTkRMSUJJU0NESVJACiAgCiArQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCiArCiAgYmluX1BST0dSQU1TID0gb21zaGVsbAogIGxpYl9MSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmEKICBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKLWRpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KLWluZGV4IDQ0NmE1OTQuLmRkMWFmYTAgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KLSsrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw1IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCi0gbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0Ci1kaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQotaW5kZXggMzA2MGVjYS4uNmQ2NTJmNiAxMDA2NDQKLS0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCi0rKysgYi9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLS1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0rQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKLSBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYwotZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggNTRmZWVkZi4uMzk5MGI5YyAxMDA2NDQKLS0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNiw3ICs2LDcgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorSW5kZXg6IGRoY3AtNC40LjEvc2VydmVyL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL3NlcnZlci9NYWtlZmlsZS5hbQorKysrIGRoY3AtNC40LjEvc2VydmVyL01ha2VmaWxlLmFtCitAQCAtNCw3ICs0LDcgQEAKKyAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgorIFNVQkRJUlMgPSAuIHRlc3RzCiAgCiAtQU1fQ1BQRkxBR1MgPSAtSS4uIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCiArQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCiAgCiAgZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNwZC5jb25mLmV4YW1wbGUKICBzYmluX1BST0dSQU1TID0gZGhjcGQKLS0tIAotMS44LjMuMQotCitJbmRleDogZGhjcC00LjQuMS9jbGllbnQvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvY2xpZW50L01ha2VmaWxlLmFtCisrKysgZGhjcC00LjQuMS9jbGllbnQvTWFrZWZpbGUuYW0KK0BAIC01LDcgKzUsNyBAQAorIFNVQkRJUlMgPSAuIHRlc3RzCisgCisgQU1fQ1BQRkxBR1MgPSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicKKy1BTV9DUFBGTEFHUyArPSAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicKKytBTV9DUFBGTEFHUyArPSAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCisgZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNsaWVudC5jb25mLmV4YW1wbGUKKyBzYmluX1BST0dSQU1TID0gZGhjbGllbnQKK0luZGV4OiBkaGNwLTQuNC4xL29tYXBpcC9NYWtlZmlsZS5hbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBkaGNwLTQuNC4xL29tYXBpcC9NYWtlZmlsZS5hbQorQEAgLTIsNiArMiw3IEBAIEJJTkRMSUJJUlNESVI9QEJJTkRMSUJJUlNESVJACisgQklORExJQkROU0RJUj1AQklORExJQkROU0RJUkAKKyBCSU5ETElCSVNDQ0ZHRElSPUBCSU5ETElCSVNDQ0ZHRElSQAorIEJJTkRMSUJJU0NESVI9QEJJTkRMSUJJU0NESVJACisrQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBsaWJfTElCUkFSSUVTID0gbGlib21hcGkuYQorIG5vaW5zdF9QUk9HUkFNUyA9IHN2dGVzdAorSW5kZXg6IGRoY3AtNC40LjEvcmVsYXkvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvcmVsYXkvTWFrZWZpbGUuYW0KKysrKyBkaGNwLTQuNC4xL3JlbGF5L01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDQgQEAKKy1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCisrQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKyBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKKyBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCmluZGV4IGM2MmIyODMuLjZlZjcwY2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNi1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKQEAgLTEyLDExICsxMiwxMSBAQAogIGluY2x1ZGVzL3NpdGUuaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL3NpdGUuaCBiL2luY2x1ZGVzL3NpdGUuaAotaW5kZXggMjgwZmJiOS4uZTZjMjk3MiAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3NpdGUuaAotKysrIGIvaW5jbHVkZXMvc2l0ZS5oCi1AQCAtMjk2LDcgKzI5Niw3IEBACitJbmRleDogZGhjcC00LjQuMS9pbmNsdWRlcy9zaXRlLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvaW5jbHVkZXMvc2l0ZS5oCisrKysgZGhjcC00LjQuMS9pbmNsdWRlcy9zaXRlLmgKK0BAIC0yOTUsNyArMjk1LDcgQEAKICAgICBzaXR1YXRpb25zLiAgV2UgcGxhbiB0byByZXZpc2l0IHRoaXMgZmVhdHVyZSBhbmQgbWF5CiAgICAgbWFrZSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlcyBpbmNsdWRpbmcgdGhlCiAgICAgcmVtb3ZhbCBvZiB0aGlzIGRlZmluZS4gIFVzZSBhdCB5b3VyIG93biByaXNrLiAgKi8KQEAgLTI1LDYgKzI1LDMgQEAKICAKICAvKiBJbmNsdWRlIG9sZCBlcnJvciBjb2Rlcy4gIFRoaXMgaXMgcHJvdmlkZWQgaW4gY2FzZSB5b3UKICAgICBhcmUgYnVpbGRpbmcgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBzaW1pbGFyIHRvIG9tc2hlbGwgZm9yCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaAppbmRleCA0M2MyNmVhLi5mZWIwNzU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaApAQCAtMTUsMTMgKzE1LDEzIEBACiAgY29uZmlndXJlLmFjIHwgMTEgKysrKysrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0NGZiNTdlLi44ZTlmNTA5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MTEsNiArNjExLDE3IEBAIEFDX0NIRUNLX0ZVTkNTKHN0cmxjYXQpCi0gIyBGb3IgSFAvVVggd2UgbmVlZCAtbGlwdjYgZm9yIGlmX25hbWV0b2luZGV4LCBwZXJoYXBzIG90aGVycy4KLSBBQ19TRUFSQ0hfTElCUyhpZl9uYW1ldG9pbmRleCwgW2lwdjZdKQorSW5kZXg6IGRoY3AtNC40LjEvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGRoY3AtNC40LjEvY29uZmlndXJlLmFjCitAQCAtNjQyLDYgKzY0MiwxNyBAQCBpZiB0ZXN0ICIkaGF2ZV9uYW5vc2xlZXAiID0gInJ0IjsgdGhlbgorIAlMSUJTPSItbHJ0ICRMSUJTIgorIGZpCiAgCiArQUNfQVJHX1dJVEgobGlieG1sMiwKICsJQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJ4bWwyXSwgW2xpbmsgYWdhaW5zdCBsaWJ4bWwyLiB0aGlzIGlzIG5lZWRlZCBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHhtbDIgc3VwcG9ydCBlbmFibGVkXSksCkBAIC0zNyw2ICszNywyNiBAQAogICMgY2hlY2sgZm9yIC9kZXYvcmFuZG9tIChkZWNsYXJlcyBIQVZFX0RFVl9SQU5ET00pCiAgQUNfTVNHX0NIRUNLSU5HKGZvciByYW5kb20gZGV2aWNlKQogIEFDX0FSR19XSVRIKHJhbmRvbWRldiwKLS0tIAotMS44LjMuMQotCitJbmRleDogZGhjcC00LjQuMS9jb25maWd1cmUuYWMrbHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBkaGNwLTQuNC4xLm9yaWcvY29uZmlndXJlLmFjK2x0CisrKysgZGhjcC00LjQuMS9jb25maWd1cmUuYWMrbHQKK0BAIC05MDksNiArOTA5LDE4IEBAIGVsaWYgdGVzdCAiJHdhbnRfbGlidG9vbCIgPSAieWVzIiAtYSAiJHUKKyBmaQorIEFNX0NPTkRJVElPTkFMKElOU1RBTExfQklORCwgdGVzdCAiJHdhbnRfaW5zdGFsbF9iaW5kIiA9ICJ5ZXMiKQorIAorK0FDX0FSR19XSVRIKGxpYnhtbDIsCisrCUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbGlieG1sMl0sIFtsaW5rIGFnYWluc3QgbGlieG1sMi4gdGhpcyBpcyBuZWVkZWQgaWYgYmluZCB3YXMgYnVpbHQgd2l0aCB4bWwyIHN1cHBvcnQgZW5hYmxlZF0pLAorKwl3aXRoX2xpYnhtbDI9IiR3aXRodmFsIiwgd2l0aF9saWJ4bWwyPSJubyIpCisrCisraWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4bm87IHRoZW4KKysJQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCwKKysJCVtpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhhdXRvOyB0aGVuCisrCQkJQUNfTVNHX0ZBSUxVUkUoWyoqKiBDYW5ub3QgZmluZCB4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50IHdpdGggLWx4bWwyIGFuZCBsaWJ4bWwyIHdhcyByZXF1ZXN0ZWRdKQorKwkJZmldKQorK2ZpCisrCisrCisgIyBPcGVuTERBUCBzdXBwb3J0LgorIEFDX0FSR19XSVRIKGxkYXAsCisgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbGRhcF0sW2VuYWJsZSBPcGVuTERBUCBzdXBwb3J0IGluIGRoY3BkIChkZWZhdWx0IGlzIG5vKV0pLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKaW5kZXggYTIwYjVmOS4uMDA2ZDE4YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDgtdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoCkBAIC0yMCwxMCArMjAsMTAgQEAKICBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCiAgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKLUluZGV4OiBkaGNwLTQuMy42L2NsaWVudC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L2NsaWVudC9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQoraW5kZXggNDczMGJiMy4uODRkODEzMSAxMDA2NDQKKy0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCiBAQCAtNCw3ICs0LDcgQEAKICAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgogIFNVQkRJUlMgPSAuIHRlc3RzCkBAIC0zMywxMCArMzMsMTAgQEAKICAKICBBTV9DUFBGTEFHUyA9IC1EQ0xJRU5UX1BBVEg9JyJQQVRIPSQoc2JpbmRpcik6L3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW4iJyBcCiAgCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLUluZGV4OiBkaGNwLTQuMy42L2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRoY3AtNC4zLjYub3JpZy9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNTAzMWQwYy4uYThkZmQyNiAxMDA2NDQKKy0tLSBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDYgQEAKICBTVUJESVJTID0gLgogIApAQCAtNDUsMTAgKzQ1LDEwIEBACiAgCiAgQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCi1JbmRleDogZGhjcC00LjMuNi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGY2YTQzZTQuLjJmOThkMjIgMTAwNjQ0CistLS0gYS9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNiArMSw2IEBACiAgU1VCRElSUyA9IC4KICAKQEAgLTU3LDQwICs1Nyw0MCBAQAogIAogIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKICAKLUluZGV4OiBkaGNwLTQuMy42L2RoY3BjdGwvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvZGhjcGN0bC9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvZGhjcGN0bC9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCitpbmRleCBiYThkZDhiLi45YjI0ODZlIDEwMDY0NAorLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQorKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQogQEAgLTEsNCArMSw0IEBACiAtQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKICtCSU5ETElCRElSID0gQEJJTkRESVJACiAgCiAgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCiAgCi1JbmRleDogZGhjcC00LjMuNi9vbWFwaXAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvb21hcGlwL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9vbWFwaXAvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KK2luZGV4IGRkMWFmYTAuLmU0YTg1OTkgMTAwNjQ0CistLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQogQEAgLTEsNCArMSw0IEBACiAtQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKICtCSU5ETElCRElSID0gQEJJTkRESVJACiAgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKICAKLSBsaWJfTFRMSUJSQVJJRVMgPSBsaWJvbWFwaS5sYQotSW5kZXg6IGRoY3AtNC4zLjYvcmVsYXkvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvcmVsYXkvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L3JlbGF5L01ha2VmaWxlLmFtCisgbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKK2RpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCitpbmRleCA2ZDY1MmY2Li5iM2JmNTc4IDEwMDY0NAorLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KKysrKyBiL3JlbGF5L01ha2VmaWxlLmFtCiBAQCAtMSw0ICsxLDQgQEAKIC1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgogK0JJTkRMSUJESVIgPSBAQklORERJUkAKICAKICBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwogIAotSW5kZXg6IGRoY3AtNC4zLjYvc2VydmVyL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvc2VydmVyL01ha2VmaWxlLmFtCitkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCitpbmRleCAzOTkwYjljLi5iNWQ4YzJkIDEwMDY0NAorLS0tIGEvc2VydmVyL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KIEBAIC00LDcgKzQsNyBAQAogICMgcHJvZHVjdGlvbiBjb2RlLiBTYWRseSwgd2UgYXJlIG5vdCB0aGVyZSB5ZXQuCiAgU1VCRElSUyA9IC4gdGVzdHMKQEAgLTEwMCwxMCArMTAwLDEwIEBACiAgCiAgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCiAgCi1JbmRleDogZGhjcC00LjMuNi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IGE4N2M1ZTcuLjk4MjEwODEgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQogQEAgLTEsNiArMSw2IEBACiAgU1VCRElSUyA9IC4KICAKQEAgLTExMiwzICsxMTIsNiBAQAogIAogIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKICBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk4YjFmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotRnJvbSA3NmMzNzBhOTI5ZTVhYjVkYmM4MWMyZmJjZjRlNTBmNGZiYzA4Y2U5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjUzOjM3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIGJ1aWxkIHNoYXJlZCBsaWJzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1Qb3J0IHBhdGNoZXMgZnJvbSBGZWRvcmEgdG8gYnVpbGQgc2hhcmVkIGxpYnMgcmF0aGVyIHRoYW4gc3RhdGljIGxpYnMuCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1SZWJhc2UgdG8gNC4zLjYKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L01ha2VmaWxlLmFtICAgICAgIHwgIDQgKystLQotIGNvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSB8IDEzICsrKysrLS0tLS0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgfCAxMiArKy0tLS0tLS0tLS0KLSBkaGNwY3RsL01ha2VmaWxlLmFtICAgICAgfCAxNCArKysrKystLS0tLS0tLQotIG9tYXBpcC9NYWtlZmlsZS5hbSAgICAgICB8ICA3ICsrKy0tLS0KLSByZWxheS9NYWtlZmlsZS5hbSAgICAgICAgfCAgNSArKy0tLQotIHNlcnZlci9NYWtlZmlsZS5hbSAgICAgICB8ICA3ICsrKy0tLS0KLSBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAgNyArKystLS0tCi0gOCBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGRoY3AtNC4zLjYvY2xpZW50L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL2NsaWVudC9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvY2xpZW50L01ha2VmaWxlLmFtCi1AQCAtMTUsNyArMTUsNyBAQCBkaGNsaWVudF9TT1VSQ0VTID0gJChzcmNkaXIpL2NscGFyc2UuYyAkCi0gCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAotIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAotIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAotLWRoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKLS0JCSAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQotK2RoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAotKwkJICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKLSBtYW5fTUFOUyA9IGRoY2xpZW50LjggZGhjbGllbnQtc2NyaXB0LjggZGhjbGllbnQuY29uZi41IGRoY2xpZW50LmxlYXNlcy41Ci0gRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCi1JbmRleDogZGhjcC00LjMuNi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgZGhjcC00LjMuNi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xNSwyNiArMTUsMjMgQEAgQVRGX1RFU1RTICs9IGFsbG9jX3VuaXR0ZXN0IGRuc191bml0dGVzdAotIGFsbG9jX3VuaXR0ZXN0X1NPVVJDRVMgPSB0ZXN0X2FsbG9jLmMgJCh0b3Bfc3JjZGlyKS90ZXN0cy90X2FwaV9kaGNwLmMKLSBhbGxvY191bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCi0gYWxsb2NfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCi0tCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAotLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKLSsJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGRucyAtbGlzY2NmZyAtbGlzYwotIAotIGRuc191bml0dGVzdF9TT1VSQ0VTID0gZG5zX3VuaXR0ZXN0LmMgJCh0b3Bfc3JjZGlyKS90ZXN0cy90X2FwaV9kaGNwLmMKLSBkbnNfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQotIGRuc191bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKLS0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCi0tCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQotKwkuLi8uLi9vbWFwaXAvbGlib21hcGkubGEgLUwkKEJJTkRMSUJESVIpIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi0gbWlzY191bml0dGVzdF9TT1VSQ0VTID0gbWlzY191bml0dGVzdC5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCi0gbWlzY191bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCi0gbWlzY191bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKLS0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCi0tCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQotKwkuLi8uLi9vbWFwaXAvbGlib21hcGkubGEgLUwkKEJJTkRMSUJESVIpIC1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi0gbnNfbmFtZV91bml0dGVzdF9TT1VSQ0VTID0gbnNfbmFtZV90ZXN0LmMgJCh0b3Bfc3JjZGlyKS90ZXN0cy90X2FwaV9kaGNwLmMKLSBuc19uYW1lX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKLSBuc19uYW1lX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAotLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKLS0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hIC1MJChCSU5ETElCRElSKSBcCi0rCS1sZG5zIC1saXNjY2ZnIC1saXNjCi0gCi0gY2hlY2s6ICQoQVRGX1RFU1RTKQotIAlAaWYgdGVzdCAkKHRvcF9zcmNkaXIpICE9ICR7dG9wX2J1aWxkZGlyfTsgdGhlbiBcCi1JbmRleDogZGhjcC00LjMuNi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZGhjcC00LjMuNi9jb25maWd1cmUuYWMKLUBAIC00NywxNiArNDcsOCBAQCBBTV9DT05ESVRJT05BTChDUk9TU19DT01QSUxJTkcsIHRlc3QgIiRjCi0gIyBVc2UgdGhpcyB0byBkZWZpbmUgX0dOVV9TT1VSQ0UgdG8gcHVsbCBpbiB0aGUgSVB2NiBBZHZhbmNlZCBTb2NrZXQgQVBJLgotIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwotIAotLUFDX1BST0dfUkFOTElCCi0tCi0tQUNfUEFUSF9QUk9HKEFSLCBhcikKLS1BQ19TVUJTVChBUikKLS0KLS1pZiB0ZXN0ICJYJEFSIiA9ICJYIjsgdGhlbgotLQlBQ19NU0dfRVJST1IoWwotLWFyIHByb2dyYW0gbm90IGZvdW5kLiAgUGxlYXNlIGZpeCB5b3VyIFBBVEggdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IGluCi0td2hpY2ggYXIgcmVzaWRlcywgb3Igc2V0IEFSIGluIHRoZSBlbnZpcm9ubWVudCB3aXRoIHRoZSBmdWxsIHBhdGggdG8gYXIuXSkKLS1maQotKyMgVXNlIGxpYnRvb2wgdG8gc2ltcGxpZnkgYnVpbGRpbmcgb2Ygc2hhcmVkIGxpYnJhcmllcwotK0FDX1BST0dfTElCVE9PTAotIAotIEFDX0NPTkZJR19IRUFERVJTKFtpbmNsdWRlcy9jb25maWcuaF0pCi0gCi1JbmRleDogZGhjcC00LjMuNi9kaGNwY3RsL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0zLDE5ICszLDE3IEBAIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCi0gCi0gYmluX1BST0dSQU1TID0gb21zaGVsbAotLWxpYl9MSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmEKLStsaWJfTFRMSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmxhCi0gbm9pbnN0X1BST0dSQU1TID0gY2x0ZXN0Ci0gbWFuX01BTlMgPSBvbXNoZWxsLjEgZGhjcGN0bC4zCi0gRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCi0gCi0gb21zaGVsbF9TT1VSQ0VTID0gb21zaGVsbC5jCi0tb21zaGVsbF9MREFERCA9IGxpYmRoY3BjdGwuYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKLS0JICAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAotLQkgICAgICAgICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQotK29tc2hlbGxfTERBREQgPSBsaWJkaGNwY3RsLmxhIC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmxhIFwKLSsJICAgICAgICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKLSAKLS1saWJkaGNwY3RsX2FfU09VUkNFUyA9IGRoY3BjdGwuYyBjYWxsYmFjay5jIHJlbW90ZS5jCi0rbGliZGhjcGN0bF9sYV9TT1VSQ0VTID0gZGhjcGN0bC5jIGNhbGxiYWNrLmMgcmVtb3RlLmMKLSAKLSBjbHRlc3RfU09VUkNFUyA9IGNsdGVzdC5jCi0tY2x0ZXN0X0xEQUREID0gbGliZGhjcGN0bC5hIC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmEgXAotLQkgICAgICAgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKLS0gICAgICAgICAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKLStjbHRlc3RfTERBREQgPSBsaWJkaGNwY3RsLmxhIC4uL2NvbW1vbi9saWJkaGNwLmEgLi4vb21hcGlwL2xpYm9tYXBpLmxhIFwKLSsJICAgICAgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotSW5kZXg6IGRoY3AtNC4zLjYvb21hcGlwL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL29tYXBpcC9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvb21hcGlwL01ha2VmaWxlLmFtCi1AQCAtMSwxMCArMSwxMCBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLS1saWJfTElCUkFSSUVTID0gbGlib21hcGkuYQotK2xpYl9MVExJQlJBUklFUyA9IGxpYm9tYXBpLmxhCi0gbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0Ci0gCi0tbGlib21hcGlfYV9TT1VSQ0VTID0gcHJvdG9jb2wuYyBidWZmZXIuYyBhbGxvYy5jIHJlc3VsdC5jIGNvbm5lY3Rpb24uYyBcCi0rbGlib21hcGlfbGFfU09VUkNFUyA9IHByb3RvY29sLmMgYnVmZmVyLmMgYWxsb2MuYyByZXN1bHQuYyBjb25uZWN0aW9uLmMgXAotIAkJICAgICBlcnJ3YXJuLmMgbGlzdGVuZXIuYyBkaXNwYXRjaC5jIGdlbmVyaWMuYyBzdXBwb3J0LmMgXAotIAkJICAgICBoYW5kbGUuYyBtZXNzYWdlLmMgY29udmVydC5jIGhhc2guYyBhdXRoLmMgaW5ldF9hZGRyLmMgXAotIAkJICAgICBhcnJheS5jIHRyYWNlLmMgdG9pc2MuYyBpc2NwcmludC5jIGlzY2xpYi5jCi1AQCAtMTMsNiArMTMsNSBAQCBtYW5fTUFOUyA9IG9tYXBpLjMKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKLSAKLSBzdnRlc3RfU09VUkNFUyA9IHRlc3QuYwotLXN2dGVzdF9MREFERCA9IGxpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKLS0JCSQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQotK3N2dGVzdF9MREFERCA9IGxpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotIAotSW5kZXg6IGRoY3AtNC4zLjYvcmVsYXkvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBkaGNwLTQuMy42Lm9yaWcvcmVsYXkvTWFrZWZpbGUuYW0KLSsrKyBkaGNwLTQuMy42L3JlbGF5L01ha2VmaWxlLmFtCi1AQCAtNCw5ICs0LDggQEAgQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdAotIAotIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQotIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCi0tZGhjcmVsYXlfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKLS0JCSAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAotLQkJICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQotK2RoY3JlbGF5X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAotKwkJIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotIG1hbl9NQU5TID0gZGhjcmVsYXkuOAotIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotIAotSW5kZXg6IGRoY3AtNC4zLjYvc2VydmVyL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtMTUsMTAgKzE1LDkgQEAgZGhjcGRfU09VUkNFUyA9IGRoY3BkLmMgZGhjcC5jIGJvb3RwLmMgYwotIAkJZGhjcHY2LmMgbWRiNi5jIGxkYXAuYyBsZGFwX2Nhc2EuYyBsZWFzZWNoYWluLmMgbGRhcF9rcmJfaGVscGVyLmMKLSAKLSBkaGNwZF9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQotLWRoY3BkX0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCi0tCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAotLQkgICAgICAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgXAotLQkgICAgICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hICQoTERBUF9MSUJTKQotK2RoY3BkX0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAotKwkgICAgICAuLi9kaGNwY3RsL2xpYmRoY3BjdGwubGEgLUwkKEJJTkRMSUJESVIpIFwKLSsJICAgICAgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MgJChMREFQX0xJQlMpCi0gCi0gbWFuX01BTlMgPSBkaGNwZC44IGRoY3BkLmNvbmYuNSBkaGNwZC5sZWFzZXMuNQotIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQotSW5kZXg6IGRoY3AtNC4zLjYvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGhjcC00LjMuNi5vcmlnL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGRoY3AtNC4zLjYvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTksMTAgKzE5LDkgQEAgREhDUFNSQyA9IC4uL2RoY3AuYyAuLi9ib290cC5jIC4uL2NvbmZwYQotICAgICAgICAgICAuLi9kZG5zLmMgLi4vZGhjcGxlYXNlcXVlcnkuYyAuLi9kaGNwdjYuYyAuLi9tZGI2LmMgICAgICAgIFwKLSAgICAgICAgICAgLi4vbGRhcC5jIC4uL2xkYXBfY2FzYS5jIC4uL2RoY3BkLmMgLi4vbGVhc2VjaGFpbi5jCi0gCi0tREhDUExJQlMgPSAkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmRoY3AuYSAkKHRvcF9idWlsZGRpcikvb21hcGlwL2xpYm9tYXBpLmEgXAotLSAgICAgICAgICAkKHRvcF9idWlsZGRpcikvZGhjcGN0bC9saWJkaGNwY3RsLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCi0tCSAgJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hIFwKLS0JICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCi0rREhDUExJQlMgPSAkKHRvcF9idWlsZGRpcikvY29tbW9uL2xpYmRoY3AuYSAkKHRvcF9idWlsZGRpcikvb21hcGlwL2xpYm9tYXBpLmxhIFwKLSsgICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2RoY3BjdGwvbGliZGhjcGN0bC5sYSBcCi0rICAgICAgICAgIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYwotIAotIEFURl9URVNUUyA9Ci0gaWYgSEFWRV9BVEYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YmI0NjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1Gcm9tIDM3NzI1ZjNlMjJlZGI1MGUwY2EyZDFmZmY5NzEzMjFhNWE0ZDUxMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDEyIEp1bCAyMDE3IDAzOjA1OjEzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIE1vdmVkIHRoZSBjYWxsIHRvIGlzY19hcHBfY3R4c3RhcnQoKSB0byBub3QgZ2V0IHNpZ25hbAotIGJsb2NrIGJ5IGFsbCB0aHJlYWRzCi0KLVNpZ25lZC1vZmYtYnk6IEZyYW5jaXMgRHVwb250IDxmZHVwb250QGlzYy5vcmc+Ci0KLUluIGh0dHBzOi8vc291cmNlLmlzYy5vcmcvZ2l0L2JpbmQ5LmdpdCwgc2luY2UgdGhlIGZvbGxvd2luZwotY29tbWl0IGFwcGxpZWQ6Ci0uLi4KLWNvbW1pdCBiOTliZmExODRiYzkzNzU0MjFiNWRmOTE1ZWVhN2RmYWM2YTY4YTk5Ci1BdXRob3I6IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogICBXZWQgQXByIDEwIDEzOjQ5OjU3IDIwMTMgLTA3MDAKLQotICAgIFttYXN0ZXJdIHVuaWZ5IGludGVybmFsIGFuZCBleHBvcnQgbGlicmFyaWVzCi0KLSAgICAzNTUwLiAgICAgICBbZnVuY10gICAgICAgICAgVW5pZmllZCB0aGUgaW50ZXJuYWwgYW5kIGV4cG9ydCB2ZXJzaW9ucyBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEJJTkQgbGlicmFyaWVzLCBhbGxvd2luZyBleHRlcm5hbCBjbGllbnRzIHRvIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgbGlicmFyaWVzIGFzIEJJTkQuIFtSVCAjMzMxMzFdCi0uLi4KLShnaXQgc2hvdyBiOTliZmExODRiYzkzNzU0MjFiNWRmOTE1ZWVhN2RmYWM2YTY4YTk5IC0tIC4vbGliL2lzYy91bml4L2FwcC5jKQotCi1JbiB0aGlzIGNvbW1pdCwgaWYgYmluZDkgZW5hYmxlIHRocmVhZHMoSVNDX1BMQVRGT1JNX1VTRVRIUkVBRFMpLAotaXQgYmxvY2tzIHNpZ25hbCBTSUdIVVAsIFNJR0lOVCBhbmQgU0lHVEVSTSBpbiBpc2NfX2FwcF9jdHhzdGFydC4KLVdoaWNoIGNhdXNlZCBkaGNsaWVudC9kaGNwZCBjb3VsZCBub3QgYmUgc3RvcHBlZCBieSBTSUdURVJNLgotCi1JdCBjYXVzZWQgc3lzdGVtZCdzIHJlYm9vdCBodW5nIHdoaWNoIHNlbmQgU0lHVEVSTSBieSBkZWZhdWx0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZS5pc2Mub3JnL2dpdC9kaGNwLmdpdF0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIG9tYXBpcC9pc2NsaWIuYyB8IDI1ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9vbWFwaXAvaXNjbGliLmMgYi9vbWFwaXAvaXNjbGliLmMKLWluZGV4IGNlODY0OTAuLjZhMDQzNDUgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvaXNjbGliLmMKLSsrKyBiL29tYXBpcC9pc2NsaWIuYwotQEAgLTE4NSwxNiArMTg1LDYgQEAgZGhjcF9jb250ZXh0X2NyZWF0ZShpbnQgZmxhZ3MsCi0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0gCQkJZ290byBjbGVhbnVwOwotIAotLQkJcmVzdWx0ID0gaXNjX2FwcF9jdHhzdGFydChkaGNwX2dibF9jdHguYWN0eCk7Ci0tCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0tCQkJcmV0dXJuIChyZXN1bHQpOwotLQkJZGhjcF9nYmxfY3R4LmFjdHhfc3RhcnRlZCA9IElTQ19UUlVFOwotLQotLQkJLyogTm90IGFsbCBPU3Mgc3VwcG9ydCBzdXBwcmVzc2luZyBTSUdQSVBFIHRocm91Z2ggc29ja2V0Ci0tCQkgKiBvcHRpb25zLCBzbyBzZXQgdGhlIHNpZ2FsIGFjdGlvbiB0byBiZSBpZ25vcmUuICBUaGlzIGFsbG93cwotLQkJICogYnJva2VuIGNvbm5lY3Rpb25zIHRvIGZhaWwgZ3JhY2VmdWxseSB3aXRoIEVQSVBFIG9uIHdyaXRlcyAqLwotLQkJaGFuZGxlX3NpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKLS0KLSAJCXJlc3VsdCA9IGlzY190YXNrbWdyX2NyZWF0ZWluY3R4KGRoY3BfZ2JsX2N0eC5tY3R4LAotIAkJCQkJCSBkaGNwX2dibF9jdHguYWN0eCwKLSAJCQkJCQkgMSwgMCwKLUBAIC0yMTcsNiArMjA3LDIxIEBAIGRoY3BfY29udGV4dF9jcmVhdGUoaW50IGZsYWdzLAotIAkJcmVzdWx0ID0gaXNjX3Rhc2tfY3JlYXRlKGRoY3BfZ2JsX2N0eC50YXNrbWdyLCAwLCAmZGhjcF9nYmxfY3R4LnRhc2spOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCWdvdG8gY2xlYW51cDsKLSsKLSsJCXJlc3VsdCA9IGlzY19hcHBfY3R4c3RhcnQoZGhjcF9nYmxfY3R4LmFjdHgpOwotKwkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotKwkJCXJldHVybiAocmVzdWx0KTsKLSsJCWRoY3BfZ2JsX2N0eC5hY3R4X3N0YXJ0ZWQgPSBJU0NfVFJVRTsKLSsKLSsJCS8qIE5vdCBhbGwgT1NzIHN1cHBvcnQgc3VwcHJlc3NpbmcgU0lHUElQRSB0aHJvdWdoIHNvY2tldAotKwkJICogb3B0aW9ucywgc28gc2V0IHRoZSBzaWdhbCBhY3Rpb24gdG8gYmUgaWdub3JlLiAgVGhpcyBhbGxvd3MKLSsJCSAqIGJyb2tlbiBjb25uZWN0aW9ucyB0byBmYWlsIGdyYWNlZnVsbHkgd2l0aCBFUElQRSBvbiB3cml0ZXMgKi8KLSsJCWhhbmRsZV9zaWduYWwoU0lHUElQRSwgU0lHX0lHTik7Ci0rCi0rCQkvKiBSZXNldCBoYW5kbGVycyBpbnN0YWxsZWQgYnkgaXNjX2FwcF9jdHhzdGFydCgpCi0rCQkgKiB0byBkZWZhdWx0IGZvciBjb250cm9sLWMgYW5kIGtpbGwgKi8KLSsJCWhhbmRsZV9zaWduYWwoU0lHSU5ULCBTSUdfREZMKTsKLSsJCWhhbmRsZV9zaWduYWwoU0lHVEVSTSwgU0lHX0RGTCk7Ci0gCX0KLSAKLSAjaWYgZGVmaW5lZCAoTlNVUERBVEUpCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaAppbmRleCAyZDNhZjlkLi4zOWJhNjVmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaApAQCAtMTksMTEgKzE5LDExIEBACiAgY29uZmlndXJlLmFjIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiZmU5ODhhLi5mMDQ1OWU2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDgsNyArNjA4LDcgQEAgQUNfQVJHX1dJVEgobGlieG1sMiwKK0luZGV4OiBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGRoY3AtNC40LjEub3JpZy9jb25maWd1cmUuYWMKKysrKyBkaGNwLTQuNC4xL2NvbmZpZ3VyZS5hYworQEAgLTY0Nyw3ICs2NDcsNyBAQCBBQ19BUkdfV0lUSChsaWJ4bWwyLAogIAl3aXRoX2xpYnhtbDI9IiR3aXRodmFsIiwgd2l0aF9saWJ4bWwyPSJubyIpCiAgCiAgaWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4bm87IHRoZW4KQEAgLTMyLDYgKzMyLDMgQEAKICAJCVtpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhhdXRvOyB0aGVuCiAgCQkJQUNfTVNHX0ZBSUxVUkUoWyoqKiBDYW5ub3QgZmluZCB4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50IHdpdGggLWx4bWwyIGFuZCBsaWJ4bWwyIHdhcyByZXF1ZXN0ZWRdKQogIAkJZmldKQotLS0gCi0yLjExLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDEzLWZpeHVwX3VzZV9saWJiaW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZWMwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTMtZml4dXBfdXNlX2xpYmJpbmQucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorbGliIGFuZCBpbmNsdWRlIHBhdGggaXMgaGFyZGNvZGVkIGZvciB1c2VfbGliYmluZCAKKwordXNlIGxpYmRpciBhbmQgaW5jbHVkZWRpciB2YXJzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KKworSW5kZXg6IGRoY3AtNC40LjEvY29uZmlndXJlLmFjK2x0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZGhjcC00LjQuMS5vcmlnL2NvbmZpZ3VyZS5hYytsdAorKysrIGRoY3AtNC40LjEvY29uZmlndXJlLmFjK2x0CitAQCAtODAxLDIyICs4MDEsMjIgQEAgbm8pCisgCWlmIHRlc3QgISAtZCAiJHVzZV9saWJiaW5kIjsgdGhlbgorIAkJQUNfTVNHX0VSUk9SKFtDYW5ub3QgZmluZCBiaW5kIGRpcmVjdG9yeSBhdCAkdXNlX2xpYmJpbmRdKQorIAlmaQorLQlpZiB0ZXN0ICEgLWQgIiR1c2VfbGliYmluZC9pbmNsdWRlIiAtbyBcCistCSAgICAgICAgISAtZiAiJHVzZV9saWJiaW5kL2luY2x1ZGUvaXNjL2J1ZmZlci5oIgorKwlpZiB0ZXN0ICEgLWQgIiR1c2VfbGliYmluZC8kaW5jbHVkZWRpciIgLW8gXAorKwkgICAgICAgICEgLWYgIiR1c2VfbGliYmluZC8kaW5jbHVkZWRpci9pc2MvYnVmZmVyLmgiCisgCXRoZW4KKy0JCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgYmluZCBpbmNsdWRlcyBhdCAkdXNlX2xpYmJpbmQvaW5jbHVkZV0pCisrCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJpbmQgaW5jbHVkZXMgYXQgJHVzZV9saWJiaW5kLyRpbmNsdWRlZGlyXSkKKyAJZmkKKy0JaWYgdGVzdAkhIC1kICIkdXNlX2xpYmJpbmQvbGliIiAtbyBcCistCSAgICAgICAgXCggISAtZiAiJHVzZV9saWJiaW5kL2xpYi9saWJpc2MuYSIgLWEgXAorLQkJICAgISAtZgkiJHVzZV9saWJiaW5kL2xpYi9saWJpc2MubGEiIFwpCisrCWlmIHRlc3QJISAtZCAiJHVzZV9saWJiaW5kLyRsaWJkaXIiIC1vIFwKKysJICAgICAgICBcKCAhIC1mICIkdXNlX2xpYmJpbmQvJGxpYmRpci9saWJpc2MuYSIgLWEgXAorKwkJICAgISAtZgkiJHVzZV9saWJiaW5kLyRsaWJkaXIvbGliaXNjLmxhIiBcKQorIAl0aGVuCistCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJpbmQgbGlicmFyaWVzIGF0ICR1c2VfbGliYmluZC9saWJdKQorKwkJQUNfTVNHX0VSUk9SKFtDYW5ub3QgZmluZCBiaW5kIGxpYnJhcmllcyBhdCAkdXNlX2xpYmJpbmQvJGxpYmRpcl0pCisgCWZpCisgCUJJTkRESVI9IiR1c2VfbGliYmluZCIKKy0JQklORExJQklSU0RJUj0iJEJJTkRESVIvbGliIgorLQlCSU5ETElCRE5TRElSPSIkQklORERJUi9saWIiCistCUJJTkRMSUJJU0NDRkdESVI9IiRCSU5ERElSL2xpYiIKKy0JQklORExJQklTQ0RJUj0iJEJJTkRESVIvbGliIgkKKysJQklORExJQklSU0RJUj0iJEJJTkRESVIvJGxpYmRpciIKKysJQklORExJQkROU0RJUj0iJEJJTkRESVIvJGxpYmRpciIKKysJQklORExJQklTQ0NGR0RJUj0iJEJJTkRESVIvJGxpYmRpciIKKysJQklORExJQklTQ0RJUj0iJEJJTkRESVIvJGxpYmRpciIKKyAJRElTVENIRUNLX0xJQkJJTkRfQ09ORklHVVJFX0ZMQUc9Ii0td2l0aC1saWJiaW5kPSR1c2VfbGliYmluZCIKKyAJOzsKKyBlc2FjCitAQCAtODU2LDE0ICs4NTYsMTQgQEAgQUNfQVJHX0VOQUJMRShsaWJ0b29sLAorIAorIGlmIHRlc3QgIiR1c2VfbGliYmluZCIgIT0gIm5vIjsgdGhlbgorIAlpZiB0ZXN0ICIkd2FudF9saWJ0b29sIiA9ICJ5ZXMiIC1hIFwKKy0JICAgICAgICAhIC1mICIkdXNlX2xpYmJpbmQvbGliL2xpYmlzYy5sYSIKKysJICAgICAgICAhIC1mICIkdXNlX2xpYmJpbmQvJGxpYmRpci9saWJpc2MubGEiCisgCXRoZW4KKy0JCUFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgZHluYW1pYyBsaWJyYXJpZXMgYXQgJHVzZV9saWJiaW5kL2xpYl0pCisrCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGR5bmFtaWMgbGlicmFyaWVzIGF0ICR1c2VfbGliYmluZC8kbGliZGlyXSkKKyAJZmkKKyAJaWYgdGVzdCAiJHdhbnRfbGlidG9vbCIgPSAibm8iIC1hIFwKKy0JICAgICAgICAhIC1mICIkdXNlX2xpYmJpbmQvbGliL2xpYmlzYy5hIgorKwkgICAgICAgICEgLWYgIiR1c2VfbGliYmluZC8kbGliZGlyL2xpYmlzYy5hIgorIAl0aGVuCistCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIHN0YXRpYyBsaWJyYXJpZXMgYXQgJHVzZV9saWJiaW5kL2xpYl0pCisrCQlBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIHN0YXRpYyBsaWJyYXJpZXMgYXQgJHVzZV9saWJiaW5kLyRsaWJkaXJdKQorIAlmaQorIGZpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL0NWRS0yMDE3LTMxNDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL0NWRS0yMDE3LTMxNDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMjY4OGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9DVkUtMjAxNy0zMTQ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA4Y2ZkZWRlZTM2OWMyNmQyODY5YjZlYzRhNjQ0NjBiNWY1YTMwOTM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIE1hcmt3YWxkZXIgPHRtYXJrQGlzYy5vcmc+Ci1EYXRlOiBUaHUsIDcgRGVjIDIwMTcgMTE6Mzk6MzAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gW3Y0XzNdIFBsdWdzIGEgc29ja2V0IGRlc2NyaXB0b3IgbGVhayBpbiBPTUFQSQotCi0gICAgICAgIE1lcmdlcyBpbiBydDQ2NzY3LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1kaGNwLmdpdDthPWNvbW1pdGRpZmY7aD01MDk3YmMwNTU5ZjU5MjY4M2ZhYWMxZjY3YmYzNTBlMWJkZGY2ZWQ0XQotCi1DVkU6IENWRS0yMDE3LTMxNDQKLQotU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotIFJFTE5PVEVTICAgICAgICAgfCA3ICsrKysrKysKLSBvbWFwaXAvYnVmZmVyLmMgIHwgOSArKysrKysrKysKLSBvbWFwaXAvbWVzc2FnZS5jIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvUkVMTk9URVMgYi9SRUxOT1RFUwotaW5kZXggZGQ0MGFhZi4uMzc0MWI4MCAxMDA2NDQKLS0tLSBhL1JFTE5PVEVTCi0rKysgYi9SRUxOT1RFUwotQEAgLTY2LDYgKzY2LDEzIEBAIFdlIHdlbGNvbWUgY29tbWVudHMgZnJvbSBESENQIHVzZXJzLCBhYm91dCB0aGlzIG9yIGFueXRoaW5nIGVsc2Ugd2UgZG8uCi0gRW1haWwgVmlja3kgUmlzaywgUHJvZHVjdCBNYW5hZ2VyIGF0IHZpY2t5QGlzYy5vcmcgb3IgZGlzY3VzcyBvbiAKLSBkaGNwLXVzZXJzQGxpc3RzLmlzYy5vcmcuCi0gCi0rLSBQbHVnZ2VkIGEgc29ja2V0IGRlc2NyaXB0b3IgbGVhayBpbiBPTUFQSSwgdGhhdCBjYW4gb2NjdXIgd2hlbiB0aGVyZSBpcwotKyAgZGF0YSBwZW5kaW5nIHRvIGJlIHdyaXR0ZW4gdG8gYW4gT01BUEkgY29ubmVjdGlvbiwgd2hlbiB0aGUgY29ubmVjdGlvbgotKyAgaXMgY2xvc2VkIGJ5IHRoZSByZWFkZXIuICBUaGFua3MgdG8gUGF2ZWwgWmh1a292IGF0IFJlZEhhdCBmb3IgYnJpbmdpbmcKLSsgIHRoaXMgaXNzdWUgdG8gb3VyIGF0dGVudGlvbiBhbmQgd2hvc2UgcGF0Y2ggaGVscGVkIGd1aWRlIHVzIGluIHRoZSByaWdodAotKyAgZGlyZWN0aW9uLgotKyAgW0lTYy1CdWdzICM0Njc2N10KLSsKLSAJCQlDaGFuZ2VzIHNpbmNlIDQuMy42YjEKLSAKLSAtIE5vbmUKLWRpZmYgLS1naXQgYS9vbWFwaXAvYnVmZmVyLmMgYi9vbWFwaXAvYnVmZmVyLmMKLWluZGV4IGY3ZmRjMzIuLjgwOTAzNGQgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvYnVmZmVyLmMKLSsrKyBiL29tYXBpcC9idWZmZXIuYwotQEAgLTU2Niw2ICs1NjYsMTUgQEAgaXNjX3Jlc3VsdF90IG9tYXBpX2Nvbm5lY3Rpb25fd3JpdGVyIChvbWFwaV9vYmplY3RfdCAqaCkKLSAJCQlvbWFwaV9idWZmZXJfZGVyZWZlcmVuY2UgKCZidWZmZXIsIE1ETCk7Ci0gCQl9Ci0gCX0KLSsKLSsJLyogSWYgd2UgaGFkIGRhdGEgbGVmdCB0byB3cml0ZSB3aGVuIHdlJ3JlIHRvbGQgdG8gZGlzY29ubmVjdCwKLSsJKiB3ZSBuZWVkIHJlY2FsbCBkaXNjb25uZWN0LCBub3cgdGhhdCB3ZSdyZSBkb25lIHdyaXRpbmcuCi0rCSogU2VlIHJ0NDY3NjcuICovCi0rCWlmIChjLT5vdXRfYnl0ZXMgPT0gMCAmJiBjLT5zdGF0ZSA9PSBvbWFwaV9jb25uZWN0aW9uX2Rpc2Nvbm5lY3RpbmcpIHsKLSsJCW9tYXBpX2Rpc2Nvbm5lY3QgKGgsIDEpOwotKwkJcmV0dXJuIElTQ19SX1NIVVRUSU5HRE9XTjsKLSsJfQotKwotIAlyZXR1cm4gSVNDX1JfU1VDQ0VTUzsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvb21hcGlwL21lc3NhZ2UuYyBiL29tYXBpcC9tZXNzYWdlLmMKLWluZGV4IDU5Y2NkYzIuLjIxYmNmYzMgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvbWVzc2FnZS5jCi0rKysgYi9vbWFwaXAvbWVzc2FnZS5jCi1AQCAtMzM5LDcgKzMzOSw3IEBAIGlzY19yZXN1bHRfdCBvbWFwaV9tZXNzYWdlX3VucmVnaXN0ZXIgKG9tYXBpX29iamVjdF90ICptbykKLSB9Ci0gCi0gI2lmZGVmIERFQlVHX1BST1RPQ09MCi0tc3RhdGljIGNvbnN0IGNoYXIgKm9tYXBpX21lc3NhZ2Vfb3BfbmFtZShpbnQgb3ApIHsKLStjb25zdCBjaGFyICpvbWFwaV9tZXNzYWdlX29wX25hbWUoaW50IG9wKSB7Ci0gCXN3aXRjaCAob3ApIHsKLSAJY2FzZSBPTUFQSV9PUF9PUEVOOiAgICByZXR1cm4gIk9NQVBJX09QX09QRU4iOwotIAljYXNlIE9NQVBJX09QX1JFRlJFU0g6IHJldHVybiAiT01BUElfT1BfUkVGUkVTSCI7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuMy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjMwNTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1yZXF1aXJlIGRoY3AuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOS1yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWRoY3AtY29ycmVjdC10aGUtaW50ZW50aW9uLWZvci14bWwyLWxpYi1zZWFyY2gucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTMxNDQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLSMgdXNlIGludGVybmFsIGxpYmlzYyBsaWJyYXJpZXMgd2hpY2ggYXJlIGJhc2VkIG9uIGJpbmQgOS45LjExIC0gdGhlcmUKLSMgaXMgYSBidWcgaW4gYmluZCA5LjEwLnggKG5vcm1hbGx5IHN1cHBsaWVkIGJ5IE9FKSB0aGF0IHByZXZlbnRzCi0jIGRoY3BkL2RoY2xpZW50IGZyb20gc2h1dHRpbmcgZG93biBjbGVhbmx5IG9uIHNpZ3Rlcm0gYW5kIGZyb20gcnVubmluZwotIyBpbiB0aGUgYmFja2dyb3VuZAotIwotIyBbaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0NF0KLSMKLSMgcmVtb3ZlICJleHQtYmluZCIgYW5kCi0jIGFsc28gc2V0IFBBUkFMTEVMX01BS0UgPSAiIiAKLSMgWyBZb2N0byAxMjc0NCBdCi0jCi1TUkNfVVJJICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdleHQtYmluZCcsICdmaWxlOi8vMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gnLCAnJywgZCl9IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWZhNmU5YjNlYjc1MzllYTA0ODQyMWE4MmM2NjhhZGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQxZWFmNjM2NGYxMzc3ZmUwNjVkMzU2NzFkOWNmODJiYmJjOGYyMTIwNzgxOWIyYjlmMzNmNjUyYWVjNmYxYiIKLQotUEFDS0FHRUNPTkZJRyA/PSAiZXh0LWJpbmQiCi1QQUNLQUdFQ09ORklHW2JpbmQtaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tleHQtYmluZF0gPSAiLS13aXRoLWxpYmJpbmQ9JHtTVEFHSU5HX0xJQkRJUn0sIC0td2l0aG91dC1saWJiaW5kLCBiaW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTU5YWJiYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjEuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBkaGNwLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMy1maXh1cF91c2VfbGliYmluZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOGM3ZjRkY2JiMGE2M2RmMjUwOTgyMTZkNDdiMWVkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTIyNTA4OTIyYWIzNjdiNGFmNDY2NGEwNDcyZGMyMjBjYzk2MDM0ODJjZjNjMTZkOWFmZjE0ZjNhNzZiNjA4IgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNwZDYuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY3BkNi5zZXJ2aWNlCmluZGV4IGNhOTZhYmIuLjUyYTYyMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY3BkNi5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2ZpbGVzL2RoY3BkNi5zZXJ2aWNlCkBAIC05LDcgKzksNyBAQAogRW52aXJvbm1lbnRGaWxlPUBTWVNDT05GRElSQC9kZWZhdWx0L2RoY3Atc2VydmVyCiBFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9zeXNjb25maWcvZGhjcGQ2CiBFeGVjU3RhcnRQcmU9QGJhc2VfYmluZGlyQC90b3VjaCBAbG9jYWxzdGF0ZWRpckAvbGliL2RoY3AvZGhjcGQ2LmxlYXNlcwotRXhlY1N0YXJ0PUBTQklORElSQC9kaGNwZCAtZiAtNiAtY2YgQFNZU0NPTkZESVJAL2RoY3AvZGhjcGQuY29uZiAtcGYgQGxvY2Fsc3RhdGVkaXJAL3J1bi9kaGNwZDYucGlkICRESENQREFSR1MgLXEgJElOVEVSRkFDRVMKK0V4ZWNTdGFydD1AU0JJTkRJUkAvZGhjcGQgLWYgLTYgLWNmIEBTWVNDT05GRElSQC9kaGNwL2RoY3BkNi5jb25mIC1wZiBAbG9jYWxzdGF0ZWRpckAvcnVuL2RoY3BkNi5waWQgJERIQ1BEQVJHUyAtcSAkSU5URVJGQUNFUwogCiBbSW5zdGFsbF0KIFdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwppbmRleCA0ZmJmZWM2Li5iMjgzNTg5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKQEAgLTksNyArOSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcC9pcC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9ODttZDU9Njg5ZDY5MWQwNDEwYTRiNjRkMzg5OWY4ZDZlMzE4MTciCiAKLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIGlwdGFibGVzIGVsZnV0aWxzIgorREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgaXB0YWJsZXMgZWxmdXRpbHMgbGliY2FwIgogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZDNmZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBpcHJvdXRlMjogZGUtYmFzaCBzY3JpcHRzCi0KLWRlLWJhc2ggdGhlc2UgdHdvIHNjcmlwdHMgdG8gbWFrZSBpcHJvdXRlMiBub3QgZGVwZW5kIG9uIGJhc2guCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBpcC9pZmNmZyB8IDE1ICsrKysrKysrLS0tLS0tLQotIGlwL3J0cHIgIHwgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2lwL2lmY2ZnIGIvaXAvaWZjZmcKLWluZGV4IDMwYTJkYzQuLjg2NzdiMmUgMTAwNjQ0Ci0tLS0gYS9pcC9pZmNmZwotKysrIGIvaXAvaWZjZmcKLUBAIC0xLDEyICsxLDEzIEBACi0tIyEgL2Jpbi9iYXNoCi0rIyEgL2Jpbi9zaAotIAotIENoZWNrRm9yd2FyZGluZyAoKSB7Ci0tICBsb2NhbCBzYmFzZSBmd2QKLSsgIGxvY2FsIHNiYXNlIGZ3ZCBmb3J3YXJkaW5nCi0gICBzYmFzZT0vcHJvYy9zeXMvbmV0L2lwdjQvY29uZgotICAgZndkPTAKLSAgIGlmIFsgLWQgJHNiYXNlIF07IHRoZW4KLSAgICAgZm9yIGRpciBpbiAkc2Jhc2UvKi9mb3J3YXJkaW5nOyBkbwotLSAgICAgIGZ3ZD0kWyRmd2QgKyBgY2F0ICRkaXJgXQotKyAgICAgIGZvcndhcmRpbmc9YGNhdCAkZGlyYAotKyAgICAgIGZ3ZD0kKCgkZndkKyRmb3J3YXJkaW5nKSkKLSAgICAgZG9uZQotICAgZWxzZQotICAgICBmd2Q9MgotQEAgLTEyNywxMiArMTI4LDEyIEBAIGZpCi0gYXJwaW5nIC1xIC1BIC1jIDEgLUkgJGRldiAkaXBhZGRyCi0gbm9hcnA9JD8KLSAoIHNsZWVwIDIgOwotLSAgYXJwaW5nIC1xIC1VIC1jIDEgLUkgJGRldiAkaXBhZGRyICkgPiYgL2Rldi9udWxsIDwvZGV2L251bGwgJgotKyAgYXJwaW5nIC1xIC1VIC1jIDEgLUkgJGRldiAkaXBhZGRyICkgPiAvZGV2L251bGwgMj4mMSA8L2Rldi9udWxsICYKLSAKLS1pcCByb3V0ZSBhZGQgdW5yZWFjaGFibGUgMjI0LjAuMC4wLzI0ID4mIC9kZXYvbnVsbAotLWlwIHJvdXRlIGFkZCB1bnJlYWNoYWJsZSAyNTUuMjU1LjI1NS4yNTUgPiYgL2Rldi9udWxsCi0raXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDIyNC4wLjAuMC8yNCA+IC9kZXYvbnVsbCAyPiYxCi0raXAgcm91dGUgYWRkIHVucmVhY2hhYmxlIDI1NS4yNTUuMjU1LjI1NSA+IC9kZXYvbnVsbCAyPiYxCi0gaWYgWyAiYGlwIGxpbmsgbHMgJGRldiB8IGdyZXAgLWMgTVVMVElDQVNUYCIgLWdlIDEgXTsgdGhlbgotLSAgaXAgcm91dGUgYWRkIDIyNC4wLjAuMC80IGRldiAkZGV2IHNjb3BlIGdsb2JhbCA+JiAvZGV2L251bGwKLSsgIGlwIHJvdXRlIGFkZCAyMjQuMC4wLjAvNCBkZXYgJGRldiBzY29wZSBnbG9iYWwgPiAvZGV2L251bGwgMj4mMQotIGZpCi0gCi0gaWYgWyAkZndkIC1lcSAwIF07IHRoZW4KLWRpZmYgLS1naXQgYS9pcC9ydHByIGIvaXAvcnRwcgotaW5kZXggYzM2MjlmZC4uNjc0MTk4ZCAxMDA2NDQKLS0tLSBhL2lwL3J0cHIKLSsrKyBiL2lwL3J0cHIKLUBAIC0xLDQgKzEsNCBAQAotLSMhIC9iaW4vYmFzaAotKyMhIC9iaW4vc2gKLSAKLSBleGVjIHRyICJbXFxcXF0iICJbCi0gXSIKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjE0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZTJlNGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgaXByb3V0ZTIuaW5jCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTA3NTQyM2Q3MDI5ZTAyYThmMjNlZDRmNDJiN2UzNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDQzYWMwNjhhZmNjMzUwYTQ0OGY0NTgxYjZlMjkyMzMxZWY3ZTRlN2FhNzQ2ZTM0OTgxNTgyZDVmZGIxMDA2NyIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWVkMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTguMC5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhiODY4MGU5MTM5MGM1N2NhYjc4OGZiZjhlOTI5NDc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5ZTZjNzBjOTVmNTEzODcxYzVlMWY0ZTQ1MmMwNGZjYjNjNGQ4YTA1YmU2NTFiZDc5NGNkOTk0YTUyZGFhNDUiCisKKyMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUworIworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYgppbmRleCA4ZDJmZWVjLi5kMGViMjc2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYgpAQCAtMTcsNiArMTcsOCBAQAogCiBTID0gIiR7V09SS0RJUn0vbnNzLW1kbnMtJHtQVn0iCiAKK2xvY2Fsc3RhdGVkaXIgPSAiLyIKKwogaW5oZXJpdCBhdXRvdG9vbHMKIAogRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tZGlzYWJsZS1seW54IC0tZW5hYmxlLWF2YWhpIgpAQCAtMjgsMTMgKzMwLDE2IEBACiBSREVQRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCiAKIHBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG1kbnM0X21pbmltYWwgW05PVEZPVU5EPXJldHVybl1cM1w0IG1kbnNcNS8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKKwlzZWQgJworCQkvXmhvc3RzOi8gIWIKKwkJL1w8bWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXClcP1w+LyBiCisJCXMvXChbWzpibGFuazpdXVwrXClkbnNcPi9cMW1kbnM0X21pbmltYWwgW05PVEZPVU5EPXJldHVybl0gZG5zL2cKKwkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgogfQogCiBwa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG1kbnNcPi8vJyBcCi0JCS1lICcvXmhvc3RzOi9zL1xzKm1kbnM0X21pbmltYWxcc1wrXFtOT1RGT1VORD1yZXR1cm5cXS8vJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCisJc2VkICcKKwkJL15ob3N0czovICFiCisJCXMvW1s6Ymxhbms6XV1cK21kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwoIFxbTk9URk9VTkQ9cmV0dXJuXF1cKVw/XClcPy8vZworCQknIC1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tdWx0aWxpYmZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL211bHRpbGliZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlOTdlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tdWx0aWxpYmZpeC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGUgbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLnBjIGZpbGUgaXMgaW5zdGFsbGVkIGludG8gYSBub24tYXJjaCBkaXJlY3RvcnkKK3lldCBjb250YWlucyBsaWJkaXIgd2hpY2ggY2FuIHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoIG11bHRpbGliIGlzIGNvbmZpZ3VyZWQuCitUaGUgLnBjIGZpbGUgZG9lcyBub3QgcmVxdWlyZSBsaWJkaXIgc28gcmVtb3ZlIHRoaXMgdG8gZml4IG11bHRpbGliIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbODEwOWZjZDNjNzI5OWZhZTg1OWZiODkxZmY0MTY5Mjc1ODFhOTk1NV0KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBnaXQvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLnBjLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLnBjLmluCTIwMTgtMDgtMDcgMTM6MDk6MzEuODExMzY0MDYzICswODAwCisrKysgZ2l0L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby5wYy5pbgkyMDE4LTA4LTEwIDE3OjQ5OjI1LjY0NTI4ODMyMCArMDgwMAorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorIHBrZ2RhdGFkaXI9JHtkYXRhcm9vdGRpcn0vQFBBQ0tBR0VACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYgppbmRleCA1N2Y1MjFhLi43ZjFkZDc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvL21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mb19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCkBAIC03LDggKzcsOSBAQAogUFYgPSAiMjAxNzAzMTAiCiBQRSA9ICIxIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvO3Byb3RvY29sPWh0dHBzIgotCitTUkNfVVJJID0gImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9tdWx0aWxpYmZpeC5wYXRjaCBcCisiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9saWJuZnNpZG1hcC8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWdldHRpbmctdV8tdHlwZWRlZnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZ2V0dGluZy11Xy10eXBlZGVmcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjNTI5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZ2V0dGluZy11Xy10eXBlZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gYTVlOTVhNDJlN2JjZWRkYzllY2FkMDY2OTRjMWEwNTg4ZjRiYWZjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE0IEFwciAyMDE1IDA3OjIyOjQ3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIGdldHRpbmcgdV8qIHR5cGVkZWZzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY2ZnLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2NmZy5oIGIvY2ZnLmgKLWluZGV4IGQ0ZDRjYWIuLmZlNDllOGYgMTAwNjQ0Ci0tLS0gYS9jZmcuaAotKysrIGIvY2ZnLmgKLUBAIC0zMyw2ICszMyw3IEBACi0gI2lmbmRlZiBfQ09ORl9IXwotICNkZWZpbmUgX0NPTkZfSF8KLSAKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgInF1ZXVlLmgiCi0gCi0gc3RydWN0IGNvbmZfbGlzdF9ub2RlIHsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9saWJuZnNpZG1hcC9TZXRfbm9ib2R5X3VzZXJfZ3JvdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwL1NldF9ub2JvZHlfdXNlcl9ncm91cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzM2RhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwL1NldF9ub2JvZHlfdXNlcl9ncm91cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNldCBub2JvZHkgdXNlciBhbmQgZ3JvdXAKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kuTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0gYS9pZG1hcGQuY29uZgotKysrIGIvaWRtYXBkLmNvbmYKLUBAIC0xNyw4ICsxNyw4IEBACi0gCi0gW01hcHBpbmddCi0gCi0tI05vYm9keS1Vc2VyID0gbm9ib2R5Ci0tI05vYm9keS1Hcm91cCA9IG5vYm9keQotK05vYm9keS1Vc2VyID0gbm9ib2R5Ci0rTm9ib2R5LUdyb3VwID0gbm9ncm91cAotIAotIFtUcmFuc2xhdGlvbl0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvZml4LWFjLXByZXJlcS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbGlibmZzaWRtYXAvZml4LWFjLXByZXJlcS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgxYzdjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwL2ZpeC1hYy1wcmVyZXEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLS0tLSBhL2NvbmZpZ3VyZS5pbgotKysrIGIvY29uZmlndXJlLmluCi1AQCAtMSw3ICsxLDcgQEAKLSAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCi0gIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgotIAotLUFDX1BSRVJFUShbMi42OF0pCi0rQUNfUFJFUkVRKFsyLjY1XSkKLSBBQ19JTklUKFtsaWJuZnNpZG1hcF0sWzAuMjVdLFtsaW51eC1uZnNAdmdlci5rZXJuZWwub3JnXSkKLSBBQ19DT05GSUdfU1JDRElSKFtuZnNpZG1hcC5oXSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwXzAuMjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2xpYm5mc2lkbWFwXzAuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NjU3NzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9saWJuZnNpZG1hcF8wLjI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJORlMgaWQgbWFwcGluZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaXRpLnVtaWNoLmVkdS9wcm9qZWN0cy9uZnN2NC9saW51eC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDljNmEyYTBjYTYwMTdmZGE3Y2Q5MDVlZDI3MzliMzciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5jaXRpLnVtaWNoLmVkdS9wcm9qZWN0cy9uZnN2NC9saW51eC9saWJuZnNpZG1hcC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1hYy1wcmVyZXEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vU2V0X25vYm9keV91c2VyX2dyb3VwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItZ2V0dGluZy11Xy10eXBlZGVmcy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmFjNDg5M2M5MjcxNmFkZDFhMTQ0N2FlMDFkZjc3YWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjU2ZDI0NWQ4NDQwMGUxMDMwZjhmNDBhNWEyN2RhNzYzNzA2OTBjNGE5MzJiYWYyNDkxMTBmMDQ3ZmU3ZWZjZiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuY2l0aS51bWljaC5lZHUvcHJvamVjdHMvbmZzdjQvbGludXgvbGlibmZzaWRtYXAvIgotCi1pbmhlcml0IGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfS0ke1BWfS9pZG1hcGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9pZG1hcGQuY29uZgotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjU1OGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUtQWxsb3ctdG8tZXhwbGljaXRseS1kaXNhYmxlLW5mc2lkbWFwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA5Yjg0Y2ZmMzA1ODY2YWJkMTUwY2YxYTRjNmU3ZTVlYmY4YTdlYjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNSBOb3YgMjAxMyAyMzoyMTozNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFsbG93IHRvIGV4cGxpY2l0bHkgZGlzYWJsZSBuZnNpZG1hcAotCi0qIGtleXV0aWxzIGF2YWlsYWJpbGl0eSBpcyBhdXRvZGV0ZWN0ZWQgYW5kIGJ1aWxkcyBhcmVuJ3QgcmVwcm9kdWNpYmxlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogbmZzLXV0aWxzLTIuMS4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIG5mcy11dGlscy0yLjEuMS9jb25maWd1cmUuYWMKLUBAIC05Miw2ICs5MiwxMiBAQCBBQ19BUkdfRU5BQkxFKG5mc3Y0LAotIAlBQ19TVUJTVChlbmFibGVfbmZzdjQpCi0gCUFNX0NPTkRJVElPTkFMKENPTkZJR19ORlNWNCwgW3Rlc3QgIiRlbmFibGVfbmZzdjQiID0gInllcyJdKQotIAotK0FDX0FSR19FTkFCTEUobmZzaWRtYXAsCi0rICAgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW5mc2lkbWFwXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIHN1cHBvcnQgZm9yIE5GU3Y0IGlkbWFwcGVyIEA8OkBkZWZhdWx0PXllc0A6PkBdKV0sCi0rICAgICAgICBlbmFibGVfbmZzaWRtYXA9JGVuYWJsZXZhbCwKLSsgICAgICAgIGVuYWJsZV9uZnNpZG1hcD15ZXMpCi0rCi0gQUNfQVJHX0VOQUJMRShuZnN2NDEsCi0gCVtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLW5mc3Y0MV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGUgc3VwcG9ydCBmb3IgTkZTdjQxIEA8OkBkZWZhdWx0PW5vQDo+QF0pXSwKLUBAIC0zMzksNyArMzQ1LDcgQEAgZmkKLSAKLSBkbmwgZW5hYmxlIG5mc2lkbWFwIHdoZW4gaXRzIHN1cHBvcnQgYnkgbGlibmZzaWRtYXAKLSBBTV9DT05ESVRJT05BTChDT05GSUdfTkZTRENMVFJBQ0ssIFt0ZXN0ICIkZW5hYmxlX25mc2RjbHRyYWNrIiA9ICJ5ZXMiIF0pCi0tQU1fQ09ORElUSU9OQUwoQ09ORklHX05GU0lETUFQLCBbdGVzdCAiJGFjX2N2X2hlYWRlcl9rZXl1dGlsc19oJGFjX2N2X2xpYl9uZnNpZG1hcF9uZnM0X293bmVyX3RvX3VpZCIgPSAieWVzeWVzIl0pCi0rQU1fQ09ORElUSU9OQUwoQ09ORklHX05GU0lETUFQLCBbdGVzdCAiJGVuYWJsZV9uZnNpZG1hcCRhY19jdl9oZWFkZXJfa2V5dXRpbHNfaCRhY19jdl9saWJfbmZzaWRtYXBfbmZzNF9vd25lcl90b191aWQiID0gInllc3llc3llcyJdKQotIAotIAotIGlmIHRlc3QgIiRrbmZzZF9jdl9nbGliYzIiID0gbm87IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItVUlOVDE2X01BWC1kZWZpbml0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzNWEyYzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDM2YjQ4MDU3YmNlNzZkY2VkMzM1ZDY3YTI4OTRhNDIwOTY3ODExYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMCBNYXkgMjAxNyAxNDowNzo1MyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIHN0ZGludC5oIGZvciBVSU5UMTZfTUFYIGRlZmluaXRpb24KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzdXBwb3J0L25zbS9ycGMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uc20vcnBjLmMgYi9zdXBwb3J0L25zbS9ycGMuYwotaW5kZXggNGU1ZjQwZS4uZDkxYzZlYSAxMDA2NDQKLS0tLSBhL3N1cHBvcnQvbnNtL3JwYy5jCi0rKysgYi9zdXBwb3J0L25zbS9ycGMuYwotQEAgLTQwLDYgKzQwLDcgQEAKLSAKLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvZmlsZXMvYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhOGE1Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtMS4yLjMtc20tbm90aWZ5LXJlc19pbml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRml4ZXMgZXJyb3JzIGxpa2UKLXNtLW5vdGlmeVsxMDcwXTogRE5TIHJlc29sdXRpb24gb2YgYS5iLmMuZC4uY29tIGZhaWxlZDsgcmV0cnlpbmcgbGF0ZXIKLVRoaXMgZXJyb3Igd2lsbCBvY2N1ciBhbnl0aW1lIHNtLW5vdGlmeSBpcyBydW4gYmVmb3JlIHRoZSBuZXR3b3JrIGlmIGZ1bGx5IHVwLAotd2hpY2ggaXMgaGFwcGVuaW5nIG1vcmUgYW5kIG1vcmUgd2l0aCBwYXJhbGxlbCBzdGFydHVwIHN5c3RlbXMuCi1UaGUgcmVzX2luaXQoKSBjYWxsIGlzIHNpbXBsZSwgc2FmZSwgcXVpY2ssIGFuZCBhIHBhdGNoIHRvIHVzZSBpdCBzaG91bGQgYmUKLWFibGUgdG8gZ28gdXBzdHJlYW0uICBQcmVzdW1hYmx5IHRoZSB3aG9sZSByZWFzb24gc20tbm90aWZ5IHRyaWVzIHNldmVyYWwKLXRpbWVzIGlzIHRvIHdhaXQgZm9yIHBvc3NpYmxlIGNoYW5nZXMgdG8gdGhlIG5ldHdvcmsgY29uZmlndXJhdGlvbiwgYnV0IHdpdGhvdXQKLWNhbGxpbmcgcmVzX2luaXQoKSBpdCB3aWxsIG5ldmVyIGJlIGF3YXJlIG9mIHRob3NlIGNoYW5nZXMKLQotQmFja3BvcnRlZCBkcm9tIEZlZG9yYQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLQotSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zbS1ub3RpZnkuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCi0rKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3NtLW5vdGlmeS5jCi1AQCAtMjgsNiArMjgsOSBAQAotICNpbmNsdWRlIDxuZXRkYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxncnAuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KLSsjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0gCi0gI2luY2x1ZGUgImNvbmZmaWxlLmgiCi0gI2luY2x1ZGUgInNvY2thZGRyLmgiCi1AQCAtODksNiArOTIsNyBAQCBzbW5fbG9va3VwKGNvbnN0IGNoYXIgKm5hbWUpCi0gCX07Ci0gCWludCBlcnJvcjsKLSAKLSsJcmVzX2luaXQoKTsKLSAJZXJyb3IgPSBnZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFpKTsKLSAJaWYgKGVycm9yICE9IDApIHsKLSAJCXhsb2coRF9HRU5FUkFMLCAiZ2V0YWRkcmluZm8oMyk6ICVzIiwgZ2FpX3N0cmVycm9yKGVycm9yKSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtZGViaWFuaXplLXN0YXJ0LXN0YXRkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL2ZpbGVzL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLWxpbWl0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLWxpbWl0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWNhNDE1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtbGltaXRzLnBhdGNoCkBAIC0wLDAgKzEsMTMzIEBACitGaXhlZDoKK3wgZmlsZS5jOiBJbiBmdW5jdGlvbiAnZ2VuZXJpY19tYWtlX3BhdGhuYW1lJzoKK3wgZmlsZS5jOjQ4OjEzOiBlcnJvcjogJ1BBVEhfTUFYJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnUkFORF9NQVgnPworfCAgIGlmIChzaXplID4gUEFUSF9NQVgpCit8ICAgICAgICAgICAgICBefn5+fn5+fgorW3NuaXBdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2NnaXQvYXBvcnRzL3RyZWUvbWFpbi9uZnMtdXRpbHMvbGltaXRzLnBhdGNoP2lkPWY2NzM0YTc3ZDNjYWVlNzMzMjVmOGNjMWY3N2QxYjUxMTdhNzUwOTZdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMgICAgICAgICAgfCAxICsKKyBzdXBwb3J0L2V4cG9ydC94dGFiLmMgICAgICAgICAgICB8IDEgKworIHN1cHBvcnQvbWlzYy9maWxlLmMgICAgICAgICAgICAgIHwgMSArCisgc3VwcG9ydC9uZnMveGNvbW1vbi5jICAgICAgICAgICAgfCAxICsKKyBzdXBwb3J0L25zbS9maWxlLmMgICAgICAgICAgICAgICB8IDEgKworIHV0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jIHwgMSArCisgdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYyAgICAgICAgICAgfCAxICsKKyB1dGlscy9tb3VudGQvY2FjaGUuYyAgICAgICAgICAgICB8IDEgKworIHV0aWxzL21vdW50ZC9tb3VudGQuYyAgICAgICAgICAgIHwgMSArCisgdXRpbHMvbW91bnRkL3JtdGFiLmMgICAgICAgICAgICAgfCAxICsKKyAxMCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zdXBwb3J0L2V4cG9ydC9leHBvcnQuYyBiL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jCistLS0gYS9zdXBwb3J0L2V4cG9ydC9leHBvcnQuYworKysrIGIvc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMKK0BAIC0xNyw2ICsxNyw3IEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgInhtYWxsb2MuaCIKKyAjaW5jbHVkZSAibmZzbGliLmgiCisgI2luY2x1ZGUgImV4cG9ydGZzLmgiCitkaWZmIC0tZ2l0IGEvc3VwcG9ydC9leHBvcnQveHRhYi5jIGIvc3VwcG9ydC9leHBvcnQveHRhYi5jCistLS0gYS9zdXBwb3J0L2V4cG9ydC94dGFiLmMKKysrKyBiL3N1cHBvcnQvZXhwb3J0L3h0YWIuYworQEAgLTE4LDYgKzE4LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8bGliZ2VuLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJuZnNsaWIuaCIKKyAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKK2RpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvZmlsZS5jIGIvc3VwcG9ydC9taXNjL2ZpbGUuYworLS0tIGEvc3VwcG9ydC9taXNjL2ZpbGUuYworKysrIGIvc3VwcG9ydC9taXNjL2ZpbGUuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ4bG9nLmgiCisgI2luY2x1ZGUgIm1pc2MuaCIKK2RpZmYgLS1naXQgYS9zdXBwb3J0L25mcy94Y29tbW9uLmMgYi9zdXBwb3J0L25mcy94Y29tbW9uLmMKKy0tLSBhL3N1cHBvcnQvbmZzL3hjb21tb24uYworKysrIGIvc3VwcG9ydC9uZnMveGNvbW1vbi5jCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ4Y29tbW9uLmgiCisgI2luY2x1ZGUgIm5scy5oIgkvKiBfKCkgKi8KK2RpZmYgLS1naXQgYS9zdXBwb3J0L25zbS9maWxlLmMgYi9zdXBwb3J0L25zbS9maWxlLmMKKy0tLSBhL3N1cHBvcnQvbnNtL2ZpbGUuYworKysrIGIvc3VwcG9ydC9uc20vZmlsZS5jCitAQCAtODUsNiArODUsNyBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8Z3JwLmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJ4bG9nLmgiCisgI2luY2x1ZGUgIm5zbS5oIgorZGlmZiAtLWdpdCBhL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jIGIvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKKy0tLSBhL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCisrKysgYi91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYworQEAgLTQ5LDYgKzQ5LDcgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGxpYmdlbi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAjaW5jbHVkZSA8bGliZGV2bWFwcGVyLmg+CisgCisgI2lmZGVmIEhBVkVfQ09ORklHX0gKK2RpZmYgLS1naXQgYS91dGlscy9nc3NkL2tyYjVfdXRpbC5jIGIvdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYworLS0tIGEvdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYworKysrIGIvdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYworQEAgLTEyMCw2ICsxMjAsNyBAQAorICNlbmRpZgorICNpbmNsdWRlIDxrcmI1Lmg+CisgI2luY2x1ZGUgPHJwYy9hdXRoX2dzcy5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKyAjaW5jbHVkZSAiZ3NzZC5oIgorICNpbmNsdWRlICJlcnJfdXRpbC5oIgorZGlmZiAtLWdpdCBhL3V0aWxzL21vdW50ZC9jYWNoZS5jIGIvdXRpbHMvbW91bnRkL2NhY2hlLmMKKy0tLSBhL3V0aWxzL21vdW50ZC9jYWNoZS5jCisrKysgYi91dGlscy9tb3VudGQvY2FjaGUuYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSA8cHdkLmg+CisgI2luY2x1ZGUgPGdycC5oPgorICNpbmNsdWRlIDxtbnRlbnQuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgI2luY2x1ZGUgIm1pc2MuaCIKKyAjaW5jbHVkZSAibmZzbGliLmgiCisgI2luY2x1ZGUgImV4cG9ydGZzLmgiCitkaWZmIC0tZ2l0IGEvdXRpbHMvbW91bnRkL21vdW50ZC5jIGIvdXRpbHMvbW91bnRkL21vdW50ZC5jCistLS0gYS91dGlscy9tb3VudGQvbW91bnRkLmMKKysrKyBiL3V0aWxzL21vdW50ZC9tb3VudGQuYworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2luY2x1ZGUgPGxpbWl0cy5oPgorIAorICNpbmNsdWRlICJjb25mZmlsZS5oIgorICNpbmNsdWRlICJ4bWFsbG9jLmgiCitkaWZmIC0tZ2l0IGEvdXRpbHMvbW91bnRkL3JtdGFiLmMgYi91dGlscy9tb3VudGQvcm10YWIuYworLS0tIGEvdXRpbHMvbW91bnRkL3JtdGFiLmMKKysrKyBiL3V0aWxzL21vdW50ZC9ybXRhYi5jCitAQCAtMTYsNiArMTYsNyBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorICNpbmNsdWRlIDxuZXRkYi5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKyAjaW5jbHVkZSAibWlzYy5oIgorICNpbmNsdWRlICJleHBvcnRmcy5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExNjllNmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorRml4ZWQ6Citjb25maWd1cmU6IGVycm9yOiByZXNfcXVlcnlkb21haW4gbmVlZGVkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2NnaXQvYXBvcnRzL3RyZWUvbWFpbi9uZnMtdXRpbHMvbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2g/aWQ9ZjY3MzRhNzdkM2NhZWU3MzMyNWY4Y2MxZjc3ZDFiNTExN2E3NTA5Nl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDAxLDcgKzQwMSw3IEBAIGlmIHRlc3QgIiRlbmFibGVfZ3NzIiA9IHllczsgdGhlbgorIGZpCisgCisgZG5sIGxpYmRuc2lkbWFwIHNwZWNpZmljIGNoZWNrcworLUFDX0NIRUNLX0xJQihbcmVzb2x2XSwgW19fcmVzX3F1ZXJ5ZG9tYWluXSwgLCBBQ19NU0dfRVJST1IocmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZCkpCisrQUNfQ0hFQ0tfTElCKFtyZXNvbHZdLCBbcmVzX3F1ZXJ5ZG9tYWluXSwgLCBBQ19NU0dfRVJST1IocmVzX3F1ZXJ5ZG9tYWluIG5lZWRlZCkpCisgCisgQUNfQVJHX0VOQUJMRShbbGRhcF0sCisgCVtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxkYXBdLFtEaXNhYmxlIHN1cHBvcnQgZm9yIExEQVAgQDw6ZGVmYXVsdD1kZXRlY3RAOj5AXSldKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk0NTNhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi1TVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCi1ERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAotTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKLQotIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAotREVQRU5EUyA9ICJsaWJjYXAgbGlibmZzaWRtYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IGJhc2giCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCi0KLWluaGVyaXQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCi0JCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1Eby1ub3QtcGFzcy1DRkxBR1MtdG8tZ2NjLXdoaWxlLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTlkZmNiMmU2MjU0YjEyOWY5MDFmNDBjODYwODZiMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZhZWI1NGM3MGI4NGU2YmQzYjliNjkwMTU0NGIxZjZhZGQ4ZDI0NmYzNWMxNjgzZTQwMmRhZjRlMGM3MTllZiIKLQotIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAotIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1JTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgotCi0jIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAotICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0jIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQotUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlciIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNsaWVudCAke1BOfS1tb3VudCAke1BOfS1zdGF0cyIKLQotQ09ORkZJTEVTXyR7UE59LWNsaWVudCArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL2V0YWIgXAotCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3JtdGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy94dGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZSBcCi0JCQkgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYiCi0KLUZJTEVTXyR7UE59LWNsaWVudCA9ICIke3NiaW5kaXJ9LypzdGF0ZCBcCi0JCSAgICAgICR7c2JpbmRpcn0vcnBjLmlkbWFwZCAke3NiaW5kaXJ9L3NtLW5vdGlmeSBcCi0JCSAgICAgICR7c2JpbmRpcn0vc2hvd21vdW50ICR7c2JpbmRpcn0vbmZzc3RhdCBcCi0JCSAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcyBcCi0JCSAgICAgICR7c3lzY29uZmRpcn0vbmZzLXV0aWxzLmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mc21vdW50LmNvbmYgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24gXAotCQkgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25mcy1zdGF0ZC5zZXJ2aWNlIgotUkRFUEVORFNfJHtQTn0tY2xpZW50ID0gIiR7UE59LW1vdW50IHJwY2JpbmQiCi0KLUZJTEVTXyR7UE59LW1vdW50ID0gIiR7YmFzZV9zYmluZGlyfS8qbW91bnQubmZzKiIKLQotRklMRVNfJHtQTn0tc3RhdHMgPSAiJHtzYmluZGlyfS9tb3VudHN0YXRzICR7c2JpbmRpcn0vbmZzaW9zdGF0IgotUkRFUEVORFNfJHtQTn0tc3RhdHMgPSAicHl0aG9uMy1jb3JlIgotCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgICR7U30vdXRpbHMvbW91bnQvTWFrZWZpbGUuYW0KLQotICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAotICAgICAgICAgICAgJHtTfS91dGlscy9vc2RfbG9naW4vTWFrZWZpbGUuYW0KLX0KLQotIyBNYWtlIGNsZWFuIG5lZWRlZCBiZWNhdXNlIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGgKLSMgcHJlY29tcGlsZWQgNjQtYml0IG9iamVjdHMgdGhhdCBicmVhayB0aGUgYnVpbGQKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQltYWtlIGNsZWFuCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc3NlcnZlciAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzc2VydmVyCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzY29tbW9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNjb21tb24KLQotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mcy11dGlscy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U30vdXRpbHMvbW91bnQvbmZzbW91bnQuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zZXJ2ZXIuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtbW91bnRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXN0YXRkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQkgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy8KLQkgICAgbG4gLXNmIC4uL3Byb2MtZnMtbmZzZC5tb3VudCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9wcm9jLWZzLW5mc2QubW91bnQKLQlmaQotCi0JIyBrZXJuZWwgY29kZSBhcyBvZiAzLjggaGFyZC1jb2RlcyB0aGlzIHBhdGggYXMgYSBkZWZhdWx0Ci0JaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvbmZzL3Y0cmVjb3ZlcnkKLQotCSMgY2hvd24gdGhlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcwotCWNob3duIC1SIHJwY3VzZXI6cnBjdXNlciAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkCi0JY2htb2QgMDY0NCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlCi0KLQkjIHRoZSBmb2xsb3dpbmcgYXJlIGJ1aWx0IGJ5IENDX0ZPUl9CVUlMRAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2RlYnVnCi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZ2VuCi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vbG9ja3Rlc3QKLQotICAgICAgICAjIE1ha2UgcHl0aG9uIHRvb2xzIHVzZSBweXRob24gMwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vbW91bnRzdGF0cyAke0R9JHtzYmluZGlyfS9uZnNpb3N0YXQKLQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQ1MGM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4zLjEuYmIKQEAgLTAsMCArMSwxNTEgQEAKK1NVTU1BUlkgPSAidXNlcnNwYWNlIHV0aWxpdGllcyBmb3Iga2VybmVsIG5mcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBuZnMtdXRpbHMgcGFja2FnZSBwcm92aWRlcyBhIGRhZW1vbiBmb3IgdGhlIGtlcm5lbCBcCitORlMgc2VydmVyIGFuZCByZWxhdGVkIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9uZnMuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyKyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk1ZjNhOTNhNWMzYzc4ODhkZTYyM2I0NmVhMDg1YTg0IgorCisjIHV0aWwtbGludXggZm9yIGxpYmJsa2lkCitERVBFTkRTID0gImxpYmNhcCBsaWJldmVudCB1dGlsLWxpbnV4IHNxbGl0ZTMgbGlidGlycGMiCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1jbGllbnQgYmFzaCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtbmZzZCIKKworaW5oZXJpdCB1c2VyYWRkCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tY2xpZW50IgorVVNFUkFERF9QQVJBTV8ke1BOfS1jbGllbnQgPSAiLS1zeXN0ZW0gIC0taG9tZS1kaXIgL3Zhci9saWIvbmZzIFwKKwkJCSAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgcnBjdXNlciIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzL25mcy11dGlscy8ke1BWfS9uZnMtdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25mc3NlcnZlciBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNjb21tb24gXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXNlcnZlci5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1tb3VudGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtc3RhdGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLURvLW5vdC1wYXNzLUNGTEFHUy10by1nY2Mtd2hpbGUtYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNzdiMTgyYTllZTM5NmFhNjIyMWFjMjQwMWFkNzA0NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NmQwNmI1YTg2YjE4NTgxNTc2MGQ4ZjA0YzM0ZmRmYWNlOGZhOGI5OTQ5ZmYyNTZhYzA1YzNlYmMwODMzNWE1IgorCisjIE9ubHkga2VybmVsLW1vZHVsZS1uZnNkIGlzIHJlcXVpcmVkIGhlcmUgKGJ1dCBjYW4gYmUgYnVpbHQtaW4pICAtIHRoZSBuZnNkIG1vZHVsZSB3aWxsCisjIHB1bGwgaW4gdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVwZW5kZW5jaWVzLgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKK0lOSVRTQ1JJUFRfTkFNRSA9ICJuZnNzZXJ2ZXIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1jbGllbnQgPSAibmZzY29tbW9uIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tY2xpZW50ID0gImRlZmF1bHRzIDE5IDIxIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZCBwa2djb25maWcKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmZzLXNlcnZlci5zZXJ2aWNlIG5mcy1tb3VudGQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAibmZzLXN0YXRkLnNlcnZpY2UiCisKKyMgLS1lbmFibGUtdXVpZCBpcyBuZWVkIGZvciBjcm9zcy1jb21waWxpbmcKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3RhdGR1c2VyPXJwY3VzZXIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW1vdW50Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJtb3VudC1tb3VudCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdXVpZCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdzcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5mc2RjbHRyYWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3RhdGRwYXRoPS92YXIvbGliL25mcy9zdGF0ZCBcCisgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ0Y3Atd3JhcHBlcnMgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKyMgbGliZGV2bWFwcGVyIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCitQQUNLQUdFQ09ORklHW25mc3Y0MV0gPSAiLS1lbmFibGUtbmZzdjQxLC0tZGlzYWJsZS1uZnN2NDEsbGliZGV2bWFwcGVyIgorIyBrZXl1dGlscyBpcyBhdmFpbGFibGUgaW4gbWV0YS1zZWN1cml0eQorUEFDS0FHRUNPTkZJR1tuZnN2NF0gPSAiLS1lbmFibGUtbmZzdjQsLS1kaXNhYmxlLW5mc3Y0LGtleXV0aWxzIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgorCitDT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKKwkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKKworRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKKwkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKKwkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKKwkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCisJCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCitSREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKKworRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgorCitGSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCitSREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQorCisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL29zZF9sb2dpbi9NYWtlZmlsZS5hbQorfQorCisjIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aAorIyBwcmVjb21waWxlZCA2NC1iaXQgb2JqZWN0cyB0aGF0IGJyZWFrIHRoZSBidWlsZAorZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCW1ha2UgY2xlYW4KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgorCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLworCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAorCWZpCisKKwkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKKwlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQorCisJIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCisJY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKKwljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKKworCSMgdGhlIGZvbGxvd2luZyBhcmUgYnVpbHQgYnkgQ0NfRk9SX0JVSUxECisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vcnBjZGVidWcKKwlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNnZW4KKwlybSAtZiAke0R9JHtzYmluZGlyfS9sb2NrdGVzdAorCisgICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAorCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTdlYWE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TUkNfVVJJICA9ICJcCi0gICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgZmlsZTovL29mb25vIFwKLSAgZmlsZTovL3VzZS1weXRob24zLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYTY4M2FiOGU5ODQ0OGFkOGJjNWRjOTg2OGQyODkzZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTM0YTY2OTZjMzAwYzk4NDFiNTVlOGRmZjY0MGJkMzA5NmU0OWY1ZGJlNTViYmViYWE2OWE3MTY3NmY2ODdlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTdkOWVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjQuYmIKQEAgLTAsMCArMSw5IEBACityZXF1aXJlIG9mb25vLmluYworCitTUkNfVVJJICA9ICJcCisgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgZmlsZTovL29mb25vIFwKKyAgZmlsZTovL3VzZS1weXRob24zLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTI0ZTgwZjY1NTFmNDZmZWEwYzViNTg3OTk2NGQ2YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzhlMzUxYjc2NThmNGI0M2Y5YTQzODBiNzMxYzQ3ZDJkNzU0NGE4OTk4N2M0OGMzZjIyN2U3MzYzNmM4N2FlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9kaXNhYmxlLWNpcGhlcnMtbm90LXN1cHBvcnRlZC1ieS1PcGVuU1NMLURFUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZGlzYWJsZS1jaXBoZXJzLW5vdC1zdXBwb3J0ZWQtYnktT3BlblNTTC1ERVMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMmQxYTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9kaXNhYmxlLWNpcGhlcnMtbm90LXN1cHBvcnRlZC1ieS1PcGVuU1NMLURFUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMjY1ZWFhYjhiMzlkOGQ4NzIxMjI0YTQ4ZWVmZWQ1YmYxNjk2ZDM1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTggQXByIDIwMTggMjE6NTg6MzIgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGlzYWJsZSBjaXBoZXJzIG5vdCBzdXBwb3J0ZWQgYnkgT3BlblNTTCBERVMKLQotV2hpbGUgY29tcGlsaW5nIG9wZW5zc2wgd2l0aCBvcHRpb24gYG5vLWRlcycsIGl0IGNhdXNlZCB0aGUgb3BlbnNzaAotYnVpbGQgZmFpbHVyZQotLi4uCi1jaXBoZXIuYzo4NTo0MTogZXJyb3I6ICdFVlBfZGVzX2VkZTNfY2JjJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKTsKLS4uLgotCi1PcGVuU1NMIGNvbmZpZ3VyZWQgdGhhdCB3YXkgZGVmaW5lcyBPUEVOU1NMX05PX0RFUyB0byBkaXNhYmxlIGRlcwotCi1TdWdnZXN0ZWQgYnkgZHR1Y2tlckAKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW29wZW5zc2gtdW5peC1kZXZAbWluZHJvdC5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNpcGhlci5jIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NpcGhlci5jIGIvY2lwaGVyLmMKLWluZGV4IGMzY2Q1ZGMuLjg2NTU4ZTEgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIuYwotKysrIGIvY2lwaGVyLmMKLUBAIC04Miw3ICs4Miw5IEBAIHN0cnVjdCBzc2hjaXBoZXIgewotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3NoY2lwaGVyIGNpcGhlcnNbXSA9IHsKLSAjaWZkZWYgV0lUSF9PUEVOU1NMCi0rI2lmbmRlZiBPUEVOU1NMX05PX0RFUwotIAl7ICIzZGVzLWNiYyIsCQk4LCAyNCwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfZGVzX2VkZTNfY2JjIH0sCi0rI2VuZGlmCi0gCXsgImFlczEyOC1jYmMiLAkJMTYsIDE2LCAwLCAwLCBDRkxBR19DQkMsIEVWUF9hZXNfMTI4X2NiYyB9LAotIAl7ICJhZXMxOTItY2JjIiwJCTE2LCAyNCwgMCwgMCwgQ0ZMQUdfQ0JDLCBFVlBfYWVzXzE5Ml9jYmMgfSwKLSAJeyAiYWVzMjU2LWNiYyIsCQkxNiwgMzIsIDAsIDAsIENGTEFHX0NCQywgRVZQX2Flc18yNTZfY2JjIH0sCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvaW5pdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvaW5pdAppbmRleCAzNGJhMGY4Li44ODg3ZTNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2luaXQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9pbml0CkBAIC0zNiw3ICszNiw3IEBACiB9CiAKIGNoZWNrX2NvbmZpZygpIHsKLQkvdXNyL3NiaW4vc3NoZCAtdCAkU1NIRF9PUFRTIHx8IGV4aXQgMQorICAgIC91c3Ivc2Jpbi9zc2hkICRTU0hEX09QVFMgLXQgfHwgZXhpdCAxCiB9CiAKIGV4cG9ydCBQQVRIPSIke1BBVEg6KyRQQVRIOn0vdXNyL3NiaW46L3NiaW4iCkBAIC00OCwxOSArNDgsMTkgQEAKIAlATElCRVhFQ0RJUkAvc3NoZF9jaGVja19rZXlzCiAJY2hlY2tfcHJpdnNlcF9kaXIKIAlzdGFydC1zdG9wLWRhZW1vbiAtUyAtcCAkUElERklMRSAteCAvdXNyL3NiaW4vc3NoZCAtLSAkU1NIRF9PUFRTCi0gICAgICAgIGVjaG8gImRvbmUuIgorCWVjaG8gImRvbmUuIgogCTs7CiAgIHN0b3ApCi0gICAgICAgIGVjaG8gLW4gIlN0b3BwaW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcjogc3NoZCIKKwllY2hvIC1uICJTdG9wcGluZyBPcGVuQlNEIFNlY3VyZSBTaGVsbCBzZXJ2ZXI6IHNzaGQiCiAJc3RhcnQtc3RvcC1kYWVtb24gLUsgLXAgJFBJREZJTEUgLXggL3Vzci9zYmluL3NzaGQKLSAgICAgICAgZWNobyAiLiIKKwllY2hvICIuIgogCTs7CiAKICAgcmVsb2FkfGZvcmNlLXJlbG9hZCkKIAljaGVja19mb3Jfbm9fc3RhcnQKIAlATElCRVhFQ0RJUkAvc3NoZF9jaGVja19rZXlzCiAJY2hlY2tfY29uZmlnCi0gICAgICAgIGVjaG8gLW4gIlJlbG9hZGluZyBPcGVuQlNEIFNlY3VyZSBTaGVsbCBzZXJ2ZXIncyBjb25maWd1cmF0aW9uIgorCWVjaG8gLW4gIlJlbG9hZGluZyBPcGVuQlNEIFNlY3VyZSBTaGVsbCBzZXJ2ZXIncyBjb25maWd1cmF0aW9uIgogCXN0YXJ0LXN0b3AtZGFlbW9uIC1LIC1wICRQSURGSUxFIC1zIDEgLXggL3Vzci9zYmluL3NzaGQKIAllY2hvICIuIgogCTs7CkBAIC02OCw3ICs2OCw3IEBACiAgIHJlc3RhcnQpCiAJQExJQkVYRUNESVJAL3NzaGRfY2hlY2tfa2V5cwogCWNoZWNrX2NvbmZpZwotICAgICAgICBlY2hvIC1uICJSZXN0YXJ0aW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcjogc3NoZCIKKwllY2hvIC1uICJSZXN0YXJ0aW5nIE9wZW5CU0QgU2VjdXJlIFNoZWxsIHNlcnZlcjogc3NoZCIKIAlzdGFydC1zdG9wLWRhZW1vbiAtSyAtcCAkUElERklMRSAtLW9rbm9kbyAteCAvdXNyL3NiaW4vc3NoZAogCWNoZWNrX2Zvcl9ub19zdGFydAogCWNoZWNrX3ByaXZzZXBfZGlyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaF9jb25maWcgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaF9jb25maWcKaW5kZXggOWU5MTkxNS4uZTBkMDIzOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hfY29uZmlnCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoX2NvbmZpZwpAQCAtMSw0ICsxLDQgQEAKLSMJJE9wZW5CU0Q6IHNzaF9jb25maWcsdiAxLjI4IDIwMTMvMDkvMTYgMTE6MzU6NDMgc3RoZW4gRXhwICQKKyMJJE9wZW5CU0Q6IHNzaF9jb25maWcsdiAxLjMzIDIwMTcvMDUvMDcgMjM6MTI6NTcgZGptIEV4cCAkCiAKICMgVGhpcyBpcyB0aGUgc3NoIGNsaWVudCBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGUuICBTZWUKICMgc3NoX2NvbmZpZyg1KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIFRoaXMgZmlsZSBwcm92aWRlcyBkZWZhdWx0cyBmb3IKQEAgLTMxLDE0ICszMSwxNCBAQAogIyAgIEFkZHJlc3NGYW1pbHkgYW55CiAjICAgQ29ubmVjdFRpbWVvdXQgMAogIyAgIFN0cmljdEhvc3RLZXlDaGVja2luZyBhc2sKLSMgICBJZGVudGl0eUZpbGUgfi8uc3NoL2lkZW50aXR5CiAjICAgSWRlbnRpdHlGaWxlIH4vLnNzaC9pZF9yc2EKICMgICBJZGVudGl0eUZpbGUgfi8uc3NoL2lkX2RzYQorIyAgIElkZW50aXR5RmlsZSB+Ly5zc2gvaWRfZWNkc2EKKyMgICBJZGVudGl0eUZpbGUgfi8uc3NoL2lkX2VkMjU1MTkKICMgICBQb3J0IDIyCi0jICAgUHJvdG9jb2wgMiwxCi0jICAgQ2lwaGVyIDNkZXMKLSMgICBDaXBoZXJzIGFlczEyOC1jdHIsYWVzMTkyLWN0cixhZXMyNTYtY3RyLGFyY2ZvdXIyNTYsYXJjZm91cjEyOCxhZXMxMjgtY2JjLDNkZXMtY2JjCi0jICAgTUFDcyBobWFjLW1kNSxobWFjLXNoYTEsdW1hYy02NEBvcGVuc3NoLmNvbSxobWFjLXJpcGVtZDE2MAorIyAgIFByb3RvY29sIDIKKyMgICBDaXBoZXJzIGFlczEyOC1jdHIsYWVzMTkyLWN0cixhZXMyNTYtY3RyLGFlczEyOC1jYmMsM2Rlcy1jYmMKKyMgICBNQUNzIGhtYWMtbWQ1LGhtYWMtc2hhMSx1bWFjLTY0QG9wZW5zc2guY29tCiAjICAgRXNjYXBlQ2hhciB+CiAjICAgVHVubmVsIG5vCiAjICAgVHVubmVsRGV2aWNlIGFueTphbnkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jaGVja19rZXlzIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKaW5kZXggNTQ2M2IxYS4uMTkzMWRjNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKQEAgLTU2LDM1ICs1NiwyMyBAQAogICAgIGVzYWMKIGRvbmUKIAotIyBwYXJzZSBsb2NhdGlvbiBvZiBrZXlzCi1IT1NUX0tFWV9SU0E9JChncmVwIF5Ib3N0S2V5ICIke3NzaGRfY29uZmlnfSIgfCBncmVwIF9yc2FfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9SU0F9IiBdICYmIEhPU1RfS0VZX1JTQT0kKGdyZXAgSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfcnNhXyB8IHRhaWwgLTEgfCBhd2sgJyB7IHByaW50ICQyIH0gJykKLVsgLXogIiR7SE9TVF9LRVlfUlNBfSIgXSAmJiBIT1NUX0tFWV9SU0E9JFNZU0NPTkZESVIvc3NoX2hvc3RfcnNhX2tleQotSE9TVF9LRVlfRFNBPSQoZ3JlcCBeSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfZHNhXyB8IHRhaWwgLTEgfCBhd2sgJyB7IHByaW50ICQyIH0gJykKLVsgLXogIiR7SE9TVF9LRVlfRFNBfSIgXSAmJiBIT1NUX0tFWV9EU0E9JChncmVwIEhvc3RLZXkgIiR7c3NoZF9jb25maWd9IiB8IGdyZXAgX2RzYV8gfCB0YWlsIC0xIHwgYXdrICcgeyBwcmludCAkMiB9ICcpCi1bIC16ICIke0hPU1RfS0VZX0RTQX0iIF0gJiYgSE9TVF9LRVlfRFNBPSRTWVNDT05GRElSL3NzaF9ob3N0X2RzYV9rZXkKLUhPU1RfS0VZX0VDRFNBPSQoZ3JlcCBeSG9zdEtleSAiJHtzc2hkX2NvbmZpZ30iIHwgZ3JlcCBfZWNkc2FfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9FQ0RTQX0iIF0gJiYgSE9TVF9LRVlfRUNEU0E9JChncmVwIEhvc3RLZXkgIiR7c3NoZF9jb25maWd9IiB8IGdyZXAgX2VjZHNhXyB8IHRhaWwgLTEgfCBhd2sgJyB7IHByaW50ICQyIH0gJykKLVsgLXogIiR7SE9TVF9LRVlfRUNEU0F9IiBdICYmIEhPU1RfS0VZX0VDRFNBPSRTWVNDT05GRElSL3NzaF9ob3N0X2VjZHNhX2tleQotSE9TVF9LRVlfRUQyNTUxOT0kKGdyZXAgXkhvc3RLZXkgIiR7c3NoZF9jb25maWd9IiB8IGdyZXAgX2VkMjU1MTlfIHwgdGFpbCAtMSB8IGF3ayAnIHsgcHJpbnQgJDIgfSAnKQotWyAteiAiJHtIT1NUX0tFWV9FRDI1NTE5fSIgXSAmJiBIT1NUX0tFWV9FRDI1NTE5PSQoZ3JlcCBIb3N0S2V5ICIke3NzaGRfY29uZmlnfSIgfCBncmVwIF9lZDI1NTE5XyB8IHRhaWwgLTEgfCBhd2sgJyB7IHByaW50ICQyIH0gJykKLVsgLXogIiR7SE9TVF9LRVlfRUQyNTUxOX0iIF0gJiYgSE9TVF9LRVlfRUQyNTUxOT0kU1lTQ09ORkRJUi9zc2hfaG9zdF9lZDI1NTE5X2tleQorSE9TVF9LRVlTPSQoc2VkIC1uICdzL15bIFx0XSpIb3N0S2V5WyBcdF1cK1woLipcKS9cMS9wJyAiJHtzc2hkX2NvbmZpZ30iKQorWyAteiAiJHtIT1NUX0tFWVN9IiBdICYmIEhPU1RfS0VZUz0iJFNZU0NPTkZESVIvc3NoX2hvc3RfcnNhX2tleSAkU1lTQ09ORkRJUi9zc2hfaG9zdF9lY2RzYV9rZXkgJFNZU0NPTkZESVIvc3NoX2hvc3RfZWQyNTUxOV9rZXkiCiAKLSMgY3JlYXRlIGtleXMgaWYgbmVjZXNzYXJ5Ci1pZiBbICEgLWYgJEhPU1RfS0VZX1JTQSBdOyB0aGVuCi0gICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBSU0Ega2V5Li4uIgotICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfUlNBIHJzYQotZmkKLWlmIFsgISAtZiAkSE9TVF9LRVlfRUNEU0EgXTsgdGhlbgotICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRUNEU0Ega2V5Li4uIgotICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUNEU0EgZWNkc2EKLWZpCi1pZiBbICEgLWYgJEhPU1RfS0VZX0RTQSBdOyB0aGVuCi0gICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBEU0Ega2V5Li4uIgotICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRFNBIGRzYQotZmkKLWlmIFsgISAtZiAkSE9TVF9LRVlfRUQyNTUxOSBdOyB0aGVuCi0gICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFRDI1NTE5IGtleS4uLiIKLSAgICBnZW5lcmF0ZV9rZXkgJEhPU1RfS0VZX0VEMjU1MTkgZWQyNTUxOQotZmkKLQorZm9yIGtleSBpbiAke0hPU1RfS0VZU30gOyBkbworICAgIFsgLWYgJGtleSBdICYmIGNvbnRpbnVlCisgICAgY2FzZSAka2V5IGluCisgICAgKl9yc2Ffa2V5KQorICAgICAgICBlY2hvICIgIGdlbmVyYXRpbmcgc3NoIFJTQSBob3N0IGtleS4uLiIKKyAgICAgICAgZ2VuZXJhdGVfa2V5ICRrZXkgcnNhCisgICAgICAgIDs7CisgICAgKl9lY2RzYV9rZXkpCisgICAgICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRUNEU0EgaG9zdCBrZXkuLi4iCisgICAgICAgIGdlbmVyYXRlX2tleSAka2V5IGVjZHNhCisgICAgICAgIDs7CisgICAgKl9lZDI1NTE5X2tleSkKKyAgICAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFRDI1NTE5IGhvc3Qga2V5Li4uIgorICAgICAgICBnZW5lcmF0ZV9rZXkgJGtleSBlZDI1NTE5CisgICAgICAgIDs7CisgICAgZXNhYworZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcKaW5kZXggMzFmZTVkOS4uMTVmMDYxYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnCkBAIC0xLDQgKzEsNCBAQAotIwkkT3BlbkJTRDogc3NoZF9jb25maWcsdiAxLjgwIDIwMDgvMDcvMDIgMDI6MjQ6MTggZGptIEV4cCAkCisjCSRPcGVuQlNEOiBzc2hkX2NvbmZpZyx2IDEuMTAyIDIwMTgvMDIvMTYgMDI6MzI6NDAgZGptIEV4cCAkCiAKICMgVGhpcyBpcyB0aGUgc3NoZCBzZXJ2ZXIgc3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBmaWxlLiAgU2VlCiAjIHNzaGRfY29uZmlnKDUpIGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtNyw3ICs3LDcgQEAKIAogIyBUaGUgc3RyYXRlZ3kgdXNlZCBmb3Igb3B0aW9ucyBpbiB0aGUgZGVmYXVsdCBzc2hkX2NvbmZpZyBzaGlwcGVkIHdpdGgKICMgT3BlblNTSCBpcyB0byBzcGVjaWZ5IG9wdGlvbnMgd2l0aCB0aGVpciBkZWZhdWx0IHZhbHVlIHdoZXJlCi0jIHBvc3NpYmxlLCBidXQgbGVhdmUgdGhlbSBjb21tZW50ZWQuICBVbmNvbW1lbnRlZCBvcHRpb25zIGNoYW5nZSBhCisjIHBvc3NpYmxlLCBidXQgbGVhdmUgdGhlbSBjb21tZW50ZWQuICBVbmNvbW1lbnRlZCBvcHRpb25zIG92ZXJyaWRlIHRoZQogIyBkZWZhdWx0IHZhbHVlLgogCiAjUG9ydCAyMgpAQCAtMTUsNDMgKzE1LDMwIEBACiAjTGlzdGVuQWRkcmVzcyAwLjAuMC4wCiAjTGlzdGVuQWRkcmVzcyA6OgogCi0jIFRoZSBkZWZhdWx0IHJlcXVpcmVzIGV4cGxpY2l0IGFjdGl2YXRpb24gb2YgcHJvdG9jb2wgMQotUHJvdG9jb2wgMgotCi0jIEhvc3RLZXkgZm9yIHByb3RvY29sIHZlcnNpb24gMQotI0hvc3RLZXkgL2V0Yy9zc2gvc3NoX2hvc3Rfa2V5Ci0jIEhvc3RLZXlzIGZvciBwcm90b2NvbCB2ZXJzaW9uIDIKICNIb3N0S2V5IC9ldGMvc3NoL3NzaF9ob3N0X3JzYV9rZXkKLSNIb3N0S2V5IC9ldGMvc3NoL3NzaF9ob3N0X2RzYV9rZXkKICNIb3N0S2V5IC9ldGMvc3NoL3NzaF9ob3N0X2VjZHNhX2tleQogI0hvc3RLZXkgL2V0Yy9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkKIAotIyBMaWZldGltZSBhbmQgc2l6ZSBvZiBlcGhlbWVyYWwgdmVyc2lvbiAxIHNlcnZlciBrZXkKLSNLZXlSZWdlbmVyYXRpb25JbnRlcnZhbCAxaAotI1NlcnZlcktleUJpdHMgMTAyNAotCiAjIENpcGhlcnMgYW5kIGtleWluZwogI1Jla2V5TGltaXQgZGVmYXVsdCBub25lCiAKICMgTG9nZ2luZwotIyBvYnNvbGV0ZXMgUXVpZXRNb2RlIGFuZCBGYXNjaXN0TG9nZ2luZwogI1N5c2xvZ0ZhY2lsaXR5IEFVVEgKICNMb2dMZXZlbCBJTkZPCiAKICMgQXV0aGVudGljYXRpb246CiAKICNMb2dpbkdyYWNlVGltZSAybQotI1Blcm1pdFJvb3RMb2dpbiB5ZXMKKyNQZXJtaXRSb290TG9naW4gcHJvaGliaXQtcGFzc3dvcmQKICNTdHJpY3RNb2RlcyB5ZXMKICNNYXhBdXRoVHJpZXMgNgogI01heFNlc3Npb25zIDEwCiAKLSNSU0FBdXRoZW50aWNhdGlvbiB5ZXMKICNQdWJrZXlBdXRoZW50aWNhdGlvbiB5ZXMKIAogIyBUaGUgZGVmYXVsdCBpcyB0byBjaGVjayBib3RoIC5zc2gvYXV0aG9yaXplZF9rZXlzIGFuZCAuc3NoL2F1dGhvcml6ZWRfa2V5czIKICMgYnV0IHRoaXMgaXMgb3ZlcnJpZGRlbiBzbyBpbnN0YWxsYXRpb25zIHdpbGwgb25seSBjaGVjayAuc3NoL2F1dGhvcml6ZWRfa2V5cwotQXV0aG9yaXplZEtleXNGaWxlIC5zc2gvYXV0aG9yaXplZF9rZXlzCitBdXRob3JpemVkS2V5c0ZpbGUJLnNzaC9hdXRob3JpemVkX2tleXMKIAogI0F1dGhvcml6ZWRQcmluY2lwYWxzRmlsZSBub25lCiAKQEAgLTU5LDExICs0Niw5IEBACiAjQXV0aG9yaXplZEtleXNDb21tYW5kVXNlciBub2JvZHkKIAogIyBGb3IgdGhpcyB0byB3b3JrIHlvdSB3aWxsIGFsc28gbmVlZCBob3N0IGtleXMgaW4gL2V0Yy9zc2gvc3NoX2tub3duX2hvc3RzCi0jUmhvc3RzUlNBQXV0aGVudGljYXRpb24gbm8KLSMgc2ltaWxhciBmb3IgcHJvdG9jb2wgdmVyc2lvbiAyCiAjSG9zdGJhc2VkQXV0aGVudGljYXRpb24gbm8KICMgQ2hhbmdlIHRvIHllcyBpZiB5b3UgZG9uJ3QgdHJ1c3Qgfi8uc3NoL2tub3duX2hvc3RzIGZvcgotIyBSaG9zdHNSU0FBdXRoZW50aWNhdGlvbiBhbmQgSG9zdGJhc2VkQXV0aGVudGljYXRpb24KKyMgSG9zdGJhc2VkQXV0aGVudGljYXRpb24KICNJZ25vcmVVc2VyS25vd25Ib3N0cyBubwogIyBEb24ndCByZWFkIHRoZSB1c2VyJ3Mgfi8ucmhvc3RzIGFuZCB+Ly5zaG9zdHMgZmlsZXMKICNJZ25vcmVSaG9zdHMgeWVzCkBAIC03Miw3ICs1Nyw4IEBACiAjUGFzc3dvcmRBdXRoZW50aWNhdGlvbiB5ZXMKICNQZXJtaXRFbXB0eVBhc3N3b3JkcyBubwogCi0jIENoYW5nZSB0byBubyB0byBkaXNhYmxlIHMva2V5IHBhc3N3b3JkcworIyBDaGFuZ2UgdG8geWVzIHRvIGVuYWJsZSBjaGFsbGVuZ2UtcmVzcG9uc2UgcGFzc3dvcmRzIChiZXdhcmUgaXNzdWVzIHdpdGgKKyMgc29tZSBQQU0gbW9kdWxlcyBhbmQgdGhyZWFkcykKIENoYWxsZW5nZVJlc3BvbnNlQXV0aGVudGljYXRpb24gbm8KIAogIyBLZXJiZXJvcyBvcHRpb25zCkBAIC0xMTEsNyArOTcsNyBAQAogQ29tcHJlc3Npb24gbm8KIENsaWVudEFsaXZlSW50ZXJ2YWwgMTUKIENsaWVudEFsaXZlQ291bnRNYXggNAotI1VzZUROUyB5ZXMKKyNVc2VETlMgbm8KICNQaWRGaWxlIC92YXIvcnVuL3NzaGQucGlkCiAjTWF4U3RhcnR1cHMgMTA6MzA6MTAwCiAjUGVybWl0VHVubmVsIG5vCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNnAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjZwMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTExZThkNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNnAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKLXRoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKLURFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKLVNzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKLWFuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9NDI5NjU4YzY2MTJmM2E5YjEyOTM3ODIzNjZhYjI5ZDgiCi0KLSMgb3BlbnNzbCAxLjEgcGF0Y2hlcyBhcmUgcHJvcG9zZWQgYXQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9wdWxsLzQ4Ci1ERVBFTkRTID0gInpsaWIgb3BlbnNzbDEwIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2lwaGVycy1ub3Qtc3VwcG9ydGVkLWJ5LU9wZW5TU0wtREVTLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA2YTg4Njk5MDE4ZTVmZWYxM2Q0NjU1YWJmZWQxZjYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEzMjNjYWVlZGRmZTE0NWJhYWEwZGIxNmU5OGQ3ODRiMWZiYzdkZDQzNmE2YmYxZjQ3OWRmZDVjZDFkMjE3MjMiCi0KLWluaGVyaXQgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotIyBMRlMgc3VwcG9ydDoKLUNGTEFHUyArPSAiLURfX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi0jIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUVYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0vdmFyL3J1bi9zc2hkIFwKLSAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAotICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0vdXNyL2Jpbi94YXV0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgbXVzbCBkb2Vzbid0IGltcGxlbWVudCB3dG1wL3V0bXAKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtd3RtcCIKLQotIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAotIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCi0jIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgotCi0jIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlleHBvcnQgTEQ9IiR7Q0N9IgotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LwotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAotICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgotICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCi0JCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCi0Jcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAotCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2RzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0KLQlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQotCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAotCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgotRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi1GSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKLUZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCi1GSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCi1GSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgotUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKLQotUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCi1SUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1rZXlnZW4gPSAic3NoLWtleWdlbiIKLQotQ09ORkZJTEVTXyR7UE59LXNzaGQgPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWciCi1DT05GRklMRVNfJHtQTn0tc3NoID0gIiR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjkwIgotQUxURVJOQVRJVkVfJHtQTn0tc2NwID0gInNjcCIKLUFMVEVSTkFUSVZFXyR7UE59LXNzaCA9ICJzc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuOHAxK2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy44cDErZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NGRmYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuOHAxK2dpdC5iYgpAQCAtMCwwICsxLDE2NCBAQAorU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAordGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgorREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAorU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAorYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT00Mjk2NThjNjYxMmYzYTliMTI5Mzc4MjM2NmFiMjlkOCIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlO2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitQQU1fU1JDX1VSSSA9ICJmaWxlOi8vc3NoZCIKKworU1JDUkVWID0gImNjZThjYmUwZWQ3ZDFiYTNhNTc1MzEwZTBiNjNjMTkzMzI2YWU2MTYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKKyMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgXAorICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPSR7YmluZGlyfS94YXV0aCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgbXVzbCBkb2Vzbid0IGltcGxlbWVudCB3dG1wL3V0bXAKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtd3RtcCIKKworIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAorIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCisjIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgorCisjIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCisKKyMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlleHBvcnQgTEQ9IiR7Q0N9IgorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAorICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgorICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0IFwKKyAgICAgICAgICAgICAgICAgICByZWdyZXNzL2NoZWNrLXBlcm0gcmVncmVzcy9ta2R0ZW1wCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCisJCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKwlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCisJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCisJaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9CisKKwkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAorCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKwlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKworCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAorCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgorRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCitGSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCitGSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKK0ZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCitGSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCitGSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgorUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIgbWFrZSIKKworUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCitSUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9maWxlcy9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9maWxlcy9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVkOTJiZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCi0KLUluZGV4OiBvcGVuc3NsLTEuMC4ybi9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4ybi5vcmlnL0NvbmZpZ3VyZQotKysrIG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQotQEAgLTEzMyw2ICsxMzMsMTAgQEAgbXkgJGNsYW5nX2RldnRlYW1fd2FybiA9ICItV25vLXVudXNlZC1wYQotICMgV2FybiB0aGF0ICJtYWtlIGRlcGVuZCIgc2hvdWxkIGJlIHJ1bj8KLSBteSAkd2Fybl9tYWtlX2RlcGVuZCA9IDA7Ci0gCi0rIyBUaGVyZSBhcmUgbm8gc2VwYXJhdGUgQ0ZMQUdTL0NQUEZMQUdTL0xERkxBR1MsIHNldCBldmVyeXRoaW5nIGluIENGTEFHUwotK215ICRkZWJpYW5fY2ZsYWdzID0gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1NgIC4gIi1XYSwtLW5vZXhlY3N0YWNrIC1XYWxsIjsKLSskZGViaWFuX2NmbGFncyA9fiBzL1xuLyAvZzsKLSsKLSBteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKLSAKLSBteSAkeDg2X2djY19kZXM9IkRFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwiOwotQEAgLTM2OSw2ICszNzMsNTUgQEAgbXkgJXRhYmxlPSgKLSAib3NmMS1hbHBoYS1jYyIsICAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtTzQgLXJlYWRvbmx5X3N0cmluZ3M6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCi0gInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAotIAotKyMgRGViaWFuIEdOVS8qICh2YXJpb3VzIGFyY2hpdGVjdHVyZXMpCi0rImRlYmlhbi1hbHBoYSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYWxwaGEtZXY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYWxwaGEtZXY1IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY1OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tYXJtNjQiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hcm1lbCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hcm1oZiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1hbWQ2NCIsICJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCi0rImRlYmlhbi1hdnIzMiIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1mb21pdC1mcmFtZS1wb2ludGVyOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkdfQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWtmcmVlYnNkLWFtZDY0IiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWtmcmVlYnNkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWhwcGEiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWh1cmQtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhLC0tbm9leGVjc3RhY2sgLWcgLW10dW5lPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pYTY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLWkzODYtaTQ4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1pMzg2LWk1ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNTg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4taTM4Ni1pNjg2L2Ntb3YiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNjg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbTY4ayIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwcyIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzZWwiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwc24zMiIsICAgIm1pcHM2NC1saW51eC1nbnVhYmluMzItZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW1pcHNuMzJlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMi1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbWlwczY0IiwgICAibWlwczY0LWxpbnV4LWdudWFiaTY0LWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1taXBzNjRlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaTY0LWdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1uZXRic2QtaTM4NiIsCSJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLW02OGsiLAkiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbmV0YnNkLXNwYXJjIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9IC1tdjg6Oih1bmtub3duKTo6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3BlbmJzZC1hbHBoYSIsImdjYzotRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfTo6KHVua25vd24pOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3BlbmJzZC1pMzg2IiwgICJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbTQ4Njo6KHVua25vd24pOjo6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2FzbX06YS5vdXQ6ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLW9wZW5ic2QtbWlwcyIsImdjYzotRExfRU5ESUFOICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYIFJDNF9DSEFSIERFU19VTlJPTEwgREVTX1JJU0MyIERFU19QVFIgQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpic2QtZ2NjLXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tb3IxayIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBvd2VycGMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tcG93ZXJwY3NwZSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGMzMl9hc219OmxpbnV4MzI6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1wcGM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjNjRfYXNtfTpsaW51eDY0OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXBwYzY0ZWwiLCJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NGxlOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXMzOTAiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6UkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsIAotKyJkZWJpYW4tczM5MHgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNoMyIsICAgImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zaDQiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2gzZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tc2g0ZWIiLCAgICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4tbTMyciIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORzoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYyIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYy12OCIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djggLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3NwYXJjdjhfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsiZGViaWFuLXNwYXJjLXY5IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtbWNwdT12OSAtV2EsLUF2OHBsdXMgLURVTFRSQVNQQVJDIC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImRlYmlhbi1zcGFyYzY0IiwiZ2NjOi1tNjQgLURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1BUUiBERVNfUklTQzEgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y5X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1tNjQ6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJkZWJpYW4teDMyIiwiZ2NjOi1teDMyIC1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW14MzI6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUik6Ojp4MzIiLAotKwotICMjIyMKLSAjIyMjIFZhcmlldHkgb2YgTElOVVg6LSkKLSAjIyMjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmNlNGU0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSAwOGZhY2U0MzUzZDgwMTExOTczYWJhOWMxMzA0YzkyMTU4Y2ZhZDBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IE1hciAyMDE3IDE2OjQwOjEyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRha2UgbGlua2luZyBmbGFncyBmcm9tIExERkxBR1MgZW52IHZhcgotCi1UaGlzIGZpeGVzICJObyBHTlVfSEFTSCBpbiB0aGUgZWxmIGJpbmFyeSIgaXNzdWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIENvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbCB8IDIgKy0KLSBDb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwgYi9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKLWluZGV4IGMwMjk4MTcuLjQzYjc2OWIgMTAwNjQ0Ci0tLS0gYS9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKLSsrKyBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAotQEAgLTE3Myw3ICsxNzMsNyBAQCBDUk9TU19DT01QSUxFPSB7LSAkY29uZmlne2Nyb3NzX2NvbXBpbGVfcHJlZml4fSAtfQotIENDPSAkKENST1NTX0NPTVBJTEUpey0gJHRhcmdldHtjY30gLX0KLSBDRkxBR1M9ey0gb3VyICRjZmxhZ3MyID0gam9pbigiICIsKG1hcCB7ICItRCIuJF99IEB7JHRhcmdldHtkZWZpbmVzfX0sIEB7JGNvbmZpZ3tkZWZpbmVzfX0pLCItRE9QRU5TU0xESVI9XCJcXFwiXCQoT1BFTlNTTERJUilcXFwiXCIiLCItREVOR0lORVNESVI9XCJcXFwiXCQoRU5HSU5FU0RJUilcXFwiXCIiKSAtfSB7LSAkdGFyZ2V0e2NmbGFnc30gLX0gey0gJGNvbmZpZ3tjZmxhZ3N9IC19Ci0gQ0ZMQUdTX1E9ey0gJGNmbGFnczIgPX4gc3woW1xcIl0pfFxcJDF8ZzsgJGNmbGFnczIgLX0gey0gJGNvbmZpZ3tjZmxhZ3N9IC19Ci0tTERGTEFHUz0gey0gJHRhcmdldHtsZmxhZ3N9IC19Ci0rTERGTEFHUz0gey0gJHRhcmdldHtsZmxhZ3N9LiIgIi4kRU5WeydMREZMQUdTJ30gLX0KLSBQTElCX0xERkxBR1M9IHstICR0YXJnZXR7cGxpYl9sZmxhZ3N9IC19Ci0gRVhfTElCUz0gey0gJHRhcmdldHtleF9saWJzfSAtfSB7LSAkY29uZmlne2V4X2xpYnN9IC19Ci0gTElCX0NGTEFHUz17LSAkdGFyZ2V0e3NoYXJlZF9jZmxhZ30gfHwgIiIgLX0KLWRpZmYgLS1naXQgYS9Db25maWd1cmUgYi9Db25maWd1cmUKLWluZGV4IGFlZTdjYzMuLjI3NGQyMzYgMTAwNzU1Ci0tLS0gYS9Db25maWd1cmUKLSsrKyBiL0NvbmZpZ3VyZQotQEAgLTk3OSw3ICs5NzksNyBAQCAkY29uZmlne2J1aWxkX2ZpbGV9ID0gJHRhcmdldHtidWlsZF9maWxlfTsKLSAkY29uZmlne2RlZmluZXN9ID0gW107Ci0gJGNvbmZpZ3tjZmxhZ3N9ID0gIiI7Ci0gJGNvbmZpZ3tleF9saWJzfSA9ICIiOwotLSRjb25maWd7c2hhcmVkX2xkZmxhZ30gPSAiIjsKLSskY29uZmlne3NoYXJlZF9sZGZsYWd9ID0gJEVOVnsnTERGTEFHUyd9OwotIAotICMgTWFrZSBzdXJlIGJ1aWxkX3NjaGVtZSBpcyBjb25zaXN0ZW50LgotICR0YXJnZXR7YnVpbGRfc2NoZW1lfSA9IFsgJHRhcmdldHtidWlsZF9zY2hlbWV9IF0KLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1idWlsZGluZm8tc3RyaXAtc3lzcm9vdC1hbmQtZGVidWctcHJlZml4LW1hcC1mcm9tLWNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBiNjJhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1idWlsZGluZm8tc3RyaXAtc3lzcm9vdC1hbmQtZGVidWctcHJlZml4LW1hcC1mcm9tLWNvLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gM2UxZDAwNDgxMDkzZTEwNzc1ZWFmNjlkNjE5YzQ1YjMyYTRhYTdkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9NYXJ0aW49MjBIdW5kZWI9QzM9QjhsbD89IDxtYXJ0aW5AZ2Vhbml4LmNvbT4KK0RhdGU6IFR1ZSwgNiBOb3YgMjAxOCAxNDo1MDo0NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBidWlsZGluZm86IHN0cmlwIHN5c3Jvb3QgYW5kIGRlYnVnLXByZWZpeC1tYXAgZnJvbSBjb21waWxlcgorIGluZm8KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhlIG9wZW5zc2wgYnVpbGQgc3lzdGVtIGdlbmVyYXRlcyBidWlsZGluZi5oIGNvbnRhaW5pbmcgdGhlIGZ1bGwKK2NvbXBpbGVyIGNvbW1hbmQgbGluZSB1c2VkIHRvIGNvbXBpbGUgb2JqZWN0cy4gVGhpcyBicmVha3MKK3JlcHJvZHVjaWJpbGl0eSwgYXMgdGhlIGNvbXBpbGUgY29tbWFuZCBpcyBiYWtlZCBpbnRvIGxpYmNyeXB0bywgd2hlcmUKK2l0IGlzIHVzZWQgd2hlbiBydW5uaW5nIGBvcGVuc3NsIHZlcnNpb24gLWZgLgorCitBZGQgc3RyaXBwZWQgYnVpbGQgdmFyaWFibGVzIGZvciB0aGUgY29tcGlsZXIgYW5kIGNmbGFncyBsaW5lcywgYW5kIHVzZQordGhvc2Ugd2hlbiBnZW5lcmF0aW5nIGJ1aWxkaW5mby5oLgorCitUaGlzIGlzIGJhc2VkIG9uIGEgc2ltaWxhciBwYXRjaCBmb3Igb2xkZXIgb3BlbnNzbCB2ZXJzaW9uczoKK2h0dHBzOi8vcGF0Y2h3b3JrLm9wZW5lbWJlZGRlZC5vcmcvcGF0Y2gvMTQ3MjI5LworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogTWFydGluIEh1bmRlYsO4bGwgPG1hcnRpbkBnZWFuaXguY29tPgorLS0tCisgQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsIHwgMTAgKysrKysrKysrLQorIGNyeXB0by9idWlsZC5pbmZvICAgICAgICAgICAgICAgICB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsIGIvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsCitpbmRleCAxNmFmNGQyMDg3Li41NGMxNjI3ODRjIDEwMDY0NAorLS0tIGEvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsCisrKysgYi9Db25maWd1cmF0aW9ucy91bml4LU1ha2VmaWxlLnRtcGwKK0BAIC0zMTcsMTMgKzMxNywyMSBAQCBCSU5fTERGTEFHUz17LSBqb2luKCcgJywgJHRhcmdldHtiaW5fbGZsYWdzfSB8fCAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoQ05GX0xERkxBR1MpJywgJyQoTERGTEFHUyknKSAtfQorIEJJTl9FWF9MSUJTPSQoQ05GX0VYX0xJQlMpICQoRVhfTElCUykKKyAKKy0jIENQUEZMQUdTX1EgaXMgdXNlZCBmb3Igb25lIHRoaW5nIG9ubHk6IHRvIGJ1aWxkIHVwIGJ1aWxkaW5mLmgKKysjICpfUSB2YXJpYWJsZXMgYXJlIHVzZWQgZm9yIG9uZSB0aGluZyBvbmx5OiB0byBidWlsZCB1cCBidWlsZGluZi5oCisgQ1BQRkxBR1NfUT17LSAkY3BwZmxhZ3MxID1+IHN8KFtcXCJdKXxcXCQxfGc7CisgICAgICAgICAgICAgICAkY3BwZmxhZ3MyID1+IHN8KFtcXCJdKXxcXCQxfGc7CisgICAgICAgICAgICAgICAkbGliX2NwcGZsYWdzID1+IHN8KFtcXCJdKXxcXCQxfGc7CisgICAgICAgICAgICAgICBqb2luKCcgJywgJGxpYl9jcHBmbGFncyB8fCAoKSwgJGNwcGZsYWdzMiB8fCAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAkY3BwZmxhZ3MxIHx8ICgpKSAtfQorIAorK0NGTEFHU19RPXstIGZvciAoQHskY29uZmlne0NGTEFHU319KSB7CisrICAgICAgICAgICAgICBzfC1mZGVidWctcHJlZml4LW1hcD1bXiBdK3wtZmRlYnVnLXByZWZpeC1tYXA9fGc7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGpvaW4oJyAnLCBAeyRjb25maWd7Q0ZMQUdTfX0pIC19CisrCisrQ0NfUT17LSAkY29uZmlne0NDfSA9fiBzfC0tc3lzcm9vdD1bXiBdK3wtLXN5c3Jvb3Q9cmVjaXBlLXN5c3Jvb3R8ZzsKKysgICAgICAgIGpvaW4oJyAnLCAkY29uZmlne0NDfSkgLX0KKysKKyBQRVJMQVNNX1NDSEVNRT0gey0gJHRhcmdldHtwZXJsYXNtX3NjaGVtZX0gLX0KKyAKKyAjIEZvciB4ODYgYXNzZW1ibGVyOiBTZXQgUFJPQ0VTU09SIHRvIDM4NiBpZiB5b3Ugd2FudCB0byBzdXBwb3J0CitkaWZmIC0tZ2l0IGEvY3J5cHRvL2J1aWxkLmluZm8gYi9jcnlwdG8vYnVpbGQuaW5mbworaW5kZXggYjUxNWI3MzE4ZS4uOGM5Y2VlMmEwOSAxMDA2NDQKKy0tLSBhL2NyeXB0by9idWlsZC5pbmZvCisrKysgYi9jcnlwdG8vYnVpbGQuaW5mbworQEAgLTEwLDcgKzEwLDcgQEAgRVhUUkE9ICAuLi9tcy91cGxpbmsteDg2LnBsIC4uL21zL3VwbGluay5jIC4uL21zL2FwcGxpbmsuYyBcCisgICAgICAgICBwcGNjcHVpZC5wbCBwYXJpc2NpZC5wbCBhbHBoYWNwdWlkLnBsIGFybTY0Y3B1aWQucGwgYXJtdjRjcHVpZC5wbAorIAorIERFUEVORFtjdmVyc2lvbi5vXT1idWlsZGluZi5oCistR0VORVJBVEVbYnVpbGRpbmYuaF09Li4vdXRpbC9ta2J1aWxkaW5mLnBsICIkKENDKSAkKExJQl9DRkxBR1MpICQoQ1BQRkxBR1NfUSkiICIkKFBMQVRGT1JNKSIKKytHRU5FUkFURVtidWlsZGluZi5oXT0uLi91dGlsL21rYnVpbGRpbmYucGwgIiQoQ0NfUSkgJChDRkxBR1NfUSkgJChDUFBGTEFHU19RKSIgIiQoUExBVEZPUk0pIgorIERFUEVORFtidWlsZGluZi5oXT0uLi9jb25maWdkYXRhLnBtCisgCisgR0VORVJBVEVbdXBsaW5rLXg4Ni5zXT0uLi9tcy91cGxpbmsteDg2LnBsICQoUEVSTEFTTV9TQ0hFTUUpCistLSAKKzIuMTkuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtc2tpcC10ZXN0X3N5bWJvbF9wcmVzZW5jZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZDk2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtc2tpcC10ZXN0X3N5bWJvbF9wcmVzZW5jZS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGE5NDAxYjIyODk2NTZjNWEzNmRkMWIwZWNlYmYwZDIzZTI5MWNlNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDIgT2N0IDIwMTggMjM6NTg6MjQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2tpcCB0ZXN0X3N5bWJvbF9wcmVzZW5jZQorCitXZSBjYW5ub3Qgc2tpcCBgMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudCcgYnkgY29uZmlndXJpbmcgb3B0aW9uIGBuby1zaGFyZWQnCithcyBJTlNUQUxMIHRvbGQgdXMgdGhlIHNoYXJlZCBsaWJyYXJpZXMgd2lsbCBub3QgYmUgYnVpbHQuCisKK1tJTlNUQUxMIHNuaXBdCisgTm90ZXMgb24gc2hhcmVkIGxpYnJhcmllcworIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIEZvciBtb3N0IHN5c3RlbXMgdGhlIE9wZW5TU0wgQ29uZmlndXJlIHNjcmlwdCBrbm93cyB3aGF0IGlzIG5lZWRlZCB0bworIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgZm9yIGxpYmNyeXB0byBhbmQgbGlic3NsLiBPbiB0aGVzZSBzeXN0ZW1zCisgdGhlIHNoYXJlZCBsaWJyYXJpZXMgd2lsbCBiZSBjcmVhdGVkIGJ5IGRlZmF1bHQuIFRoaXMgY2FuIGJlIHN1cHByZXNzZWQgYW5kCisgb25seSBzdGF0aWMgbGlicmFyaWVzIGNyZWF0ZWQgYnkgdXNpbmcgdGhlICJuby1zaGFyZWQiIG9wdGlvbi4gT24gc3lzdGVtcworIHdoZXJlIE9wZW5TU0wgZG9lcyBub3Qga25vdyBob3cgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyB0aGUgIm5vLXNoYXJlZCIKKyBvcHRpb24gd2lsbCBiZSBmb3JjZWQgYW5kIG9ubHkgc3RhdGljIGxpYnJhcmllcyB3aWxsIGJlIGNyZWF0ZWQuCitbSU5TVEFMTCBzbmlwXQorCitIZW5jZSBkaXJlY3RseSBtb2RpZmljYXRpb24gdGhlIGNhc2UgdG8gc2tpcCBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdC9yZWNpcGVzLzAxLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnQgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3QvcmVjaXBlcy8wMS10ZXN0X3N5bWJvbF9wcmVzZW5jZS50IGIvdGVzdC9yZWNpcGVzLzAxLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnQKK2luZGV4IDdmMmEyZDcuLjBiOTM3NDUgMTAwNjQ0CistLS0gYS90ZXN0L3JlY2lwZXMvMDEtdGVzdF9zeW1ib2xfcHJlc2VuY2UudAorKysrIGIvdGVzdC9yZWNpcGVzLzAxLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnQKK0BAIC0xNCw4ICsxNCw3IEBAIHVzZSBPcGVuU1NMOjpUZXN0OjpVdGlsczsKKyAKKyBzZXR1cCgidGVzdF9zeW1ib2xfcHJlc2VuY2UiKTsKKyAKKy1wbGFuIHNraXBfYWxsID0+ICJPbmx5IHVzZWZ1bCB3aGVuIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMiCistICAgIGlmIGRpc2FibGVkKCJzaGFyZWQiKTsKKytwbGFuIHNraXBfYWxsID0+ICJUaGUgY2FzZSBuZWVkcyBkZWJ1ZyBzeW1ib2xzIHRoZW4gd2UganVzdCBkaXNhYmxlIGl0IjsKKyAKKyBteSBAbGlibmFtZXMgPSAoImNyeXB0byIsICJzc2wiKTsKKyBteSAkdGVzdGNvdW50ID0gc2NhbGFyIEBsaWJuYW1lczsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAyLWZpeC1DVkUtMjAxOC0wNzM0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAyLWZpeC1DVkUtMjAxOC0wNzM0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhM2UwM2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDItZml4LUNWRS0yMDE4LTA3MzQucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0JhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC0wNzM0LiBSZW1vdmUgYSBzZWN0aW9uIHdoaWNoIG9ubHkgcmVtb3ZlIGEKK3NwYWNlLiBJdCBjYW4ndCBiZSBhcHBsaWVkIGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgZGlmZmVyZW50LgorCitDVkU6IENWRS0yMDE4LTA3MzQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK0Zyb20gOGFiZmU3MmU4YzFkZTFiOTVmNTBhYTBkOTEzNDgwM2I0ZDAwMDcwZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWxpIDxwYXVsLmRhbGVAb3JhY2xlLmNvbT4KK0RhdGU6IFdlZCwgMjQgT2N0IDIwMTggMDc6NDI6NDYgKzEwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGltaW5nIHZ1bG5lcmFiaWxpdHkgaW4gRFNBIHNpZ25hdHVyZSBnZW5lcmF0aW9uCisgKENWRS0yMDE4LTA3MzQpLgorCitBdm9pZCBhIHRpbWluZyBhdHRhY2sgdGhhdCBsZWFrcyBpbmZvcm1hdGlvbiB2aWEgYSBzaWRlIGNoYW5uZWwgdGhhdAordHJpZ2dlcnMgd2hlbiBhIEJOIGlzIHJlc2l6ZWQuICBJbmNyZWFzaW5nIHRoZSBzaXplIG9mIHRoZSBCTnMKK3ByaW9yIHRvIGRvaW5nIGFueXRoaW5nIHdpdGggdGhlbSBzdXBwcmVzc2VzIHRoZSBhdHRhY2suCisKK1RoYW5rcyBkdWUgdG8gU2FtdWVsIFdlaXNlciBmb3IgZmluZGluZyBhbmQgbG9jYXRpbmcgdGhpcy4KKworUmV2aWV3ZWQtYnk6IEJlcm5kIEVkbGluZ2VyIDxiZXJuZC5lZGxpbmdlckBob3RtYWlsLmRlPgorKE1lcmdlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvcHVsbC83NDg2KQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhOWNmYjhjMmFhNzI1NGE0YWE2YTE3MTY5MDllM2Y4Y2I3ODA0OWI2KQorLS0tCisgY3J5cHRvL2RzYS9kc2Ffb3NzbC5jIHwgMjggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9kc2EvZHNhX29zc2wuYyBiL2NyeXB0by9kc2EvZHNhX29zc2wuYworaW5kZXggY2EyMDgxMTIwMC4uMmRkMmQ3NDg5YSAxMDA2NDQKKy0tLSBhL2NyeXB0by9kc2EvZHNhX29zc2wuYworKysrIGIvY3J5cHRvL2RzYS9kc2Ffb3NzbC5jCitAQCAtOSw2ICs5LDcgQEAKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAiaW50ZXJuYWwvY3J5cHRsaWIuaCIKKysjaW5jbHVkZSAiaW50ZXJuYWwvYm5faW50LmgiCisgI2luY2x1ZGUgPG9wZW5zc2wvYm4uaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9zaGEuaD4KKyAjaW5jbHVkZSAiZHNhX2xvY2wuaCIKK0BAIC0xODAsOSArMTgxLDkgQEAgc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sCisgeworICAgICBCTl9DVFggKmN0eCA9IE5VTEw7CisgICAgIEJJR05VTSAqaywgKmtpbnYgPSBOVUxMLCAqciA9ICpycDsKKy0gICAgQklHTlVNICpsLCAqbTsKKysgICAgQklHTlVNICpsOworICAgICBpbnQgcmV0ID0gMDsKKy0gICAgaW50IHFfYml0czsKKysgICAgaW50IHFfYml0cywgcV93b3JkczsKKyAKKyAgICAgaWYgKCFkc2EtPnAgfHwgIWRzYS0+cSB8fCAhZHNhLT5nKSB7CisgICAgICAgICBEU0FlcnIoRFNBX0ZfRFNBX1NJR05fU0VUVVAsIERTQV9SX01JU1NJTkdfUEFSQU1FVEVSUyk7CitAQCAtMTkxLDggKzE5Miw3IEBAIHN0YXRpYyBpbnQgZHNhX3NpZ25fc2V0dXAoRFNBICpkc2EsIEJOX0NUWCAqY3R4X2luLAorIAorICAgICBrID0gQk5fbmV3KCk7CisgICAgIGwgPSBCTl9uZXcoKTsKKy0gICAgbSA9IEJOX25ldygpOworLSAgICBpZiAoayA9PSBOVUxMIHx8IGwgPT0gTlVMTCB8fCBtID09IE5VTEwpCisrICAgIGlmIChrID09IE5VTEwgfHwgbCA9PSBOVUxMKQorICAgICAgICAgZ290byBlcnI7CisgCisgICAgIGlmIChjdHhfaW4gPT0gTlVMTCkgeworQEAgLTIwMyw5ICsyMDMsOSBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwKKyAKKyAgICAgLyogUHJlYWxsb2NhdGUgc3BhY2UgKi8KKyAgICAgcV9iaXRzID0gQk5fbnVtX2JpdHMoZHNhLT5xKTsKKy0gICAgaWYgKCFCTl9zZXRfYml0KGssIHFfYml0cykKKy0gICAgICAgIHx8ICFCTl9zZXRfYml0KGwsIHFfYml0cykKKy0gICAgICAgIHx8ICFCTl9zZXRfYml0KG0sIHFfYml0cykpCisrICAgIHFfd29yZHMgPSBibl9nZXRfdG9wKGRzYS0+cSk7CisrICAgIGlmICghYm5fd2V4cGFuZChrLCBxX3dvcmRzICsgMikKKysgICAgICAgIHx8ICFibl93ZXhwYW5kKGwsIHFfd29yZHMgKyAyKSkKKyAgICAgICAgIGdvdG8gZXJyOworIAorICAgICAvKiBHZXQgcmFuZG9tIGsgKi8KK0BAIC0yNDAsMTQgKzI0MCwxNyBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwKKyAgICAgICogc21hbGwgdGltaW5nIGluZm9ybWF0aW9uIGxlYWthZ2UuICBXZSB0aGVuIGNob29zZSB0aGUgc3VtIHRoYXQgaXMKKyAgICAgICogb25lIGJpdCBsb25nZXIgdGhhbiB0aGUgbW9kdWx1cy4KKyAgICAgICoKKy0gICAgICogVE9ETzogcmV2aXNpdCB0aGUgQk5fY29weSBhaW1pbmcgZm9yIGEgbWVtb3J5IGFjY2VzcyBhZ25vc3RpYworLSAgICAgKiBjb25kaXRpb25hbCBjb3B5LgorKyAgICAgKiBUaGVyZSBhcmUgc29tZSBjb25jZXJucyBhYm91dCB0aGUgZWZmaWNhY3kgb2YgZG9pbmcgdGhpcy4gIE1vcmUKKysgICAgICogc3BlY2lmaWNseSByZWZlciB0byB0aGUgZGlzY3Vzc2lvbiBzdGFydGluZyB3aXRoOgorKyAgICAgKiAgICAgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9wdWxsLzc0ODYjZGlzY3Vzc2lvbl9yMjI4MzIzNzA1CisrICAgICAqIFRoZSBmaXggaXMgdG8gcmV3b3JrIEJOIHNvIHRoZXNlIGd5bW5hc3RpY3MgYXJlbid0IHJlcXVpcmVkLgorICAgICAgKi8KKyAgICAgaWYgKCFCTl9hZGQobCwgaywgZHNhLT5xKQorLSAgICAgICAgfHwgIUJOX2FkZChtLCBsLCBkc2EtPnEpCistICAgICAgICB8fCAhQk5fY29weShrLCBCTl9udW1fYml0cyhsKSA+IHFfYml0cyA/IGwgOiBtKSkKKysgICAgICAgIHx8ICFCTl9hZGQoaywgbCwgZHNhLT5xKSkKKyAgICAgICAgIGdvdG8gZXJyOworIAorKyAgICBCTl9jb25zdHRpbWVfc3dhcChCTl9pc19iaXRfc2V0KGwsIHFfYml0cyksIGssIGwsIHFfd29yZHMgKyAyKTsKKysKKyAgICAgaWYgKChkc2EpLT5tZXRoLT5ibl9tb2RfZXhwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICBpZiAoIWRzYS0+bWV0aC0+Ym5fbW9kX2V4cChkc2EsIHIsIGRzYS0+ZywgaywgZHNhLT5wLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHNhLT5tZXRob2RfbW9udF9wKSkKK0BAIC0yNzUsNyArMjc4LDYgQEAgc3RhdGljIGludCBkc2Ffc2lnbl9zZXR1cChEU0EgKmRzYSwgQk5fQ1RYICpjdHhfaW4sCisgICAgICAgICBCTl9DVFhfZnJlZShjdHgpOworICAgICBCTl9jbGVhcl9mcmVlKGspOworICAgICBCTl9jbGVhcl9mcmVlKGwpOworLSAgICBCTl9jbGVhcl9mcmVlKG0pOworICAgICByZXR1cm4gcmV0OworIH0KKyAKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMy1maXgtQ1ZFLTIwMTgtMDczNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMy1maXgtQ1ZFLTIwMTgtMDczNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzYzMjNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAzLWZpeC1DVkUtMjAxOC0wNzM1LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0NWRTogQ1ZFLTIwMTgtMDczNQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitGcm9tIGIxZDZkNTVlY2UxYzI2ZmEyODI5ZTJiODE5YjAzOGQ3YjZkNjkyYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsaSA8cGF1bC5kYWxlQG9yYWNsZS5jb20+CitEYXRlOiBGcmksIDI2IE9jdCAyMDE4IDEwOjU0OjU4ICsxMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFRpbWluZyB2dWxuZXJhYmlsaXR5IGluIEVDRFNBIHNpZ25hdHVyZSBnZW5lcmF0aW9uCisgKENWRS0yMDE4LTA3MzUpCisKK1ByZWFsbG9jYXRlIGFuIGV4dHJhIGxpbWIgZm9yIHNvbWUgb2YgdGhlIGJpZyBudW1iZXJzIHRvIGF2b2lkIGEgcmVhbGxvY2F0aW9uCit0aGF0IGNhbiBwb3RlbnRpYWxseSBwcm92aWRlIGEgc2lkZSBjaGFubmVsLgorCitSZXZpZXdlZC1ieTogQmVybmQgRWRsaW5nZXIgPGJlcm5kLmVkbGluZ2VyQGhvdG1haWwuZGU+CisoTWVyZ2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9wdWxsLzc0ODYpCisKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDk5NTQwZWM3OTQ5MWY1OWVkOGI0NmI0ZWRmMTMwZTE3ZGM5MDdmNTIpCistLS0KKyBjcnlwdG8vZWMvZWNfbXVsdC5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2VjL2VjX211bHQuYyBiL2NyeXB0by9lYy9lY19tdWx0LmMKK2luZGV4IDdlMWIzNjUwZTcuLjBlMGE1ZTEzOTQgMTAwNjQ0CistLS0gYS9jcnlwdG8vZWMvZWNfbXVsdC5jCisrKysgYi9jcnlwdG8vZWMvZWNfbXVsdC5jCitAQCAtMjA2LDggKzIwNiw4IEBAIGludCBlY19zY2FsYXJfbXVsX2xhZGRlcihjb25zdCBFQ19HUk9VUCAqZ3JvdXAsIEVDX1BPSU5UICpyLAorICAgICAgKi8KKyAgICAgY2FyZGluYWxpdHlfYml0cyA9IEJOX251bV9iaXRzKGNhcmRpbmFsaXR5KTsKKyAgICAgZ3JvdXBfdG9wID0gYm5fZ2V0X3RvcChjYXJkaW5hbGl0eSk7CistICAgIGlmICgoYm5fd2V4cGFuZChrLCBncm91cF90b3AgKyAxKSA9PSBOVUxMKQorLSAgICAgICAgfHwgKGJuX3dleHBhbmQobGFtYmRhLCBncm91cF90b3AgKyAxKSA9PSBOVUxMKSkgeworKyAgICBpZiAoKGJuX3dleHBhbmQoaywgZ3JvdXBfdG9wICsgMikgPT0gTlVMTCkKKysgICAgICAgIHx8IChibl93ZXhwYW5kKGxhbWJkYSwgZ3JvdXBfdG9wICsgMikgPT0gTlVMTCkpIHsKKyAgICAgICAgIEVDZXJyKEVDX0ZfRUNfU0NBTEFSX01VTF9MQURERVIsIEVSUl9SX0JOX0xJQik7CisgICAgICAgICBnb3RvIGVycjsKKyAgICAgfQorQEAgLTI0NCw3ICsyNDQsNyBAQCBpbnQgZWNfc2NhbGFyX211bF9sYWRkZXIoY29uc3QgRUNfR1JPVVAgKmdyb3VwLCBFQ19QT0lOVCAqciwKKyAgICAgICogayA6PSBzY2FsYXIgKyAyKmNhcmRpbmFsaXR5CisgICAgICAqLworICAgICBrYml0ID0gQk5faXNfYml0X3NldChsYW1iZGEsIGNhcmRpbmFsaXR5X2JpdHMpOworLSAgICBCTl9jb25zdHRpbWVfc3dhcChrYml0LCBrLCBsYW1iZGEsIGdyb3VwX3RvcCArIDEpOworKyAgICBCTl9jb25zdHRpbWVfc3dhcChrYml0LCBrLCBsYW1iZGEsIGdyb3VwX3RvcCArIDIpOworIAorICAgICBncm91cF90b3AgPSBibl9nZXRfdG9wKGdyb3VwLT5maWVsZCk7CisgICAgIGlmICgoYm5fd2V4cGFuZChzLT5YLCBncm91cF90b3ApID09IE5VTEwpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0CmluZGV4IDY1YzZjYzcuLjBhNjIwZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcnVuLXB0ZXN0CkBAIC0xLDQgKzEsMTIgQEAKICMhL2Jpbi9zaAotY2QgdGVzdAotT1BFTlNTTF9FTkdJTkVTPS4uL2VuZ2luZXMgQkxEVE9QPS4uIFNSQ1RPUD0uLiBwZXJsIHJ1bl90ZXN0cy5wbAotY2QgLi4KKworc2V0IC1lCisKKyMgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSAnbGlzdCcgdG8gbGlzdHMgYWxsIHRlc3RzLCBvciB0aGUgdGVzdCBuYW1lIChiYXNlIG5hbWUKKyMgaWUgdGVzdF9ldnAsIG5vdCAwM190ZXN0X2V2cC50KS4KKworZXhwb3J0IFRPUD0uCisjIE9QRU5TU0xfRU5HSU5FUyBpcyByZWxhdGl2ZSBmcm9tIHRoZSB0ZXN0IGJpbmFyaWVzCitleHBvcnQgT1BFTlNTTF9FTkdJTkVTPS4uL2VuZ2luZXMKKworcGVybCAuL3Rlc3QvcnVuX3Rlc3RzLnBsICQqCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvMDAwMS1hbGxvdy1tYW5wYWdlcy10by1iZS1kaXNhYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1hbGxvdy1tYW5wYWdlcy10by1iZS1kaXNhYmxlZC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLzAwMDEtZml4LUNWRS0yMDE4LTA3MzQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1maXgtQ1ZFLTIwMTgtMDczNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTg2NWE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwLzAwMDEtZml4LUNWRS0yMDE4LTA3MzQucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorQ1ZFOiBDVkUtMjAxOC0wNzM0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK0Zyb20gNDNlNmE1OGQ0OTkxYTQ1MWRhZjQ4OTFmZjA1YTQ4NzM1ZGY4NzFhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWxpIDxwYXVsLmRhbGVAb3JhY2xlLmNvbT4KK0RhdGU6IE1vbiwgMjkgT2N0IDIwMTggMDg6MjQ6MjIgKzEwMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWVyZ2UgRFNBIHJlYWxsb2NhdGlvbiB0aW1pbmcgZml4IENWRS0yMDE4LTA3MzQuCisKK1Jldmlld2VkLWJ5OiBSaWNoYXJkIExldml0dGUgPGxldml0dGVAb3BlbnNzbC5vcmc+CisoTWVyZ2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9wdWxsLzc1MTMpCistLS0KKyBjcnlwdG8vZHNhL2RzYV9vc3NsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMgYi9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKK2luZGV4IDJkY2ZlZGVlZWUuLjEwMGUyNjkyNjggMTAwNjQ0CistLS0gYS9jcnlwdG8vZHNhL2RzYV9vc3NsLmMKKysrKyBiL2NyeXB0by9kc2EvZHNhX29zc2wuYworQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMgaW50IGRzYV9zaWduX3NldHVwKERTQSAqZHNhLCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsCisgICAgICAgICBnb3RvIGVycjsKKyAKKyAgICAgLyogUHJlYWxsb2NhdGUgc3BhY2UgKi8KKy0gICAgcV9iaXRzID0gQk5fbnVtX2JpdHMoZHNhLT5xKTsKKysgICAgcV9iaXRzID0gQk5fbnVtX2JpdHMoZHNhLT5xKSArIHNpemVvZihkc2EtPnEtPmRbMF0pICogMTY7CisgICAgIGlmICghQk5fc2V0X2JpdCgmaywgcV9iaXRzKQorICAgICAgICAgfHwgIUJOX3NldF9iaXQoJmwsIHFfYml0cykKKyAgICAgICAgIHx8ICFCTl9zZXRfYml0KCZtLCBxX2JpdHMpKQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL01ha2VmaWxlcy1wdGVzdC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL01ha2VmaWxlcy1wdGVzdC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDcwOWY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDczIEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtkZWJpYW5dCisKK0luZGV4OiBvcGVuc3NsLTEuMC4ybi9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4ybi5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJuL0NvbmZpZ3VyZQorQEAgLTEzMyw2ICsxMzMsMTAgQEAgbXkgJGNsYW5nX2RldnRlYW1fd2FybiA9ICItV25vLXVudXNlZC1wYQorICMgV2FybiB0aGF0ICJtYWtlIGRlcGVuZCIgc2hvdWxkIGJlIHJ1bj8KKyBteSAkd2Fybl9tYWtlX2RlcGVuZCA9IDA7CisgCisrIyBUaGVyZSBhcmUgbm8gc2VwYXJhdGUgQ0ZMQUdTL0NQUEZMQUdTL0xERkxBR1MsIHNldCBldmVyeXRoaW5nIGluIENGTEFHUworK215ICRkZWJpYW5fY2ZsYWdzID0gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1NgIC4gYGRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHU2AgLiBgZHBrZy1idWlsZGZsYWdzIC0tZ2V0IExERkxBR1NgIC4gIi1XYSwtLW5vZXhlY3N0YWNrIC1XYWxsIjsKKyskZGViaWFuX2NmbGFncyA9fiBzL1xuLyAvZzsKKysKKyBteSAkc3RyaWN0X3dhcm5pbmdzID0gMDsKKyAKKyBteSAkeDg2X2djY19kZXM9IkRFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwiOworQEAgLTM2OSw2ICszNzMsNTUgQEAgbXkgJXRhYmxlPSgKKyAib3NmMS1hbHBoYS1jYyIsICAiY2M6LXN0ZDEgLXR1bmUgaG9zdCAtTzQgLXJlYWRvbmx5X3N0cmluZ3M6Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LOiR7YWxwaGFfYXNtfTpkbGZjbjphbHBoYS1vc2YxLXNoYXJlZDo6Oi5zbyIsCisgInRydTY0LWFscGhhLWNjIiwgImNjOi1zdGQxIC10dW5lIGhvc3QgLWZhc3QgLXJlYWRvbmx5X3N0cmluZ3M6Oi1wdGhyZWFkOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTks6JHthbHBoYV9hc219OmRsZmNuOmFscGhhLW9zZjEtc2hhcmVkOjotbXN5bTouc28iLAorIAorKyMgRGViaWFuIEdOVS8qICh2YXJpb3VzIGFyY2hpdGVjdHVyZXMpCisrImRlYmlhbi1hbHBoYSIsImdjYzotRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY0OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYWxwaGEtZXY1IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9ZXY1OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHthbHBoYV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tYXJtNjQiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1lbCIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hcm1oZiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1hbWQ2NCIsICJnY2M6LW02NCAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke3g4Nl82NF9hc219OmVsZjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKTo6OiIsCisrImRlYmlhbi1hdnIzMiIsICJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1mb21pdC1mcmFtZS1wb2ludGVyOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkdfQkZfUFRSOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWFtZDY0IiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtRE1EMzJfUkVHX1Q9aW50OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiR7eDg2XzY0X2FzbX06ZWxmOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWtmcmVlYnNkLWkzODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbWFyY2g9aTQ4Njo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWhwcGEiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgTUQyX0NIQVIgUkM0X0lOREVYOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWh1cmQtaTM4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPUyAtTzMgLVdhLC0tbm9leGVjc3RhY2sgLWcgLW10dW5lPWk0ODYgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pYTY0IiwiZ2NjOi1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfVU5ST0xMIERFU19JTlQ6JHtpYTY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2IiwiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9lbGZfYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLWkzODYtaTQ4NiIsImdjYzotRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1hcmNoPWk0ODY6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306JHt4ODZfZWxmX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1pMzg2LWk1ODYiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNTg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4taTM4Ni1pNjg2L2Ntb3YiLCJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tYXJjaD1pNjg2OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiR7eDg2X2VsZl9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbTY4ayIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVg6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwcyIsICAgImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1taXBzZWwiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwc24zMiIsICAgIm1pcHM2NC1saW51eC1nbnVhYmluMzItZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHNuMzJlbCIsICAgIm1pcHM2NGVsLWxpbnV4LWdudWFiaW4zMi1nY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbWlwczY0IiwgICAibWlwczY0LWxpbnV4LWdudWFiaTY0LWdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW1pcHM2NGVsIiwgICAibWlwczY0ZWwtbGludXgtZ251YWJpNjQtZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tbmV0YnNkLWkzODYiLAkiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW5ldGJzZC1tNjhrIiwJImdjYzotREJfRU5ESUFOIC1EVEVSTUlPUyAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW5ldGJzZC1zcGFyYyIsCSJnY2M6LURCX0VORElBTiAtRFRFUk1JT1MgJHtkZWJpYW5fY2ZsYWdzfSAtbXY4OjoodW5rbm93bik6OjpCTl9MTE9ORyBNRDJfQ0hBUiBSQzRfSU5ERVggREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9wZW5ic2QtYWxwaGEiLCJnY2M6LURURVJNSU9TICR7ZGViaWFuX2NmbGFnc306Oih1bmtub3duKTo6OlNJWFRZX0ZPVVJfQklUX0xPTkcgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9wZW5ic2QtaTM4NiIsICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU9TICR7ZGViaWFuX2NmbGFnc30gLW00ODY6Oih1bmtub3duKTo6OkJOX0xMT05HICR7eDg2X2djY19kZXN9ICR7eDg2X2djY19vcHRzfToke3g4Nl9hc219OmEub3V0OmRsZmNuOmJzZC1nY2Mtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1vcGVuYnNkLW1pcHMiLCJnY2M6LURMX0VORElBTiAke2RlYmlhbl9jZmxhZ3N9OjoodW5rbm93bik6OkJOX0xMT05HIE1EMl9DSEFSIFJDNF9JTkRFWCBSQzRfQ0hBUiBERVNfVU5ST0xMIERFU19SSVNDMiBERVNfUFRSIEJGX1BUUjoke25vX2FzbX06ZGxmY246YnNkLWdjYy1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW9yMWsiLCAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wb3dlcnBjIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzMyX2FzbX06bGludXgzMjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXBvd2VycGNzcGUiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19SSVNDMSBERVNfVU5ST0xMOiR7cHBjMzJfYXNtfTpsaW51eDMyOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tcHBjNjQiLCJnY2M6LW02NCAtREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc306Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfUklTQzEgREVTX1VOUk9MTDoke3BwYzY0X2FzbX06bGludXg2NDpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1wcGM2NGVsIiwiZ2NjOi1tNjQgLURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1JJU0MxIERFU19VTlJPTEw6JHtwcGM2NF9hc219OmxpbnV4NjRsZTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6LW02NDouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zMzkwIiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLCAKKysiZGViaWFuLXMzOTB4IiwiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zaDMiLCAgICJnY2M6LURMX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc2g0IiwgICAiZ2NjOi1ETF9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoM2ViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXNoNGViIiwgICAiZ2NjOi1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfTo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLW0zMnIiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkc6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc3BhcmMiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9OjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc3BhcmMtdjgiLCJnY2M6LURCX0VORElBTiAtRFRFUk1JTyAke2RlYmlhbl9jZmxhZ3N9IC1tY3B1PXY4IC1EQk5fRElWMlc6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtzcGFyY3Y4X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImRlYmlhbi1zcGFyYy12OSIsImdjYzotREJfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLW1jcHU9djkgLVdhLC1BdjhwbHVzIC1EVUxUUkFTUEFSQyAtREJOX0RJVjJXOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJkZWJpYW4tc3BhcmM2NCIsImdjYzotbTY0IC1EQl9FTkRJQU4gLURURVJNSU8gJHtkZWJpYW5fY2ZsYWdzfSAtRFVMVFJBU1BBUkMgLURCTl9ESVYyVzo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19QVFIgREVTX1JJU0MxIERFU19VTlJPTEwgQkZfUFRSOiR7c3BhcmN2OV9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzotbTY0Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysiZGViaWFuLXgzMiIsImdjYzotbXgzMiAtRExfRU5ESUFOIC1EVEVSTUlPICR7ZGViaWFuX2NmbGFnc30gLURNRDMyX1JFR19UPWludDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6JHt4ODZfNjRfYXNtfTplbGY6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOi1teDMyOi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpOjo6eDMyIiwKKysKKyAjIyMjCisgIyMjIyBWYXJpZXR5IG9mIExJTlVYOi0pCisgIyMjIwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL21hbi1kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL21hbi1kaXIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL21hbi1kaXIucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL25vLXJwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9uby1ycGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL25vLXJwYXRoLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL25vLXJwYXRoLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL25vLXN5bWJvbGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbi9waWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuL3BpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuL3BpYy5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbi9waWMucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpY2VydF9tYWxheXNpYS5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9vZS1sZGZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29lLWxkZmxhZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29lLWxkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9vZS1sZGZsYWdzLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9vcGVuc3NsLWNfcmVoYXNoLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2wtY19yZWhhc2guc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2wtY19yZWhhc2guc2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9vcGVuc3NsLWNfcmVoYXNoLnNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wYXJhbGxlbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcGFyYWxsZWwucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wYXJhbGxlbC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcHRlc3QtZGVwcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wdGVzdC1kZXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wdGVzdC1kZXBzLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcHRlc3QtZGVwcy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ycC9yZXByb2R1Y2libGUtY2ZsYWdzLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3JlcHJvZHVjaWJsZS1ta2J1aWxkaW5mLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC9ydW4tcHRlc3QKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3J1bi1wdGVzdApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbDEwL3J1bi1wdGVzdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMnAvc2hhcmVkLWxpYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvc2hhcmVkLWxpYnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJwL3NoYXJlZC1saWJzLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAvc2hhcmVkLWxpYnMucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMF8xLjAuMnAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTBfMS4wLjJwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMjU5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTBfMS4wLjJwLmJiCkBAIC0wLDAgKzEsMzYxIEBACitTVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCitMSUNFTlNFID0gIm9wZW5zc2wiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNDc1MzY4OTI0ODI3ZDA2ZDRiNDE2MTExYzhiZGI3NyIKKworREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL3BpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LUNWRS0yMDE4LTA3MzQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2libGUtbWtidWlsZGluZi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYzVlYjMwYmY1Nzk4YWExNGIxYWU2ZDBlN2RhNThkZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MGE5OGUwN2IxYTg5ZWI4ZjZhOTk0NzdmMjYyZGY3MWM2ZmE3YmVmNzdkZjRkYzgzMDI1YTI4NDVjODI3ZDAwIgorCitTID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3BlbnNzbC0oP1A8cHZlcj4xXC4wLispXC50YXIiCisKK2luaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID89ICJjcnlwdG9kZXYtbGludXgiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTLCxjcnlwdG9kZXYtbGludXgiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIsLCwiCitQQUNLQUdFQ09ORklHW3BlcmxdID0gIiwsLCIKKworIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQorIyB2dWxuZXJhYmlsaXR5CitFWFRSQV9PRUNPTkYgPSAibm8tc3NsMyIKKworRVhUUkFfT0VNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21hbnBhZ2VzJywgJycsICdPRV9ESVNBQkxFX01BTlBBR0VTPTEnLCBkKX0iCisKK2V4cG9ydCBPRV9MREZMQUdTID0gIiR7TERGTEFHU30iCisKKyMgb3BlbnNzbCBmYWlscyB3aXRoIGNjYWNoZTogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgxMAorQ0NBQ0hFID0gIiIKKworVEVSTUlPID89ICItRFRFUk1JTyIKK1RFUk1JT19saWJjLW11c2wgPSAiLURURVJNSU9TIgorCitDRkxBRyA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAorICAgICAgICAgJHtURVJNSU99ICR7Q0ZMQUdTfSAtV2FsbCIKKworIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgdGhleSBkb24ndAorIyAoYW5kIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4KQorQ0ZMQUcgKz0gIi1XYSwtLW5vZXhlY3N0YWNrIgorCitDRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKKworZG9fY29uZmlndXJlICgpIHsKKwkjIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCisJIyBpbnN0YWxsZWQsIGJ1dCBzb21lIGRpc3RyaWJ1dGlvbnMgKGZvciBleGFtcGxlIEZlZG9yYSAyMykgZG9uJ3Qgc2hpcCBpdCBieQorCSMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCisJIyBidWlsZGluZy4KKwlpZiAhIHBlcmwgLU1iaWdpbnQgLWUgdHJ1ZTsgdGhlbgorCQliYmZhdGFsICJUaGUgcGVybCBtb2R1bGUgJ2JpZ251bScgd2FzIG5vdCBmb3VuZCBidXQgdGhpcyBpcyByZXF1aXJlZCB0byBidWlsZCBvcGVuc3NsLiAgUGxlYXNlIGluc3RhbGwgdGhpcyBtb2R1bGUgKG9mdGVuIHBhY2thZ2VkIGFzIHBlcmwtYmlnbnVtKSBhbmQgcmUtcnVuIGJpdGJha2UuIgorCWZpCisKKwlsbiAtc2YgYXBwcy9vcGVuc3NsLnBvZCBjcnlwdG8vY3J5cHRvLnBvZCBzc2wvc3NsLnBvZCBkb2MvCisKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC1nbnVlYWJpIHxcCisJbGludXgtZ251c3BlIHxcCisJbGludXgtbXVzbGVhYmkgfFwKKwlsaW51eC1tdXNsc3BlIHxcCisJbGludXgtbXVzbCApCisJCW9zPWxpbnV4CisJCTs7CisJKikKKwkJOzsKKwllc2FjCisJdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgorCWNhc2UgJHRhcmdldCBpbgorCWxpbnV4LWFybSkKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYXJtZWIpCisJCXRhcmdldD1saW51eC1lbGYtYXJtZWIKKwkJOzsKKwlsaW51eC1hYXJjaDY0KikKKwkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKKwkJOzsKKwlsaW51eC1zaDMpCisJCXRhcmdldD1kZWJpYW4tc2gzCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9ZGViaWFuLXNoNAorCQk7OworCWxpbnV4LWk0ODYpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNDg2CisJCTs7CisJbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQorCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTU4NgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNjg2L2Ntb3YKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqZWwpCisJCXRhcmdldD1kZWJpYW4tbWlwc24zMmVsCisJCTs7CisJbGludXgtZ251bjMyLW1pcHMqKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzIKKwkJOzsKKwlsaW51eC1taXBzKjY0KmVsKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NGVsCisJCTs7CisJbGludXgtbWlwcyo2NCopCisJCXRhcmdldD1kZWJpYW4tbWlwczY0CisJCTs7CisJbGludXgtbWlwcyplbCkKKwkJdGFyZ2V0PWRlYmlhbi1taXBzZWwKKwkJOzsKKwlsaW51eC1taXBzKikKKwkJdGFyZ2V0PWRlYmlhbi1taXBzCisJCTs7CisJbGludXgtbWljcm9ibGF6ZSogfCBsaW51eC1uaW9zMiogfCBsaW51eC1nbnUqaWxwMzIqKiB8IGxpbnV4LWFyYyopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1yaXNjdjMyKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcmlzY3Y2NCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAorCQk7OworCWxpbnV4LXNwYXJjIHwgbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKKwkJOzsKKwllc2FjCisKKwkjIGluamVjdCBtYWNoaW5lLXNwZWNpZmljIGZsYWdzCisJc2VkIC1pIC1lICJzfF5cKFwiJHRhcmdldFwiLFxzKlwiW146XVwrXCk6XChbXjpdXCtcKXxcMToke0NGTEFHfXxnIiBDb25maWd1cmUKKworCXVzZXByZWZpeD0ke3ByZWZpeH0KKwlpZiBbICJ4JHVzZXByZWZpeCIgPSAieCIgXTsgdGhlbgorCQl1c2VwcmVmaXg9LworCWZpCisJbGliZGlybGVhZj0iJCggZWNobyAiJHtsaWJkaXJ9IiB8IHNlZCAiczpeJHVzZXByZWZpeC8qOjoiICkiCisJcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBzaGFyZWQgLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbCAtLWxpYmRpcj0kbGliZGlybGVhZiAkdGFyZ2V0Cit9CisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgZGVwZW5kCisJb2VfcnVubWFrZQorfQorCitkb19jb21waWxlX2NsYXNzLXRhcmdldCAoKSB7CisJc2VkIC1pICdzL1woKE9QRU5TU0w9XCkiLioiL1wxIm9wZW5zc2wiLycgTWFrZWZpbGUKKwlvZV9ydW5tYWtlIGRlcGVuZAorCWNjX3Nhbml0aXplZD0kKGVjaG8gIiR7Q0N9ICR7Q0ZMQUd9IiB8IHNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyAtZSAncy9bIFx0XVwrLyAvZycpCisJb2VfcnVubWFrZSBDQ19JTkZPPSIkY2Nfc2FuaXRpemVkIgorfQorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKwlvZV9ydW5tYWtlIGJ1aWxkdGVzdAorfQorCitkb19pbnN0YWxsICgpIHsKKwkjIENyZWF0ZSAke0R9LyR7cHJlZml4fSB0byBmaXggcGFyYWxsZWwgaXNzdWVzCisJbWtkaXIgLXAgJHtEfS8ke3ByZWZpeH0vCisKKwlvZV9ydW5tYWtlIElOU1RBTExfUFJFRklYPSIke0R9IiBNQU5ESVI9IiR7bWFuZGlyfSIgaW5zdGFsbAorCisJb2VfbGliaW5zdGFsbCAtc28gbGliY3J5cHRvICR7RH0ke2xpYmRpcn0KKwlvZV9saWJpbnN0YWxsIC1zbyBsaWJzc2wgJHtEfSR7bGliZGlyfQorCisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorCWNwIC0tZGVyZWZlcmVuY2UgLVIgaW5jbHVkZS9vcGVuc3NsICR7RH0ke2luY2x1ZGVkaXJ9CisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCisKKwlpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisJc2VkIC1pIC1lICdzLC9ldGMvb3BlbnNzbCwke3N5c2NvbmZkaXJ9L3NzbCxnJyAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbAorCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAorCWVsc2UKKwkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CisJZmkKKworCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUgZm9yIHBhY2thZ2VzIHN1Y2ggYXMgY2EtY2VydGlmaWNhdGVzIHdoaWNoCisJIyBjb250YWluIGhhcmQtY29kZWQgcGF0aHMgdG8gL2V0Yy9zc2wuIERlYmlhbiBkb2VzIHRoZSBzYW1lLgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsCisJbXYgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKKwkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCisKKwkjIEFsdGhvdWdoIGFic29sdXRlIHN5bWxpbmtzIHdvdWxkIGJlIE9LIGZvciB0aGUgdGFyZ2V0LCB0aGV5IGJlY29tZQorCSMgaW52YWxpZCBpZiBuYXRpdmUgb3IgbmF0aXZlc2RrIGFyZSByZWxvY2F0ZWQgZnJvbSBzc3RhdGUuCisJbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wnLCAnJHtzeXNjb25mZGlyfS9zc2wvY2VydHMnKX0gJHtEfSR7bGliZGlyfS9zc2wvY2VydHMKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbCcsICcke3N5c2NvbmZkaXJ9L3NzbC9wcml2YXRlJyl9ICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbCcsICcke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZicpfSAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgorCisJIyBSZW5hbWUgbWFuIHBhZ2VzIHRvIHByZWZpeCBvcGVuc3NsMTAtKgorCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgZmA7IGRvCisJICAgIG12ICRmICQoZGlybmFtZSAkZikvb3BlbnNzbDEwLSQoYmFzZW5hbWUgJGYpCisJZG9uZQorCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgbGA7IGRvCisJICAgIGxuX2Y9YHJlYWRsaW5rICRmYAorCSAgICBybSAtZiAkZgorCSAgICBsbiAtcyBvcGVuc3NsMTAtJGxuX2YgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKKwkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC9jZXJ0LnBlbSBcCisJICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsL2VuZ2luZXMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwlta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCWNwIC1yIC1MIE1ha2VmaWxlLm9yZyBNYWtlZmlsZSB0ZXN0ICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIFJlcGxhY2UgdGhlIHBhdGggdG8gbmF0aXZlIHBlcmwgd2l0aCB0aGUgcGF0aCB0byB0YXJnZXQgcGVybAorCXNlZCAtaSAncyxeUEVSTD0uKixQRVJMPSR7YmluZGlyfS9wZXJsLCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworCWNwIENvbmZpZ3VyZSBjb25maWcgZV9vcy5oICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgLUwgaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfQorCWxuIC1zZiAke2xpYmRpcn0vbGliY3J5cHRvLmEgJHtEfSR7UFRFU1RfUEFUSH0KKwlsbiAtc2YgJHtsaWJkaXJ9L2xpYnNzbC5hICR7RH0ke1BURVNUX1BBVEh9CisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCisJY3AgY3J5cHRvL2NvbnN0YW50X3RpbWVfbG9jbC5oICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bworCWNwIC1yIGNlcnRzICR7RH0ke1BURVNUX1BBVEh9CisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zZiAke2xpYmRpcn0vc3NsL21pc2MvQ0Euc2ggICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWxuIC1zZiAke2JpbmRpcn0vb3BlbnNzbCAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwljcCBhcHBzL3NlcnZlci5wZW0gICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwljcCBhcHBzL3NlcnZlcjIucGVtICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS91dGlsCisJaW5zdGFsbCB1dGlsL29wZW5zc2x3cmFwLnNoICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwlpbnN0YWxsIHV0aWwvc2hsaWJfd3JhcC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAorCSMgVGltZSBzdGFtcHMgYXJlIHJlbGV2YW50IGZvciAibWFrZSBhbGx0ZXN0cyIsIG90aGVyd2lzZQorCSMgbWFrZSBtYXkgdHJ5IHRvIHJlY29tcGlsZSBiaW5hcmllcy4gTm90IG9ubHkgbXVzdCB0aGUKKwkjIGJpbmFyeSBmaWxlcyBiZSBuZXdlciB0aGFuIHRoZSBzb3VyY2VzLCB0aGV5IGFsc28gbXVzdAorCSMgYmUgbW9yZSByZWNlbnQgdGhhbiB0aGUgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZS4KKwkjCisJIyBVc2luZyAiY3AgLWEiIGlzIG5vdCBzdWZmaWNpZW50LCBiZWNhdXNlIGRvX2luc3RhbGwKKwkjIGRvZXMgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCB0aW1lIHN0YW1wcy4KKwkjCisJIyBTbyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvcmlnaW5hbCBmaWxlIHN0YW1wcywgd2Ugc2V0CisJIyB0aGUgY3VycmVudCB0aW1lIGZvciBhbGwgZmlsZXMuIEJpbmFyaWVzIHdpbGwgZ2V0CisJIyBtb2RpZmllZCBhZ2FpbiBsYXRlciB3aGVuIHN0cmlwcGluZyB0aGVtLCBidXQgdGhhdCdzIG9rYXkuCisJdG91Y2ggJHtEfSR7UFRFU1RfUEFUSH0KKwlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0tdmVyYm9zZSAtMCB0b3VjaCAtciAke0R9JHtQVEVTVF9QQVRIfQorCisJIyBleGNsdWRlIGJpbmFyeSBmaWxlcyBvciB0aGUgcGFja2FnZSB3b24ndCBpbnN0YWxsCisJZm9yIGQgaW4gc3NsdGVzdF9vbGQgdjNleHQgeDUwOWF1eDsgZG8KKwkJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtCUE59L3B0ZXN0L3Rlc3QvJGQKKwlkb25lCisKKwkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKKwlzZWQgLWkgXAorCS1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vQ29uZmlndXJlCit9CisKKyMgQWRkIHRoZSBvcGVuc3NsLmNuZiBmaWxlIHRvIHRoZSBvcGVuc3NsLWNvbmYgcGFja2FnZS4gTWFrZSB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCisjIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBiYXNlIG9wZW5zc2wgcGFja2FnZSBhbmQgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIHNpbmNlIHRoZSBiYXNlIG9wZW5zc2wgcGFja2FnZSBkZXBlbmRzIG9uIHRoZSBsaWJjcnlwdG8gcGFja2FnZS4KKworUEFDS0FHRVMgPSsgImxpYmNyeXB0bzEwIGxpYnNzbDEwIG9wZW5zc2wxMC1jb25mICR7UE59LWVuZ2luZXMgJHtQTn0tbWlzYyIKKworRklMRVNfbGliY3J5cHRvMTAgPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKK0ZJTEVTX2xpYnNzbDEwID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCitGSUxFU19vcGVuc3NsMTAtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyIKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLyoiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKKworQ09ORkZJTEVTX29wZW5zc2wxMC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorCitSUkVDT01NRU5EU19saWJjcnlwdG8xMCArPSAib3BlbnNzbDEwLWNvbmYiCitSREVQRU5EU18ke1BOfS1taXNjID0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LW1pc2MgbWFrZSBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgYmMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAib3BlbnNzbF9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgb3BlbnNzbCAxLjAgZGV2ZWxvcG1lbnQgZmlsZXMgYW5kIGV4ZWN1dGFibGUgYmluYXJpZXMgY2xhc2ggd2l0aCBvcGVuc3NsIDEuMQorIyBmaWxlcyB3aGVuIGluc3RhbGxlZCBpbnRvIHRhcmdldCByb290ZnMuIFNvIHdlIGRvbid0IHB1dCB0aGVtIGludG8KKyMgcGFja2FnZXMsIGJ1dCB0aGV5IGNvbnRpbnVlIHRvIGJlIHByb3ZpZGVkIHZpYSB0YXJnZXQgc3lzcm9vdCBmb3IKKyMgY3Jvc3MtY29tcGlsYXRpb24gb24gdGhlIGhvc3QsIGlmIHNvbWUgc29mdHdhcmUgc3RpbGwgZGVwZW5kcyBvbiBvcGVuc3NsIDEuMC4KK29wZW5zc2xfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKyAgICAgICAgZm9yIGZpbGUgaW4gYGZpbmQgJHtQS0dEfSAtbmFtZSAqLmggLW8gLW5hbWUgKi5wYyAtbyAtbmFtZSAqLnNvYDsgZG8KKyAgICAgICAgICAgICAgICBybSAkZmlsZQorICAgICAgICBkb25lCisgICAgICAgIHJtICR7UEtHRH0vdXNyL2Jpbi9vcGVuc3NsCisgICAgICAgIHJtICR7UEtHRH0vdXNyL2Jpbi9jX3JlaGFzaAorICAgICAgICBybWRpciAke1BLR0R9L3Vzci9iaW4KKworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMnAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ycC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0MTk3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4ycC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0NCArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNDc1MzY4OTI0ODI3ZDA2ZDRiNDE2MTExYzhiZGI3NyIKLQotREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCi0KLVBST1ZJREVTICs9ICJvcGVuc3NsMTAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2UtbGRmbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lbmdpbmVzLWluc3RhbGwtaW4tbGliZGlyLXNzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1zZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1ycGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3BpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzbF9maXhfZm9yX3gzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1kZXBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsbG93LW1hbnBhZ2VzLXRvLWJlLWRpc2FibGVkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1jZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLW1rYnVpbGRpbmYucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAotICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWM1ZWIzMGJmNTc5OGFhMTRiMWFlNmQwZTdkYTU4ZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTBhOThlMDdiMWE4OWViOGY2YTk5NDc3ZjI2MmRmNzFjNmZhN2JlZjc3ZGY0ZGM4MzAyNWEyODQ1YzgyN2QwMCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3BlbnNzbC0oP1A8cHZlcj4xXC4wLispXC50YXIiCi0KLWluaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCByZWxhdGl2ZV9zeW1saW5rcyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHID89ICJjcnlwdG9kZXYtbGludXgiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICItREhBVkVfQ1JZUFRPREVWIC1EVVNFX0NSWVBUT0RFVl9ESUdFU1RTLCxjcnlwdG9kZXYtbGludXgiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIsLCwiCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gIiwsLCIKLQotIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQotIyB2dWxuZXJhYmlsaXR5Ci1FWFRSQV9PRUNPTkYgPSAibm8tc3NsMyIKLQotRVhUUkFfT0VNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21hbnBhZ2VzJywgJycsICdPRV9ESVNBQkxFX01BTlBBR0VTPTEnLCBkKX0iCi0KLWV4cG9ydCBPRV9MREZMQUdTID0gIiR7TERGTEFHU30iCi0KLSMgb3BlbnNzbCBmYWlscyB3aXRoIGNjYWNoZTogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgxMAotQ0NBQ0hFID0gIiIKLQotVEVSTUlPID89ICItRFRFUk1JTyIKLVRFUk1JT19saWJjLW11c2wgPSAiLURURVJNSU9TIgotCi1DRkxBRyA9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRExfRU5ESUFOJywgJy1EQl9FTkRJQU4nLCBkKX0gXAotICAgICAgICAgJHtURVJNSU99ICR7Q0ZMQUdTfSAtV2FsbCIKLQotIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgdGhleSBkb24ndAotIyAoYW5kIGl0IGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4KQotQ0ZMQUcgKz0gIi1XYSwtLW5vZXhlY3N0YWNrIgotCi1DRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKLQotZG9fY29uZmlndXJlICgpIHsKLQkjIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCi0JIyBpbnN0YWxsZWQsIGJ1dCBzb21lIGRpc3RyaWJ1dGlvbnMgKGZvciBleGFtcGxlIEZlZG9yYSAyMykgZG9uJ3Qgc2hpcCBpdCBieQotCSMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCi0JIyBidWlsZGluZy4KLQlpZiAhIHBlcmwgLU1iaWdpbnQgLWUgdHJ1ZTsgdGhlbgotCQliYmZhdGFsICJUaGUgcGVybCBtb2R1bGUgJ2JpZ251bScgd2FzIG5vdCBmb3VuZCBidXQgdGhpcyBpcyByZXF1aXJlZCB0byBidWlsZCBvcGVuc3NsLiAgUGxlYXNlIGluc3RhbGwgdGhpcyBtb2R1bGUgKG9mdGVuIHBhY2thZ2VkIGFzIHBlcmwtYmlnbnVtKSBhbmQgcmUtcnVuIGJpdGJha2UuIgotCWZpCi0KLQlsbiAtc2YgYXBwcy9vcGVuc3NsLnBvZCBjcnlwdG8vY3J5cHRvLnBvZCBzc2wvc3NsLnBvZCBkb2MvCi0KLQlvcz0ke0hPU1RfT1N9Ci0JY2FzZSAkb3MgaW4KLQlsaW51eC1nbnVlYWJpIHxcCi0JbGludXgtZ251c3BlIHxcCi0JbGludXgtbXVzbGVhYmkgfFwKLQlsaW51eC1tdXNsc3BlIHxcCi0JbGludXgtbXVzbCApCi0JCW9zPWxpbnV4Ci0JCTs7Ci0JKikKLQkJOzsKLQllc2FjCi0JdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgotCWNhc2UgJHRhcmdldCBpbgotCWxpbnV4LWFybSkKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYXJtZWIpCi0JCXRhcmdldD1saW51eC1lbGYtYXJtZWIKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1kZWJpYW4tc2gzCi0JCTs7Ci0JbGludXgtc2g0KQotCQl0YXJnZXQ9ZGViaWFuLXNoNAotCQk7OwotCWxpbnV4LWk0ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNDg2Ci0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTU4NgotCQk7OwotCWxpbnV4LWk2ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNjg2L2Ntb3YKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqZWwpCi0JCXRhcmdldD1kZWJpYW4tbWlwc24zMmVsCi0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzIKLQkJOzsKLQlsaW51eC1taXBzKjY0KmVsKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NGVsCi0JCTs7Ci0JbGludXgtbWlwcyo2NCopCi0JCXRhcmdldD1kZWJpYW4tbWlwczY0Ci0JCTs7Ci0JbGludXgtbWlwcyplbCkKLQkJdGFyZ2V0PWRlYmlhbi1taXBzZWwKLQkJOzsKLQlsaW51eC1taXBzKikKLQkJdGFyZ2V0PWRlYmlhbi1taXBzCi0JCTs7Ci0JbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqfGxpbnV4LWdudSppbHAzMioqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtcmlzY3YzMikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXJpc2N2NjQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljNjQKLQkJOzsKLQlsaW51eC1zdXBlcnNwYXJjKQotCQl0YXJnZXQ9bGludXgtc3BhcmN2OAotCQk7OwotCWxpbnV4LXNwYXJjKQotCQl0YXJnZXQ9bGludXgtc3BhcmN2OAotCQk7OwotCWVzYWMKLQotCSMgaW5qZWN0IG1hY2hpbmUtc3BlY2lmaWMgZmxhZ3MKLQlzZWQgLWkgLWUgInN8XlwoXCIkdGFyZ2V0XCIsXHMqXCJbXjpdXCtcKTpcKFteOl1cK1wpfFwxOiR7Q0ZMQUd9fGciIENvbmZpZ3VyZQotCi0JdXNlcHJlZml4PSR7cHJlZml4fQotCWlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCi0JCXVzZXByZWZpeD0vCi0JZmkKLQlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIHM6JHVzZXByZWZpeDo6KSIKLQlwZXJsIC4vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPSRsaWJkaXJsZWFmICR0YXJnZXQKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBkZXBlbmQKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2NvbXBpbGVfY2xhc3MtdGFyZ2V0ICgpIHsKLQlzZWQgLWkgJ3MvXCgoT1BFTlNTTD1cKSIuKiIvXDEib3BlbnNzbCIvJyBNYWtlZmlsZQotCW9lX3J1bm1ha2UgZGVwZW5kCi0JY2Nfc2FuaXRpemVkPSQoZWNobyAiJHtDQ30gJHtDRkxBR30iIHwgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIC1lICdzL1sgXHRdXCsvIC9nJykKLQlvZV9ydW5tYWtlIENDX0lORk89IiRjY19zYW5pdGl6ZWQiCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QgKCkgewotCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCSMgQ3JlYXRlICR7RH0vJHtwcmVmaXh9IHRvIGZpeCBwYXJhbGxlbCBpc3N1ZXMKLQlta2RpciAtcCAke0R9LyR7cHJlZml4fS8KLQotCW9lX3J1bm1ha2UgSU5TVEFMTF9QUkVGSVg9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBpbnN0YWxsCi0KLQlvZV9saWJpbnN0YWxsIC1zbyBsaWJjcnlwdG8gJHtEfSR7bGliZGlyfQotCW9lX2xpYmluc3RhbGwgLXNvIGxpYnNzbCAke0R9JHtsaWJkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KLQotCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQotCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbAotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAotCWVsc2UKLQkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0Ci0JZmkKLQotCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KLQltdiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAotCSAgIFwKLQkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgotCi0JIyBSZW5hbWUgbWFuIHBhZ2VzIHRvIHByZWZpeCBvcGVuc3NsMTAtKgotCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgZmA7IGRvCi0JICAgIG12ICRmICQoZGlybmFtZSAkZikvb3BlbnNzbDEwLSQoYmFzZW5hbWUgJGYpCi0JZG9uZQotCWZvciBmIGluIGBmaW5kICR7RH0ke21hbmRpcn0gLXR5cGUgbGA7IGRvCi0JICAgIGxuX2Y9YHJlYWRsaW5rICRmYAotCSAgICBybSAtZiAkZgotCSAgICBsbiAtcyBvcGVuc3NsMTAtJGxuX2YgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCWNwIC1yIC1MIE1ha2VmaWxlLm9yZyBNYWtlZmlsZSB0ZXN0ICR7RH0ke1BURVNUX1BBVEh9Ci0KLQkjIFJlcGxhY2UgdGhlIHBhdGggdG8gbmF0aXZlIHBlcmwgd2l0aCB0aGUgcGF0aCB0byB0YXJnZXQgcGVybAotCXNlZCAtaSAncyxeUEVSTD0uKixQRVJMPSR7YmluZGlyfS9wZXJsLCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLQotCWNwIENvbmZpZ3VyZSBjb25maWcgZV9vcy5oICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgLUwgaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfQotCWxuIC1zZiAke2xpYmRpcn0vbGliY3J5cHRvLmEgJHtEfSR7UFRFU1RfUEFUSH0KLQlsbiAtc2YgJHtsaWJkaXJ9L2xpYnNzbC5hICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCi0JY3AgY3J5cHRvL2NvbnN0YW50X3RpbWVfbG9jbC5oICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bwotCWNwIC1yIGNlcnRzICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2xpYmRpcn0vc3NsL21pc2MvQ0Euc2ggICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2JpbmRpcn0vb3BlbnNzbCAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlci5wZW0gICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlcjIucGVtICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS91dGlsCi0JaW5zdGFsbCB1dGlsL29wZW5zc2x3cmFwLnNoICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKLQlpbnN0YWxsIHV0aWwvc2hsaWJfd3JhcC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAotCSMgVGltZSBzdGFtcHMgYXJlIHJlbGV2YW50IGZvciAibWFrZSBhbGx0ZXN0cyIsIG90aGVyd2lzZQotCSMgbWFrZSBtYXkgdHJ5IHRvIHJlY29tcGlsZSBiaW5hcmllcy4gTm90IG9ubHkgbXVzdCB0aGUKLQkjIGJpbmFyeSBmaWxlcyBiZSBuZXdlciB0aGFuIHRoZSBzb3VyY2VzLCB0aGV5IGFsc28gbXVzdAotCSMgYmUgbW9yZSByZWNlbnQgdGhhbiB0aGUgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZS4KLQkjCi0JIyBVc2luZyAiY3AgLWEiIGlzIG5vdCBzdWZmaWNpZW50LCBiZWNhdXNlIGRvX2luc3RhbGwKLQkjIGRvZXMgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCB0aW1lIHN0YW1wcy4KLQkjCi0JIyBTbyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvcmlnaW5hbCBmaWxlIHN0YW1wcywgd2Ugc2V0Ci0JIyB0aGUgY3VycmVudCB0aW1lIGZvciBhbGwgZmlsZXMuIEJpbmFyaWVzIHdpbGwgZ2V0Ci0JIyBtb2RpZmllZCBhZ2FpbiBsYXRlciB3aGVuIHN0cmlwcGluZyB0aGVtLCBidXQgdGhhdCdzIG9rYXkuCi0JdG91Y2ggJHtEfSR7UFRFU1RfUEFUSH0KLQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0tdmVyYm9zZSAtMCB0b3VjaCAtciAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBleGNsdWRlIGJpbmFyeSBmaWxlcyBvciB0aGUgcGFja2FnZSB3b24ndCBpbnN0YWxsCi0JZm9yIGQgaW4gc3NsdGVzdF9vbGQgdjNleHQgeDUwOWF1eDsgZG8KLQkJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtCUE59L3B0ZXN0L3Rlc3QvJGQKLQlkb25lCi0KLQkjIFJlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMKLQlzZWQgLWkgXAotCS1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vQ29uZmlndXJlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29wZW5zc2wgXAotCSAgICBPUEVOU1NMX0NPTkY9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCi0JICAgIFNTTF9DRVJUX0RJUj0ke2xpYmRpcn0vc3NsL2NlcnRzIFwKLQkgICAgU1NMX0NFUlRfRklMRT0ke2xpYmRpcn0vc3NsL2NlcnQucGVtIFwKLQkgICAgT1BFTlNTTF9FTkdJTkVTPSR7bGliZGlyfS9zc2wvZW5naW5lcwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaAotfQotCi0jIEFkZCB0aGUgb3BlbnNzbC5jbmYgZmlsZSB0byB0aGUgb3BlbnNzbC1jb25mIHBhY2thZ2UuICBNYWtlIHRoZSBsaWJjcnlwdG8KLSMgcGFja2FnZSBSUkVDT01NRU5EUyBvbiB0aGlzIHBhY2thZ2UuICBUaGlzIHdpbGwgZW5hYmxlIHRoZSBjb25maWd1cmF0aW9uCi0jIGZpbGUgdG8gYmUgaW5zdGFsbGVkIGZvciBib3RoIHRoZSBiYXNlIG9wZW5zc2wgcGFja2FnZSBhbmQgdGhlIGxpYmNyeXB0bwotIyBwYWNrYWdlIHNpbmNlIHRoZSBiYXNlIG9wZW5zc2wgcGFja2FnZSBkZXBlbmRzIG9uIHRoZSBsaWJjcnlwdG8gcGFja2FnZS4KLQotUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgb3BlbnNzbC1jb25mICR7UE59LWVuZ2luZXMgJHtQTn0tbWlzYyIKLQotRklMRVNfbGliY3J5cHRvID0gIiR7bGliZGlyfS9saWJjcnlwdG8ke1NPTElCU30iCi1GSUxFU19saWJzc2wgPSAiJHtsaWJkaXJ9L2xpYnNzbCR7U09MSUJTfSIKLUZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLUZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wvbWlzYyIKLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLyoiCi1GSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKLQotQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKLQotUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCi1SREVQRU5EU18ke1BOfS1taXNjID0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LW1pc2MgbWFrZSBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgYmMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjBpLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MDA2MjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWN1cmUgU29ja2V0IExheWVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIFNvY2tldCBMYXllciAoU1NMKSBiaW5hcnkgYW5kIHJlbGF0ZWQgY3J5cHRvZ3JhcGhpYyB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9uZXdzL3Z1bG5lcmFiaWxpdGllcy5odG1sIgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi0KLSMgIm9wZW5zc2wgfCBTU0xlYXkiIGR1YWwgbGljZW5zZQotTElDRU5TRSA9ICJvcGVuc3NsIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDU3ZDUxMTAzMGM5ZDY2ZWY1ZjU5NjZiZWU1YTdlZmYiCi0KLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAotICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQ5NTEyNmFhZmQyNjU5ZDM1N2VhNjZhOTY5YzNmZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWJiZmM4NDRhOGM4Y2MwZWE1ZGMxMGI4NmM5Y2U5N2Y0MDE4MzdmM2ZhMDhjMTdiMmNkYWRjMTE4MjUzY2Y5OSIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKLQotI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6IEluIGZ1bmN0aW9uICdldmVudGZkJzoKLSN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOjExMDoyMDogZXJyb3I6ICdfX05SX2V2ZW50ZmQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotI3wgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2V2ZW50ZmQsIG4pOwotI3wgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KLUVYVFJBX09FQ09ORl9hcHBlbmRfYWFyY2g2NCA9ICIgbm8tYWZhbGdlbmciCi0KLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURPUEVOU1NMX05PX0FTWU5DIgotCi1kb19jb25maWd1cmUgKCkgewotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsZWFiaSB8XAotCWxpbnV4LW11c2xzcGUgfFwKLQlsaW51eC1tdXNsICkKLQkJb3M9bGludXgKLQkJOzsKLQkqKQotCQk7OwotCWVzYWMKLQl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCi0JY2FzZSAkdGFyZ2V0IGluCi0JbGludXgtYXJtKQotCQl0YXJnZXQ9bGludXgtYXJtdjQKLQkJOzsKLQlsaW51eC1hcm1lYikKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYWFyY2g2NCopCi0JCXRhcmdldD1saW51eC1hYXJjaDY0Ci0JCTs7Ci0JbGludXgtc2gzKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtc2g0KQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtaTQ4NikKLQkJdGFyZ2V0PWxpbnV4LWVsZgotCQk7OwotCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKLQkJdGFyZ2V0PWxpbnV4LWVsZgotCQk7OwotCWxpbnV4LWk2ODYpCi0JCXRhcmdldD1saW51eC1lbGYKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtbWlwcykKLQkJIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCi0JCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgotCQk7OwotCWxpbnV4LW1pcHNlbCkKLQkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCi0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqKQotCQl0YXJnZXQ9bGludXgtbWlwczY0Ci0JCTs7Ci0JbGludXgtKi1taXBzNjQgfCBsaW51eC1taXBzNjQpCi0JCXRhcmdldD1saW51eDY0LW1pcHM2NAotCQk7OwotCWxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKLQkJdGFyZ2V0PWxpbnV4NjQtbWlwczY0Ci0JCTs7Ci0JbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtcmlzY3YzMikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXJpc2N2NjQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljNjQKLQkJOzsKLQlsaW51eC1zdXBlcnNwYXJjKQotCQl0YXJnZXQ9bGludXgtc3BhcmN2OQotCQk7OwotCWxpbnV4LXNwYXJjKQotCQl0YXJnZXQ9bGludXgtc3BhcmN2OQotCQk7OwotCWRhcndpbi1pMzg2KQotCQl0YXJnZXQ9ZGFyd2luLWkzODYtY2MKLQkJOzsKLQllc2FjCi0KLQl1c2VwcmVmaXg9JHtwcmVmaXh9Ci0JaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KLQkJdXNlcHJlZml4PS8KLQlmaQotCWxpYmRpcmxlYWY9IiQoZWNobyAke2xpYmRpcn0gfCBzZWQgczokdXNlcHJlZml4OjopIgotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLS1wcmVmaXg9JHVzZXByZWZpeCAtLW9wZW5zc2xkaXI9JHtsaWJkaXJ9L3NzbC0xLjEgLS1saWJkaXI9JGxpYmRpcmxlYWYgJHRhcmdldAotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBNQU5TVUZGSVg9c3NsIGluc3RhbGwKLQlvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JIyBJbnN0YWxsIGEgY3VzdG9tIHZlcnNpb24gb2YgY19yZWhhc2ggdGhhdCBjYW4gaGFuZGxlIHN5c3Jvb3RzIHByb3Blcmx5LgotCSMgVGhpcyB2ZXJzaW9uIGlzIHVzZWQgZm9yIGV4YW1wbGUgd2hlbiBpbnN0YWxsaW5nIGNhLWNlcnRpZmljYXRlcyBkdXJpbmcKLQkjIGltYWdlIGNyZWF0aW9uLgotCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQlta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLXIgKiAke0R9JHtQVEVTVF9QQVRIfQotCi0JIyBQdXR0aW5nIC5zbyBmaWxlcyBpbiBwdGVzdCBwYWNrYWdlIHdpbGwgbWVzcyB1cCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBtYWluIG9wZW5zc2wgcGFja2FnZQotCSMgc28gd2UgcmVuYW1lIHRoZW0gdG8gLnNvLnB0ZXN0IGFuZCBwYXRjaCB0aGUgdGVzdCBhY2NvcmRpbmdseQotCW12ICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJjcnlwdG8uc28ucHRlc3QKLQltdiAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28gJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvLnB0ZXN0Ci0Jc2VkIC1pICdzLyR0YXJnZXR7c2hhcmVkX2V4dGVuc2lvbl9zaW1wbGV9LyIuc28ucHRlc3QiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC9yZWNpcGVzLzkwLXRlc3Rfc2hsaWJsb2FkLnQKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCi0KLUZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vc3NsLTEuMS8qIgotRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2giCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9lbmdpbmVzLTEuMSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgYmFzaCBweXRob24iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMzRiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xLmJiCkBAIC0wLDAgKzEsMjA1IEBACitTVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworIyAib3BlbnNzbCIgaGVyZSBhY3R1YWxseSBtZWFucyBib3RoIE9wZW5TU0wgYW5kIFNTTGVheSBsaWNlbnNlcyBhcHBseQorIyAoc2VlIG1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL09wZW5TU0wgdG8gd2hpY2ggIm9wZW5zc2wiIGlzIFNQRFhMSUNFTlNFTUFQcGVkKQorTElDRU5TRSA9ICJvcGVuc3NsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDU3ZDUxMTAzMGM5ZDY2ZWY1ZjU5NjZiZWU1YTdlZmYiCisKK0RFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtY19yZWhhc2guc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZml4LUNWRS0yMDE4LTA3MzQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1maXgtQ1ZFLTIwMTgtMDczNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgICAgICAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1vcGVuc3NsLnNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzA3OWViMDE3NDI5ZTBmZmI5ZWZiNDJiZjgwY2NiMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjgzNjg3NWEwZjg5YzAzZDBmZGY0ODM5NDE1MTI2MTNhNTBjZmI0MjFkNmZkOTRiOWY0MWQ3Mjc5ZDU4NmEzZCIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBuby1hc3luYyIKKworIyBUaGlzIHByZXZlbnRzIG9wZW5zc2wgZnJvbSB1c2luZyBnZXRyYW5kb20oKSB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIG9sZGVyIGdsaWJjIHZlcnNpb25zCisjIChuYXRpdmUgdmVyc2lvbnMgY2FuIGJlIGJ1aWx0IHdpdGggbmV3ZXIgZ2xpYmMsIGJ1dCB0aGVuIHJlbG9jYXRlZCBvbnRvIGEgc3lzdGVtIHdpdGggb2xkZXIgZ2xpYmMpCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aC1yYW5kLXNlZWQ9ZGV2cmFuZG9tIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGgtcmFuZC1zZWVkPWRldnJhbmRvbSIKKworIyBSZWx5aW5nIG9uIGhhcmRjb2RlZCBidWlsdC1pbiBwYXRocyBjYXVzZXMgb3BlbnNzbC1uYXRpdmUgdG8gbm90IGJlIHJlbG9jYXRlYWJsZSBmcm9tIHNzdGF0ZS4KK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgorCitkb19jb25maWd1cmUgKCkgeworCW9zPSR7SE9TVF9PU30KKwljYXNlICRvcyBpbgorCWxpbnV4LWdudWVhYmkgfFwKKwlsaW51eC1nbnVzcGUgfFwKKwlsaW51eC1tdXNsZWFiaSB8XAorCWxpbnV4LW11c2xzcGUgfFwKKwlsaW51eC1tdXNsICkKKwkJb3M9bGludXgKKwkJOzsKKwkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtaT84NiB8IGxpbnV4LXZpYWMzKQorCQl0YXJnZXQ9bGludXgteDg2CisJCTs7CisJbGludXgtZ251eDMyLXg4Nl82NCB8IGxpbnV4LW11c2x4MzIteDg2XzY0ICkKKwkJdGFyZ2V0PWxpbnV4LXgzMgorCQk7OworCWxpbnV4LWdudTY0LXg4Nl82NCkKKwkJdGFyZ2V0PWxpbnV4LXg4Nl82NAorCQk7OworCWxpbnV4LW1pcHMgfCBsaW51eC1taXBzZWwpCisJCSMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncworCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyopCisJCXRhcmdldD1saW51eC1taXBzNjQKKwkJOzsKKwlsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCB8IGxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKKwkJdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisJCTs7CisJbGludXgtbWljcm9ibGF6ZSogfCBsaW51eC1uaW9zMiogfCBsaW51eC1zaDMgfCBsaW51eC1zaDQgfCBsaW51eC1hcmMqKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcG93ZXJwYykKKwkJdGFyZ2V0PWxpbnV4LXBwYworCQk7OworCWxpbnV4LXBvd2VycGM2NCkKKwkJdGFyZ2V0PWxpbnV4LXBwYzY0CisJCTs7CisJbGludXgtcmlzY3YzMikKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgorCQk7OworCWxpbnV4LXJpc2N2NjQpCisJCXRhcmdldD1saW51eC1nZW5lcmljNjQKKwkJOzsKKwlsaW51eC1zcGFyYyB8IGxpbnV4LXN1cGVyc3BhcmMpCisJCXRhcmdldD1saW51eC1zcGFyY3Y5CisJCTs7CisJZXNhYworCisJdXNlcHJlZml4PSR7cHJlZml4fQorCWlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCisJCXVzZXByZWZpeD0vCisJZmkKKwkjIFdBUk5JTkc6IGRvIG5vdCBzZXQgY29tcGlsZXIvbGlua2VyIGZsYWdzICgtSS8tRCBldGMuKSBpbiBFWFRSQV9PRUNPTkYsIGFzIHRoZXkgd2lsbCBmdWxseSByZXBsYWNlIHRoZQorCSMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSBiaXRiYWtlLiBBZGp1c3QgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnN0ZWFkLgorCVBFUkw1TElCPSIke1N9L2V4dGVybmFsL3BlcmwvVGV4dC1UZW1wbGF0ZS0xLjQ2L2xpYi8iIFwKKwlwZXJsICR7U30vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wtMS4xIC0tbGliZGlyPSR7bGliZGlyfSAkdGFyZ2V0Cit9CisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAorCisJb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorCisJIyBDcmVhdGUgU1NMIHN0cnVjdHVyZSBmb3IgcGFja2FnZXMgc3VjaCBhcyBjYS1jZXJ0aWZpY2F0ZXMgd2hpY2gKKwkjIGNvbnRhaW4gaGFyZC1jb2RlZCBwYXRocyB0byAvZXRjL3NzbC4gRGViaWFuIGRvZXMgdGhlIHNhbWUuCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2wKKwltdiAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9wcml2YXRlIFwKKwkgICAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAorCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKworCSMgQWx0aG91Z2ggYWJzb2x1dGUgc3ltbGlua3Mgd291bGQgYmUgT0sgZm9yIHRoZSB0YXJnZXQsIHRoZXkgYmVjb21lCisJIyBpbnZhbGlkIGlmIG5hdGl2ZSBvciBuYXRpdmVzZGsgYXJlIHJlbG9jYXRlZCBmcm9tIHNzdGF0ZS4KKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvY2VydHMnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzCisJbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKKwkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mIFwKKwkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzIFwKKwkgICAgU1NMX0NFUlRfRklMRT0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0LnBlbSBcCisJICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsLTEuMS9lbmdpbmVzCisKKwkjIEluc3RhbGwgYSBjdXN0b20gdmVyc2lvbiBvZiBjX3JlaGFzaCB0aGF0IGNhbiBoYW5kbGUgc3lzcm9vdHMgcHJvcGVybHkuCisJIyBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgZXhhbXBsZSB3aGVuIGluc3RhbGxpbmcgY2EtY2VydGlmaWNhdGVzIGR1cmluZworCSMgaW1hZ2UgY3JlYXRpb24uCisJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorCXNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworCW1rZGlyIC1wICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKKwlzZWQgJ3N8L3Vzci9saWIvc3NsL3wvdXNyL2xpYi9zc2wtMS4xL3xnJyAtaSAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL29wZW5zc2wuc2gKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJIyBQcnVuZSB0aGUgYnVpbGQgdHJlZQorCXJtIC1mICR7Qn0vZnV6ei8qLiogJHtCfS90ZXN0LyouKgorCisJY3AgJHtTfS9Db25maWd1cmUgJHtCfS9jb25maWdkYXRhLnBtICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtTfS9leHRlcm5hbCAke0J9L3Rlc3QgJHtTfS90ZXN0ICR7Qn0vZnV6eiAke1N9L3V0aWwgJHtCfS91dGlsICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIEZvciB0ZXN0X3NobGlibG9hZAorCWxuIC1zICR7bGliZGlyfS9saWJjcnlwdG8uc28uMS4xICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zbworCWxuIC1zICR7bGliZGlyfS9saWJzc2wuc28uMS4xICR7RH0ke1BURVNUX1BBVEh9L2xpYnNzbC5zbworCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXMgJHtiaW5kaXJ9L29wZW5zc2wgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWluc3RhbGwgLW02NDQgJHtTfS9hcHBzLyoucGVtICR7U30vYXBwcy8qLnNybCAke1N9L2FwcHMvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCWluc3RhbGwgLW03NTUgJHtCfS9hcHBzL0NBLnBsICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcworCWluc3RhbGwgLW03NTUgJHtCfS9lbmdpbmVzL29zc2x0ZXN0LnNvICR7RH0ke1BURVNUX1BBVEh9L2VuZ2luZXMKK30KKworIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiBNYWtlIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBSUkVDT01NRU5EUyBvbiB0aGlzIHBhY2thZ2UuIFRoaXMgd2lsbCBlbmFibGUgdGhlIGNvbmZpZ3VyYXRpb24KKyMgZmlsZSB0byBiZSBpbnN0YWxsZWQgZm9yIGJvdGggdGhlIG9wZW5zc2wtYmluIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBzaW5jZSB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBkZXBlbmRzIG9uIHRoZSBsaWJjcnlwdG8gcGFja2FnZS4KKworUEFDS0FHRVMgPSsgImxpYmNyeXB0byBsaWJzc2wgb3BlbnNzbC1jb25mICR7UE59LWVuZ2luZXMgJHtQTn0tbWlzYyIKKworRklMRVNfbGliY3J5cHRvID0gIiR7bGliZGlyfS9saWJjcnlwdG8ke1NPTElCU30iCitGSUxFU19saWJzc2wgPSAiJHtsaWJkaXJ9L2xpYnNzbCR7U09MSUJTfSIKK0ZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L2VuZ2luZXMtMS4xIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vc3NsLTEuMS9taXNjIgorRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9zc2wtMS4xLyoiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvb3BlbnNzbC5zaCIKKworQ09ORkZJTEVTX29wZW5zc2wtY29uZiA9ICIke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiIKKworUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCitSREVQRU5EU18ke1BOfS1iaW4gPSAicGVybCIKK1JERVBFTkRTXyR7UE59LW1pc2MgPSAicGVybCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJvcGVuc3NsLWJpbiBwZXJsIHBlcmwtbW9kdWxlcyBiYXNoIHB5dGhvbiIKKworUlBST1ZJREVTX29wZW5zc2wtY29uZiA9ICJvcGVuc3NsMTAtY29uZiIKK1JSRVBMQUNFU19vcGVuc3NsLWNvbmYgPSAib3BlbnNzbDEwLWNvbmYiCitSQ09ORkxJQ1RTX29wZW5zc2wtY29uZiA9ICJvcGVuc3NsMTAtY29uZiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvcHBwLTIuNC43LURFUy1vcGVuc3NsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvcHBwLTIuNC43LURFUy1vcGVuc3NsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1M2YyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2gKQEAgLTAsMCArMSw4NCBAQAorVXNlZCBvcGVuc3NsIGZvciB0aGUgREVTIGluc3RlYWQgb2YgdGhlIGxpYmNyeXB0IC8gZ2xpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBwcHAtMi40LjcvcHBwZC9NYWtlZmlsZS5saW51eAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBwcC0yLjQuNy5vcmlnL3BwcGQvTWFrZWZpbGUubGludXgKKysrKyBwcHAtMi40LjcvcHBwZC9NYWtlZmlsZS5saW51eAorQEAgLTM4LDcgKzM4LDcgQEAgTElCUyA9CisgIyBVbmNvbW1lbnQgdGhlIG5leHQgMiBsaW5lcyB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIE1pY3Jvc29mdCdzCisgIyBNUy1DSEFQIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sLiAgQWxzbywgZWRpdCBwbHVnaW5zL3JhZGl1cy9NYWtlZmlsZS5saW51eC4KKyBDSEFQTVM9eQorLVVTRV9DUllQVD15CisrI1VTRV9DUllQVD15CisgIyBEb24ndCB1c2UgTVNMQU5NQU4gdW5sZXNzIHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KKyAjTVNMQU5NQU49eQorICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBNUFBFLiAgQ0hBUE1TIChhYm92ZSkgbXVzdAorQEAgLTEzMiw3ICsxMzIsNyBAQCBlbmRpZgorIAorIGlmZGVmIE5FRURERVMKKyBpZm5kZWYgVVNFX0NSWVBUCistTElCUyAgICAgKz0gLWxkZXMgJChMSUJTKQorK0xJQlMgICAgICs9IC1sY3J5cHRvCisgZWxzZQorIENGTEFHUyAgICs9IC1EVVNFX0NSWVBUPTEKKyBlbmRpZgorSW5kZXg6IHBwcC0yLjQuNy9wcHBkL3BwcGNyeXB0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwcHAtMi40Ljcub3JpZy9wcHBkL3BwcGNyeXB0LmMKKysrKyBwcHAtMi40LjcvcHBwZC9wcHBjcnlwdC5jCitAQCAtNjQsNyArNjQsNyBAQCB1X2NoYXIgKmRlc19rZXk7CS8qIE9VVCA2NCBiaXQgREVTIGtleSB3CisgCWRlc19rZXlbN10gPSBHZXQ3Qml0cyhrZXksIDQ5KTsKKyAKKyAjaWZuZGVmIFVTRV9DUllQVAorLQlkZXNfc2V0X29kZF9wYXJpdHkoKGRlc19jYmxvY2sgKilkZXNfa2V5KTsKKysJREVTX3NldF9vZGRfcGFyaXR5KChERVNfY2Jsb2NrICopZGVzX2tleSk7CisgI2VuZGlmCisgfQorIAorQEAgLTE1OCwyNSArMTU4LDI1IEBAIHVfY2hhciAqY2xlYXI7CS8qIE9VVCA4IG9jdGV0cyAqLworIH0KKyAKKyAjZWxzZSAvKiBVU0VfQ1JZUFQgKi8KKy1zdGF0aWMgZGVzX2tleV9zY2hlZHVsZQlrZXlfc2NoZWR1bGU7Cisrc3RhdGljIERFU19rZXlfc2NoZWR1bGUJa2V5X3NjaGVkdWxlOworIAorIGJvb2wKKyBEZXNTZXRrZXkoa2V5KQorIHVfY2hhciAqa2V5OworIHsKKy0JZGVzX2NibG9jayBkZXNfa2V5OworKwlERVNfY2Jsb2NrIGRlc19rZXk7CisgCU1ha2VLZXkoa2V5LCBkZXNfa2V5KTsKKy0JZGVzX3NldF9rZXkoJmRlc19rZXksIGtleV9zY2hlZHVsZSk7CisrCURFU19zZXRfa2V5KCZkZXNfa2V5LCAma2V5X3NjaGVkdWxlKTsKKyAJcmV0dXJuICgxKTsKKyB9CisgCisgYm9vbAorLURlc0VuY3J5cHQoY2xlYXIsIGtleSwgY2lwaGVyKQorK0Rlc0VuY3J5cHQoY2xlYXIsIGNpcGhlcikKKyB1X2NoYXIgKmNsZWFyOwkvKiBJTiAgOCBvY3RldHMgKi8KKyB1X2NoYXIgKmNpcGhlcjsJLyogT1VUIDggb2N0ZXRzICovCisgeworLQlkZXNfZWNiX2VuY3J5cHQoKGRlc19jYmxvY2sgKiljbGVhciwgKGRlc19jYmxvY2sgKiljaXBoZXIsCistCSAgICBrZXlfc2NoZWR1bGUsIDEpOworKwlERVNfZWNiX2VuY3J5cHQoKERFU19jYmxvY2sgKiljbGVhciwgKERFU19jYmxvY2sgKiljaXBoZXIsCisrCSAgICAma2V5X3NjaGVkdWxlLCAxKTsKKyAJcmV0dXJuICgxKTsKKyB9CisgCitAQCAtMTg1LDggKzE4NSw4IEBAIERlc0RlY3J5cHQoY2lwaGVyLCBjbGVhcikKKyB1X2NoYXIgKmNpcGhlcjsJLyogSU4gIDggb2N0ZXRzICovCisgdV9jaGFyICpjbGVhcjsJLyogT1VUIDggb2N0ZXRzICovCisgeworLQlkZXNfZWNiX2VuY3J5cHQoKGRlc19jYmxvY2sgKiljaXBoZXIsIChkZXNfY2Jsb2NrICopY2xlYXIsCistCSAgICBrZXlfc2NoZWR1bGUsIDApOworKwlERVNfZWNiX2VuY3J5cHQoKERFU19jYmxvY2sgKiljaXBoZXIsIChERVNfY2Jsb2NrICopY2xlYXIsCisrCSAgICAma2V5X3NjaGVkdWxlLCAwKTsKKyAJcmV0dXJuICgxKTsKKyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcF8yLjQuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCmluZGV4IGE1Zjc2NGYuLjY0NGNkZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiCkBAIC00LDcgKzQsNyBAQAogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBIT01FUEFHRSA9ICJodHRwOi8vc2FtYmEub3JnL3BwcC8iCiBCVUdUUkFDS0VSID0gImh0dHA6Ly9wcHAuc2FtYmEub3JnL2NnaS1iaW4vcHBwLWJ1Z3MiCi1ERVBFTkRTID0gImxpYnBjYXAiCitERVBFTkRTID0gImxpYnBjYXAgb3BlbnNzbCB2aXJ0dWFsL2NyeXB0IgogTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIrICYgUEQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wcHBkL2NjcC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PWUyYzQzZmU2ZTgxZmY3N2Q4N2RjOWMyOTBhNDI0ZGVhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BwcGQvcGx1Z2lucy9wYXNzcHJvbXB0LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xMDttZDU9M2JjYmNkYmYwZTM2OWM5YTNlMGI4YzgyNzViMDY1ZDggXApAQCAtMzIsNiArMzIsNyBAQAogICAgICAgICAgICBmaWxlOi8vZml4LUNWRS0yMDE1LTMzMTAucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHBvZS1pbmNsdWRlLW5ldGluZXQtaW4uaC1iZWZvcmUtbGludXgtaW4uaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwcC1SZW1vdmUtdW5uZWVkZWQtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wcHAtMi40LjctREVTLW9wZW5zc2wucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXApAQCAtNDksNyArNTAsNyBAQAogIyBQYWNrYWdlIE1ha2VmaWxlIGNvbXB1dGVzIENGTEFHUywgcmVmZXJlbmNpbmcgQ09QVFMuCiAjIFR5cGljYWxseSBoYXJkLWNvZGVkIHRvICctTzIgLWcnIGluIHRoZSBNYWtlZmlsZSdzLgogIwotRVhUUkFfT0VNQUtFICs9ICcgQ09QVFM9IiR7Q0ZMQUdTfSAtSSR7U30vaW5jbHVkZSInCitFWFRSQV9PRU1BS0UgKz0gJyBDT1BUUz0iJHtDRkxBR1N9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vb3BlbnNzbCAtSSR7U30vaW5jbHVkZSInCiAKIGRvX2NvbmZpZ3VyZSAoKSB7CiAJb2VfcnVuY29uZgpAQCAtODAsNiArODEsMTAgQEAKIAljaG1vZCB1K3MgJHtEfSR7c2JpbmRpcn0vcHBwZAogfQogCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2wgKCkgeworCWluc3RhbGwgLURtIDA2NDQgJHtTfS9pbmNsdWRlL25ldC9wcHBfZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L25ldC9wcHBfZGVmcy5oCit9CisKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3BwcC9wYXAtc2VjcmV0cyAke3N5c2NvbmZkaXJ9L3BwcC9jaGFwLXNlY3JldHMgJHtzeXNjb25mZGlyfS9wcHAvb3B0aW9ucyIKIFBBQ0tBR0VTID0rICIke1BOfS1vYSAke1BOfS1vZSAke1BOfS1yYWRpdXMgJHtQTn0td2luYmluZCAke1BOfS1taW5jb25uICR7UE59LXBhc3N3b3JkICR7UE59LWwydHAgJHtQTn0tdG9vbHMiCiBGSUxFU18ke1BOfSAgICAgICAgPSAiJHtzeXNjb25mZGlyfSAke2JpbmRpcn0gJHtzYmluZGlyfS9jaGF0ICR7c2JpbmRpcn0vcHBwZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3BwcEAuc2VydmljZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjIuYmIKaW5kZXggNjM3M2RkNC4uOTI3ZGY3NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NvY2F0L3NvY2F0XzEuNy4zLjIuYmIKQEAgLTcsMTEgKzcsMTAgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIHJlYWRsaW5lIgogCi1MSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKK0xJQ0VOU0UgPSAiR1BMLTIuMCstd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjU3O2VuZGxpbmU9Mjg3O21kNT0zMzhjMDVlYWRkMDEzODcyYWJiMWQ2ZTE5OGUxMGEzZiIKIAotCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC9kb3dubG9hZC9zb2NhdC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLWZpeC1mb3ItcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kZWZpbmUtTkVUREJfSU5URVJOQUwtdG8tMS1pZi1ub3QtYXZhaWxhYmxlLnBhdGNoIFwKQEAgLTI2LDkgKzI1LDIzIEBACiBFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciIKIAogRVhUUkFfT0VDT05GICs9ICJhY19jdl9oYXZlX3pfbW9kaWZpZXI9eWVzIFwKLSAgICAgICAgYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBcCisgICAgICAgICAgICAgICAgIHNjX2N2X3Rlcm1pb3NfaXNwZWVkPW5vIFwKKyAgICAgICAgICAgICAgICAgJHtURVJNQklUU19TSElGVFN9IFwKICIKIAorVEVSTUJJVFNfU0hJRlRTID89ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9OSBcCisgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTEgXAorICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9NCIKKworVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGMgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCisKK1RFUk1CSVRTX1NISUZUU19wb3dlcnBjNjQgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgorCiBQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInRjcC13cmFwcGVycyIKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS1lbmFibGUtbGlid3JhcCwtLWRpc2FibGUtbGlid3JhcCx0Y3Atd3JhcHBlcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvYXZvaWRfc3RyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvYXZvaWRfc3RyaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNGUyNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzL2F2b2lkX3N0cmlwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotd2lyZWxlc3NfdG9vbHM6IEF2b2lkIHN0cmlwcGluZyBpd211bHRpY2FsbAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQotICBUaGUgcmVtb3ZlZCBjb2RlIHdhcyBmcm9tIHVwc3RyZWFtLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLXVyIHdpcmVsZXNzX3Rvb2xzLjI5Lm9yaWcvTWFrZWZpbGUgd2lyZWxlc3NfdG9vbHMuMjkvTWFrZWZpbGUKLS0tLSB3aXJlbGVzc190b29scy4yOS5vcmlnL01ha2VmaWxlCTIwMTEtMDYtMTggMTE6MzU6MTIuMTgzOTA3NDUzIC0wNTAwCi0rKysgd2lyZWxlc3NfdG9vbHMuMjkvTWFrZWZpbGUJMjAxMS0wNi0xOCAxMTozODowOS45OTU5MDc5ODUgLTA1MDAKLUBAIC0xMzUsOSArMTM1LDggQEAKLSAKLSBtYWNhZGRyOiBtYWNhZGRyLm8gJChJV0xJQikKLSAKLS0jIEFsd2F5cyBkbyBzeW1ib2wgc3RyaXBwaW5nIGhlcmUKLSBpd211bHRpY2FsbDogaXdtdWx0aWNhbGwubwotLQkkKENDKSAkKExERkxBR1MpIC1XbCwtcyAkKFhDRkxBR1MpIC1vICRAICReICQoTElCUykKLSsJJChDQykgJChMREZMQUdTKSAkKFNUUklQRkxBR1MpICQoWENGTEFHUykgLW8gJEAgJF4gJChMSUJTKQotIAotICMgSXQncyBhIGtpbmQgb2YgbWFnaWMuLi4KLSB3aXJlbGVzcy5oOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzL2xkZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMwZDhjYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXdpcmVsZXNzLXRvb2xzOiBSZW1vdmUgUUEgd2FybmluZzogTm8gR05VX0hBU0ggaW4gdGhlIGVsZiBiaW5hcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KLSAgVXNlZnVsIHdpdGhpbiBiaXRiYWtlIGVudmlyb25tZW50IG9ubHkuCi0KLVNpZ25lZC1vZmYtYnk6IE11aGFtbWFkIFNoYWtlZWwgPG11aGFtbWFkX3NoYWtlZWxAbWVudG9yLmNvbT4KLQotLS0tCi0gTWFrZWZpbGUgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSB3aXJlbGVzc190b29scy4yOS5vcmlnL01ha2VmaWxlCi0rKysgd2lyZWxlc3NfdG9vbHMuMjkvTWFrZWZpbGUKLUBAIC0xNDQsNyArMTQ0LDcgQEAgd2lyZWxlc3MuaDoKLSAKLSAjIENvbXBpbGF0aW9uIG9mIHRoZSBkeW5hbWljIGxpYnJhcnkKLSAkKERZTkFNSUMpOiAkKE9CSlM6Lm89LnNvKQotLQkkKENDKSAtc2hhcmVkIC1vICRAIC1XbCwtc29uYW1lLCRAICQoU1RSSVBGTEFHUykgJChMSUJTKSAtbGMgJF4KLSsJJChDQykgLXNoYXJlZCAtbyAkQCAtV2wsLXNvbmFtZSwkQCAkKExERkxBR1MpICQoU1RSSVBGTEFHUykgJChMSUJTKSAtbGMgJF4KLSAKLSAjIENvbXBpbGF0aW9uIG9mIHRoZSBzdGF0aWMgbGlicmFyeQotICQoU1RBVElDKTogJChPQkpTOi5vPS5zbykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9tYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvbWFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTc1N2RhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93aXJlbGVzcy10b29scy93aXJlbGVzcy10b29scy9tYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLUluZGV4OiB3aXJlbGVzc190b29scy4zMC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdpcmVsZXNzX3Rvb2xzLjMwLm9yaWcvTWFrZWZpbGUJMjAxNC0wMi0wMSAwMDoyMTowNC4xNDg0NjMzODIgLTA4MDAKLSsrKyB3aXJlbGVzc190b29scy4zMC9NYWtlZmlsZQkyMDE0LTAyLTAxIDAwOjIzOjM1LjQ0ODA3MjI3OSAtMDgwMAotQEAgLTc2LDcgKzc2LDcgQEAKLSBJTlNUQUxMX0RJUj0gJChQUkVGSVgpL3NiaW4KLSBJTlNUQUxMX0xJQj0gJChQUkVGSVgpL2xpYgotIElOU1RBTExfSU5DPSAkKFBSRUZJWCkvaW5jbHVkZQotLUlOU1RBTExfTUFOPSAkKFBSRUZJWCkvbWFuCi0rSU5TVEFMTF9NQU49ICQoUFJFRklYKS9zaGFyZS9tYW4KLSAKLSAjIFZhcmlvdXMgY29tbWFuZHMKLSBSTSA9IHJtIC1mCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHMvcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjJjM2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotV2hlbiAvZXRjL2xkLnNvLmNhY2hlIGlzIHdyaXRlYWJsZSBieSB1c2VyIHJ1bm5pbmcgYml0YmFrZSB0aGVuIGl0IGNyZWF0ZXMgaW52YWxpZCBjYWNoZSAKLShpbiBteSBjYXNlIGxpYnN0ZGMrKy5zbyBjYW5ub3QgYmUgZm91bmQgYWZ0ZXIgYnVpbGRpbmcgemxpYigtbmF0aXZlKSBhbmQgSSBoYXZlIHRvIGNhbGwgCi10b3VjaCAqL2xpYnN0ZGMrKy5zbyAmJiAvc2Jpbi9sZGNvbmZpZyB0byBmaXggaXQuCi0KLVNvIHJlbW92ZSBsZGNvbmZpZyBjYWxsIGZyb20gbWFrZSBpbnN0YWxsLWxpYnMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXNhYmxlIGZlYXR1cmVdCi0KLWRpZmYgLXVOciB3aXJlbGVzc190b29scy4yOS5vcmlnL01ha2VmaWxlIHdpcmVsZXNzX3Rvb2xzLjI5L01ha2VmaWxlCi0tLS0gd2lyZWxlc3NfdG9vbHMuMjkub3JpZy9NYWtlZmlsZQkyMDA3LTA5LTE4IDAxOjU2OjQ2LjAwMDAwMDAwMCArMDIwMAotKysrIHdpcmVsZXNzX3Rvb2xzLjI5L01ha2VmaWxlCTIwMTItMDItMTUgMjA6NDY6NDEuNzgwNzYzNTE0ICswMTAwCi1AQCAtMTYzLDcgKzE2Myw2IEBACi0gCWluc3RhbGwgLW0gNzU1ICQoRFlOQU1JQykgJChJTlNUQUxMX0xJQikKLSAJbG4gLXNmbiAkKERZTkFNSUMpICQoSU5TVEFMTF9MSUIpLyQoRFlOQU1JQ19MSU5LKQotIAlAZWNobyAiKioqIERvbid0IGZvcmdldCB0byBhZGQgJChJTlNUQUxMX0xJQikgdG8gL2V0Yy9sZC5zby5jb25mLCBhbmQgcnVuIGxkY29uZmlnIGFzIHJvb3QuICoqKiIKLS0JQCQoTERDT05GSUcpIHx8IGVjaG8gIioqKiBDb3VsZCBub3QgcnVuIGxkY29uZmlnICEgKioqIgotIAotICMgSW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnkKLSBpbnN0YWxsLXN0YXRpYzo6ICQoU1RBVElDKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dpcmVsZXNzLXRvb2xzL3dpcmVsZXNzLXRvb2xzXzMwLnByZTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHNfMzAucHJlOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEzNDIwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3MtdG9vbHNfMzAucHJlOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIHRoZSBMaW51eCBTdGFuZGFyZCBXaXJlbGVzcyBFeHRlbnNpb24gU3Vic3lzdGVtIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9oZXdsZXR0cGFja2FyZC5naXRodWIuaW8vd2lyZWxlc3MtdG9vbHMvVG9vbHMuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiAoTEdQTHYyLjEgfCBNUEwtMS4xIHwgQlNEKSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLQkJCWZpbGU6Ly9pd2NvbmZpZy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTI7bWQ1PWNmNzEwZWIxNzk1YzM3NmViMTBlYTRmZjA0NjQ5Y2FmIFwKLQkJCWZpbGU6Ly9pd2V2ZW50LmM7YmVnaW5saW5lPTU5O2VuZGxpbmU9NzI7bWQ1PWQ2NmExMDAyNmQ0Mzk0ZjBhNWIxYzU1ODdiY2U0NTM3IFwKLQkJCWZpbGU6Ly9zYW1wbGVfZW5jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00O21kNT04MzgzNzJiZTA3ODc0MjYwYjU2NmJhZTJmNmVkMzNiNiIKLVNFQ1RJT04gPSAiYmFzZSIKLVBFID0gIjEiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9oZXdsZXR0cGFja2FyZC5naXRodWIuaW8vd2lyZWxlc3MtdG9vbHMvd2lyZWxlc3NfdG9vbHMuJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS5sZGNvbmZpZy5jYWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9zdHJpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2E5MWJhN2M3ZWZmOWJmZmY2OTI2YjFhMzRhNDY5N2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJkOWM1Yzk4YWJmMWZkZDExODkyYWMyZjhhNTY3Mzc1NDRmZTEwMWUxYmUyN2M2MjQxYTU2NDk0OGYzNGM2MyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vaGV3bGV0dHBhY2thcmQuZ2l0aHViLmlvL3dpcmVsZXNzLXRvb2xzL1Rvb2xzLmh0bWwiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ3aXJlbGVzc190b29sc1wuKD9QPHB2ZXI+KFxkKykoXC4uKnwpKVwudGFyXC5neiIKLQotUyA9ICIke1dPUktESVJ9L3dpcmVsZXNzX3Rvb2xzLjMwIgotCi1DRkxBR1MgPSsgIi1JJHtTfSIKLUVYVFJBX09FTUFLRSA9ICItZSAnQlVJTERfU0hBUkVEPXknIFwKLQkJJ0lOU1RBTExfRElSPSR7RH0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJJ0lOU1RBTExfTElCPSR7RH0ke2xpYmRpcn0nIFwKLQkJJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9JyBcCi0JCSdJTlNUQUxMX01BTj0ke0R9JHttYW5kaXJ9JyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlIGFsbCBsaWJpdy5hCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBQUkVGSVg9JHtEfSBpbnN0YWxsLWl3bXVsdGljYWxsIGluc3RhbGwtZHluYW1pYyBpbnN0YWxsLW1hbiBpbnN0YWxsLWhkcgotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgaWZyZW5hbWUgJHtEfSR7c2JpbmRpcn0vaWZyZW5hbWUKLX0KLQotUEFDS0FHRVMgPSAibGliaXcgbGliaXctZGV2IGxpYml3LWRvYyBpZnJlbmFtZS1kb2MgaWZyZW5hbWUgJHtQTn0gJHtQTn0tZG9jICR7UE59LWRiZyIKLQotRklMRVNfbGliaXcgPSAiJHtsaWJkaXJ9Lyouc28uKiIKLUZJTEVTX2xpYml3LWRldiA9ICIke2xpYmRpcn0vKi5hICR7bGliZGlyfS8qLnNvICR7aW5jbHVkZWRpcn0iCi1GSUxFU19saWJpdy1kb2MgPSAiJHttYW5kaXJ9L21hbjciCi1GSUxFU19pZnJlbmFtZSA9ICIke3NiaW5kaXJ9L2lmcmVuYW1lIgotRklMRVNfaWZyZW5hbWUtZG9jID0gIiR7bWFuZGlyfS9tYW44L2lmcmVuYW1lLjggJHttYW5kaXJ9L21hbjUvaWZ0YWIuNSIKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke3NiaW5kaXJ9L2l3KiAke2Jhc2Vfc2JpbmRpcn0gJHtiYXNlX2JpbmRpcn0gJHtzeXNjb25mZGlyfS9uZXR3b3JrIgotRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCmluZGV4IGEwNjIwMjguLjllNDI4M2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQpAQCAtMjAsMTQgKzIwLDEyIEBACiAJdW5zZXQgaQogZmkKIAotaWYgY29tbWFuZCAtdiByZXNpemUgPi9kZXYvbnVsbCAmJiBjb21tYW5kIC12IHR0eSA+L2Rldi9udWxsOyB0aGVuCi0JIyBNYWtlIHN1cmUgd2UgYXJlIG9uIGEgc2VyaWFsIGNvbnNvbGUgKGkuZS4gdGhlIGRldmljZSB1c2VkIHN0YXJ0cyB3aXRoCi0JIyAvZGV2L3R0eVtBLXpdKSwgb3RoZXJ3aXNlIHdlIGNvbmZ1c2UgZS5nLiB0aGUgZWNsaXBzZSBsYXVuY2hlciB3aGljaAotCSMgdHJpZXMgZG8gdXNlIHNzaAotCWNhc2UgJCh0dHkpIGluCi0JCS9kZXYvdHR5W0Etel0qKSByZXNpemUgPi9kZXYvbnVsbDs7Ci0JZXNhYwotZmkKKyMgTWFrZSBzdXJlIHdlIGFyZSBvbiBhIHNlcmlhbCBjb25zb2xlIChpLmUuIHRoZSBkZXZpY2UgdXNlZCBzdGFydHMgd2l0aAorIyAvZGV2L3R0eVtBLXpdKSwgb3RoZXJ3aXNlIHdlIGNvbmZ1c2UgZS5nLiB0aGUgZWNsaXBzZSBsYXVuY2hlciB3aGljaCB0cmllcyBkbworIyB1c2Ugc3NoCitjYXNlICQodHR5IDI+L2Rldi9udWxsKSBpbgorCS9kZXYvdHR5W0Etel0qKSBbIC14IEBCSU5ESVJAL3Jlc2l6ZSBdICYmIEBCSU5ESVJAL3Jlc2l6ZSA+L2Rldi9udWxsOzsKK2VzYWMKIAogZXhwb3J0IFBBVEggUFMxIE9QSUVESVIgUVBFRElSIFFURElSIEVESVRPUiBURVJNCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgppbmRleCBhNjk2M2JhLi42ZTc1NjUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiCkBAIC0xMjUsNiArMTI1LDcgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS91c2JkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdXNiZAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Byb2ZpbGUgJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZQogCXNlZCAtaSAncyNST09USE9NRSMke1JPT1RfSE9NRX0jJyAke0R9JHtzeXNjb25mZGlyfS9wcm9maWxlCisgICAgICAgIHNlZCAtaSAncyNAQklORElSQCMke2JpbmRpcn0jZycgJHtEfSR7c3lzY29uZmRpcn0vcHJvZmlsZQogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NoZWxscyAke0R9JHtzeXNjb25mZGlyfS9zaGVsbHMKIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zaGFyZS9kb3QucHJvZmlsZSAke0R9JHtzeXNjb25mZGlyfS9za2VsLy5wcm9maWxlCiAJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2hhcmUvZG90LmJhc2hyYyAke0R9JHtzeXNjb25mZGlyfS9za2VsLy5iYXNocmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gtaW5pdHRhYl8xLjI5LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LWluaXR0YWJfMS4yNy4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC1pbml0dGFiXzEuMjkuMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCmluZGV4IGYxYjA5ZDkuLjA5NDMzZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKQEAgLTMsNyArMyw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0IgogQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvIgogCi1ERVBFTkRTICs9ICJrZXJuLXRvb2xzLW5hdGl2ZSIKK0RFUEVORFMgKz0gImtlcm4tdG9vbHMtbmF0aXZlIHZpcnR1YWwvY3J5cHQiCiAKICMgYnppcDIgYXBwbGV0IGluIGJ1c3lib3ggaXMgYmFzZWQgb24gbGlnaHRseS1tb2RpZmllZCBiemlwMiBzb3VyY2UKICMgdGhlIEdQTCBpcyB2ZXJzaW9uIDIgb25seQpAQCAtNDEsMTIgKzQxLDEzIEBACiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXN5c2xvZyIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1zeXNsb2cgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1NSQ19VUkknLCAnZmlsZTovL3N5c2xvZy5jZmcnLCAnYnVzeWJveC1zeXNsb2cuc2VydmljZScsICcnLCBkKX0iCiAKK1JERVBFTkRTXyR7UE59LXN5c2xvZyA9ICJidXN5Ym94IgogQ09ORkZJTEVTXyR7UE59LXN5c2xvZyA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYiCiBSQ09ORkxJQ1RTXyR7UE59LXN5c2xvZyA9ICJyc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKIAogQ09ORkZJTEVTXyR7UE59LW1kZXYgPSAiJHtzeXNjb25mZGlyfS9tZGV2LmNvbmYiCiAKLVJSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LXN5c2xvZyAke1BOfS11ZGhjcGMiCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS11ZGhjcGMiCiAKIFJERVBFTkRTXyR7UE59ID0gIiR7QFsiIiwgImJ1c3lib3gtaW5pdHRhYiJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSIKIApAQCAtMTE2LDEzICsxMTcsMTMgQEAKIAkJJHtTfS8uY29uZmlnCiAJc2VkIC1pIC1lICcke2NvbmZpZ21hbmdsZX0nICR7U30vLmNvbmZpZwogCWlmIHRlc3QgJHtET19JUHY0fSAtZXEgMCAmJiB0ZXN0ICR7RE9fSVB2Nn0gLWVxIDA7IHRoZW4KLQkgICMgZGlzYWJsZSBuZXR3b3JraW5nIGFwcGxldHMKLQkgIG12ICR7U30vLmNvbmZpZyAke1N9Ly5jb25maWcub2UtdG1wCi0JICBhd2sgJ0JFR0lOe25ldD0wfQotCSAgL14jIE5ldHdvcmtpbmcgVXRpbGl0aWVzL3tuZXQ9MX0KLQkgIC9eIyQve2lmKG5ldCl7bmV0PW5ldCsxfX0KLQkgIHtpZihuZXQ9PTImJiQwICF+IC9eIy8mJiQxKXtwcmludCgiIyAiJDEiIGlzIG5vdCBzZXQiKX1lbHNle3ByaW50fX0nIFwKLQkJICAke1N9Ly5jb25maWcub2UtdG1wID4gJHtTfS8uY29uZmlnCisJCSMgZGlzYWJsZSBuZXR3b3JraW5nIGFwcGxldHMKKwkJbXYgJHtTfS8uY29uZmlnICR7U30vLmNvbmZpZy5vZS10bXAKKwkJYXdrICdCRUdJTntuZXQ9MH0KKwkJL14jIE5ldHdvcmtpbmcgVXRpbGl0aWVzL3tuZXQ9MX0KKwkJL14jJC97aWYobmV0KXtuZXQ9bmV0KzF9fQorCQl7aWYobmV0PT0yJiYkMCAhfiAvXiMvJiYkMSl7cHJpbnQoIiMgIiQxIiBpcyBub3Qgc2V0Iil9ZWxzZXtwcmludH19JyBcCisJCSR7U30vLmNvbmZpZy5vZS10bXAgPiAke1N9Ly5jb25maWcKIAlmaQogCXNlZCAtaSAncy9DT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtbiIvQ09ORklHX0lGVVBET1dOX1VESENQQ19DTURfT1BUSU9OUz0iLVIgLWIiLycgJHtTfS8uY29uZmlnCiAJc2VkIC1pICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnICR7U30vLmNvbmZpZwpAQCAtMTUwLDcgKzE1MSw3IEBACiAJCWV4cG9ydCBLQ09ORklHX05PVElNRVNUQU1QPTEKIAlmaQogCWlmIFsgIiR7QlVTWUJPWF9TUExJVF9TVUlEfSIgPSAiMSIgLWEgeGBncmVwICJDT05GSUdfRkVBVFVSRV9JTkRJVklEVUFMPXkiIC5jb25maWdgID0geCBdOyB0aGVuCi0JIyBzcGxpdCB0aGUgLmNvbmZpZyBpbnRvIHR3byBwYXJ0cywgYW5kIG1ha2UgdHdvIGJ1c3lib3ggYmluYXJpZXMKKwkJIyBzcGxpdCB0aGUgLmNvbmZpZyBpbnRvIHR3byBwYXJ0cywgYW5kIG1ha2UgdHdvIGJ1c3lib3ggYmluYXJpZXMKIAkJaWYgWyAtZSAuY29uZmlnLm9yaWcgXTsgdGhlbgogCQkJIyBOZWVkIHRvIGd1YXJkIGFnYWluIGFuIGludGVycnVwdGVkIGRvX2NvbXBpbGUgLSByZXN0b3JlIGFueSBiYWNrdXAKIAkJCWNwIC5jb25maWcub3JpZyAuY29uZmlnCkBAIC0yMDksNiArMjEwLDEwIEBACiAJc2VkIC1pICJzOl4vdXNyL2Jpbi86QklORElSLzoiIGJ1c3lib3gubGlua3MqCiAJc2VkIC1pICJzOl4vdXNyL3NiaW4vOlNCSU5ESVIvOiIgYnVzeWJveC5saW5rcyoKIAorCSMgTW92ZSBhcmNoL2xpbmsgdG8gQklORElSIHRvIG1hdGNoIGNvcmV1dGlscworCXNlZCAtaSAiczpeQkFTRV9CSU5ESVIvYXJjaDpCSU5ESVIvYXJjaDoiIGJ1c3lib3gubGlua3MqCisJc2VkIC1pICJzOl5CQVNFX0JJTkRJUi9saW5rOkJJTkRJUi9saW5rOiIgYnVzeWJveC5saW5rcyoKKwogCXNlZCAtaSAiczpeQkFTRV9CSU5ESVIvOiR7YmFzZV9iaW5kaXJ9LzoiIGJ1c3lib3gubGlua3MqCiAJc2VkIC1pICJzOl5CQVNFX1NCSU5ESVIvOiR7YmFzZV9zYmluZGlyfS86IiBidXN5Ym94LmxpbmtzKgogCXNlZCAtaSAiczpeQklORElSLzoke2JpbmRpcn0vOiIgYnVzeWJveC5saW5rcyoKQEAgLTI1MCw4ICsyNTUsNyBAQAogCQkJbG4gLXNmIGJ1c3lib3ggJHtEfSR7YmFzZV9iaW5kaXJ9L2J1c3lib3gubm9zdWlkCiAJCWZpCiAJZWxzZQotCQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfSAke0R9JHtiYXNlX3NiaW5kaXJ9Ci0JCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfSAke0R9JHtiaW5kaXJ9ICR7RH0ke3NiaW5kaXJ9CisJCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9ICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfQogCQljYXQgYnVzeWJveC5saW5rcyB8IHdoaWxlIHJlYWQgRklMRTsgZG8KIAkJCU5BTUU9YGJhc2VuYW1lICIkRklMRSJgCiAJCQlpbnN0YWxsIC1tIDA3NTUgIjBfbGliLyROQU1FIiAiJHtEfSRGSUxFLiR7QlBOfSIKQEAgLTI3NSw3NyArMjc5LDc2IEBACiAJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLXN0YXJ0dXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mCiAJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKIAlmaQotCWlmIGdyZXAgIkNPTkZJR19DUk9ORD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfQ1JPTkQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2J1c3lib3gtY3JvbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCiAJZmkKLQlpZiBncmVwICJDT05GSUdfSFRUUEQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJaWYgZ3JlcCAtcSAiQ09ORklHX0hUVFBEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9idXN5Ym94LWh0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KIAkJaW5zdGFsbCAtZCAke0R9L3Nydi93d3cKIAlmaQotCWlmIGdyZXAgIkNPTkZJR19VREhDUEQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJaWYgZ3JlcCAtcSAiQ09ORklHX1VESENQRD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vYnVzeWJveC11ZGhjcGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCWZpCi0JaWYgZ3JlcCAiQ09ORklHX0hXQ0xPQ0s9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJaWYgZ3JlcCAtcSAiQ09ORklHX0hXQ0xPQ0s9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2h3Y2xvY2suc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCWZpCi0JaWYgZ3JlcCAiQ09ORklHX1VESENQQz15IiAke0J9Ly5jb25maWc7IHRoZW4KKwlpZiBncmVwIC1xICJDT05GSUdfVURIQ1BDPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkaGNwYy5kCiAJCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vdWRoY3BjCiAJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NpbXBsZS5zY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vdWRoY3BjLmQvNTBkZWZhdWx0CiAJCXNlZCAtaSAiczovU0JJTl9ESVIvOiR7YmFzZV9zYmluZGlyfS86IiAke0R9JHtzeXNjb25mZGlyfS91ZGhjcGMuZC81MGRlZmF1bHQKIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGVmYXVsdC5zY3JpcHQgJHtEfSR7ZGF0YWRpcn0vdWRoY3BjL2RlZmF1bHQuc2NyaXB0CiAJZmkKLQlpZiBncmVwICJDT05GSUdfSU5FVEQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJaWYgZ3JlcCAtcSAiQ09ORklHX0lORVREPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgogCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbmV0ZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvaW5ldGQuJHtCUE59CiAJCXNlZCAtaSAiczovdXNyL3NiaW4vOiR7c2JpbmRpcn0vOiIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2luZXRkLiR7QlBOfQogCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmV0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9LwogCWZpCi0gICAgICAgIGlmIGdyZXAgIkNPTkZJR19NREVWPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotICAgICAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWRldiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbWRldgotICAgICAgICAgICAgICAgaWYgZ3JlcCAiQ09ORklHX0ZFQVRVUkVfTURFVl9DT05GPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L21kZXYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9tZGV2LmNvbmYKLSAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9tZGV2Ci0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmQtdG91Y2hzY3JlZW4uc2ggJHtEfSR7c3lzY29uZmRpcn0vbWRldgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tZGV2LW1vdW50LnNoICR7RH0ke3N5c2NvbmZkaXJ9L21kZXYKLSAgICAgICAgICAgICAgIGZpCisJaWYgZ3JlcCAtcSAiQ09ORklHX01ERVY9eSIgJHtCfS8uY29uZmlnOyB0aGVuCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21kZXYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21kZXYKKwkJaWYgZ3JlcCAiQ09ORklHX0ZFQVRVUkVfTURFVl9DT05GPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9tZGV2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbWRldi5jb25mCisJCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21kZXYKKwkJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmQtdG91Y2hzY3JlZW4uc2ggJHtEfSR7c3lzY29uZmRpcn0vbWRldgorCQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWRldi1tb3VudC5zaCAke0R9JHtzeXNjb25mZGlyfS9tZGV2CisJCWZpCiAJZmkKLSAgICAgICAgaWYgZ3JlcCAiQ09ORklHX0lOSVQ9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzc3ICR7V09SS0RJUn0vcmNTICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9yY1MKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NzcgJHtXT1JLRElSfS9yY0sgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JjSwotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3J1bmxldmVsICR7RH0ke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwKLSAgICAgICAgZmkKKwlpZiBncmVwIC1xICJDT05GSUdfSU5JVD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNzc3ICR7V09SS0RJUn0vcmNTICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9yY1MKKwkJaW5zdGFsbCAtRCAtbSAwNzc3ICR7V09SS0RJUn0vcmNLICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9yY0sKKwlmaQogCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpZiBncmVwIC1xICJDT05GSUdfS0xPR0Q9eSIgJHtCfS8uY29uZmlnOyB0aGVuCi0gICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgICAgICBzZWQgJ3MsQGJhc2Vfc2JpbmRpckAsJHtiYXNlX3NiaW5kaXJ9LGcnIDwgJHtXT1JLRElSfS9idXN5Ym94LWtsb2dkLnNlcnZpY2UuaW4gXAotICAgICAgICAgICAgPiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9idXN5Ym94LWtsb2dkLnNlcnZpY2UKLSAgICAgICAgZmkKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWlmIGdyZXAgLXEgIkNPTkZJR19LTE9HRD15IiAke0J9Ly5jb25maWc7IHRoZW4KKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwkJCXNlZCAncyxAYmFzZV9zYmluZGlyQCwke2Jhc2Vfc2JpbmRpcn0sZycgPCAke1dPUktESVJ9L2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCisJCQk+ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gta2xvZ2Quc2VydmljZQorCQlmaQogCi0gICAgICAgIGlmIGdyZXAgLXEgIkNPTkZJR19TWVNMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICAgICAgc2VkICdzLEBiYXNlX3NiaW5kaXJALCR7YmFzZV9zYmluZGlyfSxnJyA8ICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCi0JCT4gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYnVzeWJveC1zeXNsb2cuc2VydmljZQotICAgICAgICAgICAgaWYgIFsgISAtZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9idXN5Ym94LWtsb2dkLnNlcnZpY2UgXSA7IHRoZW4KLSAgICAgICAgICAgICAgICBzZWQgLWkgJy9rbG9nL2QnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBpZiBbIC1mICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBdIDsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2J1c3lib3gtc3lzbG9nCi0gICAgICAgICAgICBmaQotICAgICAgICBmaQotICAgIGZpCisJCWlmIGdyZXAgLXEgIkNPTkZJR19TWVNMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgorCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQkJc2VkICdzLEBiYXNlX3NiaW5kaXJALCR7YmFzZV9zYmluZGlyfSxnJyA8ICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuc2VydmljZS5pbiBcCisJCQk+ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2J1c3lib3gtc3lzbG9nLnNlcnZpY2UKKwkJCWlmICBbICEgLWUgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vYnVzeWJveC1rbG9nZC5zZXJ2aWNlIF0gOyB0aGVuCisJCQkJc2VkIC1pICcva2xvZy9kJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlCisJCQlmaQorCQkJaWYgWyAtZiAke1dPUktESVJ9L2J1c3lib3gtc3lzbG9nLmRlZmF1bHQgXSA7IHRoZW4KKwkJCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKwkJCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9idXN5Ym94LXN5c2xvZy5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvYnVzeWJveC1zeXNsb2cKKwkJCWZpCisJCWZpCisJZmkKIAotICAgICMgUmVtb3ZlIHRoZSBzeXN2aW5pdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHN5c3RlbWQgc3lzdGVtcyB0byBhdm9pZCBjb25mdXNpb24KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mCi0gICAgZmkKKwkjIFJlbW92ZSB0aGUgc3lzdmluaXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlIGZvciBzeXN0ZW1kIHN5c3RlbXMgdG8gYXZvaWQgY29uZnVzaW9uCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYKKwlmaQogfQogCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICAgICAgY3AgLXIgJHtCfS90ZXN0c3VpdGUgJHtEfSR7UFRFU1RfUEFUSH0vCi0gICAgICAgIGNwICR7Qn0vLmNvbmZpZyAgICAgICR7RH0ke1BURVNUX1BBVEh9LwotICAgICAgICBsbiAtcyAvYmluL2J1c3lib3ggICAke0R9JHtQVEVTVF9QQVRIfS9idXN5Ym94CisJY3AgLXIgJHtCfS90ZXN0c3VpdGUgJHtEfSR7UFRFU1RfUEFUSH0vCisJY3AgJHtCfS8uY29uZmlnICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vCisJbG4gLXMgL2Jpbi9idXN5Ym94ICAgJHtEfSR7UFRFU1RfUEFUSH0vYnVzeWJveAogfQogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKQEAgLTM2OCw3ICszNzEsMTAgQEAKICAgICAgICAgICAgICMgTWF0Y2ggY29yZXV0aWxzCiAgICAgICAgICAgICBpZiBhbHRfbmFtZSA9PSAnWyc6CiAgICAgICAgICAgICAgICAgYWx0X25hbWUgPSAnbGJyYWNrZXQnCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMnICUgKHBuKSwgJyAnICsgYWx0X25hbWUpCisgICAgICAgICAgICBpZiBhbHRfbmFtZSA9PSAna2xvZ2QnIG9yIGFsdF9uYW1lID09ICdzeXNsb2dkJzoKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMtc3lzbG9nJyAlIChwbiksICcgJyArIGFsdF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignQUxURVJOQVRJVkVfJXMnICUgKHBuKSwgJyAnICsgYWx0X25hbWUpCiAgICAgICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIGFsdF9uYW1lLCBhbHRfbGlua19uYW1lKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoJyVzJXMnICUgKGR2YXIsIHRhcmdldCkpOgogICAgICAgICAgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgYWx0X25hbWUsIHRhcmdldCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDExLTUzMjUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxMS01MzI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwOTI2MTA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDExLTUzMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0ODEgKzAsMCBAQAotYnVzeWJveC0xLjI3LjI6IEZpeCBDVkUtMjAxMS01MzI1Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9idWdzLmJ1c3lib3gubmV0L3Nob3dfYnVnLmNnaT9pZD04NDExCi0KLWxpYmFyY2hpdmU6IGRvIG5vdCBleHRyYWN0IHVuc2FmZSBzeW1saW5rcwotCi1QcmV2ZW50IHVuc2FmZSBsaW5rcyBleHRyYWN0aW5nIHVubGVzcyBlbnYgdmFyaWFibGUgJEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEKLWlzIG5vdCBzZXQuIFVudGFycmluZyBmaWxlIHdpdGggLUMgREVTVERJUiBwYXJhbWV0ZXIgY291bGQgYmUgZXh0cmFjdGVkIHdpdGgKLXVud2FudGVkIHN5bWxpbmtzLiBUaGlzIGRvZXNuJ3QgZmVlbCByaWdodCwgYW5kIElJUkMgR05VIHRhciBkb2Vzbid0IGRvIHRoYXQuCi1JbmNsdWRlIG5lY2Vzc2FyeSBjaGFuZ2VzIGZyb20gcHJldmlvdXMgY29tbWl0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWJjOWJiZWIyYjgxMDAxZTg3MzFjZDJhZTUwMWM4ZmNjYzhkODdjYzddCi1DVkU6IENWRS0yMDExLTUzMjUKLWJ1ZzogODQxMQotU2lnbmVkLW9mZi1ieTogUmFkb3ZhbiBTY2FzbnkgPHJhZG92YW4uc2Nhc255QHNpZW1lbnMuY29tPgotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL0tidWlsZC5zcmMgYi9hcmNoaXZhbC9saWJhcmNoaXZlL0tidWlsZC5zcmMKLWluZGV4IDk0MmU3NTUuLmUxYThhNzUgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL0tidWlsZC5zcmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvS2J1aWxkLnNyYwotQEAgLTEyLDYgKzEyLDggQEAgQ09NTU9OX0ZJTEVTOj0gXAotIAlkYXRhX2V4dHJhY3RfYWxsLm8gXAotIAlkYXRhX2V4dHJhY3RfdG9fc3Rkb3V0Lm8gXAotIFwKLSsJdW5zYWZlX3N5bWxpbmtfdGFyZ2V0Lm8gXAotK1wKLSAJZmlsdGVyX2FjY2VwdF9hbGwubyBcCi0gCWZpbHRlcl9hY2NlcHRfbGlzdC5vIFwKLSAJZmlsdGVyX2FjY2VwdF9yZWplY3RfbGlzdC5vIFwKLWRpZmYgLS1naXQgYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RhdGFfZXh0cmFjdF9hbGwuYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jCi1pbmRleCAxODMwZmZiLi5iODI4YjY1IDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kYXRhX2V4dHJhY3RfYWxsLmMKLSsrKyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGF0YV9leHRyYWN0X2FsbC5jCi1AQCAtMTI4LDEwICsxMjgsOSBAQCB2b2lkIEZBU1RfRlVOQyBkYXRhX2V4dHJhY3RfYWxsKGFyY2hpdmVfaGFuZGxlX3QgKmFyY2hpdmVfaGFuZGxlKQotIAkJcmVzID0gbGluayhoYXJkX2xpbmssIGRzdF9uYW1lKTsKLSAJCWlmIChyZXMgIT0gMCAmJiAhKGFyY2hpdmVfaGFuZGxlLT5haF9mbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9RVUlFVCkpIHsKLSAJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLwotLQkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgIgotLQkJCQkJIiVzIHRvICVzIiwgImhhcmQiLAotLQkJCQkJZHN0X25hbWUsCi0tCQkJCQloYXJkX2xpbmspOwotKwkJCWJiX3BlcnJvcl9tc2coImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKLSsJCQkJCSAiaGFyZCIsIGRzdF9uYW1lLCBoYXJkX2xpbmsKLSsJCQkpOwotIAkJfQotIAkJLyogSGFyZGxpbmtzIGhhdmUgbm8gc2VwYXJhdGUgbW9kZS9vd25lcnNoaXAsIHNraXAgY2hvd24vY2htb2QgKi8KLSAJCWdvdG8gcmV0OwotQEAgLTE3OCwxNSArMTc3LDE3IEBAIHZvaWQgRkFTVF9GVU5DIGRhdGFfZXh0cmFjdF9hbGwoYXJjaGl2ZV9oYW5kbGVfdCAqYXJjaGl2ZV9oYW5kbGUpCi0gCWNhc2UgU19JRkxOSzoKLSAJCS8qIFN5bWxpbmsgKi8KLSAvL1RPRE86IHdoYXQgaWYgZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0ID09IE5VTEwgKHNheSwgY29ycnVwdGVkIHRhcmJhbGw/KQotLQkJcmVzID0gc3ltbGluayhmaWxlX2hlYWRlci0+bGlua190YXJnZXQsIGRzdF9uYW1lKTsKLS0JCWlmIChyZXMgIT0gMAotLQkJICYmICEoYXJjaGl2ZV9oYW5kbGUtPmFoX2ZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1FVSUVUKQotLQkJKSB7Ci0tCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KLS0JCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICIKLS0JCQkJIiVzIHRvICVzIiwgInN5bSIsCi0tCQkJCWRzdF9uYW1lLAotLQkJCQlmaWxlX2hlYWRlci0+bGlua190YXJnZXQpOwotKwkJaWYgKCF1bnNhZmVfc3ltbGlua190YXJnZXQoZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0KSkgewotKwkJCXJlcyA9IHN5bWxpbmsoZmlsZV9oZWFkZXItPmxpbmtfdGFyZ2V0LCBkc3RfbmFtZSk7Ci0rCQkJaWYgKHJlcyAhPSAwCi0rCQkJCSYmICEoYXJjaGl2ZV9oYW5kbGUtPmFoX2ZsYWdzICYgQVJDSElWRV9FWFRSQUNUX1FVSUVUKQotKwkJCSkgewotKwkJCQkJCS8qIHNoYXJlZCBtZXNzYWdlICovCi0rCQkJCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlICVzbGluayAnJXMnIHRvICclcyciLAotKwkJCQkJCQkic3ltIiwKLSsJCQkJCQkJZHN0X25hbWUsIGZpbGVfaGVhZGVyLT5saW5rX3RhcmdldAotKwkJCQkJCSk7Ci0rCQkJfQotIAkJfQotIAkJYnJlYWs7Ci0gCWNhc2UgU19JRlNPQ0s6Ci1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS91bnNhZmVfc3ltbGlua190YXJnZXQuYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvdW5zYWZlX3N5bWxpbmtfdGFyZ2V0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZTQ2ZTI4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL3Vuc2FmZV9zeW1saW5rX3RhcmdldC5jCi1AQCAtMCwwICsxLDQ4IEBACi0rLyogdmk6IHNldCBzdz00IHRzPTQ6ICovCi0rLyoKLSsgKiBMaWNlbnNlZCB1bmRlciBHUEx2MiBvciBsYXRlciwgc2VlIGZpbGUgTElDRU5TRSBpbiB0aGlzIHNvdXJjZSB0cmVlLgotKyAqLwotKyNpbmNsdWRlICJsaWJiYi5oIgotKyNpbmNsdWRlICJiYl9hcmNoaXZlLmgiCi0rCi0raW50IEZBU1RfRlVOQyB1bnNhZmVfc3ltbGlua190YXJnZXQoY29uc3QgY2hhciAqdGFyZ2V0KQotK3sKLSsJY29uc3QgY2hhciAqZG90OwotKwotKwlpZiAodGFyZ2V0WzBdID09ICcvJykgewotKwkJY29uc3QgY2hhciAqdmFyOwotK3Vuc2FmZToKLSsJCXZhciA9IGdldGVudigiRVhUUkFDVF9VTlNBRkVfU1lNTElOS1MiKTsKLSsJCWlmICh2YXIpIHsKLSsJCQlpZiAoTE9ORV9DSEFSKHZhciwgJzEnKSkKLSsJCQkJcmV0dXJuIDA7IC8qIHByZXRlbmQgaXQncyBzYWZlICovCi0rCQkJcmV0dXJuIDE7IC8qICJVTlNBRkUhIiAqLwotKwkJfQotKwkJYmJfZXJyb3JfbXNnKCJza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnJXMnIGluIGFyY2hpdmUsIgotKwkJCSIgc2V0ICVzPTEgdG8gZXh0cmFjdCIsCi0rCQkJdGFyZ2V0LAotKwkJCSJFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUyIKLSsJCSk7Ci0rCQkvKiBQcmV2ZW50IGZ1cnRoZXIgbWVzc2FnZXMgKi8KLSsJCXNldGVudigiRVhUUkFDVF9VTlNBRkVfU1lNTElOS1MiLCAiMCIsIDApOwotKwkJcmV0dXJuIDE7IC8qICJVTlNBRkUhIiAqLwotKwl9Ci0rCi0rCWRvdCA9IHRhcmdldDsKLSsJZm9yICg7OykgewotKwkJZG90ID0gc3RyY2hyKGRvdCwgJy4nKTsKLSsJCQlpZiAoIWRvdCkKLSsJCQkJcmV0dXJuIDA7IC8qIHNhZmUgdGFyZ2V0ICovCi0rCi0rCQkJLyogSXMgaXQgYSBwYXRoIGNvbXBvbmVudCBzdGFydGluZyB3aXRoICIuLiI/ICovCi0rCQkJaWYgKChkb3RbMV0gPT0gJy4nKQotKwkJCQkmJiAoZG90ID09IHRhcmdldCB8fCBkb3RbLTFdID09ICcvJykKLSsJCQkJCS8qIElzIGl0IGV4YWN0bHkgIi4uIj8gKi8KLSsJCQkJJiYgKGRvdFsyXSA9PSAnLycgfHwgZG90WzJdID09ICdcMCcpCi0rCQkJKSB7Ci0rCQkJCWdvdG8gdW5zYWZlOwotKwkJCX0KLSsJCQkvKiBOQjogaXQgY2FuIGV2ZW4gYmUgdHJhaWxpbmcgIi4iLCBzaG91bGQgb25seSBhZGQgMSAqLwotKwkJCWRvdCArPSAxOwotKwl9Ci0rfQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvdW56aXAuYyBiL2FyY2hpdmFsL3VuemlwLmMKLWluZGV4IDkwMzcyNjIuLjI3MGUyNjEgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC91bnppcC5jCi0rKysgYi9hcmNoaXZhbC91bnppcC5jCi1AQCAtMzM1LDYgKzMzNSw0NCBAQCBzdGF0aWMgdm9pZCB1bnppcF9jcmVhdGVfbGVhZGluZ19kaXJzKGNvbnN0IGNoYXIgKmZuKQotIAlmcmVlKG5hbWUpOwotIH0KLSAKLStzdGF0aWMgdm9pZCB1bnppcF9leHRyYWN0X3N5bWxpbmsoemlwX2hlYWRlcl90ICp6aXAsIGNvbnN0IGNoYXIgKmRzdF9mbikKLSt7Ci0rCWNoYXIgKnRhcmdldDsKLSsKLSsJaWYgKHppcC0+Zm10LnVjbXBzaXplID4gMHhmZmYpIC8qIG5vIGZ1bm55IGJ1c2luZXNzIHBsZWFzZSAqLwotKwkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoImJhZCBhcmNoaXZlIik7Ci0rCi0rCWlmICh6aXAtPmZtdC5tZXRob2QgPT0gMCkgewotKwkJLyogTWV0aG9kIDAgLSBzdG9yZWQgKG5vdCBjb21wcmVzc2VkKSAqLwotKwkJdGFyZ2V0ID0geHphbGxvYyh6aXAtPmZtdC51Y21wc2l6ZSArIDEpOwotKwkJeHJlYWQoemlwX2ZkLCB0YXJnZXQsIHppcC0+Zm10LnVjbXBzaXplKTsKLSsJfSBlbHNlIHsKLSsjaWYgMQotKwkJYmJfZXJyb3JfbXNnX2FuZF9kaWUoImNvbXByZXNzZWQgc3ltbGluayBpcyBub3Qgc3VwcG9ydGVkIik7Ci0rI2Vsc2UKLSsJCXRyYW5zZm9ybWVyX3N0YXRlX3QgeHN0YXRlOwotKwkJaW5pdF90cmFuc2Zvcm1lcl9zdGF0ZSgmeHN0YXRlKTsKLSsJCXhzdGF0ZS5tZW1fb3V0cHV0X3NpemVfbWF4ID0gemlwLT5mbXQudWNtcHNpemU7Ci0rCQkvKiAuLi51bnBhY2suLi4gKi8KLSsJCWlmICgheHN0YXRlLm1lbV9vdXRwdXRfYnVmKQotKwkJCVdURigpOwotKwkJdGFyZ2V0ID0geHN0YXRlLm1lbV9vdXRwdXRfYnVmOwotKwkJdGFyZ2V0ID0geHJlYWxsb2ModGFyZ2V0LCB4c3RhdGUubWVtX291dHB1dF9zaXplICsgMSk7Ci0rCQl0YXJnZXRbeHN0YXRlLm1lbV9vdXRwdXRfc2l6ZV0gPSAnXDAnOwotKyNlbmRpZgotKwl9Ci0rCWlmICghdW5zYWZlX3N5bWxpbmtfdGFyZ2V0KHRhcmdldCkpIHsKLSsvL1RPRE86IGxpYmJiIGNhbmRpZGF0ZQotKwkJaWYgKHN5bWxpbmsodGFyZ2V0LCBkc3RfZm4pKSB7Ci0rCQkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KLSsJCQliYl9wZXJyb3JfbXNnX2FuZF9kaWUoImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKLSsJCQkJInN5bSIsIGRzdF9mbiwgdGFyZ2V0Ci0rCQkJKTsKLSsJCX0KLSsJfQotKwlmcmVlKHRhcmdldCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkIHVuemlwX2V4dHJhY3QoemlwX2hlYWRlcl90ICp6aXAsIGludCBkc3RfZmQpCi0gewotIAl0cmFuc2Zvcm1lcl9zdGF0ZV90IHhzdGF0ZTsKLUBAIC04MTMsNyArODUxLDcgQEAgaW50IHVuemlwX21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJfQotICBjaGVja19maWxlOgotIAkJLyogRXh0cmFjdCBmaWxlICovCi0tCQlpZiAoc3RhdChkc3RfZm4sICZzdGF0X2J1ZikgPT0gLTEpIHsKLSsJCWlmIChsc3RhdChkc3RfZm4sICZzdGF0X2J1ZikgPT0gLTEpIHsKLSAJCQkvKiBGaWxlIGRvZXMgbm90IGV4aXN0ICovCi0gCQkJaWYgKGVycm5vICE9IEVOT0VOVCkgewotIAkJCQliYl9wZXJyb3JfbXNnX2FuZF9kaWUoImNhbid0IHN0YXQgJyVzJyIsIGRzdF9mbik7Ci1AQCAtODM0LDYgKzg3Miw3IEBAIGludCB1bnppcF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlnb3RvIGRvX29wZW5fYW5kX2V4dHJhY3Q7Ci0gCQlwcmludGYoInJlcGxhY2UgJXM/IFt5XWVzLCBbbl1vLCBbQV1sbCwgW05db25lLCBbcl1lbmFtZTogIiwgZHN0X2ZuKTsKLSAJCW15X2ZnZXRzODAoa2V5X2J1Zik7Ci0rLy9UT0RPOiByZWRvIGxzdGF0ICsgSVNSRUcgY2hlY2shIHVzZXIgaW5wdXQgY291bGQgaGF2ZSB0YWtlbiBhIGxvbmcgdGltZSEKLSAKLSAJCXN3aXRjaCAoa2V5X2J1ZlswXSkgewotIAkJY2FzZSAnQSc6Ci1AQCAtODQyLDcgKzg4MSw4IEBAIGludCB1bnppcF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgZG9fb3Blbl9hbmRfZXh0cmFjdDoKLSAJCQl1bnppcF9jcmVhdGVfbGVhZGluZ19kaXJzKGRzdF9mbik7Ci0gI2lmIEVOQUJMRV9GRUFUVVJFX1VOWklQX0NERgotLQkJCWRzdF9mZCA9IHhvcGVuMyhkc3RfZm4sIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsIGZpbGVfbW9kZSk7Ci0rCQkJaWYgKCFTX0lTTE5LKGZpbGVfbW9kZSkpCi0rCQkJCWRzdF9mZCA9IHhvcGVuMyhkc3RfZm4sIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMsIGZpbGVfbW9kZSk7Ci0gI2Vsc2UKLSAJCQlkc3RfZmQgPSB4b3Blbihkc3RfZm4sIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJVTkMpOwotICNlbmRpZgotQEAgLTg1MiwxMCArODkyLDE4IEBAIGludCB1bnppcF9tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQkJCT8gIiBleHRyYWN0aW5nOiAlc1xuIgotIAkJCQkJOiAqLyAiICBpbmZsYXRpbmc6ICVzXG4iLCBkc3RfZm4pOwotIAkJCX0KLS0JCQl1bnppcF9leHRyYWN0KCZ6aXAsIGRzdF9mZCk7Ci0tCQkJaWYgKGRzdF9mZCAhPSBTVERPVVRfRklMRU5PKSB7Ci0tCQkJCS8qIGNsb3NpbmcgU1RET1VUIGlzIHBvdGVudGlhbGx5IGJhZCBmb3IgZnV0dXJlIGJ1c2luZXNzICovCi0tCQkJCWNsb3NlKGRzdF9mZCk7Ci0rI2lmIEVOQUJMRV9GRUFUVVJFX1VOWklQX0NERgotKwkJCWlmIChTX0lTTE5LKGZpbGVfbW9kZSkpIHsKLSsJCQkJaWYgKGRzdF9mZCAhPSBTVERPVVRfRklMRU5PKSAvKiBubyAtcCAqLwotKwkJCQkJdW56aXBfZXh0cmFjdF9zeW1saW5rKCZ6aXAsIGRzdF9mbik7Ci0rCQkJfSBlbHNlCi0rI2VuZGlmCi0rCQkJewotKwkJCQl1bnppcF9leHRyYWN0KCZ6aXAsIGRzdF9mZCk7Ci0rCQkJCWlmIChkc3RfZmQgIT0gU1RET1VUX0ZJTEVOTykgewotKwkJCQkJLyogY2xvc2luZyBTVERPVVQgaXMgcG90ZW50aWFsbHkgYmFkIGZvciBmdXR1cmUgYnVzaW5lc3MgKi8KLSsJCQkJCWNsb3NlKGRzdF9mZCk7Ci0rCQkJCX07Ci0gCQkJfQotIAkJCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2NvcmV1dGlscy9saW5rLmMgYi9jb3JldXRpbHMvbGluay5jCi1pbmRleCBhYzNlZjg1Li5hYWIyNDlkIDEwMDY0NAotLS0tIGEvY29yZXV0aWxzL2xpbmsuYwotKysrIGIvY29yZXV0aWxzL2xpbmsuYwotQEAgLTMyLDkgKzMyLDggQEAgaW50IGxpbmtfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAlhcmd2ICs9IG9wdGluZDsKLSAJaWYgKGxpbmsoYXJndlswXSwgYXJndlsxXSkgIT0gMCkgewotIAkJLyogc2hhcmVkIG1lc3NhZ2UgKi8KLS0JCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3QgY3JlYXRlICVzbGluayAiCi0tCQkJCQkiJXMgdG8gJXMiLCAiaGFyZCIsCi0tCQkJCQlhcmd2WzFdLCBhcmd2WzBdCi0rCQliYl9wZXJyb3JfbXNnX2FuZF9kaWUoImNhbid0IGNyZWF0ZSAlc2xpbmsgJyVzJyB0byAnJXMnIiwKLSsJCQkJCSJoYXJkIiwJYXJndlsxXSwgYXJndlswXQotIAkJKTsKLSAJfQotIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYmJfYXJjaGl2ZS5oIGIvaW5jbHVkZS9iYl9hcmNoaXZlLmgKLWluZGV4IDJiOWM1ZjAuLjFlNGRhM2MgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JiX2FyY2hpdmUuaAotKysrIGIvaW5jbHVkZS9iYl9hcmNoaXZlLmgKLUBAIC0xOTYsNiArMTk2LDcgQEAgdm9pZCBzZWVrX2J5X2p1bXAoaW50IGZkLCBvZmZfdCBhbW91bnQpIEZBU1RfRlVOQzsKLSB2b2lkIHNlZWtfYnlfcmVhZChpbnQgZmQsIG9mZl90IGFtb3VudCkgRkFTVF9GVU5DOwotIAotIGNvbnN0IGNoYXIgKnN0cmlwX3Vuc2FmZV9wcmVmaXgoY29uc3QgY2hhciAqc3RyKSBGQVNUX0ZVTkM7Ci0raW50IHVuc2FmZV9zeW1saW5rX3RhcmdldChjb25zdCBjaGFyICp0YXJnZXQpIEZBU1RfRlVOQzsKLSAKLSB2b2lkIGRhdGFfYWxpZ24oYXJjaGl2ZV9oYW5kbGVfdCAqYXJjaGl2ZV9oYW5kbGUsIHVuc2lnbmVkIGJvdW5kYXJ5KSBGQVNUX0ZVTkM7Ci0gY29uc3QgbGxpc3RfdCAqZmluZF9saXN0X2VudHJ5KGNvbnN0IGxsaXN0X3QgKmxpc3QsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKSBGQVNUX0ZVTkM7Ci1kaWZmIC0tZ2l0IGEvbGliYmIvY29weV9maWxlLmMgYi9saWJiYi9jb3B5X2ZpbGUuYwotaW5kZXggMjNjMGY4My4uYmU5MDA2NiAxMDA2NDQKLS0tLSBhL2xpYmJiL2NvcHlfZmlsZS5jCi0rKysgYi9saWJiYi9jb3B5X2ZpbGUuYwotQEAgLTM3MSw3ICszNzEsMTAgQEAgaW50IEZBU1RfRlVOQyBjb3B5X2ZpbGUoY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICpkZXN0LCBpbnQgZmxhZ3MpCi0gCQkJaW50IHIgPSBzeW1saW5rKGxwYXRoLCBkZXN0KTsKLSAJCQlmcmVlKGxwYXRoKTsKLSAJCQlpZiAociA8IDApIHsKLS0JCQkJYmJfcGVycm9yX21zZygiY2FuJ3QgY3JlYXRlIHN5bWxpbmsgJyVzJyIsIGRlc3QpOwotKwkJCQkvKiBzaGFyZWQgbWVzc2FnZSAqLwotKwkJCQliYl9wZXJyb3JfbXNnKCJjYW4ndCBjcmVhdGUgJXNsaW5rICclcycgdG8gJyVzJyIsCi0rCQkJCQkic3ltIiwgZGVzdCwgbHBhdGgKLSsJCQkJKTsKLSAJCQkJcmV0dXJuIC0xOwotIAkJCX0KLSAJCQlpZiAoZmxhZ3MgJiBGSUxFVVRJTFNfUFJFU0VSVkVfU1RBVFVTKQotZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS90YXIudGVzdHMgYi90ZXN0c3VpdGUvdGFyLnRlc3RzCi1pbmRleCA5ZjdjZTE1Li5iN2NkNzRjIDEwMDc1NQotLS0tIGEvdGVzdHN1aXRlL3Rhci50ZXN0cwotKysrIGIvdGVzdHN1aXRlL3Rhci50ZXN0cwotQEAgLTEwLDkgKzEwLDYgQEAgdW5zZXQgTENfQ09MTEFURQotIHVuc2V0IExDX0FMTAotIHVtYXNrIDAyMgotIAotLXJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotLW1rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotLQotICMgdGVzdGluZyAidGVzdCBuYW1lIiAic2NyaXB0IiAiZXhwZWN0ZWQgcmVzdWx0IiAiZmlsZSBpbnB1dCIgInN0ZGluIgotIAotIHRlc3RpbmcgIkVtcHR5IGZpbGUgaXMgbm90IGEgdGFyYmFsbCIgJ1wKLUBAIC01Myw2ICs1MCw3IEBAIGRkIGlmPS9kZXYvemVybyBicz01MTIgY291bnQ9MjAgMj4vZGV2L251bGwgfCB0YXIgeHZmIC0gMj4mMTsgZWNobyAkPwotICIiICIiCi0gU0tJUD0KLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSAjICJ0YXIgY2YgdGVzdC50YXIgaW5wdXQgaW5wdXRfZGlyLyBpbnB1dF9oYXJkMSBpbnB1dF9oYXJkMiBpbnB1dF9oYXJkMSBpbnB1dF9kaXIvIGlucHV0IjoKLSAjIEdOVSB0YXIgMS4yNiByZWNvcmRzIGFzIGhhcmRsaW5rczoKLSAjICBpbnB1dF9oYXJkMiAtPiBpbnB1dF9oYXJkMQotQEAgLTY0LDcgKzYyLDYgQEAgU0tJUD0KLSAjIFdlIGFsc28gZG9uJ3QgdXNlICJocnctci0tci0tIiBub3RhdGlvbiBmb3IgaGFyZGxpbmtzIGluICJ0YXIgdHYiIGxpc3RpbmcuCi0gb3B0aW9uYWwgRkVBVFVSRV9UQVJfQ1JFQVRFIEZFQVRVUkVfTFNfU09SVEZJTEVTCi0gdGVzdGluZyAidGFyIGhhcmRsaW5rcyBhbmQgcmVwZWF0ZWQgZmlsZXMiICdcCi0tcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKLSA+aW5wdXRfaGFyZDEKLSBsbiBpbnB1dF9oYXJkMSBpbnB1dF9oYXJkMgotIG1rZGlyIGlucHV0X2RpcgotQEAgLTk1LDEwICs5MiwxMSBAQCBkcnd4ci14ci14IGlucHV0X2RpcgotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX0xTX1NPUlRGSUxFUwotIHRlc3RpbmcgInRhciBoYXJkbGlua3MgbW9kZSIgJ1wKLS1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAotID5pbnB1dF9oYXJkMQotIGNobW9kIDc0MSBpbnB1dF9oYXJkMQotIGxuIGlucHV0X2hhcmQxIGlucHV0X2hhcmQyCi1AQCAtMTI4LDEwICsxMjYsMTEgQEAgT2s6IDAKLSAiIFwKLSAiIiAiIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9MU19TT1JURklMRVMKLSB0ZXN0aW5nICJ0YXIgc3ltbGlua3MgbW9kZSIgJ1wKLS1ybSAtcmYgaW5wdXRfKiB0ZXN0LnRhciAyPi9kZXYvbnVsbAotID5pbnB1dF9maWxlCi0gY2htb2QgNzQxIGlucHV0X2ZpbGUKLSBsbiAtcyBpbnB1dF9maWxlIGlucHV0X3NvZnQKLUBAIC0xNTksMTAgKzE1OCwxMSBAQCBscnd4cnd4cnd4IGlucHV0X2ZpbGUKLSAiIFwKLSAiIiAiIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUgRkVBVFVSRV9UQVJfTE9OR19PUFRJT05TCi0gdGVzdGluZyAidGFyIC0tb3ZlcndyaXRlIiAiXAotLXJtIC1yZiBpbnB1dF8qIHRlc3QudGFyIDI+L2Rldi9udWxsCi0gbG4gaW5wdXQgaW5wdXRfaGFyZAotIHRhciBjZiB0ZXN0LnRhciBpbnB1dF9oYXJkCi0gZWNobyBXUk9ORyA+aW5wdXQKLUBAIC0xNzQsMTIgKzE3NCwxMyBAQCBPawotICIgXAotICJPa1xuIiAiIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSB0ZXN0IHgiJFNLSVBfS05PV05fQlVHUyIgPSB4IiIgJiYgewotICMgTmVlZHMgdG8gYmUgcnVuIHVuZGVyIG5vbi1yb290IGZvciBtZWFuaW5nZnVsIHRlc3QKLSBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUKLSB0ZXN0aW5nICJ0YXIgd3JpdGluZyBpbnRvIHJlYWQtb25seSBkaXIiICdcCi0tcm0gLXJmIGlucHV0XyogdGVzdC50YXIgMj4vZGV2L251bGwKLSBta2RpciBpbnB1dF9kaXIKLSA+aW5wdXRfZGlyL2lucHV0X2ZpbGUKLSBjaG1vZCA1NTAgaW5wdXRfZGlyCi1AQCAtMjAxLDcgKzIwMiw5IEBAIGRyLXhyLXgtLS0gaW5wdXRfZGlyCi0gIiIgIiIKLSBTS0lQPQotIH0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotICMgSGFkIGEgYnVnIHdoZXJlIG9uIGV4dHJhY3QgYXV0b2RldGVjdCBmaXJzdCAic3dpdGNoZWQgb2ZmIiAtegotICMgYW5kIHRoZW4gZmFpbGVkIHRvIHJlY29nbml6ZSAudGd6IGV4dGVuc2lvbgotIG9wdGlvbmFsIEZFQVRVUkVfVEFSX0NSRUFURSBGRUFUVVJFX1NFQU1MRVNTX0daIEdVTlpJUAotQEAgLTIxNyw3ICsyMjAsOSBAQCBPawotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotICMgRG8gd2UgZGV0ZWN0IFhaLWNvbXByZXNzZWQgZGF0YSAoZXZlbiB3L28gLnRhci54eiBvciB0eHogZXh0ZW5zaW9uKT8KLSAjICh0aGUgdXVlbmNvZGVkIGhlbGxvX3dvcmxkLnR4eiBjb250YWlucyBvbmUgZW1wdHkgZmlsZSBuYW1lZCAiaGVsbG9fd29ybGQiKQotIG9wdGlvbmFsIFVVREVDT0RFIEZFQVRVUkVfVEFSX0FVVE9ERVRFQ1QgRkVBVFVSRV9TRUFNTEVTU19YWgotQEAgLTIzNiw3ICsyNDEsOSBAQCBBQUFFV1ZvPQotID09PT0KLSAiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotK21rZGlyIHRhci50ZW1wZGlyICYmIGNkIHRhci50ZW1wZGlyIHx8IGV4aXQgMQotICMgT24gZXh0cmFjdCwgZXZlcnl0aGluZyB1cCB0byBhbmQgaW5jbHVkaW5nIGxhc3QgIi4uIiBjb21wb25lbnQgaXMgc3RyaXBwZWQKLSBvcHRpb25hbCBGRUFUVVJFX1RBUl9DUkVBVEUKLSB0ZXN0aW5nICJ0YXIgc3RyaXBzIC8uLi8gb24gZXh0cmFjdCIgIlwKLUBAIC0yNTUsNyArMjYyLDkgQEAgT2sKLSAiIFwKLSAiIiAiIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSAjIGF0dGFjay50YXIuYnoyIGhhcyBzeW1saW5rIHBvaW50aW5nIHRvIGEgc3lzdGVtIGZpbGUKLSAjIGZvbGxvd2VkIGJ5IGEgcmVndWxhciBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQotICMgY29udGFpbmluZyAicm9vdDo6MDowOjovcm9vdDovYmluL3NoIjoKLUBAIC0yNzAsNiArMjc5LDcgQEAgb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVCBGRUFUVVJFX1NFQU1MRVNTX0JaMgotIHRlc3RpbmcgInRhciBkb2VzIG5vdCBleHRyYWN0IGludG8gc3ltbGlua3MiICJcCi0gPj4vdG1wL3Bhc3N3ZCAmJiB1dWRlY29kZSAtbyBpbnB1dCAmJiB0YXIgeGYgaW5wdXQgMj4mMSAmJiBybSBwYXNzd2Q7IGNhdCAvdG1wL3Bhc3N3ZDsgZWNobyBcJD8KLSAiICJcCi0rdGFyOiBza2lwcGluZyB1bnNhZmUgc3ltbGluayB0byAnL3RtcC9wYXNzd2QnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKLSAwCi0gIiBcCi0gIiIgIlwKLUBAIC0yODEsMTIgKzI5MSwxNSBAQCBsNC9WOExEb2U5MHlpV0poT0p2SXlwZ0VmeGR5UlRoUWtCVm4vYkk9Ci0gPT09PQotICIKLSBTS0lQPQotK2NkIC4uIHx8IGV4aXQgMTsgcm0gLXJmIHRhci50ZW1wZGlyIDI+L2Rldi9udWxsCi0rCi0rbWtkaXIgdGFyLnRlbXBkaXIgJiYgY2QgdGFyLnRlbXBkaXIgfHwgZXhpdCAxCi0gIyBBbmQgc2FtZSB3aXRoIC1rCi0gb3B0aW9uYWwgVVVERUNPREUgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVCBGRUFUVVJFX1NFQU1MRVNTX0JaMgotIHRlc3RpbmcgInRhciAtayBkb2VzIG5vdCBleHRyYWN0IGludG8gc3ltbGlua3MiICJcCi0gPj4vdG1wL3Bhc3N3ZCAmJiB1dWRlY29kZSAtbyBpbnB1dCAmJiB0YXIgeGYgaW5wdXQgLWsgMj4mMSAmJiBybSBwYXNzd2Q7IGNhdCAvdG1wL3Bhc3N3ZDsgZWNobyBcJD8KLSAiICJcCi0tdGFyOiBjYW4ndCBvcGVuICdwYXNzd2QnOiBGaWxlIGV4aXN0cwotK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy90bXAvcGFzc3dkJyBpbiBhcmNoaXZlLCBzZXQgRVhUUkFDVF9VTlNBRkVfU1lNTElOS1M9MSB0byBleHRyYWN0Ci0gMAotICIgXAotICIiICJcCi1AQCAtMjk4LDcgKzMxMSw5IEBAIGw0L1Y4TERvZTkweWlXSmhPSnZJeXBnRWZ4ZHlSVGhRa0JWbi9iST0KLSA9PT09Ci0gIgotIFNLSVA9Ci0rY2QgLi4gfHwgZXhpdCAxOyBybSAtcmYgdGFyLnRlbXBkaXIgMj4vZGV2L251bGwKLSAKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLSBvcHRpb25hbCBVTklDT0RFX1NVUFBPUlQgRkVBVFVSRV9UQVJfR05VX0VYVEVOU0lPTlMgRkVBVFVSRV9TRUFNTEVTU19CWjIgRkVBVFVSRV9UQVJfQVVUT0RFVEVDVAotIHRlc3RpbmcgIlBheC1lbmNvZGVkIFVURjggbmFtZXMgYW5kIHN5bWxpbmtzIiAnXAotIHRhciB4dmYgLi4vdGFyLnV0ZjgudGFyLmJ6MiAyPiYxOyBlY2hvICQ/Ci1AQCAtMzA5LDE3ICszMjQsNDUgQEAgcm0gLXJmIGV0YyB1c3IKLSAnICJcCi0gZXRjL3NzbC9jZXJ0cy8zYjI3MTZlNS4wCi0gZXRjL3NzbC9jZXJ0cy9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5wZW0KLSt0YXI6IHNraXBwaW5nIHVuc2FmZSBzeW1saW5rIHRvICcvdXNyL3NoYXJlL2NhLWNlcnRpZmljYXRlcy9tb3ppbGxhL0VCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLmNydCcgaW4gYXJjaGl2ZSwgc2V0IEVYVFJBQ1RfVU5TQUZFX1NZTUxJTktTPTEgdG8gZXh0cmFjdAotIGV0Yy9zc2wvY2VydHMvZjgwY2M3ZjYuMAotIHVzci9zaGFyZS9jYS1jZXJ0aWZpY2F0ZXMvbW96aWxsYS9FQkdfRWxla3Ryb25pa19TZXJ0aWZpa2FfSGl6bWV0X1NhxJ9sYXnEsWPEsXPEsS5jcnQKLSAwCi0gZXRjL3NzbC9jZXJ0cy8zYjI3MTZlNS4wIC0+IEVCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbQotLWV0Yy9zc2wvY2VydHMvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEucGVtIC0+IC91c3Ivc2hhcmUvY2EtY2VydGlmaWNhdGVzL21vemlsbGEvRUJHX0VsZWt0cm9uaWtfU2VydGlmaWthX0hpem1ldF9TYcSfbGF5xLFjxLFzxLEuY3J0Ci0gZXRjL3NzbC9jZXJ0cy9mODBjYzdmNi4wIC0+IEVCR19FbGVrdHJvbmlrX1NlcnRpZmlrYV9IaXptZXRfU2HEn2xhecSxY8Sxc8SxLnBlbQotICIgXAotICIiICIiCi0gU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotLQotLWNkIC4uICYmIHJtIC1yZiB0YXIudGVtcGRpciB8fCBleGl0IDEKLStta2RpciB0YXIudGVtcGRpciAmJiBjZCB0YXIudGVtcGRpciB8fCBleGl0IDEKLStvcHRpb25hbCBVVURFQ09ERSBGRUFUVVJFX1NFQU1MRVNTX0JaMiBGRUFUVVJFX1RBUl9BVVRPREVURUNUCi0rdGVzdGluZyAiU3ltbGluayBhdHRhY2s6IGNyZWF0ZSBzeW1saW5rIGFuZCB0aGVuIHdyaXRlIHRocm91Z2ggaXQiICdcCi0rZXhlYyAyPiYxCi0rdXVkZWNvZGUgLW8gaW5wdXQgJiYgdGFyIHh2ZiBpbnB1dDsgZWNobyAkPwotK2xzIC90bXAvYmJfdGVzdF9ldmlsZmlsZQotK2xzIGJiX3Rlc3RfZXZpbGZpbGUKLStscyBzeW1saW5rL2JiX3Rlc3RfZXZpbGZpbGUKLSsnICJcCi0rYW55dGhpbmcudHh0Ci0rc3ltbGluawotK3Rhcjogc2tpcHBpbmcgdW5zYWZlIHN5bWxpbmsgdG8gJy90bXAnIGluIGFyY2hpdmUsIHNldCBFWFRSQUNUX1VOU0FGRV9TWU1MSU5LUz0xIHRvIGV4dHJhY3QKLStzeW1saW5rL2JiX3Rlc3RfZXZpbGZpbGUKLSswCi0rbHM6IC90bXAvYmJfdGVzdF9ldmlsZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotK2xzOiBiYl90ZXN0X2V2aWxmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0rc3ltbGluay9iYl90ZXN0X2V2aWxmaWxlCi0rIiBcCi0rIiIgIlwKLStiZWdpbi1iYXNlNjQgNjQ0IHRhcl9zeW1saW5rX2F0dGFjay50YXIuYnoyCi0rUWxwb09URkJXU1pUV1pnczdiUUFBTFQvaE1tUUFGQkFBZitBRU1BR0pQUHYzMkFBQUlBSU1BQzV0aGxSCi0rb21BakFtQ01BRFFUMUJxTkUwQUV3QUFqQUV3RWxUS2VvOU5UUjZoNmdhZW9BMERRTkxWZHdaWjVpTlRrCi0rQVF3Q0FWNlMwMFFGSllocmxmRmtWQ0VERUd0Z05WcVlySTB1SzNnZ250MzBncWs0ZTFUVFFtNVFJQUthCi0rU0pxelJHU0ZMTW1PbG9IU0FjdkxpRnh4UmlRdFFaRitxUHhibzE3M1pESVNPQW9Ob1BONFBRUGhCaEtTCi0rbjhmWWFLbGlvQ1R6TDJvWFljenlVVUlQNHU1SXB3b1NFd1dkdG9BPQotKz09PT0KLSsiCi0rU0tJUD0KLStjZCAuLiB8fCBleGl0IDE7IHJtIC1yZiB0YXIudGVtcGRpciAyPi9kZXYvbnVsbAotIAotIGV4aXQgJEZBSUxDT1VOVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvQ1ZFLTIwMTctMTU4NzMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEwMjdjOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLWJ1c3lib3gtMS4yNy4yOiBGaXggQ1ZFLTIwMTctMTU4NzMKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuYnVzeWJveC5uZXQvc2hvd19idWcuY2dpP2lkPTEwNDMxCi0KLWJ1bnppcDI6IGZpeCBydW5DbnQgb3ZlcmZsb3cKLQotVGhlIGdldF9uZXh0X2Jsb2NrIGZ1bmN0aW9uIGluIGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKLWluIEJ1c3lCb3ggMS4yNy4yIGhhcyBhbiBJbnRlZ2VyIE92ZXJmbG93IHRoYXQgbWF5IGxlYWQgdG8gYSB3cml0ZSAKLWFjY2VzcyB2aW9sYXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD0wNDAyY2IzMmRmMDE1ZDkzNzI1NzhlM2RiMjdkYjQ3YjMzZDVjN2IwXQotQ1ZFOiBDVkUtMjAxNy0xNTg3MwotYnVnOiAxMDQzMQotU2lnbmVkLW9mZi1ieTogUmFkb3ZhbiBTY2FzbnkgPHJhZG92YW4uc2Nhc255QHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX2J1bnppcDIuYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc19idW56aXAyLmMKLWluZGV4IDdjZDE4ZjUuLmJlYzg5ZWQgMTAwNjQ0Ci0tLS0gYS9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfYnVuemlwMi5jCi1AQCAtMTU2LDE1ICsxNTYsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGdldF9iaXRzKGJ1bnppcF9kYXRhICpiZCwgaW50IGJpdHNfd2FudGVkKQotIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQotIHsKLSAJc3RydWN0IGdyb3VwX2RhdGEgKmh1Zkdyb3VwOwotLQlpbnQgZGJ1ZkNvdW50LCBkYnVmU2l6ZSwgZ3JvdXBDb3VudCwgKmJhc2UsICpsaW1pdCwgc2VsZWN0b3IsCi0tCQlpLCBqLCBydW5Qb3MsIHN5bUNvdW50LCBzeW1Ub3RhbCwgblNlbGVjdG9ycywgYnl0ZUNvdW50WzI1Nl07Ci0tCWludCBydW5DbnQgPSBydW5DbnQ7IC8qIGZvciBjb21waWxlciAqLwotKwlpbnQgZ3JvdXBDb3VudCwgKmJhc2UsICpsaW1pdCwgc2VsZWN0b3IsCi0rCQlpLCBqLCBzeW1Db3VudCwgc3ltVG90YWwsIG5TZWxlY3RvcnMsIGJ5dGVDb3VudFsyNTZdOwotIAl1aW50OF90IHVjLCBzeW1Ub0J5dGVbMjU2XSwgbXRmU3ltYm9sWzI1Nl0sICpzZWxlY3RvcnM7Ci0gCXVpbnQzMl90ICpkYnVmOwotIAl1bnNpZ25lZCBvcmlnUHRyLCB0OwotKwl1bnNpZ25lZCBkYnVmQ291bnQsIHJ1blBvczsKLSsJdW5zaWduZWQgcnVuQ250ID0gcnVuQ250OyAvKiBmb3IgY29tcGlsZXIgKi8KLSAKLSAJZGJ1ZiA9IGJkLT5kYnVmOwotLQlkYnVmU2l6ZSA9IGJkLT5kYnVmU2l6ZTsKLSAJc2VsZWN0b3JzID0gYmQtPnNlbGVjdG9yczsKLSAKLSAvKiBJbiBiYm94LCB3ZSBhcmUgb2sgd2l0aCBhYm9ydGluZyB0aHJvdWdoIHNldGptcCB3aGljaCBpcyBzZXQgdXAgaW4gc3RhcnRfYnVuemlwICovCi1AQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQotIAkgICBpdCBkaWRuJ3QgYWN0dWFsbHkgd29yay4gKi8KLSAJaWYgKGdldF9iaXRzKGJkLCAxKSkgcmV0dXJuIFJFVFZBTF9PQlNPTEVURV9JTlBVVDsKLSAJb3JpZ1B0ciA9IGdldF9iaXRzKGJkLCAyNCk7Ci0tCWlmICgoaW50KW9yaWdQdHIgPiBkYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOwotKwlpZiAob3JpZ1B0ciA+IGJkLT5kYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOwotIAotIAkvKiBtYXBwaW5nIHRhYmxlOiBpZiBzb21lIGJ5dGUgdmFsdWVzIGFyZSBuZXZlciB1c2VkIChlbmNvZGluZyB0aGluZ3MKLSAJICAgbGlrZSBhc2NpaSB0ZXh0KSwgdGhlIGNvbXByZXNzaW9uIGNvZGUgcmVtb3ZlcyB0aGUgZ2FwcyB0byBoYXZlIGZld2VyCi1AQCAtNDM1LDcgKzQzNSwxNCBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKLSAJCQkgICBzeW1ib2xzLCBidXQgYSBydW4gb2YgbGVuZ3RoIDAgZG9lc24ndCBtZWFuIGFueXRoaW5nIGluIHRoaXMKLSAJCQkgICBjb250ZXh0KS4gIFRodXMgc3BhY2UgaXMgc2F2ZWQuICovCi0gCQkJcnVuQ250ICs9IChydW5Qb3MgPDwgbmV4dFN5bSk7IC8qICtydW5Qb3MgaWYgUlVOQTsgKzIqcnVuUG9zIGlmIFJVTkIgKi8KLS0JCQlpZiAocnVuUG9zIDwgZGJ1ZlNpemUpIHJ1blBvcyA8PD0gMTsKLSsvL1RoZSAzMi1iaXQgb3ZlcmZsb3cgb2YgcnVuQ250IHdhc24ndCB5ZXQgc2VlbiwgYnV0IHByb2JhYmx5IGNhbiBoYXBwZW4uCi0rLy9UaGlzIHdvdWxkIGJlIHRoZSBmaXggKGNhdGNoZXMgdG9vIGxhcmdlIGNvdW50IHdheSBiZWZvcmUgaXQgY2FuIG92ZXJmbG93KToKLSsvLwkJCWlmIChydW5DbnQgPiBiZC0+ZGJ1ZlNpemUpIHsKLSsvLwkJCQlkYmcoInJ1bkNudDoldSA+IGRidWZTaXplOiV1IFJFVFZBTF9EQVRBX0VSUk9SIiwKLSsvLwkJCQkJCXJ1bkNudCwgYmQtPmRidWZTaXplKTsKLSsvLwkJCQlyZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7Ci0rLy8JCQl9Ci0rCQkJaWYgKHJ1blBvcyA8IGJkLT5kYnVmU2l6ZSkgcnVuUG9zIDw8PSAxOwotIAkJCWdvdG8gZW5kX29mX2h1ZmZtYW5fbG9vcDsKLSAJCX0KLSAKLUBAIC00NDUsMTQgKzQ1MiwxNSBAQCBzdGF0aWMgaW50IGdldF9uZXh0X2Jsb2NrKGJ1bnppcF9kYXRhICpiZCkKLSAJCSAgIGxpdGVyYWwgdXNlZCBpcyB0aGUgb25lIGF0IHRoZSBoZWFkIG9mIHRoZSBtdGZTeW1ib2wgYXJyYXkuKSAqLwotIAkJaWYgKHJ1blBvcyAhPSAwKSB7Ci0gCQkJdWludDhfdCB0bXBfYnl0ZTsKLS0JCQlpZiAoZGJ1ZkNvdW50ICsgcnVuQ250ID4gZGJ1ZlNpemUpIHsKLS0JCQkJZGJnKCJkYnVmQ291bnQ6JWQrcnVuQ250OiVkICVkID4gZGJ1ZlNpemU6JWQgUkVUVkFMX0RBVEFfRVJST1IiLAotLQkJCQkJCWRidWZDb3VudCwgcnVuQ250LCBkYnVmQ291bnQgKyBydW5DbnQsIGRidWZTaXplKTsKLSsJCQlpZiAoZGJ1ZkNvdW50ICsgcnVuQ250ID4gYmQtPmRidWZTaXplKSB7Ci0rCQkJCWRiZygiZGJ1ZkNvdW50OiV1K3J1bkNudDoldSAldSA+IGRidWZTaXplOiV1IFJFVFZBTF9EQVRBX0VSUk9SIiwKLSsJCQkJCQlkYnVmQ291bnQsIHJ1bkNudCwgZGJ1ZkNvdW50ICsgcnVuQ250LCBiZC0+ZGJ1ZlNpemUpOwotIAkJCQlyZXR1cm4gUkVUVkFMX0RBVEFfRVJST1I7Ci0gCQkJfQotIAkJCXRtcF9ieXRlID0gc3ltVG9CeXRlW210ZlN5bWJvbFswXV07Ci0gCQkJYnl0ZUNvdW50W3RtcF9ieXRlXSArPSBydW5DbnQ7Ci0tCQkJd2hpbGUgKC0tcnVuQ250ID49IDApIGRidWZbZGJ1ZkNvdW50KytdID0gKHVpbnQzMl90KXRtcF9ieXRlOwotKwkJCXdoaWxlICgoaW50KS0tcnVuQ250ID49IDApCi0rCQkJCWRidWZbZGJ1ZkNvdW50KytdID0gKHVpbnQzMl90KXRtcF9ieXRlOwotIAkJCXJ1blBvcyA9IDA7Ci0gCQl9Ci0gCi1AQCAtNDY2LDcgKzQ3NCw3IEBAIHN0YXRpYyBpbnQgZ2V0X25leHRfYmxvY2soYnVuemlwX2RhdGEgKmJkKQotIAkJICAgZmlyc3Qgc3ltYm9sIGluIHRoZSBtdGYgYXJyYXksIHBvc2l0aW9uIDAsIHdvdWxkIGhhdmUgYmVlbiBoYW5kbGVkCi0gCQkgICBhcyBwYXJ0IG9mIGEgcnVuIGFib3ZlLiAgVGhlcmVmb3JlIDEgdW51c2VkIG10ZiBwb3NpdGlvbiBtaW51cwotIAkJICAgMiBub24tbGl0ZXJhbCBuZXh0U3ltIHZhbHVlcyBlcXVhbHMgLTEuKSAqLwotLQkJaWYgKGRidWZDb3VudCA+PSBkYnVmU2l6ZSkgcmV0dXJuIFJFVFZBTF9EQVRBX0VSUk9SOwotKwkJaWYgKGRidWZDb3VudCA+PSBiZC0+ZGJ1ZlNpemUpIHJldHVybiBSRVRWQUxfREFUQV9FUlJPUjsKLSAJCWkgPSBuZXh0U3ltIC0gMTsKLSAJCXVjID0gbXRmU3ltYm9sW2ldOwotIAotLS0gCi1jZ2l0IHYwLjEyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9DVkUtMjAxNy0xNTg3NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODc0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2I0ZWQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L0NWRS0yMDE3LTE1ODc0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBlNzVjMDFiYjMyNDlkZjE2MjAxYjQ4MmI3OWJiMjRiZWMzYjU4MTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjcgT2N0IDIwMTcgMTU6Mzc6MDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdW5sem1hOiBmaXggU0VHViwgY2xvc2VzIDEwNDM2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9OWFjNDJjNTAwNTg2ZmE1ZjEwYTFmNmQyMmMzZjc5N2RmMTFiMWY2Yl0KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jCi1pbmRleCAyOWVlZTJhLi40MWU0OTJmIDEwMDY0NAotLS0tIGEvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jCi0rKysgYi9hcmNoaXZhbC9saWJhcmNoaXZlL2RlY29tcHJlc3NfdW5sem1hLmMKLUBAIC0zNTMsNiArMzUzLDEwIEBAIHVucGFja19sem1hX3N0cmVhbSh0cmFuc2Zvcm1lcl9zdGF0ZV90ICp4c3RhdGUpCi0gCQkJCQkJcG9zID0gYnVmZmVyX3BvcyAtIHJlcDA7Ci0gCQkJCQkJaWYgKChpbnQzMl90KXBvcyA8IDApIHsKLSAJCQkJCQkJcG9zICs9IGhlYWRlci5kaWN0X3NpemU7Ci0rCQkJCQkJCS8qIGJ1ZyAxMDQzNiBoYXMgYW4gZXhhbXBsZSBmaWxlIHdoZXJlIHRoaXMgdHJpZ2dlcnM6ICovCi0rCQkJCQkJCWlmICgoaW50MzJfdClwb3MgPCAwKQotKwkJCQkJCQkJZ290byBiYWQ7Ci0rCi0gCQkJCQkJCS8qIHNlZSB1bnppcF9iYWRfbHptYV8yLnppcDogKi8KLSAJCQkJCQkJaWYgKHBvcyA+PSBidWZmZXJfc2l6ZSkKLSAJCQkJCQkJCWdvdG8gYmFkOwotLS0gCi0yLjE5LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtQ1ZFLTIwMTctMTY1NDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMTllZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1DVkUtMjAxNy0xNjU0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gYzM3OTdkNDBhMWM1NzM1MjE5MmM2MTA2Y2MwZjQzNWU3ZDljMTFlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDcgTm92IDIwMTcgMTg6MDk6MjkgKzAxMDAKLVN1YmplY3Q6IGxpbmVlZGl0OiBkbyBub3QgdGFiLWNvbXBsZXRlIGFueSBzdHJpbmdzIHdoaWNoIGhhdmUgY29udHJvbAotIGNoYXJhY3RlcnMKLQotZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCi1hZGRfbWF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MSAgICAgIDY4ICAgICArMjcKLQotQ1ZFOiBDVkUtMjAxNy0xNjU0NAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmJiL2xpbmVlZGl0LmMgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYmIvbGluZWVkaXQuYyBiL2xpYmJiL2xpbmVlZGl0LmMKLWluZGV4IGMwZTM1YmIuLjU2ZTgxNDAgMTAwNjQ0Ci0tLS0gYS9saWJiYi9saW5lZWRpdC5jCi0rKysgYi9saWJiYi9saW5lZWRpdC5jCi1AQCAtNjQ1LDYgKzY0NSwxOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3RhYl9jb21wbGV0aW9uX2RhdGEodm9pZCkKLSAKLSBzdGF0aWMgdm9pZCBhZGRfbWF0Y2goY2hhciAqbWF0Y2hlZCkKLSB7Ci0rCXVuc2lnbmVkIGNoYXIgKnAgPSAodW5zaWduZWQgY2hhciopbWF0Y2hlZDsKLSsJd2hpbGUgKCpwKSB7Ci0rCQkvKiBFU0MgYXR0YWNrIGZpeDogZHJvcCBhbnkgc3RyaW5nIHdpdGggY29udHJvbCBjaGFycyAqLwotKwkJaWYgKCpwIDwgJyAnCi0rCQkgfHwgKCFFTkFCTEVfVU5JQ09ERV9TVVBQT1JUICYmICpwID49IDB4N2YpCi0rCQkgfHwgKEVOQUJMRV9VTklDT0RFX1NVUFBPUlQgJiYgKnAgPT0gMHg3ZikKLSsJCSkgewotKwkJCWZyZWUobWF0Y2hlZCk7Ci0rCQkJcmV0dXJuOwotKwkJfQotKwkJcCsrOwotKwl9Ci0gCW1hdGNoZXMgPSB4cmVhbGxvY192ZWN0b3IobWF0Y2hlcywgNCwgbnVtX21hdGNoZXMpOwotIAltYXRjaGVzW251bV9tYXRjaGVzXSA9IG1hdGNoZWQ7Ci0gCW51bV9tYXRjaGVzKys7Ci0tLSAKLWNnaXQgdjAuMTIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtZml4LWx6bWEtc2VnZmF1bHRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1maXgtbHptYS1zZWdmYXVsdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNmRmYTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvYnVzeWJveC1maXgtbHptYS1zZWdmYXVsdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotYnVzeWJveC0xLjI3LjI6IEZpeCBsem1hIHNlZ2ZhdWx0cwotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVncy5idXN5Ym94Lm5ldC9zaG93X2J1Zy5jZ2k/aWQ9MTA4NzEKLQotbGliYXJjaGl2ZTogY2hlY2sgYnVmZmVyIGluZGV4IGluIGx6bWFfZGVjb21wcmVzcwotCi1XaXRoIHNwZWNpZmljIGRlZmNvbmZpZyBidXN5Ym94IGZhaWxzIHRvIGNoZWNrIHppcCBmaWxlaGVhZGVyIG1hZ2ljCi0oYXJjaGl2YWwvdW56aXAuYykgYW5kIHVzZXMgKGFyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc191bmx6bWEuYykKLWZvciBkZWNvbXByZXNzaW9uIHdoaWNoIGxlYWRzIHRvIHNlZ21lbnRhdGlvbiBmYXVsdC4gSXQgcHJldmVudHMgYWNjZXNzaW5nIGludG8KLWJ1ZmZlciwgd2hpY2ggaXMgc21hbGxlciB0aGFuIHBvcyBpbmRleC4gUGF0Y2ggaW5jbHVkZXMgbXVsdGlwbGUgc2VnbWVudGF0aW9uCi1mYXVsdCBmaXhlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWEzNjk4NmJiODAyODljMWNkOGQxNWE1NTdlNDkyMDdjOWE0Mjk0NmJdCi1idWc6IDEwNDM2IDEwODcxCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc191bmx6bWEuYyBiL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc191bmx6bWEuYwotaW5kZXggYTkwNDA4Ny4uMjllZWUyYSAxMDA2NDQKLS0tLSBhL2FyY2hpdmFsL2xpYmFyY2hpdmUvZGVjb21wcmVzc191bmx6bWEuYwotKysrIGIvYXJjaGl2YWwvbGliYXJjaGl2ZS9kZWNvbXByZXNzX3VubHptYS5jCi1AQCAtMTEsNiArMTEsMTQgQEAKLSAjaW5jbHVkZSAibGliYmIuaCIKLSAjaW5jbHVkZSAiYmJfYXJjaGl2ZS5oIgotIAotKwotKyNpZiAwCi0rIyBkZWZpbmUgZGJnKC4uLikgYmJfZXJyb3JfbXNnKF9fVkFfQVJHU19fKQotKyNlbHNlCi0rIyBkZWZpbmUgZGJnKC4uLikgKCh2b2lkKTApCi0rI2VuZGlmCi0rCi0rCi0gI2lmIEVOQUJMRV9GRUFUVVJFX0xaTUFfRkFTVAotICMgIGRlZmluZSBzcGVlZF9pbmxpbmUgQUxXQVlTX0lOTElORQotICMgIGRlZmluZSBzaXplX2lubGluZQotQEAgLTIxNyw2ICsyMjUsNyBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAlyY190ICpyYzsKLSAJaW50IGk7Ci0gCXVpbnQ4X3QgKmJ1ZmZlcjsKLSsJdWludDMyX3QgYnVmZmVyX3NpemU7Ci0gCXVpbnQ4X3QgcHJldmlvdXNfYnl0ZSA9IDA7Ci0gCXNpemVfdCBidWZmZXJfcG9zID0gMCwgZ2xvYmFsX3BvcyA9IDA7Ci0gCWludCBsZW4gPSAwOwotQEAgLTI0Niw3ICsyNTUsOCBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAlpZiAoaGVhZGVyLmRpY3Rfc2l6ZSA9PSAwKQotIAkJaGVhZGVyLmRpY3Rfc2l6ZSsrOwotIAotLQlidWZmZXIgPSB4bWFsbG9jKE1JTihoZWFkZXIuZHN0X3NpemUsIGhlYWRlci5kaWN0X3NpemUpKTsKLSsJYnVmZmVyX3NpemUgPSBNSU4oaGVhZGVyLmRzdF9zaXplLCBoZWFkZXIuZGljdF9zaXplKTsKLSsJYnVmZmVyID0geG1hbGxvYyhidWZmZXJfc2l6ZSk7Ci0gCi0gCXsKLSAJCWludCBudW1fcHJvYnM7Ci1AQCAtMzQxLDggKzM1MSwxMiBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAkJCQkJCXN0YXRlID0gc3RhdGUgPCBMWk1BX05VTV9MSVRfU1RBVEVTID8gOSA6IDExOwotIAotIAkJCQkJCXBvcyA9IGJ1ZmZlcl9wb3MgLSByZXAwOwotLQkJCQkJCWlmICgoaW50MzJfdClwb3MgPCAwKQotKwkJCQkJCWlmICgoaW50MzJfdClwb3MgPCAwKSB7Ci0gCQkJCQkJCXBvcyArPSBoZWFkZXIuZGljdF9zaXplOwotKwkJCQkJCQkvKiBzZWUgdW56aXBfYmFkX2x6bWFfMi56aXA6ICovCi0rCQkJCQkJCWlmIChwb3MgPj0gYnVmZmVyX3NpemUpCi0rCQkJCQkJCQlnb3RvIGJhZDsKLSsJCQkJCQl9Ci0gCQkJCQkJcHJldmlvdXNfYnl0ZSA9IGJ1ZmZlcltwb3NdOwotIAkJCQkJCWdvdG8gb25lX2J5dGUxOwotICNlbHNlCi1AQCAtNDE3LDYgKzQzMSwxMCBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotIAkJCQkJCWZvciAoOyBudW1fYml0czIgIT0gTFpNQV9OVU1fQUxJR05fQklUUzsgbnVtX2JpdHMyLS0pCi0gCQkJCQkJCXJlcDAgPSAocmVwMCA8PCAxKSB8IHJjX2RpcmVjdF9iaXQocmMpOwotIAkJCQkJCXJlcDAgPDw9IExaTUFfTlVNX0FMSUdOX0JJVFM7Ci0rCQkJCQkJaWYgKChpbnQzMl90KXJlcDAgPCAwKSB7Ci0rCQkJCQkJCWRiZygiJWQgcmVwMDolZCIsIF9fTElORV9fLCByZXAwKTsKLSsJCQkJCQkJZ290byBiYWQ7Ci0rCQkJCQkJfQotIAkJCQkJCXByb2IzID0gcCArIExaTUFfQUxJR047Ci0gCQkJCQl9Ci0gCQkJCQlpMiA9IDE7Ci1AQCAtNDUwLDggKzQ2OCwxMiBAQCB1bnBhY2tfbHptYV9zdHJlYW0odHJhbnNmb3JtZXJfc3RhdGVfdCAqeHN0YXRlKQotICBJRl9OT1RfRkVBVFVSRV9MWk1BX0ZBU1Qoc3RyaW5nOikKLSAJCQlkbyB7Ci0gCQkJCXVpbnQzMl90IHBvcyA9IGJ1ZmZlcl9wb3MgLSByZXAwOwotLQkJCQlpZiAoKGludDMyX3QpcG9zIDwgMCkKLSsJCQkJaWYgKChpbnQzMl90KXBvcyA8IDApIHsKLSAJCQkJCXBvcyArPSBoZWFkZXIuZGljdF9zaXplOwotKwkJCQkJLyogbW9yZSBzdHJpbmdlbnQgdGVzdCAoc2VlIHVuemlwX2JhZF9sem1hXzEuemlwKTogKi8KLSsJCQkJCWlmIChwb3MgPj0gYnVmZmVyX3NpemUpCi0rCQkJCQkJZ290byBiYWQ7Ci0rCQkJCX0KLSAJCQkJcHJldmlvdXNfYnl0ZSA9IGJ1ZmZlcltwb3NdOwotICBJRl9OT1RfRkVBVFVSRV9MWk1BX0ZBU1Qob25lX2J5dGUyOikKLSAJCQkJYnVmZmVyW2J1ZmZlcl9wb3MrK10gPSBwcmV2aW91c19ieXRlOwotQEAgLTQ3OCw2ICs1MDAsMTIgQEAgdW5wYWNrX2x6bWFfc3RyZWFtKHRyYW5zZm9ybWVyX3N0YXRlX3QgKnhzdGF0ZSkKLSAJCUlGX0RFU0tUT1AodG90YWxfd3JpdHRlbiArPSBidWZmZXJfcG9zOykKLSAJCWlmICh0cmFuc2Zvcm1lcl93cml0ZSh4c3RhdGUsIGJ1ZmZlciwgYnVmZmVyX3BvcykgIT0gKHNzaXplX3QpYnVmZmVyX3BvcykgewotICBiYWQ6Ci0rCQkJLyogT25lIG9mIG91ciB1c2VycywgYmJ1bnBhY2soKSwgZXhwZWN0cyBfdXNfIHRvIGVtaXQKLSsJCQkgKiB0aGUgZXJyb3IgbWVzc2FnZSAoc2luY2UgaXQncyB0aGUgYmVzdCBwbGFjZSB0byBnaXZlCi0rCQkJICogcG90ZW50aWFsbHkgbW9yZSBkZXRhaWxlZCBpbmZvcm1hdGlvbikuCi0rCQkJICogRG8gbm90IGZhaWwgc2lsZW50bHkuCi0rCQkJICovCi0rCQkJYmJfZXJyb3JfbXNnKCJjb3JydXB0ZWQgZGF0YSIpOwotIAkJCXRvdGFsX3dyaXR0ZW4gPSAtMTsgLyogZmFpbHVyZSAqLwotIAkJfQotIAkJcmNfZnJlZShyYyk7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9idXN5Ym94LXVkaGNwYy1ub19kZWNvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCmluZGV4IDU4MmEyNTguLjc2ZGFhZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoCkBAIC0zMSwxMSArMzEsMTEgQEAKICBuZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQogCi1JbmRleDogYnVzeWJveC0xLjI3LjIvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCitJbmRleDogYnVzeWJveC0xLjI5LjEvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYnVzeWJveC0xLjI3LjIub3JpZy9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLSsrKyBidXN5Ym94LTEuMjcuMi9uZXR3b3JraW5nL3VkaGNwL2RoY3BjLmMKLUBAIC00OSw2ICs0OSw4IEBAIHN0cnVjdCB0cGFja2V0X2F1eGRhdGEgeworLS0tIGJ1c3lib3gtMS4yOS4xLm9yaWcvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCisrKysgYnVzeWJveC0xLjI5LjEvbmV0d29ya2luZy91ZGhjcC9kaGNwYy5jCitAQCAtNDgsNiArNDgsOCBAQAogIH07CiAgI2VuZGlmCiAgCkBAIC00NCw3ICs0NCw3IEBACiAgCiAgLyogInN0cnVjdCBjbGllbnRfY29uZmlnX3QgY2xpZW50X2NvbmZpZyIgaXMgaW4gYmJfY29tbW9uX2J1ZnNpejEgKi8KICAKLUBAIC0xMDQsOCArMTA2LDkgQEAgZW51bSB7CitAQCAtMTAzLDggKzEwNSw5IEBACiAgCU9QVF94ID0gMSA8PCAxOCwKICAJT1BUX2YgPSAxIDw8IDE5LAogIAlPUFRfQiA9IDEgPDwgMjAsCkBAIC01NSw3ICs1NSw3IEBACiAgCVVTRV9GT1JfTU1VKCAgICAgICAgICAgICBPUFRCSVRfYiwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BDX0FSUElORyhPUFRCSVRfYSwpCiAgCUlGX0ZFQVRVUkVfVURIQ1BfUE9SVCggICBPUFRCSVRfUCwpCi1AQCAtMTExMCw3ICsxMTEzLDggQEAgc3RhdGljIHZvaWQgcGVyZm9ybV9yZW5ldyh2b2lkKQorQEAgLTExMTYsNyArMTExOSw4IEBACiAgCQlzdGF0ZSA9IFJFTkVXX1JFUVVFU1RFRDsKICAJCWJyZWFrOwogIAljYXNlIFJFTkVXX1JFUVVFU1RFRDogLyogaW1wYXRpZW50IGFyZSB3ZT8gZmluZSwgc3F1YXJlIDEgKi8KQEAgLTY1LDcgKzY1LDcgQEAKICAJY2FzZSBSRVFVRVNUSU5HOgogIAljYXNlIFJFTEVBU0VEOgogIAkJY2hhbmdlX2xpc3Rlbl9tb2RlKExJU1RFTl9SQVcpOwotQEAgLTExNDYsNyArMTE1MCw4IEBAIHN0YXRpYyB2b2lkIHBlcmZvcm1fcmVsZWFzZSh1aW50MzJfdCBzZXJ2ZXJfYWRkciwgdWludDMyX3QgcmVxdWVzdGVkX2lwKQorQEAgLTExNTIsNyArMTE1Niw4IEBACiAgICogVXNlcnMgcmVxdWVzdGVkIHRvIGJlIG5vdGlmaWVkIGluIGFsbCBjYXNlcywgZXZlbiBpZiBub3QgaW4gb25lCiAgICogb2YgdGhlIHN0YXRlcyBhYm92ZS4KICAgKi8KQEAgLTc1LDE2ICs3NSwxNiBAQAogIAogIAljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX05PTkUpOwogIAlzdGF0ZSA9IFJFTEVBU0VEOwotQEAgLTEyOTgsNyArMTMwMyw3IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQotIAkvKiBPLHg6IGxpc3Q7IC1ULC10LC1BIHRha2UgbnVtZXJpYyBwYXJhbSAqLwotIAlJRl9VREhDUF9WRVJCT1NFKG9wdF9jb21wbGVtZW50YXJ5ID0gInZ2IjspCi0gCUlGX0xPTkdfT1BUUyhhcHBsZXRfbG9uZ19vcHRpb25zID0gdWRoY3BjX2xvbmdvcHRzOykKLS0Jb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQiIKLSsJb3B0ID0gZ2V0b3B0MzIoYXJndiwgIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQkQiCitAQCAtMTI2NSw3ICsxMjcwLDcgQEAKKyAJLyogUGFyc2UgY29tbWFuZCBsaW5lICovCisgCW9wdCA9IGdldG9wdDMybG9uZyhhcmd2LCAiXiIKKyAJCS8qIE8seDogbGlzdDsgLVQsLXQsLUEgdGFrZSBudW1lcmljIHBhcmFtICovCistCQkiQ1Y6SDpoOkY6aTpucDpxUnI6czpUOit0OitTQTorTzoqb3g6KmZCIgorKwkJIkNWOkg6aDpGOmk6bnA6cVJyOnM6VDordDorU0E6K086Km94OipmQkQiCiAgCQlVU0VfRk9SX01NVSgiYiIpCiAgCQlJRl9GRUFUVVJFX1VESENQQ19BUlBJTkcoImE6OiIpCiAgCQlJRl9GRUFUVVJFX1VESENQX1BPUlQoIlA6IikKLUBAIC0xNDA5LDYgKzE0MTQsMTAgQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCitAQCAtMTM3Niw2ICsxMzgxLDEwIEBACiAgCQlsb2dtb2RlIHw9IExPR01PREVfU1lTTE9HOwogIAl9CiAgCkBAIC05NCw4ICs5NCw4IEBACiArCiAgCS8qIE1ha2Ugc3VyZSBmZCAwLDEsMiBhcmUgb3BlbiAqLwogIAliYl9zYW5pdGl6ZV9zdGRpbygpOwotIAkvKiBFcXVpdmFsZW50IG9mIGRvaW5nIGEgZmZsdXNoIGFmdGVyIGV2ZXJ5IFxuICovCi1AQCAtMTQyMyw3ICsxNDMyLDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCisgCS8qIENyZWF0ZSBwaWRmaWxlICovCitAQCAtMTM4OCw3ICsxMzk3LDggQEAKICAJc3JhbmQobW9ub3RvbmljX3VzKCkpOwogIAogIAlzdGF0ZSA9IElOSVRfU0VMRUNUSU5HOwpAQCAtMTA1LDcgKzEwNSw3IEBACiAgCWNoYW5nZV9saXN0ZW5fbW9kZShMSVNURU5fUkFXKTsKICAJcGFja2V0X251bSA9IDA7CiAgCXRpbWVvdXQgPSAwOwotQEAgLTE1NzcsNyArMTU4Nyw4IEBAIGludCB1ZGhjcGNfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQorQEAgLTE1NTUsNyArMTU2NSw4IEBACiAgCQkJCX0KICAJCQkJLyogVGltZWQgb3V0LCBlbnRlciBpbml0IHN0YXRlICovCiAgCQkJCWJiX2Vycm9yX21zZygibGVhc2UgbG9zdCwgZW50ZXJpbmcgaW5pdCBzdGF0ZSIpOwpAQCAtMTE1LDIzICsxMTUsMjkgQEAKICAJCQkJc3RhdGUgPSBJTklUX1NFTEVDVElORzsKICAJCQkJY2xpZW50X2NvbmZpZy5maXJzdF9zZWNzID0gMDsgLyogbWFrZSBzZWNzIGZpZWxkIGNvdW50IGZyb20gMCAqLwogIAkJCQkvKnRpbWVvdXQgPSAwOyAtIGFscmVhZHkgaXMgKi8KLUBAIC0xNzcwLDcgKzE3ODEsOCBAQCBpbnQgdWRoY3BjX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGFyICoqYXJndikKK0BAIC0xNzQ4LDggKzE3NTksMTAgQEAKKyAJCQkJCQkJIihnb3QgQVJQIHJlcGx5KSwgZGVjbGluaW5nIik7CiAgCQkJCQkJc2VuZF9kZWNsaW5lKC8qeGlkLCovIHNlcnZlcl9hZGRyLCBwYWNrZXQueWlhZGRyKTsKICAKLSAJCQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKKy0JCQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKIC0JCQkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKKysJCQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykgewogKwkJCQkJCQlpZiAoYWxsb3dfZGVjb25maWcpCiArCQkJCQkJCQl1ZGhjcF9ydW5fc2NyaXB0KE5VTEwsICJkZWNvbmZpZyIpOworKwkJCQkJCX0KICAJCQkJCQljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX1JBVyk7CiAgCQkJCQkJc3RhdGUgPSBJTklUX1NFTEVDVElORzsKICAJCQkJCQljbGllbnRfY29uZmlnLmZpcnN0X3NlY3MgPSAwOyAvKiBtYWtlIHNlY3MgZmllbGQgY291bnQgZnJvbSAwICovCi1AQCAtMTg0MCw3ICsxODUyLDggQEAgaW50IHVkaGNwY19tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCitAQCAtMTgxOCw4ICsxODMxLDEwIEBACisgCQkJCS8qIHJldHVybiB0byBpbml0IHN0YXRlICovCiAgCQkJCWJiX2Vycm9yX21zZygicmVjZWl2ZWQgJXMiLCAiREhDUCBOQUsiKTsKICAJCQkJdWRoY3BfcnVuX3NjcmlwdCgmcGFja2V0LCAibmFrIik7Ci0gCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKQorLQkJCQlpZiAoc3RhdGUgIT0gUkVRVUVTVElORykKIC0JCQkJCXVkaGNwX3J1bl9zY3JpcHQoTlVMTCwgImRlY29uZmlnIik7CisrCQkJCWlmIChzdGF0ZSAhPSBSRVFVRVNUSU5HKSB7CiArCQkJCQlpZiAoYWxsb3dfZGVjb25maWcpCiArCQkJCQkJdWRoY3BfcnVuX3NjcmlwdChOVUxMLCAiZGVjb25maWciKTsKKysJCQkJfQogIAkJCQljaGFuZ2VfbGlzdGVuX21vZGUoTElTVEVOX1JBVyk7CiAgCQkJCXNsZWVwKDMpOyAvKiBhdm9pZCBleGNlc3NpdmUgbmV0d29yayB0cmFmZmljICovCiAgCQkJCXN0YXRlID0gSU5JVF9TRUxFQ1RJTkc7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcKaW5kZXggNTlkOTNjNy4uMzIyMTNjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvZGVmY29uZmlnCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwpAQCAtMSwxMiArMSwxMiBAQAogIwogIyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBtYWtlIGNvbmZpZzogZG9uJ3QgZWRpdAotIyBCdXN5Ym94IHZlcnNpb246IDEuMjcuMgotIyBXZWQgU2VwIDI3IDA4OjU2OjEzIDIwMTcKKyMgQnVzeWJveCB2ZXJzaW9uOiAxLjI5LjEKKyMgVGh1IEp1bCAxOSAxMTowOTo0NiAyMDE4CiAjCiBDT05GSUdfSEFWRV9ET1RfQ09ORklHPXkKIAogIwotIyBCdXN5Ym94IFNldHRpbmdzCisjIFNldHRpbmdzCiAjCiAjIENPTkZJR19ERVNLVE9QIGlzIG5vdCBzZXQKICMgQ09ORklHX0VYVFJBX0NPTVBBVCBpcyBub3Qgc2V0CkBAIC03OCw3ICs3OCw3IEBACiAjIENPTkZJR19FRkVOQ0UgaXMgbm90IHNldAogCiAjCi0jIEJ1c3lib3ggTGlicmFyeSBUdW5pbmcKKyMgTGlicmFyeSBUdW5pbmcKICMKICMgQ09ORklHX0ZFQVRVUkVfVVNFX0JTU19UQUlMIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX1JUTUlOTUFYPXkKQEAgLTkwLDYgKzkwLDcgQEAKIENPTkZJR19TSEEzX1NNQUxMPTEKIENPTkZJR19GRUFUVVJFX0ZBU1RfVE9QPXkKICMgQ09ORklHX0ZFQVRVUkVfRVRDX05FVFdPUktTIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfRVRDX1NFUlZJQ0VTIGlzIG5vdCBzZXQKIENPTkZJR19GRUFUVVJFX0VESVRJTkc9eQogQ09ORklHX0ZFQVRVUkVfRURJVElOR19NQVhfTEVOPTEwMjQKICMgQ09ORklHX0ZFQVRVUkVfRURJVElOR19WSSBpcyBub3Qgc2V0CkBAIC0zMjEsNiArMzIyLDcgQEAKIENPTkZJR19UVFk9eQogQ09ORklHX1VOQU1FPXkKIENPTkZJR19VTkFNRV9PU05BTUU9IkdOVS9MaW51eCIKKyMgQ09ORklHX0JCX0FSQ0ggaXMgbm90IHNldAogQ09ORklHX1VOSVE9eQogQ09ORklHX1VOTElOSz15CiBDT05GSUdfVVNMRUVQPXkKQEAgLTM5Myw2ICszOTUsMTQgQEAKIENPTkZJR19XSElDSD15CiAKICMKKyMga2xpYmMtdXRpbHMKKyMKKyMgQ09ORklHX01JTklQUyBpcyBub3Qgc2V0CisjIENPTkZJR19OVUtFIGlzIG5vdCBzZXQKKyMgQ09ORklHX1JFU1VNRSBpcyBub3Qgc2V0CisjIENPTkZJR19SVU5fSU5JVCBpcyBub3Qgc2V0CisKKyMKICMgRWRpdG9ycwogIwogQ09ORklHX0FXSz15CkBAIC00NzAsNyArNDgwLDcgQEAKICMgQ09ORklHX0ZFQVRVUkVfQk9PVENIQVJURF9DT05GSUdfRklMRSBpcyBub3Qgc2V0CiAjIENPTkZJR19IQUxUIGlzIG5vdCBzZXQKICMgQ09ORklHX1BPV0VST0ZGIGlzIG5vdCBzZXQKLSMgQ09ORklHX1JFQk9PVCBpcyBub3Qgc2V0CitDT05GSUdfUkVCT09UPXkKICMgQ09ORklHX0ZFQVRVUkVfQ0FMTF9URUxJTklUIGlzIG5vdCBzZXQKICMgQ09ORklHX1RFTElOSVRfUEFUSCBpcyBub3Qgc2V0CiAjIENPTkZJR19JTklUIGlzIG5vdCBzZXQKQEAgLTY3OCw2ICs2ODgsMTAgQEAKIENPTkZJR19GRUFUVVJFX01PVU5UX0xPT1BfQ1JFQVRFPXkKICMgQ09ORklHX0ZFQVRVUkVfTVRBQl9TVVBQT1JUIGlzIG5vdCBzZXQKICMgQ09ORklHX1ZPTFVNRUlEIGlzIG5vdCBzZXQKKworIworIyBGaWxlc3lzdGVtL1ZvbHVtZSBpZGVudGlmaWNhdGlvbgorIwogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9CQ0FDSEUgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9WT0xVTUVJRF9CVFJGUyBpcyBub3Qgc2V0CiAjIENPTkZJR19GRUFUVVJFX1ZPTFVNRUlEX0NSQU1GUyBpcyBub3Qgc2V0CkBAIC03MjUsNiArNzM5LDcgQEAKICMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fRFJJVkVfUkVTRVQgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9IRFBBUk1fSERJT19UUklTVEFURV9IV0lGIGlzIG5vdCBzZXQKICMgQ09ORklHX0ZFQVRVUkVfSERQQVJNX0hESU9fR0VUU0VUX0RNQSBpcyBub3Qgc2V0CisjIENPTkZJR19IRVhFRElUIGlzIG5vdCBzZXQKICMgQ09ORklHX0kyQ0dFVCBpcyBub3Qgc2V0CiAjIENPTkZJR19JMkNTRVQgaXMgbm90IHNldAogIyBDT05GSUdfSTJDRFVNUCBpcyBub3Qgc2V0CkBAIC04MDcsNiArODIyLDcgQEAKICMgQ09ORklHX1JVTkxFVkVMIGlzIG5vdCBzZXQKICMgQ09ORklHX1JYIGlzIG5vdCBzZXQKICMgQ09ORklHX1NFVFNJRCBpcyBub3Qgc2V0CisjIENPTkZJR19TRVRGQVRUUiBpcyBub3Qgc2V0CiBDT05GSUdfU1RSSU5HUz15CiBDT05GSUdfVElNRT15CiAjIENPTkZJR19USU1FT1VUIGlzIG5vdCBzZXQKQEAgLTkxMiw2ICs5MjgsOCBAQAogQ09ORklHX1JPVVRFPXkKICMgQ09ORklHX1NMQVRUQUNIIGlzIG5vdCBzZXQKICMgQ09ORklHX1NTTF9DTElFTlQgaXMgbm90IHNldAorIyBDT05GSUdfVEMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9UQ19JTkdSRVNTIGlzIG5vdCBzZXQKICMgQ09ORklHX1RDUFNWRCBpcyBub3Qgc2V0CiAjIENPTkZJR19VRFBTVkQgaXMgbm90IHNldAogQ09ORklHX1RFTE5FVD15CkBAIC05NDksMTMgKzk2Nyw5IEBACiAjIENPTkZJR19GRUFUVVJFX1dHRVRfT1BFTlNTTCBpcyBub3Qgc2V0CiAjIENPTkZJR19XSE9JUyBpcyBub3Qgc2V0CiAjIENPTkZJR19aQ0lQIGlzIG5vdCBzZXQKLSMgQ09ORklHX1VESENQQzYgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzM2NDYgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzQ3MDQgaXMgbm90IHNldAotIyBDT05GSUdfRkVBVFVSRV9VREhDUEM2X1JGQzQ4MzMgaXMgbm90IHNldAogQ09ORklHX1VESENQRD15Ci0jIENPTkZJR19GRUFUVVJFX1VESENQRF9XUklURV9MRUFTRVNfRUFSTFkgaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9VREhDUERfQkFTRV9JUF9PTl9NQUMgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9VREhDUERfV1JJVEVfTEVBU0VTX0VBUkxZIGlzIG5vdCBzZXQKIENPTkZJR19ESENQRF9MRUFTRVNfRklMRT0iL3Zhci9saWIvbWlzYy91ZGhjcGQubGVhc2VzIgogQ09ORklHX0RVTVBMRUFTRVM9eQogIyBDT05GSUdfREhDUFJFTEFZIGlzIG5vdCBzZXQKQEAgLTk2Myw2ICs5NzcsMTUgQEAKIENPTkZJR19GRUFUVVJFX1VESENQQ19BUlBJTkc9eQogQ09ORklHX0ZFQVRVUkVfVURIQ1BDX1NBTklUSVpFT1BUPXkKIENPTkZJR19VREhDUENfREVGQVVMVF9TQ1JJUFQ9Ii91c3Ivc2hhcmUvdWRoY3BjL2RlZmF1bHQuc2NyaXB0IgorIyBDT05GSUdfVURIQ1BDNiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDMzY0NiBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDNDcwNCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDNDgzMyBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1VESENQQzZfUkZDNTk3MCBpcyBub3Qgc2V0CisKKyMKKyMgQ29tbW9uIG9wdGlvbnMgZm9yIERIQ1AgYXBwbGV0cworIwogIyBDT05GSUdfRkVBVFVSRV9VREhDUF9QT1JUIGlzIG5vdCBzZXQKIENPTkZJR19VREhDUF9ERUJVRz0wCiAjIENPTkZJR19GRUFUVVJFX1VESENQX1JGQzMzOTcgaXMgbm90IHNldApAQCAtMTA0NSw2ICsxMDY4LDcgQEAKICMgQ09ORklHX1NWIGlzIG5vdCBzZXQKIENPTkZJR19TVl9ERUZBVUxUX1NFUlZJQ0VfRElSPSIiCiAjIENPTkZJR19TVkMgaXMgbm90IHNldAorIyBDT05GSUdfU1ZPSyBpcyBub3Qgc2V0CiAjIENPTkZJR19TVkxPR0QgaXMgbm90IHNldAogIyBDT05GSUdfQ0hDT04gaXMgbm90IHNldAogIyBDT05GSUdfRkVBVFVSRV9DSENPTl9MT05HX09QVElPTlMgaXMgbm90IHNldApAQCAtMTEzNCw2ICsxMTU4LDEwIEBACiAjIFN5c3RlbSBMb2dnaW5nIFV0aWxpdGllcwogIwogQ09ORklHX0tMT0dEPXkKKworIworIyBrbG9nZCBzaG91bGQgbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBzeXNsb2cgdG8ga2VybmVsIHByaW50ayBidWZmZXIKKyMKIENPTkZJR19GRUFUVVJFX0tMT0dEX0tMT0dDVEw9eQogQ09ORklHX0xPR0dFUj15CiAjIENPTkZJR19MT0dSRUFEIGlzIG5vdCBzZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2luaXQuY2ZnIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaW5pdC5jZmcKaW5kZXggM2MxZmRkNC4uZTk2NzAwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaW5pdC5jZmcKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvaW5pdC5jZmcKQEAgLTEsOCArMSw4IEBACiBDT05GSUdfSU5JVD15CitDT05GSUdfUlVOTEVWRUw9eQogQ09ORklHX0ZFQVRVUkVfVVNFX0lOSVRUQUI9eQogQ09ORklHX0hBTFQ9eQogQ09ORklHX1BPV0VST0ZGPXkKLUNPTkZJR19SRUJPT1Q9eQogQ09ORklHX0ZFQVRVUkVfS0lMTF9ERUxBWT0wCiBDT05GSUdfVEVMSU5JVF9QQVRIPSIiCiBDT05GSUdfSU5JVF9URVJNSU5BTF9UWVBFPSIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC91bW91bnQtaWdub3JlLWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC91bW91bnQtaWdub3JlLWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZTc5OTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvdW1vdW50LWlnbm9yZS1jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD00MjYxMzQxMjgxMTI3MzhjOTdhNjY1MTcwYjIxMTUzZWYwNzY0YjdkXQotCi1Gcm9tIDk1ZWExMjc5MWM4NjIzYmY4MjViYzcxMWFjNzc5MDMwNmU3ZTFhZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGF3biBMYW5kZGVuIDxzbGFuZGRlbkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDggSmFuIDIwMTggMTM6MzE6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdW1vdW50OiBpZ25vcmUgLWMKLU9yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCi0KLSItYywgLS1uby1jYW5vbmljYWxpemU6IERvIG5vdCBjYW5vbmljYWxpemUgcGF0aHMuIgotCi1BcyBidXN5Ym94IGRvZXNuJ3QgY2Fub25pY2FsaXplIHBhdGhzIGluIHRoZSBmaXJzdCBwbGFjZSBpdCBpcyBzYWZlIHRvIGlnbm9yZQotdGhpcyBvcHRpb24uCi0KLVNlZSBodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2lzc3Vlcy83Nzg2Ci0KLVNpZ25lZC1vZmYtYnk6IFNoYXduIExhbmRkZW4gPHNsYW5kZGVuQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbnlzIFZsYXNlbmtvIDx2ZGEubGludXhAZ29vZ2xlbWFpbC5jb20+Ci0tLS0KLSB1dGlsLWxpbnV4L3Vtb3VudC5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3V0aWwtbGludXgvdW1vdW50LmMgYi91dGlsLWxpbnV4L3Vtb3VudC5jCi1pbmRleCAwYzUwZGM5ZWUuLjA0MjVjNWI3NiAxMDA2NDQKLS0tLSBhL3V0aWwtbGludXgvdW1vdW50LmMKLSsrKyBiL3V0aWwtbGludXgvdW1vdW50LmMKLUBAIC02OCw4ICs2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgbW50ZW50ICpnZXRtbnRlbnRfcihGSUxFKiBzdHJlYW0sIHN0cnVjdCBtbnRlbnQqIHJlc3VsdCwKLSB9Ci0gI2VuZGlmCi0gCi0tLyogaWdub3JlZDogLXYgLXQgLWkgKi8KLS0jZGVmaW5lIE9QVElPTl9TVFJJTkcgICAgICAgICAgICJmbGRucmEiICJ2dDppIgotKy8qIGlnbm9yZWQ6IC1jIC12IC10IC1pICovCi0rI2RlZmluZSBPUFRJT05fU1RSSU5HICAgICAgICAgICAiZmxkbnJhIiAiY3Z0OmkiCi0gI2RlZmluZSBPUFRfRk9SQ0UgICAgICAgICAgICAgICAoMSA8PCAwKSAvLyBTYW1lIGFzIE1OVF9GT1JDRQotICNkZWZpbmUgT1BUX0xBWlkgICAgICAgICAgICAgICAgKDEgPDwgMSkgLy8gU2FtZSBhcyBNTlRfREVUQUNICi0gI2RlZmluZSBPUFRfRlJFRUxPT1AgICAgICAgICAgICAoMSA8PCAyKQotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yNy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWIyOTcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLXJlcXVpcmUgYnVzeWJveC5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpbmQtdG91Y2hzY3JlZW4uc2ggXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9uIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtaHR0cGQgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGQgXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC5zY3JpcHQgXAotICAgICAgICAgICBmaWxlOi8vc2ltcGxlLnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9od2Nsb2NrLnNoIFwKLSAgICAgICAgICAgZmlsZTovL21vdW50LmJ1c3lib3ggXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy1zdGFydHVwLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2LW1vdW50LnNoIFwKLSAgICAgICAgICAgZmlsZTovL3Vtb3VudC5idXN5Ym94IFwKLSAgICAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9mYWlsX29uX25vX21lZGlhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmV0ZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkIFwKLSAgICAgICAgICAgZmlsZTovL2xvZ2luLXV0aWxpdGllcy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVjb2duaXplX2Nvbm5tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy13aGVuLWxpbmtpbmctaW5zdGVhZC1vZi1MRC1hbmQtdXNlLUNGTEFHUy1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vcmNLIFwKLSAgICAgICAgICAgZmlsZTovL3J1bmxldmVsIFwKLSAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTEtNTMyNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTg3My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LUNWRS0yMDE3LTE2NTQ0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtZml4LWx6bWEtc2VnZmF1bHRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Vtb3VudC1pZ25vcmUtYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTg3NC5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9tdXNsLmNmZyAiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjQ3NjE4NmY0YmFiODE3ODFkYWIyMzY5YmZkNDI3MzRlIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiOWQ0YmU1MTZiNjFlNjQ4MGYxNTZiMTFlYjQyNTc3YTEzNTI5Zjc1ZDMzODM4NTBiYjc1YzUwYzI4NWRlNjNkZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjkuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjNlYTU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4yOS4yLmJiCkBAIC0wLDAgKzEsNDggQEAKK3JlcXVpcmUgYnVzeWJveC5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94LSR7UFZ9LnRhci5iejI7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtdWRoY3BjLW5vX2RlY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpbmQtdG91Y2hzY3JlZW4uc2ggXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1jcm9uIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtaHR0cGQgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGQgXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC5zY3JpcHQgXAorICAgICAgICAgICBmaWxlOi8vc2ltcGxlLnNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9od2Nsb2NrLnNoIFwKKyAgICAgICAgICAgZmlsZTovL21vdW50LmJ1c3lib3ggXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1zdGFydHVwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LW1vdW50LnNoIFwKKyAgICAgICAgICAgZmlsZTovL3Vtb3VudC5idXN5Ym94IFwKKyAgICAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9mYWlsX29uX25vX21lZGlhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkIFwKKyAgICAgICAgICAgZmlsZTovL2xvZ2luLXV0aWxpdGllcy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVjb2duaXplX2Nvbm5tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy13aGVuLWxpbmtpbmctaW5zdGVhZC1vZi1MRC1hbmQtdXNlLUNGTEFHUy1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vaW5pdHRhYiBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MgXAorICAgICAgICAgICBmaWxlOi8vcmNLIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLWxpYmJiLXJhY2UucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC5jZmcgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI0NjYxN2FmMzdhMzk1Nzk3MTFkOGIzNmYxODljZGYxZSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjY3ZDJmYTZlMTQ3YTQ1ODc1ZmU5NzJkZTYyZDkwN2VmODY2ZmU3ODRjNDk1YzM2M2JmMzQ3NTZjNDQ0YTVkNjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVubGV2ZWwgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVubGV2ZWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NmYzYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bmxldmVsCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyEvYmluL3NoCi0jIGJ1c3lib3ggaW5pdCBkb2VzIG5vdCBoYXZlIExTQiAoIHN5c3Zpbml0ICkgbGlrZSBpbml0bGV2ZWxzCi0jIHNvIGxldHMgZmFrZSBpdCB0byA1IHdoaWNoIGlzIHdoYXQgd2UgZGVmYXVsdCBhbnl3YXkKLSMgdGhpcyBoZWxwcyB3aXRoIG9wa2cgcG9zdCBpbnN0YWxscyB3aGVyZSBpdCB0cmllcyB0byBpbnZva2UKLSMgdXBkYXRlLXJjLmQgYWQgcG9zdCBpbnN0YWxsIHN0ZXAuCi0jIGZvciBwYWNrYWdlIHVwZ3JhZGVzCi0jIFNlZSBjb2RlIGluIHVwZGF0ZS1yYy5kIGFyb3VuZCBsaW5lIDE5MCB3aGVyZSBpdCBjYWxscyBydW5sZXZlbAotIyBwcm9ncmFtCi0jCi1lY2hvICI1IgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29sc18wLjMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzXzAuMy4yLmJiCmluZGV4IDI4NmMyYTQuLmJhNDRmYmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzXzAuMy4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzXzAuMy4yLmJiCkBAIC0xLDggKzEsOSBAQAorU1VNTUFSWSA9ICJBbGxvd3MgeW91IHRvIHNldC11cCBhbmQgbWFuaXB1bGF0ZSB0aGUgTGludXggY29uc29sZSIKK0RFU0NSSVBUSU9OID0gIlByb3ZpZGVzIHRvb2xzIHRoYXQgZW5hYmxlIHRoZSBzZXQtdXAgYW5kIG1hbmlwdWxhdGlvbiBvZiB0aGUgbGludXggY29uc29sZSBhbmQgY29uc29sZS1mb250IGZpbGVzLiIKIFNFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmtiZDttZDU9OWIyZDkxNTExZDNkODBkNGQyMGFjNmU2YjAxMzdmZTkiCi1TVU1NQVJZID0gIkFsbG93cyB5b3UgdG8gc2V0LXVwIGFuZCBtYW5pcHVsYXRlIHRoZSBMaW51eCBjb25zb2xlIgotREVTQ1JJUFRJT04gPSAiUHJvdmlkZXMgdG9vbHMgdGhhdCBlbmFibGUgdGhlIHNldC11cCBhbmQgbWFuaXB1bGF0aW9uIG9mIHRoZSBsaW51eCBjb25zb2xlIGFuZCBjb25zb2xlLWZvbnQgZmlsZXMuIgorREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCiBQUiA9ICJyOCIKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGN0L2NvbnNvbGUtdG9vbHMtJHtQVn0udGFyLmd6IFwKQEAgLTI2LDggKzI3LDEyIEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sY3QvZmlsZXMvY29uc29sZS10b29scy1kZXZlbC8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvY29uc29sZS10b29scy1kZXZlbC8oP1A8cHZlcj4oXGRcZD9cLikrXGRcZD8pLyIKIAoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKIENGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLURfVVNFX1RFUk1JT1MgIgogCitBU05FRURFRCA9ICIiCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAlta2RpciAtcCAke1N9L200CiAJY3AgJHtXT1JLRElSfS9sY21lc3NhZ2UubTQgJHtTfS9tNC8KQEAgLTM1LDggKzQwLDYgQEAKIAljcCAke1dPUktESVJ9L01ha2V2YXJzICR7U30vcG8vCiB9CiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdXBkYXRlLWFsdGVybmF0aXZlcwotCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIzMCIKIAogYmluZGlyX3Byb2dzID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTFhNGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKLWluZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0Ci0tLS0gYS9saWIvZ251bGliLm1rCi0rKysgYi9saWIvZ251bGliLm1rCi1AQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL0NWRS0yMDE3LTE4MDE4LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvQ1ZFLTIwMTctMTgwMTgtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYzMWViYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvQ1ZFLTIwMTctMTgwMTgtMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNzU5N2NmYTQ4MmU0MmEwMGE2OWZiOTU3N2VlNTIzNzYyOTgwYTlhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgT3JsaXR6a3kgPG1pY2hhZWxAb3JsaXR6a3kuY29tPgotRGF0ZTogVGh1LCAyOCBEZWMgMjAxNyAxNTo1Mjo0MiAtMDUwMAotU3ViamVjdDogZG9jOiBjbGFyaWZ5IGNob3duL2NoZ3JwIC0tZGVyZWZlcmVuY2UgZGVmYXVsdHMKLQotKiBkb2MvY29yZXV0aWxzLnRleGk6IHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgLS1kZXJlZmVyZW5jZQotICBmbGFnIG9mIGNob3duL2NoZ3JwIHN0YXRlcyB0aGF0IGl0IGlzIHRoZSBkZWZhdWx0IG1vZGUgb2YKLSAgb3BlcmF0aW9uLiBEb2N1bWVudCB0aGF0IHRoaXMgaXMgb25seSB0aGUgY2FzZSB3aGVuIG9wZXJhdGluZwotICBub24tcmVjdXJzaXZlbHkuCi0KLUNWRTogQ1ZFLTIwMTctMTgwMTgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSB2OC4zMAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE9ybGl0emt5IDxtaWNoYWVsQG9ybGl0emt5LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGRvYy9jb3JldXRpbHMudGV4aSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLU5hdXJwIGNvcmV1dGlscy04LjI3X29yZy9kb2MvY29yZXV0aWxzLnRleGkgY29yZXV0aWxzLTguMjcvZG9jL2NvcmV1dGlscy50ZXhpCi0tLS0gY29yZXV0aWxzLTguMjdfb3JnL2RvYy9jb3JldXRpbHMudGV4aQkyMDE4LTA3LTIyIDIxOjA5OjUwLjEyODczNjY5MiAtMDcwMAotKysrIGNvcmV1dGlscy04LjI3L2RvYy9jb3JldXRpbHMudGV4aQkyMDE4LTA3LTIyIDIxOjEyOjU5Ljk3MjIxOTc3MCAtMDcwMAotQEAgLTEwOTUyLDcgKzEwOTUyLDcgQEAgY2hvd24gLWggLVIgLS1mcm9tPU9MRFVTRVIgTkVXVVNFUiAvCi0gQGNpbmRleCBzeW1ib2xpYyBsaW5rcywgY2hhbmdpbmcgb3duZXIKLSBAZmluZGV4IGxjaG93bgotIERvIG5vdCBhY3Qgb24gc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyBidXQgcmF0aGVyIG9uIHdoYXQgdGhleSBwb2ludCB0by4KLS1UaGlzIGlzIHRoZSBkZWZhdWx0LgotK1RoaXMgaXMgdGhlIGRlZmF1bHQgd2hlbiBub3Qgb3BlcmF0aW5nIHJlY3Vyc2l2ZWx5LgotIAotIEBpdGVtIC1oCi0gQGl0ZW14IC0tbm8tZGVyZWZlcmVuY2UKLUBAIC0xMTA4Miw3ICsxMTA4Miw3IEBAIGNoYW5nZWQuCi0gQGNpbmRleCBzeW1ib2xpYyBsaW5rcywgY2hhbmdpbmcgb3duZXIKLSBAZmluZGV4IGxjaG93bgotIERvIG5vdCBhY3Qgb24gc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyBidXQgcmF0aGVyIG9uIHdoYXQgdGhleSBwb2ludCB0by4KLS1UaGlzIGlzIHRoZSBkZWZhdWx0LgotK1RoaXMgaXMgdGhlIGRlZmF1bHQgd2hlbiBub3Qgb3BlcmF0aW5nIHJlY3Vyc2l2ZWx5LgotIAotIEBpdGVtIC1oCi0gQGl0ZW14IC0tbm8tZGVyZWZlcmVuY2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9DVkUtMjAxNy0xODAxOC0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL0NWRS0yMDE3LTE4MDE4LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZjVmNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL0NWRS0yMDE3LTE4MDE4LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIGJjMmZkOTc5NjQwM2UwM2JiNzU3YjA2NGQ0NGMyMmZhYjkyZTY4NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE9ybGl0emt5IDxtaWNoYWVsQG9ybGl0emt5LmNvbT4KLURhdGU6IFRodSwgNCBKYW4gMjAxOCAxMTozODoyMSAtMDUwMAotU3ViamVjdDogZG9jOiB3YXJuIGFib3V0IGZvbGxvd2luZyBzeW1saW5rcyByZWN1cnNpdmVseSBpbiBjaG93bi9jaGdycAotCi1JbiBib3RoIGNob3duIGFuZCBjaGdycCAod2hpY2ggc2hhcmVzIGl0cyBjb2RlIHdpdGggY2hvd24pLCBvcGVyYXRpbmcKLW9uIHN5bWxpbmtzIHJlY3Vyc2l2ZWx5IGhhcyBhIHdpbmRvdyBvZiB2dWxuZXJhYmlsaXR5IHdoZXJlIHRoZQotZGVzdGluYXRpb24gdXNlciBvciBncm91cCBjYW4gY2hhbmdlIHRoZSB0YXJnZXQgb2YgdGhlIG9wZXJhdGlvbi4KLVdhcm4gYWJvdXQgY29tYmluaW5nIHRoZSAtLWRlcmVmZXJlbmNlLCAtLXJlY3Vyc2l2ZSwgYW5kIC1MIGZsYWdzLgotCi0qIGRvYy9jb3JldXRpbHMudGV4aSAod2Fybk9wdERlcmVmV2l0aFJlYyk6IEFkZCBtYWNyby4KLShub2RlIGNob3duIGludm9jYXRpb24pOiBBZGQgaXQgdG8gLS1kZXJlZmVyZW5jZSBhbmQgLUwuCi0obm9kZSBjaGdycCBpbnZvY2F0aW9uKTogTGlrZXdpc2UuCi0KLVNlZSBhbHNvOiBDVkUtMjAxNy0xODAxOAotQ1ZFOiBDVkUtMjAxNy0xODAxOAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBmcm9tIHY4LjMwCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgT3JsaXR6a3kgPG1pY2hhZWxAb3JsaXR6a3kuY29tPgotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gZG9jL2NvcmV1dGlscy50ZXhpIHwgMTcgKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZG9jL2NvcmV1dGlscy50ZXhpIGIvZG9jL2NvcmV1dGlscy50ZXhpCi1pbmRleCA2YmI5ZjA5Li45ZjVmOTViIDEwMDY0NAotLS0tIGEvZG9jL2NvcmV1dGlscy50ZXhpCi0rKysgYi9kb2MvY29yZXV0aWxzLnRleGkKLUBAIC0xNDI4LDYgKzE0MjgsMTkgQEAgYSBjb21tYW5kIGxpbmUgYXJndW1lbnQgaXMgYSBzeW1ib2xpYyBsaW5rIHRvIGEgZGlyZWN0b3J5LCB0cmF2ZXJzZSBpdC4KLSBJbiBhIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwsIHRyYXZlcnNlIGV2ZXJ5IHN5bWJvbGljIGxpbmsgdG8gYSBkaXJlY3RvcnkKLSB0aGF0IGlzIGVuY291bnRlcmVkLgotIEBlbmQgbWFjcm8KLSsKLStAYyBBcHBlbmQgdGhlIGZvbGxvd2luZyB3YXJuaW5nIHRvIC1MIHdoZXJlIGFwcHJvcHJpYXRlIChlLmcuIGNob3duKS4KLStAbWFjcm8gd2Fybk9wdERlcmVmV2l0aFJlYwotKwotK0NvbWJpbmluZyB0aGlzIGRlcmVmZXJlbmNpbmcgb3B0aW9uIHdpdGggdGhlIEBvcHRpb257LS1yZWN1cnNpdmV9IG9wdGlvbgotK21heSBjcmVhdGUgYSBzZWN1cml0eSByaXNrOgotK0R1cmluZyB0aGUgdHJhdmVyc2FsIG9mIHRoZSBkaXJlY3RvcnkgdHJlZSwgYW4gYXR0YWNrZXIgbWF5IGJlIGFibGUgdG8KLStpbnRyb2R1Y2UgYSBzeW1saW5rIHRvIGFuIGFyYml0cmFyeSB0YXJnZXQ7IHdoZW4gdGhlIHRvb2wgcmVhY2hlcyB0aGF0LAotK3RoZSBvcGVyYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgb24gdGhlIHRhcmdldCBvZiB0aGF0IHN5bWxpbmssCi0rcG9zc2libHkgYWxsb3dpbmcgdGhlIGF0dGFja2VyIHRvIGVzY2FsYXRlIHByaXZpbGVnZXMuCi0rCi0rQGVuZCBtYWNybwotKwotIEBjaG9wdEwKLSAKLSBAbWFjcm8gY2hvcHRQCi1AQCAtMTA5OTUsNiArMTEwMDgsNyBAQCBjaG93biAtaCAtUiAtLWZyb209T0xEVVNFUiBORVdVU0VSIC8KLSBAZmluZGV4IGxjaG93bgotIERvIG5vdCBhY3Qgb24gc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyBidXQgcmF0aGVyIG9uIHdoYXQgdGhleSBwb2ludCB0by4KLSBUaGlzIGlzIHRoZSBkZWZhdWx0IHdoZW4gbm90IG9wZXJhdGluZyByZWN1cnNpdmVseS4KLStAd2Fybk9wdERlcmVmV2l0aFJlYwotIAotIEBpdGVtIC1oCi0gQGl0ZW14IC0tbm8tZGVyZWZlcmVuY2UKLUBAIC0xMTA1MSw2ICsxMTA2NSw3IEBAIFJlY3Vyc2l2ZWx5IGNoYW5nZSBvd25lcnNoaXAgb2YgZGlyZWN0b3JpZXMgYW5kIHRoZWlyIGNvbnRlbnRzLgotIEB4cmVme1RyYXZlcnNpbmcgc3ltbGlua3N9LgotIAotIEBjaG9wdEwKLStAd2Fybk9wdERlcmVmV2l0aFJlYwotIEB4cmVme1RyYXZlcnNpbmcgc3ltbGlua3N9LgotIAotIEBjaG9wdFAKLUBAIC0xMTEyNSw2ICsxMTE0MCw3IEBAIGNoYW5nZWQuCi0gQGZpbmRleCBsY2hvd24KLSBEbyBub3QgYWN0IG9uIHN5bWJvbGljIGxpbmtzIHRoZW1zZWx2ZXMgYnV0IHJhdGhlciBvbiB3aGF0IHRoZXkgcG9pbnQgdG8uCi0gVGhpcyBpcyB0aGUgZGVmYXVsdCB3aGVuIG5vdCBvcGVyYXRpbmcgcmVjdXJzaXZlbHkuCi0rQHdhcm5PcHREZXJlZldpdGhSZWMKLSAKLSBAaXRlbSAtaAotIEBpdGVteCAtLW5vLWRlcmVmZXJlbmNlCi1AQCAtMTExODAsNiArMTExOTYsNyBAQCBSZWN1cnNpdmVseSBjaGFuZ2UgdGhlIGdyb3VwIG93bmVyc2hpcCBvZiBkaXJlY3RvcmllcyBhbmQgdGhlaXIgY29udGVudHMuCi0gQHhyZWZ7VHJhdmVyc2luZyBzeW1saW5rc30uCi0gCi0gQGNob3B0TAotK0B3YXJuT3B0RGVyZWZXaXRoUmVjCi0gQHhyZWZ7VHJhdmVyc2luZyBzeW1saW5rc30uCi0gCi0gQGNob3B0UAotLS0gCi1jZ2l0IHYxLjAtNDEtZ2MzMzAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA1NzJhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCi1tYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCi1ldmVyeSBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PTFjM2Y5NDExZTE4NDJhMDYyY2U1Y2U5MjEwYmVlZTBlIgotREVQRU5EUyA9ICJnbXAgbGliY2FwIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTgwMTgtMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xODAxOC0yLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjBjZmU3NWE0MmM5OTA3YzcxNDM5ZjhlYjQzNjMwMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MmQwZmExYzMxMWNhY2VmYTg5ODUzYmRiNTNjNjJmNDExMGNkZmRhMzgyMDM0NmI1OWNiZDA5OGY0MGY5NTVlIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoLGhvc3RuYW1lIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoLGhvc3RuYW1lIgotCi0jIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCi0jCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi0jIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKLQotIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcwotIwotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3NpbmdsZS1iaW5hcnldID0gIi0tZW5hYmxlLXNpbmdsZS1iaW5hcnksLS1kaXNhYmxlLXNpbmdsZS1iaW5hcnksLCIKLQotIyBbIGRmIG1rdGVtcCBiYXNlNjQgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmluZGlyX3Byb2dzID0gImFyY2ggYmFzZW5hbWUgY2hjb24gY2tzdW0gY29tbSBjc3BsaXQgY3V0IGRpciBkaXJjb2xvcnMgZGlybmFtZSBkdSBcCi0gICAgICAgICAgICAgICAgZW52IGV4cGFuZCBleHByIGZhY3RvciBmbXQgZm9sZCBncm91cHMgaGVhZCBob3N0aWQgaWQgaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgam9pbiBsaW5rIGxvZ25hbWUgbWQ1c3VtIG1rZmlmbyBuaWNlIG5sIG5vaHVwIG5wcm9jIG9kIHBhc3RlIHBhdGhjaGsgXAotICAgICAgICAgICAgICAgIHBpbmt5IHByIHByaW50ZW52IHByaW50ZiBwdHggcmVhZGxpbmsgcmVhbHBhdGggcnVuY29uIHNlcSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gXAotICAgICAgICAgICAgICAgIHNoYTM4NHN1bSBzaGE1MTJzdW0gc2hyZWQgc2h1ZiBzb3J0IHNwbGl0IHN0ZGJ1ZiBzdW0gdGFjIHRhaWwgdGVlIHRlc3QgdGltZW91dFwKLSAgICAgICAgICAgICAgICB0ciB0cnVuY2F0ZSB0c29ydCB0dHkgdW5leHBhbmQgdW5pcSB1bmxpbmsgdXB0aW1lIHVzZXJzIHZkaXIgd2Mgd2hvIHdob2FtaSB5ZXMiCi0KLSMgaG9zdG5hbWUgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmFzZV9iaW5kaXJfcHJvZ3MgPSAiY2F0IGNoZ3JwIGNobW9kIGNob3duIGNwIGRhdGUgZGQgZWNobyBmYWxzZSBob3N0bmFtZSBraWxsIGxuIGxzIG1rZGlyIFwKLSAgICAgICAgICAgICAgICAgICAgIG1rbm9kIG12IHB3ZCBybSBybWRpciBzbGVlcCBzdHR5IHN5bmMgdG91Y2ggdHJ1ZSB1bmFtZSBzdGF0IgotCi1zYmluZGlyX3Byb2dzPSAiY2hyb290IgotCi0jIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCi0jIGFic29sdXRlIHNpbmNlIGNvcmV1dGlscyBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAotIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAotIyBkaXJlY3RvcnkuCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLSMgRGVhbCB3aXRoIGEgc2VwYXJhdGUgYnVpbGRkaXIgZmFpbHVyZSBpZiBzcmMgZG9lc24ndCBleGlzdCB3aGVuIGNyZWF0aW5nIHZlcnNpb24uYy92ZXJzaW9uLmgKLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgJHtCfS9zcmMKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQkjIHJlbW92ZSBncm91cHMgdG8gZml4IGNvbmZsaWN0IHdpdGggc2hhZG93LW5hdGl2ZQotCXJtIC1mICR7RH0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZ3JvdXBzCi0JIyBUaGUgcmV0dXJuIGlzIGEgbXVzdCBzaW5jZSBuYXRpdmUgZG9lc24ndCBuZWVkIHRoZQotCSMgZG9faW5zdGFsbF9hcHBlbmQoKSBpbiB0aGUgYmVsb3cuCi0JcmV0dXJuCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWZvciBpIGluIGRmIG1rdGVtcCBiYXNlNjQ7IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtzYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtzYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCSMgWyByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJlY2F1c2UgWy5jb3JldXRpbHMgd2lsbCBjYXVzZSB0aGUgc2VkIHN0dWZmCi0JIyBpbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHRvIGZhaWwsIHRoZXJlZm9yZSB1c2UgbGJyYWNrZXQgLSB0aGUgbmFtZSB1c2VkCi0JIyBmb3IgdGhlIGFjdHVhbCBzb3VyY2UgZmlsZS4KLQltdiAke0R9JHtiaW5kaXJ9L1sgJHtEfSR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0KLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLSMgTWFrZSBob3N0bmFtZSdzIHByaW9yaXR5IGhpZ2hlciB0aGFuIGJ1c3lib3ggYnV0IGxvd2VyIHRoYW4gbmV0LXRvb2xzCi1BTFRFUk5BVElWRV9QUklPUklUWVtob3N0bmFtZV0gPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbWt0ZW1wIGRmIgotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG1rdGVtcC4xIGRmLjEgZ3JvdXBzLjEga2lsbC4xIHVwdGltZS4xIHN0YXQuMSAgaG9zdG5hbWUuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjRdID0gIiR7YmFzZV9iaW5kaXJ9L2Jhc2U2NCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtiYXNlNjRdID0gIiR7YmluZGlyfS9iYXNlNjQuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NC4xXSA9ICIke21hbmRpcn0vbWFuMS9iYXNlNjQuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgotQUxURVJOQVRJVkVfVEFSR0VUW21rdGVtcF0gPSAiJHtiaW5kaXJ9L21rdGVtcC4ke0JQTn0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZGZdID0gIiR7YmFzZV9iaW5kaXJ9L2RmIgotQUxURVJOQVRJVkVfVEFSR0VUW2RmXSA9ICIke2JpbmRpcn0vZGYuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2RmLjFdID0gIiR7bWFuZGlyfS9tYW4xL2RmLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L1siCi1BTFRFUk5BVElWRV9UQVJHRVRbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0iCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncm91cHMuMV0gPSAiJHttYW5kaXJ9L21hbjEvZ3JvdXBzLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N0YXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RhdC4xIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKLQotCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdzYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdzYmluZGlyJyksIHByb2cpKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNWJhNGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMC5iYgpAQCAtMCwwICsxLDEzOSBAQAorU1VNTUFSWSA9ICJUaGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgbWFuaXB1bGF0aW9uIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgQ29yZSBVdGlsaXRpZXMgcHJvdmlkZSB0aGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgXAorbWFuaXB1bGF0aW9uIHV0aWxpdGllcy4gVGhlc2UgYXJlIHRoZSBjb3JlIHV0aWxpdGllcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qgb24gXAorZXZlcnkgc3lzdGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vZGViYnVncy5nbnUub3JnL2NvcmV1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE1O21kNT1kYmUzNTZhODhiMDljMjkyMzJiMDgzZDFmZjhhYzgyYSIKK0RFUEVORFMgPSAiZ21wIGxpYmNhcCIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jb3JldXRpbHMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXNlbGludXgtZmxhc2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWIwNmQ2ODk0OTc1ODk3MWZlNzQ0ZGI2NmI1NzI4MTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgzMWIzYTg2MDkxNDk2Y2RiYTcyMDQxMWY5NzQ4ZGU4MTUwNzc5OGY2MTMwYWRlYWVmODcyZDIwNmUxYjA1NyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtZ21wIgorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCxob3N0bmFtZSAtLWxpYmV4ZWNkaXI9JHtsaWJkaXJ9IgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWVuYWJsZS1pbnN0YWxsLXByb2dyYW09YXJjaCxob3N0bmFtZSIKKworIyBhY2wgYW5kIHhhdHRyIGFyZSBub3QgZGVmYXVsdCBmZWF0dXJlcworIworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKKyIKKworIyBUaGUgbGliL29lL3BhdGgucHkgcmVxdWlyZXMgeGF0dHIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAieGF0dHIiCisKKyMgd2l0aCwgd2l0aG91dCwgZGVwZW5kcywgcmRlcGVuZHMKKyMKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1tzaW5nbGUtYmluYXJ5XSA9ICItLWVuYWJsZS1zaW5nbGUtYmluYXJ5LC0tZGlzYWJsZS1zaW5nbGUtYmluYXJ5LCwiCisKKyMgWyBkZiBta3RlbXAgbmljZSBwcmludGVudiBiYXNlNjQgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcworYmluZGlyX3Byb2dzID0gImFyY2ggYmFzZW5hbWUgY2hjb24gY2tzdW0gY29tbSBjc3BsaXQgY3V0IGRpciBkaXJjb2xvcnMgZGlybmFtZSBkdSBcCisgICAgICAgICAgICAgICAgZW52IGV4cGFuZCBleHByIGZhY3RvciBmbXQgZm9sZCBncm91cHMgaGVhZCBob3N0aWQgaWQgaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgam9pbiBsaW5rIGxvZ25hbWUgbWQ1c3VtIG1rZmlmbyBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKKyAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKKyAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXQgXAorICAgICAgICAgICAgICAgIHRyIHRydW5jYXRlIHRzb3J0IHR0eSB1bmV4cGFuZCB1bmlxIHVubGluayB1cHRpbWUgdXNlcnMgdmRpciB3YyB3aG8gd2hvYW1pIHllcyIKKworIyBob3N0bmFtZSBnZXRzIGEgc3BlY2lhbCB0cmVhdG1lbnQgYW5kIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzCitiYXNlX2JpbmRpcl9wcm9ncyA9ICJjYXQgY2hncnAgY2htb2QgY2hvd24gY3AgZGF0ZSBkZCBlY2hvIGZhbHNlIGhvc3RuYW1lIGtpbGwgbG4gbHMgbWtkaXIgXAorICAgICAgICAgICAgICAgICAgICAgbWtub2QgbXYgcHdkIHJtIHJtZGlyIHNsZWVwIHN0dHkgc3luYyB0b3VjaCB0cnVlIHVuYW1lIHN0YXQiCisKK3NiaW5kaXJfcHJvZ3M9ICJjaHJvb3QiCisKKyMgTGV0IGFjbG9jYWwgdXNlIHRoZSByZWxhdGl2ZSBwYXRoIGZvciB0aGUgbTQgZmlsZSByYXRoZXIgdGhhbiB0aGUKKyMgYWJzb2x1dGUgc2luY2UgY29yZXV0aWxzIGhhcyBhIGxvdCBvZiBtNCBmaWxlcywgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0CisjIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGl0IGlzIGJ1aWx0IGluIGEgbG9uZy9kZWVwCisjIGRpcmVjdG9yeS4KK2FjcGF0aHMgPSAiLUkgLi9tNCIKKworIyBEZWFsIHdpdGggYSBzZXBhcmF0ZSBidWlsZGRpciBmYWlsdXJlIGlmIHNyYyBkb2Vzbid0IGV4aXN0IHdoZW4gY3JlYXRpbmcgdmVyc2lvbi5jL3ZlcnNpb24uaAorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCAke0J9L3NyYworfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCSMgcmVtb3ZlIGdyb3VwcyB0byBmaXggY29uZmxpY3Qgd2l0aCBzaGFkb3ctbmF0aXZlCisJcm0gLWYgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9ncm91cHMKKwkjIFRoZSByZXR1cm4gaXMgYSBtdXN0IHNpbmNlIG5hdGl2ZSBkb2Vzbid0IG5lZWQgdGhlCisJIyBkb19pbnN0YWxsX2FwcGVuZCgpIGluIHRoZSBiZWxvdy4KKwlyZXR1cm4KK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJZm9yIGkgaW4gZGYgbWt0ZW1wIG5pY2UgcHJpbnRlbnYgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgorCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAorCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCisJbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisjIE1ha2UgaG9zdG5hbWUncyBwcmlvcml0eSBoaWdoZXIgdGhhbiBidXN5Ym94IGJ1dCBsb3dlciB0aGFuIG5ldC10b29scworQUxURVJOQVRJVkVfUFJJT1JJVFlbaG9zdG5hbWVdID0gIjkwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAibGJyYWNrZXQgJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7c2JpbmRpcl9wcm9nc30gYmFzZTY0IG5pY2UgcHJpbnRlbnYgbWt0ZW1wIGRmIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG5pY2UuMSBta3RlbXAuMSBkZi4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEgaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2hvc3RuYW1lLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjRdID0gIiR7YmFzZV9iaW5kaXJ9L2Jhc2U2NCIKK0FMVEVSTkFUSVZFX1RBUkdFVFtiYXNlNjRdID0gIiR7YmluZGlyfS9iYXNlNjQuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NC4xXSA9ICIke21hbmRpcn0vbWFuMS9iYXNlNjQuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgorQUxURVJOQVRJVkVfVEFSR0VUW21rdGVtcF0gPSAiJHtiaW5kaXJ9L21rdGVtcC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGZdID0gIiR7YmFzZV9iaW5kaXJ9L2RmIgorQUxURVJOQVRJVkVfVEFSR0VUW2RmXSA9ICIke2JpbmRpcn0vZGYuJHtCUE59IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2RmLjFdID0gIiR7bWFuZGlyfS9tYW4xL2RmLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuaWNlXSA9ICIke2Jhc2VfYmluZGlyfS9uaWNlIgorQUxURVJOQVRJVkVfVEFSR0VUW25pY2VdID0gIiR7YmluZGlyfS9uaWNlLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtuaWNlLjFdID0gIiR7bWFuZGlyfS9tYW4xL25pY2UuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW3ByaW50ZW52XSA9ICIke2Jhc2VfYmluZGlyfS9wcmludGVudiIKK0FMVEVSTkFUSVZFX1RBUkdFVFtwcmludGVudl0gPSAiJHtiaW5kaXJ9L3ByaW50ZW52LiR7QlBOfSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2dyb3Vwcy4xXSA9ICIke21hbmRpcn0vbWFuMS9ncm91cHMuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3RhdC4xXSA9ICIke21hbmRpcn0vbWFuMS9zdGF0LjEiCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQorCisJZm9yIHByb2cgaW4gZC5nZXRWYXIoJ3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorCQlkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ3NiaW5kaXInKSwgcHJvZykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZjcxMGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2ggbGV2ZWwgbGFuZ3VhZ2UgKEdMaWIpIGJpbmRpbmcgZm9yIEQtQnVzIgotREVTQ1JJUFRJT04gPSAiR0xpYiBiaW5kaW5ncyBmb3IgdGhlIEQtQnVzIG1lc3NhZ2UgYnVzIHRoYXQgaW50ZWdyYXRlIFwKLXRoZSBELUJ1cyBsaWJyYXJ5IHdpdGggdGhlIEdMaWIgdGhyZWFkIGFic3RyYWN0aW9uIGFuZCBtYWluIGxvb3AuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZjViM2EyZjcwODM3NTBkNTA0MzMzMTE0ZTczODY1NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMtZ2xpYi5oO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotU0VDVElPTiA9ICJiYXNlIgotCi1ERVBFTkRTID0gImV4cGF0IGdsaWItMi4wIHZpcnR1YWwvbGliaW50bCBkYnVzLWdsaWItbmF0aXZlIGRidXMiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgZGJ1cy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtZ2xpYi9kYnVzLWdsaWItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLWV4YW1wbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlc3QtaW5zdGFsbC1tYWtlZmlsZS5wYXRjaCBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBndGstZG9jCi0KLSNkZWZhdWx0IGRpc2FibGUgcmVncmVzc2lvbiB0ZXN0cywgc29tZSB1bml0IHRlc3QgY29kZSBpbiBub24gdGVzdGluZyBjb2RlCi0jUEFDS0FHRUNPTkZJR19wbi0ke1BOfSA9ICJ0ZXN0cyIgZW5hYmxlIHJlZ3Jlc3Npb24gdGVzdHMgbG9jYWwuY29uZgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi0tZW5hYmxlLXRlc3RzLCwsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWludHJvc3BlY3QteG1sPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9kYnVzLWJ1cy1pbnRyb3NwZWN0LnhtbCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRidXMtYmluZGluZy10b29sPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9kYnVzLWJpbmRpbmctdG9vbCIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRoLWludHJvc3BlY3QteG1sPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9kYnVzLWJ1cy1pbnRyb3NwZWN0LnhtbCIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXRlc3RzIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtsaWJleGVjZGlyfS9kYnVzLWJhc2gtY29tcGxldGlvbi1oZWxwZXIiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLWdsaWItdG9vbCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2RidXMtYmluZGluZy10b29sIgotCi1SREVQRU5EU18ke1BOfS10ZXN0cyArPSAiZGJ1cy14MTEiCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2RhdGFkaXJ9LyR7QlBOfS90ZXN0cyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTA4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjEwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5YTY5ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIGRidXMtZ2xpYi5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImE2NmE2MTM3MDU4NzA3NTJjYTk3ODZlMDM1OWFlYTk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmMzQwYzdlMjM1MmU5Y2RmMTEzODkzY2E3N2NhOTA3NWQ5ZjhkNWU4MTQ3NmJmMmJmMzYxMDk5MzgzYzYwMmMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzM4M2JkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIkhpZ2ggbGV2ZWwgbGFuZ3VhZ2UgKEdMaWIpIGJpbmRpbmcgZm9yIEQtQnVzIgorREVTQ1JJUFRJT04gPSAiR0xpYiBiaW5kaW5ncyBmb3IgdGhlIEQtQnVzIG1lc3NhZ2UgYnVzIHRoYXQgaW50ZWdyYXRlIFwKK3RoZSBELUJ1cyBsaWJyYXJ5IHdpdGggdGhlIEdMaWIgdGhyZWFkIGFic3RyYWN0aW9uIGFuZCBtYWluIGxvb3AuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jZjViM2EyZjcwODM3NTBkNTA0MzMzMTE0ZTczODY1NiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMtZ2xpYi5oO2JlZ2lubGluZT03O2VuZGxpbmU9MjE7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgorU0VDVElPTiA9ICJiYXNlIgorCitERVBFTkRTID0gImV4cGF0IGdsaWItMi4wIHZpcnR1YWwvbGliaW50bCBkYnVzLWdsaWItbmF0aXZlIGRidXMiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgZGJ1cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtZ2xpYi9kYnVzLWdsaWItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLWV4YW1wbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3QtaW5zdGFsbC1tYWtlZmlsZS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZDdjZWJmMWQ2OTQ0NWNiZDI4YjQ5ODMzOTIxNDUxOTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NlNDc2MGNmNjZjNjkxNDhmNmJkNmM5MmZlYWFiYjg4MTJkZWUzMDg0NmIyNGNkMGY3Mzk1YzQzNmQ3ZTgyNSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIGd0ay1kb2MKKworI2RlZmF1bHQgZGlzYWJsZSByZWdyZXNzaW9uIHRlc3RzLCBzb21lIHVuaXQgdGVzdCBjb2RlIGluIG5vbiB0ZXN0aW5nIGNvZGUKKyNQQUNLQUdFQ09ORklHX3BuLSR7UE59ID0gInRlc3RzIiBlbmFibGUgcmVncmVzc2lvbiB0ZXN0cyBsb2NhbC5jb25mCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLCwiCisKK0VYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS13aXRoLWRidXMtYmluZGluZy10b29sPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9kYnVzLWJpbmRpbmctdG9vbCIKKworUEFDS0FHRVMgKz0gIiR7UE59LXRlc3RzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtsaWJleGVjZGlyfS9kYnVzLWJhc2gtY29tcGxldGlvbi1oZWxwZXIiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLWdsaWItdG9vbCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2RidXMtYmluZGluZy10b29sIgorCitSREVQRU5EU18ke1BOfS10ZXN0cyArPSAiZGJ1cy14MTEiCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2RhdGFkaXJ9LyR7QlBOfS90ZXN0cyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy10ZXN0XzEuMTIuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjViOTM5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4xMC5iYgpAQCAtMCwwICsxLDgzIEBACitTVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzNlMTJiNDIwNmUyYTdkYTM5ZDdjYzQyNTY3NzkwZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI2OTNkMjQ5NzYyNThjM2YyZmE5Y2MzM2FkOTI4OGM1ZmJmYTdhMTY0ODFkYmQ5YThhNDI5ZjdhYThjZGNmNyIKKworUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgorRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitFWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKK0VYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCitQQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKKworZG9faW5zdGFsbCgpIHsKKyAgICA6Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IFwKKwkgICB2YXJpYW50IHVpZC1wZXJtaXNzaW9ucyBzeW50YXggc3Bhd24gc2QtYWN0aXZhdGlvbiBuYW1lcyBtb25pdG9yIG1lc3NhZ2UgZmRwYXNzICIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisKKwlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKKworCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ly5saWJzCisJY3AgLWEgJHtCfS9kYnVzLy5saWJzLyouc28qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKKworCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgorCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZGF0YSIgXCggLW5hbWUgKi5zZXJ2aWNlIC1vIC1uYW1lICouY29uZiAtbyAtbmFtZSAiKi5hYXByb2ZpbGUiIFwpIC10eXBlIGYgLWV4ZWMgXAorCQlzZWQgLWkgXAorCQkgLWUgJ3M6JHtCfToke1BURVNUX1BBVEh9OmcnIFwKKwkJIHt9ICsKKyAgICAgICAgc2VkIC1pIC1lICdzO0BQVEVTVF9QQVRIQDske1BURVNUX1BBVEh9O2cnICAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK1BSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkYnVzLTEuc28uMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZTA0N2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1TVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKLUhPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgotCi1SREVQRU5EU18ke1BOfSArPSAibWFrZSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzM2MTQ1NmNhZGI5OWFhNjYwMWJlZDViNDg5NjQyNTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjcyYmI1MDkxNzcwYjA0N2M4MTg4YjkyNmQ1ZTYwMzhmYTRmZTY3NDU0ODhiMmFkZDk2YjIzZTJkOWE4M2Q4OCIKLQotUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1FWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKLUVYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy10ZXN0LWRpcj0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgICAgICAgICAke0VYVFJBX09FQ09ORl9YfSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCi1QQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKLQotZG9faW5zdGFsbCgpIHsKLSAgICA6Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbD0ic2hlbGwgcHJpbnRmIHJlZnMgc3lzbG9nIG1hcnNoYWwgc3ludGF4IGNvcnJ1cHQgZGJ1cy1kYWVtb24gZGJ1cy1kYWVtb24tZWF2ZXNkcm9wIGxvb3BiYWNrIHJlbGF5IFwKLQkgICB2YXJpYW50IHVpZC1wZXJtaXNzaW9ucyBzeW50YXggc3Bhd24gc2QtYWN0aXZhdGlvbiBuYW1lcyBtb25pdG9yIG1lc3NhZ2UgZmRwYXNzICIKLQlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCi0KLQlsPSJidXMgYnVzLXN5c3RlbSBidXMtbGF1bmNoLWhlbHBlciIKLQlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L2J1cy8ubGlicy90ZXN0LSRpICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IGRvbmUKLQotCWNwIC1yICR7Qn0vdGVzdC9kYXRhICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlpbnN0YWxsICR7Qn0vZGJ1cy8ubGlicy90ZXN0LWRidXMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCi0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ly5saWJzCi0JY3AgLWEgJHtCfS9kYnVzLy5saWJzLyouc28qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvLmxpYnMKLQotCSMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcy4uLgotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZGF0YSIgXCggLW5hbWUgKi5zZXJ2aWNlIC1vIC1uYW1lICouY29uZiAtbyAtbmFtZSAiKi5hYXByb2ZpbGUiIFwpIC10eXBlIGYgLWV4ZWMgXAotCQlzZWQgLWkgXAotCQkgLWUgJ3M6JHtCfToke1BURVNUX1BBVEh9OmcnIFwKLQkJIHt9ICsKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCi0KLVBSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkYnVzLTEuc28uMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdAppbmRleCA4YTg5NzBlLi4zNTNiYTFlIDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CkBAIC0xMiw3ICsxMiw3IEBACiAKIGV4cG9ydCBEQlVTX1RFU1RfSE9NRURJUj0uL3Rlc3QKIGV4cG9ydCBYREdfUlVOVElNRV9ESVI9Li90ZXN0Ci1leHBvcnQgTERfTElCUkFSWV9QQVRIPS91c3IvbGliL2RidXMtdGVzdC9wdGVzdC90ZXN0Ly5saWJzCitleHBvcnQgTERfTElCUkFSWV9QQVRIPUBQVEVTVF9QQVRIQC90ZXN0Ly5saWJzCiAKIGZpbGVzPWBscyB0ZXN0L3Rlc3QtKmAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDcxZjdmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTAuYmIKQEAgLTAsMCArMSwxNzYgQEAKK1NVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCitERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKK0RFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIGF1dG9jb25mLWFyY2hpdmUiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCitBTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCitSREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImMzZTEyYjQyMDZlMmE3ZGEzOWQ3Y2M0MjU2Nzc5MGVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiNjkzZDI0OTc2MjU4YzNmMmZhOWNjMzNhZDkyODhjNWZiZmE3YTE2NDgxZGJkOWE4YTQyOWY3YWE4Y2RjZjciCisKK2luaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgorCitERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKKworT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKK09MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworIyBmb3IgY29tcGF0aWJpbGl0eQorUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3htbC9kYnVzLTEgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN1c2Vycy5kL2RidXMuY29uZiBcCisgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kL2RidXMuY29uZiBcCisiCitGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTXyR7UE59LWxpYiA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2RidXMtMS4wL2luY2x1ZGUgJHtsaWJkaXJ9L2NtYWtlL0RCdXMxICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKKworUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgorcGtnX3Bvc3RpbnN0X2RidXMoKSB7CisJIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCQlpZiBbIC1uICIkRCIgXTsgdGhlbgorCQkJT1BUUz0iLS1yb290PSREIgorCQlmaQorCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQorCWZpCisKKwlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCisJCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorCWZpCit9CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgdXNlci1zZXNzaW9uIFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXggLS1lbmFibGUteDExLWF1dG9sYXVuY2gsLS13aXRob3V0LXggLS1kaXNhYmxlLXgxMS1hdXRvbGF1bmNoLCB2aXJ0dWFsL2xpYngxMSBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbdXNlci1zZXNzaW9uXSA9ICItLWVuYWJsZS11c2VyLXNlc3Npb24gLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSwtLWRpc2FibGUtdXNlci1zZXNzaW9uIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJc2VkICdzOkBiaW5kaXJAOiR7YmluZGlyfTonIDwgJHtXT1JLRElSfS9kYnVzLTEuaW5pdCA+JHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaAorCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kYnVzLTEuaW5pdC5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGJ1cy0xCisJZmkKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWZvciBpIGluIGRidXMudGFyZ2V0LndhbnRzIHNvY2tldHMudGFyZ2V0LndhbnRzIG11bHRpLXVzZXIudGFyZ2V0LndhbnRzOyBkbyBcCisJCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LyRpOyBkb25lCisJCWluc3RhbGwgLW0gMDY0NCAke0J9L2J1cy9kYnVzLnNlcnZpY2UgJHtCfS9idXMvZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vCisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKKwkJbG4gLWZzIC4uL2RidXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9kYnVzLnNlcnZpY2UKKwlmaQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWVjaG8gImQgbWVzc2FnZWJ1cyBtZXNzYWdlYnVzIDA3NTUgJHtsb2NhbHN0YXRlZGlyfS9ydW4vZGJ1cyBub25lIiBcCisJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2RidXMKKworCisJbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKKworCWNob3duIG1lc3NhZ2VidXM6bWVzc2FnZWJ1cyAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gcm9vdDptZXNzYWdlYnVzICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKKwljaG1vZCA0NzU1ICR7RH0ke2xpYmV4ZWNkaXJ9L2RidXMtZGFlbW9uLWxhdW5jaC1oZWxwZXIKKworCSMgUmVtb3ZlIFJlZCBIYXQgaW5pdHNjcmlwdAorCXJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9yYy5kCisKKwkjIFJlbW92ZSBlbXB0eSB0ZXN0ZXhlYyBkaXJlY3RvcnkgYXMgd2UgZG9uJ3QgYnVpbGQgdGVzdHMKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9kYnVzLTEuMC90ZXN0CisKKwkjIFJlbW92ZSAvdmFyL3J1biBhcyBpdCBpcyBjcmVhdGVkIG9uIHN0YXJ0dXAKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKKwkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCisJcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAorCisJIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKKwlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjViNjlhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4MSArMCwwIEBACi1TVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgotREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi1ERVBFTkRTID0gImV4cGF0IHZpcnR1YWwvbGliaW50bCBhdXRvY29uZi1hcmNoaXZlIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgotQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgotUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMzYxNDU2Y2FkYjk5YWE2NjAxYmVkNWI0ODk2NDI1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNzJiYjUwOTE3NzBiMDQ3YzgxODhiOTI2ZDVlNjAzOGZhNGZlNjc0NTQ4OGIyYWRkOTZiMjNlMmQ5YTgzZDg4IgotCi1pbmhlcml0IHVzZXJhZGQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1JTklUU0NSSVBUX05BTUUgPSAiZGJ1cy0xIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDIgNSAzIDIgLiBzdG9wIDIwIDAgMSA2IC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBuZXRkZXYiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbWVzc2FnZWJ1cyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mICR7c3lzY29uZmRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiIKLQotREVCSUFOTkFNRV8ke1BOfSA9ICJkYnVzLTEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1saWIiCi0KLU9MRFBLR05BTUUgPSAiZGJ1cy14MTEiCi1PTERQS0dOQU1FX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLSMgZm9yIGNvbXBhdGliaWxpdHkKLVJQUk9WSURFU18ke1BOfSA9ICIke09MRFBLR05BTUV9IgotUlJFUExBQ0VTXyR7UE59ICs9ICIke09MRFBLR05BTUV9IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vZGJ1cy1kYWVtb24qIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXV1aWRnZW4gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtY2xlYW51cC1zb2NrZXRzIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXNlbmQgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbW9uaXRvciBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1sYXVuY2ggXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtcnVuLXNlc3Npb24gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXBkYXRlLWFjdGl2YXRpb24tZW52aXJvbm1lbnQgXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9kYnVzKiBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uZCBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94bWwvZGJ1cy0xIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdXNlcnMuZC9kYnVzLmNvbmYgXAotICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZC9kYnVzLmNvbmYgXAotIgotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7bGliZGlyfS9jbWFrZS9EQnVzMSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKLXBrZ19wb3N0aW5zdF9kYnVzKCkgewotCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0Ci0gICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaWYgWyAtbiAiJEQiIF07IHRoZW4KLQkJCU9QVFM9Ii0tcm9vdD0kRCIKLQkJZmkKLQkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKLQlmaQotCi0JaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgotCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLQlmaQotfQotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgotUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKLQlmaQotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKLQkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKLQkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAotCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0JZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKLQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cwotCi0KLQlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cwotCi0JY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgotCi0JIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0Ci0Jcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKLQotCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cwotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKLQotCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAotCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCi0JaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLwotCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPwotCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCi0KLQkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKLQkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCi0JCi0JIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAotCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KLQlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLQotCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMKaW5kZXggYjZiNDM2Yy4uZDkyYTJmMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci5pbmMKQEAgLTcsMjEgKzcsMTkgQEAKIExJQ0VOU0UgPSAiTUlUICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgUEQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNWVjNDBjYWZiYTI2ZmM0Mzk2ZDBiNTUwZjgyNGUwMSIKIAotREVQRU5EUyA9ICJ6bGliIgorREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvY3J5cHQiCiBSUFJPVklERVNfJHtQTn0gPSAic3NoIHNzaGQiCiAKIERFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCiAKIFNSQ19VUkkgPSAiaHR0cDovL21hdHQudWNjLmFzbi5hdS9kcm9wYmVhci9yZWxlYXNlcy9kcm9wYmVhci0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE1NTk5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXJhbmRvbS14YXV0aC1jaGFuZ2VzLXRvLW9wdGlvbnMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWRyb3BiZWFyLWZpeC1mb3IteDMyLWFiaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKICAgICAgICAgICAgZmlsZTovL2Ryb3BiZWFya2V5LnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vZHJvcGJlYXJALnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vZHJvcGJlYXIuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL2Ryb3BiZWFyLmRlZmF1bHQgXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gIgogCiBQQU1fU1JDX1VSSSA9ICJmaWxlOi8vMDAwNS1kcm9wYmVhci1lbmFibGUtcGFtLnBhdGNoIFwKQEAgLTUyLDYgKzUwLDEwIEBACiBFWFRSQV9PRUNPTkYgKz0gIlwKICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKIAorIyBUaGlzIG9wdGlvbiBhcHBlbmRzIHRvIENGTEFHUyBhbmQgTERGTEFHUyBmcm9tIE9FCisjIFRoaXMgaXMgY2F1c2luZyBbdGV4dHJlbF0gUUEgd2FybmluZworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtaGFyZGVuIgorCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gXAogCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgXApAQCAtNjEsNiArNjMsOCBAQAogCQkke0R9JHtzYmluZGlyfSBcCiAJCSR7RH0ke2xvY2Fsc3RhdGVkaXJ9CiAKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kcm9wYmVhci5kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZHJvcGJlYXIKKwogCWluc3RhbGwgLW0gMDc1NSBkcm9wYmVhcm11bHRpICR7RH0ke3NiaW5kaXJ9LwogCWxuIC1zICR7c2JpbmRpcn0vZHJvcGJlYXJtdWx0aSAke0R9JHtiaW5kaXJ9L2RiY2xpZW50CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMS11cmFuZG9tLXhhdXRoLWNoYW5nZXMtdG8tb3B0aW9ucy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLXVyYW5kb20teGF1dGgtY2hhbmdlcy10by1vcHRpb25zLmgucGF0Y2gKaW5kZXggZGM5ZDU3OC4uNjg0NjQxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLXVyYW5kb20teGF1dGgtY2hhbmdlcy10by1vcHRpb25zLmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAxLXVyYW5kb20teGF1dGgtY2hhbmdlcy10by1vcHRpb25zLmgucGF0Y2gKQEAgLTIsMjAgKzIsMjAgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogLS0tCi0gb3B0aW9ucy5oIHwgMiArLQorIGRlZmF1bHRfb3B0aW9ucy5oIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvb3B0aW9ucy5oIGIvb3B0aW9ucy5oCi1pbmRleCA3ZDA2MzIyLi43MWEyMWMyIDEwMDY0NAotLS0tIGEvb3B0aW9ucy5oCi0rKysgYi9vcHRpb25zLmgKLUBAIC0yNDcsNyArMjQ3LDcgQEAgbXVjaCB0cmFmZmljLiAqLworZGlmZiAtLWdpdCBhL2RlZmF1bHRfb3B0aW9ucy5oIGIvZGVmYXVsdF9vcHRpb25zLmgKK2luZGV4IDNiNzVlYjguLjFmZDgwODIgMTAwNjQ0CistLS0gYS9kZWZhdWx0X29wdGlvbnMuaAorKysrIGIvZGVmYXVsdF9vcHRpb25zLmgKK0BAIC0yNDMsNyArMjQzLDcgQEAgSG9tZWRpciBpcyBwcmVwZW5kZWQgdW5sZXNzIHBhdGggYmVnaW5zIHdpdGggLyAqLworIAogIC8qIFRoZSBjb21tYW5kIHRvIGludm9rZSBmb3IgeGF1dGggd2hlbiB1c2luZyBYMTEgZm9yd2FyZGluZy4KICAgKiAiLXEiIGZvciBxdWlldCAqLwotICNpZm5kZWYgWEFVVEhfQ09NTUFORAogLSNkZWZpbmUgWEFVVEhfQ09NTUFORCAiL3Vzci9iaW4veGF1dGggLXEiCiArI2RlZmluZSBYQVVUSF9DT01NQU5EICJ4YXV0aCAtcSIKLSAjZW5kaWYKKyAKICAKICAvKiBpZiB5b3Ugd2FudCB0byBlbmFibGUgcnVubmluZyBhbiBzZnRwIHNlcnZlciAoc3VjaCBhcyB0aGUgb25lIGluY2x1ZGVkIHdpdGgKIC0tIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NjlhNTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNThkZDI0YTgwY2EwZjQwMGQwNzYxYWZkOWNlMmI3ZjY4NGZjOTEyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9FcmljPTIwQj1DMz1BOW5hcmQ/PSA8ZXJpY0BldWtyZWEuY29tPgotRGF0ZTogVGh1LCAyNSBBcHIgMjAxMyAwMDoyNzoyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IGFkZCBhIHZhcmlhYmxlIHRvIGFsbG93IG9wZW5wdHkgY2hlY2sgdG8gYmUgY2FjaGVkCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL21rai9kcm9wYmVhci9wdWxsLzQ4IF0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggODkzYjkwNC4uMjQ1NDA4ZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTc3LDE1ICsxNzcsMjAgQEAgQUNfQVJHX0VOQUJMRShvcGVucHR5LAotIAkJCUFDX01TR19OT1RJQ0UoTm90IHVzaW5nIG9wZW5wdHkpCi0gCQllbHNlCi0gCQkJQUNfTVNHX05PVElDRShVc2luZyBvcGVucHR5IGlmIGF2YWlsYWJsZSkKLS0JCQlBQ19TRUFSQ0hfTElCUyhvcGVucHR5LCB1dGlsLCBbQUNfREVGSU5FKEhBVkVfT1BFTlBUWSwsSGF2ZSBvcGVucHR5KCkgZnVuY3Rpb24pXSkKLSsJCQlBQ19TRUFSQ0hfTElCUyhvcGVucHR5LCB1dGlsLCBbZHJvcGJlYXJfY3ZfZnVuY19oYXZlX29wZW5wdHk9eWVzXSkKLSAJCWZpCi0gCV0sCi0gCVsKLSAJCUFDX01TR19OT1RJQ0UoVXNpbmcgb3BlbnB0eSBpZiBhdmFpbGFibGUpCi0tCQlBQ19TRUFSQ0hfTElCUyhvcGVucHR5LCB1dGlsLCBbQUNfREVGSU5FKEhBVkVfT1BFTlBUWSldKQotKwkJQUNfU0VBUkNIX0xJQlMob3BlbnB0eSwgdXRpbCwgW2Ryb3BiZWFyX2N2X2Z1bmNfaGF2ZV9vcGVucHR5PXllc10pCi0gCV0KLSApCi0tCQkKLSsKLStpZiB0ZXN0ICJ4JGRyb3BiZWFyX2N2X2Z1bmNfaGF2ZV9vcGVucHR5IiA9ICJ4eWVzIjsgdGhlbgotKwlBQ19ERUZJTkUoSEFWRV9PUEVOUFRZLCxIYXZlIG9wZW5wdHkoKSBmdW5jdGlvbikKLSsJbm9fcHRjX2NoZWNrPXllcwotKwlub19wdG14X2NoZWNrPXllcwotK2ZpCi0gCi0gQUNfQVJHX0VOQUJMRShzeXNsb2csCi0gCVsgIC0tZGlzYWJsZS1zeXNsb2cgICAgICAgIERvbid0IGluY2x1ZGUgc3lzbG9nIHN1cHBvcnRdLAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA0LWZpeC0ya2Ita2V5cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBjNmEyOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDQtZml4LTJrYi1rZXlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU3ViamVjdDogW1BBVENIIDQvNl0gZml4IDJrYiBrZXlzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGtleC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZHJvcGJlYXItMjAxNy43NS9rZXguaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGRyb3BiZWFyLTIwMTcuNzUub3JpZy9rZXguaAotKysrIGRyb3BiZWFyLTIwMTcuNzUva2V4LmgKLUBAIC0xMDYsNiArMTA2LDYgQEAgaW50IGN1cnZlMjU1MTlfZG9ubmEodW5zaWduZWQgY2hhciAqb3V0LAotICNlbmRpZgotIAotIAotLSNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMjAwMAotKyNkZWZpbmUgTUFYX0tFWEhBU0hCVUYgMzAwMAotIAotICNlbmRpZiAvKiBEUk9QQkVBUl9LRVhfSF8gKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNS1kcm9wYmVhci1lbmFibGUtcGFtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA1LWRyb3BiZWFyLWVuYWJsZS1wYW0ucGF0Y2gKaW5kZXggNTM5Y2IxMi4uODU3NjgxNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA1LWRyb3BiZWFyLWVuYWJsZS1wYW0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA1LWRyb3BiZWFyLWVuYWJsZS1wYW0ucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBXZWQsIDIgRGVjIDIwMTUgMTE6MzY6MDIgKzAyMDAKIFN1YmplY3Q6IEVuYWJsZSBwYW0KIAotV2UgbmVlZCBtb2RpZnkgZmlsZSBvcHRpb24uaCBiZXNpZGVzIGVuYWJsaW5nIHBhbSBpbgorV2UgbmVlZCBtb2RpZnkgZmlsZSBkZWZhdWx0X29wdGlvbnMuaCBiZXNpZGVzIGVuYWJsaW5nIHBhbSBpbgogY29uZmlndXJlIGlmIHdlIHdhbnQgZHJvcGJlYXIgdG8gc3VwcG9ydCBwYW0uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMTEsMjYgKzExLDMyIEBACiBTaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIC0tLQotIG9wdGlvbnMuaCB8IDQgKystLQorIGRlZmF1bHRfb3B0aW9ucy5oIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL29wdGlvbnMuaCBiL29wdGlvbnMuaAotaW5kZXggOTQyNjFmNi4uOTBiZmUyZiAxMDA2NDQKLS0tLSBhL29wdGlvbnMuaAotKysrIGIvb3B0aW9ucy5oCi1AQCAtMjA4LDEwICsyMDgsMTAgQEAgSWYgeW91IHRlc3QgaXQgcGxlYXNlIGNvbnRhY3QgdGhlIERyb3BiZWFyIGF1dGhvciAqLworZGlmZiAtLWdpdCBhL2RlZmF1bHRfb3B0aW9ucy5oIGIvZGVmYXVsdF9vcHRpb25zLmgKK2luZGV4IDNiNzVlYjguLjg2MTdjZDAgMTAwNjQ0CistLS0gYS9kZWZhdWx0X29wdGlvbnMuaAorKysrIGIvZGVmYXVsdF9vcHRpb25zLmgKK0BAIC0xNzksNyArMTc5LDcgQEAgZ3JvdXAxIGluIERyb3BiZWFyIHNlcnZlciB0b28gKi8KICAKLSAvKiBUaGlzIHJlcXVpcmVzIGNyeXB0KCkgKi8KLSAjaWZkZWYgSEFWRV9DUllQVAotLSNkZWZpbmUgRU5BQkxFX1NWUl9QQVNTV09SRF9BVVRICi0rLyojZGVmaW5lIEVOQUJMRV9TVlJfUEFTU1dPUkRfQVVUSCovCi0gI2VuZGlmCi0gLyogUEFNIHJlcXVpcmVzIC4vY29uZmlndXJlIC0tZW5hYmxlLXBhbSAqLwotLS8qI2RlZmluZSBFTkFCTEVfU1ZSX1BBTV9BVVRIICovCi0rI2RlZmluZSBFTkFCTEVfU1ZSX1BBTV9BVVRICi0gI2RlZmluZSBFTkFCTEVfU1ZSX1BVQktFWV9BVVRICisgLyogQXV0aGVudGljYXRpb24gVHlwZXMgLSBhdCBsZWFzdCBvbmUgcmVxdWlyZWQuCisgICAgUkZDIERyYWZ0IHJlcXVpcmVzIHB1YmtleSBhdXRoLCBhbmQgcmVjb21tZW5kcyBwYXNzd29yZCAqLworLSNkZWZpbmUgRFJPUEJFQVJfU1ZSX1BBU1NXT1JEX0FVVEggMQorKyNkZWZpbmUgRFJPUEJFQVJfU1ZSX1BBU1NXT1JEX0FVVEggMAogIAotIC8qIFdoZXRoZXIgdG8gdGFrZSBwdWJsaWMga2V5IG9wdGlvbnMgaW4gCisgLyogTm90ZTogUEFNIGF1dGggaXMgcXVpdGUgc2ltcGxlIGFuZCBvbmx5IHdvcmtzIGZvciBQQU0gbW9kdWxlcyB3aGljaCBqdXN0IGRvCisgICogYSBzaW1wbGUgIkxvZ2luOiAiICJQYXNzd29yZDogIiAoeW91IGNhbiBlZGl0IHRoZSBzdHJpbmdzIGluIHN2ci1hdXRocGFtLmMpLgorQEAgLTE4Nyw3ICsxODcsNyBAQCBncm91cDEgaW4gRHJvcGJlYXIgc2VydmVyIHRvbyAqLworICAqIGJ1dCB0aGVyZSdzIGFuIGludGVyZmFjZSB2aWEgYSBQQU0gbW9kdWxlLiBJdCB3b24ndCB3b3JrIGZvciBtb3JlIGNvbXBsZXgKKyAgKiBQQU0gY2hhbGxlbmdlL3Jlc3BvbnNlLgorICAqIFlvdSBjYW4ndCBlbmFibGUgYm90aCBQQVNTV09SRCBhbmQgUEFNLiAqLworLSNkZWZpbmUgRFJPUEJFQVJfU1ZSX1BBTV9BVVRIIDAKKysjZGVmaW5lIERST1BCRUFSX1NWUl9QQU1fQVVUSCAxCisgCisgLyogfi8uc3NoL2F1dGhvcml6ZWRfa2V5cyBhdXRoZW50aWNhdGlvbiAqLworICNkZWZpbmUgRFJPUEJFQVJfU1ZSX1BVQktFWV9BVVRIIDEKKyAKIC0tIAogMi4xLjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA2LWRyb3BiZWFyLWNvbmZpZ3VyYXRpb24tZmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNi1kcm9wYmVhci1jb25maWd1cmF0aW9uLWZpbGUucGF0Y2gKaW5kZXggZmE0YzhkMC4uZGVlZDc4ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDA2LWRyb3BiZWFyLWNvbmZpZ3VyYXRpb24tZmlsZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDYtZHJvcGJlYXItY29uZmlndXJhdGlvbi1maWxlLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotU3ViamVjdDogW1BBVENIIDYvNl0gZHJvcGJlYXIgY29uZmlndXJhdGlvbiBmaWxlCitGcm9tIGUzYTVkYjFiNmQzZjYzODJhMTViMjI2NjQ1OGMyNmM2NDVhMTBmMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA2IFNlcCAyMDE4IDE1OjU0OjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGRyb3BiZWFyIGNvbmZpZ3VyYXRpb24gZmlsZQogCiBkcm9wYmVhcjogQ2hhbmdlIHRoZSBwYXRoICgiL2V0Yy9wYW0uZC9zc2hkIiBhcyBkZWZhdWx0KSB0byBmaW5kIGEgcGFtIGNvbmZpZ3VyYXRpb24gZmlsZSBcCiB0byAiL2V0Yy9wYW0uZC9kcm9wYmVhciBmb3IgZHJvcGJlYXIgd2hlbiBlbmFibGluZyBwYW0gc3VwcG9ydGluZyIKQEAgLTcsMTIgKzEwLDE3IEBACiAKIFNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KIC0tLQotZGlmZiAtTmF1ciBkcm9wYmVhci0yMDEzLjYwLW9yaWcvc3ZyLWF1dGhwYW0uYyBkcm9wYmVhci0yMDEzLjYwL3N2ci1hdXRocGFtLmMKLS0tLSBkcm9wYmVhci0yMDEzLjYwLW9yaWcvc3ZyLWF1dGhwYW0uYwkyMDEzLTEwLTE2IDE2OjM0OjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGRyb3BiZWFyLTIwMTMuNjAvc3ZyLWF1dGhwYW0uYwkyMDEzLTEwLTIxIDE3OjA0OjA0Ljk2OTQxNjA1NSArMDIwMAotQEAgLTIxMSw3ICsyMTEsNyBAQAotIAl1c2VyRGF0YS5wYXNzd2QgPSBwYXNzd29yZDsKKyBzdnItYXV0aHBhbS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3ZyLWF1dGhwYW0uYyBiL3N2ci1hdXRocGFtLmMKK2luZGV4IGQyMDFiYzkuLjE2NWVjNWMgMTAwNjQ0CistLS0gYS9zdnItYXV0aHBhbS5jCisrKysgYi9zdnItYXV0aHBhbS5jCitAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgc3ZyX2F1dGhfcGFtKGludCB2YWxpZF91c2VyKSB7CisgCX0KICAKICAJLyogSW5pdCBwYW0gKi8KIC0JaWYgKChyYyA9IHBhbV9zdGFydCgic3NoZCIsIE5VTEwsICZwYW1Db252LCAmcGFtSGFuZGxlcCkpICE9IFBBTV9TVUNDRVNTKSB7CkBAIC0yMCwzICsyOCw2IEBACiAgCQlkcm9wYmVhcl9sb2coTE9HX1dBUk5JTkcsICJwYW1fc3RhcnQoKSBmYWlsZWQsIHJjPSVkLCAlcyIsIAogIAkJCQlyYywgcGFtX3N0cmVycm9yKHBhbUhhbmRsZXAsIHJjKSk7CiAgCQlnb3RvIGNsZWFudXA7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNy1kcm9wYmVhci1maXgtZm9yLXgzMi1hYmkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDctZHJvcGJlYXItZml4LWZvci14MzItYWJpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MGIzMDJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwNy1kcm9wYmVhci1maXgtZm9yLXgzMi1hYmkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoZSBkcm9wYmVhcmtleSB1dGlsaXR5IGJ1aWx0IGluIHgzMiBhYmkgZm9ybWF0LCB3aGVuIGdlbmVyYXRpbmcgc3NoCi1rZXlzLCB3YXMgZ2V0dGluZyBsb3N0IGluIHRoZSBpbmZpbml0ZSBsb29wLgotCi1UaGlzIHBhdGNoIGZpeGVzIHRoZSBpc3N1ZSBieSBmaXhpbmcgdHlwZXMgb2YgdmFyaWFibGVzIGFuZAotcGFyYW1ldGVycyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgY29kZSwgd2hpY2ggd2VyZSBnZXR0aW5nCi11bmRlc2lyZWQgc2l6ZSwgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB4MzIgYWJpIHRvb2xjaGFpbi4KLQotMjAxMy8wNS8yMwotUmVjZWl2ZWQgdGhpcyBmaXggZnJvbSBIIEogTHUuCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLSMgRGF0ZSAxMzY5MzQ0MDc5IDI1MjAwCi0jIE5vZGUgSUQgYTEwYTFjNDZiODU3Y2M4YTM5MjNjM2JiNmQxNTA0YWEyNWI2MDUyZgotIyBQYXJlbnQgIGU3NjYxNDE0NWFlYTY3ZjY2ZTRhNDI1NzY4NWM3NzFlZmJhMjFhYTEKLVR5cGRlZiBtcF9kaWdpdCB0byB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIE1QXzY0QklUCi0KLVdoZW4gR0NDIGlzIHVzZWQgd2l0aCBNUF82NEJJVCwgd2Ugc2hvdWxkIHR5cGVkZWYgbXBfZGlnaXQgdG8gdW5zaWduZWQKLWxvbmcgbG9uZyBpbnN0ZWFkIG9mIHVuc2lnbmVkIGxvbmcgc2luY2UgZm9yIHgzMiwgdW5zaWduZWQgbG9uZyBpcwotMzItYml0IGFuZCB1bnNpZ25lZCBsb25nIGxvbmcgaXMgNjQtYml0IGFuZCBpdCBpcyBzYWZlIHRvIHVzZSB1bnNpZ25lZAotbG9uZyBsb25nIGZvciA2NC1iaXQgaW50ZWdlciB3aXRoIEdDQy4KLQotZGlmZiAtciBlNzY2MTQxNDVhZWEgLXIgYTEwYTFjNDZiODU3IGxpYnRvbW1hdGgvdG9tbWF0aC5oCi0tLS0gYS9saWJ0b21tYXRoL3RvbW1hdGguaAlUaHUgQXByIDE4IDIyOjU3OjQ3IDIwMTMgKzA4MDAKLSsrKyBiL2xpYnRvbW1hdGgvdG9tbWF0aC5oCVRodSBNYXkgMjMgMTQ6MjE6MTkgMjAxMyAtMDcwMAotQEAgLTczLDcgKzczLDcgQEAKLSAgICB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgICBsb25nNjQ7Ci0gI2VuZGlmCi0KLS0gICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICBtcF9kaWdpdDsKLSsgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBtcF9kaWdpdDsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICBtcF93b3JkIF9fYXR0cmlidXRlX18gKChtb2RlKFRJKSkpOwotCi0gICAgI2RlZmluZSBESUdJVF9CSVQgICAgICAgICAgNjAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLSMgRGF0ZSAxMzY5MzQ0MjQxIDI1MjAwCi0jIE5vZGUgSUQgYzc1NTVhNGNiN2RlZDNhODg0MDliYTg1ZjQwMjdiYWE3YWY1ZjUzNgotIyBQYXJlbnQgIGExMGExYzQ2Yjg1N2NjOGEzOTIzYzNiYjZkMTUwNGFhMjViNjA1MmYKLUNhc3QgdG8gbXBfZGlnaXQgd2hlbiB1cGRhdGluZyAqcmhvCi0KLVRoZXJlIGlzCi0KLWludAotbXBfbW9udGdvbWVyeV9zZXR1cCAobXBfaW50ICogbiwgbXBfZGlnaXQgKiByaG8pCi0KLVdlIHNob3VsZCBjYXN0IHRvIG1wX2RpZ2l0IGluc3RlYWQgb2YgdW5zaWduZWQgbG9uZyB3aGVuIHVwZGF0aW5nCi0qcmhvIHNpbmNlIG1wX2RpZ2l0IG1heSBiZSB1bnNpZ25lZCBsb25nIGxvbmcgYW5kIHVuc2lnbmVkIGxvbmcgbG9uZwotbWF5IGJlIGRpZmZlcmVudCBmcm9tIHVuc2lnbmVkIGxvbmcsIGxpa2UgaW4geDMyLgotCi1kaWZmIC1yIGExMGExYzQ2Yjg1NyAtciBjNzU1NWE0Y2I3ZGUgbGlidG9tbWF0aC9ibl9tcF9tb250Z29tZXJ5X3NldHVwLmMKLS0tLSBhL2xpYnRvbW1hdGgvYm5fbXBfbW9udGdvbWVyeV9zZXR1cC5jCVRodSBNYXkgMjMgMTQ6MjE6MTkgMjAxMyAtMDcwMAotKysrIGIvbGlidG9tbWF0aC9ibl9tcF9tb250Z29tZXJ5X3NldHVwLmMJVGh1IE1heSAyMyAxNDoyNDowMSAyMDEzIC0wNzAwCi1AQCAtNDgsNyArNDgsNyBAQAotICNlbmRpZgotCi0gICAvKiByaG8gPSAtMS9tIG1vZCBiICovCi0tICAqcmhvID0gKHVuc2lnbmVkIGxvbmcpKCgobXBfd29yZCkxIDw8ICgobXBfd29yZCkgRElHSVRfQklUKSkgLSB4KSAmIE1QX01BU0s7Ci0rICAqcmhvID0gKG1wX2RpZ2l0KSgoKG1wX3dvcmQpMSA8PCAoKG1wX3dvcmQpIERJR0lUX0JJVCkpIC0geCkgJiBNUF9NQVNLOwotCi0gICByZXR1cm4gTVBfT0tBWTsKLSB9Ci0jIEhHIGNoYW5nZXNldCBwYXRjaAotIyBVc2VyIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci0jIERhdGUgMTM2OTM0NDU0MSAyNTIwMAotIyBOb2RlIElEIDdjNjU2ZTcwNzFhNjQxMjY4OGIyZjMwYTUyOWE5YWZhYzZjN2JmNWEKLSMgUGFyZW50ICBjNzU1NWE0Y2I3ZGVkM2E4ODQwOWJhODVmNDAyN2JhYTdhZjVmNTM2Ci1EZWZpbmUgTFRDX0ZBU1RfVFlQRSB0byB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIF9feDg2XzY0X18KLQotV2Ugc2hvdWxkIGRlZmluZSBMVENfRkFTVF9UWVBFIHRvIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIHVuc2lnbmVkCi1sb25nIGlmIF9feDg2XzY0X18gdG8gc3VwcG9ydCB4MzIgd2hlcmUgdW5zaWduZWQgbG9uZyBsb25nIGlzIDY0LWJpdAotYW5kIHVuc2lnbmVkIGxvbmcgaXMgMzItYml0LgotCi1kaWZmIC1yIGM3NTU1YTRjYjdkZSAtciA3YzY1NmU3MDcxYTYgbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvdG9tY3J5cHRfY2ZnLmgKLS0tLSBhL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzL3RvbWNyeXB0X2NmZy5oCVRodSBNYXkgMjMgMTQ6MjQ6MDEgMjAxMyAtMDcwMAotKysrIGIvbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvdG9tY3J5cHRfY2ZnLmgJVGh1IE1heSAyMyAxNDoyOTowMSAyMDEzIC0wNzAwCi1AQCAtNzQsNyArNzQsNyBAQAotICAgICNkZWZpbmUgRU5ESUFOX0xJVFRMRQotICAgICNkZWZpbmUgRU5ESUFOXzY0QklUV09SRAotICAgICNkZWZpbmUgTFRDX0ZBU1QKLS0gICAjZGVmaW5lIExUQ19GQVNUX1RZUEUgICAgdW5zaWduZWQgbG9uZwotKyAgICNkZWZpbmUgTFRDX0ZBU1RfVFlQRSAgICB1bnNpZ25lZCBsb25nIGxvbmcKLSAjZW5kaWYKLQotIC8qIGRldGVjdCBQUEMzMiAqLwotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMgVXNlciBILkouIEx1IDxoamwudG9vbHNAZ21haWwuY29tPgotIyBEYXRlIDEzNjkzNDQ3MzAgMjUyMDAKLSMgTm9kZSBJRCBhN2Q0NjkwMTU4ZmFlNGVkZTJjNGU1YjU2MjMzZTgzNzMwYmYzOGVlCi0jIFBhcmVudCAgN2M2NTZlNzA3MWE2NDEyNjg4YjJmMzBhNTI5YTlhZmFjNmM3YmY1YQotVXNlIHVuc2lnbmVkIGxvbmcgbG9uZyBhYXMgdW5zaWduZWQgNjQtYml0IGludGVnZXIgZm9yIHg4Ni02NCBHQ0MKLQotV2Ugc2hvdWxkIHVzZSB1bnNpZ25lZCBsb25nIGxvbmcgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nIGFzIHVuc2lnbmVkCi02NC1iaXQgaW50ZWdlciBmb3IgeDg2LTY0IEdDQyB0byBzdXBwb3J0IHgzMiB3aGVyZSB1bnNpZ25lZCBsb25nIGlzCi0zMi1iaXQuCi0KLWRpZmYgLXIgN2M2NTZlNzA3MWE2IC1yIGE3ZDQ2OTAxNThmYSBsaWJ0b21jcnlwdC9zcmMvaGVhZGVycy90b21jcnlwdF9tYWNyb3MuaAotLS0tIGEvbGlidG9tY3J5cHQvc3JjL2hlYWRlcnMvdG9tY3J5cHRfbWFjcm9zLmgJVGh1IE1heSAyMyAxNDoyOTowMSAyMDEzIC0wNzAwCi0rKysgYi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy90b21jcnlwdF9tYWNyb3MuaAlUaHUgTWF5IDIzIDE0OjMyOjEwIDIwMTMgLTA3MDAKLUBAIC0zNDMsNyArMzQzLDcgQEAKLSAvKiA2NC1iaXQgUm90YXRlcyAqLwotICNpZiAhZGVmaW5lZChfX1NUUklDVF9BTlNJX18pICYmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX194ODZfNjRfXykgJiYgIWRlZmluZWQoTFRDX05PX0FTTSkKLQotLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBST0w2NCh1bnNpZ25lZCBsb25nIHdvcmQsIGludCBpKQotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIFJPTDY0KHVuc2lnbmVkIGxvbmcgbG9uZyB3b3JkLCBpbnQgaSkKLSB7Ci0gICAgYXNtKCJyb2xxICUlY2wsJTAiCi0gICAgICAgOiI9ciIgKHdvcmQpCi1AQCAtMzUxLDcgKzM1MSw3IEBACi0gICAgcmV0dXJuIHdvcmQ7Ci0gfQotCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIFJPUjY0KHVuc2lnbmVkIGxvbmcgd29yZCwgaW50IGkpCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgUk9SNjQodW5zaWduZWQgbG9uZyBsb25nIHdvcmQsIGludCBpKQotIHsKLSAgICBhc20oInJvcnEgJSVjbCwlMCIKLSAgICAgICA6Ij1yIiAod29yZCkKLUBAIC0zNjEsNyArMzYxLDcgQEAKLQotICNpZm5kZWYgTFRDX05PX1JPTEMKLQotLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBST0w2NGModW5zaWduZWQgbG9uZyB3b3JkLCBjb25zdCBpbnQgaSkKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZyBST0w2NGModW5zaWduZWQgbG9uZyBsb25nIHdvcmQsIGNvbnN0IGludCBpKQotIHsKLSAgICBhc20oInJvbHEgJTIsJTAiCi0gICAgICAgOiI9ciIgKHdvcmQpCi1AQCAtMzY5LDcgKzM2OSw3IEBACi0gICAgcmV0dXJuIHdvcmQ7Ci0gfQotCi0tc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIFJPUjY0Yyh1bnNpZ25lZCBsb25nIHdvcmQsIGNvbnN0IGludCBpKQotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBsb25nIFJPUjY0Yyh1bnNpZ25lZCBsb25nIGxvbmcgd29yZCwgY29uc3QgaW50IGkpCi0gewotICAgIGFzbSgicm9ycSAlMiwlMCIKLSAgICAgICA6Ij1yIiAod29yZCkKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9DVkUtMjAxOC0xNTU5OS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvQ1ZFLTIwMTgtMTU1OTkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyNTQ1YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvQ1ZFLTIwMTgtMTU1OTkucGF0Y2gKQEAgLTAsMCArMSwyMzYgQEAKK0Zyb20gMjU2ZTJhYmI4MTUwZjlmZWEzM2NkMDI2NTk3ZGJlNzBmMDM3OTI5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgSm9obnN0b24gPG1hdHRAdWNjLmFzbi5hdT4KK0RhdGU6IFRodSwgMjMgQXVnIDIwMTggMjM6NDM6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gV2FpdCB0byBmYWlsIGludmFsaWQgdXNlcm5hbWVzCisKK1dhaXQgdG8gZmFpbCBpbnZhbGlkIHVzZXJuYW1lcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NlY3VyZS51Y2MuYXNuLmF1L2hnL2Ryb3BiZWFyL3Jldi81ZDJkMTAyMWNhMDBdCitDVkU6IENWRS0yMDE4LTE1NTk5CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0aC5oICAgICAgICAgICB8ICA2ICsrKy0tLQorIHN2ci1hdXRoLmMgICAgICAgfCAxOSArKysrKy0tLS0tLS0tLS0tLS0tCisgc3ZyLWF1dGhwYW0uYyAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysrKystLS0tCisgc3ZyLWF1dGhwYXNzd2QuYyB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIHN2ci1hdXRocHVia2V5LmMgfCAxMSArKysrKysrKysrLQorIDUgZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdXRoLmggYi9hdXRoLmgKK2luZGV4IGRhNDk4ZjUuLjk4ZjU0NjggMTAwNjQ0CistLS0gYS9hdXRoLmgKKysrKyBiL2F1dGguaAorQEAgLTM3LDkgKzM3LDkgQEAgdm9pZCByZWN2X21zZ191c2VyYXV0aF9yZXF1ZXN0KHZvaWQpOworIHZvaWQgc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZShpbnQgcGFydGlhbCwgaW50IGluY3JmYWlsKTsKKyB2b2lkIHNlbmRfbXNnX3VzZXJhdXRoX3N1Y2Nlc3Modm9pZCk7Cisgdm9pZCBzZW5kX21zZ191c2VyYXV0aF9iYW5uZXIoY29uc3QgYnVmZmVyICptc2cpOworLXZvaWQgc3ZyX2F1dGhfcGFzc3dvcmQodm9pZCk7Cistdm9pZCBzdnJfYXV0aF9wdWJrZXkodm9pZCk7Cistdm9pZCBzdnJfYXV0aF9wYW0odm9pZCk7Cisrdm9pZCBzdnJfYXV0aF9wYXNzd29yZChpbnQgdmFsaWRfdXNlcik7Cisrdm9pZCBzdnJfYXV0aF9wdWJrZXkoaW50IHZhbGlkX3VzZXIpOworK3ZvaWQgc3ZyX2F1dGhfcGFtKGludCB2YWxpZF91c2VyKTsKKyAKKyAjaWYgRFJPUEJFQVJfU1ZSX1BVQktFWV9PUFRJT05TX0JVSUxUCisgaW50IHN2cl9wdWJrZXlfYWxsb3dzX2FnZW50ZndkKHZvaWQpOworZGlmZiAtLWdpdCBhL3N2ci1hdXRoLmMgYi9zdnItYXV0aC5jCitpbmRleCA2NGQ5N2FhLi4xZjM2NGNhIDEwMDY0NAorLS0tIGEvc3ZyLWF1dGguYworKysrIGIvc3ZyLWF1dGguYworQEAgLTE0OSwxMCArMTQ5LDggQEAgdm9pZCByZWN2X21zZ191c2VyYXV0aF9yZXF1ZXN0KCkgeworIAkJaWYgKG1ldGhvZGxlbiA9PSBBVVRIX01FVEhPRF9QQVNTV09SRF9MRU4gJiYKKyAJCQkJc3RybmNtcChtZXRob2RuYW1lLCBBVVRIX01FVEhPRF9QQVNTV09SRCwKKyAJCQkJCUFVVEhfTUVUSE9EX1BBU1NXT1JEX0xFTikgPT0gMCkgeworLQkJCWlmICh2YWxpZF91c2VyKSB7CistCQkJCXN2cl9hdXRoX3Bhc3N3b3JkKCk7CistCQkJCWdvdG8gb3V0OworLQkJCX0KKysJCQlzdnJfYXV0aF9wYXNzd29yZCh2YWxpZF91c2VyKTsKKysJCQlnb3RvIG91dDsKKyAJCX0KKyAJfQorICNlbmRpZgorQEAgLTE2NCwxMCArMTYyLDggQEAgdm9pZCByZWN2X21zZ191c2VyYXV0aF9yZXF1ZXN0KCkgeworIAkJaWYgKG1ldGhvZGxlbiA9PSBBVVRIX01FVEhPRF9QQVNTV09SRF9MRU4gJiYKKyAJCQkJc3RybmNtcChtZXRob2RuYW1lLCBBVVRIX01FVEhPRF9QQVNTV09SRCwKKyAJCQkJCUFVVEhfTUVUSE9EX1BBU1NXT1JEX0xFTikgPT0gMCkgeworLQkJCWlmICh2YWxpZF91c2VyKSB7CistCQkJCXN2cl9hdXRoX3BhbSgpOworLQkJCQlnb3RvIG91dDsKKy0JCQl9CisrCQkJc3ZyX2F1dGhfcGFtKHZhbGlkX3VzZXIpOworKwkJCWdvdG8gb3V0OworIAkJfQorIAl9CisgI2VuZGlmCitAQCAtMTc3LDEyICsxNzMsNyBAQCB2b2lkIHJlY3ZfbXNnX3VzZXJhdXRoX3JlcXVlc3QoKSB7CisgCWlmIChtZXRob2RsZW4gPT0gQVVUSF9NRVRIT0RfUFVCS0VZX0xFTiAmJgorIAkJCXN0cm5jbXAobWV0aG9kbmFtZSwgQVVUSF9NRVRIT0RfUFVCS0VZLAorIAkJCQlBVVRIX01FVEhPRF9QVUJLRVlfTEVOKSA9PSAwKSB7CistCQlpZiAodmFsaWRfdXNlcikgeworLQkJCXN2cl9hdXRoX3B1YmtleSgpOworLQkJfSBlbHNlIHsKKy0JCQkvKiBwdWJrZXkgaGFzIG5vIGZhaWx1cmUgZGVsYXkgKi8KKy0JCQlzZW5kX21zZ191c2VyYXV0aF9mYWlsdXJlKDAsIDApOworLQkJfQorKwkJc3ZyX2F1dGhfcHVia2V5KHZhbGlkX3VzZXIpOworIAkJZ290byBvdXQ7CisgCX0KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zdnItYXV0aHBhbS5jIGIvc3ZyLWF1dGhwYW0uYworaW5kZXggMDVlNGYzZS4uZDIwMWJjOSAxMDA2NDQKKy0tLSBhL3N2ci1hdXRocGFtLmMKKysrKyBiL3N2ci1hdXRocGFtLmMKK0BAIC0xNzgsMTMgKzE3OCwxNCBAQCBwYW1Db252RnVuYyhpbnQgbnVtX21zZywKKyAgKiBLZXlib2FyZCBpbnRlcmFjdGl2ZSB3b3VsZCBiZSBhIGxvdCBuaWNlciwgYnV0IHNpbmNlIFBBTSBpcyBzeW5jaHJvbm91cywgaXQKKyAgKiBnZXRzIHZlcnkgbWVzc3kgdHJ5aW5nIHRvIHNlbmQgdGhlIGludGVyYWN0aXZlIGNoYWxsZW5nZXMsIGFuZCByZWFkIHRoZQorICAqIGludGVyYWN0aXZlIHJlc3BvbnNlcywgb3ZlciB0aGUgbmV0d29yay4gKi8KKy12b2lkIHN2cl9hdXRoX3BhbSgpIHsKKyt2b2lkIHN2cl9hdXRoX3BhbShpbnQgdmFsaWRfdXNlcikgeworIAorIAlzdHJ1Y3QgVXNlckRhdGFTIHVzZXJEYXRhID0ge05VTEwsIE5VTEx9OworIAlzdHJ1Y3QgcGFtX2NvbnYgcGFtQ29udiA9IHsKKyAJCXBhbUNvbnZGdW5jLAorIAkJJnVzZXJEYXRhIC8qIHN1Ym1pdHRlZCB0byBwYW12Q29udkZ1bmMgYXMgYXBwZGF0YV9wdHIgKi8gCisgCX07CisrCWNvbnN0IGNoYXIqIHByaW50YWJsZV91c2VyID0gTlVMTDsKKyAKKyAJcGFtX2hhbmRsZV90KiBwYW1IYW5kbGVwID0gTlVMTDsKKyAKK0BAIC0yMDQsMTIgKzIwNSwyMyBAQCB2b2lkIHN2cl9hdXRoX3BhbSgpIHsKKyAKKyAJcGFzc3dvcmQgPSBidWZfZ2V0c3RyaW5nKHNlcy5wYXlsb2FkLCAmcGFzc3dvcmRsZW4pOworIAorKwkvKiBXZSBydW4gdGhlIFBBTSBjb252ZXJzYXRpb24gcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB1c2VybmFtZSBpcyB2YWxpZAorKwlpbiBjYXNlIHRoZSBjb252ZXJzYXRpb24gZnVuY3Rpb24gaGFzIGFuIGluaGVyZW50IGRlbGF5LgorKwlVc2Ugc2VzLmF1dGhzdGF0ZS51c2VybmFtZSByYXRoZXIgdGhhbiBzZXMuYXV0aHN0YXRlLnB3X25hbWUuCisrCUFmdGVyIFBBTSBzdWNjZWVkcyB3ZSB0aGVuIGNoZWNrIHRoZSB2YWxpZF91c2VyIGZsYWcgdG9vICovCisrCisgCS8qIHVzZWQgdG8gcGFzcyBkYXRhIHRvIHRoZSBQQU0gY29udmVyc2F0aW9uIGZ1bmN0aW9uIC0gZG9uJ3QgYm90aGVyIHdpdGgKKyAJICogc3RyZHVwKCkgZXRjIHNpbmNlIHRoZXNlIGFyZSB0b3VjaGVkIG9ubHkgYnkgb3VyIG93biBjb252ZXJzYXRpb24KKyAJICogZnVuY3Rpb24gKGFib3ZlKSB3aGljaCB0YWtlcyBjYXJlIG9mIGl0ICovCistCXVzZXJEYXRhLnVzZXIgPSBzZXMuYXV0aHN0YXRlLnB3X25hbWU7CisrCXVzZXJEYXRhLnVzZXIgPSBzZXMuYXV0aHN0YXRlLnVzZXJuYW1lOworIAl1c2VyRGF0YS5wYXNzd2QgPSBwYXNzd29yZDsKKyAKKysJaWYgKHNlcy5hdXRoc3RhdGUucHdfbmFtZSkgeworKwkJcHJpbnRhYmxlX3VzZXIgPSBzZXMuYXV0aHN0YXRlLnB3X25hbWU7CisrCX0gZWxzZSB7CisrCQlwcmludGFibGVfdXNlciA9ICI8aW52YWxpZCB1c2VybmFtZT4iOworKwl9CisrCisgCS8qIEluaXQgcGFtICovCisgCWlmICgocmMgPSBwYW1fc3RhcnQoInNzaGQiLCBOVUxMLCAmcGFtQ29udiwgJnBhbUhhbmRsZXApKSAhPSBQQU1fU1VDQ0VTUykgeworIAkJZHJvcGJlYXJfbG9nKExPR19XQVJOSU5HLCAicGFtX3N0YXJ0KCkgZmFpbGVkLCByYz0lZCwgJXMiLCAKK0BAIC0yNDIsNyArMjU0LDcgQEAgdm9pZCBzdnJfYXV0aF9wYW0oKSB7CisgCQkJCXJjLCBwYW1fc3RyZXJyb3IocGFtSGFuZGxlcCwgcmMpKTsKKyAJCWRyb3BiZWFyX2xvZyhMT0dfV0FSTklORywKKyAJCQkJIkJhZCBQQU0gcGFzc3dvcmQgYXR0ZW1wdCBmb3IgJyVzJyBmcm9tICVzIiwKKy0JCQkJc2VzLmF1dGhzdGF0ZS5wd19uYW1lLAorKwkJCQlwcmludGFibGVfdXNlciwKKyAJCQkJc3ZyX3Nlcy5hZGRyc3RyaW5nKTsKKyAJCXNlbmRfbXNnX3VzZXJhdXRoX2ZhaWx1cmUoMCwgMSk7CisgCQlnb3RvIGNsZWFudXA7CitAQCAtMjUzLDEyICsyNjUsMTggQEAgdm9pZCBzdnJfYXV0aF9wYW0oKSB7CisgCQkJCXJjLCBwYW1fc3RyZXJyb3IocGFtSGFuZGxlcCwgcmMpKTsKKyAJCWRyb3BiZWFyX2xvZyhMT0dfV0FSTklORywKKyAJCQkJIkJhZCBQQU0gcGFzc3dvcmQgYXR0ZW1wdCBmb3IgJyVzJyBmcm9tICVzIiwKKy0JCQkJc2VzLmF1dGhzdGF0ZS5wd19uYW1lLAorKwkJCQlwcmludGFibGVfdXNlciwKKyAJCQkJc3ZyX3Nlcy5hZGRyc3RyaW5nKTsKKyAJCXNlbmRfbXNnX3VzZXJhdXRoX2ZhaWx1cmUoMCwgMSk7CisgCQlnb3RvIGNsZWFudXA7CisgCX0KKyAKKysJaWYgKCF2YWxpZF91c2VyKSB7CisrCQkvKiBQQU0gYXV0aCBzdWNjZWVkZWQgYnV0IHRoZSB1c2VybmFtZSBpc24ndCBhbGxvd2VkIGluIGZvciBhbm90aGVyIHJlYXNvbgorKwkJKGNoZWNrdXNlcm5hbWUoKSBmYWlsZWQpICovCisrCQlzZW5kX21zZ191c2VyYXV0aF9mYWlsdXJlKDAsIDEpOworKwl9CisrCisgCS8qIHN1Y2Nlc3NmdWwgYXV0aGVudGljYXRpb24gKi8KKyAJZHJvcGJlYXJfbG9nKExPR19OT1RJQ0UsICJQQU0gcGFzc3dvcmQgYXV0aCBzdWNjZWVkZWQgZm9yICclcycgZnJvbSAlcyIsCisgCQkJc2VzLmF1dGhzdGF0ZS5wd19uYW1lLAorZGlmZiAtLWdpdCBhL3N2ci1hdXRocGFzc3dkLmMgYi9zdnItYXV0aHBhc3N3ZC5jCitpbmRleCBiZGVlMmFhLi42OWM3ZDhhIDEwMDY0NAorLS0tIGEvc3ZyLWF1dGhwYXNzd2QuYworKysrIGIvc3ZyLWF1dGhwYXNzd2QuYworQEAgLTQ4LDIyICs0OCwxNCBAQCBzdGF0aWMgaW50IGNvbnN0YW50X3RpbWVfc3RyY21wKGNvbnN0IGNoYXIqIGEsIGNvbnN0IGNoYXIqIGIpIHsKKyAKKyAvKiBQcm9jZXNzIGEgcGFzc3dvcmQgYXV0aCByZXF1ZXN0LCBzZW5kaW5nIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBtZXNzYWdlcyBhcworICAqIGFwcHJvcHJpYXRlICovCistdm9pZCBzdnJfYXV0aF9wYXNzd29yZCgpIHsKKyt2b2lkIHN2cl9hdXRoX3Bhc3N3b3JkKGludCB2YWxpZF91c2VyKSB7CisgCQorIAljaGFyICogcGFzc3dkY3J5cHQgPSBOVUxMOyAvKiB0aGUgY3J5cHQgZnJvbSAvZXRjL3Bhc3N3ZCBvciAvZXRjL3NoYWRvdyAqLworIAljaGFyICogdGVzdGNyeXB0ID0gTlVMTDsgLyogY3J5cHQgZ2VuZXJhdGVkIGZyb20gdGhlIHVzZXIncyBwYXNzd29yZCBzZW50ICovCistCWNoYXIgKiBwYXNzd29yZDsKKysJY2hhciAqIHBhc3N3b3JkID0gTlVMTDsKKyAJdW5zaWduZWQgaW50IHBhc3N3b3JkbGVuOworLQorIAl1bnNpZ25lZCBpbnQgY2hhbmdlcHc7CisgCistCXBhc3N3ZGNyeXB0ID0gc2VzLmF1dGhzdGF0ZS5wd19wYXNzd2Q7CistCistI2lmZGVmIERFQlVHX0hBQ0tDUllQVAorLQkvKiBkZWJ1Z2dpbmcgY3J5cHQgZm9yIG5vbi1yb290IHRlc3Rpbmcgd2l0aCBzaGFkb3dzICovCistCXBhc3N3ZGNyeXB0ID0gREVCVUdfSEFDS0NSWVBUOworLSNlbmRpZgorLQorIAkvKiBjaGVjayBpZiBjbGllbnQgd2FudHMgdG8gY2hhbmdlIHBhc3N3b3JkICovCisgCWNoYW5nZXB3ID0gYnVmX2dldGJvb2woc2VzLnBheWxvYWQpOworIAlpZiAoY2hhbmdlcHcpIHsKK0BAIC03MywxMiArNjUsMjEgQEAgdm9pZCBzdnJfYXV0aF9wYXNzd29yZCgpIHsKKyAJfQorIAorIAlwYXNzd29yZCA9IGJ1Zl9nZXRzdHJpbmcoc2VzLnBheWxvYWQsICZwYXNzd29yZGxlbik7CistCistCS8qIHRoZSBmaXJzdCBieXRlcyBvZiBwYXNzd2RjcnlwdCBhcmUgdGhlIHNhbHQgKi8KKy0JdGVzdGNyeXB0ID0gY3J5cHQocGFzc3dvcmQsIHBhc3N3ZGNyeXB0KTsKKysJaWYgKHZhbGlkX3VzZXIpIHsKKysJCS8qIHRoZSBmaXJzdCBieXRlcyBvZiBwYXNzd2RjcnlwdCBhcmUgdGhlIHNhbHQgKi8KKysJCXBhc3N3ZGNyeXB0ID0gc2VzLmF1dGhzdGF0ZS5wd19wYXNzd2Q7CisrCQl0ZXN0Y3J5cHQgPSBjcnlwdChwYXNzd29yZCwgcGFzc3dkY3J5cHQpOworKwl9CisgCW1fYnVybihwYXNzd29yZCwgcGFzc3dvcmRsZW4pOworIAltX2ZyZWUocGFzc3dvcmQpOworIAorKwkvKiBBZnRlciB3ZSBoYXZlIGdvdCB0aGUgcGF5bG9hZCBjb250ZW50cyB3ZSBjYW4gZXhpdCBpZiB0aGUgdXNlcm5hbWUKKysJaXMgaW52YWxpZC4gSW52YWxpZCB1c2VycyBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuICovCisrCWlmICghdmFsaWRfdXNlcikgeworKwkJc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZSgwLCAxKTsKKysJCXJldHVybjsKKysJfQorKworIAlpZiAodGVzdGNyeXB0ID09IE5VTEwpIHsKKyAJCS8qIGNyeXB0KCkgd2l0aCBhbiBpbnZhbGlkIHNhbHQgbGlrZSAiISEiICovCisgCQlkcm9wYmVhcl9sb2coTE9HX1dBUk5JTkcsICJVc2VyIGFjY291bnQgJyVzJyBpcyBsb2NrZWQiLAorZGlmZiAtLWdpdCBhL3N2ci1hdXRocHVia2V5LmMgYi9zdnItYXV0aHB1YmtleS5jCitpbmRleCBhYTYwODdjLi5mZjQ4MWM4IDEwMDY0NAorLS0tIGEvc3ZyLWF1dGhwdWJrZXkuYworKysrIGIvc3ZyLWF1dGhwdWJrZXkuYworQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGludCBjaGVja2ZpbGVwZXJtKGNoYXIgKiBmaWxlbmFtZSk7CisgCisgLyogcHJvY2VzcyBhIHB1YmtleSBhdXRoIHJlcXVlc3QsIHNlbmRpbmcgc3VjY2VzcyBvciBmYWlsdXJlIG1lc3NhZ2UgYXMKKyAgKiBhcHByb3ByaWF0ZSAqLworLXZvaWQgc3ZyX2F1dGhfcHVia2V5KCkgeworK3ZvaWQgc3ZyX2F1dGhfcHVia2V5KGludCB2YWxpZF91c2VyKSB7CisgCisgCXVuc2lnbmVkIGNoYXIgdGVzdGtleTsgLyogd2hldGhlciB3ZSdyZSBqdXN0IGNoZWNraW5nIGlmIGEga2V5IGlzIHVzYWJsZSAqLworIAljaGFyKiBhbGdvID0gTlVMTDsgLyogcHVia2V5IGFsZ28gKi8KK0BAIC0xMDIsNiArMTAyLDE1IEBAIHZvaWQgc3ZyX2F1dGhfcHVia2V5KCkgeworIAlrZXlibG9ibGVuID0gYnVmX2dldGludChzZXMucGF5bG9hZCk7CisgCWtleWJsb2IgPSBidWZfZ2V0cHRyKHNlcy5wYXlsb2FkLCBrZXlibG9ibGVuKTsKKyAKKysJaWYgKCF2YWxpZF91c2VyKSB7CisrCQkvKiBSZXR1cm4gZmFpbHVyZSBvbmNlIHdlIGhhdmUgcmVhZCB0aGUgY29udGVudHMgb2YgdGhlIHBhY2tldAorKwkJcmVxdWlyZWQgdG8gdmFsaWRhdGUgYSBwdWJsaWMga2V5LiAKKysJCUF2b2lkcyBibGluZCB1c2VyIGVudW1lcmF0aW9uIHRob3VnaCBpdCBpc24ndCBwb3NzaWJsZSB0byBwcmV2ZW50CisrCQl0ZXN0aW5nIGZvciB1c2VyIGV4aXN0ZW5jZSBpZiB0aGUgcHVibGljIGtleSBpcyBrbm93biAqLworKwkJc2VuZF9tc2dfdXNlcmF1dGhfZmFpbHVyZSgwLCAwKTsKKysJCWdvdG8gb3V0OworKwl9CisrCisgCS8qIGNoZWNrIGlmIHRoZSBrZXkgaXMgdmFsaWQgKi8KKyAJaWYgKGNoZWNrcHVia2V5KGFsZ28sIGFsZ29sZW4sIGtleWJsb2IsIGtleWJsb2JsZW4pID09IERST1BCRUFSX0ZBSUxVUkUpIHsKKyAJCXNlbmRfbXNnX3VzZXJhdXRoX2ZhaWx1cmUoMCwgMCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2Ryb3BiZWFyLmRlZmF1bHQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2Ryb3BiZWFyLmRlZmF1bHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIyNDUzYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZHJvcGJlYXIuZGVmYXVsdApAQCAtMCwwICsxLDIgQEAKKyMgRGlzYWxsb3cgcm9vdCBsb2dpbnMgYnkgZGVmYXVsdAorRFJPUEJFQVJfRVhUUkFfQVJHUz0iLXciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIwNWUxOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSBmMzdmYTlhNDFmMjQ4ZmE0MWRkNzRhNDFjNjZjYjQxYTI5MWMwM2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTYgU2VwIDIwMTYgMTI6MTg6MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYnRvbWNyeXB0L2xpYnRvbW1hdGggb3JkZXJpbmcKLQotVG8gcHJldmVudCBidWlsZCBmYWlsdXJlcyB3aGVuIHVzaW5nIHN5c3RlbSBsaWJ0b20gbGlicmFyaWVzIGFuZAotbGlua2luZyB3aXRoIC0tYXMtbmVlZGVkLCBMSUJUT01fTElCUyBzaG91bGQgYmUgaW4gdGhlIG9yZGVyCi0tbHRvbWNyeXB0IC1sdG9tbWF0aCwgbm90IHRoZSBvdGhlciB3YXkgYXJvdW5kLCBpZSBsaWJzIHNob3VsZCBiZQotcHJlcGVuZGVkIHRvIExJQlRPTV9MSUJTIGFzIHRoZXkgYXJlIGZvdW5kLCBub3QgYXBwZW5kZWQuCi0KLU5vdGUgdGhhdCBMSUJUT01fTElCUyBpcyBub3QgdXNlZCB3aGVuIGxpbmtpbmcgd2l0aCB0aGUgYnVuZGxlZAotbGlidG9tIGxpYnMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL2dpdGh1Yi5jb20vbWtqL2Ryb3BiZWFyL2NvbW1pdC9mOWU2YmMyYWVjYWIwZjRiNWI1MjllMDdhOTJjYzYzYzhhNjZjZDRiIF0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjQ1NDA4ZC4uZDYyNDg1MyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzkzLDE2ICszOTMsMTYgQEAgQUNfQVJHX0VOQUJMRShidW5kbGVkLWxpYnRvbSwKLSAJCQlBQ19NU0dfTk9USUNFKEZvcmNpbmcgYnVuZGxlZCBsaWJ0b20qKQotIAkJZWxzZQotIAkJCUJVTkRMRURfTElCVE9NPTAKLS0JCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9IiRMSUJUT01fTElCUyAtbHRvbW1hdGgiLCAKLSsJCQlBQ19DSEVDS19MSUIodG9tbWF0aCwgbXBfZXhwdG1vZCwgTElCVE9NX0xJQlM9Ii1sdG9tbWF0aCAkTElCVE9NX0xJQlMiLAotIAkJCQlbQUNfTVNHX0VSUk9SKFtNaXNzaW5nIHN5c3RlbSBsaWJ0b21tYXRoIGFuZCAtLWRpc2FibGUtYnVuZGxlZC1saWJ0b20gd2FzIHNwZWNpZmllZF0pXSApCi0tCQkJQUNfQ0hFQ0tfTElCKHRvbWNyeXB0LCByZWdpc3Rlcl9jaXBoZXIsIExJQlRPTV9MSUJTPSIkTElCVE9NX0xJQlMgLWx0b21jcnlwdCIsIAotKwkJCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iLWx0b21jcnlwdCAkTElCVE9NX0xJQlMiLAotIAkJCQlbQUNfTVNHX0VSUk9SKFtNaXNzaW5nIHN5c3RlbSBsaWJ0b21jcnlwdCBhbmQgLS1kaXNhYmxlLWJ1bmRsZWQtbGlidG9tIHdhcyBzcGVjaWZpZWRdKV0gKQotIAkJZmkKLSAJXSwKLSAJWwotIAkJQlVORExFRF9MSUJUT009MAotLQkJQUNfQ0hFQ0tfTElCKHRvbW1hdGgsIG1wX2V4cHRtb2QsIExJQlRPTV9MSUJTPSIkTElCVE9NX0xJQlMgLWx0b21tYXRoIiwgQlVORExFRF9MSUJUT009MSkKLS0JCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iJExJQlRPTV9MSUJTIC1sdG9tY3J5cHQiLCBCVU5ETEVEX0xJQlRPTT0xKQotKwkJQUNfQ0hFQ0tfTElCKHRvbW1hdGgsIG1wX2V4cHRtb2QsIExJQlRPTV9MSUJTPSItbHRvbW1hdGggJExJQlRPTV9MSUJTIiwgQlVORExFRF9MSUJUT009MSkKLSsJCUFDX0NIRUNLX0xJQih0b21jcnlwdCwgcmVnaXN0ZXJfY2lwaGVyLCBMSUJUT01fTElCUz0iLWx0b21jcnlwdCAkTElCVE9NX0xJQlMiLCBCVU5ETEVEX0xJQlRPTT0xKQotIAldCi0gKQotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYjBkMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE3Ljc1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGRyb3BiZWFyLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTU3ZTliOWQyNTcwNWRjYjA3M2JhMTVjNDE2NDI0ZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNiYzFkY2IxYzk3MDlkMjI2ZGZmNjY5ZTU2MDQxNzJhMThjZjVkYmY5YTIwMTQ3NGQ1NjE4YWU0NDY1MDk4YyIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE4Ljc2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhcl8yMDE4Ljc2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTU4ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTguNzYuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGRyb3BiZWFyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYzM5MTJmN2ZjZGNjNTdjOTk5MzdlNGE3OTQ4MGQyYzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjJmYjkxNjdlY2E4Y2Y5MzQ1NmE1ZmMxZDRmYWY3MDk5MDJhM2FiNzBkZDQ0ZTM1MmYzYWNiYzNmZmRhZWE2NSIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2OGEyZWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdF8yLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzdHJlYW0tb3JpZW50ZWQgWE1MIHBhcnNlciBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiRXhwYXQgaXMgYW4gWE1MIHBhcnNlciBsaWJyYXJ5IHdyaXR0ZW4gaW4gQy4gSXQgaXMgYSBzdHJlYW0tb3JpZW50ZWQgcGFyc2VyIGluIHdoaWNoIGFuIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgdGhpbmdzIHRoZSBwYXJzZXIgbWlnaHQgZmluZCBpbiB0aGUgWE1MIGRvY3VtZW50IChsaWtlIHN0YXJ0IHRhZ3MpIgotSE9NRVBBR0UgPSAiaHR0cDovL2V4cGF0LnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKLQkgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc4OWUyOTdmNTQ3OTgwZmM5ZWNjMDM2ZjlhMDcwZDQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGMzMmVmYmE3ZTc0Zjc4OGZjYzRmMjEyYTQzMjE2ZmMzN2NmNWYyM2Y0YzIzMzk2NjRkNDczMzUzYWVkZjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2NvbmZ0b29scy9saWJ0b29sLm00Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTYwODEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi42LmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiQSBzdHJlYW0tb3JpZW50ZWQgWE1MIHBhcnNlciBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiRXhwYXQgaXMgYW4gWE1MIHBhcnNlciBsaWJyYXJ5IHdyaXR0ZW4gaW4gQy4gSXQgaXMgYSBzdHJlYW0tb3JpZW50ZWQgcGFyc2VyIGluIHdoaWNoIGFuIGFwcGxpY2F0aW9uIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgdGhpbmdzIHRoZSBwYXJzZXIgbWlnaHQgZmluZCBpbiB0aGUgWE1MIGRvY3VtZW50IChsaWtlIHN0YXJ0IHRhZ3MpIgorSE9NRVBBR0UgPSAiaHR0cDovL2V4cGF0LnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2V4cGF0L2V4cGF0LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKKwkgICIKKworU1JDX1VSSVttZDVzdW1dID0gImNhMDQ3YWU5NTFiNDAwMjBhYzgzMWMyODg1OTE2MWIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3YjQzYzI3MTZkNTIxMzY5ZjgyZmMyZGM3MGYzNTk4NjBlOTBmYTQ0MGJlYTY1YjNiODVmMGIyNDZlYTgxZjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlybSAtZiAke1N9L2NvbmZ0b29scy9saWJ0b29sLm00Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaAppbmRleCBhZWU5NmFhLi4wZWJmMTM4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoCkBAIC0xLDMwICsxLDMwIEBACi1Gcm9tIGQ2NTAxYjEwNzk0MGU5ZjU0OGM4OTIzNmQ3NzNjNmQzM2MxNWE1YzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQyNTA2NTI3ODJiNjViMDcxYjdjYzhmMDFmMmRiODMzZGYxMDRlMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAxNiBBcHIgMjAxNiAxMzoyODo1OSAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IGlnbm9yZSByZXR1cm4gdmFsdWUgb2Ygd3JpdGUoKQorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaWdub3JlIHJldHVybiB2YWx1ZSBvZiB3cml0ZSgpCiAKIGdjYyB3YXJucyBhYm91dCBpZ25vcmluZyByZXR1cm4gdmFsdWUgd2hlbiBjb21waWxpbmcKIHdpdGggZm9ydGlmeSB0dXJuZWQgb24uCiAKIGFzc2VydCB3aGVuIHdyaXRlKCkgZmFpbHMKIAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKKy0tLQogIGdsaWIvdGVzdHMvdW5peC5jIHwgNSArKystLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nbGliL3Rlc3RzL3VuaXguYyBiL2dsaWIvdGVzdHMvdW5peC5jCi1pbmRleCAzNTQzNDU4Li40ZTdlZDg1IDEwMDY0NAoraW5kZXggOWQ1NWE2Yy4uYTA3Zjk0NSAxMDA2NDQKIC0tLSBhL2dsaWIvdGVzdHMvdW5peC5jCiArKysgYi9nbGliL3Rlc3RzL3VuaXguYwogQEAgLTMyLDE0ICszMiwxNSBAQCB0ZXN0X3BpcGUgKHZvaWQpCiAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKICAgIGludCBwaXBlZmRbMl07CiAgICBjaGFyIGJ1ZlsxMDI0XTsKLS0gIHNzaXplX3QgYnl0ZXNfcmVhZDsKLSsgIHNzaXplX3QgYnl0ZXNfcmVhZCwgYnl0ZXNfd3JpdHRlbjsKKy0gIGdzc2l6ZSBieXRlc19yZWFkOworKyAgZ3NzaXplIGJ5dGVzX3JlYWQsIGJ5dGVzX3dyaXR0ZW47CiAgICBnYm9vbGVhbiByZXM7CiAgCiAgICByZXMgPSBnX3VuaXhfb3Blbl9waXBlIChwaXBlZmQsIEZEX0NMT0VYRUMsICZlcnJvcik7CkBAIC0zNyw2ICszNywzIEBACiAgICBtZW1zZXQgKGJ1ZiwgMCwgc2l6ZW9mIChidWYpKTsKICAgIGJ5dGVzX3JlYWQgPSByZWFkIChwaXBlZmRbMF0sIGJ1Ziwgc2l6ZW9mKGJ1ZikgLSAxKTsKICAgIGdfYXNzZXJ0X2NtcGludCAoYnl0ZXNfcmVhZCwgPiwgMCk7Ci0tLSAKLTIuOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2gKaW5kZXggNTYxZDEwMC4uOTdkMGFmZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDgwNjgyYzE3MWNjYjI3ZDAxMzQzZDRjZmNmYjRkZDQ5Yjc4NjNjY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg1NjA0NTkyN2I5YWIzOTExNjVjMGViYWJmNDAxODM1Zjg0MzllYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMiBNYXIgMjAxNiAxNToxNDo1OCArMDIwMAogU3ViamVjdDogW1BBVENIXSBJbnN0YWxsIGdpby1xdWVyeW1vZHVsZXMgYXMgbGliZXhlY19QUk9HUkFNCkBAIC04LDI0ICs4LDIyIEBACiAKIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCiAtLS0KICBnaW8vTWFrZWZpbGUuYW0gfCAzICsrLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dpby9NYWtlZmlsZS5hbSBiL2dpby9NYWtlZmlsZS5hbQotaW5kZXggYjdmOTFjYy4uNGQ4MWNjMCAxMDA2NDQKK2luZGV4IGUxNGNhZDIuLmJmMmJjYzcgMTAwNjQ0CiAtLS0gYS9naW8vTWFrZWZpbGUuYW0KICsrKyBiL2dpby9NYWtlZmlsZS5hbQotQEAgLTcwMiw3ICs3MDIsOCBAQCBnaW8uZGVmOiBsaWJnaW8tMi4wLmxhCitAQCAtODM1LDcgKzgzNSw4IEBAIGdpby5kZWY6IGxpYmdpby0yLjAubGEKICBnaW8tMi4wLmxpYjogbGliZ2lvLTIuMC5sYSBnaW8uZGVmCiAgCSQoQU1fVl9HRU4pIGxpYi5leGUgLW1hY2hpbmU6QExJQl9FWEVfTUFDSElORV9GTEFHQCAtbmFtZTpsaWJnaW8tMi4wLSQoTFRfQ1VSUkVOVF9NSU5VU19BR0UpLmRsbCAtZGVmOiQoYnVpbGRkaXIpL2dpby5kZWYgLW91dDokQAogIAotLWJpbl9QUk9HUkFNUyA9IGdpby1xdWVyeW1vZHVsZXMgZ2xpYi1jb21waWxlLXNjaGVtYXMgZ2xpYi1jb21waWxlLXJlc291cmNlcyBnc2V0dGluZ3MKLStiaW5fUFJPR1JBTVMgPSBnbGliLWNvbXBpbGUtc2NoZW1hcyBnbGliLWNvbXBpbGUtcmVzb3VyY2VzIGdzZXR0aW5ncworLWJpbl9QUk9HUkFNUyA9IGdpby1xdWVyeW1vZHVsZXMgZ2xpYi1jb21waWxlLXNjaGVtYXMgZ2xpYi1jb21waWxlLXJlc291cmNlcyBnc2V0dGluZ3MgZ2lvLWxhdW5jaC1kZXNrdG9wCisrYmluX1BST0dSQU1TID0gZ2xpYi1jb21waWxlLXNjaGVtYXMgZ2xpYi1jb21waWxlLXJlc291cmNlcyBnc2V0dGluZ3MgZ2lvLWxhdW5jaC1kZXNrdG9wCiArbGliZXhlY19QUk9HUkFNUyA9IGdpby1xdWVyeW1vZHVsZXMKICAKICBnbGliX2NvbXBpbGVfcmVzb3VyY2VzX0xEQUREID0gbGliZ2lvLTIuMC5sYSAJCVwKICAJJCh0b3BfYnVpbGRkaXIpL2dvYmplY3QvbGliZ29iamVjdC0yLjAubGEJXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMDEtVGVzdC1mb3ItcHRocmVhZF9nZXRuYW1lX25wLWJlZm9yZS11c2luZy1pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmU0OTY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotRnJvbSBmNjI3ZmUxNjA5OWEyYjA4ZDhiNGU5MDIzYWU2YjRmMzUyNDUxOTY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgNiBOb3YgMjAxNiAwODo1OTowOCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBUZXN0IGZvciBwdGhyZWFkX2dldG5hbWVfbnAgYmVmb3JlIHVzaW5nIGl0Ci0KLUl0cyBhIEdOVSBleHRlbnRpb24gYW5kIG5vdCBhbGwgbGliYyBpbXBsZW1lbnQgaXQKLW11c2wgZS5nLiBpbXBsZW1lbnRzIHRoZSBzZXRuYW1lIEFQSSBidXQgbm90IGdldG5hbWUKLWluIGFueSBjYXNlLCBpdCBzZWVtcyB0byBiZSBzYWZlciB0byBjaGVjayBmb3IgdGhlCi1mdW5jdGlvbiBiZWZvcmUgdXNpbmcgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBjb25maWcuaC5pbiAgICAgICAgIHwgIDMgKysrCi0gY29uZmlndXJlLmFjICAgICAgICB8IDEwICsrKysrKysrKysKLSBnbGliL3Rlc3RzL3RocmVhZC5jIHwgIDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KLWluZGV4IDJjMzVmZjEuLmRhN2FjMzAgMTAwNjQ0Ci0tLS0gYS9jb25maWcuaC5pbgotKysrIGIvY29uZmlnLmguaW4KLUBAIC0zMjYsNiArMzI2LDkgQEAKLSAjdW5kZWYgSEFWRV9QVEhSRUFEX0NPTkRfVElNRURXQUlUX1JFTEFUSVZFX05QCi0gCi0gLyogSGF2ZSBmdW5jdGlvbiBwdGhyZWFkX3NldG5hbWVfbnAoY29uc3QgY2hhciopICovCi0rI3VuZGVmIEhBVkVfUFRIUkVBRF9HRVROQU1FX05QCi0rCi0rLyogSGF2ZSBmdW5jdGlvbiBwdGhyZWFkX3NldG5hbWVfbnAoY29uc3QgY2hhciopICovCi0gI3VuZGVmIEhBVkVfUFRIUkVBRF9TRVROQU1FX05QX1dJVEhPVVRfVElECi0gCi0gLyogSGF2ZSBmdW5jdGlvbiBwdGhyZWFkX3NldG5hbWVfbnAocHRocmVhZF90LCBjb25zdCBjaGFyKikgKi8KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQzMDk2NzEuLjIwOTc3MGEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIxMjEsNiArMjEyMSwxNiBAQCBBU19JRihbIHRlc3QgeCIkaGF2ZV90aHJlYWRzIiA9IHhwb3NpeF0sIFsKLSAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfUFRIUkVBRF9DT05EX1RJTUVEV0FJVF9SRUxBVElWRV9OUCwxLAotICAgICAgICAgICAgICAgICBbSGF2ZSBmdW5jdGlvbiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0X3JlbGF0aXZlX25wXSldLAotICAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKG5vKV0pCi0rICAgICAgICBkbmwgZ2V0cyB0aHJlYWQgbmFtZXMKLSsgICAgICAgIEFDX01TR19DSEVDS0lORyhmb3IgcHRocmVhZF9nZXRuYW1lX25wKHB0aHJlYWRfdCwgY2hhciosIHNpemVfdCkpCi0rICAgICAgICBBQ19MSU5LX0lGRUxTRSgKLSsgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAotKyAgICAgICAgICAgICAgICBbI2luY2x1ZGUgPHB0aHJlYWQuaD5dLAotKyAgICAgICAgICAgICAgICBbcHRocmVhZF9nZXRuYW1lX25wKHB0aHJlYWRfc2VsZigpLCJleGFtcGxlIiwwKV0pXSwKLSsgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVCh5ZXMpCi0rICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX1BUSFJFQURfR0VUTkFNRV9OUCwxLAotKyAgICAgICAgICAgICAgICBbSGF2ZSBmdW5jdGlvbiBwdGhyZWFkX3NldG5hbWVfbnAoY29uc3QgY2hhciopXSldLAotKyAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKG5vKV0pCi0gICAgICAgICBkbmwgU2V0cyB0aHJlYWQgbmFtZXMgb24gT1MgWCAxMC42LCBpT1MgMy4yIChhbmQgaGlnaGVyKQotICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBwdGhyZWFkX3NldG5hbWVfbnAoY29uc3QgY2hhciopKQotICAgICAgICAgQUNfTElOS19JRkVMU0UoCi1kaWZmIC0tZ2l0IGEvZ2xpYi90ZXN0cy90aHJlYWQuYyBiL2dsaWIvdGVzdHMvdGhyZWFkLmMKLWluZGV4IDU0NDc4MzYuLjJmMjQ4YTYgMTAwNjQ0Ci0tLS0gYS9nbGliL3Rlc3RzL3RocmVhZC5jCi0rKysgYi9nbGliL3Rlc3RzL3RocmVhZC5jCi1AQCAtMTc0LDcgKzE3NCw3IEBAIHRlc3RfdGhyZWFkNSAodm9pZCkKLSBzdGF0aWMgZ3BvaW50ZXIKLSB0aHJlYWQ2X2Z1bmMgKGdwb2ludGVyIGRhdGEpCi0gewotLSNpZmRlZiBIQVZFX1BUSFJFQURfU0VUTkFNRV9OUF9XSVRIX1RJRAotKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TRVROQU1FX05QX1dJVEhfVElEKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9HRVROQU1FX05QKQotICAgY2hhciBuYW1lWzE2XTsKLSAKLSAgIHB0aHJlYWRfZ2V0bmFtZV9ucCAocHRocmVhZF9zZWxmKCksIG5hbWUsIDE2KTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKaW5kZXggYjk4ZjkzMy4uNTA3ODFlNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ3NjI5MDdkMzNiODFjZjc0NjliNTY5NmM4N2YyMTg4ZDIwNTBhZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRiMWE2ZDI0N2M3ODEyNTA5NmE2ZWE1YWIzY2FiOGExZjAwMGRjMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA5IE5vdiAyMDE1IDExOjA3OjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTBdIEVuYWJsZSBtb3JlIHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZworU3ViamVjdDogW1BBVENIXSBFbmFibGUgbW9yZSB0ZXN0cyB3aGlsZSBjcm9zcy1jb21waWxpbmcKIAogVXBzdHJlYW0gZGlzYWJsZXMgYSBmZXcgdGVzdHMgd2hpbGUgY3Jvc3MtY29tcGlsaW5nIGJlY2F1c2UgdGhlaXIgYnVpbGQgcmVxdWlyZXMKIHJ1bm5pbmcgb3RoZXIgYnVpbHQgYmluYXJpZXMuIFRoaXMgdXN1YWxseSBtYWtlcyBzZW5zZSBidXQgaW4gdGhlIGNyb3NzLWNvbXBpbGUKQEAgLTE2LDEwICsxNiwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dpby90ZXN0cy9NYWtlZmlsZS5hbSBiL2dpby90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggYWNjMWRhNC4uOTE3NjY0MCAxMDA2NDQKK2luZGV4IDFmMGJlZDcuLjgyOTVkZWIgMTAwNjQ0CiAtLS0gYS9naW8vdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL2dpby90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTUxNiwxMCArNTE2LDkgQEAgdGVzdF9wcm9ncmFtcyArPSBcCitAQCAtNTUwLDEwICs1NTAsOSBAQCB0ZXN0X3Byb2dyYW1zICs9IFwKICBlbmRpZgogIAogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyLDcgKzMyLDcgQEAKICB0ZXN0X3Byb2dyYW1zICs9IHJlc291cmNlcwogIHJlc291cmNlc19TT1VSQ0VTID0gcmVzb3VyY2VzLmMKICBub2Rpc3RfcmVzb3VyY2VzX1NPVVJDRVMgPSB0ZXN0X3Jlc291cmNlcy5jIHRlc3RfcmVzb3VyY2VzMi5jIHRlc3RfcmVzb3VyY2VzMi5oCi1AQCAtNTQzLDcgKzU0MiwxMSBAQCBpZiAhRU5BQkxFX0lOU1RBTExFRF9URVNUUworQEAgLTU3OCw3ICs1NzcsMTEgQEAgaWYgIUVOQUJMRV9JTlNUQUxMRURfVEVTVFMKICBsaWJyZXNvdXJjZXBsdWdpbl9sYV9MREZMQUdTICs9IC1ycGF0aCAvCiAgZW5kaWYKICAKQEAgLTQ0LDcgKzQ0LDcgQEAKICAKICB0ZXN0LWdlbmVyYXRlZC50eHQ6IHRlc3QxLnR4dAogIAkkKEFNX1ZfR0VOKSBlY2hvICJHZW5lcmF0ZWQiID4gJEAgJiYgXAotQEAgLTU2NCw3ICs1NjcsNiBAQCB0ZXN0LmdyZXNvdXJjZTogdGVzdC5ncmVzb3VyY2UueG1sIE1ha2VmaWxlICQoc2hlbGwgJChnbGliX2NvbXBpbGVfcmVzb3VyY2VzKSAtLQorQEAgLTU5OSw3ICs2MDIsNiBAQCB0ZXN0LmdyZXNvdXJjZTogdGVzdC5ncmVzb3VyY2UueG1sIE1ha2VmaWxlICQoc2hlbGwgJChnbGliX2NvbXBpbGVfcmVzb3VyY2VzKSAtLQogIAogIEVYVFJBX0RJU1QgKz0gdGVzdC5ncmVzb3VyY2UueG1sIHRlc3QxLnR4dCB0ZXN0Mi5ncmVzb3VyY2UueG1sIHRlc3QyLnR4dCB0ZXN0My5ncmVzb3VyY2UueG1sIHRlc3QzLnR4dCB0ZXN0NC5ncmVzb3VyY2UueG1sCiAgQ0xFQU5GSUxFUyArPSB0ZXN0LWdlbmVyYXRlZC50eHQgdGVzdF9yZXNvdXJjZXMuYyB0ZXN0X3Jlc291cmNlczIuW2NoXSBwbHVnaW5fcmVzb3VyY2VzLmMgdGVzdC5ncmVzb3VyY2UKQEAgLTUzLDEwICs1MywxMCBAQAogIEJVSUxUX1NPVVJDRVMgKz0gZ2lvdHlwZWZ1bmNzLmluYwogIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0gYi90ZXN0cy9nb2JqZWN0L01ha2VmaWxlLmFtCi1pbmRleCA2NTY5NDFkLi42ODU1NWZmIDEwMDY0NAoraW5kZXggMGU2MDk4Ny4uOTI3ZDEzYSAxMDA2NDQKIC0tLSBhL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL2dvYmplY3QvTWFrZWZpbGUuYW0KLUBAIC00OCwxMCArNDgsMTMgQEAgaWYgRU5BQkxFX1RJTUVMT09QCitAQCAtNTEsMTAgKzUxLDEzIEBAIGlmIEVOQUJMRV9USU1FTE9PUAogIGluc3RhbGxlZF90ZXN0X3Byb2dyYW1zICs9IHRpbWVsb29wLWNsb3N1cmUKICBlbmRpZgogIApAQCAtNzIsMTQgKzcyLDkgQEAKICAKICB0ZXN0bWFyc2hhbC5oOiBzdGFtcC10ZXN0bWFyc2hhbC5oCiAgCUB0cnVlCi1AQCAtNjksNyArNzIsNiBAQCBCVUlMVF9TT1VSQ0VTICs9IHRlc3RtYXJzaGFsLmggdGVzdG1hcnNoYWwuYwotIENMRUFORklMRVMgKz0gc3RhbXAtdGVzdG1hcnNoYWwuaAorQEAgLTcxLDQgKzc0LDMgQEAgdGVzdG1hcnNoYWwuYzogdGVzdG1hcnNoYWwuaCB0ZXN0bWFyc2hhbC5saXN0ICQoZ2xpYl9nZW5tYXJzaGFsKQorIEJVSUxUX1NPVVJDRVMgKz0gdGVzdG1hcnNoYWwuaCB0ZXN0bWFyc2hhbC5jCisgQ0xFQU5GSUxFUyArPSBzdGFtcC10ZXN0bWFyc2hhbC5oIHRlc3RtYXJzaGFsLmggdGVzdG1hcnNoYWwuYwogIEVYVFJBX0RJU1QgKz0gdGVzdGNvbW1vbi5oIHRlc3RtYXJzaGFsLmxpc3QKLSBCVUlMVF9FWFRSQV9ESVNUICs9IHRlc3RtYXJzaGFsLmggdGVzdG1hcnNoYWwuYwogLWVuZGlmICMgIUNST1NTX0NPTVBJTElORwotIAotIGRpc3QtaG9vazogJChCVUlMVF9FWFRSQV9ESVNUKQotIAlmaWxlcz0nJChCVUlMVF9FWFRSQV9ESVNUKSc7CQkJCVwKLS0tIAotMi4xNC4xCi0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2FsbG93LXJ1bi1tZWRpYS1zZFgtZHJpdmUtbW91bnQtaWYtdXNlcm5hbWUtcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwYzAwOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2FsbG93LXJ1bi1tZWRpYS1zZFgtZHJpdmUtbW91bnQtaWYtdXNlcm5hbWUtcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gYzUzZTk0YTUyMGI1NzNhYTBkY2YxMjkwM2U5NTYzZmU4YmFkYzM0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcml1cyBBdnJhbSA8bWFyaXVzLmF2cmFtQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjcgQXVnIDIwMTQgMTI6MTA6NDEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgL3J1bi9tZWRpYS9zZFggZHJpdmUgbW91bnQgaWYgdXNlcm5hbWUgcm9vdAotCi1JbiBjYXNlIHRoYXQgdGhlIHVzZXJuYW1lIGxvZ2dlZCBpbiB0aGUgc3lzdGVtIGlzIHJvb3QKLXRoZSBkcml2ZXMgYXJlIGRpcmVjdGx5IG1vdW50ZWQgaW4gL3J1bi9tZWRpYS9zZFggYW5kCi1ub3QgL3J1bi9tZWRpYS88dXNlcm5hbWU+L3NkWCBhcyB0aGUgZnVuY3Rpb24KLWdfdW5peF9tb3VudF9ndWVzc19zaG91bGRfZGlzcGxheSgpIGV4cGVjdHMuCi0KLVdpdGhvdXQgdGhpcyBjaGFuZ2UgVVNCIHN0aWNrIG1vdW50cyBhcmUgbm90IGFjY2VzaWJsZSBmcm9tCi1ncmFwaGljYWwgYXBwbGljYXRpb25zIHN1Y2ggYXMgdGhlIEZpbGUgTWFuYWdlciAocGNtYW5mbSkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJpdXMgQXZyYW0gPG1hcml1cy5hdnJhbUBpbnRlbC5jb20+Ci0tLS0KLSBnaW8vZ3VuaXhtb3VudHMuYyB8ICAgIDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9naW8vZ3VuaXhtb3VudHMuYyBiL2dpby9ndW5peG1vdW50cy5jCi1pbmRleCA0OTk5MzU0Li5mNmMxNDcyIDEwMDY0NAotLS0tIGEvZ2lvL2d1bml4bW91bnRzLmMKLSsrKyBiL2dpby9ndW5peG1vdW50cy5jCi1AQCAtMjEzNiw2ICsyMTM2LDExIEBAIGdfdW5peF9tb3VudF9ndWVzc19zaG91bGRfZGlzcGxheSAoR1VuaXhNb3VudEVudHJ5ICptb3VudF9lbnRyeSkKLSAgICAgICAgICAgbW91bnRfcGF0aFtzaXplb2YgKCIvcnVuL21lZGlhLyIpIC0gMSArIHVzZXJfbmFtZV9sZW5dID09ICcvJykKLSAgICAgICAgIGlzX2luX3J1bnRpbWVfZGlyID0gVFJVRTsKLSAKLSsgICAgICAvKiBBbGxvdyBubyB1c2VybmFtZSBpbiBwYXRoIGluIC9ydW4vbWVkaWEgaWYgY3VycmVudCB1c2VyIGlzIHJvb3QgKi8KLSsgICAgICBpZiAoc3RyY21wKHVzZXJfbmFtZSwgInJvb3QiKSA9PSAwICYmCi0rICAgICAgICAgIHN0cm5jbXAgKG1vdW50X3BhdGgsICIvcnVuL21lZGlhLyIsIHNpemVvZigicnVuL21lZGlhIikpID09IDApCi0rICAgICAgICBpc19pbl9ydW50aW1lX2RpciA9IFRSVUU7Ci0rCi0gICAgICAgaWYgKGlzX2luX3J1bnRpbWVfZGlyIHx8IGdfc3RyX2hhc19wcmVmaXggKG1vdW50X3BhdGgsICIvbWVkaWEvIikpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGNoYXIgKnBhdGg7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9kYXRlLWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9kYXRlLWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMGFmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2RhdGUtbHQucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorVXBkYXRlIExpdGh1YW5pYW4gbW9udGggbmFtZXMgaW4gdGhlIHRlc3Qgc3VpdGUgYXMgZ2xpYmMgY2hhbmdlZCB0aGUgdHJhbnNsYXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvbWVyZ2VfcmVxdWVzdHMvMzczXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2dsaWIvdGVzdHMvZGF0ZS5jIGIvZ2xpYi90ZXN0cy9kYXRlLmMKK2luZGV4IGI4MDFjYTcwNC4uNjY0NmMyMjdjIDEwMDY0NAorLS0tIGEvZ2xpYi90ZXN0cy9kYXRlLmMKKysrKyBiL2dsaWIvdGVzdHMvZGF0ZS5jCitAQCAtMzY1LDggKzM2NSw4IEBAIHRlc3RfbW9udGhfbmFtZXMgKHZvaWQpCisgICAgICAgVEVTVF9EQVRFICggMSwgIDQsIDIwMTgsICAgICAgIiVZIG0uICVPQiIsICAgICAgIjIwMTggbS4gYmFsYW5kaXMiKTsKKyAgICAgICBURVNUX0RBVEUgKCAxLCAgNSwgMjAxOCwgICAgICAiJVkgbS4gJU9CIiwgICAgICAgICIyMDE4IG0uIGdlZ3XFvsSXIik7CisgICAgICAgVEVTVF9EQVRFICggMSwgIDYsIDIwMTgsICAgICAgIiVZIG0uICVPQiIsICAgICAgIjIwMTggbS4gYmlyxb5lbGlzIik7CistICAgICAgVEVTVF9EQVRFICgxNywgIDcsIDIwMTgsICIlWSBtLiAlYiAlZSBkLiIsICAgICAiMjAxOCBtLiBMaWUgMTcgZC4iKTsKKy0gICAgICBURVNUX0RBVEUgKCAxLCAgOCwgMjAxOCwgICAgICAiJVkgbS4gJU9iIiwgICAgICAgICAgICIyMDE4IG0uIFJncCIpOworKyAgICAgIFRFU1RfREFURSAoMTcsICA3LCAyMDE4LCAiJVkgbS4gJWIgJWUgZC4iLCAgICIyMDE4IG0uIExpZXAuIDE3IGQuIik7CisrICAgICAgVEVTVF9EQVRFICggMSwgIDgsIDIwMTgsICAgICAgIiVZIG0uICVPYiIsICAgICAgICAgIjIwMTggbS4gcnVncC4iKTsKKyAgICAgfQorICAgZWxzZQorICAgICBnX3Rlc3Rfc2tpcCAoImxvY2FsZSBsdF9MVCBub3QgYXZhaWxhYmxlLCBza2lwcGluZyBMaXRodWFuaWFuIG1vbnRoIG5hbWVzIHRlc3QiKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcHRlc3QtcGF0aHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3B0ZXN0LXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2JlMDI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcHRlc3QtcGF0aHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1JbnN0ZWFkIG9mIHdyaXRpbmcgdGhlIHRlbXBvcmFyeSBtYXBwaW5nIGZpbGVzIGluIHRoZSBtYXBwZWRmaWxlIHRlc3QgdG8gdGhlCi11c2VyIHJ1bnRpbWUgZGlyZWN0b3J5LCB3cml0ZSB0aGVtIHRvICRUTVAuICBUaGUgcnVudGltZSBkaXJlY3RvcnkgbWF5IG5vdAotY3VycmVudGx5IGV4aXN0IGlmIHRoZSB0ZXN0IGlzIGV4ZWN1dGVkIG9uIGEgbm9uLWRlc2t0b3Agc3lzdGVtIGFuZCB0aGUgdGVzdAotZG9lc24ndCBhdHRlbXB0IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvZ2xpYi90ZXN0cy9tYXBwZWRmaWxlLmMgYi9nbGliL3Rlc3RzL21hcHBlZGZpbGUuYwotaW5kZXggNDBlMGU2MC4uMjdhMjRiZSAxMDA2NDQKLS0tLSBhL2dsaWIvdGVzdHMvbWFwcGVkZmlsZS5jCi0rKysgYi9nbGliL3Rlc3RzL21hcHBlZGZpbGUuYwotQEAgLTgxLDcgKzgxLDcgQEAgdGVzdF93cml0YWJsZSAodm9pZCkKLSAgIGNvbnN0IGdjaGFyICpuZXcgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5eiI7Ci0gICBnY2hhciAqdG1wX2NvcHlfcGF0aDsKLSAKLS0gIHRtcF9jb3B5X3BhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChnX2dldF91c2VyX3J1bnRpbWVfZGlyICgpLCAiZ2xpYi10ZXN0LTQwOTYtcmFuZG9tLWJ5dGVzIiwgTlVMTCk7Ci0rICB0bXBfY29weV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAoZ19nZXRfdG1wX2RpciAoKSwgImdsaWItdGVzdC00MDk2LXJhbmRvbS1ieXRlcyIsIE5VTEwpOwotIAotICAgZ19maWxlX2dldF9jb250ZW50cyAoZ190ZXN0X2dldF9maWxlbmFtZSAoR19URVNUX0RJU1QsICI0MDk2LXJhbmRvbS1ieXRlcyIsIE5VTEwpLCAmY29udGVudHMsICZsZW4sICZlcnJvcik7Ci0gICBnX2Fzc2VydF9ub19lcnJvciAoZXJyb3IpOwotQEAgLTEyNSw3ICsxMjUsNyBAQCB0ZXN0X3dyaXRhYmxlX2ZkICh2b2lkKQotICAgaW50IGZkOwotICAgZ2NoYXIgKnRtcF9jb3B5X3BhdGg7Ci0gCi0tICB0bXBfY29weV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAoZ19nZXRfdXNlcl9ydW50aW1lX2RpciAoKSwgImdsaWItdGVzdC00MDk2LXJhbmRvbS1ieXRlcyIsIE5VTEwpOwotKyAgdG1wX2NvcHlfcGF0aCA9IGdfYnVpbGRfZmlsZW5hbWUgKGdfZ2V0X3RtcF9kaXIgKCksICJnbGliLXRlc3QtNDA5Ni1yYW5kb20tYnl0ZXMiLCBOVUxMKTsKLSAKLSAgIGdfZmlsZV9nZXRfY29udGVudHMgKGdfdGVzdF9nZXRfZmlsZW5hbWUgKEdfVEVTVF9ESVNULCAiNDA5Ni1yYW5kb20tYnl0ZXMiLCBOVUxMKSwgJmNvbnRlbnRzLCAmbGVuLCAmZXJyb3IpOwotICAgZ19hc3NlcnRfbm9fZXJyb3IgKGVycm9yKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaAppbmRleCA2NWQ1YjQzLi5mOTc5NGQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA4MzI2OTYxODQxZjRkMTZjNzIzOWU3NDdkZTExZTM4MTdjMzVjZmQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTEgTWFyIDIwMTYgMTU6MzU6NTUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2xpYi0yLjA6IHJlbG9jYXRlIHRoZSBHSU8gbW9kdWxlIGRpcmVjdG9yeSBmb3IgbmF0aXZlIGJ1aWxkcworCiBJbnN0ZWFkIG9mIGhhcmQtY29kaW5nIEdJT19NT0RVTEVfUEFUSCB3aGVuIGdsaWIgaXMgYnVpbHQsIHVzZSBkbGFkZHIoKSB0bwogZGV0ZXJtaW5lIHdoZXJlIGxpYmdsaWIuc28gaXMgYW5kIHVzZSB0aGF0IHBhdGggdG8gY2FsY3VsYXRlIEdJT19NT0RVTEVTX0RJUi4KIApAQCAtOCwxMiArMTMsMTMgQEAKIAogUG9ydCBwYXRjaCB0byAyLjQ4CiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorCiAtLS0KICBnaW8vZ2lvbW9kdWxlLmMgfCAxMiArKysrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ2lvL2dpb21vZHVsZS5jIGIvZ2lvL2dpb21vZHVsZS5jCi1pbmRleCBkYTdjMTY3Li5jYzBiYzdjIDEwMDY0NAoraW5kZXggMzZjMGNlZi4uOTEyZTQ5MCAxMDA2NDQKIC0tLSBhL2dpby9naW9tb2R1bGUuYwogKysrIGIvZ2lvL2dpb21vZHVsZS5jCiBAQCAtNDAsNiArNDAsOCBAQApAQCAtMjUsNyArMzEsNyBAQAogICNlbmRpZgogICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogIAotQEAgLTEwMzYsNyArMTAzOCwxNSBAQCBnZXRfZ2lvX21vZHVsZV9kaXIgKHZvaWQpCitAQCAtMTA5OSw3ICsxMTAxLDE1IEBAIGdldF9naW9fbW9kdWxlX2RpciAodm9pZCkKICAjZW5kaWYKICAgICAgICBnX2ZyZWUgKGluc3RhbGxfZGlyKTsKICAjZWxzZQpAQCAtNDIsNiArNDgsMyBAQAogICNlbmRpZgogICAgICB9CiAgCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi41NC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZjU5NDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU0LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGdsaWIuaW5jCi0KLVBFID0gIjEiCi0KLVNIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VjbGliY19tdXNsX3RyYW5zbGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LXJ1bi1tZWRpYS1zZFgtZHJpdmUtbW91bnQtaWYtdXNlcm5hbWUtcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVGVzdC1mb3ItcHRocmVhZF9nZXRuYW1lX25wLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLURvLW5vdC1oYXJkY29kZS1weXRob24tcGF0aC1pbnRvLXZhcmlvdXMtdG9vbHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNmU4ODZhZDY3N2JmMDdiN2Q0OGViODE4OGJjZjc1OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjNmZGM2Njg1ZGMzZGE4ZTUzODFkZmI5ZjE1Y2E0YjU3MDliMjhiZTg0ZDlkMDVhOWJiOGU0NDZhYmFjMGE4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjcxYTdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjU4LjAuYmIKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kYXRlLWx0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWI1ZDIxYzgwMmY1NWJmMzcxNzFjNGZiZmU3ZDMyZDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzBmNGNlMDczMGI0Zjk1YzQ3YjcxMTYxM2I1NDA2YTg4N2MyZWUxM2VhNmQyNTkzMGQ3MmE0ZmE3ZmRiNzdmNiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCmluZGV4IGY2NDVlZDYuLmU4MjE1ZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYwpAQCAtOSw4ICs5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvZ2xpYi5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWI4OGFiYjdmM2FkMDk2MDdlNzFjYjlkNTMwMTU1OTA2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dtb2R1bGUvQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ21vZHVsZS9nbW9kdWxlLmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9Yjg4YWJiN2YzYWQwOTYwN2U3MWNiOWQ1MzAxNTU5MDYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xpYi9wY3JlL0NPUFlJTkc7bWQ1PTI2NmViYzNmZjc0ZWU5Y2U2ZmFkNjU1Nzc2NjdjMGY0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvcGNyZS9wY3JlLmg7YmVnaW5saW5lPTExO2VuZGxpbmU9MzU7bWQ1PWRlMjdmMmJmNjMzZDIwYTJiN2FmMGIxOTgzNDIzMjgzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dsaWIvcGNyZS9wY3JlLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0zNjttZDU9M2UyOTc3ZGFlNGFkMDUyMTdmNThjNDQ2MjM3Mjk4ZmMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9yZWZlcmVuY2UvQ09QWUlORzttZDU9ZjUxYTUxMDBjMTdhZjZiYWUwMDczNWNkNzkxZTFmY2MiCiBCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCiBTRUNUSU9OID0gImxpYnMiCkBAIC0zOSw4ICszOCw5IEBACiBQQUNLQUdFQ09ORklHW3N5c3RlbS1wY3JlXSA9ICItLXdpdGgtcGNyZT1zeXN0ZW0sLS13aXRoLXBjcmU9aW50ZXJuYWwsbGlicGNyZSIKIFBBQ0tBR0VDT05GSUdbbGlibW91bnRdID0gIi0tZW5hYmxlLWxpYm1vdW50LC0tZGlzYWJsZS1saWJtb3VudCx1dGlsLWxpbnV4IgogUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuIC0td2l0aC14bWwtY2F0YWxvZz0ke1NUQUdJTkdfRVRDRElSX05BVElWRX0veG1sL2NhdGFsb2cueG1sLCAtLWRpc2FibGUtbWFuLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCitQQUNLQUdFQ09ORklHW2xpYmVsZl0gPSAiLS1lbmFibGUtbGliZWxmLC0tZGlzYWJsZS1saWJlbGYsZWxmdXRpbHMiCiAKLUNPUkVDT05GID0gIi0tZGlzYWJsZS1kdHJhY2UgLS1kaXNhYmxlLWZhbSAtLWRpc2FibGUtbGliZWxmIC0tZGlzYWJsZS1zeXN0ZW10YXAiCitDT1JFQ09ORiA9ICItLWRpc2FibGUtZHRyYWNlIC0tZGlzYWJsZS1mYW0gLS1kaXNhYmxlLXN5c3RlbXRhcCIKIAogUFJJTlRGID0gIi0tZW5hYmxlLWluY2x1ZGVkLXByaW50Zj1ubyIKIFBSSU5URl9kYXJ3aW4gPSAiLS1lbmFibGUtaW5jbHVkZWQtcHJpbnRmPXllcyIKQEAgLTg2LDEwICs4NiwxMCBAQAogQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLXRhcmdldF9taXBzMTZlID0gIiAtRE5WQUxHUklORD0xIgogCiAjIEdMaWIgZ2VuZXJhbGx5IHJlcXVpcmVzIGdldHRleHQgdG8gYmUgcHJlc2VudCBzbyBmb3IgVVNFX05MUyB0byB5ZXMuICBGb3IKLSMgbmF0aXZlIGJ1aWxkcyBhcyBpMThuIGlzIGRpc2FibGVkIGdsb2JhbGx5IHdlIGNhbiB0ZWxsIGl0IHRvIHVzZSBhIGZha2UgbXNnZm10LgorIyBuYXRpdmUgYnVpbGRzIGFzIGkxOG4gaXMgZGlzYWJsZWQgZ2xvYmFsbHkgd2UgaGF2ZSB0byBhZGQgYSBnZXR0ZXh0LW5hdGl2ZSBkZXBlbmRlbmN5LgogVVNFX05MU19jbGFzcy10YXJnZXQgPSAieWVzIgogVVNFX05MU19jbGFzcy1uYXRpdmVzZGsgPSAieWVzIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgYWNfY3ZfcGF0aF9NU0dGTVQ9L2Jpbi9mYWxzZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ2V0dGV4dC1uYXRpdmUiCiAKIEVYRUVYVCA9ICIiCiBFWEVFWFRfbWluZ3czMiA9ICIuZXhlIgpAQCAtMTE2LDcgKzExNiw3IEBACiAKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CiAJIyBUZXN0cyBhcmUgb25seSBpbnN0YWxsZWQgb24gdGFyZ2V0cywgbm90IG5hdGl2ZSBidWlsZHMuICBTZXBhcmF0aW5nIHRoaXMgb3V0Ci0JIyBrZWVwcyBnbGliLTIuMC1uYXRpdmUgZnJvbSBkZXBlbmRpbmcgb24gJHtESVNUUk9fRkVBVFVSRVN9CisJIyBrZWVwcyBnbGliLTIuMC1uYXRpdmUgZnJvbSBkZXBlbmRpbmcgb24gRElTVFJPX0ZFQVRVUkVTCiAJaWYgWyAtZiAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9nZGJ1cy1zZXJpYWxpemF0aW9uLnRlc3QgXTsgdGhlbgogCQlpZiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJmYWxzZSIsICJ0cnVlIiwgZCl9OyB0aGVuCiAJCQlybSAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9nZGJ1cy1zZXJpYWxpemF0aW9uLnRlc3QKQEAgLTE0MCw2ICsxNDAsOCBAQAogICAgICAgICAgICAgc2hhcmVkLW1pbWUtaW5mbyBcCiAgICAgICAgICAgICIKIAorIyBXaGVuIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliL2lzc3Vlcy8xMzQzIGlzCisjIGZpeGVkIGFkZCBsb2NhbGUtYmFzZS1wbC1wbAogUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAogICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtdXRmLTE2IFwKICAgICAgICAgICAgIGdsaWJjLWNoYXJtYXAtdXRmLTggXApAQCAtMTUyLDYgKzE1NCwxNyBAQAogICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xNSBcCiAgICAgICAgICAgICBnbGliYy1jaGFybWFwLWludmFyaWFudCBcCiAgICAgICAgICAgICBnbGliYy1sb2NhbGVkYXRhLXRyYW5zbGl0LWNqay12YXJpYW50cyBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS10ci10ciBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1sdC1sdCBcCisgICAgICAgICAgICBsb2NhbGUtYmFzZS1qYS1qcC5ldWMtanAgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZmEtaXIgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtcnUtcnUgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZGUtZGUgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtaHItaHIgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZWwtZ3IgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZnItZnIgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZXMtZXMgXAorICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tZ2IgXAogICAgICAgICAgICAiCiAKIElOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJsaWJkaXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTkyZWI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCi0gICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLSMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5Ci0jCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCi0KLWluaGVyaXQgbmF0aXZlCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgotCi1TUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgotCi1TUkNSRVZfZ2xpYmMgPz0gImRmM2ZmNGU0OWQ0ZWUzY2JiZGFlYjBiMWNiNWRjMjM0NGMwOGJlOTgiCi1TUkNSRVZfbG9jYWxlZGVmID89ICJkZTViZGJkNWU3NmI1NDAzYTQxNTFiOWI5Zjk1OGI2Y2NhMzZiM2U3IgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FyY2hpdmUtcGF0aC5wYXRjaCBcCi0iCi0jIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgotIwotU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKLUNGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDViOTRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjguYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1jZmMwZWQ3N2E5ZjYyZmE2MmVkZWQwNDJlYmUzMWQ3MiBcCisgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKKyMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5CisjCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCisKK2luaGVyaXQgbmF0aXZlCitpbmhlcml0IGF1dG90b29scworCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgorCitTUkNSRVZfZ2xpYmMgPz0gIjNjMDNiYWNhMzdmZGNiNTJjMzg4MWU2NTNjYTM5MmJiYTdhOTljMmIiCitTUkNSRVZfbG9jYWxlZGVmID89ICJjMzI4Nzc3MjE5Y2NjNDgwYmUzMTEyY2Y4MDcyMTdjYTZiNTcwYjY0IgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCisiCisjIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgorIworU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKK0NGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKaW5kZXggYWE4NzFhYy4uNTM2ZWRmYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCkBAIC05LDYgKzksNyBAQAogIyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxNS1KYW51YXJ5LzEwMDY3OS5odG1sCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCiAKIGRlbHRhc2sgZG9fZmV0Y2gKIGRlbHRhc2sgZG9fdW5wYWNrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWwuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsLmluYwppbmRleCBiODZlMmZiLi5hY2QwZDZiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWwuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbC5pbmMKQEAgLTEsNCArMSw0IEBACi1ERVBFTkRTID0gImxpbnV4LWxpYmMtaGVhZGVycyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtaW5pdGlhbCBsaWJnY2MtaW5pdGlhbCIKK0RFUEVORFMgPSAibGludXgtbGliYy1oZWFkZXJzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIGxpYmdjYy1pbml0aWFsIG1ha2UtbmF0aXZlIGJpc29uLW5hdGl2ZSIKIFBST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtaW5pdGlhbCIKIAogUEFDS0FHRVMgPSAiIgpAQCAtMTMsOSArMTMsOSBAQAogCWNmZ3NjcmlwdD1gcHl0aG9uMyAtYyAiaW1wb3J0IG9zOyBwcmludChvcy5wYXRoLnJlbHBhdGgoJyR7U30nLCAnLicpKSJgL2NvbmZpZ3VyZQogCSRjZmdzY3JpcHQgLS1ob3N0PSR7VEFSR0VUX1NZU30gLS1idWlsZD0ke0JVSUxEX1NZU30gXAogCQktLXByZWZpeD0vdXNyIFwKLQkJLS13aXRob3V0LWN2cyAtLWRpc2FibGUtc2FuaXR5LWNoZWNrcyBcCisJCS0tZGlzYWJsZS1zYW5pdHktY2hlY2tzIFwKIAkJLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSBcCi0JCS0tZW5hYmxlLWhhY2tlci1tb2RlIC0tZW5hYmxlLWFkZG9ucworCQktLWVuYWJsZS1oYWNrZXItbW9kZQogfQogCiBkb19jb21waWxlICgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtaW5pdGlhbF8yLjI3LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yOC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxkLmluYwppbmRleCBjMWQ2MzVkLi5iYjE2N2IzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxkLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxkLmluYwpAQCAtMSw0MyArMSwxNSBAQAotZGVmIGxkX2FwcGVuZF9pZl90dW5lX2V4aXN0cyhkLCBpbmZvcywgZGljdCk6Ci0gICAgdHVuZSA9IGQuZ2V0VmFyKCJERUZBVUxUVFVORSIpIG9yICIiCi0gICAgbGliZGlyID0gZC5nZXRWYXIoImJhc2VfbGliZGlyIikgb3IgIiIKLSAgICBpZiB0dW5lIGluIGRpY3Q6Ci0gICAgICAgIGluZm9zWydsZGNvbmZpZyddLmFkZCgneyInICsgbGliZGlyICsgJy8nICsgZGljdFt0dW5lXVswXSArICciLCcgKyBkaWN0W3R1bmVdWzFdICsgJyB9JykKLSAgICAgICAgaW5mb3NbJ2xkZHJld3JpdGUnXS5hZGQobGliZGlyKycvJytkaWN0W3R1bmVdWzBdKQoraW5oZXJpdCBsaW51eGxvYWRlcgorCitHTElCQ19HRVRMT0FERVIgPSAiJHtAZ2V0X2xpbnV4bG9hZGVyKGQpfSIKIAogZGVmIGdsaWJjX2RsX2luZm8oZCk6Ci0gICAgbGRfaW5mb19hbGwgPSB7Ci0gICAgICAgICJtaXBzYXJjaCI6IFsibGQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAibWlwc2FyY2hyNiI6IFsibGQtbGludXgtbWlwc244LnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgInBvd2VycGMiOiBbImxkLnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgInBvd2VycGMtbmYiOiBbImxkLnNvLjEiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgInBvd2VycGM2NCI6IFsibGQ2NC5zby4xIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJwb3dlcnBjNjQtbmYiOiBbImxkNjQuc28uMSIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAiY29yZTItMzIiOiBbImxkLWxpbnV4LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgImNvcmUyLTY0IjogWyJsZC1saW51eC14ODYtNjQuc28uMiIsICJGTEFHX0VMRl9MSUJDNiJdLAotICAgICAgICAieDg2IjogWyJsZC1saW51eC5zby4yIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJ4ODYtNjQiOiBbImxkLWxpbnV4LXg4Ni02NC5zby4yIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJpNTg2IjogWyJsZC1saW51eC5zby4yIiwgIkZMQUdfRUxGX0xJQkM2Il0sCi0gICAgICAgICJjb3JlaTctMzIiOiBbImxkLWxpbnV4LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICAgICAgImNvcmVpNy02NCI6IFsibGQtbGludXgteDg2LTY0LnNvLjIiLCAiRkxBR19FTEZfTElCQzYiXSwKLSAgICB9Ci0KICAgICBpbmZvcyA9IHsnbGRjb25maWcnOnNldCgpLCAnbGRkcmV3cml0ZSc6c2V0KCl9Ci0gICAgbGRfYXBwZW5kX2lmX3R1bmVfZXhpc3RzKGQsIGluZm9zLCBsZF9pbmZvX2FsbCkKIAotICAgICNERUZBVUxUVFVORV9NVUxUSUxJQl9PUklHSU5BTAotICAgIG9yaWdpbmFsX3R1bmU9ZC5nZXRWYXIoIkRFRkFVTFRUVU5FX01VTFRJTElCX09SSUdJTkFMIikKLSAgICBpZiBvcmlnaW5hbF90dW5lOgotICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiREVGQVVMVFRVTkUiLCBvcmlnaW5hbF90dW5lKQotICAgICAgICBsZF9hcHBlbmRfaWZfdHVuZV9leGlzdHMobG9jYWxkYXRhLCBpbmZvcywgbGRfaW5mb19hbGwpCisgICAgbG9hZGVycyA9IGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAiR0xJQkNfR0VUTE9BREVSIikuc3BsaXQoKQorICAgIGZvciBsb2FkZXIgaW4gbG9hZGVyczoKKyAgICAgICAgaW5mb3NbJ2xkY29uZmlnJ10uYWRkKCd7IicgKyBsb2FkZXIgKyAnIiwnICsgIkZMQUdfRUxGX0xJQkM2IiArICcgfScpCisgICAgICAgIGluZm9zWydsZGRyZXdyaXRlJ10uYWRkKGxvYWRlcikKIAotICAgIHZhcmlhbnRzID0gZC5nZXRWYXIoIk1VTFRJTElCX1ZBUklBTlRTIikgb3IgIiIKLSAgICBmb3IgaXRlbSBpbiB2YXJpYW50cy5zcGxpdCgpOgotICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcigiT1ZFUlJJREVTIiwgRmFsc2UpICsgIjp2aXJ0Y2xhc3MtbXVsdGlsaWItIiArIGl0ZW0KLSAgICAgICAgbG9jYWxkYXRhLnNldFZhcigiT1ZFUlJJREVTIiwgb3ZlcnJpZGVzKQotICAgICAgICBsZF9hcHBlbmRfaWZfdHVuZV9leGlzdHMobG9jYWxkYXRhLCBpbmZvcywgbGRfaW5mb19hbGwpCiAgICAgaW5mb3NbJ2xkY29uZmlnJ10gPSAnLCcuam9pbihpbmZvc1snbGRjb25maWcnXSkKICAgICBpbmZvc1snbGRkcmV3cml0ZSddID0gJyAnLmpvaW4oaW5mb3NbJ2xkZHJld3JpdGUnXSkKICAgICByZXR1cm4gaW5mb3MKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlLmluYwppbmRleCBlNTBlNWNmLi4xYjY3NmRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jCkBAIC0yMSwxMyArMjEsMTMgQEAKICMgdG8gZGVjcmVhc2UgaW5pdGlhbCBib290IHRpbWUgYW5kIGF2b2lkIGxvY2FsZWRlZiBiZWluZyBraWxsZWQgYnkgdGhlIE9PTQogIyBraWxsZXIgd2hpY2ggdXNlZCB0byBlZmZlY3RpdmVseSBicmVhayBpMThuIG9uIG1hY2hpbmVzIHdpdGggPCAxMjhNQiBSQU0uCiAKLSMgZGVmYXVsdCB0byBkaXNhYmxlZCAKKyMgZGVmYXVsdCB0byBkaXNhYmxlZAogRU5BQkxFX0JJTkFSWV9MT0NBTEVfR0VORVJBVElPTiA/PSAiMCIKIEVOQUJMRV9CSU5BUllfTE9DQUxFX0dFTkVSQVRJT05fcG4tbmF0aXZlc2RrLWdsaWJjLWxvY2FsZSA9ICIxIgogCiAjZW5hYmxlIGxvY2FsZSBnZW5lcmF0aW9uIG9uIHRoZXNlIGFyY2hlcwogIyBCSU5BUllfTE9DQUxFX0FSQ0hFUyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMKLUJJTkFSWV9MT0NBTEVfQVJDSEVTID89ICJhcm0uKiBhYXJjaDY0IGlbMy02XTg2IHg4Nl82NCBwb3dlcnBjIG1pcHMgbWlwczY0IgorQklOQVJZX0xPQ0FMRV9BUkNIRVMgPz0gImFybS4qIGFhcmNoNjQgaVszLTZdODYgeDg2XzY0IHBvd2VycGMgbWlwcyBtaXBzNjQgcmlzY3YzMiByaXNjdjY0IgogCiAjIHNldCAiMSIgdG8gdXNlIGNyb3NzLWxvY2FsZWRlZiBmb3IgbG9jYWxlIGdlbmVyYXRpb24KICMgc2V0ICIwIiBmb3IgcWVtdSBlbXVsYXRpb24gb2YgbmF0aXZlIGxvY2FsZWRlZiBmb3IgbG9jYWxlIGdlbmVyYXRpb24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI3LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI4LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yOC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yOC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggYzFkMTg2YS4uYTk4YWUxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCkBAIC0xLDYgKzEsNiBAQAogSU5ISUJJVF9TWVNST09UX1NUUklQID0gIjEiCiAKLVBBQ0tBR0VTID0gIiR7UE59LWRiZyBjYXRjaHNlZ3Ygc2xuIG5zY2QgbGRkIHR6Y29kZSBnbGliYy10aHJlYWQtZGIgJHtQTn0tcGljIGxpYmNpZG4gbGlibWVtdXNhZ2UgbGlic2VnZmF1bHQgJHtQTn0tcGNwcm9maWxlIGxpYnNvdHJ1c3MgJHtQTn0gJHtQTn0tdXRpbHMgZ2xpYmMtZXh0cmEtbnNzICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jIgorUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGNhdGNoc2VndiBzbG4gbnNjZCBsZGQgdHpjb2RlIGdsaWJjLXRocmVhZC1kYiAke1BOfS1waWMgbGliY2lkbiBsaWJtZW11c2FnZSBsaWJuc3MtZGIgbGlic2VnZmF1bHQgJHtQTn0tcGNwcm9maWxlIGxpYnNvdHJ1c3MgJHtQTn0gJHtQTn0tdXRpbHMgZ2xpYmMtZXh0cmEtbnNzICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jIgogCiAjIFRoZSBsZC5zbyBpbiB0aGlzIGdsaWJjIHN1cHBvcnRzIHRoZSBHTlVfSEFTSAogUlBST1ZJREVTXyR7UE59ID0gImVnbGliYyBydGxkKEdOVV9IQVNIKSIKQEAgLTE0LDcgKzE0LDcgQEAKIFJQUk9WSURFU19nbGliYy10aHJlYWQtZGIgPSAiZWdsaWJjLXRocmVhZC1kYiIKIFJQUk9WSURFU18ke1BOfS1wY3Byb2ZpbGUgPSAiZWdsaWJjLXBjcHJvZmlsZSIKIFJQUk9WSURFU18ke1BOfS1kYmcgPSAiZWdsaWJjLWRiZyIKLWxpYmNfYmFzZWxpYnMgPSAiJHtiYXNlX2xpYmRpcn0vbGliY3J5cHQqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliY3J5cHQtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJjLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliYy0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm0qLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlibS0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm12ZWMtKi5zbyAke2Jhc2VfbGliZGlyfS9sZCouc28uKiAke2Jhc2VfbGliZGlyfS9sZC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnB0aHJlYWQqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlicHRocmVhZC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnJlc29sdiouc28uKiAke2Jhc2VfbGliZGlyfS9saWJyZXNvbHYtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJydCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJydC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnV0aWwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlidXRpbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm5zbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc2wtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfZmlsZXMqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlibnNzX2ZpbGVzLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNzX2NvbXBhdCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfY29tcGF0LSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNzX2Rucyouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfZG5zLSouc28gJHtiYXNlX2xpYmRpcn0vbGliZGwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliZGwtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJhbmwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliYW5sLSouc28gJHtiYXNlX2xpYmRpcn0vbGliQnJva2VuTG9jYWxlKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYkJyb2tlbkxvY2FsZS0qLnNvIgorbGliY19iYXNlbGlicyA9ICIke2Jhc2VfbGliZGlyfS9saWJjLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliYy0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm0qLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlibS0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm12ZWMtKi5zbyAke2Jhc2VfbGliZGlyfS9sZCouc28uKiAke2Jhc2VfbGliZGlyfS9sZC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnB0aHJlYWQqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlicHRocmVhZC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnJlc29sdiouc28uKiAke2Jhc2VfbGliZGlyfS9saWJyZXNvbHYtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJydCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJydC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYnV0aWwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlidXRpbC0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm5zbCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc2wtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJuc3NfZmlsZXMqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGlibnNzX2ZpbGVzLSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNzX2NvbXBhdCouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfY29tcGF0LSouc28gJHtiYXNlX2xpYmRpcn0vbGlibnNzX2Rucyouc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfZG5zLSouc28gJHtiYXNlX2xpYmRpcn0vbGliZGwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliZGwtKi5zbyAke2Jhc2VfbGliZGlyfS9saWJhbmwqLnNvLiogJHtiYXNlX2xpYmRpcn0vbGliYW5sLSouc28gJHtiYXNlX2xpYmRpcn0vbGliQnJva2VuTG9jYWxlKi5zby4qICR7YmFzZV9saWJkaXJ9L2xpYkJyb2tlbkxvY2FsZS0qLnNvIgogbGliY19iYXNlbGlic19hcHBlbmRfYWFyY2g2NCA9ICIgL2xpYi9sZC1saW51eC1hYXJjaDY0Ki5zby4xIgogSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX2FhcmNoNjQgPSAiIGxpYmRpciIKIApAQCAtMjMsMTIgKzIzLDE0IEBACiBGSUxFU19saWJzZWdmYXVsdCA9ICIke2Jhc2VfbGliZGlyfS9saWJTZWdGYXVsdCoiCiBGSUxFU19saWJjaWRuID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNpZG4tKi5zbyAke2Jhc2VfbGliZGlyfS9saWJjaWRuLnNvLioiCiBGSUxFU19saWJtZW11c2FnZSA9ICIke2Jhc2VfbGliZGlyfS9saWJtZW11c2FnZS5zbyIKK0ZJTEVTX2xpYm5zcy1kYiA9ICIke2Jhc2VfbGliZGlyfS9saWJuc3NfZGIuc28uKiAke2Jhc2VfbGliZGlyfS9saWJuc3NfZGItKi5zbyAke2xvY2Fsc3RhdGVkaXJ9L2RiL01ha2VmaWxlICR7bG9jYWxzdGF0ZWRpcn0vZGIvbWFrZWRicy5zaCIKK1JERVBFTkRTX2xpYm5zcy1kYiA9ICIke1BOfS11dGlscyIKIEZJTEVTX2dsaWJjLWV4dHJhLW5zcyA9ICIke2Jhc2VfbGliZGlyfS9saWJuc3NfKi0qLnNvICR7YmFzZV9saWJkaXJ9L2xpYm5zc18qLnNvLioiCiBGSUxFU19zbG4gPSAiJHtiYXNlX3NiaW5kaXJ9L3NsbiIKIEZJTEVTXyR7UE59LXBpYyA9ICIke2xpYmRpcn0vKl9waWMuYSAke2xpYmRpcn0vKl9waWMubWFwICR7bGliZGlyfS9saWJjX3BpYy8qLm8iCiBGSUxFU19saWJzb3RydXNzID0gIiR7bGliZGlyfS9hdWRpdC9zb3RydXNzLWxpYi5zbyIKIEZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L3JwY2dlbiAke2xpYmRpcn0vKl9ub25zaGFyZWQuYSAke2Jhc2VfbGliZGlyfS8qX25vbnNoYXJlZC5hICR7YmFzZV9saWJkaXJ9LyoubyAke2RhdGFkaXJ9L2FjbG9jYWwiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qX25vbnNoYXJlZC5hICR7YmFzZV9saWJkaXJ9Lypfbm9uc2hhcmVkLmEgJHtiYXNlX2xpYmRpcn0vKi5vICR7ZGF0YWRpcn0vYWNsb2NhbCIKIEZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLmEiCiBGSUxFU19uc2NkID0gIiR7c2JpbmRpcn0vbnNjZCogJHtzeXNjb25mZGlyfS9pbml0LmQvbnNjZCAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25zY2QqICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9uc2NkLmNvbmYgXAogICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L25zY2QuY29uZiAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk4X25zY2QgJHtsb2NhbHN0YXRlZGlyfS9kYi9uc2NkIgpAQCAtNTEsNyArNTMsNyBAQAogU1VNTUFSWV9sZGQgPSAicHJpbnQgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzIgogREVTQ1JJUFRJT05fbGRkID0gIiR7YmluZGlyfS9sZGQgcHJpbnRzIHNoYXJlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmb3IgZWFjaCBwcm9ncmFtIG9yIHNoYXJlZCBsaWJyYXJ5IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLiIKIFNVTU1BUllfJHtQTn0tdXRpbHMgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgcHJvdmlkZWQgYnkgZ2xpYmMiCi1ERVNDUklQVElPTl8ke1BOfS11dGlscyA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBpbmNsdWRpbmcgZ2V0Y29uZiwgaWNvbnYsIGxvY2FsZSwgZ2VuY2F0LCBycGNnZW4sIC4uLiIKK0RFU0NSSVBUSU9OXyR7UE59LXV0aWxzID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIGluY2x1ZGluZyBnZXRjb25mLCBpY29udiwgbG9jYWxlLCBnZW5jYXQsIC4uLiIKIERFU0NSSVBUSU9OX2xpYnNvdHJ1c3MgPSAiTGlicmFyeSB0byBzdXBwb3J0IHNvdHJ1c3Mgd2hpY2ggdHJhY2VzIGNhbGxzIHRocm91Z2ggUExUcyIKIERFU0NSSVBUSU9OX3R6Y29kZSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgogCkBAIC01OSw3ICs2MSw2IEBACiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKIAlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0KIAogCSMgcmVtb3ZlIGVtcHR5IGdsaWJjIGRpcgogCWlmIFsgLWQgJHtEfSR7bGliZXhlY2Rpcn0gXTsgdGhlbgpAQCAtNzEsNyArNzIsNiBAQAogCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9tdHJhY2UgXTsgdGhlbgogCQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAtZSAnMnMsZXhlYy4qcGVybCxleGVjICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L210cmFjZQogCWZpCi0Jcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2Yy9ycXVvdGEqCiAJIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KIAlpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KIAkJcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCkBAIC05Niw2ICs5Niw3IEBACiAJaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9kYi9uc2NkCiAJaW5zdGFsbCAtbSAwNzU1ICR7U30vbnNjZC9uc2NkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25zY2QKIAlpbnN0YWxsIC1tIDA3NTUgJHtTfS9uc2NkL25zY2QuY29uZiAke0R9JHtzeXNjb25mZGlyfS9uc2NkLmNvbmYKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9tYWtlZGJzLnNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2RiCiAJc2VkIC1pICJzJWRhZW1vbiVzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tZXhlYyVnIiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnNjZAogCXNlZCAtaSAic3xcKGVuYWJsZS1jYWNoZVx0XCtuZXRncm91cFx0XCtcKXllc3xcMW5vfCIgJHtEfSR7c3lzY29uZmRpcn0vbnNjZC5jb25mCiAKQEAgLTIwNiwxMCArMjA3LDExIEBACiAJcm0gLXJmICR7RH0vJHtsb2NhbGVkaXJ9CiAJcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2xvY2FsZQogCWlmIFsgIiR7bGliZGlyfSIgIT0gIiR7ZXhlY19wcmVmaXh9L2xpYiIgXTsgdGhlbgotCQlpZiBbIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbG9jYWxlIF0gOyB0aGVuCi0JCQlybSAtcmYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9sb2NhbGUKKwkJaWYgWyAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIF07IHRoZW4KIAkJCSMgZXJyb3Igb3V0IGlmIGRpcmVjdG9yeSBpc24ndCBlbXB0eQotCQkJcm0gLWYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYgorCQkJIyB0aGlzIGRpciBzaG91bGQgb25seSBjb250YWluIGxvY2FsZSBkaXIKKwkJCSMgd2hpY2ggaGFzIGJlZW4gZGVsZXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcAorCQkJcm1kaXIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYgogCQlmaQogCWZpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjI4LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yNy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjguYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKaW5kZXggY2UxMjIyYi4uOTljOTJjZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKQEAgLTEzLDkgKzEzLDYgQEAKICAgICAgICAgICAgIG9wdF9lZmZlY3RpdmUgPSBvcHQKICAgICBpZiBvcHRfZWZmZWN0aXZlID09ICItTzAiOgogICAgICAgICBiYi5mYXRhbCgiJXMgY2FuJ3QgYmUgYnVpbHQgd2l0aCAlcywgdHJ5IC1PMSBpbnN0ZWFkIiAlIChkLmdldFZhcignUE4nKSwgb3B0X2VmZmVjdGl2ZSkpCi0gICAgaWYgb3B0X2VmZmVjdGl2ZSBpbiAoIi1PIiwgIi1PMSIsICItT3MiKToKLSAgICAgICAgYmIubm90ZSgiJXMgZG9lc24ndCBidWlsZCBjbGVhbmx5IHdpdGggJXMsIGFkZGluZyAtV25vLWVycm9yIHRvIFNFTEVDVEVEX09QVElNSVpBVElPTiIgJSAoZC5nZXRWYXIoJ1BOJyksIG9wdF9lZmZlY3RpdmUpKQotICAgICAgICBkLmFwcGVuZFZhcigiU0VMRUNURURfT1BUSU1JWkFUSU9OIiwgIiAtV25vLWVycm9yIikKIH0KIAogIyBzaXRlY29uZmlnLmJiY2xhc3MgcnVucyBjb25maWd1cmUgd2hpY2ggbmVlZHMgYSB3b3JraW5nIGNvbXBpbGVyCkBAIC0zMywxMiArMzAsOCBAQAogCiAjIG5wdGwgbmVlZHMgdW53aW5kIHN1cHBvcnQgaW4gZ2NjLCB3aGljaCBjYW4ndCBiZSBidWlsdCB3aXRob3V0IGdsaWJjLgogREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtaW5pdGlhbCBsaWJnY2MtaW5pdGlhbCBsaW51eC1saWJjLWhlYWRlcnMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1pbml0aWFsIgotIyBucHRsIG5lZWRzIGxpYmdjYyBidXQgZGxvcGVucyBpdCwgc28gb3VyIHNobGlicyBjb2RlIGRvZXNuJ3QgZGV0ZWN0IHRoaXMKLSNSREVQRU5EU18ke1BOfSArPSAiJHtAWycnLCdsaWJnY2MnXVsnbnB0bCcgaW4gJyR7R0xJQkNfQURET05TfSddfSIKIAotQ1JZUFRQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgotQ1JZUFRQUk9WSURFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgotUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyAke0NSWVBUUFJPVklERVN9IgorUFJPVklERVMgPSAidmlydHVhbC9saWJjIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWxpYmMtZm9yLWdjYyIKIFBST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYmludGwgdmlydHVhbC9saWJpY29udiIKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHN5c3RlbWQKIApAQCAtNjMsNiArNTYsNyBAQAogIyBodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxNS1KYW51YXJ5LzEwMDY3OS5odG1sCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCiAKICMgZ2xpYmMgdXNlcyBQQVJBTExFTE1GTEFHUyB2YXJpYWJsZSB0byBwYXNzIHBhcmFsbGVsIGJ1aWxkIGluZm8gc28gdHJhbnNmZXIKICMgUEFSQUxMRUxfTUFLRSBpbnRvIFBBUkFMTEVMTUZMQUdTIGFuZCBlbXB0eSBvdXQgUEFSQUxMRUxfTUFLRQpAQCAtODAsOCArNzQsNiBAQAogCXNlZCAtZSAicyNAQkFTSEAjL2Jpbi9zaCMiIC1pICR7U30vZWxmL2xkZC5iYXNoLmluCiB9CiAKLUdMSUJDX0FERE9OUyA/PSAibnB0bCxsaWJpZG4iCi0KICMgRW5hYmxlIGJhY2t0cmFjZSBmcm9tIGFib3J0KCkKIGRvX2NvbmZpZ3VyZV9hcHBlbmRfYXJtICgpIHsKIAllY2hvICJDRkxBR1MtYWJvcnQuYyA9IC1mYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMiID4+ICR7Qn0vY29uZmlncGFybXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKaW5kZXggODYyMzRjOS4uNWRmMjZhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIGJkOTFiNjBjZTZmZjAxZjQ5YjE3M2I2YjQ1ZTIzY2U5NDkxMWIyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJkNTFiM2FkZDg5YTVjYjJkOGY0NDAyOWExMDI3Yzc4MGIyYWZmZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo0ODoyNCArMDAwMAotU3ViamVjdDogW1BBVENIIDAxLzI3XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCi0gd2VsbAorU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzIHdlbGwKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIApAQCAtMzEsMTAgKzMwLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCi1pbmRleCA3NTU0YTk5YjVhLi5hNzNkMTFhNjJmIDEwMDY0NAoraW5kZXggYzUxZTRiMzcxOC4uNDRiYmI2OWRjNCAxMDA2NDQKIC0tLSBhL2VsZi9kbC1sb2FkLmMKICsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0yMDA3LDYgKzIwMDcsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTIwODUsNiArMjA4NSwxNCBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogIApAQCAtNDksNyArNDgsNyBAQAogICNpZmRlZiBVU0VfTERDT05GSUcKICAgICAgICBpZiAoZmQgPT0gLTEKICAJICAmJiAoX19nbGliY19saWtlbHkgKChtb2RlICYgX19SVExEX1NFQ1VSRSkgPT0gMCkKLUBAIC0yMDY1LDE0ICsyMDczLDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorQEAgLTIxNDMsMTQgKzIxNTEsNiBAQCBfZGxfbWFwX29iamVjdCAoc3RydWN0IGxpbmtfbWFwICpsb2FkZXIsIGNvbnN0IGNoYXIgKm5hbWUsCiAgCX0KICAjZW5kaWYKICAKQEAgLTY0LDYgKzYzLDMgQEAKICAgICAgICAvKiBBZGQgYW5vdGhlciBuZXdsaW5lIHdoZW4gd2UgYXJlIHRyYWNpbmcgdGhlIGxpYnJhcnkgbG9hZGluZy4gICovCiAgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEdMUk8oZGxfZGVidWdfbWFzaykgJiBETF9ERUJVR19MSUJTKSkKICAJX2RsX2RlYnVnX3ByaW50ZiAoIlxuIik7Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCmluZGV4IDg5OTQ4MWYuLmRhYWRlYzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0xLDggKzEsNyBAQAotRnJvbSA1MDczNmY3ZmMxZmRjOWUxZjdjMDVmMWZlYzc1Yzk3N2Q5YmU5MjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmZGM4YTMzYWMyYzgxYTAyMzdiOGE2ZDhiMWFhYzdmMWNkYmI0NmFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yN10gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAotIFNESworU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkIFNESwogCiBXaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCiBvcmlnaW5hbCBmaXhlZCBsb2NhdGlvbiwgdGhlIGR5bmFtaWMgbG9hZGVyIHdpbGwgY3Jhc2ggaW4gb3Blbl9wYXRoCkBAIC0yMiwxMCArMjEsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGE3M2QxMWE2MmYuLjYyZTNlZWU0NzggMTAwNjQ0CitpbmRleCA0NGJiYjY5ZGM0Li43NGUyZTVlOTYyIDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTE3MDcsNyArMTcwNywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKK0BAIC0xNzg1LDcgKzE3ODUsMTkgQEAgb3Blbl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwgaW50IG1vZGUsCiAgICAgICAgIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgd2hlbiBydGxkIGlzIHJ1biBkaXJlY3RseS4gICovCiAgICAgIHJldHVybiAtMTsKICAKQEAgLTQ1LDYgKzQ0LDMgQEAKICAgIGRvCiAgICAgIHsKICAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOwotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAppbmRleCAwM2Y5OTkxLi5lMDgyNTQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gNjk1ZTFjYmZmNmVlNmRiMzQzNWMzM2U1NTMxMWM2N2FkZjQ0NDc2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDU1ZGQ0NmI3OTMxNjhmYjA4ZTQ0OTEzMTUzMDEwYjA4ODAxMWJhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjddIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKLSBwYXRocworU3ViamVjdDogW1BBVENIXSBuYXRpdmVzZGstZ2xpYmM6IFJhaXNlIHRoZSBzaXplIG9mIGFycmF5cyBjb250YWluaW5nIGRsIHBhdGhzCiAKIFRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKIGFuZCBsZW5ndGhzIGFzIHdlbGwgYXMgbGQuc28uY2FjaGUgcGF0aCBpbiB0aGUgZHluYW1pYyBsb2FkZXIgdG8gc3BlY2lmaWMKQEAgLTQxLDEwICs0MCwxMCBAQAogIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKICB7CiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDYyZTNlZWU0NzguLjZkZGJhNzM2NTAgMTAwNjQ0CitpbmRleCA3NGUyZTVlOTYyLi44ZjE5MTg2ZTFjIDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwotQEAgLTEwOSw4ICsxMDksOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOworQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOwogICAgIGdlbi10cnVzdGVkLWRpcnMuYXdrLiAgKi8KICAjaW5jbHVkZSAidHJ1c3RlZC1kaXJzLmgiCiAgCkBAIC04MSwxMCArODAsMTAgQEAKICAgICBhIHBsYXRmb3JtLiAgKi8KICBzdGF0aWMgaW50CiBkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IDQ1M2Y1NmViMTUuLjA4ZTBjNGM5NGIgMTAwNjQ0CitpbmRleCAxYjBjNzQ3MzlmLi5hNzBhNjJkMzFlIDEwMDY0NAogLS0tIGEvZWxmL3J0bGQuYwogKysrIGIvZWxmL3J0bGQuYwotQEAgLTEyOCw2ICsxMjgsNyBAQCBkc29fbmFtZV92YWxpZF9mb3Jfc3VpZCAoY29uc3QgY2hhciAqcCkKK0BAIC0xMzAsNiArMTMwLDcgQEAgZHNvX25hbWVfdmFsaWRfZm9yX3N1aWQgKGNvbnN0IGNoYXIgKnApCiAgICAgIH0KICAgIHJldHVybiAqcCAhPSAnXDAnOwogIH0KQEAgLTkyLDcgKzkxLDcgQEAKICAKICAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKICAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KLUBAIC0xMDAwLDEyICsxMDAxLDEyIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorQEAgLTEwMDEsMTIgKzEwMDIsMTIgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCiAgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKICAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCiAgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKQEAgLTEwOCw3ICsxMDcsNyBAQAogICAgICAgICsrX2RsX3NraXBfYXJnczsKICAgICAgICAtLV9kbF9hcmdjOwogZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYwotaW5kZXggZDZjZjlkMmEzZS4uOWZjZjk3MDE0NCAxMDA2NDQKK2luZGV4IGYxNzNjZGU3MWIuLjVjMzIwNTAyNmYgMTAwNjQ0CiAtLS0gYS9pY29udi9nY29udl9jb25mLmMKICsrKyBiL2ljb252L2djb252X2NvbmYuYwogQEAgLTM2LDcgKzM2LDcgQEAKQEAgLTEzNSw2ICsxMzQsMyBAQAogICNpZm5kZWYgYWRkX3N5c3RlbV9kaXIKICAjIGRlZmluZSBhZGRfc3lzdGVtX2RpcihkaXIpIGFkZF9kaXIgKGRpcikKICAjZW5kaWYKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAppbmRleCBmOWQ3MGMyLi4xYWUyZTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyYmFmZGJkNzA2Nzc5NGM2YTI0ZTVlODU2MDhjMGVjNDYzOGM1NjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMjM3NTUzY2NkMTUyNzY0NjJiZTIwMjMwNTdhMDE3ZmE4ZWU1ZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzU6MzUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8yN10gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgogCiBUaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgogVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KQEAgLTI5LDYgKzI5LDMgQEAKICAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMgMAogICNkZWZpbmUgQVRPTUlDX0VYQ0hBTkdFX1VTRVNfQ0FTIDAKICAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTEwNmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTg0ICswLDAgQEAKLUZyb20gNjYxYWRmZTljMjIwZDEwNjE3YmY2YmIyODM4Mjc0NzFjMzk1NmIwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjddIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBFZG1hciBXaWVuc2tvc2tpIDxlZG1hckBmcmVlc2NhbGUuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgICAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgICAgICB8IDEzNCArKysrKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jICAgICB8IDEwMSArKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICAgICAgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgICAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgICAgICB8IDEzNCArKysrKysrKysrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgICAgICB8IDEwMSArKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICAgICAgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICAgICAgfCAxMDEgKysrKysrKysrKysrKysrKwotIC4uLi9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzICAgICB8ICAgMiArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyAgICAgfCAgIDEgKwotIC4uLi9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAxOSBmaWxlcyBjaGFuZ2VkLCAxNDE4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0wLDAgKzEsMTM0IEBACi0rLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKLStzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAotKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rI2Vsc2UKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoYikKLSsgICAgIGRvdWJsZSBiOwotKyNlbmRpZgotK3sKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0rICAgIHsKLSsgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKLSsgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7Ci0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHUudmFsdWUgPSBiOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgotKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgotKwotKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQotKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KLSsKLSsgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCi0rCi0rICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCi0rICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKLSsgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQotKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KLSsKLSsgICAgICAgICAgZyA9IGIgKiB5OwotKyAgICAgICAgICBoID0gMC41ICogeTsKLSsKLSsgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0rICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLSsgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKwotKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgICAgX19yO30pCi0rI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KLSsKLSsgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCi0rICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOwotKwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChiIDwgMCkKLSsgICAgewotKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKLSsgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLwotKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKLSsgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOwotKwotKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07Ci0rICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQotKyNlbmRpZgotKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKLSsgICAgICBiID0gYV9uYW4udmFsdWU7Ci0rICAgIH0KLSsgIHJldHVybiBmX3dhc2ggKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0wLDAgKzEsMTAxIEBACi0rLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxtYXRoLmg+Ci0rI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgotKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsKLSsjaW5jbHVkZSA8c3lzZGVwLmg+Ci0rI2luY2x1ZGUgPGxkc29kZWZzLmg+Ci0rCi0rc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0rCi0rLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgotKwotKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7Ci0rICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKLSsKLSsgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSsgICBzcXVhcmUgcm9vdC4gICovCi0rCi0rI2lmZGVmIF9fU1REQ19fCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rI2Vsc2UKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoYikKLSsgICAgIGZsb2F0IGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgX19yO30pCi0rCi0rICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQotKyAgICAgICAgewotKyAgICAgICAgICBkb3VibGUgeSwgeDsKLSsgICAgICAgICAgZmVudl90IGZlOwotKwotKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOwotKwotKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOwotKwotKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLwotKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7Ci0rCi0rICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLwotKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOwotKwotKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsKLSsgICAgICAgICAgLyogQWxsIGRvbmUuICAqLwotKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOwotKyAgICAgICAgICByZXR1cm4geCAqIGI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaGYgKGIpOwotK30KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSwyIEBACi0rIyBlMzAwYzMgaXMgYSB2YXJpYW50IG9mIDYwM2Ugc28gdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbnMgZm9yIHNxcnQKLStwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLUBAIC0wLDAgKzEgQEAKLStwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUzZjJlZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gZTFkYzg1YWYxODAwYWZhNGZiZjRlYjVhNTljYzQxMDI1NDk1YWY1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NTU6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBNYWtlIHJlbG9jYXRhYmxlIGluc3RhbGwgZm9yIGxvY2FsZXMKKworVGhlIGdsaWJjIGxvY2FsZSBwYXRoIGlzIGhhcmQtY29kZWQgdG8gdGhlIGluc3RhbGwgcHJlZml4LCBidXQgaW4gU0RLcyB3ZSBuZWVkCit0byBiZSBhYmxlIHRvIHJlbG9jYXRlIHRoZSBiaW5hcmllcy4gIEV4cGFuZCB0aGUgc3RyaW5ncyB0byA0SyBhbmQgcHV0IHRoZW0gaW4gYQorbWFnaWMgc2VnbWVudCB0aGF0IHdlIGNhbiByZWxvY2F0ZSBhdCBpbnN0YWxsIHRpbWUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL2ZpbmRsb2NhbGUuYyAgfCA0ICsrLS0KKyBsb2NhbGUvbG9hZGFyY2hpdmUuYyB8IDIgKy0KKyBsb2NhbGUvbG9jYWxlaW5mby5oICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9maW5kbG9jYWxlLmMgYi9sb2NhbGUvZmluZGxvY2FsZS5jCitpbmRleCA4NzJjYWRiNWI5Li5kZDY1MWUwN2Y1IDEwMDY0NAorLS0tIGEvbG9jYWxlL2ZpbmRsb2NhbGUuYworKysrIGIvbG9jYWxlL2ZpbmRsb2NhbGUuYworQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IF9fbG9jYWxlX2RhdGEgKmNvbnN0IF9ubF9DW10gYXR0cmlidXRlX2hpZGRlbiA9CisgICAgd2hpY2ggYXJlIHNvbWVob3cgYWRkcmVzc2VkLiAgKi8KKyBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfbmxfbG9jYWxlX2ZpbGVfbGlzdFtfX0xDX0xBU1RdOworIAorLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuID0gQ09NUExPQ0FMRURJUjsKKytjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW4gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUjsKKyAKKyAvKiBDaGVja3MgaWYgdGhlIG5hbWUgaXMgYWN0dWFsbHkgcHJlc2VudCwgdGhhdCBpcywgbm90IE5VTEwgYW5kIG5vdAorICAgIGVtcHR5LiAgKi8KK0BAIC0xNjcsNyArMTY3LDcgQEAgX25sX2ZpbmRfbG9jYWxlIChjb25zdCBjaGFyICpsb2NhbGVfcGF0aCwgc2l6ZV90IGxvY2FsZV9wYXRoX2xlbiwKKyAKKyAgICAgICAvKiBOb3RoaW5nIGluIHRoZSBhcmNoaXZlLiAgU2V0IHRoZSBkZWZhdWx0IHBhdGggdG8gc2VhcmNoIGJlbG93LiAgKi8KKyAgICAgICBsb2NhbGVfcGF0aCA9IF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOworLSAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHNpemVvZiBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKKysgICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzdHJsZW4obG9jYWxlX3BhdGgpICsgMTsKKyAgICAgfQorICAgZWxzZQorICAgICAvKiBXZSByZWFsbHkgaGF2ZSB0byBsb2FkIHNvbWUgZGF0YS4gIEZpcnN0IHNlZSB3aGV0aGVyIHRoZSBuYW1lIGlzCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMgYi9sb2NhbGUvbG9hZGFyY2hpdmUuYworaW5kZXggNTE2ZDMwZDhkMS4uOWJmYmUxYTVkZCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCisrKysgYi9sb2NhbGUvbG9hZGFyY2hpdmUuYworQEAgLTQyLDcgKzQyLDcgQEAKKyAKKyAKKyAvKiBOYW1lIG9mIHRoZSBsb2NhbGUgYXJjaGl2ZSBmaWxlLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbXSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7Cisrc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVIgIi9sb2NhbGUtYXJjaGl2ZSI7CisgCisgLyogU2l6ZSBvZiBpbml0aWFsIG1hcHBpbmcgd2luZG93LCBvcHRpbWFsIGlmIGxhcmdlIGVub3VnaCB0bworICAgIGNvdmVyIHRoZSBoZWFkZXIgcGx1cyB0aGUgaW5pdGlhbCBsb2NhbGUuICAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCA2ODgyMmE2MzE5Li41MzdiYzM1MTQ5IDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTMyNSw3ICszMjUsNyBAQCBfbmxfbG9va3VwX3dvcmQgKGxvY2FsZV90IGwsIGludCBjYXRlZ29yeSwgaW50IGl0ZW0pCisgfQorIAorIC8qIERlZmF1bHQgc2VhcmNoIHBhdGggaWYgbm8gTE9DUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuOworK2V4dGVybiBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW47CisgCisgLyogTG9hZCB0aGUgbG9jYWxlIGRhdGEgZm9yIENBVEVHT1JZIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpOQU1FLgorICAgIElmICpOQU1FIGlzICIiLCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIHNwZWNpZmllZCBieSBQT1NJWCwgYW5kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MTcwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDE1ODEgQEAKK0Zyb20gZDIzYzU3N2IwYjcwYjM0MzM1OTcxYWJhZjNmNTBlNjE3ZGRhNjE1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjAxOjUwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZzbCBlNTAwL2U1NTAwL2U2NTAwLzYwM2UgZnNxcnQgaW1wbGVtZW50YXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBFZG1hciBXaWVuc2tvc2tpIDxlZG1hckBmcmVlc2NhbGUuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyB8IDEzNCArKysrKysrKysrKysrKysrKysKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgICAgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDEzNCArKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCAxMDEgKysrKysrKysrKysrKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzICB8ICAgMSArCisgLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyAgICAgIHwgICAyICsKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzICAgICAgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgMTkgZmlsZXMgY2hhbmdlZCwgMTQxOCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMCwwICsxLDEzNCBAQAorKy8qIERvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdHdvMTA4ID0gMy4yNDUxODU1MzY1ODQyNjcyNjllKzMyOworK3N0YXRpYyBjb25zdCBmbG9hdCB0d29tNTQgPSA1LjU1MTExNTEyMzEyNTc4MjcwMmUtMTc7Cisrc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKKysgICBzaW11bHRhbmVvdXNseS4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorKyNlbHNlCisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGIpCisrICAgICBkb3VibGUgYjsKKysjZW5kaWYKKyt7CisrICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorKyAgICB7CisrICAgICAgZG91YmxlIHksIGcsIGgsIGQsIHI7CisrICAgICAgaWVlZV9kb3VibGVfc2hhcGVfdHlwZSB1OworKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICB1LnZhbHVlID0gYjsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVtlc3RpbWF0ZV0sICVbeF1cbiIKKysgICAgICAgICAgICAgICAgICAgOiBbZXN0aW1hdGVdICI9ZiIgKHkpIDogW3hdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBGb2xsb3dpbmcgTXVsbGVyIGV0IGFsLCBwYWdlIDE2OCwgZXF1YXRpb24gNS4yMC4KKysKKysgICAgICAgICAgICAgaCBnb2VzIHRvIDEvKDIqc3FydChiKSkKKysgICAgICAgICAgICAgZyBnb2VzIHRvIHNxcnQoYikuCisrCisrICAgICAgICAgICAgIFdlIG5lZWQgdGhyZWUgaXRlcmF0aW9ucyB0byBnZXQgd2l0aGluIDF1bHAuICAqLworKworKyAgICAgICAgICAvKiBJbmRpY2F0ZSB0aGF0IHRoZXNlIGNhbiBiZSBwZXJmb3JtZWQgcHJpb3IgdG8gdGhlIGJyYW5jaC4gIEdDQworKyAgICAgICAgICAgICBpbnNpc3RzIG9uIHNpbmtpbmcgdGhlbSBiZWxvdyB0aGUgYnJhbmNoLCBob3dldmVyOyBpdCBzZWVtcyBsaWtlCisrICAgICAgICAgICAgIHRoZXknZCBiZSBiZXR0ZXIgYmVmb3JlIHRoZSBicmFuY2ggc28gdGhhdCB3ZSBjYW4gY292ZXIgYW55IGxhdGVuY3kKKysgICAgICAgICAgICAgZnJvbSBzdG9yaW5nIHRoZSBhcmd1bWVudCBhbmQgbG9hZGluZyBpdHMgaGlnaCB3b3JkLiAgT2ggd2VsbC4gICovCisrCisrICAgICAgICAgIGcgPSBiICogeTsKKysgICAgICAgICAgaCA9IDAuNSAqIHk7CisrCisrICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworKyAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCisrICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysKKysjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm1hZGQgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICAgIF9fcjt9KQorKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIC8qIGcgaXMgbm93ICsvLSAxdWxwLCBvciBleGFjdGx5IGVxdWFsIHRvLCB0aGUgc3F1YXJlIHJvb3Qgb2YgYi4gICovCisrCisrICAgICAgICAgIC8qIEZpbmFsIHJlZmluZW1lbnQuICAqLworKyAgICAgICAgICBkID0gRk5NU1VCIChnLCBnLCBiKTsKKysKKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIEZNQUREIChkLCBoLCBnKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgZWxzZSBpZiAoYiA8IDApCisrICAgIHsKKysgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50CisrICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KKysjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCisrICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKKysKKysgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OworKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKKysjZW5kaWYKKysJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7CisrICAgICAgYiA9IGFfbmFuLnZhbHVlOworKyAgICB9CisrICByZXR1cm4gZl93YXNoIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMCwwICsxLDEwMSBAQAorKy8qIFNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCisrICAgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKysgICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQorKyAgIDAyMTExLTEzMDcgVVNBLiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKysjaW5jbHVkZSA8ZmVudl9saWJjLmg+CisrI2luY2x1ZGUgPGludHR5cGVzLmg+CisrCisrI2luY2x1ZGUgPHN5c2RlcC5oPgorKyNpbmNsdWRlIDxsZHNvZGVmcy5oPgorKworK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9uYW4gPSB7LndvcmQgPSAweDdmYzAwMDAwIH07Cisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX2luZiA9IHsud29yZCA9IDB4N2Y4MDAwMDAgfTsKKytzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworKworKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKKysKKysgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OworKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5CisrCisrICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCisrICAgc3F1YXJlIHJvb3QuICAqLworKworKyNpZmRlZiBfX1NURENfXworK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorKyNlbHNlCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGIpCisrICAgICBmbG9hdCBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysjZGVmaW5lIEZNU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZtc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgIF9fcjt9KQorKworKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiICE9IGFfaW5mLnZhbHVlLCAxKSkKKysgICAgICAgIHsKKysgICAgICAgICAgZG91YmxlIHksIHg7CisrICAgICAgICAgIGZlbnZfdCBmZTsKKysKKysgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKKysKKysgICAgICAgICAgcmVsYXhfZmVudl9zdGF0ZSAoKTsKKysKKysgICAgICAgICAgLyogQ29tcHV0ZSB5ID0gMS41ICogYiAtIGIuICBVc2VzIGZld2VyIGNvbnN0YW50cyB0aGFuIHkgPSAwLjUgKiBiLiAgKi8KKysgICAgICAgICAgeSA9IEZNU1VCICh0aHJlZWhhbGYsIGIsIGIpOworKworKyAgICAgICAgICAvKiBJbml0aWFsIGVzdGltYXRlLiAgKi8KKysgICAgICAgICAgX19hc21fXyAoImZyc3FydGUgJVt4XSwgJVtiXVxuIiA6IFt4XSAiPWYiICh4KSA6IFtiXSAiZiIgKGIpKTsKKysKKysgICAgICAgICAgLyogSXRlcmF0ZS4gIHhfe24rMX0gPSB4X24gKiAoMS41IC0geSAqICh4X24gKiB4X24pKS4gICovCisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrCisrICAgICAgICAgIC8qIEFsbCBkb25lLiAgKi8KKysgICAgICAgICAgZmVzZXRlbnZfcmVnaXN0ZXIgKGZlKTsKKysgICAgICAgICAgcmV0dXJuIHggKiBiOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2hmIChiKTsKKyt9CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iMTAzYjRkZWE1CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi42NGRiMTdmYWRhCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEsMiBAQAorKyMgZTMwMGMzIGlzIGEgdmFyaWFudCBvZiA2MDNlIHNvIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb25zIGZvciBzcXJ0CisrcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43ZWFjNWZjZjAyCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2NGIyYTc3MDAKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmEyNTkzNDQ2N2IKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmE3YmM4NTRiZTgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjA0ZmY4Y2MxODEKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCitAQCAtMCwwICsxIEBACisrcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Q1MGZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA2MTU1OThmY2NhNjQ0NjFhNzFkODRmNzU2ZDc1Mzc0ZjAyZDkxNGFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yN10gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgotIG5hbWVzCi0KLVRoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgotbmFtZXMgaW50byBnbGliYyBlc3BlY2lhbGx5IGZvciBtdWx0aWxpYiBjYXNlLCB3aGVyZSBpdCBkaWZmZXJzIGZyb20gYW55Ci1vdGhlciBkaXN0cm9zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IExpYW5oYW8gTHUgPGxpYW5oYW8ubHVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGVsZi9yZWFkbGliLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCi1pbmRleCA1NzNjMDE0NzZjLi5kOGM3NDEyMjg3IDEwMDY0NAotLS0tIGEvZWxmL3JlYWRsaWIuYwotKysrIGIvZWxmL3JlYWRsaWIuYwotQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9Ci0gI2lmZGVmIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotICAgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gI2VuZGlmCi0rICBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSB9OwotIAotIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMzRkZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotRnJvbSA4MDRiNzNhZTI5NWJkZmRhMjkzNDFlODlmMmQwYzFiOTk0OTJkYzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8yN10gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwotCi1vbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93Ci18IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUNoYW5nZUxvZwotCi0yMDEyLTAxLTA2ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYzogQWRkIF9fKl9maW5pdGUgYWxpYXMuCi0gICAgICAgIFJlbW92ZSBjcnVmdC4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYzogRGl0dG8uCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYzogRGl0dG8uCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmM6IERpdHRvLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0gX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotLSNlbHNlCi0tZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0tICAgICBkb3VibGUgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLSBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0tI2Vsc2UKLS1mbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLS0gICAgIGZsb2F0IGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0gX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotLSNlbHNlCi0tZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0tICAgICBkb3VibGUgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0gX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotLSNlbHNlCi0tZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0tICAgICBmbG9hdCBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4NzEzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGQ2NWY2ZWUyMTRkN2Q5MTQ0NWZjZWFiYzZhNWQ2YmY1NWIwZThkNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAorU3ViamVjdDogW1BBVENIXSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duIG5hbWVzCisKK1RoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgorbmFtZXMgaW50byBnbGliYyBlc3BlY2lhbGx5IGZvciBtdWx0aWxpYiBjYXNlLCB3aGVyZSBpdCBkaWZmZXJzIGZyb20gYW55CitvdGhlciBkaXN0cm9zCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IExpYW5oYW8gTHUgPGxpYW5oYW8ubHVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9yZWFkbGliLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCitpbmRleCA1NzNjMDE0NzZjLi5kOGM3NDEyMjg3IDEwMDY0NAorLS0tIGEvZWxmL3JlYWRsaWIuYworKysrIGIvZWxmL3JlYWRsaWIuYworQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9CisgI2lmZGVmIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworICAgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgI2VuZGlmCisrICBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyB9OworIAorIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNDM2NDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODcgKzAsMCBAQAotRnJvbSAxYTUzMDg0MjQ5ZDlkYWUxZWY0MjgxMjQ2ZWZjODk5YzhmOWQ2M2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTY6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yN10gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAotIG91dCBfX3Nsb3cgdmVyc2lvbnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8ICA4ICsrKysrKystCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jICB8IDE0ICsrKysrKysrKysrLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgIDggKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDggKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA5ICsrKysrKysrLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxNCArKysrKysrKysrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxMiArKysrKysrKysrLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotaW5kZXggMTc5NWZkNmMzZS4uZGFhODNmM2ZlOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxM2FiLi5iODEyY2YxNzA1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTMsNCArOTMsMTAgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi4xYzM0MjQ0YmQ4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uODEyNjUzNTU4ZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gICAgc2ltdWx0YW5lb3VzbHkuICAqLwotIAotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydAotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxM2FiLi5mYWUyZDgxMjEwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05Myw0ICs5MywxMSBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLUBAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQotK3sKLSsgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkOTZlYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCkBAIC0wLDAgKzEsMjA1IEBACitGcm9tIGVlM2FhMTQ2NGY0MGM5MTZjNjJjZjMyNmJmNGMxOGY4YjcxYTIyOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCisKK29uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKK3wgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworQ2hhbmdlTG9nCisKKzIwMTItMDEtMDYgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jOiBBZGQgX18qX2Zpbml0ZSBhbGlhcy4KKyAgICAgICAgUmVtb3ZlIGNydWZ0LgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jOiBEaXR0by4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jOiBEaXR0by4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYzogRGl0dG8uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBkb3VibGUKKyBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCistI2Vsc2UKKy1kb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKy0gICAgIGRvdWJsZSBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorICAgIHNxdWFyZSByb290LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBmbG9hdAorIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKy0jZWxzZQorLWZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorLSAgICAgZmxvYXQgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBkb3VibGUKKyBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCistI2Vsc2UKKy1kb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKy0gICAgIGRvdWJsZSBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKyBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCistI2Vsc2UKKy1mbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKy0gICAgIGZsb2F0IGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhNDk4NTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDQ4MjYyYjZkZGE5MzUyNzhhNDAzNzRkZGYwMDgwYWI2Y2M5OTk1ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDA5LzI3XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKLSA6Ci0KLSAgV2UgYnVpbGQgc29tZSByYW5kb20gcHJvZ3JhbSBhbmQgbGluayBpdCB3aXRoIC1sdXN0LiAgV2hlbiB3ZSBydW4gaXQsCi0gIGl0IGRpZXMgd2l0aCBhIFNJR1NFR1YgYmVmb3JlIHJlYWNoaW5nIG1haW4oKS4KLQotICBMaWJ1c3Quc28gZGVwZW5kcyBvbiBsaWJ1cmN1LWJwLnNvIGZyb20gdGhlIHVzZXJtb2RlLXJjdSBwYWNrYWdlLgotICBBbHRob3VnaCBsaWJ1c3Quc28gaXMgbm90IHByZWxpbmtlZCwgbGlidXJjdS1icC5zbyBJUyBwcmVsaW5rZWQ7IHRoaXMKLSAgaXMgY3JpdGljYWwuCi0KLSAgTGlidXN0LnNvIHVzZXMgYSBUTFMgLyBfX3RocmVhZCB2YXJpYWJsZSB0aGF0IGlzIGRlZmluZWQgaW4gbGlidXJjdS0KLSAgYnAuc28uICBUaGVyZSBhcmUgc3BlY2lhbCBBUk0tc3BlY2lmaWMgcmVsb2NhdGlvbiB0eXBlcyB0aGF0IGFsbG93IHR3bwotICBzaGFyZWQgbGlicmFyaWVzIHRvIHNoYXJlIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhpcyBpcyBjcml0aWNhbCB0b28uCi0KLSAgT25lIG1vcmUgY3JpdGljYWwgaXNzdWU6IGFsdGhvdWdoIGxpYnVyY3UtYnAuc28gaXMgcHJlbGlua2VkLCB3ZSBjYW4ndAotICBsb2FkIGl0IGF0IGl0cyBwcmVsaW5rZWQgYWRkcmVzcywgYmVjYXVzZSB3ZSBhbHNvIGxpbmsgYWdhaW5zdAotICBsaWJydC5zbywgYW5kIGxpYnJ0LnNvIHVzZXMgdGhhdCBhZGRyZXNzLgotCi0gIFRoZSBkeW5hbWljIGxpbmtlciBpcyBmb3JjZWQgdG8gcmVsaW5rIGxpYnVyY3UtYnAuc28gYXQgYSBkaWZmZXJlbnQKLSAgYWRkcmVzcy4gIEluIHRoZSBjb3Vyc2Ugb2YgcmVsaW5raW5nLCBpdCBwcm9jZXNzZXMgdGhlIHNwZWNpYWwgQVJNCi0gIHJlbG9jYXRpb24gcmVjb3JkIG1lbnRpb25lZCBhYm92ZS4gIFRoZSBwcmVsaW5rZXIgaGFzIGFscmVhZHkgZmlsbGVkCi0gIGluIHRoZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYSBzaG9ydCBvZmZzZXQgaW50byBhIHRhYmxlIG9mIHRocmVhZC0KLSAgc3BlY2lmaWMgZGF0YSB0aGF0IGlzIGFsbG9jYXRlZCBwZXItdGhyZWFkIGZvciBlYWNoIGxpYnJhcnkgdGhhdCB1c2VzCi0gIFRMUy4gIEJlY2F1c2UgdGhlIG5vcm1hbCBiZWhhdmlvciBvZiBhIHJlbG9jYXRpb24gaXMgdG8gYWRkIHRoZSBzeW1ib2wKLSAgdmFsdWUgdG8gYW4gYWRkZW5kIHN0b3JlZCBhdCB0aGUgYWRkcmVzcyBiZWluZyByZWxvY2F0ZWQsIHdlIGVuZCB1cAotICBhZGRpbmcgdGhlIHNob3J0IG9mZnNldCB0byBpdHNlbGYsIGRvdWJsaW5nIGl0LgotCi0gIE5vdyB3ZSBoYXZlIGFuIGF3a3dhcmQgc2l0dWF0aW9uLiAgVGhlIGxpYnVzdC5zbyBsaWJyYXJ5IGRvZXNuJ3Qga25vdwotICBhYm91dCB0aGUgYWRkZW5kLCBzbyBpdHMgVExTIGRhdGEgZm9yIHRoaXMgZWxlbWVudCBpcyBjb3JyZWN0LiAgVGhlCi0gIGxpYnVyY3UtYnAuc28gbGlicmFyeSBoYXMgYSBkaWZmZXJlbnQgb2Zmc2V0IGZvciB0aGUgZWxlbWVudC4gIFdoZW4gd2UKLSAgZ28gdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudCBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gbGlidXJjdS1icC5zbywgd2UKLSAgd3JpdGUgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlc3VsdCBhdCB0aGUgZG91YmxlZCAoYnJva2VuKSBvZmZzZXQuCi0gIExhdGVyLCB3aGVuIHdlIHJlZmVyIHRvIHRoZSBhZGRyZXNzIGZyb20gbGlidXN0LnNvLCB3ZSBjaGVjayB0aGUgdmFsdWUKLSAgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LCBidXQgaXQncyBOVUxMLCBzbyB3ZSBlYXQgaG90IFNJR1NFR1YuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgRGludSA8YW5kcmVpLmFkcmlhbnguZGludUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1pbmRleCA4YTAwZWFiNWUzLi42MjNlZGNiMWJkIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi0rKysgYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLUBAIC01MTAsNyArNTEwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKLSAKLSAJY2FzZSBSX0FSTV9UTFNfRFRQT0ZGMzI6Ci0gCSAgaWYgKHN5bSAhPSBOVUxMKQotLQkgICAgKnJlbG9jX2FkZHIgKz0gc3ltLT5zdF92YWx1ZTsKLSsJICAgICpyZWxvY19hZGRyID0gc3ltLT5zdF92YWx1ZTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBSX0FSTV9UTFNfVFBPRkYzMjoKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBiNDdjZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0wLDAgKzEsMzg0IEBACitGcm9tIDE3ZTgyZDU5NGIyZDhkM2E2OTk4ZmFjZTk1MzM4MmY5ZDE0ZmIwNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsIG91dAorIF9fc2xvdyB2ZXJzaW9ucworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgIDggKysrKysrKy0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAgOCArKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOCArKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDkgKysrKysrKystCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQorIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitpbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK2luZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgc3F1YXJlIHJvb3QuICAqLworIAorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05Myw0ICs5MywxMCBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCAxNzk1ZmQ2YzNlLi4xM2E4MTk3M2UzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTkzLDQgKzkzLDExIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmVmM2ExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSBmZThkOWI3NmU3Yzg4MWNjMGEwYjcyOGVhMmJkNjM3ZmFmY2EwOTc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjA6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUXVvdGUgZnJvbSBidWcgMTQ0MyB3aGljaCBleHBsYWlucyB3aGF0IHRoZSBwYXRjaCBkb2VzIDoKKworICBXZSBidWlsZCBzb21lIHJhbmRvbSBwcm9ncmFtIGFuZCBsaW5rIGl0IHdpdGggLWx1c3QuICBXaGVuIHdlIHJ1biBpdCwKKyAgaXQgZGllcyB3aXRoIGEgU0lHU0VHViBiZWZvcmUgcmVhY2hpbmcgbWFpbigpLgorCisgIExpYnVzdC5zbyBkZXBlbmRzIG9uIGxpYnVyY3UtYnAuc28gZnJvbSB0aGUgdXNlcm1vZGUtcmN1IHBhY2thZ2UuCisgIEFsdGhvdWdoIGxpYnVzdC5zbyBpcyBub3QgcHJlbGlua2VkLCBsaWJ1cmN1LWJwLnNvIElTIHByZWxpbmtlZDsgdGhpcworICBpcyBjcml0aWNhbC4KKworICBMaWJ1c3Quc28gdXNlcyBhIFRMUyAvIF9fdGhyZWFkIHZhcmlhYmxlIHRoYXQgaXMgZGVmaW5lZCBpbiBsaWJ1cmN1LQorICBicC5zby4gIFRoZXJlIGFyZSBzcGVjaWFsIEFSTS1zcGVjaWZpYyByZWxvY2F0aW9uIHR5cGVzIHRoYXQgYWxsb3cgdHdvCisgIHNoYXJlZCBsaWJyYXJpZXMgdG8gc2hhcmUgdGhyZWFkLXNwZWNpZmljIGRhdGEuICBUaGlzIGlzIGNyaXRpY2FsIHRvby4KKworICBPbmUgbW9yZSBjcml0aWNhbCBpc3N1ZTogYWx0aG91Z2ggbGlidXJjdS1icC5zbyBpcyBwcmVsaW5rZWQsIHdlIGNhbid0CisgIGxvYWQgaXQgYXQgaXRzIHByZWxpbmtlZCBhZGRyZXNzLCBiZWNhdXNlIHdlIGFsc28gbGluayBhZ2FpbnN0CisgIGxpYnJ0LnNvLCBhbmQgbGlicnQuc28gdXNlcyB0aGF0IGFkZHJlc3MuCisKKyAgVGhlIGR5bmFtaWMgbGlua2VyIGlzIGZvcmNlZCB0byByZWxpbmsgbGlidXJjdS1icC5zbyBhdCBhIGRpZmZlcmVudAorICBhZGRyZXNzLiAgSW4gdGhlIGNvdXJzZSBvZiByZWxpbmtpbmcsIGl0IHByb2Nlc3NlcyB0aGUgc3BlY2lhbCBBUk0KKyAgcmVsb2NhdGlvbiByZWNvcmQgbWVudGlvbmVkIGFib3ZlLiAgVGhlIHByZWxpbmtlciBoYXMgYWxyZWFkeSBmaWxsZWQKKyAgaW4gdGhlIGluZm9ybWF0aW9uLCB3aGljaCBpcyBhIHNob3J0IG9mZnNldCBpbnRvIGEgdGFibGUgb2YgdGhyZWFkLQorICBzcGVjaWZpYyBkYXRhIHRoYXQgaXMgYWxsb2NhdGVkIHBlci10aHJlYWQgZm9yIGVhY2ggbGlicmFyeSB0aGF0IHVzZXMKKyAgVExTLiAgQmVjYXVzZSB0aGUgbm9ybWFsIGJlaGF2aW9yIG9mIGEgcmVsb2NhdGlvbiBpcyB0byBhZGQgdGhlIHN5bWJvbAorICB2YWx1ZSB0byBhbiBhZGRlbmQgc3RvcmVkIGF0IHRoZSBhZGRyZXNzIGJlaW5nIHJlbG9jYXRlZCwgd2UgZW5kIHVwCisgIGFkZGluZyB0aGUgc2hvcnQgb2Zmc2V0IHRvIGl0c2VsZiwgZG91YmxpbmcgaXQuCisKKyAgTm93IHdlIGhhdmUgYW4gYXdrd2FyZCBzaXR1YXRpb24uICBUaGUgbGlidXN0LnNvIGxpYnJhcnkgZG9lc24ndCBrbm93CisgIGFib3V0IHRoZSBhZGRlbmQsIHNvIGl0cyBUTFMgZGF0YSBmb3IgdGhpcyBlbGVtZW50IGlzIGNvcnJlY3QuICBUaGUKKyAgbGlidXJjdS1icC5zbyBsaWJyYXJ5IGhhcyBhIGRpZmZlcmVudCBvZmZzZXQgZm9yIHRoZSBlbGVtZW50LiAgV2hlbiB3ZQorICBnbyB0byBpbml0aWFsaXplIHRoZSBlbGVtZW50IGZvciB0aGUgZmlyc3QgdGltZSBpbiBsaWJ1cmN1LWJwLnNvLCB3ZQorICB3cml0ZSB0aGUgYWRkcmVzcyBvZiB0aGUgcmVzdWx0IGF0IHRoZSBkb3VibGVkIChicm9rZW4pIG9mZnNldC4KKyAgTGF0ZXIsIHdoZW4gd2UgcmVmZXIgdG8gdGhlIGFkZHJlc3MgZnJvbSBsaWJ1c3Quc28sIHdlIGNoZWNrIHRoZSB2YWx1ZQorICBhdCB0aGUgY29ycmVjdCBvZmZzZXQsIGJ1dCBpdCdzIE5VTEwsIHNvIHdlIGVhdCBob3QgU0lHU0VHVi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBEaW51IDxhbmRyZWkuYWRyaWFueC5kaW51QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmggYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKK2luZGV4IDFhNGZkM2YxN2IuLmEwMmM0NzU3MWEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKKysrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAorQEAgLTUxMCw3ICs1MTAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAorIAorIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKKyAJICBpZiAoc3ltICE9IE5VTEwpCistCSAgICAqcmVsb2NfYWRkciArPSBzeW0tPnN0X3ZhbHVlOworKwkgICAgKnJlbG9jX2FkZHIgPSBzeW0tPnN0X3ZhbHVlOworIAkgIGJyZWFrOworIAorIAljYXNlIFJfQVJNX1RMU19UUE9GRjMyOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzUxMzE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNzJlYTU0MTA5MDlhZWY2YjZhZWU3MGU3ZjlhODhkNTM0NTgzYWEwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KLURhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yN10gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9Ci0KLWxpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgotaW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCi0ke1N9Ly5wYy8gKGl0IGRvZXMgZXhpc3QgYWZ0ZXIgZWdsaWJjIGFkZHMgYWFyY2g2NCBzdXBwb3J0LAotJHtTfS8ucGMvYWFyY2g2NC0wMDAxLWdsaWJjLWZzZi12MS1lYWY2ZjIwNS5wYXRjaC9wb3J0cy9zeXNkZXBzLwotYWFyY2g2NC9saWJtLXRlc3QtdWxwcyksIHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzCi1pbiAke1N9LgotCi1VcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBtYW51YWwvTWFrZWZpbGUgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21hbnVhbC9NYWtlZmlsZSBiL21hbnVhbC9NYWtlZmlsZQotaW5kZXggYzI3NTY2NDBhNy4uMWI1YmIxNmE5NiAxMDA2NDQKLS0tLSBhL21hbnVhbC9NYWtlZmlsZQotKysrIGIvbWFudWFsL01ha2VmaWxlCi1AQCAtMTAyLDcgKzEwMiw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCi0gJChvYmpwZngpc3RhbXAtbGlibS1lcnI6IGxpYm0tZXJyLXRhYi5wbCAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCi0gCQkJCQkJICAgICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQotIAlwd2Q9YHB3ZGA7IFwKLS0JJChQRVJMKSAkPCAkJHB3ZC8uLiA+ICQob2JqcGZ4KWxpYm0tZXJyLXRtcAotKwkkKFBFUkwpICQ8ICQkcHdkLy4uL3BvcnRzID4gJChvYmpwZngpbGlibS1lcnItdG1wCi0rCSQoUEVSTCkgJDwgJCRwd2QvLi4vc3lzZGVwcyA+PiAkKG9ianBmeClsaWJtLWVyci10bXAKLSAJJChtb3ZlLWlmLWNoYW5nZSkgJChvYmpwZngpbGlibS1lcnItdG1wICQob2JqcGZ4KWxpYm0tZXJyLnRleGkKLSAJdG91Y2ggJEAKLSAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNzBiMmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDhhZTk5OGExMGIyNDU0NWUwYzEyZjFmM2Q4YmU5N2IxOTExNzgyMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNDo0NiArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzI3XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCi0gb3V0IF9fc2xvdyB2ZXJzaW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogY2h1bnJvbmcgZ3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCA2ICsrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggMWMzNDI0NGJkOC4uNzAzOGE3MGI0NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDgxMjY1MzU1OGYuLjEwZGUxZjBjYzMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotIAotICNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICNlbHNlCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGIpCi0gICAgICBmbG9hdCBiOwotICNlbmRpZgotIHsKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmFhZTVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMzAxMmNiODM5YTY0ZTdkNWM2MjFlZmE3OWI2NDNkMTY5MjkwZTZlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KK0RhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9CisKK2xpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgoraW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCiske1N9Ly5wYy8gKGl0IGRvZXMgZXhpc3QgYWZ0ZXIgZWdsaWJjIGFkZHMgYWFyY2g2NCBzdXBwb3J0LAorJHtTfS8ucGMvYWFyY2g2NC0wMDAxLWdsaWJjLWZzZi12MS1lYWY2ZjIwNS5wYXRjaC9wb3J0cy9zeXNkZXBzLworYWFyY2g2NC9saWJtLXRlc3QtdWxwcyksIHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzCitpbiAke1N9LgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CistLS0KKyBtYW51YWwvTWFrZWZpbGUgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21hbnVhbC9NYWtlZmlsZSBiL21hbnVhbC9NYWtlZmlsZQoraW5kZXggYzI3NTY2NDBhNy4uMWI1YmIxNmE5NiAxMDA2NDQKKy0tLSBhL21hbnVhbC9NYWtlZmlsZQorKysrIGIvbWFudWFsL01ha2VmaWxlCitAQCAtMTAyLDcgKzEwMiw4IEBAICQob2JqcGZ4KWxpYm0tZXJyLnRleGk6ICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyCisgJChvYmpwZngpc3RhbXAtbGlibS1lcnI6IGxpYm0tZXJyLXRhYi5wbCAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCisgCQkJCQkJICAgICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQorIAlwd2Q9YHB3ZGA7IFwKKy0JJChQRVJMKSAkPCAkJHB3ZC8uLiA+ICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorKwkkKFBFUkwpICQ8ICQkcHdkLy4uL3BvcnRzID4gJChvYmpwZngpbGlibS1lcnItdG1wCisrCSQoUEVSTCkgJDwgJCRwd2QvLi4vc3lzZGVwcyA+PiAkKG9ianBmeClsaWJtLWVyci10bXAKKyAJJChtb3ZlLWlmLWNoYW5nZSkgJChvYmpwZngpbGlibS1lcnItdG1wICQob2JqcGZ4KWxpYm0tZXJyLnRleGkKKyAJdG91Y2ggJEAKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMzOTVjMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gOTNhYjY5YWU0Yzk4MzAzOTI5YmE5NDkyMTMwYTAyMWZhNGEyMTViZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI0OjQ2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwgb3V0CisgX19zbG93IHZlcnNpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBjaHVucm9uZyBndW8gPEI0MDI5MEBmcmVlc2NhbGUuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICB8IDYgKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworIAorICNpZmRlZiBfX1NURENfXworIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAjZWxzZQorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCisgICAgICBkb3VibGUgYjsKKyAjZW5kaWYKKyB7CitAQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM1Yjc1OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gNGY5ZjM5NzYxOTA5ZTY3YmQ2ZDI5Yjk3MGI3MTY1ODYzZTMzZTU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMjddIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQotICRsaWJjX2N2X3Jvb3RzYmluZGlyCi0KLVVwc3RyZWFtLVN0YXR1czpQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1pbmRleCBjMTVkMTA4N2U4Li4zN2NjOTgzZjJhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLUBAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCi0gICBlbHNlCi0gICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgotICAgIGZpCi0tICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0rICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotICAgOzsKLSBlc2FjCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1pbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLUBAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCi0gICBlbHNlCi0gICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgotICAgIGZpCi0tICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0rICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotICAgOzsKLSBlc2FjCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzY1MjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBiYmE3YTY0N2I2MzY2MThkNWZkMDgzZTkwNGY5OTVmNzczNmI5MTY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjg6NDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8yN10gQWRkIHVudXNlZCBhdHRyaWJ1dGUKLQotSGVscHMgaW4gYXZvaWRpbmcgZ2NjIHdhcm5pbmcgd2hlbiBoZWFkZXIgaXMgaXMgaW5jbHVkZWQgaW4KLWEgc291cmNlIGZpbGUgd2hpY2ggZG9lcyBub3QgdXNlIGJvdGggZnVuY3Rpb25zCi0KLSAgICAgICAgKiBpY29udi9nY29udl9jaGFyc2V0LmggKHN0cmlwKToKLSAgICAgICAgQWRkIHVudXNlZCBhdHRyaWJ1dGUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gaWNvbnYvZ2NvbnZfY2hhcnNldC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1pbmRleCAxMjNlMmE2MmNlLi42M2NjODNlYzg0IDEwMDY0NAotLS0tIGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi0rKysgYi9pY29udi9nY29udl9jaGFyc2V0LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotIAotLXN0YXRpYyB2b2lkCi0rc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gc3RyaXAgKGNoYXIgKndwLCBjb25zdCBjaGFyICpzKQotIHsKLSAgIGludCBzbGFzaF9jb3VudCA9IDA7Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5OTg2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGE3YmQ4YWE2NWYzZjI3NTVkNmRiZDBkNWFkYmZkMjY5YzFmYjAwOTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKKyAkbGliY19jdl9yb290c2JpbmRpcgorCitVcHN0cmVhbS1TdGF0dXM6UGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQorIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQoraW5kZXggYzE1ZDEwODdlOC4uMzdjYzk4M2YyYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitAQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworaW5kZXggNjM0ZmU0ZGUyYS4uM2RiMTY5N2Y0ZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitAQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgorICAgZWxzZQorICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKKyAgICBmaQorLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KKyAgIDs7CisgZXNhYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNmFiMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAyY2U1YmM2ZGEyM2RjYjQwMmFmZGViOTY3ZmE0NGMzOWVlY2Y2ZDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjg6NDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHVudXNlZCBhdHRyaWJ1dGUKKworSGVscHMgaW4gYXZvaWRpbmcgZ2NjIHdhcm5pbmcgd2hlbiBoZWFkZXIgaXMgaXMgaW5jbHVkZWQgaW4KK2Egc291cmNlIGZpbGUgd2hpY2ggZG9lcyBub3QgdXNlIGJvdGggZnVuY3Rpb25zCisKKyAgICAgICAgKiBpY29udi9nY29udl9jaGFyc2V0LmggKHN0cmlwKToKKyAgICAgICAgQWRkIHVudXNlZCBhdHRyaWJ1dGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgaWNvbnYvZ2NvbnZfY2hhcnNldC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCitpbmRleCAxMjNlMmE2MmNlLi42M2NjODNlYzg0IDEwMDY0NAorLS0tIGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCisrKysgYi9pY29udi9nY29udl9jaGFyc2V0LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorIAorLXN0YXRpYyB2b2lkCisrc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgc3RyaXAgKGNoYXIgKndwLCBjb25zdCBjaGFyICpzKQorIHsKKyAgIGludCBzbGFzaF9jb3VudCA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2OTExMjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLUZyb20gNjJmNDRjZTNkZDAxYTI1N2NmNjcxMTZlMzU1NDkyY2IxNjU5YTkxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjddICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKLQotSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgotYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKLWZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCi0KLVRoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1pbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLUBAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotaW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1AQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCi0gZWxzZQotICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1AQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCi0gICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotaW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLUBAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1AQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KLSBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCi0gICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotaW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9uaW9zMl9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLWluZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLUBAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9uaW9zMl9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1pbmRleCAxZWU3ZjQxYTM2Li43N2UzOGJlYmRlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1AQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IDkxNDdhYTQ1ODIuLjc4OThlMjQ3MzggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLUBAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCi0gTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gCi0gbGliY19taXBzX25hbj0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IGFlN2YyNTRkYTQuLjg3NDUxOTAwMGIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCi1AQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1AQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKLSAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKLSAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KLUBAIC0xOSw4ICsxOSw4IEBAIGVsc2UKLSAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKLSAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKLS0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKLSAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2YmY0ZmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGFjMjQwZmIwMWY2NDcwYWMyMDc5NjhhZGZiZTIwY2NjOTNiMTZmOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAotU3ViamVjdDogW1BBVENIIDE1LzI3XSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAotCi1UbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KLSB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCi1pbmRleCAwMTk0YWJhNGExLi41OGU1NDA1YTA1IDEwMDY0NAotLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKLSsrKyBiL3RpbWV6b25lL01ha2VmaWxlCi1AQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCi0gCWNwICQ8ICRACi0gCi0gJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKLS0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAotKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCi0gCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAotIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKLSAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKLWRpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKLWluZGV4IGQyYzNhNmQxZGQuLjA4OTY3OWYzMDYgMTAwNzU1Ci0tLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKLSsrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotQEAgLTM1LDcgKzM1LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKLSAKLSAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KLSA6ICR7QVdLPWF3a30KLS06ICR7VFpESVI9YHB3ZGB9Ci0rOiAke1RaRElSPSQocHdkKX0KLSAKLSAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgotICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjdlN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwyNjAgQEAKK0Zyb20gYjM4MjEzOGM0MWNjZjYwNzliNDQ1OTJmMWU3NGYxODNjYTgyODFiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKKworSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgorYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKK2ZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCisKK1RoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitpbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK0BAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQoraW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitAQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCisgZWxzZQorICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitAQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCisgICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQoraW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK0BAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitAQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KKyBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCisgICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQoraW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9uaW9zMl9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK2luZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK0BAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9uaW9zMl9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitpbmRleCAxZWU3ZjQxYTM2Li43N2UzOGJlYmRlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IDkxNDdhYTQ1ODIuLjc4OThlMjQ3MzggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK0BAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCisgTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgCisgbGliY19taXBzX25hbj0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK2luZGV4IGFlN2YyNTRkYTQuLjg3NDUxOTAwMGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCitAQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitAQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKKyAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKKyAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KK0BAIC0xOSw4ICsxOSw4IEBAIGVsc2UKKyAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgorICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKKyAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKKy0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKKyAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiMWVlOTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDc5MGIxMzNmZjJiYzViNzdlZDg1MzNiODk5OWFiYzY1ZWQwZGEwMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDE2LzI3XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0Ci0KLVRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCi0odHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBuc2NkL25zY2QuaW5pdCB8IDE0ICsrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25zY2QvbnNjZC5pbml0IGIvbnNjZC9uc2NkLmluaXQKLWluZGV4IGE4ODJkYTdkOGIuLmIwMjk4NmVjMTUgMTAwNjQ0Ci0tLS0gYS9uc2NkL25zY2QuaW5pdAotKysrIGIvbnNjZC9uc2NkLmluaXQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9iYXNoCi0rIyEvYmluL3NoCi0gIwotICMgbnNjZDoJCVN0YXJ0cyB0aGUgTmFtZSBTd2l0Y2ggQ2FjaGUgRGFlbW9uCi0gIwotQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvZz1uc2NkCi0gc3RhcnQgKCkgewotICAgICBbIC1kIC92YXIvcnVuL25zY2QgXSB8fCBta2RpciAvdmFyL3J1bi9uc2NkCi0gICAgIFsgLWQgL3Zhci9kYi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9kYi9uc2NkCi0tICAgIGVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgotICAgICBkYWVtb24gL3Vzci9zYmluL25zY2QKLSAgICAgUkVUVkFMPSQ/Ci0gICAgIGVjaG8KLUBAIC01OCw3ICs1OCw3IEBAIHN0YXJ0ICgpIHsKLSB9Ci0gCi0gc3RvcCAoKSB7Ci0tICAgIGVjaG8gLW4gJCJTdG9wcGluZyAkcHJvZzogIgotKyAgICBlY2hvIC1uICJTdG9wcGluZyAkcHJvZzogIgotICAgICAvdXNyL3NiaW4vbnNjZCAtSwotICAgICBSRVRWQUw9JD8KLSAgICAgaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLUBAIC02Nyw5ICs2Nyw5IEBAIHN0b3AgKCkgewotIAkjIGEgbm9uLXByaXZpbGVnZWQgdXNlcgotIAlybSAtZiAvdmFyL3J1bi9uc2NkL25zY2QucGlkCi0gCXJtIC1mIC92YXIvcnVuL25zY2Qvc29ja2V0Ci0tICAgICAgIAlzdWNjZXNzICQiJHByb2cgc2h1dGRvd24iCi0rCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgotICAgICBlbHNlCi0tICAgICAgIAlmYWlsdXJlICQiJHByb2cgc2h1dGRvd24iCi0rCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgotICAgICBmaQotICAgICBlY2hvCi0gICAgIHJldHVybiAkUkVUVkFMCi1AQCAtMTAzLDEzICsxMDMsMTMgQEAgY2FzZSAiJDEiIGluCi0gCVJFVFZBTD0kPwotIAk7OwotICAgICBmb3JjZS1yZWxvYWQgfCByZWxvYWQpCi0tICAgIAllY2hvIC1uICQiUmVsb2FkaW5nICRwcm9nOiAiCi0rCWVjaG8gLW4gIlJlbG9hZGluZyAkcHJvZzogIgotIAlraWxscHJvYyAvdXNyL3NiaW4vbnNjZCAtSFVQCi0gCVJFVFZBTD0kPwotIAllY2hvCi0gCTs7Ci0gICAgICopCi0tCWVjaG8gJCJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSsJZWNobyAiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCi0gCVJFVFZBTD0xCi0gCTs7Ci0gZXNhYwotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTQ1M2VjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAwNGZiN2I5M2RjNDBjMWY5NmViYzA1ZDI5YTJmMDJmOWU0ZjBkNTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKKworVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCisgdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQoraW5kZXggMDE5NGFiYTRhMS4uNThlNTQwNWEwNSAxMDA2NDQKKy0tLSBhL3RpbWV6b25lL01ha2VmaWxlCisrKysgYi90aW1lem9uZS9NYWtlZmlsZQorQEAgLTEyMiw3ICsxMjIsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQorIAljcCAkPCAkQAorIAorICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCistCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKKysJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAorIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKKyAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCisgCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCitkaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitpbmRleCBkMmMzYTZkMWRkLi4wODk2NzlmMzA2IDEwMDc1NQorLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCisrKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKK0BAIC0zNSw3ICszNSw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCisgCisgIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCisgOiAke0FXSz1hd2t9CistOiAke1RaRElSPWBwd2RgfQorKzogJHtUWkRJUj0kKHB3ZCl9CisgCisgIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KKyAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZkMmNkMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gN2EyZjI0NGMwOTgwYTU0ZWQ3NGY5NTQ0YWI0NGE3MjY5ZWYxMmJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKKworVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KKyh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAoraW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKKy0tLSBhL25zY2QvbnNjZC5pbml0CisrKysgYi9uc2NkL25zY2QuaW5pdAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KKyAjCitAQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKKyBzdGFydCAoKSB7CisgICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKKyAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKKy0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCisgICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAorICAgICBSRVRWQUw9JD8KKyAgICAgZWNobworQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgeworIH0KKyAKKyBzdG9wICgpIHsKKy0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCisgICAgIC91c3Ivc2Jpbi9uc2NkIC1LCisgICAgIFJFVFZBTD0kPworICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7CisgCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCisgCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKKy0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKKysJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCisgICAgIGVsc2UKKy0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKKysJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCisgICAgIGZpCisgICAgIGVjaG8KKyAgICAgcmV0dXJuICRSRVRWQUwKK0BAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KKyAJUkVUVkFMPSQ/CisgCTs7CisgICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKKy0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKKysJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCisgCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKKyAJUkVUVkFMPSQ/CisgCWVjaG8KKyAJOzsKKyAgICAgKikKKy0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKyAJUkVUVkFMPTEKKyAJOzsKKyBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDgyMTMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjE5ICswLDAgQEAKLUZyb20gODk3NDMwYmJiNjVhMGYyMjI4NGQ3OTU3MjA2YjVmZDRlZmQ2NjA3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjddIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCi0KLVBvcnRlZCBmcm9tIGVnbGliYwotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKLQotZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5lNmUwZGExYWFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy1idWlsZGluZwotQEAgLTAsMCArMSwzODMgQEAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgotKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKLStwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCi0raW52b2x2ZWQ6Ci0rCi0rMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCi0rCi0rMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgotKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKLSsgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCi0rICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KLSsKLSszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0Ci0rICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCi0rCi0rNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgotKyAgIGJ1aWx0IGluIHN0ZXAgMy4KLSsKLSs1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KLSsKLStUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKLStsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKLStvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0Ci0rZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCi0rR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKLStHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCi0raW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KLSsKLStJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCi0rZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKLStmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKLStjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bwotK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgotK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCi0rCi0rCi0rUHJlcGFyYXRpb24KLSsKLStHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCi0rTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KLStkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCi0rY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKLStpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKLSthbmQgTGludXggMy4xLgotKwotK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKLStidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCi0rYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKLSsKLSsgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251Ci0rICAgICQgaG9zdD0kYnVpbGQKLSsgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQotKyAgICAkIGxpbnV4X2FyY2g9YXJtCi0rCi0rV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKLSsKLSsgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQotKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCi0rICAgICQgbGludXh2PWxpbnV4LTMuMQotKwotK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAotK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKLSthbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKLSsnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6Ci0rCi0rICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKLSsgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCi0rICAgICQgbHMgJHNyYwotKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKLSsKLStXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCi0rd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAotK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Ci0rc3lzdGVtKSBpbiAnc3lzcm9vdCc6Ci0rCi0rICAgICQgb2JqPSR0b3Avb2JqCi0rICAgICQgdG9vbHM9JHRvcC90b29scwotKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290Ci0rCi0rCi0rQmludXRpbHMKLSsKLStDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKLSsgICAgJCBjZCAkb2JqL2JpbnV0aWxzCi0rICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAotKyAgICAkIG1ha2UKLSsgICAgJCBtYWtlIGluc3RhbGwKLSsKLSsKLStUaGUgRmlyc3QgR0NDCi0rCi0rRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAotK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKLSsnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQotK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAotK2J1aWx0IHlldCkuCi0rCi0rRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAotK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KLSt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAotK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKLSthcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKLStHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCi0rCi0rV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKLStidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKLStsYW5ndWFnZSBpcyBuZWVkZWQuCi0rCi0rU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzEKLSsgICAgJCBjZCAkb2JqL2djYzEKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rTGludXggS2VybmVsIEhlYWRlcnMKLSsKLStUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KLStGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKLSt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCi0rY29weSBmaXJzdDoKLSsKLSsgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAotKyAgICAkIGNkICRvYmovbGludXgKLSsKLStOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgotKwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCi0rICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCi0rCi0rCi0rR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cwotKwotK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQwotK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKLStmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAotKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKLSsgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cwotKwotK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCi0rY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAotK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcwotK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcwotK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKLStkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKLStmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCi0raW5zdGFsbGF0aW9ucy4KLSsKLStUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQotK2JlZW4gaW5zdGFsbGVkLgotKwotK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKLStmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAotK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCi0rc3VwcG9ydCBBUk0gdGFyZ2V0cy4KLSsKLStXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCi0raGVhZGVyczoKLSsKLSsgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5Ci0rYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCi0rZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgotKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCi0rcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgotKwotK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKLSt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgotKwotKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKLSsgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCi0rICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgotKwotK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKLStzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKLStpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKLSthIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCi0rCi0rCi0rVGhlIFNlY29uZCBHQ0MKLSsKLStXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KLStub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKLStidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCi0rYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCi0rICAgICQgY2QgJG9iai9nY2MyCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotKwotK0dMSUJDLCBDb21wbGV0ZQotKwotK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQotK2Z1bGwgR0xJQkMgYnVpbGQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nbGliYwotKyAgICAkIGNkICRvYmovZ2xpYmMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bwotK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQotK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKLSsqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCi0rQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCi0rZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6Ci0rCi0rICAgICQgY2QgJG9iai9saW51eAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsKLStOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6Ci0rCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290Ci0rCi0rQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAotK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKLStmaWxlcyBpbiBwbGFjZS4KLSsKLSsKLStUaGUgVGhpcmQgR0NDCi0rCi0rRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCi0rd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCi0rICAgICQgY2QgJG9iai9nY2MzCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKwotK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKLStHTElCQy4KLSsKLStBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKLStzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgotK3RoZSBzeXNyb290LgotKwotKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgotKwotKwotK1RyeWluZyBUaGluZ3MgT3V0Ci0rCi0rQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCi0rdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgotKwotKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KLSsgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rICAgID4gaW50Ci0rICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotKyAgICA+IHsKLSsgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KLSsKLSsKLStXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgotK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KLSsgICAgRUxGIEhlYWRlcjoKLSsgICAgLi4uCi0rICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCi0rICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KLSsKLSsgICAgLi4uCi0rICAgIFByb2dyYW0gSGVhZGVyczoKLSsgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgotKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAotKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQotKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCi0rICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCi0rICAgIC4uLgotKwotK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQotK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JwotK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAotK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCi0rICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgotKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCi0rICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCi0rICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQotKyAgICAuLi4KLSsKLSsKLStBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKLSsKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9oZWxsbwotKyAgICBIZWxsbywgd29ybGQhCi0rICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAotKyAgICA+IC4vYysrLWhlbGxvCi0rICAgIEhlbGxvLCBDKysgd29ybGQhCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5iNjdiNDY4NDY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCi1AQCAtMCwwICsxLDIwNSBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAotK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCi0rdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KLStjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5Ci0rZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCi0rdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCi0rZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCi0rc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgotK3NpbXVsYXRvci4KLSsKLSsKLStUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cwotKwotK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKLStjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKLSsKLSstIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKLSsgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KLSsgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKLSsgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KLSsKLSstIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KLSsgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCi0rICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCi0rICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgotKwotKwotK1VzYWdlCi0rCi0rVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCi0rZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6Ci0rCi0rLSBjcm9zcy10ZXN0LXdyYXBwZXIKLSsKLSsgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKLSsgIHdpdGggYW55IGFyZ3VtZW50cy4KLSsKLSstIGNyb3NzLWxvY2FsZWRlZgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCi0rICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55Ci0rICBhcmd1bWVudHMgbmVlZGVkLgotKwotK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCi0rCi0rCi0rVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgotKwotK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCi0rZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAotK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KLSthY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKLStsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQotK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKLSt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCi0rCi0rRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKLSsKLSsgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCi0rdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgotK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKLStpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAotK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQotK2RpcmVjdG9yaWVzLgotKwotK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQotK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKLSt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCi0rYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCi0rJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcwotK2ZvbGxvd3M6Ci0rCi0rICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKLStnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCi0rYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgotK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgotKwotK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKLSsKLSstIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKLSsgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAotKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKLSsgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCi0rICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KLSsKLSstIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCi0rICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAotKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgotKwotKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAotKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCi0rICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCi0rICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQotKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCi0rICBleGNlcHRpb25zLikKLSsKLSsgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKLSsgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCi0rICBtZXRhY2hhcmFjdGVycy4KLSsKLSstIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKLSsgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCi0rICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCi0rICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAotKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKLSsgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KLSsKLSsKLStUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKLSsKLStJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCi0rdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKLSsnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgotK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKLStkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCi0rY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCi0rc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KLSsKLStGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KLSsKLSsKLStUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKLSsKLStTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKLStwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKLSsnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKLSsnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCi0rYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCi0raG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKLStvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKLSttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAotK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQotK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcwotK3N1aXRhYmxlLgotKwotK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKLSt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKLSt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCi0rCi0rCi0rRXhhbXBsZQotKwotK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCi0rdGhlIGZvbGxvd2luZyBzY3JpcHQ6Ci0rCi0rICAgICMhL2Jpbi9zaAotKwotKyAgICBzcmNkaXI9Li4uCi0rICAgIHRlc3RfaG9zdG5hbWU9Li4uCi0rICAgIGxvY2FsZWRlZmRpcj0uLi4KLSsgICAgY3Jvc3NfZ3h4PS4uLi1nKysKLSsKLSsgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgotKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgotKwotKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKLSsgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKLSsgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKLSsgICAgICAgICAiJEAiCi0rCi0rCi0rT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucwotKwotK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKLSt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6Ci0rCi0rLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJwotKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCi0rICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCi0rICBkaXJlY3RvcnkuCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTA5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMCwwICsxLDYxNiBAQAorRnJvbSA0NGE1Yzc5ZWZlYTA5ZjViOTkwZTUyNGVjNDJhYmRlZWY0NDQwNTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKKworUG9ydGVkIGZyb20gZWdsaWJjCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZworCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCitAQCAtMCwwICsxLDM4MyBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCisrJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQorK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKKytpbnZvbHZlZDoKKysKKysxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KKysKKysyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCisrICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQorKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKKysgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgorKworKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKKysgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KKysKKys0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCisrICAgYnVpbHQgaW4gc3RlcCAzLgorKworKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgorKworK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQworK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAorK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKKytmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KKytHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jaworK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKKytpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgorKworK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKKytmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQorK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAorK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCisrYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCisrdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KKysKKysKKytQcmVwYXJhdGlvbgorKworK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKKytMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgorK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKKytjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAorK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAorK2FuZCBMaW51eCAzLjEuCisrCisrRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAorK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKKythcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgorKworKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKKysgICAgJCBob3N0PSRidWlsZAorKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCisrICAgICQgbGludXhfYXJjaD1hcm0KKysKKytXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgorKworKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCisrICAgICQgZ2Njdj1nY2MtNC42LjIKKysgICAgJCBsaW51eHY9bGludXgtMy4xCisrCisrV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCisrY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAorK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAorKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKKysKKysgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAorKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKKysgICAgJCBscyAkc3JjCisrICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQorKworK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKKyt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCisrcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKKytzeXN0ZW0pIGluICdzeXNyb290JzoKKysKKysgICAgJCBvYmo9JHRvcC9vYmoKKysgICAgJCB0b29scz0kdG9wL3Rvb2xzCisrICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKKysKKysKKytCaW51dGlscworKworK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscworKyAgICAkIGNkICRvYmovYmludXRpbHMKKysgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290CisrICAgICQgbWFrZQorKyAgICAkIG1ha2UgaW5zdGFsbAorKworKworK1RoZSBGaXJzdCBHQ0MKKysKKytGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Cisrc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQorKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCisraGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0CisrYnVpbHQgeWV0KS4KKysKKytGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90CisrdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bworK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0CisrYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJworK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQorK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKKysKKytXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQorK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQworK2xhbmd1YWdlIGlzIG5lZWRlZC4KKysKKytTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQorKyAgICAkIGNkICRvYmovZ2NjMQorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAorKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytMaW51eCBLZXJuZWwgSGVhZGVycworKworK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgorK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgorK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKKytjb3B5IGZpcnN0OgorKworKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4CisrICAgICQgY2QgJG9iai9saW51eAorKworK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6CisrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKKysgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKKysKKysKKytHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCisrCisrVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCisrd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQorK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKKytjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCisrR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCisrc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCisrcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAorK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAorK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKKytpbnN0YWxsYXRpb25zLgorKworK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCisrYmVlbiBpbnN0YWxsZWQuCisrCisrVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vaworK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCisranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KKytzdXBwb3J0IEFSTSB0YXJnZXRzLgorKworK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKKytoZWFkZXJzOgorKworKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKytUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKKytiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKKytkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCisrJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKKytyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCisrCisrTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAorK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6CisrCisrICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgorKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKKysgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCisrCisrRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAorK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAorK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQorK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KKysKKysKKytUaGUgU2Vjb25kIEdDQworKworK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgorK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAorK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKKythbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzIKKysgICAgJCBjZCAkb2JqL2djYzIKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrR0xJQkMsIENvbXBsZXRlCisrCisrV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCisrZnVsbCBHTElCQyBidWlsZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCisrZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCisrbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQorKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KKytCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKKytkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKKysKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKworK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKKysKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKKysKKytBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCisrd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAorK2ZpbGVzIGluIHBsYWNlLgorKworKworK1RoZSBUaGlyZCBHQ0MKKysKKytGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKKyt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzMKKysgICAgJCBjZCAkb2JqL2djYzMKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKytUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCisrZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAorK0dMSUJDLgorKworK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAorK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCisrdGhlIHN5c3Jvb3QuCisrCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCisrCisrCisrVHJ5aW5nIFRoaW5ncyBPdXQKKysKKytBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKKyt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6CisrCisrICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbworKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbworKworKworK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCisrb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbworKyAgICBFTEYgSGVhZGVyOgorKyAgICAuLi4KKysgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKKysgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQorKworKyAgICAuLi4KKysgICAgUHJvZ3JhbSBIZWFkZXJzOgorKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCisrICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0CisrICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCisrICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KKysgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKKysgICAgLi4uCisrCisrTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCisrdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCisrc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCisrbm90IG91ciBkdW1teSAnbGliYy5zbyc6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKKysgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6CisrICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKKysgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KKysgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCisrICAgIC4uLgorKworKworK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgorKworKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2hlbGxvCisrICAgIEhlbGxvLCB3b3JsZCEKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9jKystaGVsbG8KKysgICAgSGVsbG8sIEMrKyB3b3JsZCEKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK0BAIC0wLDAgKzEsMjA1IEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCisrb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KKyt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgorK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKKytkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKKyt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKKytmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKKytzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCisrc2ltdWxhdG9yLgorKworKworK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCisrCisrVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncworK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgorKworKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAorKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgorKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAorKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgorKworKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQorKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKKysgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKKysgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCisrCisrCisrVXNhZ2UKKysKKytUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKKytmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKKysKKystIGNyb3NzLXRlc3Qtd3JhcHBlcgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZworKyAgd2l0aCBhbnkgYXJndW1lbnRzLgorKworKy0gY3Jvc3MtbG9jYWxlZGVmCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKKysgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKKysgIGFyZ3VtZW50cyBuZWVkZWQuCisrCisrVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KKysKKysKKytUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCisrCisrVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KKytlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCisrc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbworK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYworK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCisrZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgorK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KKysKKytGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKKyt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCisrd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAorK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0CisrcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisrZGlyZWN0b3JpZXMuCisrCisrVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Cisrc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAorK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKKythcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKKysnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCisrZm9sbG93czoKKysKKysgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKytUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAorK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKKytiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCisrYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCisrCisrVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQorKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0CisrICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQorKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKKysgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKKysgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0CisrICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKKysgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKKysgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCisrICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKKysgIGV4Y2VwdGlvbnMuKQorKworKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQorKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKKysgIG1ldGFjaGFyYWN0ZXJzLgorKworKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cworKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKKysgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKKysgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCisrICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQorKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgorKworKworK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAorKworK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KKyt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAorKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCisrY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAorK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKKytjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KKytzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgorKworK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgorKworKworK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAorKworK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAorK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQorKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAorKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KKythIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKKytob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAorK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgorK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCisrdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCisrbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCisrc3VpdGFibGUuCisrCisrVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cworK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAorK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KKysKKysKKytFeGFtcGxlCisrCisrSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKKyt0aGUgZm9sbG93aW5nIHNjcmlwdDoKKysKKysgICAgIyEvYmluL3NoCisrCisrICAgIHNyY2Rpcj0uLi4KKysgICAgdGVzdF9ob3N0bmFtZT0uLi4KKysgICAgbG9jYWxlZGVmZGlyPS4uLgorKyAgICBjcm9zc19neHg9Li4uLWcrKworKworKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCisrICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCisrCisrICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAorKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAorKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAorKyAgICAgICAgICIkQCIKKysKKysKKytPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCisrCisrSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZworK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCisrICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKKysgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKKysgIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZDU0N2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSBmY2ZhMTliNjllODc0OTQ3NzAyMjE2MWE4MDhhMjAxODA3ZWY3MmVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yN10gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KLQotVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKLQotICAgICAgICAyMDA3LTAyLTIwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZSAoaW5zdGFsbC1oZWFkZXJzKTogUHJlc2VydmUgb2xkIGJlaGF2aW9yOiBkZXBlbmQgb24KLSAgICAgICAgICAgICAgICAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmggb25seSBpZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzCi0gICAgICAgICAgICAgICAgaXMgc2V0OyBvdGhlcndpc2UsIHBsYWNlIGdudS9zdHVicy5oIG9uIHRoZSAnaW5zdGFsbC1vdGhlcnMnIGxpc3QuCi0KLSAgICAgICAgMjAwNy0wMi0xNiAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAgICAgICAgICogTWFrZWZpbGU6IEFtZW5kIG1ha2UgaW5zdGFsbC1oZWFkZXJzIHRvIGluc3RhbGwgZXZlcnl0aGluZwotICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlci4gIEluc3RhbGwgZ251L3N0dWJzLmggYXMKLSAgICAgICAgICAgICAgICBwYXJ0IG9mICdpbnN0YWxsLWhlYWRlcnMnLCBub3QgJ2luc3RhbGwtb3RoZXJzJy4KLSAgICAgICAgICAgICAgICBJZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzIGlzICd5ZXMnLCBpbnN0YWxsIGEgZHVtbXkgY29weSBvZgotICAgICAgICAgICAgICAgIGdudS9zdHVicy5oLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgcmVhbCB0aGluZy4KLSAgICAgICAgICAgICAgICAqIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmg6IE5ldyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQotIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggfCAxMiArKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggYmVhNGUyN2Y4ZC4uOGM4M2NmYWRjNiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQotIHZwYXRoICUuaCAkKHN1YmRpci1kaXJzKQotIAotICMgV2hhdCB0byBpbnN0YWxsLgotLWluc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gaW5zdGFsbC1iaW4tc2NyaXB0ID0KLSAKLSsjIElmIHdlJ3JlIGJvb3RzdHJhcHBpbmcsIGluc3RhbGwgYSBkdW1teSBnbnUvc3R1YnMuaCBhbG9uZyB3aXRoIHRoZQotKyMgb3RoZXIgaGVhZGVycywgc28gJ21ha2UgaW5zdGFsbC1oZWFkZXJzJyBwcm9kdWNlcyBhIHVzZWFibGUgaW5jbHVkZQotKyMgdHJlZS4gIE90aGVyd2lzZSwgaW5zdGFsbCBnbnUvc3R1YnMuaCBsYXRlciwgYWZ0ZXIgdGhlIHJlc3Qgb2YgdGhlCi0rIyBidWlsZCBpcyBkb25lLgotK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQotK2luc3RhbGwtaGVhZGVyczogJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZWxzZQotK2luc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZW5kaWYKLSsKLSBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQotIGhlYWRlcnMgKz0gZ251L2xpYi1uYW1lcy5oCi0gZW5kaWYKLUBAIC0xNTIsNiArMTYxLDE2IEBAIG90aGVyczogJChjb21tb24tb2JqcGZ4KXRlc3RydW4uc2gKLSAKLSBzdWJkaXItc3R1YnMgOj0gJChmb3JlYWNoIGRpciwkKHN1YmRpcnMpLCQoY29tbW9uLW9ianBmeCkkKGRpcikvc3R1YnMpCi0gCi0rIyBnbnUvc3R1YnMuaCBkZXBlbmRzICh2aWEgdGhlIHN1YmRpciAnc3R1YnMnIHRhcmdldHMpIG9uIGFsbCB0aGUgLm8KLSsjIGZpbGVzIGluIEVHTElCQy4gIEZvciBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBhbiBlbXB0eQotKyMgZ251L3N0dWJzLmggaXMgZ29vZCBlbm91Z2guCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0rJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oICQoK2ZvcmNlKQotKwkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLSsJJChJTlNUQUxMX0RBVEEpICQ8ICRACi0rCi0raW5zdGFsbGVkLXN0dWJzID0KLStlbHNlCi0gaWZuZGVmIGFiaS12YXJpYW50cwotIGluc3RhbGxlZC1zdHVicyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotIGVsc2UKLUBAIC0xNzgsNiArMTk3LDcgQEAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiAkKCtmb3JjZSkKLSAKLSBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsZWQtc3R1YnMpCi0gZW5kaWYKLStlbmRpZgotIAotIAotICMgU2luY2Ugc3R1YnMuaCBpcyBuZXZlciBuZWVkZWQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgd2Ugc2ltcGxpZnkgdGhlCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4xZDJiNjY5YWZmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi1AQCAtMCwwICsxLDEyIEBACi0rLyogUGxhY2Vob2xkZXIgc3R1YnMuaCBmaWxlIGZvciBib290c3RyYXBwaW5nLgotKwotKyAgIFdoZW4gYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgR0NDIHJlcXVpcmVzIHRoYXQgdGhlIEVHTElCQwotKyAgIGhlYWRlcnMgYmUgaW5zdGFsbGVkLCBidXQgd2UgY2FuJ3QgZnVsbHkgYnVpbGQgRUdMSUJDIHdpdGhvdXQgdGhhdAotKyAgIEdDQy4gIFNvIHdlIHJ1biB0aGUgY29tbWFuZDoKLSsKLSsgICAgICBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcwotKwotKyAgIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgR0NDIG5lZWRzLCBidXQgYXZvaWQgYnVpbGRpbmcgY2VydGFpbgotKyAgIGRpZmZpY3VsdCBoZWFkZXJzLiAgVGhlIDxnbnUvc3R1YnMuaD4gaGVhZGVyIGRlcGVuZHMsIHZpYSB0aGUKLSsgICBFR0xJQkMgc3ViZGlyICdzdHVicycgbWFrZSB0YXJnZXRzLCBvbiBldmVyeSAubyBmaWxlIGluIEVHTElCQywgYnV0Ci0rICAgYW4gZW1wdHkgc3R1YnMuaCBsaWtlIHRoaXMgd2lsbCBkbyBmaW5lIGZvciBHQ0MuICAqLwotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdiZmU0Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gYzZmMmRiMGQ3YzVjNjViZmExOTc2NmEwZTFjZTgyMTAxMTFmOWM3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMjddIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4Ci0KLTIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0gICAgICAgIChfX2xpYmNfc3RhcnRfbWFpbik6IERldGVjdCA4eHggcGFydHMgYW5kIGNsZWFyCi0gICAgICAgIF9fY2FjaGVfbGluZV9zaXplIGlmIGRldGVjdGVkLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSAgICAgICAgKERMX1BMQVRGT1JNX0FVWFYpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jICB8IDE0ICsrKysrKysrKysrKystCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgfCAxNiArKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLWluZGV4IDc4MDUxYmM3YmMuLmUyNGY0NDIzMjAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1AQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47Ci0gLyogU2NhbiB0aGUgQXV4IFZlY3RvciBmb3IgdGhlICJEYXRhIENhY2hlIEJsb2NrIFNpemUiIGVudHJ5LiAgSWYgZm91bmQKLSAgICB2ZXJpZnkgdGhhdCB0aGUgc3RhdGljIGV4dGVybiBfX2NhY2hlX2xpbmVfc2l6ZSBpcyBkZWZpbmVkIGJ5IGNoZWNraW5nCi0gICAgZm9yIG5vdCBOVUxMLiAgSWYgaXQgaXMgZGVmaW5lZCB0aGVuIGFzc2lnbiB0aGUgY2FjaGUgYmxvY2sgc2l6ZQotLSAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgKi8KLSsgICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8KLSsgICBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2gKLSsgICBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cwotKyAgIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsIHdoaWNoIGlzIGEgcHJpdmlsZWdlZAotKyAgIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIgZW11bGF0ZXMgUG93ZXJQQyBtZnNwcgotKyAgIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICAqLwotICNkZWZpbmUgRExfUExBVEZPUk1fQVVYVgkJCQkJCSAgICAgIFwKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgkJCQkJCSAgICAgIFwKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCQkJCSAgICAgIFwKLSsJICB7CQkJCQkJCQkgICAgICBcCi0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwkJCQkJCSAgICAgIFwKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSk7CQkJCSAgICAgIFwKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkJCQkgICAgICBcCi0rCSAgICAgIGJyZWFrOwkJCQkJCQkgICAgICBcCi0rCSAgfQkJCQkJCQkJICAgICAgXAotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwkJCQkgICAgICBcCi0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IGYyYWQwYzM1NWQuLjNlNjc3Mzc5NWUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLUBAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKLSAKLSAgIC8qIEluaXRpYWxpemUgdGhlIF9fY2FjaGVfbGluZV9zaXplIHZhcmlhYmxlIGZyb20gdGhlIGF1eCB2ZWN0b3IuICBGb3IgdGhlCi0gICAgICBzdGF0aWMgY2FzZSwgd2UgYWxzbyBuZWVkIF9kbF9od2NhcCwgX2RsX2h3Y2FwMiBhbmQgX2RsX3BsYXRmb3JtLCBzbyB3ZQotLSAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuICAqLwotKyAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuCi0rCi0rICAgICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8KLSsgICAgIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2ggaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0Ci0rICAgICBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsCi0rICAgICB3aGljaCBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlcgotKyAgICAgZW11bGF0ZXMgUG93ZXJQQyBtZnNwciByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAqLwotICAgZm9yIChFbGZXIChhdXh2X3QpICogYXYgPSBhdXh2ZWM7IGF2LT5hX3R5cGUgIT0gQVRfTlVMTDsgKythdikKLSAgICAgc3dpdGNoIChhdi0+YV90eXBlKQotICAgICAgIHsKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwotKwotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpIDopOwotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQotKwkgICAgICBicmVhazsKLSsJICB9Ci0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7Ci0gCWJyZWFrOwotICNpZm5kZWYgU0hBUkVECi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzJhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApAQCAtMCwwICsxLDk3IEBACitGcm9tIGY0ZWM1NTI3ZDU2MmQzODUyM2FiYjg1ODdhNmM3NTMyZTlkMjFmOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorCitUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQorCisgICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKKyAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KKworICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgorICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCisgICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgorICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBkM2YyNWE1MjVhLi5hYjM4Mzg2N2UyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCisgdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCisgCisgIyBXaGF0IHRvIGluc3RhbGwuCistaW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBpbnN0YWxsLWJpbi1zY3JpcHQgPQorIAorKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCisrIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCisrIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKKysjIGJ1aWxkIGlzIGRvbmUuCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisraW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbHNlCisraW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbmRpZgorKworIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCisgaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKKyBlbmRpZgorQEAgLTE5NSw2ICsyMDQsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAorIAorIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKKyAKKysjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubworKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5CisrIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKyskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCisrCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQorKwkkKElOU1RBTExfREFUQSkgJDwgJEAKKysKKytpbnN0YWxsZWQtc3R1YnMgPQorK2Vsc2UKKyBpZm5kZWYgYWJpLXZhcmlhbnRzCisgaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgZWxzZQorQEAgLTIyMSw2ICsyNDAsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQorIAorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKKyBlbmRpZgorK2VuZGlmCisgCisgCisgIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCisrCisrICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCisrICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0CisrICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgorKworKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCisrICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQorKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKKysgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNDc1YTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIDZjMjM2NjBkMDM1ZTcxZGUwZTIwYjQwNDYwYWQzMDUwYmQwNTc2NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAorCisyMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgorICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgorICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCisgICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCitpbmRleCA3ODA1MWJjN2JjLi5lMjRmNDQyMzIwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOworIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCisgICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZworICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKKy0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCisrICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCisrICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCisrICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKKysgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKKysgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKKysgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KKyAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCisrCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCisrCSAgewkJCQkJCQkJICAgICAgXAorKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCisrCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCisrCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAorKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAorKwkgIH0JCQkJCQkJCSAgICAgIFwKKyAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAorIAlicmVhazsKKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitpbmRleCBmMmFkMGMzNTVkLi4zZTY3NzM3OTVlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCisgCisgICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQorICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKKy0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KKysgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgorKworKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCisrICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAorKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAorKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKKysgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KKyAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCisgICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKKyAgICAgICB7CisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKKysJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCisrCSAgeworKwkgICAgdW5zaWduZWQgcHZyID0gMDsKKysKKysJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKKysJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKKysJICAgICAgYnJlYWs7CisrCSAgfQorIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOworIAlicmVhazsKKyAjaWZuZGVmIFNIQVJFRApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5Zjc2NzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gNTc3MDg1MDE2YmI5MjZhNjg3YWJlYzE0NTU1N2ZlOGNiOGY1YWYwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjU1OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMjddIGVnbGliYzogUmVzb2x2ZSBfX2Zwc2NyX3ZhbHVlcyBvbiBTSDQKLQotMjAxMC0wOS0yOSAgTm9idWhpcm8gSXdhbWF0c3UgIDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLSAgICAgICAgICAgIEFuZHJldyBTdHViYnMgIDxhbXNAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICBSZXNvbHZlIFNIJ3MgX19mcHNjcl92YWx1ZXMgdG8gc3ltYm9sIGluIGxpYmMuc28uCi0KLSAgICAgICAgKiBzeXNkZXBzL3NoL3NoNC9mcHUvZnB1X2NvbnRyb2wuaDogQWRkIEMrKyBfX3NldF9mcHNjciBwcm90b3R5cGUuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgKEdMSUJDXzIuMik6IEFkZCBfX2Zwc2NyX3ZhbHVlcy4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyAoX19fZnBzY3JfdmFsdWVzKTogTmV3IGNvbnN0YW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIHwgIDEgKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIHwgMTEgKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLWluZGV4IGUwOTM4YzQxNjUuLmNhMWQ3ZGEzMzkgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLUBAIC0yLDYgKzIsNyBAQCBsaWJjIHsKLSAgIEdMSUJDXzIuMiB7Ci0gICAgICMgZnVuY3Rpb25zIHVzZWQgaW4gb3RoZXIgbGlicmFyaWVzCi0gICAgIF9feHN0YXQ2NDsgX19meHN0YXQ2NDsgX19seHN0YXQ2NDsKLSsgICAgX19mcHNjcl92YWx1ZXM7Ci0gCi0gICAgICMgYSoKLSAgICAgYWxwaGFzb3J0NjQ7Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotaW5kZXggYzRlMjhmZmI5OC4uNjQ4YmFlMDNkNSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotQEAgLTMwLDMgKzMwLDE0IEBAIEVOVFJZIChfX3N5c2NhbGxfZXJyb3IpCi0gCi0gI2RlZmluZSBfX3N5c2NhbGxfZXJyb3IgX19zeXNjYWxsX2Vycm9yXzEKLSAjaW5jbHVkZSA8c3lzZGVwcy91bml4L3NoL3N5c2RlcC5TPgotKwotKyAgICAgICAuZGF0YQotKyAgICAgICAuYWxpZ24gMwotKyAgICAgICAuZ2xvYmwgX19fZnBzY3JfdmFsdWVzCi0rICAgICAgIC50eXBlIF9fX2Zwc2NyX3ZhbHVlcywgQG9iamVjdAotKyAgICAgICAuc2l6ZSBfX19mcHNjcl92YWx1ZXMsIDgKLStfX19mcHNjcl92YWx1ZXM6Ci0rICAgICAgIC5sb25nIDAKLSsgICAgICAgLmxvbmcgMHg4MDAwMAotK3dlYWtfYWxpYXMgKF9fX2Zwc2NyX3ZhbHVlcywgX19mcHNjcl92YWx1ZXMpCi0rCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMwZjRlMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLUZyb20gYzFiZWFiOGExMTk4NWY5NmY1ZWI2NDRlNzEwM2QzNDNiNzA1YWZjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjU3OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjddIGVnbGliYzogSW5zdGFsbCBQSUMgYXJjaGl2ZXMKLQotRm9yd2FyZCBwb3J0IGZyb20gZWdsaWJjCi0KLTIwMDgtMDItMDcgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICogTWFrZXJ1bGVzIChpbnN0YWxsLWV4dHJhcywgaW5zdGFsbC1tYXApOiBOZXcgdmFyaWFibGVzLgotICAgICAgICAoaW5zdGFsbGVkLWxpYmNzKTogQWRkIGxpYmNfcGljLmEuCi0gICAgICAgIChpbnN0YWxsLWxpYik6IEluY2x1ZGUgX3BpYy5hIGZpbGVzIGZvciB2ZXJzaW9uZWQgc2hhcmVkCi0gICAgICAgIGxpYnJhcmllcy4KLSAgICAgICAgKGluc3RhbGwtbWFwLW5vc3ViZGlyLCBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcik6IEFkZCBydWxlcyBmb3IKLSAgICAgICAgaW5zdGFsbGluZyBleHRyYSBmaWxlcy4KLSAgICAgICAgKGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyKTogRGVwZW5kIG9uIGluc3RhbGwtbWFwLW5vc3ViZGlyIGFuZAotICAgICAgICBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpci4KLQotMjAwOC0wNC0wMSAgTWF4aW0gS3V2eXJrb3YgIDxtYXhpbUBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICogTWFrZXJ1bGVzIChpbnN0YWxsLWxpYik6IERvbid0IGluc3RhbGwgbGlicHRocmVhZF9waWMuYS4KLSAgICAgICAgKGluc3RhbGwtbWFwKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5tYXAuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZXJ1bGVzIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlcnVsZXMgYi9NYWtlcnVsZXMKLWluZGV4IGVmNmFiZWFjNmQuLmVlYWE2NjdmNDkgMTAwNjQ0Ci0tLS0gYS9NYWtlcnVsZXMKLSsrKyBiL01ha2VydWxlcwotQEAgLTc3OCw2ICs3NzgsOSBAQCBpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQotICQoY29tbW9uLW9ianBmeClsaWJjLnNvOiAkKGNvbW1vbi1vYmpwZngpbGliYy5tYXAKLSBlbmRpZgotIGNvbW1vbi1nZW5lcmF0ZWQgKz0gbGliYy5zbyBsaWJjX3BpYy5vcwotK2lmbmRlZiBzdWJkaXIKLStpbnN0YWxsLWV4dHJhcyA6PSBzb2luaXQubyBzb2ZpbmkubwotK2VuZGlmCi0gaWZkZWYgbGliYy5zby12ZXJzaW9uCi0gJChjb21tb24tb2JqcGZ4KWxpYmMuc28kKGxpYmMuc28tdmVyc2lvbik6ICQoY29tbW9uLW9ianBmeClsaWJjLnNvCi0gCSQobWFrZS1saW5rKQotQEAgLTEwMjksNiArMTAzMiw3IEBAIGVuZGlmCi0gCi0gaW5zdGFsbDogY2hlY2staW5zdGFsbC1zdXBwb3J0ZWQKLSAKLStpbnN0YWxsZWQtbGliY3MgOj0gJChpbnN0YWxsZWQtbGliY3MpICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLmEKLSBpbnN0YWxsOiAkKGluc3RhbGxlZC1saWJjcykKLSAkKGluc3RhbGxlZC1saWJjcyk6ICQoaW5zdF9saWJkaXIpL2xpYiQobGlicHJlZml4KSU6IGxpYiAkKCtmb3JjZSkKLSAJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCi1AQCAtMTA1Nyw2ICsxMDYxLDIyIEBAIHZlcnNpb25lZCA6PSAkKHN0cmlwICQoZm9yZWFjaCBzbywkKGluc3RhbGwtbGliLnNvKSxcCi0gaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkIDo9ICQoZmlsdGVyICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCi0gaW5zdGFsbC1saWIuc28tdW52ZXJzaW9uZWQgOj0gJChmaWx0ZXItb3V0ICQodmVyc2lvbmVkKSwgJChpbnN0YWxsLWxpYi5zbykpCi0gCi0rIyBJbnN0YWxsIHRoZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBsaWJyYXJpZXMsIGFuZCBjb3JyZXNwb25kaW5nCi0rIyAubWFwIGZpbGVzLgotKyMgbGlicHRocmVhZF9waWMuYSBicmVha3MgbWtsaWJzLCBzbyBkb24ndCBpbnN0YWxsIGl0IGFuZCBpdHMgbWFwLgotK2luc3RhbGwtbGliIDo9ICQoaW5zdGFsbC1saWIpICQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkOiUuc289JV9waWMuYSkKLStpbnN0YWxsLWxpYiA6PSAkKGZpbHRlci1vdXQgbGlicHRocmVhZF9waWMuYSwkKGluc3RhbGwtbGliKSkKLSsjIERlc3BpdGUgaGF2aW5nIGEgc29uYW1lIGxpYmh1cmR1c2VyIGFuZCBsaWJtYWNodXNlciBkbyBub3QgdXNlIHN5bWJvbAotKyMgdmVyc2lvbmluZywgc28gZG9uJ3QgaW5zdGFsbCB0aGUgY29ycmVzcG9uZGluZyAubWFwIGZpbGVzLgotK2lmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCi0raW5zdGFsbC1tYXAgOj0gJChwYXRzdWJzdCAlLnNvLCUubWFwLFwKLSsJCQkkKGZvcmVhY2ggTCwkKGluc3RhbGwtbGliLnNvLXZlcnNpb25lZCksJChub3RkaXIgJEwpKSkKLStpbnN0YWxsLW1hcCA6PSAkKGZpbHRlci1vdXQgbGliaHVyZHVzZXIubWFwIGxpYm1hY2h1c2VyLm1hcCBsaWJwdGhyZWFkLm1hcCwkKGluc3RhbGwtbWFwKSkKLStpZm5kZWYgc3ViZGlyCi0raW5zdGFsbC1tYXAgOj0gJChpbnN0YWxsLW1hcCkgbGliYy5tYXAKLStlbmRpZgotK2VuZGlmCi0rCi0gIyBGb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgd2UgaW5zdGFsbCB0aHJlZSBmaWxlczoKLSAjCSQoaW5zdF9saWJkaXIpL2xpYmZvby5zbwktLSBmb3IgbGlua2luZywgc3ltbGluayBvciBsZCBzY3JpcHQKLSAjCSQoaW5zdF9zbGliZGlyKS9saWJmb28uc28uTk4JLS0gZm9yIGxvYWRpbmcgYnkgU09OQU1FLCBzeW1saW5rCi1AQCAtMTMxMSw5ICsxMzMxLDIyIEBAICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzLW5vbmgpKTogJChpbnN0X2luY2x1ZGVkaXIpLyU6IFwKLSBlbmRpZgkjIGhlYWRlcnMtbm9uaAotIGVuZGlmCSMgaGVhZGVycwotIAotK2lmZGVmIGluc3RhbGwtbWFwCi0rJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvLCQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSk6IFwKLSsgICQoaW5zdF9saWJkaXIpL2xpYiVfcGljLm1hcDogJChjb21tb24tb2JqcGZ4KWxpYiUubWFwICQoK2ZvcmNlKQotKwkkKGRvLWluc3RhbGwpCi0rZW5kaWYKLSsKLStpZmRlZiBpbnN0YWxsLWV4dHJhcwotKyQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLywkKGluc3RhbGwtZXh0cmFzKSk6IFwKLSsgICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLyUubzogJChlbGYtb2JqcGZ4KSUub3MgJCgrZm9yY2UpCi0rCSQoZG8taW5zdGFsbCkKLStlbmRpZgotKwotIC5QSE9OWTogaW5zdGFsbC1iaW4tbm9zdWJkaXIgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyIFwKLSAJaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpciBpbnN0YWxsLXNiaW4tbm9zdWJkaXIgaW5zdGFsbC1saWItbm9zdWJkaXIgXAotLQlpbnN0YWxsLWRhdGEtbm9zdWJkaXIgaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyCi0rCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIgaW5zdGFsbC1tYXAtbm9zdWJkaXIgXAotKwlpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcgotIGluc3RhbGwtYmluLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfYmluZGlyKS8sJChpbnN0YWxsLWJpbikpCi0gaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfYmluZGlyKS8sJChpbnN0YWxsLWJpbi1zY3JpcHQpKQotIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXI6IFwKLUBAIC0xMzI2LDYgKzEzNTksMTAgQEAgaW5zdGFsbC1kYXRhLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfZGF0YWRpcikvLCQoaW5zdGFsbC1kYXRhKSkKLSBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9pbmNsdWRlZGlyKS8sJChoZWFkZXJzKSkKLSBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsLW90aGVycykKLSBpbnN0YWxsLW90aGVycy1wcm9ncmFtcy1ub3N1YmRpcjogJChpbnN0YWxsLW90aGVycy1wcm9ncmFtcykKLStpbnN0YWxsLW1hcC1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvLFwKLSsJCSAgICAgICAkKHBhdHN1YnN0IGxpYiUubWFwLGxpYiVfcGljLm1hcCwkKGluc3RhbGwtbWFwKSkpCi0raW5zdGFsbC1leHRyYXMtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpL2xpYmNfcGljLyxcCi0rCQkgICAgICAgJChpbnN0YWxsLWV4dHJhcykpCi0gCi0gIyBXZSBuZWVkIGFsbCB0aGUgYC1ub3N1YmRpcicgdGFyZ2V0cyBzbyB0aGF0IGBpbnN0YWxsJyBpbiB0aGUgcGFyZW50Ci0gIyBkb2Vzbid0IGRlcGVuZCBvbiBzZXZlcmFsIHRoaW5ncyB3aGljaCBlYWNoIGl0ZXJhdGUgb3ZlciB0aGUgc3ViZGlycy4KLUBAIC0xMzM1LDcgKzEzNzIsOCBAQCBpbnN0YWxsLSU6OiBpbnN0YWxsLSUtbm9zdWJkaXIgOwotIAotIC5QSE9OWTogaW5zdGFsbCBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcgotIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIgaW5zdGFsbC1kYXRhLW5vc3ViZGlyIFwKLS0JCQkgICAgaW5zdGFsbC1saWItbm9zdWJkaXIgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXIKLSsJCQkgICAgaW5zdGFsbC1saWItbm9zdWJkaXIgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXIgXAotKwkJCSAgICBpbnN0YWxsLW1hcC1ub3N1YmRpciBpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcgotIGlmZXEgKCQoYnVpbGQtcHJvZ3JhbXMpLHllcykKLSBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1iaW4tbm9zdWJkaXIgaW5zdGFsbC1iaW4tc2NyaXB0LW5vc3ViZGlyIFwKLSAJCQkgICAgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpciBpbnN0YWxsLXNiaW4tbm9zdWJkaXIgXAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlY2YyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA1NTUzMWVmNTdkMDQwMDZjNWExZTNiMzJhOGUwNDEwMzcyZjg2MDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAorCisyMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgorICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KKworICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworaW5kZXggZTA5MzhjNDE2NS4uY2ExZDdkYTMzOSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucworQEAgLTIsNiArMiw3IEBAIGxpYmMgeworICAgR0xJQkNfMi4yIHsKKyAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKKyAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OworKyAgICBfX2Zwc2NyX3ZhbHVlczsKKyAKKyAgICAgIyBhKgorICAgICBhbHBoYXNvcnQ2NDsKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitpbmRleCBjNGUyOGZmYjk4Li42NDhiYWUwM2Q1IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCitAQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKKyAKKyAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQorICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+CisrCisrICAgICAgIC5kYXRhCisrICAgICAgIC5hbGlnbiAzCisrICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKKysgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0CisrICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAorK19fX2Zwc2NyX3ZhbHVlczoKKysgICAgICAgLmxvbmcgMAorKyAgICAgICAubG9uZyAweDgwMDAwCisrd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoCmluZGV4IGE2MjljZTEuLmFhNjJjNjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMSwyNCArMSwyNCBAQAotRnJvbSBlMDE5ZmU2YTJiNDEwZGI2MDQzZTIxODAzZjQ5N2I1Y2JkZDkwYTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YmIyM2ZiYjA3OTg0YjkzZmQxNGYzNTNmZDkzMjVkOTI3YjBjZDk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8yN10gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArKy0KLSBsb2NhbGUvY2F0bmFtZXMuYyAgICAgICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArLQorIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jICB8IDE3ICsrKysrLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyAgICB8IDI3ICsrKysrKysrLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jICAgICB8IDMxICsrKysrKysrKysrKy0tLS0tLQogIGxvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgICB8ICA4ICsrKysrKwotIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKysrLQotIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyAgIHwgIDggKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrLQorIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLQogIDEyIGZpbGVzIGNoYW5nZWQsIDE2OSBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL2NhdG5hbWVzLmMKIApAQCAtOTEsNyArOTEsNyBAQAogKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQogKyAgfTsKIGRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNjg4MjJhNjMxOS4uZmEzNjEyMzc3NiAxMDA2NDQKK2luZGV4IDUzN2JjMzUxNDkuLjczYmEyMGQ2OTUgMTAwNjQ0CiAtLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCiArKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCiBAQCAtMjI0LDcgKzIyNCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIGxvY2FsZV90LCBMT0NBTEUpCkBAIC01NjEsNiArNTYxLDMgQEAKICAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAogICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKICAjZWxzZQotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKaW5kZXggYWU3MDhlZi4uNjhmYWQ5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5ZDcxNTI2YmUyMWFiZTY4ZGQ4Y2EzYTVhMjE5NDQ1ODUxYmJjMmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYjJjZWI2YzI0MTRlM2M5OGM3YmNkMDI5NTgzMjg3Y2VkOWYzMTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8yN10gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAogCiBUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCiBDZW50T3MgNS5YIG1hY2hpbmUKQEAgLTI3LDYgKzI3LDMgQEAKICAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCiAgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQogICNpZm5kZWYgVkVSU0lPTgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaAppbmRleCA0MmZmNjY3Li4yOGNmZjJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMDM4NzNhZjI4NmYxZGFiMTA2MmY1OThkNmRlYjc3NGNlNTEzNDIxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTYxNTljOTQ4Njc0NTY2NGE1ZjExNmVlOWNjNDU4MzcwMjFiNzYyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMTggQXVnIDIwMTYgMTQ6MDc6NTggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yN10gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAorU3ViamVjdDogW1BBVENIXSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CiAKIEFjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246CiAKQEAgLTI0LDEwICsyNCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKLWluZGV4IGM5NzVmY2ZmZDcuLjZlZTU4Yzc0ZTAgMTAwNjQ0CitpbmRleCA5ZDliMWJhN2YyLi44NDE0MDI4YzU4IDEwMDY0NAogLS0tIGEvZWxmL2RsLWRlcHMuYwogKysrIGIvZWxmL2RsLWRlcHMuYwotQEAgLTcyLDEzICs3MiwxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQorQEAgLTczLDEzICs3MywxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQogIHsKICAgIHN0cnVjdCBsaW5rX21hcCAqKnAgPSBsaXN0OwogICAgc3RydWN0IGxpbmtfbWFwICoqcTsKQEAgLTUxLDYgKzUxLDMgQEAKICAgIHJldHVybiBwIC0gbGlzdDsKICB9CiAgCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCmluZGV4IDdmNWQxNDIuLjRhNzkxOWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1NmRhYjAyNDc1MTk0MWMwN2ViNDc5ZjQ3ZWY2NjgyZTIxNjhjODZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2YzZhZWNiYTE5YjNlNzk0NzEwMDYyMzUzMmE0MWI2ZjE2NzM0YWNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0o9QzM9QTlyPUMzPUE5bXk9MjBSb3Nlbj89IDxqZXJlbXkucm9zZW5Ac21pbGUuZnI+CiBEYXRlOiBNb24sIDIyIEF1ZyAyMDE2IDE2OjA5OjI1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMjddIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQorU3ViamVjdDogW1BBVENIXSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKIAogV2hlbiBuZXcgdmVyc2lvbiBvZiBjb21waWxlcnMgYXJlIHB1Ymxpc2hlZCwgdGhleSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aAogb2xkZXIgdmVyc2lvbnMgb2Ygc29mdHdhcmUuIFRoaXMgaXMgcGFydGljdWxhcmx5IGNvbW1vbiB3aGVuIHNvZnR3YXJlIGlzIGJ1aWx0CkBAIC0zMyw2ICszMywzIEBACiAgCiAgCiAgc3ViIGNzdHJsZW4gewotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoCmluZGV4IGVjYTExOTMuLjcxZGRjMTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtcmVzZXQtZGxfbG9hZF93cml0ZV9sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDg0N2QzN2Q1YTM0ZTRiZjI5NGRlNGJhOThkZTM2Njg5NTBlMjhiYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVmYjBmY2E3ZGI3NDJmNDE5NWUxNzcxZDhiYTRjN2ZiYTQ5Mzg4MTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyNyBKYW4gMjAxOCAxMDowNTowNyAtMDgwMAotU3ViamVjdDogW1BBVENIIDI2LzI3XSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZworU3ViamVjdDogW1BBVENIXSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZwogCiBUaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6CiAKQEAgLTIwLDEwICsyMCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL25wdGwvZm9yay5jIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYwotaW5kZXggODQ2ZmE0OWVmMi4uZjg3NTA2ZjM5OCAxMDA2NDQKK2luZGV4IGVjNTZhODI3ZWIuLjBmNDg5MzNmZjEgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL25wdGwvZm9yay5jCiArKysgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1AQCAtMTk0LDkgKzE5NCw5IEBAIF9fbGliY19mb3JrICh2b2lkKQorQEAgLTEzMCw5ICsxMzAsOSBAQCBfX2xpYmNfZm9yayAodm9pZCkKICAJICBfSU9fbGlzdF9yZXNldGxvY2sgKCk7CiAgCX0KICAKQEAgLTMzLDggKzMzLDUgQEAKIC0KICsgICAgICBfX3J0bGRfbG9ja19pbml0aWFsaXplIChHTChkbF9sb2FkX3dyaXRlX2xvY2spKTsKICAgICAgICAvKiBSdW4gdGhlIGhhbmRsZXJzIHJlZ2lzdGVyZWQgZm9yIHRoZSBjaGlsZC4gICovCi0gICAgICAgd2hpbGUgKGFsbHAgIT0gTlVMTCkKLSAJewotLS0gCi0yLjE2LjEKLQorICAgICAgIF9fcnVuX2ZvcmtfaGFuZGxlcnMgKGF0Zm9ya19ydW5fY2hpbGQpOworICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCmluZGV4IDllYzIzNGIuLmRkMzdmMmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1BY3F1aXJlLWxkLnNvLWxvY2stYmVmb3JlLXN3aXRjaGluZy10by1tYWxsb2NfYXRmb3JrLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5NDIyNWFiNGJjYzE2MTM1MzE1NThhNjMyMjcwYjVlZGNlNzc5YmM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ZWE5NjJlMDk0NmRhNzU2NGE3NzRiMDhkZDNlZGEyOGQ2NGU5ZTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMjcgSmFuIDIwMTggMTA6MDg6MDQgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8yN10gQWNxdWlyZSBsZC5zbyBsb2NrIGJlZm9yZSBzd2l0Y2hpbmcgdG8gbWFsbG9jX2F0Zm9yaworU3ViamVjdDogW1BBVENIXSBBY3F1aXJlIGxkLnNvIGxvY2sgYmVmb3JlIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrCiAKIFRoZSBwYXRjaCBpcyBmcm9tCiAgIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ1NzgKQEAgLTI4LDExICsyOCwxMSBAQAogU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLSBzeXNkZXBzL25wdGwvZm9yay5jIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisgc3lzZGVwcy9ucHRsL2ZvcmsuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvbnB0bC9mb3JrLmMgYi9zeXNkZXBzL25wdGwvZm9yay5jCi1pbmRleCBmODc1MDZmMzk4Li4yMjVlN2I1MWY4IDEwMDY0NAoraW5kZXggMGY0ODkzM2ZmMS4uZWVmM2Y5NjY5YiAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvbnB0bC9mb3JrLmMKICsrKyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKIEBAIC0yNSw2ICsyNSw3IEBACkBAIC00MywyOCArNDMsMjMgQEAKICAjaW5jbHVkZSA8c3RkaW8tbG9jay5oPgogICNpbmNsdWRlIDxhdG9taWMuaD4KICAjaW5jbHVkZSA8bnB0bC9wdGhyZWFkUC5oPgotQEAgLTYwLDYgKzYxLDEwIEBAIF9fbGliY19mb3JrICh2b2lkKQotICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KK0BAIC01Niw2ICs1Nyw5IEBAIF9fbGliY19mb3JrICh2b2lkKQogICAgYm9vbCBtdWx0aXBsZV90aHJlYWRzID0gVEhSRUFEX0dFVE1FTSAoVEhSRUFEX1NFTEYsIGhlYWRlci5tdWx0aXBsZV90aHJlYWRzKTsKICAKKyAgIF9fcnVuX2ZvcmtfaGFuZGxlcnMgKGF0Zm9ya19ydW5fcHJlcGFyZSk7CiArICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCiArICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CiArICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7Ci0rCi0gICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KLSAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCi0gICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOwotQEAgLTI0Niw2ICsyNTEsMTAgQEAgX19saWJjX2ZvcmsgKHZvaWQpCiAgCi0gCSAgYWxscCA9IGFsbHAtPm5leHQ7Ci0gCX0KLSsKKyAgIC8qIElmIHdlIGFyZSBub3QgcnVubmluZyBtdWx0aXBsZSB0aHJlYWRzLCB3ZSBkbyBub3QgaGF2ZSB0bworICAgICAgcHJlc2VydmUgbG9jayBzdGF0ZS4gIElmIGZvcmsgcnVucyBmcm9tIGEgc2lnbmFsIGhhbmRsZXIsIG9ubHkKK0BAIC0xNTAsNiArMTU0LDkgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgCisgICAgICAgLyogUnVuIHRoZSBoYW5kbGVycyByZWdpc3RlcmVkIGZvciB0aGUgcGFyZW50LiAgKi8KKyAgICAgICBfX3J1bl9mb3JrX2hhbmRsZXJzIChhdGZvcmtfcnVuX3BhcmVudCk7CiArICAgICAgLyogdW5sb2NrIGxkLnNvIGxhc3QsIGJlY2F1c2Ugd2UgbG9ja2VkIGl0IGZpcnN0ICovCiArICAgICAgX19ydGxkX2xvY2tfdW5sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CiArICAgICAgX19ydGxkX2xvY2tfdW5sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CiAgICAgIH0KICAKICAgIHJldHVybiBwaWQ7Ci0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtYml0cy1zaWdpbmZvLWNvbnN0cy5oLWVudW0tZGVmaW5pdGlvbi1mb3ItVFJBUF9IV0JLUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoCmluZGV4IDQzNmM4NDcuLmZhZThkMDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoCkBAIC0xLDggKzEsOCBAQAotRnJvbSBhZjMwNTRiMzg1NjM3OWQzNTNhNzc5ODAxNjc4ZjMzMGUxYjU4YzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotTWVzc2FnZS1JZDogPGFmMzA1NGIzODU2Mzc5ZDM1M2E3Nzk4MDE2NzhmMzMwZTFiNThjOWEuMTQ5MDE4MzYxMS5naXQucGFuYW5kQHJlZGhhdC5jb20+CitGcm9tIDM4ZmFkM2U1YWIzYjQ1YzU2ODEwYWJkMzVmYTExYTcyZmExMGI4ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBQcmF0eXVzaCBBbmFuZCA8cGFuYW5kQHJlZGhhdC5jb20+CiBEYXRlOiBXZWQsIDIyIE1hciAyMDE3IDE3OjAyOjM4ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0hdIGJpdHMvc2lnaW5mby1jb25zdHMuaDogZW51bSBkZWZpbml0aW9uIGZvciBUUkFQX0hXQktQVCBpcyBtaXNzaW5nCitTdWJqZWN0OiBbUEFUQ0hdIGJpdHMvc2lnaW5mby1jb25zdHMuaDogZW51bSBkZWZpbml0aW9uIGZvciBUUkFQX0hXQktQVCBpcworIG1pc3NpbmcKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKQEAgLTI5LDcgKzI5LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iaXRzL3NpZ2luZm8tY29uc3RzLmggYi9iaXRzL3NpZ2luZm8tY29uc3RzLmgKLWluZGV4IGE1OGFjNGIuLjg0NDhmYWMgMTAwNjQ0CitpbmRleCA3NDY0YzE4ODJiLi4yOTgzMTQ1MjdhIDEwMDY0NAogLS0tIGEvYml0cy9zaWdpbmZvLWNvbnN0cy5oCiArKysgYi9iaXRzL3NpZ2luZm8tY29uc3RzLmgKIEBAIC0xMDYsOCArMTA2LDEyIEBAIGVudW0KQEAgLTQ3LDEwICs0NywxMCBAQAogICMgZW5kaWYKICAKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ2luZm8tY29uc3RzLmggYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ2luZm8tY29uc3RzLmgKLWluZGV4IDUyNTg0MGMuLjU3YTllZGIgMTAwNjQ0CitpbmRleCAxOTNiZDljNDcxLi4zZmU4NTJiYzVmIDEwMDY0NAogLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYml0cy9zaWdpbmZvLWNvbnN0cy5oCiArKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9iaXRzL3NpZ2luZm8tY29uc3RzLmgKLUBAIC0xMzcsOCArMTM3LDEyIEBAIGVudW0KK0BAIC0xNDEsOCArMTQxLDEyIEBAIGVudW0KICB7CiAgICBUUkFQX0JSS1BUID0gMSwJCS8qIFByb2Nlc3MgYnJlYWtwb2ludC4gICovCiAgIyAgZGVmaW5lIFRSQVBfQlJLUFQJVFJBUF9CUktQVApAQCAtNjQsNiArNjQsMyBAQAogIH07CiAgIyBlbmRpZgogIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY2NweS10by1maXgtV3N0cmluZ29wLXRydW5jYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTI5ZjQxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAxMTNlMDUxNmZiZDNjZTE4MjUzZjA0MjM3NjI0MTZkNGM0YjM4ZmIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjIgTWFyIDIwMTggMTc6NTc6MzcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyOS8yOV0gUmVwbGFjZSBzdHJuY3B5IHdpdGggbWVtY2NweSB0byBmaXgKLSAtV3N0cmluZ29wLXRydW5jYXRpb24uCi0KLQkqIG5pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jOiBSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jcHkgdG8KLQlhdm9pZCAtV3N0cmluZ29wLXRydW5jYXRpb24uCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTgtMDMvbXNnMDA1MzEuaHRtbF0KLQotIG5pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25pcy9uc3NfbmlzcGx1cy9uaXNwbHVzLXBhcnNlci5jIGIvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKLWluZGV4IDhkYzAyMWU3M2QuLmI1MzI4NGY4ODkgMTAwNjQ0Ci0tLS0gYS9uaXMvbnNzX25pc3BsdXMvbmlzcGx1cy1wYXJzZXIuYwotKysrIGIvbmlzL25zc19uaXNwbHVzL25pc3BsdXMtcGFyc2VyLmMKLUBAIC04Nyw3ICs4Nyw3IEBAIF9uc3NfbmlzcGx1c19wYXJzZV9wd2VudCAobmlzX3Jlc3VsdCAqcmVzdWx0LCBzdHJ1Y3QgcGFzc3dkICpwdywKLSAgICAgICBpZiAobGVuID49IHJvb21fbGVmdCkKLSAJZ290byBub19tb3JlX3Jvb207Ci0gCi0tICAgICAgc3RybmNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7Ci0rICAgICAgbWVtY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKLSAgICAgICBmaXJzdF91bnVzZWRbbGVuXSA9ICdcMCc7Ci0gICAgICAgbnVtc3RyID0gZmlyc3RfdW51c2VkOwotICAgICB9Ci1AQCAtMTAzLDcgKzEwMyw3IEBAIF9uc3NfbmlzcGx1c19wYXJzZV9wd2VudCAobmlzX3Jlc3VsdCAqcmVzdWx0LCBzdHJ1Y3QgcGFzc3dkICpwdywKLSAgICAgICBpZiAobGVuID49IHJvb21fbGVmdCkKLSAJZ290byBub19tb3JlX3Jvb207Ci0gCi0tICAgICAgc3RybmNweSAoZmlyc3RfdW51c2VkLCBudW1zdHIsIGxlbik7Ci0rICAgICAgbWVtY3B5IChmaXJzdF91bnVzZWQsIG51bXN0ciwgbGVuKTsKLSAgICAgICBmaXJzdF91bnVzZWRbbGVuXSA9ICdcMCc7Ci0gICAgICAgbnVtc3RyID0gZmlyc3RfdW51c2VkOwotICAgICB9Ci0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxN2Y2YWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIDg2NTY1MWQyNDk2YTkwZjdhZThlN2NjMTlhMmU1NGI2ZjE3YThhZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjQyOjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZWRlZiAtLWFkZC10by1hcmNoaXZlIHVzZXMgYSBoYXJkLWNvZGVkIGxvY2FsZSBwYXRoCisKK2l0IGRvZXNuJ3QgZXhpc3QgaW4gbm9ybWFsIHVzZSwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIHBhc3MgYW4KK2FsdGVybmF0aXZlIGZpbGVuYW1lLgorCitBZGQgYSBmYWxsYmFjayBvZiAkTE9DQUxFQVJDSElWRSBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kIGFsbG93CitjcmVhdGlvbiBvZiBuZXcgbG9jYWxlIGFyY2hpdmVzIHRoYXQgYXJlIG5vdCB0aGUgc3lzdGVtIGFyY2hpdmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyB8IDM3ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCitpbmRleCBjYTMzMmEzNDVmLi45MWY2MmRhNjYyIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYworQEAgLTM0MCwxMiArMzQwLDI0IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKKyAgIHN0cnVjdCBuYW1laGFzaGVudCAqb2xkbmFtZWhhc2h0YWI7CisgICBzdHJ1Y3QgbG9jYXJoYW5kbGUgbmV3X2FoOworICAgc2l6ZV90IHByZWZpeF9sZW4gPSBvdXRwdXRfcHJlZml4ID8gc3RybGVuIChvdXRwdXRfcHJlZml4KSA6IDA7CistICBjaGFyIGFyY2hpdmVmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpXTsKKy0gIGNoYXIgZm5hbWVbcHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDFdOworKyAgY2hhciAqYXJjaGl2ZWZuYW1lOworKyAgY2hhciAqZm5hbWU7CisrICBjaGFyICplbnZhcmNoaXZlID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7CisgCistICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworLSAgc3RyY3B5IChhcmNoaXZlZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgaWYgKGVudmFyY2hpdmUgIT0gTlVMTCkgCisrICAgIHsKKysgICAgICBhcmNoaXZlZm5hbWUgPSB4bWFsbG9jKHN0cmxlbihlbnZhcmNoaXZlKSArIDEpOworKyAgICAgIGZuYW1lID0geG1hbGxvYyhzdHJsZW4oZW52YXJjaGl2ZSkgKyBzaXplb2YgKCIuWFhYWFhYIikpOworKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lLCBlbnZhcmNoaXZlKTsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgYXJjaGl2ZWZuYW1lID0geG1hbGxvYyhwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpKTsKKysgICAgICBmbmFtZSA9IHhtYWxsb2MocHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSArIHNpemVvZiAoIi5YWFhYWFgiKSAtIDEpOworKyAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorKyAgICAgICAgbWVtY3B5IChhcmNoaXZlZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworKyAgICAgIHN0cmNweSAoYXJjaGl2ZWZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgfQorICAgc3RyY3B5IChzdHBjcHkgKGZuYW1lLCBhcmNoaXZlZm5hbWUpLCAiLlhYWFhYWCIpOworIAorICAgLyogTm90IGFsbCBvZiB0aGUgb2xkIGZpbGUgaGFzIHRvIGJlIG1hcHBlZC4gIENoYW5nZSB0aGlzIG5vdyB0aGlzCitAQCAtNTUxLDYgKzU2Myw4IEBAIGVubGFyZ2VfYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgY29uc3Qgc3RydWN0IGxvY2FyaGVhZCAqaGVhZCkKKyAKKyAgIC8qIEFkZCB0aGUgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXcgb25lLiAgKi8KKyAgICphaCA9IG5ld19haDsKKysgIGZyZWUoYXJjaGl2ZWZuYW1lKTsKKysgIGZyZWUoZm5hbWUpOworIH0KKyAKKyAKK0BAIC01NjksMTAgKzU4MywxMyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCisgICAvKiBJZiBhaCBoYXMgYSBub24tTlVMTCBmbmFtZSBvcGVuIHRoYXQgb3RoZXJ3aXNlIG9wZW4gdGhlIGRlZmF1bHQuICAqLworICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKQorICAgICB7CistICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKKy0gICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKy0gICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CistICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgICBhcmNoaXZlZm5hbWUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKKysgICAgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpIHsKKysgICAgICAgICAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7CisrICAgICAgICAgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKysgICAgICAgICAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKysgICAgICAgICAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICAgICAgfQorICAgICB9CisgCisgICB3aGlsZSAoMSkKK0BAIC01ODUsNyArNjAyLDcgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQorIAkgICAgIHRoZSBkZWZhdWx0IGxvY2FsZSBhcmNoaXZlIHdlIGlnbm9yZSB0aGUgZmFpbHVyZSBhbmQKKyAJICAgICBsaXN0IGFuIGVtcHR5IGFyY2hpdmUsIG90aGVyd2lzZSB3ZSBwcmludCBhbiBlcnJvcgorIAkgICAgIGFuZCBleGl0LiAgKi8KKy0JICBpZiAoZXJybm8gPT0gRU5PRU5UICYmIGFyY2hpdmVmbmFtZSA9PSBkZWZhdWx0X2ZuYW1lKQorKwkgIGlmIChlcnJubyA9PSBFTk9FTlQpCisgCSAgICB7CisgCSAgICAgIGlmIChyZWFkb25seSkKKyAJCXsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5N2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYTU0YzE1ZDA1NjdkNTQ3MTM3MDY2ZjQxYjFiMjJlYmE0ODc1YzI3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgQXVnIDIwMTggMDk6NDQ6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW50bDogRW1pdCBubyBsaW5lcyBpbiBiaXNvbiBnZW5lcmF0ZWQgZmlsZXMKKworSW1wcm92ZSByZXByb2R1Y2liaWxpdHk6CitEbyBub3QgcHV0IGFueSAjbGluZSBwcmVwcm9jZXNzb3IgY29tbWFuZHMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzLgorVGhlc2UgbGluZXMgY29udGFpbiBhYnNvbHV0ZSBwYXRocyBjb250YWluaW5nIGZpbGUgbG9jYXRpb25zIG9uCit0aGUgaG9zdCBidWlsZCBtYWNoaW5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBpbnRsL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW50bC9NYWtlZmlsZSBiL2ludGwvTWFrZWZpbGUKK2luZGV4IDY3MmVkZjFiMzguLmQzMTg4OGQwMTMgMTAwNjQ0CistLS0gYS9pbnRsL01ha2VmaWxlCisrKysgYi9pbnRsL01ha2VmaWxlCitAQCAtMTU1LDcgKzE1NSw3IEBAICQob2JqcGZ4KXRzdC1nZXR0ZXh0Ni5vdXQ6ICQob2JqcGZ4KXRzdC1nZXR0ZXh0Lm91dAorIAorIENQUEZMQUdTICs9IC1EJ0xPQ0FMRURJUj0iJChsb2NhbGVkaXIpIicgXAorIAkgICAgLUQnTE9DQUxFX0FMSUFTX1BBVEg9IiQobG9jYWxlZGlyKSInCistQklTT05GTEFHUyA9IC0teWFjYyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorK0JJU09ORkxBR1MgPSAtLXlhY2MgLS1uby1saW5lcyAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dCAtLW91dHB1dAorIAorICQoaW5zdF9sb2NhbGVkaXIpL2xvY2FsZS5hbGlhczogbG9jYWxlLmFsaWFzICQoK2ZvcmNlKQorIAkkKGRvLWluc3RhbGwpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMwLXBsdXJhbF9jX25vX3ByZXByb2Nlc3Nvcl9saW5lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYwM2UxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotSW1wcm92ZSByZXByb2R1Y2liaWxpdHk6Ci1EbyBub3QgcHV0IGFueSAjbGluZSBwcmVwcm9jZXNzb3IgY29tbWFuZHMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzLgotVGhlc2UgbGluZXMgY29udGFpbiBhYnNvbHV0ZSBwYXRocyBjb250YWluaW5nIGZpbGUgbG9jYXRpb25zIG9uCi10aGUgaG9zdCBidWlsZCBtYWNoaW5lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9pbnRsL01ha2VmaWxlIGIvaW50bC9NYWtlZmlsZQotaW5kZXggMjIxOTcxNy4uYTIwMzc4MCAxMDA2NDQKLS0tLSBhL2ludGwvTWFrZWZpbGUKLSsrKyBiL2ludGwvTWFrZWZpbGUKLUBAIC0xNTEsNyArMTUxLDcgQEAgJChvYmpwZngpdHN0LWdldHRleHQ2Lm91dDogJChvYmpwZngpdHN0LWdldHRleHQub3V0Ci0gCi0gQ1BQRkxBR1MgKz0gLUQnTE9DQUxFRElSPSIkKGxvY2FsZWRpcikiJyBcCi0gCSAgICAtRCdMT0NBTEVfQUxJQVNfUEFUSD0iJChsb2NhbGVkaXIpIicKLS1CSVNPTkZMQUdTID0gLS15YWNjIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0rQklTT05GTEFHUyA9IC0teWFjYyAtLW5vLWxpbmVzIC0tbmFtZS1wcmVmaXg9X19nZXR0ZXh0IC0tb3V0cHV0Ci0gCi0gJChpbnN0X2xvY2FsZWRpcikvbG9jYWxlLmFsaWFzOiBsb2NhbGUuYWxpYXMgJCgrZm9yY2UpCi0gCSQoZG8taW5zdGFsbCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1uYXRpdmVzZGstZGVwcmVjYXRlLWxpYmNyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MTMyZWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMxLW5hdGl2ZXNkay1kZXByZWNhdGUtbGliY3J5cHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MTkgKzAsMCBAQAotQmFja2dyb3VuZCBpbmZvcm1hdGlvbjoKLQotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTctMDgvbXNnMDEyNTcuaHRtbAotaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvUmVwbGFjZV9nbGliY19saWJjcnlwdF93aXRoX2xpYnhjcnlwdAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYUBzb3VyY2V3YXJlLm9yZ10KLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1Gcm9tOiBaYWNrIFdlaW5iZXJnIDx6YWNrd0BwYW5peC5jb20+Ci1TdWJqZWN0OiBbUEFUQ0hdIERlcHJlY2F0ZSBsaWJjcnlwdCBhbmQgZG9uJ3QgYnVpbGQgaXQgYnkgZGVmYXVsdAotCi1CYWNrIGluIEp1bmUsIEJqw7ZybiBFc3NlciBwcm9wb3NlZCB0byBhZGQgT3BlbkJTRC1jb21wYXRpYmxlIGJjcnlwdAotc3VwcG9ydCB0byBvdXIgaW1wbGVtZW50YXRpb24gb2YgY3J5cHQoMyksIGFuZCBaYWNrIFdlaW5iZXJnIHJlcGxpZWQKLXRoYXQgaXQgbWlnaHQgYWN0dWFsbHkgbWFrZSBtb3JlIHNlbnNlIHRvIF9yZW1vdmVfIGxpYmNyeXB0IGZyb20KLWdsaWJjLCBmcmVlaW5nIHVwIGxpYmNyeXB0LnNvLjEgYW5kIGNyeXB0LmggdG8gYmUgcHJvdmlkZWQgYnkgYQotc2VwYXJhdGUgcHJvamVjdCB0aGF0IGNvdWxkIG1vdmUgZmFzdGVyLiAgKEZvciBpbnN0YW5jZSwgbGlieGNyeXB0OgotaHR0cHM6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdCkKLQotVGhpcyBwYXRjaCBkaXNhYmxlcyBidWlsZCBhbmQgaW5zdGFsbGF0aW9uIG9mIGxpYmNyeXB0IGJ5IGRlZmF1bHQuICBJdAotY2FuIGJlIHJlLWVuYWJsZWQgd2l0aCAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCB0byBjb25maWd1cmUuICBVbmxpa2UKLWxpYm5zbCwgd2UgZG8gKm5vdCogaW5zdGFsbCBhIHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnk7IHRoYXQncyBsZWZ0IHRvCi10aGUgcmVwbGFjZW1lbnQuICAoVW5saWtlIHRoZSBTdW5SUEMgc2l0dWF0aW9uLCBJIHRoaW5rIHdlIGNhbgotcHJvYmFibHkgZHJvcCB0aGlzIGNvZGUgYWx0b2dldGhlciBpbiBhIHJlbGVhc2Ugb3IgdHdvLikKLQotVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIGNyeXB0IGFuZCBlbmNyeXB0IGFyZSByZW1vdmVkIGZyb20KLXVuaXN0ZC5oLCBhbmQgdGhlIGZ1bmN0aW9uIHByb3RvdHlwZSBmb3Igc2V0a2V5IGlzIHJlbW92ZWQgZnJvbQotc3RkbGliLmg7IHRoZXkgZG8gKm5vdCogY29tZSBiYWNrIHdpdGggLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQuICBUaGlzCi1tZWFucyBnbGliYyBubyBsb25nZXIgcHJvdmlkZXMgdGhlIFBPU0lYIENSWVBUIG9wdGlvbiwgYW5kIHRoZSBtYWNybwotX1hPUEVOX0NSWVBUIGlzIGFsc28gcmVtb3ZlZCBmcm9tIHVuaXN0ZC5oIHRvIGluZGljYXRlIHRoYXQuCi0oX1NDX1hPUEVOX0NSWVBUIGlzIHN0aWxsIGRlZmluZWQsIGJ1dCBzeXNjb25mKF9TQ19YT1BFTl9DUllQVCkgd2lsbAotcmV0dXJuIC0xIGF0IHJ1bnRpbWUuKSAgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbHNvIHVuY29uZGl0aW9uYWxseQotcmVtb3ZlZCBmcm9tIGNvbmZvcm0vZGF0YS97c3RkbGliLHVuaXN0ZH0uaC1kYXRhLgotCi0JKiBwb3NpeC91bmlzdGQuaCAoX1hPUEVOX0NSWVBULCBjcnlwdCwgZW5jcnlwdCk6IERvbid0IGRlY2xhcmUuCi0JKiBzdGRsaWIvc3RkbGliLmggKHNldGtleSk6IERvbid0IGRlY2xhcmUuCi0KLQkqIGNvbmZpZ3VyZS5hYyAoLS1lbmFibGUtb2Jzb2xldGUtY3J5cHQpOiBOZXcgY29uZmlndXJlIG9wdGlvbi4KLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZy5tYWtlLmluIChidWlsZC1vYnNvbGV0ZS1jcnlwdCk6IE5ldyBtYWtlZmlsZSB2YXJpYWJsZS4KLQkqIGNyeXB0L0Jhbm5lcjogRGVsZXRlIGZpbGUuCi0JKiBjcnlwdC9NYWtlZmlsZTogRG9uJ3QgYnVpbGQgYW55dGhpbmcgdW5sZXNzCi0JJChidWlsZC1vYnNvbGV0ZS1jcnlwdCkgaXMgJ3llcycuCi0JKiBzeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGU6IE9ubHkgYWRkIHRoaW5ncwotCXRvIGxpYmNyeXB0LXN5c2RlcF9yb3V0aW5lcyB3aGVuICQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgotCSogc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZTogTGlrZXdpc2UuCi0JKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGU6IExpa2V3aXNlLgotCi0JKiBjb25mb3JtL01ha2VmaWxlOiBPbmx5IGluY2x1ZGUgbGliY3J5cHQuYSBpbiBsaW5rbmFtZXNwYWNlIHRlc3RzCi0Jd2hlbiAkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSBpcyAneWVzJy4KLQkqIGNvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhIChzZXRrZXkpOiBEb24ndCBleHBlY3QuCi0JKiBjb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YSAoY3J5cHQsIGVuY3J5cHQpOiBEb24ndCBleHBlY3QuCi0JKiBlbGYvTWFrZWZpbGU6IE9ubHkgcGVyZm9ybSB2YXJpb3VzIHRlc3RzIG9mIGxpYmNyeXB0LnNvL2xpYmNyeXB0LmEKLQl3aGVuICQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpIGlzICd5ZXMnLgotCSogZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jOiBEb24ndCBpbmNsdWRlIGNyeXB0Lmggd2hlbiBVU0VfQ1JZUFQKLQlpcyBmYWxzZS4KLS0tLQotIE5FV1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKwotIGNvbmZpZy5tYWtlLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrKysrCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrKysKLSBjb25mb3JtL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKysrLS0tLQotIGNvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhICAgICAgICAgICAgICAgICAgICAgICB8ICAzIC0tLQotIGNvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhICAgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQotIGNyeXB0L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCi0gZWxmL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysrLS0tLQotIGVsZi90c3QtbGlua2FsbC1zdGF0aWMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICsrCi0gcG9zaXgvdW5pc3RkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYgLS0tLS0tLS0tLS0tLS0tLQotIHN0ZGxpYi9zdGRsaWIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2IC0tLS0tLQotIHN5c2RlcHMvc3BhcmMvc3BhcmMzMi9zcGFyY3Y5L211bHRpYXJjaC9NYWtlZmlsZSB8ICAyICsrCi0gc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZSAgICAgICAgIHwgIDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUgICAgICAgICAgICAgfCAgMiArKwotIDE1IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnLm1ha2UuaW4gYi9jb25maWcubWFrZS5pbgotaW5kZXggOWU1ZTI0YjJjNi4uOGZlNjEwZDA0ZCAxMDA2NDQKLS0tLSBhL2NvbmZpZy5tYWtlLmluCi0rKysgYi9jb25maWcubWFrZS5pbgotQEAgLTgyLDYgKzgyLDcgQEAgbWFjaC1pbnRlcmZhY2UtbGlzdCA9IEBtYWNoX2ludGVyZmFjZV9saXN0QAotIAotIGV4cGVyaW1lbnRhbC1tYWxsb2MgPSBAZXhwZXJpbWVudGFsX21hbGxvY0AKLSAKLStidWlsZC1vYnNvbGV0ZS1jcnlwdCA9IEBidWlsZF9vYnNvbGV0ZV9jcnlwdEAKLSBuc3MtY3J5cHQgPSBAbGliY19jdl9uc3NfY3J5cHRACi0gc3RhdGljLW5zcy1jcnlwdCA9IEBsaWJjX2N2X3N0YXRpY19uc3NfY3J5cHRACi0gCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3YThiZDNmODE3Li40NmY2YmQ3Zjg2IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02NzIsNiArNjcyLDcgQEAgYmFzZV9tYWNoaW5lCi0gaGF2ZV90dW5hYmxlcwotIGJ1aWxkX3B0X2Nob3duCi0gYnVpbGRfbnNjZAotK2J1aWxkX29ic29sZXRlX2NyeXB0Ci0gYnVpbGRfb2Jzb2xldGVfbnNsCi0gbGlua19vYnNvbGV0ZV9ycGMKLSBsaWJjX2N2X3N0YXRpY19uc3NfY3J5cHQKLUBAIC03ODIsNiArNzgzLDcgQEAgZW5hYmxlX2V4cGVyaW1lbnRhbF9tYWxsb2MKLSBlbmFibGVfbnNzX2NyeXB0Ci0gZW5hYmxlX29ic29sZXRlX3JwYwotIGVuYWJsZV9vYnNvbGV0ZV9uc2wKLStlbmFibGVfb2Jzb2xldGVfY3J5cHQKLSBlbmFibGVfc3lzdGVtdGFwCi0gZW5hYmxlX2J1aWxkX25zY2QKLSBlbmFibGVfbnNjZAotQEAgLTE0NTMsNiArMTQ1NSw3IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay10aW1lIHVzYWdlCi0gICAtLWVuYWJsZS1vYnNvbGV0ZS1uc2wgICBidWlsZCBhbmQgaW5zdGFsbCB0aGUgb2Jzb2xldGUgbGlibnNsIGxpYnJhcnkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRpbmcgTlNTIG1vZHVsZXMKLSsgIC0tZW5hYmxlLW9ic29sZXRlLWNyeXB0IGJ1aWxkIGFuZCBpbnN0YWxsIHRoZSBvYnNvbGV0ZSBsaWJjcnlwdCBsaWJyYXJ5Ci0gICAtLWVuYWJsZS1zeXN0ZW10YXAgICAgICBlbmFibGUgc3lzdGVtdGFwIHN0YXRpYyBwcm9iZSBwb2ludHMgW2RlZmF1bHQ9bm9dCi0gICAtLWRpc2FibGUtYnVpbGQtbnNjZCAgICBkaXNhYmxlIGJ1aWxkaW5nIGFuZCBpbnN0YWxsaW5nIHRoZSBuc2NkIGRhZW1vbgotICAgLS1kaXNhYmxlLW5zY2QgICAgICAgICAgbGlicmFyeSBmdW5jdGlvbnMgd2lsbCBub3QgY29udGFjdCB0aGUgbnNjZCBkYWVtb24KLUBAIC0zNjMyLDYgKzM2MzUsMTYgQEAgaWYgdGVzdCAiJGJ1aWxkX29ic29sZXRlX25zbCIgPSB5ZXM7IHRoZW4KLSAKLSBmaQotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfb2Jzb2xldGVfY3J5cHQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfb2Jzb2xldGVfY3J5cHQ7IGJ1aWxkX29ic29sZXRlX2NyeXB0PSRlbmFibGV2YWwKLStlbHNlCi0rICBidWlsZF9vYnNvbGV0ZV9jcnlwdD1ubwotK2ZpCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN5c3RlbXRhcCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfc3lzdGVtdGFwK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX3N5c3RlbXRhcDsgc3lzdGVtdGFwPSRlbmFibGV2YWwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNhMTI4MmE2YjMuLjAxNDIzNTM3NDAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM3OCw2ICszNzgsMTQgQEAgaWYgdGVzdCAiJGJ1aWxkX29ic29sZXRlX25zbCIgPSB5ZXM7IHRoZW4KLSAgIEFDX0RFRklORShMSU5LX09CU09MRVRFX05TTCkKLSBmaQotIAotK0FDX0FSR19FTkFCTEUoW29ic29sZXRlLWNyeXB0XSwKLSsgICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1vYnNvbGV0ZS1jcnlwdF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVpbGQgYW5kIGluc3RhbGwgdGhlIG9ic29sZXRlIGxpYmNyeXB0IGxpYnJhcnldKSwKLSsgICAgICAgICAgICAgIFtidWlsZF9vYnNvbGV0ZV9jcnlwdD0kZW5hYmxldmFsXSwKLSsgICAgICAgICAgICAgIFtidWlsZF9vYnNvbGV0ZV9jcnlwdD1ub10pCi0rQUNfU1VCU1QoYnVpbGRfb2Jzb2xldGVfY3J5cHQpCi0rCi0rCi0gQUNfQVJHX0VOQUJMRShbc3lzdGVtdGFwXSwKLSAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtc3lzdGVtdGFwXSwKLSAJICAgICAgIFtlbmFibGUgc3lzdGVtdGFwIHN0YXRpYyBwcm9iZSBwb2ludHMgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAotZGlmZiAtLWdpdCBhL2NvbmZvcm0vTWFrZWZpbGUgYi9jb25mb3JtL01ha2VmaWxlCi1pbmRleCA4NjRmZGVjYTIxLi41ZWY0NzRmYjI0IDEwMDY0NAotLS0tIGEvY29uZm9ybS9NYWtlZmlsZQotKysrIGIvY29uZm9ybS9NYWtlZmlsZQotQEAgLTE5MywyMiArMTkzLDI4IEBAIGxpbmtuYW1lc3BhY2UtbGlicy10aHIgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKSBcCi0gCQkJICQoY29tbW9uLW9ianBmeClydC9saWJydC5hICQoc3RhdGljLXRocmVhZC1saWJyYXJ5KQotIGxpbmtuYW1lc3BhY2UtbGlicy1wb3NpeCA9ICQobGlua25hbWVzcGFjZS1saWJzLXRocikgXAotIAkJCSAgICQoY29tbW9uLW9ianBmeClkbGZjbi9saWJkbC5hCi0tbGlua25hbWVzcGFjZS1saWJzLXhzaSA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KSBcCi0tCQkJICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCi0rbGlua25hbWVzcGFjZS1saWJzLXhzaSA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KQotIGxpbmtuYW1lc3BhY2UtbGlicy1JU08gPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQotIGxpbmtuYW1lc3BhY2UtbGlicy1JU085OSA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpCi0gbGlua25hbWVzcGFjZS1saWJzLUlTTzExID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtaXNvYykKLS1saW5rbmFtZXNwYWNlLWxpYnMtWFBHNCA9ICQobGlua25hbWVzcGFjZS1saWJzLWlzb2MpIFwKLS0JCQkgICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCi0rbGlua25hbWVzcGFjZS1saWJzLVhQRzQgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy1pc29jKQotIGxpbmtuYW1lc3BhY2UtbGlicy1YUEc0MiA9ICQobGlua25hbWVzcGFjZS1saWJzLVhQRzQpCi0gbGlua25hbWVzcGFjZS1saWJzLVBPU0lYID0gJChsaW5rbmFtZXNwYWNlLWxpYnMtdGhyKQotIGxpbmtuYW1lc3BhY2UtbGlicy1VTklYOTggPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCi0gbGlua25hbWVzcGFjZS1saWJzLVhPUEVOMksgPSAkKGxpbmtuYW1lc3BhY2UtbGlicy14c2kpCi0gbGlua25hbWVzcGFjZS1saWJzLVBPU0lYMjAwOCA9ICQobGlua25hbWVzcGFjZS1saWJzLXBvc2l4KQotIGxpbmtuYW1lc3BhY2UtbGlicy1YT1BFTjJLOCA9ICQobGlua25hbWVzcGFjZS1saWJzLXhzaSkKLSsKLStpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCi0rbGlua25hbWVzcGFjZS1saWJzLXhzaSArPSAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQotK2xpbmtuYW1lc3BhY2UtbGlicy1YUEc0ICs9ICQoY29tbW9uLW9ianBmeCljcnlwdC9saWJjcnlwdC5hCi0rZW5kaWYKLSsKLSBsaW5rbmFtZXNwYWNlLWxpYnMgPSAkKGZvcmVhY2ggc3RkLCQoY29uZm9ybXRlc3Qtc3RhbmRhcmRzKSxcCi0gCQkJCSAgICQobGlua25hbWVzcGFjZS1saWJzLSQoc3RkKSkpCi0gCi0rCi0rCi0gJChsaW5rbmFtZXNwYWNlLXN5bWxpc3Qtc3RkbGlicy10ZXN0cyk6ICQob2JqcGZ4KXN5bWxpc3Qtc3RkbGlicy0lOiBcCi0gCQkJCQkkKGxpbmtuYW1lc3BhY2UtbGlicykKLSAJTENfQUxMPUMgJChSRUFERUxGKSAtVyAtcyAkKGxpbmtuYW1lc3BhY2UtbGlicy0kKikgPiAkQDsgXAotZGlmZiAtLWdpdCBhL2NvbmZvcm0vZGF0YS9zdGRsaWIuaC1kYXRhIGIvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKLWluZGV4IGQ4ZmNjY2MyZmIuLjY5MTM4MjgxOTYgMTAwNjQ0Ci0tLS0gYS9jb25mb3JtL2RhdGEvc3RkbGliLmgtZGF0YQotKysrIGIvY29uZm9ybS9kYXRhL3N0ZGxpYi5oLWRhdGEKLUBAIC0xNDksOSArMTQ5LDYgQEAgZnVuY3Rpb24ge3Vuc2lnbmVkIHNob3J0IGludCp9IHNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50WzNdKQotICNpZiAhZGVmaW5lZCBJU08gJiYgIWRlZmluZWQgSVNPOTkgJiYgIWRlZmluZWQgSVNPMTEgJiYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgWFBHNCAmJiAhZGVmaW5lZCBYUEc0MiAmJiAhZGVmaW5lZCBVTklYOTgKLSBmdW5jdGlvbiBpbnQgc2V0ZW52IChjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGludCkKLSAjZW5kaWYKLS0jaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAotLWZ1bmN0aW9uIHZvaWQgc2V0a2V5IChjb25zdCBjaGFyKikKLS0jZW5kaWYKLSAjaWYgIWRlZmluZWQgSVNPICYmICFkZWZpbmVkIElTTzk5ICYmICFkZWZpbmVkIElTTzExICYmICFkZWZpbmVkIFhQRzQgJiYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4Ci0gZnVuY3Rpb24ge2NoYXIqfSBzZXRzdGF0ZSAoY2hhciopCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvY29uZm9ybS9kYXRhL3VuaXN0ZC5oLWRhdGEgYi9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQotaW5kZXggZGRmNGYyNTEzMi4uYWEwNzA1MjhlOCAxMDA2NDQKLS0tLSBhL2NvbmZvcm0vZGF0YS91bmlzdGQuaC1kYXRhCi0rKysgYi9jb25mb3JtL2RhdGEvdW5pc3RkLmgtZGF0YQotQEAgLTQzNyw5ICs0MzcsNiBAQCBmdW5jdGlvbiBpbnQgY2hyb290IChjb25zdCBjaGFyKikKLSBmdW5jdGlvbiBpbnQgY2hvd24gKGNvbnN0IGNoYXIqLCB1aWRfdCwgZ2lkX3QpCi0gZnVuY3Rpb24gaW50IGNsb3NlIChpbnQpCi0gZnVuY3Rpb24gc2l6ZV90IGNvbmZzdHIgKGludCwgY2hhciosIHNpemVfdCkKLS0jaWYgIWRlZmluZWQgUE9TSVggJiYgIWRlZmluZWQgUE9TSVgyMDA4Ci0tZnVuY3Rpb24ge2NoYXIqfSBjcnlwdCAoY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKQotLSNlbmRpZgotICNpZiBkZWZpbmVkIFhQRzQgfHwgZGVmaW5lZCBYUEc0MiB8fCBkZWZpbmVkIFVOSVg5OAotIGZ1bmN0aW9uIHtjaGFyKn0gY3Rlcm1pZCAoY2hhciopCi0gZnVuY3Rpb24ge2NoYXIqfSBjdXNlcmlkIChjaGFyKikKLUBAIC00NDksOSArNDQ2LDYgQEAgYWxsb3cgY3VzZXJpZAotICNlbmRpZgotIGZ1bmN0aW9uIGludCBkdXAgKGludCkKLSBmdW5jdGlvbiBpbnQgZHVwMiAoaW50LCBpbnQpCi0tI2lmICFkZWZpbmVkIFBPU0lYICYmICFkZWZpbmVkIFBPU0lYMjAwOAotLWZ1bmN0aW9uIHZvaWQgZW5jcnlwdCAoY2hhcls2NF0sIGludCkKLS0jZW5kaWYKLSBmdW5jdGlvbiBpbnQgZXhlY2wgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQotIGZ1bmN0aW9uIGludCBleGVjbGUgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQotIGZ1bmN0aW9uIGludCBleGVjbHAgKGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgLi4uKQotZGlmZiAtLWdpdCBhL2NyeXB0L01ha2VmaWxlIGIvY3J5cHQvTWFrZWZpbGUKLWluZGV4IDMwMzgwMGRmNzMuLjAyNGVjMmM2YWIgMTAwNjQ0Ci0tLS0gYS9jcnlwdC9NYWtlZmlsZQotKysrIGIvY3J5cHQvTWFrZWZpbGUKLUBAIC0yMiw2ICsyMiw4IEBAIHN1YmRpcgk6PSBjcnlwdAotIAotIGluY2x1ZGUgLi4vTWFrZWNvbmZpZwotIAotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSsKLSBoZWFkZXJzIDo9IGNyeXB0LmgKLSAKLSBleHRyYS1saWJzIDo9IGxpYmNyeXB0Ci1AQCAtNTIsOSArNTQsMTEgQEAgdGVzdHMgKz0gbWQ1dGVzdCBzaGEyNTZ0ZXN0IHNoYTUxMnRlc3QKLSAjIG1hY2hpbmUgb3ZlciBhIG1pbnV0ZS4KLSB4dGVzdHMgPSBtZDV0ZXN0LWdpYW50Ci0gZW5kaWYKLStlbmRpZgotIAotIGluY2x1ZGUgLi4vUnVsZXMKLSAKLStpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCi0gaWZuZXEgKCQobnNzLWNyeXB0KSx5ZXMpCi0gbWQ1LXJvdXRpbmVzIDo9IG1kNSAkKGZpbHRlciBtZDUlLCQobGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzKSkKLSBzaGEyNTYtcm91dGluZXMgOj0gc2hhMjU2ICQoZmlsdGVyIHNoYTI1NiUsJChsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMpKQotQEAgLTcxLDMgKzc1LDQgQEAgJChhZGRwcmVmaXggJChvYmpwZngpLCQodGVzdHMpKTogJChvYmpwZngpbGliY3J5cHQuc28KLSBlbHNlCi0gJChhZGRwcmVmaXggJChvYmpwZngpLCQodGVzdHMpKTogJChvYmpwZngpbGliY3J5cHQuYQotIGVuZGlmCi0rZW5kaWYKLWRpZmYgLS1naXQgYS9lbGYvTWFrZWZpbGUgYi9lbGYvTWFrZWZpbGUKLWluZGV4IDJhNDMyZDhiZWUuLjM2NmY3YjgwZWMgMTAwNjQ0Ci0tLS0gYS9lbGYvTWFrZWZpbGUKLSsrKyBiL2VsZi9NYWtlZmlsZQotQEAgLTM4NSwxNSArMzg1LDE5IEBAICQob2JqcGZ4KXRzdC1fZGxfYWRkcl9pbnNpZGVfb2JqZWN0OiAkKG9ianBmeClkbC1hZGRyLW9iai5vcwotIENGTEFHUy10c3QtX2RsX2FkZHJfaW5zaWRlX29iamVjdC5jICs9ICQoUElFLWNjZmxhZykKLSBlbmRpZgotIAotLSMgQnkgZGVmYXVsdCB0c3QtbGlua2FsbC1zdGF0aWMgc2hvdWxkIHRyeSB0byB1c2UgY3J5cHQgcm91dGluZXMgdG8gdGVzdAotLSMgc3RhdGljIGxpYmNyeXB0IHVzZS4KLS1DRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgKz0gLURVU0VfQ1JZUFQ9MQotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSsjIElmIHRoZSBsaWJjcnlwdCBsaWJyYXJ5IGlzIGJlaW5nIGJ1aWx0LCB0c3QtbGlua2FsbC1zdGF0aWMgc2hvdWxkCi0rIyB0cnkgdG8gdXNlIGNyeXB0IHJvdXRpbmVzIHRvIHRlc3Qgc3RhdGljIGxpYmNyeXB0IHVzZS4KLStDRkxBR1MtdHN0LWxpbmthbGwtc3RhdGljLmMgPSAtRFVTRV9DUllQVD0xCi0gIyBIb3dldmVyLCBpZiB3ZSBhcmUgdXNpbmcgTlNTIGNyeXB0byBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHN0YXRpYwotICMgbGlicmFyeSwgdGhlbiB3ZSBleGNsdWRlIHRoZSB1c2Ugb2YgY3J5cHQgZnVuY3Rpb25zIGluIHRoZSB0ZXN0LgotICMgV2Ugc2ltaWxhcmx5IGV4Y2x1ZGUgbGliY3J5cHQuYSBmcm9tIHRoZSBzdGF0aWMgbGluayAoc2VlIGJlbG93KS4KLSBpZmVxICh5ZXNubywkKG5zcy1jcnlwdCkkKHN0YXRpYy1uc3MtY3J5cHQpKQotIENGTEFHUy10c3QtbGlua2FsbC1zdGF0aWMuYyArPSAtVVVTRV9DUllQVCAtRFVTRV9DUllQVD0wCi0gZW5kaWYKLStlbHNlCi0rQ0ZMQUdTLXRzdC1saW5rYWxsLXN0YXRpYy5jID0gLURVU0VfQ1JZUFQ9MAotK2VuZGlmCi0gCi0gaW5jbHVkZSAuLi9SdWxlcwotIAotQEAgLTExMTMsOCArMTExNywxMCBAQCBsb2NhbHBsdC1idWlsdC1kc28gOj0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSxcCi0gCQkJCSAgcnQvbGlicnQuc28gXAotIAkJCQkgIGRsZmNuL2xpYmRsLnNvIFwKLSAJCQkJICByZXNvbHYvbGlicmVzb2x2LnNvIFwKLS0JCQkJICBjcnlwdC9saWJjcnlwdC5zbyBcCi0gCQkgICAgICAgKQotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLStsb2NhbHBsdC1idWlsdC1kc28gKz0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSwgY3J5cHQvbGliY3J5cHQuc28pCi0rZW5kaWYKLSBpZmVxICgkKGJ1aWxkLW1hdGh2ZWMpLHllcykKLSBsb2NhbHBsdC1idWlsdC1kc28gKz0gJChhZGRwcmVmaXggJChjb21tb24tb2JqcGZ4KSwgbWF0aHZlYy9saWJtdmVjLnNvKQotIGVuZGlmCi1AQCAtMTM5NSw2ICsxNDAxLDcgQEAgJChvYmpwZngpdHN0LWxpbmthbGwtc3RhdGljOiBcCi0gICAkKGNvbW1vbi1vYmpwZngpcmVzb2x2L2xpYmFubC5hIFwKLSAgICQoc3RhdGljLXRocmVhZC1saWJyYXJ5KQotIAotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSAjIElmIHdlIGFyZSB1c2luZyBOU1MgY3J5cHRvIGFuZCB3ZSBoYXZlIHRoZSBhYmlsaXR5IHRvIGxpbmsgc3RhdGljYWxseQotICMgdGhlbiB3ZSBpbmNsdWRlIGxpYmNyeXB0LmEsIG90aGVyd2lzZSB3ZSBsZWF2ZSBvdXQgbGliY3J5cHQuYSBhbmQKLSAjIGxpbmsgYXMgbXVjaCBhcyB3ZSBjYW4gaW50byB0aGUgdHN0LWxpbmthbGwtc3RhdGljIHRlc3QuICBUaGlzIGFzc3VtZXMKLUBAIC0xNDEwLDYgKzE0MTcsNyBAQCBpZmVxIChubywkKG5zcy1jcnlwdCkpCi0gJChvYmpwZngpdHN0LWxpbmthbGwtc3RhdGljOiBcCi0gICAkKGNvbW1vbi1vYmpwZngpY3J5cHQvbGliY3J5cHQuYQotIGVuZGlmCi0rZW5kaWYKLSAKLSAjIFRoZSBhcHBsaWNhdGlvbiBkZXBlbmRzIG9uIHRoZSBEU08sIGFuZCB0aGUgRFNPIGxvYWRzIHRoZSBwbHVnaW4uCi0gIyBUaGUgcGx1Z2luIGFsc28gZGVwZW5kcyBvbiB0aGUgRFNPLiBUaGlzIGNyZWF0ZXMgdGhlIGNpcmN1bGFyCi1kaWZmIC0tZ2l0IGEvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jIGIvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCi1pbmRleCBlOGRmMzhmNzRlLi4wZmZhZTdjNzIzIDEwMDY0NAotLS0tIGEvZWxmL3RzdC1saW5rYWxsLXN0YXRpYy5jCi0rKysgYi9lbGYvdHN0LWxpbmthbGwtc3RhdGljLmMKLUBAIC0xOCw3ICsxOCw5IEBACi0gCi0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8cHRocmVhZC5oPgotKyNpZiBVU0VfQ1JZUFQKLSAjaW5jbHVkZSA8Y3J5cHQuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0gI2luY2x1ZGUgPGRsZmNuLmg+Ci0gI2luY2x1ZGUgPHV0bXAuaD4KLWRpZmYgLS1naXQgYS9wb3NpeC91bmlzdGQuaCBiL3Bvc2l4L3VuaXN0ZC5oCi1pbmRleCA0ZDE0OWY5OTQ1Li5lNzVjZTRkNGVjIDEwMDY0NAotLS0tIGEvcG9zaXgvdW5pc3RkLmgKLSsrKyBiL3Bvc2l4L3VuaXN0ZC5oCi1AQCAtMTA3LDkgKzEwNyw2IEBAIF9fQkVHSU5fREVDTFMKLSAvKiBUaGUgWC9PcGVuIFVuaXggZXh0ZW5zaW9ucyBhcmUgYXZhaWxhYmxlLiAgKi8KLSAjZGVmaW5lIF9YT1BFTl9VTklYCTEKLSAKLS0vKiBFbmNyeXB0aW9uIGlzIHByZXNlbnQuICAqLwotLSNkZWZpbmUJX1hPUEVOX0NSWVBUCTEKLS0KLSAvKiBUaGUgZW5oYW5jZWQgaW50ZXJuYXRpb25hbGl6YXRpb24gY2FwYWJpbGl0aWVzIGFjY29yZGluZyB0byBYUEc0LjIKLSAgICBhcmUgcHJlc2VudC4gICovCi0gI2RlZmluZQlfWE9QRU5fRU5IX0kxOE4JMQotQEAgLTExMTgsMjAgKzExMTUsNyBAQCBzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZSAoaW50IF9faW5mZCwgX19vZmY2NF90ICpfX3Bpbm9mZiwKLSBleHRlcm4gaW50IGZkYXRhc3luYyAoaW50IF9fZmlsZGVzKTsKLSAjZW5kaWYgLyogVXNlIFBPU0lYMTk5MzA5ICovCi0gCi0tCi0tLyogWFBHNC4yIHNwZWNpZmllcyB0aGF0IHByb3RvdHlwZXMgZm9yIHRoZSBlbmNyeXB0aW9uIGZ1bmN0aW9ucyBtdXN0Ci0tICAgYmUgZGVmaW5lZCBoZXJlLiAgKi8KLSAjaWZkZWYJX19VU0VfWE9QRU4KLS0vKiBFbmNyeXB0IGF0IG1vc3QgOCBjaGFyYWN0ZXJzIGZyb20gS0VZIHVzaW5nIHNhbHQgdG8gcGVydHVyYiBERVMuICAqLwotLWV4dGVybiBjaGFyICpjcnlwdCAoY29uc3QgY2hhciAqX19rZXksIGNvbnN0IGNoYXIgKl9fc2FsdCkKLS0gICAgIF9fVEhST1cgX19ub25udWxsICgoMSwgMikpOwotLQotLS8qIEVuY3J5cHQgZGF0YSBpbiBCTE9DSyBpbiBwbGFjZSBpZiBFREZMQUcgaXMgemVybzsgb3RoZXJ3aXNlIGRlY3J5cHQKLS0gICBibG9jayBpbiBwbGFjZS4gICovCi0tZXh0ZXJuIHZvaWQgZW5jcnlwdCAoY2hhciAqX19nbGliY19ibG9jaywgaW50IF9fZWRmbGFnKQotLSAgICAgX19USFJPVyBfX25vbm51bGwgKCgxKSk7Ci0tCi0tCi0gLyogU3dhYiBwYWlycyBieXRlcyBpbiB0aGUgZmlyc3QgTiBieXRlcyBvZiB0aGUgYXJlYSBwb2ludGVkIHRvIGJ5Ci0gICAgRlJPTSBhbmQgY29weSB0aGUgcmVzdWx0IHRvIFRPLiAgVGhlIHZhbHVlIG9mIFRPIG11c3Qgbm90IGJlIGluIHRoZQotICAgIHJhbmdlIFtGUk9NIC0gTiArIDEsIEZST00gLSAxXS4gIElmIE4gaXMgb2RkIHRoZSBmaXJzdCBieXRlIGluIEZST00KLWRpZmYgLS1naXQgYS9zdGRsaWIvc3RkbGliLmggYi9zdGRsaWIvc3RkbGliLmgKLWluZGV4IDZiMWVhZDMxZTAuLjhlMjNlOTM1NTcgMTAwNjQ0Ci0tLS0gYS9zdGRsaWIvc3RkbGliLmgKLSsrKyBiL3N0ZGxpYi9zdGRsaWIuaAotQEAgLTk1OCwxMiArOTU4LDYgQEAgZXh0ZXJuIGludCBnZXRzdWJvcHQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fb3B0aW9ucCwKLSAjZW5kaWYKLSAKLSAKLS0jaWZkZWYgX19VU0VfWE9QRU4KLS0vKiBTZXR1cCBERVMgdGFibGVzIGFjY29yZGluZyBLRVkuICAqLwotLWV4dGVybiB2b2lkIHNldGtleSAoY29uc3QgY2hhciAqX19rZXkpIF9fVEhST1cgX19ub25udWxsICgoMSkpOwotLSNlbmRpZgotLQotLQotIC8qIFgvT3BlbiBwc2V1ZG8gdGVybWluYWwgaGFuZGxpbmcuICAqLwotIAotICNpZmRlZiBfX1VTRV9YT1BFTjJLWFNJCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCi1pbmRleCBhNmQwOGYzYTAwLi5kOGI4Mjk3ZmIwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9zcGFyYy9zcGFyYzMyL3NwYXJjdjkvbXVsdGlhcmNoL01ha2VmaWxlCi0rKysgYi9zeXNkZXBzL3NwYXJjL3NwYXJjMzIvc3BhcmN2OS9tdWx0aWFyY2gvTWFrZWZpbGUKLUBAIC0xLDYgKzEsOCBAQAotIGlmZXEgKCQoc3ViZGlyKSxjcnlwdCkKLStpZmVxICgkKGJ1aWxkLW9ic29sZXRlLWNyeXB0KSx5ZXMpCi0gbGliY3J5cHQtc3lzZGVwX3JvdXRpbmVzICs9IG1kNS1jcm9wIHNoYTI1Ni1jcm9wIHNoYTUxMi1jcm9wCi0gZW5kaWYKLStlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxsb2NhbGUpCi0gbG9jYWxlZGVmLWF1eCArPSBtZDUtY3JvcAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvc3BhcmMvc3BhcmM2NC9tdWx0aWFyY2gvTWFrZWZpbGUgYi9zeXNkZXBzL3NwYXJjL3NwYXJjNjQvbXVsdGlhcmNoL01ha2VmaWxlCi1pbmRleCBlYWY3NThlN2FhLi4wMTk4Zjk4ODZmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQotKysrIGIvc3lzZGVwcy9zcGFyYy9zcGFyYzY0L211bHRpYXJjaC9NYWtlZmlsZQotQEAgLTEsNiArMSw4IEBACi0gaWZlcSAoJChzdWJkaXIpLGNyeXB0KQotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgKz0gbWQ1LWNyb3Agc2hhMjU2LWNyb3Agc2hhNTEyLWNyb3AKLSBlbmRpZgotK2VuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLGxvY2FsZSkKLSBsb2NhbGVkZWYtYXV4ICs9IG1kNS1jcm9wCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCi1pbmRleCA0YWRjMzVkZTA0Li42Y2FiNGYzYTMxIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL01ha2VmaWxlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vTWFrZWZpbGUKLUBAIC0xOSw4ICsxOSwxMCBAQCBlbmRpZgotICMgQWRkIGEgc3lzY2FsbCBmdW5jdGlvbiB0byBlYWNoIGxpYnJhcnkgdGhhdCBuZWVkcyBvbmUuCi0gCi0gaWZlcSAoJChzdWJkaXIpLGNyeXB0KQotK2lmZXEgKCQoYnVpbGQtb2Jzb2xldGUtY3J5cHQpLHllcykKLSBsaWJjcnlwdC1zeXNkZXBfcm91dGluZXMgKz0gbGliYy1kby1zeXNjYWxsCi0gZW5kaWYKLStlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxydCkKLSBsaWJydC1zeXNkZXBfcm91dGluZXMgKz0gbGliYy1kby1zeXNjYWxsCi0tLSAKLTIuMTYuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtc3lzZGVwcy1pZWVlNzU0LXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtdy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1zeXNkZXBzLWllZWU3NTQtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZjU1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtc3lzZGVwcy1pZWVlNzU0LXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtdy5wYXRjaApAQCAtMCwwICsxLDI1OCBAQAorRnJvbSA1NDZiNDZjMzA5YTUyZWQ3NGRjOTA2MTE0YjFlOTg0YmI5NzAzZDc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBTZXAgMjAxOCAyMzoyMzowMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBzeXNkZXBzL2llZWU3NTQ6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtTworIFtCWiAjMTk0NDRdCisKK1dpdGggLU8gaW5jbHVkZWQgaW4gQ0ZMQUdTIGl0IGZhaWxzIHRvIGJ1aWxkIHdpdGg6CisKKy4uL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2Vfam5sLmM6IEluIGZ1bmN0aW9uICdfX2llZWU3NTRfam5sJzoKKy4uL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2Vfam5sLmM6MTQ2OjIwOiBlcnJvcjogJ3RlbXAnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorICAgICAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0bCAoeCk7CisgICAgICAgICAgfn5+fn5+fn5+fl5+fn5+fgorLi4vc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzogSW4gZnVuY3Rpb24gJ19faWVlZTc1NF95bmwnOgorLi4vc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzozNzU6MTY6IGVycm9yOiAndGVtcCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgIGIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydGwgKHgpOworICAgICAgfn5+fn5+fn5+fl5+fn5+fgorLi4vc3lzZGVwcy9pZWVlNzU0L2RibC02NC9lX2puLmM6IEluIGZ1bmN0aW9uICdfX2llZWU3NTRfam4nOgorLi4vc3lzZGVwcy9pZWVlNzU0L2RibC02NC9lX2puLmM6MTEzOjIwOiBlcnJvcjogJ3RlbXAnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorICAgICAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0ICh4KTsKKyAgICAgICAgICB+fn5+fn5+fn5+Xn5+fn5+CisuLi9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYzogSW4gZnVuY3Rpb24gJ19faWVlZTc1NF95bic6CisuLi9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYzozMjA6MTY6IGVycm9yOiAndGVtcCcgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCisgIGIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydCAoeCk7CisgICAgICB+fn5+fn5+fn5+Xn5+fn5+CisKK0J1aWxkIHRlc3RlZCB3aXRoIFlvY3RvIGZvciBBUk0sIEFBUkNINjQsIFg4NiwgWDg2XzY0LCBQUEMsIE1JUFMsIE1JUFM2NAord2l0aCAtTywgLU8xLCAtT3MuCitGb3Igc29mdC1mcCBBUk0gaXQgbmVlZHMgb25lIG1vcmUgZml4IGZvciAtTzE6CitodHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxOC0wOS9tc2cwMDMwMC5odG1sCitGb3IgQUFSQ0g2NCBpdCBuZWVkcyBvbmUgbW9yZSBmaXggaW4gbG9jYWxlIGZvciAtT3MuCisKKyAgICAgICAgW0JaICMyMzcxNl0KKyAgICAgICAgKiBzeXNkZXBzL2llZWU3NTQvZGJsLTk2L2Vfam5sLmM6IEZpeCBidWlsZCB3aXRoIC1PCisgICAgICAgICogc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzogTGlrZXdpc2UuCisgICAgICAgICogc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4L2Vfam5sLmM6IExpa2V3aXNlLgorICAgICAgICAqIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOGlibS9lX2pubC5jOiBMaWtld2lzZS4KKworV29yayBhcm91bmQgdGhlIGlzc3VlIGluc3RlYWQgb2YgcmVtb3ZpbmcgLU8gbGlrZSB3ZSBkbyB3aXRoCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxOC0wOS9tc2cwMDI5OS5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKysKKyBzeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYyAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOC9lX2pubC5jICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4aWJtL2Vfam5sLmMgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyBzeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKworIDUgZmlsZXMgY2hhbmdlZCwgOTEgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCAxMWE5YjhkOThlLi45MjJlOTE2ZjJjIDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsMTAgQEAKKysyMDE4LTA5LTI5ICBNYXJ0aW4gSmFuc2EgIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorKwlQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKysJKiBzeXNkZXBzL2llZWU3NTQvZGJsLTk2L2Vfam5sLmM6IEZpeCBidWlsZCB3aXRoIC1PCisrCSogc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYzogTGlrZXdpc2UuCisrCSogc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4L2Vfam5sLmM6IExpa2V3aXNlLgorKwkqIHN5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOGlibS9lX2pubC5jOiBMaWtld2lzZS4KKysKKyAyMDE4LTA5LTI4ICBBZGhlbWVydmFsIFphbmVsbGEgIDxhZGhlbWVydmFsLnphbmVsbGFAbGluYXJvLm9yZz4KKyAKKyAJW0JaICMyMzU3OV0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2llZWU3NTQvZGJsLTY0L2Vfam4uYyBiL3N5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jCitpbmRleCA5MTgxYjIyYmI4Li45ZmY1MmM3MzdmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2RibC02NC9lX2puLmMKKysrKyBiL3N5c2RlcHMvaWVlZTc1NC9kYmwtNjQvZV9qbi5jCitAQCAtNDIsNiArNDIsNyBAQAorICNpbmNsdWRlIDxtYXRoLW5hcnJvdy1ldmFsLmg+CisgI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorICNpbmNsdWRlIDxtYXRoLXVuZGVyZmxvdy5oPgorKyNpbmNsdWRlIDxsaWJjLWRpYWcuaD4KKyAKKyBzdGF0aWMgY29uc3QgZG91YmxlCisgICBpbnZzcXJ0cGkgPSA1LjY0MTg5NTgzNTQ3NzU2Mjc5MjgwZS0wMSwgLyogMHgzRkUyMERENywgMHg1MDQyOUI2RCAqLworQEAgLTEwOSw3ICsxMTAsMTcgQEAgX19pZWVlNzU0X2puIChpbnQgbiwgZG91YmxlIHgpCisgCSAgICAgIGNhc2UgMjogdGVtcCA9IC1jIC0gczsgYnJlYWs7CisgCSAgICAgIGNhc2UgMzogdGVtcCA9IGMgLSBzOyBicmVhazsKKyAJICAgICAgfQorKwkgICAgLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICAgICAgd2FybnMgdGhhdCB0aGUgdmFyaWFibGUgJ3RlbXAnLCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKwkgICAgICAgVGhlIHN3aXRjaCBhYm92ZSBjb3ZlcnMgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBuICYgMworKwkgICAgICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgICAgIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyBbMCwzXSBhcyBleHBsYWluZWQgaW46CisrCSAgICAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02OTIzMAorKwkgICAgICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwkgICAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrCSAgICBESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgCSAgICBiID0gaW52c3FydHBpICogdGVtcCAvIHNxcnQgKHgpOworKwkgICAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAJICB9CisgCWVsc2UKKyAJICB7CitAQCAtMzE2LDcgKzMyNywxNyBAQCBfX2llZWU3NTRfeW4gKGludCBuLCBkb3VibGUgeCkKKyAJICBjYXNlIDI6IHRlbXAgPSAtcyArIGM7IGJyZWFrOworIAkgIGNhc2UgMzogdGVtcCA9IHMgKyBjOyBicmVhazsKKyAJICB9CisrCS8qIFdpdGggR0NDIDggKGFuZCBvbGRlcikgd2hlbiBjb21waWxpbmcgd2l0aCAtTyB0aGUgY29tcGlsZXIKKysJICAgd2FybnMgdGhhdCB0aGUgdmFyaWFibGUgJ3RlbXAnLCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKwkgICBUaGUgc3dpdGNoIGFib3ZlIGNvdmVycyBhbGwgcG9zc2libGUgdmFsdWVzIG9mIG4gJiAzCisrCSAgIGJ1dCBHQ0Mgd2l0aG91dCBWUlAgZW5hYmxlZCBpc24ndCBhYmxlIHRvIGZpZ3VyZSBvdXQgdGhlCisrCSAgIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyBbMCwzXSBhcyBleHBsYWluZWQgaW46CisrCSAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY5MjMwCisrCSAgIHNvIGl0J3MgZmFsc2UgcG9zc2l0aXZlIHdpdGggLU8xIGFuZCBsb3dlci4gKi8KKysJRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrCURJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAJYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0ICh4KTsKKysJRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgICAgICB9CisgICAgIGVsc2UKKyAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4L2Vfam5sLmMgYi9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjgvZV9qbmwuYworaW5kZXggNzczOWVlYzI5MS4uODcwNmExMTU3NSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOC9lX2pubC5jCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjgvZV9qbmwuYworQEAgLTYxLDYgKzYxLDcgQEAKKyAjaW5jbHVkZSA8bWF0aC5oPgorICNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKyAjaW5jbHVkZSA8bWF0aC11bmRlcmZsb3cuaD4KKysjaW5jbHVkZSA8bGliYy1kaWFnLmg+CisgCisgc3RhdGljIGNvbnN0IF9GbG9hdDEyOAorICAgaW52c3FydHBpID0gTCg1LjY0MTg5NTgzNTQ3NzU2Mjg2OTQ4MDc5NDUxNTYwNzcyNTg1ODQ0MDVFLTEpLAorQEAgLTE1MCw3ICsxNTEsMTcgQEAgX19pZWVlNzU0X2pubCAoaW50IG4sIF9GbG9hdDEyOCB4KQorIAkJdGVtcCA9IGMgLSBzOworIAkJYnJlYWs7CisgCSAgICAgIH0KKysJICAgIC8qIFdpdGggR0NDIDggKGFuZCBvbGRlcikgd2hlbiBjb21waWxpbmcgd2l0aCAtTyB0aGUgY29tcGlsZXIKKysJICAgICAgIHdhcm5zIHRoYXQgdGhlIHZhcmlhYmxlICd0ZW1wJywgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4KKysJICAgICAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgICAgIGJ1dCBHQ0Mgd2l0aG91dCBWUlAgZW5hYmxlZCBpc24ndCBhYmxlIHRvIGZpZ3VyZSBvdXQgdGhlCisrCSAgICAgICByYW5nZSBvZiBwb3NzaWJsZSB2YWx1ZXMgaXMgWzAsM10gYXMgZXhwbGFpbmVkIGluOgorKwkgICAgICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgICAgIHNvIGl0J3MgZmFsc2UgcG9zc2l0aXZlIHdpdGggLU8xIGFuZCBsb3dlci4gKi8KKysJICAgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOworKwkgICAgRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAkgICAgYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0bCAoeCk7CisrCSAgICBESUFHX1BPUF9ORUVEU19DT01NRU5UOworIAkgIH0KKyAJZWxzZQorIAkgIHsKK0BAIC0zODYsNyArMzk3LDE3IEBAIF9faWVlZTc1NF95bmwgKGludCBuLCBfRmxvYXQxMjggeCkKKyAJICAgIHRlbXAgPSBzICsgYzsKKyAJICAgIGJyZWFrOworIAkgIH0KKysJLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwlESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAliID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKysJRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgICAgICB9CisgICAgIGVsc2UKKyAgICAgICB7CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtMTI4aWJtL2Vfam5sLmMgYi9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjhpYm0vZV9qbmwuYworaW5kZXggNzFiM2FkZGZiYS4uMzIyNmQwMjMwOSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTEyOGlibS9lX2pubC5jCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC0xMjhpYm0vZV9qbmwuYworQEAgLTYxLDYgKzYxLDcgQEAKKyAjaW5jbHVkZSA8bWF0aC5oPgorICNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKyAjaW5jbHVkZSA8bWF0aC11bmRlcmZsb3cuaD4KKysjaW5jbHVkZSA8bGliYy1kaWFnLmg+CisgCisgc3RhdGljIGNvbnN0IGxvbmcgZG91YmxlCisgICBpbnZzcXJ0cGkgPSA1LjY0MTg5NTgzNTQ3NzU2Mjg2OTQ4MDc5NDUxNTYwNzcyNTg1ODQ0MDVFLTFMLAorQEAgLTE1MCw3ICsxNTEsMTcgQEAgX19pZWVlNzU0X2pubCAoaW50IG4sIGxvbmcgZG91YmxlIHgpCisgCQl0ZW1wID0gYyAtIHM7CisgCQlicmVhazsKKyAJICAgICAgfQorKwkgICAgLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICAgICAgd2FybnMgdGhhdCB0aGUgdmFyaWFibGUgJ3RlbXAnLCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKwkgICAgICAgVGhlIHN3aXRjaCBhYm92ZSBjb3ZlcnMgYWxsIHBvc3NpYmxlIHZhbHVlcyBvZiBuICYgMworKwkgICAgICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgICAgIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyBbMCwzXSBhcyBleHBsYWluZWQgaW46CisrCSAgICAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02OTIzMAorKwkgICAgICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwkgICAgRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrCSAgICBESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgCSAgICBiID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKysJICAgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7CisgCSAgfQorIAllbHNlCisgCSAgeworQEAgLTM4Niw3ICszOTcsMTcgQEAgX19pZWVlNzU0X3lubCAoaW50IG4sIGxvbmcgZG91YmxlIHgpCisgCSAgICB0ZW1wID0gcyArIGM7CisgCSAgICBicmVhazsKKyAJICB9CisrCS8qIFdpdGggR0NDIDggKGFuZCBvbGRlcikgd2hlbiBjb21waWxpbmcgd2l0aCAtTyB0aGUgY29tcGlsZXIKKysJICAgd2FybnMgdGhhdCB0aGUgdmFyaWFibGUgJ3RlbXAnLCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKwkgICBUaGUgc3dpdGNoIGFib3ZlIGNvdmVycyBhbGwgcG9zc2libGUgdmFsdWVzIG9mIG4gJiAzCisrCSAgIGJ1dCBHQ0Mgd2l0aG91dCBWUlAgZW5hYmxlZCBpc24ndCBhYmxlIHRvIGZpZ3VyZSBvdXQgdGhlCisrCSAgIHJhbmdlIG9mIHBvc3NpYmxlIHZhbHVlcyBpcyBbMCwzXSBhcyBleHBsYWluZWQgaW46CisrCSAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY5MjMwCisrCSAgIHNvIGl0J3MgZmFsc2UgcG9zc2l0aXZlIHdpdGggLU8xIGFuZCBsb3dlci4gKi8KKysJRElBR19QVVNIX05FRURTX0NPTU1FTlQ7CisrCURJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAJYiA9IGludnNxcnRwaSAqIHRlbXAgLyBzcXJ0bCAoeCk7CisrCURJQUdfUE9QX05FRURTX0NPTU1FTlQ7CisgICAgICAgfQorICAgICBlbHNlCisgICAgICAgeworZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2Vfam5sLmMgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX2pubC5jCitpbmRleCAzOTQ5MjFmNTY0Li5kYTVjMmNjOTNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYworKysrIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9qbmwuYworQEAgLTYxLDYgKzYxLDcgQEAKKyAjaW5jbHVkZSA8bWF0aC5oPgorICNpbmNsdWRlIDxtYXRoX3ByaXZhdGUuaD4KKyAjaW5jbHVkZSA8bWF0aC11bmRlcmZsb3cuaD4KKysjaW5jbHVkZSA8bGliYy1kaWFnLmg+CisgCisgc3RhdGljIGNvbnN0IGxvbmcgZG91YmxlCisgICBpbnZzcXJ0cGkgPSA1LjY0MTg5NTgzNTQ3NzU2Mjg2OTQ4MDc5ZS0xTCwgdHdvID0gMi4wZTBMLCBvbmUgPSAxLjBlMEw7CitAQCAtMTQzLDcgKzE0NCwxNyBAQCBfX2llZWU3NTRfam5sIChpbnQgbiwgbG9uZyBkb3VibGUgeCkKKyAJCXRlbXAgPSBjIC0gczsKKyAJCWJyZWFrOworIAkgICAgICB9CisrCSAgICAvKiBXaXRoIEdDQyA4IChhbmQgb2xkZXIpIHdoZW4gY29tcGlsaW5nIHdpdGggLU8gdGhlIGNvbXBpbGVyCisrCSAgICAgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgICAgICBUaGUgc3dpdGNoIGFib3ZlIGNvdmVycyBhbGwgcG9zc2libGUgdmFsdWVzIG9mIG4gJiAzCisrCSAgICAgICBidXQgR0NDIHdpdGhvdXQgVlJQIGVuYWJsZWQgaXNuJ3QgYWJsZSB0byBmaWd1cmUgb3V0IHRoZQorKwkgICAgICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY5MjMwCisrCSAgICAgICBzbyBpdCdzIGZhbHNlIHBvc3NpdGl2ZSB3aXRoIC1PMSBhbmQgbG93ZXIuICovCisrCSAgICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJICAgIERJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAJICAgIGIgPSBpbnZzcXJ0cGkgKiB0ZW1wIC8gc3FydGwgKHgpOworKwkgICAgRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAJICB9CisgCWVsc2UKKyAJICB7CitAQCAtMzcyLDcgKzM4MywxNyBAQCBfX2llZWU3NTRfeW5sIChpbnQgbiwgbG9uZyBkb3VibGUgeCkKKyAJICAgIHRlbXAgPSBzICsgYzsKKyAJICAgIGJyZWFrOworIAkgIH0KKysJLyogV2l0aCBHQ0MgOCAoYW5kIG9sZGVyKSB3aGVuIGNvbXBpbGluZyB3aXRoIC1PIHRoZSBjb21waWxlcgorKwkgICB3YXJucyB0aGF0IHRoZSB2YXJpYWJsZSAndGVtcCcsIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuCisrCSAgIFRoZSBzd2l0Y2ggYWJvdmUgY292ZXJzIGFsbCBwb3NzaWJsZSB2YWx1ZXMgb2YgbiAmIDMKKysJICAgYnV0IEdDQyB3aXRob3V0IFZSUCBlbmFibGVkIGlzbid0IGFibGUgdG8gZmlndXJlIG91dCB0aGUKKysJICAgcmFuZ2Ugb2YgcG9zc2libGUgdmFsdWVzIGlzIFswLDNdIGFzIGV4cGxhaW5lZCBpbjoKKysJICAgaHR0cHM6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjkyMzAKKysJICAgc28gaXQncyBmYWxzZSBwb3NzaXRpdmUgd2l0aCAtTzEgYW5kIGxvd2VyLiAqLworKwlESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysJRElBR19JR05PUkVfTkVFRFNfQ09NTUVOVCAoOCwgIi1XbWF5YmUtdW5pbml0aWFsaXplZCIpOworIAliID0gaW52c3FydHBpICogdGVtcCAvIHNxcnRsICh4KTsKKysJRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKyAgICAgICB9CisgICAgIGVsc2UKKyAgICAgICB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzItc3lzZGVwcy1pZWVlNzU0LXNvZnQtZnAtaWdub3JlLW1heWJlLXVuaW5pdGlhbGl6ZWQtdy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMi1zeXNkZXBzLWllZWU3NTQtc29mdC1mcC1pZ25vcmUtbWF5YmUtdW5pbml0aWFsaXplZC13LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5Y2QyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzItc3lzZGVwcy1pZWVlNzU0LXNvZnQtZnAtaWdub3JlLW1heWJlLXVuaW5pdGlhbGl6ZWQtdy5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSA2MTg2Njg1NDBlMjYzYzA5YjBlYjI4MTMxZGRlN2I0NTAwMTU4ZmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBTZXAgMjAxOCAxMjozOToyMiArMDAwMAorU3ViamVjdDogW1BBVENIXSBzeXNkZXBzL2llZWU3NTQvc29mdC1mcDogaWdub3JlIG1heWJlLXVuaW5pdGlhbGl6ZWQgd2l0aCAtTworIFtCWiAjMTk0NDRdCisKKyogd2l0aCAtTywgLU8xLCAtT3MgaXQgZmFpbHMgd2l0aDoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NvZnQtZnAvc29mdC1mcC5oOjMxOCwKKyAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYzoyODoKKy4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOiBJbiBmdW5jdGlvbiAnX19mZGl2JzoKKy4uL3NvZnQtZnAvb3AtMi5oOjk4OjI1OiBlcnJvcjogJ1JfZjEnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorICAgICAgICBYIyNfZjAgPSAoWCMjX2YxIDw8IChfRlBfV19UWVBFX1NJWkUgLSAoTikpIHwgWCMjX2YwID4+IChOKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgXn4KKy4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOjM4OjE0OiBub3RlOiAnUl9mMScgd2FzIGRlY2xhcmVkIGhlcmUKKyAgIEZQX0RFQ0xfRCAoUik7CisgICAgICAgICAgICAgIF4KKy4uL3NvZnQtZnAvb3AtMi5oOjM3OjM2OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICdfRlBfRlJBQ19ERUNMXzInCisgICBfRlBfV19UWVBFIFgjI19mMCBfRlBfWkVST19JTklULCBYIyNfZjEgX0ZQX1pFUk9fSU5JVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLi4vc29mdC1mcC9kb3VibGUuaDo5NToyNDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdfRlBfREVDTCcKKyAjIGRlZmluZSBGUF9ERUNMX0QoWCkgIF9GUF9ERUNMICgyLCBYKQorICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KKy4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOjM4OjM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnRlBfREVDTF9EJworICAgRlBfREVDTF9EIChSKTsKKyAgIF5+fn5+fn5+fgorLi4vc29mdC1mcC9vcC0yLmg6MTAxOjE3OiBlcnJvcjogJ1JfZjAnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorICAgICAgIDogKFgjI19mMCA8PCAoX0ZQX1dfVFlQRV9TSVpFIC0gKE4pKSkgIT0gMCkpOyBcCisgICAgICAgICAgICAgICAgIF5+CisuLi9zeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYzozODoxNDogbm90ZTogJ1JfZjAnIHdhcyBkZWNsYXJlZCBoZXJlCisgICBGUF9ERUNMX0QgKFIpOworICAgICAgICAgICAgICBeCisuLi9zb2Z0LWZwL29wLTIuaDozNzoxNDogbm90ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAnX0ZQX0ZSQUNfREVDTF8yJworICAgX0ZQX1dfVFlQRSBYIyNfZjAgX0ZQX1pFUk9fSU5JVCwgWCMjX2YxIF9GUF9aRVJPX0lOSVQKKyAgICAgICAgICAgICAgXgorLi4vc29mdC1mcC9kb3VibGUuaDo5NToyNDogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdfRlBfREVDTCcKKyAjIGRlZmluZSBGUF9ERUNMX0QoWCkgIF9GUF9ERUNMICgyLCBYKQorICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KKy4uL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOjM4OjM6IG5vdGU6IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnRlBfREVDTF9EJworICAgRlBfREVDTF9EIChSKTsKKyAgIF5+fn5+fn5+fgorCitCdWlsZCB0ZXN0ZWQgd2l0aCBZb2N0byBmb3IgQVJNLCBBQVJDSDY0LCBYODYsIFg4Nl82NCwgUFBDLCBNSVBTLCBNSVBTNjQKK3dpdGggLU8sIC1PMSwgLU9zLgorRm9yIEFBUkNINjQgaXQgbmVlZHMgb25lIG1vcmUgZml4IGluIGxvY2FsZSBmb3IgLU9zLgorCisJUGFydGlhbCBmaXggZm9yIFtCWiAjMjM3MTZdCisJKiBzeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYzogRml4IGJ1aWxkIHdpdGggLU8KKworV29yayBhcm91bmQgdGhlIGlzc3VlIGluc3RlYWQgb2YgcmVtb3ZpbmcgLU8gbGlrZSB3ZSBkbyB3aXRoCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxOC0wOS9tc2cwMDMwMC5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKKyBzeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYyB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCitpbmRleCA5MjJlOTE2ZjJjLi4yMTYzMzZlZGM5IDEwMDY0NAorLS0tIGEvQ2hhbmdlTG9nCisrKysgYi9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsNyBAQAorKzIwMTgtMDktMzAgIE1hcnRpbiBKYW5zYSAgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CisrCVBhcnRpYWwgZml4IGZvciBbQlogIzIzNzE2XQorKwkqIHN5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jOiBGaXggYnVpbGQgd2l0aCAtTy4KKysKKyAyMDE4LTA5LTI5ICBNYXJ0aW4gSmFuc2EgIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorIAlQYXJ0aWFsIGZpeCBmb3IgW0JaICMyMzcxNl0KKyAJKiBzeXNkZXBzL2llZWU3NTQvZGJsLTk2L2Vfam5sLmM6IEZpeCBidWlsZCB3aXRoIC1PCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmMgYi9zeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYworaW5kZXggMzQxMzM5ZjVlZC4uMTQ2NTViNzdkYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9zb2Z0LWZwL3NfZmRpdi5jCisrKysgYi9zeXNkZXBzL2llZWU3NTQvc29mdC1mcC9zX2ZkaXYuYworQEAgLTI1LDYgKzI1LDE2IEBACisgI3VuZGVmIGZkaXZsCisgCisgI2luY2x1ZGUgPG1hdGgtbmFycm93Lmg+CisrCisrI2luY2x1ZGUgPGxpYmMtZGlhZy5oPgorKy8qIFJfZlswMV0gYXJlIG5vdCBzZXQgaW4gY2FzZXMgd2hlcmUgaXQgaXMgbm90IHVzZWQgaW4gcGFja2luZywgYnV0IHRoZQorKyAgIGNvbXBpbGVyIGRvZXMgbm90IHNlZSB0aGF0IGl0IGlzIHNldCBpbiBhbGwgY2FzZXMgd2hlcmUgaXQgaXMKKysgICB1c2VkLCByZXN1bHRpbmcgaW4gd2FybmluZ3MgdGhhdCBpdCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKyAgIFRoZSBsb2NhdGlvbiBvZiB0aGUgd2FybmluZyBkaWZmZXJzIGluIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBHQ0MsCisrICAgaXQgbWF5IGJlIHdoZXJlIFIgaXMgZGVmaW5lZCB1c2luZyBhIG1hY3JvIG9yIGl0IG1heSBiZSB3aGVyZSB0aGUKKysgICBtYWNybyBpcyBkZWZpbmVkLiAgKi8KKytESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKytESUFHX0lHTk9SRV9ORUVEU19DT01NRU5UICg4LCAiLVdtYXliZS11bmluaXRpYWxpemVkIik7CisgI2luY2x1ZGUgPHNvZnQtZnAuaD4KKyAjaW5jbHVkZSA8c2luZ2xlLmg+CisgI2luY2x1ZGUgPGRvdWJsZS5oPgorQEAgLTUzLDQgKzYzLDYgQEAgX19mZGl2IChkb3VibGUgeCwgZG91YmxlIHkpCisgICBDSEVDS19OQVJST1dfRElWIChyZXQsIHgsIHkpOworICAgcmV0dXJuIHJldDsKKyB9CisrRElBR19QT1BfTkVFRFNfQ09NTUVOVDsKKysKKyBsaWJtX2FsaWFzX2Zsb2F0X2RvdWJsZSAoZGl2KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMzLWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzMtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTA1OGNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDMzLWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBjYmFkYTFhMWIyMThjMWVmNjFkMGViNDM2M2ZhZDc1OThlNjUwOWQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorRGF0ZTogU3VuLCAzMCBTZXAgMjAxOCAwOToxNjo0OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGU6IHByZXZlbnQgbWF5YmUtdW5pbml0aWFsaXplZCBlcnJvcnMgd2l0aCAtT3MgW0JaCisgIzE5NDQ0XQorCitGaXhlcyBmb2xsb3dpbmcgZXJyb3Igd2hlbiBidWlsZGluZyBmb3IgYWFyY2g2NCB3aXRoIC1PczoKK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgorfCBzdHJjb2xsX2wuYzogSW4gZnVuY3Rpb24gJ19fc3RyY29sbF9sJzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTIuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjE4OiBub3RlOiAnc2VxMi5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICAgICAgICBefn5+Cit8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBzdHJjb2xsX2wuYzo0MzoKK3wgLi4vbG9jYWxlL3dlaWdodC5oOjMxOjI2OiBlcnJvcjogJ3NlcTEuYmFja191cycgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KK3wgc3RyY29sbF9sLmM6MzA0OjEyOiBub3RlOiAnc2VxMS5iYWNrX3VzJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICBjb2xsX3NlcSBzZXExLCBzZXEyOworfCAgICAgICAgICAgICBefn5+CisKKyAgICAgICAgUGFydGlhbCBmaXggZm9yIFtCWiAjMjM3MTZdCisgICAgICAgICogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCisKK1dvcmsgYXJvdW5kIHRoZSBpc3N1ZSBpbnN0ZWFkIG9mIHJlbW92aW5nIC1PIGxpa2Ugd2UgZG8gd2l0aAorU0VMRUNURURfT1BUSU1JWkFUSU9OCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3d3dy5zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTgtMDkvbXNnMDA1MzkuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgIHwgNCArKysrCisgbG9jYWxlL3dlaWdodC5oIHwgNyArKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDIxNjMzNmVkYzkuLjg0ZmJiZjQ3ZWQgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsMyArMSw3IEBACisrMjAxOC0wOS0zMCAgTWFydGluIEphbnNhICA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKysJUGFydGlhbCBmaXggZm9yIFtCWiAjMjM3MTZdCisrCSogbG9jYWxlL3dlaWdodC5oOiBGaXggYnVpbGQgd2l0aCAtT3MuCisrCisgMjAxOC0wOS0zMCAgTWFydGluIEphbnNhICA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KKyAJUGFydGlhbCBmaXggZm9yIFtCWiAjMjM3MTZdCisgCSogc3lzZGVwcy9pZWVlNzU0L3NvZnQtZnAvc19mZGl2LmM6IEZpeCBidWlsZCB3aXRoIC1PLgorZGlmZiAtLWdpdCBhL2xvY2FsZS93ZWlnaHQuaCBiL2xvY2FsZS93ZWlnaHQuaAoraW5kZXggNjAyOGQzNTk1ZS4uMTBiY2VhMjVlNSAxMDA2NDQKKy0tLSBhL2xvY2FsZS93ZWlnaHQuaAorKysrIGIvbG9jYWxlL3dlaWdodC5oCitAQCAtMjgsNyArMjgsMTQgQEAgZmluZGlkeCAoY29uc3QgaW50MzJfdCAqdGFibGUsCisgCSBjb25zdCB1bnNpZ25lZCBjaGFyICpleHRyYSwKKyAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipjcHAsIHNpemVfdCBsZW4pCisgeworKyAgLyogV2l0aCBHQ0MgOCB3aGVuIGNvbXBpbGluZyB3aXRoIC1PcyB0aGUgY29tcGlsZXIgd2FybnMgdGhhdAorKyAgICAgc2VxMS5iYWNrX3VzIGFuZCBzZXEyLmJhY2tfdXMgbWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKyAgICAgVGhpcyB1bmluaXRpYWxpemVkIHVzZSBpcyBpbXBvc3NpYmxlIGZvciB0aGUgc2FtZSByZWFzb24KKysgICAgIGFzIGRlc2NyaWJlZCBpbiBjb21tZW50cyBpbiBsb2NhbGUvd2VpZ2h0d2MuaC4gICovCisrICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysgIERJQUdfSUdOT1JFX09zX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKKysgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjcDsKKyAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzcmM7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzQtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzNC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZWJhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzQtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaApAQCAtMCwwICsxLDI3MiBAQAorQ3VycmVudGx5LCBub24tSUEgYnVpbGRzIGFyZSBub3QgcmVwcm9kdWNpYmlsZSBzaW5jZSBidWlsZCBwYXRocyBhcmUgCitiZWluZyBpbmplY3RlZCBpbnRvIHRoZSBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgY29taW5nIGZyb20gdGhlIHVzZSBvZgorLlMgYXNzZW1ibGVyIGZpbGVzIGR1cmluZyB0aGUgZ2xpYmMgYnVpbGQuIE5vIFNUVF9GSUxFIHNlY3Rpb24gaXMgYWRkZWQKK2R1cmluZyB0aGUgYXNzZW1ibHkgYnV0IHdoZW4gbGlua2luZywgbGQgZGVjaWRlcyB0byBhZGQgb25lIHRvIGFpZCAKK2RlYnVnZ2luZyBhbmQgZW5zdXJlIHJlZmVyZW5jZXMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IG9iamVjdCBmaWxlcyBpdHMKK2xpbmtpbmcgcmVtYWluIGNsZWFyLgorCitXZSBjYW4gYXZvaWQgdGhpcyBieSBpbmplY3RpbmcgYSBmaWxlIGhlYWRlciBpbnRvIHRoZSBhc3NlbWJsZXIgZmlsZXMKK2FoZWFkIG9mIHRpbWUsIGNob29zaW5nIGEgZmlsZW5hbWUgd2hpY2ggZG9lcyBub3QgY29udGFpbiBidWlsZCBzeXN0ZW0KK3BhdGhzLgorCitUaGlzIGlzIGEgYml0IG9mIGEgd29ya2Fyb3VuZC9oYWNrIGJ1dCBkb2VzIHNpZ25pZmljYW50bHkgcmVkdWNlIHRoZQorYnVpbGQgc3lzdGVtIHJlZmVyZW5jZXMgaW4gdGFyZ2V0IGJpbmFyaWVzIGZvciB0aGUgbm9uLUlBIGFyY2hpdGVjdHVyZXMKK3doaWNoIHVzZSAuUyBmaWxlcy4KKworUlAKKzIwMTgvMTAvMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworZGlmZiAtLWdpdCBhL2NzdS9hYmktbm90ZS5TIGIvY3N1L2FiaS1ub3RlLlMKK2luZGV4IDVkMGNhNzgwM2QuLjhjZTQxNTgxYjEgMTAwNjQ0CistLS0gYS9jc3UvYWJpLW5vdGUuUworKysrIGIvY3N1L2FiaS1ub3RlLlMKK0BAIC01Niw2ICs1Niw4IEBAIG9mZnNldAlsZW5ndGgJY29udGVudHMKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2luY2x1ZGUgPGFiaS10YWcuaD4JCS8qIE9TLXNwZWNpZmljIEFCSSB0YWcgdmFsdWUgKi8KKyAKKysJLmZpbGUgImFiaS1ub3RlLlMiCisrCisgLyogVGhlIGxpbmtlciAoR05VIGxkIDIuOCBhbmQgbGF0ZXIpIHJlY29nbml6ZXMgYW4gYWxsb2NhdGVkIHNlY3Rpb24gd2hvc2UKKyAgICBuYW1lIGJlZ2lucyB3aXRoIGAubm90ZScgYW5kIGNyZWF0ZXMgYSBQVF9OT1RFIHByb2dyYW0gaGVhZGVyIGVudHJ5CisgICAgcG9pbnRpbmcgYXQgaXQuICovCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKK2luZGV4IDJiMjEzNzU4YjIuLjczNmYzM2UzMTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCitAQCAtNTAsNiArNTAsOCBAQAorICMgZGVmaW5lIFBSRUlOSVRfRlVOQ1RJT05fV0VBSyAxCisgI2VuZGlmCisgCisrICAgIC5maWxlICJjcnRpLlMiCisrCisgI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSworIAl3ZWFrX2V4dGVybiAoUFJFSU5JVF9GVU5DVElPTikKKyAjZWxzZQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCitpbmRleCBkNzIzMDBhZjgwLi5jYjI0OWJmM2NhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworQEAgLTM3LDYgKzM3LDggQEAKKyAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucworICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCisgCisrCS5maWxlICJjcnRuLlMiCisrCisgCS5zZWN0aW9uIC5pbml0LCJheCIsJXByb2diaXRzCisgCWxkcAl4MjksIHgzMCwgW3NwXSwgMTYKKyAJUkVUCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUworaW5kZXggYmFkMDAwZjU1NS4uNTk1N2MwMjhjZCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBlbnRyeSBwb2ludCwgdXN1YWxseSB0aGUgZmlyc3QgdGhpbmcgaW4gdGhlIHRleHQKKyAgICBzZWdtZW50LgorIAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCitpbmRleCA5MmZjMDE5MWE1Li43MTViZmNiOWU0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUworQEAgLTE4LDYgKzE4LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJfX3JlYWRfdHAuUyIKKysKKyAJLmhpZGRlbiBfX3JlYWRfdHAKKyBFTlRSWSAoX19yZWFkX3RwKQorIAltcnMJeDAsIHRwaWRyX2VsMAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCitpbmRleCA0M2E2MmVmMzA3Li40MmY4NWNkZGU5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUworQEAgLTIyLDYgKzIyLDggQEAKKyAjaW5jbHVkZSA8dGxzLmg+CisgI2luY2x1ZGUgInRsc2Rlc2MuaCIKKyAKKysJLmZpbGUgImRsLXRsc2Rlc2MuUyIKKysKKyAjZGVmaW5lIE5TQVZFRFFSRUdQQUlSUwkxNgorICNkZWZpbmUgU0FWRV9RX1JFR0lTVEVSUwkJCQlcCisgCXN0cAlxMCwgcTEsCVtzcCwgIy0zMipOU0FWRURRUkVHUEFJUlNdITsJXAorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCitpbmRleCBhODZkMDcyMmQ0Li45MmVkYWIxZDAxIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUworQEAgLTIxLDYgKzIxLDggQEAKKyAKKyAjaW5jbHVkZSAiZGwtbGluay5oIgorIAorKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgorKworICNkZWZpbmUgaXAwIHgxNgorICNkZWZpbmUgaXAwbCBQVFJfUkVHICgxNikKKyAjZGVmaW5lIGlwMSB4MTcKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworaW5kZXggMDdiZDRjNDYxOS4uNzIxM2IxNmYyNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKKysrKyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKK0BAIC0xLDMgKzEsNSBAQAorKwkuZmlsZSAiYWJpLW5vdGUuUyIKKysKKyAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCisgICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLworIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRpLlMgYi9zeXNkZXBzL2FybS9jcnRpLlMKK2luZGV4IGExNDI0ZDAzMzMuLmJjYTFkYWIyNTYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jcnRpLlMKKysrKyBiL3N5c2RlcHMvYXJtL2NydGkuUworQEAgLTU3LDYgKzU3LDggQEAKKyAJLmhpZGRlbiBQUkVJTklUX0ZVTkNUSU9OCisgI2VuZGlmCisgCisrICAgIC5maWxlICJjcnRpLlMiCisrCisgI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSworIAkucDJhbGlnbiAyCisgCS50eXBlIGNhbGxfd2Vha19mbiwgJWZ1bmN0aW9uCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0bi5TIGIvc3lzZGVwcy9hcm0vY3J0bi5TCitpbmRleCAyNjAyNzY5M2NlLi42NWEwNTAyODI2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY3J0bi5TCisrKysgYi9zeXNkZXBzL2FybS9jcnRuLlMKK0BAIC0zNyw2ICszNyw4IEBACisgI2RlZmluZSBOT19USFVNQgorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysgICAgLmZpbGUgImNydG4uUyIKKysKKyAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucworICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCitpbmRleCAwNTZlMTdkNTJkLi5hOThjNjhkZmI5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCisrKysgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKK0BAIC0yMSw2ICsyMSw4IEBACisgI2luY2x1ZGUgPHRscy5oPgorICNpbmNsdWRlICJ0bHNkZXNjLmgiCisgCisrCS5maWxlICJkbC10bHNkZXNjLlMiCisrCisgCS50ZXh0CisgCUAgZW1pdCBkZWJ1ZyBpbmZvcm1hdGlvbiB3aXRoIGNmaQorIAlAIHVzZSBhcm0tc3BlY2lmaWMgcHNldWRvcyBmb3IgdW53aW5kaW5nIGl0c2VsZgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworaW5kZXggYzczMWIwMTI4Ni4uNGIzN2IyNTM0NCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworKysrIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCitAQCAtMjEsNiArMjEsOCBAQAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAjaW5jbHVkZSA8bGliYy1zeW1ib2xzLmg+CisgCisrCS5maWxlICJkbC10cmFtcG9saW5lLlMiCisrCisgCS50ZXh0CisgCS5nbG9ibCBfZGxfcnVudGltZV9yZXNvbHZlCisgCS50eXBlIF9kbF9ydW50aW1lX3Jlc29sdmUsICNmdW5jdGlvbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMgYi9zeXNkZXBzL2FybS9zdGFydC5TCitpbmRleCBhZGVmMDkwNzE3Li5kMjJlNDEyOGUwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vc3RhcnQuUworKysrIGIvc3lzZGVwcy9hcm0vc3RhcnQuUworQEAgLTU3LDYgKzU3LDggQEAKKyAJCQkJCU5VTEwKKyAqLworIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCisgICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLworIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworaW5kZXggODcxNzAyMzE3YS4uMjBhOTQyZGJhYyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKK0BAIC0zOSw2ICszOSw4IEBACisgICAgYSBub3JtYWwgZnVuY3Rpb24gY2FsbCkgaW4gYSBoaWdoIHBhZ2Ugb2YgbWVtb3J5OyB0YWlsIGNhbGwgdG8gdGhlCisgICAgaGVscGVyLiAgKi8KKyAKKysJLmZpbGUgImFlYWJpX3JlYWRfdHAuUyIKKysKKyAJLmhpZGRlbiBfX2FlYWJpX3JlYWRfdHAKKyBFTlRSWSAoX19hZWFiaV9yZWFkX3RwKQorICNpZmRlZiBBUkNIX0hBU19IQVJEX1RQCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworaW5kZXggYTRjNGVmMGZhZS4uZDAwZmZmMzFhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9zdGFydC5TCisrKysgYi9zeXNkZXBzL21pcHMvc3RhcnQuUworQEAgLTM4LDYgKzM4LDggQEAKKyAjaW5jbHVkZSA8c2dpZGVmcy5oPgorICNpbmNsdWRlIDxzeXMvYXNtLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworICNpZm5kZWYgRU5UUllfUE9JTlQKKyAjZXJyb3IgRU5UUllfUE9JTlQgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3Igc3RhcnQuUyBvbiBNSVBTL0VMRi4KKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworaW5kZXggZWViOTY1NDRlMy4uZGExODJiMjhmOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKK0BAIC0xICsxLDMgQEAKKysJLmZpbGUgImRsLWJyay5TIgorKworICNpbmNsdWRlIDxicmsuUz4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKK2luZGV4IDVjMTBhMjJmOGEuLjJiNTI2MjdmMjcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUworQEAgLTM1LDYgKzM1LDggQEAKKyAKKyAjaW5jbHVkZSA8c3lzZGVwLmg+CisgCisrCS5maWxlICJzdGFydC5TIgorKworIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAorICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLworICN1bmRlZiBjZmlfc3RhcnRwcm9jCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCitpbmRleCBiZDcxODkzMTBjLi4yZTIyYjg0NzJkIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKK0BAIC0zNSw2ICszNSw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKKyAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KKyAjdW5kZWYgY2ZpX3N0YXJ0cHJvYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworaW5kZXggMjQ0ZDg3ZmI2ZC4uMTRkM2UyY2UxNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgImRsLXN0YXJ0LlMiCisrCisgLyogSW5pdGlhbCBlbnRyeSBwb2ludCBjb2RlIGZvciB0aGUgZHluYW1pYyBsaW5rZXIuCisgICAgVGhlIEMgZnVuY3Rpb24gYF9kbF9zdGFydCcgaXMgdGhlIHJlYWwgZW50cnkgcG9pbnQ7CisgICAgaXRzIHJldHVybiB2YWx1ZSBpcyB0aGUgdXNlciBwcm9ncmFtJ3MgZW50cnkgcG9pbnQuCSovCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCitpbmRleCBkMjZhZDFmOGQzLi5hMGRlMTBiZjgxIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKK0BAIC0yNyw2ICsyNyw4IEBACisgICAgQVJNIHVud2luZCB0YWJsZXMgZm9yIHJlZ2lzdGVyIHRvIHJlZ2lzdGVyIG1vdmVzLCB0aGUgYWN0dWFsIG9wY29kZXMKKyAgICBhcmUgbm90IGRlZmluZWQuICAqLworIAorKyAgICAgIC5maWxlICJsaWJjLWRvLXN5c2NhbGwuUyIKKysKKyAjaWYgZGVmaW5lZChfX3RodW1iX18pCisgCS50aHVtYgorIAkuc3ludGF4IHVuaWZpZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTgyNjkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE4MjY5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODczYzUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTgyNjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotRnJvbSBjZDY2YzBlNTg0YzZkNjkyYmM4MzQ3YjVlNzI3MjNkMDJiOGE4YWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmV3IFNlbmtldmljaCA8YW5kcmV3Lm4uc2Vua2V2aWNoQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgTWFyIDIwMTggMTY6MTk6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGkzODYgbWVtbW92ZSBpc3N1ZSAoYnVnIDIyNjQ0KS4KLQotCVtCWiAjMjI2NDRdCi0JKiBzeXNkZXBzL2kzODYvaTY4Ni9tdWx0aWFyY2gvbWVtY3B5LXNzZTItdW5hbGlnbmVkLlM6IEZpeGVkCi0JYnJhbmNoIGNvbmRpdGlvbnMuCi0JKiBzdHJpbmcvdGVzdC1tZW1tb3ZlLmMgKGRvX3Rlc3QyKTogTmV3IHRlc3RjYXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE4MjY5Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysKLSBzdHJpbmcvdGVzdC1tZW1tb3ZlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysKLSAuLi4vaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUyAgICB8IDEyICsrLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCAxOGVkMDllLi5hZmRiNzY2IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE4LTAzLTIzICBBbmRyZXcgU2Vua2V2aWNoICA8YW5kcmV3LnNlbmtldmljaEBpbnRlbC5jb20+Ci0rCSAgICBNYXggSG9ybiAgPG1heEBxdWVuZGkuZGU+Ci0rCi0rCVtCWiAjMjI2NDRdCi0rCSogc3lzZGVwcy9pMzg2L2k2ODYvbXVsdGlhcmNoL21lbWNweS1zc2UyLXVuYWxpZ25lZC5TOiBGaXhlZAotKwlicmFuY2ggY29uZGl0aW9ucy4KLSsJKiBzdHJpbmcvdGVzdC1tZW1tb3ZlLmMgKGRvX3Rlc3QyKTogTmV3IHRlc3RjYXNlLgotKwotIDIwMTgtMDItMjIgIEFuZHJldyBXYXRlcm1hbiA8YW5kcmV3QHNpZml2ZS5jb20+Ci0gCi0gCVtCWiAjIDIyODg0XQotZGlmZiAtLWdpdCBhL3N0cmluZy90ZXN0LW1lbW1vdmUuYyBiL3N0cmluZy90ZXN0LW1lbW1vdmUuYwotaW5kZXggZWRjN2E0Yy4uNjRlMzY1MSAxMDA2NDQKLS0tLSBhL3N0cmluZy90ZXN0LW1lbW1vdmUuYwotKysrIGIvc3RyaW5nL3Rlc3QtbWVtbW92ZS5jCi1AQCAtMjQsNiArMjQsNyBAQAotICMgZGVmaW5lIFRFU1RfTkFNRSAibWVtbW92ZSIKLSAjZW5kaWYKLSAjaW5jbHVkZSAidGVzdC1zdHJpbmcuaCIKLSsjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5oPgotIAotIGNoYXIgKnNpbXBsZV9tZW1tb3ZlIChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKLSAKLUBAIC0yNDUsNiArMjQ2LDYwIEBAIGRvX3JhbmRvbV90ZXN0cyAodm9pZCkKLSAgICAgfQotIH0KLSAKLStzdGF0aWMgdm9pZAotK2RvX3Rlc3QyICh2b2lkKQotK3sKLSsgIHNpemVfdCBzaXplID0gMHgyMDAwMDAwMDsKLSsgIHVpbnQzMl90ICogbGFyZ2VfYnVmOwotKwotKyAgbGFyZ2VfYnVmID0gbW1hcCAoKHZvaWQqKSAweDcwMDAwMDAwLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAotKwkJICAgIE1BUF9QUklWQVRFIHwgTUFQX0FOT04sIC0xLCAwKTsKLSsKLSsgIGlmIChsYXJnZV9idWYgPT0gTUFQX0ZBSUxFRCkKLSsgICAgZXJyb3IgKEVYSVRfVU5TVVBQT1JURUQsIGVycm5vLCAiTGFyZ2UgbW1hcCBmYWlsZWQiKTsKLSsKLSsgIGlmICgodWludHB0cl90KSBsYXJnZV9idWYgPiAweDgwMDAwMDAwIC0gMTI4Ci0rICAgICAgfHwgMHg4MDAwMDAwMCAtICh1aW50cHRyX3QpIGxhcmdlX2J1ZiA+IDB4MjAwMDAwMDApCi0rICAgIHsKLSsgICAgICBlcnJvciAoMCwgMCwgIkxhcmdlIG1tYXAgYWxsb2NhdGVkIGltcHJvcGVybHkiKTsKLSsgICAgICByZXQgPSBFWElUX1VOU1VQUE9SVEVEOwotKyAgICAgIG11bm1hcCAoKHZvaWQgKikgbGFyZ2VfYnVmLCBzaXplKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIHNpemVfdCBieXRlc19tb3ZlID0gMHg4MDAwMDAwMCAtICh1aW50cHRyX3QpIGxhcmdlX2J1ZjsKLSsgIHNpemVfdCBhcnJfc2l6ZSA9IGJ5dGVzX21vdmUgLyBzaXplb2YgKHVpbnQzMl90KTsKLSsgIHNpemVfdCBpOwotKwotKyAgRk9SX0VBQ0hfSU1QTCAoaW1wbCwgMCkKLSsgICAgewotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJfc2l6ZTsgaSsrKQotKyAgICAgICAgbGFyZ2VfYnVmW2ldID0gKHVpbnQzMl90KSBpOwotKwotKyAgICAgIHVpbnQzMl90ICogZHN0ID0gJmxhcmdlX2J1ZlszM107Ci0rCi0rI2lmZGVmIFRFU1RfQkNPUFkKLSsgICAgICBDQUxMIChpbXBsLCAoY2hhciAqKSBsYXJnZV9idWYsIChjaGFyICopIGRzdCwgYnl0ZXNfbW92ZSk7Ci0rI2Vsc2UKLSsgICAgICBDQUxMIChpbXBsLCAoY2hhciAqKSBkc3QsIChjaGFyICopIGxhcmdlX2J1ZiwgYnl0ZXNfbW92ZSk7Ci0rI2VuZGlmCi0rCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGFycl9zaXplOyBpKyspCi0rCXsKLSsJICBpZiAoZHN0W2ldICE9ICh1aW50MzJfdCkgaSkKLSsJICAgIHsKLSsJICAgICAgZXJyb3IgKDAsIDAsCi0rCQkgICAgICJXcm9uZyByZXN1bHQgaW4gZnVuY3Rpb24gJXMgZHN0IFwiJXBcIiBzcmMgXCIlcFwiIG9mZnNldCBcIiV6ZFwiIiwKLSsJCSAgICAgaW1wbC0+bmFtZSwgZHN0LCBsYXJnZV9idWYsIGkpOwotKwkgICAgICByZXQgPSAxOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICBtdW5tYXAgKCh2b2lkICopIGxhcmdlX2J1Ziwgc2l6ZSk7Ci0rfQotKwotIGludAotIHRlc3RfbWFpbiAodm9pZCkKLSB7Ci1AQCAtMjg0LDYgKzMzOSw5IEBAIHRlc3RfbWFpbiAodm9pZCkKLSAgICAgfQotIAotICAgZG9fcmFuZG9tX3Rlc3RzICgpOwotKwotKyAgZG9fdGVzdDIgKCk7Ci0rCi0gICByZXR1cm4gcmV0OwotIH0KLSAKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2kzODYvaTY4Ni9tdWx0aWFyY2gvbWVtY3B5LXNzZTItdW5hbGlnbmVkLlMgYi9zeXNkZXBzL2kzODYvaTY4Ni9tdWx0aWFyY2gvbWVtY3B5LXNzZTItdW5hbGlnbmVkLlMKLWluZGV4IDljM2JiZTcuLjlhYTE3ZGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2kzODYvaTY4Ni9tdWx0aWFyY2gvbWVtY3B5LXNzZTItdW5hbGlnbmVkLlMKLSsrKyBiL3N5c2RlcHMvaTM4Ni9pNjg2L211bHRpYXJjaC9tZW1jcHktc3NlMi11bmFsaWduZWQuUwotQEAgLTcyLDcgKzcyLDcgQEAgRU5UUlkgKE1FTUNQWSkKLSAJY21wCSVlZHgsICVlYXgKLSAKLSAjIGlmZGVmIFVTRV9BU19NRU1NT1ZFCi0tCWpnCUwoY2hlY2tfZm9yd2FyZCkKLSsJamEJTChjaGVja19mb3J3YXJkKQotIAotIEwobW1fbGVuXzBfb3JfbW9yZV9iYWNrd2FyZCk6Ci0gLyogTm93IGRvIGNoZWNrcyBmb3IgbGVuZ3Rocy4gV2UgZG8gWzAuLjE2XSwgWzE2Li4zMl0sIFszMi4uNjRdLCBbNjQuLjEyOF0KLUBAIC04MSw3ICs4MSw3IEBAIEwobW1fbGVuXzBfb3JfbW9yZV9iYWNrd2FyZCk6Ci0gCWpiZQlMKG1tX2xlbl8wXzE2X2J5dGVzX2JhY2t3YXJkKQotIAotIAljbXBsCSQzMiwgJWVjeAotLQlqZwlMKG1tX2xlbl8zMl9vcl9tb3JlX2JhY2t3YXJkKQotKwlqYQlMKG1tX2xlbl8zMl9vcl9tb3JlX2JhY2t3YXJkKQotIAotIC8qIENvcHkgWzAuLjMyXSBhbmQgcmV0dXJuLiAgKi8KLSAJbW92ZHF1CSglZWF4KSwgJXhtbTAKLUBAIC05Miw3ICs5Miw3IEBAIEwobW1fbGVuXzBfb3JfbW9yZV9iYWNrd2FyZCk6Ci0gCi0gTChtbV9sZW5fMzJfb3JfbW9yZV9iYWNrd2FyZCk6Ci0gCWNtcGwJJDY0LCAlZWN4Ci0tCWpnCUwobW1fbGVuXzY0X29yX21vcmVfYmFja3dhcmQpCi0rCWphCUwobW1fbGVuXzY0X29yX21vcmVfYmFja3dhcmQpCi0gCi0gLyogQ29weSBbMC4uNjRdIGFuZCByZXR1cm4uICAqLwotIAltb3ZkcXUJKCVlYXgpLCAleG1tMAotQEAgLTEwNyw3ICsxMDcsNyBAQCBMKG1tX2xlbl8zMl9vcl9tb3JlX2JhY2t3YXJkKToKLSAKLSBMKG1tX2xlbl82NF9vcl9tb3JlX2JhY2t3YXJkKToKLSAJY21wbAkkMTI4LCAlZWN4Ci0tCWpnCUwobW1fbGVuXzEyOF9vcl9tb3JlX2JhY2t3YXJkKQotKwlqYQlMKG1tX2xlbl8xMjhfb3JfbW9yZV9iYWNrd2FyZCkKLSAKLSAvKiBDb3B5IFswLi4xMjhdIGFuZCByZXR1cm4uICAqLwotIAltb3ZkcXUJKCVlYXgpLCAleG1tMAotQEAgLTEzMiw3ICsxMzIsNyBAQCBMKG1tX2xlbl8xMjhfb3JfbW9yZV9iYWNrd2FyZCk6Ci0gCWFkZAklZWN4LCAlZWF4Ci0gCWNtcAklZWR4LCAlZWF4Ci0gCW1vdmwJU1JDKCVlc3ApLCAlZWF4Ci0tCWpsZQlMKGZvcndhcmQpCi0rCWpiZQlMKGZvcndhcmQpCi0gCVBVU0ggKCVlc2kpCi0gCVBVU0ggKCVlZGkpCi0gCVBVU0ggKCVlYngpCi1AQCAtMjY5LDcgKzI2OSw3IEBAIEwoY2hlY2tfZm9yd2FyZCk6Ci0gCWFkZAklZWR4LCAlZWN4Ci0gCWNtcAklZWF4LCAlZWN4Ci0gCW1vdmwJTEVOKCVlc3ApLCAlZWN4Ci0tCWpsZQlMKGZvcndhcmQpCi0rCWpiZQlMKGZvcndhcmQpCi0gCi0gLyogTm93IGRvIGNoZWNrcyBmb3IgbGVuZ3Rocy4gV2UgZG8gWzAuLjE2XSwgWzAuLjMyXSwgWzAuLjY0XSwgWzAuLjEyOF0KLSAJc2VwYXJhdGVseS4gICovCi0tLSAKLTIuOS4zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE4LTExMjM2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxOC0xMTIzNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJiYjQwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE4LTExMjM2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLUZyb20gNTQ2MDYxN2QxNTY3NjU3NjIxMTA3ZDg5NWVlMmRkODNiYzFmODhmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgUGx1emhuaWtvdiA8cHBsdXpobmlrb3ZAZ29vZ2xlLmNvbT4KLURhdGU6IFR1ZSwgOCBNYXkgMjAxOCAxODoxMjo0MSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBGaXggQlogMjI3ODY6IGludGVnZXIgYWRkaXRpb24gb3ZlcmZsb3cgbWF5IGNhdXNlIHN0YWNrCi0gYnVmZmVyIG92ZXJmbG93IHdoZW4gcmVhbHBhdGgoKSBpbnB1dCBsZW5ndGggaXMgY2xvc2UgdG8gU1NJWkVfTUFYLgotCi0yMDE4LTA1LTA5ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotCi0JW0JaICMyMjc4Nl0KLQkqIHN0ZGxpYi9jYW5vbmljYWxpemUuYyAoX19yZWFscGF0aCk6IEZpeCBvdmVyZmxvdyBpbiBwYXRoIGxlbmd0aAotCWNvbXB1dGF0aW9uLgotCSogc3RkbGliL01ha2VmaWxlICh0ZXN0LWJ6MjI3ODYpOiBOZXcgdGVzdC4KLQkqIHN0ZGxpYi90ZXN0LWJ6MjI3ODYuYzogTmV3IHRlc3QuCi0KLUNWRTogQ1ZFLTIwMTgtMTEyMzYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgfCAgOCArKysrKwotIHN0ZGxpYi9NYWtlZmlsZSAgICAgICB8ICAyICstCi0gc3RkbGliL2Nhbm9uaWNhbGl6ZS5jIHwgIDIgKy0KLSBzdGRsaWIvdGVzdC1iejIyNzg2LmMgfCA5MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzdGRsaWIvdGVzdC1iejIyNzg2LmMKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE4LTA1LTA5ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwotKwlbQlogIzIyNzg2XQotKwkqIHN0ZGxpYi9jYW5vbmljYWxpemUuYyAoX19yZWFscGF0aCk6IEZpeCBvdmVyZmxvdyBpbiBwYXRoIGxlbmd0aAotKwljb21wdXRhdGlvbi4KLSsJKiBzdGRsaWIvTWFrZWZpbGUgKHRlc3QtYnoyMjc4Nik6IE5ldyB0ZXN0LgotKwkqIHN0ZGxpYi90ZXN0LWJ6MjI3ODYuYzogTmV3IHRlc3QuCi0rCi0gMjAxOC0wMy0yMyAgQW5kcmV3IFNlbmtldmljaCAgPGFuZHJldy5zZW5rZXZpY2hAaW50ZWwuY29tPgotIAkgICAgTWF4IEhvcm4gIDxtYXhAcXVlbmRpLmRlPgotIAotZGlmZiAtLWdpdCBhL3N0ZGxpYi9NYWtlZmlsZSBiL3N0ZGxpYi9NYWtlZmlsZQotaW5kZXggYWYxNjQzYy4uMWRkYjFmOSAxMDA2NDQKLS0tLSBhL3N0ZGxpYi9NYWtlZmlsZQotKysrIGIvc3RkbGliL01ha2VmaWxlCi1AQCAtODQsNyArODQsNyBAQCB0ZXN0cwkJOj0gdHN0LXN0cnRvbCB0c3Qtc3RydG9kIHRlc3RtYiB0ZXN0cmFuZCB0ZXN0c29ydCB0ZXN0ZGl2ICAgXAotIAkJICAgdHN0LWN4YV9hdGV4aXQgdHN0LW9uX2V4aXQgdGVzdC1hdGV4aXQtcmFjZSAJCSAgICBcCi0gCQkgICB0ZXN0LWF0X3F1aWNrX2V4aXQtcmFjZSB0ZXN0LWN4YV9hdGV4aXQtcmFjZSAgICAgICAgICAgICBcCi0gCQkgICB0ZXN0LW9uX2V4aXQtcmFjZSB0ZXN0LWRsY2xvc2UtZXhpdC1yYWNlIAkJICAgIFwKLS0JCSAgIHRzdC1tYWtlY29udGV4dC1hbGlnbgotKwkJICAgdHN0LW1ha2Vjb250ZXh0LWFsaWduIHRlc3QtYnoyMjc4NgotIAotIHRlc3RzLWludGVybmFsCTo9IHRzdC1zdHJ0b2QxaSB0c3Qtc3RydG9kMyB0c3Qtc3RydG9kNCB0c3Qtc3RydG9kNWkgXAotIAkJICAgdHN0LXRscy1hdGV4aXQgdHN0LXRscy1hdGV4aXQtbm9kZWxldGUKLWRpZmYgLS1naXQgYS9zdGRsaWIvY2Fub25pY2FsaXplLmMgYi9zdGRsaWIvY2Fub25pY2FsaXplLmMKLWluZGV4IDQxMzVmM2YuLjM5MGZiNDMgMTAwNjQ0Ci0tLS0gYS9zdGRsaWIvY2Fub25pY2FsaXplLmMKLSsrKyBiL3N0ZGxpYi9jYW5vbmljYWxpemUuYwotQEAgLTE4MSw3ICsxODEsNyBAQCBfX3JlYWxwYXRoIChjb25zdCBjaGFyICpuYW1lLCBjaGFyICpyZXNvbHZlZCkKLSAJCWV4dHJhX2J1ZiA9IF9fYWxsb2NhIChwYXRoX21heCk7Ci0gCi0gCSAgICAgIGxlbiA9IHN0cmxlbiAoZW5kKTsKLS0JICAgICAgaWYgKChsb25nIGludCkgKG4gKyBsZW4pID49IHBhdGhfbWF4KQotKwkgICAgICBpZiAocGF0aF9tYXggLSBuIDw9IGxlbikKLSAJCXsKLSAJCSAgX19zZXRfZXJybm8gKEVOQU1FVE9PTE9ORyk7Ci0gCQkgIGdvdG8gZXJyb3I7Ci1kaWZmIC0tZ2l0IGEvc3RkbGliL3Rlc3QtYnoyMjc4Ni5jIGIvc3RkbGliL3Rlc3QtYnoyMjc4Ni5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTc4MzdmOQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3RkbGliL3Rlc3QtYnoyMjc4Ni5jCi1AQCAtMCwwICsxLDkwIEBACi0rLyogQnVnIDIyNzg2OiB0ZXN0IGZvciBidWZmZXIgb3ZlcmZsb3cgaW4gcmVhbHBhdGguCi0rICAgQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCi0rICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBUaGlzIGZpbGUgbXVzdCBiZSBydW4gZnJvbSB3aXRoaW4gYSBkaXJlY3RvcnkgY2FsbGVkICJzdGRsaWIiLiAgKi8KLSsKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzdXBwb3J0L3Rlc3QtZHJpdmVyLmg+Ci0rI2luY2x1ZGUgPGxpYmMtZGlhZy5oPgotKwotK3N0YXRpYyBpbnQKLStkb190ZXN0ICh2b2lkKQotK3sKLSsgIGNvbnN0IGNoYXIgZGlyW10gPSAiYnoyMjc4NiI7Ci0rICBjb25zdCBjaGFyIGxua1tdID0gImJ6MjI3ODYvc3ltbGluayI7Ci0rCi0rICBybWRpciAoZGlyKTsKLSsgIGlmIChta2RpciAoZGlyLCAwNzU1KSAhPSAwICYmIGVycm5vICE9IEVFWElTVCkKLSsgICAgewotKyAgICAgIHByaW50ZiAoIm1rZGlyICVzOiAlbVxuIiwgZGlyKTsKLSsgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotKyAgICB9Ci0rICBpZiAoc3ltbGluayAoIi4iLCBsbmspICE9IDAgJiYgZXJybm8gIT0gRUVYSVNUKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgic3ltbGluayAoJXMsICVzKTogJW1cbiIsIGRpciwgbG5rKTsKLSsgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotKyAgICB9Ci0rCi0rICBjb25zdCBzaXplX3QgcGF0aF9sZW4gPSAoc2l6ZV90KSBJTlRfTUFYICsgMTsKLSsKLSsgIERJQUdfUFVTSF9ORUVEU19DT01NRU5UOwotKyNpZiBfX0dOVUNfUFJFUkVRICg3LCAwKQotKyAgLyogR0NDIDcgd2FybnMgYWJvdXQgdG9vLWxhcmdlIGFsbG9jYXRpb25zOyBoZXJlIHdlIG5lZWQgc3VjaAotKyAgICAgYWxsb2NhdGlvbiB0byBzdWNjZWVkIGZvciB0aGUgdGVzdCB0byB3b3JrLiAgKi8KLSsgIERJQUdfSUdOT1JFX05FRURTX0NPTU1FTlQgKDcsICItV2FsbG9jLXNpemUtbGFyZ2VyLXRoYW49Iik7Ci0rI2VuZGlmCi0rICBjaGFyICpwYXRoID0gbWFsbG9jIChwYXRoX2xlbik7Ci0rICBESUFHX1BPUF9ORUVEU19DT01NRU5UOwotKwotKyAgaWYgKHBhdGggPT0gTlVMTCkKLSsgICAgewotKyAgICAgIHByaW50ZiAoIm1hbGxvYyAoJXp1KTogJW1cbiIsIHBhdGhfbGVuKTsKLSsgICAgICByZXR1cm4gRVhJVF9VTlNVUFBPUlRFRDsKLSsgICAgfQotKwotKyAgLyogQ29uc3RydWN0IHZlcnkgbG9uZyBwYXRoID0gImJ6MjI3ODYvc3ltbGluay9hYWFhLi4uLi4iICAqLwotKyAgY2hhciAqcCA9IG1lbXBjcHkgKHBhdGgsIGxuaywgc2l6ZW9mIChsbmspIC0gMSk7Ci0rICAqKHArKykgPSAnLyc7Ci0rICBtZW1zZXQgKHAsICdhJywgcGF0aF9sZW4gLSAocGF0aCAtIHApIC0gMik7Ci0rICBwW3BhdGhfbGVuIC0gKHBhdGggLSBwKSAtIDFdID0gJ1wwJzsKLSsKLSsgIC8qIFRoaXMgY2FsbCBjcmFzaGVzIGJlZm9yZSB0aGUgZml4IGZvciBiejIyNzg2IG9uIDMyLWJpdCBwbGF0Zm9ybXMuICAqLwotKyAgcCA9IHJlYWxwYXRoIChwYXRoLCBOVUxMKTsKLSsKLSsgIGlmIChwICE9IE5VTEwgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgicmVhbHBhdGg6ICVzICglbSkiLCBwKTsKLSsgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwotKyAgICB9Ci0rCi0rICAvKiBDbGVhbnVwLiAgKi8KLSsgIHVubGluayAobG5rKTsKLSsgIHJtZGlyIChkaXIpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNkZWZpbmUgVEVTVF9GVU5DVElPTiBkb190ZXN0Ci0rI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KLS0tIAotMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTgtMTEyMzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE4LTExMjM3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzJhYTU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTgtMTEyMzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIDlhYWFhYjdjNmU0MTc2ZTYxYzU5YjBhNjNjNmJhOTA2ZDg3NWRjMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIFNjaHdhYiA8c2Nod2FiQHN1c2UuZGU+Ci1EYXRlOiBUdWUsIDIyIE1heSAyMDE4IDEwOjM3OjU5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHdyaXRlIGJleW9uZCBkZXN0aW5hdGlvbiBpbgotIF9fbWVtcGNweV9hdng1MTJfbm9fdnplcm91cHBlciAoYnVnIDIzMTk2KQotCi1XaGVuIGNvbXBpbGVkIGFzIG1lbXBjcHksIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGVuZCBvZiB0aGUgZGVzdGluYXRpb24KLWJ1ZmZlciwgdGh1cyBpdCBjYW5ub3QgYmUgdXNlZCB0byByZWZlciB0byB0aGUgc3RhcnQgb2YgaXQuCi0KLTIwMTgtMDUtMjMgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+Ci0KLSAgICAgICBbQlogIzIzMTk2XQotICAgICAgIENWRS0yMDE4LTExMjM3Ci0gICAgICAgKiBzeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvbWVtbW92ZS1hdng1MTItbm8tdnplcm91cHBlci5TCi0gICAgICAgKEwocHJlbG9vcF9sYXJnZSkpOiBTYXZlIGluaXRpYWwgZGVzdGluYXRpb24gcG9pbnRlciBpbiAlcjExIGFuZAotICAgICAgIHVzZSBpdCBpbnN0ZWFkIG9mICVyYXggYWZ0ZXIgdGhlIGxvb3AuCi0gICAgICAgKiBzdHJpbmcvdGVzdC1tZW1wY3B5LmMgKE1JTl9QQUdFX1NJWkUpOiBEZWZpbmUuCi0KLUNWRTogQ1ZFLTIwMTgtMTEyMzcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFpoZW5nIFJ1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDkgKysrKysrKysrCi0gc3RyaW5nL3Rlc3QtbWVtcGNweS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEgKwotIHN5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMgfCA1ICsrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCBmYTBhMDdjLi5iYzA5ZGVjIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTIgQEAKLSsyMDE4LTA1LTIzICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgotKwotKwlbQlogIzIzMTk2XQotKwlDVkUtMjAxOC0xMTIzNwotKwkqIHN5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMKLSsJKEwocHJlbG9vcF9sYXJnZSkpOiBTYXZlIGluaXRpYWwgZGVzdGluYXRpb24gcG9pbnRlciBpbiAlcjExIGFuZAotKwl1c2UgaXQgaW5zdGVhZCBvZiAlcmF4IGFmdGVyIHRoZSBsb29wLgotKwkqIHN0cmluZy90ZXN0LW1lbXBjcHkuYyAoTUlOX1BBR0VfU0laRSk6IERlZmluZS4KLSsKLSAyMDE4LTA1LTA5ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotIAotIAlbQlogIzIyNzg2XQotZGlmZiAtLWdpdCBhL3N0cmluZy90ZXN0LW1lbXBjcHkuYyBiL3N0cmluZy90ZXN0LW1lbXBjcHkuYwotaW5kZXggYzA4ZmJhOC4uZDk4ZWNkZCAxMDA2NDQKLS0tLSBhL3N0cmluZy90ZXN0LW1lbXBjcHkuYwotKysrIGIvc3RyaW5nL3Rlc3QtbWVtcGNweS5jCi1AQCAtMTgsNiArMTgsNyBAQAotICAgIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBNRU1DUFlfUkVTVUxUKGRzdCwgbGVuKSAoZHN0KSArIChsZW4pCi0rI2RlZmluZSBNSU5fUEFHRV9TSVpFIDEzMTA3MgotICNkZWZpbmUgVEVTVF9NQUlOCi0gI2RlZmluZSBURVNUX05BTUUgIm1lbXBjcHkiCi0gI2luY2x1ZGUgInRlc3Qtc3RyaW5nLmgiCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODZfNjQvbXVsdGlhcmNoL21lbW1vdmUtYXZ4NTEyLW5vLXZ6ZXJvdXBwZXIuUyBiL3N5c2RlcHMveDg2XzY0L211bHRpYXJjaC9tZW1tb3ZlLWF2eDUxMi1uby12emVyb3VwcGVyLlMKLWluZGV4IDIzYzBmN2EuLmE1NWNmNmYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvbWVtbW92ZS1hdng1MTItbm8tdnplcm91cHBlci5TCi0rKysgYi9zeXNkZXBzL3g4Nl82NC9tdWx0aWFyY2gvbWVtbW92ZS1hdng1MTItbm8tdnplcm91cHBlci5TCi1AQCAtMzM1LDYgKzMzNSw3IEBAIEwocHJlbG9vcF9sYXJnZSk6Ci0gCWphCUwocHJlbG9vcF9sYXJnZV9ia3cpCi0gCXZtb3Z1cHMJKCVyc2kpLCAlem1tNAotIAl2bW92dXBzCTB4NDAoJXJzaSksICV6bW01Ci0rCW1vdiAgICAgJXJkaSwgJXIxMQotIAotIC8qIEFsaWduIGRlc3RpbmF0aW9uIGZvciBhY2Nlc3Mgd2l0aCBub24tdGVtcG9yYWwgc3RvcmVzIGluIHRoZSBsb29wLiAgKi8KLSAJbW92CSVyZGksICVyOAotQEAgLTM2Niw4ICszNjcsOCBAQCBMKGdvYmJsZV8yNTZieXRlc19udF9sb29wKToKLSAJY21wCSQyNTYsICVyZHgKLSAJamEJTChnb2JibGVfMjU2Ynl0ZXNfbnRfbG9vcCkKLSAJc2ZlbmNlCi0tCXZtb3Z1cHMJJXptbTQsICglcmF4KQotLQl2bW92dXBzCSV6bW01LCAweDQwKCVyYXgpCi0rCXZtb3Z1cHMgJXptbTQsICglcjExKQotKwl2bW92dXBzICV6bW01LCAweDQwKCVyMTEpCi0gCWptcAlMKGNoZWNrKQotIAotIEwocHJlbG9vcF9sYXJnZV9ia3cpOgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2FyY2hpdmUtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYXJjaGl2ZS1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGQzMTU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYXJjaGl2ZS1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotbG9jYWxlZGVmIC0tYWRkLXRvLWFyY2hpdmUgdXNlcyBhIGhhcmQtY29kZWQgbG9jYWxlIHBhdGggd2hpY2ggZG9lc24ndCBleGlzdCBpbgotbm9ybWFsIHVzZSwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIHBhc3MgYW4gYWx0ZXJuYXRpdmUgZmlsZW5hbWUuCi0KLUFkZCBhIGZhbGxiYWNrIG9mICRMT0NBTEVBUkNISVZFIGZyb20gdGhlIGVudmlyb25tZW50LCBhbmQgYWxsb3cgY3JlYXRpb24gb2YgbmV3IGxvY2FsZSBhcmNoaXZlcyB0aGF0IGFyZSBub3QgdGhlIHN5c3RlbSBhcmNoaXZlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi1pbmRleCBjYTMzMmEzNC4uNmI3YmE5YjIgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi1AQCAtNTY5LDEwICs1NjksMTMgQEAgb3Blbl9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBib29sIHJlYWRvbmx5KQotICAgLyogSWYgYWggaGFzIGEgbm9uLU5VTEwgZm5hbWUgb3BlbiB0aGF0IG90aGVyd2lzZSBvcGVuIHRoZSBkZWZhdWx0LiAgKi8KLSAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkKLSAgICAgewotLSAgICAgIGFyY2hpdmVmbmFtZSA9IGRlZmF1bHRfZm5hbWU7Ci0tICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0tICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotLSAgICAgIHN0cmNweSAoZGVmYXVsdF9mbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgICAgYXJjaGl2ZWZuYW1lID0gZ2V0ZW52KCJMT0NBTEVBUkNISVZFIik7Ci0rICAgICAgaWYgKGFyY2hpdmVmbmFtZSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOwotKyAgICAgICAgICAgICAgaWYgKG91dHB1dF9wcmVmaXgpCi0rICAgICAgICAgICAgICAgIG1lbWNweSAoZGVmYXVsdF9mbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0rICAgICAgICAgICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgICAgIH0KLSAgICAgfQotIAotICAgd2hpbGUgKDEpCi1AQCAtNTg1LDcgKzU4OCw3IEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKLSAJICAgICB0aGUgZGVmYXVsdCBsb2NhbGUgYXJjaGl2ZSB3ZSBpZ25vcmUgdGhlIGZhaWx1cmUgYW5kCi0gCSAgICAgbGlzdCBhbiBlbXB0eSBhcmNoaXZlLCBvdGhlcndpc2Ugd2UgcHJpbnQgYW4gZXJyb3IKLSAJICAgICBhbmQgZXhpdC4gICovCi0tCSAgaWYgKGVycm5vID09IEVOT0VOVCAmJiBhcmNoaXZlZm5hbWUgPT0gZGVmYXVsdF9mbmFtZSkKLSsJICBpZiAoZXJybm8gPT0gRU5PRU5UKQotIAkgICAgewotIAkgICAgICBpZiAocmVhZG9ubHkpCi0gCQl7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2V0Yy9sZC5zby5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9ldGMvbGQuc28uY29uZgppbmRleCBlNjlkZTI5Li44MzMyN2MwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2V0Yy9sZC5zby5jb25mCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvZXRjL2xkLnNvLmNvbmYKQEAgLTAsMCArMSBAQAoraW5jbHVkZSAvZXRjL2xkLnNvLmNvbmYuZC8qLmNvbmYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvbWFrZWRicy5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvbWFrZWRicy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZDUxYTY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9tYWtlZGJzLnNoCkBAIC0wLDAgKzEsMTc3IEBACisjIS9iaW4vc2gKKworIworIyBNYWtlIHBhc3N3ZC5kYiwgZ3JvdXAuZGIsIGV0Yy4KKyMKKworVkFSX0RCPS92YXIvZGIKKworIyBVc2UgbWFrZSBpZiBhdmFpbGFibGUKK2lmIFsgLXggL3Vzci9iaW4vbWFrZSAtbyAteCAvYmluL21ha2UgXTsgdGhlbgorCW1ha2UgLUMgJFZBUl9EQgorCWV4aXQgMAorZmkKKworIyBObyBtYWtlIGF2YWlsYWJsZSwgZG8gaXQgaW4gaGFyZCB3YXkKKworIyBwYXNzd2QuZGIKK2lmIFsgLWUgL2V0Yy9wYXNzd2QgXTsgdGhlbgordGFyZ2V0PSRWQVJfREIvcGFzc3dkLmRiCitlY2hvIC1uICJwYXNzd2QuLi4gIgorYXdrICdCRUdJTiB7IEZTPSI6IjsgT0ZTPSI6IiB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcyAiLCAkJDM7IHByaW50IH0nIC9ldGMvcGFzc3dkIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtCitlY2hvICJkb25lLiIKK2ZpCisKKyMgZ3JvdXAuZGIKK2lmIFsgLWUgL2V0Yy9ncm91cCBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9ncm91cC5kYgorZWNobyAtbiAiZ3JvdXAuLi4gIgorYXdrICdCRUdJTiB7IEZTPSI6IjsgT0ZTPSI6IiB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcyAiLCAkJDM7IHByaW50OyBcCisJICAgaWYgKCQkNCAhPSAiIikgeyBcCisJICAgICBzcGxpdCgkJDQsIGdybWVtcywgIiwiKTsgXAorCSAgICAgZm9yIChtZW1pZHggaW4gZ3JtZW1zKSB7IFwKKwkgICAgICAgbWVtPWdybWVtc1ttZW1pZHhdOyBcCisJICAgICAgIGlmIChtZW1iZXJzW21lbV0gPT0gIiIpIFwKKwkJIG1lbWJlcnNbbWVtXT0kJDM7IFwKKwkgICAgICAgZWxzZSBcCisJCSBtZW1iZXJzW21lbV09bWVtYmVyc1ttZW1dICIsIiAkJDM7IFwKKwkgICAgIH0gXAorCSAgICAgZGVsZXRlIGdybWVtczsgfSB9IFwKKyBFTkQgeyBmb3IgKG1lbSBpbiBtZW1iZXJzKSBcCisJIHByaW50ZiAiOiVzICVzICVzXG4iLCBtZW0sIG1lbSwgbWVtYmVyc1ttZW1dOyB9JyAvZXRjL2dyb3VwIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtCitlY2hvICJkb25lLiIKK2ZpCisKKyMgZXRoZXJzLmRiCitpZiBbIC1lIC9ldGMvZXRoZXJzIF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL2V0aGVycy5kYgorZWNobyAtbiAiZXRoZXJzLi4uICIKK2F3ayAnL15bIFx0XSokJC8geyBuZXh0IH0gXAorIC9eWyBcdF0qIy8geyBuZXh0IH0gXAorIC9eW14jXS8geyBwcmludGYgIi4lcyAiLCAkJDE7IHByaW50OyBcCisJICAgcHJpbnRmICI9JXMgIiwgJCQyOyBwcmludCB9JyAvZXRjL2V0aGVycyB8IFwKK21ha2VkYiAtLXF1aWV0IC1vICR0YXJnZXQgLQorZWNobyAiZG9uZS4iCitmaQorCisjIHByb3RvY29scy5kYgoraWYgWyAtZSAvZXRjL3Byb3RvY29scyBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9wcm90b2NvbHMuZGIKK2VjaG8gLW4gInByb3RvY29scy4uLiAiCithd2sgJy9eWyBcdF0qJCQvIHsgbmV4dCB9IFwKKyAvXlsgXHRdKiMvIHsgbmV4dCB9IFwKKyAvXlteI10vIHsgcHJpbnRmICIuJXMgIiwgJCQxOyBwcmludDsgXAorCSAgIHByaW50ZiAiPSVzICIsICQkMjsgcHJpbnQ7IFwKKwkgICBmb3IgKGkgPSAzOyBpIDw9IE5GICYmICEoJCRpIH4gL14jLyk7ICsraSkgXAorCSAgICAgeyBwcmludGYgIi4lcyAiLCAkJGk7IHByaW50IH0gfScgL2V0Yy9wcm90b2NvbHMgfCBcCittYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0KK2VjaG8gImRvbmUuIgorZmkKKworIyBycGMuZGIKK2lmIFsgLWUgL2V0Yy9ycGMgXTsgdGhlbgordGFyZ2V0PSRWQVJfREIvcnBjLmRiCitlY2hvIC1uICJycGMuLi4gIgorYXdrICcvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHByaW50ZiAiLiVzICIsICQkMTsgcHJpbnQ7IFwKKwkgICBwcmludGYgIj0lcyAiLCAkJDI7IHByaW50OyBcCisJICAgZm9yIChpID0gMzsgaSA8PSBORiAmJiAhKCQkaSB+IC9eIy8pOyArK2kpIFwKKwkgICAgIHsgcHJpbnRmICIuJXMgIiwgJCRpOyBwcmludCB9IH0nIC9ldGMvcnBjIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtCitlY2hvICJkb25lLiIKK2ZpCisKKyMgc2VydmljZXMuZGIKK2lmIFsgLWUgL2V0Yy9zZXJ2aWNlcyBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9zZXJ2aWNlcy5kYgorZWNobyAtbiAic2VydmljZXMuLi4gIgorYXdrICdCRUdJTiB7IEZTPSJbIFx0L10rIiB9IFwKKyAvXlsgXHRdKiQkLyB7IG5leHQgfSBcCisgL15bIFx0XSojLyB7IG5leHQgfSBcCisgL15bXiNdLyB7IHN1YigvWyBcdF0qIy4qJCQvLCAiIik7XAorCSAgIHByaW50ZiAiOiVzLyVzICIsICQkMSwgJCQzOyBwcmludDsgXAorCSAgIHByaW50ZiAiOiVzLyAiLCAkJDE7IHByaW50OyBcCisJICAgcHJpbnRmICI9JXMvJXMgIiwgJCQyLCAkJDM7IHByaW50OyBcCisJICAgcHJpbnRmICI9JXMvICIsICQkMjsgcHJpbnQ7IFwKKwkgICBmb3IgKGkgPSA0OyBpIDw9IE5GICYmICEoJCRpIH4gL14jLyk7ICsraSkgXAorCSAgICAgeyBwcmludGYgIjolcy8lcyAiLCAkJGksICQkMzsgcHJpbnQ7IFwKKwkgICAgICAgcHJpbnRmICI6JXMvICIsICQkaTsgcHJpbnQgfSB9JyAvZXRjL3NlcnZpY2VzIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtCitlY2hvICJkb25lLiIKK2ZpCisKKyMgc2hhZG93LmRiCitpZiBbIC1lIC9ldGMvc2hhZG93IF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL3NoYWRvdy5kYgorZWNobyAtbiAic2hhZG93Li4uICIKK2F3ayAnQkVHSU4geyBGUz0iOiI7IE9GUz0iOiIgfSBcCisgL15bIFx0XSokJC8geyBuZXh0IH0gXAorIC9eWyBcdF0qIy8geyBuZXh0IH0gXAorIC9eW14jXS8geyBwcmludGYgIi4lcyAiLCAkJDE7IHByaW50IH0nIC9ldGMvc2hhZG93IHwgXAorKHVtYXNrIDA3NyAmJiBtYWtlZGIgLS1xdWlldCAtbyAkdGFyZ2V0IC0pCitlY2hvICJkb25lLiIKK2lmIGNoZ3JwIHNoYWRvdyAkdGFyZ2V0IDI+L2Rldi9udWxsOyB0aGVuCisJY2htb2QgZytyICR0YXJnZXQKK2Vsc2UKKwljaG93biAwICR0YXJnZXQ7IGNoZ3JwIDAgJHRhcmdldDsgY2htb2QgNjAwICR0YXJnZXQ7CisJZWNobworCWVjaG8gIldhcm5pbmc6IFRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgJHRhcmdldCIKKwllY2hvICJoYXMgYmVlbiBzZXQgdG8gYmUgcmVhZGFibGUgb25seSBieSByb290LiAgWW91IG1heSB3YW50IgorCWVjaG8gInRvIG1ha2UgaXQgcmVhZGFibGUgYnkgdGhlIFxgc2hhZG93JyBncm91cCBkZXBlbmRpbmciCisJZWNobyAib24geW91ciBjb25maWd1cmF0aW9uLiIKKwllY2hvCitmaQorZmkKKworIyBnc2hhZG93LmRiCitpZiBbIC1lIC9ldGMvZ3NoYWRvdyBdOyB0aGVuCit0YXJnZXQ9JFZBUl9EQi9nc2hhZG93LmRiCitlY2hvIC1uICJnc2hhZG93Li4uICIKK2F3ayAnQkVHSU4geyBGUz0iOiI7IE9GUz0iOiIgfSBcCisgL15bIFx0XSokJC8geyBuZXh0IH0gXAorIC9eWyBcdF0qIy8geyBuZXh0IH0gXAorIC9eW14jXS8geyBwcmludGYgIi4lcyAiLCAkJDE7IHByaW50IH0nIC9ldGMvZ3NoYWRvdyB8IFwKKyh1bWFzayAwNzcgJiYgbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldCAtKQorZWNobyAiZG9uZS4iCitpZiBjaGdycCBzaGFkb3cgJHRhcmdldCAyPi9kZXYvbnVsbDsgdGhlbgorCWNobW9kIGcrciAkdGFyZ2V0CitlbHNlCisJY2hvd24gMCAkdGFyZ2V0OyBjaGdycCAwICR0YXJnZXQ7IGNobW9kIDYwMCAkdGFyZ2V0CisJZWNobworCWVjaG8gIldhcm5pbmc6IFRoZSBzaGFkb3cgZ3JvdXAgZGF0YWJhc2UgJHRhcmdldCIKKwllY2hvICJoYXMgYmVlbiBzZXQgdG8gYmUgcmVhZGFibGUgb25seSBieSByb290LiAgWW91IG1heSB3YW50IgorCWVjaG8gInRvIG1ha2UgaXQgcmVhZGFibGUgYnkgdGhlIFxgc2hhZG93JyBncm91cCBkZXBlbmRpbmciCisJZWNobyAib24geW91ciBjb25maWd1cmF0aW9uLiIKKwllY2hvCitmaQorZmkKKworIyBuZXRncm91cC5kYgoraWYgWyAtZSAvZXRjL25ldGdyb3VwIF07IHRoZW4KK3RhcmdldD0kVkFSX0RCL25ldGdyb3VwLmRiCitlY2hvIC1uICJuZXRncm91cC4uLiAiCithd2sgJ0JFR0lOIHsgaW5pPTEgfSBcCisgL15bIFx0XSokJC8geyBuZXh0IH0gXAorIC9eWyBcdF0qIy8geyBuZXh0IH0gXAorIC9eW14jXS8geyBpZiAoc3ViKC9bIFx0XSpcXCQkLywgIiAiKSA9PSAwKSBlbmQ9IlxuIjsgXAorCSAgIGVsc2UgZW5kPSIiOyBcCisJICAgZ3N1YigvWyBcdF0rLywgIiAiKTsgXAorCSAgIHN1YigvXlsgXHRdKi8sICIiKTsgXAorCSAgIGlmIChpbmkgPT0gMCkgcHJpbnRmICIlcyVzIiwgJCQwLCBlbmQ7IFwKKwkgICBlbHNlIHByaW50ZiAiLiVzICVzJXMiLCAkJDEsICQkMCwgZW5kOyBcCisJICAgaW5pPWVuZCA9PSAiIiA/IDAgOiAxOyB9IFwKKyBFTkQgeyBpZiAoaW5pPT0wKSBwcmludGYgIlxuIiB9JyAvZXRjL25ldGdyb3VwIHwgXAorbWFrZWRiIC0tcXVpZXQgLW8gJHRhcmdldAorZWNobyAiZG9uZS4iCitmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9yZWxvY2F0ZS1sb2NhbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9yZWxvY2F0ZS1sb2NhbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWVhMzdmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvcmVsb2NhdGUtbG9jYWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVRoZSBnbGliYyBsb2NhbGUgcGF0aCBpcyBoYXJkLWNvZGVkIHRvIHRoZSBpbnN0YWxsIHByZWZpeCwgYnV0IGluIFNES3Mgd2UgbmVlZAotdG8gYmUgYWJsZSB0byByZWxvY2F0ZSB0aGUgYmluYXJpZXMuICBFeHBhbmQgdGhlIHN0cmluZ3MgdG8gNEsgYW5kIHB1dCB0aGVtIGluIGEKLW1hZ2ljIHNlZ21lbnQgdGhhdCB3ZSBjYW4gcmVsb2NhdGUgYXQgaW5zdGFsbCB0aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xvY2FsZS9maW5kbG9jYWxlLmMgYi9sb2NhbGUvZmluZGxvY2FsZS5jCi1pbmRleCA4NzJjYWRiNS4uZGExNGZhMzkgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvZmluZGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvZmluZGxvY2FsZS5jCi1AQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgX19sb2NhbGVfZGF0YSAqY29uc3QgX25sX0NbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLSAgICB3aGljaCBhcmUgc29tZWhvdyBhZGRyZXNzZWQuICAqLwotIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2NhbGVfZmlsZV9saXN0W19fTENfTEFTVF07Ci0gCi0tY29uc3QgY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFtdIGF0dHJpYnV0ZV9oaWRkZW4gPSBDT01QTE9DQUxFRElSOwotK2NoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbNDA5Nl0gYXR0cmlidXRlX2hpZGRlbiBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSOwotIAotIC8qIENoZWNrcyBpZiB0aGUgbmFtZSBpcyBhY3R1YWxseSBwcmVzZW50LCB0aGF0IGlzLCBub3QgTlVMTCBhbmQgbm90Ci0gICAgZW1wdHkuICAqLwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBfbmxfZmluZF9sb2NhbGUgKGNvbnN0IGNoYXIgKmxvY2FsZV9wYXRoLCBzaXplX3QgbG9jYWxlX3BhdGhfbGVuLAotIAotICAgICAgIC8qIE5vdGhpbmcgaW4gdGhlIGFyY2hpdmUuICBTZXQgdGhlIGRlZmF1bHQgcGF0aCB0byBzZWFyY2ggYmVsb3cuICAqLwotICAgICAgIGxvY2FsZV9wYXRoID0gX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7Ci0tICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc2l6ZW9mIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOwotKyAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHN0cmxlbihsb2NhbGVfcGF0aCkgKyAxOwotICAgICB9Ci0gICBlbHNlCi0gICAgIC8qIFdlIHJlYWxseSBoYXZlIHRvIGxvYWQgc29tZSBkYXRhLiAgRmlyc3Qgc2VlIHdoZXRoZXIgdGhlIG5hbWUgaXMKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggNjg4MjJhNjMuLjUzN2JjMzUxIDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAotKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotQEAgLTMyNSw3ICszMjUsNyBAQCBfbmxfbG9va3VwX3dvcmQgKGxvY2FsZV90IGwsIGludCBjYXRlZ29yeSwgaW50IGl0ZW0pCi0gfQotIAotIC8qIERlZmF1bHQgc2VhcmNoIHBhdGggaWYgbm8gTE9DUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuOwotK2V4dGVybiBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW47Ci0gCi0gLyogTG9hZCB0aGUgbG9jYWxlIGRhdGEgZm9yIENBVEVHT1JZIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpOQU1FLgotICAgIElmICpOQU1FIGlzICIiLCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIHNwZWNpZmllZCBieSBQT1NJWCwgYW5kCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMgYi9sb2NhbGUvbG9hZGFyY2hpdmUuYwotaW5kZXggNTE2ZDMwZDguLjc5MmIzN2ZiIDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLSsrKyBiL2xvY2FsZS9sb2FkYXJjaGl2ZS5jCi1AQCAtNDIsNyArNDMsNyBAQAotIAotIAotIC8qIE5hbWUgb2YgdGhlIGxvY2FsZSBhcmNoaXZlIGZpbGUuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVtdID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLStzdGF0aWMgY29uc3QgY2hhciBhcmNoZm5hbWVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQ09NUExPQ0FMRURJUiAiL2xvY2FsZS1hcmNoaXZlIjsKLSAKLSAvKiBTaXplIG9mIGluaXRpYWwgbWFwcGluZyB3aW5kb3csIG9wdGltYWwgaWYgbGFyZ2UgZW5vdWdoIHRvCi0gICAgY292ZXIgdGhlIGhlYWRlciBwbHVzIHRoZSBpbml0aWFsIGxvY2FsZS4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZWU0OTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLXJlcXVpcmUgZ2xpYmMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1lOWE1NThlMjQzYjM2ZDMyMDlmMzgwZGViMzk0YjIxMyBcCi0gICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi0KLVNSQ1JFViA/PSAiZGYzZmY0ZTQ5ZDRlZTNjYmJkYWViMGIxY2I1ZGMyMzQ0YzA4YmU5OCIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLQotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuKD8hOTApXGQrKSopIgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LXJlc2V0LWRsX2xvYWRfd3JpdGVfbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctQWNxdWlyZS1sZC5zby1sb2NrLWJlZm9yZS1zd2l0Y2hpbmctdG8tbWFsbG9jX2F0Zm9yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LWJpdHMtc2lnaW5mby1jb25zdHMuaC1lbnVtLWRlZmluaXRpb24tZm9yLVRSQVBfSFdCS1AucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpeC1Xc3RyaW5nb3AtdHJ1bmNhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtcGx1cmFsX2Nfbm9fcHJlcHJvY2Vzc29yX2xpbmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE4MjY5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTExMjM2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTExMjM3LnBhdGNoIFwKLSIKLQotTkFUSVZFU0RLRklYRVMgPz0gIiIKLU5BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLWxvY2FsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMS1uYXRpdmVzZGstZGVwcmVjYXRlLWxpYmNyeXB0LnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLUIgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIiIKLQotIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgotCi1HTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCi0jCi0jIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYwotIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKLSMKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi0KLUdMSUJDUElFID8/PSAiIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zPWxpYmlkbiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWhlYWRlcnM9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1zZWxpbnV4IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1vYnNvbGV0ZS1ycGMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLW5zbCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAotICAgICAgICAgICAgICAgICR7R0xJQkNQSUV9IFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0VYVFJBX09FQ09ORn0iCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAZ2V0X2xpYmNfZnB1X3NldHRpbmcoYmIsIGQpfSIKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLWluZXQtYW5sJywgJy0tZW5hYmxlLW5zY2QnLCAnLS1kaXNhYmxlLW5zY2QnLCBkKX0iCi0KLQotZG9fcGF0Y2hfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fZml4X3JlYWRsaWJfYycsIGQpCi19Ci0KLWRvX2ZpeF9yZWFkbGliX2MgKCkgewotCXNlZCAtaSAtZSAncyNPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMjJHtFR0xJQkNfS05PV05fSU5URVJQUkVURVJfTkFNRVN9IycgJHtTfS9lbGYvcmVhZGxpYi5jCi19Ci0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0jIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gYXZvaWQgdGhlIGF1dG9jb25mL2F1dG9tYWtlL2FjbG9jYWwvYXV0b2hlYWRlcgotIyBjYWxscyBmb3Igbm93Ci0jIGRvbid0IHBhc3MgQ1BQRkxBR1MgaW50byBjb25maWd1cmUsIHNpbmNlIGl0IHVwc2V0cyB0aGUga2VybmVsLWhlYWRlcnMKLSMgdmVyc2lvbiBjaGVjayBhbmQgZG9lc24ndCByZWFsbHkgaGVscCB3aXRoIGFueXRoaW5nCi0gICAgICAgIChjZCAke1N9ICYmIGdudS1jb25maWdpemUpIHx8IGRpZSAiZmFpbHVyZSBpbiBydW5uaW5nIGdudS1jb25maWdpemUiCi0gICAgICAgIGZpbmQgJHtTfSAtbmFtZSAiY29uZmlndXJlIiB8IHhhcmdzIHRvdWNoCi0gICAgICAgIENQUEZMQUdTPSIiIG9lX3J1bmNvbmYKLX0KLQotcnBjc3ZjID0gImJvb3RwYXJhbV9wcm90LnggbmxtX3Byb3QueCByc3RhdC54IFwKLQkgIHlwcGFzc3dkLngga2xtX3Byb3QueCByZXgueCBzbV9pbnRlci54IG1vdW50LnggXAotCSAgcnVzZXJzLnggc3ByYXkueCBuZnNfcHJvdC54IHJxdW90YS54IGtleV9wcm90LngiCi0KLWRvX2NvbXBpbGUgKCkgewotCSMgLVdsLC1ycGF0aC1saW5rIDxzdGFnaW5nPi9saWIgaW4gTERGTEFHUyBjYW4gY2F1c2UgYnJlYWthZ2UgaWYgYW5vdGhlciBnbGliYyBpcyBpbiBzdGFnaW5nCi0JdW5zZXQgTERGTEFHUwotCWJhc2VfZG9fY29tcGlsZQotCSgKLQkJY2QgJHtTfS9zdW5ycGMvcnBjc3ZjCi0JCWZvciByIGluICR7cnBjc3ZjfTsgZG8KLQkJCWg9YGVjaG8gJHJ8c2VkIC1lJ3MsXC54JCwuaCwnYAotCQkJcm0gLWYgJGgKLQkJCSR7Qn0vc3VucnBjL2Nyb3NzLXJwY2dlbiAtaCAkciAtbyAkaCB8fCBiYndhcm4gIiR7UE59OiB1bmFibGUgdG8gZ2VuZXJhdGUgaGVhZGVyIGZvciAkciIKLQkJZG9uZQotCSkKLQllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKLQlpZiBbIC1uICIke1JUTERMSVNUfSIgXQotCXRoZW4KLQkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAotCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCi0JCXRoZW4KLQkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKLQkJZmkKLQlmaQotCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3MjkzOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yOC5iYgpAQCAtMCwwICsxLDEzNSBAQAorcmVxdWlyZSBnbGliYy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWNmYzBlZDc3YTlmNjJmYTYyZWRlZDA0MmViZTMxZDcyIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSBtYWtlLW5hdGl2ZSIKKworU1JDUkVWID89ICIwNDRjOTZmMGQ1NTk1YWViMGJiNGU3OTM1NTA4MWM1YTdmNGZhY2E1IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC4oPyE5MClcZCspKikiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgZmlsZTovL21ha2VkYnMuc2ggXAorICAgICAgICAgICBcCisgICAgICAgICAgICR7TkFUSVZFU0RLRklYRVN9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1yZXNldC1kbF9sb2FkX3dyaXRlX2xvY2stYWZ0ZXItZm9ya2luZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LUFjcXVpcmUtbGQuc28tbG9jay1iZWZvcmUtc3dpdGNoaW5nLXRvLW1hbGxvY19hdGZvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOC1iaXRzLXNpZ2luZm8tY29uc3RzLmgtZW51bS1kZWZpbml0aW9uLWZvci1UUkFQX0hXQktQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjktbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMwLWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1zeXNkZXBzLWllZWU3NTQtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItc3lzZGVwcy1pZWVlNzU0LXNvZnQtZnAtaWdub3JlLW1heWJlLXVuaW5pdGlhbGl6ZWQtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIFwKKyIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICIiCisKKyMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKK0JVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKKworR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgorIworIyBXZSB3aWxsIHNraXAgcGFyc2luZyBnbGliYyB3aGVuIHRhcmdldCBzeXN0ZW0gQyBsaWJyYXJ5IHNlbGVjdGlvbiBpcyBub3QgZ2xpYmMKKyMgdGhpcyBoZWxwcyBpbiBlYXNpbmcgb3V0IHBhcnNpbmcgZm9yIG5vbi1nbGliYyBzeXN0ZW0gbGlicmFyaWVzCisjCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgorCitHTElCQ1BJRSA/Pz0gIiIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcHJvZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAorICAgICAgICAgICAgICAgIC0td2l0aC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jcnlwdCBcCisgICAgICAgICAgICAgICAgJHtHTElCQ1BJRX0gXAorICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgorRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xpYmMtaW5ldC1hbmwnLCAnLS1lbmFibGUtbnNjZCcsICctLWRpc2FibGUtbnNjZCcsIGQpfSIKKworCitkb19wYXRjaF9hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKK30KKworZG9fZml4X3JlYWRsaWJfYyAoKSB7CisJc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKK30KKworZG9fY29uZmlndXJlICgpIHsKKyMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCisjIGNhbGxzIGZvciBub3cKKyMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycworIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKKyAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKKyAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgorfQorCitkb19jb21waWxlICgpIHsKKwkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZworCXVuc2V0IExERkxBR1MKKwliYXNlX2RvX2NvbXBpbGUKKwllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKKwlpZiBbIC1uICIke1JUTERMSVNUfSIgXQorCXRoZW4KKwkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAorCQlpZiBbICIke3ByZXZydGxkfSIgIT0gIiR7UlRMRExJU1R9IiBdCisJCXRoZW4KKwkJCXNlZCAtaSAke0J9L2VsZi9sZGQgLWUgInMjXlJUTERMSVNUPS4qXCQjUlRMRExJU1Q9XCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIyIKKwkJZmkKKwlmaQorCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoCmluZGV4IDIwMTM5MzMuLjM3YTYxYzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvaW5ldC02LS5kZWZuLWZpeC1pbnZlcnRlZC1jaGVja3MtZm9yLWxvb3BiYWNrLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkODhhZjVhYTAzMTJlYTE4YWFjNzkxZDY2NjYxZGE3OWI3YmNkMDMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZWZlNDY3Njc0N2U0ZTRhMDU2YjliZmI0ZTk0MjRjODM1NGU5OTk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KIERhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTU6MzI6MDcgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gaW5ldFs2XS5kZWZuOiBmaXggaW52ZXJ0ZWQgY2hlY2tzIGZvciBsb29wYmFjawpAQCAtMzUsMTIgKzM1LDEzIEBACiAKIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KLSBpbmV0LmRlZm4gfCAxNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCisgaW5ldC5kZWZuIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5ldC5kZWZuIGIvaW5ldC5kZWZuCi1pbmRleCA3NWU2NzQ0Li5iNWY1ZGEyIDEwMDY0NAoraW5kZXggNzVlNjc0NC4uMjNjNzc1NiAxMDA2NDQKIC0tLSBhL2luZXQuZGVmbgogKysrIGIvaW5ldC5kZWZuCiBAQCAtNiwxMCArNiwxMCBAQCBtZXRob2QgbG9vcGJhY2sKQEAgLTQ4LDExICs0OSwxMSBAQAogIAogICAgdXAKIC0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCBpZiAoIWlmYWNlX2lzX2xvKCkpCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIGlmIChpZmFjZV9pc19sbygpKQorKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCBpZiAoIWlmYWNlX2lzX2xvKCkpCiAgCiAgICBkb3duCiAtICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBpZiAoIWlmYWNlX2lzX2xvKCkpCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gaWYgKGlmYWNlX2lzX2xvKCkpCisrICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gaWYgKCFpZmFjZV9pc19sbygpKQogIAogIG1ldGhvZCBzdGF0aWMKICAgIGRlc2NyaXB0aW9uCkBAIC0yMTEsMjMgKzIxMiwyMCBAQAogIAogIGFyY2hpdGVjdHVyZSBrZnJlZWJzZAogIAotQEAgLTIxMSwxMiArMjExLDEyIEBAIG1ldGhvZCBsb29wYmFjaworQEAgLTIxMSwxMSArMjExLDExIEBAIG1ldGhvZCBsb29wYmFjawogICAgICBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBkZWZpbmUgdGhlIElQdjQgbG9vcGJhY2sgaW50ZXJmYWNlLgogIAogICAgdXAKIC0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSAxMjcuMC4wLjEgdXAgXAotLQlpZiAoIWlmYWNlX2lzX2xvKCkpCiArICAgIGlmY29uZmlnICVpZmFjZSUgMTI3LjAuMC4xIHVwIFwKLSsJaWYgKGlmYWNlX2lzX2xvKCkpCisgCWlmICghaWZhY2VfaXNfbG8oKSkKICAKICAgIGRvd24KIC0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duIFwKLS0JaWYgKCFpZmFjZV9pc19sbygpKQogKyAgICBpZmNvbmZpZyAlaWZhY2UlIGRvd24gXAotKwlpZiAoaWZhY2VfaXNfbG8oKSkKKyAJaWYgKCFpZmFjZV9pc19sbygpKQogIAogIG1ldGhvZCBzdGF0aWMKLSAgIGRlc2NyaXB0aW9uCiBAQCAtMjM4LDE1ICsyMzgsMTUgQEAgbWV0aG9kIHN0YXRpYwogICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKICAKQEAgLTMzOSwyMCArMzM3LDYgQEAKICBhcmNoaXRlY3R1cmUgaHVyZAogIAogIG1ldGhvZCBsb29wYmFjawotQEAgLTM2NywxMSArMzY3LDExIEBAIG1ldGhvZCBsb29wYmFjawotIAotICAgdXAKLSAgICAgaW5ldHV0aWxzLWlmY29uZmlnIC0taW50ZXJmYWNlICVpZmFjZSUgLS1hZGRyZXNzIDEyNy4wLjAuMSAtLXVwIFwKLS0JaWYgKCFpZmFjZV9pc19sbygpKQotKwlpZiAoaWZhY2VfaXNfbG8oKSkKLSAKLSAgIGRvd24KLSAgICAgaW5ldHV0aWxzLWlmY29uZmlnIC0taW50ZXJmYWNlICVpZmFjZSUgLS1kb3duIFwKLS0JaWYgKCFpZmFjZV9pc19sbygpKQotKwlpZiAoaWZhY2VfaXNfbG8oKSkKLSAKLSBtZXRob2Qgc3RhdGljCi0gICBkZXNjcmlwdGlvbgogQEAgLTQzMiwyMyArNDMyLDIzIEBAIG1ldGhvZCBkaGNwCiAgCiAgICB1cApAQCAtNDE4LDUgKzQwMiw1IEBACiAtICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCiArICAgIGF2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKIC0tIAotMi40LjAKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IDhhYjU5YTkuLmYwM2VmOTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMjIsOCArMjIsOCBAQAogCiBpbmhlcml0IGNvcmUtaW1hZ2UgbW9kdWxlLWJhc2Ugc2V0dXB0b29sczMKIAotU1JDUkVWID89ICIxNTY2ZWNkYjAxMjE2ZWNlNzM4NjRjMTVjNzgxZmRlZmU5YWY1ZTM3IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1zdW1vIFwKK1NSQ1JFViA/PSAiNTMzMzJjOWYxYmQyNzBmMzRhMjkwZmVhNjhmZGUxZDNmZjQxZjg2ZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvcG9reTticmFuY2g9dGh1ZCBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKICAgICAgICAgICAgZmlsZTovL1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgXApAQCAtNTksOCArNTksMTAgQEAKIAljcCAke1dPUktESVJ9L1JFQURNRV9WaXJ0dWFsQm94X1RvYXN0ZXIudHh0ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvCiAKIAkjIENyZWF0ZSBhIHN5bWxpbmssIG5lZWRlZCBmb3Igb3V0LW9mLXRyZWUga2VybmVsIG1vZHVsZXMgYnVpbGQKLQlybSAtZiAgJHtJTUFHRV9ST09URlN9L2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkCi0JbG5yICR7SU1BR0VfUk9PVEZTfSR7S0VSTkVMX1NSQ19QQVRIfSAke0lNQUdFX1JPT1RGU30vbGliL21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQKKwlpZiBbICEgLWUgJHtJTUFHRV9ST09URlN9L2xpYi9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkIF07IHRoZW4KKwkJcm0gLWYgICR7SU1BR0VfUk9PVEZTfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorCQlsbnIgJHtJTUFHRV9ST09URlN9JHtLRVJORUxfU1JDX1BBVEh9ICR7SU1BR0VfUk9PVEZTfS9saWIvbW9kdWxlcy8ke0tFUk5FTF9WRVJTSU9OfS9idWlsZAorCWZpCiAKIAllY2hvICJJTkhFUklUICs9IFwicm1fd29ya1wiIiA+PiAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYnVpbGQvY29uZi9hdXRvLmNvbmYKIAllY2hvICJleHBvcnQgTENfQUxMPWVuX1VTLnV0ZjgiID4+ICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmJhc2hyYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKaW5kZXggNmRlODYwZS4uN2RmOGFiMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCkBAIC0yNyw3ICsyNyw1IEBACiBJTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgogSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCiAKLUJBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgotCiAjIFVzZSB0aGUgc2FtZSByZXN0cmljdGlvbiBhcyBpbml0cmFtZnMtbGl2ZS1pbnN0YWxsCiBDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0KS4qLWxpbnV4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKaW5kZXggNTFkMDhhMC4uMGVjYTZkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCkBAIC01LDYgKzUsOCBAQAogYWN0dWFsbHkgZ2VuZXJhdGUgYW4gaW1hZ2UgYnV0IHJhdGhlciBnZW5lcmF0ZXMgYm9vdCBhbmQgcm9vdGZzIGFydGlmYWN0cyBcCiB0aGF0IGNhbiBzdWJzZXF1ZW50bHkgYmUgcGlja2VkIHVwIGJ5IGV4dGVybmFsIGltYWdlIGdlbmVyYXRpb24gdG9vbHMgc3VjaCBhcyB3aWMuIgogCitWSVJUVUFMLVJVTlRJTUVfZGV2X21hbmFnZXIgPz0gImJ1c3lib3gtbWRldiIKKwogUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1saXZlLWJvb3QtdGlueSBwYWNrYWdlZ3JvdXAtY29yZS1ib290IGRyb3BiZWFyICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9ICR7VklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyfSBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCiAKICMgRG8gbm90IHBvbGx1dGUgdGhlIGluaXRyZCBpbWFnZSB3aXRoIHJvb3RmcyBmZWF0dXJlcwpAQCAtMjMsOCArMjUsNiBAQAogSU1BR0VfUk9PVEZTX1NJWkUgPSAiODE5MiIKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICIwIgogCi1CQURfUkVDT01NRU5EQVRJT05TICs9ICJidXN5Ym94LXN5c2xvZyIKLQogIyBVc2UgdGhlIHNhbWUgcmVzdHJpY3Rpb24gYXMgaW5pdHJhbWZzLWxpdmUtaW5zdGFsbAogQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaAppbmRleCA4MmIwYWE4Li5iNjg1NWI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtMjkxLDcgKzI5MSw3IEBACiAKIHN5bmMKIAotZWNobyAiUmVtb3ZlIHlvdXIgaW5zdGFsbGF0aW9uIG1lZGlhLCBhbmQgcHJlc3MgRU5URVIiCitlY2hvICJJbnN0YWxsYXRpb24gc3VjY2Vzc2Z1bC4gUmVtb3ZlIHlvdXIgaW5zdGFsbGF0aW9uIG1lZGlhIGFuZCBwcmVzcyBFTlRFUiB0byByZWJvb3QuIgogCiByZWFkIGVudGVyCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCmluZGV4IDQ2Y2FiNmMuLjY1MTgzZDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaApAQCAtOTUsOCArOTUsMTEgQEAKICAgICAjIE1vdmUgdGhlIG1vdW50IHBvaW50cyBvZiBzb21lIGZpbGVzeXN0ZW1zIG92ZXIgdG8KICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdG9yaWVzIHVuZGVyIHRoZSByZWFsIHJvb3QgZmlsZXN5c3RlbS4KICAgICBmb3IgZGlyIGluIGBhd2sgJy9cL2Rldi4qIFwvcnVuXC9tZWRpYS97cHJpbnQgJDJ9JyAvcHJvYy9tb3VudHNgOyBkbwotICAgICAgICBta2RpciAtcCAgJHtST09UX01PVU5UfS9tZWRpYS8ke2RpciMjKi99Ci0gICAgICAgIG1vdW50IC1uIC0tbW92ZSAkZGlyICR7Uk9PVF9NT1VOVH0vbWVkaWEvJHtkaXIjIyovfQorICAgICAgICAjIFBhcnNlIGFueSBPQ1Qgb3IgSEVYIGVuY29kZWQgY2hhcnMgc3VjaCBhcyBzcGFjZXMKKyAgICAgICAgIyBpbiB0aGUgbW91bnQgcG9pbnRzIHRvIGFjdHVhbCBBU0NJSSBjaGFycworICAgICAgICBkaXI9YHByaW50ZiAkZGlyYAorICAgICAgICBta2RpciAtcCAiJHtST09UX01PVU5UfS9tZWRpYS8ke2RpciMjKi99IgorICAgICAgICBtb3VudCAtbiAtLW1vdmUgIiRkaXIiICIke1JPT1RfTU9VTlR9L21lZGlhLyR7ZGlyIyMqL30iCiAgICAgZG9uZQogICAgIG1vdW50IC1uIC0tbW92ZSAvcHJvYyAke1JPT1RfTU9VTlR9L3Byb2MKICAgICBtb3VudCAtbiAtLW1vdmUgL3N5cyAke1JPT1RfTU9VTlR9L3N5cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvaW5pdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL2luaXQKaW5kZXggMzc1MjdhOC4uM2M3ZTA5NCAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvaW5pdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9pbml0CkBAIC04NCw3ICs4NCw3IEBACiAjIHBvcHVsYXRlIGJvb3RwYXJhbSBlbnZpcm9ubWVudAogZm9yIHAgaW4gYGNhdCAvcHJvYy9jbWRsaW5lYDsgZG8KIAlvcHQ9YGVjaG8gJHAgfCBjdXQgLWQnPScgLWYxYAotCW9wdD1gZWNobyAkb3B0IHwgdHIgJy4tJyAnX18nYAorCW9wdD1gZWNobyAkb3B0IHwgc2VkIC1lICd5Ly4tL19fLydgCiAJaWYgWyAiYGVjaG8gJHAgfCBjdXQgLWQnPScgLWYxYCIgPSAiJHAiIF07IHRoZW4KIAkJZXZhbCAiYm9vdHBhcmFtXyR7b3B0fT10cnVlIgogCWVsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL25mc3Jvb3RmcyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL25mc3Jvb3RmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjdlZTRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbmZzcm9vdGZzCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCituZnNyb290ZnNfZW5hYmxlZCgpIHsKKwlpZiBbICR7Ym9vdHBhcmFtX3Jvb3R9ICE9ICIvZGV2L25mcyIgXSB8fCBbIC16ICR7Ym9vdHBhcmFtX25mc3Jvb3R9IF07IHRoZW4KKwkJcmV0dXJuIDEKKwlmaQorCXJldHVybiAwCit9CisKK25mc3Jvb3Rmc19ydW4oKSB7CisJbG9jYWwgbmZzX29wdHMKKwlsb2NhbCBsb2NhdGlvbgorCWxvY2FsIGZsYWdzCisJbG9jYWwgc2VydmVyX2lwCisKKwluZnNfb3B0cz0iIgorCWlmIFsgIiR7Ym9vdHBhcmFtX25mc3Jvb3QjKix9IiAhPSAiJHtib290cGFyYW1fbmZzcm9vdH0iIF07IHRoZW4KKwkJbmZzX29wdHM9Ii1vICR7Ym9vdHBhcmFtX25mc3Jvb3QjKix9IgorCWZpCisKKwlsb2NhdGlvbj0iJHtib290cGFyYW1fbmZzcm9vdCUlLCp9IgorCWlmIFsgIiR7bG9jYXRpb24jKjp9IiA9ICIke2xvY2F0aW9ufSIgXTsgdGhlbgorCQkjIHNlcnZlci1pcCBub3QgZ2l2ZW4uIEdldCBzZXJ2ZXIgaXAgZnJvbSBpcCBvcHRpb24KKwkJc2VydmVyX2lwPSIiCisJCWlmIFsgIiR7Ym9vdHBhcmFtX2lwIyo6fSIgIT0gIiR7Ym9vdHBhcmFtX2lwfSIgXTsgdGhlbgorCQkJc2VydmVyX2lwPSQoZWNobyAiJGJvb3RwYXJhbV9pcCIgfCBjdXQgLWQ6IC1mMikKKwkJZmkKKworCQlpZiBbIC16ICIkc2VydmVyX2lwIiBdOyB0aGVuCisJCQlmYXRhbCAiU2VydmVyIElQIGlzIG5vdCBzZXQuIFVwZGF0ZSBpcCBvciBuZnNyb290IG9wdGlvbnMuIgorCQlmaQorCQlsb2NhdGlvbj0ke3NlcnZlcl9pcH06JHtsb2NhdGlvbn0KKwlmaQorCisJZmxhZ3M9Ii1vIG5vbG9jayIKKwlpZiBbIC1uICIkYm9vdHBhcmFtX3JvIiBdICYmICEgZWNobyAiJGJvb3RwYXJhbV9yb290ZmxhZ3MiIHwgZ3JlcCAtdyAtcSAicm8iOyB0aGVuCisJCWlmIFsgIC1uICIkYm9vdHBhcmFtX3Jvb3RmbGFncyIgXTsgdGhlbgorCQkJYm9vdHBhcmFtX3Jvb3RmbGFncz0iJGJvb3RwYXJhbV9yb290ZmxhZ3MsIgorCQlmaQorCQlib290cGFyYW1fcm9vdGZsYWdzPSIke2Jvb3RwYXJhbV9yb290ZmxhZ3N9cm8iCisJZmkKKwlpZiBbIC1uICIkYm9vdHBhcmFtX3Jvb3RmbGFncyIgXTsgdGhlbgorCQlmbGFncz0iJGZsYWdzIC1vICRib290cGFyYW1fcm9vdGZsYWdzIgorCWZpCisKKwltb3VudCAtdCBuZnMgJHtmbGFnc30gJHtuZnNfb3B0c30gJHtsb2NhdGlvbn0gJHtST09URlNfRElSfQorfQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29ya18xLjAuYmIKaW5kZXggNzVkOTY1Zi4uNjYwMzQzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYgpAQCAtMiw2ICsyLDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiBSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30iCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLXN5c2xvZ30iCiAKIFBSID0gInI0IgogCkBAIC05LDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICJmaWxlOi8vaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9leGVjIFwKKyAgICAgICAgICAgZmlsZTovL25mc3Jvb3RmcyBcCiAgICAgICAgICAgIGZpbGU6Ly9yb290ZnMgXAogICAgICAgICAgICBmaWxlOi8vZmluaXNoIFwKICAgICAgICAgICAgZmlsZTovL21kZXYgXApAQCAtMjQsNiArMjYsNyBAQAogCiAgICAgIyBiYXNlCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9L2luaXQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNyb290ZnMgJHtEfS9pbml0LmQvODUtbmZzcm9vdGZzCiAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcm9vdGZzICR7RH0vaW5pdC5kLzkwLXJvb3RmcwogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2ZpbmlzaCAke0R9L2luaXQuZC85OS1maW5pc2gKIApAQCAtNTMsNiArNTYsNyBAQAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1tZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtdWRldiBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWUyZnMgXAorICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1uZnNyb290ZnMgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1yb290ZnMgXAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1kZWJ1ZyBcCiAgICAgICAgICAgICIKQEAgLTgzLDYgKzg3LDEwIEBACiBSREVQRU5EU19pbml0cmFtZnMtbW9kdWxlLWUyZnMgPSAiJHtQTn0tYmFzZSIKIEZJTEVTX2luaXRyYW1mcy1tb2R1bGUtZTJmcyA9ICIvaW5pdC5kLzEwLWUyZnMiCiAKK1NVTU1BUllfaW5pdHJhbWZzLW1vZHVsZS1uZnNyb290ZnMgPSAiaW5pdHJhbWZzIHN1cHBvcnQgZm9yIGxvY2F0aW5nIGFuZCBtb3VudGluZyB0aGUgcm9vdCBwYXJ0aXRpb24gdmlhIG5mcyIKK1JERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtbmZzcm9vdGZzID0gIiR7UE59LWJhc2UiCitGSUxFU19pbml0cmFtZnMtbW9kdWxlLW5mc3Jvb3RmcyA9ICIvaW5pdC5kLzg1LW5mc3Jvb3RmcyIKKwogU1VNTUFSWV9pbml0cmFtZnMtbW9kdWxlLXJvb3RmcyA9ICJpbml0cmFtZnMgc3VwcG9ydCBmb3IgbG9jYXRpbmcgYW5kIG1vdW50aW5nIHRoZSByb290IHBhcnRpdGlvbiIKIFJERVBFTkRTX2luaXRyYW1mcy1tb2R1bGUtcm9vdGZzID0gIiR7UE59LWJhc2UiCiBGSUxFU19pbml0cmFtZnMtbW9kdWxlLXJvb3RmcyA9ICIvaW5pdC5kLzkwLXJvb3RmcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCmluZGV4IGY1ODhhMTAuLmNjODQyYWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtNiw2ICs2LDcgQEAKIFBSID0gInIxIgogCiBSREVQRU5EU18ke1BOfSA9ICJwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyBkb3Nmc3Rvb2xzIHV0aWwtbGludXgtYmxraWQgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30iCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzLXN5c2xvZ30iCiAKIFMgPSAiJHtXT1JLRElSfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCmluZGV4IDkyMjJkNTcuLjQ4ZmMwYzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbF8xLjAuYmIKQEAgLTgsNiArOCw3IEBACiBTID0gIiR7V09SS0RJUn0iCiAKIFJERVBFTkRTXyR7UE59ID0gImdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSIKIAogZG9faW5zdGFsbCgpIHsKICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLnNoICR7RH0vaW5zdGFsbC5zaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmlfMS4wLmJiCmluZGV4IDc4YTYxY2QuLjUyMzEzOGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIKQEAgLTIsNiArMiw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIHBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSIKIAogUFIgPSAicjQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGxfMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKaW5kZXggMDRlOTBjZC4uNTY4OThlOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKQEAgLTIsNiArMiw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIGdydWIgcGFydGVkIGUyZnNwcm9ncy1ta2UyZnMgdXRpbC1saW51eC1ibGtpZCAke1ZJUlRVQUwtUlVOVElNRV9iYXNlLXV0aWxzfSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSIKIAogIyBUaGUgc2FtZSByZXN0cmljdGlvbiBhcyBncnViCiBDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCmluZGV4IDNjZjMyNDMuLjZmOTY1YTYgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCkBAIC0xMTIsNyArMTEyLDYgQEAKIAl9CiAKIAlDRkdGSUxFPSIkMSIKLQlbIGBiYXNlbmFtZSAiJHtDRkdGSUxFfSJgID0gIiR7Q09SRURFRn0iIF0gJiYgcmV0dXJuIDAKIAogCVRNUF9JTlRFUk1FRD0iJHtUTVBST09UfS90bXAuJCQiCiAJVE1QX0RFRklORUQ9IiR7VE1QUk9PVH0vdG1wZGVmaW5lZC4kJCIKQEAgLTE1NCw4ICsxNTMsMTEgQEAKIAogYXBwbHlfY2ZnZmlsZSgpIHsKIAlDRkdGSUxFPSIkMSIKKwlTS0lQX1JFUVVJUkVNRU5UUz0iJDIiCiAKLQljaGVja19yZXF1aXJlbWVudHMgIiR7Q0ZHRklMRX0iIHx8IHsKKwlbICIke1ZFUkJPU0V9IiAhPSAibm8iIF0gJiYgZWNobyAiQXBwbHlpbmcgJHtDRkdGSUxFfSIKKworCVsgIiR7U0tJUF9SRVFVSVJFTUVOVFN9IiA9PSAieWVzIiBdIHx8IGNoZWNrX3JlcXVpcmVtZW50cyAiJHtDRkdGSUxFfSIgfHwgewogCQllY2hvICJTa2lwcGluZyAke0NGR0ZJTEV9IgogCQlyZXR1cm4gMQogCX0KQEAgLTIzMSwxMCArMjMzLDM3IEBACiAJc2ggJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlCiBlbHNlCiAJcm0gLWYgJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlICR7Uk9PVF9ESVJ9L2V0Yy92b2xhdGlsZS5jYWNoZS5idWlsZAotCWZvciBmaWxlIGluIGBscyAtMSAiJHtDRkdESVJ9IiB8IHNvcnRgOyBkbwotCQlhcHBseV9jZmdmaWxlICIke0NGR0RJUn0vJHtmaWxlfSIKKworCSMgQXBwbHkgdGhlIGNvcmUgZmlsZSB3aXRoIG91dCBjaGVja2luZyByZXF1aXJlbWVudHMuICR7VE1QUk9PVH0gaXMKKwkjIG5lZWRlZCBieSBjaGVja19yZXF1aXJlbWVudHMgYnV0IGlzIHNldHVwIGJ5IHRoaXMgZmlsZSwgc28gaXQgbXVzdCBiZQorCSMgcHJvY2Vzc2VkIGZpcnN0IGFuZCB3aXRob3V0IGJlaW5nIGNoZWNrZWQuCisJWyAtZSAiJHtDRkdESVJ9LyR7Q09SRURFRn0iIF0gJiYgYXBwbHlfY2ZnZmlsZSAiJHtDRkdESVJ9LyR7Q09SRURFRn0iICJ5ZXMiCisKKwkjIEZhc3QgcGF0aDogY2hlY2tfcmVxdWlyZW1lbnRzIGlzIHNsb3cgYW5kIG1vc3Qgb2YgdGhlIHRpbWUgZG9lc24ndAorCSMgZmluZCBhbnkgcHJvYmxlbXMuIElmIHRoZXJlIGFyZSBhIGxvdCBvZiBjb25maWcgZmlsZXMsIGl0IGlzIG11Y2gKKwkjIGZhc3RlciB0byB0byBjb25jYXRlbmF0ZSB0aGVtIGFsbCB0b2dldGhlciBhbmQgcHJvY2VzcyB0aGVtIG9uY2UgdG8KKwkjIGF2b2lkIHRoZSBvdmVyaGVhZCBvZiBjYWxsaW5nIGNoZWNrX3JlcXVpcmVtZW50cyByZXBlYXRlZGx5CisJVE1QX0ZJTEU9IiR7VE1QUk9PVH0vdG1wX3ZvbGF0aWxlLiQkIgorCXJtIC1mICIkVE1QX0ZJTEUiCisKKwlDRkdGSUxFUz0iYGxzIC0xICIke0NGR0RJUn0iIHwgZ3JlcCAtdiAiXiR7Q09SRURFRn1cJCIgfCBzb3J0YCIKKwlmb3IgZmlsZSBpbiAke0NGR0ZJTEVTfTsgZG8KKwkJY2F0ICIke0NGR0RJUn0vJHtmaWxlfSIgPj4gIiRUTVBfRklMRSIKIAlkb25lCiAKKwlpZiBjaGVja19yZXF1aXJlbWVudHMgIiRUTVBfRklMRSIKKwl0aGVuCisJCWFwcGx5X2NmZ2ZpbGUgIiRUTVBfRklMRSIgInllcyIKKwllbHNlCisJCSMgU2xvdyBwYXRoOiBPbmUgb3IgbW9yZSBjb25maWcgZmlsZXMgZmFpbGVkIHJlcXVpcmVtZW50cy4KKwkJIyBQcm9jZXNzIGVhY2ggb25lIGluZGl2aWR1YWxseSBzbyB0aGUgb2ZmZW5kaW5nIG9uZSBjYW4gYmUKKwkJIyBza2lwcGVkCisJCWZvciBmaWxlIGluICR7Q0ZHRklMRVN9OyBkbworCQkJYXBwbHlfY2ZnZmlsZSAiJHtDRkdESVJ9LyR7ZmlsZX0iCisJCWRvbmUKKwlmaQorCXJtICIkVE1QX0ZJTEUiCisKIAlbIC1lICR7Uk9PVF9ESVJ9L2V0Yy92b2xhdGlsZS5jYWNoZS5idWlsZCBdICYmIHN5bmMgJiYgbXYgJHtST09UX0RJUn0vZXRjL3ZvbGF0aWxlLmNhY2hlLmJ1aWxkICR7Uk9PVF9ESVJ9L2V0Yy92b2xhdGlsZS5jYWNoZQogZmkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcmVhZC1vbmx5LXJvb3Rmcy1ob29rLnNoCmluZGV4IDFhMDMyOGQuLmJkNDQ1ZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3JlYWQtb25seS1yb290ZnMtaG9vay5zaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9yZWFkLW9ubHktcm9vdGZzLWhvb2suc2gKQEAgLTMxLDggKzMxLDEzIEBACiAJaWYgWyBgaXNfb25fcmVhZF9vbmx5X3BhcnRpdGlvbiAvdmFyL2xpYmAgPSAieWVzIiBdOyB0aGVuCiAJCWdyZXAgLXEgInRtcGZzIC92YXIvdm9sYXRpbGUiIC9wcm9jL21vdW50cyB8fCBtb3VudCAvdmFyL3ZvbGF0aWxlCiAJCW1rZGlyIC1wIC92YXIvdm9sYXRpbGUvbGliCi0JCWNwIC1hIC92YXIvbGliLyogL3Zhci92b2xhdGlsZS9saWIKLQkJbW91bnQgLS1iaW5kIC92YXIvdm9sYXRpbGUvbGliIC92YXIvbGliCisJCW1rZGlyIC1wIC92YXIvdm9sYXRpbGUvLmxpYi13b3JrCisJCSMgVHJ5IHRvIG1vdW50IHVzaW5nIG92ZXJsYXksIHdoaWNoIGlzIG11Y2ggZmFzdGVyIHRoYW4gY29weWluZworCQkjIGZpbGVzLiBJZiB0aGF0IGZhaWxzLCBmYWxsYmFjayB0byB0aGUgc2xvd2VyIGNvcHkKKwkJaWYgISBtb3VudCAtdCBvdmVybGF5IG92ZXJsYXkgLW9sb3dlcmRpcj0vdmFyL2xpYix1cHBlcmRpcj0vdmFyL3ZvbGF0aWxlL2xpYix3b3JrZGlyPS92YXIvdm9sYXRpbGUvLmxpYi13b3JrIC92YXIvbGliID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJCWNwIC1hIC92YXIvbGliLyogL3Zhci92b2xhdGlsZS9saWIKKwkJCW1vdW50IC0tYmluZCAvdmFyL3ZvbGF0aWxlL2xpYiAvdmFyL2xpYgorCQlmaQogCWZpCiBmaQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZDY3YTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRlbmRlZCBjcnlwdG9ncmFwaGljIGxpYnJhcnkgKGZyb20gZ2xpYmMpIgotREVTQ1JJUFRJT04gPSAiRm9ya2VkIGNvZGUgZnJvbSBnbGliYyBsaWJhcnkgdG8gZXh0cmFjdCBvbmx5IGNyeXB0byBwYXJ0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0lORzttZDU9ZDFjYzE4ZjUxMmRlZDNiZDYwMDBmMzcyOWYzMWJlMDggXAotICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVNSQ1JFViA/PSAiMDg5NDc5YmIyNGFjZDE2ODYxMzc1N2E2ZjEyZDYzY2FhOTU0MTZiNCIKLVNSQ0JSQU5DSCA/PSAibWFzdGVyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IFwKLSAgICAgICAgICAgIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0gLXN0ZD1nbnU5OSIKLVRBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCi0KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJSZWNpcGUgb25seSBhcHBsaWVzIGluIG5hdGl2ZXNkayBjYXNlIGZvciBub3ciKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjVhYTk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuMS4xLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiRXh0ZW5kZWQgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IChmcm9tIGdsaWJjKSIKK0RFU0NSSVBUSU9OID0gIkZvcmtlZCBjb2RlIGZyb20gZ2xpYmMgbGliYXJ5IHRvIGV4dHJhY3Qgb25seSBjcnlwdG8gcGFydC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNJTkc7bWQ1PWNiM2NhNGNhYmQyNDQ3YTM3YmYxODZmYWQ2Zjc5ODUyIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworU1JDUkVWID89ICIyMWI0NTViNjhiYWFkMjc5ZTZhMzkzNmZhY2VkMTZjNWU1NjM0Mzc2IgorU1JDQlJBTkNIID89ICJkZXZlbG9wIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0LmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IFwKKyAgICAgICAgICAgIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0gLXN0ZD1nbnU5OSIKK1RBUkdFVF9DUFBGTEFHUyA9ICItSSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7aW5jbHVkZWRpcn0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi8wMDAxLUZpeC1pbmZpbml0ZS1sb29wLWluLUxaTUEtZGVjb21wcmVzc2lvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1GaXgtaW5maW5pdGUtbG9vcC1pbi1MWk1BLWRlY29tcHJlc3Npb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZjMjI5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1GaXgtaW5maW5pdGUtbG9vcC1pbi1MWk1BLWRlY29tcHJlc3Npb24ucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSAyOGE5ZGM2NDJmZmQ3NTlkZjFlNDhiZTI0N2ExMTRmNDQwYTZjMTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmljayBXZWxsbmhvZmVyIDx3ZWxsbmhvZmVyQGFldnVtLmRlPgorRGF0ZTogTW9uLCAzMCBKdWwgMjAxOCAxMzoxNDoxMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW5maW5pdGUgbG9vcCBpbiBMWk1BIGRlY29tcHJlc3Npb24KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQ2hlY2sgdGhlIGxpYmx6bWEgZXJyb3IgY29kZSBtb3JlIHRob3JvdWdobHkgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMuCisKK0Nsb3NlczogaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvaXNzdWVzLzEzCitDbG9zZXM6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ5MTQKKworVGhpcyBpcyBDVkUtMjAxOC05MjUxIGFuZCBDVkUtMjAxOC0xNDU2Ny4KKworVGhhbmtzIHRvIERvbmdsaWFuZyBNdSBhbmQgU2ltb24gV8O2cm5lciBmb3IgdGhlIHJlcG9ydHMuCisKK0NWRTogQ1ZFLTIwMTgtOTI1MQorQ1ZFOiBDVkUtMjAxOC0xNDU2NworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvY29tbWl0LzIyNDBmYmY1OTEyMDU0YWYwMjVmYjZlMDFlMjYzNzUxMDAyNzVlNzRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyB4emxpYi5jIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS94emxpYi5jIGIveHpsaWIuYworaW5kZXggYTgzOTE2OS4uMGJhODhjZiAxMDA2NDQKKy0tLSBhL3h6bGliLmMKKysrKyBiL3h6bGliLmMKK0BAIC01NjIsNiArNTYyLDEwIEBAIHh6X2RlY29tcCh4el9zdGF0ZXAgc3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvcjogaW5mbGF0ZSBzdHJlYW0gY29ycnVwdCIpOworICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogRklYTUU6IFJlbWFwcGluZyBhIGNvdXBsZSBvZiBlcnJvciBjb2RlcyBhbmQgZmFsbGluZyB0aHJvdWdoCisrICAgICAgICAgICAgICogdG8gdGhlIExaTUEgZXJyb3IgaGFuZGxpbmcgbG9va3MgZnJhZ2lsZS4KKysgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBpZiAocmV0ID09IFpfTUVNX0VSUk9SKQorICAgICAgICAgICAgICAgICByZXQgPSBMWk1BX01FTV9FUlJPUjsKKyAgICAgICAgICAgICBpZiAocmV0ID09IFpfREFUQV9FUlJPUikKK0BAIC01ODcsNiArNTkxLDExIEBAIHh6X2RlY29tcCh4el9zdGF0ZXAgc3RhdGUpCisgICAgICAgICAgICAgeHpfZXJyb3Ioc3RhdGUsIExaTUFfUFJPR19FUlJPUiwgImNvbXByZXNzaW9uIGVycm9yIik7CisgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorKyAgICAgICAgaWYgKChzdGF0ZS0+aG93ICE9IEdaSVApICYmCisrICAgICAgICAgICAgKHJldCAhPSBMWk1BX09LKSAmJiAocmV0ICE9IExaTUFfU1RSRUFNX0VORCkpIHsKKysgICAgICAgICAgICB4el9lcnJvcihzdGF0ZSwgcmV0LCAibHptYSBlcnJvciIpOworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKyAgICAgfSB3aGlsZSAoc3RybS0+YXZhaWxfb3V0ICYmIHJldCAhPSBMWk1BX1NUUkVBTV9FTkQpOworIAorICAgICAvKiB1cGRhdGUgYXZhaWxhYmxlIG91dHB1dCBhbmQgY3JjIGNoZWNrIHZhbHVlICovCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTgtMTQ0MDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDE4LTE0NDA0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjNlN2IyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTgtMTQ0MDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIDI5MTE1ODY4YzkyYzgxYTQxMTliMDVlYTk1YjNjOTE2MDhhMGI2ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIFdlbGxuaG9mZXIgPHdlbGxuaG9mZXJAYWV2dW0uZGU+Ci1EYXRlOiBNb24sIDMwIEp1bCAyMDE4IDEyOjU0OjM4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBudWxscHRyIGRlcmVmIHdpdGggWFBhdGggbG9naWMgb3BzCi0KLUlmIHRoZSBYUGF0aCBzdGFjayBpcyBjb3JydXB0ZWQsIGZvciBleGFtcGxlIGJ5IGEgbWlzYmVoYXZpbmcgZXh0ZW5zaW9uCi1mdW5jdGlvbiwgdGhlICJhbmQiIGFuZCAib3IiIFhQYXRoIG9wZXJhdG9ycyBjb3VsZCBkZXJlZmVyZW5jZSBOVUxMCi1wb2ludGVycy4gQ2hlY2sgdGhhdCB0aGUgWFBhdGggc3RhY2sgaXNuJ3QgZW1wdHkgYW5kIG9wdGltaXplIHRoZQotbG9naWMgb3BlcmF0b3JzIHNsaWdodGx5LgotCi1DbG9zZXM6IGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2lzc3Vlcy81Ci0KLUFsc28gc2VlCi1odHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTkwMTgxNwotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTg1Ci0KLVRoaXMgaXMgQ1ZFLTIwMTgtMTQ0MDQuCi0KLVRoYW5rcyB0byBHdXkgSW5iYXIgZm9yIHRoZSByZXBvcnQuCi0KLUNWRTogQ1ZFLTIwMTgtMTQ0MDQKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2NvbW1pdC9hNDM2Mzc0OTk0YzQ3YjEyZDVkZTFiOGIxZDE5MWEwOThmYTIzNTk0XQotU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLS0tLQotIHhwYXRoLmMgfCAxMCArKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCi1pbmRleCAzNTI3NDczMS4uM2ZjZGM5ZTEgMTAwNjQ0Ci0tLS0gYS94cGF0aC5jCi0rKysgYi94cGF0aC5jCi1AQCAtMTMzMzcsOSArMTMzMzcsOCBAQCB4bWxYUGF0aENvbXBPcEV2YWwoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIHhtbFhQYXRoU3RlcE9wUHRyIG9wKQotIAkJcmV0dXJuKDApOwotIAkgICAgfQotICAgICAgICAgICAgIHhtbFhQYXRoQm9vbGVhbkZ1bmN0aW9uKGN0eHQsIDEpOwotLSAgICAgICAgICAgIGFyZzEgPSB2YWx1ZVBvcChjdHh0KTsKLS0gICAgICAgICAgICBhcmcxLT5ib29sdmFsICY9IGFyZzItPmJvb2x2YWw7Ci0tICAgICAgICAgICAgdmFsdWVQdXNoKGN0eHQsIGFyZzEpOwotKyAgICAgICAgICAgIGlmIChjdHh0LT52YWx1ZSAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICBjdHh0LT52YWx1ZS0+Ym9vbHZhbCAmPSBhcmcyLT5ib29sdmFsOwotIAkgICAgeG1sWFBhdGhSZWxlYXNlT2JqZWN0KGN0eHQtPmNvbnRleHQsIGFyZzIpOwotICAgICAgICAgICAgIHJldHVybiAodG90YWwpOwotICAgICAgICAgY2FzZSBYUEFUSF9PUF9PUjoKLUBAIC0xMzM2Myw5ICsxMzM2Miw4IEBAIHhtbFhQYXRoQ29tcE9wRXZhbCh4bWxYUGF0aFBhcnNlckNvbnRleHRQdHIgY3R4dCwgeG1sWFBhdGhTdGVwT3BQdHIgb3ApCi0gCQlyZXR1cm4oMCk7Ci0gCSAgICB9Ci0gICAgICAgICAgICAgeG1sWFBhdGhCb29sZWFuRnVuY3Rpb24oY3R4dCwgMSk7Ci0tICAgICAgICAgICAgYXJnMSA9IHZhbHVlUG9wKGN0eHQpOwotLSAgICAgICAgICAgIGFyZzEtPmJvb2x2YWwgfD0gYXJnMi0+Ym9vbHZhbDsKLS0gICAgICAgICAgICB2YWx1ZVB1c2goY3R4dCwgYXJnMSk7Ci0rICAgICAgICAgICAgaWYgKGN0eHQtPnZhbHVlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgIGN0eHQtPnZhbHVlLT5ib29sdmFsIHw9IGFyZzItPmJvb2x2YWw7Ci0gCSAgICB4bWxYUGF0aFJlbGVhc2VPYmplY3QoY3R4dC0+Y29udGV4dCwgYXJnMik7Ci0gICAgICAgICAgICAgcmV0dXJuICh0b3RhbCk7Ci0gICAgICAgICBjYXNlIFhQQVRIX09QX0VRVUFMOgotLS0gCi0yLjE5LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9hbnNpZGVjbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvYW5zaWRlY2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwODVjNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9hbnNpZGVjbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNhZGx5IGNtYWtlIGlzIGJyb2tlbi4gSWYgaXQgc2VlcyB0aGlzIHJlZmVyZW5jZSBhbmQgYW5zaWRlY2wgaXMgcHJlc2VudCwgaXQgd2lsbCBhZGQgYSAKLWRlcGVuZGVuY3kgdXBvbiBpdCwgZXZlbiBpZiBIQVZFX0FOU0lERUNfSCBpcyBuZXZlciBzZXQuCi0KLVRoZSBlYXNpZXN0IHNvbHV0aW9uIGlzIHRvIHJlbW92ZSB0aGVzZSBsaW5lcywgb3RoZXJ3aXNlIHJlY2lwZXMgbGlrZSBsaWJ6eXBwIGNhbiBoYXZlIGEgCi1kZXBlbmRlbmN5IG9uIHRoZSBhbnNpZGVjbC5oIGhlYWRlciB2aWEgY21ha2UuIFRoaXMgY2FuIGxlYWQgdG8gb2RkIHJlc3VsdHMgaWYgdGhlIAotaGVhZGVyIGlzIHJlbW92ZWQgKGNsZWFuIGJpbnV0aWxzKSBhbmQgdGhlbiB0aGUgY29kZSBpcyByZWNvbXBpbGVkLgotCi1SUCAyMDEyLzcvMTAKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtpdHMgcmVhbGx5IGEgY21ha2UgYnVnXQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAwMjYwMjgxLi5mZGI1OGU5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00ODQgKzQ4MywwIEBAIEFDX0NIRUNLX0hFQURFUlMoW3RpbWUuaF0pCi0tQUNfQ0hFQ0tfSEVBREVSUyhbYW5zaWRlY2wuaF0pCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluIGIvaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi1pbmRleCBiMTczYmU5Li5kMTBmOTc1IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWJ4bWwveG1sdmVyc2lvbi5oLmluCi0rKysgYi9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLUBAIC00MTMsMyArNDEyLDAgQEAgWE1MUFVCRlVOIHZvaWQgWE1MQ0FMTCB4bWxDaGVja1ZlcnNpb24oaW50IHZlcnNpb24pOwotLSNpZmRlZiBIQVZFX0FOU0lERUNMX0gKLS0jaW5jbHVkZSA8YW5zaWRlY2wuaD4KLS0jZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE3LTg4NzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1DVkUtMjAxNy04ODcyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyYTRiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1DVkUtMjAxNy04ODcyLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctODg3MgorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAxMjMyMzRmMmNmY2Q5ZTliOWY4MzA0N2VlZTFkYzE3YjRjM2Y0NDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmljayBXZWxsbmhvZmVyIDx3ZWxsbmhvZmVyQGFldnVtLmRlPgorRGF0ZTogVHVlLCAxMSBTZXAgMjAxOCAxNDo1MjowNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBGcmVlIGlucHV0IGJ1ZmZlciBpbiB4bWxIYWx0UGFyc2VyCisKK1RoaXMgYXZvaWRzIG1pc2NhbGN1bGF0aW9uIG9mIGF2YWlsYWJsZSBieXRlcy4KKworVGhhbmtzIHRvIFl1bmhvIEtpbSBmb3IgdGhlIHJlcG9ydC4KKworQ2xvc2VzOiAjMjYKKy0tLQorIHBhcnNlci5jICAgICAgICAgICAgICAgICAgICAgfCAgNSArKysrKworIHJlc3VsdC9lcnJvcnMvNzU5NTczLnhtbC5lcnIgfCAxNyArKysrKysrLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCitpbmRleCBjYTlmZGUyYy4uNTgxM2E2NjQgMTAwNjQ0CistLS0gYS9wYXJzZXIuYworKysrIGIvcGFyc2VyLmMKK0BAIC0xMjQ2Miw3ICsxMjQ2MiwxMiBAQCB4bWxIYWx0UGFyc2VyKHhtbFBhcnNlckN0eHRQdHIgY3R4dCkgeworIAkgICAgY3R4dC0+aW5wdXQtPmZyZWUoKHhtbENoYXIgKikgY3R4dC0+aW5wdXQtPmJhc2UpOworIAkgICAgY3R4dC0+aW5wdXQtPmZyZWUgPSBOVUxMOworIAl9CisrICAgICAgICBpZiAoY3R4dC0+aW5wdXQtPmJ1ZiAhPSBOVUxMKSB7CisrICAgICAgICAgICAgeG1sRnJlZVBhcnNlcklucHV0QnVmZmVyKGN0eHQtPmlucHV0LT5idWYpOworKyAgICAgICAgICAgIGN0eHQtPmlucHV0LT5idWYgPSBOVUxMOworKyAgICAgICAgfQorIAljdHh0LT5pbnB1dC0+Y3VyID0gQkFEX0NBU1QiIjsKKysgICAgICAgIGN0eHQtPmlucHV0LT5sZW5ndGggPSAwOworIAljdHh0LT5pbnB1dC0+YmFzZSA9IGN0eHQtPmlucHV0LT5jdXI7CisgICAgICAgICBjdHh0LT5pbnB1dC0+ZW5kID0gY3R4dC0+aW5wdXQtPmN1cjsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3Jlc3VsdC9lcnJvcnMvNzU5NTczLnhtbC5lcnIgYi9yZXN1bHQvZXJyb3JzLzc1OTU3My54bWwuZXJyCitpbmRleCA1NTQwMzlmNi4uMzhlZjVjNDAgMTAwNjQ0CistLS0gYS9yZXN1bHQvZXJyb3JzLzc1OTU3My54bWwuZXJyCisrKysgYi9yZXN1bHQvZXJyb3JzLzc1OTU3My54bWwuZXJyCitAQCAtMjEsMTQgKzIxLDExIEBAIEVudGl0eTogbGluZSAxOgorICAgICAgICAgICAgIF4KKyAuL3Rlc3QvZXJyb3JzLzc1OTU3My54bWw6MTogcGFyc2VyIGVycm9yIDogaW50ZXJuYWwgZXJyb3I6IHhtbFBhcnNlSW50ZXJuYWxTdWJzZXQ6IGVycm9yIGRldGVjdGVkIGluIE1hcmt1cCBkZWNsYXJhdGlvbgorIAorLTw/aD8+PCFET0NUWVBFdFs8IUVMRU1FTlQgdCAoQSk+PCFFTlRJVFkgJSB4eCAnJiMzNzs8IVtJTkNMVURFWzAwMCYjMzc7JiMzMDAwOzAwCistICAgICBeCisrCisrXgorIC4vdGVzdC9lcnJvcnMvNzU5NTczLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBET0NUWVBFIGltcHJvcGVybHkgdGVybWluYXRlZAorLTw/aD8+PCFET0NUWVBFdFs8IUVMRU1FTlQgdCAoQSk+PCFFTlRJVFkgJSB4eCAnJiMzNzs8IVtJTkNMVURFWzAwMCYjMzc7JiMzMDAwOzAwCistICAgICBeCistLi90ZXN0L2Vycm9ycy83NTk1NzMueG1sOjE6IHBhcnNlciBlcnJvciA6IFN0YXJ0VGFnOiBpbnZhbGlkIGVsZW1lbnQgbmFtZQorLTw/aD8+PCFET0NUWVBFdFs8IUVMRU1FTlQgdCAoQSk+PCFFTlRJVFkgJSB4eCAnJiMzNzs8IVtJTkNMVURFWzAwMCYjMzc7JiMzMDAwOzAwCistICAgICAgXgorLS4vdGVzdC9lcnJvcnMvNzU5NTczLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBFeHRyYSBjb250ZW50IGF0IHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50CistPD9oPz48IURPQ1RZUEV0WzwhRUxFTUVOVCB0IChBKT48IUVOVElUWSAlIHh4ICcmIzM3OzwhW0lOQ0xVREVbMDAwJiMzNzsmIzMwMDA7MDAKKy0gICAgICBeCisrCisrXgorKy4vdGVzdC9lcnJvcnMvNzU5NTczLnhtbDoxOiBwYXJzZXIgZXJyb3IgOiBTdGFydCB0YWcgZXhwZWN0ZWQsICc8JyBub3QgZm91bmQKKysKKyteCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1DVkUtMjAxOC0xNDQwNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvZml4LUNWRS0yMDE4LTE0NDA0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjY4ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2ZpeC1DVkUtMjAxOC0xNDQwNC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitsaWJ4bWwyLTIuOS44OiBGaXggQ1ZFLTIwMTgtMTQ0MDQKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieG1sMi9pc3N1ZXMvNQorIC0tIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTAxODE3CisgLS0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTg1CisKK3hwYXRoOiBGaXggbnVsbHB0ciBkZXJlZiB3aXRoIFhQYXRoIGxvZ2ljIG9wcworCitJZiB0aGUgWFBhdGggc3RhY2sgaXMgY29ycnVwdGVkLCBmb3IgZXhhbXBsZSBieSBhIG1pc2JlaGF2aW5nIGV4dGVuc2lvbgorZnVuY3Rpb24sIHRoZSAiYW5kIiBhbmQgIm9yIiBYUGF0aCBvcGVyYXRvcnMgY291bGQgZGVyZWZlcmVuY2UgTlVMTAorcG9pbnRlcnMuIENoZWNrIHRoYXQgdGhlIFhQYXRoIHN0YWNrIGlzbid0IGVtcHR5IGFuZCBvcHRpbWl6ZSB0aGUKK2xvZ2ljIG9wZXJhdG9ycyBzbGlnaHRseS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvY29tbWl0L2E0MzYzNzQ5OTRjNDdiMTJkNWRlMWI4YjFkMTkxYTA5OGZhMjM1OTRdCitDVkU6IENWRS0yMDE4LTE0NDA0CitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL3hwYXRoLmMgYi94cGF0aC5jCitpbmRleCBmNDQwNjk2Li43NWNhYzVjIDEwMDY0NAorLS0tIGEveHBhdGguYworKysrIGIveHBhdGguYworQEAgLTEzMjk3LDkgKzEzMjk3LDggQEAgeG1sWFBhdGhDb21wT3BFdmFsKHhtbFhQYXRoUGFyc2VyQ29udGV4dFB0ciBjdHh0LCB4bWxYUGF0aFN0ZXBPcFB0ciBvcCkKKyAJCXJldHVybigwKTsKKyAJICAgIH0KKyAgICAgICAgICAgICB4bWxYUGF0aEJvb2xlYW5GdW5jdGlvbihjdHh0LCAxKTsKKy0gICAgICAgICAgICBhcmcxID0gdmFsdWVQb3AoY3R4dCk7CistICAgICAgICAgICAgYXJnMS0+Ym9vbHZhbCAmPSBhcmcyLT5ib29sdmFsOworLSAgICAgICAgICAgIHZhbHVlUHVzaChjdHh0LCBhcmcxKTsKKysJICAgIGlmIChjdHh0LT52YWx1ZSAhPSBOVUxMKQorKwkJY3R4dC0+dmFsdWUtPmJvb2x2YWwgJj0gYXJnMi0+Ym9vbHZhbDsKKyAJICAgIHhtbFhQYXRoUmVsZWFzZU9iamVjdChjdHh0LT5jb250ZXh0LCBhcmcyKTsKKyAgICAgICAgICAgICByZXR1cm4gKHRvdGFsKTsKKyAgICAgICAgIGNhc2UgWFBBVEhfT1BfT1I6CitAQCAtMTMzMjMsOSArMTMzMjIsOCBAQCB4bWxYUGF0aENvbXBPcEV2YWwoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIHhtbFhQYXRoU3RlcE9wUHRyIG9wKQorIAkJcmV0dXJuKDApOworIAkgICAgfQorICAgICAgICAgICAgIHhtbFhQYXRoQm9vbGVhbkZ1bmN0aW9uKGN0eHQsIDEpOworLSAgICAgICAgICAgIGFyZzEgPSB2YWx1ZVBvcChjdHh0KTsKKy0gICAgICAgICAgICBhcmcxLT5ib29sdmFsIHw9IGFyZzItPmJvb2x2YWw7CistICAgICAgICAgICAgdmFsdWVQdXNoKGN0eHQsIGFyZzEpOworKwkgICAgaWYgKGN0eHQtPnZhbHVlICE9IE5VTEwpCisrCQljdHh0LT52YWx1ZS0+Ym9vbHZhbCB8PSBhcmcyLT5ib29sdmFsOworIAkgICAgeG1sWFBhdGhSZWxlYXNlT2JqZWN0KGN0eHQtPmNvbnRleHQsIGFyZzIpOworICAgICAgICAgICAgIHJldHVybiAodG90YWwpOworICAgICAgICAgY2FzZSBYUEFUSF9PUF9FUVVBTDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVudGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVudGVzdC5wYXRjaAppbmRleCBjYjE3MWQ1Li41NDRkYzA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bnRlc3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW50ZXN0LnBhdGNoCkBAIC02LDggKzYsOCBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogCiBkaWZmIC11TnIgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi0tLS0gYS9NYWtlZmlsZS5hbQkyMDE3LTA4LTI4IDE1OjAxOjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGIvTWFrZWZpbGUuYW0JMjAxNy0wOS0wNSAwODowNjowNS43NTIyODczMjMgKzAyMDAKKy0tLSBhL01ha2VmaWxlLmFtCTIwMTctMTItMDIgMDk6NTg6MTAuMDAwMDAwMDAwICswMTAwCisrKysgYi9NYWtlZmlsZS5hbQkyMDE4LTAzLTIwIDA4OjI3OjM0LjM2MDUwNTg2NCArMDEwMAogQEAgLTIwMiw2ICsyMDIsMTUgQEAKICAjdGVzdE9PTV9ERVBFTkRFTkNJRVMgPSAkKERFUFMpCiAgI3Rlc3RPT01fTERBREQ9ICQoTERBRERTKQpAQCAtMjQsMTAgKzI0LDkgQEAKICBydW50ZXN0czogcnVudGVzdCQoRVhFRVhUKSB0ZXN0cmVjdXJzZSQoRVhFRVhUKSB0ZXN0YXBpJChFWEVFWFQpIFwKICAgICAgICAgICAgdGVzdGNoYXIkKEVYRUVYVCkgdGVzdGRpY3QkKEVYRUVYVCkgcnVueG1sY29uZiQoRVhFRVhUKQogIAlbIC1kIHRlc3QgICBdIHx8ICQoTE5fUykgJChzcmNkaXIpL3Rlc3QgICAuCi0KIGRpZmYgLXVOciBhL3J1bnN1aXRlLmMgYi9ydW5zdWl0ZS5jCi0tLS0gYS9ydW5zdWl0ZS5jCTIwMTMtMDQtMTIgMTY6MTc6MTEuNDYyODIzMjM4ICswMjAwCi0rKysgYi9ydW5zdWl0ZS5jCTIwMTMtMDQtMTcgMTQ6MDc6MjQuMzUyNjkzMjExICswMjAwCistLS0gYS9ydW5zdWl0ZS5jCTIwMTYtMDYtMDcgMTI6MDQ6MTQuMDAwMDAwMDAwICswMjAwCisrKysgYi9ydW5zdWl0ZS5jCTIwMTgtMDMtMjAgMDg6Mjc6NTcuNDc4ODE3MjQ3ICswMTAwCiBAQCAtMTE2Miw2ICsxMTYyLDcgQEAKICAKICAgICAgaWYgKGxvZ2ZpbGUgIT0gTlVMTCkKQEAgLTM3LDE3ICszNiwxOSBAQAogIH0KICAjZWxzZSAvKiAhU0NIRU1BUyAqLwogZGlmZiAtdU5yIGEvcnVudGVzdC5jIGIvcnVudGVzdC5jCi0tLS0gYS9ydW50ZXN0LmMJMjAxMy0wNC0xNiAxMzoxOToxNS4wODc5OTcyOTAgKzAyMDAKLSsrKyBiL3J1bnRlc3QuYwkyMDEzLTA0LTE3IDE0OjA4OjI5LjUyOTk0OTY1NSArMDIwMAotQEAgLTQzODYsNiArNDM4Niw3IEBACi0gCSAgICBlcnIrKzsKLSAJfQorLS0tIGEvcnVudGVzdC5jCTIwMTctMTEtMTMgMjI6MDA6MTcuMDAwMDAwMDAwICswMTAwCisrKysgYi9ydW50ZXN0LmMJMjAxOC0wMy0yMCAwODoyODo1MC44NTkwNDc1NTEgKzAxMDAKK0BAIC00NDk2LDcgKzQ0OTYsOCBAQAogICAgICB9CisgCisgICAgIHhtbENoYXJFbmNDbG9zZUZ1bmMoZWJjZGljSGFuZGxlcik7CistCisrICAgIAogKyAgICBwcmludGYoIiVzOiAlc1xuIiwgKGVyciA9PSAwKSA/ICJQQVNTIiA6ICJGQUlMIiwgdHN0LT5kZXNjKTsKICAgICAgcmV0dXJuKGVycik7CiAgfQogIAotQEAgLTQ0NTUsNiArNDQ1Niw3IEBACitAQCAtNDU3Myw2ICs0NTc0LDcgQEAKICAgICAgeG1sQ2xlYW51cFBhcnNlcigpOwogICAgICB4bWxNZW1vcnlEdW1wKCk7CiAgCkBAIC01Niw4ICs1Nyw4IEBACiAgfQogIAogZGlmZiAtdU5yIGEvcnVueG1sY29uZi5jIGIvcnVueG1sY29uZi5jCi0tLS0gYS9ydW54bWxjb25mLmMJMjAxMy0wNC0xNiAxMjo1Mzo0OS45MDA5ODI5OTAgKzAyMDAKLSsrKyBiL3J1bnhtbGNvbmYuYwkyMDEzLTA0LTE3IDE0OjA5OjIxLjExMTc3ODEwNCArMDIwMAorLS0tIGEvcnVueG1sY29uZi5jCTIwMTYtMDYtMDcgMTI6MDQ6MTQuMDAwMDAwMDAwICswMjAwCisrKysgYi9ydW54bWxjb25mLmMJMjAxOC0wMy0yMCAwODoyOToxNy45NDQ4NjI4OTMgKzAxMDAKIEBAIC01OTUsNiArNTk1LDcgQEAKICAKICAgICAgaWYgKGxvZ2ZpbGUgIT0gTlVMTCkKQEAgLTY3LDkgKzY4LDkgQEAKICB9CiAgCiBkaWZmIC11TnIgYS90ZXN0YXBpLmMgYi90ZXN0YXBpLmMKLS0tLSBhL3Rlc3RhcGkuYwkyMDEzLTA0LTEyIDE2OjE2OjU3Ljc2MzQxNzY1OSArMDIwMAotKysrIGIvdGVzdGFwaS5jCTIwMTMtMDQtMTcgMTQ6MTA6MjguODc2OTI0ODgxICswMjAwCi1AQCAtMTI0NSw0OSArMTI0NSw5MSBAQAorLS0tIGEvdGVzdGFwaS5jCTIwMTgtMDEtMjUgMDc6Mzk6MTUuMDAwMDAwMDAwICswMTAwCisrKysgYi90ZXN0YXBpLmMJMjAxOC0wMy0yMCAwOTowODozNS4zMjM5ODAxNDUgKzAxMDAKK0BAIC0xMjQ2LDQ5ICsxMjQ2LDkxIEBACiAgdGVzdGxpYnhtbDIodm9pZCkKICB7CiAgICAgIGludCB0ZXN0X3JldCA9IDA7CkBAIC0yMDAsOSArMjAxLDE5IEBACiAgICAgIHJldHVybih0ZXN0X3JldCk7CiAgfQogIAorZGlmZiAtdU5yIGEvdGVzdGRpY3QuYyBiL3Rlc3RkaWN0LmMKKy0tLSBhL3Rlc3RkaWN0LmMJMjAxNi0wNi0wNyAxMjowNDoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL3Rlc3RkaWN0LmMJMjAxOC0wMy0yMCAwODo1OToxNi44NjQyNzU4MTIgKzAxMDAKK0BAIC00NDAsNSArNDQwLDYgQEAKKyAgICAgY2xlYW5fc3RyaW5ncygpOworICAgICB4bWxDbGVhbnVwUGFyc2VyKCk7CisgICAgIHhtbE1lbW9yeUR1bXAoKTsKKysgICAgcHJpbnRmKCIlczogdGVzdGRpY3RcblxuIiwgKHJldCA9PSAwKSA/ICJQQVNTIiA6ICJGQUlMIik7CisgICAgIHJldHVybihyZXQpOworIH0KIGRpZmYgLXVOciBhL3Rlc3RjaGFyLmMgYi90ZXN0Y2hhci5jCi0tLS0gYS90ZXN0Y2hhci5jCTIwMTMtMDQtMTcgMTA6NTA6MzAuMjUwMTQ3NDE4ICswMjAwCi0rKysgYi90ZXN0Y2hhci5jCTIwMTMtMDQtMTggMTY6MTE6MjguNDU1NzMzODAwICswMjAwCistLS0gYS90ZXN0Y2hhci5jCTIwMTYtMDYtMDcgMTI6MDQ6MTQuMDAwMDAwMDAwICswMjAwCisrKysgYi90ZXN0Y2hhci5jCTIwMTgtMDMtMjAgMDk6MTE6MjAuMzgzNTczOTEyICswMTAwCiBAQCAtMjMsNyArMjMsNyBAQAogIGNoYXIgZG9jdW1lbnQxWzEwMF0gPSAiPGRvYz5YWFhYPC9kb2M+IjsKICBjaGFyIGRvY3VtZW50MlsxMDBdID0gIjxkb2MgZm9vPSdYWFhYJy8+IjsKQEAgLTIyMiw3ICsyMzMsNyBAQAogIAkJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZSAweCUwMlg6ICVjXG4iLAogIAkJICAgICAgICBpLCBpKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAllbHNlIGlmICgoaSA9PSAnPCcpIHx8IChpID09ICcmJykpIHsKQEAgLTIzMCw4ICsyNDEsOCBAQAogKwkgICAgaWYgKChsYXN0RXJyb3IgPT0gMCkgfHwgKHJlcyAhPSBOVUxMKSkgewogIAkgICAgICAgIGZwcmludGYoc3RkZXJyLAogIAkJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGlsbGVnYWwgY2hhciAlYyBmb3IgQnl0ZSAweCUwMlhcbiIsIGksIGkpOwotKwkJCXJldHVybigxKTsKLSsJCX0KKysJCXJldHVybigxKTsKKysJICAgIH0KICAJfQogIAllbHNlIGlmICgoKGkgPCAweDIwKSB8fCAoaSA+PSAweDgwKSkgJiYKICAJICAgIChpICE9IDB4OSkgJiYgKGkgIT0gMHhBKSAmJiAoaSAhPSAweEQpKSB7CkBAIC0yMzksOCArMjUwLDggQEAKICsJICAgIGlmICgobGFzdEVycm9yICE9IFhNTF9FUlJfSU5WQUxJRF9DSEFSKSAmJiAocmVzICE9IE5VTEwpKSB7CiAgCSAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgCQkgICAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlIDB4JTAyWFxuIiwgaSk7Ci0rCQkJcmV0dXJuKDEpOwotKwkJfQorKwkJcmV0dXJuKDEpOworKwkgICAgfQogIAl9CiAgCWVsc2UgaWYgKHJlcyA9PSBOVUxMKSB7CiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKQEAgLTI1MCw3ICsyNjEsNyBAQAogIAlpZiAocmVzICE9IE5VTEwpCiAgCSAgICB4bWxGcmVlRG9jKHJlcyk7CiAgICAgIH0KLSsJcmV0dXJuKDApOworKyAgICByZXR1cm4oMCk7CiAgfQogIAogLXN0YXRpYyB2b2lkIHRlc3REb2N1bWVudFJhbmdlQnl0ZTIoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0LCBjaGFyICpkb2N1bWVudCwKQEAgLTI2OCw3ICsyNzksNyBAQAogIAkJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGopOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgCS8qCkBAIC0yODIsNyArMjkzLDcgQEAKICAJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtMjk2LDcgKzMwNyw3IEBACiAgCSAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJaSwgaik7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAJLyoKQEAgLTMxMCw3ICszMjEsNyBAQAogIAkgICAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4MDBcbiIsCiAgCQkJaSwgaik7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAJLyoKQEAgLTMxOCwxMyArMzI5LDEzIEBACiAgCWVsc2UgaWYgKChsYXN0RXJyb3IgIT0gMCkgfHwgKHJlcyA9PSBOVUxMKSkgewogIAkgICAgZnByaW50ZihzdGRlcnIsCiAgCQkiRmFpbGVkIHRvIHBhcnNlIGRvY3VtZW50IGZvciBCeXRlcyAweCUwMlggMHglMDJYXG4iLCBpLCBqKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogIAlpZiAocmVzICE9IE5VTEwpCiAgCSAgICB4bWxGcmVlRG9jKHJlcyk7CiAgICAgIH0KICAgICAgfQotKwlyZXR1cm4oMCk7CisrICAgIHJldHVybigwKTsKICB9CiAgCiAgLyoqCkBAIC00MzgsMjAgKzQ0OSwyMCBAQAogKwkgICAgaWYgKGxhc3RFcnJvciAhPSBYTUxfRVJSX0lOVkFMSURfQ0hBUikgewogIAkgICAgICAgIGZwcmludGYoc3RkZXJyLAogIAkJICAgICJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZSAweCUwMlhcbiIsIGkpOwotKwkJCXJldHVybigxKTsKLSsJCX0KKysJCXJldHVybigxKTsKKysJICAgIH0KICAJfSBlbHNlIGlmIChpID09IDB4RCkgewogLQkgICAgaWYgKChjICE9IDB4QSkgfHwgKGxlbiAhPSAxKSkKICsJICAgIGlmICgoYyAhPSAweEEpIHx8IChsZW4gIT0gMSkpIHsKICAJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGNvbnZlcnQgY2hhciBmb3IgQnl0ZSAweCUwMlhcbiIsIGkpOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9IGVsc2UgaWYgKChjICE9IGkpIHx8IChsZW4gIT0gMSkpIHsKICAJICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHBhcnNlIGNoYXIgZm9yIEJ5dGUgMHglMDJYXG4iLCBpKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogICAgICB9Ci0rCXJldHVybigwKTsKKysgICAgcmV0dXJuKDApOwogIH0KICAKIC1zdGF0aWMgdm9pZCB0ZXN0Q2hhclJhbmdlQnl0ZTIoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0LCBjaGFyICpkYXRhKSB7CkBAIC00NjgsOCArNDc5LDggQEAKICAJCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkgICAgICAgICAgICBpLCBqKTsKLSsJCQlyZXR1cm4oMSk7Ci0rCQkJfQorKwkJICAgIHJldHVybigxKTsKKysJCX0KICAJICAgIH0KICAKICAJICAgIC8qCkBAIC00ODIsOCArNDkzLDggQEAKICAJCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWDogJWRcbiIsCiAgCQkgICAgICAgICAgICBpLCBqLCBjKTsKLSsJCQlyZXR1cm4oMSk7Ci0rCQkJfQorKwkJICAgIHJldHVybigxKTsKKysJCX0KICAJICAgIH0KICAKICAJICAgIC8qCkBAIC00OTYsOCArNTA3LDggQEAKICAJCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWDogJWRcbiIsCiAgCQkgICAgICAgICAgICBpLCBqLCBjKTsKLSsJCQlyZXR1cm4oMSk7Ci0rCQkJfQorKwkJICAgIHJldHVybigxKTsKKysJCX0KICAJICAgIH0KICAKICAJICAgIC8qCkBAIC01MTAsOCArNTIxLDggQEAKICAJCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweDAwXG4iLAogIAkJICAgICAgICAgICAgaSwgaik7Ci0rCQkJcmV0dXJuKDEpOwotKwkJCX0KKysJCSAgICByZXR1cm4oMSk7CisrCQl9CiAgCSAgICB9CiAgCiAgICAgICAgICAgICAgLyoKQEAgLTUzMSw3ICs1NDIsNyBAQAogIAkgICAgfQogICAgICAgICAgfQogICAgICB9Ci0rCXJldHVybigwKTsKKysgICAgcmV0dXJuKDApOwogIH0KICAKIC1zdGF0aWMgdm9pZCB0ZXN0Q2hhclJhbmdlQnl0ZTMoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0LCBjaGFyICpkYXRhKSB7CkBAIC01NDksNyArNTYwLDcgQEAKICAJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkJaSwgaiwgSywgZGF0YVszXSk7CiArCQlyZXR1cm4oMSk7Ci0rCQl9CisrCSAgICB9CiAgCX0KICAKICAgICAgICAgIC8qCkBAIC01NjIsNyArNTczLDcgQEAKICAJIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqLCBLKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtNTc2LDcgKzU4Nyw3IEBACiAgCSAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGosIEspOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgICAgICAgICAvKgpAQCAtNTkwLDcgKzYwMSw3IEBACiAgCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciAweCUwNFggZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCXZhbHVlLCBpLCBqLCBLKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtNTk4LDcgKzYwOSw3IEBACiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gcGFyc2UgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkgICAgaSwgaiwgSyk7Ci0rCQlyZXR1cm4oMSk7CisrCSAgICByZXR1cm4oMSk7CiAgCX0KICAKICAJLyoKQEAgLTYwNiwxMiArNjE3LDEyIEBACiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgIkZhaWxlZCB0byBwYXJzZSBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWDogZXhwZWN0ICVkIGdvdCAlZFxuIiwKICAJCWksIGosIGRhdGFbMl0sIHZhbHVlLCBjKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogICAgICB9CiAgICAgIH0KICAgICAgfQotKwlyZXR1cm4oMCk7CisrICAgIHJldHVybigwKTsKICB9CiAgCiAtc3RhdGljIHZvaWQgdGVzdENoYXJSYW5nZUJ5dGU0KHhtbFBhcnNlckN0eHRQdHIgY3R4dCwgY2hhciAqZGF0YSkgewpAQCAtNjI5LDcgKzY0MCw3IEBACiAgICAiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqLCBLLCBkYXRhWzNdKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogICAgICAgICAgLyoKQEAgLTY0Myw3ICs2NTQsNyBAQAogIAkiRmFpbGVkIHRvIGRldGVjdCBpbnZhbGlkIGNoYXIgZm9yIEJ5dGVzIDB4JTAyWCAweCUwMlggMHglMDJYIDB4JTAyWFxuIiwKICAJCQlpLCBqLCBLLCBMKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtNjU3LDcgKzY2OCw3IEBACiAgCSJGYWlsZWQgdG8gZGV0ZWN0IGludmFsaWQgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCWksIGosIEssIEwpOwogKwkJcmV0dXJuKDEpOwotKwkJfQorKwkgICAgfQogIAl9CiAgCiAgICAgICAgICAvKgpAQCAtNjcxLDcgKzY4Miw3IEBACiAgIkZhaWxlZCB0byBkZXRlY3QgaW52YWxpZCBjaGFyIDB4JTA0WCBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlggMHglMDJYXG4iLAogIAkJCXZhbHVlLCBpLCBqLCBLLCBMKTsKICsJCXJldHVybigxKTsKLSsJCX0KKysJICAgIH0KICAJfQogIAogIAkvKgpAQCAtNjc5LDcgKzY5MCw3IEBACiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKICAJCSJGYWlsZWQgdG8gcGFyc2UgY2hhciBmb3IgQnl0ZXMgMHglMDJYIDB4JTAyWCAweCUwMlhcbiIsCiAgCQkgICAgaSwgaiwgSyk7Ci0rCQlyZXR1cm4oMSk7CisrCSAgICByZXR1cm4oMSk7CiAgCX0KICAKICAJLyoKQEAgLTY4NywxMyArNjk4LDEzIEBACiAgCSAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgIkZhaWxlZCB0byBwYXJzZSBjaGFyIGZvciBCeXRlcyAweCUwMlggMHglMDJYIDB4JTAyWDogZXhwZWN0ICVkIGdvdCAlZFxuIiwKICAJCWksIGosIGRhdGFbMl0sIHZhbHVlLCBjKTsKLSsJCXJldHVybigxKTsKKysJICAgIHJldHVybigxKTsKICAJfQogICAgICB9CiAgICAgIH0KICAgICAgfQogICAgICB9Ci0rCXJldHVybigwKTsKKysgICAgcmV0dXJuKDApOwogIH0KICAKICAvKioKQEAgLTcyMiwxMyArNzMzLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9DSEFSX0VOQ09ESU5HX05PTkUpOwogICAgICBpZiAoYnVmID09IE5VTEwpIHsKICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGlucHV0IGJ1ZmZlclxuIik7Ci0rICAgICAgICB0ZXN0X3JldCA9IDE7CisrCXRlc3RfcmV0ID0gMTsKICAJZ290byBlcnJvcjsKICAgICAgfQogICAgICBpbnB1dCA9IHhtbE5ld0lucHV0U3RyZWFtKGN0eHQpOwogICAgICBpZiAoaW5wdXQgPT0gTlVMTCkgewogICAgICAgICAgeG1sRnJlZVBhcnNlcklucHV0QnVmZmVyKGJ1Zik7Ci0rICAgICAgICB0ZXN0X3JldCA9IDE7CisrCXRlc3RfcmV0ID0gMTsKICAJZ290byBlcnJvcjsKICAgICAgfQogICAgICBpbnB1dC0+ZmlsZW5hbWUgPSBOVUxMOwpAQCAtNzc3LDIwICs3ODgsMTAgQEAKICAKICAgICAgLyoKICAgICAgICogQ2xlYW51cCBmdW5jdGlvbiBmb3IgdGhlIFhNTCBsaWJyYXJ5LgotZGlmZiAtdU5yIGEvdGVzdGRpY3QuYyBiL3Rlc3RkaWN0LmMKLS0tLSBhL3Rlc3RkaWN0LmMJMjAxMy0wNC0xNiAxNTowODo0Mi45NzExNzcxOTMgKzAyMDAKLSsrKyBiL3Rlc3RkaWN0LmMJMjAxMy0wNC0xOCAxNTo1OTowMC42OTk0ODI0MzkgKzAyMDAKLUBAIC00NDAsNSArNDQwLDYgQEAKLSAgICAgY2xlYW5fc3RyaW5ncygpOwotICAgICB4bWxDbGVhbnVwUGFyc2VyKCk7Ci0gICAgIHhtbE1lbW9yeUR1bXAoKTsKLSsgICAgcHJpbnRmKCIlczogdGVzdGRpY3RcblxuIiwgKHJldCA9PSAwKSA/ICJQQVNTIiA6ICJGQUlMIik7Ci0gICAgIHJldHVybihyZXQpOwotIH0KIGRpZmYgLXVOciBhL3Rlc3RsaW1pdHMuYyBiL3Rlc3RsaW1pdHMuYwotLS0tIGEvdGVzdGxpbWl0cy5jCTIwMTMtMDQtMTIgMTY6MTY6MzYuMTgwMzU0MTc3ICswMjAwCi0rKysgYi90ZXN0bGltaXRzLmMJMjAxMy0wNC0xNyAxNDowMzoxNy4yMDMwOTI5ODcgKzAyMDAKLUBAIC0xNjMwLDUgKzE2MzAsNiBAQAorLS0tIGEvdGVzdGxpbWl0cy5jCTIwMTYtMTEtMDcgMDk6NDE6NDAuMDAwMDAwMDAwICswMTAwCisrKysgYi90ZXN0bGltaXRzLmMJMjAxOC0wMy0yMCAwODo1OTozOC45NjU1ODEyODAgKzAxMDAKK0BAIC0xNjM0LDUgKzE2MzQsNiBAQAogICAgICB4bWxDbGVhbnVwUGFyc2VyKCk7CiAgICAgIHhtbE1lbW9yeUR1bXAoKTsKICAKQEAgLTc5OCw4ICs3OTksOCBAQAogICAgICByZXR1cm4ocmV0KTsKICB9CiBkaWZmIC11TnIgYS90ZXN0cmVjdXJzZS5jIGIvdGVzdHJlY3Vyc2UuYwotLS0tIGEvdGVzdHJlY3Vyc2UuYwkyMDEzLTA0LTE2IDEzOjE5OjQ5LjM2NjUzNjI5NSArMDIwMAotKysrIGIvdGVzdHJlY3Vyc2UuYwkyMDEzLTA0LTE3IDE0OjA2OjI3LjM2NzA5MTYyMiArMDIwMAorLS0tIGEvdGVzdHJlY3Vyc2UuYwkyMDE3LTEwLTI2IDA5OjU0OjQwLjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdHJlY3Vyc2UuYwkyMDE4LTAzLTIwIDA5OjAwOjQ2Ljc4MTYyODc0OSArMDEwMAogQEAgLTg5Miw2ICs4OTIsNyBAQAogIAkgICAgZXJyKys7CiAgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzQ5YTgxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJYTUwgQyBQYXJzZXIgTGlicmFyeSBhbmQgVG9vbGtpdCIKLURFU0NSSVBUSU9OID0gIlRoZSBYTUwgUGFyc2VyIExpYnJhcnkgYWxsb3dzIGZvciBtYW5pcHVsYXRpb24gb2YgWE1MIGZpbGVzLiAgTGlieG1sMiBleHBvcnRzIFB1c2ggYW5kIFB1bGwgdHlwZSBwYXJzZXIgaW50ZXJmYWNlcyBmb3IgYm90aCBYTUwgYW5kIEhUTUwuICBJdCBjYW4gZG8gRFREIHZhbGlkYXRpb24gYXQgcGFyc2UgdGltZSwgb24gYSBwYXJzZWQgZG9jdW1lbnQgaW5zdGFuY2Ugb3Igd2l0aCBhbiBhcmJpdHJhcnkgRFRELiAgTGlieG1sMiBpbmNsdWRlcyBjb21wbGV0ZSBYUGF0aCwgWFBvaW50ZXIgYW5kIFhpbmNsdWRlIGltcGxlbWVudGF0aW9ucy4gIEl0IGFsc28gaGFzIGEgU0FYIGxpa2UgaW50ZXJmYWNlLCB3aGljaCBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggRXhwYXQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJ4bWwyIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5cmlnaHQ7bWQ1PTIwNDQ0MTdlMmU1MDA2YjY1YThiOTA2N2I2ODNmY2YxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2hhc2guYztiZWdpbmxpbmU9NjtlbmRsaW5lPTE1O21kNT05NmY3Mjk2NjA1ZWFlODA3NjcwZmIwODk0NzgyOTk2OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saXN0LmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xMzttZDU9Y2RiZmEzZGVlNTFjMDk5ZWRiMDRlMzlmNzYyZWU5MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpby5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTQ7bWQ1PTZjMDI1NzUzYzg2ZDk1ODcyMmVjNzZlOTRjYWU5MzJlIgotCi1ERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpY29udiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAotICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNDQwNC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICI4OTY2MDg2NDFhMDhiNDY1MDk4YTQwZGRmNTFjZWZiYSIKLVNSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiZjYzYzVlN2QzMDM2MmVkMjhiMzhiZmExYWM2MzEzZjlhODAyMzA3MjBiN2ZiNmM4MDU3NWVlYWIzZmY1OTAwYyIKLVNSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgotU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgotCi1SREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pYm0xMTQxIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWV4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLSMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgotICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LXV0aWxzICR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKLUZJTEVTXyR7UE59LXV0aWxzICs9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQotCWZpbmQgJHtXT1JLRElSfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSBjaGVjay1hbQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljcCAtciAke1dPUktESVJ9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnc3xeXChQWVRIT04gPSBcKS4qfFwxJHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JyBcCi0JCSAgICAke0R9JHtQVEVTVF9QQVRIfS9weXRob24vdGVzdHMvTWFrZWZpbGUKLQkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKLQkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JwotCWZpCi0JI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcwotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLQkgICAgc2VkIC1pIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkgICAgLWUgJy9eUkVMREFURS9kJyBcCi0JICAgIHt9ICsKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQkjIERvY3MgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIG5hdGl2ZSBjYXNlCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ3RrLWRvYyAtcmYKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQwYmY1NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjguYmIKQEAgLTAsMCArMSwxMTMgQEAKK1NVTU1BUlkgPSAiWE1MIEMgUGFyc2VyIExpYnJhcnkgYW5kIFRvb2xraXQiCitERVNDUklQVElPTiA9ICJUaGUgWE1MIFBhcnNlciBMaWJyYXJ5IGFsbG93cyBmb3IgbWFuaXB1bGF0aW9uIG9mIFhNTCBmaWxlcy4gIExpYnhtbDIgZXhwb3J0cyBQdXNoIGFuZCBQdWxsIHR5cGUgcGFyc2VyIGludGVyZmFjZXMgZm9yIGJvdGggWE1MIGFuZCBIVE1MLiAgSXQgY2FuIGRvIERURCB2YWxpZGF0aW9uIGF0IHBhcnNlIHRpbWUsIG9uIGEgcGFyc2VkIGRvY3VtZW50IGluc3RhbmNlIG9yIHdpdGggYW4gYXJiaXRyYXJ5IERURC4gIExpYnhtbDIgaW5jbHVkZXMgY29tcGxldGUgWFBhdGgsIFhQb2ludGVyIGFuZCBYaW5jbHVkZSBpbXBsZW1lbnRhdGlvbnMuICBJdCBhbHNvIGhhcyBhIFNBWCBsaWtlIGludGVyZmFjZSwgd2hpY2ggaXMgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIEV4cGF0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0O21kNT0yMDQ0NDE3ZTJlNTAwNmI2NWE4YjkwNjdiNjgzZmNmMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9oYXNoLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0xNTttZDU9OTZmNzI5NjYwNWVhZTgwNzY3MGZiMDg5NDc4Mjk5NjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlzdC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTM7bWQ1PWNkYmZhM2RlZTUxYzA5OWVkYjA0ZTM5Zjc2MmVlOTA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaW8uYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE0O21kNT02YzAyNTc1M2M4NmQ5NTg3MjJlYzc2ZTk0Y2FlOTMyZSIKKworREVQRU5EUyA9ICJ6bGliIHZpcnR1YWwvbGliaWNvbnYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy54bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhtbDItJHtQVn0udGFyLmd6O25hbWU9bGlidGFyIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3o7c3ViZGlyPSR7QlB9O25hbWU9dGVzdHRhciBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwtNjRiaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVudGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHl0aG9uLXNpdGVwYWNrYWdlcy1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLW00LXVzZS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1leGVjdXRpb24tb2YtcHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxNy04ODcyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1DVkUtMjAxOC0xNDQwNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1pbmZpbml0ZS1sb29wLWluLUxaTUEtZGVjb21wcmVzc2lvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICJiNzg2ZTM1M2UyYWExYjg3MmQ3MGQ1ZDFjYTBjNzQwZCIKK1NSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiMGI3NGU1MTU5NTY1NGY5NTgxNDg3NTljZmVmMDk5MzExNGRkY2NjY2JiNmYzMWFlZTAxOGYzNTU4ZThlMjczMiIKK1NSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgorU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pYm0xMTQxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2V4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKKyMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQorRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKK0VYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0CisgICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgorICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgorUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKKwlmaW5kICR7U30veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgY2hlY2stYW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgJHtTfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAorCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCisJCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8CisJCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKKwlmaQorCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKKwlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisJICAgIHNlZCAtaSBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXlJFTERBVEUvZCcgXAorCSAgICB7fSArCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQorCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCmluZGV4IGQ5OGE5YzkuLjkxZGY2ZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgpAQCAtMTAsNiArMTAsOCBAQAogICAgIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMgXAogICAgIG5hdGl2ZXNkay1weXRob24zLW1pc2MgXAogICAgIG5hdGl2ZXNkay1weXRob24zLWdpdCBcCisgICAgbmF0aXZlc2RrLXB5dGhvbjMtdGVzdHRvb2xzIFwKKyAgICBuYXRpdmVzZGstcHl0aG9uMy1zdWJ1bml0IFwKICAgICBuYXRpdmVzZGstbmN1cnNlcy10ZXJtaW5mby1iYXNlIFwKICAgICBuYXRpdmVzZGstY2hycGF0aCBcCiAgICAgbmF0aXZlc2RrLXRhciBcCkBAIC0yMSw2ICsyMyw4IEBACiAgICAgbmF0aXZlc2RrLXdnZXQgXAogICAgIG5hdGl2ZXNkay1jYS1jZXJ0aWZpY2F0ZXMgXAogICAgIG5hdGl2ZXNkay10ZXhpbmZvIFwKKyAgICBuYXRpdmVzZGstbGlibnNzLW5pcyBcCisgICAgbmF0aXZlc2RrLXJwY3N2Yy1wcm90byBcCiAgICAgIgogCiBNVUxUSU1BQ0hfVEFSR0VUX1NZUyA9ICIke1NES19BUkNIfS1uYXRpdmVzZGske1NES19WRU5ET1J9LSR7U0RLX09TfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCmluZGV4IGVkODNkZDcuLmVhZmNiODIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYwpAQCAtMSw2ICsxLDggQEAKIFNVTU1BUlkgPSAiRHVtbXkgcGFja2FnZXMgd2hpY2ggaGFuZGxlIGV4Y2x1ZGluZyBwYWNrYWdlcyBmcm9tIHRoZSBzZGssIGUuZy4gZW5zdXJpbmcgcGVybCBpcyBleGNsdWRlZCBmcm9tIGJ1aWxkdG9vbHMiCiBMSUNFTlNFID0gIk1JVCIKIAorUEFDS0FHRV9BUkNIID0gImFsbCIKKwogaW5oZXJpdCBhbGxhcmNoCiAKIHB5dGhvbigpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWVudmlyb25tZW50LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKaW5kZXggMDlmNzU3YS4uZGExMjMwYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZW52aXJvbm1lbnQuYmIKQEAgLTU2LDcgKzU2LDcgQEAKIAkjIEFkZCB2ZXJzaW9uIGluZm9ybWF0aW9uCiAJdG9vbGNoYWluX2NyZWF0ZV9zZGtfdmVyc2lvbiAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vdmVyc2lvbi0ke1JFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVN9CiAKLQl0b29sY2hhaW5fY3JlYXRlX3Bvc3RfcmVsb2NhdGVfc2NyaXB0ICR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9wb3N0LXJlbG9jYXRlLXNldHVwLnNoCisJdG9vbGNoYWluX2NyZWF0ZV9wb3N0X3JlbG9jYXRlX3NjcmlwdCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vcG9zdC1yZWxvY2F0ZS1zZXR1cC5zaCAke1NES1BBVEh9CiB9CiAKIGRvX2luc3RhbGwoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1pZGUtc3VwcG9ydC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWlkZS1zdXBwb3J0LmJiCmluZGV4IDA2OTJlYzguLjc2OGY2ZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWlkZS1zdXBwb3J0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWlkZS1zdXBwb3J0LmJiCkBAIC0yLDcgKzIsNyBAQAogREVTQ1JJUFRJT04gPSAiTWV0YSBwYWNrYWdlIGZvciBlbnN1cmluZyB0aGUgYnVpbGQgZGlyZWN0b3J5IGNvbnRhaW5zIGFsbCBhcHByb3ByaWF0ZSB0b29sY2hhaW4gcGFja2FnZXMgZm9yIHVzaW5nIGFuIElERSIKIExJQ0VOU0UgPSAiTUlUIgogCi1ERVBFTkRTID0gInZpcnR1YWwvbGliYyBnZGItY3Jvc3MtJHtUQVJHRVRfQVJDSH0gcWVtdS1uYXRpdmUgcWVtdS1oZWxwZXItbmF0aXZlIHVuZnMzLW5hdGl2ZSIKK0RFUEVORFMgPSAidmlydHVhbC9saWJjIGdkYi1jcm9zcy0ke1RBUkdFVF9BUkNIfSBxZW11LW5hdGl2ZSBxZW11LWhlbHBlci1uYXRpdmUgdW5mczMtbmF0aXZlIGNtYWtlLW5hdGl2ZSIKIFBSID0gInIzIgogUk1fV09SS19FWENMVURFICs9ICIke1BOfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiCmluZGV4IDM4YzNhMzEuLmUwY2I5ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS91bmluYXRpdmUtdGFyYmFsbC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKQEAgLTEyLDggKzEyLDExIEBACiAgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LWlzbzg4NTktMSBcCiAgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LXV0Zi0xNiBcCiAgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LWNwMTI1MiBcCisgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LWV1Yy1qcCBcCisgICAgbmF0aXZlc2RrLWdsaWJjLWdjb252LWxpYmppcyBcCiAgICAgbmF0aXZlc2RrLXBhdGNoZWxmIFwKICAgICBuYXRpdmVzZGstbGlieGNyeXB0IFwKKyAgICBuYXRpdmVzZGstbGlibnNzLW5pcyBcCiAgICAgIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnNzcC1ub25zaGFyZWQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NThlYWZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnNzcC1ub25zaGFyZWQuYmIKQEAgLTAsMCArMSwzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJNaW5pbWFsIGxpYnNzcF9ub25zaGFyZWQuYSBtdXN0IG5lZWRlZCBmb3Igc3NwIHRvIHdvcmsgd2l0aCBnY2Mgb24gbXVzbCIKK0xJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zc3AtbG9jYWwuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTMyO21kNT1jMDZkMzkxMjA4YzBjZmNiYzU0MWE2NzI4ZWQ2NWNjNCIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICJmaWxlOi8vc3NwLWxvY2FsLmMiCisKK1BBVEhfcHJlcGVuZCA9ICIke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0uJHtTVEFHSU5HQ0N9OiIKKworSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworU1RBR0lOR0NDID0gImdjYy1jcm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IgorU1RBR0lOR0NDX2NsYXNzLW5hdGl2ZXNkayA9ICJnY2MtY3Jvc3NzZGstaW5pdGlhbC0ke1NES19TWVN9IgorCitERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIFwKKyAgICAgICAgICAgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjLWluaXRpYWwgXAorIgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2NvbXBpbGUoKSB7CisJJHtDQ30gJHtDUFBGTEFHU30gJHtDRkxBR1N9IC1mUElFIC1jIHNzcC1sb2NhbC5jIC1vIHNzcC1sb2NhbC5vCisJJHtBUn0gciBsaWJzc3Bfbm9uc2hhcmVkLmEgc3NwLWxvY2FsLm8KK30KK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtRG0gMDY0NCAke0J9L2xpYnNzcF9ub25zaGFyZWQuYSAke0R9JHtiYXNlX2xpYmRpcn0vbGlic3NwX25vbnNoYXJlZC5hCit9CisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGZvciBub24tbXVzbCBzeXN0ZW1zCisjCitDT01QQVRJQkxFX0hPU1QgPSAiLiotbXVzbC4qIgorUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tc3RhdGljZGV2ICg9ICR7RVhURU5EUEtHVn0pIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnNzcC1ub25zaGFyZWQvc3NwLWxvY2FsLmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlic3NwLW5vbnNoYXJlZC9zc3AtbG9jYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjUxYWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL2xpYnNzcC1ub25zaGFyZWQvc3NwLWxvY2FsLmMKQEAgLTAsMCArMSw0NSBAQAorLyogU3RhY2sgcHJvdGVjdG9yIHN1cHBvcnQuCisgICBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgorCitHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgordGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCit2ZXJzaW9uLgorCitJbiBhZGRpdGlvbiB0byB0aGUgcGVybWlzc2lvbnMgaW4gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB0aGUKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcyB5b3UgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gbGluayB0aGUKK2NvbXBpbGVkIHZlcnNpb24gb2YgdGhpcyBmaWxlIGludG8gY29tYmluYXRpb25zIHdpdGggb3RoZXIgcHJvZ3JhbXMsCithbmQgdG8gZGlzdHJpYnV0ZSB0aG9zZSBjb21iaW5hdGlvbnMgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb24gY29taW5nCitmcm9tIHRoZSB1c2Ugb2YgdGhpcyBmaWxlLiAgKFRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJlc3RyaWN0aW9ucworZG8gYXBwbHkgaW4gb3RoZXIgcmVzcGVjdHM7IGZvciBleGFtcGxlLCB0aGV5IGNvdmVyIG1vZGlmaWNhdGlvbiBvZgordGhlIGZpbGUsIGFuZCBkaXN0cmlidXRpb24gd2hlbiBub3QgbGlua2VkIGludG8gYSBjb21iaW5lCitleGVjdXRhYmxlLikKKworR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQorV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorZm9yIG1vcmUgZGV0YWlscy4KKworVW5kZXIgU2VjdGlvbiA3IG9mIEdQTCB2ZXJzaW9uIDMsIHlvdSBhcmUgZ3JhbnRlZCBhZGRpdGlvbmFsCitwZXJtaXNzaW9ucyBkZXNjcmliZWQgaW4gdGhlIEdDQyBSdW50aW1lIExpYnJhcnkgRXhjZXB0aW9uLCB2ZXJzaW9uCiszLjEsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQKK2EgY29weSBvZiB0aGUgR0NDIFJ1bnRpbWUgTGlicmFyeSBFeGNlcHRpb24gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07CitzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKK2V4dGVybiB2b2lkIF9fc3RhY2tfY2hrX2ZhaWwgKHZvaWQpOworCisvKiBTb21lIHRhcmdldHMgY2FuIGF2b2lkIGxvYWRpbmcgYSBHUCBmb3IgY2FsbHMgdG8gaGlkZGVuIGZ1bmN0aW9ucy4KKyAgIFVzaW5nIHRoaXMgZW50cnkgcG9pbnQgbWF5IGF2b2lkIHRoZSBsb2FkIG9mIGEgR1AgZW50aXJlbHkgZm9yIHRoZQorICAgZnVuY3Rpb24sIG1ha2luZyB0aGUgb3ZlcmFsbCBjb2RlIHNtYWxsZXIuICAqLworCit2b2lkCitfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKQorX19zdGFja19jaGtfZmFpbF9sb2NhbCAodm9pZCkKK3sKKyAgX19zdGFja19jaGtfZmFpbCAoKTsKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLXV0aWxzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKaW5kZXggNzRiODQ2ZC4uZGQwY2UzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wtdXRpbHMuYmIKQEAgLTEzLDYgKzEzLDggQEAKIFNSQ1JFViA9ICJmYjU2MzAxMzhjY2FiYmJjMTRhMTlkMzcyMDk2YTA0ZTQyNTczYzdkIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JvbHRsaW51eC9tdXNsLXV0aWxzIgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKIGluaGVyaXQgYXV0b3Rvb2xzCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggYmE5YjFhMC4uMzE5NzA5YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYwpAQCAtOSw3ICs5LDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubXVzbC1saWJjLm9yZy8iCiBMSUNFTlNFID0gIk1JVCIKIFNFQ1RJT04gPSAibGlicyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9MmI5MDMyMDkzYzQ3NjVlNDlhZTg1ZGRlYmEyOWFmZmYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PThhNGJiMjhmNzcxYzgxN2ZlNTdkM2E3YzQyNDBlM2FhIgogCiBQQVRIX3ByZXBlbmQgPSAiJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LiR7U1RBR0lOR0NDfToiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgppbmRleCA5ZjhjNTEyLi4wZDhmOGViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCkBAIC0yLDEwICsyLDExIEBACiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCiAKIHJlcXVpcmUgbXVzbC5pbmMKK2luaGVyaXQgbGludXhsb2FkZXIKIAotU1JDUkVWID0gIjU1ZGYwOWJmY2NiZmUyMWZjOWRkN2Q4Zjk0NTUwYzBmZjI1YWNlMDQiCitTUkNSRVYgPSAiYzUwOTg1ZDVjOGUzMTZjNWM0NjRmMzUyZTc5ZWVlYmZlZDExMjFhOSIKIAotUFYgPSAiMS4xLjE5K2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4xLjIwK2dpdCR7U1JDUFZ9IgogCiAjIG1pcnJvciBpcyBhdCBnaXQ6Ly9naXRodWIuY29tL2tyYWovbXVzbC5naXQKIApAQCAtMjIsNyArMjMsOSBAQAogICAgICAgICAgICBsaWJnY2MtaW5pdGlhbCBcCiAgICAgICAgICAgIGxpbnV4LWxpYmMtaGVhZGVycyBcCiAgICAgICAgICAgIGJzZC1oZWFkZXJzIFwKKyAgICAgICAgICAgbGlic3NwLW5vbnNoYXJlZCBcCiAgICAgICAgICAgIgorR0xJQkNfTERTTyA9ICIke0BnZXRfZ2xpYmNfbG9hZGVyKGQpfSIKIAogZXhwb3J0IENST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iCiAKQEAgLTU5LDEzICs2MiwyNyBAQAogCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQogCXJtIC1mICR7RH0ke2JpbmRpcn0vbGRkCiAJbG5yICR7RH0ke2xpYmRpcn0vbGliYy5zbyAke0R9JHtiaW5kaXJ9L2xkZAorCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7R0xJQkNfTERTT30KIAlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAogCWRvCiAJCWxuIC1zZiBsaWJjLnNvICR7RH0ke2xpYmRpcn0vbGliJGwuc28KIAlkb25lCisJZm9yIGkgaW4gbGliYy5zby42IGxpYmNyeXB0LnNvLjEgbGliZGwuc28uMiBsaWJtLnNvLjYgbGlicHRocmVhZC5zby4wIGxpYnJlc29sdi5zby4yIGxpYnJ0LnNvLjEgbGlidXRpbC5zby4xOyBkbworCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9LyRpCisJZG9uZQogfQogCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImxpbnV4LWxpYmMtaGVhZGVycy1kZXYgYnNkLWhlYWRlcnMtZGV2IgorUEFDS0FHRVMgPSsgIiR7UE59LWdsaWJjLWNvbXBhdCIKKworRklMRVNfJHtQTn0tZ2xpYmMtY29tcGF0ICs9ICJcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmMuc28uNiAke2xpYmRpcn0vbGliY3J5cHQuc28uMSBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmRsLnNvLjIgJHtsaWJkaXJ9L2xpYm0uc28uNiBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnB0aHJlYWQuc28uMCAke2xpYmRpcn0vbGlicmVzb2x2LnNvLjIgXAorICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJydC5zby4xICR7bGliZGlyfS9saWJ1dGlsLnNvLjEgXAorICAgICAgICAgICAgICAgICR7R0xJQkNfTERTT30gXAorICAgICAgICAgICAgICAgICIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJsaW51eC1saWJjLWhlYWRlcnMtZGV2IGJzZC1oZWFkZXJzLWRldiBsaWJzc3Atbm9uc2hhcmVkLXN0YXRpY2RldiIKIFJQUk9WSURFU18ke1BOfS1kZXYgKz0gImxpYmMtZGV2IHZpcnR1YWwtbGliYy1kZXYiCiBSUFJPVklERVNfJHtQTn0gKz0gImxkZCBsaWJzZWdmYXVsdCBydGxkKEdOVV9IQVNIKSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtdGljLWhhbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaAppbmRleCA0YTk3MDU2Li5mOThhOTQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gYTk1NTkwZjY3NjIwOTgzMmZlMGIyNzIyNmU2ZGUzY2I1MGUyYjk3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTY4YmE3YTY4MWJlNzNhYzAyNDQzOGUzM2UxNGZkZTFkNWFlYTk3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTQ6MzE6NTEgKzA4MDAKK0RhdGU6IEZyaSwgMzAgTWFyIDIwMTggMTA6MDI6MjQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAxLzJdIHRpYyBoYW5nCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KQEAgLTEwLDM0ICsxMCwzNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBhbm9ueW1vdXMKIAotUmViYXNlIHRvIDYuMCsyMDE3MDcxNQorUmViYXNlIHRvIDYuMQogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgbWlzYy90ZXJtaW5mby5zcmMgfCAxMSArKysrKy0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9taXNjL3Rlcm1pbmZvLnNyYyBiL21pc2MvdGVybWluZm8uc3JjCi1pbmRleCBlZTNmYWIzLi4xNzZkNTkzIDEwMDY0NAoraW5kZXggODRmNDgxMC4uNmIzODVlYyAxMDA2NDQKIC0tLSBhL21pc2MvdGVybWluZm8uc3JjCiArKysgYi9taXNjL3Rlcm1pbmZvLnNyYwotQEAgLTUxNzcsMTIgKzUxNzcsMTEgQEAga29uc29sZS14ZjN4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDMueCB4dGVybSwKLSAjIFRoZSB2YWx1ZSBmb3Iga2JzIHJlZmxlY3RzIGxvY2FsIGN1c3RvbWl6YXRpb24gcmF0aGVyIHRoYW4gdGhlIHNldHRpbmdzIHVzZWQKLSAjIGZvciBYRnJlZTg2IHh0ZXJtLgorQEAgLTU1NjIsMTIgKzU1NjIsMTEgQEAga29uc29sZS14ZjN4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDMueCB4dGVybSwKKyAjIFRoZSB2YWx1ZSBmb3Iga2JzIChzZWUga29uc29sZS12dDEwMCkgcmVmbGVjdHMgbG9jYWwgY3VzdG9taXphdGlvbiByYXRoZXIKKyAjIHRoYW4gdGhlIHNldHRpbmdzIHVzZWQgZm9yIFhGcmVlODYgeHRlcm0uCiAga29uc29sZS14ZjR4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDQueCB4dGVybSwKIC0Ja2VuZD1cRU9GLCBraG9tZT1cRU9ILCB1c2U9a29uc29sZStwY2ZrZXlzLAogLQl1c2U9a29uc29sZS12dDEwMCwKLS0jIEtvbnNvbGUgZG9lcyBub3QgaW1wbGVtZW50IHNoaWZ0ZWQgY3Vyc29yLWtleXMuCistCiAta29uc29sZStwY2ZrZXlzfGtvbnNvbGUgc3Vic2V0IG9mIHh0ZXJtK3BjZmtleXMsCi0tCWtMRlRALCBrUklUQCwga2NidD1cRVtaLCBraW5kQCwga3JpQCwga0ROQCwga1VQQCwgdXNlPXh0ZXJtK3BjYzIsCi0tCXVzZT14dGVybStwY2YwLAorLQlrY2J0PVxFW1osIHVzZT14dGVybStwY2MyLCB1c2U9eHRlcm0rcGNmMCwKKy0JdXNlPXh0ZXJtK3BjZTIsCiArCWtlbmQ9XEVPRiwga2YxPVxFT1AsIGtmMTM9XEVPMlAsIGtmMTQ9XEVPMlEsIGtmMTU9XEVPMlIsCiArCWtmMTY9XEVPMlMsIGtmMTc9XEVbMTU7Mn4sIGtmMTg9XEVbMTc7Mn4sIGtmMTk9XEVbMTg7Mn4sCiArCWtmMj1cRU9RLCBrZjIwPVxFWzE5OzJ+LCBrZjIxPVxFWzIwOzJ+LCBrZjIyPVxFWzIxOzJ+LAogKwlrZjIzPVxFWzIzOzJ+LCBrZjI0PVxFWzI0OzJ+LCBrZjM9XEVPUiwga2Y0PVxFT1MsCiArCWtob21lPVxFT0gsIHVzZT1rb25zb2xlLXZ0MTAwLAorIAorICMgT2Jzb2xldGU6IHZ0MTAwLmtleW1hcAogICMgS0RFJ3MgInZ0MTAwIiBrZXlib2FyZCBoYXMgbm8gcmVsYXRpb25zaGlwIHRvIGFueSB0ZXJtaW5hbCB0aGF0IERFQyBtYWRlLCBidXQKLSAjIGl0IGlzIHN0aWxsIHVzZWZ1bCBmb3IgZGVyaXZpbmcgdGhlIG90aGVyIGVudHJpZXMuCi0ga29uc29sZS12dDEwMHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCB2dDEwMCAoc2ljKSBrZXlib2FyZCwKIC0tIAogMS44LjMuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaAppbmRleCBjNDdjZTZhLi41NzIxOTU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDkzOWM5OTRmMzc1NmMyZDZkM2NhYjJlNmEwNGQwNWZhN2MyYjFkNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJhNTNjMDNmZmE5MGYwMDUwYTk0OWZjNTkyMGYwZGYzZTY2OGZmNDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE0OjQ1OjI3ICswODAwCiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBjb25maWd1cmU6IHJlcHJvZHVjaWJsZQpAQCAtMTAsNyArMTAsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogCi1SZWJhc2UgdG8gUmViYXNlIHRvIDYuMCsyMDE3MDcxNQorUmViYXNlIHRvIDYuMQogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KQEAgLTE4LDEwICsxOCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3ZDdkMmMxLi5mNDQ0MzU0IDEwMDc1NQoraW5kZXggYWRlYWQ5Mi4uZmE0ZmRiNyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNDQ1OCw3ICs0NDU4LDcgQEAgaWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgorQEAgLTQ1MDMsNyArNDUwMyw3IEBAIGlmIHRlc3QgIiR7Y2ZfY3ZfYXJfZmxhZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4KICBlbHNlCiAgCiAgCWNmX2N2X2FyX2ZsYWdzPXVua25vd24KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYwppbmRleCAwMWU0MWQ1Li45OWZjNDc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCkBAIC04Nyw2ICs4Nyw3IEBACiAJICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCiAJCSR7RVhDT05GSUdfQVJHU30gXAogCSAgICAgICAgLS13aXRoLW1hbnBhZ2UtZm9ybWF0PW5vcm1hbCBcCisJICAgICAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKIAkgICAgICAgICIkQCIgfHwgcmV0dXJuIDEKIAljZCAuLgogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcxMTI1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcxMTI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzRiOTZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE3MTEyNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgbmN1cnNlcy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSIKLSMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KLVNSQ1JFViA9ICI1ZDg0OWU4MzYwNTI0NTk5MDFjZmUwYjg1YTBiMjkzOWZmOGQyYjJhIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMSsyMDE4MDYzMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMSsyMDE4MDYzMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGZhZjdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4xKzIwMTgwNjMwLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKKyIKKyMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KK1NSQ1JFViA9ICJkM2IyOTE4MGFlNDM2MGQ3YWI3YTQxYTE1ZTk2MzI5OWZkYjcyZTMzIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzL2ZpeC1yczYwMDAtY3J0MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzL2ZpeC1yczYwMDAtY3J0MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjIwZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4LXJzNjAwMC1jcnQwLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAgW09FLVNwZWNpZmljXQorCitNYWtlIGluc3RhbGwgdHJpZXMgdG8gcGVyZm9ybSBpbnN0YWxsIGZvciBhbGwgdmFyaWFudHMsIGJ1dCBzb21lIG9mIHRoZW0gdXNlIHRoZSBzYW1lCituYW1lIGZvciBjcnQwIGluIHNwZWNpZmljLCBzbyBwZXJmb3JtaW5nIGFsbCBvZiB0aGVtIHJlc3VsdHMgaW4gYW4gZXJyb3IgZHVyaW5nCitkb19pbnN0YWxsLCB3ZSBzaW1wbHkgbW9kaWZ5IHRoZSBuYW1lIG9mIHRoZSBvYmplY3RzIHNvIHRoZSBpbnN0YWxsYXRpb24gY2FuIHByb2NlZWQKK2FuZCBsZWF2ZSBpdCB0byB0aGUgdXNlciB0byBzZWxlY3Qgd2hpY2ggb2JqZWN0IGZpbGVzIHRvIHVzZS4KKworU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEVuZWRpbm8gSGVybmFuZGV6IFNhbWFuaWVnbyA8YWxlamFuZHJAeGlsaW54LmNvbT4KKworSW5kZXg6IG5ld2xpYi0zLjAuMC9saWJnbG9zcy9yczYwMDAvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBuZXdsaWItMy4wLjAub3JpZy9saWJnbG9zcy9yczYwMDAvTWFrZWZpbGUuaW4KKysrKyBuZXdsaWItMy4wLjAvbGliZ2xvc3MvcnM2MDAwL01ha2VmaWxlLmluCitAQCAtMzU4LDcgKzM1OCw3IEBAIGluc3RhbGwtc2ltOgorIAlzZXQgLWU7IGZvciB4IGluICR7U0lNX0NSVDB9ICR7U0lNX0JTUH0gJHtTSU1fU0NSSVBUU307IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisgCisgaW5zdGFsbC1tdm1lOgorLQlzZXQgLWU7IGZvciB4IGluICR7TVZNRV9DUlQwfSAke01WTUVfQlNQfSAke01WTUVfU0NSSVBUU307IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisrCXNldCAtZTsgZm9yIHggaW4gJHtNVk1FX0NSVDB9ICR7TVZNRV9CU1B9ICR7TVZNRV9TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS9tdm1lLSQkeDsgZG9uZQorIAorIGluc3RhbGwtc29sYXJpczoKKyAJc2V0IC1lOyBmb3IgeCBpbiAke1NPTEFSSVNfQ1JUMH0gJHtTT0xBUklTX0JTUH0gJHtTT0xBUklTX1NDUklQVFN9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorQEAgLTM2NywxNSArMzY3LDE1IEBAIGluc3RhbGwtbGludXg6CisgCXNldCAtZTsgZm9yIHggaW4gJHtMSU5VWF9DUlQwfSAke0xJTlVYX0JTUH0gJHtMSU5VWF9TQ1JJUFRTfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKyAKKyBpbnN0YWxsLXllbGxvd2tuaWZlOgorLQlzZXQgLWU7IGZvciB4IGluICR7WUVMTE9XS05JRkVfQ1JUMH0gJHtZRUxMT1dLTklGRV9CU1B9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorKwlzZXQgLWU7IGZvciB4IGluICR7WUVMTE9XS05JRkVfQ1JUMH0gJHtZRUxMT1dLTklGRV9CU1B9OyBkbyAke0lOU1RBTExfREFUQX0gJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9L3llbGxvd2tuaWZlLSQkeDsgZG9uZQorIAlzZXQgLWU7IGZvciB4IGluICR7WUVMTE9XS05JRkVfU0NSSVBUU307IGRvICR7SU5TVEFMTF9EQVRBfSAkKHNyY2RpcikvJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorIAorIGluc3RhbGwtYWRzOgorLQlzZXQgLWU7IGZvciB4IGluICR7QURTX0NSVDB9ICR7QURTX0JTUH07IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisrCXNldCAtZTsgZm9yIHggaW4gJHtBRFNfQ1JUMH0gJHtBRFNfQlNQfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS9hZHMtJCR4OyBkb25lCisgCXNldCAtZTsgZm9yIHggaW4gJHtBRFNfU0NSSVBUU307IGRvICR7SU5TVEFMTF9EQVRBfSAkKHNyY2RpcikvJCR4ICQoREVTVERJUikke3Rvb2xkaXJ9L2xpYiR7TVVMVElTVUJESVJ9LyQkeDsgZG9uZQorIAorIGluc3RhbGwtbWJ4OgorLQlzZXQgLWU7IGZvciB4IGluICR7TUJYX0NSVDB9ICR7TUJYX0JTUH07IGRvICR7SU5TVEFMTF9EQVRBfSAkJHggJChERVNURElSKSR7dG9vbGRpcn0vbGliJHtNVUxUSVNVQkRJUn0vJCR4OyBkb25lCisrCXNldCAtZTsgZm9yIHggaW4gJHtNQlhfQ1JUMH0gJHtNQlhfQlNQfTsgZG8gJHtJTlNUQUxMX0RBVEF9ICQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS9tYngtJCR4OyBkb25lCisgCXNldCAtZTsgZm9yIHggaW4gJHtNQlhfU0NSSVBUU30gJHtNQlhfU1BFQ1N9OyBkbyAke0lOU1RBTExfREFUQX0gJChzcmNkaXIpLyQkeCAkKERFU1RESVIpJHt0b29sZGlyfS9saWIke01VTFRJU1VCRElSfS8kJHg7IGRvbmUKKyAKKyBpbnN0YWxsLXhpbDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzL2ZpeF9tYWtlZmlsZV9pbmNsdWRlX2FybV9oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3MvZml4X21ha2VmaWxlX2luY2x1ZGVfYXJtX2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY0NWJlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzL2ZpeF9tYWtlZmlsZV9pbmNsdWRlX2FybV9oLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAgW09FLVNwZWNpZmljXQorCitXaGVuIHRyeWluZyB0byBidWlsZCBsaWJnbG9zcyBmb3IgYW4gYXJtIHRhcmdldCwgdGhlIGJ1aWxkIHN5c3RlbQorY29tcGxhaW5zIGFib3V0IG1pc3Npbmcgc29tZSBpbmNsdWRlIGZpbGVzOgorCit8IGZhdGFsIGVycm9yOiBhY2xlLWNvbXBpYXQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorfCAgI2luY2x1ZGUgImFjbGUtY29tcGF0LmgiCit8ICAgICAgICAgICBefn5+fn5+fn5+fn5+fn4KK3wgY29tcGlsYXRpb24gdGVybWluYXRlZC4KKworVGhlc2UgaW5jbHVkZSBmaWxlcyBjb21lIGZyb20gdGhlIG5ld2xpYiBzb3VyY2UsIGJ1dCBzaW5jZSB3ZQorYXJlIGJ1aWxkaW5nIGxpYmdsb3NzIHNlcGFyYXRlbHkgZnJvbSBuZXdsaWIsIGxpYmdsb3NzIGlzIHVuYXdhcmUKK29mIHdoZXJlIHRoZXkgYXJlLCB0aGlzIHBhdGNoIGZpeGVzIHRoZSBJTkNMVURFUyBzbyB0aGUgYnVpbGQgc3lzdGVtCitjYW4gZmluZCBzdWNoIGZpbGVzLgorCitTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gRW5lZGlubyBIZXJuYW5kZXogU2FtYW5pZWdvIDxhbGVqYW5kckB4aWxpbnguY29tPgorCitJbmRleDogbmV3bGliLTMuMC4wL2xpYmdsb3NzL2NvbmZpZy9kZWZhdWx0Lm1oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbmV3bGliLTMuMC4wLm9yaWcvbGliZ2xvc3MvY29uZmlnL2RlZmF1bHQubWgKKysrKyBuZXdsaWItMy4wLjAvbGliZ2xvc3MvY29uZmlnL2RlZmF1bHQubWgKK0BAIC0xLDcgKzEsNyBAQAorIE5FV0xJQl9DRkxBR1MgPSBgaWYgWyAtZCAke29ianJvb3R9L25ld2xpYiBdOyB0aGVuIGVjaG8gLUkke29ianJvb3R9L25ld2xpYi90YXJnLWluY2x1ZGUgLUkke3NyY3Jvb3R9L25ld2xpYi9saWJjL2luY2x1ZGU7IGZpYAorIE5FV0xJQl9MREZMQUdTID0gYGlmIFsgLWQgJHtvYmpyb290fS9uZXdsaWIgXTsgdGhlbiBlY2hvIC1CJHtvYmpyb290fS9uZXdsaWIvIC1MJHtvYmpyb290fS9uZXdsaWIvOyBmaWAKKyAKKy1JTkNMVURFUyA9IC1JLiAtSSQoc3JjZGlyKS8uLgorK0lOQ0xVREVTID0gLUkuIC1JJChzcmNkaXIpLy4uIC1JJChzcmNkaXIpLy4uL25ld2xpYi9saWJjL21hY2hpbmUvYXJtCisgIyBOb3RlIHRoYXQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgJHtNVUxUSUxJQn0gaXMgbm90IHRoZSB3YXkgbXVsdGlsaWIKKyAjIG9wdGlvbnMgYXJlIHBhc3NlZDsgdGhleSdyZSBwYXNzZWQgaW4gJChDRkxBR1MpLgorIENGTEFHU19GT1JfVEFSR0VUID0gLU8yIC1nICR7TVVMVElMSUJ9ICR7SU5DTFVERVN9ICR7TkVXTElCX0NGTEFHU30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzllZDMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMC4wLmJiCkBAIC0wLDAgKzEsMzMgQEAKK3JlcXVpcmUgbmV3bGliLmluYworCitERVBFTkRTICs9ICJuZXdsaWIiCisKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2xpYmdsb3NzOiIKKworU1JDX1VSSV9hcHBlbmRfcG93ZXJwYyA9ICIgZmlsZTovL2ZpeC1yczYwMDAtY3J0MC5wYXRjaCIKK1NSQ19VUklfYXBwZW5kX2FybSA9ICIgZmlsZTovL2ZpeF9tYWtlZmlsZV9pbmNsdWRlX2FybV9oLnBhdGNoIgorCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9saWJnbG9zcy9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIGluc3RhbGwgZG9lc24ndCBjcmVhdGUgdGhpcyBpdHNlbGYsIGF2b2lkIGluc3RhbGwgZXJyb3IKKwlpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9saWIKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBNb3ZlIGxpYnMgdG8gZGVmYXVsdCBkaXJlY3RvcmllcyBzbyB0aGV5IGNhbiBiZSBwaWNrZWQgdXAgbGF0ZXIKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwltdiAtdiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliLyogJHtEfSR7bGliZGlyfQorCisJIyBSZW1vdmUgb3JpZ2luYWwgZGlyZWN0b3J5CisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYgorfQorCisjIFNwbGl0IHBhY2thZ2VzIGNvcnJlY3RseQorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLmxkICR7bGliZGlyfS8qLnNwZWNzIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY3B1LWluaXQvKiIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5N2M3YzIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCkBAIC0wLDAgKzEsNTggQEAKK1NVTU1BUlkgPSAiTmV3bGliIGlzIGEgQyBsaWJyYXJ5IGludGVuZGVkIGZvciB1c2Ugb24gZW1iZWRkZWQgc3lzdGVtcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvbmV3bGliLyIKK0RFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBpbnRlbmRlZCBmb3IgdXNlIG9uIGVtYmVkZGVkIHN5c3RlbXMuIEl0IGlzIGEgY29uZ2xvbWVyYXRpb24gb2Ygc2V2ZXJhbCBsaWJyYXJ5IHBhcnRzLCBhbGwgdW5kZXIgZnJlZSBzb2Z0d2FyZSBsaWNlbnNlcyB0aGF0IG1ha2UgdGhlbSBlYXNpbHkgdXNhYmxlIG9uIGVtYmVkZGVkIHByb2R1Y3RzLiIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIEdQTHYzICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorCQlmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorCQlmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisJCWZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQlmaWxlOi8vQ09QWUlORy5MSUJHTE9TUzttZDU9NzNmNWM5ODc3OWFlYTdkYmE0YTZjOTRhNzRhYjBhZTIgXAorCQlmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKwkJZmlsZTovL0NPUFlJTkcuTkVXTElCO21kNT05NTZhNGIxNDg3Zjc2NzdjZGNjZWVlZThmMDVhMjFmMCBcCisJCWZpbGU6Ly9uZXdsaWIvbGliYy9wb3NpeC9DT1BZUklHSFQ7bWQ1PTEwMzQ2OGZmMTk4MmJlODQwZmRmNGVlOWY4YjUxYmJmIFwKKwkJZmlsZTovL25ld2xpYi9saWJjL3N5cy9saW51eC9saW51eHRocmVhZHMvTElDRU5TRTttZDU9NzM2NDAyMDdmYmM3OWIxOThjN2ZmZDRhZDRkOTdhYTAgXAorCQkiCisKK1NSQ19VUkkgPSAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL25ld2xpYi9uZXdsaWItJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjgxZWM4NzMxMDhiODU5M2M1ODZmOTFjYTY1OTYzOTUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4NTY2MzM1ZWU3NGU1ZmNhZWI4NTk1YjRlYmQwNDAwYzRiMDQzZDZhY2IzMjYzZWNiMTMxNGY4ZjU1MDEzMzIiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYy1pbml0aWFsIgorCitQQVRIX3ByZXBlbmQgPSAiJHtTVEFHSU5HX0JJTkRJUl9UT09MQ0hBSU59LiR7U1RBR0lOR0NDfToiCitTVEFHSU5HQ0MgPSAiZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0iCitTVEFHSU5HQ0NfY2xhc3MtbmF0aXZlc2RrID0gImdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30iCisKK1MgPSAiJHtXT1JLRElSfS9uZXdsaWItJHtQVn0iCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCisKKyMjIGRpc2FibGUgc3RkbGliCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmQgPSAiIC1ub3N0ZGxpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgLS1idWlsZD0ke0JVSUxEX1NZU30gIFwKKyAgICAgICAgICAgICAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKKwkJLS1ob3N0PSR7SE9TVF9TWVN9IFwKKyAgICAgICAgICAgICAgICAtLXByZWZpeD0ke3ByZWZpeH0gIFwKKyAgICAgICAgICAgICAgICAtLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAorICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gXAorCQktLWVuYWJsZS1sYW5ndWFnZXM9YyBcCisJCS0td2l0aC1uZXdsaWIgXAorCQktLXdpdGgtZ251LWFzIFwKKwkJLS13aXRoLWdudS1sZCBcCisJCS0tZGlzYWJsZS1tdWx0aWxpYiBcCisJCSIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0nJHtEfScKK30KKworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9saWJjLWdsaWJjX2NsYXNzLXRhcmdldCA9ICJudWxsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MjM4ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4wLjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBuZXdsaWIuaW5jCisKK1BST1ZJREVTICs9ICJ2aXJ0dWFsL2xpYmMgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIHZpcnR1YWwvbGliaWNvbnYgdmlydHVhbC9saWJpbnRsIgorCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSBpbmNsdWRlIGZpbGVzIGFuZCBsaWJzIHRvIGRlZmF1bHQgZGlyZWN0b3JpZXMgc28gdGhleSBjYW4gYmUgcGlja2VkIHVwIGxhdGVyCisJbXYgLXYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYiAke0R9JHtsaWJkaXJ9CisJbXYgLXYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2luY2x1ZGUgJHtEfSR7aW5jbHVkZWRpcn0KKworCSMgUmVtb3ZlIG9yaWdpbmFsIGRpcmVjdG9yeQorCXJtZGlyICR7RH0ke3ByZWZpeH0vJHtUQVJHRVRfU1lTfQorfQorCisjIE5vIHJwbSBwYWNrYWdlIGlzIGFjdHVhbGx5IGNyZWF0ZWQgYnV0IC1kZXYgZGVwZW5kcyBvbiBpdCwgYXZvaWQgZG5mIGVycm9yCitSREVQRU5EU18ke1BOfS1kZXZfbGliYy1uZXdsaWIgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IGU1N2ZhMDkuLmQyZWNiNjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKQEAgLTQzLDcgKzQzLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EU19jbGFzcy1uYXRpdmU9InV0aWwtbGludXgtbmF0aXZlIGlhc2wtbmF0aXZlIG9zc3AtdXVpZC1uYXRpdmUgcWVtdS1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZT0idXRpbC1saW51eC1uYXRpdmUgaWFzbC1uYXRpdmUgcWVtdS1uYXRpdmUiCiAKIERFUEVORFNfY2xhc3MtdGFyZ2V0PSJvdm1mLW5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgppbmRleCBlMmY2MTY5Li40YmYwYWMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgpAQCAtMjEsMTAgKzIxLDExIEBACiAgICAgbmF0aXZlc2RrLWF1dG9tYWtlIFwKICAgICBuYXRpdmVzZGstc2hhZG93IFwKICAgICBuYXRpdmVzZGstbWFrZWRldnMgXAotICAgIG5hdGl2ZXNkay1kbmYgXAogICAgIG5hdGl2ZXNkay1jbWFrZSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ25hdGl2ZXNkay13YXlsYW5kJywgJycsIGQpfSBcCiAgICAgbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teSBcCisgICAgbmF0aXZlc2RrLWJpc29uIFwKKyAgICBuYXRpdmVzZGstZmxleCBcCiAgICAgIgogCiBSREVQRU5EU18ke1BOfV9kYXJ3aW4gPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiCmluZGV4IGJiMTkyYWUuLjQ0MjIwMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtYmFzZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTI4OSw3ICsyODksNyBAQAogIwogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtYmFzZS13aWZpID0gIldpRmkgc3VwcG9ydCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1iYXNlLXdpZmkgPSAiXAotICAgICR7VklSVFVBTC1SVU5USU1FX3dpcmVsZXNzLXRvb2xzfSBcCisgICAgaXcgXAogICAgIHdwYS1zdXBwbGljYW50IgogCiBSUkVDT01NRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS13aWZpID0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKaW5kZXggNzZjZDdmYy4uOGRjNDQ1ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWJvb3QuYmIKQEAgLTQ2LDQgKzQ2LDUgQEAKICAgICAke01BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTfSIKIAogUlJFQ09NTUVORFNfJHtQTn0gPSAiXAorICAgICR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHMtc3lzbG9nfSBcCiAgICAgJHtNQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXN0YW5kYWxvbmUtc2RrLXRhcmdldC5iYgppbmRleCA0M2ZjNTk5Li5mNWIyZDY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc3RhbmRhbG9uZS1zZGstdGFyZ2V0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zdGFuZGFsb25lLXNkay10YXJnZXQuYmIKQEAgLTEzLDcgKzEzLDcgQEAKICAgICAke0xJQkNfREVQRU5ERU5DSUVTfSBcCiAgICAgIgogCi1SUkVDT01NRU5EU18ke1BOfSA9ICJcCitSUkVDT01NRU5EU18ke1BOfV9taW5ndzMyID0gIlwKICAgICBsaWJzc3AgXAogICAgIGxpYnNzcC1kZXYgXAogICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKaW5kZXggZmEwZTM2My4uMzNkOWMwOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKQEAgLTE4LDcgKzE4LDYgQEAKIAogUlJFQ09NTUVORFNfJHtQTn0gPSAiXAogICAgICR7UEVSRn0gXAotICAgIHRyYWNlLWNtZCBcCiAgICAgYmxrdHJhY2UgXAogICAgICR7UFJPRklMRV9UT09MU19YfSBcCiAgICAgJHtQUk9GSUxFX1RPT0xTX1NZU1RFTUR9IFwKQEAgLTM0LDYgKzMzLDcgQEAKIFNZU1RFTVRBUCA9ICJzeXN0ZW10YXAiCiBTWVNURU1UQVBfbGliYy1tdXNsID0gIiIKIFNZU1RFTVRBUF9uaW9zMiA9ICIiCitTWVNURU1UQVBfcmlzY3Y2NCA9ICIiCiAKICMgbHR0bmctdXN0IHVzZXMgc2NoZWRfZ2V0Y3B1KCkgd2hpY2ggaXMgbm90IHRoZXJlIG9uIGZvciBzb21lIHBsYXRmb3Jtcy4KIExUVE5HVVNUID0gImx0dG5nLXVzdCIKQEAgLTQ1LDYgKzQ1LDcgQEAKIExUVE5HVE9PTFNfcmlzY3Y2NCA9ICIiCiAKIExUVE5HTU9EVUxFUyA9ICJsdHRuZy1tb2R1bGVzIgorTFRUTkdNT0RVTEVTX3Jpc2N2NjQgPSAiIgogCiBCQUJFTFRSQUNFID0gImJhYmVsdHJhY2UiCiAKQEAgLTU0LDEyICs1NSwxNSBAQAogVkFMR1JJTkRfbGliYy1tdXNsID0gIiIKIFZBTEdSSU5EX21pcHNhcmNoID0gIiIKIFZBTEdSSU5EX25pb3MyID0gIiIKK1ZBTEdSSU5EX2FyYyA9ICIiCiBWQUxHUklORF9hcm12NCA9ICIiCiBWQUxHUklORF9hcm12NSA9ICIiCiBWQUxHUklORF9hcm12NiA9ICIiCiBWQUxHUklORF9hcm1lYiA9ICIiCiBWQUxHUklORF9hYXJjaDY0ID0gIiIKK1ZBTEdSSU5EX3Jpc2N2NjQgPSAiIgogVkFMR1JJTkRfbGludXgtZ251eDMyID0gIiIKK1ZBTEdSSU5EX2xpbnV4LWdudW4zMiA9ICIiCiAKIFJERVBFTkRTXyR7UE59ID0gIlwKICAgICAke1BST0ZJTEVUT09MU30gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXRlc3RhcHBzLmJiCmluZGV4IGI4ZTUwNzAuLjY0MzIxOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy10ZXN0YXBwcy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtdGVzdGFwcHMuYmIKQEAgLTE1LDYgKzE1LDEwIEBACiBLRVhFQ1RPT0xTX2U1NTAwLTY0YiA/PSAiIgogS0VYRUNUT09MU19taWNyb2JsYXplID89ICIiCiBLRVhFQ1RPT0xTX25pb3MyID89ICIiCitLRVhFQ1RPT0xTX3Jpc2N2NjQgPz0gIiIKKworR1NURVhBTVBMRVMgPz0gImdzdC1leGFtcGxlcyIKK0dTVEVYQU1QTEVTX3Jpc2N2NjQgPSAiIgogCiBYMTFHTFRPT0xTID0gIlwKICAgICBtZXNhLWRlbW9zIFwKQEAgLTI1LDggKzI5LDcgQEAKICAgICAiCiAKIFgxMVRPT0xTID0gIlwKLSAgICBmc3Rlc3RzIFwKLSAgICBnc3QtZXhhbXBsZXMgXAorICAgICR7R1NURVhBTVBMRVN9IFwKICAgICB4MTFwZXJmIFwKICAgICB4cmVzdG9wIFwKICAgICB4d2luaW5mbyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKaW5kZXggN2QyY2NiZC4uNWFmYjQ5MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgpAQCAtNywzICs3LDUgQEAKICAgICBnby1ydW50aW1lLWRldiBcCiAgICAgZ28tcnVudGltZS1zdGF0aWNkZXYgXAogIgorCitDT01QQVRJQkxFX0hPU1QgPSAiXig/IXJpc2N2NjQpLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgppbmRleCBhZGIwYzU2Li45YTY3MjFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKQEAgLTc2LDI0ICs3NiwyNiBAQAogICAgIGludGx0b29sIFwKICAgICBsZGQgXAogICAgIGxlc3MgXAotICAgIGxpYnNzcCBcCi0gICAgbGlic3NwLWRldiBcCi0gICAgbGlic3NwLXN0YXRpY2RldiBcCiAgICAgbGlic3RkYysrIFwKICAgICBsaWJzdGRjKystZGV2IFwKICAgICBsaWJ0b29sIFwKICAgICBtYWtlIFwKLSAgICBta3RlbXAgXAogICAgIHBlcmwtbW9kdWxlLXJlIFwKICAgICBwZXJsLW1vZHVsZS10ZXh0LXdyYXAgXAogICAgIHBrZ2NvbmZpZyBcCiAgICAgcXVpbHQgXAogICAgIHNlZCBcCiAgICAgIgotIyBnbGliYy11dGlsczogZm9yIHJwY2dlbgorUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLXNka19hcHBlbmRfbWluZ3czMiA9ICJcCisgICAgbGlic3NwIFwKKyAgICBsaWJzc3AtZGV2IFwKKyAgICBsaWJzc3Atc3RhdGljZGV2IFwKKyAgICAiCisjIHJwY3N2Yy1wcm90bzogZm9yIHJwY2dlbgogUkRFUEVORFNfcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLXNka19hcHBlbmRfbGliYy1nbGliYyA9ICJcCiAgICAgZ2xpYmMtZ2NvbnYtaWJtODUwIFwKICAgICBnbGliYy11dGlscyBcCisgICAgcnBjc3ZjLXByb3RvIFwKICAgICAiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQtZGVidWcgPSAiIFwKICAgICBnZGIgXApAQCAtMTg1LDggKzE4Nyw2IEBACiAgICAgbGliZ2wtZGV2IFwKICAgICBsaWJnbHUgXAogICAgIGxpYmdsdS1kZXYgXAotICAgIGxpYnNkbCBcCi0gICAgbGlic2RsLWRldiBcCiAgICAgbGlieDExLWRldiBcCiAgICAgYWR3YWl0YS1pY29uLXRoZW1lIFwKICAgICB4ZGctdXRpbHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCmluZGV4IGFhYjJjMDMuLjNhZDFlZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKQEAgLTczLDYgKzczLDggQEAKIAogcHl0aG9uIGRvX2NvbXBpbGUgKCkgewogICAgIGltcG9ydCBzaHV0aWwKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIGltcG9ydCBzaGxleAogCiAgICAgIyBCdWlsZCBhIHNlcGFyYXRlIGV4ZWN1dGFibGUgZm9yIGVhY2ggc3BsYXNoIGltYWdlCiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKQEAgLTgyLDggKzg0LDcgQEAKICAgICBvdXRwdXRmaWxlcyA9IGQuZ2V0VmFyKCdTUExBU0hfSU5TVEFMTCcpLnNwbGl0KCkKICAgICBmb3IgbG9jYWxmaWxlLCBvdXRwdXRmaWxlIGluIHppcChsb2NhbGZpbGVzLCBvdXRwdXRmaWxlcyk6CiAgICAgICAgIGlmIGxvY2FsZmlsZS5lbmRzd2l0aCgiLnBuZyIpOgotICAgICAgICAgICAgb3V0cCA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dCgnJXMgJXMgUE9LWScgJSAoY29udmVydHNjcmlwdCwgb3MucGF0aC5qb2luKHdvcmtkaXIsIGxvY2FsZmlsZSkpKQotICAgICAgICAgICAgcHJpbnQob3V0cFsxXSkKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2FsbChzaGxleC5zcGxpdCgnJXMgJXMgUE9LWScgJSAoY29udmVydHNjcmlwdCwgb3MucGF0aC5qb2luKHdvcmtkaXIsIGxvY2FsZmlsZSkpKSkKICAgICAgICAgICAgIGZiYXNlID0gb3MucGF0aC5zcGxpdGV4dChsb2NhbGZpbGUpWzBdCiAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoIiVzLWltZy5oIiAlIGZiYXNlLCBkZXN0ZmlsZSkKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZDM4NDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9zeXN0ZW1kOiIKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAzLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMjctcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Ci1pbmhlcml0IGRlcGxveQotCi1FRklfQ0MgPz0gIiR7Q0N9IgotRVhUUkFfT0VNRVNPTiArPSAiLURlZmk9dHJ1ZSBcCi0gICAgICAgICAgICAgICAgICAtRGdudS1lZmk9dHJ1ZSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1sZHNkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EbWFuPWZhbHNlIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWNjPScke0VGSV9DQ30nIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxkPScke0xEfScgXAotICAgICAgICAgICAgICAgICAgIgotCi0jIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKLSMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KLSMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKLSAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJywgVHJ1ZSkgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCi0gICAgaWYgdGFyZ2V0ID09ICJ4ODZfNjQiOgotICAgICAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyAiYm9vdHg2NC5lZmkiCi0gICAgZWxzZToKLSAgICAgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgImJvb3RpYTMyLmVmaSIKLSAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQotICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKLSAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKLX0KLQotRklMRVNfJHtQTn0gPSAiL2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9IgotCi1SREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgotCi0jIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgotQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKLQotZG9fY29tcGlsZSgpIHsKLQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKLQlmaQotCi0JbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0vYm9vdAotCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSQotCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSS9CT09UCi0JaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0R9L2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9Ci19Ci0KLWRvX2RlcGxveSAoKSB7Ci0JaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KLX0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjM5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZTQyMGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzOS5iYgpAQCAtMCwwICsxLDY5IEBACityZXF1aXJlIHN5c3RlbWQuaW5jCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9zeXN0ZW1kOiIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDYtcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC10by1ydW4tZWZpX2NjLWFuZC1lZmlfbGQtY29ycmVjdGx5LXdoZW4tY3Jvc3MtY28ucGF0Y2ggXAorICAgICAgICAgICAgIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Citpbmhlcml0IGRlcGxveQorCitFRklfQ0MgPz0gIiR7Q0N9IgorRVhUUkFfT0VNRVNPTiArPSAiLURlZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGdudS1lZmk9dHJ1ZSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSBcCisgICAgICAgICAgICAgICAgICAtRGVmaS1sZHNkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EbWFuPWZhbHNlIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWNjPScke0VGSV9DQ30nIFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxkPScke0xEfScgXAorICAgICAgICAgICAgICAgICAgIgorCisjIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKKyMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KKyMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKKyAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJywgVHJ1ZSkgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCisgICAgaWYgdGFyZ2V0ID09ICJ4ODZfNjQiOgorICAgICAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyAiYm9vdHg2NC5lZmkiCisgICAgZWxzZToKKyAgICAgICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgImJvb3RpYTMyLmVmaSIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQorICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKKyAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKK30KKworRklMRVNfJHtQTn0gPSAiL2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9IgorCitSREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKKworZG9fY29tcGlsZSgpIHsKKwlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgorCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKKwlmaQorCisJbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vYm9vdAorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSQorCWluc3RhbGwgLWQgJHtEfS9ib290L0VGSS9CT09UCisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0R9L2Jvb3QvRUZJL0JPT1QvJHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KK30KK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmIyN2ZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZi5iYgpAQCAtMCwwICsxLDUzIEBACityZXF1aXJlIHN5c3RlbWQuaW5jCisKK1NVTU1BUlkgPSAiU3lzdGVtZCBzeXN0ZW0gY29uZmlndXJhdGlvbiIKK0RFU0NSSVBUSU9OID0gIlN5c3RlbWQgbWF5IHJlcXVpcmUgc2xpZ2h0bHkgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gZm9yIFwKK2RpZmZlcmVudCBtYWNoaW5lcy4gIEZvciBleGFtcGxlLCBxZW11IG1hY2hpbmVzIHJlcXVpcmUgYSBsb25nZXIgXAorRGVmYXVsdFRpbWVvdXRTdGFydFNlYyBzZXR0aW5nLiIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCiske3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZiBcCiske3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCiske3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKKyR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCisKK0ZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCAke3N5c2NvbmZkaXJ9L3N5c3RlbWQiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gJzEnCitkb19jb21waWxlW25vZXhlY10gPSAnMScKKworZG9faW5zdGFsbCgpIHsKKwlybSAtcmYgJHtEfS8ke3N5c2NvbmZkaXJ9L3N5c3RlbWQKKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9zeXN0ZW1kCisKKwkjIENyZWF0ZSBtYWNoaW5lLWlkCisJIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKKworCWluc3RhbGwgLW0gMDY0NCAke1N9L3NyYy9jb3JlZHVtcC9jb3JlZHVtcC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvY29yZWR1bXAuY29uZgorCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2pvdXJuYWwvam91cm5hbGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWxkLmNvbmYKKwkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCisJc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAorCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2xvZ2luL2xvZ2luZC5jb25mLmluICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYKKwkjIFNldCBLSUxMX1VTRVJfUFJPQ0VTU0VTIHRvIHllcworCXNlZCAtaSAtZSAncy9AS0lMTF9VU0VSX1BST0NFU1NFU0AveWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZgorCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vc3JjL2NvcmUvc3lzdGVtLmNvbmYuaW4gJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZgorCSMgU2V0IE1FTU9SWV9BQ0NPVU5USU5HX0RFRkFVTFQgdG8geWVzCisJc2VkIC1pIC1lICdzL0BNRU1PUllfQUNDT1VOVElOR19ERUZBVUxUQC95ZXMvJyAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zcmMvY29yZS91c2VyLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYKK30KKworIyBCYXNlZCBvbiBjaGFuZ2UgZnJvbSBZUCBidWcgODE0MSwgT0UgY29tbWl0IDUxOTZkN2JhY2FlZjEwNzZjMzYxYWRhYTI4NjdiZTMxNzU5YzFiNTIKK2RvX2luc3RhbGxfYXBwZW5kX3FlbXVhbGwoKSB7CisJIyBDaGFuZ2UgRGVmYXVsdFRpbWVvdXRTdGFydFNlYyBmcm9tIDkwcyB0byAyNDBzCisJZWNobyAiRGVmYXVsdFRpbWVvdXRTdGFydFNlYyA9IDI0MHMiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKaW5kZXggZDY3YTNjOS4uNjVhOTMxZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKQEAgLTUsNyArNSw3IEBACiAKIFBSID0gInI1IgogCi1TRVJJQUxfQ09OU09MRSA/PSAiMTE1MjAwIHR0eVMwIgorU0VSSUFMX0NPTlNPTEVTID89ICIxMTUyMDA7dHR5UzAiCiAKIFNSQ19VUkkgPSAiZmlsZTovL3NlcmlhbC1nZXR0eUAuc2VydmljZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IDVmYTQ4ZTcuLjczNmUwYTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKQEAgLTE0LDcgKzE0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKIAotU1JDUkVWID0gIjQ2NjU5ZjdkZWI5NjJmNTVjNzI4ZTcwNTk3ZTM3YzJhM2FiNjMyNmQiCitTUkNSRVYgPSAiZGU3NDM2YjAyYmFkYzgyMjAwZGMxMjdmZjE5MGI4MTU1NzY5YjhlNyIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC5naXQ7cHJvdG9jb2w9Z2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1BbHNvLWNoZWNrLWkzODYtaTU4Ni1hbmQtaTY4Ni1mb3ItaWEzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3YmIxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUFsc28tY2hlY2staTM4Ni1pNTg2LWFuZC1pNjg2LWZvci1pYTMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSAzZThjMTliYjFiYmM0NDkzYzU5MWY3NWMwMGMxZmVmZTNiMWM4YTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAyMDo0Mjo0MSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBBbHNvIGNoZWNrIGkzODYsIGk1ODYgYW5kIGk2ODYgZm9yIGlhMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMjhjYjhiNjBlLi40ODk1MzFhNDMgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xMjE3LDcgKzEyMTcsNyBAQCBjb25mLnNldDEwKCdTWVNURU1EX1NMT1dfVEVTVFNfREVGQVVMVCcsIHNsb3dfdGVzdHMpCi0gaWYgZ2V0X29wdGlvbignZWZpJykKLSAgICAgICAgIGVmaV9hcmNoID0gaG9zdF9tYWNoaW5lLmNwdV9mYW1pbHkoKQotIAotLSAgICAgICAgaWYgZWZpX2FyY2ggPT0gJ3g4NicKLSsgICAgICAgIGlmIGVmaV9hcmNoID09ICd4ODYnIG9yIGVmaV9hcmNoID09ICdpMzg2JyBvciBlZmlfYXJjaCA9PSAnaTU4Nicgb3IgZWZpX2FyY2ggPT0gJ2k2ODYnCi0gICAgICAgICAgICAgICAgIEVGSV9NQUNISU5FX1RZUEVfTkFNRSA9ICdpYTMyJwotICAgICAgICAgICAgICAgICBnbnVfZWZpX2FyY2ggPSAnaWEzMicKLSAgICAgICAgIGVsaWYgZWZpX2FyY2ggPT0gJ3g4Nl82NCcKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZmZjNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDY4N2E1YWY4ZGM1ZDM4ZjkxOGE2Y2UwOGZlZDUyOTcyMzRiZjgzNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE4OjAwOjE3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEhpZGUgX19zdGFydF9CVVNfRVJST1JfTUFQIGFuZCBfX3N0b3BfQlVTX0VSUk9SX01BUAotCi1mb3IgY3VycmVudGx5IHVua25vd24gcmVhc29ucyB0aGV5IGdldCBleHBvcnRlZCB0byB0aGUgc2hhcmVkIGxpYnJpZXMKLWV2ZW4gd2l0aG91dCBiZWluZyBsaXN0ZWQgaW4gdGhlIHN5bSBmaWxlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFsgQ29uZGl0aW9uYWwgb24gbWFzdGVyIG5lZWRpbmcgdGhpcywgMjM0IGRvZXMgbmVlZCBpdCBdCi0KLSBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCi1pbmRleCAzNzhmN2EzNzcuLjQ5ZDc5N2FiZCAxMDA2NDQKLS0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwotKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCi1AQCAtNzEsOCArNzEsOCBAQCBCVVNfRVJST1JfTUFQX0VMRl9SRUdJU1RFUiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIGJ1c19zdGFuZGFyZF9lcnJvcnNbXSA9IHsKLSB9OwotIAotIC8qIEdDQyBtYXBzIHRoaXMgbWFnaWNhbGx5IHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiB0aGUgQlVTX0VSUk9SX01BUCBzZWN0aW9uICovCi0tZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdGFydF9CVVNfRVJST1JfTUFQW107Ci0tZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdG9wX0JVU19FUlJPUl9NQVBbXTsKLStleHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0YXJ0X0JVU19FUlJPUl9NQVBbXSBfaGlkZGVuXzsKLStleHRlcm4gY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBfX3N0b3BfQlVTX0VSUk9SX01BUFtdIF9oaWRkZW5fOwotIAotIC8qIEFkZGl0aW9uYWwgbWFwcyByZWdpc3RlcmVkIHdpdGggc2RfYnVzX2Vycm9yX2FkZF9tYXAoKSBhcmUgaW4gdGhpcwotICAqIE5VTEwgdGVybWluYXRlZCBhcnJheSAqLwotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoCmluZGV4IGU5MTNlM2YuLmQ3NDU4MDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIGUzNjFmNmI0YWVmYWU1N2VmZmY3ZTQ1N2RmOGRiNGQxMDY3YmVjMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDllMzgxNmJjYWEzNmUxYTExNjQ3Y2EwY2Y0ZjgwNDQ0NDljNzdmZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjUwOjIzIC0wODAwCitEYXRlOiBNb24sIDIgSnVsIDIwMTggMTU6Mjg6MjIgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGZzdGFjay1wcm90ZWN0b3IgZmxhZ3MgdG8gd29ya2Fyb3VuZCBtdXNsIGJ1aWxkCiAKIFJlbW92ZSBmc3RhY2stcHJvdGVjdG9yIGFuZCBmc3RhY2stcHJvdGVjdG9yLXN0cm9uZyBmbGFncyB0byBmaXgKQEAgLTgsNyArOCw3IEBACiAKICAgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zdGFja19jaGtfZmFpbF9sb2NhbCcKIAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBTcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogLS0tCkBAIC0xNiwxOCArMTYsMTggQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDc2MTBhYjEyYi4uNTkxYjljYmFiIDEwMDY0NAoraW5kZXggZjQzMmVhMDcyLi5hNzM0YTI5NWMgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC0zMjksOCArMzI5LDYgQEAgZm9yZWFjaCBhcmcgOiBbJy1XZXh0cmEnLAotICAgICAgICAgICAgICAgICctZmRpYWdub3N0aWNzLXNob3ctb3B0aW9uJywKLSAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcnLAotICAgICAgICAgICAgICAgICctZnZpc2liaWxpdHk9aGlkZGVuJywKLS0gICAgICAgICAgICAgICAnLWZzdGFjay1wcm90ZWN0b3InLAotLSAgICAgICAgICAgICAgICctZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcnLAotICAgICAgICAgICAgICAgICctLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00JywKLSAgICAgICAgICAgICAgIF0KLSAgICAgICAgIGlmIGNjLmhhc19hcmd1bWVudChhcmcpCitAQCAtMzMzLDggKzMzMyw2IEBAIHBvc3NpYmxlX2NjX2ZsYWdzID0gWworICAgICAgICAgJy1mZGlhZ25vc3RpY3Mtc2hvdy1vcHRpb24nLAorICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nJywKKyAgICAgICAgICctZnZpc2liaWxpdHk9aGlkZGVuJywKKy0gICAgICAgICctZnN0YWNrLXByb3RlY3RvcicsCistICAgICAgICAnLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nJywKKyAgICAgICAgICctLXBhcmFtPXNzcC1idWZmZXItc2l6ZT00JywKKyBdCisgCiAtLSAKLTIuMTMuMAorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaAppbmRleCBmNGMxNWUxLi4wM2Y2ZWFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1Vc2UtZ2V0ZW52LXdoZW4tc2VjdXJlLXZlcnNpb25zLWFyZS1ub3QtYXZhaWxhYmxlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiMTE5MmE2ZTE3MTQxMzI5MWQ5ZDY0ZmFmYzA0NzczYzZiYmM5Y2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ZGQxMzY1MTI4OTY5NzlmZWI2ODgzYTE2MjI2ZDY0MGE3ZTVjYTc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAyMyBGZWIgMjAxOCAxMDowNDo0OCArMDgwMAotU3ViamVjdDogW1BBVENIIDAxLzMxXSBVc2UgZ2V0ZW52IHdoZW4gc2VjdXJlIHZlcnNpb25zIGFyZSBub3QgYXZhaWxhYmxlCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTldIFVzZSBnZXRlbnYgd2hlbiBzZWN1cmUgdmVyc2lvbnMgYXJlIG5vdCBhdmFpbGFibGUKIAogbXVzbCBkb2VzbnQgaW1wbGVtZW50IHNlY3VyZSB2ZXJzaW9uLCBzbyB3ZSBkZWZhdWx0CiB0byBpdCBpZiBjb25maWd1cmUgZG9lcyBub3QgZGV0ZWN0IGEgc2VjdXJlIGltcGxlbWVudGF0aW9uCkBAIC0xNiwxMCArMTYsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCAxMjgwZTZjNDEuLjM5YzFmYjcwMCAxMDA2NDQKK2luZGV4IDcxYTA3ZDA1Ny4uMGUzM2FiYjlmIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTYwNSw3ICs2MDUsNyBAQCBzdHJ1Y3QgYnRyZnNfaW9jdGxfcXVvdGFfY3RsX2FyZ3MgeworQEAgLTU5Miw3ICs1OTIsNyBAQCBzdHJ1Y3QgYnRyZnNfaW9jdGxfcXVvdGFfY3RsX2FyZ3MgewogICMgIGlmIEhBVkVfX19TRUNVUkVfR0VURU5WCiAgIyAgICBkZWZpbmUgc2VjdXJlX2dldGVudiBfX3NlY3VyZV9nZXRlbnYKICAjICBlbHNlCkBAIC0yOSw1ICsyOSw1IEBACiAgI2VuZGlmCiAgCiAtLSAKLTIuMTMuMAorMi4xMS4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjRlN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gODdkZDYxYmUyZTI4ZTc4Y2U0ZjlmMTczNzk0ODEyZTZjMmQ5MDRkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjcgSnVuIDIwMTggMTY6MDE6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzldIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZSAKKyBmb3IgdGhlIGJpbmZtdCBzZXJ2aWNlcworCit1c2UgW0luc3RhbGxdIGJsb2NrcyBzbyB0aGF0IHRoZXkgZ2V0IGNyZWF0ZWQgd2hlbiB0aGUgc2VydmljZSBpcyBlbmFibGVkCitsaWtlIGEgdHJhZGl0aW9uYWwgc2VydmljZS4KKworVGhlIFtJbnN0YWxsXSBibG9ja3Mgd2VyZSByZWplY3RlZCB1cHN0cmVhbSBhcyB0aGV5IGRvbid0IGhhdmUgYSB3YXkgdG8KKyJlbmFibGUiIGl0IG9uIGluc3RhbGwgd2l0aG91dCBzdGF0aWMgc3ltbGlua3Mgd2hpY2ggY2FuJ3QgYmUgZGlzYWJsZWQsCitvbmx5IG1hc2tlZC4gV2UgaG93ZXZlciBjYW4gZG8gdGhhdCBpbiBhIHBvc3RpbnN0LgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHVuaXRzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8IDYgKystLS0tCisgdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IHwgMyArKysKKyB1bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluICAgICAgICAgfCA0ICsrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLmJ1aWxkIGIvdW5pdHMvbWVzb24uYnVpbGQKK2luZGV4IGU0YWM2Y2VkNi4uNjk4NzM0ZTQ0IDEwMDY0NAorLS0tIGEvdW5pdHMvbWVzb24uYnVpbGQKKysrKyBiL3VuaXRzL21lc29uLmJ1aWxkCitAQCAtNDYsOCArNDYsNyBAQCB1bml0cyA9IFsKKyAgICAgICAgIFsncG93ZXJvZmYudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWwwLnRhcmdldCddLAorICAgICAgICAgWydwcmludGVyLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICcnXSwKKy0gICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50JywgICAnRU5BQkxFX0JJTkZNVCcsCistICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAorKyAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJ10sCisgICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50JywgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsncmVib290LnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAncnVubGV2ZWw2LnRhcmdldCBjdHJsLWFsdC1kZWwudGFyZ2V0J10sCitAQCAtMTMwLDggKzEyOSw3IEBAIGluX3VuaXRzID0gWworICAgICAgICAgWydzeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UnLCAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZScsICAgICcnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1iYWNrbGlnaHRALnNlcnZpY2UnLCAgICAgICAgICAgJ0VOQUJMRV9CQUNLTElHSFQnXSwKKy0gICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnLAorLSAgICAgICAgICdzeXNpbml0LnRhcmdldC53YW50cy8nXSwKKysgICAgICAgIFsnc3lzdGVtZC1iaW5mbXQuc2VydmljZScsICAgICAgICAgICAgICAgJ0VOQUJMRV9CSU5GTVQnXSwKKyAgICAgICAgIFsnc3lzdGVtZC1jb3JlZHVtcEAuc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9DT1JFRFVNUCddLAorICAgICAgICAgWydzeXN0ZW1kLWV4aXQuc2VydmljZScsICAgICAgICAgICAgICAgICAnJ10sCisgICAgICAgICBbJ3N5c3RlbWQtZmlyc3Rib290LnNlcnZpY2UnLCAgICAgICAgICAgICdFTkFCTEVfRklSU1RCT09UJywKK2RpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK2luZGV4IDMwYTZiYzk5MS4uNDIzMWYzYjcwIDEwMDY0NAorLS0tIGEvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CisrKysgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKK0BAIC0xOCwzICsxOCw2IEBAIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCisgCisgW0F1dG9tb3VudF0KKyBXaGVyZT0vcHJvYy9zeXMvZnMvYmluZm10X21pc2MKKysKKytbSW5zdGFsbF0KKytXYW50ZWRCeT1zeXNpbml0LnRhcmdldAorZGlmZiAtLWdpdCBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gYi91bml0cy9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlLmluCitpbmRleCBlOTQwYzdjOWEuLjZiZTdmNWNjOSAxMDA2NDQKKy0tLSBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KKysrKyBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KK0BAIC0xNCw2ICsxNCw3IEBAIERvY3VtZW50YXRpb249aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvYmluZm10LW1pc2MuaHRtCisgRG9jdW1lbnRhdGlvbj1odHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zeXN0ZW1kL0FQSUZpbGVTeXN0ZW1zCisgRGVmYXVsdERlcGVuZGVuY2llcz1ubworIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKKytXYW50cz1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKKyBCZWZvcmU9c3lzaW5pdC50YXJnZXQgc2h1dGRvd24udGFyZ2V0CisgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KK0BAIC0yOCwzICsyOSw2IEBAIFR5cGU9b25lc2hvdAorIFJlbWFpbkFmdGVyRXhpdD15ZXMKKyBFeGVjU3RhcnQ9QHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLWJpbmZtdAorIFRpbWVvdXRTZWM9OTBzCisrCisrW0luc3RhbGxdCisrV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY2hvd24tcmVjdXJzaXZlLWxldC1zLXJld29yay10aGUtcmVjdXJzaXZlLWxvZ2ljLXRvLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY2hvd24tcmVjdXJzaXZlLWxldC1zLXJld29yay10aGUtcmVjdXJzaXZlLWxvZ2ljLXRvLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDM1MGViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jaG93bi1yZWN1cnNpdmUtbGV0LXMtcmV3b3JrLXRoZS1yZWN1cnNpdmUtbG9naWMtdG8tLnBhdGNoCkBAIC0wLDAgKzEsMjE5IEBACitGcm9tIDJkYThiYTNmNTA3MzQ1ZDA0MDFlYTlkNzE5MWZhMTZmZmE1NjBlYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+CitEYXRlOiBGcmksIDE5IE9jdCAyMDE4IDExOjI2OjU5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNob3duLXJlY3Vyc2l2ZTogbGV0J3MgcmV3b3JrIHRoZSByZWN1cnNpdmUgbG9naWMgdG8gdXNlCisgT19QQVRICisKK1RoYXQgd2F5IHdlIGNhbiBwaW4gYSBzcGVjaWZpYyBpbm9kZSBhbmQgYW5hbHl6ZSBpdCBhbmQgbWFuaXB1bGF0ZSBpdAord2l0aG91dCBpdCBiZWluZyBzd2FwcGVkIG91dCBiZW5lYXRoIG91ciBoYW5kcy4KKworRml4ZXMgYSB2dWxuZXJhYmlsaXR5IG9yaWdpbmFsbHkgZm91bmQgYnkgSmFubiBIb3JuIGZyb20gR29vZ2xlLgorCitDVkUtMjAxOC0xNTY4NworTFA6ICMxNzk2NjkyCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE2MzkwNzYKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNWRlNmNjZTU4YjNlOGI3OTIzOWI2ZTgzNjUzNDU5ZDkxYWY2ZTU3YykKKworQ1ZFOiBDVkUtMjAxOC0xNTY4NworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvY29yZS9jaG93bi1yZWN1cnNpdmUuYyB8IDE0NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9jaG93bi1yZWN1cnNpdmUuYyBiL3NyYy9jb3JlL2Nob3duLXJlY3Vyc2l2ZS5jCitpbmRleCBjNDc5NDUwLi4yN2M2NDQ4IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvY2hvd24tcmVjdXJzaXZlLmMKKysrKyBiL3NyYy9jb3JlL2Nob3duLXJlY3Vyc2l2ZS5jCitAQCAtMSwxNyArMSwxOSBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorLSNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKy0jaW5jbHVkZSAibWFjcm8uaCIKKy0jaW5jbHVkZSAiZmQtdXRpbC5oIgorLSNpbmNsdWRlICJkaXJlbnQtdXRpbC5oIgorICNpbmNsdWRlICJjaG93bi1yZWN1cnNpdmUuaCIKKysjaW5jbHVkZSAiZGlyZW50LXV0aWwuaCIKKysjaW5jbHVkZSAiZmQtdXRpbC5oIgorKyNpbmNsdWRlICJtYWNyby5oIgorKyNpbmNsdWRlICJzdGRpby11dGlsLmgiCisrI2luY2x1ZGUgInN0cnYuaCIKKysjaW5jbHVkZSAidXNlci11dGlsLmgiCisgCistc3RhdGljIGludCBjaG93bl9vbmUoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3Qgc3RhdCAqc3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CistICAgICAgICBpbnQgcjsKKytzdGF0aWMgaW50IGNob3duX29uZShpbnQgZmQsIGNvbnN0IHN0cnVjdCBzdGF0ICpzdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKysgICAgICAgIGNoYXIgcHJvY2ZzX3BhdGhbU1RSTEVOKCIvcHJvYy9zZWxmL2ZkLyIpICsgREVDSU1BTF9TVFJfTUFYKGludCkgKyAxXTsKKyAKKyAgICAgICAgIGFzc2VydChmZCA+PSAwKTsKKyAgICAgICAgIGFzc2VydChzdCk7CitAQCAtMjAsOTAgKzIyLDgyIEBAIHN0YXRpYyBpbnQgY2hvd25fb25lKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IHN0YXQgKnN0LCB1aWRfdCB1aWQsCisgICAgICAgICAgICAgKCFnaWRfaXNfdmFsaWQoZ2lkKSB8fCBzdC0+c3RfZ2lkID09IGdpZCkpCisgICAgICAgICAgICAgICAgIHJldHVybiAwOworIAorLSAgICAgICAgaWYgKG5hbWUpCistICAgICAgICAgICAgICAgIHIgPSBmY2hvd25hdChmZCwgbmFtZSwgdWlkLCBnaWQsIEFUX1NZTUxJTktfTk9GT0xMT1cpOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICByID0gZmNob3duKGZkLCB1aWQsIGdpZCk7CistICAgICAgICBpZiAociA8IDApCistICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrICAgICAgICAvKiBXZSBjaGFuZ2Ugb3duZXJzaGlwIHRocm91Z2ggdGhlIC9wcm9jL3NlbGYvZmQvJWkgcGF0aCwgc28gdGhhdCB3ZSBoYXZlIGEgc3RhYmxlIHJlZmVyZW5jZSB0aGF0IHdvcmtzIHdpdGgKKysgICAgICAgICAqIE9fUEFUSC4gKE5vdGU6IGZjaG93bigpIGFuZCBmY2htb2QoKSBkbyBub3Qgd29yayB3aXRoIE9fUEFUSCwgdGhlIGtlcm5lbCByZWZ1c2VzIHRoYXQuICovCisrICAgICAgICB4c3ByaW50Zihwcm9jZnNfcGF0aCwgIi9wcm9jL3NlbGYvZmQvJWkiLCBmZCk7CisgCistICAgICAgICAvKiBUaGUgbGludXgga2VybmVsIGFsdGVycyB0aGUgbW9kZSBpbiBzb21lIGNhc2VzIG9mIGNob3duKCkuIExldCdzIHVuZG8gdGhpcy4gKi8KKy0gICAgICAgIGlmIChuYW1lKSB7CistICAgICAgICAgICAgICAgIGlmICghU19JU0xOSyhzdC0+c3RfbW9kZSkpCistICAgICAgICAgICAgICAgICAgICAgICAgciA9IGZjaG1vZGF0KGZkLCBuYW1lLCBzdC0+c3RfbW9kZSwgMCk7CistICAgICAgICAgICAgICAgIGVsc2UgLyogVGhlcmUncyBjdXJyZW50bHkgbm8gQVRfU1lNTElOS19OT0ZPTExPVyBmb3IgZmNobW9kYXQoKSAqLworLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAwOworLSAgICAgICAgfSBlbHNlCistICAgICAgICAgICAgICAgIHIgPSBmY2htb2QoZmQsIHN0LT5zdF9tb2RlKTsKKy0gICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgIGlmIChjaG93bihwcm9jZnNfcGF0aCwgdWlkLCBnaWQpIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKyAKKysgICAgICAgIC8qIFRoZSBsaW51eCBrZXJuZWwgYWx0ZXJzIHRoZSBtb2RlIGluIHNvbWUgY2FzZXMgb2YgY2hvd24oKS4gTGV0J3MgdW5kbyB0aGlzLiBXZSBkbyB0aGlzIG9ubHkgZm9yIG5vbi1zeW1saW5rcworKyAgICAgICAgICogaG93ZXZlci4gVGhhdCdzIGJlY2F1c2UgZm9yIHN5bWxpbmtzIHRoZSBhY2Nlc3MgbW9kZSBpcyBpZ25vcmVkIGFueXdheSBhbmQgYmVjYXVzZSBvbiBzb21lIGtlcm5lbHMvZmlsZQorKyAgICAgICAgICogc3lzdGVtcyB0cnlpbmcgdG8gY2hhbmdlIHRoZSBhY2Nlc3MgbW9kZSB3aWxsIHN1Y2NlZWQgYnV0IGhhcyBubyBlZmZlY3Qgd2hpbGUgb24gb3RoZXJzIGl0IGFjdGl2ZWx5CisrICAgICAgICAgKiBmYWlscy4gKi8KKysgICAgICAgIGlmICghU19JU0xOSyhzdC0+c3RfbW9kZSkpCisrICAgICAgICAgICAgICAgIGlmIChjaG1vZChwcm9jZnNfcGF0aCwgc3QtPnN0X21vZGUgJiAwNzc3NykgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrCisgICAgICAgICByZXR1cm4gMTsKKyB9CisgCisgc3RhdGljIGludCBjaG93bl9yZWN1cnNpdmVfaW50ZXJuYWwoaW50IGZkLCBjb25zdCBzdHJ1Y3Qgc3RhdCAqc3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisrICAgICAgICBfY2xlYW51cF9jbG9zZWRpcl8gRElSICpkID0gTlVMTDsKKyAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworKyAgICAgICAgc3RydWN0IGRpcmVudCAqZGU7CisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydChmZCA+PSAwKTsKKyAgICAgICAgIGFzc2VydChzdCk7CisgCistICAgICAgICBpZiAoU19JU0RJUihzdC0+c3RfbW9kZSkpIHsKKy0gICAgICAgICAgICAgICAgX2NsZWFudXBfY2xvc2VkaXJfIERJUiAqZCA9IE5VTEw7CistICAgICAgICAgICAgICAgIHN0cnVjdCBkaXJlbnQgKmRlOworLQorLSAgICAgICAgICAgICAgICBkID0gZmRvcGVuZGlyKGZkKTsKKy0gICAgICAgICAgICAgICAgaWYgKCFkKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1lcnJubzsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICBmZCA9IC0xOworLQorLSAgICAgICAgICAgICAgICBGT1JFQUNIX0RJUkVOVF9BTEwoZGUsIGQsIHIgPSAtZXJybm87IGdvdG8gZmluaXNoKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgZnN0OworLQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3Rfb3JfZG90X2RvdChkZS0+ZF9uYW1lKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworLQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmc3RhdGF0KGRpcmZkKGQpLCBkZS0+ZF9uYW1lLCAmZnN0LCBBVF9TWU1MSU5LX05PRk9MTE9XKSA8IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAtZXJybm87CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9CistCistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFNfSVNESVIoZnN0LnN0X21vZGUpKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3ViZGlyX2ZkOworLQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyX2ZkID0gb3BlbmF0KGRpcmZkKGQpLCBkZS0+ZF9uYW1lLCBPX1JET05MWXxPX05PTkJMT0NLfE9fRElSRUNUT1JZfE9fQ0xPRVhFQ3xPX05PRk9MTE9XfE9fTk9BVElNRSk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViZGlyX2ZkIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gLWVycm5vOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjaG93bl9yZWN1cnNpdmVfaW50ZXJuYWwoc3ViZGlyX2ZkLCAmZnN0LCB1aWQsIGdpZCk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPiAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKy0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNob3duX29uZShkaXJmZChkKSwgZGUtPmRfbmFtZSwgJmZzdCwgdWlkLCBnaWQpOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID4gMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CistICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgZCA9IGZkb3BlbmRpcihmZCk7CisrICAgICAgICBpZiAoIWQpIHsKKysgICAgICAgICAgICAgICAgc2FmZV9jbG9zZShmZCk7CisrICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrICAgICAgICB9CisrCisrICAgICAgICBGT1JFQUNIX0RJUkVOVF9BTEwoZGUsIGQsIHJldHVybiAtZXJybm8pIHsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfY2xvc2VfIGludCBwYXRoX2ZkID0gLTE7CisrICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IGZzdDsKKysKKysgICAgICAgICAgICAgICAgaWYgKGRvdF9vcl9kb3RfZG90KGRlLT5kX25hbWUpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgICAgICAgICAvKiBMZXQncyBwaW4gdGhlIGNoaWxkIGlub2RlIHdlIHdhbnQgdG8gZml4IG5vdyB3aXRoIGFuIE9fUEFUSCBmZCwgc28gdGhhdCBpdCBjYW5ub3QgYmUgc3dhcHBlZCBvdXQKKysgICAgICAgICAgICAgICAgICogd2hpbGUgd2UgbWFuaXB1bGF0ZSBpdC4gKi8KKysgICAgICAgICAgICAgICAgcGF0aF9mZCA9IG9wZW5hdChkaXJmZChkKSwgZGUtPmRfbmFtZSwgT19QQVRIfE9fQ0xPRVhFQ3xPX05PRk9MTE9XKTsKKysgICAgICAgICAgICAgICAgaWYgKHBhdGhfZmQgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CisrCisrICAgICAgICAgICAgICAgIGlmIChmc3RhdChwYXRoX2ZkLCAmZnN0KSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKysKKysgICAgICAgICAgICAgICAgaWYgKFNfSVNESVIoZnN0LnN0X21vZGUpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YmRpcl9mZDsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb252ZXJ0IGl0IHRvIGEgInJlYWwiIChpLmUuIG5vbi1PX1BBVEgpIGZkIG5vdyAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcl9mZCA9IGZkX3Jlb3BlbihwYXRoX2ZkLCBPX1JET05MWXxPX0NMT0VYRUN8T19OT0FUSU1FKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViZGlyX2ZkIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJkaXJfZmQ7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNob3duX3JlY3Vyc2l2ZV9pbnRlcm5hbChzdWJkaXJfZmQsICZmc3QsIHVpZCwgZ2lkKTsgLyogdGFrZXMgcG9zc2Vzc2lvbiBvZiBzdWJkaXJfZmQgZXZlbiBvbiBmYWlsdXJlICovCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPiAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNob3duX29uZShwYXRoX2ZkLCAmZnN0LCB1aWQsIGdpZCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPiAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAKKy0gICAgICAgICAgICAgICAgciA9IGNob3duX29uZShkaXJmZChkKSwgTlVMTCwgc3QsIHVpZCwgZ2lkKTsKKy0gICAgICAgIH0gZWxzZQorLSAgICAgICAgICAgICAgICByID0gY2hvd25fb25lKGZkLCBOVUxMLCBzdCwgdWlkLCBnaWQpOworKyAgICAgICAgciA9IGNob3duX29uZShkaXJmZChkKSwgc3QsIHVpZCwgZ2lkKTsKKyAgICAgICAgIGlmIChyIDwgMCkKKy0gICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgIHJldHVybiByOworIAorLSAgICAgICAgciA9IHIgPiAwIHx8IGNoYW5nZWQ7CistCistZmluaXNoOgorLSAgICAgICAgc2FmZV9jbG9zZShmZCk7CistICAgICAgICByZXR1cm4gcjsKKysgICAgICAgIHJldHVybiByID4gMCB8fCBjaGFuZ2VkOworIH0KKyAKKyBpbnQgcGF0aF9jaG93bl9yZWN1cnNpdmUoY29uc3QgY2hhciAqcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKK0BAIC0xMTEsNyArMTA1LDcgQEAgaW50IHBhdGhfY2hvd25fcmVjdXJzaXZlKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgICAgIGludCByOworIAorLSAgICAgICAgZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19ESVJFQ1RPUll8T19DTE9FWEVDfE9fTk9GT0xMT1d8T19OT0FUSU1FKTsKKysgICAgICAgIGZkID0gb3BlbihwYXRoLCBPX1JET05MWXxPX0RJUkVDVE9SWXxPX0NMT0VYRUN8T19OT0ZPTExPV3xPX05PQVRJTUUpOworICAgICAgICAgaWYgKGZkIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1lcnJubzsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGM4MzYyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNzg0NGUwNzA3NDU2MTFhNTJlMzU1YjczZTc4OTBmMzYwZGQ1NDBkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IERlYyAyMDE1IDA0OjA5OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmUvZGV2aWNlLmM6IENoYW5nZSB0aGUgZGVmYXVsdCBkZXZpY2UgdGltZW91dCB0byAyNDAgc2VjLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NwZWNpZmljIGNhc2UgUUVNVS9BQl0KLQotU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBzcmMvY29yZS9kZXZpY2UuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RldmljZS5jIGIvc3JjL2NvcmUvZGV2aWNlLmMKLWluZGV4IGE0MzY2NGQzYi4uNGIxNmE4YWVjIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvZGV2aWNlLmMKLSsrKyBiL3NyYy9jb3JlL2RldmljZS5jCi1AQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9pbml0KFVuaXQgKnUpIHsKLSAgICAgICAgICAqIGluZGVmaW5pdGVseSBmb3IgcGx1Z2dlZCBpbiBkZXZpY2VzLCBzb21ldGhpbmcgd2hpY2ggY2Fubm90Ci0gICAgICAgICAgKiBoYXBwZW4gZm9yIHRoZSBvdGhlciB1bml0cyBzaW5jZSB0aGVpciBvcGVyYXRpb25zIHRpbWUgb3V0Ci0gICAgICAgICAgKiBhbnl3YXkuICovCi0tICAgICAgICB1LT5qb2JfcnVubmluZ190aW1lb3V0ID0gdS0+bWFuYWdlci0+ZGVmYXVsdF90aW1lb3V0X3N0YXJ0X3VzZWM7Ci0rICAgICAgICB1LT5qb2JfcnVubmluZ190aW1lb3V0ID0gKDI0MCAqIFVTRUNfUEVSX1NFQyk7Ci0gCi0gICAgICAgICB1LT5pZ25vcmVfb25faXNvbGF0ZSA9IHRydWU7Ci0gfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLXdoZW4tZGVzZXJpYWxpemluZy1zdGF0ZS1hbHdheXMtdXNlLXJlYWRfbGluZS1MLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLXdoZW4tZGVzZXJpYWxpemluZy1zdGF0ZS1hbHdheXMtdXNlLXJlYWRfbGluZS1MLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNWQ2ODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtd2hlbi1kZXNlcmlhbGl6aW5nLXN0YXRlLWFsd2F5cy11c2UtcmVhZF9saW5lLUwucGF0Y2gKQEAgLTAsMCArMSwyNTAgQEAKK0Zyb20gMWEwNWZmNDk0OGQ3NzgyODBlYzE1NWE5YWJlNjlkMzM2MGJmZGRkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IExlbm5hcnQgUG9ldHRlcmluZyA8bGVubmFydEBwb2V0dGVyaW5nLm5ldD4KK0RhdGU6IFdlZCwgMTcgT2N0IDIwMTggMTg6MzY6MjQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gPT9VVEYtOD9xP2NvcmU6PTIwd2hlbj0yMGRlc2VyaWFsaXppbmc9MjBzdGF0ZT0yMGFsd2F5cz89CisgPT9VVEYtOD9xPz0yMHVzZT0yMHJlYWQ9NUZsaW5lKD1FMj04MD1BNiw9MjBMT05HPTVGTElORT01Rk1BWCw9MjA/PQorID0/VVRGLTg/cT89RTI9ODA9QTYpPz0KK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBzaG91bGQgYmUgbXVjaCBiZXR0ZXIgdGhhbiBmZ2V0cygpLCBhcyB3ZSBjYW4gcmVhZCBzdWJzdGFudGlhbGx5Citsb25nZXIgbGluZXMgYW5kIG92ZXJseSBsb25nIGxpbmVzIHJlc3VsdCBpbiBwcm9wZXIgZXJyb3JzLgorCitGaXhlcyBhIHZ1bG5lcmFiaWxpdHkgZGlzY292ZXJlZCBieSBKYW5uIEhvcm4gYXQgR29vZ2xlLgorCitDVkUtMjAxOC0xNTY4NgorTFA6ICMxNzk2NDAyCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE2MzkwNzEKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgODk0OGIzNDE1ZDc2MjI0NWViZjVlMTlkODBiOTdkNGQ4Y2MyMDhjMSkKKworQ1ZFOiBDVkUtMjAxOC0xNTY4NgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvY29yZS9qb2IuYyAgICAgfCAxOSArKysrKysrKysrKy0tLS0tLS0tCisgc3JjL2NvcmUvbWFuYWdlci5jIHwgNDQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvY29yZS91bml0LmMgICAgfCAzNCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgc3JjL2NvcmUvdW5pdC5oICAgIHwgIDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvam9iLmMgYi9zcmMvY29yZS9qb2IuYworaW5kZXggNzM0NzU2Yi4uODU1MmZmYiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2pvYi5jCisrKysgYi9zcmMvY29yZS9qb2IuYworQEAgLTEwLDYgKzEwLDcgQEAKKyAjaW5jbHVkZSAiZGJ1cy1qb2IuaCIKKyAjaW5jbHVkZSAiZGJ1cy5oIgorICNpbmNsdWRlICJlc2NhcGUuaCIKKysjaW5jbHVkZSAiZmlsZWlvLmgiCisgI2luY2x1ZGUgImpvYi5oIgorICNpbmNsdWRlICJsb2cuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKK0BAIC0xMDkxLDI0ICsxMDkyLDI2IEBAIGludCBqb2Jfc2VyaWFsaXplKEpvYiAqaiwgRklMRSAqZikgeworIH0KKyAKKyBpbnQgam9iX2Rlc2VyaWFsaXplKEpvYiAqaiwgRklMRSAqZikgeworKyAgICAgICAgaW50IHI7CisrCisgICAgICAgICBhc3NlcnQoaik7CisgICAgICAgICBhc3NlcnQoZik7CisgCisgICAgICAgICBmb3IgKDs7KSB7CistICAgICAgICAgICAgICAgIGNoYXIgbGluZVtMSU5FX01BWF0sICpsLCAqdjsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqbGluZSA9IE5VTEw7CisrICAgICAgICAgICAgICAgIGNoYXIgKmwsICp2OworICAgICAgICAgICAgICAgICBzaXplX3QgazsKKyAKKy0gICAgICAgICAgICAgICAgaWYgKCFmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGYpKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZlb2YoZikpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLWVycm5vOworLSAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHIgPSByZWFkX2xpbmUoZiwgTE9OR19MSU5FX01BWCwgJmxpbmUpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHJlYWQgc2VyaWFsaXphdGlvbiBsaW5lOiAlbSIpOworKyAgICAgICAgICAgICAgICBpZiAociA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworIAorLSAgICAgICAgICAgICAgICBjaGFyX2FycmF5XzAobGluZSk7CisgICAgICAgICAgICAgICAgIGwgPSBzdHJzdHJpcChsaW5lKTsKKyAKKyAgICAgICAgICAgICAgICAgLyogRW5kIG1hcmtlciAqLworLSAgICAgICAgICAgICAgICBpZiAobFswXSA9PSAwKQorKyAgICAgICAgICAgICAgICBpZiAoaXNlbXB0eShsKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAKKyAgICAgICAgICAgICAgICAgayA9IHN0cmNzcG4obCwgIj0iKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmMgYi9zcmMvY29yZS9tYW5hZ2VyLmMKK2luZGV4IDNhN2YwYzQuLmE1NzgwYzkgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmMKKysrKyBiL3NyYy9jb3JlL21hbmFnZXIuYworQEAgLTMxNzEsMjIgKzMxNzEsMTkgQEAgaW50IG1hbmFnZXJfZGVzZXJpYWxpemUoTWFuYWdlciAqbSwgRklMRSAqZiwgRkRTZXQgKmZkcykgeworICAgICAgICAgbS0+bl9yZWxvYWRpbmcrKzsKKyAKKyAgICAgICAgIGZvciAoOzspIHsKKy0gICAgICAgICAgICAgICAgY2hhciBsaW5lW0xJTkVfTUFYXTsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqbGluZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbCwgKmw7CisgCistICAgICAgICAgICAgICAgIGlmICghZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmKSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZW9mKGYpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CistICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1lcnJubzsKKy0KKysgICAgICAgICAgICAgICAgciA9IHJlYWRfbGluZShmLCBMT05HX0xJTkVfTUFYLCAmbGluZSk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHJlYWQgc2VyaWFsaXphdGlvbiBsaW5lOiAlbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmIChyID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgCistICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfMChsaW5lKTsKKyAgICAgICAgICAgICAgICAgbCA9IHN0cnN0cmlwKGxpbmUpOworLQorLSAgICAgICAgICAgICAgICBpZiAobFswXSA9PSAwKQorKyAgICAgICAgICAgICAgICBpZiAoaXNlbXB0eShsKSkgLyogZW5kIG1hcmtlciAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgICAgICAgICBpZiAoKHZhbCA9IHN0YXJ0c3dpdGgobCwgImN1cnJlbnQtam9iLWlkPSIpKSkgeworQEAgLTMzNTMsMjkgKzMzNTAsMzEgQEAgaW50IG1hbmFnZXJfZGVzZXJpYWxpemUoTWFuYWdlciAqbSwgRklMRSAqZiwgRkRTZXQgKmZkcykgeworICAgICAgICAgfQorIAorICAgICAgICAgZm9yICg7OykgeworLSAgICAgICAgICAgICAgICBVbml0ICp1OworLSAgICAgICAgICAgICAgICBjaGFyIG5hbWVbVU5JVF9OQU1FX01BWCsyXTsKKysgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqbGluZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHVuaXRfbmFtZTsKKysgICAgICAgICAgICAgICAgVW5pdCAqdTsKKyAKKyAgICAgICAgICAgICAgICAgLyogU3RhcnQgbWFya2VyICovCistICAgICAgICAgICAgICAgIGlmICghZmdldHMobmFtZSwgc2l6ZW9mKG5hbWUpLCBmKSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZW9mKGYpKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CistICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IC1lcnJubzsKKy0KKysgICAgICAgICAgICAgICAgciA9IHJlYWRfbGluZShmLCBMT05HX0xJTkVfTUFYLCAmbGluZSk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHJlYWQgc2VyaWFsaXphdGlvbiBsaW5lOiAlbSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmIChyID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgCistICAgICAgICAgICAgICAgIGNoYXJfYXJyYXlfMChuYW1lKTsKKy0gICAgICAgICAgICAgICAgdW5pdF9uYW1lID0gc3Ryc3RyaXAobmFtZSk7CisrICAgICAgICAgICAgICAgIHVuaXRfbmFtZSA9IHN0cnN0cmlwKGxpbmUpOworIAorICAgICAgICAgICAgICAgICByID0gbWFuYWdlcl9sb2FkX3VuaXQobSwgdW5pdF9uYW1lLCBOVUxMLCBOVUxMLCAmdSk7CisgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19ub3RpY2VfZXJybm8ociwgIkZhaWxlZCB0byBsb2FkIHVuaXQgXCIlc1wiLCBza2lwcGluZyBkZXNlcmlhbGl6YXRpb246ICVtIiwgdW5pdF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PTUVNKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CistICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF9kZXNlcmlhbGl6ZV9za2lwKGYpOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB1bml0X2Rlc2VyaWFsaXplX3NraXAoZik7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrCisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgIH0KKyAKK0BAIC0zMzg4LDkgKzMzODcsNiBAQCBpbnQgbWFuYWdlcl9kZXNlcmlhbGl6ZShNYW5hZ2VyICptLCBGSUxFICpmLCBGRFNldCAqZmRzKSB7CisgICAgICAgICB9CisgCisgZmluaXNoOgorLSAgICAgICAgaWYgKGZlcnJvcihmKSkKKy0gICAgICAgICAgICAgICAgciA9IC1FSU87CistCisgICAgICAgICBhc3NlcnQobS0+bl9yZWxvYWRpbmcgPiAwKTsKKyAgICAgICAgIG0tPm5fcmVsb2FkaW5nLS07CisgCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdW5pdC5jIGIvc3JjL2NvcmUvdW5pdC5jCitpbmRleCA3ZGE5NjNhLi5lOThjOWM0IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdW5pdC5jCisrKysgYi9zcmMvY29yZS91bml0LmMKK0BAIC0zMzgwLDIxICszMzgwLDE5IEBAIGludCB1bml0X2Rlc2VyaWFsaXplKFVuaXQgKnUsIEZJTEUgKmYsIEZEU2V0ICpmZHMpIHsKKyAgICAgICAgIGFzc2VydChmZHMpOworIAorICAgICAgICAgZm9yICg7OykgeworLSAgICAgICAgICAgICAgICBjaGFyIGxpbmVbTElORV9NQVhdLCAqbCwgKnY7CisrICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmxpbmUgPSBOVUxMOworICAgICAgICAgICAgICAgICBDR3JvdXBJUEFjY291bnRpbmdNZXRyaWMgbTsKKysgICAgICAgICAgICAgICAgY2hhciAqbCwgKnY7CisgICAgICAgICAgICAgICAgIHNpemVfdCBrOworIAorLSAgICAgICAgICAgICAgICBpZiAoIWZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZikpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmVvZihmKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87CistICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgciA9IHJlYWRfbGluZShmLCBMT05HX0xJTkVfTUFYLCAmbGluZSk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gcmVhZCBzZXJpYWxpemF0aW9uIGxpbmU6ICVtIik7CisrICAgICAgICAgICAgICAgIGlmIChyID09IDApIC8qIGVvZiAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworIAorLSAgICAgICAgICAgICAgICBjaGFyX2FycmF5XzAobGluZSk7CisgICAgICAgICAgICAgICAgIGwgPSBzdHJzdHJpcChsaW5lKTsKKy0KKy0gICAgICAgICAgICAgICAgLyogRW5kIG1hcmtlciAqLworLSAgICAgICAgICAgICAgICBpZiAoaXNlbXB0eShsKSkKKysgICAgICAgICAgICAgICAgaWYgKGlzZW1wdHkobCkpIC8qIEVuZCBtYXJrZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgICAgICAgayA9IHN0cmNzcG4obCwgIj0iKTsKK0BAIC0zNjcxLDIzICszNjY5LDI3IEBAIGludCB1bml0X2Rlc2VyaWFsaXplKFVuaXQgKnUsIEZJTEUgKmYsIEZEU2V0ICpmZHMpIHsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKy12b2lkIHVuaXRfZGVzZXJpYWxpemVfc2tpcChGSUxFICpmKSB7CisraW50IHVuaXRfZGVzZXJpYWxpemVfc2tpcChGSUxFICpmKSB7CisrICAgICAgICBpbnQgcjsKKyAgICAgICAgIGFzc2VydChmKTsKKyAKKyAgICAgICAgIC8qIFNraXAgc2VyaWFsaXplZCBkYXRhIGZvciB0aGlzIHVuaXQuIFdlIGRvbid0IGtub3cgd2hhdCBpdCBpcy4gKi8KKyAKKyAgICAgICAgIGZvciAoOzspIHsKKy0gICAgICAgICAgICAgICAgY2hhciBsaW5lW0xJTkVfTUFYXSwgKmw7CisrICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKmxpbmUgPSBOVUxMOworKyAgICAgICAgICAgICAgICBjaGFyICpsOworIAorLSAgICAgICAgICAgICAgICBpZiAoIWZnZXRzKGxpbmUsIHNpemVvZiBsaW5lLCBmKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgICAgIHIgPSByZWFkX2xpbmUoZiwgTE9OR19MSU5FX01BWCwgJmxpbmUpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHJlYWQgc2VyaWFsaXphdGlvbiBsaW5lOiAlbSIpOworKyAgICAgICAgICAgICAgICBpZiAociA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworIAorLSAgICAgICAgICAgICAgICBjaGFyX2FycmF5XzAobGluZSk7CisgICAgICAgICAgICAgICAgIGwgPSBzdHJzdHJpcChsaW5lKTsKKyAKKyAgICAgICAgICAgICAgICAgLyogRW5kIG1hcmtlciAqLworICAgICAgICAgICAgICAgICBpZiAoaXNlbXB0eShsKSkKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICB9CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3VuaXQuaCBiL3NyYy9jb3JlL3VuaXQuaAoraW5kZXggMDYzMjFiYi4uNTFjN2FhYSAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL3VuaXQuaAorKysrIGIvc3JjL2NvcmUvdW5pdC5oCitAQCAtNjg0LDcgKzY4NCw3IEBAIGJvb2wgdW5pdF9jYW5fc2VyaWFsaXplKFVuaXQgKnUpIF9wdXJlXzsKKyAKKyBpbnQgdW5pdF9zZXJpYWxpemUoVW5pdCAqdSwgRklMRSAqZiwgRkRTZXQgKmZkcywgYm9vbCBzZXJpYWxpemVfam9icyk7CisgaW50IHVuaXRfZGVzZXJpYWxpemUoVW5pdCAqdSwgRklMRSAqZiwgRkRTZXQgKmZkcyk7Cistdm9pZCB1bml0X2Rlc2VyaWFsaXplX3NraXAoRklMRSAqZik7CisraW50IHVuaXRfZGVzZXJpYWxpemVfc2tpcChGSUxFICpmKTsKKyAKKyBpbnQgdW5pdF9zZXJpYWxpemVfaXRlbShVbml0ICp1LCBGSUxFICpmLCBjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKnZhbHVlKTsKKyBpbnQgdW5pdF9zZXJpYWxpemVfaXRlbV9lc2NhcGVkKFVuaXQgKnUsIEZJTEUgKmYsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRoY3A2LW1ha2Utc3VyZS13ZS1oYXZlLWVub3VnaC1zcGFjZS1mb3ItdGhlLURIQ1A2LW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRoY3A2LW1ha2Utc3VyZS13ZS1oYXZlLWVub3VnaC1zcGFjZS1mb3ItdGhlLURIQ1A2LW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5MTJmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZGhjcDYtbWFrZS1zdXJlLXdlLWhhdmUtZW5vdWdoLXNwYWNlLWZvci10aGUtREhDUDYtby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGEyNjIyYjgzOThiYTAyNmZhZjQ4MWY1ZWRkZWI1MzIzMWQ5ZGU0YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+CitEYXRlOiBGcmksIDE5IE9jdCAyMDE4IDEyOjEyOjMzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGRoY3A2OiBtYWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBESENQNiBvcHRpb24KKyBoZWFkZXIKKworRml4ZXMgYSB2dWxuZXJhYmlsaXR5IG9yaWdpbmFsbHkgZGlzY292ZXJlZCBieSBGZWxpeCBXaWxoZWxtIGZyb20KK0dvb2dsZS4KKworQ1ZFLTIwMTgtMTU2ODgKK0xQOiAjMTc5NTkyMQoraHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNjM5MDY3CisKKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDRkYWM1ZWFiYTRlNDE5YjI5Yzk3ZGEzOGE4YjFmODIzMzZjMmM4OTIpCisKK0NWRTogQ1ZFLTIwMTgtMTU2ODgKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2xpYnN5c3RlbWQtbmV0d29yay9kaGNwNi1vcHRpb24uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvZGhjcDYtb3B0aW9uLmMgYi9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL2RoY3A2LW9wdGlvbi5jCitpbmRleCBjNGI0MDJiLi5kY2JhYWQwIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9kaGNwNi1vcHRpb24uYworKysrIGIvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9kaGNwNi1vcHRpb24uYworQEAgLTEwMyw3ICsxMDMsNyBAQCBpbnQgZGhjcDZfb3B0aW9uX2FwcGVuZF9pYSh1aW50OF90ICoqYnVmLCBzaXplX3QgKmJ1ZmxlbiwgREhDUDZJQSAqaWEpIHsKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgICB9CisgCistICAgICAgICBpZiAoKmJ1ZmxlbiA8IGxlbikKKysgICAgICAgIGlmICgqYnVmbGVuIDwgb2Zmc2V0b2YoREhDUDZPcHRpb24sIGRhdGEpICsgbGVuKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0JVRlM7CisgCisgICAgICAgICBpYV9oZHIgPSAqYnVmOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWxvZ2luLXVzZS1wYXJzZV91aWQtd2hlbi11bm1vdW50aW5nLXVzZXItcnVudGltZS1kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWxvZ2luLXVzZS1wYXJzZV91aWQtd2hlbi11bm1vdW50aW5nLXVzZXItcnVudGltZS1kaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwOGUzNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbG9naW4tdXNlLXBhcnNlX3VpZC13aGVuLXVubW91bnRpbmctdXNlci1ydW50aW1lLWRpci5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorRnJvbSA4NmQxOGYzYjA5ZWM5ODRlZjM3MzI1NjdhZjk5MmFkYjJkYzc3YThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWXUgV2F0YW5hYmUgPHdhdGFuYWJlLnl1K2dpdGh1YkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgSnVsIDIwMTggMTQ6MDU6MjAgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gbG9naW46IHVzZSBwYXJzZV91aWQoKSB3aGVuIHVubW91bnRpbmcgdXNlciBydW50aW1lIGRpcmVjdG9yeQorCitXaGVuIHVubW91bnRpbmcgdXNlciBydW50aW1lIGRpcmVjdG9yeSwgb25seSBVSUQgaXMgbmVjZXNzYXJ5LAorYW5kIHRoZSBjb3JyZXNwb25kaW5nIHVzZXIgbWF5IG5vdCBleGlzdCBhbnltb3JlLgorVGhpcyBtYWtlcyBmaXJzdCB0cnkgdG8gcGFyc2UgdGhlIGlucHV0IGJ5IHBhcnNlX3VpZCgpLCBhbmQgb25seSBpZiBpdAorZmFpbHMsIHByYXNlIHRoZSBpbnB1dCBieSBnZXRfdXNlcl9jcmVkcygpLgorCitGaXhlcyAjOTU0MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgc3JjL2xvZ2luL3VzZXItcnVudGltZS1kaXIuYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL3VzZXItcnVudGltZS1kaXIuYyBiL3NyYy9sb2dpbi91c2VyLXJ1bnRpbWUtZGlyLmMKK2luZGV4IDFiYjI2Yzk5ZS4uZGU0MDYxYzc1IDEwMDY0NAorLS0tIGEvc3JjL2xvZ2luL3VzZXItcnVudGltZS1kaXIuYworKysrIGIvc3JjL2xvZ2luL3VzZXItcnVudGltZS1kaXIuYworQEAgLTExMSw4ICsxMTEsMjIgQEAgc3RhdGljIGludCB1c2VyX3JlbW92ZV9ydW50aW1lX3BhdGgoY29uc3QgY2hhciAqcnVudGltZV9wYXRoKSB7CisgICAgICAgICByZXR1cm4gcjsKKyB9CisgCistc3RhdGljIGludCBkb19tb3VudChjb25zdCBjaGFyICpydW50aW1lX3BhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Cisrc3RhdGljIGludCBkb19tb3VudChjb25zdCBjaGFyICp1c2VyKSB7CisrICAgICAgICBjaGFyIHJ1bnRpbWVfcGF0aFtzaXplb2YoIi9ydW4vdXNlciIpICsgREVDSU1BTF9TVFJfTUFYKHVpZF90KV07CisgICAgICAgICBzaXplX3QgcnVudGltZV9kaXJfc2l6ZTsKKysgICAgICAgIHVpZF90IHVpZDsKKysgICAgICAgIGdpZF90IGdpZDsKKysgICAgICAgIGludCByOworKworKyAgICAgICAgciA9IGdldF91c2VyX2NyZWRzKCZ1c2VyLCAmdWlkLCAmZ2lkLCBOVUxMLCBOVUxMKTsKKysgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVTUkNIID8gIk5vIHN1Y2ggdXNlciBcIiVzXCIiIDoKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID09IC1FTk9NU0cgPyAiVUlEIFwiJXNcIiBpcyBpbnZhbGlkIG9yIGhhcyBhbiBpbnZhbGlkIG1haW4gZ3JvdXAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIkZhaWxlZCB0byBsb29rIHVwIHVzZXIgXCIlc1wiOiAlbSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcik7CisrCisrICAgICAgICB4c3ByaW50ZihydW50aW1lX3BhdGgsICIvcnVuL3VzZXIvIiBVSURfRk1ULCB1aWQpOworIAorICAgICAgICAgYXNzZXJ0X3NlKGdhdGhlcl9jb25maWd1cmF0aW9uKCZydW50aW1lX2Rpcl9zaXplKSA9PSAwKTsKKyAKK0BAIC0xMjAsMTYgKzEzNCwzMCBAQCBzdGF0aWMgaW50IGRvX21vdW50KGNvbnN0IGNoYXIgKnJ1bnRpbWVfcGF0aCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgIHJldHVybiB1c2VyX21rZGlyX3J1bnRpbWVfcGF0aChydW50aW1lX3BhdGgsIHVpZCwgZ2lkLCBydW50aW1lX2Rpcl9zaXplKTsKKyB9CisgCistc3RhdGljIGludCBkb191bW91bnQoY29uc3QgY2hhciAqcnVudGltZV9wYXRoKSB7Cisrc3RhdGljIGludCBkb191bW91bnQoY29uc3QgY2hhciAqdXNlcikgeworKyAgICAgICAgY2hhciBydW50aW1lX3BhdGhbc2l6ZW9mKCIvcnVuL3VzZXIiKSArIERFQ0lNQUxfU1RSX01BWCh1aWRfdCldOworKyAgICAgICAgdWlkX3QgdWlkOworKyAgICAgICAgaW50IHI7CisrCisrICAgICAgICAvKiBUaGUgdXNlciBtYXkgYmUgYWxyZWFkeSByZW1vdmVkLiBTbywgZmlyc3QgdHJ5IHRvIHBhcnNlIHRoZSBzdHJpbmcgYnkgcGFyc2VfdWlkKCksCisrICAgICAgICAgKiBhbmQgaWYgaXQgZmFpbHMsIGZhbGxiYWNrIHRvIGdldF91c2VyX2NyZWRzKCkuKi8KKysgICAgICAgIGlmIChwYXJzZV91aWQodXNlciwgJnVpZCkgPCAwKSB7CisrICAgICAgICAgICAgICAgIHIgPSBnZXRfdXNlcl9jcmVkcygmdXNlciwgJnVpZCwgTlVMTCwgTlVMTCwgTlVMTCk7CisrICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID09IC1FU1JDSCA/ICJObyBzdWNoIHVzZXIgXCIlc1wiIiA6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID09IC1FTk9NU0cgPyAiVUlEIFwiJXNcIiBpcyBpbnZhbGlkIG9yIGhhcyBhbiBpbnZhbGlkIG1haW4gZ3JvdXAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiRmFpbGVkIHRvIGxvb2sgdXAgdXNlciBcIiVzXCI6ICVtIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIpOworKyAgICAgICAgfQorKworKyAgICAgICAgeHNwcmludGYocnVudGltZV9wYXRoLCAiL3J1bi91c2VyLyIgVUlEX0ZNVCwgdWlkKTsKKysKKyAgICAgICAgIGxvZ19kZWJ1ZygiV2lsbCByZW1vdmUgJXMiLCBydW50aW1lX3BhdGgpOworICAgICAgICAgcmV0dXJuIHVzZXJfcmVtb3ZlX3J1bnRpbWVfcGF0aChydW50aW1lX3BhdGgpOworIH0KKyAKKyBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CistICAgICAgICBjb25zdCBjaGFyICp1c2VyOworLSAgICAgICAgdWlkX3QgdWlkOworLSAgICAgICAgZ2lkX3QgZ2lkOworLSAgICAgICAgY2hhciBydW50aW1lX3BhdGhbc2l6ZW9mKCIvcnVuL3VzZXIiKSArIERFQ0lNQUxfU1RSX01BWCh1aWRfdCldOworICAgICAgICAgaW50IHI7CisgCisgICAgICAgICBsb2dfcGFyc2VfZW52aXJvbm1lbnQoKTsKK0BAIC0xNDYsMjMgKzE3NCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisgCisgICAgICAgICB1bWFzaygwMDIyKTsKKyAKKy0gICAgICAgIHVzZXIgPSBhcmd2WzJdOworLSAgICAgICAgciA9IGdldF91c2VyX2NyZWRzKCZ1c2VyLCAmdWlkLCAmZ2lkLCBOVUxMLCBOVUxMKTsKKy0gICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8ociwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVTUkNIID8gIk5vIHN1Y2ggdXNlciBcIiVzXCIiIDoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPT0gLUVOT01TRyA/ICJVSUQgXCIlc1wiIGlzIGludmFsaWQgb3IgaGFzIGFuIGludmFsaWQgbWFpbiBncm91cCIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJGYWlsZWQgdG8gbG9vayB1cCB1c2VyIFwiJXNcIjogJW0iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcik7CistICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CistICAgICAgICB9CistCistICAgICAgICB4c3ByaW50ZihydW50aW1lX3BhdGgsICIvcnVuL3VzZXIvIiBVSURfRk1ULCB1aWQpOworLQorICAgICAgICAgaWYgKHN0cmVxKGFyZ3ZbMV0sICJzdGFydCIpKQorLSAgICAgICAgICAgICAgICByID0gZG9fbW91bnQocnVudGltZV9wYXRoLCB1aWQsIGdpZCk7CisrICAgICAgICAgICAgICAgIHIgPSBkb19tb3VudChhcmd2WzJdKTsKKyAgICAgICAgIGVsc2UgaWYgKHN0cmVxKGFyZ3ZbMV0sICJzdG9wIikpCistICAgICAgICAgICAgICAgIHIgPSBkb191bW91bnQocnVudGltZV9wYXRoKTsKKysgICAgICAgICAgICAgICAgciA9IGRvX3Vtb3VudChhcmd2WzJdKTsKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9yZWFjaGVkKCJVbmtub3duIHZlcmIhIik7CisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXNkLWJ1cy1tYWtlLUJVU19ERUZBVUxUX1RJTUVPVVQtY29uZmlndXJhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1zZC1idXMtbWFrZS1CVVNfREVGQVVMVF9USU1FT1VULWNvbmZpZ3VyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWM5YjViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1zZC1idXMtbWFrZS1CVVNfREVGQVVMVF9USU1FT1VULWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMCwwICsxLDE3NSBAQAorRnJvbSA1Yjc1YTcyZWU5NjhjOTY2NmI1ZjJlYTMxMzcyMGI2YzM4M2NiNGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWXUgV2F0YW5hYmUgPHdhdGFuYWJlLnl1K2dpdGh1YkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEzIEp1bCAyMDE4IDE3OjM4OjQ3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHNkLWJ1czogbWFrZSBCVVNfREVGQVVMVF9USU1FT1VUIGNvbmZpZ3VyYWJsZQorCitUaGlzIGFkZHMgc2RfYnVzX3tnZXQsc2V0fV9tZXRob2RfY2FsbF90aW1lb3V0KCkuCitJZiB0aGUgdGltZW91dCBpcyBub3Qgc2V0IG9yIHNldCB0byAwLCB0aGVuIHRoZSB0aW1lb3V0IHZhbHVlIGlzCitwYXJzZWQgZnJvbSAkU1lTVEVNRF9CVVNfVElNRU9VVD0gZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCwgdGhlbiBidWlsdC1pbiB0aW1lb3V0IGlzIHVzZWQuCistLS0KKyBkb2MvRU5WSVJPTk1FTlQubWQgICAgICAgICAgICAgICAgICAgfCAgNSArKysrKworIHNyYy9saWJzeXN0ZW1kL2xpYnN5c3RlbWQuc3ltICAgICAgICB8ICA1ICsrKysrCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1pbnRlcm5hbC5oIHwgIDkgKysrKy0tLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYyAgfCAgNyArKysrKy0tCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgc3JjL3N5c3RlbWQvc2QtYnVzLmggICAgICAgICAgICAgICAgIHwgIDMgKysrCisgNiBmaWxlcyBjaGFuZ2VkLCA2MSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL2RvYy9FTlZJUk9OTUVOVC5tZCBiL2RvYy9FTlZJUk9OTUVOVC5tZAoraW5kZXggODVkMjZmZTI4Yy4uNjQxYTAzZDVkNyAxMDA2NDQKKy0tLSBhL2RvYy9FTlZJUk9OTUVOVC5tZAorKysrIGIvZG9jL0VOVklST05NRU5ULm1kCitAQCAtMzcsNiArMzcsMTEgQEAgQWxsIHRvb2xzOgorICAgdXNlZnVsIGZvciBkZWJ1Z2dpbmcsIGluIG9yZGVyIHRvIHRlc3QgZ2VuZXJhdG9ycyBhbmQgb3RoZXIgY29kZSBhZ2FpbnN0CisgICBzcGVjaWZpYyBrZXJuZWwgY29tbWFuZCBsaW5lcy4KKyAKKysqIGAkU1lTVEVNRF9CVVNfVElNRU9VVD1TRUNTYCDigJQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgdG8gd2FpdCBmb3IgbWV0aG9kIGNhbGwKKysgIGNvbXBsZXRpb24uIElmIG5vIHRpbWUgdW5pdCBpcyBzcGVjaWZpZWQsIGFzc3VtZXMgc2Vjb25kcy4gVGhlIHVzdWFsIG90aGVyIHVuaXRzCisrICBhcmUgdW5kZXJzdG9vZCwgdG9vICh1cywgbXMsIHMsIG1pbiwgaCwgZCwgdywgbW9udGgsIHkpLiBJZiBpdCBpcyBub3Qgc2V0IG9yIHNldAorKyAgdG8gMCwgdGhlbiB0aGUgYnVpbHQtaW4gZGVmYXVsdCBpcyB1c2VkLgorKworIHN5c3RlbWN0bDoKKyAKKyAqIGAkU1lTVEVNQ1RMX0ZPUkNFX0JVUz0xYCDigJQgaWYgc2V0LCBkbyBub3QgY29ubmVjdCB0byBQSUQxJ3MgcHJpdmF0ZSBELUJ1cworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL2xpYnN5c3RlbWQuc3ltIGIvc3JjL2xpYnN5c3RlbWQvbGlic3lzdGVtZC5zeW0KK2luZGV4IDFlZWMxN2RiNTAuLjAwNmRiYzljM2YgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9saWJzeXN0ZW1kLnN5bQorKysrIGIvc3JjL2xpYnN5c3RlbWQvbGlic3lzdGVtZC5zeW0KK0BAIC01NzAsMyArNTcwLDggQEAgZ2xvYmFsOgorICAgICAgICAgc2RfZXZlbnRfc291cmNlX3NldF9kZXN0cm95X2NhbGxiYWNrOworICAgICAgICAgc2RfZXZlbnRfc291cmNlX2dldF9kZXN0cm95X2NhbGxiYWNrOworIH0gTElCU1lTVEVNRF8yMzg7CisrCisrTElCU1lTVEVNRF8yNDAgeworKyAgICAgICAgc2RfYnVzX3NldF9tZXRob2RfY2FsbF90aW1lb3V0OworKyAgICAgICAgc2RfYnVzX2dldF9tZXRob2RfY2FsbF90aW1lb3V0OworK30gTElCU1lTVEVNRF8yMzk7CitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1pbnRlcm5hbC5oIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1pbnRlcm5hbC5oCitpbmRleCAyMDg3ZWY4ZWViLi40ODY0YjFlOTExIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1pbnRlcm5hbC5oCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWludGVybmFsLmgKK0BAIC0zMTksNiArMzE5LDkgQEAgc3RydWN0IHNkX2J1cyB7CisgCisgICAgICAgICBpbnQgKmlub3RpZnlfd2F0Y2hlczsKKyAgICAgICAgIHNpemVfdCBuX2lub3RpZnlfd2F0Y2hlczsKKysKKysgICAgICAgIC8qIHplcm8gbWVhbnMgdXNlIHZhbHVlIHNwZWNpZmllZCBieSAkU1lTVEVNRF9CVVNfVElNRU9VVD0gZW52aXJvbm1lbnQgdmFyaWFibGUgb3IgYnVpbHQtaW4gZGVmYXVsdCAqLworKyAgICAgICAgdXNlY190IG1ldGhvZF9jYWxsX3RpbWVvdXQ7CisgfTsKKyAKKyAvKiBGb3IgbWV0aG9kIGNhbGxzIHdlIHRpbWUtb3V0IGF0IDI1cywgbGlrZSBpbiB0aGUgRC1CdXMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uICovCitAQCAtMzM2LDggKzMzOSw3IEBAIHN0cnVjdCBzZF9idXMgeworIAorICNkZWZpbmUgQlVTX0NPTlRBSU5FUl9ERVBUSCAxMjgKKyAKKy0vKiBEZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uIGFzIG1heGltdW0gc2l6ZSBvZiBhbiBhcnJheSBpbgorLSAqIGJ5dGVzICovCisrLyogRGVmaW5lZCBieSB0aGUgc3BlY2lmaWNhdGlvbiBhcyBtYXhpbXVtIHNpemUgb2YgYW4gYXJyYXkgaW4gYnl0ZXMgKi8KKyAjZGVmaW5lIEJVU19BUlJBWV9NQVhfU0laRSA2NzEwODg2NAorIAorICNkZWZpbmUgQlVTX0ZEU19NQVggMTAyNAorQEAgLTM4OCw4ICszOTAsNyBAQCB2b2lkIGJ1c19jbG9zZV9pb19mZHMoc2RfYnVzICpiKTsKKyAgICAgICAgICAgICAgX3NsYXNoID0gc3RyZXEoKHByZWZpeCksICIvIikgPyBOVUxMIDogc3RycmNocigocHJlZml4KSwgJy8nKSkKKyAKKyAvKiBJZiB3ZSBhcmUgaW52b2tpbmcgY2FsbGJhY2tzIG9mIGEgYnVzIG9iamVjdCwgZW5zdXJlIHVucmVmZmluZyB0aGUKKy0gKiBidXMgZnJvbSB0aGUgY2FsbGJhY2sgZG9lc24ndCBkZXN0cm95IHRoZSBvYmplY3Qgd2UgYXJlIHdvcmtpbmcKKy0gKiBvbiAqLworKyAqIGJ1cyBmcm9tIHRoZSBjYWxsYmFjayBkb2Vzbid0IGRlc3Ryb3kgdGhlIG9iamVjdCB3ZSBhcmUgd29ya2luZyBvbiAqLworICNkZWZpbmUgQlVTX0RPTlRfREVTVFJPWShidXMpIFwKKyAgICAgICAgIF9jbGVhbnVwXyhzZF9idXNfdW5yZWZwKSBfdW51c2VkXyBzZF9idXMgKl9kb250X2Rlc3Ryb3lfIyNidXMgPSBzZF9idXNfcmVmKGJ1cykKKyAKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCitpbmRleCA4ZDkyYmMyMDAyLi5kZmZlNzBhNjY1IDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCitAQCAtNTgwOSw4ICs1ODA5LDExIEBAIGludCBidXNfbWVzc2FnZV9yZW1hcnNoYWwoc2RfYnVzICpidXMsIHNkX2J1c19tZXNzYWdlICoqbSkgeworICAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAKKyAgICAgICAgIHRpbWVvdXQgPSAoKm0pLT50aW1lb3V0OworLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gMCAmJiAhKCgqbSktPmhlYWRlci0+ZmxhZ3MgJiBCVVNfTUVTU0FHRV9OT19SRVBMWV9FWFBFQ1RFRCkpCistICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBCVVNfREVGQVVMVF9USU1FT1VUOworKyAgICAgICAgaWYgKHRpbWVvdXQgPT0gMCAmJiAhKCgqbSktPmhlYWRlci0+ZmxhZ3MgJiBCVVNfTUVTU0FHRV9OT19SRVBMWV9FWFBFQ1RFRCkpIHsKKysgICAgICAgICAgICAgICAgciA9IHNkX2J1c19nZXRfbWV0aG9kX2NhbGxfdGltZW91dChidXMsICZ0aW1lb3V0KTsKKysgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworKyAgICAgICAgfQorIAorICAgICAgICAgciA9IHNkX2J1c19tZXNzYWdlX3NlYWwobiwgQlVTX01FU1NBR0VfQ09PS0lFKCptKSwgdGltZW91dCk7CisgICAgICAgICBpZiAociA8IDApCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCitpbmRleCAwODliNTFhNmQ5Li45NDU0OTBlYmY3IDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKK0BAIC0xNjExLDggKzE2MTEsMTEgQEAgc3RhdGljIGludCBidXNfc2VhbF9tZXNzYWdlKHNkX2J1cyAqYiwgc2RfYnVzX21lc3NhZ2UgKm0sIHVzZWNfdCB0aW1lb3V0KSB7CisgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgfQorIAorLSAgICAgICAgaWYgKHRpbWVvdXQgPT0gMCkKKy0gICAgICAgICAgICAgICAgdGltZW91dCA9IEJVU19ERUZBVUxUX1RJTUVPVVQ7CisrICAgICAgICBpZiAodGltZW91dCA9PSAwKSB7CisrICAgICAgICAgICAgICAgIHIgPSBzZF9idXNfZ2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoYiwgJnRpbWVvdXQpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisrICAgICAgICB9CisgCisgICAgICAgICBpZiAoIW0tPnNlbmRlciAmJiBiLT5wYXRjaF9zZW5kZXIpIHsKKyAgICAgICAgICAgICAgICAgciA9IHNkX2J1c19tZXNzYWdlX3NldF9zZW5kZXIobSwgYi0+cGF0Y2hfc2VuZGVyKTsKK0BAIC00MDc1LDMgKzQwNzgsMzYgQEAgX3B1YmxpY18gaW50IHNkX2J1c19nZXRfbl9xdWV1ZWRfd3JpdGUoc2RfYnVzICpidXMsIHVpbnQ2NF90ICpyZXQpIHsKKyAgICAgICAgICpyZXQgPSBidXMtPndxdWV1ZV9zaXplOworICAgICAgICAgcmV0dXJuIDA7CisgfQorKworK19wdWJsaWNfIGludCBzZF9idXNfc2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoc2RfYnVzICpidXMsIHVpbnQ2NF90IHVzZWMpIHsKKysgICAgICAgIGFzc2VydF9yZXR1cm4oYnVzLCAtRUlOVkFMKTsKKysgICAgICAgIGFzc2VydF9yZXR1cm4oYnVzID0gYnVzX3Jlc29sdmUoYnVzKSwgLUVOT1BLRyk7CisrCisrICAgICAgICBidXMtPm1ldGhvZF9jYWxsX3RpbWVvdXQgPSB1c2VjOworKyAgICAgICAgcmV0dXJuIDA7CisrfQorKworK19wdWJsaWNfIGludCBzZF9idXNfZ2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoc2RfYnVzICpidXMsIHVpbnQ2NF90ICpyZXQpIHsKKysgICAgICAgIGNvbnN0IGNoYXIgKmU7CisrICAgICAgICB1c2VjX3QgdXNlYzsKKysKKysgICAgICAgIGFzc2VydF9yZXR1cm4oYnVzLCAtRUlOVkFMKTsKKysgICAgICAgIGFzc2VydF9yZXR1cm4oYnVzID0gYnVzX3Jlc29sdmUoYnVzKSwgLUVOT1BLRyk7CisrICAgICAgICBhc3NlcnRfcmV0dXJuKHJldCwgLUVJTlZBTCk7CisrCisrICAgICAgICBpZiAoYnVzLT5tZXRob2RfY2FsbF90aW1lb3V0ICE9IDApIHsKKysgICAgICAgICAgICAgICAgKnJldCA9IGJ1cy0+bWV0aG9kX2NhbGxfdGltZW91dDsKKysgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICB9CisrCisrICAgICAgICBlID0gc2VjdXJlX2dldGVudigiU1lTVEVNRF9CVVNfVElNRU9VVCIpOworKyAgICAgICAgaWYgKGUgJiYgcGFyc2Vfc2VjKGUsICZ1c2VjKSA+PSAwICYmIHVzZWMgIT0gMCkgeworKyAgICAgICAgICAgICAgICAvKiBTYXZlIHRoZSBwYXJzZWQgdmFsdWUgdG8gYXZvaWQgbXVsdGlwbGUgcGFyc2luZy4gVG8gY2hhbmdlIHRoZSB0aW1lb3V0IHZhbHVlLAorKyAgICAgICAgICAgICAgICAgKiB1c2Ugc2RfYnVzX3NldF9tZXRob2RfY2FsbF90aW1lb3V0KCkgaW5zdGVhZCBvZiBzZXRlbnYoKS4gKi8KKysgICAgICAgICAgICAgICAgKnJldCA9IGJ1cy0+bWV0aG9kX2NhbGxfdGltZW91dCA9IHVzZWM7CisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgfQorKworKyAgICAgICAgKnJldCA9IGJ1cy0+bWV0aG9kX2NhbGxfdGltZW91dCA9IEJVU19ERUZBVUxUX1RJTUVPVVQ7CisrICAgICAgICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc2QtYnVzLmggYi9zcmMvc3lzdGVtZC9zZC1idXMuaAoraW5kZXggNTRjNGIxY2E4My4uYzlmZDI1NDgzNCAxMDA2NDQKKy0tLSBhL3NyYy9zeXN0ZW1kL3NkLWJ1cy5oCisrKysgYi9zcmMvc3lzdGVtZC9zZC1idXMuaAorQEAgLTIwNiw2ICsyMDYsOSBAQCBzZF9ldmVudCAqc2RfYnVzX2dldF9ldmVudChzZF9idXMgKmJ1cyk7CisgaW50IHNkX2J1c19nZXRfbl9xdWV1ZWRfcmVhZChzZF9idXMgKmJ1cywgdWludDY0X3QgKnJldCk7CisgaW50IHNkX2J1c19nZXRfbl9xdWV1ZWRfd3JpdGUoc2RfYnVzICpidXMsIHVpbnQ2NF90ICpyZXQpOworIAorK2ludCBzZF9idXNfc2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoc2RfYnVzICpidXMsIHVpbnQ2NF90IHVzZWMpOworK2ludCBzZF9idXNfZ2V0X21ldGhvZF9jYWxsX3RpbWVvdXQoc2RfYnVzICpidXMsIHVpbnQ2NF90ICpyZXQpOworKworIGludCBzZF9idXNfYWRkX2ZpbHRlcihzZF9idXMgKmJ1cywgc2RfYnVzX3Nsb3QgKipzbG90LCBzZF9idXNfbWVzc2FnZV9oYW5kbGVyX3QgY2FsbGJhY2ssIHZvaWQgKnVzZXJkYXRhKTsKKyBpbnQgc2RfYnVzX2FkZF9tYXRjaChzZF9idXMgKmJ1cywgc2RfYnVzX3Nsb3QgKipzbG90LCBjb25zdCBjaGFyICptYXRjaCwgc2RfYnVzX21lc3NhZ2VfaGFuZGxlcl90IGNhbGxiYWNrLCB2b2lkICp1c2VyZGF0YSk7CisgaW50IHNkX2J1c19hZGRfbWF0Y2hfYXN5bmMoc2RfYnVzICpidXMsIHNkX2J1c19zbG90ICoqc2xvdCwgY29uc3QgY2hhciAqbWF0Y2gsIHNkX2J1c19tZXNzYWdlX2hhbmRsZXJfdCBjYWxsYmFjaywgc2RfYnVzX21lc3NhZ2VfaGFuZGxlcl90IGluc3RhbGxfY2FsbGJhY2ssIHZvaWQgKnVzZXJkYXRhKTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzNmNGIzOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1Gcm9tIGM5M2ViNmNkZWMwM2Y1ZTI0M2U1OWU5NWRjNDkyNzNmY2I5MGU3YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIzIEZlYiAyMDE4IDEwOjIzOjQwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMzFdIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZQotIGZvciB0aGUgYmluZm10IHNlcnZpY2VzCi0KLXVzZSBbSW5zdGFsbF0gYmxvY2tzIHNvIHRoYXQgdGhleSBnZXQgY3JlYXRlZCB3aGVuIHRoZSBzZXJ2aWNlIGlzIGVuYWJsZWQKLWxpa2UgYSB0cmFkaXRpb25hbCBzZXJ2aWNlLgotCi1UaGUgW0luc3RhbGxdIGJsb2NrcyB3ZXJlIHJlamVjdGVkIHVwc3RyZWFtIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHdheSB0bwotImVuYWJsZSIgaXQgb24gaW5zdGFsbCB3aXRob3V0IHN0YXRpYyBzeW1saW5rcyB3aGljaCBjYW4ndCBiZSBkaXNhYmxlZCwKLW9ubHkgbWFza2VkLiBXZSBob3dldmVyIGNhbiBkbyB0aGF0IGluIGEgcG9zdGluc3QuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gdW5pdHMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKy0tLS0KLSB1bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgfCAzICsrKwotIHVuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4gICAgICAgICB8IDQgKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24uYnVpbGQgYi91bml0cy9tZXNvbi5idWlsZAotaW5kZXggODE0ZWU3ODg1Li40OWFjZTBkMGYgMTAwNjQ0Ci0tLS0gYS91bml0cy9tZXNvbi5idWlsZAotKysrIGIvdW5pdHMvbWVzb24uYnVpbGQKLUBAIC02MCw4ICs2MCw3IEBAIHVuaXRzID0gWwotICAgICAgICAgWydwb3dlcm9mZi50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICdydW5sZXZlbDAudGFyZ2V0J10sCi0gICAgICAgICBbJ3ByaW50ZXIudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgJyddLAotLSAgICAgICAgWydwcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQnLCAgICdFTkFCTEVfQklORk1UJywKLS0gICAgICAgICAnc3lzaW5pdC50YXJnZXQud2FudHMvJ10sCi0rICAgICAgICBbJ3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCcsICAgJ0VOQUJMRV9CSU5GTVQnXSwKLSAgICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MubW91bnQnLCAgICAgICAnRU5BQkxFX0JJTkZNVCddLAotICAgICAgICAgWydyZWJvb3QudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICdydW5sZXZlbDYudGFyZ2V0IGN0cmwtYWx0LWRlbC50YXJnZXQnXSwKLUBAIC0xNDQsOCArMTQzLDcgQEAgaW5fdW5pdHMgPSBbCi0gICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZScsICcnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlJywgICAgJyddLAotICAgICAgICAgWydzeXN0ZW1kLWJhY2tsaWdodEAuc2VydmljZScsICAgICAgICAgICAnRU5BQkxFX0JBQ0tMSUdIVCddLAotLSAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCcsCi0tICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAotKyAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCddLAotICAgICAgICAgWydzeXN0ZW1kLWNvcmVkdW1wQC5zZXJ2aWNlJywgICAgICAgICAgICAnRU5BQkxFX0NPUkVEVU1QJ10sCi0gICAgICAgICBbJ3N5c3RlbWQtZXhpdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAgICcnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1maXJzdGJvb3Quc2VydmljZScsICAgICAgICAgICAgJ0VOQUJMRV9GSVJTVEJPT1QnLAotZGlmZiAtLWdpdCBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudCBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotaW5kZXggMzBhNmJjOTkxLi40MjMxZjNiNzAgMTAwNjQ0Ci0tLS0gYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLSsrKyBiL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAotQEAgLTE4LDMgKzE4LDYgQEAgQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KLSAKLSBbQXV0b21vdW50XQotIFdoZXJlPS9wcm9jL3N5cy9mcy9iaW5mbXRfbWlzYwotKwotK1tJbnN0YWxsXQotK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0Ci1kaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLWluZGV4IGRmOTM5NmQ4OS4uMDY4N2Y0NjQ4IDEwMDY0NAotLS0tIGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgotKysrIGIvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbgotQEAgLTEzLDYgKzEzLDcgQEAgRG9jdW1lbnRhdGlvbj1tYW46c3lzdGVtZC1iaW5mbXQuc2VydmljZSg4KSBtYW46YmluZm10LmQoNSkKLSBEb2N1bWVudGF0aW9uPWh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vYmluZm10X21pc2MudHh0Ci0gRGVmYXVsdERlcGVuZGVuY2llcz1ubwotIENvbmZsaWN0cz1zaHV0ZG93bi50YXJnZXQKLStXYW50cz1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLSBBZnRlcj1wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLSBCZWZvcmU9c3lzaW5pdC50YXJnZXQgc2h1dGRvd24udGFyZ2V0Ci0gQ29uZGl0aW9uUGF0aElzUmVhZFdyaXRlPS9wcm9jL3N5cy8KLUBAIC0yNywzICsyOCw2IEBAIFR5cGU9b25lc2hvdAotIFJlbWFpbkFmdGVyRXhpdD15ZXMKLSBFeGVjU3RhcnQ9QHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLWJpbmZtdAotIFRpbWVvdXRTZWM9OTBzCi0rCi0rW0luc3RhbGxdCi0rV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlMGQ2NjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCkBAIC0wLDAgKzEsMTgzIEBACitGcm9tIGQ3NGE0ZGU2ZGFlYTVhNTExYzJiNTYzNmJiYjU1MmMxNWIzYTRhZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IFRodSwgMTggU2VwIDIwMTQgMTU6MjQ6NTYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2Jhc2ljL2Zvcm1hdC10YWJsZS5jIHwgMjcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgc3JjL2Jhc2ljL3V0aWwuaCAgICAgICAgIHwgIDcgLS0tLS0tLQorIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIHNyYy91ZGV2L3VkZXZhZG0taHdkYi5jICB8IDE2ICsrKysrKysrKystLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Zvcm1hdC10YWJsZS5jIGIvc3JjL2Jhc2ljL2Zvcm1hdC10YWJsZS5jCitpbmRleCA5NGU3OTZkMWNhLi45YjNmMzVjMjlhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC10YWJsZS5jCisrKysgYi9zcmMvYmFzaWMvZm9ybWF0LXRhYmxlLmMKK0BAIC03NDUsMjkgKzc0NSwyOSBAQCBzdGF0aWMgaW50IGNlbGxfZGF0YV9jb21wYXJlKFRhYmxlRGF0YSAqYSwgc2l6ZV90IGluZGV4X2EsIFRhYmxlRGF0YSAqYiwgc2l6ZV90CisgICAgICAgICByZXR1cm4gMDsKKyB9CisgCistc3RhdGljIGludCB0YWJsZV9kYXRhX2NvbXBhcmUoY29uc3Qgdm9pZCAqeCwgY29uc3Qgdm9pZCAqeSwgdm9pZCAqdXNlcmRhdGEpIHsKKytzdGF0aWMgVGFibGUgKnVzZXJfdGFibGU7Cisrc3RhdGljIGludCB0YWJsZV9kYXRhX2NvbXBhcmUoY29uc3Qgdm9pZCAqeCwgY29uc3Qgdm9pZCAqeSkgeworICAgICAgICAgY29uc3Qgc2l6ZV90ICphID0geCwgKmIgPSB5OworLSAgICAgICAgVGFibGUgKnQgPSB1c2VyZGF0YTsKKyAgICAgICAgIHNpemVfdCBpOworICAgICAgICAgaW50IHI7CisgCistICAgICAgICBhc3NlcnQodCk7CistICAgICAgICBhc3NlcnQodC0+c29ydF9tYXApOworKyAgICAgICAgYXNzZXJ0KHVzZXJfdGFibGUpOworKyAgICAgICAgYXNzZXJ0KHVzZXJfdGFibGUtPnNvcnRfbWFwKTsKKyAKKyAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGUgaGVhZGVyIHN0YXlzIGF0IHRoZSBiZWdpbm5pbmcgKi8KKy0gICAgICAgIGlmICgqYSA8IHQtPm5fY29sdW1ucyAmJiAqYiA8IHQtPm5fY29sdW1ucykKKysgICAgICAgIGlmICgqYSA8IHVzZXJfdGFibGUtPm5fY29sdW1ucyAmJiAqYiA8IHVzZXJfdGFibGUtPm5fY29sdW1ucykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CistICAgICAgICBpZiAoKmEgPCB0LT5uX2NvbHVtbnMpCisrICAgICAgICBpZiAoKmEgPCB1c2VyX3RhYmxlLT5uX2NvbHVtbnMpCisgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKy0gICAgICAgIGlmICgqYiA8IHQtPm5fY29sdW1ucykKKysgICAgICAgIGlmICgqYiA8IHVzZXJfdGFibGUtPm5fY29sdW1ucykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgCisgICAgICAgICAvKiBPcmRlciBvdGhlciBsaW5lcyBieSB0aGUgc29ydGluZyBtYXAgKi8KKy0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0LT5uX3NvcnRfbWFwOyBpKyspIHsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCB1c2VyX3RhYmxlLT5uX3NvcnRfbWFwOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgVGFibGVEYXRhICpkLCAqZGQ7CisgCistICAgICAgICAgICAgICAgIGQgPSB0LT5kYXRhWyphICsgdC0+c29ydF9tYXBbaV1dOworLSAgICAgICAgICAgICAgICBkZCA9IHQtPmRhdGFbKmIgKyB0LT5zb3J0X21hcFtpXV07CisrICAgICAgICAgICAgICAgIGQgPSB1c2VyX3RhYmxlLT5kYXRhWyphICsgdXNlcl90YWJsZS0+c29ydF9tYXBbaV1dOworKyAgICAgICAgICAgICAgICBkZCA9IHVzZXJfdGFibGUtPmRhdGFbKmIgKyB1c2VyX3RhYmxlLT5zb3J0X21hcFtpXV07CisgCisgICAgICAgICAgICAgICAgIHIgPSBjZWxsX2RhdGFfY29tcGFyZShkLCAqYSwgZGQsICpiKTsKKyAgICAgICAgICAgICAgICAgaWYgKHIgIT0gMCkKK0BAIC05NjAsNyArOTYwLDEyIEBAIGludCB0YWJsZV9wcmludChUYWJsZSAqdCwgRklMRSAqZikgeworICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yb3dzOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkW2ldID0gaSAqIHQtPm5fY29sdW1uczsKKyAKKy0gICAgICAgICAgICAgICAgcXNvcnRfcl9zYWZlKHNvcnRlZCwgbl9yb3dzLCBzaXplb2Yoc2l6ZV90KSwgdGFibGVfZGF0YV9jb21wYXJlLCB0KTsKKysgICAgICAgICAgICAgICAgaWYgKG5fcm93cyA8PSAxKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworKyAgICAgICAgICAgICAgICBhc3NlcnQoc29ydGVkKTsKKysgICAgICAgICAgICAgICAgdXNlcl90YWJsZSA9IHQ7CisrICAgICAgICAgICAgICAgIHFzb3J0KHNvcnRlZCwgbl9yb3dzLCBzaXplb2Yoc2l6ZV90KSwgdGFibGVfZGF0YV9jb21wYXJlKTsKKysgICAgICAgICAgICAgICAgdXNlcl90YWJsZSA9IE5VTEw7CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAodC0+ZGlzcGxheV9tYXApCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3V0aWwuaCBiL3NyYy9iYXNpYy91dGlsLmgKK2luZGV4IDk2OTlkMjI4ZjkuLjQwZWFmNTE4Y2IgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXRpbC5oCitAQCAtMTA1LDEzICsxMDUsNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBjb21wYXJpc29uXworICAgICAgICAgICAgICAgICBxc29ydF9zYWZlKChwKSwgKG4pLCBzaXplb2YoKHApWzBdKSwgKF9fY29tcGFyX2ZuX3QpIF9mdW5jXyk7IFwKKyAgICAgICAgIH0pCisgCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3Jfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgdm9pZCopLCB2b2lkICp1c2VyZGF0YSkgeworLSAgICAgICAgaWYgKG5tZW1iIDw9IDEpCistICAgICAgICAgICAgICAgIHJldHVybjsKKy0KKy0gICAgICAgIGFzc2VydChiYXNlKTsKKy0gICAgICAgIHFzb3J0X3IoYmFzZSwgbm1lbWIsIHNpemUsIGNvbXBhciwgdXNlcmRhdGEpOworLX0KKyAKKyAvKioKKyAgKiBOb3JtYWwgbWVtY3B5IHJlcXVpcmVzIHNyYyB0byBiZSBub25udWxsLiBXZSBkbyBub3RoaW5nIGlmIG4gaXMgMC4KK2RpZmYgLS1naXQgYS9zcmMvaHdkYi9od2RiLmMgYi9zcmMvaHdkYi9od2RiLmMKK2luZGV4IDMxN2NhZDhhNjcuLjcwMWQ1OWExZWIgMTAwNjQ0CistLS0gYS9zcmMvaHdkYi9od2RiLmMKKysrKyBiL3NyYy9od2RiL2h3ZGIuYworQEAgLTEzNSwxMyArMTM1LDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgeworIAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CistCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xNjYsNyArMTY1LDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKysKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgorQEAgLTE5MSw3ICsxOTMsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7CisgICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKKy0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKK2luZGV4IDAyNDA4YTQyODUuLjQ5MWQzNjdkMTIgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYworKysrIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKK0BAIC0xMTQsMTMgKzExNCwxMyBAQCBzdGF0aWMgdm9pZCB0cmllX25vZGVfY2xlYW51cChzdHJ1Y3QgdHJpZV9ub2RlICpub2RlKSB7CisgICAgICAgICBmcmVlKG5vZGUpOworIH0KKyAKKy1zdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIsIHZvaWQgKmFyZykgeworK3N0YXRpYyBzdHJ1Y3QgdHJpZSAqdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllOworK3N0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2MikgeworICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDEgPSB2MTsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwyID0gdjI7CistICAgICAgICBzdHJ1Y3QgdHJpZSAqdHJpZSA9IGFyZzsKKyAKKy0gICAgICAgIHJldHVybiBzdHJjbXAodHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKKy0gICAgICAgICAgICAgICAgICAgICAgdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisrICAgICAgICByZXR1cm4gc3RyY21wKHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMS0+a2V5X29mZiwKKysgICAgICAgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKKyB9CisgCisgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorQEAgLTE0MSw3ICsxNDEsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCisgICAgICAgICAgICAgICAgIH07CisgCistICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7CisrICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXBsYWNlIGV4aXN0aW5nIGVhcmxpZXIga2V5IHdpdGggbmV3IHZhbHVlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsLT52YWx1ZV9vZmYgPSB2OworQEAgLTE1OCw3ICsxNjAsOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5rZXlfb2ZmID0gazsKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLnZhbHVlX29mZiA9IHY7CisgICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKKy0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkN2Y1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSA2ZTYyYmU4N2EyNzIyZmJlNTMxMzEwYTFiMDUyYzEzMDFiZGYwNmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNjowOToyNCArMDgwMAorU3ViamVjdDogW1BBVENIIDIvOV0gdXNlIGxuciB3cmFwcGVyIGluc3RlYWQgb2YgbG9va2luZyBmb3IgLS1yZWxhdGl2ZSBvcHRpb24KKyBmb3IgbG4KKworUmVtb3ZlIGZpbGUgbWFudWFsbHkgdG8gYXZvaWQgdGhlICdGaWxlIEV4aXN0cycgZXJyb3Igd2hlbiBjcmVhdGluZworc3ltbGluay4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvcmlnaW5hbCAnbG4nIGNvbW1hbmQgdXNlcyAnLWYnIG9wdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDQgLS0tLQorIHRvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCB8IDMgKystCisgdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoICAgIHwgNyArKysrKystCisgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAwNDMzMWRkNDEuLjZkNWVkY2I0ZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTU1OCwxMCArNTU4LDYgQEAgZW5kZm9yZWFjaAorIAorIGNvbmYuc2V0X3F1b3RlZCgnVEVMSU5JVCcsIGdldF9vcHRpb24oJ3RlbGluaXQtcGF0aCcpKQorIAorLWlmIHJ1bl9jb21tYW5kKCdsbicsICctLXJlbGF0aXZlJywgJy0taGVscCcpLnJldHVybmNvZGUoKSAhPSAwCistICAgICAgICBlcnJvcignbG4gZG9lcyBub3Qgc3VwcG9ydCAtLXJlbGF0aXZlIChhZGRlZCBpbiBjb3JldXRpbHMgOC4xNiknKQorLWVuZGlmCistCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgCisgZ3BlcmYgPSBmaW5kX3Byb2dyYW0oJ2dwZXJmJykKK2RpZmYgLS1naXQgYS90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2ggYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK2luZGV4IDUwMWNkNDNkNC4uZjRlNGFjOWFjIDEwMDc1NQorLS0tIGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCisrKysgYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKK0BAIC04LDUgKzgsNiBAQCBta2RpciAtdnAgIiQoZGlybmFtZSAiJHtERVNURElSOi19JDIiKSIKKyBpZiBbICIkKGRpcm5hbWUgJDEpIiA9IC4gXTsgdGhlbgorICAgICAgICAgbG4gLXZmcyAtVCAiJDEiICIke0RFU1RESVI6LX0kMiIKKyBlbHNlCistICAgICAgICBsbiAtdmZzIC1UIC0tcmVsYXRpdmUgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBybSAtZiAiJHtERVNURElSOi19JDIiCisrICAgICAgICBsbnIgIiR7REVTVERJUjotfSQxIiAiJHtERVNURElSOi19JDIiCisgZmkKK2RpZmYgLS1naXQgYS91bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK2luZGV4IDcwZjcxNzJhZS4uYTQyNjY2YWFjIDEwMDc1NQorLS0tIGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCisrKysgYi91bml0cy9tZXNvbi1hZGQtd2FudHMuc2gKK0BAIC0yNSw0ICsyNSw5IEBAIGNhc2UgIiR0YXJnZXQiIGluCisgICAgICAgICAgICAgICAgIDs7CisgZXNhYworIAorLWxuIC12ZnMgLS1yZWxhdGl2ZSAiJHVuaXRwYXRoIiAiJGRpciIKKytpZiBbIC1kICIkZGlyIiBdOyB0aGVuCisrICAgICAgICBybSAtZiAiJGRpci8kdW5pdCIKKysgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpci8kdW5pdCIKKytlbHNlCisrICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIiCisrZmkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtY29tcGFyaXNvbl9mbl90LWlzLWdsaWJjLXNwZWNpZmljLXVzZS1yYXctc2lnbmF0dXJlLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTVmYjMzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZTk2NWU3NDhjNzAzMGRmMDcwOWU2MzEyOGRiMmYwMjM1NDBhMDZiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMTldIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK21ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvdXRpbC5oIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGlsLmggYi9zcmMvYmFzaWMvdXRpbC5oCitpbmRleCA0MGVhZjUxOGMuLmM1ODM5MjM5NyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy91dGlsLmgKKysrKyBiL3NyYy9iYXNpYy91dGlsLmgKK0BAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgKnhic2VhcmNoX3IoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCisgc3RhdGljIGlubGluZSB2b2lkKiBic2VhcmNoX3NhZmUoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGNvbXBhcmlzb25fZm5fdCBjb21wYXIpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBpbnQgKCpjb21wYXIpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgeworICAgICAgICAgaWYgKG5tZW1iIDw9IDApCisgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworIAorQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkKiBic2VhcmNoX3NhZmUoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLAorICAqIE5vcm1hbCBxc29ydCByZXF1aXJlcyBiYXNlIHRvIGJlIG5vbm51bGwuIEhlcmUgd2VyZSByZXF1aXJlCisgICogdGhhdCBvbmx5IGlmIG5tZW1iID4gMC4KKyAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBjb21wYXJpc29uX2ZuX3QgY29tcGFyKSB7Cisrc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgaW50ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHsKKyAgICAgICAgIGlmIChubWVtYiA8PSAxKQorICAgICAgICAgICAgICAgICByZXR1cm47CisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNTk1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDBmY2I2ZTY0NjQwMTIwNWUxN2NjNmMxMjk0NDFhNDkwMjNjNjJjZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMy85XSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKKworVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCit0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgoraW5kZXggOGMxNmNmOTk5Li45ZjA3OGExMjEgMTAwNzU1CistLS0gYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCisrKysgYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCitAQCAtMzIsMTcgKzMyLDE3IEBAIGNhc2UgIiQxIiBpbgorICAgICBlbmFibGUpCisgICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZW5hYmxlIFN5c1YgaW5pdCBzY3JpcHQgJE5BTUUgaGVyZQorICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCistICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGVuYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIGRlZmF1bHRzCisgICAgICAgICA7OworICAgICBkaXNhYmxlKQorICAgICAgICAgIyBjYWxsIHRoZSBjb21tYW5kIHRvIGRpc2FibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCisgICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKKy0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZGlzYWJsaW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKKysgICAgICAgIHVwZGF0ZS1yYy5kIC1mICROQU1FIHJlbW92ZQorICAgICAgICAgOzsKKyAgICAgaXMtZW5hYmxlZCkKKyAgICAgICAgICMgZXhpdCB3aXRoIDAgaWYgJE5BTUUgaXMgZW5hYmxlZCwgbm9uLXplcm8gaWYgaXQgaXMgZGlzYWJsZWQKKyAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQorLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBjaGVja2luZyBTeXNWIGluaXQuZCBzY3JpcHQgJE5BTUUiCisrICAgICAgICAvZXRjL2luaXQuZC8kTkFNRSBzdGF0dXMKKyAgICAgICAgIDs7CisgICAgICopCisgICAgICAgICB1c2FnZSA7OworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGYxYjIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gOGI5ZDE5NGU5NTY4NDhlMGQxZmIzNWVmMmZiYTcxNGIyNjkxZWJlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjA6NDc6NDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8zMV0gdXNlIGxuciB3cmFwcGVyIGluc3RlYWQgb2YgbG9va2luZyBmb3IgLS1yZWxhdGl2ZQotIG9wdGlvbiBmb3IgbG4KLQotUmVtb3ZlIGZpbGUgbWFudWFsbHkgdG8gYXZvaWQgdGhlICdGaWxlIEV4aXN0cycgZXJyb3Igd2hlbiBjcmVhdGluZwotc3ltbGluay4gVGhpcyBpcyBiZWNhdXNlIHRoZSBvcmlnaW5hbCAnbG4nIGNvbW1hbmQgdXNlcyAnLWYnIG9wdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDQgLS0tLQotIHRvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaCB8IDMgKystCi0gdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoICAgIHwgNyArKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAzNmE2MmQyODAuLjczNDdlYTg4MCAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTU3MCwxMCArNTcwLDYgQEAgZW5kZm9yZWFjaAotIAotIGNvbmYuc2V0X3F1b3RlZCgnVEVMSU5JVCcsIGdldF9vcHRpb24oJ3RlbGluaXQtcGF0aCcpKQotIAotLWlmIHJ1bl9jb21tYW5kKCdsbicsICctLXJlbGF0aXZlJywgJy0taGVscCcpLnJldHVybmNvZGUoKSAhPSAwCi0tICAgICAgICBlcnJvcignbG4gZG9lcyBub3Qgc3VwcG9ydCAtLXJlbGF0aXZlJykKLS1lbmRpZgotLQotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotIGdwZXJmID0gZmluZF9wcm9ncmFtKCdncGVyZicpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIGIvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi1pbmRleCA1MDFjZDQzZDQuLmY0ZTRhYzlhYyAxMDA3NTUKLS0tLSBhL3Rvb2xzL21lc29uLW1ha2Utc3ltbGluay5zaAotKysrIGIvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi1AQCAtOCw1ICs4LDYgQEAgbWtkaXIgLXZwICIkKGRpcm5hbWUgIiR7REVTVERJUjotfSQyIikiCi0gaWYgWyAiJChkaXJuYW1lICQxKSIgPSAuIF07IHRoZW4KLSAgICAgICAgIGxuIC12ZnMgLVQgIiQxIiAiJHtERVNURElSOi19JDIiCi0gZWxzZQotLSAgICAgICAgbG4gLXZmcyAtVCAtLXJlbGF0aXZlICIke0RFU1RESVI6LX0kMSIgIiR7REVTVERJUjotfSQyIgotKyAgICAgICAgcm0gLWYgIiR7REVTVERJUjotfSQyIgotKyAgICAgICAgbG5yICIke0RFU1RESVI6LX0kMSIgIiR7REVTVERJUjotfSQyIgotIGZpCi1kaWZmIC0tZ2l0IGEvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoIGIvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi1pbmRleCA3MGY3MTcyYWUuLmE0MjY2NmFhYyAxMDA3NTUKLS0tLSBhL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAotKysrIGIvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi1AQCAtMjUsNCArMjUsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgICAgICAgICAgICA7OwotIGVzYWMKLSAKLS1sbiAtdmZzIC0tcmVsYXRpdmUgIiR1bml0cGF0aCIgIiRkaXIiCi0raWYgWyAtZCAiJGRpciIgXTsgdGhlbgotKyAgICAgICAgcm0gLWYgIiRkaXIvJHVuaXQiCi0rICAgICAgICBsbnIgIiR1bml0cGF0aCIgIiRkaXIvJHVuaXQiCi0rZWxzZQotKyAgICAgICAgbG5yICIkdW5pdHBhdGgiICIkZGlyIgotK2ZpCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjUyYTJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDQzMiBAQAorRnJvbSA1ODJhZjdlYzEzMTMxZGZjYzYyMGVkODFkZTdiMjExOTE0YzRjYjAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxMzo0Mzo0OSArMDgwMAorU3ViamVjdDogW1BBVENIIDA0LzE5XSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKworIHNyYy9iYXNpYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDUgKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrCisgc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMiArLQorIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgfCAgIDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDMzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IGUwNDViOTIyNC4uOGMxNmJjOTc5IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNTk4LDYgKzU5OCw3IEBAIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKKyAgICAgICAgICAgICAgICAgICAnbGludXgvYnRyZnMuaCcsCisgICAgICAgICAgICAgICAgICAgJ2xpbnV4L21lbWZkLmgnLAorICAgICAgICAgICAgICAgICAgICdsaW51eC92bV9zb2NrZXRzLmgnLAorKyAgICAgICAgICAgICAgICAgICdwcmludGYuaCcsCisgICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAorICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKKyAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCitpbmRleCAzMTYyNWIxNzguLjBjMjc1MjhlNyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZAorKysrIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCitAQCAtMzAyLDYgKzMwMiwxMSBAQCBmb3JlYWNoIGl0ZW0gOiBbWydhZicsICAgICBhZl9saXN0X3R4dCwgICAgICdhZicsICAgICAgICAgJyddLAorIGVuZGZvcmVhY2gKKyAKKyBiYXNpY19zb3VyY2VzICs9IFttaXNzaW5nX2hdICsgZ2VuZXJhdGVkX2dwZXJmX2hlYWRlcnMKKysKKytpZiBjb25mLmdldCgnSEFWRV9QUklOVEZfSCcpICE9IDEKKysgICAgICAgIGJhc2ljX3NvdXJjZXMgKz0gW2ZpbGVzKCdwYXJzZS1wcmludGYtZm9ybWF0LmMnKV0KKytlbmRpZgorKworIGJhc2ljX2djcnlwdF9zb3VyY2VzID0gZmlsZXMoCisgICAgICAgICAnZ2NyeXB0LXV0aWwuYycsCisgICAgICAgICAnZ2NyeXB0LXV0aWwuaCcpCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworQEAgLTAsMCArMSwyNzMgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQorKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCisrCisrICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKysgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisrICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqKiovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKKysgICAgICAgIHJldHVybiBmbXQ7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCisreworKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQorKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQorK3sKKysgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7CisrICAgICAgICBzaXplX3QgdmFsID0gMDsKKysKKysgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIGRvIHsKKysgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOworKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7CisrCisrICAgICAgICBpZiAoKnAgIT0gJyQnKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgKmFyZyA9IHZhbDsKKysgICAgICAgIHJldHVybiBwKzE7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKKysgICAgICAgICAgICAgICAgY2FzZSAnIyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJzAnOgorKyAgICAgICAgICAgICAgICBjYXNlICctJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnICc6CisrICAgICAgICAgICAgICAgIGNhc2UgJysnOgorKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ0knOgorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICB9CisrfQorKworK2VudW0gc3RhdGUgeworKyAgICAgICAgQkFSRSwKKysgICAgICAgIExQUkUsCisrICAgICAgICBMTFBSRSwKKysgICAgICAgIEhQUkUsCisrICAgICAgICBISFBSRSwKKysgICAgICAgIEJJR0xQUkUsCisrICAgICAgICBaVFBSRSwKKysgICAgICAgIEpQUkUsCisrICAgICAgICBTVE9QCisrfTsKKysKKytlbnVtIHR5cGUgeworKyAgICAgICAgTk9ORSwKKysgICAgICAgIFBUUiwKKysgICAgICAgIElOVCwKKysgICAgICAgIFVJTlQsCisrICAgICAgICBVTExPTkcsCisrICAgICAgICBMT05HLAorKyAgICAgICAgVUxPTkcsCisrICAgICAgICBTSE9SVCwKKysgICAgICAgIFVTSE9SVCwKKysgICAgICAgIENIQVIsCisrICAgICAgICBVQ0hBUiwKKysgICAgICAgIExMT05HLAorKyAgICAgICAgU0laRVQsCisrICAgICAgICBJTUFYLAorKyAgICAgICAgVU1BWCwKKysgICAgICAgIFBESUZGLAorKyAgICAgICAgVUlQVFIsCisrICAgICAgICBEQkwsCisrICAgICAgICBMREJMLAorKyAgICAgICAgTUFYVFlQRQorK307CisrCisrc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0geworKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCisrICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCisrICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKKysgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAorKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCisrICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCisrICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCisrICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAorKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCisrfTsKKysKKysjZGVmaW5lIFMoeCkgWyh4KS0nQSddCisrI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQorKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7CisrICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAorKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCisrICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCisrICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCisrICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCisrICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCisrICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfQorK307CisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKKyt7CisrICAgICAgICBzaXplX3QgaSA9IDA7CisrICAgICAgICBzaXplX3QgbGFzdCA9IDA7CisrCisrICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOworKworKyAgICAgICAgd2hpbGUgKDEpIHsKKysgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKKysgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOworKworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBhcmcgPSAwOworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKKysgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KKysgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOworKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOworKyAgICAgICAgICAgICAgICB9IGVsc2UKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KKysgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCisrICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKKysgICAgICAgICAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKKysKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOworKworKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKKysgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKKysgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmIChsYXN0ID4gbikKKysgICAgICAgICAgICAgICAgbGFzdCA9IG47CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQorKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKKysKKysgICAgICAgIHJldHVybiBsYXN0OworK30KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDdiZTc1MjJkCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCitAQCAtMCwwICsxLDU3IEBACisrLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLworKworKy8qKioKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCisrCisrICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KKysKKysgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQorKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjcHJhZ21hIG9uY2UKKysKKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2lmIEhBVkVfUFJJTlRGX0gKKysjaW5jbHVkZSA8cHJpbnRmLmg+CisrI2Vsc2UKKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KKysgIFBBX0lOVCwJCQkvKiBpbnQgKi8KKysgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KKysgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLworKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCisrICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCisrICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLworKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KKysgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KKysgIFBBX0xBU1QKKyt9OworKworKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCisrI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAorKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKKysjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKKysjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKKysjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQorKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQorKworK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOworKworKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKK2luZGV4IDczYzAzMjc0Yy4uMzAxOTJjZDcxIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAorQEAgLTEsMTIgKzEsMTIgQEAKKyAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCisgI3ByYWdtYSBvbmNlCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2luY2x1ZGUgIm1hY3JvLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIHNucHJpbnRmX29rKGJ1ZiwgbGVuLCBmbXQsIC4uLikgXAorICAgICAgICAgKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgbGVuLCBmbXQsIF9fVkFfQVJHU19fKSA8IChsZW4pKQorZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK2luZGV4IGEwNjIxNTI0YS4uNjViY2JjZDJlIDEwMDY0NAorLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKKysrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCitAQCAtMiw3ICsyLDYgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8cHJpbnRmLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisgI2luY2x1ZGUgPHN5cy91bi5oPgorQEAgLTIxLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZmRiNTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDcwZDQ1NmZiMjFkZTJhODA2OTdmYTM2NGYwODQ3NTMzOWQ2Mzk2YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCA1IFNlcCAyMDE1IDA2OjMxOjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMzFdIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQotCi1Vc2UgdXBkYXRlLXJjLmQgZm9yIGVuYWJsaW5nL2Rpc2FibGluZyBhbmQgc3RhdHVzIGNvbW1hbmQKLXRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHN5c3Ygc2VydmljZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gYi9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OCi1pbmRleCBhNTNhM2U2MjIuLjVkODc3YjA2ZSAxMDA3NTUKLS0tLSBhL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLSsrKyBiL3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04KLUBAIC0zMCwxNyArMzAsMTcgQEAgY2FzZSAiJDEiIGluCi0gICAgIGVuYWJsZSkKLSAgICAgICAgICMgY2FsbCB0aGUgY29tbWFuZCB0byBlbmFibGUgU3lzViBpbml0IHNjcmlwdCAkTkFNRSBoZXJlCi0gICAgICAgICAjIChjb25zaWRlciBvcHRpb25hbCAkUk9PVCkKLS0gICAgICAgIGVjaG8gIklNUExFTUVOVCBNRTogZW5hYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgZGVmYXVsdHMKLSAgICAgICAgIDs7Ci0gICAgIGRpc2FibGUpCi0gICAgICAgICAjIGNhbGwgdGhlIGNvbW1hbmQgdG8gZGlzYWJsZSBTeXNWIGluaXQgc2NyaXB0ICROQU1FIGhlcmUKLSAgICAgICAgICMgKGNvbnNpZGVyIG9wdGlvbmFsICRST09UKQotLSAgICAgICAgZWNobyAiSU1QTEVNRU5UIE1FOiBkaXNhYmxpbmcgU3lzViBpbml0LmQgc2NyaXB0ICROQU1FIgotKyAgICAgICAgdXBkYXRlLXJjLmQgLWYgJE5BTUUgcmVtb3ZlCi0gICAgICAgICA7OwotICAgICBpcy1lbmFibGVkKQotICAgICAgICAgIyBleGl0IHdpdGggMCBpZiAkTkFNRSBpcyBlbmFibGVkLCBub24temVybyBpZiBpdCBpcyBkaXNhYmxlZAotICAgICAgICAgIyAoY29uc2lkZXIgb3B0aW9uYWwgJFJPT1QpCi0tICAgICAgICBlY2hvICJJTVBMRU1FTlQgTUU6IGNoZWNraW5nIFN5c1YgaW5pdC5kIHNjcmlwdCAkTkFNRSIKLSsgICAgICAgIC9ldGMvaW5pdC5kLyROQU1FIHN0YXR1cwotICAgICAgICAgOzsKLSAgICAgKikKLSAgICAgICAgIHVzYWdlIDs7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM3Y2JjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDVkODEyOGYzODMyZmQxMWZkMDQ2ZDFkMWFkODZjNGVlN2JjMWRmZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggNC85XSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCisKK3FlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCitDT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcworL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK2luZGV4IDhkZGI3NTc3Yy4uODExZTk0OGFkIDEwMDY0NAorLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCisrKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKK0BAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisrS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCisgCisgIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCisgVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTM3MDg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA4YjgyNjYzYWVlZWRmOWNhNThlM2I5NzExNmI0YzRkYTUyMjllMGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNyBKdW4gMjAxOCAxNjo0Njo0NSArMDgwMAorU3ViamVjdDogW1BBVENIIDUvOV0gTWFrZSByb290J3MgaG9tZSBkaXJlY3RvcnkgY29uZmlndXJhYmxlCisKK09wZW5FbWJlZGRlZCBoYXMgYSBjb25maWd1cmFibGUgaG9tZSBkaXJlY3RvcnkgZm9yIHJvb3QuIEFsbG93CitzeXN0ZW1kIHRvIGJlIGJ1aWx0IHVzaW5nIGl0cyBpZGVhIG9mIHdoYXQgcm9vdCdzIGhvbWUgZGlyZWN0b3J5CitzaG91bGQgYmUuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCitVcHN0cmVhbSB3YW50cyB0byBoYXZlIGEgdW5pZmllZCBoaWVyYXJjaHkgd2hlcmUgZXZlcnlvbmUgaXMKK3VzaW5nIHRoZSBzYW1lIHJvb3QgZm9sZGVyLgoraHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvNTQxCisKK1NpZ25lZC1vZmYtYnk6IERhbiBNY0dyZWdvciA8ZGFuLm1jZ3JlZ29yQHVzYXNrLmNhPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkICAgICAgIHwgNyArKysrKysrCisgbWVzb25fb3B0aW9ucy50eHQgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDZkNWVkY2I0ZS4uMzIzMTQ2ZmUxIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtODksNiArODksMTEgQEAgaWYgcm9vdGxpYmRpciA9PSAnJworICAgICAgICAgcm9vdGxpYmRpciA9IGpvaW5fcGF0aHMocm9vdHByZWZpeGRpciwgbGliZGlyLnNwbGl0KCcvJylbLTFdKQorIGVuZGlmCisgCisrcm9vdGhvbWVkaXIgPSBnZXRfb3B0aW9uKCdyb290aG9tZWRpcicpCisraWYgcm9vdGhvbWVkaXIgPT0gJycKKysgICAgICAgIHJvb3Rob21lZGlyID0gJy9yb290JworK2VuZGlmCisrCisgIyBEaXJzIG9mIGV4dGVybmFsIHBhY2thZ2VzCisgcGtnY29uZmlnZGF0YWRpciA9IGpvaW5fcGF0aHMoZGF0YWRpciwgJ3BrZ2NvbmZpZycpCisgcGtnY29uZmlnbGliZGlyID0gam9pbl9wYXRocyhsaWJkaXIsICdwa2djb25maWcnKQorQEAgLTIxMCw2ICsyMTUsNyBAQCBjb25mLnNldF9xdW90ZWQoJ1VERVZMSUJFWEVDRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkZXZsaWJleGVjZGlyKQorIGNvbmYuc2V0X3F1b3RlZCgnUE9MS0lUX0FHRU5UX0JJTkFSWV9QQVRIJywgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhiaW5kaXIsICdwa3R0eWFnZW50JykpCisgY29uZi5zZXRfcXVvdGVkKCdMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdST09UTElCRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZGlyKQorK2NvbmYuc2V0X3F1b3RlZCgnUk9PVEhPTUVESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGhvbWVkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdST09UTElCRVhFQ0RJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZXhlY2RpcikKKyBjb25mLnNldF9xdW90ZWQoJ0JPT1RMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RsaWJkaXIpCisgY29uZi5zZXRfcXVvdGVkKCdTWVNURU1EX1BVTExfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHJvb3RsaWJleGVjZGlyLCAnc3lzdGVtZC1wdWxsJykpCitAQCAtMjI4LDYgKzIzNCw3IEBAIHN1YnN0cy5zZXQoJ3ByZWZpeCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZGlyKQorIHN1YnN0cy5zZXQoJ2V4ZWNfcHJlZml4JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZGlyKQorIHN1YnN0cy5zZXQoJ2xpYmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGliZGlyKQorIHN1YnN0cy5zZXQoJ3Jvb3RsaWJkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGxpYmRpcikKKytzdWJzdHMuc2V0KCdyb290aG9tZWRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3Rob21lZGlyKQorIHN1YnN0cy5zZXQoJ2luY2x1ZGVkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWRpcikKKyBzdWJzdHMuc2V0KCdwa2dzeXNjb25mZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZ3N5c2NvbmZkaXIpCisgc3Vic3RzLnNldCgnYmluZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaXIpCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggMTZjMWYyYjJmLi5hYTlhMzMzNjggMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC05LDYgKzksOCBAQCBvcHRpb24oJ3Jvb3RsaWJkaXInLCB0eXBlIDogJ3N0cmluZycsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJycnWy91c3JdL2xpYi94ODZfNjQtbGludXgtZ251IG9yIHN1Y2gnJycpCisgb3B0aW9uKCdyb290cHJlZml4JywgdHlwZSA6ICdzdHJpbmcnLAorICAgICAgICBkZXNjcmlwdGlvbiA6ICcnJ292ZXJyaWRlIHRoZSByb290IHByZWZpeCcnJykKKytvcHRpb24oJ3Jvb3Rob21lZGlyJywgdHlwZSA6ICdzdHJpbmcnLAorKyAgICAgICBkZXNjcmlwdGlvbiA6ICcnJ292ZXJyaWRlIHRoZSByb290IGhvbWUgZGlyZWN0b3J5JycnKQorIG9wdGlvbignbGluay11ZGV2LXNoYXJlZCcsIHR5cGUgOiAnYm9vbGVhbicsCisgICAgICAgIGRlc2NyaXB0aW9uIDogJ2xpbmsgc3lzdGVtZC11ZGV2IGFuZCBpdHMgaGVscGVycyB0byBsaWJzeXN0ZW1kLXNoYXJlZC5zbycpCisgb3B0aW9uKCdsaW5rLXN5c3RlbWN0bC1zaGFyZWQnLCB0eXBlOiAnYm9vbGVhbicsCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LWluY2x1ZGUtZ3NoYWRvdy1vbmx5LWlmLUVOQUJMRV9HU0hBRE9XLWlzLTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LWluY2x1ZGUtZ3NoYWRvdy1vbmx5LWlmLUVOQUJMRV9HU0hBRE9XLWlzLTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ1ZmFmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtaW5jbHVkZS1nc2hhZG93LW9ubHktaWYtRU5BQkxFX0dTSEFET1ctaXMtMS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGEyYzRkNDY5NDQ4OTIxNzQ5MzAxMzU2NzI1MDgzODlhMDRlMTkxZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDEzOjUzOjI5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTldIGluY2x1ZGUgZ3NoYWRvdyBvbmx5IGlmIEVOQUJMRV9HU0hBRE9XIGlzIDEKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvdXNlci11dGlsLmggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5oIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5oCitpbmRleCBiNzRmMTY4ODUuLmY5YzFlMjljNCAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy91c2VyLXV0aWwuaAorKysrIGIvc3JjL2Jhc2ljL3VzZXItdXRpbC5oCitAQCAtMiw3ICsyLDkgQEAKKyAjcHJhZ21hIG9uY2UKKyAKKyAjaW5jbHVkZSA8Z3JwLmg+CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgI2luY2x1ZGUgPGdzaGFkb3cuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8cHdkLmg+CisgI2luY2x1ZGUgPHNoYWRvdy5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ0MjFjOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA3YjViMzQ5OTMwMDJiNDQxOGJhOGEzYzJhZTY2MWE3MzM3ZmQ4ZWQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTo0MToxMyAtMDgwMAotU3ViamVjdDogW1BBVENIIDA1LzMxXSBydWxlczogd2hpdGVsaXN0IGhkKiBkZXZpY2VzCi0KLXFlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCi1DT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcwotL2Rldi9oZCouIFBhdGNoIHJlamVjdGVkIHVwc3RyZWFtIGJlY2F1c2UgQ09ORklHX0lERSBpcyBkZXByZWNhdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzEyNzZdCi0KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IDBkZThjZjNhMS4uZDNmNThmMTUzIDEwMDY0NAotLS0tIGEvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi0rKysgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLUBAIC03LDcgKzcsNyBAQCBBQ1RJT049PSJyZW1vdmUiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIEVOVntVREVWX0RJU0FCTEVfUEVSU0lTVEVOVF9TVE9SQUdFX1JVTEVTX0ZMQUd9PT0iMSIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gU1VCU1lTVEVNIT0iYmxvY2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotLUtFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHNjbSp8cG1lbSp8bmJkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0rS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqfGhkKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCi0gCi0gIyBpZ25vcmUgcGFydGl0aW9ucyB0aGF0IHNwYW4gdGhlIGVudGlyZSBkaXNrCi0gVEVTVD09Indob2xlX2Rpc2siLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhOTY2MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gOWQ2MzIyNzQyMGYwYzRmMDkzYzFjMjA2NmVhZmUyYjYxNTIwNzBjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjMgRmViIDIwMTggMTM6NDc6MzcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8zMV0gTWFrZSByb290J3MgaG9tZSBkaXJlY3RvcnkgY29uZmlndXJhYmxlCi0KLU9wZW5FbWJlZGRlZCBoYXMgYSBjb25maWd1cmFibGUgaG9tZSBkaXJlY3RvcnkgZm9yIHJvb3QuIEFsbG93Ci1zeXN0ZW1kIHRvIGJlIGJ1aWx0IHVzaW5nIGl0cyBpZGVhIG9mIHdoYXQgcm9vdCdzIGhvbWUgZGlyZWN0b3J5Ci1zaG91bGQgYmUuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi1VcHN0cmVhbSB3YW50cyB0byBoYXZlIGEgdW5pZmllZCBoaWVyYXJjaHkgd2hlcmUgZXZlcnlvbmUgaXMKLXVzaW5nIHRoZSBzYW1lIHJvb3QgZm9sZGVyLgotaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9pc3N1ZXMvNTQxCi0KLVNpZ25lZC1vZmYtYnk6IERhbiBNY0dyZWdvciA8ZGFuLm1jZ3JlZ29yQHVzYXNrLmNhPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgIHwgOCArKysrKysrKwotIG1lc29uX29wdGlvbnMudHh0IHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNzM0N2VhODgwLi45MTgxMDFkNmIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC05NCw2ICs5NCwxMSBAQCBpZiByb290bGliZGlyID09ICcnCi0gICAgICAgICByb290bGliZGlyID0gam9pbl9wYXRocyhyb290cHJlZml4ZGlyLCBsaWJkaXIuc3BsaXQoJy8nKVstMV0pCi0gZW5kaWYKLSAKLStyb290aG9tZWRpciA9IGdldF9vcHRpb24oJ3Jvb3Rob21lZGlyJykKLStpZiByb290aG9tZWRpciA9PSAnJwotKyAgICAgICAgcm9vdGhvbWVkaXIgPSAnL3Jvb3QnCi0rZW5kaWYKLSsKLSAjIERpcnMgb2YgZXh0ZXJuYWwgcGFja2FnZXMKLSBwa2djb25maWdkYXRhZGlyID0gam9pbl9wYXRocyhkYXRhZGlyLCAncGtnY29uZmlnJykKLSBwa2djb25maWdsaWJkaXIgPSBqb2luX3BhdGhzKGxpYmRpciwgJ3BrZ2NvbmZpZycpCi1AQCAtMjA1LDYgKzIxMCw3IEBAIGNvbmYuc2V0X3F1b3RlZCgnVURFVkxJQkVYRUNESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRldmxpYmV4ZWNkaXIpCi0gY29uZi5zZXRfcXVvdGVkKCdQT0xLSVRfQUdFTlRfQklOQVJZX1BBVEgnLCAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKGJpbmRpciwgJ3BrdHR5YWdlbnQnKSkKLSBjb25mLnNldF9xdW90ZWQoJ0xJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYmRpcikKLSBjb25mLnNldF9xdW90ZWQoJ1JPT1RMSUJESVInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJkaXIpCi0rY29uZi5zZXRfcXVvdGVkKCdST09USE9NRURJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290aG9tZWRpcikKLSBjb25mLnNldF9xdW90ZWQoJ1JPT1RMSUJFWEVDRElSJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RsaWJleGVjZGlyKQotIGNvbmYuc2V0X3F1b3RlZCgnQk9PVExJQkRJUicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxpYmRpcikKLSBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTURfUFVMTF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocm9vdGxpYmV4ZWNkaXIsICdzeXN0ZW1kLXB1bGwnKSkKLUBAIC0yMjEsNiArMjI3LDcgQEAgc3Vic3RzLnNldCgncHJlZml4JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhkaXIpCi0gc3Vic3RzLnNldCgnZXhlY19wcmVmaXgnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhkaXIpCi0gc3Vic3RzLnNldCgnbGliZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJkaXIpCi0gc3Vic3RzLnNldCgncm9vdGxpYmRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290bGliZGlyKQotK3N1YnN0cy5zZXQoJ3Jvb3Rob21lZGlyJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGhvbWVkaXIpCi0gc3Vic3RzLnNldCgnaW5jbHVkZWRpcicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlZGlyKQotIHN1YnN0cy5zZXQoJ3BrZ3N5c2NvbmZkaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnc3lzY29uZmRpcikKLSBzdWJzdHMuc2V0KCdiaW5kaXInLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRpcikKLUBAIC0yNzA1LDYgKzI3MTIsNyBAQCBzdGF0dXMgPSBbCi0gICAgICAgICAnaW5jbHVkZSBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChpbmNsdWRlZGlyKSwKLSAgICAgICAgICdsaWIgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGxpYmRpciksCi0gICAgICAgICAncm9vdGxpYiBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChyb290bGliZGlyKSwKLSsgICAgICAgICdyb290aG9tZSBkaXJlY3Rvcnk6ICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHJvb3Rob21lZGlyKSwKLSAgICAgICAgICdTeXNWIGluaXQgc2NyaXB0czogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KHN5c3Zpbml0X3BhdGgpLAotICAgICAgICAgJ1N5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgQDBAJy5mb3JtYXQoc3lzdnJjbmRfcGF0aCksCi0gICAgICAgICAnUEFNIG1vZHVsZXMgZGlyZWN0b3J5OiAgICAgICAgICAgICBAMEAnLmZvcm1hdChwYW1saWJkaXIpLAotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDM5ODIyZDZjZC4uMGIyNGYwZTBmIDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMjIsNiArMjIsOCBAQCBvcHRpb24oJ3Jvb3RsaWJkaXInLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJycnWy91c3JdL2xpYi94ODZfNjQtbGludXgtZ251IG9yIHN1Y2gnJycpCi0gb3B0aW9uKCdyb290cHJlZml4JywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICcnJ292ZXJyaWRlIHRoZSByb290IHByZWZpeCcnJykKLStvcHRpb24oJ3Jvb3Rob21lZGlyJywgdHlwZSA6ICdzdHJpbmcnLAotKyAgICAgICBkZXNjcmlwdGlvbiA6ICcnJ292ZXJyaWRlIHRoZSByb290IGhvbWUgZGlyZWN0b3J5JycnKQotIG9wdGlvbignbGluay11ZGV2LXNoYXJlZCcsIHR5cGUgOiAnYm9vbGVhbicsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ2xpbmsgc3lzdGVtZC11ZGV2IGFuZCBpdHMgaGVscGVycyB0byBsaWJzeXN0ZW1kLXNoYXJlZC5zbycpCi0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNmViOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LXJlbW92ZS1ub2JvZHktdXNlci1ncm91cC1jaGVja2luZy5wYXRjaApAQCAtMCwwICsxLDYzIEBACitGcm9tIDUxOTlhZTVkZWM5YjhhOWM5ZTIwNDc3ZDUwOTBmMTczMjczNWZiZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI4IEp1biAyMDE4IDA5OjM4OjEyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNi85XSByZW1vdmUgbm9ib2R5IHVzZXIvZ3JvdXAgY2hlY2tpbmcKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAzNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggMzIzMTQ2ZmUxLi4zYmIwODdmZWYgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC02ODEsNDMgKzY4MSw2IEBAIHN1YnN0cy5zZXQoJ2NvbnRhaW5lcnVpZGJhc2VtYXgnLCBjb250YWluZXJfdWlkX2Jhc2VfbWF4KQorIG5vYm9keV91c2VyID0gZ2V0X29wdGlvbignbm9ib2R5LXVzZXInKQorIG5vYm9keV9ncm91cCA9IGdldF9vcHRpb24oJ25vYm9keS1ncm91cCcpCisgCistZ2V0ZW50X3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdnZXRlbnQnLCAncGFzc3dkJywgJzY1NTM0JykKKy1pZiBnZXRlbnRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBuYW1lID0gZ2V0ZW50X3Jlc3VsdC5zdGRvdXQoKS5zcGxpdCgnOicpWzBdCistICAgICAgICBpZiBuYW1lICE9IG5vYm9keV91c2VyCistICAgICAgICAgICAgICAgIHdhcm5pbmcoJ1xuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBsb2NhbCB1c2VyIHdpdGggdGhlIFVJRCA2NTUzNCBkb2VzIG5vdCBtYXRjaCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5hbWUpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiB1c2VyIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQorLSAgICAgICAgZW5kaWYKKy1lbmRpZgorLWlkX3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdpZCcsICctdScsIG5vYm9keV91c2VyKQorLWlmIGlkX3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAorLSAgICAgICAgaWQgPSBpZF9yZXN1bHQuc3Rkb3V0KCkudG9faW50KCkKKy0gICAgICAgIGlmIGlkICE9IDY1NTM0CistICAgICAgICAgICAgICAgIHdhcm5pbmcoJ1xuJyArCistICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBsb2NhbCB1c2VyIHdpdGggdGhlIGNvbmZpZ3VyZWQgdXNlciBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgdXNlciBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgaWQpICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiB1c2VyIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQorLSAgICAgICAgZW5kaWYKKy1lbmRpZgorLQorLWdldGVudF9yZXN1bHQgPSBydW5fY29tbWFuZCgnZ2V0ZW50JywgJ2dyb3VwJywgJzY1NTM0JykKKy1pZiBnZXRlbnRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCistICAgICAgICBuYW1lID0gZ2V0ZW50X3Jlc3VsdC5zdGRvdXQoKS5zcGxpdCgnOicpWzBdCistICAgICAgICBpZiBuYW1lICE9IG5vYm9keV9ncm91cAorLSAgICAgICAgICAgICAgICB3YXJuaW5nKCdcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgR0lEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCAoaXRzIG5hbWUgaXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV9ncm91cCwgbmFtZSkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIGdyb3VwIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQorLSAgICAgICAgZW5kaWYKKy1lbmRpZgorLWlkX3Jlc3VsdCA9IHJ1bl9jb21tYW5kKCdpZCcsICctZycsIG5vYm9keV9ncm91cCkKKy1pZiBpZF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKKy0gICAgICAgIGlkID0gaWRfcmVzdWx0LnN0ZG91dCgpLnRvX2ludCgpCistICAgICAgICBpZiBpZCAhPSA2NTUzNAorLSAgICAgICAgICAgICAgICB3YXJuaW5nKCdcbicgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgbG9jYWwgZ3JvdXAgd2l0aCB0aGUgY29uZmlndXJlZCBncm91cCBuYW1lICJAMEAiIG9mIHRoZSBub2JvZHkgZ3JvdXAgZG9lcyBub3QgaGF2ZSBVSUQgNjU1MzQgKGl0IGhhcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBpZCkgKworLSAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGJ1aWxkIHdpbGwgcmVzdWx0IGluIGFuIGdyb3VwIHRhYmxlIHNldHVwIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGxvY2FsIHN5c3RlbS4nKQorLSAgICAgICAgZW5kaWYKKy1lbmRpZgorIGlmIG5vYm9keV91c2VyICE9IG5vYm9keV9ncm91cCBhbmQgbm90IChub2JvZHlfdXNlciA9PSAnbm9ib2R5JyBhbmQgbm9ib2R5X2dyb3VwID09ICdub2dyb3VwJykKKyAgICAgICAgIHdhcm5pbmcoJ1xuJyArCisgICAgICAgICAgICAgICAgICdUaGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgYW5kIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyL2dyb3VwIGFyZSBub3QgZXF1aXZhbGVudC5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBub2JvZHlfZ3JvdXApICsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDdhNzk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCkBAIC0wLDAgKzEsMTE4IEBACitGcm9tIDAzZmQxOWZjODc1NzMyNzZlMGQzNTkyNjBjOGZlNTkxZjVmMDIxNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE2OjM0OjUwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTldIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCisKK2luY2x1ZGUgbWlzc2luZy5oICBmb3IgZGVmaW5pdGlvbiBvZiBzdHJuZHVwYQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvbWlzc2luZy5oICAgICB8IDExICsrKysrKysrKysrCisgc3JjL2Jhc2ljL21rZGlyLmMgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3BhZ2VyLmMgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyAgfCAgMSArCisgc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgfCAgMSArCisgc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyAgfCAgMSArCisgNyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA4YzE2YmM5NzkuLmE3MzRhMjk1YyAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTUwMyw2ICs1MDMsNyBAQCBmb3JlYWNoIGlkZW50IDogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAorICAgICAgICAgWydleHBsaWNpdF9iemVybycgLCAgICcnJyNpbmNsdWRlIDxzdHJpbmcuaD4nJyddLAorICAgICAgICAgWydyZWFsbG9jYXJyYXknLCAgICAgICcnJyNpbmNsdWRlIDxtYWxsb2MuaD4nJyddLAorKyAgICAgICAgWydzdHJuZHVwYScgLCAgICAgICAgICcnJyNpbmNsdWRlIDxzdHJpbmcuaD4nJyddLAorIF0KKyAKKyAgICAgICAgIGhhdmUgPSBjYy5oYXNfZnVuY3Rpb24oaWRlbnRbMF0sIHByZWZpeCA6IGlkZW50WzFdLCBhcmdzIDogJy1EX0dOVV9TT1VSQ0UnKQorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCAwZTMzYWJiOWYuLjAyMzk3ZjFiNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xMTg0LDYgKzExODQsMTcgQEAgc3RydWN0IGlucHV0X21hc2sgeworIHR5cGVkZWYgaW50MzJfdCBrZXlfc2VyaWFsX3Q7CisgI2VuZGlmCisgCisrI2lmICEgSEFWRV9TVFJORFVQQQorKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAorKyAgKHsgXAorKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAorKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCisrICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAorKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCisrICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCisrICB9KQorKyNlbmRpZgorKworICNpZm5kZWYgS0VZQ1RMX0pPSU5fU0VTU0lPTl9LRVlSSU5HCisgI2RlZmluZSBLRVlDVExfSk9JTl9TRVNTSU9OX0tFWVJJTkcgMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ta2Rpci5jIGIvc3JjL2Jhc2ljL21rZGlyLmMKK2luZGV4IDZhYjFiNDQyMi4uNzdjM2UwODYzIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21rZGlyLmMKKysrKyBiL3NyYy9iYXNpYy9ta2Rpci5jCitAQCAtMTMsNiArMTMsNyBAQAorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIGludCBta2Rpcl9zYWZlX2ludGVybmFsKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgTWtkaXJGbGFncyBmbGFncywgbWtkaXJfZnVuY190IF9ta2RpcikgeworICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhZ2VyLmMgYi9zcmMvYmFzaWMvcGFnZXIuYworaW5kZXggZjI0MTI2MTExLi44MjIzYmZmMDIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcGFnZXIuYworKysrIGIvc3JjL2Jhc2ljL3BhZ2VyLmMKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIHBpZF90IHBhZ2VyX3BpZCA9IDA7CisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK2luZGV4IDZiZWNmODU4Ny4uNTI1NzZmNTM2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYworQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgorICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIGludCBwYXJzZV9ib29sZWFuKGNvbnN0IGNoYXIgKnYpIHsKKyAgICAgICAgIGFzc2VydCh2KTsKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCitpbmRleCBhMTU5ZTM0NGIuLmViYzQyN2Q2YiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYworQEAgLTExLDYgKzExLDcgQEAKKyAjaW5jbHVkZSAicHJvY2ZzLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgaW50IHByb2Nmc190YXNrc19nZXRfbGltaXQodWludDY0X3QgKnJldCkgeworICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqdmFsdWUgPSBOVUxMOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitpbmRleCA0MzRjZTZmZjQuLjM3MDkzYWI3YiAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKKysrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK0BAIC04LDYgKzgsNyBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJ1aWQtcmFuZ2UuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgYm9vbCB1aWRfcmFuZ2VfaW50ZXJzZWN0KFVpZFJhbmdlICpyYW5nZSwgdWlkX3Qgc3RhcnQsIHVpZF90IG5yKSB7CisgICAgICAgICBhc3NlcnQocmFuZ2UpOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmOGNmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSBhYWI5MGQwZGZhOTM0ZDMzODc5ZWFlYzFhODc4ZTkzYjIwMWQzM2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNjo0NDo0MyArMDgwMAorU3ViamVjdDogW1BBVENIIDA3LzE5XSBJbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAorCitGaXhlcworL3BhdGgvdG8vc3lzdGVtZC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCisgc3RydWN0IGV0aGhkciB7CisgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKworIHNyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMgICAgICAgICAgICAgfCAxICsKKyBzcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgICAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuaCAgICAgICAgICAgICAgIHwgMSArCisgc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgICAgfCAxICsKKyA2IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworaW5kZXggYzkzZmU5Y2I0Li4yMDEzZDA2ZTEgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK0BAIC0zLDYgKzMsNyBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvZ2VuZXRsaW5rLmg+CitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitpbmRleCAyMWZiN2FiMDYuLjBhZmU1MTcwYyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCitAQCAtMiw2ICsyLDcgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxsaW51eC9pZl90dW4uaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitpbmRleCA4ZThhNjE4ZTIuLjUyZDUyM2E2NyAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCisrKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYworQEAgLTQsNiArNCw3IEBACisgKioqLworIAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAKK2RpZmYgLS1naXQgYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKK2luZGV4IDRiYjQyMTZhYy4uNWY3MzgzNDgzIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCisrKysgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKK0BAIC0xLDUgKzEsNiBAQAorIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KKyAKKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KK2RpZmYgLS1naXQgYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmggYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmgKK2luZGV4IDA2NGJmNGQyYi4uZWUwZDRmYjJhIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5oCisrKysgYi9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmgKK0BAIC0zLDYgKzMsNyBAQAorIAorIAorICNpbmNsdWRlIDxtYWNyby5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyAKKyAjaW5jbHVkZSAibWlzc2luZy5oIgorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK2luZGV4IDhiZWQ2Mzk5YS4uYTNhOTY5NTliIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKKysrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCitAQCAtMSw1ICsxLDYgQEAKKyAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjErICovCisgCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorICNpbmNsdWRlICJsaW5rLWNvbmZpZy5oIgorICNpbmNsdWRlICJsb2cuaCIKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMTJkMzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1SZXZlcnQtcnVsZXMtcmVtb3ZlLWZpcm13YXJlLWxvYWRpbmctcnVsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDM1ZDZkMzg0ZTgzYWMzODA3NzYwMzYxMWJiNzkxOTY5ZWY5NWZlNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE5IE1hciAyMDE1IDE1OjAxOjI5ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMzFdIFJldmVydCAicnVsZXM6IHJlbW92ZSBmaXJtd2FyZSBsb2FkaW5nIHJ1bGVzIgotCi1UaGlzIHJldmVydHMgY29tbWl0IDcwZTdkNzU0ZGRiMzU2ZmIxYTI5NDJiMjYyZjhjZWU5NjUwZTJhMTkuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLS0tLQotIHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi0KLWRpZmYgLS1naXQgYS9ydWxlcy81MC1maXJtd2FyZS5ydWxlcyBiL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5mMGFlNjg0NTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3J1bGVzLzUwLWZpcm13YXJlLnJ1bGVzCi1AQCAtMCwwICsxLDMgQEAKLSsjIGRvIG5vdCBlZGl0IHRoaXMgZmlsZSwgaXQgd2lsbCBiZSBvdmVyd3JpdHRlbiBvbiB1cGRhdGUKLSsKLStTVUJTWVNURU09PSJmaXJtd2FyZSIsIEFDVElPTj09ImFkZCIsIFJVTntidWlsdGlufT0iZmlybXdhcmUiCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVmNjVlNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDkzMDJiNzJlNWU2OTUxMmFhYTcxMDYxOTdiMDBjNTViYWViMzViM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjQ2OjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNy85XSBydWxlczogd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcyBpbiBpZGUgZGV2aWNlcworCitGb3JtYXR0aW5nIElERSBzdG9yYWdlIGRvZXMgbm90IHRyaWdnZXIgImNoYW5nZSIgdWV2ZW50cy4gQXMgYSByZXN1bHQKK2NsaWVudHMgdXNpbmcgdWRldiBBUEkgZG9uJ3QgZ2V0IGFueSB1cGRhdGVzIGFmdGVyd2FyZHMgYW5kIGdldCBvdXRkYXRlZAoraW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZS4KKy4uLgorcm9vdEBxZW11eDg2LTY0On4jIG1rZnMuZXh0NCAtRiAvZGV2L2hkYTEKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAyNjIxNDQgNGsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK0ZpbGVzeXN0ZW0gVVVJRDogOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCisKK3Jvb3RAcWVtdXg4Ni02NDp+IyBscyAvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKK2xzOiBjYW5ub3QgYWNjZXNzICcvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTInOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisuLi4KK0luY2x1ZGUgaGQqIGluIGEgbWF0Y2ggZm9yIHdhdGNoIG9wdGlvbiBhc3NpZ25tZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZAorCitxZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQorQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKKy9kZXYvaGQqLiBBIHNpbWlsYXIgcGF0Y2ggcmVqZWN0ZWQgYnkgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFCitpcyBkZXByZWNhdGVkLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBydWxlcy82MC1ibG9jay5ydWxlcyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKK2luZGV4IDM0M2ZjMDZmOC4uYjUyMzdkYWM0IDEwMDY0NAorLS0tIGEvcnVsZXMvNjAtYmxvY2sucnVsZXMKKysrKyBiL3J1bGVzLzYwLWJsb2NrLnJ1bGVzCitAQCAtOCw0ICs4LDQgQEAgQUNUSU9OPT0iYWRkIiwgU1VCU1lTVEVNPT0ibW9kdWxlIiwgS0VSTkVMPT0iYmxvY2siLCBBVFRSe3BhcmFtZXRlcnMvZXZlbnRzX2RmbF8KKyBBQ1RJT049PSJjaGFuZ2UiLCBTVUJTWVNURU09PSJzY3NpIiwgRU5We0RFVlRZUEV9PT0ic2NzaV9kZXZpY2UiLCBURVNUPT0iYmxvY2siLCBBVFRSe2Jsb2NrLyovdWV2ZW50fT0iY2hhbmdlIgorIAorICMgd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcywgY2F1c2VkIGJ5IHRvb2xzIGNsb3NpbmcgdGhlIGRldmljZSBub2RlIHdoaWNoIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcKKy1BQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIEtFUk5FTD09Imxvb3AqfG52bWUqfHNkKnx2ZCp8eHZkKnxwbWVtKnxtbWNibGsqIiwgT1BUSU9OUys9IndhdGNoIgorK0FDVElPTiE9InJlbW92ZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgS0VSTkVMPT0ibG9vcCp8bnZtZSp8c2QqfHZkKnx4dmQqfHBtZW0qfG1tY2Jsayp8aGQqIiwgT1BUSU9OUys9IndhdGNoIgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZWNkYzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBiNmJhNTk2ZmQxMzEzYTE2MmNkYzJlYjg4MTYxZGNmMjRkMTllZGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOCBKdW4gMjAxOCAxMDoxMDowMiArMDgwMAorU3ViamVjdDogW1BBVENIIDgvOV0gRG8gbm90IGVuYWJsZSBuc3MgdGVzdHMgaWYgbnNzLXN5c3RlbWQgaXMgbm90IGVuYWJsZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvdGVzdC9tZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKK2luZGV4IDdkYTdlM2EyMi4uN2I3YzI1N2ZmIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQKKysrKyBiL3NyYy90ZXN0L21lc29uLmJ1aWxkCitAQCAtNjQ1LDcgKzY0NSw3IEBAIHRlc3RzICs9IFsKKyAgICAgICAgIFtbJ3NyYy90ZXN0L3Rlc3QtbnNzLmMnXSwKKyAgICAgICAgICBbXSwKKyAgICAgICAgICBbbGliZGxdLAorLSAgICAgICAgICcnLCAnbWFudWFsJ10sCisrICAgICAgICAgJ0VOQUJMRV9OU1NfU1lTVEVNRCcsICdtYW51YWwnXSwKKyAKKyAgICAgICAgIFtbJ3NyYy90ZXN0L3Rlc3QtdW1vdW50LmMnLAorICAgICAgICAgICAnc3JjL2NvcmUvbW91bnQtc2V0dXAuYycsCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZDdlMDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzc3ICswLDAgQEAKLUZyb20gNWNjZTc2MjZmMzNlOTJmNjI0YWMwNmI2MTMxMjU4MTNmYjQ3ZDQ0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MDU6MzkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8zMV0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKLSBzdXBwb3J0IgotCi1UaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCi1Vc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgTGludXggPCAzLjcuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIExpdSA8bmV0MTQ3QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQotIFRPRE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICB8ICAgOSArKysKLSBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICB8ICAgMiArCi0gcnVsZXMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgIDQgKwotIHNyYy91ZGV2L21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICA0ICsKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4uYyAgICAgICAgICB8ICAgMyArCi0gc3JjL3VkZXYvdWRldi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKysKLSBzcmMvdWRldi91ZGV2ZC5jICAgICAgICAgICAgICAgICB8ICAxMiArKysKLSAxMCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKLQotZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQotaW5kZXggODgwN2U1Y2ZlLi5iZmQ3YTM1ZGUgMTAwNjQ0Ci0tLS0gYS9SRUFETUUKLSsrKyBiL1JFQURNRQotQEAgLTU4LDggKzU4LDggQEAgUkVRVUlSRU1FTlRTOgotICAgICAgICAgTGVnYWN5IGhvdHBsdWcgc2xvd3MgZG93biB0aGUgc3lzdGVtIGFuZCBjb25mdXNlcyB1ZGV2OgotICAgICAgICAgICBDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIiCi0gCi0tICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGFuZCBzaG91bGQKLS0gICAgICAgIGJlIGRpc2FibGVkIGluIHRoZSBrZXJuZWw6Ci0rICAgICAgICBVc2Vyc3BhY2UgZmlybXdhcmUgbG9hZGluZyBpcyBkZXByZWNhdGVkLCB3aWxsIGdvIGF3YXksIGFuZAotKyAgICAgICAgc29tZXRpbWVzIGNhdXNlcyBwcm9ibGVtczoKLSAgICAgICAgICAgQ09ORklHX0ZXX0xPQURFUl9VU0VSX0hFTFBFUj1uCi0gCi0gICAgICAgICBTb21lIHVkZXYgcnVsZXMgYW5kIHZpcnR1YWxpemF0aW9uIGRldGVjdGlvbiByZWxpZXMgb24gaXQ6Ci1kaWZmIC0tZ2l0IGEvVE9ETyBiL1RPRE8KLWluZGV4IGE3NzAyOGM3Yi4uMzllNzJkN2VjIDEwMDY0NAotLS0tIGEvVE9ETwotKysrIGIvVE9ETwotQEAgLTc4Myw2ICs3ODMsNyBAQCBGZWF0dXJlczoKLSAqIGluaXRpYWxpemUgdGhlIGhvc3RuYW1lIGZyb20gdGhlIGZzIGxhYmVsIG9mIC8sIGlmIC9ldGMvaG9zdG5hbWUgZG9lcyBub3QgZXhpc3Q/Ci0gCi0gKiB1ZGV2OgotKyAgLSByZW1vdmUgc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMgKENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVI9bikKLSAgIC0gbW92ZSB0byBMR1BMCi0gICAtIGtpbGwgc2NzaV9pZAotICAgLSBhZGQgdHJpZ2dlciAtLXN1YnN5c3RlbS1tYXRjaD11c2IvdXNiX2RldmljZSBkZXZpY2UKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA5MTgxMDFkNmIuLjljMjUwMjJhNCAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTcyLDYgKzcyLDEyIEBAIGNvbmYuc2V0MTAoJ0hBVkVfU1lTVl9DT01QQVQnLCBoYXZlLAotICAgICAgICAgICAgZGVzY3JpcHRpb24gOiAnU3lzViBpbml0IHNjcmlwdHMgYW5kIHJjTi5kIGxpbmtzIGFyZSBzdXBwb3J0ZWQnKQotIG00X2RlZmluZXMgKz0gaGF2ZSA/IFsnLURIQVZFX1NZU1ZfQ09NUEFUJ10gOiBbXQotIAotK2Zpcm13YXJlX3BhdGggPSBnZXRfb3B0aW9uKCdmaXJtd2FyZS1wYXRoJykKLStoYXZlID0gZmlybXdhcmVfcGF0aCAhPSAnJwotK2NvbmYuc2V0MTAoJ0hBVkVfRklSTVdBUkUnLCBoYXZlLAotKyAgICAgICAgICAgZGVzY3JpcHRpb24gOiAnVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgaXMgc3VwcG9ydGVkJykKLSttNF9kZWZpbmVzICs9IGhhdmUgPyBbJy1ESEFWRV9GSVJNV0FSRSddIDogW10KLSsKLSAjIGpvaW5fcGF0aHMgaWdub3JlIHRoZSBwcmVjZWRpbmcgYXJndW1lbnRzIGlmIGFuIGFic29sdXRlIGNvbXBvbmVudCBpcwotICMgZW5jb3VudGVyZWQsIHNvIHRoaXMgc2hvdWxkIGNhbm9uaWNhbGl6ZSB2YXJpb3VzIHBhdGhzIHdoZW4gdGhleSBhcmUKLSAjIGFic29sdXRlIG9yIHJlbGF0aXZlLgotQEAgLTE3OCw2ICsxODQsNyBAQCBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9DT05GSUdfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMocGtnc3lzYwotIGNvbmYuc2V0X3F1b3RlZCgnU1lTVEVNX0RBVEFfVU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtdW5pdGRpcikKLSBjb25mLnNldF9xdW90ZWQoJ1NZU1RFTV9TWVNWSU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgIHN5c3Zpbml0X3BhdGgpCi0gY29uZi5zZXRfcXVvdGVkKCdTWVNURU1fU1lTVlJDTkRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICBzeXN2cmNuZF9wYXRoKQotK2NvbmYuc2V0X3F1b3RlZCgnRklSTVdBUkVfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0aCkKLSBjb25mLnNldF9xdW90ZWQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUQVJUJywgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ3JjLWxvY2FsJykpCi0gY29uZi5zZXRfcXVvdGVkKCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVE9QJywgICAgICAgICAgICAgICAgICBnZXRfb3B0aW9uKCdoYWx0LWxvY2FsJykpCi0gY29uZi5zZXRfcXVvdGVkKCdVU0VSX0NPTkZJR19VTklUX1BBVEgnLCAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHBrZ3N5c2NvbmZkaXIsICd1c2VyJykpCi1AQCAtMjU4LDYgKzI2NSw3IEBAIHN1YnN0cy5zZXQoJ1NZU1RFTUNUTCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyhyb290YmluCi0gc3Vic3RzLnNldCgnUkFORE9NX1NFRUQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luX3BhdGhzKHJhbmRvbXNlZWRkaXIsICdyYW5kb20tc2VlZCcpKQotIHN1YnN0cy5zZXQoJ1NZU1RFTV9TWVNWSU5JVF9QQVRIJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdmluaXRfcGF0aCkKLSBzdWJzdHMuc2V0KCdTWVNURU1fU1lTVlJDTkRfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3ZyY25kX3BhdGgpCi0rc3Vic3RzLnNldCgnRklSTVdBUkVfUEFUSCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZV9wYXRoKQotIHN1YnN0cy5zZXQoJ1JDX0xPQ0FMX1NDUklQVF9QQVRIX1NUQVJUJywgICAgICAgICAgICAgICAgICAgICAgZ2V0X29wdGlvbigncmMtbG9jYWwnKSkKLSBzdWJzdHMuc2V0KCdSQ19MT0NBTF9TQ1JJUFRfUEFUSF9TVE9QJywgICAgICAgICAgICAgICAgICAgICAgIGdldF9vcHRpb24oJ2hhbHQtbG9jYWwnKSkKLSAKLUBAIC0yNzE1LDYgKzI3MjMsNyBAQCBzdGF0dXMgPSBbCi0gICAgICAgICAncm9vdGhvbWUgZGlyZWN0b3J5OiAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChyb290aG9tZWRpciksCi0gICAgICAgICAnU3lzViBpbml0IHNjcmlwdHM6ICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChzeXN2aW5pdF9wYXRoKSwKLSAgICAgICAgICdTeXNWIHJjPy5kIGRpcmVjdG9yaWVzOiAgICAgICAgICAgIEAwQCcuZm9ybWF0KHN5c3ZyY25kX3BhdGgpLAotKyAgICAgICAgJ2Zpcm13YXJlIHBhdGg6ICAgICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoZmlybXdhcmVfcGF0aCksCi0gICAgICAgICAnUEFNIG1vZHVsZXMgZGlyZWN0b3J5OiAgICAgICAgICAgICBAMEAnLmZvcm1hdChwYW1saWJkaXIpLAotICAgICAgICAgJ1BBTSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeTogICAgICAgQDBAJy5mb3JtYXQocGFtY29uZmRpciksCi0gICAgICAgICAnUlBNIG1hY3JvcyBkaXJlY3Rvcnk6ICAgICAgICAgICAgICBAMEAnLmZvcm1hdChycG1tYWNyb3NkaXIpLAotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDBiMjRmMGUwZi4uOTJkMjVmYTM1IDEwMDY0NAotLS0tIGEvbWVzb25fb3B0aW9ucy50eHQKLSsrKyBiL21lc29uX29wdGlvbnMudHh0Ci1AQCAtMTA4LDYgKzEwOCw4IEBAIG9wdGlvbigndG1wZmlsZXMnLCB0eXBlIDogJ2Jvb2xlYW4nLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICdzdXBwb3J0IGZvciB0bXBmaWxlcy5kJykKLSBvcHRpb24oJ2ltcG9ydGQnLCB0eXBlIDogJ2NvbWJvJywgY2hvaWNlcyA6IFsnYXV0bycsICd0cnVlJywgJ2ZhbHNlJ10sCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ2luc3RhbGwgdGhlIHN5c3RlbWQtaW1wb3J0ZCBkYWVtb24nKQotK29wdGlvbignZmlybXdhcmUtcGF0aCcsIHR5cGUgOiAnc3RyaW5nJywgdmFsdWUgOiAnJywKLSsgICAgICAgZGVzY3JpcHRpb24gOiAnRmlybXdhcmUgc2VhcmNoIHBhdGgnKQotIG9wdGlvbignaHdkYicsIHR5cGUgOiAnYm9vbGVhbicsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3N1cHBvcnQgZm9yIHRoZSBoYXJkd2FyZSBkYXRhYmFzZScpCi0gb3B0aW9uKCdyZmtpbGwnLCB0eXBlIDogJ2Jvb2xlYW4nLAotZGlmZiAtLWdpdCBhL3J1bGVzL21lc29uLmJ1aWxkIGIvcnVsZXMvbWVzb24uYnVpbGQKLWluZGV4IGUyNTNiOWY1OS4uNWVlZTVmYmNhIDEwMDY0NAotLS0tIGEvcnVsZXMvbWVzb24uYnVpbGQKLSsrKyBiL3J1bGVzL21lc29uLmJ1aWxkCi1AQCAtNDEsNiArNDEsMTAgQEAgcnVsZXMgPSBmaWxlcygnJycKLSBpbnN0YWxsX2RhdGEocnVsZXMsCi0gICAgICAgICAgICAgIGluc3RhbGxfZGlyIDogdWRldnJ1bGVzZGlyKQotIAotK2lmIGNvbmYuZ2V0KCdIQVZFX0ZJUk1XQVJFJykgPT0gMQotKyAgICAgICAgaW5zdGFsbF9kYXRhKCc1MC1maXJtd2FyZS5ydWxlcycsIGluc3RhbGxfZGlyIDogdWRldnJ1bGVzZGlyKQotK2VuZGlmCi0rCi0gYWxsX3J1bGVzID0gcnVsZXMKLSAKLSBydWxlc19pbiA9ICcnJwotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L21lc29uLmJ1aWxkIGIvc3JjL3VkZXYvbWVzb24uYnVpbGQKLWluZGV4IGRlMmZkMmQ5Yy4uYjZiMGNhMDA2IDEwMDY0NAotLS0tIGEvc3JjL3VkZXYvbWVzb24uYnVpbGQKLSsrKyBiL3NyYy91ZGV2L21lc29uLmJ1aWxkCi1AQCAtNjcsNiArNjcsMTAgQEAgaWYgY29uZi5nZXQoJ0hBVkVfQUNMJykgPT0gMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkX2xvZ2luX2NdCi0gZW5kaWYKLSAKLStpZiBjb25mLmdldCgnSEFWRV9GSVJNV0FSRScpID09IDEKLSsgICAgICAgIGxpYnVkZXZfY29yZV9zb3VyY2VzICs9IFsndWRldi1idWlsdGluLWZpcm13YXJlLmMnXQotK2VuZGlmCi0rCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi0gZ2VuZXJhdGVfa2V5Ym9hcmRfa2V5c19saXN0ID0gZmluZF9wcm9ncmFtKCdnZW5lcmF0ZS1rZXlib2FyZC1rZXlzLWxpc3Quc2gnKQotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmJkOGMyZmI5NgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLWZpcm13YXJlLmMKLUBAIC0wLDAgKzEsMTU0IEBACi0rLyoKLSsgKiBmaXJtd2FyZSAtIEtlcm5lbCBmaXJtd2FyZSBsb2FkZXIKLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAwOSBQaXRlciBQdW5rIDxwaXRlcnB1bmtAc2xhY2t3YXJlLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBLYXkgU2lldmVycyA8a2F5QHZyZnkub3JnPgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0rICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCi0rICogTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHM6KgotKyAqLwotKwotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxnZXRvcHQuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8c3RkYm9vbC5oPgotKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKwotKyNpbmNsdWRlICJ1ZGV2LmgiCi0rCi0rc3RhdGljIGJvb2wgc2V0X2xvYWRpbmcoc3RydWN0IHVkZXYgKnVkZXYsIGNoYXIgKmxvYWRwYXRoLCBjb25zdCBjaGFyICpzdGF0ZSkgewotKyAgICAgICAgRklMRSAqbGRmaWxlOwotKwotKyAgICAgICAgbGRmaWxlID0gZm9wZW4obG9hZHBhdGgsICJ3ZSIpOwotKyAgICAgICAgaWYgKGxkZmlsZSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZXJyb3I6IGNhbiBub3Qgb3BlbiAnJXMnIiwgbG9hZHBhdGgpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9OwotKyAgICAgICAgZnByaW50ZihsZGZpbGUsICIlc1xuIiwgc3RhdGUpOwotKyAgICAgICAgZmNsb3NlKGxkZmlsZSk7Ci0rICAgICAgICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0rc3RhdGljIGJvb2wgY29weV9maXJtd2FyZShzdHJ1Y3QgdWRldiAqdWRldiwgY29uc3QgY2hhciAqc291cmNlLCBjb25zdCBjaGFyICp0YXJnZXQsIHNpemVfdCBzaXplKSB7Ci0rICAgICAgICBjaGFyICpidWY7Ci0rICAgICAgICBGSUxFICpmc291cmNlID0gTlVMTCwgKmZ0YXJnZXQgPSBOVUxMOwotKyAgICAgICAgYm9vbCByZXQgPSBmYWxzZTsKLSsKLSsgICAgICAgIGJ1ZiA9IG1hbGxvYyhzaXplKTsKLSsgICAgICAgIGlmIChidWYgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgICBsb2dfZXJyb3IoIk5vIG1lbW9yeSBhdmFpbGFibGUgdG8gbG9hZCBmaXJtd2FyZSBmaWxlIik7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGxvZ19kZWJ1Zygid3JpdGluZyAnJXMnICglemkpIHRvICclcyciLCBzb3VyY2UsIHNpemUsIHRhcmdldCk7Ci0rCi0rICAgICAgICBmc291cmNlID0gZm9wZW4oc291cmNlLCAicmUiKTsKLSsgICAgICAgIGlmIChmc291cmNlID09IE5VTEwpCi0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIGZ0YXJnZXQgPSBmb3Blbih0YXJnZXQsICJ3ZSIpOwotKyAgICAgICAgaWYgKGZ0YXJnZXQgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgaWYgKGZyZWFkKGJ1Ziwgc2l6ZSwgMSwgZnNvdXJjZSkgIT0gMSkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgaWYgKGZ3cml0ZShidWYsIHNpemUsIDEsIGZ0YXJnZXQpID09IDEpCi0rICAgICAgICAgICAgICAgIHJldCA9IHRydWU7Ci0rZXhpdDoKLSsgICAgICAgIGlmIChmdGFyZ2V0ICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgIGZjbG9zZShmdGFyZ2V0KTsKLSsgICAgICAgIGlmIChmc291cmNlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgIGZjbG9zZShmc291cmNlKTsKLSsgICAgICAgIGZyZWUoYnVmKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbnQgYnVpbHRpbl9maXJtd2FyZShzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCB0ZXN0KSB7Ci0rICAgICAgICBzdHJ1Y3QgdWRldiAqdWRldiA9IHVkZXZfZGV2aWNlX2dldF91ZGV2KGRldik7Ci0rICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqc2VhcmNocGF0aFtdID0geyBGSVJNV0FSRV9QQVRIIH07Ci0rICAgICAgICBjaGFyIGxvYWRwYXRoW1VUSUxfUEFUSF9TSVpFXTsKLSsgICAgICAgIGNoYXIgZGF0YXBhdGhbVVRJTF9QQVRIX1NJWkVdOwotKyAgICAgICAgY2hhciBmd3BhdGhbVVRJTF9QQVRIX1NJWkVdOwotKyAgICAgICAgY29uc3QgY2hhciAqZmlybXdhcmU7Ci0rICAgICAgICBGSUxFICpmd2ZpbGUgPSBOVUxMOwotKyAgICAgICAgc3RydWN0IHV0c25hbWUga2VybmVsOwotKyAgICAgICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSsgICAgICAgIHVuc2lnbmVkIGludCBpOwotKyAgICAgICAgaW50IHJjID0gRVhJVF9TVUNDRVNTOwotKwotKyAgICAgICAgZmlybXdhcmUgPSB1ZGV2X2RldmljZV9nZXRfcHJvcGVydHlfdmFsdWUoZGV2LCAiRklSTVdBUkUiKTsKLSsgICAgICAgIGlmIChmaXJtd2FyZSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19lcnJvcigiZmlybXdhcmUgcGFyYW1ldGVyIG1pc3NpbmciKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIC8qIGxvb2t1cCBmaXJtd2FyZSBmaWxlICovCi0rICAgICAgICB1bmFtZSgma2VybmVsKTsKLSsgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHNlYXJjaHBhdGgpOyBpKyspIHsKLSsgICAgICAgICAgICAgICAgc3Ryc2NweWwoZndwYXRoLCBzaXplb2YoZndwYXRoKSwgc2VhcmNocGF0aFtpXSwga2VybmVsLnJlbGVhc2UsICIvIiwgZmlybXdhcmUsIE5VTEwpOwotKyAgICAgICAgICAgICAgICBmd2ZpbGUgPSBmb3Blbihmd3BhdGgsICJyZSIpOwotKyAgICAgICAgICAgICAgICBpZiAoZndmaWxlICE9IE5VTEwpCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCi0rICAgICAgICAgICAgICAgIHN0cnNjcHlsKGZ3cGF0aCwgc2l6ZW9mKGZ3cGF0aCksIHNlYXJjaHBhdGhbaV0sIGZpcm13YXJlLCBOVUxMKTsKLSsgICAgICAgICAgICAgICAgZndmaWxlID0gZm9wZW4oZndwYXRoLCAicmUiKTsKLSsgICAgICAgICAgICAgICAgaWYgKGZ3ZmlsZSAhPSBOVUxMKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKwotKyAgICAgICAgc3Ryc2NweWwobG9hZHBhdGgsIHNpemVvZihsb2FkcGF0aCksIHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldiksICIvbG9hZGluZyIsIE5VTEwpOwotKwotKyAgICAgICAgaWYgKGZ3ZmlsZSA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgIGxvZ19kZWJ1ZygiZGlkIG5vdCBmaW5kIGZpcm13YXJlIGZpbGUgJyVzJyIsIGZpcm13YXJlKTsKLSsgICAgICAgICAgICAgICAgcmMgPSBFWElUX0ZBSUxVUkU7Ci0rICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICAgICAqIERvIG5vdCBjYW5jZWwgdGhlIHJlcXVlc3QgaW4gdGhlIGluaXRyZCwgdGhlIHJlYWwgcm9vdCBtaWdodCBoYXZlCi0rICAgICAgICAgICAgICAgICAqIHRoZSBmaXJtd2FyZSBmaWxlIGFuZCB0aGUgJ2NvbGRwbHVnJyBydW4gaW4gdGhlIHJlYWwgcm9vdCB3aWxsIGZpbmQKLSsgICAgICAgICAgICAgICAgICogdGhpcyBwZW5kaW5nIHJlcXVlc3QgYW5kIGZ1bGZpbGwgb3IgY2FuY2VsIGl0LgotKyAgICAgICAgICAgICAgICAgKiAqLwotKyAgICAgICAgICAgICAgICBpZiAoIWluX2luaXRyZCgpKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9sb2FkaW5nKHVkZXYsIGxvYWRwYXRoLCAiLTEiKTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKHN0YXQoZndwYXRoLCAmc3RhdGJ1ZikgPCAwIHx8IHN0YXRidWYuc3Rfc2l6ZSA9PSAwKSB7Ci0rICAgICAgICAgICAgICAgIGlmICghaW5faW5pdHJkKCkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICItMSIpOwotKyAgICAgICAgICAgICAgICByYyA9IEVYSVRfRkFJTFVSRTsKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKCFzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIjEiKSkKLSsgICAgICAgICAgICAgICAgZ290byBleGl0OwotKwotKyAgICAgICAgc3Ryc2NweWwoZGF0YXBhdGgsIHNpemVvZihkYXRhcGF0aCksIHVkZXZfZGV2aWNlX2dldF9zeXNwYXRoKGRldiksICIvZGF0YSIsIE5VTEwpOwotKyAgICAgICAgaWYgKCFjb3B5X2Zpcm13YXJlKHVkZXYsIGZ3cGF0aCwgZGF0YXBhdGgsIHN0YXRidWYuc3Rfc2l6ZSkpIHsKLSsgICAgICAgICAgICAgICAgbG9nX2Vycm9yKCJlcnJvciBzZW5kaW5nIGZpcm13YXJlICclcycgdG8gZGV2aWNlIiwgZmlybXdhcmUpOwotKyAgICAgICAgICAgICAgICBzZXRfbG9hZGluZyh1ZGV2LCBsb2FkcGF0aCwgIi0xIik7Ci0rICAgICAgICAgICAgICAgIHJjID0gRVhJVF9GQUlMVVJFOwotKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0rICAgICAgICB9OwotKwotKyAgICAgICAgc2V0X2xvYWRpbmcodWRldiwgbG9hZHBhdGgsICIwIik7Ci0rZXhpdDoKLSsgICAgICAgIGlmIChmd2ZpbGUpCi0rICAgICAgICAgICAgICAgIGZjbG9zZShmd2ZpbGUpOwotKyAgICAgICAgcmV0dXJuIHJjOwotK30KLSsKLStjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9maXJtd2FyZSA9IHsKLSsgICAgICAgIC5uYW1lID0gImZpcm13YXJlIiwKLSsgICAgICAgIC5jbWQgPSBidWlsdGluX2Zpcm13YXJlLAotKyAgICAgICAgLmhlbHAgPSAia2VybmVsIGZpcm13YXJlIGxvYWRlciIsCi0rICAgICAgICAucnVuX29uY2UgPSB0cnVlLAotK307Ci1kaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotaW5kZXggZGIyYjY4NzRmLi5jY2Q4ODYzOGMgMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKLUBAIC0zMiw2ICszMiw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluICpidWlsdGluc1tdID0gewotICAgICAgICAgW1VERVZfQlVJTFRJTl9CTEtJRF0gPSAmdWRldl9idWlsdGluX2Jsa2lkLAotICNlbmRpZgotICAgICAgICAgW1VERVZfQlVJTFRJTl9CVFJGU10gPSAmdWRldl9idWlsdGluX2J0cmZzLAotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBbVURFVl9CVUlMVElOX0ZJUk1XQVJFXSA9ICZ1ZGV2X2J1aWx0aW5fZmlybXdhcmUsCi0rI2VuZGlmCi0gICAgICAgICBbVURFVl9CVUlMVElOX0hXREJdID0gJnVkZXZfYnVpbHRpbl9od2RiLAotICAgICAgICAgW1VERVZfQlVJTFRJTl9JTlBVVF9JRF0gPSAmdWRldl9idWlsdGluX2lucHV0X2lkLAotICAgICAgICAgW1VERVZfQlVJTFRJTl9LRVlCT0FSRF0gPSAmdWRldl9idWlsdGluX2tleWJvYXJkLAotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYuaCBiL3NyYy91ZGV2L3VkZXYuaAotaW5kZXggZWExMWMyZDI5Li5jNDdkZDNkODggMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi91ZGV2LmgKLSsrKyBiL3NyYy91ZGV2L3VkZXYuaAotQEAgLTE1MSw2ICsxNTEsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgewotICAgICAgICAgVURFVl9CVUlMVElOX0JMS0lELAotICNlbmRpZgotICAgICAgICAgVURFVl9CVUlMVElOX0JUUkZTLAotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBVREVWX0JVSUxUSU5fRklSTVdBUkUsCi0rI2VuZGlmCi0gICAgICAgICBVREVWX0JVSUxUSU5fSFdEQiwKLSAgICAgICAgIFVERVZfQlVJTFRJTl9JTlBVVF9JRCwKLSAgICAgICAgIFVERVZfQlVJTFRJTl9LRVlCT0FSRCwKLUBAIC0xNzksNiArMTgyLDkgQEAgc3RydWN0IHVkZXZfYnVpbHRpbiB7Ci0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2Jsa2lkOwotICNlbmRpZgotIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9idHJmczsKLSsjaWYgSEFWRV9GSVJNV0FSRQotK2V4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9maXJtd2FyZTsKLSsjZW5kaWYKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faHdkYjsKLSBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faW5wdXRfaWQ7Ci0gZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2tleWJvYXJkOwotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZkLmMgYi9zcmMvdWRldi91ZGV2ZC5jCi1pbmRleCA1Yzc1N2Q1MTMuLjJmMzMxMzAwNyAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXZkLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXZkLmMKLUBAIC0xMjcsNiArMTI3LDkgQEAgc3RydWN0IGV2ZW50IHsKLSAgICAgICAgIGJvb2wgaXNfYmxvY2s7Ci0gICAgICAgICBzZF9ldmVudF9zb3VyY2UgKnRpbWVvdXRfd2FybmluZzsKLSAgICAgICAgIHNkX2V2ZW50X3NvdXJjZSAqdGltZW91dDsKLSsjaWYgSEFWRV9GSVJNV0FSRQotKyAgICAgICAgYm9vbCBub2RlbGF5OwotKyNlbmRpZgotIH07Ci0gCi0gc3RhdGljIHZvaWQgZXZlbnRfcXVldWVfY2xlYW51cChNYW5hZ2VyICptYW5hZ2VyLCBlbnVtIGV2ZW50X3N0YXRlIHR5cGUpOwotQEAgLTYwOSw2ICs2MTIsMTAgQEAgc3RhdGljIGludCBldmVudF9xdWV1ZV9pbnNlcnQoTWFuYWdlciAqbWFuYWdlciwgc3RydWN0IHVkZXZfZGV2aWNlICpkZXYpIHsKLSAgICAgICAgIGV2ZW50LT5kZXZudW0gPSB1ZGV2X2RldmljZV9nZXRfZGV2bnVtKGRldik7Ci0gICAgICAgICBldmVudC0+aXNfYmxvY2sgPSBzdHJlcSgiYmxvY2siLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOwotICAgICAgICAgZXZlbnQtPmlmaW5kZXggPSB1ZGV2X2RldmljZV9nZXRfaWZpbmRleChkZXYpOwotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICBpZiAoc3RyZXEodWRldl9kZXZpY2VfZ2V0X3N1YnN5c3RlbShkZXYpLCAiZmlybXdhcmUiKSkKLSsgICAgICAgICAgICAgICAgZXZlbnQtPm5vZGVsYXkgPSB0cnVlOwotKyNlbmRpZgotIAotICAgICAgICAgbG9nX2RlYnVnKCJzZXEgJWxsdSBxdWV1ZWQsICclcycgJyVzJyIsIHVkZXZfZGV2aWNlX2dldF9zZXFudW0oZGV2KSwKLSAgICAgICAgICAgICAgdWRldl9kZXZpY2VfZ2V0X2FjdGlvbihkZXYpLCB1ZGV2X2RldmljZV9nZXRfc3Vic3lzdGVtKGRldikpOwotQEAgLTY5Miw2ICs2OTksMTEgQEAgc3RhdGljIGJvb2wgaXNfZGV2cGF0aF9idXN5KE1hbmFnZXIgKm1hbmFnZXIsIHN0cnVjdCBldmVudCAqZXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgfQotIAotKyNpZiBIQVZFX0ZJUk1XQVJFCi0rICAgICAgICAgICAgICAgIC8qIGFsbG93IHRvIGJ5cGFzcyB0aGUgZGVwZW5kZW5jeSB0cmFja2luZyAqLwotKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQtPm5vZGVsYXkpCi0rICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIC8qIHBhcmVudCBkZXZpY2UgZXZlbnQgZm91bmQgKi8KLSAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZXZwYXRoW2NvbW1vbl0gPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRlbGF5aW5nX3NlcW51bSA9IGxvb3BfZXZlbnQtPnNlcW51bTsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWU1ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCkBAIC0wLDAgKzEsMTUzIEBACitGcm9tIDg0OGU3MTFkNzE5YTZkOTg3YmM3ZDE0MTgzZTFjN2IxZjFjOTFjNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE3OjEwOjI5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTldIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAorIGRlZmluZWQKKworSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCitleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCisKK0RvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKKworQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvZ2xvYi11dGlsLmMgICAgIHwgMTMgKysrKysrKysrKystLQorIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNSArKysrKysrKysrKysrKysKKyBzcmMvdG1wZmlsZXMvdG1wZmlsZXMuYyAgIHwgMTAgKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworaW5kZXggOWZhYzY3NmYyLi44YWRiOTU1OWUgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworQEAgLTEwLDYgKzEwLDExIEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIHN0YXRpYyB2b2lkIGNsb3NlZGlyX3dyYXBwZXIodm9pZCogdikgeworICAgICAgICAgKHZvaWQpIGNsb3NlZGlyKHYpOworQEAgLTE4LDYgKzIzLDcgQEAgc3RhdGljIHZvaWQgY2xvc2VkaXJfd3JhcHBlcih2b2lkKiB2KSB7CisgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKKyAgICAgICAgIGludCBrOworIAorKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIC8qIFdlIHdhbnQgdG8gc2V0IEdMT0JfQUxURElSRlVOQyBvdXJzZWx2ZXMsIGRvbid0IGFsbG93IGl0IHRvIGJlIHNldC4gKi8KKyAgICAgICAgIGFzc2VydCghKGZsYWdzICYgR0xPQl9BTFRESVJGVU5DKSk7CisgCitAQCAtMzEsMTAgKzM3LDEzIEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9sc3RhdCA9IGxzdGF0OworICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfc3RhdCkKKyAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX3N0YXQgPSBzdGF0OworLQorKyNlbmRpZgorICAgICAgICAgZXJybm8gPSAwOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzIHwgR0xPQl9BTFRESVJGVU5DLCBOVUxMLCBwZ2xvYik7CistCisrI2Vsc2UKKysgICAgICAgIGsgPSBnbG9iKHBhdGgsIGZsYWdzLCBOVUxMLCBwZ2xvYik7CisrI2VuZGlmCisgICAgICAgICBpZiAoayA9PSBHTE9CX05PTUFUQ0gpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT1NQQUNFKQorZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitpbmRleCBkNzhkNjIyM2MuLmY1OTQzYjI2ZCAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKKysrKyBiL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMKK0BAIC0xMiw2ICsxMiwxMSBAQAorICNpbmNsdWRlICJnbG9iLXV0aWwuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAicm0tcmYuaCIKKysvKiBEb24ndCBmYWlsIGlmIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CisrICogZG9lc24ndCBwcm92aWRlIGJyYWNlIGV4cGFuc2lvbiAqLworKyNpZm5kZWYgR0xPQl9CUkFDRQorKyNkZWZpbmUgR0xPQl9CUkFDRSAwCisrI2VuZGlmCisgCisgc3RhdGljIHZvaWQgdGVzdF9nbG9iX2V4aXN0cyh2b2lkKSB7CisgICAgICAgICBjaGFyIG5hbWVbXSA9ICIvdG1wL3Rlc3QtZ2xvYl9leGlzdHMuWFhYWFhYIjsKK0BAIC00MCwxMSArNDUsMTMgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CisgICAgICAgICBjb25zdCBjaGFyICpmbjsKKyAKKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9IGNsb3NlZGlyX3dyYXBwZXIsCisgICAgICAgICAgICAgICAgIC5nbF9yZWFkZGlyID0gKHN0cnVjdCBkaXJlbnQgKigqKSh2b2lkICopKSByZWFkZGlyX25vX2RvdCwKKyAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXIsCisgICAgICAgICAgICAgICAgIC5nbF9sc3RhdCA9IGxzdGF0LAorICAgICAgICAgICAgICAgICAuZ2xfc3RhdCA9IHN0YXQsCisrI2VuZGlmCisgICAgICAgICB9OworIAorICAgICAgICAgaW50IHI7CitAQCAtNTIsMTEgKzU5LDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKG1rZHRlbXAodGVtcGxhdGUpKTsKKyAKKyAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvKiIpOworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFfEdMT0JfQUxURElSRlVOQywgTlVMTCwgJmcpOworKyNlbHNlCisrICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRSwgTlVMTCwgJmcpOworKyNlbmRpZgorICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gR0xPQl9OT01BVENIKTsKKyAKKyAgICAgICAgIGZuID0gc3Ryam9pbmEodGVtcGxhdGUsICIvLioiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICAodm9pZCkgcm1fcmYodGVtcGxhdGUsIFJFTU9WRV9ST09UfFJFTU9WRV9QSFlTSUNBTCk7CitkaWZmIC0tZ2l0IGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworaW5kZXggOTI3ZGUzNWYzLi41ZjAyODNkYTUgMTAwNjQ0CistLS0gYS9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYworKysrIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK0BAIC02MCw2ICs2MCwxMiBAQAorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKKyAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQorICAqIHByb3Blcmx5IG93bmVkIGRpcmVjdG9yaWVzIGJlbmVhdGggL3RtcCwgL3Zhci90bXAsIC9ydW4sIHdoaWNoIGFyZQorQEAgLTEzNDUsNyArMTM1MSw5IEBAIGZpbmlzaDoKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9vcGVuZGlyID0gKHZvaWQgKigqKShjb25zdCBjaGFyICopKSBvcGVuZGlyX25vbW9kLAorKyNlbmRpZgorICAgICAgICAgfTsKKyAgICAgICAgIGludCByID0gMCwgazsKKyAgICAgICAgIGNoYXIgKipmbjsKK0BAIC0xMzY1LDcgKzEzNzMsOSBAQCBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbV9yZWN1cnNpdmVseShJdGVtICppLCBmZGFjdGlvbl90IGFjdGlvbikgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0geworKyNpZmRlZiBHTE9CX0FMVERJUkZVTkMKKyAgICAgICAgICAgICAgICAgLmdsX29wZW5kaXIgPSAodm9pZCAqKCopKGNvbnN0IGNoYXIgKikpIG9wZW5kaXJfbm9tb2QsCisrI2VuZGlmCisgICAgICAgICB9OworICAgICAgICAgaW50IHIgPSAwLCBrOworICAgICAgICAgY2hhciAqKmZuOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUyODdjY2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gYWNjMmMwODA4Mjc5NTgwMjAxMWUzYzVmODYyNmQ2MzIxMDAyMTQ4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MzY6MzIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xOV0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKKworVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgorCisgIGxvY2FsZS11dGlsLmM6Mjk2OjI0OiBlcnJvcjogJ0ZUV19TVE9QJyB1bmRlY2xhcmVkCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCitpbmRleCAwMjM5N2YxYjYuLjZkYzc1MGViYSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKKysrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK0BAIC0xODksNiArMTg5LDI2IEBAIHN0cnVjdCBzb2NrYWRkcl92bSB7CisgI2RlZmluZSBCVFJGU19RR1JPVVBfTEVWRUxfU0hJRlQgNDgKKyAjZW5kaWYKKyAKKysjaWZuZGVmIEZUV19BQ1RJT05SRVRWQUwKKysjZGVmaW5lIEZUV19BQ1RJT05SRVRWQUwgMTYKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19DT05USU5VRQorKyNkZWZpbmUgRlRXX0NPTlRJTlVFIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19TVE9QCisrI2RlZmluZSBGVFdfU1RPUCAxCisrI2VuZGlmCisrCisrI2lmbmRlZiBGVFdfU0tJUF9TVUJUUkVFCisrI2RlZmluZSBGVFdfU0tJUF9TVUJUUkVFIDIKKysjZW5kaWYKKysKKysjaWZuZGVmIEZUV19TS0lQX1NJQkxJTkdTCisrI2RlZmluZSBGVFdfU0tJUF9TSUJMSU5HUyAzCisrI2VuZGlmCisrCisgI2lmICEgSEFWRV9MSU5VWF9CVFJGU19ICisgI2RlZmluZSBCVFJGU19JT0NfUUdST1VQX0FTU0lHTiBfSU9XKEJUUkZTX0lPQ1RMX01BR0lDLCA0MSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYnRyZnNfaW9jdGxfcWdyb3VwX2Fzc2lnbl9hcmdzKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MzVmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBmOTYyNWI1ZjNmZDVkYWMzZjM1OTFkYmVlYjI0ZGM5ZDZmZGE3OTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxMjo1NjoyMSArMDgwMAorU3ViamVjdDogW1BBVENIIDkvOV0gbnNzLW15bWFjaGluZXM6IEJ1aWxkIGNvbmRpdGlvbmFsbHkgd2hlbgorIEVOQUJMRV9NWUhPU1ROQU1FIGlzIHNldAorCitGaXhlcyBidWlsZCBmYWlsdXJlcyB3aGVuIGJ1aWxkaW5nIHdpdGggLS1kaXNhYmxlLW15aG9zdG5hbWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDExICsrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDNiYjA4N2ZlZi4uNzNiZDcwYjBiIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMTM3MSwxMiArMTM3MSwxNSBAQCB0ZXN0X2Rsb3BlbiA9IGV4ZWN1dGFibGUoCisgICAgICAgICBsaW5rX3dpdGggOiBbbGliYmFzaWNdLAorICAgICAgICAgZGVwZW5kZW5jaWVzIDogW2xpYmRsXSkKKyAKKy1mb3JlYWNoIHR1cGxlIDogW1snbXlob3N0bmFtZScsICdFTkFCTEVfTVlIT1NUTkFNRSddLAorLSAgICAgICAgICAgICAgICAgWydzeXN0ZW1kJywgICAgJ0VOQUJMRV9OU1NfU1lTVEVNRCddLAorLSAgICAgICAgICAgICAgICAgWydteW1hY2hpbmVzJywgJ0VOQUJMRV9NQUNISU5FRCddLAorLSAgICAgICAgICAgICAgICAgWydyZXNvbHZlJywgICAgJ0VOQUJMRV9SRVNPTFZFJ11dCisrZm9yZWFjaCB0dXBsZSA6IFtbJ215aG9zdG5hbWUnLCAnRU5BQkxFX01ZSE9TVE5BTUUnLCAgJyddLAorKyAgICAgICAgICAgICAgICAgWydzeXN0ZW1kJywgICAgJ0VOQUJMRV9OU1NfU1lTVEVNRCcsICcnXSwKKysgICAgICAgICAgICAgICAgIFsnbXltYWNoaW5lcycsICdFTkFCTEVfTUFDSElORUQnLCAgICAnRU5BQkxFX01ZSE9TVE5BTUUnXSwKKysgICAgICAgICAgICAgICAgIFsncmVzb2x2ZScsICAgICdFTkFCTEVfUkVTT0xWRScsICAgICAnJ11dCisgCisgICAgICAgICBjb25kaXRpb24gPSB0dXBsZVsxXSA9PSAnJyBvciBjb25mLmdldCh0dXBsZVsxXSkgPT0gMQorKyAgICAgICAgaWYgdHVwbGVbMl0gIT0gJycgYW5kIGNvbmRpdGlvbgorKyAgICAgICAgICAgICAgICBjb25kaXRpb24gPSBjb25mLmdldCh0dXBsZVsyXSkgPT0gMQorKyAgICAgICAgZW5kaWYKKyAgICAgICAgIGlmIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgICBtb2R1bGUgPSB0dXBsZVswXQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMTQzNjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOS1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gZmZkZjljYjZiYTBkOTMyYjgxOTMzZDgyNGYyM2E4NzhjMzEzYThkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIyIEZlYiAyMDE2IDA1OjU5OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMzFdIHJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSB1Y2hhci5oCi0KLW1pc3NpbmcuaCBhbHJlYWR5IGluY2x1ZGVzIGl0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHNyYy9iYXNpYy9lc2NhcGUuaCB8IDEgLQotIHNyYy9iYXNpYy91dGY4LmggICB8IDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9lc2NhcGUuaCBiL3NyYy9iYXNpYy9lc2NhcGUuaAotaW5kZXggZGU4OWY0M2E4Li45OTIxY2NiYmQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZXNjYXBlLmgKLSsrKyBiL3NyYy9iYXNpYy9lc2NhcGUuaAotQEAgLTI0LDcgKzI0LDYgQEAKLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8dWNoYXIuaD4KLSAKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAibWlzc2luZy5oIgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGY4LmggYi9zcmMvYmFzaWMvdXRmOC5oCi1pbmRleCBiMGE3NDg1YWUuLmZhMDZkMjkwNiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGY4LmgKLSsrKyBiL3NyYy9iYXNpYy91dGY4LmgKLUBAIC0yMyw3ICsyMyw2IEBACi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotLSNpbmNsdWRlIDx1Y2hhci5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJtaXNzaW5nLmgiCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWNoZWNrLWZvci11Y2hhci5oLWluLW1lc29uLmJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1jaGVjay1mb3ItdWNoYXIuaC1pbi1tZXNvbi5idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE0NGI1NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWNoZWNrLWZvci11Y2hhci5oLWluLW1lc29uLmJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBlYTRjYWFhMWM2YTZkYzY4MmJiMDQ1NDhhYjA1YzVjNzNkMGI0NWQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNTozNDo1MiArMDgwMAotU3ViamVjdDogW1BBVENIIDEwLzMxXSBjaGVjayBmb3IgdWNoYXIuaCBpbiBtZXNvbi5idWlsZAotCi1Vc2UgI2lmIEhBVkVfVUNIQVJfSCB0byBpbmNsdWRlIHVjaGFyLmggY29uZGl0aW9uYWxseS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtZXNvbi5idWlsZCAgICAgICAgIHwgMSArCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggOWMyNTAyMmE0Li45NGExNjcxMmIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC02MjMsNiArNjIzLDcgQEAgZm9yZWFjaCBoZWFkZXIgOiBbJ2NyeXB0LmgnLAotICAgICAgICAgICAgICAgICAgICdzeXMvYXV4di5oJywKLSAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvbWVtY2hlY2suaCcsCi0gICAgICAgICAgICAgICAgICAgJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnLAotKyAgICAgICAgICAgICAgICAgICd1Y2hhci5oJywKLSAgICAgICAgICAgICAgICAgIF0KLSAKLSAgICAgICAgIGNvbmYuc2V0MTAoJ0hBVkVfJyArIGhlYWRlci51bmRlcnNjb3JpZnkoKS50b191cHBlcigpLAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCAzOWMxZmI3MDAuLjg0ZDZkOTE2NyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0zOCw3ICszOCw5IEBACi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0rI2lmIEhBVkVfVUNIQVJfSAotICNpbmNsdWRlIDx1Y2hhci5oPgotKyNlbmRpZgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaWYgSEFWRV9BVURJVAotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY1NDc5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBhMGJkNTg3MzAwNzQ0ZGJiOGU5Y2ZiYjA0MzIzMzY3MGNlNzgxYzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyIEp1bCAyMDE4IDEzOjIyOjQxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTldIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIHwgMTAgKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCitpbmRleCBhOTEzMTAyZTEuLjBkMDE1NDgwNSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYworQEAgLTMyLDYgKzMyLDE2IEBACisgI2luY2x1ZGUgInV0ZjguaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHN1cHBvcnQgSUROICovCisrI2lmbmRlZiBOSV9JRE4KKysjZGVmaW5lIE5JX0lETiAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMKKysjZGVmaW5lIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUyAwCisrI2VuZGlmCisrCisgI2lmIEVOQUJMRV9JRE4KKyAjICBkZWZpbmUgSUROX0ZMQUdTIE5JX0lETgorICNlbHNlCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA5MjNkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA2MGRkNDExZTk3NTZmYzJiMTRjMGUwNjFhZDgwMzc4MmI0YWVlODc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNTo0NjowNSArMDgwMAotU3ViamVjdDogW1BBVENIIDExLzMxXSBzb2NrZXQtdXRpbDogZG9uJ3QgZmFpbCBpZiBsaWJjIGRvZXNuJ3Qgc3VwcG9ydCBJRE4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgfCAxMCArKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLWluZGV4IDJjNzBjYWRlMS4uNjdhZWRhZGQ0IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCi1AQCAtNTAsNiArNTAsMTYgQEAKLSAjaW5jbHVkZSAidXRmOC5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0gCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3Qgc3VwcG9ydCBJRE4gKi8KLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUwotKyNkZWZpbmUgTklfSUROX1VTRV9TVEQzX0FTQ0lJX1JVTEVTIDAKLSsjZW5kaWYKLSsKLSAjaWYgRU5BQkxFX0lETgotICMgIGRlZmluZSBJRE5fRkxBR1MgKE5JX0lETnxOSV9JRE5fVVNFX1NURDNfQVNDSUlfUlVMRVMpCi0gI2Vsc2UKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTIyZmZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gMDQ1ZjIwNWZkMjFlNWUzODBlZGY4MTNkZTA0ZmNmYmY1YTQ4NzIxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMiBKdWwgMjAxOCAxMzoyODoyNSArMDgwMAorU3ViamVjdDogW1BBVENIIDExLzE5XSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90CisgdHlwZWRlZgorCitpbmNsdWRlIG1pc3NpbmcuaCBmb3IgbWlzc2luZyBfX2NvbXBhcl9mbl90CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCisgc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggNmRjNzUwZWJhLi5jZDFjYzEwOWYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTE3OSw2ICsxMTc5LDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKKysjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtDTVBfRklMRQorICNkZWZpbmUgS0NNUF9GSUxFIDAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK2luZGV4IGUyZWQ3NzZhMC4uNGQzZWJlYzRjIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCisrKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK0BAIC03LDYgKzcsNyBAQAorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmJ1Zi5oIgorICNpbmNsdWRlICJ1dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyAvKgorICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDFiYzRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gMWZhZGY4MDVjYjM5MWUzYmNiZDlhMDI4NmE5ZTRiN2FkYjllNzQyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMiBKdWwgMjAxOCAxMzozNDowOSArMDgwMAorU3ViamVjdDogW1BBVENIIDEyLzE5XSBmaXggbWlzc2luZyBvZiBfX3JlZ2lzdGVyX2F0Zm9yayBmb3Igbm9uLWdsaWJjIGJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworaW5kZXggMGE0ZjkxN2NiLi4zNTQzYmMwNDUgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYworQEAgLTIyLDYgKzIyLDkgQEAKKyAjaWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICisgI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CisgI2VuZGlmCisrI2lmbmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8cHRocmVhZC5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImFyY2hpdGVjdHVyZS5oIgorQEAgLTExNTAsMTEgKzExNTMsMTUgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKKyAgICAgICAgIGNhY2hlZF9waWQgPSBDQUNIRURfUElEX1VOU0VUOworIH0KKyAKKysjaWZkZWYgX19HTElCQ19fCisgLyogV2UgdXNlIGdsaWJjIF9fcmVnaXN0ZXJfYXRmb3JrKCkgKyBfX2Rzb19oYW5kbGUgZGlyZWN0bHkgaGVyZSwgYXMgdGhleSBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBnbGliYworICAqIGhlYWRlcnMuIF9fcmVnaXN0ZXJfYXRmb3JrKCkgaXMgbW9zdGx5IGVxdWl2YWxlbnQgdG8gcHRocmVhZF9hdGZvcmsoKSwgYnV0IGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBsaW5rIGFnYWluc3QKKyAgKiBsaWJwdGhyZWFkLCBhcyBpdCBpcyBwYXJ0IG9mIGdsaWJjIGFueXdheS4gKi8KKyBleHRlcm4gaW50IF9fcmVnaXN0ZXJfYXRmb3JrKHZvaWQgKCpwcmVwYXJlKSAodm9pZCksIHZvaWQgKCpwYXJlbnQpICh2b2lkKSwgdm9pZCAoKmNoaWxkKSAodm9pZCksIHZvaWQgKiBfX2Rzb19oYW5kbGUpOworIGV4dGVybiB2b2lkKiBfX2Rzb19oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKF9fd2Vha19fKSk7CisrI2Vsc2UKKysjZGVmaW5lIF9fcmVnaXN0ZXJfYXRmb3JrKHByZXBhcmUscGFyZW50LGNoaWxkLGRzbykgcHRocmVhZF9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQpCisrI2VuZGlmCisgCisgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CisgICAgICAgICBzdGF0aWMgYm9vbCBpbnN0YWxsZWQgPSBmYWxzZTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzIwNzg2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDQwNmE0Yzg2OTIzMTZlOGM3ZTE0Yzc4ZjlhODAyNjg5YmUzMDRhOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE3IE5vdiAyMDE3IDA5OjQ2OjAwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMzFdIHJ1bGVzOiB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzIGluIGlkZSBkZXZpY2VzCi0KLUZvcm1hdHRpbmcgSURFIHN0b3JhZ2UgZG9lcyBub3QgdHJpZ2dlciAiY2hhbmdlIiB1ZXZlbnRzLiBBcyBhIHJlc3VsdAotY2xpZW50cyB1c2luZyB1ZGV2IEFQSSBkb24ndCBnZXQgYW55IHVwZGF0ZXMgYWZ0ZXJ3YXJkcyBhbmQgZ2V0IG91dGRhdGVkCi1pbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlLgotLi4uCi1yb290QHFlbXV4ODYtNjQ6fiMgbWtmcy5leHQ0IC1GIC9kZXYvaGRhMQotQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCA0ayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcwotRmlsZXN5c3RlbSBVVUlEOiA5ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKLQotcm9vdEBxZW11eDg2LTY0On4jIGxzIC9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMgotbHM6IGNhbm5vdCBhY2Nlc3MgJy9kZXYvZGlzay9ieS11dWlkLzk4NzkxZWIyLTJiZjMtNDdhZC1iNGQ4LTRjZjdlOTE0ZWVlMic6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS4uLgotSW5jbHVkZSBoZCogaW4gYSBtYXRjaCBmb3Igd2F0Y2ggb3B0aW9uIGFzc2lnbm1lbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi0KLXFlbXUgYnkgZGVmYXVsdCBlbXVsYXRlcyBJREUgYW5kIHRoZSBsaW51eC15b2N0byBrZXJuZWwocykgdXNlCi1DT05GSUdfSURFIGluc3RlYWQgb2YgdGhlIG1vcmUgbW9kZXJuIGxpYnNhdGEsIHNvIGRpc2tzIGFwcGVhciBhcwotL2Rldi9oZCouIEEgc2ltaWxhciBwYXRjaCByZWplY3RlZCBieSB1cHN0cmVhbSBiZWNhdXNlIENPTkZJR19JREUKLWlzIGRlcHJlY2F0ZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHJ1bGVzLzYwLWJsb2NrLnJ1bGVzIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcnVsZXMvNjAtYmxvY2sucnVsZXMgYi9ydWxlcy82MC1ibG9jay5ydWxlcwotaW5kZXggMzQzZmMwNmY4Li5iNTIzN2RhYzQgMTAwNjQ0Ci0tLS0gYS9ydWxlcy82MC1ibG9jay5ydWxlcwotKysrIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKLUBAIC04LDQgKzgsNCBAQCBBQ1RJT049PSJhZGQiLCBTVUJTWVNURU09PSJtb2R1bGUiLCBLRVJORUw9PSJibG9jayIsIEFUVFJ7cGFyYW1ldGVycy9ldmVudHNfZGZsXwotIEFDVElPTj09ImNoYW5nZSIsIFNVQlNZU1RFTT09InNjc2kiLCBFTlZ7REVWVFlQRX09PSJzY3NpX2RldmljZSIsIFRFU1Q9PSJibG9jayIsIEFUVFJ7YmxvY2svKi91ZXZlbnR9PSJjaGFuZ2UiCi0gCi0gIyB3YXRjaCBtZXRhZGF0YSBjaGFuZ2VzLCBjYXVzZWQgYnkgdG9vbHMgY2xvc2luZyB0aGUgZGV2aWNlIG5vZGUgd2hpY2ggd2FzIG9wZW5lZCBmb3Igd3JpdGluZwotLUFDVElPTiE9InJlbW92ZSIsIFNVQlNZU1RFTT09ImJsb2NrIiwgS0VSTkVMPT0ibG9vcCp8bnZtZSp8c2QqfHZkKnx4dmQqfHBtZW0qfG1tY2JsayoiLCBPUFRJT05TKz0id2F0Y2giCi0rQUNUSU9OIT0icmVtb3ZlIiwgU1VCU1lTVEVNPT0iYmxvY2siLCBLRVJORUw9PSJsb29wKnxudm1lKnxzZCp8dmQqfHh2ZCp8cG1lbSp8bW1jYmxrKnxoZCoiLCBPUFRJT05TKz0id2F0Y2giCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YjNjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApAQCAtMCwwICsxLDkwIEBACitGcm9tIGEwYWMwY2ZkOTBhZjY0MzFjNjRkMWIyNzZmNDIyYTIwOTJkNTY5YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDIgSnVsIDIwMTggMTM6NDQ6MjEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xOV0gVXNlIHVpbnRtYXhfdCBmb3IgaGFuZGxpbmcgcmxpbV90CisKK1BSSXV7MzIsNjR9IGlzIG5vdCByaWdodCBmb3JtYXQgdG8gcmVwcmVzZW50IHJsaW1fdCB0eXBlCit0aGVyZWZvcmUgdXNlICVqdSBhbmQgdHlwZWNhc3QgdGhlIHJsaW1fdCB2YXJpYWJsZXMgdG8KK3VpbnRtYXhfdC4KKworRml4ZXMgcG9ydGFibGlsaXR5IGVycm9ycyBsaWtlCisKK2V4ZWN1dGUuYzozNDQ2OjM2OiBlcnJvcjogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAncmxpbV90IHtha2EgbG9uZyBsb25nIHVuc2lnbmVkIGludH0nIFstV2Vycm9yPWZvcm1hdD1dCit8ICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAiIFJMSU1fRk1UICJcbiIsCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9wdWxsLzcxOTldCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8IDggLS0tLS0tLS0KKyBzcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyB8IDggKysrKy0tLS0KKyBzcmMvY29yZS9leGVjdXRlLmMgICAgICB8IDggKysrKy0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitpbmRleCAxNjA1NTBjZDYuLjYxMjQ1ZDFlMyAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAorQEAgLTQzLDE0ICs0Myw2IEBACisgIyAgZGVmaW5lIFBSSV9USU1FWCAibGkiCisgI2VuZGlmCisgCistI2lmIFNJWkVPRl9STElNX1QgPT0gOAorLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTY0CistI2VsaWYgU0laRU9GX1JMSU1fVCA9PSA0CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1MzIKKy0jZWxzZQorLSMgIGVycm9yIFVua25vd24gcmxpbV90IHNpemUKKy0jZW5kaWYKKy0KKyAjaWYgU0laRU9GX0RFVl9UID09IDgKKyAjICBkZWZpbmUgREVWX0ZNVCAiJSIgUFJJdTY0CisgI2VsaWYgU0laRU9GX0RFVl9UID09IDQKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitpbmRleCBiZTFiYTYxNWUuLmUzMjhjZTQ5OSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYworQEAgLTI5OSwxMyArMjk5LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CisgICAgICAgICBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkgJiYgcmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCisgICAgICAgICAgICAgICAgIHMgPSBzdHJkdXAoImluZmluaXR5Iik7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6IiBSTElNX0ZNVCwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiaW5maW5pdHk6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fbWF4ID49IFJMSU1fSU5GSU5JVFkpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjppbmZpbml0eSIsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTppbmZpbml0eSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA9PSBybC0+cmxpbV9tYXgpCistICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQsIHJsLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyKTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOiIgUkxJTV9GTVQsIHJsLT5ybGltX2N1ciwgcmwtPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fY3VyLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgCisgICAgICAgICBpZiAoIXMpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworaW5kZXggOGFjNjlkMWEwLi5lZmVkZjM4NDIgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2V4ZWN1dGUuYworQEAgLTM5NzYsMTAgKzM5NzYsMTAgQEAgdm9pZCBleGVjX2NvbnRleHRfZHVtcChjb25zdCBFeGVjQ29udGV4dCAqYywgRklMRSogZiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisgCisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkxJTV9OTElNSVRTOyBpKyspCisgICAgICAgICAgICAgICAgIGlmIChjLT5ybGltaXRbaV0pIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICJMaW1pdCVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7CistICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiTGltaXQlcyVzU29mdDogIiBSTElNX0ZNVCAiXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICJMaW1pdCVzJXM6ICVqdVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICJMaW1pdCVzJXNTb2Z0OiAlanVcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM5Mjc4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMxICswLDAgQEAKLUZyb20gNTgwZDIzY2YwYjMyZTM2YThmYjk2NzEwMzM2ZmZlZjQzMmIzYzdjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTA6NTggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIGZhbGxiYWNrIHBhcnNlX3ByaW50Zl9mb3JtYXQgaW1wbGVtZW50YXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIHNyYy9iYXNpYy9tZXNvbi5idWlsZCAgICAgICAgICAgfCAgIDQgKwotIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggfCAgNTcgKysrKysrKysrCi0gc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCAgICAgICAgICB8ICAgMiArLQotIHNyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jICAgICAgfCAgIDIgKy0KLSA2IGZpbGVzIGNoYW5nZWQsIDMzNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDk0YTE2NzEyYi4uNGVhYmFhZmU4IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNjIwLDYgKzYyMCw3IEBAIGZvcmVhY2ggaGVhZGVyIDogWydjcnlwdC5oJywKLSAgICAgICAgICAgICAgICAgICAnbGludXgvYnRyZnMuaCcsCi0gICAgICAgICAgICAgICAgICAgJ2xpbnV4L21lbWZkLmgnLAotICAgICAgICAgICAgICAgICAgICdsaW51eC92bV9zb2NrZXRzLmgnLAotKyAgICAgICAgICAgICAgICAgICdwcmludGYuaCcsCi0gICAgICAgICAgICAgICAgICAgJ3N5cy9hdXh2LmgnLAotICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKLSAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCi1pbmRleCA0NGNkMzFlY2IuLjQzNWM2ZWUwMiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCi1AQCAtMzEwLDYgKzMxMCwxMCBAQCBlbmRmb3JlYWNoCi0gCi0gYmFzaWNfc291cmNlcyArPSBbbWlzc2luZ19oXSArIGdlbmVyYXRlZF9ncGVyZl9oZWFkZXJzCi0gCi0raWYgY29uZi5nZXQoJ0hBVkVfUFJJTlRGX0gnKSAhPSAxCi0rICAgICAgICBiYXNpY19zb3VyY2VzICs9IFtmaWxlcygncGFyc2UtcHJpbnRmLWZvcm1hdC5jJyldCi0rZW5kaWYKLSsKLSBsaWJiYXNpYyA9IHN0YXRpY19saWJyYXJ5KAotICAgICAgICAgJ2Jhc2ljJywKLSAgICAgICAgIGJhc2ljX3NvdXJjZXMsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjQ5NDM3ZTU0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwotQEAgLTAsMCArMSwyNzMgQEAKLSsvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCi0rCi0rLyoqKgotKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KLSsKLSsgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgotKwotKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBtdXNsIEMgbGlicmFyeQotKyAgQ29weXJpZ2h0IDIwMDUtMjAxNCBSaWNoIEZlbGtlciwgZXQgYWwuCi0rCi0rICBzeXN0ZW1kIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgIHN5c3RlbWQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCi0rICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsqKiovCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX25vbmFyZyhjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9IHdoaWxlICgqZm10KysgIT0gJyUnKTsKLSsgICAgICAgIHJldHVybiBmbXQ7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX251bShjb25zdCBjaGFyICpmbXQpCi0rewotKyAgICAgICAgZm9yICg7KmZtdCA+PSAnMCcgJiYgKmZtdCA8PSAnOSc7IGZtdCsrKQotKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOwotKyAgICAgICAgcmV0dXJuIGZtdDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfYXJnbihjb25zdCBjaGFyICpmbXQsIHNpemVfdCAqYXJnKQotK3sKLSsgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBmbXQ7Ci0rICAgICAgICBzaXplX3QgdmFsID0gMDsKLSsKLSsgICAgICAgIGlmICgqcCA8ICcxJyB8fCAqcCA+ICc5JykKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKLSsgICAgICAgIGRvIHsKLSsgICAgICAgICAgICAgICAgdmFsID0gMTAqdmFsICsgKCpwKysgLSAnMCcpOwotKyAgICAgICAgfSB3aGlsZSAoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7Ci0rCi0rICAgICAgICBpZiAoKnAgIT0gJyQnKQotKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OwotKyAgICAgICAgKmFyZyA9IHZhbDsKLSsgICAgICAgIHJldHVybiBwKzE7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdW1lX2ZsYWdzKGNvbnN0IGNoYXIgKmZtdCkKLSt7Ci0rICAgICAgICB3aGlsZSAoMSkgewotKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpmbXQpIHsKLSsgICAgICAgICAgICAgICAgY2FzZSAnIyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJzAnOgotKyAgICAgICAgICAgICAgICBjYXNlICctJzoKLSsgICAgICAgICAgICAgICAgY2FzZSAnICc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJysnOgotKyAgICAgICAgICAgICAgICBjYXNlICdcJyc6Ci0rICAgICAgICAgICAgICAgIGNhc2UgJ0knOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7Ci0rICAgICAgICB9Ci0rfQotKwotK2VudW0gc3RhdGUgewotKyAgICAgICAgQkFSRSwKLSsgICAgICAgIExQUkUsCi0rICAgICAgICBMTFBSRSwKLSsgICAgICAgIEhQUkUsCi0rICAgICAgICBISFBSRSwKLSsgICAgICAgIEJJR0xQUkUsCi0rICAgICAgICBaVFBSRSwKLSsgICAgICAgIEpQUkUsCi0rICAgICAgICBTVE9QCi0rfTsKLSsKLStlbnVtIHR5cGUgewotKyAgICAgICAgTk9ORSwKLSsgICAgICAgIFBUUiwKLSsgICAgICAgIElOVCwKLSsgICAgICAgIFVJTlQsCi0rICAgICAgICBVTExPTkcsCi0rICAgICAgICBMT05HLAotKyAgICAgICAgVUxPTkcsCi0rICAgICAgICBTSE9SVCwKLSsgICAgICAgIFVTSE9SVCwKLSsgICAgICAgIENIQVIsCi0rICAgICAgICBVQ0hBUiwKLSsgICAgICAgIExMT05HLAotKyAgICAgICAgU0laRVQsCi0rICAgICAgICBJTUFYLAotKyAgICAgICAgVU1BWCwKLSsgICAgICAgIFBESUZGLAotKyAgICAgICAgVUlQVFIsCi0rICAgICAgICBEQkwsCi0rICAgICAgICBMREJMLAotKyAgICAgICAgTUFYVFlQRQotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHBhX3R5cGVzW01BWFRZUEVdID0gewotKyAgICAgICAgW05PTkVdICAgPSBQQV9JTlQsCi0rICAgICAgICBbUFRSXSAgICA9IFBBX1BPSU5URVIsCi0rICAgICAgICBbSU5UXSAgICA9IFBBX0lOVCwKLSsgICAgICAgIFtVSU5UXSAgID0gUEFfSU5ULAotKyAgICAgICAgW1VMTE9OR10gPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtMT05HXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAotKyAgICAgICAgW1VMT05HXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbU0hPUlRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbVVNIT1JUXSA9IFBBX0lOVCB8IFBBX0ZMQUdfU0hPUlQsCi0rICAgICAgICBbQ0hBUl0gICA9IFBBX0NIQVIsCi0rICAgICAgICBbVUNIQVJdICA9IFBBX0NIQVIsCi0rICAgICAgICBbTExPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1NJWkVUXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCi0rICAgICAgICBbSU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAotKyAgICAgICAgW1VNQVhdICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKLSsgICAgICAgIFtQRElGRl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCi0rICAgICAgICBbVUlQVFJdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKLSsgICAgICAgIFtEQkxdICAgID0gUEFfRE9VQkxFLAotKyAgICAgICAgW0xEQkxdICAgPSBQQV9ET1VCTEUgfCBQQV9GTEFHX0xPTkdfRE9VQkxFCi0rfTsKLSsKLSsjZGVmaW5lIFMoeCkgWyh4KS0nQSddCi0rI2RlZmluZSBFKHgpIChTVE9QICsgKHgpKQotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHN0YXRlc1tdWyd6Jy0nQScrMV0gPSB7Ci0rICAgICAgICB7IC8qIDA6IGJhcmUgdHlwZXMgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTlQpLCBTKCdpJykgPSBFKElOVCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUlOVCksUygndScpID0gRShVSU5UKSxTKCd4JykgPSBFKFVJTlQpLCBTKCdYJykgPSBFKFVJTlQpLAotKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKERCTCksIFMoJ2YnKSA9IEUoREJMKSwgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksIFMoJ0YnKSA9IEUoREJMKSwgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKENIQVIpLFMoJ0MnKSA9IEUoSU5UKSwKLSsgICAgICAgICAgICAgICAgUygncycpID0gRShQVFIpLCBTKCdTJykgPSBFKFBUUiksIFMoJ3AnKSA9IEUoVUlQVFIpLFMoJ24nKSA9IEUoUFRSKSwKLSsgICAgICAgICAgICAgICAgUygnbScpID0gRShOT05FKSwKLSsgICAgICAgICAgICAgICAgUygnbCcpID0gTFBSRSwgICBTKCdoJykgPSBIUFJFLCBTKCdMJykgPSBCSUdMUFJFLAotKyAgICAgICAgICAgICAgICBTKCd6JykgPSBaVFBSRSwgIFMoJ2onKSA9IEpQUkUsIFMoJ3QnKSA9IFpUUFJFCi0rICAgICAgICB9LCB7IC8qIDE6IGwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShMT05HKSwgUygnaScpID0gRShMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTE9ORyksUygndScpID0gRShVTE9ORyksUygneCcpID0gRShVTE9ORyksUygnWCcpID0gRShVTE9ORyksCi0rICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgIFMoJ2YnKSA9IEUoREJMKSwgIFMoJ2cnKSA9IEUoREJMKSwgIFMoJ2EnKSA9IEUoREJMKSwKLSsgICAgICAgICAgICAgICAgUygnRScpID0gRShEQkwpLCAgUygnRicpID0gRShEQkwpLCAgUygnRycpID0gRShEQkwpLCAgUygnQScpID0gRShEQkwpLAotKyAgICAgICAgICAgICAgICBTKCdjJykgPSBFKElOVCksICBTKCdzJykgPSBFKFBUUiksICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2wnKSA9IExMUFJFCi0rICAgICAgICB9LCB7IC8qIDI6IGxsLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoTExPTkcpLCBTKCdpJykgPSBFKExMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbycpID0gRShVTExPTkcpLFMoJ3UnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShVTExPTkcpLFMoJ1gnKSA9IEUoVUxMT05HKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDM6IGgtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZCcpID0gRShTSE9SVCksIFMoJ2knKSA9IEUoU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVTSE9SVCksUygndScpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVTSE9SVCksUygnWCcpID0gRShVU0hPUlQpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUiksCi0rICAgICAgICAgICAgICAgIFMoJ2gnKSA9IEhIUFJFCi0rICAgICAgICB9LCB7IC8qIDQ6IGhoLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoQ0hBUiksIFMoJ2knKSA9IEUoQ0hBUiksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVUNIQVIpLFMoJ3UnKSA9IEUoVUNIQVIpLAotKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVDSEFSKSxTKCdYJykgPSBFKFVDSEFSKSwKLSsgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCi0rICAgICAgICB9LCB7IC8qIDU6IEwtcHJlZml4ZWQgKi8KLSsgICAgICAgICAgICAgICAgUygnZScpID0gRShMREJMKSxTKCdmJykgPSBFKExEQkwpLFMoJ2cnKSA9IEUoTERCTCksIFMoJ2EnKSA9IEUoTERCTCksCi0rICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoTERCTCksUygnRicpID0gRShMREJMKSxTKCdHJykgPSBFKExEQkwpLCBTKCdBJykgPSBFKExEQkwpLAotKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKLSsgICAgICAgIH0sIHsgLyogNjogei0gb3IgdC1wcmVmaXhlZCAoYXNzdW1lZCB0byBiZSBzYW1lIHNpemUpICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoUERJRkYpLFMoJ2knKSA9IEUoUERJRkYpLAotKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFNJWkVUKSxTKCd1JykgPSBFKFNJWkVUKSwKLSsgICAgICAgICAgICAgICAgUygneCcpID0gRShTSVpFVCksUygnWCcpID0gRShTSVpFVCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfSwgeyAvKiA3OiBqLXByZWZpeGVkICovCi0rICAgICAgICAgICAgICAgIFMoJ2QnKSA9IEUoSU1BWCksIFMoJ2knKSA9IEUoSU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVU1BWCksIFMoJ3UnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVU1BWCksIFMoJ1gnKSA9IEUoVU1BWCksCi0rICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQotKyAgICAgICAgfQotK307Ci0rCi0rc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcykKLSt7Ci0rICAgICAgICBzaXplX3QgaSA9IDA7Ci0rICAgICAgICBzaXplX3QgbGFzdCA9IDA7Ci0rCi0rICAgICAgICBtZW1zZXQodHlwZXMsIDAsIG4pOwotKwotKyAgICAgICAgd2hpbGUgKDEpIHsKLSsgICAgICAgICAgICAgICAgc2l6ZV90IGFyZzsKLSsgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHN0YXRlOwotKwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX25vbmFyZyhmbXQpOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnXDAnKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnJScpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBhcmcgPSAwOwotKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10LCAmYXJnKTsKLSsgICAgICAgICAgICAgICAgLyogZmxhZ3MgKi8KLSsgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9mbGFncyhmbXQpOwotKyAgICAgICAgICAgICAgICAvKiB3aWR0aCAqLwotKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgd2FyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gY29uc3VtZV9hcmduKGZtdCsxLCAmd2FyZyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPiBsYXN0KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHdhcmc7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdhcmcgPD0gbiAmJiB0eXBlc1t3YXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1t3YXJnLTFdID0gSU5UOwotKyAgICAgICAgICAgICAgICB9IGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAvKiBwcmVjaXNpb24gKi8KLSsgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy4nKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyonKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyZyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZwYXJnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID09IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmcgPSArK2k7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSBwYXJnOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPD0gbiAmJiB0eXBlc1twYXJnLTFdID09IE5PTkUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3BhcmctMV0gPSBJTlQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICctJykKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX251bShmbXQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAvKiBsZW5ndGggbW9kaWZpZXIgYW5kIGNvbnZlcnNpb24gc3BlY2lmaWVyICovCi0rICAgICAgICAgICAgICAgIHN0YXRlID0gQkFSRTsKLSsgICAgICAgICAgICAgICAgZG8gewotKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICpmbXQrKzsKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICdBJyB8fCBjID4gJ3onKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZXNbc3RhdGVdUyhjKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9IHdoaWxlIChzdGF0ZSA8IFNUT1ApOwotKwotKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gRShOT05FKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9ICsraTsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA+IGxhc3QpCi0rICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGFyZzsKLSsgICAgICAgICAgICAgICAgaWYgKGFyZyA8PSBuKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW2FyZy0xXSA9IHN0YXRlIC0gU1RPUDsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChsYXN0ID4gbikKLSsgICAgICAgICAgICAgICAgbGFzdCA9IG47Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGFzdDsgaSsrKQotKyAgICAgICAgICAgICAgICB0eXBlc1tpXSA9IHBhX3R5cGVzW3R5cGVzW2ldXTsKLSsKLSsgICAgICAgIHJldHVybiBsYXN0OwotK30KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNDdiZTc1MjJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCi1AQCAtMCwwICsxLDU3IEBACi0rLyotKi0gTW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDg7IGluZGVudC10YWJzLW1vZGU6IG5pbCAtKi0qLwotKwotKy8qKioKLSsgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbWQuCi0rCi0rICBDb3B5cmlnaHQgMjAxNCBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLSsKLSsgIFdpdGggcGFydHMgZnJvbSB0aGUgR05VIEMgTGlicmFyeQotKyAgQ29weXJpZ2h0IDE5OTEtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKLSsgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKyoqKi8KLSsKLSsjcHJhZ21hIG9uY2UKLSsKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0rI2lmIEhBVkVfUFJJTlRGX0gKLSsjaW5jbHVkZSA8cHJpbnRmLmg+Ci0rI2Vsc2UKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rZW51bSB7CQkJCS8qIEMgdHlwZTogKi8KLSsgIFBBX0lOVCwJCQkvKiBpbnQgKi8KLSsgIFBBX0NIQVIsCQkJLyogaW50LCBjYXN0IHRvIGNoYXIgKi8KLSsgIFBBX1dDSEFSLAkJCS8qIHdpZGUgY2hhciAqLwotKyAgUEFfU1RSSU5HLAkJCS8qIGNvbnN0IGNoYXIgKiwgYSAnXDAnLXRlcm1pbmF0ZWQgc3RyaW5nICovCi0rICBQQV9XU1RSSU5HLAkJCS8qIGNvbnN0IHdjaGFyX3QgKiwgd2lkZSBjaGFyYWN0ZXIgc3RyaW5nICovCi0rICBQQV9QT0lOVEVSLAkJCS8qIHZvaWQgKiAqLwotKyAgUEFfRkxPQVQsCQkJLyogZmxvYXQgKi8KLSsgIFBBX0RPVUJMRSwJCQkvKiBkb3VibGUgKi8KLSsgIFBBX0xBU1QKLSt9OwotKwotKy8qIEZsYWcgYml0cyB0aGF0IGNhbiBiZSBzZXQgaW4gYSB0eXBlIHJldHVybmVkIGJ5IGBwYXJzZV9wcmludGZfZm9ybWF0Jy4gICovCi0rI2RlZmluZQlQQV9GTEFHX01BU0sJCTB4ZmYwMAotKyNkZWZpbmUJUEFfRkxBR19MT05HX0xPTkcJKDEgPDwgOCkKLSsjZGVmaW5lCVBBX0ZMQUdfTE9OR19ET1VCTEUJUEFfRkxBR19MT05HX0xPTkcKLSsjZGVmaW5lCVBBX0ZMQUdfTE9ORwkJKDEgPDwgOSkKLSsjZGVmaW5lCVBBX0ZMQUdfU0hPUlQJCSgxIDw8IDEwKQotKyNkZWZpbmUJUEFfRkxBR19QVFIJCSgxIDw8IDExKQotKwotK3NpemVfdCBwYXJzZV9wcmludGZfZm9ybWF0KGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90IG4sIGludCAqdHlwZXMpOwotKwotKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKLWluZGV4IGRiZmFmYmEyNi4uODAzODM4MGQ2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAotQEAgLTIwLDEyICsyMCwxMiBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpbmNsdWRlICJtYWNyby5oIgotKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCi0gCi0gI2RlZmluZSB4c3ByaW50ZihidWYsIGZtdCwgLi4uKSBcCi0gICAgICAgICBhc3NlcnRfbWVzc2FnZV9zZSgoc2l6ZV90KSBzbnByaW50ZihidWYsIEVMRU1FTlRTT0YoYnVmKSwgZm10LCBfX1ZBX0FSR1NfXykgPCBFTEVNRU5UU09GKGJ1ZiksICJ4c3ByaW50ZjogIiAjYnVmICJbXSBtdXN0IGJlIGJpZyBlbm91Z2giKQotZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLWluZGV4IDczMzI5YmEwMi4uNzBiYjllMGU4IDEwMDY0NAotLS0tIGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLSsrKyBiL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCi1AQCAtMjAsNyArMjAsNiBAQAotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotLSNpbmNsdWRlIDxwcmludGYuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSAjaW5jbHVkZSA8c3lzL3VuLmg+Ci1AQCAtMzksNiArMzgsNyBAQAotICNpbmNsdWRlICJzdGRpby11dGlsLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAicGFyc2UtcHJpbnRmLWZvcm1hdC5oIgotIAotICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQotIAotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1OGE2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBjYjU5YjNhZjU0ZmIzYmJkNGQ4MjY0ZmVmOTE5ODEwYWY4ZDA4ZDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxNDowMTozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDE0LzE5XSBmaXggbWlzc2luZyBVTE9OR19MT05HX01BWCBkZWZpbml0aW9uIGluIGNhc2Ugb2YgbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2xdCisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9iYXNpYy9taXNzaW5nLmggfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggY2QxY2MxMDlmLi4xNDQwNThhMWEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtNTQsNiArNTQsMTAgQEAgc3RydWN0IHNvY2thZGRyX3ZtIHsKKyB9OworICNlbmRpZiAvKiAhSEFWRV9MSU5VWF9WTV9TT0NLRVRTX0ggKi8KKyAKKysjaWZuZGVmIFVMT05HX0xPTkdfTUFYCisrI2RlZmluZSBVTE9OR19MT05HX01BWCBVTExPTkdfTUFYCisrI2VuZGlmCisrCisgI2lmbmRlZiBSTElNSVRfUlRUSU1FCisgI2RlZmluZSBSTElNSVRfUlRUSU1FIDE1CisgI2VuZGlmCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNjJjYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE4ICswLDAgQEAKLUZyb20gMzNiZTkwNTIzMTVjYzRlYzhlOTI5ZmEyMzhlMWYwY2MwMTYxYWQwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MTU6MjggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3Npbmcgc3RybmR1cGEKLQotaW5jbHVkZSBtaXNzaW5nLmggIGZvciBkZWZpbml0aW9uIG9mIHN0cm5kdXBhCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCAgICAgfCAxMSArKysrKysrKysrKwotIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgIHwgIDEgKwotIHNyYy9iYXNpYy9wYXJzZS11dGlsLmMgIHwgIDEgKwotIHNyYy9iYXNpYy9wcm9jZnMtdXRpbC5jIHwgIDEgKwotIHNyYy9zaGFyZWQvcGFnZXIuYyAgICAgIHwgIDEgKwotIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgIHwgIDEgKwotIDcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNGVhYmFhZmU4Li4xMjgxMWIzZjMgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC01MjUsNiArNTI1LDcgQEAgZm9yZWFjaCBpZGVudCA6IFsKLSAgICAgICAgIFsnYnBmJywgICAgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dW5pc3RkLmg+JycnXSwKLSAgICAgICAgIFsnZXhwbGljaXRfYnplcm8nICwgICAnJycjaW5jbHVkZSA8c3RyaW5nLmg+JycnXSwKLSsgICAgICAgIFsnc3RybmR1cGEnICwgICAgICAgICAnJycjaW5jbHVkZSA8c3RyaW5nLmg+JycnXSwKLSBdCi0gCi0gICAgICAgICBoYXZlID0gY2MuaGFzX2Z1bmN0aW9uKGlkZW50WzBdLCBwcmVmaXggOiBpZGVudFsxXSwgYXJncyA6ICctRF9HTlVfU09VUkNFJykKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggODRkNmQ5MTY3Li4wN2E4YzgzNjQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTE4Nyw2ICsxMTg3LDE3IEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKLSB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OwotICNlbmRpZgotIAotKyNpZiAhIEhBVkVfU1RSTkRVUEEKLSsjZGVmaW5lIHN0cm5kdXBhKHMsIG4pIFwKLSsgICh7IFwKLSsgICAgY29uc3QgY2hhciAqX19vbGQgPSAocyk7IFwKLSsgICAgc2l6ZV90IF9fbGVuID0gc3RybmxlbihfX29sZCwgKG4pKTsgXAotKyAgICBjaGFyICpfX25ldyA9IChjaGFyICopYWxsb2NhKF9fbGVuICsgMSk7IFwKLSsgICAgX19uZXdbX19sZW5dID0gJ1wwJzsgXAotKyAgICAoY2hhciAqKW1lbWNweShfX25ldywgX19vbGQsIF9fbGVuKTsgXAotKyAgfSkKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORwotICNkZWZpbmUgS0VZQ1RMX0pPSU5fU0VTU0lPTl9LRVlSSU5HIDEKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWtkaXIuYyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1pbmRleCBkZTQ3NDZjODYuLmQ1MTUxOGE1YSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9ta2Rpci5jCi0rKysgYi9zcmMvYmFzaWMvbWtkaXIuYwotQEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5jbHVkZSAicGF0aC11dGlsLmgiCi0gI2luY2x1ZGUgInN0YXQtdXRpbC5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIGludCBta2Rpcl9zYWZlX2ludGVybmFsKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgYm9vbCBmb2xsb3dfc3ltbGluaywgbWtkaXJfZnVuY190IF9ta2RpcikgewotICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLWluZGV4IDJjMjI3NTNkZS4uOTc1MzM3MjFkIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgotICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIGludCBwYXJzZV9ib29sZWFuKGNvbnN0IGNoYXIgKnYpIHsKLSAgICAgICAgIGFzc2VydCh2KTsKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCi1pbmRleCA5YmI0MmNjN2IuLjIzYmJkOWU2NyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCi0rKysgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwotQEAgLTksNiArOSw3IEBACi0gI2luY2x1ZGUgInByb2Nmcy11dGlsLmgiCi0gI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgotIAotIGludCBwcm9jZnNfdGFza3NfZ2V0X2xpbWl0KHVpbnQ2NF90ICpyZXQpIHsKLSAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKnZhbHVlID0gTlVMTDsKLWRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLWluZGV4IDc1ZGIzYzk4NS4uODRmMDZiZjdkIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC9wYWdlci5jCi0rKysgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLUBAIC0zOSw2ICszOSw3IEBACi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0gI2luY2x1ZGUgInN0cnYuaCIKLSAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gc3RhdGljIHBpZF90IHBhZ2VyX3BpZCA9IDA7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLWluZGV4IGMzOGI3Y2M5OC4uOGVjNmJmMDhkIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotKysrIGIvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYwotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSAibWFjcm8uaCIKLSAjaW5jbHVkZSAidWlkLXJhbmdlLmgiCi0gI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCi0gCi0gc3RhdGljIGJvb2wgdWlkX3JhbmdlX2ludGVyc2VjdChVaWRSYW5nZSAqcmFuZ2UsIHVpZF90IHN0YXJ0LCB1aWRfdCBucikgewotICAgICAgICAgYXNzZXJ0KHJhbmdlKTsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUwOTQ3Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotRnJvbSBiNDVjZjQ5MjNjN2UxZjExNjU5MjVlOWI0ZDdkYjIxMDhmYWYyZWFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+Ci1EYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMzFdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAotIGRlZmluZWQKLQotSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCi1leHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCi0KLURvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKLQotQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQotIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQotIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotaW5kZXggNmU4MGExZTIzLi4zMTJiYjNmZDEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwotQEAgLTI4LDEzICsyOCwxOCBAQAotICNpbmNsdWRlICJtYWNyby5oIgotICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKLSAjaW5jbHVkZSAic3Rydi5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSAKLSBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgaW50IGs7Ci0gCi0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLwotICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKLS0KLSAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7Ci0gICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQotQEAgLTQ1LDEwICs1MCwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKLSAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCi0gICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKLS0KLSsjZW5kaWYKLSAgICAgICAgIGVycm5vID0gMDsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOwotLQotKyNlbHNlCi0rICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOwotKyNlbmRpZgotICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQotICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKLSAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKLUBAIC02MSw2ICs2OSwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgewotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSsKLSBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgewotICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307Ci0gICAgICAgICBpbnQgazsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYwotaW5kZXggYmQyZjhmY2ZkLi5hMTBjNzc0MjcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi1AQCAtMzAsNiArMzAsMTEgQEAKLSAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInJtLXJmLmgiCi0rLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQotKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KLSsjaWZuZGVmIEdMT0JfQlJBQ0UKLSsjZGVmaW5lIEdMT0JfQlJBQ0UgMAotKyNlbmRpZgotIAotIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgewotICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7Ci1AQCAtNTIsMjUgKzU3LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgewotIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgewotICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7Ci0gICAgICAgICBjb25zdCBjaGFyICpmbjsKLS0KLSAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKLSAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAotICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKLSAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCi0gICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKLSsjZW5kaWYKLSAgICAgICAgIH07Ci0tCi0gICAgICAgICBpbnQgcjsKLSAKLSAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7Ci0gCi0gICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKLSsjaWZkZWYgR0xPQl9BTFRESVJGVU5DCi0gICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKLSsjZWxzZQotKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKLSsjZW5kaWYKLSAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7Ci0gCi0gICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7Ci0rI2Vsc2UKLSsgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7Ci0rI2VuZGlmCi0gICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOwotIAotICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOwotZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLWluZGV4IDM4Y2JiNzM5Yy4uODhjYzU0M2YwIDEwMDY0NAotLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLSsrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCi1AQCAtNzYsNiArNzYsMTIgQEAKLSAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgotICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSAjaW5jbHVkZSAidXRpbC5oIgotKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKLSsgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCi0rI2lmbmRlZiBHTE9CX0JSQUNFCi0rI2RlZmluZSBHTE9CX0JSQUNFIDAKLSsjZW5kaWYKLSsKLSAKLSAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKLSAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQotQEAgLTEyODgsNyArMTI5NCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKLSAKLSBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7Ci0gICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7Ci0rI2lmZGVmIEdMT0JfQUxURElSRlVOQwotICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKLSsjZW5kaWYKLSAgICAgICAgIH07Ci0gICAgICAgICBpbnQgciA9IDAsIGs7Ci0gICAgICAgICBjaGFyICoqZm47Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2NhOWNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGIxMTEwOWVjYzQxMTEwYzUxOGE5OGI2YWMzOTYxMWZmODY0NzcwMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDE1LzE5XSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3Igc3RybmR1cGEKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKK2luZGV4IGRhOWYzMDA4Yi4uN2ZmMmRmZTBjIDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworQEAgLTYsNiArNiw3IEBACisgI2luY2x1ZGUgImhleGRlY29jdC5oIgorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgCisgc3RhdGljIHZvaWQgdGVzdF9oZXhjaGFyKHZvaWQpIHsKKyAgICAgICAgIGFzc2VydF9zZShoZXhjaGFyKDB4YSkgPT0gJ2EnKTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTMwMzdlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIGVmYzU3ODU2Zjk2MWMxZjNiZjAxNmM1MTFjNTNkOTkwZGI4YWJkZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6MzE6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8zMV0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAotIHR5cGVkZWYKLQotaW5jbHVkZSBtaXNzaW5nLmggZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCi0gc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggMDdhOGM4MzY0Li4xYWVlMzM0NmEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCi0rKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1AQCAtMTE2Miw2ICsxMTYyLDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKLSAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKLSsjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKLSt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIEtDTVBfRklMRQotICNkZWZpbmUgS0NNUF9GSUxFIDAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKLWluZGV4IDhiZWZmZmE2Ni4uYmNiODYwZjk1IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCi0rKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKLUBAIC0yNCw2ICsyNCw3IEBACi0gCi0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyYnVmLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSAvKgotICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDZhMzcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYzRiYmYzZWZlZmZmZTBhNGVmYWRiZjRlM2YwYWRiNTRkNzZmZTBlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MjU6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi8xOV0gdGVzdC1zaXplb2YuYzogRGlzYWJsZSB0ZXN0cyBmb3IgbWlzc2luZyB0eXBlZGVmcyBpbgorIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCitpbmRleCA3YTFlNDk2ZWQuLjM4NmIzMTRkNSAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKKysrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKK0BAIC00MCw4ICs0MCwxMCBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7CisgICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7CisgICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKKysjZW5kaWYKKyAKKyAgICAgICAgIGluZm8oZmxvYXQpOworICAgICAgICAgaW5mbyhkb3VibGUpOworQEAgLTU5LDcgKzYxLDkgQEAgaW50IG1haW4odm9pZCkgeworICAgICAgICAgaW5mbyhzc2l6ZV90KTsKKyAgICAgICAgIGluZm8odGltZV90KTsKKyAgICAgICAgIGluZm8odXNlY190KTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fdGltZV90KTsKKysjZW5kaWYKKyAgICAgICAgIGluZm8ocGlkX3QpOworICAgICAgICAgaW5mbyh1aWRfdCk7CisgICAgICAgICBpbmZvKGdpZF90KTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDljZmRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIGYyYjAxNzNjZDk4MDc4NjRkYjFlZjNiMTAyYWJhYTc2ZWYzN2U1MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjE5OjEyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMzFdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCi0KLUZpeGVzCi0vcGF0aC90by9zeXN0ZW1kL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL25ldGluZXQvaWZfZXRoZXIuaDoxMDE6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IGV0aGhkcicKLSBzdHJ1Y3QgZXRoaGRyIHsKLSAgICAgICAgXn5+fn5+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgfCAxICsKLSBzcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgICAgICAgICAgICAgICB8IDEgKwotIHNyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jICAgICAgICAgICAgIHwgMSArCi0gc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jICAgICAgICAgICAgICAgfCAxICsKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyAgICB8IDEgKwotIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi1pbmRleCAwZWU3ZDZmMGQuLmVmNzU4OTNhNiAxMDA2NDQKLS0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCi0rKysgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwotQEAgLTIxLDYgKzIxLDcgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KLSAjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2dlbmV0bGluay5oPgotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYyBiL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYwotaW5kZXggNGZjOWI2MTBhLi42MjhjNjFjNTcgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldGRldi90dW50YXAuYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxsaW51eC9pZl90dW4uaD4KLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi1pbmRleCA5OWRkNDE2MjkuLjkwNDA3YzlkOCAxMDA2NDQKLS0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCi0rKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwotQEAgLTE5LDYgKzE5LDcgQEAKLSAqKiovCi0gCi0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxsaW51eC9pZl9icmlkZ2UuaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotIAotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYwotaW5kZXggOWJkYWVmOGQ5Li45NDhmODljZjggMTAwNjQ0Ci0tLS0gYS9zcmMvdWRldi9uZXQvZXRodG9vbC11dGlsLmMKLSsrKyBiL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYwotQEAgLTE4LDYgKzE4LDcgQEAKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLSAKLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlIDxuZXQvaWYuaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi1pbmRleCA0MDE1OGUwYWYuLmIyNGIzZmNlOCAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi0rKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwotQEAgLTE4LDYgKzE4LDcgQEAKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLSAKLSsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgotICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCi0gI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCi0gI2luY2x1ZGUgImxvZy5oIgotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ3YzZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2gKQEAgLTAsMCArMSw5OSBAQAorRnJvbSA5MWJiNGY1YzljMTE0NjQ0NjhlOGQzZmE0NzQ2ZDk4ZDU5OTk3MjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgT2N0IDIwMTcgMTQ6MzM6MzAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8xOV0gZG9uJ3QgcGFzcyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcgdG8gZmFjY2Vzc2F0KCkKKworQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQKK3RoaW5nIHRvIGRvIGFuZCBpdCdzIG5vdCBwb3J0YWJsZSAobm90IHN1cHBvcnRlZCBieSBtdXNsKS4gU2VlOgorCisgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCisgIGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL211c2wvMjAxNS8wMi8wNS8yCisKK05vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZQorZGlzY3Vzc2lvbiBpbiB0aGUgbGlua3MgYWJvdmUgZG9lc24ndCBhcHBseS4gTm90ZSBhbHNvIHRoYXQKKyhjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbworb25seSBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgZmlsZSwgbm90IGFjY2VzcyBwZXJtaXNzaW9ucy4KK1RoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4gZmFjY2Vzc2F0KCkKK3dpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZSBiZWhhdmlvdXIKK2ZvciBicm9rZW4gc3ltbGlua3M7IGxhY2Nlc3MoKSBvbiBhIGJyb2tlbiBzeW1saW5rIHdpbGwgc3VjY2VlZCB3aXRoCisoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KKworVGhlIGxhY2Nlc3MoKSBtYWNyb3Mgd2FzIGFkZGVkIHRvIHN5c3RlbWQgc29tZSB0aW1lIGFnbyBhbmQgaXQncyBub3QKK2NsZWFyIGlmIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZQoranVzdCBoaXN0b3JpY2FsIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CistLS0KKyBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAoraW5kZXggMjg1NjY3NzNjLi4xNGI4NjRjYzUgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCitAQCAtMzIsNyArMzIsMjcgQEAgaW50IGZjaG1vZF9vcGF0aChpbnQgZmQsIG1vZGVfdCBtKTsKKyAKKyBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOworIAorLSNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCBBVF9TWU1MSU5LX05PRk9MTE9XKQorKy8qCisrICAgQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8KKysgICBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKysKKysgICAgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCisrICAgICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorKworKyAgIE5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZSBkaXNjdXNzaW9uIGluCisrICAgdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0IChjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMKKysgICBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvIG9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdAorKyAgIGFjY2VzcyBwZXJtaXNzaW9ucy4gVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbgorKyAgIGZhY2Nlc3NhdCgpIHdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZQorKyAgIGJlaGF2aW91ciBmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQKKysgICB3aXRoIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorKworKyAgIFRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90IGNsZWFyIGlmCisrICAgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlIGp1c3QgaGlzdG9yaWNhbAorKyAgIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPworKyovCisrCisrI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIDApCisgCisgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CisgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitpbmRleCA4OWQ3YTdkNTkuLjM0YjRhZDUzYSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKKysrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKK0BAIC01Myw3ICs1Myw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOworIAorICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7CistICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPj0gMCkKKysgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCAwKSA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7CitAQCAtNjEsNyArNjEsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworIAorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLworQEAgLTcyLDcgKzcyLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CisgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgMCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZDBkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA5N2ZlZDA3MTMyNTMzYTFiMmJjZTljNjBlMzA1YTVkMDlhZWUyZTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjcgTWF5IDIwMTggMDg6MzY6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8xOV0gRGVmaW5lIGdsaWJjIGNvbXBhdGlibGUgYmFzZW5hbWUoKSBmb3Igbm9uLWdsaWJjCisgc3lzdGVtcworCitGaXhlcyBidWlsZHMgd2l0aCBtdXNsLCBldmVuIHRob3VnaCBzeXN0ZW1kIGlzIGFkYW1hbnQgYWJvdXQKK3VzaW5nIG5vbi1wb3NpeCBiYXNlbmFtZSBpbXBsZW1lbnRhdGlvbiwgd2UgaGF2ZSBhIHdheSBvdXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCitpbmRleCA3ZjQxNDY1Y2MuLmNlZThhNWQ0MyAxMDA2NDQKKy0tLSBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCisrKysgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYworQEAgLTExLDYgKzExLDEwIEBACisgI2luY2x1ZGUgPGxpYmdlbi5oPgorICN1bmRlZiBiYXNlbmFtZQorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrI2RlZmluZSBiYXNlbmFtZShzcmMpIChzdHJyY2hyKHNyYywnLycpID8gc3RycmNocihzcmMsJy8nKSsxIDogc3JjKQorKyNlbmRpZgorKworICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImJ1cy1jb21tb24tZXJyb3JzLmgiCisgI2luY2x1ZGUgImJ1cy1pbnRlcm5hbC5oIgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItbWlzc2luZy1jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjdlZGY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNjkwZWVlZjk1OTBjN2VmMWQ5ZDJjMzFkOGMxZDVkODA3MWRhOGM0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjYgRmViIDIwMTggMTc6MjE6MTEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8zMV0gY2hlY2sgZm9yIG1pc3NpbmcgY2Fub25pY2FsaXplX2ZpbGVfbmFtZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICB8IDIgKysKLSBzcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggfCA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAxMjgxMWIzZjMuLmY2NTE1ZTk3YyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTUyMCw2ICs1MjAsOCBAQCBmb3JlYWNoIGlkZW50IDogWwotICAgICAgICAgWydrY21wJywgICAgICAgICAgICAgICcnJyNpbmNsdWRlIDxsaW51eC9rY21wLmg+JycnXSwKLSAgICAgICAgIFsna2V5Y3RsJywgICAgICAgICAgICAnJycjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGtleXV0aWxzLmg+JycnXSwKLSsgICAgICAgIFsnY2Fub25pY2FsaXplX2ZpbGVfbmFtZScsICcnJyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4nJyddLAotICAgICAgICAgWydjb3B5X2ZpbGVfcmFuZ2UnLCAgICcnJyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAotICAgICAgICAgWydicGYnLCAgICAgICAgICAgICAgICcnJyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotaW5kZXggYzkzOGQwZDk3Li4zMDhiOTQ3MmIgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotQEAgLTMxLDYgKzMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHBpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKLSB9Ci0gI2VuZGlmCi0gCi0rI2lmICFIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKLStzdGF0aWMgaW5saW5lIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqcGF0aCkgewotKyAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgsIE5VTEwpOwotK30KLSsjZW5kaWYKLSsKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotIAotICNpZiAhSEFWRV9NRU1GRF9DUkVBVEUKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDJmNGMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gODQ0MDM0OGJjYWMzNDI0OWNkZjZhYzJkY2FlOWFjNjZkM2M3MjdkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgNCBKdWwgMjAxOCAxNTowMDo0NCArMDgwMAorU3ViamVjdDogW1BBVENIIDE5LzE5XSBEbyBub3QgZGlzYWJsZSBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGoKKworT24gbXVzbCwgZGlzYWJsaW5nIGJ1ZmZlcmluZyB3aGVuIHdyaXRpbmcgdG8gb29tX3Njb3JlX2FkaiB3aWxsCitjYXVzZSB0aGUgZm9sbG93aW5nIGVycm9yLgorCisgIEZhaWxlZCB0byBhZGp1c3QgT09NIHNldHRpbmc6IEludmFsaWQgYXJndW1lbnQKKworVGhpcyBlcnJvciBhcHBlYXJzIGZvciBzeXN0ZW1kLXVkZXZkLnNlcnZpY2UgYW5kIGRidXMuc2VydmljZS4KK1RoaXMgaXMgYmVjYXVzZSBrZXJuZWwgcmVjZWl2ZXMgJy0nIGluc3RlYWQgb2YgdGhlIHdob2xlICctOTAwJworaWYgYnVmZmVyaW5nIGlzIGRpc2FibGVkLgorCitUaGlzIGlzIGxpYmMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMsIGFzIGdsaWJjIGRvZXMgbm90IGhhdmUgdGhpcyBpc3N1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK2luZGV4IDM1NDNiYzA0NS4uZDA1NzJlMDM0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCisrKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKK0BAIC0xNDczLDcgKzE0NzMsNyBAQCBpbnQgc2V0X29vbV9zY29yZV9hZGp1c3QoaW50IHZhbHVlKSB7CisgICAgICAgICBzcHJpbnRmKHQsICIlaSIsIHZhbHVlKTsKKyAKKyAgICAgICAgIHJldHVybiB3cml0ZV9zdHJpbmdfZmlsZSgiL3Byb2Mvc2VsZi9vb21fc2NvcmVfYWRqIiwgdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9TVFJJTkdfRklMRV9WRVJJRllfT05fRkFJTFVSRXxXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfU1RSSU5HX0ZJTEVfVkVSSUZZX09OX0ZBSUxVUkUpOworIH0KKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaW9wcmlvX2NsYXNzX3RhYmxlW10gPSB7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YjIxYTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy1pZi1uc3Mtc3lzdGVtZC1pcy1ub3QtZW5hYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBmNWYzMTM5MTVkNzhiYzQzZWI5NmUyYWFmYjhjZTNjZGEzMDRjMjc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAyNiBGZWIgMjAxOCAxNzoyNzo1NiArMDgwMAotU3ViamVjdDogW1BBVENIIDE5LzMxXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cyBpZiBuc3Mtc3lzdGVtZCBpcyBub3QgZW5hYmxlZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy90ZXN0L21lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAotaW5kZXggMWRiOGFhMTA3Li5kZjNhMWY1YzUgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC9tZXNvbi5idWlsZAotKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKLUBAIC02NDYsNyArNjQ2LDcgQEAgdGVzdHMgKz0gWwotICAgICAgICAgW1snc3JjL3Rlc3QvdGVzdC1uc3MuYyddLAotICAgICAgICAgIFtdLAotICAgICAgICAgIFtsaWJkbF0sCi0tICAgICAgICAgJycsICdtYW51YWwnXSwKLSsgICAgICAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJ21hbnVhbCddLAotIF0KLSAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc4Y2FiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gZGQ1M2RjOWI5NTQyY2JkMmMzOWEzOTA5Njk0MWRmZWQ3MGQwNjUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTAgSnVsIDIwMTggMTU6NDA6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyMC8yMF0gZGlzdGluZ3Vpc2ggWFNJLWNvbXBsaWFudCBzdHJlcnJvcl9yIGZyb20gR05VLXNwZWNpZmkKKyBzdHJlcnJvcl9yCisKK1hTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBhbmQgR05VLXNwZWNpZmkgc3RyZXJyb3JfciBhcmUgZGlmZmVyZW50LgorCisgICAgICAgaW50IHN0cmVycm9yX3IoaW50IGVycm51bSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAvKiBYU0ktY29tcGxpYW50ICovCisKKyAgICAgICBjaGFyICpzdHJlcnJvcl9yKGludCBlcnJudW0sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zmxlbik7CisgICAgICAgICAgICAgICAgICAgLyogR05VLXNwZWNpZmljICovCisKK1dlIG5lZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGVtLiBPdGhlcndpc2UsIHdlJ2xsIGdldCBhbiBpbnQgdmFsdWUKK2Fzc2lnbmVkIHRvIChjaGFyICopIHZhcmlhYmxlLCByZXN1bHRpbmcgaW4gc2VnbWVudCBmYXVsdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgICAgfCA1ICsrKysrCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworaW5kZXggNjViY2JjZDJlLi5hZWY4MGRkOGYgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK0BAIC0zMzcsNyArMzM3LDEyIEBAIHN0YXRpYyBpbnQgZmlsbF9pb3ZlY19wZXJyb3JfYW5kX3NlbmQoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IHNraXAsIHN0cnVjdCBpb3ZlCisgICAgICAgICAgICAgICAgIGNoYXIqIGo7CisgCisgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKysjaWZuZGVmIF9fR0xJQkNfXworKyAgICAgICAgICAgICAgICBzdHJlcnJvcl9yKF9zYXZlZF9lcnJub18sIGJ1ZmZlciArIDggKyBrLCBuIC0gOCAtIGspOworKyAgICAgICAgICAgICAgICBqID0gYnVmZmVyICsgOCArIGs7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgaiA9IHN0cmVycm9yX3IoX3NhdmVkX2Vycm5vXywgYnVmZmVyICsgOCArIGssIG4gLSA4IC0gayk7CisrI2VuZGlmCisgICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBlcnJvcltTVFJMRU4oIkVSUk5PPSIpICsgREVDSU1BTF9TVFJfTUFYKGludCkgKyAxXTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK2luZGV4IGVjMzU5YWMxMy4uZDJhYTg2Y2VhIDEwMDY0NAorLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKK0BAIC0zNjIsNyArMzYyLDEyIEBAIHN0YXRpYyB2b2lkIGJ1c19lcnJvcl9zdHJlcnJvcihzZF9idXNfZXJyb3IgKmUsIGludCBlcnJvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAKKyAgICAgICAgICAgICAgICAgZXJybm8gPSAwOworKyNpZm5kZWYgX19HTElCQ19fCisrICAgICAgICAgICAgICAgIHN0cmVycm9yX3IoZXJyb3IsIG0sIGspOworKyAgICAgICAgICAgICAgICB4ID0gbTsKKysjZWxzZQorICAgICAgICAgICAgICAgICB4ID0gc3RyZXJyb3JfcihlcnJvciwgbSwgayk7CisrI2VuZGlmCisgICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UgfHwgc3RybGVuKHgpID49IGsgLSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBrICo9IDI7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ0OWNmZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9yLXN0cm5kdXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBkNjNkMmZlZGNkODBlNThlZTUzNjU1YWVhZjI4MzZkNGIwYTE0NjUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTI6MzM6MjIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8zMV0gdGVzdC1oZXhkZWNvY3QuYzogSW5jbHVkZSBtaXNzaW5nLmggZm9yIHN0cm5kdXBhCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKLWluZGV4IDNlMjVhMGJhYy4uYWIzZTUwOGYxIDEwMDY0NAotLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYwotQEAgLTI0LDYgKzI0LDcgQEAKLSAjaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCi0gI2luY2x1ZGUgIm1hY3JvLmgiCi0gI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKLSAKLSBzdGF0aWMgdm9pZCB0ZXN0X2hleGNoYXIodm9pZCkgewotICAgICAgICAgYXNzZXJ0X3NlKGhleGNoYXIoMHhhKSA9PSAnYScpOwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjhmMjczCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSA2ODdhNWFmOGRjNWQzOGY5MThhNmNlMDhmZWQ1Mjk3MjM0YmY4MzQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMiBNYXIgMjAxOCAxODowMDoxNyAtMDgwMAorU3ViamVjdDogW1BBVENIXSBIaWRlIF9fc3RhcnRfQlVTX0VSUk9SX01BUCBhbmQgX19zdG9wX0JVU19FUlJPUl9NQVAKKworZm9yIGN1cnJlbnRseSB1bmtub3duIHJlYXNvbnMgdGhleSBnZXQgZXhwb3J0ZWQgdG8gdGhlIHNoYXJlZCBsaWJyaWVzCitldmVuIHdpdGhvdXQgYmVpbmcgbGlzdGVkIGluIHRoZSBzeW0gZmlsZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIENvbmRpdGlvbmFsIG9uIG1hc3RlciBuZWVkaW5nIHRoaXMsIDIzOSBkb2VzIG5lZWQgaXQgXQorCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworaW5kZXggMzc4ZjdhMzc3Li40OWQ3OTdhYmQgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYworQEAgLTcxLDggKzcxLDggQEAgQlVTX0VSUk9SX01BUF9FTEZfUkVHSVNURVIgY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBidXNfc3RhbmRhcmRfZXJyb3JzW10gPSB7CisgfTsKKyAKKyAvKiBHQ0MgbWFwcyB0aGlzIG1hZ2ljYWxseSB0byB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIEJVU19FUlJPUl9NQVAgc2VjdGlvbiAqLworLWV4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RhcnRfQlVTX0VSUk9SX01BUFtdOworLWV4dGVybiBjb25zdCBzZF9idXNfZXJyb3JfbWFwIF9fc3RvcF9CVVNfRVJST1JfTUFQW107CisrZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdGFydF9CVVNfRVJST1JfTUFQW10gX2hpZGRlbl87CisrZXh0ZXJuIGNvbnN0IHNkX2J1c19lcnJvcl9tYXAgX19zdG9wX0JVU19FUlJPUl9NQVBbXSBfaGlkZGVuXzsKKyAKKyAvKiBBZGRpdGlvbmFsIG1hcHMgcmVnaXN0ZXJlZCB3aXRoIHNkX2J1c19lcnJvcl9hZGRfbWFwKCkgYXJlIGluIHRoaXMKKyAgKiBOVUxMIHRlcm1pbmF0ZWQgYXJyYXkgKi8KKy0tIAorMi4xNi4yCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM4YWVjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGRmZWE0Yjk4ODQ0Nzk1YTBjZDE0ZmRhZjQwYzY3ZGYzODlkYmQyN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDIxOjI1OjIyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMzFdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KLSBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCi1pbmRleCBhZWQ2ZGI4NDIuLjBkZTZmYTYzYyAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLSsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLUBAIC01MCw4ICs1MCwxMCBAQCBpbnQgbWFpbih2b2lkKSB7Ci0gICAgICAgICBpbmZvKHVuc2lnbmVkKTsKLSAgICAgICAgIGluZm8obG9uZyB1bnNpZ25lZCk7Ci0gICAgICAgICBpbmZvKGxvbmcgbG9uZyB1bnNpZ25lZCk7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgICAgICAgaW5mbyhfX3N5c2NhbGxfdWxvbmdfdCk7Ci0gICAgICAgICBpbmZvKF9fc3lzY2FsbF9zbG9uZ190KTsKLSsjZW5kaWYKLSAKLSAgICAgICAgIGluZm8oZmxvYXQpOwotICAgICAgICAgaW5mbyhkb3VibGUpOwotQEAgLTYxLDcgKzYzLDkgQEAgaW50IG1haW4odm9pZCkgewotICAgICAgICAgaW5mbyhzc2l6ZV90KTsKLSAgICAgICAgIGluZm8odGltZV90KTsKLSAgICAgICAgIGluZm8odXNlY190KTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICAgICAgICBpbmZvKF9fdGltZV90KTsKLSsjZW5kaWYKLSAgICAgICAgIGluZm8ocGlkX3QpOwotICAgICAgICAgaW5mbyh1aWRfdCk7Ci0gICAgICAgICBpbmZvKGdpZF90KTsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjItYnVpbGQtc3lzLURldGVjdC13aGV0aGVyLXN0cnVjdC1zdGF0eC1pcy1kZWZpbmVkLWluLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjItYnVpbGQtc3lzLURldGVjdC13aGV0aGVyLXN0cnVjdC1zdGF0eC1pcy1kZWZpbmVkLWluLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjI0NjNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1idWlsZC1zeXMtRGV0ZWN0LXdoZXRoZXItc3RydWN0LXN0YXR4LWlzLWRlZmluZWQtaW4tLnBhdGNoCkBAIC0wLDAgKzEsMTA5IEBACitGcm9tIDc1NzIwYmZmNjJhODQ4OTZlOWEwNjU0YWZjN2NmOTQwOGNmODlhMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGaWxpcGUgQnJhbmRlbmJ1cmdlciA8ZmlsYnJhbmRlbkBnb29nbGUuY29tPgorRGF0ZTogU3VuLCAxNSBKdWwgMjAxOCAyMjo0MzozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBidWlsZC1zeXM6IERldGVjdCB3aGV0aGVyIHN0cnVjdCBzdGF0eCBpcyBkZWZpbmVkIGluCisgc3lzL3N0YXQuaAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitTdGFydGluZyB3aXRoIGdsaWJjIDIuMjcuOTAwMC0zNi5mYzI5LCBpbmNsdWRlIGZpbGUgc3lzL3N0YXQuaCB3aWxsIGhhdmUgYQorZGVmaW5pdGlvbiBmb3Igc3RydWN0IHN0YXR4LCBpbiB3aGljaCBjYXNlIGluY2x1ZGUgZmlsZSBsaW51eC9zdGF0Lmggc2hvdWxkIGJlCithdm9pZGVkLCBpbiBvcmRlciB0byBwcmV2ZW50IGEgZHVwbGljYXRlIGRlZmluaXRpb24uCisKKyAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vc3JjL2Jhc2ljL21pc3NpbmcuaDoxOCwKKwkJICAgICBmcm9tIC4uL3NyYy9iYXNpYy91dGlsLmg6MjgsCisJCSAgICAgZnJvbSAuLi9zcmMvYmFzaWMvaGFzaG1hcC5oOjEwLAorCQkgICAgIGZyb20gLi4vc3JjL3NoYXJlZC9idXMtdXRpbC5oOjEyLAorCQkgICAgIGZyb20gLi4vc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1jcmVkcy5jOjExOgorICAgIC91c3IvaW5jbHVkZS9saW51eC9zdGF0Lmg6OTk6ODogZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiDigJhzdHJ1Y3Qgc3RhdHjigJkKKyAgICAgc3RydWN0IHN0YXR4IHsKKwkgICAgXn5+fn4KKyAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdGF0Lmg6NDQ2LAorCQkgICAgIGZyb20gLi4vc3JjL2Jhc2ljL3V0aWwuaDoxOSwKKwkJICAgICBmcm9tIC4uL3NyYy9iYXNpYy9oYXNobWFwLmg6MTAsCisJCSAgICAgZnJvbSAuLi9zcmMvc2hhcmVkL2J1cy11dGlsLmg6MTIsCisJCSAgICAgZnJvbSAuLi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWNyZWRzLmM6MTE6CisgICAgL3Vzci9pbmNsdWRlL2JpdHMvc3RhdHguaDozNjo4OiBub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQorICAgICBzdHJ1Y3Qgc3RhdHgKKwkgICAgXn5+fn4KKworRXh0ZW5kIG91ciBtZXNvbi5idWlsZCB0byBsb29rIGZvciBzdHJ1Y3Qgc3RhdHggd2hlbiBvbmx5IHN5cy9zdGF0LmggaXMKK2luY2x1ZGVkIGFuZCwgaW4gdGhhdCBjYXNlLCBkbyBub3QgaW5jbHVkZSBsaW51eC9zdGF0LmggYW55bW9yZS4KKworVGVzdGVkIHRoYXQgc3lzdGVtZCBidWlsZHMgY29ycmVjdGx5IHdoZW4gdXNpbmcgYSBnbGliYyB2ZXJzaW9uIHRoYXQgaW5jbHVkZXMgYQorZGVmaW5pdGlvbiBmb3Igc3RydWN0IHN0YXR4LgorCitnbGliYyBGZWRvcmEgUlBNIHVwZGF0ZToKK2h0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2xpYmMvYy8yOGNiNWQzMWZjMWU1ODg3OTEyMjgzYzg4OTY4OWM0NzA3NjI3OGFlCisKK2dsaWJjIHVwc3RyZWFtIGNvbW1pdDoKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdGRpZmY7aD1mZDcwYWY0NTUyOGQ1OWEwMGViMzE5MGVmNjcwNmNiMjk5NDg4ZmNkCistLS0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgbWVzb24uYnVpbGQgICAgICAgICAgICB8IDUgKysrKysKKyBzcmMvYmFzaWMvbWlzc2luZy5oICAgIHwgNSArKysrLQorIHNyYy9iYXNpYy94YXR0ci11dGlsLmMgfCAxIC0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9tZXNvbi5idWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL21lc29uLmJ1aWxkCisrKysgZ2l0L21lc29uLmJ1aWxkCitAQCAtNDMyLDYgKzQzMiw3IEBAIGRlY2xfaGVhZGVycyA9ICcnJworICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICcnJworICMgRklYTUU6IGtleV9zZXJpYWxfdCBpcyBvbmx5IGRlZmluZWQgaW4ga2V5dXRpbHMuaCwgdGhpcyBpcyBib3VuZCB0byBmYWlsCisrIyBGSVhNRTogdGhlc2Ugc2hvdWxkIHVzZSAtRF9HTlVfU09VUkNFLCBzaW5jZSB0aGF0IGlzIGRlZmluZWQgYXQgYnVpbGQgdGltZQorIAorIGZvcmVhY2ggZGVjbCA6IFsnY2hhcjE2X3QnLAorICAgICAgICAgICAgICAgICAnY2hhcjMyX3QnLAorQEAgLTQ0Niw2ICs0NDcsMTAgQEAgZm9yZWFjaCBkZWNsIDogWydjaGFyMTZfdCcsCisgICAgICAgICBjb25mLnNldDEwKCdIQVZFXycgKyBkZWNsLnVuZGVyc2NvcmlmeSgpLnRvX3VwcGVyKCksIGhhdmUpCisgZW5kZm9yZWFjaAorIAorK2NvbmYuc2V0MTAoJ0hBVkVfU1RSVUNUX1NUQVRYX0lOX1NZU19TVEFUX0gnLCBjYy5zaXplb2YoJ3N0cnVjdCBzdGF0eCcsIHByZWZpeCA6ICcnJworKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKycnJywgYXJncyA6ICctRF9HTlVfU09VUkNFJykgPiAwKQorKworIGZvcmVhY2ggZGVjbCA6IFtbJ0lGTEFfSU5FVDZfQUREUl9HRU5fTU9ERScsICAgICAgICAgJ2xpbnV4L2lmX2xpbmsuaCddLAorICAgICAgICAgICAgICAgICBbJ0lONl9BRERSX0dFTl9NT0RFX1NUQUJMRV9QUklWQUNZJywgJ2xpbnV4L2lmX2xpbmsuaCddLAorICAgICAgICAgICAgICAgICBbJ0lGTEFfVlJGX1RBQkxFJywgICAgICAgICAgICAgICAgICAgJ2xpbnV4L2lmX2xpbmsuaCddLAorSW5kZXg6IGdpdC9zcmMvYmFzaWMvbWlzc2luZy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGdpdC9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTUsNyArMTUsNiBAQAorICNpbmNsdWRlIDxsaW51eC9uZWlnaGJvdXIuaD4KKyAjaW5jbHVkZSA8bGludXgvb29tLmg+CisgI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorLSNpbmNsdWRlIDxsaW51eC9zdGF0Lmg+CisgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CitAQCAtMjUsNiArMjQsMTAgQEAKKyAjaW5jbHVkZSA8dWNoYXIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2lmICFIQVZFX1NUUlVDVF9TVEFUWF9JTl9TWVNfU1RBVF9ICisrI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KKysjZW5kaWYKKysKKyAjaWYgSEFWRV9BVURJVAorICNpbmNsdWRlIDxsaWJhdWRpdC5oPgorICNlbmRpZgorSW5kZXg6IGdpdC9zcmMvYmFzaWMveGF0dHItdXRpbC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvc3JjL2Jhc2ljL3hhdHRyLXV0aWwuYworKysrIGdpdC9zcmMvYmFzaWMveGF0dHItdXRpbC5jCitAQCAtMiw3ICsyLDYgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8bGludXgvc3RhdC5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1Zjc0NDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1Gcm9tIGQzNDM3NTdkNjI5NDAyYzcwY2E4ZTVlYWE1NTFkZWFmMTc1Yzk2ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KLURhdGU6IFRodSwgMTggU2VwIDIwMTQgMTU6MjQ6NTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8zMV0gZG9uJ3QgdXNlIGdsaWJjLXNwZWNpZmljIHFzb3J0X3IKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvaHdkYi9od2RiLmMgICAgICAgICB8IDE4ICsrKysrKysrKysrLS0tLS0tLQotIHNyYy91ZGV2L3VkZXZhZG0taHdkYi5jIHwgMTYgKysrKysrKysrKy0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaHdkYi9od2RiLmMgYi9zcmMvaHdkYi9od2RiLmMKLWluZGV4IDQ1NDAyNjBmOS4uODFhY2E3YTliIDEwMDY0NAotLS0tIGEvc3JjL2h3ZGIvaHdkYi5jCi0rKysgYi9zcmMvaHdkYi9od2RiLmMKLUBAIC0xNTIsMTMgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCB0cmllX2ZyZWUoc3RydWN0IHRyaWUgKnRyaWUpIHsKLSAKLSBERUZJTkVfVFJJVklBTF9DTEVBTlVQX0ZVTkMoc3RydWN0IHRyaWUqLCB0cmllX2ZyZWUpOwotIAotLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Ci0rc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Ci0rc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOwotICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKLS0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOwotLQotLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAotLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKLSsgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAotKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotIH0KLSAKLSBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi1AQCAtMTgzLDcgKzE4MiwxMCBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlX29mZiA9IHYsCi0gICAgICAgICAgICAgICAgIH07Ci0gCi0tICAgICAgICAgICAgICAgIHZhbCA9IHhic2VhcmNoX3IoJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7Ci0rICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7Ci0rICAgICAgICAgICAgICAgIHZhbCA9IGJzZWFyY2goJnNlYXJjaCwgbm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7Ci0rICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7Ci0rCi0gICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgMiBpZGVudGljYWwgcHJvcGVydGllcyBvbiB0aGUgc2FtZSBtYXRjaC1zdHJpbmcuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICogU2luY2Ugd2UgcHJvY2VzcyBmaWxlcyBpbiBvcmRlciwgd2UganVzdCByZXBsYWNlIHRoZSBwcmV2aW91cyB2YWx1ZS4KLUBAIC0yMDgsNyArMjEwLDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0uZmlsZV9wcmlvcml0eSA9IGZpbGVfcHJpb3JpdHk7Ci0gICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwotICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7Ci0tICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOwotKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSAgICAgICAgIHJldHVybiAwOwotIH0KLSAKLWRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCi1pbmRleCBhYjVkYzdhYjYuLmM3NzdlMzBhYiAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCi0rKysgYi9zcmMvdWRldi91ZGV2YWRtLWh3ZGIuYwotQEAgLTEzMCwxMyArMTMwLDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfbm9kZV9jbGVhbnVwKHN0cnVjdCB0cmllX25vZGUgKm5vZGUpIHsKLSAgICAgICAgIGZyZWUobm9kZSk7Ci0gfQotIAotLXN0YXRpYyBpbnQgdHJpZV92YWx1ZXNfY21wKGNvbnN0IHZvaWQgKnYxLCBjb25zdCB2b2lkICp2Miwgdm9pZCAqYXJnKSB7Ci0rc3RhdGljIHN0cnVjdCB0cmllICp0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWU7Ci0rc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyKSB7Ci0gICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMSA9IHYxOwotICAgICAgICAgY29uc3Qgc3RydWN0IHRyaWVfdmFsdWVfZW50cnkgKnZhbDIgPSB2MjsKLS0gICAgICAgIHN0cnVjdCB0cmllICp0cmllID0gYXJnOwotIAotLSAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAotLSAgICAgICAgICAgICAgICAgICAgICB0cmllLT5zdHJpbmdzLT5idWYgKyB2YWwyLT5rZXlfb2ZmKTsKLSsgICAgICAgIHJldHVybiBzdHJjbXAodHJpZV9ub2RlX2FkZF92YWx1ZV90cmllLT5zdHJpbmdzLT5idWYgKyB2YWwxLT5rZXlfb2ZmLAotKyAgICAgICAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOwotIH0KLSAKLSBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCi1AQCAtMTU3LDcgKzE1Nyw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKLSAgICAgICAgICAgICAgICAgfTsKLSAKLS0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKLSsgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlcGxhY2UgZXhpc3RpbmcgZWFybGllciBrZXkgd2l0aCBuZXcgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICB2YWwtPnZhbHVlX29mZiA9IHY7Ci1AQCAtMTc0LDcgKzE3Niw5IEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKLSAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmtleV9vZmYgPSBrOwotICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0udmFsdWVfb2ZmID0gdjsKLSAgICAgICAgIG5vZGUtPnZhbHVlc19jb3VudCsrOwotLSAgICAgICAgcXNvcnRfcihub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKLSsgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IHRyaWU7Ci0rICAgICAgICBxc29ydChub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKLSsgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZSA9IE5VTEw7Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWMyYjVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSA3YjgwMmFkYTEyMDdlZDAwZWQzODY3Yjk4MDRkZDBmMzE2NjQxYjliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTAgT2N0IDIwMTcgMTQ6MzM6MzAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8zMV0gZG9uJ3QgcGFzcyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcgdG8gZmFjY2Vzc2F0KCkKLQotQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQKLXRoaW5nIHRvIGRvIGFuZCBpdCdzIG5vdCBwb3J0YWJsZSAobm90IHN1cHBvcnRlZCBieSBtdXNsKS4gU2VlOgotCi0gIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCi0gIGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL211c2wvMjAxNS8wMi8wNS8yCi0KLU5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZQotZGlzY3Vzc2lvbiBpbiB0aGUgbGlua3MgYWJvdmUgZG9lc24ndCBhcHBseS4gTm90ZSBhbHNvIHRoYXQKLShjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMgb2YgbGFjY2VzcygpIHBhc3MgbW9kZSBhcyBGX09LLCBzbwotb25seSBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgZmlsZSwgbm90IGFjY2VzcyBwZXJtaXNzaW9ucy4KLVRoZXJlZm9yZSwgaW4gdGhpcyBjYXNlLCB0aGUgb25seSBkaXN0aWN0aW9uIGJldHdlZW4gZmFjY2Vzc2F0KCkKLXdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZSBiZWhhdmlvdXIKLWZvciBicm9rZW4gc3ltbGlua3M7IGxhY2Nlc3MoKSBvbiBhIGJyb2tlbiBzeW1saW5rIHdpbGwgc3VjY2VlZCB3aXRoCi0oZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBhbmQgZmFpbCAoZmxhZyA9PSAwKS4KLQotVGhlIGxhY2Nlc3MoKSBtYWNyb3Mgd2FzIGFkZGVkIHRvIHN5c3RlbWQgc29tZSB0aW1lIGFnbyBhbmQgaXQncyBub3QKLWNsZWFyIGlmIG9yIHdoeSBpdCBuZWVkcyB0byByZXR1cm4gc3VjY2VzcyBmb3IgYnJva2VuIHN5bWxpbmtzLiBNYXliZQotanVzdCBoaXN0b3JpY2FsIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIHNyYy9iYXNpYy9mcy11dGlsLmggICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCi0gc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyB8ICA2ICsrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mcy11dGlsLmggYi9zcmMvYmFzaWMvZnMtdXRpbC5oCi1pbmRleCA0ZGJhMWVhNTYuLjljNGIwMmVjYyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9mcy11dGlsLmgKLSsrKyBiL3NyYy9iYXNpYy9mcy11dGlsLmgKLUBAIC01MCw3ICs1MCwyNyBAQCBpbnQgZmNobW9kX3VtYXNrKGludCBmZCwgbW9kZV90IG1vZGUpOwotIAotIGludCBmZF93YXJuX3Blcm1pc3Npb25zKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCk7Ci0gCi0tI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIEFUX1NZTUxJTktfTk9GT0xMT1cpCi0rLyoKLSsgICBBdm9pZCB1c2luZyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcuIEl0IGRvZXNuJ3Qgc2VlbSBsaWtlIHRoZSByaWdodCB0aGluZyB0bwotKyAgIGRvIGFuZCBpdCdzIG5vdCBwb3J0YWJsZSAobm90IHN1cHBvcnRlZCBieSBtdXNsKS4gU2VlOgotKwotKyAgICAgaHR0cDovL2xpc3RzLmxhbmRsZXkubmV0L3BpcGVybWFpbC90b3lib3gtbGFuZGxleS5uZXQvMjAxNC1TZXB0ZW1iZXIvMDAzNjEwLmh0bWwKLSsgICAgIGh0dHA6Ly93d3cub3BlbndhbGwuY29tL2xpc3RzL211c2wvMjAxNS8wMi8wNS8yCi0rCi0rICAgTm90ZSB0aGF0IGxhY2Nlc3MoKSBpcyBuZXZlciBwYXNzaW5nIEFUX0VBQ0NFU1Mgc28gYSBsb3Qgb2YgdGhlIGRpc2N1c3Npb24gaW4KLSsgICB0aGUgbGlua3MgYWJvdmUgZG9lc24ndCBhcHBseS4gTm90ZSBhbHNvIHRoYXQgKGN1cnJlbnRseSkgYWxsIHN5c3RlbWQgY2FsbGVycwotKyAgIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28gb25seSBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIGEgZmlsZSwgbm90Ci0rICAgYWNjZXNzIHBlcm1pc3Npb25zLiBUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuCi0rICAgZmFjY2Vzc2F0KCkgd2l0aCAoZmxhZyA9PSAwKSBhbmQgKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgaXMgdGhlCi0rICAgYmVoYXZpb3VyIGZvciBicm9rZW4gc3ltbGlua3M7IGxhY2Nlc3MoKSBvbiBhIGJyb2tlbiBzeW1saW5rIHdpbGwgc3VjY2VlZAotKyAgIHdpdGggKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCi0rCi0rICAgVGhlIGxhY2Nlc3MoKSBtYWNyb3Mgd2FzIGFkZGVkIHRvIHN5c3RlbWQgc29tZSB0aW1lIGFnbyBhbmQgaXQncyBub3QgY2xlYXIgaWYKLSsgICBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUganVzdCBoaXN0b3JpY2FsCi0rICAgYW5kIG5vdCBhY3R1YWxseSBuZWNlc3Nhcnkgb3IgZGVzaXJlZCBiZWhhdmlvdXI/Ci0rKi8KLSsKLSsjZGVmaW5lIGxhY2Nlc3MocGF0aCwgbW9kZSkgZmFjY2Vzc2F0KEFUX0ZEQ1dELCAocGF0aCksIChtb2RlKSwgMCkKLSAKLSBpbnQgdG91Y2hfZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29sIHBhcmVudHMsIHVzZWNfdCBzdGFtcCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1vZGVfdCBtb2RlKTsKLSBpbnQgdG91Y2goY29uc3QgY2hhciAqcGF0aCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKLWluZGV4IDNjMjVhYTUzNC4uNTc0Y2E3MWM3IDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotKysrIGIvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYwotQEAgLTcxLDcgKzcxLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19lcnJvcl9lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIHJvb3QgZmlsZSBzeXN0ZW06ICVtIik7Ci0gCi0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgRUxFTUVOVFNPRih0YWJsZSk7IGkgKyspIHsKLS0gICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCBBVF9TWU1MSU5LX05PRk9MTE9XKSA+PSAwKQotKyAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCB0YWJsZVtpXS5kaXIsIEZfT0ssIDApID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gCi0gICAgICAgICAgICAgICAgIGlmICh0YWJsZVtpXS50YXJnZXQpIHsKLUBAIC03OSw3ICs3OSw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgb25lIG9mIHRoZSB0YXJnZXRzIGV4aXN0cyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTFNUUl9GT1JFQUNIKHMsIHRhYmxlW2ldLnRhcmdldCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcywgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcywgRl9PSywgMCkgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIGEgc3BlY2lmaWMgZmlsZSBleGlzdHMgYXQgdGhlIHRhcmdldCBwYXRoICovCi1AQCAtOTAsNyArOTAsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLSAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjY2Vzc2F0KGZkLCBwLCBGX09LLCAwKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLXJlc29sdmNvbmYtZml4ZXMtZm9yLXRoZS1jb21wYXRpYmlsaXR5LWludGVyZmFjZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjMtcmVzb2x2Y29uZi1maXhlcy1mb3ItdGhlLWNvbXBhdGliaWxpdHktaW50ZXJmYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmM2U3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIzLXJlc29sdmNvbmYtZml4ZXMtZm9yLXRoZS1jb21wYXRpYmlsaXR5LWludGVyZmFjZS5wYXRjaApAQCAtMCwwICsxLDU4IEBACitzeXN0ZW1kLTIzOTogZml4ZXMgZm9yIHRoZSBjb21wYXRpYmlsaXR5IGludGVyZmFjZQorCitbTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvaXNzdWVzLzk0MjMKKworcmVzb2x2Y29uZi1jb21wYXQ6IHVzZSBjb21wYXRfbWFpbigpIHdoZW4gY2FsbGVkIGFzIGByZXNvbHZjb25mYCwKK3NpbmNlIHRoZSBpbnRlcmZhY2UgaXMgY2xvc2VyIHRvIHRoYXQgb2YgYHN5c3RlbWQtcmVzb2x2ZWAuCisKK1VzZSBhIGhlYXAgYWxsb2NhdGVkIHN0cmluZyB0byBzZXQgYXJnX2lmbmFtZSwgc2luY2UgYSBzdGFjayBhbGxvY2F0ZWQKK29uZSB3b3VsZCBiZSBsb3N0IGFmdGVyIHRoZSBmdW5jdGlvbiByZXR1cm5zLiAoVGhpcyBsYXN0IG9uZSBicm9rZSB0aGUKK2Nhc2Ugd2hlcmUgYW4gaW50ZXJmYWNlIG5hbWUgd2FzIHN1ZmZpeGVkIHdpdGggYSBkb3QsIHN1Y2ggYXMgaW4KK2ByZXNvbHZjb25mIC1hIHRhcDAuZGhjcGAuKQorCitUZXN0ZWQ6CisgICQgYnVpbGQvcmVzb2x2Y29uZiAtYSBub25leGlzdGVudC5hYmMgPC9ldGMvcmVzb2x2LmNvbmYKKyAgVW5rbm93biBpbnRlcmZhY2UgJ25vbmV4aXN0ZW50JzogTm8gc3VjaCBkZXZpY2UKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNWEwMWIzZjM1ZDdiNjE4MmM3OGI2OTczZGI4ZDk5YmRhYmQ0ZjljM10KK2J1ZzogOTQyMworU2lnbmVkLW9mZi1ieTogU2ltb24gQXVzc2VybGVjaG5lciA8c2ltb24uYXVzc2VybGVjaG5lckBzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlL3Jlc29sdmNvbmYtY29tcGF0LmMgYi9zcmMvcmVzb2x2ZS9yZXNvbHZjb25mLWNvbXBhdC5jCitpbmRleCBkN2U2ODAwM2UuLjA3MjM0NTg5NCAxMDA2NDQKKy0tLSBhL3NyYy9yZXNvbHZlL3Jlc29sdmNvbmYtY29tcGF0LmMKKysrKyBiL3NyYy9yZXNvbHZlL3Jlc29sdmNvbmYtY29tcGF0LmMKK0BAIC01Myw2ICs1Myw4IEBAIHN0YXRpYyBpbnQgcGFyc2VfbmFtZXNlcnZlcihjb25zdCBjaGFyICpzdHJpbmcpIHsKKyAKKyAgICAgICAgICAgICAgICAgaWYgKHN0cnZfcHVzaCgmYXJnX3NldF9kbnMsIHdvcmQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOworKworKyAgICAgICAgICAgICAgICB3b3JkID0gTlVMTDsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiAwOworQEAgLTIwMiw3ICsyMDQsNyBAQCBpbnQgcmVzb2x2Y29uZl9wYXJzZV9hcmd2KGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAKKyAgICAgICAgIGRvdCA9IHN0cmNocihhcmd2W29wdGluZF0sICcuJyk7CisgICAgICAgICBpZiAoZG90KSB7CistICAgICAgICAgICAgICAgIGlmYWNlID0gc3RybmR1cGEoYXJndltvcHRpbmRdLCBkb3QgLSBhcmd2W29wdGluZF0pOworKyAgICAgICAgICAgICAgICBpZmFjZSA9IHN0cm5kdXAoYXJndltvcHRpbmRdLCBkb3QgLSBhcmd2W29wdGluZF0pOworICAgICAgICAgICAgICAgICBsb2dfZGVidWcoIklnbm9yaW5nIHByb3RvY29sIHNwZWNpZmllciAnJXMnLiIsIGRvdCArIDEpOworICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgIGlmYWNlID0gYXJndltvcHRpbmRdOworZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYyBiL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworaW5kZXggZTk2YzEzZmVhLi5lOWUzOTVlM2UgMTAwNjQ0CistLS0gYS9zcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMKKysrKyBiL3NyYy9yZXNvbHZlL3Jlc29sdmVjdGwuYworQEAgLTMwOTIsNyArMzA5Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmIChzdHJlcShwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSwgInN5c3RlbWQtcmVzb2x2ZSIpKQorKyAgICAgICAgaWYgKFNUUl9JTl9TRVQocHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUsICJzeXN0ZW1kLXJlc29sdmUiLCAicmVzb2x2Y29uZiIpKQorICAgICAgICAgICAgICAgICByID0gY29tcGF0X21haW4oYXJnYywgYXJndiwgYnVzKTsKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgciA9IG5hdGl2ZV9tYWluKGFyZ2MsIGFyZ3YsIGJ1cyk7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlN2U2MjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA3NmM3MWFhODg5MTU1ZjI5YmUxZDVkMmI3NGEyYzRmYWE1OTA5YzhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTIgU2VwIDIwMTUgMTg6NTM6MzEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8zMV0gY29tcGFyaXNvbl9mbl90IGlzIGdsaWJjIHNwZWNpZmljLCB1c2UgcmF3IHNpZ25hdHVyZSBpbgotIGZ1bmN0aW9uIHBvaW50ZXIKLQotbWFrZSBpdCB3b3JrIHdpdGggbXVzbCB3aGVyZSBjb21wYXJpc29uX2ZuX3QgaXMgbm90IHByb3ZpZGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL3V0aWwuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91dGlsLmggYi9zcmMvYmFzaWMvdXRpbC5oCi1pbmRleCA5ZDFiMTA3NTYuLjEyZGI1M2E5MyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGlsLmgKLSsrKyBiL3NyYy9iYXNpYy91dGlsLmgKLUBAIC05NSw3ICs5NSw3IEBAIHZvaWQgKnhic2VhcmNoX3IoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAotICAqIE5vcm1hbCBxc29ydCByZXF1aXJlcyBiYXNlIHRvIGJlIG5vbm51bGwuIEhlcmUgd2VyZSByZXF1aXJlCi0gICogdGhhdCBvbmx5IGlmIG5tZW1iID4gMC4KLSAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQgcXNvcnRfc2FmZSh2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLCBjb21wYXJpc29uX2ZuX3QgY29tcGFyKSB7Ci0rc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgaW50ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHsKLSAgICAgICAgIGlmIChubWVtYiA8PSAxKQotICAgICAgICAgICAgICAgICByZXR1cm47Ci0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI1LURlZmluZS1fUEFUSF9XVE1QWC1hbmQtX1BBVEhfVVRNUFgtaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNzZhOGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBhMGIxNDk2MzIyZjRkN2NlODNmNGZiZmQyYTkwYjkxZDA3MjFmNjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjQgT2N0IDIwMTcgMjM6MDg6MjQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8zMV0gRGVmaW5lIF9QQVRIX1dUTVBYIGFuZCBfUEFUSF9VVE1QWCBpZiBub3QgZGVmaW5lZAotCi1NdXNsIG5lZWRzIHRoZXNlIGRlZmluZXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvc2hhcmVkL3V0bXAtd3RtcC5jIHwgOCArKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMgYi9zcmMvc2hhcmVkL3V0bXAtd3RtcC5jCi1pbmRleCBjYWIxY2Q2YTIuLmY1ZWVkYWMxOCAxMDA2NDQKLS0tLSBhL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKLSsrKyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDx1dG1wLmg+Ci0gI2luY2x1ZGUgPHV0bXB4Lmg+Ci0gCi0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLUBAIC00Miw2ICs0MywxMyBAQAotICNpbmNsdWRlICJ1dGlsLmgiCi0gI2luY2x1ZGUgInV0bXAtd3RtcC5oIgotIAotKyNpZiBkZWZpbmVkIF9QQVRIX1VUTVAgJiYgIWRlZmluZWQgX1BBVEhfVVRNUFgKLSsjIGRlZmluZSBfUEFUSF9VVE1QWCBfUEFUSF9VVE1QCi0rI2VuZGlmCi0rI2lmIGRlZmluZWQgX1BBVEhfV1RNUCAmJiAhZGVmaW5lZCBfUEFUSF9XVE1QWAotKyMgZGVmaW5lIF9QQVRIX1dUTVBYIF9QQVRIX1dUTVAKLSsjZW5kaWYKLSsKLSBpbnQgdXRtcF9nZXRfcnVubGV2ZWwoaW50ICpydW5sZXZlbCwgaW50ICpwcmV2aW91cykgewotICAgICAgICAgc3RydWN0IHV0bXB4ICpmb3VuZCwgbG9va3VwID0geyAudXRfdHlwZSA9IFJVTl9MVkwgfTsKLSAgICAgICAgIGludCByOwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNi1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZkNzVhZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI2LVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gODhjNDhlYTg0ZGI2ZmRhMTlkZmFlYjY0NTQ1ZmNjZjhmYTA1MjVlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI3IE9jdCAyMDE3IDEzOjAwOjQxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMzFdIFVzZSB1aW50bWF4X3QgZm9yIGhhbmRsaW5nIHJsaW1fdAotCi1QUkl1ezMyLDY0fSBpcyBub3QgcmlnaHQgZm9ybWF0IHRvIHJlcHJlc2VudCBybGltX3QgdHlwZQotdGhlcmVmb3JlIHVzZSAlanUgYW5kIHR5cGVjYXN0IHRoZSBybGltX3QgdmFyaWFibGVzIHRvCi11aW50bWF4X3QuCi0KLUZpeGVzIHBvcnRhYmxpbGl0eSBlcnJvcnMgbGlrZQotCi1leGVjdXRlLmM6MzQ0NjozNjogZXJyb3I6IGZvcm1hdCAnJWx1JyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2xvbmcgdW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDUgaGFzIHR5cGUgJ3JsaW1fdCB7YWthIGxvbmcgbG9uZyB1bnNpZ25lZCBpbnR9JyBbLVdlcnJvcj1mb3JtYXQ9XQotfCAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogIiBSTElNX0ZNVCAiXG4iLAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksIGMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC83MTk5XQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggfCA4IC0tLS0tLS0tCi0gc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgfCA4ICsrKystLS0tCi0gc3JjL2NvcmUvZXhlY3V0ZS5jICAgICAgfCA4ICsrKystLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmggYi9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotaW5kZXggZDlhNzhmNzgxLi45YTFiYzIxZDcgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLUBAIC02MSwxNCArNjEsNiBAQAotICMgIGRlZmluZSBQUklfVElNRVggImxpIgotICNlbmRpZgotIAotLSNpZiBTSVpFT0ZfUkxJTV9UID09IDgKLS0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXU2NAotLSNlbGlmIFNJWkVPRl9STElNX1QgPT0gNAotLSMgIGRlZmluZSBSTElNX0ZNVCAiJSIgUFJJdTMyCi0tI2Vsc2UKLS0jICBlcnJvciBVbmtub3duIHJsaW1fdCBzaXplCi0tI2VuZGlmCi0tCi0gI2lmIFNJWkVPRl9ERVZfVCA9PSA4Ci0gIyAgZGVmaW5lIERFVl9GTVQgIiUiIFBSSXU2NAotICNlbGlmIFNJWkVPRl9ERVZfVCA9PSA0Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotaW5kZXggMDA2NDgyMTFkLi5kZjNkOWVjYzEgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLUBAIC0yODYsMTMgKzI4NiwxMyBAQCBpbnQgcmxpbWl0X2Zvcm1hdChjb25zdCBzdHJ1Y3QgcmxpbWl0ICpybCwgY2hhciAqKnJldCkgewotICAgICAgICAgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZICYmIHJsLT5ybGltX21heCA+PSBSTElNX0lORklOSVRZKQotICAgICAgICAgICAgICAgICBzID0gc3RyZHVwKCJpbmZpbml0eSIpOwotICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID49IFJMSU1fSU5GSU5JVFkpCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgImluZmluaXR5OiIgUkxJTV9GTVQsIHJsLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgImluZmluaXR5OiVqdSIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKLSAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX21heCA+PSBSTElNX0lORklOSVRZKQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6aW5maW5pdHkiLCBybC0+cmxpbV9jdXIpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6aW5maW5pdHkiLCAodWludG1heF90KXJsLT5ybGltX2N1cik7Ci0gICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9jdXIgPT0gcmwtPnJsaW1fbWF4KQotLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1ULCBybC0+cmxpbV9jdXIpOwotKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanUiLCAodWludG1heF90KXJsLT5ybGltX2N1cik7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgUkxJTV9GTVQgIjoiIFJMSU1fRk1ULCBybC0+cmxpbV9jdXIsIHJsLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICh2b2lkKSBhc3ByaW50ZigmcywgIiVqdTolanUiLCAodWludG1heF90KXJsLT5ybGltX2N1ciwgKHVpbnRtYXhfdClybC0+cmxpbV9tYXgpOwotIAotICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9leGVjdXRlLmMgYi9zcmMvY29yZS9leGVjdXRlLmMKLWluZGV4IDBkZjM5NzFkZi4uYWFiZGRkYjY4IDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvZXhlY3V0ZS5jCi0rKysgYi9zcmMvY29yZS9leGVjdXRlLmMKLUBAIC0zOTkxLDEwICszOTkxLDEwIEBAIHZvaWQgZXhlY19jb250ZXh0X2R1bXAoRXhlY0NvbnRleHQgKmMsIEZJTEUqIGYsIGNvbnN0IGNoYXIgKnByZWZpeCkgewotIAotICAgICAgICAgZm9yIChpID0gMDsgaSA8IFJMSU1fTkxJTUlUUzsgaSsrKQotICAgICAgICAgICAgICAgICBpZiAoYy0+cmxpbWl0W2ldKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogIiBSTElNX0ZNVCAiXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzU29mdDogIiBSTElNX0ZNVCAiXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKGYsICIlcyVzOiAlanVcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX21heCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICVqdVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgKHVpbnRtYXhfdCljLT5ybGltaXRbaV0tPnJsaW1fY3VyKTsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgaWYgKGMtPmlvcHJpb19zZXQpIHsKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjctcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyZjU5YjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNy1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIDUzNTRlYjc2N2QxZWJhMmVjNDFlYjI3M2Y2YjY1N2Y0YTYzMGNhOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDkgSmFuIDIwMTggMTQ6NDU6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8zMV0gcmVtb3ZlIG5vYm9keSB1c2VyL2dyb3VwIGNoZWNraW5nCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMzcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGY2NTE1ZTk3Yy4uMWI5NDdhZGFjIDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNzAwLDQzICs3MDAsNiBAQCBzdWJzdHMuc2V0KCdjb250YWluZXJ1aWRiYXNlbWF4JywgY29udGFpbmVyX3VpZF9iYXNlX21heCkKLSBub2JvZHlfdXNlciA9IGdldF9vcHRpb24oJ25vYm9keS11c2VyJykKLSBub2JvZHlfZ3JvdXAgPSBnZXRfb3B0aW9uKCdub2JvZHktZ3JvdXAnKQotIAotLWdldGVudF9yZXN1bHQgPSBydW5fY29tbWFuZCgnZ2V0ZW50JywgJ3Bhc3N3ZCcsICc2NTUzNCcpCi0taWYgZ2V0ZW50X3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAotLSAgICAgICAgbmFtZSA9IGdldGVudF9yZXN1bHQuc3Rkb3V0KCkuc3BsaXQoJzonKVswXQotLSAgICAgICAgaWYgbmFtZSAhPSBub2JvZHlfdXNlcgotLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgVUlEIDY1NTM0IGRvZXMgbm90IG1hdGNoIHRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIgKGl0cyBuYW1lIGlzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfdXNlciwgbmFtZSkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gdXNlciB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKLS0gICAgICAgIGVuZGlmCi0tZW5kaWYKLS1pZF9yZXN1bHQgPSBydW5fY29tbWFuZCgnaWQnLCAnLXUnLCBub2JvZHlfdXNlcikKLS1pZiBpZF9yZXN1bHQucmV0dXJuY29kZSgpID09IDAKLS0gICAgICAgIGlkID0gaWRfcmVzdWx0LnN0ZG91dCgpLnRvX2ludCgpCi0tICAgICAgICBpZiBpZCAhPSA2NTUzNAotLSAgICAgICAgICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVGhlIGxvY2FsIHVzZXIgd2l0aCB0aGUgY29uZmlndXJlZCB1c2VyIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSB1c2VyIGRvZXMgbm90IGhhdmUgVUlEIDY1NTM0IChpdCBoYXMgQDFAKS5cbicuZm9ybWF0KG5vYm9keV91c2VyLCBpZCkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFlvdXIgYnVpbGQgd2lsbCByZXN1bHQgaW4gYW4gdXNlciB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKLS0gICAgICAgIGVuZGlmCi0tZW5kaWYKLS0KLS1nZXRlbnRfcmVzdWx0ID0gcnVuX2NvbW1hbmQoJ2dldGVudCcsICdncm91cCcsICc2NTUzNCcpCi0taWYgZ2V0ZW50X3Jlc3VsdC5yZXR1cm5jb2RlKCkgPT0gMAotLSAgICAgICAgbmFtZSA9IGdldGVudF9yZXN1bHQuc3Rkb3V0KCkuc3BsaXQoJzonKVswXQotLSAgICAgICAgaWYgbmFtZSAhPSBub2JvZHlfZ3JvdXAKLS0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBHSUQgNjU1MzQgZG9lcyBub3QgbWF0Y2ggdGhlIGNvbmZpZ3VyZWQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IGdyb3VwIChpdHMgbmFtZSBpcyBAMUApLlxuJy5mb3JtYXQobm9ib2R5X2dyb3VwLCBuYW1lKSArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiBncm91cCB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKLS0gICAgICAgIGVuZGlmCi0tZW5kaWYKLS1pZF9yZXN1bHQgPSBydW5fY29tbWFuZCgnaWQnLCAnLWcnLCBub2JvZHlfZ3JvdXApCi0taWYgaWRfcmVzdWx0LnJldHVybmNvZGUoKSA9PSAwCi0tICAgICAgICBpZCA9IGlkX3Jlc3VsdC5zdGRvdXQoKS50b19pbnQoKQotLSAgICAgICAgaWYgaWQgIT0gNjU1MzQKLS0gICAgICAgICAgICAgICAgbWVzc2FnZSgnV0FSTklORzpcbicgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBsb2NhbCBncm91cCB3aXRoIHRoZSBjb25maWd1cmVkIGdyb3VwIG5hbWUgIkAwQCIgb2YgdGhlIG5vYm9keSBncm91cCBkb2VzIG5vdCBoYXZlIFVJRCA2NTUzNCAoaXQgaGFzIEAxQCkuXG4nLmZvcm1hdChub2JvZHlfZ3JvdXAsIGlkKSArCi0tICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgWW91ciBidWlsZCB3aWxsIHJlc3VsdCBpbiBhbiBncm91cCB0YWJsZSBzZXR1cCB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsb2NhbCBzeXN0ZW0uJykKLS0gICAgICAgIGVuZGlmCi0tZW5kaWYKLSBpZiBub2JvZHlfdXNlciAhPSBub2JvZHlfZ3JvdXAgYW5kIG5vdCAobm9ib2R5X3VzZXIgPT0gJ25vYm9keScgYW5kIG5vYm9keV9ncm91cCA9PSAnbm9ncm91cCcpCi0gICAgICAgICBtZXNzYWdlKCdXQVJOSU5HOlxuJyArCi0gICAgICAgICAgICAgICAgICcgICAgICAgIFRoZSBjb25maWd1cmVkIHVzZXIgbmFtZSAiQDBAIiBhbmQgZ3JvdXAgbmFtZSAiQDBAIiBvZiB0aGUgbm9ib2R5IHVzZXIvZ3JvdXAgYXJlIG5vdCBlcXVpdmFsZW50LlxuJy5mb3JtYXQobm9ib2R5X3VzZXIsIG5vYm9keV9ncm91cCkgKwotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllYzMxMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gMDNjZGQzM2JlNjJkYjRjNzJhN2ZjZjIxYjYxZDBkMDU2YzIzYzZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMjE6MzY6MzIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyOC8zMV0gYWRkIG1pc3NpbmcgRlRXXyBtYWNyb3MgZm9yIG11c2wKLQotVGhpcyBpcyB0byBhdm9pZCBidWlsZCBmYWlsdXJlcyBsaWtlIGJlbG93IGZvciBtdXNsLgotCi0gIGxvY2FsZS11dGlsLmM6Mjk2OjI0OiBlcnJvcjogJ0ZUV19TVE9QJyB1bmRlY2xhcmVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvbWlzc2luZy5oIHwgMjAgKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDFhZWUzMzQ2YS4uNWI5ZmRlNjkyIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAotKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotQEAgLTIwNyw2ICsyMDcsMjYgQEAgc3RydWN0IHNvY2thZGRyX3ZtIHsKLSAjZGVmaW5lIEJUUkZTX1FHUk9VUF9MRVZFTF9TSElGVCA0OAotICNlbmRpZgotIAotKyNpZm5kZWYgRlRXX0FDVElPTlJFVFZBTAotKyNkZWZpbmUgRlRXX0FDVElPTlJFVFZBTCAxNgotKyNlbmRpZgotKwotKyNpZm5kZWYgRlRXX0NPTlRJTlVFCi0rI2RlZmluZSBGVFdfQ09OVElOVUUgMAotKyNlbmRpZgotKwotKyNpZm5kZWYgRlRXX1NUT1AKLSsjZGVmaW5lIEZUV19TVE9QIDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEZUV19TS0lQX1NVQlRSRUUKLSsjZGVmaW5lIEZUV19TS0lQX1NVQlRSRUUgMgotKyNlbmRpZgotKwotKyNpZm5kZWYgRlRXX1NLSVBfU0lCTElOR1MKLSsjZGVmaW5lIEZUV19TS0lQX1NJQkxJTkdTIDMKLSsjZW5kaWYKLSsKLSAjaWYgISBIQVZFX0xJTlVYX0JUUkZTX0gKLSAjZGVmaW5lIEJUUkZTX0lPQ19RR1JPVVBfQVNTSUdOIF9JT1coQlRSRlNfSU9DVExfTUFHSUMsIDQxLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBidHJmc19pb2N0bF9xZ3JvdXBfYXNzaWduX2FyZ3MpCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDI5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNzI0OWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSA1ODQ1YzgyZDEwMTZhM2UzZjI2OTYxODBkNWFjOTFiNDY5NTA1NDBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxMjo1NjoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDI5LzMxXSBuc3MtbXltYWNoaW5lczogQnVpbGQgY29uZGl0aW9uYWxseSB3aGVuCi0gRU5BQkxFX01ZSE9TVE5BTUUgaXMgc2V0Ci0KLUZpeGVzIGJ1aWxkIGZhaWx1cmVzIHdoZW4gYnVpbGRpbmcgd2l0aCAtLWRpc2FibGUtbXlob3N0bmFtZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMTEgKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMWI5NDdhZGFjLi4xZWQ0ZGRlNzIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xMzUxLDEyICsxMzUxLDE1IEBAIHRlc3RfZGxvcGVuID0gZXhlY3V0YWJsZSgKLSAgICAgICAgIGxpbmtfd2l0aCA6IFtsaWJiYXNpY10sCi0gICAgICAgICBkZXBlbmRlbmNpZXMgOiBbbGliZGxdKQotIAotLWZvcmVhY2ggdHVwbGUgOiBbWydteWhvc3RuYW1lJywgJ0VOQUJMRV9NWUhPU1ROQU1FJ10sCi0tICAgICAgICAgICAgICAgICBbJ3N5c3RlbWQnLCAgICAnRU5BQkxFX05TU19TWVNURU1EJ10sCi0tICAgICAgICAgICAgICAgICBbJ215bWFjaGluZXMnLCAnRU5BQkxFX01BQ0hJTkVEJ10sCi0tICAgICAgICAgICAgICAgICBbJ3Jlc29sdmUnLCAgICAnRU5BQkxFX1JFU09MVkUnXV0KLStmb3JlYWNoIHR1cGxlIDogW1snbXlob3N0bmFtZScsICdFTkFCTEVfTVlIT1NUTkFNRScsICAnJ10sCi0rICAgICAgICAgICAgICAgICBbJ3N5c3RlbWQnLCAgICAnRU5BQkxFX05TU19TWVNURU1EJywgJyddLAotKyAgICAgICAgICAgICAgICAgWydteW1hY2hpbmVzJywgJ0VOQUJMRV9NQUNISU5FRCcsICAgICdFTkFCTEVfTVlIT1NUTkFNRSddLAotKyAgICAgICAgICAgICAgICAgWydyZXNvbHZlJywgICAgJ0VOQUJMRV9SRVNPTFZFJywgICAgICcnXV0KLSAKLSAgICAgICAgIGNvbmRpdGlvbiA9IHR1cGxlWzFdID09ICcnIG9yIGNvbmYuZ2V0KHR1cGxlWzFdKSA9PSAxCi0rICAgICAgICBpZiB0dXBsZVsyXSAhPSAnJyBhbmQgY29uZGl0aW9uCi0rICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGNvbmYuZ2V0KHR1cGxlWzJdKSA9PSAxCi0rICAgICAgICBlbmRpZgotICAgICAgICAgaWYgY29uZGl0aW9uCi0gICAgICAgICAgICAgICAgIG1vZHVsZSA9IHR1cGxlWzBdCi0gCi0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMGI0YmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBiN2VhY2RmMDM4OGY5MzBmYzUyNzFiZGVjZmE0NjYxMmM3MWRkNjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxMzoyNzo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDMwLzMxXSBmaXggbWlzc2luZyBvZiBfX3JlZ2lzdGVyX2F0Zm9yayBmb3Igbm9uLWdsaWJjIGJ1aWxkcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1pbmRleCBkYzdjOWVmOWUuLjg1Y2U4YTBjYyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCi1AQCAtMzksNiArMzksOSBAQAotICNpZiBIQVZFX1ZBTEdSSU5EX1ZBTEdSSU5EX0gKLSAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KLSAjZW5kaWYKLSsjaWZuZGVmIF9fR0xJQkNfXwotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAiYXJjaGl0ZWN0dXJlLmgiCi1AQCAtMTExMiwxMSArMTExNSwxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgewotICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7Ci0gfQotIAotKyNpZmRlZiBfX0dMSUJDX18KLSAvKiBXZSB1c2UgZ2xpYmMgX19yZWdpc3Rlcl9hdGZvcmsoKSArIF9fZHNvX2hhbmRsZSBkaXJlY3RseSBoZXJlLCBhcyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGdsaWJjCi0gICogaGVhZGVycy4gX19yZWdpc3Rlcl9hdGZvcmsoKSBpcyBtb3N0bHkgZXF1aXZhbGVudCB0byBwdGhyZWFkX2F0Zm9yaygpLCBidXQgZG9lc24ndCByZXF1aXJlIHVzIHRvIGxpbmsgYWdhaW5zdAotICAqIGxpYnB0aHJlYWQsIGFzIGl0IGlzIHBhcnQgb2YgZ2xpYmMgYW55d2F5LiAqLwotIGV4dGVybiBpbnQgX19yZWdpc3Rlcl9hdGZvcmsodm9pZCAoKnByZXBhcmUpICh2b2lkKSwgdm9pZCAoKnBhcmVudCkgKHZvaWQpLCB2b2lkICgqY2hpbGQpICh2b2lkKSwgdm9pZCAqIF9fZHNvX2hhbmRsZSk7Ci0gZXh0ZXJuIHZvaWQqIF9fZHNvX2hhbmRsZSBfX2F0dHJpYnV0ZV9fICgoX193ZWFrX18pKTsKLSsjZWxzZQotKyNkZWZpbmUgX19yZWdpc3Rlcl9hdGZvcmsocHJlcGFyZSxwYXJlbnQsY2hpbGQsZHNvKSBwdGhyZWFkX2F0Zm9yayhwcmVwYXJlLHBhcmVudCxjaGlsZCkKLSsjZW5kaWYKLSAKLSBwaWRfdCBnZXRwaWRfY2FjaGVkKHZvaWQpIHsKLSAgICAgICAgIHBpZF90IGN1cnJlbnRfdmFsdWU7Ci0tLSAKLTIuMTMuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxOWM0YjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzMS1maXgtbWlzc2luZy1VTE9OR19MT05HX01BWC1kZWZpbml0aW9uLWluLWNhc2Utb2YtbXVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSBhZGNkN2U0MjZmY2Q4MGU3NTQyNzRhNzMwMjIxZDFhMWY0OWRiYzIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNyBGZWIgMjAxOCAxNDowMTozMCArMDgwMAotU3ViamVjdDogW1BBVENIIDMxLzMxXSBmaXggbWlzc2luZyBVTE9OR19MT05HX01BWCBkZWZpbml0aW9uIGluIGNhc2Ugb2YgbXVzbAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nLmggYi9zcmMvYmFzaWMvbWlzc2luZy5oCi1pbmRleCA1YjlmZGU2OTIuLmE5MjJmMTM0NiAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC03Miw2ICs3MiwxMCBAQCBzdHJ1Y3Qgc29ja2FkZHJfdm0gewotIH07Ci0gI2VuZGlmIC8qICFIQVZFX0xJTlVYX1ZNX1NPQ0tFVFNfSCAqLwotIAotKyNpZm5kZWYgVUxPTkdfTE9OR19NQVgKLSsjZGVmaW5lIFVMT05HX0xPTkdfTUFYIFVMTE9OR19NQVgKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIFJMSU1JVF9SVFRJTUUKLSAjZGVmaW5lIFJMSU1JVF9SVFRJTUUgMTUKLSAjZW5kaWYKLS0tIAotMi4xMy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzItbWVtZmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMyLW1lbWZkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2NmZDYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzItbWVtZmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBAQAotbWlzc2luZ19zeXNjYWxsOiB3aGVuIGFkZGluZyBzeXNjYWxsIHJlcGxhY2VtZW50cywgdXNlIGRpZmZlcmVudCBuYW1lcyAoCi0KLSM4MjI5KQotCi1JbiBtZXNvbi5idWlsZCB3ZSBjaGVjayB0aGF0IGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHVzaW5nOgotICAgIG1lc29uLmdldF9jb21waWxlcignYycpLmhhc19mdW5jdGlvbignZm9vJykKLXdoaWNoIGNoZWNrcyB0aGUgZm9sbG93aW5nOgotLSBpZiBfX3N0dWJfZm9vIG9yIF9fc3R1Yl9fX2ZvbyBhcmUgZGVmaW5lZCwgcmV0dXJuIGZhbHNlCi0tIGlmIGZvbyBpcyBkZWNsYXJlZCAoYSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiBjYW4gYmUgdGFrZW4pLCByZXR1cm4gdHJ1ZQotLSBvdGhlcndpc2UgY2hlY2sgZm9yIF9fYnVpbHRpbl9tZW1mZF9jcmVhdGUKLQotX3N0dWIgaXMgZG9jdW1lbnRlZCBieSBnbGliYyBhcwotICAgSXQgZGVmaW5lcyBhIHN5bWJvbCAnX19zdHViX0ZVTkNUSU9OJyBmb3IgZWFjaCBmdW5jdGlvbgotICAgaW4gdGhlIEMgbGlicmFyeSB3aGljaCBpcyBhIHN0dWIsIG1lYW5pbmcgaXQgd2lsbCBmYWlsCi0gICBldmVyeSB0aW1lIGNhbGxlZCwgdXN1YWxseSBzZXR0aW5nIGVycm5vIHRvIEVOT1NZUy4KLQotU28gaWYgX19zdHViIGlzIGRlZmluZWQsIHdlIGtub3cgd2UgZG9uJ3Qgd2FudCB0byB1c2UgdGhlIGdsaWJjIHZlcnNpb24sIGJ1dAotdGhpcyBkb2Vzbid0IHRlbGwgdXMgaWYgdGhlIG5hbWUgaXRzZWxmIGlzIGRlZmluZWQgb3Igbm90LiBJZiBpdCBfaXNfIGRlZmluZWQsCi1hbmQgd2UgZGVmaW5lIG91ciByZXBsYWNlbWVudCBhcyBhbiBpbmxpbmUgc3RhdGljIGZ1bmN0aW9uLCB3ZSBnZXQgYW4gZXJyb3I6Ci0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvYmFzaWMvbWlzc2luZy5oOjEzNTg6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvYmFzaWMvdXRpbC5oOjQ3LAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3NyYy9iYXNpYy9jYWxlbmRhcnNwZWMuaDoyOSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvYmFzaWMvY2FsZW5kYXJzcGVjLmM6MzQ6Ci0uLi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmg6NjU6MTk6IGVycm9yOiBzdGF0aWMgZGVjbGFyYXRpb24gb2YgJ21lbWZkX2NyZWF0ZScgZm9sbG93cyBub24tc3RhdGljIGRlY2xhcmF0aW9uCi0gc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncykgewotICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgotLi4uL3Vzci9pbmNsdWRlL2JpdHMvbW1hbi1zaGFyZWQuaDo0Njo1OiBub3RlOiBwcmV2aW91cyBkZWNsYXJhdGlvbiBvZiAnbWVtZmRfY3JlYXRlJyB3YXMgaGVyZQotIGludCBtZW1mZF9jcmVhdGUgKGNvbnN0IGNoYXIgKl9fbmFtZSwgdW5zaWduZWQgaW50IF9fZmxhZ3MpIF9fVEhST1c7Ci0gICAgIF5+fn5+fn5+fn5+fgotCi1UbyBhdm9pZCB0aGlzIHByb2JsZW0sIGNhbGwgb3VyIGlubGluZSBmdW5jdGlvbnMgZGlmZmVyZW50IHRoYW4gZ2xpYmMsCi1hbmQgdXNlIGEgI2RlZmluZSB0byBtYXAgdGhlIG9mZmljaWFsIG5hbWUgdG8gb3VyIHJlcGxhY2VtZW50LgotCi1GaXhlcyAjODA5OS4KLQotdjI6Ci0tIHVzZSAibWlzc2luZ18iIGFzIHRoZSBwcmVmaXggaW5zdGVhZCBvZiAiXyIKLQotdjM6Ci0tIHJlYmFzZSBhbmQgdXBkYXRlIGZvciBzdGF0eCgpCi0KLSAgVW5mb3J0dW5hdGVseSAic3RhdHgiIGlzIGFsc28gcHJlc2VudCBpbiAic3RydWN0IHN0YXR4Iiwgc28gdGhlIGRlZmluZQotICBjYXVzZXMgaXNzdWVzLiBXb3JrIGFyb3VuZCB0aGlzIGJ5IHVzaW5nIGEgdHlwZWRlZi4KLQotSSBjaGVja2VkIHRoYXQgc3lzdGVtZCBjb21waWxlcyB3aXRoIGN1cnJlbnQgZ2xpYmMKLShnbGliYy1kZXZlbC0yLjI2LTI0LmZjMjcueDg2XzY0KSBpZiBIQVZFX01FTUZEX0NSRUFURSwgSEFWRV9HRVRUSUQsCi1IQVZFX1BJVk9UX1JPT1QsIEhBVkVfU0VUTlMsIEhBVkVfUkVOQU1FQVQyLCBIQVZFX0tDTVAsIEhBVkVfS0VZQ1RMLAotSEFWRV9DT1BZX0ZJTEVfUkFOR0UsIEhBVkVfQlBGLCBIQVZFX1NUQVRYIGFyZSBmb3JjZWQgdG8gMC4KLQotU2V0dGluZyBIQVZFX05BTUVfVE9fSEFORExFX0FUIHRvIDAgY2F1c2VzIGFuIGlzc3VlLCBidXQgaXQncyBub3QgYmVjYXVzZSBvZgotdGhlIGRlZmluZSwgYnV0IGJlY2F1c2Ugb2Ygc3RydWN0IGZpbGVfaGFuZGxlLgotCi0KLWJhY2twb3J0IGh0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzUxODdkZDJjNDAzY2FmOTJkMDlmMzQ5MWU0MWYxY2ViM2YxMDQ5MWYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvaXNzdWVzLzgwOTldCi1JbmRleDogZ2l0L3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9iYXNpYy9taXNzaW5nX3N5c2NhbGwuaAotKysrIGdpdC9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKLUBAIC0yNiw5ICsyNiwxMSBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaWYgIUhBVkVfUElWT1RfUk9PVAotLXN0YXRpYyBpbmxpbmUgaW50IHBpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKLStzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX3Bpdm90X3Jvb3QoY29uc3QgY2hhciAqbmV3X3Jvb3QsIGNvbnN0IGNoYXIgKnB1dF9vbGQpIHsKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKFNZU19waXZvdF9yb290LCBuZXdfcm9vdCwgcHV0X29sZCk7Ci0gfQotKwotKyMgIGRlZmluZSBwaXZvdF9yb290IG1pc3NpbmdfcGl2b3Rfcm9vdAotICNlbmRpZgotIAotICNpZiAhSEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FCi1AQCAtNjgsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hCi0gIyAgICBlbmRpZgotICMgIGVuZGlmCi0gCi0tc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncykgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfbWVtZmRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncykgewotICMgIGlmZGVmIF9fTlJfbWVtZmRfY3JlYXRlCi0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX21lbWZkX2NyZWF0ZSwgbmFtZSwgZmxhZ3MpOwotICMgIGVsc2UKLUBAIC03Niw2ICs3OCw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1lbWZkX2NyZWF0ZShjb25zdCBjaGEKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotIH0KLSsKLSsjICBkZWZpbmUgbWVtZmRfY3JlYXRlIG1pc3NpbmdfbWVtZmRfY3JlYXRlCi0gI2VuZGlmCi0gCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLUBAIC0xMTUsNyArMTE5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYQotICMgICAgZW5kaWYKLSAjICBlbmRpZgotIAotLXN0YXRpYyBpbmxpbmUgaW50IGdldHJhbmRvbSh2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgZmxhZ3MpIHsKLStzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX2dldHJhbmRvbSh2b2lkICpidWZmZXIsIHNpemVfdCBjb3VudCwgdW5zaWduZWQgZmxhZ3MpIHsKLSAjICBpZmRlZiBfX05SX2dldHJhbmRvbQotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9nZXRyYW5kb20sIGJ1ZmZlciwgY291bnQsIGZsYWdzKTsKLSAjICBlbHNlCi1AQCAtMTIzLDE0ICsxMjcsMTggQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlcgotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0gfQotKwotKyMgIGRlZmluZSBnZXRyYW5kb20gbWlzc2luZ19nZXRyYW5kb20KLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotIAotICNpZiAhSEFWRV9HRVRUSUQKLS1zdGF0aWMgaW5saW5lIHBpZF90IGdldHRpZCh2b2lkKSB7Ci0rc3RhdGljIGlubGluZSBwaWRfdCBtaXNzaW5nX2dldHRpZCh2b2lkKSB7Ci0gICAgICAgICByZXR1cm4gKHBpZF90KSBzeXNjYWxsKFNZU19nZXR0aWQpOwotIH0KLSsKLSsjICBkZWZpbmUgZ2V0dGlkIG1pc3NpbmdfZ2V0dGlkCi0gI2VuZGlmCi0gCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLUBAIC0xNTgsNyArMTY2LDcgQEAgc3RydWN0IGZpbGVfaGFuZGxlIHsKLSAgICAgICAgIHVuc2lnbmVkIGNoYXIgZl9oYW5kbGVbMF07Ci0gfTsKLSAKLS1zdGF0aWMgaW5saW5lIGludCBuYW1lX3RvX2hhbmRsZV9hdChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBmaWxlX2hhbmRsZSAqaGFuZGxlLCBpbnQgKm1udF9pZCwgaW50IGZsYWdzKSB7Ci0rc3RhdGljIGlubGluZSBpbnQgbWlzc2luZ19uYW1lX3RvX2hhbmRsZV9hdChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBmaWxlX2hhbmRsZSAqaGFuZGxlLCBpbnQgKm1udF9pZCwgaW50IGZsYWdzKSB7Ci0gIyAgaWZkZWYgX19OUl9uYW1lX3RvX2hhbmRsZV9hdAotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9uYW1lX3RvX2hhbmRsZV9hdCwgZmQsIG5hbWUsIGhhbmRsZSwgbW50X2lkLCBmbGFncyk7Ci0gIyAgZWxzZQotQEAgLTE2Niw2ICsxNzQsOCBAQCBzdGF0aWMgaW5saW5lIGludCBuYW1lX3RvX2hhbmRsZV9hdChpbnQKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotIH0KLSsKLSsjICBkZWZpbmUgbmFtZV90b19oYW5kbGVfYXQgbWlzc2luZ19uYW1lX3RvX2hhbmRsZV9hdAotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi1AQCAtMTgzLDcgKzE5Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG5hbWVfdG9faGFuZGxlX2F0KGludAotICMgICAgZW5kaWYKLSAjICBlbmRpZgotIAotLXN0YXRpYyBpbmxpbmUgaW50IHNldG5zKGludCBmZCwgaW50IG5zdHlwZSkgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3Npbmdfc2V0bnMoaW50IGZkLCBpbnQgbnN0eXBlKSB7Ci0gIyAgaWZkZWYgX19OUl9zZXRucwotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9zZXRucywgZmQsIG5zdHlwZSk7Ci0gIyAgZWxzZQotQEAgLTE5MSw2ICsyMDEsOCBAQCBzdGF0aWMgaW5saW5lIGludCBzZXRucyhpbnQgZmQsIGludCBuc3R5Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSB9Ci0rCi0rIyAgZGVmaW5lIHNldG5zIG1pc3Npbmdfc2V0bnMKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotQEAgLTIzNiw3ICsyNDgsNyBAQCBzdGF0aWMgaW5saW5lIHBpZF90IHJhd19nZXRwaWQodm9pZCkgewotICMgICAgZW5kaWYKLSAjICBlbmRpZgotIAotLXN0YXRpYyBpbmxpbmUgaW50IHJlbmFtZWF0MihpbnQgb2xkZmQsIGNvbnN0IGNoYXIgKm9sZG5hbWUsIGludCBuZXdmZCwgY29uc3QgY2hhciAqbmV3bmFtZSwgdW5zaWduZWQgZmxhZ3MpIHsKLStzdGF0aWMgaW5saW5lIGludCBtaXNzaW5nX3JlbmFtZWF0MihpbnQgb2xkZmQsIGNvbnN0IGNoYXIgKm9sZG5hbWUsIGludCBuZXdmZCwgY29uc3QgY2hhciAqbmV3bmFtZSwgdW5zaWduZWQgZmxhZ3MpIHsKLSAjICBpZmRlZiBfX05SX3JlbmFtZWF0MgotICAgICAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9yZW5hbWVhdDIsIG9sZGZkLCBvbGRuYW1lLCBuZXdmZCwgbmV3bmFtZSwgZmxhZ3MpOwotICMgIGVsc2UKLUBAIC0yNDQsMTIgKzI1NiwxNCBAQCBzdGF0aWMgaW5saW5lIGludCByZW5hbWVhdDIoaW50IG9sZGZkLCBjCi0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSB9Ci0rCi0rIyAgZGVmaW5lIHJlbmFtZWF0MiBtaXNzaW5nX3JlbmFtZWF0MgotICNlbmRpZgotIAotIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0gCi0gI2lmICFIQVZFX0tDTVAKLS1zdGF0aWMgaW5saW5lIGludCBrY21wKHBpZF90IHBpZDEsIHBpZF90IHBpZDIsIGludCB0eXBlLCB1bnNpZ25lZCBsb25nIGlkeDEsIHVuc2lnbmVkIGxvbmcgaWR4MikgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3Npbmdfa2NtcChwaWRfdCBwaWQxLCBwaWRfdCBwaWQyLCBpbnQgdHlwZSwgdW5zaWduZWQgbG9uZyBpZHgxLCB1bnNpZ25lZCBsb25nIGlkeDIpIHsKLSAjICBpZmRlZiBfX05SX2tjbXAKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfa2NtcCwgcGlkMSwgcGlkMiwgdHlwZSwgaWR4MSwgaWR4Mik7Ci0gIyAgZWxzZQotQEAgLTI1NywzNiArMjcxLDQ0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGtjbXAocGlkX3QgcGlkMSwgcGlkX3QKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotIH0KLSsKLSsjICBkZWZpbmUga2NtcCBtaXNzaW5nX2tjbXAKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotIAotICNpZiAhSEFWRV9LRVlDVEwKLS1zdGF0aWMgaW5saW5lIGxvbmcga2V5Y3RsKGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnMiwgdW5zaWduZWQgbG9uZyBhcmczLCB1bnNpZ25lZCBsb25nIGFyZzQsdW5zaWduZWQgbG9uZyBhcmc1KSB7Ci0rc3RhdGljIGlubGluZSBsb25nIG1pc3Npbmdfa2V5Y3RsKGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnMiwgdW5zaWduZWQgbG9uZyBhcmczLCB1bnNpZ25lZCBsb25nIGFyZzQsdW5zaWduZWQgbG9uZyBhcmc1KSB7Ci0gIyAgaWZkZWYgX19OUl9rZXljdGwKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfa2V5Y3RsLCBjbWQsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwotICMgIGVsc2UKLSAgICAgICAgIGVycm5vID0gRU5PU1lTOwotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0rCi0rIyAgZGVmaW5lIGtleWN0bCBtaXNzaW5nX2tleWN0bAotIH0KLSAKLS1zdGF0aWMgaW5saW5lIGtleV9zZXJpYWxfdCBhZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLCBjb25zdCB2b2lkICpwYXlsb2FkLCBzaXplX3QgcGxlbiwga2V5X3NlcmlhbF90IHJpbmdpZCkgewotK3N0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IG1pc3NpbmdfYWRkX2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3Qgdm9pZCAqcGF5bG9hZCwgc2l6ZV90IHBsZW4sIGtleV9zZXJpYWxfdCByaW5naWQpIHsKLSAjICBpZmRlZiBfX05SX2FkZF9rZXkKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfYWRkX2tleSwgdHlwZSwgZGVzY3JpcHRpb24sIHBheWxvYWQsIHBsZW4sIHJpbmdpZCk7Ci0gIyAgZWxzZQotICAgICAgICAgZXJybm8gPSBFTk9TWVM7Ci0gICAgICAgICByZXR1cm4gLTE7Ci0gIyAgZW5kaWYKLSsKLSsjICBkZWZpbmUgYWRkX2tleSBtaXNzaW5nX2FkZF9rZXkKLSB9Ci0gCi0tc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgcmVxdWVzdF9rZXkoY29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqZGVzY3JpcHRpb24sIGNvbnN0IGNoYXIgKiBjYWxsb3V0X2luZm8sIGtleV9zZXJpYWxfdCBkZXN0cmluZ2lkKSB7Ci0rc3RhdGljIGlubGluZSBrZXlfc2VyaWFsX3QgbWlzc2luZ19yZXF1ZXN0X2tleShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXNjcmlwdGlvbiwgY29uc3QgY2hhciAqIGNhbGxvdXRfaW5mbywga2V5X3NlcmlhbF90IGRlc3RyaW5naWQpIHsKLSAjICBpZmRlZiBfX05SX3JlcXVlc3Rfa2V5Ci0gICAgICAgICByZXR1cm4gc3lzY2FsbChfX05SX3JlcXVlc3Rfa2V5LCB0eXBlLCBkZXNjcmlwdGlvbiwgY2FsbG91dF9pbmZvLCBkZXN0cmluZ2lkKTsKLSAjICBlbHNlCi0gICAgICAgICBlcnJubyA9IEVOT1NZUzsKLSAgICAgICAgIHJldHVybiAtMTsKLSAjICBlbmRpZgotKwotKyMgIGRlZmluZSByZXF1ZXN0X2tleSBtaXNzaW5nX3JlcXVlc3Rfa2V5Ci0gfQotICNlbmRpZgotIAotQEAgLTMxMywxMCArMzM1LDEwIEBAIHN0YXRpYyBpbmxpbmUga2V5X3NlcmlhbF90IHJlcXVlc3Rfa2V5KGMKLSAjICAgIGVuZGlmCi0gIyAgZW5kaWYKLSAKLS1zdGF0aWMgaW5saW5lIHNzaXplX3QgY29weV9maWxlX3JhbmdlKGludCBmZF9pbiwgbG9mZl90ICpvZmZfaW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmRfb3V0LCBsb2ZmX3QgKm9mZl9vdXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKSB7Ci0rc3RhdGljIGlubGluZSBzc2l6ZV90IG1pc3NpbmdfY29weV9maWxlX3JhbmdlKGludCBmZF9pbiwgbG9mZl90ICpvZmZfaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZF9vdXQsIGxvZmZfdCAqb2ZmX291dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzKSB7Ci0gIyAgaWZkZWYgX19OUl9jb3B5X2ZpbGVfcmFuZ2UKLSAgICAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY29weV9maWxlX3JhbmdlLCBmZF9pbiwgb2ZmX2luLCBmZF9vdXQsIG9mZl9vdXQsIGxlbiwgZmxhZ3MpOwotICMgIGVsc2UKLUBAIC0zMjQsNiArMzQ2LDggQEAgc3RhdGljIGlubGluZSBzc2l6ZV90IGNvcHlfZmlsZV9yYW5nZShpbgotICAgICAgICAgcmV0dXJuIC0xOwotICMgIGVuZGlmCi0gfQotKwotKyMgIGRlZmluZSBjb3B5X2ZpbGVfcmFuZ2UgbWlzc2luZ19jb3B5X2ZpbGVfcmFuZ2UKLSAjZW5kaWYKLSAKLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotQEAgLTM1MSw3ICszNzUsNyBAQCBzdGF0aWMgaW5saW5lIHNzaXplX3QgY29weV9maWxlX3JhbmdlKGluCi0gCi0gdW5pb24gYnBmX2F0dHI7Ci0gCi0tc3RhdGljIGlubGluZSBpbnQgYnBmKGludCBjbWQsIHVuaW9uIGJwZl9hdHRyICphdHRyLCBzaXplX3Qgc2l6ZSkgewotK3N0YXRpYyBpbmxpbmUgaW50IG1pc3NpbmdfYnBmKGludCBjbWQsIHVuaW9uIGJwZl9hdHRyICphdHRyLCBzaXplX3Qgc2l6ZSkgewotICNpZmRlZiBfX05SX2JwZgotICAgICAgICAgcmV0dXJuIChpbnQpIHN5c2NhbGwoX19OUl9icGYsIGNtZCwgYXR0ciwgc2l6ZSk7Ci0gI2Vsc2UKLUBAIC0zNjAsNiArMzg0LDcgQEAgc3RhdGljIGlubGluZSBpbnQgYnBmKGludCBjbWQsIHVuaW9uIGJwZgotICNlbmRpZgotIH0KLSAKLSsjICBkZWZpbmUgYnBmIG1pc3NpbmdfYnBmCi0gI2VuZGlmCi0gCi0gLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzMtYmFzaWMtbWFjcm9zLXJlbmFtZS1ub3JldHVybi1pbnRvLV9ub3JldHVybl8tODQ1Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2NDdiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotRnJvbSA4NDhlODYzYWNjNTFlY2ZiMGYzOTU1YzQ5ODg3NDU4ODIwMWQ5MTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRnJhbmNrIEJ1aSA8ZmJ1aUBzdXNlLmNvbT4KLURhdGU6IFRodSwgMTUgTWFyIDIwMTggMDY6MjM6NDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gYmFzaWMvbWFjcm9zOiByZW5hbWUgbm9yZXR1cm4gaW50byBfbm9yZXR1cm5fICgjODQ1NikKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotIm5vcmV0dXJuIiBpcyByZXNlcnZlZCBhbmQgY2FuIGJlIHVzZWQgaW4gb3RoZXIgaGVhZGVyIGZpbGVzIHdlIGluY2x1ZGU6Ci0KLSAgWyAgIDE2c10gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9nY3J5cHQuaDozMDowLAotICBbICAgMTZzXSAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3JjL2pvdXJuYWwvam91cm5hbC1maWxlLmg6MjYsCi0gIFsgICAxNnNdICAgICAgICAgICAgICAgICAgZnJvbSAuLi9zcmMvam91cm5hbC9qb3VybmFsLXZhY3V1bS5jOjMxOgotICBbICAgMTZzXSAvdXNyL2luY2x1ZGUvZ3BnLWVycm9yLmg6MTU0NDo0NjogZXJyb3I6IGV4cGVjdGVkIOKAmCzigJkgb3Ig4oCYO+KAmSBiZWZvcmUg4oCYKeKAmSB0b2tlbgotICBbICAgMTZzXSAgdm9pZCBncGdydF9sb2dfYnVnIChjb25zdCBjaGFyICpmbXQsIC4uLikgICAgR1BHUlRfQVRUUl9OUl9QUklOVEYoMSwyKTsKLQotSGVyZSB3ZSBpbmNsdWRlIGdyY3J5cHQuaCAod2hpY2ggaW4gdHVybnMgaW5jbHVkZSBncGctZXJyb3IuaCkgKmFmdGVyKiB3ZQotIm5vcmV0dXJuIiB3YXMgZGVmaW5lZCBpbiBtYWNyby5oLgotLS0tCi0gc3JjL2Jhc2ljL2xvZy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQotIHNyYy9iYXNpYy9sb2cuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvYmFzaWMvbWFjcm8uaCAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKystLS0tLS0tLS0tCi0gc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmggICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9jb3JlL21haW4uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrLS0KLSBzcmMvam91cm5hbC90ZXN0LWpvdXJuYWwtaW50ZXJsZWF2aW5nLmMgfCAgMiArLQotIHNyYy9zaGFyZWQvcGFnZXIuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3VkZXYvY29sbGVjdC9jb2xsZWN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KLSA5IGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvODQ1Nl0KLQotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9sb2cuYyBiL3NyYy9iYXNpYy9sb2cuYwotaW5kZXggN2E3ZjJjYmVjLi4xNmEyNDMxYzUgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbG9nLmMKLSsrKyBiL3NyYy9iYXNpYy9sb2cuYwotQEAgLTgxNCw3ICs4MTQsNyBAQCBzdGF0aWMgdm9pZCBsb2dfYXNzZXJ0KAotICAgICAgICAgbG9nX2Rpc3BhdGNoX2ludGVybmFsKGxldmVsLCAwLCBmaWxlLCBsaW5lLCBmdW5jLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBidWZmZXIpOwotIH0KLSAKLS1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAotK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKLSAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCi1AQCAtODI2LDcgKzgyNiw3IEBAIG5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCi0gICAgICAgICBhYm9ydCgpOwotIH0KLSAKLS1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAotK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKLSAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2xvZy5oIGIvc3JjL2Jhc2ljL2xvZy5oCi1pbmRleCBlZmNmMGYxYmYuLjMxNGJlMTI4YSAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9sb2cuaAotKysrIGIvc3JjL2Jhc2ljL2xvZy5oCi1AQCAtMTg2LDcgKzE4Niw3IEBAIGludCBsb2dfZHVtcF9pbnRlcm5hbCgKLSAgICAgICAgICAgICAgICAgY2hhciAqYnVmZmVyKTsKLSAKLSAvKiBMb2dnaW5nIGZvciB2YXJpb3VzIGFzc2VydGlvbnMgKi8KLS1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKAotK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF9yZWFsbSgKLSAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCi1AQCAtMTk1LDcgKzE5NSw3IEBAIG5vcmV0dXJuIHZvaWQgbG9nX2Fzc2VydF9mYWlsZWRfcmVhbG0oCi0gI2RlZmluZSBsb2dfYXNzZXJ0X2ZhaWxlZCh0ZXh0LCAuLi4pIFwKLSAgICAgICAgIGxvZ19hc3NlcnRfZmFpbGVkX3JlYWxtKExPR19SRUFMTSwgKHRleHQpLCBfX1ZBX0FSR1NfXykKLSAKLS1ub3JldHVybiB2b2lkIGxvZ19hc3NlcnRfZmFpbGVkX3VucmVhY2hhYmxlX3JlYWxtKAotK19ub3JldHVybl8gdm9pZCBsb2dfYXNzZXJ0X2ZhaWxlZF91bnJlYWNoYWJsZV9yZWFsbSgKLSAgICAgICAgICAgICAgICAgTG9nUmVhbG0gcmVhbG0sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGUsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21hY3JvLmggYi9zcmMvYmFzaWMvbWFjcm8uaAotaW5kZXggOTViZTYzYTIwLi44OTExZWRmYzQgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvbWFjcm8uaAotKysrIGIvc3JjL2Jhc2ljL21hY3JvLmgKLUBAIC01Myw2ICs1MywxNSBAQAotICNlbHNlCi0gI2RlZmluZSBfZmFsbHRocm91Z2hfCi0gI2VuZGlmCi0rLyogRGVmaW5lIEMxMSBub3JldHVybiB3aXRob3V0IDxzdGRub3JldHVybi5oPiBhbmQgZXZlbiBvbiBvbGRlciBnY2MKLSsgKiBjb21waWxlciB2ZXJzaW9ucyAqLwotKyNpZm5kZWYgX25vcmV0dXJuXwotKyNpZiBfX1NURENfVkVSU0lPTl9fID49IDIwMTExMkwKLSsjZGVmaW5lIF9ub3JldHVybl8gX05vcmV0dXJuCi0rI2Vsc2UKLSsjZGVmaW5lIF9ub3JldHVybl8gX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKQotKyNlbmRpZgotKyNlbmRpZgotIAotIC8qIFRlbXBvcmFyaWx5IGRpc2FibGUgc29tZSB3YXJuaW5ncyAqLwotICNkZWZpbmUgRElTQUJMRV9XQVJOSU5HX0RFQ0xBUkFUSU9OX0FGVEVSX1NUQVRFTUVOVCAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC00MTQsMTYgKzQyMyw2IEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBBTElHTl9QT1dFUjIodW5zaWduZWQgbG9uZyB1KSB7Ci0gI2VuZGlmCi0gI2VuZGlmCi0gCi0tLyogRGVmaW5lIEMxMSBub3JldHVybiB3aXRob3V0IDxzdGRub3JldHVybi5oPiBhbmQgZXZlbiBvbiBvbGRlciBnY2MKLS0gKiBjb21waWxlciB2ZXJzaW9ucyAqLwotLSNpZm5kZWYgbm9yZXR1cm4KLS0jaWYgX19TVERDX1ZFUlNJT05fXyA+PSAyMDExMTJMCi0tI2RlZmluZSBub3JldHVybiBfTm9yZXR1cm4KLS0jZWxzZQotLSNkZWZpbmUgbm9yZXR1cm4gX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKQotLSNlbmRpZgotLSNlbmRpZgotLQotICNkZWZpbmUgREVGSU5FX1RSSVZJQUxfQ0xFQU5VUF9GVU5DKHR5cGUsIGZ1bmMpICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgZnVuYyMjcCh0eXBlICpwKSB7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgaWYgKCpwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotaW5kZXggYWE5ODQ2ZGI1Li5lNjEyMGFmNWIgMTAwNjQ0Ci0tLS0gYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotQEAgLTk4Nyw3ICs5ODcsNyBAQCBib29sIGlzX21haW5fdGhyZWFkKHZvaWQpIHsKLSAgICAgICAgIHJldHVybiBjYWNoZWQgPiAwOwotIH0KLSAKLS1ub3JldHVybiB2b2lkIGZyZWV6ZSh2b2lkKSB7Ci0rX25vcmV0dXJuXyB2b2lkIGZyZWV6ZSh2b2lkKSB7Ci0gCi0gICAgICAgICBsb2dfY2xvc2UoKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmggYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmgKLWluZGV4IDkzMDI5ZTM2ZS4uNTE3MGFkZWM3IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5oCi0rKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmgKLUBAIC05MSw3ICs5MSw3IEBAIGludCBwaWRfZnJvbV9zYW1lX3Jvb3RfZnMocGlkX3QgcGlkKTsKLSAKLSBib29sIGlzX21haW5fdGhyZWFkKHZvaWQpOwotIAotLW5vcmV0dXJuIHZvaWQgZnJlZXplKHZvaWQpOwotK19ub3JldHVybl8gdm9pZCBmcmVlemUodm9pZCk7Ci0gCi0gYm9vbCBvb21fc2NvcmVfYWRqdXN0X2lzX3ZhbGlkKGludCBvYSk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCAwNzY4NDZhNDEuLjRiMmQxNDkyMyAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21haW4uYwotKysrIGIvc3JjL2NvcmUvbWFpbi5jCi1AQCAtMTQxLDcgKzE0MSw3IEBAIHN0YXRpYyB1aW50NjRfdCBhcmdfZGVmYXVsdF90YXNrc19tYXggPSBVSU5UNjRfTUFYOwotIHN0YXRpYyBzZF9pZDEyOF90IGFyZ19tYWNoaW5lX2lkID0ge307Ci0gc3RhdGljIEVtZXJnZW5jeUFjdGlvbiBhcmdfY2FkX2J1cnN0X2FjdGlvbiA9IEVNRVJHRU5DWV9BQ1RJT05fUkVCT09UX0ZPUkNFOwotIAotLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgewotK19ub3JldHVybl8gc3RhdGljIHZvaWQgZnJlZXplX29yX3JlYm9vdCh2b2lkKSB7Ci0gCi0gICAgICAgICBpZiAoYXJnX2NyYXNoX3JlYm9vdCkgewotICAgICAgICAgICAgICAgICBsb2dfbm90aWNlKCJSZWJvb3RpbmcgaW4gMTBzLi4uIik7Ci1AQCAtMTU2LDcgKzE1Niw3IEBAIG5vcmV0dXJuIHN0YXRpYyB2b2lkIGZyZWV6ZV9vcl9yZWJvb3Qodm9pZCkgewotICAgICAgICAgZnJlZXplKCk7Ci0gfQotIAotLW5vcmV0dXJuIHN0YXRpYyB2b2lkIGNyYXNoKGludCBzaWcpIHsKLStfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIGNyYXNoKGludCBzaWcpIHsKLSAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gc2E7Ci0gICAgICAgICBwaWRfdCBwaWQ7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jIGIvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jCi1pbmRleCA1YTg4YjI3NzQuLmQ4N2JkYmRkMyAxMDA2NDQKLS0tLSBhL3NyYy9qb3VybmFsL3Rlc3Qtam91cm5hbC1pbnRlcmxlYXZpbmcuYwotKysrIGIvc3JjL2pvdXJuYWwvdGVzdC1qb3VybmFsLWludGVybGVhdmluZy5jCi1AQCAtMzcsNyArMzcsNyBAQAotIAotIHN0YXRpYyBib29sIGFyZ19rZWVwID0gZmFsc2U7Ci0gCi0tbm9yZXR1cm4gc3RhdGljIHZvaWQgbG9nX2Fzc2VydF9lcnJubyhjb25zdCBjaGFyICp0ZXh0LCBpbnQgZXJyb3IsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmdW5jKSB7Ci0rX25vcmV0dXJuXyBzdGF0aWMgdm9pZCBsb2dfYXNzZXJ0X2Vycm5vKGNvbnN0IGNoYXIgKnRleHQsIGludCBlcnJvciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMpIHsKLSAgICAgICAgIGxvZ19pbnRlcm5hbChMT0dfQ1JJVCwgZXJyb3IsIGZpbGUsIGxpbmUsIGZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgIiclcycgZmFpbGVkIGF0ICVzOiV1ICglcyk6ICVtIiwgdGV4dCwgZmlsZSwgbGluZSwgZnVuYyk7Ci0gICAgICAgICBhYm9ydCgpOwotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGFnZXIuYyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotaW5kZXggNzVkYjNjOTg1Li42ODFhZjljNDAgMTAwNjQ0Ci0tLS0gYS9zcmMvc2hhcmVkL3BhZ2VyLmMKLSsrKyBiL3NyYy9zaGFyZWQvcGFnZXIuYwotQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGludCBzdG9yZWRfc3RkZXJyID0gLTE7Ci0gc3RhdGljIGJvb2wgc3Rkb3V0X3JlZGlyZWN0ZWQgPSBmYWxzZTsKLSBzdGF0aWMgYm9vbCBzdGRlcnJfcmVkaXJlY3RlZCA9IGZhbHNlOwotIAotLW5vcmV0dXJuIHN0YXRpYyB2b2lkIHBhZ2VyX2ZhbGxiYWNrKHZvaWQpIHsKLStfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIHBhZ2VyX2ZhbGxiYWNrKHZvaWQpIHsKLSAgICAgICAgIGludCByOwotIAotICAgICAgICAgciA9IGNvcHlfYnl0ZXMoU1RESU5fRklMRU5PLCBTVERPVVRfRklMRU5PLCAodWludDY0X3QpIC0xLCAwKTsKLWRpZmYgLS1naXQgYS9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYyBiL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jCi1pbmRleCAyODIxNjQwZTkuLmM4ZmE0N2IzZCAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L2NvbGxlY3QvY29sbGVjdC5jCi0rKysgYi9zcmMvdWRldi9jb2xsZWN0L2NvbGxlY3QuYwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgX21hdGUgKm5vZGVfdG9fbWF0ZShzdHJ1Y3QgdWRldl9saXN0X25vZGUgKm5vZGUpCi0gICAgICAgICByZXR1cm4gY29udGFpbmVyX29mKG5vZGUsIHN0cnVjdCBfbWF0ZSwgbm9kZSk7Ci0gfQotIAotLW5vcmV0dXJuIHN0YXRpYyB2b2lkIHNpZ19hbHJtKGludCBzaWdubykKLStfbm9yZXR1cm5fIHN0YXRpYyB2b2lkIHNpZ19hbHJtKGludCBzaWdubykKLSB7Ci0gICAgICAgICBleGl0KDQpOwotIH0KLS0tIAotMi4xNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzQtRml4LWZvcm1hdC10cnVuY2F0aW9uLWNvbXBpbGUtZmFpbHVyZS1ieS10eXBlY2FzdGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2MDYxZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDM0LUZpeC1mb3JtYXQtdHJ1bmNhdGlvbi1jb21waWxlLWZhaWx1cmUtYnktdHlwZWNhc3RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotRnJvbSBjMmIzZWJlMTEyZWJmZDlmOWU4MmZiMTUzMWVlMjI1YzMxNTJjYTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF0cmljayBVaXRlcndpamsgPHBhdHJpY2tAcHVpdGVyd2lqay5vcmc+Ci1EYXRlOiBUaHUsIDIyIEZlYiAyMDE4IDE5OjQxOjMwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBmb3JtYXQtdHJ1bmNhdGlvbiBjb21waWxlIGZhaWx1cmUgYnkgdHlwZWNhc3RpbmcgVVNCIElEcwotICgjODI1MCkKLQotVGhpcyBwYXRjaCBhZGRzIHNhZmVfYXRvdXgxNiBmb3IgcGFyc2luZyBhbiB1bnNpZ25lZCBoZXhhZGVjaW1hbCAxNmJpdCBpbnQsIGFuZAotdXNlcyB0aGF0IGZvciBwYXJzaW5nIFVTQiBkZXZpY2UgYW5kIHZlbmRvciBJRHMuCi0KLVRoaXMgZml4ZXMgYSBjb21waWxlIGVycm9yIHdpdGggZ2NjLTggYmVjYXVzZSB3aGlsZSB3ZSBrbm93IHRoYXQgVVNCIElEcyBhcmUgMiBieXRlcywKLXRoZSBjb21waWxlciBkb2VzIG5vdCBrbm93IHRoYXQuCi0KLS4uL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmM6ODA6Mzg6IGVycm9yOiAnJTA0WCcgZGlyZWN0aXZlIG91dHB1dCBtYXkgYmUKLXRydW5jYXRlZCB3cml0aW5nIGJldHdlZW4gNCBhbmQgOCBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgYmV0d2VlbiAyIGFuZCA2Ci1bLVdlcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbj1dCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzU1NDdjMTI1MDNhNjgzMjkwZWFlZDQ3OTU0ZmZjZmIyZDFiYzAzY2RdCi0KLVNpZ25lZC1vZmYtYnk6IEFkYW0gV2lsbGlhbXNvbiA8YXdpbGxpYW1AcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgVWl0ZXJ3aWprIDxwdWl0ZXJ3aWprQHJlZGhhdC5jb20+Ci0tLS0KLSBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9iYXNpYy9wYXJzZS11dGlsLmggICAgICAgfCAgMiArKwotIHNyYy90ZXN0L3Rlc3QtcGFyc2UtdXRpbC5jICAgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jIHwgMTMgKysrKysrLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLWluZGV4IDk3NTMzNzIxZC4uZmYzZmMyOThhIDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYwotQEAgLTUzMiw2ICs1MzIsMzAgQEAgaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCkgewotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotIAotK2ludCBzYWZlX2F0b3V4MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCkgewotKyAgICAgICAgY2hhciAqeCA9IE5VTEw7Ci0rICAgICAgICB1bnNpZ25lZCBsb25nIGw7Ci0rCi0rICAgICAgICBhc3NlcnQocyk7Ci0rICAgICAgICBhc3NlcnQocmV0KTsKLSsKLSsgICAgICAgIHMgKz0gc3Ryc3BuKHMsIFdISVRFU1BBQ0UpOwotKwotKyAgICAgICAgZXJybm8gPSAwOwotKyAgICAgICAgbCA9IHN0cnRvdWwocywgJngsIDE2KTsKLSsgICAgICAgIGlmIChlcnJubyA+IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiAtZXJybm87Ci0rICAgICAgICBpZiAoIXggfHwgeCA9PSBzIHx8ICp4ICE9IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotKyAgICAgICAgaWYgKHNbMF0gPT0gJy0nKQotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVSQU5HRTsKLSsgICAgICAgIGlmICgodW5zaWduZWQgbG9uZykgKHVpbnQxNl90KSBsICE9IGwpCi0rICAgICAgICAgICAgICAgIHJldHVybiAtRVJBTkdFOwotKwotKyAgICAgICAgKnJldCA9ICh1aW50MTZfdCkgbDsKLSsgICAgICAgIHJldHVybiAwOwotK30KLSsKLSBpbnQgc2FmZV9hdG9kKGNvbnN0IGNoYXIgKnMsIGRvdWJsZSAqcmV0X2QpIHsKLSAgICAgICAgIF9jbGVhbnVwXyhmcmVlbG9jYWxlcCkgbG9jYWxlX3QgbG9jID0gKGxvY2FsZV90KSAwOwotICAgICAgICAgY2hhciAqeCA9IE5VTEw7Ci1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaCBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmgKLWluZGV4IDFlZGExZDdmOS4uNzI3NDIyMDU2IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAotKysrIGIvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuaAotQEAgLTU0LDYgKzU0LDggQEAgaW50IHNhZmVfYXRvdTgoY29uc3QgY2hhciAqcywgdWludDhfdCAqcmV0KTsKLSBpbnQgc2FmZV9hdG91MTYoY29uc3QgY2hhciAqcywgdWludDE2X3QgKnJldCk7Ci0gaW50IHNhZmVfYXRvaTE2KGNvbnN0IGNoYXIgKnMsIGludDE2X3QgKnJldCk7Ci0gCi0raW50IHNhZmVfYXRvdXgxNihjb25zdCBjaGFyICpzLCB1aW50MTZfdCAqcmV0KTsKLSsKLSBzdGF0aWMgaW5saW5lIGludCBzYWZlX2F0b3UzMihjb25zdCBjaGFyICpzLCB1aW50MzJfdCAqcmV0X3UpIHsKLSAgICAgICAgIGFzc2VydF9jYyhzaXplb2YodWludDMyX3QpID09IHNpemVvZih1bnNpZ25lZCkpOwotICAgICAgICAgcmV0dXJuIHNhZmVfYXRvdShzLCAodW5zaWduZWQqKSByZXRfdSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYwotaW5kZXggOTM3NTAwMjEzLi5hOTljZWE1YTEgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LXBhcnNlLXV0aWwuYwotKysrIGIvc3JjL3Rlc3QvdGVzdC1wYXJzZS11dGlsLmMKLUBAIC00NjgsNiArNDY4LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG9pMTYodm9pZCkgewotICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7Ci0gfQotIAotK3N0YXRpYyB2b2lkIHRlc3Rfc2FmZV9hdG91eDE2KHZvaWQpIHsKLSsgICAgICAgIGludCByOwotKyAgICAgICAgdWludDE2X3QgbDsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIjEyMzQiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgIGFzc2VydF9zZShsID09IDB4MTIzNCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCJhYmNkIiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UobCA9PSAweGFiY2QpOwotKwotKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiICAxMjM0IiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UobCA9PSAweDEyMzQpOwotKwotKyAgICAgICAgciA9IHNhZmVfYXRvdXgxNigiMTIzNDUiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRVJBTkdFKTsKLSsKLSsgICAgICAgIHIgPSBzYWZlX2F0b3V4MTYoIi0xIiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIgIC0xIiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVSQU5HRSk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCJqdW5rIiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMjN4IiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIxMi4zIiwgJmwpOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVJTlZBTCk7Ci0rCi0rICAgICAgICByID0gc2FmZV9hdG91eDE2KCIiLCAmbCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRUlOVkFMKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQgdGVzdF9zYWZlX2F0b3U2NCh2b2lkKSB7Ci0gICAgICAgICBpbnQgcjsKLSAgICAgICAgIHVpbnQ2NF90IGw7Ci1AQCAtNzQ1LDYgKzc4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG9sbGkoKTsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG91MTYoKTsKLSAgICAgICAgIHRlc3Rfc2FmZV9hdG9pMTYoKTsKLSsgICAgICAgIHRlc3Rfc2FmZV9hdG91eDE2KCk7Ci0gICAgICAgICB0ZXN0X3NhZmVfYXRvdTY0KCk7Ci0gICAgICAgICB0ZXN0X3NhZmVfYXRvaTY0KCk7Ci0gICAgICAgICB0ZXN0X3NhZmVfYXRvZCgpOwotZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4taHdkYi5jCi1pbmRleCBjYTdmN2MyMzAuLmRiZmUwMjQyOSAxMDA2NDQKLS0tLSBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKLSsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1od2RiLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gCi0gI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAiaHdkYi11dGlsLmgiCi0rI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKLSAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKLSAjaW5jbHVkZSAidWRldi11dGlsLmgiCi0gI2luY2x1ZGUgInVkZXYuaCIKLUBAIC02Myw3ICs2NCw3IEBAIGludCB1ZGV2X2J1aWx0aW5faHdkYl9sb29rdXAoc3RydWN0IHVkZXZfZGV2aWNlICpkZXYsCi0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKm1vZGFsaWFzX3VzYihzdHJ1Y3QgdWRldl9kZXZpY2UgKmRldiwgY2hhciAqcywgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgIGNvbnN0IGNoYXIgKnYsICpwOwotLSAgICAgICAgaW50IHZuLCBwbjsKLSsgICAgICAgIHVpbnQxNl90IHZuLCBwbjsKLSAKLSAgICAgICAgIHYgPSB1ZGV2X2RldmljZV9nZXRfc3lzYXR0cl92YWx1ZShkZXYsICJpZFZlbmRvciIpOwotICAgICAgICAgaWYgKCF2KQotQEAgLTcxLDEyICs3MiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqbW9kYWxpYXNfdXNiKHN0cnVjdCB1ZGV2X2RldmljZSAqZGV2LCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICAgcCA9IHVkZXZfZGV2aWNlX2dldF9zeXNhdHRyX3ZhbHVlKGRldiwgImlkUHJvZHVjdCIpOwotICAgICAgICAgaWYgKCFwKQotICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgICAgIHZuID0gc3RydG9sKHYsIE5VTEwsIDE2KTsKLS0gICAgICAgIGlmICh2biA8PSAwKQotLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgICAgIHBuID0gc3RydG9sKHAsIE5VTEwsIDE2KTsKLS0gICAgICAgIGlmIChwbiA8PSAwKQotLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgICAgIGlmIChzYWZlX2F0b3V4MTYodiwgJnZuKSA8IDApCi0rCQlyZXR1cm4gTlVMTDsKLSsgICAgICAgIGlmIChzYWZlX2F0b3V4MTYocCwgJnBuKSA8IDApCi0rCQlyZXR1cm4gTlVMTDsKLSAgICAgICAgIHNucHJpbnRmKHMsIHNpemUsICJ1c2I6diUwNFhwJTA0WCoiLCB2biwgcG4pOwotICAgICAgICAgcmV0dXJuIHM7Ci0gfQotLS0gCi0yLjE3LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAzNS1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzZkNTI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNWYxZjA2NGM4MWVhMzBhY2Y5M2NmYTBmYjQ2NmIzOGYwOTRmNDg4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDI3IE1heSAyMDE4IDA4OjM2OjQ0IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBnbGliYyBjb21wYXRpYmxlIGJhc2VuYW1lKCkgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCi0KLUZpeGVzIGJ1aWxkcyB3aXRoIG11c2wsIGV2ZW4gdGhvdWdoIHN5c3RlbWQgaXMgYWRhbWFudCBhYm91dAotdXNpbmcgbm9uLXBvc2l4IGJhc2VuYW1lIGltcGxlbWVudGF0aW9uLCB3ZSBoYXZlIGEgd2F5IG91dAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLWluZGV4IDJkNzgwNjQ5MWIuLjlhM2JkYjFkNzYgMTAwNjQ0Ci0tLS0gYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotKysrIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLUBAIC0yOSw2ICsyOSwxMCBAQAotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSAjdW5kZWYgYmFzZW5hbWUKLSAKLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNkZWZpbmUgYmFzZW5hbWUoc3JjKSAoc3RycmNocihzcmMsJy8nKSA/IHN0cnJjaHIoc3JjLCcvJykrMSA6IHNyYykKLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgotICNpbmNsdWRlICJidXMtY29tbW9uLWVycm9ycy5oIgotICNpbmNsdWRlICJidXMtaW50ZXJuYWwuaCIKLS0tIAotMi4xNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kL2xpYm1vdW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OWQ1YjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvbGlibW91bnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDIyN2I4YTc2MmZlYTE0NTg1NDdiZTJjZGYwZTZlNGFhYzAwNzk3MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIE9sYnJpY2ggPG0ub2xicmljaEBwZW5ndXRyb25peC5kZT4KLURhdGU6IE1vbiwgMjYgTWFyIDIwMTggMTc6MzQ6NTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZTogZG9uJ3QgaW5jbHVkZSBsaWJtb3VudC5oIGluIGEgaGVhZGVyIGZpbGUgKCM4NTgwKQotCi1saW51eC9mcy5oIHN5cy9tb3VudC5oLCBsaWJtb3VudC5oIGFuZCBtaXNzaW5nLmggYWxsIGluY2x1ZGUgTVNfKgotZGVmaW5pdGlvbnMuCi0KLVRvIGF2b2lkIHByb2JsZW1zLCBvbmx5IG9uZSBvZiBsaW51eC9mcy5oLCBzeXMvbW91bnQuaCBhbmQgbGlibW91bnQuaAotc2hvdWxkIGJlIGluY2x1ZGVkLiBBbmQgbWlzc2luZy5oIG11c3QgYmUgaW5jbHVkZWQgbGFzdC4KLQotV2l0aG91dCB0aGlzLCBidWlsZGluZyBzeXN0ZW1kIG1heSBmYWlsIHdpdGg6Ci0KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSBbLi4uXS9saWJtb3VudC9saWJtb3VudC5oOjMxOjAsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvbWFuYWdlci5oOjIzLAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL2VtZXJnZW5jeS1hY3Rpb24uaDozNywKLSAgICAgICAgICAgICAgICAgZnJvbSAuLi9zeXN0ZW1kLTIzOC9zcmMvY29yZS91bml0Lmg6MzQsCi0gICAgICAgICAgICAgICAgIGZyb20gLi4vc3lzdGVtZC0yMzgvc3JjL2NvcmUvZGJ1cy10aW1lci5oOjI1LAotICAgICAgICAgICAgICAgICBmcm9tIC4uL3N5c3RlbWQtMjM4L3NyYy9jb3JlL3RpbWVyLmM6MjY6Ci1bLi4uXS9zeXMvbW91bnQuaDo1NzoyOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBiZWZvcmUgbnVtZXJpYyBjb25zdGFudAotLS0tCi0gc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMgfCAxICsKLSBzcmMvY29yZS9tYW5hZ2VyLmggICAgICB8IDMgKystCi0gc3JjL2NvcmUvbW91bnQuYyAgICAgICAgfCAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKLWluZGV4IDczNDQ2MjNlYmY2Li5jMzQyMDkzYmNhNCAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCi0rKysgYi9zcmMvY29yZS9kYnVzLWV4ZWN1dGUuYwotQEAgLTE4LDYgKzE4LDcgQEAKLSAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICoqKi8KLSAKLSsjaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAKLWRpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmggYi9zcmMvY29yZS9tYW5hZ2VyLmgKLWluZGV4IDI4YzVkYTIyNWIxLi5lMDllMGNkZjVlOSAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlL21hbmFnZXIuaAotKysrIGIvc3JjL2NvcmUvbWFuYWdlci5oCi1AQCAtMjAsNyArMjAsNiBAQAotICAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKioqLwotIAotLSNpbmNsdWRlIDxsaWJtb3VudC5oPgotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gCi1AQCAtMzQsNiArMzMsOCBAQAotICNpbmNsdWRlICJsaXN0LmgiCi0gI2luY2x1ZGUgInJhdGVsaW1pdC5oIgotIAotK3N0cnVjdCBsaWJtbnRfbW9uaXRvcjsKLSsKLSAvKiBFbmZvcmNlIHVwcGVyIGxpbWl0IGhvdyBtYW55IG5hbWVzIHdlIGFsbG93ICovCi0gI2RlZmluZSBNQU5BR0VSX01BWF9OQU1FUyAxMzEwNzIgLyogMTI4SyAqLwotIAotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL21vdW50LmMgYi9zcmMvY29yZS9tb3VudC5jCi1pbmRleCAwZTc1NWRhNWMwMi4uMDE1NGViZGE1ZDYgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9tb3VudC5jCi0rKysgYi9zcmMvY29yZS9tb3VudC5jCi1AQCAtMjMsNiArMjMsOCBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KLSAKLSsjaW5jbHVkZSA8bGlibW91bnQuaD4KLSsKLSAjaW5jbHVkZSAic2QtbWVzc2FnZXMuaCIKLSAKLSAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjM3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDA5YjE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5NSArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVBFID0gIjEiCi0KLURFUEVORFMgPSAia21vZCBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGFjbCByZWFkbGluZSBsaWJjYXAgbGliY2dyb3VwIHV0aWwtbGludXgiCi0KLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBtZXNvbiBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCi0jIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtY2hlY2stZm9yLXVjaGFyLmgtaW4tbWVzb24uYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LURvLW5vdC1lbmFibGUtbnNzLXRlc3RzLWlmLW5zcy1zeXN0ZW1kLWlzLW5vdC1lbmFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMC10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctcmVtb3ZlLW5vYm9keS11c2VyLWdyb3VwLWNoZWNraW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1uc3MtbXltYWNoaW5lcy1CdWlsZC1jb25kaXRpb25hbGx5LXdoZW4tRU5BQkxFX01ZSE9TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLWZpeC1taXNzaW5nLVVMT05HX0xPTkdfTUFYLWRlZmluaXRpb24taW4tY2FzZS1vZi1tdXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1tZW1mZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLWJhc2ljLW1hY3Jvcy1yZW5hbWUtbm9yZXR1cm4taW50by1fbm9yZXR1cm5fLTg0NTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlibW91bnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1GaXgtZm9ybWF0LXRydW5jYXRpb24tY29tcGlsZS1mYWlsdXJlLWJ5LXR5cGVjYXN0aW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX3FlbXVhbGwgPSAiIGZpbGU6Ly8wMDAxLWNvcmUtZGV2aWNlLmMtQ2hhbmdlLXRoZS1kZWZhdWx0LWRldmljZS10aW1lb3V0LXRvLTIucGF0Y2giCi0KLSMgV29ya2Fyb3VuZCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3N0YWNrX2Noa19mYWlsX2xvY2FsJyBvbiBxZW11eDg2IGFuZCBxZW11cHBjIGZvciBtdXNsCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4NiA9ICIgZmlsZTovLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbF9xZW11cHBjID0gIiBmaWxlOi8vMDAwMS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1mbGFncy10by13b3JrYXJvdW5kLW11c2wtYnVpLnBhdGNoIgotCi1QQU1fUExVR0lOUyA9ICIgXAotICAgIHBhbS1wbHVnaW4tdW5peCBcCi0gICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCi0gICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgYmFja2xpZ2h0IFwKLSAgICBiaW5mbXQgXAotICAgIGZpcnN0Ym9vdCBcCi0gICAgaGliZXJuYXRlIFwKLSAgICBob3N0bmFtZWQgXAotICAgIGltYSBcCi0gICAgbG9jYWxlZCBcCi0gICAgbG9naW5kIFwKLSAgICBtYWNoaW5lZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbmV0d29ya2QgXAotICAgIG5zcyBcCi0gICAgcG9sa2l0IFwKLSAgICBxdW90YWNoZWNrIFwKLSAgICByYW5kb21zZWVkIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB0aW1lZGF0ZWQgXAotICAgIHRpbWVzeW5jZCBcCi0gICAgdXRtcCBcCi0gICAgdmNvbnNvbGUgXAotICAgIHh6IFwKLSIKLQotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCi0gICAgbG9jYWxlZCBcCi0gICAgbXlob3N0bmFtZSBcCi0gICAgbnNzIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc2VsaW51eCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB1dG1wIFwKLSIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLURhdWRpdD10cnVlLC1EYXVkaXQ9ZmFsc2UsYXVkaXQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLURiYWNrbGlnaHQ9dHJ1ZSwtRGJhY2tsaWdodD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItRGJpbmZtdD10cnVlLC1EYmluZm10PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLURiemlwMj10cnVlLC1EYnppcDI9ZmFsc2UsYnppcDIiCi1QQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItRGNvcmVkdW1wPXRydWUsLURjb3JlZHVtcD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLURsaWJjcnlwdHNldHVwPXRydWUsLURsaWJjcnlwdHNldHVwPWZhbHNlLGNyeXB0c2V0dXAiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi1EZGJ1cz10cnVlLC1EZGJ1cz1mYWxzZSxkYnVzIgotUEFDS0FHRUNPTkZJR1tlZmldID0gIi1EZWZpPXRydWUsLURlZmk9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItRGVsZnV0aWxzPXRydWUsLURlbGZ1dGlscz1mYWxzZSxlbGZ1dGlscyIKLVBBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItRGZpcnN0Ym9vdD10cnVlLC1EZmlyc3Rib290PWZhbHNlIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi1EZ2NyeXB0PXRydWUsLURnY3J5cHQ9ZmFsc2UsbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi1EaGliZXJuYXRlPXRydWUsLURoaWJlcm5hdGU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLURob3N0bmFtZWQ9dHJ1ZSwtRGhvc3RuYW1lZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaW1hXSA9ICItRGltYT10cnVlLC1EaW1hPWZhbHNlIgotIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKLVBBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLURpbXBvcnRkPXRydWUsLURpbXBvcnRkPWZhbHNlIgotIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCi1QQUNLQUdFQ09ORklHW2lwdGNdID0gIi1EbGliaXB0Yz10cnVlLC1EbGliaXB0Yz1mYWxzZSxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbam91cm5hbC11cGxvYWRdID0gIi1EbGliY3VybD10cnVlLC1EbGliY3VybD1mYWxzZSxjdXJsIgotUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLURsZGNvbmZpZz10cnVlLC1EbGRjb25maWc9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURsaWJpZG49dHJ1ZSwtRGxpYmlkbj1mYWxzZSxsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi1EbG9jYWxlZD10cnVlLC1EbG9jYWxlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItRGxvZ2luZD10cnVlLC1EbG9naW5kPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EbHo0PXRydWUsLURsejQ9ZmFsc2UsbHo0IgotUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLURtYWNoaW5lZD10cnVlLC1EbWFjaGluZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi1EbWljcm9odHRwZD10cnVlLC1EbWljcm9odHRwZD1mYWxzZSxsaWJtaWNyb2h0dHBkIgotUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItRG15aG9zdG5hbWU9dHJ1ZSwtRG15aG9zdG5hbWU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItRG5ldHdvcmtkPXRydWUsLURuZXR3b3JrZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItRG5zcy1zeXN0ZW1kPXRydWUsLURuc3Mtc3lzdGVtZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItRHBvbGtpdD10cnVlLC1EcG9sa2l0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLURxcmVuY29kZT10cnVlLC1EcXJlbmNvZGU9ZmFsc2UscXJlbmNvZGUiCi1QQUNLQUdFQ09ORklHW3F1b3RhY2hlY2tdID0gIi1EcXVvdGFjaGVjaz10cnVlLC1EcXVvdGFjaGVjaz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLURyYW5kb21zZWVkPXRydWUsLURyYW5kb21zZWVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZXNvbHZlZF0gPSAiLURyZXNvbHZlPXRydWUsLURyZXNvbHZlPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi1EcmZraWxsPXRydWUsLURyZmtpbGw9ZmFsc2UiCi0jIGxpYnNlY2NvbXAgaXMgZm91bmQgaW4gbWV0YS1zZWN1cml0eQotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICItRHNlY2NvbXA9dHJ1ZSwtRHNlY2NvbXA9ZmFsc2UsbGlic2VjY29tcCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsLURzZWxpbnV4PWZhbHNlLGxpYnNlbGludXgsaW5pdHNjcmlwdHMtc3VzaGVsbCIKLVBBQ0tBR0VDT05GSUdbc21hY2tdID0gIi1Ec21hY2s9dHJ1ZSwtRHNtYWNrPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLURzeXN1c2Vycz10cnVlLC1Ec3lzdXNlcnM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLUR0aW1lZGF0ZWQ9dHJ1ZSwtRHRpbWVkYXRlZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItRHRpbWVzeW5jZD10cnVlLC1EdGltZXN5bmNkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLURzcGxpdC11c3I9ZmFsc2UsLURzcGxpdC11c3I9dHJ1ZSIKLVBBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLUR1dG1wPXRydWUsLUR1dG1wPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLURWQUxHUklORD0xLCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbdmNvbnNvbGVdID0gIi1EdmNvbnNvbGU9dHJ1ZSwtRHZjb25zb2xlPWZhbHNlLCwke1BOfS12Y29uc29sZS1zZXR1cCIKLSMgVmVyaWZ5IGtleW1hcHMgb24gbG9jYWxlIGNoYW5nZQotUEFDS0FHRUNPTkZJR1t4a2Jjb21tb25dID0gIi1EeGtiY29tbW9uPXRydWUsLUR4a2Jjb21tb249ZmFsc2UsbGlieGtiY29tbW9uIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLUR4ej10cnVlLC1EeHo9ZmFsc2UseHoiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi1EemxpYj10cnVlLC1EemxpYj1mYWxzZSx6bGliIgotCi0jIEhlbHBlciB2YXJpYWJsZXMgdG8gY2xhcmlmeSBsb2NhdGlvbnMuICBUaGlzIG1pcnJvcnMgdGhlIGxvZ2ljIGluIHN5c3RlbWQncwotIyBidWlsZCBzeXN0ZW0uCi1yb290cHJlZml4ID89ICIke3Jvb3RfcHJlZml4fSIKLXJvb3RsaWJkaXIgPz0gIiR7YmFzZV9saWJkaXJ9Igotcm9vdGxpYmV4ZWNkaXIgPSAiJHtyb290cHJlZml4fS9saWIiCi0KLSMgVGhpcyBsaW5rcyB1ZGV2IHN0YXRpY2FsbHkgd2l0aCBzeXN0ZW1kIGhlbHBlciBsaWJyYXJ5LgotIyBPdGhlcndpc2UgdWRldiBwYWNrYWdlIHdvdWxkIGRlcGVuZCBvbiBzeXN0ZW1kIHBhY2thZ2UgKHdoaWNoIGhhcyB0aGUgbmVlZGVkIHNoYXJlZCBsaWJyYXJ5KSwKLSMgYW5kIGFsd2F5cyBwdWxsIGl0IGludG8gaW1hZ2VzLgotRVhUUkFfT0VNRVNPTiArPSAiLURsaW5rLXVkZXYtc2hhcmVkPWZhbHNlIgotCi1FWFRSQV9PRU1FU09OICs9ICItRG5vYm9keS11c2VyPW5vYm9keSBcCi0gICAgICAgICAgICAgICAgICAtRG5vYm9keS1ncm91cD1ub2JvZHkgXAotICAgICAgICAgICAgICAgICAgLURyb290aG9tZWRpcj0ke1JPT1RIT01FfSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RsaWJkaXI9JHtyb290bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRHJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgICAtRHN5c3ZyY25kLXBhdGg9JHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRGZpcm13YXJlLXBhdGg9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLSMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCB1c2luZyBwYXRocyBmcm9tIHN5c3Jvb3QKLUVYVFJBX09FTUVTT04gKz0gIi1Ea2V4ZWMtcGF0aD0ke3NiaW5kaXJ9L2tleGVjIFwKLSAgICAgICAgICAgICAgICAgIC1Ea2lsbC1wYXRoPSR7YmFzZV9iaW5kaXJ9L2tpbGwgXAotICAgICAgICAgICAgICAgICAgLURrbW9kLXBhdGg9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgICAgICAgICAgICAgICAtRG1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAotICAgICAgICAgICAgICAgICAgLURxdW90YWNoZWNrLXBhdGg9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICAgICAgICAgICAgICAgIC1EcXVvdGFvbi1wYXRoPSR7c2JpbmRpcn0vcXVvdGFvbiBcCi0gICAgICAgICAgICAgICAgICAtRHN1bG9naW4tcGF0aD0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCi0gICAgICAgICAgICAgICAgICAtRHVtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L3Vtb3VudCIKLQotZG9faW5zdGFsbCgpIHsKLQltZXNvbl9kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCi0JZmkKLQotCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAotCi0JIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KLQlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCi0KLQkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCWZpCi0KLQkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCi0Jc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAotCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgotCi0JIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKLQkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscwotCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9Ci0JZmkKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCi0JZmkKLQlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCi0KLQkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KLQkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCi0JCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCQlmaQotCWZpCi19Ci0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7Ci0gICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIikKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci1QQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZHxuc3MpLioiCi0KLVBBQ0tBR0VTID0rICJcCi0gICAgJHtQTn0tZ3VpIFwKLSAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCi0gICAgJHtQTn0taW5pdHJhbWZzIFwKLSAgICAke1BOfS1hbmFseXplIFwKLSAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCi0gICAgJHtQTn0tcnBtLW1hY3JvcyBcCi0gICAgJHtQTn0tYmluZm10IFwKLSAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCi0gICAgJHtQTn0teG9yZy14aW5pdHJjIFwKLSAgICAke1BOfS1jb250YWluZXIgXAotICAgICR7UE59LWV4dHJhLXV0aWxzIFwKLSIKLQotU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKLURFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMiCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXk7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQ7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgLS1ob21lLWRpciAke3N5c2NvbmZkaXJ9L3BvbGtpdC0xIHBvbGtpdGQ7JywgJycsIGQpfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHN5c3RlbWQtam91cm5hbCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgKz0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1idXMtcHJveHk7IgotCi1GSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCi0KLUZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKLVJERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCi0KLUZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKLQotUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCi1GSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtQTn0teG9yZy14aW5pdHJjID0gIiR7c3lzY29uZmRpcn0vWDExL3hpbml0L3hpbml0cmMuZC8qIgotCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAotICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCi0KLVJSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgotCi1GSUxFU18ke1BOfS1jb250YWluZXIgPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L21hY2hpbmVjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLW5zcGF3biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9pbXBvcnQtcHVicmluZy5ncGcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vYnVzbmFtZXMudGFyZ2V0LndhbnRzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvY2FsLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMtb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydGQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1yZW1vdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXVwbG9hZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLW1hY2hpbmVkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcHVsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC1uc3Bhd24uY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW5zcGF3bkAuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19teW1hY2hpbmVzLnNvLjIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCi0KLUZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC8qIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCi0gICAgICAgICAgICAgICAgL2Nncm91cCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RpbWVkYXRlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYm9vdGN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC8qLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvbW9kdWxlcy1sb2FkLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXNjdGwuZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3VzZXJzLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9lbnZpcm9ubWVudC5kIFwKLSAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbW9kcHJvYmUuZC9zeXN0ZW1kLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC50aW1lZGF0ZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvY2FsZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm5ldHdvcmsxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5yZXNvbHZlMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmhvc3RuYW1lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9naW4xLmNvbmYgXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIHV0aWwtbGludXgtYWdldHR5IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAotICAgICAgICAgICAgICAgICAgICAgIHV0aWwtbGludXgtZnNjayBlMmZzcHJvZ3MtZTJmc2NrIFwKLSAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCi0gICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCi0iCi0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCi0KLVBBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKLQotUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKLQotUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgotCi1GSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAotICAgICAgICAgICAgICAiCi0KLUZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgotSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi0jIFRPRE86Ci0jIHUtYSBmb3IgcnVubGV2ZWwgYW5kIHRlbGluaXQKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaW5pdCBoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCByZXNvbHYtY29uZiIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2luaXRdID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbml0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaW5pdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2luaXRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCi1BTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7Ci0JaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0JCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKLQkJCS0tcm9vdCAkRAotCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLQllbHNlCi0JCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wcmVybV91ZGV2LWh3ZGIgKCkgewotCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RiZWFhYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzOS5iYgpAQCAtMCwwICsxLDYwNiBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworCitQUk9WSURFUyA9ICJ1ZGV2IgorCitQRSA9ICIxIgorCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgbGliY2FwIHV0aWwtbGludXgiCisKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBtZXNvbiBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCisjIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTUkNfVVJJICs9ICJmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1yZW1vdmUtbm9ib2R5LXVzZXItZ3JvdXAtY2hlY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMtaWYtbnNzLXN5c3RlbWQtaXMtbm90LWVuYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1FTkFCTEVfTVlIT1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2dpbi11c2UtcGFyc2VfdWlkLXdoZW4tdW5tb3VudGluZy11c2VyLXJ1bnRpbWUtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2QtYnVzLW1ha2UtQlVTX0RFRkFVTFRfVElNRU9VVC1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMi1idWlsZC1zeXMtRGV0ZWN0LXdoZXRoZXItc3RydWN0LXN0YXR4LWlzLWRlZmluZWQtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtcmVzb2x2Y29uZi1maXhlcy1mb3ItdGhlLWNvbXBhdGliaWxpdHktaW50ZXJmYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS13aGVuLWRlc2VyaWFsaXppbmctc3RhdGUtYWx3YXlzLXVzZS1yZWFkX2xpbmUtTC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNob3duLXJlY3Vyc2l2ZS1sZXQtcy1yZXdvcmstdGhlLXJlY3Vyc2l2ZS1sb2dpYy10by0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kaGNwNi1tYWtlLXN1cmUtd2UtaGF2ZS1lbm91Z2gtc3BhY2UtZm9yLXRoZS1ESENQNi1vLnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIHBhdGNoZXMgbWFkZSBmb3IgbXVzbCBhcmUgb25seSBhcHBsaWVkIG9uIFRDTElCQyBpcyBtdXNsCitTUkNfVVJJICs9ICIke1NSQ19VUklfTVVTTH0iCitTUkNfVVJJX01VU0wgPSAiZmlsZTovLzAwMDEtVXNlLWdldGVudi13aGVuLXNlY3VyZS12ZXJzaW9ucy1hcmUtbm90LWF2YWlsYWJsZS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWluY2x1ZGUtZ3NoYWRvdy1vbmx5LWlmLUVOQUJMRV9HU0hBRE9XLWlzLTEucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDYtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNy1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwOC1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDEwLXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDExLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTItZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxMy1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTQtZml4LW1pc3NpbmctVUxPTkdfTE9OR19NQVgtZGVmaW5pdGlvbi1pbi1jYXNlLW9mLW11cy5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNS10ZXN0LWhleGRlY29jdC5jLUluY2x1ZGUtbWlzc2luZy5oLWZvci1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNi10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE3LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxOC1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE5LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMjAtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAyMS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggXAorICAgICAgICAgICAgICAgIgorCisjIFdvcmthcm91bmQgdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zdGFja19jaGtfZmFpbF9sb2NhbCcgb24gcWVtdXg4NiBhbmQgcWVtdXBwYyBmb3IgbXVzbAorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsX3FlbXV4ODYgPSAiIGZpbGU6Ly8wMDAxLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLWZsYWdzLXRvLXdvcmthcm91bmQtbXVzbC1idWkucGF0Y2giCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2xfcWVtdXBwYyA9ICIgZmlsZTovLzAwMDEtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3ItZmxhZ3MtdG8td29ya2Fyb3VuZC1tdXNsLWJ1aS5wYXRjaCIKKworUEFNX1BMVUdJTlMgPSAiIFwKKyAgICBwYW0tcGx1Z2luLXVuaXggXAorICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAorICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBsZGNvbmZpZyBwYW0gc2VsaW51eCB1c3JtZXJnZScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3hrYmNvbW1vbicsICcnLCBkKX0gXAorICAgIGFjbCBcCisgICAgYmFja2xpZ2h0IFwKKyAgICBiaW5mbXQgXAorICAgIGZpcnN0Ym9vdCBcCisgICAgZ3NoYWRvdyBcCisgICAgaGliZXJuYXRlIFwKKyAgICBob3N0bmFtZWQgXAorICAgIGltYSBcCisgICAga21vZCBcCisgICAgbG9jYWxlZCBcCisgICAgbG9naW5kIFwKKyAgICBtYWNoaW5lZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbmV0d29ya2QgXAorICAgIG5zcyBcCisgICAgcG9sa2l0IFwKKyAgICBxdW90YWNoZWNrIFwKKyAgICByYW5kb21zZWVkIFwKKyAgICByZXNvbHZlZCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB0aW1lZGF0ZWQgXAorICAgIHRpbWVzeW5jZCBcCisgICAgdXRtcCBcCisgICAgdmNvbnNvbGUgXAorICAgIHh6IFwKKyIKKworUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCisgICAgZ3NoYWRvdyBcCisgICAgbG9jYWxlZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbnNzIFwKKyAgICByZXNvbHZlZCBcCisgICAgc2VsaW51eCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB1dG1wIFwKKyIKKworIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCisjIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKKyMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi1EYWNsPXRydWUsLURhY2w9ZmFsc2UsYWNsIgorUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLURhdWRpdD10cnVlLC1EYXVkaXQ9ZmFsc2UsYXVkaXQiCitQQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLURiYWNrbGlnaHQ9dHJ1ZSwtRGJhY2tsaWdodD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItRGJpbmZtdD10cnVlLC1EYmluZm10PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLURiemlwMj10cnVlLC1EYnppcDI9ZmFsc2UsYnppcDIiCitQQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItRGNvcmVkdW1wPXRydWUsLURjb3JlZHVtcD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLURsaWJjcnlwdHNldHVwPXRydWUsLURsaWJjcnlwdHNldHVwPWZhbHNlLGNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi1EZGJ1cz10cnVlLC1EZGJ1cz1mYWxzZSxkYnVzIgorUEFDS0FHRUNPTkZJR1tlZmldID0gIi1EZWZpPXRydWUsLURlZmk9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItRGVsZnV0aWxzPXRydWUsLURlbGZ1dGlscz1mYWxzZSxlbGZ1dGlscyIKK1BBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItRGZpcnN0Ym9vdD10cnVlLC1EZmlyc3Rib290PWZhbHNlIgorIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZworUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi1EZ2NyeXB0PXRydWUsLURnY3J5cHQ9ZmFsc2UsbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1tnc2hhZG93XSA9ICItRGdzaGFkb3c9dHJ1ZSwtRGdzaGFkb3c9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpbWFdID0gIi1EaW1hPXRydWUsLURpbWE9ZmFsc2UiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItRGltcG9ydGQ9dHJ1ZSwtRGltcG9ydGQ9ZmFsc2UiCisjIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKK1BBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLURsaWJpcHRjPXRydWUsLURsaWJpcHRjPWZhbHNlLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLURsaWJjdXJsPXRydWUsLURsaWJjdXJsPWZhbHNlLGN1cmwiCitQQUNLQUdFQ09ORklHW2ttb2RdID0gIi1Ea21vZD10cnVlLC1Ea21vZD1mYWxzZSxrbW9kIgorUEFDS0FHRUNPTkZJR1tsZGNvbmZpZ10gPSAiLURsZGNvbmZpZz10cnVlLC1EbGRjb25maWc9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURsaWJpZG49dHJ1ZSwtRGxpYmlkbj1mYWxzZSxsaWJpZG4iCitQQUNLQUdFQ09ORklHW2xvY2FsZWRdID0gIi1EbG9jYWxlZD10cnVlLC1EbG9jYWxlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbG9naW5kXSA9ICItRGxvZ2luZD10cnVlLC1EbG9naW5kPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi1EbHo0PXRydWUsLURsejQ9ZmFsc2UsbHo0IgorUEFDS0FHRUNPTkZJR1ttYWNoaW5lZF0gPSAiLURtYWNoaW5lZD10cnVlLC1EbWFjaGluZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlLGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCitQQUNLQUdFQ09ORklHW21pY3JvaHR0cGRdID0gIi1EbWljcm9odHRwZD10cnVlLC1EbWljcm9odHRwZD1mYWxzZSxsaWJtaWNyb2h0dHBkIgorUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItRG15aG9zdG5hbWU9dHJ1ZSwtRG15aG9zdG5hbWU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItRG5ldHdvcmtkPXRydWUsLURuZXR3b3JrZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItRG5zcy1zeXN0ZW1kPXRydWUsLURuc3Mtc3lzdGVtZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItRHBvbGtpdD10cnVlLC1EcG9sa2l0PWZhbHNlIgorUEFDS0FHRUNPTkZJR1twb3J0YWJsZWRdID0gIi1EcG9ydGFibGVkPXRydWUsLURwb3J0YWJsZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgorUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGltZS1lcG9jaF0gPSAiLUR0aW1lLWVwb2NoPTAsLCIKK1BBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgorUEFDS0FHRUNPTkZJR1tzYmlubWVyZ2VdID0gIi1Ec3BsaXQtYmluPWZhbHNlLC1Ec3BsaXQtYmluPXRydWUiCitQQUNLQUdFQ09ORklHW3V0bXBdID0gIi1EdXRtcD10cnVlLC1EdXRtcD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EVkFMR1JJTkQ9MSwsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItRHZjb25zb2xlPXRydWUsLUR2Y29uc29sZT1mYWxzZSwsJHtQTn0tdmNvbnNvbGUtc2V0dXAiCisjIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItRHhrYmNvbW1vbj10cnVlLC1EeGtiY29tbW9uPWZhbHNlLGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi1EeHo9dHJ1ZSwtRHh6PWZhbHNlLHh6IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRHpsaWI9dHJ1ZSwtRHpsaWI9ZmFsc2UsemxpYiIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCisjIFRoaXMgbGlua3MgdWRldiBzdGF0aWNhbGx5IHdpdGggc3lzdGVtZCBoZWxwZXIgbGlicmFyeS4KKyMgT3RoZXJ3aXNlIHVkZXYgcGFja2FnZSB3b3VsZCBkZXBlbmQgb24gc3lzdGVtZCBwYWNrYWdlICh3aGljaCBoYXMgdGhlIG5lZWRlZCBzaGFyZWQgbGlicmFyeSksCisjIGFuZCBhbHdheXMgcHVsbCBpdCBpbnRvIGltYWdlcy4KK0VYVFJBX09FTUVTT04gKz0gIi1EbGluay11ZGV2LXNoYXJlZD1mYWxzZSIKKworRVhUUkFfT0VNRVNPTiArPSAiLURub2JvZHktdXNlcj1ub2JvZHkgXAorICAgICAgICAgICAgICAgICAgLURub2JvZHktZ3JvdXA9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKKyAgICAgICAgICAgICAgICAgICIKKworIyBIYXJkY29kZSB0YXJnZXQgYmluYXJ5IHBhdGhzIHRvIGF2b2lkIHVzaW5nIHBhdGhzIGZyb20gc3lzcm9vdAorRVhUUkFfT0VNRVNPTiArPSAiLURrZXhlYy1wYXRoPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgICAgICAgICAgICAgICAgLURraWxsLXBhdGg9JHtiYXNlX2JpbmRpcn0va2lsbCBcCisgICAgICAgICAgICAgICAgICAtRGttb2QtcGF0aD0ke2Jhc2VfYmluZGlyfS9rbW9kIFwKKyAgICAgICAgICAgICAgICAgIC1EbW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS9tb3VudCBcCisgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAorICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgorCitkb19pbnN0YWxsKCkgeworCW1lc29uX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCSMgUHJvdmlkZWQgYnkgYSBzZXBhcmF0ZSByZWNpcGUKKwkJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2VyaWFsLWdldHR5KiAtZgorCWZpCisKKwkjIFByb3ZpZGUgc3VwcG9ydCBmb3IgaW5pdHJhbWZzCisJWyAhIC1lICR7RH0vaW5pdCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZCAke0R9L2luaXQKKwlbICEgLWUgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vdWRldmQKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLworCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJZmkKKworCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAorCisJIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KKwlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCisKKwkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWZpCisKKwkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAorCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCisJaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KKwlmaQorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKKwkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAorCWVsc2UKKwkJc2VkIC1pIC1lICJzJV5MISAvZXRjL3Jlc29sdi5jb25mLiokJUwhIC9ldGMvcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJWciICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwlmaQorCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKKworCSMgSWYgcG9sa2l0IGlzIHNldHVwIGZpeHVwIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpZiBbIC1kICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQgXTsgdGhlbgorCQkJY2htb2QgNzAwICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJCWNob3duIHBvbGtpdGQ6cm9vdCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCWZpCisJZmkKKworCSMgY29uZiBmaWxlcyBhcmUgaGFuZGxlZCBieSBzeXN0ZW1kLWNvbmYKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkCisJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mCisJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCisJcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9sb2dpbmQuY29uZgorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYKKwlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZgorCisJIyBkdXBsaWNhdGUgdWRldmFkbSBmb3IgcG9zdGluc3Qgc2NyaXB0CisJaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorCWxuICR7RH0ke2Jhc2VfYmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQorfQorCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpeworICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorfQorUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgorCitQQUNLQUdFUyA9KyAiXAorICAgICR7UE59LWd1aSBcCisgICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAorICAgICR7UE59LWluaXRyYW1mcyBcCisgICAgJHtQTn0tYW5hbHl6ZSBcCisgICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAorICAgICR7UE59LXJwbS1tYWNyb3MgXAorICAgICR7UE59LWJpbmZtdCBcCisgICAgJHtQTn0tenNoLWNvbXBsZXRpb24gXAorICAgICR7UE59LXhvcmcteGluaXRyYyBcCisgICAgJHtQTn0tY29udGFpbmVyIFwKKyAgICAke1BOfS1leHRyYS11dGlscyBcCisiCisKK1NVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCitERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1nYXRld2F5OycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aW1lc3luY2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXRpbWVzeW5jOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCitVU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJy0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS9wb2xraXQtMSBwb2xraXRkOycsICcnLCBkKX0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBzeXN0ZW1kLWpvdXJuYWwiCitVU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzICs9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5OyIKKworRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgorCitGSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCitSREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgorCitGSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCisKK1JERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgorRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LXhvcmcteGluaXRyYyA9ICIke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiIKKworRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK0ZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKK1JSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgorCitSUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKKworRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAorIgorCitGSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaGFsdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS90ZWxpbml0IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2luaXQgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC8qIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCisgICAgICAgICAgICAgICAgL2Nncm91cCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3Jlc29sdmVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvZW52aXJvbm1lbnQuZCBcCisgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHByb2JlLmQvc3lzdGVtZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZWRhdGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2NhbGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5uZXR3b3JrMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5ob3N0bmFtZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZXN5bmMxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5wb3J0YWJsZTEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkgdXRpbC1saW51eC1mc2NrIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQgc3lzdGVtZC1jb25mIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAic3lzdGVtZC1leHRyYS11dGlscyBcCisgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKKyAgICAgICAgICAgICAgICAgICAgICBlMmZzcHJvZ3MtZTJmc2NrIFwKKyAgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWF1dG9mczQga2VybmVsLW1vZHVsZS11bml4IGtlcm5lbC1tb2R1bGUtaXB2NiBcCisgICAgICAgICAgICAgICAgICAgICAgb3MtcmVsZWFzZSBcCisiCisKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28gbGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnICs9ICJsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kb2MgKz0gIiBsaWJkaXIiCisKK1BBQ0tBR0VTID0rICJ1ZGV2IHVkZXYtaHdkYiIKKworUlBST1ZJREVTX3VkZXYgPSAiaG90cGx1ZyIKKworUkRFUEVORFNfdWRldi1od2RiICs9ICJ1ZGV2IgorCitGSUxFU191ZGV2ICs9ICIke2Jhc2Vfc2JpbmRpcn0vdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAorICAgICAgICAgICAgICAiCisKK0ZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJ1ZGV2IgorSU5JVFNDUklQVF9OQU1FX3VkZXYgPSAic3lzdGVtZC11ZGV2ZCIKK0lOSVRTQ1JJUFRfUEFSQU1TX3VkZXYgPSAic3RhcnQgMDMgUyAuIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCByZXNvbHYtY29uZiIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZXNvbHYtY29uZl0gPz0gIjUwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaGFsdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaGFsdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3JlYm9vdF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JlYm9vdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3NodXRkb3duXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2h1dGRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9zaHV0ZG93biIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3NodXRkb3duXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcG93ZXJvZmZdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb3dlcm9mZl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcG93ZXJvZmZdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtydW5sZXZlbF0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bmxldmVsXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwiCitBTFRFUk5BVElWRV9QUklPUklUWVtydW5sZXZlbF0gPz0gIjMwMCIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtMi44OGRzZi8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LTIuODhkc2YvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NzViNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LTIuODhkc2YvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gMjljN2E1MjlkM2JiMGMxZTIwMjM5Zjg4NWU3NGM1MDM2ZjFhOTA4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDYgQXVnIDIwMTggMTU6Mzg6NTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggZm9yIG1ham9yL21pbm9yIGRlZmluZXMgaW4gZ2xpYmMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgc3JjL2Jvb3Rsb2dkLmMgfCAgIDMgKysrCisgc3JjL2Jvb3Rsb2dkLm8gfCBCaW4gNTg0NDggLT4gNjAzNzYgYnl0ZXMKKyBzcmMvZG93YWxsLmMgICB8ICAgMyArKysKKyBzcmMvc2h1dGRvd24uYyB8ICAgNCArKystCisgNCBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL2Jvb3Rsb2dkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL2Jvb3Rsb2dkLmMKKysrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9ib290bG9nZC5jCitAQCAtNTMsNiArNTMsOSBAQAorICNpZmRlZiBfX2xpbnV4X18KKyAjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisgI2VuZGlmCisrI2lmZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisgCisgY2hhciAqVmVyc2lvbiA9ICJAKCMpIGJvb3Rsb2dkIDIuODYgMDMtSnVuLTIwMDQgbWlxdWVsc0BjaXN0cm9uLm5sIjsKKyAKK0luZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9kb3dhbGwuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvZG93YWxsLmMKKysrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9kb3dhbGwuYworQEAgLTM3LDYgKzM3LDkgQEAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHNldGptcC5oPgorICNpbmNsdWRlIDxwYXRocy5oPgorKyNpZmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorKyNlbmRpZgorIAorICNpZm5kZWYgX1BBVEhfREVWCisgIyBkZWZpbmUgX1BBVEhfREVWCSIvZGV2LyIKK0luZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9zaHV0ZG93bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9zaHV0ZG93bi5jCisrKysgc3lzdmluaXQtMi44OGRzZi9zcmMvc2h1dGRvd24uYworQEAgLTU3LDcgKzU3LDkgQEAKKyAjaW5jbHVkZSAicmVib290LmgiCisgI2luY2x1ZGUgImluaXRyZXEuaCIKKyAjaW5jbHVkZSAiaW5pdC5oIgorLQorKyNpZmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorKyNlbmRpZgorIAorIGNoYXIgKlZlcnNpb24gPSAiQCgjKSBzaHV0ZG93biAyLjg2LTEgMzEtSnVsLTIwMDQgbWlxdWVsc0BjaXN0cm9uLm5sIjsKKyAKK0luZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9tb3VudHBvaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL21vdW50cG9pbnQuYworKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL21vdW50cG9pbnQuYworQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPGdldG9wdC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorKyNpZmRlZiBfX0dMSUJDX18KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorKyNlbmRpZgorIAorIGludCBkb3N0YXQoY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCBpbnQgZG9fbHN0YXQsIGludCBxdWlldCkKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKaW5kZXggODliMWI2OS4uYmZjMTI4MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgpAQCAtMTUsNiArMTUsNyBAQAogICAgICAgICAgICBmaWxlOi8vcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9yZWFscGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcmNTLWRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vcmMgXAogICAgICAgICAgICBmaWxlOi8vcmNTIFwKQEAgLTI5LDcgKzMwLDcgQEAKIEIgPSAiJHtTfS9zcmMiCiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLURFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QiCitERVBFTkRTX2FwcGVuZCA9ICIgdXBkYXRlLXJjLmQtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN2aW5pdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi41LmJiCmluZGV4IDg4YWQ4ZjEuLjU5MmRkOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjUuYmIKQEAgLTMwLDYgKzMwLDcgQEAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAogICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmV4ZWNkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKICAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAogIgogCkBAIC00OSw2ICs1MCwxMCBAQAogCiAJIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQogCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKKworCSMgZHVwbGljYXRlIHVkZXZhZG0gZm9yIHBvc3RpbnN0IHNjcmlwdAorCWluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KKwlsbiAke0R9JHtiaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCiB9CiAKIGRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewpAQCAtNjQsNyArNjksNyBAQAogUEFDS0FHRVMgPSsgImV1ZGV2LWh3ZGIiCiAKIAotRklMRVNfJHtQTn0gKz0gIiR7bGliZXhlY2Rpcn0gJHtiYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKIEZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCiAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXApAQCAtODAsOCArODUsNyBAQAogUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKIHBrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKICAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLSAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAotICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKyAgICAgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQogICAgIGVsc2UKICAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCiAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZi9tb3VudC5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZi9tb3VudC5zaAppbmRleCBkNzYwMzI4Li4zZWU2N2IxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmYvbW91bnQuc2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mL21vdW50LnNoCkBAIC00LDEwICs0LDI4IEBACiAjCiAjIEF0dGVtcHQgdG8gbW91bnQgYW55IGFkZGVkIGJsb2NrIGRldmljZXMgYW5kIHVtb3VudCBhbnkgcmVtb3ZlZCBkZXZpY2VzCiAKK0JBU0VfSU5JVD0iYHJlYWRsaW5rIC1mICJAYmFzZV9zYmluZGlyQC9pbml0ImAiCitJTklUX1NZU1RFTUQ9IkBzeXN0ZW1kX3VuaXRkaXJAL3N5c3RlbWQiCiAKLU1PVU5UPSIvYmluL21vdW50IgoraWYgWyAieCRCQVNFX0lOSVQiID0gIngkSU5JVF9TWVNURU1EIiBdO3RoZW4KKyAgICAjIHN5c3RlbWQgYXMgaW5pdCB1c2VzIHN5c3RlbWQtbW91bnQgdG8gbW91bnQgYmxvY2sgZGV2aWNlcworICAgIE1PVU5UPSIvdXNyL2Jpbi9zeXN0ZW1kLW1vdW50IgorICAgIFVNT1VOVD0iL3Vzci9iaW4vc3lzdGVtZC11bW91bnQiCisKKyAgICBpZiBbIC14ICRNT1VOVCBdICYmIFsgLXggJFVNT1VOVCBdOworICAgIHRoZW4KKyAgICAgICAgbG9nZ2VyICJVc2luZyBzeXN0ZW1kLW1vdW50IHRvIGZpbmlzaCBtb3VudCIKKyAgICBlbHNlCisgICAgICAgIGxvZ2dlciAiTGludXggaW5pdCBpcyB1c2luZyBzeXN0ZW1kLCBzbyBwbGVhc2UgaW5zdGFsbCBzeXN0ZW1kLW1vdW50IHRvIGZpbmlzaCBtb3VudCIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKK2Vsc2UKKyAgICBNT1VOVD0iL2Jpbi9tb3VudCIKKyAgICBVTU9VTlQ9Ii9iaW4vdW1vdW50IgorZmkKKwogUE1PVU5UPSIvdXNyL2Jpbi9wbW91bnQiCi1VTU9VTlQ9Ii9iaW4vdW1vdW50IgorCiBmb3IgbGluZSBpbiBgZ3JlcCAtaCAtdiBeIyAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0IC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QuZC8qYAogZG8KIAlpZiBbIGAgZXhwciBtYXRjaCAiJERFVk5BTUUiICIkbGluZSIgYCAtZ3QgMCBdOwpAQCAtMTcsMTYgKzM1LDYzIEBACiAJZmkKIGRvbmUKIAotYXV0b21vdW50KCkgewkKK2F1dG9tb3VudF9zeXN0ZW1kKCkgeworICAgIG5hbWU9ImBiYXNlbmFtZSAiJERFVk5BTUUiYCIKKworICAgICMgU2tpcCB0aGUgcGFydGl0aW9uIHdoaWNoIGFyZSBhbHJlYWR5IGluIC9ldGMvZnN0YWIKKyAgICBncmVwICJeW1s6c3BhY2U6XV0qJERFVk5BTUUiIC9ldGMvZnN0YWIgJiYgcmV0dXJuCisgICAgZm9yIG4gaW4gTEFCRUwgUEFSVExBQkVMIFVVSUQgUEFSVFVVSUQ7IGRvCisgICAgICAgIHRtcD0iJChsc2JsayAtbyAkbiAkREVWTkFNRSB8IHNlZCAtZSAnMWQnKSIKKyAgICAgICAgdGVzdCAteiAiJHRtcCIgJiYgY29udGludWUKKyAgICAgICAgdG1wPSIkbj0kdG1wIgorICAgICAgICBncmVwICJeW1s6c3BhY2U6XV0qJHRtcCIgL2V0Yy9mc3RhYiAmJiByZXR1cm4KKyAgICBkb25lCisKKyAgICBbIC1kICIvcnVuL21lZGlhLyRuYW1lIiBdIHx8IG1rZGlyIC1wICIvcnVuL21lZGlhLyRuYW1lIgorCisgICAgTU9VTlQ9IiRNT1VOVCAtbyBzaWxlbnQiCisKKyAgICAjIElmIGZpbGVzeXN0ZW10eXBlIGlzIHZmYXQsIGNoYW5nZSB0aGUgb3duZXJzaGlwIGdyb3VwIHRvICdkaXNrJywgYW5kCisgICAgIyBncmFudCBpdCB3aXRoICB3L3IveCBwZXJtaXNzaW9ucy4KKyAgICBjYXNlICRJRF9GU19UWVBFIGluCisgICAgdmZhdHxmYXQpCisgICAgICAgIE1PVU5UPSIkTU9VTlQgLW8gdW1hc2s9MDA3LGdpZD1gYXdrIC1GJzonICcvXmRpc2sve3ByaW50ICQzfScgL2V0Yy9ncm91cGAiCisgICAgICAgIDs7CisgICAgIyBUT0RPCisgICAgKikKKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICBpZiAhICRNT1VOVCAtLW5vLWJsb2NrIC10IGF1dG8gJERFVk5BTUUgIi9ydW4vbWVkaWEvJG5hbWUiCisgICAgdGhlbgorICAgICAgICAjbG9nZ2VyICJtb3VudC5zaC9hdXRvbW91bnQiICIkTU9VTlQgLXQgYXV0byAkREVWTkFNRSBcIi9ydW4vbWVkaWEvJG5hbWVcIiBmYWlsZWQhIgorICAgICAgICBybV9kaXIgIi9ydW4vbWVkaWEvJG5hbWUiCisgICAgZWxzZQorICAgICAgICBsb2dnZXIgIm1vdW50LnNoL2F1dG9tb3VudCIgIkF1dG8tbW91bnQgb2YgWy9ydW4vbWVkaWEvJG5hbWVdIHN1Y2Nlc3NmdWwiCisgICAgICAgIHRvdWNoICIvdG1wLy5hdXRvbW91bnQtJG5hbWUiCisgICAgZmkKK30KKworYXV0b21vdW50KCkgewogCW5hbWU9ImBiYXNlbmFtZSAiJERFVk5BTUUiYCIKIAorCWlmIFsgLXggIiRQTU9VTlQiIF07IHRoZW4KKwkJJFBNT1VOVCAkREVWTkFNRSAyPiAvZGV2L251bGwKKwllbGlmIFsgLXggJE1PVU5UIF07IHRoZW4KKwkJJE1PVU5UICRERVZOQU1FIDI+IC9kZXYvbnVsbAorCWZpCisKKwkjIElmIHRoZSBkZXZpY2UgaXNuJ3QgbW91bnRlZCBhdCB0aGlzIHBvaW50LCBpdCBpc24ndAorCSMgY29uZmlndXJlZCBpbiBmc3RhYgorCWdyZXAgLXEgIl4kREVWTkFNRSAiIC9wcm9jL21vdW50cyAmJiByZXR1cm4KKwogCSEgdGVzdCAtZCAiL3J1bi9tZWRpYS8kbmFtZSIgJiYgbWtkaXIgLXAgIi9ydW4vbWVkaWEvJG5hbWUiCiAJIyBTaWxlbnQgdXRpbC1saW51eCdzIHZlcnNpb24gb2YgbW91bnRpbmcgYXV0bwogCWlmIFsgInhgcmVhZGxpbmsgJE1PVU5UYCIgPSAieC9iaW4vbW91bnQudXRpbC1saW51eCIgXSA7CiAJdGhlbgogCQlNT1VOVD0iJE1PVU5UIC1vIHNpbGVudCIKIAlmaQotCQorCiAJIyBJZiBmaWxlc3lzdGVtIHR5cGUgaXMgdmZhdCwgY2hhbmdlIHRoZSBvd25lcnNoaXAgZ3JvdXAgdG8gJ2Rpc2snLCBhbmQKIAkjIGdyYW50IGl0IHdpdGggIHcvci94IHBlcm1pc3Npb25zLgogCWNhc2UgJElEX0ZTX1RZUEUgaW4KQEAgLTYzLDI4ICsxMjgsMjQgQEAKIFsgLWUgL3N5cy9ibG9jay8kbmFtZS9kZXZpY2UvbWVkaWEgXSAmJiBtZWRpYV90eXBlPWBjYXQgL3N5cy9ibG9jay8kbmFtZS9kZXZpY2UvbWVkaWFgCiAKIGlmIFsgIiRBQ1RJT04iID0gImFkZCIgXSAmJiBbIC1uICIkREVWTkFNRSIgXSAmJiBbIC1uICIkSURfRlNfVFlQRSIgLW8gIiRtZWRpYV90eXBlIiA9ICJjZHJvbSIgXTsgdGhlbgotCWlmIFsgLXggIiRQTU9VTlQiIF07IHRoZW4KLQkJJFBNT1VOVCAkREVWTkFNRSAyPiAvZGV2L251bGwKLQllbGlmIFsgLXggJE1PVU5UIF07IHRoZW4KLSAgICAJCSRNT1VOVCAkREVWTkFNRSAyPiAvZGV2L251bGwKLQlmaQotCQotCSMgSWYgdGhlIGRldmljZSBpc24ndCBtb3VudGVkIGF0IHRoaXMgcG9pbnQsIGl0IGlzbid0Ci0JIyBjb25maWd1cmVkIGluIGZzdGFiIChub3RlIHRoZSByb290IGZpbGVzeXN0ZW0gY2FuIHNob3cgdXAgYXMKLQkjIC9kZXYvcm9vdCBpbiAvcHJvYy9tb3VudHMsIHNvIGNoZWNrIHRoZSBkZXZpY2UgbnVtYmVyIHRvbykKLQlpZiBleHByICRNQUpPUiAiKiIgMjU2ICsgJE1JTk9SICE9IGBzdGF0IC1jICVkIC9gOyB0aGVuCi0JCWdyZXAgLXEgIl4kREVWTkFNRSAiIC9wcm9jL21vdW50cyB8fCBhdXRvbW91bnQKLQlmaQorICAgICMgTm90ZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGNhbiBzaG93IHVwIGFzIC9kZXYvcm9vdCBpbiAvcHJvYy9tb3VudHMsCisgICAgIyBzbyBjaGVjayB0aGUgZGV2aWNlIG51bWJlciB0b28KKyAgICBpZiBleHByICRNQUpPUiAiKiIgMjU2ICsgJE1JTk9SICE9IGBzdGF0IC1jICVkIC9gOyB0aGVuCisgICAgICAgIGlmIFsgImBiYXNlbmFtZSAkTU9VTlRgIiA9ICJzeXN0ZW1kLW1vdW50IiBdO3RoZW4KKyAgICAgICAgICAgIGF1dG9tb3VudF9zeXN0ZW1kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF1dG9tb3VudAorICAgICAgICBmaQorICAgIGZpCiBmaQogCi0KIGlmIFsgIiRBQ1RJT04iID0gInJlbW92ZSIgXSB8fCBbICIkQUNUSU9OIiA9ICJjaGFuZ2UiIF0gJiYgWyAteCAiJFVNT1VOVCIgXSAmJiBbIC1uICIkREVWTkFNRSIgXTsgdGhlbgotCWZvciBtbnQgaW4gYGNhdCAvcHJvYy9tb3VudHMgfCBncmVwICIkREVWTkFNRSIgfCBjdXQgLWYgMiAtZCAiICIgYAotCWRvCi0JCSRVTU9VTlQgJG1udAotCWRvbmUKLQkKLQkjIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9tIGF1dG8tbW91bnRlcgotCW5hbWU9ImBiYXNlbmFtZSAiJERFVk5BTUUiYCIKLQl0ZXN0IC1lICIvdG1wLy5hdXRvbW91bnQtJG5hbWUiICYmIHJtX2RpciAiL3J1bi9tZWRpYS8kbmFtZSIKKyAgICBmb3IgbW50IGluIGBjYXQgL3Byb2MvbW91bnRzIHwgZ3JlcCAiJERFVk5BTUUiIHwgY3V0IC1mIDIgLWQgIiAiIGAKKyAgICBkbworICAgICAgICAkVU1PVU5UICRtbnQKKyAgICBkb25lCisKKyAgICAjIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9tIGF1dG8tbW91bnRlcgorICAgIG5hbWU9ImBiYXNlbmFtZSAiJERFVk5BTUUiYCIKKyAgICB0ZXN0IC1lICIvdG1wLy5hdXRvbW91bnQtJG5hbWUiICYmIHJtX2RpciAiL3J1bi9tZWRpYS8kbmFtZSIKIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYgppbmRleCA0M2ExY2ZmLi45MGY5MzNkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIKQEAgLTI5LDYgKzI5LDkgQEAKICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvc2NyaXB0cy8KIAogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21vdW50LnNoICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvc2NyaXB0cy9tb3VudC5zaAorICAgIHNlZCAtaSAnc3xAc3lzdGVtZF91bml0ZGlyQHwke3N5c3RlbWRfdW5pdGRpcn18ZycgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9zY3JpcHRzL21vdW50LnNoCisgICAgc2VkIC1pICdzfEBiYXNlX3NiaW5kaXJAfCR7YmFzZV9zYmluZGlyfXxnJyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3NjcmlwdHMvbW91bnQuc2gKKwogICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25ldHdvcmsuc2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9zY3JpcHRzCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQvYWRkLXZlcmJvc2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kL2FkZC12ZXJib3NlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjQ0M2ZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQvYWRkLXZlcmJvc2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIHVwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kLm9yZwkyMDA1LTAxLTAzIDAwOjMwOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIHVwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kCTIwMDctMTItMDEgMTk6NDE6MDguMDAwMDAwMDAwICswMjAwCi1AQCAtMTksNiArMTksNyBAQAotIG5vdHJlYWxseT0wCi0gZm9yY2U9MAotIGRvc3RhcnQ9MAotK3ZlcmJvc2U9MAotIAotIHVzYWdlKCkKLSB7Ci1AQCAtMjgsNiArMjksNyBAQAotICAgICAgICB1cGRhdGUtcmMuZCBbLW5dIFstciA8cm9vdD5dIFstc10gPGJhc2VuYW1lPiBzdGFydHxzdG9wIE5OIHJ1bmx2bCBbcnVubHZsXSBbLi4uXSAuCi0gCQktbjogbm90IHJlYWxseQotIAkJLWY6IGZvcmNlCi0rCQktdjogdmVyYm9zZQotIAkJLXI6IGFsdGVybmF0ZSByb290IHBhdGggKGRlZmF1bHQgaXMgLykKLSAJCS1zOiBpbnZva2Ugc3RhcnQgbWV0aG9kcyBpZiBhcHByb3ByaWF0ZSB0byBjdXJyZW50IHJ1bmxldmVsCi0gRU9GCi1AQCAtNjksNyArNzEsNyBAQAotIAlsZXY9YGVjaG8gJDIgfCBjdXQgLWQvIC1mMWAKLSAJbm49YGVjaG8gJDIgfCBjdXQgLWQvIC1mMmAKLSAJZm49IiR7ZXRjZH0ke2xldn0uZC8ke3N0YXJ0c3RvcH0ke25ufSR7Ym59IgotLQllY2hvICIgICRmbiAtPiAuLi9pbml0LmQvJGJuIgotKwlbICR2ZXJib3NlIC1lcSAxIF0gJiYgZWNobyAiICAkZm4gLT4gLi4vaW5pdC5kLyRibiIKLSAJaWYgWyAkbm90cmVhbGx5IC1lcSAwIF07IHRoZW4KLSAJCW1rZGlyIC1wIGBkaXJuYW1lICRmbmAKLSAgCQlsbiAtcyAuLi9pbml0LmQvJGJuICRmbgotQEAgLTg5LDcgKzkxLDcgQEAKLSAJCWV4aXQgMAotIAlmaQotIAotLQllY2hvICIgQWRkaW5nIHN5c3RlbSBzdGFydHVwIGZvciAkaW5pdGQvJGJuIC4uLiIKLSsJZWNobyAiIEFkZGluZyBzeXN0ZW0gc3RhcnR1cCBmb3IgJGluaXRkLyRibi4iCi0gCi0gCWZvciBpIGluICRzdGFydGxpbmtzOyBkbwotIAkJZG9saW5rIFMgJGkKLUBAIC0xMDUsNiArMTA3LDEwIEBACi0gCQkJc2hpZnQKLSAJCQljb250aW51ZQotIAkJCTs7Ci0rCQktdikJdmVyYm9zZT0xCi0rCQkJc2hpZnQKLSsJCQljb250aW51ZQotKwkJCTs7Ci0gCQktZikJZm9yY2U9MQotIAkJCXNoaWZ0Ci0gCQkJY29udGludWUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQvY2hlY2staWYtc3ltbGlua3MtYXJlLXZhbGlkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9jaGVjay1pZi1zeW1saW5rcy1hcmUtdmFsaWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NTE3MWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9jaGVjay1pZi1zeW1saW5rcy1hcmUtdmFsaWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1DaGVjayBpZiBzeW1saW5rcyBhcmUgdmFsaWQKLQotV2hlbiB1c2luZyByb290IG9wdGlvbiBhbmQgJGluaXRkLyRibiBpcyBhIHN5bWxpbmssIHRoZSBzY3JpcHQgd291bGQgZmFpbCBiZWNhdXNlCi10aGUgc3ltbGluayBwb2ludHMgdG8gYSBwYXRoIG9uIHRhcmdldC4gRm9yIGV4YW1wbGU6Ci0KLS9wYXRoL3RvL3RhcmdldC9yb290ZnMvZXRjL2luaXQuZC9zeXNsb2cgLT4gL2V0Yy9pbml0LmQvc3lzbG9nLmJ1c3lib3gKLQotSGVuY2UsIFsgLWYgL3BhdGgvdG8vdGFyZ2V0L3Jvb3Rmcy9ldGMvaW5pdC5kL3N5c2xvZyBdIGNvbmRpdGlvbiB3b3VsZCByZXR1cm4KLWZhbHNlLgotCi1UaGlzIHBhdGNoIGFkZHMgdGhlIHBvc2liaWxpdHkgdG8gY2hlY2sgd2hldGhlciB0aGUgZmlsZSB0aGUgc3ltbGluayBwb2ludHMgdG8KLWFjdHVhbGx5IGV4aXN0cyBpbiByb290ZnMgcGF0aCBhbmQgdGhlbiBjb250aW51ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4gCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotCi1JbmRleDogZ2l0L3VwZGF0ZS1yYy5kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdXBkYXRlLXJjLmQKLSsrKyBnaXQvdXBkYXRlLXJjLmQKLUBAIC0xNDcsMTMgKzE0NywzNCBAQCBmaQotIGJuPSQxCi0gc2hpZnQKLSAKLStzbj0kaW5pdGQvJGJuCi0raWYgWyAtTCAiJHNuIiAtYSAtbiAiJHJvb3QiIF07IHRoZW4KLSsJaWYgd2hpY2ggcmVhZGxpbmsgPi9kZXYvbnVsbDsgdGhlbgotKwkJd2hpbGUgdHJ1ZTsgZG8KLSsJCQlsaW5rc249IiQocmVhZGxpbmsgIiRzbiIpIgotKwkJCWlmIFsgLXogIiRsaW5rc24iIF07IHRoZW4KLSsJCQkJYnJlYWsKLSsJCQlmaQotKwotKwkJCXNuPSIkbGlua3NuIgotKwkJCWNhc2UgIiRzbiIgaW4KLSsJCQkJLyopIHNuPSIkcm9vdCRzbiIgOzsKLSsJCQkJKikgIHNuPSIkaW5pdGQvJHNuIiA7OwotKwkJCWVzYWMKLSsJCWRvbmUKLSsJZWxzZQotKwkJZWNobyAidXBkYXRlLXJjLmQ6IHJlYWRsaW5rIHRvb2wgbm90IHByZXNlbnQsIGNhbm5vdCBjaGVjayB3aGV0aGVyIFwKLSsJCQkJJHNuIHN5bWxpbmsgcG9pbnRzIHRvIGEgdmFsaWQgZmlsZS4iID4mMgotKwlmaQotK2ZpCi0rCi0gaWYgWyAkMSAhPSAicmVtb3ZlIiBdOyB0aGVuCi0tCWlmIFsgISAtZiAiJGluaXRkLyRibiIgXTsgdGhlbgotKwlpZiBbICEgLWYgIiRzbiIgXTsgdGhlbgotIAkJZWNobyAidXBkYXRlLXJjLmQ6ICRpbml0ZC8kYm46IGZpbGUgZG9lcyBub3QgZXhpc3QiID4mMgotIAkJZXhpdCAxCi0gCWZpCi0gZWxzZQotLQlpZiBbIC1mICIkaW5pdGQvJGJuIiBdOyB0aGVuCi0rCWlmIFsgLWYgIiRzbiIgXTsgdGhlbgotIAkJaWYgWyAkZm9yY2UgLWVxIDEgXTsgdGhlbgotIAkJCWVjaG8gInVwZGF0ZS1yYy5kOiAkaW5pdGQvJGJuIGV4aXN0cyBkdXJpbmcgcmMuZCBwdXJnZSAoY29udGludWluZykiID4mMgotIAkJZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZC9maXgtdG8taGFuZGxlLXByaW9yaXR5LW51bWJlcnMtY29ycmVjdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWJjMjM0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmQvZml4LXRvLWhhbmRsZS1wcmlvcml0eS1udW1iZXJzLWNvcnJlY3RseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1GaXggdG8gaGFuZGxlIHByaW9yaXR5IG51bWJlcnMgY29ycmVjdGx5LgotUHJldmlvdXNseSwgaWYgdGhlIHByaW9yaXR5IG51bWJlciBpcyAnMDgnIG9yICcwOScsIGZvciBleGFtcGxlLAotdGhlIHNjcmlwdCBjYW5ub3QgaGFuZGxlIHRoZW0gY29ycmVjdGx5IGFzIHRoZXNlIG51bWJlcnMgYXJlIHRyZWF0ZWQKLWFzIG9jdGFsIG51bWJlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHVwZGF0ZS1yYy5kIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdXBkYXRlLXJjLmQgYi91cGRhdGUtcmMuZAotaW5kZXggZWM1MGQxNS4uYzcwYjg1OSAxMDA2NDQKLS0tLSBhL3VwZGF0ZS1yYy5kCi0rKysgYi91cGRhdGUtcmMuZAotQEAgLTIwNSw3ICsyMDUsNyBAQCBjYXNlICQxIGluCi0gCQkJCWV4aXQgMQotIAkJCWZpCi0gCQkJc2hpZnQKLS0JCQlOTj1gcHJpbnRmICUwMmQgJDFgCi0rCQkJTk49YHByaW50ZiAlMDJkICQoZXhwciAkMSArIDApYAotIAkJCXNoaWZ0Ci0gCQkJd2hpbGUgWyAieCQxIiAhPSAieC4iIF07IGRvCi0gCQkJCWlmIFsgJCMgLWVxIDAgXTsgdGhlbgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZDQzMTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIm1hbmFnZSBzeW1saW5rcyBpbiAvZXRjL3JjTi5kIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcGhpbGIvdXBkYXRlLXJjLmQvIgotREVTQ1JJUFRJT04gPSAidXBkYXRlLXJjLmQgaXMgYSB1dGlsaXR5IHRoYXQgYWxsb3dzIHRoZSBtYW5hZ2VtZW50IG9mIHN5bWxpbmtzIHRvIHRoZSBpbml0c2NyaXB0cyBpbiB0aGUgL2V0Yy9yY04uZCBkaXJlY3Rvcnkgc3RydWN0dXJlLiIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly91cGRhdGUtcmMuZDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE1O21kNT0xNDhhNDgzMjFiMTBlYjM3YzFmYTNlZTAyYjk0MGE3NSIKLQotUFIgPSAicjUiCi0KLSMgUmV2aXNpb24gY29ycmVzcG9uZGluZyB0byB0YWcgdXBkYXRlLXJjLmRfMC43Ci1TUkNSRVYgPSAiZWNhNjgwZGRmMjhkMDI0OTU0ODk1ZjU5YTI0MWE2MjJkZDU3NWMxMSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3BoaWxiL3VwZGF0ZS1yYy5kLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtdmVyYm9zZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jaGVjay1pZi1zeW1saW5rcy1hcmUtdmFsaWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXRvLWhhbmRsZS1wcmlvcml0eS1udW1iZXJzLWNvcnJlY3RseS5wYXRjaCBcCi0gICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGFsbGFyY2gKLQotZG9fY29tcGlsZSgpIHsKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U30vdXBkYXRlLXJjLmQgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLXJjLmQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYTIxYWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuOC5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIm1hbmFnZSBzeW1saW5rcyBpbiAvZXRjL3JjTi5kIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcGhpbGIvdXBkYXRlLXJjLmQvIgorREVTQ1JJUFRJT04gPSAidXBkYXRlLXJjLmQgaXMgYSB1dGlsaXR5IHRoYXQgYWxsb3dzIHRoZSBtYW5hZ2VtZW50IG9mIHN5bWxpbmtzIHRvIHRoZSBpbml0c2NyaXB0cyBpbiB0aGUgL2V0Yy9yY04uZCBkaXJlY3Rvcnkgc3RydWN0dXJlLiIKK1NFQ1RJT04gPSAiYmFzZSIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly91cGRhdGUtcmMuZDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE1O21kNT0xNDhhNDgzMjFiMTBlYjM3YzFmYTNlZTAyYjk0MGE3NSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy91cGRhdGUtcmMuZCIKK1NSQ1JFViA9ICIyMmUwNjkyODk4YzNlN2NlZWRjOGViNWZmNGVjOGUwYjljMzQwYjJkIgorCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19jb21waWxlKCkgeworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS91cGRhdGUtcmMuZCAke0R9JHtzYmluZGlyfS91cGRhdGUtcmMuZAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKaW5kZXggMGI3ZGI1Mi4uYTA1YzFjYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYwpAQCAtMzUsNyArMzUsNyBAQAogICAgICAgICAgICAgIHV0aWwtbGludXgtbHNibGsgdXRpbC1saW51eC1ta2ZzLmNyYW1mcyB1dGlsLWxpbnV4LWZzdHJpbSBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1wYXJ0eCB1dGlsLWxpbnV4LWh3Y2xvY2sgdXRpbC1saW51eC1tb3VudHBvaW50IFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LWZpbmRmcyB1dGlsLWxpbnV4LWdldG9wdCB1dGlsLWxpbnV4LXN1bG9naW4gdXRpbC1saW51eC1wcmxpbWl0IFwKLSAgICAgICAgICAgICB1dGlsLWxpbnV4LWlvbmljZSB1dGlsLWxpbnV4LXN3aXRjaC1yb290IgorICAgICAgICAgICAgIHV0aWwtbGludXgtaW9uaWNlIHV0aWwtbGludXgtc3dpdGNoLXJvb3QgdXRpbC1saW51eC11bnNoYXJlIgogUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5bGlibW91bnQnLCAndXRpbC1saW51eC1weWxpYm1vdW50JywgJycsIGQpfSIKIFBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd1dGlsLWxpbnV4LXJ1bnVzZXIgdXRpbC1saW51eC1zdScsICcnLCBkKX0iCiAKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUta2lsbCAtLWVuYWJsZS1sYXN0IC0tZW5hYmxlLW1lc2cgLS1lbmFibGUtcGFydHggXAogICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1yYXcgLS1lbmFibGUtcmZraWxsIC0tZGlzYWJsZS1sb2dpbiBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12aXB3IC0tZGlzYWJsZS1uZXdncnAgLS1kaXNhYmxlLWNoZm4tY2hzaCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXdyaXRlIC0tZW5hYmxlLW1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtd3JpdGUgLS1lbmFibGUtbW91bnQgLS1lbmFibGUtdW5zaGFyZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYnV1aWQgLS1lbmFibGUtbGliYmxraWQgLS1lbmFibGUtZnNjayBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1taW5peCAtLWRpc2FibGUtYmZzIC0td2l0aG91dC11ZGV2IFwKICAgICAgICAgICAgICAgICAgICAgICAgdXNyc2Jpbl9leGVjZGlyPScke3NiaW5kaXJ9JyBcCkBAIC03NSw3ICs3NSw3IEBACiAKIEZJTEVTX3V0aWwtbGludXgtYWdldHR5ID0gIiR7YmFzZV9zYmluZGlyfS9hZ2V0dHkiCiBGSUxFU191dGlsLWxpbnV4LWZkaXNrID0gIiR7YmFzZV9zYmluZGlyfS9mZGlzay4ke0JQTn0iCi1GSUxFU191dGlsLWxpbnV4LWZzdHJpbSA9ICIke2Jhc2Vfc2JpbmRpcn0vZnN0cmltIgorRklMRVNfdXRpbC1saW51eC1mc3RyaW0gPSAiJHtiYXNlX3NiaW5kaXJ9L2ZzdHJpbS4ke0JQTn0iCiBGSUxFU191dGlsLWxpbnV4LWNmZGlzayA9ICIke2Jhc2Vfc2JpbmRpcn0vY2ZkaXNrIgogRklMRVNfdXRpbC1saW51eC1zZmRpc2sgPSAiJHtzYmluZGlyfS9zZmRpc2siCiBGSUxFU191dGlsLWxpbnV4LXN3YXBvbm9mZiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3dhcG9uLiR7QlBOfSAke2Jhc2Vfc2JpbmRpcn0vc3dhcG9mZi4ke0JQTn0iCkBAIC05Myw3ICs5Myw3IEBACiBGSUxFU191dGlsLWxpbnV4LWdldG9wdCA9ICIke2Jhc2VfYmluZGlyfS9nZXRvcHQuJHtCUE59IgogRklMRVNfdXRpbC1saW51eC1ydW51c2VyID0gIiR7c2JpbmRpcn0vcnVudXNlciIKIEZJTEVTX3V0aWwtbGludXgtcHJsaW1pdCA9ICIke2JpbmRpcn0vcHJsaW1pdCIKLUZJTEVTX3V0aWwtbGludXgtaW9uaWNlID0gIiR7YmluZGlyfS9pb25pY2UiCitGSUxFU191dGlsLWxpbnV4LWlvbmljZSA9ICIke2JpbmRpcn0vaW9uaWNlLiR7QlBOfSIKIEZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtiaW5kaXJ9L3N1LnV0aWwtbGludXggJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgogQ09ORkZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgogCkBAIC0xMTMsNiArMTEzLDcgQEAKIEZJTEVTX3V0aWwtbGludXgtbW91bnRwb2ludCA9ICIke2Jhc2VfYmluZGlyfS9tb3VudHBvaW50LiR7QlBOfSIKIAogRklMRVNfdXRpbC1saW51eC1zd2l0Y2gtcm9vdCA9ICIke2Jhc2Vfc2JpbmRpcn0vc3dpdGNoX3Jvb3QuJHtCUE59IgorRklMRVNfdXRpbC1saW51eC11bnNoYXJlID0gIiR7YmluZGlyfS91bnNoYXJlLiR7QlBOfSIKIAogIyBVdGlsLWxpbnV4JyBibGtpZCByZXBsYWNlcyB0aGUgZTJmc3Byb2dzIG9uZQogRklMRVNfdXRpbC1saW51eC1ibGtpZCA9ICIke2Jhc2Vfc2JpbmRpcn0vYmxraWQqIgpAQCAtMjA0LDkgKzIwNSwxMiBAQAogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKIAotQUxURVJOQVRJVkVfJHtQTn0gID0gImRtZXNnIGtpbGwgbW9yZSBta3N3YXAgYmxvY2tkZXYgcGl2b3Rfcm9vdCBzd2l0Y2hfcm9vdCIKLUFMVEVSTkFUSVZFXyR7UE59ICs9ICJoZXhkdW1wIGxhc3QgbGFzdGIgbG9nZ2VyIG1lc2cgcmVuaWNlIHdhbGwiCi1BTFRFUk5BVElWRV8ke1BOfSArPSAic2V0c2lkIGNocnQgZmxvY2sgdXRtcGR1bXAgZWplY3Qgbm9sb2dpbiB0YXNrc2V0IgorQUxURVJOQVRJVkVfJHtQTn0gID0gIiBcCisgICAgZG1lc2cga2lsbCBtb3JlIG1rc3dhcCBibG9ja2RldiBwaXZvdF9yb290IFwKKyAgICBoZXhkdW1wIGxhc3QgbGFzdGIgbG9nZ2VyIG1lc2cgcmVuaWNlIHdhbGwgXAorICAgIHNldHNpZCBjaHJ0IGZsb2NrIHV0bXBkdW1wIGVqZWN0IG5vbG9naW4gdGFza3NldCBmYWxsb2NhdGUgXAorICAgIGZzZnJlZXplIG5zZW50ZXIgY2FsIHJldiBcCisiCiAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtkbWVzZ10gPSAiJHtiYXNlX2JpbmRpcn0vZG1lc2ciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbF0gPSAiJHtiYXNlX2JpbmRpcn0va2lsbCIKQEAgLTIxNCw4ICsyMTgsMTEgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3N3YXBdID0gIiR7YmFzZV9zYmluZGlyfS9ta3N3YXAiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbYmxvY2tkZXZdID0gIiR7YmFzZV9zYmluZGlyfS9ibG9ja2RldiIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtwaXZvdF9yb290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcGl2b3Rfcm9vdCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzd2l0Y2hfcm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3N3aXRjaF9yb290IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NhbF0gPSAiJHtiaW5kaXJ9L2NhbCIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtlamVjdF0gPSAiJHtiaW5kaXJ9L2VqZWN0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZhbGxvY2F0ZV0gPSAiJHtiaW5kaXJ9L2ZhbGxvY2F0ZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXZdID0gIiR7YmluZGlyfS9yZXYiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZnNmcmVlemVdID0gIiR7c2JpbmRpcn0vZnNmcmVlemUiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbbm9sb2dpbl0gPSAiJHtiYXNlX3NiaW5kaXJ9L25vbG9naW4iCiAKIEFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJtb3VudHBvaW50LjEgbGFzdC4xIGxhc3RiLjEgbWVzZy4xIHdhbGwuMSBub2xvZ2luLjggc3Vsb2dpbi44IHV0bXBkdW1wLjEgcmZraWxsLjgga2lsbC4xIGxpYmJsa2lkLjMgYmxraWQuOCBmaW5kZnMuOCBmc2NrLjggdXVpZC4zIGVqZWN0LjEgbG9nZ2VyLjEiCkBAIC0yNDQsNiArMjUxLDkgQEAKIEFMVEVSTkFUSVZFX3V0aWwtbGludXgtZmRpc2sgPSAiZmRpc2siCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbZmRpc2tdID0gIiR7YmFzZV9zYmluZGlyfS9mZGlzayIKIAorQUxURVJOQVRJVkVfdXRpbC1saW51eC1mc3RyaW0gPSAiZnN0cmltIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzdHJpbV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2ZzdHJpbSIKKwogQUxURVJOQVRJVkVfdXRpbC1saW51eC1hZ2V0dHkgPSAiZ2V0dHkiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0dHldID0gIiR7YmFzZV9zYmluZGlyfS9nZXR0eSIKIEFMVEVSTkFUSVZFX1RBUkdFVFtnZXR0eV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2FnZXR0eSIKQEAgLTI4Miw2ICsyOTIsMTUgQEAKIEFMVEVSTkFUSVZFX3V0aWwtbGludXgtbW91bnRwb2ludCA9ICJtb3VudHBvaW50IgogQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnRdID0gIiR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQiCiAKK0FMVEVSTkFUSVZFX3V0aWwtbGludXgtdW5zaGFyZSA9ICJ1bnNoYXJlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Vuc2hhcmVdID0gIiR7YmluZGlyfS91bnNoYXJlIgorCitBTFRFUk5BVElWRV91dGlsLWxpbnV4LWlvbmljZSA9ICJpb25pY2UiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW9uaWNlXSA9ICIke2JpbmRpcn0vaW9uaWNlIgorCitBTFRFUk5BVElWRV91dGlsLWxpbnV4LXN3aXRjaC1yb290ID0gInN3aXRjaF9yb290IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3N3aXRjaF9yb290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3dpdGNoX3Jvb3QiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMyLjEuYmIKaW5kZXggNDU1YjkzNy4uYTYxNmQ4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zMi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzIuMS5iYgpAQCAtMjEsMTAgKzIxLDggQEAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKIAogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCiAJCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKICIKIEVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAogCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvZmlsZXMvbW91bnQtY29weWJpbmQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3ZvbGF0aWxlLWJpbmRzL2ZpbGVzL21vdW50LWNvcHliaW5kCmluZGV4IDJhZWFmODQuLmZkZGY1MjAgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdm9sYXRpbGUtYmluZHMvZmlsZXMvbW91bnQtY29weWJpbmQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS92b2xhdGlsZS1iaW5kcy9maWxlcy9tb3VudC1jb3B5YmluZApAQCAtOCw3ICs4LDEwIEBACiAgICAgZXhpdCAxCiBmaQogCisjIGUuZy4gL3Zhci92b2xhdGlsZS9saWIKIHNwZWM9JDEKKworIyBlLmcuIC92YXIvbGliCiBtb3VudHBvaW50PSQyCiAKIGlmIFsgJCMgLWd0IDIgXTsgdGhlbgpAQCAtMjAsMTUgKzIzLDM0IEBACiBbIC1uICIkb3B0aW9ucyIgXSAmJiBvcHRpb25zPSIsJG9wdGlvbnMiCiAKIG1rZGlyIC1wICIke3NwZWMlLyp9IgorCiBpZiBbIC1kICIkbW91bnRwb2ludCIgXTsgdGhlbgotICAgIGlmIFsgISAtZCAiJHNwZWMiIF07IHRoZW4KKworICAgIGlmIFsgLWQgIiRzcGVjIiBdOyB0aGVuCisgICAgICAgIHNwZWNkaXJfZXhpc3RlZD15ZXMKKyAgICBlbHNlCisgICAgICAgIHNwZWNkaXJfZXhpc3RlZD1ubwogICAgICAgICBta2RpciAiJHNwZWMiCi0gICAgICAgIGNwIC1wUFIgIiRtb3VudHBvaW50Ii8uICIkc3BlYy8iCisgICAgZmkKKworICAgICMgRmFzdCB2ZXJzaW9uIG9mIGNhbGN1bGF0aW5nIGBkaXJuYW1lICR7c3BlY31gLy5gYmFzZW5hbWUgJHtzcGVjfWAtd29yaworICAgIG92ZXJsYXlfd29ya2Rpcj0iJHtzcGVjJS8qfS8uJHtzcGVjIyMqL30td29yayIKKyAgICBta2RpciAiJHtvdmVybGF5X3dvcmtkaXJ9IgorCisgICAgIyBUcnkgdG8gbW91bnQgdXNpbmcgb3ZlcmxheSwgd2hpY2ggaXMgbXVzdCBmYXN0ZXIgdGhhbiBjb3B5aW5nIGZpbGVzLgorICAgICMgSWYgdGhhdCBmYWlscywgZmFsbCBiYWNrIHRvIHNsb3dlciBjb3B5LgorICAgIGlmICEgbW91bnQgLXQgb3ZlcmxheSBvdmVybGF5IC1vbG93ZXJkaXI9IiRtb3VudHBvaW50Iix1cHBlcmRpcj0iJHNwZWMiLHdvcmtkaXI9IiRvdmVybGF5X3dvcmtkaXIiICIkbW91bnRwb2ludCIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorCisgICAgICAgIGlmIFsgIiRzcGVjZGlyX2V4aXN0ZWQiICE9ICJ5ZXMiIF07IHRoZW4KKyAgICAgICAgICAgIGNwIC1wUFIgIiRtb3VudHBvaW50Ii8uICIkc3BlYy8iCisgICAgICAgIGZpCisKKyAgICAgICAgbW91bnQgLW8gImJpbmQkb3B0aW9ucyIgIiRzcGVjIiAiJG1vdW50cG9pbnQiCiAgICAgZmkKIGVsaWYgWyAtZiAiJG1vdW50cG9pbnQiIF07IHRoZW4KICAgICBpZiBbICEgLWYgIiRzcGVjIiBdOyB0aGVuCiAgICAgICAgIGNwIC1wUCAiJG1vdW50cG9pbnQiICIkc3BlYyIKICAgICBmaQotZmkKIAotbW91bnQgLW8gImJpbmQkb3B0aW9ucyIgIiRzcGVjIiAiJG1vdW50cG9pbnQiCisgICAgbW91bnQgLW8gImJpbmQkb3B0aW9ucyIgIiRzcGVjIiAiJG1vdW50cG9pbnQiCitmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCmluZGV4IGRmODFiYzYuLmI4MmFmNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi9hdXRvY29uZi5pbmMKQEAgLTEwLDI0ICsxMCw0OSBAQAogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAibmF0aXZlc2RrLW00IG5hdGl2ZXNkay1nbnUtY29uZmlnIgogUkRFUEVORFNfJHtQTn0gPSAibTQgZ251LWNvbmZpZyBcCiAJCSAgcGVybCBcCisJCSAgcGVybC1tb2R1bGUtYnl0ZXMgXAogCQkgIHBlcmwtbW9kdWxlLWNhcnAgXAogCQkgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKwkJICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCiAJCSAgcGVybC1tb2R1bGUtZXJybm8gXAogCQkgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKIAkJICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKIAkJICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAogCQkgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisJCSAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKIAkJICBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAogCQkgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCiAJCSAgcGVybC1tb2R1bGUtZmlsZS1zdGF0IFwKLQkJICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAogCQkgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKIAkJICBwZXJsLW1vZHVsZS1pby1maWxlIFwKIAkJICBwZXJsLW1vZHVsZS1wb3NpeCBcCi0JCSAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorCQkgIHBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCisJCSAgcGVybC1tb2R1bGUtdGhyZWFkcyBcCiAJCSAiCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAibTQtbmF0aXZlIGdudS1jb25maWctbmF0aXZlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1tNCBuYXRpdmVzZGstZ251LWNvbmZpZyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJcCisJCSAgbmF0aXZlc2RrLWdudS1jb25maWcgXAorCQkgIG5hdGl2ZXNkay1tNCBcCisJCSAgbmF0aXZlc2RrLXBlcmwgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1ieXRlcyBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWNhcnAgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1jb25zdGFudCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKwkJICBuYXRpdmVzZGstcGVybC1tb2R1bGUtZXJybm8gXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1leHBvcnRlciBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWNvcHkgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWZpbmQgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLXBhdGggXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLXN0YXQgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWlvLWZpbGUgXAorCQkgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1wb3NpeCBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZC1xdWV1ZSBcCisJCSAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXRocmVhZHMgXAorICAgICAgICAgICAgICAgICAgIgogCiBTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXV0b2NvbmYvYXV0b2NvbmYtJHtQVn0udGFyLmd6IFwKIAkgICBmaWxlOi8vcHJvZ3JhbV9wcmVmaXgucGF0Y2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCmluZGV4IDEyMjFmMTMuLmRlYjFkMDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyNWE4YWMzMDQ4Njc5OGQyM2Y1MTY3MjJkNzNlYjYyMmU2MjY0ZjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiM2M2ZTE5NzE3ODZjZDkzYTJlMzAxN2M5MmJmYmZlOTZiYWFmMmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjYgSnVsIDIwMTcgMTE6MTk6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXV0b21ha2U6IEFkZCBkZWZhdWx0IGxpYnRvb2xfdGFnIHRvIGNwcGFzbS4KQEAgLTYsMTkgKzYsMTkgQEAKICAgICAqIGJpbi9hdXRvbWFrZS5pbiAocmVnaXN0ZXJfbGFuZ3VhZ2UpOiBEZWZpbmUgZGVmYXVsdCBsaWJ0b29sIHRhZyB0byBiZSBDQwogICAgIHNpbmNlIENQUEFTQ09NUElMRSBpcyB1c2luZyBDQyB0byBjYWxsIGFzc2VtYmxlcgogCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAorLS0tCiAgYmluL2F1dG9tYWtlLmluIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKLUluZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2F1dG9tYWtlLmluCi0rKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgotQEAgLTgzMSw2ICs4MzEsNyBAQCByZWdpc3Rlcl9sYW5ndWFnZSAoJ25hbWUnID0+ICdjcHBhc20nLAotIAkJICAgJ2NvbXBpbGVyJyA9PiAnQ1BQQVNDT01QSUxFJywKK2RpZmYgLS1naXQgYS9iaW4vYXV0b21ha2UuaW4gYi9iaW4vYXV0b21ha2UuaW4KK2luZGV4IDNhNjY5NjUuLjA4YmEwOWEgMTAwNjQ0CistLS0gYS9iaW4vYXV0b21ha2UuaW4KKysrKyBiL2Jpbi9hdXRvbWFrZS5pbgorQEAgLTg5OCw2ICs4OTgsNyBAQCByZWdpc3Rlcl9sYW5ndWFnZSAoJ25hbWUnID0+ICdjcHBhc20nLAorICAgICAgICAgICAgICAgICAgICAnbGlidG9vbF90YWcnID0+ICdDQycsCiAgCQkgICAnY29tcGlsZV9mbGFnJyA9PiAnLWMnLAogIAkJICAgJ291dHB1dF9mbGFnJyA9PiAnLW8nLAogKwkJICAgJ2xpYnRvb2xfdGFnJyA9PiAnQ0MnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1idWlsZC1maXgtcmFjZS1pbi1wYXJhbGxlbC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWJ1aWxkLWZpeC1yYWNlLWluLXBhcmFsbGVsLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTFmY2UxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1idWlsZC1maXgtcmFjZS1pbi1wYXJhbGxlbC1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA1OTJlYjU1YjI0OGE3NjVhYmZjNzk2ZmNjYjY4YmFhM2Q1Mzc0NWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNiBKdWwgMjAxOCAwMDo1ODoxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogZml4IHJhY2UgaW4gcGFyYWxsZWwgYnVpbGRzCisKK1RoZSBhdXRvbWFrZS0kKEFQSVZFUlNJT04pIGlzIGEgaGFyZGxpbmsgb2YgYXV0b21ha2UsIGlmIGl0IGlzCitjcmVhdGVkIGxhdGVyIHRoYW4gdXBkYXRlX21hbnMgZXhlY3V0aW5nLCB0aGVyZSBpcyBhIGZhaWx1cmUKK1tzbmlwXQorfDogJiYgbWtkaXIgLXAgZG9jICYmIC4vcHJlLWluc3QtZW52IC91c3IvYmluL2VudiBwZXJsCisuLi9hdXRvbWFrZS0xLjE2LjEvZG9jL2hlbHAybWFuIC0tb3V0cHV0PWRvYy9hY2xvY2FsLTEuMTYuMQorYWNsb2NhbC0xLjE2Cit8aGVscDJtYW46IGNhbid0IGdldCBgLS1oZWxwJyBpbmZvIGZyb20gYWNsb2NhbC0xLjE2Cit8VHJ5IGAtLW5vLWRpc2NhcmQtc3RkZXJyJyBpZiBvcHRpb24gb3V0cHV0cyB0byBzdGRlcnIKK01ha2VmaWxlOjM2OTM6IHJlY2lwZSBmb3IgdGFyZ2V0ICdkb2MvYWNsb2NhbC0xLjE2LjEnIGZhaWxlZAorW3NuaXBdCisKK1RoZSBhdXRvbWFrZV9zY3JpcHQgaXMgcmVxdWlyZWQgYnkgdXBkYXRlX21hbnMgYW5kIHVwZGF0ZV9tYW5zCitpbnZva2VzIGF1dG9tYWtlLSQoQVBJVkVSU0lPTikgcmF0aGVyIHRoYW4gYXV0b21ha2UgdG8gZ2VuZXJhdGUKK2RvYywgc28gd2Ugc2hvdWxkIGFzc2lnbiBgYXV0b21ha2UtJChBUElWRVJTSU9OKScgdG8gYXV0b21ha2Vfc2NyaXB0LgorCitUaGUgc2FtZSByZWFzb24gdG8gdHdlYWsgYWNsb2NhbF9zY3JpcHQuCisKKyogYmluL2xvY2FsLm1rOiBjb3JyZWN0IGF1dG9tYWtlX3NjcmlwdC9hY2xvY2FsX3NjcmlwdAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbYXV0b21ha2UtcGF0Y2hlc0BnbnUub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgfCA0ICsrLS0KKyBiaW4vbG9jYWwubWsgfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGMzZTkzNGMuLjdjZGRiOGQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC02OTEsOCArNjkxLDggQEAgYmluX1NDUklQVFMgPSBiaW4vYXV0b21ha2UgYmluL2FjbG9jYWwKKyAjIFVzZWQgYnkgbWFpbnRhaW5lciBjaGVja3MgYW5kIHN1Y2guCisgYXV0b21ha2VfaW4gPSAkKHNyY2RpcikvYmluL2F1dG9tYWtlLmluCisgYWNsb2NhbF9pbiA9ICQoc3JjZGlyKS9iaW4vYWNsb2NhbC5pbgorLWF1dG9tYWtlX3NjcmlwdCA9IGJpbi9hdXRvbWFrZQorLWFjbG9jYWxfc2NyaXB0ID0gYmluL2FjbG9jYWwKKythdXRvbWFrZV9zY3JpcHQgPSBiaW4vYXV0b21ha2UtJChBUElWRVJTSU9OKQorK2FjbG9jYWxfc2NyaXB0ICA9IGJpbi9hY2xvY2FsLSQoQVBJVkVSU0lPTikKKyBBVVRPTUFLRVNPVVJDRVMgPSAkKGF1dG9tYWtlX2luKSAkKGFjbG9jYWxfaW4pCisgaW5mb19URVhJTkZPUyA9IGRvYy9hdXRvbWFrZS50ZXhpIGRvYy9hdXRvbWFrZS1oaXN0b3J5LnRleGkKKyBkb2NfYXV0b21ha2VfVEVYSU5GT1MgPSBkb2MvZmRsLnRleGkKK2RpZmYgLS1naXQgYS9iaW4vbG9jYWwubWsgYi9iaW4vbG9jYWwubWsKK2luZGV4IDk3YjM4ZGIuLjA1OGNhOTkgMTAwNjQ0CistLS0gYS9iaW4vbG9jYWwubWsKKysrKyBiL2Jpbi9sb2NhbC5taworQEAgLTMxLDggKzMxLDggQEAgQ0xFQU5GSUxFUyArPSBcCisgIyBVc2VkIGJ5IG1haW50YWluZXIgY2hlY2tzIGFuZCBzdWNoLgorIGF1dG9tYWtlX2luID0gJChzcmNkaXIpLyVEJS9hdXRvbWFrZS5pbgorIGFjbG9jYWxfaW4gID0gJChzcmNkaXIpLyVEJS9hY2xvY2FsLmluCistYXV0b21ha2Vfc2NyaXB0ID0gJUQlL2F1dG9tYWtlCistYWNsb2NhbF9zY3JpcHQgID0gJUQlL2FjbG9jYWwKKythdXRvbWFrZV9zY3JpcHQgPSAlRCUvYXV0b21ha2UtJChBUElWRVJTSU9OKQorK2FjbG9jYWxfc2NyaXB0ICA9ICVEJS9hY2xvY2FsLSQoQVBJVkVSU0lPTikKKyAKKyBBVVRPTUFLRVNPVVJDRVMgPSAkKGF1dG9tYWtlX2luKSAkKGFjbG9jYWxfaW4pCisgVEFHU19GSUxFUyArPSAkKEFVVE9NQUtFU09VUkNFUykKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaAppbmRleCA5NmI1YTNkLi4xNTkyYzAyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9hdXRvbWFrZS1yZXBsYWNlLXctb3B0aW9uLWluLXNoZWJhbmdzLXdpdGgtbW9kZXJuLXVzZS13YXJuaW5ncy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDFlMDZiN2EzNTQ3NzQ5MTNkY2QyZTMyYTM1NDQwZTQwNzg0MzM1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDgxMzg1ZjRkNGJiYTM2N2FmYWQzYmZmMWZhMDM0ZjUyNjMzMDVlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNlcmhpaSBQb3BvdnljaCA8c3BvcG92eWNAY2lzY28uY29tPgogRGF0ZTogV2VkLCAxMCBGZWIgMjAxNiAxNzowNzozMiArMDAwMAogU3ViamVjdDogW1BBVENIXSBwZXJsOiBSZXBsYWNlIC13IG9wdGlvbiBpbiBzaGViYW5ncyB3aXRoIG1vZGVybiAidXNlCkBAIC0xNSwyNCArMTUsMjQgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBTZXJoaWkgUG9wb3Z5Y2ggPHNwb3BvdnljQGNpc2NvLmNvbT4KLS0tLQotIGJpbi9hY2xvY2FsLmluICAgICB8IDMgKystCi0gYmluL2F1dG9tYWtlLmluICAgIHwgMyArKy0KLSB0L3dyYXAvYWNsb2NhbC5pbiAgfCAzICsrLQotIHQvd3JhcC9hdXRvbWFrZS5pbiB8IDMgKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9iaW4vYWNsb2NhbC5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGF1dG9tYWtlLTEuMTUuMS5vcmlnL2Jpbi9hY2xvY2FsLmluCi0rKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hY2xvY2FsLmluCistLS0KKyBiaW4vYWNsb2NhbC5pbiAgfCAzICsrLQorIGJpbi9hdXRvbWFrZS5pbiB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iaW4vYWNsb2NhbC5pbiBiL2Jpbi9hY2xvY2FsLmluCitpbmRleCBiMzcxNWQ5Li40NjFkNDUzIDEwMDY0NAorLS0tIGEvYmluL2FjbG9jYWwuaW4KKysrKyBiL2Jpbi9hY2xvY2FsLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyAtKi0gcGVybCAtKi0KICAjIEBjb25maWd1cmVfaW5wdXRACiAgCi1AQCAtMzMsNiArMzMsNyBAQCBCRUdJTgorQEAgLTMyLDYgKzMyLDcgQEAgQkVHSU4KICB9CiAgCiAgdXNlIHN0cmljdDsKQEAgLTQwLDE3ICs0MCwxNyBAQAogIAogIHVzZSBBdXRvbWFrZTo6Q29uZmlnOwogIHVzZSBBdXRvbWFrZTo6R2VuZXJhbDsKLUluZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2F1dG9tYWtlLmluCi0rKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorZGlmZiAtLWdpdCBhL2Jpbi9hdXRvbWFrZS5pbiBiL2Jpbi9hdXRvbWFrZS5pbgoraW5kZXggODM3N2QyMC4uM2E2Njk2NSAxMDA2NDQKKy0tLSBhL2Jpbi9hdXRvbWFrZS5pbgorKysrIGIvYmluL2F1dG9tYWtlLmluCiBAQCAtMSw0ICsxLDQgQEAKIC0jIUBQRVJMQCAtdwogKyMhQFBFUkxACiAgIyAtKi0gcGVybCAtKi0KICAjIEBjb25maWd1cmVfaW5wdXRACiAgCi1AQCAtMjgsNiArMjgsNyBAQCBldmFsICdjYXNlICQjIGluIDApIGV4ZWMgQFBFUkxAIC1TICIkMCI7CitAQCAtMjgsNiArMjgsNyBAQCBldmFsICdjYXNlICQjIGluIDApIGV4ZWMgQFBFUkxAIC1TICIkMCI7OyAqKSBleGVjIEBQRVJMQCAtUyAiJDAiICIkQCI7OyBlc2FjJwogIHBhY2thZ2UgQXV0b21ha2U7CiAgCiAgdXNlIHN0cmljdDsKQEAgLTU4LDM5ICs1OCwzIEBACiAgCiAgQkVHSU4KICB7Ci1JbmRleDogYXV0b21ha2UtMS4xNS4xL3Qvd3JhcC9hY2xvY2FsLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvdC93cmFwL2FjbG9jYWwuaW4KLSsrKyBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2FjbG9jYWwuaW4KLUBAIC0xLDQgKzEsNCBAQAotLSMhQFBFUkxAIC13Ci0rIyFAUEVSTEAKLSAjIEBjb25maWd1cmVfaW5wdXRACi0gCi0gIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLUBAIC0xOSw2ICsxOSw3IEBACi0gQkVHSU4KLSB7Ci0gICB1c2Ugc3RyaWN0OwotKyAgdXNlIHdhcm5pbmdzOwotICAgQEFjbG9jYWw6OnBlcmxfbGliZGlycyA9ICgnQGFic190b3Bfc3JjZGlyQC9saWInKTsKLSAgIHVuc2hpZnQgQEFjbG9jYWw6OnBlcmxfbGliZGlycywgJ0BhYnNfdG9wX2J1aWxkZGlyQC9saWInCi0gICAgIGlmICdAc3JjZGlyQCcgbmUgJy4nOwotSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS90L3dyYXAvYXV0b21ha2UuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy90L3dyYXAvYXV0b21ha2UuaW4KLSsrKyBhdXRvbWFrZS0xLjE1LjEvdC93cmFwL2F1dG9tYWtlLmluCi1AQCAtMSw0ICsxLDQgQEAKLS0jIUBQRVJMQCAtdwotKyMhQFBFUkxACi0gIyBAY29uZmlndXJlX2lucHV0QAotIAotICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi1AQCAtMTksNiArMTksNyBAQAotIEJFR0lOCi0gewotICAgdXNlIHN0cmljdDsKLSsgIHVzZSB3YXJuaW5nczsKLSAgIEBBdXRvbWFrZTo6cGVybF9saWJkaXJzID0gKCdAYWJzX3RvcF9zcmNkaXJAL2xpYicpOwotICAgdW5zaGlmdCBAQXV0b21ha2U6OnBlcmxfbGliZGlycywgJ0BhYnNfdG9wX2J1aWxkZGlyQC9saWInCi0gICAgIGlmICdAc3JjZGlyQCcgbmUgJy4nOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvYnVpbGR0ZXN0LnBhdGNoCmluZGV4IGMzMmNkMWYuLmI4OGI5ZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL2J1aWxkdGVzdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9idWlsZHRlc3QucGF0Y2gKQEAgLTEsMTMgKzEsMjUgQEAKK0Zyb20gYTg2MGIyODA2OTc4NWFhNWJmMmZhOWI2NzEyODdkZTlhZjUwMDRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Caj1DMz1CNnJuPTIwU3RlbmJlcmc/PSA8YmpzdEBlbmVhLmNvbT4KK0RhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMTc6MTg6MjcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgbmV3IGRpc3RybyBmZWF0dXJlICJwdGVzdCIuCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKIFNwbGl0ICJjaGVjay1URVNUUyIgaW50byBhIGJ1aWxkdGVzdCBhbmQgcnVudGVzdCB0YXJnZXQsIHNvIHRoYXQgdGhleSBjYW4KIGJlIHJ1biBzZXBhcmF0ZWx5LgogCiBTaWduZWQtb2ZmLWJ5OiBCasO2cm4gU3RlbmJlcmcgPGJqc3RAZW5lYS5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotSW5kZXg6IGF1dG9tYWtlLTEuMTUuMS9saWIvYW0vY2hlY2suYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1LjEub3JpZy9saWIvYW0vY2hlY2suYW0KLSsrKyBhdXRvbWFrZS0xLjE1LjEvbGliL2FtL2NoZWNrLmFtCistLS0KKyBsaWIvYW0vY2hlY2suYW0gfCAxMSArKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvYW0vY2hlY2suYW0gYi9saWIvYW0vY2hlY2suYW0KK2luZGV4IGUwZGI2NTEuLmRlMTM3ZmEgMTAwNjQ0CistLS0gYS9saWIvYW0vY2hlY2suYW0KKysrKyBiL2xpYi9hbS9jaGVjay5hbQogQEAgLTQxLDcgKzQxLDcgQEAgYW1fX3R0eV9jb2xvcnMgPSB7IFwKICAgIGZpOyBcCiAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvbmV3X3J0X3BhdGhfZm9yX3Rlc3QtZHJpdmVyLnBhdGNoCmluZGV4IDJjNjU5NGYuLjFmNzE3MjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL25ld19ydF9wYXRoX2Zvcl90ZXN0LWRyaXZlci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2gKQEAgLTEsMjIgKzEsMzIgQEAKLVNldCByZWxhdGl2ZSB0byB0b3BfYnVpbGRkaXIgcGF0aCBpbiBNYWtlZmlsZSB0byBhY2Nlc3MgdGVzdC1kcml2ZXIKK0Zyb20gZjc4ZGZhMzkxMzlkNTI4Yzk0ZDcyZjI3OTk0ZjMzN2YyZmQzYjZiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkcmlhbiBDYWxpYW51IDxhZHJpYW4uY2FsaWFudUBlbmVhLmNvbT4KK0RhdGU6IFRodSwgMjUgRmViIDIwMTYgMTY6MDg6MDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gU2V0IHJlbGF0aXZlIHRvIHRvcF9idWlsZGRpciBwYXRoIGluIE1ha2VmaWxlIHRvIGFjY2VzcworIHRlc3QtZHJpdmVyCiAKIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBDYWxpYW51IDxhZHJpYW4uY2FsaWFudUBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogQnVnLVJlcG9ydDogaHR0cDovL2RlYmJ1Z3MuZ251Lm9yZy9jZ2kvYnVncmVwb3J0LmNnaT9idWc9MTkwNDIKIAorLS0tCisgYmluL2F1dG9tYWtlLmluIHwgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iaW4vYXV0b21ha2UuaW4gYi9iaW4vYXV0b21ha2UuaW4KK2luZGV4IGE1MmE0ODkuLjgzNzdkMjAgMTAwNjQ0CiAtLS0gYS9iaW4vYXV0b21ha2UuaW4KICsrKyBiL2Jpbi9hdXRvbWFrZS5pbgotQEAgLTI3Miw2ICsyNzIsOSBAQAorQEAgLTMyNCw2ICszMjQsOSBAQCBteSAkY29uZmlnX2F1eF9kaXJfc2V0X2luX2NvbmZpZ3VyZV9hYyA9IDA7CiAgIyAkQU1fQ09ORklHX0FVWF9ESVIgaXMgcHJlZml4ZWQgd2l0aCAkKHRvcF9zcmNkaXIpLCBzbyBpdCBjYW4gYmUgdXNlZAogICMgaW4gTWFrZWZpbGVzLgogIG15ICRhbV9jb25maWdfYXV4X2RpciA9ICcnOwogKyMgRGlyZWN0b3J5IHVzZWQgYXQgcnVudGltZSBsaWtlIHJ1bm5pbmcgdGVzdC1kcml2ZXIgdGhhdCBzaG91bGQgbm90CiArIyBkZXBlbmQgb24gJCh0b3Bfc3JjZGlyKQogK215ICRhbV9jb25maWdfcnRfYXV4X2RpciA9ICcnOwotCisgCiAgIyBEaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBBQ19MSUJTT1VSQ0UgZmlsZXMsIGFzIHNldCBieSBBQ19DT05GSUdfTElCT0JKX0RJUgogICMgaW4gY29uZmlndXJlLmFjLgotQEAgLTQ3MDAsNyArNDcwMyw3IEBACitAQCAtNDg1NCw3ICs0ODU3LDcgQEAgc3ViIGhhbmRsZV9wZXJfc3VmZml4X3Rlc3QKICAgICAgewogICAgICAgIHJlcXVpcmVfY29uZl9maWxlICgicGFyYWxsZWwtdGVzdHMiLCBGT1JFSUdOLCAndGVzdC1kcml2ZXInKTsKICAgICAgICBkZWZpbmVfdmFyaWFibGUgKCIke3BmeH1MT0dfRFJJVkVSIiwKQEAgLTI1LDcgKzM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIElOVEVSTkFMKTsKICAgICAgfQogICAgbXkgJGRyaXZlciA9ICckKCcgLiAkcGZ4IC4gJ0xPR19EUklWRVIpJzsKLUBAIC03Mjg0LDYgKzcyODcsMTAgQEAKK0BAIC03NDQwLDYgKzc0NDMsMTAgQEAgc3ViIGxvY2F0ZV9hdXhfZGlyICgpCiAgICAkYW1fY29uZmlnX2F1eF9kaXIgPQogICAgICAnJCh0b3Bfc3JjZGlyKScgLiAoJGNvbmZpZ19hdXhfZGlyIGVxICcuJyA/ICIiIDogIi8kY29uZmlnX2F1eF9kaXIiKTsKICAgICRhbV9jb25maWdfYXV4X2RpciA9fiBzLC8qJCwsOwpAQCAtMzQsMyArNDQsNSBAQAogKyAgICAnJCh0b3BfYnVpbGRkaXIpJyAuICgkY29uZmlnX2F1eF9kaXIgZXEgJy4nID8gIiIgOiAiLyRjb25maWdfYXV4X2RpciIpOwogKyAgJGFtX2NvbmZpZ19ydF9hdXhfZGlyID1+IHMsLyokLCw7CiAgfQorIAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvcGVyZm9ybWFuY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9wZXJmb3JtYW5jZS5wYXRjaAppbmRleCAzZTZkNTY5Li5hOGJhNjU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9wZXJmb3JtYW5jZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9wZXJmb3JtYW5jZS5wYXRjaApAQCAtMSwxNSArMSwyNCBAQAorRnJvbSBjZDQ3YzMyOGNiNTM1NDY4OTFiYjNkYzdjOWIyYzU0ZWQwMWNjNmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMTg6Mjg6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXV0b21ha2U6IFJlbW92ZSBkZWxheXMgaW4gY29uZmlndXJlIHNjcmlwdHMgdXNpbmcgYXV0b21ha2UKKwogQnkgZGVmYXVsdCBhdXRvbWFrZSBwdXRzICJzbGVlcCAxIiBpbnRvIHRoZSBzdGFydCBvZiBjb25maWd1cmUgc2NyaXB0cwotd2hpY2ggYWRkcyBwb2ludGxlc3MgZGVsYXlzIHRvIHRoZW0uIFJhdGhlciB0aGFuIGRvIHRoaXMsIGxldHMganVzdCBhc3N1bWUgCit3aGljaCBhZGRzIHBvaW50bGVzcyBkZWxheXMgdG8gdGhlbS4gUmF0aGVyIHRoYW4gZG8gdGhpcywgbGV0cyBqdXN0IGFzc3VtZQogb3VyIHN5c3RlbXMgYXJlIHNhbmUuCiAKIFJQCiAyMDE1LzEyLzcKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCi1JbmRleDogYXV0b21ha2UtMS4xNS9tNC9zYW5pdHkubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdXRvbWFrZS0xLjE1Lm9yaWcvbTQvc2FuaXR5Lm00Ci0rKysgYXV0b21ha2UtMS4xNS9tNC9zYW5pdHkubTQKKy0tLQorIG00L3Nhbml0eS5tNCB8IDU1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9zYW5pdHkubTQgYi9tNC9zYW5pdHkubTQKK2luZGV4IGVhYWMyMTguLmJmZGZlODggMTAwNjQ0CistLS0gYS9tNC9zYW5pdHkubTQKKysrKyBiL200L3Nhbml0eS5tNAogQEAgLTIzLDYwICsyMyw1IEBAIGNhc2UgJHNyY2RpciBpbgogICAgICBBQ19NU0dfRVJST1IoW3Vuc2FmZSBzcmNkaXIgdmFsdWU6ICckc3JjZGlyJ10pOzsKICBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9weXRob24tbGliZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvcHl0aG9uLWxpYmRpci5wYXRjaAppbmRleCAyYTQ4YjEzLi5lZTFmNzI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS9weXRob24tbGliZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlL3B5dGhvbi1saWJkaXIucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDQ3MmEzZDM2Yzk3ZWY3NTM1ZjA1ZDZjMTg1ZWRjYmMyMmIwMDc0YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE4MGRhY2Q1MTI0ZDA3MTNjZjJjOTg2YjI4ZDczNmU3OGRjNmIwY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgogRGF0ZTogVGh1LCAxMSBBdWcgMjAxMSAwMToyNjozMyAtMDUwMAotU3ViamVjdDogW1BBVENIIDEvNF0gYXV0b21ha2U6IFVwZGF0ZSBmb3IgcHl0aG9uLm00IHRvIHJlc3BlY3QgbGliZGlyCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG9tYWtlOiBVcGRhdGUgZm9yIHB5dGhvbi5tNCB0byByZXNwZWN0IGxpYmRpcgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCkBAIC0xNywxMCArMTcsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL200L3B5dGhvbi5tNCBiL200L3B5dGhvbi5tNAotaW5kZXggNWIyYzY5NS4uZWQxOTI2MSAxMDA2NDQKK2luZGV4IDYzYzBhMGUuLjdiYmQyZDIgMTAwNjQ0CiAtLS0gYS9tNC9weXRob24ubTQKICsrKyBiL200L3B5dGhvbi5tNAotQEAgLTkxLDEyICs5MSwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9QWVRIT05dLAorQEAgLTk0LDEyICs5NCwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9QWVRIT05dLAogICAgICBbYW1fY3ZfcHl0aG9uX3ZlcnNpb249YCRQWVRIT04gLWMgImltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoc3lzLnZlcnNpb25bWzozXV0pImBdKQogICAgQUNfU1VCU1QoW1BZVEhPTl9WRVJTSU9OXSwgWyRhbV9jdl9weXRob25fdmVyc2lvbl0pCiAgCkBAIC0zNiw3ICszNiw3IEBACiAgICBBQ19TVUJTVChbUFlUSE9OX0VYRUNfUFJFRklYXSwgWycke2V4ZWNfcHJlZml4fSddKQogIAogICAgZG5sIEF0IHRpbWVzIChsaWtlIHdoZW4gYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcykgeW91IG1heSB3YW50Ci1AQCAtMTQxLDE0ICsxNDIsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CitAQCAtMTQ0LDE0ICsxNDUsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICBlbHNlCiAgICAgICAgIGFtX3B5X3ByZWZpeD0kcHJlZml4CiAgICAgICBmaQpAQCAtNTIsNyArNTIsNyBAQAogICAgICAgY2FzZSAkYW1fY3ZfcHl0aG9uX3B5dGhvbmRpciBpbgogICAgICAgJGFtX3B5X3ByZWZpeCopCiAgICAgICAgIGFtX19zdHJpcF9wcmVmaXg9YGVjaG8gIiRhbV9weV9wcmVmaXgiIHwgc2VkICdzfC58LnxnJ2AKLUBAIC0xNTgsNyArMTUyLDcgQEAgc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCitAQCAtMTYxLDcgKzE1NSw3IEBAIHN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAogICAgICAgICBjYXNlICRhbV9weV9wcmVmaXggaW4KICAgICAgICAgICAvdXNyfC9TeXN0ZW0qKSA7OwogICAgICAgICAgICopCkBAIC02MSw3ICs2MSw3IEBACiAgCSAgOzsKICAgICAgICAgZXNhYwogICAgICAgICA7OwotQEAgLTE4MywxNCArMTc3LDcgQEAgc3lzLnN0ZG91dC53cml0ZShzaXRlZGlyKSJgCitAQCAtMTg2LDE0ICsxODAsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKHNpdGVkaXIpImAKICAgICAgIGVsc2UKICAgICAgICAgYW1fcHlfZXhlY19wcmVmaXg9JGV4ZWNfcHJlZml4CiAgICAgICBmaQpAQCAtNzcsNyArNzcsNyBAQAogICAgICAgY2FzZSAkYW1fY3ZfcHl0aG9uX3B5ZXhlY2RpciBpbgogICAgICAgJGFtX3B5X2V4ZWNfcHJlZml4KikKICAgICAgICAgYW1fX3N0cmlwX3ByZWZpeD1gZWNobyAiJGFtX3B5X2V4ZWNfcHJlZml4IiB8IHNlZCAnc3wufC58ZydgCi1AQCAtMjAwLDcgKzE4Nyw3IEBAIHN5cy5zdGRvdXQud3JpdGUoc2l0ZWRpcikiYAorQEAgLTIwMyw3ICsxOTAsNyBAQCBzeXMuc3Rkb3V0LndyaXRlKHNpdGVkaXIpImAKICAgICAgICAgY2FzZSAkYW1fcHlfZXhlY19wcmVmaXggaW4KICAgICAgICAgICAvdXNyfC9TeXN0ZW0qKSA7OwogICAgICAgICAgICopCkBAIC04Niw2ICs4NiwzIEBACiAgCSAgIDs7CiAgICAgICAgIGVzYWMKICAgICAgICAgOzsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjliNjE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlXzEuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJlcXVpcmUgYXV0b21ha2UuaW5jCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUiCi0KLU5BTUVWRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBhdXRvY29uZiBcCi0gICAgcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYnl0ZXMgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCi0gICAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKLSAgICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKLSAgICBwZXJsLW1vZHVsZS12YXJzICIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstYXV0b2NvbmYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9weXRob24tbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlcmZvcm1hbmNlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NWRmM2YyZDZlYjhmODFlNzBiOGNiNjNhOTNjODg1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODhlMzI1MjdhYmUwNTIzMDdkMjFjOGNhMDAwYWEyMzhiOTE0ZGYzNjNhNjE3ZTM4ZjRmYjg5ZjVhYmY2MjYwIgotCi1QRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKLVBFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCi1QRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MmVlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE2LjEuYmIKQEAgLTAsMCArMSw0NCBAQAorcmVxdWlyZSBhdXRvbWFrZS5pbmMKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSIKKworTkFNRVZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIGF1dG9jb25mIFwKKyAgICBwZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCisgICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAorICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCisgICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKKyAgICBwZXJsLW1vZHVsZS10aHJlYWQtcXVldWUgXAorICAgIHBlcmwtbW9kdWxlLXRocmVhZHMgXAorICAgIHBlcmwtbW9kdWxlLXZhcnMgIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiYXV0b2NvbmYtbmF0aXZlIGhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1hdXRvY29uZiIKKworU1JDX1VSSSArPSAiZmlsZTovL3B5dGhvbi1saWJkaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2J1aWxkdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGVyZm9ybWFuY2UucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL25ld19ydF9wYXRoX2Zvcl90ZXN0LWRyaXZlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXV0b21ha2UtcmVwbGFjZS13LW9wdGlvbi1pbi1zaGViYW5ncy13aXRoLW1vZGVybi11c2Utd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1yYWNlLWluLXBhcmFsbGVsLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4M2NjMjQ2M2E0MDgwZWZkNDZhNzJiYTJjOWY2YjhmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDhhOTc1MjNmOTdkYjMyZjFmNWQ1NjE1Yzk4Y2E2OTMyNmNlZDIwNTRjOWY4MmU2NWJhZGU3ZmM0YzlkZWE4IgorCitQRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKK1BFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCitQRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVkN2Q5Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPz0gImNhYTgzOWZiYTY2NjAwYTZjMzZkMzYzOTkwNmVkOTExMGI3OWMzMDciCi1CSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQiCi1TUkNfVVJJID0gIlwKLSAgICAgJHtCSU5VVElMU19HSVRfVVJJfSBcCi0gICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtVXNlLWxpYnRvb2wtMi40LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE4LTg5NDUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtNzY0My5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC02ODcyLnBhdGNoIFwgCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC02NzU5LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE4LTc2NDIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtNzIwOC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOC03NTY5LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE4LTc1NjgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAzNzMucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAzNzIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA1MzUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA1MzQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwMS1DaGFuZ2UtdGhlLUFSTS1hc3NlbWJsZXItcy1BRFItYW5kLUFEUmwtcHNldWRvLW9wcy1zLnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMxLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOWQ0Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjMxLmluYwpAQCAtMCwwICsxLDU1IEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID89ICI0NTY4ZTQ5ZmY3OTkxOTJmZWE0ZjY2MDYzZmUxM2UyYjg3MWVjNzVhIgorQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSA9ICJcCisgICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAorICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE2LWFkZC1pMzg2cGVwLWVtdWxhdGlvbi1mb3IteDg2XzY0LnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTctaW1wcm92ZS1jaGVjay1mb3ItaW5wdXQtZmlsZS1tYXRjaGluZy1vdXRwdXQtZmlsZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE4LVJlZmFjdG9yZWQtbG9jYXRpb24td2hlcmUtR09ULWluZm9ybWF0aW9uLWlzLWNvbGxlY3QucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxOS1JbXByb3ZlZC1yb2J1c3RuZXNzLi1SZXR1cm4tRkFMU0UtaW4tY2FzZS1vZi1OVUxMLXBvLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMjAtTWFrZS1zdXJlLWdsb2JhbC1zeW1ib2wtaXMtbm90LWFuLWluZGlyZWN0LW9yLXdhcm5pbi5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDIxLVBMVC1pbmZvcm1hdGlvbi13YXMtc3RpbGwtYmVpbmctZ2VuZXJhdGVkLXdoZW4tc3ltYm8ucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTczNTgucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTczNjAucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTgzMDkucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTg2MDUucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTg2MDYucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTg2MDcucGF0Y2ggXAorIgorUyAgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAgICAgcm0gLXJmICR7U30vZ2RiICR7U30vbGliZGVjbnVtYmVyICR7U30vcmVhZGxpbmUgJHtTfS9zaW0KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMxLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYwppbmRleCAzNzgxM2RkLi4wZmI2Y2FlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCkBAIC0zOCw2ICszOCw5IEBACiAjIFJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIG11bHRpcGxlIGVudHJpZXMgZm9yIHRoZXNlLCBtYWtlIG9uZQogIyBsaXN0IGFuZCByZXVzZSBpdC4KIAorTERHT0xEX0FMVFMgPz0gImxkLmdvbGQgZHdwIgorTERHT0xEX0FMVFNfcmlzY3Y2NCA9ICIiCisKIFVTRV9BTFRFUk5BVElWRVNfRk9SID0gIiBcCiAJYWRkcjJsaW5lIFwKIAlhciBcCkBAIC00Nyw3ICs1MCw3IEBACiAJZ3Byb2YgXAogCWxkIFwKIAlsZC5iZmQgXAotCWxkLmdvbGQgZHdwIFwKKwkke0xER09MRF9BTFRTfSBcCiAJbm0gXAogCW9iamNvcHkgXAogCW9iamR1bXAgXApAQCAtMTI4LDEyICsxMzEsMTIgQEAKIAkjIFdlIGRvbid0IHJlYWxseSBuZWVkIHRoZXNlLCBzbyB3ZSdsbCByZW1vdmUgdGhlbS4uLgogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2xkc2NyaXB0cwogCisJYmluZGlyX3JlbD0ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7YmluZGlyfScsICcke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9iaW4nKX0KKwogCSMgRml4IHRoZSAvdXNyLyR7VEFSR0VUX1NZU30vYmluLyogbGlua3MKIAlmb3IgbCBpbiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vYmluLyo7IGRvCiAJCXJtIC1mICRsCi0JCWxuIC1zZiBgZWNobyAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS9iaW4gXAotCQkJfCB0ciAtcyAvIFwKLQkJCXwgc2VkIC1lICdzLF4vLCwnIC1lICdzLFteL10qLC4uLGcnYCR7YmluZGlyfS8ke1RBUkdFVF9QUkVGSVh9YGJhc2VuYW1lICRsYCAkbAorCQlsbiAtc2YgJGJpbmRpcl9yZWwvJHtUQVJHRVRfUFJFRklYfWBiYXNlbmFtZSAkbGAgJGwKIAlkb25lCiAKIAkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtQ2hhbmdlLXRoZS1BUk0tYXNzZW1ibGVyLXMtQURSLWFuZC1BRFJsLXBzZXVkby1vcHMtcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtQ2hhbmdlLXRoZS1BUk0tYXNzZW1ibGVyLXMtQURSLWFuZC1BRFJsLXBzZXVkby1vcHMtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYwNGU2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLUNoYW5nZS10aGUtQVJNLWFzc2VtYmxlci1zLUFEUi1hbmQtQURSbC1wc2V1ZG8tb3BzLXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYgKzAsMCBAQAotRnJvbSBmYzYxNDFmMDk3MDU2ZjgzMGE0MTJhZmViZWQ4ZDgxYTlkNzJiNjk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMCBKdW4gMjAxOCAxMjozODoxMCArMDEwMAotU3ViamVjdDogW1BBVENIXSBDaGFuZ2UgdGhlIEFSTSBhc3NlbWJsZXIncyBBRFIgYW5kIEFEUmwgcHNldWRvLW9wcyBzbyB0aGF0Ci0gdGhleSB3aWxsIG9ubHkgc2V0IHRoZSBib3R0b20gYml0IG9mIGltcG9ydGVkIHRodW1iIGZ1bmN0aW9uIHN5bWJvbHMgaWYgdGhlCi0gLW10aHVtYi1pbnRlcndvcmsgb3B0aW9uIGlzIGFjdGl2ZS4KLQotRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBlbWFpbCB0aHJlYWQgc3RhcnRpbmcgaGVyZToKLWh0dHBzOi8vd3d3LnNvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTgtMDUvbXNnMDAzNDguaHRtbAotCi0JUFIgMjE0NTgKLQkqIHRjLWFybS5jIChkb19hZHIpOiBPbmx5IHNldCB0aGUgYm90dG9tIGJpdCBvZiBhbiBpbXBvcnRlZCB0aHVtYgotCWZ1bmN0aW9uIHN5bWJvbCBhZGRyZXNzIGlmIC1tdGh1bWItaW50ZXJ3b3JrIGlzIGFjdGl2ZS4KLQkoZG9fYWRybCk6IExpa2V3aXNlLgotCSogZG9jL2MtYXJtLnRleGk6IFVwZGF0ZSBkZXNjcmlwdGlvbnMgb2YgdGhlIC1tdGh1bWItaW50ZXJ3b3JrCi0Jb3B0aW9uIGFuZCB0aGUgQURSIGFuZCBBRFJMIHBzZXVkby1vcHMuCi0JKiBORVdTOiBNZW50aW9uIHRoZSBuZXcgYmVoYXZpb3VyIG9mIHRoZSBBRFIgYW5kIEFEUkwgcHNldWRvLW9wcy4KLQkqIHRlc3RzdWl0ZS9nYXMvYXJtL3ByMjE0NTguZDogQWRkIC1tdGh1bWItaW50ZXJ3b3JrIG9wdGlvbiB0bwotCWFzc2VtYmxlciBjb21tYW5kIGxpbmUuCi0JKiB0ZXN0c3VpdGUvZ2FzL2FybS9hZHIuZDogTGlrZXdpc2UuCi0JKiB0ZXN0c3VpdGUvZ2FzL2FybS9hZHJsLmQ6IExpa2V3aXNlLgotLS0tCi0gZ2FzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysrCi0gZ2FzL05FV1MgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKysKLSBnYXMvY29uZmlnL3RjLWFybS5jICAgICAgICAgICAgIHwgMTAgKysrKysrLS0tLQotIGdhcy9kb2MvYy1hcm0udGV4aSAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrLQotIGdhcy90ZXN0c3VpdGUvZ2FzL2FybS9hZHIuZCAgICAgfCAgMSArCi0gZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZCAgICB8ICAxICsKLSBnYXMvdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kIHwgIDMgKystCi0gNyBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2dhcy9jb25maWcvdGMtYXJtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvY29uZmlnL3RjLWFybS5jCi0rKysgZ2l0L2dhcy9jb25maWcvdGMtYXJtLmMKLUBAIC04NDEwLDExICs4NDEwLDEyIEBAIGRvX2FkciAodm9pZCkKLSAgIGluc3QucmVsb2MucGNfcmVsID0gMTsKLSAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciAtPSA4OwotIAotLSAgaWYgKGluc3QucmVsb2MuZXhwLlhfb3AgPT0gT19zeW1ib2wKLSsgIGlmIChzdXBwb3J0X2ludGVyd29yawotKyAgICAgICYmIGluc3QucmVsb2MuZXhwLlhfb3AgPT0gT19zeW1ib2wKLSAgICAgICAmJiBpbnN0LnJlbG9jLmV4cC5YX2FkZF9zeW1ib2wgIT0gTlVMTAotICAgICAgICYmIFNfSVNfREVGSU5FRCAoaW5zdC5yZWxvYy5leHAuWF9hZGRfc3ltYm9sKQotICAgICAgICYmIFRIVU1CX0lTX0ZVTkMgKGluc3QucmVsb2MuZXhwLlhfYWRkX3N5bWJvbCkpCi0tICAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciArPSAxOwotKyAgICBpbnN0LnJlbG9jLmV4cC5YX2FkZF9udW1iZXIgfD0gMTsKLSB9Ci0gCi0gLyogVGhpcyBpcyBhIHBzZXVkby1vcCBvZiB0aGUgZm9ybSAiYWRybCByZCwgbGFiZWwiIHRvIGJlIGNvbnZlcnRlZAotQEAgLTg0MzQsMTEgKzg0MzUsMTIgQEAgZG9fYWRybCAodm9pZCkKLSAgIGluc3Quc2l6ZQkJICAgICAgID0gSU5TTl9TSVpFICogMjsKLSAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciAtPSA4OwotIAotLSAgaWYgKGluc3QucmVsb2MuZXhwLlhfb3AgPT0gT19zeW1ib2wKLSsgIGlmIChzdXBwb3J0X2ludGVyd29yawotKyAgICAgICYmIGluc3QucmVsb2MuZXhwLlhfb3AgPT0gT19zeW1ib2wKLSAgICAgICAmJiBpbnN0LnJlbG9jLmV4cC5YX2FkZF9zeW1ib2wgIT0gTlVMTAotICAgICAgICYmIFNfSVNfREVGSU5FRCAoaW5zdC5yZWxvYy5leHAuWF9hZGRfc3ltYm9sKQotICAgICAgICYmIFRIVU1CX0lTX0ZVTkMgKGluc3QucmVsb2MuZXhwLlhfYWRkX3N5bWJvbCkpCi0tICAgIGluc3QucmVsb2MuZXhwLlhfYWRkX251bWJlciArPSAxOwotKyAgICBpbnN0LnJlbG9jLmV4cC5YX2FkZF9udW1iZXIgfD0gMTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUluZGV4OiBnaXQvZ2FzL2RvYy9jLWFybS50ZXhpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZ2FzL2RvYy9jLWFybS50ZXhpCi0rKysgZ2l0L2dhcy9kb2MvYy1hcm0udGV4aQotQEAgLTMxNyw3ICszMTcsOCBAQCBpbnN0cnVjdGlvbnM7IHRoYXQgaXMsIGl0IHNob3VsZCBiZWhhdmUKLSBAY2luZGV4IEBjb2Rley1tdGh1bWItaW50ZXJ3b3JrfSBjb21tYW5kIGxpbmUgb3B0aW9uLCBBUk0KLSBAaXRlbSAtbXRodW1iLWludGVyd29yawotIFRoaXMgb3B0aW9uIHNwZWNpZmllcyB0aGF0IHRoZSBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSBhc3NlbWJsZXIgc2hvdWxkCi0tYmUgbWFya2VkIGFzIHN1cHBvcnRpbmcgaW50ZXJ3b3JraW5nLgotK2JlIG1hcmtlZCBhcyBzdXBwb3J0aW5nIGludGVyd29ya2luZy4gIEl0IGFsc28gYWZmZWN0cyB0aGUgYmVoYXZpb3VyCi0rb2YgdGhlIEBjb2Rle0FEUn0gYW5kIEBjb2Rle0FEUkx9IHBzZXVkbyBvcGNvZGVzLgotIAotIEBjaW5kZXggQGNvZGV7LW1pbXBsaWNpdC1pdH0gY29tbWFuZCBsaW5lIG9wdGlvbiwgQVJNCi0gQGl0ZW0gLW1pbXBsaWNpdC1pdD1uZXZlcgotQEAgLTEwNjAsNiArMTA2MSwxNiBAQCBvdXQgb2YgcmFuZ2UsIG9yIGlmIGl0IGlzIG5vdCBkZWZpbmVkIGluCi0gdGhlIEFEUiBpbnN0cnVjdGlvbiwgdGhlbiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4gIFRoaXMgaW5zdHJ1Y3Rpb24KLSB3aWxsIG5vdCBtYWtlIHVzZSBvZiB0aGUgbGl0ZXJhbCBwb29sLgotIAotK0lmIEB2YXJ7bGFiZWx9IGlzIGEgdGh1bWIgZnVuY3Rpb24gc3ltYm9sLCBhbmQgdGh1bWIgaW50ZXJ3b3JraW5nIGhhcwotK2JlZW4gZW5hYmxlZCB2aWEgdGhlIEBvcHRpb257LW10aHVtYi1pbnRlcndvcmt9IG9wdGlvbiB0aGVuIHRoZSBib3R0b20KLStiaXQgb2YgdGhlIHZhbHVlIHN0b3JlZCBpbnRvIEB2YXJ7cmVnaXN0ZXJ9IHdpbGwgYmUgc2V0LiAgVGhpcyBhbGxvd3MKLSt0aGUgZm9sbG93aW5nIHNlcXVlbmNlIHRvIHdvcmsgYXMgZXhwZWN0ZWQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyAgYWRyICAgICByMCwgdGh1bWJfZnVuY3Rpb24KLSsgIGJseCAgICAgcjAKLStAZW5kIHNtYWxsZXhhbXBsZQotKwotIEBjaW5kZXggQGNvZGV7QURSTCByZWcsPGxhYmVsPn0gcHNldWRvIG9wLCBBUk0KLSBAaXRlbSBBRFJMCi0gQHNtYWxsZXhhbXBsZQotQEAgLTEwNzYsNiArMTA4NywxMCBAQCBJZiB0aGUgbGFiZWwgaXMgb3V0IG9mIHJhbmdlLCBvciBpZiBpdCBpCi0gKGFuZCBzZWN0aW9uKSBhcyB0aGUgQURSTCBpbnN0cnVjdGlvbiwgdGhlbiBhbiBlcnJvciB3aWxsIGJlIGdlbmVyYXRlZC4KLSBUaGlzIGluc3RydWN0aW9uIHdpbGwgbm90IG1ha2UgdXNlIG9mIHRoZSBsaXRlcmFsIHBvb2wuCi0gCi0rSWYgQHZhcntsYWJlbH0gaXMgYSB0aHVtYiBmdW5jdGlvbiBzeW1ib2wsIGFuZCB0aHVtYiBpbnRlcndvcmtpbmcgaGFzCi0rYmVlbiBlbmFibGVkIHZpYSB0aGUgQG9wdGlvbnstbXRodW1iLWludGVyd29ya30gb3B0aW9uIHRoZW4gdGhlIGJvdHRvbQotK2JpdCBvZiB0aGUgdmFsdWUgc3RvcmVkIGludG8gQHZhcntyZWdpc3Rlcn0gd2lsbCBiZSBzZXQuCi0rCi0gQGVuZCB0YWJsZQotIAotIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgQVJNIG9yIFRodW1iIGluc3RydWN0aW9uIHNldHMsIHNlZSBAY2l0ZXtBUk0KLUluZGV4OiBnaXQvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kCi0rKysgZ2l0L2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9hZHIuZAotQEAgLTEsMyArMSw0IEBACi0rI2FzOiAtbXRodW1iLWludGVyd29yawotICNvYmpkdW1wOiAtZHIgLS1wcmVmaXgtYWRkcmVzc2VzIC0tc2hvdy1yYXctaW5zbgotICNuYW1lOiBBRFIKLSAKLUluZGV4OiBnaXQvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy90ZXN0c3VpdGUvZ2FzL2FybS9hZHJsLmQKLSsrKyBnaXQvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL2FkcmwuZAotQEAgLTEsMyArMSw0IEBACi0rI2FzOiAtbXRodW1iLWludGVyd29yawotICNvYmpkdW1wOiAtZHIgLS1wcmVmaXgtYWRkcmVzc2VzIC0tc2hvdy1yYXctaW5zbgotICNuYW1lOiBBRFJMCi0gCi1JbmRleDogZ2l0L2dhcy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvQ2hhbmdlTG9nCi0rKysgZ2l0L2dhcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTcgQEAKLSsyMDE4LTA2LTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMTQ1OAotKyAgICAgICAqIHRjLWFybS5jIChkb19hZHIpOiBPbmx5IHNldCB0aGUgYm90dG9tIGJpdCBvZiBhbiBpbXBvcnRlZCB0aHVtYgotKyAgICAgICBmdW5jdGlvbiBzeW1ib2wgYWRkcmVzcyBpZiAtbXRodW1iLWludGVyd29yayBpcyBhY3RpdmUuCi0rICAgICAgIChkb19hZHJsKTogTGlrZXdpc2UuCi0rICAgICAgICogZG9jL2MtYXJtLnRleGk6IFVwZGF0ZSBkZXNjcmlwdGlvbnMgb2YgdGhlIC1tdGh1bWItaW50ZXJ3b3JrCi0rICAgICAgIG9wdGlvbiBhbmQgdGhlIEFEUiBhbmQgQURSTCBwc2V1ZG8tb3BzLgotKyAgICAgICAqIE5FV1M6IE1lbnRpb24gdGhlIG5ldyBiZWhhdmlvdXIgb2YgdGhlIEFEUiBhbmQgQURSTCBwc2V1ZG8tb3BzLgotKyAgICAgICAqIHRlc3RzdWl0ZS9nYXMvYXJtL3ByMjE0NTguZDogQWRkIC1tdGh1bWItaW50ZXJ3b3JrIG9wdGlvbiB0bwotKyAgICAgICBhc3NlbWJsZXIgY29tbWFuZCBsaW5lLgotKyAgICAgICAqIHRlc3RzdWl0ZS9nYXMvYXJtL2Fkci5kOiBMaWtld2lzZS4KLSsgICAgICAgKiB0ZXN0c3VpdGUvZ2FzL2FybS9hZHJsLmQ6IExpa2V3aXNlLgotKwotIDIwMTgtMDItMDUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCSogcG8vcnUucG86IFVwZGF0ZWQgUnVzc2lhbiB0cmFuc2xhdGlvbi4KLUluZGV4OiBnaXQvZ2FzL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9nYXMvTkVXUwotKysrIGdpdC9nYXMvTkVXUwotQEAgLTEsNSArMSw5IEBACi0gLSotIHRleHQgLSotCi0gCi0rKiBUaGUgQURSIGFuZCBBRFJMIHBzZXVkby1pbnN0cnVjdGlvbnMgc3VwcG9ydGVkIGJ5IHRoZSBBUk0gYXNzZW1ibGVyCi0rICBub3cgb25seSBzZXQgdGhlIGJvdHRvbSBiaXQgb2YgdGhlIGFkZHJlc3Mgb2YgdGh1bWIgZnVuY3Rpb24gc3ltYm9scwotKyAgaWYgdGhlIC1tdGh1bWItaW50ZXJ3b3JrIGNvbW1hbmQgbGluZSBvcHRpb24gaXMgYWN0aXZlLgotKwotIENoYW5nZXMgaW4gMi4zMDoKLSAKLSAqIEFkZCBzdXBwb3J0IGZvciBsb2FjdGlvbiB2aWV3cyBpbiBEV0FSRiBkZWJ1ZyBsaW5lIGluZm9ybWF0aW9uLgotSW5kZXg6IGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvZ2FzL3Rlc3RzdWl0ZS9nYXMvYXJtL3ByMjE0NTguZAotKysrIGdpdC9nYXMvdGVzdHN1aXRlL2dhcy9hcm0vcHIyMTQ1OC5kCi1AQCAtMSw4ICsxLDkgQEAKLSsjYXM6IC1tdGh1bWItaW50ZXJ3b3JrCi0gI29iamR1bXA6IC1kIC0tcHJlZml4LWFkZHJlc3NlcyAtLXNob3ctcmF3LWluc24KLSAjbmFtZTogQURSKEwpIGZvciBUaHVtYiBmdW5jdGlvbnMKLSAjc2tpcDogKi0qLXBlICotd2luY2UtKiAqLSotY29mZiAqLSotdnh3b3JrcwotIAotLSMgVGVzdCB0aGF0IHVzaW5nIEFEUihMKSBvbiB0aHVtYiBmdW5jdGlvbiBzeW1ib2xzIHNldHMgdGhlIFQgYml0LgotKyMgVGVzdCB0aGF0IHVzaW5nIEFEUihMKSBvbiB0aHVtYiBmdW5jdGlvbiBzeW1ib2xzIHNldHMgdGhlIFQgYml0IHdoZW4gLW10aHVtYi1pbnRlcndvcmsgaXMgYWN0aXZlLgotIAotIC4qOiArZmlsZSBmb3JtYXQgLiphcm0uKgotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCmluZGV4IDJkZjgzNjAuLjZiZGI0MDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJlMWI1ZTI0YTY3NTlkZTdmNzNhYTYwNjBhNTc0ODQ4ZDkxMzFiNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRhOTlmMDU4MDMwYzg2Nzk0YmI5NmI1ODJhN2RiZDYzMWY5NjNiMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjU4OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCkBAIC0xOCwxMCArMTgsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL2dlbnNjcmlwdHMuc2ggYi9sZC9nZW5zY3JpcHRzLnNoCi1pbmRleCA4NzMyNDIyYjNhLi4xZjI1N2U5OWNhIDEwMDc1NQoraW5kZXggMzcwYjIyMjY5ZC4uYTVjMzY3YWE4ZiAxMDA3NTUKIC0tLSBhL2xkL2dlbnNjcmlwdHMuc2gKICsrKyBiL2xkL2dlbnNjcmlwdHMuc2gKLUBAIC0yNzcsNiArMjc3LDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgorQEAgLTI3OSw2ICsyNzksNyBAQCBEQVRBX0FMSUdOTUVOVF91PSIke0RBVEFfQUxJR05NRU5UX3UtJHtEQVRBX0FMSUdOTUVOVF9yfX0iCiAgTERfRkxBRz1yCiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF9yfQogIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCkBAIC0yOSw3ICsyOSw3IEBACiAgKCBlY2hvICIvKiBTY3JpcHQgZm9yIGxkIC1yOiBsaW5rIHdpdGhvdXQgcmVsb2NhdGlvbiAqLyIKICAgIC4gJHtDVVNUT01JWkVSX1NDUklQVH0KICAgIC4gJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCi1AQCAtMjg1LDEwICsyODYsMTIgQEAgREVGQVVMVF9EQVRBX0FMSUdOTUVOVD0iQUxJR04oJHtTRUdNRU5UX1NJWkV9KSIKK0BAIC0yODcsMTAgKzI4OCwxMiBAQCBERUZBVUxUX0RBVEFfQUxJR05NRU5UPSJBTElHTigke1NFR01FTlRfU0laRX0pIgogIExEX0ZMQUc9dQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRfdX0KICBDT05TVFJVQ1RJTkc9IiAiCkBAIC00Myw3ICs0Myw3IEBACiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF99CiAgUkVMT0NBVElORz0iICIKIGRpZmYgLS1naXQgYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLWluZGV4IDk3ODdhYjVkYWMuLjBjOGE5M2MyYzggMTAwNjQ0CitpbmRleCA0NDRhZWYyOTQyLi5hZmE5OWY3MzZkIDEwMDY0NAogLS0tIGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCiArKysgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKIEBAIC0xMzksOCArMTM5LDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KQEAgLTU4LDUgKzU4LDUgQEAKICBpZiB0ZXN0IC16ICIkUExUIjsgdGhlbgogICAgSVBMVD0iLmlwbHQgICAgICAgICAke1JFTE9DQVRJTkctMH0gOiB7ICooLmlwbHQpIH0iCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCBiYWM3ZmIyLi4wMjA4MjEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1OGRkZjM4ZmE1M2FiYjQ4YjY5ZGQ3NmUzOThjNzM0NTFhZDFhNWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2ZTc4YjFjODhjMDQwYTc0MmI3YWY4MjU0MmFjN2ViOTJlZGRkYTNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNiBNYXIgMjAxNyAyMzozNzowNSAtMDgwMAogU3ViamVjdDogW1BBVENIIDAyLzE1XSBiaW51dGlscy1jcm9zczogRG8gbm90IGdlbmVyYXRlIGxpbmtlciBzY3JpcHQKQEAgLTE5LDE0ICsxOSwxNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gbGQvZ2Vuc2NyaXB0cy5zaCB8IDIzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIzIGRlbGV0aW9ucygtKQorIGxkL2dlbnNjcmlwdHMuc2ggfCAyNSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvZ2Vuc2NyaXB0cy5zaCBiL2xkL2dlbnNjcmlwdHMuc2gKLWluZGV4IDFmMjU3ZTk5Y2EuLjE1ODNiNzNhMmIgMTAwNzU1CitpbmRleCBhNWMzNjdhYThmLi42Y2M5ZWVkOTc2IDEwMDc1NQogLS0tIGEvbGQvZ2Vuc2NyaXB0cy5zaAogKysrIGIvbGQvZ2Vuc2NyaXB0cy5zaAotQEAgLTE4OSwyOSArMTg5LDYgQEAgYXBwZW5kX3RvX2xpYl9wYXRoKCkKK0BAIC0xODksMzEgKzE4OSw2IEBAIGFwcGVuZF90b19saWJfcGF0aCgpCiAgICBmaQogIH0KICAKQEAgLTQ0LDEwICs0NCwxMiBAQAogLSAgICAjIGJlY2F1c2UgNjRiaXQgbGlicmFyaWVzIG1heSBiZSBpbiBib3RoIHBsYWNlcywgZGVwZW5kaW5nIG9uCiAtICAgICMgY3Jvc3MtZGV2ZWxvcG1lbnQgc2V0dXAgbWV0aG9kIChlLmcuOiAvdXNyL3MzOTB4LWxpbnV4L2xpYjY0CiAtICAgICMgdnMuIC91c3IvczM5MC1saW51eC9saWI2NCkKLS0gICAgY2FzZSAiJHtOQVRJVkV9OiR7TElCUEFUSF9TVUZGSVh9OiR7VE9PTF9MSUJ9IiBpbgotLSAgICAgIDoqIHwgKjo6KiB8ICo6KjoqJHtMSUJQQVRIX1NVRkZJWH0pIDs7Ci0tICAgICAgKikgbGlicz0iJHtleGVjX3ByZWZpeH0vJHt0YXJnZXRfYWxpYXN9L2xpYiR7TElCUEFUSF9TVUZGSVh9IiA7OwotLSAgICBlc2FjCistICAgIGZvciBsaWJwYXRoX3N1ZmZpeCBpbiAke0xJQlBBVEhfU1VGRklYfTsgZG8KKy0gICAgICBjYXNlICIke05BVElWRX06JHtsaWJwYXRoX3N1ZmZpeH06JHtUT09MX0xJQn0iIGluCistCToqIHwgKjo6KiB8ICo6KjoqJHtsaWJwYXRoX3N1ZmZpeH0pIDs7CistCSopIGxpYnM9IiR7ZXhlY19wcmVmaXh9LyR7dGFyZ2V0X2FsaWFzfS9saWIke2xpYnBhdGhfc3VmZml4fSIgOzsKKy0gICAgICBlc2FjCistICAgIGRvbmUKIC0gICAgbGlicz0iJHtleGVjX3ByZWZpeH0vJHtUT09MX0xJQn0vbGliICR7bGlic30iCiAtICBmaQogLSAgYXBwZW5kX3RvX2xpYl9wYXRoICR7bGlic30KQEAgLTU3LDUgKzU5LDUgQEAKICAgIGxpYnM9JHtOQVRJVkVfTElCX0RJUlN9CiAgICBpZiBbICJ4JHtOQVRJVkV9IiA9ICJ4eWVzIiBdIDsgdGhlbgogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaAppbmRleCAzMDZhZmU3Li4xNTE5M2MxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDUwODliZTg4ZjY3MGJjYWRmN2RiMGU3Nzg4OTRmOTAwYjJjMDVkN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRjNmZkOGY1ZWI5YmM3YzBkMDJmMWE5OGFkODZlMzk1ZDRkMmFiM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA3OjMzICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDMvMTVdIGNvbmZpZ3VyZTogd2lkZW4gdGhlIHJlZ2V4cCBmb3IgU0ggYXJjaGl0ZWN0dXJlcwpAQCAtMTQsMTAgKzE0LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMmQ2MTVhOTk5Ni4uYzRhZDQ1YzA2YyAxMDA3NTUKK2luZGV4IDA4ZGQzNWMzZWEuLjgxNWU3NGRkYjcgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTM4MzUsNyArMzgzNSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KK0BAIC0zODU1LDcgKzM4NTUsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCiAgICBudnB0eCotKi0qKQogICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgdGFyZ2V0LWxpYnNzcCB0YXJnZXQtbGlic3RkYysrLXYzIHRhcmdldC1saWJvYmpjIgogICAgICA7OwpAQCAtMjcsMTAgKzI3LDEwIEBACiAgICAgICAgc2gqLSotZWxmKQogICAgICAgICAgIDs7CiBkaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCAxZTI1MTAyOTc2Li42YjQzYmYyYjE4IDEwMDc1NQoraW5kZXggNDQ3Y2VhNzg4NC4uYTczMGUyMDUwOSAxMDA3NTUKIC0tLSBhL2dwcm9mL2NvbmZpZ3VyZQogKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKK0BAIC02MTYyLDYgKzYxNjIsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgIDs7CiAgCkBAIC00Myw1ICs0Myw1IEBACiAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKaW5kZXggM2UyOWM1OC4uYmYxYzFiZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBhMGU4OTNlYTA5NGM0OGZhODAzMDQ2ZmZhODllMzE5MDdhZWUwNTk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0OGFkNTI5MmIxMDQwOGQ0ZTVkNTczOTAyMjc1M2E3MTgzYTFjYmIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowOTo1OCArMDAwMAogU3ViamVjdDogW1BBVENIIDA0LzE1XSBQb2ludCBzY3JpcHRzIGxvY2F0aW9uIHRvIGxpYmRpcgpAQCAtMTIsNyArMTIsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQotaW5kZXggNjI0M2MxMjUyOC4uM2M1ZDZjODIwMiAxMDA2NDQKK2luZGV4IGQ4NmFkMDk0MGMuLmM5NWIwZWYwMjUgMTAwNjQ0CiAtLS0gYS9sZC9NYWtlZmlsZS5hbQogKysrIGIvbGQvTWFrZWZpbGUuYW0KIEBAIC01Nyw3ICs1Nyw3IEBAIGVuZGlmCkBAIC0yNSwxMCArMjUsMTAgQEAKICBFTVVMID0gQEVNVUxACiAgRU1VTEFUSU9OX09GSUxFUyA9IEBFTVVMQVRJT05fT0ZJTEVTQAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KLWluZGV4IDc2MGMwMzdmOWQuLjZkZWE2OTI4NjkgMTAwNjQ0CitpbmRleCA0NzkyYjJiMDEzLi43ODlkZjJkMDFiIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuaW4KICsrKyBiL2xkL01ha2VmaWxlLmluCi1AQCAtNDQ2LDcgKzQ0Niw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKK0BAIC01NjMsNyArNTYzLDcgQEAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQogICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KICAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKICAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KQEAgLTM4LDUgKzM4LDUgQEAKICBCRkRESVIgPSAkKEJBU0VESVIpL2JmZAogIElOQ0RJUiA9ICQoQkFTRURJUikvaW5jbHVkZQogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKaW5kZXggMmY0OTk2OS4uMWY1ODk3MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNTE4YWJiMTk1ZDBlYjQ3ZDhlZWY1ODFkN2ZkMGE1ZmQ5ZmE3M2Y3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzllNTM1MTBiMWY5ZTE2YTIxZGIzMTI2OThmYjFjMWM0NDI0ODFlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xNV0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKQEAgLTE1LDEwICsxNSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbSBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotaW5kZXggYzA5MjVmYzliOS4uN2Q3NjcwYTg5ZiAxMDA2NDQKK2luZGV4IDFhZDlkNmI2ZmEuLjZhMDI1YTQ1YjQgMTAwNjQ0CiAtLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KICsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0NzAsNiArMTQ3MCw4IEBAIGZyYWdtZW50IDw8RU9GCitAQCAtMTQ3MSw2ICsxNDcxLDggQEAgZnJhZ21lbnQgPDxFT0YKICAJICAgICAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCiAgCSAgICB7CiAgCSAgICAgIHBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwpAQCAtMjcsNyArMjcsNyBAQAogIAkgICAgICBpZiAocGF0aAogIAkJICAmJiBnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChwYXRoLCAmbiwgZm9yY2UpKQogIAkJYnJlYWs7Ci1AQCAtMTc1MCw2ICsxNzUyLDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCitAQCAtMTc1MSw2ICsxNzUzLDggQEAgZ2xkJHtFTVVMQVRJT05fTkFNRX1fYmVmb3JlX2FsbG9jYXRpb24gKHZvaWQpCiAgICBycGF0aCA9IGNvbW1hbmRfbGluZS5ycGF0aDsKICAgIGlmIChycGF0aCA9PSBOVUxMKQogICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CkBAIC0zNyw1ICszNyw1IEBACiAgICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKICAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaAppbmRleCAzMzNlMmVlLi44NTUwZGYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZmFkMDUzY2M1OWJhYTYyNzcxODJiMGZjOTA0MTVhMjE0MDYwYmE5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMTFmNmQyODg5NzI1YWQ1OTJhYjc4OTUzNGNhOWI4NTgwNzNkZjRkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDYvMTVdIFVzZSBsaWJ0b29sIDIuNApAQCAtOSwyNyArOSwyNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIyICsrKysrKysrKysrKysrLS0tLS0KICBiZmQvY29uZmlndXJlLmFjICAgICB8ICAgIDIgKy0KLSBiaW51dGlscy9jb25maWd1cmUgICB8IDEzMTYgKysrKysrKysrKysrKysrKystLS0tLS0KLSBnYXMvY29uZmlndXJlICAgICAgICB8IDEzMTQgKysrKysrKysrKysrKysrKystLS0tLS0KLSBncHJvZi9jb25maWd1cmUgICAgICB8IDEzMjEgKysrKysrKysrKysrKysrKystLS0tLS0KLSBsZC9jb25maWd1cmUgICAgICAgICB8IDE2OTEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBsaWJ0b29sLm00ICAgICAgICAgICB8IDEwODAgKysrKysrKysrKysrKy0tLS0tLQotIGx0bWFpbi5zaCAgICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCisgZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIwICsrKysrKysrKysrKysrLS0tLS0KKyBncHJvZi9jb25maWd1cmUgICAgICB8IDEzMjcgKysrKysrKysrKysrKystLS0tLQorIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5NSArKysrKysrKysrKysrKysrKystLS0tLS0KKyBsaWJ0b29sLm00ICAgICAgICAgICB8IDEwODAgKysrKysrKysrKystLS0tLQorIGx0bWFpbi5zaCAgICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KICBsdG9wdGlvbnMubTQgICAgICAgICB8ICAgIDIgKy0KICBsdHZlcnNpb24ubTQgICAgICAgICB8ICAgMTIgKy0KICBsdH5vYnNvbGV0ZS5tNCAgICAgICB8ICAgIDIgKy0KLSBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KKyBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMjIgKysrKysrKysrKysrKystLS0tLQogIG9wY29kZXMvY29uZmlndXJlLmFjIHwgICAgMiArLQotIHpsaWIvY29uZmlndXJlICAgICAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDk5MjYgaW5zZXJ0aW9ucygrKSwgMzY5MyBkZWxldGlvbnMoLSkKKyB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMjAgKysrKysrKysrKysrKystLS0tLQorIDE0IGZpbGVzIGNoYW5nZWQsIDk5NDggaW5zZXJ0aW9ucygrKSwgMzcwMyBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCi1pbmRleCA2YzJiMjRlYmUzLi41ZmRkNzIzYjdmIDEwMDc1NQotLS0tIGEvYmZkL2NvbmZpZ3VyZQotKysrIGIvYmZkL2NvbmZpZ3VyZQotQEAgLTY3Miw2ICs2NzIsOSBAQCBPVE9PTAorSW5kZXg6IGdpdC9iZmQvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvYmZkL2NvbmZpZ3VyZQorKysrIGdpdC9iZmQvY29uZmlndXJlCitAQCAtNzA0LDYgKzcwNCw5IEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC0zOSw3ICszOSw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc4NSw2ICs3ODgsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtODIyLDYgKzgyNSw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtNDcsNyArNDcsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDYxLDYgKzE0NjUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNTA0LDYgKzE1MDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTU2LDcgKzU2LDcgQEAKICAgIC0td2l0aC1tbWFwICAgICAgICAgICAgIHRyeSB1c2luZyBtbWFwIGZvciBCRkQgaW5wdXQgZmlsZXMgaWYgYXZhaWxhYmxlCiAgICAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPURJUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gRElSCi1AQCAtNTM5Myw4ICs1Mzk5LDggQEAgZXNhYworQEAgLTU2OTMsOCArNTY5OSw4IEBAIGVzYWMKICAKICAKICAKQEAgLTY3LDcgKzY3LDcgQEAKICAKICAKICAKLUBAIC01NDM0LDcgKzU0NDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTU3MzQsNyArNTc0MCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTc2LDcgKzc2LDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MTIwLDggKzYxMjYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTY0MjAsOCArNjQyNiw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHUKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTg3LDEzICs4NywxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjE3MCw2ICs2MTc2LDgwIEBAIGVzYWMKK0BAIC02NDcwLDYgKzY0NzYsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTE0MCw3ICsxNDAsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgpAQCAtMTY3LDggKzE2Nyw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjE4Niw2ICs2MjY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQ4Niw2ICs2NTY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0xODAsNyArMTgwLDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYzNTQsNyArNjQzOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTY2NTQsNyArNjczOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTE5MCw3ICsxOTAsNyBAQAogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgICBmaQogICAgOzsKLUBAIC02NTA4LDYgKzY1OTQsMjEgQEAgZXNhYworQEAgLTY4MDgsNiArNjg5NCwyMSBAQCBlc2FjCiAgZmkKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKICAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KQEAgLTIxMiw3ICsyMTIsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTY1MjEsMTEgKzY2MjIsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY4MjMsOSArNjkyNCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtMjI2LDggKzIyNiw2IEBACiArCiArCiArCi0gCi0gCiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIC1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgpAQCAtMjM1LDcgKzIzMyw3IEBACiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KQEAgLTI0Nyw3ICsyNDUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMjc1LDcgKzI3Myw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC0yODcsNyArMjg1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0zMzUsNyArMzMzLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC0zNzgsMTcgKzM3NiwxNyBAQAogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1NDEsNyArNjc5NSw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02ODQxLDcgKzcwOTUsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02NTYxLDExICs2ODE1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjg2MSwxMSArNzExNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC00MDYsMTcgKzQwNCwxNyBAQAogK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1ODEsNyArNjgzOSw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02ODgxLDcgKzcxMzksNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgogKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjYwMCw2ICs2ODU4LDEwIEBAIGVsc2UKK0BAIC02OTAwLDYgKzcxNTgsMTAgQEAgZWxzZQogICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKQEAgLTQyNyw3ICs0MjUsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02NjExLDE2ICs2ODczLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTY5MTEsMTYgKzcxNzMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC00NDksMTYgKzQ0NywxNiBAQAogKwogKwogKwotKworIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9hcl9hdF9maWxlPW5vCiArICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKKyAKICtpbnQKICttYWluICgpCiArewpAQCAtNDkxLDExICs0ODksMTEgQEAKICAKICtmaQogK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAorKwogK2ZpCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKICskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAorKwogK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KICtlbHNlCkBAIC01MDQsNyArNTAyLDcgQEAKICAKICAKICAKLUBAIC02OTYyLDggKzcyODAsOCBAQCBlc2FjCitAQCAtNzI2Miw4ICs3NTgwLDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC01MTUsNyArNTEzLDcgQEAKICAKICAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KICBvcHRfY3I9Ci1AQCAtNjk5OSw2ICs3MzE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworQEAgLTcyOTksNiArNzYxNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KICAgIGVsc2UKICAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgIGZpCkBAIC01MjMsNyArNTIxLDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTcwNDAsNiArNzM1OSwxOCBAQCBfTFRfRU9GCitAQCAtNzM0MCw2ICs3NjU5LDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtNTQyLDcgKzU0MCw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNzA1MSw3ICs3MzgyLDcgQEAgX0xUX0VPRgorQEAgLTczNTEsNyArNzY4Miw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC01NTEsNyArNTQ5LDcgQEAKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICAgICAgICphZGRyZXNzOwogIH0KLUBAIC03MDc3LDggKzc0MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTczNzcsOCArNzcwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKQogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtNTYyLDcgKzU2MCw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzA4OCw4ICs3NDE5LDggQEAgX0xUX0VPRgorQEAgLTczODgsOCArNzcxOSw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtNTczLDcgKzU3MSw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC03MTI2LDYgKzc0NTcsMTYgQEAgZWxzZQorQEAgLTc0MjYsNiArNzc1NywyMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtNTg3LDIwICs1ODUsMTcgQEAKICsKICsKICsKKysKKysKKysKKysKICAKICAKICAKLUBAIC03MTQyLDYgKzc0ODMsNDUgQEAgZmkKK0BAIC03NDQ1LDYgKzc3OTAsNDEgQEAgZmkKICAKICAKICAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQogKwpAQCAtNjI3LDE2ICs2MjIsMTkgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKysKKysKKysKICAKICAKLSAKLUBAIC03MzUzLDYgKzc3MzMsMTIzIEBAIGVzYWMKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KK0BAIC03NjUzLDYgKzgwMzMsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTY0NSw3ICs2NDMsNyBAQAogK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtNjU3LDcgKzY1NSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNjg1LDcgKzY4Myw3IEBACiArc2V0IGR1bW15IG10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtNjk3LDcgKzY5NSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTczNSw3ICs3MzMsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtNzYwLDcgKzc1OCw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkxNiw2ICs4NDEzLDggQEAgX0xUX0VPRgorQEAgLTgyMTYsNiArODcxMyw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtNzY5LDcgKzc2Nyw3IEBACiAgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCiAgaW50IG1haW4oKSB7IHJldHVybiAwO30KICBfTFRfRU9GCi1AQCAtODA4MCw3ICs4NTc5LDggQEAgZmkKK0BAIC04MzgwLDcgKzg4NzksOCBAQCBmaQogIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKICAKICAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgpAQCAtNzc5LDcgKzc3Nyw3IEBACiAgCiAgCiAgCi1AQCAtODE2OSw3ICs4NjY5LDcgQEAgYWl4MyopCitAQCAtODQ2OSw3ICs4OTY5LDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTc4OCw3ICs3ODYsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODQ2Nyw4ICs4OTY3LDYgQEAgZmkKK0BAIC04NzY3LDggKzkyNjcsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtNzk3LDcgKzc5NSw3IEBACiAgCiAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg2MzQsNiArOTEzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg5MzQsNiArOTQzMiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKICAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwogIAk7OwpAQCAtODEwLDcgKzgwOCw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04Njk2LDcgKzkyMDAsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg5OTYsNyArOTUwMCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04MTksNyArODE3LDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg3NTMsMTMgKzkyNTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTkwNTMsMTMgKzk1NTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTgzMiw3ICs4MzAsNyBAQAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwpAQCAtODQzLDcgKzg0MSw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04ODIwLDYgKzkzMjgsMTEgQEAgZmkKK0BAIC05MTIwLDYgKzk2MjgsMTEgQEAgZmkKICAKICAKICAKQEAgLTg1NSw3ICs4NTMsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTkxNzAsNyArOTY4Myw4IEBAIF9MVF9FT0YKK0BAIC05NDcwLDcgKzk5ODMsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtODY1LDcgKzg2Myw3IEBACiAgCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MjY5LDEyICs5NzgzLDEyIEBAIF9MVF9FT0YKK0BAIC05NTY5LDEyICsxMDA4MywxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTg4MCw3ICs4NzgsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTkyODgsOCArOTgwMiw4IEBAIF9MVF9FT0YKK0BAIC05NTg4LDggKzEwMTAyLDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTg5MSw3ICs4ODksNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC05MzA3LDggKzk4MjEsOCBAQCBfTFRfRU9GCitAQCAtOTYwNyw4ICsxMDEyMSw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC05MDIsNyArOTAwLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTM1NCw4ICs5ODY4LDggQEAgX0xUX0VPRgorQEAgLTk2NTQsOCArMTAxNjgsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtOTEzLDcgKzkxMSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTk0ODUsNyArOTk5OSwxMyBAQCBfTFRfRU9GCitAQCAtOTc4NSw3ICsxMDI5OSwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTkyMSwxNCArOTE5LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTQ5OCwyMiArMTAwMTgsMjkgQEAgbWFpbiAoKQorQEAgLTk3OTgsMjIgKzEwMzE4LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC05NzEsNyArOTY5LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk1MjUsNyArMTAwNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTgyNSw3ICsxMDM1MiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCWVsc2UKICAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogIAkgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtOTc5LDE0ICs5NzcsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05NTM4LDIyICsxMDA3MSwyOSBAQCBtYWluICgpCitAQCAtOTgzOCwyMiArMTAzNzEsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTEwMjksNyArMTAyNyw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTU5OCwyMCArMTAxMzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTg5OCwyMCArMTA0MzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC0xMTA3LDcgKzExMDUsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTY3Miw3ICsxMDI1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk5NzIsNyArMTA1NTUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtMTExNiw3ICsxMTE0LDcgQEAKICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NjgwLDcgKzEwMjYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTk4MCw3ICsxMDU2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0xMTI1LDcgKzExMjMsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTk2OTYsNyArMTAyNzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05OTk2LDcgKzEwNTc5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMTEzNCw3ICsxMTMyLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTk3MjAsMTAgKzEwMzAzLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEwMDIwLDEwICsxMDYwMywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAJICA7OwogIAlpYTY0KikKQEAgLTExNDcsNyArMTE0NSw3IEBACiAgCSAgOzsKICAJZXNhYwogICAgICAgIGVsc2UKLUBAIC05ODAyLDIzICsxMDM4NSwzNiBAQCBmaQorQEAgLTEwMTAyLDIzICsxMDY4NSwzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0xMTYyLDcgKzExNjAsNyBAQAogKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgogKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKQEAgLTExOTIsNyArMTE5MCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05OTAzLDcgKzEwNDk5LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtMTAyMDMsNyArMTA3OTksNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTEyMDEsNyArMTE5OSw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk5MjIsOSArMTA1MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC0xMDIyMiw5ICsxMDgxOCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtMTIxMyw3ICsxMjExLDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDUwMCw4ICsxMTA5Niw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDgwMCw4ICsxMTM5Niw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0xMjI1LDcgKzEyMjMsNyBAQAogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwNTM0LDEzICsxMTEzMSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTA4MzQsMTMgKzExNDMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtMTI5OCw3ICsxMjk2LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwNjMyLDcgKzExMjg3LDcgQEAgaGFpa3UqKQorQEAgLTEwOTMyLDcgKzExNTg3LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0xMzA3LDcgKzEzMDUsMTYgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTE0NzIsMTAgKzEyMTI3LDEwIEBAIGVsc2UKK0BAIC0xMTcyOCw3ICsxMjM4Myw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNzMxICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTc3MiwxMCArMTI0MjcsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xMzIwLDcgKzEzMjcsMTYgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExNTc4LDEwICsxMjIzMywxMCBAQCBlbHNlCitAQCAtMTE4MzQsNyArMTI0ODksNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTgzNyAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE4NzgsMTAgKzEyNTMzLDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtMTMzMyw3ICsxMzQ5LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE0MTcyLDcgKzE0ODI3LDcgQEAgU0hBUkVEX0xERkxBR1M9CitAQCAtMTQ1MjUsNyArMTUxODAsNyBAQCBTSEFSRURfTERGTEFHUz0KICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgogICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTM0Miw3ICsxMzU4LDcgQEAKICAgIGZpCiAgCiAgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLUBAIC0xNjg3OSwxMyArMTc1MzQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3MTM5LDEzICsxNzc5NCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfCiAgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xMzYzLDcgKzEzNzksNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY5MDAsMTQgKzE3NTYyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTcxNjAsMTQgKzE3ODIyLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xMzgyLDcgKzEzOTgsNyBAQAogIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2OTQwLDEyICsxNzYwNSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorQEAgLTE3MjAwLDEyICsxNzg2NSwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMTM5Niw3ICsxNDEyLDcgQEAKICBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3MDAwLDggKzE3NjY1LDEzIEBAIHJlbG9hZF9mbGFnIFwKK0BAIC0xNzI2MCw4ICsxNzkyNSwxMyBAQCByZWxvYWRfZmxhZyBcCiAgT0JKRFVNUCBcCiAgZGVwbGlic19jaGVja19tZXRob2QgXAogIGZpbGVfbWFnaWNfY21kIFwKQEAgLTE0MTAsNyArMTQyNiw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTE3MDExLDEyICsxNzY4MSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xNzI3MSwxMiArMTc5NDEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTE0MjYsNyArMTQ0Miw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTcwMzIsNyArMTc3MDQsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTcyOTIsNyArMTc5NjQsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC0xNDM0LDcgKzE0NTAsNyBAQAogIGV4Y2x1ZGVfZXhwc3ltcyBcCiAgaW5jbHVkZV9leHBzeW1zIFwKICBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTcwNjgsNiArMTc3MzksNyBAQCBtb2R1bGVfY21kcyBcCitAQCAtMTczMjgsNiArMTc5OTksNyBAQCBtb2R1bGVfY21kcyBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzIFwKICBleHBvcnRfc3ltYm9sc19jbWRzIFwKICBwcmVsaW5rX2NtZHMgXApAQCAtMTQ0Miw3ICsxNDU4LDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNzg0Nyw3ICsxODUxOSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xODExNiw3ICsxODc4OCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTE0NTIsNyArMTQ2OCw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE3OTUwLDE5ICsxODYyMyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xODIxOSwxOSArMTg4OTIsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtMTQ5Niw3ICsxNTEyLDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE3OTkyLDYgKzE4Njg4LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTgyNjEsNiArMTg5NTcsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfYwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC0xNTA5LDcgKzE1MjUsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTgwMDEsNiArMTg3MDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE4MjcwLDYgKzE4OTcyLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTE1MTksNyArMTUzNSw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE4MTE1LDEyICsxODgyMCwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTgzODQsMTIgKzE5MDg5LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMTUzNSw3ICsxNTUxLDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xODIwNyw5ICsxODkxMiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xODQ3Niw5ICsxOTE4MSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC0xNTQ1LDcgKzE1NjEsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTgyMjUsNiArMTg5MjcsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE4NDk0LDYgKzE5MTk2LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0xNTU1LDcgKzE1NzEsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE4MjU3LDIxMCArMTg5NjIsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE4NTI2LDIxMCArMTkyMzEsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0xNzU3LDE1ICsxNzczLDkgQEAKIC1fTFRfRU9GCiAtICAgIDs7CiAtICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiArICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKworIAogKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgogKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKICtmdW5jX2Rpcm5hbWUgKClcCkBAIC0xOTIzLDE3ICsxOTMzLDIwIEBACiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQogKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CiArZmkKLSsKLSsKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgICBjaG1vZCAreCAiJG9maWxlIgogIAotZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCi1pbmRleCAyMzQyZjNmYWVhLi5hNjQ1MWZjY2RhIDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZ3VyZS5hYwotKysrIGIvYmZkL2NvbmZpZ3VyZS5hYwotQEAgLTI1NCw3ICsyNTQsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAorSW5kZXg6IGdpdC9iZmQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvYmZkL2NvbmZpZ3VyZS5hYworKysrIGdpdC9iZmQvY29uZmlndXJlLmFjCitAQCAtMjkzLDcgKzI5Myw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCiAgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAogIGNoYW5nZXF1b3RlKFssXSlkbmwKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTk0MiwxMSArMTk1NSwxMSBAQAogICAgZmkKICAKICAjIE1vcmUgaGFja3MgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzLgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2NvbmZpZ3VyZSBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotaW5kZXggNWQ5YzkxMDVhNy4uYTY1YjJiNDUxOCAxMDA3NTUKLS0tLSBhL2JpbnV0aWxzL2NvbmZpZ3VyZQotKysrIGIvYmludXRpbHMvY29uZmlndXJlCi1AQCAtNjU5LDggKzY1OSwxMSBAQCBPVE9PTAorSW5kZXg6IGdpdC9iaW51dGlscy9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9iaW51dGlscy9jb25maWd1cmUKKysrKyBnaXQvYmludXRpbHMvY29uZmlndXJlCitAQCAtNjg4LDggKzY4OCwxMSBAQCBPVE9PTAogIExJUE8KICBOTUVESVQKICBEU1lNVVRJTApAQCAtMTk1OCw3ICsxOTcxLDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzcyLDYgKzc3NSw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC04MDYsNiArODA5LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC0xOTY2LDcgKzE5NzksNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDQ0LDYgKzE0NDgsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNDgyLDYgKzE0ODYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTE5NzUsNyArMTk4OCw3IEBACiAgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBkZWZhdWx0PW5vCiAgICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCi1AQCAtNTE2MCw4ICs1MTY2LDggQEAgZXNhYworQEAgLTU0NTMsOCArNTQ1OSw4IEBAIGVzYWMKICAKICAKICAKQEAgLTE5ODYsNyArMTk5OSw3IEBACiAgCiAgCiAgCi1AQCAtNTIwMSw3ICs1MjA3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC01NDk0LDcgKzU1MDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC0xOTk1LDcgKzIwMDgsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4ODcsOCArNTg5Myw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNjE4MCw4ICs2MTg2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdQogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtMjAwNiwxMyArMjAxOSwxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTkzNyw2ICs1OTQzLDgwIEBAIGVzYWMKK0BAIC02MjMwLDYgKzYyMzYsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTIwNTksNyArMjA3Miw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC0yMDg2LDggKzIwOTksOCBAQAogKwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5NTMsNiArNjAzMywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYyNDYsNiArNjMyNiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgogIGVzYWMKICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMjA5OSw3ICsyMTEyLDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYxMjEsNyArNjIwNiw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTY0MTQsNyArNjQ5OSw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTIxMDksNyArMjEyMiw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTYyNzUsNiArNjM2MSwyMSBAQCBlc2FjCitAQCAtNjU2OCw2ICs2NjU0LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMjEzMSw3ICsyMTQ0LDcgQEAKICBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKICBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKICB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02MjkwLDkgKzYzOTEsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1ODMsOSArNjY4NCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtMjE1MCw3ICsyMTYzLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtMjE2Miw3ICsyMTc1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTIxOTAsNyArMjIwMyw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC0yMjAyLDcgKzIyMTUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTIyNTAsNyArMjI2Myw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwpAQCAtMjI5NSwxNyArMjMwOCwxNyBAQAogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYzMDgsNyArNjU2Miw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NjAxLDcgKzY4NTUsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MzI4LDExICs2NTgyLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjYyMSwxMSArNjg3NSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC0yMzIzLDE3ICsyMzM2LDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjM0OCw3ICs2NjA2LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY2NDEsNyArNjg5OSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MzY3LDYgKzY2MjUsMTAgQEAgZWxzZQorQEAgLTY2NjAsNiArNjkxOCwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtMjM0NCw3ICsyMzU3LDcgQEAKICAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgICBBUj0iZmFsc2UiCiAgICBlbHNlCi1AQCAtNjM3OCwxMiArNjY0MCwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKK0BAIC02NjcxLDEyICs2OTMzLDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwogIGVzYWMKICAgICAgQVI9JGFjX2N0X0FSCiAgICBmaQpAQCAtMjM1OSwxMyArMjM3MiwxMyBAQAogIAogIAogIAotQEAgLTYzOTUsNiArNjY1NSw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorQEAgLTY2ODgsNiArNjk0OCw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9hcl9hdF9maWxlPW5vCkBAIC0yNDI0LDcgKzI0MzcsNyBAQAogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiAgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NzI5LDggKzcwNDcsOCBAQCBlc2FjCitAQCAtNzAyMiw4ICs3MzQwLDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC0yNDM1LDcgKzI0NDgsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02NzY2LDYgKzcwODQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNzA1OSw2ICs3Mzc3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTI0NDMsNyArMjQ1Niw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC02ODA3LDYgKzcxMjYsMTggQEAgX0xUX0VPRgorQEAgLTcxMDAsNiArNzQxOSwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTI0NjIsNyArMjQ3NSw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNjgxOCw3ICs3MTQ5LDcgQEAgX0xUX0VPRgorQEAgLTcxMTEsNyArNzQ0Miw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC0yNDcxLDcgKzI0ODQsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTY4NDQsOCArNzE3NSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNzEzNyw4ICs3NDY4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC0yNDgyLDcgKzI0OTUsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4NTUsOCArNzE4Niw4IEBAIF9MVF9FT0YKK0BAIC03MTQ4LDggKzc0NzksOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTI0OTMsNyArMjUwNiw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC02ODkzLDYgKzcyMjQsMjEgQEAgZWxzZQorQEAgLTcxODYsNiArNzUxNywxOCBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtMjUwOSwxOCArMjUyMiwxMyBAQAogKwogKwogKwotKwotKwotKwogIAogIAogIAotQEAgLTY5MDgsNiArNzI1NCw0MCBAQCBmaQorQEAgLTcyMDcsNiArNzU1MCw0MyBAQCBmaQogIAogIAogIAotKwotKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CiArCkBAIC0yNTQ3LDE2ICsyNTU1LDIxIEBACiArICopCiArICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKICskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogKyAgIDs7CiArZXNhYwogKwogKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQogKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzEyMCw2ICs3NTAwLDEyMyBAQCBlc2FjCisrCisrCisrCisrCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKK0BAIC03NDEzLDYgKzc3OTMsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTI1NjUsNyArMjU3OCw3IEBACiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC0yNTc3LDcgKzI1OTAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTI2MDUsNyArMjYxOCw3IEBACiArc2V0IGR1bW15IG10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtMjYxNyw3ICsyNjMwLDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMjY1NSw3ICsyNjY4LDcgQEAKICt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KQEAgLTI2ODAsNyArMjY5Myw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzY4Myw2ICs4MTgwLDggQEAgX0xUX0VPRgorQEAgLTc5NzYsNiArODQ3Myw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtMjY4OSw3ICsyNzAyLDcgQEAKICAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQogIF9MVF9FT0YKLUBAIC03ODc4LDcgKzgzNzcsOCBAQCBmaQorQEAgLTgxNzEsNyArODY3MCw4IEBAIGZpCiAgTElCVE9PTF9ERVBTPSIkbHRtYWluIgogIAogICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkBAIC0yNjk5LDcgKzI3MTIsNyBAQAogIAogIAogIAotQEAgLTc5NjcsNyArODQ2Nyw3IEBAIGFpeDMqKQorQEAgLTgyNjAsNyArODc2MCw3IEBAIGFpeDMqKQogIGVzYWMKICAKICAjIEdsb2JhbCB2YXJpYWJsZXM6CkBAIC0yNzA4LDcgKzI3MjEsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODI2NSw4ICs4NzY1LDYgQEAgZmkKK0BAIC04NTU4LDggKzkwNTgsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtMjcxNyw3ICsyNzMwLDcgQEAKICAKICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODQzMiw2ICs4OTMwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODcyNSw2ICs5MjIzLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC0yNzMwLDcgKzI3NDMsNyBAQAogICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODQ5NCw3ICs4OTk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04Nzg3LDcgKzkyOTEsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtMjczOSw3ICsyNzUyLDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg1NTEsMTMgKzkwNTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTg4NDQsMTMgKzkzNDgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTI3NTIsNyArMjc2NSw3IEBACiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCkBAIC0yNzYzLDcgKzI3NzYsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODYxOCw2ICs5MTI2LDExIEBAIGZpCitAQCAtODkxMSw2ICs5NDE5LDExIEBAIGZpCiAgCiAgCiAgCkBAIC0yNzc1LDcgKzI3ODgsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTg5NjgsNyArOTQ4MSw4IEBAIF9MVF9FT0YKK0BAIC05MjYxLDcgKzk3NzQsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtMjc4NSw3ICsyNzk4LDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkwNjcsMTIgKzk1ODEsMTIgQEAgX0xUX0VPRgorQEAgLTkzNjAsMTIgKzk4NzQsMTIgQEAgX0xUX0VPRgogIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCkBAIC0yODAwLDcgKzI4MTMsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTkwODYsOCArOTYwMCw4IEBAIF9MVF9FT0YKK0BAIC05Mzc5LDggKzk4OTMsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtMjgxMSw3ICsyODI0LDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtOTEwNSw4ICs5NjE5LDggQEAgX0xUX0VPRgorQEAgLTkzOTgsOCArOTkxMiw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0yODIyLDcgKzI4MzUsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MTUyLDggKzk2NjYsOCBAQCBfTFRfRU9GCitAQCAtOTQ0NSw4ICs5OTU5LDggQEAgX0xUX0VPRgogIAogICAgICAqKQogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTI4MzMsNyArMjg0Niw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTkyODMsNyArOTc5NywxMyBAQCBfTFRfRU9GCitAQCAtOTU3Niw3ICsxMDA5MCwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTI4NDEsMTQgKzI4NTQsMTQgQEAKICsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05Mjk2LDIyICs5ODE2LDI5IEBAIG1haW4gKCkKK0BAIC05NTg5LDIyICsxMDEwOSwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMjg5MSw3ICsyOTA0LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkzMjMsNyArOTg1MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NjE2LDcgKzEwMTQzLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0yODk5LDE0ICsyOTEyLDE0IEBACiArCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTMzNiwyMiArOTg2OSwyOSBAQCBtYWluICgpCitAQCAtOTYyOSwyMiArMTAxNjIsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTI5NDksNyArMjk2Miw3IEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTM5NiwyMCArOTkzNiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05Njg5LDIwICsxMDIyOSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KICAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KQEAgLTMwMjcsNyArMzA0MCw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NDcwLDcgKzEwMDUzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTc2Myw3ICsxMDM0Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC0zMDM2LDcgKzMwNDksNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk0NzgsNyArMTAwNjEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NzcxLDcgKzEwMzU0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTMwNDUsNyArMzA1OCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgIGZpCi1AQCAtOTQ5NCw3ICsxMDA3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk3ODcsNyArMTAzNzAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXgxMCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCkBAIC0zMDU0LDcgKzMwNjcsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtOTUxOCwxMCArMTAxMDEsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTgxMSwxMCArMTAzOTQsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC0zMDY3LDcgKzMwODAsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTYwMCwyMyArMTAxODMsMzYgQEAgZmkKK0BAIC05ODkzLDIzICsxMDQ3NiwzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0zMDgyLDcgKzMwOTUsNyBAQAogKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgogKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKQEAgLTMxMTIsNyArMzEyNSw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NzAxLDcgKzEwMjk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTk5NCw3ICsxMDU5MCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwpAQCAtMzEyMSw3ICszMTM0LDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTcyMCw5ICsxMDMxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTEwMDEzLDkgKzEwNjA5LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC0zMTMzLDcgKzMxNDYsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwMjk4LDggKzEwODk0LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTEwNTkxLDggKzExMTg3LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTMxNDUsNyArMzE1OCw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAzMzIsMTMgKzEwOTI5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDYyNSwxMyArMTEyMjIsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC0zMjE4LDcgKzMyMzEsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTA0MzAsNyArMTEwODUsNyBAQCBoYWlrdSopCitAQCAtMTA3MjMsNyArMTEzNzgsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTMyMjcsNyArMzI0MCwxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMTI3MCwxMCArMTE5MjUsMTAgQEAgZWxzZQorQEAgLTExNTE5LDcgKzEyMTc0LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1MjIgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTYzLDEwICsxMjIxOCwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTMyNDAsNyArMzI2MiwxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEzNzYsMTAgKzEyMDMxLDEwIEBAIGVsc2UKK0BAIC0xMTYyNSw3ICsxMjI4MCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNjI4ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTY2OSwxMCArMTIzMjQsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0zMjUzLDcgKzMyODQsNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTU0NDYsMTMgKzE2MTAxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTczMSwxMyArMTYzODYsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMzI3NCw3ICszMzA1LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDY3LDE0ICsxNjEyOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTE1NzUyLDE0ICsxNjQxNCwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMzI5Myw3ICszMzI0LDcgQEAKICBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTUwNywxMiArMTYxNzIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKK0BAIC0xNTc5MiwxMiArMTY0NTcsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZAogIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTMzMDcsNyArMzMzOCw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTU2Nyw4ICsxNjIzMiwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTU4NTIsOCArMTY1MTcsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC0zMzIxLDcgKzMzNTIsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xNTU3OCwxMiArMTYyNDgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTU4NjMsMTIgKzE2NTMzLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC0zMzM3LDcgKzMzNjgsNyBAQAogIERTWU1VVElMIFwKICBOTUVESVQgXAogIExJUE8gXAotQEAgLTE1NTk5LDcgKzE2MjcxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorQEAgLTE1ODg0LDcgKzE2NTU2LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAogIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXApAQCAtMzM0NSw3ICszMzc2LDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTE1NjM1LDYgKzE2MzA2LDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTE1OTIwLDYgKzE2NTkxLDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTMzNTMsNyArMzM4NCw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTYzOTIsNyArMTcwNjQsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CitAQCAtMTY2ODYsNyArMTczNTgsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CiAgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAgIwogICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCkBAIC0zMzYzLDcgKzMzOTQsNyBAQAogICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAgIwogICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNjQ5NSwxOSArMTcxNjgsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCitAQCAtMTY3ODksMTkgKzE3NDYyLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAogICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KICBOTDJTUD0kbHRfbHRfTkwyU1AKICAKQEAgLTM0MDcsNyArMzQzOCw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xNjUzNyw2ICsxNzIzMywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTE2ODMxLDYgKzE3NTI3LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtMzQyMCw3ICszNDUxLDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTE2NTQ2LDYgKzE3MjQ4LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xNjg0MCw2ICsxNzU0Miw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC0zNDMwLDcgKzM0NjEsNyBAQAogICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KICBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKICAKLUBAIC0xNjY2MCwxMiArMTczNjUsMTIgQEAgd2l0aF9nY2M9JEdDQworQEAgLTE2OTU0LDEyICsxNzY1OSwxMiBAQCB3aXRoX2djYz0kR0NDCiAgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgogIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKICAKQEAgLTM0NDYsNyArMzQ3Nyw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTY3NTIsOSArMTc0NTcsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTcwNDYsOSArMTc3NTEsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtMzQ1Niw3ICszNDg3LDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTE2NzcwLDYgKzE3NDcyLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xNzA2NCw2ICsxNzc2Niw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtMzQ2Niw3ICszNDk3LDcgQEAKICAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KICBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKICAKLUBAIC0xNjgwMiwyMTAgKzE3NTA3LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK0BAIC0xNzA5NiwyMTAgKzE3ODAxLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKICAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KICAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwpAQCAtMzY2OCwxNSArMzY5OSw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtMzgzNCwxNyArMzg1OSwyMCBAQAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKICskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQogK2ZpCi0rCi0rCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLWRpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQotaW5kZXggZmJhYzhmNDRkNS4uYTQwYWMyMTQ0ZiAxMDA3NTUKLS0tLSBhL2dhcy9jb25maWd1cmUKLSsrKyBiL2dhcy9jb25maWd1cmUKLUBAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCitJbmRleDogZ2l0L2dhcy9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9nYXMvY29uZmlndXJlCisrKysgZ2l0L2dhcy9jb25maWd1cmUKK0BAIC02ODEsOCArNjgxLDExIEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC0zODU2LDcgKzM4ODQsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTc5OSw2ICs4MDIsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTM4NjQsNyArMzg5MiwxNiBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfcGx1Z2lucwogIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC00OTIxLDggKzQ5MjUsOCBAQCBlc2FjCitAQCAtMTQ4Miw2ICsxNDg2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLWNwdT1DUFUgICAgICAgICAgZGVmYXVsdCBjcHUgdmFyaWFudCBpcyBDUFUgKGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gQVJDKQorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CitAQCAtNTI2OSw4ICs1Mjc1LDggQEAgZXNhYwogIAogIAogIApAQCAtMzg3NSw3ICszOTEyLDcgQEAKICAKICAKICAKLUBAIC00OTYyLDcgKzQ5NjYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworQEAgLTUzMTAsNyArNTMxNiw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KICAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KQEAgLTM4ODQsNyArMzkyMSw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTY0OCw4ICs1NjUyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC01OTk2LDggKzYwMDIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC0zODk1LDEzICszOTMyLDEzIEBACiAgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01Njk4LDYgKzU3MDIsODAgQEAgZXNhYworQEAgLTYwNDYsNiArNjA1Miw4MCBAQCBlc2FjCiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2FzZSAkaG9zdCBpbgpAQCAtMzk0OCw3ICszOTg1LDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KQEAgLTM5NzUsOCArNDAxMiw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTcxNCw2ICs1NzkyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjA2Miw2ICs2MTQyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0zOTg4LDcgKzQwMjUsNyBAQAogICAgZGFyd2luKikKICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTg4Miw3ICs1OTY1LDggQEAgbWluZ3cqIHwgcHczMiopCitAQCAtNjIzMCw3ICs2MzE1LDggQEAgbWluZ3cqIHwgcHczMiopCiAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICAgZWxzZQpAQCAtMzk5OCw3ICs0MDM1LDcgQEAKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICAgZmkKICAgIDs7Ci1AQCAtNjAzNiw2ICs2MTIwLDIxIEBAIGVzYWMKK0BAIC02Mzg0LDYgKzY0NzAsMjEgQEAgZXNhYwogIGZpCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CiAgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CkBAIC00MDIwLDcgKzQwNTcsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYwNTEsOSArNjE1MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjM5OSw5ICs2NTAwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgCiAgCiAgCkBAIC00MDM0LDEyICs0MDcxLDE0IEBACiArCiArCiArCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKICsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtNDA1MSw3ICs0MDkwLDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTQwNzksNyArNDExOCw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC00MDkxLDcgKzQxMzAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTQxMzksNyArNDE3OCw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwpAQCAtNDE3NSwyNiArNDIxNCwyNCBAQAogKwogKwogKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiArICBmb3IgYWNfcHJvZyBpbiBhcgogKyAgZG8KICsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiArc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjA2OSw3ICs2MzIxLDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY0MTcsNyArNjY3MSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKICsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYwODksMTEgKzYzNDEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KK0BAIC02NDM3LDExICs2NjkxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CiAgZmkKICAKICAKQEAgLTQyMTIsMTcgKzQyNDksMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MTA5LDcgKzYzNjUsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQ1Nyw3ICs2NzE1LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKICsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCiAgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgICBicmVhayAyCiAgICBmaQotQEAgLTYxMjgsNiArNjM4NCwxMCBAQCBlbHNlCitAQCAtNjQ3Niw2ICs2NzM0LDEwIEBAIGVsc2UKICAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCkBAIC00MjMzLDcgKzQyNzAsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02MTM5LDEyICs2Mzk5LDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTY0ODcsMTIgKzY3NDksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC00MjQ4LDEzICs0Mjg1LDEzIEBACiAgCiAgCiAgCi1AQCAtNjE1Niw2ICs2NDE0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitAQCAtNjUwNCw2ICs2NzY0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiAgCiAgCiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KQEAgLTQzMTMsNyArNDM1MCw3IEBACiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KICBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgotQEAgLTY0OTAsOCArNjgwNiw4IEBAIGVzYWMKK0BAIC02ODM4LDggKzcxNTYsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTQzMjQsNyArNDM2MSw3IEBACiAgCiAgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiAgb3B0X2NyPQotQEAgLTY1MjcsNiArNjg0Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KK0BAIC02ODc1LDYgKzcxOTMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCiAgICBlbHNlCiAgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCiAgICBmaQpAQCAtNDMzMiw3ICs0MzY5LDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY1NjgsNiArNjg4NSwxOCBAQCBfTFRfRU9GCitAQCAtNjkxNiw2ICs3MjM1LDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtNDM1MSw3ICs0Mzg4LDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC02NTc5LDcgKzY5MDgsNyBAQCBfTFRfRU9GCitAQCAtNjkyNyw3ICs3MjU4LDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTQzNjAsNyArNDM5Nyw3IEBACiAgICBjb25zdCBjaGFyICpuYW1lOwogICAgdm9pZCAgICAgICAqYWRkcmVzczsKICB9Ci1AQCAtNjYwNSw4ICs2OTM0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC02OTUzLDggKzcyODQsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICBfTFRfRU9GCiAgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KICAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKQEAgLTQzNzEsNyArNDQwOCw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjYxNiw4ICs2OTQ1LDggQEAgX0xUX0VPRgorQEAgLTY5NjQsOCArNzI5NSw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtNDM4Miw3ICs0NDE5LDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTY2NTQsNiArNjk4MywyMSBAQCBlbHNlCitAQCAtNzAwMiw2ICs3MzMzLDE5IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC00Mzk5LDE3ICs0NDM2LDEzIEBACiArCiArCiArCi0rCi0rCiAgCiAgCiAgCi1AQCAtNjY2OSw2ICs3MDEzLDQwIEBAIGZpCitAQCAtNzAyMiw2ICs3MzY2LDQyIEBAIGZpCiAgCiAgCiAgCi0rCi0rCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KICsKQEAgLTQ0MzYsMTYgKzQ0NjksMjAgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKysKKysKKysKKysKICAKLSAKLSAKLUBAIC02ODgxLDYgKzcyNTksMTIzIEBAIGVzYWMKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTcyMjksNiArNzYwOSwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtNDQ1NCw3ICs0NDkxLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTQ0NjYsNyArNDUwMyw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNDQ5NCw3ICs0NTMxLDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC00NTA2LDcgKzQ1NDMsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC00NTQ0LDcgKzQ1ODEsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtNDU2OSw3ICs0NjA2LDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NDQ0LDYgKzc5MzksOCBAQCBfTFRfRU9GCitAQCAtNzc5Miw2ICs4Mjg5LDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC00NTc4LDcgKzQ2MTUsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTc2MzksNyArODEzNiw4IEBAIGZpCitAQCAtNzk4Nyw3ICs4NDg2LDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTQ1ODgsNyArNDYyNSw3IEBACiAgCiAgCiAgCi1AQCAtNzcyOCw3ICs4MjI2LDcgQEAgYWl4MyopCitAQCAtODA3Niw3ICs4NTc2LDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTQ1OTcsNyArNDYzNCw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04MDI2LDggKzg1MjQsNiBAQCBmaQorQEAgLTgzNzQsOCArODg3NCw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC00NjA2LDcgKzQ2NDMsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MTkzLDYgKzg2ODksMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04NTQxLDYgKzkwMzksMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTQ2MTksNyArNDY1Niw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MjU1LDcgKzg3NTcsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg2MDMsNyArOTEwNyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC00NjI4LDcgKzQ2NjUsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODMxMiwxMyArODgxNCwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtODY2MCwxMyArOTE2NCwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtNDY0MSw3ICs0Njc4LDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTQ2NTIsNyArNDY4OSw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mzc5LDYgKzg4ODUsMTEgQEAgZmkKK0BAIC04NzI3LDYgKzkyMzUsMTEgQEAgZmkKICAKICAKICAKQEAgLTQ2NjQsNyArNDcwMSw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtODcyOSw3ICs5MjQwLDggQEAgX0xUX0VPRgorQEAgLTkwNzcsNyArOTU5MCw4IEBAIF9MVF9FT0YKICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAogICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC00Njc0LDcgKzQ3MTEsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODgyOCwxMiArOTM0MCwxMiBAQCBfTFRfRU9GCitAQCAtOTE3NiwxMiArOTY5MCwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTQ2ODksNyArNDcyNiw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtODg0Nyw4ICs5MzU5LDggQEAgX0xUX0VPRgorQEAgLTkxOTUsOCArOTcwOSw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC00NzAwLDcgKzQ3MzcsNyBAQAogICAgICAgIGZpCiAgICAgICAgOzsKICAKLUBAIC04ODY2LDggKzkzNzgsOCBAQCBfTFRfRU9GCitAQCAtOTIxNCw4ICs5NzI4LDggQEAgX0xUX0VPRgogIAogIF9MVF9FT0YKICAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTQ3MTEsNyArNDc0OCw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg5MTMsOCArOTQyNSw4IEBAIF9MVF9FT0YKK0BAIC05MjYxLDggKzk3NzUsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtNDcyMiw3ICs0NzU5LDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTA0NCw3ICs5NTU2LDEzIEBAIF9MVF9FT0YKK0BAIC05MzkyLDcgKzk5MDYsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC00NzMwLDE0ICs0NzY3LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTA1NywyMiArOTU3NSwyOSBAQCBtYWluICgpCitAQCAtOTQwNSwyMiArOTkyNSwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtNDc4MCw3ICs0ODE3LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkwODQsNyArOTYwOSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDMyLDcgKzk5NTksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTQ3ODgsMTQgKzQ4MjUsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MDk3LDIyICs5NjI4LDI5IEBAIG1haW4gKCkKK0BAIC05NDQ1LDIyICs5OTc4LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC00ODM4LDcgKzQ4NzUsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkxNTcsMjAgKzk2OTUsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTUwNSwyMCArMTAwNDUsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC00OTE2LDcgKzQ5NTMsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTIzMSw3ICs5ODEyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTU3OSw3ICsxMDE2Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC00OTI1LDcgKzQ5NjIsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTkyMzksNyArOTgyMCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk1ODcsNyArMTAxNzAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtNDkzNCw3ICs0OTcxLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05MjU1LDcgKzk4MzYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NjAzLDcgKzEwMTg2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtNDk0Myw3ICs0OTgwLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTkyNzksMTAgKzk4NjAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTYyNywxMCArMTAyMTAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC00OTU2LDcgKzQ5OTMsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTM2MSwyMyArOTk0MiwzNiBAQCBmaQorQEAgLTk3MDksMjMgKzEwMjkyLDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTQ5NzEsNyArNTAwOCw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtNTAwMSw3ICs1MDM4LDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk0NjIsNyArMTAwNTYsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKK0BAIC05ODEwLDcgKzEwNDA2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC01MDEwLDcgKzUwNDcsNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05NDgxLDkgKzEwMDc1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTgyOSw5ICsxMDQyNSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtNTAyMiw3ICs1MDU5LDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDA1OSw4ICsxMDY1Myw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDQwNyw4ICsxMTAwMyw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC01MDM0LDcgKzUwNzEsNyBAQAogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMDkzLDEzICsxMDY4OCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTA0NDEsMTMgKzExMDM4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtNTEwNyw3ICs1MTQ0LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwMTkxLDcgKzEwODQ0LDcgQEAgaGFpa3UqKQorQEAgLTEwNTM5LDcgKzExMTk0LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC01MTE2LDcgKzUxNTMsMTYgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTEwMzEsMTAgKzExNjg0LDEwIEBAIGVsc2UKK0BAIC0xMTMzNSw3ICsxMTk5MCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMzM4ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTM3OSwxMCArMTIwMzQsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC01MTI5LDcgKzUxNzUsMTYgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMTM3LDEwICsxMTc5MCwxMCBAQCBlbHNlCitAQCAtMTE0NDEsNyArMTIwOTYsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTQ0NCAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE0ODUsMTAgKzEyMTQwLDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtNTE0Miw3ICs1MTk3LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1NDM3LDEzICsxNjA5MCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU4MDMsMTMgKzE2NDU4LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV8KICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUxNjMsNyArNTIxOCw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ1OCwxNCArMTYxMTgsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xNTgyNCwxNCArMTY0ODYsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTUxODIsNyArNTIzNyw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU0OTgsMTIgKzE2MTYxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTU4NjQsMTIgKzE2NTI5LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC01MTk2LDcgKzUyNTEsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NTgsOCArMTYyMjEsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE1OTI0LDggKzE2NTg5LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtNTIxMCw3ICs1MjY1LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTU1NjksMTIgKzE2MjM3LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE1OTM1LDEyICsxNjYwNSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtNTIyNiw3ICs1MjgxLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xNTU5MCw3ICsxNjI2MCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xNTk1Niw3ICsxNjYyOCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTUyMzQsNyArNTI4OSw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYyNiw2ICsxNjI5NSw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xNTk5Miw2ICsxNjY2Myw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC01MjQyLDcgKzUyOTcsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE2MzkwLDcgKzE3MDYwLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE2NzY1LDcgKzE3NDM3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtNTI1Miw3ICs1MzA3LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTY0OTMsMTkgKzE3MTY0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE2ODY4LDE5ICsxNzU0MSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC01Mjk2LDcgKzUzNTEsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTY1MzUsNiArMTcyMjksMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xNjkxMCw2ICsxNzYwNiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTUzMDksNyArNTM2NCw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xNjU0NCw2ICsxNzI0NCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTY5MTksNiArMTc2MjEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtNTMxOSw3ICs1Mzc0LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTY2NTgsMTIgKzE3MzYxLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xNzAzMywxMiArMTc3MzgsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC01MzM1LDcgKzUzOTAsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTE2NzUwLDkgKzE3NDUzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTE3MTI1LDkgKzE3ODMwLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTUzNDUsNyArNTQwMCw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xNjc2OCw2ICsxNzQ2OCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTcxNDMsNiArMTc4NDUsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTUzNTUsNyArNTQxMCw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTY4MDAsMjEwICsxNzUwMywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTcxNzUsMjEwICsxNzg4MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTU1NTcsMTUgKzU2MTIsOSBAQAogLV9MVF9FT0YKIC0gICAgOzsKIC0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCisgCiArICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCiArICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAogK2Z1bmNfZGlybmFtZSAoKVwKQEAgLTU3MjMsMTcgKzU3NzIsMjAgQEAKICsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiArJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KICtmaQotKwotKworIAorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA2YjQzYmYyYjE4Li4yNDVlZTQ4YmMzIDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC02MzEsOCArNjMxLDExIEBAIE9UT09MCitJbmRleDogZ2l0L2dwcm9mL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2dwcm9mL2NvbmZpZ3VyZQorKysrIGdpdC9ncHJvZi9jb25maWd1cmUKK0BAIC02NjIsOCArNjYyLDExIEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC01NzQ1LDcgKzU3OTcsNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03NDQsNiArNzQ3LDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTc4MCw2ICs3ODMsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTU3NTMsNyArNTgwNSw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9wbHVnaW5zCiAgZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0MDIsNiArMTQwNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE0NDIsNiArMTQ0Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtNTc2Miw3ICs1ODE0LDcgQEAKICAKICBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTQ4MzYsOCArNDg0Miw4IEBAIGVzYWMKK0BAIC01MTI0LDggKzUxMzAsOCBAQCBlc2FjCiAgCiAgCiAgCkBAIC01NzczLDcgKzU4MjUsNyBAQAogIAogIAogIAotQEAgLTQ4NzcsNyArNDg4Myw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCitAQCAtNTE2NSw3ICs1MTcxLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQogICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgpAQCAtNTc4Miw3ICs1ODM0LDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01NTYzLDggKzU1NjksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworQEAgLTU4NTEsOCArNTg1Nyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHUKICAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogIHhzaV9zaGVsbD1ubwogICggX2x0X2R1bW15PSJhL2IvYyIKQEAgLTU3OTMsMTMgKzU4NDUsMTMgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU2MTMsNiArNTYxOSw4MCBAQCBlc2FjCitAQCAtNTkwMSw2ICs1OTA3LDgwIEBAIGVzYWMKICAKICAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXNlICRob3N0IGluCkBAIC01ODQ2LDcgKzU4OTgsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgpAQCAtNTg3Myw4ICs1OTI1LDggQEAKICsKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NjI5LDYgKzU3MDksMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC01OTE3LDYgKzU5OTcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KICBlc2FjCiAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogIGNhc2UgJGhvc3Rfb3MgaW4KQEAgLTU4ODYsNyArNTkzOCw3IEBACiAgICBkYXJ3aW4qKQogICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01Nzk3LDcgKzU4ODIsOCBAQCBtaW5ndyogfCBwdzMyKikKK0BAIC02MDg1LDcgKzYxNzAsOCBAQCBtaW5ndyogfCBwdzMyKikKICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgICBlbHNlCkBAIC01ODk2LDcgKzU5NDgsNyBAQAogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgICBmaQogICAgOzsKLUBAIC01ODc0LDExICs1OTYwLDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorQEAgLTYxNjIsMTEgKzYyNDgsNiBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICAgOzsKICAKQEAgLTU5MDgsNyArNTk2MCw3IEBACiAgbmV0YnNkKikKICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJwotQEAgLTU5NTYsNiArNjAzNywyMSBAQCBlc2FjCitAQCAtNjI0NCw2ICs2MzI1LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtNTkzMCw3ICs1OTgyLDcgQEAKICBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKICBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKICB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC01OTcxLDkgKzYwNjcsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyNTksOSArNjM1NSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtNTk0NCwxMiArNTk5NiwxNCBAQAogKwogKwogKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCiArICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KQEAgLTU5NjEsNyArNjAxNSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC01OTg5LDcgKzYwNDMsNyBAQAogK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgpAQCAtNjAwMSw3ICs2MDU1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC02MDQ5LDcgKzYxMDMsNyBAQAogKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKQEAgLTYwODUsMjYgKzYxMzksMjQgQEAKICsKICsKICsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgogKyAgZm9yIGFjX3Byb2cgaW4gYXIKICsgIGRvCiArICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5ODksNyArNjIzOCw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02Mjc3LDcgKzY1MjYsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MDA5LDExICs2MjU4LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNjI5NywxMSArNjU0NiwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC02MTIyLDE3ICs2MTc0LDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjAyOSw3ICs2MjgyLDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYzMTcsNyArNjU3MCw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MDQ4LDYgKzYzMDEsMTAgQEAgZWxzZQorQEAgLTYzMzYsNiArNjU4OSwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtNjE0Myw3ICs2MTk1LDcgQEAKICAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgICBBUj0iZmFsc2UiCiAgICBlbHNlCi1AQCAtNjA1OSwxMiArNjMxNiwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKK0BAIC02MzQ3LDE2ICs2NjA0LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwogIGVzYWMKICAgICAgQVI9JGFjX2N0X0FSCiAgICBmaQpAQCAtNjE1NSwxNiArNjIwNywyMCBAQAogLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CiArOiAke0FSPWFyfQogKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjA3Niw2ICs2MzMxLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KQEAgLTYxNzQsNyArNjIzMCw3IEBACiAraW50CiArbWFpbiAoKQogK3sKLSsKKyAKICsgIDsKICsgIHJldHVybiAwOwogK30KQEAgLTYyMDAsMzAgKzYyNTYsMjMgQEAKICsgICAgICAgIGZpCiArICAgICAgZmkKICsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKKyAKICtmaQogK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKworIAogK2ZpCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKICskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKworIAogK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KICtlbHNlCiArICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKICtmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDEwLDggKzY3MjMsOCBAQCBlc2FjCisgCisgCisgCitAQCAtNjY5OCw4ICs3MDExLDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC02MjM0LDcgKzYyODMsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02NDQ3LDYgKzY3NjAsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNjczNSw2ICs3MDQ4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTYyNDIsNyArNjI5MSw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC02NDg4LDYgKzY4MDIsMTggQEAgX0xUX0VPRgorQEAgLTY3NzYsNiArNzA5MCwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTYyNjEsNyArNjMxMCw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNjQ5OSw3ICs2ODI1LDcgQEAgX0xUX0VPRgorQEAgLTY3ODcsNyArNzExMyw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC02MjcwLDcgKzYzMTksNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTY1MjUsOCArNjg1MSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNjgxMyw4ICs3MTM5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC02MjgxLDcgKzYzMzAsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY1MzYsOCArNjg2Miw4IEBAIF9MVF9FT0YKK0BAIC02ODI0LDggKzcxNTAsOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTYyOTIsNyArNjM0MSw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC02NTc0LDYgKzY5MDAsMTggQEAgZWxzZQorQEAgLTY4NjIsNiArNzE4OCwxNyBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtNjMwNywxOSArNjM1NiwxNCBAQAogKwogKwogKwotKwogIAogIAogIAotQEAgLTY1OTAsNiArNjkyOCw0MyBAQCBmaQorQEAgLTY4ODMsNiArNzIyMCw0NCBAQCBmaQogIAogIAogIAogKwotKwotKwotKwotKwogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CiArCkBAIC02MzQ2LDE2ICs2MzkwLDIxIEBACiArICopCiArICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKICskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogKyAgIDs7CiArZXNhYwogKwogKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQogKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNjgwMSw2ICs3MTc2LDEyMyBAQCBlc2FjCisrCisrCisrCisrCisrCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKK0BAIC03MDg5LDYgKzc0NjQsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTYzNjQsNyArNjQxMyw3IEBACiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC02Mzc2LDcgKzY0MjUsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTY0MDQsNyArNjQ1Myw3IEBACiArc2V0IGR1bW15IG10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtNjQxNiw3ICs2NDY1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtNjQ1NCw3ICs2NTAzLDcgQEAKICt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KQEAgLTY0NzksNyArNjUyOCw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzM2NCw2ICs3ODU2LDggQEAgX0xUX0VPRgorQEAgLTc2NTIsNiArODE0NCw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtNjQ4OCw3ICs2NTM3LDcgQEAKICAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQogIF9MVF9FT0YKLUBAIC03NTU5LDcgKzgwNTMsOCBAQCBmaQorQEAgLTc4NDcsNyArODM0MSw4IEBAIGZpCiAgTElCVE9PTF9ERVBTPSIkbHRtYWluIgogIAogICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkBAIC02NDk4LDcgKzY1NDcsNyBAQAogIAogIAogIAotQEAgLTc2NDgsNyArODE0Myw3IEBAIGFpeDMqKQorQEAgLTc5MzYsNyArODQzMSw3IEBAIGFpeDMqKQogIGVzYWMKICAKICAjIEdsb2JhbCB2YXJpYWJsZXM6CkBAIC02NTA3LDcgKzY1NTYsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzk0Niw4ICs4NDQxLDYgQEAgZmkKK0BAIC04MjM0LDggKzg3MjksNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtNjUxNiw3ICs2NTY1LDcgQEAKICAKICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODExMyw2ICs4NjA2LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODQwMSw2ICs4ODk0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC02NTI5LDcgKzY1NzgsNyBAQAogICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODE3NSw3ICs4Njc0LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC04NDYzLDcgKzg5NjIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtNjUzOCw3ICs2NTg3LDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTgyMzIsMTMgKzg3MzEsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTg1MjAsMTMgKzkwMTksMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTY1NTEsNyArNjYwMCw3IEBACiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCkBAIC02NTYyLDcgKzY2MTEsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODI5OSw2ICs4ODAyLDExIEBAIGZpCitAQCAtODU4Nyw2ICs5MDkwLDExIEBAIGZpCiAgCiAgCiAgCkBAIC02NTc0LDcgKzY2MjMsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTg2NDksNyArOTE1Nyw4IEBAIF9MVF9FT0YKK0BAIC04OTM3LDcgKzk0NDUsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtNjU4NCw3ICs2NjMzLDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTg3NDgsMTIgKzkyNTcsMTIgQEAgX0xUX0VPRgorQEAgLTkwMzYsMTIgKzk1NDUsMTIgQEAgX0xUX0VPRgogIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCkBAIC02NTk5LDcgKzY2NDgsNyBAQAogIAkgIGZpCiAgCSAgOzsKICAJZXNhYwotQEAgLTg3NjcsOCArOTI3Niw4IEBAIF9MVF9FT0YKK0BAIC05MDU1LDggKzk1NjQsOCBAQCBfTFRfRU9GCiAgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKICAJd2xhcmM9CiAgICAgICAgZWxzZQpAQCAtNjYxMCw3ICs2NjU5LDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtODc4Niw4ICs5Mjk1LDggQEAgX0xUX0VPRgorQEAgLTkwNzQsOCArOTU4Myw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC02NjIxLDcgKzY2NzAsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC04ODMzLDggKzkzNDIsOCBAQCBfTFRfRU9GCitAQCAtOTEyMSw4ICs5NjMwLDggQEAgX0xUX0VPRgogIAogICAgICAqKQogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTY2MzIsNyArNjY4MSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTg5NjQsNyArOTQ3MywxMyBAQCBfTFRfRU9GCitAQCAtOTI1Miw3ICs5NzYxLDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtNjY0MCwxNCArNjY4OSwxNCBAQAogKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTg5NzcsMjIgKzk0OTIsMjkgQEAgbWFpbiAoKQorQEAgLTkyNjUsMjIgKzk3ODAsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTY2OTAsNyArNjczOSw3IEBACiAgCiAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MDA0LDcgKzk1MjYsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTI5Miw3ICs5ODE0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC02Njk4LDE0ICs2NzQ3LDE0IEBACiArCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTAxNywyMiArOTU0NSwyOSBAQCBtYWluICgpCitAQCAtOTMwNSwyMiArOTgzMywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtNjc0OCw3ICs2Nzk3LDcgQEAKICAKICAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MDc3LDIwICs5NjEyLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTkzNjUsMjAgKzk5MDAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC02ODI2LDcgKzY4NzUsNyBAQAogICAgICAgIDs7CiAgCiAgICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTE1MSw3ICs5NzI5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTQzOSw3ICsxMDAxNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC02ODM1LDcgKzY4ODQsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTkxNTksNyArOTczNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk0NDcsNyArMTAwMjUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgIGhwdXg5KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtNjg0NCw3ICs2ODkzLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05MTc1LDcgKzk3NTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NDYzLDcgKzEwMDQxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtNjg1Myw3ICs2OTAyLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTkxOTksMTAgKzk3NzcsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTQ4NywxMCArMTAwNjUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgOzsKICAJaWE2NCopCkBAIC02ODY2LDcgKzY5MTUsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTI4MSwyMyArOTg1OSwzNiBAQCBmaQorQEAgLTk1NjksMjMgKzEwMTQ3LDM2IEBAIGZpCiAgCiAgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTY4ODEsNyArNjkzMCw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtNjkxMSw3ICs2OTYwLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTkzODIsNyArOTk3Myw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk2NzAsNyArMTAyNjEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTY5MjAsNyArNjk2OSw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk0MDEsOSArOTk5Miw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk2ODksOSArMTAyODAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTY5MzIsNyArNjk4MSw3IEBACiAgICAgICAgZWxzZQogIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KICAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtOTk3OSw4ICsxMDU3MCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDI2Nyw4ICsxMDg1OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC02OTQ0LDcgKzY5OTMsNyBAQAogICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMDEzLDEzICsxMDYwNSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtMTAzMDEsMTMgKzEwODkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtNzAxNyw3ICs3MDY2LDcgQEAKICAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICAgc2hsaWJwYXRoX3Zhcj1QQVRICiAgICA7OwotQEAgLTEwMTExLDcgKzEwNzYxLDcgQEAgaGFpa3UqKQorQEAgLTEwMzk5LDcgKzExMDQ5LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC03MDI2LDcgKzcwNzUsMTYgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTA5NTEsMTAgKzExNjAxLDEwIEBAIGVsc2UKK0BAIC0xMTE5NSw3ICsxMTg0NSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMTkzICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTIzOSwxMCArMTE4ODksMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC03MDM5LDcgKzcwOTcsMTYgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMDU3LDEwICsxMTcwNywxMCBAQCBlbHNlCitAQCAtMTEzMDEsNyArMTE5NTEsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTI5OSAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTEzNDUsMTAgKzExOTk1LDEwIEBAIGVsc2UKICAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwogICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQpAQCAtNzA1Miw3ICs3MTE5LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEzMDA1LDEzICsxMzY1NSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMzMTQsMTMgKzEzOTY0LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV8KICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTcwNzMsNyArNzE0MCw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzAyNiwxNCArMTM2ODMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xMzMzNSwxNCArMTM5OTIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTcwOTIsNyArNzE1OSw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMwNjYsMTIgKzEzNzI2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTMzNzUsMTIgKzE0MDM1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC03MTA2LDcgKzcxNzMsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMxMjYsOCArMTM3ODYsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTEzNDM1LDggKzE0MDk1LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtNzEyMCw3ICs3MTg3LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTMxMzcsMTIgKzEzODAyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTEzNDQ2LDEyICsxNDExMSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtNzEzNiw3ICs3MjAzLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xMzE1OCw3ICsxMzgyNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xMzQ2Nyw3ICsxNDEzNCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTcxNDQsNyArNzIxMSw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMzE5NCw2ICsxMzg2MCw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xMzUwMyw2ICsxNDE2OSw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC03MTUyLDcgKzcyMTksNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTEzOTUwLDcgKzE0NjE3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorQEAgLTE0MjY4LDcgKzE0OTM1LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAogICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogICMKICAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LApAQCAtNzE2Miw3ICs3MjI5LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQwNTMsMTkgKzE0NzIxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE0MzcxLDE5ICsxNTAzOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC03MjA2LDcgKzcyNzMsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTQwOTUsNiArMTQ3ODYsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xNDQxMyw2ICsxNTEwNCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTcyMTksNyArNzI4Niw3IEBACiAgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCiAgb2JqZGlyPSRvYmpkaXIKICAKLUBAIC0xNDEwNCw2ICsxNDgwMSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECitAQCAtMTQ0MjIsNiArMTUxMTksOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CiAgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogIApAQCAtNzIyOSw3ICs3Mjk2LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTQyMTgsMTIgKzE0OTE4LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xNDUzNiwxMiArMTUyMzYsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC03MjQ1LDcgKzczMTIsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTE0MzEwLDkgKzE1MDEwLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTE0NjI4LDkgKzE1MzI4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTcyNTUsNyArNzMyMiw3IEBACiAgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCiAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKICAKLUBAIC0xNDMyOCw2ICsxNTAyNSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCitAQCAtMTQ2NDYsNiArMTUzNDMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwogICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCiAgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKICAKQEAgLTcyNjUsNyArNzMzMiw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTQzNjAsMjEwICsxNTA2MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTQ2NzgsMjEwICsxNTM3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTc0NjcsMTUgKzc1MzQsOSBAQAogLV9MVF9FT0YKIC0gICAgOzsKIC0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCisgCiArICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCiArICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAogK2Z1bmNfZGlybmFtZSAoKVwKQEAgLTc2MzMsMTcgKzc2OTQsMjAgQEAKICsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CiArJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KICtmaQotKwotKworIAorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorIAorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgIGNobW9kICt4ICIkb2ZpbGUiCiAgCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCAwY2M2ZThhNTBmLi5kYjhiOTk4NzIyIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC02NTUsOCArNjU1LDExIEBAIE9UT09MCitJbmRleDogZ2l0L2xkL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xkL2NvbmZpZ3VyZQorKysrIGdpdC9sZC9jb25maWd1cmUKK0BAIC02ODcsOCArNjg3LDExIEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC03NjU1LDcgKzc3MTksNyBAQAogIE9CSkRVTVAKICBMTl9TCiAgTk0KLUBAIC03NzgsNiArNzgxLDcgQEAgZW5hYmxlX3N0YXRpYworQEAgLTgxNSw2ICs4MTgsNyBAQCBlbmFibGVfc3RhdGljCiAgd2l0aF9waWMKICBlbmFibGVfZmFzdF9pbnN0YWxsCiAgd2l0aF9nbnVfbGQKQEAgLTc2NjMsNyArNzcyNyw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9wbHVnaW5zCiAgZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NjQsNiArMTQ2OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1MDcsNiArMTUxMSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQogICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQpAQCAtNzY3Miw3ICs3NzM2LDcgQEAKICAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICiAgICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCiAgCi1AQCAtNTY1OCw4ICs1NjY0LDggQEAgZXNhYworQEAgLTU5NTksOCArNTk2NSw4IEBAIGVzYWMKICAKICAKICAKQEAgLTc2ODMsNyArNzc0Nyw3IEBACiAgCiAgCiAgCi1AQCAtNTY5OSw3ICs1NzA1LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC02MDAwLDcgKzYwMDYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC03NjkyLDcgKzc3NTYsNyBAQAogICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCiAgICBFQ0hPPSdwcmludCAtciAtLScKICBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTYzODUsOCArNjM5MSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CitAQCAtNjY4Niw4ICs2NjkyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdQogICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiAgeHNpX3NoZWxsPW5vCiAgKCBfbHRfZHVtbXk9ImEvYi9jIgpAQCAtNzcwMywxMyArNzc2NywxMyBAQAogICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjQzNSw2ICs2NDQxLDgwIEBAIGVzYWMKK0BAIC02NzM2LDYgKzY3NDIsODAgQEAgZXNhYwogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhc2UgJGhvc3QgaW4KQEAgLTc3NTYsNyArNzgyMCw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC03NzgzLDggKzc4NDcsOCBAQAogKwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY0NTEsNiArNjUzMSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY3NTIsNiArNjgzMiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgogIGVzYWMKICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtNzc5Niw3ICs3ODYwLDcgQEAKICAgIGRhcndpbiopCiAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY2MTksNyArNjcwNCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorQEAgLTY5MjAsNyArNzAwNSw4IEBAIG1pbmd3KiB8IHB3MzIqKQogICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgIGVsc2UKQEAgLTc4MDYsNyArNzg3MCw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTY3NzMsNiArNjg1OSwyMSBAQCBlc2FjCitAQCAtNzA3NCw2ICs3MTYwLDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtNzgyOCw3ICs3ODkyLDcgQEAKICBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKICBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKICB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02Nzg4LDkgKzY4ODksMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTcwODksOSArNzE5MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtNzg0Nyw3ICs3OTExLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtNzg1OSw3ICs3OTIzLDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTc4ODcsNyArNzk1MSw3IEBACiArc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCkBAIC03ODk5LDcgKzc5NjMsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTc5NDcsNyArODAxMSw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwpAQCAtNzk5MiwxNyArODA1NiwxNyBAQAogK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY4MDYsNyArNzA2MCw3IEBAIGRvCisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC03MTA3LDcgKzczNjEsNyBAQCBkbwogICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiAtICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCiArICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02ODI2LDExICs3MDgwLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CitAQCAtNzEyNywxMSArNzM4MSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQogIGZpCiAgCiAgCkBAIC04MDIwLDE3ICs4MDg0LDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjg0Niw3ICs3MTA0LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTcxNDcsNyArNzQwNSw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02ODY1LDYgKzcxMjMsMTAgQEAgZWxzZQorQEAgLTcxNjYsNiArNzQyNCwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtODA0MSw3ICs4MTA1LDcgQEAKICAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgogICAgICBBUj0iZmFsc2UiCiAgICBlbHNlCi1AQCAtNjg3NiwxMiArNzEzOCwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKK0BAIC03MTc3LDEyICs3NDM5LDExIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwogIGVzYWMKICAgICAgQVI9JGFjX2N0X0FSCiAgICBmaQpAQCAtODA1NCwxNyArODExOCwxNiBAQAogKzogJHtBUj1hcn0KICs6ICR7QVJfRkxBR1M9Y3J1fQogKwotKwogIAogIAogIAotQEAgLTY4OTEsNiArNzE1Myw2MiBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorQEAgLTcxOTMsNiArNzQ1NCw2MyBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQogIAogIAogIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9hcl9hdF9maWxlPW5vCkBAIC04MTE4LDEwICs4MTgxLDExIEBACiArCiArCiArCi0gCisrCiAgCiAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotQEAgLTcyMjcsOCArNzU0NSw4IEBAIGVzYWMKKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitAQCAtNzUyOCw4ICs3ODQ2LDggQEAgZXNhYwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAgCiAgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCkBAIC04MTMyLDcgKzgxOTYsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC03MjY0LDYgKzc1ODIsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNzU2NSw2ICs3ODgzLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTgxNDAsNyArODIwNCw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC03MzA1LDYgKzc2MjQsMTggQEAgX0xUX0VPRgorQEAgLTc2MDYsNiArNzkyNSwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTgxNTksNyArODIyMyw3IEBACiAgI2lmZGVmIF9fY3BsdXNwbHVzCiAgZXh0ZXJuICJDIiB7CiAgI2VuZGlmCi1AQCAtNzMxNiw3ICs3NjQ3LDcgQEAgX0xUX0VPRgorQEAgLTc2MTcsNyArNzk0OCw3IEBAIF9MVF9FT0YKICAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAKICAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC04MTY4LDcgKzgyMzIsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTczNDIsOCArNzY3Myw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNzY0Myw4ICs3OTc0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC04MTc5LDcgKzgyNDMsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTczNTMsOCArNzY4NCw4IEBAIF9MVF9FT0YKK0BAIC03NjU0LDggKzc5ODUsOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTgxOTAsNyArODI1NCw3IEBACiAgCWVsc2UKICAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKICAJZmkKLUBAIC03MzkxLDYgKzc3MjIsMTkgQEAgZWxzZQorQEAgLTc2OTIsNiArODAyMywxMyBAQCBlbHNlCiAgJGFzX2VjaG8gIm9rIiA+JjY7IH0KICBmaQogIApAQCAtODIwMSwxNiArODI2NSwxMCBAQAogKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCiArZmkKICsKLSsKLSsKLSsKLSsKLSsKLSsKICAKICAKICAKLUBAIC03NDA0LDYgKzc3NDgsNDIgQEAgZmkKK0BAIC03NzEzLDYgKzgwNTEsNDggQEAgZmkKICAKICAKICAKQEAgLTgyMTgsNiArODI3Niw3IEBACiArCiArCiArCisrCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KICsKQEAgLTgyNDQsMTYgKzgzMDMsMjEgQEAKICsgKikKICsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQogKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CiArICAgOzsKICtlc2FjCiArCiArIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CiArJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03NjE4LDYgKzc5OTgsMTIzIEBAIGVzYWMKKysKKysKKysKKysKKysKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOworQEAgLTc5MTksNiArODI5OSwxMjMgQEAgZXNhYwogIAogIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgogIApAQCAtODI2Miw3ICs4MzI2LDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTgyNzQsNyArODMzOCw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtODMwMiw3ICs4MzY2LDcgQEAKICtzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC04MzE0LDcgKzgzNzgsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC04MzUyLDcgKzg0MTYsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtODM3Nyw3ICs4NDQxLDcgQEAKICAKICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC04MTgxLDYgKzg2NzgsOCBAQCBfTFRfRU9GCitAQCAtODQ4Miw2ICs4OTc5LDggQEAgX0xUX0VPRgogICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQogICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKICAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CkBAIC04Mzg2LDcgKzg0NTAsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTgyNDksNiArODc0OCwxNiBAQCBkb25lCitAQCAtODU1MCw2ICs5MDQ5LDE2IEBAIGRvbmUKICAKICAKICAKQEAgLTg0MDMsNyArODQ2Nyw3IEBACiAgCiAgCiAgIyBTZXQgb3B0aW9ucwotQEAgLTgzNzcsNyArODg4Niw4IEBAIGZpCitAQCAtODY3OCw3ICs5MTg3LDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTg0MTMsNyArODQ3Nyw3IEBACiAgCiAgCiAgCi1AQCAtODQ2Niw3ICs4OTc2LDcgQEAgYWl4MyopCitAQCAtODc2Nyw3ICs5Mjc3LDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTg0MjIsNyArODQ4Niw3IEBACiAgY2FuX2J1aWxkX3NoYXJlZD15ZXMKICAKICAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04NzY0LDggKzkyNzQsNiBAQCBmaQorQEAgLTkwNjUsOCArOTU3NSw2IEBAIGZpCiAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CiAgCkBAIC04NDMxLDcgKzg0OTUsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04OTMxLDYgKzk0MzksMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC05MjMyLDYgKzk3NDAsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTg0NDQsNyArODUwOCw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04OTkzLDcgKzk1MDcsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTkyOTQsNyArOTgwOCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC04NDUzLDcgKzg1MTcsNyBAQAogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICAqKQogIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtOTA1MCwxMyArOTU2NCwxNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtOTM1MSwxMyArOTg2NSwxNyBAQCBjYXNlICRob3N0X29zIGluCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtODQ2Niw3ICs4NTMwLDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTg0NzcsNyArODU0MSw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC05MTE3LDYgKzk2MzUsMTEgQEAgZmkKK0BAIC05NDE4LDYgKzk5MzYsMTEgQEAgZmkKICAKICAKICAKQEAgLTg0ODksNyArODU1Myw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtOTQ2Nyw3ICs5OTkwLDggQEAgX0xUX0VPRgorQEAgLTk3NjgsNyArMTAyOTEsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtODQ5OSw3ICs4NTYzLDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk1NjYsMTIgKzEwMDkwLDEyIEBAIF9MVF9FT0YKK0BAIC05ODY3LDEyICsxMDM5MSwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTg1MTQsNyArODU3OCw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTU4NSw4ICsxMDEwOSw4IEBAIF9MVF9FT0YKK0BAIC05ODg2LDggKzEwNDEwLDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTg1MjUsNyArODU4OSw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTk2MDQsOCArMTAxMjgsOCBAQCBfTFRfRU9GCitAQCAtOTkwNSw4ICsxMDQyOSw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC04NTM2LDcgKzg2MDAsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05NjUxLDggKzEwMTc1LDggQEAgX0xUX0VPRgorQEAgLTk5NTIsOCArMTA0NzYsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtODU0Nyw3ICs4NjExLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTc4Miw3ICsxMDMwNiwxMyBAQCBfTFRfRU9GCitAQCAtMTAwODMsNyArMTA2MDcsMTMgQEAgX0xUX0VPRgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC04NTU1LDE0ICs4NjE5LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTc5NSwyMiArMTAzMjUsMjkgQEAgbWFpbiAoKQorQEAgLTEwMDk2LDIyICsxMDYyNiwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtODYwNSw3ICs4NjY5LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk4MjIsNyArMTAzNTksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTAxMjMsNyArMTA2NjAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTg2MTMsMTQgKzg2NzcsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05ODM1LDIyICsxMDM3OCwyOSBAQCBtYWluICgpCitAQCAtMTAxMzYsMjIgKzEwNjc5LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC04NjYzLDExICs4NzI3LDEwIEBACiAgCiAgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTg5NCwyMSArMTA0NDQsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKK0BAIC0xMDE5NiwyMCArMTA3NDYsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KIC0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwogLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAtICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KQEAgLTg2ODIsNyArODc0NSw2IEBACiAtICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwogLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwogLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KICsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogKyAgICAgIGNsKikKICsJIyBOYXRpdmUgTVNWQwpAQCAtODc0Myw3ICs4ODA1LDcgQEAKICAgICAgICA7OwogIAogICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk5NjksNyArMTA1NjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMDI3MCw3ICsxMDg2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCkBAIC04NzUyLDcgKzg4MTQsNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk5NzcsNyArMTA1NzAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMDI3OCw3ICsxMDg3MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC04NzYxLDcgKzg4MjMsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgICBmaQotQEAgLTk5OTMsNyArMTA1ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMDI5NCw3ICsxMDg4Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDEwKikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTg3NzAsNyArODgzMiw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICAgZmkKLUBAIC0xMDAxNywxMCArMTA2MTAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTAzMTgsMTAgKzEwOTExLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtODc4Myw3ICs4ODQ1LDcgQEAKICAJICA7OwogIAllc2FjCiAgICAgICAgZWxzZQotQEAgLTEwMDk5LDIzICsxMDY5MiwzNiBAQCBmaQorQEAgLTEwNDAwLDIzICsxMDk5MywzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC04Nzk4LDcgKzg4NjAsNyBAQAogKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgogKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKQEAgLTg4MjgsNyArODg5MCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDIwMCw3ICsxMDgwNiw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTEwNTAxLDcgKzExMTA3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC04ODM3LDcgKzg4OTksNyBAQAogIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICAgZWxzZQogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDIxOSw5ICsxMDgyNSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTEwNTIwLDkgKzExMTI2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAl3bGFyYz0nJHt3bH0nCkBAIC04ODQ5LDcgKzg5MTEsNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNzk3LDggKzExNDAzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTExMDk4LDggKzExNzA0LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTg4NjEsNyArODkyMyw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA4MzEsMTMgKzExNDM4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMTEzMiwxMyArMTE3MzksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC04OTM0LDcgKzg5OTYsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTA5MjksNyArMTE1OTQsNyBAQCBoYWlrdSopCitAQCAtMTEyMzAsNyArMTE4OTUsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTg5NDMsNyArOTAwNSwxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMTc2OSwxMCArMTI0MzQsMTAgQEAgZWxzZQorQEAgLTEyMDI2LDcgKzEyNjkxLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTIwMjkgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEyMDcwLDEwICsxMjczNSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTg5NTYsNyArOTAyNywxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE4NzUsMTAgKzEyNTQwLDEwIEBAIGVsc2UKK0BAIC0xMjEzMiw3ICsxMjc5Nyw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDEyMTM1ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMjE3NiwxMCArMTI4NDEsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC04OTY5LDcgKzkwNDksNyBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIyNzAsNiArMTI5MzUsNyBAQCAkUk0gLXIgY29uZnRlc3QqCitAQCAtMTI1NzEsNiArMTMyMzYsNyBAQCAkUk0gLXIgY29uZnRlc3QqCiAgCiAgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgogICAgbHRfc2F2ZV9DQz0kQ0MKQEAgLTg5NzcsNyArOTA1Nyw3IEBACiAgICBsdF9zYXZlX0xEPSRMRAogICAgbHRfc2F2ZV9HQ0M9JEdDQwogICAgR0NDPSRHWFgKLUBAIC0xMjI4Nyw2ICsxMjk1Myw3IEBAICRSTSAtciBjb25mdGVzdCoKK0BAIC0xMjU4OCw2ICsxMzI1NCw3IEBAICRSTSAtciBjb25mdGVzdCoKICAgIGZpCiAgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAogICAgQ0M9JHtDWFgtImMrKyJ9CkBAIC04OTg1LDcgKzkwNjUsNyBAQAogICAgY29tcGlsZXI9JENDCiAgICBjb21waWxlcl9DWFg9JENDCiAgICBmb3IgY2NfdGVtcCBpbiAkY29tcGlsZXIiIjsgZG8KLUBAIC0xMjU2OSw3ICsxMzIzNiwxMyBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZQorQEAgLTEyODcwLDcgKzEzNTM3LDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWwKICAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCiAgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICAjIGV4ZWN1dGFibGUuCkBAIC04OTkzLDE0ICs5MDczLDE0IEBACiArICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwogIAogIGludAotQEAgLTEyNTgyLDIyICsxMzI1NSwyOSBAQCBtYWluICgpCitAQCAtMTI4ODMsMjIgKzEzNTU2LDI5IEBAIG1haW4gKCkKICBfQUNFT0YKICBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTkwNDMsNyArOTEyMyw3IEBACiAgCiAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogIAotQEAgLTEyNjEwLDcgKzEzMjkwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEyOTExLDcgKzEzNTkxLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAgICAgICAgICAgZWxzZQogIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC05MDUxLDE0ICs5MTMxLDE0IEBACiArCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC0xMjYyMywyMiArMTMzMDksMjkgQEAgbWFpbiAoKQorQEAgLTEyOTI0LDIyICsxMzYxMCwyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgCkBAIC05MTAxLDcgKzkxODEsNyBAQAogIAogIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEyNjgxLDI5ICsxMzM3NCw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMjk4MiwyOSArMTM2NzUsNzUgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICAgOzsKICAKICAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCkBAIC05MjAwLDcgKzkyODAsNyBAQAogICAgICAgIGRhcndpbiogfCByaGFwc29keSopCiAgCiAgCi1AQCAtMTI4MDksNyArMTM1NDgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzExMCw3ICsxMzg0OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAgICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC05MjA5LDcgKzkyODksNyBAQAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwotQEAgLTEyODgwLDEwICsxMzYxOSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzE4MSwxMCArMTM5MjAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgICAgICAgICAgIDs7CiAgCSAgICAgICAgICBpYTY0KikKQEAgLTkyMjIsNyArOTMwMiw3IEBACiAgCSAgICAgICAgICAgIDs7CiAgCSAgICAgICAgZXNhYwogIAkgICAgICBmaQotQEAgLTEyOTI0LDkgKzEzNjYzLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtMTMyMjUsOSArMTM5NjQsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgICAgICAgICAgICopCiAgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTkyMzQsNyArOTMxNCw3IEBACiAgCSAgICAgIGZpCiAgCSAgICBmaQogIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi1AQCAtMTI5OTYsMjAgKzEzNzM1LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzMjk3LDIwICsxNDAzNiwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAgCQlybSAtcmYgJHRwbGRpcn4KICAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KQEAgLTkyNTksNyArOTMzOSw3IEBACiAgCSAgICAgIDs7CiAgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwogIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC0xMzIwNCw3ICsxMzk0Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzNTA1LDcgKzE0MjQ0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAkJICA7OwogIAkgICAgICAgICopCkBAIC05MjY4LDcgKzkzNDgsNyBAQAogIAkJICA7OwogIAkgICAgICBlc2FjCiAgCi1AQCAtMTMyNTAsNyArMTM5ODksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC0xMzU1MSw3ICsxNDI5MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgICBzb2xhcmlzKikKICAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05Mjc3LDcgKzkzNTcsNyBAQAogIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKICAJICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKLUBAIC0xMzI5MSw5ICsxNDAzMCw5IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTEzNTkyLDkgKzE0MzMxLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAgCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LXogJHt3bH1kZWZzJwogIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtOTI4OSw3ICs5MzY5LDcgQEAKICAKICAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtMTM0MjgsNiArMTQxNjcsMTMgQEAgcHJpdmF0ZToKK0BAIC0xMzcyOSw2ICsxNDQ2OCwxMyBAQCBwcml2YXRlOgogIH07CiAgX0xUX0VPRgogIApAQCAtOTMwMyw3ICs5MzgzLDcgQEAKICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgICBhY19zdGF0dXM9JD8KLUBAIC0xMzQ0MSw3ICsxNDE4Nyw3IEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorQEAgLTEzNzQyLDcgKzE0NDg4LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbgogICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwogIAogICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwpAQCAtOTMxMiw3ICs5MzkyLDcgQEAKICAKICAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTEzNDUwLDEzICsxNDE5NiwyMiBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKK0BAIC0xMzc1MSwxMyArMTQ0OTcsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbgogICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgogIAkgcHJldj0kcAogIAkgY29udGludWUKQEAgLTkzMzksNyArOTQxOSw3IEBACiAgCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKICAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi1AQCAtMTM0NzYsOCArMTQyMzEsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CitAQCAtMTM3NzcsOCArMTQ1MzIsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbgogIAkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKICAJIGZpCiAgICAgICAgIGZpCkBAIC05MzUwLDcgKzk0MzAsNyBAQAogICAgICAqLiRvYmpleHQpCiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAogICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLUBAIC0xMzUxMyw2ICsxNDI3MCw3IEBAIGVsc2UKK0BAIC0xMzgxNCw2ICsxNDU3MSw3IEBAIGVsc2UKICBmaQogIAogICRSTSAtZiBjb25mZXN0LiRvYmpleHQKQEAgLTkzNTgsNyArOTQzOCw3IEBACiAgCiAgIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KICBjYXNlICRob3N0X29zIGluCi1AQCAtMTM1NDgsNyArMTQzMDYsNyBAQCBsaW51eCopCitAQCAtMTM4NDksNyArMTQ2MDcsNyBAQCBsaW51eCopCiAgCiAgc29sYXJpcyopCiAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtOTM2Nyw3ICs5NDQ3LDcgQEAKICAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCiAgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwogICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtMTM2MTMsOCArMTQzNzEsNiBAQCBmaQorQEAgLTEzOTE0LDggKzE0NjcyLDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9CiAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQogIApAQCAtOTM3Niw3ICs5NDU2LDcgQEAKICAKICAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMTM3MTksNiArMTQ0NzUsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC0xNDAyMCw2ICsxNDc3NiwxMSBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCSAgOzsKICAJZXNhYwogIAk7OwpAQCAtOTM4OCw3ICs5NDY4LDcgQEAKICAgICAgICBkZ3V4KikKICAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAJICBlYysrKikKLUBAIC0xMzg3MSw3ICsxNDYzMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtMTQxNzIsNyArMTQ5MzMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvCiAgCTs7CiAgICAgICAgc29sYXJpcyopCiAgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05Mzk3LDcgKzk0NzcsNyBAQAogIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKICAJICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLUJzdGF0aWMnCi1AQCAtMTM5MzYsMTAgKzE0Njk3LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC0xNDIzNywxMCArMTQ5OTgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCiAgICAgIDs7CiAgZXNhYwpAQCAtOTQwNyw3ICs5NDg3LDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCkBAIC05NDE4LDcgKzk0OTgsNyBAQAogIAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtMTM5OTcsNiArMTQ3NjUsOCBAQCBmaQorQEAgLTE0Mjk4LDYgKzE1MDY2LDggQEAgZmkKICAKICAKICAKQEAgLTk0MjcsNyArOTUwNyw3IEBACiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICAjCi1AQCAtMTQxNzQsNiArMTQ5NDQsNyBAQCBmaQorQEAgLTE0NDc1LDYgKzE1MjQ1LDcgQEAgZmkKICAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KICAKICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCkBAIC05NDM1LDcgKzk1MTUsNyBAQAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgYWl4WzQtOV0qKQogICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC0xNDE4OCwxNSArMTQ5NTksMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKK0BAIC0xNDQ4OSwxNSArMTUyNjAsMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbAogICAgICA7OwogICAgcHczMiopCiAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKQEAgLTk0NjEsNyArOTU0MSw3IEBACiAgCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKICAkYXNfZWNobyAiJGxkX3NobGlic19DWFgiID4mNjsgfQotQEAgLTE0NDU5LDggKzE1MjM1LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTE0NzYwLDggKzE1NTM2LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgbmVlZF92ZXJzaW9uPW5vCiAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAKQEAgLTk0NzMsNyArOTU1Myw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTQ0OTIsMTMgKzE1MjY5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xNDc5MywxMyArMTU1NzAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC05NTQ2LDcgKzk2MjYsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtMTQ1ODksNyArMTU0MjQsNyBAQCBoYWlrdSopCitAQCAtMTQ4OTAsNyArMTU3MjUsNyBAQCBoYWlrdSopCiAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKQEAgLTk1NTUsNyArOTYzNSw3IEBACiAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgICA7OwogIAotQEAgLTE1MDQ4LDYgKzE1ODgzLDcgQEAgZmkKK0BAIC0xNTM0OSw2ICsxNjE4NCw3IEBAIGZpCiAgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKICAKICAgIENDPSRsdF9zYXZlX0NDCkBAIC05NTYzLDcgKzk2NDMsNyBAQAogICAgTERDWFg9JExECiAgICBMRD0kbHRfc2F2ZV9MRAogICAgR0NDPSRsdF9zYXZlX0dDQwotQEAgLTE4MDgzLDEzICsxODkxOSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg0NDQsMTMgKzE5MjgwLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV8KICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk1ODQsNyArOTY2NCw3IEBACiAgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODEwNCwxNCArMTg5NDcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKK0BAIC0xODQ2NSwxNCArMTkzMDgsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTk2MDMsNyArOTY4Myw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgxNDQsMTIgKzE4OTkwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTg1MDUsMTIgKzE5MzUxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC05NjE3LDcgKzk2OTcsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgxODgsOCArMTkwMzQsOCBAQCBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nYCRFQ0hPICIkb2xkX2FyY2hpdmVfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZQorQEAgLTE4NTQ5LDggKzE5Mzk1LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaQogIGNvbXBpbGVyX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBHQ0NfQ1hYPSdgJEVDSE8gIiRHQ0NfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC05NjI3LDcgKzk3MDcsNyBAQAogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MjE2LDEyICsxOTA2MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XworQEAgLTE4NTc3LDEyICsxOTQyMywxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyCiAgaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtOTY0MSw3ICs5NzIxLDcgQEAKICBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgyNTksOCArMTkxMDUsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTE4NjIwLDggKzE5NDY2LDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtOTY1NSw3ICs5NzM1LDcgQEAKICBTVFJJUCBcCiAgUkFOTElCIFwKICBDQyBcCi1AQCAtMTgyNzAsMTIgKzE5MTIxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorQEAgLTE4NjMxLDEyICsxOTQ4MiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXApAQCAtOTY3MSw3ICs5NzUxLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xODI5MSw3ICsxOTE0NCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xODY1Miw3ICsxOTUwNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTk2NzksNyArOTc1OSw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xODMxMyw4ICsxOTE2NSw4IEBAIExEX0NYWCBcCitAQCAtMTg2NzQsOCArMTk1MjYsOCBAQCBMRF9DWFggXAogIHJlbG9hZF9mbGFnX0NYWCBcCiAgY29tcGlsZXJfQ1hYIFwKICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFggXApAQCAtOTY4OSw3ICs5NzY5LDcgQEAKICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFggXAogIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCBcCiAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWCBcCi1AQCAtMTgzMjYsNyArMTkxNzgsNiBAQCBub191bmRlZmluZWRfZmxhZ19DWFggXAorQEAgLTE4Njg3LDcgKzE5NTM5LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAogIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKQEAgLTk2OTcsNyArOTc3Nyw3IEBACiAgZXhjbHVkZV9leHBzeW1zX0NYWCBcCiAgaW5jbHVkZV9leHBzeW1zX0NYWCBcCiAgZmlsZV9saXN0X3NwZWNfQ1hYIFwKLUBAIC0xODM2MCw2ICsxOTIxMSw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xODcyMSw2ICsxOTU3Miw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC05NzA1LDcgKzk3ODUsNyBAQAogIHBvc3RpbnN0YWxsX2NtZHMgXAogIHBvc3R1bmluc3RhbGxfY21kcyBcCiAgZmluaXNoX2NtZHMgXAotQEAgLTE4Mzc0LDcgKzE5MjI2LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAorQEAgLTE4NzM1LDcgKzE5NTg3LDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAogIG1vZHVsZV9jbWRzX0NYWCBcCiAgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCiAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXApAQCAtOTcxNSw3ICs5Nzk1LDcgQEAKICAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCiAgICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKLUBAIC0xOTE2Nyw3ICsyMDAyMCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xOTUzOSw3ICsyMDM5Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTk3MjUsNyArOTgwNSw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE5MjcwLDE5ICsyMDEyNCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xOTY0MiwxOSArMjA0OTYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtOTc2OSw3ICs5ODQ5LDcgQEAKICAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogIFNUUklQPSRsdF9TVFJJUAogIAotQEAgLTE5MzEyLDYgKzIwMTg5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCitAQCAtMTk2ODQsNiArMjA1NjEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfYwogICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCiAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAgCkBAIC05NzgyLDcgKzk4NjIsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTkzMjEsNiArMjAyMDQsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE5NjkzLDYgKzIwNTc2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTk3OTIsNyArOTg3Miw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTE5NDM1LDEyICsyMDMyMSwxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTk4MDcsMTIgKzIwNjkzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtOTgwOCw3ICs5ODg4LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKICAKLUBAIC0xOTUyNyw5ICsyMDQxMyw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKK0BAIC0xOTg5OSw5ICsyMDc4NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCiAgCkBAIC05ODE4LDcgKzk4OTgsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTk1NDUsNiArMjA0MjgsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE5OTE3LDYgKzIwODAwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC05ODI4LDcgKzk5MDgsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTE5NTkxLDIxMCArMjA0NzcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTE5OTYzLDIxMCArMjA4NDksMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0xMDAzMCwxNSArMTAxMTAsOSBAQAogLV9MVF9FT0YKIC0gICAgOzsKIC0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCisgCiArICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCiArICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAogK2Z1bmNfZGlybmFtZSAoKVwKQEAgLTEwMTk2LDEzICsxMDI3MCwxNiBAQAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKICskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQogK2ZpCi0rCi0rCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLUBAIC0xOTgyMiwxMiArMjA2NjcsMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKK0BAIC0yMDE5NCwxMiArMjEwMzksMTIgQEAgd2l0aF9nY2M9JEdDQ19DWFgKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgKICAKQEAgLTEwMjE4LDcgKzEwMjk1LDcgQEAKICAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCiAgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYCiAgCi1AQCAtMTk5MTQsOSArMjA3NTksNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoX0NYWAorQEAgLTIwMjg2LDkgKzIxMTMxLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKICAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KICBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAogIApAQCAtMTAyMjgsNyArMTAzMDUsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAogIAotQEAgLTE5OTMyLDYgKzIwNzc0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCitAQCAtMjAzMDQsNiArMjExNDYsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltc19DWFgKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzX0NYWAogIApAQCAtMTAyMzgsMTAgKzEwMzE1LDEwIEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAogIAotZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00Ci1pbmRleCAyNGQxM2YzNDQwLi5lNDVmZGM2OTk4IDEwMDY0NAotLS0tIGEvbGlidG9vbC5tNAotKysrIGIvbGlidG9vbC5tNAorSW5kZXg6IGdpdC9saWJ0b29sLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbGlidG9vbC5tNAorKysrIGdpdC9saWJ0b29sLm00CiBAQCAtMSw3ICsxLDggQEAKICAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQogICMKQEAgLTEwMjgxLDcgKzEwMzU4LDcgQEAKICBBQ19TVUJTVChMSUJUT09MKWRubAogIAogIF9MVF9TRVRVUAotQEAgLTE2NiwxMCArMTY5LDEzIEBAIF9MVF9ERUNMKFtdLCBbZXhlZXh0XSwgWzBdLCBbRXhlY3V0YWJsZSBmaWxlIHN1ZmZpeCAobm9ybWFsbHkgIiIpXSlkbmwKK0BAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUKICBkbmwKICBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKICBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubApAQCAtMTAzMDQsNyArMTAzODEsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNjMyLDcgKzYzOCw3IEBAIG00X2lmc2V0KFtBQ19QQUNLQUdFX05BTUVdLCBbQUNfUEFDS0FHRV9OQU1FIF0pY29uZmlnLmx0W11kbmwKK0BAIC02MzIsNyArNjM4LDcgQEAgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFXwogIG00X2lmc2V0KFtBQ19QQUNLQUdFX1ZFUlNJT05dLCBbIEFDX1BBQ0tBR0VfVkVSU0lPTl0pCiAgY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCiAgCkBAIC0xMDM2MCw3ICsxMDQzNyw3IEBACiArIyBBbGxvdyB0byBvdmVycmlkZSB0aGVtIGZvciBhbGwgdGFncyB0aHJvdWdoIGx0X2N2X2FpeF9saWJwYXRoLgogIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCiAgW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi0tQUNfTElOS19JRkVMU0UoQUNfTEFOR19QUk9HUkFNLFsKKy1BQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW0FDX0xBTkdfUFJPR1JBTV0pXSxbCiAtbHRfYWl4X2xpYnBhdGhfc2VkPScKIC0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewogLQkvXjAvIHsKQEAgLTEwNDA5LDcgKzEwNDg2LDcgQEAKICAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgogICAgRUNITz0ncHJpbnQgLXIgLS0nCiAgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQorQEAgLTExNjEsNiArMTE3NywzOSBAQCBfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyCiAgXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAgCiAgCkBAIC0xMDY2Miw3ICsxMDczOSw3IEBACiAgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiAgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTMxNzQsNyArMzMzNiwxMSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpCiAgX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKICAgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKICBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLApAQCAtMTA3OTAsNyArMTA4NjcsNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTM1MTAsMTUgKzM3NTAsMTUgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC0zNTEwLDE1ICszNzUwLDE1IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKQogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtMTA4MjQsNyArMTA5MDEsNyBAQAogIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKICAgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQogIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAotQEAgLTM1NjEsNiArMzgwOCw4IEBAIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKK0BAIC0zNTYxLDYgKzM4MDgsOCBAQCBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzCiAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCiAgICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQpAQCAtMTA5MDksNyArMTA5ODYsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTQyMTMsNiArNDQ3Nyw3IEBAIF9MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfc3RhdGljXSwgWzFdLAorQEAgLTQyMTMsNiArNDQ3Nyw3IEBAIF9MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2cKICBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAogIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKICBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKQEAgLTExMTU2LDcgKzExMjMzLDcgQEAKICAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KIC0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCiAtICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAorLSAgICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtpbnQgZm9vKHZvaWQpIHt9XSldLAogLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogLSAgICAgICAgKQogLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKQEAgLTExMjMxLDcgKzExMzA4LDcgQEAKICBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgogICAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKICAgICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCi1AQCAtNTQ4Nyw2ICs1ODE4LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsKICAKICAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgICBsdF9zYXZlX0NDPSRDQwpAQCAtMTEyMzksNyArMTEzMTYsNyBAQAogICAgbHRfc2F2ZV9MRD0kTEQKICAgIGx0X3NhdmVfR0NDPSRHQ0MKICAgIEdDQz0kR1hYCi1AQCAtNTUwNCw2ICs1ODM2LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsKICAgIGZpCiAgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAogICAgQ0M9JHtDWFgtImMrKyJ9CkBAIC0xMTI0Nyw3ICsxMTMyNCw3IEBACiAgICBjb21waWxlcj0kQ0MKICAgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKICAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC01NjY3LDcgKzYwMDAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogICAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CiAgICAgICAgICAgICMgZXhlY3V0YWJsZS4KQEAgLTExMjU2LDcgKzExMzMzLDcgQEAKICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCiAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTU2NzksNyArNjAxMiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgICAgICAgICAgIGVsc2UKICAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMTEyNjUsNyArMTEzNDIsNyBAQAogIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01NzIxLDI5ICs2MDU0LDc1IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogICAgICAgICAgOzsKICAKICAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCkBAIC0xMTM2NCw3ICsxMTQ0MSw3IEBACiAgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQogIAk7OwotQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCitAQCAtNTgxOCw3ICs2MTk3LDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7CiAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtMTEzNzMsNyArMTE0NTAsNyBAQAogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01ODg5LDEwICs2MjY4LDEwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAgCSAgICAgICAgICAgIDs7CiAgCSAgICAgICAgICBpYTY0KikKQEAgLTExMzg2LDcgKzExNDYzLDcgQEAKICAJICAgICAgICAgICAgOzsKICAJICAgICAgICBlc2FjCiAgCSAgICAgIGZpCi1AQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC01OTMzLDkgKzYzMTIsOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsKICAgICAgICAgICAgKikKICAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCiAgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMTEzOTgsNyArMTE0NzUsNyBAQAogIAkgICAgICBmaQogIAkgICAgZmkKICAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK0BAIC02MDA1LDIwICs2Mzg0LDIwIEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgogIAkJcm0gLXJmICR0cGxkaXJ+CiAgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CkBAIC0xMTQyMyw3ICsxMTUwMCw3IEBACiAgCSAgICAgIDs7CiAgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwogIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTYyMTMsNyArNjU5Miw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogIAkJICA7OwogIAkgICAgICAgICopCkBAIC0xMTQzMiw3ICsxMTUwOSw3IEBACiAgCQkgIDs7CiAgCSAgICAgIGVzYWMKICAKLUBAIC02MjU5LDcgKzY2MzgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAogICAgICAgIHNvbGFyaXMqKQogICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTExNDQxLDcgKzExNTE4LDcgQEAKICAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKICAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLUBAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTYzMDAsOSArNjY3OSw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAgCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwogIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMTE0NTMsNyArMTE1MzAsNyBAQAogIAogIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKICAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorQEAgLTY0MzEsNiArNjgxMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOwogICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAgCiAgICBDQz0kbHRfc2F2ZV9DQwpAQCAtMTE2NjEsNyArMTE3MzgsNyBAQAogIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKICAKICAKLUBAIC03MTAxLDYgKzc1MzYsMTUgQEAgX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQorQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3QKICBBQ19TVUJTVChbT0JKRFVNUF0pCiAgXSkKICAKQEAgLTExNjg4LDcgKzExNzY1LDcgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzXSlkbmwKK0BAIC03MjM0LDIwNiArNzY3OCwxNjIgQEAgX0xUX0RFQ0woW05MMlNQXSwgW2x0X05MMlNQXSwgWzFdLCBbdHVybgogIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKICAKICAKQEAgLTExNzg2LDYgKzExODYzLDMxIEBACiAtewogLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CiAtfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQogKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCiArIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICsjIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCkBAIC0xMTgwMiwyMyArMTE5MDQsMjIgQEAKICt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogK10pCiAgCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKKy1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAorLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgogIAotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCiAtewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYwogLX0KICsjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKICsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTExODQyLDQ1ICsxMTk0MywyNCBAQAogKyAgICBlc2FjCiArICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQogIAotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKICsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAogKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCiArICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KICsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KICsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KICsgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQotIAotLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCi0tZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKLS1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KKysKICsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCiArICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQogKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKLSAKLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19CisrCiArICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKICsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KICsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCi0gCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCisrCiArICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCiArICAgIGNhc2UgJHsxfSBpbgogKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CkBAIC0xMTkyOCw5ICsxMjAwOCw3IEBACiArICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCiArZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCiArICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKLSAKLS1fTFRfRU9GCi0tZXNhYworKwogKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwogKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKICsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCkBAIC0xMTk0NCwxNCArMTIwMjIsMTcgQEAKICsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiArZmkKICAKLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy1fTFRfRU9GCistZXNhYwogK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCiArICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCiArZmkKICtdKQogIAorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQogLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCiAtIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCiAtZnVuY19hcHBlbmQgKCkKQEAgLTEyMDM3LDEwICsxMjExOCwxMCBAQAogK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAogKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAogK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCitJbmRleDogZ2l0L2x0bWFpbi5zaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2x0bWFpbi5zaAorKysrIGdpdC9sdG1haW4uc2gKIEBAIC0xLDEwICsxLDkgQEAKIC0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgogIApAQCAtMTI0NzAsMzEgKzEyNTUxLDcgQEAKICskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCiArX0xUX0VPRgogKyAgICBmaQotIAotLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0tICBjYXNlICQxIGluCi0tICBjbGVhbnxjbGVhfGNsZXxjbCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBsaW5rfGxpbnxsaXxsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXNhYworKwogKyAgICBleGl0ICRFWElUX01JU01BVENICiArICBmaQogK30KQEAgLTEyNTI0LDkgKzEyNTgxLDcgQEAKICsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CiArICA7OwogK2VzYWMKLSAKLS0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbworKwogKwogKwogKyMgT3B0aW9uIGRlZmF1bHRzOgpAQCAtMTI1NDIsOCArMTI1OTcsMzQgQEAKICtvcHRfdmVyYm9zZT06CiArb3B0X3NpbGVudD1mYWxzZQogK29wdF92ZXJib3NlPWZhbHNlCi0rCi0rCisgCistICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKy0gIGNhc2UgJDEgaW4KKy0gIGNsZWFufGNsZWF8Y2xlfGNsKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGxpbmt8bGlufGxpfGwpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCistICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBlc2FjCisgCistICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKKy0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KICsjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKICsjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KICt7CkBAIC0xMjc4NywxMyArMTI4NjgsMTMgQEAKIC0gIGZpCiAtfQogLQotKyAgICAjIERhcndpbiBzdWNrcwotKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotIAorLQogLSMjIC0tLS0tLS0tLS0tICMjCiAtIyMgICAgTWFpbi4gICAgIyMKIC0jIyAtLS0tLS0tLS0tLSAjIwotLQorKyAgICAjIERhcndpbiBzdWNrcworKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorIAogLSRvcHRfaGVscCB8fCB7CiAtICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CiAtICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKQEAgLTEzNTE0LDcgKzEzNTk1LDcgQEAKICAgICAgICAiIikKICAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cwogICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgotQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgorQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb24KICAKICAgIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQogICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCkBAIC0xMzUyNSw3ICsxMzYwNiw3IEBACiAgICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwogICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCiAgICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCi1AQCAtMTgwNCw3ICsyNDcyLDcgQEAgT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHUKICAgICAgICAgIDs7CiAgCiAgICAgICAgKikKQEAgLTEzNjI3LDcgKzEzNzA4LDcgQEAKICsgICAgZG8KICsgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgogKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKLSAKKysKICsgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCiArCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCiArCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCkBAIC0xMzY0Nyw3ICsxMzcyOCw3IEBACiArICAgICAgZWxzZQogKyAgICAgICAgc3lzcm9vdF9jbWQ9CiArICAgICAgZmkKLSsKKyAKICsgICAgICAjIFJlbW92ZSBzeXNyb290IHJlZmVyZW5jZXMKICsgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KICsgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCkBAIC0xNDA1OSw3ICsxNDE0MCw3IEBACiAgbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KICB7XAogICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCi1AQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKK0BAIC0yNzM2LDcgKzM0OTMsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkKICAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCiAgCSAgY2FzZSAkYXJnIGluCiAgCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CkBAIC0xNDU4OCw3ICsxNDY2OSw3IEBACiAgKi8KICBFT0YKICAJICAgIGNhdCA8PCJFT0YiCi1AQCAtMzQ2MiwyMiArNDI3MiwxMyBAQCBpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK0BAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLAogICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKICB9IHdoaWxlICgwKQogIApAQCAtMTQ2MTUsNyArMTQ2OTYsNyBAQAogIAogIHZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOwogIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7Ci1AQCAtMzQ4Nyw3ICs0Mjg4LDEwIEBAIGNoYXIgKmNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYyk7CitAQCAtMzQ4Nyw3ICs0Mjg4LDEwIEBAIGNoYXIgKmNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3AKICBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKICBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CiAgY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7CkBAIC0xNDk0Myw3ICsxNTAyNCw3IEBACiAgICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7CiAgICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKICAKLUBAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKK0BAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2gKICB9CiAgCiAgdm9pZApAQCAtMTQ5ODEsNyArMTUwNjIsNyBAQAogICAgewogICNpZmRlZiBIQVZFX1NFVEVOVgogICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwotQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKK0BAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjCiAgdm9pZAogIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiAgewpAQCAtMTQ5OTQsNyArMTUwNzUsNyBAQAogIAogICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgICB7Ci1AQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKK0BAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvCiAgdm9pZAogIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiAgewpAQCAtMTcyNjcsMTAgKzE3MzQ4LDEwIEBACiAgCiAgaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICAgZXZhbCBleGVjICIkZXhlY19jbWQiCi1kaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00Ci1pbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAotLS0tIGEvbHRvcHRpb25zLm00Ci0rKysgYi9sdG9wdGlvbnMubTQKK0luZGV4OiBnaXQvbHRvcHRpb25zLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbHRvcHRpb25zLm00CisrKysgZ2l0L2x0b3B0aW9ucy5tNAogQEAgLTgsNyArOCw3IEBACiAgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgpAQCAtMTcyODAsMTAgKzE3MzYxLDEwIEBACiAgCiAgIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KICBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCi1kaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00Ci1pbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAotLS0tIGEvbHR2ZXJzaW9uLm00Ci0rKysgYi9sdHZlcnNpb24ubTQKK0luZGV4OiBnaXQvbHR2ZXJzaW9uLm00Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbHR2ZXJzaW9uLm00CisrKysgZ2l0L2x0dmVyc2lvbi5tNAogQEAgLTcsMTcgKzcsMTcgQEAKICAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xNzMwOCwxMCArMTczODksMTAgQEAKICBfTFRfREVDTCgsIG1hY3JvX3ZlcnNpb24sIDAsIFtXaGljaCByZWxlYXNlIG9mIGxpYnRvb2wubTQgd2FzIHVzZWQ/XSkKICBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogIF0pCi1kaWZmIC0tZ2l0IGEvbHR+b2Jzb2xldGUubTQgYi9sdH5vYnNvbGV0ZS5tNAotaW5kZXggYmY5MmI1ZTA3OS4uYzU3M2RhOTBjNSAxMDA2NDQKLS0tLSBhL2x0fm9ic29sZXRlLm00Ci0rKysgYi9sdH5vYnNvbGV0ZS5tNAorSW5kZXg6IGdpdC9sdH5vYnNvbGV0ZS5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2x0fm9ic29sZXRlLm00CisrKysgZ2l0L2x0fm9ic29sZXRlLm00CiBAQCAtNyw3ICs3LDcgQEAKICAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAogICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xNzMyMSwxMSArMTc0MDIsMTEgQEAKICAKICAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KICAjCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQotaW5kZXggNGYyOTg4NzA5OC4uMjEyN2QzOTI4OCAxMDA3NTUKLS0tLSBhL29wY29kZXMvY29uZmlndXJlCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQotQEAgLTY1MCw2ICs2NTAsOSBAQCBPVE9PTAorSW5kZXg6IGdpdC9vcGNvZGVzL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL29wY29kZXMvY29uZmlndXJlCisrKysgZ2l0L29wY29kZXMvY29uZmlndXJlCitAQCAtNjgxLDYgKzY4MSw5IEBAIE9UT09MCiAgTElQTwogIE5NRURJVAogIERTWU1VVElMCkBAIC0xNzMzNSw3ICsxNzQxNiw3IEBACiAgT0JKRFVNUAogIExOX1MKICBOTQotQEAgLTc2Myw2ICs3NjYsNyBAQCBlbmFibGVfc3RhdGljCitAQCAtNzk5LDYgKzgwMiw3IEBAIGVuYWJsZV9zdGF0aWMKICB3aXRoX3BpYwogIGVuYWJsZV9mYXN0X2luc3RhbGwKICB3aXRoX2dudV9sZApAQCAtMTczNDMsNyArMTc0MjQsNyBAQAogIGVuYWJsZV9saWJ0b29sX2xvY2sKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV93ZXJyb3IKLUBAIC0xNDIzLDYgKzE0MjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNDYzLDYgKzE0NjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTE3MzUyLDcgKzE3NDMzLDcgQEAKICAKICBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTUxMTUsOCArNTEyMSw4IEBAIGVzYWMKK0BAIC01NDA0LDggKzU0MTAsOCBAQCBlc2FjCiAgCiAgCiAgCkBAIC0xNzM2Myw3ICsxNzQ0NCw3IEBACiAgCiAgCiAgCi1AQCAtNTE1Niw3ICs1MTYyLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC01NDQ1LDcgKzU0NTEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC0xNzM3Miw3ICsxNzQ1Myw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTg0Miw4ICs1ODQ4LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC02MTMxLDggKzYxMzcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC0xNzM4MywxMyArMTc0NjQsMTMgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU4OTIsNiArNTg5OCw4MCBAQCBlc2FjCitAQCAtNjE4MSw2ICs2MTg3LDgwIEBAIGVzYWMKICAKICAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXNlICRob3N0IGluCkBAIC0xNzQzNiw3ICsxNzUxNyw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC0xNzQ2Myw4ICsxNzU0NCw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTkwOCw2ICs1OTg4LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjE5Nyw2ICs2Mjc3LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0xNzQ3Niw3ICsxNzU1Nyw3IEBACiAgICBkYXJ3aW4qKQogICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MDc2LDcgKzYxNjEsOCBAQCBtaW5ndyogfCBwdzMyKikKK0BAIC02MzY1LDcgKzY0NTAsOCBAQCBtaW5ndyogfCBwdzMyKikKICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgICBlbHNlCkBAIC0xNzQ4Niw3ICsxNzU2Nyw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTYyMzAsNiArNjMxNiwyMSBAQCBlc2FjCitAQCAtNjUxOSw2ICs2NjA1LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMTc1MDgsNyArMTc1ODksNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyNDMsMTEgKzYzNDQsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1MzQsOSArNjYzNSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtMTc1MjIsOCArMTc2MDMsNiBAQAogKwogKwogKwotIAotIAogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KIC0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiAtc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKQEAgLTE3NTMxLDcgKzE3NjEwLDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtMTc1NDMsNyArMTc2MjIsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTc1NzEsNyArMTc2NTAsNyBAQAogK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgpAQCAtMTc1ODMsNyArMTc2NjIsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTE3NjMxLDcgKzE3NzEwLDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC0xNzY3NCwxNyArMTc3NTMsMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MjYzLDcgKzY1MTcsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU1Miw3ICs2ODA2LDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgogKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNjI4MywxMSArNjUzNywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorQEAgLTY1NzIsMTEgKzY4MjYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIAogIApAQCAtMTc3MDIsMTcgKzE3NzgxLDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjMwMyw3ICs2NTYxLDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1OTIsNyArNjg1MCw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC02MzIyLDYgKzY1ODAsMTAgQEAgZWxzZQorQEAgLTY2MTEsNiArNjg2OSwxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtMTc3MjMsNyArMTc4MDIsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC02MzMzLDE2ICs2NTk1LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTY2MjIsMTIgKzY4ODQsMTEgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC0xNzczNiwxOSArMTc4MTUsMTYgQEAKICs6ICR7QVI9YXJ9CiArOiAke0FSX0ZMQUdTPWNydX0KICsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKKyAKKyAKKyAKK0BAIC02NjM4LDYgKzY4OTksNjMgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwpAQCAtMTc3NTgsNyArMTc4MzQsNyBAQAogK2ludAogK21haW4gKCkKICt7Ci0gCisrCiArICA7CiArICByZXR1cm4gMDsKICt9CkBAIC0xNzc4NCwyMyArMTc4NjAsMjkgQEAKICsgICAgICAgIGZpCiArICAgICAgZmkKICsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKKysKICtmaQogK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAorKwogK2ZpCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKICskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAorKwogK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KICtlbHNlCiArICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKICtmaQorKworKworKworKworKworKwogIAotIAotIAotQEAgLTY2ODQsOCArNzAwMiw4IEBAIGVzYWMKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorQEAgLTY5NzMsOCArNzI5MSw4IEBAIGVzYWMKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogIAogICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwpAQCAtMTc4MTEsNyArMTc4OTMsNyBAQAogIAogICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogIG9wdF9jcj0KLUBAIC02NzIxLDYgKzcwMzksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCitAQCAtNzAxMCw2ICs3MzI4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwogICAgZWxzZQogICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICAgZmkKQEAgLTE3ODE5LDcgKzE3OTAxLDcgQEAKICAKICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICAgcGlwZV93b3Jrcz1ubwotQEAgLTY3NjIsNiArNzA4MSwxOCBAQCBfTFRfRU9GCitAQCAtNzA1MSw2ICs3MzcwLDE4IEBAIF9MVF9FT0YKICAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dApAQCAtMTc4MzgsNyArMTc5MjAsNyBAQAogICNpZmRlZiBfX2NwbHVzcGx1cwogIGV4dGVybiAiQyIgewogICNlbmRpZgotQEAgLTY3NzMsNyArNzEwNCw3IEBAIF9MVF9FT0YKK0BAIC03MDYyLDcgKzczOTMsNyBAQCBfTFRfRU9GCiAgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgCiAgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtMTc4NDcsNyArMTc5MjksNyBAQAogICAgY29uc3QgY2hhciAqbmFtZTsKICAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiAgfQotQEAgLTY3OTksOCArNzEzMCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CitAQCAtNzA4OCw4ICs3NDE5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpCiAgX0xUX0VPRgogIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CkBAIC0xNzg1OCw3ICsxNzk0MCw3IEBACiAgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKICAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCiAgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjgxMCw4ICs3MTQxLDggQEAgX0xUX0VPRgorQEAgLTcwOTksOCArNzQzMCw4IEBAIF9MVF9FT0YKICAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogIAkgICAgcGlwZV93b3Jrcz15ZXMKICAJICBmaQpAQCAtMTc4NjksNyArMTc5NTEsNyBAQAogIAllbHNlCiAgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CiAgCWZpCi1AQCAtNjg0OCw2ICs3MTc5LDE2IEBAIGVsc2UKK0BAIC03MTM3LDYgKzc0NjgsMTQgQEAgZWxzZQogICRhc19lY2hvICJvayIgPiY2OyB9CiAgZmkKICAKQEAgLTE3ODgxLDEyICsxNzk2MywxMCBAQAogK2ZpCiArCiArCi0rCi0rCiAgCiAgCiAgCi1AQCAtNjg2NCw2ICs3MjA1LDQ1IEBAIGZpCitAQCAtNzE1OCw2ICs3NDk3LDQ3IEBAIGZpCiAgCiAgCiAgCkBAIC0xNzg5NCw5ICsxNzk3NCw2IEBACiArCiArCiArCi0rCi0rCi0rCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KICsKQEAgLTE3OTIzLDE2ICsxODAwMCwyMSBAQAogKyAqKQogKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CiArJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKICsgICA7OwogK2VzYWMKICsKICsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKICskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTcwNzUsNiArNzQ1NSwxMjMgQEAgZXNhYworKworKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CitAQCAtNzM2NCw2ICs3NzQ0LDEyMyBAQCBlc2FjCiAgCiAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAgCkBAIC0xNzk0MSw3ICsxODAyMyw3IEBACiArc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCkBAIC0xNzk1Myw3ICsxODAzNSw3IEBACiArICBJRlM9JGFzX3NhdmVfSUZTCiArICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KICsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTc5ODEsNyArMTgwNjMsNyBAQAogK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTE3OTkzLDcgKzE4MDc1LDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTgwMzEsNyArMTgxMTMsNyBAQAogK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwpAQCAtMTgwNTYsNyArMTgxMzgsNyBAQAogIAogICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc2MzgsNiArODEzNSw4IEBAIF9MVF9FT0YKK0BAIC03OTI3LDYgKzg0MjQsOCBAQCBfTFRfRU9GCiAgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CiAgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQogICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKQEAgLTE4MDY1LDcgKzE4MTQ3LDcgQEAKICAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKICBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQogIF9MVF9FT0YKLUBAIC03ODAzLDcgKzgzMDIsOCBAQCBmaQorQEAgLTgwOTIsNyArODU5MSw4IEBAIGZpCiAgTElCVE9PTF9ERVBTPSIkbHRtYWluIgogIAogICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCkBAIC0xODA3NSw3ICsxODE1Nyw3IEBACiAgCiAgCiAgCi1AQCAtNzg5Miw3ICs4MzkyLDcgQEAgYWl4MyopCitAQCAtODE4MSw3ICs4NjgxLDcgQEAgYWl4MyopCiAgZXNhYwogIAogICMgR2xvYmFsIHZhcmlhYmxlczoKQEAgLTE4MDg0LDcgKzE4MTY2LDcgQEAKICBjYW5fYnVpbGRfc2hhcmVkPXllcwogIAogICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgxOTAsOCArODY5MCw2IEBAIGZpCitAQCAtODQ3OSw4ICs4OTc5LDYgQEAgZmkKICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KICAKQEAgLTE4MDkzLDcgKzE4MTc1LDcgQEAKICAKICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODM1Nyw2ICs4ODU1LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtODY0Niw2ICs5MTQ0LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwogIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAgCTs7CkBAIC0xODEwNiw3ICsxODE4OCw3IEBACiAgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKICAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDE5LDcgKzg5MjMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorQEAgLTg3MDgsNyArOTIxMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW8KICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC0xODExNSw3ICsxODE5Nyw3IEBACiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgICopCiAgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NDc2LDEzICs4OTgwLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC04NzY1LDEzICs5MjY5LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKICAgICAgOzsKICBlc2FjCkBAIC0xODEyOCw3ICsxODIxMCw3IEBACiAgCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCkBAIC0xODEzOSw3ICsxODIyMSw3IEBACiAgCiAgIwogICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NTQzLDYgKzkwNTEsMTEgQEAgZmkKK0BAIC04ODMyLDYgKzkzNDAsMTEgQEAgZmkKICAKICAKICAKQEAgLTE4MTUxLDcgKzE4MjMzLDcgQEAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogICMKLUBAIC04ODkzLDcgKzk0MDYsOCBAQCBfTFRfRU9GCitAQCAtOTE4Miw3ICs5Njk1LDggQEAgX0xUX0VPRgogICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCiAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKQEAgLTE4MTYxLDcgKzE4MjQzLDcgQEAKICAKICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTg5OTIsMTIgKzk1MDYsMTIgQEAgX0xUX0VPRgorQEAgLTkyODEsMTIgKzk3OTUsMTIgQEAgX0xUX0VPRgogIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwogIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCkBAIC0xODE3Niw3ICsxODI1OCw3IEBACiAgCSAgZmkKICAJICA7OwogIAllc2FjCi1AQCAtOTAxMSw4ICs5NTI1LDggQEAgX0xUX0VPRgorQEAgLTkzMDAsOCArOTgxNCw4IEBAIF9MVF9FT0YKICAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogIAl3bGFyYz0KICAgICAgICBlbHNlCkBAIC0xODE4Nyw3ICsxODI2OSw3IEBACiAgICAgICAgZmkKICAgICAgICA7OwogIAotQEAgLTkwMzAsOCArOTU0NCw4IEBAIF9MVF9FT0YKK0BAIC05MzE5LDggKzk4MzMsOCBAQCBfTFRfRU9GCiAgCiAgX0xUX0VPRgogICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMTgxOTgsNyArMTgyODAsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC05MDc3LDggKzk1OTEsOCBAQCBfTFRfRU9GCitAQCAtOTM2Niw4ICs5ODgwLDggQEAgX0xUX0VPRgogIAogICAgICAqKQogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KQEAgLTE4MjA5LDcgKzE4MjkxLDcgQEAKICAgICAgICBlbHNlCiAgCWxkX3NobGlicz1ubwogICAgICAgIGZpCi1AQCAtOTIwOCw3ICs5NzIyLDEzIEBAIF9MVF9FT0YKK0BAIC05NDk3LDcgKzEwMDExLDEzIEBAIF9MVF9FT0YKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgpAQCAtMTgyMTcsMTQgKzE4Mjk5LDE0IEBACiArICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCiArICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKICtlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCiAgaW50Ci1AQCAtOTIyMSwyMiArOTc0MSwyOSBAQCBtYWluICgpCitAQCAtOTUxMCwyMiArMTAwMzAsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTE4MjY3LDcgKzE4MzQ5LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkyNDgsNyArOTc3NSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NTM3LDcgKzEwMDY0LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJZWxzZQogIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCkBAIC0xODI3NSwxNCArMTgzNTcsMTQgQEAKICsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KICsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICAKICBpbnQKLUBAIC05MjYxLDIyICs5Nzk0LDI5IEBAIG1haW4gKCkKK0BAIC05NTUwLDIyICsxMDA4MywyOSBAQCBtYWluICgpCiAgX0FDRU9GCiAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogIApAQCAtMTgzMjUsNyArMTg0MDcsNyBAQAogIAogIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKICAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkzMjEsMjAgKzk4NjEsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTYxMCwyMCArMTAxNTAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC0xODQwMyw3ICsxODQ4NSw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05Mzk1LDcgKzk5NzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05Njg0LDcgKzEwMjY3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKQEAgLTE4NDEyLDcgKzE4NDk0LDcgQEAKICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCiAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwogICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NDAzLDcgKzk5ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC05NjkyLDcgKzEwMjc1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4OSopCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KQEAgLTE4NDIxLDcgKzE4NTAzLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgZmkKLUBAIC05NDE5LDcgKzEwMDAyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtOTcwOCw3ICsxMDI5MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDEwKikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KQEAgLTE4NDMwLDcgKzE4NTEyLDcgQEAKICAgICAgICBlbHNlCiAgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgICBmaQotQEAgLTk0NDMsMTAgKzEwMDI2LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTk3MzIsMTAgKzEwMzE1LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtMTg0NDMsNyArMTg1MjUsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtOTUyNSwyMyArMTAxMDgsMzYgQEAgZmkKK0BAIC05ODE0LDIzICsxMDM5NywzNiBAQCBmaQogIAogICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0xODQ1OCw3ICsxODU0MCw3IEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtMTg0ODgsNyArMTg1NzAsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTYyNiw3ICsxMDIyMiw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk5MTUsNyArMTA1MTEsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKQEAgLTE4NDk3LDcgKzE4NTc5LDcgQEAKICAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgIGVsc2UKICAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTY0NSw5ICsxMDI0MSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTk5MzQsOSArMTA1MzAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqCiAgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgCXdsYXJjPScke3dsfScKQEAgLTE4NTA5LDcgKzE4NTkxLDcgQEAKICAgICAgICBlbHNlCiAgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgogIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDIyMyw4ICsxMDgxOSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDUxMiw4ICsxMTEwOCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0xODUyMSw3ICsxODYwMyw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAyNTcsMTMgKzEwODU0LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKK0BAIC0xMDU0NiwxMyArMTExNDMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgICA7OwogICAgICBlc2FjCkBAIC0xODU5NCw3ICsxODY3Niw3IEBACiAgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KICAgIHNobGlicGF0aF92YXI9UEFUSAogICAgOzsKLUBAIC0xMDM1NSw3ICsxMTAxMCw3IEBAIGhhaWt1KikKK0BAIC0xMDY0NCw3ICsxMTI5OSw3IEBAIGhhaWt1KikKICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAogICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMTg2MDMsNyArMTg2ODUsMTYgQEAKICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgIDs7CiAgCi1AQCAtMTExOTUsMTAgKzExODUwLDEwIEBAIGVsc2UKK0BAIC0xMTQ0MCw3ICsxMjA5NSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDQzICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ4NCwxMCArMTIxMzksMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xODYxNiw3ICsxODcwNywxNiBAQAogIGludCBtYWluICgpCiAgewogICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEzMDEsMTAgKzExOTU2LDEwIEBAIGVsc2UKK0BAIC0xMTU0Niw3ICsxMjIwMSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNTQ5ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTU5MCwxMCArMTIyNDUsMTAgQEAgZWxzZQogIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCiAgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCkBAIC0xODYyOSw3ICsxODcyOSw3IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjU0Myw3ICsxMzE5OCw3IEBAIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCitAQCAtMTI4MzEsNyArMTM0ODYsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgogICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgogICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKICAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgpAQCAtMTg2MzgsNyArMTg3MzgsNyBAQAogICAgZmkKICAKICAgIGNhc2UgIiR7aG9zdH0iIGluCi1AQCAtMTM1MjAsMTMgKzE0MTc1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzgwNywxMyArMTQ0NjIsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5XwogIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMTg2NTksNyArMTg3NTksNyBAQAogIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM1NDEsMTQgKzE0MjAzLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCitAQCAtMTM4MjgsMTQgKzE0NDkwLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xODY3OCw3ICsxODc3OCw3IEBACiAgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM1ODEsMTIgKzE0MjQ2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCitAQCAtMTM4NjgsMTIgKzE0NTMzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2QKICBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC0xODY5Miw3ICsxODc5Miw3IEBACiAgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzY0MSw4ICsxNDMwNiwxMyBAQCByZWxvYWRfZmxhZyBcCitAQCAtMTM5MjgsOCArMTQ1OTMsMTMgQEAgcmVsb2FkX2ZsYWcgXAogIE9CSkRVTVAgXAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKICBmaWxlX21hZ2ljX2NtZCBcCkBAIC0xODcwNiw3ICsxODgwNiw3IEBACiAgU1RSSVAgXAogIFJBTkxJQiBcCiAgQ0MgXAotQEAgLTEzNjUyLDEyICsxNDMyMiwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKK0BAIC0xMzkzOSwxMiArMTQ2MDksMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKQEAgLTE4NzIyLDcgKzE4ODIyLDcgQEAKICBEU1lNVVRJTCBcCiAgTk1FRElUIFwKICBMSVBPIFwKLUBAIC0xMzY3Myw3ICsxNDM0NSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKK0BAIC0xMzk2MCw3ICsxNDYzMiw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKQEAgLTE4NzMwLDcgKzE4ODMwLDcgQEAKICBleGNsdWRlX2V4cHN5bXMgXAogIGluY2x1ZGVfZXhwc3ltcyBcCiAgZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzNzA5LDYgKzE0MzgwLDcgQEAgbW9kdWxlX2NtZHMgXAorQEAgLTEzOTk2LDYgKzE0NjY3LDcgQEAgbW9kdWxlX2NtZHMgXAogIG1vZHVsZV9leHBzeW1fY21kcyBcCiAgZXhwb3J0X3N5bWJvbHNfY21kcyBcCiAgcHJlbGlua19jbWRzIFwKQEAgLTE4NzM4LDcgKzE4ODM4LDcgQEAKICBwb3N0aW5zdGFsbF9jbWRzIFwKICBwb3N0dW5pbnN0YWxsX2NtZHMgXAogIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDQ2NSw3ICsxNTEzNyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKK0BAIC0xNDc2MSw3ICsxNTQzMyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKICAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KICAjCiAgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKQEAgLTE4NzQ4LDcgKzE4ODQ4LDcgQEAKICAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogICMKICAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQ1NjgsMTkgKzE1MjQxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorQEAgLTE0ODY0LDE5ICsxNTUzNyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKICAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCiAgTkwyU1A9JGx0X2x0X05MMlNQCiAgCkBAIC0xODc5Miw3ICsxODg5Miw3IEBACiAgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KICBTVFJJUD0kbHRfU1RSSVAKICAKLUBAIC0xNDYxMCw2ICsxNTMwNiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworQEAgLTE0OTA2LDYgKzE1NjAyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2MKICAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogIApAQCAtMTg4MDUsNyArMTg5MDUsNyBAQAogICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogIG9iamRpcj0kb2JqZGlyCiAgCi1AQCAtMTQ2MTksNiArMTUzMjEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorQEAgLTE0OTE1LDYgKzE1NjE3LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKICAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKICAKQEAgLTE4ODE1LDcgKzE4OTE1LDcgQEAKICAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCiAgRFNZTVVUSUw9JGx0X0RTWU1VVElMCiAgCi1AQCAtMTQ3MzMsMTIgKzE1NDM4LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKK0BAIC0xNTAyOSwxMiArMTU3MzQsMTIgQEAgd2l0aF9nY2M9JEdDQwogICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KICBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCiAgCkBAIC0xODgzMSw3ICsxODkzMSw3IEBACiAgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCiAgCi1AQCAtMTQ4MjUsOSArMTU1MzAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCitAQCAtMTUxMjEsOSArMTU4MjYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCiAgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCiAgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogIApAQCAtMTg4NDEsNyArMTg5NDEsNyBAQAogICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCiAgCi1AQCAtMTQ4NDMsNiArMTU1NDUsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworQEAgLTE1MTM5LDYgKzE1ODQxLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKICAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgogIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAgCkBAIC0xODg1MSw3ICsxODk1MSw3IEBACiAgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiAgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCiAgCi1AQCAtMTQ4NzUsMjEwICsxNTU4MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitAQCAtMTUxNzEsMjEwICsxNTg3NiwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KQEAgLTE5MDUzLDE1ICsxOTE1Myw5IEBACiAtX0xUX0VPRgogLSAgICA7OwogLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAogKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKKyAKICsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KICsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCiArZnVuY19kaXJuYW1lICgpXApAQCAtMTkyMTksMTcgKzE5MzEzLDIwIEBACiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQogKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CiArZmkKLSsKLSsKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAKKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgICBjaG1vZCAreCAiJG9maWxlIgogIAotZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlLmFjIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLWluZGV4IGIwN2YzZjM2MjkuLjVhMzJkOWIxZmMgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLUBAIC0xNjcsNyArMTY3LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKK0luZGV4OiBnaXQvb3Bjb2Rlcy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9vcGNvZGVzL2NvbmZpZ3VyZS5hYworKysrIGdpdC9vcGNvZGVzL2NvbmZpZ3VyZS5hYworQEAgLTE2Niw3ICsxNjYsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAogICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKICBjaGFuZ2VxdW90ZShbLF0pZG5sCiAgICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KQEAgLTE5MjM4LDExICsxOTMzNSwxMSBAQAogICAgZmkKICAKICAgIGNhc2UgIiR7aG9zdH0iIGluCi1kaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQotaW5kZXggZGMyZDllZDM4My4uZWQ5YTQ5MmY1YyAxMDA3NTUKLS0tLSBhL3psaWIvY29uZmlndXJlCi0rKysgYi96bGliL2NvbmZpZ3VyZQotQEAgLTYxNCw4ICs2MTQsMTEgQEAgT1RPT0wKK0luZGV4OiBnaXQvemxpYi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy96bGliL2NvbmZpZ3VyZQorKysrIGdpdC96bGliL2NvbmZpZ3VyZQorQEAgLTY0Niw4ICs2NDYsMTEgQEAgT1RPT0wKICBMSVBPCiAgTk1FRElUCiAgRFNZTVVUSUwKQEAgLTE5MjU0LDcgKzE5MzUxLDcgQEAKICBPQkpEVU1QCiAgTE5fUwogIE5NCi1AQCAtNzM3LDYgKzc0MCw3IEBAIGVuYWJsZV9zdGF0aWMKK0BAIC03NzQsNiArNzc3LDcgQEAgZW5hYmxlX3N0YXRpYwogIHdpdGhfcGljCiAgZW5hYmxlX2Zhc3RfaW5zdGFsbAogIHdpdGhfZ251X2xkCkBAIC0xOTI2Miw3ICsxOTM1OSw3IEBACiAgZW5hYmxlX2xpYnRvb2xfbG9jawogIGVuYWJsZV9ob3N0X3NoYXJlZAogICcKLUBAIC0xMzg1LDYgKzEzODksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0xNDI4LDYgKzE0MzIsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KICAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KQEAgLTE5MjcxLDcgKzE5MzY4LDcgQEAKICAKICBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTM5MTAsOCArMzkxNiw4IEBAIGVzYWMKK0BAIC00MTQ3LDggKzQxNTMsOCBAQCBlc2FjCiAgCiAgCiAgCkBAIC0xOTI4Miw3ICsxOTM3OSw3IEBACiAgCiAgCiAgCi1AQCAtMzk1MSw3ICszOTU3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KK0BAIC00MTg4LDcgKzQxOTQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CiAgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCkBAIC0xOTI5MSw3ICsxOTM4OCw3IEBACiAgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KICAgIEVDSE89J3ByaW50IC1yIC0tJwogIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNDc2Nyw4ICs0NzczLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKK0BAIC01MDA0LDggKzUwMTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1CiAgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKICB4c2lfc2hlbGw9bm8KICAoIF9sdF9kdW1teT0iYS9iL2MiCkBAIC0xOTMwMiwxMyArMTkzOTksMTMgQEAKICAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTQ4MTcsNiArNDgyMyw4MCBAQCBlc2FjCitAQCAtNTA1NCw2ICs1MDYwLDgwIEBAIGVzYWMKICAKICAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBjYXNlICRob3N0IGluCkBAIC0xOTM1NSw3ICsxOTQ1Miw3IEBACiArCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCkBAIC0xOTM4Miw4ICsxOTQ3OSw4IEBACiArCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNDgzMyw2ICs0OTEzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNTA3MCw2ICs1MTUwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCiAgZXNhYwogIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICBjYXNlICRob3N0X29zIGluCkBAIC0xOTM5NSw3ICsxOTQ5Miw3IEBACiAgICBkYXJ3aW4qKQogICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01MDAxLDcgKzUwODYsOCBAQCBtaW5ndyogfCBwdzMyKikKK0BAIC01MjM4LDcgKzUzMjMsOCBAQCBtaW5ndyogfCBwdzMyKikKICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgICBlbHNlCkBAIC0xOTQwNSw3ICsxOTUwMiw3IEBACiAgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgIGZpCiAgICA7OwotQEAgLTUxNTUsNiArNTI0MSwyMSBAQCBlc2FjCitAQCAtNTM5Miw2ICs1NDc4LDIxIEBAIGVzYWMKICBmaQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQpAQCAtMTk0MjcsNyArMTk1MjQsNyBAQAogIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAogIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTUxNjgsMTEgKzUyNjksMTY1IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTU0MDcsOSArNTUwOCwxNjMgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaQogIAogIAogIApAQCAtMTk0NDEsOCArMTk1MzgsNiBAQAogKwogKwogKwotIAotIAogIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KIC0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiAtc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKQEAgLTE5NDUwLDcgKzE5NTQ1LDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgpAQCAtMTk0NjIsNyArMTk1NTcsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgogKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICsgICAgYnJlYWsgMgpAQCAtMTk0OTAsNyArMTk1ODUsNyBAQAogK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgpAQCAtMTk1MDIsNyArMTk1OTcsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKICsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiArICAgIGJyZWFrIDIKQEAgLTE5NTUwLDcgKzE5NjQ1LDcgQEAKICsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCkBAIC0xOTU5NCwxNyArMTk2ODksMTcgQEAKICtzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01MTg4LDcgKzU0NDMsNyBAQCBkbworIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNTQyNSw3ICs1NjgwLDcgQEAgZG8KICAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgogKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgIGJyZWFrIDIKICAgIGZpCi1AQCAtNTIwOCwxMSArNTQ2MywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorQEAgLTU0NDUsMTEgKzU3MDAsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIAogIApAQCAtMTk2MjIsMTcgKzE5NzE3LDE3IEBACiArc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTIyOCw3ICs1NDg3LDcgQEAgZG8KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTU0NjUsNyArNTcyNCw3IEBAIGRvCiAgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KIC0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICAgYnJlYWsgMgogICAgZmkKLUBAIC01MjQ3LDYgKzU1MDYsMTAgQEAgZWxzZQorQEAgLTU0ODQsNiArNTc0MywxMCBAQCBlbHNlCiAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KICBmaQogIApAQCAtMTk2NDMsNyArMTk3MzgsNyBAQAogICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgIEFSPSJmYWxzZSIKICAgIGVsc2UKLUBAIC01MjU4LDE2ICs1NTIxLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworQEAgLTU0OTUsMTIgKzU3NTgsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CiAgZXNhYwogICAgICBBUj0kYWNfY3RfQVIKICAgIGZpCkBAIC0xOTY1NSwyMCArMTk3NTAsMTYgQEAKIC10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQogKzogJHtBUj1hcn0KICs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKworIAorIAorIAorQEAgLTU1MTIsNiArNTc3Myw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9hcl9hdF9maWxlPW5vCkBAIC0xOTY3OCw3ICsxOTc2OSw3IEBACiAraW50CiArbWFpbiAoKQogK3sKLSAKKysKICsgIDsKICsgIHJldHVybiAwOwogK30KQEAgLTE5NzA0LDIzICsxOTc5NSwzMCBAQAogKyAgICAgICAgZmkKICsgICAgICBmaQogKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAorKwogK2ZpCiArcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCisrCiArZmkKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCisrCiAraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgogKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogK2Vsc2UKICsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQogK2ZpCi0gCi0gCi0gCi1AQCAtNTYwOSw4ICs1OTI4LDggQEAgZXNhYworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisgc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKK0BAIC01ODQ2LDggKzYxNjUsOCBAQCBlc2FjCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKICAKICAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKQEAgLTE5NzMxLDcgKzE5ODI5LDcgQEAKICAKICAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KICBvcHRfY3I9Ci1AQCAtNTY0Niw2ICs1OTY1LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworQEAgLTU4ODMsNiArNjIwMiw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KICAgIGVsc2UKICAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgIGZpCkBAIC0xOTczOSw3ICsxOTgzNyw3IEBACiAgCiAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KICAgIHBpcGVfd29ya3M9bm8KLUBAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgorQEAgLTU5MjQsNiArNjI0NCwxOCBAQCBfTFRfRU9GCiAgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KICAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCiAgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKQEAgLTE5NzU4LDcgKzE5ODU2LDcgQEAKICAjaWZkZWYgX19jcGx1c3BsdXMKICBleHRlcm4gIkMiIHsKICAjZW5kaWYKLUBAIC01Njk4LDcgKzYwMzAsNyBAQCBfTFRfRU9GCitAQCAtNTkzNSw3ICs2MjY3LDcgQEAgX0xUX0VPRgogIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogIAogIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KQEAgLTE5NzY3LDcgKzE5ODY1LDcgQEAKICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICB2b2lkICAgICAgICphZGRyZXNzOwogIH0KLUBAIC01NzI0LDggKzYwNTYsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworQEAgLTU5NjEsOCArNjI5Myw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKQogIF9MVF9FT0YKICAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgogIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dApAQCAtMTk3NzgsNyArMTk4NzYsNyBAQAogIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTU3MzUsOCArNjA2Nyw4IEBAIF9MVF9FT0YKK0BAIC01OTcyLDggKzYzMDQsOCBAQCBfTFRfRU9GCiAgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAJICAgIHBpcGVfd29ya3M9eWVzCiAgCSAgZmkKQEAgLTE5Nzg5LDcgKzE5ODg3LDcgQEAKICAJZWxzZQogIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogIAlmaQotQEAgLTU3NzMsNiArNjEwNSwxOSBAQCBlbHNlCitAQCAtNjAxMCw2ICs2MzQyLDE4IEBAIGVsc2UKICAkYXNfZWNobyAib2siID4mNjsgfQogIGZpCiAgCkBAIC0xOTgwNSwxNyArMTk5MDMsMTMgQEAKICsKICsKICsKLSsKICAKICAKICAKLUBAIC01NzkwLDYgKzYxMzUsNDEgQEAgZmkKK0BAIC02MDMxLDYgKzYzNzUsNDIgQEAgZmkKICAKICAKICAKLSsKLSsKLSsKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQogKwpAQCAtMTk4NDIsMTYgKzE5OTM2LDIwIEBACiArICopCiArICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKICskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogKyAgIDs7CiArZXNhYwogKwogKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQogKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisrCisrCisrCisrCiAgCi0gCi0gCi1AQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCisgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MjQxLDYgKzY2MjEsMTIzIEBAIGVzYWMKICAKICBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKICAKQEAgLTE5ODYwLDcgKzE5OTU4LDcgQEAKICtzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgogK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KQEAgLTE5ODcyLDcgKzE5OTcwLDcgQEAKICsgIElGUz0kYXNfc2F2ZV9JRlMKICsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiArICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgogKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xOTkwMCw3ICsxOTk5OCw3IEBACiArc2V0IGR1bW15IG10OyBhY193b3JkPSQyCiAreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CiArICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogK2Vsc2UKICsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgpAQCAtMTk5MTIsNyArMjAwMTAsNyBAQAogKyAgSUZTPSRhc19zYXZlX0lGUwogKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCiArICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCiArICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogKyAgICBicmVhayAyCkBAIC0xOTk1MCw3ICsyMDA0OCw3IEBACiArdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKICsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiArZWxzZQogKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCkBAIC0xOTk3NSw3ICsyMDA3Myw3IEBACiAgCiAgICBjYXNlICRob3N0X29zIGluCiAgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNjU3MCw2ICs3MDY3LDggQEAgX0xUX0VPRgorQEAgLTY4MDcsNiArNzMwNCw4IEBAIF9MVF9FT0YKICAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKICAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CiAgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQpAQCAtMTk5ODQsNyArMjAwODIsNyBAQAogICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgogIGludCBtYWluKCkgeyByZXR1cm4gMDt9CiAgX0xUX0VPRgotQEAgLTcwMzMsNyArNzUzMiw4IEBAIGZpCitAQCAtNzI2OSw3ICs3NzY4LDggQEAgZmkKICBMSUJUT09MX0RFUFM9IiRsdG1haW4iCiAgCiAgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KQEAgLTE5OTk0LDcgKzIwMDkyLDcgQEAKICAKICAKICAKLUBAIC03MTIyLDcgKzc2MjIsNyBAQCBhaXgzKikKK0BAIC03MzU4LDcgKzc4NTgsNyBAQCBhaXgzKikKICBlc2FjCiAgCiAgIyBHbG9iYWwgdmFyaWFibGVzOgpAQCAtMjAwMDMsNyArMjAxMDEsNyBAQAogIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAgCiAgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzQyMCw4ICs3OTIwLDYgQEAgZmkKK0BAIC03NjU2LDggKzgxNTYsNiBAQCBmaQogIGx0X3Byb2dfY29tcGlsZXJfcGljPQogIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogIApAQCAtMjAwMTIsNyArMjAxMTAsNyBAQAogIAogICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KK0BAIC03ODIzLDYgKzgzMjEsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCiAgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKICAJOzsKQEAgLTIwMDI1LDcgKzIwMTIzLDcgQEAKICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTc2NDksNyArODE1Myw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CitAQCAtNzg4NSw3ICs4Mzg5LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpbwogICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTIwMDM0LDcgKzIwMTMyLDcgQEAKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAgKikKICAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTc3MDYsMTMgKzgyMTAsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTc5NDIsMTMgKzg0NDYsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgogICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgogICAgICA7OwogIGVzYWMKQEAgLTIwMDQ3LDcgKzIwMTQ1LDcgQEAKICAKICt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKICskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKQEAgLTIwMDU4LDcgKzIwMTU2LDcgQEAKICAKICAjCiAgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTc3NzMsNiArODI4MSwxMSBAQCBmaQorQEAgLTgwMDksNiArODUxNywxMSBAQCBmaQogIAogIAogIApAQCAtMjAwNzAsNyArMjAxNjgsNyBAQAogICMKICAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAgIwotQEAgLTgxMjMsNyArODYzNiw4IEBAIF9MVF9FT0YKK0BAIC04MzU5LDcgKzg4NzIsOCBAQCBfTFRfRU9GCiAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwpAQCAtMjAwODAsNyArMjAxNzgsNyBAQAogIAogICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtODIyMiwxMiArODczNiwxMiBAQCBfTFRfRU9GCitAQCAtODQ1OCwxMiArODk3MiwxMiBAQCBfTFRfRU9GCiAgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCiAgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KICAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKQEAgLTIwMDk1LDcgKzIwMTkzLDcgQEAKICAJICBmaQogIAkgIDs7CiAgCWVzYWMKLUBAIC04MjQxLDggKzg3NTUsOCBAQCBfTFRfRU9GCitAQCAtODQ3Nyw4ICs4OTkxLDggQEAgX0xUX0VPRgogIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAgCXdsYXJjPQogICAgICAgIGVsc2UKQEAgLTIwMTA2LDcgKzIwMjA0LDcgQEAKICAgICAgICBmaQogICAgICAgIDs7CiAgCi1AQCAtODI2MCw4ICs4Nzc0LDggQEAgX0xUX0VPRgorQEAgLTg0OTYsOCArOTAxMCw4IEBAIF9MVF9FT0YKICAKICBfTFRfRU9GCiAgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCkBAIC0yMDExNyw3ICsyMDIxNSw3IEBACiAgICAgICAgZWxzZQogIAlsZF9zaGxpYnM9bm8KICAgICAgICBmaQotQEAgLTgzMDcsOCArODgyMSw4IEBAIF9MVF9FT0YKK0BAIC04NTQzLDggKzkwNTcsOCBAQCBfTFRfRU9GCiAgCiAgICAgICopCiAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgpAQCAtMjAxMjgsNyArMjAyMjYsNyBAQAogICAgICAgIGVsc2UKICAJbGRfc2hsaWJzPW5vCiAgICAgICAgZmkKLUBAIC04NDM4LDcgKzg5NTIsMTMgQEAgX0xUX0VPRgorQEAgLTg2NzQsNyArOTE4OCwxMyBAQCBfTFRfRU9GCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCiAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTIwMTM2LDE0ICsyMDIzNCwxNCBAQAogKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0gICBhc19mbl9lcnJvciAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKKyAgIGFzX2ZuX2Vycm9yICQ/ICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQogIGZpCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg0NTQsMjIgKzg5NzQsMjkgQEAgbWFpbiAoKQorQEAgLTg2OTAsMjIgKzkyMTAsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTIwMTg2LDcgKzIwMjg0LDcgQEAKICAKICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTg0ODEsNyArOTAwOCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04NzE3LDcgKzkyNDQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAllbHNlCiAgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAJICMgZW1wdHkgZXhlY3V0YWJsZS4KQEAgLTIwMTk0LDE0ICsyMDI5MiwxNCBAQAogKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgogKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiArZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0gICBhc19mbl9lcnJvciAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKKyAgIGFzX2ZuX2Vycm9yICQ/ICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQogIGZpCiAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotQEAgLTg0OTcsMjIgKzkwMzAsMjkgQEAgbWFpbiAoKQorQEAgLTg3MzMsMjIgKzkyNjYsMjkgQEAgbWFpbiAoKQogIF9BQ0VPRgogIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKICAKQEAgLTIwMjQ0LDcgKzIwMzQyLDcgQEAKICAKICAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC04NTU3LDIwICs5MDk3LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg3OTMsMjAgKzkzMzMsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCkBAIC0yMDMyMiw3ICsyMDQyMCw3IEBACiAgICAgICAgOzsKICAKICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04ODY3LDcgKzk0NTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwCiAgCiAgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQpAQCAtMjAzMzEsNyArMjA0MjksNyBAQAogICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCiAgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTg2MzksNyArOTIyMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorQEAgLTg4NzUsNyArOTQ1OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAKICAgICAgaHB1eDkqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCkBAIC0yMDM0MCw3ICsyMDQzOCw3IEBACiAgICAgICAgZWxzZQogIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgIGZpCi1AQCAtODY1NSw3ICs5MjM4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCitAQCAtODg5MSw3ICs5NDc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicAogIAogICAgICBocHV4MTAqKQogICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgpAQCAtMjAzNDksNyArMjA0NDcsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgIGZpCi1AQCAtODY3OSwxMCArOTI2MiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK0BAIC04OTE1LDEwICs5NDk4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnAKICAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogIAkgIDs7CiAgCWlhNjQqKQpAQCAtMjAzNjIsNyArMjA0NjAsNyBAQAogIAkgIDs7CiAgCWVzYWMKICAgICAgICBlbHNlCi1AQCAtODc2MSwyNiArOTM0NCwzOSBAQCBmaQorQEAgLTg5OTcsMjYgKzk1ODAsMzkgQEAgZmkKICAKICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgpAQCAtMjAzNzcsMTMgKzIwNDc1LDEzIEBACiArCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiArCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CiArJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgogKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKICtlbHNlCiArICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgogKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCiArCSAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSAgIGFzX2ZuX2Vycm9yICJMaW5rIHRlc3RzIGFyZSBub3QgYWxsb3dlZCBhZnRlciBHQ0NfTk9fRVhFQ1VUQUJMRVMuIiAiJExJTkVOTyIgNQorICAgYXNfZm5fZXJyb3IgJD8gIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CiAgZmkKICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAgLyogZW5kIGNvbmZkZWZzLmguICAqLwpAQCAtMjA0MTAsNyArMjA1MDgsNyBAQAogICAgICAgIGVsc2UKICAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtODg2NSw3ICs5NDYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCitAQCAtOTEwMSw3ICs5Njk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iagogICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKICAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCkBAIC0yMDQxOSw3ICsyMDUxNyw3IEBACiAgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKICAgICAgICBlbHNlCiAgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTg4ODQsOSArOTQ4MCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorQEAgLTkxMjAsOSArOTcxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmoKICAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCiAgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAJd2xhcmM9JyR7d2x9JwpAQCAtMjA0MzEsNyArMjA1MjksNyBAQAogICAgICAgIGVsc2UKICAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAgCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk0NjIsOCArMTAwNTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCitAQCAtOTY5OCw4ICsxMDI5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgIG5lZWRfdmVyc2lvbj1ubwogICAgbmVlZF9saWJfcHJlZml4PW5vCiAgCkBAIC0yMDQ0Myw3ICsyMDU0MSw3IEBACiAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTQ5NiwxMyArMTAwOTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorQEAgLTk3MzIsMTMgKzEwMzI5LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICAgOzsKICAgICAgZXNhYwpAQCAtMjA1MTYsNyArMjA2MTQsNyBAQAogICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgIDs7Ci1AQCAtOTU5NCw3ICsxMDI0OSw3IEBAIGhhaWt1KikKK0BAIC05ODMwLDcgKzEwNDg1LDcgQEAgaGFpa3UqKQogICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0yMDUyNSw3ICsyMDYyMywxNiBAQAogICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICAgOzsKICAKLUBAIC0xMDQ1MiwxMCArMTExMDcsMTAgQEAgZWxzZQorQEAgLTEwNjQ0LDcgKzExMjk5LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTA2NDcgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEwNjg4LDEwICsxMTM0MywxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTIwNTM4LDcgKzIwNjQ1LDE2IEBACiAgaW50IG1haW4gKCkKICB7CiAgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMDU1OCwxMCArMTEyMTMsMTAgQEAgZWxzZQorQEAgLTEwNzUwLDcgKzExNDA1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTA3NTMgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEwNzk0LDEwICsxMTQ0OSwxMCBAQCBlbHNlCiAgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKQEAgLTIwNTUxLDcgKzIwNjY3LDcgQEAKICBpbnQgbWFpbiAoKQogIHsKICAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExOTkyLDEzICsxMjY0NywyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTIyNjYsMTMgKzEyOTIxLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV8KICBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKQEAgLTIwNTcyLDcgKzIwNjg4LDcgQEAKICBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDEzLDE0ICsxMjY3NSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorQEAgLTEyMjg3LDE0ICsxMjk0OSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMjA1OTEsNyArMjA3MDcsNyBAQAogIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDUzLDEyICsxMjcxOCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorQEAgLTEyMzI3LDEyICsxMjk5MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kCiAgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtMjA2MDUsNyArMjA3MjEsNyBAQAogIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKICBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIxMTMsOCArMTI3NzgsMTMgQEAgcmVsb2FkX2ZsYWcgXAorQEAgLTEyMzg3LDggKzEzMDUyLDEzIEBAIHJlbG9hZF9mbGFnIFwKICBPQkpEVU1QIFwKICBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiAgZmlsZV9tYWdpY19jbWQgXApAQCAtMjA2MTksNyArMjA3MzUsNyBAQAogIFNUUklQIFwKICBSQU5MSUIgXAogIENDIFwKLUBAIC0xMjEyNCwxMiArMTI3OTQsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCitAQCAtMTIzOTgsMTIgKzEzMDY4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAogIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCiAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCkBAIC0yMDYzNSw3ICsyMDc1MSw3IEBACiAgRFNZTVVUSUwgXAogIE5NRURJVCBcCiAgTElQTyBcCi1AQCAtMTIxNDUsNyArMTI4MTcsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCitAQCAtMTI0MTksNyArMTMwOTEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCiAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCkBAIC0yMDY0Myw3ICsyMDc1OSw3IEBACiAgZXhjbHVkZV9leHBzeW1zIFwKICBpbmNsdWRlX2V4cHN5bXMgXAogIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMjE4MSw2ICsxMjg1Miw3IEBAIG1vZHVsZV9jbWRzIFwKK0BAIC0xMjQ1NSw2ICsxMzEyNiw3IEBAIG1vZHVsZV9jbWRzIFwKICBtb2R1bGVfZXhwc3ltX2NtZHMgXAogIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAogIHByZWxpbmtfY21kcyBcCkBAIC0yMDY1MSw3ICsyMDc2Nyw3IEBACiAgcG9zdGluc3RhbGxfY21kcyBcCiAgcG9zdHVuaW5zdGFsbF9jbWRzIFwKICBmaW5pc2hfY21kcyBcCi1AQCAtMTI3NzAsNyArMTM0NDIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CitAQCAtMTMwNTMsNyArMTM3MjUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CiAgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCiAgIwogICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCkBAIC0yMDY2MSw3ICsyMDc3Nyw3IEBACiAgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICAjCiAgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTEyODczLDE5ICsxMzU0Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKK0BAIC0xMzE1NiwxOSArMTM4MjksNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCiAgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgogIE5MMlNQPSRsdF9sdF9OTDJTUAogIApAQCAtMjA3MDUsNyArMjA4MjEsNyBAQAogICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCiAgU1RSSVA9JGx0X1NUUklQCiAgCi1AQCAtMTI5MTUsNiArMTM2MTEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKK0BAIC0xMzE5OCw2ICsxMzg5NCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jCiAgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KICBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKICAKQEAgLTIwNzE4LDcgKzIwODM0LDcgQEAKICAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KICBvYmpkaXI9JG9iamRpcgogIAotQEAgLTEyOTI0LDYgKzEzNjI2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKK0BAIC0xMzIwNyw2ICsxMzkwOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECiAgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KICBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCiAgCkBAIC0yMDcyOCw3ICsyMDg0NCw3IEBACiAgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgogIERTWU1VVElMPSRsdF9EU1lNVVRJTAogIAotQEAgLTEzMDM4LDEyICsxMzc0MywxMiBAQCB3aXRoX2djYz0kR0NDCitAQCAtMTMzMjEsMTIgKzE0MDI2LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKICAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCiAgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwogIApAQCAtMjA3NDQsNyArMjA4NjAsNyBAQAogICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KICBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwogIAotQEAgLTEzMTMwLDkgKzEzODM1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorQEAgLTEzNDEzLDkgKzE0MTE4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAogICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKICAKQEAgLTIwNzU0LDcgKzIwODcwLDcgQEAKICAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwogIAotQEAgLTEzMTQ4LDYgKzEzODUwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKK0BAIC0xMzQzMSw2ICsxNDEzMyw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCiAgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KICBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwogIApAQCAtMjA3NjQsNyArMjA4ODAsNyBAQAogICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgogIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwogIAotQEAgLTEzMTgwLDIxMCArMTM4ODUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorQEAgLTEzNDYzLDIxMCArMTQxNjgsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgogICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KICAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CkBAIC0yMDk2NiwxNSArMjEwODIsOSBAQAogLV9MVF9FT0YKIC0gICAgOzsKIC0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCisgCiArICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCiArICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAogK2Z1bmNfZGlybmFtZSAoKVwKQEAgLTIxMTMyLDEyICsyMTI0MiwxMiBAQAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKICskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQogK2ZpCi0rCi0rCisgCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiArICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICAgY2htb2QgK3ggIiRvZmlsZSIKICAKLS0tIAotMi4xNi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKaW5kZXggNGE1MTI3My4uMThlZjZiYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY5NzkwMzI1NmUwOTUzMzc3OGJhYThhZjY2NDAyYzQ0ZDcwMjE5ZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVmNTBkODQ4ZDk4M2Y4MWU0YTg2ZGQzZWVmNDkzM2UzNTc5MzM2ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM3OjEwICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIEFkZCB0aGUgYXJtdjVlIGFyY2hpdGVjdHVyZSB0byBiaW51dGlscwpAQCAtMTksMTAgKzE5LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLWFybS5jIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotaW5kZXggZWM1MDQyMDUxOC4uYTI1ZDE3MjFhZiAxMDA2NDQKK2luZGV4IDNmNTM4NGUxYzcuLjhkNWJjMTQ1YWYgMTAwNjQ0CiAtLS0gYS9nYXMvY29uZmlnL3RjLWFybS5jCiArKysgYi9nYXMvY29uZmlnL3RjLWFybS5jCi1AQCAtMjYxOTUsNiArMjYxOTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CitAQCAtMjYyOTQsNiArMjYyOTQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NHQiLAlBUk1fQVJDSF9WNFQsCSBGUFVfQVJDSF9GUEEpLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0eG0iLAlBUk1fQVJDSF9WNFR4TSwJIEZQVV9BUkNIX0ZQQSksCiAgICBBUk1fQVJDSF9PUFQgKCJhcm12NSIsCUFSTV9BUkNIX1Y1LAkgRlBVX0FSQ0hfVkZQKSwKQEAgLTMxLDUgKzMxLDUgQEAKICAgIEFSTV9BUkNIX09QVCAoImFybXY1dHhtIiwJQVJNX0FSQ0hfVjVUeE0sCSBGUFVfQVJDSF9WRlApLAogICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKaW5kZXggOTM5YmU2Ny4uNjk5OWVkOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtZG9uLXQtbGV0LXRoZS1kaXN0cm8tY29tcGlsZXItcG9pbnQtdG8tdGhlLXdyb25nLWlucy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjIyZDY2NjM0ZWIyZTUwOWQ0MTI2ZjViZGNhYjI2ZGUzNjcyNDFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2EyNWQ1NWNlZjgzOThiYWQ1MDhjMmIyYmUyOWFlYTVhYTNjNGQyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwOC8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCkBAIC0zMSw1ICszMSw1IEBACiAgCWlmIHRlc3QgLW4gIiR7dGFyZ2V0X2hlYWRlcl9kaXJ9IjsgdGhlbiBcCiAgCQkke21raW5zdGFsbGRpcnN9ICQoREVTVERJUikkKGxpYmRpcikvJChNVUxUSU9TRElSKTsgXAogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKaW5kZXggZTc1MTA0Ny4uOWE5ZTMxOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjdlMzhlZTkyYzI0ZmNhODZiMWMzZjZlZjE1NmExODkyZGQwNmJmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTM2NjcwNTlmYzBkNTJkODkwYjUwNWJlZDBlNTA1MGVhM2Q3MDAyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDE1IEphbiAyMDE2IDA2OjMxOjA5ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZwpAQCAtNTUsNyArNTUsNyBAQAogIGxkL2NvbmZpZ3VyZSAgICB8IDE2ICsrKysrKysrKysrKysrKysKICBsZC9jb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCiAgbGQvbGQuaCAgICAgICAgIHwgIDggKysrKysrKysKLSBsZC9sZC50ZXhpbmZvICAgfCAxMiArKysrKysrKysrKysKKyBsZC9sZC50ZXhpICAgICAgfCAxMiArKysrKysrKysrKysKICBsZC9sZGZpbGUuYyAgICAgfCAxNyArKysrKysrKysrKysrKysrKwogIGxkL2xkbGV4LmggICAgICB8ICAyICsrCiAgbGQvbGRtYWluLmMgICAgIHwgIDIgKysKQEAgLTYzLDEwICs2MywxMCBAQAogIDkgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlnLmluIGIvbGQvY29uZmlnLmluCi1pbmRleCBhODQ2NzQzZGE2Li5kZjNjZDVmYjYwIDEwMDY0NAoraW5kZXggZDkzYzliMDgzMC4uNWRhMjc0MmJlYSAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZy5pbgogKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMjcsNiArMjcsOSBAQAorQEAgLTMxLDYgKzMxLDkgQEAKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAgI3VuZGVmIEVOQUJMRV9OTFMKICAKQEAgLTc3LDEwICs3NywxMCBAQAogICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KICAKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IGRiOGI5OTg3MjIuLjQ4OWVhZDVjMTMgMTAwNzU1CitpbmRleCAyYjI5MWYwZGE4Li5mYWNjMzg2NTYzIDEwMDc1NQogLS0tIGEvbGQvY29uZmlndXJlCiArKysgYi9sZC9jb25maWd1cmUKLUBAIC03ODksNiArNzg5LDcgQEAgd2l0aF9saWJfcGF0aAorQEAgLTgyNiw2ICs4MjYsNyBAQCB3aXRoX2xpYl9wYXRoCiAgZW5hYmxlX3RhcmdldHMKICBlbmFibGVfNjRfYml0X2JmZAogIHdpdGhfc3lzcm9vdApAQCAtODgsNyArODgsNyBAQAogIGVuYWJsZV9nb2xkCiAgZW5hYmxlX2dvdAogIGVuYWJsZV9jb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25zCi1AQCAtMTQ0OCw2ICsxNDQ5LDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CitAQCAtMTQ5MCw2ICsxNDkxLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6CiAgICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCiAgICAtLWVuYWJsZS10YXJnZXRzICAgICAgICBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgICAgIDY0LWJpdCBzdXBwb3J0IChvbiBob3N0cyB3aXRoIG5hcnJvd2VyIHdvcmQgc2l6ZXMpCkBAIC05Nyw3ICs5Nyw3IEBACiAgICAtLWVuYWJsZS1nb2xkWz1BUkddICAgICBidWlsZCBnb2xkIFtBUkc9e2RlZmF1bHQseWVzLG5vfV0KICAgIC0tZW5hYmxlLWdvdD08dHlwZT4gICAgIEdPVCBoYW5kbGluZyBzY2hlbWUgKHRhcmdldCwgc2luZ2xlLCBuZWdhdGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpZ290KQotQEAgLTE2MzE1LDYgKzE2MzE4LDE5IEBAIGZpCitAQCAtMTY2MTgsNiArMTY2MjEsMTkgQEAgZmkKICAKICAKICAKQEAgLTExOCwxMCArMTE4LDEwIEBACiAgaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6CiAgICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCi1pbmRleCBiYWRhMWI1MGIwLi5kMDc0YTM4MjBiIDEwMDY0NAoraW5kZXggZDEwYzU1MzY1MC4uOWYxYjU3YjEyMCAxMDA2NDQKIC0tLSBhL2xkL2NvbmZpZ3VyZS5hYwogKysrIGIvbGQvY29uZmlndXJlLmFjCi1AQCAtOTUsNiArOTUsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCitAQCAtOTQsNiArOTQsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCiAgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UKQogIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUpCiAgCkBAIC0xNTcsMTEgKzE1NywxMSBAQAogICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCiAgICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKICAKLWRpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbwotaW5kZXggYzg5OTE1ZjFhYS4uZGY0MzA4MzdlMiAxMDA2NDQKLS0tLSBhL2xkL2xkLnRleGluZm8KLSsrKyBiL2xkL2xkLnRleGluZm8KLUBAIC0yNDk4LDYgKzI0OTgsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCitkaWZmIC0tZ2l0IGEvbGQvbGQudGV4aSBiL2xkL2xkLnRleGkKK2luZGV4IGI5ZmUyMzI0ZGEuLjQzNDg2NjA1ZTAgMTAwNjQ0CistLS0gYS9sZC9sZC50ZXhpCisrKysgYi9sZC9sZC50ZXhpCitAQCAtMjQ3OSw2ICsyNDc5LDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgogIAogIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55CiAgQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCkBAIC0xODEsNyArMTgxLDcgQEAKICAKICBAYyBtYW4gZW5kCiBkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYwotaW5kZXggNjUzMmE1N2Q5Ni4uZjk0M2YwYjJlNSAxMDA2NDQKK2luZGV4IGE3MmZmMTM1MjYuLmRjNTE0OGY3NDggMTAwNjQ0CiAtLS0gYS9sZC9sZGZpbGUuYwogKysrIGIvbGQvbGRmaWxlLmMKIEBAIC0xMTYsNiArMTE2LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQpAQCAtMjA5LDEwICsyMDksMTAgQEAKICAKICAvKiBUcnkgdG8gb3BlbiBhIEJGRCBmb3IgYSBsYW5nX2lucHV0X3N0YXRlbWVudC4gICovCiBkaWZmIC0tZ2l0IGEvbGQvbGRsZXguaCBiL2xkL2xkbGV4LmgKLWluZGV4IDE0MGVkMWQ5ZGEuLjk5NjVjYmMwNGYgMTAwNjQ0CitpbmRleCAwNGQ2ZmQ1Zjk2Li5kN2RmMDA1YmIyIDEwMDY0NAogLS0tIGEvbGQvbGRsZXguaAogKysrIGIvbGQvbGRsZXguaAotQEAgLTE0Nyw2ICsxNDcsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKK0BAIC0xNDgsNiArMTQ4LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCiAgICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKICAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCiAgICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKQEAgLTIyMiwxMCArMjIyLDEwIEBACiAgCiAgLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCiBkaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYwotaW5kZXggYzQ3M2VkMjRjMy4uYWRhZTBiNDYxMCAxMDA2NDQKK2luZGV4IGYzMWVlYjI5YzMuLjI1Zjg0OTc4ODggMTAwNjQ0CiAtLS0gYS9sZC9sZG1haW4uYwogKysrIGIvbGQvbGRtYWluLmMKLUBAIC0yNjEsNiArMjYxLDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTI2OCw2ICsyNjgsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7CiAgICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOwogICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7CkBAIC0yMzUsMTAgKzIzNSwxMCBAQAogICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQogICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQogZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKLWluZGV4IGYyMTkxNjAyZDQuLmJjY2IzYmRlZWYgMTAwNjQ0CitpbmRleCA4NmEwMzNhMzgzLi40YTQwZDQ4MDIwIDEwMDY0NAogLS0tIGEvbGQvbGV4c3VwLmMKICsrKyBiL2xkL2xleHN1cC5jCi1AQCAtNTM4LDYgKzUzOCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQorQEAgLTU0Myw2ICs1NDMsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KICAgIHsgeyJvcnBoYW4taGFuZGxpbmciLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX09SUEhBTl9IQU5ETElOR30sCiAgICAgICdcMCcsIE5fKCI9TU9ERSIpLCBOXygiQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLiIpLAogICAgICBUV09fREFTSEVTIH0sCkBAIC0yNTMsOCArMjUzLDggQEAKICB9OwogIAogICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCi1AQCAtMTU2OCw2ICsxNTc2LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQotIAkgICAgZWluZm8gKF8oIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgorQEAgLTE1NzcsNiArMTU4NSwxNCBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKKyAJICAgIGVpbmZvIChfKCIlRiVQOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiIKICAJCSAgICAgIiBcIi0tb3JwaGFuLWhhbmRsaW5nXCJcbiIpKTsKICAJICBicmVhazsKICsKQEAgLTI2OSw1ICsyNjksNSBAQAogICAgICB9CiAgCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCmluZGV4IDMzZGZmZjkuLjhmYzAwZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTIwNWFlMDVjNDFhOGNjOGQ0NzcwOGYwYTNiNmY3NDBlMmJmMjUyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWUxZDhmOWE2NTdhOGJkNDgwNDhjMmVhNjQwN2NmNjBiNzIzYmQ2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxMC8xNV0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKQEAgLTQ4LDUgKzQ4LDUgQEAKICAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgogIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAppbmRleCA4MGZjYmMxLi4yZTkzYjEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDc5NzhjMTI5OTAyMTAzM2MzNWMyOWM5NGUwOTk3MjM1ZjdlZGUyNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJkMmUyZmNkZDk2NDY4NDk3MTZlZTk5ZDhkM2U1ZDcyYWU4ODg5YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMTEvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CkBAIC0xNCwxMCArMTQsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IGYwNGE5OTNmMDYuLjg3NzdmOTZiZDIgMTAwNjQ0CitpbmRleCA2MzkxZjM1Njg0Li44YTExYzA2ODBhIDEwMDY0NAogLS0tIGEvYmZkL2NvbmZpZy5iZmQKICsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtMTE4OSwxMiArMTE4OSwxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgorQEAgLTkxMywxMiArOTEzLDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCiAgICAgIDs7CiAgICBtaXBzNjQqZWwtKi1saW51eCopCkBAIC0zNSwxMCArMzUsMTAgQEAKICAgIG1pcHMqZWwtKi1saW51eCopCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKIGRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggNjE4M2E4NWIzZC4uMWQ3ODQ2NTU5MCAxMDA2NDQKK2luZGV4IGZhZDhiMmU1YzguLjdmYjIxNjg1MDMgMTAwNjQ0CiAtLS0gYS9sZC9jb25maWd1cmUudGd0CiArKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTM1LDExICs1MzUsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKK0BAIC00NjQsMTEgKzQ2NCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcwogIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcwogIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyZWxtaXB2eHdvcmtzIiA7OwogIG1pcHMqLSotd2luZGlzcykJdGFyZ19lbXVsPWVsZjMybWlwc3dpbmRpc3MgOzsKQEAgLTU1LDUgKzU1LDUgQEAKICBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaAppbmRleCAxZmVmYjY4Li40ZDY0YmQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYjQwYmY1ODQ2MTVmNzk0Yjg1ZmQ1MGQ0ZDBhNWMwYTFkMmVlN2JmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NmZmNzU3MGMyOWY3OTJjNDY2YTkzMzUyOWZlZmRhOWI4ZTk3OTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDY6MTkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAxMi8xNV0gQWRkIHN1cHBvcnQgZm9yIE5ldGxvZ2ljIFhMUApAQCAtMzQsMTAgKzM0LDEwIEBACiAgMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCi1pbmRleCBlZWM5YzRhZDJhLi4zYmYwYTcxZTYzIDEwMDY0NAoraW5kZXggMDIzODQzYjBiZS4uNDYyNDZmZWMyZCAxMDA2NDQKIC0tLSBhL2JmZC9hb3V0eC5oCiArKysgYi9iZmQvYW91dHguaAotQEAgLTgxNCw2ICs4MTQsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKK0BAIC03OTgsNiArNzk4LDcgQEAgTkFNRSAoYW91dCwgbWFjaGluZV90eXBlKSAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsCiAgCWNhc2UgYmZkX21hY2hfbWlwc2lzYTY0cjY6CiAgCWNhc2UgYmZkX21hY2hfbWlwc19zYjE6CiAgCWNhc2UgYmZkX21hY2hfbWlwc194bHI6CkBAIC00NiwxMCArNDYsMTAgQEAKICAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKICAJICBicmVhazsKIGRpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCi1pbmRleCBlODNjNTdhMmYzLi4zMDE2ZWExYmFlIDEwMDY0NAoraW5kZXggMjgyZTk4MzA4Ni4uYjM4YjA1ZDEzMiAxMDA2NDQKIC0tLSBhL2JmZC9hcmNodXJlcy5jCiArKysgYi9iZmQvYXJjaHVyZXMuYwotQEAgLTIwMSw2ICsyMDEsNyBAQCBERVNDUklQVElPTgorQEAgLTE4Myw2ICsxODMsNyBAQCBERVNDUklQVElPTgogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMwkJNjUwMwogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyCQk4ODc2ODIJIHsqIGRlY2ltYWwgJ1hMUicuICAqfQogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIJNzM2NTUwCSB7KiBkZWNpbWFsICdJQTInLiAgKn0KQEAgLTU4LDEwICs1OCwxMCBAQAogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyCQkzMwogIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzCQkzNAogZGlmZiAtLWdpdCBhL2JmZC9iZmQtaW4yLmggYi9iZmQvYmZkLWluMi5oCi1pbmRleCA0Mjk5MWU3ODQ4Li4yN2FiYzVkNWE4IDEwMDY0NAoraW5kZXggOTM3NDViZDNmZC4uMzI2ZTllNDllZCAxMDA2NDQKIC0tLSBhL2JmZC9iZmQtaW4yLmgKICsrKyBiL2JmZC9iZmQtaW4yLmgKLUBAIC0yMDYyLDYgKzIwNjIsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKK0BAIC0yMDU0LDYgKzIwNTQsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKICAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJy4gICovCiAgI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgLyogZGVjaW1hbCAnSUEyJy4gICovCkBAIC03MCwxMCArNzAsMTAgQEAKICAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwogICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CiBkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggODc3N2Y5NmJkMi4uN2I4MGJkYThjOSAxMDA2NDQKK2luZGV4IDhhMTFjMDY4MGEuLmM4ODI0MjEzNDMgMTAwNjQ0CiAtLS0gYS9iZmQvY29uZmlnLmJmZAogKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC0xMTcyLDYgKzExNzIsMTEgQEAgY2FzZSAiJHt0YXJnfSIgaW4KK0BAIC04OTYsNiArODk2LDExIEBAIGNhc2UgIiR7dGFyZ30iIGluCiAgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbGVfdmVjCiAgICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9iZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMiCiAgICAgIDs7CkBAIC0xMTAsMTAgKzExMCwxMCBAQAogIAogIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKIGRpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYwotaW5kZXggMjg1NDAxMzY3ZC4uMTRlYmI1ZjE3NSAxMDA2NDQKK2luZGV4IGQ5MTk0MjMwMWMuLjVkMWJkM2YwYjEgMTAwNjQ0CiAtLS0gYS9iZmQvZWxmeHgtbWlwcy5jCiArKysgYi9iZmQvZWxmeHgtbWlwcy5jCi1AQCAtNjgwNiw2ICs2ODA2LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKK0BAIC02ODA1LDYgKzY4MDUsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQogICAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOgogICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyOwogIApAQCAtMTIzLDcgKzEyMyw3IEBACiAgICAgIGRlZmF1bHQ6CiAgICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKICAJewotQEAgLTExOTYzLDYgKzExOTY2LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQorQEAgLTEyMDAzLDYgKzEyMDA2LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQogICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOwogICAgICAgIGJyZWFrOwogIApAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgogICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOwogICAgICAgIGJyZWFrOwotQEAgLTEzOTM2LDYgKzEzOTQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQorQEAgLTEzOTkyLDYgKzEzOTk5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQogICAgeyBiZmRfbWFjaF9taXBzX29jdGVvbnAsIGJmZF9tYWNoX21pcHNfb2N0ZW9uIH0sCiAgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9uLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAogICAgeyBiZmRfbWFjaF9taXBzX2xvb25nc29uXzNhLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LApAQCAtMTQzLDEwICsxNDMsMTAgQEAKICAgIC8qIE1JUFM2NCBleHRlbnNpb25zLiAgKi8KICAgIHsgYmZkX21hY2hfbWlwc2lzYTY0cjIsIGJmZF9tYWNoX21pcHNpc2E2NCB9LAogZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYWUxY2RhOWE3Yi4uZmVkMDM4N2E5NCAxMDA2NDQKK2luZGV4IDJiNzhkYjIxOWIuLjdhNzE3ODkyNWYgMTAwNjQ0CiAtLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKICsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTMzNzAsNiArMzM3MCw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCitAQCAtMzQwMyw2ICszNDAzLDcgQEAgZ2V0X21hY2hpbmVfZmxhZ3MgKEZpbGVkYXRhICogZmlsZWRhdGEsIHVuc2lnbmVkIGVfZmxhZ3MsIHVuc2lnbmVkIGVfbWFjaGluZSkKICAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7CiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7CiAgCSAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOiAgc3RyY2F0IChidWYsICIsIGludGVyYXB0aXYtbXIyIik7IGJyZWFrOwpAQCAtMTU1LDcgKzE1NSw3IEBACiAgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgogIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotaW5kZXggYzEzNTEzMWI1OS4uZDhmYmRhOGUzMSAxMDA2NDQKK2luZGV4IDU5ZGY3ODcxNTUuLjQ4NTM3MjI2YzAgMTAwNjQ0CiAtLS0gYS9nYXMvY29uZmlnL3RjLW1pcHMuYwogKysrIGIvZ2FzL2NvbmZpZy90Yy1taXBzLmMKIEBAIC01NTIsNiArNTUyLDcgQEAgc3RhdGljIGludCBtaXBzXzMyYml0bW9kZSA9IDA7CkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICApCiAgCiAgLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCi1AQCAtMTk3MzcsNyArMTk3MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KK0BAIC0xOTc3OCw3ICsxOTc4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19jcHVfaW5mbyBtaXBzX2NwdV9pbmZvX3RhYmxlW10gPQogICAgLyogQnJvYWRjb20gWExQLgogICAgICAgWExQIGlzIG1vc3RseSBsaWtlIFhMUiwgd2l0aCB0aGUgcHJvbWluZW50IGV4Y2VwdGlvbiB0aGF0IGl0IGlzCiAgICAgICBNSVBTNjRSMiByYXRoZXIgdGhhbiBNSVBTNjQuICAqLwpAQCAtMTg0LDEwICsxODQsMTAgQEAKICAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCiAgICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCiBkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IGE0MGFjMjE0NGYuLjY1YTY5OTUyNDMgMTAwNzU1CitpbmRleCAxMzQyNzhmYTI1Li4yZmRjYTE0N2ExIDEwMDc1NQogLS0tIGEvZ2FzL2NvbmZpZ3VyZQogKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTEyOTg5LDYgKzEyOTg5LDkgQEAgX0FDRU9GCitAQCAtMTMzMzYsNiArMTMzMzYsOSBAQCBfQUNFT0YKICAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCiAgCSAgICBtaXBzX2NwdT1taXBzNjRyNgogIAkgICAgOzsKQEAgLTE5OCw3ICsxOTgsNyBAQAogIAkgICAgbWlwc19jcHU9cjM5MDAKICAJICAgIDs7CiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCA5ZGUwYjRlMTc1Li43NGZjNGY3ZTU1IDEwMDY0NAoraW5kZXggNGUyY2RlMzI3OS4uYzMyOWYzODkyOSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvZWxmL21pcHMuaAogKysrIGIvaW5jbHVkZS9lbGYvbWlwcy5oCiBAQCAtMjkwLDYgKzI5MCw3IEBAIEVORF9SRUxPQ19OVU1CRVJTIChSX01JUFNfbWF4ZXh0KQpAQCAtMjEwLDEwICsyMTAsMTAgQEAKICAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjMJMHgwMDhlMDAwMAogICNkZWZpbmUgRV9NSVBTX01BQ0hfNTQwMAkweDAwOTEwMDAwCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1pbmRleCA1ZWVhNzJmMTM5Li45MGY2ZDU3ZTE1IDEwMDY0NAoraW5kZXggMWFiMTc4MDU2Ny4uNzRmNDU3YjU3OSAxMDA2NDQKIC0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAogKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1AQCAtMTI1OSw2ICsxMjU5LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworQEAgLTEyNjIsNiArMTI2Miw4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKICAjZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCiAgLyogSW1hZ2luYXRpb24gaW50ZXJBcHRpdiBNUjIuICAqLwogICNkZWZpbmUgSU5TTl9JTlRFUkFQVElWX01SMgkgIDB4MDQwMDAwMDAKQEAgLTIyMiw3ICsyMjIsNyBAQAogIAogIC8qIERTUCBBU0UgKi8KICAjZGVmaW5lIEFTRV9EU1AJCQkweDAwMDAwMDAxCi1AQCAtMTM2NSw2ICsxMzY3LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworQEAgLTEzNzMsNiArMTM3NSw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKICAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKICAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCiAgI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCkBAIC0yMzAsNyArMjMwLDcgQEAKICAKICAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gQ1BVIGlzIGluY2x1ZGVkIGluIElOU05fKiBtYXNrIE1BU0suICAqLwogIAotQEAgLTE0NDUsNiArMTQ0OCw5IEBAIGNwdV9pc19tZW1iZXIgKGludCBjcHUsIHVuc2lnbmVkIGludCBtYXNrKQorQEAgLTE0NTMsNiArMTQ1Niw5IEBAIGNwdV9pc19tZW1iZXIgKGludCBjcHUsIHVuc2lnbmVkIGludCBtYXNrKQogICAgICAgIHJldHVybiAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTMyUjYpCiAgCSAgICAgfHwgKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0E2NFI2KTsKICAKQEAgLTI0MSwxMCArMjQxLDEwIEBACiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CiBkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDFkNzg0NjU1OTAuLjMwN2U3ODdiNjQgMTAwNjQ0CitpbmRleCA3ZmIyMTY4NTAzLi5hMWRiN2FkZmUyIDEwMDY0NAogLS0tIGEvbGQvY29uZmlndXJlLnRndAogKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTUyMSw2ICs1MjEsOCBAQCBtaXBzKmVsLXNkZS1lbGYqIHwgbWlwcyplbC1tdGktZWxmKiB8IG1pcHMqZWwtaW1nLWVsZiopCitAQCAtNDUwLDYgKzQ1MCw4IEBAIG1pcHMqZWwtc2RlLWVsZiogfCBtaXBzKmVsLW10aS1lbGYqIHwgbWlwcyplbC1pbWctZWxmKikKICBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCiAgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCiAgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiIDs7CkBAIC0yNTQsMTAgKzI1NCwxMCBAQAogIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHI1OTAwIgogIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwogZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1kaXMuYyBiL29wY29kZXMvbWlwcy1kaXMuYwotaW5kZXggOTg0ZmNiYjgwMi4uOTViMTA3ZDIxNiAxMDA2NDQKK2luZGV4IGJiZjIxMzI4ZTguLjM4ZTQ4N2MxNmYgMTAwNjQ0CiAtLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKICsrKyBiL29wY29kZXMvbWlwcy1kaXMuYwotQEAgLTY1NSwxMyArNjU1LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQorQEAgLTY1NiwxMyArNjU2LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQogICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCiAgICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCiAgCkBAIC0yNzcsMTAgKzI3NywxMCBAQAogICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbwogICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KIGRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKLWluZGV4IDE4MGQ2MTNjOTMuLjY1YjdiOGNjMjMgMTAwNjQ0CitpbmRleCAxY2JjYmM2YWJjLi5lMWZiZGM4OWRlIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCiArKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKLUBAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKK0BAIC0zMjksNiArMzI5LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKICAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMwogICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgogICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgpAQCAtMjg4LDcgKzI4OCw3IEBACiAgI2RlZmluZSBJVklSVAlBU0VfVklSVAogICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0CiAgCi1AQCAtOTY2LDYgKzk2Nyw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC05NzQsNiArOTc1LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsiY2xvIiwJCQkiVSxzIiwJCTB4NzAwMDAwMjEsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKICB7ImNseiIsCQkJImQscyIsCQkweDAwMDAwMDUwLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTM3LAkJMCwJMCB9LAogIHsiY2x6IiwJCQkiVSxzIiwJCTB4NzAwMDAwMjAsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKQEAgLTI5Niw3ICsyOTYsNyBAQAogIC8qIGN0YzAgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwogIHsiY3RjMSIsCQkidCxHIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCiAgeyJjdGMxIiwJCSJ0LFMiLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLUBAIC05OTgsMTIgKzEwMDAsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTEwMDYsMTIgKzEwMDgsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIHsiZGFkZGl1IiwJCSJ0LHIsaiIsCTB4NjQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfMiwJCTAsCQlJMywJCTAsCTAgfSwKICB7ImRhZGR1IiwJCSJkLHYsdCIsCTB4MDAwMDAwMmQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUkzLAkJMCwJMCB9LAogIHsiZGFkZHUiLAkJInQscixJIiwJMCwgICAgKGludCkgTV9EQUREVV9JLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJMCB9LApAQCAtMzExLDcgKzMxMSw3IEBACiAgLyogZGN0ciBhbmQgZGN0dyBhcmUgdXNlZCBvbiB0aGUgcjUwMDAuICAqLwogIHsiZGN0ciIsCQkibyhiKSIsCSAJMHhiYzA1MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCiAgeyJkY3R3IiwJCSJvKGIpIiwJCTB4YmMwOTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotQEAgLTEwNzUsNiArMTA3OCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xMDgzLDYgKzEwODYsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKICB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKICB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCkBAIC0zMTksNyArMzE5LDcgQEAKICB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAogIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKICB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKLUBAIC0xMDkwLDYgKzEwOTQsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTA5OCw2ICsxMTAyLDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQogIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KICAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCiAgeyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKQEAgLTMyOCw3ICszMjgsNyBAQAogIHsiZG11bCIsCQkiZCxzLHQiLAkweDAwMDAwMDljLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJNjksCQkwLAkwIH0sCiAgeyJkbXVsIiwJCSJkLHYsdCIsCTB4NzAwMDAwMDMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0hJTE8sCTAsCQlJT0NULAkJMCwJMCB9LAogIHsiZG11bCIsCQkiZCx2LHQiLAkwLCAgICAoaW50KSBNX0RNVUwsCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAlNMzJ8STY5IH0sCi1AQCAtMTI0Myw5ICsxMjQ5LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTEyNTEsOSArMTI1Nyw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAogIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAogIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCkBAIC0zNDEsNyArMzQxLDcgQEAKICB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKICB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKICB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAotQEAgLTE0MTAsNyArMTQxNiw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KK0BAIC0xNDE4LDcgKzE0MjQsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgeyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCiAgeyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAogIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LApAQCAtMzUwLDcgKzM1MCw3IEBACiAgeyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAogIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAogIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCi1AQCAtMTQ1NSwxMCArMTQ2MSwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CitAQCAtMTQ2MywxMCArMTQ2OSwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CiAgLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCiAgeyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKICB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCkBAIC0zNjYsNyArMzY2LDcgQEAKICB7Im1zdWIuZCIsCQkiRCxSLFMsVCIsCTB4NGMwMDAwMjksIDB4ZmMwMDAwM2YsIFdSXzF8UkRfMnxSRF8zfFJEXzR8RlBfRCwgMCwJCUk0XzMzLAkJMCwJSTM3IH0sCiAgeyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg0NjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkUsCQkwLAkwIH0sCiAgeyJtc3ViLmQiLAkJIkQsUyxUIiwJMHg3MjIwMDAxOSwgMHhmZmUwMDAzZiwJV1JfMXxSRF8yfFJEXzN8RlBfRCwJMCwJCUlMMkYsCQkwLAkwIH0sCi1AQCAtMTUwOCw3ICsxNTE3LDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTE1MTYsNyArMTUyNSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKICB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCiAgeyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKQEAgLTM3NSw3ICszNzUsNyBAQAogIHsibXRtMCIsCQkicyIsCQkweDcwMDAwMDA4LCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAogIHsibXRtMCIsICAgIAkJInMsdCIsCQkweDcwMDAwMDA4LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJSU9DVDMsCQkwLAkwIH0sCiAgeyJtdG0xIiwJCSJzIiwJCTB4NzAwMDAwMGMsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCi1AQCAtMTk0NSw5ICsxOTU0LDkgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorQEAgLTE5NTMsOSArMTk2Miw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KICB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAogIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCiAgeyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCkBAIC0zODksNSArMzg5LDUgQEAKICB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCiAgeyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LAogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAppbmRleCBjM2UxYjEzLi5jOWZmZGFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI3ZWMyMmNhM2NkNTZjZmRmMDYwZDJlMWY0MTRiZWRjZTI2OWIzMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ0NTQ1NWRiMzVkYjU2OTNjNWVmZTBlMWIzODQyOTVlNGMwZGI5OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KIERhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKIFN1YmplY3Q6IFtQQVRDSCAxMy8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKQEAgLTExLDEwICsxMSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKLWluZGV4IGJiMTdmMjZjMmUuLmRiZGQ3NjJiNGUgMTAwNjQ0CitpbmRleCA0YTBmY2E1ZjBhLi40OWY3MmZjMzVjIDEwMDY0NAogLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKICsrKyBiL29wY29kZXMvcHBjLW9wYy5jCi1AQCAtNTMzOCw3ICs1MzM4LDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworQEAgLTUzNTEsNyArNTM1MSw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKICB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKICAKICB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCkBAIC0yMiw3ICsyMiw3IEBACiAgCiAgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCiAgCi1AQCAtNTM5Miw3ICs1MzkxLDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworQEAgLTU0MDUsNyArNTQwNCw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKICAKICB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAogIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LApAQCAtMzIsNSArMzIsNSBAQAogIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCiAgCiAtLSAKLTIuMTYuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCmluZGV4IGNmMzY5MGYuLjYxOTdkZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gN2RmYmQ2ODg5ZDg2OGEwOWQ2OTVkZDI3MzYxMDQ4NDhjMWE5YzljMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWFmOTBjZmMzNWZmMWZlNzg3NTU1Nzg4NjE0NzMwMzk4MzZjNDY3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMTQvMTVdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCkBAIC00Niw1ICs0Niw1IEBACiAgIHRhcmdfb2JqPW1pcHMKICAgdGFyZ19tYWNoaW5lPUVNX01JUFMKIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCmluZGV4IDhjOWZkMjMuLjdkYzhiYTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI5ODgwNGY0MzA5MzlkNmNjOTRiMDk3MzJlZTkzZTY0YzVlNmJlMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5ZTI2YmQyOWI1ZjAxN2VhMTMwN2I1MWI1MDM2MDYzYmZmNzg2MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKQEAgLTg1LDUgKzg1LDUgQEAKICAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogLS0gCi0yLjE2LjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LWFkZC1pMzg2cGVwLWVtdWxhdGlvbi1mb3IteDg2XzY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1hZGQtaTM4NnBlcC1lbXVsYXRpb24tZm9yLXg4Nl82NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjIwNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1hZGQtaTM4NnBlcC1lbXVsYXRpb24tZm9yLXg4Nl82NC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitiaW51dGlscyA6IGVuYWJsZSB4ODZfNjQtcGVwIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIG9uIHg4Ni02NAorCitBZGQgeDg2XzY0LXBlcCBlbXVsYXRpb24gc3VwcG9ydCB0byB0aGUgc2V0IGVuYWJsZWQgZm9yIHg4Nl82NCB0YXJnZXRzCit0byBlbmFibGUgdGhlIGxpbmtlciB0byBwcm9kdWNlIFBvcnRhYmxlIEV4ZWN1dGFibGVzIGZvciBFRkkgYmluYXJpZXMuCisKK0VuYWJsZXMgYnVpbGRpbmcgdGhlIHg4Ni02NCBFRkkgdmFyaWFudCBvZiB0aGUgWGVuIGh5cGVydmlzb3IgZm9yCit0aGUgT3BlblhUIFByb2plY3QuCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIENsYXJrIDxjaHJpc3RvcGhlci5jbGFyazZAYmFlc3lzdGVtcy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbiBzcGVjaWZpY10KKy0tLQorZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKK2luZGV4IGM4ODI0MjEuLmRjNzA1YjYgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlnLmJmZAorKysrIGIvYmZkL2NvbmZpZy5iZmQKK0BAIC02ODgsNyArNjg4LDcgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgOzsKKyAgIHg4Nl82NC0qLWxpbnV4LSopCisgICAgIHRhcmdfZGVmdmVjPXg4Nl82NF9lbGY2NF92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJpMzg2X2VsZjMyX3ZlYyBpYW1jdV9lbGYzMl92ZWMgeDg2XzY0X2VsZjMyX3ZlYyBpMzg2X3BlaV92ZWMgeDg2XzY0X3BlaV92ZWMgbDFvbV9lbGY2NF92ZWMgazFvbV9lbGY2NF92ZWMiCisrICAgIHRhcmdfc2VsdmVjcz0iaTM4Nl9lbGYzMl92ZWMgaWFtY3VfZWxmMzJfdmVjIHg4Nl82NF9lbGYzMl92ZWMgaTM4Nl9wZWlfdmVjIHg4Nl82NF9wZWlfdmVjIGwxb21fZWxmNjRfdmVjIGsxb21fZWxmNjRfdmVjIHg4Nl82NF9wZV92ZWMgeDg2XzY0X3BlX2JlX3ZlYyBpMzg2X3BlX3ZlYyIKKyAgICAgd2FudDY0PXRydWUKKyAgICAgOzsKKyAgIHg4Nl82NC0qLW5hY2wqKQorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0CitpbmRleCBhMWRiN2FkLi42NWE5ODRhIDEwMDY0NAorLS0tIGEvbGQvY29uZmlndXJlLnRndAorKysrIGIvbGQvY29uZmlndXJlLnRndAorQEAgLTI1Myw4ICsyNTMsOSBAQCB4ODZfNjQtKi1saW51eC1nbnV4MzIpCXRhcmdfZW11bD1lbGYzMl94ODZfNjQKKyAJCQl0ZGlyX2VsZl9pYW1jdT1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgCisgCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LycgLWUgJ3MvLWxpbnV4LWdudXgzMi8tbGludXgtZ251LydgIDs7CisgeDg2XzY0LSotbGludXgtKikJdGFyZ19lbXVsPWVsZl94ODZfNjQKKy0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMl94ODZfNjQgZWxmX2kzODYgZWxmX2lhbWN1IGVsZl9sMW9tIGVsZl9rMW9tIgorLQkJCXRhcmdfZXh0cmFfbGlicGF0aD0iZWxmX2kzODYgZWxmMzJfeDg2XzY0IGVsZl9sMW9tIGVsZl9rMW9tIgorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyX3g4Nl82NCBlbGZfaTM4NiBlbGZfaWFtY3UgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlIGkzODZwZXAiCisrCQkJdGFyZ19leHRyYV9saWJwYXRoPSJlbGZfaTM4NiBlbGYzMl94ODZfNjQgZWxmX2wxb20gZWxmX2sxb20gaTM4NnBlcCIKKysJCQl0YXJnX2V4dHJhX29maWxlcz0iZGVmZmlsZXAubyBwZXAtZGxsLm8gcGUtZGxsLm8iCisgCQkJdGRpcl9lbGZfaTM4Nj1gZWNobyAke3RhcmdfYWxpYXN9IHwgc2VkIC1lICdzL3g4Nl82NC9pMzg2LydgIDs7CisgaVszLTddODYtKi1yZWRveCopCXRhcmdfZW11bD1lbGZfaTM4NgorIAkJCXRhcmdfZXh0cmFfZW11bHM9ZWxmX3g4Nl82NCA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1pbXByb3ZlLWNoZWNrLWZvci1pbnB1dC1maWxlLW1hdGNoaW5nLW91dHB1dC1maWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1pbXByb3ZlLWNoZWNrLWZvci1pbnB1dC1maWxlLW1hdGNoaW5nLW91dHB1dC1maWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NWU1MjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWltcHJvdmUtY2hlY2stZm9yLWlucHV0LWZpbGUtbWF0Y2hpbmctb3V0cHV0LWZpbGUucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSAyYTUwMzY2ZGVkMzI5YmZiMzlkMzg3MjUzNDUwYzlkNTMwMmMzNTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE0IEF1ZyAyMDE4IDEyOjIyOjM1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFzLmM6IEltcHJvdmUgY2hlY2sgZm9yIGlucHV0IGZpbGUgbWF0Y2hpbmcgb3V0cHV0IGZpbGUuCisKK1doZW4gdGhlIGFzc2VtYmxlciByZXBvcnRzIHRoYXQgdGhlIGlucHV0IGFuZCBvdXRwdXQgYXJlIHRoZSBzYW1lLCByZXBvcnQgdGhlCitmaWxlIG5hbWVzIGludm9sdmVkLCBpbiBvcmRlciB0byBoZWxwIGRlYnVnZ2luZy4gIEFsc28gZG8gbm90IGVxdWF0ZSB0d28gZmlsZXMKK2FyZSB0aGUgc2FtZSBpZiB0aGUgaGF2ZSB0aGUgc2FtZSBpbm9kZSB2YWx1ZSBidXQgcmVzaWRlIG9uIGRpZmZlcmVudCBmaWxlCitzeXN0ZW1zLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgZ2FzL2FzLmMgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dhcy9hcy5jIGIvZ2FzL2FzLmMKK2luZGV4IGIyYTkwOGEuLjMxMDVkMDYgMTAwNjQ0CistLS0gYS9nYXMvYXMuYworKysrIGIvZ2FzL2FzLmMKK0BAIC0xMjU5LDE0ICsxMjU5LDI3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCisgCXsKKyAJICBzdHJ1Y3Qgc3RhdCBzaWI7CisgCistCSAgaWYgKHN0YXQgKGFyZ3ZbaV0sICZzaWIpID09IDApCisrCSAgLyogQ2hlY2sgdGhhdCB0aGUgaW5wdXQgZmlsZSBhbmQgb3V0cHV0IGZpbGUgYXJlIGRpZmZlcmVudC4gICovCisrCSAgaWYgKHN0YXQgKGFyZ3ZbaV0sICZzaWIpID09IDAKKysJICAgICAgJiYgc2liLnN0X2lubyA9PSBzb2Iuc3RfaW5vCisrCSAgICAgIC8qIFBPU0lYIGVtdWxhdGluZyBzeXN0ZW1zIG1heSBzdXBwb3J0IHN0YXQoKSBidXQgaWYgdGhlCisrCQkgdW5kZXJseWluZyBmaWxlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGEgZmlsZSBzZXJpYWwgbnVtYmVyCisrCQkgb2Ygc29tZSBraW5kIHRoZW4gdGhleSB3aWxsIHJldHVybiAwIGZvciB0aGUgaW5vZGUuICBTbworKwkJIHR3byBmaWxlcyB3aXRoIGFuIGlub2RlIG9mIDAgbWF5IG5vdCBhY3R1YWxseSBiZSB0aGUgc2FtZS4KKysJCSBPbiByZWFsIFBPU0lYIHN5c3RlbXMgbm8gb3JkaW5hcnkgZmlsZSB3aWxsIGV2ZXIgaGF2ZSBhbgorKwkJIGlub2RlIG9mIDAuICAqLworKwkgICAgICAmJiBzaWIuc3RfaW5vICE9IDAKKysJICAgICAgLyogRGlmZmVyZW50IGZpbGVzIG1heSBoYXZlIHRoZSBzYW1lIGlub2RlIG51bWJlciBpZiB0aGV5CisrCQkgcmVzaWRlIG9uIGRpZmZlcmVudCBkZXZpY2VzLCBzbyBjaGVjayB0aGUgc3RfZGV2IGZpZWxkIGFzCisrCQkgd2VsbC4gICovCisrCSAgICAgICYmIHNpYi5zdF9kZXYgPT0gc29iLnN0X2RldikKKyAJICAgIHsKKy0JICAgICAgaWYgKHNpYi5zdF9pbm8gPT0gc29iLnN0X2lubyAmJiBzaWIuc3RfaW5vICE9IDApCistCQl7CistCQkgIC8qIERvbid0IGxldCBhc19mYXRhbCByZW1vdmUgdGhlIG91dHB1dCBmaWxlISAgKi8KKy0JCSAgb3V0X2ZpbGVfbmFtZSA9IE5VTEw7CistCQkgIGFzX2ZhdGFsIChfKCJUaGUgaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBtdXN0IGJlIGRpc3RpbmN0IikpOworLQkJfQorKwkgICAgICBjb25zdCBjaGFyICpzYXZlZF9vdXRfZmlsZV9uYW1lID0gb3V0X2ZpbGVfbmFtZTsKKysKKysJICAgICAgLyogRG9uJ3QgbGV0IGFzX2ZhdGFsIHJlbW92ZSB0aGUgb3V0cHV0IGZpbGUhICAqLworKwkgICAgICBvdXRfZmlsZV9uYW1lID0gTlVMTDsKKysJICAgICAgYXNfZmF0YWwgKF8oIlRoZSBpbnB1dCAnJXMnIGFuZCBvdXRwdXQgJyVzJyBmaWxlcyBhcmUgdGhlIHNhbWUiKSwKKysJCQlhcmd2W2ldLCBzYXZlZF9vdXRfZmlsZV9uYW1lKTsKKyAJICAgIH0KKyAJfQorICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUmVmYWN0b3JlZC1sb2NhdGlvbi13aGVyZS1HT1QtaW5mb3JtYXRpb24taXMtY29sbGVjdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUmVmYWN0b3JlZC1sb2NhdGlvbi13aGVyZS1HT1QtaW5mb3JtYXRpb24taXMtY29sbGVjdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDEzMzlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1SZWZhY3RvcmVkLWxvY2F0aW9uLXdoZXJlLUdPVC1pbmZvcm1hdGlvbi1pcy1jb2xsZWN0LnBhdGNoCkBAIC0wLDAgKzEsMjAxIEBACitGcm9tIGQ5MzBhZmZhMmQ0NzVkMWNjNjc5MmYxZTZkNTZiZWYzZDZjNjE3ZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE3OjE2OjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlZmFjdG9yZWQgbG9jYXRpb24gd2hlcmUgR09UIGluZm9ybWF0aW9uIGlzIGNvbGxlY3RlZC4KKworQ2hhbmdlIGxvY2F0aW9uIHdoZXJlIEdPVCBpbmZvcm1hdGlvbiBpcyBjb2xsZWN0ZWQgZm9yIEFSQyB0YXJnZXQsIGF2b2lkaW5nCitwb3NpYmxlIHVzZSBjb25mbGljdHMgb2YgdGhlIHByZXZpb3VzIC5nb3QgZmllbGQgaW4gdGhlIHN5bWJvbHMgaGFzaF9lbnRyeS4KKworYmZkLworMjAxOC0wMy0wMSAgQ3VwZXJ0aW5vIE1pcmFuZGEgIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CisKKwkqIGFyYy1nb3QuaCAoZ2V0X2dvdF9lbnRyeV9saXN0X2Zvcl9zeW1ib2wpOiBDaGFuZ2VkLgorCSogZWYzMi1hcmMuYyAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5KTogTW92ZWQgYW5kIGNoYW5nZWQuCisJKGVsZl9hcmNfbGlua19oYXNoX25ld2Z1bmMpOiBDaGFuZ2VkLgorCShhcmNfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBSZW1vdmVkIG9sZCBpbml0aWFsaXphdGlvbnMuCisJKGVsZl9hcmNfcmVsb2NhdGVfc2VjdGlvbiwgZWxmX2FyY19maW5pc2hfZHluYW1pY19zeW1ib2wpOiBDaGFuZ2VkLgorCitTaWduZWQtb2ZmLWJ5OiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KK1tSb21haW46IHJlYmFzZSBvbiB0b3Agb2YgMi4zMV0KK1NpZ25lZC1vZmYtYnk6IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBiZmQvYXJjLWdvdC5oICAgfCAgNiArKystLQorIGJmZC9lbGYzMi1hcmMuYyB8IDc3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvYXJjLWdvdC5oIGIvYmZkL2FyYy1nb3QuaAoraW5kZXggYTg2MDYxYmNiMzguLjgxY2U4OGZlMjFhIDEwMDY0NAorLS0tIGEvYmZkL2FyYy1nb3QuaAorKysrIGIvYmZkL2FyYy1nb3QuaAorQEAgLTE1Niw5ICsxNTYsMTEgQEAgZ2V0X2dvdF9lbnRyeV9saXN0X2Zvcl9zeW1ib2wgKGJmZCAqYWJmZCwKKyAJCQkgICAgICAgdW5zaWduZWQgbG9uZyByX3N5bW5keCwKKyAJCQkgICAgICAgc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKmgpCisgeworLSAgaWYgKGggIT0gTlVMTCkKKysgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqaDEgPQorKyAgICAoKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqKSBoKTsKKysgIGlmIChoMSAhPSBOVUxMKQorICAgICB7CistICAgICAgcmV0dXJuICZoLT5nb3QuZ2xpc3Q7CisrICAgICAgcmV0dXJuICZoMS0+Z290X2VudHM7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcmMuYyBiL2JmZC9lbGYzMi1hcmMuYworaW5kZXggYTQ4ZWYwY2ExNWYuLmFiODRkZTQzODE1IDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWFyYy5jCisrKysgYi9iZmQvZWxmMzItYXJjLmMKK0BAIC0xNjAsNiArMTYwLDE4IEBAIHN0cnVjdCBhcmNfcmVsb2NhdGlvbl9kYXRhCisgICBjb25zdCBjaGFyICogICAgc3ltYm9sX25hbWU7CisgfTsKKyAKKysvKiBBUkMgRUxGIGxpbmtlciBoYXNoIGVudHJ5LiAgKi8KKytzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkKKyt7CisrICBzdHJ1Y3QgZWxmX2xpbmtfaGFzaF9lbnRyeSByb290OworKworKyAgLyogVHJhY2sgZHluYW1pYyByZWxvY3MgY29waWVkIGZvciB0aGlzIHN5bWJvbC4gICovCisrICBzdHJ1Y3QgZWxmX2R5bl9yZWxvY3MgKmR5bl9yZWxvY3M7CisrCisrICBzdHJ1Y3QgZ290X2VudHJ5ICpnb3RfZW50czsKKyt9OworKworKworIC8qIFNob3VsZCBiZSBpbmNsdWRlZCBhdCB0aGlzIGxvY2F0aW9uIGR1ZSB0byBzdGF0aWMgZGVjbGFyYXRpb25zCisgICAgZGVmaW5lZCBiZWZvcmUgdGhpcyBwb2ludC4gICovCisgI2luY2x1ZGUgImFyYy1nb3QuaCIKK0BAIC0yODEsMTUgKzI5Myw2IEBAIHN0cnVjdCBhcmNfcmVsb2NfbWFwCisgICB1bnNpZ25lZCBjaGFyCQkgICAgZWxmX3JlbG9jX3ZhbDsKKyB9OworIAorLS8qIEFSQyBFTEYgbGlua2VyIGhhc2ggZW50cnkuICAqLworLXN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeQorLXsKKy0gIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5IHJvb3Q7CistCistICAvKiBUcmFjayBkeW5hbWljIHJlbG9jcyBjb3BpZWQgZm9yIHRoaXMgc3ltYm9sLiAgKi8KKy0gIHN0cnVjdCBlbGZfZHluX3JlbG9jcyAqZHluX3JlbG9jczsKKy19OworLQorIC8qIEFSQyBFTEYgbGlua2VyIGhhc2ggdGFibGUuICAqLworIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF90YWJsZQorIHsKK0BAIC0zMDEsMjggKzMwNCwyOCBAQCBlbGZfYXJjX2xpbmtfaGFzaF9uZXdmdW5jIChzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKmVudHJ5LAorIAkJCSAgIHN0cnVjdCBiZmRfaGFzaF90YWJsZSAqdGFibGUsCisgCQkJICAgY29uc3QgY2hhciAqc3RyaW5nKQorIHsKKysgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqIHJldCA9CisrICAgIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikgZW50cnk7CisrCisgICAvKiBBbGxvY2F0ZSB0aGUgc3RydWN0dXJlIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBieSBhCisgICAgICBzdWJjbGFzcy4gICovCistICBpZiAoZW50cnkgPT0gTlVMTCkKKy0gICAgeworLSAgICAgIGVudHJ5ID0gKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKQorLQkgIGJmZF9oYXNoX2FsbG9jYXRlICh0YWJsZSwKKy0JCQkgICAgIHNpemVvZiAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5KSk7CistICAgICAgaWYgKGVudHJ5ID09IE5VTEwpCistCXJldHVybiBlbnRyeTsKKy0gICAgfQorKyAgaWYgKHJldCA9PSBOVUxMKQorKyAgICByZXQgPSAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopCisrCWJmZF9oYXNoX2FsbG9jYXRlICh0YWJsZSwgc2l6ZW9mIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkpKTsKKysgIGlmIChyZXQgPT0gTlVMTCkKKysgICAgcmV0dXJuIChzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKikgcmV0OworIAorICAgLyogQ2FsbCB0aGUgYWxsb2NhdGlvbiBtZXRob2Qgb2YgdGhlIHN1cGVyY2xhc3MuICAqLworLSAgZW50cnkgPSBfYmZkX2VsZl9saW5rX2hhc2hfbmV3ZnVuYyAoZW50cnksIHRhYmxlLCBzdHJpbmcpOworLSAgaWYgKGVudHJ5ICE9IE5VTEwpCisrICByZXQgPSAoKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqKQorKwkgX2JmZF9lbGZfbGlua19oYXNoX25ld2Z1bmMgKChzdHJ1Y3QgYmZkX2hhc2hfZW50cnkgKikgcmV0LAorKwkJCQkgICAgIHRhYmxlLCBzdHJpbmcpKTsKKysgIGlmIChyZXQgIT0gTlVMTCkKKyAgICAgeworLSAgICAgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqZWg7CistCistICAgICAgZWggPSAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopIGVudHJ5OworLSAgICAgIGVoLT5keW5fcmVsb2NzID0gTlVMTDsKKysgICAgICByZXQtPmR5bl9yZWxvY3MgPSBOVUxMOworKyAgICAgIHJldC0+Z290X2VudHMgPSBOVUxMOworICAgICB9CisgCistICByZXR1cm4gZW50cnk7CisrICByZXR1cm4gKHN0cnVjdCBiZmRfaGFzaF9lbnRyeSAqKSByZXQ7CisgfQorIAorIC8qIERlc3Ryb3kgYW4gQVJDIEVMRiBsaW5rZXIgaGFzaCB0YWJsZS4gICovCitAQCAtMzUyLDExICszNTUsNiBAQCBhcmNfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUgKGJmZCAqYWJmZCkKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorLSAgcmV0LT5lbGYuaW5pdF9nb3RfcmVmY291bnQucmVmY291bnQgPSAwOworLSAgcmV0LT5lbGYuaW5pdF9nb3RfcmVmY291bnQuZ2xpc3QgPSBOVUxMOworLSAgcmV0LT5lbGYuaW5pdF9nb3Rfb2Zmc2V0Lm9mZnNldCA9IDA7CistICByZXQtPmVsZi5pbml0X2dvdF9vZmZzZXQuZ2xpc3QgPSBOVUxMOworLQorICAgcmV0LT5lbGYucm9vdC5oYXNoX3RhYmxlX2ZyZWUgPSBlbGZfYXJjX2xpbmtfaGFzaF90YWJsZV9mcmVlOworIAorICAgcmV0dXJuICZyZXQtPmVsZi5yb290OworQEAgLTE2MTUsMTAgKzE2MTMsMTQgQEAgZWxmX2FyY19yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKgkJCSAgb3V0cHV0X2JmZCwKKyAJICB3aGlsZSAoaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfaW5kaXJlY3QKKyAJCSB8fCBoLT5yb290LnR5cGUgPT0gYmZkX2xpbmtfaGFzaF93YXJuaW5nKQorIAkgIHsKKy0JICAgIHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICpoX29sZCA9IGg7CisrCSAgICBzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKmFoX29sZCA9CisrCSAgICAgIChzdHJ1Y3QgZWxmX2FyY19saW5rX2hhc2hfZW50cnkgKikgaDsKKyAJICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKKy0JICAgIGlmIChoLT5nb3QuZ2xpc3QgPT0gMCAmJiBoX29sZC0+Z290LmdsaXN0ICE9IGgtPmdvdC5nbGlzdCkKKy0JICAgICAgaC0+Z290LmdsaXN0ID0gaF9vbGQtPmdvdC5nbGlzdDsKKysJICAgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqYWggPQorKwkgICAgICAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopIGg7CisrCisrCSAgICBpZiAoYWgtPmdvdF9lbnRzID09IDAgJiYgYWhfb2xkLT5nb3RfZW50cyAhPSBhaC0+Z290X2VudHMpCisrCSAgICAgIGFoLT5nb3RfZW50cyA9IGFoX29sZC0+Z290X2VudHM7CisgCSAgfQorIAorIAkgIC8qIFRPRE86IE5lZWQgdG8gdmFsaWRhdGUgd2hhdCB3YXMgdGhlIGludGVudGlvbi4gICovCitAQCAtMTYzNiw2ICsxNjM4LDggQEAgZWxmX2FyY19yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKgkJCSAgb3V0cHV0X2JmZCwKKyAKKyAJICAgICAgaWYgKGlzX3JlbG9jX2Zvcl9HT1QgKGhvd3RvKSAmJiAhYmZkX2xpbmtfcGljIChpbmZvKSkKKyAJCXsKKysJCSAgc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICphaCA9CisrCQkgICAgKHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqKSBoOworIAkJICAvKiBUT0RPOiBDaGFuZ2UgaXQgdG8gdXNlIGFyY19kb19yZWxvY2F0aW9uIHdpdGgKKyAJCSAgICBBUkNfMzIgcmVsb2MuICBUcnkgdG8gdXNlIEFERF9SRUxBIG1hY3JvLiAgKi8KKyAJCSAgYmZkX3ZtYSByZWxvY2F0aW9uID0KK0BAIC0xNjQ1LDggKzE2NDksOCBAQCBlbGZfYXJjX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqCQkJICBvdXRwdXRfYmZkLAorIAkJCSArIHJlbG9jX2RhdGEuc3ltX3NlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT52bWEpCisgCQkgICAgICA6IDApOworIAorLQkJICBCRkRfQVNTRVJUIChoLT5nb3QuZ2xpc3QpOworLQkJICBiZmRfdm1hIGdvdF9vZmZzZXQgPSBoLT5nb3QuZ2xpc3QtPm9mZnNldDsKKysJCSAgQkZEX0FTU0VSVCAoYWgtPmdvdF9lbnRzKTsKKysJCSAgYmZkX3ZtYSBnb3Rfb2Zmc2V0ID0gYWgtPmdvdF9lbnRzLT5vZmZzZXQ7CisgCQkgIGJmZF9wdXRfMzIgKG91dHB1dF9iZmQsIHJlbG9jYXRpb24sCisgCQkJICAgICAgaHRhYi0+c2dvdC0+Y29udGVudHMgKyBnb3Rfb2Zmc2V0KTsKKyAJCX0KK0BAIC0xOTU4LDYgKzE5NjIsNyBAQCBlbGZfYXJjX2NoZWNrX3JlbG9jcyAoYmZkICoJCQkgYWJmZCwKKyAgICAgICBlbHNlIC8qIEdsb2JhbCBvbmUuICAqLworIAloID0gc3ltX2hhc2hlc1tyX3N5bW5keCAtIHN5bXRhYl9oZHItPnNoX2luZm9dOworIAorKworICAgICAgIHN3aXRjaCAocl90eXBlKQorIAl7CisgCSAgY2FzZSBSX0FSQ18zMjoKK0BAIC0yNDA0LDcgKzI0MDksOSBAQCBlbGZfYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCAoYmZkICogb3V0cHV0X2JmZCwKKyAgICAgIGNyZWF0ZSByZXNwZWN0aXZlIGR5bmFtaWMgcmVsb2NzLiAgKi8KKyAgIC8qIFRPRE86IE1ha2UgZnVuY3Rpb24gdG8gZ2V0IGxpc3QgYW5kIG5vdCBhY2Nlc3MgdGhlIGxpc3QgZGlyZWN0bHkuICAqLworICAgLyogVE9ETzogTW92ZSBmdW5jdGlvbiB0byByZWxvY2F0ZV9zZWN0aW9uIGNyZWF0ZSB0aGlzIHJlbG9jcyBlYWdlcmx5LiAgKi8KKy0gIGNyZWF0ZV9nb3RfZHlucmVsb2NzX2Zvcl9nb3RfaW5mbyAoJmgtPmdvdC5nbGlzdCwKKysgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF9lbnRyeSAqYWggPQorKyAgICAoc3RydWN0IGVsZl9hcmNfbGlua19oYXNoX2VudHJ5ICopIGg7CisrICBjcmVhdGVfZ290X2R5bnJlbG9jc19mb3JfZ290X2luZm8gKCZhaC0+Z290X2VudHMsCisgCQkJCSAgICAgb3V0cHV0X2JmZCwKKyAJCQkJICAgICBpbmZvLAorIAkJCQkgICAgIGgpOworLS0gCisyLjE0LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOS1JbXByb3ZlZC1yb2J1c3RuZXNzLi1SZXR1cm4tRkFMU0UtaW4tY2FzZS1vZi1OVUxMLXBvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOS1JbXByb3ZlZC1yb2J1c3RuZXNzLi1SZXR1cm4tRkFMU0UtaW4tY2FzZS1vZi1OVUxMLXBvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNThlZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE5LUltcHJvdmVkLXJvYnVzdG5lc3MuLVJldHVybi1GQUxTRS1pbi1jYXNlLW9mLU5VTEwtcG8ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA5NTUxNzZiZDk5OWZlODBjNWI5MzdhYjg3ODY2NjUwNzllMzVjMzg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ3VwZXJ0aW5vIE1pcmFuZGEgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KK0RhdGU6IEZyaSwgMiBNYXIgMjAxOCAxNzozMzo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSBJbXByb3ZlZCByb2J1c3RuZXNzLiBSZXR1cm4gRkFMU0UgaW4gY2FzZSBvZiBOVUxMIHBvaW50ZXIuCisKK2JmZC8KKzIwMTgtMDMtMDEgIEN1cGVydGlubyBNaXJhbmRhIDxjbWlyYW5kYUBzeW5vcHN5cy5jb20+CisKKwkqIGVsZjMyLWFyYy5jIChlbGZfYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCkgUmV0dXJuIEZBTFNFIGluIGNhc2UKKwlhcmNfaHRhYiBpcyBOVUxMLgorCitTaWduZWQtb2ZmLWJ5OiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KK1tSb21haW46IHJlYmFzZSBvbiB0b3Agb2YgMi4zMV0KK1NpZ25lZC1vZmYtYnk6IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBiZmQvZWxmMzItYXJjLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcmMuYyBiL2JmZC9lbGYzMi1hcmMuYworaW5kZXggYWI4NGRlNDM4MTUuLjMzZmM3MmNmZjZlIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWFyYy5jCisrKysgYi9iZmQvZWxmMzItYXJjLmMKK0BAIC0yNDIwLDYgKzI0MjAsOSBAQCBlbGZfYXJjX2ZpbmlzaF9keW5hbWljX3N5bWJvbCAoYmZkICogb3V0cHV0X2JmZCwKKyAgICAgeworICAgICAgIHN0cnVjdCBlbGZfYXJjX2xpbmtfaGFzaF90YWJsZSAqYXJjX2h0YWIgPSBlbGZfYXJjX2hhc2hfdGFibGUgKGluZm8pOworIAorKyAgICAgIGlmKGFyY19odGFiID09IE5VTEwpCisrCXJldHVybiBGQUxTRTsKKysKKyAgICAgICBpZiAoaC0+ZHluaW5keCA9PSAtMQorIAkgIHx8IChoLT5yb290LnR5cGUgIT0gYmZkX2xpbmtfaGFzaF9kZWZpbmVkCisgCSAgICAgICYmIGgtPnJvb3QudHlwZSAhPSBiZmRfbGlua19oYXNoX2RlZndlYWspCistLSAKKzIuMTQuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDIwLU1ha2Utc3VyZS1nbG9iYWwtc3ltYm9sLWlzLW5vdC1hbi1pbmRpcmVjdC1vci13YXJuaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDIwLU1ha2Utc3VyZS1nbG9iYWwtc3ltYm9sLWlzLW5vdC1hbi1pbmRpcmVjdC1vci13YXJuaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFlNDJjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMjAtTWFrZS1zdXJlLWdsb2JhbC1zeW1ib2wtaXMtbm90LWFuLWluZGlyZWN0LW9yLXdhcm5pbi5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDlkMDljZTE0YjRlZWYyYjU2ZjI0NjYwZmQ2OWE0NGFjZDQ1MTI4YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDE3OjM4OjE0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2Ugc3VyZSBnbG9iYWwgc3ltYm9sIGlzIG5vdCBhbiBpbmRpcmVjdCBvciB3YXJuaW5nLgorCitQcm9ibGVtIGlkZW50aWZpZWQgaW4gdGhlIGNvbnRleHQgb2YgZ2xpYmMgd2l0aCBsYXRlc3QgdXBzdHJlYW0gYmludXRpbHMuCitEeW5hbWljIHN5bWJvbCBzcGFjZSB3YXMgYmVpbmcgcmVzZXJ2ZWQgYnV0LCBubyBhY3R1YWwgaW5mb3JtYXRpb24gZm9yIHRoZQorc3ltYm9sIHdhcyBiZWluZyBzZXQuIERhdGEgZm9yIHRoZSBzeW1ib2wgd2FzIGtlcHQgaW5pdGlhbGl6ZWQgd2l0aCAtMS4KK05vIGVhc3kgdGVzdCBjYXNlIHdhcyBwb3NzaWJsZSB0byBiZSBjcmVhdGVkLgorCitiZmQvCisyMDE4LTAzLTAxICBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorCisJKiBlbGYzMi1hcmMuYyAoZWxmX2FyY19jaGVja19yZWxvY3MpOiBDaGFuZ2VkLgorCitTaWduZWQtb2ZmLWJ5OiBDdXBlcnRpbm8gTWlyYW5kYSA8Y21pcmFuZGFAc3lub3BzeXMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KK1tSb21haW46IHJlYmFzZSBvbiB0b3Agb2YgMi4zMV0KK1NpZ25lZC1vZmYtYnk6IFJvbWFpbiBOYW91ciA8cm9tYWluLm5hb3VyQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBiZmQvZWxmMzItYXJjLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvZWxmMzItYXJjLmMgYi9iZmQvZWxmMzItYXJjLmMKK2luZGV4IDMzZmM3MmNmZjZlLi45YjcyYzViNGY0ZiAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1hcmMuYworKysrIGIvYmZkL2VsZjMyLWFyYy5jCitAQCAtMTk2MCw3ICsxOTYwLDEyIEBAIGVsZl9hcmNfY2hlY2tfcmVsb2NzIChiZmQgKgkJCSBhYmZkLAorICAgICAgIGlmIChyX3N5bW5keCA8IHN5bXRhYl9oZHItPnNoX2luZm8pIC8qIElzIGEgbG9jYWwgc3ltYm9sLiAgKi8KKyAJaCA9IE5VTEw7CisgICAgICAgZWxzZSAvKiBHbG9iYWwgb25lLiAgKi8KKy0JaCA9IHN5bV9oYXNoZXNbcl9zeW1uZHggLSBzeW10YWJfaGRyLT5zaF9pbmZvXTsKKysJeworKwkgIGggPSBzeW1faGFzaGVzW3Jfc3ltbmR4IC0gc3ltdGFiX2hkci0+c2hfaW5mb107CisrCSAgd2hpbGUgKGgtPnJvb3QudHlwZSA9PSBiZmRfbGlua19oYXNoX2luZGlyZWN0CisrCQkgfHwgaC0+cm9vdC50eXBlID09IGJmZF9saW5rX2hhc2hfd2FybmluZykKKysJICAgIGggPSAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkgKikgaC0+cm9vdC51LmkubGluazsKKysJfQorIAorIAorICAgICAgIHN3aXRjaCAocl90eXBlKQorLS0gCisyLjE0LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAyMS1QTFQtaW5mb3JtYXRpb24td2FzLXN0aWxsLWJlaW5nLWdlbmVyYXRlZC13aGVuLXN5bWJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAyMS1QTFQtaW5mb3JtYXRpb24td2FzLXN0aWxsLWJlaW5nLWdlbmVyYXRlZC13aGVuLXN5bWJvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllOTQyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDIxLVBMVC1pbmZvcm1hdGlvbi13YXMtc3RpbGwtYmVpbmctZ2VuZXJhdGVkLXdoZW4tc3ltYm8ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBlNDg2MWM2ODA2N2NiMjE2NmI0YzJiYjljMDUyYWJlYjZhZDlhYWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ3VwZXJ0aW5vIE1pcmFuZGEgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KK0RhdGU6IEZyaSwgMiBNYXIgMjAxOCAxNzo0NDoyOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBQTFQgaW5mb3JtYXRpb24gd2FzIHN0aWxsIGJlaW5nIGdlbmVyYXRlZCB3aGVuIHN5bWJvbCB3YXMKKyBmb3JjZWRfbG9jYWwuCisKK0EgY2hhbmdlIHVwc3RyZWFtIHJldmVpbGVkIHRoaXMgaXNzdWUsIHRyaWdnZXJpbmcgYW4gYXNzZXJ0IHdoZW4gbGlua2luZyBnbGliYy4KKworYmZkLworMjAxOC0wMy0wMSAgQ3VwZXJ0aW5vIE1pcmFuZGEgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KKworCSogZWxmMzItYXJjLmMgKGVsZl9hcmNfY2hlY2tfcmVsb2NzKTogQ2hhbmdlZC4KKworU2lnbmVkLW9mZi1ieTogQ3VwZXJ0aW5vIE1pcmFuZGEgPGNtaXJhbmRhQHN5bm9wc3lzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CitbUm9tYWluOiByZWJhc2Ugb24gdG9wIG9mIDIuMzFdCitTaWduZWQtb2ZmLWJ5OiBSb21haW4gTmFvdXIgPHJvbWFpbi5uYW91ckBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgYmZkL2VsZjMyLWFyYy5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvZWxmMzItYXJjLmMgYi9iZmQvZWxmMzItYXJjLmMKK2luZGV4IDliNzJjNWI0ZjRmLi5iNDBiNDYzZDM0ZCAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1hcmMuYworKysrIGIvYmZkL2VsZjMyLWFyYy5jCitAQCAtMjA0MSw3ICsyMDQxLDggQEAgZWxmX2FyY19jaGVja19yZWxvY3MgKGJmZCAqCQkJIGFiZmQsCisgCSAgaWYgKGggPT0gTlVMTCkKKyAJICAgIGNvbnRpbnVlOworIAkgIGVsc2UKKy0JICAgIGgtPm5lZWRzX3BsdCA9IDE7CisrCSAgICBpZihoLT5mb3JjZWRfbG9jYWwgPT0gMCkKKysJICAgICAgaC0+bmVlZHNfcGx0ID0gMTsKKyAJfQorIAorICAgICAgIC8qIEFkZCBpbmZvIHRvIHRoZSBzeW1ib2wgZ290X2VudHJ5X2xpc3QuICAqLworLS0gCisyLjE0LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTAzNzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDM3Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUzZTlkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDM3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLUZyb20gNmFlYTA4ZDlmM2UzZDY0NzVhNjU0NTRkYTQ4OGEwYzUxZjVkYzk3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTcgQXByIDIwMTggMTI6MzU6NTUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGlsbGVnYWwgbWVtb3J5IGFjY2VzcyB3aGVuIHBhcnNpbmcgY29ycnVwdCBEV0FSRgotIGluZm9ybWF0aW9uLgotCi0JUFIgMjMwNjQKLQkqIGR3YXJmLmMgKHByb2Nlc3NfY3VfdHVfaW5kZXgpOiBUZXN0IGZvciBhIHBvdGVudGlhbCBidWZmZXIKLQlvdmVycnVuIGJlZm9yZSBjb3B5aW5nIHNpZ25hdHVyZSBwb2ludGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTEwMzcyCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvZHdhcmYuYyAgIHwgMTMgKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL2R3YXJmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9kd2FyZi5jCi0rKysgZ2l0L2JpbnV0aWxzL2R3YXJmLmMKLUBAIC05MjUyLDcgKzkyNTIsMTggQEAgcHJvY2Vzc19jdV90dV9pbmRleCAoc3RydWN0IGR3YXJmX3NlY3RpbwotIAkJfQotIAotIAkgICAgICBpZiAoIWRvX2Rpc3BsYXkpCi0tCQltZW1jcHkgKCZ0aGlzX3NldFtyb3cgLSAxXS5zaWduYXR1cmUsIHBoLCBzaXplb2YgKHVpbnQ2NF90KSk7Ci0rCQl7Ci0rCQkgIHNpemVfdCBudW1fY29weSA9IHNpemVvZiAodWludDY0X3QpOwotKwotKwkJICAvKiBQUiAyMzA2NDogQmV3YXJlIG9mIGJ1ZmZlciBvdmVyZmxvdy4gICovCi0rCQkgIGlmIChwaCArIG51bV9jb3B5IDwgbGltaXQpCi0rCQkgICAgbWVtY3B5ICgmdGhpc19zZXRbcm93IC0gMV0uc2lnbmF0dXJlLCBwaCwgbnVtX2NvcHkpOwotKwkJICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgd2FybiAoXygiU2lnbmF0dXJlICglcCkgZXh0ZW5kcyBiZXlvbmQgZW5kIG9mIHNwYWNlIGluIHNlY3Rpb25cbiIpLCBwaCk7Ci0rCQkgICAgICByZXR1cm4gMDsKLSsJCSAgICB9Ci0rCQl9Ci0gCi0gCSAgICAgIHByb3cgPSBwb2Zmc2V0cyArIChyb3cgLSAxKSAqIG5jb2xzICogNDsKLSAJICAgICAgLyogUFIgMTc1MzE6IGZpbGU6IGI4Y2U2MGE4LiAgKi8KLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxOC0wNC0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgMjMwNjQKLSsgICAgICAgKiBkd2FyZi5jIChwcm9jZXNzX2N1X3R1X2luZGV4KTogVGVzdCBmb3IgYSBwb3RlbnRpYWwgYnVmZmVyCi0rICAgICAgIG92ZXJydW4gYmVmb3JlIGNvcHlpbmcgc2lnbmF0dXJlIHBvaW50ZXIuCi0rCi0gMjAxOC0wMS0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJQmFjayB0byBkZXZlbG9wbWVudC4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwMzczLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTAzNzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1NDdjZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTAzNzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDYzMjc1MzNiMWZkMjlmYTg2ZjZiZjM0ZTYxYzMzMmMwMTBlM2M2ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE3IEFwciAyMDE4IDE0OjMwOjA3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIGNoZWNrIGZvciBhIE5VTEwgdGFibGUgcG9pbnRlciBiZWZvcmUgYXR0ZW1wdGluZyB0bwotIGNvbXB1dGUgYSBEV0FSRiBmaWxlbmFtZS4KLQotCVBSIDIzMDY1Ci0JKiBkd2FyZjIuYyAoY29uY2F0X2ZpbGVuYW1lKTogQ2hlY2sgZm9yIGEgTlVMTCB0YWJsZSBwb2ludGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTEwMzczCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDUgKysrKysKLSBiZmQvZHdhcmYyLmMgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL2R3YXJmMi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2R3YXJmMi5jCi0rKysgZ2l0L2JmZC9kd2FyZjIuYwotQEAgLTE1NjUsNyArMTU2NSw3IEBAIGNvbmNhdF9maWxlbmFtZSAoc3RydWN0IGxpbmVfaW5mb190YWJsZQotIHsKLSAgIGNoYXIgKmZpbGVuYW1lOwotIAotLSAgaWYgKGZpbGUgLSAxID49IHRhYmxlLT5udW1fZmlsZXMpCi0rICBpZiAodGFibGUgPT0gTlVMTCB8fCBmaWxlIC0gMSA+PSB0YWJsZS0+bnVtX2ZpbGVzKQotICAgICB7Ci0gICAgICAgLyogRklMRSA9PSAwIG1lYW5zIHVua25vd24uICAqLwotICAgICAgIGlmIChmaWxlKQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDggQEAKLSsyMDE4LTA0LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMzA2NQotKyAgICAgICAqIGR3YXJmMi5jIChjb25jYXRfZmlsZW5hbWUpOiBDaGVjayBmb3IgYSBOVUxMIHRhYmxlIHBvaW50ZXIuCi0rCi0gMjAxOC0wMS0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gICAgICAgIFBSIDIyNzQxCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDUzNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwNTM0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODQ3MDIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTEwNTM0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQyOSArMCwwIEBACi1Gcm9tIGFhNGE4YzJhMmE2NzU0NWU5MGM4NzcxNjJjNTNjYzlkZTQyZGM4YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDI0IEFwciAyMDE4IDE2OjMxOjI3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhbiBpbGxlZ2FsIG1lbW9yeSBhY2Nlc3Mgd2hlbiBjb3B5aW5nIGEgUEUgZm9ybWF0IGZpbGUKLSB3aXRoIGNvcnJ1cHQgZGVidWcgaW5mb3JtYXRpb24uCi0KLQlQUiAyMzExMAotCSogcGVYWGlnZW4uYyAoX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbik6IENoZWNrIGZvcgotCWEgbmVnYXRpdmUgUEVfREVCVUdfREFUQSBzaXplIGJlZm9yZSBpdGVyYXRpbmcgb3ZlciB0aGUgZGVidWcgZGF0YS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQWZmZWN0czogQmludXRpbHMgPD0gMi4zMAotQ1ZFOiBDVkUtMjAxOC0xMDUzNAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgICAgNiArCi0gYmZkL3BlWFhpZ2VuLmMgfCAgICA5ICsKLSBiZmQvcG8vYmZkLnBvdCB8IDU2MzEgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDI2NjIgaW5zZXJ0aW9ucygrKSwgMjk4NCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvcGVYWGlnZW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9wZVhYaWdlbi5jCi0rKysgZ2l0L2JmZC9wZVhYaWdlbi5jCi1AQCAtMjk5MSw2ICsyOTkxLDE1IEBAIF9iZmRfWFhfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24KLSAJCQkJICBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdGlvbikgLSAoYWRkciAtIHNlY3Rpb24tPnZtYSkpOwotIAkgICAgICByZXR1cm4gRkFMU0U7Ci0gCSAgICB9Ci0rCSAgLyogUFIgMjMxMTAuICAqLwotKwkgIGVsc2UgaWYgKG9wZS0+cGVfb3B0aGRyLkRhdGFEaXJlY3RvcnlbUEVfREVCVUdfREFUQV0uU2l6ZSA8IDApCi0rCSAgICB7Ci0rCSAgICAgIC8qIHhnZXR0ZXh0OmMtZm9ybWF0ICovCi0rCSAgICAgIF9iZmRfZXJyb3JfaGFuZGxlcgotKwkJKF8oIiVwQjogRGF0YSBEaXJlY3Rvcnkgc2l6ZSAoJSNseCkgaXMgbmVnYXRpdmUiKSwKLSsJCSBvYmZkLCBvcGUtPnBlX29wdGhkci5EYXRhRGlyZWN0b3J5W1BFX0RFQlVHX0RBVEFdLlNpemUpOwotKwkgICAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICB9Ci0gCi0gCSAgZm9yIChpID0gMDsgaSA8IG9wZS0+cGVfb3B0aGRyLkRhdGFEaXJlY3RvcnlbUEVfREVCVUdfREFUQV0uU2l6ZQotIAkJIC8gc2l6ZW9mIChzdHJ1Y3QgZXh0ZXJuYWxfSU1BR0VfREVCVUdfRElSRUNUT1JZKTsgaSsrKQotSW5kZXg6IGdpdC9iZmQvcG8vYmZkLnBvdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9wby9iZmQucG90Ci0rKysgZ2l0L2JmZC9wby9iZmQucG90Ci1AQCAtMTgsMTc1ICsxOCwyMTQgQEAgbXNnc3RyICIiCi0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKLSAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz1JTlRFR0VSOyBwbHVyYWw9RVhQUkVTU0lPTjtcbiIKLSAKLS0jOiBhb3V0LWFkb2JlLmM6MTI2Ci0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IFVua25vd24gc2VjdGlvbiB0eXBlIGluIGEub3V0LmFkb2JlIGZpbGU6ICV4XG4iCi0tbXNnc3RyICIiCi0tCi0gIzogYW91dC1jcmlzLmM6MjAwCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IEludmFsaWQgcmVsb2NhdGlvbiB0eXBlIGV4cG9ydGVkOiAlZCIKLSttc2dpZCAiJXBCOiB1bnN1cHBvcnRlZCByZWxvY2F0aW9uIHR5cGUgZXhwb3J0ZWQ6ICUjeCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBhb3V0LWNyaXMuYzoyNDQKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogSW52YWxpZCByZWxvY2F0aW9uIHR5cGUgaW1wb3J0ZWQ6ICVkIgotK21zZ2lkICIlcEI6IHVuc3VwcG9ydGVkIHJlbG9jYXRpb24gdHlwZSBpbXBvcnRlZDogJSN4IgotIG1zZ3N0ciAiIgotIAotICM6IGFvdXQtY3Jpcy5jOjI1NgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBCYWQgcmVsb2NhdGlvbiByZWNvcmQgaW1wb3J0ZWQ6ICVkIgotK21zZ2lkICIlcEI6IGJhZCByZWxvY2F0aW9uIHJlY29yZCBpbXBvcnRlZDogJWQiCi0gbXNnc3RyICIiCi0gCi0tIzogYW91dHguaDoxMjg0IGFvdXR4Lmg6MTYzNiBwZHAxMS5jOjExNTIgcGRwMTEuYzoxNDEzCi0rIzogYW91dHguaDoxMjY0IGFvdXR4Lmg6MTYxNyBwZHAxMS5jOjExMzggcGRwMTEuYzoxMzk5Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IGNhbiBub3QgcmVwcmVzZW50IHNlY3Rpb24gYCVBJyBpbiBhLm91dCBvYmplY3QgZmlsZSBmb3JtYXQiCi0rbXNnaWQgIiVwQjogY2FuIG5vdCByZXByZXNlbnQgc2VjdGlvbiBgJXBBJyBpbiBhLm91dCBvYmplY3QgZmlsZSBmb3JtYXQiCi0gbXNnc3RyICIiCi0gCi0tIzogYW91dHguaDoxNjAwIHBkcDExLmM6MTM4NQotKyM6IGFvdXR4Lmg6MTU4MSBwZHAxMS5jOjEzNzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0tIiVCOiBjYW4gbm90IHJlcHJlc2VudCBzZWN0aW9uIGZvciBzeW1ib2wgYCVzJyBpbiBhLm91dCBvYmplY3QgZmlsZSBmb3JtYXQiCi0rIiVwQjogY2FuIG5vdCByZXByZXNlbnQgc2VjdGlvbiBmb3Igc3ltYm9sIGAlcycgaW4gYS5vdXQgb2JqZWN0IGZpbGUgZm9ybWF0IgotIG1zZ3N0ciAiIgotIAotLSM6IGFvdXR4Lmg6MTYwMyB2bXMtYWxwaGEuYzo3ODUzCi0rIzogYW91dHguaDoxNTg0IHZtcy1hbHBoYS5jOjc4NTQKLSBtc2dpZCAiKnVua25vd24qIgotIG1zZ3N0ciAiIgotIAotLSM6IGFvdXR4Lmg6MjQyMiBhb3V0eC5oOjI0NDAKLS1tc2dpZCAiJUI6IGF0dGVtcHQgdG8gd3JpdGUgb3V0IHVua25vd24gcmVsb2MgdHlwZSIKLSsjOiBhb3V0eC5oOjE3MjAKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IGludmFsaWQgc3RyaW5nIG9mZnNldCAlPFBSSXU2ND4gPj0gJTxQUkl1NjQ+IgotIG1zZ3N0ciAiIgotIAotLSM6IGFvdXR4Lmg6NDA5MyBhb3V0eC5oOjQ0MTQKLS1tc2dpZCAiJVA6ICVCOiB1bmV4cGVjdGVkIHJlbG9jYXRpb24gdHlwZVxuIgotKyM6IGFvdXR4Lmg6MjQxMSBhb3V0eC5oOjI0MjkKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IGF0dGVtcHQgdG8gd3JpdGUgb3V0IHVua25vd24gcmVsb2MgdHlwZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhb3V0eC5oOjU0NDAgcGRwMTEuYzozNzA4Ci0rIzogYW91dHguaDo0MDg0Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IHJlbG9jYXRhYmxlIGxpbmsgZnJvbSAlcyB0byAlcyBub3Qgc3VwcG9ydGVkIgotK21zZ2lkICIlcEI6IHVuc3VwcG9ydGVkIHJlbG9jYXRpb24gdHlwZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhcmNoaXZlLmM6MjMwNQotLW1zZ2lkICJXYXJuaW5nOiB3cml0aW5nIGFyY2hpdmUgd2FzIHNsb3c6IHJld3JpdGluZyB0aW1lc3RhbXBcbiIKLSsjLiBVbmtub3duIHJlbG9jYXRpb24uCi0rIzogYW91dHguaDo0NDA1IGNvZmYtYWxwaGEuYzo2MDEgY29mZi1hbHBoYS5jOjE1MTQgY29mZi1yczYwMDAuYzoyNzczCi0rIzogY29mZi1zaC5jOjUwNCBjb2ZmLXRpYzR4LmM6MTg0IGNvZmYtdGljNTR4LmM6Mjc5IGVsZi1ocHBhLmg6MTA0MAotKyM6IGVsZi1ocHBhLmg6MTA2OCBlbGYtbTEwMjAwLmM6MjI2IGVsZi1tMTAzMDAuYzo4MTIgZWxmMzItYXJjLmM6NTE5Ci0rIzogZWxmMzItYXJtLmM6MTg1MiBlbGYzMi1hdnIuYzo5NTkgZWxmMzItYmZpbi5jOjEwNjEgZWxmMzItYmZpbi5jOjQ2OTgKLSsjOiBlbGYzMi1jcjE2LmM6NjUzIGVsZjMyLWNyMTYuYzo2ODMgZWxmMzItY3IxNmMuYzoxODYgZWxmMzItY3Jpcy5jOjQ2NwotKyM6IGVsZjMyLWNyeC5jOjQyOSBlbGYzMi1kMTB2LmM6MjM0IGVsZjMyLWQzMHYuYzo1MjIgZWxmMzItZDMwdi5jOjU0NAotKyM6IGVsZjMyLWRseC5jOjU0OCBlbGYzMi1lcGlwaGFueS5jOjM3NiBlbGYzMi1mcjMwLmM6MzgxIGVsZjMyLWZydi5jOjI1NTgKLSsjOiBlbGYzMi1mcnYuYzo2MjYyIGVsZjMyLWZ0MzIuYzozMDYgZWxmMzItaDgzMDAuYzozMDIgZWxmMzItaTM4Ni5jOjQwMQotKyM6IGVsZjMyLWlwMmsuYzoxMjQ1IGVsZjMyLWlxMjAwMC5jOjQ0MiBlbGYzMi1sbTMyLmM6NTM5IGVsZjMyLW0zMmMuYzozMDUKLSsjOiBlbGYzMi1tMzJyLmM6MTI4NiBlbGYzMi1tMzJyLmM6MTMxMSBlbGYzMi1tMzJyLmM6MjQxNyBlbGYzMi1tNjhoYzExLmM6MzkwCi0rIzogZWxmMzItbTY4aGMxMi5jOjUxMCBlbGYzMi1tNjhrLmM6MzUyIGVsZjMyLW1jb3JlLmM6MzU0IGVsZjMyLW1jb3JlLmM6NDQwCi0rIzogZWxmMzItbWVwLmM6Mzg5IGVsZjMyLW1ldGFnLmM6ODc4IGVsZjMyLW1pY3JvYmxhemUuYzo2OTIKLSsjOiBlbGYzMi1taWNyb2JsYXplLmM6OTY5IGVsZjMyLW1pcHMuYzoyMjI5IGVsZjMyLW1veGllLmM6MTM3Ci0rIzogZWxmMzItbXNwNDMwLmM6NjQ4IGVsZjMyLW1zcDQzMC5jOjY1OCBlbGYzMi1tdC5jOjI0MSBlbGYzMi1uZHMzMi5jOjI4ODAKLSsjOiBlbGYzMi1uZHMzMi5jOjI5MDQgZWxmMzItbmRzMzIuYzo0NDIzIGVsZjMyLW5pb3MyLmM6MzAxNSBlbGYzMi1vcjFrLmM6NzE1Ci0rIzogZWxmMzItcGouYzozMjUgZWxmMzItcHBjLmM6MjA2MSBlbGYzMi1wcGMuYzoyMDc0IGVsZjMyLXBydS5jOjQyMAotKyM6IGVsZjMyLXJsNzguYzoyOTIgZWxmMzItcnguYzozMTQgZWxmMzItcnguYzozMjMgZWxmMzItczM5MC5jOjM0NwotKyM6IGVsZjMyLXNoLmM6NDM4IGVsZjMyLXNwdS5jOjE2MCBlbGYzMi10aWM2eC5jOjE1MDggZWxmMzItdGljNnguYzoxNTE4Ci0rIzogZWxmMzItdGljNnguYzoxNTM3IGVsZjMyLXRpYzZ4LmM6MTU0NyBlbGYzMi10aWM2eC5jOjI2NDIgZWxmMzItdGlsZXByby5jOjgwMwotKyM6IGVsZjMyLXY4NTAuYzoxODk5IGVsZjMyLXY4NTAuYzoxOTIxIGVsZjMyLXY4NTAuYzo0MjcwIGVsZjMyLXZheC5jOjI5MAotKyM6IGVsZjMyLXZpc2l1bS5jOjQ4MiBlbGYzMi13YXNtMzIuYzoxMDYgZWxmMzIteGMxNnguYzoyNDEgZWxmMzIteGdhdGUuYzo0MjgKLSsjOiBlbGYzMi14c3Rvcm15MTYuYzozOTUgZWxmMzIteHRlbnNhLmM6NDU0IGVsZjMyLXh0ZW5zYS5jOjQ4OAotKyM6IGVsZjY0LWFscGhhLmM6MTExMiBlbGY2NC1hbHBoYS5jOjQxMDEgZWxmNjQtYWxwaGEuYzo0MjQ5Ci0rIzogZWxmNjQtaWE2NC12bXMuYzoyNTQgZWxmNjQtaWE2NC12bXMuYzozNDQwIGVsZjY0LW1pcHMuYzozNjIzCi0rIzogZWxmNjQtbWlwcy5jOjM2MzkgZWxmNjQtbW1peC5jOjEyNjQgZWxmNjQtcHBjLmM6MjI4MSBlbGY2NC1wcGMuYzoyNTU1Ci0rIzogZWxmNjQtcHBjLmM6MjU2NCBlbGY2NC1zMzkwLmM6MzI4IGVsZjY0LXMzOTAuYzozNzggZWxmNjQteDg2LTY0LmM6Mjg1Ci0rIzogZWxmbjMyLW1pcHMuYzozNDUxIGVsZnh4LWlhNjQuYzozMjUgZWxmeHgtcmlzY3YuYzo5NTUgZWxmeHgtc3BhcmMuYzo1ODkKLSsjOiBlbGZ4eC1zcGFyYy5jOjYzOSBlbGZ4eC1zcGFyYy5jOjY2MSBlbGZ4eC10aWxlZ3guYzo5MTIgZWxmeHgtdGlsZWd4LmM6OTUyCi0rIzogL3dvcmsvc291cmNlcy9iaW51dGlscy9jdXJyZW50L2JmZC9lbGZubi1hYXJjaDY0LmM6MjEyNgotKyM6IC93b3JrL3NvdXJjZXMvYmludXRpbHMvY3VycmVudC9iZmQvZWxmbm4tYWFyY2g2NC5jOjIyMjQgZWxmMzItaWE2NC5jOjIxMQotKyM6IGVsZjMyLWlhNjQuYzozODYzIGVsZjY0LWlhNjQuYzoyMTEgZWxmNjQtaWE2NC5jOjM4NjMKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IHVuc3VwcG9ydGVkIHJlbG9jYXRpb24gdHlwZSAlI3giCi0rbXNnc3RyICIiCi0rCi0rIzogYW91dHguaDo1NDMyIHBkcDExLmM6MzY5NAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogcmVsb2NhdGFibGUgbGluayBmcm9tICVzIHRvICVzIG5vdCBzdXBwb3J0ZWQiCi0rbXNnc3RyICIiCi0rCi0rIzogYXJjaGl2ZS5jOjIyMTYKLSttc2dpZCAid2FybmluZzogd3JpdGluZyBhcmNoaXZlIHdhcyBzbG93OiByZXdyaXRpbmcgdGltZXN0YW1wIgotIG1zZ3N0ciAiIgotIAotLSM6IGFyY2hpdmUuYzoyNDIxIGxpbmtlci5jOjE0MTAKLS1tc2dpZCAiJUI6IHBsdWdpbiBuZWVkZWQgdG8gaGFuZGxlIGx0byBvYmplY3QiCi0rIzogYXJjaGl2ZS5jOjIzMzIgbGlua2VyLmM6MTQxNgotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogcGx1Z2luIG5lZWRlZCB0byBoYW5kbGUgbHRvIG9iamVjdCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBhcmNoaXZlLmM6MjY1MAotKyM6IGFyY2hpdmUuYzoyNTYxCi0gbXNnaWQgIlJlYWRpbmcgYXJjaGl2ZSBmaWxlIG1vZCB0aW1lc3RhbXAiCi0gbXNnc3RyICIiCi0gCi0tIzogYXJjaGl2ZS5jOjI2NzQKLSsjOiBhcmNoaXZlLmM6MjU4NQotIG1zZ2lkICJXcml0aW5nIHVwZGF0ZWQgYXJtYXAgdGltZXN0YW1wIgotIG1zZ3N0ciAiIgotIAotKyM6IGJmZC5jOjQ0OAotK21zZ2lkICJubyBlcnJvciIKLSttc2dzdHIgIiIKLSsKLSsjOiBiZmQuYzo0NDkKLSttc2dpZCAic3lzdGVtIGNhbGwgZXJyb3IiCi0rbXNnc3RyICIiCi0rCi0rIzogYmZkLmM6NDUwCi0rbXNnaWQgImludmFsaWQgYmZkIHRhcmdldCIKLSttc2dzdHIgIiIKLSsKLSsjOiBiZmQuYzo0NTEKLSttc2dpZCAiZmlsZSBpbiB3cm9uZyBmb3JtYXQiCi0rbXNnc3RyICIiCi0rCi0rIzogYmZkLmM6NDUyCi0rbXNnaWQgImFyY2hpdmUgb2JqZWN0IGZpbGUgaW4gd3JvbmcgZm9ybWF0IgotK21zZ3N0ciAiIgotKwotKyM6IGJmZC5jOjQ1MwotK21zZ2lkICJpbnZhbGlkIG9wZXJhdGlvbiIKLSttc2dzdHIgIiIKLSsKLSAjOiBiZmQuYzo0NTQKLS1tc2dpZCAiTm8gZXJyb3IiCi0rbXNnaWQgIm1lbW9yeSBleGhhdXN0ZWQiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDU1Ci0tbXNnaWQgIlN5c3RlbSBjYWxsIGVycm9yIgotK21zZ2lkICJubyBzeW1ib2xzIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ1NgotLW1zZ2lkICJJbnZhbGlkIGJmZCB0YXJnZXQiCi0rbXNnaWQgImFyY2hpdmUgaGFzIG5vIGluZGV4OyBydW4gcmFubGliIHRvIGFkZCBvbmUiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDU3Ci0tbXNnaWQgIkZpbGUgaW4gd3JvbmcgZm9ybWF0IgotK21zZ2lkICJubyBtb3JlIGFyY2hpdmVkIGZpbGVzIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ1OAotLW1zZ2lkICJBcmNoaXZlIG9iamVjdCBmaWxlIGluIHdyb25nIGZvcm1hdCIKLSttc2dpZCAibWFsZm9ybWVkIGFyY2hpdmUiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDU5Ci0tbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uIgotK21zZ2lkICJEU08gbWlzc2luZyBmcm9tIGNvbW1hbmQgbGluZSIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjAKLS1tc2dpZCAiTWVtb3J5IGV4aGF1c3RlZCIKLSttc2dpZCAiZmlsZSBmb3JtYXQgbm90IHJlY29nbml6ZWQiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDYxCi0tbXNnaWQgIk5vIHN5bWJvbHMiCi0rbXNnaWQgImZpbGUgZm9ybWF0IGlzIGFtYmlndW91cyIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjIKLS1tc2dpZCAiQXJjaGl2ZSBoYXMgbm8gaW5kZXg7IHJ1biByYW5saWIgdG8gYWRkIG9uZSIKLSttc2dpZCAic2VjdGlvbiBoYXMgbm8gY29udGVudHMiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDYzCi0tbXNnaWQgIk5vIG1vcmUgYXJjaGl2ZWQgZmlsZXMiCi0rbXNnaWQgIm5vbnJlcHJlc2VudGFibGUgc2VjdGlvbiBvbiBvdXRwdXQiCi0gbXNnc3RyICIiCi0gCi0gIzogYmZkLmM6NDY0Ci0tbXNnaWQgIk1hbGZvcm1lZCBhcmNoaXZlIgotK21zZ2lkICJzeW1ib2wgbmVlZHMgZGVidWcgc2VjdGlvbiB3aGljaCBkb2VzIG5vdCBleGlzdCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjUKLS1tc2dpZCAiRFNPIG1pc3NpbmcgZnJvbSBjb21tYW5kIGxpbmUiCi0rbXNnaWQgImJhZCB2YWx1ZSIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjYKLS1tc2dpZCAiRmlsZSBmb3JtYXQgbm90IHJlY29nbml6ZWQiCi0rbXNnaWQgImZpbGUgdHJ1bmNhdGVkIgotIG1zZ3N0ciAiIgotIAotICM6IGJmZC5jOjQ2NwotLW1zZ2lkICJGaWxlIGZvcm1hdCBpcyBhbWJpZ3VvdXMiCi0rbXNnaWQgImZpbGUgdG9vIGJpZyIKLSBtc2dzdHIgIiIKLSAKLSAjOiBiZmQuYzo0NjgKLS1tc2dpZCAiU2VjdGlvbiBoYXMgbm8gY29udGVudHMiCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDY5Ci0tbXNnaWQgIk5vbnJlcHJlc2VudGFibGUgc2VjdGlvbiBvbiBvdXRwdXQiCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDcwCi0tbXNnaWQgIlN5bWJvbCBuZWVkcyBkZWJ1ZyBzZWN0aW9uIHdoaWNoIGRvZXMgbm90IGV4aXN0IgotLW1zZ3N0ciAiIgotLQotLSM6IGJmZC5jOjQ3MQotLW1zZ2lkICJCYWQgdmFsdWUiCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDcyCi0tbXNnaWQgIkZpbGUgdHJ1bmNhdGVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGJmZC5jOjQ3MwotLW1zZ2lkICJGaWxlIHRvbyBiaWciCi0tbXNnc3RyICIiCi0tCi0tIzogYmZkLmM6NDc0Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiRXJyb3IgcmVhZGluZyAlczogJXMiCi0rbXNnaWQgImVycm9yIHJlYWRpbmcgJXM6ICVzIgotIG1zZ3N0ciAiIgotIAotLSM6IGJmZC5jOjQ3NQotLW1zZ2lkICIjPEludmFsaWQgZXJyb3IgY29kZT4iCi0rIzogYmZkLmM6NDY5Ci0rbXNnaWQgIiM8aW52YWxpZCBlcnJvciBjb2RlPiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBiZmQuYzoxNDQyCi0rIzogYmZkLmM6MTQxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkJGRCAlcyBhc3NlcnRpb24gZmFpbCAlczolZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBiZmQuYzoxNDU1Ci0rIzogYmZkLmM6MTQyOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkJGRCAlcyBpbnRlcm5hbCBlcnJvciwgYWJvcnRpbmcgYXQgJXM6JWQgaW4gJXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBiZmQuYzoxNDYwCi0rIzogYmZkLmM6MTQzNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkJGRCAlcyBpbnRlcm5hbCBlcnJvciwgYWJvcnRpbmcgYXQgJXM6JWRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBiZmQuYzoxNDYyCi0rIzogYmZkLmM6MTQzNgotIG1zZ2lkICJQbGVhc2UgcmVwb3J0IHRoaXMgYnVnLlxuIgotIG1zZ3N0ciAiIgotIAotQEAgLTMzMiw3ICszNzEsNyBAQCBtc2dzdHIgIiIKLSBtc2dpZCAicHJpdmF0ZSBmbGFncyA9ICV4OiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBjb2ZmLWFybS5jOjIzMDYgZWxmMzItYXJtLmM6MTQxNjAKLSsjOiBjb2ZmLWFybS5jOjIzMDYgZWxmMzItYXJtLmM6MTQxOTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgW2Zsb2F0cyBwYXNzZWQgaW4gZmxvYXQgcmVnaXN0ZXJzXSIKLSBtc2dzdHIgIiIKLUBAIC0zNDIsNyArMzgxLDcgQEAgbXNnc3RyICIiCi0gbXNnaWQgIiBbZmxvYXRzIHBhc3NlZCBpbiBpbnRlZ2VyIHJlZ2lzdGVyc10iCi0gbXNnc3RyICIiCi0gCi0tIzogY29mZi1hcm0uYzoyMzExIGVsZjMyLWFybS5jOjE0MTYzCi0rIzogY29mZi1hcm0uYzoyMzExIGVsZjMyLWFybS5jOjE0MTk0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFtwb3NpdGlvbiBpbmRlcGVuZGVudF0iCi0gbXNnc3RyICIiCi1AQCAtMjU2NSwyMjQgKzI2MDQsMTgwIEBAIG1zZ3N0ciAiIgotIG1zZ2lkICJpcDJrIHJlbGF4ZXI6IHN3aXRjaCB0YWJsZSBoZWFkZXIgY29ycnVwdC4iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItaXAyay5jOjEyNDUKLS0jLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogaW52YWxpZCBJUDJLIHJlbG9jIG51bWJlcjogJWQiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItaXAyay5jOjEyOTgKLS0jLCBjLWZvcm1hdAotLW1zZ2lkICJpcDJrIGxpbmtlcjogbWlzc2luZyBwYWdlIGluc3RydWN0aW9uIGF0ICUjTHggKGRlc3QgPSAlI0x4KSIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1pcDJrLmM6MTMxNQotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgImlwMmsgbGlua2VyOiByZWR1bmRhbnQgcGFnZSBpbnN0cnVjdGlvbiBhdCAlI0x4IChkZXN0ID0gJSNMeCkiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItaXEyMDAwLmM6NDQxCi0rIzogZWxmMzItaXAyay5jOjEzMDIKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogaW52YWxpZCBJUTIwMDAgcmVsb2MgbnVtYmVyOiAlZCIKLSttc2dpZCAiaXAyayBsaW5rZXI6IG1pc3NpbmcgcGFnZSBpbnN0cnVjdGlvbiBhdCAlIzxQUkl4NjQ+IChkZXN0ID0gJSM8UFJJeDY0PikiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbG0zMi5jOjUzOQotKyM6IGVsZjMyLWlwMmsuYzoxMzIxCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IGludmFsaWQgTE0zMiByZWxvYyBudW1iZXI6ICVkIgotK21zZ2lkICIiCi0rImlwMmsgbGlua2VyOiByZWR1bmRhbnQgcGFnZSBpbnN0cnVjdGlvbiBhdCAlIzxQUkl4NjQ+IChkZXN0ID0gJSM8UFJJeDY0PikiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbG0zMi5jOjY0OCBlbGYzMi1uaW9zMi5jOjMxMzMKLSsjOiBlbGYzMi1sbTMyLmM6NjUxIGVsZjMyLW5pb3MyLmM6MzE0MQotIG1zZ2lkICJnbG9iYWwgcG9pbnRlciByZWxhdGl2ZSByZWxvY2F0aW9uIHdoZW4gX2dwIG5vdCBkZWZpbmVkIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLWxtMzIuYzo3MDMgZWxmMzItbmlvczIuYzozNTcwCi0rIzogZWxmMzItbG0zMi5jOjcwNiBlbGYzMi1uaW9zMi5jOjM1NzgKLSBtc2dpZCAiZ2xvYmFsIHBvaW50ZXIgcmVsYXRpdmUgYWRkcmVzcyBvdXQgb2YgcmFuZ2UiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbG0zMi5jOjk5OAotLW1zZ2lkICJpbnRlcm5hbCBlcnJvcjogYWRkZW5kIHNob3VsZCBiZSB6ZXJvIGZvciBSX0xNMzJfMTZfR09UIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW0zMmMuYzozMDYKLSsjOiBlbGYzMi1sbTMyLmM6MTAwMiBlbGYzMi1vcjFrLmM6OTY4Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IGludmFsaWQgTTMyQyByZWxvYyBudW1iZXI6ICVkIgotK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogYWRkZW5kIHNob3VsZCBiZSB6ZXJvIGZvciAlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MTI4NgotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBpbnZhbGlkIE0zMlIgcmVsb2MgbnVtYmVyOiAlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1tMzJyLmM6MTQ1OAotKyM6IGVsZjMyLW0zMnIuYzoxNDcxCi0gbXNnaWQgIlNEQSByZWxvY2F0aW9uIHdoZW4gX1NEQV9CQVNFXyBub3QgZGVmaW5lZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6Mjk3MSBlbGYzMi1taWNyb2JsYXplLmM6MTA2NCBlbGYzMi1taWNyb2JsYXplLmM6MTExMgotKyM6IGVsZjMyLW0zMnIuYzoyOTg0IGVsZjMyLW1pY3JvYmxhemUuYzoxMTAxIGVsZjMyLW1pY3JvYmxhemUuYzoxMTQ5Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IFRoZSB0YXJnZXQgKCVzKSBvZiBhbiAlcyByZWxvY2F0aW9uIGlzIGluIHRoZSB3cm9uZyBzZWN0aW9uICglQSkiCi0rbXNnaWQgIiVwQjogdGhlIHRhcmdldCAoJXMpIG9mIGFuICVzIHJlbG9jYXRpb24gaXMgaW4gdGhlIHdyb25nIHNlY3Rpb24gKCVwQSkiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTMyci5jOjM0NzMKLS1tc2dpZCAiJUI6IEluc3RydWN0aW9uIHNldCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIG1vZHVsZXMiCi0rIzogZWxmMzItbTMyci5jOjM0ODcKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IGluc3RydWN0aW9uIHNldCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIG1vZHVsZXMiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTMyci5jOjM0OTQgZWxmMzItbmRzMzIuYzo2MDM3Ci0rIzogZWxmMzItbTMyci5jOjM1MDggZWxmMzItbmRzMzIuYzo2MDEwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAicHJpdmF0ZSBmbGFncyA9ICVseCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MzQ5OQotKyM6IGVsZjMyLW0zMnIuYzozNTEzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiOiBtMzJyIGluc3RydWN0aW9ucyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tMzJyLmM6MzUwMAotKyM6IGVsZjMyLW0zMnIuYzozNTE0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiOiBtMzJyeCBpbnN0cnVjdGlvbnMiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTMyci5jOjM1MDEKLSsjOiBlbGYzMi1tMzJyLmM6MzUxNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIjogbTMycjIgaW5zdHJ1Y3Rpb25zIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMTEuYzozOTAKLS0jLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogaW52YWxpZCBNNjhIQzExIHJlbG9jIG51bWJlcjogJWQiCi0tbXNnc3RyICIiCi0tCi0tIzogZWxmMzItbTY4aGMxMi5jOjUxMAotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBpbnZhbGlkIE02OEhDMTIgcmVsb2MgbnVtYmVyOiAlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTExNQotKyM6IGVsZjMyLW02OGhjMXguYzoxMTE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotLSJSZWZlcmVuY2UgdG8gdGhlIGZhciBzeW1ib2wgYCVzJyB1c2luZyBhIHdyb25nIHJlbG9jYXRpb24gbWF5IHJlc3VsdCBpbiAiCi0rInJlZmVyZW5jZSB0byB0aGUgZmFyIHN5bWJvbCBgJXMnIHVzaW5nIGEgd3JvbmcgcmVsb2NhdGlvbiBtYXkgcmVzdWx0IGluICIKLSAiaW5jb3JyZWN0IGV4ZWN1dGlvbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTE0OQotKyM6IGVsZjMyLW02OGhjMXguYzoxMTUwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICJYR0FURSBhZGRyZXNzICglbHgpIGlzIG5vdCB3aXRoaW4gc2hhcmVkIFJBTSgweEUwMDAtMHhGRkZGKSwgdGhlcmVmb3JlIHlvdSAiCi0gIm11c3QgbWFudWFsbHkgb2Zmc2V0IHRoZSBhZGRyZXNzLCBhbmQgcG9zc2libHkgbWFuYWdlIHRoZSBwYWdlLCBpbiB5b3VyIGNvZGUuIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxMTY3Ci0rIzogZWxmMzItbTY4aGMxeC5jOjExNjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gImJhbmtlZCBhZGRyZXNzIFslbHg6JTA0bHhdICglbHgpIGlzIG5vdCBpbiB0aGUgc2FtZSBiYW5rIGFzIGN1cnJlbnQgYmFua2VkICIKLSAiYWRkcmVzcyBbJWx4OiUwNGx4XSAoJWx4KSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTE4MwotKyM6IGVsZjMyLW02OGhjMXguYzoxMTg0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICJyZWZlcmVuY2UgdG8gYSBiYW5rZWQgYWRkcmVzcyBbJWx4OiUwNGx4XSBpbiB0aGUgbm9ybWFsIGFkZHJlc3Mgc3BhY2UgYXQgIgotICIlMDRseCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTIyNAotKyM6IGVsZjMyLW02OGhjMXguYzoxMjI1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICJTMTIgYWRkcmVzcyAoJWx4KSBpcyBub3Qgd2l0aGluIHNoYXJlZCBSQU0oMHgyMDAwLTB4NDAwMCksIHRoZXJlZm9yZSB5b3UgIgotICJtdXN0IG1hbnVhbGx5IG9mZnNldCB0aGUgYWRkcmVzcyBpbiB5b3VyIGNvZGUiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjEzNTEKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTM1MgotKyMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iJUI6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIDE2LWJpdCBpbnRlZ2VycyAoLW1zaG9ydCkgYW5kIG90aGVycyBmb3IgMzItIgotKyIlcEI6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIDE2LWJpdCBpbnRlZ2VycyAoLW1zaG9ydCkgYW5kIG90aGVycyBmb3IgMzItIgotICJiaXQgaW50ZWdlcnMiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjEzNTgKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTM1OQotKyMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iJUI6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIDMyLWJpdCBkb3VibGUgKC1mc2hvcnQtZG91YmxlKSBhbmQgb3RoZXJzIGZvciAiCi0tIjY0LWJpdCBkb3VibGUiCi0rIiVwQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgMzItYml0IGRvdWJsZSAoLWZzaG9ydC1kb3VibGUpIGFuZCBvdGhlcnMgIgotKyJmb3IgNjQtYml0IGRvdWJsZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTM2NwotLW1zZ2lkICIlQjogbGlua2luZyBmaWxlcyBjb21waWxlZCBmb3IgSENTMTIgd2l0aCBvdGhlcnMgY29tcGlsZWQgZm9yIEhDMTIiCi0rIzogZWxmMzItbTY4aGMxeC5jOjEzNjgKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcEI6IGxpbmtpbmcgZmlsZXMgY29tcGlsZWQgZm9yIEhDUzEyIHdpdGggb3RoZXJzIGNvbXBpbGVkIGZvciBIQzEyIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDEyIGVsZjMyLXhnYXRlLmM6NjcyCi0rIzogZWxmMzItbTY4aGMxeC5jOjE0MTMgZWxmMzIteGdhdGUuYzo2NzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJbYWJpPTMyLWJpdCBpbnQsICIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQxNCBlbGYzMi14Z2F0ZS5jOjY3NAotKyM6IGVsZjMyLW02OGhjMXguYzoxNDE1IGVsZjMyLXhnYXRlLmM6Njc3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiW2FiaT0xNi1iaXQgaW50LCAiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MTcgZWxmMzIteGdhdGUuYzo2NzcKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQxOCBlbGYzMi14Z2F0ZS5jOjY4MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIjY0LWJpdCBkb3VibGUsICIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQxOSBlbGYzMi14Z2F0ZS5jOjY3OQotKyM6IGVsZjMyLW02OGhjMXguYzoxNDIwIGVsZjMyLXhnYXRlLmM6NjgyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiMzItYml0IGRvdWJsZSwgIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDIyCi0rIzogZWxmMzItbTY4aGMxeC5jOjE0MjMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjcHU9SEMxMV0iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MjQKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNwdT1IQ1MxMl0iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MjYKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQyNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNwdT1IQzEyXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhoYzF4LmM6MTQyOQotKyM6IGVsZjMyLW02OGhjMXguYzoxNDMwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFttZW1vcnk9YmFuay1tb2RlbF0iCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbTY4aGMxeC5jOjE0MzEKLSsjOiBlbGYzMi1tNjhoYzF4LmM6MTQzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBbbWVtb3J5PWZsYXRdIgotIG1zZ3N0ciAiIgotIAotLSM6IGVsZjMyLW02OGhjMXguYzoxNDM0Ci0rIzogZWxmMzItbTY4aGMxeC5jOjE0MzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgW1hHQVRFIFJBTSBvZmZzZXR0aW5nXSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhrLmM6MTIxNCBlbGYzMi1tNjhrLmM6MTIxNSB2bXMtYWxwaGEuYzo3NDc3IHZtcy1hbHBoYS5jOjc0OTMKLSsjOiBlbGYzMi1tNjhrLmM6MTIxNiBlbGYzMi1tNjhrLmM6MTIxNyB2bXMtYWxwaGEuYzo3NDc4IHZtcy1hbHBoYS5jOjc0OTQKLSBtc2dpZCAidW5rbm93biIKLSBtc2dzdHIgIiIKLSAKLS0jOiBlbGYzMi1tNjhrLmM6MTY1OAotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBHT1Qgb3ZlcmZsb3c6IE51bWJlciBvZiByZWxvY2F0aW9ucyB3aXRoIDgtYml0IG9mZnNldCA+ICVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW02OGsuYzoxNjY1Ci0tIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IEdPVCBvdmVyZmxvdzogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHdpdGggOC0gb3IgMTYtYml0IG9mZnNldCA+ICVkIgotLW1zZ3N0ciAiIgotLQotLSM6IGVsZjMyLW1jb3JlLmM6MTAwIGVsZjMyLW1jb3JlLmM6NDU1Ci0rIzogZWxmMzItbTY4ay5jOjE2NjAKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogUmVsb2NhdGlvbiAlcyAoJWQpIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLlxuIgotK21zZ2lkICIlcEI6IEdPVCBvdmVyZmxvdzogbnVtYmVyIG9mIHJlbG9jYXRpb25zIHdpdGggOC1iaXQgb2Zmc2V0ID4gJWQiCi0gbXNnc3RyICIiCi0gCi0tIzogZWxmMzItbWNvcmUuYzozNTUKLSsjOiBlbGYzMi1tNjhrLmM6MTY2NwotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiB1bnJlY29nbmlzZWQgTUNvcmUgcmVsb2MgbnVtYmVyOiAlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiBlbGYzMi1tY29yZS5jOjQ0MAotLSMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiBVbmtub3duIHJlbG9jYXRpb24gdHlwZSAlZFxuIgotK21zZ2lkICIlcEI6IEdPVCBvdmVyZmxvdzogbnVtYmVyIG9mIHJlbG9jYXRpb25zIHdpdGggOC0gb3IgMTYtYml0IG9mZnNldCA+ICVkIgotIG1zZ3N0ciAiIgotIAotICMuIFBhY2lmeSBnY2MgLVdhbGwuCi1AQCAtNTkzNiwxMjQgKzU5MzEsMTI4IEBAIG1zZ3N0ciAiIgotICMuIFhYWCBjb2RlIHlldCB0byBiZSB3cml0dGVuLgotICM6IHBlaWNvZGUuaDo3NzUKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVW5oYW5kbGVkIGltcG9ydCB0eXBlOyAleCIKLSttc2dpZCAiJXBCOiB1bmhhbmRsZWQgaW1wb3J0IHR5cGU7ICV4IgotIG1zZ3N0ciAiIgotIAotICM6IHBlaWNvZGUuaDo3ODEKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVW5yZWNvZ25pc2VkIGltcG9ydCB0eXBlOyAleCIKLSttc2dpZCAiJXBCOiB1bnJlY29nbml6ZWQgaW1wb3J0IHR5cGU7ICV4IgotIG1zZ3N0ciAiIgotIAotICM6IHBlaWNvZGUuaDo3OTYKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogVW5yZWNvZ25pc2VkIGltcG9ydCBuYW1lIHR5cGU7ICV4IgotK21zZ2lkICIlcEI6IHVucmVjb2duaXplZCBpbXBvcnQgbmFtZSB0eXBlOyAleCIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWljb2RlLmg6MTIxNwotKyM6IHBlaWNvZGUuaDoxMjExCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUI6IFVucmVjb2duaXNlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCBhcmNoaXZlIgotK21zZ2lkICIlcEI6IHVucmVjb2duaXNlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCBhcmNoaXZlIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWNvZGUuaDoxMjMwCi0rIzogcGVpY29kZS5oOjEyMjQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0tIiVCOiBSZWNvZ25pc2VkIGJ1dCB1bmhhbmRsZWQgbWFjaGluZSB0eXBlICgweCV4KSBpbiBJbXBvcnQgTGlicmFyeSBGb3JtYXQgIgotKyIlcEI6IHJlY29nbmlzZWQgYnV0IHVuaGFuZGxlZCBtYWNoaW5lIHR5cGUgKDB4JXgpIGluIEltcG9ydCBMaWJyYXJ5IEZvcm1hdCAiCi0gImFyY2hpdmUiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpY29kZS5oOjEyNDgKLS1tc2dpZCAiJUI6IHNpemUgZmllbGQgaXMgemVybyBpbiBJbXBvcnQgTGlicmFyeSBGb3JtYXQgaGVhZGVyIgotKyM6IHBlaWNvZGUuaDoxMjQyCi0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiBzaXplIGZpZWxkIGlzIHplcm8gaW4gSW1wb3J0IExpYnJhcnkgRm9ybWF0IGhlYWRlciIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWljb2RlLmg6MTI4MAotLW1zZ2lkICIlQjogc3RyaW5nIG5vdCBudWxsIHRlcm1pbmF0ZWQgaW4gSUxGIG9iamVjdCBmaWxlLiIKLSsjOiBwZWljb2RlLmg6MTI3NAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogc3RyaW5nIG5vdCBudWxsIHRlcm1pbmF0ZWQgaW4gSUxGIG9iamVjdCBmaWxlIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWNvZGUuaDoxMzM1Ci0tbXNnaWQgIiVCOiBFcnJvcjogRGVidWcgRGF0YSBlbmRzIGJleW9uZCBlbmQgb2YgZGVidWcgZGlyZWN0b3J5LiIKLSsjOiBwZWljb2RlLmg6MTMzMAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogZXJyb3I6IGRlYnVnIGRhdGEgZW5kcyBiZXlvbmQgZW5kIG9mIGRlYnVnIGRpcmVjdG9yeSIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6MzkzCi0rIzogcHBjYm9vdC5jOjM5MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiXG4iCi0gInBwY2Jvb3QgaGVhZGVyOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHBwY2Jvb3QuYzozOTQKLSsjOiBwcGNib290LmM6MzkzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiRW50cnkgb2Zmc2V0ICAgICAgICA9IDB4JS44bHggKCVsZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6Mzk2Ci0rIzogcHBjYm9vdC5jOjM5NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkxlbmd0aCAgICAgICAgICAgICAgPSAweCUuOGx4ICglbGQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjQwMAotKyM6IHBwY2Jvb3QuYzozOTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJGbGFnIGZpZWxkICAgICAgICAgID0gMHglLjJ4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjQwNgotKyM6IHBwY2Jvb3QuYzo0MDUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJQYXJ0aXRpb24gbmFtZSAgICAgID0gXCIlc1wiXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjQyNgotKyM6IHBwY2Jvb3QuYzo0MjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gIlxuIgotICJQYXJ0aXRpb25bJWRdIHN0YXJ0ICA9IHsgMHglLjJ4LCAweCUuMngsIDB4JS4yeCwgMHglLjJ4IH1cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwcGNib290LmM6NDMzCi0rIzogcHBjYm9vdC5jOjQzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlBhcnRpdGlvblslZF0gZW5kICAgID0geyAweCUuMngsIDB4JS4yeCwgMHglLjJ4LCAweCUuMnggfVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHBwY2Jvb3QuYzo0NDAKLSsjOiBwcGNib290LmM6NDM5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiUGFydGl0aW9uWyVkXSBzZWN0b3IgPSAweCUuOGx4ICglbGQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogcHBjYm9vdC5jOjQ0NAotKyM6IHBwY2Jvb3QuYzo0NDMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJQYXJ0aXRpb25bJWRdIGxlbmd0aCA9IDB4JS44bHggKCVsZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiByZWxvYy5jOjgxMDYKLS1tc2dpZCAiSU5QVVRfU0VDVElPTl9GTEFHUyBhcmUgbm90IHN1cHBvcnRlZC5cbiIKLSsjOiByZWxvYy5jOjgxMjUKLSttc2dpZCAiSU5QVVRfU0VDVElPTl9GTEFHUyBhcmUgbm90IHN1cHBvcnRlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiByZWxvYy5jOjgyMDcKLSsjOiByZWxvYy5jOjgyMjYKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlWCVQOiAlQiglQSk6IGVycm9yOiByZWxvY2F0aW9uIGZvciBvZmZzZXQgJVYgaGFzIG5vIHZhbHVlXG4iCi0rbXNnaWQgIiVYJVA6ICVwQiglcEEpOiBlcnJvcjogcmVsb2NhdGlvbiBmb3Igb2Zmc2V0ICVWIGhhcyBubyB2YWx1ZVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHJlbG9jLmM6ODI4MwotKyM6IHJlbG9jLmM6ODMwMgotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVYJVA6ICVCKCVBKTogcmVsb2NhdGlvbiBcIiVSXCIgaXMgbm90IHN1cHBvcnRlZFxuIgotK21zZ2lkICIlWCVQOiAlcEIoJXBBKTogcmVsb2NhdGlvbiBcIiVwUlwiIGlzIG5vdCBzdXBwb3J0ZWRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiByZWxvYy5jOjgyOTIKLSsjOiByZWxvYy5jOjgzMTEKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlWCVQOiAlQiglQSk6IHJlbG9jYXRpb24gXCIlUlwiIHJldHVybnMgYW4gdW5yZWNvZ25pemVkIHZhbHVlICV4XG4iCi0rbXNnaWQgIiVYJVA6ICVwQiglcEEpOiByZWxvY2F0aW9uIFwiJXBSXCIgcmV0dXJucyBhbiB1bnJlY29nbml6ZWQgdmFsdWUgJXhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiByZWxvYy5jOjgzNTQKLSsjOiByZWxvYy5jOjgzNzMKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogdW5yZWNvZ25pemVkIHJlbG9jYXRpb24gKCUjeCkgaW4gc2VjdGlvbiBgJUEnIgotK21zZ2lkICIlcEI6IHVucmVjb2duaXplZCByZWxvY2F0aW9uIHR5cGUgJSN4IGluIHNlY3Rpb24gYCVwQSciCi0gbXNnc3RyICIiCi0gCi0gIy4gUFIgMjE4MDM6IFN1Z2dlc3QgdGhlIG1vc3QgbGlrZWx5IGNhdXNlIG9mIHRoaXMgZXJyb3IuCi0tIzogcmVsb2MuYzo4MzU4Ci0rIzogcmVsb2MuYzo4Mzc3Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiSXMgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaW5rZXIgLSAlcyAtIG91dCBvZiBkYXRlID8iCi0rbXNnaWQgImlzIHRoaXMgdmVyc2lvbiBvZiB0aGUgbGlua2VyIC0gJXMgLSBvdXQgb2YgZGF0ZSA/IgotIG1zZ3N0ciAiIgotIAotICM6IHJzNjAwMC1jb3JlLmM6NDcxCi0tbXNnaWQgIiVCOiB3YXJuaW5nIGNvcmUgZmlsZSB0cnVuY2F0ZWQiCi0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiB3YXJuaW5nIGNvcmUgZmlsZSB0cnVuY2F0ZWQiCi0gbXNnc3RyICIiCi0gCi0gIzogc29tLmM6NTQ3OAotQEAgLTYwNjksOTEgKzYwNjgsOTEgQEAgbXNnc3RyICIiCi0gCi0gIzogc3JlYy5jOjI2MAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiVkOiBVbmV4cGVjdGVkIGNoYXJhY3RlciBgJXMnIGluIFMtcmVjb3JkIGZpbGVcbiIKLSttc2dpZCAiJXBCOiVkOiB1bmV4cGVjdGVkIGNoYXJhY3RlciBgJXMnIGluIFMtcmVjb3JkIGZpbGUiCi0gbXNnc3RyICIiCi0gCi0gIzogc3JlYy5jOjQ4OAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiVkOiBieXRlIGNvdW50ICVkIHRvbyBzbWFsbFxuIgotK21zZ2lkICIlcEI6JWQ6IGJ5dGUgY291bnQgJWQgdG9vIHNtYWxsIgotIG1zZ3N0ciAiIgotIAotICM6IHNyZWMuYzo1ODEgc3JlYy5jOjYxNQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIiVCOiVkOiBCYWQgY2hlY2tzdW0gaW4gUy1yZWNvcmQgZmlsZVxuIgotK21zZ2lkICIlcEI6JWQ6IGJhZCBjaGVja3N1bSBpbiBTLXJlY29yZCBmaWxlIgotIG1zZ3N0ciAiIgotIAotICM6IHN0YWJzLmM6Mjc5Ci0gIywgYy1mb3JtYXQKLS1tc2dpZCAiJUIoJUErJSNseCk6IFN0YWJzIGVudHJ5IGhhcyBpbnZhbGlkIHN0cmluZyBpbmRleC4iCi0rbXNnaWQgIiVwQiglcEErJSNseCk6IHN0YWJzIGVudHJ5IGhhcyBpbnZhbGlkIHN0cmluZyBpbmRleCIKLSBtc2dzdHIgIiIKLSAKLSAjOiBzeW1zLmM6MTA3OQotLW1zZ2lkICJVbnN1cHBvcnRlZCAuc3RhYiByZWxvY2F0aW9uIgotK21zZ2lkICJ1bnN1cHBvcnRlZCAuc3RhYiByZWxvY2F0aW9uIgotIG1zZ3N0ciAiIgotIAotICM6IHZtcy1hbHBoYS5jOjQ3OQotLW1zZ2lkICJDb3JydXB0IEVJSEQgcmVjb3JkIC0gc2l6ZSBpcyB0b28gc21hbGwiCi0rbXNnaWQgImNvcnJ1cHQgRUlIRCByZWNvcmQgLSBzaXplIGlzIHRvbyBzbWFsbCIKLSBtc2dzdHIgIiIKLSAKLSAjOiB2bXMtYWxwaGEuYzo2NjAKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJVbmFibGUgdG8gcmVhZCBFSUhTIHJlY29yZCBhdCBvZmZzZXQgJSN4IgotK21zZ2lkICJ1bmFibGUgdG8gcmVhZCBFSUhTIHJlY29yZCBhdCBvZmZzZXQgJSN4IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjExNzIKLSsjOiB2bXMtYWxwaGEuYzoxMTczCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiQ29ycnVwdCBFR1NEIHJlY29yZDogaXRzIHNpemUgKCUjeCkgaXMgdG9vIHNtYWxsIgotK21zZ2lkICJjb3JydXB0IEVHU0QgcmVjb3JkOiBpdHMgc2l6ZSAoJSN4KSBpcyB0b28gc21hbGwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTE5NgotKyM6IHZtcy1hbHBoYS5jOjExOTcKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJDb3JydXB0IEVHU0QgcmVjb3JkOiBzaXplICglI3gpIGlzIGxhcmdlciB0aGFuIHJlbWFpbmluZyBzcGFjZSAoJSN4KSIKLSttc2dpZCAiY29ycnVwdCBFR1NEIHJlY29yZDogc2l6ZSAoJSN4KSBpcyBsYXJnZXIgdGhhbiByZW1haW5pbmcgc3BhY2UgKCUjeCkiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTIwNAotKyM6IHZtcy1hbHBoYS5jOjEyMDUKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJDb3JydXB0IEVHU0QgcmVjb3JkOiBzaXplICglI3gpIGlzIHRvbyBzbWFsbCIKLSttc2dpZCAiY29ycnVwdCBFR1NEIHJlY29yZDogc2l6ZSAoJSN4KSBpcyB0b28gc21hbGwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTMzMyB2bXMtYWxwaGEuYzoxMzQ5IHZtcy1hbHBoYS5jOjEzODkKLSsjOiB2bXMtYWxwaGEuYzoxMzM0IHZtcy1hbHBoYS5jOjEzNTAgdm1zLWFscGhhLmM6MTM5MAotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIkNvcnJ1cHQgRUdTRCByZWNvcmQ6IGl0cyBwc2luZHggZmllbGQgaXMgdG9vIGJpZyAoJSNseCkiCi0rbXNnaWQgImNvcnJ1cHQgRUdTRCByZWNvcmQ6IGl0cyBwc2luZHggZmllbGQgaXMgdG9vIGJpZyAoJSNseCkiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTQxOAotKyM6IHZtcy1hbHBoYS5jOjE0MTkKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJVbmtub3duIEVHU0Qgc3VidHlwZSAlZCIKLSttc2dpZCAidW5rbm93biBFR1NEIHN1YnR5cGUgJWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTQ1MQotKyM6IHZtcy1hbHBoYS5jOjE0NTIKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJTdGFjayBvdmVyZmxvdyAoJWQpIGluIF9iZmRfdm1zX3B1c2giCi0rbXNnaWQgInN0YWNrIG92ZXJmbG93ICglZCkgaW4gX2JmZF92bXNfcHVzaCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxNDY0Ci0tbXNnaWQgIlN0YWNrIHVuZGVyZmxvdyBpbiBfYmZkX3Ztc19wb3AiCi0rIzogdm1zLWFscGhhLmM6MTQ2NQotK21zZ2lkICJzdGFjayB1bmRlcmZsb3cgaW4gX2JmZF92bXNfcG9wIgotIG1zZ3N0ciAiIgotIAotICMuIFRoZXNlIG5hbWVzIGhhdmUgbm90IHlldCBiZWVuIGFkZGVkIHRvIHRoaXMgc3dpdGNoIHN0YXRlbWVudC4KLS0jOiB2bXMtYWxwaGEuYzoxNzA2Ci0rIzogdm1zLWFscGhhLmM6MTcwNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInVua25vd24gRVRJUiBjb21tYW5kICVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjE3MzcKLS1tc2dpZCAiQ29ycnVwdCB2bXMgdmFsdWUiCi0rIzogdm1zLWFscGhhLmM6MTczOAotK21zZ2lkICJjb3JydXB0IHZtcyB2YWx1ZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoxODY1Ci0tbXNnaWQgIkNvcnJ1cHQgRVRJUiByZWNvcmQgZW5jb3VudGVyZWQiCi0rIzogdm1zLWFscGhhLmM6MTg2NgotK21zZ2lkICJjb3JydXB0IEVUSVIgcmVjb3JkIGVuY291bnRlcmVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjE5MjIKLSsjOiB2bXMtYWxwaGEuYzoxOTIzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYmFkIHNlY3Rpb24gaW5kZXggaW4gJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MTkzNQotKyM6IHZtcy1hbHBoYS5jOjE5MzYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bnN1cHBvcnRlZCBTVEEgY21kICVzIgotIG1zZ3N0ciAiIgotQEAgLTYxNjMsMTk2MSArNjE2MiwxOTMyIEBAIG1zZ3N0ciAiIgotICMuIFJvdGF0ZS4KLSAjLiBSZWRlZmluZSBzeW1ib2wgdG8gY3VycmVudCBsb2NhdGlvbi4KLSAjLiBEZWZpbmUgYSBsaXRlcmFsLgotLSM6IHZtcy1hbHBoYS5jOjIxMTUgdm1zLWFscGhhLmM6MjE0NiB2bXMtYWxwaGEuYzoyMjM3IHZtcy1hbHBoYS5jOjIzOTUKLSsjOiB2bXMtYWxwaGEuYzoyMTE2IHZtcy1hbHBoYS5jOjIxNDcgdm1zLWFscGhhLmM6MjIzOCB2bXMtYWxwaGEuYzoyMzk2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiJXM6IG5vdCBzdXBwb3J0ZWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6MjEyMQotKyM6IHZtcy1hbHBoYS5jOjIxMjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIlczogbm90IGltcGxlbWVudGVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjIzNzkKLSsjOiB2bXMtYWxwaGEuYzoyMzgwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiaW52YWxpZCB1c2Ugb2YgJXMgd2l0aCBjb250ZXh0cyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoyNDEzCi0rIzogdm1zLWFscGhhLmM6MjQxNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInJlc2VydmVkIGNtZCAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoyNDk3Ci0tbXNnaWQgIkNvcnJ1cHQgRUVPTSByZWNvcmQgLSBzaXplIGlzIHRvbyBzbWFsbCIKLSsjOiB2bXMtYWxwaGEuYzoyNDk4Ci0rbXNnaWQgImNvcnJ1cHQgRUVPTSByZWNvcmQgLSBzaXplIGlzIHRvbyBzbWFsbCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzoyNTA2Ci0tbXNnaWQgIk9iamVjdCBtb2R1bGUgTk9UIGVycm9yLWZyZWUgIVxuIgotKyM6IHZtcy1hbHBoYS5jOjI1MDcKLSttc2dpZCAib2JqZWN0IG1vZHVsZSBub3QgZXJyb3ItZnJlZSAhIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjM4MzAKLSsjOiB2bXMtYWxwaGEuYzozODMxCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiU0VDX1JFTE9DIHdpdGggbm8gcmVsb2NzIGluIHNlY3Rpb24gJUEiCi0rbXNnaWQgIlNFQ19SRUxPQyB3aXRoIG5vIHJlbG9jcyBpbiBzZWN0aW9uICVwQSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzozODgyIHZtcy1hbHBoYS5jOjQwOTUKLSsjOiB2bXMtYWxwaGEuYzozODgzIHZtcy1hbHBoYS5jOjQwOTYKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJTaXplIGVycm9yIGluIHNlY3Rpb24gJUEiCi0rbXNnaWQgInNpemUgZXJyb3IgaW4gc2VjdGlvbiAlcEEiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NDA0MQotLW1zZ2lkICJTcHVyaW91cyBBTFBIQV9SX0JTUiByZWxvYyIKLSsjOiB2bXMtYWxwaGEuYzo0MDQyCi0rbXNnaWQgInNwdXJpb3VzIEFMUEhBX1JfQlNSIHJlbG9jIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjQwODIKLSsjOiB2bXMtYWxwaGEuYzo0MDgzCi0gIywgYy1mb3JtYXQKLS1tc2dpZCAiVW5oYW5kbGVkIHJlbG9jYXRpb24gJXMiCi0rbXNnaWQgInVuaGFuZGxlZCByZWxvY2F0aW9uICVzIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjQzNzUKLSsjOiB2bXMtYWxwaGEuYzo0Mzc2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidW5rbm93biBzb3VyY2UgY29tbWFuZCAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo0NDM2Ci0tbXNnaWQgIkRTVF9fS19TRVRfTElOVU1fSU5DUiBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ0MgotLW1zZ2lkICJEU1RfX0tfU0VUX0xJTlVNX0lOQ1JfVyBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ0OAotLW1zZ2lkICJEU1RfX0tfUkVTRVRfTElOVU1fSU5DUiBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ1NAotLW1zZ2lkICJEU1RfX0tfQkVHX1NUTVRfTU9ERSBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ2MAotLW1zZ2lkICJEU1RfX0tfRU5EX1NUTVRfTU9ERSBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ4NwotLW1zZ2lkICJEU1RfX0tfU0VUX1BDIG5vdCBpbXBsZW1lbnRlZCIKLS1tc2dzdHIgIiIKLS0KLS0jOiB2bXMtYWxwaGEuYzo0NDkzCi0tbXNnaWQgIkRTVF9fS19TRVRfUENfVyBub3QgaW1wbGVtZW50ZWQiCi0tbXNnc3RyICIiCi0tCi0tIzogdm1zLWFscGhhLmM6NDQ5OQotLW1zZ2lkICJEU1RfX0tfU0VUX1BDX0wgbm90IGltcGxlbWVudGVkIgotLW1zZ3N0ciAiIgotLQotLSM6IHZtcy1hbHBoYS5jOjQ1MDUKLS1tc2dpZCAiRFNUX19LX1NFVF9TVE1UTlVNIG5vdCBpbXBsZW1lbnRlZCIKLSsjOiB2bXMtYWxwaGEuYzo0NDM3IHZtcy1hbHBoYS5jOjQ0NDMgdm1zLWFscGhhLmM6NDQ0OSB2bXMtYWxwaGEuYzo0NDU1Ci0rIzogdm1zLWFscGhhLmM6NDQ2MSB2bXMtYWxwaGEuYzo0NDg4IHZtcy1hbHBoYS5jOjQ0OTQgdm1zLWFscGhhLmM6NDUwMAotKyM6IHZtcy1hbHBoYS5jOjQ1MDYKLSsjLCBjLWZvcm1hdAotK21zZ2lkICIlcyBub3QgaW1wbGVtZW50ZWQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NDU0OAotKyM6IHZtcy1hbHBoYS5jOjQ1NDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bmtub3duIGxpbmUgY29tbWFuZCAlZCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1MDA4IHZtcy1hbHBoYS5jOjUwMjYgdm1zLWFscGhhLmM6NTA0MSB2bXMtYWxwaGEuYzo1MDU3Ci0tIzogdm1zLWFscGhhLmM6NTA3MCB2bXMtYWxwaGEuYzo1MDgyIHZtcy1hbHBoYS5jOjUwOTUKLSsjOiB2bXMtYWxwaGEuYzo1MDA5IHZtcy1hbHBoYS5jOjUwMjcgdm1zLWFscGhhLmM6NTA0MiB2bXMtYWxwaGEuYzo1MDU4Ci0rIzogdm1zLWFscGhhLmM6NTA3MSB2bXMtYWxwaGEuYzo1MDgzIHZtcy1hbHBoYS5jOjUwOTYKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJVbmtub3duIHJlbG9jICVzICsgJXMiCi0rbXNnaWQgInVua25vd24gcmVsb2MgJXMgKyAlcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1MTUwCi0rIzogdm1zLWFscGhhLmM6NTE1MQotICMsIGMtZm9ybWF0Ci0tbXNnaWQgIlVua25vd24gcmVsb2MgJXMiCi0rbXNnaWQgInVua25vd24gcmVsb2MgJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTE2MwotLW1zZ2lkICJJbnZhbGlkIHNlY3Rpb24gaW5kZXggaW4gRVRJUiIKLSsjOiB2bXMtYWxwaGEuYzo1MTY0Ci0rbXNnaWQgImludmFsaWQgc2VjdGlvbiBpbmRleCBpbiBFVElSIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjUxNzIKLS1tc2dpZCAiUmVsb2NhdGlvbiBmb3Igbm9uLVJFTCBwc2VjdCIKLSsjOiB2bXMtYWxwaGEuYzo1MTczCi0rbXNnaWQgInJlbG9jYXRpb24gZm9yIG5vbi1SRUwgcHNlY3QiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTIxOQotKyM6IHZtcy1hbHBoYS5jOjUyMjAKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJVbmtub3duIHN5bWJvbCBpbiBjb21tYW5kICVzIgotK21zZ2lkICJ1bmtub3duIHN5bWJvbCBpbiBjb21tYW5kICVzIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU2MjkKLSsjOiB2bXMtYWxwaGEuYzo1NjMwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAicmVsb2MgKCVkKSBpcyAqVU5LTk9XTioiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc0NQotKyM6IHZtcy1hbHBoYS5jOjU3NDYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIEVNSCAldSAobGVuPSV1KTogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU3NTAKLSsjOiB2bXMtYWxwaGEuYzo1NzUxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgRXJyb3I6IFRoZSBsZW5ndGggaXMgbGVzcyB0aGFuIHRoZSBsZW5ndGggb2YgYW4gRU1IIHJlY29yZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU3NjcKLSsjOiB2bXMtYWxwaGEuYzo1NzY4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotICIgICBFcnJvcjogVGhlIHJlY29yZCBsZW5ndGggaXMgbGVzcyB0aGFuIHRoZSBzaXplIG9mIGFuIEVNSF9NSEQgcmVjb3JkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc3MAotKyM6IHZtcy1hbHBoYS5jOjU3NzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJNb2R1bGUgaGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc3MQotKyM6IHZtcy1hbHBoYS5jOjU3NzIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBzdHJ1Y3R1cmUgbGV2ZWw6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc3MgotKyM6IHZtcy1hbHBoYS5jOjU3NzMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBtYXggcmVjb3JkIHNpemU6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc3OAotKyM6IHZtcy1hbHBoYS5jOjU3NzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBFcnJvcjogVGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmdcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1Nzg0Ci0rIzogdm1zLWFscGhhLmM6NTc4NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBUaGUgbW9kdWxlIG5hbWUgaXMgdG9vIGxvbmdcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1Nzg3Ci0rIzogdm1zLWFscGhhLmM6NTc4OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG1vZHVsZSBuYW1lICAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU3OTEKLSsjOiB2bXMtYWxwaGEuYzo1NzkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgRXJyb3I6IFRoZSBtb2R1bGUgdmVyc2lvbiBpcyBtaXNzaW5nXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTc5NwotKyM6IHZtcy1hbHBoYS5jOjU3OTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBFcnJvcjogVGhlIG1vZHVsZSB2ZXJzaW9uIGlzIHRvbyBsb25nXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgwMAotKyM6IHZtcy1hbHBoYS5jOjU4MDEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBtb2R1bGUgdmVyc2lvbiA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODAzCi0rIzogdm1zLWFscGhhLmM6NTgwNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBUaGUgY29tcGlsZSBkYXRlIGlzIHRydW5jYXRlZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MDUKLSsjOiB2bXMtYWxwaGEuYzo1ODA2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgY29tcGlsZSBkYXRlICAgOiAlLjE3c1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MTAKLSsjOiB2bXMtYWxwaGEuYzo1ODExCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiTGFuZ3VhZ2UgUHJvY2Vzc29yIE5hbWVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODExCi0rIzogdm1zLWFscGhhLmM6NTgxMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGxhbmd1YWdlIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODE1Ci0rIzogdm1zLWFscGhhLmM6NTgxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNvdXJjZSBGaWxlcyBIZWFkZXJcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODE2Ci0rIzogdm1zLWFscGhhLmM6NTgxNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGZpbGU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODIwCi0rIzogdm1zLWFscGhhLmM6NTgyMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlRpdGxlIFRleHQgSGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgyMQotKyM6IHZtcy1hbHBoYS5jOjU4MjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICB0aXRsZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MjUKLSsjOiB2bXMtYWxwaGEuYzo1ODI2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQ29weXJpZ2h0IEhlYWRlclxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4MjYKLSsjOiB2bXMtYWxwaGEuYzo1ODI3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgY29weXJpZ2h0OiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTgzMAotKyM6IHZtcy1hbHBoYS5jOjU4MzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bmhhbmRsZWQgZW1oIHN1YnR5cGUgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODQwCi0rIzogdm1zLWFscGhhLmM6NTg0MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgRUVPTSAobGVuPSV1KTpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODQ1Ci0rIzogdm1zLWFscGhhLmM6NTg0NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIEVycm9yOiBUaGUgbGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIGFuIEVFT00gcmVjb3JkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg0OQotKyM6IHZtcy1hbHBoYS5jOjU4NTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBudW1iZXIgb2YgY29uZCBsaW5rYWdlIHBhaXJzOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NTEKLSsjOiB2bXMtYWxwaGEuYzo1ODUyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgY29tcGxldGlvbiBjb2RlOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NTUKLSsjOiB2bXMtYWxwaGEuYzo1ODU2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgdHJhbnNmZXIgYWRkciBmbGFnczogMHglMDJ4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg1NgotKyM6IHZtcy1hbHBoYS5jOjU4NTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICB0cmFuc2ZlciBhZGRyIHBzZWN0OiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NTgKLSsjOiB2bXMtYWxwaGEuYzo1ODU5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgdHJhbnNmZXIgYWRkcmVzcyAgIDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg2NwotKyM6IHZtcy1hbHBoYS5jOjU4NjgKLSBtc2dpZCAiIFdFQUsiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg2OQotKyM6IHZtcy1hbHBoYS5jOjU4NzAKLSBtc2dpZCAiIERFRiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODcxCi0rIzogdm1zLWFscGhhLmM6NTg3MgotIG1zZ2lkICIgVU5JIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NzMgdm1zLWFscGhhLmM6NTg5NAotKyM6IHZtcy1hbHBoYS5jOjU4NzQgdm1zLWFscGhhLmM6NTg5NQotIG1zZ2lkICIgUkVMIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NzUKLSsjOiB2bXMtYWxwaGEuYzo1ODc2Ci0gbXNnaWQgIiBDT01NIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4NzcKLSsjOiB2bXMtYWxwaGEuYzo1ODc4Ci0gbXNnaWQgIiBWRUNFUCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODc5Ci0rIzogdm1zLWFscGhhLmM6NTg4MAotIG1zZ2lkICIgTk9STSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODgxCi0rIzogdm1zLWFscGhhLmM6NTg4MgotIG1zZ2lkICIgUVZBTCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODg4Ci0rIzogdm1zLWFscGhhLmM6NTg4OQotIG1zZ2lkICIgUElDIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4OTAKLSsjOiB2bXMtYWxwaGEuYzo1ODkxCi0gbXNnaWQgIiBMSUIiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTg5MgotKyM6IHZtcy1hbHBoYS5jOjU4OTMKLSBtc2dpZCAiIE9WUiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1ODk2Ci0rIzogdm1zLWFscGhhLmM6NTg5NwotIG1zZ2lkICIgR0JMIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU4OTgKLSsjOiB2bXMtYWxwaGEuYzo1ODk5Ci0gbXNnaWQgIiBTSFIiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkwMAotKyM6IHZtcy1hbHBoYS5jOjU5MDEKLSBtc2dpZCAiIEVYRSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTAyCi0rIzogdm1zLWFscGhhLmM6NTkwMwotIG1zZ2lkICIgUkQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkwNAotKyM6IHZtcy1hbHBoYS5jOjU5MDUKLSBtc2dpZCAiIFdSVCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTA2Ci0rIzogdm1zLWFscGhhLmM6NTkwNwotIG1zZ2lkICIgVkVDIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5MDgKLSsjOiB2bXMtYWxwaGEuYzo1OTA5Ci0gbXNnaWQgIiBOT01PRCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTEwCi0rIzogdm1zLWFscGhhLmM6NTkxMQotIG1zZ2lkICIgQ09NIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5MTIKLSsjOiB2bXMtYWxwaGEuYzo1OTEzCi0gbXNnaWQgIiA2NEIiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkyMQotKyM6IHZtcy1hbHBoYS5jOjU5MjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIEVHU0QgKGxlbj0ldSk6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTkzNAotKyM6IHZtcy1hbHBoYS5jOjU5MzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIEVHU0QgZW50cnkgJTJ1ICh0eXBlOiAldSwgbGVuOiAldSk6ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTQwIHZtcy1hbHBoYS5jOjYxOTEKLSsjOiB2bXMtYWxwaGEuYzo1OTQxIHZtcy1hbHBoYS5jOjYxOTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBFcnJvcjogbGVuZ3RoIGxhcmdlciB0aGFuIHJlbWFpbmluZyBzcGFjZSBpbiByZWNvcmRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTUyCi0rIzogdm1zLWFscGhhLmM6NTk1MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlBTQyAtIFByb2dyYW0gc2VjdGlvbiBkZWZpbml0aW9uXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk1MyB2bXMtYWxwaGEuYzo1OTcwCi0rIzogdm1zLWFscGhhLmM6NTk1NCB2bXMtYWxwaGEuYzo1OTcxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgYWxpZ25tZW50ICA6IDIqKiV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk1NCB2bXMtYWxwaGEuYzo1OTcxCi0rIzogdm1zLWFscGhhLmM6NTk1NSB2bXMtYWxwaGEuYzo1OTcyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZmxhZ3MgICAgICA6IDB4JTA0eCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTU4Ci0rIzogdm1zLWFscGhhLmM6NTk1OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGFsbG9jIChsZW4pOiAldSAoMHglMDh4KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NTkgdm1zLWFscGhhLmM6NjAxNiB2bXMtYWxwaGEuYzo2MDY1Ci0rIzogdm1zLWFscGhhLmM6NTk2MCB2bXMtYWxwaGEuYzo2MDE3IHZtcy1hbHBoYS5jOjYwNjYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBuYW1lICAgICAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjU5NjkKLSsjOiB2bXMtYWxwaGEuYzo1OTcwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1BTQyAtIFNoYXJlZCBJbWFnZSBQcm9ncmFtIHNlY3Rpb24gZGVmXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk3NQotKyM6IHZtcy1hbHBoYS5jOjU5NzYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBhbGxvYyAobGVuKSAgIDogJXUgKDB4JTA4eClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTc2Ci0rIzogdm1zLWFscGhhLmM6NTk3NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGltYWdlIG9mZnNldCAgOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTc4Ci0rIzogdm1zLWFscGhhLmM6NTk3OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHN5bXZlYyBvZmZzZXQgOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTgwCi0rIzogdm1zLWFscGhhLmM6NTk4MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG5hbWUgICAgICAgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk5MwotKyM6IHZtcy1hbHBoYS5jOjU5OTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTWU0gLSBHbG9iYWwgc3ltYm9sIGRlZmluaXRpb25cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo1OTk0IHZtcy1hbHBoYS5jOjYwNTQgdm1zLWFscGhhLmM6NjA3NSB2bXMtYWxwaGEuYzo2MDk0Ci0rIzogdm1zLWFscGhhLmM6NTk5NSB2bXMtYWxwaGEuYzo2MDU1IHZtcy1hbHBoYS5jOjYwNzYgdm1zLWFscGhhLmM6NjA5NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGZsYWdzOiAweCUwNHgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NTk5NwotKyM6IHZtcy1hbHBoYS5jOjU5OTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBwc2VjdCBvZmZzZXQ6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMDEKLSsjOiB2bXMtYWxwaGEuYzo2MDAyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgY29kZSBhZGRyZXNzOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDAzCi0rIzogdm1zLWFscGhhLmM6NjAwNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHBzZWN0IGluZGV4IGZvciBlbnRyeSBwb2ludCA6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAwNiB2bXMtYWxwaGEuYzo2MDgyIHZtcy1hbHBoYS5jOjYxMDEKLSsjOiB2bXMtYWxwaGEuYzo2MDA3IHZtcy1hbHBoYS5jOjYwODMgdm1zLWFscGhhLmM6NjEwMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHBzZWN0IGluZGV4IDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDA4IHZtcy1hbHBoYS5jOjYwODQgdm1zLWFscGhhLmM6NjEwMwotKyM6IHZtcy1hbHBoYS5jOjYwMDkgdm1zLWFscGhhLmM6NjA4NSB2bXMtYWxwaGEuYzo2MTA0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbmFtZSAgICAgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAxNQotKyM6IHZtcy1hbHBoYS5jOjYwMTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTWU0gLSBHbG9iYWwgc3ltYm9sIHJlZmVyZW5jZVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMjcKLSsjOiB2bXMtYWxwaGEuYzo2MDI4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiSURDIC0gSWRlbnQgQ29uc2lzdGVuY3kgY2hlY2tcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDI4Ci0rIzogdm1zLWFscGhhLmM6NjAyOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGZsYWdzICAgICAgICAgOiAweCUwOHgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjAzMgotKyM6IHZtcy1hbHBoYS5jOjYwMzMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBpZCBtYXRjaCAgICAgIDogJXhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDM0Ci0rIzogdm1zLWFscGhhLmM6NjAzNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGVycm9yIHNldmVyaXR5OiAleFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwMzcKLSsjOiB2bXMtYWxwaGEuYzo2MDM4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZW50aXR5IG5hbWUgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDM5Ci0rIzogdm1zLWFscGhhLmM6NjA0MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIG9iamVjdCBuYW1lICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA0MgotKyM6IHZtcy1hbHBoYS5jOjYwNDMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBiaW5hcnkgaWRlbnQgIDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA0NQotKyM6IHZtcy1hbHBoYS5jOjYwNDYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBhc2NpaSBpZGVudCAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNTMKLSsjOiB2bXMtYWxwaGEuYzo2MDU0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1lNRyAtIFVuaXZlcnNhbCBzeW1ib2wgZGVmaW5pdGlvblxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNTcKLSsjOiB2bXMtYWxwaGEuYzo2MDU4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc3ltYm9sIHZlY3RvciBvZmZzZXQ6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNTkKLSsjOiB2bXMtYWxwaGEuYzo2MDYwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZW50cnkgcG9pbnQ6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNjEKLSsjOiB2bXMtYWxwaGEuYzo2MDYyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcHJvYyBkZXNjciA6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwNjMKLSsjOiB2bXMtYWxwaGEuYzo2MDY0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcHNlY3QgaW5kZXg6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA3NAotKyM6IHZtcy1hbHBoYS5jOjYwNzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTWU1WIC0gVmVjdG9yZWQgc3ltYm9sIGRlZmluaXRpb25cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDc4Ci0rIzogdm1zLWFscGhhLmM6NjA3OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHZlY3RvciAgICAgIDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjA4MCB2bXMtYWxwaGEuYzo2MDk5Ci0rIzogdm1zLWFscGhhLmM6NjA4MSB2bXMtYWxwaGEuYzo2MTAwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgcHNlY3Qgb2Zmc2V0OiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYwOTMKLSsjOiB2bXMtYWxwaGEuYzo2MDk0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1lNTSAtIEdsb2JhbCBzeW1ib2wgZGVmaW5pdGlvbiB3aXRoIHZlcnNpb25cbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MDk3Ci0rIzogdm1zLWFscGhhLmM6NjA5OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHZlcnNpb24gbWFzazogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjEwOAotKyM6IHZtcy1hbHBoYS5jOjYxMDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ1bmhhbmRsZWQgZWdzZCBlbnRyeSB0eXBlICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE0MwotKyM6IHZtcy1hbHBoYS5jOjYxNDQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgbGlua2FnZSBpbmRleDogJXUsIHJlcGxhY2VtZW50IGluc246IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYxNDcKLSsjOiB2bXMtYWxwaGEuYzo2MTQ4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIHBzZWN0IGlkeCAxOiAldSwgb2Zmc2V0IDE6IDB4JTA4eCAlMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE1MgotKyM6IHZtcy1hbHBoYS5jOjYxNTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgcHNlY3QgaWR4IDI6ICV1LCBvZmZzZXQgMjogMHglMDh4ICUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MTU4Ci0rIzogdm1zLWFscGhhLmM6NjE1OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBwc2VjdCBpZHggMzogJXUsIG9mZnNldCAzOiAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYxNjMKLSsjOiB2bXMtYWxwaGEuYzo2MTY0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIGdsb2JhbCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjE3NAotKyM6IHZtcy1hbHBoYS5jOjYxNzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICVzIChsZW49JXUrJXUpOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYxOTYKLSsjOiB2bXMtYWxwaGEuYzo2MTk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgKHR5cGU6ICUzdSwgc2l6ZTogNCslM3UpOiAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjIwMAotKyM6IHZtcy1hbHBoYS5jOjYyMDEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVEFfR0JMIChzdGFjayBnbG9iYWwpICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjA0Ci0rIzogdm1zLWFscGhhLmM6NjIwNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9MVyAoc3RhY2sgbG9uZ3dvcmQpIDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMDgKLSsjOiB2bXMtYWxwaGEuYzo2MjA5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RBX1FXIChzdGFjayBxdWFkd29yZCkgMHglMDh4ICUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjEzCi0rIzogdm1zLWFscGhhLmM6NjIxNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9QUSAoc3RhY2sgcHNlY3QgYmFzZSArIG9mZnNldClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjE1Ci0rIzogdm1zLWFscGhhLmM6NjIxNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBwc2VjdDogJXUsIG9mZnNldDogMHglMDh4ICUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjIxCi0rIzogdm1zLWFscGhhLmM6NjIyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9MSSAoc3RhY2sgbGl0ZXJhbClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjI0Ci0rIzogdm1zLWFscGhhLmM6NjIyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9NT0QgKHN0YWNrIG1vZHVsZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjI3Ci0rIzogdm1zLWFscGhhLmM6NjIyOAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQV9DS0FSRyAoY29tcGFyZSBwcm9jZWR1cmUgYXJndW1lbnQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjIzMQotKyM6IHZtcy1hbHBoYS5jOjYyMzIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fQiAoc3RvcmUgYnl0ZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjM0Ci0rIzogdm1zLWFscGhhLmM6NjIzNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19XIChzdG9yZSB3b3JkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyMzcKLSsjOiB2bXMtYWxwaGEuYzo2MjM4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0xXIChzdG9yZSBsb25nd29yZClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjQwCi0rIzogdm1zLWFscGhhLmM6NjI0MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19RVyAoc3RvcmUgcXVhZHdvcmQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI0NgotKyM6IHZtcy1hbHBoYS5jOjYyNDcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fSU1NUiAoc3RvcmUgaW1tZWRpYXRlIHJlcGVhdCkgJXUgYnl0ZXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjUzCi0rIzogdm1zLWFscGhhLmM6NjI1NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19HQkwgKHN0b3JlIGdsb2JhbCkgJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyNTcKLSsjOiB2bXMtYWxwaGEuYzo2MjU4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0NBIChzdG9yZSBjb2RlIGFkZHJlc3MpICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MjYxCi0rIzogdm1zLWFscGhhLmM6NjI2MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19SQiAoc3RvcmUgcmVsYXRpdmUgYnJhbmNoKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyNjQKLSsjOiB2bXMtYWxwaGEuYzo2MjY1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0FCIChzdG9yZSBhYnNvbHV0ZSBicmFuY2gpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI2NwotKyM6IHZtcy1hbHBoYS5jOjYyNjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fT0ZGIChzdG9yZSBvZmZzZXQgdG8gcHNlY3QpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI3MwotKyM6IHZtcy1hbHBoYS5jOjYyNzQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fSU1NIChzdG9yZSBpbW1lZGlhdGUpICV1IGJ5dGVzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjI4MAotKyM6IHZtcy1hbHBoYS5jOjYyODEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVE9fR0JMX0xXIChzdG9yZSBnbG9iYWwgbG9uZ3dvcmQpICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2Mjg0Ci0rIzogdm1zLWFscGhhLmM6NjI4NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19PRkYgKHN0b3JlIExQIHdpdGggcHJvY2VkdXJlIHNpZ25hdHVyZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2Mjg3Ci0rIzogdm1zLWFscGhhLmM6NjI4OAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUT19CUl9HQkwgKHN0b3JlIGJyYW5jaCBnbG9iYWwpICp0b2RvKlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyOTAKLSsjOiB2bXMtYWxwaGEuYzo2MjkxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RPX0JSX1BTIChzdG9yZSBicmFuY2ggcHNlY3QgKyBvZmZzZXQpICp0b2RvKlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyOTQKLSsjOiB2bXMtYWxwaGEuYzo2Mjk1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX05PUCAobm8tb3BlcmF0aW9uKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYyOTcKLSsjOiB2bXMtYWxwaGEuYzo2Mjk4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0FERCAoYWRkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMDAKLSsjOiB2bXMtYWxwaGEuYzo2MzAxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1NVQiAoc3VidHJhY3QpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMwMwotKyM6IHZtcy1hbHBoYS5jOjYzMDQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfTVVMIChtdWx0aXBseSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzA2Ci0rIzogdm1zLWFscGhhLmM6NjMwNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9ESVYgKGRpdmlkZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzA5Ci0rIzogdm1zLWFscGhhLmM6NjMxMAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9BTkQgKGxvZ2ljYWwgYW5kKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMTIKLSsjOiB2bXMtYWxwaGEuYzo2MzEzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0lPUiAobG9naWNhbCBpbmNsdXNpdmUgb3IpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMxNQotKyM6IHZtcy1hbHBoYS5jOjYzMTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfRU9SIChsb2dpY2FsIGV4Y2x1c2l2ZSBvcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzE4Ci0rIzogdm1zLWFscGhhLmM6NjMxOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9ORUcgKG5lZ2F0ZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzIxCi0rIzogdm1zLWFscGhhLmM6NjMyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9DT00gKGNvbXBsZW1lbnQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjMyNAotKyM6IHZtcy1hbHBoYS5jOjYzMjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJPUFJfSU5TViAoaW5zZXJ0IGZpZWxkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMjcKLSsjOiB2bXMtYWxwaGEuYzo2MzI4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX0FTSCAoYXJpdGhtZXRpYyBzaGlmdClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzMwCi0rIzogdm1zLWFscGhhLmM6NjMzMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9VU0ggKHVuc2lnbmVkIHNoaWZ0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMzMKLSsjOiB2bXMtYWxwaGEuYzo2MzM0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1JPVCAocm90YXRlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMzYKLSsjOiB2bXMtYWxwaGEuYzo2MzM3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1NFTCAoc2VsZWN0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzMzkKLSsjOiB2bXMtYWxwaGEuYzo2MzQwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiT1BSX1JFREVGIChyZWRlZmluZSBzeW1ib2wgdG8gY3VyciBsb2NhdGlvbilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzQyCi0rIzogdm1zLWFscGhhLmM6NjM0MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIk9QUl9SRURFRiAoZGVmaW5lIGEgbGl0ZXJhbClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzQ2Ci0rIzogdm1zLWFscGhhLmM6NjM0NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19MUCAoc3RvcmUgY29uZCBsaW5rYWdlIHBhaXIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM1MAotKyM6IHZtcy1hbHBoYS5jOjYzNTEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfTFBfUFNCIChzdG9yZSBjb25kIGxpbmthZ2UgcGFpciArIHNpZ25hdHVyZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzUyCi0rIzogdm1zLWFscGhhLmM6NjM1MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGxpbmthZ2UgaW5kZXg6ICV1LCBwcm9jZWR1cmU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzU1Ci0rIzogdm1zLWFscGhhLmM6NjM1NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHNpZ25hdHVyZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNTgKLSsjOiB2bXMtYWxwaGEuYzo2MzU5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0dCTCAoc3RvcmUgY29uZCBnbG9iYWwpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM2MAotKyM6IHZtcy1hbHBoYS5jOjYzNjEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBsaW5rYWdlIGluZGV4OiAldSwgZ2xvYmFsOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM2NAotKyM6IHZtcy1hbHBoYS5jOjYzNjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfR0NBIChzdG9yZSBjb25kIGNvZGUgYWRkcmVzcylcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2MzY2Ci0rIzogdm1zLWFscGhhLmM6NjM2NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGxpbmthZ2UgaW5kZXg6ICV1LCBwcm9jZWR1cmUgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNzAKLSsjOiB2bXMtYWxwaGEuYzo2MzcxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX1BTIChzdG9yZSBjb25kIHBzZWN0ICsgb2Zmc2V0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzNzMKLSsjOiB2bXMtYWxwaGEuYzo2Mzc0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgbGlua2FnZSBpbmRleDogJXUsIHBzZWN0OiAldSwgb2Zmc2V0OiAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzODAKLSsjOiB2bXMtYWxwaGEuYzo2MzgxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX05PUF9HQkwgKHN0b3JlIGNvbmQgTk9QIGF0IGdsb2JhbCBhZGRyKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjYzODQKLSsjOiB2bXMtYWxwaGEuYzo2Mzg1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX05PUF9QUyAoc3RvcmUgY29uZCBOT1AgYXQgcHNlY3QgKyBvZmZzZXQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM4OAotKyM6IHZtcy1hbHBoYS5jOjYzODkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfQlNSX0dCTCAoc3RvcmUgY29uZCBCU1IgYXQgZ2xvYmFsIGFkZHIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjM5MgotKyM6IHZtcy1hbHBoYS5jOjYzOTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfQlNSX1BTIChzdG9yZSBjb25kIEJTUiBhdCBwc2VjdCArIG9mZnNldClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2Mzk2Ci0rIzogdm1zLWFscGhhLmM6NjM5NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19MREFfR0JMIChzdG9yZSBjb25kIExEQSBhdCBnbG9iYWwgYWRkcilcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDAwCi0rIzogdm1zLWFscGhhLmM6NjQwMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlNUQ19MREFfUFMgKHN0b3JlIGNvbmQgTERBIGF0IHBzZWN0ICsgb2Zmc2V0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MDQKLSsjOiB2bXMtYWxwaGEuYzo2NDA1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0JPSF9HQkwgKHN0b3JlIGNvbmQgQk9IIGF0IGdsb2JhbCBhZGRyKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MDgKLSsjOiB2bXMtYWxwaGEuYzo2NDA5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX0JPSF9QUyAoc3RvcmUgY29uZCBCT0ggYXQgcHNlY3QgKyBvZmZzZXQpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQxMwotKyM6IHZtcy1hbHBoYS5jOjY0MTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJTVENfTkJIX0dCTCAoc3RvcmUgY29uZCBvciBoaW50IGF0IGdsb2JhbCBhZGRyKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MTcKLSsjOiB2bXMtYWxwaGEuYzo2NDE4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiU1RDX05CSF9QUyAoc3RvcmUgY29uZCBvciBoaW50IGF0IHBzZWN0ICsgb2Zmc2V0KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MjEKLSsjOiB2bXMtYWxwaGEuYzo2NDIyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQ1RMX1NFVFJCIChzZXQgcmVsb2NhdGlvbiBiYXNlKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MjcKLSsjOiB2bXMtYWxwaGEuYzo2NDI4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQ1RMX0FVR1JCIChhdWdtZW50IHJlbG9jYXRpb24gYmFzZSkgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NDMxCi0rIzogdm1zLWFscGhhLmM6NjQzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkNUTF9ERkxPQyAoZGVmaW5lIGxvY2F0aW9uKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY0MzQKLSsjOiB2bXMtYWxwaGEuYzo2NDM1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiQ1RMX1NUTE9DIChzZXQgbG9jYXRpb24pXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQzNwotKyM6IHZtcy1hbHBoYS5jOjY0MzgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJDVExfU1RLREwgKHN0YWNrIGRlZmluZWQgbG9jYXRpb24pXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQ0MCB2bXMtYWxwaGEuYzo2ODY0IHZtcy1hbHBoYS5jOjY5OTAKLSsjOiB2bXMtYWxwaGEuYzo2NDQxIHZtcy1hbHBoYS5jOjY4NjUgdm1zLWFscGhhLmM6Njk5MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIip1bmhhbmRsZWQqXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjQ3MCB2bXMtYWxwaGEuYzo2NTA5Ci0rIzogdm1zLWFscGhhLmM6NjQ3MSB2bXMtYWxwaGEuYzo2NTEwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgR1NUIHJlY29yZCBsZW5ndGhcbiIKLSBtc2dzdHIgIiIKLSAKLSAjLiBJbGwtZm9ybWVkLgotLSM6IHZtcy1hbHBoYS5jOjY0OTEKLSsjOiB2bXMtYWxwaGEuYzo2NDkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IGZpbmQgRU1IIGluIGZpcnN0IEdTVCByZWNvcmRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NTE3Ci0rIzogdm1zLWFscGhhLmM6NjUxOAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEdTVCByZWNvcmQgaGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjUzMAotKyM6IHZtcy1hbHBoYS5jOjY1MzEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgY29ycnVwdGVkIEdTVFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY1MzgKLSsjOiB2bXMtYWxwaGEuYzo2NTM5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgR1NUIHJlY29yZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY1NjcKLSsjOiB2bXMtYWxwaGEuYzo2NTY4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIHVuaGFuZGxlZCBFT0JKIHJlY29yZCB0eXBlICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjU5MQotKyM6IHZtcy1hbHBoYS5jOjY1OTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGJpdGNvdW50OiAldSwgYmFzZSBhZGRyOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NjA1Ci0rIzogdm1zLWFscGhhLmM6NjYwNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGJpdG1hcDogMHglMDh4IChjb3VudDogJXUpOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY2MTIKLSsjOiB2bXMtYWxwaGEuYzo2NjEzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICUwOHgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjYzOAotKyM6IHZtcy1hbHBoYS5jOjY2MzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGltYWdlICV1ICgldSBlbnRyaWVzKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY2NDQKLSsjOiB2bXMtYWxwaGEuYzo2NjQ1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgb2Zmc2V0OiAweCUwOHgsIHZhbDogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjY2NgotKyM6IHZtcy1hbHBoYS5jOjY2NjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGltYWdlICV1ICgldSBlbnRyaWVzKSwgb2Zmc2V0czpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2NjczCi0rIzogdm1zLWFscGhhLmM6NjY3NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAweCUwOHgiCi0gbXNnc3RyICIiCi0gCi0gIy4gNjQgYml0cy4KLS0jOiB2bXMtYWxwaGEuYzo2Nzk1Ci0rIzogdm1zLWFscGhhLmM6Njc5NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIjY0IGJpdHMgKnVuaGFuZGxlZCpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODAwCi0rIzogdm1zLWFscGhhLmM6NjgwMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNsYXNzOiAldSwgZHR5cGU6ICV1LCBsZW5ndGg6ICV1LCBwb2ludGVyOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODExCi0rIzogdm1zLWFscGhhLmM6NjgxMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIm5vbi1jb250aWd1b3VzIGFycmF5IG9mICVzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjgxNgotKyM6IHZtcy1hbHBoYS5jOjY4MTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJkaW1jdDogJXUsIGFmbGFnczogMHglMDJ4LCBkaWdpdHM6ICV1LCBzY2FsZTogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODIxCi0rIzogdm1zLWFscGhhLmM6NjgyMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImFyc2l6ZTogJXUsIGEwOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODI1Ci0rIzogdm1zLWFscGhhLmM6NjgyNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIlN0cmlkZXM6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjgzNQotKyM6IHZtcy1hbHBoYS5jOjY4MzYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJCb3VuZHM6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg0MQotKyM6IHZtcy1hbHBoYS5jOjY4NDIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJbJXVdOiBMb3dlcjogJXUsIHVwcGVyOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4NTMKLSsjOiB2bXMtYWxwaGEuYzo2ODU0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidW5hbGlnbmVkIGJpdC1zdHJpbmcgb2YgJXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODU4Ci0rIzogdm1zLWFscGhhLmM6Njg1OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImJhc2U6ICV1LCBwb3M6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg3OQotKyM6IHZtcy1hbHBoYS5jOjY4ODAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ2ZmxhZ3M6IDB4JTAyeCwgdmFsdWU6IDB4JTA4eCAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg4NQotKyM6IHZtcy1hbHBoYS5jOjY4ODYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIobm8gdmFsdWUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg4OAotKyM6IHZtcy1hbHBoYS5jOjY4ODkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIobm90IGFjdGl2ZSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2ODkxCi0rIzogdm1zLWFscGhhLmM6Njg5MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIihub3QgYWxsb2NhdGVkKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY4OTQKLSsjOiB2bXMtYWxwaGEuYzo2ODk1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiKGRlc2NyaXB0b3IpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njg5OAotKyM6IHZtcy1hbHBoYS5jOjY4OTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIodHJhaWxpbmcgdmFsdWUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkwMQotKyM6IHZtcy1hbHBoYS5jOjY5MDIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIodmFsdWUgc3BlYyBmb2xsb3dzKVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5MDQKLSsjOiB2bXMtYWxwaGEuYzo2OTA1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiKGF0IGJpdCBvZmZzZXQgJXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkwOAotKyM6IHZtcy1hbHBoYS5jOjY5MDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIocmVnOiAldSwgZGlzcDogJXUsIGluZGlyOiAldSwga2luZDogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5MTUKLSsjOiB2bXMtYWxwaGEuYzo2OTE2Ci0gbXNnaWQgImxpdGVyYWwiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NjkxOAotKyM6IHZtcy1hbHBoYS5jOjY5MTkKLSBtc2dpZCAiYWRkcmVzcyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTIxCi0rIzogdm1zLWFscGhhLmM6NjkyMgotIG1zZ2lkICJkZXNjIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5MjQKLSsjOiB2bXMtYWxwaGEuYzo2OTI1Ci0gbXNnaWQgInJlZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo2OTQxCi0rIzogdm1zLWFscGhhLmM6Njk0MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImxlbjogJTJ1LCBraW5kOiAlMnUgIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5NDcKLSsjOiB2bXMtYWxwaGEuYzo2OTQ4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYXRvbWljLCB0eXBlPTB4JTAyeCAlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5NTEKLSsjOiB2bXMtYWxwaGEuYzo2OTUyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiaW5kaXJlY3QsIGRlZmluZWQgYXQgMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk1NQotKyM6IHZtcy1hbHBoYS5jOjY5NTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ0eXBlZCBwb2ludGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk1OQotKyM6IHZtcy1hbHBoYS5jOjY5NjAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJwb2ludGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk2NwotKyM6IHZtcy1hbHBoYS5jOjY5NjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJhcnJheSwgZGltOiAldSwgYml0bWFwOiAiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Njk3NAotKyM6IHZtcy1hbHBoYS5jOjY5NzUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJhcnJheSBkZXNjcmlwdG9yOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5ODEKLSsjOiB2bXMtYWxwaGEuYzo2OTgyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAidHlwZSBzcGVjIGZvciBlbGVtZW50OlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjY5ODMKLSsjOiB2bXMtYWxwaGEuYzo2OTg0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidHlwZSBzcGVjIGZvciBzdWJzY3JpcHQgJXU6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzAwMQotKyM6IHZtcy1hbHBoYS5jOjcwMDIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJEZWJ1ZyBzeW1ib2wgdGFibGU6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzAxMgotKyM6IHZtcy1hbHBoYS5jOjcwMTMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBEU1QgaGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzAxOAotKyM6IHZtcy1hbHBoYS5jOjcwMTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgdHlwZTogJTN1LCBsZW46ICUzdSAoYXQgMHglMDh4KTogIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwMzIKLSsjOiB2bXMtYWxwaGEuYzo3MDMzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRFNUIHN5bWJvbFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwNzUKLSsjOiB2bXMtYWxwaGEuYzo3MDc2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAic3RhbmRhcmQgZGF0YTogJXNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDc4IHZtcy1hbHBoYS5jOjcxNjYKLSsjOiB2bXMtYWxwaGEuYzo3MDc5IHZtcy1hbHBoYS5jOjcxNjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwODUKLSsjOiB2bXMtYWxwaGEuYzo3MDg2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAibW9kYmVnXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzA4NwotKyM6IHZtcy1hbHBoYS5jOjcwODgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBmbGFnczogJWQsIGxhbmd1YWdlOiAldSwgbWFqb3I6ICV1LCBtaW5vcjogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MDkzIHZtcy1hbHBoYS5jOjczNjcKLSsjOiB2bXMtYWxwaGEuYzo3MDk0IHZtcy1hbHBoYS5jOjczNjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBtb2R1bGUgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcwOTYKLSsjOiB2bXMtYWxwaGEuYzo3MDk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgY29tcGlsZXIgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTAxCi0rIzogdm1zLWFscGhhLmM6NzEwMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIm1vZGVuZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMDgKLSsjOiB2bXMtYWxwaGEuYzo3MTA5Ci0gbXNnaWQgInJ0bmJlZ1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxMTAKLSsjOiB2bXMtYWxwaGEuYzo3MTExCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgIGZsYWdzOiAldSwgYWRkcmVzczogMHglMDh4LCBwZC1hZGRyZXNzOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTE1Ci0rIzogdm1zLWFscGhhLmM6NzExNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICByb3V0aW5lIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTIzCi0rIzogdm1zLWFscGhhLmM6NzEyNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInJ0bmVuZDogc2l6ZSAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTMxCi0rIzogdm1zLWFscGhhLmM6NzEzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInByb2xvZzogYmtwdCBhZGRyZXNzIDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxNDAKLSsjOiB2bXMtYWxwaGEuYzo3MTQxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZXBpbG9nOiBmbGFnczogJXUsIGNvdW50OiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxNTAKLSsjOiB2bXMtYWxwaGEuYzo3MTUxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiYmxrYmVnOiBhZGRyZXNzOiAweCUwOHgsIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTU5Ci0rIzogdm1zLWFscGhhLmM6NzE2MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImJsa2VuZDogc2l6ZTogMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE2NQotKyM6IHZtcy1hbHBoYS5jOjcxNjYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJ0eXBzcGVjIChsZW46ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxNzIKLSsjOiB2bXMtYWxwaGEuYzo3MTczCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAic2VwdHlwLCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzE4MQotKyM6IHZtcy1hbHBoYS5jOjcxODIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJyZWNiZWc6IG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTgzCi0rIzogdm1zLWFscGhhLmM6NzE4NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBsZW46ICV1IGJpdHNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MTg4Ci0rIzogdm1zLWFscGhhLmM6NzE4OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInJlY2VuZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxOTIKLSsjOiB2bXMtYWxwaGEuYzo3MTkzCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZW51bWJlZywgbGVuOiAldSwgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcxOTYKLSsjOiB2bXMtYWxwaGEuYzo3MTk3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZW51bWVsdCwgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyMDAKLSsjOiB2bXMtYWxwaGEuYzo3MjAxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZW51bWVuZFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyMDUKLSsjOiB2bXMtYWxwaGEuYzo3MjA2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAibGFiZWwsIG5hbWU6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjA3Ci0rIzogdm1zLWFscGhhLmM6NzIwOAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICBhZGRyZXNzOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjE3Ci0rIzogdm1zLWFscGhhLmM6NzIxOAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImRpc2NvbnRpZ3VvdXMgcmFuZ2UgKG5icjogJXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzIyMAotKyM6IHZtcy1hbHBoYS5jOjcyMjEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgYWRkcmVzczogMHglMDh4LCBzaXplOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyMzAKLSsjOiB2bXMtYWxwaGEuYzo3MjMxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAibGluZSBudW0gIChsZW46ICV1KVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyNDcKLSsjOiB2bXMtYWxwaGEuYzo3MjQ4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZGVsdGFfcGNfdyAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyNTQKLSsjOiB2bXMtYWxwaGEuYzo3MjU1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiaW5jcl9saW51bShiKTogKyV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI2MAotKyM6IHZtcy1hbHBoYS5jOjcyNjEKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJpbmNyX2xpbnVtX3c6ICsldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyNjYKLSsjOiB2bXMtYWxwaGEuYzo3MjY3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiaW5jcl9saW51bV9sOiArJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjcyCi0rIzogdm1zLWFscGhhLmM6NzI3MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInNldF9saW5lX251bSh3KSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjcyNzcKLSsjOiB2bXMtYWxwaGEuYzo3Mjc4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAic2V0X2xpbmVfbnVtX2IgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjgyCi0rIzogdm1zLWFscGhhLmM6NzI4MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInNldF9saW5lX251bV9sICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzI4NwotKyM6IHZtcy1hbHBoYS5jOjcyODgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJzZXRfYWJzX3BjOiAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MjkxCi0rIzogdm1zLWFscGhhLmM6NzI5MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImRlbHRhX3BjX2w6ICsweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Mjk2Ci0rIzogdm1zLWFscGhhLmM6NzI5NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInRlcm0oYik6IDB4JTAyeCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Mjk4Ci0rIzogdm1zLWFscGhhLmM6NzI5OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICAgICAgcGM6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczMDMKLSsjOiB2bXMtYWxwaGEuYzo3MzA0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAidGVybV93OiAweCUwNHgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzMwNQotKyM6IHZtcy1hbHBoYS5jOjczMDYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgcGM6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczMTEKLSsjOiB2bXMtYWxwaGEuYzo3MzEyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiZGVsdGEgcGMgKyUtNGQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzMxNQotKyM6IHZtcy1hbHBoYS5jOjczMTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAgcGM6IDB4JTA4eCBsaW5lOiAlNXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzIwCi0rIzogdm1zLWFscGhhLmM6NzMyMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICAqdW5oYW5kbGVkKiBjbWQgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzM1Ci0rIzogdm1zLWFscGhhLmM6NzMzNgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInNvdXJjZSAobGVuOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzUwCi0rIzogdm1zLWFscGhhLmM6NzM1MQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIGRlY2xmaWxlOiBsZW46ICV1LCBmbGFnczogJXUsIGZpbGVpZDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3MzU1Ci0rIzogdm1zLWFscGhhLmM6NzM1NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHJtczogY2R0OiAweCUwOHggJTA4eCwgZWJrOiAweCUwOHgsIGZmYjogMHglMDR4LCByZm86ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzM2NAotKyM6IHZtcy1hbHBoYS5jOjczNjUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBmaWxlbmFtZSAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczNzMKLSsjOiB2bXMtYWxwaGEuYzo3Mzc0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgc2V0ZmlsZSAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczNzggdm1zLWFscGhhLmM6NzM4MwotKyM6IHZtcy1hbHBoYS5jOjczNzkgdm1zLWFscGhhLmM6NzM4NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHNldHJlYyAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjczODggdm1zLWFscGhhLmM6NzM5MwotKyM6IHZtcy1hbHBoYS5jOjczODkgdm1zLWFscGhhLmM6NzM5NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgIHNldGxudW0gJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Mzk4IHZtcy1hbHBoYS5jOjc0MDMKLSsjOiB2bXMtYWxwaGEuYzo3Mzk5IHZtcy1hbHBoYS5jOjc0MDQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICBkZWZsaW5lcyAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0MDcKLSsjOiB2bXMtYWxwaGEuYzo3NDA4Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICAgZm9ybWZlZWRcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDExCi0rIzogdm1zLWFscGhhLmM6NzQxMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgICp1bmhhbmRsZWQqIGNtZCAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0MjMKLSsjOiB2bXMtYWxwaGEuYzo3NDI0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiKnVuaGFuZGxlZCogZHN0IHR5cGUgJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDU1Ci0rIzogdm1zLWFscGhhLmM6NzQ1NgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgImNhbm5vdCByZWFkIEVJSERcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDU5Ci0rIzogdm1zLWFscGhhLmM6NzQ2MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkVJSEQ6IChzaXplOiAldSwgbmJyIGJsb2NrczogJXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQ2MwotKyM6IHZtcy1hbHBoYS5jOjc0NjQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgbWFqb3JpZDogJXUsIG1pbm9yaWQ6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQ3MQotKyM6IHZtcy1hbHBoYS5jOjc0NzIKLSBtc2dpZCAiZXhlY3V0YWJsZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDc0Ci0rIzogdm1zLWFscGhhLmM6NzQ3NQotIG1zZ2lkICJsaW5rYWJsZSBpbWFnZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDgxCi0rIzogdm1zLWFscGhhLmM6NzQ4MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBpbWFnZSB0eXBlOiAldSAoJXMpIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc0ODcKLSsjOiB2bXMtYWxwaGEuYzo3NDg4Ci0gbXNnaWQgIm5hdGl2ZSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NDkwCi0rIzogdm1zLWFscGhhLmM6NzQ5MQotIG1zZ2lkICJDTEkiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzQ5NwotKyM6IHZtcy1hbHBoYS5jOjc0OTgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIsIHN1YnR5cGU6ICV1ICglcylcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTA0Ci0rIzogdm1zLWFscGhhLmM6NzUwNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBvZmZzZXRzOiBpc2Q6ICV1LCBhY3RpdjogJXUsIHN5bWRiZzogJXUsIGltZ2lkOiAldSwgcGF0Y2g6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzUwOAotKyM6IHZtcy1hbHBoYS5jOjc1MDkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgZml4dXAgaW5mbyBydmE6ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTEwCi0rIzogdm1zLWFscGhhLmM6NzUxMQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiwgc3ltYm9sIHZlY3RvciBydmE6ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTEzCi0rIzogdm1zLWFscGhhLmM6NzUxNAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiXG4iCi0gIiB2ZXJzaW9uIGFycmF5IG9mZjogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTE4Ci0rIzogdm1zLWFscGhhLmM6NzUxOQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBpbWcgSS9PIGNvdW50OiAldSwgbmJyIGNoYW5uZWxzOiAldSwgcmVxIHByaTogJTA4eCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTI0Ci0rIzogdm1zLWFscGhhLmM6NzUyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBsaW5rZXIgZmxhZ3M6ICUwOHg6IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1NTUKLSsjOiB2bXMtYWxwaGEuYzo3NTU2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGlkZW50OiAweCUwOHgsIHN5c3ZlcjogMHglMDh4LCBtYXRjaCBjdHJsOiAldSwgc3ltdmVjdF9zaXplOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1NjEKLSsjOiB2bXMtYWxwaGEuYzo3NTYyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIEJQQUdFOiAldSIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTY4Ci0rIzogdm1zLWFscGhhLmM6NzU2OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiwgZXh0IGZpeHVwIG9mZnNldDogJXUsIG5vX29wdCBwc2VjdCBvZmY6ICV1IgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1NzEKLSsjOiB2bXMtYWxwaGEuYzo3NTcyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiLCBhbGlhczogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NTc5Ci0rIzogdm1zLWFscGhhLmM6NzU4MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgInN5c3RlbSB2ZXJzaW9uIGFycmF5IGluZm9ybWF0aW9uOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc1ODMKLSsjOiB2bXMtYWxwaGEuYzo3NTg0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRUlIVk4gaGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU5MwotKyM6IHZtcy1hbHBoYS5jOjc1OTQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSUhWTiB2ZXJzaW9uXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzU5NgotKyM6IHZtcy1hbHBoYS5jOjc1OTcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgICAlMDJ1ICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjAwCi0rIzogdm1zLWFscGhhLmM6NzYwMQotIG1zZ2lkICJCQVNFX0lNQUdFICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjAzCi0rIzogdm1zLWFscGhhLmM6NzYwNAotIG1zZ2lkICJNRU1PUllfTUFOQUdFTUVOVCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjA2Ci0rIzogdm1zLWFscGhhLmM6NzYwNwotIG1zZ2lkICJJTyAgICAgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjA5Ci0rIzogdm1zLWFscGhhLmM6NzYxMAotIG1zZ2lkICJGSUxFU19WT0xVTUVTICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjEyCi0rIzogdm1zLWFscGhhLmM6NzYxMwotIG1zZ2lkICJQUk9DRVNTX1NDSEVEICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjE1Ci0rIzogdm1zLWFscGhhLmM6NzYxNgotIG1zZ2lkICJTWVNHRU4gICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjE4Ci0rIzogdm1zLWFscGhhLmM6NzYxOQotIG1zZ2lkICJDTFVTVEVSU19MT0NLTUdSICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjIxCi0rIzogdm1zLWFscGhhLmM6NzYyMgotIG1zZ2lkICJMT0dJQ0FMX05BTUVTICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjI0Ci0rIzogdm1zLWFscGhhLmM6NzYyNQotIG1zZ2lkICJTRUNVUklUWSAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjI3Ci0rIzogdm1zLWFscGhhLmM6NzYyOAotIG1zZ2lkICJJTUFHRV9BQ1RJVkFUT1IgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjMwCi0rIzogdm1zLWFscGhhLmM6NzYzMQotIG1zZ2lkICJORVRXT1JLUyAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjMzCi0rIzogdm1zLWFscGhhLmM6NzYzNAotIG1zZ2lkICJDT1VOVEVSUyAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjM2Ci0rIzogdm1zLWFscGhhLmM6NzYzNwotIG1zZ2lkICJTVEFCTEUgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjM5Ci0rIzogdm1zLWFscGhhLmM6NzY0MAotIG1zZ2lkICJNSVNDICAgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjQyCi0rIzogdm1zLWFscGhhLmM6NzY0MwotIG1zZ2lkICJDUFUgICAgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjQ1Ci0rIzogdm1zLWFscGhhLmM6NzY0NgotIG1zZ2lkICJWT0xBVElMRSAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjQ4Ci0rIzogdm1zLWFscGhhLmM6NzY0OQotIG1zZ2lkICJTSEVMTCAgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjUxCi0rIzogdm1zLWFscGhhLmM6NzY1MgotIG1zZ2lkICJQT1NJWCAgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjU0Ci0rIzogdm1zLWFscGhhLmM6NzY1NQotIG1zZ2lkICJNVUxUSV9QUk9DRVNTSU5HICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjU3Ci0rIzogdm1zLWFscGhhLmM6NzY1OAotIG1zZ2lkICJHQUxBWFkgICAgICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NjYwCi0rIzogdm1zLWFscGhhLmM6NzY2MQotIG1zZ2lkICIqdW5rbm93biogICAgICAgICIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Njc2IHZtcy1hbHBoYS5jOjc5NTEKLSsjOiB2bXMtYWxwaGEuYzo3Njc3IHZtcy1hbHBoYS5jOjc5NTIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSUhBXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzY3OQotKyM6IHZtcy1hbHBoYS5jOjc2ODAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJJbWFnZSBhY3RpdmF0aW9uOiAgKHNpemU9JXUpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzY4MgotKyM6IHZtcy1hbHBoYS5jOjc2ODMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgRmlyc3QgYWRkcmVzcyA6IDB4JTA4eCAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Njg2Ci0rIzogdm1zLWFscGhhLmM6NzY4NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBTZWNvbmQgYWRkcmVzczogMHglMDh4IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc2OTAKLSsjOiB2bXMtYWxwaGEuYzo3NjkxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIFRoaXJkIGFkZHJlc3MgOiAweCUwOHggMHglMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzY5NAotKyM6IHZtcy1hbHBoYS5jOjc2OTUKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgRm91cnRoIGFkZHJlc3M6IDB4JTA4eCAweCUwOHhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Njk4Ci0rIzogdm1zLWFscGhhLmM6NzY5OQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBTaGFyZWQgaW1hZ2UgIDogMHglMDh4IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MDkKLSsjOiB2bXMtYWxwaGEuYzo3NzEwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRUlISVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MTMKLSsjOiB2bXMtYWxwaGEuYzo3NzE0Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiSW1hZ2UgaWRlbnRpZmljYXRpb246IChtYWpvcjogJXUsIG1pbm9yOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzE2Ci0rIzogdm1zLWFscGhhLmM6NzcxNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBpbWFnZSBuYW1lICAgICAgIDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MTgKLSsjOiB2bXMtYWxwaGEuYzo3NzE5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGxpbmsgdGltZSAgICAgICAgOiAlc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MjAKLSsjOiB2bXMtYWxwaGEuYzo3NzIxCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGltYWdlIGlkZW50ICAgICAgOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzcyMgotKyM6IHZtcy1hbHBoYS5jOjc3MjMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgbGlua2VyIGlkZW50ICAgICA6ICUuKnNcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzI0Ci0rIzogdm1zLWFscGhhLmM6NzcyNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBpbWFnZSBidWlsZCBpZGVudDogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MzQKLSsjOiB2bXMtYWxwaGEuYzo3NzM1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRUlIU1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3MzgKLSsjOiB2bXMtYWxwaGEuYzo3NzM5Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiSW1hZ2Ugc3ltYm9sICYgZGVidWcgdGFibGU6IChtYWpvcjogJXUsIG1pbm9yOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzQ0Ci0rIzogdm1zLWFscGhhLmM6Nzc0NQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBkZWJ1ZyBzeW1ib2wgdGFibGUgOiB2Ym46ICV1LCBzaXplOiAldSAoMHgleClcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3NzQ5Ci0rIzogdm1zLWFscGhhLmM6Nzc1MAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBnbG9iYWwgc3ltYm9sIHRhYmxlOiB2Ym46ICV1LCByZWNvcmRzOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3NTQKLSsjOiB2bXMtYWxwaGEuYzo3NzU1Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGRlYnVnIG1vZHVsZSB0YWJsZSA6IHZibjogJXUsIHNpemU6ICV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzc2NwotKyM6IHZtcy1hbHBoYS5jOjc3NjgKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBFSVNEXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzc3OAotKyM6IHZtcy1hbHBoYS5jOjc3NzkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0gIkltYWdlIHNlY3Rpb24gZGVzY3JpcHRvcjogKG1ham9yOiAldSwgbWlub3I6ICV1LCBzaXplOiAldSwgb2Zmc2V0OiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3Nzg2Ci0rIzogdm1zLWFscGhhLmM6Nzc4NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBzZWN0aW9uOiBiYXNlOiAweCUwOHglMDh4IHNpemU6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc3OTEKLSsjOiB2bXMtYWxwaGEuYzo3NzkyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGZsYWdzOiAweCUwNHgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzgyOQotKyM6IHZtcy1hbHBoYS5jOjc4MzAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgdmJuOiAldSwgcGZjOiAldSwgbWF0Y2hjdGw6ICV1IHR5cGU6ICV1ICgiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzgzNQotKyM6IHZtcy1hbHBoYS5jOjc4MzYKLSBtc2dpZCAiTk9STUFMIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4MzgKLSsjOiB2bXMtYWxwaGEuYzo3ODM5Ci0gbXNnaWQgIlNIUkZYRCIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODQxCi0rIzogdm1zLWFscGhhLmM6Nzg0MgotIG1zZ2lkICJQUlZGWEQiCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg0NAotKyM6IHZtcy1hbHBoYS5jOjc4NDUKLSBtc2dpZCAiU0hSUElDIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4NDcKLSsjOiB2bXMtYWxwaGEuYzo3ODQ4Ci0gbXNnaWQgIlBSVlBJQyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODUwCi0rIzogdm1zLWFscGhhLmM6Nzg1MQotIG1zZ2lkICJVU1JTVEFDSyIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3ODU2Ci0rIzogdm1zLWFscGhhLmM6Nzg1NwotIG1zZ2lkICIpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg1OQotKyM6IHZtcy1hbHBoYS5jOjc4NjAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgaWRlbnQ6IDB4JTA4eCwgbmFtZTogJS4qc1xuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc4NjkKLSsjOiB2bXMtYWxwaGEuYzo3ODcwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRE1UXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg3MwotKyM6IHZtcy1hbHBoYS5jOjc4NzQKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJEZWJ1ZyBtb2R1bGUgdGFibGU6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg4MgotKyM6IHZtcy1hbHBoYS5jOjc4ODMKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBETVQgaGVhZGVyXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg4OAotKyM6IHZtcy1hbHBoYS5jOjc4ODkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgbW9kdWxlIG9mZnNldDogMHglMDh4LCBzaXplOiAweCUwOHgsICgldSBwc2VjdHMpXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzg5OAotKyM6IHZtcy1hbHBoYS5jOjc4OTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBETVQgcHNlY3RcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTAyCi0rIzogdm1zLWFscGhhLmM6NzkwMwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgcHNlY3Qgc3RhcnQ6IDB4JTA4eCwgbGVuZ3RoOiAldVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5MTUKLSsjOiB2bXMtYWxwaGEuYzo3OTE2Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiY2Fubm90IHJlYWQgRFNUXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6NzkyNQotKyM6IHZtcy1hbHBoYS5jOjc5MjYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJjYW5ub3QgcmVhZCBHU1RcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTI5Ci0rIzogdm1zLWFscGhhLmM6NzkzMAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIkdsb2JhbCBzeW1ib2wgdGFibGU6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk1OAotKyM6IHZtcy1hbHBoYS5jOjc5NTkKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICJJbWFnZSBhY3RpdmF0b3IgZml4dXA6IChtYWpvcjogJXUsIG1pbm9yOiAldSlcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTYyCi0rIzogdm1zLWFscGhhLmM6Nzk2MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgaWFmbGluayA6IDB4JTA4eCAlMDh4XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6Nzk2NgotKyM6IHZtcy1hbHBoYS5jOjc5NjcKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgIGZpeHVwbG5rOiAweCUwOHggJTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5NjkKLSsjOiB2bXMtYWxwaGEuYzo3OTcwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBzaXplIDogJXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTcxCi0rIzogdm1zLWFscGhhLmM6Nzk3MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgZmxhZ3M6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5NzYKLSsjOiB2bXMtYWxwaGEuYzo3OTc3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBxcmVsZml4b2ZmOiAlNXUsIGxyZWxmaXhvZmY6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5ODEKLSsjOiB2bXMtYWxwaGEuYzo3OTgyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBxZG90YWRyb2ZmOiAlNXUsIGxkb3RhZHJvZmY6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5ODYKLSsjOiB2bXMtYWxwaGEuYzo3OTg3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBjb2RlYWRyb2ZmOiAlNXUsIGxwZml4b2ZmICA6ICU1dVxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjc5ODkKLSsjOiB2bXMtYWxwaGEuYzo3OTkwCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBjaGdwcnRvZmYgOiAlNXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTkzCi0rIzogdm1zLWFscGhhLmM6Nzk5NAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgc2hsc3RvZmYgIDogJTV1LCBzaHJpbWdjbnQgOiAlNXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTk2Ci0rIzogdm1zLWFscGhhLmM6Nzk5NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgc2hsZXh0cmEgIDogJTV1LCBwZXJtY3R4ICAgOiAlNXVcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo3OTk5Ci0rIzogdm1zLWFscGhhLmM6ODAwMAotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgYmFzZV92YSA6IDB4JTA4eFxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwMDEKLSsjOiB2bXMtYWxwaGEuYzo4MDAyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBscHBzYmZpeG9mZjogJTV1XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODAwOQotKyM6IHZtcy1hbHBoYS5jOjgwMTAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgU2hhcmVhYmxlIGltYWdlczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDE0Ci0rIzogdm1zLWFscGhhLmM6ODAxNQotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiAgJXU6IHNpemU6ICV1LCBmbGFnczogMHglMDJ4LCBuYW1lOiAlLipzXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODAyMQotKyM6IHZtcy1hbHBoYS5jOjgwMjIKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgcXVhZC13b3JkIHJlbG9jYXRpb24gZml4dXBzOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwMjYKLSsjOiB2bXMtYWxwaGEuYzo4MDI3Ci0gIywgYy1mb3JtYXQKLSBtc2dpZCAiIGxvbmctd29yZCByZWxvY2F0aW9uIGZpeHVwczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDMxCi0rIzogdm1zLWFscGhhLmM6ODAzMgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBxdWFkLXdvcmQgLmFkZHJlc3MgcmVmZXJlbmNlIGZpeHVwczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDM2Ci0rIzogdm1zLWFscGhhLmM6ODAzNwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBsb25nLXdvcmQgLmFkZHJlc3MgcmVmZXJlbmNlIGZpeHVwczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDQxCi0rIzogdm1zLWFscGhhLmM6ODA0MgotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBDb2RlIEFkZHJlc3MgUmVmZXJlbmNlIEZpeHVwczpcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiB2bXMtYWxwaGEuYzo4MDQ2Ci0rIzogdm1zLWFscGhhLmM6ODA0NwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIiBMaW5rYWdlIFBhaXJzIFJlZmVyZW5jZSBGaXh1cHM6XG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODA1NQotKyM6IHZtcy1hbHBoYS5jOjgwNTYKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIgQ2hhbmdlIFByb3RlY3Rpb24gKCV1IGVudHJpZXMpOlxuIgotIG1zZ3N0ciAiIgotIAotLSM6IHZtcy1hbHBoYS5jOjgwNjEKLSsjOiB2bXMtYWxwaGEuYzo4MDYyCi0gIywgYy1mb3JtYXQKLSBtc2dpZCAiICBiYXNlOiAweCUwOHggJTA4eCwgc2l6ZTogMHglMDh4LCBwcm90OiAweCUwOHggIgotIG1zZ3N0ciAiIgotIAotICMuIEZJWE1FOiB3ZSBkbyBub3QgeWV0IHN1cHBvcnQgcmVsb2NhdGFibGUgbGluay4gIEl0IGlzIG5vdCBvYnZpb3VzCi0gIy4gaG93IHRvIGRvIGl0IGZvciBkZWJ1ZyBpbmZvcy4KLS0jOiB2bXMtYWxwaGEuYzo4OTAxCi0rIzogdm1zLWFscGhhLmM6ODkwMgotIG1zZ2lkICIlUDogcmVsb2NhdGFibGUgbGluayBpcyBub3Qgc3VwcG9ydGVkXG4iCi0gbXNnc3RyICIiCi0gCi0tIzogdm1zLWFscGhhLmM6ODk3MgotKyM6IHZtcy1hbHBoYS5jOjg5NzMKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlUDogbXVsdGlwbGUgZW50cnkgcG9pbnRzOiBpbiBtb2R1bGVzICVCIGFuZCAlQlxuIgotK21zZ2lkICIlUDogbXVsdGlwbGUgZW50cnkgcG9pbnRzOiBpbiBtb2R1bGVzICVwQiBhbmQgJXBCXG4iCi0gbXNnc3RyICIiCi0gCi0gIzogdm1zLWxpYi5jOjE0NDUKLUBAIC04NTk0LDcgKzg1NjQsNyBAQCBtc2dzdHIgIiIKLSAjOiBwZWlnZW4uYzoxOTA2IHBlaWdlbi5jOjIxMDMgcGVwaWdlbi5jOjE5MDYgcGVwaWdlbi5jOjIxMDMgcGV4NjRpZ2VuLmM6MTkwNgotICM6IHBleDY0aWdlbi5jOjIxMDMKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICJXYXJuaW5nLCAucGRhdGEgc2VjdGlvbiBzaXplICglbGQpIGlzIG5vdCBhIG11bHRpcGxlIG9mICVkXG4iCi0rbXNnaWQgIndhcm5pbmcsIC5wZGF0YSBzZWN0aW9uIHNpemUgKCVsZCkgaXMgbm90IGEgbXVsdGlwbGUgb2YgJWRcbiIKLSBtc2dzdHIgIiIKLSAKLSAjOiBwZWlnZW4uYzoxOTEwIHBlaWdlbi5jOjIxMDcgcGVwaWdlbi5jOjE5MTAgcGVwaWdlbi5jOjIxMDcgcGV4NjRpZ2VuLmM6MTkxMAotQEAgLTg3OTUsODIgKzg3NjUsOTIgQEAgbXNnaWQgIiIKLSAiQ2hhcmFjdGVyaXN0aWNzIDB4JXhcbiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzoyOTg5IHBlcGlnZW4uYzoyOTg5IHBleDY0aWdlbi5jOjI5ODkKLSsjOiBwZWlnZW4uYzoyOTkwIHBlcGlnZW4uYzoyOTkwIHBleDY0aWdlbi5jOjI5OTAKLSAjLCBjLWZvcm1hdAotLW1zZ2lkICIlQjogRGF0YSBEaXJlY3Rvcnkgc2l6ZSAoJWx4KSBleGNlZWRzIHNwYWNlIGxlZnQgaW4gc2VjdGlvbiAoJUx4KSIKLSttc2dpZCAiIgotKyIlcEI6IERhdGEgRGlyZWN0b3J5IHNpemUgKCVseCkgZXhjZWVkcyBzcGFjZSBsZWZ0IGluIHNlY3Rpb24gKCU8UFJJeDY0PikiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6MzAxOSBwZXBpZ2VuLmM6MzAxOSBwZXg2NGlnZW4uYzozMDE5Ci0tbXNnaWQgIkZhaWxlZCB0byB1cGRhdGUgZmlsZSBvZmZzZXRzIGluIGRlYnVnIGRpcmVjdG9yeSIKLSsjOiBwZWlnZW4uYzozMDIxIHBlcGlnZW4uYzozMDIxIHBleDY0aWdlbi5jOjMwMjEKLSttc2dpZCAiZmFpbGVkIHRvIHVwZGF0ZSBmaWxlIG9mZnNldHMgaW4gZGVidWcgZGlyZWN0b3J5IgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjMwMjUgcGVwaWdlbi5jOjMwMjUgcGV4NjRpZ2VuLmM6MzAyNQotLW1zZ2lkICIlQjogRmFpbGVkIHRvIHJlYWQgZGVidWcgZGF0YSBzZWN0aW9uIgotKyM6IHBlaWdlbi5jOjMwMjcgcGVwaWdlbi5jOjMwMjcgcGV4NjRpZ2VuLmM6MzAyNwotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogZmFpbGVkIHRvIHJlYWQgZGVidWcgZGF0YSBzZWN0aW9uIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjM4NDEgcGVwaWdlbi5jOjM4NDEgcGV4NjRpZ2VuLmM6Mzg0MQotKyM6IHBlaWdlbi5jOjM4NDMgcGVwaWdlbi5jOjM4NDMgcGV4NjRpZ2VuLmM6Mzg0MwotICMsIGMtZm9ybWF0Ci0gbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGR1cGxpY2F0ZSBzdHJpbmcgcmVzb3VyY2U6ICVkIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjM5NzYgcGVwaWdlbi5jOjM5NzYgcGV4NjRpZ2VuLmM6Mzk3NgotKyM6IHBlaWdlbi5jOjM5NzggcGVwaWdlbi5jOjM5NzggcGV4NjRpZ2VuLmM6Mzk3OAotIG1zZ2lkICIucnNyYyBtZXJnZSBmYWlsdXJlOiBtdWx0aXBsZSBub24tZGVmYXVsdCBtYW5pZmVzdHMiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6Mzk5NCBwZXBpZ2VuLmM6Mzk5NCBwZXg2NGlnZW4uYzozOTk0Ci0rIzogcGVpZ2VuLmM6Mzk5NiBwZXBpZ2VuLmM6Mzk5NiBwZXg2NGlnZW4uYzozOTk2Ci0gbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGEgZGlyZWN0b3J5IG1hdGNoZXMgYSBsZWFmIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjQwMzYgcGVwaWdlbi5jOjQwMzYgcGV4NjRpZ2VuLmM6NDAzNgotKyM6IHBlaWdlbi5jOjQwMzggcGVwaWdlbi5jOjQwMzggcGV4NjRpZ2VuLmM6NDAzOAotIG1zZ2lkICIucnNyYyBtZXJnZSBmYWlsdXJlOiBkdXBsaWNhdGUgbGVhZiIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0MDM4IHBlcGlnZW4uYzo0MDM4IHBleDY0aWdlbi5jOjQwMzgKLSsjOiBwZWlnZW4uYzo0MDQwIHBlcGlnZW4uYzo0MDQwIHBleDY0aWdlbi5jOjQwNDAKLSAjLCBjLWZvcm1hdAotIG1zZ2lkICIucnNyYyBtZXJnZSBmYWlsdXJlOiBkdXBsaWNhdGUgbGVhZjogJXMiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDEwNCBwZXBpZ2VuLmM6NDEwNCBwZXg2NGlnZW4uYzo0MTA0Ci0tbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGRpcnMgd2l0aCBkaWZmZXJpbmcgY2hhcmFjdGVyaXN0aWNzXG4iCi0rIzogcGVpZ2VuLmM6NDEwNiBwZXBpZ2VuLmM6NDEwNiBwZXg2NGlnZW4uYzo0MTA2Ci0rbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGRpcnMgd2l0aCBkaWZmZXJpbmcgY2hhcmFjdGVyaXN0aWNzIgotIG1zZ3N0ciAiIgotIAotLSM6IHBlaWdlbi5jOjQxMTEgcGVwaWdlbi5jOjQxMTEgcGV4NjRpZ2VuLmM6NDExMQotLW1zZ2lkICIucnNyYyBtZXJnZSBmYWlsdXJlOiBkaWZmZXJpbmcgZGlyZWN0b3J5IHZlcnNpb25zXG4iCi0rIzogcGVpZ2VuLmM6NDExMyBwZXBpZ2VuLmM6NDExMyBwZXg2NGlnZW4uYzo0MTEzCi0rbXNnaWQgIi5yc3JjIG1lcmdlIGZhaWx1cmU6IGRpZmZlcmluZyBkaXJlY3RvcnkgdmVyc2lvbnMiCi0gbXNnc3RyICIiCi0gCi0gIy4gQ29ycnVwdGVkIC5yc3JjIHNlY3Rpb24gLSBjYW5ub3QgbWVyZ2UuCi0tIzogcGVpZ2VuLmM6NDIyOCBwZXBpZ2VuLmM6NDIyOCBwZXg2NGlnZW4uYzo0MjI4Ci0tbXNnaWQgIiVCOiAucnNyYyBtZXJnZSBmYWlsdXJlOiBjb3JydXB0IC5yc3JjIHNlY3Rpb24iCi0rIzogcGVpZ2VuLmM6NDIzMCBwZXBpZ2VuLmM6NDIzMCBwZXg2NGlnZW4uYzo0MjMwCi0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiAucnNyYyBtZXJnZSBmYWlsdXJlOiBjb3JydXB0IC5yc3JjIHNlY3Rpb24iCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDIzNiBwZXBpZ2VuLmM6NDIzNiBwZXg2NGlnZW4uYzo0MjM2Ci0tbXNnaWQgIiVCOiAucnNyYyBtZXJnZSBmYWlsdXJlOiB1bmV4cGVjdGVkIC5yc3JjIHNpemUiCi0rIzogcGVpZ2VuLmM6NDIzOCBwZXBpZ2VuLmM6NDIzOCBwZXg2NGlnZW4uYzo0MjM4Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiAucnNyYyBtZXJnZSBmYWlsdXJlOiB1bmV4cGVjdGVkIC5yc3JjIHNpemUiCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDM3NSBwZXBpZ2VuLmM6NDM3NSBwZXg2NGlnZW4uYzo0Mzc1Ci0tbXNnaWQgIiVCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxXSBiZWNhdXNlIC5pZGF0YSQyIGlzIG1pc3NpbmciCi0rIzogcGVpZ2VuLmM6NDM3NyBwZXBpZ2VuLmM6NDM3NyBwZXg2NGlnZW4uYzo0Mzc3Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxXSBiZWNhdXNlIC5pZGF0YSQyIGlzIG1pc3NpbmciCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDM5NSBwZXBpZ2VuLmM6NDM5NSBwZXg2NGlnZW4uYzo0Mzk1Ci0tbXNnaWQgIiVCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxXSBiZWNhdXNlIC5pZGF0YSQ0IGlzIG1pc3NpbmciCi0rIzogcGVpZ2VuLmM6NDM5NyBwZXBpZ2VuLmM6NDM5NyBwZXg2NGlnZW4uYzo0Mzk3Ci0rIywgYy1mb3JtYXQKLSttc2dpZCAiJXBCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxXSBiZWNhdXNlIC5pZGF0YSQ0IGlzIG1pc3NpbmciCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDQxNiBwZXBpZ2VuLmM6NDQxNiBwZXg2NGlnZW4uYzo0NDE2Ci0tbXNnaWQgIiVCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVsxMl0gYmVjYXVzZSAuaWRhdGEkNSBpcyBtaXNzaW5nIgotKyM6IHBlaWdlbi5jOjQ0MTggcGVwaWdlbi5jOjQ0MTggcGV4NjRpZ2VuLmM6NDQxOAotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbMTJdIGJlY2F1c2UgLmlkYXRhJDUgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0NDM2IHBlcGlnZW4uYzo0NDM2IHBleDY0aWdlbi5jOjQ0MzYKLSsjOiBwZWlnZW4uYzo0NDM4IHBlcGlnZW4uYzo0NDM4IHBleDY0aWdlbi5jOjQ0MzgKLSsjLCBjLWZvcm1hdAotIG1zZ2lkICIiCi0tIiVCOiB1bmFibGUgdG8gZmlsbCBpbiBEYXRhRGljdGlvbmFyeVtQRV9JTVBPUlRfQUREUkVTU19UQUJMRSAoMTIpXSBiZWNhdXNlIC4iCi0rIiVwQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbUEVfSU1QT1JUX0FERFJFU1NfVEFCTEUgKDEyKV0gYmVjYXVzZSAuIgotICJpZGF0YSQ2IGlzIG1pc3NpbmciCi0gbXNnc3RyICIiCi0gCi0tIzogcGVpZ2VuLmM6NDQ3OCBwZXBpZ2VuLmM6NDQ3OCBwZXg2NGlnZW4uYzo0NDc4Ci0rIzogcGVpZ2VuLmM6NDQ4MCBwZXBpZ2VuLmM6NDQ4MCBwZXg2NGlnZW4uYzo0NDgwCi0rIywgYy1mb3JtYXQKLSBtc2dpZCAiIgotLSIlQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbUEVfSU1QT1JUX0FERFJFU1NfVEFCTEUoMTIpXSBiZWNhdXNlIC4iCi0rIiVwQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbUEVfSU1QT1JUX0FERFJFU1NfVEFCTEUoMTIpXSBiZWNhdXNlIC4iCi0gImlkYXRhJDYgaXMgbWlzc2luZyIKLSBtc2dzdHIgIiIKLSAKLS0jOiBwZWlnZW4uYzo0NTAzIHBlcGlnZW4uYzo0NTAzIHBleDY0aWdlbi5jOjQ1MDMKLS1tc2dpZCAiJUI6IHVuYWJsZSB0byBmaWxsIGluIERhdGFEaWN0aW9uYXJ5WzldIGJlY2F1c2UgX190bHNfdXNlZCBpcyBtaXNzaW5nIgotKyM6IHBlaWdlbi5jOjQ1MDUgcGVwaWdlbi5jOjQ1MDUgcGV4NjRpZ2VuLmM6NDUwNQotKyMsIGMtZm9ybWF0Ci0rbXNnaWQgIiVwQjogdW5hYmxlIHRvIGZpbGwgaW4gRGF0YURpY3Rpb25hcnlbOV0gYmVjYXVzZSBfX3Rsc191c2VkIGlzIG1pc3NpbmciCi0gbXNnc3RyICIiCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsOSBAQAotIDIwMTgtMDQtMjQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rICAgICAgIFBSIDIzMTEwCi0rICAgICAgICogcGVYWGlnZW4uYyAoX2JmZF9YWF9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbik6IENoZWNrIGZvcgotKyAgICAgICBhIG5lZ2F0aXZlIFBFX0RFQlVHX0RBVEEgc2l6ZSBiZWZvcmUgaXRlcmF0aW5nIG92ZXIgdGhlIGRlYnVnIGRhdGEuCi0rCi0gICAgICAgIFBSIDIzMTEzCi0gICAgICAgICogZWxmLmMgKGlnbm9yZV9zZWN0aW9uX3N5bSk6IENoZWNrIGZvciB0aGUgb3V0cHV0X3NlY3Rpb24gcG9pbnRlcgotICAgICAgICBiZWluZyBOVUxMIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTA1MzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDUzNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE4ZmJkMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xMDUzNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZGIwYzMwOWY0MDExY2E5NGE0YWJjODQ1OGUyN2YzNzM0ZGFiOTJhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjQgQXByIDIwMTggMTY6NTc6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFuIGlsbGVnYWwgbWVtb3J5IGFjY2VzcyB3aGVuIHRyeWluZyB0byBjb3B5IGFuIEVMRgotIGJpbmFyeSB3aXRoIGNvcnJ1cHQgc2VjdGlvbiBzeW1ib2xzLgotCi0JUFIgMjMxMTMKLQkqIGVsZi5jIChpZ25vcmVfc2VjdGlvbl9zeW0pOiBDaGVjayBmb3IgdGhlIG91dHB1dF9zZWN0aW9uIHBvaW50ZXIKLQliZWluZyBOVUxMIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE4LTEwNTM1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDQgKysrKwotIGJmZC9lbGYuYyAgICAgfCA5ICsrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYuYwotKysrIGdpdC9iZmQvZWxmLmMKLUBAIC00MDIxLDE1ICs0MDIxLDIyIEBAIGlnbm9yZV9zZWN0aW9uX3N5bSAoYmZkICphYmZkLCBhc3ltYm9sICoKLSB7Ci0gICBlbGZfc3ltYm9sX3R5cGUgKnR5cGVfcHRyOwotIAotKyAgaWYgKHN5bSA9PSBOVUxMKQotKyAgICByZXR1cm4gRkFMU0U7Ci0rCi0gICBpZiAoKHN5bS0+ZmxhZ3MgJiBCU0ZfU0VDVElPTl9TWU0pID09IDApCi0gICAgIHJldHVybiBGQUxTRTsKLSAKLSsgIGlmIChzeW0tPnNlY3Rpb24gPT0gTlVMTCkKLSsgICAgcmV0dXJuIFRSVUU7Ci0rCi0gICB0eXBlX3B0ciA9IGVsZl9zeW1ib2xfZnJvbSAoYWJmZCwgc3ltKTsKLSAgIHJldHVybiAoKHR5cGVfcHRyICE9IE5VTEwKLSAJICAgJiYgdHlwZV9wdHItPmludGVybmFsX2VsZl9zeW0uc3Rfc2huZHggIT0gMAotIAkgICAmJiBiZmRfaXNfYWJzX3NlY3Rpb24gKHN5bS0+c2VjdGlvbikpCi0gCSAgfHwgIShzeW0tPnNlY3Rpb24tPm93bmVyID09IGFiZmQKLS0JICAgICAgIHx8IChzeW0tPnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT5vd25lciA9PSBhYmZkCi0rCSAgICAgICB8fCAoc3ltLT5zZWN0aW9uLT5vdXRwdXRfc2VjdGlvbiAhPSBOVUxMCi0rCQkgICAmJiBzeW0tPnNlY3Rpb24tPm91dHB1dF9zZWN0aW9uLT5vd25lciA9PSBhYmZkCi0gCQkgICAmJiBzeW0tPnNlY3Rpb24tPm91dHB1dF9vZmZzZXQgPT0gMCkKLSAJICAgICAgIHx8IGJmZF9pc19hYnNfc2VjdGlvbiAoc3ltLT5zZWN0aW9uKSkpOwotIH0KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxOC0wNC0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgMjMxMTMKLSsgICAgICAgKiBlbGYuYyAoaWdub3JlX3NlY3Rpb25fc3ltKTogQ2hlY2sgZm9yIHRoZSBvdXRwdXRfc2VjdGlvbiBwb2ludGVyCi0rICAgICAgIGJlaW5nIE5VTEwgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQuCi0rCi0gMjAxOC0wNC0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgMjMwNjUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE3MzU4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTczNTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEzNTA5MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE3MzU4LnBhdGNoCkBAIC0wLDAgKzEsMTQ0IEBACitGcm9tIDMwODM4MTMyOTk3ZTZhM2NmZTNlYzExYzU4YjMyYjIyZjZmNmIxMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMCBTZXAgMjAxOCAxNToyOToxNyArMDkzMAorU3ViamVjdDogW1BBVENIXSBCdWcgMjM2ODYsIHR3byBzZWdtZW50IGZhdWx0cyBpbiBubQorCitGaXhlcyB0aGUgYnVncyBleHBvc2VkIGJ5IHRoZSB0ZXN0Y2FzZXMgaW4gdGhlIFBSLCBwbHVzIHR3byBtb3JlIGJ1Z3MKK0kgbm90aWNlZCB3aGVuIGxvb2tpbmcgYXQgX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUuCisKKwlQUiAyMzY4NgorCSogZHdhcmYyLmMgKHJlYWRfc2VjdGlvbik6IEVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBtYWxsb2MKKwkiKGJmZF9zaXplX3R5cGUpIC0xIi4KKwkqIHN5bXMuYyAoX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUpOiBCb3VuZHMgY2hlY2sKKwlmdW5jdGlvbl9uYW1lLiAgQm91bmRzIGNoZWNrIHJlbG9jIGFkZHJlc3MuICBGb3JtYXR0aW5nLiAgRW5zdXJlCisJLnN0YWJzdHIgemVybyB0ZXJtaW5hdGVkLgorQ1ZFOiBDVkUtMjAxOC0xNzM1OCBhbmQgQ1ZFLTIwMTgtMTczNTkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvQ2hhbmdlTG9nIHwgIDkgKysrKysrKysrCisgYmZkL2R3YXJmMi5jICB8ICA5ICsrKysrKysrLQorIGJmZC9zeW1zLmMgICAgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKK2luZGV4IDA0YzBjMmEuLmZlZjU0NzkgMTAwNjQ0CistLS0gYS9iZmQvQ2hhbmdlTG9nCisrKysgYi9iZmQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDEyIEBACisrMjAxOC0wOS0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisrCisrCVBSIDIzNjg2CisrCSogZHdhcmYyLmMgKHJlYWRfc2VjdGlvbik6IEVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBtYWxsb2MKKysJIihiZmRfc2l6ZV90eXBlKSAtMSIuCisrCSogc3ltcy5jIChfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSk6IEJvdW5kcyBjaGVjaworKwlmdW5jdGlvbl9uYW1lLiAgQm91bmRzIGNoZWNrIHJlbG9jIGFkZHJlc3MuICBGb3JtYXR0aW5nLiAgRW5zdXJlCisrCS5zdGFic3RyIHplcm8gdGVybWluYXRlZC4KKysKKyAyMDE4LTA4LTEyICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisgCisgCVBSIGxkLzIzNDI4CitkaWZmIC0tZ2l0IGEvYmZkL2R3YXJmMi5jIGIvYmZkL2R3YXJmMi5jCitpbmRleCAzYjI4ODU1Li43N2E3MzY4IDEwMDY0NAorLS0tIGEvYmZkL2R3YXJmMi5jCisrKysgYi9iZmQvZHdhcmYyLmMKK0BAIC01MjcsNiArNTI3LDcgQEAgcmVhZF9zZWN0aW9uIChiZmQgKgkgICAgICBhYmZkLAorICAgYXNlY3Rpb24gKm1zZWM7CisgICBjb25zdCBjaGFyICpzZWN0aW9uX25hbWUgPSBzZWMtPnVuY29tcHJlc3NlZF9uYW1lOworICAgYmZkX2J5dGUgKmNvbnRlbnRzID0gKnNlY3Rpb25fYnVmZmVyOworKyAgYmZkX3NpemVfdHlwZSBhbXQ7CisgCisgICAvKiBUaGUgc2VjdGlvbiBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmVhZC4gICovCisgICBpZiAoY29udGVudHMgPT0gTlVMTCkKK0BAIC01NDksNyArNTUwLDEzIEBAIHJlYWRfc2VjdGlvbiAoYmZkICoJICAgICAgYWJmZCwKKyAgICAgICAqc2VjdGlvbl9zaXplID0gbXNlYy0+cmF3c2l6ZSA/IG1zZWMtPnJhd3NpemUgOiBtc2VjLT5zaXplOworICAgICAgIC8qIFBhcmFub2lhIC0gYWxsb2Mgb25lIGV4dHJhIHNvIHRoYXQgd2UgY2FuIG1ha2Ugc3VyZSBhIHN0cmluZworIAkgc2VjdGlvbiBpcyBOVUwgdGVybWluYXRlZC4gICovCistICAgICAgY29udGVudHMgPSAoYmZkX2J5dGUgKikgYmZkX21hbGxvYyAoKnNlY3Rpb25fc2l6ZSArIDEpOworKyAgICAgIGFtdCA9ICpzZWN0aW9uX3NpemUgKyAxOworKyAgICAgIGlmIChhbXQgPT0gMCkKKysJeworKwkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub19tZW1vcnkpOworKwkgIHJldHVybiBGQUxTRTsKKysJfQorKyAgICAgIGNvbnRlbnRzID0gKGJmZF9ieXRlICopIGJmZF9tYWxsb2MgKGFtdCk7CisgICAgICAgaWYgKGNvbnRlbnRzID09IE5VTEwpCisgCXJldHVybiBGQUxTRTsKKyAgICAgICBpZiAoc3ltcworZGlmZiAtLWdpdCBhL2JmZC9zeW1zLmMgYi9iZmQvc3ltcy5jCitpbmRleCAxODcwNzFmLi5lMDk2NDBhIDEwMDY0NAorLS0tIGEvYmZkL3N5bXMuYworKysrIGIvYmZkL3N5bXMuYworQEAgLTEwMzUsNiArMTAzNSwxMCBAQCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAorIAkJCQkJIDAsIHN0cnNpemUpKQorIAlyZXR1cm4gRkFMU0U7CisgCisrICAgICAgLyogU3RhYiBzdHJpbmdzIG91Z2h0IHRvIGJlIG51bCB0ZXJtaW5hdGVkLiAgRW5zdXJlIHRoZSBsYXN0IG9uZQorKwkgaXMsIHRvIHByZXZlbnQgcnVubmluZyBvZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAgKi8KKysgICAgICBpbmZvLT5zdHJzW3N0cnNpemUgLSAxXSA9IDA7CisrCisgICAgICAgLyogSWYgdGhpcyBpcyBhIHJlbG9jYXRhYmxlIG9iamVjdCBmaWxlLCB3ZSBoYXZlIHRvIHJlbG9jYXRlCisgCSB0aGUgZW50cmllcyBpbiAuc3RhYi4gIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBzaW1wbGUgMzIgYml0CisgCSByZWxvY2F0aW9ucyBhZ2FpbnN0IHN5bWJvbHMgZGVmaW5lZCBpbiB0aGlzIG9iamVjdCBmaWxlLCBzbworQEAgLTEwNzMsNyArMTA3Nyw4IEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCQkgIHx8IHItPmhvd3RvLT5iaXRzaXplICE9IDMyCisgCQkgIHx8IHItPmhvd3RvLT5wY19yZWxhdGl2ZQorIAkJICB8fCByLT5ob3d0by0+Yml0cG9zICE9IDAKKy0JCSAgfHwgci0+aG93dG8tPmRzdF9tYXNrICE9IDB4ZmZmZmZmZmYpCisrCQkgIHx8IHItPmhvd3RvLT5kc3RfbWFzayAhPSAweGZmZmZmZmZmCisrCQkgIHx8IHItPmFkZHJlc3MgKiBiZmRfb2N0ZXRzX3Blcl9ieXRlIChhYmZkKSArIDQgPiBzdGFic2l6ZSkKKyAJCXsKKyAJCSAgX2JmZF9lcnJvcl9oYW5kbGVyCisgCQkgICAgKF8oInVuc3VwcG9ydGVkIC5zdGFiIHJlbG9jYXRpb24iKSk7CitAQCAtMTE5NSw3ICsxMjAwLDggQEAgX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUgKGJmZCAqYWJmZCwKKyAJCXsKKyAJCSAgbnVsX2Z1biA9IHN0YWI7CisgCQkgIG51bF9zdHIgPSBzdHI7CistCQkgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorKwkJICBpZiAoZmlsZV9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplCisrCQkgICAgICB8fCBmaWxlX25hbWUgPCAoY2hhciAqKSBzdHIpCisgCQkgICAgZmlsZV9uYW1lID0gTlVMTDsKKyAJCSAgaWYgKHN0YWIgKyBTVEFCU0laRSArIFRZUEVPRkYgPCBpbmZvLT5zdGFicyArIHN0YWJzaXplCisgCQkgICAgICAmJiAqKHN0YWIgKyBTVEFCU0laRSArIFRZUEVPRkYpID09IChiZmRfYnl0ZSkgTl9TTykKK0BAIC0xMjA2LDcgKzEyMTIsOCBAQCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAorIAkJICAgICAgZGlyZWN0b3J5X25hbWUgPSBmaWxlX25hbWU7CisgCQkgICAgICBmaWxlX25hbWUgPSAoKGNoYXIgKikgc3RyCisgCQkJCSAgICsgYmZkX2dldF8zMiAoYWJmZCwgc3RhYiArIFNUUkRYT0ZGKSk7CistCQkgICAgICBpZiAoZmlsZV9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKysJCSAgICAgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUKKysJCQkgIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKyAJCQlmaWxlX25hbWUgPSBOVUxMOworIAkJICAgIH0KKyAJCX0KK0BAIC0xMjE3LDcgKzEyMjQsOCBAQCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAorIAkgICAgICBmaWxlX25hbWUgPSAoY2hhciAqKSBzdHIgKyBiZmRfZ2V0XzMyIChhYmZkLCBzdGFiICsgU1RSRFhPRkYpOworIAkgICAgICAvKiBQUiAxNzUxMjogZmlsZTogMGM2ODBhMWYuICAqLworIAkgICAgICAvKiBQUiAxNzUxMjogZmlsZTogNWRhOGFlYzQuICAqLworLQkgICAgICBpZiAoZmlsZV9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKysJICAgICAgaWYgKGZpbGVfbmFtZSA+PSAoY2hhciAqKSBpbmZvLT5zdHJzICsgc3Ryc2l6ZQorKwkJICB8fCBmaWxlX25hbWUgPCAoY2hhciAqKSBzdHIpCisgCQlmaWxlX25hbWUgPSBOVUxMOworIAkgICAgICBicmVhazsKKyAKK0BAIC0xMjI2LDcgKzEyMzQsOCBAQCBfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSAoYmZkICphYmZkLAorIAkgICAgICBmdW5jdGlvbl9uYW1lID0gKGNoYXIgKikgc3RyICsgYmZkX2dldF8zMiAoYWJmZCwgc3RhYiArIFNUUkRYT0ZGKTsKKyAJICAgICAgaWYgKGZ1bmN0aW9uX25hbWUgPT0gKGNoYXIgKikgc3RyKQorIAkJY29udGludWU7CistCSAgICAgIGlmIChmdW5jdGlvbl9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplKQorKwkgICAgICBpZiAoZnVuY3Rpb25fbmFtZSA+PSAoY2hhciAqKSBpbmZvLT5zdHJzICsgc3Ryc2l6ZQorKwkJICB8fCBmdW5jdGlvbl9uYW1lIDwgKGNoYXIgKikgc3RyKQorIAkJZnVuY3Rpb25fbmFtZSA9IE5VTEw7CisgCisgCSAgICAgIG51bF9mdW4gPSBOVUxMOworQEAgLTEzMzUsNyArMTM0NCw4IEBAIF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCisgCSAgaWYgKHZhbCA8PSBvZmZzZXQpCisgCSAgICB7CisgCSAgICAgIGZpbGVfbmFtZSA9IChjaGFyICopIHN0ciArIGJmZF9nZXRfMzIgKGFiZmQsIHN0YWIgKyBTVFJEWE9GRik7CistCSAgICAgIGlmIChmaWxlX25hbWUgPj0gKGNoYXIgKikgaW5mby0+c3RycyArIHN0cnNpemUgfHwgZmlsZV9uYW1lIDwgKGNoYXIgKikgc3RyKQorKwkgICAgICBpZiAoZmlsZV9uYW1lID49IChjaGFyICopIGluZm8tPnN0cnMgKyBzdHJzaXplCisrCQkgIHx8IGZpbGVfbmFtZSA8IChjaGFyICopIHN0cikKKyAJCWZpbGVfbmFtZSA9IE5VTEw7CisgCSAgICAgICpwbGluZSA9IDA7CisgCSAgICB9CistLSAKKzIuOS4zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xNzM2MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE3MzYwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZjEwYTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xNzM2MC5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIGNmOTNlOWMyY2Y4ZjhiMjU2NmY4ZmM4NmU5NjE1OTJiNTFiNTk4MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMCBTZXAgMjAxOCAxODoyMzoxNyArMDkzMAorU3ViamVjdDogW1BBVENIXSBQUjIzNjg1LCBidWZmZXIgb3ZlcmZsb3cKKworCVBSIDIzNjg1CisJKiBwZVhYaWdlbi5jIChwZV9wcmludF9lZGF0YSk6IENvcnJlY3QgZXhwb3J0IGFkZHJlc3MgdGFibGUKKwlvdmVyZmxvdyBjaGVja3MuICBDaGVjayBkYXRhb2ZmIGFnYWluc3Qgc2VjdGlvbiBzaXplIHRvby4KKworQ1ZFOiBDVkUtMjAxOC0xNzM2MAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgIHwgIDYgKysrKysrCisgYmZkL3BlWFhpZ2VuLmMgfCAxMSArKysrKystLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCitpbmRleCBmZWY1NDc5Li44MWI5ZTU2IDEwMDY0NAorLS0tIGEvYmZkL0NoYW5nZUxvZworKysrIGIvYmZkL0NoYW5nZUxvZworQEAgLTEsNSArMSwxMSBAQAorIDIwMTgtMDktMjAgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorIAorKwlQUiAyMzY4NQorKwkqIHBlWFhpZ2VuLmMgKHBlX3ByaW50X2VkYXRhKTogQ29ycmVjdCBleHBvcnQgYWRkcmVzcyB0YWJsZQorKwlvdmVyZmxvdyBjaGVja3MuICBDaGVjayBkYXRhb2ZmIGFnYWluc3Qgc2VjdGlvbiBzaXplIHRvby4KKysKKysyMDE4LTA5LTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KKysKKyAJUFIgMjM2ODYKKyAJKiBkd2FyZjIuYyAocmVhZF9zZWN0aW9uKTogRXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1hbGxvYworIAkiKGJmZF9zaXplX3R5cGUpIC0xIi4KK2RpZmYgLS1naXQgYS9iZmQvcGVYWGlnZW4uYyBiL2JmZC9wZVhYaWdlbi5jCitpbmRleCA1OThmMmNhLi4xNjQ1ZWY0IDEwMDY0NAorLS0tIGEvYmZkL3BlWFhpZ2VuLmMKKysrKyBiL2JmZC9wZVhYaWdlbi5jCitAQCAtMTY2MSw3ICsxNjYxLDggQEAgcGVfcHJpbnRfZWRhdGEgKGJmZCAqIGFiZmQsIHZvaWQgKiB2ZmlsZSkKKyAKKyAgICAgICBkYXRhb2ZmID0gYWRkciAtIHNlY3Rpb24tPnZtYTsKKyAgICAgICBkYXRhc2l6ZSA9IGV4dHJhLT5EYXRhRGlyZWN0b3J5W1BFX0VYUE9SVF9UQUJMRV0uU2l6ZTsKKy0gICAgICBpZiAoZGF0YXNpemUgPiBzZWN0aW9uLT5zaXplIC0gZGF0YW9mZikKKysgICAgICBpZiAoZGF0YW9mZiA+IHNlY3Rpb24tPnNpemUKKysJICB8fCBkYXRhc2l6ZSA+IHNlY3Rpb24tPnNpemUgLSBkYXRhb2ZmKQorIAl7CisgCSAgZnByaW50ZiAoZmlsZSwKKyAJCSAgIF8oIlxuVGhlcmUgaXMgYW4gZXhwb3J0IHRhYmxlIGluICVzLCBidXQgaXQgZG9lcyBub3QgZml0IGludG8gdGhhdCBzZWN0aW9uXG4iKSwKK0BAIC0xNzc4LDExICsxNzc5LDExIEBAIHBlX3ByaW50X2VkYXRhIChiZmQgKiBhYmZkLCB2b2lkICogdmZpbGUpCisgCSAgZWR0LmJhc2UpOworIAorICAgLyogUFIgMTc1MTI6IEhhbmRsZSBjb3JydXB0IFBFIGJpbmFyaWVzLiAgKi8KKy0gIGlmIChlZHQuZWF0X2FkZHIgKyAoZWR0Lm51bV9mdW5jdGlvbnMgKiA0KSAtIGFkaiA+PSBkYXRhc2l6ZQorKyAgLyogUFIgMTc1MTIgZmlsZTogMTQwLTE2NTAxOC0wLjAwNC4gICovCisrICBpZiAoZWR0LmVhdF9hZGRyIC0gYWRqID49IGRhdGFzaXplCisgICAgICAgLyogUFIgMTc1MTI6IGZpbGU6IDA5MmIxODI5ICovCistICAgICAgfHwgKGVkdC5udW1fZnVuY3Rpb25zICogNCkgPCBlZHQubnVtX2Z1bmN0aW9ucworLSAgICAgIC8qIFBSIDE3NTEyIGZpbGU6IDE0MC0xNjUwMTgtMC4wMDQuICAqLworLSAgICAgIHx8IGRhdGEgKyBlZHQuZWF0X2FkZHIgLSBhZGogPCBkYXRhKQorKyAgICAgIHx8IChlZHQubnVtX2Z1bmN0aW9ucyArIDEpICogNCA8IGVkdC5udW1fZnVuY3Rpb25zCisrICAgICAgfHwgZWR0LmVhdF9hZGRyIC0gYWRqICsgKGVkdC5udW1fZnVuY3Rpb25zICsgMSkgKiA0ID4gZGF0YXNpemUpCisgICAgIGZwcmludGYgKGZpbGUsIF8oIlx0SW52YWxpZCBFeHBvcnQgQWRkcmVzcyBUYWJsZSBydmEgKDB4JWx4KSBvciBlbnRyeSBjb3VudCAoMHglbHgpXG4iKSwKKyAJICAgICAobG9uZykgZWR0LmVhdF9hZGRyLAorIAkgICAgIChsb25nKSBlZHQubnVtX2Z1bmN0aW9ucyk7CistLSAKKzIuOS4zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODMwOS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4MzA5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNDBhM2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODMwOS5wYXRjaApAQCAtMCwwICsxLDMwOCBAQAorRnJvbSAwOTMwY2IzMDIxYjgwNzhiMzRjZjIxNmU3OWViODYwOGQwMTc4NjRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTMgT2N0IDIwMTggMjI6MDM6MDIgKzEwMzAKK1N1YmplY3Q6IFtQQVRDSF0gX2JmZF9jbGVhcl9jb250ZW50cyBib3VuZHMgY2hlY2tpbmcKKworVGhpcyBQUiBzaG93cyBhIGZ1enplZCBiaW5hcnkgdHJpZ2dlcmluZyBhIHNlZ2ZhdWx0IHZpYSBhIGJhZAorcmVsb2NhdGlvbiBpbiAuZGVidWdfbGluZS4gIEl0IHR1cm5zIG91dCB0aGF0IHVubGlrZSBub3JtYWwKK3JlbG9jYXRpb25zIGFwcGxpZWQgdG8gYSBzZWN0aW9uLCB0aGUgbGlua2VyIGFwcGxpZXMgdGhvc2Ugd2l0aAorc3ltYm9scyBmcm9tIGRpc2NhcmRlZCBzZWN0aW9ucyB2aWEgX2JmZF9jbGVhcl9jb250ZW50cyB3aXRob3V0CitjaGVja2luZyB0aGF0IHRoZSByZWxvY2F0aW9uIGlzIHdpdGhpbiB0aGUgc2VjdGlvbiBib3VuZHMuICBUaGUgc2FtZQordGhpbmcgbm93IGhhcHBlbnMgd2hlbiByZWFkaW5nIGRlYnVnIHNlY3Rpb25zIHNpbmNlIGNvbW1pdAorYTRjZDk0N2FjYTIzLCB0aGUgUFIyMzQyNSBmaXguCisKKwlQUiAyMzc3MAorCVBSIDIzNDI1CisJKiByZWxvYy5jIChfYmZkX2NsZWFyX2NvbnRlbnRzKTogUmVwbGFjZSAibG9jYXRpb24iIHBhcmFtIHdpdGgKKwkiYnVmIiBhbmQgIm9mZiIuICBCb3VuZHMgY2hlY2sgIm9mZiIuICBSZXR1cm4gc3RhdHVzLgorCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2dlbmVyaWNfcmVsb2NhdGVfc2VjdGlvbik6IFVwZGF0ZQorCV9iZmRfY2xlYXJfY29udGVudHMgY2FsbC4KKwkqIGVsZi1iZmQuaCAoUkVMT0NfQUdBSU5TVF9ESVNDQVJERURfU0VDVElPTik6IExpa2V3aXNlLgorCSogZWxmMzItYXJjLmMgKGVsZl9hcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgorCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGYzMi1tZXRhZy5jIChtZXRhZ19maW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCisJKiBlbGYzMi1uZHMzMi5jIChuZHMzMl9lbGZfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzKTogTGlrZXdpc2UuCisJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGYzMi12aXNpdW0uYyAodmlzaXVtX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBlbGY2NC1wcGMuYyAocHBjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKwkqIGVsZjY0LXg4Ni02NC5jICooZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisJKiBsaWJiZmQtaW4uaCAoX2JmZF9jbGVhcl9jb250ZW50cyk6IFVwZGF0ZSBwcm90b3R5cGUuCisJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC0xODYwNQorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgYmZkL2NvZmZsaW5rLmMgICAgIHwgIDIgKy0KKyBiZmQvZWxmLWJmZC5oICAgICAgfCAgMiArLQorIGJmZC9lbGYzMi1hcmMuYyAgICB8ICAyICstCisgYmZkL2VsZjMyLWkzODYuYyAgIHwgIDIgKy0KKyBiZmQvZWxmMzItbWV0YWcuYyAgfCAgMiArLQorIGJmZC9lbGYzMi1uZHMzMi5jICB8ICA4ICsrKystLS0tCisgYmZkL2VsZjMyLXBwYy5jICAgIHwgIDIgKy0KKyBiZmQvZWxmMzItdmlzaXVtLmMgfCAgMiArLQorIGJmZC9lbGY2NC1wcGMuYyAgICB8ICAyICstCisgYmZkL2VsZjY0LXg4Ni02NC5jIHwgIDIgKy0KKyBiZmQvbGliYmZkLWluLmggICAgfCAgNCArKy0tCisgYmZkL2xpYmJmZC5oICAgICAgIHwgIDQgKystLQorIGJmZC9yZWxvYy5jICAgICAgICB8IDE5ICsrKysrKysrKysrKystLS0tLS0KKyAxNCBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCitpbmRleCA2OGMxZmY2NjViLi5lOTY5NmVlMzE0IDEwMDY0NAorLS0tIGEvYmZkL0NoYW5nZUxvZworKysrIGIvYmZkL0NoYW5nZUxvZworQEAgLTEsMyArMSwyMyBAQAorKzIwMTgtMTAtMTMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorKworKwlQUiAyMzc3MAorKwlQUiAyMzQyNQorKwkqIHJlbG9jLmMgKF9iZmRfY2xlYXJfY29udGVudHMpOiBSZXBsYWNlICJsb2NhdGlvbiIgcGFyYW0gd2l0aAorKwkiYnVmIiBhbmQgIm9mZiIuICBCb3VuZHMgY2hlY2sgIm9mZiIuICBSZXR1cm4gc3RhdHVzLgorKwkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBVcGRhdGUKKysJX2JmZF9jbGVhcl9jb250ZW50cyBjYWxsLgorKwkqIGVsZi1iZmQuaCAoUkVMT0NfQUdBSU5TVF9ESVNDQVJERURfU0VDVElPTik6IExpa2V3aXNlLgorKwkqIGVsZjMyLWFyYy5jIChlbGZfYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBlbGYzMi1tZXRhZy5jIChtZXRhZ19maW5hbF9saW5rX3JlbG9jYXRlKTogTGlrZXdpc2UuCisrCSogZWxmMzItbmRzMzIuYyAobmRzMzJfZWxmX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyk6IExpa2V3aXNlLgorKwkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBlbGYzMi12aXNpdW0uYyAodmlzaXVtX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisrCSogZWxmNjQtcHBjLmMgKHBwYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCisrCSogZWxmNjQteDg2LTY0LmMgKihlbGZfeDg2XzY0X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KKysJKiBsaWJiZmQtaW4uaCAoX2JmZF9jbGVhcl9jb250ZW50cyk6IFVwZGF0ZSBwcm90b3R5cGUuCisrCSogbGliYmZkLmg6IFJlZ2VuZXJhdGUuCisrCisgMjAxOC0wOS0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisgCisgCVBSIDIzNjg1CitkaWZmIC0tZ2l0IGEvYmZkL2NvZmZsaW5rLmMgYi9iZmQvY29mZmxpbmsuYworaW5kZXggMmY3M2Y3MmUzMS4uYjdlYTY5YjdmOSAxMDA2NDQKKy0tLSBhL2JmZC9jb2ZmbGluay5jCisrKysgYi9iZmQvY29mZmxpbmsuYworQEAgLTMwODAsNyArMzA4MCw3IEBAIF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAgICAgICBpZiAoc2VjICE9IE5VTEwgJiYgZGlzY2FyZGVkX3NlY3Rpb24gKHNlYykpCisgCXsKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIChyZWwtPnJfdmFkZHIgLSBpbnB1dF9zZWN0aW9uLT52bWEpKTsKKysJCQkgICAgICAgY29udGVudHMsIHJlbC0+cl92YWRkciAtIGlucHV0X3NlY3Rpb24tPnZtYSk7CisgCSAgY29udGludWU7CisgCX0KKyAKK2RpZmYgLS1naXQgYS9iZmQvZWxmLWJmZC5oIGIvYmZkL2VsZi1iZmQuaAoraW5kZXggY2YyNTZmNzBlMC4uMzM3NGY0MTFmOSAxMDA2NDQKKy0tLSBhL2JmZC9lbGYtYmZkLmgKKysrKyBiL2JmZC9lbGYtYmZkLmgKK0BAIC0yODExLDcgKzI4MTEsNyBAQCBleHRlcm4gYXNlY3Rpb24gX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb247CisgICB7CQkJCQkJCQkJXAorICAgICBpbnQgaV87CQkJCQkJCQlcCisgICAgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCQlcCistCQkJIGNvbnRlbnRzICsgcmVsW2luZGV4XS5yX29mZnNldCk7CQlcCisrCQkJIGNvbnRlbnRzLCByZWxbaW5kZXhdLnJfb2Zmc2V0KTsJCVwKKyAJCQkJCQkJCQlcCisgICAgIGlmIChiZmRfbGlua19yZWxvY2F0YWJsZSAoaW5mbykJCQkJCVwKKyAJJiYgKGlucHV0X3NlY3Rpb24tPmZsYWdzICYgU0VDX0RFQlVHR0lORykpCQkJXAorZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1hcmMuYyBiL2JmZC9lbGYzMi1hcmMuYworaW5kZXggN2ExYjMwNDJhZS4uMzBmNDdhNWIyMiAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1hcmMuYworKysrIGIvYmZkL2VsZjMyLWFyYy5jCitAQCAtMTU0OSw3ICsxNTQ5LDcgQEAgZWxmX2FyY19yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKgkJCSAgb3V0cHV0X2JmZCwKKyAgICAgICBpZiAoc2VjICE9IE5VTEwgJiYgZGlzY2FyZGVkX3NlY3Rpb24gKHNlYykpCisgCXsKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CisgCSAgcmVsLT5yX2luZm8gPSAwOworIAkgIHJlbC0+cl9hZGRlbmQgPSAwOworIAorZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1pMzg2LmMgYi9iZmQvZWxmMzItaTM4Ni5jCitpbmRleCA0OTc5N2RjYmZhLi4xNzc0NzE3NzdkIDEwMDY0NAorLS0tIGEvYmZkL2VsZjMyLWkzODYuYworKysrIGIvYmZkL2VsZjMyLWkzODYuYworQEAgLTIxOTcsNyArMjE5Nyw3IEBAIGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24gKGJmZCAqb3V0cHV0X2JmZCwKKyAgICAgICBpZiAoc2VjICE9IE5VTEwgJiYgZGlzY2FyZGVkX3NlY3Rpb24gKHNlYykpCisgCXsKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CisgCSAgd3JlbC0+cl9vZmZzZXQgPSByZWwtPnJfb2Zmc2V0OworIAkgIHdyZWwtPnJfaW5mbyA9IDA7CisgCSAgd3JlbC0+cl9hZGRlbmQgPSAwOworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1tZXRhZy5jIGIvYmZkL2VsZjMyLW1ldGFnLmMKK2luZGV4IGVmZTk1YmRkZmYuLjdmOTYyNDZlNWQgMTAwNjQ0CistLS0gYS9iZmQvZWxmMzItbWV0YWcuYworKysrIGIvYmZkL2VsZjMyLW1ldGFnLmMKK0BAIC0xMzk2LDcgKzEzOTYsNyBAQCBtZXRhZ19maW5hbF9saW5rX3JlbG9jYXRlIChyZWxvY19ob3d0b190eXBlICpob3d0bywKKyAJCQkJCSAgICAgIHJlbCwgcmVsZW5kLCBob3d0bywgY29udGVudHMpIFwKKyAgIHsJCQkJCQkJCQlcCisgICAgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCQlcCistCQkJIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CQkJXAorKwkJCSBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CQkJXAorIAkJCQkJCQkJCVwKKyAgICAgaWYgKGJmZF9saW5rX3JlbG9jYXRhYmxlIChpbmZvKQkJCQkJXAorIAkmJiAoaW5wdXRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfREVCVUdHSU5HKSkJCQlcCitkaWZmIC0tZ2l0IGEvYmZkL2VsZjMyLW5kczMyLmMgYi9iZmQvZWxmMzItbmRzMzIuYworaW5kZXggMGQ4NmU1Yjg2NS4uMTg0Y2YzMjBmNyAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1uZHMzMi5jCisrKysgYi9iZmQvZWxmMzItbmRzMzIuYworQEAgLTEyNTgyLDE0ICsxMjU4MiwxNCBAQCBuZHMzMl9lbGZfZ2V0X3JlbG9jYXRlZF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQsCisgCSAgc3ltYm9sID0gKigqcGFyZW50KS0+c3ltX3B0cl9wdHI7CisgCSAgaWYgKHN5bWJvbC0+c2VjdGlvbiAmJiBkaXNjYXJkZWRfc2VjdGlvbiAoc3ltYm9sLT5zZWN0aW9uKSkKKyAJICAgIHsKKy0JICAgICAgYmZkX2J5dGUgKnA7CisrCSAgICAgIGJmZF92bWEgb2ZmOworIAkgICAgICBzdGF0aWMgcmVsb2NfaG93dG9fdHlwZSBub25lX2hvd3RvCisgCQk9IEhPV1RPICgwLCAwLCAwLCAwLCBGQUxTRSwgMCwgY29tcGxhaW5fb3ZlcmZsb3dfZG9udCwgTlVMTCwKKyAJCQkgInVudXNlZCIsIEZBTFNFLCAwLCAwLCBGQUxTRSk7CisgCistCSAgICAgIHAgPSBkYXRhICsgKCpwYXJlbnQpLT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoaW5wdXRfYmZkKTsKKy0JICAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoKCpwYXJlbnQpLT5ob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCQkgICBwKTsKKysJICAgICAgb2ZmID0gKCpwYXJlbnQpLT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoaW5wdXRfYmZkKTsKKysJICAgICAgX2JmZF9jbGVhcl9jb250ZW50cyAoKCpwYXJlbnQpLT5ob3d0bywgaW5wdXRfYmZkLAorKwkJCQkgICBpbnB1dF9zZWN0aW9uLCBkYXRhLCBvZmYpOworIAkgICAgICAoKnBhcmVudCktPnN5bV9wdHJfcHRyID0gYmZkX2Fic19zZWN0aW9uX3B0ci0+c3ltYm9sX3B0cl9wdHI7CisgCSAgICAgICgqcGFyZW50KS0+YWRkZW5kID0gMDsKKyAJICAgICAgKCpwYXJlbnQpLT5ob3d0byA9ICZub25lX2hvd3RvOworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi1wcGMuYyBiL2JmZC9lbGYzMi1wcGMuYworaW5kZXggNjFmNzBkZTEyZS4uYzMxZTI2ZWZkNyAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi1wcGMuYworKysrIGIvYmZkL2VsZjMyLXBwYy5jCitAQCAtODIzMiw3ICs4MjMyLDcgQEAgcHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCisgCSAgICBob3d0byA9IHBwY19lbGZfaG93dG9fdGFibGVbcl90eXBlXTsKKyAKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CisgCSAgd3JlbC0+cl9vZmZzZXQgPSByZWwtPnJfb2Zmc2V0OworIAkgIHdyZWwtPnJfaW5mbyA9IDA7CisgCSAgd3JlbC0+cl9hZGRlbmQgPSAwOworZGlmZiAtLWdpdCBhL2JmZC9lbGYzMi12aXNpdW0uYyBiL2JmZC9lbGYzMi12aXNpdW0uYworaW5kZXggZThmMWM0YzllNC4uOTYxMzY2Y2Q4NyAxMDA2NDQKKy0tLSBhL2JmZC9lbGYzMi12aXNpdW0uYworKysrIGIvYmZkL2VsZjMyLXZpc2l1bS5jCitAQCAtNjIxLDcgKzYyMSw3IEBAIHZpc2l1bV9lbGZfcmVsb2NhdGVfc2VjdGlvbiAoYmZkICpvdXRwdXRfYmZkLAorIAkgICAgIG9yIHNlY3Rpb25zIGRpc2NhcmRlZCBieSBhIGxpbmtlciBzY3JpcHQsIHdlIGp1c3Qgd2FudCB0aGUKKyAJICAgICBzZWN0aW9uIGNvbnRlbnRzIHplcm9lZC4gIEF2b2lkIGFueSBzcGVjaWFsIHByb2Nlc3NpbmcuICAqLworIAkgIF9iZmRfY2xlYXJfY29udGVudHMgKGhvd3RvLCBpbnB1dF9iZmQsIGlucHV0X3NlY3Rpb24sCistCQkJICAgICAgIGNvbnRlbnRzICsgcmVsLT5yX29mZnNldCk7CisrCQkJICAgICAgIGNvbnRlbnRzLCByZWwtPnJfb2Zmc2V0KTsKKyAKKyAJICByZWwtPnJfaW5mbyA9IDA7CisgCSAgcmVsLT5yX2FkZGVuZCA9IDA7CitkaWZmIC0tZ2l0IGEvYmZkL2VsZjY0LXBwYy5jIGIvYmZkL2VsZjY0LXBwYy5jCitpbmRleCBlYWRkZTE3NjE1Li43YzM1MzRhYzY1IDEwMDY0NAorLS0tIGEvYmZkL2VsZjY0LXBwYy5jCisrKysgYi9iZmQvZWxmNjQtcHBjLmMKK0BAIC0xNDA3Myw3ICsxNDA3Myw3IEBAIHBwYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCisgCXsKKyAJICBfYmZkX2NsZWFyX2NvbnRlbnRzIChwcGM2NF9lbGZfaG93dG9fdGFibGVbcl90eXBlXSwKKyAJCQkgICAgICAgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLAorLQkJCSAgICAgICBjb250ZW50cyArIHJlbC0+cl9vZmZzZXQpOworKwkJCSAgICAgICBjb250ZW50cywgcmVsLT5yX29mZnNldCk7CisgCSAgd3JlbC0+cl9vZmZzZXQgPSByZWwtPnJfb2Zmc2V0OworIAkgIHdyZWwtPnJfaW5mbyA9IDA7CisgCSAgd3JlbC0+cl9hZGRlbmQgPSAwOworZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC14ODYtNjQuYyBiL2JmZC9lbGY2NC14ODYtNjQuYworaW5kZXggYzNhNmMzMWVkMi4uNGRjYWI0MzQ3OCAxMDA2NDQKKy0tLSBhL2JmZC9lbGY2NC14ODYtNjQuYworKysrIGIvYmZkL2VsZjY0LXg4Ni02NC5jCitAQCAtMjQ5MCw3ICsyNDkwLDcgQEAgZWxmX3g4Nl82NF9yZWxvY2F0ZV9zZWN0aW9uIChiZmQgKm91dHB1dF9iZmQsCisgICAgICAgaWYgKHNlYyAhPSBOVUxMICYmIGRpc2NhcmRlZF9zZWN0aW9uIChzZWMpKQorIAl7CisgCSAgX2JmZF9jbGVhcl9jb250ZW50cyAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKKy0JCQkgICAgICAgY29udGVudHMgKyByZWwtPnJfb2Zmc2V0KTsKKysJCQkgICAgICAgY29udGVudHMsIHJlbC0+cl9vZmZzZXQpOworIAkgIHdyZWwtPnJfb2Zmc2V0ID0gcmVsLT5yX29mZnNldDsKKyAJICB3cmVsLT5yX2luZm8gPSAwOworIAkgIHdyZWwtPnJfYWRkZW5kID0gMDsKK2RpZmYgLS1naXQgYS9iZmQvbGliYmZkLWluLmggYi9iZmQvbGliYmZkLWluLmgKK2luZGV4IGU1M2IyNTVkYWQuLmY2ZDk1NjVmMDMgMTAwNjQ0CistLS0gYS9iZmQvbGliYmZkLWluLmgKKysrKyBiL2JmZC9saWJiZmQtaW4uaAorQEAgLTY5Niw4ICs2OTYsOCBAQCBleHRlcm4gYmZkX3JlbG9jX3N0YXR1c190eXBlIF9iZmRfcmVsb2NhdGVfY29udGVudHMKKyAgIChyZWxvY19ob3d0b190eXBlICosIGJmZCAqLCBiZmRfdm1hLCBiZmRfYnl0ZSAqKSBBVFRSSUJVVEVfSElEREVOOworIAorIC8qIENsZWFyIGEgZ2l2ZW4gbG9jYXRpb24gdXNpbmcgYSBnaXZlbiBob3d0by4gICovCistZXh0ZXJuIHZvaWQgX2JmZF9jbGVhcl9jb250ZW50cworLSAgKHJlbG9jX2hvd3RvX3R5cGUgKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICopIEFUVFJJQlVURV9ISURERU47CisrZXh0ZXJuIGJmZF9yZWxvY19zdGF0dXNfdHlwZSBfYmZkX2NsZWFyX2NvbnRlbnRzCisrICAocmVsb2NfaG93dG9fdHlwZSAqLCBiZmQgKiwgYXNlY3Rpb24gKiwgYmZkX2J5dGUgKiwgYmZkX3ZtYSkgQVRUUklCVVRFX0hJRERFTjsKKyAKKyAvKiBMaW5rIHN0YWJzIGluIHNlY3Rpb25zIGluIHRoZSBmaXJzdCBwYXNzLiAgKi8KKyAKK2RpZmYgLS1naXQgYS9iZmQvbGliYmZkLmggYi9iZmQvbGliYmZkLmgKK2luZGV4IGE4ODUxYzgwMjYuLjExODllNjMzNTggMTAwNjQ0CistLS0gYS9iZmQvbGliYmZkLmgKKysrKyBiL2JmZC9saWJiZmQuaAorQEAgLTcwMSw4ICs3MDEsOCBAQCBleHRlcm4gYmZkX3JlbG9jX3N0YXR1c190eXBlIF9iZmRfcmVsb2NhdGVfY29udGVudHMKKyAgIChyZWxvY19ob3d0b190eXBlICosIGJmZCAqLCBiZmRfdm1hLCBiZmRfYnl0ZSAqKSBBVFRSSUJVVEVfSElEREVOOworIAorIC8qIENsZWFyIGEgZ2l2ZW4gbG9jYXRpb24gdXNpbmcgYSBnaXZlbiBob3d0by4gICovCistZXh0ZXJuIHZvaWQgX2JmZF9jbGVhcl9jb250ZW50cworLSAgKHJlbG9jX2hvd3RvX3R5cGUgKiwgYmZkICosIGFzZWN0aW9uICosIGJmZF9ieXRlICopIEFUVFJJQlVURV9ISURERU47CisrZXh0ZXJuIGJmZF9yZWxvY19zdGF0dXNfdHlwZSBfYmZkX2NsZWFyX2NvbnRlbnRzCisrICAocmVsb2NfaG93dG9fdHlwZSAqLCBiZmQgKiwgYXNlY3Rpb24gKiwgYmZkX2J5dGUgKiwgYmZkX3ZtYSkgQVRUUklCVVRFX0hJRERFTjsKKyAKKyAvKiBMaW5rIHN0YWJzIGluIHNlY3Rpb25zIGluIHRoZSBmaXJzdCBwYXNzLiAgKi8KKyAKK2RpZmYgLS1naXQgYS9iZmQvcmVsb2MuYyBiL2JmZC9yZWxvYy5jCitpbmRleCA4ZGJiODg5NmQzLi4xNjg2NzgwNjY5IDEwMDY0NAorLS0tIGEvYmZkL3JlbG9jLmMKKysrKyBiL2JmZC9yZWxvYy5jCitAQCAtMTYxMywxNiArMTYxMywyMiBAQCBfYmZkX3JlbG9jYXRlX2NvbnRlbnRzIChyZWxvY19ob3d0b190eXBlICpob3d0bywKKyAgICByZWxvY2F0aW9ucyBhZ2FpbnN0IGRpc2NhcmRlZCBzeW1ib2xzLCB0byBtYWtlIGlnbm9yYWJsZSBkZWJ1ZyBvciB1bndpbmQKKyAgICBpbmZvcm1hdGlvbiBtb3JlIG9idmlvdXMuICAqLworIAorLXZvaWQKKytiZmRfcmVsb2Nfc3RhdHVzX3R5cGUKKyBfYmZkX2NsZWFyX2NvbnRlbnRzIChyZWxvY19ob3d0b190eXBlICpob3d0bywKKyAJCSAgICAgYmZkICppbnB1dF9iZmQsCisgCQkgICAgIGFzZWN0aW9uICppbnB1dF9zZWN0aW9uLAorLQkJICAgICBiZmRfYnl0ZSAqbG9jYXRpb24pCisrCQkgICAgIGJmZF9ieXRlICpidWYsCisrCQkgICAgIGJmZF92bWEgb2ZmKQorIHsKKyAgIGludCBzaXplOworICAgYmZkX3ZtYSB4ID0gMDsKKysgIGJmZF9ieXRlICpsb2NhdGlvbjsKKysKKysgIGlmICghYmZkX3JlbG9jX29mZnNldF9pbl9yYW5nZSAoaG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwgb2ZmKSkKKysgICAgcmV0dXJuIGJmZF9yZWxvY19vdXRvZnJhbmdlOworIAorICAgLyogR2V0IHRoZSB2YWx1ZSB3ZSBhcmUgZ29pbmcgdG8gcmVsb2NhdGUuICAqLworKyAgbG9jYXRpb24gPSBidWYgKyBvZmY7CisgICBzaXplID0gYmZkX2dldF9yZWxvY19zaXplIChob3d0byk7CisgICBzd2l0Y2ggKHNpemUpCisgICAgIHsKK0BAIC0xNjg3LDYgKzE2OTMsNyBAQCBfYmZkX2NsZWFyX2NvbnRlbnRzIChyZWxvY19ob3d0b190eXBlICpob3d0bywKKyAjZW5kaWYKKyAgICAgICBicmVhazsKKyAgICAgfQorKyAgcmV0dXJuIGJmZF9yZWxvY19vazsKKyB9CisgCisgLyoKK0BAIC04Mjc1LDE0ICs4MjgyLDE0IEBAIGJmZF9nZW5lcmljX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50cyAoYmZkICphYmZkLAorIAorIAkgIGlmIChzeW1ib2wtPnNlY3Rpb24gJiYgZGlzY2FyZGVkX3NlY3Rpb24gKHN5bWJvbC0+c2VjdGlvbikpCisgCSAgICB7CistCSAgICAgIGJmZF9ieXRlICpwOworKwkgICAgICBiZmRfdm1hIG9mZjsKKyAJICAgICAgc3RhdGljIHJlbG9jX2hvd3RvX3R5cGUgbm9uZV9ob3d0bworIAkJPSBIT1dUTyAoMCwgMCwgMCwgMCwgRkFMU0UsIDAsIGNvbXBsYWluX292ZXJmbG93X2RvbnQsIE5VTEwsCisgCQkJICJ1bnVzZWQiLCBGQUxTRSwgMCwgMCwgRkFMU0UpOworIAorLQkgICAgICBwID0gZGF0YSArICgqcGFyZW50KS0+YWRkcmVzcyAqIGJmZF9vY3RldHNfcGVyX2J5dGUgKGlucHV0X2JmZCk7CistCSAgICAgIF9iZmRfY2xlYXJfY29udGVudHMgKCgqcGFyZW50KS0+aG93dG8sIGlucHV0X2JmZCwgaW5wdXRfc2VjdGlvbiwKKy0JCQkJICAgcCk7CisrCSAgICAgIG9mZiA9ICgqcGFyZW50KS0+YWRkcmVzcyAqIGJmZF9vY3RldHNfcGVyX2J5dGUgKGlucHV0X2JmZCk7CisrCSAgICAgIF9iZmRfY2xlYXJfY29udGVudHMgKCgqcGFyZW50KS0+aG93dG8sIGlucHV0X2JmZCwKKysJCQkJICAgaW5wdXRfc2VjdGlvbiwgZGF0YSwgb2ZmKTsKKyAJICAgICAgKCpwYXJlbnQpLT5zeW1fcHRyX3B0ciA9IGJmZF9hYnNfc2VjdGlvbl9wdHItPnN5bWJvbF9wdHJfcHRyOworIAkgICAgICAoKnBhcmVudCktPmFkZGVuZCA9IDA7CisgCSAgICAgICgqcGFyZW50KS0+aG93dG8gPSAmbm9uZV9ob3d0bzsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4NjA1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZjNzA2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4NjA1LnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gYWI0MTlkZGJiMmNkZDE3Y2E4MzYxODk5MGYyY2FjZjkwNGNlMWQ2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIzIE9jdCAyMDE4IDE4OjI5OjI0ICsxMDMwCitTdWJqZWN0OiBbUEFUQ0hdIFBSMjM4MDQsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzZWNfbWVyZ2VfaGFzaF9sb29rdXAKKworCVBSIDIzODA0CisJKiBtZXJnZS5jIChfYmZkX2FkZF9tZXJnZV9zZWN0aW9uKTogRG9uJ3QgYXR0ZW1wdCB0byBtZXJnZQorCXNlY3Rpb25zIHdoZXJlIHNpemUgaXMgbm90IGEgbXVsdGlwbGUgb2YgZW50c2l6ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxOC0xODYwNQorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJmZC9DaGFuZ2VMb2cgfCA2ICsrKysrKworIGJmZC9tZXJnZS5jICAgfCAzICsrKworIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9iZmQvQ2hhbmdlTG9nIGIvYmZkL0NoYW5nZUxvZworaW5kZXggMzFmZjNkNi4uZGE0MjNiMSAxMDA2NDQKKy0tLSBhL2JmZC9DaGFuZ2VMb2cKKysrKyBiL2JmZC9DaGFuZ2VMb2cKK0BAIC0xLDMgKzEsOSBAQAorKzIwMTgtMTAtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorKworKwlQUiAyMzgwNAorKwkqIG1lcmdlLmMgKF9iZmRfYWRkX21lcmdlX3NlY3Rpb24pOiBEb24ndCBhdHRlbXB0IHRvIG1lcmdlCisrCXNlY3Rpb25zIHdoZXJlIHNpemUgaXMgbm90IGEgbXVsdGlwbGUgb2YgZW50c2l6ZS4KKysKKyAyMDE4LTEwLTEzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KKyAKKyAJUFIgMjM3NzAKK2RpZmYgLS1naXQgYS9iZmQvbWVyZ2UuYyBiL2JmZC9tZXJnZS5jCitpbmRleCA3OTA0NTUyLi41ZTNiYmEwIDEwMDY0NAorLS0tIGEvYmZkL21lcmdlLmMKKysrKyBiL2JmZC9tZXJnZS5jCitAQCAtMzc2LDYgKzM3Niw5IEBAIF9iZmRfYWRkX21lcmdlX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqKnBzaW5mbywgYXNlY3Rpb24gKnNlYywKKyAgICAgICB8fCBzZWMtPmVudHNpemUgPT0gMCkKKyAgICAgcmV0dXJuIFRSVUU7CisgCisrICBpZiAoc2VjLT5zaXplICUgc2VjLT5lbnRzaXplICE9IDApCisrICAgIHJldHVybiBUUlVFOworKworICAgaWYgKChzZWMtPmZsYWdzICYgU0VDX1JFTE9DKSAhPSAwKQorICAgICB7CisgICAgICAgLyogV2UgYXJlbid0IHByZXBhcmVkIHRvIGhhbmRsZSByZWxvY2F0aW9ucyBpbiBtZXJnZWQgc2VjdGlvbnMuICAqLworLS0gCisyLjkuMwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC0xODYwNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWNmMzI4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDYucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA0NWEwZWFmNzcwMjI5NjNkNjM5ZDZkMTk4NzFkYmFiN2I3OTcwM2ZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjMgT2N0IDIwMTggMTk6MDI6MDYgKzEwMzAKK1N1YmplY3Q6IFtQQVRDSF0gUFIyMzgwNiwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIG1lcmdlX3N0cmluZ3MKKworCVBSIDIzODA2CisJKiBtZXJnZS5jIChfYmZkX2FkZF9tZXJnZV9zZWN0aW9uKTogRG9uJ3QgYXR0ZW1wdCB0byBtZXJnZQorCXNlY3Rpb25zIHdpdGggcmlkaWN1bG91c2x5IGxhcmdlIGFsaWdubWVudHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTgtMTg2MDYKK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvQ2hhbmdlTG9nIHwgIDYgKysrKysrCisgYmZkL21lcmdlLmMgICB8IDE1ICsrKysrKysrKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCitpbmRleCAxZjNmYzFjLi5jNWY3ZWM3IDEwMDY0NAorLS0tIGEvYmZkL0NoYW5nZUxvZworKysrIGIvYmZkL0NoYW5nZUxvZworQEAgLTEsNSArMSwxMSBAQAorIDIwMTgtMTAtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorIAorKwlQUiAyMzgwNgorKwkqIG1lcmdlLmMgKF9iZmRfYWRkX21lcmdlX3NlY3Rpb24pOiBEb24ndCBhdHRlbXB0IHRvIG1lcmdlCisrCXNlY3Rpb25zIHdpdGggcmlkaWN1bG91c2x5IGxhcmdlIGFsaWdubWVudHMuCisrCisrMjAxOC0xMC0yMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+CisrCisgCVBSIDIzODA0CisgCSogbWVyZ2UuYyAoX2JmZF9hZGRfbWVyZ2Vfc2VjdGlvbik6IERvbid0IGF0dGVtcHQgdG8gbWVyZ2UKKyAJc2VjdGlvbnMgd2hlcmUgc2l6ZSBpcyBub3QgYSBtdWx0aXBsZSBvZiBlbnRzaXplLgorZGlmZiAtLWdpdCBhL2JmZC9tZXJnZS5jIGIvYmZkL21lcmdlLmMKK2luZGV4IDVlM2JiYTAuLjdkZTBjODggMTAwNjQ0CistLS0gYS9iZmQvbWVyZ2UuYworKysrIGIvYmZkL21lcmdlLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgICAgYXMgdXNlZCBpbiBFTEYgU0hGX01FUkdFLiAgKi8KKyAKKyAjaW5jbHVkZSAic3lzZGVwLmgiCisrI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlICJiZmQuaCIKKyAjaW5jbHVkZSAiZWxmLWJmZC5oIgorICNpbmNsdWRlICJsaWJiZmQuaCIKK0BAIC0zODUsMTIgKzM4NiwxOCBAQCBfYmZkX2FkZF9tZXJnZV9zZWN0aW9uIChiZmQgKmFiZmQsIHZvaWQgKipwc2luZm8sIGFzZWN0aW9uICpzZWMsCisgICAgICAgcmV0dXJuIFRSVUU7CisgICAgIH0KKyAKKy0gIGFsaWduID0gc2VjLT5hbGlnbm1lbnRfcG93ZXI7CistICBpZiAoKHNlYy0+ZW50c2l6ZSA8ICh1bnNpZ25lZCkgMSA8PCBhbGlnbgorKyNpZm5kZWYgQ0hBUl9CSVQKKysjZGVmaW5lIENIQVJfQklUIDgKKysjZW5kaWYKKysgIGlmIChzZWMtPmFsaWdubWVudF9wb3dlciA+PSBzaXplb2YgKGFsaWduKSAqIENIQVJfQklUKQorKyAgICByZXR1cm4gVFJVRTsKKysKKysgIGFsaWduID0gMXUgPDwgc2VjLT5hbGlnbm1lbnRfcG93ZXI7CisrICBpZiAoKHNlYy0+ZW50c2l6ZSA8IGFsaWduCisgICAgICAgICYmICgoc2VjLT5lbnRzaXplICYgKHNlYy0+ZW50c2l6ZSAtIDEpKQorIAkgICB8fCAhKHNlYy0+ZmxhZ3MgJiBTRUNfU1RSSU5HUykpKQorLSAgICAgIHx8IChzZWMtPmVudHNpemUgPiAodW5zaWduZWQpIDEgPDwgYWxpZ24KKy0JICAmJiAoc2VjLT5lbnRzaXplICYgKCgodW5zaWduZWQpIDEgPDwgYWxpZ24pIC0gMSkpKSkKKysgICAgICB8fCAoc2VjLT5lbnRzaXplID4gYWxpZ24KKysJICAmJiAoc2VjLT5lbnRzaXplICYgKGFsaWduIC0gMSkpKSkKKyAgICAgeworICAgICAgIC8qIFNhbml0eSBjaGVjay4gIElmIHN0cmluZyBjaGFyYWN0ZXIgc2l6ZSBpcyBzbWFsbGVyIHRoYW4KKyAJIGFsaWdubWVudCwgdGhlbiB3ZSByZXF1aXJlIGNoYXJhY3RlciBzaXplIHRvIGJlIGEgcG93ZXIKKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4NjA3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtMTg2MDcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgyMjVkMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTE4NjA3LnBhdGNoCkBAIC0wLDAgKzEsNzcgQEAKK0Zyb20gMTAyZGVmNGRhODI2YjNkOWUxNjk3NDE0MjFlNWU2N2U4NzMxOTA5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIzIE9jdCAyMDE4IDE4OjMwOjIyICsxMDMwCitTdWJqZWN0OiBbUEFUQ0hdIFBSMjM4MDUsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBlbGZfbGlua19pbnB1dF9iZmQKKworCVBSIDIzODA1CisJKiBlbGZsaW5rLmMgKGVsZl9saW5rX2lucHV0X2JmZCk6IERvbid0IHNlZ2ZhdWx0IG9uIGZpbmRpbmcKKwlTVFRfVExTIHN5bWJvbHMgd2l0aG91dCBhbnkgVExTIHNlY3Rpb25zLiAgSW5zdGVhZCwgY2hhbmdlIHRoZQorCXN5bWJvbCB0eXBlIHRvIFNUVF9OT1RZUEUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTgtMTg2MDYKK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvQ2hhbmdlTG9nIHwgIDcgKysrKysrKworIGJmZC9lbGZsaW5rLmMgfCAyMCArKysrKysrKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCitpbmRleCBkYTQyM2IxLi4xZjNmYzFjIDEwMDY0NAorLS0tIGEvYmZkL0NoYW5nZUxvZworKysrIGIvYmZkL0NoYW5nZUxvZworQEAgLTEsNSArMSwxMiBAQAorIDIwMTgtMTAtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorIAorKwlQUiAyMzgwNQorKwkqIGVsZmxpbmsuYyAoZWxmX2xpbmtfaW5wdXRfYmZkKTogRG9uJ3Qgc2VnZmF1bHQgb24gZmluZGluZworKwlTVFRfVExTIHN5bWJvbHMgd2l0aG91dCBhbnkgVExTIHNlY3Rpb25zLiAgSW5zdGVhZCwgY2hhbmdlIHRoZQorKwlzeW1ib2wgdHlwZSB0byBTVFRfTk9UWVBFLgorKworKzIwMTgtMTAtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgorKworIAlQUiAyMzgwNgorIAkqIG1lcmdlLmMgKF9iZmRfYWRkX21lcmdlX3NlY3Rpb24pOiBEb24ndCBhdHRlbXB0IHRvIG1lcmdlCisgCXNlY3Rpb25zIHdpdGggcmlkaWN1bG91c2x5IGxhcmdlIGFsaWdubWVudHMuCitkaWZmIC0tZ2l0IGEvYmZkL2VsZmxpbmsuYyBiL2JmZC9lbGZsaW5rLmMKK2luZGV4IGMzODc2Y2IuLjg3NDQwZGIgMTAwNjQ0CistLS0gYS9iZmQvZWxmbGluay5jCisrKysgYi9iZmQvZWxmbGluay5jCitAQCAtMTA0ODksOCArMTA0ODksMTEgQEAgZWxmX2xpbmtfaW5wdXRfYmZkIChzdHJ1Y3QgZWxmX2ZpbmFsX2xpbmtfaW5mbyAqZmxpbmZvLCBiZmQgKmlucHV0X2JmZCkKKyAJICBpZiAoRUxGX1NUX1RZUEUgKG9zeW0uc3RfaW5mbykgPT0gU1RUX1RMUykKKyAJICAgIHsKKyAJICAgICAgLyogU1RUX1RMUyBzeW1ib2xzIGFyZSByZWxhdGl2ZSB0byBQVF9UTFMgc2VnbWVudCBiYXNlLiAgKi8KKy0JICAgICAgQkZEX0FTU0VSVCAoZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbyktPnRsc19zZWMgIT0gTlVMTCk7CistCSAgICAgIG9zeW0uc3RfdmFsdWUgLT0gZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbyktPnRsc19zZWMtPnZtYTsKKysJICAgICAgaWYgKGVsZl9oYXNoX3RhYmxlIChmbGluZm8tPmluZm8pLT50bHNfc2VjICE9IE5VTEwpCisrCQlvc3ltLnN0X3ZhbHVlIC09IGVsZl9oYXNoX3RhYmxlIChmbGluZm8tPmluZm8pLT50bHNfc2VjLT52bWE7CisrCSAgICAgIGVsc2UKKysJCW9zeW0uc3RfaW5mbyA9IEVMRl9TVF9JTkZPIChFTEZfU1RfQklORCAob3N5bS5zdF9pbmZvKSwKKysJCQkJCSAgICBTVFRfTk9UWVBFKTsKKyAJICAgIH0KKyAJfQorIAorQEAgLTExMDQ2LDEyICsxMTA0OSwxNyBAQCBlbGZfbGlua19pbnB1dF9iZmQgKHN0cnVjdCBlbGZfZmluYWxfbGlua19pbmZvICpmbGluZm8sIGJmZCAqaW5wdXRfYmZkKQorIAkJCSAgICAgIHN5bS5zdF92YWx1ZSArPSBvc2VjLT52bWE7CisgCQkJICAgICAgaWYgKEVMRl9TVF9UWVBFIChzeW0uc3RfaW5mbykgPT0gU1RUX1RMUykKKyAJCQkJeworKwkJCQkgIHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlICpodGFiCisrCQkJCSAgICA9IGVsZl9oYXNoX3RhYmxlIChmbGluZm8tPmluZm8pOworKworIAkJCQkgIC8qIFNUVF9UTFMgc3ltYm9scyBhcmUgcmVsYXRpdmUgdG8gUFRfVExTCisgCQkJCSAgICAgc2VnbWVudCBiYXNlLiAgKi8KKy0JCQkJICBCRkRfQVNTRVJUIChlbGZfaGFzaF90YWJsZSAoZmxpbmZvLT5pbmZvKQorLQkJCQkJICAgICAgLT50bHNfc2VjICE9IE5VTEwpOworLQkJCQkgIHN5bS5zdF92YWx1ZSAtPSAoZWxmX2hhc2hfdGFibGUgKGZsaW5mby0+aW5mbykKKy0JCQkJCQkgICAtPnRsc19zZWMtPnZtYSk7CisrCQkJCSAgaWYgKGh0YWItPnRsc19zZWMgIT0gTlVMTCkKKysJCQkJICAgIHN5bS5zdF92YWx1ZSAtPSBodGFiLT50bHNfc2VjLT52bWE7CisrCQkJCSAgZWxzZQorKwkJCQkgICAgc3ltLnN0X2luZm8KKysJCQkJICAgICAgPSBFTEZfU1RfSU5GTyAoRUxGX1NUX0JJTkQgKHN5bS5zdF9pbmZvKSwKKysJCQkJCQkgICAgIFNUVF9OT1RZUEUpOworIAkJCQl9CisgCQkJICAgIH0KKyAKKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTY3NTkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC02NzU5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmY0OTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTY3NTkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSA2NGUyMzRkNDE3ZDU2ODVhNGFlYzBlZGM2MTgxMTRkOTk5MWMwMzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA2IEZlYiAyMDE4IDE1OjQ4OjI5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgYXR0ZW1wdHMgdG8gY2FsbCBzdHJuY3B5IHdpdGggYSB6ZXJvLWxlbmd0aCBmaWVsZCBieQotIGNoYWNraW5nIHRoZSBzaXplIG9mIGRlYnVnbGluayBzZWN0aW9ucy4KLQotCVBSIDIyNzk0Ci0JKiBvcG5jbHMuYyAoYmZkX2dldF9kZWJ1Z19saW5rX2luZm9fMSk6IENoZWNrIHRoZSBzaXplIG9mIHRoZQotCXNlY3Rpb24gYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVhZCBpdCBpbi4KLQkoYmZkX2dldF9hbHRfZGVidWdfbGlua19pbmZvKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtNjc1OQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCAgNyArKysrKysrCi0gYmZkL29wbmNscy5jICB8IDIyICsrKysrKysrKysrKysrKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL29wbmNscy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL29wbmNscy5jCi0rKysgZ2l0L2JmZC9vcG5jbHMuYwotQEAgLTExNzksNiArMTE3OSw3IEBAIGJmZF9nZXRfZGVidWdfbGlua19pbmZvXzEgKGJmZCAqYWJmZCwgdm8KLSAgIGJmZF9ieXRlICpjb250ZW50czsKLSAgIHVuc2lnbmVkIGludCBjcmNfb2Zmc2V0OwotICAgY2hhciAqbmFtZTsKLSsgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLSAKLSAgIEJGRF9BU1NFUlQgKGFiZmQpOwotICAgQkZEX0FTU0VSVCAoY3JjMzJfb3V0KTsKLUBAIC0xMTg4LDYgKzExODksMTIgQEAgYmZkX2dldF9kZWJ1Z19saW5rX2luZm9fMSAoYmZkICphYmZkLCB2bwotICAgaWYgKHNlY3QgPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0rICBzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwotKwotKyAgLyogUFIgMjI3OTQ6IE1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9uIGhhcyBhIHJlYXNvbmFibGUgc2l6ZS4gICovCi0rICBpZiAoc2l6ZSA8IDggfHwgc2l6ZSA+PSBiZmRfZ2V0X3NpemUgKGFiZmQpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSAgIGlmICghYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGFiZmQsIHNlY3QsICZjb250ZW50cykpCi0gICAgIHsKLSAgICAgICBpZiAoY29udGVudHMgIT0gTlVMTCkKLUBAIC0xMTk3LDEwICsxMjA0LDEwIEBAIGJmZF9nZXRfZGVidWdfbGlua19pbmZvXzEgKGJmZCAqYWJmZCwgdm8KLSAKLSAgIC8qIENSQyB2YWx1ZSBpcyBzdG9yZWQgYWZ0ZXIgdGhlIGZpbGVuYW1lLCBhbGlnbmVkIHVwIHRvIDQgYnl0ZXMuICAqLwotICAgbmFtZSA9IChjaGFyICopIGNvbnRlbnRzOwotLSAgLyogUFIgMTc1OTc6IGF2b2lkIHJlYWRpbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4gICovCi0tICBjcmNfb2Zmc2V0ID0gc3RybmxlbiAobmFtZSwgYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpKSArIDE7Ci0rICAvKiBQUiAxNzU5NzogQXZvaWQgcmVhZGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLiAgKi8KLSsgIGNyY19vZmZzZXQgPSBzdHJubGVuIChuYW1lLCBzaXplKSArIDE7Ci0gICBjcmNfb2Zmc2V0ID0gKGNyY19vZmZzZXQgKyAzKSAmIH4zOwotLSAgaWYgKGNyY19vZmZzZXQgKyA0ID4gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpKQotKyAgaWYgKGNyY19vZmZzZXQgKyA0ID4gc2l6ZSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAqY3JjMzIgPSBiZmRfZ2V0XzMyIChhYmZkLCBjb250ZW50cyArIGNyY19vZmZzZXQpOwotQEAgLTEyNjEsNiArMTI2OCw3IEBAIGJmZF9nZXRfYWx0X2RlYnVnX2xpbmtfaW5mbyAoYmZkICogYWJmZCwKLSAgIGJmZF9ieXRlICpjb250ZW50czsKLSAgIHVuc2lnbmVkIGludCBidWlsZGlkX29mZnNldDsKLSAgIGNoYXIgKm5hbWU7Ci0rICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0gCi0gICBCRkRfQVNTRVJUIChhYmZkKTsKLSAgIEJGRF9BU1NFUlQgKGJ1aWxkaWRfbGVuKTsKLUBAIC0xMjcxLDYgKzEyNzksMTAgQEAgYmZkX2dldF9hbHRfZGVidWdfbGlua19pbmZvIChiZmQgKiBhYmZkLAotICAgaWYgKHNlY3QgPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0rICBzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwotKyAgaWYgKHNpemUgPCA4IHx8IHNpemUgPj0gYmZkX2dldF9zaXplIChhYmZkKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0gICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChhYmZkLCBzZWN0LCAmIGNvbnRlbnRzKSkKLSAgICAgewotICAgICAgIGlmIChjb250ZW50cyAhPSBOVUxMKQotQEAgLTEyODAsMTEgKzEyOTIsMTEgQEAgYmZkX2dldF9hbHRfZGVidWdfbGlua19pbmZvIChiZmQgKiBhYmZkLAotIAotICAgLyogQnVpbGRJRCB2YWx1ZSBpcyBzdG9yZWQgYWZ0ZXIgdGhlIGZpbGVuYW1lLiAgKi8KLSAgIG5hbWUgPSAoY2hhciAqKSBjb250ZW50czsKLS0gIGJ1aWxkaWRfb2Zmc2V0ID0gc3RybmxlbiAobmFtZSwgYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpKSArIDE7Ci0rICBidWlsZGlkX29mZnNldCA9IHN0cm5sZW4gKG5hbWUsIHNpemUpICsgMTsKLSAgIGlmIChidWlsZGlkX29mZnNldCA+PSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdCkpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgKmJ1aWxkaWRfbGVuID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpIC0gYnVpbGRpZF9vZmZzZXQ7Ci0rICAqYnVpbGRpZF9sZW4gPSBzaXplIC0gYnVpbGRpZF9vZmZzZXQ7Ci0gICAqYnVpbGRpZF9vdXQgPSBiZmRfbWFsbG9jICgqYnVpbGRpZF9sZW4pOwotICAgbWVtY3B5ICgqYnVpbGRpZF9vdXQsIGNvbnRlbnRzICsgYnVpbGRpZF9vZmZzZXQsICpidWlsZGlkX2xlbik7Ci0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE4LTAyLTA2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMjc5NAotKyAgICAgICAqIG9wbmNscy5jIChiZmRfZ2V0X2RlYnVnX2xpbmtfaW5mb18xKTogQ2hlY2sgdGhlIHNpemUgb2YgdGhlCi0rICAgICAgIHNlY3Rpb24gYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVhZCBpdCBpbi4KLSsgICAgICAgKGJmZF9nZXRfYWx0X2RlYnVnX2xpbmtfaW5mbyk6IExpa2V3aXNlLgotKwotIDIwMTgtMDItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIEltcG9ydCBwYXRjaCBmcm9tIG1haW5saW5lOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNjg3Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTY4NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZjM2YzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNjg3Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZDg5NWVmNzdmZmM5NGUwMmU3NDg4NTZjMmFiNTRmNWJiOGNjODY3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgOSBGZWIgMjAxOCAwOToyODo0NSArMDAwMAotU3ViamVjdDogW1BBVENIXSBJbXBvcnQgcGF0Y2ggZnJvbSBtYWlubGluZSB0byBmaXggcG9zc2libGUgc2VnLWZhdWx0IHdoaWxzdAotIHBhcnNpbmcgY29ycnVwdCBFTEYgbm90ZXMgd2l0aCBleHRyYXZhZ2VudCBhbGlnbm1lbnRzLgotCi0JUFIgMjI3ODgKLQkqIGVsZi5jIChlbGZfcGFyc2Vfbm90ZXMpOiBSZWplY3Qgbm90ZXMgd2l0aCBleGNlc3N1aXZlbHkgbGFyZ2UKLQlhbGlnbm1lbnRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTY4NzIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgOSArKysrKysrKysKLSBiZmQvZWxmLmMgICAgIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L2JmZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYuYwotKysrIGdpdC9iZmQvZWxmLmMKLUBAIC0xMTAyMCw2ICsxMTAyMCw4IEBAIGVsZl9wYXJzZV9ub3RlcyAoYmZkICphYmZkLCBjaGFyICpidWYsIHMKLSAgICAgIGFsaWduIGlzIGxlc3MgdGhhbiA0LCB3ZSB1c2UgNCBieXRlIGFsaWdubWVudC4gICAqLwotICAgaWYgKGFsaWduIDwgNCkKLSAgICAgYWxpZ24gPSA0OwotKyAgaWYgKGFsaWduICE9IDQgJiYgYWxpZ24gIT0gOCkKLSsgICAgcmV0dXJuIEZBTFNFOwotIAotICAgcCA9IGJ1ZjsKLSAgIHdoaWxlIChwIDwgYnVmICsgc2l6ZSkKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMiBAQAotKzIwMTgtMDItMDkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIEltcG9ydCBwYXRjaCBmcm9tIG1haW5saW5lOgotKyAgICAgICAyMDE4LTAyLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMjc4OAotKyAgICAgICAqIGVsZi5jIChlbGZfcGFyc2Vfbm90ZXMpOiBSZWplY3Qgbm90ZXMgd2l0aCBleGNlc3N1aXZlbHkgbGFyZ2UKLSsgICAgICAgYWxpZ25tZW50cy4KLSsKLSAyMDE4LTAzLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiAyMjkwNQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzIwOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTcyMDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZmVmZWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzIwOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZWI3N2Y2YTQ2MjE3OTUzNjdhMzljZGQzMDk1NzkwM2FmOWRiYjgxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI3IEphbiAyMDE4IDA4OjE5OjMzICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjI3NDEsIG9iamNvcHkgc2VnZmF1bHQgb24gZnV6emVkIENPRkYgb2JqZWN0Ci0KLQlQUiAyMjc0MQotCSogY29mZmdlbi5jIChjb2ZmX3BvaW50ZXJpemVfYXV4KTogRW5zdXJlIGF1eGVudCB0YWduZHggaXMgaW4KLQlyYW5nZSBiZWZvcmUgY29udmVydGluZyB0byBhIHN5bWJvbCB0YWJsZSBwb2ludGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6ICBDVkUtMjAxOC03MjA4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2NvZmZnZW4uYyB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvY29mZmdlbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2NvZmZnZW4uYwotKysrIGdpdC9iZmQvY29mZmdlbi5jCi1AQCAtMTU1NSw3ICsxNTU1LDggQEAgY29mZl9wb2ludGVyaXplX2F1eCAoYmZkICphYmZkLAotICAgICB9Ci0gICAvKiBBIG5lZ2F0aXZlIHRhZ25keCBpcyBtZWFuaW5nbGVzcywgYnV0IHRoZSBTQ08gMy4ydjQgY2MgY2FuCi0gICAgICBnZW5lcmF0ZSBvbmUsIHNvIHdlIG11c3QgYmUgY2FyZWZ1bCB0byBpZ25vcmUgaXQuICAqLwotLSAgaWYgKGF1eGVudC0+dS5hdXhlbnQueF9zeW0ueF90YWduZHgubCA+IDApCi0rICBpZiAoKHVuc2lnbmVkIGxvbmcpIGF1eGVudC0+dS5hdXhlbnQueF9zeW0ueF90YWduZHgubAotKyAgICAgIDwgb2JqX3Jhd19zeW1lbnRfY291bnQgKGFiZmQpKQotICAgICB7Ci0gICAgICAgYXV4ZW50LT51LmF1eGVudC54X3N5bS54X3RhZ25keC5wID0KLSAJdGFibGVfYmFzZSArIGF1eGVudC0+dS5hdXhlbnQueF9zeW0ueF90YWduZHgubDsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxOC0wMS0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rICAgICAgIFBSIDIyNzQxCi0rICAgICAgICogY29mZmdlbi5jIChjb2ZmX3BvaW50ZXJpemVfYXV4KTogRW5zdXJlIGF1eGVudCB0YWduZHggaXMgaW4KLSsgICAgICAgcmFuZ2UgYmVmb3JlIGNvbnZlcnRpbmcgdG8gYSBzeW1ib2wgdGFibGUgcG9pbnRlci4KLSsKLSAyMDE4LTAyLTI4ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAgICAgICAgUFIgMjI4ODcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc1NjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NTY4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTViMzJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc1NjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIGVlZjEwNDY2NGVmYjUyOTY1ZDg1YTI4YmMzZmM3Yzc3ZTUyZTQ4ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDI4IEZlYiAyMDE4IDEwOjEzOjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvdyB3aGVuIHJlYWRpbmcgY29ycnVwdCBkd2FyZjEKLSBkZWJ1ZyBpbmZvcm1hdGlvbi4KLQotCVBSIDIyODk0Ci0JKiBkd2FyZjEuYyAocGFyc2VfZGllKTogQ2hlY2sgdGhlIGxlbmd0aCBvZiBmb3JtIGJsb2NrcyBiZWZvcmUKLQlhZHZhbmNpbmcgdGhlIGRhdGEgcG9pbnRlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQWZmZWN0czogQmludXRpbHMgPD0gMi4zMAotQ1ZFOiBDVkUtMjAxOC03NTY4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA2ICsrKysrKwotIGJmZC9kd2FyZjEuYyAgfCAxNyArKysrKysrKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvZHdhcmYxLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZHdhcmYxLmMKLSsrKyBnaXQvYmZkL2R3YXJmMS5jCi1AQCAtMjEzLDYgKzIxMyw3IEBAIHBhcnNlX2RpZSAoYmZkICoJICAgICBhYmZkLAotICAgLyogVGhlbiB0aGUgYXR0cmlidXRlcy4gICovCi0gICB3aGlsZSAoeHB0ciArIDIgPD0gYURpZVB0ckVuZCkKLSAgICAgewotKyAgICAgIHVuc2lnbmVkIGludCAgIGJsb2NrX2xlbjsKLSAgICAgICB1bnNpZ25lZCBzaG9ydCBhdHRyOwotIAotICAgICAgIC8qIFBhcnNlIHRoZSBhdHRyaWJ1dGUgYmFzZWQgb24gaXRzIGZvcm0uICBUaGlzIHNlY3Rpb24KLUBAIC0yNTUsMTIgKzI1NiwyNCBAQCBwYXJzZV9kaWUgKGJmZCAqCSAgICAgYWJmZCwKLSAJICBicmVhazsKLSAJY2FzZSBGT1JNX0JMT0NLMjoKLSAJICBpZiAoeHB0ciArIDIgPD0gYURpZVB0ckVuZCkKLS0JICAgIHhwdHIgKz0gYmZkX2dldF8xNiAoYWJmZCwgeHB0cik7Ci0rCSAgICB7Ci0rCSAgICAgIGJsb2NrX2xlbiA9IGJmZF9nZXRfMTYgKGFiZmQsIHhwdHIpOwotKwkgICAgICBpZiAoeHB0ciArIGJsb2NrX2xlbiA+IGFEaWVQdHJFbmQKLSsJCSAgfHwgeHB0ciArIGJsb2NrX2xlbiA8IHhwdHIpCi0rCQlyZXR1cm4gRkFMU0U7Ci0rCSAgICAgIHhwdHIgKz0gYmxvY2tfbGVuOwotKwkgICAgfQotIAkgIHhwdHIgKz0gMjsKLSAJICBicmVhazsKLSAJY2FzZSBGT1JNX0JMT0NLNDoKLSAJICBpZiAoeHB0ciArIDQgPD0gYURpZVB0ckVuZCkKLS0JICAgIHhwdHIgKz0gYmZkX2dldF8zMiAoYWJmZCwgeHB0cik7Ci0rCSAgICB7Ci0rCSAgICAgIGJsb2NrX2xlbiA9IGJmZF9nZXRfMzIgKGFiZmQsIHhwdHIpOwotKwkgICAgICBpZiAoeHB0ciArIGJsb2NrX2xlbiA+IGFEaWVQdHJFbmQKLSsJCSAgfHwgeHB0ciArIGJsb2NrX2xlbiA8IHhwdHIpCi0rCQlyZXR1cm4gRkFMU0U7Ci0rCSAgICAgIHhwdHIgKz0gYmxvY2tfbGVuOwotKwkgICAgfQotIAkgIHhwdHIgKz0gNDsKLSAJICBicmVhazsKLSAJY2FzZSBGT1JNX1NUUklORzoKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTQsNyArNCwxMSBAQAotICAgICAgICAqIGNvZmZnZW4uYyAoY29mZl9wb2ludGVyaXplX2F1eCk6IEVuc3VyZSBhdXhlbnQgdGFnbmR4IGlzIGluCi0gICAgICAgIHJhbmdlIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGEgc3ltYm9sIHRhYmxlIHBvaW50ZXIuCi0gCi0tMjAxOC0wMi0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rMjAxOC0wMi0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgMjI4OTQKLSsgICAgICAgKiBkd2FyZjEuYyAocGFyc2VfZGllKTogQ2hlY2sgdGhlIGxlbmd0aCBvZiBmb3JtIGJsb2NrcyBiZWZvcmUKLSsgICAgICAgYWR2YW5jaW5nIHRoZSBkYXRhIHBvaW50ZXIuCi0gCi0gICAgICAgIFBSIDIyODk1Ci0gICAgICAgIFBSIDIyODkzCi1AQCAtMTQsNiArMTgsOCBAQAotICAgICAgICBzaXplIGlzIGludmFsaWQuCi0gICAgICAgIChyZWFkX2F0dHJpYnV0ZV92YWx1ZSk6IEFkanVzdCBpbnZvY2F0aW9ucyBvZiByZWFkX25fYnl0ZXMuCi0gCi0rMjAxOC0wMi0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0gICAgICAgIFBSIDIyODg3Ci0gICAgICAgICogYW91dHguaCAoc3dhcF9zdGRfcmVsb2NfaW4pOiBDb3JyZWN0IHJfaW5kZXggYm91bmQgY2hlY2suCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NTY5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzU2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjMGZkMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NTY5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLUZyb20gMTJjOTYzNDIxZDA0NWExMjdjNDEzYTA3MjIwNjJiOTkzMmM1MGFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMTE6NTA6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2F0Y2ggaW50ZWdlciBvdmVyZmxvd3MvdW5kZXJmbG93cyB3aGVuIHBhcnNpbmcgY29ycnVwdCBEV0FSRgotIEZPUk0gYmxvY2tzLgotCi0JUFIgMjI4OTUKLQlQUiAyMjg5MwotCSogZHdhcmYyLmMgKHJlYWRfbl9ieXRlcyk6IFJlcGxhY2Ugc2l6ZSBwYXJhbWV0ZXIgd2l0aCBkd2FyZl9ibG9jawotCXBvaW50ZXIuICBEcm9wIHVudXNlZCBhYmZkIHBhcmFtZXRlci4gIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9jawotCWJlZm9yZSBpbml0aWFsaXNpbmcgdGhlIGRhdGEgZmllbGQuICBSZXR1cm4gdGhlIGVuZCBwb2ludGVyIGlmIHRoZQotCXNpemUgaXMgaW52YWxpZC4KLQkocmVhZF9hdHRyaWJ1dGVfdmFsdWUpOiBBZGp1c3QgaW52b2NhdGlvbnMgb2YgcmVhZF9uX2J5dGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTc1NjkKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2R3YXJmMi5jICB8IDM2ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL2R3YXJmMi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2R3YXJmMi5jCi0rKysgZ2l0L2JmZC9kd2FyZjIuYwotQEAgLTYyMiwxNCArNjIyLDI0IEBAIHJlYWRfOF9ieXRlcyAoYmZkICphYmZkLCBiZmRfYnl0ZSAqYnVmLAotIH0KLSAKLSBzdGF0aWMgYmZkX2J5dGUgKgotLXJlYWRfbl9ieXRlcyAoYmZkICphYmZkIEFUVFJJQlVURV9VTlVTRUQsCi0tCSAgICAgIGJmZF9ieXRlICpidWYsCi0tCSAgICAgIGJmZF9ieXRlICplbmQsCi0tCSAgICAgIHVuc2lnbmVkIGludCBzaXplIEFUVFJJQlVURV9VTlVTRUQpCi0tewotLSAgaWYgKGJ1ZiArIHNpemUgPiBlbmQpCi0tICAgIHJldHVybiBOVUxMOwotLSAgcmV0dXJuIGJ1ZjsKLStyZWFkX25fYnl0ZXMgKGJmZF9ieXRlICogICAgICAgICAgIGJ1ZiwKLSsJICAgICAgYmZkX2J5dGUgKiAgICAgICAgICAgZW5kLAotKwkgICAgICBzdHJ1Y3QgZHdhcmZfYmxvY2sgKiBibG9jaykKLSt7Ci0rICB1bnNpZ25lZCBpbnQgIHNpemUgPSBibG9jay0+c2l6ZTsKLSsgIGJmZF9ieXRlICogICAgYmxvY2tfZW5kID0gYnVmICsgc2l6ZTsKLSsKLSsgIGlmIChibG9ja19lbmQgPiBlbmQgfHwgYmxvY2tfZW5kIDwgYnVmKQotKyAgICB7Ci0rICAgICAgYmxvY2stPmRhdGEgPSBOVUxMOwotKyAgICAgIGJsb2NrLT5zaXplID0gMDsKLSsgICAgICByZXR1cm4gZW5kOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBibG9jay0+ZGF0YSA9IGJ1ZjsKLSsgICAgICByZXR1cm4gYmxvY2tfZW5kOwotKyAgICB9Ci0gfQotIAotIC8qIFNjYW5zIGEgTlVMIHRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IEJVRiwgcmV0dXJuaW5nIGEgcG9pbnRlciB0byBpdC4KLUBAIC0xMTI3LDggKzExMzcsNyBAQCByZWFkX2F0dHJpYnV0ZV92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqCi0gCXJldHVybiBOVUxMOwotICAgICAgIGJsay0+c2l6ZSA9IHJlYWRfMl9ieXRlcyAoYWJmZCwgaW5mb19wdHIsIGluZm9fcHRyX2VuZCk7Ci0gICAgICAgaW5mb19wdHIgKz0gMjsKLS0gICAgICBibGstPmRhdGEgPSByZWFkX25fYnl0ZXMgKGFiZmQsIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsay0+c2l6ZSk7Ci0tICAgICAgaW5mb19wdHIgKz0gYmxrLT5zaXplOwotKyAgICAgIGluZm9fcHRyID0gcmVhZF9uX2J5dGVzIChpbmZvX3B0ciwgaW5mb19wdHJfZW5kLCBibGspOwotICAgICAgIGF0dHItPnUuYmxrID0gYmxrOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1fYmxvY2s0OgotQEAgLTExMzgsOCArMTE0Nyw3IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3QgYXR0cmlidXRlICoKLSAJcmV0dXJuIE5VTEw7Ci0gICAgICAgYmxrLT5zaXplID0gcmVhZF80X2J5dGVzIChhYmZkLCBpbmZvX3B0ciwgaW5mb19wdHJfZW5kKTsKLSAgICAgICBpbmZvX3B0ciArPSA0OwotLSAgICAgIGJsay0+ZGF0YSA9IHJlYWRfbl9ieXRlcyAoYWJmZCwgaW5mb19wdHIsIGluZm9fcHRyX2VuZCwgYmxrLT5zaXplKTsKLS0gICAgICBpbmZvX3B0ciArPSBibGstPnNpemU7Ci0rICAgICAgaW5mb19wdHIgPSByZWFkX25fYnl0ZXMgKGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsayk7Ci0gICAgICAgYXR0ci0+dS5ibGsgPSBibGs7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfRk9STV9kYXRhMjoKLUBAIC0xMTc5LDggKzExODcsNyBAQCByZWFkX2F0dHJpYnV0ZV92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqCi0gICAgICAgYmxrLT5zaXplID0gX2JmZF9zYWZlX3JlYWRfbGViMTI4IChhYmZkLCBpbmZvX3B0ciwgJmJ5dGVzX3JlYWQsCi0gCQkJCQkgRkFMU0UsIGluZm9fcHRyX2VuZCk7Ci0gICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0gICAgICBibGstPmRhdGEgPSByZWFkX25fYnl0ZXMgKGFiZmQsIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQsIGJsay0+c2l6ZSk7Ci0tICAgICAgaW5mb19wdHIgKz0gYmxrLT5zaXplOwotKyAgICAgIGluZm9fcHRyID0gcmVhZF9uX2J5dGVzIChpbmZvX3B0ciwgaW5mb19wdHJfZW5kLCBibGspOwotICAgICAgIGF0dHItPnUuYmxrID0gYmxrOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIERXX0ZPUk1fYmxvY2sxOgotQEAgLTExOTAsOCArMTE5Nyw3IEBAIHJlYWRfYXR0cmlidXRlX3ZhbHVlIChzdHJ1Y3QgYXR0cmlidXRlICoKLSAJcmV0dXJuIE5VTEw7Ci0gICAgICAgYmxrLT5zaXplID0gcmVhZF8xX2J5dGUgKGFiZmQsIGluZm9fcHRyLCBpbmZvX3B0cl9lbmQpOwotICAgICAgIGluZm9fcHRyICs9IDE7Ci0tICAgICAgYmxrLT5kYXRhID0gcmVhZF9uX2J5dGVzIChhYmZkLCBpbmZvX3B0ciwgaW5mb19wdHJfZW5kLCBibGstPnNpemUpOwotLSAgICAgIGluZm9fcHRyICs9IGJsay0+c2l6ZTsKLSsgICAgICBpbmZvX3B0ciA9IHJlYWRfbl9ieXRlcyAoaW5mb19wdHIsIGluZm9fcHRyX2VuZCwgYmxrKTsKLSAgICAgICBhdHRyLT51LmJsayA9IGJsazsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBEV19GT1JNX2RhdGExOgotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtNiw2ICs2LDE0IEBACi0gCi0gMjAxOC0wMi0yOCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0rICAgICAgIFBSIDIyODk1Ci0rICAgICAgIFBSIDIyODkzCi0rICAgICAgICogZHdhcmYyLmMgKHJlYWRfbl9ieXRlcyk6IFJlcGxhY2Ugc2l6ZSBwYXJhbWV0ZXIgd2l0aCBkd2FyZl9ibG9jawotKyAgICAgICBwb2ludGVyLiAgRHJvcCB1bnVzZWQgYWJmZCBwYXJhbWV0ZXIuICBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvY2sKLSsgICAgICAgYmVmb3JlIGluaXRpYWxpc2luZyB0aGUgZGF0YSBmaWVsZC4gIFJldHVybiB0aGUgZW5kIHBvaW50ZXIgaWYgdGhlCi0rICAgICAgIHNpemUgaXMgaW52YWxpZC4KLSsgICAgICAgKHJlYWRfYXR0cmlidXRlX3ZhbHVlKTogQWRqdXN0IGludm9jYXRpb25zIG9mIHJlYWRfbl9ieXRlcy4KLSsKLSAgICAgICAgUFIgMjI4ODcKLSAgICAgICAgKiBhb3V0eC5oIChzd2FwX3N0ZF9yZWxvY19pbik6IENvcnJlY3Qgcl9pbmRleCBib3VuZCBjaGVjay4KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc2NDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NjQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGVmNDZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTc2NDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDExNmFjYjJjMjY4Yzg5Yzg5MTg2NjczYTdjOTI2MjBkMjE4MjViMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMjowOTo1MCArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjIyODg3LCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4KLSBhb3V0XzMyX3N3YXBfc3RkX3JlbG9jX291dAotCi0JUFIgMjI4ODcKLQkqIGFvdXR4LmggKHN3YXBfc3RkX3JlbG9jX2luKTogQ29ycmVjdCByX2luZGV4IGJvdW5kIGNoZWNrLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTc2NDIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNSArKysrKwotIGJmZC9hb3V0eC5oICAgfCA2ICsrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9hb3V0eC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2FvdXR4LmgKLSsrKyBnaXQvYmZkL2FvdXR4LmgKLUBAIC0yMjg0LDEwICsyMjg0LDEyIEBAIE5BTUUgKGFvdXQsIHN3YXBfc3RkX3JlbG9jX2luKSAoYmZkICphYmYKLSAgIGlmIChyX2Jhc2VyZWwpCi0gICAgIHJfZXh0ZXJuID0gMTsKLSAKLS0gIGlmIChyX2V4dGVybiAmJiByX2luZGV4ID4gc3ltY291bnQpCi0rICBpZiAocl9leHRlcm4gJiYgcl9pbmRleCA+PSBzeW1jb3VudCkKLSAgICAgewotICAgICAgIC8qIFdlIGNvdWxkIGFycmFuZ2UgdG8gcmV0dXJuIGFuIGVycm9yLCBidXQgaXQgbWlnaHQgYmUgdXNlZnVsCi0tCSB0byBzZWUgdGhlIGZpbGUgZXZlbiBpZiBpdCBpcyBiYWQuICAqLwotKwkgdG8gc2VlIHRoZSBmaWxlIGV2ZW4gaWYgaXQgaXMgYmFkLiAgRklYTUU6IE9mIGNvdXJzZSB0aGlzCi0rCSBtZWFucyB0aGF0IG9iamR1bXAgLXIgKmRvZXNuJ3QqIHNlZSB0aGUgYWN0dWFsIHJlbG9jLCBhbmQKLSsJIG9iamNvcHkgc2lsZW50bHkgd3JpdGVzIGEgZGlmZmVyZW50IHJlbG9jLiAgKi8KLSAgICAgICByX2V4dGVybiA9IDA7Ci0gICAgICAgcl9pbmRleCA9IE5fQUJTOwotICAgICB9Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTgtMDItMjggIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKyAgICAgICBQUiAyMjg4NwotKyAgICAgICAqIGFvdXR4LmggKHN3YXBfc3RkX3JlbG9jX2luKTogQ29ycmVjdCByX2luZGV4IGJvdW5kIGNoZWNrLgotKwotIDIwMTgtMDItMDYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIDIyNzk0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NjQzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTgtNzY0My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEyZGVjMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC03NjQzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gZDExYWU5NWVhMzQwMzU1OWYwNTI5MDNhYjA1M2Y0M2FkNzgyMWUzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMSBNYXIgMjAxOCAxNjoxNDowOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGlsbGVnYWwgbWVtb3J5IGFjY2Vzc2VzIHRyaWdnZXJkIGJ5IGludGdlciBvdmVyZmxvdwotIHdoZW4gcGFyc2luZyBjb3JydXB0IERXQVJGIGluZm9ybWF0aW9uIG9uIGEgMzItYml0IGhvc3QuCi0KLQlQUiAyMjkwNQotCSogZHdhcmYuYyAoZGlzcGxheV9kZWJ1Z19yYW5nZXMpOiBDaGVjayB0aGF0IHRoZSBvZmZzZXQgbG9hZGVkCi0JZnJvbSB0aGUgcmFuZ2VfZW50cnkgc3RydWN0dXJlIGlzIHZhbGlkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1BZmZlY3RzOiBCaW51dGlscyA8PSAyLjMwCi1DVkU6IENWRS0yMDE4LTc2NDMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9kd2FyZi5jICAgfCAxNSArKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9iaW51dGlscy9kd2FyZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvZHdhcmYuYwotKysrIGdpdC9iaW51dGlscy9kd2FyZi5jCi1AQCAtMzg3LDYgKzM4Nyw5IEBAIHJlYWRfdWxlYjEyOCAodW5zaWduZWQgY2hhciAqIGRhdGEsCi0gICAgIH0JCQkJCQkJCVwKLSAgIHdoaWxlICgwKQotIAotKy8qIFJlYWQgQU1PVU5UIGJ5dGVzIGZyb20gUFRSIGFuZCBzdG9yZSB0aGVtIGluIFZBTCBhcyBhbiB1bnNpZ25lZCB2YWx1ZS4KLSsgICBDaGVja3MgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlYWQgd2lsbCBub3QgcmVhY2ggb3IgcGFzcyBFTkQKLSsgICBhbmQgdGhhdCBWQUwgaXMgYmlnIGVub3VnaCB0byBob2xkIEFNT1VOVCBieXRlcy4gICovCi0gI2RlZmluZSBTQUZFX0JZVEVfR0VUKFZBTCwgUFRSLCBBTU9VTlQsIEVORCkJXAotICAgZG8JCQkJCQlcCi0gICAgIHsJCQkJCQlcCi1AQCAtNDE1LDYgKzQxOCw3IEBAIHJlYWRfdWxlYjEyOCAodW5zaWduZWQgY2hhciAqIGRhdGEsCi0gICAgIH0JCQkJCQlcCi0gICB3aGlsZSAoMCkKLSAKLSsvKiBMaWtlIFNBRkVfQllURV9HRVQsIGJ1dCBhbHNvIGluY3JlbWVudHMgUFRSIGJ5IEFNT1VOVC4gICovCi0gI2RlZmluZSBTQUZFX0JZVEVfR0VUX0FORF9JTkMoVkFMLCBQVFIsIEFNT1VOVCwgRU5EKQlcCi0gICBkbwkJCQkJCQlcCi0gICAgIHsJCQkJCQkJXAotQEAgLTQyMyw2ICs0MjcsNyBAQCByZWFkX3VsZWIxMjggKHVuc2lnbmVkIGNoYXIgKiBkYXRhLAotICAgICB9CQkJCQkJCVwKLSAgIHdoaWxlICgwKQotIAotKy8qIExpa2UgU0FGRV9CWVRFX0dFVCwgYnV0IHJlYWRzIGEgc2lnbmVkIHZhbHVlLiAgKi8KLSAjZGVmaW5lIFNBRkVfU0lHTkVEX0JZVEVfR0VUKFZBTCwgUFRSLCBBTU9VTlQsIEVORCkJXAotICAgZG8JCQkJCQkJXAotICAgICB7CQkJCQkJCVwKLUBAIC00NDEsNiArNDQ2LDcgQEAgcmVhZF91bGViMTI4ICh1bnNpZ25lZCBjaGFyICogZGF0YSwKLSAgICAgfQkJCQkJCQlcCi0gICB3aGlsZSAoMCkKLSAKLSsvKiBMaWtlIFNBRkVfU0lHTkVEX0JZVEVfR0VULCBidXQgYWxzbyBpbmNyZW1lbnRzIFBUUiBieSBBTU9VTlQuICAqLwotICNkZWZpbmUgU0FGRV9TSUdORURfQllURV9HRVRfQU5EX0lOQyhWQUwsIFBUUiwgQU1PVU5ULCBFTkQpCVwKLSAgIGRvCQkJCQkJCQlcCi0gICAgIHsJCQkJCQkJCVwKLUBAIC02NTQzLDYgKzY1NDksNyBAQCBkaXNwbGF5X2RlYnVnX3Jhbmdlc19saXN0ICh1bnNpZ25lZCBjaGFyCi0gCWJyZWFrOwotICAgICAgIFNBRkVfU0lHTkVEX0JZVEVfR0VUX0FORF9JTkMgKGVuZCwgc3RhcnQsIHBvaW50ZXJfc2l6ZSwgZmluaXNoKTsKLSAKLSsgICAgICAKLSAgICAgICBwcmludGYgKCIgICAgJTguOGx4ICIsIG9mZnNldCk7Ci0gCi0gICAgICAgaWYgKGJlZ2luID09IDAgJiYgZW5kID09IDApCi1AQCAtNjgxMCw2ICs2ODE3LDEzIEBAIGRpc3BsYXlfZGVidWdfcmFuZ2VzIChzdHJ1Y3QgZHdhcmZfc2VjdGkKLSAJICBjb250aW51ZTsKLSAJfQotIAotKyAgICAgIGlmIChuZXh0IDwgc2VjdGlvbl9iZWdpbiB8fCBuZXh0ID49IGZpbmlzaCkKLSsJewotKwkgIHdhcm4gKF8oIkNvcnJ1cHQgb2Zmc2V0ICglIzguOGx4KSBpbiByYW5nZSBlbnRyeSAldVxuIiksCi0rCQkodW5zaWduZWQgbG9uZykgb2Zmc2V0LCBpKTsKLSsJICBjb250aW51ZTsKLSsJfQotKwotICAgICAgIGlmIChkd2FyZl9jaGVjayAhPSAwICYmIGkgPiAwKQotIAl7Ci0gCSAgaWYgKHN0YXJ0IDwgbmV4dCkKLUBAIC02ODI1LDYgKzY4MzksNyBAQCBkaXNwbGF5X2RlYnVnX3JhbmdlcyAoc3RydWN0IGR3YXJmX3NlY3RpCi0gCQkgICAgKHVuc2lnbmVkIGxvbmcpIChuZXh0IC0gc2VjdGlvbl9iZWdpbiksIHNlY3Rpb24tPm5hbWUpOwotIAkgICAgfQotIAl9Ci0rCi0gICAgICAgc3RhcnQgPSBuZXh0OwotICAgICAgIGxhc3Rfc3RhcnQgPSBuZXh0OwotIAotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE4LTAzLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMjkwNQotKyAgICAgICAqIGR3YXJmLmMgKGRpc3BsYXlfZGVidWdfcmFuZ2VzKTogQ2hlY2sgdGhhdCB0aGUgb2Zmc2V0IGxvYWRlZAotKyAgICAgICBmcm9tIHRoZSByYW5nZV9lbnRyeSBzdHJ1Y3R1cmUgaXMgdmFsaWQuCi0rCi0gMjAxOC0wNS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgMjI4MDkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTg5NDUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOC04OTQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTQzMTY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE4LTg5NDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDk1YTZkMjM1NjYxNjUyMDg4NTNhNjhkOWNkM2M2ZWVkY2E4NDBlYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDggTWF5IDIwMTggMTI6NTE6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBhIG1lbW9yeSBleGhhdXN0aW9uIGZhaWx1cmUgd2hlbiBydW5uaW5nIG9iamR1bXAgb24gYQotIGZ1enplZCBpbnB1dCBmaWxlIHdpdGggY29ycnVwdCBzdHJpbmcgYW5kIGF0dHJpYnV0ZSBzZWN0aW9ucy4KLQotCVBSIDIyODA5Ci0JKiBlbGYuYyAoYmZkX2VsZl9nZXRfc3RyX3NlY3Rpb24pOiBDaGVjayBmb3IgYW4gZXhjZXNzaXZlbHkgbGFyZ2UKLQlzdHJpbmcgc2VjdGlvbi4KLQkqIGVsZi1hdHRycy5jIChfYmZkX2VsZl9wYXJzZV9hdHRyaWJ1dGVzKTogSXNzdWUgYW4gZXJyb3IgaWYgdGhlCi0JYXR0cmlidXRlIHNlY3Rpb24gaXMgbGFyZ2VyIHRoYW4gdGhlIHNpemUgb2YgdGhlIGZpbGUuCi0KLVVwc3RlcmFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdHM6IEJpbnV0aWxzIDw9IDIuMzAKLUNWRTogQ1ZFLTIwMTgtODk0NQotU2lnbmVkLW9mZi1ieTogQXJtaW4ga3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCA4ICsrKysrKysrCi0gYmZkL2VsZi1hdHRycy5jIHwgOSArKysrKysrKysKLSBiZmQvZWxmLmMgICAgICAgfCAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9iZmQvZWxmLWF0dHJzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLWF0dHJzLmMKLSsrKyBnaXQvYmZkL2VsZi1hdHRycy5jCi1AQCAtNDM4LDYgKzQzOCwxNSBAQCBfYmZkX2VsZl9wYXJzZV9hdHRyaWJ1dGVzIChiZmQgKmFiZmQsIEVsCi0gICAvKiBQUiAxNzUxMjogZmlsZTogMjg0NGExMWQuICAqLwotICAgaWYgKGhkci0+c2hfc2l6ZSA9PSAwKQotICAgICByZXR1cm47Ci0rICBpZiAoaGRyLT5zaF9zaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpKQotKyAgICB7Ci0rICAgICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KLSsgICAgICBfYmZkX2Vycm9yX2hhbmRsZXIgKF8oIiVwQjogZXJyb3I6IGF0dHJpYnV0ZSBzZWN0aW9uICclcEEnIHRvbyBiaWc6ICUjbGx4IiksCi0rCQkJICBhYmZkLCBoZHItPmJmZF9zZWN0aW9uLCAobG9uZyBsb25nKSBoZHItPnNoX3NpemUpOwotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICBjb250ZW50cyA9IChiZmRfYnl0ZSAqKSBiZmRfbWFsbG9jIChoZHItPnNoX3NpemUgKyAxKTsKLSAgIGlmICghY29udGVudHMpCi0gICAgIHJldHVybjsKLUluZGV4OiBnaXQvYmZkL2VsZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2VsZi5jCi0rKysgZ2l0L2JmZC9lbGYuYwotQEAgLTI5OCw2ICsyOTgsNyBAQCBiZmRfZWxmX2dldF9zdHJfc2VjdGlvbiAoYmZkICphYmZkLCB1bnNpCi0gICAgICAgLyogQWxsb2NhdGUgYW5kIGNsZWFyIGFuIGV4dHJhIGJ5dGUgYXQgdGhlIGVuZCwgdG8gcHJldmVudCBjcmFzaGVzCi0gCSBpbiBjYXNlIHRoZSBzdHJpbmcgdGFibGUgaXMgbm90IHRlcm1pbmF0ZWQuICAqLwotICAgICAgIGlmIChzaHN0cnRhYnNpemUgKyAxIDw9IDEKLSsJICB8fCBzaHN0cnRhYnNpemUgPiBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkKLSAJICB8fCBiZmRfc2VlayAoYWJmZCwgb2Zmc2V0LCBTRUVLX1NFVCkgIT0gMAotIAkgIHx8IChzaHN0cnRhYiA9IChiZmRfYnl0ZSAqKSBiZmRfYWxsb2MgKGFiZmQsIHNoc3RydGFic2l6ZSArIDEpKSA9PSBOVUxMKQotIAlzaHN0cnRhYiA9IE5VTEw7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE4LTA1LTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMjgwOQotKyAgICAgICAqIGVsZi5jIChiZmRfZWxmX2dldF9zdHJfc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmVseSBsYXJnZQotKyAgICAgICBzdHJpbmcgc2VjdGlvbi4KLSsgICAgICAgKiBlbGYtYXR0cnMuYyAoX2JmZF9lbGZfcGFyc2VfYXR0cmlidXRlcyk6IElzc3VlIGFuIGVycm9yIGlmIHRoZQotKyAgICAgICBhdHRyaWJ1dGUgc2VjdGlvbiBpcyBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4KLSsKLSAyMDE4LTAyLTA3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJUmV2ZXJ0IDIwMTgtMDEtMTcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKaW5kZXggY2MxNTVmMC4uZjFiMDVkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKQEAgLTM2LDQgKzM2LDggQEAKIAljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCiAJCUJJU09OX1BLR0RBVEFESVI9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9iaXNvbgogfQorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKKwkJQklTT05fUEtHREFUQURJUj0ke2RhdGFkaXJ9L2Jpc29uCit9CiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDIvMDAwMS1GaXhlZC1NaXNzaW5nLWRlZmF1bHQtdmFsdWUtZm9yLUJPT1RMT0dfREVTVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTg4MTRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLUZpeGVkLU1pc3NpbmctZGVmYXVsdC12YWx1ZS1mb3ItQk9PVExPR19ERVNULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAyMjI1YWIyMDM4YmZlNTBmMTZmOTcyZTM5ZDg5YmNkMGJkNzc2N2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmZlbiBQYW5rcmF0eiA8a3JhdHowMEBnbXguZGU+Ci1EYXRlOiBUdWUsIDkgRmViIDIwMTYgMTM6NDk6NDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZWQ6IE1pc3NpbmcgZGVmYXVsdCB2YWx1ZSBmb3IgQk9PVExPR19ERVNUCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQlVJTERMT0dfREVTVCBzZWVtcyB0byBiZSBhIHR5cG8gb3IgbWl4LXVwIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIHdpdGggMjgxZDFkZjgwODg0YmYyOTY5YzUwOWVjNjBlZThhNjU5MzUyNGZlOAotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBMaXUgPHBldGVyLngubGl1QGV4dGVybmFsLmF0bGFzY29wY28uY29tPgotLS0tCi0gYm9vdGNoYXJ0ZC5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2Jvb3RjaGFydGQuaW4gYi9ib290Y2hhcnRkLmluCi1pbmRleCBmNThhYjllLi4zMGFmNjc3IDEwMDc1NQotLS0tIGEvYm9vdGNoYXJ0ZC5pbgotKysrIGIvYm9vdGNoYXJ0ZC5pbgotQEAgLTM3LDcgKzM3LDcgQEAgUEFUSD0iL3NiaW46L2JpbjovdXNyL3NiaW46L3Vzci9iaW46JFBBVEgiCi0gCi0gIyBEZWZhdWx0cywgaW4gY2FzZSB3ZSBjYW4ndCBmaW5kIG91ciBjb25maWd1cmF0aW9uCi0gU0FNUExFX0haPTUwCi0tQlVJTERMT0dfREVTVD0vdmFyL2xvZy9ib290Y2hhcnQudGd6Ci0rQk9PVExPR19ERVNUPS92YXIvbG9nL2Jvb3RjaGFydC50Z3oKLSBBVVRPX1JFTkRFUj0ibm8iCi0gQVVUT19SRU5ERVJfRElSPSIvdmFyL2xvZyIKLSBBVVRPX1JFTkRFUl9GT1JNQVQ9InBuZyIKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKaW5kZXggYjNjODg5Yi4uMzk2ZDBlYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCkBAIC05MiwxMiArOTIsMTIgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hybXgvYm9vdGNoYXJ0LmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9ib290Y2hhcnRkX3N0b3Auc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1NaXNzaW5nLWRlZmF1bHQtdmFsdWUtZm9yLUJPT1RMT0dfREVTVC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbGxlY3Rvci1BbGxvY2F0ZS1zcGFjZS1vbi1oZWFwLWZvci1jaHVua3MucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICI0OGUwMDcxMDQ4NTY0YzZhZjc1YWI5NjllODQyZDZkZWM4MDhkYTA5IgorU1JDUkVWID0gIjMzMWFkYTAzMWYxZDY1ZjZkOTM0ZDkxOGY4OTZlMWM3MDhjNjRiZjciCitQViAuPSAiK2dpdCR7U1JDUFZ9IgogCiBpbmhlcml0IHN5c3RlbWQgdXBkYXRlLXJjLmQgcHl0aG9uM25hdGl2ZSB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLUxERkxBR1Mtd2hlbi1idWlsZGluZy1saWJidHJmc3V0aWwuc28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUFkZC1MREZMQUdTLXdoZW4tYnVpbGRpbmctbGliYnRyZnN1dGlsLnNvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZmNmYzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUFkZC1MREZMQUdTLXdoZW4tYnVpbGRpbmctbGliYnRyZnN1dGlsLnNvLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gZWVjYzQ4ZWNhZDM1OWNkNGZhYjY1MGNlNDljZmU1N2U5OWQxODU5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNyBNYXkgMjAxOCAxMjoyMTozMSArMDMwMAorU3ViamVjdDogW1BBVENIXSBBZGQgTERGTEFHUyB3aGVuIGJ1aWxkaW5nIGxpYmJ0cmZzdXRpbC5zbyBhbmQgcHl0aG9uCisgYmluZGluZ3MuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIE1ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDEwZjBlM2IwLi4xNjk3Nzk0YyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTQwMiw3ICs0MDIsNyBAQCBsaWJidHJmc3V0aWwvJS5vOiBsaWJidHJmc3V0aWwvJS5jCisgCisgbGliYnRyZnN1dGlsLnNvLiQobGliYnRyZnN1dGlsX3ZlcnNpb24pOiAkKGxpYmJ0cmZzdXRpbF9vYmplY3RzKQorIAlAZWNobyAiICAgIFtMRF0gICAgICRAIgorLQkkKFEpJChDQykgJChMSUJCVFJGU1VUSUxfQ0ZMQUdTKSAkKGxpYmJ0cmZzdXRpbF9vYmplY3RzKSBcCisrCSQoUSkkKENDKSAkKExJQkJUUkZTVVRJTF9DRkxBR1MpICQoTERGTEFHUykgJChsaWJidHJmc3V0aWxfb2JqZWN0cykgXAorIAkJLXNoYXJlZCAtV2wsLXNvbmFtZSxsaWJidHJmc3V0aWwuc28uJChsaWJidHJmc3V0aWxfbWFqb3IpIC1vICRACisgCisgbGliYnRyZnN1dGlsLmE6ICQobGliYnRyZnN1dGlsX29iamVjdHMpCitAQCAtNDE3LDcgKzQxNyw3IEBAIGlmZXEgKCQoUFlUSE9OX0JJTkRJTkdTKSwxKQorIGxpYmJ0cmZzdXRpbF9weXRob246IGxpYmJ0cmZzdXRpbC5zby4kKGxpYmJ0cmZzdXRpbF9tYWpvcikgbGliYnRyZnN1dGlsLnNvIGxpYmJ0cmZzdXRpbC9idHJmc3V0aWwuaAorIAlAZWNobyAiICAgIFtQWV0gICAgIGxpYmJ0cmZzdXRpbCIKKyAJJChRKWNkIGxpYmJ0cmZzdXRpbC9weXRob247IFwKKy0JCUNGTEFHUz0gTERGTEFHUz0gJChQWVRIT04pIHNldHVwLnB5ICQoU0VUVVBfUFlfUSkgYnVpbGRfZXh0IC1pIGJ1aWxkCisrCQlDRkxBR1M9ICQoUFlUSE9OKSBzZXR1cC5weSAkKFNFVFVQX1BZX1EpIGJ1aWxkX2V4dCAtaSBidWlsZAorIAorIC5QSE9OWTogbGliYnRyZnN1dGlsX3B5dGhvbgorIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg0NmYwNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGQzYWRmYzIxYzljYzI2NGJkMTkxNzIyZjEwMjk2M2NiYzQ3OTQyNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgTWF5IDIwMTggMjE6MjA6MzUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgcG9zc2liaWxpdHkgdG8gc3BlY2lmeSB3aGVyZSBweXRob24gbW9kdWxlcyBhcmUKKyBpbnN0YWxsZWQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljIHRvIHNvbHZlIG11bHRpbGliIHVzZSBjYXNlXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDE2OTc3OTRjLi44YWIzODgxOCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTY1MSw3ICs2NTEsNyBAQCBlbmRpZgorIGlmZXEgKCQoUFlUSE9OX0JJTkRJTkdTKSwxKQorIGluc3RhbGxfcHl0aG9uOiBsaWJidHJmc3V0aWxfcHl0aG9uCisgCSQoUSljZCBsaWJidHJmc3V0aWwvcHl0aG9uOyBcCistCQkkKFBZVEhPTikgc2V0dXAucHkgaW5zdGFsbCAtLXNraXAtYnVpbGQgJChpZiAkKERFU1RESVIpLC0tcm9vdCAkKERFU1RESVIpKSAtLXByZWZpeCAkKHByZWZpeCkKKysJCSQoUFlUSE9OKSBzZXR1cC5weSBpbnN0YWxsIC0tc2tpcC1idWlsZCAkKGlmICQoREVTVERJUiksLS1yb290ICQoREVTVERJUikpIC0tcHJlZml4ICQocHJlZml4KSAtLWluc3RhbGwtbGliPSQoUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIpCisgCisgLlBIT05ZOiBpbnN0YWxsX3B5dGhvbgorIGVuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDY3NmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLW1pc3NpbmctaGVhZGVyLWluY2x1ZGUtZm9yLWRldl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSBiYzM1YzRjYWViYjU3Y2M4Yjk2YzMwYzI1NDMyYjEyY2E4ZGMxOGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDYgT2N0IDIwMTcgMTU6MDM6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggbXVzbCAobWlzc2luZyBoZWFkZXIgaW5jbHVkZSBmb3IgZGV2X3QpLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29udmVydC9zb3VyY2UtZnMuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvY29udmVydC9zb3VyY2UtZnMuaCBiL2NvbnZlcnQvc291cmNlLWZzLmgKLWluZGV4IDIzZjMzNTYuLjZmZDc3MGYgMTAwNjQ0Ci0tLS0gYS9jb252ZXJ0L3NvdXJjZS1mcy5oCi0rKysgYi9jb252ZXJ0L3NvdXJjZS1mcy5oCi1AQCAtMjAsNiArMjAsNyBAQAotICNpbmNsdWRlICJrZXJuY29tcGF0LmgiCi0gI2luY2x1ZGUgPGxpbnV4L2tkZXZfdC5oPgotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNkZWZpbmUgQ09OVl9JTUFHRV9TVUJWT0xfT0JKRUNUSUQgQlRSRlNfRklSU1RfRlJFRV9PQkpFQ1RJRAotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzE1N2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuMTMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKLWltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAotZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKLWJ0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi0KLVNSQ1JFViA9ICJhN2ExZWEwZjRmMmExZDZlZWViM2QxMDZlMDYyYzdmMTAzNGYxNmQ0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtbWlzc2luZy1oZWFkZXItaW5jbHVkZS1mb3ItZGV2X3QucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIldhaXRpbmcgZm9yIHJlc29sdXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tkYXZlL2J0cmZzLXByb2dzL2lzc3Vlcy8xMDkiCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIG1hbnBhZ2VzCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KLQlta2RpciAtcCAke1N9L2NvbmZpZwotCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCi19Ci0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xNy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTNmYmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjE3LjEuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJDaGVja3N1bW1pbmcgQ29weSBvbiBXcml0ZSBGaWxlc3lzdGVtIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIkJ0cmZzIGlzIGEgbmV3IGNvcHkgb24gd3JpdGUgZmlsZXN5c3RlbSBmb3IgTGludXggYWltZWQgYXQgXAoraW1wbGVtZW50aW5nIGFkdmFuY2VkIGZlYXR1cmVzIHdoaWxlIGZvY3VzaW5nIG9uIGZhdWx0IHRvbGVyYW5jZSwgcmVwYWlyIGFuZCBcCitlYXN5IGFkbWluaXN0cmF0aW9uLiBcCitUaGlzIHBhY2thZ2UgY29udGFpbnMgdXRpbGl0aWVzIChta2ZzLCBmc2NrLCBidHJmc2N0bCkgdXNlZCB0byB3b3JrIHdpdGggXAorYnRyZnMgYW5kIGFuIHV0aWxpdHkgKGJ0cmZzLWNvbnZlcnQpIHRvIG1ha2UgYSBidHJmcyBmaWxlc3lzdGVtIGZyb20gYW4gZXh0My4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYnRyZnMud2lraS5rZXJuZWwub3JnIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjciCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gInV0aWwtbGludXggYXR0ciBlMmZzcHJvZ3MgbHpvIGFjbCBweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorCitTUkNSRVYgPSAiN2ZhYWNhMGQ5Zjc4ZjcxNjJhZTYwMzIzMWY2OTNkZDhlMWFmMmE0MSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtTERGTEFHUy13aGVuLWJ1aWxkaW5nLWxpYmJ0cmZzdXRpbC5zby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMgZGlzdHV0aWxzMy1iYXNlCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgorRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtenN0ZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCisJbWtkaXIgLXAgJHtTfS9jb25maWcKKwljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLworfQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdQWVRIT05fU0lURVBBQ0tBR0VTX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgaW5zdGFsbF9weXRob24KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTI5ZjBmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcmVxdWlyZSBjY2FjaGUuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWRhZTM3OWE4NWJiNmU5ZDU5NDc3M2UwYWE2NDg3NmY2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVlNThkYjdjY2U4OTJmZWJkZGI5ODkzMDhkYzU2OGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkwNTc2YTZlOTM4NzYwZWM4MTEzNTIzZTZmZDM4MDE0MTExNzMwM2U5MDc2NmNjNDgwMmU3NzA0MjJiMzBjNiIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRldi5tay5pbi1maXgtZmlsZS1uYW1lLXRvby1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtQ3JlYXRlLW1hbi1wYWdlLWluLXRoZS1tYWtlLWluc3RhbGwtZnJvbS1naXQtLnBhdGNoIFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMzA5MzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNC4yLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgY2NhY2hlLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuYWRvYzttZDU9MjcyMmFiZWFmMTc1MGRiZjE3NWI5NDkxMTEyMzc0ZTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZTA0OGY4OGYzODk3MTI1ODY0ZjlhNWUxYWJmYjcyZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOGE4YjE0MzY3ZDYzZDNkMzdmYjZjMzNjYmE2MGUxYjdmY2Q3YTYzZDYwOGRmOTdjOTc3MWFlMGQyMzRmZWUyIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzLzAwMDItZGV2Lm1rLmluLWZpeC1maWxlLW5hbWUtdG9vLWxvbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaAppbmRleCAzZjAxYzY5Li42OGMyMzcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvZmlsZXMvMDAwMi1kZXYubWsuaW4tZml4LWZpbGUtbmFtZS10b28tbG9uZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzFiZDAwODJjNmVkY2Y3M2YwNTRhOGE0ZmEzNGJkOGRkNGRlN2NkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2RhYjI5OTVlZDhlZWNjZDdiMGFjZDc5NjY4YmMyOGYzYTI0MjdkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAxNiBTZXAgMjAxNSAxOTo0NTo0MCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBkZXYubWsuaW46IGZpeCBmaWxlIG5hbWUgdG9vIGxvbmcKQEAgLTEwLDE0ICsxMCwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBkZXYubWsuaW4gfCAgICAyICstCisgZGV2Lm1rLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogY2NhY2hlLTMuMy40L2Rldi5tay5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNjYWNoZS0zLjMuNC5vcmlnL2Rldi5tay5pbgotKysrIGNjYWNoZS0zLjMuNC9kZXYubWsuaW4KK2RpZmYgLS1naXQgYS9kZXYubWsuaW4gYi9kZXYubWsuaW4KK2luZGV4IDkxYjBhNTcuLjU4M2FkZTAgMTAwNjQ0CistLS0gYS9kZXYubWsuaW4KKysrKyBiL2Rldi5tay5pbgogQEAgLTEsNyArMSw3IEBACiAgIyBHTlUgbWFrZSBzeW50YXggcmVpZ25zIGluIHRoaXMgZmlsZS4KICAKQEAgLTI1LDUgKzI2LDUgQEAKIC1hbGxfY3BwZmxhZ3MgKz0gLU1EIC1NUCAtTUYgLmRlcHMvJChzdWJzdCAuLl8sLCQoc3Vic3QgLyxfLCQ8KSkuZAogK2FsbF9jcHBmbGFncyArPSAtTUQgLU1QIC1NRiAuZGVwcy8kKHN1YnN0IC4uXywsJChzdWJzdCAvLF8sJChzdWJzdCAkKHNyY2RpcikvLCwkPCkpKS5kCiAgCisgQTJYID0gYTJ4CiAgQVNDSUlET0MgPSBhc2NpaWRvYwotIENQUENIRUNLID0gY3BwY2hlY2sKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9maWxlcy9SZXZlcnQtQ3JlYXRlLW1hbi1wYWdlLWluLXRoZS1tYWtlLWluc3RhbGwtZnJvbS1naXQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMjA4YjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2ZpbGVzL1JldmVydC1DcmVhdGUtbWFuLXBhZ2UtaW4tdGhlLW1ha2UtaW5zdGFsbC1mcm9tLWdpdC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDk0ZmFiY2RkYTVjN2U1NGNjZGJjMWYwYWVjY2IyNmNlMzBlNjEyMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTggSnVsIDIwMTYgMTk6NTM6MDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0ICJDcmVhdGUgbWFuIHBhZ2UgaW4gdGhlIG1ha2UtaW5zdGFsbC1mcm9tLWdpdC1yZXBvCi0gY2FzZSIKLQotVGhpcyByZXZlcnRzIGNvbW1pdCBiODY3ODQ5MDJkMjhkZWZkNWU0NzVjODkyMmRlNTk0Nzg3ZGY0NTQxLgotCi1XZSBkb250JyBoYXZlIGFzY2lpZG9jLCBzbyByZXZlcnQgaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtQ29yZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGQ0NzRmMmEuLmM2Y2RjMDQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KLUBAIC03Niw3ICs3Niw3IEBAIGNjYWNoZSQoRVhFRVhUKTogJChjY2FjaGVfb2JqcykgJChleHRyYV9saWJzKQotIAkkKENDKSAkKGFsbF9jZmxhZ3MpIC1vICRAICQoY2NhY2hlX29ianMpICQoTERGTEFHUykgJChleHRyYV9saWJzKSAkKExJQlMpCi0gCi0gLlBIT05ZOiBpbnN0YWxsCi0taW5zdGFsbDogYWxsICQoc3JjZGlyKS9jY2FjaGUuMQotK2luc3RhbGw6IGFsbAotIAkkKGluc3RhbGxjbWQpIC1kICQoREVTVERJUikkKGJpbmRpcikKLSAJJChpbnN0YWxsY21kKSAtbSA3NTUgY2NhY2hlJChFWEVFWFQpICQoREVTVERJUikkKGJpbmRpcikKLSAJJChpbnN0YWxsY21kKSAtZCAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjEwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1NWU4YjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLXJlcXVpcmUgY21ha2UuaW5jCi1pbmhlcml0IG5hdGl2ZQotCi1ERVBFTkRTICs9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgZXhwYXQtbmF0aXZlIHh6LW5hdGl2ZSB6bGliLW5hdGl2ZSBjdXJsLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2ggXAotIgotCi1CID0gIiR7V09SS0RJUn0vYnVpbGQiCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgotCi0jIERpc2FibGUgY2NtYWtlIHNpbmNlIHdlIGRvbid0IGRlcGVuZCBvbiBuY3Vyc2VzCi1DTUFLRV9FWFRSQUNPTkYgPSAiXAotICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCi0gICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQkFSQ0hJVkU9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCi0gICAgLURFTkFCTEVfQUNMPTAgLURIQVZFX0FDTF9MSUJBQ0xfSD0wIFwKLSAgICAtREhBVkVfU1lTX0FDTF9IPTAgXAotIgotCi1kb19jb25maWd1cmUgKCkgewotCSR7U30vY29uZmlndXJlIC0tdmVyYm9zZSAtLXByZWZpeD0ke3ByZWZpeH0gLS0gJHtDTUFLRV9FWFRSQUNPTkZ9Ci19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQotCi1kb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWExMzkwZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjEyLjIuYmIKQEAgLTAsMCArMSw1MCBAQAorcmVxdWlyZSBjbWFrZS5pbmMKK2luaGVyaXQgbmF0aXZlCisKK0RFUEVORFMgKz0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBleHBhdC1uYXRpdmUgeHotbmF0aXZlIHpsaWItbmF0aXZlIGN1cmwtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vT0VUb29sY2hhaW5Db25maWcuY21ha2UgXAorICAgICAgICAgICAgZmlsZTovL2Vudmlyb25tZW50LmQtY21ha2Uuc2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLXVzZS1vZi1leHQyZnMtZXh0Ml9mcy5oLWJ5LWNtYWtlLXMtaW50ZXJuYWwtLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjIERpc2FibGUgY2NtYWtlIHNpbmNlIHdlIGRvbid0IGRlcGVuZCBvbiBuY3Vyc2VzCitDTUFLRV9FWFRSQUNPTkYgPSAiXAorICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQkFSQ0hJVkU9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCisgICAgLURFTkFCTEVfQUNMPTAgLURIQVZFX0FDTF9MSUJBQ0xfSD0wIFwKKyAgICAtREhBVkVfU1lTX0FDTF9IPTAgXAorIgorCitkb19jb25maWd1cmUgKCkgeworCSR7U30vY29uZmlndXJlIC0tdmVyYm9zZSAtLXByZWZpeD0ke3ByZWZpeH0gLS0gJHtDTUFLRV9FWFRSQUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCisJIyBUaGUgZm9sbG93aW5nIGNvZGVzIGFyZSBoZXJlIGJlY2F1c2UgZVNESyBuZWVkcyB0byBwcm92aWRlIGNvbXBhdGliaWx0eQorCSMgZm9yIFNESy4gVGhhdCBpcywgZVNESyBjb3VsZCBhbHNvIGJlIHVzZWQgbGlrZSB0cmFkaXRpb25hbCBTREsuCisJbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLworCW1rZGlyIC1wICR7RH0ke2Jhc2VfcHJlZml4fS9lbnZpcm9ubWVudC1zZXR1cC5kCisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoICR7RH0ke2Jhc2VfcHJlZml4fS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCit9CisKK2RvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gInBlcmNlbnQiCisKK1NZU1JPT1RfRElSU19OQVRJVkUgKz0gIiR7ZGF0YWRpcn0vY21ha2UgJHtiYXNlX3ByZWZpeH0vZW52aXJvbm1lbnQtc2V0dXAuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCAzOTRjOWViLi4wOWUyOGI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCkBAIC02LDIzICs2LDE5IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9wdWJsaWMua2l0d2FyZS5jb20vQnVnL215X3ZpZXdfcGFnZS5waHAiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodC50eHQ7bWQ1PTc5YjViNzgxOTdjNzRkNWM1ZjljN2NjYWRlZWU0ZThjIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodC50eHQ7bWQ1PWY2MWY1Zjg1OWJjNWRkYmEyYjA1MGViMTAzMzVlMDEzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9jbWFrZS5oO21kNT00NDk0ZGVlMTg0MjEyZmM4OWM0NjljM2FjZDU1NWExNDtiZWdpbmxpbmU9MTtlbmRsaW5lPTMgXAogICAgICAgICAgICAgICAgICAgICAiCiAKIENNQUtFX01BSk9SX1ZFUlNJT04gPSAiJHtAJy4nLmpvaW4oZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswOjJdKX0iCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9jbWFrZS5vcmcvZmlsZXMvdiR7Q01BS0VfTUFKT1JfVkVSU0lPTn0vY21ha2UtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3F0NC1mYWlsLXNpbGVudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEJvb3N0LUJvb3N0LTEuNjYuMC1kZXBlbmRlbmN5LWFuZC1yZWxlYXNlLXVwZGF0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaW5kQm9vc3QtSW1wbGVtZW50LUFyY2hpdGVjdHVyZS1hbmQtQWRkcmVzcy1Nb2RlbC10LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaCBcCi0gICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2ggXAorIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMWMzOGM2NzI5NWNhNjk2YWVhZmQ4YzA1OWQ3NDhiMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzYTFkY2YwYmUwM2U0MGNmNGYzNDFkZGE3OWM5NmZmYjZjMzVhZTM1ZjJmOTExODQ1YjcyZGFiMzU1OWNmOCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTdjNTUwY2ZhMWMyZTIxNmIzNTkwM2RjNzBkODBhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjk3NDg1Nzk5ZTUxYTcwNzBjYzExNDk0ZjNlMDIzNDliMGZjM2EyNGNjMTJiMDgyZTczN2JmNjdhMDU4MWE0IgogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbWFrZS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjkwNzIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gNzEwODU3MjNmODAyOGIzZTFjNDAyOWZjMWFiZTEyNDNhYzQ5ZmZjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvZHkgUCBTY2hhZmVyIDxkZXZAY29keXBzLmNvbT4KK0RhdGU6IFRodSwgMjcgQXByIDIwMTcgMTE6MzU6MDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIENNYWtlRGV0ZXJtaW5lU3lzdGVtOiB1c2Ugb2UgZW52aXJvbm1lbnQgdmFycyB0byBsb2FkCisgZGVmYXVsdCB0b29sY2hhaW4gZmlsZSBpbiBzZGsKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK1Bhc3NpbmcgdGhlIHRvb2xjaGFpbiBieToKKworIC0gc2hlbGwgYWxpYXNlcyBkb2VzIG5vdCB3b3JrIGlmIGNtYWtlIGlzIGNhbGxlZCBieSBhIHNjcmlwdAorIC0gdW5jb25kaXRpb25hbGx5IGJ5IGEgd3JhcHBlciBzY3JpcHQgY2F1c2VzIGNtYWtlIHRvIGJlbGlldmUgaXQgaXMKKyAgIGNvbmZpZ3VyaW5nIHRoaW5ncyB3aGVuIGl0IGlzIG5vdCAoZm9yIGV4YW1wbGUsIGBjbWFrZSAtLWJ1aWxkYCBicmVha3MpLgorCitUaGUgT0VfQ01BS0VfVE9PTENIQUlOX0ZJTEUgdmFyaWFibGUgaXMgb25seSB1c2VkIGFzIGEgZGVmYXVsdCBpZiBubwordG9vbGNoYWluIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorCitTZXR0aW5nIHRoZSBDTUFLRV9UT09MQ0hBSU5fRklMRSBjbWFrZSB2YXJpYWJsZSBpcyBtYXJrZWQgYXMgY2FjaGVkCitiZWNhdXNlICctRCcgb3B0aW9ucyBhcmUgY2FjaGUgZW50cmllcyB0aGVtc2VsdmVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBDb2R5IFAgU2NoYWZlciA8ZGV2QGNvZHlwcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgTW9kdWxlcy9DTWFrZURldGVybWluZVN5c3RlbS5jbWFrZSB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVTeXN0ZW0uY21ha2UgYi9Nb2R1bGVzL0NNYWtlRGV0ZXJtaW5lU3lzdGVtLmNtYWtlCitpbmRleCA2MDBkNTU4MGUuLjMyZDdmMTk0NSAxMDA2NDQKKy0tLSBhL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVTeXN0ZW0uY21ha2UKKysrKyBiL01vZHVsZXMvQ01ha2VEZXRlcm1pbmVTeXN0ZW0uY21ha2UKK0BAIC04Miw2ICs4MiwxMyBAQCBlbHNlKCkKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCisraWYoTk9UIERFRklORUQgQ01BS0VfVE9PTENIQUlOX0ZJTEUpCisrICBpZihERUZJTkVEIEVOVntPRV9DTUFLRV9UT09MQ0hBSU5fRklMRX0pCisrICAgIHNldChDTUFLRV9UT09MQ0hBSU5fRklMRSAiJEVOVntPRV9DTUFLRV9UT09MQ0hBSU5fRklMRX0iIENBQ0hFIEZJTEVQQVRIICJ0b29sY2hhaW4gZmlsZSIpCisrICAgIG1lc3NhZ2UoU1RBVFVTICJUb29sY2hhaW4gZmlsZSBkZWZhdWx0ZWQgdG8gJyR7Q01BS0VfVE9PTENIQUlOX0ZJTEV9JyIpCisrICBlbmRpZigpCisrZW5kaWYoKQorKworICMgaWYgYSB0b29sY2hhaW4gZmlsZSBpcyB1c2VkLCB0aGUgdXNlciB3YW50cyB0byBjcm9zcyBjb21waWxlLgorICMgaW4gdGhpcyBjYXNlIHJlYWQgdGhlIHRvb2xjaGFpbiBmaWxlIGFuZCBrZWVwIHRoZSBDTUFLRV9IT1NUX1NZU1RFTV8qCisgIyB2YXJpYWJsZXMgYXJvdW5kIHNvIHRoZXkgY2FuIGJlIHVzZWQgaW4gQ01ha2VMaXN0cy50eHQuCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1Cb29zdC0xLjY2LjAtZGVwZW5kZW5jeS1hbmQtcmVsZWFzZS11cGRhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYTYwZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQm9vc3QtQm9vc3QtMS42Ni4wLWRlcGVuZGVuY3ktYW5kLXJlbGVhc2UtdXBkYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA0MzNhMmQ0OTVhMjQ4MWM2M2I4MmMxMWEzMGY3YzY0MmQ2YWJlNjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxOTo1NTo0OSArMTEwMAotU3ViamVjdDogW1BBVENIXSBGaW5kQm9vc3Q6IEJvb3N0IDEuNjYuMCBkZXBlbmRlbmN5IGFuZCByZWxlYXNlIHVwZGF0ZQotCi1SZWxlYXNlIG5vdGVzOiBodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9oaXN0b3J5L3ZlcnNpb25fMV82Nl8wLmh0bWwKLQotKiBBbGwgbmV3IGxpYnJhcmllcyBhcmUgaGVhZGVyLW9ubHkuCi0qIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTIGlzIHVuY2hhbmdlZCBmcm9tIDEuNjUuMQotKiBfQm9vc3RfRklCRVJfQ09NUElMRVJfRkVBVFVSRVMgaXMgdW5jaGFuZ2VkIGZyb20gMS42NC4wCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtZb2N0byAxMjc2Ml0KLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+Ci0KLS0tLQotIE1vZHVsZXMvRmluZEJvb3N0LmNtYWtlIHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotQEAgLTc5Nyw3ICs3OTcsNyBAQCBmdW5jdGlvbihfQm9vc3RfQ09NUE9ORU5UX0RFUEVOREVOQ0lFUyBjCi0gICAgICAgc2V0KF9Cb29zdF9XQVZFX0RFUEVOREVOQ0lFUyBmaWxlc3lzdGVtIHN5c3RlbSBzZXJpYWxpemF0aW9uIHRocmVhZCBjaHJvbm8gZGF0ZV90aW1lIGF0b21pYykKLSAgICAgICBzZXQoX0Jvb3N0X1dTRVJJQUxJWkFUSU9OX0RFUEVOREVOQ0lFUyBzZXJpYWxpemF0aW9uKQotICAgICBlbmRpZigpCi0tICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY2MDApCi0rICAgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDY3MDApCi0gICAgICAgbWVzc2FnZShXQVJOSU5HICJOZXcgQm9vc3QgdmVyc2lvbiBtYXkgaGF2ZSBpbmNvcnJlY3Qgb3IgbWlzc2luZyBkZXBlbmRlbmNpZXMgYW5kIGltcG9ydGVkIHRhcmdldHMiKQotICAgICAgIHNldChfQm9vc3RfSU1QT1JURURfVEFSR0VUUyBGQUxTRSkKLSAgICAgZW5kaWYoKQotQEAgLTkzMSw4ICs5MzEsOCBAQCBlbmRmdW5jdGlvbigpCi0gIyBgJHtCb29zdF9ST09UfS9saWJzL2ZpYmVyL2J1aWxkL0phbWZpbGUudjJgLgotICMKLSBmdW5jdGlvbihfQm9vc3RfQ09NUElMRVJfRkVBVFVSRVMgY29tcG9uZW50IF9yZXQpCi0tICAjIEJvb3N0ID49IDEuNjIgYW5kIDwgMS42NQotLSAgaWYoTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjIwMCBBTkQgQm9vc3RfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMTA2NTAwKQotKyAgIyBCb29zdCA+PSAxLjYyIGFuZCA8IDEuNjcKLSsgIGlmKE5PVCBCb29zdF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxMDYyMDAgQU5EIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjcwMCkKLSAgICAgc2V0KF9Cb29zdF9GSUJFUl9DT01QSUxFUl9GRUFUVVJFUwotICAgICAgICAgY3h4X2FsaWFzX3RlbXBsYXRlcwotICAgICAgICAgY3h4X2F1dG9fdHlwZQotQEAgLTEwMzgsNyArMTAzOCw3IEBAIGVsc2UoKQotICAgIyBfQm9vc3RfQ09NUE9ORU5UX0hFQURFUlMuICBTZWUgdGhlIGluc3RydWN0aW9ucyBhdCB0aGUgdG9wIG9mCi0gICAjIF9Cb29zdF9DT01QT05FTlRfREVQRU5ERU5DSUVTLgotICAgc2V0KF9Cb29zdF9LTk9XTl9WRVJTSU9OUyAke0Jvb3N0X0FERElUSU9OQUxfVkVSU0lPTlN9Ci0tICAgICIxLjY1LjEiICIxLjY1LjAiICIxLjY1IgotKyAgICAiMS42Ni4wIiAiMS42NiIgIjEuNjUuMSIgIjEuNjUuMCIgIjEuNjUiCi0gICAgICIxLjY0LjAiICIxLjY0IiAiMS42My4wIiAiMS42MyIgIjEuNjIuMCIgIjEuNjIiICIxLjYxLjAiICIxLjYxIiAiMS42MC4wIiAiMS42MCIKLSAgICAgIjEuNTkuMCIgIjEuNTkiICIxLjU4LjAiICIxLjU4IiAiMS41Ny4wIiAiMS41NyIgIjEuNTYuMCIgIjEuNTYiICIxLjU1LjAiICIxLjU1IgotICAgICAiMS41NC4wIiAiMS41NCIgIjEuNTMuMCIgIjEuNTMiICIxLjUyLjAiICIxLjUyIiAiMS41MS4wIiAiMS41MSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZEJvb3N0LUZpeC1pbmNvcnJlY3QtYWxwaGFiZXRpc2F0aW9uLW9mLWhlYWRlcnMtbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1ZWRhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUZpbmRCb29zdC1GaXgtaW5jb3JyZWN0LWFscGhhYmV0aXNhdGlvbi1vZi1oZWFkZXJzLWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGIxZTlmNjcxMzc3MzNiYzEwOWQzNTU0NTBmY2QwNmVkZGE0Nzg0YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiUGF1bCBcIlRCQmxlXCIgSGFtcHNvbiIgPFBhdWwuSGFtcHNvbkBQb2JveC5jb20+Ci1EYXRlOiBGcmksIDI5IERlYyAyMDE3IDIwOjA3OjMxICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS82XSBGaW5kQm9vc3Q6IEZpeCBpbmNvcnJlY3QgYWxwaGFiZXRpc2F0aW9uIG9mIGhlYWRlcnMgbGlzdAotCi1BZmZlY3RzIGNtYWtlIDwgMy4xMS4wCi0KLVVwc3RlYW0tU3RhdHVzOiBCYWNrcG9ydAotW1lvY3RvIDEyNzYyXQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLQotLS0tCi0gTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjbWFrZS0zLjEwLjMub3JpZy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotKysrIGNtYWtlLTMuMTAuMy9Nb2R1bGVzL0ZpbmRCb29zdC5jbWFrZQotQEAgLTgzMSw4ICs4MzEsOCBAQCBmdW5jdGlvbihfQm9vc3RfQ09NUE9ORU5UX0hFQURFUlMgY29tcG9uCi0gICBzZXQoX0Jvb3N0X0NPTlRBSU5FUl9IRUFERVJTICAgICAgICAgICAiYm9vc3QvY29udGFpbmVyL2NvbnRhaW5lcl9md2QuaHBwIikKLSAgIHNldChfQm9vc3RfQ09OVEVYVF9IRUFERVJTICAgICAgICAgICAgICJib29zdC9jb250ZXh0L2FsbC5ocHAiKQotICAgc2V0KF9Cb29zdF9DT1JPVVRJTkVfSEVBREVSUyAgICAgICAgICAgImJvb3N0L2Nvcm91dGluZS9hbGwuaHBwIikKLS0gIHNldChfQm9vc3RfRVhDRVBUSU9OX0hFQURFUlMgICAgICAgICAgICJib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcCIpCi0gICBzZXQoX0Jvb3N0X0RBVEVfVElNRV9IRUFERVJTICAgICAgICAgICAiYm9vc3QvZGF0ZV90aW1lL2RhdGUuaHBwIikKLSsgIHNldChfQm9vc3RfRVhDRVBUSU9OX0hFQURFUlMgICAgICAgICAgICJib29zdC9leGNlcHRpb24vZXhjZXB0aW9uLmhwcCIpCi0gICBzZXQoX0Jvb3N0X0ZJQkVSX0hFQURFUlMgICAgICAgICAgICAgICAiYm9vc3QvZmliZXIvYWxsLmhwcCIpCi0gICBzZXQoX0Jvb3N0X0ZJTEVTWVNURU1fSEVBREVSUyAgICAgICAgICAiYm9vc3QvZmlsZXN5c3RlbS9wYXRoLmhwcCIpCi0gICBzZXQoX0Jvb3N0X0dSQVBIX0hFQURFUlMgICAgICAgICAgICAgICAiYm9vc3QvZ3JhcGgvYWRqYWNlbmN5X2xpc3QuaHBwIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItRmluZEJvb3N0LUltcGxlbWVudC1BcmNoaXRlY3R1cmUtYW5kLUFkZHJlc3MtTW9kZWwtdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItRmluZEJvb3N0LUltcGxlbWVudC1BcmNoaXRlY3R1cmUtYW5kLUFkZHJlc3MtTW9kZWwtdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgzMDFjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLUZpbmRCb29zdC1JbXBsZW1lbnQtQXJjaGl0ZWN0dXJlLWFuZC1BZGRyZXNzLU1vZGVsLXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotRnJvbSBiMDQ0ZjY5YTQxMzEyM2YxNWEwNTAzNGMwMGE4ZTM3NjM3NjRhMWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlBhdWwgXCJUQkJsZVwiIEhhbXBzb24iIDxQYXVsLkhhbXBzb25AUG9ib3guY29tPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAyMTo1MDo1NCArMTEwMAotU3ViamVjdDogW1BBVENIIDIvNl0gRmluZEJvb3N0OiBJbXBsZW1lbnQgIkFyY2hpdGVjdHVyZSBhbmQgQWRkcmVzcyBNb2RlbCIgdGFnCi0KLVRoaXMgdGFnIGlzIG5ldyBpbiBCb29zdCAxLjY2LjAsIGFuZCBpcyBwcmVzZW50IGluIHRoZSAndmVyc2lvbmVkJwotbGlicmFyeSBmaWxlIG5hbWUgbGF5b3V0LgotCi1BZmZlY3RzIGNtYWtlIDwgMy4xMS4wCi0KLVVwc3RlYW0tU3RhdHVzOiBCYWNrcG9ydAotW1lvY3RvIDEyNzYyXQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KLQotLS0tCi0gTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1JbmRleDogY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY21ha2UtMy4xMC4zLm9yaWcvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLSsrKyBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLUBAIC0xMzg1LDggKzEzODUsMTEgQEAgaWYoQm9vc3RfREVCVUcpCi0gZW5kaWYoKQotIAotICM9PT09PT09PT09PT09PT09PT09PT09Ci0tIyBTeXN0ZW1hdGljYWxseSBidWlsZCB1cCB0aGUgQm9vc3QgQUJJIHRhZwotLSMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzQxXzAvbW9yZS9nZXR0aW5nX3N0YXJ0ZWQvd2luZG93cy5odG1sI2xpYnJhcnktbmFtaW5nCi0rIyBTeXN0ZW1hdGljYWxseSBidWlsZCB1cCB0aGUgQm9vc3QgQUJJIHRhZyBmb3IgdGhlICd0YWdnZWQnIGFuZCAndmVyc2lvbmVkJyBsYXlvdXRzCi0rIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC9tb3JlL2dldHRpbmdfc3RhcnRlZC93aW5kb3dzLmh0bWwjbGlicmFyeS1uYW1pbmcKLSsjIGh0dHA6Ly9ib29zdC5vcmcvZG9jL2xpYnMvMV82Nl8wL2Jvb3N0L2NvbmZpZy9hdXRvX2xpbmsuaHBwCi0rIyBodHRwOi8vYm9vc3Qub3JnL2RvYy9saWJzLzFfNjZfMC90b29scy9idWlsZC9zcmMvdG9vbHMvY29tbW9uLmphbQotKyMgaHR0cDovL2Jvb3N0Lm9yZy9kb2MvbGlicy8xXzY2XzAvYm9vc3RjcHAuamFtCi0gc2V0KCBfYm9vc3RfUkVMRUFTRV9BQklfVEFHICItIikKLSBzZXQoIF9ib29zdF9ERUJVR19BQklfVEFHICAgIi0iKQotICMgS2V5ICAgICAgIFVzZSB0aGlzIGxpYnJhcnkgd2hlbjoKLUBAIC0xNDE4LDExICsxNDIxLDQwIEBAIGlmKEJvb3N0X1VTRV9TVExQT1JUKQotICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfREVCVUdfQUJJX1RBRyAicCIpCi0gZW5kaWYoKQotICMgIG4gICAgICAgIHVzaW5nIHRoZSBTVExwb3J0IGRlcHJlY2F0ZWQgIm5hdGl2ZSBpb3N0cmVhbXMiIGZlYXR1cmUKLSsjICAgICAgICAgICByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50YXRpb24gaW4gMS40My4wIGJ1dCBzdGlsbCBwcmVzZW50IGluCi0rIyAgICAgICAgICAgYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHAKLSBpZihCb29zdF9VU0VfU1RMUE9SVF9ERVBSRUNBVEVEX05BVElWRV9JT1NUUkVBTVMpCi0gICBzdHJpbmcoQVBQRU5EIF9ib29zdF9SRUxFQVNFX0FCSV9UQUcgIm4iKQotICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfREVCVUdfQUJJX1RBRyAibiIpCi0gZW5kaWYoKQotIAotKyMgIC14ODYgICAgIEFyY2hpdGVjdHVyZSBhbmQgYWRkcmVzcyBtb2RlbCB0YWcKLSsjICAgICAgICAgICBGaXJzdCBjaGFyYWN0ZXIgaXMgdGhlIGFyY2hpdGVjdHVyZSwgdGhlbiB3b3JkLXNpemUsIGVpdGhlciAzMiBvciA2NAotKyMgICAgICAgICAgIE9ubHkgdXNlZCBpbiAndmVyc2lvbmVkJyBsYXlvdXQsIGFkZGVkIGluIEJvb3N0IDEuNjYuMAotK3NldChfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAiIikKLSsjIHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBpcyBub3QgY3VycmVudGx5IHNldCBmb3IgYWxsIGNvbXBpbGVycwotK2lmKE5PVCAieCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0iIFNUUkVRVUFMICJ4IiBBTkQgTk9UIEJvb3N0X1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEwNjYwMCkKLSsgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIi0iKQotKyAgIyBUaGlzIG5lZWRzIHRvIGJlIGtlcHQgaW4tc3luYyB3aXRoIHRoZSBzZWN0aW9uIG9mIENNYWtlUGxhdGZvcm1JZC5oLmluCi0rICAjIGluc2lkZSAnZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX01TQ19WRVIpJwotKyAgaWYoJHtDTUFLRV9DWFhfQ09NUElMRVJfQVJDSElURUNUVVJFX0lEfSBTVFJFUVVBTCAiSUE2NCIpCi0rICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgImkiKQotKyAgZWxzZWlmKCR7Q01BS0VfQ1hYX0NPTVBJTEVSX0FSQ0hJVEVDVFVSRV9JRH0gU1RSRVFVQUwgIlg4NiIKLSsgICAgICAgICAgICBPUiAke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJ4NjQiKQotKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJ4IikKLSsgIGVsc2VpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IE1BVENIRVMgIl5BUk0iKQotKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICJhIikKLSsgIGVsc2VpZigke0NNQUtFX0NYWF9DT01QSUxFUl9BUkNISVRFQ1RVUkVfSUR9IFNUUkVRVUFMICJNSVBTIikKLSsgICAgc3RyaW5nKEFQUEVORCBfYm9vc3RfQVJDSElURUNUVVJFX1RBRyAibSIpCi0rICBlbmRpZigpCi0rCi0rICBpZihDTUFLRV9TSVpFT0ZfVk9JRF9QIEVRVUFMIDgpCi0rICAgIHN0cmluZyhBUFBFTkQgX2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUcgIjY0IikKLSsgIGVsc2UoKQotKyAgICBzdHJpbmcoQVBQRU5EIF9ib29zdF9BUkNISVRFQ1RVUkVfVEFHICIzMiIpCi0rICBlbmRpZigpCi0rZW5kaWYoKQotKwotIGlmKEJvb3N0X0RFQlVHKQotICAgbWVzc2FnZShTVEFUVVMgIlsgJHtDTUFLRV9DVVJSRU5UX0xJU1RfRklMRX06JHtDTUFLRV9DVVJSRU5UX0xJU1RfTElORX0gXSAiCi0gICAgICJfYm9vc3RfUkVMRUFTRV9BQklfVEFHID0gJHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfSIpCi1AQCAtMTYxNiwyMiArMTY0OCwyMiBAQCBmb3JlYWNoKENPTVBPTkVOVCAke0Jvb3N0X0ZJTkRfQ09NUE9ORU5UCi0gICB1bnNldChfYm9vc3RfUkVMRUFTRV9OQU1FUykKLSAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQotICAgICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUwotLSAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9SRUxFQVNFX0FCSV9UQUd9ICkKLSAgIGVuZGZvcmVhY2goKQotICAgbGlzdChBUFBFTkQgX2Jvb3N0X1JFTEVBU0VfTkFNRVMKLS0gICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9BQklfVEFHfQotICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSApCi0gICBpZihfYm9vc3RfU1RBVElDX1JVTlRJTUVfV09SS0FST1VORCkKLSAgICAgc2V0KF9ib29zdF9SRUxFQVNFX1NUQVRJQ19BQklfVEFHICItcyR7X2Jvb3N0X1JFTEVBU0VfQUJJX1RBR30iKQotICAgICBmb3JlYWNoKGNvbXBpbGVyIElOIExJU1RTIF9ib29zdF9DT01QSUxFUikKLSAgICAgICBsaXN0KEFQUEVORCBfYm9vc3RfUkVMRUFTRV9OQU1FUwotLSAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtjb21waWxlcn0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9ICkKLSAgICAgZW5kZm9yZWFjaCgpCi0gICAgIGxpc3QoQVBQRU5EIF9ib29zdF9SRUxFQVNFX05BTUVTCi0tICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0rICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X1JFTEVBU0VfU1RBVElDX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfUkVMRUFTRV9TVEFUSUNfQUJJX1RBR30gKQotICAgZW5kaWYoKQotICAgaWYoQm9vc3RfVEhSRUFEQVBJIEFORCAke0NPTVBPTkVOVH0gU1RSRVFVQUwgInRocmVhZCIpCi1AQCAtMTY2NiwxMSArMTY5OCwxMSBAQCBmb3JlYWNoKENPTVBPTkVOVCAke0Jvb3N0X0ZJTkRfQ09NUE9ORU5UCi0gICB1bnNldChfYm9vc3RfREVCVUdfTkFNRVMpCi0gICBmb3JlYWNoKGNvbXBpbGVyIElOIExJU1RTIF9ib29zdF9DT01QSUxFUikKLSAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0RFQlVHX05BTUVTCi0tICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0gICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfQUJJX1RBR30gKQotICAgZW5kZm9yZWFjaCgpCi0gICBsaXN0KEFQUEVORCBfYm9vc3RfREVCVUdfTkFNRVMKLS0gICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke19ib29zdF9NVUxUSVRIUkVBREVEfSR7X2Jvb3N0X0RFQlVHX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0rICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfSR7X2Jvb3N0X0FSQ0hJVEVDVFVSRV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0gICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19BQklfVEFHfQotICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9Ci0gICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9ICkKLUBAIC0xNjc4LDExICsxNzEwLDExIEBAIGZvcmVhY2goQ09NUE9ORU5UICR7Qm9vc3RfRklORF9DT01QT05FTlQKLSAgICAgc2V0KF9ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBRyAiLXMke19ib29zdF9ERUJVR19BQklfVEFHfSIpCi0gICAgIGZvcmVhY2goY29tcGlsZXIgSU4gTElTVFMgX2Jvb3N0X0NPTVBJTEVSKQotICAgICAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUwotLSAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9LSR7Qm9vc3RfTElCX1ZFUlNJT059Ci0rICAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7Y29tcGlsZXJ9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30ke19ib29zdF9BUkNISVRFQ1RVUkVfVEFHfS0ke0Jvb3N0X0xJQl9WRVJTSU9OfQotICAgICAgICAgJHtCb29zdF9MSUJfUFJFRklYfSR7Qm9vc3RfTkFNRVNQQUNFfV8ke0NPTVBPTkVOVH0ke2NvbXBpbGVyfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9ICkKLSAgICAgZW5kZm9yZWFjaCgpCi0gICAgIGxpc3QoQVBQRU5EIF9ib29zdF9ERUJVR19OQU1FUwotLSAgICAgICR7Qm9vc3RfTElCX1BSRUZJWH0ke0Jvb3N0X05BTUVTUEFDRX1fJHtDT01QT05FTlR9JHtfYm9vc3RfTVVMVElUSFJFQURFRH0ke19ib29zdF9ERUJVR19TVEFUSUNfQUJJX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSsgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9JHtfYm9vc3RfQVJDSElURUNUVVJFX1RBR30tJHtCb29zdF9MSUJfVkVSU0lPTn0KLSAgICAgICAke0Jvb3N0X0xJQl9QUkVGSVh9JHtCb29zdF9OQU1FU1BBQ0V9XyR7Q09NUE9ORU5UfSR7X2Jvb3N0X01VTFRJVEhSRUFERUR9JHtfYm9vc3RfREVCVUdfU1RBVElDX0FCSV9UQUd9ICkKLSAgIGVuZGlmKCkKLSAgIGlmKEJvb3N0X1RIUkVBREFQSSBBTkQgJHtDT01QT05FTlR9IFNUUkVRVUFMICJ0aHJlYWQiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzg4YWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKQEAgLTAsMCArMSwxMjIgQEAKK0Zyb20gN2ExZjRlNzI0ZjljNjg0OThmNDAxMjQ0YzI5MzhlNzg0YTJlNmZiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjAyOjE0IC0wMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBjbWFrZTogUHJldmVudCB0aGUgZGV0ZWN0aW9uIG9mIFF0NQorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworQ01ha2UgZG9lc24ndCBoYXZlIGRlcGVuZGVuY3kgb24gcXQ0L3F0NSwgc28gdGhlc2UgdGVzdHMgdXN1YWxseSBmYWlsCitidXQgc3RpbGwgY2FuIGNhdXNlIHVuZGV0ZXJtaW5pc3RpYyByZXN1bHRzIG9yIGJ1aWxkIGZhaWx1cmVzICh3aGVuCitPRV9RTUFLRV9QQVRIX0VYVEVSTkFMX0hPU1RfQklOUyBpcyB1bmRlZmluZWQgb3IgbmF0aXZlIHFtYWtlIHJlbW92ZWQKK3doaWxlIHJ1bm5pbmcgdGhlIHRlc3QgaW4gY21ha2UpCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIFNvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIFRlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgIHwgNCArKy0tCisgVGVzdHMvUXRBdXRvZ2VuL0F1dG9nZW5UZXN0LmNtYWtlICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUXRBdXRvZ2VuL01hY09zRlcvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKK2luZGV4IDMzMGI3NDcyOS4uZTc3MDlkZWU2IDEwMDY0NAorLS0tIGEvU291cmNlL1F0RGlhbG9nL0NNYWtlTGlzdHMudHh0CisrKysgYi9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKK0BAIC02LDcgKzYsNyBAQCBpZihQT0xJQ1kgQ01QMDAyMCkKKyAgIGNtYWtlX3BvbGljeShTRVQgQ01QMDAyMCBORVcpICMgRHJvcCB3aGVuIENNYWtlID49IDIuOC4xMSByZXF1aXJlZAorIGVuZGlmKCkKKyBDTWFrZV9PUFRJT05BTF9DT01QT05FTlQoY21ha2UtZ3VpKQorLWZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKQorKyNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCkKKyBpZiAoUXQ1V2lkZ2V0c19GT1VORCkKKyAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtRdDVXaWRnZXRzX0lOQ0xVREVfRElSU30pCisgICBhZGRfZGVmaW5pdGlvbnMoJHtRdDVXaWRnZXRzX0RFRklOSVRPTlN9KQorZGlmZiAtLWdpdCBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKK2luZGV4IGI4YjcyNGVkOC4uNjNmNmJiNmQyIDEwMDY0NAorLS0tIGEvVGVzdHMvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0CitAQCAtMTMyMiw3ICsxMzIyLDcgQEAgJHtDTWFrZV9CSU5BUllfRElSfS9iaW4vY21ha2UgLURESVI9ZGV2IC1QICR7Q01ha2VfU09VUkNFX0RJUn0vVXRpbGl0aWVzL1JlbGVhc2UKKyAgICAgc2V0KENNYWtlX1RFU1RfUXQ1IDEpCisgICBlbmRpZigpCisgICBpZihDTWFrZV9URVNUX1F0NSkKKy0gICAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKQorKyAgICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQgTk9fTU9EVUxFKQorICAgZW5kaWYoKQorICAgaWYoQ01ha2VfVEVTVF9RdDUgQU5EIFF0NVdpZGdldHNfRk9VTkQpCisgICAgIGFkZF9zdWJkaXJlY3RvcnkoUXQ1QXV0b2dlbikKK2RpZmYgLS1naXQgYS9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0CitpbmRleCBhZDc0OTYxZDkuLmE5ZGQ3NGIxNSAxMDA2NDQKKy0tLSBhL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0CisrKysgYi9UZXN0cy9RdDRBbmQ1QXV0b21vYy9DTWFrZUxpc3RzLnR4dAorQEAgLTMsMTEgKzMsMTEgQEAgY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKKyBwcm9qZWN0KFF0NEFuZDVBdXRvbW9jKQorIAorIGlmIChRVF9SRVZFUlNFX0ZJTkRfT1JERVIpCistICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKysgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKKyAgIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCisgZWxzZSgpCisgICBmaW5kX3BhY2thZ2UoUXQ0IFJFUVVJUkVEKQorLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisgZW5kaWYoKQorIAorIHNldChDTUFLRV9BVVRPTU9DIE9OKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9BdXRvZ2VuVGVzdC5jbWFrZSBiL1Rlc3RzL1F0QXV0b2dlbi9BdXRvZ2VuVGVzdC5jbWFrZQoraW5kZXggOGMwYTE0ZmNhLi5lOTkyM2IyMWEgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW4vQXV0b2dlblRlc3QuY21ha2UKKysrKyBiL1Rlc3RzL1F0QXV0b2dlbi9BdXRvZ2VuVGVzdC5jbWFrZQorQEAgLTIyLDcgKzIyLDcgQEAgaWYgKFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA0KQorICAgZW5kbWFjcm8oKQorIAorIGVsc2VpZihRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKKy0gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorKyAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQorIAorICAgc2V0KFFUX1FUQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQorICAgc2V0KFFUX1FUR1VJX1RBUkdFVCBRdDU6OldpZGdldHMpCitkaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvZ2VuL01hY09zRlcvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW4vTWFjT3NGVy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMjZkMjAxOTI2Li5lNDhlMWM4ZGUgMTAwNjQ0CistLS0gYS9UZXN0cy9RdEF1dG9nZW4vTWFjT3NGVy9DTWFrZUxpc3RzLnR4dAorKysrIGIvVGVzdHMvUXRBdXRvZ2VuL01hY09zRlcvQ01ha2VMaXN0cy50eHQKK0BAIC0yLDcgKzIsNyBAQCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xMCkKKyBwcm9qZWN0KE1hY09zRlcpCisgaW5jbHVkZSgiLi4vQXV0b2dlblRlc3QuY21ha2UiKQorIAorLWZpbmRfcGFja2FnZShRdDVUZXN0IFJFUVVJUkVEKQorKyNmaW5kX3BhY2thZ2UoUXQ1VGVzdCBSRVFVSVJFRCkKKyAKKyBzZXQoQ01BS0VfQ1hYX1NUQU5EQVJEIDExKQorIHNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtDTUFLRV9CSU5BUllfRElSfS9vdXRwdXQvYmluKQorZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKK2luZGV4IDYzN2M1YzJjYi4uYzAzNzZlZmZjIDEwMDY0NAorLS0tIGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKKysrKyBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CitAQCAtMjkxLDcgKzI5MSw3IEBAIGFkZF9SdW5DTWFrZV90ZXN0KGNvbmZpZ3VyZV9maWxlKQorIGFkZF9SdW5DTWFrZV90ZXN0KENUZXN0VGltZW91dEFmdGVyTWF0Y2gpCisgCisgZmluZF9wYWNrYWdlKFF0NCBRVUlFVCkKKy1maW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKKysjZmluZF9wYWNrYWdlKFF0NUNvcmUgUVVJRVQpCisgaWYgKFFUNF9GT1VORCBBTkQgUXQ1Q29yZV9GT1VORCBBTkQgTk9UIFF0NUNvcmVfVkVSU0lPTiBWRVJTSU9OX0xFU1MgNS4xLjApCisgICBhZGRfUnVuQ01ha2VfdGVzdChJbmNvbXBhdGlibGVRdCkKKyBlbmRpZigpCitkaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQoraW5kZXggNGZjY2RjNDE4Li5iNzZlMWU1MzEgMTAwNjQ0CistLS0gYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQorKysrIGIvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UKK0BAIC0xLDYgKzEsNiBAQAorIAorIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCistZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCisrI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQorIAorIGFkZF9leGVjdXRhYmxlKG1haW5leGUgbWFpbi5jcHApCisgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKG1haW5leGUgUXQ0OjpRdENvcmUgUXQ1OjpDb3JlKQorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1GaW5kQm9vc3QtU2VhcmNoLWZvci11cHN0cmVhbS1wYWNrYWdlZC1saWJzLW5leHQtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTc4ZjVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtRmluZEJvb3N0LVNlYXJjaC1mb3ItdXBzdHJlYW0tcGFja2FnZWQtbGlicy1uZXh0LXRvLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gZDU2ZGVmZjdkMTI3YjAzMDczOWJkMDAzNDYwOWQwMDQ2MTIxZDhjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJQYXVsIFwiVEJCbGVcIiBIYW1wc29uIiA8UGF1bC5IYW1wc29uQFBvYm94LmNvbT4KLURhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMjI6Mzg6MzYgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIEZpbmRCb29zdDogU2VhcmNoIGZvciB1cHN0cmVhbS1wYWNrYWdlZCBsaWJzIG5leHQgdG8KLSBpbmNsdWRlcwotCi1VcHN0cmVhbSBwYWNrYWdlcyBCb29zdCBiaW5hcmllcyBmb3IgV2luZG93cyB3aXRoIHRoZSAnYm9vc3QnIGRpcmVjdG9yeQotKHRoZSBJTkNMVURFX0RJUikgbmV4dCB0byB0aGUgbGliLS4uLiBkaXJlY3RvcnkgKHRoZSBMSUJSQVJZX0RJUikuCi0KLUFmZmVjdHMgY21ha2UgPCAzLjExLjAKLQotVXBzdGVhbS1TdGF0dXM6IEJhY2twb3J0Ci1bWW9jdG8gMTI3NjJdCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPgotCi0tLS0KLSBNb2R1bGVzL0ZpbmRCb29zdC5jbWFrZSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1JbmRleDogY21ha2UtMy4xMC4zL01vZHVsZXMvRmluZEJvb3N0LmNtYWtlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY21ha2UtMy4xMC4zLm9yaWcvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLSsrKyBjbWFrZS0zLjEwLjMvTW9kdWxlcy9GaW5kQm9vc3QuY21ha2UKLUBAIC0xNTAyLDYgKzE1MDIsNyBAQCBmb3JlYWNoKGMgREVCVUcgUkVMRUFTRSkKLSAgICAgICAke0Jvb3N0X0lOQ0xVREVfRElSfS9zdGFnZS9saWIKLSAgICAgICApCi0gICAgIF9Cb29zdF9VUERBVEVfV0lORE9XU19MSUJSQVJZX1NFQVJDSF9ESVJTX1dJVEhfUFJFQlVJTFRfUEFUSFMoX2Jvb3N0X0xJQlJBUllfU0VBUkNIX0RJUlNfJHtjfSAiJHtCb29zdF9JTkNMVURFX0RJUn0vLi4iKQotKyAgICBfQm9vc3RfVVBEQVRFX1dJTkRPV1NfTElCUkFSWV9TRUFSQ0hfRElSU19XSVRIX1BSRUJVSUxUX1BBVEhTKF9ib29zdF9MSUJSQVJZX1NFQVJDSF9ESVJTXyR7Y30gIiR7Qm9vc3RfSU5DTFVERV9ESVJ9IikKLSAgICAgaWYoIEJvb3N0X05PX1NZU1RFTV9QQVRIUyApCi0gICAgICAgbGlzdChBUFBFTkQgX2Jvb3N0X0xJQlJBUllfU0VBUkNIX0RJUlNfJHtjfSBOT19DTUFLRV9TWVNURU1fUEFUSCBOT19TWVNURU1fRU5WSVJPTk1FTlRfUEFUSCkKLSAgICAgZWxzZSgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1Y2Y0NzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAzLWNtYWtlLXN1cHBvcnQtT3BlbkVtYmVkZGVkLVF0NC10b29sLWJpbmFyeS1uYW1lcy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIGM3ODNjZWVlZjQ4NWMyM2UxM2MzZDlmMDQxODcxOWNiMGUwYjg2ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogVGh1LCAxMiBNYXkgMjAxMSAxNTozNjowMyArMDAwMAorU3ViamVjdDogW1BBVENIIDMvNV0gY21ha2U6IHN1cHBvcnQgT3BlbkVtYmVkZGVkIFF0NCB0b29sIGJpbmFyeSBuYW1lcworT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworVGhlIEZpbmRRdDQgbW9kdWxlIGxvb2tzIGZvciBRdDQgYmluYXJpZXMgdG8gYmUgYWJsZSB0byBnYXRoZXIgdGhlCitwYXRocyB1c2VkIGZvciBjb21waWxhdGlvbiBhbmQgYWxzbyB0byBiZSB1c2luZyBkdXJpbmcgb3RoZXIgcHJvY2Vzc2VzCisodHJhbnNsYXRpb24gdXBkYXRlLCB0cmFuc2xhdGlvbiBiaW5hcnkgZ2VuZXJhdGluZyBhbmQgbGlrZSkgaG93ZXZlcgorT3BlbkVtYmVkZGVkIGhhcyByZW5hbWVkIHRob3NlIHRvIGFsbG93IG9sZCBRTWFrZSB0byBiZSB1c2VkIGluCitwYXJhbGxlbCB3aXRoIHRoZSBjdXJyZW50IG9uZS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZQorT3BlbkVtYmVkZGVkIHNwZWNpZmljIGJpbmFyeSBuYW1lcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKworVGhlIHBhdGNoIHdhcyBzbGlnaHRseSBhZGFwdGVkIGluIG9yZGVyIHRvIG1hdGNoIGNtYWtlIDMuMi4yOgorSW5zdGVhZCBvZiBmaW5kX3Byb2dyYW0sIF9maW5kX3F0NF9wcm9ncmFtIGlzIG5vdyB1c2VkLgorCitTaWduZWQtb2ZmLWJ5OiBNb3JpdHogQmx1bWUgPG1vcml0ei5ibHVtZUBibXctY2FyaXQuZGU+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKK2luZGV4IDg0N2E3OThhZi4uN2FkOTgxODc5IDEwMDY0NAorLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCisrKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKK0BAIC01MTcsNyArNTE3LDcgQEAgZW5kZnVuY3Rpb24oKQorIAorIHNldChRVDRfSU5TVEFMTEVEX1ZFUlNJT05fVE9PX09MRCBGQUxTRSkKKyAKKy1zZXQoX1FUNF9RTUFLRV9OQU1FUyBxbWFrZSBxbWFrZTQgcW1ha2UtcXQ0IHFtYWtlLW1hYykKKytzZXQoX1FUNF9RTUFLRV9OQU1FUyBxbWFrZSBxbWFrZTIgcW1ha2U0IHFtYWtlLXF0NCBxbWFrZS1tYWMpCisgX3F0NF9maW5kX3FtYWtlKCIke19RVDRfUU1BS0VfTkFNRVN9IiBRVF9RTUFLRV9FWEVDVVRBQkxFIFFUVkVSU0lPTikKKyAKKyBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKK0BAIC0xMTM1LDEyICsxMTM1LDEyIEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAorICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTU9DX0VYRUNVVEFCTEUgUXQ0Ojptb2MgbW9jLXF0NCBtb2M0IG1vYykKKyAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1VJQ19FWEVDVVRBQkxFIFF0NDo6dWljIHVpYy1xdDQgdWljNCB1aWMpCisgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9VSUMzX0VYRUNVVEFCTEUgUXQ0Ojp1aWMzIHVpYzMpCistICBfZmluZF9xdDRfcHJvZ3JhbShRVF9SQ0NfRVhFQ1VUQUJMRSBRdDQ6OnJjYyByY2MpCistICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTQ1BQMlhNTF9FWEVDVVRBQkxFIFF0NDo6cWRidXNjcHAyeG1sIHFkYnVzY3BwMnhtbCkKKy0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNYTUwyQ1BQX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c3htbDJjcHAgcWRidXN4bWwyY3BwKQorKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUkNDX0VYRUNVVEFCTEUgUXQ0OjpyY2MgcmNjNCByY2MpCisrICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTQ1BQMlhNTF9FWEVDVVRBQkxFIFF0NDo6cWRidXNjcHAyeG1sIHFkYnVzY3BwMnhtbDQgcWRidXNjcHAyeG1sKQorKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREJVU1hNTDJDUFBfRVhFQ1VUQUJMRSBRdDQ6OnFkYnVzeG1sMmNwcCBxZGJ1c3htbDJjcHA0IHFkYnVzeG1sMmNwcCkKKyAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xVUERBVEVfRVhFQ1VUQUJMRSBRdDQ6Omx1cGRhdGUgbHVwZGF0ZS1xdDQgbHVwZGF0ZTQgbHVwZGF0ZSkKKyAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xSRUxFQVNFX0VYRUNVVEFCTEUgUXQ0OjpscmVsZWFzZSBscmVsZWFzZS1xdDQgbHJlbGVhc2U0IGxyZWxlYXNlKQorLSAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUUNPTExFQ1RJT05HRU5FUkFUT1JfRVhFQ1VUQUJMRSBRdDQ6OnFjb2xsZWN0aW9uZ2VuZXJhdG9yIHFjb2xsZWN0aW9uZ2VuZXJhdG9yLXF0NCBxY29sbGVjdGlvbmdlbmVyYXRvcikKKysgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1FDT0xMRUNUSU9OR0VORVJBVE9SX0VYRUNVVEFCTEUgUXQ0OjpxY29sbGVjdGlvbmdlbmVyYXRvciBxY29sbGVjdGlvbmdlbmVyYXRvci1xdDQgcWNvbGxlY3Rpb25nZW5lcmF0b3IgcWNvbGxlY3Rpb25nZW5lcmF0b3I0KQorICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREVTSUdORVJfRVhFQ1VUQUJMRSBRdDQ6OmRlc2lnbmVyIGRlc2lnbmVyLXF0NCBkZXNpZ25lcjQgZGVzaWduZXIpCisgICBfZmluZF9xdDRfcHJvZ3JhbShRVF9MSU5HVUlTVF9FWEVDVVRBQkxFIFF0NDo6bGluZ3Vpc3QgbGluZ3Vpc3QtcXQ0IGxpbmd1aXN0NCBsaW5ndWlzdCkKKyAKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTljNjgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gOTUxNmZjNDI2MGY3MDFjNmQ5ZGIwYzM0MWJiMzY0ODAzNjJlMTc0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUaHUsIDUgSnVsIDIwMTggMTA6MjY6NDggLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIEZhaWwgc2lsZW50bHkgaWYgc3lzdGVtIFF0IGluc3RhbGxhdGlvbiBpcyBicm9rZW4KK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK0ZpeGVzIGEgcmVncmVzc2lvbiBpbiBiZWhhdmlvdXIgZnJvbSAyLjguMTAgdG8gMi44LjExIHJlc3VsdGluZyBpbiB0aGUKK2ZvbGxvd2luZyBlcnJvciBpZiB0aGUgc3lzdGVtIFF0IGluc3RhbGxhdGlvbiBpcyBicm9rZW46CisKK0NNYWtlIEVycm9yIGF0IE1vZHVsZXMvRmluZFF0NC5jbWFrZToxMDI4IChzZXRfcHJvcGVydHkpOgorICBzZXRfcHJvcGVydHkgY291bGQgbm90IGZpbmQgVEFSR0VUIFF0NDo6UXRDb3JlLiAgUGVyaGFwcyBpdCBoYXMgbm90IHlldAorICBiZWVuIGNyZWF0ZWQuCitDYWxsIFN0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQ6NzkgKGZpbmRfcGFja2FnZSkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorCitUaGUgcGF0Y2ggd2FzIHNsaWdodGx5IGFkYXB0ZWQgaW4gb3JkZXIgdG8gbWF0Y2ggY21ha2UgMy4yLjI6CitBbm90aGVyIHNldF9wcm9wZXJ0eSB3YXMgaW50cm9kdWNlZCB3aGljaCBoYWQgdG8gYmUgaW5jbHVkZWQKK3dpdGhpbiB0aGUgaWYoUVRfUVRDT1JFX0ZPVU5EKSBzdGF0ZW1lbnQuCisKK1NpZ25lZC1vZmYtYnk6IE1vcml0eiBCbHVtZSA8bW9yaXR6LmJsdW1lQGJtdy1jYXJpdC5kZT4KK1NpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CistLS0KKyBNb2R1bGVzL0ZpbmRRdDQuY21ha2UgfCAzOSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKK2luZGV4IDdhZDk4MTg3OS4uOGI2ZjQzY2RhIDEwMDY0NAorLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCisrKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKK0BAIC05ODcsMjUgKzk4NywyNiBAQCBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKKyAgICAgZW5kaWYoKQorICAgZW5kbWFjcm8oKQorIAorLQorLSAgIyBTZXQgUVRfeHl6X0xJQlJBUlkgdmFyaWFibGUgYW5kIGFkZAorLSAgIyBsaWJyYXJ5IGluY2x1ZGUgcGF0aCB0byBRVF9JTkNMVURFUworLSAgX1FUNF9BREpVU1RfTElCX1ZBUlMoUXRDb3JlKQorLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKKy0gICAgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMKKy0gICAgICAiJHtRVF9NS1NQRUNTX0RJUn0vZGVmYXVsdCIKKy0gICAgICAke1FUX0lOQ0xVREVfRElSfQorLSAgKQorLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKKy0gICAgSU5URVJGQUNFX0NPTVBJTEVfREVGSU5JVElPTlMKKy0gICAgICAkPCQ8Tk9UOiQ8Q09ORklHOkRlYnVnPj46UVRfTk9fREVCVUc+CistICApCistICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIFBST1BFUlRZCistICAgIElOVEVSRkFDRV9RVF9NQUpPUl9WRVJTSU9OIDQKKy0gICkKKy0gIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCistICAgIENPTVBBVElCTEVfSU5URVJGQUNFX1NUUklORyBRVF9NQUpPUl9WRVJTSU9OCistICApCisrICBpZihRVF9RVENPUkVfRk9VTkQpCisrICAgICMgU2V0IFFUX3h5el9MSUJSQVJZIHZhcmlhYmxlIGFuZCBhZGQKKysgICAgIyBsaWJyYXJ5IGluY2x1ZGUgcGF0aCB0byBRVF9JTkNMVURFUworKyAgICBfUVQ0X0FESlVTVF9MSUJfVkFSUyhRdENvcmUpCisrICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCisrICAgICAgSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMKKysgICAgICAgICIke1FUX01LU1BFQ1NfRElSfS9kZWZhdWx0IgorKyAgICAgICAgJHtRVF9JTkNMVURFX0RJUn0KKysgICAgKQorKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQorKyAgICAgIElOVEVSRkFDRV9DT01QSUxFX0RFRklOSVRJT05TCisrICAgICAgICAkPCQ8Tk9UOiQ8Q09ORklHOkRlYnVnPj46UVRfTk9fREVCVUc+CisrICAgICkKKysgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBQUk9QRVJUWQorKyAgICAgIElOVEVSRkFDRV9RVF9NQUpPUl9WRVJTSU9OIDQKKysgICAgKQorKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQorKyAgICAgIENPTVBBVElCTEVfSU5URVJGQUNFX1NUUklORyBRVF9NQUpPUl9WRVJTSU9OCisrICAgICkKKysgIGVuZGlmKCkKKyAKKyAgIGZvcmVhY2goUVRfTU9EVUxFICR7UVRfTU9EVUxFU30pCisgICAgIF9RVDRfQURKVVNUX0xJQl9WQVJTKCR7UVRfTU9EVUxFfSkKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDUtRGlzYWJsZS11c2Utb2YtZXh0MmZzLWV4dDJfZnMuaC1ieS1jbWFrZS1zLWludGVybmFsLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDUtRGlzYWJsZS11c2Utb2YtZXh0MmZzLWV4dDJfZnMuaC1ieS1jbWFrZS1zLWludGVybmFsLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2NlOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNS1EaXNhYmxlLXVzZS1vZi1leHQyZnMtZXh0Ml9mcy5oLWJ5LWNtYWtlLXMtaW50ZXJuYWwtLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMGRmOGQ0NmQxNGMzNzFmMjFjMzI3OTY2YTU1M2M0YzE4N2E4YWNmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBUaHUsIDUgSnVsIDIwMTggMTA6Mjg6MDQgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIERpc2FibGUgdXNlIG9mIGV4dDJmcy9leHQyX2ZzLmggYnkgY21ha2UncyBpbnRlcm5hbAorIGxpYmFyY2hpdmUgY29weQorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworV2UgZG9uJ3Qgd2FudCB0byBhZGQgYSBkZXBlbmRlbmN5IG9uIGUyZnNwcm9ncy1uYXRpdmUgZm9yIGNtYWtlLW5hdGl2ZSwKK2FuZCB3ZSBkb24ndCB1c2UgQ1BhY2sgc28ganVzdCBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWddCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIFV0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQgfCA4ICsrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0CitpbmRleCAyMDZmM2M2YTUuLjY0MmZiMGRkOSAxMDA2NDQKKy0tLSBhL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKKysrKyBiL1V0aWxpdGllcy9jbWxpYmFyY2hpdmUvQ01ha2VMaXN0cy50eHQKK0BAIC00MDAsMTIgKzQwMCw4IEBAIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiY29weWZpbGUuaCIgSEFWRV9DT1BZRklMRV9IKQorIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZGlyZWN0LmgiIEhBVkVfRElSRUNUX0gpCisgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJkbGZjbi5oIiBIQVZFX0RMRkNOX0gpCisgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJlcnJuby5oIiBIQVZFX0VSUk5PX0gpCistTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJleHQyZnMvZXh0Ml9mcy5oIiBIQVZFX0VYVDJGU19FWFQyX0ZTX0gpCistCistQ0hFQ0tfQ19TT1VSQ0VfQ09NUElMRVMoIiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKy0jaW5jbHVkZSA8ZXh0MmZzL2V4dDJfZnMuaD4KKy1pbnQgbWFpbih2b2lkKSB7IHJldHVybiBFWFQyX0lPQ19HRVRGTEFHUzsgfSIgSEFWRV9XT1JLSU5HX0VYVDJfSU9DX0dFVEZMQUdTKQorLQorK1NFVChIQVZFX0VYVDJGU19FWFQyX0ZTX0ggMCkKKytTRVQoSEFWRV9XT1JLSU5HX0VYVDJfSU9DX0dFVEZMQUdTIDApCisgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJmY250bC5oIiBIQVZFX0ZDTlRMX0gpCisgTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJncnAuaCIgSEFWRV9HUlBfSCkKKyBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImludHR5cGVzLmgiIEhBVkVfSU5UVFlQRVNfSCkKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKaW5kZXggZGM4NDc3ZS4uOGEwZmI0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKQEAgLTMsNiArMyw3IEBACiBzZXQoIENNQUtFX0NYWF9GTEFHUyAkRU5We0NYWEZMQUdTfSAgQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIHNldCggQ01BS0VfQVNNX0ZMQUdTICR7Q01BS0VfQ19GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIHNldCggQ01BS0VfTERGTEFHU19GTEFHUyAke0NNQUtFX0NYWF9GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKK3NldCggQ01BS0VfU1lTUk9PVCAkRU5We09FQ09SRV9UQVJHRVRfU1lTUk9PVH0gKQogCiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIICRFTlZ7T0VDT1JFX1RBUkdFVF9TWVNST09UfSAkRU5We09FQ09SRV9OQVRJVkVfU1lTUk9PVH0gKQogc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX1BST0dSQU0gTkVWRVIgKQpAQCAtMTAsNiArMTEsOCBAQAogc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX0lOQ0xVREUgT05MWSApCiBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIX01PREVfUEFDS0FHRSBPTkxZICkKIAorc2V0KENNQUtFX0ZJTkRfTElCUkFSWV9DVVNUT01fTElCX1NVRkZJWCAiJEVOVntPRV9DTUFLRV9GSU5EX0xJQlJBUllfQ1VTVE9NX0xJQl9TVUZGSVh9IikKKwogIyBTZXQgQ01BS0VfU1lTVEVNX1BST0NFU1NPUiBmcm9tIHRoZSBzeXNyb290IG5hbWUgKGFzc3VtaW5nIHByb2Nlc3Nvci1kaXN0cm8tb3MpLgogaWYgKCRFTlZ7U0RLVEFSR0VUU1lTUk9PVH0gTUFUQ0hFUyAiL3N5c3Jvb3RzLyhbYS16QS1aMC05Xy1dKyktListLisiKQogICBzZXQoQ01BS0VfU1lTVEVNX1BST0NFU1NPUiAke0NNQUtFX01BVENIXzF9KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YjdlOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1Gcm9tIDg3NWMxMWRiZjg3ZDEyNThhZDdkMzY5N2E0MGQ2MDVkNTAzZTU2NzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogV2VkLCAxNyBKYW4gMjAxOCAxMDowMjoxNCAtMDIwMAotU3ViamVjdDogW1BBVENIXSBjbWFrZTogUHJldmVudCB0aGUgZGV0ZWN0aW9uIG9mIFF0NQotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotQ01ha2UgZG9lc24ndCBoYXZlIGRlcGVuZGVuY3kgb24gcXQ0L3F0NSwgc28gdGhlc2UgdGVzdHMgdXN1YWxseSBmYWlsCi1idXQgc3RpbGwgY2FuIGNhdXNlIHVuZGV0ZXJtaW5pc3RpYyByZXN1bHRzIG9yIGJ1aWxkIGZhaWx1cmVzICh3aGVuCi1PRV9RTUFLRV9QQVRIX0VYVEVSTkFMX0hPU1RfQklOUyBpcyB1bmRlZmluZWQgb3IgbmF0aXZlIHFtYWtlIHJlbW92ZWQKLXdoaWxlIHJ1bm5pbmcgdGhlIHRlc3QgaW4gY21ha2UpCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIFNvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIFRlc3RzL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIFRlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgfCAyICstCi0gVGVzdHMvUXRBdXRvZ2VuL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgfCAyICstCi0gVGVzdHMvUXRBdXRvZ2VuL21vY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgICAgICAgICAgfCAyICstCi0gVGVzdHMvUXRBdXRvZ2VuUmVydW4vQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NQbHVnaW4vQ01ha2VMaXN0cy50eHQgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NSZXJ1bi9DTWFrZUxpc3RzLnR4dCAgICAgICB8IDIgKy0KLSBUZXN0cy9RdEF1dG9nZW5SZXJ1bi9yY2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0ICAgICB8IDIgKy0KLSBUZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBUZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZSB8IDIgKy0KLSAxMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAotaW5kZXggYjM4Nzk3YmNhLi5iNWZiZmM1ZmEgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvUXREaWFsb2cvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1NvdXJjZS9RdERpYWxvZy9DTWFrZUxpc3RzLnR4dAotQEAgLTYsNyArNiw3IEBAIGlmKFBPTElDWSBDTVAwMDIwKQotICAgY21ha2VfcG9saWN5KFNFVCBDTVAwMDIwIE5FVykgIyBEcm9wIHdoZW4gQ01ha2UgPj0gMi44LjExIHJlcXVpcmVkCi0gZW5kaWYoKQotIENNYWtlX09QVElPTkFMX0NPTVBPTkVOVChjbWFrZS1ndWkpCi0tZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUVVJRVQpCi0rI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFFVSUVUKQotIGlmIChRdDVXaWRnZXRzX0ZPVU5EKQotICAgaW5jbHVkZV9kaXJlY3Rvcmllcygke1F0NVdpZGdldHNfSU5DTFVERV9ESVJTfSkKLSAgIGFkZF9kZWZpbml0aW9ucygke1F0NVdpZGdldHNfREVGSU5JVE9OU30pCi1kaWZmIC0tZ2l0IGEvVGVzdHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggNTMzNzg4YTQ0Li4zMmVmMDNjNTUgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKLUBAIC0xMjYwLDcgKzEyNjAsNyBAQCAke0NNYWtlX0JJTkFSWV9ESVJ9L2Jpbi9jbWFrZSAtRERJUj1kZXYgLVAgJHtDTWFrZV9TT1VSQ0VfRElSfS9VdGlsaXRpZXMvUmVsZWFzZQotICAgICBzZXQoQ01ha2VfVEVTVF9RdDUgMSkKLSAgIGVuZGlmKCkKLSAgIGlmKENNYWtlX1RFU1RfUXQ1KQotLSAgICBmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpCi0rICAgICNmaW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBRVUlFVCBOT19NT0RVTEUpCi0gICBlbmRpZigpCi0gICBpZihDTWFrZV9URVNUX1F0NSBBTkQgUXQ1V2lkZ2V0c19GT1VORCkKLSAgICAgYWRkX3Rlc3QoTkFNRSBRdDVBdXRvZ2VuIENPTU1BTkQgJHtDTUFLRV9DVEVTVF9DT01NQU5EfQotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKLWluZGV4IGFkNzQ5NjFkOS4uYTlkZDc0YjE1IDEwMDY0NAotLS0tIGEvVGVzdHMvUXQ0QW5kNUF1dG9tb2MvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0NEFuZDVBdXRvbW9jL0NNYWtlTGlzdHMudHh0Ci1AQCAtMywxMSArMywxMSBAQCBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQotIHByb2plY3QoUXQ0QW5kNUF1dG9tb2MpCi0gCi0gaWYgKFFUX1JFVkVSU0VfRklORF9PUkRFUikKLS0gIGZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotICAgZmluZF9wYWNrYWdlKFF0NCBSRVFVSVJFRCkKLSBlbHNlKCkKLSAgIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCi0tICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSsgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSBlbmRpZigpCi0gCi0gc2V0KENNQUtFX0FVVE9NT0MgT04pCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBhNWMyZDk5YjIuLjJkNjQwZTRhMyAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b1VpY0ludGVyZmFjZS9DTWFrZUxpc3RzLnR4dAotKysrIGIvVGVzdHMvUXRBdXRvVWljSW50ZXJmYWNlL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTQsNyArMTQsNyBAQCBlbHNlKCkKLSAgIGlmIChOT1QgUVRfVEVTVF9WRVJTSU9OIFNUUkVRVUFMIDUpCi0gICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQotICAgZW5kaWYoKQotLSAgZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0rICAjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0gCi0gICBzZXQoUVRfQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQotICAgc2V0KFFUX0dVSV9UQVJHRVQgUXQ1OjpXaWRnZXRzKQotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAotaW5kZXggZGZmOWQwYzY2Li5jNmU4ZmMzZjUgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9RdEF1dG9nZW4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlbi9DTWFrZUxpc3RzLnR4dAotQEAgLTIzLDcgKzIzLDcgQEAgZWxzZSgpCi0gICBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQotICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKLSAgIGVuZGlmKCkKLS0gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQotIAotICAgc2V0KFFUX1FUQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQotIAotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlbi9tYWNvc0ZXL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQKLWluZGV4IDExNGQ5YmFjMC4uMTU3ZmUwYWFhIDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvZ2VuL21hY29zRlcvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlbi9tYWNvc0ZXL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3ICsxLDcgQEAKLSBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy44KQotIHByb2plY3QobWFjb3MtZnctdGVzdCkKLSAKLS1maW5kX3BhY2thZ2UoUXQ1VGVzdCBSRVFVSVJFRCkKLSsjZmluZF9wYWNrYWdlKFF0NVRlc3QgUkVRVUlSRUQpCi0gCi0gc2V0KENNQUtFX0NYWF9TVEFOREFSRCAxMSkKLSBzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vb3V0cHV0L2JpbikKLWRpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA4MjE3YjhkYmYuLjg2YmI3YmM3ZiAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b2dlbi9tb2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9UZXN0cy9RdEF1dG9nZW4vbW9jRGVwZW5kcy9DTWFrZUxpc3RzLnR4dAotQEAgLTEwLDcgKzEwLDcgQEAgZWxzZSgpCi0gICAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQotICAgZW5kaWYoKQotIAotLSAgZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0rICAjZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0gICBzZXQoUVRfQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQotIGVuZGlmKCkKLSAKLWRpZmYgLS1naXQgYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBlNzJjMTkxMmUuLmQ3ZTY4ODRjZSAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9DTWFrZUxpc3RzLnR4dAotQEAgLTIsNyArMiw3IEBAIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAzLjkpCi0gY21ha2VfcG9saWN5KFNFVCBDTVAwMDcxIE5FVykKLSBwcm9qZWN0KFF0QXV0b2dlblJlcnVuKQotIAotLSMgVGVsbCBmaW5kX3BhY2thZ2UoUXQ1KSB3aGVyZSB0byBmaW5kIFF0LgotKyMgVGVsbCAjZmluZF9wYWNrYWdlKFF0NSkgd2hlcmUgdG8gZmluZCBRdC4KLSBpZihRVF9RTUFLRV9FWEVDVVRBQkxFKQotICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChRdF9CSU5fRElSICIke1FUX1FNQUtFX0VYRUNVVEFCTEV9IiBQQVRIKQotICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChRdF9QUkVGSVhfRElSICIke1F0X0JJTl9ESVJ9IiBQQVRIKQotQEAgLTIzLDcgKzIzLDcgQEAgZWxzZSgpCi0gICBpZiAoTk9UIFFUX1RFU1RfVkVSU0lPTiBTVFJFUVVBTCA1KQotICAgICBtZXNzYWdlKFNFTkRfRVJST1IgIkludmFsaWQgUXQgdmVyc2lvbiBzcGVjaWZpZWQuIikKLSAgIGVuZGlmKCkKLS0gIGZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQotKyAgI2ZpbmRfcGFja2FnZShRdDVXaWRnZXRzIFJFUVVJUkVEKQotIAotICAgc2V0KFFUX1FUQ09SRV9UQVJHRVQgUXQ1OjpDb3JlKQotIAotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dAotaW5kZXggYjdjYzVlOWZmLi5lMWQxMDk5NTMgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9tb2NQbHVnaW4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1BsdWdpbi9DTWFrZUxpc3RzLnR4dAotQEAgLTksNyArOSw3IEBAIHNldChDTUFLRV9BVVRPTU9DX0RFUEVORF9GSUxURVJTCi0gaWYgKE5PVCBRVF9URVNUX1ZFUlNJT04gU1RSRVFVQUwgNSkKLSAgIG1lc3NhZ2UoU0VORF9FUlJPUiAiSW52YWxpZCBRdCB2ZXJzaW9uIHNwZWNpZmllZC4iKQotIGVuZGlmKCkKLS1maW5kX3BhY2thZ2UoUXQ1V2lkZ2V0cyBSRVFVSVJFRCkKLSsjZmluZF9wYWNrYWdlKFF0NVdpZGdldHMgUkVRVUlSRUQpCi0gCi0gaWYoUXQ1X1BPU0lUSU9OX0lOREVQRU5ERU5UX0NPREUgQU5EIENNQUtFX0NYWF9DT01QSUxFX09QVElPTlNfUElDKQotICAgYWRkX2RlZmluaXRpb25zKCR7Q01BS0VfQ1hYX0NPTVBJTEVfT1BUSU9OU19QSUN9KQotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQKLWluZGV4IGJhZmQ5Y2Y0OC4uNDNlYzkzM2QyIDEwMDY0NAotLS0tIGEvVGVzdHMvUXRBdXRvZ2VuUmVydW4vbW9jUmVydW4vQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL21vY1JlcnVuL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTAsNyArMTAsNyBAQCBlbHNlKCkKLSAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCi0gICBlbmRpZigpCi0gCi0tICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSsgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gZW5kaWYoKQotIAotZGlmZiAtLWdpdCBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQgYi9UZXN0cy9RdEF1dG9nZW5SZXJ1bi9yY2NEZXBlbmRzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyOTE1OTJlN2QuLjQwY2Q1Mjg2OCAxMDA2NDQKLS0tLSBhL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1F0QXV0b2dlblJlcnVuL3JjY0RlcGVuZHMvQ01ha2VMaXN0cy50eHQKLUBAIC05LDcgKzksNyBAQCBlbHNlKCkKLSAgICAgbWVzc2FnZShTRU5EX0VSUk9SICJJbnZhbGlkIFF0IHZlcnNpb24gc3BlY2lmaWVkLiIpCi0gICBlbmRpZigpCi0gCi0tICBmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSsgICNmaW5kX3BhY2thZ2UoUXQ1Q29yZSBSRVFVSVJFRCkKLSAgIHNldChRVF9DT1JFX1RBUkdFVCBRdDU6OkNvcmUpCi0gZW5kaWYoKQotIAotZGlmZiAtLWdpdCBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLWluZGV4IDI5MzI1ZmYwYS4uZDMwZDAxZTc4IDEwMDY0NAotLS0tIGEvVGVzdHMvUnVuQ01ha2UvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjc0LDcgKzI3NCw3IEBAIGFkZF9SdW5DTWFrZV90ZXN0KGNvbmZpZ3VyZV9maWxlKQotIGFkZF9SdW5DTWFrZV90ZXN0KENUZXN0VGltZW91dEFmdGVyTWF0Y2gpCi0gCi0gZmluZF9wYWNrYWdlKFF0NCBRVUlFVCkKLS1maW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKLSsjZmluZF9wYWNrYWdlKFF0NUNvcmUgUVVJRVQpCi0gaWYgKFFUNF9GT1VORCBBTkQgUXQ1Q29yZV9GT1VORCBBTkQgTk9UIFF0NUNvcmVfVkVSU0lPTiBWRVJTSU9OX0xFU1MgNS4xLjApCi0gICBhZGRfUnVuQ01ha2VfdGVzdChJbmNvbXBhdGlibGVRdCkKLSBlbmRpZigpCi1kaWZmIC0tZ2l0IGEvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UgYi9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQotaW5kZXggNGZjY2RjNDE4Li5iNzZlMWU1MzEgMTAwNjQ0Ci0tLS0gYS9UZXN0cy9SdW5DTWFrZS9JbmNvbXBhdGlibGVRdC9JbmNvbXBhdGlibGVRdC5jbWFrZQotKysrIGIvVGVzdHMvUnVuQ01ha2UvSW5jb21wYXRpYmxlUXQvSW5jb21wYXRpYmxlUXQuY21ha2UKLUBAIC0xLDYgKzEsNiBAQAotIAotIGZpbmRfcGFja2FnZShRdDQgUkVRVUlSRUQpCi0tZmluZF9wYWNrYWdlKFF0NUNvcmUgUkVRVUlSRUQpCi0rI2ZpbmRfcGFja2FnZShRdDVDb3JlIFJFUVVJUkVEKQotIAotIGFkZF9leGVjdXRhYmxlKG1haW5leGUgbWFpbi5jcHApCi0gdGFyZ2V0X2xpbmtfbGlicmFyaWVzKG1haW5leGUgUXQ0OjpRdENvcmUgUXQ1OjpDb3JlKQotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjM2NzEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2NtbGliYXJjaGl2ZS1kaXNhYmxlLWV4dDJmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLURpc2FibGUgdXNlIG9mIGV4dDJmcy9leHQyX2ZzLmggYnkgY21ha2UncyBpbnRlcm5hbCBsaWJhcmNoaXZlIGNvcHkKLQotV2UgZG9uJ3Qgd2FudCB0byBhZGQgYSBkZXBlbmRlbmN5IG9uIGUyZnNwcm9ncy1uYXRpdmUgZm9yIGNtYWtlLW5hdGl2ZSwKLWFuZCB3ZSBkb24ndCB1c2UgQ1BhY2sgc28ganVzdCBkaXNhYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWddCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotCi0tLS0gYS9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9VdGlsaXRpZXMvY21saWJhcmNoaXZlL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjM3LDEyICsyMzcsOCBAQCBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImNvcHlmaWxlLmgiIEhBVkVfQ09QWUZJTEVfSCkKLSBMQV9DSEVDS19JTkNMVURFX0ZJTEUoImRpcmVjdC5oIiBIQVZFX0RJUkVDVF9IKQotIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZGxmY24uaCIgSEFWRV9ETEZDTl9IKQotIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZXJybm8uaCIgSEFWRV9FUlJOT19IKQotLUxBX0NIRUNLX0lOQ0xVREVfRklMRSgiZXh0MmZzL2V4dDJfZnMuaCIgSEFWRV9FWFQyRlNfRVhUMl9GU19IKQotLQotLUNIRUNLX0NfU09VUkNFX0NPTVBJTEVTKCIjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0tI2luY2x1ZGUgPGV4dDJmcy9leHQyX2ZzLmg+Ci0taW50IG1haW4odm9pZCkgeyByZXR1cm4gRVhUMl9JT0NfR0VURkxBR1M7IH0iIEhBVkVfV09SS0lOR19FWFQyX0lPQ19HRVRGTEFHUykKLS0KLStTRVQoSEFWRV9FWFQyRlNfRVhUMl9GU19IIDApCi0rU0VUKEhBVkVfV09SS0lOR19FWFQyX0lPQ19HRVRGTEFHUyAwKQotIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZmNudGwuaCIgSEFWRV9GQ05UTF9IKQotIExBX0NIRUNLX0lOQ0xVREVfRklMRSgiZ3JwLmgiIEhBVkVfR1JQX0gpCi0gTEFfQ0hFQ0tfSU5DTFVERV9GSUxFKCJpbnR0eXBlcy5oIiBIQVZFX0lOVFRZUEVTX0gpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvZW52aXJvbm1lbnQuZC1jbWFrZS5zaAppbmRleCAwZWI1NmI2Li43YmRiMTlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL2Vudmlyb25tZW50LmQtY21ha2Uuc2gKQEAgLTEgKzEsMiBAQAotYWxpYXMgY21ha2U9ImNtYWtlIC1EQ01BS0VfVE9PTENIQUlOX0ZJTEU9JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3Ivc2hhcmUvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UiCitleHBvcnQgT0VfQ01BS0VfVE9PTENIQUlOX0ZJTEU9IiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NoYXJlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIgorZXhwb3J0IE9FX0NNQUtFX0ZJTkRfTElCUkFSWV9DVVNUT01fTElCX1NVRkZJWD0iYGVjaG8gJE9FQ09SRV9CQVNFTElCIHwgc2VkIC1lIHMvbGliLy9gIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvcXQ0LWZhaWwtc2lsZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvcXQ0LWZhaWwtc2lsZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGZjMjc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3F0NC1mYWlsLXNpbGVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLUZhaWwgc2lsZW50bHkgaWYgc3lzdGVtIFF0IGluc3RhbGxhdGlvbiBpcyBicm9rZW4KLQotRml4ZXMgYSByZWdyZXNzaW9uIGluIGJlaGF2aW91ciBmcm9tIDIuOC4xMCB0byAyLjguMTEgcmVzdWx0aW5nIGluIHRoZQotZm9sbG93aW5nIGVycm9yIGlmIHRoZSBzeXN0ZW0gUXQgaW5zdGFsbGF0aW9uIGlzIGJyb2tlbjoKLQotQ01ha2UgRXJyb3IgYXQgTW9kdWxlcy9GaW5kUXQ0LmNtYWtlOjEwMjggKHNldF9wcm9wZXJ0eSk6Ci0gIHNldF9wcm9wZXJ0eSBjb3VsZCBub3QgZmluZCBUQVJHRVQgUXQ0OjpRdENvcmUuICBQZXJoYXBzIGl0IGhhcyBub3QgeWV0Ci0gIGJlZW4gY3JlYXRlZC4KLUNhbGwgU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgotICBUZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dDo3OSAoZmluZF9wYWNrYWdlKQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLVRoZSBwYXRjaCB3YXMgc2xpZ2h0bHkgYWRhcHRlZCBpbiBvcmRlciB0byBtYXRjaCBjbWFrZSAzLjIuMjoKLUFub3RoZXIgc2V0X3Byb3BlcnR5IHdhcyBpbnRyb2R1Y2VkIHdoaWNoIGhhZCB0byBiZSBpbmNsdWRlZAotd2l0aGluIHRoZSBpZihRVF9RVENPUkVfRk9VTkQpIHN0YXRlbWVudC4KLQotU2lnbmVkLW9mZi1ieTogTW9yaXR6IEJsdW1lIDxtb3JpdHouYmx1bWVAYm13LWNhcml0LmRlPgotLS0tCi0gTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIHwgMzkgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCA2NzA0NzY5Li45MDQ4ZTM1IDEwMDY0NAotLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi0rKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLUBAIC0xMDAwLDI1ICsxMDAwLDI2IEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAotICAgICBlbmRpZigpCi0gICBlbmRtYWNybygpCi0gCi0tCi0tICAjIFNldCBRVF94eXpfTElCUkFSWSB2YXJpYWJsZSBhbmQgYWRkCi0tICAjIGxpYnJhcnkgaW5jbHVkZSBwYXRoIHRvIFFUX0lOQ0xVREVTCi0tICBfUVQ0X0FESlVTVF9MSUJfVkFSUyhRdENvcmUpCi0tICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQotLSAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUwotLSAgICAgICIke1FUX01LU1BFQ1NfRElSfS9kZWZhdWx0IgotLSAgICAgICR7UVRfSU5DTFVERV9ESVJ9Ci0tICApCi0tICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIEFQUEVORCBQUk9QRVJUWQotLSAgICBJTlRFUkZBQ0VfQ09NUElMRV9ERUZJTklUSU9OUwotLSAgICAgICQ8JDxOT1Q6JDxDT05GSUc6RGVidWc+PjpRVF9OT19ERUJVRz4KLS0gICkKLS0gIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgUFJPUEVSVFkKLS0gICAgSU5URVJGQUNFX1FUX01BSk9SX1ZFUlNJT04gNAotLSAgKQotLSAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKLS0gICAgQ09NUEFUSUJMRV9JTlRFUkZBQ0VfU1RSSU5HIFFUX01BSk9SX1ZFUlNJT04KLS0gICkKLSsgIGlmKFFUX1FUQ09SRV9GT1VORCkKLSsgICAgIyBTZXQgUVRfeHl6X0xJQlJBUlkgdmFyaWFibGUgYW5kIGFkZAotKyAgICAjIGxpYnJhcnkgaW5jbHVkZSBwYXRoIHRvIFFUX0lOQ0xVREVTCi0rICAgIF9RVDRfQURKVVNUX0xJQl9WQVJTKFF0Q29yZSkKLSsgICAgc2V0X3Byb3BlcnR5KFRBUkdFVCBRdDQ6OlF0Q29yZSBBUFBFTkQgUFJPUEVSVFkKLSsgICAgICBJTlRFUkZBQ0VfSU5DTFVERV9ESVJFQ1RPUklFUwotKyAgICAgICAgIiR7UVRfTUtTUEVDU19ESVJ9L2RlZmF1bHQiCi0rICAgICAgICAke1FUX0lOQ0xVREVfRElSfQotKyAgICApCi0rICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCi0rICAgICAgSU5URVJGQUNFX0NPTVBJTEVfREVGSU5JVElPTlMKLSsgICAgICAgICQ8JDxOT1Q6JDxDT05GSUc6RGVidWc+PjpRVF9OT19ERUJVRz4KLSsgICAgKQotKyAgICBzZXRfcHJvcGVydHkoVEFSR0VUIFF0NDo6UXRDb3JlIFBST1BFUlRZCi0rICAgICAgSU5URVJGQUNFX1FUX01BSk9SX1ZFUlNJT04gNAotKyAgICApCi0rICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgUXQ0OjpRdENvcmUgQVBQRU5EIFBST1BFUlRZCi0rICAgICAgQ09NUEFUSUJMRV9JTlRFUkZBQ0VfU1RSSU5HIFFUX01BSk9SX1ZFUlNJT04KLSsgICAgKQotKyAgZW5kaWYoKQotIAotICAgZm9yZWFjaChRVF9NT0RVTEUgJHtRVF9NT0RVTEVTfSkKLSAgICAgX1FUNF9BREpVU1RfTElCX1ZBUlMoJHtRVF9NT0RVTEV9KQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9zdXBwb3J0LW9lLXF0NC10b29scy1uYW1lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODQxNTU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL3N1cHBvcnQtb2UtcXQ0LXRvb2xzLW5hbWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSAxMGI4YjUyMzg2OTEyNGQyZmM4Y2Q5OGQ5ZTAyOGMwYmNmZmQ2MWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLURhdGU6IFRodSwgMTIgTWF5IDIwMTEgMTU6MzY6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGNtYWtlOiBzdXBwb3J0IE9wZW5FbWJlZGRlZCBRdDQgdG9vbCBiaW5hcnkgbmFtZXMKLQotVGhlIEZpbmRRdDQgbW9kdWxlIGxvb2tzIGZvciBRdDQgYmluYXJpZXMgdG8gYmUgYWJsZSB0byBnYXRoZXIgdGhlCi1wYXRocyB1c2VkIGZvciBjb21waWxhdGlvbiBhbmQgYWxzbyB0byBiZSB1c2luZyBkdXJpbmcgb3RoZXIgcHJvY2Vzc2VzCi0odHJhbnNsYXRpb24gdXBkYXRlLCB0cmFuc2xhdGlvbiBiaW5hcnkgZ2VuZXJhdGluZyBhbmQgbGlrZSkgaG93ZXZlcgotT3BlbkVtYmVkZGVkIGhhcyByZW5hbWVkIHRob3NlIHRvIGFsbG93IG9sZCBRTWFrZSB0byBiZSB1c2VkIGluCi1wYXJhbGxlbCB3aXRoIHRoZSBjdXJyZW50IG9uZS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZQotT3BlbkVtYmVkZGVkIHNwZWNpZmljIGJpbmFyeSBuYW1lcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KLQotVGhlIHBhdGNoIHdhcyBzbGlnaHRseSBhZGFwdGVkIGluIG9yZGVyIHRvIG1hdGNoIGNtYWtlIDMuMi4yOgotSW5zdGVhZCBvZiBmaW5kX3Byb2dyYW0sIF9maW5kX3F0NF9wcm9ncmFtIGlzIG5vdyB1c2VkLgotCi1TaWduZWQtb2ZmLWJ5OiBNb3JpdHogQmx1bWUgPG1vcml0ei5ibHVtZUBibXctY2FyaXQuZGU+Ci0KLS0tLQotIE1vZHVsZXMvRmluZFF0NC5jbWFrZSB8IDEwICsrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlIGIvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi1pbmRleCBjNjdkMGJlLi4wY2YxNjliIDEwMDY0NAotLS0tIGEvTW9kdWxlcy9GaW5kUXQ0LmNtYWtlCi0rKysgYi9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKLUBAIC01MTYsNyArNTE2LDcgQEAgZW5kZnVuY3Rpb24oKQotIAotIHNldChRVDRfSU5TVEFMTEVEX1ZFUlNJT05fVE9PX09MRCBGQUxTRSkKLSAKLS1zZXQoX1FUNF9RTUFLRV9OQU1FUyBxbWFrZSBxbWFrZTQgcW1ha2UtcXQ0IHFtYWtlLW1hYykKLStzZXQoX1FUNF9RTUFLRV9OQU1FUyBxbWFrZSBxbWFrZTIgcW1ha2U0IHFtYWtlLXF0NCBxbWFrZS1tYWMpCi0gX3F0NF9maW5kX3FtYWtlKCIke19RVDRfUU1BS0VfTkFNRVN9IiBRVF9RTUFLRV9FWEVDVVRBQkxFIFFUVkVSU0lPTikKLSAKLSBpZiAoUVRfUU1BS0VfRVhFQ1VUQUJMRSBBTkQKLUBAIC0xMTQyLDEyICsxMTQyLDEyIEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORAotICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfTU9DX0VYRUNVVEFCTEUgUXQ0Ojptb2MgbW9jLXF0NCBtb2M0IG1vYykKLSAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1VJQ19FWEVDVVRBQkxFIFF0NDo6dWljIHVpYy1xdDQgdWljNCB1aWMpCi0gICBfZmluZF9xdDRfcHJvZ3JhbShRVF9VSUMzX0VYRUNVVEFCTEUgUXQ0Ojp1aWMzIHVpYzMpCi0tICBfZmluZF9xdDRfcHJvZ3JhbShRVF9SQ0NfRVhFQ1VUQUJMRSBRdDQ6OnJjYyByY2MpCi0tICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTQ1BQMlhNTF9FWEVDVVRBQkxFIFF0NDo6cWRidXNjcHAyeG1sIHFkYnVzY3BwMnhtbCkKLS0gIF9maW5kX3F0NF9wcm9ncmFtKFFUX0RCVVNYTUwyQ1BQX0VYRUNVVEFCTEUgUXQ0OjpxZGJ1c3htbDJjcHAgcWRidXN4bWwyY3BwKQotKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUkNDX0VYRUNVVEFCTEUgUXQ0OjpyY2MgcmNjNCByY2MpCi0rICBfZmluZF9xdDRfcHJvZ3JhbShRVF9EQlVTQ1BQMlhNTF9FWEVDVVRBQkxFIFF0NDo6cWRidXNjcHAyeG1sIHFkYnVzY3BwMnhtbDQgcWRidXNjcHAyeG1sKQotKyAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREJVU1hNTDJDUFBfRVhFQ1VUQUJMRSBRdDQ6OnFkYnVzeG1sMmNwcCBxZGJ1c3htbDJjcHA0IHFkYnVzeG1sMmNwcCkKLSAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xVUERBVEVfRVhFQ1VUQUJMRSBRdDQ6Omx1cGRhdGUgbHVwZGF0ZS1xdDQgbHVwZGF0ZTQgbHVwZGF0ZSkKLSAgIF9maW5kX3F0NF9wcm9ncmFtKFFUX0xSRUxFQVNFX0VYRUNVVEFCTEUgUXQ0OjpscmVsZWFzZSBscmVsZWFzZS1xdDQgbHJlbGVhc2U0IGxyZWxlYXNlKQotLSAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfUUNPTExFQ1RJT05HRU5FUkFUT1JfRVhFQ1VUQUJMRSBRdDQ6OnFjb2xsZWN0aW9uZ2VuZXJhdG9yIHFjb2xsZWN0aW9uZ2VuZXJhdG9yLXF0NCBxY29sbGVjdGlvbmdlbmVyYXRvcikKLSsgIF9maW5kX3F0NF9wcm9ncmFtKFFUX1FDT0xMRUNUSU9OR0VORVJBVE9SX0VYRUNVVEFCTEUgUXQ0OjpxY29sbGVjdGlvbmdlbmVyYXRvciBxY29sbGVjdGlvbmdlbmVyYXRvci1xdDQgcWNvbGxlY3Rpb25nZW5lcmF0b3IgcWNvbGxlY3Rpb25nZW5lcmF0b3I0KQotICAgX2ZpbmRfcXQ0X3Byb2dyYW0oUVRfREVTSUdORVJfRVhFQ1VUQUJMRSBRdDQ6OmRlc2lnbmVyIGRlc2lnbmVyLXF0NCBkZXNpZ25lcjQgZGVzaWduZXIpCi0gICBfZmluZF9xdDRfcHJvZ3JhbShRVF9MSU5HVUlTVF9FWEVDVVRBQkxFIFF0NDo6bGluZ3Vpc3QgbGluZ3Vpc3QtcXQ0IGxpbmd1aXN0NCBsaW5ndWlzdCkKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDgxZWRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLXJlcXVpcmUgY21ha2UuaW5jCi0KLWluaGVyaXQgY21ha2UKLQotREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKLSAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKLQotIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKLXB5dGhvbiAoKSB7Ci0gICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiKQotICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIikKLQotICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCi0KLSAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQotICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKLSAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQotCi0gICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKLX0KLQotRVhUUkFfT0VDTUFLRT0iIFwKLSAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJSSEFTSD0wIFwKLSAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1ES1dTWVNfTEZTX1dPUktTPTEgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLwotCi0gICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCi19Ci0KLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gJHtkYXRhZGlyfS9jbWFrZSAke2RhdGFkaXJ9L2FjbG9jYWwiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0NTc2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTIuMi5iYgpAQCAtMCwwICsxLDUzIEBACityZXF1aXJlIGNtYWtlLmluYworCitpbmhlcml0IGNtYWtlCisKK0RFUEVORFMgKz0gImN1cmwgZXhwYXQgemxpYiBsaWJhcmNoaXZlIHh6IG5jdXJzZXMgYnppcDIiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAorICAgIGZpbGU6Ly9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBcCisgICAgZmlsZTovL2Vudmlyb25tZW50LmQtY21ha2Uuc2ggXAorICAgIGZpbGU6Ly8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2ggXAorIgorCisjIFN0cmlwICR7cHJlZml4fSBmcm9tICR7ZG9jZGlyfSwgc2V0IHJlc3VsdCBpbnRvIGRvY2Rpcl9zdHJpcHBlZAorcHl0aG9uICgpIHsKKyAgICBwcmVmaXg9ZC5nZXRWYXIoInByZWZpeCIpCisgICAgZG9jZGlyPWQuZ2V0VmFyKCJkb2NkaXIiKQorCisgICAgaWYgbm90IGRvY2Rpci5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgIGJiLmZhdGFsKCdkb2NkaXIgbXVzdCBjb250YWluIHByZWZpeCBhcyBpdHMgcHJlZml4JykKKworICAgIGRvY2Rpcl9zdHJpcHBlZCA9IGRvY2RpcltsZW4ocHJlZml4KTpdCisgICAgaWYgbGVuKGRvY2Rpcl9zdHJpcHBlZCkgPiAwIGFuZCBkb2NkaXJfc3RyaXBwZWRbMF0gPT0gJy8nOgorICAgICAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJfc3RyaXBwZWRbMTpdCisKKyAgICBkLnNldFZhcigiZG9jZGlyX3N0cmlwcGVkIiwgZG9jZGlyX3N0cmlwcGVkKQorfQorCitFWFRSQV9PRUNNQUtFPSIgXAorICAgIC1EQ01BS0VfRE9DX0RJUj0ke2RvY2Rpcl9zdHJpcHBlZH0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlVWPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlJIQVNIPTAgXAorICAgIC1ES1dTWVNfQ0hBUl9JU19TSUdORUQ9MSBcCisgICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCisgICAgLURLV1NZU19MRlNfV09SS1M9MSBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9jbWFrZQorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vT0VUb29sY2hhaW5Db25maWcuY21ha2UgJHtEfSR7ZGF0YWRpcn0vY21ha2UvCisKKyAgICBta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLWNtYWtlLnNoICR7RH0ke1NES1BBVEhOQVRJVkV9L2Vudmlyb25tZW50LXNldHVwLmQvY21ha2Uuc2gKK30KKworRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtTREtQQVRITkFUSVZFfSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vY21ha2UtJHtDTUFLRV9NQUpPUl9WRVJTSU9OfSAke2RhdGFkaXJ9L2NtYWtlICR7ZGF0YWRpcn0vYWNsb2NhbCIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkb2NkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCitGSUxFU18ke1BOfS1kZXYgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY19naXQuYmIKaW5kZXggMzE3NjEzNi4uMjk2MDgxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY19naXQuYmIKQEAgLTksOCArOSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaCBcCiAgICAgICAgICAgICIKIAotUFYgPSAiMC4xMC4wK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjc0ODg5MWZmOGVlNTI0YzJkMzc5MjZjNjA4Y2QyNzk0Zjg4MDEzZjMiCitQViA9ICIwLjExLjErZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNDM0YTQwYmFiZGRlNTdhYjQwNWU5YTEwODVhMzBlOTU3NWVhMGM5MiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApAQCAtMjEsNyArMjEsNyBAQAogCiBFWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFBZVEhPTl9ERVNJUkVEPTMiCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiAjIERpcmVjdCBjcmVhdGVyZXBvIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CkBAIC0yOSwzICsyOSw4IEBACiAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKKyAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U0RLUEFUSE5BVElWRX0ke2xpYmRpcl9uYXRpdmVzZGt9L3JwbQorICAgICAgICBybSAtcmYgJHtEfS9ldGMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kZXNrdG9wLWZpbGUtdXRpbHMvZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZV8wLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGRhYWJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHMtbmF0aXZlXzAuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1TVU1NQVJZID0gIkNvbW1hbmQgbGluZSB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCAqLmRlc2t0b3AgZmlsZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2Rlc2t0b3AtZmlsZS11dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9kZXNrdG9wLWZpbGUtdXRpbHMvcmVsZWFzZXMvZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU5OTEzM2Q1MWNjOWE0MWJmZWMxODY0MTQ5MDZiNmYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMDk0MDMxYmRlYzQ2YzlmNjIxNzA4ZjkxOTA4NGUxY2I1Mjk0ZTJjNWIxZTRjODgzYjNlNzBjYjg5MDMzODUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQotCi1TID0gIiR7V09SS0RJUn0vZGVza3RvcC1maWxlLXV0aWxzLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3Byb2dfRU1BQ1M9bm8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kZXNrdG9wLWZpbGUtdXRpbHMvZGVza3RvcC1maWxlLXV0aWxzXzAuMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kZXNrdG9wLWZpbGUtdXRpbHMvZGVza3RvcC1maWxlLXV0aWxzXzAuMjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0NmY0NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rlc2t0b3AtZmlsZS11dGlscy9kZXNrdG9wLWZpbGUtdXRpbHNfMC4yMy5iYgpAQCAtMCwwICsxLDE5IEBACitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB1dGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCAqLmRlc2t0b3AgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2Rlc2t0b3AtZmlsZS11dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvdmFsaWRhdG9yLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0yNzttZDU9MjgxZTExMTRlZTZjNDg2YTFhMGE0Mjk1OTg2Yjk0MTYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjU5OTEzM2Q1MWNjOWE0MWJmZWMxODY0MTQ5MDZiNmYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMDk0MDMxYmRlYzQ2YzlmNjIxNzA4ZjkxOTA4NGUxY2I1Mjk0ZTJjNWIxZTRjODgzYjNlNzBjYjg5MDMzODUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3Byb2dfRU1BQ1M9bm8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0L2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMWZhYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMTA0NjU5M2FhY2I3NGZmODg4YTBkNjhjMGZmODliMjBjNGJjOWVkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBNYXkgMjAxOCAxNzoxNzowMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBkaWZmc3RhdDogZml4IHdyb25nIGV2YWx1YXRpb24gb2YgQ0MKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworbTQgZnVuY3Rpb24gQ0ZfQ0NfRU5WX0ZMQUdTIGNoZWNrcyB3aGV0aGVyIHZhcmlhYmxlIENDIGNvbnRhaW5zIG9wdGlvbnMgJy1JJywgJy1VJworYW5kICctRCcuIEl0IGlzIG5vdCBzdWl0YWJsZSBmb3Igb2UgdGhhdCBvcHRpb24gc3VjaCBhcyAnLURfRk9SVElGWV9TT1VSQ0U9MicgbWF5CitiZSBpbmNsdWRlZCBpbiBDQy4gQW5kIHRoZW4gQ0Mgd2lsbCBiZSB3cm9uZ2x5IGZpbHRlcmVkLgorCitTbyBjb21tZW50IG91dCBDRl9DQ19FTlZfRkxBR1MgZnJvbSBmdW5jdGlvbiBDRl9QUk9HX0NDLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgYWNsb2NhbC5tNCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CitpbmRleCA5MjgxYWE4Li5kZDU3YjdhIDEwMDY0NAorLS0tIGEvYWNsb2NhbC5tNAorKysrIGIvYWNsb2NhbC5tNAorQEAgLTEyMzksNyArMTIzOSw3IEBAIENGX0dDQ19WRVJTSU9OCisgQ0ZfQUNWRVJTSU9OX0NIRUNLKDIuNTIsCisgCVtBQ19QUk9HX0NDX1NURENdLAorIAlbQ0ZfQU5TSV9DQ19SRVFEXSkKKy1DRl9DQ19FTlZfRkxBR1MKKytkbmwgQ0ZfQ0NfRU5WX0ZMQUdTCisgXSlkbmwKKyBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZG5sIENGX1BST0dfR1JPRkYgdmVyc2lvbjogMyB1cGRhdGVkOiAyMDE4LzAxLzA3IDEzOjE2OjE5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhiN2IwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29sIHRvIHByb2R1Y2UgYSBzdGF0aXN0aWNzIGJhc2VkIG9uIGEgZGlmZiIKLURFU0NSSVBUSU9OID0gImRpZmZzdGF0IHJlYWRzIHRoZSBvdXRwdXQgb2YgZGlmZiBhbmQgZGlzcGxheXMgYSBoaXN0b2dyYW0gb2YgXAotdGhlIGluc2VydGlvbnMsIGRlbGV0aW9ucywgYW5kIG1vZGlmaWNhdGlvbnMgcGVyLWZpbGUuIEl0IGlzIHVzZWZ1bCBmb3IgXAotcmV2aWV3aW5nIGxhcmdlLCBjb21wbGV4IHBhdGNoIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWZmc3RhdC8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbnN0YWxsLXNoO2VuZGxpbmU9NDI7bWQ1PWIzNTQ5NzI2YzEwMjJiZWUwOWMxNzRjNzJhMGNhNGE1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjMDQ4YTMyZDU1ZDhiZDY3MjRmMzgyYmFmNDFmMzI1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTM1OWUwYzI3MTgzZjk5N2IzNmM5MjAyNTgzYjVkYzJkZjM5MGMyMGUyMmE5MjYwNmFmNGJmNzg1NmE1NWVlIgotCi1TID0gIiR7V09SS0RJUn0vZGlmZnN0YXQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLUxERkxBR1MgKz0gIiR7VE9PTENIQUlOX09QVElPTlN9IgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yICR7U30vdGVzdGluZyAke0R9JHtQVEVTVF9QQVRIfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42Mi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNkNzc3OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjIuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJUb29sIHRvIHByb2R1Y2UgYSBzdGF0aXN0aWNzIGJhc2VkIG9uIGEgZGlmZiIKK0RFU0NSSVBUSU9OID0gImRpZmZzdGF0IHJlYWRzIHRoZSBvdXRwdXQgb2YgZGlmZiBhbmQgZGlzcGxheXMgYSBoaXN0b2dyYW0gb2YgXAordGhlIGluc2VydGlvbnMsIGRlbGV0aW9ucywgYW5kIG1vZGlmaWNhdGlvbnMgcGVyLWZpbGUuIEl0IGlzIHVzZWZ1bCBmb3IgXAorcmV2aWV3aW5nIGxhcmdlLCBjb21wbGV4IHBhdGNoIGZpbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWZmc3RhdC8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbnN0YWxsLXNoO2VuZGxpbmU9NDI7bWQ1PWIzNTQ5NzI2YzEwMjJiZWUwOWMxNzRjNzJhMGNhNGE1IgorCitTUkNfVVJJID0gImh0dHA6Ly9pbnZpc2libGUtbWlycm9yLm5ldC9hcmNoaXZlcy8ke0JQTn0vJHtCUH0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1jaGVjay11c2VyLWJyZWFrLWNjLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjkxZTEwNmJiMzRjYjA5Nzc1MGRiN2RkYzBiYTFkOGZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDkxODM2NDRlZDc3YTE1NmIxNTM0NmJiYWQ0ZTg5YzkzNTQzZTE0MGFkZDlkYWIxODc0N2UzMDUyMjU5MWYiCisKK1MgPSAiJHtXT1JLRElSfS9kaWZmc3RhdC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjA0NjQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSIKLURFU0NSSVBUSU9OID0gImRpc3RjYyBpcyBhIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSB0aGF0IGRpc3RyaWJ1dGVzIFwKLWNvbXBpbGF0aW9uIG9mIEMvQysrL09iakMgY29kZSBhY3Jvc3MgbWFjaGluZXMgb24gYSBuZXR3b3JrLiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAiYXZhaGkgYmludXRpbHMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJwb3B0IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGssLS13aXRob3V0LWd0ayAtLXdpdGhvdXQtZ25vbWUsZ3RrKyIKLSMgdXNlIHN5c3RlbSBwb3B0IGJ5IGRlZmF1bHQKLVBBQ0tBR0VDT05GSUdbcG9wdF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLXBvcHQsLS13aXRoLWluY2x1ZGVkLXBvcHQscG9wdCIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWt1c3Rlci9kaXN0Y2MuZ2l0O2JyYW5jaD0ke1BWfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZWJ1aWxkZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtemVyb2NvbmYtSW5jbHVkZS1mY250bC5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vZGlzdGNjbW9uLWdub21lLmRlc2t0b3AgXAotICAgICAgICAgICBmaWxlOi8vZGlzdGNjIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc3RjYy5zZXJ2aWNlIgotU1JDUkVWID0gImQ4YjE4ZGYzZTlkY2JlNGYwOTJiZWQ1NjU4MzVkMzk3NWU5OTQzMmMiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLVdlcnJvciBQWVRIT049JycgLS1kaXNhYmxlLXB1bXAtbW9kZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gXAotICAgICAgICAgICAgICAgICAgICAgICAtLWhvbWUgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZ2lkIG5vZ3JvdXAgXAotICAgICAgICAgICAgICAgICAgICAgICBkaXN0Y2MiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJkaXN0Y2MiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGlzdGNjLnNlcnZpY2UiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgIyBJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eTogY29tcHJlc3Mgdy9vIHRpbWVzdGFtcHMKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICAiR1pJUF9CSU49Z3ppcCAtbiIgaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Rpc3RjYyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2Rpc3RjYwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlzdGNjLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Rpc3RjYy5zZXJ2aWNlCi0gICAgJHtERVNLVE9QSU5TVEFMTH0KLX0KLURFU0tUT1BJTlNUQUxMID0gIiIKLURFU0tUT1BJTlNUQUxMX2xpYmMtZ2xpYmMgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZGlzdGNjLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2Rpc3RjYy8KLX0KLVBBQ0tBR0VTICs9ICJkaXN0Y2MtZGlzdG1vbi1nbm9tZSIKLQotRklMRVNfJHtQTn0gPSAiICR7c3lzY29uZmRpcn0gXAotCQkke2JpbmRpcn0vZGlzdGNjIFwKLSAgICAke2JpbmRpcn0vbHNkaXN0Y2MgXAotCQkke2JpbmRpcn0vZGlzdGNjZCBcCi0JCSR7YmluZGlyfS9kaXN0Y2Ntb24tdGV4dCBcCi0JCSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGlzdGNjLnNlcnZpY2UiCi1GSUxFU19kaXN0Y2MtZGlzdG1vbi1nbm9tZSA9ICIgICR7YmluZGlyfS9kaXN0Y2Ntb24tZ25vbWUgXAotCQkJCSR7ZGF0YWRpcn0vZGlzdGNjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwNjk2MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4zLjIuYmIKQEAgLTAsMCArMSw3MSBAQAorU1VNTUFSWSA9ICJBIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gImRpc3RjYyBpcyBhIHBhcmFsbGVsIGJ1aWxkIHN5c3RlbSB0aGF0IGRpc3RyaWJ1dGVzIFwKK2NvbXBpbGF0aW9uIG9mIEMvQysrL09iakMgY29kZSBhY3Jvc3MgbWFjaGluZXMgb24gYSBuZXR3b3JrLiIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK0RFUEVORFMgPSAiYXZhaGkgYmludXRpbHMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwb3B0IgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGssLS13aXRob3V0LWd0ayAtLXdpdGhvdXQtZ25vbWUsZ3RrKyIKKyMgdXNlIHN5c3RlbSBwb3B0IGJ5IGRlZmF1bHQKK1BBQ0tBR0VDT05GSUdbcG9wdF0gPSAiLS13aXRob3V0LWluY2x1ZGVkLXBvcHQsLS13aXRoLWluY2x1ZGVkLXBvcHQscG9wdCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiYXZhaGktZGFlbW9uIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZGlzdGNjL2Rpc3RjYy5naXQgXAorICAgICAgICAgICBmaWxlOi8vc2VwYXJhdGVidWlsZGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc3RjYyBcCisgICAgICAgICAgIGZpbGU6Ly9kaXN0Y2Muc2VydmljZSIKK1NSQ1JFViA9ICI4NjAwZjA4NTdkYWM1NWVhMzkzZGMxMWE4NjA5NDg2OTJkMjE1ZmM4IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitBU05FRURFRCA9ICIiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLVdlcnJvciBQWVRIT049JycgLS1kaXNhYmxlLXB1bXAtbW9kZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gXAorICAgICAgICAgICAgICAgICAgICAgICAtLWhvbWUgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZ2lkIG5vZ3JvdXAgXAorICAgICAgICAgICAgICAgICAgICAgICBkaXN0Y2MiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJkaXN0Y2MiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZGlzdGNjLnNlcnZpY2UiCisKK2RvX2luc3RhbGwoKSB7CisgICAgIyBJbXByb3ZlIHJlcHJvZHVjaWJpbGl0eTogY29tcHJlc3Mgdy9vIHRpbWVzdGFtcHMKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICAiR1pJUF9CSU49Z3ppcCAtbiIgaW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Rpc3RjYyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2Rpc3RjYworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZGlzdGNjLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Rpc3RjYy5zZXJ2aWNlCisgICAgJHtERVNLVE9QSU5TVEFMTH0KK30KK0RFU0tUT1BJTlNUQUxMID0gIiIKK0RFU0tUT1BJTlNUQUxMX2xpYmMtZ2xpYmMgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZGlzdGNjLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Rpc3RjY21vbi1nbm9tZS5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2Rpc3RjYy8KK30KK1BBQ0tBR0VTICs9ICJkaXN0Y2MtZGlzdG1vbi1nbm9tZSIKKworRklMRVNfJHtQTn0gPSAiICR7c3lzY29uZmRpcn0gXAorCQkke2JpbmRpcn0vZGlzdGNjIFwKKwkJJHtiaW5kaXJ9L2xzZGlzdGNjIFwKKwkJJHtiaW5kaXJ9L2Rpc3RjY2QgXAorCQkke2JpbmRpcn0vZGlzdGNjbW9uLXRleHQgXAorCQkke3NiaW5kaXJ9L3VwZGF0ZS1kaXN0Y2Mtc3ltbGlua3MgXAorCQkke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Rpc3RjYy5zZXJ2aWNlIgorRklMRVNfZGlzdGNjLWRpc3Rtb24tZ25vbWUgPSAiICAke2JpbmRpcn0vZGlzdGNjbW9uLWdub21lIFwKKwkJCQkke2RhdGFkaXJ9L2Rpc3RjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy8wMDAxLXplcm9jb25mLUluY2x1ZGUtZmNudGwuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy8wMDAxLXplcm9jb25mLUluY2x1ZGUtZmNudGwuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE3ZWM5Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZmlsZXMvMDAwMS16ZXJvY29uZi1JbmNsdWRlLWZjbnRsLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDgzMzFmYzQ3NTlkODA5NTEyZjQwNGU3YTI3ZjgxN2FkNmQ2MTY0NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxODowMDozMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSB6ZXJvY29uZjogSW5jbHVkZSBmY250bC5oCi0KLVdlIG5lZWQgaXQgZm9yIGdldHRpbmcgZGVpbml0aW9ucyBmb3IgT18qIGUuZy4gT19DUkVBVAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy96ZXJvY29uZi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvemVyb2NvbmYuYyBiL3NyYy96ZXJvY29uZi5jCi1pbmRleCA0MTRkZGM0Li4zMWJkMzNmIDEwMDY0NAotLS0tIGEvc3JjL3plcm9jb25mLmMKLSsrKyBiL3NyYy96ZXJvY29uZi5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNpbmNsdWRlIDxhdmFoaS1jb21tb24vZG9tYWluLmg+Ci0gI2luY2x1ZGUgPGF2YWhpLWNvbW1vbi9lcnJvci5oPgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZmlsZXMvZGVmYXVsdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy9kZWZhdWx0CmluZGV4IDYzYzQxNTkuLmU1Y2E2OGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy9kZWZhdWx0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9maWxlcy9kZWZhdWx0CkBAIC0xNiw5ICsxNiw5IEBACiAjCiAjIEFMTE9XRURORVRTPSIxMjcuMC4wLjEiCiAKLUFMTE9XRURORVRTPSIxOTIuMTY4LjcuMC8yNCIKK0FMTE9XRURORVRTPSIxMjcuMC4wLjEiCiAKICMKICMgT1BUSU9OUyBpcyB1c2VkIGZvciB0aGUgc3lzdGVtZCBzZXJ2aWNlIGZpbGUKICMKLU9QVElPTlM9Ii0tYWxsb3cgMTkyLjE2OC43LjAvMjQiCitPUFRJT05TPSItLWFsbG93IDEyNy4wLjAuMSAtLW1ha2UtbWUtYS1ib3RuZXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCmluZGV4IGY4MzI4MWUuLmI0MjNmZGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCkBAIC05LDYgKzksMTAgQEAKIAogRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCiAKKyMgVGhlIHVwc3RyZWFtIGJ1aWxkc3lzdGVtIHVzZXMgJ2RvY2RpcicgYXMgdGhlIHBhdGggd2hlcmUgaXQgcHV0cyBBVVRIT1JTLAorIyBSRUFETUUsIGV0YywgYnV0IHdlIGRvbid0IHdhbnQgdGhvc2UgaW4gdGhlIHJvb3Qgb2Ygb3VyIGRvY2Rpci4KK2RvY2RpciAuPSAiLyR7QlBOfSIKKwogZG9faW5zdGFsbCgpIHsKIAlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIGluc3RhbGwKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzIuNy41LmJiCmluZGV4IGI4OGRkYjQuLmRmNjBkNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi43LjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjcuNS5iYgpAQCAtNzIsMyArNzIsNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC5zZXJ2aWNlIGRuZi1hdXRvbWF0aWMtaW5zdGFsbC50aW1lciBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKICIKK1NZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kd2FyZnNyY2ZpbGVzL2R3YXJmc3JjZmlsZXMuYmIKaW5kZXggYzU5YTAwNi4uMmM4NDNhOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHdhcmZzcmNmaWxlcy9kd2FyZnNyY2ZpbGVzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2R3YXJmc3JjZmlsZXMvZHdhcmZzcmNmaWxlcy5iYgpAQCAtMSw0ICsxLDQgQEAKLVNVTU1BUlkgPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBwcmludGluZyBkZWJpZyBzb3VyY2UgZmlsZSBsb2NhdGlvbnMgZW1iZWRkZWQgaW4gYmluYXJpZXMiCitTVU1NQVJZID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgcHJpbnRpbmcgZGVidWcgc291cmNlIGZpbGUgbG9jYXRpb25zIGVtYmVkZGVkIGluIGJpbmFyaWVzIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9kd2FyZnNyY2ZpbGVzLmM7bWQ1PTMxNDgzODk0ZTQ1M2E3N2FjYmI2Nzg0NzU2NWYxYjVjO2JlZ2lubGluZT0xO2VuZGxpbmU9OCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwppbmRleCA4MWQ5MGExLi5hNTRhMTFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYwpAQCAtOSw3ICs5LDcgQEAKIExJQ0VOU0VfZTJmc3Byb2dzLWZzY2sgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy10dW5lMmZzID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT1iNDhmMjFkNzY1Yjg3NWJkMTA0MDA5NzVkMTJjMWNhMiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9OT1RJQ0U7bWQ1PWQ1MGJlMDU4MGMwYjBhN2ZiYzdhNDgzMGJiZTZjMTJiIFwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2V4dDJmcy9leHQyZnMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTk7bWQ1PTU5NmE4ZGVkY2I0ZTczMWM2YjIxYzdhNDZmYmE2YmVmIFwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2UycC9lMnAuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTc7bWQ1PThhNzRhZGU4ZjlkNjUwOTVkNzBlZjJkNGJmNDhlMzZhIFwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V1aWQvdXVpZC5oLmluO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PWRiYjgwNzllMTE0YTVmODQxOTM0Yjk5ZTU5Yzg4MjBhIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1saWJleHQyZnMtZml4LWJ1aWxkLWZhaWx1cmUtaW4tc3dhcGZzLmMtb24tYmlnLWVuZGlhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWxpYmV4dDJmcy1maXgtYnVpbGQtZmFpbHVyZS1pbi1zd2FwZnMuYy1vbi1iaWctZW5kaWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTI4NGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWxpYmV4dDJmcy1maXgtYnVpbGQtZmFpbHVyZS1pbi1zd2FwZnMuYy1vbi1iaWctZW5kaWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGFlNjYwMzIwNjE3NmI3NzFjOWVkMWY4MjU2OWY2OGZjMTI1N2YwMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgotRGF0ZTogV2VkLCAzIEphbiAyMDE4IDAxOjMyOjAyIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxpYmV4dDJmczogZml4IGJ1aWxkIGZhaWx1cmUgaW4gc3dhcGZzLmMgb24gYmlnLWVuZGlhbgotIHN5c3RlbXMKLQotQWRkcmVzc2VzLURlYmlhbi1CdWc6ICM4ODYxMTkKLQotUmVwb3J0ZWQtYnk6IEphbWVzIENsYXJrZSA8anJ0YzI3QGRlYmlhbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWIvZXh0MmZzL3N3YXBmcy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZXh0MmZzL3N3YXBmcy5jIGIvbGliL2V4dDJmcy9zd2FwZnMuYwotaW5kZXggNmU1Y2ZmOTcuLmIxM2RjNDIyIDEwMDY0NAotLS0tIGEvbGliL2V4dDJmcy9zd2FwZnMuYwotKysrIGIvbGliL2V4dDJmcy9zd2FwZnMuYwotQEAgLTE5LDYgKzE5LDcgQEAKLSAKLSAjaW5jbHVkZSAiZXh0Ml9mcy5oIgotICNpbmNsdWRlICJleHQyZnMuaCIKLSsjaW5jbHVkZSAiZXh0MmZzUC5oIgotICNpbmNsdWRlIDxleHQyZnMvZXh0Ml9leHRfYXR0ci5oPgotIAotICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KLUBAIC0zNTgsNyArMzU5LDcgQEAgdm9pZCBleHQyZnNfc3dhcF9pbm9kZV9mdWxsKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqdCwKLSAJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfcHJvamlkKSkKLSAgICAgICAgICAgICAgICAgdC0+aV9wcm9qaWQgPSBleHQyZnNfc3dhYjE2KGYtPmlfcHJvamlkKTsKLSAJLyogY2F0Y2ggbmV3IHN0YXRpYyBmaWVsZHMgYWRkZWQgYWZ0ZXIgaV9wcm9qaWQgKi8KLS0JRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2YoZXh0Ml9pbm9kZV9sYXJnZSkgIT0gMTYwKTsKLSsJRVhUMkZTX0JVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpICE9IDE2MCk7Ci0gCi0gCWkgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpICsgZXh0cmFfaXNpemUgKyBzaXplb2YoX191MzIpOwotIAlpZiAoYnVmc2l6ZSA8IChpbnQpIGkpCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2gKaW5kZXggMzhlMWJkYi4uZDdlMDliNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9SZXZlcnQtbWtlMmZzLWVuYWJsZS10aGUtbWV0YWRhdGFfY3N1bS1hbmQtNjRiaXQtZmVhLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvUmV2ZXJ0LW1rZTJmcy1lbmFibGUtdGhlLW1ldGFkYXRhX2NzdW0tYW5kLTY0Yml0LWZlYS5wYXRjaApAQCAtMTksMTYgKzE5LDE2IEBACiAgbWlzYy9ta2UyZnMuY29uZi5pbiB8IDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9taXNjL21rZTJmcy5jb25mLmluCi0rKysgZ2l0L21pc2MvbWtlMmZzLmNvbmYuaW4KK2RpZmYgLS1naXQgYS9taXNjL21rZTJmcy5jb25mLmluIGIvbWlzYy9ta2UyZnMuY29uZi5pbgoraW5kZXggMDFlMzVjZi4uMjUxMDViMyAxMDA2NDQKKy0tLSBhL21pc2MvbWtlMmZzLmNvbmYuaW4KKysrKyBiL21pc2MvbWtlMmZzLmNvbmYuaW4KIEBAIC0xMSw4ICsxMSw5IEBACiAgCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsCiAgCX0KICAJZXh0NCA9IHsKLS0JCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyw2NGJpdCxkaXJfbmxpbmssZXh0cmFfaXNpemUKLSsJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUKKy0JCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLG1ldGFkYXRhX2NzdW0sNjRiaXQsZGlyX25saW5rLGV4dHJhX2lzaXplCisrCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyxtZXRhZGF0YV9jc3VtLGRpcl9ubGluayxleHRyYV9pc2l6ZQogIAkJaW5vZGVfc2l6ZSA9IDI1NgogKwkJYXV0b182NC1iaXRfc3VwcG9ydCA9IDEKICAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKaW5kZXggN2M0YmIzOS4uNGU2YjYyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCkBAIC0xLDEwICsxLDIxIEBACitGcm9tIGI4ODQyMDY1YWQ2MjFhMDNhOTcxZGZkNTBkYjg2MmM1YmZmZGViNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEbWl0cnkgRXJlbWluLVNvbGVuaWtvdiA8ZG1pdHJ5X2VyZW1pbkBtZW50b3IuY29tPgorRGF0ZTogU2F0LCAxOCBBcHIgMjAxNSAxNzo1ODoxNyArMDMwMAorU3ViamVjdDogW1BBVENIXSBlMmZzcHJvZ3M6IGFkZCBwdGVzdAorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIAotSW5kZXg6IGdpdC90ZXN0cy9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RzL01ha2VmaWxlLmluCi0rKysgZ2l0L3Rlc3RzL01ha2VmaWxlLmluCi1AQCAtMTgsNyArMTgsNyBAQCB0ZXN0X29uZTogJChzcmNkaXIpL3Rlc3Rfb25lLmluIE1ha2VmaWxlCistLS0KKyB0ZXN0cy9NYWtlZmlsZS5pbiAgICB8ICA0ICsrLS0KKyB0ZXN0cy90ZXN0X2NvbmZpZyAgICB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgdGVzdHMvdGVzdF9zY3JpcHQuaW4gfCAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL01ha2VmaWxlLmluCitpbmRleCA4YzRkMjA0OC4uZTAyMWFmMzIgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5pbgorKysrIGIvdGVzdHMvTWFrZWZpbGUuaW4KK0BAIC0xOSw3ICsxOSw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUgbWtlMmZzLmNvbmYKICAJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X29uZQogIAlAZWNobyAiSFRSRUU9eSIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIlFVT1RBPXkiID4+IHRlc3Rfb25lCkBAIC0xMywyMCArMjQsMjAgQEAKICAJQGVjaG8gIkRJRkZfT1BUUz1AVU5JX0RJRkZfT1BUU0AiID4+IHRlc3Rfb25lCiAgCUBlY2hvICJTSVpFT0ZfVElNRV9UPUBTSVpFT0ZfVElNRV9UQCIgPj4gdGVzdF9vbmUKICAJQGVjaG8gIkREPUBEREAiID4+dGVzdF9vbmUKLUBAIC0yOCw3ICsyOCw3IEBAIHRlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUKLSB0ZXN0X3NjcmlwdDogdGVzdF9vbmUgdGVzdF9zY3JpcHQuaW4gTWFrZWZpbGUgbWtlMmZzLmNvbmYKK0BAIC0zMCw3ICszMCw3IEBAIHRlc3Rfc2NyaXB0OiB0ZXN0X29uZSB0ZXN0X3NjcmlwdC5pbiBNYWtlZmlsZSBta2UyZnMuY29uZgogIAlAZWNobyAiQ3JlYXRpbmcgdGVzdF9zY3JpcHQuLi4iCisgCUBbIC1mIHRlc3Rfc2NyaXB0IF0gJiYgY2htb2QgdSt3IHRlc3Rfc2NyaXB0IHx8IHRydWUKICAJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X3NjcmlwdAogLQlAZWNobyAiU1JDRElSPUBzcmNkaXJAIiA+PiB0ZXN0X3NjcmlwdAogKwlAZWNobyAiU1JDRElSPSR7cHJlZml4fSR7bGliZGlyfS9lMmZzcHJvZ3MvcHRlc3QvdGVzdCIgPj4gdGVzdF9zY3JpcHQKICAJQGNhdCAkKHNyY2RpcikvdGVzdF9zY3JpcHQuaW4gPj4gdGVzdF9zY3JpcHQKLSAJQGNobW9kICt4IHRlc3Rfc2NyaXB0CisgCUBjaG1vZCAreC13IHRlc3Rfc2NyaXB0CiAgCi1JbmRleDogZ2l0L3Rlc3RzL3Rlc3RfY29uZmlnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdHMvdGVzdF9jb25maWcKLSsrKyBnaXQvdGVzdHMvdGVzdF9jb25maWcKLUBAIC0zLDI0ICszLDI0IEBACitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9jb25maWcgYi90ZXN0cy90ZXN0X2NvbmZpZworaW5kZXggMWYxNDZjYTIuLjA1MTI1ZjljIDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdF9jb25maWcKKysrKyBiL3Rlc3RzL3Rlc3RfY29uZmlnCitAQCAtMywxNiArMywxNiBAQAogICMKICAKICB1bnNldCBMQU5HIExBTkdVQUdFIExDX0FERFJFU1MgTENfQUxMIExDX0NPTExBVEUgTENfQ1RZUEUgTENfSURFTlRJRklDQVRJT04gTENfTUVBU1VSRU1FTlQgTENfTUVTU0FHRVMgTENfTU9ORVRBUlkgTENfTkFNRSBMQ19OVU1FUklDIExDX1BBUEVSIExDX1RFTEVQSE9ORSBMQ19USU1FIFBBR0VSCkBAIC00MCw4ICs1MSw2IEBACiAtRTJJTUFHRV9FWEU9Ii4uL21pc2MvZTJpbWFnZSIKIC1ERUJVR0ZTPSIkVVNFX1ZBTEdSSU5EIC4uL2RlYnVnZnMvZGVidWdmcyIKIC1ERUJVR0ZTX0VYRT0iLi4vZGVidWdmcy9kZWJ1Z2ZzIgotLVRFU1RfQklUUz0iLi4vZGVidWdmcy9kZWJ1Z2ZzIgotLVJFU0laRTJGU19FWEU9Ii4uL3Jlc2l6ZS9yZXNpemUyZnMiCiArRlNDSz0iJFVTRV9WQUxHUklORCBlMmZzY2siCiArTUtFMkZTPSIkVVNFX1ZBTEdSSU5EIG1rZTJmcyIKICtEVU1QRTJGUz0iJFVTRV9WQUxHUklORCBkdW1wZTJmcyIKQEAgLTUyLDI1ICs2MSwzNCBAQAogK0UySU1BR0VfRVhFPSIvc2Jpbi9lMmltYWdlIgogK0RFQlVHRlM9IiRVU0VfVkFMR1JJTkQgZGVidWdmcyIKICtERUJVR0ZTX0VYRT0iL3NiaW4vZGVidWdmcyIKLStURVNUX0JJVFM9Ii9zYmluL2RlYnVnZnMiCisgVEVTVF9CSVRTPSJ0ZXN0X2RhdGEudG1wIgorIGlmIFsgISAtcyAkVEVTVF9CSVRTIF07IHRoZW4KKyAJIyBjcmVhdGUgYSBub24tc3BhcnNlIHRlc3QgZmlsZSBpZiBwb3NzaWJsZSwgc2luY2UgZGVidWdmcyBtYXkgYmUKK0BAIC0yMSwxNCArMjEsMTQgQEAgaWYgWyAhIC1zICRURVNUX0JJVFMgXTsgdGhlbgorIAlkZCBpZj0vZGV2L3VyYW5kb20gb2Y9JFRFU1RfQklUUyBicz0xMjhrIGNvdW50PTEgPiAvZGV2L251bGwgMj4mMSB8fAorIAkJVEVTVF9CSVRTPSIkREVGQlVHRlNfRVhFIgorIGZpCistUkVTSVpFMkZTX0VYRT0iLi4vcmVzaXplL3Jlc2l6ZTJmcyIKICtSRVNJWkUyRlNfRVhFPSIvc2Jpbi9yZXNpemUyZnMiCiAgUkVTSVpFMkZTPSIkVVNFX1ZBTEdSSU5EICRSRVNJWkUyRlNfRVhFIgogLUUyVU5ET19FWEU9Ii4uL21pc2MvZTJ1bmRvIgogK0UyVU5ET19FWEU9Ii9zYmluL2UydW5kbyIKICBFMlVORE89IiRVU0VfVkFMR1JJTkQgJEUyVU5ET19FWEUiCistRTJNTVBTVEFUVVM9IiRVU0VfVkFMR1JJTkQgLi4vbWlzYy9kdW1wZTJmcyAtbSIKIC1URVNUX1JFTD0uLi90ZXN0cy9wcm9ncy90ZXN0X3JlbAogLVRFU1RfSUNPVU5UPS4uL3Rlc3RzL3Byb2dzL3Rlc3RfaWNvdW50CiAtQ1JDU1VNPS4uL3Rlc3RzL3Byb2dzL2NyY3N1bQorK0UyTU1QU1RBVFVTPSIkVVNFX1ZBTEdSSU5EIGR1bXBlMmZzIC1tIgogK1RFU1RfUkVMPS4vcHJvZ3MvdGVzdF9yZWwKICtURVNUX0lDT1VOVD0uL3Byb2dzL3Rlc3RfaWNvdW50CiArQ1JDU1VNPS4vcHJvZ3MvY3Jjc3VtCiAgQ0xFQU5fT1VUUFVUPSJzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCIKICBMRF9MSUJSQVJZX1BBVEg9Li4vbGliOi4uL2xpYi9leHQyZnM6Li4vbGliL2UycDouLi9saWIvZXQ6Li4vbGliL3NzOiR7TERfTElCUkFSWV9QQVRIfQogIERZTERfTElCUkFSWV9QQVRIPS4uL2xpYjouLi9saWIvZXh0MmZzOi4uL2xpYi9lMnA6Li4vbGliL2V0Oi4uL2xpYi9zczoke0RZTERfTElCUkFSWV9QQVRIfQotSW5kZXg6IGdpdC90ZXN0cy90ZXN0X3NjcmlwdC5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCi0rKysgZ2l0L3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdF9zY3JpcHQuaW4gYi90ZXN0cy90ZXN0X3NjcmlwdC5pbgoraW5kZXggOTk1OWUzMDguLjQ0Mjk5OWRiIDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdF9zY3JpcHQuaW4KKysrKyBiL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCiBAQCAtMzksNyArMzksNyBAQCBmb3IgaTsgZG8KICBkb25lCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmFiYjNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLXJlcXVpcmUgZTJmc3Byb2dzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZXh0MmZzLWZpeC1idWlsZC1mYWlsdXJlLWluLXN3YXBmcy5jLW9uLWJpZy1lbmRpYS5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCi0iCi0KLVNSQ1JFViA9ICJhZjJlYWM0ODFjZjQyNmMwNWFlMTJiOTQ2Mzk2OTgwZTE2YzhhYjE5IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopJCIKLQotRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmJsa2lkIC0tZW5hYmxlLXZlcmJvc2UtbWFrZWNtZHMiCi0KLUVYVFJBX09FQ09ORl9kYXJ3aW4gPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSAtLWVuYWJsZS1ic2Qtc2hsaWJzIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tmdXNlXSA9ICctLWVuYWJsZS1mdXNlMmZzLC0tZGlzYWJsZS1mdXNlMmZzLGZ1c2UnCi0KLSMgbWFrZSBsb2NhbGUgcnVsZXMgc29tZXRpbWVzIGZpcmUsIHNvbWV0aW1lcyBkb24ndCBhcyBnaXQgZG9lc24ndCBwcmVzZXJ2ZQotIyBmaWxlIG1rdGltZS4gVG91Y2ggdGhlIGZpbGVzIGludHJvZHVjaW5nIG5vbi1kZXRlcm1pbmlzbSB0byB0aGUgYnVpbGQKLWRvX2NvbXBpbGVfcHJlcGVuZCAoKXsKLQlmaW5kICR7U30vcG8gLXR5cGUgZiAtbmFtZSAiKi5wbyIgLWV4ZWMgdG91Y2gge30gKwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtbGlicwotCSMgV2UgdXNlIGJsa2lkIGZyb20gdXRpbC1saW51eCBub3cgc28gcmVtb3ZlIGZyb20gaGVyZQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9saWJibGtpZCoKLQlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vYmxraWQKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnL2Jsa2lkLnBjCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZnNjawotCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZmluZGZzCi0KLQkjIGUyaW5pdHJkX2hlbHBlciBhbmQgdGhlIHBrZ2NvbmZpZyBmaWxlcyBiZWxvbmcgaW4gbGliZGlyCi0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7RH0ke2xpYmRpcn0KLQkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBleHQyZnMvZXh0Ml90eXBlcy5oCi0JaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQltdiAke0R9JHtiaW5kaXJ9L2NoYXR0ciAke0R9JHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncwotCi0JaW5zdGFsbCAtdiAtbSA3NTUgJHtTfS9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0KLQkjIENsZWFuIGhvc3QgcGF0aCAoYnVpbGQgZGlyZWN0b3J5KSBpbiBjb21waWxlX2V0LCBta19jbWRzCi0Jc2VkIC1pIC1lICJzLFwoRVRfRElSPS4qXCkke1N9L2xpYi9ldFwoLipcKSxcMSR7ZGF0YWRpcn0vZXRcMixnIiAke0R9JHtiaW5kaXJ9L2NvbXBpbGVfZXQKLQlzZWQgLWkgLWUgInMsXChTU19ESVI9LipcKSR7U30vbGliL3NzXCguKlwpLFwxJHtkYXRhZGlyfS9zc1wyLGciICR7RH0ke2JpbmRpcn0vbWtfY21kcwotfQotCi0jIE5lZWQgdG8gZmluZCB0aGUgcmlnaHQgbWtlMmZzLmNvbmYgZmlsZQotZTJmc3Byb2dzX2NvbmZfZml4dXAgKCkgewotCWZvciBpIGluIG1rZTJmcyBta2ZzLmV4dDIgbWtmcy5leHQzIG1rZnMuZXh0NDsgZG8KLQkJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS8kaSBNS0UyRlNfQ09ORklHPSR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYKLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JZTJmc3Byb2dzX2NvbmZfZml4dXAKLX0KLQotUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MiCi1SUkVDT01NRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIgotCi1QQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKLVBBQ0tBR0VTID0rICJsaWJjb21lcnIgbGlic3MgbGliZTJwIGxpYmV4dDJmcyIKLQotRklMRVNfZTJmc3Byb2dzLXJlc2l6ZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVzaXplMmZzKiIKLUZJTEVTX2UyZnNwcm9ncy1lMmZzY2sgPSAiJHtiYXNlX3NiaW5kaXJ9L2UyZnNjayAke2Jhc2Vfc2JpbmRpcn0vZnNjay5leHQqIgotRklMRVNfZTJmc3Byb2dzLW1rZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzICR7YmFzZV9zYmluZGlyfS9ta2ZzLmV4dCogJHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZiIKLUZJTEVTX2UyZnNwcm9ncy10dW5lMmZzID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzICR7YmFzZV9zYmluZGlyfS9lMmxhYmVsIgotRklMRVNfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICIke2Jhc2Vfc2JpbmRpcn0vYmFkYmxvY2tzIgotRklMRVNfbGliY29tZXJyID0gIiR7YmFzZV9saWJkaXJ9L2xpYmNvbV9lcnIuc28uKiIKLUZJTEVTX2xpYnNzID0gIiR7YmFzZV9saWJkaXJ9L2xpYnNzLnNvLioiCi1GSUxFU19saWJlMnAgPSAiJHtiYXNlX2xpYmRpcn0vbGliZTJwLnNvLioiCi1GSUxFU19saWJleHQyZnMgPSAiJHtsaWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke2Jhc2VfbGliZGlyfS9saWJleHQyZnMuc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS8qLyouYXdrICR7ZGF0YWRpcn0vKi8qLnNlZCAke2Jhc2VfbGliZGlyfS8qLnNvICR7YmluZGlyfS9jb21waWxlX2V0ICR7YmluZGlyfS9ta19jbWRzIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJjaGF0dHIiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIiCi1BTFRFUk5BVElWRV9UQVJHRVRbY2hhdHRyXSA9ICIke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiZnNjay44IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ZzY2suOF0gPSAiJHttYW5kaXJ9L21hbjgvZnNjay44IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0gJHtQTn0tdHVuZTJmcyBjb3JldXRpbHMgcHJvY3BzIGJhc2giCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlzZWQgLWUgJ3MhLi4vZTJmc2NrL2UyZnNjayFlMmZzY2shZycgXAotCSAgICAtZSAncyEuLi9taXNjL3R1bmUyZnMhdHVuZTJmcyFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrISR7YmFzZV9zYmluZGlyfS9lMmZzY2shZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qL3NjcmlwdAotCi0JIyBSZW1vdmUgdmFyaW91cyBmaWxlcwotCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKLQkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAotCSAgICAtZXhlYyAgcm0gLWYge30gKwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ0LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTk1ZGVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ0LjMuYmIKQEAgLTAsMCArMSwxMzUgQEAKK3JlcXVpcmUgZTJmc3Byb2dzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXAorIgorCitTUkNSRVYgPSAiODVlNTNmNDJmOThkNTMzNDkxNGRlMDFlOTcyZTllZDQ0YmNjZDBhNSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbGlidXVpZCAtLWRpc2FibGUtdXVpZGQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJibGtpZCAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIgorCitFWFRSQV9PRUNPTkZfZGFyd2luID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gLS1lbmFibGUtYnNkLXNobGlicyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAnLS1lbmFibGUtZnVzZTJmcywtLWRpc2FibGUtZnVzZTJmcyxmdXNlJworCisjIG1ha2UgbG9jYWxlIHJ1bGVzIHNvbWV0aW1lcyBmaXJlLCBzb21ldGltZXMgZG9uJ3QgYXMgZ2l0IGRvZXNuJ3QgcHJlc2VydmUKKyMgZmlsZSBta3RpbWUuIFRvdWNoIHRoZSBmaWxlcyBpbnRyb2R1Y2luZyBub24tZGV0ZXJtaW5pc20gdG8gdGhlIGJ1aWxkCitkb19jb21waWxlX3ByZXBlbmQgKCl7CisJZmluZCAke1N9L3BvIC10eXBlIGYgLW5hbWUgIioucG8iIC1leGVjIHRvdWNoIHt9ICsKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWxpYnMKKwkjIFdlIHVzZSBibGtpZCBmcm9tIHV0aWwtbGludXggbm93IHNvIHJlbW92ZSBmcm9tIGhlcmUKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliYmxraWQqCisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZzY2sKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZpbmRmcworCisJIyBlMmluaXRyZF9oZWxwZXIgYW5kIHRoZSBwa2djb25maWcgZmlsZXMgYmVsb25nIGluIGxpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZXh0MmZzL2V4dDJfdHlwZXMuaAorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJbXYgJHtEfSR7YmluZGlyfS9jaGF0dHIgJHtEfSR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MKKworCWluc3RhbGwgLXYgLW0gNzU1ICR7U30vY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCisJIyBDbGVhbiBob3N0IHBhdGggKGJ1aWxkIGRpcmVjdG9yeSkgaW4gY29tcGlsZV9ldCwgbWtfY21kcworCXNlZCAtaSAtZSAicyxcKEVUX0RJUj0uKlwpJHtTfS9saWIvZXRcKC4qXCksXDEke2RhdGFkaXJ9L2V0XDIsZyIgJHtEfSR7YmluZGlyfS9jb21waWxlX2V0CisJc2VkIC1pIC1lICJzLFwoU1NfRElSPS4qXCkke1N9L2xpYi9zc1woLipcKSxcMSR7ZGF0YWRpcn0vc3NcMixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKK30KKworIyBOZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IG1rZTJmcy5jb25mIGZpbGUKK2UyZnNwcm9nc19jb25mX2ZpeHVwICgpIHsKKwlmb3IgaSBpbiBta2UyZnMgbWtmcy5leHQyIG1rZnMuZXh0MyBta2ZzLmV4dDQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGkgTUtFMkZTX0NPTkZJRz0ke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mCisJZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwltdiAke0R9JHtiYXNlX3NiaW5kaXJ9L21rZTJmcyAke0R9JHtiYXNlX3NiaW5kaXJ9L21rZTJmcy5lMmZzcHJvZ3MKKwltdiAke0R9JHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0MiAke0R9JHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0Mi5lMmZzcHJvZ3MKKwltdiAke0R9JHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtEfSR7YmFzZV9zYmluZGlyfS90dW5lMmZzLmUyZnNwcm9ncworfQorCitSREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKK1JSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCisKK1BBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgorUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgorCitGSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgorRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCitGSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMuZTJmc3Byb2dzICR7YmFzZV9zYmluZGlyfS9ta2ZzLmV4dCogJHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZiIKK0ZJTEVTX2UyZnNwcm9ncy10dW5lMmZzID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzLmUyZnNwcm9ncyAke2Jhc2Vfc2JpbmRpcn0vZTJsYWJlbCIKK0ZJTEVTX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiJHtiYXNlX3NiaW5kaXJ9L2JhZGJsb2NrcyIKK0ZJTEVTX2xpYmNvbWVyciA9ICIke2Jhc2VfbGliZGlyfS9saWJjb21fZXJyLnNvLioiCitGSUxFU19saWJzcyA9ICIke2Jhc2VfbGliZGlyfS9saWJzcy5zby4qIgorRklMRVNfbGliZTJwID0gIiR7YmFzZV9saWJkaXJ9L2xpYmUycC5zby4qIgorRklMRVNfbGliZXh0MmZzID0gIiR7bGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtiYXNlX2xpYmRpcn0vbGliZXh0MmZzLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vKi8qLmF3ayAke2RhdGFkaXJ9LyovKi5zZWQgJHtiYXNlX2xpYmRpcn0vKi5zbyAke2JpbmRpcn0vY29tcGlsZV9ldCAke2JpbmRpcn0vbWtfY21kcyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiY2hhdHRyIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyIgorQUxURVJOQVRJVkVfVEFSR0VUW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImZzY2suOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmc2NrLjhdID0gIiR7bWFuZGlyfS9tYW44L2ZzY2suOCIKKworQUxURVJOQVRJVkVfJHtQTn0tbWtlMmZzID0gIm1rZTJmcyBta2ZzLmV4dDIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWtlMmZzXSA9ICIke2Jhc2Vfc2JpbmRpcn0vbWtlMmZzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW21rZnMuZXh0Ml0gPSAiJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0MiIKKworQUxURVJOQVRJVkVfJHtQTn0tdHVuZTJmcyA9ICJ0dW5lMmZzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3R1bmUyZnNdID0gIiR7YmFzZV9zYmluZGlyfS90dW5lMmZzIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0gJHtQTn0tdHVuZTJmcyBjb3JldXRpbHMgcHJvY3BzIGJhc2ggYnppcDIgZGlmZnV0aWxzIHBlcmwiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlzZWQgLWUgJ3MhLi4vZTJmc2NrL2UyZnNjayFlMmZzY2shZycgXAorCSAgICAtZSAncyEuLi9taXNjL3R1bmUyZnMhdHVuZTJmcyFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgorCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrISR7YmFzZV9zYmluZGlyfS9lMmZzY2shZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8qL3NjcmlwdAorCisJIyBSZW1vdmUgdmFyaW91cyBmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtdHlwZSBmIFwKKwkgICAgXCggLW5hbWUgJ01ha2VmaWxlJyAtbyAtbmFtZSAnTWFrZWZpbGUuaW4nIC1vIC1uYW1lICcqLm8nIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAorCSAgICAtZXhlYyAgcm0gLWYge30gKworCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vbGliCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke0J9L2xpYi9jb25maWcuaCAgJHtEfSR7UFRFU1RfUEFUSH0vbGliLworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhYzIyZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi0jIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKLSMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC0wLjIuZGViaWFuLnRhci54egotU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjAzNTk5YWVlOThjOWI3MjZjN2E3MzJhMmRkMDI0NWQ1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmODQ0Nzc1NTc2Yjc5YmRjOWY5YzcxN2E1MDA1OGQwODYyMDMyM2MxZTkzNTQ1ODIyM2ExMmYyNDljOWUwNjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKLQotRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1iemxpYiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KLQkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCi0JZmkKLX0KLQotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotQUxMT1dfRU1QVFlfJHtQTn1fbGliYy1tdXNsID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5Ci1QQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKLUZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKLSAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKLSAgICAke2JpbmRpcn0vZXUtbGQgXAotICAgICR7YmluZGlyfS9ldS1ubSBcCi0gICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAotICAgICR7YmluZGlyfS9ldS1zaXplIFwKLSAgICAke2JpbmRpcn0vZXUtc3RyaXAiCi0KLUZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKLUZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKLUZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCi0jIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQotIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCi0jRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCi0jRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCi0KLSMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMDI2NWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3NC5iYgpAQCAtMCwwICsxLDc3IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICIoR1BMdjMgJiBFbGZ1dGlscy1FeGNlcHRpb24pIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitERVBFTkRTID0gImxpYnRvb2wgYnppcDIgemxpYiB2aXJ0dWFsL2xpYmludGwiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgIgorIyBUaGUgRGViaWFuIHBhdGNoZXMgYmVsb3cgYXJlIGZyb206CisjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9mdHAvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmR3ZmwtU2FuaXR5LWNoZWNrLXBhcnRpYWwtY29yZS1maWxlLWRhdGEtcmVhZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zaXplLUhhbmRsZS1yZWN1cnNpdmUtRUxGLWFyLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJsaWItQ2hlY2stdGhhdC1zaF9lbnRzaXplLWlzbi10LXplcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtaHBwYV9iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLWFybV9iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLW1pcHNfYmFja2VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS10ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtbWlwc19yZWFkZWxmX3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAyLUFkZC1zdXBwb3J0LWZvci1taXBzNjQtYWJpcy1pbi1taXBzX3JldHZhbC5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1maXgtZ2NjNy1mdGJmcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1kaXNhYmxlX3dlcnJvci5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4YmVjMjRjMGM4YjJjMTY4MjAzMjY5NTZkZmY5Mzc4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZjI3ZTcwMDc2ZTEwYTI5NTM5ZDg5ZTM2NzEwMWQ1MTZiYzRhYTExYjBkNzc3N2ZlNTIxMzllM2ZjYWQwOGEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1iemxpYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KKwkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCisJZmkKK30KKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworQUxMT1dfRU1QVFlfJHtQTn1fbGliYy1tdXNsID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKK0ZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKKyAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKKyAgICAke2JpbmRpcn0vZXUtbGQgXAorICAgICR7YmluZGlyfS9ldS1ubSBcCisgICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAorICAgICR7YmluZGlyfS9ldS1zaXplIFwKKyAgICAke2JpbmRpcn0vZXUtc3RyaXAiCisKK0ZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKK0ZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKK0ZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCisjIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQorIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCisjRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCisjRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCisKKyMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLUVuc3VyZS10aGF0LXBhY2tlZC1zdHJ1Y3RzLWZvbGxvdy10aGUtZ2NjLW1lbW9yeS1sYXkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNGQxZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1FbnN1cmUtdGhhdC1wYWNrZWQtc3RydWN0cy1mb2xsb3ctdGhlLWdjYy1tZW1vcnktbGF5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA3MzI5MTNhOGMzNWM3YjI1YzBjYmY2OTAzY2FiMWFkNmI2MDJiNTI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjIgTWFyIDIwMTggMjI6NDQ6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRW5zdXJlIHRoYXQgcGFja2VkIHN0cnVjdHMgZm9sbG93IHRoZSBnY2MgbWVtb3J5IGxheW91dAotCi1QYXJ0aWFsIGJhY2twb3J0IG9mCi1odHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD0xN2Q3MTk0ZDI5MWJmOTFkMTMwYjc4ZTA2Y2JlMjdiMjkwZTAzNzZkCi0KLUhlbHBzIGZpeGluZyBhbGlnbm1lbnQgZXJyb3JzIGUuZy4KLWxpbnV4LWNvcmUtbm90ZS5jOjExNjoxOiBlcnJvcjogYWxpZ25tZW50IDIgb2YgJ3N0cnVjdCBtNjhrX3Byc3RhdHVzCi0nIGlzIGxlc3MgdGhhbiA0IFstV2Vycm9yPXBhY2tlZC1ub3QtYWxpZ25lZF0KLSA7Ci0gXgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD0xN2Q3MTk0ZDI5MWJmOTFkMTMwYjc4ZTA2Y2JlMjdiMjkwZTAzNzZkXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYyBiL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCi1pbmRleCA1ZjA2Yzg5Ni4uOWZhYWU0YzMgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYwotKysrIGIvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMKLUBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IEVCTEhPT0socHJzdGF0dXMpCi0gICBGSUVMRCAoSU5ULCBwcl9mcHZhbGlkKTsKLSB9Ci0gI2lmZGVmIEFMSUdOX1BSU1RBVFVTCi0tICBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVkIChBTElHTl9QUlNUQVRVUykpKQotKyAgYXR0cmlidXRlX3BhY2tlZCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoQUxJR05fUFJTVEFUVVMpKSkKLSAjZW5kaWYKLSA7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLVVzZS1mYWxsdGhyb3VnaC1hdHRyaWJ1dGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMjE1NWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1Vc2UtZmFsbHRocm91Z2gtYXR0cmlidXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkxICswLDAgQEAKLUZyb20gNWNiODgzZjY3ZDAwYTYzNTMxZWYxOTVjMjQyNzYzZDM2YjE5MDVjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvc2h1YSBXYXR0IDxKb3NodWEuV2F0dEBnYXJtaW4uY29tPgotRGF0ZTogRnJpLCA5IEZlYiAyMDE4IDEyOjQ2OjM4IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBmYWxsdGhyb3VnaCBhdHRyaWJ1dGUKLQotVXNlIF9fYXR0cmlidXRlX18gKChmYWxsdGhyb3VnaCkpIHRvIGluZGljYXRlIHN3aXRjaCBjYXNlIGZhbGwgdGhyb3VnaAotaW5zdGVhZCBvZiBhIGNvbW1lbnQuIFRoaXMgZW5zdXJlIHRoYXQgdGhlIGZhbGx0aHJvdWdoIHdhcm5pbmcgaXMgbm90Ci10cmlnZ2VyZWQgZXZlbiBpZiB0aGUgZmlsZSBpcyBwcmUtcHJvY2Vzc2VkIChoZW5jZSBzdHJpcHBpbmcgdGhlCi1jb21tZW50cykgYmVmb3JlIGl0IGlzIGNvbXBpbGVkLgotCi1UaGUgYWN0dWFsIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGhpZGRlbiBiZWhpbmQgYSBGQUxMQkFDSyBtYWNybyBpbgotY2FzZSB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IGl0LgotCi1GaW5hbGx5LCB0aGUgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIHdhcm5pbmcgd2FzIHVwZ3JhZGVkIHRvIG9ubHkgYWxsb3cKLXRoZSBhdHRyaWJ1dGUgdG8gc2F0aXNmeSBpdDsgYSBjb21tZW50IGFsb25lIGlzIG5vIGxvbmdlciBzdWZmaWNpZW50LgotCi1TaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsxXQotCi1bMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9lbGZ1dGlscy1kZXZlbC8yMDE4LXExL21zZzAwMDI3Lmh0bWwKLS0tLQotIGJhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgICAgfCAyICstCi0gYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgICAgICB8IDQgKystLQotIGJhY2tlbmRzL2FybV9yZWdzLmMgICAgICAgICAgfCAyICstCi0gYmFja2VuZHMvYXJtX3JldHZhbC5jICAgICAgICB8IDIgKy0KLSBiYWNrZW5kcy9pMzg2X3JlZ3MuYyAgICAgICAgIHwgMiArLQotIGJhY2tlbmRzL2kzODZfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KLSBiYWNrZW5kcy9pYTY0X3JldHZhbC5jICAgICAgIHwgMiArLQotIGJhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jICAgfCAyICstCi0gYmFja2VuZHMvbTY4a19yZXR2YWwuYyAgICAgICB8IDQgKystLQotIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KLSBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgICAgIHwgNSArKystLQotIGJhY2tlbmRzL3BwYzY0X3JldHZhbC5jICAgICAgfCA2ICsrKy0tLQotIGJhY2tlbmRzL3BwY19yZWdzLmMgICAgICAgICAgfCAyICstCi0gYmFja2VuZHMvcHBjX3JldHZhbC5jICAgICAgICB8IDQgKystLQotIGJhY2tlbmRzL3MzOTBfcmV0dmFsLmMgICAgICAgfCA0ICsrLS0KLSBiYWNrZW5kcy9zaF9yZXR2YWwuYyAgICAgICAgIHwgMiArLQotIGJhY2tlbmRzL3NwYXJjX3JldHZhbC5jICAgICAgfCAyICstCi0gYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jICAgICB8IDQgKystLQotIGJhY2tlbmRzL3g4Nl82NF9yZWdzLmMgICAgICAgfCAyICstCi0gYmFja2VuZHMveDg2XzY0X3JldHZhbC5jICAgICB8IDIgKy0KLSBjb25maWcvZXUuYW0gICAgICAgICAgICAgICAgIHwgNCArKystCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDYgKysrKysrCi0gbGliL2V1LWNvbmZpZy5oICAgICAgICAgICAgICB8IDcgKysrKysrKwotIGxpYmNwdS9pMzg2X2Rpc2FzbS5jICAgICAgICAgfCAyICstCi0gbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICB8IDQgKystLQotIGxpYmR3L2NmaS5jICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBsaWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jIHwgMiArLQotIGxpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgICAgfCAyICstCi0gbGliZHdmbC9mcmFtZV91bndpbmQuYyAgICAgICB8IDIgKy0KLSBsaWJlYmwvZWJsb2Jqbm90ZS5jICAgICAgICAgIHwgMiArLQotIGxpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgICAgfCAyICstCi0gbGliZWxmL2VsZl9iZWdpbi5jICAgICAgICAgICB8IDQgKystLQotIGxpYmVsZi9lbGZfY250bC5jICAgICAgICAgICAgfCAyICstCi0gc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICB8IDIgKy0KLSBzcmMvZWxmY29tcHJlc3MuYyAgICAgICAgICAgIHwgMiArLQotIHNyYy9lbGZsaW50LmMgICAgICAgICAgICAgICAgfCA4ICsrKystLS0tCi0gc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICB8IDIgKy0KLSBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgIHwgOCArKysrLS0tLQotIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgfCAyICstCi0gdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9lbGZzdHJtZXJnZS5jICAgICAgICAgIHwgMyArKy0KLSA0MSBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FhcmNoNjRfcmV0dmFsLmMgYi9iYWNrZW5kcy9hYXJjaDY0X3JldHZhbC5jCi1pbmRleCA2OGRlMzA3Li4xMzA4MzQwIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvYWFyY2g2NF9yZXR2YWwuYwotQEAgLTI5Miw3ICsyOTIsNyBAQCBhYXJjaDY0X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIGFzc2VydCAoY291bnQgPiAwKTsKLSAJICBpZiAoY291bnQgPD0gNCkKLSAJICAgIHJldHVybiBwYXNzX2hmYSAobG9jcCwgYmFzZV9zaXplLCBjb3VudCk7Ci0tCSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsJICBGQUxMVEhST1VHSDsKLSAKLSAJY2FzZSAxOgotIAkgIC8qIE5vdCBhIEhGQS4gICovCi1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvYWxwaGFfcmV0dmFsLmMgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYwotaW5kZXggNTNkYmZhNC4uZDliYWUzYiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2FscGhhX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9hbHBoYV9yZXR2YWwuYwotQEAgLTg1LDcgKzg1LDcgQEAgYWxwaGFfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1AQCAtMTMxLDcgKzEzMSw3IEBAIGFscGhhX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIH0KLSAgICAgICB9Ci0gCi0tICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1fcmVncy5jIGIvYmFja2VuZHMvYXJtX3JlZ3MuYwotaW5kZXggNGVlMTAzOS4uNDE4YzkzMSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2FybV9yZWdzLmMKLSsrKyBiL2JhY2tlbmRzL2FybV9yZWdzLmMKLUBAIC04MSw3ICs4MSw3IEBAIGFybV9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gICAgICAgICogYnV0IGdjYyBtYXBzIEZQQSByZWdpc3RlcnMgaGVyZQotICAgICAgICAqLwotICAgICAgIHJlZ25vICs9IDk2IC0gMTY7Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSA5NiArIDAgLi4uIDk2ICsgNzoKLSAgICAgICAqc2V0bmFtZSA9ICJGUEEiOwotICAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYyBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYwotaW5kZXggODY4N2VhYi4uMzEzZTRlYiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCi1AQCAtOTAsNyArOTAsNyBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLAotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2kzODZfcmVncy5jIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKLWluZGV4IGZkOTYzYTYuLjdlYzkzYmIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9pMzg2X3JlZ3MuYwotKysrIGIvYmFja2VuZHMvaTM4Nl9yZWdzLmMKLUBAIC05Miw3ICs5Miw3IEBAIGkzODZfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotICAgICBjYXNlIDU6Ci0gICAgIGNhc2UgODoKLSAgICAgICAqdHlwZSA9IERXX0FURV9hZGRyZXNzOwotLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgMCAuLi4gMzoKLSAgICAgY2FzZSA2IC4uLiA3OgotICAgICAgIG5hbWVbMF0gPSAnZSc7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvaTM4Nl9yZXR2YWwuYyBiL2JhY2tlbmRzL2kzODZfcmV0dmFsLmMKLWluZGV4IDRhYTY0NmYuLjMyZmVjNzIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9pMzg2X3JldHZhbC5jCi1AQCAtODUsNyArODUsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IERXQVJGX1RBR19PUl9SRVRVUk4gKHR5cGVkaWUpOwotIAl9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotICAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotQEAgLTEyMyw3ICsxMjMsNyBAQCBpMzg2X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAlpZiAoc2l6ZSA8PSA4KQotIAkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0gICAgICAgfQotLSAgICAvKiBGYWxsdGhyb3VnaCAqLwotKyAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvaWE2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL2lhNjRfcmV0dmFsLmMKLWluZGV4IGRjZDVmMjguLjAzZWE0ZDggMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9pYTY0X3JldHZhbC5jCi1AQCAtMjYwLDcgKzI2MCw3IEBAIGlhNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGludXgtY29yZS1ub3RlLmMgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYwotaW5kZXggNjc2MzhkNy4uNWYwNmM4OSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL2xpbnV4LWNvcmUtbm90ZS5jCi0rKysgYi9iYWNrZW5kcy9saW51eC1jb3JlLW5vdGUuYwotQEAgLTIyNiw3ICsyMjYsNyBAQCBFQkxIT09LKGNvcmVfbm90ZSkgKGNvbnN0IEdFbGZfTmhkciAqbmhkciwgY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICBpZiAobWVtY21wIChuYW1lLCAiQ09SRSIsIG5oZHItPm5fbmFtZXN6KSA9PSAwKQotIAlicmVhazsKLSAgICAgICAvKiBCdWdneSBvbGQgTGludXgga2VybmVscyBkaWRuJ3QgdGVybWluYXRlICJMSU5VWCIuICAqLwotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBzaXplb2YgIkxJTlVYIjoKLSAgICAgICBpZiAobWVtY21wIChuYW1lLCAiTElOVVgiLCBuaGRyLT5uX25hbWVzeikgPT0gMCkKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9tNjhrX3JldHZhbC5jIGIvYmFja2VuZHMvbTY4a19yZXR2YWwuYwotaW5kZXggYzY4ZWQwMi4uYTY1M2JhMyAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL202OGtfcmV0dmFsLmMKLUBAIC05Miw3ICs5Miw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1AQCAtMTM1LDcgKzEzNSw3IEBAIG02OGtfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCWlmIChzaXplIDw9IDgpCi0gCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSAgICAgICB9Ci0tICAgICAgLyogRmFsbHRocm91Z2ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZXR2YWwuYyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLWluZGV4IDU3NDg3YmIuLmM2ZTFmZmUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi1AQCAtMzA2LDcgKzMwNiw3IEBAIG1pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0zODksNyArMzg5LDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gCi0tICAgICAgLyogRmFsbHRocm91Z2ggdG8gaGFuZGxlIGxhcmdlIHR5cGVzICovCi0rICAgICAgRkFMTFRIUk9VR0g7IC8qIEZhbGx0aHJvdWdoIHRvIGhhbmRsZSBsYXJnZSB0eXBlcyAqLwotIAotICAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgotICAgICBsYXJnZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLWluZGV4IGRmN2VjM2EuLjFmMWU5MWEgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYwotQEAgLTExNiw3ICsxMTYsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgotIAkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotIAkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1AQCAtMTY3LDYgKzE2Nyw3IEBAIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGluCi0gCi0gCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KLSAgICAgICB9Ci0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgotICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgotQEAgLTE4OSw3ICsxOTAsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgotICAgICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOwotICAgICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOwotICNlbmRpZgotLQkvKiBmYWxsIHRocm91Z2guICAqLwotKwlGQUxMVEhST1VHSDsKLSAgICAgICB9Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGM2NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCi1pbmRleCBhMjUxOTgzLi5lYjFjMTFlIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvcHBjNjRfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3BwYzY0X3JldHZhbC5jCi1AQCAtOTYsNyArOTYsNyBAQCBwcGM2NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xNDEsNyArMTQxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgcmV0dXJuIG5sb2NfaW50cmVnOwotIAl9Ci0gCi0tICAgICAgLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKLUBAIC0xNjEsNyArMTYxLDcgQEAgcHBjNjRfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgICByZXR1cm4gbmxvY192bXhyZWc7Ci0gCSAgfQotICAgICAgIH0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19zdHJpbmdfdHlwZToKLSAgICAgICBpZiAoZHdhcmZfYWdncmVnYXRlX3NpemUgKHR5cGVkaWUsICZzaXplKSA9PSAwICYmIHNpemUgPD0gOCkKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGNfcmVncy5jIGIvYmFja2VuZHMvcHBjX3JlZ3MuYwotaW5kZXggYzJkNTAxMS4uNDNkMjUzNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3BwY19yZWdzLmMKLSsrKyBiL2JhY2tlbmRzL3BwY19yZWdzLmMKLUBAIC0xNDAsNyArMTQwLDcgQEAgcHBjX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAgICAgY2FzZSAxMDA6Ci0gICAgICAgaWYgKCpiaXRzID09IDMyKQotIAlyZXR1cm4gc3RwY3B5IChuYW1lLCAibXEiKSArIDEgLSBuYW1lOwotLSAgICAgIC8qIEZhbGx0aHJvdWdoICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgMTAyIC4uLiAxMDc6Ci0gICAgICAgbmFtZVswXSA9ICdzJzsKLSAgICAgICBuYW1lWzFdID0gJ3AnOwotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYyBiL2JhY2tlbmRzL3BwY19yZXR2YWwuYwotaW5kZXggYjE0YTk5Zi4uMzliNDJkYSAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3BwY19yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvcHBjX3JldHZhbC5jCi1AQCAtMTA4LDcgKzEwOCw3IEBAIHBwY19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xNzIsNyArMTcyLDcgQEAgcHBjX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgICAgICByZXR1cm4gbmxvY19pbnRyZWdxdWFkOwotIAkgICAgfQotICAgICAgIH0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9zMzkwX3JldHZhbC5jIGIvYmFja2VuZHMvczM5MF9yZXR2YWwuYwotaW5kZXggYTkyN2Q0Ni4uMjA0M2Y5OCAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKLSsrKyBiL2JhY2tlbmRzL3MzOTBfcmV0dmFsLmMKLUBAIC04Nyw3ICs4Nyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1AQCAtMTI3LDcgKzEyNyw3IEBAIHMzOTBfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgICByZXR1cm4gc2l6ZSA8PSBhc2l6ZSA/IG5sb2NfaW50cmVnIDogbmxvY19pbnRyZWdwYWlyOwotIAkgIH0KLSAgICAgICB9Ci0tICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvc2hfcmV0dmFsLmMgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYwotaW5kZXggZDQ0ZjI2MC4uMzNkN2Q5NiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3NoX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9zaF9yZXR2YWwuYwotQEAgLTg0LDcgKzg0LDcgQEAgc2hfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvc3BhcmNfcmV0dmFsLmMgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYwotaW5kZXggZTFiMTc3NS4uZmI4MWNkYyAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3NwYXJjX3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy9zcGFyY19yZXR2YWwuYwotQEAgLTkxLDcgKzkxLDcgQEAgc3BhcmNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0gCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0gCSAgdGFnID0gRFdBUkZfVEFHX09SX1JFVFVSTiAodHlwZWRpZSk7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotIAotICAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jIGIvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCi1pbmRleCBkYjgxYTIwLi43ZjdkMjRiIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvdGlsZWd4X3JldHZhbC5jCi0rKysgYi9iYWNrZW5kcy90aWxlZ3hfcmV0dmFsLmMKLUBAIC03OSw3ICs3OSw3IEBAIHRpbGVneF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLUBAIC0xMTMsNyArMTEzLDcgQEAgdGlsZWd4X3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotIAkgIHJldHVybiBubG9jX2ludHJlZzsKLSAJfQotIAotLSAgICAgIC8qIEVsc2UgZmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMveDg2XzY0X3JlZ3MuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZWdzLmMKLWluZGV4IDg0MzA0NDAuLmVmOTg3ZGEgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy94ODZfNjRfcmVncy5jCi0rKysgYi9iYWNrZW5kcy94ODZfNjRfcmVncy5jCi1AQCAtODcsNyArODcsNyBAQCB4ODZfNjRfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotIAotICAgICBjYXNlIDYgLi4uIDc6Ci0gICAgICAgKnR5cGUgPSBEV19BVEVfYWRkcmVzczsKLS0gICAgICAvKiBGYWxsdGhyb3VnaCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlIDAgLi4uIDU6Ci0gICAgICAgbmFtZVswXSA9ICdyJzsKLSAgICAgICBuYW1lWzFdID0gYmFzZXJlZ3NbcmVnbm9dWzBdOwotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYyBiL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYwotaW5kZXggYjM3OTlhZS4uZjkxMTRjYiAxMDA2NDQKLS0tLSBhL2JhY2tlbmRzL3g4Nl82NF9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMveDg2XzY0X3JldHZhbC5jCi1AQCAtMTAwLDcgKzEwMCw3IEBAIHg4Nl82NF9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSAJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSAJICB0YWcgPSBEV0FSRl9UQUdfT1JfUkVUVVJOICh0eXBlZGllKTsKLSAJfQotLSAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLWRpZmYgLS1naXQgYS9jb25maWcvZXUuYW0gYi9jb25maWcvZXUuYW0KLWluZGV4IDhmZTFlMjUuLmI2ZWM1ODEgMTAwNjQ0Ci0tLS0gYS9jb25maWcvZXUuYW0KLSsrKyBiL2NvbmZpZy9ldS5hbQotQEAgLTYyLDcgKzYyLDkgQEAgTlVMTF9ERVJFRkVSRU5DRV9XQVJOSU5HPQotIGVuZGlmCi0gCi0gaWYgSEFWRV9JTVBMSUNJVF9GQUxMVEhST1VHSF9XQVJOSU5HCi0tSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORz0tV2ltcGxpY2l0LWZhbGx0aHJvdWdoCi0rIyBVc2Ugc3RyaWN0IGZhbGx0aHJvdWdoLiBPbmx5IF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgd2lsbCBwcmV2ZW50IHRoZQotKyMgd2FybmluZwotK0lNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9LVdpbXBsaWNpdC1mYWxsdGhyb3VnaD01Ci0gZWxzZQotIElNUExJQ0lUX0ZBTExUSFJPVUdIX1dBUk5JTkc9Ci0gZW5kaWYKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFmMTg1NmQuLjY5OGVmYmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM2MCw2ICszNjAsMTIgQEAgQ0ZMQUdTPSIkb2xkX0NGTEFHUyJdKQotIEFNX0NPTkRJVElPTkFMKEhBVkVfSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORywKLSAJICAgICAgIFt0ZXN0ICJ4JGFjX2N2X2ltcGxpY2l0X2ZhbGx0aHJvdWdoIiAhPSAieG5vIl0pCi0gCi0rIyBBc3N1bWUgdGhlIGZhbGx0aHJvdWdoIGF0dHJpYnV0ZSBpcyBzdXBwb3J0ZWQgaWYgLVdpbXBsaWN0LWZhbGx0aHJvdWdoIGlzIHN1cHBvcnRlZAotK2lmIHRlc3QgIiRhY19jdl9pbXBsaWNpdF9mYWxsdGhyb3VnaCIgPSAieWVzIjsgdGhlbgotKwlBQ19ERUZJTkUoW0hBVkVfRkFMTFRIUk9VR0hdLCBbMV0sCi0rCQkgIFtEZWZpbmVkIGlmIF9fYXR0cmlidXRlX18oKGZhbGx0aHJvdWdoKSkgaXMgc3VwcG9ydGVkXSkKLStmaQotKwotIGRubCBDaGVjayBpZiB3ZSBoYXZlIGFyZ3AgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKLSBBQ19MSU5LX0lGRUxTRSgKLSAJW0FDX0xBTkdfUFJPR1JBTSgKLWRpZmYgLS1naXQgYS9saWIvZXUtY29uZmlnLmggYi9saWIvZXUtY29uZmlnLmgKLWluZGV4IDQwMGNkYzYuLmU4ZDRlYzIgMTAwNjQ0Ci0tLS0gYS9saWIvZXUtY29uZmlnLmgKLSsrKyBiL2xpYi9ldS1jb25maWcuaAotQEAgLTE4Niw1ICsxODYsMTIgQEAgYXNtICgiLnNlY3Rpb24gcHJlZGljdF9kYXRhLCBcImF3XCI7IC5wcmV2aW91c1xuIgotICMgZGVmaW5lIENPTVBBVF9WRVJTSU9OKG5hbWUsIHZlcnNpb24sIHByZWZpeCkgZXJyb3IgInNob3VsZCB1c2UgI2lmZGVmIFNZTUJPTF9WRVJTSU9OSU5HIgotICNlbmRpZgotIAotKyNpZm5kZWYgRkFMTFRIUk9VR0gKLSsjIGlmZGVmIEhBVkVfRkFMTFRIUk9VR0gKLSsjICBkZWZpbmUgRkFMTFRIUk9VR0ggX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSkKLSsjIGVsc2UKLSsjICBkZWZpbmUgRkFMTFRIUk9VR0ggKCh2b2lkKSAwKQotKyMgZW5kaWYKLSsjZW5kaWYKLSAKLSAjZW5kaWYJLyogZXUtY29uZmlnLmggKi8KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1pbmRleCA2MGZkNmQ0Li44MzdhM2E4IDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfZGlzYXNtLmMKLSsrKyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1AQCAtODE5LDcgKzgxOSw3IEBAIGkzODZfZGlzYXNtIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLSAJCQkgICAgICArK3BhcmFtX3N0YXJ0OwotIAkJCSAgICAgIGJyZWFrOwotIAkJCSAgICB9Ci0tCQkJICAvKiBGYWxsdGhyb3VnaCAqLwotKwkJCSAgRkFMTFRIUk9VR0g7Ci0gCQkJZGVmYXVsdDoKLSAJCQkgIHN0ciA9ICIiOwotIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7Ci1kaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKLWluZGV4IGVmMWFjMzUuLjZmYTdjZTMgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCi0rKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1AQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgeXl0bmFtZXJyIChjaGFyICp5eXJlcywgY29uc3QgY2hhciAqeXlzdHIpCi0gICAgICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgICAgICBpZiAoKisreXlwICE9ICdcXCcpCi0gICAgICAgICAgICAgICBnb3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7Ci0tICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICAgICAgICBGQUxMVEhST1VHSDsKLSAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICBpZiAoeXlyZXMpCi0gICAgICAgICAgICAgICB5eXJlc1t5eW5dID0gKnl5cDsKLUBAIC0yMDQyLDcgKzIwNDIsNyBAQCB5eWFib3J0bGFiOgotIHl5ZXhoYXVzdGVkbGFiOgotICAgeXllcnJvciAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIikpOwotICAgeXlyZXN1bHQgPSAyOwotLSAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsgIEZBTExUSFJPVUdIOwotICNlbmRpZgotIAotIHl5cmV0dXJuOgotZGlmZiAtLWdpdCBhL2xpYmR3L2NmaS5jIGIvbGliZHcvY2ZpLmMKLWluZGV4IGRhYTg0NWYuLjM0MWUwNTUgMTAwNjQ0Ci0tLS0gYS9saWJkdy9jZmkuYwotKysrIGIvbGliZHcvY2ZpLmMKLUBAIC0xMzgsNyArMTM4LDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCi0gCi0gCWNhc2UgRFdfQ0ZBX2FkdmFuY2VfbG9jMToKLSAJICBvcGVyYW5kID0gKnByb2dyYW0rKzsKLS0JICAvKiBGYWxsdGhyb3VnaCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAljYXNlIERXX0NGQV9hZHZhbmNlX2xvYyArIDAgLi4uIERXX0NGQV9hZHZhbmNlX2xvYyArIENGSV9QUklNQVJZX01BWDoKLSAJYWR2YW5jZV9sb2M6Ci0gCSAgbG9jICs9IG9wZXJhbmQgKiBjaWUtPmNvZGVfYWxpZ25tZW50X2ZhY3RvcjsKLUBAIC0zMDEsNyArMzAxLDcgQEAgZXhlY3V0ZV9jZmkgKER3YXJmX0NGSSAqY2FjaGUsCi0gCi0gCWNhc2UgRFdfQ0ZBX3Jlc3RvcmVfZXh0ZW5kZWQ6Ci0gCSAgZ2V0X3VsZWIxMjggKG9wZXJhbmQsIHByb2dyYW0sIGVuZCk7Ci0tCSAgLyogRmFsbHRocm91Z2ggKi8KLSsJICBGQUxMVEhST1VHSDsKLSAJY2FzZSBEV19DRkFfcmVzdG9yZSArIDAgLi4uIERXX0NGQV9yZXN0b3JlICsgQ0ZJX1BSSU1BUllfTUFYOgotIAotIAkgIGlmICh1bmxpa2VseSAoYWJpX2NmaSkgJiYgbGlrZWx5IChvcGNvZGUgPT0gRFdfQ0ZBX3Jlc3RvcmUpKQotZGlmZiAtLWdpdCBhL2xpYmR3L2R3YXJmX2ZyYW1lX3JlZ2lzdGVyLmMgYi9saWJkdy9kd2FyZl9mcmFtZV9yZWdpc3Rlci5jCi1pbmRleCAzN2U4ZTkxLi5kMDE1OWZiIDEwMDY0NAotLS0tIGEvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYwotKysrIGIvbGliZHcvZHdhcmZfZnJhbWVfcmVnaXN0ZXIuYwotQEAgLTYyLDcgKzYyLDcgQEAgZHdhcmZfZnJhbWVfcmVnaXN0ZXIgKER3YXJmX0ZyYW1lICpmcywgaW50IHJlZ25vLCBEd2FyZl9PcCAqb3BzX21lbSwKLSAgICAgICAvKiBVc2UgdGhlIGRlZmF1bHQgcnVsZSBmb3IgcmVnaXN0ZXJzIG5vdCB5ZXQgbWVudGlvbmVkIGluIENGSS4gICovCi0gICAgICAgaWYgKGZzLT5jYWNoZS0+ZGVmYXVsdF9zYW1lX3ZhbHVlKQotIAlnb3RvIHNhbWVfdmFsdWU7Ci0tICAgICAgLypGQUxMVEhST1VHSCovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgcmVnX3VuZGVmaW5lZDoKLSAgICAgICAvKiBUaGUgdmFsdWUgaXMga25vd24gdG8gYmUgdW5hdmFpbGFibGUuICAqLwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9yZXBvcnRfZWxmLmMgYi9saWJkd2ZsL2R3ZmxfcmVwb3J0X2VsZi5jCi1pbmRleCA2OTUwYTM3Li4zZmM5Mzg0IDEwMDY0NAotLS0tIGEvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYwotKysrIGIvbGliZHdmbC9kd2ZsX3JlcG9ydF9lbGYuYwotQEAgLTE3NCw3ICsxNzQsNyBAQCBfX2xpYmR3ZmxfZWxmX2FkZHJlc3NfcmFuZ2UgKEVsZiAqZWxmLCBHRWxmX0FkZHIgYmFzZSwgYm9vbCBhZGRfcF92YWRkciwKLSAgICAgICAvKiBBbiBhc3NpZ25lZCBiYXNlIGFkZHJlc3MgaXMgbWVhbmluZ2xlc3MgZm9yIHRoZXNlLiAgKi8KLSAgICAgICBiYXNlID0gMDsKLSAgICAgICBhZGRfcF92YWRkciA9IHRydWU7Ci0tICAgICAgLyogRmFsbHRocm91Z2guICovCi0rICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgIGNhc2UgRVRfRFlOOgotICAgICBkZWZhdWx0OjsKLSAgICAgICBzaXplX3QgcGhudW07Ci1kaWZmIC0tZ2l0IGEvbGliZHdmbC9mcmFtZV91bndpbmQuYyBiL2xpYmR3ZmwvZnJhbWVfdW53aW5kLmMKLWluZGV4IDRkYzljNDMuLmVhZWE0OTUgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCi0rKysgYi9saWJkd2ZsL2ZyYW1lX3Vud2luZC5jCi1AQCAtNDQyLDcgKzQ0Miw3IEBAIGV4cHJfZXZhbCAoRHdmbF9GcmFtZSAqc3RhdGUsIER3YXJmX0ZyYW1lICpmcmFtZSwgY29uc3QgRHdhcmZfT3AgKm9wcywKLSAJICAgIH0KLSAJICBpZiAodmFsMSA9PSAwKQotIAkgICAgYnJlYWs7Ci0tCSAgLyogRkFMTFRIUlUgKi8KLSsJICBGQUxMVEhST1VHSDsKLSAJY2FzZSBEV19PUF9za2lwOjsKLSAJICBEd2FyZl9Xb3JkIG9mZnNldCA9IG9wLT5vZmZzZXQgKyAxICsgMiArIChpbnQxNl90KSBvcC0+bnVtYmVyOwotIAkgIGNvbnN0IER3YXJmX09wICpmb3VuZCA9IGJzZWFyY2ggKCh2b2lkICopICh1aW50cHRyX3QpIG9mZnNldCwgb3BzLCBub3BzLAotZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvYmpub3RlLmMgYi9saWJlYmwvZWJsb2Jqbm90ZS5jCi1pbmRleCBmODBhMWE1Li5jYTRmMTU1IDEwMDY0NAotLS0tIGEvbGliZWJsL2VibG9iam5vdGUuYwotKysrIGIvbGliZWJsL2VibG9iam5vdGUuYwotQEAgLTIyMyw3ICsyMjMsNyBAQCBlYmxfb2JqZWN0X25vdGUgKEVibCAqZWJsLCBjb25zdCBjaGFyICpuYW1lLCB1aW50MzJfdCB0eXBlLAotIAkJZnJlZSAoYnVmKTsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICB9Ci0tCSAgLyogRkFMTFRIUk9VR0ggKi8KLSsJICBGQUxMVEhST1VHSDsKLSAKLSAJZGVmYXVsdDoKLSAJICAvKiBVbmtub3duIHR5cGUuICAqLwotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi1pbmRleCBhNTFiZjcwLi41MzUxNTE4IDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwotKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwotQEAgLTIzMiw3ICsyMzIsNyBAQCBfX2VsZncyKExJQkVMRkJJVFMsdXBkYXRlbnVsbF93cmxvY2spIChFbGYgKmVsZiwgaW50ICpjaGFuZ2VfYm9wLCBzaXplX3Qgc2hudW0pCi0gCQkgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfR1JPVVBfTk9UX1JFTCk7Ci0gCQkgICAgICByZXR1cm4gLTE7Ci0gCQkgICAgfQotLQkJICAvKiBGQUxMVEhST1VHSCAqLwotKwkJICBGQUxMVEhST1VHSDsKLSAJCWNhc2UgU0hUX1NZTVRBQl9TSE5EWDoKLSAJCSAgc2hfZW50c2l6ZSA9IGVsZl90eXBlc2l6ZSAoMzIsIEVMRl9UX1dPUkQsIDEpOwotIAkJICBicmVhazsKLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmX2JlZ2luLmMgYi9saWJlbGYvZWxmX2JlZ2luLmMKLWluZGV4IDZmODUwMzguLjZkZTIwNmEgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmX2JlZ2luLmMKLSsrKyBiL2xpYmVsZi9lbGZfYmVnaW4uYwotQEAgLTU4Miw3ICs1ODIsNyBAQCByZWFkX3VubW1hcGVkX2ZpbGUgKGludCBmaWxkZXMsIG9mZl90IG9mZnNldCwgc2l6ZV90IG1heHNpemUsIEVsZl9DbWQgY21kLAotIAkJCSAgICAgPyBzaXplb2YgKEVsZjMyX0VoZHIpIDogc2l6ZW9mIChFbGY2NF9FaGRyKSkpCi0gCXJldHVybiBmaWxlX3JlYWRfZWxmIChmaWxkZXMsIE5VTEwsIG1lbS5oZWFkZXIsIG9mZnNldCwgbWF4c2l6ZSwgY21kLAotIAkJCSAgICAgIHBhcmVudCk7Ci0tICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgZGVmYXVsdDoKLSAgICAgICBicmVhazsKLUBAIC0xMDk3LDcgKzEwOTcsNyBAQCBlbGZfYmVnaW4gKGludCBmaWxkZXMsIEVsZl9DbWQgY21kLCBFbGYgKnJlZikKLSAJICByZXR2YWwgPSBOVUxMOwotIAkgIGJyZWFrOwotIAl9Ci0tICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBFTEZfQ19SRUFEOgotICAgICBjYXNlIEVMRl9DX1JFQURfTU1BUDoKLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmX2NudGwuYyBiL2xpYmVsZi9lbGZfY250bC5jCi1pbmRleCBhYjEzZmZiLi5mZDY4MTc4IDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZl9jbnRsLmMKLSsrKyBiL2xpYmVsZi9lbGZfY250bC5jCi1AQCAtNjIsNyArNjIsNyBAQCBlbGZfY250bCAoRWxmICplbGYsIEVsZl9DbWQgY21kKQotIAkgIHJlc3VsdCA9IC0xOwotIAkgIGJyZWFrOwotIAl9Ci0tICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAKLSAgICAgY2FzZSBFTEZfQ19GRERPTkU6Ci0gICAgICAgLyogTWFyayB0aGUgZmlsZSBkZXNjcmlwdG9yIGFzIG5vdCB1c2FibGUuICAqLwotZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYwotaW5kZXggYmE0MTRhNy4uNDQ0ZWU1MiAxMDA2NDQKLS0tLSBhL3NyYy9hZGRyMmxpbmUuYwotKysrIGIvc3JjL2FkZHIybGluZS5jCi1AQCAtNjE4LDcgKzYxOCw3IEBAIGhhbmRsZV9hZGRyZXNzIChjb25zdCBjaGFyICpzdHJpbmcsIER3ZmwgKmR3ZmwpCi0gCWNhc2UgMToKLSAJICBhZGRyID0gMDsKLSAJICBqID0gaTsKLS0JICAvKiBGYWxsdGhyb3VnaCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAljYXNlIDI6Ci0gCSAgaWYgKHN0cmluZ1tqXSAhPSAnXDAnKQotIAkgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9zcmMvZWxmY29tcHJlc3MuYwotaW5kZXggOGUwZDVjNS4uMjUzNzhhNCAxMDA2NDQKLS0tLSBhL3NyYy9lbGZjb21wcmVzcy5jCi0rKysgYi9zcmMvZWxmY29tcHJlc3MuYwotQEAgLTE0OSw3ICsxNDksNyBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZyBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCQkgICAgTl8oIk9ubHkgb25lIGlucHV0IGZpbGUgYWxsb3dlZCB0b2dldGhlciB3aXRoICctbyciKSk7Ci0gICAgICAgLyogV2Ugb25seSB1c2UgdGhpcyBmb3IgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBhcmd1bWVudHMsIHdlIGRvbid0Ci0gCSBhY3R1YWxseSB3YW50IHRvIGNvbnN1bWUgdGhlbS4gICovCi0tICAgICAgLyogRmFsbHRocm91Z2ggKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gQVJHUF9FUlJfVU5LTk9XTjsKLSAgICAgfQotZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCi1pbmRleCA1MWU1M2MyLi5kZjFiM2EwIDEwMDY0NAotLS0tIGEvc3JjL2VsZmxpbnQuYwotKysrIGIvc3JjL2VsZmxpbnQuYwotQEAgLTE3NjQsNyArMTc2NCw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogZW50cnkgJXp1OiBwb2ludGVyIGRvZXMgbm90IG1hdGNoIGFkZHJlc3Mgb2Ygc2VjdGlvbiBbJTJkXSAnCi0gCSAgaWYgKGR5bi0+ZF90YWcgPCBEVF9BRERSUk5HTE8gfHwgZHluLT5kX3RhZyA+IERUX0FERFJSTkdISSkKLSAJICAgIC8qIFZhbHVlIGlzIG5vIHBvaW50ZXIuICAqLwotIAkgICAgYnJlYWs7Ci0tCSAgLyogRkFMTFRIUk9VR0ggKi8KLSsJICBGQUxMVEhST1VHSDsKLSAKLSAJY2FzZSBEVF9BVVhJTElBUlk6Ci0gCWNhc2UgRFRfRklMVEVSOgotQEAgLTM5OTMsNyArMzk5Myw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IG1lcmdlIGZsYWcgc2V0IGJ1dCBlbnRyeSBzaXplIGlzIHplcm9cbiIpLAotIAkgICAgY2FzZSBTSFRfTk9CSVRTOgotIAkgICAgICBpZiAoaXNfZGVidWdpbmZvKQotIAkJYnJlYWs7Ci0tCSAgICAgIC8qIEZhbGx0aHJvdWdoICovCi0rCSAgICAgIEZBTExUSFJPVUdIOwotIAkgICAgZGVmYXVsdDoKLSAJICAgICAgRVJST1IgKGdldHRleHQgKCJcCi0gc2VjdGlvbiBbJTJ6dV0gJyVzJyBoYXMgdW5leHBlY3RlZCB0eXBlICVkIGZvciBhbiBleGVjdXRhYmxlIHNlY3Rpb25cbiIpLAotQEAgLTQxMzcsNyArNDEzNyw3IEBAIHNlY3Rpb24gWyUyenVdICclcyc6IEVMRiBoZWFkZXIgc2F5cyB0aGlzIGlzIHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFibGUgYnV0Ci0gCSAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKLSBzZWN0aW9uIFslMnp1XSAnJXMnOiByZWxvY2F0YWJsZSBmaWxlcyBjYW5ub3QgaGF2ZSBkeW5hbWljIHN5bWJvbCB0YWJsZXNcbiIpLAotIAkJICAgY250LCBzZWN0aW9uX25hbWUgKGVibCwgY250KSk7Ci0tCSAgLyogRkFMTFRIUk9VR0ggKi8KLSsJICBGQUxMVEhST1VHSDsKLSAJY2FzZSBTSFRfU1lNVEFCOgotIAkgIGNoZWNrX3N5bXRhYiAoZWJsLCBlaGRyLCBzaGRyLCBjbnQpOwotIAkgIGJyZWFrOwotQEAgLTQzMzYsNyArNDMzNiw3IEBAIHNlY3Rpb24gWyUyZF0gJyVzJzogdW5rbm93biBjb3JlIGZpbGUgbm90ZSB0eXBlICUiIFBSSXUzMgotIAkgICAgaWYgKG5oZHIubl9uYW1lc3ogPT0gc2l6ZW9mICJMaW51eCIKLSAJCSYmICFtZW1jbXAgKGRhdGEtPmRfYnVmICsgbmFtZV9vZmZzZXQsICJMaW51eCIsIHNpemVvZiAiTGludXgiKSkKLSAJICAgICAgYnJlYWs7Ci0tCSAgICAvKiBGYWxsdGhyb3VnaCAqLwotKwkgICAgRkFMTFRIUk9VR0g7Ci0gCSAgZGVmYXVsdDoKLSAJICAgIGlmIChzaG5keCA9PSAwKQotIAkgICAgICBFUlJPUiAoZ2V0dGV4dCAoIlwKLWRpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYwotaW5kZXggODYwY2ZhYy4uMGRkOWE2YSAxMDA2NDQKLS0tLSBhL3NyYy9vYmpkdW1wLmMKLSsrKyBiL3NyYy9vYmpkdW1wLmMKLUBAIC0yMjMsNyArMjIzLDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCi0gCX0KLSAgICAgICAvKiBXZSBvbmx5IHVzZSB0aGlzIGZvciBjaGVja2luZyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cywgd2UgZG9uJ3QKLSAJIGFjdHVhbGx5IHdhbnQgdG8gY29uc3VtZSB0aGVtLiAgKi8KLS0gICAgICAvKiBGYWxsdGhyb3VnaCAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBBUkdQX0VSUl9VTktOT1dOOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKLWluZGV4IDM0NmVjY2QuLjZhMjdlN2UgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtNDY1LDcgKzQ2NSw3IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLAotIAkgIHByaW50X3N0cmluZ19zZWN0aW9ucyA9IHRydWU7Ci0gCSAgYnJlYWs7Ci0gCX0KLS0gICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKyAgICAgIEZBTExUSFJPVUdIOwotICAgICBjYXNlICd4JzoKLSAgICAgICBhZGRfZHVtcF9zZWN0aW9uIChhcmcsIGZhbHNlKTsKLSAgICAgICBhbnlfY29udHJvbF9vcHRpb24gPSB0cnVlOwotQEAgLTYwMjksNyArNjAyOSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKLSAJCQlkd2FyZl9mb3JtX25hbWUgKGZvcm0pLCAodWludG1heF90KSBudW0pOwotIAkgICAgICByZXR1cm4gRFdBUkZfQ0JfT0s7Ci0gCSAgICB9Ci0tCSAgLyogZWxzZSBmYWxsdGhyb3VnaCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAotIAkvKiBUaGVzZSBjYXNlcyBhbHdheXMgdGFrZSBhIGxvY2xpc3RwdHIgYW5kIG5vIGNvbnN0YW50LiAqLwotIAljYXNlIERXX0FUX2xvY2F0aW9uOgotQEAgLTYxOTUsNyArNjE5NSw3IEBAIGF0dHJfY2FsbGJhY2sgKER3YXJmX0F0dHJpYnV0ZSAqYXR0cnAsIHZvaWQgKmFyZykKLSAJICAgICAgcHJpbnRfYmxvY2sgKGJsb2NrLmxlbmd0aCwgYmxvY2suZGF0YSk7Ci0gCSAgICAgIGJyZWFrOwotIAkgICAgfQotLQkgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rCSAgRkFMTFRIUk9VR0g7Ci0gCi0gCWNhc2UgRFdfQVRfbG9jYXRpb246Ci0gCWNhc2UgRFdfQVRfZGF0YV9sb2NhdGlvbjoKLUBAIC05MjI3LDcgKzkyMjcsNyBAQCBoYW5kbGVfYXV4dl9ub3RlIChFYmwgKmVibCwgRWxmICpjb3JlLCBHRWxmX1dvcmQgZGVzY3N6LCBHRWxmX09mZiBkZXNjX3BvcykKLSAJCXByaW50ZiAoIiAgICAlc1xuIiwgbmFtZSk7Ci0gCQlicmVhazsKLSAJICAgICAgfQotLQkgICAgLyogRmFsbCB0aHJvdWdoICovCi0rCSAgICBGQUxMVEhST1VHSDsKLSAJICBjYXNlICd4JzoJCS8qIGhleCAqLwotIAkgIGNhc2UgJ3AnOgkJLyogYWRkcmVzcyAqLwotIAkgIGNhc2UgJ3MnOgkJLyogYWRkcmVzcyBvZiBzdHJpbmcgKi8KLWRpZmYgLS1naXQgYS9zcmMvc3RyaW5ncy5jIGIvc3JjL3N0cmluZ3MuYwotaW5kZXggZDIxNDM1Ni4uMDNkMGYxMyAxMDA2NDQKLS0tLSBhL3NyYy9zdHJpbmdzLmMKLSsrKyBiL3NyYy9zdHJpbmdzLmMKLUBAIC0yNDYsNyArMjQ2LDcgQEAgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsCi0gCWNhc2UgJ2InOgotIAljYXNlICdCJzoKLSAJICBiaWdfZW5kaWFuID0gdHJ1ZTsKLS0JICAvKiBGQUxMVEhST1VHSCAqLwotKwkgIEZBTExUSFJPVUdIOwotIAotIAljYXNlICdsJzoKLSAJY2FzZSAnTCc6Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYwotaW5kZXggMjFhYmU4YS4uZjVkZDc2MSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UuYwotQEAgLTEyNyw3ICsxMjcsNyBAQCBjYWxsYmFja192ZXJpZnkgKHBpZF90IHRpZCwgdW5zaWduZWQgZnJhbWVubywgRHdhcmZfQWRkciBwYywKLSAJICBhc3NlcnQgKHN5bW5hbWUyID09IE5VTEwgfHwgc3RyY21wIChzeW1uYW1lMiwgImptcCIpICE9IDApOwotIAkgIGJyZWFrOwotIAl9Ci0tICAgICAgLyogRkFMTFRIUlUgKi8KLSsgICAgICBGQUxMVEhST1VHSDsKLSAgICAgY2FzZSA0OgotICAgICAgIC8qIFNvbWUgc2ltcGxlIGZyYW1lIHVud2luZGVycyBnZXQgdGhpcyB3cm9uZyBhbmQgdGhpbmsgc2lndXNyMgotIAkgaXMgY2FsbGluZyBpdHNlbGYgYWdhaW4uIEFsbG93IGl0IGFuZCBqdXN0IHByZXRlbmQgdGhlcmUgaXMKLWRpZmYgLS1naXQgYS90ZXN0cy9lbGZzdHJtZXJnZS5jIGIvdGVzdHMvZWxmc3RybWVyZ2UuYwotaW5kZXggOGQ1YjUzYy4uNjJjNTQ5ZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMKLSsrKyBiL3Rlc3RzL2VsZnN0cm1lcmdlLmMKLUBAIC01NzgsNyArNTc4LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkgICAgICBicmVhazsKLSAKLSAJICAgIGNhc2UgU0hUX0RZTkFNSUM6Ci0tCSAgICAgIC8qIEZhbGx0aHJvdWdoLiAgVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAotKwkgICAgICBGQUxMVEhST1VHSDsKLSsJICAgICAgLyogVGhlcmUgYXJlIHN0cmluZyBpbmRleGVzIGluIGhlcmUsIGJ1dAotIAkJIHRoZXkgKHNob3VsZCkgcG9pbnQgdG8gYSBhbGxvY2F0ZWQgc3RyaW5nIHRhYmxlLAotIAkJIHdoaWNoIHdlIGRvbid0IGFsdGVyLiAgKi8KLSAJICAgIGRlZmF1bHQ6Ci0tLSAKLTIuMTQuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWFybGliLUNoZWNrLXRoYXQtc2hfZW50c2l6ZS1pc24tdC16ZXJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1hcmxpYi1DaGVjay10aGF0LXNoX2VudHNpemUtaXNuLXQtemVyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmNmN2M4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1hcmxpYi1DaGVjay10aGF0LXNoX2VudHNpemUtaXNuLXQtemVyby5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGI1MTg4NDFmYmMxNDMxZDdjNWJhYTAxNmUzNWYxMGZiNjQ3YjU5NTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KK0RhdGU6IFRodSwgMTggT2N0IDIwMTggMTk6MDE6NTIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXJsaWI6IENoZWNrIHRoYXQgc2hfZW50c2l6ZSBpc24ndCB6ZXJvLgorCitBIGJvZ3VzIEVMRiBmaWxlIGNvdWxkIGhhdmUgc2hfZW50c2l6ZSBhcyB6ZXJvLiBEb24ndCBkaXZpZGUgYnkgemVybywKK2J1dCBqdXN0IGFzc3VtZSB0aGVyZSBhcmUgbm8gc3ltYm9scyBpbiB0aGUgc2VjdGlvbi4KKworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODYKKworU2lnbmVkLW9mZi1ieTogTWFyayBXaWVsYWFyZCA8bWFya0BrbG9tcC5vcmc+CisKK0NWRTogQ1ZFLTIwMTgtMTg1MjEKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZWxmdXRpbHMuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2FybGliLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9hcmxpYi5jIGIvc3JjL2FybGliLmMKK2luZGV4IDc3OGUwODcuLmE2NTIxZTMgMTAwNjQ0CistLS0gYS9zcmMvYXJsaWIuYworKysrIGIvc3JjL2FybGliLmMKK0BAIC0yNTIsNiArMjUyLDkgQEAgYXJsaWJfYWRkX3N5bWJvbHMgKEVsZiAqZWxmLCBjb25zdCBjaGFyICphcmZuYW1lLCBjb25zdCBjaGFyICptZW1iZXJuYW1lLAorICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgCWNvbnRpbnVlOworIAorKyAgICAgIGlmIChzaGRyLT5zaF9lbnRzaXplID09IDApCisrCWNvbnRpbnVlOworKworICAgICAgIGludCBuc3ltcyA9IHNoZHItPnNoX3NpemUgLyBzaGRyLT5zaF9lbnRzaXplOworICAgICAgIGZvciAoaW50IG5keCA9IHNoZHItPnNoX2luZm87IG5keCA8IG5zeW1zOyArK25keCkKKyAJeworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCmluZGV4IDI4YzU3ZjIuLjRjNjJkYzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwYTY5YTI2YzlmNzQ4N2RhY2E5MDBkYjg3Y2QxMTk1ODU3YTQ2MDNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjOWM2ZDI0MTQ2NTFkYmYxNjNkYzQ5NjNjM2MzZDZmNWNhY2VmODk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxMDo1NyArMDgwMAogU3ViamVjdDogW1BBVENIIDEvN10gZHNvIGxpbmsgY2hhbmdlCkBAIC0zNSwxMCArMzUsMTAgQEAKICBlbmRpZgogIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYQogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDM3MzUwODQuLjUyODYxNWQgMTAwNjQ0CitpbmRleCBiNDVlY2RjLi5kZDI1NmZiIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNDAwLDcgKzQwMCw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCitAQCAtNDM2LDcgKzQzNiw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segogIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQogIGVsc2UKQEAgLTQ4LDUgKzQ4LDUgQEAKICBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCiAgZW5kaWYKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaAppbmRleCBmYjBiMDYwLi5jMzQyMDUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNzY3MmUzNjM0NjgyNzFiNGM2M2ZmNTg3NzBjNWFhYzE1YWI4ZjcyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzQ2MjkwMTZlNzYzNDNhNGJmMzk5MTVjOTE5MmI2YmYyNmE1N2MyZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMjI6MzA6NDYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGliYXNtIG1heSBsaW5rIHdpdGggbGliYnoyIGlmIGZvdW5kCkBAIC05LDE1ICs5LDE0IEBACiB8IC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9yaXNjdjY0LWJlYy1saW51eC9lbGZ1dGlscy8wLjE3MC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmJ6Mi5zby4xOiBlcnJvciBhZGRpbmcgc3ltYm9sczogRFNPIG1pc3NpbmcgZnJvbSBjb21tYW5kIGxpbmUKIHwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBzcmMvTWFrZWZpbGUuYW0gfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisgc3JjL01ha2VmaWxlLmFtIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggZTAzYmMzMi4uOWI3ZTg1MyAxMDA2NDQKK2luZGV4IDkzMDViODQuLjliN2U4NTMgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQogQEAgLTM5LDExICszOSwxMSBAQCBFWFRSQV9ESVNUICs9IG1ha2UtZGVidWctYXJjaGl2ZS5pbgpAQCAtMzUsNSArMzQsNSBAQAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KICBlbmRpZgogLS0gCi0yLjE0LjIKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliZHdmbC1TYW5pdHktY2hlY2stcGFydGlhbC1jb3JlLWZpbGUtZGF0YS1yZWFkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliZHdmbC1TYW5pdHktY2hlY2stcGFydGlhbC1jb3JlLWZpbGUtZGF0YS1yZWFkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzc0YThkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJkd2ZsLVNhbml0eS1jaGVjay1wYXJ0aWFsLWNvcmUtZmlsZS1kYXRhLXJlYWRzLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gOGNiYjJmOGRlODlkNjVjYTUyZDQyNDJmMjEzYTYyMDZiNDhkMmM4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMiBOb3YgMjAxOCAxNDoyMjozMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBsaWJkd2ZsOiBTYW5pdHkgY2hlY2sgcGFydGlhbCBjb3JlIGZpbGUgZGF0YSByZWFkcy4KKworVGhlcmUgd2VyZSB0d28gaXNzdWVzIHdoZW4gcmVhZGluZyBub3RlIGRhdGEgZnJvbSBhIGNvcmUgZmlsZS4KK1dlIGRpZG4ndCBjaGVjayBpZiB0aGUgZGF0YSB3ZSBhbHJlYWR5IGhhZCBpbiBhIGJ1ZmZlciB3YXMgYmlnCitlbm91Z2guIEFuZCBpZiB3ZSBkaWQgZ2V0IHRoZSBkYXRhLCB3ZSBzaG91bGQgY2hlY2sgaWYgd2UgZ290CitldmVyeXRoaW5nLCBvciBqdXN0IGEgcGFydCBvZiB0aGUgZGF0YS4KKworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTIKKworU2lnbmVkLW9mZi1ieTogTWFyayBXaWVsYWFyZCA8bWFya0BrbG9tcC5vcmc+CisKK0NWRTogQ1ZFLTIwMTgtMTgzMTAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZWxmdXRpbHMuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliZHdmbC9kd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZS5jIHwgMTMgKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZS5jIGIvbGliZHdmbC9kd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZS5jCitpbmRleCAzNmU1YzgyLi44NzQ5ODg0IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX3NlZ21lbnRfcmVwb3J0X21vZHVsZS5jCisrKysgYi9saWJkd2ZsL2R3Zmxfc2VnbWVudF9yZXBvcnRfbW9kdWxlLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIFNuaWZmIG91dCBtb2R1bGVzIGZyb20gRUxGIGhlYWRlcnMgdmlzaWJsZSBpbiBtZW1vcnkgc2VnbWVudHMuCistICAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMTIsIDIwMTQsIDIwMTUgUmVkIEhhdCwgSW5jLgorKyAgIENvcHlyaWdodCAoQykgMjAwOC0yMDEyLCAyMDE0LCAyMDE1LCAyMDE4IFJlZCBIYXQsIEluYy4KKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBlbGZ1dGlscy4KKyAKKyAgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorQEAgLTMwMSw3ICszMDEsMTAgQEAgZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBuZHgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICBpbmxpbmUgYm9vbCByZWFkX3BvcnRpb24gKHZvaWQgKipkYXRhLCBzaXplX3QgKmRhdGFfc2l6ZSwKKyAJCQkgICAgR0VsZl9BZGRyIHZhZGRyLCBzaXplX3QgZmlsZXN6KQorICAgeworLSAgICBpZiAodmFkZHIgLSBzdGFydCArIGZpbGVzeiA+IGJ1ZmZlcl9hdmFpbGFibGUKKysgICAgLyogQ2hlY2sgd2hldGhlciB3ZSB3aWxsIGhhdmUgdG8gcmVhZCB0aGUgc2VnbWVudCBkYXRhLCBvciBpZiBpdAorKyAgICAgICBjYW4gYmUgcmV0dXJuZWQgZnJvbSB0aGUgZXhpc3RpbmcgYnVmZmVyLiAgKi8KKysgICAgaWYgKGZpbGVzeiA+IGJ1ZmZlcl9hdmFpbGFibGUKKysJfHwgdmFkZHIgLSBzdGFydCA+IGJ1ZmZlcl9hdmFpbGFibGUgLSBmaWxlc3oKKyAJLyogSWYgd2UncmUgaW4gc3RyaW5nIG1vZGUsIHRoZW4gZG9uJ3QgY29uc2lkZXIgdGhlIGJ1ZmZlciB3ZSBoYXZlCisgCSAgIHN1ZmZpY2llbnQgdW5sZXNzIGl0IGNvbnRhaW5zIHRoZSB0ZXJtaW5hdG9yIG9mIHRoZSBzdHJpbmcuICAqLworIAl8fCAoZmlsZXN6ID09IDAgJiYgbWVtY2hyICh2YWRkciAtIHN0YXJ0ICsgYnVmZmVyLCAnXDAnLAorQEAgLTQ1OSw2ICs0NjIsMTIgQEAgZHdmbF9zZWdtZW50X3JlcG9ydF9tb2R1bGUgKER3ZmwgKmR3ZmwsIGludCBuZHgsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgIGlmIChyZWFkX3BvcnRpb24gKCZkYXRhLCAmZGF0YV9zaXplLCB2YWRkciwgZmlsZXN6KSkKKyAgICAgICByZXR1cm47CisgCisrICAgIC8qIGRhdGFfc2l6ZSB3aWxsIGJlIHplcm8gaWYgd2UgZ290IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgaW5pdGlhbAorKyAgICAgICBidWZmZXIsIG90aGVyd2lzZSBpdCB3aWxsIGJlIHRoZSBzaXplIG9mIHRoZSBuZXcgYnVmZmVyIHRoYXQKKysgICAgICAgY291bGQgYmUgcmVhZC4gICovCisrICAgIGlmIChkYXRhX3NpemUgIT0gMCkKKysgICAgICBmaWxlc3ogPSBkYXRhX3NpemU7CisrCisgICAgIGFzc2VydCAoc2l6ZW9mIChFbGYzMl9OaGRyKSA9PSBzaXplb2YgKEVsZjY0X05oZHIpKTsKKyAKKyAgICAgdm9pZCAqbm90ZXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmRiNTExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMzM5M2EyZTU0NDgxOGYwYmQxODg3YzEzZjI4YTc2YWQ2MGMyZGY5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNiBBdWcgMjAxOCAwOTo1ODoyNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBsaWJlbGYvZWxmX2VuZC5jOiBjaGVjayBkYXRhX2xpc3QuZGF0YS5kLmRfYnVmIGJlZm9yZSBmcmVlIGl0CisKK1RoZSBvbmUgd2hpY2ggYWN0dWFsbHkgc2F2ZXMgdGhlIGRhdGEgaXMgZGF0YV9saXN0LmRhdGEuZC5kX2J1Ziwgc28gY2hlY2sgaXQKK2JlZm9yZSBmcmVlIHJhd2RhdGFfYmFzZS4KKworVGhpcyBjYW4gZml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gcHJlbGluayBsaWJxYl8xLjAuMzoKK3ByZWxpbms6IC91c3IvbGliL2xpYnFiLnNvLjAuMTguMjogU3ltYm9sIHNlY3Rpb24gaW5kZXggb3V0c2lkZSBvZiBzZWN0aW9uIG51bWJlcnMKKworVGhlIHNlZ21lbnRhdGlvbiBmYXVsdCBoYXBwZW5zIHdoZW4gcHJlbGluayBjYWxsIGVsZl9lbmQoKS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvZWxmdXRpbHMtZGV2ZWwvMjAxOC1xMy9tc2cwMDA4NS5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmVsZi9lbGZfZW5kLmMgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmX2VuZC5jIGIvbGliZWxmL2VsZl9lbmQuYworaW5kZXggMTYwZjBiOC4uNTI4MGE3MCAxMDA2NDQKKy0tLSBhL2xpYmVsZi9lbGZfZW5kLmMKKysrKyBiL2xpYmVsZi9lbGZfZW5kLmMKK0BAIC0xNjAsMTQgKzE2MCwxNiBAQCBlbGZfZW5kIChFbGYgKmVsZikKKyAJCSAgIGFyY2hpdGVjdHVyZSBkb2Vzbid0IHJlcXVpcmUgb3Zlcmx5IHN0cmluZ2VudAorIAkJICAgYWxpZ25tZW50IHRoZSByYXcgZGF0YSBidWZmZXIgaXMgdGhlIHNhbWUgYXMgdGhlCisgCQkgICBvbmUgdXNlZCBmb3IgcHJlc2VudGluZyB0byB0aGUgY2FsbGVyLiAgKi8KKy0JCWlmIChzY24tPmRhdGFfYmFzZSAhPSBzY24tPnJhd2RhdGFfYmFzZSkKKysJCWlmICgoc2NuLT5kYXRhX2Jhc2UgIT0gc2NuLT5yYXdkYXRhX2Jhc2UpCisrCQkgICAgJiYgKHNjbi0+ZGF0YV9saXN0LmRhdGEuZC5kX2J1ZiAhPSBOVUxMKSkKKyAJCSAgZnJlZSAoc2NuLT5kYXRhX2Jhc2UpOworIAorIAkJLyogVGhlIHNlY3Rpb24gZGF0YSBpcyBhbGxvY2F0ZWQgaWYgd2UgY291bGRuJ3QgbW1hcAorIAkJICAgdGhlIGZpbGUuICBPciBpZiB3ZSBoYWQgdG8gZGVjb21wcmVzcy4gICovCistCQlpZiAoZWxmLT5tYXBfYWRkcmVzcyA9PSBOVUxMCisrCQlpZiAoKGVsZi0+bWFwX2FkZHJlc3MgPT0gTlVMTAorIAkJICAgIHx8IHNjbi0+cmF3ZGF0YV9iYXNlID09IHNjbi0+emRhdGFfYmFzZQorIAkJICAgIHx8IChzY24tPmZsYWdzICYgRUxGX0ZfTUFMTE9DRUQpICE9IDApCisrCQkgICAgJiYgKHNjbi0+ZGF0YV9saXN0LmRhdGEuZC5kX2J1ZiAhPSBOVUxMKSkKKyAJCSAgZnJlZSAoc2NuLT5yYXdkYXRhX2Jhc2UpOworIAorIAkJLyogRnJlZSB0aGUgbGlzdCBvZiBkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBzZWN0aW9uLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLXNpemUtSGFuZGxlLXJlY3Vyc2l2ZS1FTEYtYXItZmlsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLXNpemUtSGFuZGxlLXJlY3Vyc2l2ZS1FTEYtYXItZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZlZDgyNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtc2l6ZS1IYW5kbGUtcmVjdXJzaXZlLUVMRi1hci1maWxlcy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDQ0MGQzNGQwZWUzNzk2NDQ1MzI0NTg5NWQzOGQ3ZmMzMWJjZjNkN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIFdpZWxhYXJkIDxtYXJrQGtsb21wLm9yZz4KK0RhdGU6IFRodSwgMTggT2N0IDIwMTggMjM6MTU6NDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gc2l6ZTogSGFuZGxlIHJlY3Vyc2l2ZSBFTEYgYXIgZmlsZXMuCisKK2V1LXNpemUgZGlkbid0IGhhbmRsZSBhbiBFTEYgYXIgZmlsZSB0aGF0IGNvbnRhaW5lZCBhbiBhciBmaWxlIGl0c2VsZgorY29ycmVjdGx5LiBoYW5kbGVfYXIgd291bGQgcmVjdXJzaXZlbHkgY2FsbCBpdHNlbGYgYnV0IGNsb3NlIHRoZSBFTEYKK2ZpbGUgYmVmb3JlIHJldHVybmluZy4gT25seSBjbG9zZSB0aGUgRUxGIGZpbGUgYXQgdGhlIHRvcC1sZXZlbC4KKworaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODcKKworU2lnbmVkLW9mZi1ieTogTWFyayBXaWVsYWFyZCA8bWFya0BrbG9tcC5vcmc+CisKK0NWRTogQ1ZFLTIwMTgtMTg1MjAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZWxmdXRpbHMuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3NpemUuYyB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCitpbmRleCA1ZmYzZjJhLi5mMDFmZDg4IDEwMDY0NAorLS0tIGEvc3JjL3NpemUuYworKysrIGIvc3JjL3NpemUuYworQEAgLTM3NCw4ICszNzQsMTAgQEAgaGFuZGxlX2FyIChpbnQgZmQsIEVsZiAqZWxmLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmZuYW1lKQorIAlJTlRFUk5BTF9FUlJPUiAoZm5hbWUpOworICAgICB9CisgCistICBpZiAodW5saWtlbHkgKGVsZl9lbmQgKGVsZikgIT0gMCkpCistICAgIElOVEVSTkFMX0VSUk9SIChmbmFtZSk7CisrICAvKiBPbmx5IGNsb3NlIEVMRiBoYW5kbGUgaWYgdGhpcyB3YXMgYSAidG9wIGxldmVsIiBhciBmaWxlLiAgKi8KKysgIGlmIChwcmVmaXggPT0gTlVMTCkKKysgICAgaWYgKHVubGlrZWx5IChlbGZfZW5kIChlbGYpICE9IDApKQorKyAgICAgIElOVEVSTkFMX0VSUk9SIChmbmFtZSk7CisgCisgICByZXR1cm4gcmVzdWx0OworIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2gKaW5kZXggMmY3MThlYi4uODZkMjZiZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlOTg2NzBmN2M3YjRjNzNmYjY1NTM0OTQ5NzE2ZmQ4ZDA0Mzk2MGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5ZmQ0YmIwNWQzZjJiN2VhZjlmZTQ0MWJlZTI2ZDNiMTg3OGQ3Y2M3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoxMzo1OSArMDgwMAogU3ViamVjdDogW1BBVENIIDIvN10gRml4IGVsZl9jdnRfZ3VuaGFzaCBpZiBkZXN0IGFuZCBzcmMgYXJlIHNhbWUuCkBAIC0zOCw1ICszOCw1IEBACiAgICAvKiBOb3cgdGhlIDY0IGJpdCB3b3Jkcy4gICovCiAgICBFbGY2NF9Yd29yZCAqZGVzdDY0ID0gKEVsZjY0X1h3b3JkICopICZkZXN0MzJbNF07CiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoCmluZGV4IDdjNDlmY2UuLmQxYzhlNDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNTY1ZDU5MzVhYmY1YjU4NzczZjljODM4NWMwMDE4OTIyMTk4MGQ5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMDRmYjNmNjVlYzE4NmRmNTIzMWRkMGMyMTc4MGE1NWRjYzAzYzg2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6MTc6MjAgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCAzLzddIGZpeGhlYWRlcmNoZWNrCkBAIC0yMSw3ICsyMSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCi1pbmRleCBkODNjMGIzLi5hNTFiZjcwIDEwMDY0NAoraW5kZXggM2U5ZWY2MS4uNTM1MTUxOCAxMDA2NDQKIC0tLSBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKICsrKyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKIEBAIC0zMzksOCArMzM5LDggQEAgX19lbGZ3MihMSUJFTEZCSVRTLHVwZGF0ZW51bGxfd3Jsb2NrKSAoRWxmICplbGYsIGludCAqY2hhbmdlX2JvcCwgc2l6ZV90IHNobnVtKQpAQCAtMzYsNSArMzYsNSBAQAogIAkJICAgICAgX19saWJlbGZfc2V0ZXJybm8gKEVMRl9FX0lOVkFMSURfQUxJR04pOwogIAkJICAgICAgcmV0dXJuIC0xOwogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2gKaW5kZXggZDg5M2FkNi4uYmYzYTY0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYmI3ZWQxMTk1MDEwMTc5OGFhZTgyZjdmZGE4YjNkY2IwNWY3NTVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGJjODgzNDliOWVlZDQyNjhkYjk1MWRmMmMzYTgzODdmNzVhMzJlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6MjQ6MDYgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCA0LzddIERpc2FibGUgdGhlIHRlc3QgdG8gY29udmVydCBldWMtanAKQEAgLTQwLDUgKzQwLDUgQEAKICB9XV0pXSwKICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaAppbmRleCAyMmEwMWNmLi5lMjk2NmNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkZDZkYmY2YWYzOTY1MTkzODBmNDhjMGVmMWNlNmNmNGRkNzdmNmQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0ZDdlYTY4MTkzMjU1NmFkODgxZjY4NDFkZTkwZDBiZmZmNTZmOGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNToxNiArMDgwMAogU3ViamVjdDogW1BBVENIIDUvN10gZml4IGEgc3RhY2stdXNhZ2Ugd2FybmluZwpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jIGIvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotaW5kZXggNjlkNjIzYi4uZGU0MWRlYyAxMDA2NDQKK2luZGV4IDNlNDQzMmYuLjU5YzJkOTcgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCiArKysgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCi1AQCAtOTMsNyArOTMsNyBAQCBwcGNfc2V0X2luaXRpYWxfcmVnaXN0ZXJzX3RpZCAocGlkX3QgdGlkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKK0BAIC05NCw3ICs5NCw3IEBAIHBwY19zZXRfaW5pdGlhbF9yZWdpc3RlcnNfdGlkIChwaWRfdCB0aWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAogIAlyZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIGNvbnN0IHNpemVfdCBncHJzID0gc2l6ZW9mICh1c2VyX3JlZ3Muci5ncHIpIC8gc2l6ZW9mICgqdXNlcl9yZWdzLnIuZ3ByKTsKQEAgLTMxLDUgKzMxLDUgQEAKICAgICAgZHdhcmZfcmVnc1tncHJdID0gdXNlcl9yZWdzLnIuZ3ByW2dwcl07CiAgICBpZiAoISBzZXRmdW5jICgwLCBncHJzLCBkd2FyZl9yZWdzLCBhcmcpKQogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2gKaW5kZXggNWYyOWEwMy4uNDBiODU0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTU3YWQ0N2ZjODU0OTM1M2NhODBjMjNiOWI0ZjM4ZjMxZmRlMTNlNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjRlYzA1OTUzZjc4YWYyNmJjZDdkZTQ1YTViYmM1ZjEzOGQwMjNkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6Mjc6MzAgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCA2LzddIEZpeCBidWlsZCBvbiBhYXJjaDY0L211c2wKQEAgLTU3LDUgKzU3LDUgQEAKICAjIGluY2x1ZGUgPHN5cy9wdHJhY2UuaD4KICAvKiBEZWFsIHdpdGggb2xkIGdsaWJjIGRlZmluaW5nIHVzZXJfcHRfcmVncyBpbnN0ZWFkIG9mIHVzZXJfcmVnc19zdHJ1Y3QuICAqLwogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKaW5kZXggMjI0NzcwNC4uYmJhNDIwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gMWU5MWMxZDRlMzdjMDVjZjk1MDU4YjRiM2MzZjM1MmQ3Mjg4NmY1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGViMTAwYjJlNTFiZTVkNDczYjA3NDhhMjIzZTJlN2Y2MWVjNjA2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6MzE6MzggKzA4MDAKK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTU6MTQ6MjggKzA4MDAKIFN1YmplY3Q6IFtQQVRDSCA3LzddIEZpeCBjb250cm9sIHBhdGggd2hlcmUgd2UgaGF2ZSBzdHIgYXMgdW5pbml0aWFsaXplZAogIHN0cmluZwogCkBAIC0yMSw3ICsyMSw3IEBACiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVJlYmFzZSB0byAwLjE3MAorUmViYXNlIHRvIDAuMTcyCiAKIFNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQpAQCAtMjksMTcgKzI5LDE3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9kaXNhc20uYyBiL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi1pbmRleCA4MzFhZmJlLi42MGZkNmQ0IDEwMDY0NAoraW5kZXggYTdlMDNmOS4uODM3YTNhOCAxMDA2NDQKIC0tLSBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCiArKysgYi9saWJjcHUvaTM4Nl9kaXNhc20uYwogQEAgLTgyMSw2ICs4MjEsNyBAQCBpMzg2X2Rpc2FzbSAoRWJsICplYmwgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCiAgCQkJICAgIH0KLSAJCQkgIC8qIEZhbGx0aHJvdWdoICovCisgCQkJICBGQUxMVEhST1VHSDsKICAJCQlkZWZhdWx0OgogKwkJCSAgc3RyID0gIiI7CiAgCQkJICBhc3NlcnQgKCEgIklOVkFMSUQgbm90IGhhbmRsZWQiKTsKICAJCQl9CiAgCQkgICAgfQogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKaW5kZXggYTQyY2U3Yi4uMGYwMWEzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwOC1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApAQCAtMSw5MCArMSwzMiBAQAotRnJvbSBlZjA5ODE3NDQ2NjkxNDlhMDBkZDA0MzlhNTRkYWMzMGRlN2I1NmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMDdiZTA1YzQ0ZGE1YzRjMzExNzlhMzQ2NjBlMTc2MTQ1ZmY4ZDRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6MDY6MjYgKzA4MDAKK0RhdGU6IE1vbiwgMiBKdWwgMjAxOCAwOTo1MjoyMyArMDgwMAogU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCiAgY29tcGlsaW5nIGl0IG9uIG11c2wKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1SZWJhc2UgdG8gMC4xNzAKK1JlYmFzZSB0byAwLjE3NAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KIC0tLQogIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWIvY29sb3IuYyAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrLQogIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICAgIHwgIDEgLQotIGxpYi9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIGxpYi94bWFsbG9jLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX2VuZC5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gbGliYXNtL2FzbV9uZXdzY24uYyAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2dlbmRpcy5jICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9sZXguYyAgICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfcGFyc2UuYyAgICAgICAgICAgICAgfCAgMiArLQorIGxpYi9zeXN0ZW0uaCAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKystCiAgbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgMyArKy0KLSBsaWJkdy9saWJkd19hbGxvYy5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMgfCAgMyArKy0KKyBsaWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyB8ICAxICsKICBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgICB8ICA0ICsrKy0KICBsaWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgICB8ICAxICsKLSBsaWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgICAgICAgICB8ICAyICstCiAgbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyAgICAgfCAgOSArKysrKysrKysKICBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgICB8ICAxICsKLSBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyAgICAgICAgICB8ICAyICstCiAgbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKystLQogIGxpYmVsZi9saWJlbGYuaCAgICAgICAgICAgICAgICAgIHwgIDEgKwogIGxpYmVsZi9saWJlbGZQLmggICAgICAgICAgICAgICAgIHwgIDEgKwotIHNyYy9hZGRyMmxpbmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FybGliLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hcmxpYjIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZWxmY21wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9maW5kdGV4dHJlbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvbm0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yYW5saWIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3NpemUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaW5ncy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0cmlwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy91bnN0cmlwLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hZGRyc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYWxscmVncy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kYXRhLmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2J1aWxkaWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2FsdGxpbmsuYyAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVidWdsaW5rLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlbGV0ZWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWFkZHItc2VjdC5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgICAgfCAgMiArLQotIHRlc3RzL2R3ZmxsaW5lcy5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsbW9kdGVzdC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZHdmbHN5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Vhcmx5LW9mZnNjbi5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9lY3AuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNyZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9mdW5jc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZ2V0c3JjX2RpZS5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xpbmUyYWRkci5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9sb3dfaGlnaF9wYy5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbWQ1LXNoYTEtdGVzdC5jICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Jkd3JtbWFwLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zYXJpZHguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvc2VjdGlvbmR1bXAuYyAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3ZhcmxvY3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy92ZHNvc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gNjkgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCisgMTIgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJmZjQ0NGU3Li40MWY3N2RmOCAxMDA2NDQKK2luZGV4IDJmZjQ0NGUuLjQxZjc3ZGYgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0yOCw3ICsyOCw3IEBAIHBrZ2luY2x1ZGVfSEVBREVSUyA9IHZlcnNpb24uaApAQCAtOTYsMjggKzM4LDggQEAKICAKICBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCiAgCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCi1kaWZmIC0tZ2l0IGEvbGliL2NvbG9yLmMgYi9saWIvY29sb3IuYwotaW5kZXggZjYyMzg5ZDUuLmEyYTg0YjQ2IDEwMDY0NAotLS0tIGEvbGliL2NvbG9yLmMKLSsrKyBiL2xpYi9jb2xvci5jCi1AQCAtMzIsMTMgKzMyLDE0IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSAibGliZXUuaCIKLSAjaW5jbHVkZSAiY29sb3IuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0gCi0gLyogUHJvdG90eXBlIGZvciBvcHRpb24gaGFuZGxlci4gICovCi0gc3RhdGljIGVycm9yX3QgcGFyc2Vfb3B0IChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdCBhcmdwX3N0YXRlICpzdGF0ZSk7CiBkaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWY1Li40MzAxNmZjMyAxMDA2NDQKK2luZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0CiAtLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCiArKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCiBAQCAtMzAsNyArMzAsNiBAQApAQCAtMTI5LDEwICs1MSwxOSBAQAogICNpbmNsdWRlIDxzeXN0ZW0uaD4KICAKIGRpZmYgLS1naXQgYS9saWIvc3lzdGVtLmggYi9saWIvc3lzdGVtLmgKLWluZGV4IDkyMDMzMzU1Li4xYTYwMTMxOSAxMDA2NDQKK2luZGV4IDI5MjA4MmIuLjMwOGE3NjIgMTAwNjQ0CiAtLS0gYS9saWIvc3lzdGVtLmgKICsrKyBiL2xpYi9zeXN0ZW0uaAotQEAgLTUwLDYgKzUwLDE2IEBACitAQCAtMzAsNyArMzAsNyBAQAorICNkZWZpbmUgTElCX1NZU1RFTV9ICTEKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CitAQCAtNTEsNiArNTEsMTYgQEAKICAjZWxzZQogICMgZXJyb3IgIlVua25vd24gYnl0ZSBvcmRlciIKICAjZW5kaWYKQEAgLTE0OSw4OSArODAsMTEgQEAKICAKICAjaWZuZGVmIE1BWAogICNkZWZpbmUgTUFYKG0sIG4pICgobSkgPCAobikgPyAobikgOiAobSkpCi1kaWZmIC0tZ2l0IGEvbGliL3htYWxsb2MuYyBiL2xpYi94bWFsbG9jLmMKLWluZGV4IDBjZGUzODRmLi4yMTdiMDU0MSAxMDA2NDQKLS0tLSBhL2xpYi94bWFsbG9jLmMKLSsrKyBiL2xpYi94bWFsbG9jLmMKLUBAIC0zMCw3ICszMCw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmFzbS9hc21fZW5kLmMgYi9saWJhc20vYXNtX2VuZC5jCi1pbmRleCBjZWQyNGY1MC4uNGFkOTE4YzQgMTAwNjQ0Ci0tLS0gYS9saWJhc20vYXNtX2VuZC5jCi0rKysgYi9saWJhc20vYXNtX2VuZC5jCi1AQCAtMzIsNyArMzIsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9uZXdzY24uYyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKLWluZGV4IGRkYmIyNWRmLi43NGE1OThkOSAxMDA2NDQKLS0tLSBhL2xpYmFzbS9hc21fbmV3c2NuLmMKLSsrKyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfZ2VuZGlzLmMgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYwotaW5kZXggYWFlNWVhZTYuLjZkNzYwMTY1IDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfZ2VuZGlzLmMKLSsrKyBiL2xpYmNwdS9pMzg2X2dlbmRpcy5jCi1AQCAtMzEsNyArMzEsNyBAQAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9saWJjcHUvaTM4Nl9sZXguYyBiL2xpYmNwdS9pMzg2X2xleC5jCi1pbmRleCBiYTVmNGFhNS4uYjFlNDE5MTYgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9sZXguYwotKysrIGIvbGliY3B1L2kzODZfbGV4LmMKLUBAIC01NzcsNyArNTc3LDcgQEAgY2hhciAqaTM4Nl90ZXh0OwotICNlbmRpZgotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotIAotICNpbmNsdWRlIDxsaWJldS5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLmMgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1pbmRleCA2ZmE3Y2UzZC4uYmIyNzAwNjEgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCi0rKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1AQCAtMTA3LDcgKzEwNyw3IEBACi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxtYXRoLmg+CiBkaWZmIC0tZ2l0IGEvbGliZHcvTWFrZWZpbGUuYW0gYi9saWJkdy9NYWtlZmlsZS5hbQotaW5kZXggZmY4YzI5MWUuLjg5ZTc5MmFhIDEwMDY0NAoraW5kZXggN2EzZDUzMi4uN2FjMTI0MSAxMDA2NDQKIC0tLSBhL2xpYmR3L01ha2VmaWxlLmFtCiArKysgYi9saWJkdy9NYWtlZmlsZS5hbQotQEAgLTEwNSw3ICsxMDUsOCBAQCBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQorQEAgLTEwOCw3ICsxMDgsOCBAQCBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQogIGxpYmR3X3NvX0xJQlMgPSBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCiAgCSAgLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hIC4uL2xpYmVibC9saWJlYmwuYQogIGxpYmR3X3NvX0RFUFMgPSAuLi9saWIvbGliZXUuYSAuLi9saWJlbGYvbGliZWxmLnNvCkBAIC0yNDEsMjEgKzk0LDggQEAKICBsaWJkd19zb19TT1VSQ0VTID0KICBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKICAjIFRoZSBycGF0aCBpcyBuZWNlc3NhcnkgZm9yIGxpYmVibCBiZWNhdXNlIGl0cyAkT1JJR0lOIHVzZSB3aWxsCi1kaWZmIC0tZ2l0IGEvbGliZHcvbGliZHdfYWxsb2MuYyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLWluZGV4IDI4YThjZjZlLi4yOWFlYjNmNyAxMDA2NDQKLS0tLSBhL2xpYmR3L2xpYmR3X2FsbG9jLmMKLSsrKyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlICJsaWJkd1AuaCIKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1pbmRleCBlZTBjMTY0Ni4uYjA2YWI1OTYgMTAwNjQ0CitpbmRleCBjYzZjM2Y2Li5iMDZhYjU5IDEwMDY0NAogLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKICsrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCiBAQCAtMzEsNiArMzEsNyBAQApAQCAtMjY2LDE3ICsxMDYsOCBAQAogICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC05OSw3ICsxMDAsNyBAQCBfX2xpYmR3Zmxfb3Blbl9ieV9idWlsZF9pZCAoRHdmbF9Nb2R1bGUgKm1vZCwgYm9vbCBkZWJ1ZywgY2hhciAqKmZpbGVfbmFtZSwKLSAJewotIAkgIGlmICgqZmlsZV9uYW1lICE9IE5VTEwpCi0gCSAgICBmcmVlICgqZmlsZV9uYW1lKTsKLS0JICAqZmlsZV9uYW1lID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAobmFtZSk7Ci0rCSAgKmZpbGVfbmFtZSA9IHJlYWxwYXRoIChuYW1lLCBOVUxMKTsKLSAJICBpZiAoKmZpbGVfbmFtZSA9PSBOVUxMKQotIAkgICAgewotIAkgICAgICAqZmlsZV9uYW1lID0gbmFtZTsKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi1pbmRleCA3YmNmNjFjYy4uYzM0NTc5N2EgMTAwNjQ0CitpbmRleCA3YmNmNjFjLi5jMzQ1Nzk3IDEwMDY0NAogLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKICsrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCiBAQCAtMTQwLDYgKzE0MCw3IEBAIF9fbGliZHdmbF9zZXRlcnJubyAoRHdmbF9FcnJvciBlcnJvcikKQEAgLTI5OCw3ICsxMjksNyBAQAogICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7CiAgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKIGRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKLWluZGV4IDk3NzVhY2VkLi41MTFjNGE2YSAxMDA2NDQKK2luZGV4IGFmNjgzOGEuLmMwNzlkNmEgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKICsrKyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwogQEAgLTM1LDYgKzM1LDcgQEAKQEAgLTMwOSwyMSArMTQwLDggQEAKICAjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCS8qIERXQVJGX0VfKiB2YWx1ZXMgYXJlIGhlcmUuICAqLwogICNpbmNsdWRlICIuLi9saWJlbGYvbGliZWxmUC5oIgogICNpbmNsdWRlICJzeXN0ZW0uaCIKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKLWluZGV4IDZkNWE0MmE2Li45MjY3Nzg4ZCAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYwotKysrIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1AQCAtMzg5LDcgKzM4OSw3IEBAIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCi0gICAgICAgLyogSWYgRklMRV9OQU1FIGlzIGEgc3ltbGluaywgdGhlIGRlYnVnIGZpbGUgbWlnaHQgYmUgYXNzb2NpYXRlZAotIAkgd2l0aCB0aGUgc3ltbGluayB0YXJnZXQgbmFtZSBpbnN0ZWFkLiAgKi8KLSAKLS0gICAgICBjaGFyICpjYW5vbiA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKGZpbGVfbmFtZSk7Ci0rICAgICAgY2hhciAqY2Fub24gPSByZWFscGF0aCAoZmlsZV9uYW1lLCBOVUxMKTsKLSAgICAgICBpZiAoY2Fub24gIT0gTlVMTCAmJiBzdHJjbXAgKGZpbGVfbmFtZSwgY2Fub24pKQotIAlmZCA9IGZpbmRfZGVidWdpbmZvX2luX3BhdGggKG1vZCwgY2Fub24sCi0gCQkJCSAgICAgZGVidWdsaW5rX2ZpbGUsIGRlYnVnbGlua19jcmMsCiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLWluZGV4IGY4NDkxMjhkLi42ZjBhY2ExYiAxMDA2NDQKK2luZGV4IGY4NDkxMjguLjZmMGFjYTEgMTAwNjQ0CiAtLS0gYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCiArKysgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCiBAQCAtMjksNiArMjksMTUgQEAKQEAgLTM0Myw3ICsxNjEsNyBAQAogICNkZWZpbmUgY3JjMzIgX19saWJkd2ZsX2NyYzMyCiAgI2luY2x1ZGUgPGxpYmR3ZmxQLmg+CiBkaWZmIC0tZ2l0IGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCi1pbmRleCA5ZDBmZWYyYy4uOWZjMDliODggMTAwNjQ0CitpbmRleCA5ZDBmZWYyLi45ZmMwOWI4IDEwMDY0NAogLS0tIGEvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCiArKysgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKIEBAIC00MCw2ICs0MCw3IEBACkBAIC0zNTQsMjEgKzE3Miw4IEBACiAgI2luY2x1ZGUgPGludHR5cGVzLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotaW5kZXggNTM3MTM5NjMuLjJlNjZkZmRkIDEwMDY0NAotLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLSsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtMzIsNyArMzIsNyBAQAotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZlAuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+CiBkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCi1pbmRleCA1Y2YyYjkzNC4uOTkwYjNhZmIgMTAwNjQ0CitpbmRleCA1ZGM2MzJiLi4xNGRhMWI3IDEwMDY0NAogLS0tIGEvbGliZWxmL2VsZi5oCiArKysgYi9saWJlbGYvZWxmLmgKIEBAIC0yMSw3ICsyMSw5IEBACkBAIC0zODIsOSArMTg3LDkgQEAKICAKICAvKiBTdGFuZGFyZCBFTEYgdHlwZXMuICAqLwogIAotQEAgLTM3MDUsNiArMzcwNyw4IEBAIGVudW0KLSAjZGVmaW5lIFJfQlBGX05PTkUJCTAJLyogTm8gcmVsb2MgKi8KLSAjZGVmaW5lIFJfQlBGX01BUF9GRAkJMQkvKiBNYXAgZmQgdG8gcG9pbnRlciAqLworQEAgLTM5MzcsNiArMzkzOSw4IEBAIGVudW0KKyAjZGVmaW5lIFJfTUVUQUdfVExTX0xFX0hJMTYJNjAKKyAjZGVmaW5lIFJfTUVUQUdfVExTX0xFX0xPMTYJNjEKICAKIC1fX0VORF9ERUNMUwogKyNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMzkzLDcgKzE5OCw3IEBACiAgCiAgI2VuZGlmCS8qIGVsZi5oICovCiBkaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZi5oIGIvbGliZWxmL2xpYmVsZi5oCi1pbmRleCA1NDdjMGY1MC4uZGQ3ODc5OWUgMTAwNjQ0CitpbmRleCBkMTEzNThjLi40Y2Y5MjcyIDEwMDY0NAogLS0tIGEvbGliZWxmL2xpYmVsZi5oCiArKysgYi9saWJlbGYvbGliZWxmLmgKIEBAIC0yOSw2ICsyOSw3IEBACkBAIC00MDUsNyArMjEwLDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgCiBkaWZmIC0tZ2l0IGEvbGliZWxmL2xpYmVsZlAuaCBiL2xpYmVsZi9saWJlbGZQLmgKLWluZGV4IDdlZTY2MjVhLi41ODQwODk5NyAxMDA2NDQKK2luZGV4IGVkMjE2YzguLjQxNWU2ZjYgMTAwNjQ0CiAtLS0gYS9saWJlbGYvbGliZWxmUC5oCiArKysgYi9saWJlbGYvbGliZWxmUC5oCiBAQCAtMzIsNiArMzIsNyBAQApAQCAtNDE2LDYxNCArMjIxLDYgQEAKICAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8c3RkYm9vbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYwotaW5kZXggNDQ0ZWU1MmMuLjk1OTZmYTY3IDEwMDY0NAotLS0tIGEvc3JjL2FkZHIybGluZS5jCi0rKysgYi9zcmMvYWRkcjJsaW5lLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJkd2ZsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2FyLmMgYi9zcmMvYXIuYwotaW5kZXggZWMzMmNlZTUuLjRlZmQ3MjljIDEwMDY0NAotLS0tIGEvc3JjL2FyLmMKLSsrKyBiL3NyYy9hci5jCi1AQCAtMjIsNyArMjIsNyBAQAotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2FybGliLmMgYi9zcmMvYXJsaWIuYwotaW5kZXggZTA4MzlhYWIuLjExNDM2NThmIDEwMDY0NAotLS0tIGEvc3JjL2FybGliLmMKLSsrKyBiL3NyYy9hcmxpYi5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hcmxpYjIuYyBiL3NyYy9hcmxpYjIuYwotaW5kZXggNTUzZmM1N2IuLjQ2NDQzZDBlIDEwMDY0NAotLS0tIGEvc3JjL2FybGliMi5jCi0rKysgYi9zcmMvYXJsaWIyLmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9lbGZjbXAuYyBiL3NyYy9lbGZjbXAuYwotaW5kZXggNTA0NjQyMDcuLmNmZjE4M2ZhIDEwMDY0NAotLS0tIGEvc3JjL2VsZmNtcC5jCi0rKysgYi9zcmMvZWxmY21wLmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9lbGZsaW50LmMgYi9zcmMvZWxmbGludC5jCi1pbmRleCBkZjFiM2EwMy4uNjdkOGQxMzQgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmbGludC5jCi0rKysgYi9zcmMvZWxmbGludC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZpbmR0ZXh0cmVsLmMgYi9zcmMvZmluZHRleHRyZWwuYwotaW5kZXggOGYxZTIzOWEuLjcxNDYzYWYzIDEwMDY0NAotLS0tIGEvc3JjL2ZpbmR0ZXh0cmVsLmMKLSsrKyBiL3NyYy9maW5kdGV4dHJlbC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJkdy5oPgotZGlmZiAtLWdpdCBhL3NyYy9ubS5jIGIvc3JjL25tLmMKLWluZGV4IDk2OWM2ZDM1Li4zMTEzYzA0YyAxMDA2NDQKLS0tLSBhL3NyYy9ubS5jCi0rKysgYi9zcmMvbm0uYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvb2JqZHVtcC5jIGIvc3JjL29iamR1bXAuYwotaW5kZXggMGRkOWE2YWEuLjljOGJmMTQ5IDEwMDY0NAotLS0tIGEvc3JjL29iamR1bXAuYwotKysrIGIvc3JjL29iamR1bXAuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYwotaW5kZXggY2MwZWUyMzMuLmFlODUxZTQwIDEwMDY0NAotLS0tIGEvc3JjL3JhbmxpYi5jCi0rKysgYi9zcmMvcmFubGliLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvcmVhZGVsZi5jIGIvc3JjL3JlYWRlbGYuYwotaW5kZXggNmEyN2U3ZTAuLjQ3NTlhOTY1IDEwMDY0NAotLS0tIGEvc3JjL3JlYWRlbGYuYwotKysrIGIvc3JjL3JlYWRlbGYuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc2l6ZS5jIGIvc3JjL3NpemUuYwotaW5kZXggYWQ4ZGJjYmIuLmZkODNiZTA2IDEwMDY0NAotLS0tIGEvc3JjL3NpemUuYwotKysrIGIvc3JjL3NpemUuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKLWluZGV4IDZmMmZmNjlmLi42ZGEwMjQzZCAxMDA2NDQKLS0tLSBhL3NyYy9zdGFjay5jCi0rKysgYi9zcmMvc3RhY2suYwotQEAgLTE4LDcgKzE4LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLWRpZmYgLS1naXQgYS9zcmMvc3RyaW5ncy5jIGIvc3JjL3N0cmluZ3MuYwotaW5kZXggMDNkMGYxMzMuLjVjMzExY2JkIDEwMDY0NAotLS0tIGEvc3JjL3N0cmluZ3MuYwotKysrIGIvc3JjL3N0cmluZ3MuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N0cmlwLmMgYi9zcmMvc3RyaXAuYwotaW5kZXggYzc4MzBlYzYuLjBkN2YxNDhkIDEwMDY0NAotLS0tIGEvc3JjL3N0cmlwLmMKLSsrKyBiL3NyYy9zdHJpcC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLWRpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYwotaW5kZXggNTA3NDkwOTMuLjNkNGY5NTI1IDEwMDY0NAotLS0tIGEvc3JjL3Vuc3RyaXAuYwotKysrIGIvc3JjL3Vuc3RyaXAuYwotQEAgLTMxLDcgKzMxLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2FkZHJzY29wZXMuYyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotaW5kZXggNzkxNTY5ZjUuLjU0ZjQzMTFiIDEwMDY0NAotLS0tIGEvdGVzdHMvYWRkcnNjb3Blcy5jCi0rKysgYi90ZXN0cy9hZGRyc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9hbGxyZWdzLmMgYi90ZXN0cy9hbGxyZWdzLmMKLWluZGV4IDI4NmY3ZTNjLi5jOWRlMDg5NyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2FsbHJlZ3MuYwotKysrIGIvdGVzdHMvYWxscmVncy5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotaW5kZXggYTM4N2Q4ZmYuLjk1NWMyN2QxIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotaW5kZXggMmRjOGE5YTIuLjI0Y2E3ZmIwIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKLSsrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi1AQCAtMjIsNyArMjIsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYwotaW5kZXggZjVkZDc2MWYuLmE5M2E4ZjAzIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKLSsrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaWZkZWYgX19saW51eF9fCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYnVpbGRpZC5jIGIvdGVzdHMvYnVpbGRpZC5jCi1pbmRleCA4N2MxODc3My4uMjk1M2U2YmIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9idWlsZGlkLmMKLSsrKyBiL3Rlc3RzL2J1aWxkaWQuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZWxmKQotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZGVidWdhbHRsaW5rLmMgYi90ZXN0cy9kZWJ1Z2FsdGxpbmsuYwotaW5kZXggNmQ5N2Q1MDAuLmVlN2U1NTllIDEwMDY0NAotLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKLSsrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnbGluay5jIGIvdGVzdHMvZGVidWdsaW5rLmMKLWluZGV4IDkzNWQxMDI5Li43NDFjYjgxNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2RlYnVnbGluay5jCi0rKysgYi90ZXN0cy9kZWJ1Z2xpbmsuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2RlbGV0ZWQuYyBiL3Rlc3RzL2RlbGV0ZWQuYwotaW5kZXggNmJlMzViYzIuLjAxOTA3MTEzIDEwMDY0NAotLS0tIGEvdGVzdHMvZGVsZXRlZC5jCi0rKysgYi90ZXN0cy9kZWxldGVkLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2lmZGVmIF9fbGludXhfXwotICNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotaW5kZXggMjFlNDcwYTMuLjFlYTFlM2IyIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotKysrIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1pbmRleCBhYTgwMzBlMS4uMDJjOGJlZjkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLSsrKyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKLWluZGV4IDY4OWNkZDc5Li41OTczZGEzOSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYwotKysrIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKLWluZGV4IDFlZTk4OWY4Li5mZDYyZTY1MyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotKysrIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gc3RhdGljIGNvbnN0IER3ZmxfQ2FsbGJhY2tzIGNhbGxiYWNrcyA9Ci0gICB7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotaW5kZXggYTRlOTdkM2MuLmY0NzE1ODdjIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKLSsrKyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi1AQCAtMjAsNyArMjAsNyBAQAotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbGxpbmVzLmMgYi90ZXN0cy9kd2ZsbGluZXMuYwotaW5kZXggOTAzNzlkZDIuLmNiZGY2YzRjIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbGxpbmVzLmMKLSsrKyBiL3Rlc3RzL2R3ZmxsaW5lcy5jCi1AQCAtMjcsNyArMjcsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbG1vZHRlc3QuYyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLWluZGV4IDAwMjdmOTZiLi5lNjhkM2JjYSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLSsrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCi1pbmRleCA0OWFjMzM0Ni4uY2YwNzgzMDEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2Zsc3ltcy5jCi0rKysgYi90ZXN0cy9kd2Zsc3ltcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZWFybHktb2Zmc2NuLmMgYi90ZXN0cy9lYXJseS1vZmZzY24uYwotaW5kZXggOTI0Y2I5ZWYuLjZmNjBkNWEzIDEwMDY0NAotLS0tIGEvdGVzdHMvZWFybHktb2Zmc2NuLmMKLSsrKyBiL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2VjcC5jIGIvdGVzdHMvZWNwLmMKLWluZGV4IDM4YTY4NTllLi43NDNjZWE1ZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VjcC5jCi0rKysgYi90ZXN0cy9lY3AuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLWluZGV4IGJhOGFlMzcxLi43NmY1ZjA0NyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLSsrKyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNyZXR2YWwuYyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwotaW5kZXggOGQxOWQxMTcuLmM4YWFhOTNkIDEwMDY0NAotLS0tIGEvdGVzdHMvZnVuY3JldHZhbC5jCi0rKysgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNzY29wZXMuYyBiL3Rlc3RzL2Z1bmNzY29wZXMuYwotaW5kZXggOWM5MDE4NTguLmRiY2NiODllIDEwMDY0NAotLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCi0rKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYwotaW5kZXggMDU1YWVkZTAuLjljMzk0ZGQwIDEwMDY0NAotLS0tIGEvdGVzdHMvZ2V0c3JjX2RpZS5jCi0rKysgYi90ZXN0cy9nZXRzcmNfZGllLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxsaWJlbGYuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9saW5lMmFkZHIuYyBiL3Rlc3RzL2xpbmUyYWRkci5jCi1pbmRleCBlMGQ2NWQzZC4uOWJmMDAyM2IgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saW5lMmFkZHIuYwotKysrIGIvdGVzdHMvbGluZTJhZGRyLmMKLUBAIC0yNiw3ICsyNiw3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotIAotIAotIHN0YXRpYyB2b2lkCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbG93X2hpZ2hfcGMuYyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLWluZGV4IGQwZjQzMDIzLi44ZGE0ZmJkZiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xvd19oaWdoX3BjLmMKLSsrKyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotaW5kZXggZDUwMzU1ZTkuLjNjNDFmNDBiIDEwMDY0NAotLS0tIGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi0rKysgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAKLSAjaW5jbHVkZSAibWQ1LmgiCi0gI2luY2x1ZGUgInNoYTEuaCIKLWRpZmYgLS1naXQgYS90ZXN0cy9yZHdybW1hcC5jIGIvdGVzdHMvcmR3cm1tYXAuYwotaW5kZXggNmYwMjdkZmUuLjFjZTVlNmVkIDEwMDY0NAotLS0tIGEvdGVzdHMvcmR3cm1tYXAuYwotKysrIGIvdGVzdHMvcmR3cm1tYXAuYwotQEAgLTE5LDcgKzE5LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3NhcmlkeC5jIGIvdGVzdHMvc2FyaWR4LmMKLWluZGV4IDhhNDUwZDgyLi5iMzg3ODAxMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NhcmlkeC5jCi0rKysgYi90ZXN0cy9zYXJpZHguYwotQEAgLTE3LDcgKzE3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLWluZGV4IDMwMzNmZWRjLi44ZTg4OGRiMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLSsrKyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhcmxvY3MuYyBiL3Rlc3RzL3ZhcmxvY3MuYwotaW5kZXggYzNmYmE4OWUuLmUwNDNlYTJjIDEwMDY0NAotLS0tIGEvdGVzdHMvdmFybG9jcy5jCi0rKysgYi90ZXN0cy92YXJsb2NzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL3Zkc29zeW1zLmMgYi90ZXN0cy92ZHNvc3ltcy5jCi1pbmRleCBiODc2YzEwYi4uYWZiMjgyMzIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92ZHNvc3ltcy5jCi0rKysgYi90ZXN0cy92ZHNvc3ltcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoCmluZGV4IGUwMjkxYjQuLjhjNDhmNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2gKQEAgLTEsMyArMSw2IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiBGcm9tIDc3Y2I0YTUzYzI3MGQ1ODU0ZDNhZjI0ZjE5NTQ3YmMzZGU4MjUyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYW1lcyBDb3dnaWxsIDxqYW1lczQxMEBjb3dnaWxsLm9yZy51az4KIERhdGU6IE1vbiwgNSBKYW4gMjAxNSAxNToxNjo1OCArMDAwMApAQCAtOCwxMCArMTEsNiBAQAoga2VybmVsIHdpbGwgbm90IGxvYWQgYmluYXJpZXMgY29udGFpbmluZyBpdCkuCiAKIFNpZ25lZC1vZmYtYnk6IEphbWVzIENvd2dpbGwgPGphbWVzNDEwQGNvd2dpbGwub3JnLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQogLS0tCiAgYmFja2VuZHMvbWlwc19pbml0LmMgfCA2ICstLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWFybV9iYWNrZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtYXJtX2JhY2tlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVkODExOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWFybV9iYWNrZW5kLnBhdGNoCkBAIC0wLDAgKzEsNjI3IEBACitGcm9tIGE5NWYzNzBiYzI2OTBjMTUwYzQ2ZjIxNTU0M2RlMjc4NDY5OTAwZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjQyOjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFybV9iYWNrZW5kCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCithcm1fYmFja2VuZC5kaWZmIGFuZCByZWJhc2UgdG8gMC4xNzIKKworaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3MC0wLjUuZGViaWFuLnRhci54egorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9hcm1faW5pdC5jICAgICAgICAgICAgICAgICB8ICAxOCArKysrLQorIGJhY2tlbmRzL2FybV9yZWdzLmMgICAgICAgICAgICAgICAgIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL2FybV9yZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDQzICsrKysrKysrKysrLQorIGJhY2tlbmRzL2xpYmVibF9hcm0uaCAgICAgICAgICAgICAgIHwgICA5ICsrKworIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDExICsrKworIHRlc3RzL3J1bi1hZGRyY2ZpLnNoICAgICAgICAgICAgICAgIHwgIDkzICsrKysrKysrKysrKysrKysrKysrKysrKy0KKyB0ZXN0cy9ydW4tYWxscmVncy5zaCAgICAgICAgICAgICAgICB8ICA5NSArKysrKysrKysrKysrKysrKysrKysrKysrLQorIHRlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoIHwgIDExICsrLQorIDggZmlsZXMgY2hhbmdlZCwgNDAwIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9saWJlYmxfYXJtLmgKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FybV9pbml0LmMgYi9iYWNrZW5kcy9hcm1faW5pdC5jCitpbmRleCBmMmIxYjExLi4xYjcxZjE2IDEwMDY0NAorLS0tIGEvYmFja2VuZHMvYXJtX2luaXQuYworKysrIGIvYmFja2VuZHMvYXJtX2luaXQuYworQEAgLTM1LDIwICszNSwzMSBAQAorICNkZWZpbmUgUkVMT0NfUFJFRklYCVJfQVJNXworICNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisgCisrI2luY2x1ZGUgImxpYmVibF9hcm0uaCIKKysKKyAvKiBUaGlzIGRlZmluZXMgdGhlIGNvbW1vbiByZWxvYyBob29rcyBiYXNlZCBvbiBhcm1fcmVsb2MuZGVmLiAgKi8KKyAjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCisgCisgCisgY29uc3QgY2hhciAqCistYXJtX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKythcm1faW5pdCAoRWxmICplbGYsCisgCSAgR0VsZl9IYWxmIG1hY2hpbmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorIAkgIEVibCAqZWgsCisgCSAgc2l6ZV90IGVobGVuKQorIHsKKysgIGludCBzb2Z0X2Zsb2F0ID0gMDsKKysKKyAgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLworICAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQorICAgICByZXR1cm4gTlVMTDsKKyAKKysgIGlmIChlbGYpIHsKKysgICAgR0VsZl9FaGRyIGVoZHJfbWVtOworKyAgICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVsZiwgJmVoZHJfbWVtKTsKKysgICAgaWYgKGVoZHIgJiYgKGVoZHItPmVfZmxhZ3MgJiBFRl9BUk1fU09GVF9GTE9BVCkpCisrICAgICAgc29mdF9mbG9hdCA9IDE7CisrICB9CisrCisgICAvKiBXZSBoYW5kbGUgaXQuICAqLworICAgZWgtPm5hbWUgPSAiQVJNIjsKKyAgIGFybV9pbml0X3JlbG9jIChlaCk7CitAQCAtNjAsNyArNzEsMTAgQEAgYXJtX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAgIEhPT0sgKGVoLCBjb3JlX25vdGUpOworICAgSE9PSyAoZWgsIGF1eHZfaW5mbyk7CisgICBIT09LIChlaCwgY2hlY2tfb2JqZWN0X2F0dHJpYnV0ZSk7CistICBIT09LIChlaCwgcmV0dXJuX3ZhbHVlX2xvY2F0aW9uKTsKKysgIGlmIChzb2Z0X2Zsb2F0KQorKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9zb2Z0OworKyAgZWxzZQorKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9oYXJkOworICAgSE9PSyAoZWgsIGFiaV9jZmkpOworICAgSE9PSyAoZWgsIGNoZWNrX3JlbG9jX3RhcmdldF90eXBlKTsKKyAgIEhPT0sgKGVoLCBzeW1ib2xfdHlwZV9uYW1lKTsKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1fcmVncy5jIGIvYmFja2VuZHMvYXJtX3JlZ3MuYworaW5kZXggYTQ2YTRjOS4uNDE4YzkzMSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9yZWdzLmMKKysrKyBiL2JhY2tlbmRzL2FybV9yZWdzLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorIAorICNkZWZpbmUgQkFDS0VORCBhcm1fCitAQCAtNzYsNiArNzcsOSBAQCBhcm1fcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIDE2ICsgMCAuLi4gMTYgKyA3OgorKyAgICAgIC8qIEFBRFdBUkYgc2F5cyB0aGF0IHRoZXJlIGFyZSBubyByZWdpc3RlcnMgaW4gdGhhdCByYW5nZSwKKysgICAgICAgKiBidXQgZ2NjIG1hcHMgRlBBIHJlZ2lzdGVycyBoZXJlCisrICAgICAgICovCisgICAgICAgcmVnbm8gKz0gOTYgLSAxNjsKKyAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgY2FzZSA5NiArIDAgLi4uIDk2ICsgNzoKK0BAIC04NywxMSArOTEsMTM5IEBAIGFybV9yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisgICAgICAgbmFtZWxlbiA9IDI7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgNjQgKyAwIC4uLiA2NCArIDk6CisrICAgICAgKnNldG5hbWUgPSAiVkZQIjsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworKyAgICAgIG5hbWVbMF0gPSAncyc7CisrICAgICAgbmFtZVsxXSA9IHJlZ25vIC0gNjQgKyAnMCc7CisrICAgICAgbmFtZWxlbiA9IDI7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgNjQgKyAxMCAuLi4gNjQgKyAzMToKKysgICAgICAqc2V0bmFtZSA9ICJWRlAiOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CisrICAgICAgbmFtZVswXSA9ICdzJzsKKysgICAgICBuYW1lWzFdID0gKHJlZ25vIC0gNjQpIC8gMTAgKyAnMCc7CisrICAgICAgbmFtZVsyXSA9IChyZWdubyAtIDY0KSAlIDEwICsgJzAnOworKyAgICAgIG5hbWVsZW4gPSAzOworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIDEwNCArIDAgLi4uIDEwNCArIDc6CisrICAgICAgLyogWFhYIFRPRE86CisrICAgICAgICogVGhpcyBjYW4gYmUgZWl0aGVyIGludGVsIHdpcmVsZXNzIE1NWCBnZW5lcmFsIHB1cnBvc2UvY29udHJvbAorKyAgICAgICAqIHJlZ2lzdGVycyBvciB4c2NhbGUgYWNjdW11bGF0b3IsIHdoaWNoIGhhdmUgZGlmZmVyZW50IHVzYWdlLgorKyAgICAgICAqIFdlIG9ubHkgaGF2ZSB0aGUgaW50ZWwgd2lyZWxlc3MgTU1YIGhlcmUgbm93LgorKyAgICAgICAqIFRoZSBuYW1lIG5lZWRzIHRvIGJlIGNoYW5nZWQgZm9yIHRoZSB4c2NhbGUgYWNjdW11bGF0b3IgdG9vLiAqLworKyAgICAgICpzZXRuYW1lID0gIk1NWCI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBtZW1jcHkobmFtZSwgIndjZ3IiLCA0KTsKKysgICAgICBuYW1lWzRdID0gcmVnbm8gLSAxMDQgKyAnMCc7CisrICAgICAgbmFtZWxlbiA9IDU7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgMTEyICsgMCAuLi4gMTEyICsgOToKKysgICAgICAqc2V0bmFtZSA9ICJNTVgiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOworKyAgICAgICpiaXRzID0gNjQ7CisrICAgICAgbmFtZVswXSA9ICd3JzsKKysgICAgICBuYW1lWzFdID0gJ3InOworKyAgICAgIG5hbWVbMl0gPSByZWdubyAtIDExMiArICcwJzsKKysgICAgICBuYW1lbGVuID0gMzsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSAxMTIgKyAxMCAuLi4gMTEyICsgMTU6CisrICAgICAgKnNldG5hbWUgPSAiTU1YIjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICAqYml0cyA9IDY0OworKyAgICAgIG5hbWVbMF0gPSAndyc7CisrICAgICAgbmFtZVsxXSA9ICdyJzsKKysgICAgICBuYW1lWzJdID0gJzEnOworKyAgICAgIG5hbWVbM10gPSByZWdubyAtIDExMiAtIDEwICsgJzAnOworKyAgICAgIG5hbWVsZW4gPSA0OworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlIDEyODoKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisgICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisgICAgICAgcmV0dXJuIHN0cGNweSAobmFtZSwgInNwc3IiKSArIDEgLSBuYW1lOworIAorKyAgICBjYXNlIDEyOToKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9maXEiKSArIDEgLSBuYW1lOworKworKyAgICBjYXNlIDEzMDoKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9pcnEiKSArIDEgLSBuYW1lOworKworKyAgICBjYXNlIDEzMToKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9hYnQiKSArIDEgLSBuYW1lOworKworKyAgICBjYXNlIDEzMjoKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl91bmQiKSArIDEgLSBuYW1lOworKworKyAgICBjYXNlIDEzMzoKKysgICAgICAqc2V0bmFtZSA9ICJzdGF0ZSI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICAgICAgcmV0dXJuIHN0cGNweShuYW1lLCAic3Bzcl9zdmMiKSArIDEgLSBuYW1lOworKworKyAgICBjYXNlIDE0NCAuLi4gMTUwOgorKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfdXNyIiwgcmVnbm8gLSAxNDQgKyA4KSArIDE7CisrCisrICAgIGNhc2UgMTUxIC4uLiAxNTc6CisrICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7CisrICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF9maXEiLCByZWdubyAtIDE1MSArIDgpICsgMTsKKysKKysgICAgY2FzZSAxNTggLi4uIDE1OToKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX2lycSIsIHJlZ25vIC0gMTU4ICsgMTMpICsgMTsKKysKKysgICAgY2FzZSAxNjAgLi4uIDE2MToKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX2FidCIsIHJlZ25vIC0gMTYwICsgMTMpICsgMTsKKysKKysgICAgY2FzZSAxNjIgLi4uIDE2MzoKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX3VuZCIsIHJlZ25vIC0gMTYyICsgMTMpICsgMTsKKysKKysgICAgY2FzZSAxNjQgLi4uIDE2NToKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX3N2YyIsIHJlZ25vIC0gMTY0ICsgMTMpICsgMTsKKysKKysgICAgY2FzZSAxOTIgLi4uIDE5OToKKysgICAgICpzZXRuYW1lID0gIk1NWCI7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKKysgICAgICBuYW1lWzBdID0gJ3cnOworKyAgICAgIG5hbWVbMV0gPSAnYyc7CisrICAgICAgbmFtZVsyXSA9IHJlZ25vIC0gMTkyICsgJzAnOworKyAgICAgIG5hbWVsZW4gPSAzOworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlIDI1NiArIDAgLi4uIDI1NiArIDk6CisrICAgICAgLyogWFhYIFRPRE86IE5lb24gYWxzbyB1c2VzIHRob3NlIHJlZ2lzdGVycyBhbmQgY2FuIGNvbnRhaW4KKysgICAgICAgKiBib3RoIGZsb2F0IGFuZCBpbnRlZ2VycyAqLworICAgICAgICpzZXRuYW1lID0gIlZGUCI7CisgICAgICAgKnR5cGUgPSBEV19BVEVfZmxvYXQ7CisgICAgICAgKmJpdHMgPSA2NDsKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1fcmV0dmFsLmMgYi9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKK2luZGV4IDFjMjhmMDEuLjMxM2U0ZWIgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL2FybV9yZXR2YWwuYworQEAgLTQ4LDYgKzQ4LDEzIEBAIHN0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQorICNkZWZpbmUgbmxvY19pbnRyZWcJMQorICNkZWZpbmUgbmxvY19pbnRyZWdzKG4pCSgyICogKG4pKQorIAorKy8qIGYxICAqLyAvKiBYWFggVE9ETzogZjAgY2FuIGFsc28gaGF2ZSBudW1iZXIgOTYgaWYgcHJvZ3JhbSB3YXMgY29tcGlsZWQgd2l0aCAtbWFiaT1hYXBjcyAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcxNiB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfZnByZWcgIDEKKysKKyAvKiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0dXJlIGFuZCBpcyBhY3R1YWxseSBzdG9yZWQgaW4gc3RhY2sgc3BhY2UKKyAgICBwYXNzZWQgaW4gYSBoaWRkZW4gYXJndW1lbnQgYnkgdGhlIGNhbGxlci4gIEJ1dCwgdGhlIGNvbXBpbGVyCisgICAgaGVscGZ1bGx5IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhhdCBzcGFjZSBpbiByMC4gICovCitAQCAtNTgsOCArNjUsOSBAQCBzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KKyAjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKKyAKKyAKKy1pbnQKKy1hcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisrc3RhdGljIGludAorK2FybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsCisrCQkgICAgICAgICAgICBpbnQgc29mdF9mbG9hdCkKKyB7CisgICAvKiBTdGFydCB3aXRoIHRoZSBmdW5jdGlvbidzIHR5cGUsIGFuZCBnZXQgdGhlIERXX0FUX3R5cGUgYXR0cmlidXRlLAorICAgICAgd2hpY2ggaXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybiB2YWx1ZS4gICovCitAQCAtOTgsNiArMTA2LDIxIEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAJICAgIGVsc2UKKyAJICAgICAgcmV0dXJuIC0xOworIAkgIH0KKysJaWYgKHRhZyA9PSBEV19UQUdfYmFzZV90eXBlKQorKwkgIHsKKysJICAgIER3YXJmX1dvcmQgZW5jb2Rpbmc7CisrCSAgICBpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfZW5jb2RpbmcsCisrCQkJCSAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCisrCSAgICAgIHJldHVybiAtMTsKKysKKysJICAgIGlmICgoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KSAmJiAhc29mdF9mbG9hdCkKKysJICAgICAgeworKwkJKmxvY3AgPSBsb2NfZnByZWc7CisrCQlpZiAoc2l6ZSA8PSA4KQorKwkJICByZXR1cm4gbmxvY19mcHJlZzsKKysJCWdvdG8gYWdncmVnYXRlOworKwkgICAgICB9CisrCSAgfQorIAlpZiAoc2l6ZSA8PSAxNikKKyAJICB7CisgCSAgaW50cmVnOgorQEAgLTEwNiw2ICsxMjksNyBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisgCSAgfQorIAorICAgICAgIGFnZ3JlZ2F0ZToKKysJLyogWFhYIFRPRE8gc29tZXRpbWVzIGFnZ3JlZ2F0ZXMgYXJlIHJldHVybmVkIGluIHIwICgtbWFiaT1hYXBjcykgKi8KKyAJKmxvY3AgPSBsb2NfYWdncmVnYXRlOworIAlyZXR1cm4gbmxvY19hZ2dyZWdhdGU7CisgICAgICAgfQorQEAgLTEyNSwzICsxNDksMTggQEAgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorICAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KKyAgIHJldHVybiAtMjsKKyB9CisrCisrLyogcmV0dXJuIGxvY2F0aW9uIGZvciAtbWFiaT1hcGNzLWdudSAtbXNvZnQtZmxvYXQgKi8KKytpbnQKKythcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX3NvZnQgKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyt7CisrICAgcmV0dXJuIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMSk7CisrfQorKworKy8qIHJldHVybiBsb2NhdGlvbiBmb3IgLW1hYmk9YXBjcy1nbnUgLW1oYXJkLWZsb2F0IChjdXJyZW50IGRlZmF1bHQpICovCisraW50CisrYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9oYXJkIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisreworKyAgIHJldHVybiBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDApOworK30KKysKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9saWJlYmxfYXJtLmggYi9iYWNrZW5kcy9saWJlYmxfYXJtLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jMDA3NzBjCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9saWJlYmxfYXJtLmgKK0BAIC0wLDAgKzEsOSBAQAorKyNpZm5kZWYgX0xJQkVCTF9BUk1fSAorKyNkZWZpbmUgX0xJQkVCTF9BUk1fSCAxCisrCisrI2luY2x1ZGUgPGxpYmR3Lmg+CisrCisrZXh0ZXJuIGludCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX3NvZnQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7CisrZXh0ZXJuIGludCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX2hhcmQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7CisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCitpbmRleCA2YzlmNjFlLi42ZDgyZmVmIDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZi5oCisrKysgYi9saWJlbGYvZWxmLmgKK0BAIC0yNjkyLDYgKzI2OTIsOSBAQCBlbnVtCisgI2RlZmluZSBFRl9BUk1fRUFCSV9WRVI0CTB4MDQwMDAwMDAKKyAjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjUJMHgwNTAwMDAwMAorIAorKy8qIEVJX09TQUJJIHZhbHVlcyAqLworKyNkZWZpbmUgRUxGT1NBQklfQVJNX0FFQUJJICAgIDY0ICAgICAgLyogQ29udGFpbnMgc3ltYm9sIHZlcnNpb25pbmcuICovCisrCisgLyogQWRkaXRpb25hbCBzeW1ib2wgdHlwZXMgZm9yIFRodW1iLiAgKi8KKyAjZGVmaW5lIFNUVF9BUk1fVEZVTkMJCVNUVF9MT1BST0MgLyogQSBUaHVtYiBmdW5jdGlvbi4gICovCisgI2RlZmluZSBTVFRfQVJNXzE2QklUCQlTVFRfSElQUk9DIC8qIEEgVGh1bWIgbGFiZWwuICAqLworQEAgLTI3MDksMTIgKzI3MTIsMTkgQEAgZW51bQorIAorIC8qIFByb2Nlc3NvciBzcGVjaWZpYyB2YWx1ZXMgZm9yIHRoZSBQaGRyIHBfdHlwZSBmaWVsZC4gICovCisgI2RlZmluZSBQVF9BUk1fRVhJRFgJCShQVF9MT1BST0MgKyAxKQkvKiBBUk0gdW53aW5kIHNlZ21lbnQuICAqLworKyNkZWZpbmUgUFRfQVJNX1VOV0lORAkJUFRfQVJNX0VYSURYCisgCisgLyogUHJvY2Vzc29yIHNwZWNpZmljIHZhbHVlcyBmb3IgdGhlIFNoZHIgc2hfdHlwZSBmaWVsZC4gICovCisgI2RlZmluZSBTSFRfQVJNX0VYSURYCQkoU0hUX0xPUFJPQyArIDEpIC8qIEFSTSB1bndpbmQgc2VjdGlvbi4gICovCisgI2RlZmluZSBTSFRfQVJNX1BSRUVNUFRNQVAJKFNIVF9MT1BST0MgKyAyKSAvKiBQcmVlbXB0aW9uIGRldGFpbHMuICAqLworICNkZWZpbmUgU0hUX0FSTV9BVFRSSUJVVEVTCShTSFRfTE9QUk9DICsgMykgLyogQVJNIGF0dHJpYnV0ZXMgc2VjdGlvbi4gICovCisgCisrLyogUHJvY2Vzc29yIHNwZWNpZmljIHZhbHVlcyBmb3IgdGhlIER5biBkX3RhZyBmaWVsZC4gICovCisrI2RlZmluZSBEVF9BUk1fUkVTRVJWRUQxCShEVF9MT1BST0MgKyAwKQorKyNkZWZpbmUgRFRfQVJNX1NZTVRBQlNaCQkoRFRfTE9QUk9DICsgMSkKKysjZGVmaW5lIERUX0FSTV9QUkVFTVRNQUIJKERUX0xPUFJPQyArIDIpCisrI2RlZmluZSBEVF9BUk1fUkVTRVJWRUQyCShEVF9MT1BST0MgKyAzKQorKyNkZWZpbmUgRFRfQVJNX05VTQkJNAorIAorIC8qIEFBcmNoNjQgcmVsb2NzLiAgKi8KKyAKK0BAIC0zMDA3LDYgKzMwMTcsNyBAQCBlbnVtCisgCQkJCQkgICBUTFMgYmxvY2sgKExEUiwgU1RSKS4gICovCisgI2RlZmluZSBSX0FSTV9UTFNfSUUxMkdQCTExMQkvKiAxMiBiaXQgR09UIGVudHJ5IHJlbGF0aXZlCisgCQkJCQkgICB0byBHT1Qgb3JpZ2luIChMRFIpLiAgKi8KKysvKiAxMTIgLSAxMjcgcHJpdmF0ZSByYW5nZSAqLworICNkZWZpbmUgUl9BUk1fTUVfVE9PCQkxMjgJLyogT2Jzb2xldGUuICAqLworICNkZWZpbmUgUl9BUk1fVEhNX1RMU19ERVNDU0VRCTEyOQorICNkZWZpbmUgUl9BUk1fVEhNX1RMU19ERVNDU0VRMTYJMTI5CitkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWFkZHJjZmkuc2ggYi90ZXN0cy9ydW4tYWRkcmNmaS5zaAoraW5kZXggZmQ4OWQwMi4uNDYyZDdjNSAxMDA3NTUKKy0tLSBhL3Rlc3RzL3J1bi1hZGRyY2ZpLnNoCisrKysgYi90ZXN0cy9ydW4tYWRkcmNmaS5zaAorQEAgLTM1NTQsNiArMzU1NCwzOCBAQCBkd2FyZl9jZmlfYWRkcmZyYW1lICguZWhfZnJhbWUpOiBubyBtYXRjaGluZyBhZGRyZXNzIHJhbmdlCisgCUZQQSByZWcyMSAoZjUpOiB1bmRlZmluZWQKKyAJRlBBIHJlZzIyIChmNik6IHVuZGVmaW5lZAorIAlGUEEgcmVnMjMgKGY3KTogdW5kZWZpbmVkCisrCVZGUCByZWc2NCAoczApOiB1bmRlZmluZWQKKysJVkZQIHJlZzY1IChzMSk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNjYgKHMyKTogdW5kZWZpbmVkCisrCVZGUCByZWc2NyAoczMpOiB1bmRlZmluZWQKKysJVkZQIHJlZzY4IChzNCk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNjkgKHM1KTogdW5kZWZpbmVkCisrCVZGUCByZWc3MCAoczYpOiB1bmRlZmluZWQKKysJVkZQIHJlZzcxIChzNyk6IHVuZGVmaW5lZAorKwlWRlAgcmVnNzIgKHM4KTogdW5kZWZpbmVkCisrCVZGUCByZWc3MyAoczkpOiB1bmRlZmluZWQKKysJVkZQIHJlZzc0IChzMTApOiB1bmRlZmluZWQKKysJVkZQIHJlZzc1IChzMTEpOiB1bmRlZmluZWQKKysJVkZQIHJlZzc2IChzMTIpOiB1bmRlZmluZWQKKysJVkZQIHJlZzc3IChzMTMpOiB1bmRlZmluZWQKKysJVkZQIHJlZzc4IChzMTQpOiB1bmRlZmluZWQKKysJVkZQIHJlZzc5IChzMTUpOiB1bmRlZmluZWQKKysJVkZQIHJlZzgwIChzMTYpOiB1bmRlZmluZWQKKysJVkZQIHJlZzgxIChzMTcpOiB1bmRlZmluZWQKKysJVkZQIHJlZzgyIChzMTgpOiB1bmRlZmluZWQKKysJVkZQIHJlZzgzIChzMTkpOiB1bmRlZmluZWQKKysJVkZQIHJlZzg0IChzMjApOiB1bmRlZmluZWQKKysJVkZQIHJlZzg1IChzMjEpOiB1bmRlZmluZWQKKysJVkZQIHJlZzg2IChzMjIpOiB1bmRlZmluZWQKKysJVkZQIHJlZzg3IChzMjMpOiB1bmRlZmluZWQKKysJVkZQIHJlZzg4IChzMjQpOiB1bmRlZmluZWQKKysJVkZQIHJlZzg5IChzMjUpOiB1bmRlZmluZWQKKysJVkZQIHJlZzkwIChzMjYpOiB1bmRlZmluZWQKKysJVkZQIHJlZzkxIChzMjcpOiB1bmRlZmluZWQKKysJVkZQIHJlZzkyIChzMjgpOiB1bmRlZmluZWQKKysJVkZQIHJlZzkzIChzMjkpOiB1bmRlZmluZWQKKysJVkZQIHJlZzk0IChzMzApOiB1bmRlZmluZWQKKysJVkZQIHJlZzk1IChzMzEpOiB1bmRlZmluZWQKKyAJRlBBIHJlZzk2IChmMCk6IHVuZGVmaW5lZAorIAlGUEEgcmVnOTcgKGYxKTogdW5kZWZpbmVkCisgCUZQQSByZWc5OCAoZjIpOiB1bmRlZmluZWQKK0BAIC0zNTYyLDcgKzM1OTQsNjYgQEAgZHdhcmZfY2ZpX2FkZHJmcmFtZSAoLmVoX2ZyYW1lKTogbm8gbWF0Y2hpbmcgYWRkcmVzcyByYW5nZQorIAlGUEEgcmVnMTAxIChmNSk6IHVuZGVmaW5lZAorIAlGUEEgcmVnMTAyIChmNik6IHVuZGVmaW5lZAorIAlGUEEgcmVnMTAzIChmNyk6IHVuZGVmaW5lZAorLQlpbnRlZ2VyIHJlZzEyOCAoc3Bzcik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA0ICh3Y2dyMCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA1ICh3Y2dyMSk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA2ICh3Y2dyMik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA3ICh3Y2dyMyk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA4ICh3Y2dyNCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTA5ICh3Y2dyNSk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTEwICh3Y2dyNik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTExICh3Y2dyNyk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTEyICh3cjApOiB1bmRlZmluZWQKKysJTU1YIHJlZzExMyAod3IxKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTQgKHdyMik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTE1ICh3cjMpOiB1bmRlZmluZWQKKysJTU1YIHJlZzExNiAod3I0KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMTcgKHdyNSk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTE4ICh3cjYpOiB1bmRlZmluZWQKKysJTU1YIHJlZzExOSAod3I3KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjAgKHdyOCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTIxICh3cjkpOiB1bmRlZmluZWQKKysJTU1YIHJlZzEyMiAod3IxMCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTIzICh3cjExKTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjQgKHdyMTIpOiB1bmRlZmluZWQKKysJTU1YIHJlZzEyNSAod3IxMyk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTI2ICh3cjE0KTogdW5kZWZpbmVkCisrCU1NWCByZWcxMjcgKHdyMTUpOiB1bmRlZmluZWQKKysJc3RhdGUgcmVnMTI4IChzcHNyKTogdW5kZWZpbmVkCisrCXN0YXRlIHJlZzEyOSAoc3Bzcl9maXEpOiB1bmRlZmluZWQKKysJc3RhdGUgcmVnMTMwIChzcHNyX2lycSk6IHVuZGVmaW5lZAorKwlzdGF0ZSByZWcxMzEgKHNwc3JfYWJ0KTogdW5kZWZpbmVkCisrCXN0YXRlIHJlZzEzMiAoc3Bzcl91bmQpOiB1bmRlZmluZWQKKysJc3RhdGUgcmVnMTMzIChzcHNyX3N2Yyk6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE0NCAocjhfdXNyKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTQ1IChyOV91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNDYgKHIxMF91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNDcgKHIxMV91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNDggKHIxMl91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNDkgKHIxM191c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTAgKHIxNF91c3IpOiB1bmRlZmluZWQKKysJaW50ZWdlciByZWcxNTEgKHI4X2ZpcSk6IHVuZGVmaW5lZAorKwlpbnRlZ2VyIHJlZzE1MiAocjlfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTUzIChyMTBfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU0IChyMTFfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU1IChyMTJfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU2IChyMTNfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU3IChyMTRfZmlxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU4IChyMTNfaXJxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTU5IChyMTRfaXJxKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTYwIChyMTNfYWJ0KTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTYxIChyMTRfYWJ0KTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTYyIChyMTNfdW5kKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTYzIChyMTRfdW5kKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTY0IChyMTNfc3ZjKTogdW5kZWZpbmVkCisrCWludGVnZXIgcmVnMTY1IChyMTRfc3ZjKTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTIgKHdjMCk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTkzICh3YzEpOiB1bmRlZmluZWQKKysJTU1YIHJlZzE5NCAod2MyKTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTUgKHdjMyk6IHVuZGVmaW5lZAorKwlNTVggcmVnMTk2ICh3YzQpOiB1bmRlZmluZWQKKysJTU1YIHJlZzE5NyAod2M1KTogdW5kZWZpbmVkCisrCU1NWCByZWcxOTggKHdjNik6IHVuZGVmaW5lZAorKwlNTVggcmVnMTk5ICh3YzcpOiB1bmRlZmluZWQKKyAJVkZQIHJlZzI1NiAoZDApOiB1bmRlZmluZWQKKyAJVkZQIHJlZzI1NyAoZDEpOiB1bmRlZmluZWQKKyAJVkZQIHJlZzI1OCAoZDIpOiB1bmRlZmluZWQKK2RpZmYgLS1naXQgYS90ZXN0cy9ydW4tYWxscmVncy5zaCBiL3Rlc3RzL3J1bi1hbGxyZWdzLnNoCitpbmRleCA3ZGRkNDUyLi5hMzFkYmE0IDEwMDc1NQorLS0tIGEvdGVzdHMvcnVuLWFsbHJlZ3Muc2gKKysrKyBiL3Rlc3RzL3J1bi1hbGxyZWdzLnNoCitAQCAtMjY3Miw3ICsyNjcyLDI4IEBAIGludGVnZXIgcmVnaXN0ZXJzOgorIAkgMTM6IHNwIChzcCksIGFkZHJlc3MgMzIgYml0cworIAkgMTQ6IGxyIChsciksIGFkZHJlc3MgMzIgYml0cworIAkgMTU6IHBjIChwYyksIGFkZHJlc3MgMzIgYml0cworLQkxMjg6IHNwc3IgKHNwc3IpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE0NDogcjhfdXNyIChyOF91c3IpLCBzaWduZWQgMzIgYml0cworKwkxNDU6IHI5X3VzciAocjlfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTQ2OiByMTBfdXNyIChyMTBfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTQ3OiByMTFfdXNyIChyMTFfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTQ4OiByMTJfdXNyIChyMTJfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTQ5OiByMTNfdXNyIChyMTNfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTUwOiByMTRfdXNyIChyMTRfdXNyKSwgc2lnbmVkIDMyIGJpdHMKKysJMTUxOiByOF9maXEgKHI4X2ZpcSksIHNpZ25lZCAzMiBiaXRzCisrCTE1MjogcjlfZmlxIChyOV9maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTM6IHIxMF9maXEgKHIxMF9maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTQ6IHIxMV9maXEgKHIxMV9maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTU6IHIxMl9maXEgKHIxMl9maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTY6IHIxM19maXEgKHIxM19maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTc6IHIxNF9maXEgKHIxNF9maXEpLCBzaWduZWQgMzIgYml0cworKwkxNTg6IHIxM19pcnEgKHIxM19pcnEpLCBzaWduZWQgMzIgYml0cworKwkxNTk6IHIxNF9pcnEgKHIxNF9pcnEpLCBzaWduZWQgMzIgYml0cworKwkxNjA6IHIxM19hYnQgKHIxM19hYnQpLCBzaWduZWQgMzIgYml0cworKwkxNjE6IHIxNF9hYnQgKHIxNF9hYnQpLCBzaWduZWQgMzIgYml0cworKwkxNjI6IHIxM191bmQgKHIxM191bmQpLCBzaWduZWQgMzIgYml0cworKwkxNjM6IHIxNF91bmQgKHIxNF91bmQpLCBzaWduZWQgMzIgYml0cworKwkxNjQ6IHIxM19zdmMgKHIxM19zdmMpLCBzaWduZWQgMzIgYml0cworKwkxNjU6IHIxNF9zdmMgKHIxNF9zdmMpLCBzaWduZWQgMzIgYml0cworIEZQQSByZWdpc3RlcnM6CisgCSAxNjogZjAgKGYwKSwgZmxvYXQgOTYgYml0cworIAkgMTc6IGYxIChmMSksIGZsb2F0IDk2IGJpdHMKK0BAIC0yNjkwLDcgKzI3MTEsNzIgQEAgRlBBIHJlZ2lzdGVyczoKKyAJMTAxOiBmNSAoZjUpLCBmbG9hdCA5NiBiaXRzCisgCTEwMjogZjYgKGY2KSwgZmxvYXQgOTYgYml0cworIAkxMDM6IGY3IChmNyksIGZsb2F0IDk2IGJpdHMKKytNTVggcmVnaXN0ZXJzOgorKwkxMDQ6IHdjZ3IwICh3Y2dyMCksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTA1OiB3Y2dyMSAod2NncjEpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEwNjogd2NncjIgKHdjZ3IyKSwgdW5zaWduZWQgMzIgYml0cworKwkxMDc6IHdjZ3IzICh3Y2dyMyksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTA4OiB3Y2dyNCAod2NncjQpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEwOTogd2NncjUgKHdjZ3I1KSwgdW5zaWduZWQgMzIgYml0cworKwkxMTA6IHdjZ3I2ICh3Y2dyNiksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTExOiB3Y2dyNyAod2NncjcpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTExMjogd3IwICh3cjApLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExMzogd3IxICh3cjEpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExNDogd3IyICh3cjIpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExNTogd3IzICh3cjMpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExNjogd3I0ICh3cjQpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExNzogd3I1ICh3cjUpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExODogd3I2ICh3cjYpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTExOTogd3I3ICh3cjcpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyMDogd3I4ICh3cjgpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyMTogd3I5ICh3cjkpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyMjogd3IxMCAod3IxMCksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTIzOiB3cjExICh3cjExKSwgdW5zaWduZWQgNjQgYml0cworKwkxMjQ6IHdyMTIgKHdyMTIpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTEyNTogd3IxMyAod3IxMyksIHVuc2lnbmVkIDY0IGJpdHMKKysJMTI2OiB3cjE0ICh3cjE0KSwgdW5zaWduZWQgNjQgYml0cworKwkxMjc6IHdyMTUgKHdyMTUpLCB1bnNpZ25lZCA2NCBiaXRzCisrCTE5Mjogd2MwICh3YzApLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5Mzogd2MxICh3YzEpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5NDogd2MyICh3YzIpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5NTogd2MzICh3YzMpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5Njogd2M0ICh3YzQpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5Nzogd2M1ICh3YzUpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5ODogd2M2ICh3YzYpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTE5OTogd2M3ICh3YzcpLCB1bnNpZ25lZCAzMiBiaXRzCisgVkZQIHJlZ2lzdGVyczoKKysJIDY0OiBzMCAoczApLCBmbG9hdCAzMiBiaXRzCisrCSA2NTogczEgKHMxKSwgZmxvYXQgMzIgYml0cworKwkgNjY6IHMyIChzMiksIGZsb2F0IDMyIGJpdHMKKysJIDY3OiBzMyAoczMpLCBmbG9hdCAzMiBiaXRzCisrCSA2ODogczQgKHM0KSwgZmxvYXQgMzIgYml0cworKwkgNjk6IHM1IChzNSksIGZsb2F0IDMyIGJpdHMKKysJIDcwOiBzNiAoczYpLCBmbG9hdCAzMiBiaXRzCisrCSA3MTogczcgKHM3KSwgZmxvYXQgMzIgYml0cworKwkgNzI6IHM4IChzOCksIGZsb2F0IDMyIGJpdHMKKysJIDczOiBzOSAoczkpLCBmbG9hdCAzMiBiaXRzCisrCSA3NDogczEwIChzMTApLCBmbG9hdCAzMiBiaXRzCisrCSA3NTogczExIChzMTEpLCBmbG9hdCAzMiBiaXRzCisrCSA3NjogczEyIChzMTIpLCBmbG9hdCAzMiBiaXRzCisrCSA3NzogczEzIChzMTMpLCBmbG9hdCAzMiBiaXRzCisrCSA3ODogczE0IChzMTQpLCBmbG9hdCAzMiBiaXRzCisrCSA3OTogczE1IChzMTUpLCBmbG9hdCAzMiBiaXRzCisrCSA4MDogczE2IChzMTYpLCBmbG9hdCAzMiBiaXRzCisrCSA4MTogczE3IChzMTcpLCBmbG9hdCAzMiBiaXRzCisrCSA4MjogczE4IChzMTgpLCBmbG9hdCAzMiBiaXRzCisrCSA4MzogczE5IChzMTkpLCBmbG9hdCAzMiBiaXRzCisrCSA4NDogczIwIChzMjApLCBmbG9hdCAzMiBiaXRzCisrCSA4NTogczIxIChzMjEpLCBmbG9hdCAzMiBiaXRzCisrCSA4NjogczIyIChzMjIpLCBmbG9hdCAzMiBiaXRzCisrCSA4NzogczIzIChzMjMpLCBmbG9hdCAzMiBiaXRzCisrCSA4ODogczI0IChzMjQpLCBmbG9hdCAzMiBiaXRzCisrCSA4OTogczI1IChzMjUpLCBmbG9hdCAzMiBiaXRzCisrCSA5MDogczI2IChzMjYpLCBmbG9hdCAzMiBiaXRzCisrCSA5MTogczI3IChzMjcpLCBmbG9hdCAzMiBiaXRzCisrCSA5MjogczI4IChzMjgpLCBmbG9hdCAzMiBiaXRzCisrCSA5MzogczI5IChzMjkpLCBmbG9hdCAzMiBiaXRzCisrCSA5NDogczMwIChzMzApLCBmbG9hdCAzMiBiaXRzCisrCSA5NTogczMxIChzMzEpLCBmbG9hdCAzMiBiaXRzCisgCTI1NjogZDAgKGQwKSwgZmxvYXQgNjQgYml0cworIAkyNTc6IGQxIChkMSksIGZsb2F0IDY0IGJpdHMKKyAJMjU4OiBkMiAoZDIpLCBmbG9hdCA2NCBiaXRzCitAQCAtMjcyMyw2ICsyODA5LDEzIEBAIFZGUCByZWdpc3RlcnM6CisgCTI4NTogZDI5IChkMjkpLCBmbG9hdCA2NCBiaXRzCisgCTI4NjogZDMwIChkMzApLCBmbG9hdCA2NCBiaXRzCisgCTI4NzogZDMxIChkMzEpLCBmbG9hdCA2NCBiaXRzCisrc3RhdGUgcmVnaXN0ZXJzOgorKwkxMjg6IHNwc3IgKHNwc3IpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEyOTogc3Bzcl9maXEgKHNwc3JfZmlxKSwgdW5zaWduZWQgMzIgYml0cworKwkxMzA6IHNwc3JfaXJxIChzcHNyX2lycSksIHVuc2lnbmVkIDMyIGJpdHMKKysJMTMxOiBzcHNyX2FidCAoc3Bzcl9hYnQpLCB1bnNpZ25lZCAzMiBiaXRzCisrCTEzMjogc3Bzcl91bmQgKHNwc3JfdW5kKSwgdW5zaWduZWQgMzIgYml0cworKwkxMzM6IHNwc3Jfc3ZjIChzcHNyX3N2YyksIHVuc2lnbmVkIDMyIGJpdHMKKyBFT0YKKyAKKyAjIFNlZSBydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaCBmb3IgaW5zdHJ1Y3Rpb25zIHRvIHJlZ2VuZXJhdGUKK2RpZmYgLS1naXQgYS90ZXN0cy9ydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaCBiL3Rlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoCitpbmRleCA4NjE3MWM0Li4wMTg2MTJmIDEwMDc1NQorLS0tIGEvdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2gKKysrKyBiL3Rlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoCitAQCAtMzEsMTIgKzMxLDExIEBAIE5vdGUgc2VnbWVudCBvZiA4OTIgYnl0ZXMgYXQgb2Zmc2V0IDB4Mjc0OgorICAgICBwaWQ6IDExMDg3LCBwcGlkOiAxMTA2MywgcGdycDogMTEwODcsIHNpZDogMTEwNjMKKyAgICAgdXRpbWU6IDAuMDAwMDAwLCBzdGltZTogMC4wMTAwMDAsIGN1dGltZTogMC4wMDAwMDAsIGNzdGltZTogMC4wMDAwMDAKKyAgICAgb3JpZ19yMDogLTEsIGZwdmFsaWQ6IDEKKy0gICAgcjA6ICAgICAgICAgICAgIDEgIHIxOiAgIC0xMDkxNjcyNTA4ICByMjogICAtMTA5MTY3MjUwMAorLSAgICByMzogICAgICAgICAgICAgMCAgcjQ6ICAgICAgICAgICAgIDAgIHI1OiAgICAgICAgICAgICAwCistICAgIHI2OiAgICAgICAgIDMzNzI4ICByNzogICAgICAgICAgICAgMCAgcjg6ICAgICAgICAgICAgIDAKKy0gICAgcjk6ICAgICAgICAgICAgIDAgIHIxMDogIC0xMjI1NzAzNDk2ICByMTE6ICAtMTA5MTY3Mjg0NAorLSAgICByMTI6ICAgICAgICAgICAgMCAgc3A6ICAgIDB4YmVlZTY0ZjQgIGxyOiAgICAweGI2ZGMzZjQ4CistICAgIHBjOiAgICAweDAwMDA4NTAwICBzcHNyOiAgMHg2MDAwMDAxMAorKyAgICByMDogICAgICAgICAgICAxICByMTogIC0xMDkxNjcyNTA4ICByMjogIC0xMDkxNjcyNTAwICByMzogICAgICAgICAgICAwCisrICAgIHI0OiAgICAgICAgICAgIDAgIHI1OiAgICAgICAgICAgIDAgIHI2OiAgICAgICAgMzM3MjggIHI3OiAgICAgICAgICAgIDAKKysgICAgcjg6ICAgICAgICAgICAgMCAgcjk6ICAgICAgICAgICAgMCAgcjEwOiAtMTIyNTcwMzQ5NiAgcjExOiAtMTA5MTY3Mjg0NAorKyAgICByMTI6ICAgICAgICAgICAwICBzcDogICAweGJlZWU2NGY0ICBscjogICAweGI2ZGMzZjQ4ICBwYzogICAweDAwMDA4NTAwCisrICAgIHNwc3I6ICAweDYwMDAwMDEwCisgICBDT1JFICAgICAgICAgICAgICAgICAxMjQgIFBSUFNJTkZPCisgICAgIHN0YXRlOiAwLCBzbmFtZTogUiwgem9tYjogMCwgbmljZTogMCwgZmxhZzogMHgwMDQwMDUwMAorICAgICB1aWQ6IDAsIGdpZDogMCwgcGlkOiAxMTA4NywgcHBpZDogMTEwNjMsIHBncnA6IDExMDg3LCBzaWQ6IDExMDYzCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWRpc2FibGVfd2Vycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtZGlzYWJsZV93ZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYzMmI4NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWRpc2FibGVfd2Vycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gNWQ0NTU2NWU3MWRkYWIzZDc4NDgwNzdiNjFlYjBjYTczYzBiY2JjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjkgSnVuIDIwMTggMTY6MDE6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGlzYWJsZSAtV2Vycm9yIGFzIGl0IHRlbmRzIHRvIGJyZWFrIHdpdGggbmV3IGdjYyB2ZXJzaW9ucworCitCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84ODYwMDQKK0xhc3QtVXBkYXRlOiAyMDE4LTAxLTAxCisKK1NpZ25lZC1vZmYtYnk6IEhlbG11dCBHcm9obmUgPGhlbG11dEBzdWJkaXZpLmRlPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorbWRpc2FibGVfd2Vycm9yLnBhdGMgYW5kIHJlYmFzZSB0byAwLjE3MgorCitodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLTAuNS5kZWJpYW4udGFyLnh6CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZy9ldS5hbSB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWcvZXUuYW0gYi9jb25maWcvZXUuYW0KK2luZGV4IGMyY2MzNDkuLjk5YjM2OGUgMTAwNjQ0CistLS0gYS9jb25maWcvZXUuYW0KKysrKyBiL2NvbmZpZy9ldS5hbQorQEAgLTczLDcgKzczLDYgQEAgQU1fQ0ZMQUdTID0gLXN0ZD1nbnU5OSAtV2FsbCAtV3NoYWRvdyAtV2Zvcm1hdD0yIFwKKyAJICAgIC1Xb2xkLXN0eWxlLWRlZmluaXRpb24gLVdzdHJpY3QtcHJvdG90eXBlcyBcCisgCSAgICAkKExPR0lDQUxfT1BfV0FSTklORykgJChEVVBMSUNBVEVEX0NPTkRfV0FSTklORykgXAorIAkgICAgJChOVUxMX0RFUkVGRVJFTkNFX1dBUk5JTkcpICQoSU1QTElDSVRfRkFMTFRIUk9VR0hfV0FSTklORykgXAorLQkgICAgJChpZiAkKCQoKkYpX25vX1dlcnJvciksLC1XZXJyb3IpIFwKKyAJICAgICQoaWYgJCgkKCpGKV9ub19XdW51c2VkKSwsLVd1bnVzZWQgLVdleHRyYSkgXAorIAkgICAgJChpZiAkKCQoKkYpX25vX1dzdGFja191c2FnZSksLCQoU1RBQ0tfVVNBR0VfV0FSTklORykpIFwKKyAJICAgICQoaWYgJCgkKCpGKV9ub19XcGFja2VkX25vdF9hbGlnbmVkKSwtV25vLXBhY2tlZC1ub3QtYWxpZ25lZCwpIFwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtZml4LWdjYzctZnRiZnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1maXgtZ2NjNy1mdGJmcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjg2OWEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtZml4LWdjYzctZnRiZnMucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA5MWMwYTBkYTJhODkzMmYxNjNkNTdkYjVkOWQ4NDdiZWQ2ODIyNTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNTo1OTo1NyArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggZ2NjNyBmdGJmcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorZml4LWdjYzctZnRiZnMuZGlmZiBhbmQgcmViYXNlIHRvIDAuMTcyCisKK2h0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgIHwgMSArCisgYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jIHwgMSArCisgc3JjL2FyLmMgICAgICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworaW5kZXggNTc0ODdiYi4uZTc5NzNhOCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKK0BAIC0zOTAsNiArMzkwLDcgQEAgbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKKyAgICAgICAgIH0KKyAKKyAgICAgICAvKiBGYWxsdGhyb3VnaCB0byBoYW5kbGUgbGFyZ2UgdHlwZXMgKi8KKysgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworIAorICAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorICAgICBsYXJnZToKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK2luZGV4IGRmN2VjM2EuLjk4OGUxZmUgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZXR2YWwuYworQEAgLTE2Nyw2ICsxNjcsNyBAQCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwLCBpbgorIAorIAkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gICovCisgICAgICAgfQorKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisgCisgICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorICAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKK2luZGV4IDgxODExNWIuLmM3N2U5ZjQgMTAwNjQ0CistLS0gYS9zcmMvYXIuYworKysrIGIvc3JjL2FyLmMKK0BAIC0xMDczLDcgKzEwNzMsNyBAQCBkb19vcGVyX2RlbGV0ZSAoY29uc3QgY2hhciAqYXJmbmFtZSwgY2hhciAqKmFyZ3YsIGludCBhcmdjLAorIHN0YXRpYyBib29sCisgbm8wcHJpbnQgKGJvb2wgb2ZtdCwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSwgbG9uZyBpbnQgdmFsKQorIHsKKy0gIGNoYXIgdG1wYnVmW2J1ZnNpemUgKyAxXTsKKysgIGNoYXIgdG1wYnVmW2J1ZnNpemUgKyAxICsgNF07CisgICBpbnQgcmV0ID0gc25wcmludGYgKHRtcGJ1Ziwgc2l6ZW9mICh0bXBidWYpLCBvZm10ID8gIiUtKmxvIiA6ICIlLSpsZCIsCisgCQkgICAgICBidWZzaXplLCB2YWwpOworICAgaWYgKHJldCA+PSAoaW50KSBzaXplb2YgKHRtcGJ1ZikpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWhwcGFfYmFja2VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLWhwcGFfYmFja2VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzVkNGZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtaHBwYV9iYWNrZW5kLnBhdGNoCkBAIC0wLDAgKzEsODQwIEBACitGcm9tIGM1MTBjNmM4NTIzMjQ2ZGQ3OWM2ZWEyOGQxNjQ2YjE1M2MyM2U0OTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjM5OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGhwcGFfYmFja2VuZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQoraHBwYV9iYWNrZW5kLmRpZmYgYW5kIHJlYmFzZSB0byAwLjE3MgorCitodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLTAuNS5kZWJpYW4udGFyLnh6CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICAgIHwgICA5ICstCisgYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oICB8ICAgOSArKworIGJhY2tlbmRzL3BhcmlzY19pbml0LmMgICAgfCAgNzMgKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZWdzLmMgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZXR2YWwuYyAgfCAyMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyAgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICB8ICAxMSArKysKKyA4IGZpbGVzIGNoYW5nZWQsIDcxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX2luaXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9wYXJpc2NfcmVncy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYworCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQoraW5kZXggODBhYTAwZS4uMWU0YjhlOSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCisrKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQorQEAgLTMzLDE2ICszMywxNiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIAorIAorIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKKy0JICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YKKysJICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgcGFyaXNjCisgbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCisgCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAorIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKKy0JICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9yaXNjdl9waWMuYQorKwkgICAgIGxpYmVibF9tNjhrX3BpYy5hIGxpYmVibF9icGZfcGljLmEgbGliZWJsX3Jpc2N2X3BpYy5hIFwKKysJICAgICBsaWJlYmxfcGFyaXNjX3BpYy5hCisgbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKKyBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQorIAorLQorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KKyBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvCisgbGliZXUgPSAuLi9saWIvbGliZXUuYQorQEAgLTEzNSw2ICsxMzUsOSBAQCByaXNjdl9TUkNTID0gcmlzY3ZfaW5pdC5jIHJpc2N2X3N5bWJvbC5jCisgbGliZWJsX3Jpc2N2X3BpY19hX1NPVVJDRVMgPSAkKHJpc2N2X1NSQ1MpCisgYW1fbGliZWJsX3Jpc2N2X3BpY19hX09CSkVDVFMgPSAkKHJpc2N2X1NSQ1M6LmM9Lm9zKQorIAorK3BhcmlzY19TUkNTID0gcGFyaXNjX2luaXQuYyBwYXJpc2Nfc3ltYm9sLmMgcGFyaXNjX3JlZ3MuYyBwYXJpc2NfcmV0dmFsLmMKKytsaWJlYmxfcGFyaXNjX3BpY19hX1NPVVJDRVMgPSAkKHBhcmlzY19TUkNTKQorK2FtX2xpYmVibF9wYXJpc2NfcGljX2FfT0JKRUNUUyA9ICQocGFyaXNjX1NSQ1M6LmM9Lm9zKQorIAorIGxpYmVibF8lLnNvIGxpYmVibF8lLm1hcDogbGliZWJsXyVfcGljLmEgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpCisgCUBybSAtZiAkKEA6LnNvPS5tYXApCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oIGIvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjQ3M2I3OQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCitAQCAtMCwwICsxLDkgQEAKKysjaWZuZGVmIF9MSUJFQkxfSFBQQV9ICisrI2RlZmluZSBfTElCRUJMX0hQUEFfSCAxCisrCisrI2luY2x1ZGUgPGxpYmR3Lmg+CisrCisrZXh0ZXJuIGludCBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzMyKER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOworK2V4dGVybiBpbnQgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl82NChEd2FyZl9EaWUgKiwgY29uc3QgRHdhcmZfT3AgKipsb2NwKTsKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jIGIvYmFja2VuZHMvcGFyaXNjX2luaXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmYxZTQwMWMKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19pbml0LmMKK0BAIC0wLDAgKzEsNzMgQEAKKysvKiBJbml0aWFsaXphdGlvbiBvZiBQQS1SSVNDIHNwZWNpZmljIGJhY2tlbmQgbGlicmFyeS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUsIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckByZWRoYXQuY29tPiwgMjAwMi4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNkZWZpbmUgQkFDS0VORAkJcGFyaXNjXworKyNkZWZpbmUgUkVMT0NfUFJFRklYCVJfUEFSSVNDXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrI2luY2x1ZGUgImxpYmVibF9wYXJpc2MuaCIKKysKKysvKiBUaGlzIGRlZmluZXMgdGhlIGNvbW1vbiByZWxvYyBob29rcyBiYXNlZCBvbiBwYXJpc2NfcmVsb2MuZGVmLiAgKi8KKysjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCisrCisrCisrY29uc3QgY2hhciAqCisrcGFyaXNjX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEVibCAqZWgsCisrICAgICBzaXplX3QgZWhsZW4pCisreworKyAgaW50IHBhNjQgPSAwOworKworKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCisrICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCisrICAgIHJldHVybiBOVUxMOworKworKyAgaWYgKGVsZikgeworKyAgICBHRWxmX0VoZHIgZWhkcl9tZW07CisrICAgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOworKyAgICBpZiAoZWhkciAmJiAoZWhkci0+ZV9mbGFncyAmIEVGX1BBUklTQ19XSURFKSkKKysgICAgICBwYTY0ID0gMTsKKysgIH0KKysgIC8qIFdlIGhhbmRsZSBpdC4gICovCisrICBlaC0+bmFtZSA9ICJQQS1SSVNDIjsKKysgIHBhcmlzY19pbml0X3JlbG9jIChlaCk7CisrICBIT09LIChlaCwgcmVsb2Nfc2ltcGxlX3R5cGUpOworKyAgSE9PSyAoZWgsIG1hY2hpbmVfZmxhZ19jaGVjayk7CisrICBIT09LIChlaCwgc3ltYm9sX3R5cGVfbmFtZSk7CisrICBIT09LIChlaCwgc2VnbWVudF90eXBlX25hbWUpOworKyAgSE9PSyAoZWgsIHNlY3Rpb25fdHlwZV9uYW1lKTsKKysgIEhPT0sgKGVoLCByZWdpc3Rlcl9pbmZvKTsKKysgIGlmIChwYTY0KQorKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl82NDsKKysgIGVsc2UKKysgICAgZWgtPnJldHVybl92YWx1ZV9sb2NhdGlvbiA9IHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fMzI7CisrCisrICByZXR1cm4gTU9EVkVSU0lPTjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYyBiL2JhY2tlbmRzL3BhcmlzY19yZWdzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4zODk1ZjhlCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCitAQCAtMCwwICsxLDE1OSBAQAorKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBQQS1SSVNDIERXQVJGLgorKyAgIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQgcGFyaXNjXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrc3NpemVfdAorK3BhcmlzY19yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCwgaW50IHJlZ25vLCBjaGFyICpuYW1lLCBzaXplX3QgbmFtZWxlbiwKKysJCSAgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCisrCQkgICAgIGludCAqYml0cywgaW50ICp0eXBlKQorK3sKKysgIGludCBwYTY0ID0gMDsKKysKKysgIGlmIChlYmwtPmVsZikgeworKyAgICBHRWxmX0VoZHIgZWhkcl9tZW07CisrICAgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWJsLT5lbGYsICZlaGRyX21lbSk7CisrICAgIGlmIChlaGRyLT5lX2ZsYWdzICYgRUZfUEFSSVNDX1dJREUpCisrICAgICAgcGE2NCA9IDE7CisrICB9CisrCisrICBpbnQgbnJlZ3MgPSBwYTY0ID8gMTI3IDogMTI4OworKworKyAgaWYgKG5hbWUgPT0gTlVMTCkKKysgICAgcmV0dXJuIG5yZWdzOworKworKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+PSBucmVncyB8fCBuYW1lbGVuIDwgNikKKysgICAgcmV0dXJuIC0xOworKworKyAgKnByZWZpeCA9ICIlIjsKKysKKysgIGlmIChyZWdubyA8IDMyKQorKyAgeworKyAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOworKyAgICBpZiAocGE2NCkKKysgICAgeworKwkqYml0cyA9IDY0OworKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAJKmJpdHMgPSAzMjsKKysgICAgfQorKyAgfQorKyAgZWxzZSBpZiAocmVnbm8gPT0gMzIpCisrICB7CisrICAgICpzZXRuYW1lID0gInNwZWNpYWwiOworKyAgICBpZiAocGE2NCkKKysgICAgeworKwkqYml0cyA9IDY7CisrICAgIH0KKysgICAgZWxzZQorKyAgICB7CisrICAgIAkqYml0cyA9IDU7CisrICAgIH0KKysgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7CisrICB9CisrICBlbHNlCisrICB7CisrICAgICpzZXRuYW1lID0gIkZQVSI7CisrICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworKyAgICBpZiAocGE2NCkKKysgICAgeworKwkqYml0cyA9IDY0OworKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAJKmJpdHMgPSAzMjsKKysgICAgfQorKyAgfQorKworKyAgaWYgKHJlZ25vIDwgMzMpIHsKKysgICAgc3dpdGNoIChyZWdubykKKysgICAgICB7CisrICAgICAgY2FzZSAwIC4uLiA5OgorKyAgICAgICAgbmFtZVswXSA9ICdyJzsKKysgICAgICAgIG5hbWVbMV0gPSByZWdubyArICcwJzsKKysgICAgICAgIG5hbWVsZW4gPSAyOworKyAgICAgICAgYnJlYWs7CisrICAgICAgY2FzZSAxMCAuLi4gMzE6CisrICAgICAgICBuYW1lWzBdID0gJ3InOworKyAgICAgICAgbmFtZVsxXSA9IHJlZ25vIC8gMTAgKyAnMCc7CisrICAgICAgICBuYW1lWzJdID0gcmVnbm8gJSAxMCArICcwJzsKKysgICAgICAgIG5hbWVsZW4gPSAzOworKyAgICAgICAgYnJlYWs7CisrICAgICAgY2FzZSAzMjoKKysJKnByZWZpeCA9IE5VTEw7CisrCW5hbWVbMF0gPSAnUyc7CisrCW5hbWVbMV0gPSAnQSc7CisrCW5hbWVbMl0gPSAnUic7CisrCW5hbWVsZW4gPSAzOworKwlicmVhazsKKysgICAgICB9CisrICB9CisrICBlbHNlIHsKKysgICAgaWYgKHBhNjQgJiYgKChyZWdubyAtIDcyKSAlIDIpKSB7CisrICAgICAgKnNldG5hbWUgPSBOVUxMOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIHN3aXRjaCAocmVnbm8pCisrICAgICAgeworKyAgICAgIGNhc2UgNzIgKyAwIC4uLiA3MiArIDExOgorKyAgICAgICAgbmFtZVswXSA9ICdmJzsKKysJbmFtZVsxXSA9ICdyJzsKKysgICAgICAgIG5hbWVbMl0gPSAocmVnbm8gKyA4IC0gNzIpIC8gMiArICcwJzsKKysgICAgICAgIG5hbWVsZW4gPSAzOworKyAgICAgICAgaWYgKChyZWdubyArIDggLSA3MikgJSAyKSB7CisrCSAgbmFtZVszXSA9ICdSJzsKKysJICBuYW1lbGVuKys7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKysgICAgICBjYXNlIDcyICsgMTIgLi4uIDcyICsgNTU6CisrICAgICAgICBuYW1lWzBdID0gJ2YnOworKwluYW1lWzFdID0gJ3InOworKyAgICAgICAgbmFtZVsyXSA9IChyZWdubyArIDggLSA3MikgLyAyIC8gMTAgKyAnMCc7CisrICAgICAgICBuYW1lWzNdID0gKHJlZ25vICsgOCAtIDcyKSAvIDIgJSAxMCArICcwJzsKKysgICAgICAgIG5hbWVsZW4gPSA0OworKyAgICAgICAgaWYgKChyZWdubyArIDggLSA3MikgJSAyKSB7CisrCSAgbmFtZVs0XSA9ICdSJzsKKysJICBuYW1lbGVuKys7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKysgICAgICBkZWZhdWx0OgorKyAgICAgICAgKnNldG5hbWUgPSBOVUxMOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgICAgfQorKyAgfQorKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKKysgIHJldHVybiBuYW1lbGVuOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmVsb2MuZGVmIGIvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjFmODc1YmEKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKK0BAIC0wLDAgKzEsMTI4IEBACisrLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgUEEtUklTQy4gIC0qLSBDIC0qLQorKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrLyoJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KKysKKytSRUxPQ19UWVBFIChOT05FLAkJRVhFQ3xEWU4pCisrUkVMT0NfVFlQRSAoRElSMzIsCQlSRUx8RVhFQ3xEWU4pCisrUkVMT0NfVFlQRSAoRElSMjFMLAkJUkVMfEVYRUN8RFlOKQorK1JFTE9DX1RZUEUgKERJUjE3UiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxN0YsCQlSRUwpCisrUkVMT0NfVFlQRSAoRElSMTRSLAkJUkVMfERZTikKKytSRUxPQ19UWVBFIChQQ1JFTDMyLAkJUkVMKQorK1JFTE9DX1RZUEUgKFBDUkVMMjFMLAkJUkVMKQorK1JFTE9DX1RZUEUgKFBDUkVMMTdSLAkJUkVMKQorK1JFTE9DX1RZUEUgKFBDUkVMMTdGLAkJUkVMKQorK1JFTE9DX1RZUEUgKFBDUkVMMTRSLAkJUkVMfEVYRUMpCisrUkVMT0NfVFlQRSAoRFBSRUwyMUwsCQlSRUwpCisrUkVMT0NfVFlQRSAoRFBSRUwxNFdSLAkJUkVMKQorK1JFTE9DX1RZUEUgKERQUkVMMTREUiwgICAgICAgICAgUkVMKQorK1JFTE9DX1RZUEUgKERQUkVMMTRSLAkJUkVMKQorK1JFTE9DX1RZUEUgKEdQUkVMMjFMLAkJMCkKKytSRUxPQ19UWVBFIChHUFJFTDE0UiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkYyMUwsCQlSRUwpCisrUkVMT0NfVFlQRSAoTFRPRkYxNFIsCQlSRUwpCisrUkVMT0NfVFlQRSAoRExUSU5EMTRGLAkJMCkKKytSRUxPQ19UWVBFIChTRVRCQVNFLAkJMCkKKytSRUxPQ19UWVBFIChTRUNSRUwzMiwJCVJFTCkKKytSRUxPQ19UWVBFIChCQVNFUkVMMjFMLAkJMCkKKytSRUxPQ19UWVBFIChCQVNFUkVMMTdSLAkJMCkKKytSRUxPQ19UWVBFIChCQVNFUkVMMTRSLAkJMCkKKytSRUxPQ19UWVBFIChTRUdCQVNFLAkJMCkKKytSRUxPQ19UWVBFIChTRUdSRUwzMiwJCVJFTCkKKytSRUxPQ19UWVBFIChQTFRPRkYyMUwsCQkwKQorK1JFTE9DX1RZUEUgKFBMVE9GRjE0UiwJCTApCisrUkVMT0NfVFlQRSAoUExUT0ZGMTRGLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMzIsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjIxTCwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTRSLAkwKQorK1JFTE9DX1RZUEUgKEZQVFI2NCwJCTApCisrUkVMT0NfVFlQRSAoUExBQkVMMzIsCQlSRUx8RFlOKQorK1JFTE9DX1RZUEUgKFBDUkVMNjQsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMjJDLAkJMCkKKytSRUxPQ19UWVBFIChQQ1JFTDIyRiwJCTApCisrUkVMT0NfVFlQRSAoUENSRUwxNFdSLAkJMCkKKytSRUxPQ19UWVBFIChQQ1JFTDE0RFIsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMTZGLAkJMCkKKytSRUxPQ19UWVBFIChQQ1JFTDE2V0YsCQkwKQorK1JFTE9DX1RZUEUgKFBDUkVMMTZERiwJCTApCisrUkVMT0NfVFlQRSAoRElSNjQsCQlSRUx8RFlOKQorK1JFTE9DX1RZUEUgKERJUjE0V1IsCQlSRUwpCisrUkVMT0NfVFlQRSAoRElSMTREUiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxNkYsCQlSRUwpCisrUkVMT0NfVFlQRSAoRElSMTZXRiwJCVJFTCkKKytSRUxPQ19UWVBFIChESVIxNkRGLAkJUkVMKQorK1JFTE9DX1RZUEUgKEdQUkVMNjQsCQkwKQorK1JFTE9DX1RZUEUgKEdQUkVMMTRXUiwJCTApCisrUkVMT0NfVFlQRSAoR1BSRUwxNERSLAkJMCkKKytSRUxPQ19UWVBFIChHUFJFTDE2RiwJCTApCisrUkVMT0NfVFlQRSAoR1BSRUwxNldGLAkJMCkKKytSRUxPQ19UWVBFIChHUFJFTDE2REYsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGNjQsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGMTRXUiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkYxNERSLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRjE2RiwJCTApCisrUkVMT0NfVFlQRSAoTFRPRkYxNldGLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRjE2REYsCQkwKQorK1JFTE9DX1RZUEUgKFNFQ1JFTDY0LAkJMCkKKytSRUxPQ19UWVBFIChCQVNFUkVMMTRXUiwJMCkKKytSRUxPQ19UWVBFIChCQVNFUkVMMTREUiwJMCkKKytSRUxPQ19UWVBFIChTRUdSRUw2NCwJCTApCisrUkVMT0NfVFlQRSAoUExUT0ZGMTRXUiwJCTApCisrUkVMT0NfVFlQRSAoUExUT0ZGMTREUiwJCTApCisrUkVMT0NfVFlQRSAoUExUT0ZGMTZGLAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNldGLAkJMCkKKytSRUxPQ19UWVBFIChQTFRPRkYxNkRGLAkJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSNjQsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE0V1IsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE0RFIsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE2RiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZXRiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZERiwJMCkKKytSRUxPQ19UWVBFIChDT1BZLAkJRVhFQykKKytSRUxPQ19UWVBFIChJUExULAkJRVhFQ3xEWU4pCisrUkVMT0NfVFlQRSAoRVBMVCwJCTApCisrUkVMT0NfVFlQRSAoVFBSRUwzMiwJCURZTikKKytSRUxPQ19UWVBFIChUUFJFTDIxTCwJCTApCisrUkVMT0NfVFlQRSAoVFBSRUwxNFIsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMjFMLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRSLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRGLAkwKQorK1JFTE9DX1RZUEUgKFRQUkVMNjQsCQkwKQorK1JFTE9DX1RZUEUgKFRQUkVMMTRXUiwJCTApCisrUkVMT0NfVFlQRSAoVFBSRUwxNERSLAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDE2RiwJCTApCisrUkVMT0NfVFlQRSAoVFBSRUwxNldGLAkJMCkKKytSRUxPQ19UWVBFIChUUFJFTDE2REYsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQNjQsCQkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRXUiwJMCkKKytSRUxPQ19UWVBFIChMVE9GRl9UUDE0RFIsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNkYsCTApCisrUkVMT0NfVFlQRSAoTFRPRkZfVFAxNldGLAkwKQorK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTZERiwJMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQTU9EMzIsCURZTikKKytSRUxPQ19UWVBFIChUTFNfRFRQTU9ENjQsCURZTikKKysKKysjZGVmaW5lIE5PX1JFTEFUSVZFX1JFTE9DICAgICAgIDEKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kZjdlYzNhCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKK0BAIC0wLDAgKzEsMjEzIEBACisrLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9QQS1SSVNDIEFCSS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGR3YXJmLmg+CisrCisrI2RlZmluZSBCQUNLRU5EIHBhcmlzY18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKyNpbmNsdWRlICJsaWJlYmxfcGFyaXNjLmgiCisrCisrLyogJXIyOCwgb3IgcGFpciAlcjI4LCAlcjI5LiAgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjggfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjkgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysKKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzI4IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzI5IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgIH07CisrI2RlZmluZSBubG9jX2ludHJlZwkxCisrI2RlZmluZSBubG9jX2ludHJlZ3BhaXIJNAorKworKy8qICVmcjRMLCBvciBwYWlyICVmcjRMLCAlZnI0UiBvbiBwYS0zMiAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWczMltdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gNzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfZnByZWczMiAyCisrI2RlZmluZSBubG9jX2ZwcmVncGFpcjMyIDQKKysKKysvKiAkZnI0ICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MiB9LAorKyAgfTsKKysjZGVmaW5lIG5sb2NfZnByZWcgIDEKKysKKysjaWYgMAorKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQorKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiBBZGRyZXNzIG9mIHRoZSBsb2NhdGlvbiBpcyBzdG9yZWQKKysgICBpbiAlcjI4IGJlZm9yZSBmdW5jdGlvbiBjYWxsLCBidXQgaXQgbWF5IGJlIGNoYW5nZWQgYnkgZnVuY3Rpb24uICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9icmVnMjggfSwKKysgIH07CisrI2RlZmluZSBubG9jX2FnZ3JlZ2F0ZSAxCisrI2VuZGlmCisrCisrc3RhdGljIGludAorK3BhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGludCBwYTY0KQorK3sKKysgIER3YXJmX1dvcmQgcmVnc2l6ZSA9IHBhNjQgPyA4IDogNDsKKysKKysgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCisrICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KKysKKysgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKKysgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysgIGlmIChhdHRyID09IE5VTEwpCisrICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLworKyAgICByZXR1cm4gMDsKKysKKysgIER3YXJmX0RpZSBkaWVfbWVtOworKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKworKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLworKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgorKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQorKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQorKyAgICB7CisrICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrICAgIH0KKysKKysgIHN3aXRjaCAodGFnKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgcmV0dXJuIC0xOworKworKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgorKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQorKwl7CisrCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCX0KKysgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKworKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKKysgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgorKyAgICAgIHsKKysgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKKysJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKKysJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKKysJICB7CisrCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCisrCSAgICAgIHNpemUgPSA0OworKwkgICAgZWxzZQorKwkgICAgICByZXR1cm4gLTE7CisrCSAgfQorKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCisrCSAgeworKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKKysJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKKysJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQorKwkgICAgICByZXR1cm4gLTE7CisrCisrCSAgICBpZiAoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KQorKwkgICAgICB7CisrCQlpZiAocGE2NCkgeworKwkJICAqbG9jcCA9IGxvY19mcHJlZzsKKysJCSAgaWYgKHNpemUgPD0gOCkKKysJCSAgICAgIHJldHVybiBubG9jX2ZwcmVnOworKwkJfQorKwkJZWxzZSB7CisrCQkgICpsb2NwID0gbG9jX2ZwcmVnMzI7CisrCQkgIGlmIChzaXplIDw9IDQpCisrCQkgICAgcmV0dXJuIG5sb2NfZnByZWczMjsKKysJCSAgZWxzZSBpZiAoc2l6ZSA8PSA4KQorKwkJICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjMyOworKwkJfQorKwkJZ290byBhZ2dyZWdhdGU7CisrCSAgICAgIH0KKysJICB9CisrCWlmIChwYTY0KQorKwkgICpsb2NwID0gbG9jX2ludHJlZzsKKysJZWxzZQorKwkgICpsb2NwID0gbG9jX2ludHJlZzMyOworKwlpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkgIHJldHVybiBubG9jX2ludHJlZzsKKysJaWYgKHNpemUgPD0gMiAqIHJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKysKKysJLyogRWxzZSBmYWxsIHRocm91Z2guICAqLworKyAgICAgIH0KKysKKysgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6CisrICAgIGFnZ3JlZ2F0ZTogeworKyAgICAgICAgRHdhcmZfV29yZCBzaXplOworKwlpZiAoZHdhcmZfYWdncmVnYXRlX3NpemUgKHR5cGVkaWUsICZzaXplKSAhPSAwKQorKwkgIHJldHVybiAtMTsKKysJaWYgKHBhNjQpCisrICAgICAgICAgICpsb2NwID0gbG9jX2ludHJlZzsKKysJZWxzZQorKwkgICpsb2NwID0gbG9jX2ludHJlZzMyOworKyAgICAgICAgaWYgKHNpemUgPD0gcmVnc2l6ZSkKKysJICByZXR1cm4gbmxvY19pbnRyZWc7CisrICAgICAgICBpZiAoc2l6ZSA8PSAyICogcmVnc2l6ZSkKKysJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOworKyNpZiAwCisrCS8qIHRoZXJlIHNob3VsZCBiZSBzb21lIHdheSB0byBrbm93IHRoaXMgbG9jYXRpb24uLi4gQnV0IEkgZG8gbm90IHNlZSBpdC4gKi8KKysgICAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKKysgICAgICAgIHJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKKysjZW5kaWYKKysJLyogZmFsbCB0aHJvdWdoLiAgKi8KKysgICAgICB9CisrICAgIH0KKysKKysgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KKysgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAorKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KKysgIHJldHVybiAtMjsKKyt9CisrCisraW50CisrcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8zMiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorK3sKKysgIHJldHVybiBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDApOworK30KKysKKytpbnQKKytwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0IChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCisreworKyAgcmV0dXJuIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMSk7CisrfQorKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYyBiL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQxMTFhNzYKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYworQEAgLTAsMCArMSwxMTIgQEAKKysvKiBQQS1SSVNDIHNwZWNpZmljIHN5bWJvbGljIG5hbWUgaGFuZGxpbmcuCisrICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4sIDIwMDIuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8ZWxmLmg+CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworKyNkZWZpbmUgQkFDS0VORAkJcGFyaXNjXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrY29uc3QgY2hhciAqCisrcGFyaXNjX3NlZ21lbnRfdHlwZV9uYW1lIChpbnQgc2VnbWVudCwgY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysJCQlzaXplX3QgbGVuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKKyt7CisrICBzd2l0Y2ggKHNlZ21lbnQpCisrICAgIHsKKysgICAgY2FzZSBQVF9QQVJJU0NfQVJDSEVYVDoKKysgICAgICByZXR1cm4gIlBBUklTQ19BUkNIRVhUIjsKKysgICAgY2FzZSBQVF9QQVJJU0NfVU5XSU5EOgorKyAgICAgIHJldHVybiAiUEFSSVNDX1VOV0lORCI7CisrICAgIGRlZmF1bHQ6CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgIHJldHVybiBOVUxMOworK30KKysKKysvKiBSZXR1cm4gc3ltYm9saWMgcmVwcmVzZW50YXRpb24gb2Ygc3ltYm9sIHR5cGUuICAqLworK2NvbnN0IGNoYXIgKgorK3BhcmlzY19zeW1ib2xfdHlwZV9uYW1lKGludCBzeW1ib2wsIGNoYXIgKmJ1ZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisrICAgIHNpemVfdCBsZW4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQorK3sKKysJaWYgKHN5bWJvbCA9PSBTVFRfUEFSSVNDX01JTExJQ09ERSkKKysJICByZXR1cm4gIlBBUklTQ19NSUxMSSI7CisrCXJldHVybiBOVUxMOworK30KKysKKysvKiBSZXR1cm4gc3ltYm9saWMgcmVwcmVzZW50YXRpb24gb2Ygc2VjdGlvbiB0eXBlLiAgKi8KKytjb25zdCBjaGFyICoKKytwYXJpc2Nfc2VjdGlvbl90eXBlX25hbWUgKGludCB0eXBlLAorKwkJCWNoYXIgKmJ1ZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCisrCQkJc2l6ZV90IGxlbiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCisreworKyAgc3dpdGNoICh0eXBlKQorKyAgICB7CisrICAgIGNhc2UgU0hUX1BBUklTQ19FWFQ6CisrICAgICAgcmV0dXJuICJQQVJJU0NfRVhUIjsKKysgICAgY2FzZSBTSFRfUEFSSVNDX1VOV0lORDoKKysgICAgICByZXR1cm4gIlBBUklTQ19VTldJTkQiOworKyAgICBjYXNlIFNIVF9QQVJJU0NfRE9DOgorKyAgICAgIHJldHVybiAiUEFSSVNDX0RPQyI7CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysKKysvKiBDaGVjayB3aGV0aGVyIG1hY2hpbmUgZmxhZ3MgYXJlIHZhbGlkLiAgKi8KKytib29sCisrcGFyaXNjX21hY2hpbmVfZmxhZ19jaGVjayAoR0VsZl9Xb3JkIGZsYWdzKQorK3sKKysgIGlmIChmbGFncyAmfiAoRUZfUEFSSVNDX1RSQVBOSUwgfCBFRl9QQVJJU0NfRVhUIHwgRUZfUEFSSVNDX0xTQiB8CisrCUVGX1BBUklTQ19XSURFIHwgRUZfUEFSSVNDX05PX0tBQlAgfAorKwlFRl9QQVJJU0NfTEFaWVNXQVAgfCBFRl9QQVJJU0NfQVJDSCkpCisrICAgIHJldHVybiAwOworKworKyAgR0VsZl9Xb3JkIGFyY2ggPSBmbGFncyAmIEVGX1BBUklTQ19BUkNIOworKworKyAgcmV0dXJuICgoYXJjaCA9PSBFRkFfUEFSSVNDXzFfMCkgfHwgKGFyY2ggPT0gRUZBX1BBUklTQ18xXzEpIHx8CisrICAgICAgKGFyY2ggPT0gRUZBX1BBUklTQ18yXzApKTsKKyt9CisrCisrLyogQ2hlY2sgZm9yIHRoZSBzaW1wbGUgcmVsb2MgdHlwZXMuICAqLworK0VsZl9UeXBlCisrcGFyaXNjX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQorK3sKKysgIHN3aXRjaCAodHlwZSkKKysgICAgeworKyAgICBjYXNlIFJfUEFSSVNDX0RJUjY0OgorKyAgICBjYXNlIFJfUEFSSVNDX1NFQ1JFTDY0OgorKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKKysgICAgY2FzZSBSX1BBUklTQ19ESVIzMjoKKysgICAgY2FzZSBSX1BBUklTQ19TRUNSRUwzMjoKKysgICAgICByZXR1cm4gRUxGX1RfV09SRDsKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4gRUxGX1RfTlVNOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYuaCBiL2xpYmVsZi9lbGYuaAoraW5kZXggZjc3NDg5OC4uNmM5ZjYxZSAxMDA2NDQKKy0tLSBhL2xpYmVsZi9lbGYuaAorKysrIGIvbGliZWxmL2VsZi5oCitAQCAtMjE1MywxNiArMjE1MywyNCBAQCBlbnVtCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE3RgkxMgkvKiAxNyBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0UgkxNAkvKiBSaWdodCAxNCBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19EUFJFTDIxTAkxOAkvKiBMZWZ0IDIxIGJpdHMgb2YgcmVsLiBhZGRyZXNzLiAgKi8KKysjZGVmaW5lIFJfUEFSSVNDX0RQUkVMMTRXUgkxOQorKyNkZWZpbmUgUl9QQVJJU0NfRFBSRUwxNERSCTIwCisgI2RlZmluZSBSX1BBUklTQ19EUFJFTDE0UgkyMgkvKiBSaWdodCAxNCBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCisgI2RlZmluZSBSX1BBUklTQ19HUFJFTDIxTAkyNgkvKiBHUC1yZWxhdGl2ZSwgbGVmdCAyMSBiaXRzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0dQUkVMMTRSCTMwCS8qIEdQLXJlbGF0aXZlLCByaWdodCAxNCBiaXRzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMjFMCTM0CS8qIExULXJlbGF0aXZlLCBsZWZ0IDIxIGJpdHMuICAqLworICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNFIJMzgJLyogTFQtcmVsYXRpdmUsIHJpZ2h0IDE0IGJpdHMuICAqLworKyNkZWZpbmUgUl9QQVJJU0NfRExUSU5EMTRGCTM5CisrI2RlZmluZSBSX1BBUklTQ19TRVRCQVNFCTQwCisgI2RlZmluZSBSX1BBUklTQ19TRUNSRUwzMgk0MQkvKiAzMiBiaXRzIHNlY3Rpb24gcmVsLiBhZGRyZXNzLiAgKi8KKysjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwyMUwJNDIKKysjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxN1IJNDMKKysjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxNFIJNDYKKyAjZGVmaW5lIFJfUEFSSVNDX1NFR0JBU0UJNDgJLyogTm8gcmVsb2NhdGlvbiwgc2V0IHNlZ21lbnQgYmFzZS4gICovCisgI2RlZmluZSBSX1BBUklTQ19TRUdSRUwzMgk0OQkvKiAzMiBiaXRzIHNlZ21lbnQgcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjIxTAk1MAkvKiBQTFQgcmVsLiBhZGRyZXNzLCBsZWZ0IDIxIGJpdHMuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRSCTU0CS8qIFBMVCByZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLworKyNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTRGCTU1CisgI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMzIJNTcJLyogMzIgYml0cyBMVC1yZWwuIGZ1bmN0aW9uIHBvaW50ZXIuICovCisgI2RlZmluZSBSX1BBUklTQ19MVE9GRl9GUFRSMjFMCTU4CS8qIExULXJlbC4gZmN0IHB0ciwgbGVmdCAyMSBiaXRzLiAqLworICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjE0Ugk2MgkvKiBMVC1yZWwuIGZjdCBwdHIsIHJpZ2h0IDE0IGJpdHMuICovCitAQCAtMjE3MSw2ICsyMTc5LDcgQEAgZW51bQorICNkZWZpbmUgUl9QQVJJU0NfUExBQkVMMjFMCTY2CS8qIExlZnQgMjEgYml0cyBvZiBmZGVzYyBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1BMQUJFTDE0Ugk3MAkvKiBSaWdodCAxNCBiaXRzIG9mIGZkZXNjIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUENSRUw2NAk3MgkvKiA2NCBiaXRzIFBDLXJlbC4gYWRkcmVzcy4gICovCisrI2RlZmluZSBSX1BBUklTQ19QQ1JFTDIyQwk3MworICNkZWZpbmUgUl9QQVJJU0NfUENSRUwyMkYJNzQJLyogMjIgYml0cyBQQy1yZWwuIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFdSCTc1CS8qIFBDLXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCisgI2RlZmluZSBSX1BBUklTQ19QQ1JFTDE0RFIJNzYJLyogUEMgcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KK0BAIC0yMTk2LDYgKzIyMDUsOCBAQCBlbnVtCisgI2RlZmluZSBSX1BBUklTQ19MVE9GRjE2V0YJMTAyCS8qIDE2IGJpdHMgTFQtcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTZERgkxMDMJLyogMTYgYml0cyBMVC1yZWwuIGFkZHJlc3MuICAqLworICNkZWZpbmUgUl9QQVJJU0NfU0VDUkVMNjQJMTA0CS8qIDY0IGJpdHMgc2VjdGlvbiByZWwuIGFkZHJlc3MuICAqLworKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDE0V1IJMTA3CisrI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMTREUgkxMDgKKyAjZGVmaW5lIFJfUEFSSVNDX1NFR1JFTDY0CTExMgkvKiA2NCBiaXRzIHNlZ21lbnQgcmVsLiBhZGRyZXNzLiAgKi8KKyAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0V1IJMTE1CS8qIFBMVC1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLworICNkZWZpbmUgUl9QQVJJU0NfUExUT0ZGMTREUgkxMTYJLyogUExULXJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLW1pcHNfYmFja2VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLW1pcHNfYmFja2VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDRkYTcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtbWlwc19iYWNrZW5kLnBhdGNoCkBAIC0wLDAgKzEsNzE4IEBACitGcm9tIDU5ZmZiODZiZGE4NDVhNjhkMzY4NmFmYTdiYzc4NDEzMWRmNjc4ZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjQ1OjU4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHNfYmFja2VuZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorbWlwc19iYWNrZW5kLmRpZmYgYW5kIHJlYmFzZSB0byAwLjE3MgorCitodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLTAuNS5kZWJpYW4udGFyLnh6CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA4ICstCisgYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUyICsrKysrKysrCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDIgKworIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmV0dmFsLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYworCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQoraW5kZXggMWU0YjhlOS4uZTdiY2NmOCAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCisrKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQorQEAgLTMzLDEzICszMywxMyBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIAorIAorIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKKy0JICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgcGFyaXNjCisrCSAgdGlsZWd4IG02OGsgYnBmIHJpc2N2IHBhcmlzYyBtaXBzCisgbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCisgCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAorIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKKyAJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9yaXNjdl9waWMuYSBcCistCSAgICAgbGliZWJsX3BhcmlzY19waWMuYQorKwkgICAgIGxpYmVibF9wYXJpc2NfcGljLmEgbGliZWJsX21pcHNfcGljLmEKKyBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQorIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCisgCitAQCAtMTM5LDYgKzEzOSwxMCBAQCBwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCisgbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKKyBhbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKKyAKKyttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKKytsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCisrYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKKysKKyBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQorIAlAcm0gLWYgJChAOi5zbz0ubWFwKQorIAkkKEFNX1ZfYXQpZWNobyAnRUxGVVRJTFNfJChQQUNLQUdFX1ZFUlNJT04pIHsgZ2xvYmFsOiAkKl9pbml0OyBsb2NhbDogKjsgfTsnIFwKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2luaXQuYyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOTc1YzA0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19pbml0LmMKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBJbml0aWFsaXphdGlvbiBvZiBtaXBzIHNwZWNpZmljIGJhY2tlbmQgbGlicmFyeS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9NSVBTXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gbWlwc19yZWxvYy5kZWYuICAqLworKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKKysKKytjb25zdCBjaGFyICoKKyttaXBzX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEVibCAqZWgsCisrICAgICBzaXplX3QgZWhsZW4pCisreworKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCisrICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCisrICAgIHJldHVybiBOVUxMOworKworKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KKysgIGlmIChtYWNoaW5lID09IEVNX01JUFMpCisrICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgYmlnLWVuZGlhbiI7CisrICBlbHNlIGlmIChtYWNoaW5lID09IEVNX01JUFNfUlMzX0xFKQorKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGxpdHRsZS1lbmRpYW4iOworKworKyAgbWlwc19pbml0X3JlbG9jIChlaCk7CisrICBIT09LIChlaCwgcmVsb2Nfc2ltcGxlX3R5cGUpOworKyAgSE9PSyAoZWgsIHJldHVybl92YWx1ZV9sb2NhdGlvbik7CisrICBIT09LIChlaCwgcmVnaXN0ZXJfaW5mbyk7CisrCisrICByZXR1cm4gTU9EVkVSU0lPTjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWdzLmMgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ0Zjg2Y2IKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCitAQCAtMCwwICsxLDEwNCBAQAorKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgorKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworK3NzaXplX3QKKyttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCisrCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCisrCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCisreworKyAgaWYgKG5hbWUgPT0gTlVMTCkKKysgICAgcmV0dXJuIDY2OworKworKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQorKyAgICByZXR1cm4gLTE7CisrCisrICAqcHJlZml4ID0gIiQiOworKworKyAgaWYgKHJlZ25vIDwgMzIpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKyAgICAgICAgeworKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7CisrICAgICAgICAgIG5hbWVsZW4gPSAxOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZWxlbiA9IDI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJGUFUiOworKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgbmFtZVswXSA9ICdmJzsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKwl7CisrCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKKysJICBuYW1lbGVuID0gMjsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKKysJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7CisrCSAgbmFtZWxlbiA9IDM7CisrCX0KKysgICAgfQorKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCisrICAgIHsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBuYW1lWzBdID0gJ2gnOworKyAgICAgIG5hbWVbMV0gPSAnaSc7CisrICAgICAgbmFtZWxlbiA9IDI7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG5hbWVbMF0gPSAnbCc7CisrICAgICAgbmFtZVsxXSA9ICdvJzsKKysgICAgICBuYW1lbGVuID0gMjsKKysgICAgfQorKworKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKKysgIHJldHVybiBuYW1lbGVuOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDU3OTk3MAorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKK0BAIC0wLDAgKzEsNzkgQEAKKysvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBtaXBzLiAgLSotIEMgLSotCisrICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysvKiAJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KKysKKytSRUxPQ19UWVBFIChOT05FLCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMTYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDMyLCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwzMiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMjYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJMTYsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChMTzE2LCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR1BSRUwxNiwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKExJVEVSQUwsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1QxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUEMxNiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKENBTEwxNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHUFJFTDMyLCAgICAgICAgICAgIDApCisrCisrUkVMT0NfVFlQRSAoU0hJRlQ1LCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNISUZUNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICg2NCwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0RJU1AsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9QQUdFLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfT0ZTVCwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0hJMTYsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9MTzE2LCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChTVUIsICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSU5TRVJUX0EsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKElOU0VSVF9CLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChERUxFVEUsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSElHSEVSLCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJR0hFU1QsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChDQUxMX0hJMTYsICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQ0FMTF9MTzE2LCAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNDTl9ESVNQLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQUREX0lNTUVESUFURSwgICAgICAwKQorK1JFTE9DX1RZUEUgKFBKVU1QLCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUxHT1QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSkFMUiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMMzIsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUw2NCwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfR0QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0xETSwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfSEkxNiwgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0xPMTYsICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0dPVFRQUkVMLCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTDMyLCAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUw2NCwgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMX0hJMTYsICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9MTzE2LCAgICAgMCkKKysKKysjZGVmaW5lIE5PX0NPUFlfUkVMT0MgMQorKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgMQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjU2Y2QxZgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworQEAgLTAsMCArMSwzMjEgQEAKKysvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L21pcHMgQUJJLgorKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGR3YXJmLmg+CisrI2luY2x1ZGUgPGVsZi5oPgorKworKyNpbmNsdWRlICIuLi9saWJlYmwvbGliZWJsUC5oIgorKyNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIKKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworKy8qIFRoZSBBQkkgb2YgdGhlIGZpbGUuICBBbHNvIHNlZSBFRl9NSVBTX0FCSTIgYWJvdmUuICovCisrI2RlZmluZSBFRl9NSVBTX0FCSQkJMHgwMDAwRjAwMAorKworKy8qIFRoZSBvcmlnaW5hbCBvMzIgYWJpLiAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9PMzIgICAgICAgICAgMHgwMDAwMTAwMAorKworKy8qIE8zMiBleHRlbmRlZCB0byB3b3JrIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmVzICovCisrI2RlZmluZSBFX01JUFNfQUJJX082NCAgICAgICAgICAweDAwMDAyMDAwCisrCisrLyogRUFCSSBpbiAzMiBiaXQgbW9kZSAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJMzIgICAgICAgMHgwMDAwMzAwMAorKworKy8qIEVBQkkgaW4gNjQgYml0IG1vZGUgKi8KKysjZGVmaW5lIEVfTUlQU19BQklfRUFCSTY0ICAgICAgIDB4MDAwMDQwMDAKKysKKysvKiBBbGwgdGhlIHBvc3NpYmxlIE1JUFMgQUJJcy4gKi8KKytlbnVtIG1pcHNfYWJpCisrICB7CisrICAgIE1JUFNfQUJJX1VOS05PV04gPSAwLAorKyAgICBNSVBTX0FCSV9OMzIsCisrICAgIE1JUFNfQUJJX08zMiwKKysgICAgTUlQU19BQklfTjY0LAorKyAgICBNSVBTX0FCSV9PNjQsCisrICAgIE1JUFNfQUJJX0VBQkkzMiwKKysgICAgTUlQU19BQklfRUFCSTY0LAorKyAgICBNSVBTX0FCSV9MQVNUCisrICB9OworKworKy8qIEZpbmQgdGhlIG1pcHMgQUJJIG9mIHRoZSBjdXJyZW50IGZpbGUgKi8KKytlbnVtIG1pcHNfYWJpIGZpbmRfbWlwc19hYmkoRWxmICplbGYpCisreworKyAgR0VsZl9FaGRyIGVoZHJfbWVtOworKyAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7CisrCisrICBpZiAoZWhkciA9PSBOVUxMKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIEdFbGZfV29yZCBlbGZfZmxhZ3MgPSBlaGRyLT5lX2ZsYWdzOworKworKyAgLyogQ2hlY2sgZWxmX2ZsYWdzIHRvIHNlZSBpZiBpdCBzcGVjaWZpZXMgdGhlIEFCSSBiZWluZyB1c2VkLiAgKi8KKysgIHN3aXRjaCAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJKSkKKysgICAgeworKyAgICBjYXNlIEVfTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9PNjQ6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKKysgICAgY2FzZSBFX01JUFNfQUJJX0VBQkkzMjoKKysgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOworKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTY0OgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7CisrICAgIGRlZmF1bHQ6CisrICAgICAgaWYgKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSTIpKQorKwlyZXR1cm4gTUlQU19BQklfTjMyOworKyAgICB9CisrCisrICAvKiBHQ0MgY3JlYXRlcyBhIHBzZXVkby1zZWN0aW9uIHdob3NlIG5hbWUgZGVzY3JpYmVzIHRoZSBBQkkuICAqLworKyAgc2l6ZV90IHNoc3RybmR4OworKyAgaWYgKGVsZl9nZXRzaGRyc3RybmR4IChlbGYsICZzaHN0cm5keCkgPCAwKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICBFbGZfU2NuICpzY24gPSBOVUxMOworKyAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOworKyAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOworKyAgICAgIGlmIChzaGRyID09IE5VTEwpCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgICAgICBuYW1lID0gZWxmX3N0cnB0ciAoZWxmLCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSkgPzogIiI7CisrICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICIubWRlYnVnLiIsIDgpICE9IDApCisrICAgICAgICBjb250aW51ZTsKKysKKysgICAgICBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmkzMiIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTzMyOworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTjMyIikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9OMzI7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTjY0OworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTzY0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpMzIiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OworKyAgICAgIGVsc2UKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOworKyAgICB9CisrCisrICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKKyt9CisrCisrdW5zaWduZWQgaW50CisrbWlwc19hYmlfcmVnc2l6ZSAoZW51bSBtaXBzX2FiaSBhYmkpCisreworKyAgc3dpdGNoIChhYmkpCisrICAgIHsKKysgICAgY2FzZSBNSVBTX0FCSV9FQUJJMzI6CisrICAgIGNhc2UgTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiA0OworKyAgICBjYXNlIE1JUFNfQUJJX04zMjoKKysgICAgY2FzZSBNSVBTX0FCSV9ONjQ6CisrICAgIGNhc2UgTUlQU19BQklfTzY0OgorKyAgICBjYXNlIE1JUFNfQUJJX0VBQkk2NDoKKysgICAgICByZXR1cm4gODsKKysgICAgY2FzZSBNSVBTX0FCSV9VTktOT1dOOgorKyAgICBjYXNlIE1JUFNfQUJJX0xBU1Q6CisrICAgIGRlZmF1bHQ6CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyt9CisrCisrCisrLyogJHYwIG9yIHBhaXIgJHYwLCAkdjEgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ19vMzJbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysKKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19pbnRyZWcJMQorKyNkZWZpbmUgbmxvY19pbnRyZWdwYWlyCTQKKysKKysvKiAkZjAgKGZsb2F0KSwgb3IgcGFpciAkZjAsICRmMSAoZG91YmxlKS4KKysgKiBmMi9mMyBhcmUgdXNlZCBmb3IgQ09NUExFWCAoPSAyIGRvdWJsZXMpIHJldHVybnMgaW4gRm9ydHJhbiAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdfbzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM1IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgIH07CisrCisrLyogJGYwLCBvciBwYWlyICRmMCwgJGYyLiAgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZyAgMQorKyNkZWZpbmUgbmxvY19mcHJlZ3BhaXIgNAorKyNkZWZpbmUgbmxvY19mcHJlZ3F1YWQgOAorKworKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQorKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKKysgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluICR2MC4gICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9icmVnMiwgLm51bWJlciA9IDAgfQorKyAgfTsKKysjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKKysKKytpbnQKKyttaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorK3sKKysgIC8qIEZpcnN0IGZpbmQgdGhlIEFCSSB1c2VkIGJ5IHRoZSBlbGYgb2JqZWN0ICovCisrICBlbnVtIG1pcHNfYWJpIGFiaSA9IGZpbmRfbWlwc19hYmkoZnVuY3R5cGVkaWUtPmN1LT5kYmctPmVsZik7CisrCisrICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIEFCSSAqLworKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9MQVNUKQorKyAgICByZXR1cm4gLTE7CisrCisrICAvKiBXZSBjb3VsZG4ndCBpZGVudGlmeSB0aGUgQUJJLCBidXQgdGhlIGZpbGUgc2VlbXMgdmFsaWQgKi8KKysgIGlmIChhYmkgPT0gTUlQU19BQklfVU5LTk9XTikKKysgICAgcmV0dXJuIC0yOworKworKyAgLyogQ2FuJ3QgaGFuZGxlIEVBQkkgdmFyaWFudHMgKi8KKysgIGlmICgoYWJpID09IE1JUFNfQUJJX0VBQkkzMikgfHwgKGFiaSA9PSBNSVBTX0FCSV9FQUJJNjQpKQorKyAgICByZXR1cm4gLTI7CisrCisrICB1bnNpZ25lZCBpbnQgcmVnc2l6ZSA9IG1pcHNfYWJpX3JlZ3NpemUgKGFiaSk7CisrICBpZiAoIXJlZ3NpemUpCisrICAgIHJldHVybiAtMjsKKysKKysgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCisrICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KKysKKysgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKKysgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysgIGlmIChhdHRyID09IE5VTEwpCisrICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLworKyAgICByZXR1cm4gMDsKKysKKysgIER3YXJmX0RpZSBkaWVfbWVtOworKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKworKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLworKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgorKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQorKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQorKyAgICB7CisrICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrICAgIH0KKysKKysgIHN3aXRjaCAodGFnKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgcmV0dXJuIC0xOworKworKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgorKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQorKwl7CisrCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCX0KKysgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKworKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKKysgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgorKyAgICAgIHsKKysgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKKysJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKKysJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKKysJICB7CisrCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCisrCSAgICAgIHNpemUgPSByZWdzaXplOworKwkgICAgZWxzZQorKwkgICAgICByZXR1cm4gLTE7CisrCSAgfQorKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCisrCSAgeworKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKKysJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKKysJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQorKwkgICAgICByZXR1cm4gLTE7CisrCisrI2RlZmluZSBBQklfTE9DKGxvYywgcmVnc2l6ZSkgKChyZWdzaXplKSA9PSA0ID8gKGxvYyAjIyBfbzMyKSA6IChsb2MpKQorKworKwkgICAgaWYgKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkKKysJICAgICAgeworKwkJKmxvY3AgPSBBQklfTE9DKGxvY19mcHJlZywgcmVnc2l6ZSk7CisrCQlpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkJICAgIHJldHVybiBubG9jX2ZwcmVnOworKworKwkJaWYgKHNpemUgPD0gMipyZWdzaXplKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjsKKysKKysJCWlmIChzaXplIDw9IDQqcmVnc2l6ZSAmJiBhYmkgPT0gTUlQU19BQklfTzMyKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncXVhZDsKKysKKysJCWdvdG8gYWdncmVnYXRlOworKwkgICAgICB9CisrCSAgfQorKwkqbG9jcCA9IEFCSV9MT0MobG9jX2ludHJlZywgcmVnc2l6ZSk7CisrCWlmIChzaXplIDw9IHJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVnOworKwlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKysKKysJLyogRWxzZSBmYWxsIHRocm91Z2guIFNob3VsZG4ndCBoYXBwZW4gdGhvdWdoIChhdCBsZWFzdCB3aXRoIGdjYykgKi8KKysgICAgICB9CisrCisrICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorKyAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgorKyAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorKyAgICBhZ2dyZWdhdGU6CisrICAgICAgLyogWFhYIFRPRE86IENhbid0IGhhbmRsZSBzdHJ1Y3R1cmUgcmV0dXJuIHdpdGggb3RoZXIgQUJJJ3MgeWV0IDotLyAqLworKyAgICAgIGlmICgoYWJpICE9IE1JUFNfQUJJX08zMikgJiYgKGFiaSAhPSBNSVBTX0FCSV9PNjQpKQorKyAgICAgICAgcmV0dXJuIC0yOworKworKyAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKKysgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7CisrICAgIH0KKysKKysgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KKysgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAorKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KKysgIHJldHVybiAtMjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19zeW1ib2wuYyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iYTQ2NWZlCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCitAQCAtMCwwICsxLDUyIEBACisrLyogTUlQUyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysgICBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LCAyMDAyLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPGVsZi5oPgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKysvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCisrRWxmX1R5cGUKKyttaXBzX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQorK3sKKysgIHN3aXRjaCAodHlwZSkKKysgICAgeworKyAgICBjYXNlIFJfTUlQU18xNjoKKysgICAgICByZXR1cm4gRUxGX1RfSEFMRjsKKysgICAgY2FzZSBSX01JUFNfMzI6CisrICAgICAgcmV0dXJuIEVMRl9UX1dPUkQ7CisrICAgIGNhc2UgUl9NSVBTXzY0OgorKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4gRUxGX1RfTlVNOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK2luZGV4IDhiMDYzZjQuLjU0MDViMGMgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK0BAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKKyAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCisgICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAorICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCisgCisgICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKKyAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtbWlwc19yZWFkZWxmX3cucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1taXBzX3JlYWRlbGZfdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2FiM2RhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtbWlwc19yZWFkZWxmX3cucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBhMTg4ZWExYWRhNmI5OTBiNzJiOTEyNjZhZTAyZGEwNThkY2Q5NTIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS3VydCBSb2Vja3ggPGt1cnRAcm9lY2t4LmJlPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNTo0OTozMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIHJlYWRlbGYgLXcgb3V0cHV0IGRlYnVnIGluZm9ybWF0aW9uIG9uIG1pcHMKKworQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy82NjIwNDEKK0ZvcndhcmRlZDogbm90LW5lZWRlZAorCitVcHN0cmVhbXMgd2FudHMgYSBjaGFuZ2Ugd2hlcmUgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgaG9vayB0aGF0IG5lZWRzCit0byBiZSBmaWxsZWQgaW4gYnkgdGhlIGJhY2tlbmQgZm9yIHRoZSBhcmNoLgorCitTaWduZWQtb2ZmLWJ5OiBLdXJ0IFJvZWNreCA8a3VydEByb2Vja3guYmU+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCittaXBzX3JlYWRlbGZfdy5wYXRjaCBhbmQgcmViYXNlIHRvIDAuMTcyCisKK2h0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAtMC41LmRlYmlhbi50YXIueHoKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9yZWFkZWxmLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9yZWFkZWxmLmMgYi9zcmMvcmVhZGVsZi5jCitpbmRleCBmMTg1ODk3Li4wZGIxOTdjIDEwMDY0NAorLS0tIGEvc3JjL3JlYWRlbGYuYworKysrIGIvc3JjL3JlYWRlbGYuYworQEAgLTEwOTc5LDcgKzEwOTc5LDggQEAgcHJpbnRfZGVidWcgKER3ZmxfTW9kdWxlICpkd2ZsbW9kLCBFYmwgKmVibCwgR0VsZl9FaGRyICplaGRyKQorICAgICAgIEdFbGZfU2hkciBzaGRyX21lbTsKKyAgICAgICBHRWxmX1NoZHIgKnNoZHIgPSBnZWxmX2dldHNoZHIgKHNjbiwgJnNoZHJfbWVtKTsKKyAKKy0gICAgICBpZiAoc2hkciAhPSBOVUxMICYmIHNoZHItPnNoX3R5cGUgPT0gU0hUX1BST0dCSVRTKQorKyAgICAgIGlmIChzaGRyICE9IE5VTEwgJiYgKAorKwkgKHNoZHItPnNoX3R5cGUgPT0gU0hUX1BST0dCSVRTKSB8fCAoc2hkci0+c2hfdHlwZSA9PSBTSFRfTUlQU19EV0FSRikpKQorIAl7CisgCSAgc3RhdGljIGNvbnN0IHN0cnVjdAorIAkgIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDEtdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzZmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS10ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSBmZTc2MTNhM2I5ZjI0NDNjYzExOTE3ODI2MzQ4ZDQ1MjFmMjY3Yzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyOSBKdW4gMjAxOCAxNTo0ODozMyArMDgwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0c3VpdGUgaWdub3JlIGVsZmxpbnQKKworT24gbWFueSBhcmNoaXRlY3R1cmVzIHRoaXMgdGVzdCBmYWlscyBiZWNhdXNlIGJpbmFyaWVzL2xpYnMgcHJvZHVjZWQgYnkKK2JpbnV0aWxzIGRvbid0IHBhc3MgZWxmbGludC4gSG93ZXZlciBlbGZ1dGlscyBzaG91bGRuJ3QgRlRCRlMgYmVjYXVzZSBvZiB0aGlzLgorCitTbyB3ZSBydW4gdGhlIHRlc3RzIG9uIGFsbCBhcmNocyB0byBzZWUgd2hhdCBicmVha3MsIGJ1dCBpZiBpdCBicmVha3Mgd2UgaWdub3JlCit0aGUgcmVzdWx0IChleGl0Y29kZSA3NyBtZWFuczogdGhpcyB0ZXN0IHdhcyBza2lwcGVkKS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KK3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmIGFuZCByZWJhc2UgdG8gMC4xNzIKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvcnVuLWVsZmxpbnQtc2VsZi5zaCB8ICAyICstCisgdGVzdHMvdGVzdC1zdWJyLnNoICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWVsZmxpbnQtc2VsZi5zaCBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKK2luZGV4IDU4ZmE3ZDAuLjg1ZDIxYTUgMTAwNzU1CistLS0gYS90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoCisrKysgYi90ZXN0cy9ydW4tZWxmbGludC1zZWxmLnNoCitAQCAtMTgsNSArMTgsNSBAQAorIAorIC4gJHNyY2Rpci90ZXN0LXN1YnIuc2gKKyAKKy10ZXN0cnVuX29uX3NlbGYgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLXF1aWV0IC0tZ251LWxkCisrdGVzdHJ1bl9vbl9zZWxmX3NraXAgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLXF1aWV0IC0tZ251LWxkCisgdGVzdHJ1bl9vbl9zZWxmX2NvbXByZXNzZWQgJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLXF1aWV0IC0tZ251LWxkCitkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdC1zdWJyLnNoIGIvdGVzdHMvdGVzdC1zdWJyLnNoCitpbmRleCAwOWY0MjhkLi4yNmY2MWYxIDEwMDY0NAorLS0tIGEvdGVzdHMvdGVzdC1zdWJyLnNoCisrKysgYi90ZXN0cy90ZXN0LXN1YnIuc2gKK0BAIC0yMDEsMyArMjAxLDE4IEBAIHRlc3RydW5fb25fc2VsZl9xdWlldCgpCisgICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCisgICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQorIH0KKysKKysjIFNhbWUgYXMgdGVzdHJ1bl9vbl9zZWxmKCksIGJ1dCBza2lwIG9uIGZhaWx1cmUuCisrdGVzdHJ1bl9vbl9zZWxmX3NraXAoKQorK3sKKysgIGV4aXRfc3RhdHVzPTAKKysKKysgIGZvciBmaWxlIGluICRzZWxmX3Rlc3RfZmlsZXM7IGRvCisrICAgICAgdGVzdHJ1biAkKiAkZmlsZSBcCisrCSAgfHwgeyBlY2hvICIqKiogZmFpbHVyZSBpbiAkKiAkZmlsZSI7IGV4aXRfc3RhdHVzPTc3OyB9CisrICBkb25lCisrCisrICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCisrICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQorK30KKysKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaAppbmRleCBiMTc0OThmLi40YmRiMWZmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaApAQCAtMSwxMiArMSwxMiBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKwogRnJvbSBmZGFhYjE4YTY1ZWQyNTI5NjU2YmFhNjRjYjYxNjlmMzRkN2U1MDdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSmFtZXMgQ293Z2lsbCA8amFtZXM0MTBAY293Z2lsbC5vcmcudWs+CiBEYXRlOiBNb24sIDUgSmFuIDIwMTUgMTU6MTc6MDEgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAyLzNdIEFkZCBzdXBwb3J0IGZvciBtaXBzNjQgYWJpcyBpbiBtaXBzX3JldHZhbC5jCiAKIFNpZ25lZC1vZmYtYnk6IEphbWVzIENvd2dpbGwgPGphbWVzNDEwQGNvd2dpbGwub3JnLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2gKaW5kZXggMmE1Zjg2Mi4uZDI3Y2U2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2gKQEAgLTEsMyArMSw2IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiBGcm9tIDU5ZDRiOGM0OGU1MDQwYWY3ZTAyYjM0ZWIyNmVhNjAyZWM4MmEzOGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKYW1lcyBDb3dnaWxsIDxqYW1lczQxMEBjb3dnaWxsLm9yZy51az4KIERhdGU6IE1vbiwgNSBKYW4gMjAxNSAxNToxNzowMiArMDAwMApAQCAtMTIsOSArMTUsNiBAQAogYmVmb3JlIG1hbmlwdWxhdGluZyByZWxvY2F0aW9ucyBzbyB0aGF0IHRoZXNlIGNoYW5nZXMgdGFrZSBlZmZlY3QuCiAKIFNpZ25lZC1vZmYtYnk6IEphbWVzIENvd2dpbGwgPGphbWVzNDEwQGNvd2dpbGwub3JnLnVrPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQogIGxpYmVsZi9nZWxmX2dldHJlbC5jICAgICAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKy0tCiAgbGliZWxmL2dlbGZfZ2V0cmVsYS5jICAgICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrLS0KQEAgLTIwMyw3ICsyMDMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGEvc3JjL3N0cmlwLmMKICsrKyBiL3NyYy9zdHJpcC5jCi1AQCAtNTMyLDYgKzUzMiwyMyBAQCBoYW5kbGVfZWxmIChpbnQgZmQsIEVsZiAqZWxmLCBjb25zdCBjaGFyCitAQCAtNTk4LDYgKzU5OCwyMyBAQCBoYW5kbGVfZWxmIChpbnQgZmQsIEVsZiAqZWxmLCBjb25zdCBjaGFyCiAgICAgICAgZ290byBmYWlsOwogICAgICB9CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGY0YjA1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsNjAzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogYi9iYWNrZW5kcy9hcm1faW5pdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9iYWNrZW5kcy9hcm1faW5pdC5jCi0rKysgYi9iYWNrZW5kcy9hcm1faW5pdC5jCi1AQCAtMzUsMjAgKzM1LDMxIEBACi0gI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9BUk1fCi0gI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSAKLSsjaW5jbHVkZSAibGliZWJsX2FybS5oIgotKwotIC8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIGFybV9yZWxvYy5kZWYuICAqLwotICNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKLSAKLSAKLSBjb25zdCBjaGFyICoKLS1hcm1faW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotK2FybV9pbml0IChFbGYgKmVsZiwKLSAJICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCSAgRWJsICplaCwKLSAJICBzaXplX3QgZWhsZW4pCi0gewotKyAgaW50IHNvZnRfZmxvYXQgPSAwOwotKwotICAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCi0gICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCi0gICAgIHJldHVybiBOVUxMOwotIAotKyAgaWYgKGVsZikgewotKyAgICBHRWxmX0VoZHIgZWhkcl9tZW07Ci0rICAgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOwotKyAgICBpZiAoZWhkciAmJiAoZWhkci0+ZV9mbGFncyAmIEVGX0FSTV9TT0ZUX0ZMT0FUKSkKLSsgICAgICBzb2Z0X2Zsb2F0ID0gMTsKLSsgIH0KLSsKLSAgIC8qIFdlIGhhbmRsZSBpdC4gICovCi0gICBlaC0+bmFtZSA9ICJBUk0iOwotICAgYXJtX2luaXRfcmVsb2MgKGVoKTsKLUBAIC02MCw3ICs3MSwxMCBAQCBhcm1faW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlCi0gICBIT09LIChlaCwgY29yZV9ub3RlKTsKLSAgIEhPT0sgKGVoLCBhdXh2X2luZm8pOwotICAgSE9PSyAoZWgsIGNoZWNrX29iamVjdF9hdHRyaWJ1dGUpOwotLSAgSE9PSyAoZWgsIHJldHVybl92YWx1ZV9sb2NhdGlvbik7Ci0rICBpZiAoc29mdF9mbG9hdCkKLSsgICAgZWgtPnJldHVybl92YWx1ZV9sb2NhdGlvbiA9IGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fc29mdDsKLSsgIGVsc2UKLSsgICAgZWgtPnJldHVybl92YWx1ZV9sb2NhdGlvbiA9IGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25faGFyZDsKLSAgIEhPT0sgKGVoLCBhYmlfY2ZpKTsKLSAgIEhPT0sgKGVoLCBjaGVja19yZWxvY190YXJnZXRfdHlwZSk7Ci0gICBIT09LIChlaCwgc3ltYm9sX3R5cGVfbmFtZSk7Ci1JbmRleDogYi9iYWNrZW5kcy9hcm1fcmVncy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9iYWNrZW5kcy9hcm1fcmVncy5jCi0rKysgYi9iYWNrZW5kcy9hcm1fcmVncy5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAKLSAjZGVmaW5lIEJBQ0tFTkQgYXJtXwotQEAgLTc2LDYgKzc3LDkgQEAgYXJtX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlXwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIDE2ICsgMCAuLi4gMTYgKyA3OgotKyAgICAgIC8qIEFBRFdBUkYgc2F5cyB0aGF0IHRoZXJlIGFyZSBubyByZWdpc3RlcnMgaW4gdGhhdCByYW5nZSwKLSsgICAgICAgKiBidXQgZ2NjIG1hcHMgRlBBIHJlZ2lzdGVycyBoZXJlCi0rICAgICAgICovCi0gICAgICAgcmVnbm8gKz0gOTYgLSAxNjsKLSAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotICAgICBjYXNlIDk2ICsgMCAuLi4gOTYgKyA3OgotQEAgLTg3LDExICs5MSwxMzkgQEAgYXJtX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlXwotICAgICAgIG5hbWVsZW4gPSAyOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIDY0ICsgMCAuLi4gNjQgKyA5OgotKyAgICAgICpzZXRuYW1lID0gIlZGUCI7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKLSsgICAgICBuYW1lWzBdID0gJ3MnOwotKyAgICAgIG5hbWVbMV0gPSByZWdubyAtIDY0ICsgJzAnOwotKyAgICAgIG5hbWVsZW4gPSAyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIDY0ICsgMTAgLi4uIDY0ICsgMzE6Ci0rICAgICAgKnNldG5hbWUgPSAiVkZQIjsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICAgIG5hbWVbMF0gPSAncyc7Ci0rICAgICAgbmFtZVsxXSA9IChyZWdubyAtIDY0KSAvIDEwICsgJzAnOwotKyAgICAgIG5hbWVbMl0gPSAocmVnbm8gLSA2NCkgJSAxMCArICcwJzsKLSsgICAgICBuYW1lbGVuID0gMzsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAxMDQgKyAwIC4uLiAxMDQgKyA3OgotKyAgICAgIC8qIFhYWCBUT0RPOgotKyAgICAgICAqIFRoaXMgY2FuIGJlIGVpdGhlciBpbnRlbCB3aXJlbGVzcyBNTVggZ2VuZXJhbCBwdXJwb3NlL2NvbnRyb2wKLSsgICAgICAgKiByZWdpc3RlcnMgb3IgeHNjYWxlIGFjY3VtdWxhdG9yLCB3aGljaCBoYXZlIGRpZmZlcmVudCB1c2FnZS4KLSsgICAgICAgKiBXZSBvbmx5IGhhdmUgdGhlIGludGVsIHdpcmVsZXNzIE1NWCBoZXJlIG5vdy4KLSsgICAgICAgKiBUaGUgbmFtZSBuZWVkcyB0byBiZSBjaGFuZ2VkIGZvciB0aGUgeHNjYWxlIGFjY3VtdWxhdG9yIHRvby4gKi8KLSsgICAgICAqc2V0bmFtZSA9ICJNTVgiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbWVtY3B5KG5hbWUsICJ3Y2dyIiwgNCk7Ci0rICAgICAgbmFtZVs0XSA9IHJlZ25vIC0gMTA0ICsgJzAnOwotKyAgICAgIG5hbWVsZW4gPSA1OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIDExMiArIDAgLi4uIDExMiArIDk6Ci0rICAgICAgKnNldG5hbWUgPSAiTU1YIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV91bnNpZ25lZDsKLSsgICAgICAqYml0cyA9IDY0OwotKyAgICAgIG5hbWVbMF0gPSAndyc7Ci0rICAgICAgbmFtZVsxXSA9ICdyJzsKLSsgICAgICBuYW1lWzJdID0gcmVnbm8gLSAxMTIgKyAnMCc7Ci0rICAgICAgbmFtZWxlbiA9IDM7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgMTEyICsgMTAgLi4uIDExMiArIDE1OgotKyAgICAgICpzZXRuYW1lID0gIk1NWCI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSA2NDsKLSsgICAgICBuYW1lWzBdID0gJ3cnOwotKyAgICAgIG5hbWVbMV0gPSAncic7Ci0rICAgICAgbmFtZVsyXSA9ICcxJzsKLSsgICAgICBuYW1lWzNdID0gcmVnbm8gLSAxMTIgLSAxMCArICcwJzsKLSsgICAgICBuYW1lbGVuID0gNDsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSAxMjg6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotICAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotICAgICAgIHJldHVybiBzdHBjcHkgKG5hbWUsICJzcHNyIikgKyAxIC0gbmFtZTsKLSAKLSsgICAgY2FzZSAxMjk6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgIHJldHVybiBzdHBjcHkobmFtZSwgInNwc3JfZmlxIikgKyAxIC0gbmFtZTsKLSsKLSsgICAgY2FzZSAxMzA6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgIHJldHVybiBzdHBjcHkobmFtZSwgInNwc3JfaXJxIikgKyAxIC0gbmFtZTsKLSsKLSsgICAgY2FzZSAxMzE6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgIHJldHVybiBzdHBjcHkobmFtZSwgInNwc3JfYWJ0IikgKyAxIC0gbmFtZTsKLSsKLSsgICAgY2FzZSAxMzI6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgIHJldHVybiBzdHBjcHkobmFtZSwgInNwc3JfdW5kIikgKyAxIC0gbmFtZTsKLSsKLSsgICAgY2FzZSAxMzM6Ci0rICAgICAgKnNldG5hbWUgPSAic3RhdGUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgICAgIHJldHVybiBzdHBjcHkobmFtZSwgInNwc3Jfc3ZjIikgKyAxIC0gbmFtZTsKLSsKLSsgICAgY2FzZSAxNDQgLi4uIDE1MDoKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICByZXR1cm4gc3ByaW50ZihuYW1lLCAiciVkX3VzciIsIHJlZ25vIC0gMTQ0ICsgOCkgKyAxOwotKwotKyAgICBjYXNlIDE1MSAuLi4gMTU3OgotKyAgICAgICpzZXRuYW1lID0gImludGVnZXIiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIHJldHVybiBzcHJpbnRmKG5hbWUsICJyJWRfZmlxIiwgcmVnbm8gLSAxNTEgKyA4KSArIDE7Ci0rCi0rICAgIGNhc2UgMTU4IC4uLiAxNTk6Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF9pcnEiLCByZWdubyAtIDE1OCArIDEzKSArIDE7Ci0rCi0rICAgIGNhc2UgMTYwIC4uLiAxNjE6Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF9hYnQiLCByZWdubyAtIDE2MCArIDEzKSArIDE7Ci0rCi0rICAgIGNhc2UgMTYyIC4uLiAxNjM6Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF91bmQiLCByZWdubyAtIDE2MiArIDEzKSArIDE7Ci0rCi0rICAgIGNhc2UgMTY0IC4uLiAxNjU6Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgcmV0dXJuIHNwcmludGYobmFtZSwgInIlZF9zdmMiLCByZWdubyAtIDE2NCArIDEzKSArIDE7Ci0rCi0rICAgIGNhc2UgMTkyIC4uLiAxOTk6Ci0rICAgICAqc2V0bmFtZSA9ICJNTVgiOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfdW5zaWduZWQ7Ci0rICAgICAgbmFtZVswXSA9ICd3JzsKLSsgICAgICBuYW1lWzFdID0gJ2MnOwotKyAgICAgIG5hbWVbMl0gPSByZWdubyAtIDE5MiArICcwJzsKLSsgICAgICBuYW1lbGVuID0gMzsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSAyNTYgKyAwIC4uLiAyNTYgKyA5OgotKyAgICAgIC8qIFhYWCBUT0RPOiBOZW9uIGFsc28gdXNlcyB0aG9zZSByZWdpc3RlcnMgYW5kIGNhbiBjb250YWluCi0rICAgICAgICogYm90aCBmbG9hdCBhbmQgaW50ZWdlcnMgKi8KLSAgICAgICAqc2V0bmFtZSA9ICJWRlAiOwotICAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotICAgICAgICpiaXRzID0gNjQ7Ci1JbmRleDogYi9iYWNrZW5kcy9hcm1fcmV0dmFsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL2JhY2tlbmRzL2FybV9yZXR2YWwuYwotKysrIGIvYmFja2VuZHMvYXJtX3JldHZhbC5jCi1AQCAtNDgsNiArNDgsMTMgQEAgc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdbXSA9Ci0gI2RlZmluZSBubG9jX2ludHJlZwkxCi0gI2RlZmluZSBubG9jX2ludHJlZ3MobikJKDIgKiAobikpCi0gCi0rLyogZjEgICovIC8qIFhYWCBUT0RPOiBmMCBjYW4gYWxzbyBoYXZlIG51bWJlciA5NiBpZiBwcm9ncmFtIHdhcyBjb21waWxlZCB3aXRoIC1tYWJpPWFhcGNzICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzE2IH0sCi0rICB9OwotKyNkZWZpbmUgbmxvY19mcHJlZyAgMQotKwotIC8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQotICAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKLSAgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluIHIwLiAgKi8KLUBAIC01OCw4ICs2NSw5IEBAIHN0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfYWdncmVnYXRlW10gPQotICNkZWZpbmUgbmxvY19hZ2dyZWdhdGUgMQotIAotIAotLWludAotLWFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLStzdGF0aWMgaW50Ci0rYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCwKLSsJCSAgICAgICAgICAgIGludCBzb2Z0X2Zsb2F0KQotIHsKLSAgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCi0gICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLUBAIC05OCw2ICsxMDYsMjEgQEAgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdQotIAkgICAgZWxzZQotIAkgICAgICByZXR1cm4gLTE7Ci0gCSAgfQotKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCi0rCSAgewotKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKLSsJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKLSsJCQkJICZhdHRyX21lbSksICZlbmNvZGluZykgIT0gMCkKLSsJICAgICAgcmV0dXJuIC0xOwotKwotKwkgICAgaWYgKChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpICYmICFzb2Z0X2Zsb2F0KQotKwkgICAgICB7Ci0rCQkqbG9jcCA9IGxvY19mcHJlZzsKLSsJCWlmIChzaXplIDw9IDgpCi0rCQkgIHJldHVybiBubG9jX2ZwcmVnOwotKwkJZ290byBhZ2dyZWdhdGU7Ci0rCSAgICAgIH0KLSsJICB9Ci0gCWlmIChzaXplIDw9IDE2KQotIAkgIHsKLSAJICBpbnRyZWc6Ci1AQCAtMTA2LDYgKzEyOSw3IEBAIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnUKLSAJICB9Ci0gCi0gICAgICAgYWdncmVnYXRlOgotKwkvKiBYWFggVE9ETyBzb21ldGltZXMgYWdncmVnYXRlcyBhcmUgcmV0dXJuZWQgaW4gcjAgKC1tYWJpPWFhcGNzKSAqLwotIAkqbG9jcCA9IGxvY19hZ2dyZWdhdGU7Ci0gCXJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKLSAgICAgICB9Ci1AQCAtMTI1LDMgKzE0OSwxOCBAQCBhcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1Ci0gICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLwotICAgcmV0dXJuIC0yOwotIH0KLSsKLSsvKiByZXR1cm4gbG9jYXRpb24gZm9yIC1tYWJpPWFwY3MtZ251IC1tc29mdC1mbG9hdCAqLwotK2ludAotK2FybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fc29mdCAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3sKLSsgICByZXR1cm4gYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl8gKGZ1bmN0eXBlZGllLCBsb2NwLCAxKTsKLSt9Ci0rCi0rLyogcmV0dXJuIGxvY2F0aW9uIGZvciAtbWFiaT1hcGNzLWdudSAtbWhhcmQtZmxvYXQgKGN1cnJlbnQgZGVmYXVsdCkgKi8KLStpbnQKLSthcm1fcmV0dXJuX3ZhbHVlX2xvY2F0aW9uX2hhcmQgKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSt7Ci0rICAgcmV0dXJuIGFybV9yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMCk7Ci0rfQotKwotSW5kZXg6IGIvbGliZWxmL2VsZi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTI1OTMsNiArMjU5Myw5IEBAIGVudW0KLSAjZGVmaW5lIEVGX0FSTV9FQUJJX1ZFUjQJMHgwNDAwMDAwMAotICNkZWZpbmUgRUZfQVJNX0VBQklfVkVSNQkweDA1MDAwMDAwCi0gCi0rLyogRUlfT1NBQkkgdmFsdWVzICovCi0rI2RlZmluZSBFTEZPU0FCSV9BUk1fQUVBQkkgICAgNjQgICAgICAvKiBDb250YWlucyBzeW1ib2wgdmVyc2lvbmluZy4gKi8KLSsKLSAvKiBBZGRpdGlvbmFsIHN5bWJvbCB0eXBlcyBmb3IgVGh1bWIuICAqLwotICNkZWZpbmUgU1RUX0FSTV9URlVOQwkJU1RUX0xPUFJPQyAvKiBBIFRodW1iIGZ1bmN0aW9uLiAgKi8KLSAjZGVmaW5lIFNUVF9BUk1fMTZCSVQJCVNUVF9ISVBST0MgLyogQSBUaHVtYiBsYWJlbC4gICovCi1AQCAtMjYxMCwxMiArMjYxMywxOSBAQCBlbnVtCi0gCi0gLyogUHJvY2Vzc29yIHNwZWNpZmljIHZhbHVlcyBmb3IgdGhlIFBoZHIgcF90eXBlIGZpZWxkLiAgKi8KLSAjZGVmaW5lIFBUX0FSTV9FWElEWAkJKFBUX0xPUFJPQyArIDEpCS8qIEFSTSB1bndpbmQgc2VnbWVudC4gICovCi0rI2RlZmluZSBQVF9BUk1fVU5XSU5ECQlQVF9BUk1fRVhJRFgKLSAKLSAvKiBQcm9jZXNzb3Igc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgU2hkciBzaF90eXBlIGZpZWxkLiAgKi8KLSAjZGVmaW5lIFNIVF9BUk1fRVhJRFgJCShTSFRfTE9QUk9DICsgMSkgLyogQVJNIHVud2luZCBzZWN0aW9uLiAgKi8KLSAjZGVmaW5lIFNIVF9BUk1fUFJFRU1QVE1BUAkoU0hUX0xPUFJPQyArIDIpIC8qIFByZWVtcHRpb24gZGV0YWlscy4gICovCi0gI2RlZmluZSBTSFRfQVJNX0FUVFJJQlVURVMJKFNIVF9MT1BST0MgKyAzKSAvKiBBUk0gYXR0cmlidXRlcyBzZWN0aW9uLiAgKi8KLSAKLSsvKiBQcm9jZXNzb3Igc3BlY2lmaWMgdmFsdWVzIGZvciB0aGUgRHluIGRfdGFnIGZpZWxkLiAgKi8KLSsjZGVmaW5lIERUX0FSTV9SRVNFUlZFRDEJKERUX0xPUFJPQyArIDApCi0rI2RlZmluZSBEVF9BUk1fU1lNVEFCU1oJCShEVF9MT1BST0MgKyAxKQotKyNkZWZpbmUgRFRfQVJNX1BSRUVNVE1BQgkoRFRfTE9QUk9DICsgMikKLSsjZGVmaW5lIERUX0FSTV9SRVNFUlZFRDIJKERUX0xPUFJPQyArIDMpCi0rI2RlZmluZSBEVF9BUk1fTlVNCQk0Ci0gCi0gLyogQUFyY2g2NCByZWxvY3MuICAqLwotIAotQEAgLTI5MDgsNiArMjkxOCw3IEBAIGVudW0KLSAJCQkJCSAgIFRMUyBibG9jayAoTERSLCBTVFIpLiAgKi8KLSAjZGVmaW5lIFJfQVJNX1RMU19JRTEyR1AJMTExCS8qIDEyIGJpdCBHT1QgZW50cnkgcmVsYXRpdmUKLSAJCQkJCSAgIHRvIEdPVCBvcmlnaW4gKExEUikuICAqLwotKy8qIDExMiAtIDEyNyBwcml2YXRlIHJhbmdlICovCi0gI2RlZmluZSBSX0FSTV9NRV9UT08JCTEyOAkvKiBPYnNvbGV0ZS4gICovCi0gI2RlZmluZSBSX0FSTV9USE1fVExTX0RFU0NTRVEJMTI5Ci0gI2RlZmluZSBSX0FSTV9USE1fVExTX0RFU0NTRVExNgkxMjkKLUluZGV4OiBiL2JhY2tlbmRzL2xpYmVibF9hcm0uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbGliZWJsX2FybS5oCi1AQCAtMCwwICsxLDkgQEAKLSsjaWZuZGVmIF9MSUJFQkxfQVJNX0gKLSsjZGVmaW5lIF9MSUJFQkxfQVJNX0ggMQotKwotKyNpbmNsdWRlIDxsaWJkdy5oPgotKwotK2V4dGVybiBpbnQgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9zb2Z0KER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOwotK2V4dGVybiBpbnQgYXJtX3JldHVybl92YWx1ZV9sb2NhdGlvbl9oYXJkKER3YXJmX0RpZSAqLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApOwotKwotKyNlbmRpZgotSW5kZXg6IGIvdGVzdHMvcnVuLWFsbHJlZ3Muc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1hbGxyZWdzLnNoCi0rKysgYi90ZXN0cy9ydW4tYWxscmVncy5zaAotQEAgLTI2NzIsNyArMjY3MiwyOCBAQCBpbnRlZ2VyIHJlZ2lzdGVyczoKLSAJIDEzOiBzcCAoc3ApLCBhZGRyZXNzIDMyIGJpdHMKLSAJIDE0OiBsciAobHIpLCBhZGRyZXNzIDMyIGJpdHMKLSAJIDE1OiBwYyAocGMpLCBhZGRyZXNzIDMyIGJpdHMKLS0JMTI4OiBzcHNyIChzcHNyKSwgdW5zaWduZWQgMzIgYml0cwotKwkxNDQ6IHI4X3VzciAocjhfdXNyKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTQ1OiByOV91c3IgKHI5X3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE0NjogcjEwX3VzciAocjEwX3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE0NzogcjExX3VzciAocjExX3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE0ODogcjEyX3VzciAocjEyX3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE0OTogcjEzX3VzciAocjEzX3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE1MDogcjE0X3VzciAocjE0X3VzciksIHNpZ25lZCAzMiBiaXRzCi0rCTE1MTogcjhfZmlxIChyOF9maXEpLCBzaWduZWQgMzIgYml0cwotKwkxNTI6IHI5X2ZpcSAocjlfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTUzOiByMTBfZmlxIChyMTBfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU0OiByMTFfZmlxIChyMTFfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU1OiByMTJfZmlxIChyMTJfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU2OiByMTNfZmlxIChyMTNfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU3OiByMTRfZmlxIChyMTRfZmlxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU4OiByMTNfaXJxIChyMTNfaXJxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTU5OiByMTRfaXJxIChyMTRfaXJxKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTYwOiByMTNfYWJ0IChyMTNfYWJ0KSwgc2lnbmVkIDMyIGJpdHMKLSsJMTYxOiByMTRfYWJ0IChyMTRfYWJ0KSwgc2lnbmVkIDMyIGJpdHMKLSsJMTYyOiByMTNfdW5kIChyMTNfdW5kKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTYzOiByMTRfdW5kIChyMTRfdW5kKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTY0OiByMTNfc3ZjIChyMTNfc3ZjKSwgc2lnbmVkIDMyIGJpdHMKLSsJMTY1OiByMTRfc3ZjIChyMTRfc3ZjKSwgc2lnbmVkIDMyIGJpdHMKLSBGUEEgcmVnaXN0ZXJzOgotIAkgMTY6IGYwIChmMCksIGZsb2F0IDk2IGJpdHMKLSAJIDE3OiBmMSAoZjEpLCBmbG9hdCA5NiBiaXRzCi1AQCAtMjY5MCw3ICsyNzExLDcyIEBAIEZQQSByZWdpc3RlcnM6Ci0gCTEwMTogZjUgKGY1KSwgZmxvYXQgOTYgYml0cwotIAkxMDI6IGY2IChmNiksIGZsb2F0IDk2IGJpdHMKLSAJMTAzOiBmNyAoZjcpLCBmbG9hdCA5NiBiaXRzCi0rTU1YIHJlZ2lzdGVyczoKLSsJMTA0OiB3Y2dyMCAod2NncjApLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEwNTogd2NncjEgKHdjZ3IxKSwgdW5zaWduZWQgMzIgYml0cwotKwkxMDY6IHdjZ3IyICh3Y2dyMiksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTA3OiB3Y2dyMyAod2NncjMpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEwODogd2NncjQgKHdjZ3I0KSwgdW5zaWduZWQgMzIgYml0cwotKwkxMDk6IHdjZ3I1ICh3Y2dyNSksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTEwOiB3Y2dyNiAod2NncjYpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTExMTogd2NncjcgKHdjZ3I3KSwgdW5zaWduZWQgMzIgYml0cwotKwkxMTI6IHdyMCAod3IwKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTM6IHdyMSAod3IxKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTQ6IHdyMiAod3IyKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTU6IHdyMyAod3IzKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTY6IHdyNCAod3I0KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTc6IHdyNSAod3I1KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTg6IHdyNiAod3I2KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMTk6IHdyNyAod3I3KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjA6IHdyOCAod3I4KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjE6IHdyOSAod3I5KSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjI6IHdyMTAgKHdyMTApLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyMzogd3IxMSAod3IxMSksIHVuc2lnbmVkIDY0IGJpdHMKLSsJMTI0OiB3cjEyICh3cjEyKSwgdW5zaWduZWQgNjQgYml0cwotKwkxMjU6IHdyMTMgKHdyMTMpLCB1bnNpZ25lZCA2NCBiaXRzCi0rCTEyNjogd3IxNCAod3IxNCksIHVuc2lnbmVkIDY0IGJpdHMKLSsJMTI3OiB3cjE1ICh3cjE1KSwgdW5zaWduZWQgNjQgYml0cwotKwkxOTI6IHdjMCAod2MwKSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTM6IHdjMSAod2MxKSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTQ6IHdjMiAod2MyKSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTU6IHdjMyAod2MzKSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTY6IHdjNCAod2M0KSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTc6IHdjNSAod2M1KSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTg6IHdjNiAod2M2KSwgdW5zaWduZWQgMzIgYml0cwotKwkxOTk6IHdjNyAod2M3KSwgdW5zaWduZWQgMzIgYml0cwotIFZGUCByZWdpc3RlcnM6Ci0rCSA2NDogczAgKHMwKSwgZmxvYXQgMzIgYml0cwotKwkgNjU6IHMxIChzMSksIGZsb2F0IDMyIGJpdHMKLSsJIDY2OiBzMiAoczIpLCBmbG9hdCAzMiBiaXRzCi0rCSA2NzogczMgKHMzKSwgZmxvYXQgMzIgYml0cwotKwkgNjg6IHM0IChzNCksIGZsb2F0IDMyIGJpdHMKLSsJIDY5OiBzNSAoczUpLCBmbG9hdCAzMiBiaXRzCi0rCSA3MDogczYgKHM2KSwgZmxvYXQgMzIgYml0cwotKwkgNzE6IHM3IChzNyksIGZsb2F0IDMyIGJpdHMKLSsJIDcyOiBzOCAoczgpLCBmbG9hdCAzMiBiaXRzCi0rCSA3MzogczkgKHM5KSwgZmxvYXQgMzIgYml0cwotKwkgNzQ6IHMxMCAoczEwKSwgZmxvYXQgMzIgYml0cwotKwkgNzU6IHMxMSAoczExKSwgZmxvYXQgMzIgYml0cwotKwkgNzY6IHMxMiAoczEyKSwgZmxvYXQgMzIgYml0cwotKwkgNzc6IHMxMyAoczEzKSwgZmxvYXQgMzIgYml0cwotKwkgNzg6IHMxNCAoczE0KSwgZmxvYXQgMzIgYml0cwotKwkgNzk6IHMxNSAoczE1KSwgZmxvYXQgMzIgYml0cwotKwkgODA6IHMxNiAoczE2KSwgZmxvYXQgMzIgYml0cwotKwkgODE6IHMxNyAoczE3KSwgZmxvYXQgMzIgYml0cwotKwkgODI6IHMxOCAoczE4KSwgZmxvYXQgMzIgYml0cwotKwkgODM6IHMxOSAoczE5KSwgZmxvYXQgMzIgYml0cwotKwkgODQ6IHMyMCAoczIwKSwgZmxvYXQgMzIgYml0cwotKwkgODU6IHMyMSAoczIxKSwgZmxvYXQgMzIgYml0cwotKwkgODY6IHMyMiAoczIyKSwgZmxvYXQgMzIgYml0cwotKwkgODc6IHMyMyAoczIzKSwgZmxvYXQgMzIgYml0cwotKwkgODg6IHMyNCAoczI0KSwgZmxvYXQgMzIgYml0cwotKwkgODk6IHMyNSAoczI1KSwgZmxvYXQgMzIgYml0cwotKwkgOTA6IHMyNiAoczI2KSwgZmxvYXQgMzIgYml0cwotKwkgOTE6IHMyNyAoczI3KSwgZmxvYXQgMzIgYml0cwotKwkgOTI6IHMyOCAoczI4KSwgZmxvYXQgMzIgYml0cwotKwkgOTM6IHMyOSAoczI5KSwgZmxvYXQgMzIgYml0cwotKwkgOTQ6IHMzMCAoczMwKSwgZmxvYXQgMzIgYml0cwotKwkgOTU6IHMzMSAoczMxKSwgZmxvYXQgMzIgYml0cwotIAkyNTY6IGQwIChkMCksIGZsb2F0IDY0IGJpdHMKLSAJMjU3OiBkMSAoZDEpLCBmbG9hdCA2NCBiaXRzCi0gCTI1ODogZDIgKGQyKSwgZmxvYXQgNjQgYml0cwotQEAgLTI3MjMsNiArMjgwOSwxMyBAQCBWRlAgcmVnaXN0ZXJzOgotIAkyODU6IGQyOSAoZDI5KSwgZmxvYXQgNjQgYml0cwotIAkyODY6IGQzMCAoZDMwKSwgZmxvYXQgNjQgYml0cwotIAkyODc6IGQzMSAoZDMxKSwgZmxvYXQgNjQgYml0cwotK3N0YXRlIHJlZ2lzdGVyczoKLSsJMTI4OiBzcHNyIChzcHNyKSwgdW5zaWduZWQgMzIgYml0cwotKwkxMjk6IHNwc3JfZmlxIChzcHNyX2ZpcSksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTMwOiBzcHNyX2lycSAoc3Bzcl9pcnEpLCB1bnNpZ25lZCAzMiBiaXRzCi0rCTEzMTogc3Bzcl9hYnQgKHNwc3JfYWJ0KSwgdW5zaWduZWQgMzIgYml0cwotKwkxMzI6IHNwc3JfdW5kIChzcHNyX3VuZCksIHVuc2lnbmVkIDMyIGJpdHMKLSsJMTMzOiBzcHNyX3N2YyAoc3Bzcl9zdmMpLCB1bnNpZ25lZCAzMiBiaXRzCi0gRU9GCi0gCi0gIyBTZWUgcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2ggZm9yIGluc3RydWN0aW9ucyB0byByZWdlbmVyYXRlCi1JbmRleDogYi90ZXN0cy9ydW4tcmVhZGVsZi1taXhlZC1jb3Jlbm90ZS5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdGVzdHMvcnVuLXJlYWRlbGYtbWl4ZWQtY29yZW5vdGUuc2gKLSsrKyBiL3Rlc3RzL3J1bi1yZWFkZWxmLW1peGVkLWNvcmVub3RlLnNoCi1AQCAtMzEsMTIgKzMxLDExIEBAIE5vdGUgc2VnbWVudCBvZiA4OTIgYnl0ZXMgYXQgb2Zmc2V0IDB4MjcKLSAgICAgcGlkOiAxMTA4NywgcHBpZDogMTEwNjMsIHBncnA6IDExMDg3LCBzaWQ6IDExMDYzCi0gICAgIHV0aW1lOiAwLjAwMDAwMCwgc3RpbWU6IDAuMDEwMDAwLCBjdXRpbWU6IDAuMDAwMDAwLCBjc3RpbWU6IDAuMDAwMDAwCi0gICAgIG9yaWdfcjA6IC0xLCBmcHZhbGlkOiAxCi0tICAgIHIwOiAgICAgICAgICAgICAxICByMTogICAtMTA5MTY3MjUwOCAgcjI6ICAgLTEwOTE2NzI1MDAKLS0gICAgcjM6ICAgICAgICAgICAgIDAgIHI0OiAgICAgICAgICAgICAwICByNTogICAgICAgICAgICAgMAotLSAgICByNjogICAgICAgICAzMzcyOCAgcjc6ICAgICAgICAgICAgIDAgIHI4OiAgICAgICAgICAgICAwCi0tICAgIHI5OiAgICAgICAgICAgICAwICByMTA6ICAtMTIyNTcwMzQ5NiAgcjExOiAgLTEwOTE2NzI4NDQKLS0gICAgcjEyOiAgICAgICAgICAgIDAgIHNwOiAgICAweGJlZWU2NGY0ICBscjogICAgMHhiNmRjM2Y0OAotLSAgICBwYzogICAgMHgwMDAwODUwMCAgc3BzcjogIDB4NjAwMDAwMTAKLSsgICAgcjA6ICAgICAgICAgICAgMSAgcjE6ICAtMTA5MTY3MjUwOCAgcjI6ICAtMTA5MTY3MjUwMCAgcjM6ICAgICAgICAgICAgMAotKyAgICByNDogICAgICAgICAgICAwICByNTogICAgICAgICAgICAwICByNjogICAgICAgIDMzNzI4ICByNzogICAgICAgICAgICAwCi0rICAgIHI4OiAgICAgICAgICAgIDAgIHI5OiAgICAgICAgICAgIDAgIHIxMDogLTEyMjU3MDM0OTYgIHIxMTogLTEwOTE2NzI4NDQKLSsgICAgcjEyOiAgICAgICAgICAgMCAgc3A6ICAgMHhiZWVlNjRmNCAgbHI6ICAgMHhiNmRjM2Y0OCAgcGM6ICAgMHgwMDAwODUwMAotKyAgICBzcHNyOiAgMHg2MDAwMDAxMAotICAgQ09SRSAgICAgICAgICAgICAgICAgMTI0ICBQUlBTSU5GTwotICAgICBzdGF0ZTogMCwgc25hbWU6IFIsIHpvbWI6IDAsIG5pY2U6IDAsIGZsYWc6IDB4MDA0MDA1MDAKLSAgICAgdWlkOiAwLCBnaWQ6IDAsIHBpZDogMTEwODcsIHBwaWQ6IDExMDYzLCBwZ3JwOiAxMTA4Nywgc2lkOiAxMTA2MwotSW5kZXg6IGIvdGVzdHMvcnVuLWFkZHJjZmkuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1hZGRyY2ZpLnNoCi0rKysgYi90ZXN0cy9ydW4tYWRkcmNmaS5zaAotQEAgLTM1NTQsNiArMzU1NCwzOCBAQCBkd2FyZl9jZmlfYWRkcmZyYW1lICguZWhfZnJhbWUpOiBubyBtYXRjCi0gCUZQQSByZWcyMSAoZjUpOiB1bmRlZmluZWQKLSAJRlBBIHJlZzIyIChmNik6IHVuZGVmaW5lZAotIAlGUEEgcmVnMjMgKGY3KTogdW5kZWZpbmVkCi0rCVZGUCByZWc2NCAoczApOiB1bmRlZmluZWQKLSsJVkZQIHJlZzY1IChzMSk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNjYgKHMyKTogdW5kZWZpbmVkCi0rCVZGUCByZWc2NyAoczMpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzY4IChzNCk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNjkgKHM1KTogdW5kZWZpbmVkCi0rCVZGUCByZWc3MCAoczYpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzcxIChzNyk6IHVuZGVmaW5lZAotKwlWRlAgcmVnNzIgKHM4KTogdW5kZWZpbmVkCi0rCVZGUCByZWc3MyAoczkpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc0IChzMTApOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc1IChzMTEpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc2IChzMTIpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc3IChzMTMpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc4IChzMTQpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzc5IChzMTUpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzgwIChzMTYpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzgxIChzMTcpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzgyIChzMTgpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzgzIChzMTkpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg0IChzMjApOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg1IChzMjEpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg2IChzMjIpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg3IChzMjMpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg4IChzMjQpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzg5IChzMjUpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzkwIChzMjYpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzkxIChzMjcpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzkyIChzMjgpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzkzIChzMjkpOiB1bmRlZmluZWQKLSsJVkZQIHJlZzk0IChzMzApOiB1bmRlZmluZWQKLSsJVkZQIHJlZzk1IChzMzEpOiB1bmRlZmluZWQKLSAJRlBBIHJlZzk2IChmMCk6IHVuZGVmaW5lZAotIAlGUEEgcmVnOTcgKGYxKTogdW5kZWZpbmVkCi0gCUZQQSByZWc5OCAoZjIpOiB1bmRlZmluZWQKLUBAIC0zNTYyLDcgKzM1OTQsNjYgQEAgZHdhcmZfY2ZpX2FkZHJmcmFtZSAoLmVoX2ZyYW1lKTogbm8gbWF0YwotIAlGUEEgcmVnMTAxIChmNSk6IHVuZGVmaW5lZAotIAlGUEEgcmVnMTAyIChmNik6IHVuZGVmaW5lZAotIAlGUEEgcmVnMTAzIChmNyk6IHVuZGVmaW5lZAotLQlpbnRlZ2VyIHJlZzEyOCAoc3Bzcik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA0ICh3Y2dyMCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA1ICh3Y2dyMSk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA2ICh3Y2dyMik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA3ICh3Y2dyMyk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA4ICh3Y2dyNCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTA5ICh3Y2dyNSk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTEwICh3Y2dyNik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTExICh3Y2dyNyk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTEyICh3cjApOiB1bmRlZmluZWQKLSsJTU1YIHJlZzExMyAod3IxKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTQgKHdyMik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTE1ICh3cjMpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzExNiAod3I0KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMTcgKHdyNSk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTE4ICh3cjYpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzExOSAod3I3KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjAgKHdyOCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTIxICh3cjkpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzEyMiAod3IxMCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTIzICh3cjExKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjQgKHdyMTIpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzEyNSAod3IxMyk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTI2ICh3cjE0KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxMjcgKHdyMTUpOiB1bmRlZmluZWQKLSsJc3RhdGUgcmVnMTI4IChzcHNyKTogdW5kZWZpbmVkCi0rCXN0YXRlIHJlZzEyOSAoc3Bzcl9maXEpOiB1bmRlZmluZWQKLSsJc3RhdGUgcmVnMTMwIChzcHNyX2lycSk6IHVuZGVmaW5lZAotKwlzdGF0ZSByZWcxMzEgKHNwc3JfYWJ0KTogdW5kZWZpbmVkCi0rCXN0YXRlIHJlZzEzMiAoc3Bzcl91bmQpOiB1bmRlZmluZWQKLSsJc3RhdGUgcmVnMTMzIChzcHNyX3N2Yyk6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE0NCAocjhfdXNyKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTQ1IChyOV91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNDYgKHIxMF91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNDcgKHIxMV91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNDggKHIxMl91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNDkgKHIxM191c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTAgKHIxNF91c3IpOiB1bmRlZmluZWQKLSsJaW50ZWdlciByZWcxNTEgKHI4X2ZpcSk6IHVuZGVmaW5lZAotKwlpbnRlZ2VyIHJlZzE1MiAocjlfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTUzIChyMTBfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU0IChyMTFfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU1IChyMTJfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU2IChyMTNfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU3IChyMTRfZmlxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU4IChyMTNfaXJxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTU5IChyMTRfaXJxKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTYwIChyMTNfYWJ0KTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTYxIChyMTRfYWJ0KTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTYyIChyMTNfdW5kKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTYzIChyMTRfdW5kKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTY0IChyMTNfc3ZjKTogdW5kZWZpbmVkCi0rCWludGVnZXIgcmVnMTY1IChyMTRfc3ZjKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTIgKHdjMCk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTkzICh3YzEpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzE5NCAod2MyKTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTUgKHdjMyk6IHVuZGVmaW5lZAotKwlNTVggcmVnMTk2ICh3YzQpOiB1bmRlZmluZWQKLSsJTU1YIHJlZzE5NyAod2M1KTogdW5kZWZpbmVkCi0rCU1NWCByZWcxOTggKHdjNik6IHVuZGVmaW5lZAotKwlNTVggcmVnMTk5ICh3YzcpOiB1bmRlZmluZWQKLSAJVkZQIHJlZzI1NiAoZDApOiB1bmRlZmluZWQKLSAJVkZQIHJlZzI1NyAoZDEpOiB1bmRlZmluZWQKLSAJVkZQIHJlZzI1OCAoZDIpOiB1bmRlZmluZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZmODUyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw4MDIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfaW5pdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX2luaXQuYwotQEAgLTAsMCArMSw3MyBAQAotKy8qIEluaXRpYWxpemF0aW9uIG9mIFBBLVJJU0Mgc3BlY2lmaWMgYmFja2VuZCBsaWJyYXJ5LgotKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LCAyMDAyLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBCQUNLRU5ECQlwYXJpc2NfCi0rI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9QQVJJU0NfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsjaW5jbHVkZSAibGliZWJsX3BhcmlzYy5oIgotKwotKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIHBhcmlzY19yZWxvYy5kZWYuICAqLwotKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKLSsKLSsKLStjb25zdCBjaGFyICoKLStwYXJpc2NfaW5pdCAoRWxmICplbGYgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotKyAgICAgR0VsZl9IYWxmIG1hY2hpbmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLAotKyAgICAgRWJsICplaCwKLSsgICAgIHNpemVfdCBlaGxlbikKLSt7Ci0rICBpbnQgcGE2NCA9IDA7Ci0rCi0rICAvKiBDaGVjayB3aGV0aGVyIHRoZSBFbGZfQkggb2JqZWN0IGhhcyBhIHN1ZmZpY2VudCBzaXplLiAgKi8KLSsgIGlmIChlaGxlbiA8IHNpemVvZiAoRWJsKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBpZiAoZWxmKSB7Ci0rICAgIEdFbGZfRWhkciBlaGRyX21lbTsKLSsgICAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7Ci0rICAgIGlmIChlaGRyICYmIChlaGRyLT5lX2ZsYWdzICYgRUZfUEFSSVNDX1dJREUpKQotKyAgICAgIHBhNjQgPSAxOwotKyAgfQotKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KLSsgIGVoLT5uYW1lID0gIlBBLVJJU0MiOwotKyAgcGFyaXNjX2luaXRfcmVsb2MgKGVoKTsKLSsgIEhPT0sgKGVoLCByZWxvY19zaW1wbGVfdHlwZSk7Ci0rICBIT09LIChlaCwgbWFjaGluZV9mbGFnX2NoZWNrKTsKLSsgIEhPT0sgKGVoLCBzeW1ib2xfdHlwZV9uYW1lKTsKLSsgIEhPT0sgKGVoLCBzZWdtZW50X3R5cGVfbmFtZSk7Ci0rICBIT09LIChlaCwgc2VjdGlvbl90eXBlX25hbWUpOwotKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOwotKyAgaWYgKHBhNjQpCi0rICAgIGVoLT5yZXR1cm5fdmFsdWVfbG9jYXRpb24gPSBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0OwotKyAgZWxzZQotKyAgICBlaC0+cmV0dXJuX3ZhbHVlX2xvY2F0aW9uID0gcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8zMjsKLSsKLSsgIHJldHVybiBNT0RWRVJTSU9OOwotK30KLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmVncy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlZ3MuYwotQEAgLTAsMCArMSwxNTkgQEAKLSsvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgUEEtUklTQyBEV0FSRi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5EIHBhcmlzY18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotK3NzaXplX3QKLStwYXJpc2NfcmVnaXN0ZXJfaW5mbyAoRWJsICplYmwsIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCi0rCQkgICAgIGNvbnN0IGNoYXIgKipwcmVmaXgsIGNvbnN0IGNoYXIgKipzZXRuYW1lLAotKwkJICAgICBpbnQgKmJpdHMsIGludCAqdHlwZSkKLSt7Ci0rICBpbnQgcGE2NCA9IDA7Ci0rCi0rICBpZiAoZWJsLT5lbGYpIHsKLSsgICAgR0VsZl9FaGRyIGVoZHJfbWVtOwotKyAgICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVibC0+ZWxmLCAmZWhkcl9tZW0pOwotKyAgICBpZiAoZWhkci0+ZV9mbGFncyAmIEVGX1BBUklTQ19XSURFKQotKyAgICAgIHBhNjQgPSAxOwotKyAgfQotKwotKyAgaW50IG5yZWdzID0gcGE2NCA/IDEyNyA6IDEyODsKLSsKLSsgIGlmIChuYW1lID09IE5VTEwpCi0rICAgIHJldHVybiBucmVnczsKLSsKLSsgIGlmIChyZWdubyA8IDAgfHwgcmVnbm8gPj0gbnJlZ3MgfHwgbmFtZWxlbiA8IDYpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgICpwcmVmaXggPSAiJSI7Ci0rCi0rICBpZiAocmVnbm8gPCAzMikKLSsgIHsKLSsgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgaWYgKHBhNjQpCi0rICAgIHsKLSsJKmJpdHMgPSA2NDsKLSsgICAgfQotKyAgICBlbHNlCi0rICAgIHsKLSsgICAgCSpiaXRzID0gMzI7Ci0rICAgIH0KLSsgIH0KLSsgIGVsc2UgaWYgKHJlZ25vID09IDMyKQotKyAgewotKyAgICAqc2V0bmFtZSA9ICJzcGVjaWFsIjsKLSsgICAgaWYgKHBhNjQpCi0rICAgIHsKLSsJKmJpdHMgPSA2OwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAJKmJpdHMgPSA1OwotKyAgICB9Ci0rICAgICp0eXBlID0gRFdfQVRFX3Vuc2lnbmVkOwotKyAgfQotKyAgZWxzZQotKyAgewotKyAgICAqc2V0bmFtZSA9ICJGUFUiOwotKyAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKLSsgICAgaWYgKHBhNjQpCi0rICAgIHsKLSsJKmJpdHMgPSA2NDsKLSsgICAgfQotKyAgICBlbHNlCi0rICAgIHsKLSsgICAgCSpiaXRzID0gMzI7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChyZWdubyA8IDMzKSB7Ci0rICAgIHN3aXRjaCAocmVnbm8pCi0rICAgICAgewotKyAgICAgIGNhc2UgMCAuLi4gOToKLSsgICAgICAgIG5hbWVbMF0gPSAncic7Ci0rICAgICAgICBuYW1lWzFdID0gcmVnbm8gKyAnMCc7Ci0rICAgICAgICBuYW1lbGVuID0gMjsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgMTAgLi4uIDMxOgotKyAgICAgICAgbmFtZVswXSA9ICdyJzsKLSsgICAgICAgIG5hbWVbMV0gPSByZWdubyAvIDEwICsgJzAnOwotKyAgICAgICAgbmFtZVsyXSA9IHJlZ25vICUgMTAgKyAnMCc7Ci0rICAgICAgICBuYW1lbGVuID0gMzsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIGNhc2UgMzI6Ci0rCSpwcmVmaXggPSBOVUxMOwotKwluYW1lWzBdID0gJ1MnOwotKwluYW1lWzFdID0gJ0EnOwotKwluYW1lWzJdID0gJ1InOwotKwluYW1lbGVuID0gMzsKLSsJYnJlYWs7Ci0rICAgICAgfQotKyAgfQotKyAgZWxzZSB7Ci0rICAgIGlmIChwYTY0ICYmICgocmVnbm8gLSA3MikgJSAyKSkgewotKyAgICAgICpzZXRuYW1lID0gTlVMTDsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgICBzd2l0Y2ggKHJlZ25vKQotKyAgICAgIHsKLSsgICAgICBjYXNlIDcyICsgMCAuLi4gNzIgKyAxMToKLSsgICAgICAgIG5hbWVbMF0gPSAnZic7Ci0rCW5hbWVbMV0gPSAncic7Ci0rICAgICAgICBuYW1lWzJdID0gKHJlZ25vICsgOCAtIDcyKSAvIDIgKyAnMCc7Ci0rICAgICAgICBuYW1lbGVuID0gMzsKLSsgICAgICAgIGlmICgocmVnbm8gKyA4IC0gNzIpICUgMikgewotKwkgIG5hbWVbM10gPSAnUic7Ci0rCSAgbmFtZWxlbisrOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgY2FzZSA3MiArIDEyIC4uLiA3MiArIDU1OgotKyAgICAgICAgbmFtZVswXSA9ICdmJzsKLSsJbmFtZVsxXSA9ICdyJzsKLSsgICAgICAgIG5hbWVbMl0gPSAocmVnbm8gKyA4IC0gNzIpIC8gMiAvIDEwICsgJzAnOwotKyAgICAgICAgbmFtZVszXSA9IChyZWdubyArIDggLSA3MikgLyAyICUgMTAgKyAnMCc7Ci0rICAgICAgICBuYW1lbGVuID0gNDsKLSsgICAgICAgIGlmICgocmVnbm8gKyA4IC0gNzIpICUgMikgewotKwkgIG5hbWVbNF0gPSAnUic7Ci0rCSAgbmFtZWxlbisrOwotKyAgICAgICAgfQotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAgICpzZXRuYW1lID0gTlVMTDsKLSsgICAgICAgIHJldHVybiAwOwotKyAgICAgIH0KLSsgIH0KLSsgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7Ci0rICByZXR1cm4gbmFtZWxlbjsKLSt9Ci1JbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYKLUBAIC0wLDAgKzEsMTI4IEBACi0rLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgUEEtUklTQy4gIC0qLSBDIC0qLQotKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rLyoJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KLSsKLStSRUxPQ19UWVBFIChOT05FLAkJRVhFQ3xEWU4pCi0rUkVMT0NfVFlQRSAoRElSMzIsCQlSRUx8RVhFQ3xEWU4pCi0rUkVMT0NfVFlQRSAoRElSMjFMLAkJUkVMfEVYRUN8RFlOKQotK1JFTE9DX1RZUEUgKERJUjE3UiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxN0YsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRElSMTRSLAkJUkVMfERZTikKLStSRUxPQ19UWVBFIChQQ1JFTDMyLAkJUkVMKQotK1JFTE9DX1RZUEUgKFBDUkVMMjFMLAkJUkVMKQotK1JFTE9DX1RZUEUgKFBDUkVMMTdSLAkJUkVMKQotK1JFTE9DX1RZUEUgKFBDUkVMMTdGLAkJUkVMKQotK1JFTE9DX1RZUEUgKFBDUkVMMTRSLAkJUkVMfEVYRUMpCi0rUkVMT0NfVFlQRSAoRFBSRUwyMUwsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRFBSRUwxNFdSLAkJUkVMKQotK1JFTE9DX1RZUEUgKERQUkVMMTREUiwgICAgICAgICAgUkVMKQotK1JFTE9DX1RZUEUgKERQUkVMMTRSLAkJUkVMKQotK1JFTE9DX1RZUEUgKEdQUkVMMjFMLAkJMCkKLStSRUxPQ19UWVBFIChHUFJFTDE0UiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkYyMUwsCQlSRUwpCi0rUkVMT0NfVFlQRSAoTFRPRkYxNFIsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRExUSU5EMTRGLAkJMCkKLStSRUxPQ19UWVBFIChTRVRCQVNFLAkJMCkKLStSRUxPQ19UWVBFIChTRUNSRUwzMiwJCVJFTCkKLStSRUxPQ19UWVBFIChCQVNFUkVMMjFMLAkJMCkKLStSRUxPQ19UWVBFIChCQVNFUkVMMTdSLAkJMCkKLStSRUxPQ19UWVBFIChCQVNFUkVMMTRSLAkJMCkKLStSRUxPQ19UWVBFIChTRUdCQVNFLAkJMCkKLStSRUxPQ19UWVBFIChTRUdSRUwzMiwJCVJFTCkKLStSRUxPQ19UWVBFIChQTFRPRkYyMUwsCQkwKQotK1JFTE9DX1RZUEUgKFBMVE9GRjE0UiwJCTApCi0rUkVMT0NfVFlQRSAoUExUT0ZGMTRGLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMzIsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjIxTCwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTRSLAkwKQotK1JFTE9DX1RZUEUgKEZQVFI2NCwJCTApCi0rUkVMT0NfVFlQRSAoUExBQkVMMzIsCQlSRUx8RFlOKQotK1JFTE9DX1RZUEUgKFBDUkVMNjQsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMjJDLAkJMCkKLStSRUxPQ19UWVBFIChQQ1JFTDIyRiwJCTApCi0rUkVMT0NfVFlQRSAoUENSRUwxNFdSLAkJMCkKLStSRUxPQ19UWVBFIChQQ1JFTDE0RFIsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMTZGLAkJMCkKLStSRUxPQ19UWVBFIChQQ1JFTDE2V0YsCQkwKQotK1JFTE9DX1RZUEUgKFBDUkVMMTZERiwJCTApCi0rUkVMT0NfVFlQRSAoRElSNjQsCQlSRUx8RFlOKQotK1JFTE9DX1RZUEUgKERJUjE0V1IsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRElSMTREUiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxNkYsCQlSRUwpCi0rUkVMT0NfVFlQRSAoRElSMTZXRiwJCVJFTCkKLStSRUxPQ19UWVBFIChESVIxNkRGLAkJUkVMKQotK1JFTE9DX1RZUEUgKEdQUkVMNjQsCQkwKQotK1JFTE9DX1RZUEUgKEdQUkVMMTRXUiwJCTApCi0rUkVMT0NfVFlQRSAoR1BSRUwxNERSLAkJMCkKLStSRUxPQ19UWVBFIChHUFJFTDE2RiwJCTApCi0rUkVMT0NfVFlQRSAoR1BSRUwxNldGLAkJMCkKLStSRUxPQ19UWVBFIChHUFJFTDE2REYsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGNjQsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGMTRXUiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkYxNERSLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRjE2RiwJCTApCi0rUkVMT0NfVFlQRSAoTFRPRkYxNldGLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRjE2REYsCQkwKQotK1JFTE9DX1RZUEUgKFNFQ1JFTDY0LAkJMCkKLStSRUxPQ19UWVBFIChCQVNFUkVMMTRXUiwJMCkKLStSRUxPQ19UWVBFIChCQVNFUkVMMTREUiwJMCkKLStSRUxPQ19UWVBFIChTRUdSRUw2NCwJCTApCi0rUkVMT0NfVFlQRSAoUExUT0ZGMTRXUiwJCTApCi0rUkVMT0NfVFlQRSAoUExUT0ZGMTREUiwJCTApCi0rUkVMT0NfVFlQRSAoUExUT0ZGMTZGLAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNldGLAkJMCkKLStSRUxPQ19UWVBFIChQTFRPRkYxNkRGLAkJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSNjQsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE0V1IsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE0RFIsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfRlBUUjE2RiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZXRiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9GUFRSMTZERiwJMCkKLStSRUxPQ19UWVBFIChDT1BZLAkJRVhFQykKLStSRUxPQ19UWVBFIChJUExULAkJRVhFQ3xEWU4pCi0rUkVMT0NfVFlQRSAoRVBMVCwJCTApCi0rUkVMT0NfVFlQRSAoVFBSRUwzMiwJCURZTikKLStSRUxPQ19UWVBFIChUUFJFTDIxTCwJCTApCi0rUkVMT0NfVFlQRSAoVFBSRUwxNFIsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMjFMLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRSLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRGLAkwKQotK1JFTE9DX1RZUEUgKFRQUkVMNjQsCQkwKQotK1JFTE9DX1RZUEUgKFRQUkVMMTRXUiwJCTApCi0rUkVMT0NfVFlQRSAoVFBSRUwxNERSLAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDE2RiwJCTApCi0rUkVMT0NfVFlQRSAoVFBSRUwxNldGLAkJMCkKLStSRUxPQ19UWVBFIChUUFJFTDE2REYsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQNjQsCQkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTRXUiwJMCkKLStSRUxPQ19UWVBFIChMVE9GRl9UUDE0RFIsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNkYsCTApCi0rUkVMT0NfVFlQRSAoTFRPRkZfVFAxNldGLAkwKQotK1JFTE9DX1RZUEUgKExUT0ZGX1RQMTZERiwJMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQTU9EMzIsCURZTikKLStSRUxPQ19UWVBFIChUTFNfRFRQTU9ENjQsCURZTikKLSsKLSsjZGVmaW5lIE5PX1JFTEFUSVZFX1JFTE9DICAgICAgIDEKLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBlbGZ1dGlscy0wLjE3MC9iYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMKLUBAIC0wLDAgKzEsMjEzIEBACi0rLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9QQS1SSVNDIEFCSS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5EIHBhcmlzY18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKyNpbmNsdWRlICJsaWJlYmxfcGFyaXNjLmgiCi0rCi0rLyogJXIyOCwgb3IgcGFpciAlcjI4LCAlcjI5LiAgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZzMyW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjggfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMjkgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsKLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzI4IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzI5IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ludHJlZwkxCi0rI2RlZmluZSBubG9jX2ludHJlZ3BhaXIJNAotKwotKy8qICVmcjRMLCBvciBwYWlyICVmcjRMLCAlZnI0UiBvbiBwYS0zMiAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWczMltdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gNzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfZnByZWczMiAyCi0rI2RlZmluZSBubG9jX2ZwcmVncGFpcjMyIDQKLSsKLSsvKiAkZnI0ICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSA3MiB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfZnByZWcgIDEKLSsKLSsjaWYgMAotKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQotKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiBBZGRyZXNzIG9mIHRoZSBsb2NhdGlvbiBpcyBzdG9yZWQKLSsgICBpbiAlcjI4IGJlZm9yZSBmdW5jdGlvbiBjYWxsLCBidXQgaXQgbWF5IGJlIGNoYW5nZWQgYnkgZnVuY3Rpb24uICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9icmVnMjggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2FnZ3JlZ2F0ZSAxCi0rI2VuZGlmCi0rCi0rc3RhdGljIGludAotK3BhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3AsIGludCBwYTY0KQotK3sKLSsgIER3YXJmX1dvcmQgcmVnc2l6ZSA9IHBhNjQgPyA4IDogNDsKLSsKLSsgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCi0rICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KLSsKLSsgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKLSsgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKLSsgIGlmIChhdHRyID09IE5VTEwpCi0rICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLwotKyAgICByZXR1cm4gMDsKLSsKLSsgIER3YXJmX0RpZSBkaWVfbWVtOwotKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSsgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotKwotKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLwotKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgotKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQotKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQotKyAgICB7Ci0rICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rICAgIH0KLSsKLSsgIHN3aXRjaCAodGFnKQotKyAgICB7Ci0rICAgIGNhc2UgLTE6Ci0rICAgICAgcmV0dXJuIC0xOwotKwotKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgotKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQotKwl7Ci0rCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCX0KLSsgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwotKwotKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgotKyAgICAgIHsKLSsgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKLSsJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKLSsJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKLSsJICB7Ci0rCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCi0rCSAgICAgIHNpemUgPSA0OwotKwkgICAgZWxzZQotKwkgICAgICByZXR1cm4gLTE7Ci0rCSAgfQotKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCi0rCSAgewotKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKLSsJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKLSsJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQotKwkgICAgICByZXR1cm4gLTE7Ci0rCi0rCSAgICBpZiAoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KQotKwkgICAgICB7Ci0rCQlpZiAocGE2NCkgewotKwkJICAqbG9jcCA9IGxvY19mcHJlZzsKLSsJCSAgaWYgKHNpemUgPD0gOCkKLSsJCSAgICAgIHJldHVybiBubG9jX2ZwcmVnOwotKwkJfQotKwkJZWxzZSB7Ci0rCQkgICpsb2NwID0gbG9jX2ZwcmVnMzI7Ci0rCQkgIGlmIChzaXplIDw9IDQpCi0rCQkgICAgcmV0dXJuIG5sb2NfZnByZWczMjsKLSsJCSAgZWxzZSBpZiAoc2l6ZSA8PSA4KQotKwkJICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjMyOwotKwkJfQotKwkJZ290byBhZ2dyZWdhdGU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWlmIChwYTY0KQotKwkgICpsb2NwID0gbG9jX2ludHJlZzsKLSsJZWxzZQotKwkgICpsb2NwID0gbG9jX2ludHJlZzMyOwotKwlpZiAoc2l6ZSA8PSByZWdzaXplKQotKwkgIHJldHVybiBubG9jX2ludHJlZzsKLSsJaWYgKHNpemUgPD0gMiAqIHJlZ3NpemUpCi0rCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKLSsKLSsJLyogRWxzZSBmYWxsIHRocm91Z2guICAqLwotKyAgICAgIH0KLSsKLSsgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6Ci0rICAgIGFnZ3JlZ2F0ZTogewotKyAgICAgICAgRHdhcmZfV29yZCBzaXplOwotKwlpZiAoZHdhcmZfYWdncmVnYXRlX3NpemUgKHR5cGVkaWUsICZzaXplKSAhPSAwKQotKwkgIHJldHVybiAtMTsKLSsJaWYgKHBhNjQpCi0rICAgICAgICAgICpsb2NwID0gbG9jX2ludHJlZzsKLSsJZWxzZQotKwkgICpsb2NwID0gbG9jX2ludHJlZzMyOwotKyAgICAgICAgaWYgKHNpemUgPD0gcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWc7Ci0rICAgICAgICBpZiAoc2l6ZSA8PSAyICogcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOwotKyNpZiAwCi0rCS8qIHRoZXJlIHNob3VsZCBiZSBzb21lIHdheSB0byBrbm93IHRoaXMgbG9jYXRpb24uLi4gQnV0IEkgZG8gbm90IHNlZSBpdC4gKi8KLSsgICAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKLSsgICAgICAgIHJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKLSsjZW5kaWYKLSsJLyogZmFsbCB0aHJvdWdoLiAgKi8KLSsgICAgICB9Ci0rICAgIH0KLSsKLSsgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KLSsgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAotKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KLSsgIHJldHVybiAtMjsKLSt9Ci0rCi0raW50Ci0rcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8zMiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQotK3sKLSsgIHJldHVybiBwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXyAoZnVuY3R5cGVkaWUsIGxvY3AsIDApOwotK30KLSsKLStpbnQKLStwYXJpc2NfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uXzY0IChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0rewotKyAgcmV0dXJuIHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fIChmdW5jdHlwZWRpZSwgbG9jcCwgMSk7Ci0rfQotKwotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL3BhcmlzY19zeW1ib2wuYwotQEAgLTAsMCArMSwxMTIgQEAKLSsvKiBQQS1SSVNDIHNwZWNpZmljIHN5bWJvbGljIG5hbWUgaGFuZGxpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAcmVkaGF0LmNvbT4sIDIwMDIuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKyNkZWZpbmUgQkFDS0VORAkJcGFyaXNjXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rY29uc3QgY2hhciAqCi0rcGFyaXNjX3NlZ21lbnRfdHlwZV9uYW1lIChpbnQgc2VnbWVudCwgY2hhciAqYnVmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSsJCQlzaXplX3QgbGVuIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKLSt7Ci0rICBzd2l0Y2ggKHNlZ21lbnQpCi0rICAgIHsKLSsgICAgY2FzZSBQVF9QQVJJU0NfQVJDSEVYVDoKLSsgICAgICByZXR1cm4gIlBBUklTQ19BUkNIRVhUIjsKLSsgICAgY2FzZSBQVF9QQVJJU0NfVU5XSU5EOgotKyAgICAgIHJldHVybiAiUEFSSVNDX1VOV0lORCI7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBSZXR1cm4gc3ltYm9saWMgcmVwcmVzZW50YXRpb24gb2Ygc3ltYm9sIHR5cGUuICAqLwotK2NvbnN0IGNoYXIgKgotK3BhcmlzY19zeW1ib2xfdHlwZV9uYW1lKGludCBzeW1ib2wsIGNoYXIgKmJ1ZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgIHNpemVfdCBsZW4gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQotK3sKLSsJaWYgKHN5bWJvbCA9PSBTVFRfUEFSSVNDX01JTExJQ09ERSkKLSsJICByZXR1cm4gIlBBUklTQ19NSUxMSSI7Ci0rCXJldHVybiBOVUxMOwotK30KLSsKLSsvKiBSZXR1cm4gc3ltYm9saWMgcmVwcmVzZW50YXRpb24gb2Ygc2VjdGlvbiB0eXBlLiAgKi8KLStjb25zdCBjaGFyICoKLStwYXJpc2Nfc2VjdGlvbl90eXBlX25hbWUgKGludCB0eXBlLAotKwkJCWNoYXIgKmJ1ZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rCQkJc2l6ZV90IGxlbiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCi0rewotKyAgc3dpdGNoICh0eXBlKQotKyAgICB7Ci0rICAgIGNhc2UgU0hUX1BBUklTQ19FWFQ6Ci0rICAgICAgcmV0dXJuICJQQVJJU0NfRVhUIjsKLSsgICAgY2FzZSBTSFRfUEFSSVNDX1VOV0lORDoKLSsgICAgICByZXR1cm4gIlBBUklTQ19VTldJTkQiOwotKyAgICBjYXNlIFNIVF9QQVJJU0NfRE9DOgotKyAgICAgIHJldHVybiAiUEFSSVNDX0RPQyI7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBDaGVjayB3aGV0aGVyIG1hY2hpbmUgZmxhZ3MgYXJlIHZhbGlkLiAgKi8KLStib29sCi0rcGFyaXNjX21hY2hpbmVfZmxhZ19jaGVjayAoR0VsZl9Xb3JkIGZsYWdzKQotK3sKLSsgIGlmIChmbGFncyAmfiAoRUZfUEFSSVNDX1RSQVBOSUwgfCBFRl9QQVJJU0NfRVhUIHwgRUZfUEFSSVNDX0xTQiB8Ci0rCUVGX1BBUklTQ19XSURFIHwgRUZfUEFSSVNDX05PX0tBQlAgfAotKwlFRl9QQVJJU0NfTEFaWVNXQVAgfCBFRl9QQVJJU0NfQVJDSCkpCi0rICAgIHJldHVybiAwOwotKwotKyAgR0VsZl9Xb3JkIGFyY2ggPSBmbGFncyAmIEVGX1BBUklTQ19BUkNIOwotKwotKyAgcmV0dXJuICgoYXJjaCA9PSBFRkFfUEFSSVNDXzFfMCkgfHwgKGFyY2ggPT0gRUZBX1BBUklTQ18xXzEpIHx8Ci0rICAgICAgKGFyY2ggPT0gRUZBX1BBUklTQ18yXzApKTsKLSt9Ci0rCi0rLyogQ2hlY2sgZm9yIHRoZSBzaW1wbGUgcmVsb2MgdHlwZXMuICAqLwotK0VsZl9UeXBlCi0rcGFyaXNjX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQotK3sKLSsgIHN3aXRjaCAodHlwZSkKLSsgICAgewotKyAgICBjYXNlIFJfUEFSSVNDX0RJUjY0OgotKyAgICBjYXNlIFJfUEFSSVNDX1NFQ1JFTDY0OgotKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKLSsgICAgY2FzZSBSX1BBUklTQ19ESVIzMjoKLSsgICAgY2FzZSBSX1BBUklTQ19TRUNSRUwzMjoKLSsgICAgICByZXR1cm4gRUxGX1RfV09SRDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gRUxGX1RfTlVNOwotKyAgICB9Ci0rfQotSW5kZXg6IGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGVsZnV0aWxzLTAuMTcwL2JhY2tlbmRzL2xpYmVibF9wYXJpc2MuaAotQEAgLTAsMCArMSw5IEBACi0rI2lmbmRlZiBfTElCRUJMX0hQUEFfSAotKyNkZWZpbmUgX0xJQkVCTF9IUFBBX0ggMQotKwotKyNpbmNsdWRlIDxsaWJkdy5oPgotKwotK2V4dGVybiBpbnQgcGFyaXNjX3JldHVybl92YWx1ZV9sb2NhdGlvbl8zMihEd2FyZl9EaWUgKiwgY29uc3QgRHdhcmZfT3AgKipsb2NwKTsKLStleHRlcm4gaW50IHBhcmlzY19yZXR1cm5fdmFsdWVfbG9jYXRpb25fNjQoRHdhcmZfRGllICosIGNvbnN0IER3YXJmX09wICoqbG9jcCk7Ci0rCi0rI2VuZGlmCi1JbmRleDogZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE3MC5vcmlnL2JhY2tlbmRzL01ha2VmaWxlLmFtCi0rKysgZWxmdXRpbHMtMC4xNzAvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0zMywxMiArMzMsMTIgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSQotIAotIAotIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKLS0JICB0aWxlZ3ggbTY4ayBicGYKLSsJICB0aWxlZ3ggbTY4ayBicGYgcGFyaXNjCi0gbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAotIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKLS0JICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hCi0rCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQotIAotQEAgLTEyNCw2ICsxMjQsOSBAQCBjcHVfYnBmID0gLi4vbGliY3B1L2xpYmNwdV9icGYuYQotIGxpYmVibF9icGZfcGljX2FfU09VUkNFUyA9ICQoYnBmX1NSQ1MpCi0gYW1fbGliZWJsX2JwZl9waWNfYV9PQkpFQ1RTID0gJChicGZfU1JDUzouYz0ub3MpCi0gCi0rcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYwotK2xpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0rYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCi0gCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKLSAJQHJtIC1mICQoQDouc289Lm1hcCkKLUluZGV4OiBlbGZ1dGlscy0wLjE3MC9saWJlbGYvZWxmLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE3MC5vcmlnL2xpYmVsZi9lbGYuaAotKysrIGVsZnV0aWxzLTAuMTcwL2xpYmVsZi9lbGYuaAotQEAgLTIwNTYsMTYgKzIwNTYsMjQgQEAgZW51bQotICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxN0YJMTIJLyogMTcgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNFIJMTQJLyogUmlnaHQgMTQgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfRFBSRUwyMUwJMTgJLyogTGVmdCAyMSBiaXRzIG9mIHJlbC4gYWRkcmVzcy4gICovCi0rI2RlZmluZSBSX1BBUklTQ19EUFJFTDE0V1IJMTkKLSsjZGVmaW5lIFJfUEFSSVNDX0RQUkVMMTREUgkyMAotICNkZWZpbmUgUl9QQVJJU0NfRFBSRUwxNFIJMjIJLyogUmlnaHQgMTQgYml0cyBvZiByZWwuIGFkZHJlc3MuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfR1BSRUwyMUwJMjYJLyogR1AtcmVsYXRpdmUsIGxlZnQgMjEgYml0cy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19HUFJFTDE0UgkzMAkvKiBHUC1yZWxhdGl2ZSwgcmlnaHQgMTQgYml0cy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19MVE9GRjIxTAkzNAkvKiBMVC1yZWxhdGl2ZSwgbGVmdCAyMSBiaXRzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGMTRSCTM4CS8qIExULXJlbGF0aXZlLCByaWdodCAxNCBiaXRzLiAgKi8KLSsjZGVmaW5lIFJfUEFSSVNDX0RMVElORDE0RgkzOQotKyNkZWZpbmUgUl9QQVJJU0NfU0VUQkFTRQk0MAotICNkZWZpbmUgUl9QQVJJU0NfU0VDUkVMMzIJNDEJLyogMzIgYml0cyBzZWN0aW9uIHJlbC4gYWRkcmVzcy4gICovCi0rI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMjFMCTQyCi0rI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMTdSCTQzCi0rI2RlZmluZSBSX1BBUklTQ19CQVNFUkVMMTRSCTQ2Ci0gI2RlZmluZSBSX1BBUklTQ19TRUdCQVNFCTQ4CS8qIE5vIHJlbG9jYXRpb24sIHNldCBzZWdtZW50IGJhc2UuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfU0VHUkVMMzIJNDkJLyogMzIgYml0cyBzZWdtZW50IHJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19QTFRPRkYyMUwJNTAJLyogUExUIHJlbC4gYWRkcmVzcywgbGVmdCAyMSBiaXRzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0Ugk1NAkvKiBQTFQgcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLSsjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0Rgk1NQotICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjMyCTU3CS8qIDMyIGJpdHMgTFQtcmVsLiBmdW5jdGlvbiBwb2ludGVyLiAqLwotICNkZWZpbmUgUl9QQVJJU0NfTFRPRkZfRlBUUjIxTAk1OAkvKiBMVC1yZWwuIGZjdCBwdHIsIGxlZnQgMjEgYml0cy4gKi8KLSAjZGVmaW5lIFJfUEFSSVNDX0xUT0ZGX0ZQVFIxNFIJNjIJLyogTFQtcmVsLiBmY3QgcHRyLCByaWdodCAxNCBiaXRzLiAqLwotQEAgLTIwNzQsNiArMjA4Miw3IEBAIGVudW0KLSAjZGVmaW5lIFJfUEFSSVNDX1BMQUJFTDIxTAk2NgkvKiBMZWZ0IDIxIGJpdHMgb2YgZmRlc2MgYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19QTEFCRUwxNFIJNzAJLyogUmlnaHQgMTQgYml0cyBvZiBmZGVzYyBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMNjQJNzIJLyogNjQgYml0cyBQQy1yZWwuIGFkZHJlc3MuICAqLwotKyNkZWZpbmUgUl9QQVJJU0NfUENSRUwyMkMJNzMKLSAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMjJGCTc0CS8qIDIyIGJpdHMgUEMtcmVsLiBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BDUkVMMTRXUgk3NQkvKiBQQy1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwotICNkZWZpbmUgUl9QQVJJU0NfUENSRUwxNERSCTc2CS8qIFBDIHJlbC4gYWRkcmVzcywgcmlnaHQgMTQgYml0cy4gICovCi1AQCAtMjA5OSw2ICsyMTA4LDggQEAgZW51bQotICNkZWZpbmUgUl9QQVJJU0NfTFRPRkYxNldGCTEwMgkvKiAxNiBiaXRzIExULXJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19MVE9GRjE2REYJMTAzCS8qIDE2IGJpdHMgTFQtcmVsLiBhZGRyZXNzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1NFQ1JFTDY0CTEwNAkvKiA2NCBiaXRzIHNlY3Rpb24gcmVsLiBhZGRyZXNzLiAgKi8KLSsjZGVmaW5lIFJfUEFSSVNDX0JBU0VSRUwxNFdSCTEwNwotKyNkZWZpbmUgUl9QQVJJU0NfQkFTRVJFTDE0RFIJMTA4Ci0gI2RlZmluZSBSX1BBUklTQ19TRUdSRUw2NAkxMTIJLyogNjQgYml0cyBzZWdtZW50IHJlbC4gYWRkcmVzcy4gICovCi0gI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNFdSCTExNQkvKiBQTFQtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KLSAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0RFIJMTE2CS8qIFBMVC1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NTEzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYKQEAgLTAsMCArMSwxNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtmcm9tIGRlYmlhbl0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tIGVsZnV0aWxzLTAuMTY1Lm9yaWcvdGVzdHMvcnVuLXN0cmlwLXN0cm1lcmdlLnNoCisrKysgZWxmdXRpbHMtMC4xNjUvdGVzdHMvcnVuLXN0cmlwLXN0cm1lcmdlLnNoCitAQCAtMzAsNyArMzAsNyBAQCByZW1lcmdlZD1yZW1lcmdlZC5lbGYKKyB0ZW1wZmlsZXMgJG1lcmdlZCAkc3RyaXBwZWQgJGRlYnVnZmlsZSAkcmVtZXJnZWQKKyAKKyBlY2hvIGVsZmxpbnQgJGlucHV0CistdGVzdHJ1biAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tZ251ICRpbnB1dAorK3Rlc3RydW5fb25fc2VsZl9za2lwICR7YWJzX3RvcF9idWlsZGRpcn0vc3JjL2VsZmxpbnQgLS1nbnUgJGlucHV0CisgZWNobyBlbGZzdHJtZXJnZQorIHRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS90ZXN0cy9lbGZzdHJtZXJnZSAtbyAkbWVyZ2VkICRpbnB1dAorIGVjaG8gZWxmbGludCAkbWVyZ2VkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUwZTU0Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzE1ICswLDAgQEAKLUZyb20gNDZkMGQwY2E3MTgwOTM0ODZlZWVlZGYxYjQ0MTM0ZTllMjliNTZmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDk6MTg6NTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWlwcyBiYWNrZW5kcwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLQotUmViYXNlIHRvIDAuMTcwCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYWNrZW5kcy9NYWtlZmlsZS5hbSAgICB8ICAgOCArLQotIGJhY2tlbmRzL21pcHNfaW5pdC5jICAgIHwgIDU5ICsrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmVncy5jICAgIHwgMTA0ICsrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZiB8ICA3OSArKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3JldHZhbC5jICB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBiYWNrZW5kcy9taXBzX3N5bWJvbC5jICB8ICA1MiArKysrKysrKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jIHwgICAyICsKLSA3IGZpbGVzIGNoYW5nZWQsIDYyMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX2luaXQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlZ3MuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZgotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3JldHZhbC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfc3ltYm9sLmMKLQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL01ha2VmaWxlLmFtIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLWluZGV4IDdmMWY1ZDQuLjkxYmFmNmUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQotKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0zMywxMiArMzMsMTIgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKLSAKLSAKLSBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCi0tCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYwotKwkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MgbWlwcwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0tCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0rCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQotIAotQEAgLTEyOCw2ICsxMjgsMTAgQEAgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ib2wuYyBwYXJpc2NfcmVncy5jIHBhcmlzY19yZXR2YWwuYwotIGxpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0gYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCi0gCi0rbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCi0rbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotK2FtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCi0rCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKLSAJQHJtIC1mICQoQDouc289Lm1hcCkKLSAJJChBTV9WX2F0KWVjaG8gJ0VMRlVUSUxTXyQoUEFDS0FHRV9WRVJTSU9OKSB7IGdsb2JhbDogJCpfaW5pdDsgbG9jYWw6ICo7IH07JyBcCi1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19pbml0LmMgYi9iYWNrZW5kcy9taXBzX2luaXQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjk3NWMwNGUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCi1AQCAtMCwwICsxLDU5IEBACi0rLyogSW5pdGlhbGl6YXRpb24gb2YgbWlwcyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBCQUNLRU5ECQltaXBzXwotKyNkZWZpbmUgUkVMT0NfUFJFRklYCVJfTUlQU18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIG1pcHNfcmVsb2MuZGVmLiAgKi8KLSsjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCi0rCi0rY29uc3QgY2hhciAqCi0rbWlwc19pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBFYmwgKmVoLAotKyAgICAgc2l6ZV90IGVobGVuKQotK3sKLSsgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLwotKyAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIFdlIGhhbmRsZSBpdC4gICovCi0rICBpZiAobWFjaGluZSA9PSBFTV9NSVBTKQotKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGJpZy1lbmRpYW4iOwotKyAgZWxzZSBpZiAobWFjaGluZSA9PSBFTV9NSVBTX1JTM19MRSkKLSsgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBsaXR0bGUtZW5kaWFuIjsKLSsKLSsgIG1pcHNfaW5pdF9yZWxvYyAoZWgpOwotKyAgSE9PSyAoZWgsIHJlbG9jX3NpbXBsZV90eXBlKTsKLSsgIEhPT0sgKGVoLCByZXR1cm5fdmFsdWVfbG9jYXRpb24pOwotKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOwotKwotKyAgcmV0dXJuIE1PRFZFUlNJT047Ci0rfQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmVncy5jIGIvYmFja2VuZHMvbWlwc19yZWdzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi40NGY4NmNiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYwotQEAgLTAsMCArMSwxMDQgQEAKLSsvKiBSZWdpc3RlciBuYW1lcyBhbmQgbnVtYmVycyBmb3IgTUlQUyBEV0FSRi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGR3YXJmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5EIG1pcHNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLStzc2l6ZV90Ci0rbWlwc19yZWdpc3Rlcl9pbmZvIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKLSsJCSAgICBpbnQgcmVnbm8sIGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLAotKwkJICAgIGNvbnN0IGNoYXIgKipwcmVmaXgsIGNvbnN0IGNoYXIgKipzZXRuYW1lLAotKwkJICAgIGludCAqYml0cywgaW50ICp0eXBlKQotK3sKLSsgIGlmIChuYW1lID09IE5VTEwpCi0rICAgIHJldHVybiA2NjsKLSsKLSsgIGlmIChyZWdubyA8IDAgfHwgcmVnbm8gPiA2NSB8fCBuYW1lbGVuIDwgNCkKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgKnByZWZpeCA9ICIkIjsKLSsKLSsgIGlmIChyZWdubyA8IDMyKQotKyAgICB7Ci0rICAgICAgKnNldG5hbWUgPSAiaW50ZWdlciI7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgbmFtZVswXSA9IHJlZ25vICsgJzAnOwotKyAgICAgICAgICBuYW1lbGVuID0gMTsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgICB7Ci0rICAgICAgICAgIG5hbWVbMF0gPSAocmVnbm8gLyAxMCkgKyAnMCc7Ci0rICAgICAgICAgIG5hbWVbMV0gPSAocmVnbm8gJSAxMCkgKyAnMCc7Ci0rICAgICAgICAgIG5hbWVsZW4gPSAyOwotKyAgICAgICAgfQotKyAgICB9Ci0rICBlbHNlIGlmIChyZWdubyA8IDY0KQotKyAgICB7Ci0rICAgICAgKnNldG5hbWUgPSAiRlBVIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9mbG9hdDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIG5hbWVbMF0gPSAnZic7Ci0rICAgICAgaWYgKHJlZ25vIDwgMzIgKyAxMCkKLSsJewotKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgKyAnMCc7Ci0rCSAgbmFtZWxlbiA9IDI7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBuYW1lWzFdID0gKHJlZ25vIC0gMzIpIC8gMTAgKyAnMCc7Ci0rCSAgbmFtZVsyXSA9IChyZWdubyAtIDMyKSAlIDEwICsgJzAnOwotKwkgIG5hbWVsZW4gPSAzOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJlZ25vID09IDY0KQotKyAgICB7Ci0rICAgICAgKnR5cGUgPSBEV19BVEVfc2lnbmVkOwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbmFtZVswXSA9ICdoJzsKLSsgICAgICBuYW1lWzFdID0gJ2knOwotKyAgICAgIG5hbWVsZW4gPSAyOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBuYW1lWzBdID0gJ2wnOwotKyAgICAgIG5hbWVbMV0gPSAnbyc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgIH0KLSsKLSsgIG5hbWVbbmFtZWxlbisrXSA9ICdcMCc7Ci0rICByZXR1cm4gbmFtZWxlbjsKLSt9Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYgYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ1Nzk5NzAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCi1AQCAtMCwwICsxLDc5IEBACi0rLyogTGlzdCB0aGUgcmVsb2NhdGlvbiB0eXBlcyBmb3IgbWlwcy4gIC0qLSBDIC0qLQotKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rLyogCSAgICBOQU1FLAkJUkVMfEVYRUN8RFlOCSovCi0rCi0rUkVMT0NfVFlQRSAoTk9ORSwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDE2LCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICgzMiwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoUkVMMzIsICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDI2LCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChISTE2LCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoTE8xNiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdQUkVMMTYsICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChMSVRFUkFMLCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UMTYsICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFBDMTYsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChDQUxMMTYsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR1BSRUwzMiwgICAgICAgICAgICAwKQotKwotK1JFTE9DX1RZUEUgKFNISUZUNSwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChTSElGVDYsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoNjQsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9ESVNQLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfUEFHRSwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX09GU1QsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9ISTE2LCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfTE8xNiwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoU1VCLCAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKElOU0VSVF9BLCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChJTlNFUlRfQiwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoREVMRVRFLCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEhJR0hFUiwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChISUdIRVNULCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQ0FMTF9ISTE2LCAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKENBTExfTE8xNiwgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChTQ05fRElTUCwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoUkVMMTYsICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEFERF9JTU1FRElBVEUsICAgICAgMCkKLStSRUxPQ19UWVBFIChQSlVNUCwgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoUkVMR09ULCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEpBTFIsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQTU9EMzIsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTDMyLCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBNT0Q2NCwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMNjQsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0dELCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19MRE0sICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0hJMTYsICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTF9MTzE2LCAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19HT1RUUFJFTCwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUwzMiwgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMNjQsICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9ISTE2LCAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUxfTE8xNiwgICAgIDApCi0rCi0rI2RlZmluZSBOT19DT1BZX1JFTE9DIDEKLSsjZGVmaW5lIE5PX1JFTEFUSVZFX1JFTE9DIDEKLWRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JldHZhbC5jIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY1NmNkMWYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMKLUBAIC0wLDAgKzEsMzIxIEBACi0rLyogRnVuY3Rpb24gcmV0dXJuIHZhbHVlIGxvY2F0aW9uIGZvciBMaW51eC9taXBzIEFCSS4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDUgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxkd2FyZi5oPgotKyNpbmNsdWRlIDxlbGYuaD4KLSsKLSsjaW5jbHVkZSAiLi4vbGliZWJsL2xpYmVibFAuaCIKLSsjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCi0rCi0rI2RlZmluZSBCQUNLRU5EIG1pcHNfCi0rI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKLSsKLSsvKiBUaGUgQUJJIG9mIHRoZSBmaWxlLiAgQWxzbyBzZWUgRUZfTUlQU19BQkkyIGFib3ZlLiAqLwotKyNkZWZpbmUgRUZfTUlQU19BQkkJCTB4MDAwMEYwMDAKLSsKLSsvKiBUaGUgb3JpZ2luYWwgbzMyIGFiaS4gKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfTzMyICAgICAgICAgIDB4MDAwMDEwMDAKLSsKLSsvKiBPMzIgZXh0ZW5kZWQgdG8gd29yayBvbiA2NCBiaXQgYXJjaGl0ZWN0dXJlcyAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9PNjQgICAgICAgICAgMHgwMDAwMjAwMAotKwotKy8qIEVBQkkgaW4gMzIgYml0IG1vZGUgKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfRUFCSTMyICAgICAgIDB4MDAwMDMwMDAKLSsKLSsvKiBFQUJJIGluIDY0IGJpdCBtb2RlICovCi0rI2RlZmluZSBFX01JUFNfQUJJX0VBQkk2NCAgICAgICAweDAwMDA0MDAwCi0rCi0rLyogQWxsIHRoZSBwb3NzaWJsZSBNSVBTIEFCSXMuICovCi0rZW51bSBtaXBzX2FiaQotKyAgewotKyAgICBNSVBTX0FCSV9VTktOT1dOID0gMCwKLSsgICAgTUlQU19BQklfTjMyLAotKyAgICBNSVBTX0FCSV9PMzIsCi0rICAgIE1JUFNfQUJJX042NCwKLSsgICAgTUlQU19BQklfTzY0LAotKyAgICBNSVBTX0FCSV9FQUJJMzIsCi0rICAgIE1JUFNfQUJJX0VBQkk2NCwKLSsgICAgTUlQU19BQklfTEFTVAotKyAgfTsKLSsKLSsvKiBGaW5kIHRoZSBtaXBzIEFCSSBvZiB0aGUgY3VycmVudCBmaWxlICovCi0rZW51bSBtaXBzX2FiaSBmaW5kX21pcHNfYWJpKEVsZiAqZWxmKQotK3sKLSsgIEdFbGZfRWhkciBlaGRyX21lbTsKLSsgIEdFbGZfRWhkciAqZWhkciA9IGdlbGZfZ2V0ZWhkciAoZWxmLCAmZWhkcl9tZW0pOwotKwotKyAgaWYgKGVoZHIgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7Ci0rCi0rICBHRWxmX1dvcmQgZWxmX2ZsYWdzID0gZWhkci0+ZV9mbGFnczsKLSsKLSsgIC8qIENoZWNrIGVsZl9mbGFncyB0byBzZWUgaWYgaXQgc3BlY2lmaWVzIHRoZSBBQkkgYmVpbmcgdXNlZC4gICovCi0rICBzd2l0Y2ggKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSSkpCi0rICAgIHsKLSsgICAgY2FzZSBFX01JUFNfQUJJX08zMjoKLSsgICAgICByZXR1cm4gTUlQU19BQklfTzMyOwotKyAgICBjYXNlIEVfTUlQU19BQklfTzY0OgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9FQUJJMzI6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKLSsgICAgY2FzZSBFX01JUFNfQUJJX0VBQkk2NDoKLSsgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OwotKyAgICBkZWZhdWx0OgotKyAgICAgIGlmICgoZWxmX2ZsYWdzICYgRUZfTUlQU19BQkkyKSkKLSsJcmV0dXJuIE1JUFNfQUJJX04zMjsKLSsgICAgfQotKwotKyAgLyogR0NDIGNyZWF0ZXMgYSBwc2V1ZG8tc2VjdGlvbiB3aG9zZSBuYW1lIGRlc2NyaWJlcyB0aGUgQUJJLiAgKi8KLSsgIHNpemVfdCBzaHN0cm5keDsKLSsgIGlmIChlbGZfZ2V0c2hkcnN0cm5keCAoZWxmLCAmc2hzdHJuZHgpIDwgMCkKLSsgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7Ci0rCi0rICBjb25zdCBjaGFyICpuYW1lOwotKyAgRWxmX1NjbiAqc2NuID0gTlVMTDsKLSsgIHdoaWxlICgoc2NuID0gZWxmX25leHRzY24gKGVsZiwgc2NuKSkgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIEdFbGZfU2hkciBzaGRyX21lbTsKLSsgICAgICBHRWxmX1NoZHIgKnNoZHIgPSBnZWxmX2dldHNoZHIgKHNjbiwgJnNoZHJfbWVtKTsKLSsgICAgICBpZiAoc2hkciA9PSBOVUxMKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0xBU1Q7Ci0rCi0rICAgICAgbmFtZSA9IGVsZl9zdHJwdHIgKGVsZiwgc2hzdHJuZHgsIHNoZHItPnNoX25hbWUpID86ICIiOwotKyAgICAgIGlmIChzdHJuY21wIChuYW1lLCAiLm1kZWJ1Zy4iLCA4KSAhPSAwKQotKyAgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpMzIiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX08zMjsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaU4zMiIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTjMyOwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpNjQiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX042NDsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaU82NCIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfTzY0OwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuZWFiaTMyIikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJMzI7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpNjQiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkk2NDsKLSsgICAgICBlbHNlCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKLSsgICAgfQotKwotKyAgcmV0dXJuIE1JUFNfQUJJX1VOS05PV047Ci0rfQotKwotK3Vuc2lnbmVkIGludAotK21pcHNfYWJpX3JlZ3NpemUgKGVudW0gbWlwc19hYmkgYWJpKQotK3sKLSsgIHN3aXRjaCAoYWJpKQotKyAgICB7Ci0rICAgIGNhc2UgTUlQU19BQklfRUFCSTMyOgotKyAgICBjYXNlIE1JUFNfQUJJX08zMjoKLSsgICAgICByZXR1cm4gNDsKLSsgICAgY2FzZSBNSVBTX0FCSV9OMzI6Ci0rICAgIGNhc2UgTUlQU19BQklfTjY0OgotKyAgICBjYXNlIE1JUFNfQUJJX082NDoKLSsgICAgY2FzZSBNSVBTX0FCSV9FQUJJNjQ6Ci0rICAgICAgcmV0dXJuIDg7Ci0rICAgIGNhc2UgTUlQU19BQklfVU5LTk9XTjoKLSsgICAgY2FzZSBNSVBTX0FCSV9MQVNUOgotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rfQotKwotKwotKy8qICR2MCBvciBwYWlyICR2MCwgJHYxICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdfbzMyW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWczIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgIH07Ci0rCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19pbnRyZWdbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfaW50cmVnCTEKLSsjZGVmaW5lIG5sb2NfaW50cmVncGFpcgk0Ci0rCi0rLyogJGYwIChmbG9hdCksIG9yIHBhaXIgJGYwLCAkZjEgKGRvdWJsZSkuCi0rICogZjIvZjMgYXJlIHVzZWQgZm9yIENPTVBMRVggKD0gMiBkb3VibGVzKSByZXR1cm5zIGluIEZvcnRyYW4gKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnX28zMltdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM0IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNSB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICB9OwotKwotKy8qICRmMCwgb3IgcGFpciAkZjAsICRmMi4gICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ1tdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgfTsKLSsjZGVmaW5lIG5sb2NfZnByZWcgIDEKLSsjZGVmaW5lIG5sb2NfZnByZWdwYWlyIDQKLSsjZGVmaW5lIG5sb2NfZnByZWdxdWFkIDgKLSsKLSsvKiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0dXJlIGFuZCBpcyBhY3R1YWxseSBzdG9yZWQgaW4gc3RhY2sgc3BhY2UKLSsgICBwYXNzZWQgaW4gYSBoaWRkZW4gYXJndW1lbnQgYnkgdGhlIGNhbGxlci4gIEJ1dCwgdGhlIGNvbXBpbGVyCi0rICAgaGVscGZ1bGx5IHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgdGhhdCBzcGFjZSBpbiAkdjAuICAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfYWdncmVnYXRlW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfYnJlZzIsIC5udW1iZXIgPSAwIH0KLSsgIH07Ci0rI2RlZmluZSBubG9jX2FnZ3JlZ2F0ZSAxCi0rCi0raW50Ci0rbWlwc19yZXR1cm5fdmFsdWVfbG9jYXRpb24gKER3YXJmX0RpZSAqZnVuY3R5cGVkaWUsIGNvbnN0IER3YXJmX09wICoqbG9jcCkKLSt7Ci0rICAvKiBGaXJzdCBmaW5kIHRoZSBBQkkgdXNlZCBieSB0aGUgZWxmIG9iamVjdCAqLwotKyAgZW51bSBtaXBzX2FiaSBhYmkgPSBmaW5kX21pcHNfYWJpKGZ1bmN0eXBlZGllLT5jdS0+ZGJnLT5lbGYpOwotKwotKyAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nIHdoaWxlIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBBQkkgKi8KLSsgIGlmIChhYmkgPT0gTUlQU19BQklfTEFTVCkKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgLyogV2UgY291bGRuJ3QgaWRlbnRpZnkgdGhlIEFCSSwgYnV0IHRoZSBmaWxlIHNlZW1zIHZhbGlkICovCi0rICBpZiAoYWJpID09IE1JUFNfQUJJX1VOS05PV04pCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIC8qIENhbid0IGhhbmRsZSBFQUJJIHZhcmlhbnRzICovCi0rICBpZiAoKGFiaSA9PSBNSVBTX0FCSV9FQUJJMzIpIHx8IChhYmkgPT0gTUlQU19BQklfRUFCSTY0KSkKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgdW5zaWduZWQgaW50IHJlZ3NpemUgPSBtaXBzX2FiaV9yZWdzaXplIChhYmkpOwotKyAgaWYgKCFyZWdzaXplKQotKyAgICByZXR1cm4gLTI7Ci0rCi0rICAvKiBTdGFydCB3aXRoIHRoZSBmdW5jdGlvbidzIHR5cGUsIGFuZCBnZXQgdGhlIERXX0FUX3R5cGUgYXR0cmlidXRlLAotKyAgICAgd2hpY2ggaXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybiB2YWx1ZS4gICovCi0rCi0rICBEd2FyZl9BdHRyaWJ1dGUgYXR0cl9tZW07Ci0rICBEd2FyZl9BdHRyaWJ1dGUgKmF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAoZnVuY3R5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rICBpZiAoYXR0ciA9PSBOVUxMKQotKyAgICAvKiBUaGUgZnVuY3Rpb24gaGFzIG5vIHJldHVybiB2YWx1ZSwgbGlrZSBhIGB2b2lkJyBmdW5jdGlvbiBpbiBDLiAgKi8KLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBEd2FyZl9EaWUgZGllX21lbTsKLSsgIER3YXJmX0RpZSAqdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rICBpbnQgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsKLSsgIC8qIEZvbGxvdyB0eXBlZGVmcyBhbmQgcXVhbGlmaWVycyB0byBnZXQgdG8gdGhlIGFjdHVhbCB0eXBlLiAgKi8KLSsgIHdoaWxlICh0YWcgPT0gRFdfVEFHX3R5cGVkZWYKLSsJIHx8IHRhZyA9PSBEV19UQUdfY29uc3RfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3ZvbGF0aWxlX3R5cGUKLSsJIHx8IHRhZyA9PSBEV19UQUdfcmVzdHJpY3RfdHlwZSkKLSsgICAgewotKyAgICAgIGF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKLSsgICAgICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSsgICAgICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotKyAgICB9Ci0rCi0rICBzd2l0Y2ggKHRhZykKLSsgICAgewotKyAgICBjYXNlIC0xOgotKyAgICAgIHJldHVybiAtMTsKLSsKLSsgICAgY2FzZSBEV19UQUdfc3VicmFuZ2VfdHlwZToKLSsgICAgICBpZiAoISBkd2FyZl9oYXNhdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplKSkKLSsJewotKwkgIGF0dHIgPSBkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKLSsJICB0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKLSsJICB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOwotKwl9Ci0rICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsKLSsgICAgY2FzZSBEV19UQUdfYmFzZV90eXBlOgotKyAgICBjYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotKyAgICBjYXNlIERXX1RBR19wb2ludGVyX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZToKLSsgICAgICB7Ci0rICAgICAgICBEd2FyZl9Xb3JkIHNpemU7Ci0rCWlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUsCi0rCQkJCQkgJmF0dHJfbWVtKSwgJnNpemUpICE9IDApCi0rCSAgewotKwkgICAgaWYgKHRhZyA9PSBEV19UQUdfcG9pbnRlcl90eXBlIHx8IHRhZyA9PSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlKQotKwkgICAgICBzaXplID0gcmVnc2l6ZTsKLSsJICAgIGVsc2UKLSsJICAgICAgcmV0dXJuIC0xOwotKwkgIH0KLSsJaWYgKHRhZyA9PSBEV19UQUdfYmFzZV90eXBlKQotKwkgIHsKLSsJICAgIER3YXJmX1dvcmQgZW5jb2Rpbmc7Ci0rCSAgICBpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfZW5jb2RpbmcsCi0rCQkJCQkgICAgICZhdHRyX21lbSksICZlbmNvZGluZykgIT0gMCkKLSsJICAgICAgcmV0dXJuIC0xOwotKwotKyNkZWZpbmUgQUJJX0xPQyhsb2MsIHJlZ3NpemUpICgocmVnc2l6ZSkgPT0gNCA/IChsb2MgIyMgX28zMikgOiAobG9jKSkKLSsKLSsJICAgIGlmIChlbmNvZGluZyA9PSBEV19BVEVfZmxvYXQpCi0rCSAgICAgIHsKLSsJCSpsb2NwID0gQUJJX0xPQyhsb2NfZnByZWcsIHJlZ3NpemUpOwotKwkJaWYgKHNpemUgPD0gcmVnc2l6ZSkKLSsJCSAgICByZXR1cm4gbmxvY19mcHJlZzsKLSsKLSsJCWlmIChzaXplIDw9IDIqcmVnc2l6ZSkKLSsgICAgICAgICAgICAgICAgICByZXR1cm4gbmxvY19mcHJlZ3BhaXI7Ci0rCi0rCQlpZiAoc2l6ZSA8PSA0KnJlZ3NpemUgJiYgYWJpID09IE1JUFNfQUJJX08zMikKLSsgICAgICAgICAgICAgICAgICByZXR1cm4gbmxvY19mcHJlZ3F1YWQ7Ci0rCi0rCQlnb3RvIGFnZ3JlZ2F0ZTsKLSsJICAgICAgfQotKwkgIH0KLSsJKmxvY3AgPSBBQklfTE9DKGxvY19pbnRyZWcsIHJlZ3NpemUpOwotKwlpZiAoc2l6ZSA8PSByZWdzaXplKQotKwkgIHJldHVybiBubG9jX2ludHJlZzsKLSsJaWYgKHNpemUgPD0gMipyZWdzaXplKQotKwkgIHJldHVybiBubG9jX2ludHJlZ3BhaXI7Ci0rCi0rCS8qIEVsc2UgZmFsbCB0aHJvdWdoLiBTaG91bGRuJ3QgaGFwcGVuIHRob3VnaCAoYXQgbGVhc3Qgd2l0aCBnY2MpICovCi0rICAgICAgfQotKwotKyAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKLSsgICAgY2FzZSBEV19UQUdfYXJyYXlfdHlwZToKLSsgICAgYWdncmVnYXRlOgotKyAgICAgIC8qIFhYWCBUT0RPOiBDYW4ndCBoYW5kbGUgc3RydWN0dXJlIHJldHVybiB3aXRoIG90aGVyIEFCSSdzIHlldCA6LS8gKi8KLSsgICAgICBpZiAoKGFiaSAhPSBNSVBTX0FCSV9PMzIpICYmIChhYmkgIT0gTUlQU19BQklfTzY0KSkKLSsgICAgICAgIHJldHVybiAtMjsKLSsKLSsgICAgICAqbG9jcCA9IGxvY19hZ2dyZWdhdGU7Ci0rICAgICAgcmV0dXJuIG5sb2NfYWdncmVnYXRlOwotKyAgICB9Ci0rCi0rICAvKiBYWFggV2UgZG9uJ3QgaGF2ZSBhIGdvb2Qgd2F5IHRvIHJldHVybiBzcGVjaWZpYyBlcnJvcnMgZnJvbSBlYmwgY2FsbHMuCi0rICAgICBUaGlzIHZhbHVlIG1lYW5zIHdlIGRvIG5vdCB1bmRlcnN0YW5kIHRoZSB0eXBlLCBidXQgaXQgaXMgd2VsbC1mb3JtZWQKLSsgICAgIERXQVJGIGFuZCBtaWdodCBiZSB2YWxpZC4gICovCi0rICByZXR1cm4gLTI7Ci0rfQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmE0NjVmZQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmFja2VuZHMvbWlwc19zeW1ib2wuYwotQEAgLTAsMCArMSw1MiBAQAotKy8qIE1JUFMgc3BlY2lmaWMgc3ltYm9saWMgbmFtZSBoYW5kbGluZy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rICAgV3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiwgMjAwMi4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxlbGYuaD4KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2RlZmluZSBCQUNLRU5ECQltaXBzXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rLyogQ2hlY2sgZm9yIHRoZSBzaW1wbGUgcmVsb2MgdHlwZXMuICAqLwotK0VsZl9UeXBlCi0rbWlwc19yZWxvY19zaW1wbGVfdHlwZSAoRWJsICplYmwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgdHlwZSkKLSt7Ci0rICBzd2l0Y2ggKHR5cGUpCi0rICAgIHsKLSsgICAgY2FzZSBSX01JUFNfMTY6Ci0rICAgICAgcmV0dXJuIEVMRl9UX0hBTEY7Ci0rICAgIGNhc2UgUl9NSVBTXzMyOgotKyAgICAgIHJldHVybiBFTEZfVF9XT1JEOwotKyAgICBjYXNlIFJfTUlQU182NDoKLSsgICAgICByZXR1cm4gRUxGX1RfWFdPUkQ7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgcmV0dXJuIEVMRl9UX05VTTsKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1pbmRleCAxZjgxNDc3Li41MzcxMzk2IDEwMDY0NAotLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLSsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtNzIsNiArNzIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0Ci0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKLSAgIHsgInMzOTAiLCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAotIAotICAgeyAibTMyIiwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCi0gICB7ICJtNjhrIiwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTA5MzBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb206IEt1cnQgUm9lY2t4IDxrdXJ0QHJvZWNreC5iZT4KLVN1YmplY3Q6IE1ha2UgcmVhZGVsZiAtdyBvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24gb24gbWlwcwotQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy82NjIwNDEKLUZvcndhcmRlZDogbm90LW5lZWRlZAotCi1VcHN0cmVhbXMgd2FudHMgYSBjaGFuZ2Ugd2hlcmUgdGhpcyBpcyBoYW5kbGVkIGJ5IGEgaG9vayB0aGF0IG5lZWRzCi10byBiZSBmaWxsZWQgaW4gYnkgdGhlIGJhY2tlbmQgZm9yIHRoZSBhcmNoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGIvc3JjL3JlYWRlbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvc3JjL3JlYWRlbGYuYwotKysrIGIvc3JjL3JlYWRlbGYuYwotQEAgLTgzNDMsNyArODM0Myw4IEBAIHByaW50X2RlYnVnIChEd2ZsX01vZHVsZSAqZHdmbG1vZCwgRWJsICoKLSAgICAgICBHRWxmX1NoZHIgc2hkcl9tZW07Ci0gICAgICAgR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7Ci0gCi0tICAgICAgaWYgKHNoZHIgIT0gTlVMTCAmJiBzaGRyLT5zaF90eXBlID09IFNIVF9QUk9HQklUUykKLSsgICAgICBpZiAoc2hkciAhPSBOVUxMICYmICgKLSsJIChzaGRyLT5zaF90eXBlID09IFNIVF9QUk9HQklUUykgfHwgKHNoZHItPnNoX3R5cGUgPT0gU0hUX01JUFNfRFdBUkYpKSkKLSAJewotIAkgIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSAJICB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDYxN2UzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciBtb2RpZnlpbmcgR1BUIGRpc2sgcGFydGl0aW9uaW5nIgotREVTQ1JJUFRJT04gPSAiR1BUIGZkaXNrIGlzIGEgZGlzayBwYXJ0aXRpb25pbmcgdG9vbCBsb29zZWx5IG1vZGVsZWQgb24gTGludXggZmRpc2ssIGJ1dCB1c2VkIGZvciBtb2RpZnlpbmcgR1VJRCBQYXJ0aXRpb24gVGFibGUgKEdQVCkgZGlza3MuIFRoZSByZWxhdGVkIEZpeFBhcnRzIHV0aWxpdHkgZml4ZXMgc29tZSBjb21tb24gcHJvYmxlbXMgb24gTWFzdGVyIEJvb3QgUmVjb3JkIChNQlIpIGRpc2tzLiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1ERVBFTkRTID0gInV0aWwtbGludXggcG9wdCBuY3Vyc2VzIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtQVn0vJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjA3YjYyNWE1ODNiNjZjOGM1ODQwYmU1OTIzZjNlM2ZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5ZmQ1YWVjMzVjNDA5ZDYxMGEzNmNiNDljNjViNDQyMDU4NTY1ZWQ4NDA0MmY3NjdiYmE2MTRiOGZjOTFiNWMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dwdGZkaXNrL2ZpbGVzL2dwdGZkaXNrLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9ncHRmZGlzay8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1FWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnQ1hYPSR7Q1hYfSciCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBjZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgc2dkaXNrICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGZpeHBhcnRzICR7RH0ke3NiaW5kaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA0M2M5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC40LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3IgbW9kaWZ5aW5nIEdQVCBkaXNrIHBhcnRpdGlvbmluZyIKK0RFU0NSSVBUSU9OID0gIkdQVCBmZGlzayBpcyBhIGRpc2sgcGFydGl0aW9uaW5nIHRvb2wgbG9vc2VseSBtb2RlbGVkIG9uIExpbnV4IGZkaXNrLCBidXQgdXNlZCBmb3IgbW9kaWZ5aW5nIEdVSUQgUGFydGl0aW9uIFRhYmxlIChHUFQpIGRpc2tzLiBUaGUgcmVsYXRlZCBGaXhQYXJ0cyB1dGlsaXR5IGZpeGVzIHNvbWUgY29tbW9uIHByb2JsZW1zIG9uIE1hc3RlciBCb290IFJlY29yZCAoTUJSKSBkaXNrcy4iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKKworREVQRU5EUyA9ICJ1dGlsLWxpbnV4IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtQVn0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjVlY2MzYzQ0OTEzYmI2YjUzZDM3MDhkMWFjN2FjMjk1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2NjMzOTFhNjg3NmYxOWEzY2Q5MDFkODYyNDIzYTE2ZTJiNWNlYWEyZjRhM2I5YmI2ODFlNjRiOWM3YmE3OGQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2dwdGZkaXNrL2ZpbGVzL2dwdGZkaXNrLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9ncHRmZGlzay8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitFWFRSQV9PRU1BS0UgPSAiJ0NDPSR7Q0N9JyAnQ1hYPSR7Q1hYfScgZ2Rpc2sgZml4cGFydHMgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm5jdXJzZXMgcG9wdCIKK1BBQ0tBR0VDT05GSUdbbmN1cnNlc10gPSAiY2dkaXNrLCxuY3Vyc2VzIgorUEFDS0FHRUNPTkZJR1twb3B0XSA9ICJzZ2Rpc2ssLHBvcHQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGZvciBmIGluIGNnZGlzayBzZ2Rpc2s7IGRvCisgICAgICAgIGlmIFsgLXggJGYgXTsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICRmICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisgICAgZG9uZQorICAgIGluc3RhbGwgLW0gMDc1NSBnZGlzayAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBmaXhwYXJ0cyAke0R9JHtzYmluZGlyfQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGExNmIyYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSAwOGFiZjk0NGIyYmZmMjdiNmRkMzI1ZGQxNWI0ODYxY2ViZWYxMTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVubGluZyBaaGVuZyA8emhlbmdqdW5saW5nQGh1YXdlaS5jb20+Ci1EYXRlOiBXZWQsIDggQXByIDIwMTUgMDM6MjY6NTcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIC1QIHByb21wdCBpbnRvIFVzYWdlIGluZm8KLQotQ3VycmVudGx5LCBVc2FnZSBpbmZvIGRvZXNuJ3QgaW5jbHVkZSAtUCBwcm9tcHQsIGFkZCBpdDoKLQotcm9vdEBhcm1hOWVsOn4jIGZpbGUKLVVzYWdlOiBmaWxlIFstYmNFaGlrTGxObnByc3Z6MF0gWy0tYXBwbGVdIFstLW1pbWUtZW5jb2RpbmddIFstLW1pbWUtdHlwZV0KLSAgICAgICAgICAgIFstZSB0ZXN0bmFtZV0gWy1GIHNlcGFyYXRvcl0gWy1mIG5hbWVmaWxlXSBbLW0gbWFnaWNmaWxlc10KLSAgICAgICAgICAgIFstUCBwYXJhbWV0ZXI9bGltaXRzXSBmaWxlIC4uLgotICAgICAgIGZpbGUgLUMgWy1tIG1hZ2ljZmlsZXNdCi0gICAgICAgZmlsZSBbLS1oZWxwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBKdW5saW5nIFpoZW5nIDx6aGVuZ2p1bmxpbmdAaHVhd2VpLmNvbT4KLS0tLQotIHNyYy9maWxlLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2ZpbGUuYyBiL3NyYy9maWxlLmMKLWluZGV4IDJiMTVlMjEuLmU1YTk1N2IgMTAwNjQ0Ci0tLS0gYS9zcmMvZmlsZS5jCi0rKysgYi9zcmMvZmlsZS5jCi1AQCAtNzYsOCArNzYsOCBAQCBpbnQgZ2V0b3B0X2xvbmcoaW50IGFyZ2MsIGNoYXIgKiBjb25zdCAqYXJndiwgY29uc3QgY2hhciAqb3B0c3RyaW5nLCBjb25zdCBzdHJ1YwotICMgZGVmaW5lIFVTQUdFICBcCi0gICAgICJVc2FnZTogJXMgWyIgRklMRV9GTEFHUyBcCi0gCSJdIFstLWFwcGxlXSBbLS1leHRlbnNpb25dIFstLW1pbWUtZW5jb2RpbmddIFstLW1pbWUtdHlwZV1cbiIgXAotLSAgICAiICAgICAgICAgICAgWy1lIHRlc3RuYW1lXSBbLUYgc2VwYXJhdG9yXSBbLWYgbmFtZWZpbGVdIFstbSBtYWdpY2ZpbGVzXSAiIFwKLS0gICAgImZpbGUgLi4uXG4iIFwKLSsgICAgIiAgICAgICAgICAgIFstZSB0ZXN0bmFtZV0gWy1GIHNlcGFyYXRvcl0gWy1mIG5hbWVmaWxlXSBbLW0gbWFnaWNmaWxlc11cbiAiIFwKLSsgICAgIiAgICAgICAgICAgIFstUCBwYXJhbWV0ZXI9bGltaXRzXSBmaWxlIC4uLlxuIiBcCi0gICAgICIgICAgICAgJXMgLUMgWy1tIG1hZ2ljZmlsZXNdXG4iIFwKLSAgICAgIiAgICAgICAlcyBbLS1oZWxwXVxuIgotIAotLS0gCi0xLjguMy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlMTU5MjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLSMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNSRVYgPSAiZDQ3NGUzNTUxMzk0MGRiY2EwMzliNTEwYjRkZTcwNWI0NGY1YmQ5YyIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLXN0ZD1jOTkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDkyOTEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzQuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCisjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjaworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKKyAgICAgICAgIgorCitTUkNSRVYgPSAiMzE1Y2VmMmY2OTlkYTNjMzFhNTRiZDNjNmM2MDcwNjgwZmJhZjFmNSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZmlsZSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmaWxlXSA9ICIke2JpbmRpcn0vZmlsZSIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorCitDRkxBR1NfYXBwZW5kID0gIiAtc3RkPWM5OSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWlzYy8qLm1nYyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAorCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgRG9uJ3QgdXNlIE5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYIGFzIHRoYXQgaGlkZXMgbGlibWFnaWMgZnJvbSBhbnlvbmUgd2hvCisjIGRlcGVuZHMgb24gZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUuCitiaW5kaXJfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIvZmlsZS1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy5pbmMKaW5kZXggZDRhYWNhNC4uYzdjODhmMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpAQCAtMzIsNyArMzIsNiBAQAogU1JDX1VSSSA9ICJcCiAgICAgICAgICAgICR7QkFTRVVSSX0gXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtYzk5LXNucHJpbnRmLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDktZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCkBAIC03Miw2ICs3MSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ5LWdjYy1vdmVycmlkZS1UQVJHRVRfTElCQ19QUk9WSURFU19TU1AucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbm8tc3NlLWZpeC10ZXN0LWNhc2UtZmFpbHVyZXMucGF0Y2ggXAogICAgICAgICAgICAke0JBQ0tQT1JUU30gXApAQCAtOTUsMTAgKzk1LDEyIEBACiBKQVZBID0gIiIKIAogTFRPID0gIi0tZW5hYmxlLWx0byIKK1NTUCA/PSAiLS1kaXNhYmxlLWxpYnNzcCIKK1NTUF9taW5ndzMyID0gIi0tZW5hYmxlLWxpYnNzcCIKIAogRVhUUkFfT0VDT05GX0JBU0UgPSAiXAogICAgICR7TFRPfSBcCi0gICAgLS1lbmFibGUtbGlic3NwIFwKKyAgICAke1NTUH0gXAogICAgIC0tZW5hYmxlLWxpYml0bSBcCiAgICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCiAgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXApAQCAtMTIwLDkgKzEyMiwxMCBAQAogICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCiAgICAgLS1kaXNhYmxlLWx0byBcCiAgICAgLS1kaXNhYmxlLXBsdWdpbiBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKICAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKICAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKKyAgICAtLWRpc2FibGUtbGlic3NwIFwKICIKIAogRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDgtYzk5LXNucHJpbnRmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOC1jOTktc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViZDU2MmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOC1jOTktc25wcmludGYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDczMmYxMGVlYWQ2MTgzMGE4YWVlMWJmMzhjY2U4OTJkYTI1YzM1YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAotU3ViamVjdDogW1BBVENIIDA4LzQ3XSBjOTktc25wcmludGYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KLWluZGV4IDQzOTY5ODkyYWEyLi4xMjE0ODQ1NzkwOSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHVzaW5nIDo6dnNwcmludGY7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8KLSsjaWYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTyB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gCi0gI3VuZGVmIHNucHJpbnRmCi0gI3VuZGVmIHZmc2NhbmYKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDktZ2NjLW92ZXJyaWRlLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDktZ2NjLW92ZXJyaWRlLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzUzYzk1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0OS1nY2Mtb3ZlcnJpZGUtVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQLnBhdGNoCkBAIC0wLDAgKzEsMjA0IEBACitGcm9tIDk4MTViZDk3NTYxYzc3OGVlMGJjMGMxN2YyNDVlODhlNjY1NzAxMTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBzYW5kcmEgPHNhbmRyYUAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBXZWQsIDEgTm92IDIwMTcgMDI6MTQ6MTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gMjAxNy0xMC0zMSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgorCisJZ2NjLworCSogY29uZmlndXJlLmFjICgtLWVuYWJsZS1saWJzc3ApOiBOZXcuCisJKGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcCk6IENoZWNrIGZvciBleHBsaWNpdCBzZXR0aW5nIGJlZm9yZQorCXRyeWluZyB0byBkZXRlcm1pbmUgdGFyZ2V0LXNwZWNpZmljIGRlZmF1bHQuICBBZGp1c3QgaW5kZW50YXRpb24uCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgorCSogZG9jL2luc3RhbGwudGV4aSAoQ29uZmlndXJhdGlvbik6IEV4cGFuZCAtLWRpc2FibGUtbGlic3NwCisJZG9jdW1lbnRhdGlvbi4KKworCitnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyNTQyODggMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0CistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzgyMzA0OS9dCisKKyBnY2MvQ2hhbmdlTG9nICAgICAgICB8ICA5ICsrKysrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKystLS0KKyBnY2MvY29uZmlndXJlLmFjICAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQorIGdjYy9kb2MvaW5zdGFsbC50ZXhpIHwgIDMgKystCisgNCBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2NjLTcuMy4wL2djYy9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtNy4zLjAub3JpZy9nY2MvY29uZmlndXJlLmFjCisrKysgZ2NjLTcuMy4wL2djYy9jb25maWd1cmUuYWMKK0BAIC01NzE5LDEwICs1NzE5LDI1IEBAIGlmIHRlc3QgeCRnY2NfY3Zfc29sYXJpc19jcnRzID0geHllczsgdGgKKyAgIAkgICAgW0RlZmluZSBpZiB0aGUgc3lzdGVtLXByb3ZpZGVkIENSVHMgYXJlIHByZXNlbnQgb24gU29sYXJpcy5dKQorIGZpCisgCisrQUNfQVJHX0VOQUJMRShsaWJzc3AsCisrW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1saWJzc3BdLCBbZW5hYmxlIGxpbmtpbmcgYWdhaW5zdCBsaWJzc3BdKV0sCisrW2Nhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKysgIHllc3xubykKKysgICAgOzsKKysgICopCisrICAgIEFDX01TR19FUlJPUihbdW5rbm93biBsaWJzc3Agc2V0dGluZyAkZW5hYmxldmFsXSkKKysgICAgOzsKKytlc2FjXSwgW10pCisrCisgIyBUZXN0IGZvciBzdGFjayBwcm90ZWN0b3Igc3VwcG9ydCBpbiB0YXJnZXQgQyBsaWJyYXJ5LgorIEFDX0NBQ0hFX0NIRUNLKF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2V0IEMgbGlicmFyeSwKKy0gICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3AsCistICAgICAgW2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubworKyAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwLAorKyAgW2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubworKyAgaWYgdGVzdCAieCRlbmFibGVfbGlic3NwIiA9ICJ4bm8iOyB0aGVuCisrICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMKKysgIGVsaWYgdGVzdCAieCRlbmFibGVfbGlic3NwIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8KKysgIGVsc2UKKyAgICAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgICAgKi0qLW11c2wqKQorIAkgIyBBbGwgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIHN0YWNrIHByb3RlY3RvcgorQEAgLTU3NTksOCArNTc3NCw5IEBAIEFDX0NBQ0hFX0NIRUNLKF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2UKKyAJIEFDX0NIRUNLX0ZVTkMoX19zdGFja19jaGtfZmFpbCxbZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllc10sCisgICAgICAgICAgICBbZWNobyAibm8gX19zdGFja19jaGtfZmFpbCBvbiB0aGlzIHRhcmdldCJdKQorICAgICAgICAgOzsKKy0gICopIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubyA7OworLSAgICBlc2FjXSkKKysgICAgICAgKikgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vIDs7CisrICAgIGVzYWMKKysgIGZpXSkKKyAKKyBpZiB0ZXN0IHgkZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwID0geHllczsgdGhlbgorICAgQUNfREVGSU5FKFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUCwgMSwKK0luZGV4OiBnY2MtNy4zLjAvZ2NjL2RvYy9pbnN0YWxsLnRleGkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtNy4zLjAub3JpZy9nY2MvZG9jL2luc3RhbGwudGV4aQorKysrIGdjYy03LjMuMC9nY2MvZG9jL2luc3RhbGwudGV4aQorQEAgLTE2NTgsNyArMTY1OCw4IEBAIG5vdCBiZSBidWlsdC4KKyAKKyBAaXRlbSAtLWRpc2FibGUtbGlic3NwCisgU3BlY2lmeSB0aGF0IHRoZSBydW4tdGltZSBsaWJyYXJpZXMgZm9yIHN0YWNrIHNtYXNoaW5nIHByb3RlY3Rpb24KKy1zaG91bGQgbm90IGJlIGJ1aWx0LgorK3Nob3VsZCBub3QgYmUgYnVpbHQgb3IgbGlua2VkIGFnYWluc3QuICBPbiBtYW55IHRhcmdldHMgbGlicmFyeSBzdXBwb3J0CisraXMgcHJvdmlkZWQgYnkgdGhlIEMgbGlicmFyeSBpbnN0ZWFkLgorIAorIEBpdGVtIC0tZGlzYWJsZS1saWJxdWFkbWF0aAorIFNwZWNpZnkgdGhhdCB0aGUgR0NDIHF1YWQtcHJlY2lzaW9uIG1hdGggbGlicmFyeSBzaG91bGQgbm90IGJlIGJ1aWx0LgorSW5kZXg6IGdjYy03LjMuMC9nY2MvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTcuMy4wLm9yaWcvZ2NjL2NvbmZpZ3VyZQorKysrIGdjYy03LjMuMC9nY2MvY29uZmlndXJlCitAQCAtOTQwLDYgKzk0MCw3IEBAIGVuYWJsZV9maXhfY29ydGV4X2E1M184NDM0MTkKKyB3aXRoX2dsaWJjX3ZlcnNpb24KKyBlbmFibGVfZ251X3VuaXF1ZV9vYmplY3QKKyBlbmFibGVfbGlua2VyX2J1aWxkX2lkCisrZW5hYmxlX2xpYnNzcAorIGVuYWJsZV9kZWZhdWx0X3NzcAorIHdpdGhfbG9uZ19kb3VibGVfMTI4Cisgd2l0aF9nYworQEAgLTE2NzksNiArMTY4MCw3IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIG9uIGdsaWJjIHN5c3RlbXMKKyAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgd2lsbCBhbHdheXMgcGFzcyAtLWJ1aWxkLWlkIHRvIGxpbmtlcgorKyAgLS1lbmFibGUtbGlic3NwICAgICAgICAgZW5hYmxlIGxpbmtpbmcgYWdhaW5zdCBsaWJzc3AKKyAgIC0tZW5hYmxlLWRlZmF1bHQtc3NwICAgIGVuYWJsZSBTdGFjayBTbWFzaGluZyBQcm90ZWN0aW9uIGFzIGRlZmF1bHQKKyAgIC0tZW5hYmxlLW1haW50YWluZXItbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIG1ha2UgcnVsZXMgYW5kIGRlcGVuZGVuY2llcyBub3QgdXNlZnVsIChhbmQKK0BAIC0xODQ1MCw3ICsxODQ1Miw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDE4NDM2ICJjb25maWd1cmUiCisrI2xpbmUgMTg0NTUgImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTg1NTYsNyArMTg1NTgsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxODU0MiAiY29uZmlndXJlIgorKyNsaW5lIDE4NTYxICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTI1MjM0LDYgKzI1MjM2LDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19TUEFSQzVfVklTNCAxIgorIAorIGZpCisgCisrCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIGZvciBTUEFSQzYgaW5zdHJ1Y3Rpb25zIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgZm9yIFNQQVJDNiBpbnN0cnVjdGlvbnMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2djY19jdl9hc19zcGFyY19zcGFyYzYrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTI1MjcwLDYgKzI1MjczLDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19TUEFSQzYgMSIgPj5jbworIAorIGZpCisgCisrCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYXNzZW1ibGVyIGZvciBMRU9OIGluc3RydWN0aW9ucyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIGZvciBMRU9OIGluc3RydWN0aW9ucy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7Z2NjX2N2X2FzX3NwYXJjX2xlb24rc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTI4OTQ3LDYgKzI4OTUxLDE4IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfU09MQVJJU19DUlRTIDEiID4KKyAKKyBmaQorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJzc3Agd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX2xpYnNzcCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9saWJzc3A7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKysgIHllc3xubykKKysgICAgOzsKKysgICopCisrICAgIGFzX2ZuX2Vycm9yICJ1bmtub3duIGxpYnNzcCBzZXR0aW5nICRlbmFibGV2YWwiICIkTElORU5PIiA1CisrICAgIDs7CisrZXNhYworK2ZpCisrCisrCisgIyBUZXN0IGZvciBzdGFjayBwcm90ZWN0b3Igc3VwcG9ydCBpbiB0YXJnZXQgQyBsaWJyYXJ5LgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgX19zdGFja19jaGtfZmFpbCBpbiB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBfX3N0YWNrX2Noa19mYWlsIGluIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KK0BAIC0yODk1NCw2ICsyODk3MCwxMSBAQCBpZiB0ZXN0ICIke2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcCtzZXR9CisgICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorIGVsc2UKKyAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubworKyAgaWYgdGVzdCAieCRlbmFibGVfbGlic3NwIiA9ICJ4bm8iOyB0aGVuCisrICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMKKysgIGVsaWYgdGVzdCAieCRlbmFibGVfbGlic3NwIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8KKysgIGVsc2UKKyAgICAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgICAgKi0qLW11c2wqKQorIAkgIyBBbGwgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIHN0YWNrIHByb3RlY3RvcgorQEAgLTI5MDAxLDggKzI5MDIyLDkgQEAgZWxzZQorIGZpCisgCisgICAgICAgICA7OworLSAgKikgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPW5vIDs7CisrICAgICAgICopIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubyA7OworICAgICBlc2FjCisrICBmaQorIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AiID4mNQorICRhc19lY2hvICIkZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwIiA+JjY7IH0KK0BAIC0yOTAzNywxOCArMjkwNTksMTUgQEAgZmkKKyAKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorLWhhdmVfc3lzX3NkdF9oPW5vCisrI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKysjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKysjaGF2ZV9zeXNfc2R0X2g9bm8KKyAjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisgIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCistIworLSMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKy0jCisrIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorICNmaQorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQorLSRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQorKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKyAKKyAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KKyAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2YTc3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLmluYwpAQCAtMCwwICsxLDEyNyBAQAorcmVxdWlyZSBnY2MtY29tbW9uLmluYworCisjIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKKworUFYgPSAiOC4yLjAiCisKKyMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCisKK0JJTlYgPSAiOC4yLjAiCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy04LjI6JHtGSUxFX0RJUk5BTUV9L2djYy04LjIvYmFja3BvcnQ6IgorCitERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiBmbGV4LW5hdGl2ZSIKK05BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIGZsZXgtbmF0aXZlIgorCitMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKKyIKKworI1JFTEVBU0UgPSAiOC4wLjEtUkMtMjAxODA0MjciCitCQVNFVVJJID89ICIke0dOVV9NSVJST1J9L2djYy9nY2MtJHtQVn0vZ2NjLSR7UFZ9LnRhci54eiIKKyNTUkNSRVYgPSAiZjdjZjc5OGI3M2ZkMWEwNzA5OGY5YTQ5MGRlZWMxZTJhMzZlMGJlZCIKKyNCQVNFVVJJID89ICJnaXQ6Ly9naXRodWIuY29tL2djYy1taXJyb3IvZ2NjO2JyYW5jaD1nY2MtNi1icmFuY2g7cHJvdG9jb2w9Z2l0IgorI0JBU0VVUkkgPz0gImh0dHA6Ly9taXJyb3JzLmNvbmNlcnRwYXNzLmNvbS9nY2Mvc25hcHNob3RzLyR7UkVMRUFTRX0vZ2NjLSR7UkVMRUFTRX0udGFyLnh6IgorCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtRGlzYWJsZS1zZHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZXhwb3J0LUNQUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzEtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMi1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzktRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQwLVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQxLUFSQy1maXgtc3BlYy1nZW4ucGF0Y2ggXAorICAgICAgICAgICAke0JBQ0tQT1JUU30gXAorIgorQkFDS1BPUlRTID0gIlwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YWIyODJmNDE0Njc2NDk2NDgzYjNlMTc5M2QwNzg2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTZjM2MwNGJhMjYxM2Y4OTMyODM5NzdlNjAxMWIyMzQ1ZDFjZDFhZjlhYmVhYzU4ZTkxNmIxYWFiM2UwMDgwIgorCitTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9naXQiCisjUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1JFTEVBU0V9IgorQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgorCisjIExhbmd1YWdlIE92ZXJyaWRlcworRk9SVFJBTiA9ICIiCitKQVZBID0gIiIKKworTFRPID0gIi0tZW5hYmxlLWx0byIKK1NTUCA/PSAiLS1kaXNhYmxlLWxpYnNzcCIKK1NTUF9taW5ndzMyID0gIi0tZW5hYmxlLWxpYnNzcCIKKworRVhUUkFfT0VDT05GX0JBU0UgPSAiXAorICAgICR7TFRPfSBcCisgICAgJHtTU1B9IFwKKyAgICAtLWVuYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAorICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKKyAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICR7QCctLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0nIGlmICcke0xJTktFUl9IQVNIX1NUWUxFfScgZWxzZSAnJ30gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS13aXRoLXBwbD1ubyBcCisgICAgLS13aXRoLWNsb29nPW5vIFwKKyAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKKyAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCisgICAgLS13aXRob3V0LWlzbCBcCisiCisKK0VYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS1kaXNhYmxlLWxpYmdvbXAgXAorICAgIC0tZGlzYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLWRpc2FibGUtbHRvIFwKKyAgICAtLWRpc2FibGUtcGx1Z2luIFwKKyAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAorICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAorICAgIC0td2l0aG91dC1pc2wgXAorICAgIC0tZGlzYWJsZS1saWJzc3AgXAorIgorCitFWFRSQV9PRUNPTkZfUEFUSFMgPSAiXAorICAgIC0td2l0aC1neHgtaW5jbHVkZS1kaXI9L25vdC9leGlzdHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXAorICAgIC0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QgXAorICAgIC0td2l0aC1idWlsZC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIzZmUyOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGI3NTJmYjJiNmQ2ZjZkYTY4ZGE1Mzg2Yjk2YWJmMGQ3NGNkNGJiZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDAxLzM5XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgY29uZmlndXJlICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNjljOTllOTljY2EuLjUxN2ZiNzAxOTJlIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC03NTExLDcgKzc1MTEsNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhMWVkYzM2OWEyNy4uZjhjMjU0ZjFmYWMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMxMDAsNyArMzEwMCw3IEBAIGZpCisgIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgorIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCisgCistRkxBR1NfRk9SX1RBUkdFVD0KKytGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgorIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgorICAqIiBuZXdsaWIgIiopCisgICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDMtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDAzLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MTM4OTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDAzLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0wLDAgKzEsMTk0IEBACitGcm9tIDQ4YzY3MGQyNjc4ZTAzMjNkODhlYjcyMjA1ZTAzOWYzOTNjYWJlMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDAzLzM5XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KKy0tLQorIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCisgZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCisgZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKK2luZGV4IGQ2ZWY4NTkyOGYzLi43YjI5ZWZlMzg4MiAxMDA2NDQKKy0tLSBhL2djYy9jb21tb24ub3B0CisrKysgYi9nY2MvY29tbW9uLm9wdAorQEAgLTY3OSw2ICs2NzksMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCisgQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKKyBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgorIAorK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZworK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKKysKKyBXc2hhZG93CisgQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZworIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KK2luZGV4IDViY2NiNDA4MDE2Li4xYzc4NGE4Mjc2YiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuaW4KKysrKyBiL2djYy9jb25maWcuaW4KK0BAIC0xOTQsNiArMTk0LDEyIEBACisgI2VuZGlmCisgCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrI2VuZGlmCisrCisrCisgLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQorICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KKyAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNWMzNDVjZTBmZDcuLmNhZmQwNWZkMTUwIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTk1Myw2ICs5NTMsNyBAQCB3aXRoX3N5c3RlbV96bGliCisgZW5hYmxlX21haW50YWluZXJfbW9kZQorIGVuYWJsZV9saW5rX211dGV4CisgZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfcGx1Z2luCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKK0BAIC0xNjk2LDYgKzE2OTcsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcworICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0CisgICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcworICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKK0BAIC0yOTcxNSw2ICsyOTcxOCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6CisgZmkKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyAKKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggNjVkYmYxZjJmODAuLmRkNWIzODE5NWNlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYzNDEsNiArNjM0MSwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAorICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgICAgICBbMV0sCisrICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyBBQ19TVUJTVChzdWJkaXJzKQorIEFDX1NVQlNUKHNyY2RpcikKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggMjU1MTQ5ZmNmYjguLmNiNzFiNjBmZTNjIDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTMwMyw2ICszMDMsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAtV3BhY2tlZC1ub3QtYWxpZ25lZCAtV3BhZGRlZCBAZ29sCisgLVdwYXJlbnRoZXNlcyAgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAorIC1XcGxhY2VtZW50LW5ldyAgLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0gQGdvbAorKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCisgLVdwb2ludGVyLWFyaXRoICAtV3BvaW50ZXItY29tcGFyZSAgLVduby1wb2ludGVyLXRvLWludC1jYXN0IEBnb2wKKyAtV25vLXByYWdtYXMgIC1XcmVkdW5kYW50LWRlY2xzICAtV3Jlc3RyaWN0ICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKKyAtV3JldHVybi10eXBlICAtV3NlcXVlbmNlLXBvaW50ICAtV3NoYWRvdyAgLVduby1zaGFkb3ctaXZhciBAZ29sCitAQCAtNTcxMiw2ICs1NzEzLDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKKyBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKKyBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCisgCisrQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KKytkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCisrb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKKytkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAorK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKyBAaXRlbSAtV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBhNzE2ZjcwODI1OS4uMDJiM2NkMzlmYzIgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEwMzcsNiArMTAzNyw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKKyAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCisgICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVTfX0gXAorKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorICAgICAle3N0YXRpY3xuby1waWV8c3RhdGljLXBpZTp9ICV7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKKyAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIgQ0hLUF9TUEVDICIgXAorICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggYjExYzZhNTc5MzkuLmUzYjdhMjE5NjZmIDEwMDY0NAorLS0tIGEvZ2NjL2luY3BhdGguYworKysrIGIvZ2NjL2luY3BhdGguYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorICNpbmNsdWRlICJpbmNwYXRoLmgiCisgI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCisgCisgLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCisgICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLworQEAgLTM5Myw2ICszOTQsMjYgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAJfQorICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOworICAgICB9CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICB7CisrICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOworKworKyAgICAgICBmb3IgKHAgPSBoZWFkc1tJTkNfUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKKysgICAgICAgICB7CisrICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCisrICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAorKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOworKyAgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDUtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIxYjk3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDUtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAorRnJvbSBhZTNmZTZlNWU1MDkzN2RlNmU0MjIzY2E5MDgxMDE4NzM3MmE4Y2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNS8zOV0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCisKK0JlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCisKK1RoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KKworT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgorCistIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCisKKy0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcworCitJIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KKworQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/CisKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNTE3ZmI3MDE5MmUuLmFjZDJiOTdkZjQwIDEwMDc1NQorLS0tIGEvY29uZmlndXJlCisrKysgYi9jb25maWd1cmUKK0BAIC02NzcyLDYgKzY3NzIsMzggQEAgZmkKKyAKKyAKKyAKKysjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUworKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCisrIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KKysjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAorKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZworKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCisraWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKytpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgorICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCisgaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA2LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNi02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGNlOTVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwNi02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApAQCAtMCwwICsxLDg1IEBACitGcm9tIDg5YWYzYjczOTkzMTNiMzM3ZjA2YzE5Y2MyZDc4N2FhMTZkMjc3MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAorU3ViamVjdDogW1BBVENIIDA2LzM5XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KKworR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKK2xheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKK2NvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK1RoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCithbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKK2RpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAora25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgorcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KKworVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKK3RoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocworYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKK2Rvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KK2FuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgorCitSUCAxNS84LzExCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBFbHZpcyBEb3dzb24gPGVsdmlzLmRvd3NvbkBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgIHwgIDYgKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCAgIHwgMTAgKysrLS0tLS0tLQorIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCB8ICA1ICsrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKK2luZGV4IDhlYTBmYWZmMzY5Li4yNjZjNjAwODAwNCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKK0BAIC0zMiw3ICszMiw1IEBACisgIworIGNvbW1hPSwKKyBNVUxUSUxJQl9PUFRJT05TICAgID0gJChzdWJzdCAkKGNvbW1hKSwvLCQoVE1fTVVMVElMSUJfQ09ORklHKSkKKy1NVUxUSUxJQl9ESVJOQU1FUyAgID0gJChwYXRzdWJzdCBtJSwgJSwgJChzdWJzdCAvLCAsJChNVUxUSUxJQl9PUFRJT05TKSkpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDppMzg2LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbXgzMj0uLi9saWJ4MzIkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251eDMyKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuCisrTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKK2luZGV4IGMwMTdiN2QwNGM1Li4xMjY4OTJjZjQwYiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKK0BAIC0xNywxMCArMTcsNiBAQAorICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIE1VTFRJTElCX09QVElPTlMgPSBtYWJpPW4zMi9tYWJpPTMyL21hYmk9NjQKKy1NVUxUSUxJQl9ESVJOQU1FUyA9IG4zMiAzMiA2NAorLU1JUFNfRUwgPSAkKGlmICQoZmlsdGVyICVlbCwgJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJCh0YXJnZXQpKSkpLGVsKQorLU1JUFNfU09GVCA9ICQoaWYgJChzdHJpcCAkKGZpbHRlciBNQVNLX1NPRlRfRkxPQVRfQUJJLCAkKHRhcmdldF9jcHVfZGVmYXVsdCkpICQoZmlsdGVyIHNvZnQsICQod2l0aF9mbG9hdCkpKSxzb2Z0KQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBcCistCS4uL2xpYjMyJChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmluMzIkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliJChjYWxsIGlmX211bHRpYXJjaCw6bWlwcyQoTUlQU19FTCktbGludXgtZ251JChNSVBTX1NPRlQpKSBcCistCS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmk2NCQoTUlQU19TT0ZUKSkKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLiAuCisrTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCisrCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitpbmRleCAwZmFhMmEwMmRmNC4uMTNmZDhjYTk3MWUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorQEAgLTI2LDEwICsyNiw5IEBACisgIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCisgCisgTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCistTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgorK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCisgTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCisrTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorIAorIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYworIAkkKENPTVBJTEUpICQ8CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA3LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDA3LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxZWEwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDctb3B0aW9uYWwtbGlic3RkYy5wYXRjaApAQCAtMCwwICsxLDEyNSBAQAorRnJvbSBmYjdkZjYzZTk1NDhjMjliNzA2MDFkNjQyYTE4NTBmYzQ1NWY4NTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTI6NTYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8zOV0gb3B0aW9uYWwgbGlic3RkYworCitnY2MtcnVudGltZSBidWlsZHMgbGlic3RkYysrIHNlcGFyYXRlbHkgZnJvbSBnY2MtY3Jvc3MtKi4gSXRzIGNvbmZpZ3VyZSB0ZXN0cyB1c2luZyBnKysKK3dpbGwgbm90IHJ1biBjb3JyZWN0bHkgc2luY2UgYnkgZGVmYXVsdCB0aGUgbGlua2VyIHdpbGwgdHJ5IHRvIGxpbmsgYWdhaW5zdCBsaWJzdGRjKysKK3doaWNoIHNob3VsZG4ndCBleGlzdCB5ZXQuIFdlIG5lZWQgYW4gb3B0aW9uIHRvIGRpc2FibGUgLWxzdGRjKysKK29wdGlvbiB3aGlsc3QgbGVhdmluZyAtbGMsIC1sZ2NjIGFuZCBvdGhlciBhdXRvbWF0aWMgbGlicmFyeSBkZXBlbmRlbmNpZXMgYWRkZWQgYnkgZ2NjCitkcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIGFuIG9wdGlvbiB3aGljaCBvbmx5IGRpc2FibGVzIHRoZSAtbHN0ZGMrKy4KKworQSAic3RhbmRhcmQiIGdjYyBidWlsZCB1c2VzIHhnY2MgYW5kIGhlbmNlIGF2b2lkcyB0aGlzLiBXZSBzaG91bGQgYXNrIHVwc3RyZWFtIGhvdyB0bworZG8gdGhpcyBvZmZpY2lhbGx5LCB0aGUgbGlrZWx5IGFuc3dlciBpcyBkb24ndCBidWlsZCBsaWJzdGRjKysgc2VwYXJhdGVseS4KKworUlAgMjkvNi8xMAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorLS0tCisgZ2NjL2MtZmFtaWx5L2Mub3B0ICB8ICA0ICsrKysKKyBnY2MvY3AvZysrc3BlYy5jICAgIHwgIDEgKworIGdjYy9kb2MvaW52b2tlLnRleGkgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMSArCisgNCBmaWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK2luZGV4IDUwMTM1MDFiMjMyLi42MzEyZjJjOGY5MCAxMDA2NDQKKy0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAorKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitAQCAtMTkwMCw2ICsxOTAwLDEwIEBAIG5vc3RkaW5jKysKKyBDKysgT2JqQysrCisgRG8gbm90IHNlYXJjaCBzdGFuZGFyZCBzeXN0ZW0gaW5jbHVkZSBkaXJlY3RvcmllcyBmb3IgQysrLgorIAorK25vc3RkbGliKysKKytEcml2ZXIKKytEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5CisrCisgbworIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQorIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0CitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKK2luZGV4IDQ0M2ExNzQ2ZGEzLi5lOWI1MWJlNjJlZiAxMDA2NDQKKy0tLSBhL2djYy9jcC9nKytzcGVjLmMKKysrKyBiL2djYy9jcC9nKytzcGVjLmMKK0BAIC0xMzcsNiArMTM3LDcgQEAgbGFuZ19zcGVjaWZpY19kcml2ZXIgKHN0cnVjdCBjbF9kZWNvZGVkX29wdGlvbiAqKmluX2RlY29kZWRfb3B0aW9ucywKKyAgICAgICBzd2l0Y2ggKGRlY29kZWRfb3B0aW9uc1tpXS5vcHRfaW5kZXgpCisgCXsKKyAJY2FzZSBPUFRfbm9zdGRsaWI6CisrCWNhc2UgT1BUX25vc3RkbGliX186CisgCWNhc2UgT1BUX25vZGVmYXVsdGxpYnM6CisgCSAgbGlicmFyeSA9IC0xOworIAkgIGJyZWFrOworZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitpbmRleCBjYjcxYjYwZmUzYy4uYjBkNDgxZTNhMzAgMTAwNjQ0CistLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCisrKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCitAQCAtMjExLDYgKzIxMSw5IEBAIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMuCisgLWZuby13ZWFrICAtbm9zdGRpbmMrKyBAZ29sCisgLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIEBnb2wKKyAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKKystZnZ0YWJsZS12ZXJpZnk9QHJ7W31zdGRAcnt8fXByZWluaXRAcnt8fW5vbmVAcntdfSBAZ29sCisrLWZ2dHYtY291bnRzIC1mdnR2LWRlYnVnIEBnb2wKKystbm9zdGRsaWIrKyBAZ29sCisgLWZleHQtbnVtZXJpYy1saXRlcmFscyBAZ29sCisgLVdhYmk9QHZhcntufSAgLVdhYmktdGFnICAtV2NvbnZlcnNpb24tbnVsbCAgLVdjdG9yLWR0b3ItcHJpdmFjeSBAZ29sCisgLVdkZWxldGUtbm9uLXZpcnR1YWwtZHRvciAgLVdsaXRlcmFsLXN1ZmZpeCAgLVdtdWx0aXBsZS1pbmhlcml0YW5jZSBAZ29sCitAQCAtNTA5LDcgKzUxMiw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KKyAtcyAgLXN0YXRpYyAtc3RhdGljLXBpZSAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAorIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAorIC1zdGF0aWMtbGlibXB4ICAtc3RhdGljLWxpYm1weHdyYXBwZXJzIEBnb2wKKy0tc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIEBnb2wKKystc2hhcmVkICAtc2hhcmVkLWxpYmdjYyAgLXN5bWJvbGljIC1ub3N0ZGxpYisrIEBnb2wKKyAtVCBAdmFye3NjcmlwdH0gIC1XbCxAdmFye29wdGlvbn0gIC1YbGlua2VyIEB2YXJ7b3B0aW9ufSBAZ29sCisgLXUgQHZhcntzeW1ib2x9ICAteiBAdmFye2tleXdvcmR9fQorIAorQEAgLTEyMzMxLDYgKzEyMzM0LDMzIEBAIGxpYnJhcnkgc3Vicm91dGluZXMuCisgY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisgCisrQGl0ZW0gLW5vc3RkbGliKysKKytAb3BpbmRleCBub3N0ZGxpYisrCisrRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCisrT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCisrCisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKKytAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcworK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCisrbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgorKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgorK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKKytmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCisrSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAorK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQorK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCisrVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQworK2xpYnJhcnkgc3Vicm91dGluZXMuCisrKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKworK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAorK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQorKworIEBpdGVtIC1waWUKKyBAb3BpbmRleCBwaWUKKyBQcm9kdWNlIGEgZHluYW1pY2FsbHkgbGlua2VkIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggMDJiM2NkMzlmYzIuLjhjZDI3YTVkYWQ1IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDQ3LDYgKzEwNDcsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAorICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCisrICAgICV7IW5vc3RkbGliKys6fVwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKKyAjZW5kaWYKKyAKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDgtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2YjdmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDgtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gMTFlYjk3ZWZjY2I5MGI4MzBjODRlZDA3N2EyNWIxYTE1YWQzMzM1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE0OjIwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMzldIGdjYzogZGlzYWJsZSBNQVNLX1JFTEFYX1BJQ19DQUxMUyBiaXQKKworVGhlIG5ldyBmZWF0dXJlIGFkZGVkIGFmdGVyIDQuMy4zCisiaHR0cDovL3d3dy5wdWJicy5uZXQvMjAwOTA5L2djYy85NDA0OC1wYXRjaC1hZGQtc3VwcG9ydC1mb3Itcm1pcHNqYWxyLmh0bWwiCit3aWxsIGNhdXNlIGNjMXBsdXMgZWF0IHVwIGFsbCB0aGUgc3lzdGVtIG1lbW9yeSB3aGVuIGJ1aWxkIHdlYmtpdC1ndGsuCitUaGUgZnVuY3Rpb24gbWlwc19nZXRfcGljX2NhbGxfc3ltYm9sIGtlZXBzIG9uIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaXRzZWxmLgorRGlzYWJsZSB0aGlzIGZlYXR1cmUgdG8gd2FsayBhc2lkZSB0aGUgYnVnLgorCitTaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDcgLS0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCA3IC0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IGNhZmQwNWZkMTUwLi4xOWJhMDUxZDY3MyAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yNzU1MywxMyArMjc1NTMsNiBAQCAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBmb3IgZXhwbGljaXQgSkFMUiByZWxvY2F0aW9uLi4uICIgPiY2OworICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNQorICRhc19lY2hvICIkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCBkZDViMzgxOTVjZS4uMDY2ZGZlMTliYjYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNDc5OCwxMyArNDc5OCw2IEBAIHg6CisgICAgICAgICBybSAtZiBjb25mdGVzdC4qCisgICAgICAgZmkKKyAgICAgZmkKKy0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KKy0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCistICAgICAgZWxzZQorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCistICAgICAgZmkKKy0gICAgZmkKKyAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCisgCisgICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDktQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMDktQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWJlY2UwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAwOS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTE5ZDI1ODQ3ZjA4ZWViNWVmMjZhMDMxZmE1ZWZmNzMyYmZkMGQ0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMzldIENPTExFQ1RfR0NDX09QVElPTlMKKworVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bworaW52b2tlIGNvbGxlY3QyLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA4Y2QyN2E1ZGFkNS4uZDM1NWQ2NTU4M2EgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTQ2NzcsNiArNDY3NywxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKKyAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKKyAKKyAgIGZpcnN0X3RpbWUgPSBUUlVFOworKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKKysgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCisrICAgIHsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOworKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKKysgICAgfQorKyNlbmRpZgorICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKKyAgICAgeworICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOworLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMC1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTAtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc4NWI1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTAtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSAyNjVjYjg4M2MzMTBmM2JiN2U0OWZkMTNiODEzNjI0NzZmYmViNmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8zOV0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgorICR7Qn0KKworVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Cit0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKK29jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Cit3b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KK3RtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJworCitTbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQorIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDIwYmVlMDQ5NGIxLi4xMzY3MTM2YmZhYyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNTM4LDcgKzUzOCw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAorIAorIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACistdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKKyt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKKyBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAorIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAorIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMTliYTA1MWQ2NzMuLmE1NzU4MzljMWIyIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTU4LDggKzEyMTU4LDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggMDY2ZGZlMTliYjYuLjY3NjExNmE2ZDk2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5MjIsOCArMTkyMiw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCitpbmRleCAwZjc1Yzg2M2MwYi4uNjhkOGQ2NjEzY2YgMTAwNjQ0CistLS0gYS9nY2MvbWtjb25maWcuc2gKKysrKyBiL2djYy9ta2NvbmZpZy5zaAorQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KKyAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCisgCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKKyAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KKy0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisrCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgorIAkgICAgZWxzZQorIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAorQEAgLTEwNiw3ICsxMDYsNyBAQCBlc2FjCisgCisgIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgorIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KKy0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisrICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisgZmkKKyAKKyAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDExLWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTBmYjdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDcxY2JhMTg4ZDQ3YjZhZTlkOWI4NzI2MWViNGJjOWViNjhhZTM1NWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAorU3ViamVjdDogW1BBVENIIDExLzM5XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KKworKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKK3VzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKK2RpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK2luZGV4IDkxZmNlOGZlY2QwLi42NzQ3Zjg2ZWI5OCAxMDA3NTUKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitAQCAtMTI4ODMsNyArMTI4ODMsNyBAQCBlc2FjCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitpbmRleCBiZjZkMzYzNGRkYS4uOWRiZTQzY2M2MTYgMTAwNjQ0CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworQEAgLTI1MCw3ICsyNTAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQorIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBBQ19QUk9HX0ZDKGdmb3J0cmFuKQorIAorICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEyLWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMi1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjFmOTZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxMi1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGIzZThlN2U4YWUxMDZlMzIwN2U5ZWRjM2QyM2RjY2UxNDY0Yjc1NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDEyLzM5XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCisKK0N1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQorcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgorcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCitwZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgorCitUaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCisKK1RoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAorLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KKworW1lPQ1RPICMyMDc0XQorCitSUCAyMDEyLzA0LzEzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK2luZGV4IGYwODAyYjg5MTVjLi5mMzI0ZDI5OTg0OSAxMDA2NDQKKy0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKKysrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK0BAIC02NCw1ICs2NCw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKKyAgICAiJXshTToleyFNTToleyFFOlwKKy0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKKysgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKKyAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGQzNTVkNjU1ODNhLi41NzBjZGMwMDAzNCAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTM0Myw3ICsxMzQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KKyAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCisgICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjcHAtb3V0cHV0IiwKKy0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisgICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKKyAgIHsiQGFzc2VtYmxlciIsCisgICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEzLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDEzLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmODgwNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTMtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDBmMzYyOTk3OGNkN2M5ODYxNGU4N2Q0ZmQxOTBiODk4NjQyMjE2MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAorU3ViamVjdDogW1BBVENIIDEzLzM5XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQorCitNSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAorc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorLS0tCisgZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IDg3NDFkZDFlM2IyLi4yZmZjYjM5ZDg1ZiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIxMzcsMjkgKzIxMzcsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKKyAJCQk7OworIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgorIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCisgCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAllc2FjCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE0LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE0LURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQzYmI5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTQtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApAQCAtMCwwICsxLDI0OCBAQAorRnJvbSA1M2YxYzM4MmIxMzY2YzU2MjFjOGVkZWFkOWM3NjY5NTBjMjkwZmQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8zOV0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKKyByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgorCitUaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycworVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYworQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKK1NILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCisKK1JlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCisgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQorIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNiArKysrKystLS0tLS0tLS0tCisgZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitpbmRleCAzNmI3NGRjMTk5My4uMDIzNzM1NzhhZjggMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCA4NTg1ZmRlM2Q0MS4uYjNhZjY4Y2FjNTcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTYyLDggKzYyLDggQEAKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLworIAorICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAoraW5kZXggY2ZjZDljYjFhNWMuLmE3OThlOTg3ZWNiIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitAQCAtNjAsNyArNjAsNyBAQAorIAorICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCisgICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitpbmRleCA2OWY5N2YxNWIwZC4uNzFiYzMxZDkyMzEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggZjJkOTEzZTMwYWMuLjg3MjVmMzNkOGE1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IDJlYTRmZjkyYzFkLi40ODdiMGMwOTIzYiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtODEsMTAgKzgxLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCisgICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAoraW5kZXggMmRmZDBjMThiOTAuLjEyMDU3YzUxYjVlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvbGludXguaCBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAoraW5kZXggYWE4YTI4ZDVkLi5lYmY5NTUxYzkgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAorQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4KKyAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCisgICB9IHdoaWxlICgwKQorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKyAKKyAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCisgICAiJXttYWJpPWlscDMyOi1zZn0iIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IDkwZmU2NTY2MjU1Li41NTY5NWRhZGQ5MSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitAQCAtNDIwLDE2ICs0MjAsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKKyAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgorLQorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKKyAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgorICNlbHNlCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCisgI2VuZGlmCisgCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorQEAgLTQzNyw4ICs0MzIsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKKyAgICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorIAorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCisrCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pIFwKKyAgICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK2luZGV4IDZkMmNjZDAxMmJhLi5lYzc4YTg5Y2UxNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitAQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAorICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKKyAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitpbmRleCA5ZmIwM2FmMGZlOS4uNDAxZmRkYmJiMjIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAorQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiAgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitpbmRleCBjMWZlNDIxNjViNy4uMjZhNzliZmEyZTMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK0BAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKKyAgICBkb25lLiAgKi8KKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI2lmZGVmIFNQQVJDX0JJX0FSQ0gKKyAKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTUtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJmZjg0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTUtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gMmU3NWExNGNkNjAyMjdlMDM2NzkwMTg0ZjBlYjQwMGFiYzNjODcwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMzldIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCisKK1RoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQorYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6CisKK2hlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKKworVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQoraXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKK3dvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgorVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQorJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCAxMzY3MTM2YmZhYy4uNzFhODI3NWMzOWYgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTM1MzgsNyArMzUzOCw3IEBAIGluc3RhbGwtcGx1Z2luOiBpbnN0YWxsZGlycyBsYW5nLmluc3RhbGwtcGx1Z2luIHMtaGVhZGVyLXZhcnMgaW5zdGFsbC1nZW5ndHlwZQorICMgV2Uga2VlcCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgZmlsZXMgaW4gY29uZmlnIG9yIGMtZmFtaWx5IGFuZCAuZGVmCisgIyBmaWxlcy4gQWxsIG90aGVyIGZpbGVzIGFyZSBmbGF0dGVuZWQgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LgorIAkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKHBsdWdpbl9pbmNsdWRlZGlyKQorLQloZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgOyBcCisrCWhlYWRlcnM9IiQoc29ydCAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSkiOyBcCisgCXNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2A7IFwKKyAJZm9yIGZpbGUgaW4gJCRoZWFkZXJzOyBkbyBcCisgCSAgaWYgWyAtZiAkJGZpbGUgXSA7IHRoZW4gXAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxNi1EaXNhYmxlLXNkdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTYtRGlzYWJsZS1zZHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5NzU0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTYtRGlzYWJsZS1zZHQucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gNDIzZDg3YWM0N2QyMWUzOTlkNzU5ZDdmZjNiNjM4ZjBjNzIxYTdkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMzldIERpc2FibGUgc2R0LgorCitXZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCitJdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQorc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCitidXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KKworUlAgMjAxMi84LzcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KKy0tLQorIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYTU3NTgzOWMxYjIuLjg3MjMzOGYyOWI2IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI5Mjk2LDEyICsyOTI5NiwxMiBAQCBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KKyBoYXZlX3N5c19zZHRfaD1ubworLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCistCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkKKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIworKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKysjCisrI2ZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDY3NjExNmE2ZDk2Li41NTA0NmU2ODkyNiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC01OTU3LDE1ICs1OTU3LDE1IEBAIGZpCisgQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCisgCisgIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgorLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKy1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorLWhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKKy0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorLWZpCistQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCisrI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKysjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKysjaGF2ZV9zeXNfc2R0X2g9bm8KKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorKyNmaQorKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKyAKKyAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KKyAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK2luZGV4IGM5ZGJhYTEzOWQ1Li5jNjRhNzdkMTUyYiAxMDA3NTUKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK0BAIC0yMTc4NiwxMSArMjE3ODYsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCisgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorIAorLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKysjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorIAorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKyAKKy0gIGZpCisrIyAgZmkKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitpbmRleCAwZWY5NjI3MGM5Yy4uYWZlNTVhMWIyMTUgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitAQCAtMjMwLDcgKzIzMCw3IEBAIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NFU1NPUlNfT05MTgorIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NfT05MTgorIEdMSUJDWFhfQ0hFQ0tfUFRIUkVBRFNfTlVNX1BST0NFU1NPUlNfTlAKKyBHTElCQ1hYX0NIRUNLX1NZU0NUTF9IV19OQ1BVCistR0xJQkNYWF9DSEVDS19TRFRfSAorKyNHTElCQ1hYX0NIRUNLX1NEVF9ICisgCisgIyBDaGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCisgQUNfQ0hFQ0tfSEVBREVSUyhbZW5kaWFuLmggZXhlY2luZm8uaCBmbG9hdC5oIGZwLmggaWVlZWZwLmggaW50dHlwZXMuaCBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE3LWxpYnRvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE3LWxpYnRvb2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNhYTFjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTctbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGM4YjExZTk2YjExOTEwYjJkNGRmNmFlODEwNDQ2NmUzMzAzZDkzM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDE3LzM5XSBsaWJ0b29sCisKK2xpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKK3doZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KKworVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCitBcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAorZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KKworZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAordG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCisKK1JQIDIwMTIvOC8yNAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGx0bWFpbi5zaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjODVkNzAuLjAxMjFmYmE3MDdmIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKKyAKKyAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCisrICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgorKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCisrCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKyAgICAgIGZpCisgCisgICAgICAgb2xkbGlicz0KKyAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE4LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDE4LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQzY2M2NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTgtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDdkYmJhODQ0YTU5YmRmNmU3ZDcyNGY4YmZhNzkyNzI0NmNiN2FmOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAorU3ViamVjdDogW1BBVENIIDE4LzM5XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCisKK1RoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCittZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAordGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKK1RoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKK2ZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KKworV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBiM2FmNjhjYWM1Ny4uMzMwYjZlMTNjNWYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTg4LDEwICs4OCwxNCBAQAorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCisgICAiL2xpYi9sZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKKyAKKysvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KKysjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKKysjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgorKworIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCisgICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLworICN1bmRlZiAgTElOS19TUEVDCistI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKKysjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKKyAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKKyAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKKyAKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTktVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMTktVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODQ5MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAxOS1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDExNzE0MGFjZDNjMzgzZjYyMGZmNzU4OTQyNzYwMDFjNzQwNWRjY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAorU3ViamVjdDogW1BBVENIIDE5LzM5XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgorIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorCitVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KK3NvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDg3MjMzOGYyOWI2Li5jZmNhZGM5M2EwMSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjEzOCwxMCArMTIxMzgsMjAgQEAgZG9uZQorIHRtYWtlX2ZpbGVfPQorIGZvciBmIGluICR7dG1ha2VfZmlsZX0KKyBkbworLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKy0JdGhlbgorLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorLQlmaQorKyAgY2FzZSAkZiBpbgorKyAgICAqL3QtbGludXg2NCApCisrICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgICAgKiApCisrICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgZXNhYworIGRvbmUKKyB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKKyAKK0BAIC0xMjE1Miw2ICsxMjE2MiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA1NTA0NmU2ODkyNi4uNDRiOTA0NzhmNTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTkwMiwxMCArMTkwMiwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTE5MTYsNiArMTkyNiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMWZlODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIwLUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBhNzI2NjExMWE1YmEyZDE0NmM5NzllODZmZjg0ZjZiODA3Y2E1ZmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMC8zOV0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKKyBob3N0IHBhdGgKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCAwMTIxZmJhNzA3Zi4uNTJiZGJkYjVmOWMgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKKysJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgorKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgZGlyPSIkbGliZGlyIgorIAkgICAgYWJzZGlyPSIkbGliZGlyIgorIAkgIGZpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIxLWV4cG9ydC1DUFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDIxLWV4cG9ydC1DUFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2YjQxMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjEtZXhwb3J0LUNQUC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGM4NTk5ZmMzYjU3ODFiMzE5NzA3YzljMGYxYjBhMWVmN2NkZGIwMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAorU3ViamVjdDogW1BBVENIIDIxLzM5XSBleHBvcnQgQ1BQCisKK1RoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgorYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCitpbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6CisKK2NvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcworY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Citjb25maWd1cmU6MzY2NjogJD8gPSAwCitjb25maWd1cmU6MzY5ODogcmVzdWx0OiBubworY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCitjb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCitjb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCitjb25maWd1cmU6Mzg3NjogJD8gPSAwCisKK05vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQordXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKK2hlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCitpbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAorZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCisKK1RoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCitlbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCit0aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bworYXZvaWQgdGhlIHByb2JsZW0uCisKK1JQIDIyLzA4LzIwMTMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggMmJmODNiNzIyNjUuLjFhZjQ1NTgwMDg2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTQ5LDYgKzE0OSw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUFSPSIkKEFSX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVI7IFwKKyAJQVM9IiQoQVNfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUzsgXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjItRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjItRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2M1ODFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMi1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gNWUyZWU0NmM3MjBiNmNlMDNhMThkYTcwZGQ0ZTA5MTdjMjU4YWIwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjIxOjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjIvMzldIERpc2FibGUgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgYW5kIG90aGVyIG11bHRpbGliCisgb3B0aW9ucy4KKworSGFyZCBjb2RpbmcgdGhlIE1VTFRJTElCX09TRElSTkFNRVMgd2l0aCAuLi9saWI2NCBpcyBjYXVzaW5nIHByb2JsZW1zIG9uCitzeXN0ZW1zIHdoZXJlIHRoZSBsaWJkaXIgaXMgTk9UIHNldCB0byAvbGliNjQuICBUaGlzIGlzIGFsbG93ZWQgYnkgdGhlCitBQkksIGFzCitsb25nIGFzIHRoZSBkeW5hbWljIGxvYWRlciBpcyBwcmVzZW50IGluIC9saWIuCisKK1dlIHNpbXBseSB3YW50IHRvIHVzZSB0aGUgZGVmYXVsdCBydWxlcyBpbiBnY2MgdG8gZmluZCBhbmQgY29uZmlndXJlIHRoZQorbm9ybWFsIGxpYmRpci4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK2luZGV4IGI5ODk3Nzg1YTg5Li43ZDA2ZjBkMGVkYiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKK0BAIC0yMSw4ICsyMSw4IEBACisgTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCisgTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQorIAorLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCistTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCisrI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKyAKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyMy1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjMtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ0ZGExYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjMtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbSA3Mzc2NjQyNGEyZjcxYjE4MTBmYjhhZmRkODYzMDI4ODU1ZDg3ZTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMy8zOV0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKKworVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAorZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCitidWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAorc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQorZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCitwaWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYworY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKworIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDcxYTgyNzVjMzlmLi41YWU2OTNmYjA2YyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNjE0LDYgKzYxNCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKKyAKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KKyBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCisgbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKK0BAIC0yODcwLDYgKzI4NzEsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKKyAKKyBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKKyAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCisrICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCisgICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggYjM2YTk3OWQ1YmEuLmUyZTE4N2RlZGFmIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYworKysrIGIvZ2NjL2NwcGRlZmF1bHQuYworQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisrICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrI2VuZGlmCisgI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisgICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCisgICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKK2RpZmYgLS1naXQgYS9nY2MvZGVmYXVsdHMuaCBiL2djYy9kZWZhdWx0cy5oCitpbmRleCA3OGEwOGEzM2YxMi4uYzg4NTEyNzc2NzQgMTAwNjQ0CistLS0gYS9nY2MvZGVmYXVsdHMuaAorKysrIGIvZ2NjL2RlZmF1bHRzLmgKK0BAIC0xNDUxLDQgKzE0NTEsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgorICNlbmRpZgorIAorKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworKworKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorKyNlbmRpZgorKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDU3MGNkYzAwMDM0Li4zZmI2NGQ0NTNmMSAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTQ2NCwxMyArMTQ2NCw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgCisgLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCisgCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCistI2VuZGlmCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgorLSNlbmRpZgorLQorICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLworICN1bmRlZiBNRF9FWEVDX1BSRUZJWAorICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI0LWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI0LWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdiNDdmNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjQtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDU3YmVlZjY5Mzk2ZjZjMTg3MDE0YjhlNjFjZGM5NjYyMTg0NzlkMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDI0LzM5XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggODAzYjI5MmNjZTUuLmI0Nzg0MmViNTkwIDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK0BAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCisgCistTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUwkJPQorIE1fU0laRQkJPSAtRE49JChQQVRfTikKKyBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitpbmRleCBjOGYzOGJlNTgzNS4uNGZhYjdjZWMzZWEgMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorQEAgLTMzNSw3ICszMzUsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKKyBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTID0KKyBNX1NJWkUgPSAtRE49JChQQVRfTikKKyBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYworLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNS1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YjM1YmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI1LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmZDk2YzliMzVjNTkyZjFiZGQzMmJjNWFlNjY5MTU3NDczZTQ0MDYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDI1LzM5XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCisgJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCisKK2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNTJiZGJkYjVmOWMuLjgyYmNlYzM5ZjA1IDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCisrCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgorIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCistCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKysKKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhYjVhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGMyZTQwMGFmZThjNTE0MzU3ODU5ZmNhODhhZjRkM2UxZmNiZmUyZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDI2LzM5XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgYmFzZV9saWJkaXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IGJmMTMyN2U5OGNjLi42NDQzNjE4M2JjOCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yMSw3ICsyMSw3IEBACisgI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjctYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU1Y2U4YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMjctYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gYTJjYzE3NTc2OWZkODI1NTc1MGVhZWNhZTY0ZTNkMWY5YzM4ZDQ4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMzldIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK2luZGV4IDY0NDM2MTgzYmM4Li5iYTE1NjY3NjAyNiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKKysrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKK0BAIC0yNCw3ICsyNCw3IEBACisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCistI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisrI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKKyAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyOC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI4LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjczZjRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyOC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorRnJvbSBhOGE4YTAyNzg4ZmY5OGYyNTNjZTBiMzNhZGNiMGU2NjFkMjRiMWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDUgSnVsIDIwMTUgMjA6MjU6MTggLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyOC8zOV0gbGliY2MxOiBmaXggbGliY2MxJ3MgaW5zdGFsbCBwYXRoIGFuZCBycGF0aAorCisqIEluc3RhbGwgbGliY2MxLnNvIGFuZCBsaWJjYzFwbHVnaW4uc28gaW50bworICAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pLCBhcyB3aGF0IHdlCisgIGhhZCBkb25lIHRvIGx0by1wbHVnaW4uCisqIEZpeCBiYWQgUlBBVEggaXVzc3VlOgorICBnY2MtNS4yLjA6IHBhY2thZ2UgZ2NjLXBsdWdpbnMgY29udGFpbnMgYmFkIFJQQVRIIC9wYXRodC90by90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvbGliNjQvLi4vbGliNjQgaW4gZmlsZQorIC9wYXRoL3RvL2djYy81LjIuMC1yMC9wYWNrYWdlcy1zcGxpdC9nY2MtcGx1Z2lucy91c3IvbGliNjQvZ2NjL3g4Nl82NC1wb2t5LWxpbnV4LzUuMi4wL3BsdWdpbi9saWJjYzFwbHVnaW4uc28uMC4wLjAKKyBbcnBhdGhzXQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY2MxL01ha2VmaWxlLmFtIHwgNCArKy0tCisgbGliY2MxL01ha2VmaWxlLmluIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuYW0gYi9saWJjYzEvTWFrZWZpbGUuYW0KK2luZGV4IDZlY2I2NmI0MzY1Li42MzRjY2UzYzJhOSAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5hbQorKysrIGIvbGliY2MxL01ha2VmaWxlLmFtCitAQCAtMzcsOCArMzcsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKyAKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyAKKyBpZiBFTkFCTEVfUExVR0lOCisgcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQorZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5pbiBiL2xpYmNjMS9NYWtlZmlsZS5pbgoraW5kZXggNDdiZTEwMDI1YWQuLjhkNTQ4MWQ4N2JkIDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmluCisrKysgYi9saWJjYzEvTWFrZWZpbGUuaW4KK0BAIC0zMDMsOCArMzAzLDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyAKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCisgQEVOQUJMRV9QTFVHSU5fVFJVRUBjYzFsaWJfTFRMSUJSQVJJRVMgPSBsaWJjYzEubGEKKyBzaGFyZWRfc291cmNlID0gY2FsbGJhY2tzLmNjIGNhbGxiYWNrcy5oaCBjb25uZWN0aW9uLmNjIGNvbm5lY3Rpb24uaGggXAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyOS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAyOS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyN2JiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDI5LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKQEAgLTAsMCArMSwyMTMgQEAKK0Zyb20gM2JiNzQ0OTVlNDVlMGU3OThkYWFlNTU1NjQ5N2U2ODhiOGZjNGVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8zOV0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYworCitCZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcword2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCitiaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KKworU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKK25hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCitsaWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCitpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKK2Jhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKKworYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKKyAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCitiKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgorICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxNS83LzI4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQorIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCitpbmRleCBlMmUxODdkZWRhZi4uMmZhYmEyYjFkNjMgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtMzUsNiArMzUsMzAgQEAKKyAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCisgI2VuZGlmCisgCisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NDX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUOworKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIExPQ0FMX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IExPQ0FMX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBQUkVGSVhfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIEZJWEVEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEZJWEVEX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIENST1NTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENST1NTX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBUT09MX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKytzdGF0aWMgY2hhciBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSOworKyNlbmRpZgorKworIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICNpZmRlZiBJTkNMVURFX0RFRkFVTFRTCisgPSBJTkNMVURFX0RFRkFVTFRTOworQEAgLTQyLDM4ICs2NiwzOCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyA9IHsKKyAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCistICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKy0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCistICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAorKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKKyAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKKyAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KKyAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCitAQCAtODUsMTYgKzEwOSwxNiBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjZW5kaWYKKyAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQorICAgfTsKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5oIGIvZ2NjL2NwcGRlZmF1bHQuaAoraW5kZXggNGEwMTg2ZDFjZjIuLjI5ZTVkOWRhMGRjIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAorQEAgLTMzLDcgKzMzLDggQEAKKyAKKyBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgeworLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysKKyAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKKyAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KKyAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCAzZmI2NGQ0NTNmMS4uY2QwYzdmYmU5NjEgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI0OCw2ICsyNDgsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7CisgI2VuZGlmCisgc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOworIAorK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7CisrCisgLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLworIAorIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7CitAQCAtNTE5LDYgKzUyMSw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KKyAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgorICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKKyAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KKysgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKKyAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCitAQCAtMTQ4NywxMCArMTQ5MCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OworICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQorICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0CisgICAgbG9jYXRpb24gaW5zdGVhZC4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cisrc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIAorIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCisgICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCitAQCAtMTQ5OCw5ICsxNTAxLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7CisgCisgLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKK0BAIC01ODQ5LDYgKzU4NTIsMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQorIAkgICAgICB9CisgCSAgICBicmVhazsKKyAKKysgICAgICAgICAgY2FzZSAncic6CisrICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAorKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7CisrICAgICAgICAgICAgYnJlYWs7CisrCisgCSAgY2FzZSAnUyc6CisgCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOworIAkgICAgaWYgKHZhbHVlICE9IDApCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMwLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMwLVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM1NjZkZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzAtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSBmNWNjOGNkMGM0NDA5MmRjNDg3MTA2YWRlMjdlMDExYzFmNTg0YWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDMwLzM5XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCisgbXVsdGlsaWIuCisKK1dlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bworPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLword2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCitjb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCit0aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKK2NvLWV4aXN0IG9uIHRhcmdldC4KKworV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCitmb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCis8dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgorbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4CitpcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCisKK1RoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgoraXM6CisKKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKword2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcword2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCisKK1RoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAorYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgorCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMTUvNy8zMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBjZDBjN2ZiZTk2MS4uZjZmM2FhMDc3YzggMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI1MjcsNyArMjUyNyw3IEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAJeworIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOworLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOworIAl9CisgCitAQCAtMjUzOSw2ICsyNTM5LDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgCSAgLyogTG9vayBmaXJzdCBpbiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5LiAgKi8KKyAJICBpZiAoIXNraXBfbXVsdGlfZGlyKQorIAkgICAgeworKwkgICAgICBpZiAoIShwbC0+b3NfbXVsdGlsaWIgPyBza2lwX211bHRpX29zX2RpciA6IHNraXBfbXVsdGlfZGlyKSkKKysJICAgICAgICB7CisrCSAgICAgICAgICBjb25zdCBjaGFyICp0aGlzX211bHRpOworKwkgICAgICAgICAgc2l6ZV90IHRoaXNfbXVsdGlfbGVuOworKworKwkgICAgICAgICAgaWYgKHBsLT5vc19tdWx0aWxpYikKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfb3NfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9vc19kaXJfbGVuOworKwkJICAgIH0KKysJICAgICAgICAgIGVsc2UKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9kaXJfbGVuOworKwkJICAgIH0KKysKKysJICAgICAgICAgIC8qIExvb2sgaW4gbXVsdGlsaWIgTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeSBmaXJzdCAqLworKwkgICAgICAgICAgaWYgKHRoaXNfbXVsdGlfbGVuKQorKwkgICAgICAgICAgICB7CisrCQkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIHRoaXNfbXVsdGksIHRoaXNfbXVsdGlfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgbWVtY3B5IChwYXRoICsgbGVuICsgdGhpc19tdWx0aV9sZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworKwkgICAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKysJICAgICAgICAgICAgICAgIGlmIChyZXQpCisrCQkgICAgICAgICAgYnJlYWs7CisrCSAgICAgICAgICAgIH0KKysJICAgICAgICB9CisrCisgCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisgCSAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKyAJICAgICAgaWYgKHJldCkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzEtRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMxLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYmMwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMxLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDkzYjRlMWQzYTBmODQxNzExOGQxYzQ4ZmNkMWNlNTE5OTZlMTQyMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzEvMzldIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCisKK1doZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCitDRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKK0NYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgorV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCit0aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgorCitUaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKK0NQUCwgYW5kIEdNUElOQy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKKyBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKworIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBnY2MvY29uZmlndXJlLmFjIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDFhZjQ1NTgwMDg2Li44OTY2NDUzYzMyYyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTY5LDYgKzE3MCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTg2LDYgKzE5MCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK0BAIC03NTMsNiArNzU4LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAorIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAorIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKKysJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKKyAJIkZMRVg9JChGTEVYKSIgXAorIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCitpbmRleCBhYmQyYmMyZmI4OS4uNTgyMmIyNjA0MDQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS50cGwKKysrKyBiL01ha2VmaWxlLnRwbAorQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA1YWU2OTNmYjA2Yy4uMDJlZTBhYTcyZjQgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTgwMSw3ICs4MDEsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAorIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAorIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKKyBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAorLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCisrCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCisgCisgIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgorIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBjZmNhZGM5M2EwMS4uMmY2YjRmNzJlZjMgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTE3OTcsNyArMTE3OTcsNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA0NGI5MDQ3OGY1NS4uOWY4YTUxZmM5YmQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTcwOCw3ICsxNzA4LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzItbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMyLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZDlkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMyLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gOTlmM2UzYjQyNzk5NmFjNTc5ZDk1ZTY4NDQwYTBiZDdhZjdlZjBmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzMi8zOV0gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCisKK1NpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnY2MvY29uZmlnL25pb3MyL2xpbnV4LmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbGludXguaCBiL2djYy9jb25maWcvbmlvczIvbGludXguaAoraW5kZXggNDcyOTEwNTYyNmQuLjM2MTgxZWI3Yjg1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKK0BAIC0zMCw2ICszMCw3IEBACisgI2RlZmluZSBDUFBfU1BFQyAiJXtwb3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtbmlvczIuc28uMSIKKysjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgICIvbGliL2xkLW11c2wtbmlvczIuc28uMSIKKyAKKyAjdW5kZWYgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgTElOS19TUEVDX0VORElBTiBcCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMzLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDMzLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhNmIwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzMtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDg0YjU1YWIyZjY4NzEwYTU4M2Q0ZWM4MTBlYThiM2I2ODU3NmY4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNyBKdW4gMjAxNyAxODoxMDo1NCAtMDcwMAorU3ViamVjdDogW1BBVENIIDMzLzM5XSBBZGQgc3NwX25vbnNoYXJlZCB0byBsaW5rIGNvbW1hbmRsaW5lIGZvciBtdXNsIHRhcmdldHMKKword2hlbiAtZnN0YWNrLXByb3RlY3RvciBvcHRpb25zIGFyZSBlbmFibGVkIHdlIG5lZWQgdG8KK2xpbmsgd2l0aCBzc3Bfc2hhcmVkIG9uIG11c2wgc2luY2UgaXQgZG9lcyBub3QgcHJvdmlkZQordGhlIF9fc3RhY2tfY2hrX2ZhaWxfbG9jYWwoKSBzbyBlc3NlbnRpYWxseSBpdCBwcm92aWRlcworbGlic3NwIGJ1dCBub3QgbGlic3NwX25vbnNoYXJlZCBzb21ldGhpbmcgbGlrZQorVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQX0JVVF9OT1RfU1NQX05PTlNIQVJFRAorIHdoZXJlLWFzIGZvciBnbGliYyB0aGUgbmVlZGVkIHN5bWJvbHMKK2FyZSBhbHJlYWR5IHByZXNlbnQgaW4gbGliY19ub25zaGFyZWQgbGlicmFyeSB0aGVyZWZvcmUKK3dlIGRvIG5vdCBuZWVkIGFueSBsaWJyYXJ5IGhlbHBlciBvbiBnbGliYyBiYXNlZCBzeXN0ZW1zCitidXQgbXVzbCBuZWVkcyB0aGUgbGlic3NwX25vc2hhcmVkIGZyb20gZ2NjCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgIHwgIDcgKysrKysrKworIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4LmggICB8IDEwICsrKysrKysrKysKKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggfCAxMCArKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IDQ4N2IwYzA5MjNiLi40NzY5ZDA4OTUzOCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtMTgyLDYgKzE4MiwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAxLCAwLCAwIH0sCQlcCisgICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CQkJCVwKKyAgIH0KKysjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisrI3VuZGVmIExJTktfU1NQX1NQRUMKKysjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKysjZW5kaWYKKysKKyAjZW5kaWYKKyAKKyAjaWYgKERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQykgJiYgZGVmaW5lZCAoU0lOR0xFX0xJQkMpIC8qIHVDbGludXggKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAoraW5kZXggMDFiNDBjNzYyZjYuLmU3YzVlOTIyMTVjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaAorQEAgLTkyLDYgKzkyLDE2IEBACisgCQkJCQkgIiAtbSBlbGYzMnBwY2xpbnV4IikKKyAjZW5kaWYKKyAKKysvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KKysjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAorKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKysjdW5kZWYgTElOS19TU1BfU1BFQworKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorKyNlbmRpZgorKyNlbmRpZgorKworICN1bmRlZiBMSU5LX09TX0xJTlVYX1NQRUMKKyAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQyBMSU5LX09TX0xJTlVYX0VNVUwgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAorICAgJXshc3RhdGljLXBpZTogXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAoraW5kZXggNTU2OTVkYWRkOTEuLjYwZjFlZTI0OTg1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK0BAIC00NzMsNiArNDczLDE2IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgCQkJCQkgICAiIC1tIGVsZjY0cHBjIikKKyAjZW5kaWYKKyAKKysvKiBsaW5rIGxpYnNzcF9ub25zaGFyZWQuYSB3aXRoIG11c2wgKi8KKysjaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAorKyNpZmRlZiBUQVJHRVRfTElCQ19QUk9WSURFU19TU1AKKysjdW5kZWYgTElOS19TU1BfU1BFQworKyNkZWZpbmUgTElOS19TU1BfU1BFQyAiJXtmc3RhY2stcHJvdGVjdG9yfGZzdGFjay1wcm90ZWN0b3ItYWxsIiBcCisrCQkgICAgICAgInxmc3RhY2stcHJvdGVjdG9yLXN0cm9uZ3xmc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0IiBcCisrCQkgICAgICAgIjotbHNzcF9ub25zaGFyZWR9IgorKyNlbmRpZgorKyNlbmRpZgorKworICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDMzIgTElOS19PU19MSU5VWF9FTVVMMzIgIiAleyFzaGFyZWQ6ICV7IXN0YXRpYzogXAorICAgJXshc3RhdGljLXBpZTogXAorICAgICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzQtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2OWVhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzQtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gZmFmMzVlMjY3NDA0NjFmZTFhMWRhNTQzM2Q1YTAxNjlhNjYzZTNiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IEFwciAyMDE2IDIwOjAzOjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzQvMzldIGxpYmdjYzogQWRkIGtub2IgdG8gdXNlIGxkYmwtMTI4IG9uIHBwYworCittdXNsIGRvZXMgbm90IHN1cHBvcnQgbGRibCAxMjggc28gd2UgY2FuIG5vdCBhc3N1bWUKK3RoYXQgbGludXggYXMgYSB3aG9sZSBzdXBwb3J0cyBsZGJsLTEyOCBiaXRzLCBpbnN0ZWFkCithY3QgdXBvbiBjb25maWd1cmUgb3B0aW9uIHBhc3NlZCB0byBnY2MgYW5kIGFzc3VtZSBubworb24gbXVzbCBhbmQgeWVzIG90aGVyd2lzZSBpZiBubyBvcHRpb24gaXMgcGFzc2VkIHNpbmNlCitkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBhc3N1bWUgbGRibDEyOCBpdCBkb2VzIG5vdAorY2hhbmdlIHRoZSBkZWZhdWx0cworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIGxpYmdjYy9NYWtlZmlsZS5pbiAgICAgICAgICAgfCAgMSArCisgbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCB8ICA1ICsrKystCisgbGliZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKworIGxpYmdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxMiArKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGxpYmdjYy9jb25maWd1cmUKKworZGlmZiAtLWdpdCBhL2xpYmdjYy9NYWtlZmlsZS5pbiBiL2xpYmdjYy9NYWtlZmlsZS5pbgoraW5kZXggZGQ4Y2VlOTlmZDMuLmI1ZjQ3OGFmMzgyIDEwMDY0NAorLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCisrKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KK0BAIC00OCw2ICs0OCw3IEBAIHVud2luZF9oZWFkZXIgPSBAdW53aW5kX2hlYWRlckAKKyBtZF91bndpbmRfaGVhZGVyID0gQG1kX3Vud2luZF9oZWFkZXJACisgc2ZwX21hY2hpbmVfaGVhZGVyID0gQHNmcF9tYWNoaW5lX2hlYWRlckAKKyB0aHJlYWRfaGVhZGVyID0gQHRocmVhZF9oZWFkZXJACisrd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKKyAKKyBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKKyByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKK2luZGV4IDRmNmQ0YzRhNGQyLi5jNTBkZDk0YTJkYSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKK0BAIC0xLDMgKzEsNiBAQAorIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKKyAKKy1IT1NUX0xJQkdDQzJfQ0ZMQUdTICs9IC1tbG9uZy1kb3VibGUtMTI4IC1tbm8tbWluaW1hbC10b2MKKytpZmVxICgkKHdpdGhfbGRibDEyOCkseWVzKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjgKKytlbmRpZgorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1uby1taW5pbWFsLXRvYworZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggYjJmM2Y4NzA4NDQuLmVkODA2NTg3YzE3CistLS0gYS9saWJnY2MvY29uZmlndXJlCisrKysgYi9saWJnY2MvY29uZmlndXJlCitAQCAtNjE5LDYgKzYxOSw3IEBAIGJ1aWxkX3ZlbmRvcgorIGJ1aWxkX2NwdQorIGJ1aWxkCisgd2l0aF9haXhfc29uYW1lCisrd2l0aF9sZGJsMTI4CisgZW5hYmxlX3Z0YWJsZV92ZXJpZnkKKyBlbmFibGVfc2hhcmVkCisgbGliZ2NjX3RvcGRpcgorQEAgLTY2OCw2ICs2NjksNyBAQCB3aXRoX2Nyb3NzX2hvc3QKKyB3aXRoX2xkCisgZW5hYmxlX3NoYXJlZAorIGVuYWJsZV92dGFibGVfdmVyaWZ5Cisrd2l0aF9sb25nX2RvdWJsZV8xMjgKKyB3aXRoX2FpeF9zb25hbWUKKyBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKKyB3aXRoX3NsaWJkaXIKK0BAIC0xMzI5LDYgKzEzMzEsNyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC10YXJnZXQtc3ViZGlyPVNVQkRJUiAgICAgIENvbmZpZ3VyaW5nIGluIGEgc3ViZGlyZWN0b3J5IGZvciB0YXJnZXQKKyAgIC0td2l0aC1jcm9zcy1ob3N0PUhPU1QgICAgICAgICAgIENvbmZpZ3VyaW5nIHdpdGggYSBjcm9zcyBjb21waWxlcgorICAgLS13aXRoLWxkICAgICAgICAgICAgICAgYXJyYW5nZSB0byB1c2UgdGhlIHNwZWNpZmllZCBsZCAoZnVsbCBwYXRobmFtZSkKKysgIC0td2l0aC1sb25nLWRvdWJsZS0xMjggIHVzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHQKKyAgIC0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZSBvbiBBSVgKK0BAIC0yMjEzLDYgKzIyMTYsMjEgQEAgZmkKKyAKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxvbmctZG91YmxlLTEyOCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCisrZWxzZQorKyAgY2FzZSAiJHtob3N0fSIgaW4KKysgcG93ZXIqLSotbXVzbCopCisrICAgd2l0aF9sZGJsMTI4PSJubyI7OworKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OworKyBlc2FjCisrCisrZmkKKysKKysKKysKKysKKyAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFpeC1zb25hbWUgd2FzIGdpdmVuLgorIGlmIHRlc3QgIiR7d2l0aF9haXhfc29uYW1lK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAiJHtob3N0fToke2VuYWJsZV9zaGFyZWR9IiBpbgorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUuYWMgYi9saWJnY2MvY29uZmlndXJlLmFjCitpbmRleCBiNTlhYTc0NmFmYy4uNDIyMjBhMjYzYzUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCisrKysgYi9saWJnY2MvY29uZmlndXJlLmFjCitAQCAtNzgsNiArNzgsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAorIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCisgQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCisgCisrQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAorK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCisrICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAorKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKKytbY2FzZSAiJHtob3N0fSIgaW4KKysgcG93ZXIqLSotbXVzbCopCisrICAgd2l0aF9sZGJsMTI4PSJubyI7OworKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OworKyBlc2FjCisrXSkKKytBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCisrCisgQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKKyBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAorICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQxNmUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA3NzVjN2ZhZmNiZmViZWQyZDRiZDhhNmEwMTFmMThmNzBmM2I1OWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAorU3ViamVjdDogW1BBVENIIDM1LzM5XSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworaW5kZXggN2U2MGI2MjFhMmQuLmVhMjJlZGUzMzYxIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKKysrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitAQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKKyAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCisgCisgU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAorLQkkKFNITElCX0xERkxBR1MpIFwKKysJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKKyAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCisgCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAorIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzYtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzYtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGVmMzNhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gYjdmYWVlZDYwMjYxZDdiNzVmMmRiMzgyMzkyNmRlMTY1MGVmNjRiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogU2F0LCAyNCBPY3QgMjAxNSAyMDowOTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIIDM2LzM5XSBsaWJnY2NfczogVXNlIGFsaWFzIGZvciBfX2NwdV9pbmRpY2F0b3JfaW5pdCBpbnN0ZWFkIG9mCisgc3ltdmVyCisKK0FkYXB0ZXIgZnJvbQorCitodHRwczovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTUtMDUvbXNnMDA4OTkuaHRtbAorCitUaGlzIGZpeCB3YXMgZGViYXRlZCBidXQgaGFzbnQgYmVlbiBhcHBsaWVkIGdjYyB1cHN0cmVhbSBzaW5jZQordGhleSBleHBlY3QgbXVzbCB0byBzdXBwb3J0ICdAJyBpbiBzeW1ib2wgdmVyc2lvbmluZyB3aGljaCBpcworYSBzdW4vZ251IHZlcnNpb25pbmcgZXh0ZW50aW9uLiBUaGlzIHBhdGNoIGhvd2V2ZXIgYXZvaWRzIHRoZQorbmVlZCBmb3IgdGhlICdAJyBzeW1ib2xzIGF0IGFsbAorCitsaWJnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9jcHVpbmZvLmMgKF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsKTogQWRkLgorCShfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAsIF9fY3B1X21vZGVsQEdDQ180LjguMCk6IFJlbW92ZS4KKworCSogY29uZmlnL2kzODYvdC1saW51eCAoSE9TVF9MSUJHQ0MyX0NGTEFHUyk6IFJlbW92ZSAtRFVTRV9FTEZfU1lNVkVSLgorCitnY2MvQ2hhbmdlbG9nOgorCisyMDE1LTA1LTExICBTemFib2xjcyBOYWd5ICA8c3phYm9sY3MubmFneUBhcm0uY29tPgorCisJKiBjb25maWcvaTM4Ni9pMzg2LmMgKGl4ODZfZXhwYW5kX2J1aWx0aW4pOiBNYWtlIF9fYnVpbHRpbl9jcHVfaW5pdAorCWNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW5zdGVhZCBvZiBfX2NwdV9pbmRpY2F0b3JfaW5pdC4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCisgbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitpbmRleCA2YTIxNDFlNDhkYi4uNDU1ZmNjYmRkNTAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCisrKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5jCitAQCAtMzY0OTAsMTAgKzM2NDkwLDEwIEBAIGl4ODZfZXhwYW5kX2J1aWx0aW4gKHRyZWUgZXhwLCBydHggdGFyZ2V0LCBydHggc3VidGFyZ2V0LAorICAgICB7CisgICAgIGNhc2UgSVg4Nl9CVUlMVElOX0NQVV9JTklUOgorICAgICAgIHsKKy0JLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0IGluIGxpYmdjYy4gKi8KKysJLyogTWFrZSBpdCBjYWxsIF9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIGluIGxpYmdjYy5hLiAqLworIAl0cmVlIGNhbGxfZXhwciwgZm5kZWNsLCB0eXBlOworICAgICAgICAgdHlwZSA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsIE5VTExfVFJFRSk7IAorLQlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXQiLCB0eXBlKTsKKysJZm5kZWNsID0gYnVpbGRfZm5fZGVjbCAoIl9fY3B1X2luZGljYXRvcl9pbml0X2xvY2FsIiwgdHlwZSk7CisgCWNhbGxfZXhwciA9IGJ1aWxkX2NhbGxfZXhwciAoZm5kZWNsLCAwKTsgCisgCXJldHVybiBleHBhbmRfZXhwciAoY2FsbF9leHByLCB0YXJnZXQsIG1vZGUsIEVYUEFORF9OT1JNQUwpOworICAgICAgIH0KK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworaW5kZXggODY5NTNkYjI3NDMuLmUwNDc2MjcyODEwIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYworQEAgLTQ4Miw3ICs0ODIsNyBAQCBfX2NwdV9pbmRpY2F0b3JfaW5pdCAodm9pZCkKKyAgIHJldHVybiAwOworIH0KKyAKKy0jaWYgZGVmaW5lZCBTSEFSRUQgJiYgZGVmaW5lZCBVU0VfRUxGX1NZTVZFUgorLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X2luZGljYXRvcl9pbml0LCBfX2NwdV9pbmRpY2F0b3JfaW5pdEBHQ0NfNC44LjAiKTsKKy1fX2FzbV9fICgiLnN5bXZlciBfX2NwdV9tb2RlbCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wIik7CisrI2lmbmRlZiBTSEFSRUQKKytpbnQgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgKHZvaWQpCisrICBfX2F0dHJpYnV0ZV9fICgod2VhaywgYWxpYXMgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIpKSk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXggYi9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAoraW5kZXggODUwNmE2MzU3OTAuLjU2NDI5NmY3ODhlIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKKysrKyBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitAQCAtMyw1ICszLDUgQEAKKyAjIHQtc2xpYmdjYy1lbGYtdmVyIGFuZCB0LWxpbnV4CisgU0hMSUJfTUFQRklMRVMgPSBsaWJnY2Mtc3RkLnZlciAkKHNyY2RpcikvY29uZmlnL2kzODYvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAtRFVTRV9FTEZfU1lNVkVSICQoQ0VUX0ZMQUdTKQorK0hPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS04MCAkKENFVF9GTEFHUykKKyBDUlRTVFVGRl9UX0NGTEFHUyArPSAkKENFVF9GTEFHUykKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzNy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhN2Y0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzctc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsOTEgQEAKK0Zyb20gNjAyYWJhYWIxNWZmYjYwYmYxNzk3MTg3YTcxYjQ4NTA0MmM1NjM2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzNy8zOV0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCisKK211c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90CitzbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAoraW5kZXggMzFiOTZhN2U1ZTEuLjQzOGEzY2U3YzU2IDEwMDY0NAorLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCisrKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK0BAIC0xMzQsNiArMTM0LDcgQEAgX1RZUEVfd2NoYXJfdDsKKyAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAorICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKKyAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCisrI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9QVFJESUZGX1QKKyAjZGVmaW5lIF9UX1BUUkRJRkZfCisgI2RlZmluZSBfVF9QVFJESUZGCitAQCAtMTQzLDEwICsxNDQsMTIgQEAgX1RZUEVfd2NoYXJfdDsKKyAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAorICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKKyAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXworICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAorICNlbmRpZgorIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisrI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KKyAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLworICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLworICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KK0BAIC0xODQsNiArMTg3LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjaWZuZGVmIF9HQ0NfU0laRV9UCisgI2lmbmRlZiBfU0laRVRfCisgI2lmbmRlZiBfX3NpemVfdAorKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KKyAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KKyAjZGVmaW5lIF9TSVpFX1QKK0BAIC0yMDAsNiArMjA0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKyAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAorICNkZWZpbmUgX0dDQ19TSVpFX1QKKyAjZGVmaW5lIF9TSVpFVF8KKysjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAorICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCisgICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKK0BAIC0yMzUsNiArMjQwLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2VuZGlmIC8qIF9TSVpFX1QgKi8KKyAjZW5kaWYgLyogX19TSVpFX1RfXyAqLworICNlbmRpZiAvKiBfX3NpemVfdF9fICovCisrI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KKyAjdW5kZWYJX19uZWVkX3NpemVfdAorICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3NpemVfdC4gICovCisgCitAQCAtMjY0LDYgKzI3MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNpZm5kZWYgX19faW50X3djaGFyX3RfaAorICNpZm5kZWYgX19JTlRfV0NIQVJfVF9ICisgI2lmbmRlZiBfR0NDX1dDSEFSX1QKKysjaWZuZGVmIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9fd2NoYXJfdF9fCS8qIEJlT1MgKi8KKyAjZGVmaW5lIF9fV0NIQVJfVF9fCS8qIENyYXkgVW5pY29zL01rICovCisgI2RlZmluZSBfV0NIQVJfVAorQEAgLTI3OSw2ICsyODYsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAorICNkZWZpbmUgX0dDQ19XQ0hBUl9UCisgI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRAorKyNkZWZpbmUgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLworIAorIC8qIE9uIEJTRC8zODYgMS4xLCBhdCBsZWFzdCwgbWFjaGluZS9hbnNpLmggZGVmaW5lcyBfQlNEX1dDSEFSX1RfCisgICAgaW5zdGVhZCBvZiBfV0NIQVJfVF8sIGFuZCBfQlNEX1JVTkVfVF8gKHdoaWNoLCB1bmxpa2UgdGhlIG90aGVyCitAQCAtMzQ0LDYgKzM1Miw3IEBAIHR5cGVkZWYgX19XQ0hBUl9UWVBFX18gd2NoYXJfdDsKKyAjZW5kaWYKKyAjZW5kaWYgLyogX19XQ0hBUl9UX18gKi8KKyAjZW5kaWYgLyogX193Y2hhcl90X18gKi8KKysjZW5kaWYgLyogX19ERUZJTkVEX3djaGFyX3QgbXVzbCAqLworICN1bmRlZglfX25lZWRfd2NoYXJfdAorICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3djaGFyX3QuICAqLworIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzOC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDAzOC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNGQyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM4LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSAwMDY5NDg0OTYzMmRlZTIzNzQxOTI1YzYxMDRkZjEzNGY2YmZmNzQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTkgTWFyIDIwMTggMjI6MzE6MjAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzOC8zOV0gZml4IHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBwcmVjb21waWxlZCBoZWFkZXIgZ2VuZXJhdGlvbgorCitQcmV2ZW50IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoaWNoIG9jY3VycyB3aGVuIHVzaW5nIGluY29ycmVjdAorc3RydWN0dXJlIHRyeWluZyB0byBhY2Nlc3MgbmFtZSBvZiBzb21lIG5hbWVkIG9wZXJhdG9ycywgc3VjaCBhcworQ1BQX05PVCwgQ1BQX0FORCBldGMuICJ0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmciIGNhbm5vdCBiZSB1c2VkIGluCit0aG9zZSBjYXNlcywgYXMgaXMgbWF5IG5vdCBiZSBpbml0aWFsaXplZCBhdCBhbGwuCisKK1tZT0NUTyAjMTE3MzhdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmNwcC9sZXguYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjcHAvbGV4LmMgYi9saWJjcHAvbGV4LmMKK2luZGV4IDM3YzM2NWEzNTYwLi42MzQ4MDA0OGRiNiAxMDA2NDQKKy0tLSBhL2xpYmNwcC9sZXguYworKysrIGIvbGliY3BwL2xleC5jCitAQCAtMzI3OSwxMSArMzI3OSwyNyBAQCBjcHBfc3BlbGxfdG9rZW4gKGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCBjcHBfdG9rZW4gKnRva2VuLAorICAgICBzcGVsbF9pZGVudDoKKyAgICAgY2FzZSBTUEVMTF9JREVOVDoKKyAgICAgICBpZiAoZm9yc3RyaW5nKQorLQl7CistCSAgbWVtY3B5IChidWZmZXIsIE5PREVfTkFNRSAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSwKKy0JCSAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOworLQkgIGJ1ZmZlciArPSBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKTsKKy0JfQorKyAgICAgICAgeworKyAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgPT0gQ1BQX05BTUUpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgbWVtY3B5IChidWZmZXIsIE5PREVfTkFNRSAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSwKKysgICAgICAgICAgICAgICAgICAgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKKysgICAgICAgICAgICAgIGJ1ZmZlciArPSBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKTsKKysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgLyogTkFNRURfT1AsIGNhbm5vdCB1c2Ugbm9kZS5zcGVsbGluZyAqLworKyAgICAgICAgICBpZiAodG9rZW4tPmZsYWdzICYgTkFNRURfT1ApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gY3BwX25hbWVkX29wZXJhdG9yMm5hbWUgKHRva2VuLT50eXBlKTsKKysgICAgICAgICAgICAgIGlmIChzdHIpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKHN0cik7CisrICAgICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RyLCBsZW4pOworKyAgICAgICAgICAgICAgICAgIGJ1ZmZlciArPSBsZW47CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAgICAgICBlbHNlCisgCWJ1ZmZlciA9IF9jcHBfc3BlbGxfaWRlbnRfdWNucyAoYnVmZmVyLCB0b2tlbi0+dmFsLm5vZGUubm9kZSk7CisgICAgICAgYnJlYWs7CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM5LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDM5LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1MTYzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwMzktRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaApAQCAtMCwwICsxLDI1OCBAQAorRnJvbSBkMTUxYTYyYzI1Mjc0OTY0M2M4NTBhMDhkMTMzNTMyMWU1Yjc1ZDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUkFHSFVOQVRIIExPTFVSIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+CitEYXRlOiBXZWQsIDYgRGVjIDIwMTcgMjI6NTI6MjYgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzOS8zOV0gRml4IGZvciB0ZXN0c3VpdGUgZmFpbHVyZQorCisyMDE3LTExLTE2ICBSYWdodW5hdGggTG9sdXIgIDxyYWdodW5hdGgubG9sdXJAa3BpdC5jb20+CisKKwkqIGdjYy5kZy9wcjU2Mjc1LmM6IElmIFNTRSBpcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQKKwkiLW1mcG1hdGgiIGlzIG5vdCBzZXQgdG8gdXNlIFNTRS4gU2V0ICItbWZwbWF0aD0zODciLgorCSogZ2NjLmRnL3ByNjgzMDYuYzogTGlrZXdpc2UKKwkqIGdjYy5kZy9wcjY4MzA2LTIuYzogTGlrZXdpc2UKKwkqIGdjYy5kZy9wcjY4MzA2LTMuYzogTGlrZXdpc2UKKwkqIGdjYy5kZy9wcjY5NjM0LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jOiBMaWtld2lzZQorCitJZiAtV2FsbCwgLVdlcnJvciBhcmUgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gdmFyaW91cyB0ZXN0IGNhc2VzIGZhaWwKK3RvIGNvbXBpbGUuCisKK0lmIFNTRSBpcyBkaXNhYmxlZCwgYmUgc3VyZSB0byAtbWZwbWF0aD0zODcgdG8gcmVzb2x2ZSB0aGlzLgorCitUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNoYW5nZXMgdG8gQ2hhbmdlbG9nIGZyb20gdGhlIG9yaWdpbmFsIHBhdGNoLgorVGhpcyB3aWxsIGhlbHAgdXMgYXZvaWQgY29uZmxpY3RzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jICAgICAgICAgIHwgMSArCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyAgICAgIHwgMiArLQorIDE3IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCitpbmRleCBiOTAxYmIyYjE5OS4uYTRmNmM5NWUxYTEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgeyBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSB9ICovCisgCisgdHlwZWRlZiBsb25nIGxvbmcgdjJ0dyBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDIgKiBzaXplb2YgKGxvbmcgbG9uZykpKSk7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworaW5kZXggNDY3MmViZTc5ODcuLjJhMzY4YzQ4NGI2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgCisgc3RydWN0IHsKKyAgICAgaW50IHR6X21pbnV0ZXN3ZXN0OworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKK2luZGV4IGY1YThjMTAyY2Y4Li5kZjMzOTBjNjRjMiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLWFsdGl2ZWMgLW1uby12c3giIHsgdGFyZ2V0IHBvd2VycGMqLSotKiB9IH0gKi8KKyAKKyBleHRlcm4gdm9pZCBmbjIoKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKK2luZGV4IDU0ZTViNDBmMjIxLi4wODEzMzg5ZTJjMSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgCisgZW51bSBwb3dlcnBjX3BtY190eXBlIHsgUFBDX1BNQ19JQk0gfTsKKyBzdHJ1Y3QgeworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworaW5kZXggNjBhNTYxNDk0NjMuLmJjYzIzZjljY2Q2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzIgLWZuby1kY2UgLWZzY2hlZHVsZS1pbnNucyAtZm5vLXRyZWUtdnJwIC1mY29tcGFyZS1kZWJ1ZyAtV25vLXBzYWJpIiB9ICovCistLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisgLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgc2NoZWR1bGluZyB9ICovCisgCisgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1MTY7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKK2luZGV4IDY5ZmRlNTdiZjA2Li43ZjFmMWMwM2VkZiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWFiaT1zeXN2IiB7IHRhcmdldCAqLSotbWluZ3cqIH0gfSAqLworIAorIGRvdWJsZSBmb28odm9pZCkgeyByZXR1cm4gMDsgfQkvKiB7IGRnLWVycm9yICJTU0UgZGlzYWJsZWQiIH0gKi8KK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKK2luZGV4IGVhODk2YjdlYmZkLi5iZjE1NTY5YjgyNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCitAQCAtMSw2ICsxLDcgQEAKKyAvKiBUZXN0IHdoZXRoZXIgYWxsIG9mIHRoZSA2NC1iaXQgZnVuY3Rpb24gc3BlY2lmaWMgb3B0aW9ucyBhcmUgYWNjZXB0ZWQKKyAgICB3aXRob3V0IGVycm9yLiAgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgI2luY2x1ZGUgImZ1bmNzcGVjLTU2LmluYyIKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKK2luZGV4IDNmYmRjODgxZGRhLi42YjRkOWQxMjUyYSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODcgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdXdvcmRfdCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoX193b3JkX18pKSk7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworaW5kZXggNWQ0OWU2ZTc3ZmUuLjFkZTJkYjkyYmRkIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIHJ1biB9ICovCistLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItbWFyY2g9eDg2LTY0IC1tc3NlNGEgLW1mbWE0IC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIGV4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKK2luZGV4IGZhMTc2OWI2MmZiLi5mNzlmYjEyNzI2ZiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8gLW1uby1zc2UgLVduby1wc2FiaSAtbXR1bmU9Z2VuZXJpYyAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyBzdHJ1Y3QgQQorIHsgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworaW5kZXggMmU4OWZmN2Q4MWQuLjYzMzliZjZiNzM2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCisgCisgdHlwZWRlZiBkb3VibGUgX192MmRmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDE2KSkpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKK2luZGV4IDYxZjYyODNkYmU5Li4yYzVhNTVmMGFjMyAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgdGFyZ2V0LzUzNDI1ICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLworIAorIHR5cGVkZWYgZmxvYXQgX192MnNmIF9fYXR0cmlidXRlX18gKChfX3ZlY3Rvcl9zaXplX18gKDgpKSk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCitpbmRleCAyMzM2NmQwOTA5ZC4uOTgxMGUzYWJiNzYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCisgLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgbWF5YmVfeDMyIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJfdDsKKyB0eXBlZGVmIHVpbnQzMl90IEVsZjMyX1dvcmQ7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCitpbmRleCA5NjAwNmIzZTMzOC4uNDI4N2U0NTM4YmYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgdGFyZ2V0LzU5NjQ0ICovCisgLyogeyBkZy1kbyBydW4geyB0YXJnZXQgbHA2NCB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmZyZWVzdGFuZGluZyAtbW5vLXNzZSAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgLyogVGhpcyB0ZXN0IHVzZXMgX19idWlsdGluX3RyYXAgKCkgaW5zdGVhZCBvZiBlLmcuIGFib3J0LAorICAgIGJlY2F1c2UgZHVlIHRvIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgaXQgc2hvdWxkIG5vdCBjYWxsCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCitpbmRleCBiZmI4YzQ3MDNlYi4uZWQwNGNmMTgxZjMgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyB2b2lkIGZvbyAoKQorIHsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCitpbmRleCA0ZTExMmM4OGQwNy4uYmNmYjM5NmE2OGQgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHJ0bC1vcHRpbWl6YXRpb24vNzA0NjcgKi8KKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdm9pZCBmb28gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKyAKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYworaW5kZXggNmNkYTE1MzQzMTEuLjI2ZTM3ZjViOGJhIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIiB9ICAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLVd2ZWN0b3Itb3BlcmF0aW9uLXBlcmZvcm1hbmNlIC1tZnBtYXRoPTM4NyIgfSAgKi8KKyAjZGVmaW5lIHZlY3RvcihlbGNvdW50LCB0eXBlKSAgXAorIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKChlbGNvdW50KSpzaXplb2YodHlwZSkpKSkgdHlwZQorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDA0MC1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDQwLVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWZhMDEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjIvMDA0MC1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA4ZmI4Zjc3M2UxMTdlZTcwYmUwMGJiMGRhNWYzNDNmZTExMGRhNWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjoxMDoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDQwLzQwXSBSZS1pbnRyb2R1Y2Ugc3BlIGNvbW1hbmRsaW5lIG9wdGlvbnMKKworVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgd2Uga2VlcCBhY2NlcHRpbmcKK3NwZSBvcHRpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU1BFIHBvcnQgaXMgcmVtb3ZlZCBmcm9tIHJzNjAwIHBvcnRdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0CitpbmRleCBhY2U4YTQ3NzU1MC4uZDZhOGY4MjVkODggMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0CisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0CitAQCAtMzY1LDYgKzM2NSwxOCBAQCBtZGVidWc9CisgVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAorIC1tZGVidWc9CUVuYWJsZSBkZWJ1ZyBvdXRwdXQuCisgCisrbXNwZQorK1RhcmdldCBWYXIocnM2MDAwX3NwZSkgU2F2ZQorK0dlbmVyYXRlIFNQRSBTSU1EIGluc3RydWN0aW9ucyBvbiBFNTAwLgorKworK21hYmk9c3BlCisrVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSkgU2F2ZQorK1VzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgorKworK21hYmk9bm8tc3BlCisrVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSwgMCkKKytEbyBub3QgdXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCisrCisgbWFiaT1hbHRpdmVjCisgVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfYWx0aXZlY19hYmkpIFNhdmUKKyBVc2UgdGhlIEFsdGlWZWMgQUJJIGV4dGVuc2lvbnMuCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDQxLUFSQy1maXgtc3BlYy1nZW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMi8wMDQxLUFSQy1maXgtc3BlYy1nZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkNWU0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4yLzAwNDEtQVJDLWZpeC1zcGVjLWdlbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDg5MjE0MjM3OWM2Yjk5ZmU4YzNlYmRmZTBiNzllMmE0MzUyMjhjMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBjbGF6aXNzIDxjbGF6aXNzQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IE1vbiwgMTcgU2VwIDIwMTggMDg6NTI6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW0FSQ10gVXBkYXRlIExJTktfRUhfU1BFQyBsaW5rZXIgc3BlYy4KKworV2l0aCBubyB0cmFpbGluZyBzcGFjZSBpbiBMSU5LX0VIX1NQRUMgbGlua2VyIHNwZWMgZ2V0cyBnZW5lcmF0ZWQgYXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+OC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorJXshcjotLWJ1aWxkLWlkfSAtLWVoLWZyYW1lLWhkciV7aCp9IC4uLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjgtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworb3IgZXZlbiB3b3JzZSBpZiBoYXNoIHN0eWxlIGlzIGFkZGVkOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPjgtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyV7IXI6LS1idWlsZC1pZH0gLS1laC1mcmFtZS1oZHItLWhhc2gtc3R5bGU9c3lzdiAle2gqfSAuLi4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT44LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05vdyBpZiB0aGF0IHNwZWMgaXMgcmVhbGx5IHVzZWQgYnkgTEQgdGhlbiBpdCBmYWlscyBpbmV2aXRhYmx5CitzYXlpbmcgdGhhdCBpdCBkb2Vzbid0IGtub3cgb3B0aW9uICItLWVoLWZyYW1lLWhkci0taGFzaC1zdHlsZT1zeXN2Ii4KKworMjAxOC0wOS0xNyAgQWxleGV5IEJyb2RraW4gIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CisKKwkqIGNvbmZpZy9hcmMvbGludXguaCAoTElOS19FSF9TUEVDKTogQWRkIG1pc3Npbmcgc3BhY2UuCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI2NDM2MSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2djYy5nbnUub3JnL2dpdC8/cD1nY2MuZ2l0O2E9Y29tbWl0O2g9ODkyMTQyMzc5YzZiXQorLS0tCisgZ2NjL2NvbmZpZy9hcmMvbGludXguaCB8IDIgKy0KKyAxIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcmMvbGludXguaCBiL2djYy9jb25maWcvYXJjL2xpbnV4LmgKK2luZGV4IDk2ZDU0OGVhZTM0MS4uNjJlYmU0ZGUwZmM3IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcmMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hcmMvbGludXguaAorQEAgLTk4LDcgKzk4LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICBTaWduYWxpemUgdGhhdCBiZWNhdXNlIHdlIGhhdmUgZmRlLWdsaWJjLCB3ZSBkb24ndCBuZWVkIGFsbCBDIHNoYXJlZCBsaWJzCisgICAgbGlua2VkIGFnYWluc3QgLWxnY2Nfcy4gICovCisgI3VuZGVmIExJTktfRUhfU1BFQworLSNkZWZpbmUgTElOS19FSF9TUEVDICItLWVoLWZyYW1lLWhkciIKKysjZGVmaW5lIExJTktfRUhfU1BFQyAiLS1laC1mcmFtZS1oZHIgIgorICNlbmRpZgorIAorICN1bmRlZiBTVUJUQVJHRVRfQ1BQX1NQRUMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwppbmRleCBhYTNiNTNlLi4wMGZlYzBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCkBAIC00Niw3ICs0Niw3IEBACiAgICAgaWYgZC5nZXRWYXIoJ1RSQU5TTEFURURfVEFSR0VUX0FSQ0gnKSBpbiBbICdwb3dlcnBjJywgJ3Bvd2VycGM2NCcgXSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpIGluIFsgJ2dsaWJjJyBdOgogICAgICAgICByZXR1cm4gIi0td2l0aC1sb25nLWRvdWJsZS0xMjgiCiAgICAgZWxzZToKLSAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtbG9uZy1kb3VibGUtMTI4IgorICAgICAgICByZXR1cm4gIi0td2l0aG91dC1sb25nLWRvdWJsZS0xMjggbGliZ2NjX2N2X3Bvd2VycGNfZmxvYXQxMjg9bm8iCiAgICAgcmV0dXJuICIiCiAKIGRlZiBnZXRfZ2NjX211bHRpYXJjaF9zZXR0aW5nKGJiLCBkKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggYmRkNmY3ZS4uMmYzMmQzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTE2MCwxMSArMTYwLDYgQEAKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIgogCi1FWFRSQV9PRUNPTkYgKz0gIlwKLSAgICAtLXdpdGgtbXBmcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsYXlvdXRfZXhlY19wcmVmaXh9IFwKLSAgICAtLXdpdGgtbXBjPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xheW91dF9leGVjX3ByZWZpeH0gXAotIgotCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtYmFyZW1ldGFsID0gIiAtLXdpdGhvdXQtaGVhZGVycyIKIEVYVFJBX09FQ09ORl9yZW1vdmVfbGliYy1iYXJlbWV0YWwgPSAiLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCIKIEVYVFJBX09FQ09ORl9yZW1vdmVfbGliYy1iYXJlbWV0YWwgPSAiLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjUzYzVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl84LjIuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKK3JlcXVpcmUgZ2NjLWNyb3NzLWNhbmFkaWFuLmluYworCisKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF84LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM3M2U1YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF84LjIuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc18ke1BWfS5iYgorcmVxdWlyZSBnY2MtY3Jvc3MtaW5pdGlhbC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKaW5kZXggMWUxODRhNi4uODliMTk2OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKQEAgLTI4LDEzICsyOCwxMyBAQAogIgogCiBFWFRSQV9PRUNPTkYgKz0gIlwKLSAgICAtLXdpdGgtbXBmcj0ke1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9IFwKICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAogIgogCiBERVBFTkRTX3JlbW92ZV9saWJjLWJhcmVtZXRhbCA6PSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9bGliYy1mb3ItZ2NjIgogRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLWJhcmVtZXRhbCA9ICIgLS13aXRob3V0LWhlYWRlcnMiCiBFWFRSQV9PRUNPTkZfcmVtb3ZlX2xpYmMtYmFyZW1ldGFsID0gIi0tZW5hYmxlLXRocmVhZHM9cG9zaXgiCitFWFRSQV9PRUNPTkZfcmVtb3ZlX2xpYmMtbmV3bGliID0gIi0tZW5hYmxlLXRocmVhZHM9cG9zaXgiCiAKIEVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCiAgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0JHt0YXJnZXRfaW5jbHVkZWRpcn0vYysrLyR7QklOVn0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc184LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDNjY2EwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc184LjIuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKK3JlcXVpcmUgZ2NjLWNyb3NzLmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDkwZTExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzguMi5iYgpAQCAtMCwwICsxLDMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfJHtQVn0uYmIKK3JlcXVpcmUgZ2NjLWNyb3Nzc2RrLWluaXRpYWwuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka184LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBhNmM0ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOC4yLmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfJHtQVn0uYmIKK3JlcXVpcmUgZ2NjLWNyb3Nzc2RrLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKaW5kZXggNzYyOWZhNS4uOWU3ZTdjNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCkBAIC0xNywxMyArMTcsMTYgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbGludXhzdGRiYXNlID0gIiAtLWVuYWJsZS1jbG9jYWxlPWdudSIKIAogUlVOVElNRUxJQklUTSA9ICJsaWJpdG0iCitSVU5USU1FTElCSVRNX2FyYyA9ICIiCiBSVU5USU1FTElCSVRNX21pcHNhcmNoID0gIiIKIFJVTlRJTUVMSUJJVE1fbmlvczIgPSAiIgogUlVOVElNRUxJQklUTV9taWNyb2JsYXplID0gIiIKIFJVTlRJTUVMSUJJVE1fcmlzY3YzMiA9ICIiCiBSVU5USU1FTElCSVRNX3Jpc2N2NjQgPSAiIgorUlVOVElNRUxJQlNTUCA/PSAiIgorUlVOVElNRUxJQlNTUF9taW5ndzMyID89ICJsaWJzc3AiCiAKLVJVTlRJTUVUQVJHRVQgPSAibGlic3NwIGxpYnN0ZGMrKy12MyBsaWJnb21wIGxpYmF0b21pYyAke1JVTlRJTUVMSUJJVE19IFwKK1JVTlRJTUVUQVJHRVQgPSAiJHtSVU5USU1FTElCU1NQfSBsaWJzdGRjKystdjMgbGliZ29tcCBsaWJhdG9taWMgJHtSVU5USU1FTElCSVRNfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdGT1JUUkFOJywgWycsZm9ydHJhbicsJyxmNzcnXSwgJ2xpYnF1YWRtYXRoJywgJycsIGQpfSBcCiAiCiBSVU5USU1FVEFSR0VUX2FwcGVuZF94ODYgPSAiIGxpYm1weCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYzdhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOC4yLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2MtcnVudGltZS5pbmMKKworIyBEaXNhYmxlIGlmdW5jcyBmb3IgbGliYXRvbWljIG9uIGFybSBjb25mbGljdHMgLW1hcmNoLy1tY3B1CitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgbGliYXRfY3ZfaGF2ZV9pZnVuYz1ubyAiCisKK0ZJTEVTX2xpYmdvbXAtZGV2ICs9ICJcCisgICAgJHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS9vcGVuYWNjLmggXAorIgorCisjIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NnQgZmFpbHMKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKaW5kZXggM2I3ZTAwMi4uZTVlODQ1MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCkBAIC05NCw2ICs5NCw3IEBACiBGSUxFU19saWJsc2FuLWRldiArPSAiXAogICAgICR7bGliZGlyfS9saWJsc2FuLnNvIFwKICAgICAke2xpYmRpcn0vbGlibHNhbi5sYSBcCisgICAgJHtsaWJkaXJ9L2xpYmxzYW5fcHJlaW5pdC5vIFwKICIKIEZJTEVTX2xpYmxzYW4tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlibHNhbi5hIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2M3MDU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzguMi5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBnY2Mtc2FuaXRpemVycy5pbmMKKworIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGFybXY1dCBmYWlscyB3aXRoCisjIHNhbml0aXplcl9saW51eC5zOjU3NDk6IEVycm9yOiBsbyByZWdpc3RlciByZXF1aXJlZCAtLSBgbGRyIGlwLFtzcF0sIzgnCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4OTBmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV84LjIuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZS5pbmMKKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggYjZlMzFmNS4uYmMyMjM2ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwpAQCAtOSwxMyArOSwxNyBAQAogCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4c3RkYmFzZSA9ICIgLS1lbmFibGUtY2xvY2FsZT1nbnUiCiAKLSMgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IGFmZmVjdCB0aGUgQUJJIGluIGxpYnJhcmllcyBidWlsdAotIyB3aXRoIFRVTkVfQ0NBUkdTIGluIGdjYy1ydW50aW1lLiAgTWFrZSB0aGUgY29tcGlsZXIgZGVmYXVsdCB0byBhCi0jIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlLiAgYXJtdjYgYW5kIGFybXY3YSBjb3ZlciB0aGUgbWluaW11bSB0dW5lCi0jIGZlYXR1cmVzIHVzZWQgaW4gT0UuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgorIyBDb25maWd1cmUgZ2NjIHJ1bm5pbmcgb24gdGhlIHRhcmdldCB0byBkZWZhdWx0IHRvIGFuIGFyY2hpdGVjdHVyZSB3aGljaCB3aWxsCisjIGJlIGNvbXBhdGlibGUgd2l0aCB0aGF0IG9mIGdjYy1ydW50aW1lICh3aGljaCBpcyBjcm9zcyBjb21waWxlZCB0byBiZSB0YXJnZXQKKyMgc3BlY2lmaWMpLiBGb3IgZXhhbXBsZSwgZm9yIEFSTSwgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IG1heQorIyBhZmZlY3QgdGhlIEFCSSBpbiB0aGUgZ2NjLXJ1bnRpbWUgbGlicy4gU2luY2Ugd2UgY2FuJ3QgcmVseSBvbiBnY2Mgb24gdGhlCisjIHRhcmdldCB0byBhbHdheXMgYmUgcGFzc2VkIC1tYXJjaCBldGMsIGl0cyBidWlsdC1pbiBkZWZhdWx0IG5lZWRzIHRvIGJlIHNhZmUuCisKK0FSTUZQQVJDSEVYVCA/PSAiIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiR7QVJNRlBBUkNIRVhUfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hJHtBUk1GUEFSQ0hFWFR9IgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12N3ZlJHtBUk1GUEFSQ0hFWFR9IgogCiAjIGxpYmNjMSByZXF1cmVzIGdjY19jdl9vYmpkdW1wIHdoZW4gY3Jvc3MgYnVpbGQsIGJ1dCBnY2NfY3Zfb2JqZHVtcCBpcwogIyBzZXQgaW4gc3ViZGlyIGdjYywgc28gc3ViZGlyIGxpYmNjMSBjYW4ndCB1c2UgaXQsIGV4cG9ydCBpdCBoZXJlIHRvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkOTM1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzguMi5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKK3JlcXVpcmUgZ2NjLXRhcmdldC5pbmMKKworIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjR0IGFybXY1dCBmYWlscyB3aXRoCisjIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0Mzg6KC50ZXh0LnVubGlrZWx5KzB4MmZhKTogcmVsb2NhdGlvbiB0cnVuY2F0ZWQgdG8gZml0OiBSX0FSTV9USE1fQ0FMTCBhZ2FpbnN0IHN5bWJvbCBgZmFuY3lfYWJvcnQoY2hhciBjb25zdCosIGludCwgY2hhciBjb25zdCopJyBkZWZpbmVkIGluIC5nbHVlXzcgc2VjdGlvbiBpbiBsaW5rZXIgc3R1YnMKKyMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQ0MjooLnRleHQudW5saWtlbHkrMHgzMTgpOiBhZGRpdGlvbmFsIHJlbG9jYXRpb24gb3ZlcmZsb3dzIG9taXR0ZWQgZnJvbSB0aGUgb3V0cHV0CitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitBUk1GUEFSQ0hFWFRfYXJtdjYgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCitBUk1GUEFSQ0hFWFRfYXJtdjdhID0gIiR7QCcrZnAnIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ2hhcmQnIGVsc2UgJyd9IgorQVJNRlBBUkNIRVhUX2FybXY3dmUgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1jb21tb24uaW5jCmluZGV4IDg0OGE0NzYuLmQ5NTk1NjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWNvbW1vbi5pbmMKQEAgLTQ3LDggKzQ3LDEzIEBACiBkb19pbnN0YWxsX2FwcGVuZF9saWJjLWJhcmVtZXRhbCAoKSB7CiAJcm1kaXIgJHtEfSR7YmFzZV9saWJkaXJ9CiB9Citkb19pbnN0YWxsX2FwcGVuZF9saWJjLW5ld2xpYiAoKSB7CisJcm1kaXIgJHtEfSR7YmFzZV9saWJkaXJ9Cit9CiAKKyMgTm8gcnBtIHBhY2thZ2UgaXMgYWN0dWFsbHkgY3JlYXRlZCBidXQgLWRldiBkZXBlbmRzIG9uIGl0LCBhdm9pZCBkbmYgZXJyb3IKIFJERVBFTkRTXyR7UE59LWRldl9saWJjLWJhcmVtZXRhbCA9ICIiCitSREVQRU5EU18ke1BOfS1kZXZfbGliYy1uZXdsaWIgPSAiIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF84LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM2OThjMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF84LjIuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKK3JlcXVpcmUgbGliZ2NjLWluaXRpYWwuaW5jCisKKyMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjEwYTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzguMi5iYgpAQCAtMCwwICsxLDUgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBsaWJnY2MuaW5jCisKKyMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWRkOGI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzguMi5iYgpAQCAtMCwwICsxLDMgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYworcmVxdWlyZSBsaWJnZm9ydHJhbi5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuMS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1Mjk5Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTguMC4xLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyAmIExHUEx2MiAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotCQkgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYWNrYWdlX2RldmVsX2dkYl9wYXRjaGVzXzEyMC1zaWdwcm9jbWFzay1pbnZhbGlkLWNhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMi1VbmJyZWFrLUdEQnNlcnZlci1idWlsZC1mb3IteDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ4Y2FjNTI3ZTZmMzAxOGI4NjVlY2UwMjFlOTcyM2FjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkYmQ1ZjkzZTM2YmEyODE1YWQwZWZhYjAzMGRjZDBjN2IyMTFkN2IzNTNhNDBhNTNmNGMwMmQ3ZDU2Mjk1ZTMiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4yLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4yLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmIwMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjIuaW5jCkBAIC0wLDAgKzEsMjMgQEAKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MyAmIExHUEx2MiAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQkgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2dkYi9nZGItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiYjVhNDlkYmZmMDBkOWE4N2ZiZTExNGQxNGIzMTAxYzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNhNDQxYTI5YzdjODk3MjBiNzM0ZTVhOWM2Mjg5YzBhMDZiZTdlMGM3NmVmNTM4ZjdiYmNlZjM4OTM0N2MzOSIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCmluZGV4IDAzOTU3N2IuLmZhNjQ5MzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNvbW1vbi5pbmMKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkdOVSBkZWJ1Z2dlciIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGIvIgogU0VDVElPTiA9ICJkZXZlbCIKLURFUEVORFMgPSAiZXhwYXQgemxpYiBuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYgJHtMVFROR1VTVH0iCitERVBFTkRTID0gImV4cGF0IHpsaWIgbmN1cnNlcyB2aXJ0dWFsL2xpYmljb252ICR7TFRUTkdVU1R9IGJpc29uLW5hdGl2ZSIKIAogTFRUTkdVU1QgPSAibHR0bmctdXN0IgogTFRUTkdVU1RfYWFyY2g2NCA9ICIiCkBAIC0yMCw3ICsyMCw3IEBACiAKIEVYUEFUID0gIi0td2l0aC1leHBhdCAtLXdpdGgtbGliZXhwYXQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0iCiAKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2RidGsgLS1kaXNhYmxlLXR1aSAtLWRpc2FibGUteCAtLWRpc2FibGUtd2Vycm9yIFwKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2RidGsgLS1kaXNhYmxlLXggLS1kaXNhYmxlLXdlcnJvciBcCiAgICAgICAgICAgICAgICAgLS13aXRoLWN1cnNlcyAtLWRpc2FibGUtbXVsdGlsaWIgLS1kaXNhYmxlLXNpbSBcCiAgICAgICAgICAgICAgICAgLS13aXRob3V0LWx6bWEgLS13aXRob3V0LWd1aWxlIFwKICAgICAgICAgICAgICAgICAke0dEQlBST1BSRUZJWH0gJHtFWFBBVH0gXApAQCAtMzYsNiArMzYsOCBAQAogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXN5c3RlbS1yZWFkbGluZSwtLXdpdGhvdXQtc3lzdGVtLXJlYWRsaW5lLHJlYWRsaW5lIgogUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0td2l0aC1weXRob249JHtXT1JLRElSfS9weXRob24sLS13aXRob3V0LXB5dGhvbixweXRob24zLHB5dGhvbjMgcHl0aG9uMy1jb2RlY3MiCiBQQUNLQUdFQ09ORklHW2JhYmVsdHJhY2VdID0gIi0td2l0aC1iYWJlbHRyYWNlLC0td2l0aG91dC1iYWJlbHRyYWNlLGJhYmVsdHJhY2UiCisjIG5jdXJzZXMgaXMgYWxyZWFkeSBhIGhhcmQgREVQRU5EUywgYnV0IHdvdWxkIGJlIGFkZGVkIGhlcmUgaWYgaXQgd2VyZW4ndAorUEFDS0FHRUNPTkZJR1t0dWldID0gIi0tZW5hYmxlLXR1aSwtLWRpc2FibGUtdHVpIgogCiBHREJQUk9QUkVGSVggPSAiLS1wcm9ncmFtLXByZWZpeD0nJyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMC4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzguMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMC4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzguMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKaW5kZXggNGYwNmQ0Ni4uMmM4NzgzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCkBAIC0xLDMwICsxLDI5IEBACi1Gcm9tIDkxZGEwNDU4YjMzMzI0OWViOWMyZjRjMWYxZTUzZmE0YmMwODVjYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZhZTBmYjliNDkwNDdjZWYzMzgyNjJlMzAyNzNmNjMxMzlmZDEyNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxOSBKYW4gMjAxNiAxODoxODo1MiAtMDgwMAotU3ViamVjdDogW1BBVENIIDAxLzEwXSBpbmNsdWRlIHN5cy90eXBlcy5oIGZvciBtb2RlX3QKK1N1YmplY3Q6IFtQQVRDSCAwMS8xMV0gaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgbW9kZV90CiAKIG1vZGVfdCBpcyB1c2VkIGluIHRhcmdldC5oLCBzbyB3ZSBuZWVkIHRvIGluY2x1ZGUgc3lzL3R5cGVzLmggdG8gZ2V0IHRoZQogZGVmaW50aW9uCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KICBnZGIvZ2Ric2VydmVyL3RhcmdldC5oIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL3RhcmdldC5oIGIvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAotaW5kZXggM2NjMmJjNGJhYi4uZTZiMTliMDZiOSAxMDA2NDQKK2luZGV4IGZjZTU0ZTA1YWQuLjI3OGNlZTc4YTggMTAwNjQ0CiAtLS0gYS9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCiArKysgYi9nZGIvZ2Ric2VydmVyL3RhcmdldC5oCi1AQCAtMjgsNiArMjgsNyBAQAotICNpbmNsdWRlICJ0YXJnZXQvd2FpdHN0YXR1cy5oIgorQEAgLTI5LDYgKzI5LDcgQEAKICAjaW5jbHVkZSAibWVtLWJyZWFrLmgiCiAgI2luY2x1ZGUgImJ0cmFjZS1jb21tb24uaCIKKyAjaW5jbHVkZSA8dmVjdG9yPgogKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAKICBzdHJ1Y3QgZW1pdF9vcHM7CiAgc3RydWN0IGJ1ZmZlcjsKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKaW5kZXggODNjNGRkZS4uNjA0NzllNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5Y2U2MWY5N2I3NzU4Nzk0ZjA2ODk0ZTkzNGZiYjI1NmZmNjIxNjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMDIwOWYyODI3MTZiZWQyYzIzMGM3YjQ5NmZiY2M3YWY1MDNkMGNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjoyNzo1NSArMDAwMAotU3ViamVjdDogW1BBVENIIDAyLzEwXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMV0gbWFrZSBtYW4gaW5zdGFsbCByZWxhdGl2ZSB0byBERVNURElSCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCkBAIC0xMSw3ICsxMSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zaW0vY29tbW9uL01ha2VmaWxlLmluIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotaW5kZXggMzk0NDk1NmI1ZC4uYWEzNTVlODM0NyAxMDA2NDQKK2luZGV4IDIyN2U0Y2ZiYzIuLjhjMzQ1N2UwYmQgMTAwNjQ0CiAtLS0gYS9zaW0vY29tbW9uL01ha2VmaWxlLmluCiArKysgYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCiBAQCAtMzUsNyArMzUsNyBAQCB0b29sZGlyID0gJChsaWJkaXIpLyQodGFyZ2V0X2FsaWFzKQpAQCAtMjQsNSArMjQsNSBAQAogIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKICAKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCmluZGV4IDZmNzk1NWIuLmNmNTRjNzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGNhMGVmMDZiNzMyMDkxMmRmMzUwZTczMGU2M2Y5YmFmZGFhNmVhNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIxNGE1N2Q5MGUxY2RkODE0NGNkYTRjODg4MmJkMWRiNDRkMjZkYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAwNjozMDowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzEwXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMV0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCiAKIFRoaXMgaGVscHMgYnVpbGRpbmcgZ2RiIG9uIG1pcHM2NCBvbiBtdXNsLCBzaW5jZQogbXVzbCBkb2VzIG5vdCBwcm92aWRlIHNnaWRlZnMuaCB0aGlzIGRlZmluZSBpcwpAQCAtOSwyOSArOSwyNyBAQAogY2FzZSBnY2MgZW1pdHMgaXQgYXMgYnVpbHQtaW4gZGVmaW5lIGFuZCBoZW5jZQogaXQgd29ya3Mgb2sgZm9yIG1pcHMzMgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorIGdkYi9taXBzLWxpbnV4LW5hdC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYwotaW5kZXggODA0MWQ4NGJlNy4uZjJkZjFiOTkwNyAxMDA2NDQKK2luZGV4IDMyODM1YzE2YjIuLjY4YTc1ODdhZjIgMTAwNjQ0CiAtLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYwogKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLUBAIC00Nyw2ICs0NywxMSBAQAorQEAgLTQxLDYgKzQxLDEwIEBACisgI2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCiAgI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1CiAgI2VuZGlmCi0gCiArLyogbXVzbCBkb2VzIG5vdCBkZWZpbmUgYW5kIHJlbGllcyBvbiBjb21waWxlciBidWlsdC1pbiBtYWNyb3MgZm9yIGl0ICAgKi8KICsjaWZuZGVmIF9BQklPMzIKICsjZGVmaW5lIF9BQklPMzIgMQogKyNlbmRpZgotKwotIC8qIEFzc3VtZSB0aGF0IHdlIGhhdmUgUFRSQUNFX0dFVFJFR1MgZXQgYWwuIHN1cHBvcnQuICBJZiB3ZSBkbyBub3QsCi0gICAgd2UnbGwgY2xlYXIgdGhpcyBhbmQgdXNlIFBUUkFDRV9QRUVLVVNFUiBpbnN0ZWFkLiAgKi8KLSBzdGF0aWMgaW50IGhhdmVfcHRyYWNlX3JlZ3NldHMgPSAxOworIAorIGNsYXNzIG1pcHNfbGludXhfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBsaW51eF9uYXRfdHJhZF90YXJnZXQKKyB7CiAtLSAKLTIuMTMuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKaW5kZXggMzU3ZGIyNS4uYmJlMDAyMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDBmNmQ3MTExOGNhOTE0MDAyZmNhZDc4ZDJjOGE1MTgyMjNkMDZiZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFkZDVjNDQ0NzRiMDFkODRkZTYwZmFkZWQ5NjBmZWY0YTBhODdlNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxODozMjoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDA0LzEwXSBwcGMvcHRyYWNlOiBEZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3Mgb24gIUdMSUJDCitTdWJqZWN0OiBbUEFUQ0ggMDQvMTFdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMKICBzeXN0ZW1zCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwpAQCAtMTMsNyArMTMsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotaW5kZXggMzNhOWZlYjEyYy4uMWE5MTQxZmFlZiAxMDA2NDQKK2luZGV4IDQ3NDI4YzE1MjkuLjg0MWE1ZTAyYjkgMTAwNjQ0CiAtLS0gYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwogKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKIEBAIC0yMSw3ICsyMSwxMyBAQApAQCAtMjgsMTAgKzI4LDEwIEBACiArIyB1bmRlZiBwdF9yZWdzCiArI2VuZGlmCiAgCi0gI2luY2x1ZGUgIm5hdC9wcGMtbGludXguaCIKLSAjaW5jbHVkZSAibGludXgtcHBjLXRkZXNjLmgiCisgI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LWNvbW1vbi5oIgorICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC10ZGVzYy5oIgogZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCi1pbmRleCA1ODM3ZWExNzY3Li43MjMzOTI5MTkyIDEwMDY0NAoraW5kZXggM2Q0ZDRmZGM1Ni4uNWI5M2FmOGQzYSAxMDA2NDQKIC0tLSBhL2dkYi9uYXQvcHBjLWxpbnV4LmgKICsrKyBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKIEBAIC0xOCw3ICsxOCwxMyBAQApAQCAtNDksNSArNDksNSBAQAogIAogIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmluZGV4IGNiMWI3YWIuLmY4NDBjYWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA2MGFjNjhmNjAxODg1ZWE2NDgwMjI5YTVjOGE4OWEwMjU3ZGEzNzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMTU0ODZiNTNhN2E2ZGZjYTA2NGNkMmU5MTk2YTlkZTZlZDZmMGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjozMToxMiArMDAwMAotU3ViamVjdDogW1BBVENIIDA1LzEwXSBBZGQgc3VwcG9ydCBmb3IgUmVuZXNhcyBTSCAoc2g0KSBhcmNoaXRlY3R1cmUuCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIEFkZCBzdXBwb3J0IGZvciBSZW5lc2FzIFNIIChzaDQpIGFyY2hpdGVjdHVyZS4KIAogZ2RiICg3LjQtMX5jdnMyMDExMTExNy4yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CiAgLgpAQCAtMTUsMzUgKzE1LDM1IEBACiAtLS0KICBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0ICsrLS0KLSBnZGIvc2gtdGRlcC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrKworIGdkYi9zaC1saW51eC10ZGVwLmMgICAgICAgICAgICAgICAgICB8IDUxOSArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvc2gtdGRlcC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTMgKystCisgZ2RiL3NoLXRkZXAuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5ICsrKwogIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCB8ICAgNSArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYyAgICAgICAgIHwgICAzICstCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMgICAgIHwgICAzICsKICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyAgICAgfCAgIDQgKwogIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgICAgICB8ICAgMyArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgICAgIHwgICA0ICsKLSAxMSBmaWxlcyBjaGFuZ2VkLCA2MTggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCisgMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCA4YmU3M2JhNDIzLi5lMjg3ZmY2YTJlIDEwMDY0NAoraW5kZXggYzc2YTRlNDM5NC4uOTIxZmRhZGI0OSAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMjYzOCw2ICsyNjM4LDggQEAgQUxMREVQRklMRVMgPSBcCitAQCAtMjMyNiw2ICsyMzI2LDggQEAgQUxMREVQRklMRVMgPSBcCisgCXNoLW5ic2QtbmF0LmMgXAogIAlzaC1uYnNkLXRkZXAuYyBcCiAgCXNoLXRkZXAuYyBcCi0gCXNoNjQtdGRlcC5jIFwKICsJc2gtbGludXgtdGRlcC5jIFwKICsJc2gtbGludXgtbmF0LmMgXAogIAlzb2wyLXRkZXAuYyBcCiAgCXNvbGliLWFpeC5jIFwKICAJc29saWItc3B1LmMgXAogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuaG9zdCBiL2dkYi9jb25maWd1cmUuaG9zdAotaW5kZXggZDc0ZmQwNDkzNC4uYmUxMmRlMTQ0NiAxMDA2NDQKK2luZGV4IDIzYTJmMTYzOTkuLjM5YTg4NmVjNTMgMTAwNjQ0CiAtLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKICsrKyBiL2dkYi9jb25maWd1cmUuaG9zdAotQEAgLTE1MCw2ICsxNTAsNyBAQCBwb3dlcnBjKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKK0BAIC0xNTMsNiArMTUzLDcgQEAgcmlzY3YqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OwogIAogIHMzOTAqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKICAKQEAgLTUyLDcgKzUyLDcgQEAKICAJCQlnZGJfaG9zdD1uYnNkIDs7CiAgc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7CiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLWluZGV4IGM1Yzc0NWQyMTguLjg0ZTUzOWFhZDMgMTAwNjQ0CitpbmRleCBkYjkzOTY3OTEwLi40MTA5YzU0OWU4IDEwMDY0NAogLS0tIGEvZ2RiL3NoLWxpbnV4LXRkZXAuYwogKysrIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwogQEAgLTE4LDE0ICsxOCwzNyBAQApAQCAtNjAwLDcgKzYwMCw3IEBACiAgCiAgICAvKiBHTlUvTGludXggdXNlcyBTVlI0LXN0eWxlIHNoYXJlZCBsaWJyYXJpZXMuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmMgYi9nZGIvc2gtdGRlcC5jCi1pbmRleCAyYzJiMjY4NDdkLi4xNGY1MjgxZWQ0IDEwMDY0NAoraW5kZXggZmU2NGNmOTc5YS4uNDQxNzExNGNkMCAxMDA2NDQKIC0tLSBhL2dkYi9zaC10ZGVwLmMKICsrKyBiL2dkYi9zaC10ZGVwLmMKIEBAIC0yMSw2ICsyMSw5IEBACkBAIC02MTMsMTUgKzYxMyw3IEBACiAgI2luY2x1ZGUgImZyYW1lLmgiCiAgI2luY2x1ZGUgImZyYW1lLWJhc2UuaCIKICAjaW5jbHVkZSAiZnJhbWUtdW53aW5kLmgiCi1AQCAtMzUsNiArMzgsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCi0gI2luY2x1ZGUgInJlZ2NhY2hlLmgiCi0rI2luY2x1ZGUgInJlZ3NldC5oIgotICNpbmNsdWRlICJkb3VibGVzdC5oIgotICNpbmNsdWRlICJvc2FiaS5oIgotICNpbmNsdWRlICJyZWdncm91cHMuaCIKLUBAIC02OCwyMyArNzIsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0geworQEAgLTY2LDIzICs2OSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7CiAgCiAgc3RhdGljIGNvbnN0IGNoYXIgKnNoX2FjdGl2ZV9jYWxsaW5nX2NvbnZlbnRpb24gPSBzaF9jY19nY2M7CiAgCkBAIC02NDUsNyArNjM3LDcgQEAKICBzdGF0aWMgaW50CiAgc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCiAgewotQEAgLTEwNTIsNyArMTAzOSw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0xMDUwLDcgKzEwMzYsNyBAQCBzaF90cmVhdF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICAgIHJldHVybiAwOwogICAgLyogT3RoZXJ3aXNlIGlmIHRoZSB0eXBlIG9mIHRoYXQgbWVtYmVyIGlzIGZsb2F0LCB0aGUgd2hvbGUgdHlwZSBpcwogICAgICAgdHJlYXRlZCBhcyBmbG9hdC4gICovCkBAIC02NTQsNyArNjQ2LDcgQEAKICAgICAgcmV0dXJuIDE7CiAgICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCiAgICByZXR1cm4gMDsKLUBAIC0xMTAyLDcgKzEwODksNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0xMTAwLDcgKzEwODYsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCiAgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKICAgICAgewpAQCAtNjYzLDcgKzY1NSw3IEBACiAgICAgICAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwogICAgICAgIHZhbCA9IHNoX2p1c3RpZnlfdmFsdWVfaW5fcmVnIChnZGJhcmNoLCBhcmdzW2FyZ251bV0sIGxlbik7CiAgCi1AQCAtMTgyOCw3ICsxODE1LDcgQEAgc2hfZHdhcmYyX2ZyYW1lX2luaXRfcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSwKK0BAIC0xODM0LDcgKzE4MjAsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAogICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOwogIH0KICAKQEAgLTY3Miw3ICs2NjQsNyBAQAogIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQogIHsKICAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7Ci1AQCAtMTg1NSw3ICsxODQyLDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCitAQCAtMTg2MSw3ICsxODQ3LDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCiAgICByZXR1cm4gY2FjaGU7CiAgfQogIApAQCAtNjgxLDcgKzY3Myw3IEBACiAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLUBAIC0xOTIyLDkgKzE5MDksOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorQEAgLTE5MjgsOSArMTkxNCw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCiAgICByZXR1cm4gY2FjaGU7CiAgfQogIApAQCAtNjk0LDcgKzY4Niw3IEBACiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7CiAgICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0gc2hfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotQEAgLTE5MzgsNyArMTkyNSw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAorQEAgLTE5NDQsNyArMTkzMCw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAogICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBGcm9iIHJlZ251bSBzbyB0aGF0IHdlIHB1bGwgdGhlIHZhbHVlIGZyb20KICAgICAgIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8KICAgIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKQpAQCAtNzAzLDcgKzY5NSw3IEBACiAgCiAgICBpZiAocmVnbnVtIDwgU0hfTlVNX1JFR1MgJiYgY2FjaGUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAhPSAtMSkKICAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5ICh0aGlzX2ZyYW1lLCByZWdudW0sCi1AQCAtMjI0Nyw4ICsyMjM0LDggQEAgc2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMjU1LDggKzIyNDEsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCiAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKICB7CkBAIC03MTEsOSArNzAzLDkgQEAKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXA7CiArICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKICAKLSAgIC8qIFNINSBpcyBoYW5kbGVkIGVudGlyZWx5IGluIHNoNjQtdGRlcC5jLiAgKi8KLSAgIGlmIChpbmZvLmJmZF9hcmNoX2luZm8tPm1hY2ggPT0gYmZkX21hY2hfc2g1KQotQEAgLTIyNjQsNiArMjI1MSwxOCBAQCBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0LiAgKi8KKyAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7CitAQCAtMjI2OCw2ICsyMjU0LDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOwogICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKICAKQEAgLTczMiw3ICs3MjQsNyBAQAogICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKICAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwogICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MTgsMTAgKzI0MTcsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKK0BAIC0yNDIyLDEwICsyNDIwLDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTc0Niw3ICs3MzgsNyBAQAogICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IGQxNWVmMDUwZTAuLmM0NjQyY2VmYTQgMTAwNjQ0CitpbmRleCA1OWFjZDM1Yjg4Li5iZTNmOTk4ZDg0IDEwMDY0NAogLS0tIGEvZ2RiL3NoLXRkZXAuaAogKysrIGIvZ2RiL3NoLXRkZXAuaAogQEAgLTIxLDYgKzIxLDEyIEBACkBAIC04MjksNyArODIxLDcgQEAKICAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKICAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLWluZGV4IGUwN2U1NTQzZjIuLmY1ZTYwZTEwMDIgMTAwNjQ0CitpbmRleCA5ODc5ZjBjYTQ3Li5jYmMwZTRkNWY3IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKIEBAIC0xMTYsNiArMTE2LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKQEAgLTkxOCw1ICs5MTAsNSBAQAogIHN0YXRpYyBpbnQgY291bnQgPSAwOwogIAogLS0gCi0yLjEzLjEKKzIuMTguMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCmluZGV4IDhiMTM5NTguLjlhZTNlZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1YzkyZWJkNWUxMTdlNGNmMTE4Yzk4NDE3MWUwNzAzZGZjZmI4Y2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1ZmRkNDJhY2FhOTY1YmU3YzQyMGEzZjJiYTEyYjc3ZWE1MDNjNTliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MjU6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8xMF0gRG9udCBkaXNhYmxlIGxpYnJlYWRsaW5lLmEgd2hlbiB1c2luZyAtLWRpc2FibGUtc3RhdGljCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTFdIERvbnQgZGlzYWJsZSBsaWJyZWFkbGluZS5hIHdoZW4gdXNpbmcgLS1kaXNhYmxlLXN0YXRpYwogCiBJZiBnZGIgaXMgY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zdGF0aWMgdGhlbiB0aGlzIGlzIGR1dGlmdWxseSBwYXNzZWQgdG8KIHJlYWRsaW5lIHdoaWNoIHRoZW4gZGlzYWJsZXMgbGlicmVhZGxpbmUuYSwgd2hpY2ggY2F1c2VzIGEgcHJvYmxlbSB3aGVuIGdkYgpAQCAtMTksNyArMTksNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCAwZDEzZjAzN2QwLi44YmNkODZlMTNmIDEwMDY0NAoraW5kZXggNzUwNjNiNmQxMi4uYzI3YmJlNGQyOCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmRlZgogKysrIGIvTWFrZWZpbGUuZGVmCiBAQCAtMTA1LDcgKzEwNSw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OwpAQCAtMzMsNyArMzMsNyBAQAogIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpbTsgfTsKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSB0ZXhpbmZvOyBub19pbnN0YWxsPSB0cnVlOyB9OwogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDNhY2I4M2I4ZGUuLmUzNDg5MDcxMjggMTAwNjQ0CitpbmRleCA3ODE0ZmU3NDVmLi4zYjBkYzdjYmIwIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCiBAQCAtMjU0NzAsNyArMjU0NzAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CkBAIC00Niw1ICs0Niw1IEBACiAgQGVuZGlmIHJlYWRsaW5lCiAgCiAtLSAKLTIuMTMuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaAppbmRleCAzM2I0YzMwLi44MDhmNGJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxMmEwYjhkODFlMWZkYTZiYTk4YWJkY2U4ZDZmMDlmOTU1NWViY2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkNmUxMmQ1MmY5Y2VmN2Y1ZTYzMTUwMDNjZWFhMjM2ZjZjYzc3MjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YW1jY3VyZHlAZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyOTowNiAtMDcwMAotU3ViamVjdDogW1BBVENIIDA3LzEwXSB1c2UgPGFzbS9zZ2lkZWZzLmg+CitTdWJqZWN0OiBbUEFUQ0ggMDcvMTFdIHVzZSA8YXNtL3NnaWRlZnMuaD4KIAogQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCiAKQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IGYyZGYxYjk5MDcuLmQyNDY2NGNiNTYgMTAwNjQ0CitpbmRleCA2OGE3NTg3YWYyLi4yYjc3MjIxMzcyIDEwMDY0NAogLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKICsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtMzIsNSArMzIsNSBAQAogICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAgI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCmluZGV4IDRmNjRkZWEuLmQzMjM1MmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQzZjI0MGIzOGVlZDdjZDA4ZjZjNTBlYTg5NjU3MmYxMzI3YjQzN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ5Nzg3OGIyNzJiZDdjNDk5M2Y0MjA1OTgzYWU4YjdlY2RkYmNmODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozMTo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDA4LzEwXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgorU3ViamVjdDogW1BBVENIIDA4LzExXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgogCiBEZWZpbmUgV19TVE9QQ09ERSBpZiBub3QgZGVmaW5lZCBhbHJlYWR5CiAKQEAgLTIwLDEwICsyMCwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCA4YjI5MjQ1YzNkLi5mNDI0YWU5NzExIDEwMDY0NAoraW5kZXggNjQwMTVlNzUyMC4uYWNmOTUwYzM4YiAxMDA2NDQKIC0tLSBhL2dkYi9saW51eC1uYXQuYwogKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtNTAyMSw2ICs1MDIxLDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCitAQCAtNDcyNCw2ICs0NzI0LDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCiAgICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55CiAgICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQogICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLwpAQCAtMzMsNyArMzMsNyBAQAogKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCA3ZGQxOGZlZmZmLi4zNTEzN2FiMzRmIDEwMDY0NAoraW5kZXggYTkwYTEyNGQzYS4uNGYzZTY4MTk2MiAxMDA2NDQKIC0tLSBhL2dkYi9uYXQvbGludXgtbmF0LmgKICsrKyBiL2dkYi9uYXQvbGludXgtbmF0LmgKIEBAIC05MCw0ICs5MCw4IEBAIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CkBAIC00Niw1ICs0Niw1IEBACiArCiAgI2VuZGlmIC8qIExJTlVYX05BVF9IICovCiAtLSAKLTIuMTMuMQorMi4xOC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKaW5kZXggMGMxMDNlZi4uYmM0YmMyNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNmNTQwMzZiODkxMDU0MDcyYjNlNDNlYThkYWFhNTdhYTM2N2IyZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJhNmZmYTQ2MWZlNzgxZDQ0ZDZkY2JjMGZiZDU2OTIzN2I0NTBmZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozNTozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDA5LzEwXSBDaGFuZ2Ugb3JkZXIgb2YgQ0ZMQUdTCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKIAogTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQogCkBAIC0xMywxMCArMTMsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1pbmRleCAwMWRmZGMwYjg5Li5mNmFlYmVmNDY0IDEwMDY0NAoraW5kZXggZjJmOGEwODRiZC4uOTUyOGRiMTM2NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0xNDAsNyArMTQwLDcgQEAgQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitAQCAtMTQzLDcgKzE0Myw3IEBAIENQUEZMQUdTID0gQENQUEZMQUdTQAogIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCiAgCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9CiAgSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQpAQCAtMjYsNSArMjYsNSBAQAogICMgTERGTEFHUyBpcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHNldHRpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lCiAgIyB3aGVuIHJ1bm5pbmcgbWFrZS4KIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKaW5kZXggYzk1MDcxMC4uODA5ZDUyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAzZWFkMGRkMTQzNTIxYjBiYTY5YzllNzUzYmM0YTIzNmY5NDQ1YWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxOWI1ODEwNTZjMTcwOWY3ZDI4NzJjZDc2Yjk3NzU0MmEwZmU2MTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CitTdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIHJlc29sdmUgcmVzdHJpY3Qga2V5d29yZCBjb25mbGljdAogCiBHQ0MgZGV0ZWN0cyB0aGF0IHdlIGNhbGwgJ3Jlc3RyaWN0JyBhcyBwYXJhbSBuYW1lIGluIGZ1bmN0aW9uCiBzaWduYXR1cmVzIGFuZCBjb21wbGFpbnMgc2luY2UgYm90aCBwYXJhbXMgYXJlIGNhbGxlZCAncmVzdHJpY3QnCkBAIC0xNSw3ICsxNSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1pbmRleCBkNTM1YTZhNDhiLi43YzM0ZDVhMWFhIDEwMDY0NAoraW5kZXggYjRhMGU0OWM1MC4uZDIyY2VhOWFhZiAxMDA2NDQKIC0tLSBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKICsrKyBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKIEBAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKQEAgLTQ0LDUgKzQ0LDUgQEAKICBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwogICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKIC0tIAotMi4xMy4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2UwMjVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSBiMTk4NTU5NWU0NjcyMWJiMTY4YWMzOGY0Yzg0MWE5MTVjYzJmNzk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWW91c29uZyBaaG91IDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IE1hciAyMDE3IDEwOjM2OjAzICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTFdIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhlIFBPU0lYIGRvY3VtZW50IHNheXMKKworICAgIFRoZSBwdGhyZWFkX3NpZ21hc2soKSBhbmQgc2lncHJvY21hc2soKSBmdW5jdGlvbnMgc2hhbGwgZmFpbCBpZjoKKworICAgIFtFSU5WQUxdCisgICAgVGhlIHZhbHVlIG9mIHRoZSBob3cgYXJndW1lbnQgaXMgbm90IGVxdWFsIHRvIG9uZSBvZiB0aGUgZGVmaW5lZCB2YWx1ZXMuCisKK2FuZCB0aGlzIGlzIGhvdyBtdXNsLWxpYmMgaXMgY3VycmVudGx5IGRvaW5nLiAgRml4IHRoZSBjYWxsIHRvIGJlIHNhZmUKK2FuZCBjb3JyZWN0CisKKyBbMV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvZnVuY3Rpb25zL3B0aHJlYWRfc2lnbWFzay5odG1sCisKK2dkYi9DaGFuZ2VMb2c6CisyMDE3LTAzLTI0ICBZb3Vzb25nIFpob3UgIDx5c3pob3U0dGVjaEBnbWFpbC5jb20+CisKKyAgICAqIGNvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIChzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUpOgorICAgIEZpeCBpbnZhbGlkIHNpZ3Byb2NtYXNrIGNhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbm90IGF1dGhvciwgY2hlcnJ5LXBpY2tlZCBmcm9tIExFREUgaHR0cHM6Ly9idWdzLmxlZGUtcHJvamVjdC5vcmcvaW5kZXgucGhwP2RvPWRldGFpbHMmdGFza19pZD02Mzcmb3BlbmVkZnJvbT0tMSUyQndlZWtdCitTaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8YWRyYXN6aWtAdHljb2ludC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIGIvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCitpbmRleCA1YmI2NjMyMWJiLi42NTk3ZGVjYmM2IDEwMDY0NAorLS0tIGEvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCisrKysgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKK0BAIC00MSw3ICs0MSw3IEBAIHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSAoYm9vbCBxdWlldCkKKyAgIGludCBpOworICAgaW50IHJlczsKKyAKKy0gIHJlcyA9IHNpZ3Byb2NtYXNrICgwLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKKysgIHJlcyA9IHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOworICAgaWYgKHJlcyA9PSAtMSkKKyAgICAgcGVycm9yX3dpdGhfbmFtZSAoKCJzaWdwcm9jbWFzayIpKTsKKyAKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMi1VbmJyZWFrLUdEQnNlcnZlci1idWlsZC1mb3IteDMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4YTNjZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEyLVVuYnJlYWstR0RCc2VydmVyLWJ1aWxkLWZvci14MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotRnJvbSAzZTFlNDAxMDUzZWE1ZjAyYTllOWM2NWFiZGRkMzFhMDNiYWExYmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWWFvIFFpIDx5YW8ucWlAbGluYXJvLm9yZz4KLURhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTI6NTc6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5icmVhayBHREJzZXJ2ZXIgYnVpbGQgZm9yIHgzMgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1XaGVuIEkgdmVyaWZ5IG15IHRhcmdldCBkZXNjcmlwdGlvbiBjaGFuZ2VzLCBJIGJ1aWxkIEdEQiBhbmQgR0RCc2VydmVyIGZvcgoteDMyLCBidXQgaXQgZmFpbGVkLgotCi0vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKLS4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOiBJbiBmdW5jdGlvbiDigJhjb25zdCB0YXJnZXRfZGVzYyogZ2V0X2lwYV90ZGVzYyhpbnQp4oCZOgotLi4vLi4vLi4vYmludXRpbHMtZ2RiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmM6MTg0OjEwOiBlcnJvcjog4oCYWDg2X1RERVNDX0FWWDUxMuKAmSB3YXMgbm90IGRlY2xhcmVkIGluIHRoaXMgc2NvcGUKLSAgICAgY2FzZSBYODZfVERFU0NfQVZYNTEyOgotICAgICAgICAgIF4KLS4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjE4NToxNDogZXJyb3I6IOKAmHRkZXNjX3gzMl9hdng1MTJfbGludXjigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCi0gICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdng1MTJfbGludXg7Ci0gICAgICAgICAgICAgIF4KLS4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOiBJbiBmdW5jdGlvbiDigJh2b2lkIGluaXRpYWxpemVfbG93X3RyYWNlcG9pbnQoKeKAmToKLS4uLy4uLy4uL2JpbnV0aWxzLWdkYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jOjI4MjozNjogZXJyb3I6IOKAmGluaXRfcmVnaXN0ZXJzX3gzMl9hdng1MTJfbGludXjigJkgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCi0gICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV4ICgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotCi1pcGFfeDMyX2xpbnV4X3JlZ29iaiB1c2UgdG8gYmUgdGhlcmUsIGJ1dCByZW1vdmVkIGJ5Ci0yMjA0OTQyNWNlNDAzMjQxMzliZTgyZDlhNmVjNTE4YzQ2YjY1ODE1IGJ5IG1pc3Rha2UuCi0KLWdkYi9nZGJzZXJ2ZXI6Ci0KLTIwMTctMDgtMDQgIFlhbyBRaSAgPHlhby5xaUBsaW5hcm8ub3JnPgotCi0gICAgICAgICogY29uZmlndXJlLnNydiAoaXBhX3gzMl9saW51eF9yZWdvYmopOiBOZXcuCi0gICAgICAgICogbGludXgtYW1kNjQtaXBhLmMgKGdldF9pcGFfdGRlc2MpOiBVc2UgWDg2X1RERVNDX0FWWF9BVlg1MTIKLSAgICAgICAgaW5zdGVhZCBvZiBYODZfVERFU0NfQVZYNTEyLgotICAgICAgICAoaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCk6IENhbGwKLSAgICAgICAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXguCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2E9Y29tbWl0ZGlmZjtoPWYwMmZkNzc0NWQwMDNkNjVmZDNiOTgxNjE4ZTA3Yjg3NGI3MjFkNzldCi0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBDaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgOCArKysrKysrKwotIGdkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydiAgICAgfCAxICsKLSBnZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jIHwgNiArKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDRhYzJkNjMuLmI1YjgyMjggMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKyAyMDE3LTA4LTA0ICBZYW8gUWkgIDx5YW8ucWlAbGluYXJvLm9yZz4KLSsKLSsJKiBjb25maWd1cmUuc3J2IChpcGFfeDMyX2xpbnV4X3JlZ29iaik6IE5ldy4KLSsJKiBsaW51eC1hbWQ2NC1pcGEuYyAoZ2V0X2lwYV90ZGVzYyk6IFVzZSBYODZfVERFU0NfQVZYX0FWWDUxMgotKwlpbnN0ZWFkIG9mIFg4Nl9UREVTQ19BVlg1MTIuCi0rCShpbml0aWFsaXplX2xvd190cmFjZXBvaW50KTogQ2FsbAotKwlpbml0X3JlZ2lzdGVyc194MzJfYXZ4X2F2eDUxMl9saW51eC4KLSsKLSAyMDE3LTA0LTEzICBBbmRyZXcgSmVubmVyICA8YW5kcmV3QGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogY29uZmlnLnN1YjogU3luYyB3aXRoIG1hc3RlciB2ZXJzaW9uIGluIGNvbmZpZyBwcm9qZWN0LgotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydiBiL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgotaW5kZXggZDAwZDllMi4uNTY5NTFjOCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgotKysrIGIvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuc3J2Ci1AQCAtMzEsNiArMzEsNyBAQCBzcnZfYW1kNjRfbGludXhfcmVnb2JqPSJhbWQ2NC1saW51eC5vIGFtZDY0LWF2eC1saW51eC5vIGFtZDY0LWF2eC1hdng1MTItbGludXgubwotIAotIGlwYV9pMzg2X2xpbnV4X3JlZ29iaj0iaTM4Ni1saW51eC1pcGEubyBpMzg2LWF2eC1saW51eC1pcGEubyAgaTM4Ni1hdngtbXB4LWxpbnV4LWlwYS5vIGkzODYtYXZ4LWF2eDUxMi1saW51eC1pcGEubyBpMzg2LWF2eC1tcHgtYXZ4NTEyLXBrdS1saW51eC1pcGEubyBpMzg2LW1weC1saW51eC1pcGEubyBpMzg2LW1teC1saW51eC1pcGEubyIKLSBpcGFfYW1kNjRfbGludXhfcmVnb2JqPSJhbWQ2NC1saW51eC1pcGEubyBhbWQ2NC1hdngtbGludXgtaXBhLm8gYW1kNjQtYXZ4LW1weC1saW51eC1pcGEubyBhbWQ2NC1hdngtYXZ4NTEyLWxpbnV4LWlwYS5vIGFtZDY0LWF2eC1tcHgtYXZ4NTEyLXBrdS1saW51eC1pcGEubyBhbWQ2NC1tcHgtbGludXgtaXBhLm8iCi0raXBhX3gzMl9saW51eF9yZWdvYmo9IngzMi1saW51eC1pcGEubyB4MzItYXZ4LWxpbnV4LWlwYS5vIHgzMi1hdngtYXZ4NTEyLWxpbnV4LWlwYS5vIgotIGlwYV9wcGNfbGludXhfcmVnb2JqPSJwb3dlcnBjLTMybC1pcGEubyBwb3dlcnBjLWFsdGl2ZWMzMmwtaXBhLm8gcG93ZXJwYy1jZWxsMzJsLWlwYS5vIHBvd2VycGMtdnN4MzJsLWlwYS5vIHBvd2VycGMtaXNhMjA1LTMybC1pcGEubyBwb3dlcnBjLWlzYTIwNS1hbHRpdmVjMzJsLWlwYS5vIHBvd2VycGMtaXNhMjA1LXZzeDMybC1pcGEubyBwb3dlcnBjLWU1MDBsLWlwYS5vIHBvd2VycGMtNjRsLWlwYS5vIHBvd2VycGMtYWx0aXZlYzY0bC1pcGEubyBwb3dlcnBjLWNlbGw2NGwtaXBhLm8gcG93ZXJwYy12c3g2NGwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtNjRsLWlwYS5vIHBvd2VycGMtaXNhMjA1LWFsdGl2ZWM2NGwtaXBhLm8gcG93ZXJwYy1pc2EyMDUtdnN4NjRsLWlwYS5vIgotIAotIHNydl9pMzg2XzMyYml0X3htbGZpbGVzPSJpMzg2LzMyYml0LWNvcmUueG1sIGkzODYvMzJiaXQtc3NlLnhtbCBpMzg2LzMyYml0LWF2eC54bWwgaTM4Ni8zMmJpdC1hdng1MTIueG1sIGkzODYvMzJiaXQtbXB4LnhtbCBpMzg2LzMyYml0LXBrZXlzLnhtbCIKLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWFtZDY0LWlwYS5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hbWQ2NC1pcGEuYwotaW5kZXggNjdmMzZjMi4uNjgzMzM5YiAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtYW1kNjQtaXBhLmMKLUBAIC0xODEsOCArMTgxLDggQEAgZ2V0X2lwYV90ZGVzYyAoaW50IGlkeCkKLSAgICAgICByZXR1cm4gdGRlc2NfeDMyX2xpbnV4OwotICAgICBjYXNlIFg4Nl9UREVTQ19BVlg6Ci0gICAgICAgcmV0dXJuIHRkZXNjX3gzMl9hdnhfbGludXg7Ci0tICAgIGNhc2UgWDg2X1RERVNDX0FWWDUxMjoKLS0gICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eDUxMl9saW51eDsKLSsgICAgY2FzZSBYODZfVERFU0NfQVZYX0FWWDUxMjoKLSsgICAgICByZXR1cm4gdGRlc2NfeDMyX2F2eF9hdng1MTJfbGludXg7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLUBAIC0yNzksNyArMjc5LDcgQEAgaW5pdGlhbGl6ZV9sb3dfdHJhY2Vwb2ludCAodm9pZCkKLSAjaWYgZGVmaW5lZCBfX0lMUDMyX18KLSAgIGluaXRfcmVnaXN0ZXJzX3gzMl9saW51eCAoKTsKLSAgIGluaXRfcmVnaXN0ZXJzX3gzMl9hdnhfbGludXggKCk7Ci0tICBpbml0X3JlZ2lzdGVyc194MzJfYXZ4NTEyX2xpbnV4ICgpOwotKyAgaW5pdF9yZWdpc3RlcnNfeDMyX2F2eF9hdng1MTJfbGludXggKCk7Ci0gI2Vsc2UKLSAgIGluaXRfcmVnaXN0ZXJzX2FtZDY0X2xpbnV4ICgpOwotICAgaW5pdF9yZWdpc3RlcnNfYW1kNjRfYXZ4X2xpbnV4ICgpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2dkYi1GaXgtaWE2NC1kZWZpbmluZy1UUkFQX0hXQktQVC1iZWZvcmUtaW5jbHVkaW5nLWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOTdkZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi9nZGItRml4LWlhNjQtZGVmaW5pbmctVFJBUF9IV0JLUFQtYmVmb3JlLWluY2x1ZGluZy1nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBiMDMzYTk2NjMwNTNlZWQ4N2NiNTcyMzk3MTc2NzQ3Yjg4ZTlhNjk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFtZXMgQ2xhcmtlIDxqcnRjMjdAanJ0YzI3LmNvbT4KLURhdGU6IEZyaSwgMTkgSmFuIDIwMTggMTc6MjI6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2RiOiBGaXggaWE2NCBkZWZpbmluZyBUUkFQX0hXQktQVCBiZWZvcmUgaW5jbHVkaW5nCi0gZ2RiX3dhaXQuaAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1PbiBpYTY0LCBnZGJfd2FpdC5oIGV2ZW50dWFsbHkgaW5jbHVkZXMgc2lnaW5mby1jb25zdHMtYXJjaC5oLCB3aGljaAotY29udGFpbnMgYW4gZW51bSB3aXRoIFRSQVBfSFdCS1BULCBhbG9uZyB3aXRoIGEgI2RlZmluZS4gVGh1cyB3ZSBjYW5ub3QKLWRlZmluZSBUUkFQX0hXQktQVCB0byA0IGJlZm9yZWhhbmQsIGFuZCBzbyBnZGJfd2FpdC5oIG11c3QgYmUgaW5jbHVkZWQKLWVhcmxpZXI7IGluY2x1ZGUgaXQgZnJvbSBsaW51eC1wdHJhY2UuaCBzbyBpdCBjYW4gbmV2ZXIgY29tZSBhZnRlcndhcmRzLgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBuYXQvbGludXgtcHRyYWNlLmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSByZWluY2x1c2lvbiBvZgotCWdkYl9wdHJhY2UuaCwgYW5kIG1vdmUgaW5jbHVkaW5nIGdkYl93YWl0LmggLi4uCi0JKiBuYXQvbGludXgtcHRyYWNlLmg6IC4uLiB0byBoZXJlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDthPWNvbW1pdDtoPTVhNmMzMjk2YTdhOTA2OTRhZDQwNDJmNjI1NmYzZGE2ZDRmYTRlZThdCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLS0tLQotIGdkYi9uYXQvbGludXgtcHRyYWNlLmMgfCAyIC0tCi0gZ2RiL25hdC9saW51eC1wdHJhY2UuaCB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbmF0L2xpbnV4LXB0cmFjZS5jIGIvZ2RiL25hdC9saW51eC1wdHJhY2UuYwotaW5kZXggMzI2NWIxNi4uNTU5YzJkZSAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLSsrKyBiL2dkYi9uYXQvbGludXgtcHRyYWNlLmMKLUBAIC0yMSw4ICsyMSw2IEBACi0gI2luY2x1ZGUgImxpbnV4LXByb2Nmcy5oIgotICNpbmNsdWRlICJsaW51eC13YWl0cGlkLmgiCi0gI2luY2x1ZGUgImJ1ZmZlci5oIgotLSNpbmNsdWRlICJnZGJfd2FpdC5oIgotLSNpbmNsdWRlICJnZGJfcHRyYWNlLmgiCi0gI2lmZGVmIEhBVkVfU1lTX1BST0NGU19ICi0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvbmF0L2xpbnV4LXB0cmFjZS5oIGIvZ2RiL25hdC9saW51eC1wdHJhY2UuaAotaW5kZXggNTk1NDk0NS4uNmZhYTg5YiAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvbGludXgtcHRyYWNlLmgKLSsrKyBiL2dkYi9uYXQvbGludXgtcHRyYWNlLmgKLUBAIC0yMSw2ICsyMSw3IEBACi0gc3RydWN0IGJ1ZmZlcjsKLSAKLSAjaW5jbHVkZSAibmF0L2dkYl9wdHJhY2UuaCIKLSsjaW5jbHVkZSAiZ2RiX3dhaXQuaCIKLSAKLSAjaWZkZWYgX19VQ0xJQkNfXwotICNpZiAhKGRlZmluZWQoX19VQ0xJQkNfSEFTX01NVV9fKSB8fCBkZWZpbmVkKF9fQVJDSF9IQVNfTU1VX18pKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2dkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL2dkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFmZTdmOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitUaGlzIHByb2JsZW0gd2FzIGNyZWF0ZWQgYnkgdGhlIHVwc3RyZWFtIGNvbW1pdCA3ODcwOGI3YzhjCitBZnRlciBhcHBseWluZyB0aGUgY29tbWl0LCBpdCB3aWxsIHNlbmQgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwKC1zaWduYWxfcGlkKS4KK0J1dCBpZiB3ZSB1c2UgZ2Ric2VydmVyIHNlbmQgU0lHSU5ULCBhbmQgdGhlIGF0dGFjaGVkIHByb2Nlc3MgaXMgbm90IGEgcHJvY2VzcworZ3JvdXAgbGVhZGVyLCB0aGVuIHRoZSAia2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCkiIHJldHVybnMgZXJyb3IgYW5kIGZhaWxzICB0bworaW50ZXJydXB0IHRoZSBhdHRhY2hlZCBwcm9jZXNzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDVdCisKK0F1dGhvcjogSm9zaCBHYW8KK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBnZGItOC4yL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItOC4yLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworKysrIGdkYi04LjIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworQEAgLTU5NDAsOSArNTk0MCw3IEBAIGxpbnV4X2xvb2tfdXBfc3ltYm9scyAodm9pZCkKKyBzdGF0aWMgdm9pZAorIGxpbnV4X3JlcXVlc3RfaW50ZXJydXB0ICh2b2lkKQorIHsKKy0gIC8qIFNlbmQgYSBTSUdJTlQgdG8gdGhlIHByb2Nlc3MgZ3JvdXAuICBUaGlzIGFjdHMganVzdCBsaWtlIHRoZSB1c2VyCistICAgICB0eXBlZCBhIF5DIG9uIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbC4gICovCistICBraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKTsKKysgIGtpbGwgKHNpZ25hbF9waWQsIFNJR0lOVCk7CisgfQorIAorIC8qIENvcHkgTEVOIGJ5dGVzIGZyb20gaW5mZXJpb3IncyBhdXhpbGlhcnkgdmVjdG9yIHN0YXJ0aW5nIGF0IE9GRlNFVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi9wYWNrYWdlX2RldmVsX2dkYl9wYXRjaGVzXzEyMC1zaWdwcm9jbWFzay1pbnZhbGlkLWNhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0ODRmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiL3BhY2thZ2VfZGV2ZWxfZ2RiX3BhdGNoZXNfMTIwLXNpZ3Byb2NtYXNrLWludmFsaWQtY2FsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gNTY4OTNhNjFhYTRmMDI3MGZhOGQxMTk3Yjk4NDgyNDdmOTBmY2UwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlvdXNvbmcgWmhvdSA8eXN6aG91NHRlY2hAZ21haWwuY29tPgotRGF0ZTogRnJpLCAyNCBNYXIgMjAxNyAxMDozNjowMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggaW52YWxpZCBzaWdwcm9jbWFzayBjYWxsCi0KLVRoZSBQT1NJWCBkb2N1bWVudCBzYXlzCi0KLSAgICBUaGUgcHRocmVhZF9zaWdtYXNrKCkgYW5kIHNpZ3Byb2NtYXNrKCkgZnVuY3Rpb25zIHNoYWxsIGZhaWwgaWY6Ci0KLSAgICBbRUlOVkFMXQotICAgIFRoZSB2YWx1ZSBvZiB0aGUgaG93IGFyZ3VtZW50IGlzIG5vdCBlcXVhbCB0byBvbmUgb2YgdGhlIGRlZmluZWQgdmFsdWVzLgotCi1hbmQgdGhpcyBpcyBob3cgbXVzbC1saWJjIGlzIGN1cnJlbnRseSBkb2luZy4gIEZpeCB0aGUgY2FsbCB0byBiZSBzYWZlCi1hbmQgY29ycmVjdAotCi0gWzFdIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy85Njk5OTE5Nzk5L2Z1bmN0aW9ucy9wdGhyZWFkX3NpZ21hc2suaHRtbAotCi1nZGIvQ2hhbmdlTG9nOgotMjAxNy0wMy0yNCAgWW91c29uZyBaaG91ICA8eXN6aG91NHRlY2hAZ21haWwuY29tPgotCi0gICAgKiBjb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyAoc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlKToKLSAgICBGaXggaW52YWxpZCBzaWdwcm9jbWFzayBjYWxsLgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW25vdCBhdXRob3IsIGNoZXJyeS1waWNrZWQgZnJvbSBMRURFIGh0dHBzOi8vYnVncy5sZWRlLXByb2plY3Qub3JnL2luZGV4LnBocD9kbz1kZXRhaWxzJnRhc2tfaWQ9NjM3Jm9wZW5lZGZyb209LTElMkJ3ZWVrXQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgotIGdkYi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKLSBnZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyBiL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYwotaW5kZXggZDExYTlhZS4uNzM0MzM1YyAxMDA2NDQKLS0tLSBhL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYwotKysrIGIvZ2RiL2NvbW1vbi9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCi1AQCAtNDEsNyArNDEsNyBAQCBzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUgKHZvaWQpCi0gICBpbnQgaTsKLSAgIGludCByZXM7Ci0gCi0tICByZXMgPSBzaWdwcm9jbWFzayAoMCwgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7Ci0rICByZXMgPSBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKLSAgIGlmIChyZXMgPT0gLTEpCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKCgic2lncHJvY21hc2siKSk7Ci0gCi0tLSAKLTIuNi40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzguMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYThmZWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1yZXF1aXJlIGdkYi5pbmMKLXJlcXVpcmUgZ2RiLSR7UFZ9LmluYwotCi1pbmhlcml0IHB5dGhvbjMtZGlyCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDFfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0Ml9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPW5vIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCi0JCWNhdCA+ICR7V09SS0RJUn0vcHl0aG9uIDw8IEVPRgotIyEvYmluL3NoCi1jYXNlICJcJDIiIGluCi0JLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS8iIDs7Ci0JLS1sZGZsYWdzKSBlY2hvICItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gLVdsLC1ycGF0aCwke2xpYmRpcn0vLi4gLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iIDs7Ci0JLS1leGVjLXByZWZpeCkgZWNobyAiJHtleGVjX3ByZWZpeH0iIDs7Ci0JKikgZXhpdCAxIDs7Ci1lc2FjCi1leGl0IDAKLUVPRgotCQljaG1vZCAreCAke1dPUktESVJ9L3B5dGhvbgotCWZpCi19Ci1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURycGxfZ2V0dGltZW9mZGF5PWdldHRpbWVvZmRheSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZlYWM4NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4yLmJiCkBAIC0wLDAgKzEsMjkgQEAKK3JlcXVpcmUgZ2RiLmluYworcmVxdWlyZSBnZGItJHtQVn0uaW5jCisKK2luaGVyaXQgcHl0aG9uMy1kaXIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcj15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPW5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCisJCWNhdCA+ICR7V09SS0RJUn0vcHl0aG9uIDw8IEVPRgorIyEvYmluL3NoCitjYXNlICJcJDIiIGluCisJLS1pbmNsdWRlcykgZWNobyAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS8iIDs7CisJLS1sZGZsYWdzKSBlY2hvICItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUn0vLi4gLVdsLC1ycGF0aCwke2xpYmRpcn0vLi4gLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iIDs7CisJLS1leGVjLXByZWZpeCkgZWNobyAiJHtleGVjX3ByZWZpeH0iIDs7CisJKikgZXhpdCAxIDs7Citlc2FjCitleGl0IDAKK0VPRgorCQljaG1vZCAreCAke1dPUktESVJ9L3B5dGhvbgorCWZpCit9CitDUFBGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHJwbF9nZXR0aW1lb2ZkYXk9Z2V0dGltZW9mZGF5IC1EcnBsX3N0YXQ9c3RhdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9maWxlcy9DVkUtMjAxOC0xMTIzMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9maWxlcy9DVkUtMjAxOC0xMTIzMy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ0NjhjZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZmlsZXMvQ1ZFLTIwMTgtMTEyMzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDAxNDI4MWU2MmI3OTIwYTZkNzEwYTg1MDg5ZTAwY2EwMTJiMDc0NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKZWZmIEtpbmcgPHBlZmZAcGVmZi5uZXQ+Ci1EYXRlOiBTdW4sIDEzIE1heSAyMDE4IDEyOjA5OjQyIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlzX250ZnNfZG90Z2l0OiB1c2UgYSBzaXplX3QgZm9yIHRyYXZlcnNpbmcgc3RyaW5nCi0KLVdlIHdhbGsgdGhyb3VnaCB0aGUgIm5hbWUiIHN0cmluZyB1c2luZyBhbiBpbnQsIHdoaWNoIGNhbgotd3JhcCB0byBhIG5lZ2F0aXZlIHZhbHVlIGFuZCBjYXVzZSB1cyB0byByZWFkIHJhbmRvbSBtZW1vcnkKLWJlZm9yZSBvdXIgYXJyYXkgKGUuZy4sIGJ5IGNyZWF0aW5nIGEgdHJlZSB3aXRoIGEgbmFtZSA+MkdCLAotc2luY2UgImludCIgaXMgc3RpbGwgMzIgYml0cyBldmVuIG9uIG1vc3QgNjQtYml0IHBsYXRmb3JtcykuCi1Xb3JzZSwgdGhpcyBpcyBlYXN5IHRvIHRyaWdnZXIgZHVyaW5nIHRoZSBmc2NrX3RyZWUoKSBjaGVjaywKLXdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIHByb3RlY3RpbmcgdXMgZnJvbSBtYWxpY2lvdXMKLWdhcmJhZ2UuCi0KLU5vdGUgb25lIGJpdCBvZiB0cmlja2luZXNzIGluIHRoZSBleGlzdGluZyBjb2RlOiB3ZQotc29tZXRpbWVzIGFzc2lnbiAtMSB0byAibGVuIiBhdCB0aGUgZW5kIG9mIHRoZSBsb29wLCBhbmQKLXRoZW4gcmVseSBvbiB0aGUgImxlbisrIiBpbiB0aGUgZm9yLWxvb3AncyBpbmNyZW1lbnQgdG8gdGFrZQotaXQgYmFjayB0byAwLiBUaGlzIGlzIHN0aWxsIGxlZ2FsIHdpdGggYSBzaXplX3QsIHNpbmNlCi1hc3NpZ25pbmcgLTEgd2lsbCB0dXJuIGludG8gU0laRV9NQVgsIHdoaWNoIHRoZW4gd3JhcHMKLWFyb3VuZCB0byAwIG9uIGluY3JlbWVudC4KLQotU2lnbmVkLW9mZi1ieTogSmVmZiBLaW5nIDxwZWZmQHBlZmYubmV0PgotQ1ZFOiBDVkUtMjAxOC0xMTIzMwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vZ2l0L2dpdC9jb21taXQvMTFhOWY0ZDgwN2EwZDcxZGM2ZWZmNTFiYjg3YmFmNGNhMmNjY2YxZF0KLVNpZ25lZC1vZmYtYnk6IFNpbmFuIEtheWEgPG9rYXlhQGtlcm5lbC5vcmc+Ci0tLS0KLSBwYXRoLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wYXRoLmMgYi9wYXRoLmMKLWluZGV4IGRhOGI2NTU3My4uZDMxYzc5NWZmIDEwMDY0NAotLS0tIGEvcGF0aC5jCi0rKysgYi9wYXRoLmMKLUBAIC0xMzA1LDcgKzEzMDUsNyBAQCBzdGF0aWMgaW50IG9ubHlfc3BhY2VzX2FuZF9wZXJpb2RzKGNvbnN0IGNoYXIgKnBhdGgsIHNpemVfdCBsZW4sIHNpemVfdCBza2lwKQotIAotIGludCBpc19udGZzX2RvdGdpdChjb25zdCBjaGFyICpuYW1lKQotIHsKLS0JaW50IGxlbjsKLSsJc2l6ZV90IGxlbjsKLSAKLSAJZm9yIChsZW4gPSAwOyA7IGxlbisrKQotIAkJaWYgKCFuYW1lW2xlbl0gfHwgbmFtZVtsZW5dID09ICdcXCcgfHwgaXNfZGlyX3NlcChuYW1lW2xlbl0pKSB7Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZmlsZXMvQ1ZFLTIwMTgtMTEyMzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZmlsZXMvQ1ZFLTIwMTgtMTEyMzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNzJlYWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2ZpbGVzL0NWRS0yMDE4LTExMjM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLUZyb20gMDM4M2JiYjkwMTU4OThjYmM3OWFiZDdiNjQzMTY0ODRkNzcxM2I0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEplZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4KLURhdGU6IE1vbiwgMzAgQXByIDIwMTggMDM6MjU6MjUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3VibW9kdWxlLWNvbmZpZzogdmVyaWZ5IHN1Ym1vZHVsZSBuYW1lcyBhcyBwYXRocwotCi1TdWJtb2R1bGUgIm5hbWVzIiBjb21lIGZyb20gdGhlIHVudHJ1c3RlZCAuZ2l0bW9kdWxlcyBmaWxlLAotYnV0IHdlIGJsaW5kbHkgYXBwZW5kIHRoZW0gdG8gJEdJVF9ESVIvbW9kdWxlcyB0byBjcmVhdGUgb3VyCi1vbi1kaXNrIHJlcG8gcGF0aHMuIFRoaXMgbWVhbnMgeW91IGNhbiBkbyBiYWQgdGhpbmdzIGJ5Ci1wdXR0aW5nICIuLi8iIGludG8gdGhlIG5hbWUgKGFtb25nIG90aGVyIHRoaW5ncykuCi0KLUxldCdzIHNhbml0eS1jaGVjayB0aGVzZSBuYW1lcyB0byBhdm9pZCBidWlsZGluZyBhIHBhdGggdGhhdAotY2FuIGJlIGV4cGxvaXRlZC4gVGhlcmUgYXJlIHR3byBtYWluIGRlY2lzaW9uczoKLQotICAxLiBXaGF0IHNob3VsZCB0aGUgYWxsb3dlZCBzeW50YXggYmU/Ci0KLSAgICAgSXQncyB0ZW1wdGluZyB0byByZXVzZSB2ZXJpZnlfcGF0aCgpLCBzaW5jZSBzdWJtb2R1bGUKLSAgICAgbmFtZXMgdHlwaWNhbGx5IGNvbWUgZnJvbSBpbi1yZXBvIHBhdGhzLiBCdXQgdGhlcmUgYXJlCi0gICAgIHR3byByZWFzb25zIG5vdCB0bzoKLQotICAgICAgIGEuIEl0J3MgdGVjaG5pY2FsbHkgbW9yZSBzdHJpY3QgdGhhbiB3aGF0IHdlIG5lZWQsIGFzCi0gICAgICAgICAgd2UgcmVhbGx5IGNhcmUgb25seSBhYm91dCBicmVha2luZyBvdXQgb2YgdGhlCi0gICAgICAgICAgJEdJVF9ESVIvbW9kdWxlcy8gaGllcmFyY2h5LiAgRS5nLiwgaGF2aW5nIGEKLSAgICAgICAgICBzdWJtb2R1bGUgbmFtZWQgImZvby8uZ2l0IiBpc24ndCBhY3R1YWxseQotICAgICAgICAgIGRhbmdlcm91cywgYW5kIGl0J3MgcG9zc2libGUgdGhhdCBzb21lYm9keSBoYXMKLSAgICAgICAgICBtYW51YWxseSBnaXZlbiBzdWNoIGEgZnVubnkgbmFtZS4KLQotICAgICAgIGIuIFNpbmNlIHdlJ2xsIGV2ZW50dWFsbHkgdXNlIHRoaXMgY2hlY2tpbmcgbG9naWMgaW4KLSAgICAgICAgICBmc2NrIHRvIHByZXZlbnQgZG93bnN0cmVhbSByZXBvc2l0b3JpZXMsIGl0IHNob3VsZAotICAgICAgICAgIGJlIGNvbnNpc3RlbnQgYWNyb3NzIHBsYXRmb3Jtcy4gQmVjYXVzZQotICAgICAgICAgIHZlcmlmeV9wYXRoKCkgcmVsaWVzIG9uIGlzX2Rpcl9zZXAoKSwgaXQgd291bGRuJ3QKLSAgICAgICAgICBibG9jayAiZm9vXC4uXGJhciIgb24gYSBub24tV2luZG93cyBtYWNoaW5lLgotCi0gIDIuIFdoZXJlIHNob3VsZCB3ZSBlbmZvcmNlIGl0PyBUaGVzZSBkYXlzIG1vc3Qgb2YgdGhlCi0gICAgIC5naXRtb2R1bGVzIHJlYWRzIGdvIHRocm91Z2ggc3VibW9kdWxlLWNvbmZpZy5jLCBzbwotICAgICBJJ3ZlIHB1dCBpdCB0aGVyZSBpbiB0aGUgcmVhZGluZyBzdGVwLiBUaGF0IHNob3VsZAotICAgICBjb3ZlciBhbGwgb2YgdGhlIEMgY29kZS4KLQotICAgICBXZSBhbHNvIGNvbnN0cnVjdCB0aGUgbmFtZSBmb3IgImdpdCBzdWJtb2R1bGUgYWRkIgotICAgICBpbnNpZGUgdGhlIGdpdC1zdWJtb2R1bGUuc2ggc2NyaXB0LiBUaGlzIGlzIHByb2JhYmx5Ci0gICAgIG5vdCBhIGJpZyBkZWFsIGZvciBzZWN1cml0eSBzaW5jZSB0aGUgbmFtZSBpcyBjb21pbmcKLSAgICAgZnJvbSB0aGUgdXNlciBhbnl3YXksIGJ1dCBpdCB3b3VsZCBiZSBwb2xpdGUgdG8gcmVtaW5kCi0gICAgIHRoZW0gaWYgdGhlIG5hbWUgdGhleSBwaWNrIGlzIGludmFsaWQgKGFuZCB3ZSBuZWVkIHRvCi0gICAgIGV4cG9zZSB0aGUgbmFtZS1jaGVja2VyIHRvIHRoZSBzaGVsbCBhbnl3YXkgZm9yIG91cgotICAgICB0ZXN0IHNjcmlwdHMpLgotCi0gICAgIFRoaXMgcGF0Y2ggaXNzdWVzIGEgd2FybmluZyB3aGVuIHJlYWRpbmcgLmdpdG1vZHVsZXMKLSAgICAgYW5kIGp1c3QgaWdub3JlcyB0aGUgcmVsYXRlZCBjb25maWcgZW50cnkgY29tcGxldGVseS4KLSAgICAgVGhpcyB3aWxsIGdlbmVyYWxseSBlbmQgdXAgcHJvZHVjaW5nIGEgc2Vuc2libGUgZXJyb3IsCi0gICAgIGFzIGl0IHdvcmtzIHRoZSBzYW1lIGFzIGEgLmdpdG1vZHVsZXMgZmlsZSB3aGljaCBpcwotICAgICBtaXNzaW5nIGEgc3VibW9kdWxlIGVudHJ5IChzbyAic3VibW9kdWxlIHVwZGF0ZSIgd2lsbAotICAgICBiYXJmLCBidXQgImdpdCBjbG9uZSAtLXJlY3Vyc2Utc3VibW9kdWxlcyIgd2lsbCBwcmludAotICAgICBhbiBlcnJvciBidXQgbm90IGFib3J0IHRoZSBjbG9uZS4KLQotICAgICBUaGVyZSBpcyBvbmUgbWlub3Igb2RkaXR5LCB3aGljaCBpcyB0aGF0IHdlIHByaW50IHRoZQotICAgICB3YXJuaW5nIG9uY2UgcGVyIG1hbGZvcm1lZCBjb25maWcga2V5IChzaW5jZSB0aGF0J3MgaG93Ci0gICAgIHRoZSBjb25maWcgc3Vic3lzdGVtIGdpdmVzIHVzIHRoZSBlbnRyaWVzKS4gU28gaW4gdGhlCi0gICAgIG5ldyB0ZXN0LCBmb3IgZXhhbXBsZSwgdGhlIHVzZXIgd291bGQgc2VlIHRocmVlCi0gICAgIHdhcm5pbmdzLiBUaGF0J3MgT0ssIHNpbmNlIHRoZSBpbnRlbnQgaXMgdGhhdCB0aGlzIGNhc2UKLSAgICAgc2hvdWxkIG5ldmVyIGNvbWUgdXAgb3V0c2lkZSBvZiBtYWxpY2lvdXMgcmVwb3NpdG9yaWVzCi0gICAgIChhbmQgdGhlbiBpdCBtaWdodCBldmVuIGJlbmVmaXQgdGhlIHVzZXIgdG8gc2VlIHRoZQotICAgICBtZXNzYWdlIG11bHRpcGxlIHRpbWVzKS4KLQotQ3JlZGl0IGZvciBmaW5kaW5nIHRoaXMgdnVsbmVyYWJpbGl0eSBhbmQgdGhlIHByb29mIG9mCi1jb25jZXB0IGZyb20gd2hpY2ggdGhlIHRlc3Qgc2NyaXB0IHdhcyBhZGFwdGVkIGdvZXMgdG8KLUV0aWVubmUgU3RhbG1hbnMuCi0KLUNWRTogQ1ZFLTIwMTgtMTEyMzUKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9naXRzdGVyL2dpdC9jb21taXQvMDM4M2JiYjkwMTU4OThjYmM3OWFiZDdiNjQzMTY0ODRkNzcxM2I0NCNkaWZmLTE3NzJiOTUxNzc2ZDE2NDdjYTMxYTIyNTZmN2ZlODhmXQotCi1TaWduZWQtb2ZmLWJ5OiBKZWZmIEtpbmcgPHBlZmZAcGVmZi5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBidWlsdGluL3N1Ym1vZHVsZS0taGVscGVyLmMgfCAyNCArKysrKysrKysrKysrKwotIGdpdC1zdWJtb2R1bGUuc2ggICAgICAgICAgICB8ICA1ICsrKwotIHN1Ym1vZHVsZS1jb25maWcuYyAgICAgICAgICB8IDMxICsrKysrKysrKysrKysrKysrKwotIHN1Ym1vZHVsZS1jb25maWcuaCAgICAgICAgICB8ICA3ICsrKysrCi0gdC90NzQxNS1zdWJtb2R1bGUtbmFtZXMuc2ggIHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDc1NSB0L3Q3NDE1LXN1Ym1vZHVsZS1uYW1lcy5zaAotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbi9zdWJtb2R1bGUtLWhlbHBlci5jIGIvYnVpbHRpbi9zdWJtb2R1bGUtLWhlbHBlci5jCi1pbmRleCBjYmIxN2E5MDIuLmI0YjRkMjlkOCAxMDA2NDQKLS0tLSBhL2J1aWx0aW4vc3VibW9kdWxlLS1oZWxwZXIuYwotKysrIGIvYnVpbHRpbi9zdWJtb2R1bGUtLWhlbHBlci5jCi1AQCAtMTQ4MCw2ICsxNDgwLDI5IEBAIHN0YXRpYyBpbnQgaXNfYWN0aXZlKGludCBhcmdjLCBjb25zdCBjaGEKLSAJcmV0dXJuICFpc19zdWJtb2R1bGVfYWN0aXZlKHRoZV9yZXBvc2l0b3J5LCBhcmd2WzFdKTsKLSB9Ci0gCi0rLyoKLSsgKiBFeGl0IG5vbi16ZXJvIGlmIGFueSBvZiB0aGUgc3VibW9kdWxlIG5hbWVzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMKLSsgKiBpbnZhbGlkLiBJZiBubyBuYW1lcyBhcmUgZ2l2ZW4sIGZpbHRlciBzdGRpbiB0byBwcmludCBvbmx5IHZhbGlkIG5hbWVzCi0rICogKHdoaWNoIGlzIHByaW1hcmlseSBpbnRlbmRlZCBmb3IgdGVzdGluZykuCi0rICovCi0rc3RhdGljIGludCBjaGVja19uYW1lKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQotK3sKLSsJaWYgKGFyZ2MgPiAxKSB7Ci0rCQl3aGlsZSAoKisrYXJndikgewotKwkJCWlmIChjaGVja19zdWJtb2R1bGVfbmFtZSgqYXJndikgPCAwKQotKwkJCQlyZXR1cm4gMTsKLSsJCX0KLSsJfSBlbHNlIHsKLSsJCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0rCQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4pICE9IEVPRikgewotKwkJCWlmICghY2hlY2tfc3VibW9kdWxlX25hbWUoYnVmLmJ1ZikpCi0rCQkJCXByaW50ZigiJXNcbiIsIGJ1Zi5idWYpOwotKwkJfQotKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7Ci0rCX0KLSsJcmV0dXJuIDA7Ci0rfQotKwotICNkZWZpbmUgU1VQUE9SVF9TVVBFUl9QUkVGSVggKDE8PDApCi0gCi0gc3RydWN0IGNtZF9zdHJ1Y3QgewotQEAgLTE1MDIsNiArMTUyNSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY21kX3N0cnVjdCBjb21tYW5kc1tdID0gewotIAl7InB1c2gtY2hlY2siLCBwdXNoX2NoZWNrLCAwfSwKLSAJeyJhYnNvcmItZ2l0LWRpcnMiLCBhYnNvcmJfZ2l0X2RpcnMsIFNVUFBPUlRfU1VQRVJfUFJFRklYfSwKLSAJeyJpcy1hY3RpdmUiLCBpc19hY3RpdmUsIDB9LAotKwl7ImNoZWNrLW5hbWUiLCBjaGVja19uYW1lLCAwfSwKLSB9OwotIAotIGludCBjbWRfc3VibW9kdWxlX19oZWxwZXIoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCi1kaWZmIC0tZ2l0IGEvZ2l0LXN1Ym1vZHVsZS5zaCBiL2dpdC1zdWJtb2R1bGUuc2gKLWluZGV4IGMwZDBlOWE0Yy4uOTI3NTBiOWUyIDEwMDc1NQotLS0tIGEvZ2l0LXN1Ym1vZHVsZS5zaAotKysrIGIvZ2l0LXN1Ym1vZHVsZS5zaAotQEAgLTIyOSw2ICsyMjksMTEgQEAgVXNlIC1mIGlmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgaXQuIiA+JgotIAkJc21fbmFtZT0iJHNtX3BhdGgiCi0gCWZpCi0gCi0rCWlmICEgZ2l0IHN1Ym1vZHVsZS0taGVscGVyIGNoZWNrLW5hbWUgIiRzbV9uYW1lIgotKwl0aGVuCi0rCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICInJHNtX25hbWUnIGlzIG5vdCBhIHZhbGlkIHN1Ym1vZHVsZSBuYW1lIikiCi0rCWZpCi0rCi0gCSMgcGVyaGFwcyB0aGUgcGF0aCBleGlzdHMgYW5kIGlzIGFscmVhZHkgYSBnaXQgcmVwbywgZWxzZSBjbG9uZSBpdAotIAlpZiB0ZXN0IC1lICIkc21fcGF0aCIKLSAJdGhlbgotZGlmZiAtLWdpdCBhL3N1Ym1vZHVsZS1jb25maWcuYyBiL3N1Ym1vZHVsZS1jb25maWcuYwotaW5kZXggNGY1ODQ5MWRkLi5kZTU0MzUxYzYgMTAwNjQ0Ci0tLS0gYS9zdWJtb2R1bGUtY29uZmlnLmMKLSsrKyBiL3N1Ym1vZHVsZS1jb25maWcuYwotQEAgLTE5MCw2ICsxOTAsMzEgQEAgc3RhdGljIHN0cnVjdCBzdWJtb2R1bGUgKmNhY2hlX2xvb2t1cF9uYQotIAlyZXR1cm4gTlVMTDsKLSB9Ci0gCi0raW50IGNoZWNrX3N1Ym1vZHVsZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKwkvKiBEaXNhbGxvdyBlbXB0eSBuYW1lcyAqLwotKwlpZiAoISpuYW1lKQotKwkJcmV0dXJuIC0xOwotKwotKwkvKgotKwkgKiBMb29rIGZvciAnLi4nIGFzIGEgcGF0aCBjb21wb25lbnQuIENoZWNrIGJvdGggJy8nIGFuZCAnXFwnIGFzCi0rCSAqIHNlcGFyYXRvcnMgcmF0aGVyIHRoYW4gaXNfZGlyX3NlcCgpLCBiZWNhdXNlIHdlIHdhbnQgdGhlIG5hbWUgcnVsZXMKLSsJICogdG8gYmUgY29uc2lzdGVudCBhY3Jvc3MgcGxhdGZvcm1zLgotKwkgKi8KLSsJZ290byBpbl9jb21wb25lbnQ7IC8qIGFsd2F5cyBzdGFydCBpbnNpZGUgY29tcG9uZW50ICovCi0rCXdoaWxlICgqbmFtZSkgewotKwkJY2hhciBjID0gKm5hbWUrKzsKLSsJCWlmIChjID09ICcvJyB8fCBjID09ICdcXCcpIHsKLStpbl9jb21wb25lbnQ6Ci0rCQkJaWYgKG5hbWVbMF0gPT0gJy4nICYmIG5hbWVbMV0gPT0gJy4nICYmCi0rCQkJICAgICghbmFtZVsyXSB8fCBuYW1lWzJdID09ICcvJyB8fCBuYW1lWzJdID09ICdcXCcpKQotKwkJCQlyZXR1cm4gLTE7Ci0rCQl9Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotKwotIHN0YXRpYyBpbnQgbmFtZV9hbmRfaXRlbV9mcm9tX3Zhcihjb25zdCBjaGFyICp2YXIsIHN0cnVjdCBzdHJidWYgKm5hbWUsCi0gCQkJCSAgc3RydWN0IHN0cmJ1ZiAqaXRlbSkKLSB7Ci1AQCAtMjAxLDYgKzIyNiwxMiBAQCBzdGF0aWMgaW50IG5hbWVfYW5kX2l0ZW1fZnJvbV92YXIoY29uc3QKLSAJCXJldHVybiAwOwotIAotIAlzdHJidWZfYWRkKG5hbWUsIHN1YnNlY3Rpb24sIHN1YnNlY3Rpb25fbGVuKTsKLSsJaWYgKGNoZWNrX3N1Ym1vZHVsZV9uYW1lKG5hbWUtPmJ1ZikgPCAwKSB7Ci0rCQl3YXJuaW5nKF8oImlnbm9yaW5nIHN1c3BpY2lvdXMgc3VibW9kdWxlIG5hbWU6ICVzIiksIG5hbWUtPmJ1Zik7Ci0rCQlzdHJidWZfcmVsZWFzZShuYW1lKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0gCXN0cmJ1Zl9hZGRzdHIoaXRlbSwga2V5KTsKLSAKLSAJcmV0dXJuIDE7Ci1kaWZmIC0tZ2l0IGEvc3VibW9kdWxlLWNvbmZpZy5oIGIvc3VibW9kdWxlLWNvbmZpZy5oCi1pbmRleCBkNDM0ZWNkYjQuLjEwM2NjNzlkZCAxMDA2NDQKLS0tLSBhL3N1Ym1vZHVsZS1jb25maWcuaAotKysrIGIvc3VibW9kdWxlLWNvbmZpZy5oCi1AQCAtNDgsNCArNDgsMTEgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdWJtb2R1bGUgKnN1Ym1vZHVsZQotIAkJCQkJCSAgICBjb25zdCBjaGFyICprZXkpOwotIGV4dGVybiB2b2lkIHN1Ym1vZHVsZV9mcmVlKHZvaWQpOwotIAotKy8qCi0rICogUmV0dXJucyAwIGlmIHRoZSBuYW1lIGlzIHN5bnRhY3RpY2FsbHkgYWNjZXB0YWJsZSBhcyBhIHN1Ym1vZHVsZSAibmFtZSIKLSsgKiAoZS5nLiwgdGhhdCBtYXkgYmUgZm91bmQgaW4gdGhlIHN1YnNlY3Rpb24gb2YgYSAuZ2l0bW9kdWxlcyBmaWxlKSBhbmQgLTEKLSsgKiBvdGhlcndpc2UuCi0rICovCi0raW50IGNoZWNrX3N1Ym1vZHVsZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpOwotKwotICNlbmRpZiAvKiBTVUJNT0RVTEVfQ09ORklHX0ggKi8KLWRpZmYgLS1naXQgYS90L3Q3NDE1LXN1Ym1vZHVsZS1uYW1lcy5zaCBiL3QvdDc0MTUtc3VibW9kdWxlLW5hbWVzLnNoCi1uZXcgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMDAwMDAwMDAwLi43NWZhMDcxYzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3QvdDc0MTUtc3VibW9kdWxlLW5hbWVzLnNoCi1AQCAtMCwwICsxLDc2IEBACi0rIyEvYmluL3NoCi0rCi0rdGVzdF9kZXNjcmlwdGlvbj0nY2hlY2sgaGFuZGxpbmcgb2YgLi4gaW4gc3VibW9kdWxlIG5hbWVzCi0rCi0rRXhlcmNpc2UgdGhlIG5hbWUtY2hlY2tpbmcgZnVuY3Rpb24gb24gYSB2YXJpZXR5IG9mIG5hbWVzLCBhbmQgdGhlbiBnaXZlIGEKLStyZWFsLXdvcmxkIHNldHVwIHRoYXQgY29uZmlybXMgd2UgY2F0Y2ggdGhpcyBpbiBwcmFjdGljZS4KLSsnCi0rLiAuL3Rlc3QtbGliLnNoCi0rCi0rdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2sgbmFtZXMnICcKLSsJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgotKwl2YWxpZAotKwl2YWxpZC93aXRoL3BhdGhzCi0rCUVPRgotKwotKwlnaXQgc3VibW9kdWxlLS1oZWxwZXIgY2hlY2stbmFtZSA+YWN0dWFsIDw8LVxFT0YgJiYKLSsJdmFsaWQKLSsJdmFsaWQvd2l0aC9wYXRocwotKwotKwkuLi9mb28KLSsJLy4uL2ZvbwotKwkuLlxmb28KLSsJXC4uXGZvbwotKwlmb28vLi4KLSsJZm9vLy4uLwotKwlmb29cLi4KLSsJZm9vXC4uXAotKwlmb28vLi4vYmFyCi0rCUVPRgotKwotKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCi0rJwotKwotK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0ZSBpbm5vY2VudCBzdWJyZXBvJyAnCi0rCWdpdCBpbml0IGlubm9jZW50ICYmCi0rCWdpdCAtQyBpbm5vY2VudCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSBmb28KLSsnCi0rCi0rdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGFkZCByZWZ1c2VzIGludmFsaWQgbmFtZXMnICcKLSsJdGVzdF9tdXN0X2ZhaWwgXAotKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgLS1uYW1lIC4uLy4uL21vZHVsZXMvZXZpbCAiJFBXRC9pbm5vY2VudCIgZXZpbAotKycKLSsKLSt0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgZXZpbCBzdWJtb2R1bGUnICcKLSsJZ2l0IHN1Ym1vZHVsZSBhZGQgIiRQV0QvaW5ub2NlbnQiIGV2aWwgJiYKLSsKLSsJbWtkaXIgbW9kdWxlcyAmJgotKwljcCAtciAuZ2l0L21vZHVsZXMvZXZpbCBtb2R1bGVzICYmCi0rCXdyaXRlX3NjcmlwdCBtb2R1bGVzL2V2aWwvaG9va3MvcG9zdC1jaGVja291dCA8PC1cRU9GICYmCi0rCWVjaG8gPiYyICJSVU5OSU5HIFBPU1QgQ0hFQ0tPVVQiCi0rCUVPRgotKwotKwlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5ldmlsLnVwZGF0ZSBjaGVja291dCAmJgotKwlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIC0tcmVuYW1lLXNlY3Rpb24gXAotKwkJc3VibW9kdWxlLmV2aWwgc3VibW9kdWxlLi4uLy4uL21vZHVsZXMvZXZpbCAmJgotKwlnaXQgYWRkIG1vZHVsZXMgJiYKLSsJZ2l0IGNvbW1pdCAtYW0gZXZpbAotKycKLSsKLSsjIFRoaXMgc3RlcCBzZWVtcyBsaWtlIGl0IHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIHNpbmNlIHRoZSBwYXlsb2FkIGlzCi0rIyBjb250YWluZWQgZW50aXJlbHkgaW4gdGhlIGV2aWwgc3VibW9kdWxlLiBCdXQgZHVlIHRvIHRoZSB2YWdhcmllcyBvZiB0aGUKLSsjIHN1Ym1vZHVsZSBjb2RlLCBjaGVja2luZyBvdXQgdGhlIGV2aWwgbW9kdWxlIHdpbGwgZmFpbCB1bmxlc3MgIi5naXQvbW9kdWxlcyIKLSsjIGV4aXN0cy4gQWRkaW5nIGFub3RoZXIgc3VibW9kdWxlICh3aXRoIGEgbmFtZSB0aGF0IHNvcnRzIGJlZm9yZSAiZXZpbCIpIGlzIGFuCi0rIyBlYXN5IHdheSB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgY2FzZSBpbiB0aGUgdmljdGltIGNsb25lLgotK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBvdGhlciBzdWJtb2R1bGUnICcKLSsJZ2l0IHN1Ym1vZHVsZSBhZGQgIiRQV0QvaW5ub2NlbnQiIGFub3RoZXItbW9kdWxlICYmCi0rCWdpdCBhZGQgYW5vdGhlci1tb2R1bGUgJiYKLSsJZ2l0IGNvbW1pdCAtYW0gYW5vdGhlcgotKycKLSsKLSt0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uZSBldmlsIHN1cGVycHJvamVjdCcgJwotKwlnaXQgY2xvbmUgLS1yZWN1cnNlLXN1Ym1vZHVsZXMgLiB2aWN0aW0gPm91dHB1dCAyPiYxICYmCi0rCSEgZ3JlcCAiUlVOTklORyBQT1NUIENIRUNLT1VUIiBvdXRwdXQKLSsnCi0rCi0rdGVzdF9kb25lCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCmluZGV4IDg2MDNjMDQuLjI2YTIyYWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCkBAIC03LDkgKzcsNyBAQAogUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ2l0LXJlcGxhY2VtZW50LW5hdGl2ZSIKIAogU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LSR7UFZ9LnRhci5nejtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICAke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LW1hbnBhZ2VzLSR7UFZ9LnRhci5nejtuYW1lPW1hbnBhZ2VzIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTExMjM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTExMjMzLnBhdGNoIgorICAgICAgICAgICAke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3NjbS9naXQvZ2l0LW1hbnBhZ2VzLSR7UFZ9LnRhci5nejtuYW1lPW1hbnBhZ2VzIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0LSR7UFZ9IgogCkBAIC01NCwxMyArNTIsNiBAQAogCSAgICAgICAtZSAncyMke2xpYmRpcn0vcGVybC1uYXRpdmUvIyR7bGliZGlyfS8jJyBcCiAJICAgICR7QGQuZ2V0VmFyKCJQRVJMVE9PTFMiKS5yZXBsYWNlKCcgLycsZC5nZXRWYXIoJ0QnKSArICcvJyl9CiAKLQkjICR7bGliZGlyfSBpcyBub3QgYXBwbGljYWJsZSBoZXJlLCBwZXJsLW5hdGl2ZSBmaWxlcyBhcmUgYWx3YXlzCi0JIyBpbnN0YWxsZWQgdG8gL3Vzci9saWIgb24gYm90aCAzMi82NCBiaXRzIHRhcmdldHMuCi0KLQlta2RpciAtcCAke0R9JHtsaWJkaXJ9Ci0JbXYgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi9wZXJsLW5hdGl2ZS9wZXJsICR7RH0ke2xpYmRpcn0KLQlybWRpciAtcCAke0R9JHtleGVjX3ByZWZpeH0vbGliL3BlcmwtbmF0aXZlIHx8IHRydWUKLQogCWlmIFsgISAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2N2c3NlcnZlcicsIGQpfSIgXTsgdGhlbgogCQkjIE9ubHkgaW5zdGFsbCB0aGUgZ2l0IGN2c3NlcnZlciBjb21tYW5kIGlmIGV4cGxpY2l0bHkgcmVxdWVzdGVkCiAJCSMgYXMgaXQgcmVxdWlyZXMgdGhlIERCSSBQZXJsIG1vZHVsZSwgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4KQEAgLTc0LDggKzY1LDcgQEAKIAkJIyBpZiBleHBsaWNpdGx5IHJlcXVlc3RlZCBhcyB0aGV5IHJlcXVpcmUgdGhlIFNWTjo6Q29yZSBQZXJsCiAJCSMgbW9kdWxlLCB3aGljaCBkb2VzIG5vdCBleGlzdCBpbiBPRS1Db3JlLgogCQlybSAtciAke0R9JHtsaWJleGVjZGlyfS9naXQtY29yZS9naXQtc3ZuIFwKLQkJICAgICAgJHtEfSR7bGliZGlyfS9wZXJsL3NpdGVfcGVybC8qL0dpdC9TVk4qCi0JCXNlZCAtaSAtZSAnL1NWTi9kJyAke0R9JHtsaWJkaXJ9L3Blcmwvc2l0ZV9wZXJsLyovYXV0by9HaXQvLnBhY2tsaXN0CisJCSAgICAgICR7RH0ke2RhdGFkaXJ9L3Blcmw1L0dpdC9TVk4qCiAJZmkKIH0KIApAQCAtMTI2LDcgKzExNiw3IEBACiBGSUxFU18ke1BOfS1wZXJsdG9vbHMgKz0gIiBcCiAgICAgJHtQRVJMVE9PTFN9IFwKICAgICAke2xpYmRpcn0vcGVybCBcCi0gICAgJHtkYXRhZGlyfS9wZXJsIFwKKyAgICAke2RhdGFkaXJ9L3Blcmw1IFwKICIKIAogUkRFUEVORFNfJHtQTn0tcGVybHRvb2xzID0gIiR7UE59IHBlcmwgcGVybC1tb2R1bGUtZmlsZS1wYXRoIGZpbmR1dGlscyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkYzRlYmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGdpdC5pbmMKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKLSAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKLSAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCi0KLVNSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjM3NDY3ZGE4ZTc5ZTcyZjI4NTk4ZDY2N2YyMTlmNzVlIgotU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiNTZjZmE0OGFmMmIyODliYmExNzJjYTBhNDdjMjlmMDA4M2Y1ODQ2Y2Y0NzU5OTc4YjcwOTg4ZTRmMDdmYzlmZCIKLVNSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICI1NTg3NDA3ZjNjMjg0NDZhZjEyZmRlM2YzMTMxYmEzNCIKLVNSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJkNDk5ZTgyNWY0MjlkNzY4NjJiZTQxNWY1NzljMjBjYzI2YjA0NjU3M2EzYTM5MjM3YWNhZjk2ODJjYjcxYmU3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjk2MGMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjE4LjEuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSBnaXQuaW5jCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3Zfc25wcmludGZfcmV0dXJuc19ib2d1cz1ubyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPSR7YWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9eWVzfSBcCisgICAgICAgICAgICAgICAgICIKK0VYVFJBX09FTUFLRSArPSAiTk9fR0VUVEVYVD0xIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI5YjYyYzI2N2Q4NzhmNmNiMDJmOGFiYzU5YTk5NTI1ZCIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjVjNzEwYzg2NmQ4YzliYTNiM2UwNjI3NTVlMGU5ZDBlZjRmNjY1NzUyYmQ2NDgxMGUzZWI5ZjFiMGYwZWIwNzYiCitTUkNfVVJJW21hbnBhZ2VzLm1kNXN1bV0gPSAiZWYzMmE0NTlhNGEwOGEzYjhlODM3YTMxYzkyNWM4NDgiCitTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiZDA1YmZhYjJkYzQ1ZGU0ZjZlN2Q2MWNhMTczMDcxZDY5MDI5MDVhNDk2M2Y3YWMzY2JjYTYwOGMwZDQ1OTJjOSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1YjE0NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCi0KLUdPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgotU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCi1TUkNSRVYgPSAiNjc3OTBiM2RiZWRlNzJjZmRjNTRhYTUzYmU0NzA2MzIyYzk0OTllMCIKLQotaW5oZXJpdCBnbwotCi1SREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhMzJmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjIuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJWZW5kb3IgUGFja2FnZSBNYW5hZ2VtZW50IGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dsaWRlLnNoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTU0OTA1Y2Y4OTRmOGNjNDE2YTkyZjRmYzM1MGMzNWIyIgorCitHT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZSIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorU1JDUkVWID0gIjllZjZjYTMxM2IzMjAwMDc5ODYxZjJkZTRlNTY3YjFkMjIwODFkMTkiCisKK2luaGVyaXQgZ28KKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBmb3IgeDg2IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59CisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzEvCisjIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvaTU4Ni1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUvdXNyL2Jpbi9nbGlkZScgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0gKz0gInRleHRyZWwiCisKKyMgZm9yIGFhcmNoNjQgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0tcHRlc3QKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMy8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ2xpZGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9kZXBlbmRlbmN5L2RlcGVuZGVuY3kudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9yZXBvL3JlcG8udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9taXJyb3JzL21pcnJvcnMudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jZmcvY2ZnLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZ29kZXAvc3RyaXAvc3RyaXAudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9wYXRoL3BhdGgudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS90cmVlL3RyZWUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS91dGlsL3V0aWwudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9hY3Rpb24vYWN0aW9uLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAorIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvY2FjaGUvY2FjaGUudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvbXVzbC1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL211c2wtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE0NzQzNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvbXVzbC1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotc3VwcG9ydCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IGdudS1jb25maWctMjAxMjA4MTQvY29uZmlnLnN1YgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudS1jb25maWctMjAxMjA4MTQub3JpZy9jb25maWcuc3ViCTIwMTItMDktMTggMDI6Mjc6NDUuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ251LWNvbmZpZy0yMDEyMDgxNC9jb25maWcuc3ViCTIwMTQtMDMtMjYgMDA6MzQ6MTkuOTU1OTk2NzA5IC0wNzAwCi1AQCAtMTIzLDYgKzEyMyw3IEBACi0gbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wyLydgCi0gY2FzZSAkbWF5YmVfb3MgaW4KLSAgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAotKyAgbGludXgtbXVzbCogfCBcCi0gICBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCi0gICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAotICAga29wZW5zb2xhcmlzKi1nbnUqIHwgXAotQEAgLTEzNjUsNiArMTM2Niw3IEBACi0gCSAgICAgIHwgLWN5Z3dpbiogfCAtbXN5cyogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLSAJICAgICAgfCAtbWluZ3czMiogfCAtbWluZ3c2NCogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCi0gCSAgICAgIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCi0rCSAgICAgIHwgLWxpbnV4LW11c2wqIFwKLSAJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAotIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAotIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q0MjhiOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfMjAxMjA4MTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gImdudS1jb25maWdpemUiCi1ERVNDUklQVElPTiA9ICJUb29sIHRoYXQgaW5zdGFsbHMgdGhlIEdOVSBjb25maWcuZ3Vlc3MgLyBjb25maWcuc3ViIGludG8gYSBkaXJlY3RvcnkgdHJlZSIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlnLmd1ZXNzO2VuZGxpbmU9Mzk7bWQ1PWI3OWE0NjYzNDc1ZjRkNzI0ODQ2NDYzMjc3ODE3ZTBkIgotCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLQotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLQotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9nbnUtY29uZmlnL2dudS1jb25maWctJHtQVn0udGFyLmJ6MiBcCi0JICAgZmlsZTovL211c2wtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmNmY2E1YTJiYjM5ZWRhZDRhYWU1YTY1ZWZjODQwOTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDRmOTlhOGU3NmYzZThlNGZlYzBiYjVhZDQ3NjJmOGU0NDM2NjE2ODU1NGNlNjZjYjg1YWZiZTJlZDNlZmQ4YiIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ251LWNvbmZpZyBcCi0JCSAgICR7RH0ke2JpbmRpcn0KLQljYXQgJHtXT1JLRElSfS9nbnUtY29uZmlnaXplLmluIHwgXAotCQlzZWQgLWUgJ3MsQGdudS1jb25maWdkaXJALCR7ZGF0YWRpcn0vZ251LWNvbmZpZyxnJyBcCi0JCSAgICAtZSAncyxAYXV0b200dGVfcGVybGxpYmRpckAsJHtkYXRhZGlyfS9hdXRvY29uZixnJyA+ICR7RH0ke2JpbmRpcn0vZ251LWNvbmZpZ2l6ZQotCSMgSW4gdGhlIG5hdGl2ZSBjYXNlIHdlIHdhbnQgdGhlIHN5c3RlbSBwZXJsIGFzIHBlcmwtbmF0aXZlIGNhbid0IGhhdmUgYnVpbHQgeWV0Ci0JaWYgWyAiJHtQTn0iICE9ICJnbnUtY29uZmlnLW5hdGl2ZSIgLWEgIiR7UE59IiAhPSAibmF0aXZlc2RrLWdudS1jb25maWciIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzLC91c3IvYmluL2Vudiwke2JpbmRpcn0vZW52LGcnICR7RH0ke2JpbmRpcn0vZ251LWNvbmZpZ2l6ZQotCWZpCi0JY2htb2QgNzU1ICR7RH0ke2JpbmRpcn0vZ251LWNvbmZpZ2l6ZQotCWluc3RhbGwgLW0gMDY0NCBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiAke0R9JHtkYXRhZGlyfS9nbnUtY29uZmlnLwotfQotCi1QQUNLQUdFUyA9ICIke1BOfSIKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L2dudS1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCmluZGV4IDhkZTgxMzguLjQ3NDVmMTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgpAQCAtMiwxNCArMiwxNCBAQAogREVTQ1JJUFRJT04gPSAiVG9vbCB0aGF0IGluc3RhbGxzIHRoZSBHTlUgY29uZmlnLmd1ZXNzIC8gY29uZmlnLnN1YiBpbnRvIGEgZGlyZWN0b3J5IHRyZWUiCiBTRUNUSU9OID0gImRldmVsIgogTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlnLmd1ZXNzO2JlZ2lubGluZT03O2VuZGxpbmU9Mjc7bWQ1PTliYWM4YjE3NDNjMjI0MGFlMDdjY2U2ZTU0NmFjMmYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29uZmlnLmd1ZXNzO2JlZ2lubGluZT03O2VuZGxpbmU9Mjc7bWQ1PWI3NWQ0MmY1OWY3MDZlYTU2ZDZhOGUwMDIxNmZjYTZhIgogCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIAotU1JDUkVWID0gImI1NzZmYTg3YzE0MGI4MjQ0NjZlZjE2MzhlOTQ1ZTg3ZGM1YzAzNDMiCi1QViA9ICIyMDE1MDcyOCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIzMGQ1M2ZjNDI4ZWE0MmFmOWQ2ZjRkMzU1ZGIwMDIyZTM5MThhODI0IgorUFYgPSAiMjAxODA3MTMrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRmMGZjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1HT19CQVNFVkVSU0lPTiA9ICIxLjEwIgotR09fTUlOT1IgPSAiLjMiCi1QViAuPSAiJHtHT19NSU5PUn0iCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA4LWNtZC1pbnRlcm5hbC1vYmotYXJtNjQtZml4LWJyYW5jaC10b28tZmFyLXdpdGgtVEJaLWwucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIgotCi1TUkNfVVJJW21haW4ubWQ1c3VtXSA9ICJkMTVkZmIyNjQxMDVjNWU4NGZiZTMzZjRhNGFhNTAyMSIKLVNSQ19VUklbbWFpbi5zaGEyNTZzdW1dID0gIjU2N2IxY2M2NmM5NzA0ZDFjMDE5YzUwYmVmOTQ2MjcyZTkxMWVjNmJhZjI0NDMxMGY4N2Y0ZTY3OGJlMTU1ZjIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JiMzNiMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA3YTdkZTQ2MTI5ZmE2ODU5ZmI2MzExMDk2ZWI5ZjU0YzUzYzdmZTJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IE1vbiwgMTkgRmViIDIwMTggMDg6NDk6MzMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzldIGFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotaW5kZXggNjAzZjdiNTA2MC4uZjg5MTEyM2Y5YyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1AQCAtODIsMTEgKzgyLDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgewotIAotIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQotIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMob3MuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWNjID0gZW52WzBdCi0rCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNYWCIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWN4eCA9IGVudlswXQotKwkJY3h4ID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ1hYIiwgVmFsdWU6IGN4eH0pCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGYzN2E5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLUZyb20gOGIyZmVhZWU4MWQ3YTE2YWRjNTllNjFkMDZjMWU3MzE0ZDNhNTQwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYwotCi1HbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bwotZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KLVRoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0Ci1jYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgotCi1Ib3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKLWRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKLWxpYnJhcnkuCi0KLUZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcwotYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCi1vZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgotCi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi1HT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQotZW1iZWRkaW5nIGlzIGRpc2FibGVkLgotCi1TZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCi1wYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAotYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKLWR1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAotdGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCi1jZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCi1kZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgotCi1UaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKLXNpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAotYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCi1ydW50aW1lL2NnbykuCi0KLVRoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQotYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAotYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDIgKy0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCBmODkxMTIzZjljLi5lYmFjZmJmZGJjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC0xMTMsNyArMTEzLDcgQEAgZnVuYyBmaW5kRW52KGVudiBbXWNmZy5FbnZWYXIsIG5hbWUgc3RyaW5nKSBzdHJpbmcgewotIGZ1bmMgRXh0cmFFbnZWYXJzKCkgW11jZmcuRW52VmFyIHsKLSAJdmFyIGIgd29yay5CdWlsZGVyCi0gCWIuSW5pdCgpCi0tCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCi0rCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCi0gCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggYzRjMTUwMGViMi4uYjBmNmI0NTY0NyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTE3Myw2ICsxNzMsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKLSAJd2cuV2FpdCgpCi0gfQotIAotK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCi0rCi0gLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KLSBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAlwIDo9IGEuUGFja2FnZQotQEAgLTE4OSw3ICsxOTEsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KLSAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgotIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCi0tCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKLSAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQotIAl9Ci0gCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi1AQCAtMTk3LDEzICsxOTksMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKLSAJZm10LkZwcmludGYoaCwgIm9taXRkZWJ1ZyAldiBzdGFuZGFyZCAldiBsb2NhbCAldiBwcmVmaXggJXFcbiIsIHAuSW50ZXJuYWwuT21pdERlYnVnLCBwLlN0YW5kYXJkLCBwLkludGVybmFsLkxvY2FsLCBwLkludGVybmFsLkxvY2FsUHJlZml4KQotIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQotLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgXywgXyA6PSBiLkNGbGFncyhwKQotLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MpCi0rCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBfLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCi0rCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MpCi0gCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKLSAJCX0KLSAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKLS0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQotKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQotIAkJfQotIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KLSAJfQotQEAgLTE3MzEsMzMgKzE3MzMsMzMgQEAgdmFyICgKLSAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKLStmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgotQEAgLTE3NjYsMTEgKzE3NjgsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7Ci0gLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5Ci0gLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KLSAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KLS1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLStmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCi0gCWlmIGxlbihjb21waWxlcikgPT0gMCB7Ci0gCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKLSsJfQotIAlyZXR1cm4gY29tcGlsZXIKLSB9Ci0gCi1AQCAtMTkyMCw4ICsxOTI1LDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCi0gfQotIAotK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKLSsKLStmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKLSsJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCi0rCWlmICFmaWx0ZXJGbGFncyB7Ci0rCQlyZXR1cm4gZmxhZ3MKLSsJfQotKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7Ci0rCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7Ci0rCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCi0rCQl9Ci0rCX0KLSsJcmV0dXJuIG5ld2ZsYWdzCi0rfQotKwotIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCi0tZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKLSAKLSAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgewotQEAgLTE5MzksNiArMTk1OSwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAotIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuCi0gCX0KLSsJaWYgZmlsdGVyZWQgewotKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQotKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCi0rCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCi0rCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKLSsJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCi0rCX0KLSAKLSAJcmV0dXJuCi0gfQotQEAgLTE5NTQsNyArMTk4MSw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKLSAKLSBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0gCXAgOj0gYS5QYWNrYWdlCi0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQotKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKLSAJfQotQEAgLTIzMDYsNyArMjMzMyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7Ci0gCi0gLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KLSBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgewotLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuICIiLCAiIiwgZXJyCi0gCX0KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MThmZTY2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGFjZDE3OWI0OWYxZmM4ZDZmN2Y2OWU1NjlmYjRhNTYwMzljNzI1YTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNToyNDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIIDMvOV0gYWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGVudmlyb25tZW50Ci0KLXRvIGFsbG93IGZvciBzcGxpdCBob3N0L3RhcmdldCBidWlsZCByb290cwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNiArKysrKy0KLSBzcmMvZ28vYnVpbGQvYnVpbGQuZ28gICAgICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLWluZGV4IDQ5ZWQ4MDAzM2UuLmFmYzYxNWI1YzIgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTIyMCw3ICsyMjAsOSBAQCBmdW5jIHhpbml0KCkgewotIAl3b3JrZGlyID0geHdvcmtkaXIoKQotIAl4YXRleGl0KHJtd29ya2RpcikKLSAKLS0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSsJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwl9Ci0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotaW5kZXggMWRlNGYwZGM3OS4uNGY2MDEwZDY2MCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1AQCAtOTYsNyArOTYsMTEgQEAgZnVuYyBpbml0KCkgewotIAkvLyBhcyB0aGUgdG9vbCBkaXJlY3RvcnkgZG9lcyBub3QgbW92ZSBiYXNlZCBvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0gCS8vIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbiBnby9idWlsZCwKLSAJLy8gZXhjZXB0IGZvciB1c2luZyBHT1JPT1QgcmF0aGVyIHRoYW4gcnVudGltZS5HT1JPT1QoKS4KLS0JYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQotKwlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgewotKwkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkNsZWFuKHMpCi0rCX0gZWxzZSB7Ci0rCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihHT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCX0KLSB9Ci0gCi0gZnVuYyBmaW5kR09ST09UKCkgc3RyaW5nIHsKLWRpZmYgLS1naXQgYS9zcmMvZ28vYnVpbGQvYnVpbGQuZ28gYi9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLWluZGV4IDY4ZmI0MjM5ODMuLjgxYjFiMzIyNzAgMTAwNjQ0Ci0tLS0gYS9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLSsrKyBiL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTE1OTQsNyArMTU5NCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjNjYTk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA4NTI1MmYwYmQ4NzQzMjIzZWI3NzhlZGJlOWZiMzFkZmYxN2EyM2Q4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCi0KLXNvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCi1jYW4gZmluZCB0aGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1pbmRleCA2ZGNhZjY0MTIyLi4xMWNiYjhhOGJiIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotQEAgLTExMzQsNiArMTEzNCw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgewotIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCi0gCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCi1AQCAtMTE0NSw2ICsxMTQ2LDggQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCX0KLSAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotKwotIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKLSAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4gewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKLUBAIC0xMTUzLDYgKzExNTYsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJfQotIAl9Ci0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2E5MzkzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAxNjEyNGQ4NDY0OGY0ZGZkZmE0NzM4YzU2NjBiNTQwMGIzMGJmOWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzldIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAotIGdvX2Jvb3RzdHJhcAotCi1mb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL21ha2UuYmFzaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAotaW5kZXggOTNhNWM0M2QxMS4uM2E2MzY4MmJjNCAxMDA3NTUKLS0tLSBhL3NyYy9tYWtlLmJhc2gKLSsrKyBiL3NyYy9tYWtlLmJhc2gKLUBAIC0xNjIsNyArMTYyLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KLSAJZXhpdCAxCi0gZmkKLSBybSAtZiBjbWQvZGlzdC9kaXN0Ci0tR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0gCi0gIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgotIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQotQEAgLTE5Myw3ICsxOTMsNyBAQCBmaQotICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KLSAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KLSAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgotIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAotIAotICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZTY5OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotRnJvbSAyZjA3YWYzNDY5N2M2MWRlY2RjZmE1YjExNDM0NDUxZmJjZjM3NzA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMTA6MDM6NDggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzldIGNtZC9kaXN0OiBzZXBhcmF0ZSBob3N0IGFuZCB0YXJnZXQgYnVpbGRzCi0KLUNoYW5nZSB0aGUgZGlzdCB0b29sIHRvIGFsbG93IGZvciBPRS1zdHlsZSBjcm9zcy0KLWFuZCBjcm9zcy1jYW5hZGlhbiBidWlsZHM6Ci0KLSAtIGNvbW1hbmQgZmxhZ3MgLS1ob3N0LW9ubHkgYW5kIC0tdGFyZ2V0IG9ubHkgYXJlIGFkZGVkOwotICAgaWYgb25lIGlzIHByZXNlbnQsIHRoZSBvdGhlciBjaGFuZ2VzIG1lbnRpb25lZCBiZWxvdwotICAgdGFrZSBlZmZlY3QsIGFuZCBhcmd1bWVudHMgbWF5IGFsc28gYmUgc3BlY2lmaWVkIG9uCi0gICB0aGUgY29tbWFuZCBsaW5lIHRvIGVudW1lcmF0ZSB0aGUgcGFja2FnZShzKSB0byBiZQotICAgYnVpbHQuCi0KLSAtIGZvciBPRSBjcm9zcyBidWlsZHMsIGdvX2Jvb3RzdHJhcCBpcyBhbHdheXMgYnVpbHQgZm9yCi0gICB0aGUgY3VycmVudCBidWlsZCBob3N0LCBhbmQgaXMgbW92ZWQsIGFsb25nIHdpdGggdGhlIHN1cHBvcnRpbmcKLSAgIHRvb2xjaGFpbiAoYXNtLCBjb21waWxlLCBldGMuKSB0byBhIHNlcGFyYXRlICduYXRpdmVfbmF0aXZlJwotICAgZGlyZWN0b3J5IHVuZGVyIEdPUk9PVC9wa2cvdG9vbC4KLQotIC0gZ29fYm9vdHN0cmFwIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYWZ0ZXIgdGhlIGJ1aWxkLAotICAgc28gaXQgY2FuIGJlIHJldXNlZCBsYXRlciAoZS5nLiwgYnVpbGRpbmcgYm90aCBzdGF0aWMgYW5kCi0gICBzaGFyZWQgcnVudGltZSkuCi0KLU5vdGUgdGhhdCBmb3IgLS1ob3N0LW9ubHkgYnVpbGRzLCBpdCB3b3VsZCBiZSBuaWNlIHRvIHNwZWNpZnkKLWp1c3QgdGhlICJjbWQiIHBhY2thZ2UgdG8gYnVpbGQgb25seSB0aGUgZ28gY29tbWFuZHMvdG9vbHMsCi10aGUgc3RhbGVuZXNzIGNoZWNrcyBpbiB0aGUgZGlzdCB0b29sIHdpbGwgZmFpbCBpZiB0aGUgInN0ZCIKLWxpYnJhcnkgaGFzIG5vdCBhbHNvIGJlZW4gYnVpbHQuICBTbyBob3N0LW9ubHkgYnVpbGRzIGhhdmUgdG8KLWJ1aWxkIGV2ZXJ5dGhpbmcgYW55d2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi1tb3JlIGRpc3QgY2xlYW51cAotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotaW5kZXggYWZjNjE1YjVjMi4uMzYyNjI2NjViMiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1AQCAtMzgsNiArMzgsNyBAQCB2YXIgKAotIAlnb2xkZmxhZ3MgICAgICAgIHN0cmluZwotIAl3b3JrZGlyICAgICAgICAgIHN0cmluZwotIAl0b29sZGlyICAgICAgICAgIHN0cmluZwotKwlidWlsZF90b29sZGlyCSBzdHJpbmcKLSAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKLSAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKLSAJZXhlICAgICAgICAgICAgICBzdHJpbmcKLUBAIC00OSw2ICs1MCw3IEBAIHZhciAoCi0gCi0gCXJlYnVpbGRhbGwgICBib29sCi0gCWRlZmF1bHRjbGFuZyBib29sCi0rCWNyb3NzQnVpbGQgICBib29sCi0gCi0gCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKLSApCi1AQCAtMjIzLDYgKzIyNSw4IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotIAl9Ci0rCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKLSsKLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1AQCAtMjUyLDcgKzI1Niw2IEBAIGZ1bmMgY29tcGlsZXJFbnYoZW52TmFtZSwgZGVmIHN0cmluZykgbWFwW3N0cmluZ11zdHJpbmcgewotIAkJaWYgZ29ob3N0b3MgIT0gZ29vcyB8fCBnb2hvc3RhcmNoICE9IGdvYXJjaCB7Ci0gCQkJbVtnb2hvc3RvcysiLyIrZ29ob3N0YXJjaF0gPSBtWyIiXQotIAkJfQotLQkJbVsiIl0gPSBlbnYKLSAJfQotIAotIAlmb3IgXywgZ29vcyA6PSByYW5nZSBva2dvb3MgewotQEAgLTQ3OSw4ICs0ODIsMTAgQEAgZnVuYyBzZXR1cCgpIHsKLSAJLy8gV2Uga2VlcCBpdCBpbiBwa2cvLCBqdXN0IGxpa2UgdGhlIG9iamVjdCBkaXJlY3RvcnkgYWJvdmUuCi0gCWlmIHJlYnVpbGRhbGwgewotIAkJeHJlbW92ZWFsbCh0b29sZGlyKQotKwkJeHJlbW92ZWFsbChidWlsZF90b29sZGlyKQotIAl9Ci0gCXhta2RpcmFsbCh0b29sZGlyKQotKwl4bWtkaXJhbGwoYnVpbGRfdG9vbGRpcikKLSAKLSAJLy8gUmVtb3ZlIHRvb2wgYmluYXJpZXMgZnJvbSBiZWZvcmUgdGhlIHRvb2wvZ29ob3N0b3NfZ29ob3N0YXJjaAotIAl4cmVtb3ZlYWxsKHBhdGhmKCIlcy9iaW4vdG9vbCIsIGdvcm9vdCkpCi1AQCAtMTEzMCwxMSArMTEzNSwyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAKLSAJdmFyIG5vQmFubmVyIGJvb2wKLSAJdmFyIGRlYnVnIGJvb2wKLSsJdmFyIGhvc3RPbmx5IGJvb2wKLSsJdmFyIHRhcmdldE9ubHkgYm9vbAotKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5nIHsgInN0ZCIsICJjbWQiIH0KLSsKLSAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCi0gCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKLSAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCi0rCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCi0rCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCi0gCi0tCXhmbGFncGFyc2UoMCkKLSsJeGZsYWdwYXJzZSgtMSkKLSsKLSsJaWYgKGhvc3RPbmx5ICYmIHRhcmdldE9ubHkpIHsKLSsJCWZhdGFsZigic3BlY2lmeSBvbmx5IG9uZSBvZiAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwl9Ci0rCWNyb3NzQnVpbGQgPSBob3N0T25seSB8fCB0YXJnZXRPbmx5Ci0rCWlmIGZsYWcuTkFyZygpID4gMCB7Ci0rCQlpZiBjcm9zc0J1aWxkIHsKLSsJCQl0b0J1aWxkID0gZmxhZy5BcmdzKCkKLSsJCX0gZWxzZSB7Ci0rCQkJZmF0YWxmKCJwYWNrYWdlIG5hbWVzIG5vdCBwZXJtaXR0ZWQgd2l0aG91dCAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQotKwkJfQotKwl9Ci0gCi0gCWlmIGRlYnVnIHsKLSAJCS8vIGNtZC9idWlsZGlkIGlzIHVzZWQgaW4gZGVidWcgbW9kZS4KLUBAIC0xMTgyLDggKzEyMDUsMTMgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAKLS0JZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotLQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAotKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAotKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCX0KLSAJZ29Cb290c3RyYXAgOj0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpCi0gCWNtZEdvIDo9IHBhdGhmKCIlcy9nbyIsIGdvYmluKQotIAlpZiBkZWJ1ZyB7Ci1AQCAtMTIxMiw3ICsxMjQwLDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAkJeHByaW50ZigiXG4iKQotIAl9Ci0gCXhwcmludGYoIkJ1aWxkaW5nIEdvIHRvb2xjaGFpbjIgdXNpbmcgZ29fYm9vdHN0cmFwIGFuZCBHbyB0b29sY2hhaW4xLlxuIikKLS0Jb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlvcy5TZXRlbnYoIkNDIiwgZGVmYXVsdGNjWyIiXSkKLSsJfSBlbHNlIHsKLSsJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCX0KLSAJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCBhcHBlbmQoW11zdHJpbmd7Ii1pIn0sIHRvb2xjaGFpbi4uLikuLi4pCi0gCWlmIGRlYnVnIHsKLSAJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLUBAIC0xMjQ5LDQ1ICsxMjgxLDgyIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotIAotLQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0tCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLSsJaWYgY3Jvc3NCdWlsZCB7Ci0rCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKQotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJCXRvb2xfZmlsZXMsIF8gOj0gZmlsZXBhdGguR2xvYihwYXRoZigiJXMvKiIsIHRvb2xkaXIpKQotKwkJZm9yIF8sIGYgOj0gcmFuZ2UgdG9vbF9maWxlcyB7Ci0rCQkJY29weWZpbGUocGF0aGYoIiVzLyVzIiwgYnVpbGRfdG9vbGRpciwgZmlsZXBhdGguQmFzZShmKSksIGYsIHdyaXRlRXhlYykKLSsJCQl4cmVtb3ZlKGYpCi0rCQl9Ci0rCQlvcy5TZXRlbnYoIkdPVE9PTERJUiIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlnb0Jvb3RzdHJhcCA9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCBidWlsZF90b29sZGlyKQotKwkJaWYgaG9zdE9ubHkgewotKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciBob3N0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJ1biB0aGUgY21kR28gYmluYXJ5Ci0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCX0gZWxzZSBpZiB0YXJnZXRPbmx5IHsKLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCi0rCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IHJ1biB0aGUgdGFyZ2V0J3MgY21kR28gYmluYXJ5Ci0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAl9IGVsc2UgewotLQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KLS0JCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotLQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLS0JCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJfSBlbHNlIHsKLSsJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgotKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0rCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJfQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSAJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotIAkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQotLQotLQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLSsJCWlmIGRlYnVnIHsKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0gCQl9Ci0tCQlnb29zID0gb2xkZ29vcwotLQkJZ29hcmNoID0gb2xkZ29hcmNoCi0tCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotLQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0tCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotLQl9Ci0tCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0tCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKLS0JaWYgZGVidWcgewotLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotLQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQotLQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0tCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQotIAl9Ci0gCi0gCS8vIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuCi1AQCAtMTMwNSw3ICsxMzc0LDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAl9Ci0gCi0gCS8vIFJlbW92ZSBnb19ib290c3RyYXAgbm93IHRoYXQgd2UncmUgZG9uZS4KLS0JeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCS8vIEV4Y2VwdCB0aGF0IGZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy1idWlsZHMsIHdlIG5lZWQgdG8KLSsJLy8ga2VlcCBpdC4KLSsJaWYgISBjcm9zc0J1aWxkIHsKLSsJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwl9Ci0gCi0gCS8vIFByaW50IHRyYWlsaW5nIGJhbm5lciB1bmxlc3MgaW5zdHJ1Y3RlZCBvdGhlcndpc2UuCi0gCWlmICFub0Jhbm5lciB7Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNDI3NjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLUZyb20gZjk4YWEyODc5NDE0MTcyMjZhNmU0Zjc4NzU5ZjhhNWUxOTczMmNkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBGcmksIDIgTWFyIDIwMTggMDY6MDA6MjAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA3LzldIGNtZC9nbzogbWFrZSBHT1JPT1QgcHJlY2lvdXMgYnkgZGVmYXVsdAotCi1UaGUgZ28gYnVpbGQgdG9vbCBub3JtYWxseSByZWJ1aWxkcyB3aGF0ZXZlciBpdCBkZXRlY3RzIGlzCi1zdGFsZS4gIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSB3aGVuIEdPUk9PVCBpcyBpbnRlbmRlZCB0bwotYmUgcmVhZC1vbmx5IGFuZCB0aGUgZ28gcnVudGltZSBoYXMgYmVlbiBidWlsdCBhcyBhIHNoYXJlZAotbGlicmFyeSwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBldmVyeSBhcHBsaWNhdGlvbiB0byBiZSByZWJ1aWxkaW5nCi10aGUgc2hhcmVkIHJ1bnRpbWUgLSBwYXJ0aWN1bGFybHkgaW4gY3Jvc3MtYnVpbGQvcGFja2FnaW5nCi1zZXR1cHMsIHNpbmNlIHRoYXQgd291bGQgbGVhZCB0byAnYWJpIG1pc21hdGNoJyBydW50aW1lIGVycm9ycy4KLQotVGhpcyBwYXRjaCBwcmV2ZW50cyB0aGUgaW5zdGFsbCBhbmQgbGlua3NoYXJlZCBhY3Rpb25zIGZyb20KLWluc3RhbGxpbmcgdG8gR09ST09UIHVubGVzcyBvdmVycmlkZGVuIHdpdGggdGhlIEdPUk9PVF9PVkVSUklERQotZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA1ICsrKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1pbmRleCA5ZjFmOGY4YTUwLi5hMzgyODgwNDc0IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotQEAgLTU2Myw2ICs1NjMsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoYSwgYTEgKkFjdGlvbiwgc2hsaWIgc3RyaW5nKSB7Ci0gCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gewotIAkJCQljb250aW51ZQotIAkJCX0KLSsJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7Ci0rCQkJCWNvbnRpbnVlCi0rCQkJfQotIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCi0gCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAotIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggNTdiN2IwMDg3OS4uZTJiYTk1NDIwZSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMTQzLDYgKzE0Myw3IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgotIH0KLSAKLSBjb25zdCBjb25jdXJyZW50R0NCYWNrZW5kQ29tcGlsYXRpb25FbmFibGVkQnlEZWZhdWx0ID0gdHJ1ZQotK3ZhciBnb1Jvb3RQcmVjaW91cyBib29sID0gdHJ1ZQotIAotIGZ1bmMgaW5pdCgpIHsKLSAJLy8gYnJlYWsgaW5pdCBjeWNsZQotQEAgLTE1Niw2ICsxNTcsMTAgQEAgZnVuYyBpbml0KCkgewotIAotIAlBZGRCdWlsZEZsYWdzKENtZEJ1aWxkKQotIAlBZGRCdWlsZEZsYWdzKENtZEluc3RhbGwpCi0rCi0rCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7Ci0rCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCi0rCX0KLSB9Ci0gCi0gLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLWluZGV4IGIwZjZiNDU2NDcuLmM4ZjI2NmE4YWQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLUBAIC0zNzEsNiArMzcxLDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm1pc3Npbmcgb3IgaW52YWxpZCBiaW5hcnktb25seSBwYWNrYWdlIikKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKLSsJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCi0rCQlpZiBlcnIgPT0gbmlsIHsKLSsJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKLSsJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCQlpZiBiLkNvbXB1dGVTdGFsZU9ubHkgewotKwkJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKLSsJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci1AQCAtMTA5Nyw2ICsxMTE0LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3Rpb24pIChlcnIgZXJyb3IpIHsKLSAJCXJldHVybiBuaWwKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKLSsJCXAgOj0gYS5QYWNrYWdlCi0rCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKLSsJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQotKwkJCXJldHVybiBlcnIKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDgtY21kLWludGVybmFsLW9iai1hcm02NC1maXgtYnJhbmNoLXRvby1mYXItd2l0aC1UQlotbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOC1jbWQtaW50ZXJuYWwtb2JqLWFybTY0LWZpeC1icmFuY2gtdG9vLWZhci13aXRoLVRCWi1sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTc1NDE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOC1jbWQtaW50ZXJuYWwtb2JqLWFybTY0LWZpeC1icmFuY2gtdG9vLWZhci13aXRoLVRCWi1sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSA0MWI5MGVkN2FmMTBhMDcxY2NmZWVkZTZhNDI5ZTBkODA1MTg0MzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlcnJ5IFpoYW5nIDxjaGVycnl5ekBnb29nbGUuY29tPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDozMTozOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDgvOV0gY21kL2ludGVybmFsL29iai9hcm02NDogZml4IGJyYW5jaC10b28tZmFyIHdpdGggVEJaIGxpa2UKLSBpbnN0cnVjdGlvbnMKLQotVGhlIGNvbXBpbGVyIG5vdyBlbWl0cyBUQlogbGlrZSBpbnN0cnVjdGlvbnMsIGJ1dCB0aGUgYXNzZW1ibGVyJ3MKLXRvby1mYXItYnJhbmNoIHBhdGNoIGNvZGUgZGlkbid0IGluY2x1ZGUgdGhhdCBjYXNlLiBBZGQgaXQuCi0KLUZpeGVzICMyMzg4OS4KLQotQ2hhbmdlLUlkOiBJYjc1ZjkyNTBjNjYwYjlmYjY1MjgzNWZiYzgzMjYzYTVkNTA3M2RjNQotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbyAgICAgfCAxMSArKysrKysrKystLQotIHNyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvIHwgIDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbTcuZ28gYi9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc203LmdvCi1pbmRleCBjYTgxMjM4YzkzLi5iMWVlNTUyNDg5IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbwotKysrIGIvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtNy5nbwotQEAgLTY5Niw5ICs2OTYsMTYgQEAgZnVuYyBzcGFuNyhjdHh0ICpvYmouTGluaywgY3Vyc3ltICpvYmouTFN5bSwgbmV3cHJvZyBvYmouUHJvZ0FsbG9jKSB7Ci0gCQkJbyA9IGMub3Bsb29rKHApCi0gCi0gCQkJLyogdmVyeSBsYXJnZSBicmFuY2hlcyAqLwotLQkJCWlmIChvLnR5cGVfID09IDcgfHwgby50eXBlXyA9PSAzOSkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UKLSsJCQlpZiAoby50eXBlXyA9PSA3IHx8IG8udHlwZV8gPT0gMzkgfHwgby50eXBlXyA9PSA0MCkgJiYgcC5QY29uZCAhPSBuaWwgeyAvLyA3OiBCRVEgYW5kIGxpa2UsIDM5OiBDQlogYW5kIGxpa2UsIDQwOiBUQlogYW5kIGxpa2UKLSAJCQkJb3R4dCA6PSBwLlBjb25kLlBjIC0gcGMKLS0JCQkJaWYgb3R4dCA8PSAtKDE8PDE4KSsxMCB8fCBvdHh0ID49ICgxPDwxOCktMTAgewotKwkJCQl2YXIgdG9vZmFyIGJvb2wKLSsJCQkJc3dpdGNoIG8udHlwZV8gewotKwkJCQljYXNlIDcsIDM5OiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxOSBiaXRzCi0rCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MjApKzEwIHx8IG90eHQgPj0gKDE8PDIwKS0xMAotKwkJCQljYXNlIDQwOiAvLyBicmFuY2ggaW5zdHJ1Y3Rpb24gZW5jb2RlcyAxNCBiaXRzCi0rCQkJCQl0b29mYXIgPSBvdHh0IDw9IC0oMTw8MTUpKzEwIHx8IG90eHQgPj0gKDE8PDE1KS0xMAotKwkJCQl9Ci0rCQkJCWlmIHRvb2ZhciB7Ci0gCQkJCQlxIDo9IGMubmV3cHJvZygpCi0gCQkJCQlxLkxpbmsgPSBwLkxpbmsKLSAJCQkJCXAuTGluayA9IHEKLWRpZmYgLS1naXQgYS9zcmMvY21kL2ludGVybmFsL29iai9hcm02NC9hc21fdGVzdC5nbyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCi1pbmRleCAzNjljNDhmNTEwLi4zZTBjOWMxM2E2IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9pbnRlcm5hbC9vYmovYXJtNjQvYXNtX3Rlc3QuZ28KLSsrKyBiL3NyYy9jbWQvaW50ZXJuYWwvb2JqL2FybTY0L2FzbV90ZXN0LmdvCi1AQCAtNTIsNiArNTIsNyBAQCBmdW5jIFRlc3RMYXJnZSh0ICp0ZXN0aW5nLlQpIHsKLSAvLyBnZW4gZ2VuZXJhdGVzIGEgdmVyeSBsYXJnZSBwcm9ncmFtLCB3aXRoIGEgdmVyeSBmYXIgY29uZGl0aW9uYWwgYnJhbmNoLgotIGZ1bmMgZ2VuKGJ1ZiAqYnl0ZXMuQnVmZmVyKSB7Ci0gCWZtdC5GcHJpbnRsbihidWYsICJURVhUIGYoU0IpLDAsJDAtMCIpCi0rCWZtdC5GcHJpbnRsbihidWYsICJUQlogJDUsIFIwLCBsYWJlbCIpCi0gCWZtdC5GcHJpbnRsbihidWYsICJDQlogUjAsIGxhYmVsIikKLSAJZm10LkZwcmludGxuKGJ1ZiwgIkJFUSBsYWJlbCIpCi0gCWZvciBpIDo9IDA7IGkgPCAxPDwxOTsgaSsrIHsKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTAvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZiMDBiMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEwLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotRnJvbSBmNTc1ZDg1YzRiZDliMjkwMzIyM2Q2YzBkY2MzOGExMjc3NWQ1ODJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFN1biwgMTggRmViIDIwMTggMDg6MjQ6MDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIGxkOiByZXBsYWNlIGdsaWJjIGR5bmFtaWMgbGlua2VyIHdpdGggbXVzbAotCi1SZXdvcmsgb2YgcGF0Y2ggYnkgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLWZvciBnbyAxLjEwLiAgU2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWxseSBvbgotbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtSZWFsIGZpeCBzaG91bGQgYmUgcG9ydGFibGUgYWNyb3NzIGxpYmNzXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbwotaW5kZXggODdlODA5MTY2YS4uZjUyMmE2MzAzNCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi1pbmRleCBkYTE2ZjkyMzQ1Li5mZDE0OTQwZWRlIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi1AQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAotIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1pbmRleCA2YjM4NmFkNzM3Li45OTg2MzcxMmNjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKLSAKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KLWluZGV4IGM1ZDM0NTFjMzkuLmZkODVlNjM2OGQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbwotQEAgLTYwLDcgKzYwLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWIvbGQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1tdXNsLW1pcHNsZS5zby4xIiwKLSAKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCi1pbmRleCA4Mzk3NGU1YjU2Li4wOTcyMjRmNmRhIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCi1AQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotaW5kZXggMjczZDliNDJjYi4uYTUwM2FiZThlYSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1pbmRleCA5YWM3ZWI4MjE3Li4zODI1ZmY3YWJlIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAotIAotIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLWluZGV4IDZhNzQ0ZGMwNGUuLmQ4MWYzOTI1NDkgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLUBAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLWxpbnV4LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgIi91c3IvbGliZXhlYy9sZC5lbGZfc28iLAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDJlNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS5pbmMKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuMTEiCitHT19NSU5PUiA9ICIuMSIKK1BWIC49ICIke0dPX01JTk9SfSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCisiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCisKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gImViOWU5NzkyMjQ3MTQzNzA1YTdhYWNlYTkzOThjZGUwIgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiNTU4ZjhjMTY5YWUyMTVlMjViODE0MjE1OTZlOGRlNzU3MmJkM2JhODI0Yjc5YWRkMjJmYmE2ZTI4NGRiMTExNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDI4NTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gN2NjNTE5YWE1Zjg0Y2Y4ZmM3YWM4YzEwZmM2OWFhODA0MDMzMGVhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjQ5OjMzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitpbmRleCBhZmFkYmFkLi5jZWRiZmJmIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC04NSwxMSArODUsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7CisgCisgCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCisgCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgeworLQkJY2MgPSBlbnZbMF0KKysJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQorIAl9CisgCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKKyAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgeworLQkJY3h4ID0gZW52WzBdCisrCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogY3h4fSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDAyLWNtZC1nby1tYWtlLWNvbnRlbnQtYmFzZWQtaGFzaC1nZW5lcmF0aW9uLWxlc3MtcGVkYW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZiODU2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCkBAIC0wLDAgKzEsMjE4IEBACitGcm9tIDQ3ZGI2OWUyMGVkNjZmYjYyYjAxYWZmZDgzZDgyOTY1NGI4Mjk4OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogTW9uLCAxOSBGZWIgMjAxOCAwODo1MDo1OSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYworCitHbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bworZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KK1RoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0CitjYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgorCitIb3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKK2RvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKK2xpYnJhcnkuCisKK0ZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcworYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCitvZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgorCitUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitHT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQorZW1iZWRkaW5nIGlzIGRpc2FibGVkLgorCitTZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCitwYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAorYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKK2R1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAordGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCitjZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCitkZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgorCitUaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKK3NpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAorYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCitydW50aW1lL2NnbykuCisKK1RoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQorYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAorYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCAgMiArLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvICB8IDYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitpbmRleCBjZWRiZmJmLi41NzYzYTBkIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xMjgsNyArMTI4LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgeworIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKKyAJdmFyIGIgd29yay5CdWlsZGVyCisgCWIuSW5pdCgpCistCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCisrCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCisgCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworaW5kZXggMTJlMTUyNy4uZTQxYmZhYyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTE3NCw2ICsxNzQsOCBAQCBmdW5jIChiICpCdWlsZGVyKSBEbyhyb290ICpBY3Rpb24pIHsKKyAJd2cuV2FpdCgpCisgfQorIAorK3ZhciBvbWl0R29wYXRoID0gb3MuR2V0ZW52KCJHT1BBVEhfT01JVF9JTl9BQ1RJT05JRCIpICE9ICIiCisrCisgLy8gYnVpbGRBY3Rpb25JRCBjb21wdXRlcyB0aGUgYWN0aW9uIElEIGZvciBhIGJ1aWxkIGFjdGlvbi4KKyBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAlwIDo9IGEuUGFja2FnZQorQEAgLTE5MCw3ICsxOTIsNyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgeworIAkvLyBidXQgaXQgZG9lcyBub3QgaGlkZSB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUEFUSC4KKyAJLy8gSW5jbHVkZSB0aGUgZnVsbCBkaXIgaW4gdGhhdCBjYXNlLgorIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCistCWlmICFwLkdvcm9vdCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIXN0cmluZ3MuSGFzUHJlZml4KHAuRGlyLCBiLldvcmtEaXIpIHsKKyAJCWZtdC5GcHJpbnRmKGgsICJkaXIgJXNcbiIsIHAuRGlyKQorIAl9CisgCWZtdC5GcHJpbnRmKGgsICJnb29zICVzIGdvYXJjaCAlc1xuIiwgY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCitAQCAtMjAxLDEzICsyMDMsMTMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3Rpb24pIGNhY2hlLkFjdGlvbklEIHsKKyAJfQorIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQorLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwKQorLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCisrCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCisrCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCisgCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKKyAJCX0KKyAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQorIAkJfQorIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KKyAJfQorQEAgLTIwOTYsMzMgKzIwOTgsMzMgQEAgdmFyICgKKyAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIikKKytmdW5jIChiICpCdWlsZGVyKSBmY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisrCXJldHVybiBiLmNvbXBpbGVyRXhlKG9zLkdldGVudigiRkMiKSwgImdmb3J0cmFuIiwgZmlsdGVyZWQpCisgfQorIAorIC8vIGNvbXBpbGVyRXhlIHJldHVybnMgdGhlIGNvbXBpbGVyIHRvIHVzZSBnaXZlbiBhbgorQEAgLTIxMzEsMTEgKzIxMzMsMTQgQEAgZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CisgLy8gb2YgdGhlIGNvbXBpbGVyIGJ1dCBjYW4gaGF2ZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5CisgLy8gd2VyZSBwcmVzZW50IGluIHRoZSBlbnZpcm9ubWVudCB2YWx1ZS4KKyAvLyBGb3IgZXhhbXBsZSBpZiBDQz0iZ2NjIC1ER09QSEVSIiB0aGVuIHRoZSByZXN1bHQgaXMgWyJnY2MiLCAiLURHT1BIRVIiXS4KKy1mdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKytmdW5jIChiICpCdWlsZGVyKSBjb21waWxlckV4ZShlbnZWYWx1ZSBzdHJpbmcsIGRlZiBzdHJpbmcsIGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKyAJY29tcGlsZXIgOj0gc3RyaW5ncy5GaWVsZHMoZW52VmFsdWUpCisgCWlmIGxlbihjb21waWxlcikgPT0gMCB7CisgCQljb21waWxlciA9IFtdc3RyaW5ne2RlZn0KKyAJfQorKwlpZiBmaWx0ZXJlZCB7CisrCQlyZXR1cm4gYXBwZW5kKGNvbXBpbGVyWzA6MV0sIGZpbHRlckNvbXBpbGVyRmxhZ3MoY29tcGlsZXJbMTpdKS4uLikKKysJfQorIAlyZXR1cm4gY29tcGlsZXIKKyB9CisgCitAQCAtMjI4NSw4ICsyMjkwLDIzIEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIHN0cmluZ3MuRmllbGRzKHYpCisgfQorIAorK3ZhciBmaWx0ZXJGbGFncyA9IG9zLkdldGVudigiQ0dPX1BFREFOVElDIikgPT0gIiIKKysKKytmdW5jIGZpbHRlckNvbXBpbGVyRmxhZ3MoZmxhZ3MgW11zdHJpbmcpIFtdc3RyaW5nIHsKKysJdmFyIG5ld2ZsYWdzIFtdc3RyaW5nCisrCWlmICFmaWx0ZXJGbGFncyB7CisrCQlyZXR1cm4gZmxhZ3MKKysJfQorKwlmb3IgXywgZmxhZyA6PSByYW5nZSBmbGFncyB7CisrCQlpZiBzdHJpbmdzLkhhc1ByZWZpeChmbGFnLCAiLW0iKSB7CisrCQkJbmV3ZmxhZ3MgPSBhcHBlbmQobmV3ZmxhZ3MsIGZsYWcpCisrCQl9CisrCX0KKysJcmV0dXJuIG5ld2ZsYWdzCisrfQorKworIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCistZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKKyAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKKyAKKyAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgeworQEAgLTIzMDQsNiArMjMyNCwxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAorIAlpZiBsZGZsYWdzLCBlcnIgPSBidWlsZEZsYWdzKCJMREZMQUdTIiwgZGVmYXVsdHMsIHAuQ2dvTERGTEFHUywgY2hlY2tMaW5rZXJGbGFncyk7IGVyciAhPSBuaWwgeworIAkJcmV0dXJuCisgCX0KKysJaWYgZmlsdGVyZWQgeworKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQorKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCisrCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCisrCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKKysJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCisrCX0KKyAKKyAJcmV0dXJuCisgfQorQEAgLTIzMTksNyArMjM0Niw3IEBAIHZhciBjZ29SZSA9IHJlZ2V4cC5NdXN0Q29tcGlsZShgWy9cXDpdYCkKKyAKKyBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7CisgCXAgOj0gYS5QYWNrYWdlCistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQorKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKKyAJfQorQEAgLTI2NzksNyArMjcwNiw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHJpbmcpIChpbnRzaXplIHN0cmluZywgZXJyIGVycm9yKSB7CisgCisgLy8gUnVuIFNXSUcgb24gb25lIFNXSUcgaW5wdXQgZmlsZS4KKyBmdW5jIChiICpCdWlsZGVyKSBzd2lnT25lKGEgKkFjdGlvbiwgcCAqbG9hZC5QYWNrYWdlLCBmaWxlLCBvYmpkaXIgc3RyaW5nLCBwY0NGTEFHUyBbXXN0cmluZywgY3h4IGJvb2wsIGludGdvc2l6ZSBzdHJpbmcpIChvdXRHbywgb3V0QyBzdHJpbmcsIGVyciBlcnJvcikgeworLQljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgXywgXywgZXJyIDo9IGIuQ0ZsYWdzKHApCisrCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuICIiLCAiIiwgZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2Y2E0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjExLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNWMzMmMzOGJmMTliMjRmMGFhZGQ3ODAxMmQxN2ZmNWNhYTgyMTUxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAorCit0byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworLS0tCisgc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCisgc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNyArKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTIyOCw3ICsyMjgsOSBAQCBmdW5jIHhpbml0KCkgeworIAl3b3JrZGlyID0geHdvcmtkaXIoKQorIAl4YXRleGl0KHJtd29ya2RpcikKKyAKKy0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKKysJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQorKwl9CisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCisrKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCitAQCAtMTE2LDcgKzExNiwxMSBAQCBmdW5jIGluaXQoKSB7CisgCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgorIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuCisgCQkvLyBydW50aW1lLkdPUk9PVC4KKy0JCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7CisrCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkNsZWFuKHMpCisrCQl9IGVsc2UgeworKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCX0KKyAJfQorIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0YTMzYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNTVlYjhjOTVhODlmMzJhZWMxNmI3NzY0ZTc4ZThjZjc1MTY5ZGM4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCisKK3NvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCitjYW4gZmluZCB0aGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorCistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK2luZGV4IDIyMGFhYjMuLjcwMzkyNWYgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCitAQCAtMTEzNSw2ICsxMTM1LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCQlpZiBjdHh0LkhlYWRUeXBlICE9IG9iamFiaS5Id2luZG93cyB7CisgCQkJCS8vIFBhc3MgLXogbm9kZWxldGUgdG8gbWFyayB0aGUgc2hhcmVkIGxpYnJhcnkgYXMKKyAJCQkJLy8gbm9uLWNsb3NlYWJsZTogYSBkbGNsb3NlIHdpbGwgZG8gbm90aGluZy4KK0BAIC0xMTQ2LDYgKzExNDcsOCBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQorIAkJfQorIAkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisrCisgCWNhc2UgQnVpbGRNb2RlUGx1Z2luOgorIAkJaWYgY3R4dC5IZWFkVHlwZSA9PSBvYmphYmkuSGRhcndpbiB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLWR5bmFtaWNsaWIiKQorQEAgLTExNTQsNiArMTE1Nyw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQorIAkJCX0KKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQl9CisgCX0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNlOGRlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMWJmMTVhYThmYjc3MzYwNGIyNTI0Y2ZkYWI0OTNmYTRkOGZhOTI4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA2OjMyOjQ1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZCBnb19ib290c3RyYXAKKworZm9yIGhhbmRsaW5nIE9FIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworLS0tCisgc3JjL21ha2UuYmFzaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggNzg4ODJkOS4uMjU5NDNkMCAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNjMsNyArMTYzLDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07IHRoZW4KKyAJZXhpdCAxCisgZmkKKyBybSAtZiBjbWQvZGlzdC9kaXN0CistR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTE5NCw3ICsxOTQsNyBAQCBmaQorICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KKyAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KKyAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KKy0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAorIAorICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwZDVkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMjgyIEBACitGcm9tIGZlMGZjYWY0M2VmM2FhYjgxNTQxZGFkMmE3MWI0NjI1NGRjNGNmNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBjbWQvZGlzdDogc2VwYXJhdGUgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkcworCitDaGFuZ2UgdGhlIGRpc3QgdG9vbCB0byBhbGxvdyBmb3IgT0Utc3R5bGUgY3Jvc3MtCithbmQgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzOgorCisgLSBjb21tYW5kIGZsYWdzIC0taG9zdC1vbmx5IGFuZCAtLXRhcmdldCBvbmx5IGFyZSBhZGRlZDsKKyAgIGlmIG9uZSBpcyBwcmVzZW50LCB0aGUgb3RoZXIgY2hhbmdlcyBtZW50aW9uZWQgYmVsb3cKKyAgIHRha2UgZWZmZWN0LCBhbmQgYXJndW1lbnRzIG1heSBhbHNvIGJlIHNwZWNpZmllZCBvbgorICAgdGhlIGNvbW1hbmQgbGluZSB0byBlbnVtZXJhdGUgdGhlIHBhY2thZ2UocykgdG8gYmUKKyAgIGJ1aWx0LgorCisgLSBmb3IgT0UgY3Jvc3MgYnVpbGRzLCBnb19ib290c3RyYXAgaXMgYWx3YXlzIGJ1aWx0IGZvcgorICAgdGhlIGN1cnJlbnQgYnVpbGQgaG9zdCwgYW5kIGlzIG1vdmVkLCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0aW5nCisgICB0b29sY2hhaW4gKGFzbSwgY29tcGlsZSwgZXRjLikgdG8gYSBzZXBhcmF0ZSAnbmF0aXZlX25hdGl2ZScKKyAgIGRpcmVjdG9yeSB1bmRlciBHT1JPT1QvcGtnL3Rvb2wuCisKKyAtIGdvX2Jvb3RzdHJhcCBpcyBub3QgYXV0b21hdGljYWxseSByZW1vdmVkIGFmdGVyIHRoZSBidWlsZCwKKyAgIHNvIGl0IGNhbiBiZSByZXVzZWQgbGF0ZXIgKGUuZy4sIGJ1aWxkaW5nIGJvdGggc3RhdGljIGFuZAorICAgc2hhcmVkIHJ1bnRpbWUpLgorCitOb3RlIHRoYXQgZm9yIC0taG9zdC1vbmx5IGJ1aWxkcywgaXQgd291bGQgYmUgbmljZSB0byBzcGVjaWZ5CitqdXN0IHRoZSAiY21kIiBwYWNrYWdlIHRvIGJ1aWxkIG9ubHkgdGhlIGdvIGNvbW1hbmRzL3Rvb2xzLAordGhlIHN0YWxlbmVzcyBjaGVja3MgaW4gdGhlIGRpc3QgdG9vbCB3aWxsIGZhaWwgaWYgdGhlICJzdGQiCitsaWJyYXJ5IGhhcyBub3QgYWxzbyBiZWVuIGJ1aWx0LiAgU28gaG9zdC1vbmx5IGJ1aWxkcyBoYXZlIHRvCitidWlsZCBldmVyeXRoaW5nIGFueXdheS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworbW9yZSBkaXN0IGNsZWFudXAKKworLS0tCisgc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbworQEAgLTM5LDYgKzM5LDcgQEAgdmFyICgKKyAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKKyAJd29ya2RpciAgICAgICAgICBzdHJpbmcKKyAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKKysJYnVpbGRfdG9vbGRpcgkgc3RyaW5nCisgCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCisgCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCisgCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCitAQCAtNTAsNiArNTEsNyBAQCB2YXIgKAorIAorIAlyZWJ1aWxkYWxsICAgYm9vbAorIAlkZWZhdWx0Y2xhbmcgYm9vbAorKwljcm9zc0J1aWxkICAgYm9vbAorIAorIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5CisgKQorQEAgLTIzMSw2ICsyMzMsOCBAQCBmdW5jIHhpbml0KCkgeworIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7CisgCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKyAJfQorKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCisrCisgfQorIAorIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQorQEAgLTI2MCw3ICsyNjQsNiBAQCBmdW5jIGNvbXBpbGVyRW52KGVudk5hbWUsIGRlZiBzdHJpbmcpIG1hCisgCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKKyAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCisgCQl9CistCQltWyIiXSA9IGVudgorIAl9CisgCisgCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7CitAQCAtNDg3LDggKzQ5MCwxMCBAQCBmdW5jIHNldHVwKCkgeworIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KKyAJaWYgcmVidWlsZGFsbCB7CisgCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCisrCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCisgCX0KKyAJeG1rZGlyYWxsKHRvb2xkaXIpCisrCXhta2RpcmFsbChidWlsZF90b29sZGlyKQorIAorIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCisgCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKK0BAIC0xMTU1LDExICsxMTYwLDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAorIAl2YXIgbm9CYW5uZXIgYm9vbAorIAl2YXIgZGVidWcgYm9vbAorKwl2YXIgaG9zdE9ubHkgYm9vbAorKwl2YXIgdGFyZ2V0T25seSBib29sCisrCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQorKworIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKKyAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQorIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKKysJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKKysJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKKyAKKy0JeGZsYWdwYXJzZSgwKQorKwl4ZmxhZ3BhcnNlKC0xKQorKworKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgeworKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCX0KKysJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKKysJaWYgZmxhZy5OQXJnKCkgPiAwIHsKKysJCWlmIGNyb3NzQnVpbGQgeworKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQorKwkJfSBlbHNlIHsKKysJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCisrCQl9CisrCX0KKyAKKyAJaWYgZGVidWcgeworIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgorQEAgLTEyMDcsOCArMTIzMCwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKKyAJCXhwcmludGYoIlxuIikKKyAJfQorIAorLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CistCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCisrCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0CisrCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCisrCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJfQorIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKKyAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCisgCWlmIGRlYnVnIHsKK0BAIC0xMjM3LDcgKzEyNjUsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCQl4cHJpbnRmKCJcbiIpCisgCX0KKyAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQorLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQorKwl9IGVsc2UgeworKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJfQorIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKKyAJaWYgZGVidWcgeworIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorQEAgLTEyNzQsNTAgKzEzMDYsODQgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCisgCistCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKKy0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKwlpZiBjcm9zc0J1aWxkIHsKKysJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQorKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCisrCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKKysJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQorKwkJCXhyZW1vdmUoZikKKysJCX0KKysJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKKysJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCisrCQlpZiBob3N0T25seSB7CisrCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKKysKKysJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgeworKwkJCWdvb3MgPSBvbGRnb29zCisrCQkJZ29hcmNoID0gb2xkZ29hcmNoCisrCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKysJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKysJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQorKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKKysJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKKyAJCX0KKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCX0gZWxzZSB7CistCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgorLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCistCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgorLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorLQkJaWYgdmZsYWcgPiAwIHsKKy0JCQl4cHJpbnRmKCJcbiIpCisrCisrCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7CisrCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCisrCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisrCQl9IGVsc2UgeworKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCisrCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCisrCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KKysJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKysJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCisrCisrCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQlnb29zID0gb2xkZ29vcworKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAorKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCisrCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCisrCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCisgCQl9CistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisgCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCisgCistCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorLQkJfQorLQkJZ29vcyA9IG9sZGdvb3MKKy0JCWdvYXJjaCA9IG9sZGdvYXJjaAorLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKKy0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKy0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKy0JfQorLQl0YXJnZXRzIDo9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KKy0JaWYgZ29vcyA9PSAianMiICYmIGdvYXJjaCA9PSAid2FzbSIgeworLQkJLy8gU2tpcCB0aGUgY21kIHRvb2xzIGZvciBqcy93YXNtLiBUaGV5J3JlIG5vdCB1c2FibGUuCistCQl0YXJnZXRzID0gdGFyZ2V0c1s6MV0KKy0JfQorLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCistCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCistCWNoZWNrTm90U3RhbGUoY21kR28sIHRhcmdldHMuLi4pCistCWlmIGRlYnVnIHsKKy0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKKy0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKKy0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQorLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKKysJCWlmIGRlYnVnIHsKKysJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCisrCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQorKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCisrCQl9CisgCX0KKyAKKyAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KK0BAIC0xMzM1LDcgKzE0MDEsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCX0KKyAKKyAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgorLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKKysJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bworKwkvLyBrZWVwIGl0LgorKwlpZiAhIGNyb3NzQnVpbGQgeworKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCisrCX0KKyAKKyAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KKyAJaWYgIW5vQmFubmVyIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzE3ZTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCkBAIC0wLDAgKzEsMTA2IEBACitGcm9tIDdjYzYwYjM4ODdiZTJkNTY3NGI5ZjVkNDIyZDAyMjk3NmNmMjA1ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogRnJpLCAyIE1hciAyMDE4IDA2OjAwOjIwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtZC9nbzogbWFrZSBHT1JPT1QgcHJlY2lvdXMgYnkgZGVmYXVsdAorCitUaGUgZ28gYnVpbGQgdG9vbCBub3JtYWxseSByZWJ1aWxkcyB3aGF0ZXZlciBpdCBkZXRlY3RzIGlzCitzdGFsZS4gIFRoaXMgY2FuIGJlIGEgcHJvYmxlbSB3aGVuIEdPUk9PVCBpcyBpbnRlbmRlZCB0bworYmUgcmVhZC1vbmx5IGFuZCB0aGUgZ28gcnVudGltZSBoYXMgYmVlbiBidWlsdCBhcyBhIHNoYXJlZAorbGlicmFyeSwgc2luY2Ugd2UgZG9uJ3Qgd2FudCBldmVyeSBhcHBsaWNhdGlvbiB0byBiZSByZWJ1aWxkaW5nCit0aGUgc2hhcmVkIHJ1bnRpbWUgLSBwYXJ0aWN1bGFybHkgaW4gY3Jvc3MtYnVpbGQvcGFja2FnaW5nCitzZXR1cHMsIHNpbmNlIHRoYXQgd291bGQgbGVhZCB0byAnYWJpIG1pc21hdGNoJyBydW50aW1lIGVycm9ycy4KKworVGhpcyBwYXRjaCBwcmV2ZW50cyB0aGUgaW5zdGFsbCBhbmQgbGlua3NoYXJlZCBhY3Rpb25zIGZyb20KK2luc3RhbGxpbmcgdG8gR09ST09UIHVubGVzcyBvdmVycmlkZGVuIHdpdGggdGhlIEdPUk9PVF9PVkVSUklERQorZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CisKKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gfCAgMyArKysKKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gIHwgIDUgKysrKysKKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KK0BAIC02MDAsNiArNjAwLDkgQEAgZnVuYyAoYiAqQnVpbGRlcikgYWRkVHJhbnNpdGl2ZUxpbmtEZXBzKAorIAkJCWlmIHAxID09IG5pbCB8fCBwMS5TaGxpYiA9PSAiIiB8fCBoYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildIHsKKyAJCQkJY29udGludWUKKyAJCQl9CisrCQkJaWYgZ29Sb290UHJlY2lvdXMgJiYgKHAxLlN0YW5kYXJkIHx8IHAxLkdvcm9vdCkgeworKwkJCQljb250aW51ZQorKwkJCX0KKyAJCQloYXZlU2hsaWJbZmlsZXBhdGguQmFzZShwMS5TaGxpYildID0gdHJ1ZQorIAkJCS8vIFRPRE8ocnNjKTogVGhlIHVzZSBvZiBNb2RlSW5zdGFsbCBoZXJlIGlzIHN1c3BlY3QsIGJ1dCBpZiB3ZSBvbmx5IGRvIE1vZGVCdWlsZCwKKyAJCQkvLyB3ZSdsbCBlbmQgdXAgYnVpbGRpbmcgYW4gb3ZlcmFsbCBsaWJyYXJ5IG9yIGV4ZWN1dGFibGUgdGhhdCBkZXBlbmRzIGF0IHJ1bnRpbWUKK0luZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworQEAgLTE0Nyw2ICsxNDcsNyBAQCBTZWUgYWxzbzogZ28gaW5zdGFsbCwgZ28gZ2V0LCBnbyBjbGVhbi4KKyB9CisgCisgY29uc3QgY29uY3VycmVudEdDQmFja2VuZENvbXBpbGF0aW9uRW5hYmxlZEJ5RGVmYXVsdCA9IHRydWUKKyt2YXIgZ29Sb290UHJlY2lvdXMgYm9vbCA9IHRydWUKKyAKKyBmdW5jIGluaXQoKSB7CisgCS8vIGJyZWFrIGluaXQgY3ljbGUKK0BAIC0xNjAsNiArMTYxLDEwIEBAIGZ1bmMgaW5pdCgpIHsKKyAKKyAJQWRkQnVpbGRGbGFncyhDbWRCdWlsZCkKKyAJQWRkQnVpbGRGbGFncyhDbWRJbnN0YWxsKQorKworKwlpZiB4IDo9IG9zLkdldGVudigiR09ST09UX09WRVJSSURFIik7IHggIT0gIiIgeworKwkJZ29Sb290UHJlY2lvdXMgPSBmYWxzZQorKwl9CisgfQorIAorIC8vIE5vdGUgdGhhdCBmbGFncyBjb25zdWx0ZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUKK0luZGV4OiBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworQEAgLTQ0MCw2ICs0NDAsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyCisgCQlyZXR1cm4gZm10LkVycm9yZigibW9kdWxlIHJlcXVpcmVzIEdvICVzIiwgcC5Nb2R1bGUuR29WZXJzaW9uKQorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgeworKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKKysJCWlmIGVyciA9PSBuaWwgeworKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0CisrCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCisrCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgorKwkJCXJldHVybiBuaWwKKysJCX0KKysJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKKysJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQlpZiBiLklzQ21kTGlzdCB7CisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KK0BAIC0xNDM1LDYgKzE0NTIsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdAorIAkJcmV0dXJuIG5pbAorIAl9CisgCisrCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgeworKwkJcCA6PSBhLlBhY2thZ2UKKysJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgeworKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCisrCQkJcmV0dXJuIGVycgorKwkJfQorKwl9CisrCisgCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gZXJyCisgCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTEvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY3Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMS8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9tIDM1ZWE0YmUzNGU5NDkxMmIwMDgzN2UwZjdjNzM4NWYyZTk4ZmU3NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsZDogcmVwbGFjZSBnbGliYyBkeW5hbWljIGxpbmtlciB3aXRoIG11c2wKKworUmV3b3JrIG9mIHBhdGNoIGJ5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Citmb3IgZ28gMS4xMC4gIFNob3VsZCBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsbHkgb24KK211c2wgYmVpbmcgdGhlIHN5c3RlbSBDIGxpYnJhcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbUmVhbCBmaXggc2hvdWxkIGJlIHBvcnRhYmxlIGFjcm9zcyBsaWJjc10KKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKworLS0tCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCisgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworaW5kZXggODdlODA5MS4uZjUyMmE2MyAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KK0BAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAorIAorLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCitpbmRleCA3ODhiZTY4Li4xZDJiOTBlIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCitAQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbGludXguc28uMyIsIC8vIDIgZm9yIE9BQkksIDMgZm9yIEVBQkkKKysJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1tdXNsLWFybWhmLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorIAkJTmV0YnNkZHlubGQ6ICAgICIvbGliZXhlYy9sZC5lbGZfc28iLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitpbmRleCA0MDVkMjJkLi5iMTE1NjU5IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWIvbGQtbGludXgtYWFyY2g2NC5zby4xIiwKKysJCUxpbnV4ZHlubGQ6ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KK2luZGV4IGM1ZDM0NTEuLmZkODVlNjMgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworQEAgLTYwLDcgKzYwLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWIvbGQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1tdXNsLW1pcHNsZS5zby4xIiwKKyAKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitpbmRleCA4Mzk3NGU1Li4wOTcyMjRmIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIiwKKyAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiWFhYIiwKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworaW5kZXggMjczZDliNC4uYTUwM2FiZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KK0BAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorIAkJLy8gVE9ETyhhdXN0aW4pOiBBQkkgdjEgdXNlcyAvdXNyL2xpYi9sZC5zby4xLAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXBvd2VycGM2NGxlLnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCitpbmRleCA5YWM3ZWI4Li4zODI1ZmY3IDEwMDY0NAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTU3LDcgKzU3LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAorLQkJTGludXhkeW5sZDogIi9saWI2NC9sZDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWI2NC9sZC1tdXNsLXMzOTB4LnNvLjEiLAorIAorIAkJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KK2luZGV4IDZhNzQ0ZGMuLmQ4MWYzOTIgMTAwNjQ0CistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KK0BAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLWxpbnV4LnNvLjIiLAorKwkJTGludXhkeW5sZDogICAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLnNvIiwKKyAJCU5ldGJzZGR5bmxkOiAgIi91c3IvbGliZXhlYy9sZC5lbGZfc28iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYwppbmRleCA0NGYyMzBiLi42ZDlhYTVjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCkBAIC0xLDkgKzEsOSBAQAogaW5oZXJpdCBjcm9zcwogCi1QUk9WSURFUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyIKK1BST1ZJREVTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIgogREVQRU5EUyA9ICJnby1uYXRpdmUiCiAKLVBOID0gImdvLWNyb3NzLSR7VEFSR0VUX0FSQ0h9IgorUE4gPSAiZ28tY3Jvc3MtJHtUVU5FX1BLR0FSQ0h9IgogCiBleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKIGV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS4xMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODJlNjM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiRGVwZW5kZW5jeSBtYW5hZ2VtZW50IHRvb2wgZm9yIEdvbGFuZyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcmMvJHtHT19JTVBPUlR9L0xJQ0VOU0U7bWQ1PTFiYWQzMTU2NDc3NTFmYWIwMDA3ODEyZjcwZDQyYzBkIgotCi1HT19JTVBPUlQgPSAiZ2l0aHViLmNvbS9nb2xhbmcvZGVwIgotU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwcy1taXBzNjQucGF0Y2g7cGF0Y2hkaXI9c3JjL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCBcCi0gICAgICAgICAgIgotCi0jIFBvaW50cyB0byAwLjQuMSB0YWcKLVNSQ1JFViA9ICIzN2Q5ZWEwYWMxNmYwZTBhMDVhZmMzYjYwZTFhYzhjMzY0YjZjMzI5IgotCi1pbmhlcml0IGdvCi0KLUdPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzIxODYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJEZXBlbmRlbmN5IG1hbmFnZW1lbnQgdG9vbCBmb3IgR29sYW5nIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9kZXAiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9MWJhZDMxNTY0Nzc1MWZhYjAwMDc4MTJmNzBkNDJjMGQiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL2dvbGFuZy9kZXAiCitTUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1taXBzLW1pcHM2NC5wYXRjaDtwYXRjaGRpcj1zcmMvZ2l0aHViLmNvbS9nb2xhbmcvZGVwIFwKKyAgICAgICAgICAiCisKKyMgUG9pbnRzIHRvIDAuNS4wIHRhZworU1JDUkVWID0gIjIyNGE1NjRhYmUyOTY2NzBiNjkyZmUwOGJiNjNhM2U0YzRhZDc5NzgiCisKK2luaGVyaXQgZ28KKworR09fSU5TVEFMTCA9ICIke0dPX0lNUE9SVH0vY21kL2RlcCIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJiYXNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgZm9yIHg4NiBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfQorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMwLworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2k1ODYtb2UtbGludXgvZ28tZGVwLzAuNC4xLXIwL3BhY2thZ2VzLXNwbGl0L2dvLWRlcC91c3IvYmluL2RlcCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0IFt0ZXh0cmVsXQorSU5TQU5FX1NLSVBfJHtQTn0gKz0gInRleHRyZWwiCisKKyMgZm9yIGFhcmNoNjQgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0tcHRlc3QKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMi8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dvLWRlcC8wLjQuMS1yMC9wYWNrYWdlcy1zcGxpdC9nby1kZXAtcHRlc3QvdXNyL2xpYi9nby1kZXAvcHRlc3QvZ2l0aHViLmNvbS9nb2xhbmcvZGVwL2NtZC9kZXAvZGVwLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0gIAorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gInRleHRyZWwiCisKKyMgRm9yIGNvbXBpbGluZyBwdGVzdCBvbiBtaXBzIGFuZCBtaXBzNjQsIHRoZSBjdXJyZW50IGdvLWRlcCB2ZXJzaW9uIGZhaWxzIHdpdGggdGhlIGdvIDEuMTEgdG9vbGNoYWluLgorIyBlcnJvciBtZXNzYWdlOiB2ZXQgY29uZmlnIG5vdCBmb3VuZAorUFRFU1RfRU5BQkxFRF9taXBzID0gIjAiCitQVEVTVF9FTkFCTEVEX21pcHM2NCA9ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKaW5kZXggYjc2ZmIwOC4uMjA3NzA4NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCkBAIC0xLDcgKzEsMyBAQAotIyBVc2UgaW1tZWRpYXRlIGFzc2luZ21lbnQgaGVyZSB0byBnZXQgdGhlIG9yaWdpbmFsICgvdXNyL2xpYikKLSMgaW5zdGVhZCBvZiB0aGUgb25lIHJld3JpdHRlbiBieSBuYXRpdmUuYmJjbGFzcy4KLW5vbnN0YWdpbmdfbGliZGlyIDo9ICIke2xpYmRpcn0iCi0KIGluaGVyaXQgbmF0aXZlCiAKIFNSQ19VUklfYXBwZW5kID0gIiBodHRwczovL2RsLmdvb2dsZS5jb20vZ28vZ28xLjQtYm9vdHN0cmFwLTIwMTcxMDAzLnRhci5nejtuYW1lPWJvb3RzdHJhcDtzdWJkaXI9Z28xLjQiCkBAIC0yMCw3ICsxNiw3IEBACiB9CiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPUk9PVF9GSU5BTD0iJHtub25zdGFnaW5nX2xpYmRpcn0vZ28iCisJZXhwb3J0IEdPUk9PVF9GSU5BTD0iJHtsaWJkaXJfbmF0aXZlfS9nbyIKIAlleHBvcnQgR09ST09UX0JPT1RTVFJBUD0iJHtXT1JLRElSfS9nbzEuNC9nbyIKIAogCWNkIHNyYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjExLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCmluZGV4IDAwNDFlOGEuLmMyMTlhYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jCkBAIC0xLDQgKzEsNCBAQAotREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyBnby1uYXRpdmUiCitERVBFTkRTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIgogUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjExLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKaW5kZXggMjlhMTM0NC4uYzIyOWFiMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCkBAIC0xLDQgKzEsNCBAQAotREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyBnby1uYXRpdmUiCitERVBFTkRTID0gInZpcnR1YWwvJHtUVU5FX1BLR0FSQ0h9LWdvIGdvLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIGdvLW5hdGl2ZSIKIAogZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCmluZGV4IGVjNWEzMTQuLjdkYTc4OTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIKQEAgLTE1LDMgKzE1LDEwIEBACiAJLi9tYWtlLmJhc2gKIAljZCAke0J9CiB9CisKKyMgZm9yIGFhcmNoNjQgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzNC8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dvLzEuOS43LXIwL3BhY2thZ2VzLXNwbGl0L2dvL3Vzci9saWIvZ28vYmluL2dvJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nby8xLjkuNy1yMC9wYWNrYWdlcy1zcGxpdC9nby91c3IvbGliL2dvL3BrZy90b29sL2xpbnV4X2FybTY0L3RyYWNlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nby8xLjkuNy1yMC9wYWNrYWdlcy1zcGxpdC9nby91c3IvbGliL2dvL3BrZy90b29sL2xpbnV4X2FybTY0L3Bwcm9mJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGQ2ZDM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2hlbHAybWFuL2hlbHAybWFuLW5hdGl2ZV8xLjQ3LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYzg4NjA2M2M5ZTBhYjQ2MzkwNmRlODA0NTk2YWEyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2E2MGIyNTE5ZmRiZTk3ZjQ2M2ZlMmRmNjZhNjE4OGQxOGI1MTRiZmQ0NDEyN2Q5ODVmMDIzNGVlMjQ2MWIxIgotCi1pbmhlcml0IGF1dG90b29scyBuYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKLSMgdXNlZC4KLWRvX2NvbmZpZ3VyZSgpIHsKLQlvZV9ydW5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKLQlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTRkMzA4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuNi5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlByb2dyYW0gZm9yIGNyZWF0aW5nIHNpbXBsZSBtYW4gcGFnZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorREVQRU5EUyA9ICJhdXRvY29uZi1uYXRpdmUgYXV0b21ha2UtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDI0OTAxZTZlY2E4YWYzNzJkMmFkNjJiZTVjZjY1OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTFiMDI5NWI3MmE2MzhlNGE1NjRmNjQzZTRlNmQxOTI4Nzc5MTMxZjYyOGMwMGYzNTZjMTNiZjMzNmRlNDZmIgorCitpbmhlcml0IGF1dG90b29scyBuYXRpdmUKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ubHMiCisKKyMgV2UgZG9uJ3Qgd2FudCB0byByZWNvbmZpZ3VyZSB0aGluZ3MgYXMgaXQgd291bGQgcmVxdWlyZSAncGVybG5hdGl2ZScgdG8gYmUKKyMgdXNlZC4KK2RvX2NvbmZpZ3VyZSgpIHsKKwlvZV9ydW5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHBlcmwKKwlzZWQgLWkgLWUgIjFzOiMhLio6IyEgL3Vzci9iaW4vZW52IHBlcmw6IiAke0R9JHtiaW5kaXJ9L2hlbHAybWFuCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiCmluZGV4IDAxYWM0N2YuLmZlMzI0N2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfNC4wLmJiCkBAIC0xNCw2ICsxNCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZDkyYTI4OGQ3MGYzMDZkMzg5NWUzYTdlOWMxNGM5YWEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2MGRhZjZmMDExZGUwYWNiNjFkZTU3ZGJhNjJmMjA1NGJiMzlmMTk5NjFkNjdlMGM5MTYxMGYwNzFjYTQwMyIKIAoraW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKIEVYVFJBX09FTUFLRSA9ICJiaW5kaXI9JHtiaW5kaXJ9IHNiaW5kaXI9JHtzYmluZGlyfSBcCiAgICAgICAgICAgICAgICAgaW5jZGlyPSR7aW5jbHVkZWRpcn0gbGliZGlyPSR7bGliZGlyfSBcCiAgICAgICAgICAgICAgICAgbWFuZGlyPSR7bWFuZGlyfSBcCkBAIC0zNCwzICszNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmNudGwgcGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXZhcnMgXAogICAgICAgICAgICAgICAgICAgICAgICIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiaTJjZGV0ZWN0IGkyY2R1bXAgaTJjZ2V0IGkyY3NldCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpMmNkZXRlY3RdID0gIiR7c2JpbmRpcn0vaTJjZGV0ZWN0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2kyY2R1bXBdID0gIiR7c2JpbmRpcn0vaTJjZHVtcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtpMmNnZXRdID0gIiR7c2JpbmRpcn0vaTJjZ2V0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2kyY3NldF0gPSAiJHtzYmluZGlyfS9pMmNzZXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLXNldHVwLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNlY2MtdG9vbGNoYWluL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy1zZXR1cC5zaAppbmRleCAwNDgwODI2Li4yNTI1MGI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pY2VjYy10b29sY2hhaW4vaWNlY2MtdG9vbGNoYWluL2ljZWNjLXNldHVwLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljZWNjLXRvb2xjaGFpbi9pY2VjYy10b29sY2hhaW4vaWNlY2Mtc2V0dXAuc2gKQEAgLTIwLDExICsyMCw2IEBACiAjIFNPRlRXQVJFLgogIwogCi0jIFNldHVwIGVudmlyb25tZW50Ci1mb3IgZW52X3NldHVwX3NjcmlwdCBpbiBgbHMgJDEvZW52aXJvbm1lbnQtc2V0dXAtKmA7IGRvCi0JLiAkZW52X3NldHVwX3NjcmlwdAotZG9uZQotCiAjIElDRUNDX1BBVEggd2lsbCBoYXZlIGJlZW4gZm91bmQgaWNlY2MtZW52LnNoCiBpZiBbIC16ICIkSUNFQ0NfUEFUSCIgXTsgdGhlbgogICAgIGV4aXQgMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNvbi1uYW1pbmctdXRpbHMvaWNvbi1uYW1pbmctdXRpbHNfMC44LjkwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaWNvbi1uYW1pbmctdXRpbHMvaWNvbi1uYW1pbmctdXRpbHNfMC44LjkwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjM1NmIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ljb24tbmFtaW5nLXV0aWxzL2ljb24tbmFtaW5nLXV0aWxzXzAuOC45MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiRW5hYmxlcyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGN1cnJlbnQgZGVza3RvcCBpY29uIHRoZW1lcyIKLURFU0NSSVBUSU9OID0gIkEgUGVybCBzY3JpcHQgdXNlZCBmb3IgbWFpbnRhaW5pbmcgYmFja3dhcmRzIFwKLWNvbXBhdGliaWxpdHkgd2l0aCBjdXJyZW50IGRlc2t0b3AgaWNvbiB0aGVtZXMsIHdoaWxlIG1pZ3JhdGluZyB0byB0aGUgXAotbmFtZXMgc3BlY2lmaWVkIGluIHRoZSBJY29uIE5hbWluZyBTcGVjaWZpY2F0aW9uLiBUaGUgSWNvbiBOYW1pbmcgXAotVXRpbGl0aWVzIG1hcCB0aGUgaWNvbiBuYW1lcyB1c2VkIGJ5IHRoZSBHTk9NRSBhbmQgS0RFIGRlc2t0b3BzIHRvIHRoZSBcCi1pY29uIG5hbWVzIHByb3Bvc2VkIGluIHRoZSBJY29uIE5hbWluZyBTcGVjaWZpY2F0aW9uLCBhbmQgZ2VuZXJhdGUgdGhlIFwKLWljb24gZmlsZXMgYXBwcm9wcmlhdGUgdG8gdGhlIGRlc2t0b3AgZW52aXJvbm1lbnQgeW91IHVzZS4gVGhlIEljb24gXAotTmFtaW5nIFNwZWNpZmljYXRpb24gcHJvdmlkZXMgYSBzdGFuZGFyZCBsaXN0IG9mIGNvbW1vbiBpY29uIGNvbnRleHRzIFwKLWFuZCBuYW1lcyB0aGF0IGNhbiBiZSB1c2VkIHRvIG1ha2UgaWNvbiB0aGVtZXMgd29yayBpbiBhIGRlc2t0b3AgXAotZW52aXJvbm1lbnQgb3IgYXBwbGljYXRpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSBuYW1pbmcgc3BlY2lmaWNhdGlvbi4gIgotTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAibGlieG1sLXNpbXBsZS1wZXJsLW5hdGl2ZSIKLVBSID0gInI1IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vdGFuZ28uZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2ljb24tbmFtaW5nLXV0aWxzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYzVjN2E0MThlNWViMzI2OGY2NWUyMTk5MzI3N2ZiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNDRhYjIxOTllZDhjNmE1NWNlMzZmZDRmY2Q4YjgwMjFhNWUyMWY1YmFiMDI4YzBhN2NkY2Y1MmE1OTAyZTFjIgotCi1pbmhlcml0IGF1dG90b29scyBhbGxhcmNoIHBlcmxuYXRpdmUKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQkjIE1ha2Ugc3VyZSB3ZSB1c2Ugb3VyIG5hdGl2ZXBlcmwgd3JhcHBlci4KLQlzZWQgLWkgLWUgIjFzOiMhLio6IyEvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybDoiICR7U30vaWNvbi1uYW1lLW1hcHBpbmcucGwuaW4KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZHRkcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMTBlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkMgYmluZGluZ3MgZm9yIGFwcHMgd2hpY2ggd2lsbCBtYW5pcHVsYXRlIEpTT04gZGF0YSIKK0RFU0NSSVBUSU9OID0gIkpTT04tQyBpbXBsZW1lbnRzIGEgcmVmZXJlbmNlIGNvdW50aW5nIG9iamVjdCBtb2RlbCB0aGF0IGFsbG93cyB5b3UgdG8gZWFzaWx5IGNvbnN0cnVjdCBKU09OIG9iamVjdHMgaW4gQy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vanNvbi1jL2pzb24tYy93aWtpIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZTU0YjYwZmJiYzM1MTIzYmExOTNmZWE4ZWUyMTZmMiIKKworU1JDX1VSSSA9ICJodHRwczovL3MzLmFtYXpvbmF3cy5jb20vanNvbi1jX3JlbGVhc2VzL3JlbGVhc2VzLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNDk2OWFkNTljYzM3YmRkZDgzNzQxYTA4Yjk4ZjM1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiODdlNjA4ZDRkM2Y3YmZkZDM2ZWY3OGQ1NmQ1M2M3NGU2NmFiMjc4ZDMxOGI3MWU2MDAyYTM2OWQzNmY0ODczIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJqc29uLWMtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKyMganNvbi1jIHJlbGVhc2VzIHBhZ2UgaXMgZmV0Y2hpbmcgdGhlIGxpc3Qgb2YgcmVsZWFzZXMgaW4gc29tZSB3ZWlyZCBYTUwgZm9ybWF0CisjIGZyb20gaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcyBhbmQgcHJvY2Vzc2VzIGl0IHdpdGggamF2YXNjcmlwdCA6LS8KKyNVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy9pbmRleC5odG1sIgorUkVDSVBFX1VQU1RSRUFNX1ZFUlNJT04gPSAiMC4xMy4xIgorUkVDSVBFX1VQU1RSRUFNX0RBVEUgPSAiTWFyIDA0LCAyMDE4IgorQ0hFQ0tfREFURSA9ICJNYXkgMDIsIDIwMTgiCisKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJqc29uIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtcmRyYW5kIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIENsZWFuIHVwIGF1dG9jb25mIGNydWZ0IHRoYXQgc2hvdWxkIG5vdCBiZSBpbiB0aGUgdGFyYmFsbAorICAgIHJtIC1mICR7U30vY29uZmlnLnN0YXR1cworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MzE5ZGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJDIGJpbmRpbmdzIGZvciBhcHBzIHdoaWNoIHdpbGwgbWFuaXB1bGF0ZSBKU09OIGRhdGEiCi1ERVNDUklQVElPTiA9ICJKU09OLUMgaW1wbGVtZW50cyBhIHJlZmVyZW5jZSBjb3VudGluZyBvYmplY3QgbW9kZWwgdGhhdCBhbGxvd3MgeW91IHRvIGVhc2lseSBjb25zdHJ1Y3QgSlNPTiBvYmplY3RzIGluIEMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2pzb24tYy9qc29uLWMvd2lraSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGU1NGI2MGZiYmMzNTEyM2JhMTkzZmVhOGVlMjE2ZjIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9zMy5hbWF6b25hd3MuY29tL2pzb24tY19yZWxlYXNlcy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTFmYzVkOTBjNzczNzVlNWZjODQwMWU4YjllZmJmMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMxNjc4MGJlOWFkMTZjNDJkN2MyNmIwMTVhNzg0ZmQ1ZGY0YjA5MDlmZWYwYWJhNTFjZmIxM2U0OTJhYzI0ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0jIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAotIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCi0jVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKLVJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTMiCi1SRUNJUEVfVVBTVFJFQU1fREFURSA9ICJEZWMgMDcsIDIwMTciCi1DSEVDS19EQVRFID0gIkphbiAzMSwgMjAxOCIKLQotUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1yZHJhbmQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCi0gICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC1jcm9zc18yLjQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC1jcm9zc18yLjQuNi5iYgppbmRleCBiMjY4MzEwLi41MjJiZjNhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wtY3Jvc3NfMi40LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sLWNyb3NzXzIuNC42LmJiCkBAIC0xMywxMSArMTMsMTkgQEAKIAlybSAtZiAke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbC9sdCoubTQKIH0KIAorIworIyBjY2FjaGUgbWF5IG9yIG1heSBub3QgYmUgSU5IRVJJVEVELCB3ZSByZW1vdmUgcmVmZXJlbmNlcyB0byBpdCBzbyB0aGUgc3N0YXRlCisjIGFydGVmYWN0IHdvcmtzIG9uIGEgbWFjaGluZSB3aGVyZSBpdHMgbm90IHByZXNlbnQuIGxpYnRvb2wtY3Jvc3MgaXNuJ3QgdXNlZAorIyBoZWF2aWx5IHNvIGFueSBwZXJmb3JtYW5jZSBpc3N1ZSBpcyBtaW5vci4KKyMgRmluZCByZWZlcmVuY2VzIHRvIExUQ0M9ImNjYWNoZSB4eHgtZ2NjIiBhbmQgQ0M9ImNjYWNoZSB4eHgtZ2NjIgorIwogZG9faW5zdGFsbCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KIAlpbnN0YWxsIC1tIDA3NTUgJHtIT1NUX1NZU30tbGlidG9vbCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8ke0hPU1RfU1lTfS1saWJ0b29sCiAJc2VkIC1lICdzQF5cKHByZWRlcF9vYmplY3RzPSJcKS4qQFwxIkAnIFwKIAkgICAgLWUgJ3NAXlwocG9zdGRlcF9vYmplY3RzPSJcKS4qQFwxIkAnIFwKKwkgICAgLWUgJ3NAXkNDPSJjY2FjaGUuQENDPSJAJyBcCisJICAgIC1lICdzQF5MVENDPSJjY2FjaGUuQExUQ0M9IkAnIFwKIAkgICAgLWkgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vJHtIT1NUX1NZU30tbGlidG9vbAogCXNlZCAtaSAnL15hcmNoaXZlX2NtZHM9L3MvXC1ub3N0ZGxpYi8vZycgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vJHtIT1NUX1NZU30tbGlidG9vbAogCXNlZCAtaSAnL15hcmNoaXZlX2V4cHN5bV9jbWRzPS9zL1wtbm9zdGRsaWIvL2cnICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LyR7SE9TVF9TWVN9LWxpYnRvb2wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9tdWx0aWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9tdWx0aWxpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMThmMDY2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL211bHRpbGliLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK1dpdGhvdXQgdGhpcyBwYXRjaCAvdXNyL2Jpbi9saWJ0b29saXplIGlzIGRpZmZlcmVudCBmb3IgZWFjaCBtdWx0aWxpYgorc2luY2UgdGhlaXIgaG9zdC10cmlwbGV0cyBhcmUgZGlmZmVyZW50LCBkZXNwaXRlIHRoZXJlIGJlaW5nIG5vIGRpZmZlcmVuY2UgaW4KK3RoZSBmdW5jdGlvbmFsaXR5IG9mIGxpYnRvb2xpemUgaXRzZWxmLgorCitVZ2x5LCBidXQganVzdCBwYXRjaCB0aGlzIG91dC4gVGhpcyBmaXhlcyBpc3N1ZXMgd2hlcmUgbGlidG9vbCBhbmQKK2xpYlhYLWxpYnRvb2wgY291bGRuJ3QgYmUgaW5zdGFsbGVkIGludG8gdGhlIHNhbWUgc3lzdGVtLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1JQIDIwMTgvNy8zMAorCitJbmRleDogbGlidG9vbC0yLjQuNi9saWJ0b29saXplLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGlidG9vbC0yLjQuNi5vcmlnL2xpYnRvb2xpemUuaW4KKysrKyBsaWJ0b29sLTIuNC42L2xpYnRvb2xpemUuaW4KK0BAIC0xMTMsNyArMTEzLDcgQEAgWW91IG11c3QgJ2NkJyB0byB0aGUgdG9wIGRpcmVjdG9yeSBvZiB5bworIFdoZW4gcmVwb3J0aW5nIGEgYnVnLCBwbGVhc2UgZGVzY3JpYmUgYSB0ZXN0IGNhc2UgdG8gcmVwcm9kdWNlIGl0IGFuZAorIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyAKKy0gICAgICAgaG9zdC10cmlwbGV0OiAgIEBob3N0X3RyaXBsZXRACisrICAgICAgIGhvc3QtdHJpcGxldCAgICA8cmVkYWN0ZWQ+CisgICAgICAgIHZlcnNpb246ICAgICAgICAkcHJvZ25hbWUgKEdOVSBAUEFDS0FHRUApIEBWRVJTSU9OQAorICAgICAgICBhdXRvbWFrZTogICAgICAgYCgkQVVUT01BS0UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAKKyAgICAgICAgYXV0b2NvbmY6ICAgICAgIGAoJEFVVE9DT05GIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIKaW5kZXggYjAyNjIwYi4uZjVmZGQwMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sXzIuNC42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgpAQCAtMSw1ICsxLDcgQEAKIHJlcXVpcmUgbGlidG9vbC0ke1BWfS5pbmMKIAorU1JDX1VSSSArPSAiZmlsZTovL211bHRpbGliLnBhdGNoIgorCiBSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKIAogIwpAQCAtMjYsMyArMjgsNyBAQAogICAgICAgICAgICAgLWUgInNAJHtIT1NUVE9PTFNfRElSfS9AQGciIFwKICAgICAgICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbGlidG9vbAogfQorCitpbmhlcml0IG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9saWJ0b29sIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtRGlzYWJsZS1nZW5lcmF0aW5nLWEtbmF0aXZlLWxsdm0tY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODA5ZTRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLURpc2FibGUtZ2VuZXJhdGluZy1hLW5hdGl2ZS1sbHZtLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gN2Y3NzQzY2UyMzNmY2Q3MzVlYzU4MGM3NTI3MDQxMzQ5MzY1OGFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDE5IEFwciAyMDE4IDE4OjA4OjMxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgZ2VuZXJhdGluZyBhIG5hdGl2ZSBsbHZtLWNvbmZpZwotCi1PcGVuRW1iZWRkZWQgYWxyZWFkeSBidWlsZHMgdGhpcyBhcyBwYXJ0IG9mIGxsdm0tbmF0aXZlCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB0b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dCB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dCBiL3Rvb2xzL2xsdm0tY29uZmlnL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyNWY5OWNlYzk3OC4uYzQ1ZTliNjQyYTggMTAwNjQ0Ci0tLS0gYS90b29scy9sbHZtLWNvbmZpZy9DTWFrZUxpc3RzLnR4dAotKysrIGIvdG9vbHMvbGx2bS1jb25maWcvQ01ha2VMaXN0cy50eHQKLUBAIC02MywxOSArNjMsMyBAQCBlbmRpZigpCi0gCi0gIyBBZGQgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGdlbmVyYXRpb24gc3RlcC4KLSBhZGRfZmlsZV9kZXBlbmRlbmNpZXMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xsdm0tY29uZmlnLmNwcCAke0JVSUxEVkFSSUFCTEVTX09CSlBBVEh9KQotLQotLWlmKENNQUtFX0NST1NTQ09NUElMSU5HKQotLSAgc2V0KCR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFICIke0xMVk1fTkFUSVZFX0JVSUxEfS9iaW4vbGx2bS1jb25maWciKQotLSAgc2V0KCR7cHJvamVjdH1fTExWTV9DT05GSUdfRVhFICR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9IFBBUkVOVF9TQ09QRSkKLS0KLS0gIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgIiR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9IgotLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLS1idWlsZCAuIC0tdGFyZ2V0IGxsdm0tY29uZmlnIC0tY29uZmlnICQ8Q09ORklHVVJBVElPTj4KLS0gICAgREVQRU5EUyAke0xMVk1fTkFUSVZFX0JVSUxEfS9DTWFrZUNhY2hlLnR4dAotLSAgICBXT1JLSU5HX0RJUkVDVE9SWSAke0xMVk1fTkFUSVZFX0JVSUxEfQotLSAgICBDT01NRU5UICJCdWlsZGluZyBuYXRpdmUgbGx2bS1jb25maWcuLi4iCi0tICAgIFVTRVNfVEVSTUlOQUwpCi0tICBhZGRfY3VzdG9tX3RhcmdldCgke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZyBERVBFTkRTICR7JHtwcm9qZWN0fV9MTFZNX0NPTkZJR19FWEV9KQotLSAgYWRkX2RlcGVuZGVuY2llcygke3Byb2plY3R9TmF0aXZlTExWTUNvbmZpZyBDT05GSUdVUkVfTExWTV9OQVRJVkUpCi0tCi0tICBhZGRfZGVwZW5kZW5jaWVzKGxsdm0tY29uZmlnICR7cHJvamVjdH1OYXRpdmVMTFZNQ29uZmlnKQotLWVuZGlmKENNQUtFX0NST1NTQ09NUElMSU5HKQotLS0gCi0yLjE3LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaAppbmRleCAyMWQyZjgxLi42YTkyODMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmY4ZWE3NjdhZmRhYTQ0MGM2MzY4MDQwNjMwZTFiM2VhNmEwOTc3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWVjY2YxNmVhY2NkZDgwZTRkNWVjYWE1MTY3M2NlNGIyYmFjMTEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgogRGF0ZTogRnJpLCAxOSBNYXkgMjAxNyAwMDoyMjo1NyAtMDcwMAogU3ViamVjdDogW1BBVENIIDIvMl0gbGx2bTogYWxsb3cgZW52IG92ZXJyaWRlIG9mIGV4ZSBwYXRoCkBAIC04LDE2ICs4LDE5IEBACiB0aGFuIGZyb20gdGhlIG5hdGl2ZSBzeXNyb290LiBUaHVzIHByb3ZpZGUgYW4gZW52IG92ZXJyaWRlIGZvciBjYWxsaW5nCiBsbHZtLWNvbmZpZyBmcm9tIGEgdGFyZ2V0IHN5c3Jvb3QuCiAKK1RvIGxldCBpdCB3b3JrIGluIG11bHRpbGliIGVudmlyb25tZW50LCB3ZSBuZWVkIHRvIHByb3ZpZGUgYSBrbm9iIHRvIHN1cHBseQorbXVsdGlsaWIgZGlybmFtZSBhcyB3ZWxsCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSB0b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisgdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwIHwgMTcgKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwIGIvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCi1pbmRleCAwOGIwOTZhZmIwNS4uZDhkNzc0Mjc0NGUgMTAwNjQ0CitpbmRleCAwOGIwOTZhZmIwNS4uMzYwY2M1YWJmNGUgMTAwNjQ0CiAtLS0gYS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKICsrKyBiL3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAogQEAgLTIyNSw2ICsyMjUsMTMgQEAgVHlwaWNhbCBjb21wb25lbnRzOlxuXApAQCAtMzQsNiArMzcsMzYgQEAKICAgIC8vIFRoaXMganVzdCBuZWVkcyB0byBiZSBzb21lIHN5bWJvbCBpbiB0aGUgYmluYXJ5OyBDKysgZG9lc24ndAogICAgLy8gYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIDo6bWFpbiBob3dldmVyLgogICAgdm9pZCAqUCA9ICh2b2lkICopKGludHB0cl90KUdldEV4ZWN1dGFibGVQYXRoOworQEAgLTMwNiwxMiArMzEzLDIwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICAgc3RkOjpzdHJpbmcgQWN0aXZlUHJlZml4LCBBY3RpdmVCaW5EaXIsIEFjdGl2ZUluY2x1ZGVEaXIsIEFjdGl2ZUxpYkRpciwKKyAgICAgICAgICAgICAgIEFjdGl2ZUNNYWtlRGlyOworICAgc3RkOjpzdHJpbmcgQWN0aXZlSW5jbHVkZU9wdGlvbjsKKysgIC8vIEhhY2sgZm9yIFlvY3RvOiB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSBtdWx0aWxpYiBwYXRoIHdoZW4gd2UgYXJlIHVzaW5nCisrICAvLyBsbHZtLWNvbmZpZyBmcm9tIHdpdGhpbiBhIHRhcmdldCBzeXNyb290LgorKyAgc3RkOjpzdHJpbmcgTXVsdGlsaWJkaXIgPSBzdGQ6OmdldGVudigiWU9DVE9fQUxURVJOQVRFX01VTFRJTElCX05BTUUiKTsKKysgIGlmIChNdWx0aWxpYmRpci5lbXB0eSgpKSB7CisrICAgIE11bHRpbGliZGlyID0gIi9saWIiIExMVk1fTElCRElSX1NVRkZJWDsKKysgIH0KKysKKyAgIGlmIChJc0luRGV2ZWxvcG1lbnRUcmVlKSB7CisgICAgIEFjdGl2ZUluY2x1ZGVEaXIgPSBzdGQ6OnN0cmluZyhMTFZNX1NSQ19ST09UKSArICIvaW5jbHVkZSI7CisgICAgIEFjdGl2ZVByZWZpeCA9IEN1cnJlbnRFeGVjUHJlZml4OworIAorICAgICAvLyBDTWFrZSBvcmdhbml6ZXMgdGhlIHByb2R1Y3RzIGRpZmZlcmVudGx5IHRoYW4gYSBub3JtYWwgcHJlZml4IHN0eWxlCisgICAgIC8vIGxheW91dC4KKysKKyAgICAgc3dpdGNoIChEZXZlbG9wbWVudFRyZWVMYXlvdXQpIHsKKyAgICAgY2FzZSBDTWFrZVN0eWxlOgorICAgICAgIEFjdGl2ZUJpbkRpciA9IEFjdGl2ZU9ialJvb3QgKyAiL2JpbiI7CitAQCAtMzM2LDcgKzM1MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgeworICAgICBTbWFsbFN0cmluZzwyNTY+IHBhdGgoU3RyaW5nUmVmKExMVk1fVE9PTFNfSU5TVEFMTF9ESVIpKTsKKyAgICAgc3lzOjpmczo6bWFrZV9hYnNvbHV0ZShBY3RpdmVQcmVmaXgsIHBhdGgpOworICAgICBBY3RpdmVCaW5EaXIgPSBwYXRoLnN0cigpOworLSAgICBBY3RpdmVMaWJEaXIgPSBBY3RpdmVQcmVmaXggKyAiL2xpYiIgKyBMTFZNX0xJQkRJUl9TVUZGSVg7CisrICAgIEFjdGl2ZUxpYkRpciA9IEFjdGl2ZVByZWZpeCArIE11bHRpbGliZGlyOworICAgICBBY3RpdmVDTWFrZURpciA9IEFjdGl2ZUxpYkRpciArICIvY21ha2UvbGx2bSI7CisgICAgIEFjdGl2ZUluY2x1ZGVPcHRpb24gPSAiLUkiICsgQWN0aXZlSW5jbHVkZURpcjsKKyAgIH0KIC0tIAotMi4xNi4xCisyLjE4LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKaW5kZXggY2IzYmJhNi4uNzI3ODc2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCkBAIC0xOSwxNCArMTksMTMgQEAKIExMVk1fUkVMRUFTRSA9ICIke1BWfSIKIExMVk1fRElSID0gImxsdm0ke0xMVk1fUkVMRUFTRX0iCiAKLVNSQ1JFViA9ICIwODlkNGMwYzQ5MDY4N2RiNmM3NWYxZDA3NGU5OWM0ZDQyOTM2YTUwIgorU1JDUkVWID0gIjUxMzZkZjRkMDg5YTA4NmI3MGQ0NTIxNjBhZDU0NTE4NjEyNjk0OTgiCiBQViA9ICI2LjAiCiBCUkFOQ0ggPSAicmVsZWFzZV82MCIKLVBBVENIX1ZFUlNJT04gPSAiMCIKK1BBVENIX1ZFUlNJT04gPSAiMSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtLW1pcnJvci9sbHZtLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWh0dHAgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1sbHZtLVRhcmdldExpYnJhcnlJbmZvLVVuZGVmaW5lLWxpYmMtZnVuY3Rpb25zLWlmLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWdlbmVyYXRpbmctYS1uYXRpdmUtbGx2bS1jb25maWcucGF0Y2ggXAogICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC00NSwxNCArNDQsMTMgQEAKICAgICBlbHNlOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJDYW5ub3QgbWFwICclcycgdG8gYSBzdXBwb3J0ZWQgTExWTSBhcmNoaXRlY3R1cmUiICUgYSkKIAotZGVmIGdldF9sbHZtX3RhcmdldF9hcmNoKGJiLCBkKToKLSAgICByZXR1cm4gZ2V0X2xsdm1fYXJjaChiYiwgZCwgJ1RBUkdFVF9BUkNIJykKK2RlZiBnZXRfbGx2bV9ob3N0X2FyY2goYmIsIGQpOgorICAgIHJldHVybiBnZXRfbGx2bV9hcmNoKGJiLCBkLCAnSE9TVF9BUkNIJykKKwogIwogIyBEZWZhdWx0IHRvIGJ1aWxkIGFsbCBPRS1Db3JlIHN1cHBvcnRlZCB0YXJnZXQgYXJjaGVzICh1c2VyIG92ZXJyaWRhYmxlKS4KICMKLUxMVk1fVEFSR0VUUyA/PSAiJHtAZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpfSIKLUxMVk1fVEFSR0VUU19wcmVwZW5kX3g4NiA9ICJBTURHUFU7IgotTExWTV9UQVJHRVRTX3ByZXBlbmRfeDg2LTY0ID0gIkFNREdQVTsiCitMTFZNX1RBUkdFVFMgPz0gIkFNREdQVTske0BnZXRfbGx2bV9ob3N0X2FyY2goYmIsIGQpfSIKIAogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0dCA9ICJhcm0iCkBAIC02NSwxNyArNjMsMTkgQEAKICAgICAgICAgICAgICAgICAgIC1ETExWTV9FTkFCTEVfRkZJPU9OIFwKICAgICAgICAgICAgICAgICAgIC1ERkZJX0lOQ0xVREVfRElSPSQocGtnLWNvbmZpZyAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgbGliZmZpKSBcCiAgICAgICAgICAgICAgICAgICAtRExMVk1fT1BUSU1JWkVEX1RBQkxFR0VOPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1ETExWTV9UQVJHRVRTX1RPX0JVSUxEPSIke0xMVk1fVEFSR0VUU30iIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9UQVJHRVRTX1RPX0JVSUxEPScke0xMVk1fVEFSR0VUU30nIFwKICAgICAgICAgICAgICAgICAgIC1HIE5pbmphIgogCiBFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAogICAgICAgICAgICAgICAgICAgLURDTUFLRV9DUk9TU0NPTVBJTElORzpCT09MPU9OIFwKICAgICAgICAgICAgICAgICAgIC1ETExWTV9UQUJMRUdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS10YmxnZW4ke1BWfSBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fQ09ORklHX1BBVEg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2xsdm0tY29uZmlnJHtQVn0gXAogICAgICAgICAgICAgICAgICAiCiAKIEVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJcCiAgICAgICAgICAgICAgICAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HOkJPT0w9T04gXAogICAgICAgICAgICAgICAgICAgLURMTFZNX1RBQkxFR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLXRibGdlbiR7UFZ9IFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9DT05GSUdfUEFUSD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS1jb25maWcke1BWfSBcCiAgICAgICAgICAgICAgICAgICIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmYjNlNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYwpAQCAtMCwwICsxLDI4IEBACitIT01FUEFHRSA9ICJodHRwOi8vbWVzb25idWlsZC5jb20iCitTVU1NQVJZID0gIkEgaGlnaCBwZXJmb3JtYW5jZSBidWlsZCBzeXN0ZW0iCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L21lc29uLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGlua2VyLXJ1bGVzLW1vdmUtY3Jvc3NfYXJncy1pbi1mcm9udC1vZi1vdXRwdXRfYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2ktZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3RrZG9jLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyZDhhZmQ5MjE3NTEyNjFlMzYxNTE2NDM0NjRlZmQzMzk0MTYyZjY5ZWZiZThjZDUzZTBhNjZiMWNmMzk1ZWIiCitTUkNfVVJJW21kNXN1bV0gPSAiMzFiZGEzNTE5ZDhjMGViMzQzODI2NzI2OGE3ODA4NWUiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vMDAwMi1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJuaW5qYSBweXRob24zLWNvcmUgcHl0aG9uMy1tb2R1bGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wb2xraXQtMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2ZGQyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZDgwZDAyYTNjYTZlMjFmYTNkMDU1Yzg4YzA1MjM0YzJlYjRkYjEyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgorRGF0ZTogVGh1LCAyNiBKdWwgMjAxOCAxNjozMjo0OSArMDIwMAorU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IGJ1aWxkaW5nIGFsbGFyY2ggcmVjaXBlcyBhZ2FpbgorCitUaGlzIHJlZ2lzdGVycyAiYWxsYXJjaCIgYXMgYSBrbm93biBDUFUgZmFtaWx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CistLS0KKyBtZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5IHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5IGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQoraW5kZXggYTA1ODBhMi4uNzEyYjFlOCAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKKysrKyBiL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKK0BAIC03Myw2ICs3Myw3IEBAIGZyb20gLmNvbXBpbGVycyBpbXBvcnQgKAorIGJ1aWxkX2ZpbGVuYW1lID0gJ21lc29uLmJ1aWxkJworIAorIGtub3duX2NwdV9mYW1pbGllcyA9ICgKKysgICAgJ2FsbGFyY2gnLAorICAgICAnYWFyY2g2NCcsCisgICAgICdhcm0nLAorICAgICAnZTJrJywKKy0tIAorMi4xMi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtZ3RrZG9jLWZpeC1pc3N1ZXMtdGhhdC1hcmlzZS13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaAppbmRleCAxOTEyZTk0Li43ZmZkNmM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAxLWd0a2RvYy1maXgtaXNzdWVzLXRoYXQtYXJpc2Utd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjNTY5MmNhYzljNTU1NjY0MjgxMzc3YTgyYmY4YjFlNDY5MzRmNDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYWM0ZTU4YzU0OTRiZDdlNjAzYTMyNWI1YjVjMmI4MDc1ODQ5ZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDQgQXVnIDIwMTcgMTY6MTY6NDEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIGd0a2RvYzogZml4IGlzc3VlcyB0aGF0IGFyaXNlIHdoZW4gY3Jvc3MtY29tcGlsaW5nCitTdWJqZWN0OiBbUEFUQ0hdIGd0a2RvYzogZml4IGlzc3VlcyB0aGF0IGFyaXNlIHdoZW4gY3Jvc3MtY29tcGlsaW5nCiAKIFNwZWNpZmljYWxseToKIDEpIE1ha2UgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIHdyYXBwZXIgZm9yIGV4ZWN1dGluZyBiaW5hcmllcwpAQCAtMjEsMTAgKzIxLDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5Ci1pbmRleCA1Njc2NWE1Li40ZjdmZTMwIDEwMDY0NAoraW5kZXggY2I2OTY0MS4uNzI3ZWI2YSAxMDA2NDQKIC0tLSBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQogKysrIGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5Ci1AQCAtNzY5LDYgKzc2OSwxMCBAQCBUaGlzIHdpbGwgYmVjb21lIGEgaGFyZCBlcnJvciBpbiB0aGUgZnV0dXJlLicnJykKK0BAIC03OTIsNiArNzkyLDEwIEBAIFRoaXMgd2lsbCBiZWNvbWUgYSBoYXJkIGVycm9yIGluIHRoZSBmdXR1cmUuJycnKQogICAgICAgICAgICAgICAgICAnLS1tb2RlPScgKyBtb2RlXQogICAgICAgICAgaWYgbmFtZXNwYWNlOgogICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLW5hbWVzcGFjZT0nICsgbmFtZXNwYWNlKQpAQCAtMzUsNTMgKzM1LDI4IEBACiAgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLWh0bWxhcmdzPScsICdodG1sX2FyZ3MnLCBrd2FyZ3MpCiAgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLXNjYW5hcmdzPScsICdzY2FuX2FyZ3MnLCBrd2FyZ3MpCiAgICAgICAgICBhcmdzICs9IHNlbGYuX3VucGFja19hcmdzKCctLXNjYW5vYmpzYXJncz0nLCAnc2Nhbm9ianNfYXJncycsIGt3YXJncykKLUBAIC03OTYsMTQgKzgwMCwyMiBAQCBUaGlzIHdpbGwgYmVjb21lIGEgaGFyZCBlcnJvciBpbiB0aGUgZnV0dXJlLicnJykKLSAgICAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAnR2lyIGluY2x1ZGUgZGlycyBzaG91bGQgYmUgaW5jbHVkZV9kaXJlY3RvcmllcygpLicpCi0gICAgICAgICBjZmxhZ3MudXBkYXRlKGdldF9pbmNsdWRlX2FyZ3MoaW5jX2RpcnMpKQotKwotKyAgICAgICAgY3Jvc3NfY19hcmdzID0gIiAiLmpvaW4oc3RhdGUuZW52aXJvbm1lbnQuY3Jvc3NfaW5mby5jb25maWdbInByb3BlcnRpZXMiXS5nZXQoJ2NfYXJncycsICIiKSkKLSsgICAgICAgIGNyb3NzX2xpbmtfYXJncyA9ICIgIi5qb2luKHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KCdjX2xpbmtfYXJncycsICIiKSkKLSsKLSAgICAgICAgIGlmIGNmbGFnczoKLS0gICAgICAgICAgICBhcmdzICs9IFsnLS1jZmxhZ3M9JXMnICUgJyAnLmpvaW4oY2ZsYWdzKV0KLSsgICAgICAgICAgICBhcmdzICs9IFsnLS1jZmxhZ3M9JXMgJXMnICUgKGNyb3NzX2NfYXJncywnICcuam9pbihjZmxhZ3MpKV0KLSAgICAgICAgIGlmIGxkZmxhZ3M6Ci0tICAgICAgICAgICAgYXJncyArPSBbJy0tbGRmbGFncz0lcycgJSAnICcuam9pbihsZGZsYWdzKV0KLSsgICAgICAgICAgICBhcmdzICs9IFsnLS1sZGZsYWdzPSVzICVzJyAlIChjcm9zc19saW5rX2FyZ3MsICcgJy5qb2luKGxkZmxhZ3MpKV0KLSAgICAgICAgIGNvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY29tcGlsZXJzLmdldCgnYycpCi0tICAgICAgICBpZiBjb21waWxlcjoKLSsgICAgICAgIGNyb3NzX2NvbXBpbGVyID0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuY3Jvc3NfY29tcGlsZXJzLmdldCgnYycpCi0rICAgICAgICBpZiBjb21waWxlciBhbmQgbm90IHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6Ci0gICAgICAgICAgICAgYXJncyArPSBbJy0tY2M9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2V4ZWxpc3QoKSldCi0gICAgICAgICAgICAgYXJncyArPSBbJy0tbGQ9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpXQotKyAgICAgICAgZWxpZiBjcm9zc19jb21waWxlciBhbmQgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKLSsgICAgICAgICAgICBhcmdzICs9IFsnLS1jYz0lcycgJSAnICcuam9pbihjcm9zc19jb21waWxlci5nZXRfZXhlbGlzdCgpKV0KLSsgICAgICAgICAgICBhcmdzICs9IFsnLS1sZD0lcycgJSAnICcuam9pbihjcm9zc19jb21waWxlci5nZXRfbGlua2VyX2V4ZWxpc3QoKSldCi0gCi0gICAgICAgICByZXR1cm4gYXJncwotIAogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkgYi9tZXNvbmJ1aWxkL3NjcmlwdHMvZ3RrZG9jaGVscGVyLnB5Ci1pbmRleCA0NDA2YjI4Li5iODQ2ODI3IDEwMDY0NAoraW5kZXggOTQ4ZGM1YS4uOWM1YmQxOSAxMDA2NDQKIC0tLSBhL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKICsrKyBiL21lc29uYnVpbGQvc2NyaXB0cy9ndGtkb2NoZWxwZXIucHkKLUBAIC00NCwxMyArNDQsMTQgQEAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtaGVhZGVycycsIGRlc3Q9J2lnbm9yZV9oZWFkZXJzJywgZGVmYXVsdD0nJykKK0BAIC00NSw2ICs0NSw3IEBAIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taWdub3JlLWhlYWRlcnMnLCBkZXN0PSdpZ25vcmVfaGVhZGVycycsIGRlZmF1bHQ9JycpCiAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uYW1lc3BhY2UnLCBkZXN0PSduYW1lc3BhY2UnLCBkZWZhdWx0PScnKQogIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbW9kZScsIGRlc3Q9J21vZGUnLCBkZWZhdWx0PScnKQogIHBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5zdGFsbGRpcicsIGRlc3Q9J2luc3RhbGxfZGlyJykKICtwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWd0a2RvYy1leGUtd3JhcHBlcicsIGRlc3Q9J2d0a2RvY19leGVfd3JhcHBlcicpCiAgCi0gZGVmIGd0a2RvY19ydW5fY2hlY2soY21kLCBjd2QpOgotICAgICAjIFB1dCBzdGRlcnIgaW50byBzdGRvdXQgc2luY2Ugd2Ugd2FudCB0byBwcmludCBpdCBvdXQgYW55d2F5LgorIGRlZiBndGtkb2NfcnVuX2NoZWNrKGNtZCwgY3dkLCBsaWJyYXJ5X3BhdGhzPU5vbmUpOgorICAgICBpZiBsaWJyYXJ5X3BhdGhzIGlzIE5vbmU6CitAQCAtNjQsNyArNjUsNyBAQCBkZWYgZ3RrZG9jX3J1bl9jaGVjayhjbWQsIGN3ZCwgbGlicmFyeV9wYXRocz1Ob25lKToKICAgICAgIyBUaGlzIHByZXNlcnZlcyB0aGUgb3JkZXIgb2YgbWVzc2FnZXMuCi0gICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoY21kLCBjd2Q9Y3dkLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpWzA6Ml0KKyAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShjbWQsIGN3ZD1jd2QsIGVudj1lbnYsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVClbMDoyXQogICAgICBpZiBwLnJldHVybmNvZGUgIT0gMDoKIC0gICAgICAgIGVycl9tc2cgPSBbInshcn0gZmFpbGVkIHdpdGggc3RhdHVzIHs6ZH0iLmZvcm1hdChjbWRbMF0sIHAucmV0dXJuY29kZSldCiArICAgICAgICBlcnJfbXNnID0gWyJ7IXJ9IGZhaWxlZCB3aXRoIHN0YXR1cyB7OmR9Ii5mb3JtYXQoY21kLCBwLnJldHVybmNvZGUpXQogICAgICAgICAgaWYgb3V0OgogICAgICAgICAgICAgIGVycl9tc2cuYXBwZW5kKG91dCkKICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdcbicuam9pbihlcnJfbXNnKSkKLUBAIC01OCw3ICs1OSw3IEBAIGRlZiBndGtkb2NfcnVuX2NoZWNrKGNtZCwgY3dkKToKK0BAIC03NCw3ICs3NSw3IEBAIGRlZiBndGtkb2NfcnVuX2NoZWNrKGNtZCwgY3dkLCBsaWJyYXJ5X3BhdGhzPU5vbmUpOgogIGRlZiBidWlsZF9ndGtkb2Moc291cmNlX3Jvb3QsIGJ1aWxkX3Jvb3QsIGRvY19zdWJkaXIsIHNyY19zdWJkaXJzLAogICAgICAgICAgICAgICAgICAgbWFpbl9maWxlLCBtb2R1bGUsCiAgICAgICAgICAgICAgICAgICBodG1sX2FyZ3MsIHNjYW5fYXJncywgZml4eHJlZl9hcmdzLCBta2RiX2FyZ3MsCkBAIC05MCw3ICs2NSw3IEBACiAgICAgICAgICAgICAgICAgICBodG1sX2Fzc2V0cywgY29udGVudF9maWxlcywgaWdub3JlX2hlYWRlcnMsIG5hbWVzcGFjZSwKICAgICAgICAgICAgICAgICAgIGV4cGFuZF9jb250ZW50X2ZpbGVzLCBtb2RlKToKICAgICAgcHJpbnQoIkJ1aWxkaW5nIGRvY3VtZW50YXRpb24gZm9yICVzIiAlIG1vZHVsZSkKLUBAIC0xMTEsNiArMTEyLDkgQEAgZGVmIGJ1aWxkX2d0a2RvYyhzb3VyY2Vfcm9vdCwgYnVpbGRfcm9vdCwgZG9jX3N1YmRpciwgc3JjX3N1YmRpcnMsCitAQCAtMTM1LDYgKzEzNiw5IEBAIGRlZiBidWlsZF9ndGtkb2Moc291cmNlX3Jvb3QsIGJ1aWxkX3Jvb3QsIGRvY19zdWJkaXIsIHNyY19zdWJkaXJzLAogICAgICBpZiBnb2JqZWN0X3R5cGVzZmlsZToKICAgICAgICAgIHNjYW5vYmpzX2NtZCA9IFsnZ3RrZG9jLXNjYW5nb2JqJ10gKyBzY2Fub2Jqc19hcmdzICsgWyctLXR5cGVzPScgKyBnb2JqZWN0X3R5cGVzZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW1vZHVsZT0nICsgbW9kdWxlLApAQCAtOTksOCArNzQsOCBAQAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2ZsYWdzPScgKyBjZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1sZGZsYWdzPScgKyBsZGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbGQ9JyArIGxkXQotQEAgLTIwNyw2ICsyMTEsNyBAQCBkZWYgcnVuKGFyZ3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY2M9JyArIGNjLAorQEAgLTIzOCw2ICsyNDIsNyBAQCBkZWYgcnVuKGFyZ3MpOgogICAgICAgICAgbWtkYmFyZ3MsCiAgICAgICAgICBvcHRpb25zLmdvYmplY3RfdHlwZXNmaWxlLAogICAgICAgICAgc2Nhbm9ianNhcmdzLApAQCAtMTA4LDYgKzgzLDMgQEAKICAgICAgICAgIG9wdGlvbnMubGQsCiAgICAgICAgICBvcHRpb25zLmNjLAogICAgICAgICAgb3B0aW9ucy5sZGZsYWdzLAotLS0gCi0yLjE1LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLU1ha2UtQ1BVLWZhbWlseS13YXJuaW5ncy1mYXRhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTU2YTZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAyZTg1NTNmYzAxZTYyZWJjNGZhYTI0MGJmMjA5ODRhOGEwYWM3Mzg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMyBKdWwgMjAxOCAxMzo1OTowOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIENQVSBmYW1pbHkgd2FybmluZ3MgZmF0YWwKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKKy0tLQorIG1lc29uYnVpbGQvZW52aXJvbm1lbnQucHkgfCA2ICsrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbmJ1aWxkL2Vudmlyb25tZW50LnB5IGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQoraW5kZXggZDI5YTc3Zi4uMjY3YWNmOSAxMDA2NDQKKy0tLSBhL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKKysrKyBiL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKK0BAIC0yMzksOSArMjM5LDcgQEAgZGVmIGRldGVjdF9jcHVfZmFtaWx5KGNvbXBpbGVycyk6CisgICAgICAgICByZXR1cm4gJ3g4Nl82NCcKKyAKKyAgICAgaWYgdHJpYWwgbm90IGluIGtub3duX2NwdV9mYW1pbGllczoKKy0gICAgICAgIG1sb2cud2FybmluZygnVW5rbm93biBDUFUgZmFtaWx5IHshcn0sIHBsZWFzZSByZXBvcnQgdGhpcyBhdCAnCistICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy9uZXcgd2l0aCB0aGUnCistICAgICAgICAgICAgICAgICAgICAgJ291dHB1dCBvZiBgdW5hbWUgLWFgIGFuZCBgY2F0IC9wcm9jL2NwdWluZm9gJy5mb3JtYXQodHJpYWwpKQorKyAgICAgICAgcmFpc2UgRW52aXJvbm1lbnRFeGNlcHRpb24oJ1Vua25vd24gQ1BVIGZhbWlseSAlcywgc2VlIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWVzb24vVW5rbm93bkNQVSBmb3IgZGlyZWN0aW9ucy4nICUgdHJpYWwpCisgCisgICAgIHJldHVybiB0cmlhbAorIAorQEAgLTEwMTQsNyArMTAxMiw3IEBAIGNsYXNzIENyb3NzQnVpbGRJbmZvOgorICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW52aXJvbm1lbnRFeGNlcHRpb24oJ01hbGZvcm1lZCB2YWx1ZSBpbiBjcm9zcyBmaWxlIHZhcmlhYmxlICVzLicgJSBlbnRyeSkKKyAKKyAgICAgICAgICAgICAgICAgaWYgZW50cnkgPT0gJ2NwdV9mYW1pbHknIGFuZCByZXMgbm90IGluIGtub3duX2NwdV9mYW1pbGllczoKKy0gICAgICAgICAgICAgICAgICAgIG1sb2cud2FybmluZygnVW5rbm93biBDUFUgZmFtaWx5ICVzLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzL25ldycgJSB2YWx1ZSkKKysgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXhjZXB0aW9uKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHNlZSBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL01lc29uL1Vua25vd25DUFUgZm9yIGRpcmVjdGlvbnMuJyAlIHZhbHVlKQorIAorICAgICAgICAgICAgICAgICBpZiBzZWxmLm9rX3R5cGUocmVzKToKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29uZmlnW3NdW2VudHJ5XSA9IHJlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1nb2JqZWN0LWludHJvc3BlY3Rpb24tZGV0ZXJtaW5lLWctaXItc2Nhbm5lci1hbmQtZy1pLnBhdGNoCmluZGV4IGRlZDQyZDEuLmYzMjI2N2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRldGVybWluZS1nLWlyLXNjYW5uZXItYW5kLWctaS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLWdvYmplY3QtaW50cm9zcGVjdGlvbi1kZXRlcm1pbmUtZy1pci1zY2FubmVyLWFuZC1nLWkucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDk3MjY2N2UwZDc4OWE2OTY5YTVkNzkyNDk0MDRmMzUzOWY4OTE4MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDBiODYwY2I4YTIyYWU4NzZiNjA4ODkzOWRiYWJjYTIxNmJjMjk0MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNjoxODo0NyArMDMwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZ29iamVjdC1pbnRyb3NwZWN0aW9uOiBkZXRlcm1pbmUgZy1pci1zY2FubmVyIGFuZAorU3ViamVjdDogW1BBVENIXSBnb2JqZWN0LWludHJvc3BlY3Rpb246IGRldGVybWluZSBnLWlyLXNjYW5uZXIgYW5kCiAgZy1pci1jb21waWxlciBwYXRocyBmcm9tIHBrZ2NvbmZpZwogCiBEbyBub3QgaGFyZGNvZGUgdGhlIG5hbWUgb2YgdGhvc2UgYmluYXJpZXM7IGdvYmplY3QtaW50cm9zcGVjdGlvbgpAQCAtMTYsMTkgKzE2LDE5IEBACiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQotaW5kZXggNGY3ZmUzMC4uOTYxMGNmNiAxMDA2NDQKK2luZGV4IGIyOWJhYjkuLmRjNGM0MDEgMTAwNjQ0CiAtLS0gYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKICsrKyBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQotQEAgLTM5MCw4ICszOTAsNiBAQCBjbGFzcyBHbm9tZU1vZHVsZShFeHRlbnNpb25Nb2R1bGUpOgorQEAgLTM5Myw4ICszOTMsNiBAQCBjbGFzcyBHbm9tZU1vZHVsZShFeHRlbnNpb25Nb2R1bGUpOgogICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKCdHaXIgdGFrZXMgb25lIGFyZ3VtZW50JykKICAgICAgICAgIGlmIGt3YXJncy5nZXQoJ2luc3RhbGxfZGlyJyk6CiAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ2luc3RhbGxfZGlyIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBnZW5lcmF0ZV9naXIoKSwgc2VlICJpbnN0YWxsX2Rpcl9naXIiIGFuZCAiaW5zdGFsbF9kaXJfdHlwZWxpYiInKQotLSAgICAgICAgZ2lzY2FubmVyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCAnR2lyJykKLS0gICAgICAgIGdpY29tcGlsZXIgPSBmaW5kX3Byb2dyYW0oJ2ctaXItY29tcGlsZXInLCAnR2lyJykKKy0gICAgICAgIGdpc2Nhbm5lciA9IHNlbGYuaW50ZXJwcmV0ZXIuZmluZF9wcm9ncmFtX2ltcGwoJ2ctaXItc2Nhbm5lcicpCistICAgICAgICBnaWNvbXBpbGVyID0gc2VsZi5pbnRlcnByZXRlci5maW5kX3Byb2dyYW1faW1wbCgnZy1pci1jb21waWxlcicpCiAgICAgICAgICBnaXJ0YXJnZXQgPSBhcmdzWzBdCiAgICAgICAgICB3aGlsZSBoYXNhdHRyKGdpcnRhcmdldCwgJ2hlbGRfb2JqZWN0Jyk6CiAgICAgICAgICAgICAgZ2lydGFyZ2V0ID0gZ2lydGFyZ2V0LmhlbGRfb2JqZWN0Ci1AQCAtNDAyLDYgKzQwMCw4IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CitAQCAtNDA1LDYgKzQwMyw4IEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CiAgICAgICAgICAgICAgICAgIHNlbGYuZ2lyX2RlcCA9IFBrZ0NvbmZpZ0RlcGVuZGVuY3koJ2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmVudmlyb25tZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbmF0aXZlJzogVHJ1ZX0pCkBAIC0zNyw2ICszNywzIEBACiAgICAgICAgICAgICAgcGtnYXJncyA9IHNlbGYuZ2lyX2RlcC5nZXRfY29tcGlsZV9hcmdzKCkKICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgcmFpc2UgTWVzb25FeGNlcHRpb24oJ2dvYmplY3QtaW50cm9zcGVjdGlvbiBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQsIGdpciBjYW5ub3QgYmUgZ2VuZXJhdGVkLicpCi0tLSAKLTIuMTUuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKaW5kZXggYWY1ZTZhMS4uZGE0Nzc0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZmZhNzJlYWM1NjU1OGFhNDE3MWRkNzBhYzFlOWMyN2EwNzMzOGZhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTc2MmQ4NWM4MjNhZGZlZmMyN2JhNjEyOGM3Yjk5N2FhNTAxNjZjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgogRGF0ZTogV2VkLCAxNSBOb3YgMjAxNyAxNTowNTowMSArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNF0gbmF0aXZlX2JpbmRpcgorU3ViamVjdDogW1BBVENIXSBuYXRpdmVfYmluZGlyCiAKIFNvbWUgbGlicmFyaWVzLCBsaWtlIFFULCBoYXZlIHByZS1wcm9jZXNzb3JzIHRoYXQgY29udmVydCB0aGVpciBpbnB1dAogZmlsZXMgaW50byBzb21ldGhpbmcgdGhhdCB0aGUgY3Jvc3MtY29tcGlsZXIgY2FuIHByb2Nlc3MuIFdlIGZpbmQgdGhlCkBAIC0xNywxNSArMTcsMTUgQEAKIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAZ21haWwuY29tPgogCiAtLS0KLSBtZXNvbmJ1aWxkL2RlcGVuZGVuY2llcy9iYXNlLnB5IHwgMTYgKysrKysrKysrKy0tLS0tLQorIG1lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkgfCAxOSArKysrKysrKysrKy0tLS0tLS0tCiAgbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkgICB8ICA2ICsrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weSBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL2Jhc2UucHkKLWluZGV4IGJmNzliYzUuLmM5ZmQwOGMgMTAwNjQ0CitpbmRleCA2ZDM2NzhmLi45MGZkYjgwIDEwMDY0NAogLS0tIGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weQogKysrIGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvYmFzZS5weQotQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFzcyBEZXBlbmRlbmN5OgorQEAgLTE0Niw3ICsxNDYsNyBAQCBjbGFzcyBEZXBlbmRlbmN5OgogICAgICBkZWYgbmVlZF90aHJlYWRzKHNlbGYpOgogICAgICAgICAgcmV0dXJuIEZhbHNlCiAgCkBAIC0zNCw3ICszNCw3IEBACiAgICAgICAgICByYWlzZSBEZXBlbmRlbmN5RXhjZXB0aW9uKCd7IXJ9IGlzIG5vdCBhIHBrZ2NvbmZpZyBkZXBlbmRlbmN5Jy5mb3JtYXQoc2VsZi5uYW1lKSkKICAKICAgICAgZGVmIGdldF9jb25maWd0b29sX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUpOgotQEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBJbnRlcm5hbERlcGVuZGVuY3koRGVwZW5kZW5jeSk6CitAQCAtMTgzLDcgKzE4Myw3IEBAIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKICAgICAgICAgIHNlbGYuc291cmNlcyA9IHNvdXJjZXMKICAgICAgICAgIHNlbGYuZXh0X2RlcHMgPSBleHRfZGVwcwogIApAQCAtNDMsMzMgKzQzLDQ3IEBACiAgICAgICAgICByYWlzZSBEZXBlbmRlbmN5RXhjZXB0aW9uKCdNZXRob2QgImdldF9wa2djb25maWdfdmFyaWFibGUoKSIgaXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBmb3IgYW4gaW50ZXJuYWwgZGVwZW5kZW5jeScpCiAgCi1AQCAtNDI1LDEwICs0MjUsMTQgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorQEAgLTUyMywxNSArNTIzLDE4IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKICAgICAgICAgIHJldHVybiBzLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lLCBzZWxmLmlzX2ZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbl9yZXFzKQogIAorLSAgICBkZWYgX2NhbGxfcGtnYmluX3JlYWwoc2VsZiwgYXJncywgZW52KToKKy0gICAgICAgIGNtZCA9IHNlbGYucGtnYmluLmdldF9jb21tYW5kKCkgKyBhcmdzCisrICAgIGRlZiBfY2FsbF9wa2diaW5fcmVhbChzZWxmLCBhcmdzLCBlbnYsIHVzZV9uYXRpdmU9RmFsc2UpOgorKyAgICAgICAgaWYgdXNlX25hdGl2ZToKKysgICAgICAgICAgICBjbWQgPSBzZWxmLnBrZ2Jpbi5nZXRfY29tbWFuZCgpICsgIi1uYXRpdmUiICsgYXJncworKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBjbWQgPSBzZWxmLnBrZ2Jpbi5nZXRfY29tbWFuZCgpICsgYXJncworICAgICAgICAgcCwgb3V0ID0gUG9wZW5fc2FmZShjbWQsIGVudj1lbnYpWzA6Ml0KKyAgICAgICAgIHJjLCBvdXQgPSBwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpCisgICAgICAgICBjYWxsID0gJyAnLmpvaW4oY21kKQorICAgICAgICAgbWxvZy5kZWJ1ZygiQ2FsbGVkIGB7fWAgLT4ge31cbnt9Ii5mb3JtYXQoY2FsbCwgcmMsIG91dCkpCisgICAgICAgICByZXR1cm4gcmMsIG91dAorIAogLSAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lKToKICsgICAgZGVmIF9jYWxsX3BrZ2JpbihzZWxmLCBhcmdzLCBlbnY9Tm9uZSwgdXNlX25hdGl2ZT1GYWxzZSk6Ci0gICAgICAgICBpZiBub3QgZW52OgorICAgICAgICAgaWYgZW52IGlzIE5vbmU6CisgICAgICAgICAgICAgZmVudiA9IGVudgogICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24KLS0gICAgICAgIHAsIG91dCA9IFBvcGVuX3NhZmUoW3NlbGYucGtnYmluXSArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KLSsgICAgICAgIGlmIHVzZV9uYXRpdmU6Ci0rICAgICAgICAgICAgcGtnYmluID0gW3NlbGYucGtnYmluICsgIi1uYXRpdmUiXQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBwa2diaW4gPSBbc2VsZi5wa2diaW5dCi0rICAgICAgICBwLCBvdXQgPSBQb3Blbl9zYWZlKHBrZ2JpbiArIGFyZ3MsIGVudj1lbnYpWzA6Ml0KLSAgICAgICAgIHJldHVybiBwLnJldHVybmNvZGUsIG91dC5zdHJpcCgpCitAQCAtNTQwLDcgKzU0Myw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKKyAgICAgICAgIHRhcmdzID0gdHVwbGUoYXJncykKKyAgICAgICAgIGNhY2hlID0gUGtnQ29uZmlnRGVwZW5kZW5jeS5wa2diaW5fY2FjaGUKKyAgICAgICAgIGlmIChzZWxmLnBrZ2JpbiwgdGFyZ3MsIGZlbnYpIG5vdCBpbiBjYWNoZToKKy0gICAgICAgICAgICBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0gPSBzZWxmLl9jYWxsX3BrZ2Jpbl9yZWFsKGFyZ3MsIGVudikKKysgICAgICAgICAgICBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0gPSBzZWxmLl9jYWxsX3BrZ2Jpbl9yZWFsKGFyZ3MsIGVudiwgdXNlX25hdGl2ZSkKKyAgICAgICAgIHJldHVybiBjYWNoZVsoc2VsZi5wa2diaW4sIHRhcmdzLCBmZW52KV0KICAKICAgICAgZGVmIF9jb252ZXJ0X21pbmd3X3BhdGhzKHNlbGYsIGFyZ3MpOgotQEAgLTUyMiw3ICs1MjYsNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6Ci0gICAgICAgICAgICAgIyBsaW5rZXJzIHN1Y2ggYXMgTVNWQywgc28gcHJlcGVuZCB0aGVtLgotICAgICAgICAgICAgIHNlbGYubGlua19hcmdzID0gWyctTCcgKyBscCBmb3IgbHAgaW4gbGlicGF0aHNdICsgc2VsZi5saW5rX2FyZ3MKK0BAIC03MTgsNyArNzIxLDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgb3V0X3JhdykpCisgICAgICAgICBzZWxmLmxpbmtfYXJncywgc2VsZi5yYXdfbGlua19hcmdzID0gc2VsZi5fc2VhcmNoX2xpYnMob3V0LCBvdXRfcmF3KQogIAogLSAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MpOgogKyAgICBkZWYgZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZShzZWxmLCB2YXJpYWJsZV9uYW1lLCBrd2FyZ3MsIHVzZV9uYXRpdmU9RmFsc2UpOgogICAgICAgICAgb3B0aW9ucyA9IFsnLS12YXJpYWJsZT0nICsgdmFyaWFibGVfbmFtZSwgc2VsZi5uYW1lXQogIAogICAgICAgICAgaWYgJ2RlZmluZV92YXJpYWJsZScgaW4ga3dhcmdzOgotQEAgLTUzNSw3ICs1MzksNyBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CitAQCAtNzMxLDcgKzczNCw3IEBAIGNsYXNzIFBrZ0NvbmZpZ0RlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKICAKICAgICAgICAgICAgICBvcHRpb25zID0gWyctLWRlZmluZS12YXJpYWJsZT0nICsgJz0nLmpvaW4oZGVmaW5pdGlvbildICsgb3B0aW9ucwogIApAQCAtNzksMTAgKzkzLDEwIEBACiAgICAgICAgICBpZiByZXQgIT0gMDoKICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkOgogZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5IGIvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKLWluZGV4IDFkYjUxOGMuLjRlZDFkMDQgMTAwNjQ0CitpbmRleCAxOTdkMjJjLi5jNjgzZDIxIDEwMDY0NAogLS0tIGEvbWVzb25idWlsZC9kZXBlbmRlbmNpZXMvdWkucHkKICsrKyBiL21lc29uYnVpbGQvZGVwZW5kZW5jaWVzL3VpLnB5Ci1AQCAtMjM5LDcgKzIzOSw3IEBAIGNsYXNzIFF0QmFzZURlcGVuZGVuY3koRXh0ZXJuYWxEZXBlbmRlbmN5KToKK0BAIC0yODUsNyArMjg1LDcgQEAgY2xhc3MgUXRCYXNlRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogICAgICAgICAgc2VsZi5iaW5kaXIgPSBzZWxmLmdldF9wa2djb25maWdfaG9zdF9iaW5zKGNvcmUpCiAgICAgICAgICBpZiBub3Qgc2VsZi5iaW5kaXI6CiAgICAgICAgICAgICAgIyBJZiBleGVjX3ByZWZpeCBpcyBub3QgZGVmaW5lZCwgdGhlIHBrZy1jb25maWcgZmlsZSBpcyBicm9rZW4KQEAgLTkxLDcgKzEwNSw3IEBACiAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQogIAotQEAgLTM1OSw3ICszNTksNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgorQEAgLTQyNyw3ICs0MjcsNyBAQCBjbGFzcyBRdDREZXBlbmRlbmN5KFF0QmFzZURlcGVuZGVuY3kpOgogICAgICAgICAgYXBwbGljYXRpb25zID0gWydtb2MnLCAndWljJywgJ3JjYycsICdsdXBkYXRlJywgJ2xyZWxlYXNlJ10KICAgICAgICAgIGZvciBhcHBsaWNhdGlvbiBpbiBhcHBsaWNhdGlvbnM6CiAgICAgICAgICAgICAgdHJ5OgpAQCAtMTAwLDE1ICsxMTQsMTIgQEAKICAgICAgICAgICAgICBleGNlcHQgTWVzb25FeGNlcHRpb246CiAgICAgICAgICAgICAgICAgIHBhc3MKICAKLUBAIC0zNjksNyArMzY5LDcgQEAgY2xhc3MgUXQ1RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKK0BAIC00MzcsNyArNDM3LDcgQEAgY2xhc3MgUXQ1RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKICAgICAgICAgIFF0QmFzZURlcGVuZGVuY3kuX19pbml0X18oc2VsZiwgJ3F0NScsIGVudiwga3dhcmdzKQogIAogICAgICBkZWYgZ2V0X3BrZ2NvbmZpZ19ob3N0X2JpbnMoc2VsZiwgY29yZSk6CiAtICAgICAgICByZXR1cm4gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdob3N0X2JpbnMnLCB7fSkKICsgICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9LCB1c2VfbmF0aXZlPVRydWUpCiAgCi0gCi0gIyBUaGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50IHdheXMgb2YgZGVwZW5kaW5nIG9uIFNETDI6Ci0tLSAKLTIuMTUuMQotCisgICAgIGRlZiBnZXRfcHJpdmF0ZV9pbmNsdWRlcyhzZWxmLCBtb2RfaW5jX2RpciwgbW9kdWxlKToKKyAgICAgICAgIHJldHVybiBfcXRfZ2V0X3ByaXZhdGVfaW5jbHVkZXMobW9kX2luY19kaXIsIG1vZHVsZSwgc2VsZi52ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vZ2ktZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9naS1mbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTRjMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vZ2ktZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorUGFzcyB0aGUgY29ycmVjdCBjZmxhZ3MvbGRmbGFncyB0byB0aGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHRvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcHVsbC80MjYxXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weSBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQoraW5kZXggY2I2OTY0MWUuLmJiNDQ0OWEwIDEwMDY0NAorLS0tIGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CisrKysgYi9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKK0BAIC01NzksNyArNTc5LDEwIEBAIGNsYXNzIEdub21lTW9kdWxlKEV4dGVuc2lvbk1vZHVsZSk6CisgICAgICAgICBleHRlcm5hbF9sZGZsYWdzICs9IGxpc3QoZGVwX2V4dGVybmFsX2xkZmxhZ3MpCisgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gWyctLWNmbGFncy1iZWdpbiddCisgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gY2ZsYWdzCistICAgICAgICBzY2FuX2NvbW1hbmQgKz0gc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2FyZ3MobGFuZykKKysgICAgICAgIGlmIHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisrICAgICAgICAgICAgc2Nhbl9jb21tYW5kICs9IHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KGxhbmcgKyAnX2FyZ3MnLCAiIikKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgc2Nhbl9jb21tYW5kICs9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmdldF9leHRlcm5hbF9hcmdzKGxhbmcpCisgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gWyctLWNmbGFncy1lbmQnXQorICAgICAgICAgIyBuZWVkIHRvIHB1dCBvdXIgb3V0cHV0IGRpcmVjdG9yeSBmaXJzdCBhcyB3ZSBuZWVkIHRvIHVzZSB0aGUKKyAgICAgICAgICMgZ2VuZXJhdGVkIGxpYnJhcmllcyBpbnN0ZWFkIG9mIGFueSBwb3NzaWJseSBpbnN0YWxsZWQgc3lzdGVtL3ByZWZpeAorQEAgLTYxNCw3ICs2MTQsMTIgQEAgY2xhc3MgR25vbWVNb2R1bGUoRXh0ZW5zaW9uTW9kdWxlKToKKyAgICAgICAgICAgICAgICAgc2Nhbl9jb21tYW5kLmFwcGVuZCgnLUwnICsgZCkKKyAgICAgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gWyctLWxpYnJhcnknLCBsaWJuYW1lXQorIAorLSAgICAgICAgZm9yIGxpbmtfYXJnIGluIHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmdldF9leHRlcm5hbF9saW5rX2FyZ3MobGFuZyk6CisrICAgICAgICBpZiBzdGF0ZS5lbnZpcm9ubWVudC5pc19jcm9zc19idWlsZCgpOgorKyAgICAgICAgICAgIGxpbmtfYXJncyA9IHN0YXRlLmVudmlyb25tZW50LmNyb3NzX2luZm8uY29uZmlnWyJwcm9wZXJ0aWVzIl0uZ2V0KGxhbmcgKyAnX2xpbmtfYXJncycsICIiKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBsaW5rX2FyZ3MgPSBzdGF0ZS5lbnZpcm9ubWVudC5jb3JlZGF0YS5nZXRfZXh0ZXJuYWxfbGlua19hcmdzKGxhbmcpCisrCisrICAgICAgICBmb3IgbGlua19hcmcgaW4gbGlua19hcmdzOgorICAgICAgICAgICAgIGlmIGxpbmtfYXJnLnN0YXJ0c3dpdGgoJy1MJyk6CisgICAgICAgICAgICAgICAgIHNjYW5fY29tbWFuZC5hcHBlbmQobGlua19hcmcpCisgICAgICAgICBzY2FuX2NvbW1hbmQgKz0gbGlzdChleHRlcm5hbF9sZGZsYWdzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vZ3RrZG9jLWZsYWdzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vZ3RrZG9jLWZsYWdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZjM0ODkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9ndGtkb2MtZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRW5zdXJlIHRoYXQgaW4gYSBjcm9zcyBjb21waWxlIG9ubHkgdGhlIHRhcmdldCBmbGFncyBhcmUgcGFzc2VkIHRvIGd0ay1kb2MsIGFuZAorbm90IHRoZSBuYXRpdmUgZmxhZ3MuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9wdWxsLzQyNjFdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5IGIvbWVzb25idWlsZC9tb2R1bGVzL2dub21lLnB5CitpbmRleCA0YWYzMzMwNC4uODc1MWY1M2MgMTAwNjQ0CistLS0gYS9tZXNvbmJ1aWxkL21vZHVsZXMvZ25vbWUucHkKKysrKyBiL21lc29uYnVpbGQvbW9kdWxlcy9nbm9tZS5weQorQEAgLTg1MSwxNyArODUxLDMwIEBAIFRoaXMgd2lsbCBiZWNvbWUgYSBoYXJkIGVycm9yIGluIHRoZSBmdXR1cmUuJycnKQorICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGluY2QuaGVsZF9vYmplY3QsIChzdHIsIGJ1aWxkLkluY2x1ZGVEaXJzKSk6CisgICAgICAgICAgICAgICAgIHJhaXNlIE1lc29uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgJ0dpciBpbmNsdWRlIGRpcnMgc2hvdWxkIGJlIGluY2x1ZGVfZGlyZWN0b3JpZXMoKS4nKQorKworICAgICAgICAgY2ZsYWdzLnVwZGF0ZShnZXRfaW5jbHVkZV9hcmdzKGluY19kaXJzKSkKKy0gICAgICAgIGNmbGFncy51cGRhdGUoc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2FyZ3MoJ2MnKSkKKysgICAgICAgIGlmIHN0YXRlLmVudmlyb25tZW50LmlzX2Nyb3NzX2J1aWxkKCk6CisrICAgICAgICAgICAgY2ZsYWdzLnVwZGF0ZShzdGF0ZS5lbnZpcm9ubWVudC5jcm9zc19pbmZvLmNvbmZpZ1sicHJvcGVydGllcyJdLmdldCgnY19hcmdzJywgIiIpKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBjZmxhZ3MudXBkYXRlKHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmdldF9leHRlcm5hbF9hcmdzKCdjJykpCisrCisgICAgICAgICBsZGZsYWdzID0gT3JkZXJlZFNldCgpCisgICAgICAgICBsZGZsYWdzLnVwZGF0ZShpbnRlcm5hbF9sZGZsYWdzKQorLSAgICAgICAgbGRmbGFncy51cGRhdGUoc3RhdGUuZW52aXJvbm1lbnQuY29yZWRhdGEuZ2V0X2V4dGVybmFsX2xpbmtfYXJncygnYycpKQorKyAgICAgICAgaWYgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKKysgICAgICAgICAgICBsZGZsYWdzLnVwZGF0ZShzdGF0ZS5lbnZpcm9ubWVudC5jcm9zc19pbmZvLmNvbmZpZ1sicHJvcGVydGllcyJdLmdldCgnY19saW5rX2FyZ3MnLCAiIikpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIGxkZmxhZ3MudXBkYXRlKHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmdldF9leHRlcm5hbF9saW5rX2FyZ3MoJ2MnKSkKKyAgICAgICAgIGxkZmxhZ3MudXBkYXRlKGV4dGVybmFsX2xkZmxhZ3MpCisrCisgICAgICAgICBpZiBjZmxhZ3M6CisgICAgICAgICAgICAgYXJncyArPSBbJy0tY2ZsYWdzPSVzJyAlICcgJy5qb2luKGNmbGFncyldCisgICAgICAgICBpZiBsZGZsYWdzOgorICAgICAgICAgICAgIGFyZ3MgKz0gWyctLWxkZmxhZ3M9JXMnICUgJyAnLmpvaW4obGRmbGFncyldCistICAgICAgICBjb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNvbXBpbGVycy5nZXQoJ2MnKQorKworKyAgICAgICAgaWYgc3RhdGUuZW52aXJvbm1lbnQuaXNfY3Jvc3NfYnVpbGQoKToKKysgICAgICAgICAgICBjb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNyb3NzX2NvbXBpbGVycy5nZXQoJ2MnKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBjb21waWxlciA9IHN0YXRlLmVudmlyb25tZW50LmNvcmVkYXRhLmNvbXBpbGVycy5nZXQoJ2MnKQorICAgICAgICAgaWYgY29tcGlsZXI6CisgICAgICAgICAgICAgYXJncyArPSBbJy0tY2M9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2V4ZWxpc3QoKSldCisgICAgICAgICAgICAgYXJncyArPSBbJy0tbGQ9JXMnICUgJyAnLmpvaW4oY29tcGlsZXIuZ2V0X2xpbmtlcl9leGVsaXN0KCkpXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbWVzb24tc2V0dXAucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi9tZXNvbi1zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hOTc0OWVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbWVzb24tc2V0dXAucHkKQEAgLTAsMCArMSw2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworZGVmIGJhaWwobXNnKToKKyAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAgICBzeXMuZXhpdCgxKQorCitfTUFSS0VSID0gJ0BAJworZGVmIHRyYW5zZm9ybV9saW5lKGxpbmUpOgorICAgICMgU3Vic3RpdHV0ZSBhbnkgc3BlY2lhbCBtYXJrZXJzIG9mIHRoaXMgZm9ybToKKyAgICAjIEBARU5WQEAKKyAgICAjIHdpdGggdGhlIHZhbHVlIG9mIEVOViwgc3BsaXQgaW50byBtZXNvbiBhcnJheSBzeW50YXguCisgICAgc3RhcnQgPSBsaW5lLmZpbmQoX01BUktFUikKKyAgICBpZiBzdGFydCA9PSAtMToKKyAgICAgICAgcmV0dXJuIGxpbmUKKworICAgIGVuZCA9IGxpbmUucmZpbmQoX01BUktFUikKKyAgICBpZiBlbmQgPT0gc3RhcnQ6CisgICAgICAgIHJldHVybiBsaW5lCisKKyAgICAjIExvb2t1cCB2YWx1ZSBvZiB0aGUgZW52IHZhci4KKyAgICB2YXIgPSBsaW5lW3N0YXJ0K2xlbihfTUFSS0VSKTplbmRdCisgICAgdHJ5OgorICAgICAgICB2YWwgPSBvcy5lbnZpcm9uW3Zhcl0KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIGJhaWwoJ2Nhbm5vdCBnZW5lcmF0ZSBtZXNvbi5jcm9zczsgZW52IHZhciAlcyBub3Qgc2V0JyAlIHZhcikKKworICAgICMgVHJhbnNmb3JtIGludG8gbWVzb24gYXJyYXkuCisgICAgdmFsID0gWyInJXMnIiAlIHggZm9yIHggaW4gdmFsLnNwbGl0KCldCisgICAgdmFsID0gJywgJy5qb2luKHZhbCkKKyAgICB2YWwgPSAnWyVzXScgJSB2YWwKKworICAgIGJlZm9yZSA9IGxpbmVbOnN0YXJ0XQorICAgIGFmdGVyID0gbGluZVtlbmQrbGVuKF9NQVJLRVIpOl0KKworICAgIHJldHVybiAnJXMlcyVzJyAlIChiZWZvcmUsIHZhbCwgYWZ0ZXIpCisKKyMgTWFrZSBzdXJlIHRoaXMgaXMgcmVhbGx5IGFuIFNESyBleHRyYWN0aW9uIGVudmlyb25tZW50LgordHJ5OgorICAgIHN5c3Jvb3QgPSBvcy5lbnZpcm9uWydPRUNPUkVfTkFUSVZFX1NZU1JPT1QnXQorZXhjZXB0IEtleUVycm9yOgorICAgIGJhaWwoJ09FQ09SRV9OQVRJVkVfU1lTUk9PVCBlbnYgdmFyIG11c3QgYmUgc2V0JykKKworY3Jvc3NfZmlsZSA9IG9zLnBhdGguam9pbihzeXNyb290LCAndXNyL3NoYXJlL21lc29uL21lc29uLmNyb3NzJykKK3RtcF9jcm9zc19maWxlID0gJyVzLnRtcCcgJSBjcm9zc19maWxlCisKKyMgUmVhZCB0aHJvdWdoIGFuZCB0cmFuc2Zvcm0gdGhlIGN1cnJlbnQgbWVzb24uY3Jvc3MuCitsaW5lcyA9IFtdCit3aXRoIG9wZW4oY3Jvc3NfZmlsZSwgJ3InKSBhcyBmOgorICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgIGxpbmVzLmFwcGVuZCh0cmFuc2Zvcm1fbGluZShsaW5lKSkKKworIyBXcml0ZSB0aGUgdHJhbnNmb3JtZWQgcmVzdWx0IHRvIGEgdG1wIGZpbGUgYW5kIGF0b21pY2FsbHkgcmVuYW1lIGl0LiBJbiBjYXNlCisjIHdlIGNyYXNoIGR1cmluZyB0aGUgZmlsZSB3cml0ZSwgd2UgZG9uJ3Qgd2FudCBhbiBpbnZhbGlkIG1lc29uLmNyb3NzIGZpbGUuCit3aXRoIG9wZW4odG1wX2Nyb3NzX2ZpbGUsICd3JykgYXMgZjoKKyAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgZi53cml0ZShsaW5lKQorICAgIGYuZmx1c2goKQorICAgIG9zLmZkYXRhc3luYyhmLmZpbGVubygpKQorb3MucmVuYW1lKHRtcF9jcm9zc19maWxlLCBjcm9zc19maWxlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vbWVzb24td3JhcHBlciBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL21lc29uLXdyYXBwZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjJlMDBkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uL21lc29uLXdyYXBwZXIKQEAgLTAsMCArMSwxNCBAQAorIyEvYmluL3NoCisKK2lmIFsgLXogIiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QiIF07IHRoZW4KKyAgICBlY2hvICJPRUNPUkVfTkFUSVZFX1NZU1JPT1Qgbm90IHNldDsgYXJlIHlvdSBpbiBhIFlvY3RvIFNESyBlbnZpcm9ubWVudD8iID4mMgorZmkKKworIyBJZiB0aGVzZSBhcmUgc2V0IHRvIGEgY3Jvc3MtY29tcGlsZSBwYXRoLCBtZXNvbiB3aWxsIGdldCBjb25mdXNlZCBhbmQgdHJ5IHRvCisjIHVzZSB0aGVtIGFzIG5hdGl2ZSB0b29scy4gVW5zZXQgdGhlbSB0byBwcmV2ZW50IHRoaXMsIGFzIGFsbCB0aGUgY3Jvc3MtY29tcGlsZQorIyBjb25maWcgaXMgYWxyZWFkeSBpbiBtZXNvbi5jcm9zcy4KK3Vuc2V0IENDIENYWCBDUFAgTEQgQVIgTk0gU1RSSVAKKworZXhlYyAiJE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3IvYmluL21lc29uLnJlYWwiIFwKKyAgICAgLS1jcm9zcy1maWxlICIkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zaGFyZS9tZXNvbi9tZXNvbi5jcm9zcyIgXAorICAgICAiJEAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhODFkYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC40NC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cDovL21lc29uYnVpbGQuY29tIgotU1VNTUFSWSA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UgYnVpbGQgc3lzdGVtIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ndGtkb2MtZml4LWlzc3Vlcy10aGF0LWFyaXNlLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRldGVybWluZS1nLWlyLXNjYW5uZXItYW5kLWctaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUxpbmtlci1ydWxlcy1tb3ZlLWNyb3NzX2FyZ3MtaW4tZnJvbnQtb2Ytb3V0cHV0X2FyZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjgyYjExOThiZjcxNGI1YTRkYTg0YmZlODM3NmM3OWNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlYTFhNzIxNTc0YWRiMjMxNjBiNjQ4MTE5MWJjYzExNzNmMzc0ZTAyYjBmZjNiYjBhZTg1ZDk4OGQ5N2U0ZmEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vcmVsZWFzZXMiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gPSAibmluamEgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbW9kdWxlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ3LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjQ3LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3ZmExNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNDcuMi5iYgpAQCAtMCwwICsxLDMgQEAKK2luY2x1ZGUgbWVzb24uaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNDcuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL25hdGl2ZXNkay1tZXNvbl8wLjQ3LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM1MDNhYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL25hdGl2ZXNkay1tZXNvbl8wLjQ3LjIuYmIKQEAgLTAsMCArMSw3NCBAQAoraW5jbHVkZSBtZXNvbi5pbmMKKworaW5oZXJpdCBuYXRpdmVzZGsKKworU1JDX1VSSSArPSAiZmlsZTovL21lc29uLXNldHVwLnB5IFwKKyAgICAgICAgICAgIGZpbGU6Ly9tZXNvbi13cmFwcGVyIgorCitkZWYgbWVzb25fYXJyYXkodmFyLCBkKToKKyAgICByZXR1cm4gIicsICciLmpvaW4oZC5nZXRWYXIodmFyKS5zcGxpdCgpKS5qb2luKCgiJyIsICInIikpCisKKyMgYm90aCBhcmUgcmVxdWlyZWQgYnV0IG5vdCB1c2VkIGJ5IG1lc29uCitNRVNPTl9TREtfRU5ESUFOID0gImJvZ3VzLWVuZGlhbiIKK01FU09OX1RBUkdFVF9FTkRJQU4gPSAiYm9ndXMtZW5kaWFuIgorCitNRVNPTl9UT09MQ0hBSU5fQVJHUyA9ICIke0JVSUxEU0RLX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iCitNRVNPTl9DX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtCVUlMRFNES19DRkxBR1N9IgorTUVTT05fQ1BQX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtCVUlMRFNES19DWFhGTEFHU30iCitNRVNPTl9MSU5LX0FSR1MgPSAiJHtNRVNPTl9UT09MQ0hBSU5fQVJHU30gJHtCVUlMRFNES19MREZMQUdTfSIKKworIyBUaGlzIGxvZ2ljIGlzIHNpbWlsYXIgYnV0IG5vdCBpZGVudGljYWwgdG8gdGhhdCBpbiBtZXNvbi5iYmNsYXNzLCBzaW5jZSBpdCdzCisjIGdlbmVyYXRpbmcgZm9yIGFuIFNESyByYXRoZXIgdGhhbiBhIGNyb3NzLWNvbXBpbGUuIEltcG9ydGFudCBkaWZmZXJlbmNlcyBhcmU6CisjIC0gV2UgY2FuJ3Qgc2V0IHZhcnMgbGlrZSBDQywgQ1hYLCBldGMuIHlldCBiZWNhdXNlIHRoZXkgd2lsbCBiZSBmaWxsZWQgaW4gd2l0aAorIyAgIHJlYWwgcGF0aHMgYnkgbWVzb24tc2V0dXAuc2ggd2hlbiB0aGUgU0RLIGlzIGV4dHJhY3RlZC4KKyMgLSBTb21lIG92ZXJyaWRlcyBhcmVuJ3QgbmVlZGVkLCBzaW5jZSB0aGUgU0RLIGluamVjdHMgcGF0aHMgdGhhdCB0YWtlIGNhcmUgb2YKKyMgICB0aGVtLgorYWRkdGFzayB3cml0ZV9jb25maWcgYmVmb3JlIGRvX2luc3RhbGwKK2RvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiTUVTT05fQ19BUkdTIE1FU09OX0NQUF9BUkdTIE1FU09OX0xJTktfQVJHUyBDQyBDWFggTEQgQVIgTk0gU1RSSVAgUkVBREVMRiIKK2RvX3dyaXRlX2NvbmZpZygpIHsKKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgUHkgdG8gc3BsaXQgdGhlIGFyZ3MgaW50byBzaW5nbGUtZWxlbWVudCBsaXN0cworICAgIGNhdCA+JHtXT1JLRElSfS9tZXNvbi5jcm9zcyA8PEVPRgorW2JpbmFyaWVzXQorYyA9IEBAQ0NAQAorY3BwID0gQEBDWFhAQAorYXIgPSBAQEFSQEAKK25tID0gQEBOTUBACitsZCA9IEBATERAQAorc3RyaXAgPSBAQFNUUklQQEAKK3BrZ2NvbmZpZyA9ICdwa2ctY29uZmlnJworCitbcHJvcGVydGllc10KK25lZWRzX2V4ZV93cmFwcGVyID0gdHJ1ZQorY19hcmdzID0gQEBDRkxBR1NAQAorY19saW5rX2FyZ3MgPSBAQExERkxBR1NAQAorY3BwX2FyZ3MgPSBAQENQUEZMQUdTQEAKK2NwcF9saW5rX2FyZ3MgPSBAQExERkxBR1NAQAorCitbaG9zdF9tYWNoaW5lXQorc3lzdGVtID0gJyR7U0RLX09TfScKK2NwdV9mYW1pbHkgPSAnJHtTREtfQVJDSH0nCitjcHUgPSAnJHtTREtfQVJDSH0nCitlbmRpYW4gPSAnJHtNRVNPTl9TREtfRU5ESUFOfScKK0VPRgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L21lc29uCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbWVzb24uY3Jvc3MgJHtEfSR7ZGF0YWRpcn0vbWVzb24vCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21lc29uLXNldHVwLnB5ICR7RH0ke1NES1BBVEhOQVRJVkV9L3Bvc3QtcmVsb2NhdGUtc2V0dXAuZC8KKworICAgICMgV2UgbmVlZCB0byB3cmFwIHRoZSByZWFsIG1lc29uIHdpdGggYSB0aGluIGVudiBzZXR1cCB3cmFwcGVyLgorICAgIG12ICR7RH0ke2JpbmRpcn0vbWVzb24gJHtEfSR7YmluZGlyfS9tZXNvbi5yZWFsCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbWVzb24td3JhcHBlciAke0R9JHtiaW5kaXJ9L21lc29uCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgbmF0aXZlc2RrLW5pbmphIFwKKyAgICBuYXRpdmVzZGstcHl0aG9uMy1jb3JlIFwKKyAgICBuYXRpdmVzZGstcHl0aG9uMy1taXNjIFwKKyAgICBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21lc29uICR7U0RLUEFUSE5BVElWRX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCmluZGV4IDY5ZjJlYmEuLmY1M2M2YzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCkBAIC0xMCw5ICsxMCw5IEBACiBERVBFTkRTID0gInpsaWIgbHpvIGUyZnNwcm9ncyB1dGlsLWxpbnV4IgogUkRFUEVORFNfbXRkLXV0aWxzLXRlc3RzICs9ICJiYXNoIgogCi1QViA9ICIyLjAuMSske1NSQ1BWfSIKK1BWID0gIjIuMC4yKyR7U1JDUFZ9IgogCi1TUkNSRVYgPSAiOWM2MTczNTU5Zjk1ZTkzOWU2NmVmYjJlYzMxOTNkNmYzNjE4Y2Y2OSIKK1NSQ1JFViA9ICJiYzYzZDM2ZTM5ZjM4OWM4YzE3ZjZhOGU5ZGI0N2YyYWNjODg0NjU5IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy9tdGQtdXRpbHMuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2FkZC1leGNsdXNpb24tdG8tbWtmcy1qZmZzMi1naXQtMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1SZXR1cm4tY29ycmVjdC1lcnJvci1udW1iZXItaW4tdWJpX2dldF92b2xfaW4ucGF0Y2ggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy8wMDAxLXJlbW92ZS1MT0NLX05CLXRvLXVzZS1ibG9ja2luZy1yZXF1ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy8wMDAxLXJlbW92ZS1MT0NLX05CLXRvLXVzZS1ibG9ja2luZy1yZXF1ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3Mzg1YTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzLzAwMDEtcmVtb3ZlLUxPQ0tfTkItdG8tdXNlLWJsb2NraW5nLXJlcXVlc3QucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA1YmRiZmUwYTYzZmVkNDgxMDRiMTc0MTI4NTRiMjZlZTIyNzU4NjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMiBBdWcgMjAxOCAxNjo1NDozOSArMDgwMAorU3ViamVjdDogW1BBVENIXSByZW1vdmUgTE9DS19OQiB0byB1c2UgYmxvY2tpbmcgcmVxdWVzdAorCitXaGlsZSBpbnZva2luZyBtdG9vbHMgZnJlcXVlbnRseSwgdGhlIHVuYmxvY2tpbmcgcmVxdWVzdAorY2F1c2VkIHJhY2UgaXNzdWUuIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBzeXNsaW51eAorW3NuaXBdCitkZCBpZj0vZGV2L3plcm8gb2Y9ZmxvcHB5LmltZyBicz0xMDI0IGNvdW50PTE0NAorbG9zZXR1cCAvZGV2L2xvb3AxIGZsb3BweS5pbWcKK21rZG9zZnMgL2Rldi9sb29wMQorc3lzbGludXggLWkgL2Rldi9sb29wMQorfHBsYWluIGZsb3BweTogZGV2aWNlICIvcHJvYy82MzUxL2ZkLzMiIGJ1c3kgKFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlKToKK3xDYW5ub3QgaW5pdGlhbGl6ZSAnUzonCit8QmFkIHRhcmdldCBzOi9sZGxpbnV4LnN5cworW3NuaXBdCisKK1RoZSBpZGVhIGlzIGZyb206CitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEyMzUwMTYKK2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZm9ydW0vIyFtc2cvY2hyb21pdW0tb3MtZGV2L2JSUFVDRkhvQlRRL1pqQjhramp4MXZVSgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbG9ja2Rldi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbG9ja2Rldi5oIGIvbG9ja2Rldi5oCitpbmRleCA0NDY3YmMyLi41YTEzNWFkIDEwMDY0NAorLS0tIGEvbG9ja2Rldi5oCisrKysgYi9sb2NrZGV2LmgKK0BAIC00Myw3ICs0Myw3IEBAIGludCBsb2NrX2RldihpbnQgZmQsIGludCBtb2RlLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCisgCQlyZXR1cm4gMDsKKyAKKyAjaWYgKGRlZmluZWQoSEFWRV9GTE9DSykgJiYgZGVmaW5lZCAoTE9DS19FWCkgJiYgZGVmaW5lZChMT0NLX05CKSkKKy0JaWYgKGZsb2NrKGZkLCAobW9kZSA/IExPQ0tfRVggOiBMT0NLX1NIKXxMT0NLX05CKSA8IDApCisrCWlmIChmbG9jayhmZCwgKG1vZGUgPyBMT0NLX0VYIDogTE9DS19TSCkpIDwgMCkKKyAjZWxzZSAvKiBGTE9DSyAqLworIAorICNpZiAoZGVmaW5lZChIQVZFX0xPQ0tGKSAmJiBkZWZpbmVkKEZfVExPQ0spKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL2NsYW5nX1VOVVNFRC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHMvY2xhbmdfVU5VU0VELnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiYjlkNmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL2NsYW5nX1VOVVNFRC5wYXRjaApAQCAtMCwwICsxLDE3IEBACitVbmRlZmluZSBVTlVTRUQgbWFjcm9zIHdpdGggY2xhbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorSW5kZXg6IG10b29scy00LjAuMTgvc3lzaW5jbHVkZXMuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG10b29scy00LjAuMTgub3JpZy9zeXNpbmNsdWRlcy5oCisrKysgbXRvb2xzLTQuMC4xOC9zeXNpbmNsdWRlcy5oCitAQCAtMTAxLDcgKzEwMSw3IEBAIHR5cGVkZWYgdm9pZCAqY2FkZHJfdDsKKyAjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBkZWZpbmVkIF9fU1REQ19fCisgLyogZ2NjIC10cmFkaXRpb25hbCBkb2Vzbid0IGhhdmUgUEFDS0VELCBVTlVTRUQgYW5kIE5PUkVUVVJOICovCisgIyBkZWZpbmUgUEFDS0VEIF9fYXR0cmlidXRlX18gKChwYWNrZWQpKQorLSMgaWYgX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+IDYgfHwgX19HTlVDX18gPj0gMworKyMgaWYgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPiA2IHx8IF9fR05VQ19fID49IDMpICYmICFkZWZpbmVkKF9fY2xhbmdfXykKKyAvKiBnY2MgMi42LjMgZG9lc24ndCBoYXZlICJ1bnVzZWQiICovCQkvKiBtb29sICovCisgIyAgZGVmaW5lIFVOVVNFRCh4KSB4IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTt4CisgIyAgZGVmaW5lIFVOVVNFRFAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCmluZGV4IGRjZDMyZWQuLjNjMzFhY2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCkBAIC0zMSw2ICszMSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9tdG9vbHMtbWFrZWluZm8ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbm8teDExLmdwbHYzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ29udGludWUtZXZlbi1pZi1mcy1zaXplLWlzLW5vdC1kaXZpc2libGUtYnktc2VjdG9ycy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbW92ZS1MT0NLX05CLXRvLXVzZS1ibG9ja2luZy1yZXF1ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsYW5nX1VOVVNFRC5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZGlzYWJsZS1oYXJkY29kZWQtY29uZmlncy5wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waWd6LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpZ3oucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ0MzNlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9waWd6LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYWIxNDM2OTI3YjQ3YmFkY2QyMTlhNWYwNzVkZmM4NDgwMjBlMDYxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pa2UgQ3Jvd2UgPG1hY0BtY3Jvd2UuY29tPgorRGF0ZTogVGh1LCA0IE9jdCAyMDE4IDE3OjU0OjE5ICswMTAwCitTdWJqZWN0OiBbb3BrZy11dGlscyBQQVRDSF0gb3BrZy1idWlsZDogQWRkIHN1cHBvcnQgZm9yIGV4cGxpY2l0IHVzZSBvZiBwaWd6CitUbzogb3BrZy1kZXZlbEBnb29nbGVncm91cHMuY29tLAorICAgIHlvY3RvQHlvY3RvcHJvamVjdC5vcmcKKworb2UtY29yZSBoYXMgc3RvcHBlZFsxXSBpbnN0YWxsaW5nIHBpZ3ogYXMgZ3ppcC4gVGhpcyBtZWFucyB0aGF0IGluCitvcmRlciB0byBwZXJzdWFkZSBvcGtnLWJ1aWxkIHRvIHVzZSBwaWd6IGl0IG11c3QgYmUgc3BlY2lmaWVkCitleHBsaWNpdGx5LiBMZXQncyB0ZWFjaCBvcGtnLWJ1aWxkIHRvIGRlYWwgd2l0aCBiZWluZyBwYXNzZWQgcGlneiBhcyBhCitjb21wcmVzc29yLgorCitXZSBjYW4ndCBjb21iaW5lIHRoZSBjaGVjayBmb3Igd2hldGhlciAtVCBpcyByZXF1aXJlZCB3aXRoIHRoZSBvbmUgZm9yCitnemlwIGJlY2F1c2Ugb3BrZy1idWlsZCBuZWVkcyB0byBjYWxsICRjb21wcmVzc29yIGFuZCBnemlwIHNlcGFyYXRlbHkKK3RvIGNvbnN0cnVjdCB0aGUgcGFja2FnZS4KKworWzFdIGh0dHA6Ly9saXN0cy5vcGVuZW1iZWRkZWQub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29tbWl0cy8yMDE4LUZlYnJ1YXJ5LzIxODc2Ny5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtvcGtnLWRldmVsQGdvb2dsZWdyb3Vwcy5jb20gaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL29wa2ctZGV2ZWwvRTBXVk9oaks2MXddCitTaWduZWQtb2ZmLWJ5OiBNaWtlIENyb3dlIDxtYWNAbWNyb3dlLmNvbT4KKy0tLQorIG9wa2ctYnVpbGQgfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL29wa2ctYnVpbGQgYi9vcGtnLWJ1aWxkCitpbmRleCA5M2E3OTU2Li5mODQwM2VhIDEwMDc1NQorLS0tIGEvb3BrZy1idWlsZAorKysrIGIvb3BrZy1idWlsZAorQEAgLTE3MCw3ICsxNzAsNyBAQCBmaQorIAorIGNvbXByZXNzb3JfZXh0KCkgeworICAgICBjYXNlICQxIGluCistCWd6aXApCisrCWd6aXB8cGlneikKKyAJICAgIGVjaG8gZ3oKKyAJICAgIDs7CisgCWJ6aXAyKQorQEAgLTIzMiw2ICsyMzIsMTAgQEAgaWYgWyAkY29tcHJlc3NvciA9ICJnemlwIiBdIDsgdGhlbgorIAljb21wcmVzc29yYXJncz0kemlwYXJncworIGVsaWYgWyAkY29tcHJlc3NvciA9ICJ4eiIgXSA7IHRoZW4KKyAJY29tcHJlc3NvcmFyZ3M9Ii0tdGhyZWFkcyAwIgorK2VsaWYgWyAkY29tcHJlc3NvciA9ICJwaWd6IiBdIDsgdGhlbgorKwlpZiAkY29tcHJlc3NvciAtLWhlbHAgMj4mMSB8IGdyZXAgLS0gIi1UIiA+IC9kZXYvbnVsbDsgdGhlbgorKwkJY29tcHJlc3NvcmFyZ3M9Ii05blQiCisrCWZpCisgZmkKKyAKKyB0c29ydGFyZ3M9CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC4zLjYuYmIKaW5kZXggMDQ4N2M1Zi4uY2IzNzc1ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNi5iYgpAQCAtMTIsNiArMTIsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Pbmx5LXVzZS1zb3J0LW5hbWUtb24tdmVyc2lvbnMtb2YtdGFyLXdoaWNoLXN1cHBvcnQtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItb3BrZy1idWlsZC1Vc2UtbG9jYWwtdGltZS1mb3ItYnVpbGRfZGF0ZS1zaW5jZS1vcGtnLS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly90aHJlYWRlZC14ei5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9waWd6LnBhdGNoIFwKICIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvb3BrZy11dGlscy9yZWZzLyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1rZXlyaW5nc18xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cta2V5cmluZ3NfMS4wLmJiCmluZGV4IDE4ZDZhYmQuLmEyMGUzMTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1rZXlyaW5nc18xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWtleXJpbmdzXzEuMC5iYgpAQCAtMzUsMTQgKzM1LDYgQEAKICMgV2UgbmVlZCAnb3BrZy1rZXknIHRvIHJ1biB0aGUgcG9zdGluc3Qgc2NyaXB0CiBSREVQRU5EU18ke1BOfSA9ICJvcGtnIgogCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotIyEgL2Jpbi9zaAotc2V0IC1lCi0KLWlmIFsgeCIkRCIgPSAieCIgXTsgdGhlbgotICAgICMgT24gdGFyZ2V0Ci0gICAgb3BrZy1rZXkgcG9wdWxhdGUKLWVsc2UKLSAgICBleGl0IDEKLWZpCitwa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0gKCkgeworb3BrZy1rZXkgcG9wdWxhdGUKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy8wMDAxLXJlbW92ZV9tYWludGFpbmVyX3NjcmlwdHMtdXNlLXN0cmljdC1tYXRjaGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy8wMDAxLXJlbW92ZV9tYWludGFpbmVyX3NjcmlwdHMtdXNlLXN0cmljdC1tYXRjaGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzE2MDI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLzAwMDEtcmVtb3ZlX21haW50YWluZXJfc2NyaXB0cy11c2Utc3RyaWN0LW1hdGNoaW5nLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gNTVjNGFkNjY2ZTc2MjgxYmRkMGRiNTVmYTZmNGFiMjc0NGZlYTdlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+CitEYXRlOiBUdWUsIDQgU2VwIDIwMTggMTg6MDY6MDAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlX21haW50YWluZXJfc2NyaXB0czogdXNlIHN0cmljdCBtYXRjaGluZworCitUaGUgZnVuY3Rpb24gaXMgdXNpbmcgYSBnbG9iIHRvIHNlbGVjdCB3aGljaCBtZXRhZGF0YSBmaWxlcyBuZWVkcyB0byBiZQorZGVsZXRlZCBkdXJpbmcgcGFja2FnZSByZW1vdmFsLCBvbiB0aGUgaW5mb19kaXIuIEhvd2V2ZXIsIHRoZSBnbG9iIG1heQorbWF0Y2ggbWV0YWRhdGEgZmlsZXMgZnJvbSBwYWNrYWdlcyB3aXRoIHNpbWlsYXIgbmFtZXMuIEZvciBleGFtcGxlLAorZHVyaW5nIHJlbW92YWwgb2YgcGFja2FnZSBnbGliYy1iaW5hcnktbG9jYWxlZGF0YS1kZS1hdCwgdGhlIGN1cnJlbnQKK2xvZ2ljIHdhcyBhbHNvIHJlbW92aW5nIHRoZSBtZXRhZGF0YSBmb3IKK2dsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLWRlLWF0Lmlzby04ODU5LTEuIEFkZCBjaGVjayBmb3IgYW4gZXhhY3QgbWF0Y2gKK2JlZm9yZSBkZWxldGlvbi4KKworRml4ZXMgYnVnemlsbGE6IDEyOTA1CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvb3BrZy1kZXZlbC9GcjQwWXQwTkJub10KK1NpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+CistLS0KKyBsaWJvcGtnL29wa2dfcmVtb3ZlLmMgfCAxNCArKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlib3BrZy9vcGtnX3JlbW92ZS5jIGIvbGlib3BrZy9vcGtnX3JlbW92ZS5jCitpbmRleCA4MjEyNWZhLi4zOTM2NjI4IDEwMDY0NAorLS0tIGEvbGlib3BrZy9vcGtnX3JlbW92ZS5jCisrKysgYi9saWJvcGtnL29wa2dfcmVtb3ZlLmMKK0BAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCByZW1vdmVfbWFpbnRhaW5lcl9zY3JpcHRzKHBrZ190ICogcGtnKQorIHsKKyAgICAgdW5zaWduZWQgaW50IGk7CisgICAgIGludCBlcnI7CistICAgIGNoYXIgKmdsb2JwYXR0ZXJuOworKyAgICBjaGFyICpnbG9icGF0dGVybiwgKmZpbGVuYW1lLCAqbGFzdGRvdDsKKyAgICAgZ2xvYl90IGdsb2JidWY7CisgCisgICAgIGlmIChvcGtnX2NvbmZpZy0+bm9hY3Rpb24pCitAQCAtMTUxLDggKzE1MSwxNiBAQCB2b2lkIHJlbW92ZV9tYWludGFpbmVyX3NjcmlwdHMocGtnX3QgKiBwa2cpCisgICAgICAgICByZXR1cm47CisgCisgICAgIGZvciAoaSA9IDA7IGkgPCBnbG9iYnVmLmdsX3BhdGhjOyBpKyspIHsKKy0gICAgICAgIG9wa2dfbXNnKElORk8sICJEZWxldGluZyAlcy5cbiIsIGdsb2JidWYuZ2xfcGF0aHZbaV0pOworLSAgICAgICAgdW5saW5rKGdsb2JidWYuZ2xfcGF0aHZbaV0pOworKyAgICAgICAgZmlsZW5hbWUgPSB4c3RyZHVwKGJhc2VuYW1lKGdsb2JidWYuZ2xfcGF0aHZbaV0pKTsKKysgICAgICAgIGxhc3Rkb3QgPSBzdHJyY2hyKGZpbGVuYW1lLCAnLicpOworKyAgICAgICAgKmxhc3Rkb3QgPSAnXDAnOworKyAgICAgICAgLy8gT25seSBkZWxldGUgZmlsZXMgdGhhdCBtYXRjaCB0aGUgcGFja2FnZSBuYW1lICh0aGUgZ2xvYiBtYXkgbWF0Y2ggZmlsZXMKKysgICAgICAgIC8vIHdpdGggc2ltaWxhciBuYW1lcykKKysgICAgICAgIGlmICghc3RyY21wKGZpbGVuYW1lLCBwa2ctPm5hbWUpKSB7CisrICAgICAgICAgICAgb3BrZ19tc2coSU5GTywgIkRlbGV0aW5nICVzLlxuIiwgZ2xvYmJ1Zi5nbF9wYXRodltpXSk7CisrICAgICAgICAgICAgdW5saW5rKGdsb2JidWYuZ2xfcGF0aHZbaV0pOworKyAgICAgICAgfQorKyAgICAgICAgZnJlZShmaWxlbmFtZSk7CisgICAgIH0KKyAgICAgZ2xvYmZyZWUoJmdsb2JidWYpOworIH0KKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMmMzZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPU9wa2cgZmlyc3QgYm9vdCBjb25maWd1cmUKLURlZmF1bHREZXBlbmRlbmNpZXM9bm8KLUFmdGVyPXN5c3RlbWQtcmVtb3VudC1mcy5zZXJ2aWNlIHN5c3RlbWQtdG1wZmlsZXMtc2V0dXAuc2VydmljZSB0bXAubW91bnQKLUJlZm9yZT1zeXNpbml0LnRhcmdldAotCi1bU2VydmljZV0KLVR5cGU9b25lc2hvdAotRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9wb3N0aW5zdAotRXhlY1N0YXJ0PS1AQkFTRV9CSU5ESVJAL3NoIC1jICIgaWYgWyAkUE9TVElOU1RfTE9HR0lORyA9ICcxJyBdOyB0aGVuIEBCSU5ESVJAL29wa2cgY29uZmlndXJlID4gJExPR0ZJTEUgMj4mMTsgZWxzZSBAQklORElSQC9vcGtnIGNvbmZpZ3VyZTsgZmkiCi1FeGVjU3RhcnRQb3N0PUBCQVNFX0JJTkRJUkAvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgb3BrZy1jb25maWd1cmUuc2VydmljZQotU3RhbmRhcmRPdXRwdXQ9c3lzbG9nCi1SZW1haW5BZnRlckV4aXQ9Tm8KLQotW0luc3RhbGxdCi1XYW50ZWRCeT1iYXNpYy50YXJnZXQKLVdhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjYuYmIKaW5kZXggNzBmMjBhZi4uNmViZDU4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNi5iYgpAQCAtMTIsOSArMTIsOSBAQAogUEUgPSAiMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlX21haW50YWluZXJfc2NyaXB0cy11c2Utc3RyaWN0LW1hdGNoaW5nLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjc5ZTA0MzA3ZjZmNTRkYjQzMWMyNTE3NzJkN2Q5ODdjIgpAQCAtMjIsOCArMjIsNiBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAogCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQogdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCiBPUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKIApAQCAtNDYsMTYgKzQ0LDYgQEAKIAogCSMgV2UgbmVlZCB0byBjcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5CiAJaW5zdGFsbCAtZCAke0R9JHtPUEtHTElCRElSfS9vcGtnCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9O3RoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQkJLWUgJ3MsQFNZU1RFTURfVU5JVERJUkAsJHtzeXN0ZW1kX3VuaXRkaXJ9LGcnIFwKLQkJCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wa2ctY29uZmlndXJlLnNlcnZpY2UKLQlmaQogfQogCiBSREVQRU5EU18ke1BOfSA9ICIke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSBvcGtnLWFyY2gtY29uZmlnIGxpYmFyY2hpdmUiCkBAIC02OCw3ICs1Niw2IEBACiBQQUNLQUdFUyA9KyAibGlib3BrZyIKIAogRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDAxLUNoYW5nZS1saWJyYXJ5LW5hbWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDEtQ2hhbmdlLWxpYnJhcnktbmFtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ2N2M1MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDEtQ2hhbmdlLWxpYnJhcnktbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tOiBQaW90ciBSb3N6YXR5Y2tpIDxkZXh0ZXJAZGViaWFuLm9yZz4KLURhdGU6IFdlZCwgMjcgSmFuIDIwMTAgMTY6NTM6MTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIGxpYnJhcnkgbmFtZQotCi1UaGUgc29uYW1lIHdhcyBjaGFuZ2VkIHRvIG9zc3AtdXVpZCB0byBwcmV2ZW5kIHRoZSBuYW1lIGNsYXNoIHdpdGggZTJmc3Byb2dzJ3MKLXV1aWQgbGlicmFyeS4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCAgICA2ICsrKy0tLQotIHBlcmwvTWFrZWZpbGUuUEwgfCAgIDEyICsrKysrKy0tLS0tLQotIHBocC9jb25maWcubTQgICAgfCAgICAyICstCi0gdXVpZC1jb25maWcuaW4gICB8ICAgIDIgKy0KLSB1dWlkLnBjLmluICAgICAgIHwgICAgNCArKy0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYXV0aG9yXQotCi1UaGlzIHBhdGNoIGlzIGZyb20gZGViaWFuIG9zc3AtdXVpZCAxLjYuMiBpbnRlZ3JhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggZDI4ZjRiZS4uYzJiYTk5ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTYyLDEzICs2MiwxMyBAQCBQRVJMICAgICAgICA9IEBQRVJMQAotIFBIUCAgICAgICAgID0gQFBIUEAKLSBQR19DT05GSUcgICA9IEBQR19DT05GSUdACi0gCi0tTElCX05BTUUgICAgPSBsaWJ1dWlkLmxhCi0rTElCX05BTUUgICAgPSBsaWJvc3NwLXV1aWQubGEKLSBMSUJfT0JKUyAgICA9IHV1aWQubG8gdXVpZF9tZDUubG8gdXVpZF9zaGExLmxvIHV1aWRfcHJuZy5sbyB1dWlkX21hYy5sbyB1dWlkX3RpbWUubG8gdXVpZF91aTY0LmxvIHV1aWRfdWkxMjgubG8gdXVpZF9zdHIubG8KLSAKLS1EQ0VfTkFNRSAgICA9IGxpYnV1aWRfZGNlLmxhCi0rRENFX05BTUUgICAgPSBsaWJvc3NwLXV1aWRfZGNlLmxhCi0gRENFX09CSlMgICAgPSB1dWlkX2RjZS5sbyAkKExJQl9PQkpTKQotIAotLUNYWF9OQU1FICAgID0gbGlidXVpZCsrLmxhCi0rQ1hYX05BTUUgICAgPSBsaWJvc3NwLXV1aWQrKy5sYQotIENYWF9PQkpTICAgID0gdXVpZCsrLmxvICQoTElCX09CSlMpCi0gCi0gUFJHX05BTUUgICAgPSB1dWlkCi1kaWZmIC0tZ2l0IGEvcGVybC9NYWtlZmlsZS5QTCBiL3BlcmwvTWFrZWZpbGUuUEwKLWluZGV4IDkyZjQ0OTQuLjljNmZlZTYgMTAwNjQ0Ci0tLS0gYS9wZXJsL01ha2VmaWxlLlBMCi0rKysgYi9wZXJsL01ha2VmaWxlLlBMCi1AQCAtMzMsOSArMzMsOSBAQCB1c2UgQ29uZmlnOwotIHVzZSBFeHRVdGlsczo6TWFrZU1ha2VyOwotIAotICMgICBkZXRlcm1pbmUgc291cmNlIGRpcmVjdG9yeQotLW15ICgkc3JjZGlyKSA9IG1hcCB7IG15ICRkID0gJF87ICRkID1+IHMvXC9saWJ1dWlkXC5sYSQvLzsgJGQgfQotLSAgICAgICAgICAgICAgIGdyZXAgeyAtZiAkXyB9ICgiLi4vbGlidXVpZC5sYSIsIGdsb2IoIi4uLyovbGlidXVpZC5sYSIpKQotLSAgICBvciBkaWUgIm5vIHNvdXJjZSBkaXJlY3RvcnkgZm91bmQgKHdoZXJlIGxpYnV1aWQubGEgaXMgbG9jYXRlZCkiOwotK215ICgkc3JjZGlyKSA9IG1hcCB7IG15ICRkID0gJF87ICRkID1+IHMvXC9saWJvc3NwLXV1aWRcLmxhJC8vOyAkZCB9Ci0rICAgICAgICAgICAgICAgZ3JlcCB7IC1mICRfIH0gKCIuLi9saWJvc3NwLXV1aWQubGEiLCBnbG9iKCIuLi8qL2xpYm9zc3AtdXVpZC5sYSIpKQotKyAgICBvciBkaWUgIm5vIHNvdXJjZSBkaXJlY3RvcnkgZm91bmQgKHdoZXJlIGxpYm9zc3AtdXVpZC5sYSBpcyBsb2NhdGVkKSI7Ci0gCi0gIyAgIGRldGVybWluZSBleHRyYSBidWlsZCBvcHRpb25zCi0gbXkgJGNvbXBhdCA9IDA7Ci1AQCAtNDcsMTUgKzQ3LDE1IEBAIFdyaXRlTWFrZWZpbGUoCi0gICAgIFZFUlNJT05fRlJPTSAgICAgID0+ICd1dWlkLnBtJywKLSAgICAgQUJTVFJBQ1RfRlJPTSAgICAgPT4gJ3V1aWQucG9kJywKLSAgICAgUFJFUkVRX1BNICAgICAgICAgPT4ge30sCi0tICAgIExJQlMgICAgICAgICAgICAgID0+IFsgIi1MJHNyY2Rpci8ubGlicyAtTCRzcmNkaXIgLWx1dWlkIiBdLAotKyAgICBMSUJTICAgICAgICAgICAgICA9PiBbICItTCRzcmNkaXIvLmxpYnMgLUwkc3JjZGlyIC1sb3NzcC11dWlkIiBdLAotICAgICBERUZJTkUgICAgICAgICAgICA9PiAnJywKLSAgICAgSU5DICAgICAgICAgICAgICAgPT4gIi1JLiAtSSRzcmNkaXIiLAotICAgICBQTSAgICAgICAgICAgICAgICA9PiB7ICd1dWlkLnBtJyAgID0+ICckKElOU1RfTElCRElSKS91dWlkLnBtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXVpZC5wb2QnICA9PiAnJChJTlNUX0xJQkRJUikvdXVpZC5wb2QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkY29tcGF0ID8gKCd1dWlkX2NvbXBhdC5wbScgID0+ICckKElOU1RfTElCRElSKS8uLi9EYXRhL1VVSUQucG0nKSAgOiAoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRjb21wYXQgPyAoJ3V1aWRfY29tcGF0LnBvZCcgPT4gJyQoSU5TVF9MSUJESVIpLy4uL0RhdGEvVVVJRC5wb2QnKSA6ICgpKSwgfSwKLS0gICAgTUFOM1BPRFMgICAgICAgICAgPT4geyAndXVpZC5wb2QnID0+ICckKElOU1RfTUFOM0RJUikvT1NTUDo6dXVpZC4zJywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJGNvbXBhdCA/ICgndXVpZF9jb21wYXQucG9kJyA9PiAnJChJTlNUX01BTjNESVIpL0RhdGE6OlVVSUQuMycpIDogKCkpLCB9LAotKyAgICBNQU4zUE9EUyAgICAgICAgICA9PiB7ICd1dWlkLnBvZCcgPT4gJyQoSU5TVF9NQU4zRElSKS9PU1NQOjp1dWlkLjNwbScsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRjb21wYXQgPyAoJ3V1aWRfY29tcGF0LnBvZCcgPT4gJyQoSU5TVF9NQU4zRElSKS9EYXRhOjpVVUlELjNwbScpIDogKCkpLCB9LAotICAgICBUWVBFTUFQUyAgICAgICAgICA9PiBbICd1dWlkLnRtJyBdLAotICAgICB0ZXN0ICAgICAgICAgICAgICA9PiB7IFRFU1RTID0+ICd1dWlkLnRzJyAuICgkY29tcGF0ID8gJyB1dWlkX2NvbXBhdC50cycgOiAnJykgfSwKLSAgICAgTk9fTUVUQSAgICAgICAgICAgPT4gMSwKLWRpZmYgLS1naXQgYS9waHAvY29uZmlnLm00IGIvcGhwL2NvbmZpZy5tNAotaW5kZXggNTA5MWI5Ni4uOTY5YjQ1NyAxMDA2NDQKLS0tLSBhL3BocC9jb25maWcubTQKLSsrKyBiL3BocC9jb25maWcubTQKLUBAIC0zNCw3ICszNCw3IEBAIGlmIHRlc3QgIiRQSFBfVVVJRCIgIT0gIm5vIjsgdGhlbgotICAgICBQSFBfTkVXX0VYVEVOU0lPTih1dWlkLCB1dWlkLmMsICRleHRfc2hhcmVkKQotICAgICBBQ19ERUZJTkUoSEFWRV9VVUlELCAxLCBbSGF2ZSBPU1NQIHV1aWQgbGlicmFyeV0pCi0gICAgIFBIUF9BRERfTElCUEFUSChbLi5dLCApCi0tICAgIFBIUF9BRERfTElCUkFSWShbdXVpZF0sLCBVVUlEX1NIQVJFRF9MSUJBREQpCi0rICAgIFBIUF9BRERfTElCUkFSWShbb3NzcC11dWlkXSwsIFVVSURfU0hBUkVEX0xJQkFERCkKLSAgICAgUEhQX0FERF9JTkNMVURFKFsuLl0pCi0gICAgIFBIUF9TVUJTVChVVUlEX1NIQVJFRF9MSUJBREQpCi0gCi1kaWZmIC0tZ2l0IGEvdXVpZC1jb25maWcuaW4gYi91dWlkLWNvbmZpZy5pbgotaW5kZXggOGQyYTA2My4uNWI1ODgxMiAxMDA2NDQKLS0tLSBhL3V1aWQtY29uZmlnLmluCi0rKysgYi91dWlkLWNvbmZpZy5pbgotQEAgLTEyMSw3ICsxMjEsNyBAQCBkbwotICAgICAgICAgICAgIG91dHB1dF9leHRyYT0iJG91dHB1dF9leHRyYSAkdXVpZF9sZGZsYWdzIgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAtLWxpYnMpCi0tICAgICAgICAgICAgb3V0cHV0PSIkb3V0cHV0IC1sdXVpZCIKLSsgICAgICAgICAgICBvdXRwdXQ9IiRvdXRwdXQgLWxvc3NwLXV1aWQiCi0gICAgICAgICAgICAgb3V0cHV0X2V4dHJhPSIkb3V0cHV0X2V4dHJhICR1dWlkX2xpYnMiCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICogKQotZGlmZiAtLWdpdCBhL3V1aWQucGMuaW4gYi91dWlkLnBjLmluCi1pbmRleCBjNzZhZDFlLi5kZTAwYzJmIDEwMDY0NAotLS0tIGEvdXVpZC5wYy5pbgotKysrIGIvdXVpZC5wYy5pbgotQEAgLTM2LDcgKzM2LDcgQEAgTmFtZTogT1NTUCB1dWlkCi0gRGVzY3JpcHRpb246IFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSBMaWJyYXJ5Ci0gVmVyc2lvbjogQFVVSURfVkVSU0lPTl9SQVdACi0gVVJMOiBodHRwOi8vd3d3Lm9zc3Aub3JnL3BrZy9saWIvdXVpZC8KLS1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQotLUxpYnM6IC1MJHtsaWJkaXJ9IC1sdXVpZAotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L29zc3AKLStMaWJzOiAtTCR7bGliZGlyfSAtbG9zc3AtdXVpZAotIExpYnMucHJpdmF0ZTogQExJQlNACi0gCi0tLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMi11dWlkLXByZXNlcnZlLW0tb3B0aW9uLXN0YXR1cy1pbi12LW9wdGlvbi1oYW5kbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwMi11dWlkLXByZXNlcnZlLW0tb3B0aW9uLXN0YXR1cy1pbi12LW9wdGlvbi1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA0YTYyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDItdXVpZC1wcmVzZXJ2ZS1tLW9wdGlvbi1zdGF0dXMtaW4tdi1vcHRpb24taGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tOiBNYXJjbyBOZW5jaWFyaW5pIDxtYXJjby5uZW5jaWFyaW5pQGRldmlzZS5pdD4KLURhdGU6IFdlZCwgMjcgSmFuIDIwMTAgMTk6NDY6MjEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXVpZDogcHJlc2VydmUgLW0gb3B0aW9uIHN0YXR1cyBpbiAtdiBvcHRpb24gaGFuZGxpbmcKLQotQnVnOiA1MzEzOTYKLS0tLQotIHV1aWRfY2xpLmMgfCAgIDE5ICsrKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLS0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm90IGF1dGhvcl0KLQotVGhpcyBwYXRjaCBpcyBmcm9tIGRlYmlhbiBvc3NwLXV1aWQgMS42LjIgaW50ZWdyYXRpb24uCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3V1aWRfY2xpLmMgYi91dWlkX2NsaS5jCi1pbmRleCBkMWIwYjExLi4xNGE2N2ZlIDEwMDY0NAotLS0tIGEvdXVpZF9jbGkuYwotKysrIGIvdXVpZF9jbGkuYwotQEAgLTE0MCwxMSArMTQwLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgICAgICAgICAgIGkgPSBzdHJ0b2wob3B0YXJnLCAmcCwgMTApOwotICAgICAgICAgICAgICAgICBpZiAoKnAgIT0gJ1wwJykKLSAgICAgICAgICAgICAgICAgICAgIHVzYWdlKCJpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiAndiciKTsKLSsgICAgICAgICAgICAgICAgdmVyc2lvbiAmPSB+KFVVSURfTUFLRV9WMXxVVUlEX01BS0VfVjN8VVVJRF9NQUtFX1Y0fFVVSURfTUFLRV9WNSk7Ci0gICAgICAgICAgICAgICAgIHN3aXRjaCAoaSkgewotLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiB2ZXJzaW9uID0gVVVJRF9NQUtFX1YxOyBicmVhazsKLS0gICAgICAgICAgICAgICAgICAgIGNhc2UgMzogdmVyc2lvbiA9IFVVSURfTUFLRV9WMzsgYnJlYWs7Ci0tICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHZlcnNpb24gPSBVVUlEX01BS0VfVjQ7IGJyZWFrOwotLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiB2ZXJzaW9uID0gVVVJRF9NQUtFX1Y1OyBicmVhazsKLSsgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogdmVyc2lvbiB8PSBVVUlEX01BS0VfVjE7IGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiB2ZXJzaW9uIHw9IFVVSURfTUFLRV9WMzsgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHZlcnNpb24gfD0gVVVJRF9NQUtFX1Y0OyBicmVhazsKLSsgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogdmVyc2lvbiB8PSBVVUlEX01BS0VfVjU7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZSgiaW52YWxpZCB2ZXJzaW9uIG9uIG9wdGlvbiAndiciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLUBAIC0yMTMsMTAgKzIxNCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICB9Ci0gICAgIGVsc2UgewotICAgICAgICAgLyogZW5jb2RpbmcgKi8KLS0gICAgICAgIGlmICggICAodmVyc2lvbiA9PSBVVUlEX01BS0VfVjEgJiYgYXJnYyAhPSAwKQotLSAgICAgICAgICAgIHx8ICh2ZXJzaW9uID09IFVVSURfTUFLRV9WMyAmJiBhcmdjICE9IDIpCi0tICAgICAgICAgICAgfHwgKHZlcnNpb24gPT0gVVVJRF9NQUtFX1Y0ICYmIGFyZ2MgIT0gMCkKLS0gICAgICAgICAgICB8fCAodmVyc2lvbiA9PSBVVUlEX01BS0VfVjUgJiYgYXJnYyAhPSAyKSkKLSsgICAgICAgIGlmICggICAodmVyc2lvbiAmIFVVSURfTUFLRV9WMSAmJiBhcmdjICE9IDApCi0rICAgICAgICAgICAgfHwgKHZlcnNpb24gJiBVVUlEX01BS0VfVjMgJiYgYXJnYyAhPSAyKQotKyAgICAgICAgICAgIHx8ICh2ZXJzaW9uICYgVVVJRF9NQUtFX1Y0ICYmIGFyZ2MgIT0gMCkKLSsgICAgICAgICAgICB8fCAodmVyc2lvbiAmIFVVSURfTUFLRV9WNSAmJiBhcmdjICE9IDIpKQotICAgICAgICAgICAgIHVzYWdlKCJpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiKTsKLSAgICAgICAgIGlmICgocmMgPSB1dWlkX2NyZWF0ZSgmdXVpZCkpICE9IFVVSURfUkNfT0spCi0gICAgICAgICAgICAgZXJyb3IoMSwgInV1aWRfY3JlYXRlOiAlcyIsIHV1aWRfZXJyb3IocmMpKTsKLUBAIC0yMzIsNyArMjMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgICAgICAgICAgICAgICAgaWYgKChyYyA9IHV1aWRfbG9hZCh1dWlkLCAibmlsIikpICE9IFVVSURfUkNfT0spCi0gICAgICAgICAgICAgICAgICAgICBlcnJvcigxLCAidXVpZF9sb2FkOiAlcyIsIHV1aWRfZXJyb3IocmMpKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gVVVJRF9NQUtFX1YzIHx8IHZlcnNpb24gPT0gVVVJRF9NQUtFX1Y1KSB7Ci0rICAgICAgICAgICAgaWYgKHZlcnNpb24gJiBVVUlEX01BS0VfVjMgfHwgdmVyc2lvbiAmIFVVSURfTUFLRV9WNSkgewotICAgICAgICAgICAgICAgICBpZiAoKHJjID0gdXVpZF9jcmVhdGUoJnV1aWRfbnMpKSAhPSBVVUlEX1JDX09LKQotICAgICAgICAgICAgICAgICAgICAgZXJyb3IoMSwgInV1aWRfY3JlYXRlOiAlcyIsIHV1aWRfZXJyb3IocmMpKTsKLSAgICAgICAgICAgICAgICAgaWYgKChyYyA9IHV1aWRfbG9hZCh1dWlkX25zLCBhcmd2WzBdKSkgIT0gVVVJRF9SQ19PSykgewotLS0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDMtRml4LXdoYXRpcy1lbnRyaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDAzLUZpeC13aGF0aXMtZW50cmllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNjYmI1OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkLzAwMDMtRml4LXdoYXRpcy1lbnRyaWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbTogTWFyY28gTmVuY2lhcmluaSA8bWFyY28ubmVuY2lhcmluaUBkZXZpc2UuaXQ+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTAgMTI6MTY6NDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHdoYXRpcyBlbnRyaWVzCi0KLUZpeCB3aGF0aXMgZW50cnkgb2YgdXVpZC4xLCB1dWlkLjNvc3NwIGFuZCB1dWlkKysuM29zc3AgbWFucGFnZXMKLS0tLQotIHV1aWQrKy5wb2QgICB8ICAgIDIgKy0KLSB1dWlkLnBvZCAgICAgfCAgICAyICstCi0gdXVpZF9jbGkucG9kIHwgICAgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi0tLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi0KLVRoaXMgcGF0Y2ggaXMgZnJvbSBkZWJpYW4gb3NzcC11dWlkIDEuNi4yIGludGVncmF0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS91dWlkKysucG9kIGIvdXVpZCsrLnBvZAotaW5kZXggOGI1YTRiMS4uODljNWVmYiAxMDA2NDQKLS0tLSBhL3V1aWQrKy5wb2QKLSsrKyBiL3V1aWQrKy5wb2QKLUBAIC0zMSw3ICszMSw3IEBACi0gCi0gPWhlYWQxIE5BTUUKLSAKLS1CPE9TU1AgdXVpZD4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyPiAoQysrIEFQSSkKLStCPHV1aWQrKz4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyPiAoQysrIEFQSSkKLSAKLSA9aGVhZDEgVkVSU0lPTgotIAotZGlmZiAtLWdpdCBhL3V1aWQucG9kIGIvdXVpZC5wb2QKLWluZGV4IDRhZDM3NDIuLjAxNzlhNDYgMTAwNjQ0Ci0tLS0gYS91dWlkLnBvZAotKysrIGIvdXVpZC5wb2QKLUBAIC0zMSw3ICszMSw3IEBACi0gCi0gPWhlYWQxIE5BTUUKLSAKLS1CPE9TU1AgdXVpZD4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyPgotK0I8dXVpZD4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyPgotIAotID1oZWFkMSBWRVJTSU9OCi0gCi1kaWZmIC0tZ2l0IGEvdXVpZF9jbGkucG9kIGIvdXVpZF9jbGkucG9kCi1pbmRleCBkZGVjNmJiLi5kZjlkYzgzIDEwMDY0NAotLS0tIGEvdXVpZF9jbGkucG9kCi0rKysgYi91dWlkX2NsaS5wb2QKLUBAIC0zMSw3ICszMSw3IEBACi0gCi0gPWhlYWQxIE5BTUUKLSAKLS1CPE9TU1AgdXVpZD4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIENvbW1hbmQtTGluZSBUb29sPgotK0I8dXVpZD4gLSBCPFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIENvbW1hbmQtTGluZSBUb29sPgotIAotID1oZWFkMSBWRVJTSU9OCi0gCi0tLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvMDAwNC1maXgtZGF0YS11dWlkLWZyb20tc3RyaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDA0LWZpeC1kYXRhLXV1aWQtZnJvbS1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNWUxMTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC8wMDA0LWZpeC1kYXRhLXV1aWQtZnJvbS1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1EZXNjcmlwdGlvbjogU3VwcG9ydCBkYXNoLWxlc3MgYXJncyB0byBmcm9tX3N0cmluZy4KLUF1dGhvcjogVGltIFJldG91dCA8ZGlvY2xlc0BkZWJpYW4ub3JnPgotQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy82MzU2MDcKLQotVGhlIG1vZHVsZSBEYXRhOjpHVUlEIGRlcGVuZHMgb24gRGF0YTo6VVVJRCBzdXBwb3J0aW5nIHRoaXMgYmVoYXZpb3VyLgotCi0tLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25vdCBhdXRob3JdCi0KLVRoaXMgcGF0Y2ggaXMgZnJvbSBkZWJpYW4gb3NzcC11dWlkIDEuNi4yIGludGVncmF0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBhL3BlcmwvdXVpZF9jb21wYXQucG0KLSsrKyBiL3BlcmwvdXVpZF9jb21wYXQucG0KLUBAIC05Myw3ICs5Myw5IEBACi0gICAgICR1dWlkLT5pbXBvcnQoJ3N0cicsCi0gICAgICAgICAgICRzdHIgPX4gL14weC8KLSAgICAgICAgID8gam9pbiAnLScsIHVucGFjaygneDIgYTggYTQgYTQgYTQgYTEyJywgJHN0cikKLS0gICAgICAgIDogJHN0cgotKyAgICAgICAgOiAkc3RyID1+IC8tLwotKyAgICAgICAgPyAkc3RyCi0rICAgICAgICA6IGpvaW4gJy0nLCB1bnBhY2soJ0E4IEE0IEE0IEE0IEExMicsICRzdHIpCi0gICAgICk7Ci0gICAgIHJldHVybiAkdXVpZC0+ZXhwb3J0KCdiaW4nKTsKLSB9Ci0tLS0gYS9wZXJsL3V1aWRfY29tcGF0LnRzCi0rKysgYi9wZXJsL3V1aWRfY29tcGF0LnRzCi1AQCAtMjgsNyArMjgsNyBAQAotICMjICB1dWlkX2NvbXBhdC50czogRGF0YTo6VVVJRCBCYWNrd2FyZCBDb21wYXRpYmlsaXR5IFBlcmwgQVBJIChQZXJsIHRlc3Qgc3VpdGUgcGFydCkKLSAjIwotIAotLXVzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE0OwotK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDE2OwotIAotIEJFR0lOIHsKLSAgICAgdXNlX29rKCdEYXRhOjpVVUlEJyk7Ci1AQCAtNTMsMyArNTMsNSBAQAotIG9rKCR1dWlkOCA9ICR1Zy0+ZnJvbV9zdHJpbmcoIjZiYTdiODExLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCIpKTsKLSBvaygkdWctPmNvbXBhcmUoJHV1aWQ3LCAkdXVpZDgpID09IDApOwotIAotK29rKCR1dWlkOSA9ICR1Zy0+ZnJvbV9zdHJpbmcoIjZiYTdiODExOWRhZDExZDE4MGI0MDBjMDRmZDQzMGM4IikpOwotK29rKCR1Zy0+Y29tcGFyZSgkdXVpZDcsICR1dWlkOSkgPT0gMCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2luc3RhbGwtcGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2luc3RhbGwtcGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYjgwZjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9pbnN0YWxsLXBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotdXVpZC5wYyBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSBzbyBzaG91bGQgYmUgaW5zdGFsbGVkIGZyb20gdGhlIGN1cnJlbnQKLWRpcmVjdG9yeSwgYW5kIG5vdCAkUy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtzaG91bGQgYmUgc3VibWl0dGVkXQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotSW5kZXg6IHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4JMjAxMi0xMS0xMyAxNjo1ODoyOC42MjQxNTYwMDAgKzAwMDAKLSsrKyB1dWlkLTEuNi4yL01ha2VmaWxlLmluCTIwMTItMTEtMTMgMTc6MDU6MjQuMjI0MTU4NjcwICswMDAwCi1AQCAtMjMyLDcgKzIzMiw3IEBACi0gCSQoU0hUT09MKSBta2RpciAtZiAtcCAtbSA3NTUgJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0gCSQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDc1NSB1dWlkLWNvbmZpZyAkKERFU1RESVIpJChiaW5kaXIpLwotIAkkKFNIVE9PTCkgaW5zdGFsbCAtYyAtbSA2NDQgJChTKS91dWlkLWNvbmZpZy4xICQoREVTVERJUikkKG1hbmRpcikvbWFuMS8KLS0JJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNjQ0ICQoUykvdXVpZC5wYyAkKERFU1RESVIpJChsaWJkaXIpL3BrZ2NvbmZpZy8KLSsJJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNjQ0IHV1aWQucGMgJChERVNURElSKSQobGliZGlyKS9wa2djb25maWcvCi0gCSQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDY0NCB1dWlkLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvCi0gCS1AaWYgWyAiLiQoV0lUSF9EQ0UpIiA9IC55ZXMgXTsgdGhlbiBcCi0gCSAgICBlY2hvICIkKFNIVE9PTCkgaW5zdGFsbCAtYyAtbSA2NDQgJChTKS91dWlkX2RjZS5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpLyI7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGRmbGFncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRmYzEzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2xkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1PYmV5IExERkxBR1MKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gdXVpZC0xLjYuMi5vcmlnL01ha2VmaWxlLmluCi0rKysgdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgotQEAgLTExMywxNSArMTEzLDE1IEBAIGFsbDogJChUQVJHRVRTKQotCUAkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKENQUEZMQUdTKSAkKENYWEZMQUdTKSAtYyAkPAotCi0gJChMSUJfTkFNRSk6ICQoTElCX09CSlMpCi0tCUAkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpIC1vICQoTElCX05BTUUpICQoTElCX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotKwlAJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAkKExERkxBR1MpIC1vICQoTElCX05BTUUpICQoTElCX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotCSAgICAtdmVyc2lvbi1pbmZvIGAkKFNIVE9PTCkgdmVyc2lvbiAtbCBjIC1kIGxpYnRvb2wgJChTKS91dWlkX3ZlcnMuaGAKLQotICQoRENFX05BTUUpOiAkKERDRV9PQkpTKQotLQlAJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAtbyAkKERDRV9OQU1FKSAkKERDRV9PQkpTKSAtcnBhdGggJChsaWJkaXIpIFwKLSsJQCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChMREZMQUdTKSAtbyAkKERDRV9OQU1FKSAkKERDRV9PQkpTKSAtcnBhdGggJChsaWJkaXIpIFwKLQkgICAgLXZlcnNpb24taW5mbyBgJChTSFRPT0wpIHZlcnNpb24gLWwgYyAtZCBsaWJ0b29sICQoUykvdXVpZF92ZXJzLmhgCi0KLSAkKENYWF9OQU1FKTogJChDWFhfT0JKUykKLS0JQCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDWFgpIC1vICQoQ1hYX05BTUUpICQoQ1hYX09CSlMpIC1ycGF0aCAkKGxpYmRpcikgXAotKwlAJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENYWCkgJChMREZMQUdTKSAtbyAkKENYWF9OQU1FKSAkKENYWF9PQkpTKSAtcnBhdGggJChsaWJkaXIpIFwKLQkgICAgLXZlcnNpb24taW5mbyBgJChTSFRPT0wpIHZlcnNpb24gLWwgYyAtZCBsaWJ0b29sICQoUykvdXVpZF92ZXJzLmhgCi0KLSAkKFBSR19OQU1FKTogJChQUkdfT0JKUykgJChMSUJfTkFNRSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGlidG9vbC10YWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2xpYnRvb2wtdGFnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjYwMWFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvbGlidG9vbC10YWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1SZXBlY3QgTElCVE9PTEZMQUdTCi0KLVRoaXMgYWRkIGEga25vYiB0aGF0IGNhbiBiZSBjb250cm9sbGVkIGZyb20gZW52IHRvIHNldCBnZW5lcmljIG9wdGlvbnMKLWZvciBsaWJ0b29sCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4KLSsrKyB1dWlkLTEuNi4yL01ha2VmaWxlLmluCi1AQCAtNTYsNyArNTYsNyBAQCBSTSAgICAgICAgICA9IHJtIC1mCi0gQ1AgICAgICAgICAgPSBjcAotIFJNRElSICAgICAgID0gcm1kaXIKLSBTSFRPT0wgICAgICA9ICQoUykvc2h0b29sCi0tTElCVE9PTCAgICAgPSBATElCVE9PTEAKLStMSUJUT09MICAgICA9IEBMSUJUT09MQCAkKExJQlRPT0xGTEFHUykKLSBUUlVFICAgICAgICA9IHRydWUKLSBQT0QyTUFOICAgICA9IHBvZDJtYW4KLSBQRVJMICAgICAgICA9IEBQRVJMQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC91dWlkLWxpYnRvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL3V1aWQtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJjOTFiOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL3V1aWQtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVJlbW92ZSBoYXJkY29kZWQgbGlidG9vbCBuYW1lLCBmYWxsIGJhY2sgdG8gZ2VuZXJhdGVkIG5hbWUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KLVRoZSBwcm9qZWN0IGFwcGVhcnMgdG8gbm8gbG9uZ2VyIGJlIGFjY2VwdGluZyBjaGFuZ2VzLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLXVyIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbiB1dWlkLTEuNi4yL01ha2VmaWxlLmluCi0tLS0gdXVpZC0xLjYuMi5vcmlnL01ha2VmaWxlLmluCTIwMTItMDUtMTQgMTQ6Mzc6MTkuNTc5NjcyOTMwIC0wNTAwCi0rKysgdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgkyMDEyLTA1LTE0IDE0OjM3OjQ5LjExMjczMzc4NyAtMDUwMAotQEAgLTMyLDYgKzMyLDcgQEAKLSBWUEFUSCAgICAgICA9IEBzcmNkaXJACi0gc3JjZGlyICAgICAgPSBAc3JjZGlyQAotIHRvcF9zcmNkaXIgID0gQHRvcF9zcmNkaXJACi0rdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKLSBTICAgICAgICAgICA9ICQoc3JjZGlyKQotIEMgICAgICAgICAgID0gLgotIAotQEAgLTU1LDcgKzU2LDcgQEAKLSBDUCAgICAgICAgICA9IGNwCi0gUk1ESVIgICAgICAgPSBybWRpcgotIFNIVE9PTCAgICAgID0gJChTKS9zaHRvb2wKLS1MSUJUT09MICAgICA9ICQoQykvbGlidG9vbAotK0xJQlRPT0wgICAgID0gQExJQlRPT0xACi0gVFJVRSAgICAgICAgPSB0cnVlCi0gUE9EMk1BTiAgICAgPSBwb2QybWFuCi0gUEVSTCAgICAgICAgPSBAUEVSTEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWQvdXVpZC1ub3N0cmlwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC91dWlkLW5vc3RyaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MDZiNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC91dWlkLW5vc3RyaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1XZSBkb24ndCB3YW50IGFueXRoaW5nIHN0cmlwcGVkCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbm8gdXBzdHJlYW1dCi1UaGUgcHJvamVjdCBhcHBlYXJzIHRvIG5vIGxvbmdlciBiZSBhY2NlcHRpbmcgY2hhbmdlcy4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC11ciB1dWlkLTEuNi4yLm9yaWcvTWFrZWZpbGUuaW4gdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgotLS0tIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbgkyMDEyLTA1LTE0IDE0OjQyOjQyLjIyNTc4OTQ1NiAtMDUwMAotKysrIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4JMjAxMi0wNS0xNCAxNTowMzowMy4xMTk3MzM0MDAgLTA1MDAKLUBAIC0yNTQsNyArMjU0LDcgQEAKLSAJLUBpZiBbICIuJChXSVRIX0NYWCkiID0gLnllcyBdOyB0aGVuIFwKLSAJICAgICQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgJChTSFRPT0wpIGluc3RhbGwgLWMgLW0gNjQ0ICQoQ1hYX05BTUUpICQoREVTVERJUikkKGxpYmRpcikvOyBcCi0gCWZpCi0tCUAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsICQoU0hUT09MKSBpbnN0YWxsIC1jIC1zIC1tIDc1NSB1dWlkICQoREVTVERJUikkKGJpbmRpcikvCi0rCUAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsICQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDc1NSB1dWlkICQoREVTVERJUikkKGJpbmRpcikvCi0gCSQoU0hUT09MKSBpbnN0YWxsIC1jIC1tIDY0NCAkKFMpL3V1aWQuMSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEvCi0gCS1AaWYgWyAiLiQoV0lUSF9QRVJMKSIgPSAueWVzIF07IHRoZW4gXAotIAkgICAgKGNkICQoUykvcGVybCAmJiAkKE1BS0UpICQoTUZMQUdTKSBpbnN0YWxsIERFU1RESVI9JChERVNURElSKSk7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDljYTc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1TVU1NQVJZID0gIlVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIChVVUlEKSBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiT1NTUCB1dWlkIGlzIGEgSVNPLUM6MTk5OSBhcHBsaWNhdGlvbiBwcm9ncmFtbWluZyBpbnRlcmZhY2UgXAotKEFQSSkgYW5kIGNvcnJlc3BvbmRpbmcgY29tbWFuZCBsaW5lIGludGVyZmFjZSAoQ0xJKSBmb3IgdGhlIGdlbmVyYXRpb24gb2YgXAotRENFIDEuMSwgSVNPL0lFQyAxMTU3ODoxOTk2IGFuZCBSRkMgNDEyMiBjb21wbGlhbnQgVW5pdmVyc2FsbHkgVW5pcXVlIFwKLUlkZW50aWZpZXIgKFVVSUQpLiBJdCBzdXBwb3J0cyBEQ0UgMS4xIHZhcmlhbnQgVVVJRHMgb2YgdmVyc2lvbiAxICh0aW1lIFwKLWFuZCBub2RlIGJhc2VkKSwgdmVyc2lvbiAzIChuYW1lIGJhc2VkLCBNRDUpLCB2ZXJzaW9uIDQgKHJhbmRvbSBudW1iZXIgXAotYmFzZWQpIGFuZCB2ZXJzaW9uIDUgKG5hbWUgYmFzZWQsIFNIQS0xKS4iCi1ERVNDUklQVElPTl91dWlkID0gIlRoaXMgcGFja2FnZSBjb250YWlucyBhIHRvb2wgdG8gY3JlYXRlIFVuaXZlcnNhbGx5IFwKLVVuaXF1ZSBJZGVudGlmaWVycyAoVVVJRCkgZnJvbSB0aGUgY29tbWFuZC1saW5lLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vc3NwLm9yZy9wa2cvbGliL3V1aWQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MzA7ZW5kbGluZT01NTttZDU9YjM5NGZhZGIwMzliYmZjYTZhZDlkOWQ3NjllZTk2MGUgXAotCSAgIGZpbGU6Ly91dWlkX21kNS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjg7bWQ1PTljMWY0YjIyMTg1NDZkZWFlMjRjOTFiZTFkY2YwMGRkIgotCi1QUiA9ICJyMiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vby9vc3NwLXV1aWQvIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL28vJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0JICAgZmlsZTovLzAwMDEtQ2hhbmdlLWxpYnJhcnktbmFtZS5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDItdXVpZC1wcmVzZXJ2ZS1tLW9wdGlvbi1zdGF0dXMtaW4tdi1vcHRpb24taGFuZGxpbmcucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAzLUZpeC13aGF0aXMtZW50cmllcy5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDQtZml4LWRhdGEtdXVpZC1mcm9tLXN0cmluZy5wYXRjaCBcCi0JICAgZmlsZTovL3V1aWQtbGlidG9vbC5wYXRjaCBcCi0JICAgZmlsZTovL3V1aWQtbm9zdHJpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLXBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAotCSAgIgotU1JDX1VSSVttZDVzdW1dID0gIjVkYjBkNDNhOTAyMmE2ZWJiYmMyNTMzN2FlMjg5NDJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExYTYxNTIyNWJhYTVmOGJiNjg2ODI0NDIzZjUwZTQ0MjdhY2QzZjcwZDM5NDc2NWJkZmYzMjgwMWYwZmQ1YjAiCi0KLVMgPSAiJHtXT1JLRElSfS91dWlkLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtZGNlIC0td2l0aG91dC1jeHggLS13aXRob3V0LXBlcmwgLS13aXRob3V0LXBlcmwtY29tcGF0IC0td2l0aG91dC1waHAgLS13aXRob3V0LXBnc3FsIgotRVhUUkFfT0VDT05GID0gIi0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L29zc3AiCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgIyBUaGlzIHBhY2thZ2UgaGFzIGEgY29tcGxldGVseSBjdXN0b20gYWNsb2NhbC5tNCwgd2hpY2ggc2hvdWxkIGJlIGFjaW5jbHVkZS5tNC4KLSAgaWYgWyAhIC1lICR7U30vYWNpbmNsdWRlLm00IF07IHRoZW4KLSAgICBtdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLSAgZmkKLQotICBybSAtZiAke1N9L2xpYnRvb2wubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gIG1rZGlyIC1wICAke0R9JHtpbmNsdWRlZGlyfS9vc3NwCi0gIG12ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL3V1aWQucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvb3NzcC11dWlkLnBjCi19Ci0KLVBBQ0tBR0VTID0rICJ1dWlkIgotRklMRVNfdXVpZCA9ICIke2JpbmRpcn0vdXVpZCIKLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJvc3NwLXV1aWQuc28uMTYqIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vdXVpZC1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gInV1aWQuMyIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LWRvYyA9ICIyMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXVpZC4zXSA9ICIke21hbmRpcn0vbWFuMy91dWlkLjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNmRjMzBkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgotREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAotRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKLVNlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAotZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWEyZWU3ZjBkYzQ0ZjllZTc2NjYxYTE2YmJiYzBjNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM5ZjQ3NGFkM2Q0ZmUwY2FiZmY2YjZiZTUzMmNiMWRkMzQ4MjQ1OTg2ZDRhNmI2MDBhZDkyMWQ1Y2ZkZWZhZiIKLQotUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1kb19jb21waWxlKCkgewotCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCi0JY3Bhbl9kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLQlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjQyYjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjYuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJFcnJvciAtIEVycm9yL2V4Y2VwdGlvbiBoYW5kbGluZyBpbiBhbiBPTy1pc2ggd2F5IgorREVTQ1JJUFRJT04gPSAiVGhlIEVycm9yIHBhY2thZ2UgcHJvdmlkZXMgdHdvIGludGVyZmFjZXMuIEZpcnN0bHkgXAorRXJyb3IgcHJvdmlkZXMgYSBwcm9jZWR1cmFsIGludGVyZmFjZSB0byBleGNlcHRpb24gaGFuZGxpbmcuIFwKK1NlY29uZGx5IEVycm9yIGlzIGEgYmFzZSBjbGFzcyBmb3IgZXJyb3JzL2V4Y2VwdGlvbnMgdGhhdCBjYW4gXAorZWl0aGVyIGJlIHRocm93biwgZm9yIHN1YnNlcXVlbnQgY2F0Y2gsIG9yIGNhbiBzaW1wbHkgYmUgcmVjb3JkZWQuIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjM0OTlkMDllZTc0YTA1MGMwMzE5MzkxZmY5ZDEwMCIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9TL1NIL1NITE9NSUYvRXJyb3ItJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGRjZDk0NjQwZjYxN2RmMDJiNmQ2YzFlNGU5MjAxOGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzc1OTBhOTYyY2Q3M2FlMDM0NzBlMWZmMTY0NTlhNmNiYzUyNzNmYzU3NjI2Yjg5ODFkYWI5YzI0MzMxNTVkOSIKKworUyA9ICIke1dPUktESVJ9L0Vycm9yLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjczLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTIzOGYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43My5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAotVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCi1hbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRS9FVC9FVEhFUi9VUkktJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzdkNDRhMDhlNTk5YWE5NDViMzJhOTQzNGZmZTAwYTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2NhN2FiNGE2ZjYzZjNjY2FhY2FlMGYyZTEzMzdlOGVkZjg0MTM3ZTczZjE4NTQ4ZWM3ZDY1OWYyM2VmZTQxMyIKLQotUyA9ICIke1dPUktESVJ9L1VSSS0ke1BWfSIKLQotRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgdGhlc2UgdGVzdHMgcmVxdWlyZSAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgotCXJtIC1yZiAke0J9L3QvY3dkLnQKLQlybSAtcmYgJHtCfS90L2ZpbGUudAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGlidGVzdC1uZWVkcy1wZXJsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43NC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2NmYTBmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjc0LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAorVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCithbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRS9FVC9FVEhFUi9VUkktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODkyZjcxODNiMTc4YWY0MGYyMDViYTM3MTI4MjI1ZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTljMjU0ZjQ1Zjg5Y2IxZGQ5NDZiNjg5ZGZlNDMzMDk1NDA0NTMyYTQ1NDNiZGFhYjBiNzFjZTBmZGNkZDUzZCIKKworUyA9ICIke1dPUktESVJ9L1VSSS0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgdGhlc2UgdGVzdHMgcmVxdWlyZSAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgorCXJtIC1yZiAke0J9L3QvY3dkLnQKKwlybSAtcmYgJHtCfS90L2ZpbGUudAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGlidGVzdC1uZWVkcy1wZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmluZGV4IGM1ZTBhZTYuLjk1YWY0ZDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgpAQCAtMTgsOCArMTgsMTUgQEAKIAogIyBmaXggdXAgc3ViIE1ha2VNYWtlciBwcm9qZWN0IGFzIGFyZ3VtZW50cyBkb24ndCBnZXQgcHJvcGFnYXRlZCB0aG91Z2gKICMgc2VlIGh0dHBzOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9Mjg2MzIKK2RvX2NvbmZpZ3VyZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCXNlZCAtRSBcCisJICAgIC1lICdzOi1MJHtTVEFHSU5HX0xJQkRJUn06OmcnIC1lICdzOi1JJHtTVEFHSU5HX0lOQ0RJUn06OmcnIFwKKwkgICAgLWkgTWFrZWZpbGUgRXhwYXQvTWFrZWZpbGUKK30KKwogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlzZWQgJ3M6LS1zeXNyb290PS4qXChcc1x8JFwpOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gOmcnIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCisJc2VkIC1lICdzOi0tc3lzcm9vdD0uKlwoXHNcfCRcKTotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IDpnJyBcCisJICAgIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCiAJc2VkICdzOl5GVUxMX0FSID0gLio6RlVMTF9BUiA9ICR7QVJ9OmcnIC1pIEV4cGF0L01ha2VmaWxlCiAJIyBtYWtlIHN1cmUgdGhlc2UgdHdvIGRvIG5vdCBidWlsZCBpbiBwYXJhbGxlbAogCXNlZCAncyFeJChJTlNUX0RZTkFNSUMpOiEkKElOU1RfRFlOQU1JQyk6ICQoQk9PVFNUUkFQKSEnIC1pIEV4cGF0L01ha2VmaWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlkMDBkMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBYTUwiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MOjpTaW1wbGUgUGVybCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgQVBJIGxheWVyIFwKLW9uIHRvcCBvZiBhbiB1bmRlcmx5aW5nIFhNTCBwYXJzaW5nIG1vZHVsZSB0byBtYWludGFpbiBYTUwgZmlsZXMgXAotKGVzcGVjaWFsbHkgY29uZmlndXJhdGlvbiBmaWxlcykuIEl0IGlzIGEgYmx1bnQgcmV3cml0ZSBvZiBYTUw6OlNpbXBsZSBcCi0oYnkgR3JhbnQgTWNMZWFuKSB0byB1c2UgdGhlIFhNTDo6TGliWE1MIHBhcnNlciBmb3IgWE1MIHN0cnVjdHVyZXMsIFwKLXdoZXJlIHRoZSBvcmlnaW5hbCB1c2VzIHBsYWluIFBlcmwgb3IgU0FYIHBhcnNlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bWFya292L1hNTC1MaWJYTUwtU2ltcGxlLTAuOTMvbGliL1hNTC9MaWJYTUwvU2ltcGxlLnBvZCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMzQ3N2UxOGEwZDA0MzkyY2RmNDRhZTcwZTQ5YjQ5NSIKLURFUEVORFMgKz0gImxpYnhtbC1wYXJzZXItcGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtU2ltcGxlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFjZDJlOGUzNDIxMTYwYzQyMjc3NTIzZDViMmY0ZGQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhMTQ4MTlmZDE3Yzc1ZmJiOTBhZGNlYzA0NDZjZWFiMzU2Y2FiMGNjYWZmODcwZjJlMTY1OTIwNWRjMjQyNGYiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtU2ltcGxlLSR7UFZ9IgotCi1FWFRSQV9QRVJMRkxBR1MgPSAiLUkgJHtQRVJMSE9TVExJQn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3ODhkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjUuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBYTUwiCitERVNDUklQVElPTiA9ICJUaGUgWE1MOjpTaW1wbGUgUGVybCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgQVBJIGxheWVyIFwKK29uIHRvcCBvZiBhbiB1bmRlcmx5aW5nIFhNTCBwYXJzaW5nIG1vZHVsZSB0byBtYWludGFpbiBYTUwgZmlsZXMgXAorKGVzcGVjaWFsbHkgY29uZmlndXJhdGlvbiBmaWxlcykuIEl0IGlzIGEgYmx1bnQgcmV3cml0ZSBvZiBYTUw6OlNpbXBsZSBcCisoYnkgR3JhbnQgTWNMZWFuKSB0byB1c2UgdGhlIFhNTDo6TGliWE1MIHBhcnNlciBmb3IgWE1MIHN0cnVjdHVyZXMsIFwKK3doZXJlIHRoZSBvcmlnaW5hbCB1c2VzIHBsYWluIFBlcmwgb3IgU0FYIHBhcnNlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bWFya292L1hNTC1MaWJYTUwtU2ltcGxlLTAuOTMvbGliL1hNTC9MaWJYTUwvU2ltcGxlLnBvZCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZjIwNmRmOGM5ZmU3NzVmMWQ0YzQ4NDM4NjQ5MWVhYyIKK0RFUEVORFMgKz0gImxpYnhtbC1wYXJzZXItcGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtU2ltcGxlLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImJiODQxZGNlODg5YTI2Yzg5YTFjMjczOTk3MGU5ZmJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMWZkZGFlYmVhMjQxNjc0M2ViNWM0ZmRmYWIwMjhmNTAyMTIzZDlhMjIwNDA1YTQxMDBlNjhmYzQ4MGRiZjgiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtU2ltcGxlLSR7UFZ9IgorCitFWFRSQV9QRVJMRkxBR1MgPSAiLUkgJHtQRVJMSE9TVExJQn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIGxpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmwgXAorICAgIGxpYnhtbC1wYXJzZXItcGVybCBcCisgICAgbGlieG1sLXNheC1wZXJsIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZjQ1ODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotcmVxdWlyZSBwZXJsLmluYwotCi0jIFdlIG5lZWQgZ251Z3JlcCAoZm9yIC1JKQotREVQRU5EUyA9ICJkYi1uYXRpdmUgZ3JlcC1uYXRpdmUgZ2RibS1uYXRpdmUgemxpYi1uYXRpdmUiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgIGZpbGU6Ly9Db25maWd1cmUtbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmF0aXZlLW5vcGFja2xpc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTU1fVW5peC5wbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZXJybm9fdmVyLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGVybC1QYXRoVG9vbHMtZG9uLXQtZmlsdGVyLW91dC1ibGliLWZyb20tSU5DLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjZhODRjN2MzZTJiOGIyNjljMTA1YTVkYjJmNmQ1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwM2E3N2JhYzQ1MDVjMjcwZjE4OTBlY2U3NWFmYzdkNGI1NTUwOTBiNDFhYTQxZWE0Nzg3NDdlMjNiMmFmYjNmIgotCi1pbmhlcml0IG5hdGl2ZQotCi1OQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCi0KLWV4cG9ydCBMRD0iJHtDQ0xEfSIKLQotZG9fY29uZmlndXJlICgpIHsKLQkuL0NvbmZpZ3VyZSBcCi0JCS1EY2M9IiR7Q0N9IiBcCi0JCS1EY2ZsYWdzPSIke0NGTEFHU30iIFwKLQkJLURsZGZsYWdzPSIke0xERkxBR1N9IiBcCi0JCS1EbGRkbGZsYWdzPSIke0xERkxBR1N9IC1zaGFyZWQiIFwKLQkJLURjZl9ieT0iT3BlbiBFbWJlZGRlZCIgXAotCQktRHByZWZpeD0ke3ByZWZpeH0gXAotCQktRHZlbmRvcnByZWZpeD0ke3ByZWZpeH0gXAotCQktRHNpdGVwcmVmaXg9JHtwcmVmaXh9IFwKLQkJXAotCQktRGJpbj0ke1NUQUdJTkdfQklORElSfS8ke1BOfSBcCi0JCS1EcHJpdmxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsLyR7UFZ9IFwKLQkJLURhcmNobGliPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0gXAotCQktRHZlbmRvcmxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9IFwKLQkJLUR2ZW5kb3JhcmNoPSR7U1RBR0lOR19MSUJESVJ9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn0gXAotCQktRHNpdGVsaWI9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC9zaXRlX3BlcmwvJHtQVn0gXAotCQktRHNpdGVhcmNoPSR7U1RBR0lOR19MSUJESVJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9IFwKLQkJXAotCQktRHVzZXNocnBsaWIgXAotCQktRHVzZXRocmVhZHMgXAotCQktRHVzZWl0aHJlYWRzIFwKLQkJLUR1c2VsYXJnZWZpbGVzIFwKLQkJLURub2V4dGVuc2lvbnM9T0RCTV9GaWxlIFwKLQkJLVVkX2Rvc3VpZCBcCi0JCS1VaV9kYiBcCi0JCS1VaV9uZGJtIFwKLQkJLVVpX2dkYm0gXAotCQktVWlfZ2RibV9uZGJtIFwKLQkJLVVpX2dkYm1uZGJtIFwKLQkJLURpX3NoYWRvdyBcCi0JCS1EaV9zeXNsb2cgXAotCQktRHVzZXBlcmxpbyBcCi0JCS1EbWFuM2V4dD0zcG0gXAotCQktRHNlZD0vYmluL3NlZCBcCi0JCS1VYWZzIFwKLQkJLVVkX2NzaCBcCi0JCS1VdXNlc2ZpbyBcCi0JCS1VdXNlbm0gLWRlcwotfQotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotCSMgV2UgbmVlZCBhIGhvc3RwZXJsIGxpbmsgZm9yIGJ1aWxkaW5nIHBlcmwKLQlsbiAtc2YgcGVybCR7UFZ9ICR7RH0ke2JpbmRpcn0vaG9zdHBlcmwKLQotICAgICAgICBsbiAtc2YgcGVybCAke0R9JHtsaWJkaXJ9L3Blcmw1Ci0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFIFwKLQkgICAgICAgICAgICR7RH0ke2RhdGFkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMKLQotCSMgU2F2ZSBuYXRpdmUgY29uZmlnIAotCWluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybAotCWluc3RhbGwgbGliL0NvbmZpZy5wbSAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vCi0JaW5zdGFsbCBsaWIvRXh0VXRpbHMvdHlwZW1hcCAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvCi0KLQkjIHBlcmwgc2hhcmVkIGxpYnJhcnkgaGVhZGVycwotCSMgcmVmZXJlbmNlIHBlcmwgNS4yMC4wLTEgaW4gZGViaWFuOgotCSMgaHR0cHM6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL2V4cGVyaW1lbnRhbC9pMzg2L3BlcmwvZmlsZWxpc3QKLQlmb3IgaSBpbiBhdi5oIGJpdGNvdW50LmggY2hhcmNsYXNzX2ludmxpc3RzLmggY29uZmlnLmggY29wLmggY3YuaCBkb3Npc2guaCBcCi0JCWVtYmVkLmggZW1iZWR2YXIuaCBFWFRFUk4uaCBmYWtlc2Rpby5oIGZlYXR1cmUuaCBmb3JtLmggZ2l0X3ZlcnNpb24uaCBcCi0JCWd2LmggaGFuZHkuaCBodl9mdW5jLmggaHYuaCBpbmxpbmUuaCBJTlRFUk4uaCBpbnRycHZhci5oIGlwZXJsc3lzLmggXAotCQlrZXl3b3Jkcy5oIGwxX2NoYXJfY2xhc3NfdGFiLmggbWFsbG9jX2N0bC5oIG1ldGFjb25maWcuaCBtZ19kYXRhLmggXAotCQltZy5oIG1nX3Jhdy5oIG1nX3Z0YWJsZS5oIG15ZHRyYWNlLmggbm9zdGRpby5oIG9wY29kZS5oIG9wLmggXAotCQlvcG5hbWVzLmggb3BfcmVnX2NvbW1vbi5oIG92ZXJsb2FkLmggcGFkLmggcGFyc2VyLmggcGF0Y2hsZXZlbC5oIFwKLQkJcGVybGFwaS5oIHBlcmwuaCBwZXJsaW8uaCBwZXJsaW9sLmggcGVybHNkaW8uaCBwZXJsdmFycy5oIHBlcmx5LmggXAotCQlwcC5oIHBwX3Byb3RvLmggcHJvdG8uaCByZWVudHIuaCByZWdjaGFyY2xhc3MuaCByZWdjb21wLmggcmVnZXhwLmggXAotCQlyZWdub2Rlcy5oIHNjb3BlLmggc3YuaCB0aHJlYWQuaCB0aW1lNjRfY29uZmlnLmggdGltZTY0LmggdWNvbmZpZy5oIFwKLQkJdW5pY29kZV9jb25zdGFudHMuaCB1bml4aXNoLmggdXRmOC5oIHV0ZmViY2RpYy5oIHV0aWwuaCB1dWRtYXAuaCBcCi0JCXZ1dGlsLmggd2FybmluZ3MuaCBYU1VCLmgKLQlkbwotCQlpbnN0YWxsICRpICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFCi0JZG9uZQotCi0JIyBUaG9zZSB3cmFwcGVycyBtZWFuIHRoYXQgcGVybCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUgKHdoaWNoIG1heSBjaGFuZ2UKLQkjIHBhdGggbG9jYXRpb24pIHdvcmtzIGFuZCB0aGF0IGluIHRoZSBuYXRpdmVzZGsgY2FzZSwgdGhlIFNESyBjYW4gYmUKLQkjIGluc3RhbGxlZCB0byBhIGRpZmZlcmVudCBsb2NhdGlvbiBmcm9tIHRoZSBvbmUgaXQgd2FzIGJ1aWx0IGZvci4KLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwgUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0nCi0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsJHtQVn0gUEVSTDVMSUI9JyRQRVJMNUxJQjoke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9OiR7U1RBR0lOR19MSUJESVJ9L3BlcmwvJHtQVn0nCi0KLQkjIFVzZSAvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybCBmb3IgdGhlIHBlcmwgc2NyaXB0LgotCWZvciBmIGluIGBncmVwIC1JbCAnIyEgKiR7YmluZGlyfS9wZXJsJyAke0R9LyR7YmluZGlyfS8qYDsgZG8KLQkJc2VkIC1pIC1lICdzfCR7YmluZGlyfS9wZXJsfC91c3IvYmluL2VudiBuYXRpdmVwZXJsfCcgJGYKLQlkb25lCi0KLQkjIFRoZSBwYWNrbGlzdCBpcyBsYXJnZSB3aXRoIGhhcmRjb2RlZCBwYXRocyBtZWFuaW5nIGl0IG5lZWRzIHJlbG9jYXRpbmcKLQkjIHNvIGp1c3QgcmVtb3ZlIGl0LgotCXJtICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS8ucGFja2xpc3QKLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIiCi0KLXBlcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JIyBDcmVhdGUgYSB3cmFwcGVyIHRoYXQgL3Vzci9iaW4vZW52IHBlcmwgd2lsbCB1c2UgdG8gZ2V0IHBlcmwtbmF0aXZlLgotCSMgVGhpcyBNVVNUIGxpdmUgaW4gdGhlIG5vcm1hbCBiaW5kaXIuCi0JY2F0ID4gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ly4uL25hdGl2ZXBlcmwgPDwgRU9GCi0jIS9iaW4vc2gKLXJlYWxwYXRoPVxgcmVhZGxpbmsgLWZuIFwkMFxgCi1leGVjIFxgZGlybmFtZSBcJHJlYWxwYXRoXGAvcGVybC1uYXRpdmUvcGVybCAiXCRAIgotRU9GCi0JY2htb2QgMDc1NSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vLi4vbmF0aXZlcGVybAotCWNhdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vLi4vbmF0aXZlcGVybAotfQotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCi1QQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSArPSAiXnBlcmwtbW9kdWxlLS4qbmF0aXZlJCIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWQzZmQ0OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC40LmJiCkBAIC0wLDAgKzEsMTQwIEBACityZXF1aXJlIHBlcmwuaW5jCisKKyMgV2UgbmVlZCBnbnVncmVwIChmb3IgLUkpCitERVBFTkRTID0gImRiLW5hdGl2ZSBncmVwLW5hdGl2ZSBnZGJtLW5hdGl2ZSB6bGliLW5hdGl2ZSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgICAgZmlsZTovL0NvbmZpZ3VyZS1tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtbm9wYWNrbGlzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NTV9Vbml4LnBtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9lcnJub192ZXIuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLVBhdGhUb29scy1kb24tdC1maWx0ZXItb3V0LWJsaWItZnJvbS1JTkMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtNS4yNi4xLWd1YXJkX29sZF9saWJjcnlwdF9maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FeHRVdGlscy1NTV9Vbml4LnBtLWZpeC1yYWNlLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDQ2MjJiYzRkMzk0MWRjN2ViNTcxYzUyYjdjMDI5OTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2YwODAyODdmZjY0NzUwMjcwNjg5ODQzYWU5NDVmMDIxNTlhMzNjYjhmMmZjOTEwMjQ4YzE1YmVmYmE1ZGI4NCIKKworaW5oZXJpdCBuYXRpdmUKKworTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggPSAiLyR7UE59IgorCitleHBvcnQgTEQ9IiR7Q0NMRH0iCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisJLi9Db25maWd1cmUgXAorCQktRGNjPSIke0NDfSIgXAorCQktRGNmbGFncz0iJHtDRkxBR1N9IiBcCisJCS1EbGRmbGFncz0iJHtMREZMQUdTfSIgXAorCQktRGxkZGxmbGFncz0iJHtMREZMQUdTfSAtc2hhcmVkIiBcCisJCS1EY2ZfYnk9Ik9wZW4gRW1iZWRkZWQiIFwKKwkJLURwcmVmaXg9JHtwcmVmaXh9IFwKKwkJLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKKwkJLURzaXRlcHJlZml4PSR7cHJlZml4fSBcCisJCVwKKwkJLURiaW49JHtTVEFHSU5HX0JJTkRJUn0vJHtQTn0gXAorCQktRHByaXZsaWI9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC8ke1BWfSBcCisJCS1EYXJjaGxpYj0ke1NUQUdJTkdfTElCRElSfS9wZXJsLyR7UFZ9IFwKKwkJLUR2ZW5kb3JsaWI9JHtTVEFHSU5HX0xJQkRJUn0vcGVybC92ZW5kb3JfcGVybC8ke1BWfSBcCisJCS1EdmVuZG9yYXJjaD0ke1NUQUdJTkdfTElCRElSfS9wZXJsL3ZlbmRvcl9wZXJsLyR7UFZ9IFwKKwkJLURzaXRlbGliPSR7U1RBR0lOR19MSUJESVJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9IFwKKwkJLURzaXRlYXJjaD0ke1NUQUdJTkdfTElCRElSfS9wZXJsL3NpdGVfcGVybC8ke1BWfSBcCisJCVwKKwkJLUR1c2VzaHJwbGliIFwKKwkJLUR1c2V0aHJlYWRzIFwKKwkJLUR1c2VpdGhyZWFkcyBcCisJCS1EdXNlbGFyZ2VmaWxlcyBcCisJCS1Ebm9leHRlbnNpb25zPU9EQk1fRmlsZSBcCisJCS1VZF9kb3N1aWQgXAorCQktVWlfZGIgXAorCQktVWlfbmRibSBcCisJCS1VaV9nZGJtIFwKKwkJLVVpX2dkYm1fbmRibSBcCisJCS1VaV9nZGJtbmRibSBcCisJCS1EaV9zaGFkb3cgXAorCQktRGlfc3lzbG9nIFwKKwkJLUR1c2VwZXJsaW8gXAorCQktRG1hbjNleHQ9M3BtIFwKKwkJLURzZWQ9L2Jpbi9zZWQgXAorCQktVWFmcyBcCisJCS1VZF9jc2ggXAorCQktVXVzZXNmaW8gXAorCQktVXVzZW5tIC1kZXMKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKwkjIFdlIG5lZWQgYSBob3N0cGVybCBsaW5rIGZvciBidWlsZGluZyBwZXJsCisJbG4gLXNmIHBlcmwke1BWfSAke0R9JHtiaW5kaXJ9L2hvc3RwZXJsCisKKyAgICAgICAgbG4gLXNmIHBlcmwgJHtEfSR7bGliZGlyfS9wZXJsNQorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRSBcCisJICAgICAgICAgICAke0R9JHtkYXRhZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzCisKKwkjIFNhdmUgbmF0aXZlIGNvbmZpZyAKKwlpbnN0YWxsIGNvbmZpZy5zaCAke0R9JHtsaWJkaXJ9L3BlcmwKKwlpbnN0YWxsIGxpYi9Db25maWcucG0gJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9LworCWluc3RhbGwgbGliL0V4dFV0aWxzL3R5cGVtYXAgJHtEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzLworCisJIyBwZXJsIHNoYXJlZCBsaWJyYXJ5IGhlYWRlcnMKKwkjIHJlZmVyZW5jZSBwZXJsIDUuMjAuMC0xIGluIGRlYmlhbjoKKwkjIGh0dHBzOi8vcGFja2FnZXMuZGViaWFuLm9yZy9leHBlcmltZW50YWwvaTM4Ni9wZXJsL2ZpbGVsaXN0CisJZm9yIGkgaW4gYXYuaCBiaXRjb3VudC5oIGNoYXJjbGFzc19pbnZsaXN0cy5oIGNvbmZpZy5oIGNvcC5oIGN2LmggZG9zaXNoLmggXAorCQllbWJlZC5oIGVtYmVkdmFyLmggRVhURVJOLmggZmFrZXNkaW8uaCBmZWF0dXJlLmggZm9ybS5oIGdpdF92ZXJzaW9uLmggXAorCQlndi5oIGhhbmR5LmggaHZfZnVuYy5oIGh2LmggaW5saW5lLmggSU5URVJOLmggaW50cnB2YXIuaCBpcGVybHN5cy5oIFwKKwkJa2V5d29yZHMuaCBsMV9jaGFyX2NsYXNzX3RhYi5oIG1hbGxvY19jdGwuaCBtZXRhY29uZmlnLmggbWdfZGF0YS5oIFwKKwkJbWcuaCBtZ19yYXcuaCBtZ192dGFibGUuaCBteWR0cmFjZS5oIG5vc3RkaW8uaCBvcGNvZGUuaCBvcC5oIFwKKwkJb3BuYW1lcy5oIG9wX3JlZ19jb21tb24uaCBvdmVybG9hZC5oIHBhZC5oIHBhcnNlci5oIHBhdGNobGV2ZWwuaCBcCisJCXBlcmxhcGkuaCBwZXJsLmggcGVybGlvLmggcGVybGlvbC5oIHBlcmxzZGlvLmggcGVybHZhcnMuaCBwZXJseS5oIFwKKwkJcHAuaCBwcF9wcm90by5oIHByb3RvLmggcmVlbnRyLmggcmVnY2hhcmNsYXNzLmggcmVnY29tcC5oIHJlZ2V4cC5oIFwKKwkJcmVnbm9kZXMuaCBzY29wZS5oIHN2LmggdGhyZWFkLmggdGltZTY0X2NvbmZpZy5oIHRpbWU2NC5oIHVjb25maWcuaCBcCisJCXVuaWNvZGVfY29uc3RhbnRzLmggdW5peGlzaC5oIHV0ZjguaCB1dGZlYmNkaWMuaCB1dGlsLmggdXVkbWFwLmggXAorCQl2dXRpbC5oIHdhcm5pbmdzLmggWFNVQi5oCisJZG8KKwkJaW5zdGFsbCAkaSAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRQorCWRvbmUKKworCSMgVGhvc2Ugd3JhcHBlcnMgbWVhbiB0aGF0IHBlcmwgaW5zdGFsbGVkIGZyb20gc3N0YXRlICh3aGljaCBtYXkgY2hhbmdlCisJIyBwYXRoIGxvY2F0aW9uKSB3b3JrcyBhbmQgdGhhdCBpbiB0aGUgbmF0aXZlc2RrIGNhc2UsIHRoZSBTREsgY2FuIGJlCisJIyBpbnN0YWxsZWQgdG8gYSBkaWZmZXJlbnQgbG9jYXRpb24gZnJvbSB0aGUgb25lIGl0IHdhcyBidWlsdCBmb3IuCisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9wZXJsIFBFUkw1TElCPSckUEVSTDVMSUI6JHtTVEFHSU5HX0xJQkRJUn0vcGVybC9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybC92ZW5kb3JfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsLyR7UFZ9JworCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCR7UFZ9IFBFUkw1TElCPSckUEVSTDVMSUI6JHtTVEFHSU5HX0xJQkRJUn0vcGVybC9zaXRlX3BlcmwvJHtQVn06JHtTVEFHSU5HX0xJQkRJUn0vcGVybC92ZW5kb3JfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsLyR7UFZ9JworCisJIyBVc2UgL3Vzci9iaW4vZW52IG5hdGl2ZXBlcmwgZm9yIHRoZSBwZXJsIHNjcmlwdC4KKwlmb3IgZiBpbiBgZ3JlcCAtSWwgJyMhICoke2JpbmRpcn0vcGVybCcgJHtEfS8ke2JpbmRpcn0vKmA7IGRvCisJCXNlZCAtaSAtZSAnc3wke2JpbmRpcn0vcGVybHwvdXNyL2Jpbi9lbnYgbmF0aXZlcGVybHwnICRmCisJZG9uZQorCisJIyBUaGUgcGFja2xpc3QgaXMgbGFyZ2Ugd2l0aCBoYXJkY29kZWQgcGF0aHMgbWVhbmluZyBpdCBuZWVkcyByZWxvY2F0aW5nCisJIyBzbyBqdXN0IHJlbW92ZSBpdC4KKwlybSAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vLnBhY2tsaXN0Cit9CisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyIgorCitwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCSMgQ3JlYXRlIGEgd3JhcHBlciB0aGF0IC91c3IvYmluL2VudiBwZXJsIHdpbGwgdXNlIHRvIGdldCBwZXJsLW5hdGl2ZS4KKwkjIFRoaXMgTVVTVCBsaXZlIGluIHRoZSBub3JtYWwgYmluZGlyLgorCWNhdCA+ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS8uLi9uYXRpdmVwZXJsIDw8IEVPRgorIyEvYmluL3NoCityZWFscGF0aD1cYHJlYWRsaW5rIC1mbiBcJDBcYAorZXhlYyBcYGRpcm5hbWUgXCRyZWFscGF0aFxgL3BlcmwtbmF0aXZlL3BlcmwgIlwkQCIKK0VPRgorCWNobW9kIDA3NTUgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ly4uL25hdGl2ZXBlcmwKKwljYXQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ly4uL25hdGl2ZXBlcmwKK30KKworIyBGaXggdGhlIHBhdGggaW4gc3N0YXRlCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiKi5wbSAqLnBvZCAqLmggKi5wbCAqLnNoIgorCitQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSA9ICJecGVybC1tb2R1bGUtLipuYXRpdmUkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKaW5kZXggNmE3YTJkNy4uOGQ0NjQ0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCkBAIC01MCw3ICs1MCw3IEBACiAgICAgICAgICAgICAnJHtQTn0tcHRlc3QlcycsICclcycsIHJlY3Vyc2l2ZT1UcnVlLCBtYXRjaF9wYXRoPVRydWUpCiB9CiAKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1tb2R1bGVzICR7UE59LWRvYyAke1BOfS1taXNjIHNlZCBsaWJzc3AiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbW9kdWxlcyAke1BOfS1kb2MgJHtQTn0tbWlzYyBzZWQiCiAKICMgVGhlIHBlcmwtcHRlc3QgcGFja2FnZSBjb250YWlucyBQZXJsIGludGVybmFsIG1vZHVsZXMgYW5kIGdlbmVyYXRpbmcgZmlsZQogIyBkZXBlbmRlbmNpZXMgZm9yIGl0IGNhdXNlcyBwcm9ibGVtcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1yZGVwZW5kc181LjI0LjEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXJkZXBlbmRzXzUuMjQuNC5pbmMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1yZGVwZW5kc181LjI0LjEuaW5jCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcmRlcGVuZHNfNS4yNC40LmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLzAwMDEtRXh0VXRpbHMtTU1fVW5peC5wbS1maXgtcmFjZS1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1FeHRVdGlscy1NTV9Vbml4LnBtLWZpeC1yYWNlLWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDNmYmJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLzAwMDEtRXh0VXRpbHMtTU1fVW5peC5wbS1maXgtcmFjZS1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA0MDcwMmFiZjMxNTZmYTkyZWY3MGVlNWQ0NDVmZTUyZGQ2Y2ZiYzdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIwIFNlcCAyMDE4IDE4OjQ4OjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEV4dFV0aWxzL01NX1VuaXgucG06IGZpeCByYWNlIGlzc3VlcworCitGaXhlZCBhIHJhY2UgaXNzdWUgd2hlbiBjb21waWxlIGxpYmh0bWwtcGFyc2VyLXBlcmwgYW5kIG90aGVycyB3aG8gdXNlIE1ha2VNYWtlcjoKK1tzbmlwXQorY2htb2QgNzU1IGJsaWIvYXJjaC9hdXRvL0hUTUwvUGFyc2VyL1BhcnNlci5zbyAKK2NobW9kIDY0NCAiUGFyc2VyLmJzIgorW3NuaXBdCisKK1RoZSBydWxlIElOU1RfRFlOQU1JQyByZW1vdmVzICcuYnMnIGZpbGUgd2hpY2ggYXJlIGdlbmVyYXRlZCBieSBCT09UU1RSQVAsIGJ1dAordGhlIGhhdmUgbm8gZGVwZW5kZW5jaWVzLCBzbyB0aGVyZSBpcyBhIHJhY2UgaXNzdWU6CisKK0JPT1RTVFJBUDoKKyAgICB0b3VjaCBmb28uYnMKKyAgICBjaG1vZCA3NTUgZm9vLmJzCisKK0lOU1RfRFlOQU1JQzoKKyAgICBybSAtZnIgZm9vLmJzCisKK1RoZSBlcnJvciB3b3VsZCBoYXBwZW4gd2hlbiBJTlNUX0RZTkFNSUMgcmVtb3ZlcyBmb28uYnMgYWZ0ZXIgQk9PVFNUUkFQIHRvdWNoZWQKK2l0IGJ1dCBiZWZvcmUgY2htb2Qgb24gaXQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9QZXJsLVRvb2xjaGFpbi1HYW5nL0V4dFV0aWxzLU1ha2VNYWtlci9jb21taXQvNDRlOTVlNzE3MzcyYWJlMmIwYTZlZTU1ZGU0YjY4Njc2MGI2NTM2MF0KKworTm90ZSwgVGhpcyBpcyBub3QgYSByZWFsIGJhY2twb3J0LCB1cHN0cmVhbSBoYXMgdG90YWxseSByZWZhY3RvcmVkIGl0IGluIG9uZQorcGF0Y2gsIHBsZWFzZSBzZWUgdGhlIGxpbmsgYWJvdmUsIGl0J3Mgbm90IGEgZ29vZCBpZGVhIHRvIGJhY2twb3J0IHN1Y2ggYSBiaWcKK3BhdGNoLCBJIGp1c3QgcmVmZXJyZWQgaXQgdG8gZml4IHRoZSBwcm9ibGVtIGluIGEgc2ltcGxlIHdheS4gSSBtYXJrIGl0IGFzCitiYWNrcG9ydCBpcyBiZWNhdXNlIHdlIGNhbiBkcm9wIHRoZSBwYXRjaCBhZnRlciB1cGdyYWRlIHBlcmwgdG8gNS4yNiBvciA1LjI4LgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbQoraW5kZXggOTVkOTc2MS4uOWNhYmUyZCAxMDA2NDQKKy0tLSBhL2NwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtCisrKysgYi9jcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbQorQEAgLTkzMyw3ICs5MzMsNyBAQCBPVEhFUkxERkxBR1MgPSAnLiRsZF9vcHQuJG90aGVybGRmbGFncy4nCisgSU5TVF9EWU5BTUlDX0RFUCA9ICcuJGluc3RfZHluYW1pY19kZXAuJworIElOU1RfRFlOQU1JQ19GSVggPSAnLiRsZF9maXguJworIAorLSQoSU5TVF9EWU5BTUlDKTogJChPQkpFQ1QpICQoTVlFWFRMSUIpICQoSU5TVF9BUkNIQVVUT0RJUikkKERGU0VQKS5leGlzdHMgJChFWFBPUlRfTElTVCkgJChQRVJMX0FSQ0hJVkVERVApICQoUEVSTF9BUkNISVZFX0FGVEVSKSAkKElOU1RfRFlOQU1JQ19ERVApCisrJChJTlNUX0RZTkFNSUMpOiAkKE9CSkVDVCkgJChNWUVYVExJQikgJChJTlNUX0FSQ0hBVVRPRElSKSQoREZTRVApLmV4aXN0cyAkKEVYUE9SVF9MSVNUKSAkKFBFUkxfQVJDSElWRURFUCkgJChQRVJMX0FSQ0hJVkVfQUZURVIpICQoSU5TVF9EWU5BTUlDX0RFUCkgJChCT09UU1RSQVApCisgJyk7CisgICAgIGlmICgkYXJtYXliZSBuZSAnOicpeworIAkkbGRmcm9tID0gJ3RtcCQoTElCX0VYVCknOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4MzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNTlmY2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODM3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3M2Q3MjQ3ZWNhYjg2M2VmMjZiNTY4N2EzN2NjYzc1ZDYxNDRhZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+Ci1EYXRlOiBUdWUsIDE3IE9jdCAyMDE3IDEzOjQ5OjE0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBDVkUtMjAxNy0xMjgzNwotCi1TaWduZWQtb2ZmLWJ5OiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIEhheSA8c3RldmUubS5oYXlAZ29vZ2xlbWFpbC5jb20+Ci0KLUNWRTogQ1ZFLTIwMTctMTI4MzcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvOTZjODNlZDc4YWVlYTFhMDQ5NmRkMmIyZDkzNTg2OWE4MjJkYzhhNQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSByZWdjb21wLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3JlZ2NvbXAuYyBiL3JlZ2NvbXAuYwotaW5kZXggNTQ5OGQxNC4uMzFlYzM4MyAxMDA2NDQKLS0tLSBhL3JlZ2NvbXAuYwotKysrIGIvcmVnY29tcC5jCi1AQCAtMTMwMjEsNiArMTMwMjEsNyBAQCBTX3JlZ2F0b20ocFRIWF8gUkV4Q19zdGF0ZV90ICpwUkV4Q19zdGF0ZSwgSTMyICpmbGFncCwgVTMyIGRlcHRoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGxvb3Bkb25lOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICBwID0gUkV4Q19wYXJzZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBSRXhDX3BhcnNlID0gcGFyc2Vfc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZGVyID4gMHhmZikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVFVSVJFX1VURjgoZmxhZ3ApOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLS0tIAotMS44LjMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTctMTI4ODMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMTgwNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE3LTEyODgzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA0MGIzY2RhZDM2NDkzMzQ1ODVjZWU4ZjQ2MzBlYzlhMDI1ZTYyYmU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+Ci1EYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDExOjMzOjU4IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFBBVENIOiBbcGVybCAjMTMxNTk4XQotCi1UaGUgY2F1c2Ugb2YgdGhpcyBpcyB0aGF0IHRoZSB2RkFJTCBtYWNybyB1c2VzIFJFeENfcGFyc2UsIGFuZCB0aGF0Ci12YXJpYWJsZSBoYXMganVzdCBiZWVuIGNoYW5nZWQgaW4gcHJlcGFyYXRpb24gZm9yIGNvZGUgYWZ0ZXIgdGhlIHZGQUlMLgotVGhlIHNvbHV0aW9uIGlzIHRvIG5vdCBjaGFuZ2UgUkV4Q19wYXJzZSB1bnRpbCBhZnRlciB0aGUgdkZBSUwuCi0KLVRoaXMgaXMgYSBjYXNlIHdoZXJlIHRoZSBtYWNybyBoaWRlcyBzdHVmZiB0aGF0IGNhbiBiaXRlIHlvdS4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMmJlNGVkZWRlNGFlMjI2ZTJlZWJkNGVmZjI4Y2VkZDIwNDFmMzAwZikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xMjgzMwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIHJlZ2NvbXAuYyB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IHBlcmwtNS4yNC4xL3JlZ2NvbXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHBlcmwtNS4yNC4xLm9yaWcvcmVnY29tcC5jCi0rKysgcGVybC01LjI0LjEvcmVnY29tcC5jCi1AQCAtMTE5MTgsMTQgKzExOTE4LDE2IEBAIFNfZ3Jva19ic2xhc2hfTihwVEhYXyBSRXhDX3N0YXRlX3QgKnBSRXgKLSAJfQotICAgICAgICAgc3ZfY2F0cHYoc3Vic3RpdHV0ZV9wYXJzZSwgIikiKTsKLSAKLS0gICAgICAgIFJFeENfcGFyc2UgPSBSRXhDX3N0YXJ0ID0gUkV4Q19hZGp1c3RlZF9zdGFydCA9IFN2UFYoc3Vic3RpdHV0ZV9wYXJzZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKLSsgICAgICAgIGxlbiA9IFN2Q1VSKHN1YnN0aXR1dGVfcGFyc2UpOwotIAotIAkvKiBEb24ndCBhbGxvdyBlbXB0eSBudW1iZXIgKi8KLSAJaWYgKGxlbiA8IChTVFJMRU4pIDgpIHsKLSAgICAgICAgICAgICBSRXhDX3BhcnNlID0gZW5kYnJhY2U7Ci0gCSAgICB2RkFJTCgiSW52YWxpZCBoZXhhZGVjaW1hbCBudW1iZXIgaW4gXFxOe1UrLi4ufSIpOwotIAl9Ci0rCi0rICAgICAgICBSRXhDX3BhcnNlID0gUkV4Q19zdGFydCA9IFJFeENfYWRqdXN0ZWRfc3RhcnQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBTdlBWX25vbGVuKHN1YnN0aXR1dGVfcGFyc2UpOwotIAlSRXhDX2VuZCA9IFJFeENfcGFyc2UgKyBsZW47Ci0gCi0gICAgICAgICAvKiBUaGUgdmFsdWVzIGFyZSBVbmljb2RlLCBhbmQgdGhlcmVmb3JlIG5vdCBzdWJqZWN0IHRvIHJlY29kaW5nLCBidXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NmViZDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL0NWRS0yMDE4LTY3OTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGFiZTFlNmM1NjhiOTZiY2IzODJkZmE0ZjYxYzU2ZDFhYjAwMWVhNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLYXJsIFdpbGxpYW1zb24gPGtod0BjcGFuLm9yZz4KLURhdGU6IEZyaSwgMiBGZWIgMjAxOCAxNToxNDoyNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSAocGVybCAjMTMyMjI3KSByZXN0YXJ0IGEgbm9kZSBpZiB3ZSBjaGFuZ2UgdG8gdW5pIHJ1bGVzCi0gd2l0aGluIHRoZSBub2RlIGFuZCBlbmNvdW50ZXIgYSBzaGFycCBTCi0KLVRoaXMgY291bGQgbGVhZCB0byBhIGJ1ZmZlciBvdmVyZmxvdy4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYTAyYzcwZTM1ZDEzMTNhNWY0ZTI0NWU4Zjg2M2M4MTBlOTkxMTcyZCkKLQotQ1ZFOiBDVkUtMjAxOC02Nzk3Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmL2FiZTFlNmM1NjhiOTZiY2IzODJkZmE0ZjYxYzU2ZDFhYjAwMWVhNTFdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHJlZ2NvbXAuYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9yZWdjb21wLmMgYi9yZWdjb21wLmMKLWluZGV4IDNiOTU1MGIxMGQuLmE3ZGVlOWEwOWUgMTAwNjQ0Ci0tLS0gYS9yZWdjb21wLmMKLSsrKyBiL3JlZ2NvbXAuYwotQEAgLTEzNTQzLDYgKzEzNTQzLDE4IEBAIFNfcmVnYXRvbShwVEhYXyBSRXhDX3N0YXRlX3QgKnBSRXhDX3N0YXRlLCBJMzIgKmZsYWdwLCBVMzIgZGVwdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICogL3UuICBUaGlzIGluY2x1ZGVzIHRoZSBtdWx0aS1jaGFyIGZvbGQgU0hBUlAgUyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAqICdzcycgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZW5kZXIgPT0gTEFUSU5fU01BTExfTEVUVEVSX1NIQVJQX1MpKSB7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBub2RlIHN0YXJ0ZWQgb3V0IGhhdmluZyB1bmkgcnVsZXMsIHdlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvdWxkbid0IGhhdmUgZ290dGVuIGhlcmUuICBTbyB0aGlzIG1lYW5zCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNvbWV0aGluZyBpbiB0aGUgbWlkZGxlIGhhcyBjaGFuZ2VkIGl0LCBidXQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZGlkbid0IHRoaW5rIGl0IG5lZWRlZCB0byByZXBhcnNlLiAgQnV0IHRoaXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2hhcnAgcyBub3cgZG9lcyBpbmRpY2F0ZSB0aGUgbmVlZCBmb3IKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVwYXJzaW5nLiAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUkV4Q191bmlfc2VtYW50aWNzKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gb2xkcDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gbG9vcGRvbmU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkV4Q19zZWVuX3VuZm9sZGVkX3NoYXJwX3MgPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXliZV9leGFjdGZ1ID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotLS0gCi0yLjE1LjEtNDI0LWc5NDc4YTY2MDgxMgotCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTgtNjc5OC0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDc3MTYyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotRnJvbSAwYWJmMWU4ZDg5YWVjZDMyZGJkYWJkYTVkYTRkNTJhMmQ1N2E3Y2ZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FybCBXaWxsaWFtc29uIDxraHdAY3Bhbi5vcmc+Ci1EYXRlOiBUdWUsIDYgRmViIDIwMTggMTQ6NTA6NDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gW3BlcmwgIzEzMjA2M106IEhlYXAgYnVmZmVyIG92ZXJmbG93Ci0KLVRoZSBwcm94aW1hbCBjYXVzZSBpcyBzZXZlcmFsIGluc3RhbmNlcyBpbiByZWdleGVjLmMgb2YgdGhlIGNvZGUKLWFzc3VtaW5nIHRoYXQgdGhlIGlucHV0IHdhcyB2YWxpZCBVVEYtOCwgd2hlcmVhcyB0aGUgaW5wdXQgd2FzIHRvbyBzaG9ydAotZm9yIHdoYXQgdGhlIHN0YXJ0IGJ5dGUgY2xhaW1lZCBpdCB3b3VsZCBiZS4KLQotSSBncmVwcGVkIHRocm91Z2ggdGhlIGNvcmUgZm9yIGFueSBvdGhlciBzaW1pbGFyIHVzZXMsIGFuZCBkaWQgbm90IGZpbmQKLWFueS4KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZmU3ZDhiYTBhMWJmNTY3YWY4ZmE4ZmVhMTI4ZTJiOWY0YzU1M2U4NCkKLQotQ1ZFOiBDVkUtMjAxOC02Nzk4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9wYXRjaC8wYWJmMWU4ZDg5YWVjZDMyZGJkYWJkYTVkYTRkNTJhMmQ1N2E3Y2ZmXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSByZWdleGVjLmMgICAgICAgICAgICAgIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSB0L2xpYi93YXJuaW5ncy9yZWdleGVjIHwgIDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9yZWdleGVjLmMgYi9yZWdleGVjLmMKLWluZGV4IDU3MzViOTk3ZmQuLmVhNDMyYzM5ZDMgMTAwNjQ0Ci0tLS0gYS9yZWdleGVjLmMKLSsrKyBiL3JlZ2V4ZWMuYwotQEAgLTE0NjYsNyArMTQ2Niw5IEBAIFBlcmxfcmVfaW50dWl0X3N0YXJ0KHBUSFhfCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdHJpZV91dGY4X2ZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICAgdHJpZV9sYXRpbl91dGY4X2ZvbGQpKSkKLSAKLS0jZGVmaW5lIFJFWEVDX1RSSUVfUkVBRF9DSEFSKHRyaWVfdHlwZSwgdHJpZSwgd2lkZWNoYXJtYXAsIHVjLCB1c2NhbiwgbGVuLCB1dmMsIGNoYXJpZCwgZm9sZGxlbiwgZm9sZGJ1ZiwgdW5pZmxhZ3MpIFwKLSsvKiAndXNjYW4nIGlzIHNldCB0byBmb2xkYnVmLCBhbmQgaW5jcmVtZW50ZWQsIHNvIGJlbG93IHRoZSBlbmQgb2YgdXNjYW4gaXMKLSsgKiAnZm9sZGJ1ZitzaXplb2YoZm9sZGJ1ZiknICovCi0rI2RlZmluZSBSRVhFQ19UUklFX1JFQURfQ0hBUih0cmllX3R5cGUsIHRyaWUsIHdpZGVjaGFybWFwLCB1YywgdWNfZW5kLCB1c2NhbiwgbGVuLCB1dmMsIGNoYXJpZCwgZm9sZGxlbiwgZm9sZGJ1ZiwgdW5pZmxhZ3MpIFwKLSBTVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIFNUUkxFTiBza2lwbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBVOCBmbGFncyA9IEZPTERfRkxBR1NfRlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xNDc0LDcgKzE0NzYsNyBAQCBTVE1UX1NUQVJUIHsKLSAgICAgY2FzZSB0cmllX2ZsdTg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBfQ0hFQ0tfQU5EX1dBUk5fUFJPQkxFTUFUSUNfTE9DQUxFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgaWYgKHV0ZjhfdGFyZ2V0ICYmIFVURjhfSVNfQUJPVkVfTEFUSU4xKCp1YykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICBfQ0hFQ0tfQU5EX09VVFBVVF9XSURFX0xPQ0FMRV9VVEY4X01TRyh1YywgdWMgKyBVVEY4U0tJUCh1YykpOyAgICAgICAgICBcCi0rICAgICAgICAgICAgX0NIRUNLX0FORF9PVVRQVVRfV0lERV9MT0NBTEVfVVRGOF9NU0codWMsIHVjX2VuZCAtIHVjKTsgICAgICAgICAgICAgICAgXAotICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGdvdG8gZG9fdHJpZV91dGY4X2ZvbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGNhc2UgdHJpZV91dGY4X2V4YWN0ZmFfZm9sZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTE0ODMsNyArMTQ4NSw3IEBAIFNUTVRfU1RBUlQgewotICAgICBjYXNlIHRyaWVfdXRmOF9mb2xkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICBkb190cmllX3V0ZjhfZm9sZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICBpZiAoIGZvbGRsZW4+MCApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKCAoY29uc3QgVTgqKSB1c2NhbiwgVVRGOF9NQVhMRU4sICZsZW4sIHVuaWZsYWdzICk7IFwKLSsgICAgICAgICAgICB1dmMgPSB1dGY4bl90b191dmNociggKGNvbnN0IFU4KikgdXNjYW4sIGZvbGRsZW4sICZsZW4sIHVuaWZsYWdzICk7ICAgICBcCi0gICAgICAgICAgICAgZm9sZGxlbiAtPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIHVzY2FuICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBsZW49MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTUwMCw3ICsxNTAyLDcgQEAgU1RNVF9TVEFSVCB7Ci0gICAgICAgICAvKiBGQUxMVEhST1VHSCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBjYXNlIHRyaWVfbGF0aW5fdXRmOF9mb2xkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgIGlmICggZm9sZGxlbj4wICkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgdXZjID0gdXRmOG5fdG9fdXZjaHIoIChjb25zdCBVOCopIHVzY2FuLCBVVEY4X01BWExFTiwgJmxlbiwgdW5pZmxhZ3MgKTsgXAotKyAgICAgICAgICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKCAoY29uc3QgVTgqKSB1c2NhbiwgZm9sZGxlbiwgJmxlbiwgdW5pZmxhZ3MgKTsgICAgIFwKLSAgICAgICAgICAgICBmb2xkbGVuIC09IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgdXNjYW4gKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGxlbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xNTE5LDcgKzE1MjEsNyBAQCBTVE1UX1NUQVJUIHsKLSAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAvKiBGQUxMVEhST1VHSCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBjYXNlIHRyaWVfdXRmODogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHV2YyA9IHV0ZjhuX3RvX3V2Y2hyKCAoY29uc3QgVTgqKSB1YywgVVRGOF9NQVhMRU4sICZsZW4sIHVuaWZsYWdzICk7ICAgICAgICBcCi0rICAgICAgICB1dmMgPSB1dGY4bl90b191dmNociggKGNvbnN0IFU4KikgdWMsIHVjX2VuZCAtIHVjLCAmbGVuLCB1bmlmbGFncyApOyAgICAgICAgXAotICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgY2FzZSB0cmllX3BsYWluOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICB1dmMgPSAoVVYpKnVjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTI1OTksMTAgKzI2MDEsMTAgQEAgU19maW5kX2J5Y2xhc3MocFRIWF8gcmVnZXhwICogcHJvZywgY29uc3QgcmVnbm9kZSAqYywgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIHBvaW50c1twb2ludHBvcysrICUgbWF4bGVuXT0gdWM7Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGxlbiB8fCB1YyA8IChVOCopc3RyZW5kKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgUkVYRUNfVFJJRV9SRUFEX0NIQVIodHJpZV90eXBlLCB0cmllLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkZWNoYXJtYXAsIHVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNjYW4sIGxlbiwgdXZjLCBjaGFyaWQsIGZvbGRsZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkYnVmLCB1bmlmbGFncyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgUkVYRUNfVFJJRV9SRUFEX0NIQVIodHJpZV90eXBlLCB0cmllLCB3aWRlY2hhcm1hcCwgdWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU4ICopIHN0cmVuZCwgdXNjYW4sIGxlbiwgdXZjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJpZCwgZm9sZGxlbiwgZm9sZGJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlmbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdfVFJJRV9FWEVDVVRFX3IoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2V4ZWNfcG9zKCAoY2hhciAqKXVjLCBjLCBzdHJlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxfc3RhcnQsIHMsIHV0ZjhfdGFyZ2V0LCAwKTsKLUBAIC01NTExLDggKzU1MTMsOSBAQCBTX3JlZ21hdGNoKHBUSFhfIHJlZ21hdGNoX2luZm8gKnJlZ2luZm8sIGNoYXIgKnN0YXJ0cG9zLCByZWdub2RlICpwcm9nKQotIAkJICAgIGlmICggYmFzZSAmJiAoZm9sZGxlbiB8fCB1YyA8IChVOCopKHJlZ2luZm8tPnN0cmVuZCkpKSB7Ci0gCQkJSTMyIG9mZnNldDsKLSAJCQlSRVhFQ19UUklFX1JFQURfQ0hBUih0cmllX3R5cGUsIHRyaWUsIHdpZGVjaGFybWFwLCB1YywKLS0JCQkJCSAgICAgdXNjYW4sIGxlbiwgdXZjLCBjaGFyaWQsIGZvbGRsZW4sCi0tCQkJCQkgICAgIGZvbGRidWYsIHVuaWZsYWdzKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTggKikgcmVnaW5mby0+c3RyZW5kLCB1c2NhbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sIHV2YywgY2hhcmlkLCBmb2xkbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRidWYsIHVuaWZsYWdzKTsKLSAJCQljaGFyY291bnQrKzsKLSAJCQlpZiAoZm9sZGxlbj4wKQotIAkJCSAgICBTVC5sb25nZm9sZCA9IFRSVUU7Ci1AQCAtNTY0Miw4ICs1NjQ1LDggQEAgU19yZWdtYXRjaChwVEhYXyByZWdtYXRjaF9pbmZvICpyZWdpbmZvLCBjaGFyICpzdGFydHBvcywgcmVnbm9kZSAqcHJvZykKLSAJCQl3aGlsZSAoZm9sZGxlbikgewotIAkJCSAgICBpZiAoIS0tY2hhcnMpCi0gCQkJCWJyZWFrOwotLQkJCSAgICB1dmMgPSB1dGY4bl90b191dmNocih1c2NhbiwgVVRGOF9NQVhMRU4sICZsZW4sCi0tCQkJCQkgICAgdW5pZmxhZ3MpOwotKwkJCSAgICB1dmMgPSB1dGY4bl90b191dmNocih1c2NhbiwgZm9sZGxlbiwgJmxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZmxhZ3MpOwotIAkJCSAgICB1c2NhbiArPSBsZW47Ci0gCQkJICAgIGZvbGRsZW4gLT0gbGVuOwotIAkJCX0KLWRpZmYgLS1naXQgYS90L2xpYi93YXJuaW5ncy9yZWdleGVjIGIvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotaW5kZXggOTAwZGQ2ZWU3Zi4uNjYzNTE0MmRlYSAxMDA2NDQKLS0tLSBhL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMKLSsrKyBiL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMKLUBAIC0yNjAsMyArMjYwLDEwIEBAIHNldGxvY2FsZSgmUE9TSVg6OkxDX0NUWVBFLCAkdXRmOF9sb2NhbGUpOwotICJrIiA9fiAvKD9bIFxOe0tFTFZJTiBTSUdOfSBdKS9pOwotICI6IiA9fiAvKD9bIFw6IF0pLzsKLSBFWFBFQ1QKLSsjIyMjIyMjIwotKyMgTkFNRSBwZXJsICMxMzIwNjMsIHJlYWQgYmV5b25kIGJ1ZmZlciBlbmQKLSsjIE9QVElPTiBmYXRhbAotKyJceGZmIiA9fiAvKD9pbClceHsxMDB9fFx4ezEwMH0vOwotK0VYUEVDVAotK01hbGZvcm1lZCBVVEYtOCBjaGFyYWN0ZXI6IFx4ZmYgKHRvbyBzaG9ydDsgMSBieXRlIGF2YWlsYWJsZSwgbmVlZCAxMykgaW4gcGF0dGVybiBtYXRjaCAobS8vKSBhdCAtIGxpbmUgMi4KLStNYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVyIChmYXRhbCkgYXQgLSBsaW5lIDIuCi0tLSAKLTIuMTUuMS00MjQtZzk0NzhhNjYwODEyCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTgtNjc5OC0yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjliNDFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02Nzk4LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGY2NWRhMWNhMmVlZTc0Njk2ZDljMTIwZTlkNjlhZjM3YjRmYTE5MjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUb255IENvb2sgPHRvbnlAZGV2ZWxvcC1oZWxwLmNvbT4KLURhdGU6IE1vbiwgMTkgRmViIDIwMTggMTU6MTE6NDIgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gKHBlcmwgIzEzMjA2Mykgd2Ugc2hvdWxkIG5vIGxvbmdlciB3YXJuIGZvciB0aGlzIGNvZGUKLQotVGhlIGZpcnN0IHBhdGNoIGZvciAxMzIwNjMgcHJldmVudGVkIHRoZSBidWZmZXIgcmVhZCBvdmVyZmxvdyB3aGVuCi1kdW1waW5nIHRoZSB3YXJuaW5nIGJ1dCBkaWRuJ3QgZml4IHRoZSB1bmRlcmx5aW5nIHByb2JsZW0uCi0KLVRoZSBuZXh0IGNoYW5nZSB0cmVhdHMgdGhlIHN1cHBsaWVkIGJ1ZmZlciBjb3JyZWN0bHksIHByZXZlbnRpbmcgdGhlCi1ub24tVVRGLTggU1YgZnJvbSBiZWluZyB0cmVhdGVkIGFzIFVURi04LCBwcmV2ZW50aW5nIHRoZSB3YXJuaW5nLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAxZThiNjE0ODhmMTk1ZTEzOTZhYTgwMWM2ODUzNDBiMTU2MTA0ZjRmKQotCi1DVkU6IENWRS0yMDE4LTY3OTgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvZjY1ZGExY2EyZWVlNzQ2OTZkOWMxMjBlOWQ2OWFmMzdiNGZhMTkyMF0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gdC9saWIvd2FybmluZ3MvcmVnZXhlYyB8IDMgLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90L2xpYi93YXJuaW5ncy9yZWdleGVjIGIvdC9saWIvd2FybmluZ3MvcmVnZXhlYwotaW5kZXggNjYzNTE0MmRlYS4uYzM3MGRkYzNjNyAxMDA2NDQKLS0tLSBhL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMKLSsrKyBiL3QvbGliL3dhcm5pbmdzL3JlZ2V4ZWMKLUBAIC0yNjIsOCArMjYyLDUgQEAgc2V0bG9jYWxlKCZQT1NJWDo6TENfQ1RZUEUsICR1dGY4X2xvY2FsZSk7Ci0gRVhQRUNUCi0gIyMjIyMjIyMKLSAjIE5BTUUgcGVybCAjMTMyMDYzLCByZWFkIGJleW9uZCBidWZmZXIgZW5kCi0tIyBPUFRJT04gZmF0YWwKLSAiXHhmZiIgPX4gLyg/aWwpXHh7MTAwfXxceHsxMDB9LzsKLSBFWFBFQ1QKLS1NYWxmb3JtZWQgVVRGLTggY2hhcmFjdGVyOiBceGZmICh0b28gc2hvcnQ7IDEgYnl0ZSBhdmFpbGFibGUsIG5lZWQgMTMpIGluIHBhdHRlcm4gbWF0Y2ggKG0vLykgYXQgLSBsaW5lIDIuCi0tTWFsZm9ybWVkIFVURi04IGNoYXJhY3RlciAoZmF0YWwpIGF0IC0gbGluZSAyLgotLS0gCi0yLjE1LjEtNDI0LWc5NDc4YTY2MDgxMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvQ1ZFLTIwMTgtNjkxMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02OTEzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTdhZjdiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9DVkUtMjAxOC02OTEzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLUZyb20gZjE3ZmVkNTAwNjE3N2RjZThhYzQ4MjI5YzQyNGEyZGEwZDZiYTQ5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbnkgQ29vayA8dG9ueUBkZXZlbG9wLWhlbHAuY29tPgotRGF0ZTogVHVlLCA4IEF1ZyAyMDE3IDA5OjMyOjU4ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIChwZXJsICMxMzE4NDQpIGZpeCB2YXJpb3VzIHNwYWNlIGNhbGN1bGF0aW9uIGlzc3VlcyBpbgotIHBwX3BhY2suYwotCi0tIGZvciB0aGUgb3JpZ2luYWxseSByZXBvcnRlZCBjYXNlLCBpZiB0aGUgc3RhcnQvY3VyIHBvaW50ZXIgaXMgaW4gdGhlCi0gIHRvcCA3NSUgb2YgdGhlIGFkZHJlc3Mgc3BhY2UgdGhlIGFkZCAoY3VyKSArIGdsZW4gYWRkaXRpb24gd291bGQKLSAgb3ZlcmZsb3csIHJlc3VsdGluZyBpbiB0aGUgY29uZGl0aW9uIGZhaWxpbmcgaW5jb3JyZWN0bHkuCi0KLS0gdGhlIGFkZGl0aW9uIG9mIHRoZSBleGlzdGluZyBzcGFjZSB1c2VkIHRvIHRoZSBzcGFjZSBuZWVkZWQgY291bGQKLSAgb3ZlcmZsb3csIHJlc3VsdGluZyBpbiB0b28gc21hbGwgYW4gYWxsb2NhdGlvbiBhbmQgYSBidWZmZXIgb3ZlcmZsb3cuCi0KLS0gdGhlIHNjYWxpbmcgZm9yIFVURjggY291bGQgb3ZlcmZsb3cuCi0KLS0gdGhlIG11bHRpcGx5IHRvIGNhbGN1bGF0ZSB0aGUgc3BhY2UgbmVlZGVkIGZvciBtYW55IGl0ZW1zIGNvdWxkCi0gIG92ZXJmbG93LgotCi1Gb3IgdGhlIGZpcnN0IGNhc2UsIGRvIGEgc3BhY2UgY2FsY3VsYXRpb24gd2l0aG91dCBtYWtpbmcgbmV3IHBvaW50ZXJzLgotCi1Gb3IgdGhlIG90aGVyIGNhc2VzLCBkZXRlY3QgdGhlIG92ZXJmbG93IGFuZCBjcm9hayBpZiB0aGVyZSdzIGFuCi1vdmVyZmxvdy4KLQotT3JpZ2luYWxseSB0aGlzIHVzZWQgU2l6ZV90X01BWCBhcyB0aGUgbWF4aW11bSBzaXplIG9mIGEgbWVtb3J5Ci1hbGxvY2F0aW9uLCBidXQgZm9yIC1EREVCVUdHSU5HIGJ1aWxkcyByZWFsbG9jKCkgdGhyb3dzIGEgcGFuaWMgZm9yCi1hbGxvY2F0aW9ucyBvdmVyIGhhbGYgdGhlIGFkZHJlc3Mgc3BhY2UgaW4gc2l6ZSwgY2hhbmdpbmcgdGhlIGVycm9yCi1yZXBvcnRlZCBmb3IgdGhlIGFsbG9jYXRpb24uCi0KLUZvciBub24tREVCVUdHSU5HIGJ1aWxkcyB0aGUgU2l6ZV90X01BWCBsaW1pdCBoYXMgdGhlIHNtYWxsIGNoYW5jZQotb2YgZmluZGluZyBhIHN5c3RlbSB0aGF0IGhhcyAzR0Igb2YgY29udGlndW91cyBzcGFjZSBhdmFpbGFibGUsIGFuZAotYWxsb2NhdGluZyB0aGF0IHNwYWNlLCB3aGljaCBjb3VsZCBiZSBhIGRlbmlhbCBvZiBzZXJ2Y2UgaW4gc29tZSBjYXNlcy4KLQotVW5mb3J0dW5hdGVseSBjaGFuZ2luZyB0aGUgbGltaXQgdG8gaGFsZiB0aGUgYWRkcmVzcyBzcGFjZSBtZWFucyB0aGF0Ci10aGUgZXhhY3QgY2FzZSB3aXRoIHRoZSBvcmlnaW5hbCBpc3N1ZSBjYW4gbm8gbG9uZ2VyIG9jY3VyLCBzbyB0aGUKLXRlc3QgaXMgbm8gbG9uZ2VyIHRlc3RpbmcgYWdhaW5zdCB0aGUgYWRkcmVzcyArIGxlbmd0aCBpc3N1ZSB0aGF0Ci1jYXVzZWQgdGhlIG9yaWdpbmFsIHByb2JsZW0sIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGlzIGZhaWxpbmcgZWFybGllci4KLQotT25lIG9wdGlvbiB3b3VsZCBiZSB0byBjaGFuZ2UgdGhlIHRlc3Qgc28gdGhlIHNpemUgcmVxdWVzdCBieSBwYWNrIGlzCi1qdXN0IHVuZGVyIDJHQiwgYnV0IHRoaXMgaGFzIGEgaGlnaGVyIChidXQgc3RpbGwgbG93KSBwcm9iYWJpbGl0eSB0aGF0Ci10aGUgc3lzdGVtIGhhcyB0aGUgYWRkcmVzcyBzcGFjZSBhdmFpbGFibGUsIGFuZCB3aWxsIGFjdHVhbGx5IHRyeSB0bwotYWxsb2NhdGUgdGhlIG1lbW9yeSwgc28gbGV0J3Mgbm90IGRvIHRoYXQuCi0KLU5vdGU6IGNoYW5nZWQgCi1wbGFuIHRlc3RzID0+IDE0NzEzOwotdG8gCi1wbGFuIHRlc3RzID0+IDE0NzEyOwotaW4gYS90L29wL3BhY2sudAotdG8gYXBwbHkgdGhpcyBwYXRjaCBvbiBwZXJsIDUuMjQuMS4KLQotQ1ZFOiBDVkUtMjAxOC02OTEzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Blcmw1LmdpdC5wZXJsLm9yZy9wZXJsLmdpdC9jb21taXRkaWZmL2YxN2ZlZDUwMDYxNzdkY2U4YWM0ODIyOWM0MjRhMmRhMGQ2YmE0OTJdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHBwX3BhY2suYyAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrLS0tLQotIHQvb3AvcGFjay50IHwgMjQgKysrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHBfcGFjay5jIGIvcHBfcGFjay5jCi1pbmRleCA4OTM3ZDZkNzE1Li41ZTljYzY0MzAxIDEwMDY0NAotLS0tIGEvcHBfcGFjay5jCi0rKysgYi9wcF9wYWNrLmMKLUBAIC0zNTcsMTEgKzM1NywyOCBAQCBTVE1UX1NUQVJUIHsJCQkJCQkJXAotICAgICB9CQkJCQkJCQlcCi0gfSBTVE1UX0VORAotIAotKyNkZWZpbmUgU0FGRV9VVEY4X0VYUEFORCh2YXIpCVwKLStTVE1UX1NUQVJUIHsJCQkJXAotKyAgICBpZiAoKHZhcikgPiBTU2l6ZV90X01BWCAvIFVURjhfRVhQQU5EKSBcCi0rICAgICAgICBQZXJsX2Nyb2FrKGFUSFhfICIlcyIsICJPdXQgb2YgbWVtb3J5IGR1cmluZyBwYWNrKCkiKTsgXAotKyAgICAodmFyKSA9ICh2YXIpICogVVRGOF9FWFBBTkQ7IFwKLSt9IFNUTVRfRU5ECi0rCi0rI2RlZmluZSBHUk9XSU5HMih1dGY4LCBjYXQsIHN0YXJ0LCBjdXIsIGl0ZW1fc2l6ZSwgaXRlbV9jb3VudCkJXAotK1NUTVRfU1RBUlQgewkJCQkJCQlcCi0rICAgIGlmIChTU2l6ZV90X01BWCAvIChpdGVtX3NpemUpIDwgKGl0ZW1fY291bnQpKQkJXAotKyAgICAgICAgUGVybF9jcm9hayhhVEhYXyAiJXMiLCAiT3V0IG9mIG1lbW9yeSBkdXJpbmcgcGFjaygpIik7CVwKLSsgICAgR1JPV0lORygodXRmOCksIChjYXQpLCAoc3RhcnQpLCAoY3VyKSwgKGl0ZW1fc2l6ZSkgKiAoaXRlbV9jb3VudCkpOyBcCi0rfSBTVE1UX0VORAotKwotICNkZWZpbmUgR1JPV0lORyh1dGY4LCBjYXQsIHN0YXJ0LCBjdXIsIGluX2xlbikJXAotIFNUTVRfU1RBUlQgewkJCQkJXAotICAgICBTVFJMRU4gZ2xlbiA9IChpbl9sZW4pOwkJCVwKLS0gICAgaWYgKHV0ZjgpIGdsZW4gKj0gVVRGOF9FWFBBTkQ7CQlcCi0tICAgIGlmICgoY3VyKSArIGdsZW4gPj0gKHN0YXJ0KSArIFN2TEVOKGNhdCkpIHsJXAotKyAgICBTVFJMRU4gY2F0Y3VyID0gKFNUUkxFTikoKGN1cikgLSAoc3RhcnQpKTsJXAotKyAgICBpZiAodXRmOCkgU0FGRV9VVEY4X0VYUEFORChnbGVuKTsJCVwKLSsgICAgaWYgKFNTaXplX3RfTUFYIC0gZ2xlbiA8IGNhdGN1cikJCVwKLSsgICAgICAgIFBlcmxfY3JvYWsoYVRIWF8gIiVzIiwgIk91dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2soKSIpOyBcCi0rICAgIGlmIChjYXRjdXIgKyBnbGVuID49IFN2TEVOKGNhdCkpIHsJXAotIAkoc3RhcnQpID0gc3ZfZXhwX2dyb3coY2F0LCBnbGVuKTsJXAotIAkoY3VyKSA9IChzdGFydCkgKyBTdkNVUihjYXQpOwkJXAotICAgICB9CQkJCQkJXAotQEAgLTM3Miw3ICszODksNyBAQCBTVE1UX1NUQVJUIHsJCQkJCVwKLSBTVE1UX1NUQVJUIHsJCQkJCVwKLSAgICAgY29uc3QgU1RSTEVOIGdsZW4gPSAoaW5fbGVuKTsJCVwKLSAgICAgU1RSTEVOIGdsID0gZ2xlbjsJCQkJXAotLSAgICBpZiAodXRmOCkgZ2wgKj0gVVRGOF9FWFBBTkQ7CQlcCi0rICAgIGlmICh1dGY4KSBTQUZFX1VURjhfRVhQQU5EKGdsKTsJCVwKLSAgICAgaWYgKChjdXIpICsgZ2wgPj0gKHN0YXJ0KSArIFN2TEVOKGNhdCkpIHsJXAotICAgICAgICAgKmN1ciA9ICdcMCc7CQkJCVwKLSAgICAgICAgIFN2Q1VSX3NldCgoY2F0KSwgKGN1cikgLSAoc3RhcnQpKTsJXAotQEAgLTIxMjYsNyArMjE0Myw3IEBAIFNfcGFja19yZWMocFRIWF8gU1YgKmNhdCwgdGVtcHN5bV90KiBzeW0KLSAJICAgIGlmIChwcm9wcyAmJiAhKHByb3BzICYgUEFDS19TSVpFX1VOUFJFRElDVEFCTEUpKSB7Ci0gCQkvKiBXZSBjYW4gcHJvY2VzcyB0aGlzIGxldHRlci4gKi8KLSAJCVNUUkxFTiBzaXplID0gcHJvcHMgJiBQQUNLX1NJWkVfTUFTSzsKLS0JCUdST1dJTkcodXRmOCwgY2F0LCBzdGFydCwgY3VyLCAoU1RSTEVOKSBsZW4gKiBzaXplKTsKLSsJCUdST1dJTkcyKHV0ZjgsIGNhdCwgc3RhcnQsIGN1ciwgc2l6ZSwgKFNUUkxFTilsZW4pOwotIAkgICAgfQotICAgICAgICAgfQotIAotZGlmZiAtLWdpdCBhL3Qvb3AvcGFjay50IGIvdC9vcC9wYWNrLnQKLWluZGV4IDY2NGFhYWYxYjAuLmNmMGUyODY1MDkgMTAwNjQ0Ci0tLS0gYS90L29wL3BhY2sudAotKysrIGIvdC9vcC9wYWNrLnQKLUBAIC0xMiw3ICsxMiw3IEBAIG15ICRub19lbmRpYW5uZXNzID0gJF0gPiA1LjAwOSA/ICcnIDoKLSBteSAkbm9fc2lnbmVkbmVzcyA9ICRdID4gNS4wMDkgPyAnJyA6Ci0gICAiU2lnbmVkL3Vuc2lnbmVkIHBhY2sgbW9kaWZpZXJzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwZXJsIjsKLSAKLS1wbGFuIHRlc3RzID0+IDE0NzEyOwotK3BsYW4gdGVzdHMgPT4gMTQ3MTc7Ci0gCi0gdXNlIHN0cmljdDsKLSB1c2Ugd2FybmluZ3MgcXcoRkFUQUwgYWxsKTsKLUBAIC0yMDQ0LDMgKzIwNDQsMjUgQEAgb2soMSwgImFyZ3VtZW50IHVuZGVyZmxvdyBkaWQgbm90IGNyYXNoIgotICAgICBpcyhwYWNrKCJINDAiLCAkdXBfbnVsKSwgJHR3ZW50eV9udWxzLAotICAgICAgICAiY2hlY2sgcGFjayBIIHplcm8gZmlsbHMgKHV0Zjggc291cmNlKSIpOwotIH0KLSsKLStTS0lQOgotK3sKLSsgICMgW3BlcmwgIzEzMTg0NF0gcG9pbnRlciBhZGRpdGlvbiBvdmVyZmxvdwotKyAgICAkQ29uZmlne3B0cnNpemV9ID09IDQKLSsgICAgICBvciBza2lwICJbcGVybCAjMTMxODQ0XSBuZWVkIDMyLWJpdCBidWlsZCBmb3IgdGhpcyB0ZXN0IiwgNDsKLSsgICAgIyBwcmV2ZW50IEFTQU4ganVzdCBjcmFzaGluZyBvbiB0aGUgYWxsb2NhdGlvbiBmYWlsdXJlCi0rICAgIGxvY2FsICRFTlZ7QVNBTl9PUFRJT05TfSA9ICRFTlZ7QVNBTl9PUFRJT05TfTsKLSsgICAgJEVOVntBU0FOX09QVElPTlN9IC49ICIsYWxsb2NhdG9yX21heV9yZXR1cm5fbnVsbD0xIjsKLSsgICAgZnJlc2hfcGVybF9saWtlKCdwYWNrICJmOTk5OTk5OTk5IicsIHFyL091dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2svLCB7IHN0ZGVyciA9PiAxIH0sCi0rCQkgICAgInBvaW50ZXIgYWRkaXRpb24gb3ZlcmZsb3ciKTsKLSsKLSsgICAgIyBpbnRlZ2VyIChTVFJMRU4pIG92ZXJmbG93IGZyb20gYWRkaXRpb24gb2YgZ2xlbiB0byBjdXJyZW50IGxlbmd0aAotKyAgICBmcmVzaF9wZXJsX2xpa2UoJ3BhY2sgImMxMGYxMDczNzQxODIzIicsIHFyL091dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2svLCB7IHN0ZGVyciA9PiAxIH0sCi0rCQkgICAgImludGVnZXIgb3ZlcmZsb3cgY2FsY3VsYXRpbmcgYWxsb2NhdGlvbiAoYWRkaXRpb24pIik7Ci0rCi0rICAgIGZyZXNoX3BlcmxfbGlrZSgncGFjayAiVzEwZjUzNjg3MDkxMyIsIDI1NicsIHFyL091dCBvZiBtZW1vcnkgZHVyaW5nIHBhY2svLCB7IHN0ZGVyciA9PiAxIH0sCi0rCQkgICAgImludGVnZXIgb3ZlcmZsb3cgY2FsY3VsYXRpbmcgYWxsb2NhdGlvbiAodXRmOCkiKTsKLSsKLSsgICAgZnJlc2hfcGVybF9saWtlKCdwYWNrICJjMTBmMTA3Mzc0MTgyNCInLCBxci9PdXQgb2YgbWVtb3J5IGR1cmluZyBwYWNrLywgeyBzdGRlcnIgPT4gMSB9LAotKwkJICAgICJpbnRlZ2VyIG92ZXJmbG93IGNhbGN1bGF0aW5nIGFsbG9jYXRpb24gKG11bHRpcGx5KSIpOwotK30KLS0tIAotMi4xNS4xLTQyNC1nOTQ3OGE2NjA4MTIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL01ha2VmaWxlLlNILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL01ha2VmaWxlLlNILnBhdGNoCmluZGV4IGMxZGIzMzUuLmU0YzM0MjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9NYWtlZmlsZS5TSC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvTWFrZWZpbGUuU0gucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogIE1ha2VmaWxlLlNIIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA2OCBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHBlcmwtNS4yNC4xL01ha2VmaWxlLlNICitJbmRleDogcGVybC01LjI0LjQvTWFrZWZpbGUuU0gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMjQuMS5vcmlnL01ha2VmaWxlLlNICi0rKysgcGVybC01LjI0LjEvTWFrZWZpbGUuU0gKKy0tLSBwZXJsLTUuMjQuNC5vcmlnL01ha2VmaWxlLlNICisrKysgcGVybC01LjI0LjQvTWFrZWZpbGUuU0gKIEBAIC00OCwxMCArNDgsMTAgQEAgY2FzZSAiJHVzZXNocnBsaWIiIGluCiAgdHJ1ZSkKICAJIyBQcmVmaXggYWxsIHJ1bnMgb2YgJ21pbmlwZXJsJyBhbmQgJ3BlcmwnIHdpdGgKQEAgLTI3MSw5ICsyNzEsOSBAQAogIAkkKE1JTklQRVJMKSBhdXRvZG9jLnBsCiAgCiAgcG9kL3Blcmxtb2RsaWIucG9kOiAkKE1JTklQRVJMX0VYRSkgcG9kL3Blcmxtb2RsaWIuUEwgTUFOSUZFU1QKLUBAIC0xMDg5LDcgKzEwOTksNyBAQCBwb2QvcGVybDUyNDFkZWx0YS5wb2Q6IHBvZC9wZXJsZGVsdGEucG9kCi0gCSQoUk1TKSBwb2QvcGVybDUyNDFkZWx0YS5wb2QKLSAJJChMTlMpIHBlcmxkZWx0YS5wb2QgcG9kL3Blcmw1MjQxZGVsdGEucG9kCitAQCAtMTA4OSw3ICsxMDk5LDcgQEAgcG9kL3Blcmw1MjQ0ZGVsdGEucG9kOiBwb2QvcGVybGRlbHRhLnBvZAorIAkkKFJNUykgcG9kL3Blcmw1MjQ0ZGVsdGEucG9kCisgCSQoTE5TKSBwZXJsZGVsdGEucG9kIHBvZC9wZXJsNTI0NGRlbHRhLnBvZAogIAogLWV4dHJhLnBvZHM6ICQoTUlOSVBFUkxfRVhFKQogK2V4dHJhLnBvZHM6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2NvbmZpZy5zaAppbmRleCBhYzA0ODRjLi5iMWI1ODM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvY29uZmlnLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9jb25maWcuc2gKQEAgLTE0LDcgKzE0LDcgQEAKIAogOiBDb25maWd1cmUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KIGNvbmZpZ19hcmcwPSdDb25maWd1cmUnCi1jb25maWdfYXJncz0nLWRlcyAtRG9wdGltaXplPS1PMiAtRG15aG9zdG5hbWU9bG9jYWxob3N0IC1EcGVybGFkbWluPXJvb3RAbG9jYWxob3N0IC1EY2M9Z2NjIC1EY2ZfYnk9T3BlbiBFbWJlZGRlZCAtRGluc3RhbGxwcmVmaXg9QEVYRUNQUkVGSVhAIC1EcHJlZml4PUBFWEVDUFJFRklYQCAtRHZlbmRvcnByZWZpeD1ARVhFQ1BSRUZJWEAgLURzaXRlcHJlZml4PUBFWEVDUFJFRklYQCAtRG90aGVybGliZGlycz1ATElCRElSQC9wZXJsLzUuMjQuMSAtRHVzZXNocnBsaWIgLUR1c2V0aHJlYWRzIC1EdXNlaXRocmVhZHMgLUR1c2VsYXJnZWZpbGVzIC1VZF9kb3N1aWQgLURkX3NlbWN0bF9zZW11biAtVWlfZGIgLVVpX25kYm0gLVVpX2dkYm0gLURpX3NoYWRvdyAtRGlfc3lzbG9nIC1EbWFuM2V4dD0zcG0gLUR1c2VwZXJsaW8gLURpbnN0YWxsdXNyYmlucGVybCAtVWJpbmNvbXBhdDUwMDUgLVV2ZXJzaW9ub25seSAtRHBhZ2VyPUBVU1JCSU5AL2xlc3MgLWlzcicKK2NvbmZpZ19hcmdzPSctZGVzIC1Eb3B0aW1pemU9LU8yIC1EbXlob3N0bmFtZT1sb2NhbGhvc3QgLURwZXJsYWRtaW49cm9vdEBsb2NhbGhvc3QgLURjYz1nY2MgLURjZl9ieT1PcGVuIEVtYmVkZGVkIC1EaW5zdGFsbHByZWZpeD1ARVhFQ1BSRUZJWEAgLURwcmVmaXg9QEVYRUNQUkVGSVhAIC1EdmVuZG9ycHJlZml4PUBFWEVDUFJFRklYQCAtRHNpdGVwcmVmaXg9QEVYRUNQUkVGSVhAIC1Eb3RoZXJsaWJkaXJzPUBMSUJESVJAL3BlcmwvNS4yNC40IC1EdXNlc2hycGxpYiAtRHVzZXRocmVhZHMgLUR1c2VpdGhyZWFkcyAtRHVzZWxhcmdlZmlsZXMgLVVkX2Rvc3VpZCAtRGRfc2VtY3RsX3NlbXVuIC1VaV9kYiAtVWlfbmRibSAtVWlfZ2RibSAtRGlfc2hhZG93IC1EaV9zeXNsb2cgLURtYW4zZXh0PTNwbSAtRHVzZXBlcmxpbyAtRGluc3RhbGx1c3JiaW5wZXJsIC1VYmluY29tcGF0NTAwNSAtVXZlcnNpb25vbmx5IC1EcGFnZXI9QFVTUkJJTkAvbGVzcyAtaXNyJwogY29uZmlnX2FyZ2M9MjgKIGNvbmZpZ19hcmcxPSctZGVzJwogY29uZmlnX2FyZzI9Jy1Eb3B0aW1pemU9LU8yJwpAQCAtMjYsNyArMjYsNyBAQAogY29uZmlnX2FyZzg9Jy1EcHJlZml4PUBFWEVDUFJFRklYQCcKIGNvbmZpZ19hcmc5PSctRHZlbmRvcnByZWZpeD1ARVhFQ1BSRUZJWEAnCiBjb25maWdfYXJnMTA9Jy1Ec2l0ZXByZWZpeD1ARVhFQ1BSRUZJWEAnCi1jb25maWdfYXJnMTE9Jy1Eb3RoZXJsaWJkaXJzPUBMSUJESVJAL3BlcmwvNS4yNC4xJworY29uZmlnX2FyZzExPSctRG90aGVybGliZGlycz1ATElCRElSQC9wZXJsLzUuMjQuNCcKIGNvbmZpZ19hcmcxMj0nLUR1c2VzaHJwbGliJwogY29uZmlnX2FyZzEzPSctRHVzZXRocmVhZHMnCiBjb25maWdfYXJnMTQ9Jy1EdXNlaXRocmVhZHMnCkBAIC02NCwxMyArNjQsMTMgQEAKIGFuc2kya25yPScnCiBhcGhvc3RuYW1lPScnCiBhcGlfcmV2aXNpb249JzUnCi1hcGlfc3VidmVyc2lvbj0nMScKK2FwaV9zdWJ2ZXJzaW9uPSc0JwogYXBpX3ZlcnNpb249JzI0JwotYXBpX3ZlcnNpb25zdHJpbmc9JzUuMjQuMScKK2FwaV92ZXJzaW9uc3RyaW5nPSc1LjI0LjQnCiBhcj0nYXInCi1hcmNobGliPSdATElCRElSQC9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJwotYXJjaGxpYmV4cD0nQFNUQUdJTkdESVJAQExJQkRJUkAvcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKLWFyY2hsaWJfZXhwPSdATElCRElSQC9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpJworYXJjaGxpYj0nQExJQkRJUkAvcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKK2FyY2hsaWJleHA9J0BTVEFHSU5HRElSQEBMSUJESVJAL3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGknCithcmNobGliX2V4cD0nQExJQkRJUkAvcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKIGFyY2huYW1lNjQ9JycKIGFyY2huYW1lPSdAQVJDSEAtdGhyZWFkLW11bHRpJwogYXJjaG9ianM9JycKQEAgLTg4LDcgKzg4LDcgQEAKIGNhdD0nY2F0JwogY2M9J2djYycKIGNjY2RsZmxhZ3M9Jy1mUElDJwotY2NkbGZsYWdzPSctV2wsLUUgLVdsLC1ycGF0aCxATElCRElSQC9wZXJsLzUuMjQuMS9AQVJDSEAtdGhyZWFkLW11bHRpL0NPUkUnCitjY2RsZmxhZ3M9Jy1XbCwtRSAtV2wsLXJwYXRoLEBMSUJESVJAL3BlcmwvNS4yNC40L0BBUkNIQC10aHJlYWQtbXVsdGkvQ09SRScKIGNjZmxhZ3M9Jy1EX1JFRU5UUkFOVCAtRF9HTlVfU09VUkNFIC1md3JhcHYgLWZuby1zdHJpY3QtYWxpYXNpbmcgLXBpcGUgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0ZPUlRJRllfU09VUkNFPTInCiBjY2ZsYWdzX3VzZWxhcmdlZmlsZXM9Jy1EX0xBUkdFRklMRV9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCcKIGNjbmFtZT0nZ2NjJwpAQCAtODM4LDcgKzgzOCw3IEBACiBpbmNwYXRoPScnCiBpbmV3cz0nJwogaW5pdGlhbGluc3RhbGxsb2NhdGlvbj0nQFVTUkJJTkAnCi1pbnN0YWxsYXJjaGxpYj0nQExJQkRJUkAvcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKK2luc3RhbGxhcmNobGliPSdATElCRElSQC9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogaW5zdGFsbGJpbj0nQFVTUkJJTkAnCiBpbnN0YWxsaHRtbDFkaXI9JycKIGluc3RhbGxodG1sM2Rpcj0nJwpAQCAtODQ2LDIzICs4NDYsMjMgQEAKIGluc3RhbGxtYW4zZGlyPScnCiBpbnN0YWxscHJlZml4PSdARVhFQ1BSRUZJWEAnCiBpbnN0YWxscHJlZml4ZXhwPSdARVhFQ1BSRUZJWEAnCi1pbnN0YWxscHJpdmxpYj0nQExJQkRJUkAvcGVybC81LjI0LjEnCitpbnN0YWxscHJpdmxpYj0nQExJQkRJUkAvcGVybC81LjI0LjQnCiBpbnN0YWxsc2NyaXB0PSdAVVNSQklOQCcKLWluc3RhbGxzaXRlYXJjaD0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwvNS4yNC4xL0BBUkNIQC10aHJlYWQtbXVsdGknCitpbnN0YWxsc2l0ZWFyY2g9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogaW5zdGFsbHNpdGViaW49J0BVU1JCSU5AJwogaW5zdGFsbHNpdGVodG1sMWRpcj0nJwogaW5zdGFsbHNpdGVodG1sM2Rpcj0nJwotaW5zdGFsbHNpdGVsaWI9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuMScKK2luc3RhbGxzaXRlbGliPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjQnCiBpbnN0YWxsc2l0ZW1hbjFkaXI9JycKIGluc3RhbGxzaXRlbWFuM2Rpcj0nJwogaW5zdGFsbHNpdGVzY3JpcHQ9J0BVU1JCSU5AJwogaW5zdGFsbHN0eWxlPSdsaWIvcGVybCcKIGluc3RhbGx1c3JiaW5wZXJsPSdkZWZpbmUnCi1pbnN0YWxsdmVuZG9yYXJjaD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKK2luc3RhbGx2ZW5kb3JhcmNoPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwogaW5zdGFsbHZlbmRvcmJpbj0nQFVTUkJJTkAnCiBpbnN0YWxsdmVuZG9yaHRtbDFkaXI9JycKIGluc3RhbGx2ZW5kb3JodG1sM2Rpcj0nJwotaW5zdGFsbHZlbmRvcmxpYj0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjEnCitpbnN0YWxsdmVuZG9ybGliPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuNCcKIGluc3RhbGx2ZW5kb3JtYW4xZGlyPScnCiBpbnN0YWxsdmVuZG9ybWFuM2Rpcj0nJwogaW5zdGFsbHZlbmRvcnNjcmlwdD0nQFVTUkJJTkAnCkBAIC05NjUsNyArOTY1LDcgQEAKIG9yZGVybGliPSdmYWxzZScKIG9zbmFtZT0nbGludXgnCiBvc3ZlcnM9JzMuMTkuNS15b2N0by1zdGFuZGFyZCcKLW90aGVybGliZGlycz0nQExJQkRJUkAvcGVybC81LjI0LjEnCitvdGhlcmxpYmRpcnM9J0BMSUJESVJAL3BlcmwvNS4yNC40JwogcGFja2FnZT0ncGVybCcKIHBhZ2VyPScvdXNyL2Jpbi9sZXNzIC1pc3InCiBwYXNzY2F0PSdjYXQgL2V0Yy9wYXNzd2QnCkBAIC05ODYsOCArOTg2LDggQEAKIHByPScnCiBwcmVmaXg9J0BFWEVDUFJFRklYQCcKIHByZWZpeGV4cD0nQEVYRUNQUkVGSVhAJwotcHJpdmxpYj0nQExJQkRJUkAvcGVybC81LjI0LjEnCi1wcml2bGliZXhwPSdATElCRElSQC9wZXJsLzUuMjQuMScKK3ByaXZsaWI9J0BMSUJESVJAL3BlcmwvNS4yNC40JworcHJpdmxpYmV4cD0nQExJQkRJUkAvcGVybC81LjI0LjQnCiBwcm9jc2VsZmV4ZT0nIi9wcm9jL3NlbGYvZXhlIicKIHByb3RvdHlwZT0nZGVmaW5lJwogcHRyc2l6ZT0nOCcKQEAgLTEwNTMsMTcgKzEwNTMsMTcgQEAKIHNpZ19udW1faW5pdD0nMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDYsIDE3LCAyOSwgMzEsIDAnCiBzaWdfc2l6ZT0nNjknCiBzaWduYWxfdD0ndm9pZCcKLXNpdGVhcmNoPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKLXNpdGVhcmNoZXhwPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKK3NpdGVhcmNoPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKK3NpdGVhcmNoZXhwPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKIHNpdGViaW49J0BVU1JCSU5AJwogc2l0ZWJpbmV4cD0nQFVTUkJJTkAnCiBzaXRlaHRtbDFkaXI9JycKIHNpdGVodG1sMWRpcmV4cD0nJwogc2l0ZWh0bWwzZGlyPScnCiBzaXRlaHRtbDNkaXJleHA9JycKLXNpdGVsaWI9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuMScKK3NpdGVsaWI9J0BMSUJESVJAL3Blcmwvc2l0ZV9wZXJsLzUuMjQuNCcKIHNpdGVsaWJfc3RlbT0nQExJQkRJUkAvcGVybC9zaXRlX3BlcmwnCi1zaXRlbGliZXhwPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjEnCitzaXRlbGliZXhwPSdATElCRElSQC9wZXJsL3NpdGVfcGVybC81LjI0LjQnCiBzaXRlbWFuMWRpcj0nJwogc2l0ZW1hbjFkaXJleHA9JycKIHNpdGVtYW4zZGlyPScnCkBAIC0xMTAyLDcgKzExMDIsNyBAQAogc3RyZXJyb3Jfcl9wcm90bz0nUkVFTlRSQU5UX1BST1RPX0JfSUJXJwogc3RyaW5ncz0nQElOQ0xVREVESVJAL3N0cmluZy5oJwogc3VibWl0PScnCi1zdWJ2ZXJzaW9uPScxJworc3VidmVyc2lvbj0nNCcKIHN5c21hbj0nQEVYRUNQUkVGSVhAL3NoYXJlL21hbi9tYW4xJwogc3lzcm9vdD0nJwogdGFpbD0nJwpAQCAtMTE4MiwxNyArMTE4MiwxNyBAQAogdXZ1Zm9ybWF0PScibHUiJwogdXZ4Zm9ybWF0PScibHgiJwogdmFwcm90bz0nZGVmaW5lJwotdmVuZG9yYXJjaD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjEvQEFSQ0hALXRocmVhZC1tdWx0aScKLXZlbmRvcmFyY2hleHA9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC4xL0BBUkNIQC10aHJlYWQtbXVsdGknCit2ZW5kb3JhcmNoPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuNC9AQVJDSEAtdGhyZWFkLW11bHRpJwordmVuZG9yYXJjaGV4cD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjQvQEFSQ0hALXRocmVhZC1tdWx0aScKIHZlbmRvcmJpbj0nQFVTUkJJTkAnCiB2ZW5kb3JiaW5leHA9J0BVU1JCSU5AJwogdmVuZG9yaHRtbDFkaXI9JyAnCiB2ZW5kb3JodG1sMWRpcmV4cD0nJwogdmVuZG9yaHRtbDNkaXI9JyAnCiB2ZW5kb3JodG1sM2RpcmV4cD0nJwotdmVuZG9ybGliPSdATElCRElSQC9wZXJsL3ZlbmRvcl9wZXJsLzUuMjQuMScKK3ZlbmRvcmxpYj0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjQnCiB2ZW5kb3JsaWJfc3RlbT0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybCcKLXZlbmRvcmxpYmV4cD0nQExJQkRJUkAvcGVybC92ZW5kb3JfcGVybC81LjI0LjEnCit2ZW5kb3JsaWJleHA9J0BMSUJESVJAL3BlcmwvdmVuZG9yX3BlcmwvNS4yNC40JwogdmVuZG9ybWFuMWRpcj0nICcKIHZlbmRvcm1hbjFkaXJleHA9JycKIHZlbmRvcm1hbjNkaXI9JyAnCkBAIC0xMjAxLDggKzEyMDEsOCBAQAogdmVuZG9ycHJlZml4ZXhwPSdARVhFQ1BSRUZJWEAnCiB2ZW5kb3JzY3JpcHQ9J0BVU1JCSU5AJwogdmVuZG9yc2NyaXB0ZXhwPSdAVVNSQklOQCcKLXZlcnNpb249JzUuMjQuMScKLXZlcnNpb25fcGF0Y2hsZXZlbF9zdHJpbmc9J3ZlcnNpb24gMjQgc3VidmVyc2lvbiAxJwordmVyc2lvbj0nNS4yNC40JwordmVyc2lvbl9wYXRjaGxldmVsX3N0cmluZz0ndmVyc2lvbiAyNCBzdWJ2ZXJzaW9uIDQnCiB2ZXJzaW9ub25seT0ndW5kZWYnCiB2aT0nJwogeGxpYnB0aD0nQExJQkRJUkAvMzg2IEBCQVNFTElCRElSQDM4NicKQEAgLTEyMTIsMTAgKzEyMTIsMTAgQEAKIHppcD0nemlwJwogUEVSTF9SRVZJU0lPTj01CiBQRVJMX1ZFUlNJT049MjQKLVBFUkxfU1VCVkVSU0lPTj0xCitQRVJMX1NVQlZFUlNJT049NAogUEVSTF9BUElfUkVWSVNJT049NQogUEVSTF9BUElfVkVSU0lPTj0yNAotUEVSTF9BUElfU1VCVkVSU0lPTj0xCitQRVJMX0FQSV9TVUJWRVJTSU9OPTQKIFBFUkxfUEFUQ0hMRVZFTD0nJwogUEVSTF9DT05GSUdfU0g9dHJ1ZQogOiBWYXJpYWJsZXMgcHJvcGFnYXRlZCBmcm9tIHByZXZpb3VzIGNvbmZpZy5zaCBmaWxlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlMzNiYjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi1yZXF1aXJlIHBlcmwuaW5jCi0KLSMgV2UgbmVlZCBnbnVncmVwIChmb3IgLUkpCi1ERVBFTkRTID0gImRiIGdyZXAtbmF0aXZlIGdkYm0gemxpYiB2aXJ0dWFsL2NyeXB0IgotCi0jIFBpY2sgdXAgcGF0Y2hlcyBmcm9tIGRlYmlhbgotIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9wL3BlcmwvcGVybF81LjIyLjAtMS5kZWJpYW4udGFyLnh6Ci1TUkNfVVJJICs9ICIgXAotCWZpbGU6Ly9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2RiX2ZpbGVfdmVyLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZG9jX2luZm8uZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZXJybm9fdmVyLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vbGlicGVybF9lbWJlZF9kb2MuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL3ByZWZpeF9jaGFuZ2VzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2xkX3J1bl9wYXRoLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vbW9kX3BhdGhzLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9wZXJsaXZwLmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vc3F1ZWxjaC1sb2NhbGUtd2FybmluZ3MuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYgXAotCWZpbGU6Ly9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoIFwKLQlmaWxlOi8vZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZiBcCi0JZmlsZTovL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmIFwKLQlmaWxlOi8vZGViaWFuL3JlZ2VuLXNraXAuZGlmZiBcCi0iCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5TSC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9pbnN0YWxscGVybC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9wZXJsLWFyY2hsaWItZXhwLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtZHlubG9hZGVyLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtbW9yZWNvbmZpZy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9sZXRnY2MtZmluZC1lcnJuby5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zaC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9jcm9zcy1nZW5lcmF0ZV91dWRtYXAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZml4X2JhZF9ycGF0aC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9keW5hbG9hZGVyaGFjay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9jb25maWcuc2ggXAotICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTMyIFwKLSAgICAgICAgZmlsZTovL2NvbmZpZy5zaC0zMi1sZSBcCi0gICAgICAgIGZpbGU6Ly9jb25maWcuc2gtMzItYmUgXAotICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTY0IFwKLSAgICAgICAgZmlsZTovL2NvbmZpZy5zaC02NC1sZSBcCi0gICAgICAgIGZpbGU6Ly9jb25maWcuc2gtNjQtYmUgXAotICAgICAgICBmaWxlOi8vbWFrZV9leHQucGwtZml4LXJlZ2VuZXJhdGUtbWFrZWZpbGUtZmFpbGVkLXdoaWxlLWNjLS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly90LXJ1bi1zd2l0Y2hlcy50LXBlcmw1LXBlcmwucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZXh0LU9EQk1fRmlsZS1oaW50cy1saW51eC5wbC1saW5rLWxpYmdkYm1fY29tcGF0LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2ggXAotICAgICAgICBmaWxlOi8vcGVybC1QYXRoVG9vbHMtZG9uLXQtZmlsdGVyLW91dC1ibGliLWZyb20tSU5DLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtZXJybm8tZ2VuZXJhdGlvbi1nY2M1LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3BlcmwtZml4LWNvbmZsaWN0LWJldHdlZW4tc2tpcF9hbGwtYW5kLUVORC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9wZXJsLTUuMjYuMS1ndWFyZF9vbGRfbGliY3J5cHRfZml4LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEyODgzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEyODM3LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE4LTY3OTgtMS5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9DVkUtMjAxOC02Nzk4LTIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtNjc5Ny5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9DVkUtMjAxOC02OTEzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEyMDE1LnBhdGNoIFwKLSIKLQotIyBGaXggdGVzdCBjYXNlIGlzc3VlcwotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vdGVzdC9kaXN0LXRocmVhZHMtdC1qb2luLnQtYWRqdXN0LXBzLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdGVzdC9leHQtRHluYUxvYWRlci10LUR5bmFMb2FkZXIudC1maXgtY2FsbGluZy1kbF9maW5kZmlsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNraXAtdmFyaW91cy10ZXN0cy1pZi1QRVJMX0JVSUxEX1BBQ0tBR0lORy1pcy1zZXQucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjZhODRjN2MzZTJiOGIyNjljMTA1YTVkYjJmNmQ1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwM2E3N2JhYzQ1MDVjMjcwZjE4OTBlY2U3NWFmYzdkNGI1NTUwOTBiNDFhYTQxZWE0Nzg3NDdlMjNiMmFmYjNmIgotCi1pbmhlcml0IHBlcmxuYXRpdmUgc2l0ZWluZm8KLQotIyBXaGVyZSB0byBmaW5kIHRoZSBuYXRpdmUgcGVybAotSE9TVFBFUkwgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3Blcmwke1BWfSIKLQotIyBXaGVyZSB0byBmaW5kIC5zbyBmaWxlcyAtIHVzZSB0aGUgLW5hdGl2ZSB2ZXJzaW9ucyBub3QgdGhvc2UgZnJvbSB0aGUgdGFyZ2V0IGJ1aWxkCi1leHBvcnQgUEVSTEhPU1RMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwvJHtQVn0vIgotCi0jIFdoZXJlIHRvIGZpbmQgcGVybCBASU5DLyNpbmNsdWRlIGZpbGVzCi0jIC0gdXNlIHRoZSAtbmF0aXZlIHZlcnNpb25zIG5vdCB0aG9zZSBmcm9tIHRoZSB0YXJnZXQgYnVpbGQKLWV4cG9ydCBQRVJMX0xJQiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybC8ke1BWfS8iCi1leHBvcnQgUEVSTF9BUkNITElCID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsLyR7UFZ9LyIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLSMgTERGTEFHUyBmb3Igc2hhcmVkIGxpYnJhcmllcwotZXhwb3J0IExERExGTEFHUyA9ICIke0xERkxBR1N9IC1zaGFyZWQiCi0KLUxERkxBR1NfYXBwZW5kID0gIiAtZnN0YWNrLXByb3RlY3RvciIKLQotIyBXZSdyZSBhbG1vc3QgRGViaWFuLCBhcmVuJ3Qgd2U/Ci1DRkxBR1MgKz0gIi1EREVCSUFOIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgICAgICMgTWFrZSBob3N0cGVybCBpbiBidWlsZCBkaXJlY3RvcnkgYmUgdGhlIG5hdGl2ZSBwZXJsCi0gICAgICAgIGxuIC1zZiAke0hPU1RQRVJMfSBob3N0cGVybAotCi0JaWYgWyAtbiAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiAtYSAtZSAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiBdOyB0aGVuCi0JCWlmIFsgImBjYXQgJHtDT05GSUdVUkVTVEFNUEZJTEV9YCIgIT0gIiR7QkJfVEFTS0hBU0h9IiAtYSAtZSBNYWtlZmlsZSBdOyB0aGVuCi0JCQkke01BS0V9IGNsZWFuCi0JCWZpCi0JCWZpbmQgJHtTfSAtbmFtZSAqLnNvIC1kZWxldGUKLQlmaQotCWlmIFsgLW4gIiR7Q09ORklHVVJFU1RBTVBGSUxFfSIgXTsgdGhlbgotCQllY2hvICR7QkJfVEFTS0hBU0h9ID4gJHtDT05GSUdVUkVTVEFNUEZJTEV9Ci0JZmkKLQotICAgICAgICAjIERvIG91ciB3b3JrIGluIHRoZSBjcm9zcyBzdWJkaXIKLSAgICAgICAgY2QgQ3Jvc3MKLQotICAgICAgICAjIEdlbmVyYXRlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgcm0gLWYgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotICAgICAgICBmb3IgaSBpbiAke1dPUktESVJ9L2NvbmZpZy5zaCBcCi0gICAgICAgICAgICAgICAgICR7V09SS0RJUn0vY29uZmlnLnNoLSR7U0lURUlORk9fQklUU30gXAotICAgICAgICAgICAgICAgICAke1dPUktESVJ9L2NvbmZpZy5zaC0ke1NJVEVJTkZPX0JJVFN9LSR7U0lURUlORk9fRU5ESUFOTkVTU307IGRvCi0gICAgICAgICAgICBjYXQgJGkgPj4gY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotICAgICAgICBkb25lCi0KLSAgICAgICAgIyBGaXh1cHMgZm9yIG11c2wKLSAgICAgICAgaWYgWyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsZWFiaSIgLW8gIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbHgzMiIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAicyxcKGRfbGlibV9saWJfdmVyc2lvbj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbF9zZXRzX2NudD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb2Jhc2U9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3Rkc3RkaW89XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnluYW1lX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZmluaXRlbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9ieW5hbWVfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHdlbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0c2VydmVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRob3N0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRuZXRieWFkZHJfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9lbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9ieW51bWJlcl9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRncmVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChpX2ZjbnRsPVwpJ3VuZGVmJyxcMSdkZWZpbmUnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChoX2ZjbnRsPVwpJ2ZhbHNlJyxcMSd0cnVlJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLC1mc3RhY2stcHJvdGVjdG9yLC1mbm8tc3RhY2stcHJvdGVjdG9yLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsLWxuc2wsLGciIFwKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotICAgICAgICBmaQotCi0gICAgICAgICMgVXBkYXRlIHNvbWUgcGF0aHMgaW4gdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VkIC1pIC1lICdzLEBBUkNIQC10aHJlYWQtbXVsdGksLGcnIFwKLSAgICAgICAgICAgICAgIC1lICdzLEBBUkNIQCwke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30sZycgXAotICAgICAgICAgICAgICAgLWUgJ3MsQFNUQUdJTkdESVJALCR7U1RBR0lOR19ESVJfSE9TVH0sZycgXAotICAgICAgICAgICAgICAgLWUgInMsQElOQ0xVREVESVJALCR7U1RBR0lOR19JTkNESVJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLEBMSUJESVJALCR7bGliZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicyxAQkFTRUxJQkRJUkAsJHtiYXNlX2xpYmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsQEVYRUNQUkVGSVhALCR7ZXhlY19wcmVmaXh9LGciIFwKLSAgICAgICAgICAgICAgIC1lICdzLEBVU1JCSU5ALCR7YmluZGlyfSxnJyBcCi0gICAgICAgICAgICBjb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9Ci0KLQljYXNlICIke1RBUkdFVF9BUkNIfSIgaW4KLQkJeDg2XzY0IHwgcG93ZXJwYyB8IHMzOTApCi0JCQlzZWQgLWkgLWUgInMsXChuZWVkX3ZhX2NvcHk9XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAotCQkJCWNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KLQkJCTs7Ci0JCWFybSkKLQkJCXNlZCAtaSAtZSAicyxcKGRfdTMyYWxpZ249XCkndW5kZWYnLFwxJ2RlZmluZScsZyIgXAotCQkJCWNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KLQkJCTs7Ci0JZXNhYwotICAgICAgICAjIFRoZXNlIGFyZSBzdHJld24gYWxsIG92ZXIgdGhlIHNvdXJjZSB0cmVlCi0gICAgICAgIGZvciBmb28gaW4gYGdyZXAgLUkgLS1leGNsdWRlPSIqLnBhdGNoIiAtLWV4Y2x1ZGU9IiouZGlmZiIgLS1leGNsdWRlPSIqLnBvZCIgLS1leGNsdWRlPSJSRUFETUUqIiAtLWV4Y2x1ZGU9Ikdsb3NzYXJ5IiAtbTEgIi91c3IvaW5jbHVkZS8uKlwuaCIgJHtTfS8qIC1yIC1sYCAke1N9L3V0aWxzL2gyeHMuUEwgOyBkbwotICAgICAgICAgICAgZWNobyBGaXhpbmc6ICRmb28KLSAgICAgICAgICAgIHNlZCAtZSAnc3xcKFsgIl4nXCcnSV1cK1wpL3Vzci9pbmNsdWRlL3xcMSR7U1RBR0lOR19JTkNESVJ9L3xnJyAtaSAkZm9vCi0gICAgICAgIGRvbmUKLQotICAgICAgICBybSAtZiBjb25maWcKLSAgICAgICAgZWNobyAiQVJDSCA9ICR7VEFSR0VUX0FSQ0h9IiA+IGNvbmZpZwotICAgICAgICBlY2hvICJPUyA9ICR7VEFSR0VUX09TfSIgPj4gY29uZmlnCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgRml4IHRvIGF2b2lkIHJlY3Vyc2l2ZSBzdWJzdGl0dXRpb24gb2YgcGF0aAotICAgICAgICBzZWQgLWkgLWUgJ3N8KEBsaWJwYXRoLCAiLioifChAbGlicGF0aCwgIiR7U1RBR0lOR19MSUJESVJ9InxnJyBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTGlibGlzdC9LaWQucG0KLQotICAgICAgICBjZCBDcm9zcwotICAgICAgICBvZV9ydW5tYWtlIHBlcmwgTEQ9IiR7Q0NMRH0iCi19Ci0KLWRvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gbnVtZXJvdXMgY29tbWVudHMuLi4KLSAgICAgICAgZmluZCAiJHtTfS9jcGFuL0VuY29kZSIgLXR5cGUgZiBcCi0gICAgICAgICAgICBcKCAtbmFtZSAnKi5leGgnIC1vIC1uYW1lICcqLmMnIC1vIC1uYW1lICcqLmgnIFwpXAotICAgICAgICAgICAgLWV4ZWMgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6Zycge30gKwotICAgICAgICBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnICR7U30vcGVybC5oICR7U30vcHAuaAotICAgICAgICBzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9L3Vzci9iaW4vcGVybC1uYXRpdmUvcGVybCR7UFZ9LnJlYWw6L3Vzci9iaW4vcGVybCR7UFZ9OmcnICBcCi0gICAgICAgICAgICAke1N9L2NwYW4vQ29tcHJlc3MtUmF3LUJ6aXAyL2NvbnN0YW50cy5oIFwKLSAgICAgICAgICAgICR7U30vY3Bhbi9Db21wcmVzcy1SYXctWmxpYi9jb25zdGFudHMuaCBcCi0gICAgICAgICAgICAke1N9L2NwYW4vSVBDLVN5c1YvY29uc3QtYy5pbmMgXAotICAgICAgICAgICAgJHtTfS9kaXN0L1RpbWUtSGlSZXMvY29uc3QtYy5pbmMKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjZXhwb3J0IGhvc3RwZXJsPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCR7UFZ9IgotCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLSAgICAgICAgIyBBZGQgcGVybCBwb2ludGluZyBhdCBjdXJyZW50IHZlcnNpb24KLSAgICAgICAgbG4gLXNmIHBlcmwke1BWfSAke0R9JHtiaW5kaXJ9L3BlcmwKLQotICAgICAgICBsbiAtc2YgcGVybCAke0R9LyR7bGliZGlyfS9wZXJsNQotCi0gICAgICAgICMgUmVtb3ZlIHVud2FudGVkIGZpbGUgYW5kIGVtcHR5IGRpcmVjdG9yaWVzCi0gICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vLnBhY2tsaXN0Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0vcGVybC9zaXRlX3BlcmwvJHtQVn0KLQlybWRpciAke0R9LyR7bGliZGlyfS9wZXJsL3NpdGVfcGVybAotCi0gICAgICAgICMgRml4IHVwIHNoYXJlZCBsaWJyYXJ5Ci0gICAgICAgIG12ICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9saWJwZXJsLnNvICR7RH0vJHtsaWJkaXJ9L2xpYnBlcmwuc28uJHtQVn0KLSAgICAgICAgbG4gLXNmIGxpYnBlcmwuc28uJHtQVn0gJHtEfS8ke2xpYmRpcn0vbGlicGVybC5zby41Ci0gICAgICAgIGxuIC1zZiAuLi8uLi8uLi9saWJwZXJsLnNvLiR7UFZ9ICR7RH0vJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9saWJwZXJsLnNvCi0KLSAgICAgICAgIyB0YXJnZXQgY29uZmlnLCB1c2VkIGJ5IGNwYW4uYmJjbGFzcyB0byBleHRyYWN0IHZlcnNpb24gaW5mb3JtYXRpb24KLSAgICAgICAgaW5zdGFsbCBjb25maWcuc2ggJHtEfSR7bGliZGlyfS9wZXJsCi0KLSAgICAgICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnktdGFyZ2V0LnBsCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybCBcCi0gICAgICAgICAgICBQRVJMNUxJQj0nJFBFUkw1TElCOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsL3NpdGVfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybC92ZW5kb3JfcGVybC8ke1BWfTokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybC8ke1BWfScKLX0KLQotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcGVybF9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotICAgICAgICAjIEZpeCB1cCBpbnN0YWxsZWQgY29uZmlndXJhdGlvbgotICAgICAgICBzZWQgLWkgLWUgInMsJHtEfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtERUJVR19QUkVGSVhfTUFQfSwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLC1pc3lzdGVtJHtTVEFHSU5HX0lOQ0RJUn0gLCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUn0sJHtiaW5kaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19JTkNESVJ9LCR7aW5jbHVkZWRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlLywke2JpbmRpcn0vLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfVE9PTENIQUlOfS8ke1RBUkdFVF9QUkVGSVh9LCR7YmluZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9oMnhzIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJwaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJtYW4gXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydGV4dCBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ1c2FnZSBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZGNoZWNrZXIgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RzZWxlY3QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvY29uZmlnLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvcGVybC5oIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL3BwLmggXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnLnBvZCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LnBsIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vRmlsZUNhY2hlLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9wb2QvKi5wb2QgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsL2NvbmZpZy5zaAotfQotCi1QQUNLQUdFUyA9ICJwZXJsLWRiZyBwZXJsIHBlcmwtbWlzYyBwZXJsLWRldiBwZXJsLXBvZCBwZXJsLWRvYyBwZXJsLWxpYiBcCi0gICAgICAgICAgICBwZXJsLW1vZHVsZS1jcGFuIHBlcmwtbW9kdWxlLWNwYW5wbHVzIHBlcmwtbW9kdWxlLXVuaWNvcmUiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcGVybCAke2JpbmRpcn0vcGVybCR7UFZ9IFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9zdHJpY3QucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vd2FybmluZ3MucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vd2FybmluZ3MgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdmFycy5wbSBcCi0gICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7YmluZGlyfS9wZXJsLnJlYWwiCi1SUFJPVklERVNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLXN0cmljdCBwZXJsLW1vZHVsZS12YXJzIHBlcmwtbW9kdWxlLWNvbmZpZyBwZXJsLW1vZHVsZS13YXJuaW5ncyBcCi0gICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUiCi1GSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYnBlcmwuc28qIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsL2NvbmZpZy5zaCBcCi0JCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19naXQucGwgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS5wbCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LXRhcmdldC5wbCIKLUZJTEVTXyR7UE59LXBvZCA9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9wb2QgXAotCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLyoucG9kICIKLUZJTEVTX3BlcmwtbWlzYyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59LWRvYyA9ICIke2xpYmRpcn0vcGVybC8ke1BWfS8qLyoudHh0IFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS8qLyovKi50eHQgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L2F1dG8vWFMvVHlwZW1hcCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9hc3NlbWJsZSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9jY19oYXJuZXNzIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL2Rpc2Fzc2VtYmxlIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9CL21ha2VsaWJsaW5rcyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ0dJL2VnIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOL1BBVVNFMjAwMy5wdWIgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4vU0lHTkFUVVJFIFwKLQkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTlBMVVMvU2hlbGwvRGVmYXVsdC9QbHVnaW5zL0hPV1RPLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRW5jb2RlL2VuY29kZS5oIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9NQU5JRkVTVC5TS0lQIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9OT1RFUyBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvUEFUQ0hJTkcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL3R5cGVtYXAgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL3hzdWJwcCBcCi0JCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL0NoYW5nZXNfRVUtSW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vTmV0LyouZWcgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUvbWt0YWJsZXMgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUvbWt0YWJsZXMubHN0IFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS91bmljb3JlL3ZlcnNpb24gIgotCi1GSUxFU19wZXJsLW1vZHVsZS1jcGFuICs9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU4ucG0iCi1GSUxFU19wZXJsLW1vZHVsZS1jcGFucGx1cyArPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTlBMVVMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU5QTFVTLnBtIgotRklMRVNfcGVybC1tb2R1bGUtdW5pY29yZSArPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdW5pY29yZSIKLQotIyBDcmVhdGUgYSBwZXJsLW1vZHVsZXMgcGFja2FnZSByZWNvbW1lbmRpbmcgYWxsIHRoZSBvdGhlciBwZXJsCi0jIHBhY2thZ2VzIChhY3R1YWxseSB0aGUgbm9uIG1vZHVsZXMgcGFja2FnZXMgYW5kIG5vdCBjcmVhdGVkIHRvbykKLUFMTE9XX0VNUFRZX3BlcmwtbW9kdWxlcyA9ICIxIgotUEFDS0FHRVNfYXBwZW5kID0gIiBwZXJsLW1vZHVsZXMgIgotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3BlcmxfcGFja2FnZXMgIgotCi1weXRob24gc3BsaXRfcGVybF9wYWNrYWdlcyAoKSB7Ci0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9wZXJsLyR7UFZ9JykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdhdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ01vZHVsZS8oW15cL10qKVwucG0nLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ01vZHVsZS8oW15cL10qKS8uKicsICdwZXJsLW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnKF4oPyEoQ1BBTlwvfENQQU5QTFVTXC98TW9kdWxlXC98dW5pY29yZVwvfGF1dG9cLylbXlwvXSkuKilcLihwbXxwbHxlMngpJywgJ3BlcmwtbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLQotICAgICMgcGVybC1tb2R1bGVzIHNob3VsZCByZWNvbW1lbmQgZXZlcnkgcGVybCBtb2R1bGUsIGFuZCBvbmx5IHRoZQotICAgICMgbW9kdWxlcy4gRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhlIHJlc3VsdCBvZiBkb19zcGxpdF9wYWNrYWdlcygpIGFzIHNvbWUKLSAgICAjIG1vZHVsZXMgYXJlIG1hbnVhbGx5IHNwbGl0IChlZy4gcGVybC1tb2R1bGUtdW5pY29yZSkuCi0gICAgcGFja2FnZXMgPSBmaWx0ZXIobGFtYmRhIHA6ICdwZXJsLW1vZHVsZS0nIGluIHAsIGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkpCi0gICAgZC5zZXRWYXIoZC5leHBhbmQoIlJSRUNPTU1FTkRTXyR7UE59LW1vZHVsZXMiKSwgJyAnLmpvaW4ocGFja2FnZXMpKQotfQotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJecGVybC1tb2R1bGUtLiooPzwhXC1uYXRpdmUpJCIKLVBBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlc2RrICs9ICJebmF0aXZlc2RrLXBlcmwtbW9kdWxlLS4qIgotCi1SUFJPVklERVNfcGVybC1saWIgPSAicGVybC1saWIiCi0KLXJlcXVpcmUgcGVybC1yZGVwZW5kc18ke1BWfS5pbmMKLXJlcXVpcmUgcGVybC1wdGVzdC5pbmMKLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjQ0OTcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuNC5iYgpAQCAtMCwwICsxLDM1MyBAQAorcmVxdWlyZSBwZXJsLmluYworCisjIFdlIG5lZWQgZ251Z3JlcCAoZm9yIC1JKQorREVQRU5EUyA9ICJkYiBncmVwLW5hdGl2ZSBnZGJtIHpsaWIgdmlydHVhbC9jcnlwdCIKKworIyBQaWNrIHVwIHBhdGNoZXMgZnJvbSBkZWJpYW4KKyMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vcC9wZXJsL3BlcmxfNS4yMi4wLTEuZGViaWFuLnRhci54egorU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vZGViaWFuL2NwYW5fZGVmaW5zdGFsbGRpcnMuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2RvY19pbmZvLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZW5jMnhzX2luYy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2Vycm5vX3Zlci5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZml4ZXMvcmVzcGVjdF91bWFzay5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3dyaXRhYmxlX3NpdGVfZGlycy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2V4dHV0aWxzX3NldF9saWJwZXJsX3BhdGguZGlmZiBcCisJZmlsZTovL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL21vZF9wYXRocy5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3BydW5lX2xpYnMuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9maXhlcy9uZXRfc210cF9kb2NzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vcGVybGl2cC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZml4ZXMvZG9jdW1lbnRfbWFrZW1ha2VyX2NjZmxhZ3MuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmIFwKKwlmaWxlOi8vZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaCBcCisJZmlsZTovL2RlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYgXAorCWZpbGU6Ly9kZWJpYW4vZml4ZXMvbWVtb2l6ZV9zdG9yYWJsZV9uc3RvcmUuZGlmZiBcCisJZmlsZTovL2RlYmlhbi9yZWdlbi1za2lwLmRpZmYgXAorIgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICBmaWxlOi8vTWFrZWZpbGUucGF0Y2ggXAorICAgICAgICBmaWxlOi8vTWFrZWZpbGUuU0gucGF0Y2ggXAorICAgICAgICBmaWxlOi8vaW5zdGFsbHBlcmwucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC1hcmNobGliLWV4cC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLWR5bmxvYWRlci5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLW1vcmVjb25maWcucGF0Y2ggXAorICAgICAgICBmaWxlOi8vbGV0Z2NjLWZpbmQtZXJybm8ucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc2gucGF0Y2ggXAorICAgICAgICBmaWxlOi8vbmF0aXZlLXBlcmxpbmMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vY3Jvc3MtZ2VuZXJhdGVfdXVkbWFwLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2ZpeF9iYWRfcnBhdGgucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZHluYWxvYWRlcmhhY2sucGF0Y2ggXAorICAgICAgICBmaWxlOi8vY29uZmlnLnNoIFwKKyAgICAgICAgZmlsZTovL2NvbmZpZy5zaC0zMiBcCisgICAgICAgIGZpbGU6Ly9jb25maWcuc2gtMzItbGUgXAorICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTMyLWJlIFwKKyAgICAgICAgZmlsZTovL2NvbmZpZy5zaC02NCBcCisgICAgICAgIGZpbGU6Ly9jb25maWcuc2gtNjQtbGUgXAorICAgICAgICBmaWxlOi8vY29uZmlnLnNoLTY0LWJlIFwKKyAgICAgICAgZmlsZTovL21ha2VfZXh0LnBsLWZpeC1yZWdlbmVyYXRlLW1ha2VmaWxlLWZhaWxlZC13aGlsZS1jYy0ucGF0Y2ggXAorICAgICAgICBmaWxlOi8vdC1ydW4tc3dpdGNoZXMudC1wZXJsNS1wZXJsLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2V4dC1PREJNX0ZpbGUtaGludHMtbGludXgucGwtbGluay1saWJnZGJtX2NvbXBhdC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9leHQtT0RCTV9GaWxlLXQtb2RibS50LWZpeC10aGUtcGF0aC1vZi1kYm10X2NvbW1vbi5wLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL3BlcmwtUGF0aFRvb2xzLWRvbi10LWZpbHRlci1vdXQtYmxpYi1mcm9tLUlOQy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLWVycm5vLWdlbmVyYXRpb24tZ2NjNS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9wZXJsLWZpeC1jb25mbGljdC1iZXR3ZWVuLXNraXBfYWxsLWFuZC1FTkQucGF0Y2ggXAorICAgICAgICBmaWxlOi8vcGVybC01LjI2LjEtZ3VhcmRfb2xkX2xpYmNyeXB0X2ZpeC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMjAxNS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLUV4dFV0aWxzLU1NX1VuaXgucG0tZml4LXJhY2UtaXNzdWVzLnBhdGNoIFwKKyIKKworIyBGaXggdGVzdCBjYXNlIGlzc3VlcworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vdGVzdC9kaXN0LXRocmVhZHMtdC1qb2luLnQtYWRqdXN0LXBzLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vdGVzdC9leHQtRHluYUxvYWRlci10LUR5bmFMb2FkZXIudC1maXgtY2FsbGluZy1kbF9maW5kZmlsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNraXAtdmFyaW91cy10ZXN0cy1pZi1QRVJMX0JVSUxEX1BBQ0tBR0lORy1pcy1zZXQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNDYyMmJjNGQzOTQxZGM3ZWI1NzFjNTJiN2MwMjk5MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjA4MDI4N2ZmNjQ3NTAyNzA2ODk4NDNhZTk0NWYwMjE1OWEzM2NiOGYyZmM5MTAyNDhjMTViZWZiYTVkYjg0IgorCitpbmhlcml0IHBlcmxuYXRpdmUgc2l0ZWluZm8KKworIyBXaGVyZSB0byBmaW5kIHRoZSBuYXRpdmUgcGVybAorSE9TVFBFUkwgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3Blcmwke1BWfSIKKworIyBXaGVyZSB0byBmaW5kIC5zbyBmaWxlcyAtIHVzZSB0aGUgLW5hdGl2ZSB2ZXJzaW9ucyBub3QgdGhvc2UgZnJvbSB0aGUgdGFyZ2V0IGJ1aWxkCitleHBvcnQgUEVSTEhPU1RMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwvJHtQVn0vIgorCisjIFdoZXJlIHRvIGZpbmQgcGVybCBASU5DLyNpbmNsdWRlIGZpbGVzCisjIC0gdXNlIHRoZSAtbmF0aXZlIHZlcnNpb25zIG5vdCB0aG9zZSBmcm9tIHRoZSB0YXJnZXQgYnVpbGQKK2V4cG9ydCBQRVJMX0xJQiA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybC8ke1BWfS8iCitleHBvcnQgUEVSTF9BUkNITElCID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS9wZXJsLyR7UFZ9LyIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKKyMgTERGTEFHUyBmb3Igc2hhcmVkIGxpYnJhcmllcworZXhwb3J0IExERExGTEFHUyA9ICIke0xERkxBR1N9IC1zaGFyZWQiCisKK0xERkxBR1NfYXBwZW5kID0gIiAtZnN0YWNrLXByb3RlY3RvciIKKworIyBXZSdyZSBhbG1vc3QgRGViaWFuLCBhcmVuJ3Qgd2U/CitDRkxBR1MgKz0gIi1EREVCSUFOIgorCitkb19jb25maWd1cmUoKSB7CisgICAgICAgICMgTWFrZSBob3N0cGVybCBpbiBidWlsZCBkaXJlY3RvcnkgYmUgdGhlIG5hdGl2ZSBwZXJsCisgICAgICAgIGxuIC1zZiAke0hPU1RQRVJMfSBob3N0cGVybAorCisJaWYgWyAtbiAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiAtYSAtZSAiJHtDT05GSUdVUkVTVEFNUEZJTEV9IiBdOyB0aGVuCisJCWlmIFsgImBjYXQgJHtDT05GSUdVUkVTVEFNUEZJTEV9YCIgIT0gIiR7QkJfVEFTS0hBU0h9IiAtYSAtZSBNYWtlZmlsZSBdOyB0aGVuCisJCQkke01BS0V9IGNsZWFuCisJCWZpCisJCWZpbmQgJHtTfSAtbmFtZSAqLnNvIC1kZWxldGUKKwlmaQorCWlmIFsgLW4gIiR7Q09ORklHVVJFU1RBTVBGSUxFfSIgXTsgdGhlbgorCQllY2hvICR7QkJfVEFTS0hBU0h9ID4gJHtDT05GSUdVUkVTVEFNUEZJTEV9CisJZmkKKworICAgICAgICAjIERvIG91ciB3b3JrIGluIHRoZSBjcm9zcyBzdWJkaXIKKyAgICAgICAgY2QgQ3Jvc3MKKworICAgICAgICAjIEdlbmVyYXRlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgcm0gLWYgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQorICAgICAgICBmb3IgaSBpbiAke1dPUktESVJ9L2NvbmZpZy5zaCBcCisgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vY29uZmlnLnNoLSR7U0lURUlORk9fQklUU30gXAorICAgICAgICAgICAgICAgICAke1dPUktESVJ9L2NvbmZpZy5zaC0ke1NJVEVJTkZPX0JJVFN9LSR7U0lURUlORk9fRU5ESUFOTkVTU307IGRvCisgICAgICAgICAgICBjYXQgJGkgPj4gY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQorICAgICAgICBkb25lCisKKyAgICAgICAgIyBGaXh1cHMgZm9yIG11c2wKKyAgICAgICAgaWYgWyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsIiAtbyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC1tdXNsZWFiaSIgLW8gIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbHgzMiIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAicyxcKGRfbGlibV9saWJfdmVyc2lvbj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb19wdHJfbHZhbF9zZXRzX2NudD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRpb2Jhc2U9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3Rkc3RkaW89XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnluYW1lX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZmluaXRlbD1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9ieW5hbWVfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHdlbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0c2VydmVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRob3N0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAorICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRuZXRieWFkZHJfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9lbnRfcj1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZ2V0cHJvdG9ieW51bWJlcl9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChnZXRncmVudF9yPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChpX2ZjbnRsPVwpJ3VuZGVmJyxcMSdkZWZpbmUnLGciIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChoX2ZjbnRsPVwpJ2ZhbHNlJyxcMSd0cnVlJyxnIiBcCisgICAgICAgICAgICAgICAgICAgICAgIC1lICJzLC1mc3RhY2stcHJvdGVjdG9yLC1mbm8tc3RhY2stcHJvdGVjdG9yLGciIFwKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQorICAgICAgICBmaQorCisgICAgICAgICMgVXBkYXRlIHNvbWUgcGF0aHMgaW4gdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VkIC1pIC1lICdzLEBBUkNIQC10aHJlYWQtbXVsdGksLGcnIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBBUkNIQCwke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30sZycgXAorICAgICAgICAgICAgICAgLWUgJ3MsQFNUQUdJTkdESVJALCR7U1RBR0lOR19ESVJfSE9TVH0sZycgXAorICAgICAgICAgICAgICAgLWUgInMsQElOQ0xVREVESVJALCR7U1RBR0lOR19JTkNESVJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLEBMSUJESVJALCR7bGliZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicyxAQkFTRUxJQkRJUkAsJHtiYXNlX2xpYmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgInMsQEVYRUNQUkVGSVhALCR7ZXhlY19wcmVmaXh9LGciIFwKKyAgICAgICAgICAgICAgIC1lICdzLEBVU1JCSU5ALCR7YmluZGlyfSxnJyBcCisgICAgICAgICAgICAgICAtZSAicywtbG5zbCwsZyIgXAorICAgICAgICAgICAgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQorCisJY2FzZSAiJHtUQVJHRVRfQVJDSH0iIGluCisJCXg4Nl82NCB8IHBvd2VycGMgfCBzMzkwKQorCQkJc2VkIC1pIC1lICJzLFwobmVlZF92YV9jb3B5PVwpJ3VuZGVmJyxcMSdkZWZpbmUnLGciIFwKKwkJCQljb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisJCQk7OworCQlhcm0pCisJCQlzZWQgLWkgLWUgInMsXChkX3UzMmFsaWduPVwpJ3VuZGVmJyxcMSdkZWZpbmUnLGciIFwKKwkJCQljb25maWcuc2gtJHtUQVJHRVRfQVJDSH0tJHtUQVJHRVRfT1N9CisJCQk7OworCWVzYWMKKyAgICAgICAgIyBUaGVzZSBhcmUgc3RyZXduIGFsbCBvdmVyIHRoZSBzb3VyY2UgdHJlZQorICAgICAgICBmb3IgZm9vIGluIGBncmVwIC1JIC0tZXhjbHVkZT0iKi5wYXRjaCIgLS1leGNsdWRlPSIqLmRpZmYiIC0tZXhjbHVkZT0iKi5wb2QiIC0tZXhjbHVkZT0iUkVBRE1FKiIgLS1leGNsdWRlPSJHbG9zc2FyeSIgLW0xICIvdXNyL2luY2x1ZGUvLipcLmgiICR7U30vKiAtciAtbGAgJHtTfS91dGlscy9oMnhzLlBMIDsgZG8KKyAgICAgICAgICAgIGVjaG8gRml4aW5nOiAkZm9vCisgICAgICAgICAgICBzZWQgLWUgJ3N8XChbICJeJ1wnJ0ldXCtcKS91c3IvaW5jbHVkZS98XDEke1NUQUdJTkdfSU5DRElSfS98ZycgLWkgJGZvbworICAgICAgICBkb25lCisKKyAgICAgICAgcm0gLWYgY29uZmlnCisgICAgICAgIGVjaG8gIkFSQ0ggPSAke1RBUkdFVF9BUkNIfSIgPiBjb25maWcKKyAgICAgICAgZWNobyAiT1MgPSAke1RBUkdFVF9PU30iID4+IGNvbmZpZworfQorCitkb19jb21waWxlKCkgeworICAgICAgICAjIEZpeCB0byBhdm9pZCByZWN1cnNpdmUgc3Vic3RpdHV0aW9uIG9mIHBhdGgKKyAgICAgICAgc2VkIC1pIC1lICdzfChAbGlicGF0aCwgIi4qInwoQGxpYnBhdGgsICIke1NUQUdJTkdfTElCRElSfSJ8ZycgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtCisKKyAgICAgICAgY2QgQ3Jvc3MKKyAgICAgICAgb2VfcnVubWFrZSBwZXJsIExEPSIke0NDTER9IgorfQorCitkb19jb21waWxlX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcyBmcm9tIG51bWVyb3VzIGNvbW1lbnRzLi4uCisgICAgICAgIGZpbmQgIiR7U30vY3Bhbi9FbmNvZGUiIC10eXBlIGYgXAorICAgICAgICAgICAgXCggLW5hbWUgJyouZXhoJyAtbyAtbmFtZSAnKi5jJyAtbyAtbmFtZSAnKi5oJyBcKVwKKyAgICAgICAgICAgIC1leGVjIHNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIHt9ICsKKyAgICAgICAgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyAke1N9L3BlcmwuaCAke1N9L3BwLmgKKyAgICAgICAgc2VkIC1pIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfS91c3IvYmluL3BlcmwtbmF0aXZlL3Blcmwke1BWfS5yZWFsOi91c3IvYmluL3Blcmwke1BWfTpnJyAgXAorICAgICAgICAgICAgJHtTfS9jcGFuL0NvbXByZXNzLVJhdy1CemlwMi9jb25zdGFudHMuaCBcCisgICAgICAgICAgICAke1N9L2NwYW4vQ29tcHJlc3MtUmF3LVpsaWIvY29uc3RhbnRzLmggXAorICAgICAgICAgICAgJHtTfS9jcGFuL0lQQy1TeXNWL2NvbnN0LWMuaW5jIFwKKyAgICAgICAgICAgICR7U30vZGlzdC9UaW1lLUhpUmVzL2NvbnN0LWMuaW5jCit9CisKK2RvX2luc3RhbGwoKSB7CisJI2V4cG9ydCBob3N0cGVybD0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3Blcmwke1BWfSIKKwlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9CisgICAgICAgICMgQWRkIHBlcmwgcG9pbnRpbmcgYXQgY3VycmVudCB2ZXJzaW9uCisgICAgICAgIGxuIC1zZiBwZXJsJHtQVn0gJHtEfSR7YmluZGlyfS9wZXJsCisKKyAgICAgICAgbG4gLXNmIHBlcmwgJHtEfS8ke2xpYmRpcn0vcGVybDUKKworICAgICAgICAjIFJlbW92ZSB1bndhbnRlZCBmaWxlIGFuZCBlbXB0eSBkaXJlY3RvcmllcworICAgICAgICBybSAtZiAke0R9LyR7bGliZGlyfS9wZXJsLyR7UFZ9Ly5wYWNrbGlzdAorCXJtZGlyICR7RH0vJHtsaWJkaXJ9L3Blcmwvc2l0ZV9wZXJsLyR7UFZ9CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0vcGVybC9zaXRlX3BlcmwKKworICAgICAgICAjIEZpeCB1cCBzaGFyZWQgbGlicmFyeQorICAgICAgICBtdiAke0R9LyR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvbGlicGVybC5zbyAke0R9LyR7bGliZGlyfS9saWJwZXJsLnNvLiR7UFZ9CisgICAgICAgIGxuIC1zZiBsaWJwZXJsLnNvLiR7UFZ9ICR7RH0vJHtsaWJkaXJ9L2xpYnBlcmwuc28uNQorICAgICAgICBsbiAtc2YgLi4vLi4vLi4vbGlicGVybC5zby4ke1BWfSAke0R9LyR7bGliZGlyfS9wZXJsLyR7UFZ9L0NPUkUvbGlicGVybC5zbworCisgICAgICAgICMgdGFyZ2V0IGNvbmZpZywgdXNlZCBieSBjcGFuLmJiY2xhc3MgdG8gZXh0cmFjdCB2ZXJzaW9uIGluZm9ybWF0aW9uCisgICAgICAgIGluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybAorCisgICAgICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwgXAorICAgICAgICAgICAgUEVSTDVMSUI9JyRQRVJMNUxJQjokT0VDT1JFX05BVElWRV9TWVNST09ULyR7bGliZGlyX25hdGl2ZXNka30vcGVybC9zaXRlX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3BlcmwvdmVuZG9yX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3BlcmwvJHtQVn0nCit9CisKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3BlcmxfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKyAgICAgICAgIyBGaXggdXAgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VkIC1pIC1lICJzLCR7RH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7REVCVUdfUFJFRklYX01BUH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywtaXN5c3RlbSR7U1RBR0lOR19JTkNESVJ9ICwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJ9LCR7YmluZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vLCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0vJHtUQVJHRVRfUFJFRklYfSwke2JpbmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJ4cyBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gycGggXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QybWFuIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnRleHQgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydXNhZ2UgXAorICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RjaGVja2VyIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kc2VsZWN0IFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL2NvbmZpZy5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFL3BlcmwuaCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ09SRS9wcC5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWcucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZy5wb2QgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS5wbCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvTGlibGlzdC9LaWQucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsLyR7UFZ9L0ZpbGVDYWNoZS5wbSBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3BlcmwvJHtQVn0vcG9kLyoucG9kIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybC9jb25maWcuc2gKK30KKworUEFDS0FHRVMgPSAicGVybC1kYmcgcGVybCBwZXJsLW1pc2MgcGVybC1kZXYgcGVybC1wb2QgcGVybC1kb2MgcGVybC1saWIgXAorICAgICAgICAgICAgcGVybC1tb2R1bGUtY3BhbiBwZXJsLW1vZHVsZS1jcGFucGx1cyBwZXJsLW1vZHVsZS11bmljb3JlIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3BlcmwgJHtiaW5kaXJ9L3Blcmwke1BWfSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWcucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vc3RyaWN0LnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3dhcm5pbmdzLnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3dhcm5pbmdzIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L3ZhcnMucG0gXAorICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke2JpbmRpcn0vcGVybC5yZWFsIgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBwZXJsLW1vZHVsZS1jb25maWcgcGVybC1tb2R1bGUtd2FybmluZ3MgXAorICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vcGVybC8ke1BWfS9DT1JFIgorRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWJwZXJsLnNvKiBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC9jb25maWcuc2ggXAorCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfZ2l0LnBsIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9Db25maWdfaGVhdnkucGwgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NvbmZpZ19oZWF2eS10YXJnZXQucGwiCitGSUxFU18ke1BOfS1wb2QgPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vcG9kIFwKKwkJICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9LyovKi5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9LyovKi8qLnBvZCAiCitGSUxFU19wZXJsLW1pc2MgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLnR4dCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vKi8qLyoudHh0IFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9hdXRvL1hTL1R5cGVtYXAgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0IvYXNzZW1ibGUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0IvY2NfaGFybmVzcyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9kaXNhc3NlbWJsZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQi9tYWtlbGlibGlua3MgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NHSS9lZyBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTi9QQVVTRTIwMDMucHViIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOL1NJR05BVFVSRSBcCisJCSAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU5QTFVTL1NoZWxsL0RlZmF1bHQvUGx1Z2lucy9IT1dUTy5wb2QgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0VuY29kZS9lbmNvZGUuaCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvTUFOSUZFU1QuU0tJUCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vRXh0VXRpbHMvTk9URVMgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L0V4dFV0aWxzL1BBVENISU5HIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy90eXBlbWFwIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy94c3VicHAgXAorCQkgICAke2xpYmRpcn0vcGVybC8ke1BWfS9FeHRVdGlscy9DaGFuZ2VzX0VVLUluc3RhbGwgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsLyR7UFZ9L05ldC8qLmVnIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS91bmljb3JlL21rdGFibGVzIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS91bmljb3JlL21rdGFibGVzLmxzdCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BlcmwvJHtQVn0vdW5pY29yZS92ZXJzaW9uICIKKworRklMRVNfcGVybC1tb2R1bGUtY3BhbiArPSAiJHtsaWJkaXJ9L3BlcmwvJHtQVn0vQ1BBTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOLnBtIgorRklMRVNfcGVybC1tb2R1bGUtY3BhbnBsdXMgKz0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L0NQQU5QTFVTIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybC8ke1BWfS9DUEFOUExVUy5wbSIKK0ZJTEVTX3BlcmwtbW9kdWxlLXVuaWNvcmUgKz0gIiR7bGliZGlyfS9wZXJsLyR7UFZ9L3VuaWNvcmUiCisKKyMgQ3JlYXRlIGEgcGVybC1tb2R1bGVzIHBhY2thZ2UgcmVjb21tZW5kaW5nIGFsbCB0aGUgb3RoZXIgcGVybAorIyBwYWNrYWdlcyAoYWN0dWFsbHkgdGhlIG5vbiBtb2R1bGVzIHBhY2thZ2VzIGFuZCBub3QgY3JlYXRlZCB0b28pCitBTExPV19FTVBUWV9wZXJsLW1vZHVsZXMgPSAiMSIKK1BBQ0tBR0VTX2FwcGVuZCA9ICIgcGVybC1tb2R1bGVzICIKKworUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9wZXJsX3BhY2thZ2VzICIKKworcHl0aG9uIHNwbGl0X3BlcmxfcGFja2FnZXMgKCkgeworICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcGVybC8ke1BWfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnYXV0by8oW14uXSopL1teL10qXC4oc298bGR8aXh8YWwpJywgJ3BlcmwtbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdNb2R1bGUvKFteXC9dKilcLnBtJywgJ3BlcmwtbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdNb2R1bGUvKFteXC9dKikvLionLCAncGVybC1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJyheKD8hKENQQU5cL3xDUEFOUExVU1wvfE1vZHVsZVwvfHVuaWNvcmVcL3xhdXRvXC8pW15cL10pLiopXC4ocG18cGx8ZTJ4KScsICdwZXJsLW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisKKyAgICAjIHBlcmwtbW9kdWxlcyBzaG91bGQgcmVjb21tZW5kIGV2ZXJ5IHBlcmwgbW9kdWxlLCBhbmQgb25seSB0aGUKKyAgICAjIG1vZHVsZXMuIERvbid0IGF0dGVtcHQgdG8gdXNlIHRoZSByZXN1bHQgb2YgZG9fc3BsaXRfcGFja2FnZXMoKSBhcyBzb21lCisgICAgIyBtb2R1bGVzIGFyZSBtYW51YWxseSBzcGxpdCAoZWcuIHBlcmwtbW9kdWxlLXVuaWNvcmUpLgorICAgIHBhY2thZ2VzID0gZmlsdGVyKGxhbWJkYSBwOiAncGVybC1tb2R1bGUtJyBpbiBwLCBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpKQorICAgIGQuc2V0VmFyKGQuZXhwYW5kKCJSUkVDT01NRU5EU18ke1BOfS1tb2R1bGVzIiksICcgJy5qb2luKHBhY2thZ2VzKSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXnBlcmwtbW9kdWxlLS4qKD88IVwtbmF0aXZlKSQiCitQQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZXNkayA9ICJebmF0aXZlc2RrLXBlcmwtbW9kdWxlLS4qIgorCitSUFJPVklERVNfcGVybC1saWIgPSAicGVybC1saWIiCisKK3JlcXVpcmUgcGVybC1yZGVwZW5kc18ke1BWfS5pbmMKK3JlcXVpcmUgcGVybC1wdGVzdC5pbmMKKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhN2I2NjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJwa2djb25mIHByb3ZpZGVzIGNvbXBpbGVyIGFuZCBsaW5rZXIgY29uZmlndXJhdGlvbiBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4iCi1ERVNDUklQVElPTiA9ICJwa2djb25mIGlzIGEgcHJvZ3JhbSB3aGljaCBoZWxwcyB0byBjb25maWd1cmUgY29tcGlsZXIgYW5kIGxpbmtlciBcCi1mbGFncyBmb3IgZGV2ZWxvcG1lbnQgZnJhbWV3b3Jrcy4gSXQgaXMgc2ltaWxhciB0byBwa2ctY29uZmlnIGZyb20gXAotZnJlZWRlc2t0b3Aub3JnLCBwcm92aWRpbmcgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHdoaWxlIGFsc28gbWFpbnRhaW5pbmcgXAotY29tcGF0aWJpbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGtnY29uZi5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wa2djb25mL3BrZ2NvbmYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLVBST1ZJREVTICs9ICJwa2djb25maWciCi1SUFJPVklERVNfJHtQTn0gKz0gInBrZ2NvbmZpZyIKLURFRkFVTFRfUFJFRkVSRU5DRSA9ICItMSIKLQotIyBUaGUgcGtnY29uZiBsaWNlbnNlIHNlZW1zIHRvIGJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJTRC0yLUNsYXVzZSBvcgotIyBJU0MsIGJ1dCBoYXMgZGlmZmVyZW50IHdvcmRpbmcsIHNvIG5lZWRzIGl0cyBvd24gbmFtZS4KLUxJQ0VOU0UgPSAicGtnY29uZiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIyMTQyMjJlYzFhODIwYmQ2Y2M3NTE2N2E1NjkyNWUwIgotCi1TUkNfVVJJID0gIlwKLSAgICBodHRwczovL2Rpc3RmaWxlcy5kZXJlZmVyZW5jZWQub3JnL3BrZ2NvbmYvcGtnY29uZi0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLXdyYXBwZXIgXAotICAgIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5pbiBcCi0gICAgZmlsZTovL3BrZy1jb25maWctZXNkay5pbiBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNjc4ZDI0MmI0ZWVmMTc1NGJiYTZhNTg2NDJhZjEwYmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFiMzkzNzFkNGFiOTcyYmUxZDUzOWE4YjEwYjZjYzIxZjhlYWZjOTdmNjE3MTAyZTY2N2U4MmJkMzJlYjIzNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wa2ctY29uZmlnLWRpcj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZzoke2RhdGFkaXJ9L3BrZ2NvbmZpZyciCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIEluc3RhbGwgYSB3cmFwcGVyIHdoaWNoIGRlYWxzLCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggcGtnY29uZiB2cwotICAgICMgcGtnLWNvbmZpZyBjb21wYXRpYmlsaXR5IGlzc3Vlcy4KLSAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vcGtnLWNvbmZpZy13cmFwcGVyIiAiJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnIgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgICMgSW5zdGFsbCBhIHBrZy1jb25maWctbmF0aXZlIHdyYXBwZXIgdGhhdCB3aWxsIHVzZSB0aGUgbmF0aXZlIHN5c3Jvb3QgaW5zdGVhZAotICAgICMgb2YgdGhlIE1BQ0hJTkUgc3lzcm9vdCwgZm9yIHVzaW5nIHBrZy1jb25maWcgd2hlbiBidWlsZGluZyBuYXRpdmUgdG9vbHMuCi0gICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAotICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1uYXRpdmUuaW4gPiAke0J9L3BrZy1jb25maWctbmF0aXZlCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctbmF0aXZlICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1uYXRpdmUKLSAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCi0gICAgICAgIC1lICJzfEBMSUJESVJfTkFUSVZFQHwke1BLR19DT05GSUdfTElCRElSfXwiIFwKLSAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctZXNkay5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1lc2RrCi0gICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctZXNkayAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctZXNkawotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwa2ctY29uZmlnIgotCi0jIFdoZW4gdXNpbmcgdGhlIFJQTSBnZW5lcmF0ZWQgYXV0b21hdGljIHBhY2thZ2UgZGVwZW5kZW5jaWVzLCBzb21lIHBhY2thZ2VzCi0jIHdpbGwgZW5kIHVwIHJlcXVpcmluZyAncGtnY29uZmlnKHBrZy1jb25maWcpJy4gIEFsbG93IHRoaXMgYmVoYXZpb3IgYnkKLSMgc3BlY2lmeWluZyBhbiBhcHByb3ByaWF0ZSBwcm92aWRlLgotUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWcocGtnLWNvbmZpZykiCi0KLSMgSW5jbHVkZSBwa2cubTQgaW4gdGhlIG1haW4gcGFja2FnZSwgbGVhdmluZyBsaWJwa2djb25mIGRldiBmaWxlcyBpbiAtZGV2Ci1GSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLXBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsgKCkgewotICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICBwa2djb25mZGlyPSIke1NTVEFURV9JTlNURElSfS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvJHtiaW5kaXJfbmF0aXZlfSIKLSAgICAgICBtdiAkcGtnY29uZmRpci9wa2ctY29uZmlnICRwa2djb25mZGlyL3BrZy1jb25maWcucmVhbAotICAgICAgIGxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZwotICAgICAgIHNlZCAtaSAtZSAic3xecGtnLWNvbmZpZ3xwa2ctY29uZmlnLnJlYWx8IiAkcGtnY29uZmRpci9wa2ctY29uZmlnLW5hdGl2ZQotICAgZmkKLX0KLQotU1NUQVRFUE9TVFVOUEFDS0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS41LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE1NDc4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjUuMy5iYgpAQCAtMCwwICsxLDY5IEBACitTVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKK0RFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKK2ZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCitmcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCitjb21wYXRpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCisjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCisjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgorTElDRU5TRSA9ICJwa2djb25mIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjIxNDIyMmVjMWE4MjBiZDZjYzc1MTY3YTU2OTI1ZTAiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL3BrZy1jb25maWctd3JhcHBlciBcCisgICAgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLmluIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1lc2RrLmluIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjE3NDNiY2ExNGM4ODJjMGYyODI3NDYxNjhhNWVkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzQ2ODMwODU1M2M5NDM4OWRhZGZkMTBjNGQxMDY3MjY5MDUyYjUzNjQyNzZhOWQyNGE2NDNjODg0ODVmNzE1IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wa2ctY29uZmlnLWRpcj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZzoke2RhdGFkaXJ9L3BrZ2NvbmZpZyciCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIEluc3RhbGwgYSB3cmFwcGVyIHdoaWNoIGRlYWxzLCBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGggcGtnY29uZiB2cworICAgICMgcGtnLWNvbmZpZyBjb21wYXRpYmlsaXR5IGlzc3Vlcy4KKyAgICBpbnN0YWxsIC1tIDA3NTUgIiR7V09SS0RJUn0vcGtnLWNvbmZpZy13cmFwcGVyIiAiJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnIgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgICMgSW5zdGFsbCBhIHBrZy1jb25maWctbmF0aXZlIHdyYXBwZXIgdGhhdCB3aWxsIHVzZSB0aGUgbmF0aXZlIHN5c3Jvb3QgaW5zdGVhZAorICAgICMgb2YgdGhlIE1BQ0hJTkUgc3lzcm9vdCwgZm9yIHVzaW5nIHBrZy1jb25maWcgd2hlbiBidWlsZGluZyBuYXRpdmUgdG9vbHMuCisgICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1uYXRpdmUuaW4gPiAke0J9L3BrZy1jb25maWctbmF0aXZlCisgICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctbmF0aXZlICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1uYXRpdmUKKyAgICBzZWQgLWUgInN8QFBBVEhfTkFUSVZFQHwke1BLR19DT05GSUdfUEFUSH18IiBcCisgICAgICAgIC1lICJzfEBMSUJESVJfTkFUSVZFQHwke1BLR19DT05GSUdfTElCRElSfXwiIFwKKyAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctZXNkay5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1lc2RrCisgICAgaW5zdGFsbCAtbTc1NSAke0J9L3BrZy1jb25maWctZXNkayAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctZXNkaworfQorCisjIFdoZW4gdXNpbmcgdGhlIFJQTSBnZW5lcmF0ZWQgYXV0b21hdGljIHBhY2thZ2UgZGVwZW5kZW5jaWVzLCBzb21lIHBhY2thZ2VzCisjIHdpbGwgZW5kIHVwIHJlcXVpcmluZyAncGtnY29uZmlnKHBrZy1jb25maWcpJy4gIEFsbG93IHRoaXMgYmVoYXZpb3IgYnkKKyMgc3BlY2lmeWluZyBhbiBhcHByb3ByaWF0ZSBwcm92aWRlLgorUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWcocGtnLWNvbmZpZykiCisKKyMgSW5jbHVkZSBwa2cubTQgaW4gdGhlIG1haW4gcGFja2FnZSwgbGVhdmluZyBsaWJwa2djb25mIGRldiBmaWxlcyBpbiAtZGV2CitGSUxFU18ke1BOfS1kZXZfcmVtb3ZlID0gIiR7ZGF0YWRpcn0vYWNsb2NhbCIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK3BrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsgKCkgeworICAgaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KKyAgICAgICBwa2djb25mZGlyPSIke1NTVEFURV9JTlNURElSfS9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvJHtiaW5kaXJfbmF0aXZlfSIKKyAgICAgICBtdiAkcGtnY29uZmRpci9wa2ctY29uZmlnICRwa2djb25mZGlyL3BrZy1jb25maWcucmVhbAorICAgICAgIGxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZworICAgICAgIHNlZCAtaSAtZSAic3xecGtnLWNvbmZpZ3xwa2ctY29uZmlnLnJlYWx8IiAkcGtnY29uZmRpci9wa2ctY29uZmlnLW5hdGl2ZQorICAgZmkKK30KKworU1NUQVRFUE9TVFVOUEFDS0ZVTkNTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHBrZ2NvbmZfc3N0YXRlX2ZpeHVwX2VzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1zcmMtYXJjaC1taXBzLmMtY2hlY2staW5mby1yZXNvbHZldGxzLWJlZm9yZS11c2UtaXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTY4ODI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDIxMzY5NjllM2UxOTZiOWNmN2Y0Nzg4MzQwZWZhNGIxZDliMzk1NjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTEgT2N0IDIwMTggMTA6MDU6NTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL2FyY2gtbWlwcy5jOiBjaGVjayBpbmZvLT5yZXNvbHZldGxzIGJlZm9yZSB1c2UgaXRzIG1lbWJlcgorCitUaGUgaW5mby0+cmVzb2x2ZXRscyBtaWdodCBiZSBOVUxMIGFjY29yZGluZyB0byBzcmMvcHJlbGluay5jOgorW3NuaXBdCisgLyogRHluYW1pYyBsaW5rZXIgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LAorICAgIGFsbCBzeW1ib2xzIHJlc29sdmUgdG8gdGhlbXNlbHZlcyB3aXRoIHRoZSBleGNlcHRpb24KKyAgICBvZiBTSE5fVU5ERUYgc3ltYm9scyB3aGljaCByZXNvbHZlIHRvIDAuICAqLworaWYgKGluZm8tPnN5bXRhYltyX3N5bV0uc3Rfc2huZHggPT0gU0hOX1VOREVGKQorICB7CisgICAgaW5mby0+cmVzb2x2ZWVudCA9IE5VTEw7CisgICAgaW5mby0+cmVzb2x2ZXRscyA9IE5VTEw7Citbc25pcF0KKworU28gd2UgbXVzdCBjaGVjayBpdCBiZWZvcmUgdXNlIGl0cyBtZW1iZXJzLCBvdGhlcndpc2UsIHRoZXJlIG1pZ2h0IGJlCitTZWdtZW50YXRpb24gZmF1bHQgZXJyb3IuCisKK0ZpeGVkOgorTUFDSElORSA9ICJxZW11bWlwcyIKK0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBxZW11IgorJCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbAorW3NuaXBdCit8IC9wYXRoL3RvL3FlbXVtaXBzLXBva3ktbGludXgvY29yZS1pbWFnZS1taW5pbWFsLzEuMC1yMC90ZW1wL3J1bi5wcmVsaW5rX2ltYWdlLjEwMDA6IGxpbmUgMTExOiAgMTAxMCBTZWdtZW50YXRpb24gZmF1bHQgICAgICAoY29yZSBkdW1wZWQpCitbc25pcF0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vbGlzdHMueW9jdG9wcm9qZWN0Lm9yZy9waXBlcm1haWwveW9jdG8vMjAxOC1PY3RvYmVyLzA0MjgxMi5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9hcmNoLW1pcHMuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2FyY2gtbWlwcy5jIGIvc3JjL2FyY2gtbWlwcy5jCitpbmRleCBjY2IxODM0Li4wMmM2MDhmIDEwMDY0NAorLS0tIGEvc3JjL2FyY2gtbWlwcy5jCisrKysgYi9zcmMvYXJjaC1taXBzLmMKK0BAIC01NjcsNyArNTY3LDggQEAgbWlwc19wcmVsaW5rX3JlbG9jIChzdHJ1Y3QgcHJlbGlua19pbmZvICppbmZvLCBHRWxmX0FkZHIgcl9vZmZzZXQsCisgICAgICAgaWYgKGRzby0+ZWhkci5lX3R5cGUgPT0gRVRfRVhFQykKKyAJeworIAkgIHZhbHVlID0gaW5mby0+cmVzb2x2ZSAoaW5mbywgcl9zeW0sIHJfdHlwZSk7CistCSAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKKysJICBpZiAoaW5mby0+cmVzb2x2ZXRscyAhPSBOVUxMKQorKwkgICAgdmFsdWUgKz0gaW5mby0+cmVzb2x2ZXRscy0+b2Zmc2V0IC0gVExTX1RQX09GRlNFVDsKKyAJICBpZiAocl90eXBlID09IFJfTUlQU19UTFNfVFBSRUwzMikKKyAJICAgIG1pcHNfcHJlbGlua18zMmJpdF9yZWxvYyAoZHNvLCByZWxhLCB2YWx1ZSk7CisgCSAgZWxzZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgppbmRleCAwZjZkMTZlLi5iMTI2MWQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTksNyArOSw3IEBACiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTNjMDU1MGJkMzE3M2Y0NTA0YjJjYmQ4OTkxZTUwYiIKLVNSQ1JFViA9ICIwNWFlYWZkMDUzZTU2MzU2ZWM4YzYyZjRiYjhmN2I5NWJhZTE5MmYzIgorU1JDUkVWID0gImE4NTNhNWQ3MTVkODRlZWM5M2FhNjhlOGYyZGYyNmI3ZDg2MGY1YjIiCiBQViA9ICIxLjArZ2l0JHtTUkNQVn0iCiAKICMKQEAgLTI3LDExICsyNywxMyBAQAogCiBQQUNLQUdFUyA9KyAiJHtQTn0tY3JvbiIKIAotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wcmVsaW5rLWNyb3NzLmdpdDticmFuY2g9Y3Jvc3NfcHJlbGluayBcCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3ByZWxpbmstY3Jvc3MuZ2l0O2JyYW5jaD1jcm9zc19wcmVsaW5rX3N0YWdpbmcgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5jb25mIFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAotCSAgIGZpbGU6Ly9tYWNyb3MucHJlbGluayIKKyAgICAgICAgICAgZmlsZTovL21hY3Jvcy5wcmVsaW5rIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaCBcCisiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKIFRBUkdFVF9PU19PUklHIDo9ICIke1RBUkdFVF9PU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCmluZGV4IDkxMDNkNDkuLjc5ZTBiNmIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCkBAIC04LDcgKzgsNyBAQAogICAgICAgICAgICBmaWxlOi8vdG9vbWFueWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNSRVYgPSAiZmRkYmU4NTRjOWRiMDU4ZDVhMDU4MzBkM2JjZGQ0MjMzZDk1ZWUyZSIKK1NSQ1JFViA9ICI2Mjk0YjM0NGU1MTQwZjU0NjdlNjg2MGY0NWExNzQ0NDAwMTUzMDRlIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIFBWID0gIjEuOS4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCmluZGV4IDI4NGYyMTMuLjFiNTFmN2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jCkBAIC0xMCw4ICsxMCw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMzk4NzhmYWZiMTE4Mjg5ODNhZWVjNTgzZGRhNGEwNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGJjZGExOTRmNDllMGNmMDY2M2ZhODEzMWNiOWQ3YTNiODc2ZDE0ZGVhMDA0N2QzYzVmZGZhZjIwYWRiYjQwIgorU1JDX1VSSVttZDVzdW1dID0gImUzMTg5ZWU4NTFjM2EwZTJlNmU0YzZlODBhNzExZWM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiNGEwMjc1OGZiNjhhNjVlYTk4NmQ4MDg4NjdmMWQ2MzgzMjE5YzIzNGFlZjU1M2E4NzQxODE4ZTc5NWI1MjkiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKQEAgLTc3LDYgKzc3LDggQEAKIAogUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgogCitDTEVBTkJST0tFTiA9ICIxIgorCiAjIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQogIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgogZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjE0LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHlfMS4xNC4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTQuNS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNC41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE0LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTQuNS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjE3OTIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAwMTk0MjJkMTljNjQwMWZhOGY0NWIxMzExZWNkMzFiYjA4N2M4MDlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNyBKdWwgMjAxOCAxMDoxMzozOCArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25kaXRpb25hbGx5IGRvIG5vdCBmZXRjaCBjb2RlIGJ5IGVhc3lfaW5zdGFsbAorCitJZiB2YXItTk9fRkVUQ0hfQlVJTEQgaXMgc2V0LCBkbyBub3QgYWxsb3cgdG8gZmV0Y2ggY29kZSBmcm9tCitpbnRlcm5ldCBieSBlYXN5X2luc3RhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weSBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKK2luZGV4IDg1ZWU0MGYuLjdlYjlkMmEgMTAwNzU1CistLS0gYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CisrKysgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CitAQCAtNjM3LDYgKzYzNywxMSBAQCBjbGFzcyBlYXN5X2luc3RhbGwoQ29tbWFuZCk6CisgICAgICAgICAgICAgb3MucGF0aC5leGlzdHModG1wZGlyKSBhbmQgcm10cmVlKHJtdHJlZV9zYWZlKHRtcGRpcikpCisgCisgICAgIGRlZiBlYXN5X2luc3RhbGwoc2VsZiwgc3BlYywgZGVwcz1GYWxzZSk6CisrICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgnTk9fRkVUQ0hfQlVJTEQnLCBOb25lKToKKysgICAgICAgICAgICBsb2cuZXJyb3IoIkVSUk9SOiBEbyBub3QgdHJ5IHRvIGZldGNoIGAlcycgZm9yIGJ1aWxkaW5nLiAiCisrICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgYWRkIGl0cyBuYXRpdmUgcmVjaXBlIHRvIERFUEVORFMuIiAlIHNwZWMpCisrICAgICAgICAgICAgcmV0dXJuIE5vbmUKKysKKyAgICAgICAgIGlmIG5vdCBzZWxmLmVkaXRhYmxlOgorICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9zaXRlX3B5KCkKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1leHRyYXMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1leHRyYXMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZTExYjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV4dHJhcy5pbmMKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJVc2VmdWwgZXh0cmEgYml0cyBmb3IgUHl0aG9uIC0gdGhpbmdzIHRoYXQgc2hvdWxkIGJlIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9leHRyYXMvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDEwOGYzMzhiMmY2OGZlNDhhYzM2NmM0NjUwYmQ4YiIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYTYzYWQ2MGNmOGYwMTg2YzllM2EwMmY1NWVjNWIxNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzJlMzZkZTEwYjljOTFkNWQ0Y2M2MjAxNjBhNDc2ZTA0NjhhODhmMTZjOTQzMTgxN2E2NzI5NjExYTgxYjRlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0LmluYwppbmRleCA4ZDM3NjkzLi43Y2NmMTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jCkBAIC0xMiw4ICsxMiw4IEBACiAKIGluaGVyaXQgcHlwaQogCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E5NGVlMWI5MjNmYjc3MmEyYTBjNjY0OTQzMGExN2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ2MWJjMjVkZWFkYjUzNWIwNDc2ODRkMDZmMzY1NGMwMDFkOTQxNWUxOTcxZTUxYzljMjBmNWI1MTAwNzZlOSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZWU0M2EzOWExNDY4MDg0ZDQ5ZDFjNDlmYjY3NTIwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MjM3ZGM1YmZkNmYxMzY2YWJlZWU1NjI0MTExYjlkNjg3OTM5M2Q4NDc0NWE1MDdkZTBmZGE4NjA0M2I2NWE4IgogCiBERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1naXRkYiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwppbmRleCAyZDUyOTJlLi43ODlhYjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYwpAQCAtOCw4ICs4LDggQEAKIAogUFlQSV9QQUNLQUdFID0gImdpdGRiMiIKIAotU1JDX1VSSVttZDVzdW1dID0gImQ1MjE3ZWI5NGViZDM2ZmNlYzYyYjkyOWQxZjcyYjAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI2MGUyOWQ0NTMzZTVlMjViYjUwYjc2NzhiYmMxODdjOGY2YmNmZjEzNDRiNGYyOTNiMmJhNTVjODU3OTVmMDkiCitTUkNfVVJJW21kNXN1bV0gPSAiNmUyMWY1Nzk1YTIwNGY3YWZlY2IwYTcyZmZmNjY5MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmI0Yzg1YjhhNTg1MzFjNTEzNzNjODlmOTIxNjNiOTJmMzBmODEzNjk2MDVhNjdjZDUyZDFmYzIxMjQ2YzA0NCIKIAogREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tYXN5bmMgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlICR7UFlUSE9OX1BOfS1zbW1hcCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjk1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJQeXRob24gQnVpbGQgUmVhc29uYWJsZW5lc3MiCitERVNDUklQVElPTiA9ICJQQlIgaXMgYSBsaWJyYXJ5IHRoYXQgaW5qZWN0cyBzb21lIHVzZWZ1bCBhbmQgc2Vuc2libGUgZGVmYXVsdCBiZWhhdmlvcnMgaW50byB5b3VyIHNldHVwdG9vbHMgcnVuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9wYnIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkZWNlNzgyMWJmM2ZkNzBmZTEzMDllYWEzN2Q1MmEyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjYxOTc4MDg5NmNhODFjN2NkMTljNmUyZjQzOWI2YzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWI4YmU1MGQ5MzhjOWJiNzVkMGVhZjdlZGExMTFlZWMxYmY2ZGM4OGE2MmE2NDEyZTMzYmYwNzc0NTdlMGY0NSIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGlwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCA3NDcwNmJmLi4zMTViYTMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKQEAgLTIsMjcgKzIsMTkgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2V0dXB0b29scyIKIFNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgogTElDRU5TRSA9ICJNSVQiCi0KIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWEzMzg5N2YxYmNhMTE2MGQ3YWFkMzgzNTE1MmUxNTgiCiAKIFBZUElfUEFDS0FHRV9FWFQgPSAiemlwIgogCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gIjM3OTY0MmE0ZjE3MjE0MDcxZmRjMTg5NDI1NWQ4ZDExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0ZGM1NjYyNDdmMzUwMDllZDQyYzBmNDQyMmYyYjRmMGEwMzJmYWIxMzcyYzgzMDhiODY0YzhmMjZkOTMzODgiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmRpdGlvbmFsbHktZG8tbm90LWZldGNoLWNvZGUtYnktZWFzeV9pbnN0YWxsLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjYwNjMwYWUxYTY0YmFmYTM5ZGNjNTM0MDRkNjM4MjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDEyYWRiOGUyNWZiZmQ2NGM2NTJlOTllN2JhYjU4Nzk5YTNhYWYwNWQzOWFiMzg1NjFmNjkxOTBhOTA5MDE1ZiIKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59IgotREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gIiR7UFlUSE9OX1BOfS1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayArPSAibmF0aXZlc2RrLSR7UFlUSE9OX1BOfSIKIAotRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiLS1pbnN0YWxsLWxpYj0ke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1zY3JpcHQtZGlyPSR7YmluZGlyfSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCi0iCiBSREVQRU5EU18ke1BOfSA9ICJcCiAgICR7UFlUSE9OX1BOfS1jb21waWxlIFwKICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKQEAgLTQwLDcgKzMyLDYgQEAKICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKICAgJHtQWVRIT05fUE59LXhtbCBcCiAiCi0KIGRvX2luc3RhbGxfcHJlcGVuZCgpIHsKICAgICBpbnN0YWxsIC1kICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM5LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MC4wLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zOS4wLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc180MC4wLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3VidW5pdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnVuaXQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYWFhNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnVuaXQuaW5jCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN1YnVuaXQgdGVzdCBzdHJlYW1pbmcgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dGhvbi1zdWJ1bml0LyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT05MDljMDhlMjkxNjQ3ZmQ5ODVmYmU1ZDk4MzZkNTFiNiIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1zdWJ1bml0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTZkNDY4YTNhZWFmZTZjNjBhMGMzYjJiOTEzMmQ2NWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYwN2VkYmVlNGMxZTVhMzBmZjg4NTQ5Y2U4ZDlmZWIwYjliY2JjYjVlNTUwMzNhOWQ3NmU4NjA3NTQ2NWNiYiIKKworaW5oZXJpdCBweXBpCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXN0dG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXN0dG9vbHMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTFjOTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlc3R0b29scy5pbmMKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJFeHRlbnNpb25zIHRvIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS90ZXN0dG9vbHMvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lMmM5ZDNlOGJhNzE0MWM4M2JmZWYxOTBlMGI5Mzc5YSIKKworaW5oZXJpdCBweXBpCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZjBmZWI5MTU0OTc4MTZjYjk5ZTM5NDM3NDk0MjE3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ODI3ZWM2Y2Y4MjMzZTBmMjlmNTEwMjVhZGRkNzEzY2EwMTAwNjEyMDRmZGVhNzc0ODRhMjkzNDY5MGEwNTU5IgorCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1wYnIgXAorICAgICIKKworIyBTYXRpc2Z5IHNldHVwLnB5ICdzZXR1cF9yZXF1aXJlcycKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXBici1uYXRpdmUgXAorICAgICIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZXh0cmFzIFwKKyAgICAke1BZVEhPTl9QTn0tcGJyIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwppbmRleCAwNjJhMjBmLi42NjkyMzY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwpAQCAtNyw3ICs3LDEzIEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWYyNTdjYzE0ZjgxNjg1NjkxNjUyYTNkM2UxYjVkNzU0IgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1icG8tMzM1NzAtVExTLTEuMy1jaXBoZXJzLWZvci1PcGVuU1NMLTEuMS4xLUdILTY5NzYtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYnBvLTM0ODE4LUFkZC1taXNzaW5nLWNsb3Npbmctd3JhcHBlci1pbi10ZXN0X3RsczFfMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWJwby0zNDgzNC1GaXgtdGVzdF9zc2wudGVzdF9vcHRpb25zLXRvLWFjY291bnQtZm9yLU8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1icG8tMzQ4MzYtZml4LXRlc3RfZGVmYXVsdF9lY2RoX2N1cnZlLW5lZWRzLW5vLXRsc3YxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTMzMzU0LUZpeC10ZXN0X3NzbC13aGVuLWEtZmlsZW5hbWUtY2Fubm90LWJlLWVuYy5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImE4MGFlM2NjNDc4NDYwYjkyMjI0MmY0M2ExYjQwOTRkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyZDliMWFjNWIyNjEzNWFkMmI4YzI5MDFhOTQxMzUzN2UwODc0OWE3NTMzNTZlZTkxM2M4NGRiZDJkZjU1NzQiCkBAIC0zMyw2ICszOSwxMiBAQAogICAke1BZVEhPTkxTQk9QVFN9IFwKICIKIAorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJbGliZGlybGVhZj0iJChlY2hvICR7bGliZGlyfSB8IHNlZCAtZSAnczoke3ByZWZpeH0vOjonKSIKKwlzZWQgLWkgLWUgInM6U0VETUVMSUJMRUFGOiR7bGliZGlybGVhZn06ZyIgXAorCQkke1N9L2NvbmZpZ3VyZS5hYworfQorCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAJc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vaW5zdGFsbDppbnN0YWxsOmcnIFwKIAkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9ta2Rpcjpta2RpcjpnJyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtMi43LWJwby0zNDYyMy1Vc2UtWE1MX1NldEhhc2hTYWx0LWluLV9lbGVtZW50dHJlZS1HSC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS0yLjctYnBvLTM0NjIzLVVzZS1YTUxfU2V0SGFzaFNhbHQtaW4tX2VsZW1lbnR0cmVlLUdILnBhdGNoCmluZGV4IDQyYzY0Y2EuLjNjMGQ2NjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS0yLjctYnBvLTM0NjIzLVVzZS1YTUxfU2V0SGFzaFNhbHQtaW4tX2VsZW1lbnR0cmVlLUdILnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS0yLjctYnBvLTM0NjIzLVVzZS1YTUxfU2V0SGFzaFNhbHQtaW4tX2VsZW1lbnR0cmVlLUdILnBhdGNoCkBAIC0xOSw5ICsxOSw3IEBACiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0NjIzCiAKIFVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRml4IENWRS0yMDE4LTE0NjQ3Ci0KK0NWRTogQ1ZFLTIwMTgtMTQ2NDcKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIC0tLQogIEluY2x1ZGUvcHlleHBhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKysrLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWJwby0zMzM1NC1GaXgtdGVzdF9zc2wtd2hlbi1hLWZpbGVuYW1lLWNhbm5vdC1iZS1lbmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzMzU0LUZpeC10ZXN0X3NzbC13aGVuLWEtZmlsZW5hbWUtY2Fubm90LWJlLWVuYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzBiMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWJwby0zMzM1NC1GaXgtdGVzdF9zc2wtd2hlbi1hLWZpbGVuYW1lLWNhbm5vdC1iZS1lbmMucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSAxOWY2YmQwNmFmM2M3ZmMwZGI1Zjk2ODc4YWFhNjhmNTU4OWZmMTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGFibG8gR2FsaW5kbyA8UGFibG9nc2FsQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjQgTWF5IDIwMTggMjM6MjA6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnBvLTMzMzU0OiBGaXggdGVzdF9zc2wgd2hlbiBhIGZpbGVuYW1lIGNhbm5vdCBiZSBlbmNvZGVkCisgKEdILTY2MTMpCisKK1NraXAgdGVzdF9sb2FkX2RoX3BhcmFtcygpIG9mIHRlc3Rfc3NsIHdoZW4gUHl0aG9uIGZpbGVzeXN0ZW0gZW5jb2RpbmcKK2Nhbm5vdCBlbmNvZGUgdGhlIHByb3ZpZGVkIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvMTlmNmJkMDZhZjNjN2ZjMGRiNWY5Njg3OGFhYTY4ZjU1ODlmZjEzZV0KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDkgKysrKysrKystCisgLi4uL25leHQvVGVzdHMvMjAxOC0wNC0yNi0yMi0zOS0xNy5icG8tMzMzNTQuZzM1LTQ0LnJzdCAgfCAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wNC0yNi0yMi0zOS0xNy5icG8tMzMzNTQuZzM1LTQ0LnJzdAorCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggYjU5ZmU3M2YwNC4uN2NlZDkwZmRmNiAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTk4OSw2ICs5ODksMTMgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAKKyAgICAgZGVmIHRlc3RfbG9hZF9kaF9wYXJhbXMoc2VsZik6CisrICAgICAgICBmaWxlbmFtZSA9IHUnZGhww6Ryw6RtLnBlbScKKysgICAgICAgIGZzX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgZmlsZW5hbWUuZW5jb2RlKGZzX2VuY29kaW5nKQorKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKysgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJmaWxlbmFtZSAlciBjYW5ub3QgYmUgZW5jb2RlZCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAlciIgJSAoZmlsZW5hbWUsIGZzX2VuY29kaW5nKSkKKysKKyAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgIGN0eC5sb2FkX2RoX3BhcmFtcyhESEZJTEUpCisgICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CitAQCAtMTAwMSw3ICsxMDA4LDcgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQ0VSVEZJTEUpCisgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgorLSAgICAgICAgICAgIGZuYW1lID0gb3MucGF0aC5qb2luKGQsIHUnZGhww6Ryw6RtLnBlbScpCisrICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgZmlsZW5hbWUpCisgICAgICAgICAgICAgc2h1dGlsLmNvcHkoREhGSUxFLCBmbmFtZSkKKyAgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoZm5hbWUpCisgCitkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYzY2Y2VjYWMzMgorLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0CitAQCAtMCwwICsxLDIgQEAKKytTa2lwIGBgdGVzdF9zc2wudGVzdF9sb2FkX2RoX3BhcmFtc2BgIHdoZW4gUHl0aG9uIGZpbGVzeXN0ZW0gZW5jb2RpbmcgY2Fubm90IGVuY29kZSB0aGUKKytwcm92aWRlZCBwYXRoLgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjcwNTYyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni0ucGF0Y2gKQEAgLTAsMCArMSwxMjAgQEAKK0Zyb20gYTMzMzM1MTU5MmYwOTcyMjBmYzg2MjkxMWIzNGQzYTMwMGYwOTg1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogV2VkLCAxNSBBdWcgMjAxOCAwOTowNzoyOCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNF0gYnBvLTMzNTcwOiBUTFMgMS4zIGNpcGhlcnMgZm9yIE9wZW5TU0wgMS4xLjEgKEdILTY5NzYpCisgKEdILTg3NjApCisKK0NoYW5nZSBUTFMgMS4zIGNpcGhlciBzdWl0ZSBzZXR0aW5ncyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wKKzEuMS4xLXByZTYgYW5kIG5ld2VyLiBPcGVuU1NMIDEuMS4xIHdpbGwgaGF2ZSBUTFMgMS4zIGNpcGVycyBlbmFibGVkIGJ5CitkZWZhdWx0LgorCitBbHNvIHVwZGF0ZSBtdWx0aXNzbHRlc3RzIHRvIHRlc3Qgd2l0aCBsYXRlc3QgT3BlblNTTC4KKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+LgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgM2U2MzBjNTQxYjM1Yzk2YmZlNTYxOTE2NTI1NWU1NTlmNTc3ZWU3MSkKKworQ28tYXV0aG9yZWQtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC84NzcxXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgRG9jL2xpYnJhcnkvc3NsLnJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDggKystLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM3ICsrKysrKysrKysrLS0tLS0tLS0KKyAuLi4vMjAxOC0wNS0xOC0yMS01MC00Ny5icG8tMzM1NzAuN0NaeTR0LnJzdCAgfCAgMyArKworIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTE4LTIxLTUwLTQ3LmJwby0zMzU3MC43Q1p5NHQucnN0CisKK2RpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zc2wucnN0IGIvRG9jL2xpYnJhcnkvc3NsLnJzdAoraW5kZXggMDQyMTAzMTc3Mi4uN2M3Yzg1YjgzMyAxMDA2NDQKKy0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrKyBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK0BAIC0yOTQsMTEgKzI5NCw2IEBAIHB1cnBvc2VzLgorIAorICAgICAgM0RFUyB3YXMgZHJvcHBlZCBmcm9tIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCisgCistICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjcuMTUKKy0KKy0gICAgIFRMUyAxLjMgY2lwaGVyIHN1aXRlcyBUTFNfQUVTXzEyOF9HQ01fU0hBMjU2LCBUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0LAorLSAgICAgYW5kIFRMU19DSEFDSEEyMF9QT0xZMTMwNV9TSEEyNTYgd2VyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgorLQorIC4uIGZ1bmN0aW9uOjogX2h0dHBzX3ZlcmlmeV9jZXJ0aWZpY2F0ZXMoZW5hYmxlPVRydWUpCisgCisgICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHNlcnZlciBjZXJ0aWZpY2F0ZXMgYXJlIHZlcmlmaWVkIHdoZW4gY3JlYXRpbmcKK0BAIC0xMTc5LDYgKzExNzQsOSBAQCB0byBzcGVlZCB1cCByZXBlYXRlZCBjb25uZWN0aW9ucyBmcm9tIHRoZSBzYW1lIGNsaWVudHMuCisgICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKKyAgICAgICBnaXZlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgY2lwaGVyLgorIAorKyAgICAgIE9wZW5TU0wgMS4xLjEgaGFzIFRMUyAxLjMgY2lwaGVyIHN1aXRlcyBlbmFibGVkIGJ5IGRlZmF1bHQuIFRoZSBzdWl0ZXMKKysgICAgICBjYW5ub3QgYmUgZGlzYWJsZWQgd2l0aCA6bWV0aDpgflNTTENvbnRleHQuc2V0X2NpcGhlcnNgLgorKworIC4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X2FscG5fcHJvdG9jb2xzKHByb3RvY29scykKKyAKKyAgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhZHZlcnRpc2UgZHVyaW5nIHRoZSBTU0wvVExTCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggZGMxNGUyMmFkMS4uZjUxNTcyZTMxOSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTI3NzIsMTkgKzI3NzIsMjQgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIHNvY2suZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RDT05OKQorIAorLSAgICAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaXBoZXJzKHNlbGYpOgorLSAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorLSAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgIyBGb3JjZSBhIHNldCBvZiB3ZWFrIGNpcGhlcnMgb24gb3VyIGNsaWVudCBjb250ZXh0CistICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoIkRFUyIpCistICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKKy0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gREVTIGNpcGhlciBhdmFpbGFibGUiKQorLSAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlKSBhcyBzZXJ2ZXI6CistICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkpIGFzIHM6CistICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CistICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisrICAgICAgICBkZWYgdGVzdF9ub19zaGFyZWRfY2lwaGVycyhzZWxmKToKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisrICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorKworKyAgICAgICAgICAgICMgT3BlblNTTCBlbmFibGVzIGFsbCBUTFMgMS4zIGNpcGhlcnMsIGVuZm9yY2UgVExTIDEuMiBmb3IgdGVzdAorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzMKKysgICAgICAgICAgICAjIEZvcmNlIGRpZmZlcmVudCBzdWl0ZXMgb24gY2xpZW50IGFuZCBtYXN0ZXIKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMTI4IikKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMjU2IikKKysgICAgICAgICAgICB3aXRoIFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PXNlcnZlcl9jb250ZXh0KSBhcyBzZXJ2ZXI6CisrICAgICAgICAgICAgICAgIHMgPSBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldCgKKysgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KCksCisrICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJsb2NhbGhvc3QiKQorKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CisrICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCisgCisgICAgICAgICBkZWYgdGVzdF92ZXJzaW9uX2Jhc2ljKHNlbGYpOgorQEAgLTI4MTUsOSArMjgyMCw5IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocy5jaXBoZXIoKVswXSwgWworLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1BRVMtMjU2LUdDTS1TSEEzODQnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1DSEFDSEEyMC1QT0xZMTMwNS1TSEEyNTYnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1BRVMtMTI4LUdDTS1TSEEyNTYnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICdUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMU19BRVNfMTI4X0dDTV9TSEEyNTYnLAorICAgICAgICAgICAgICAgICAgICAgXSkKKyAKKyAgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgInRlc3QgcmVxdWlyZXMgRUNESC1lbmFibGVkIE9wZW5TU0wiKQorZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTE4LTIxLTUwLTQ3LmJwby0zMzU3MC43Q1p5NHQucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDUtMTgtMjEtNTAtNDcuYnBvLTMzNTcwLjdDWnk0dC5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iZDcxOWE0N2U4CistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0xOC0yMS01MC00Ny5icG8tMzM1NzAuN0NaeTR0LnJzdAorQEAgLTAsMCArMSwzIEBACisrQ2hhbmdlIFRMUyAxLjMgY2lwaGVyIHN1aXRlIHNldHRpbmdzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTAorKzEuMS4xLXByZTYgYW5kIG5ld2VyLiBPcGVuU1NMIDEuMS4xIHdpbGwgaGF2ZSBUTFMgMS4zIGNpcGVycyBlbmFibGVkIGJ5CisrZGVmYXVsdC4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1jbG9zZXMtYnBvLTM0NTQwLUNvbnZlcnQtc2h1dGlsLl9jYWxsX2V4dGVybmFsX3ppcC10LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWNsb3Nlcy1icG8tMzQ1NDAtQ29udmVydC1zaHV0aWwuX2NhbGxfZXh0ZXJuYWxfemlwLXQucGF0Y2gKaW5kZXggZTZmZTVmMi4uMTI1ZGI4NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWNsb3Nlcy1icG8tMzQ1NDAtQ29udmVydC1zaHV0aWwuX2NhbGxfZXh0ZXJuYWxfemlwLXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWNsb3Nlcy1icG8tMzQ1NDAtQ29udmVydC1zaHV0aWwuX2NhbGxfZXh0ZXJuYWxfemlwLXQucGF0Y2gKQEAgLTUsOSArNSw3IEBACiAgc3VicHJvY2VzcyByYXRoZXIgdGhhbiBkaXN0dXRpbHMuc3Bhd24uIChHSC04OTg1KQogCiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUZpeCBDVkUtMjAxOC0xMDAwODAyCi0KK0NWRTogQ1ZFLTIwMTgtMTAwMDgwMgogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogLS0tCiAgTGliL3NodXRpbC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKysrKysrLS0tLS0tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDItYnBvLTM0ODE4LUFkZC1taXNzaW5nLWNsb3Npbmctd3JhcHBlci1pbi10ZXN0X3RsczFfMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMi1icG8tMzQ4MTgtQWRkLW1pc3NpbmctY2xvc2luZy13cmFwcGVyLWluLXRlc3RfdGxzMV8zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ODgyNzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDItYnBvLTM0ODE4LUFkZC1taXNzaW5nLWNsb3Npbmctd3JhcHBlci1pbi10ZXN0X3RsczFfMy5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDBlMWYzODU2YTdlMTUxMWZiNjRkOTk2NDZjNTRkZGYzODk3Y2Q0NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEaW1pdHJpIEpvaG4gTGVka292IDx4bm94QHVidW50dS5jb20+CitEYXRlOiBGcmksIDI4IFNlcCAyMDE4IDE0OjE1OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBicG8tMzQ4MTg6IEFkZCBtaXNzaW5nIGNsb3NpbmcoKSB3cmFwcGVyIGluIHRlc3RfdGxzMV8zLgorCitQeXRob24gMi43IHNvY2tldCBjbGFzc2VzIGRvIG5vdCBpbXBsZW1lbnQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sLAoraGVuY2UgY2xvc2luZygpIGlzIHJlcXVpcmVkIGFyb3VuZCBpdC4gUmVzb2x2ZXMgdGVzdGNhc2UgZXJyb3IKK3RyYWNlYmFjay4KKworU2lnbmVkLW9mZi1ieTogRGltaXRyaSBKb2huIExlZGtvdiA8eG5veEB1YnVudHUuY29tPgorCitodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0ODE4CisKK1BhdGNoIHRha2VuIGZyb20gVWJ1bnR1LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvOTYyMl0KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IGY1MTU3MmUzMTkuLjdhMTQwNTNjZWUgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC0yODE3LDcgKzI4MTcsNyBAQCBlbHNlOgorICAgICAgICAgICAgICAgICBzc2wuT1BfTk9fVExTdjEgfCBzc2wuT1BfTk9fVExTdjFfMSB8IHNzbC5PUF9OT19UTFN2MV8yCisgICAgICAgICAgICAgKQorICAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCkgYXMgc2VydmVyOgorLSAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorKyAgICAgICAgICAgICAgICB3aXRoIGNsb3NpbmcoY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHMuY2lwaGVyKClbMF0sIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVExTX0FFU18yNTZfR0NNX1NIQTM4NCcsCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDMtYnBvLTM0ODM0LUZpeC10ZXN0X3NzbC50ZXN0X29wdGlvbnMtdG8tYWNjb3VudC1mb3ItTy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMy1icG8tMzQ4MzQtRml4LXRlc3Rfc3NsLnRlc3Rfb3B0aW9ucy10by1hY2NvdW50LWZvci1PLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MDE2Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDMtYnBvLTM0ODM0LUZpeC10ZXN0X3NzbC50ZXN0X29wdGlvbnMtdG8tYWNjb3VudC1mb3ItTy5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDhiMDZkNTZkMjZlZWUyODlmZWMyMmI5YjcyYWI0YzdjYzNkNmM0ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEaW1pdHJpIEpvaG4gTGVka292IDx4bm94QHVidW50dS5jb20+CitEYXRlOiBGcmksIDI4IFNlcCAyMDE4IDE2OjM0OjE2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBicG8tMzQ4MzQ6IEZpeCB0ZXN0X3NzbC50ZXN0X29wdGlvbnMgdG8gYWNjb3VudCBmb3IKKyBPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVC4KKworU2lnbmVkLW9mZi1ieTogRGltaXRyaSBKb2huIExlZGtvdiA8eG5veEB1YnVudHUuY29tPgorCitodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM0ODM0CisKK1BhdGNoIHRha2VuIGZyb20gVWJ1bnR1LgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzk2MjRdCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCA3YTE0MDUzY2VlLi5lZmM5MDZhNWJhIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtNzc3LDYgKzc3NywxMSBAQCBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZGVmYXVsdCA9IChzc2wuT1BfQUxMIHwgc3NsLk9QX05PX1NTTHYyIHwgc3NsLk9QX05PX1NTTHYzKQorICAgICAgICAgaWYgbm90IElTX0xJQlJFU1NMIGFuZCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDEsIDApOgorICAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisrICAgICAgICBpZiBub3QgSVNfTElCUkVTU0wgYW5kIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMSwgMSk6CisrICAgICAgICAgICAgIyBkZWZpbmUgTUlERExFQk9YIGNvbnN0YW50LCBhcyBweXRob24yLjcgZG9lcyBub3Qga25vdyBhYm91dCBpdAorKyAgICAgICAgICAgICMgYnV0IGl0IGlzIHVzZWQgYnkgZGVmYXVsdC4KKysgICAgICAgICAgICBPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVCA9IDEwNDg1NzZMCisrICAgICAgICAgICAgZGVmYXVsdCB8PSBPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVAorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0LCBjdHgub3B0aW9ucykKKyAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0IHwgc3NsLk9QX05PX1RMU3YxLCBjdHgub3B0aW9ucykKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwNC1icG8tMzQ4MzYtZml4LXRlc3RfZGVmYXVsdF9lY2RoX2N1cnZlLW5lZWRzLW5vLXRsc3YxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDA0LWJwby0zNDgzNi1maXgtdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUtbmVlZHMtbm8tdGxzdjEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllMWJjZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwNC1icG8tMzQ4MzYtZml4LXRlc3RfZGVmYXVsdF9lY2RoX2N1cnZlLW5lZWRzLW5vLXRsc3YxLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gOTQ2YTc5NjkzNDVjNjY5NzY5N2VmZmQyMjZlYzM5NmQzZmVhMDViNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpbWl0cmkgSm9obiBMZWRrb3YgPHhub3hAdWJ1bnR1LmNvbT4KK0RhdGU6IEZyaSwgMjggU2VwIDIwMTggMTc6MzA6MTkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGJwby0zNDgzNjogZml4IHRlc3RfZGVmYXVsdF9lY2RoX2N1cnZlLCBuZWVkcyBubyB0bHN2MS4zLgorCitTaWduZWQtb2ZmLWJ5OiBEaW1pdHJpIEpvaG4gTGVka292IDx4bm94QHVidW50dS5jb20+CisKK2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ4MzYKKworUGF0Y2ggdGFrZW4gZnJvbSBVYnVudHUuCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvOTYyNl0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5IHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCBlZmM5MDZhNWJhLi40YTMyODZjZDVmIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtMjgzNiw2ICsyODM2LDkgQEAgZWxzZToKKyAgICAgICAgICAgICAjIHNob3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQgb24gU1NMIGNvbnRleHRzLgorICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorKyAgICAgICAgICAgICMgVExTdjEuMyBkZWZhdWx0cyB0byBQRlMga2V5IGFncmVlbWVudCBhbmQgbm8gbG9uZ2VyIGhhcyBLRUEgaW4KKysgICAgICAgICAgICAjIGNpcGhlciBuYW1lLgorKyAgICAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMworICAgICAgICAgICAgICMgUHJpb3IgdG8gT3BlblNTTCAxLjAuMCwgRUNESCBjaXBoZXJzIGhhdmUgdG8gYmUgZW5hYmxlZAorICAgICAgICAgICAgICMgZXhwbGljaXRseSB1c2luZyB0aGUgJ0VDQ2RyYWZ0JyBjaXBoZXIgYWxpYXMuICBPdGhlcndpc2UsCisgICAgICAgICAgICAgIyBvdXIgZGVmYXVsdCBjaXBoZXIgbGlzdCBzaG91bGQgcHJlZmVyIEVDREgtYmFzZWQgY2lwaGVycworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CmluZGV4IDFhZjE0NDMuLjg3OTk5OTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NyZWF0ZV9tYW5pZmVzdDIucHkKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMsIHdlIGFzc3VtZSB0aGF0IHdoZW4gdGhleSB3ZXJlIG1hbnVhbGx5IGFkZGVkIAogICAgICMgdG8gdGhlIG1hbmlmZXN0IHdlIGtuZXcgd2hhdCB3ZSB3ZXJlIGRvaW5nLgogICAgIHByaW50ICgnSGFuZGxpbmcgcGFja2FnZSAlcycgJSBrZXkpCi0gICAgc3BlY2lhbF9wYWNrYWdlcz1bJ21pc2MnLCAnbW9kdWxlcycsICdkZXYnXQorICAgIHNwZWNpYWxfcGFja2FnZXM9WydtaXNjJywgJ21vZHVsZXMnLCAndGVzdHMnLCAnZGV2J10KICAgICBpZiBrZXkgaW4gc3BlY2lhbF9wYWNrYWdlcyBvciAnc3RhdGljZGV2JyBpbiBrZXk6CiAgICAgICAgIHByaW50KCdQYXNzaW5nICVzIHBhY2thZ2UgZGlyZWN0bHknICUga2V5KQogICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XT1vbGRfbWFuaWZlc3Rba2V5XQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKaW5kZXggMTExNmRkNS4uZDI0YmMxNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiAgCiArQUNfU1VCU1QoTElCKQogK0FDX01TR19DSEVDS0lORyhMSUIpCi0rTElCPWBiYXNlbmFtZSAke2xpYmRpcn1gCisrTElCPSJTRURNRUxJQkxFQUYiCiArQUNfTVNHX1JFU1VMVCgkTElCKQogIAogIEFDX1NVQlNUKExJQlJBUlkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCmluZGV4IDFlNzAwNGUuLjI2MGZhNmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCkBAIC0xLDE4ICsxLDE4IEBACiB7CiAgICAgInRlc3RzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVzdCBzdWl0ZSIsCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0IHN1aXRlIiwgCiAgICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwKKyAgICAgICAgICAgICJjb3JlIiwgCiAgICAgICAgICAgICAibW9kdWxlcyIKLSAgICAgICAgXSwKKyAgICAgICAgXSwgCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdCIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy8qL3Rlc3RzIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIvaWRsZV90ZXN0LyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy8qL3Rlc3QiLCAKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43LyovdGVzdHMiLCAKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2lkbGVsaWIvaWRsZV90ZXN0LyIsIAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVzdCIKLSAgICAgICAgXSwKKyAgICAgICAgXSwgCiAgICAgICAgICJjYWNoZWQiOiBbXQotICAgIH0sCisgICAgfSwgCiAgICAgIjJ0bzMiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBhdXRvbWF0ZWQgUHl0aG9uIDIgdG8gMyBjb2RlIHRyYW5zbGF0b3IiLCAKICAgICAgICAgInJkZXBlbmRzIjogWwpAQCAtODgxLDEwICs4ODEsMTIgQEAKICAgICAic3FsaXRlMyI6IHsKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCIsIAogICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKKyAgICAgICAgICAgICJjb3JlIiwgCisgICAgICAgICAgICAiZGF0ZXRpbWUiCiAgICAgICAgIF0sIAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fc3FsaXRlMy5zbyIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zcWxpdGUzLnNvIiwgCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzIgogICAgICAgICBdCiAgICAgfSwgCiAgICAgInN0cmluZ29sZCI6IHsKQEAgLTEwNDEsNCArMTA0Myw0IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC96bGliLnNvIgogICAgICAgICBdCiAgICAgfQotfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWNiYWU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgdGhlIERCdXMgaW50ZXItcHJvY2VzcyBjb21tdW5pY2F0aW9uIHN5c3RlbSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjAzMjQwNTE4OTk0ZGY2ZDhjOTc0Njc1Njc1ZTVjYTQiCi1ERVBFTkRTID0gImV4cGF0IGRidXMgZGJ1cy1nbGliIHZpcnR1YWwvbGliaW50bCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IFwKLSIKLQotUlNSQ19VUklbbWQ1c3VtXSA9ICIxY2UxZGRmMjU4MjA2MGY4Zjk3MTY1MmVhNTRjYzE3ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMmYyOWMxNzE3MmNkYjljYjYxYzY4YjFmMWE3MWRmZTczNTE1MDZmYzgzMDg2OTAyOWM0NzQ0OWJkMDRmYWViIgotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbZG9jc10gPSAiLS1lbmFibGUtaHRtbC1kb2NzLC0tZGlzYWJsZS1odG1sLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2FwaS1kb2NzXSA9ICItLWVuYWJsZS1hcGktZG9jcywtLWRpc2FibGUtYXBpLWRvY3MscHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgcHl0aG9uMy1lcHlkb2MtbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzliZjhkZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjguYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IgorREVQRU5EUyA9ICJleHBhdCBkYnVzIGRidXMtZ2xpYiB2aXJ0dWFsL2xpYmludGwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3Mzc5ZGI3NzRjMTA5MDRmMjdlN2UyNzQzZDkwZmI0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmYxMmJiYjc2NWUzMDBiZjhlMmExYjJmMzJmODU5NDllYWIwNjk5OGRiZGExMjc5NTJjMzFjYjYzOTU3YjZmIgorUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCisKKyMgZG9jdW1lbnRhdGlvbiBuZWVkcyBweXRob24zLXNwaGlueCwgd2hpY2ggaXMgbm90IGluIG9lLWNvcmUgb3IgbWV0YS1weXRob24gZm9yIG5vdworIyBjaGFuZ2UgdG8gdXNlIFBBQ0tBR0VDT05GSUcgd2hlbiBweXRob24zLXNwaGlueCBpcyBhZGRlZCB0byBvZS1jb3JlCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgorCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1leHRyYXNfMS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1leHRyYXNfMS4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZmODdmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV4dHJhc18xLjAuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWV4dHJhcy5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS4xMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC40LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwOTgwMjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKLWZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCi1maWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCi1maWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0ke0RJU1RST19TUkNfVVJJfSBcCi1maWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLWZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCi1maWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKLWZpbGU6Ly9yZWdlbi1hbGwucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjM3NjNlZGY5ODI0ZDVkM2ExNWY1ZjY0NjA4M2I2ZTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDYzZDJjM2IwNDAyZDYxOTFiOTA3MzFlMGY3MzVjNjQ4MzBlNzUyMjM0OGFlYjdlZDM4MmE4MzE2NWQ0NTAwOSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKLQotRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCi1ERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUgZ2RibS1uYXRpdmUiCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBMSUJDPSIiIFwKLSAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKLSAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKLSAgTElCPSR7YmFzZWxpYn0gXAotICBBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLScKLQotIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMwotUFlUSE9OTFNCT1BUUyA9ICIiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0JYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotCXNlZCAtaSAtZSAncywjZGVmaW5lIEhBVkVfR0VUUkFORE9NIDEsL1wqICN1bmRlZiBIQVZFX0dFVFJBTkRPTSBcKi8sJyAke0J9L3B5Y29uZmlnLmgKLX0KLQotIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCi0jIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCi0jCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBBc3N1bWluZyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMzMDgwIGhhcyBiZWVuIGFkZHJlc3NlZCBpbiBNYWtlZmlsZS4KLSAgICBvZV9ydW5tYWtlIHJlZ2VuLWFsbAotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7UE59Ci0JaW5zdGFsbCAtbSAwNzU1IFBhcnNlci9wZ2VuICR7RH0ke2JpbmRpcn0vJHtQTn0KLQotCSMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0JZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbwotCQlzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotCWRvbmUKLQotICAgICAgICAjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQotICAgICAgICAjICJuYXRpdmVweXRob24iIGFuZCBnZXQgdGhlIHJpZ2h0IG9uZSB3aXRob3V0IG5lZWRpbmcgYWJzb2x1dGUgcGF0aHMKLSAgICAgICAgIyAodGhlc2Ugb2Z0ZW4gZW5kIHVwIHRvbyBsb25nIGZvciB0aGUgIyEgcGFyc2VyIGluIHRoZSBrZXJuZWwgYXMgdGhlCi0gICAgICAgICMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KLSAgICAgICAgbG4gLXMgcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbjMKLX0KLQotcHl0aG9uKCl7Ci0KLSAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAotICAgIGltcG9ydCBqc29uCi0gICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInLFRydWUpCi0gICAgd2l0aCBvcGVuKHB5dGhvbmRpcisnL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3RfZmlsZToKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0PWpzb24ubG9hZChtYW5pZmVzdF9maWxlKQotCi0gICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKLQotICAgICMgSGFyZGNvZGVkIHNpbmNlIGl0IGNhbnQgYmUgcHl0aG9uMy1uYXRpdmUtZm9vLCBzaG91bGQgYmUgcHl0aG9uMy1mb28tbmF0aXZlCi0gICAgcG4gPSAncHl0aG9uMycKLQotICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgotICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJwotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKLSAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICBkLnNldFZhcignUlBST1ZJREVTJywgJyAnLmpvaW4ocnByb3ZpZGVzKSkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTk1M2NmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS42LmJiCkBAIC0wLDAgKzEsMTAwIEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMuaW5jCisKK0RJU1RST19TUkNfVVJJID89ICJmaWxlOi8vc2l0ZWN1c3RvbWl6ZS5weSIKK0RJU1RST19TUkNfVVJJX2xpbnV4c3RkYmFzZSA9ICIiCitTUkNfVVJJID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy9mdHAvcHl0aG9uLyR7UFZ9L1B5dGhvbi0ke1BWfS50YXIueHogXAorZmlsZTovLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaCBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly9weXRob24tMy4zLW11bHRpbGliLnBhdGNoIFwKK2ZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCitmaWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKK2ZpbGU6Ly9zeXNyb290LWluY2x1ZGUtaGVhZGVycy5wYXRjaCBcCitmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCitmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKK2ZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAorZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCitmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoIFwKK2ZpbGU6Ly9yZWdlbi1hbGwucGF0Y2ggXAorZmlsZTovLzAwMDEtSXNzdWUtMjgwNDMtU1NMQ29udGV4dC1oYXMtaW1wcm92ZWQtZGVmYXVsdC1zZXR0aW5ncy5wYXRjaCBcCitmaWxlOi8vMDAwMi1icG8tMjkxMzYtQWRkLVRMUy0xLjMtY2lwaGVyLXN1aXRlcy1hbmQtT1BfTk9fVExTdjFfLnBhdGNoIFwKK2ZpbGU6Ly8wMDAzLWJwby0zMjk0Ny1GaXhlcy1mb3ItVExTLTEuMy1hbmQtT3BlblNTTC0xLjEuMS1HSC04NzYucGF0Y2ggXAorZmlsZTovLzAwMDQtYnBvLTMzNTcwLVRMUy0xLjMtY2lwaGVycy1mb3ItT3BlblNTTC0xLjEuMS1HSC02OTc2LnBhdGNoIFwKK2ZpbGU6Ly8wMDA1LWJwby0zMDcxNC1BTFBOLWNoYW5nZXMtZm9yLU9wZW5TU0wtMS4xLjBmLTIzMDUucGF0Y2ggXAorIgorCitFWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKK0RFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBnZGJtLW5hdGl2ZSIKKworaW5oZXJpdCBuYXRpdmUKKworRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aG91dC1lbnN1cmVwaXAiCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIExJQkM9IiIgXAorICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAorICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAorICBMSUI9JHtiYXNlbGlifSBcCisgIEFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorJworCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKKwlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCit9CisKKyMgUmVnZW5lcmF0ZSBhbGwgb2YgdGhlIGdlbmVyYXRlZCBmaWxlcworIyBUaGlzIGVuc3VyZXMgdGhhdCBwZ2VuIGFuZCBmcmllbmRzIGdldCBjcmVhdGVkIGR1cmluZyB0aGUgY29tcGlsZSBwaGFzZQorIworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgQXNzdW1pbmcgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMzA4MCBoYXMgYmVlbiBhZGRyZXNzZWQgaW4gTWFrZWZpbGUuCisgICAgb2VfcnVubWFrZSByZWdlbi1hbGwKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK3B5dGhvbigpeworCisgICAgIyBSZWFkIEpTT04gbWFuaWZlc3QKKyAgICBpbXBvcnQganNvbgorICAgIHB5dGhvbmRpciA9IGQuZ2V0VmFyKCdUSElTRElSJyxUcnVlKQorICAgIHdpdGggb3BlbihweXRob25kaXIrJy9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbicpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSkKKworICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCisKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisKKyAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKKyAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKKyAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6CisgICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgZC5zZXRWYXIoJ1JQUk9WSURFUycsICcgJy5qb2luKHJwcm92aWRlcykpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNC4yLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNC4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlNzM2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl80LjIuMC5iYgpAQCAtMCwwICsxLDIgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXBici5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjZGI4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOC4wLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NTkzYzZjZDlkNjM5MzA3MjI2OTc4Y2JjYWU2MWFkNGIiCisKK0RFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjUyZjc1Y2ViMjFlOTZjMjU4ZjI4OTg1OWEyOTk2YjYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwZTExNjQ1ZWUzN2M5MGI0MGM0NmQ2MDcwNzBjNGZkNTgzZTJjZDQ2MjMxYjFjMDZlMzg5YzVlODE0ZWVkNzYiCisKK2luaGVyaXQgcHlwaSBkaXN0dXRpbHMzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKKyAgICBybSAke0R9LyR7YmluZGlyfS9waXAKK30KKworUkRFUEVORFNfJHtQTn0gPSAiXAorICBweXRob24zLWNvbXBpbGUgXAorICBweXRob24zLWlvIFwKKyAgcHl0aG9uMy1odG1sIFwKKyAgcHl0aG9uMy1qc29uIFwKKyAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAorICBweXRob24zLXNldHVwdG9vbHMgXAorICBweXRob24zLXVuaXhhZG1pbiBcCisgIHB5dGhvbjMteG1scnBjIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2ZkNmRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF85LjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MjVmYmE0NTEwOTU2NWY4N2RlMjBiYWU4NWJjMzk0NTIiCi0KLURFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJmZGRkNjgwNDIyMzI2YjlkMWZiZjU2MTEyY2YzNDFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4MTEwYTIyNGU5ZDMwZTVkNzY1OTJhMGIyMTMwZWYxMGU3ZTY3YTY0MjZlODYxN2JiOTE4ZmZmYmZlOTFmZTUiCi0KLWluaGVyaXQgcHlwaSBkaXN0dXRpbHMzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLX0KLQotIyBVc2Ugc2V0dXB0b29scyBzaXRlLnB5IGluc3RlYWQsIGF2b2lkIHNoYXJlZCBzdGF0ZSBpc3N1ZQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NpdGUucHkKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vX19weWNhY2hlX18vc2l0ZS5jcHl0aG9uLSoucHljCi0KLSAgICAjIEluc3RhbGwgYXMgcGlwMyBhbmQgbGVhdmUgcGlwMiBhcyBkZWZhdWx0Ci0gICAgcm0gJHtEfS8ke2JpbmRpcn0vcGlwCi0KLSAgICAjIEluc3RhbGxlZCBlZ2dzIG5lZWQgdG8gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBpbnRlcnByZXRlciB2aWEgYSBwdGggZmlsZQotICAgIGVjaG8gIi4vJHtQWVBJX1BBQ0tBR0V9LSR7UFZ9LXB5JHtQWVRIT05fQkFTRVZFUlNJT059LmVnZyIgPiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vJHtQWVBJX1BBQ0tBR0V9LSR7UFZ9LnB0aAotCi0gICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24zCi0gICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0gJHtEfSR7YmluZGlyfS9waXAzKmA7IGRvCi0gICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0gICAgZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtY29tcGlsZSBcCi0gIHB5dGhvbjMtaW8gXAotICBweXRob24zLWh0bWwgXAotICBweXRob24zLWpzb24gXAotICBweXRob24zLW5ldHNlcnZlciBcCi0gIHB5dGhvbjMtc2V0dXB0b29scyBcCi0gIHB5dGhvbjMtdW5peGFkbWluIFwKLSAgcHl0aG9uMy14bWxycGMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcyODZmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1pbmhlcml0IGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJweXRob24zIGdsaWItMi4wIgotCi1TUkNOQU1FPSJweWdvYmplY3QiCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvJHtTUkNOQU1FfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7U1JDTkFNRX0tJHtQVn0udGFyLnh6IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYxMmU5ZTI4NjNkMTE3ZDgxMGU3ODY3MmY3YmMzYWQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQyMzEyYjRhNTAxNTU3MWZhMGE0ZjJkMjAxMDA1ZGE0NmI3MWMyNTFlYTI2MjViYzk1NzAyZDA3MWM0ZmY4OTUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCBbICdkaXJlY3RmYicsICd3YXlsYW5kJywgJ3gxMScgXSwgJ2NhaXJvJywgJycsIGQpfSIKLQotIyBweXRob24zLXB5Y2Fpcm8gaXMgY2hlY2tlZCBvbiBjb25maWd1cmF0aW9uIC0+IERFUEVORFMKLSMgd2UgZG9uJ3QgbGluayBhZ2FpbnN0IHB5dGhvbjMtcHljYWlybyAtPiBSREVQRU5EUwotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIHB5dGhvbjMtcHljYWlybywgcHl0aG9uMy1weWNhaXJvIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zZXR1cHRvb2xzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI4LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxM2FmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yOC4zLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZGlzdHV0aWxzMy1iYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyArPSAicHl0aG9uMyBnbGliLTIuMCIKKworU1JDTkFNRT0icHlnb2JqZWN0IgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYmFjNjNjODZiYjk2M2FhNDAxZjk3ODU5NDY0YWE5MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQzZTIxMDE1ZDA2ZTAwNDgyZWE2NjVmYzE3MzNiNzdlNzU0YTZhYjY1NmE1ZGI1ZDdmN2JmYWYzMWFkMGIwIgorCitTID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCisKKyMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCisjIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDAuMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM5LjAuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180MC4wLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1YnVuaXRfMS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdWJ1bml0XzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlY2U0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdWJ1bml0XzEuMy4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc3VidW5pdC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTZlY2VlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCkBAIC0wLDAgKzEsMiBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tdGVzdHRvb2xzLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1NjViM2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy5pbmMKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgorTElDRU5TRSA9ICJQU0Z2MiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorCisjIFRPRE8gUmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGdyYWRlCitJTkNfUFIgPSAicjEiCitQUiA9ICIke0lOQ19QUn0uMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjZlYzUxNWIyMjYxOGY1NWZhMDcyNzZiODk3YmFjZWEiCisKKyMgVE9ETyBjb25zb2xpZGF0ZSBwYXRjaCBzZXQKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNWE5OWY3NjVlNzY1MzM2YTNlYmJiMmEyNGNhMmJlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTVjZGUwNGY1MjFmMjczYzdjYmEwODkxMjkyMWNjNTY0MmNmYzE1Y2E3YjIyZDU4MjlmMGFmZjQzNzExNTVmIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK0NWRV9QUk9EVUNUID0gInB5dGhvbiIKKworUFlUSE9OX01BSk1JTiA9ICIzLjUiCitQWVRIT05fQklOQUJJID0gIiR7UFlUSE9OX01BSk1JTn1tIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBibHVldG9vdGggcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICJcCisgIC0td2l0aC10aHJlYWRzIFwKKyAgLS13aXRoLXB5bWFsbG9jIFwKKyAgLS13aXRob3V0LWN4eC1tYWluIFwKKyAgLS13aXRoLXNpZ25hbC1tb2R1bGUgXAorICAtLWVuYWJsZS1zaGFyZWQgXAorICAtLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV0b290aF0gPSAiLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8gYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vaW5zdGFsbDppbnN0YWxsOmcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9ta2Rpcjpta2RpcjpnJyBcCisJCSR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjgwNDMtU1NMQ29udGV4dC1oYXMtaW1wcm92ZWQtZGVmYXVsdC1zZXR0aW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjgwNDMtU1NMQ29udGV4dC1oYXMtaW1wcm92ZWQtZGVmYXVsdC1zZXR0aW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjFiNGFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Jc3N1ZS0yODA0My1TU0xDb250ZXh0LWhhcy1pbXByb3ZlZC1kZWZhdWx0LXNldHRpbmdzLnBhdGNoCkBAIC0wLDAgKzEsMjcyIEBACitGcm9tIDc1OGU3NDYzYzEwNGY3MWI4MTBjODU4ODE2Njc0N2VlYWI2MTQ4ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KK0RhdGU6IFNhdCwgMTAgU2VwIDIwMTYgMjI6NDM6NDggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIElzc3VlIDI4MDQzOiBTU0xDb250ZXh0IGhhcyBpbXByb3ZlZCBkZWZhdWx0IHNldHRpbmdzCisKK1RoZSBvcHRpb25zIE9QX05PX0NPTVBSRVNTSU9OLCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UsIE9QX1NJTkdMRV9FQ0RIX1VTRSwgT1BfTk9fU1NMdjIgKGV4Y2VwdCBmb3IgUFJPVE9DT0xfU1NMdjIpLCBhbmQgT1BfTk9fU1NMdjMgKGV4Y2VwdCBmb3IgUFJPVE9DT0xfU1NMdjMpIGFyZSBzZXQgYnkgZGVmYXVsdC4gVGhlIGluaXRpYWwgY2lwaGVyIHN1aXRlIGxpc3QgY29udGFpbnMgb25seSBISUdIIGNpcGhlcnMsIG5vIE5VTEwgY2lwaGVycyBhbmQgTUQ1IGNpcGhlcnMgKGV4Y2VwdCBmb3IgUFJPVE9DT0xfU1NMdjIpLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8zNThjZmQ0MjZjY2MwZmNkNmE3OTQwZDMwNjYwMjEzOGU3NjQyMGFlXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgRG9jL2xpYnJhcnkvc3NsLnJzdCAgfCAgOSArKysrKystCisgTGliL3NzbC5weSAgICAgICAgICAgfCAzMCArKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTW9kdWxlcy9fc3NsLmMgICAgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitpbmRleCBhMmYwMDgzNDZiLi4xNGYyZDY4MjE3IDEwMDY0NAorLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdAorQEAgLTExNTEsNyArMTE1MSwxNCBAQCB0byBzcGVlZCB1cCByZXBlYXRlZCBjb25uZWN0aW9ucyBmcm9tIHRoZSBzYW1lIGNsaWVudHMuCisgCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworIAorLSAgICAgIDpkYXRhOmBQUk9UT0NPTF9UTFNgIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorKyAgICAgIFRoZSBjb250ZXh0IGlzIGNyZWF0ZWQgd2l0aCBzZWN1cmUgZGVmYXVsdCB2YWx1ZXMuIFRoZSBvcHRpb25zCisrICAgICAgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCwgOmRhdGE6YE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAsCisrICAgICAgOmRhdGE6YE9QX1NJTkdMRV9ESF9VU0VgLCA6ZGF0YTpgT1BfU0lOR0xFX0VDREhfVVNFYCwKKysgICAgICA6ZGF0YTpgT1BfTk9fU1NMdjJgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2MmApLAorKyAgICAgIGFuZCA6ZGF0YTpgT1BfTk9fU1NMdjNgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2ApIGFyZQorKyAgICAgIHNldCBieSBkZWZhdWx0LiBUaGUgaW5pdGlhbCBjaXBoZXIgc3VpdGUgbGlzdCBjb250YWlucyBvbmx5IGBgSElHSGBgCisrICAgICAgY2lwaGVycywgbm8gYGBOVUxMYGAgY2lwaGVycyBhbmQgbm8gYGBNRDVgYCBjaXBoZXJzIChleGNlcHQgZm9yCisrICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCkuCisgCisgCisgOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CitpbmRleCBlMTkxMzkwNGYzLi40ZDMwMmE3OGZhIDEwMDY0NAorLS0tIGEvTGliL3NzbC5weQorKysrIGIvTGliL3NzbC5weQorQEAgLTQ0NiwzMiArNDQ2LDE2IEBAIGRlZiBjcmVhdGVfZGVmYXVsdF9jb250ZXh0KHB1cnBvc2U9UHVycG9zZS5TRVJWRVJfQVVUSCwgKiwgY2FmaWxlPU5vbmUsCisgICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKKyAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihwdXJwb3NlKQorIAorKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorKyAgICAjIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSBhbmQgT1BfU0lOR0xFX0VDREhfVVNFCisrICAgICMgYnkgZGVmYXVsdC4KKyAgICAgY29udGV4dCA9IFNTTENvbnRleHQoUFJPVE9DT0xfVExTKQorIAorLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KKy0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCistCistICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCistICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCistICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MworLQorLSAgICAjIGRpc2FibGUgY29tcHJlc3Npb24gdG8gcHJldmVudCBDUklNRSBhdHRhY2tzIChPcGVuU1NMIDEuMCspCistICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCistCisgICAgIGlmIHB1cnBvc2UgPT0gUHVycG9zZS5TRVJWRVJfQVVUSDoKKyAgICAgICAgICMgdmVyaWZ5IGNlcnRzIGFuZCBob3N0IG5hbWUgaW4gY2xpZW50IG1vZGUKKyAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBDRVJUX1JFUVVJUkVECisgICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorICAgICBlbGlmIHB1cnBvc2UgPT0gUHVycG9zZS5DTElFTlRfQVVUSDoKKy0gICAgICAgICMgUHJlZmVyIHRoZSBzZXJ2ZXIncyBjaXBoZXJzIGJ5IGRlZmF1bHQgc28gdGhhdCB3ZSBnZXQgc3Ryb25nZXIKKy0gICAgICAgICMgZW5jcnlwdGlvbgorLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCistCistICAgICAgICAjIFVzZSBzaW5nbGUgdXNlIGtleXMgaW4gb3JkZXIgdG8gaW1wcm92ZSBmb3J3YXJkIHNlY3JlY3kKKy0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKKy0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQorLQorLSAgICAgICAgIyBkaXNhbGxvdyBjaXBoZXJzIHdpdGgga25vd24gdnVsbmVyYWJpbGl0aWVzCisgICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTKQorIAorICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGF0YToKK0BAIC00OTcsMTIgKzQ4MSwxMCBAQCBkZWYgX2NyZWF0ZV91bnZlcmlmaWVkX2NvbnRleHQocHJvdG9jb2w9UFJPVE9DT0xfVExTLCAqLCBjZXJ0X3JlcXM9Tm9uZSwKKyAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgorICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCisgCisrICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisrICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKysgICAgIyBieSBkZWZhdWx0LgorICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChwcm90b2NvbCkKKy0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCistICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MgorLSAgICAjIFNTTHYzIGhhcyBwcm9ibGVtYXRpYyBzZWN1cml0eSBhbmQgaXMgb25seSByZXF1aXJlZCBmb3IgcmVhbGx5IG9sZAorLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAorLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKKyAKKyAgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgorICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IGNlcnRfcmVxcworZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IGZmYjczMTRmNTcuLmY5MWFmN2JkMDUgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC03Myw2ICs3MywxMiBAQCBOVUxMQllURUNFUlQgPSBkYXRhX2ZpbGUoIm51bGxieXRlY2VydC5wZW0iKQorIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCisgQllURVNfREhGSUxFID0gb3MuZnNlbmNvZGUoREhGSUxFKQorIAorKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKKytPUF9OT19DT01QUkVTU0lPTiA9IGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQorK09QX1NJTkdMRV9ESF9VU0UgPSBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKQorK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKKytPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgPSBnZXRhdHRyKHNzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCisrCisgCisgZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgorICAgICBleGNfZm9ybWF0ID0gJyAnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKSkKK0BAIC04MzksOCArODQ1LDkgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgZGVmYXVsdCA9IChzc2wuT1BfQUxMIHwgc3NsLk9QX05PX1NTTHYyIHwgc3NsLk9QX05PX1NTTHYzKQorLSAgICAgICAgaWYgbm90IElTX0xJQlJFU1NMIGFuZCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDEsIDApOgorLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisrICAgICAgICAjIFNTTENvbnRleHQgYWxzbyBlbmFibGVzIHRoZXNlIGJ5IGRlZmF1bHQKKysgICAgICAgIGRlZmF1bHQgfD0gKE9QX05PX0NPTVBSRVNTSU9OIHwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIHwKKysgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQsIGN0eC5vcHRpb25zKQorICAgICAgICAgY3R4Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQorQEAgLTEyMDUsMTYgKzEyMTIsMjkgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzdGF0c1sieDUwOSJdICs9IDEKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQorIAorKyAgICBkZWYgX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoc2VsZiwgY3R4KToKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKysgICAgICAgIGlmIE9QX05PX0NPTVBSRVNTSU9OICE9IDA6CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX05PX0NPTVBSRVNTSU9OLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisrICAgICAgICBpZiBPUF9TSU5HTEVfREhfVVNFICE9IDA6CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX1NJTkdMRV9ESF9VU0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorKyAgICAgICAgaWYgT1BfU0lOR0xFX0VDREhfVVNFICE9IDA6CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX1NJTkdMRV9FQ0RIX1VTRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKysgICAgICAgIGlmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSAhPSAwOgorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisrCisgICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc2VsZik6CisgICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisrCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAorLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKKy0gICAgICAgICkKKysgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorKworIAorICAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CisgICAgICAgICAgICAgY2FkYXRhID0gZi5yZWFkKCkKK0BAIC0xMjIyLDQwICsxMjQyLDI0IEBAIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAorLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKKy0gICAgICAgICkKKysgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorIAorICAgICAgICAgY3R4ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoc3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKKy0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCistICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKKy0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApLAorLSAgICAgICAgKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisgCisgICAgIGRlZiB0ZXN0X19jcmVhdGVfc3RkbGliX2NvbnRleHQoc2VsZik6CisgICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisrICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKKyAKKyAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKysgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorIAorICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorQEAgLTEyNjMsMTIgKzEyNjcsMTIgQEAgY2xhc3MgQ29udGV4dFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisgCisgICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChwdXJwb3NlPXNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKysgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorIAorICAgICBkZWYgdGVzdF9jaGVja19ob3N0bmFtZShzZWxmKToKKyAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKK2RpZmYgLS1naXQgYS9Nb2R1bGVzL19zc2wuYyBiL01vZHVsZXMvX3NzbC5jCitpbmRleCA4NjQ4MjY3N2FlLi4wZDVjMTIxZDJjIDEwMDY0NAorLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrKyBiL01vZHVsZXMvX3NzbC5jCitAQCAtMjMzMCw2ICsyMzMwLDcgQEAgX3NzbF9fU1NMQ29udGV4dF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHByb3RvX3ZlcnNpb24pCisgICAgIFB5U1NMQ29udGV4dCAqc2VsZjsKKyAgICAgbG9uZyBvcHRpb25zOworICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOworKyAgICBpbnQgcmVzdWx0OworICNpZiBkZWZpbmVkKFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUykKKyAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CisgI2VuZGlmCitAQCAtMjM5Myw4ICsyMzk0LDM4IEBAIF9zc2xfX1NTTENvbnRleHRfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIGludCBwcm90b192ZXJzaW9uKQorICAgICAgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjI7CisgICAgIGlmIChwcm90b192ZXJzaW9uICE9IFBZX1NTTF9WRVJTSU9OX1NTTDMpCisgICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKysgICAgLyogTWluaW1hbCBzZWN1cml0eSBmbGFncyBmb3Igc2VydmVyIGFuZCBjbGllbnQgc2lkZSBjb250ZXh0LgorKyAgICAgKiBDbGllbnQgc29ja2V0cyBpZ25vcmUgc2VydmVyLXNpZGUgcGFyYW1ldGVycy4gKi8KKysjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisrICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX0NPTVBSRVNTSU9OOworKyNlbmRpZgorKyNpZmRlZiBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisrICAgIG9wdGlvbnMgfD0gU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRTsKKysjZW5kaWYKKysjaWZkZWYgU1NMX09QX1NJTkdMRV9ESF9VU0UKKysgICAgb3B0aW9ucyB8PSBTU0xfT1BfU0lOR0xFX0RIX1VTRTsKKysjZW5kaWYKKysjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfRUNESF9VU0U7CisrI2VuZGlmCisgICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKKyAKKysgICAgLyogQSBiYXJlIG1pbmltdW0gY2lwaGVyIGxpc3Qgd2l0aG91dCBjb21wbGV0bHkgYnJva2VuIGNpcGhlciBzdWl0ZXMuCisrICAgICAqIEl0J3MgZmFyIGZyb20gcGVyZmVjdCBidXQgZ2l2ZXMgdXNlcnMgYSBiZXR0ZXIgaGVhZCBzdGFydC4gKi8KKysgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMikgeworKyAgICAgICAgcmVzdWx0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCAiSElHSDohYU5VTEw6IWVOVUxMOiFNRDUiKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIC8qIFNTTHYyIG5lZWRzIE1ENSAqLworKyAgICAgICAgcmVzdWx0ID0gU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3QoY3R4LCAiSElHSDohYU5VTEw6IWVOVUxMIik7CisrICAgIH0KKysgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisrICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisrICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKysgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkLiIpOworKyAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysKKyAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCisgICAgIC8qIFNldCBTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMuIFRoaXMgcG90ZW50aWFsbHkgZ3JlYXRseSByZWR1Y2VzIG1lbW9yeQorICAgICAgICB1c2FnZSBmb3Igbm8gY29zdCBhdCBhbGwuIEhvd2V2ZXIsIGRvbid0IGRvIHRoaXMgZm9yIE9wZW5TU0wgdmVyc2lvbnMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZDdlM2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIGVjZGUzZWExNzA5OTlhOWVmNzM0ZThhZjRkN2MyNWJlNWJhODE2OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0Ci0KLVdlIGNyb3NzIGNvbXBpbGUgcHl0aG9uLiBUaGlzIHBhdGNoIHVzZXMgdG9vbHMgZnJvbSBob3N0L25hdGl2ZQotcHl0aG9uIGluc3RlYWQgb2YgaW4tdHJlZSB0b29scwotCi0tS2hlbQotCi1SZWJhc2VkIG9uIDMuNS40Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtDb25maWd1cmF0aW9uIFNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZXJlayBTdHJha2EgPGRlcmVrQGFzdGVyaXVzLmlvPgotLS0tCi0gTWFrZWZpbGUucHJlLmluIHwgMTQgKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCi1pbmRleCAxNDRjMWY4NjI5Li5mMjUyYWMyNDE3IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUucHJlLmluCi0rKysgYi9NYWtlZmlsZS5wcmUuaW4KLUBAIC0yMjMsNiArMjIzLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACi0KLSBQWVRIT049CQlweXRob24kKEVYRSkKLSBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKLStIT1NUUFlUSE9OPSAgICAkKEJVSUxEUFlUSE9OKQotCi0gUFlUSE9OX0ZPUl9SRUdFTj1AUFlUSE9OX0ZPUl9SRUdFTkAKLSBQWVRIT05fRk9SX0JVSUxEPUBQWVRIT05fRk9SX0JVSUxEQAotQEAgLTI3Nyw2ICsyNzgsNyBAQCBMSUJGRklfSU5DTFVERURJUj0JQExJQkZGSV9JTkNMVURFRElSQAotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBQYXJzZXIKLSBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKLStIT1NUUEdFTj0JJChQR0VOKSQoRVhFKQotCi0gUFNSQ1M9CQlcCi0gCQlQYXJzZXIvYWNjZWxlci5jIFwKLUBAIC00NzgsNyArNDgwLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6Ci0KLSBydW5fcHJvZmlsZV90YXNrOgotIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAotLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQotKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQotCi0gYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6Ci0gCSQoTExWTV9QUk9GX01FUkdFUikKLUBAIC03NzIsNyArNzc0LDcgQEAgcmVnZW4tZ3JhbW1hcjogJChQR0VOKQotIAkjIFJlZ2VuZXJhdGUgSW5jbHVkZS9ncmFtaW5pdC5oIGFuZCBQeXRob24vZ3JhbWluaXQuYwotIAkjIGZyb20gR3JhbW1hci9HcmFtbWFyIHVzaW5nIHBnZW4KLSAJQCQoTUtESVJfUCkgSW5jbHVkZQotLQkkKFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAotKwkkKEhPU1RQR0VOKSAkKHNyY2RpcikvR3JhbW1hci9HcmFtbWFyIFwKLSAJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAotIAkJJChzcmNkaXIpL1B5dGhvbi9ncmFtaW5pdC5jCi0KLUBAIC05NzgsNyArOTgwLDcgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0gVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKLS1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQotK1RFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCi0gVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLSBURVNUVElNRU9VVD0JMzYwMAotCi1AQCAtMTQ3MCw3ICsxNDcyLDcgQEAgZnJhbWV3b3JraW5zdGFsbHN0cnVjdHVyZToJJChMRExJQlJBUlkpCi0gCQlmaTsgXAotIAlkb25lCi0gCSQoTE4pIC1mc24gaW5jbHVkZS9weXRob24kKExEVkVSU0lPTikgJChERVNURElSKSQocHJlZml4KS9IZWFkZXJzCi0tCXNlZCAncy8lVkVSU0lPTiUvJyJgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLWMgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSknYCInL2cnIDwgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgPiAkKERFU1RESVIpJChwcmVmaXgpL1Jlc291cmNlcy9JbmZvLnBsaXN0Ci0rCXNlZCAncy8lVkVSU0lPTiUvJyJgJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgLWMgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSknYCInL2cnIDwgJChSRVNTUkNESVIpL0luZm8ucGxpc3QgPiAkKERFU1RESVIpJChwcmVmaXgpL1Jlc291cmNlcy9JbmZvLnBsaXN0Ci0gCSQoTE4pIC1mc24gJChWRVJTSU9OKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9WZXJzaW9ucy9DdXJyZW50Ci0gCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC8kKFBZVEhPTkZSQU1FV09SSykgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvJChQWVRIT05GUkFNRVdPUkspCi0gCSQoTE4pIC1mc24gVmVyc2lvbnMvQ3VycmVudC9IZWFkZXJzICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL0hlYWRlcnMKLUBAIC0xNTQzLDcgKzE1NDUsNyBAQCBQeXRob24vZHRvYS5vOiBQeXRob24vZHRvYS5jCi0KLSAjIFJ1biByZWluZGVudCBvbiB0aGUgbGlicmFyeQotIHJlaW5kZW50OgotLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKLSsJJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCi0KLSAjIFJlcnVuIGNvbmZpZ3VyZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgaXQgd2FzIHJ1biBsYXN0IHRpbWUsCi0gIyBwcm92aWRlZCB0aGUgY29uZmlnLnN0YXR1cyBzY3JpcHQgZXhpc3RzCi1AQCAtMTY3OCw3ICsxNjgwLDcgQEAgZnVubnk6Ci0KLSAjIFBlcmZvcm0gc29tZSB2ZXJpZmljYXRpb24gY2hlY2tzIG9uIGFueSBtb2RpZmllZCBmaWxlcy4KLSBwYXRjaGNoZWNrOiBAREVGX01BS0VfUlVMRUAKLS0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQotKwkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0KLSAjIERlcGVuZGVuY2llcwotCi0tLQotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItTWFrZWZpbGUtYWRkLXRhcmdldC10by1zcGxpdC1wcm9maWxlLWdlbmVyYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLU1ha2VmaWxlLWFkZC10YXJnZXQtdG8tc3BsaXQtcHJvZmlsZS1nZW5lcmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNGJhMzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLU1ha2VmaWxlLWFkZC10YXJnZXQtdG8tc3BsaXQtcHJvZmlsZS1nZW5lcmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gOTg1ODZkNmRjNTk4ZTQwYjhiODIxYjBkZGU1NzU5OWUxODhhN2NhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDcgQXVnIDIwMTggMTY6NDM6MTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIE1ha2VmaWxlOiBhZGQgdGFyZ2V0IHRvIHNwbGl0IHByb2ZpbGUgZ2VuZXJhdGlvbgorCitXZSBkb24ndCB3YW50IHRvIGhhdmUgcHJvZmlsZSB0YXNrIGludm9rZWQgZnJvbSBoZXJlIGFuZCB3YW50IHRvIHVzZQorcWVtdS11c2VyIGluc3RlYWQuIFNwbGl0IHRoZSBwcm9maWxlLW9wdCB0YXNrIHNvIHFlbXUgY2FuIGJlIGludm9rZWQKK29uY2UgYmluYXJpZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggaW5zdHJ1bWVudGF0aW9uIGFuZCB0aGVuIHdlIGNhbiBnbworYWhlYWQgYW5kIGJ1aWxkIGFnYWluIHVzaW5nIHRoZSBwcm9maWxlIGRhdGEgZ2VuZXJhdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgTWFrZWZpbGUucHJlLmluIHwgNiArKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCA4NGJjM2ZmLi4wMTdhMmM0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC00NjksMTMgKzQ2OSwxMiBAQCBwcm9maWxlLW9wdDoKKyAJJChNQUtFKSBwcm9maWxlLXJlbW92YWwKKyAJJChNQUtFKSBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZQorIAkkKE1BS0UpIHByb2ZpbGUtcmVtb3ZhbAorLQlAZWNobyAiUnVubmluZyBjb2RlIHRvIGdlbmVyYXRlIHByb2ZpbGUgZGF0YSAodGhpcyBjYW4gdGFrZSBhIHdoaWxlKToiCistCSQoTUFLRSkgcnVuX3Byb2ZpbGVfdGFzaworLQkkKE1BS0UpIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlCisrCisrY2xlYW5fYW5kX3VzZV9wcm9maWxlOgorIAlAZWNobyAiUmVidWlsZGluZyB3aXRoIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbnM6IgorIAkkKE1BS0UpIGNsZWFuCisgCSQoTUFLRSkgYnVpbGRfYWxsX3VzZV9wcm9maWxlCisgCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCisgCisgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CisgCSQoTUFLRSkgQERFRl9NQUtFX1JVTEVAIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKEVYVFJBX0NGTEFHUykgJChQR09fUFJPRl9HRU5fRkxBRykgQExUT0ZMQUdTQCIgTERGTEFHUz0iJChMREZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSBATFRPRkxBR1NAIiBMSUJTPSIkKExJQlMpIgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1icG8tMjkxMzYtQWRkLVRMUy0xLjMtY2lwaGVyLXN1aXRlcy1hbmQtT1BfTk9fVExTdjFfLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1icG8tMjkxMzYtQWRkLVRMUy0xLjMtY2lwaGVyLXN1aXRlcy1hbmQtT1BfTk9fVExTdjFfLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OGNhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAyLWJwby0yOTEzNi1BZGQtVExTLTEuMy1jaXBoZXItc3VpdGVzLWFuZC1PUF9OT19UTFN2MV8ucGF0Y2gKQEAgLTAsMCArMSwyMjcgQEAKK0Zyb20gZTk1MGVhNjhkYWIwMDY5NDRhZjE5NGM5OTEwYjhmMjM0MWQxNDM3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogVGh1LCA3IFNlcCAyMDE3IDIwOjIzOjUyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0yOTEzNjogQWRkIFRMUyAxLjMgY2lwaGVyIHN1aXRlcyBhbmQgT1BfTk9fVExTdjFfMworIChHSC0xMzYzKSAoIzM0NDQpCisKKyogYnBvLTI5MTM2OiBBZGQgVExTIDEuMyBzdXBwb3J0CisKK1RMUyAxLjMgaW50cm9kdWNlcyBhIG5ldywgZGlzdGluY3Qgc2V0IG9mIGNpcGhlciBzdWl0ZXMuIFRoZSBUTFMgMS4zCitjaXBoZXIgc3VpdGVzIGRvbid0IG92ZXJsYXAgd2l0aCBjaXBoZXIgc3VpdGVzIGZyb20gVExTIDEuMiBhbmQgZWFybGllci4KK1NpbmNlIFB5dGhvbiBzZXRzIGl0cyBvd24gc2V0IG9mIHBlcm1pdHRlZCBjaXBoZXJzLCBUTFMgMS4zIGhhbmRzaGFrZQord2lsbCBmYWlsIGFzIHNvb24gYXMgT3BlblNTTCAxLjEuMSBpcyByZWxlYXNlZC4gTGV0J3MgZW5hYmxlIHRoZSBjb21tb24KK0FFUy1HQ00gYW5kIENoYUNoYTIwIHN1aXRlcy4KKworQWRkaXRpb25hbGx5IHRoZSBmbGFnIE9QX05PX1RMU3YxXzMgaXMgYWRkZWQuIEl0IGRlZmF1bHRzIHRvIDAgKG5vIG9wKSB3aXRoCitPcGVuU1NMIHByaW9yIHRvIDEuMS4xLiBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gb3B0LW91dCBmcm9tIFRMUyAxLjMKK25vdy4KKworU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+LgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgY2I1YjY4YWJkZWIxYjFkNTZjNTgxZDViNGQ2NDcwMTg3MDNkNjFlMykKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvY2I1YjY4YWJkZWIxYjFkNTZjNTgxZDViNGQ2NDcwMTg3MDNkNjFlM10KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIERvYy9saWJyYXJ5L3NzbC5yc3QgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrCisgTGliL3NzbC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrKysKKyBMaWIvdGVzdC90ZXN0X3NzbC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyOSArKysrKysrKysrKysrKysrKystCisgLi4uLzIwMTctMDktMDQtMTYtMzktNDkuYnBvLTI5MTM2LnZTbjFvUi5yc3QgIHwgIDEgKworIE1vZHVsZXMvX3NzbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKworIDUgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxNy0wOS0wNC0xNi0zOS00OS5icG8tMjkxMzYudlNuMW9SLnJzdAorCitkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKK2luZGV4IDE0ZjJkNjgyMTcuLjI5YzVlOTRjZjYgMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9zc2wucnN0CisrKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitAQCAtMjg1LDYgKzI4NSwxMSBAQCBwdXJwb3Nlcy4KKyAKKyAgICAgIDNERVMgd2FzIGRyb3BwZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3RyaW5nLgorIAorKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy43CisrCisrICAgICBUTFMgMS4zIGNpcGhlciBzdWl0ZXMgVExTX0FFU18xMjhfR0NNX1NIQTI1NiwgVExTX0FFU18yNTZfR0NNX1NIQTM4NCwKKysgICAgIGFuZCBUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2IHdlcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KKysKKyAKKyBSYW5kb20gZ2VuZXJhdGlvbgorIF5eXl5eXl5eXl5eXl5eXl5eCitAQCAtNzE5LDYgKzcyNCwxNiBAQCBDb25zdGFudHMKKyAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAKKysuLiBkYXRhOjogT1BfTk9fVExTdjFfMworKworKyAgIFByZXZlbnRzIGEgVExTdjEuMyBjb25uZWN0aW9uLiBUaGlzIG9wdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgaW4gY29uanVuY3Rpb24KKysgICB3aXRoIDpjb25zdDpgUFJPVE9DT0xfVExTYC4gSXQgcHJldmVudHMgdGhlIHBlZXJzIGZyb20gY2hvb3NpbmcgVExTdjEuMyBhcworKyAgIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBUTFMgMS4zIGlzIGF2YWlsYWJsZSB3aXRoIE9wZW5TU0wgMS4xLjEgb3IgbGF0ZXIuCisrICAgV2hlbiBQeXRob24gaGFzIGJlZW4gY29tcGlsZWQgYWdhaW5zdCBhbiBvbGRlciB2ZXJzaW9uIG9mIE9wZW5TU0wsIHRoZQorKyAgIGZsYWcgZGVmYXVsdHMgdG8gKjAqLgorKworKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNworKworIC4uIGRhdGE6OiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKyAKKyAgICBVc2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlLCByYXRoZXIgdGhhbiB0aGUgY2xpZW50J3MuCitAQCAtNzgzLDYgKzc5OCwxMiBAQCBDb25zdGFudHMKKyAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAKKysuLiBkYXRhOjogSEFTX1RMU3YxXzMKKysKKysgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSBUTFMgMS4zIHByb3RvY29sLgorKworKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNworKworIC4uIGRhdGE6OiBDSEFOTkVMX0JJTkRJTkdfVFlQRVMKKyAKKyAgICBMaXN0IG9mIHN1cHBvcnRlZCBUTFMgY2hhbm5lbCBiaW5kaW5nIHR5cGVzLiAgU3RyaW5ncyBpbiB0aGlzIGxpc3QKK2RpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQoraW5kZXggNGQzMDJhNzhmYS4uZjIzM2U3MmUxZiAxMDA2NDQKKy0tLSBhL0xpYi9zc2wucHkKKysrKyBiL0xpYi9zc2wucHkKK0BAIC0xMjIsNiArMTIyLDcgQEAgX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQorIF9pbXBvcnRfc3ltYm9scygnQUxFUlRfREVTQ1JJUFRJT05fJykKKyBfaW1wb3J0X3N5bWJvbHMoJ1NTTF9FUlJPUl8nKQorIF9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCisrZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4sIEhBU19UTFN2MV8zCisgCisgZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4KKyAKK0BAIC0xNjIsNiArMTYzLDcgQEAgZWxzZToKKyAjIChPcGVuU1NMJ3MgZGVmYXVsdCBzZXR0aW5nIGlzICdERUZBVUxUOiFhTlVMTDohZU5VTEwnKQorICMgRW5hYmxlIGEgYmV0dGVyIHNldCBvZiBjaXBoZXJzIGJ5IGRlZmF1bHQKKyAjIFRoaXMgbGlzdCBoYXMgYmVlbiBleHBsaWNpdGx5IGNob3NlbiB0bzoKKysjICAgKiBUTFMgMS4zIENoYUNoYTIwIGFuZCBBRVMtR0NNIGNpcGhlciBzdWl0ZXMKKyAjICAgKiBQcmVmZXIgY2lwaGVyIHN1aXRlcyB0aGF0IG9mZmVyIHBlcmZlY3QgZm9yd2FyZCBzZWNyZWN5IChESEUvRUNESEUpCisgIyAgICogUHJlZmVyIEVDREhFIG92ZXIgREhFIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKKyAjICAgKiBQcmVmZXIgQUVBRCBvdmVyIENCQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBzZWN1cml0eQorQEAgLTE3Myw2ICsxNzUsOCBAQCBlbHNlOgorICMgICAqIERpc2FibGUgTlVMTCBhdXRoZW50aWNhdGlvbiwgTlVMTCBlbmNyeXB0aW9uLCAzREVTIGFuZCBNRDUgTUFDcworICMgICAgIGZvciBzZWN1cml0eSByZWFzb25zCisgX0RFRkFVTFRfQ0lQSEVSUyA9ICgKKysgICAgJ1RMUzEzLUFFUy0yNTYtR0NNLVNIQTM4NDpUTFMxMy1DSEFDSEEyMC1QT0xZMTMwNS1TSEEyNTY6JworKyAgICAnVExTMTMtQUVTLTEyOC1HQ00tU0hBMjU2OicKKyAgICAgJ0VDREgrQUVTR0NNOkVDREgrQ0hBQ0hBMjA6REgrQUVTR0NNOkRIK0NIQUNIQTIwOkVDREgrQUVTMjU2OkRIK0FFUzI1NjonCisgICAgICdFQ0RIK0FFUzEyODpESCtBRVM6RUNESCtISUdIOkRIK0hJR0g6UlNBK0FFU0dDTTpSU0ErQUVTOlJTQStISUdIOicKKyAgICAgJyFhTlVMTDohZU5VTEw6IU1ENTohM0RFUycKK0BAIC0xODAsNiArMTg0LDcgQEAgX0RFRkFVTFRfQ0lQSEVSUyA9ICgKKyAKKyAjIFJlc3RyaWN0ZWQgYW5kIG1vcmUgc2VjdXJlIGNpcGhlcnMgZm9yIHRoZSBzZXJ2ZXIgc2lkZQorICMgVGhpcyBsaXN0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2hvc2VuIHRvOgorKyMgICAqIFRMUyAxLjMgQ2hhQ2hhMjAgYW5kIEFFUy1HQ00gY2lwaGVyIHN1aXRlcworICMgICAqIFByZWZlciBjaXBoZXIgc3VpdGVzIHRoYXQgb2ZmZXIgcGVyZmVjdCBmb3J3YXJkIHNlY3JlY3kgKERIRS9FQ0RIRSkKKyAjICAgKiBQcmVmZXIgRUNESEUgb3ZlciBESEUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQorICMgICAqIFByZWZlciBBRUFEIG92ZXIgQ0JDIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgYW5kIHNlY3VyaXR5CitAQCAtMTkwLDYgKzE5NSw4IEBAIF9ERUZBVUxUX0NJUEhFUlMgPSAoCisgIyAgICogRGlzYWJsZSBOVUxMIGF1dGhlbnRpY2F0aW9uLCBOVUxMIGVuY3J5cHRpb24sIE1ENSBNQUNzLCBEU1MsIFJDNCwgYW5kCisgIyAgICAgM0RFUyBmb3Igc2VjdXJpdHkgcmVhc29ucworIF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTID0gKAorKyAgICAnVExTMTMtQUVTLTI1Ni1HQ00tU0hBMzg0OlRMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NjonCisrICAgICdUTFMxMy1BRVMtMTI4LUdDTS1TSEEyNTY6JworICAgICAnRUNESCtBRVNHQ006RUNESCtDSEFDSEEyMDpESCtBRVNHQ006REgrQ0hBQ0hBMjA6RUNESCtBRVMyNTY6REgrQUVTMjU2OicKKyAgICAgJ0VDREgrQUVTMTI4OkRIK0FFUzpFQ0RIK0hJR0g6REgrSElHSDpSU0ErQUVTR0NNOlJTQStBRVM6UlNBK0hJR0g6JworICAgICAnIWFOVUxMOiFlTlVMTDohTUQ1OiFEU1M6IVJDNDohM0RFUycKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCBmOTFhZjdiZDA1Li4xYWNjMTJlYzJkIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtMTUwLDYgKzE1MCwxMyBAQCBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzc2wuT1BfTk9fQ09NUFJFU1NJT04KKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCisgICAgICAgICBzZWxmLmFzc2VydEluKHNzbC5IQVNfRUNESCwge1RydWUsIEZhbHNlfSkKKysgICAgICAgIHNzbC5PUF9OT19TU0x2MgorKyAgICAgICAgc3NsLk9QX05PX1NTTHYzCisrICAgICAgICBzc2wuT1BfTk9fVExTdjEKKysgICAgICAgIHNzbC5PUF9OT19UTFN2MV8zCisrICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMCwgMSk6CisrICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxXzEKKysgICAgICAgICAgICBzc2wuT1BfTk9fVExTdjFfMgorIAorICAgICBkZWYgdGVzdF9zdHJfZm9yX2VudW1zKHNlbGYpOgorICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgUFJPVE9DT0xfKiBjb25zdGFudHMgaGF2ZSBlbnVtLWxpa2Ugc3RyaW5nCitAQCAtMzAyOCwxMiArMzAzNSwzMyBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnZlcnNpb24oKSwgJ1RMU3YxJykKKyAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzLnZlcnNpb24oKSwgTm9uZSkKKyAKKysgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfVExTdjFfMywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IHJlcXVpcmVzIFRMU3YxLjMgZW5hYmxlZCBPcGVuU1NMIikKKysgICAgICAgIGRlZiB0ZXN0X3RsczFfMyhzZWxmKToKKysgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKKysgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKysgICAgICAgICAgICAjIGRpc2FibGUgYWxsIGJ1dCBUTFMgMS4zCisrICAgICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9ICgKKysgICAgICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxIHwgc3NsLk9QX05PX1RMU3YxXzEgfCBzc2wuT1BfTk9fVExTdjFfMgorKyAgICAgICAgICAgICkKKysgICAgICAgICAgICB3aXRoIFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQpIGFzIHNlcnZlcjoKKysgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKysgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzLmNpcGhlcigpWzBdLCBbCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0yNTYtR0NNLVNIQTM4NCcsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICBdKQorKworICAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAidGVzdCByZXF1aXJlcyBFQ0RILWVuYWJsZWQgT3BlblNTTCIpCisgICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUoc2VsZik6CisgICAgICAgICAgICAgIyBJc3N1ZSAjMjEwMTU6IGVsbGlwdGljIGN1cnZlLWJhc2VkIERpZmZpZSBIZWxsbWFuIGtleSBleGNoYW5nZQorICAgICAgICAgICAgICMgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBTU0wgY29udGV4dHMuCisgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisrICAgICAgICAgICAgIyBUTFN2MS4zIGRlZmF1bHRzIHRvIFBGUyBrZXkgYWdyZWVtZW50IGFuZCBubyBsb25nZXIgaGFzIEtFQSBpbgorKyAgICAgICAgICAgICMgY2lwaGVyIG5hbWUuCisrICAgICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8zCisgICAgICAgICAgICAgIyBQcmlvciB0byBPcGVuU1NMIDEuMC4wLCBFQ0RIIGNpcGhlcnMgaGF2ZSB0byBiZSBlbmFibGVkCisgICAgICAgICAgICAgIyBleHBsaWNpdGx5IHVzaW5nIHRoZSAnRUNDZHJhZnQnIGNpcGhlciBhbGlhcy4gIE90aGVyd2lzZSwKKyAgICAgICAgICAgICAjIG91ciBkZWZhdWx0IGNpcGhlciBsaXN0IHNob3VsZCBwcmVmZXIgRUNESC1iYXNlZCBjaXBoZXJzCitAQCAtMzM5NCw3ICszNDIyLDYgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnJlY3YoMTAyNCksIFRFU1RfREFUQSkKKyAKKy0KKyBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgorICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICBpbXBvcnQgd2FybmluZ3MKK2RpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxNy0wOS0wNC0xNi0zOS00OS5icG8tMjkxMzYudlNuMW9SLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE3LTA5LTA0LTE2LTM5LTQ5LmJwby0yOTEzNi52U24xb1IucnN0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uZTc2OTk3ZWY4MworLS0tIC9kZXYvbnVsbAorKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTctMDktMDQtMTYtMzktNDkuYnBvLTI5MTM2LnZTbjFvUi5yc3QKK0BAIC0wLDAgKzEgQEAKKytBZGQgVExTIDEuMyBjaXBoZXIgc3VpdGVzIGFuZCBPUF9OT19UTFN2MV8zLgorZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKK2luZGV4IDBkNWMxMjFkMmMuLmM3MWQ4OTYwN2MgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL19zc2wuYworKysrIGIvTW9kdWxlcy9fc3NsLmMKK0BAIC00ODQyLDYgKzQ4NDIsMTEgQEAgUHlJbml0X19zc2wodm9pZCkKKyAjaWYgSEFWRV9UTFN2MV8yCisgICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19UTFN2MV8xIiwgU1NMX09QX05PX1RMU3YxXzEpOworICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMiIsIFNTTF9PUF9OT19UTFN2MV8yKTsKKysjZW5kaWYKKysjaWZkZWYgU1NMX09QX05PX1RMU3YxXzMKKysgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxXzMiLCBTU0xfT1BfTk9fVExTdjFfMyk7CisrI2Vsc2UKKysgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxXzMiLCAwKTsKKyAjZW5kaWYKKyAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpOworQEAgLTQ4OTAsNiArNDg5NSwxNCBAQCBQeUluaXRfX3NzbCh2b2lkKQorICAgICBQeV9JTkNSRUYocik7CisgICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX0FMUE4iLCByKTsKKyAKKysjaWYgZGVmaW5lZChUTFMxXzNfVkVSU0lPTikgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19UTFMxXzMpCisrICAgIHIgPSBQeV9UcnVlOworKyNlbHNlCisrICAgIHIgPSBQeV9GYWxzZTsKKysjZW5kaWYKKysgICAgUHlfSU5DUkVGKHIpOworKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19UTFN2MV8zIiwgcik7CisrCisgICAgIC8qIE1hcHBpbmdzIGZvciBlcnJvciBjb2RlcyAqLworICAgICBlcnJfY29kZXNfdG9fbmFtZXMgPSBQeURpY3RfTmV3KCk7CisgICAgIGVycl9uYW1lc190b19jb2RlcyA9IFB5RGljdF9OZXcoKTsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDMtYnBvLTMyOTQ3LUZpeGVzLWZvci1UTFMtMS4zLWFuZC1PcGVuU1NMLTEuMS4xLUdILTg3Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDMtYnBvLTMyOTQ3LUZpeGVzLWZvci1UTFMtMS4zLWFuZC1PcGVuU1NMLTEuMS4xLUdILTg3Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmQ1OTFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1icG8tMzI5NDctRml4ZXMtZm9yLVRMUy0xLjMtYW5kLU9wZW5TU0wtMS4xLjEtR0gtODc2LnBhdGNoCkBAIC0wLDAgKzEsMTczIEBACitGcm9tIDE3MGE2MTQ5MDRmZWJkMTRmZjZjZmQ3YTc1YzliY2NjMTE0YjM5NDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KK0RhdGU6IFR1ZSwgMTQgQXVnIDIwMTggMTY6NTY6MzIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYnBvLTMyOTQ3OiBGaXhlcyBmb3IgVExTIDEuMyBhbmQgT3BlblNTTCAxLjEuMSAoR0gtODc2MSkKKworQmFja3BvcnQgb2YgVExTIDEuMyByZWxhdGVkIGZpeGVzIGZyb20gMy43LgorCitNaXNjIGZpeGVzIGFuZCB3b3JrYXJvdW5kcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIE9wZW5TU0wgMS4xLjEgZnJvbSBnaXQKK21hc3RlciBhbmQgVExTIDEuMyBzdXBwb3J0LiBXaXRoIE9wZW5TU0wgMS4xLjEsIFB5dGhvbiBuZWdvdGlhdGVzIFRMUyAxLjMgYnkKK2RlZmF1bHQuIFNvbWUgdGVzdCBjYXNlcyBvbmx5IGFwcGx5IHRvIFRMUyAxLjIuCisKK09wZW5TU0wgMS4xLjEgaGFzIGFkZGVkIGEgbmV3IG9wdGlvbiBPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVCBmb3IgVExTCisxLjMuIFRoZSBmZWF0dXJlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBmb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5IHdpdGgKK2Jyb2tlbiBtaWRkbGUgYm94ZXMuIFVzZXJzIHNob3VsZCBiZSBhYmxlIHRvIGRpc2FibGUgdGhlIGhhY2sgYW5kIENQeXRob24ncyB0ZXN0IHN1aXRlIG5lZWRzCitpdCB0byB2ZXJpZnkgZGVmYXVsdCBvcHRpb25zCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8yYTRlZThhYTAxZDYxYjZhOWM4ZTljNjVjMjExZTYxYmRiNDcxODI2XQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgRG9jL2xpYnJhcnkvc3NsLnJzdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrCisgTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZXZlbnRzLnB5ICAgICAgICAgIHwgIDYgKysrLQorIExpYi90ZXN0L3Rlc3Rfc3NsLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI5ICsrKysrKysrKysrKysrKy0tLS0KKyAuLi4vMjAxOC0wOC0xNC0wOC01Ny0wMS5icG8tMzI5NDcubXFTdFZXLnJzdCAgfCAgMiArKworIE1vZHVsZXMvX3NzbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrKworIDUgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDgtMTQtMDgtNTctMDEuYnBvLTMyOTQ3Lm1xU3RWVy5yc3QKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitpbmRleCAyOWM1ZTk0Y2Y2Li5mNjNhM2RlZWM1IDEwMDY0NAorLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdAorQEAgLTc1Nyw2ICs3NTcsMTUgQEAgQ29uc3RhbnRzCisgCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgCisrLi4gZGF0YTo6IE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUCisrCisrICAgU2VuZCBkdW1teSBDaGFuZ2UgQ2lwaGVyIFNwZWMgKENDUykgbWVzc2FnZXMgaW4gVExTIDEuMyBoYW5kc2hha2UgdG8gbWFrZQorKyAgIGEgVExTIDEuMyBjb25uZWN0aW9uIGxvb2sgbW9yZSBsaWtlIGEgVExTIDEuMiBjb25uZWN0aW9uLgorKworKyAgIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMSBhbmQgbGF0ZXIuCisrCisrICAgLi4gdmVyc2lvbmFkZGVkOjogMy42LjcKKysKKyAuLiBkYXRhOjogT1BfTk9fQ09NUFJFU1NJT04KKyAKKyAgICBEaXNhYmxlIGNvbXByZXNzaW9uIG9uIHRoZSBTU0wgY2hhbm5lbC4gIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBhcHBsaWNhdGlvbgorZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2V2ZW50cy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2V2ZW50cy5weQoraW5kZXggNDkyYTg0YTIzMS4uNmYyMDg0NzRiOSAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2V2ZW50cy5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZXZlbnRzLnB5CitAQCAtMTE2OSw3ICsxMTY5LDExIEBAIGNsYXNzIEV2ZW50TG9vcFRlc3RzTWl4aW46CisgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZfYykKKyAKKyAgICAgICAgICMgY2xvc2UgY29ubmVjdGlvbgorLSAgICAgICAgcHJvdG8udHJhbnNwb3J0LmNsb3NlKCkKKysgICAgICAgICMgdHJhbnNwb3J0IG1heSBiZSBOb25lIHdpdGggVExTIDEuMywgYmVjYXVzZSBjb25uZWN0aW9uIGlzCisrICAgICAgICAjIGludGVycnVwdGVkLCBzZXJ2ZXIgaXMgdW5hYmxlIHRvIHNlbmQgc2Vzc2lvbiB0aWNrZXRzLCBhbmQKKysgICAgICAgICMgdHJhbnNwb3J0IGlzIGNsb3NlZC4KKysgICAgICAgIGlmIHByb3RvLnRyYW5zcG9ydCBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBwcm90by50cmFuc3BvcnQuY2xvc2UoKQorICAgICAgICAgc2VydmVyLmNsb3NlKCkKKyAKKyAgICAgZGVmIHRlc3RfbGVnYWN5X2NyZWF0ZV9zZXJ2ZXJfc3NsX21hdGNoX2ZhaWxlZChzZWxmKToKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NzbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitpbmRleCAxYWNjMTJlYzJkLi5hMmUxZDMyYTYyIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CitAQCAtNzgsNiArNzgsNyBAQCBPUF9OT19DT01QUkVTU0lPTiA9IGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQorIE9QX1NJTkdMRV9ESF9VU0UgPSBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKQorIE9QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKKyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgPSBnZXRhdHRyKHNzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCisrT1BfRU5BQkxFX01JRERMRUJPWF9DT01QQVQgPSBnZXRhdHRyKHNzbCwgIk9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUIiwgMCkKKyAKKyAKKyBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CitAQCAtMTU1LDggKzE1Niw4IEBAIGNsYXNzIEJhc2ljU29ja2V0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc3NsLk9QX05PX1RMU3YxCisgICAgICAgICBzc2wuT1BfTk9fVExTdjFfMworICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDAsIDEpOgorLSAgICAgICAgICAgIHNzbC5PUF9OT19UTFN2MV8xCistICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxXzIKKysgICAgICAgIHNzbC5PUF9OT19UTFN2MV8xCisrICAgICAgICBzc2wuT1BfTk9fVExTdjFfMgorIAorICAgICBkZWYgdGVzdF9zdHJfZm9yX2VudW1zKHNlbGYpOgorICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgUFJPVE9DT0xfKiBjb25zdGFudHMgaGF2ZSBlbnVtLWxpa2Ugc3RyaW5nCitAQCAtODU0LDcgKzg1NSw4IEBAIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCisgICAgICAgICAjIFNTTENvbnRleHQgYWxzbyBlbmFibGVzIHRoZXNlIGJ5IGRlZmF1bHQKKyAgICAgICAgIGRlZmF1bHQgfD0gKE9QX05PX0NPTVBSRVNTSU9OIHwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIHwKKy0gICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCisrICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFIHwgT1BfU0lOR0xFX0VDREhfVVNFIHwKKysgICAgICAgICAgICAgICAgICAgIE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0LCBjdHgub3B0aW9ucykKKyAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0IHwgc3NsLk9QX05PX1RMU3YxLCBjdHgub3B0aW9ucykKK0BAIC0xODYwLDExICsxODYyLDI2IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfbnBuX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKQorICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMuYXBwZW5kKHNlbGYuc3NsY29ubi5zZWxlY3RlZF9hbHBuX3Byb3RvY29sKCkpCistICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTEVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvcikgYXMgZToKKysgICAgICAgICAgICAgICAgZXhjZXB0IChDb25uZWN0aW9uUmVzZXRFcnJvciwgQnJva2VuUGlwZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgIyBXZSB0cmVhdCBDb25uZWN0aW9uUmVzZXRFcnJvciBhcyB0aG91Z2ggaXQgd2VyZSBhbgorICAgICAgICAgICAgICAgICAgICAgIyBTU0xFcnJvciAtIE9wZW5TU0wgb24gVWJ1bnR1IGFicnVwdGx5IGNsb3NlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aGVuIGFza2VkIHRvIHVzZSBhbiB1bnN1cHBvcnRlZCBwcm90b2NvbC4KKyAgICAgICAgICAgICAgICAgICAgICMKKysgICAgICAgICAgICAgICAgICAgICMgQnJva2VuUGlwZUVycm9yIGlzIHJhaXNlZCBpbiBUTFMgMS4zIG1vZGUsIHdoZW4gT3BlblNTTAorKyAgICAgICAgICAgICAgICAgICAgIyB0cmllcyB0byBzZW5kIHNlc3Npb24gdGlja2V0cyBhZnRlciBoYW5kc2hha2UuCisrICAgICAgICAgICAgICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvaXNzdWVzLzYzNDIKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmNvbm5fZXJyb3JzLmFwcGVuZChzdHIoZSkpCisrICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcnZlci5jaGF0dHk6CisrICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2Vycm9yKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4gc2VydmVyOiAgYmFkIGNvbm5lY3Rpb24gYXR0ZW1wdCBmcm9tICIgKyByZXByKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRyKSArICI6XG4iKQorKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nID0gRmFsc2UKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisrICAgICAgICAgICAgICAgIGV4Y2VwdCAoc3NsLlNTTEVycm9yLCBPU0Vycm9yKSBhcyBlOgorKyAgICAgICAgICAgICAgICAgICAgIyBPU0Vycm9yIG1heSBvY2N1ciB3aXRoIHdyb25nIHByb3RvY29scywgZS5nLiBib3RoCisrICAgICAgICAgICAgICAgICAgICAjIHNpZGVzIHVzZSBQUk9UT0NPTF9UTFNfU0VSVkVSLgorKyAgICAgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICAgICAgIyBYWFggVmFyaW91cyBlcnJvcnMgY2FuIGhhdmUgaGFwcGVuZWQgaGVyZSwgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICMgYSBtaXNtYXRjaGluZyBwcm90b2NvbCB2ZXJzaW9uLCBhbiBpbnZhbGlkIGNlcnRpZmljYXRlLAorICAgICAgICAgICAgICAgICAgICAgIyBvciBhIGxvdy1sZXZlbCBidWcuIFRoaXMgc2hvdWxkIGJlIG1hZGUgbW9yZSBkaXNjcmltaW5hdGluZy4KK0BAIC0yOTc0LDcgKzI5OTEsNyBAQCBlbHNlOgorICAgICAgICAgICAgICAgICAjIEJsb2NrIG9uIHRoZSBhY2NlcHQgYW5kIHdhaXQgb24gdGhlIGNvbm5lY3Rpb24gdG8gY2xvc2UuCisgICAgICAgICAgICAgICAgIGV2dC5zZXQoKQorICAgICAgICAgICAgICAgICByZW1vdGUsIHBlZXIgPSBzZXJ2ZXIuYWNjZXB0KCkKKy0gICAgICAgICAgICAgICAgcmVtb3RlLnJlY3YoMSkKKysgICAgICAgICAgICAgICAgcmVtb3RlLnNlbmQocmVtb3RlLnJlY3YoNCkpCisgCisgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlKQorICAgICAgICAgICAgIHQuc3RhcnQoKQorQEAgLTI5ODIsNiArMjk5OSw4IEBAIGVsc2U6CisgICAgICAgICAgICAgZXZ0LndhaXQoKQorICAgICAgICAgICAgIGNsaWVudCA9IGNvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KChob3N0LCBwb3J0KSkKKysgICAgICAgICAgICBjbGllbnQuc2VuZChiJ2RhdGEnKQorKyAgICAgICAgICAgIGNsaWVudC5yZWN2KCkKKyAgICAgICAgICAgICBjbGllbnRfYWRkciA9IGNsaWVudC5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgICB0LmpvaW4oKQorZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA4LTE0LTA4LTU3LTAxLmJwby0zMjk0Ny5tcVN0VlcucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDgtMTQtMDgtNTctMDEuYnBvLTMyOTQ3Lm1xU3RWVy5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yOGRlMzYwYzM2CistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wOC0xNC0wOC01Ny0wMS5icG8tMzI5NDcubXFTdFZXLnJzdAorQEAgLTAsMCArMSwyIEBACisrQWRkIE9QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUIGFuZCB0ZXN0IHdvcmthcm91bmQgZm9yIFRMU3YxLjMgZm9yIGZ1dHVyZQorK2NvbXBhdGliaWxpdHkgd2l0aCBPcGVuU1NMIDEuMS4xLgorZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKK2luZGV4IGM3MWQ4OTYwN2MuLmViMTIzYTg3YmEgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL19zc2wuYworKysrIGIvTW9kdWxlcy9fc3NsLmMKK0BAIC00ODU4LDYgKzQ4NTgsMTAgQEAgUHlJbml0X19zc2wodm9pZCkKKyAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX0NPTVBSRVNTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX05PX0NPTVBSRVNTSU9OKTsKKyAjZW5kaWYKKysjaWZkZWYgU1NMX09QX0VOQUJMRV9NSURETEVCT1hfQ09NUEFUCisrICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTTF9PUF9FTkFCTEVfTUlERExFQk9YX0NPTVBBVCk7CisrI2VuZGlmCisgCisgI2lmIEhBVkVfU05JCisgICAgIHIgPSBQeV9UcnVlOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwNC1icG8tMzM1NzAtVExTLTEuMy1jaXBoZXJzLWZvci1PcGVuU1NMLTEuMS4xLUdILTY5NzYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDA0LWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTdkNTUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwNC1icG8tMzM1NzAtVExTLTEuMy1jaXBoZXJzLWZvci1PcGVuU1NMLTEuMS4xLUdILTY5NzYucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMGM5MzU0MzYyYmZhNWY5MGZiZWE4ZmY4MjM3YTFmMWY1ZGJhNjg2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogV2VkLCAxMiBTZXAgMjAxOCAxNToyMDozMSArMDgwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzM1NzA6IFRMUyAxLjMgY2lwaGVycyBmb3IgT3BlblNTTCAxLjEuMSAoR0gtNjk3NikKKworQ2hhbmdlIFRMUyAxLjMgY2lwaGVyIHN1aXRlIHNldHRpbmdzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggT3BlblNTTAorMS4xLjEtcHJlNiBhbmQgbmV3ZXIuIE9wZW5TU0wgMS4xLjEgd2lsbCBoYXZlIFRMUyAxLjMgY2lwZXJzIGVuYWJsZWQgYnkKK2RlZmF1bHQuCisKK0Fsc28gdXBkYXRlIG11bHRpc3NsdGVzdHMgYW5kIFRyYXZpcyBjb25maWcgdG8gdGVzdCB3aXRoIGxhdGVzdCBPcGVuU1NMLgorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGU4ZWI2Y2I3OTIwZGVkNjZhYmM1ZDI4NDMxOWE4NTM5YmRjMmJhZTMpCisKK0NvLWF1dGhvcmVkLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8zZTYzMGM1NDFiMzVjOTZiZmU1NjE5MTY1MjU1ZTU1OWY1NzdlZTcxXQorCitUd2Vha2VkIHBhdGNoIHRvIG5vdCB0YWtlIGNoYW5nZXMgZm9yIG11bHRpc3NsdGVzdHMgYW5kIFRyYXZpcyBjb25maWcuCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSB8IDUxICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQoraW5kZXggYTJlMWQzMmE2Mi4uYzQ4NGVhZDVmZiAxMDA2NDQKKy0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQorQEAgLTMwMjQsMTcgKzMwMjQsMjEgQEAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIHNvY2suZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT1RDT05OKQorIAorLSAgICAgICAgZGVmIHRlc3RfZGVmYXVsdF9jaXBoZXJzKHNlbGYpOgorLSAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorLSAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgIyBGb3JjZSBhIHNldCBvZiB3ZWFrIGNpcGhlcnMgb24gb3VyIGNsaWVudCBjb250ZXh0CistICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoIkRFUyIpCistICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvcjoKKy0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm8gREVTIGNpcGhlciBhdmFpbGFibGUiKQorLSAgICAgICAgICAgIHdpdGggVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PUZhbHNlKSBhcyBzZXJ2ZXI6CistICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisrICAgICAgICBkZWYgdGVzdF9ub19zaGFyZWRfY2lwaGVycyhzZWxmKToKKysgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisrICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisrICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorKworKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMxMjgiKQorKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LnNldF9jaXBoZXJzKCJBRVMyNTYiKQorKyAgICAgICAgICAgICMgT3BlblNTTCBlbmFibGVzIGFsbCBUTFMgMS4zIGNpcGhlcnMsIGVuZm9yY2UgVExTIDEuMiBmb3IgdGVzdAorKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzMKKysgICAgICAgICAgICB3aXRoIFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PXNlcnZlcl9jb250ZXh0KSBhcyBzZXJ2ZXI6CisrICAgICAgICAgICAgICAgIHdpdGggY2xpZW50X2NvbnRleHQud3JhcF9zb2NrZXQoCisrICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ibG9jYWxob3N0IikgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibm8gc2hhcmVkIGNpcGhlciIsIHN0cihzZXJ2ZXIuY29ubl9lcnJvcnNbMF0pKQorQEAgLTMwNjcsOSArMzA3MSw5IEBAIGVsc2U6CisgICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocy5jaXBoZXIoKVswXSwgWworLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1BRVMtMjU2LUdDTS1TSEEzODQnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1DSEFDSEEyMC1QT0xZMTMwNS1TSEEyNTYnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1BRVMtMTI4LUdDTS1TSEEyNTYnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICdUTFNfQUVTXzI1Nl9HQ01fU0hBMzg0JywKKysgICAgICAgICAgICAgICAgICAgICAgICAnVExTX0NIQUNIQTIwX1BPTFkxMzA1X1NIQTI1NicsCisrICAgICAgICAgICAgICAgICAgICAgICAgJ1RMU19BRVNfMTI4X0dDTV9TSEEyNTYnLAorICAgICAgICAgICAgICAgICAgICAgXSkKKyAKKyAgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgInRlc3QgcmVxdWlyZXMgRUNESC1lbmFibGVkIE9wZW5TU0wiKQorQEAgLTMzOTEsMjIgKzMzOTUsMTkgQEAgZWxzZToKKyAgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICBjbGllbnRfY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCistICAgICAgICAgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAwLCAyKToKKy0gICAgICAgICAgICAgICAgY2xpZW50X2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzEyODpBRVMyNTYiKQorLSAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMjU2IikKKy0gICAgICAgICAgICAgICAgYWxnMSA9ICJBRVMyNTYiCistICAgICAgICAgICAgICAgIGFsZzIgPSAiQUVTLTI1NiIKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfY2lwaGVycygiQUVTOjNERVMiKQorLSAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfY2lwaGVycygiM0RFUyIpCistICAgICAgICAgICAgICAgIGFsZzEgPSAiM0RFUyIKKy0gICAgICAgICAgICAgICAgYWxnMiA9ICJERVMtQ0JDMyIKKysgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfY2lwaGVycygiQUVTMTI4OkFFUzI1NiIpCisrICAgICAgICAgICAgc2VydmVyX2NvbnRleHQuc2V0X2NpcGhlcnMoIkFFUzI1NiIpCisrICAgICAgICAgICAgZXhwZWN0ZWRfYWxncyA9IFsKKysgICAgICAgICAgICAgICAgIkFFUzI1NiIsICJBRVMtMjU2IiwKKysgICAgICAgICAgICAgICAgICMgVExTIDEuMyBjaXBoZXJzIGFyZSBhbHdheXMgZW5hYmxlZAorKyAgICAgICAgICAgICAgICAgIlRMU19DSEFDSEEyMCIsICJUTFNfQUVTIiwKKysgICAgICAgICAgICBdCisgCisgICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0KQorICAgICAgICAgICAgIGNpcGhlcnMgPSBzdGF0c1snc2VydmVyX3NoYXJlZF9jaXBoZXJzJ11bMF0KKyAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGNpcGhlcnMpLCAwKQorICAgICAgICAgICAgIGZvciBuYW1lLCB0bHNfdmVyc2lvbiwgYml0cyBpbiBjaXBoZXJzOgorLSAgICAgICAgICAgICAgICBpZiBub3QgYWxnMSBpbiBuYW1lLnNwbGl0KCItIikgYW5kIGFsZzIgbm90IGluIG5hbWU6CisrICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkgKGFsZyBpbiBuYW1lIGZvciBhbGcgaW4gZXhwZWN0ZWRfYWxncyk6CisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwobmFtZSkKKyAKKyAgICAgICAgIGRlZiB0ZXN0X3JlYWRfd3JpdGVfYWZ0ZXJfY2xvc2VfcmFpc2VzX3ZhbHVlcnJvcihzZWxmKToKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDUtYnBvLTMwNzE0LUFMUE4tY2hhbmdlcy1mb3ItT3BlblNTTC0xLjEuMGYtMjMwNS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDUtYnBvLTMwNzE0LUFMUE4tY2hhbmdlcy1mb3ItT3BlblNTTC0xLjEuMGYtMjMwNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjA5ODQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwNS1icG8tMzA3MTQtQUxQTi1jaGFuZ2VzLWZvci1PcGVuU1NMLTEuMS4wZi0yMzA1LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gN2I0MGNiNzI5M2NiMTRlNWM3YzhlZDEyM2VmYWY5YWNiMzNlZGFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxMDozMzo0MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBicG8tMzA3MTQ6IEFMUE4gY2hhbmdlcyBmb3IgT3BlblNTTCAxLjEuMGYgKCMyMzA1KQorCitPcGVuU1NMIDEuMS4wIHRvIDEuMS4wZSBhYm9ydGVkIHRoZSBoYW5kc2hha2Ugd2hlbiBzZXJ2ZXIgYW5kIGNsaWVudAorY291bGQgbm90IGFncmVlIG9uIGEgcHJvdG9jb2wgdXNpbmcgQUxQTi4gT3BlblNTTCAxLjEuMGYgY2hhbmdlZCB0aGF0LgorVGhlIG1vc3QgcmVjZW50IHZlcnNpb24gbm93IGJlaGF2ZXMgbGlrZSBPcGVuU1NMIDEuMC4yIGFnYWluLiBUaGUgQUxQTgorY2FsbGJhY2sgY2FuIHByZXRlbmQgdG8gbm90IGJlZW4gc2V0LgorCitTZWUgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9wdWxsLzMxNTggZm9yIG1vcmUgZGV0YWlscworCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvN2I0MGNiNzI5M2NiMTRlNWM3YzhlZDEyM2VmYWY5YWNiMzNlZGFlMl0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIERvYy9saWJyYXJ5L3NzbC5yc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrLS0KKyBMaWIvdGVzdC90ZXN0X3NzbC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKy0tCisgLi4uL25leHQvVGVzdHMvMjAxNy0wNy0yNS0xNS0yNy00NC5icG8tMzA3MTUuU3A3YlRGLnJzdCAgICAgIHwgMiArKworIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTctMDctMjUtMTUtMjctNDQuYnBvLTMwNzE1LlNwN2JURi5yc3QKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CitpbmRleCA3MjlhMjM5YTFiLi4wYTA5ZTdlOWQ0IDEwMDY0NAorLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdAorQEAgLTE0NDcsOCArMTQ0Nyw5IEBAIHRvIHNwZWVkIHVwIHJlcGVhdGVkIGNvbm5lY3Rpb25zIGZyb20gdGhlIHNhbWUgY2xpZW50cy4KKyAgICBUaGlzIG1ldGhvZCB3aWxsIHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlmIDpkYXRhOmBIQVNfQUxQTmAgaXMKKyAgICBGYWxzZS4KKyAKKy0gICBPcGVuU1NMIDEuMS4wKyB3aWxsIGFib3J0IHRoZSBoYW5kc2hha2UgYW5kIHJhaXNlIDpleGM6YFNTTEVycm9yYCB3aGVuCistICAgYm90aCBzaWRlcyBzdXBwb3J0IEFMUE4gYnV0IGNhbm5vdCBhZ3JlZSBvbiBhIHByb3RvY29sLgorKyAgIE9wZW5TU0wgMS4xLjAgdG8gMS4xLjBlIHdpbGwgYWJvcnQgdGhlIGhhbmRzaGFrZSBhbmQgcmFpc2UgOmV4YzpgU1NMRXJyb3JgCisrICAgd2hlbiBib3RoIHNpZGVzIHN1cHBvcnQgQUxQTiBidXQgY2Fubm90IGFncmVlIG9uIGEgcHJvdG9jb2wuIDEuMS4wZisKKysgICBiZWhhdmVzIGxpa2UgMS4wLjIsIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbGAgcmV0dXJucyBOb25lLgorIAorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorIAorZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK2luZGV4IGQ5NjBkODIwNjUuLjEwNGI3ZjM3N2EgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKK0BAIC0zMjY4LDggKzMyNjgsOSBAQCBpZiBfaGF2ZV90aHJlYWRzOgorICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICBzdGF0cyA9IGUKKyAKKy0gICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgTm9uZSBhbmQgSVNfT1BFTlNTTF8xXzE6CistICAgICAgICAgICAgICAgICAgICAjIE9wZW5TU0wgMS4xLjAgcmFpc2VzIGhhbmRzaGFrZSBlcnJvcgorKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWQgaXMgTm9uZSBhbmQgSVNfT1BFTlNTTF8xXzEKKysgICAgICAgICAgICAgICAgICAgICAgICBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDEsIDEsIDAsIDYpKToKKysgICAgICAgICAgICAgICAgICAgICMgT3BlblNTTCAxLjEuMCB0byAxLjEuMGUgcmFpc2VzIGhhbmRzaGFrZSBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN0YXRzLCBzc2wuU1NMRXJyb3IpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiZmFpbGVkIHRyeWluZyAlcyAocykgYW5kICVzIChjKS5cbiIgXAorZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxNy0wNy0yNS0xNS0yNy00NC5icG8tMzA3MTUuU3A3YlRGLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxNy0wNy0yNS0xNS0yNy00NC5icG8tMzA3MTUuU3A3YlRGLnJzdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjg4Mzk0ZTU4NWMKKy0tLSAvZGV2L251bGwKKysrKyBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxNy0wNy0yNS0xNS0yNy00NC5icG8tMzA3MTUuU3A3YlRGLnJzdAorQEAgLTAsMCArMSwyIEBACisrQWRkcmVzcyBBTFBOIGNhbGxiYWNrIGNoYW5nZXMgZm9yIE9wZW5TU0wgMS4xLjBmLiBUaGUgbGF0ZXN0IHZlcnNpb24gYmVoYXZlcworK2xpa2UgT3BlblNTTCAxLjAuMiBhbmQgbm8gbG9uZ2VyIGFib3J0cyBoYW5kc2hha2UuCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9DVkUtMjAxOC0xMDYxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvQ1ZFLTIwMTgtMTA2MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM3M2JlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9DVkUtMjAxOC0xMDYxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUZyb20gNmQ3ZWYzOTE5ODg1NjM5NWVkZDYyZWYxNDNiZmNmYWFmMmVkNmUyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5lZCBEZWlseSA8bmFkQHB5dGhvbi5vcmc+Ci1EYXRlOiBTdW4sIDExIE1hciAyMDE4IDE0OjI5OjA1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFszLjVdIGJwby0zMjk4MTogRml4IGNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcgdnVsbnMKLSAoR0gtNTk1NSkgKCM2MDM0KQotCi0qIFByZXZlbnQgbG93LWdyYWRlIHBvcGxpYiBSRURPUyAoQ1ZFLTIwMTgtMTA2MCkKLQotVGhlIHJlZ2V4IHRvIHRlc3QgYSBtYWlsIHNlcnZlcidzIHRpbWVzdGFtcCBpcyBzdXNjZXB0aWJsZSB0bwotY2F0YXN0cm9waGljIGJhY2t0cmFja2luZyBvbiBsb25nIGV2aWwgcmVzcG9uc2VzIGZyb20gdGhlIHNlcnZlci4KLQotSGFwcGlseSwgdGhlIG1heGltdW0gbGVuZ3RoIG9mIG1hbGljaW91cyBpbnB1dHMgaXMgMksgdGhhbmtzCi10byBhIGxpbWl0IGludHJvZHVjZWQgaW4gdGhlIGZpeCBmb3IgQ1ZFLTIwMTMtMTc1Mi4KLQotQSAyS0IgZXZpbCByZXNwb25zZSBmcm9tIHRoZSBtYWlsIHNlcnZlciB3b3VsZCByZXN1bHQgaW4gc21hbGwgc2xvd2Rvd25zCi0obWlsbGlzZWNvbmRzIHZzLiBtaWNyb3NlY29uZHMpIGFjY3VtdWxhdGVkIG92ZXIgbWFueSBhcG9wIGNhbGxzLgotVGhpcyBpcyBhIHBvdGVudGlhbCBET1MgdmVjdG9yIHZpYSBhY2N1bXVsYXRlZCBzbG93ZG93bnMuCi0KLVJlcGxhY2UgaXQgd2l0aCBhIHNpbWlsYXIgbm9uLXZ1bG5lcmFibGUgcmVnZXguCi0KLVRoZSBuZXcgcmVnZXggaXMgUkZDIGNvbXBsaWFudC4KLVRoZSBvbGQgcmVnZXggd2FzIG5vbi1jb21wbGlhbnQgaW4gZWRnZSBjYXNlcy4KLQotKiBQcmV2ZW50IGRpZmZsaWIgUkVET1MgKENWRS0yMDE4LTEwNjEpCi0KLVRoZSBkZWZhdWx0IHJlZ2V4IGZvciBJU19MSU5FX0pVTksgaXMgc3VzY2VwdGlibGUgdG8KLWNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuCi1UaGlzIGlzIGEgcG90ZW50aWFsIERPUyB2ZWN0b3IuCi0KLVJlcGxhY2UgaXQgd2l0aCBhbiBlcXVpdmFsZW50IG5vbi12dWxuZXJhYmxlIHJlZ2V4LgotCi1BbHNvIGludHJvZHVjZSB1bml0IGFuZCBSRURPUyB0ZXN0cyBmb3IgZGlmZmxpYi4KLQotQ28tYXV0aG9yZWQtYnk6IFRpbSBQZXRlcnMgPHRpbS5wZXRlcnNAZ21haWwuY29tPgotQ28tYXV0aG9yZWQtYnk6IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPi4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDBlNmM4ZWUyMzU4YTJlMjMxMTc1MDE4MjZjMDA4ODQyYWNiODM1YWMpCi1DVkU6IENWRS0yMDE4LTEwNjEKLUNWRTogQ1ZFLTIwMTgtMTA2MAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC85MzdhYzFmZTA2OWE0ZGM4NDcxZGZmMjA1ZjU1M2Q4MmU3MjQwMTViXQotU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8b2theWFAa2VybmVsLm9yZz4KLS0tLQotIExpYi9kaWZmbGliLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gTGliL3BvcGxpYi5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBMaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkgICAgICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKystCi0gTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgICAgICAgICAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrLQotIE1pc2MvQUNLUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSAuLi4vMjAxOC0wMy0wMi0xMC0yNC01Mi5icG8tMzI5ODEuT19xRHlqLnJzdCAgfCAgNCArKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMTgtMDMtMDItMTAtMjQtNTIuYnBvLTMyOTgxLk9fcUR5ai5yc3QKLQotZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKLWluZGV4IDA3NmJiYWMwMWQuLmI0ZWMzMzUwNTYgMTAwNjQ0Ci0tLS0gYS9MaWIvZGlmZmxpYi5weQotKysrIGIvTGliL2RpZmZsaWIucHkKLUBAIC0xMDgzLDcgKzEwODMsNyBAQCBjbGFzcyBEaWZmZXI6Ci0gCi0gaW1wb3J0IHJlCi0gCi0tZGVmIElTX0xJTkVfSlVOSyhsaW5lLCBwYXQ9cmUuY29tcGlsZShyIlxzKiM/XHMqJCIpLm1hdGNoKToKLStkZWYgSVNfTElORV9KVU5LKGxpbmUsIHBhdD1yZS5jb21waWxlKHIiXHMqKD86I1xzKik/JCIpLm1hdGNoKToKLSAgICAgciIiIgotICAgICBSZXR1cm4gMSBmb3IgaWdub3JhYmxlIGxpbmU6IGlmZiBgbGluZWAgaXMgYmxhbmsgb3IgY29udGFpbnMgYSBzaW5nbGUgJyMnLgotIAotZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5Ci1pbmRleCA1MTZiNmYwNjBkLi4yNDM3ZWEwZTI3IDEwMDY0NAotLS0tIGEvTGliL3BvcGxpYi5weQotKysrIGIvTGliL3BvcGxpYi5weQotQEAgLTMwOCw3ICszMDgsNyBAQCBjbGFzcyBQT1AzOgotICAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0Y21kKCdSUE9QICVzJyAlIHVzZXIpCi0gCi0gCi0tICAgIHRpbWVzdGFtcCA9IHJlLmNvbXBpbGUoYnInXCtPSy4qKDxbXj5dKz4pJykKLSsgICAgdGltZXN0YW1wID0gcmUuY29tcGlsZShicidcK09LLltePF0qKDwuKj4pJykKLSAKLSAgICAgZGVmIGFwb3Aoc2VsZiwgdXNlciwgcGFzc3dvcmQpOgotICAgICAgICAgIiIiQXV0aG9yaXNhdGlvbgotZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQotaW5kZXggYWI5ZGViZjhlMi4uYjZjOGE3ZGQ1YiAxMDA2NDQKLS0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQotKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5Ci1AQCAtNDY2LDEzICs0NjYsMzMgQEAgY2xhc3MgVGVzdEJ5dGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgICAgICBsaXN0KGdlbmVyYXRvcigqYXJncykpCi0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgc3RyKGN0eC5leGNlcHRpb24pKQotIAotK2NsYXNzIFRlc3RKdW5rQVBJcyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0rICAgIGRlZiB0ZXN0X2lzX2xpbmVfanVua190cnVlKHNlbGYpOgotKyAgICAgICAgZm9yIGxpbmUgaW4gWycjJywgJyAgJywgJyAjJywgJyMgJywgJyAjICcsICcnXToKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlmZmxpYi5JU19MSU5FX0pVTksobGluZSksIHJlcHIobGluZSkpCi0rCi0rICAgIGRlZiB0ZXN0X2lzX2xpbmVfanVua19mYWxzZShzZWxmKToKLSsgICAgICAgIGZvciBsaW5lIGluIFsnIyMnLCAnICMjJywgJyMjICcsICdhYmMgJywgJ2FiYyAjJywgJ01yLiBNb29zZSBpcyB1cCEnXToKLSsgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRpZmZsaWIuSVNfTElORV9KVU5LKGxpbmUpLCByZXByKGxpbmUpKQotKwotKyAgICBkZWYgdGVzdF9pc19saW5lX2p1bmtfUkVET1Moc2VsZik6Ci0rICAgICAgICBldmlsX2lucHV0ID0gKCdcdCcgKiAxMDAwMDAwKSArICcjIycKLSsgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlmZmxpYi5JU19MSU5FX0pVTksoZXZpbF9pbnB1dCkpCi0rCi0rICAgIGRlZiB0ZXN0X2lzX2NoYXJhY3Rlcl9qdW5rX3RydWUoc2VsZik6Ci0rICAgICAgICBmb3IgY2hhciBpbiBbJyAnLCAnXHQnXToKLSsgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlmZmxpYi5JU19DSEFSQUNURVJfSlVOSyhjaGFyKSwgcmVwcihjaGFyKSkKLSsKLSsgICAgZGVmIHRlc3RfaXNfY2hhcmFjdGVyX2p1bmtfZmFsc2Uoc2VsZik6Ci0rICAgICAgICBmb3IgY2hhciBpbiBbJ2EnLCAnIycsICdcbicsICdcZicsICdccicsICdcdiddOgotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlmZmxpYi5JU19DSEFSQUNURVJfSlVOSyhjaGFyKSwgcmVwcihjaGFyKSkKLSAKLSBkZWYgdGVzdF9tYWluKCk6Ci0gICAgIGRpZmZsaWIuSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4ID0gMAotICAgICBEb2N0ZXN0cyA9IGRvY3Rlc3QuRG9jVGVzdFN1aXRlKGRpZmZsaWIpCi0gICAgIHJ1bl91bml0dGVzdCgKLSAgICAgICAgIFRlc3RXaXRoQXNjaWksIFRlc3RBdXRvanVuaywgVGVzdFNGcGF0Y2hlcywgVGVzdFNGYnVncywKLS0gICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIFRlc3RCeXRlcywgRG9jdGVzdHMpCi0rICAgICAgICBUZXN0T3V0cHV0Rm9ybWF0LCBUZXN0Qnl0ZXMsIFRlc3RKdW5rQVBJcywgRG9jdGVzdHMpCi0gCi0gaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgdGVzdF9tYWluKCkKLWRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5Ci1pbmRleCBiY2VlYjkzYWQxLi43OTllNDAzNjUyIDEwMDY0NAotLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKLSsrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5Ci1AQCAtMzAwLDkgKzMwMCwxOSBAQCBjbGFzcyBUZXN0UE9QM0NsYXNzKFRlc3RDYXNlKToKLSAgICAgZGVmIHRlc3RfcnBvcChzZWxmKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0T0soc2VsZi5jbGllbnQucnBvcCgnZm9vJykpCi0gCi0tICAgIGRlZiB0ZXN0X2Fwb3Aoc2VsZik6Ci0rICAgIGRlZiB0ZXN0X2Fwb3Bfbm9ybWFsKHNlbGYpOgotICAgICAgICAgc2VsZi5hc3NlcnRPSyhzZWxmLmNsaWVudC5hcG9wKCdmb28nLCAnZHVtbXlwYXNzd29yZCcpKQotIAotKyAgICBkZWYgdGVzdF9hcG9wX1JFRE9TKHNlbGYpOgotKyAgICAgICAgIyBSZXBsYWNlIHdlbGNvbWUgd2l0aCB2ZXJ5IGxvbmcgZXZpbCB3ZWxjb21lLgotKyAgICAgICAgIyBOQiBUaGUgdXBwZXIgYm91bmQgb24gd2VsY29tZSBsZW5ndGggaXMgY3VycmVudGx5IDIwNDguCi0rICAgICAgICAjIEF0IHRoaXMgbGVuZ3RoLCBldmlsIGlucHV0IG1ha2VzIGVhY2ggYXBvcCBjYWxsIHRha2UKLSsgICAgICAgICMgb24gdGhlIG9yZGVyIG9mIG1pbGxpc2Vjb25kcyBpbnN0ZWFkIG9mIG1pY3Jvc2Vjb25kcy4KLSsgICAgICAgIGV2aWxfd2VsY29tZSA9IGInK09LJyArIChiJzwnICogMTAwMDAwMCkKLSsgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LnN3YXBfYXR0cihzZWxmLmNsaWVudCwgJ3dlbGNvbWUnLCBldmlsX3dlbGNvbWUpOgotKyAgICAgICAgICAgICMgVGhlIGV2aWwgd2VsY29tZSBpcyBpbnZhbGlkLCBzbyBhcG9wIHNob3VsZCB0aHJvdy4KLSsgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwb3BsaWIuZXJyb3JfcHJvdG8sIHNlbGYuY2xpZW50LmFwb3AsICdhJywgJ2tiJykKLSsKLSAgICAgZGVmIHRlc3RfdG9wKHNlbGYpOgotICAgICAgICAgZXhwZWN0ZWQgPSAgKGInK09LIDExNiBieXRlcycsCi0gICAgICAgICAgICAgICAgICAgICAgW2InRnJvbTogcG9zdG1hc3RlckBweXRob24ub3JnJywgYidDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nLAotZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwotaW5kZXggMWEzNWFhZDY2Yy4uNzJjNWQ3NDBiZCAxMDA2NDQKLS0tLSBhL01pc2MvQUNLUwotKysrIGIvTWlzYy9BQ0tTCi1AQCAtMzQxLDYgKzM0MSw3IEBAIEt1c2hhbCBEYXMKLSBKb25hdGhhbiBEYXN0ZWVsCi0gUGllcnJlLVl2ZXMgRGF2aWQKLSBBLiBKZXNzZSBKaXJ5dSBEYXZpcwotK0phbWllIChKYW1lcyBDLikgRGF2aXMKLSBNZXJsaWpuIHZhbiBEZWVuCi0gSm9obiBEZUdvb2QKLSBOZWQgRGVpbHkKLWRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMTgtMDMtMDItMTAtMjQtNTIuYnBvLTMyOTgxLk9fcUR5ai5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMTgtMDMtMDItMTAtMjQtNTIuYnBvLTMyOTgxLk9fcUR5ai5yc3QKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi45ZWJhYmI0NGY5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5LzIwMTgtMDMtMDItMTAtMjQtNTIuYnBvLTMyOTgxLk9fcUR5ai5yc3QKLUBAIC0wLDAgKzEsNCBAQAotK1JlZ2V4ZXMgaW4gZGlmZmxpYiBhbmQgcG9wbGliIHdlcmUgdnVsbmVyYWJsZSB0byBjYXRhc3Ryb3BoaWMgYmFja3RyYWNraW5nLgotK1RoZXNlIHJlZ2V4ZXMgZm9ybWVkIHBvdGVudGlhbCBET1MgdmVjdG9ycyAoUkVET1MpLiBUaGV5IGhhdmUgYmVlbgotK3JlZmFjdG9yZWQuIFRoaXMgcmVzb2x2ZXMgQ1ZFLTIwMTgtMTA2MCBhbmQgQ1ZFLTIwMTgtMTA2MS4KLStQYXRjaCBieSBKYW1pZSBEYXZpcy4KLS0tIAotMi4xOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL1VzZS1jb3JyZWN0LUNGTEFHUy1mb3ItZXh0ZW5zaW9ucy13aGVuLWNyb3NzLWNvbXBpbGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9Vc2UtY29ycmVjdC1DRkxBR1MtZm9yLWV4dGVuc2lvbnMtd2hlbi1jcm9zcy1jb21waWxpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNzRlZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9Vc2UtY29ycmVjdC1DRkxBR1MtZm9yLWV4dGVuc2lvbnMtd2hlbi1jcm9zcy1jb21waWxpLnBhdGNoCkBAIC0wLDAgKzEsNTYgQEAKK0Zyb20gN2ZkMTIxYmI3ZDZjMjVjMmUwYTFjMzFjZjc2ZmI5YmQ0YTk3OTRkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmt1cyBMZWh0b25lbiA8bWFya3VzLmxlaHRvbmVuQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTQgQXVnIDIwMTggMTQ6MTE6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIFVzZSBjb3JyZWN0IENGTEFHUyBmb3IgZXh0ZW5zaW9ucyB3aGVuIGNyb3NzLWNvbXBpbGluZworCitUYWtlIFBZX0NGTEFHU19OT0RJU1QgaW50byBhY2NvdW50LCBsaWtlIGluIG5hdGl2ZSBidWlsZC4gVGhpcyBpcyBuZWVkZWQKK2luIG9yZGVyIHRvIHRvIHByb2ZpbGUtb3B0aW1pemVkIGJ1aWxkLiBBbHNvLCBwYXNzIEVYVFJBX0NGTEFHUyB0bworcHJvZmlsZS1vcHRpbWl6ZWQgYnVpbGQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgTGVodG9uZW4gPG1hcmt1cy5sZWh0b25lbkBsaW51eC5pbnRlbC5jb20+CistLS0KKyBNYWtlZmlsZS5wcmUuaW4gfCA0ICsrLS0KKyBzZXR1cC5weSAgICAgICAgfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCBlMmQ1ZDNkLi44NGJjM2ZmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC00NzgsNyArNDc4LDcgQEAgcHJvZmlsZS1vcHQ6CisgCSQoTUFLRSkgcHJvZmlsZS1yZW1vdmFsCisgCisgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6CistCSQoTUFLRSkgQERFRl9NQUtFX1JVTEVAIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSBATFRPRkxBR1NAIiBMREZMQUdTPSIkKExERkxBR1MpICQoUEdPX1BST0ZfR0VOX0ZMQUcpIEBMVE9GTEFHU0AiIExJQlM9IiQoTElCUykiCisrCSQoTUFLRSkgQERFRl9NQUtFX1JVTEVAIENGTEFHU19OT0RJU1Q9IiQoQ0ZMQUdTKSAkKEVYVFJBX0NGTEFHUykgJChQR09fUFJPRl9HRU5fRkxBRykgQExUT0ZMQUdTQCIgTERGTEFHUz0iJChMREZMQUdTKSAkKFBHT19QUk9GX0dFTl9GTEFHKSBATFRPRkxBR1NAIiBMSUJTPSIkKExJQlMpIgorIAorIHJ1bl9wcm9maWxlX3Rhc2s6CisgCTogIyBGSVhNRTogY2FuJ3QgcnVuIGZvciBhIGNyb3NzIGJ1aWxkCitAQCAtNDg4LDcgKzQ4OCw3IEBAIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlOgorIAkkKExMVk1fUFJPRl9NRVJHRVIpCisgCisgYnVpbGRfYWxsX3VzZV9wcm9maWxlOgorLQkkKE1BS0UpIEBERUZfTUFLRV9SVUxFQCBDRkxBR1NfTk9ESVNUPSIkKENGTEFHUykgJChQR09fUFJPRl9VU0VfRkxBRykgQExUT0ZMQUdTQCIgTERGTEFHUz0iJChMREZMQUdTKSBATFRPRkxBR1NAIgorKwkkKE1BS0UpIEBERUZfTUFLRV9SVUxFQCBDRkxBR1NfTk9ESVNUPSIkKENGTEFHUykgJChFWFRSQV9DRkxBR1MpICQoUEdPX1BST0ZfVVNFX0ZMQUcpIEBMVE9GTEFHU0AiIExERkxBR1M9IiQoTERGTEFHUykgQExUT0ZMQUdTQCIKKyAKKyAjIENvbXBpbGUgYW5kIHJ1biB3aXRoIGdjb3YKKyAuUEhPTlk9Y292ZXJhZ2UgY292ZXJhZ2UtbGNvdiBjb3ZlcmFnZS1yZXBvcnQKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCBhZGQzMzQ2Li42NWU4M2IxIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMjYzLDcgKzI2Myw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKKyAgICAgICAgICMgY29tcGlsZXJzCisgICAgICAgICBpZiBjb21waWxlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CistICAgICAgICAgICAgICAgIChjY3NoYXJlZCxjZmxhZ3MpID0gKG9zLmVudmlyb24uZ2V0KCdDQ1NIQVJFRCcpIG9yICcnLCBvcy5lbnZpcm9uLmdldCgnQ0ZMQUdTJykgb3IgJycpCisrICAgICAgICAgICAgICAgIChjY3NoYXJlZCxjZmxhZ3MpID0gKG9zLmVudmlyb24uZ2V0KCdDQ1NIQVJFRCcpIG9yICcnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3MuZW52aXJvbi5nZXQoJ0NGTEFHUycpIG9yICcnKSArICcgJyArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlfQ0ZMQUdTX05PRElTVCcpKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIChjY3NoYXJlZCxjZmxhZ3MpID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFycygnQ0NTSEFSRUQnLCdDRkxBR1MnKQorICAgICAgICAgICAgIGFyZ3NbJ2NvbXBpbGVyX3NvJ10gPSBjb21waWxlciArICcgJyArIGNjc2hhcmVkICsgJyAnICsgY2ZsYWdzCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvY3JlYXRlX21hbmlmZXN0My5weQppbmRleCAyZjk0NGY5Li5mZGRiMjNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9jcmVhdGVfbWFuaWZlc3QzLnB5CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2NyZWF0ZV9tYW5pZmVzdDMucHkKQEAgLTQzLDE5NCArNDMsMjM5IEBACiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IGpzb24KIGltcG9ydCBvcworaW1wb3J0IGNvbGxlY3Rpb25zCisKKyMgR2V0IHB5dGhvbiB2ZXJzaW9uIGZyb20gJHtQWVRIT05fTUFKTUlOfQorcHl2ZXJzaW9uID0gc3RyKHN5cy5hcmd2WzFdKQogCiAjIEhhY2sgdG8gZ2V0IG5hdGl2ZSBweXRob24gc2VhcmNoIHBhdGggKGZvciBmb2xkZXJzKSwgbm90IGZvbmQgb2YgaXQgYnV0IGl0IHdvcmtzIGZvciBub3cKLXBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCitwaXZvdCA9ICdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCiBmb3IgcCBpbiBzeXMucGF0aDoKLSAgaWYgcGl2b3QgaW4gcDoKLSAgICBuYXRpdmVsaWJmb2xkZXI9cFs6cC5maW5kKHBpdm90KStsZW4ocGl2b3QpXQorICAgIGlmIHBpdm90IGluIHA6CisgICAgICAgIG5hdGl2ZWxpYmZvbGRlciA9IHBbOnAuZmluZChwaXZvdCkrbGVuKHBpdm90KV0KIAogIyBFbXB0eSBkaWN0IHRvIGhvbGQgdGhlIHdob2xlIG1hbmlmZXN0Ci1uZXdfbWFuaWZlc3QgPSB7fQorbmV3X21hbmlmZXN0ID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQogCiAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcywgZm9sZGVycyBhbmQgd2lsZGNhcmRzCi1hbGxmaWxlcz1bXQotcmVwZWF0ZWQ9W10KLXdpbGRjYXJkcz1bXQorYWxsZmlsZXMgPSBbXQorcmVwZWF0ZWQgPSBbXQord2lsZGNhcmRzID0gW10KIAotaGFzZm9sZGVycz1bXQotYWxsZm9sZGVycz1bXQoraGFzZm9sZGVycyA9IFtdCithbGxmb2xkZXJzID0gW10KIAogZGVmIGlzRm9sZGVyKHZhbHVlKToKLSAgaWYgb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWInKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWI2NCcpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjMyJykpOgotICAgIHJldHVybiBUcnVlCi0gIGVsc2U6Ci0gICAgcmV0dXJuIEZhbHNlCisgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCcke1BZVEhPTl9NQUpNSU59JyxweXZlcnNpb24pCisgICAgaWYgb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWInKSkgb3Igb3MucGF0aC5pc2Rpcih2YWx1ZS5yZXBsYWNlKCcke2xpYmRpcn0nLG5hdGl2ZWxpYmZvbGRlcisnL3Vzci9saWI2NCcpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjMyJykpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBGYWxzZQogCiBkZWYgaXNDYWNoZWQoaXRlbSk6Ci0gIGlmICdfX3B5Y2FjaGVfXycgaW4gaXRlbToKLSAgICByZXR1cm4gVHJ1ZQotICBlbHNlOgotICAgIHJldHVybiBGYWxzZQorICAgIGlmICdfX3B5Y2FjaGVfXycgaW4gaXRlbToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gRmFsc2UKIAogIyBSZWFkIGV4aXN0aW5nIEpTT04gbWFuaWZlc3QKIHdpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3Q6Ci0gIG9sZF9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3QpCisgICAgb2xkX21hbmlmZXN0ID0ganNvbi5sb2FkKG1hbmlmZXN0LCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKIAotCisjCiAjIEZpcnN0IHBhc3MgdG8gZ2V0IGNvcmUtcGFja2FnZSBmdW5jdGlvbmFsaXR5LCBiZWNhdXNlIHdlIGJhc2UgZXZlcnl0aGluZyBvbiB0aGUgZmFjdCB0aGF0IGNvcmUgaXMgYWN0dWFsbHkgd29ya2luZwogIyBOb3QgZXhhY3RseSB0aGUgc2FtZSBzbyBpdCBzaG91bGQgbm90IGJlIGEgZnVuY3Rpb24KKyMKKwogcHJpbnQgKCdHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgcGFja2FnZTogY29yZScpCiAKLSMgU3BlY2lhbCBjYWxsIHRvIGNoZWNrIGZvciBjb3JlIHBhY2thZ2UKKworIyBUaGlzIHNwZWNpYWwgY2FsbCBnZXRzIHRoZSBjb3JlIGRlcGVuZGVuY2llcyBhbmQKKyMgYXBwZW5kcyB0byB0aGUgb2xkIG1hbmlmZXN0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgaXQKKyMgY3VycmVudGx5IGhvbGRzLgorIyBUaGlzIHdheSB3aGVuIG90aGVyIHBhY2thZ2VzIGNoZWNrIGZvciBkZXBlbmRlbmNpZXMKKyMgb24gdGhlIG5ldyBjb3JlIHBhY2thZ2UsIHRoZXkgd2lsbCBzdGlsbCBmaW5kIHRoZW0KKyMgZXZlbiB3aGVuIGNoZWNraW5nIHRoZSBvbGRfbWFuaWZlc3QKKwogb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICdweXRob24tY29yZS1wYWNrYWdlJ10pLmRlY29kZSgndXRmOCcpCi1mb3IgaXRlbSBpbiBvdXRwdXQuc3BsaXQoKToKLSAgICAjIFdlIGFwcGVuZCBpdCBzbyBpdCBkb2VzbnQgaHVydCB3aGF0IHdlIGN1cnJlbnRseSBoYXZlOgotICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgotICAgICAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106Ci0gICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKLSAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcwotICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQorZm9yIGNvcmVkZXAgaW4gb3V0cHV0LnNwbGl0KCk6CisgICAgY29yZWRlcCA9IGNvcmVkZXAucmVwbGFjZShweXZlcnNpb24sJyR7UFlUSE9OX01BSk1JTn0nKQorICAgIGlmIGlzQ2FjaGVkKGNvcmVkZXApOgorICAgICAgICBpZiBjb3JlZGVwIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKGNvcmVkZXApCiAgICAgZWxzZToKLSAgICAgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKLSAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcwotICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0KLWZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAjIFBhc3MgaXQgZGlyZWN0bHkKLSAgICBpZiBpc0NhY2hlZCh2YWx1ZSk6Ci0gICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106Ci0gICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKHZhbHVlKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICBjb250aW51ZQotICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBhc3N1bWUgaXQgd2FzIGFkZGVkIGNvcnJlY3RseSAobWFudWFsbHkpCi0gIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgotICAgICMgUGFzcyBpdCBkaXJlY3RseQotICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICBjb250aW51ZQotICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKLSAgaWYgdmFsdWUgPT0gJyc6Ci0gICAgY29udGludWUKLSAgaWYgJyR7aW5jbHVkZWRpcn0nIGluIHZhbHVlOgotICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICBjb250aW51ZQotICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKLSAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aCh2YWx1ZSkpKVswXQotCi0gICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCi0gICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYwotICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQotICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMzLnB5JywgJyVzJyAlIHZhbHVlXSkuZGVjb2RlKCd1dGY4JykKLSAgcHJpbnQgKCdUaGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyB3ZXJlIGZvdW5kIGZvciBtb2R1bGUgJXM6XG4nICUgdmFsdWUpCi0gIHByaW50IChvdXRwdXQpCi0gIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgotICAgICMgV2UgYXBwZW5kIGl0IHNvIGl0IGRvZXNudCBodXJ0IHdoYXQgd2UgY3VycmVudGx5IGhhdmU6Ci0gICAgaWYgaXNDYWNoZWQoaXRlbSk6Ci0gICAgICAgIGlmIGl0ZW0gbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXToKLSAgICAgICAgICAgICMgV2UgdXNlIHRoZSBzYW1lIGRhdGEgc3RydWN0dXJlIHNpbmNlIGl0cyB0aGUgb25lIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjaGVjawotICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMgZm9yIG90aGVyIHBhY2thZ2VzCi0gICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ10uYXBwZW5kKGl0ZW0pCi0gICAgZWxzZToKLSAgICAgICAgaWYgaXRlbSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAjIFdlIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBzaW5jZSBpdHMgdGhlIG9uZSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY2hlY2sKLSAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcwotICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCisgICAgICAgIGlmIGNvcmVkZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGNvcmVkZXApCiAKIAotIyBXZSBjaGVjayB3aGljaCBwYWNrYWdlcyBpbmNsdWRlIGZvbGRlcnMKLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgdmFsdWUpCi0gICAgICAgICAgICBpZiBrZXkgbm90IGluIGhhc2ZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgaGFzZm9sZGVycy5hcHBlbmQoa2V5KQotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgYWxsZm9sZGVycy5hcHBlbmQodmFsdWUpCisjIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBsb29wIHRocm91Z2ggdGhlIGV4aXN0aW5nIGZpbGVzIGNvbnRhaW5lZCBpbiB0aGUgY29yZSBwYWNrYWdlCisjIGFjY29yZGluZyB0byB0aGUgb2xkIG1hbmlmZXN0LCBpZGVudGlmeSBpZiB0aGV5IGFyZSAgbW9kdWxlcywgb3Igc29tZSBvdGhlciB0eXBlIAorIyBvZiBmaWxlIHRoYXQgd2UgY2FudCBpbXBvcnQgKGRpcmVjdG9yaWVzLCBiaW5hcmllcywgY29uZmlncykgaW4gd2hpY2ggY2FzZSB3ZQorIyBjYW4gb25seSBhc3N1bWUgdGhleSB3ZXJlIGFkZGVkIGNvcnJlY3RseSAobWFudWFsbHkpIHNvIHdlIGlnbm9yZSB0aG9zZSBhbmQgCisjIHBhc3MgdGhlbSB0byB0aGUgbWFuaWZlc3QgZGlyZWN0bHkuCiAKLWZvciBrZXkgaW4gb2xkX21hbmlmZXN0OgorZm9yIGZpbGVkZXAgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgaWYgaXNGb2xkZXIoZmlsZWRlcCk6CisgICAgICAgIGlmIGlzQ2FjaGVkKGZpbGVkZXApOgorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddOgorICAgICAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydjYWNoZWQnXS5hcHBlbmQoZmlsZWRlcCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGZpbGVkZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICBjb250aW51ZQorICAgIGlmICcke2JpbmRpcn0nIGluIGZpbGVkZXA6CisgICAgICAgIGlmIGZpbGVkZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ10uYXBwZW5kKGZpbGVkZXApCisgICAgICAgIGNvbnRpbnVlCisgICAgaWYgZmlsZWRlcCA9PSAnJzoKKyAgICAgICAgY29udGludWUKKyAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gZmlsZWRlcDoKKyAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106CisgICAgICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoZmlsZWRlcCkKKyAgICAgICAgY29udGludWUKKworICAgICMgR2V0IGFjdHVhbCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIsIGV0Yy4KKyAgICBweW1vZHVsZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLm5vcm1wYXRoKGZpbGVkZXApKSlbMF0KKworCisgICAgIyBXZSBub3cga25vdyB0aGF0IHdlcmUgZGVhbGluZyB3aXRoIGEgcHl0aG9uIG1vZHVsZSwgc28gd2UgY2FuIGltcG9ydCBpdAorICAgICMgYW5kIGNoZWNrIHdoYXQgaXRzIGRlcGVuZGVuY2llcyBhcmUuCisgICAgIyBXZSBsYXVuY2ggYSBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvci4KKyAgICAjIEVhY2ggbW9kdWxlIHdpbGwgb25seSBpbXBvcnQgd2hhdCBpcyBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsgaW4gc3BlY2lmaWMuCisgICAgIyBUaGUgb3V0cHV0IG9mIGVhY2ggdGFzayB3aWxsIGNvbnRhaW4gZWFjaCBtb2R1bGUncyBkZXBlbmRlbmNpZXMKKworICAgIHByaW50ICgnR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgcHltb2R1bGUpCisgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSBweW1vZHVsZV0pLmRlY29kZSgndXRmOCcpCisgICAgcHJpbnQgKCdUaGUgZm9sbG93aW5nIGRlcGVuZGVuY2llcyB3ZXJlIGZvdW5kIGZvciBtb2R1bGUgJXM6XG4nICUgcHltb2R1bGUpCisgICAgcHJpbnQgKG91dHB1dCkKKworCisgICAgZm9yIHB5bW9kdWxlX2RlcCBpbiBvdXRwdXQuc3BsaXQoKToKKyAgICAgICAgcHltb2R1bGVfZGVwID0gcHltb2R1bGVfZGVwLnJlcGxhY2UocHl2ZXJzaW9uLCcke1BZVEhPTl9NQUpNSU59JykKKworICAgICAgICBpZiBpc0NhY2hlZChweW1vZHVsZV9kZXApOgorICAgICAgICAgICAgaWYgcHltb2R1bGVfZGVwIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2NhY2hlZCddLmFwcGVuZChweW1vZHVsZV9kZXApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgorICAgICAgICAgICAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChweW1vZHVsZV9kZXApCisKKworIyBBdCB0aGlzIHBvaW50IHdlIGFyZSBkb25lIHdpdGggdGhlIGNvcmUgcGFja2FnZS4KKyMgVGhlIG9sZF9tYW5pZmVzdCBkaWN0aW9uYXJ5IGlzIHVwZGF0ZWQgb25seSBmb3IgdGhlIGNvcmUgcGFja2FnZSBiZWNhdXNlCisjIGFsbCBvdGhlcnMgd2lsbCB1c2UgdGhpcyBhIGJhc2UuCisKKworIyBUbyBpbXByb3ZlIHRoZSBzY3JpcHQgc3BlZWQsIHdlIGNoZWNrIHdoaWNoIHBhY2thZ2VzIGNvbnRhaW4gZGlyZWN0b3JpZXMKKyMgc2luY2Ugd2Ugd2lsbCBiZSBsb29waW5nIHRocm91Z2ggKG9ubHkpIHRob3NlIGxhdGVyLgorZm9yIHB5cGtnIGluIG9sZF9tYW5pZmVzdDoKKyAgICBmb3IgZmlsZWRlcCBpbiBvbGRfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddOgorICAgICAgICBpZiBpc0ZvbGRlcihmaWxlZGVwKToKKyAgICAgICAgICAgIHByaW50ICgnJXMgaXMgYSBmb2xkZXInICUgZmlsZWRlcCkKKyAgICAgICAgICAgIGlmIHB5cGtnIG5vdCBpbiBoYXNmb2xkZXJzOgorICAgICAgICAgICAgICAgIGhhc2ZvbGRlcnMuYXBwZW5kKHB5cGtnKQorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gYWxsZm9sZGVyczoKKyAgICAgICAgICAgICAgICBhbGxmb2xkZXJzLmFwcGVuZChmaWxlZGVwKQorCisKKworIyBUaGlzIGlzIHRoZSBtYWluIGxvb3AgdGhhdCB3aWxsIGhhbmRsZSBlYWNoIHBhY2thZ2UuCisjIEl0IHdvcmtzIGluIGEgc2ltaWxhciBmYXNoaW9uIHRoYW4gdGhlIHN0ZXAgYmVmb3JlLCBidXQKKyMgd2Ugd2lsbCBub3cgYmUgdXBkYXRpbmcgYSBuZXcgZGljdGlvbmFyeSB0aGF0IHdpbGwgZXZlbnR1YWxseQorIyBiZWNvbWUgdGhlIG5ldyBtYW5pZmVzdC4KKyMKKyMgVGhlIGZvbGxvd2luZyBsb29wcyB0aG91Z2ggYWxsIHBhY2thZ2VzIGluIHRoZSBtYW5pZmVzdCwKKyMgdGhyb3VnaCBhbGwgZmlsZXMgb24gZWFjaCBvZiB0aGVtLCBhbmQgY2hlY2tzIHdoZXRoZXIgb3Igbm90CisjIHRoZXkgYXJlIG1vZHVsZXMgYW5kIGNhbiBiZSBpbXBvcnRlZC4KKyMgSWYgdGhleSBjYW4gYmUgaW1wb3J0ZWQsIHRoZW4gaXQgY2hlY2tzIGZvciBkZXBlbmRlbmNpZXMgZm9yCisjIGVhY2ggb2YgdGhlbSBieSBsYXVuY2hpbmcgYSBzZXBhcmF0ZSB0YXNrLgorIyBUaGUgb3V0cHV0IG9mIHRoYXQgdGFzayBpcyB0aGVuIHBhcnNlZCBhbmQgdGhlIG1hbmlmZXN0IGlzIHVwZGF0ZWQKKyMgYWNjb3JkaW5nbHksIHdldGhlciBpdCBzaG91bGQgYWRkIHRoZSBtb2R1bGUgb24gRklMRVMgZm9yIHRoZSBjdXJyZW50IHBhY2thZ2UKKyMgb3IgaWYgdGhhdCBtb2R1bGUgYWxyZWFkeSBiZWxvbmdzIHRvIGFub3RoZXIgcGFja2FnZSB0aGVuIHRoZSBjdXJyZW50IG9uZSAKKyMgd2lsbCBSREVQRU5EIG9uIGl0CisKK2ZvciBweXBrZyBpbiBvbGRfbWFuaWZlc3Q6CiAgICAgIyBVc2UgYW4gZW1wdHkgZGljdCBhcyBkYXRhIHN0cnVjdHVyZSB0byBob2xkIGRhdGEgZm9yIGVhY2ggcGFja2FnZSBhbmQgZmlsbCBpdCB1cAotICAgIG5ld19tYW5pZmVzdFtrZXldPXt9Ci0gICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ109W10KLSAgICAKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXT1bXQorICAgIG5ld19tYW5pZmVzdFtweXBrZ10gPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnc3VtbWFyeSddID0gb2xkX21hbmlmZXN0W3B5cGtnXVsnc3VtbWFyeSddCisgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsncmRlcGVuZHMnXSA9IFtdCisgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXSA9IFtdCisgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnY2FjaGVkJ10gPSBvbGRfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXQorCiAgICAgIyBBbGwgcGFja2FnZXMgc2hvdWxkIGRlcGVuZCBvbiBjb3JlCi0gICAgaWYga2V5ICE9ICdjb3JlJzoKLSAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZCgnY29yZScpCi0gICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ109W10KLSAgICBlbHNlOgotICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddPW9sZF9tYW5pZmVzdFtrZXldWydjYWNoZWQnXQotICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J109b2xkX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXQorICAgIGlmIHB5cGtnICE9ICdjb3JlJzoKKyAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsncmRlcGVuZHMnXS5hcHBlbmQoJ2NvcmUnKQorICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXSA9IFtdCisKKyAgICBwcmludCgnXG4nKQorICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCisgICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIHB5cGtnKQorICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCiAKICAgICAjIEhhbmRsZSBzcGVjaWFsIGNhc2VzLCB3ZSBhc3N1bWUgdGhhdCB3aGVuIHRoZXkgd2VyZSBtYW51YWxseSBhZGRlZCAKICAgICAjIHRvIHRoZSBtYW5pZmVzdCB3ZSBrbmV3IHdoYXQgd2Ugd2VyZSBkb2luZy4KLSAgICBwcmludCgnXG4nKQotICAgIHByaW50KCctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpCi0gICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIGtleSkKLSAgICBwcmludCgnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nKQotICAgIHNwZWNpYWxfcGFja2FnZXM9WydtaXNjJywgJ21vZHVsZXMnLCAnZGV2J10KLSAgICBpZiBrZXkgaW4gc3BlY2lhbF9wYWNrYWdlcyBvciAnc3RhdGljZGV2JyBpbiBrZXk6Ci0gICAgICAgIHByaW50KCdQYXNzaW5nICVzIHBhY2thZ2UgZGlyZWN0bHknICUga2V5KQotICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XT1vbGRfbWFuaWZlc3Rba2V5XQorICAgIHNwZWNpYWxfcGFja2FnZXMgPSBbJ21pc2MnLCAnbW9kdWxlcycsICdkZXYnLCAndGVzdHMnXQorICAgIGlmIHB5cGtnIGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4gcHlwa2c6CisgICAgICAgIHByaW50KCdQYXNzaW5nICVzIHBhY2thZ2UgZGlyZWN0bHknICUgcHlwa2cpCisgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ10gPSBvbGRfbWFuaWZlc3RbcHlwa2ddCiAgICAgICAgIGNvbnRpbnVlCiAKLSAgICBmb3IgdmFsdWUgaW4gb2xkX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MKLSAgICAgICAgaWYga2V5ID09ICdjb3JlJzoKLSAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgSWdub3JlIGZvbGRlcnMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgZGlmZmljdWx0IHRvIGhhbmRsZSBtdWx0aWxpYgotICAgICAgICBpZiBpc0ZvbGRlcih2YWx1ZSk6Ci0gICAgICAgICAgICAjIFBhc3MgZm9sZGVycyBkaXJlY3RseQotICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAjIElnbm9yZSBiaW5hcmllcywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlCi0gICAgICAgIGlmICcke2JpbmRpcn0nIGluIHZhbHVlOgotICAgICAgICAgICAgIyBQYXNzIGl0IGRpcmVjdGx5IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIElnbm9yZSBlbXB0eSB2YWx1ZXMKLSAgICAgICAgaWYgdmFsdWUgPT0gJyc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiAnJHtpbmNsdWRlZGlyfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQorICAgIGZvciBmaWxlZGVwIGluIG9sZF9tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ106CisgICAgICAgICMgV2UgYWxyZWFkeSBoYW5kbGVkIGNvcmUgb24gdGhlIGZpcnN0IHBhc3MsIHdlIGNhbiBpZ25vcmUgaXQgbm93CisgICAgICAgIGlmIHB5cGtnID09ICdjb3JlJzoKKyAgICAgICAgICAgIGlmIGZpbGVkZXAgbm90IGluIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ106CisgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXS5hcHBlbmQoZmlsZWRlcCkKICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCisgICAgICAgICMgSGFuZGxlL2lnbm9yZSB3aGF0IHdlIGNhbnQgaW1wb3J0CisgICAgICAgIGlmIGlzRm9sZGVyKGZpbGVkZXApOgorICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXS5hcHBlbmQoZmlsZWRlcCkKKyAgICAgICAgICAgICMgQXN5bmNpbyAoYW5kIG90aGVycykgYXJlIGJvdGggdGhlIHBhY2thZ2UgYW5kIHRoZSBmb2xkZXIgbmFtZSwgd2Ugc2hvdWxkIG5vdCBza2lwIHRob3NlLi4uCisgICAgICAgICAgICBwYXRoLG1vZCA9IG9zLnBhdGguc3BsaXQoZmlsZWRlcCkKKyAgICAgICAgICAgIGlmIG1vZCAhPSBweXBrZzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAnJHtiaW5kaXJ9JyBpbiBmaWxlZGVwOgorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgZmlsZWRlcCA9PSAnJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiBmaWxlZGVwOgorICAgICAgICAgICAgaWYgZmlsZWRlcCBub3QgaW4gbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXToKKyAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydmaWxlcyddLmFwcGVuZChmaWxlZGVwKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIEdldCBhY3R1YWwgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyLCBldGMuCiAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGNvbWVzIGZyb20gYW5vdGhlciAoZS5nLiBzcWxpdGUzLmR1bXApCi0gICAgICAgIHBhdGgsdmFsdWUgPSBvcy5wYXRoLnNwbGl0KHZhbHVlKQorICAgICAgICBwYXRoLHB5bW9kdWxlID0gb3MucGF0aC5zcGxpdChmaWxlZGVwKQogICAgICAgICBwYXRoID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgICAgICB2YWx1ZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh2YWx1ZSkpWzBdCisgICAgICAgIHB5bW9kdWxlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHB5bW9kdWxlKSlbMF0KIAogICAgICAgICAjIElmIHRoaXMgY29uZGl0aW9uIGlzIG1ldCwgaXQgbWVhbnMgd2UgbmVlZCB0byBpbXBvcnQgaXQgZnJvbSBhbm90aGVyIG1vZHVsZQogICAgICAgICAjIG9yIGl0cyB0aGUgZm9sZGVyIGl0c2VsZiAoZS5nLiB1bml0dGVzdCkKLSAgICAgICAgaWYgcGF0aCA9PSBrZXk6Ci0gICAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICB2YWx1ZSA9IHBhdGggKyAnLicgKyB2YWx1ZQotICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YWx1ZSA9IHBhdGgKKyAgICAgICAgaWYgcGF0aCA9PSBweXBrZzoKKyAgICAgICAgICAgIGlmIHB5bW9kdWxlOgorICAgICAgICAgICAgICAgIHB5bW9kdWxlID0gcGF0aCArICcuJyArIHB5bW9kdWxlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHB5bW9kdWxlID0gcGF0aAogCi0gICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCi0gICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYwotICAgICAgICBwcmludCAoJ1xuR2V0dGluZyBkZXBlbmRlbmNpZXMgZm9yIG1vZHVsZTogJXMnICUgdmFsdWUpCi0gICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczMucHknLCAnJXMnICUgdmFsdWVdKS5kZWNvZGUoJ3V0ZjgnKQotICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcwotICAgICAgICBwcmludCAoJ1RoZSBmb2xsb3dpbmcgZGVwZW5kZW5jaWVzIHdlcmUgZm91bmQgZm9yIG1vZHVsZSAlczpcbicgJSB2YWx1ZSkKKworCisgICAgICAgICMgV2Ugbm93IGtub3cgdGhhdCB3ZXJlIGRlYWxpbmcgd2l0aCBhIHB5dGhvbiBtb2R1bGUsIHNvIHdlIGNhbiBpbXBvcnQgaXQKKyAgICAgICAgIyBhbmQgY2hlY2sgd2hhdCBpdHMgZGVwZW5kZW5jaWVzIGFyZS4KKyAgICAgICAgIyBXZSBsYXVuY2ggYSBzZXBhcmF0ZSB0YXNrIGZvciBlYWNoIG1vZHVsZSBmb3IgZGV0ZXJtaW5pc3RpYyBiZWhhdmlvci4KKyAgICAgICAgIyBFYWNoIG1vZHVsZSB3aWxsIG9ubHkgaW1wb3J0IHdoYXQgaXMgbmVjZXNzYXJ5IGZvciBpdCB0byB3b3JrIGluIHNwZWNpZmljLgorICAgICAgICAjIFRoZSBvdXRwdXQgb2YgZWFjaCB0YXNrIHdpbGwgY29udGFpbiBlYWNoIG1vZHVsZSdzIGRlcGVuZGVuY2llcworCisgICAgICAgIHByaW50ICgnXG5HZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgbW9kdWxlOiAlcycgJSBweW1vZHVsZSkKKyAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3N5cy5leGVjdXRhYmxlLCAnZ2V0X21vZHVsZV9kZXBzMy5weScsICclcycgJSBweW1vZHVsZV0pLmRlY29kZSgndXRmOCcpCisgICAgICAgIHByaW50ICgnVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgd2VyZSBmb3VuZCBmb3IgbW9kdWxlICVzOlxuJyAlIHB5bW9kdWxlKQogICAgICAgICBwcmludCAob3V0cHV0KQotICAgICAgICAjIE91dHB1dCB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcwogCiAgICAgICAgIHJlcG9ydEZJTEVTID0gW10KICAgICAgICAgcmVwb3J0UkRFUFMgPSBbXQogCi0gICAgICAgIGZvciBpdGVtIGluIG91dHB1dC5zcGxpdCgpOgorICAgICAgICBmb3IgcHltb2R1bGVfZGVwIGluIG91dHB1dC5zcGxpdCgpOgogCiAgICAgICAgICAgICAjIFdhcm5pbmc6IFRoaXMgZmlyc3QgcGFydCBpcyB1Z2x5CiAgICAgICAgICAgICAjIE9uZSBvZiB0aGUgZGVwZW5kZW5jaWVzIHRoYXQgd2FzIGZvdW5kLCBjb3VsZCBiZSBpbnNpZGUgb2Ygb25lIG9mIHRoZSBmb2xkZXJzIGluY2x1ZGVkIGJ5IGFub3RoZXIgcGFja2FnZQpAQCAtMjUwLDIyICsyOTUsMjIgQEAKICAgICAgICAgICAgICMgICBpcyBmb2xkZXJfc3RyaW5nIGluc2lkZSBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZT8sIAogICAgICAgICAgICAgIyAgIFllcywgaXQgd29ya3MsIGJ1dCB3ZSB3YXN0ZSBhIGNvdXBsZSBvZiBtaWxsaXNlY29uZHMuCiAKLSAgICAgICAgICAgIGluRm9sZGVycz1GYWxzZQorICAgICAgICAgICAgcHltb2R1bGVfZGVwID0gcHltb2R1bGVfZGVwLnJlcGxhY2UocHl2ZXJzaW9uLCcke1BZVEhPTl9NQUpNSU59JykKKyAgICAgICAgICAgIGluRm9sZGVycyA9IEZhbHNlCiAgICAgICAgICAgICBmb3IgZm9sZGVyIGluIGFsbGZvbGRlcnM6Ci0gICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIGl0ZW06CisgICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIHB5bW9kdWxlX2RlcDoKICAgICAgICAgICAgICAgICAgICAgaW5Gb2xkZXJzID0gVHJ1ZSAjIERpZCB3ZSBmaW5kIGEgZm9sZGVyPwogICAgICAgICAgICAgICAgICAgICBmb2xkZXJGb3VuZCA9IEZhbHNlICMgU2Vjb25kIGZsYWcgdG8gYnJlYWsgaW5uZXIgZm9yCiAgICAgICAgICAgICAgICAgICAgICMgTG9vcCBvbmx5IHRocm91Z2ggcGFja2FnZXMgd2hpY2ggY29udGFpbiBmb2xkZXJzCi0gICAgICAgICAgICAgICAgICAgIGZvciBrZXlmb2xkZXIgaW4gaGFzZm9sZGVyczoKKyAgICAgICAgICAgICAgICAgICAgZm9yIHB5cGtnX3dpdGhfZm9sZGVyIGluIGhhc2ZvbGRlcnM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9sZGVyRm91bmQgPT0gRmFsc2UpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCgnQ2hlY2tpbmcgZm9sZGVyICVzIG9uIHBhY2thZ2UgJXMnICUgKGl0ZW0sa2V5Zm9sZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2ZpbGVzJ10gb3IgZmlsZV9mb2xkZXIgaW4gb2xkX21hbmlmZXN0W2tleWZvbGRlcl1bJ2NhY2hlZCddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX2ZvbGRlcj09Zm9sZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCclcyBmb2xkZXIgZm91bmQgaW4gJXMnICUgKGZvbGRlciwga2V5Zm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50KCdDaGVja2luZyBmb2xkZXIgJXMgb24gcGFja2FnZSAlcycgJSAocHltb2R1bGVfZGVwLHB5cGtnX3dpdGhfZm9sZGVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZm9sZGVyX2RlcCBpbiBvbGRfbWFuaWZlc3RbcHlwa2dfd2l0aF9mb2xkZXJdWydmaWxlcyddIG9yIGZvbGRlcl9kZXAgaW4gb2xkX21hbmlmZXN0W3B5cGtnX3dpdGhfZm9sZGVyXVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZvbGRlcl9kZXAgPT0gZm9sZGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCclcyBmb2xkZXIgZm91bmQgaW4gJXMnICUgKGZvbGRlciwgcHlwa2dfd2l0aF9mb2xkZXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXlmb2xkZXIgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddIGFuZCBrZXlmb2xkZXIgIT0ga2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChrZXlmb2xkZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHB5cGtnX3dpdGhfZm9sZGVyIG5vdCBpbiBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddIGFuZCBweXBrZ193aXRoX2ZvbGRlciAhPSBweXBrZzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddLmFwcGVuZChweXBrZ193aXRoX2ZvbGRlcikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIApAQCAtMjc0LDgxICszMTksOTUgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAKLSAgICAgICAgICAgICMgV2UgbWlnaHQgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSBkaWN0aW9uYXJ5IHNpbmNlIGl0IGNvdWxkIGRlcGVuZCBvbiBhIChwcmV2aW91c2x5IGNoZWNrZWQpIG1vZHVsZQotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10gYW5kIGl0ZW0gbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXToKKworICAgICAgICAgICAgIyBObyBkaXJlY3RvcmllcyBiZXlvbmQgdGhpcyBwb2ludAorICAgICAgICAgICAgIyBXZSBtaWdodCBhbHJlYWR5IGhhdmUgdGhpcyBtb2R1bGUgb24gdGhlIGRpY3Rpb25hcnkgc2luY2UgaXQgY291bGQgZGVwZW5kIG9uIGEgKHByZXZpb3VzbHkgY2hlY2tlZCkgbW9kdWxlCisgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ10gYW5kIHB5bW9kdWxlX2RlcCBub3QgaW4gbmV3X21hbmlmZXN0W3B5cGtnXVsnY2FjaGVkJ106CiAgICAgICAgICAgICAgICAgIyBIYW5kbGUgY29yZSBhcyBhIHNwZWNpYWwgcGFja2FnZSwgd2UgYWxyZWFkeSBkaWQgaXQgc28gd2UgcGFzcyBpdCB0byBORVcgZGF0YSBzdHJ1Y3R1cmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICBpZiBrZXk9PSdjb3JlJzoKLSAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCi0gICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgaWYgaXNDYWNoZWQoaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2NhY2hlZCddLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICBpZiBweXBrZyA9PSAnY29yZSc6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKHB5bW9kdWxlX2RlcCwgcHlwa2cpKQorICAgICAgICAgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAuZW5kc3dpdGgoJyonKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChweW1vZHVsZV9kZXApOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnY2FjaGVkJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKIAotICAgICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMKLSAgICAgICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIGFsbGZpbGVzOgotICAgICAgICAgICAgICAgICAgICAgIGFsbGZpbGVzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQoaXRlbSkKLQorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZvciByZXBlYXRlZCBmaWxlcworICAgICAgICAgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIGFsbGZpbGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgYWxsZmlsZXMuYXBwZW5kKHB5bW9kdWxlX2RlcCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBub3QgaW4gcmVwZWF0ZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKHB5bW9kdWxlX2RlcCkKICAgICAgICAgICAgICAgICBlbHNlOgogCiAKLSAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGlzIGRlcGVuZGVuY3kgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBMYXN0IHN0ZXA6IEZpZ3VyZSBvdXQgaWYgd2UgdGhpcyBiZWxvbmdzIHRvIEZJTEVTIG9yIFJERVBFTkRTCisgICAgICAgICAgICAgICAgICAgICMgV2UgY2hlY2sgaWYgdGhpcyBtb2R1bGUgaXMgYWxyZWFkeSBjb250YWluZWQgb24gYW5vdGhlciBwYWNrYWdlLCBzbyB3ZSBhZGQgdGhhdCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBhcyBhbiBSREVQRU5EUywgb3IgaWYgaXRzIG5vdCwgaXQgbWVhbnMgaXQgc2hvdWxkIGJlIGNvbnRhaW5lZCBvbiB0aGUgY3VycmVudAotICAgICAgICAgICAgICAgICAgICAjIHBhY2thZ2UsIHNvIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKLSAgICAgICAgICAgICAgICAgICAgZm9yIG5ld2tleSBpbiBvbGRfbWFuaWZlc3Q6CisgICAgICAgICAgICAgICAgICAgICMgcGFja2FnZSwgYW5kIHdlIHNob3VsZCBhZGQgaXQgdG8gRklMRVMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBvc3NpYmxlX3JkZXAgaW4gb2xkX21hbmlmZXN0OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZwotICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCdDaGVja2luZyAlcyAnICUgaXRlbSArICcgaW4gJXMnICUgbmV3a2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBpbiBvbGRfbWFuaWZlc3RbbmV3a2V5XVsnZmlsZXMnXSBvciBpdGVtIGluIG9sZF9tYW5pZmVzdFtuZXdrZXldWydjYWNoZWQnXTogICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3a2V5IT1rZXkpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGl0IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFJERVBTLmFwcGVuZCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzXG4nICUgKG5ld2tleSwga2V5LCBpdGVtKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChuZXdrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgIyBwcmludCgnQ2hlY2tpbmcgJXMgJyAlIHB5bW9kdWxlX2RlcCArICcgaW4gJXMnICUgcG9zc2libGVfcmRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcCBpbiBvbGRfbWFuaWZlc3RbcG9zc2libGVfcmRlcF1bJ2ZpbGVzJ10gb3IgcHltb2R1bGVfZGVwIGluIG9sZF9tYW5pZmVzdFtwb3NzaWJsZV9yZGVwXVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBweXBrZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHBvc3NpYmxlX3JkZXAgIT0gcHlwa2cpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwb3NzaWJsZV9yZGVwIG5vdCBpbiBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQgaXQgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdCBhcyBSREVQRU5EUyBzaW5jZSBpdCBjb250YWlucyBzb21ldGhpbmcgdGhpcyBtb2R1bGUgbmVlZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydFJERVBTLmFwcGVuZCgnQWRkaW5nICVzIHRvICVzIFJERVBFTkRTLCBiZWNhdXNlIGl0IGNvbnRhaW5zICVzXG4nICUgKHBvc3NpYmxlX3JkZXAsIHB5cGtnLCBweW1vZHVsZV9kZXApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsncmRlcGVuZHMnXS5hcHBlbmQocG9zc2libGVfcmRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAjIEEgbW9kdWxlIHNob3VsZG4ndCBjb250YWluIGl0c2VsZiAoJHtsaWJkaXJ9L3B5dGhvbjMvc3FsaXRlMyBzaG91bGRudCBiZSBvbiBzcWxpdGUzIGZpbGVzKQotICAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoaXRlbSkgIT0ga2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RklMRVMuYXBwZW5kKCgnQWRkaW5nICVzIHRvICVzIEZJTEVTXG4nICUgKGl0ZW0sIGtleSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSBpdCB3YXNudCBmb3VuZCBvbiBhbm90aGVyIHBhY2thZ2UsIGl0cyBub3QgYW4gUkRFUCwgc28gYWRkIGl0IHRvIEZJTEVTIGZvciB0aGlzIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzQ2FjaGVkKGl0ZW0pOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAjIFNpbmNlIHRoaXMgbW9kdWxlIHdhc250IGZvdW5kIG9uIGFub3RoZXIgcGFja2FnZSwgaXQgaXMgbm90IGFuIFJERVAsCisgICAgICAgICAgICAgICAgICAgICAgIyBzbyB3ZSBhZGQgaXQgdG8gRklMRVMgZm9yIHRoaXMgcGFja2FnZS4KKyAgICAgICAgICAgICAgICAgICAgICAjIEEgbW9kdWxlIHNob3VsZG4ndCBjb250YWluIGl0c2VsZiAoJHtsaWJkaXJ9L3B5dGhvbjMvc3FsaXRlMyBzaG91bGRudCBiZSBvbiBzcWxpdGUzIGZpbGVzKQorICAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUocHltb2R1bGVfZGVwKSAhPSBweXBrZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydEZJTEVTLmFwcGVuZCgoJ0FkZGluZyAlcyB0byAlcyBGSUxFU1xuJyAlIChweW1vZHVsZV9kZXAsIHB5cGtnKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc0NhY2hlZChweW1vZHVsZV9kZXApOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2NhY2hlZCddLmFwcGVuZChweW1vZHVsZV9kZXApCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkLmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtweXBrZ11bJ2ZpbGVzJ10uYXBwZW5kKHB5bW9kdWxlX2RlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHB5bW9kdWxlX2RlcC5lbmRzd2l0aCgnKicpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGRjYXJkcy5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHltb2R1bGVfZGVwIG5vdCBpbiBhbGxmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQocHltb2R1bGVfZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBweW1vZHVsZV9kZXAgbm90IGluIHJlcGVhdGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZC5hcHBlbmQocHltb2R1bGVfZGVwKQogCiAgICAgICAgIHByaW50KCdcbicpCiAgICAgICAgIHByaW50KCcjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMnKQotICAgICAgICBwcmludCgnU3VtbWFyeSBmb3IgbW9kdWxlICVzJyAlIHZhbHVlKQotICAgICAgICBwcmludCgnRklMRVMgZm91bmQgZm9yIG1vZHVsZSAlczonICUgdmFsdWUpCisgICAgICAgIHByaW50KCdTdW1tYXJ5IGZvciBtb2R1bGUgJXMnICUgcHltb2R1bGUpCisgICAgICAgIHByaW50KCdGSUxFUyBmb3VuZCBmb3IgbW9kdWxlICVzOicgJSBweW1vZHVsZSkKICAgICAgICAgcHJpbnQoJycuam9pbihyZXBvcnRGSUxFUykpCi0gICAgICAgIHByaW50KCdSREVQRU5EUyBmb3VuZCBmb3IgbW9kdWxlICVzOicgJSB2YWx1ZSkKKyAgICAgICAgcHJpbnQoJ1JERVBFTkRTIGZvdW5kIGZvciBtb2R1bGUgJXM6JyAlIHB5bW9kdWxlKQogICAgICAgICBwcmludCgnJy5qb2luKHJlcG9ydFJERVBTKSkKICAgICAgICAgcHJpbnQoJyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIycpCiAKLXByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCi1wcmludCAocmVwZWF0ZWQpCi1wcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCitwcmludCgnVGhlIGZvbGxvd2luZyBGSUxFUyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIGlmIHRoZXkgYXJlIG5lY2Vzc2FyeScpCiBwcmludCh3aWxkY2FyZHMpCi1wcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQorcHJpbnQoJ1RoZSBmb2xsb3dpbmcgRklMRVMgY29udGFpbiBmb2xkZXJzLCBwbGVhc2UgY2hlY2sgaWYgdGhleSBhcmUgbmVjZXNzYXJ5JykKIHByaW50KGhhc2ZvbGRlcnMpCiAKKwogIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZXIKLWZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgotICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQotICAgIG5ld19tYW5pZmVzdFtrZXldWydjYWNoZWQnXS5zb3J0KCkKLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5zb3J0KCkKK2ZvciBweXBrZyBpbiBuZXdfbWFuaWZlc3Q6CisgICAgbmV3X21hbmlmZXN0W3B5cGtnXVsnZmlsZXMnXS5zb3J0KCkKKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydjYWNoZWQnXS5zb3J0KCkKKyAgICBuZXdfbWFuaWZlc3RbcHlwa2ddWydyZGVwZW5kcyddLnNvcnQoKQogCiAjIENyZWF0ZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQKIHdpdGggb3BlbigncHl0aG9uMy1tYW5pZmVzdC5qc29uLm5ldycsJ3cnKSBhcyBvdXRmaWxlOgotICAgIGpzb24uZHVtcChuZXdfbWFuaWZlc3Qsb3V0ZmlsZSxzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpCisgICAganNvbi5kdW1wKG5ld19tYW5pZmVzdCxvdXRmaWxlLCBpbmRlbnQ9NCkKICAgICBvdXRmaWxlLndyaXRlKCdcbicpCisKK2lmIChyZXBlYXRlZCk6CisgICAgZXJyb3JfbXNnID0gJ1xuXG5FUlJPUjpcbicKKyAgICBlcnJvcl9tc2cgKz0gJ1RoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIHJlcGVhdGVkIChjb250YWluZWQgaW4gbW9yZSB0aGFuIG9uZSBwYWNrYWdlKSxcbicKKyAgICBlcnJvcl9tc2cgKz0gJ3RoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiB3aGVuIG5ldyBmaWxlcyBhcmUgaW50cm9kdWNlZCBhZnRlciBhbiB1cGdyYWRlLFxuJworICAgIGVycm9yX21zZyArPSAncGxlYXNlIGNoZWNrIHdoaWNoIHBhY2thZ2Ugc2hvdWxkIGdldCBpdCxcbiBtb2RpZnkgdGhlIG1hbmlmZXN0IGFjY29yZGluZ2x5IGFuZCByZS1ydW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrOlxuJworICAgIGVycm9yX21zZyArPSAnXG4nLmpvaW4ocmVwZWF0ZWQpCisgICAgZXJyb3JfbXNnICs9ICdcbicKKyAgICBzeXMuZXhpdChlcnJvcl9tc2cpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2Zsb2F0LWVuZGlhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2Zsb2F0LWVuZGlhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmEzZjVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZmxvYXQtZW5kaWFuLnBhdGNoCkBAIC0wLDAgKzEsMjEyIEBACitQeXRob24gdXNlcyBBQ19SVU5fSUZFTFNFIHRvIGRldGVybWluZSB0aGUgYnl0ZSBvcmRlciBmb3IgZmxvYXRzIGFuZCBkb3VibGVzLAorYW5kIGZhbGxzIGJhY2sgb250byAiSSBkb24ndCBrbm93IiBpZiBpdCBjYW4ndCBydW4gY29kZS4gIFRoaXMgcmVzdWx0cyBpbgorY3JpcHBsZWQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbiBQeXRob24sIGFuZCB0aGUgcmVncmVzc2lvbiB0ZXN0cyBmYWlsLgorCitJbnN0ZWFkIG9mIHJ1bm5pbmcgY29kZSwgdGFrZSBhIG1hY3JvIGZyb20gYXV0b2NvbmYtYXJjaGl2ZSB3aGljaCBjb21waWxlcyBDCit3aXRoIGEgc3BlY2lhbCBkb3VibGUgaW4gd2hpY2ggaGFzIGFuIEFTQ0lJIHJlcHJlc2VudGF0aW9uLCBhbmQgdGhlbiBncmVwcyB0aGUKK2JpbmFyeSB0byBpZGVudGlmeSB0aGUgZm9ybWF0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNDU4NV0KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gNTBkZjJhNGMzYTY1ZWQwNjMyMmJlN2MyNmQ0MmIwNmNlODE3MzBjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDUgU2VwIDIwMTggMTE6NDU6NTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgZG8gcnVudGltZSB0ZXN0IHRvIGdldCBmbG9hdCBieXRlIG9yZGVyCisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgIHwgNzQgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjOWI3NTVmMGY0Li4xMjE1OTY5ODcxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC05LDYgKzksOCBAQCBBQ19QUkVSRVEoMi42NSkKKyAKKyBBQ19JTklUKHB5dGhvbiwgUFlUSE9OX1ZFUlNJT04sIGh0dHBzOi8vYnVncy5weXRob24ub3JnLykKKyAKKytBQ19DT05GSUdfTUFDUk9fRElSKG00KQorKworIEFDX1NVQlNUKEJBU0VDUFBGTEFHUykKKyBpZiB0ZXN0ICIkc3JjZGlyIiAhPSAuIC1hICIkc3JjZGlyIiAhPSAiJChwd2QpIjsgdGhlbgorICAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCitAQCAtNDEyOCw3NyArNDEzMCwxOSBAQCBmaQorICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKKyAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgCistQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBsaXR0bGUtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQorLUFDX0NBQ0hFX1ZBTChhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSwgWworLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCistI2luY2x1ZGUgPHN0cmluZy5oPgorLWludCBtYWluKCkgeworLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKKy0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDVceDA0XHgwM1x4MDJceDAxXHhmZlx4M2ZceDQzIiwgOCkgPT0gMCkKKy0gICAgICAgIHJldHVybiAwOworLSAgICBlbHNlCistICAgICAgICByZXR1cm4gMTsKKy19CistXV0pXSwKKy1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9eWVzXSwKKy1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dLAorLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10pXSkKKy1BQ19NU0dfUkVTVUxUKCRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSkKKy1pZiB0ZXN0ICIkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUiID0geWVzCistdGhlbgorLSAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCistICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAorLSAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQorLWZpCistCistQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBiaWctZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQorLUFDX0NBQ0hFX1ZBTChhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSwgWworLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCistI2luY2x1ZGUgPHN0cmluZy5oPgorLWludCBtYWluKCkgeworLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKKy0gICAgaWYgKG1lbWNtcCgmeCwgIlx4NDNceDNmXHhmZlx4MDFceDAyXHgwM1x4MDRceDA1IiwgOCkgPT0gMCkKKy0gICAgICAgIHJldHVybiAwOworLSAgICBlbHNlCistICAgICAgICByZXR1cm4gMTsKKy19CistXV0pXSwKKy1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9eWVzXSwKKy1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dLAorLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10pXSkKKy1BQ19NU0dfUkVTVUxUKCRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSkKKy1pZiB0ZXN0ICIkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUiID0geWVzCisrQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KKytpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gInllcyIKKyB0aGVuCisgICBBQ19ERUZJTkUoRE9VQkxFX0lTX0JJR19FTkRJQU5fSUVFRTc1NCwgMSwKKyAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCisgICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKKy1maQorLQorLSMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KKy0jIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCistIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZworLSMgY29udmVyc2lvbnMgd29yay4KKy1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIEFSTSBtaXhlZC1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCistQUNfQ0FDSEVfVkFMKGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUsIFsKKy1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy1pbnQgbWFpbigpIHsKKy0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7CistICAgIGlmIChtZW1jbXAoJngsICJceDAxXHhmZlx4M2ZceDQzXHgwNVx4MDRceDAzXHgwMiIsIDgpID09IDApCistICAgICAgICByZXR1cm4gMDsKKy0gICAgZWxzZQorLSAgICAgICAgcmV0dXJuIDE7CistfQorLV1dKV0sCistW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9eWVzXSwKKy1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10sCistW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dKV0pCistQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSkKKy1pZiB0ZXN0ICIkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKKytlbGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAibm8iCisgdGhlbgorLSAgQUNfREVGSU5FKERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQsIDEsCisrICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKKyAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCistICAgaW4gQVJNIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMyldKQorKyAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQorK2Vsc2UKKysgIEFDX01TR19FUlJPUihbQ2Fubm90IGlkZW50aWZ5IGZsb2F0aW5nIHBvaW50IGJ5dGUgb3JkZXJdKQorIGZpCisgCisgIyBUaGUgc2hvcnQgZmxvYXQgcmVwciBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjEgcmVxdWlyZXMgdGhlCitkaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjIxNmI5MGQ4MDMKKy0tLSAvZGV2L251bGwKKysrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00CitAQCAtMCwwICsxLDgzIEBACisrIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKKysjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBTWU5PUFNJUworKyMKKysjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCisrIworKyMgREVTQ1JJUFRJT04KKysjCisrIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcworKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAorKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCisrIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgorKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcworKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgorKyMKKysjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKKysjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKKysjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCisrIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKKysjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKKysjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKKysjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCisrIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgorKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KKysjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQorKyMgICBvcmRlcmluZy4KKysjCisrIyBMSUNFTlNFCisrIworKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KKysjCisrIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQorKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKKysjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQorKyMgICB3YXJyYW50eS4KKysKKysjc2VyaWFsIDExCisrCisrQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKKysgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAorKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCisrCisrYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgorK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWworKworK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKKysKKytdXSldLCBbCisrCisraWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCisrICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKKytmaQorK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgorKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KKysgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KKysgIGVsc2UKKysgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgorKyAgZmkKKytmaQorKworK10pXSkKKysKKytjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgorKyAgeWVzKQorKyAgICBtNF9kZWZhdWx0KFskMV0sCisrICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKKysgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cworKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKKysgIG5vKQorKyAgICAkMiA7OworKyAgKikKKysgICAgbTRfZGVmYXVsdChbJDNdLAorKyAgICAgIFtBQ19NU0dfRVJST1IoWworKworK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0CisrYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgorKworKyAgICBdKV0pIDs7CisrZXNhYworKworK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZnRwbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvZnRwbGliLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5YzViMjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9mdHBsaWIucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBjYWJlOTE2ZGM2OTQ5OTdkNDg5MmI1ODk4NmU3M2E3MTNkNWEyZjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1pc3MgSXNsaW5ndG9uIChib3QpIgorIDwzMTQ4ODkwOSttaXNzLWlzbGluZ3RvbkB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBUaHUsIDE2IEF1ZyAyMDE4IDE1OjM4OjAzIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIFszLjZdIGJwby0zNDM5MTogRml4IGZ0cGxpYiB0ZXN0IGZvciBUTFMgMS4zIChHSC04Nzg3KQorICgjODc5MCkKKworUmVhZCBmcm9tIGRhdGEgc29ja2V0IHRvIGF2b2lkICJbU1NMXSBzaHV0ZG93biB3aGlsZSBpbiBpbml0IiBleGNlcHRpb24KK2R1cmluZyBzaHV0ZG93biBvZiB0aGUgZHVtbXkgc2VydmVyLgorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKworCis8IS0tIGlzc3VlLW51bWJlcjogW2Jwby0zNDM5MV0oaHR0cHM6Ly93d3cuYnVncy5weXRob24ub3JnL2lzc3VlMzQzOTEpIC0tPgoraHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNDM5MQorPCEtLSAvaXNzdWUtbnVtYmVyIC0tPgorKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTU5MGMzOTMzNjBkZjA1OTE2MDE0NWU3NDc1NzU0NDI3YmZjNjY4MCkKKworCitDby1hdXRob3JlZC1ieTogQ2hyaXN0aWFuIEhlaW1lcyA8Y2hyaXN0aWFuQHB5dGhvbi5vcmc+CistLS0KKyBMaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCisgTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA4LTE2LTE4LTQ4LTQ3LmJwby0zNDM5MS5vdU5meEMucnN0IHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA4LTE2LTE4LTQ4LTQ3LmJwby0zNDM5MS5vdU5meEMucnN0CisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CitpbmRleCA0NGRkNzNhZWNhLi40ZmYyZjcxYWZiIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CitAQCAtODc2LDE4ICs4NzYsMjMgQEAgY2xhc3MgVGVzdFRMU19GVFBDbGFzcyhUZXN0Q2FzZSk6CisgICAgICAgICAjIGNsZWFyIHRleHQKKyAgICAgICAgIHdpdGggc2VsZi5jbGllbnQudHJhbnNmZXJjbWQoJ2xpc3QnKSBhcyBzb2NrOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShzb2NrLCBzc2wuU1NMU29ja2V0KQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5yZWN2KDEwMjQpLCBMSVNUX0RBVEEuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC52b2lkcmVzcCgpLCAiMjI2IHRyYW5zZmVyIGNvbXBsZXRlIikKKyAKKyAgICAgICAgICMgc2VjdXJlZCwgYWZ0ZXIgUFJPVCBQCisgICAgICAgICBzZWxmLmNsaWVudC5wcm90X3AoKQorICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCisrICAgICAgICAgICAgIyBjb25zdW1lIGZyb20gU1NMIHNvY2tldCB0byBmaW5hbGl6ZSBoYW5kc2hha2UgYW5kIGF2b2lkCisrICAgICAgICAgICAgIyAiU1NMRXJyb3IgW1NTTF0gc2h1dGRvd24gd2hpbGUgaW4gaW5pdCIKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2sucmVjdigxMDI0KSwgTElTVF9EQVRBLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQudm9pZHJlc3AoKSwgIjIyNiB0cmFuc2ZlciBjb21wbGV0ZSIpCisgCisgICAgICAgICAjIFBST1QgQyBpcyBpc3N1ZWQsIHRoZSBjb25uZWN0aW9uIG11c3QgYmUgaW4gY2xlYXJ0ZXh0IGFnYWluCisgICAgICAgICBzZWxmLmNsaWVudC5wcm90X2MoKQorICAgICAgICAgd2l0aCBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpIGFzIHNvY2s6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLnJlY3YoMTAyNCksIExJU1RfREFUQS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnZvaWRyZXNwKCksICIyMjYgdHJhbnNmZXIgY29tcGxldGUiKQorIAorICAgICBkZWYgdGVzdF9sb2dpbihzZWxmKToKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgppbmRleCAyNDkxZjM2Li41MzI5YmY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0xLDIyICsxLDMxIEBACiB7Ci0gICAgIjJ0bzMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7YmluZGlyfS8ydG8zLSoiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliMnRvMyIKKyAgICAidGVzdHMiOiB7CisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXN0IHN1aXRlIiwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgIm1vZHVsZXMiCiAgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS8qL3Rlc3QiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LyovdGVzdHMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2lkbGVsaWIvaWRsZV90ZXN0LyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVzdCIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCisgICAgfSwKKyAgICAiMnRvMyI6IHsKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYXV0b21hdGVkIFB5dGhvbiAyIHRvIDMgY29kZSB0cmFuc2xhdG9yIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9LzJ0bzMtKiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliMnRvMyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiYXN5bmNpbyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hc3luY2lvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmN1cnJlbnQiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uY3VycmVudC9mdXR1cmVzIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKQEAgLTMyLDUwICs0MSw0OCBAQAogICAgICAgICAgICAgInRocmVhZGluZyIsCiAgICAgICAgICAgICAidW5peGFkbWluIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXN5bmNpbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uY3VycmVudCIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uY3VycmVudC9mdXR1cmVzIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJhdWRpbyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NodW5rLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NuZGhkci4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdW5hdS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy93YXZlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jaHVuay5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hdWRpb29wLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvb3NzYXVkaW9kZXYuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbmRoZHIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3VuYXUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvd2F2ZS5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEF1ZGlvIEhhbmRsaW5nIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBdWRpbyBIYW5kbGluZyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NodW5rLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9hdWRpb29wLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NuZGhkci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3VuYXUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3dhdmUucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY2h1bmsuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NuZGhkci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3VuYXUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3dhdmUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJjb2RlY3MiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy94ZHJsaWIuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3hkcmxpYi5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvZGVjIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjb2RlYyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS94ZHJsaWIucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18veGRybGliLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiY29tcGlsZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbXBpbGVhbGwuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHlfY29tcGlsZS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29tcGlsZWFsbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9weV9jb21waWxlLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJhc3luY2lvIiwKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCkBAIC05MSwzMDUgKzk4LDMwOSBAQAogICAgICAgICAgICAgInRocmVhZGluZyIsCiAgICAgICAgICAgICAidW5peGFkbWluIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYnl0ZWNvZGUgY29tcGlsYXRpb24gc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbXBpbGVhbGwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3B5X2NvbXBpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29tcGlsZWFsbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcHlfY29tcGlsZS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImNvbXByZXNzaW9uIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXByZXNzaW9uLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2J6Mi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nemlwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2x6bWEuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy96aXBmaWxlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29tcHJlc3Npb24ucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYnoyLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2d6aXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2J6Mi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19sem1hLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvemxpYi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2x6bWEucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS96aXBmaWxlLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGlnaC1sZXZlbCBjb21wcmVzc2lvbiBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fY29tcHJlc3Npb24ucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2J6Mi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ3ppcC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2J6Mi4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fbHptYS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC96bGliLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2x6bWEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RhcmZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3ppcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX2NvbXByZXNzaW9uLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iejIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2d6aXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2x6bWEuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3RhcmZpbGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3ppcGZpbGUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJjb3JlIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX19mdXR1cmVfXy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fYm9vdGxvY2FsZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19tYXJrdXBiYXNlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19zaXRlYnVpbHRpbnMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3N5c2NvbmZpZ2RhdGEuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX3dlYWtyZWZzZXQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYWJjLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FyZ3BhcnNlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FzdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iaXNlY3QuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb2RlY3MuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29kZW9wLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbmZpZ3BhcnNlci4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jb250ZXh0bGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvcHkuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY29weXJlZy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jc3YuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGlzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2VudW0uKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZnVuY3Rvb2xzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dlbmVyaWNwYXRoLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldG9wdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nZXR0ZXh0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2hlYXBxLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltcC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9pbnNwZWN0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2lvLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2tleXdvcmQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbGluZWNhY2hlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2xvY2FsZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9vcGNvZGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3BlcmF0b3IuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3B0cGFyc2UuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vb3MuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGxhdGZvcm0uKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcG9zaXhwYXRoLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JlcHJsaWIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcmxjb21wbGV0ZXIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc2VsZWN0b3JzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NpZ25hbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaXRlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NyZV9jb21waWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NyZV9jb25zdGFudHMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3JlX3BhcnNlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3N0YXQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5ncHJlcC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zdHJ1Y3QuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3VicHJvY2Vzcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zeW1ib2wuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3lzY29uZmlnLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RleHR3cmFwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RocmVhZGluZy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90b2tlbi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90b2tlbml6ZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90cmFjZWJhY2suKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdHlwZXMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2FybmluZ3MuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vd2Vha3JlZi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9fX3B5Y2FjaGVfXyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2xsZWN0aW9ucy9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW5jb2RpbmdzL19fcHljYWNoZV9fIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9fX3B5Y2FjaGVfXy9hbGlhc2VzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9fX3B5Y2FjaGVfXy9sYXRpbl8xLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncy9fX3B5Y2FjaGVfXy91dGZfOC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL19fcHljYWNoZV9fL2FiYy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX19weWNhY2hlX18vbWFjaGluZXJ5LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy91dGlsLioucHljIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIsCisgICAgICAgICJyZGVwZW5kcyI6IFtdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbipbIS1jb25maWddIiwKICAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcqLmgiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJEaWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyTGlzdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlclN0cmluZy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19mdXR1cmVfXy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2FiY29sbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2Jvb3Rsb2NhbGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb2xsZWN0aW9uc19hYmMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19tYXJrdXBiYXNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc2l0ZWJ1aWx0aW5zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3dlYWtyZWZzZXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXJncGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYmlzZWN0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlY3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVvcC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbGxlY3Rpb25zL2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlncGFyc2VyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb250ZXh0bGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb3B5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb3B5cmVnLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jc3YucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Rpcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvYWxpYXNlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL2xhdGluXzEucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy91dGZfOC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW51bS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZnVuY3Rvb2xzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZW5lcmljcGF0aC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2V0b3B0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXR0ZXh0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9oZWFwcS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL21hY2hpbmVyeS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1wb3J0bGliL3V0aWwucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2luc3BlY3QucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2lvLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9rZXl3b3JkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9fc3RydWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3RpbWUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX19weWNhY2hlX18veHJlYWRsaW5lcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYmlzZWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jc3YuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hlYXBxLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc3RydWN0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL21hdGguKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvcGFyc2VyLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3JlYWRsaW5lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3NlbGVjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC90aW1lLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGluZWNhY2hlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L25ldy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3Bjb2RlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcGVyYXRvci5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3B0cGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29zLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wbGF0Zm9ybS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcG9zaXhwYXRoLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9yZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmVwcmxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmxjb21wbGV0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NlbGVjdG9ycy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2lnbmFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJEaWN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJMaXN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L1VzZXJTdHJpbmcucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19mdXR1cmVfXy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fYWJjb2xsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19ib290bG9jYWxlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19jb2xsZWN0aW9uc19hYmMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX21hcmt1cGJhc2UucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3NpdGVidWlsdGlucy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fc3lzY29uZmlnZGF0YS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fd2Vha3JlZnNldC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9hYmMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXJncGFyc2UucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvYXN0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2Jpc2VjdC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2RlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvZGVjcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb2Rlb3AucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sbGVjdGlvbnMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sbGVjdGlvbnMvYWJjLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZ3BhcnNlci5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb250ZXh0bGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvcHkucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29weXJlZy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jc3YucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGlzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VuY29kaW5ncyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvYWxpYXNlcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvbGF0aW5fMS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9lbmNvZGluZ3MvdXRmXzgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZW51bS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mdW5jdG9vbHMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2VuZXJpY3BhdGgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZ2V0b3B0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldHRleHQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaGVhcHEucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pbXBvcnRsaWIvYWJjLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltcG9ydGxpYi9tYWNoaW5lcnkucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1wb3J0bGliL3V0aWwucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW5zcGVjdC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pby5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9rZXl3b3JkLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL19zdHJ1Y3QuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iaW5hc2NpaS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3RpbWUuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy94cmVhZGxpbmVzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jc3YuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9faGVhcHEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fb3Bjb2RlLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zdHJ1Y3QuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9hcnJheS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbWF0aC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3BhcnNlci4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3JlYWRsaW5lLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc2VsZWN0Liouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvdGltZS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3VuaWNvZGVkYXRhLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQveHJlYWRsaW5lcy4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpbmVjYWNoZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9sb2NhbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbmV3LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L29wY29kZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcGVyYXRvci5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcHRwYXJzZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9vcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wbGF0Zm9ybS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9wb3NpeHBhdGgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcmUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcmVwcmxpYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ybGNvbXBsZXRlci5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zZWxlY3RvcnMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2lnbmFsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NpdGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3JlX2NvbXBpbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3JlX2NvbnN0YW50cy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcmVfcGFyc2UucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3RhdC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmdwcmVwLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N0cnVjdC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdWJwcm9jZXNzLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3N5bWJvbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zeXNjb25maWcucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGV4dHdyYXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdGhyZWFkaW5nLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Rva2VuaXplLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RyYWNlYmFjay5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90eXBlcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93YXJuaW5ncy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS93ZWFrcmVmLnB5IgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NyZV9jb21waWxlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zcmVfY29uc3RhbnRzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zcmVfcGFyc2UucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3N0YXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3N0cmluZ3ByZXAucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3N0cnVjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3VicHJvY2Vzcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc3ltYm9sLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zeXNjb25maWcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3RleHR3cmFwLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90aHJlYWRpbmcucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Rva2VuLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90b2tlbml6ZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdHJhY2ViYWNrLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90eXBlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2FybmluZ3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3dlYWtyZWYucHkiCiAgICAgICAgIF0sCi0gICAgICAgICJyZGVwZW5kcyI6IFtdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fX2Z1dHVyZV9fLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fYm9vdGxvY2FsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX2NvbGxlY3Rpb25zX2FiYy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX21hcmt1cGJhc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19zaXRlYnVpbHRpbnMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19zeXNjb25maWdkYXRhLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fd2Vha3JlZnNldC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYXN0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iaXNlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvZGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvZGVjcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZW9wLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb25maWdwYXJzZXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvbnRleHRsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvcHkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvcHlyZWcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Nzdi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZGlzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9lbnVtLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9mdW5jdG9vbHMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dlbmVyaWNwYXRoLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nZXRvcHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dldHRleHQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2hlYXBxLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9pbXAuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2luc3BlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2lvLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9rZXl3b3JkLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9saW5lY2FjaGUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2xvY2FsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3Bjb2RlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcGVyYXRvci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3B0cGFyc2UuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcG9zaXhwYXRoLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcmVwcmxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcmxjb21wbGV0ZXIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2lnbmFsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaXRlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zcmVfY29tcGlsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3JlX2NvbnN0YW50cy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3JlX3BhcnNlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zdGF0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zdHJpbmdwcmVwLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zdHJ1Y3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N1YnByb2Nlc3MuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3N5bWJvbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3lzY29uZmlnLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90ZXh0d3JhcC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdGhyZWFkaW5nLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90b2tlbi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdG9rZW5pemUuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3RyYWNlYmFjay4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdHlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3dhcm5pbmdzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy93ZWFrcmVmLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2xsZWN0aW9ucy9fX3B5Y2FjaGVfXyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29sbGVjdGlvbnMvX19weWNhY2hlX18vYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VuY29kaW5ncy9fX3B5Y2FjaGVfXy9hbGlhc2VzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvX19weWNhY2hlX18vbGF0aW5fMS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL19fcHljYWNoZV9fL3V0Zl84LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbXBvcnRsaWIvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9hYmMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy9tYWNoaW5lcnkuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2ltcG9ydGxpYi9fX3B5Y2FjaGVfXy91dGlsLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiY3J5cHQiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jcnlwdC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9oYXNobGliLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jcnlwdC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9oYXNobGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19jcnlwdC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19oYXNobGliLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NoYTI1Ni4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zaGE1MTIuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBjcnlwdG9ncmFwaGljIGFuZCBoYXNoaW5nIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jcnlwdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaGFzaGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2NyeXB0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19oYXNobGliLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGEyNTYuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NyeXB0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9oYXNobGliLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiY3R5cGVzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2N0eXBlcyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3R5cGVzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N0eXBlc190ZXN0Liouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBDIHR5cGVzIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEMgdHlwZXMgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2N0eXBlcyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2N0eXBlcy4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3QuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiY3Vyc2VzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2N1cnNlcyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fY3Vyc2VzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2N1cnNlc19wYW5lbC4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGN1cnNlcyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY3Vyc2VzIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3Vyc2VzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZGF0ZXRpbWUiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fc3RycHRpbWUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2FsZW5kYXIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGF0ZXRpbWUuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19zdHJwdGltZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jYWxlbmRhci5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYXRldGltZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGF0ZXRpbWUuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNhbGVuZGFyIGFuZCB0aW1lIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3RycHRpbWUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NhbGVuZGFyLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kYXRldGltZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2RhdGV0aW1lLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX3N0cnB0aW1lLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jYWxlbmRhci4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZGF0ZXRpbWUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJkYiI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kYm0iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2RibS4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmaWxlLWJhc2VkIGRhdGFiYXNlIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kYm0iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19kYm0uKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZGVidWdnZXIiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9iZGIuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGRiLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iZGIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGRiLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAicHByaW50IiwKICAgICAgICAgICAgICJzaGVsbCIsCiAgICAgICAgICAgICAic3RyaW5nb2xkIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGVidWdnZXIiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iZGIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BkYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iZGIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BkYi4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImRldiI6IHsKICAgICAgICAgImNhY2hlZCI6IFtdLApAQCAtNDA1LDggKzQxNiw4IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9LyoubyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9wa2djb25maWciLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcqL01ha2VmaWxlL19fcHljYWNoZV9fIgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZyovTWFrZWZpbGUiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZyovTWFrZWZpbGUvX19weWNhY2hlX18iCiAgICAgICAgIF0sCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgpAQCAtNDE0LDQ2ICs0MjUsNDEgQEAKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCiAgICAgfSwKICAgICAiZGlmZmxpYiI6IHsKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhlbHBlcnMgZm9yIGNvbXB1dGluZyBkZWx0YXMgYmV0d2VlbiBvYmplY3RzIiwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCisgICAgICAgIF0sCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kaWZmbGliLnB5IgorICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGlmZmxpYi4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGlmZmxpYi5weSIKLSAgICAgICAgXSwKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXJzIGZvciBjb21wdXRpbmcgZGVsdGFzIGJldHdlZW4gb2JqZWN0cyIKLSAgICB9LAotICAgICJkaXN0dXRpbHMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZGlzdHV0aWxzIgotICAgICAgICBdLAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIERpc3RyaWJ1dGlvbiBVdGlsaXRpZXMiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZGlmZmxpYi4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImRpc3R1dGlscy1zdGF0aWNkZXYiOiB7CiAgICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvX19weWNhY2hlX18vbGliKi5hIgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9fX3B5Y2FjaGVfXy9saWIqLmEiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZy9saWIqLmEiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL2xpYiouYSIKICAgICAgICAgXSwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImRpc3R1dGlscyIKICAgICAgICAgXSwKICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMgKHN0YXRpYyBsaWJyYXJpZXMpIgogICAgIH0sCi0gICAgImRvY3Rlc3QiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9kb2N0ZXN0LioucHljIgorICAgICJkaXN0dXRpbHMiOiB7CisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBEaXN0cmlidXRpb24gVXRpbGl0aWVzIiwKKyAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2RvY3Rlc3QucHkiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZGlzdHV0aWxzIgogICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KKyAgICB9LAorICAgICJkb2N0ZXN0IjogeworICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiZGVidWdnZXIiLApAQCAtNDY0LDE2ICs0NzAsMTUgQEAKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAogICAgICAgICAgICAgInVuaXR0ZXN0IgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kb2N0ZXN0LnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2RvY3Rlc3QuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJlbWFpbCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltYXBsaWIuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2VtYWlsIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ltYXBsaWIucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImNyeXB0IiwKQEAgLTQ4Miw4NiArNDg3LDc0IEBACiAgICAgICAgICAgICAibWF0aCIsCiAgICAgICAgICAgICAibmV0Y2xpZW50IgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZW1haWwgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2VtYWlsIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pbWFwbGliLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ltYXBsaWIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJmY250bCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9mY250bC4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uJ3MgZmNudGwgaW50ZXJmYWNlIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvZmNudGwuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZ2RibSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZ2RibS4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEdOVSBkYXRhYmFzZSBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2dkYm0uKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiaHRtbCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Zvcm1hdHRlci4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZm9ybWF0dGVyLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2h0bWwiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBIVE1MIHByb2Nlc3Npbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSFRNTCBwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mb3JtYXR0ZXIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2h0bWwiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZm9ybWF0dGVyLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAiaWRsZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIsCisgICAgICAgICJyZGVwZW5kcyI6IFsKKyAgICAgICAgICAgICJjb3JlIgorICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtiaW5kaXJ9L2lkbGUqIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2lkbGVsaWIiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaWRsZWxpYiIKICAgICAgICAgXSwKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlZ3JhdGVkIERldmVsb3BtZW50IEVudmlyb25tZW50IgorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJpbWFnZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2NvbG9yc3lzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ltZ2hkci4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY29sb3JzeXMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaW1naGRyLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZ3JhcGhpY2FsIGltYWdlIGhhbmRsaW5nIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBncmFwaGljYWwgaW1hZ2UgaGFuZGxpbmciCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2xvcnN5cy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vaW1naGRyLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NvbG9yc3lzLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9pbWdoZHIuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJpbyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19weWlvLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2lwYWRkcmVzcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9waXBlcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zb2NrZXQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3NsLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbXBmaWxlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fcHlpby5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9pcGFkZHJlc3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3NvY2tldC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zc2wuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC90ZXJtaW9zLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcGlwZXMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc29ja2V0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NzbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZW1wZmlsZS5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGxvdy1sZXZlbCBJL08iLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLApAQCAtNTcxLDM3ICs1NjQsNTAgQEAKICAgICAgICAgICAgICJzaGVsbCIsCiAgICAgICAgICAgICAidW5peGFkbWluIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG93LWxldmVsIEkvTyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19weWlvLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9pcGFkZHJlc3MucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zb2NrZXQuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NzbC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC90ZXJtaW9zLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BpcGVzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zb2NrZXQucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NzbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVtcGZpbGUucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX3B5aW8uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2lwYWRkcmVzcy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NvY2tldC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc3NsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90ZW1wZmlsZS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgImpzb24iOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvanNvbiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fanNvbi4qLnNvIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSlNPTiBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBKU09OIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9qc29uIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fanNvbi4qLnNvIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJsb2dnaW5nIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xvZ2dpbmciCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb2dnaW5nIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAic3RyaW5nb2xkIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG9nZ2luZyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbG9nZ2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAibWFpbGJveCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21haWxib3guKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L21haWxib3gucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImNyeXB0IiwKQEAgLTYxNCw0NiArNjIwLDUxIEBACiAgICAgICAgICAgICAibmV0Y2xpZW50IiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbWFpbGJveC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9tYWlsYm94LioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAibWF0aCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3JhbmRvbS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3JhbmRvbS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL2NtYXRoLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcmFuZG9tLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImNyeXB0IgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbWF0aCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3JhbmRvbS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9jbWF0aC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9yYW5kb20ucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcmFuZG9tLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAibWltZSI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3F1b3ByaS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcXVvcHJpLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3V1LnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gTUlNRSBoYW5kbGluZyBBUElzIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBNSU1FIGhhbmRsaW5nIEFQSXMiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9xdW9wcmkucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3V1LnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3F1b3ByaS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdXUuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJtbWFwIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL21tYXAuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtZW1vcnktbWFwcGVkIGZpbGUgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL21tYXAuKi5zbyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAibW9kdWxlcyI6IHsKICAgICAgICAgImNhY2hlZCI6IFtdLApAQCAtNzEwLDQ5ICs3MjEsMjUgQEAKICAgICAgICAgICAgICJ0eXBpbmciLAogICAgICAgICAgICAgInVuaXR0ZXN0IiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iLAorICAgICAgICAgICAgInZlbnYiLAogICAgICAgICAgICAgInhtbCIsCiAgICAgICAgICAgICAieG1scnBjIgogICAgICAgICBdLAogICAgICAgICAic3VtbWFyeSI6ICJBbGwgUHl0aG9uIG1vZHVsZXMiCiAgICAgfSwKICAgICAibXVsdGlwcm9jZXNzaW5nIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3NpbmcuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9tdWx0aXByb2Nlc3NpbmciCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtdWx0aXByb2Nlc3Npbmcgc3VwcG9ydCIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbXVsdGlwcm9jZXNzaW5nIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fbXVsdGlwcm9jZXNzaW5nLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L211bHRpcHJvY2Vzc2luZyIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAibmV0Y2xpZW50IjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYmFzZTY0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2Z0cGxpYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9obWFjLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL21pbWV0eXBlcy4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9ubnRwbGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BvcGxpYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zbXRwbGliLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3RlbG5ldGxpYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy91dWlkLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9iYXNlNjQucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZnRwbGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2htYWMucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvaHR0cCIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9odHRwL19fcHljYWNoZV9fIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L21pbWV0eXBlcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9ubnRwbGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BvcGxpYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zbXRwbGliLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3RlbG5ldGxpYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91cmxsaWIiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdXJsbGliL19fcHljYWNoZV9fIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3V1aWQucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKQEAgLTc2NywxNyArNzU0LDM1IEBACiAgICAgICAgICAgICAic3RyaW5nb2xkIiwKICAgICAgICAgICAgICJ1bml4YWRtaW4iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYmFzZTY0LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mdHBsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2htYWMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2h0dHAiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2h0dHAvX19weWNhY2hlX18iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L21pbWV0eXBlcy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbm50cGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcG9wbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zbXRwbGliLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90ZWxuZXRsaWIucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3VybGxpYiIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdXJsbGliL19fcHljYWNoZV9fIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91dWlkLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Jhc2U2NC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZnRwbGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9obWFjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9taW1ldHlwZXMuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL25udHBsaWIuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BvcGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc210cGxpYi4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vdGVsbmV0bGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy91dWlkLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAibmV0c2VydmVyIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY2dpLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NvY2tldHNlcnZlci4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY2dpLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NvY2tldHNlcnZlci5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEludGVybmV0IFByb3RvY29sIHNlcnZlcnMiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLApAQCAtNzkzLDE3NSArNzk4LDE3MiBAQAogICAgICAgICAgICAgInN0cmluZ29sZCIsCiAgICAgICAgICAgICAidW5peGFkbWluIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgc2VydmVycyIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NnaS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc29ja2V0c2VydmVyLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NnaS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc29ja2V0c2VydmVyLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAibnVtYmVycyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL19weWRlY2ltYWwuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZGVjaW1hbC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9mcmFjdGlvbnMuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vbnVtYmVycy4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX3B5ZGVjaW1hbC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9kZWNpbWFsLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2ZyYWN0aW9ucy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fZGVjaW1hbC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L251bWJlcnMucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBudW1iZXIgQVBJcyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbnVtYmVyIEFQSXMiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fcHlkZWNpbWFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kZWNpbWFsLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mcmFjdGlvbnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19kZWNpbWFsLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L251bWJlcnMucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vX3B5ZGVjaW1hbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZGVjaW1hbC4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZnJhY3Rpb25zLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9udW1iZXJzLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicGlja2xlIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vX2NvbXBhdF9waWNrbGUuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGlja2xlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BpY2tsZXRvb2xzLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NoZWx2ZS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX2NvbXBhdF9waWNrbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX3BpY2tsZS4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BpY2tsZS5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9waWNrbGV0b29scy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zaGVsdmUucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNlcmlhbGlzYXRpb24vcGVyc2lzdGVuY2Ugc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19jb21wYXRfcGlja2xlLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fcGlja2xlLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BpY2tsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGlja2xldG9vbHMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NoZWx2ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29tcGF0X3BpY2tsZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGlja2xlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9waWNrbGV0b29scy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hlbHZlLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicGtndXRpbCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BrZ3V0aWwuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BrZ3V0aWwucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwYWNrYWdlIGV4dGVuc2lvbiB1dGlsaXR5IHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHBhY2thZ2UgZXh0ZW5zaW9uIHV0aWxpdHkgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BrZ3V0aWwucHkiCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInBsaXN0bGliIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcGxpc3RsaWIuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3BsaXN0bGliLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJHZW5lcmF0ZSBhbmQgcGFyc2UgTWFjIE9TIFggLnBsaXN0IGZpbGVzIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRhdGV0aW1lIiwKICAgICAgICAgICAgICJ4bWwiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9wbGlzdGxpYi5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wbGlzdGxpYi4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInBwcmludCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BwcmludC4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHByaW50LnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcHJldHR5LXByaW50IHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHByZXR0eS1wcmludCBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHByaW50LnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3BwcmludC4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInByb2ZpbGUiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9jUHJvZmlsZS4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9wcm9maWxlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3BzdGF0cy4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvY1Byb2ZpbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2xzcHJvZi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Byb2ZpbGUucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHN0YXRzLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmFzaWMgcGVyZm9ybWFuY2UgcHJvZmlsaW5nIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIHBlcmZvcm1hbmNlIHByb2ZpbGluZyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY1Byb2ZpbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19sc3Byb2YuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHJvZmlsZS5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHN0YXRzLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2NQcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wcm9maWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wc3RhdHMuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJweWRvYyI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3B5ZG9jLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5ZG9jKiIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvYy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9weWRvY19kYXRhIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJhY3RpdmUgaGVscCBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgIm5ldGNsaWVudCIsCiAgICAgICAgICAgICAicGtndXRpbCIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVyYWN0aXZlIGhlbHAgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyoiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3B5ZG9jLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWRvY19kYXRhIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3B5ZG9jLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAicmVzb3VyY2UiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcmVzb3VyY2UuKi5zbyIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHJlc291cmNlIGNvbnRyb2wgaW50ZXJmYWNlIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3Jlc291cmNlLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgInJ1bnB5IjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcnVucHkuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3J1bnB5LnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVyIGZvciBsb2NhdGluZy9leGVjdXRpbmcgc2NyaXB0cyBpbiBtb2R1bGUgbmFtZXNwYWNlIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgInBrZ3V0aWwiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ydW5weS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ydW5weS4qLnB5YyIKKyAgICAgICAgXQogICAgIH0sCiAgICAgInNoZWxsIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vY21kLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ2xvYi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaGxleC4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2NtZC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9mbm1hdGNoLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dsb2IucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2hsZXgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc2h1dGlsLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc2hlbGwtbGlrZSBmdW5jdGlvbmFsaXR5IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAogICAgICAgICAgICAgInVuaXhhZG1pbiIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHNoZWxsLWxpa2UgZnVuY3Rpb25hbGl0eSIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NtZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZm5tYXRjaC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2xvYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2hsZXgucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dsb2IuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJzbXRwZCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FzeW5jaGF0LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2FzeW5jb3JlLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3NtdHBkLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3NtdHBkLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jaGF0LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2FzeW5jb3JlLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3NtdHBkLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU2ltcGxlIE1haWwgVHJhbnNwb3J0IERhZW1vbiIsCiAgICAgICAgICJyZGVwZW5kcyI6IFsKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJjcnlwdCIsCkBAIC05NzMsMTMwICs5NzUsMTA5IEBACiAgICAgICAgICAgICAibmV0Y2xpZW50IiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtiaW5kaXJ9L3NtdHBkLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3luY2hhdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYXN5bmNvcmUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NtdHBkLnB5IgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2FzeW5jaGF0LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hc3luY29yZS4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc210cGQuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJzcWxpdGUzIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9fX3B5Y2FjaGVfXyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2RiYXBpMi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zcWxpdGUzL19fcHljYWNoZV9fL2R1bXAuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19zcWxpdGUzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9kYmFwaTIucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy9kdW1wLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRhdGV0aW1lIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gU3FsaXRlMyBkYXRhYmFzZSBzdXBwb3J0IgotICAgIH0sCi0gICAgInNxbGl0ZTMtdGVzdHMiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKICAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvc3FsaXRlMy90ZXN0IgorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zcWxpdGUzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NxbGl0ZTMiCiAgICAgICAgIF0sCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwKLSAgICAgICAgICAgICJ0ZXN0cyIKLSAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFNxbGl0ZTMgZGF0YWJhc2Ugc3VwcG9ydCB0ZXN0cyIKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAic3RyaW5nb2xkIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vc3RyaW5nLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9zdHJpbmcucHkiCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzdHJpbmcgQVBJcyBbZGVwcmVjYXRlZF0iLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3N0cmluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zdHJpbmcuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJzeXNsb2ciOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvc3lzbG9nLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzeXNsb2cgaW50ZXJmYWNlIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvc3lzbG9nLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgInRlcm1pbmFsIjogewotICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qLnB5YyIKLSAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvcHR5LnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R0eS5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlcm1pbmFsIGNvbnRyb2xsaW5nIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiaW8iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0ZXJtaW5hbCBjb250cm9sbGluZyBzdXBwb3J0IgotICAgIH0sCi0gICAgInRlc3RzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCiAgICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHR5LnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90dHkucHkiCiAgICAgICAgIF0sCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGVzdHMiCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcHR5LioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90dHkuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJ0aHJlYWRpbmciOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fZHVtbXlfdGhyZWFkLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL190aHJlYWRpbmdfbG9jYWwuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZHVtbXlfdGhyZWFkaW5nLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3F1ZXVlLioucHljIgotICAgICAgICBdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fZHVtbXlfdGhyZWFkLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L190aHJlYWRpbmdfbG9jYWwucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvZHVtbXlfdGhyZWFkaW5nLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3F1ZXVlLnB5IgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gdGhyZWFkaW5nICYgc3luY2hyb25pemF0aW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRocmVhZGluZyAmIHN5bmNocm9uaXphdGlvbiBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2R1bW15X3RocmVhZC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3RocmVhZGluZ19sb2NhbC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZHVtbXlfdGhyZWFkaW5nLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9xdWV1ZS5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fZHVtbXlfdGhyZWFkLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fdGhyZWFkaW5nX2xvY2FsLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kdW1teV90aHJlYWRpbmcuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3F1ZXVlLioucHljIgorICAgICAgICBdCiAgICAgfSwKICAgICAidGtpbnRlciI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS90a2ludGVyIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVGNsL1RrIGJpbmRpbmdzIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBUY2wvVGsgYmluZGluZ3MiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90a2ludGVyIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJ0eXBpbmciOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90eXBpbmcuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3R5cGluZy5weSIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHR5cGluZyBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0eXBpbmcgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3R5cGluZy5weSIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90eXBpbmcuKi5weWMiCisgICAgICAgIF0KICAgICB9LAogICAgICJ1bml0dGVzdCI6IHsKLSAgICAgICAgImNhY2hlZCI6IFtdLAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdCIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS91bml0dGVzdC8iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvdW5pdHRlc3QvX19weWNhY2hlX18iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRpZmZsaWIiLApAQCAtMTEwNSw0NSArMTA4Niw2NiBAQAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdW5pdHRlc3QiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3VuaXR0ZXN0LyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdW5pdHRlc3QvX19weWNhY2hlX18iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0sCiAgICAgInVuaXhhZG1pbiI6IHsKLSAgICAgICAgImNhY2hlZCI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2dldHBhc3MuKi5weWMiCi0gICAgICAgIF0sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L2dldHBhc3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvZ3JwLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvbmlzLiouc28iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiaW8iCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiCisgICAgICAgICJmaWxlcyI6IFsKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRwYXNzLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9ncnAuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvbmlzLiouc28iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2V0cGFzcy4qLnB5YyIKKyAgICAgICAgXQorICAgIH0sCisgICAgInZlbnYiOiB7CisgICAgICAgICJzdW1tYXJ5IjogIlByb3ZpZGVzIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGxpZ2h0d2VpZ2h0IHZpcnR1YWwgZW52aXJvbm1lbnRzIHdpdGggdGhlaXIgb3duIHNpdGUgZGlyZWN0b3JpZXMsIG9wdGlvbmFsbHkgaXNvbGF0ZWQgZnJvbSBzeXN0ZW0gc2l0ZSBkaXJlY3Rvcmllcy4iLAorICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAorICAgICAgICAgICAgImNvcmUiLAorICAgICAgICAgICAgImxvZ2dpbmciLAorICAgICAgICAgICAgInNoZWxsIiwKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgXSwKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3ZlbnYiLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXZlbnYqIgorICAgICAgICBdLAorICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJ4bWwiOiB7Ci0gICAgICAgICJjYWNoZWQiOiBbXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvcHlleHBhdC4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbCIKLSAgICAgICAgXSwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IiwKICAgICAgICAgInJkZXBlbmRzIjogWwogICAgICAgICAgICAgImNvcmUiCiAgICAgICAgIF0sCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBYTUwgc3VwcG9ydCIKKyAgICAgICAgImZpbGVzIjogWworICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19lbGVtZW50dHJlZS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9weWV4cGF0Liouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3htbCIKKyAgICAgICAgXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAieG1scnBjIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMy41L3htbHJwYyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMvX19weWNhY2hlX18iCi0gICAgICAgIF0sCisgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBYTUwtUlBDIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAieG1sIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IgorICAgICAgICAiZmlsZXMiOiBbCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0veG1scnBjIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS94bWxycGMvX19weWNhY2hlX18iCisgICAgICAgIF0sCisgICAgICAgICJjYWNoZWQiOiBbXQogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg2M2M2ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRob24zIC1tIHRlc3QgLXYgfCBzZWQgLWUgJy9cLlwuXC4gb2svIHMvXi9QQVNTOiAvZycgLWUgJy9cLlwuXC4gW0VSUk9SfEZBSUxdLyBzL14vRkFJTDogL2cnIC1lICcvXC5cLlwuIHNraXBwZWQvIHMvXi9TS0lQOiAvZycgLWUgJ3MvIFwuXC5cLiBvay8vZycgLWUgJ3MvIFwuXC5cLiBFUlJPUi8vZycgLWUgJ3MvIFwuXC5cLiBGQUlMLy9nJyAtZSAncy8gXC5cLlwuIHNraXBwZWQvL2cnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAyYjFjNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotc2h1dGlscyBzaG91bGQgY29uc2lkZXIgc3ltbGlua3MKLQotLUtoZW0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBhL0xpYi9zaHV0aWwucHkJMjAxMy0wMS0yOSAxMjozMTowNi45MjY1NTU3NzkgLTA4MDAKLSsrKyBiL0xpYi9zaHV0aWwucHkJMjAxMy0wMS0yOSAxNjozMTozOS4wOTc1NTQxODIgLTA4MDAKLUBAIC0xMzIsNyArMTMyLDcgQEAgZGVmIGNvcHltb2RlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGluawotICAgICBzdCA9IHN0YXRfZnVuYyhzcmMpCi0gICAgIGNobW9kX2Z1bmMoZHN0LCBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkpCi0gCi0taWYgaGFzYXR0cihvcywgJ2xpc3R4YXR0cicpOgotK2lmIGhhc2F0dHIob3MsICdsaXN0eGF0dHInKSBhbmQgb3MubGlzdHhhdHRyIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKLSAgICAgZGVmIF9jb3B5eGF0dHIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKLSAgICAgICAgICIiIkNvcHkgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIGZyb20gYHNyY2AgdG8gYGRzdGAuCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zaWduYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9zaWduYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM0YTA5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3NpZ25hbC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDQzMTUzODlkZjNjNGU4YzFmOTRhMThhYjExYTRiMjM0NzYyMTMyYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnRvaW5lIFBpdHJvdSA8cGl0cm91QGZyZWUuZnI+CitEYXRlOiBNb24sIDIzIEFwciAyMDE4IDIyOjIyOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFszLjZdIGJwby0zMzMyOTogRml4IG11bHRpcHJvY2Vzc2luZyByZWdyZXNzaW9uIG9uIG5ld2VyCisgZ2xpYmNzIChHSC02NTc1KSAoR0gtNjU4MikKKworU3RhcnRpbmcgd2l0aCBnbGliYyAyLjI3LjkwMDAteHh4LCBzaWdhZGRzZXQoKSBjYW4gcmV0dXJuIEVJTlZBTCBmb3Igc29tZQorcmVzZXJ2ZWQgc2lnbmFsIG51bWJlcnMgYmV0d2VlbiAxIGFuZCBOU0lHLiAgVGhlIGByYW5nZSgxLCBOU0lHKWAgaWRpb20KK2lzIGNvbW1vbmx5IHVzZWQgdG8gc2VsZWN0IGFsbCBzaWduYWxzIGZvciBibG9ja2luZyB3aXRoIGBwdGhyZWFkX3NpZ21hc2tgLgorU28gd2UgaWdub3JlIHRoZSBzaWdhZGRzZXQoKSByZXR1cm4gdmFsdWUgdW50aWwgd2UgZXhwb3NlIHNpZ2ZpbGxzZXQoKQordG8gcHJvdmlkZSBhIGJldHRlciBpZGlvbS4KKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDI1MDM4ZWNmYjY2NWJlZjY0MWFiZjhjYjYxYWZmZjc1MDViMGUwMDgpCistLS0KKyAuLi4vbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMjMtMTMtMjEtMzkuYnBvLTMzMzI5LmxRLUVvZC5yc3QgIHwgIDEgKworIE1vZHVsZXMvc2lnbmFsbW9kdWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrKy0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0yMy0xMy0yMS0zOS5icG8tMzMzMjkubFEtRW9kLnJzdAorCitkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaWduYWxtb2R1bGUuYyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKK2luZGV4IGUwZDA2YjQzNGQuLjEzOGU3NGU4YTkgMTAwNjQ0CistLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKysgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCitAQCAtNzQ0LDcgKzc0NCw2IEBAIGl0ZXJhYmxlX3RvX3NpZ3NldChQeU9iamVjdCAqaXRlcmFibGUsIHNpZ3NldF90ICptYXNrKQorICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgIFB5T2JqZWN0ICppdGVyYXRvciwgKml0ZW07CisgICAgIGxvbmcgc2lnbnVtOworLSAgICBpbnQgZXJyOworIAorICAgICBzaWdlbXB0eXNldChtYXNrKTsKKyAKK0BAIC03NjYsMTEgKzc2NSwxNCBAQCBpdGVyYWJsZV90b19zaWdzZXQoUHlPYmplY3QgKml0ZXJhYmxlLCBzaWdzZXRfdCAqbWFzaykKKyAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgIGlmIChzaWdudW0gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworLSAgICAgICAgaWYgKDAgPCBzaWdudW0gJiYgc2lnbnVtIDwgTlNJRykKKy0gICAgICAgICAgICBlcnIgPSBzaWdhZGRzZXQobWFzaywgKGludClzaWdudW0pOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIGVyciA9IDE7CistICAgICAgICBpZiAoZXJyKSB7CisrICAgICAgICBpZiAoMCA8IHNpZ251bSAmJiBzaWdudW0gPCBOU0lHKSB7CisrICAgICAgICAgICAgLyogYnBvLTMzMzI5OiBpZ25vcmUgc2lnYWRkc2V0KCkgcmV0dXJuIHZhbHVlIGFzIGl0IGNhbiBmYWlsCisrICAgICAgICAgICAgICogZm9yIHNvbWUgcmVzZXJ2ZWQgc2lnbmFscywgYnV0IHdlIHdhbnQgdGhlIGByYW5nZSgxLCBOU0lHKWAKKysgICAgICAgICAgICAgKiBpZGlvbSB0byBhbGxvdyBzZWxlY3RpbmcgYWxsIHZhbGlkIHNpZ25hbHMuCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgKHZvaWQpIHNpZ2FkZHNldChtYXNrLCAoaW50KXNpZ251bSk7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbCBudW1iZXIgJWxkIG91dCBvZiByYW5nZSIsIHNpZ251bSk7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyOGJlMzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMjQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLURFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IgotCi1QUiA9ICIke0lOQ19QUn0uMCIKLVBZVEhPTl9NQUpNSU4gPSAiMy41IgotUFlUSE9OX0JJTkFCST0gIiR7UFlUSE9OX01BSk1JTn1tIgotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCi1maWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi1maWxlOi8vMDAwMS1jcm9zcy1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotZmlsZTovLzAzMC1maXh1cC1pbmNsdWRlLWRpcnMucGF0Y2ggXAotZmlsZTovLzA3MC1kb250LWNsZWFuLWlwa2ctaW5zdGFsbC5wYXRjaCBcCi1maWxlOi8vMDgwLWRpc3R1dGlscy1kb250X2FkanVzdF9maWxlcy5wYXRjaCBcCi1maWxlOi8vMTMwLXJlYWRsaW5lLXNldHVwLnBhdGNoIFwKLWZpbGU6Ly8xNTAtZml4LXNldHVwdGVybS5wYXRjaCBcCi1maWxlOi8vMDAwMS1oMnB5LUZpeC1pc3N1ZS0xMzAzMi13aGVyZS1pdC1mYWlscy13aXRoLVVuaWNvZGVEZWNvLnBhdGNoIFwKLWZpbGU6Ly90d2Vhay1NVUxUSUFSQ0gtZm9yLXBvd2VycGMtbGludXgtZ251c3BlLnBhdGNoIFwKLWZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA2MS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmMzc2M2VkZjk4MjRkNWQzYTE1ZjVmNjQ2MDgzYjZlMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjNkMmMzYjA0MDJkNjE5MWI5MDczMWUwZjczNWM2NDgzMGU3NTIyMzQ4YWViN2VkMzgyYTgzMTY1ZDQ1MDA5IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNmVjNTE1YjIyNjE4ZjU1ZmEwNzI3NmI4OTdiYWNlYSIKLQotIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKLSIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgotU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgotRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKLUVYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgotCi1leHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgotZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9CQVNFID0gIiR7Qn0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX1NSQyA9ICIke1N9IgotZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgotCi0jIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcwotZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgotCi0jIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCi1QWVRIT05MU0JPUFRTID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLCxyZWFkbGluZSIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLQlhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCi0gICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgqCi0gICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAotICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKLSAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKLSAgICAgICAgY2QgLQotCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlMSUI9JHtiYXNlbGlifSBcCi0JCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbwotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IgotfQotCi1kb19pbnN0YWxsKCkgewotCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCi0JIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQotCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZwotCi0JIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQotCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci0JCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKLQotCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKLQlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCi0KLQlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQotCWZpCi0KLQlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJyBQWVRIT05OT1VTRVJTSVRFPScxJwotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKLQotcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLQkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCi0JIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQotCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotCQktZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JCS1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0JCS1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotCQktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCQktZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkgXAotCQkke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZwotCi0JIyBSZWNvbXBpbGUgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0Ci0JY2QgJHtQS0dEfQotCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCi0JICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5JykiCi0JJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKLQkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0xKSIKLQkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAotCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScsIG9wdGltaXplPTIpIgotCWNkIC0KLX0KLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgotUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKLQotRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKLUZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCi1GSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl2ZW52IgotRklMRVNfJHtQTn0tcHl2ZW52ICs9ICIke2JpbmRpcn0vcHl2ZW52LSR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5dmVudiIKLQotIyBwYWNrYWdlIGxpYnB5dGhvbjMKLVBBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgotRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgotRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKLUlOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1SREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LW1vZHVsZXMiCi0KLSMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAotIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQganNvbgotCi0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKLSAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCi0gICAgIyB0aGF0IGRlcGVuZGVuY3kuCi0gICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQotCi0gICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBweXRob25fbWFuaWZlc3Q9anNvbi5sb2FkKG1hbmlmZXN0X2ZpbGUpCi0KLSAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKLQotICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLQotICAgIG5ld3BhY2thZ2VzPVtdCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAJIyBBZGQgY2FjaGVkIGZpbGVzCi0gICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6Ci0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgotICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106Ci0gICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCi0gICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgotICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJylbMV0KLSAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQotICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQotCi0gICAgIyBXZSBuZWVkIHRvIGVuc3VyZSBzdGF0aWNkZXYgcGFja2FnZXMgbWF0Y2ggZm9yIGZpbGVzIGZpcnN0IHNvIHdlIHNvcnQgaW4gcmV2ZXJzZQotICAgIG5ld3BhY2thZ2VzLnNvcnQocmV2ZXJzZT1UcnVlKQotICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKLSAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCi19Ci0KLSMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDMucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiIKLQotZG9fY3JlYXRlX21hbmlmZXN0KCkgewotICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCi0gICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKLSAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCi0gICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzawotICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgotICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKLSAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgotCi0gICAgY2QgJHtXT1JLRElSfQotICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgotICAgIG5hdGl2ZXB5dGhvbjMgY3JlYXRlX21hbmlmZXN0My5weQotICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgotfQotCi0jIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAotYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKLQotIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Ci1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjM6ZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCIKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uMzpkb19wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmOGVhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS42LmJiCkBAIC0wLDAgKzEsMzI5IEBACityZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMuaW5jCisKK0RFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCBcCisgICAgICAgICAgIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHogcWVtdS1uYXRpdmUgXAorICAgICAgICAgICBxZW11LWhlbHBlci1uYXRpdmUgdmlydHVhbC9jcnlwdCIKKworRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgorRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCitmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAorZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCisiCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkLW5jdXJzZXN3LWluY2x1ZGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9Vc2UtY29ycmVjdC1DRkxBR1MtZm9yLWV4dGVuc2lvbnMtd2hlbi1jcm9zcy1jb21waWxpLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2VmaWxlLWFkZC10YXJnZXQtdG8tc3BsaXQtcHJvZmlsZS1nZW5lcmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9mbG9hdC1lbmRpYW4ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Z0cGxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2lnbmFsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUlzc3VlLTI4MDQzLVNTTENvbnRleHQtaGFzLWltcHJvdmVkLWRlZmF1bHQtc2V0dGluZ3MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItYnBvLTI5MTM2LUFkZC1UTFMtMS4zLWNpcGhlci1zdWl0ZXMtYW5kLU9QX05PX1RMU3YxXy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1icG8tMzI5NDctRml4ZXMtZm9yLVRMUy0xLjMtYW5kLU9wZW5TU0wtMS4xLjEtR0gtODc2LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJwby0zMzU3MC1UTFMtMS4zLWNpcGhlcnMtZm9yLU9wZW5TU0wtMS4xLjEtR0gtNjk3Ni5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1icG8tMzA3MTQtQUxQTi1jaGFuZ2VzLWZvci1PcGVuU1NMLTEuMS4wZi0yMzA1LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHB5dGhvbjNuYXRpdmUgdXBkYXRlLWFsdGVybmF0aXZlcyBxZW11IHB0ZXN0CisKK01VTFRJTElCX1NVRkZJWCA9ICIke0BkLmdldFZhcignYmFzZV9saWJkaXInLDEpLnNwbGl0KCcvJylbLTFdfSIKKworQUxURVJOQVRJVkVfJHtQTn0tZGV2ID0gInB5dGhvbi1jb25maWciCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHl0aG9uLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnIgorQUxURVJOQVRJVkVfVEFSR0VUW3B5dGhvbi1jb25maWddID0gIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZy0ke01VTFRJTElCX1NVRkZJWH0iCisKK0NPTkZJR1VSRU9QVFMgKz0gIiAtLXdpdGgtc3lzdGVtLWZmaSAiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gImFjX2N2X2hhdmVfY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sY2hmbGFncz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PXllcyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBcCisiCisKK1RBUkdFVF9DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK1NES19DQ19BUkNIICs9ICItRE5ERUJVRyAtZm5vLWlubGluZSIKK0VYVFJBX09FTUFLRSArPSAiQ1JPU1NfQ09NUElMRT15ZXMiCitFWFRSQV9PRUNPTkYgKz0gIkNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gLS13aXRob3V0LWVuc3VyZXBpcCIKKworUFlUSE9OM19QUk9GSUxFX1RBU0sgPz0gIi4vcHl0aG9uIC1tIHRlc3QucmVncnRlc3QgLS1wZ28gdGVzdF9ncmFtbWFyIHRlc3Rfb3Bjb2RlcyB0ZXN0X2RpY3QgdGVzdF9idWlsdGluIHRlc3RfZXhjZXB0aW9ucyB0ZXN0X3R5cGVzIHRlc3Rfc3VwcG9ydCB8fCB0cnVlIgorCitleHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgorZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgorCisjIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcworZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgorCitQQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUgJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsICdwZ28nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLCxyZWFkbGluZSIKKyMgVXNlIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXNhdGlvbiBieSBydW5uaW5nIFB5QmVuY2ggaW5zaWRlIHFlbXUtdXNlcgorUEFDS0FHRUNPTkZJR1twZ29dID0gIi0tZW5hYmxlLW9wdGltaXphdGlvbnMiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJcm0gLWYgJHtTfS9NYWtlZmlsZS5vcmlnCit9CisKK3J1bl9tYWtlKCkgeworCW9lX3J1bm1ha2UgUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCU9QVD0iJHtDRkxBR1N9IiBcCisJCSIkQCIKK30KKworZG9fY29tcGlsZSgpIHsKKwkjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKKwljZCAke1N9L0xpYi9wbGF0LWxpbnV4KgorCWluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQkke1N9L1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIFwKKwkJJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCisJCSR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAorCQkke1NUQUdJTkdfSU5DRElSfS9uZXRpbmV0L2luLmggXAorCQkke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAorCXNlZCAtZSAncywke1NUQUdJTkdfRElSX0hPU1R9LCxnJyAtaSAqLnB5CisJY2QgLQorCisJIyByZW1vdmUgYW55IGJvZ3VzIExEX0xJQlJBUllfUEFUSAorCXNlZCAtaSAtZSBzLFJVTlNIQVJFRD0uKixSVU5TSEFSRUQ9LCBNYWtlZmlsZQorCisJaWYgWyAhIC1mIE1ha2VmaWxlLm9yaWcgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUub3JpZworCWZpCisJc2VkIC1pIC1lICdzLF5DT05GSUdVUkVfTERGTEFHUz0uKixDT05GSUdVUkVfTERGTEFHUz0tTC4gLUwke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGxpYmRpcj0ke2xpYmRpcn0sbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9LGxpYmV4ZWNkaXI9JHtTVEFHSU5HX0RJUl9IT1NUfSR7bGliZXhlY2Rpcn0sZycgXAorCQktZSAncyxeTElCRElSPS4qLExJQkRJUj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCisJCS1lICdzLGluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSxpbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXklOQ0xVREVESVI9LiosSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCS1lICdzLF5DT05GSU5DTFVERURJUj0uKixDT05GSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCisJCU1ha2VmaWxlCisJIyBzYXZlIGNvcHkgb2YgaXQgbm93LCBiZWNhdXNlIGlmIHdlIGRvIGl0IGluIGRvX2luc3RhbGwgYW5kIAorCSMgdGhlbiBjYWxsIGRvX2luc3RhbGwgdHdpY2Ugd2UgZ2V0IE1ha2VmaWxlLm9yaWcgPT0gTWFrZWZpbGUuc3lzcm9vdAorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5zeXNyb290CisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZ28nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlydW5fbWFrZSBwcm9maWxlLW9wdAorCQlxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsIFsnJHtCfScsICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgorCQljYXQgPnBnby13cmFwcGVyIDw8RU9GCisjIS9iaW4vc2gKK2NkICR7Qn0KKyRxZW11X2JpbmFyeSAiXCRAIgorRU9GCisJCWNobW9kICt4IHBnby13cmFwcGVyCisJCWJibm90ZSBHYXRoZXJpbmcgcHJvZmlsaW5nIGRhdGEKKwkJLi9wZ28td3JhcHBlciAke1BZVEhPTjNfUFJPRklMRV9UQVNLfQorCQliYm5vdGUgUHJvZmlsaW5nIGRhdGEgZ2F0aGVyZWQsIHJlYnVpbGRpbmcKKwkJcnVuX21ha2UgY2xlYW5fYW5kX3VzZV9wcm9maWxlCisJZWxzZQorCQlydW5fbWFrZSBsaWJweXRob24zLnNvCisJCXJ1bl9tYWtlCisJZmkKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAorCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcKKworCSMgcmVydW4gdGhlIGJ1aWxkIG9uY2UgYWdhaW4gd2l0aCBvcmlnaW5hbCBtYWtlZmlsZSB0aGlzIHRpbWUKKwkjIHJ1biBpbnN0YWxsIGluIGEgc2VwYXJhdGUgc3RlcCB0byBhdm9pZCBjb21waWxlL2luc3RhbGwgcmFjZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BnbycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXJ1bl9tYWtlIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGJ1aWxkX2FsbF91c2VfcHJvZmlsZQorCWVsc2UKKwkJcnVuX21ha2UgREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KKwlmaQorCisJcnVuX21ha2UgREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAorCisJIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgorCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKKworCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKKworCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59CisJZmkKKworCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCisJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfS9NYWtlZmlsZQorCSMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKwlzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5IFwKKwkJJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKKworCSMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorCWNkICR7UEtHRH0KKwkke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorCSAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weScpIgorCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCisJICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCcuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Jywgb3B0aW1pemU9MSkiCisJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IFwKKwkgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJy4vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHknLCBvcHRpbWl6ZT0yKSIKKwljZCAtCisKKwltdiAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZyAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZy0ke01VTFRJTElCX1NVRkZJWH0KK30KKworUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgorCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24zLW1vZHVsZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKK0ZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCitGSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgorCisjIHByb3ZpZGUgcHl0aG9uLXB5dmVudiBmcm9tIHB5dGhvbjMtdmVudgorUlBST1ZJREVTXyR7UE59LXZlbnYgKz0gIiR7UE59LXB5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMgdW56aXAgYnppcDIiCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorCisjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKKyMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKK0lOQ0xVREVfUFlDUyA/PSAiMSIKKworcHl0aG9uKCl7CisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLCBqc29uCisKKyAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkLmdldFZhcignVEhJU0RJUicpLCAncHl0aG9uMycsICdweXRob24zLW1hbmlmZXN0Lmpzb24nKQorICAgICMgVGhpcyBweXRob24gY2hhbmdlcyB0aGUgZGF0YXN0b3JlIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBhIGZpbGUsIHNvIG1hcmsKKyAgICAjIHRoYXQgZGVwZW5kZW5jeS4KKyAgICBiYi5wYXJzZS5tYXJrX2RlcGVuZGVuY3koZCwgZmlsZW5hbWUpCisKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIG1hbmlmZXN0X2ZpbGU6CisgICAgICAgIHB5dGhvbl9tYW5pZmVzdD1qc29uLmxvYWQobWFuaWZlc3RfZmlsZSwgb2JqZWN0X3BhaXJzX2hvb2s9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QpCisKKyAgICBpbmNsdWRlX3B5Y3MgPSBkLmdldFZhcignSU5DTFVERV9QWUNTJykKKworICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKworICAgIG5ld3BhY2thZ2VzPVtdCisgICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6CisgICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKKworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgorICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCisgICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQorCisgICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKKyAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQorICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106CisgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCisKKyAgICAJIyBBZGQgY2FjaGVkIGZpbGVzCisgICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6CisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgorICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCisKKyAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgorICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKyAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKKworICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKKyAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKKyAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCit9CisKKyMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAorU1JDX1VSSSArPSAiZmlsZTovL2NyZWF0ZV9tYW5pZmVzdDMucHkgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiIKKworZG9fY3JlYXRlX21hbmlmZXN0KCkgeworICAgICMgVGhpcyB0YXNrIHNob3VsZCBiZSBydW4gd2l0aCBldmVyeSBuZXcgcmVsZWFzZSBvZiBQeXRob24uCisgICAgIyBXZSBtdXN0IGVuc3VyZSB0aGF0IFBBQ0tBR0VDT05GSUcgZW5hYmxlcyBldmVyeXRoaW5nIHdoZW4gY3JlYXRpbmcKKyAgICAjIGEgbmV3IG1hbmlmZXN0LCB0aGlzIGlzIHRvIGJhc2Ugb3VyIG5ldyBtYW5pZmVzdCBvbiBhIGNvbXBsZXRlCisgICAgIyBuYXRpdmUgcHl0aG9uIGJ1aWxkLCBjb250YWluaW5nIGFsbCBkZXBlbmRlbmNpZXMsIG90aGVyd2lzZSB0aGUgdGFzaworICAgICMgd29udCBiZSBhYmxlIHRvIGZpbmQgdGhlIHJlcXVpcmVkIGZpbGVzLgorICAgICMgZS5nLiBCZXJrZWxleURCIGlzIGFuIG9wdGlvbmFsIGJ1aWxkIGRlcGVuZGVuY3kgc28gaXQgbWF5IG9yIG1heSBub3QKKyAgICAjIGJlIHByZXNlbnQsIHdlIG11c3QgZW5zdXJlIGl0IGlzLgorCisgICAgY2QgJHtXT1JLRElSfQorICAgICMgVGhpcyBuZWVkcyB0byBiZSBleGVjdXRlZCBieSBweXRob24tbmF0aXZlIGFuZCBOT1QgYnkgSE9TVCdzIHB5dGhvbgorICAgIG5hdGl2ZXB5dGhvbjMgY3JlYXRlX21hbmlmZXN0My5weSAke1BZVEhPTl9NQUpNSU59CisgICAgY3AgcHl0aG9uMy1tYW5pZmVzdC5qc29uLm5ldyAke1RISVNESVJ9L3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCit9CisKKyMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0CithZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAorCisjIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKK2RvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uMzpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgorZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICJweXRob24zOmRvX3BhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNS5iYgppbmRleCAwYjM5NThkLi5kZDk2OWQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNS5iYgpAQCAtMSw2ICsxLDcgQEAKIHJlcXVpcmUgcHl0aG9uLmluYwogCi1ERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCByZWFkbGluZSBzcWxpdGUzIHpsaWIiCitERVBFTkRTID0gInB5dGhvbi1uYXRpdmUgbGliZmZpIGJ6aXAyIGdkYm0gb3BlbnNzbCBcCisgICAgICAgICAgIHJlYWRsaW5lIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2NyeXB0IgogCiBQUiA9ICIke0lOQ19QUn0iCiAKQEAgLTE1Myw2ICsxNTQsNyBAQAogCShjZCAke1BLR0R9OyBweXRob24gLW0gcHlfY29tcGlsZSAuLyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5KQogfQogCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCiAKICMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCiBSUFJPVklERVNfJHtQTn0tY29yZSA9ICIke1BOfSIKQEAgLTE3OCw5ICsxODAsOSBAQAogIyBOYXN0eSBidXQgaWYgYmRiIGlzbid0IGVuYWJsZWQgdGhlIHBhY2thZ2Ugd29uJ3QgYmUgZ2VuZXJhdGVkCiBSREVQRU5EU18ke1BOfS1tb2R1bGVzX3JlbW92ZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiZGInLCAnJywgJyR7UE59LWJzZGRiJywgZCl9IgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCiAKLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tbW9kdWxlcyIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgogCiAjIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKICMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKQEAgLTIyMSw3ICsyMjMsNiBAQAogICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCcucHknKToKICAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlICsgJ2MnKQogCi0gICAgICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnJykKICAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgogICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgogICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYwppbmRleCA2NmRkNjc1Li44MTA0MDFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCkBAIC03LDcgKzcsNyBAQAogICAgIGFyY2hzID0gZC5nZXRWYXIoJ1FFTVVfVEFSR0VUUycpLnNwbGl0KCkKICAgICB0b3MgPSBkLmdldFZhcignSE9TVF9PUycpCiAgICAgc29mdG1tdW9ubHkgPSAiIgotICAgIGZvciBhcmNoIGluIFsncHBjZW1iJ106CisgICAgZm9yIGFyY2ggaW4gWydwcGNlbWInLCAnbG0zMiddOgogICAgICAgICBpZiBhcmNoIGluIGFyY2hzOgogICAgICAgICAgICAgc29mdG1tdW9ubHkgKz0gYXJjaCArICItc29mdG1tdSwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IGRjNzNkZjguLmIwNWMxY2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtNSwxMSArNSwxMSBAQAogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJiYXNoIgogCiByZXF1aXJlIHFlbXUtdGFyZ2V0cy5pbmMKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBibHVldG9vdGgKK2luaGVyaXQgcGtnY29uZmlnIGJsdWV0b290aAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiAjIFFFTVVfVEFSR0VUUyBpcyBvdmVycmlkYWJsZSB2YXJpYWJsZQotUUVNVV9UQVJHRVRTID89ICJhcm0gYWFyY2g2NCBpMzg2IG1pcHMgbWlwc2VsIG1pcHM2NCBtaXBzNjRlbCBwcGMgc2g0IHg4Nl82NCIKK1FFTVVfVEFSR0VUUyA/PSAiYXJtIGFhcmNoNjQgaTM4NiBtaXBzIG1pcHNlbCBtaXBzNjQgbWlwczY0ZWwgcHBjIHJpc2N2MzIgcmlzY3Y2NCBzaDQgeDg2XzY0IgogCiBFWFRSQV9PRUNPTkYgPSAiIFwKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXApAQCAtMjcsNiArMjcsNyBAQAogICAgIC0tZGlzYWJsZS13ZXJyb3IgXAogICAgIC0tdGFyZ2V0LWxpc3Q9JHtAZ2V0X3FlbXVfdGFyZ2V0X2xpc3QoZCl9IFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCisgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgIgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPXB5dGhvbjIuNyIKIApAQCAtMzYsMjcgKzM3LDIzIEBACiAKIGV4cG9ydCBMSUJUT09MPSIke0hPU1RfU1lTfS1saWJ0b29sIgogCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKIAkjIEFwcGVuZCBidWlsZCBob3N0IHBrZy1jb25maWcgcGF0aHMgZm9yIG5hdGl2ZSB0YXJnZXQgc2luY2UgdGhlIGhvc3QgbWF5IHByb3ZpZGUgc2RsCiAJQkhPU1RfUEtHQ09ORklHX1BBVEg9JChQQVRIPS91c3IvYmluOi9iaW4gcGtnLWNvbmZpZyAtLXZhcmlhYmxlIHBjX3BhdGggcGtnLWNvbmZpZyB8fCBlY2hvICIiKQogCWlmIFsgISAteiAiJEJIT1NUX1BLR0NPTkZJR19QQVRIIiBdOyB0aGVuCiAJCWV4cG9ydCBQS0dfQ09ORklHX1BBVEg9JFBLR19DT05GSUdfUEFUSDokQkhPU1RfUEtHQ09ORklHX1BBVEgKIAlmaQotCi0JIyBBbHRlciB0YXJnZXQgbWFrZWZpbGVzIHRvIGFjY2VwdCBDRkxBR1Mgc2V0IHZpYSBlbnYKLQlzZWQgLWkgLXIgXAotCQktZSAncy9eKEN8T1BfQ3xIRUxQRVJfQylGTEFHUz0vXDFGTEFHUys9LycgXAotCQkiJHtTfSIvTWFrZWZpbGUgIiR7U30iL01ha2VmaWxlLnRhcmdldAogfQogCiBkb19jb25maWd1cmUoKSB7CiAgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci0gICAgdGVzdCAhIC1lICR7U30vdGFyZ2V0LWkzODYvYmVnaW5lbmRfZnVuY3Muc2ggfHwgY2htb2QgYSt4ICR7U30vdGFyZ2V0LWkzODYvYmVnaW5lbmRfZnVuY3Muc2gKIH0KIAogZG9faW5zdGFsbCAoKSB7Ci0JZXhwb3J0IFNUUklQPSJ0cnVlIgotCWF1dG90b29sc19kb19pbnN0YWxsCisJZXhwb3J0IFNUUklQPSIiCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCiB9CiAKICMgVGhlIGZvbGxvd2luZyBmcmFnbWVudCB3aWxsIGNyZWF0ZSBhIHdyYXBwZXIgZm9yIHFlbXUtbWlwcyB1c2VyIGVtdWxhdGlvbgpAQCAtNzQsMTAgKzcxLDkgQEAKICMgRU5EIG9mIHFlbXUtbWlwcyB3b3JrYXJvdW5kCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIgXAotCWZkdCBzZGwgXAotCWZkdCBzZGwga3ZtIFwKLQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHhlbicsIGQpfSBcCi0JIgorICAgIGZkdCBzZGwga3ZtIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHhlbicsIGQpfSBcCisiCiBQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gImZkdCBhbHNhIGt2bSIKIFBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID8/PSAiZmR0IHNkbCBrdm0iCiAKQEAgLTg4LDcgKzg0LDcgQEAKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX2RhcndpbiA9ICJrdm0iCiBQQUNLQUdFQ09ORklHX3JlbW92ZV9taW5ndzMyID0gImt2bSIKIAotUEFDS0FHRUNPTkZJR1tzZGxdID0gIi0tZW5hYmxlLXNkbCwtLWRpc2FibGUtc2RsLGxpYnNkbCIKK1BBQ0tBR0VDT05GSUdbc2RsXSA9ICItLWVuYWJsZS1zZGwgLS13aXRoLXNkbGFiaT0yLjAsLS1kaXNhYmxlLXNkbCxsaWJzZGwyIgogUEFDS0FHRUNPTkZJR1t2aXJ0ZnNdID0gIi0tZW5hYmxlLXZpcnRmcyAtLWVuYWJsZS1hdHRyLC0tZGlzYWJsZS12aXJ0ZnMsbGliY2FwIGF0dHIsIgogUEFDS0FHRUNPTkZJR1thaW9dID0gIi0tZW5hYmxlLWxpbnV4LWFpbywtLWRpc2FibGUtbGludXgtYWlvLGxpYmFpbywiCiBQQUNLQUdFQ09ORklHW3hmc10gPSAiLS1lbmFibGUteGZzY3RsLC0tZGlzYWJsZS14ZnNjdGwseGZzcHJvZ3MsIgpAQCAtMTE1LDUgKzExMSwxMCBAQAogUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiLS1lbmFibGUtYmx1ZXosLS1kaXNhYmxlLWJsdWV6LCR7QkxVRVp9IgogUEFDS0FHRUNPTkZJR1tsaWJpc2NzaV0gPSAiLS1lbmFibGUtbGliaXNjc2ksLS1kaXNhYmxlLWxpYmlzY3NpIgogUEFDS0FHRUNPTkZJR1trdm1dID0gIi0tZW5hYmxlLWt2bSwtLWRpc2FibGUta3ZtIgorUEFDS0FHRUNPTkZJR1t2aXJnbHJlbmRlcmVyXSA9ICItLWVuYWJsZS12aXJnbHJlbmRlcmVyLC0tZGlzYWJsZS12aXJnbHJlbmRlcmVyLHZpcmdscmVuZGVyZXIiCisjIHNwaWNlIHdpbGwgYmUgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCitQQUNLQUdFQ09ORklHW3NwaWNlXSA9ICItLWVuYWJsZS1zcGljZSwtLWRpc2FibGUtc3BpY2Usc3BpY2UiCisjIHVzYnJlZGlyIHdpbGwgYmUgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCitQQUNLQUdFQ09ORklHW3VzYi1yZWRpcl0gPSAiLS1lbmFibGUtdXNiLXJlZGlyLC0tZGlzYWJsZS11c2ItcmVkaXIsdXNicmVkaXIiCiAKIElOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1DVkUtMjAxOC0xMTgwNi1RRU1VLXNsaXJwLWhlYXAtYnVmZmVyLW92ZXJmbG93LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQ1ZFLTIwMTgtMTE4MDYtUUVNVS1zbGlycC1oZWFwLWJ1ZmZlci1vdmVyZmxvdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYyMjM2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1DVkUtMjAxOC0xMTgwNi1RRU1VLXNsaXJwLWhlYXAtYnVmZmVyLW92ZXJmbG93LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1odHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOC0wNi9tc2cwMTAxMi5odG1sCi0KLUZyb20gZGMyMWE5ZDI5NTFmMGEyYTdlNjM2MzNlMmI1YzY4YzU0ZTRlZGM0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgotRGF0ZTogVGh1LCAxNCBKdW4gMjAxOCAwMToyODo0OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxOC0xMTgwNiBRRU1VOiBzbGlycDogaGVhcCBidWZmZXIgb3ZlcmZsb3cKLQotU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSCAxLzJdIHNsaXJwOiBjb3JyZWN0IHNpemUgY29tcHV0YXRpb24gd2hpbGUgY29uY2F0ZW5hdGluZyBtYnVmCi1EYXRlOglUdWUsIDUgSnVuIDIwMTggMjM6Mzg6MzUgKzA1MzAKLUZyb206IFByYXNhZCBKIFBhbmRpdCA8YWRkcmVzc0BoaWRkZW4+Ci0KLVdoaWxlIHJlYXNzZW1ibGluZyBpbmNvbWluZyBmcmFnbWVudGVkIGRhdGFncmFtcywgJ21fY2F0JyByb3V0aW5lCi1leHRlbmRzIHRoZSAnbWJ1ZicgYnVmZmVyLCBpZiBpdCBoYXMgaW5zdWZmaWNpZW50IHJvb20uIEl0IGNvbXB1dGVzCi1hIHdyb25nIGJ1ZmZlciBzaXplLCB3aGljaCBsZWFkcyB0byBvdmVyd3JpdGluZyBhZGphY2VudCBoZWFwIGJ1ZmZlcgotYXJlYS4gQ29ycmVjdCB0aGlzIHNpemUgY29tcHV0YXRpb24gaW4gbV9jYXQuCi0KLVJlcG9ydGVkLWJ5OiBaREkgRGlzY2xvc3VyZXMgPGFkZHJlc3NAaGlkZGVuPgotU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxhZGRyZXNzQGhpZGRlbj4KLS0tLQotIHNsaXJwL21idWYuYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1TaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KLS0tLQotIHNsaXJwL21idWYuYyB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2xpcnAvbWJ1Zi5jIGIvc2xpcnAvbWJ1Zi5jCi1pbmRleCA1ZmYyNDU1Li43ZmI0NTAxIDEwMDY0NAotLS0tIGEvc2xpcnAvbWJ1Zi5jCi0rKysgYi9zbGlycC9tYnVmLmMKLUBAIC0xMzgsNyArMTM4LDcgQEAgbV9jYXQoc3RydWN0IG1idWYgKm0sIHN0cnVjdCBtYnVmICpuKQotIAkgKiBJZiB0aGVyZSdzIG5vIHJvb20sIHJlYWxsb2MKLSAJICovCi0gCWlmIChNX0ZSRUVST09NKG0pIDwgbi0+bV9sZW4pCi0tCQltX2luYyhtLG0tPm1fc2l6ZStNSU5DU0laRSk7Ci0rICAgICAgICAgICAgICAgbV9pbmMobSwgbS0+bV9sZW4gKyBuLT5tX2xlbik7Ci0gCi0gCW1lbWNweShtLT5tX2RhdGErbS0+bV9sZW4sIG4tPm1fZGF0YSwgbi0+bV9sZW4pOwotIAltLT5tX2xlbiArPSBuLT5tX2xlbjsKLUBAIC0xNTgsMTIgKzE1OCwxMiBAQCBtX2luYyhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IHNpemUpCi0gCi0gICAgICAgICBpZiAobS0+bV9mbGFncyAmIE1fRVhUKSB7Ci0gCSAgZGF0YXNpemUgPSBtLT5tX2RhdGEgLSBtLT5tX2V4dDsKLS0gICAgICAgICAgbS0+bV9leHQgPSBnX3JlYWxsb2MobS0+bV9leHQsIHNpemUpOwotKyAgICAgICAgICBtLT5tX2V4dCA9IGdfcmVhbGxvYyhtLT5tX2V4dCwgc2l6ZSArIGRhdGFzaXplKTsKLSAJICBtLT5tX2RhdGEgPSBtLT5tX2V4dCArIGRhdGFzaXplOwotICAgICAgICAgfSBlbHNlIHsKLSAJICBjaGFyICpkYXQ7Ci0gCSAgZGF0YXNpemUgPSBtLT5tX2RhdGEgLSBtLT5tX2RhdDsKLS0gICAgICAgICAgZGF0ID0gZ19tYWxsb2Moc2l6ZSk7Ci0rICAgICAgICAgIGRhdCA9IGdfbWFsbG9jKHNpemUgKyBkYXRhc2l6ZSk7Ci0gCSAgbWVtY3B5KGRhdCwgbS0+bV9kYXQsIG0tPm1fc2l6ZSk7Ci0gCi0gCSAgbS0+bV9leHQgPSBkYXQ7Ci1AQCAtMTcxLDcgKzE3MSw3IEBAIG1faW5jKHN0cnVjdCBtYnVmICptLCBpbnQgc2l6ZSkKLSAJICBtLT5tX2ZsYWdzIHw9IE1fRVhUOwotICAgICAgICAgfQotIAotLSAgICAgICAgbS0+bV9zaXplID0gc2l6ZTsKLSsgICAgICAgIG0tPm1fc2l6ZSA9IHNpemUgKyBkYXRhc2l6ZTsKLSAKLSB9Ci0gCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1zZGwuYy1hbGxvdy11c2VyLXRvLWRpc2FibGUtcG9pbnRlci1ncmFicy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoCmluZGV4IGFkZDVkOGIuLmI4YTkyMDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyNzNlMWFmNDlkM2UwYTU4YmI5NDY0MzY5ZGViMjY1MmYyNDNlNjQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxOGZiNDVjMzRhNDczYzRiYTI0N2JiODJiY2VhOTRiN2MzYmE0OTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IFdlZCwgMTggU2VwIDIwMTMgMTQ6MDQ6NTQgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gc2RsLmM6IGFsbG93IHVzZXIgdG8gZGlzYWJsZSBwb2ludGVyIGdyYWJzCkBAIC0yMiwyNSArMjIsMjYgQEAKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBFcmljIELDqW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KIC0tLQotIHVpL3NkbC5jIHwgMTIgKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgdWkvc2RsLmMgfCAxMyArKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS91aS9zZGwuYyBiL3VpL3NkbC5jCi1pbmRleCA3YjcxYTlhLi4yOWNlMWI5IDEwMDY0NAoraW5kZXggYTVmZDUwM2MyNS4uYWI4ZDFiMWViMSAxMDA2NDQKIC0tLSBhL3VpL3NkbC5jCiArKysgYi91aS9zZGwuYwotQEAgLTYzLDYgKzYzLDEwIEBAIHN0YXRpYyBTRExfUGl4ZWxGb3JtYXQgaG9zdF9mb3JtYXQ7Ci0gc3RhdGljIGludCBzY2FsaW5nX2FjdGl2ZSA9IDA7Ci0gc3RhdGljIE5vdGlmaWVyIG1vdXNlX21vZGVfbm90aWZpZXI7Ci0gc3RhdGljIGludCBpZGxlX2NvdW50ZXI7CitAQCAtNjgsNiArNjgsMTEgQEAgc3RhdGljIGludCBpZGxlX2NvdW50ZXI7Cisgc3RhdGljIGNvbnN0IGd1aW50MTYgKmtleWNvZGVfbWFwOworIHN0YXRpYyBzaXplX3Qga2V5Y29kZV9tYXBsZW47CisgCiArI2lmbmRlZiBUcnVlCiArI2RlZmluZSBUcnVlIDEKICsjZW5kaWYKICtzdGF0aWMgZG9pbmdfZ3JhYnMgPSBUcnVlOwotIAorKwogICNkZWZpbmUgU0RMX1JFRlJFU0hfSU5URVJWQUxfQlVTWSAxMAogICNkZWZpbmUgU0RMX01BWF9JRExFX0NPVU5UICgyICogR1VJX1JFRlJFU0hfSU5URVJWQUxfREVGQVVMVCBcCi1AQCAtNDMxLDE0ICs0MzUsMTYgQEAgc3RhdGljIHZvaWQgc2RsX2dyYWJfc3RhcnQodm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyBTRExfUkVGUkVTSF9JTlRFUlZBTF9CVVNZICsgMSkKK0BAIC0zOTgsMTQgKzQwMywxNiBAQCBzdGF0aWMgdm9pZCBzZGxfZ3JhYl9zdGFydCh2b2lkKQogICAgICAgICAgfQogICAgICB9IGVsc2UKICAgICAgICAgIHNkbF9oaWRlX2N1cnNvcigpOwpAQCAtNTksNyArNjAsNyBAQAogICAgICBndWlfZ3JhYiA9IDA7CiAgICAgIHNkbF9zaG93X2N1cnNvcigpOwogICAgICBzZGxfdXBkYXRlX2NhcHRpb24oKTsKLUBAIC05ODYsNiArOTkyLDggQEAgdm9pZCBzZGxfZGlzcGxheV9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIGludCBmdWxsX3NjcmVlbiwgaW50IG5vX2ZyYW1lKQorQEAgLTk0NSw2ICs5NTIsOCBAQCBzdGF0aWMgdm9pZCBzZGwxX2Rpc3BsYXlfaW5pdChEaXNwbGF5U3RhdGUgKmRzLCBEaXNwbGF5T3B0aW9ucyAqbykKICAgICAgICogVGhpcyByZXF1aXJlcyBTREwgPj0gMS4yLjE0LiAqLwogICAgICBzZXRlbnYoIlNETF9ESVNBQkxFX0xPQ0tfS0VZUyIsICIxIiwgMSk7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaAppbmRleCAyODE4MDNlLi45MGU0YjgwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGE0MjcyNmUwMTc2MDVlZDNjYTJiM2ZjMmIxY2M4ZDAxY2NmMzQ3MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQxNjAzZjc0NWNhYWVjZGM3YzlkNzYwZmI3ZDJkZjAxY2NjNjAxMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KIERhdGU6IFRodSwgMjcgTm92IDIwMTQgMTQ6MDQ6MjkgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogQWRkIG1pc3Npbmcgd2Fjb20gSElEIGRlc2NyaXB0b3IKQEAgLTE0LDExICsxNCwxMSBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKIDIwMTQvMTEvMjcKIC0tLQotIGh3L3VzYi9kZXYtd2Fjb20uYyB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIGh3L3VzYi9kZXYtd2Fjb20uYyB8IDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgOTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvaHcvdXNiL2Rldi13YWNvbS5jIGIvaHcvdXNiL2Rldi13YWNvbS5jCi1pbmRleCBiZjcwMDEzLi4yZjZlMTI5IDEwMDY0NAoraW5kZXggYmY3MDAxMzA1OS4uMmY2ZTEyOTczMiAxMDA2NDQKIC0tLSBhL2h3L3VzYi9kZXYtd2Fjb20uYwogKysrIGIvaHcvdXNiL2Rldi13YWNvbS5jCiBAQCAtNzIsNiArNzIsODkgQEAgc3RhdGljIGNvbnN0IFVTQkRlc2NTdHJpbmdzIGRlc2Nfc3RyaW5ncyA9IHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCmluZGV4IGRjMDczMDAuLjBkNDMyNzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZmRhMWVlZThiYzcxNzUyOGQ1N2Y2ZmY0NTRmNzJjNTMyNTA0M2MzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTlhNjY5NDQ4YmE2ZjFiMjk1NDI3ZTI3MWQ5OWY2MTczNmZjNTE4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CiBEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjA2OjU2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdWJwYWNrYWdlIC1wdGVzdCB3aGljaCBydW5zIGFsbCB1bml0IHRlc3QgY2FzZXMgZm9yCkBAIC0xNCwxMCArMTQsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotaW5kZXggYzAwMjM1Mi4uZjU1N2MyNiAxMDA2NDQKK2luZGV4IDNiOWE1ZTMxYTIuLmRmYmNkNzI4ZDcgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCiArKysgYi90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCi1AQCAtOTM1LDQgKzkzNSwxMiBAQCBhbGw6ICQoUUVNVV9JT1RFU1RTX0hFTFBFUlMteSkKK0BAIC05NzIsNCArOTcyLDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCmluZGV4IDRmMjhlMTYuLjUxNTJkY2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWQ3MGZkY2FmNzUwODRkYTJlMDI0NzRjNjFkMWQ0NDFjYTEwMGFiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZGQ0NDA0YTMzNGE1NDVlOWJlYWZhMWIxZTQxYjNhOGYzNWVmMzFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDI4IE1hciAyMDE0IDE3OjQyOjQzICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBhZGRpdGlvbiBlbnZpcm9ubWVudCBzcGFjZSB0byBib290IGxvYWRlcgpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9taXBzL21pcHNfbWFsdGEuYyBiL2h3L21pcHMvbWlwc19tYWx0YS5jCi1pbmRleCBlYzZhZjRhLi42ZTc2MTY2IDEwMDY0NAoraW5kZXggZjY1MTNhNGZkNS4uZDVlZmFmYjFlOCAxMDA2NDQKIC0tLSBhL2h3L21pcHMvbWlwc19tYWx0YS5jCiArKysgYi9ody9taXBzL21pcHNfbWFsdGEuYwotQEAgLTYxLDcgKzYxLDcgQEAKK0BAIC02Miw3ICs2Miw3IEBACiAgCiAgI2RlZmluZSBFTlZQX0FERFIJCTB4ODAwMDIwMDBsCiAgI2RlZmluZSBFTlZQX05CX0VOVFJJRVMJIAkxNgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCmluZGV4IGI5ZTAxODMuLjcwYmFmMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGU4NWVlM2NjOTk4ODE3MjY2MmQ2OTY5YWYwMWYyM2ZhOGZmZDUyNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQ0NzViM2Q5NzM3MWU1ODg1NDAzMzM5ODhhOTdkN2RmM2VjMmM2NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMCBPY3QgMjAxNSAyMjoxOTowOCArMDEwMAogU3ViamVjdDogW1BBVENIXSBxZW11OiBkaXNhYmxlIFZhbGdyaW5kCkBAIC0xMiwxMCArMTIsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgOSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMGM2ZTc1Ny4uYzMwZmQ0NSAxMDA3NTUKK2luZGV4IDBhMTliMDMzYmMuLjY5ZTA1ZmI2YzAgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTQ3NDEsMTUgKzQ3NDEsNiBAQCBmaQorQEAgLTQ4OTUsMTUgKzQ4OTUsNiBAQCBmaQogICMgY2hlY2sgaWYgd2UgaGF2ZSB2YWxncmluZC92YWxncmluZC5oCiAgCiAgdmFsZ3JpbmRfaD1ubwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtcWVtdS1MaW1pdC1wYXRocy1zZWFyY2hlZC1kdXJpbmctdXNlci1tb2RlLWVtdWxhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LXFlbXUtTGltaXQtcGF0aHMtc2VhcmNoZWQtZHVyaW5nLXVzZXItbW9kZS1lbXVsYXRpb24ucGF0Y2gKaW5kZXggOTMxNWY4NS4uYTlkNzk4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtcWVtdS1MaW1pdC1wYXRocy1zZWFyY2hlZC1kdXJpbmctdXNlci1tb2RlLWVtdWxhdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1xZW11LUxpbWl0LXBhdGhzLXNlYXJjaGVkLWR1cmluZy11c2VyLW1vZGUtZW11bGF0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjNzljNDhhNzk3MTBkMGUyZWY2ODA2MjQzNTU5NmFjNDU1Y2Q5ZjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNTMyYmNkYWU4MjU5YjBmNzE3MjNjZGEzMzFkZWQ0ZGJiMGZhOTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBEYXRlOiBXZWQsIDkgTWFyIDIwMTYgMjI6NDk6MDIgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogTGltaXQgcGF0aHMgc2VhcmNoZWQgZHVyaW5nIHVzZXIgbW9kZSBlbXVsYXRpb24KQEAgLTI0LDcgKzI0LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS91dGlsL3BhdGguYyBiL3V0aWwvcGF0aC5jCi1pbmRleCA3ZjlmYzI3Li5hNDE2Y2Q0IDEwMDY0NAoraW5kZXggN2Y5ZmMyNzJmYi4uYTQxNmNkNGFjMiAxMDA2NDQKIC0tLSBhL3V0aWwvcGF0aC5jCiArKysgYi91dGlsL3BhdGguYwogQEAgLTE1LDYgKzE1LDcgQEAgc3RydWN0IHBhdGhlbGVtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDctcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaAppbmRleCBhZDUyZjM3Li4xMjQ1NmJiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRiMjFhOGRiNjBjMzJmOTNkZjU2ZTYxMTFiYjkyNmM5MTY4MGQ2ZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJkMjlkNTJiNmY3NTU3NThjZmNhNmFmMGJjZmQ3ODA5MWUxNmE3YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBTdGVwaGVuIEFybm9sZCA8c2Fybm9sZEB2Y3RsYWJzLmNvbT4KIERhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MDk6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdS1uYXRpdmU6IHNldCBsZC5iZmQsIGZpeCBjZmxhZ3MsIGFuZCBzZXQgc29tZSBlbnZpcm9ubWVudApAQCAtOSwxMCArOSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBjMzBmZDQ1Li5iNTMxMmY0IDEwMDc1NQoraW5kZXggNjllMDVmYjZjMC4uMTJmYzNkOGJkYyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTExNSwxMCArNTExNSw2IEBAIGZpCitAQCAtNTQxMywxMCArNTQxMyw2IEBAIHdyaXRlX2Nfc2tlbGV0b24KICBpZiB0ZXN0ICIkZ2NvdiIgPSAieWVzIiA7IHRoZW4KICAgIENGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlIC1nICRDRkxBR1MiCiAgICBMREZMQUdTPSItZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UgJExERkxBR1MiCkBAIC0yMiw0ICsyMiw0IEBACiAtICBDRkxBR1M9Ii1PMiAkQ0ZMQUdTIgogIGZpCiAgCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgaWYgdGVzdCAiJGhhdmVfYXNhbiIgPSAieWVzIjsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKaW5kZXggZjBjMGZhMS4uMmFmZTRlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA1NWM5NTEwMzExYjc0ODFhMGM4ZjNmNzFiM2NlMTMwY2MyNTU2M2Y5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMGEwOWJiMTg5MDdlNjc1NjVjNTRmYzUwNWE3NDFjYmJlZjUzZjdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B4aWxpbnguY29tPgogRGF0ZTogVGh1LCAyMSBEZWMgMjAxNyAxMTozNToxNiAtMDgwMAogU3ViamVjdDogW1BBVENIXSBjaGFyZGV2OiBjb25uZWN0IHNvY2tldCB0byBhIHNwYXduZWQgY29tbWFuZApAQCAtNDUsMTYgKzQ1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KIC0tLQotIGNoYXJkZXYvY2hhci1zb2NrZXQuYyB8IDk5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGNoYXJkZXYvY2hhci5jICAgICAgICB8ICAzICsrCi0gcWFwaS9jaGFyLmpzb24gICAgICAgIHwgIDUgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMDcgaW5zZXJ0aW9ucygrKQorIGNoYXJkZXYvY2hhci1zb2NrZXQuYyB8IDEwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBjaGFyZGV2L2NoYXIuYyAgICAgICAgfCAgIDMgKysKKyBxYXBpL2NoYXIuanNvbiAgICAgICAgfCAgIDUgKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY2hhcmRldi9jaGFyLXNvY2tldC5jIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCi1pbmRleCA1M2VkYThlLi42YzYzNTU1IDEwMDY0NAoraW5kZXggMTU5ZTY5YzNiMS4uODQ3NzhjZjMxYSAxMDA2NDQKIC0tLSBhL2NoYXJkZXYvY2hhci1zb2NrZXQuYwogKysrIGIvY2hhcmRldi9jaGFyLXNvY2tldC5jCi1AQCAtODUyLDYgKzg1Miw2OCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc29ja2V0X3JlY29ubmVjdF90aW1lb3V0KGdwb2ludGVyIG9wYXF1ZSkKK0BAIC05MzQsNiArOTM0LDY4IEBAIHN0YXRpYyBnYm9vbGVhbiBzb2NrZXRfcmVjb25uZWN0X3RpbWVvdXQoZ3BvaW50ZXIgb3BhcXVlKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIApAQCAtMTIzLDcgKzEyMyw3IEBACiAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJlX29wZW5lZCwKLUBAIC04NTksNiArOTIxLDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorQEAgLTk0MSw2ICsxMDAzLDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogIHsKICAgICAgU29ja2V0Q2hhcmRldiAqcyA9IFNPQ0tFVF9DSEFSREVWKGNocik7CiAgICAgIENoYXJkZXZTb2NrZXQgKnNvY2sgPSBiYWNrZW5kLT51LnNvY2tldC5kYXRhOwpAQCAtMTMzLDI0ICsxMzMsMjQgQEAKICAgICAgYm9vbCBkb19ub2RlbGF5ICAgICA9IHNvY2stPmhhc19ub2RlbGF5ID8gc29jay0+bm9kZWxheSA6IGZhbHNlOwogICAgICBib29sIGlzX2xpc3RlbiAgICAgID0gc29jay0+aGFzX3NlcnZlciAgPyBzb2NrLT5zZXJ2ZXIgIDogdHJ1ZTsKICAgICAgYm9vbCBpc190ZWxuZXQgICAgICA9IHNvY2stPmhhc190ZWxuZXQgID8gc29jay0+dGVsbmV0ICA6IGZhbHNlOwotQEAgLTkyNSw3ICs5OTAsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAotICAgICB9IGVsc2UgaWYgKHJlY29ubmVjdCA+IDApIHsKK0BAIC0xMDA4LDYgKzEwNzMsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogICAgICAgICAgcy0+cmVjb25uZWN0X3RpbWUgPSByZWNvbm5lY3Q7CiAgICAgIH0KKyAKICsjaWZuZGVmIF9XSU4zMgogKyAgICBpZiAoY21kKSB7CiArICAgICAgICBjaGFyZGV2X29wZW5fc29ja2V0X2NtZChjaHIsIGNtZCwgZXJycCk7Ci0gCisrCiArICAgICAgICAvKiBldmVyeXRoaW5nIHJlYWR5IChvciBmYWlsZWQgcGVybWFuZW50bHkpIGJlZm9yZSB3ZSByZXR1cm4gKi8KICsgICAgICAgICpiZV9vcGVuZWQgPSB0cnVlOwogKyAgICB9IGVsc2UKICsjZW5kaWYKLSAgICAgaWYgKHMtPnJlY29ubmVjdF90aW1lKSB7Ci0gICAgICAgICBzaW9jID0gcWlvX2NoYW5uZWxfc29ja2V0X25ldygpOwotICAgICAgICAgdGNwX2Nocl9zZXRfY2xpZW50X2lvY19uYW1lKGNociwgc2lvYyk7Ci1AQCAtOTg1LDEwICsxMDU3LDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCi0gICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBxZW11X29wdF9nZXQob3B0cywgImhvc3QiKTsKKyAgICAgLyogSWYgcmVjb25uZWN0X3RpbWUgaXMgc2V0LCB3aWxsIGRvIHRoYXQgaW4gY2hyX21hY2hpbmVfZG9uZS4gKi8KKyAgICAgaWYgKCFzLT5yZWNvbm5lY3RfdGltZSkgeworICAgICAgICAgaWYgKHMtPmlzX2xpc3RlbikgeworQEAgLTEwNjUsOSArMTEzOCwyNiBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICBjb25zdCBjaGFyICpwb3J0ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJwb3J0Iik7CisgICAgIGNvbnN0IGNoYXIgKmZkID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJmZCIpOwogICAgICBjb25zdCBjaGFyICp0bHNfY3JlZHMgPSBxZW11X29wdF9nZXQob3B0cywgInRscy1jcmVkcyIpOwogKyNpZm5kZWYgX1dJTjMyCiArICAgIGNvbnN0IGNoYXIgKmNtZCA9IHFlbXVfb3B0X2dldChvcHRzLCAiY21kIik7CkBAIC0xNTgsNyArMTU4LDYgQEAKICAgICAgU29ja2V0QWRkcmVzc0xlZ2FjeSAqYWRkcjsKICAgICAgQ2hhcmRldlNvY2tldCAqc29jazsKICAKLSAgICAgYmFja2VuZC0+dHlwZSA9IENIQVJERVZfQkFDS0VORF9LSU5EX1NPQ0tFVDsKICsjaWZuZGVmIF9XSU4zMgogKyAgICBpZiAoY21kKSB7CiArICAgICAgICAvKgpAQCAtMTcyLDE3ICsxNzEsMTggQEAKICsgICAgICAgIH0KICsgICAgfSBlbHNlCiArI2VuZGlmCi0gICAgIGlmICghcGF0aCkgewotICAgICAgICAgaWYgKCFob3N0KSB7Ci0gICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiY2hhcmRldjogc29ja2V0OiBubyBob3N0IGdpdmVuIik7Ci1AQCAtMTAyMSwxMyArMTEwOSwyNCBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAotICAgICBzb2NrLT5oYXNfcmVjb25uZWN0ID0gdHJ1ZTsKKysKKyAgICAgaWYgKCghIXBhdGggKyAhIWZkICsgISFob3N0KSAhPSAxKSB7CisgICAgICAgICBlcnJvcl9zZXRnKGVycnAsCisgICAgICAgICAgICAgICAgICAgICJFeGFjdGx5IG9uZSBvZiAncGF0aCcsICdmZCcgb3IgJ2hvc3QnIHJlcXVpcmVkIik7CitAQCAtMTExMiwxMiArMTIwMiwyNCBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICBzb2NrLT5yZWNvbm5lY3QgPSByZWNvbm5lY3Q7CiAgICAgIHNvY2stPnRsc19jcmVkcyA9IGdfc3RyZHVwKHRsc19jcmVkcyk7CisgCiArI2lmbmRlZiBfV0lOMzIKICsgICAgc29jay0+Y21kID0gZ19zdHJkdXAoY21kKTsKICsjZW5kaWYKLSAKKysgCiAgICAgIGFkZHIgPSBnX25ldzAoU29ja2V0QWRkcmVzc0xlZ2FjeSwgMSk7CiArI2lmbmRlZiBfV0lOMzIKICsgICAgaWYgKHBhdGggfHwgY21kKSB7CkBAIC0xOTcsMjUgKzE5NywyNSBAQAogKyNlbHNlCiAgICAgICAgICBxX3VuaXgtPnBhdGggPSBnX3N0cmR1cChwYXRoKTsKICsjZW5kaWYKLSAgICAgfSBlbHNlIHsKKyAgICAgfSBlbHNlIGlmIChob3N0KSB7CiAgICAgICAgICBhZGRyLT50eXBlID0gU09DS0VUX0FERFJFU1NfTEVHQUNZX0tJTkRfSU5FVDsKICAgICAgICAgIGFkZHItPnUuaW5ldC5kYXRhID0gZ19uZXcoSW5ldFNvY2tldEFkZHJlc3MsIDEpOwogZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci5jIGIvY2hhcmRldi9jaGFyLmMKLWluZGV4IDJhZTRmNDYuLjVkNTJjZDUgMTAwNjQ0CitpbmRleCA3NmQ4NjZlNmZlLi45NzQ3ZDUxZDdjIDEwMDY0NAogLS0tIGEvY2hhcmRldi9jaGFyLmMKICsrKyBiL2NoYXJkZXYvY2hhci5jCi1AQCAtNzkzLDYgKzc5Myw5IEBAIFFlbXVPcHRzTGlzdCBxZW11X2NoYXJkZXZfb3B0cyA9IHsKK0BAIC03OTIsNiArNzkyLDkgQEAgUWVtdU9wdHNMaXN0IHFlbXVfY2hhcmRldl9vcHRzID0geworICAgICAgICAgfSx7CiAgICAgICAgICAgICAgLm5hbWUgPSAicGF0aCIsCiAgICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCi0gICAgICAgICB9LHsKKysgICAgICAgIH0sewogKyAgICAgICAgICAgIC5uYW1lID0gImNtZCIsCiArICAgICAgICAgICAgLnR5cGUgPSBRRU1VX09QVF9TVFJJTkcsCi0rICAgICAgICB9LHsKKyAgICAgICAgIH0sewogICAgICAgICAgICAgIC5uYW1lID0gImhvc3QiLAogICAgICAgICAgICAgIC50eXBlID0gUUVNVV9PUFRfU1RSSU5HLAotICAgICAgICAgfSx7CiBkaWZmIC0tZ2l0IGEvcWFwaS9jaGFyLmpzb24gYi9xYXBpL2NoYXIuanNvbgotaW5kZXggYWUxOWRjZC4uNmRlMGYyOSAxMDA2NDQKK2luZGV4IGFlMTlkY2QxZWQuLjZkZTBmMjliY2QgMTAwNjQ0CiAtLS0gYS9xYXBpL2NoYXIuanNvbgogKysrIGIvcWFwaS9jaGFyLmpzb24KIEBAIC0yNDEsNiArMjQxLDEwIEBACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOS1hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCmluZGV4IDkxNWJmZGEuLjU5NjlkOTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA5NDVmNDI4MDE2ZjI3OGZhOGUzOGJjOGQxNTMzOTdjMzE5NWY4NWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MDQ2YzIxZWZkYmM3NDEzY2RkZDVjNWRiZDllMWQ1MzI1OGQzZThjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCkBAIC0yOSwxMCArMjksMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpYy5jIGIvaHcvaW50Yy9hcGljLmMKLWluZGV4IGZlMTVmYjYuLjgzNTJjMzkgMTAwNjQ0CitpbmRleCA2ZmRhNTJiODZjLi5jZDcyOTE5NjJkIDEwMDY0NAogLS0tIGEvaHcvaW50Yy9hcGljLmMKICsrKyBiL2h3L2ludGMvYXBpYy5jCi1AQCAtNTkxLDcgKzU5MSw3IEBAIGludCBhcGljX2FjY2VwdF9waWNfaW50cihEZXZpY2VTdGF0ZSAqZGV2KQorQEAgLTYwMyw3ICs2MDMsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRldikKICAgICAgQVBJQ0NvbW1vblN0YXRlICpzID0gQVBJQyhkZXYpOwogICAgICB1aW50MzJfdCBsdnQwOwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCmluZGV4IGNlYjM5ODAuLmUxMTBmNjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDQzMzNiMmIyNjlkOTk3YTcxOWUxOWYwMGQwNDQxMDVlMTc3MDBiZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDNjZDkyYzdhODg1ZTQ5OTdlZjY4NDMzMTMyOThjMWQ3NDhkNmNhMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHhpbGlueC5jb20+CiBEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjUxOjQ5IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGxpbnV4LXVzZXI6IEZpeCB3ZWJraXRndGsgaGFuZ3Mgb24gMzItYml0IHg4NiB0YXJnZXQKQEAgLTE4LDEwICsxOCwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9tYWluLmMgYi9saW51eC11c2VyL21haW4uYwotaW5kZXggMTQ2ZWUzZS4uMTMzMmI1YyAxMDA2NDQKK2luZGV4IDg5MDdhODQxMTQuLmVhNDJjNDM2MTAgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21haW4uYwogKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC03OCw3ICs3OCw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC03OSw3ICs3OSw3IEBAIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAoVEFSR0VUX0xPTkdfQklUUyA9PSAzMiB8fCBkZWZpbmVkKFRBUkdFVF9BQkkzMikpCiAgLyogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB3ZSBhc3NpZ24gcmVzZXJ2ZWRfdmEgdG8gYSB2YXJpYWJsZQogICAgIG9mIHR5cGUgYWJpX3Vsb25nIGFuZCBleHBlY3QgaXQgdG8gZml0LiAgQXZvaWQgdGhlIGxhc3QgcGFnZS4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1SZXZlcnQtbGludXgtdXNlci1maXgtbW1hcC1tdW5tYXAtbXByb3RlY3QtbXJlbWFwLXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtUmV2ZXJ0LWxpbnV4LXVzZXItZml4LW1tYXAtbXVubWFwLW1wcm90ZWN0LW1yZW1hcC1zaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTYyNmViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtUmV2ZXJ0LWxpbnV4LXVzZXItZml4LW1tYXAtbXVubWFwLW1wcm90ZWN0LW1yZW1hcC1zaC5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAorRnJvbSAzZWQyNmJlMjA5MTQzNjI5NjkzM2VkMjE0NmY3MjY5Yzc5MWM3YmZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFydGluIEphbnNhIDxtYXJ0aW4uamFuc2FAbGdlLmNvbT4KK0RhdGU6IEZyaSwgMSBKdW4gMjAxOCAwODo0MTowNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgImxpbnV4LXVzZXI6IGZpeCBtbWFwL211bm1hcC9tcHJvdGVjdC9tcmVtYXAvc2htYXQiCisKK0NhdXNlcyBxZW11LWkzODYgdG8gaGFuZyBkdXJpbmcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGluIHdlYmtpdGd0ayBidWlsZAord2hlbiBtdXNsIGlzIHVzZWQgb24gcWVtdXg4NiAtIHRoZSBzYW1lIGlzc3VlIGFzCiswMDEwLWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaAord2FzIGZpeGluZyBpbiAyLjExLjAgcmVsZWFzZSwgYnV0IHdpdGggdGhpcyBwYXRjaCB0aGUgZml4IG5vIGxvbmdlciB3b3JrZWQKK2FzIGRpc2N1c3NlZCBoZXJlOgoraHR0cDovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvcGlwZXJtYWlsL29wZW5lbWJlZGRlZC1jb3JlLzIwMTgtTWF5LzE1MDMwMi5odG1sCitodHRwOi8vbGlzdHMub3BlbmVtYmVkZGVkLm9yZy9waXBlcm1haWwvb3BlbmVtYmVkZGVkLWNvcmUvMjAxOC1KdW5lLzE1MTM4Mi5odG1sCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgZWJmOWEzNjMwYzkxMWQwY2ZjOWMyMGY3Y2FmZTliYTRmODhjZjU4My4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbmNsdWRlL2V4ZWMvY3B1LWFsbC5oICB8ICA2ICstLS0tLQorIGluY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIHwgMTYgKysrKysrKysrLS0tLS0tLQorIGxpbnV4LXVzZXIvbW1hcC5jICAgICAgIHwgMTcgKysrKy0tLS0tLS0tLS0tLS0KKyBsaW51eC11c2VyL3N5c2NhbGwuYyAgICB8ICA1ICstLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmggYi9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCitpbmRleCBmNGZhOTRlOTY2Li4wYjE0MTY4M2YwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9leGVjL2NwdS1hbGwuaAorKysrIGIvaW5jbHVkZS9leGVjL2NwdS1hbGwuaAorQEAgLTE1OSwxMiArMTU5LDggQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZ3Vlc3RfYmFzZTsKKyBleHRlcm4gaW50IGhhdmVfZ3Vlc3RfYmFzZTsKKyBleHRlcm4gdW5zaWduZWQgbG9uZyByZXNlcnZlZF92YTsKKyAKKy0jaWYgSE9TVF9MT05HX0JJVFMgPD0gVEFSR0VUX1ZJUlRfQUREUl9TUEFDRV9CSVRTCistI2RlZmluZSBHVUVTVF9BRERSX01BWCAofjB1bCkKKy0jZWxzZQorLSNkZWZpbmUgR1VFU1RfQUREUl9NQVggKHJlc2VydmVkX3ZhID8gcmVzZXJ2ZWRfdmEgLSAxIDogXAorKyNkZWZpbmUgR1VFU1RfQUREUl9NQVggKHJlc2VydmVkX3ZhID8gcmVzZXJ2ZWRfdmEgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpIC0gMSkKKy0jZW5kaWYKKyAjZWxzZQorIAorICNpbmNsdWRlICJleGVjL2h3YWRkci5oIgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKK2luZGV4IDVkZThjOGE1YWYuLjE5MWYyZTk2MmEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAorKysrIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKK0BAIC01MSwxMyArNTEsMTUgQEAKKyAvKiBBbGwgZGlyZWN0IHVzZXMgb2YgZzJoIGFuZCBoMmcgbmVlZCB0byBnbyBhd2F5IGZvciB1c2VybW9kZSBzb2Z0bW11LiAgKi8KKyAjZGVmaW5lIGcyaCh4KSAoKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpKHRhcmdldF91bG9uZykoeCkgKyBndWVzdF9iYXNlKSkKKyAKKy0jZGVmaW5lIGd1ZXN0X2FkZHJfdmFsaWQoeCkgKCh4KSA8PSBHVUVTVF9BRERSX01BWCkKKy0jZGVmaW5lIGgyZ192YWxpZCh4KSBndWVzdF9hZGRyX3ZhbGlkKCh1bnNpZ25lZCBsb25nKSh4KSAtIGd1ZXN0X2Jhc2UpCistCistc3RhdGljIGlubGluZSBpbnQgZ3Vlc3RfcmFuZ2VfdmFsaWQodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBsZW4pCisteworLSAgICByZXR1cm4gbGVuIC0gMSA8PSBHVUVTVF9BRERSX01BWCAmJiBzdGFydCA8PSBHVUVTVF9BRERSX01BWCAtIGxlbiArIDE7CistfQorKyNpZiBIT1NUX0xPTkdfQklUUyA8PSBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMKKysjZGVmaW5lIGgyZ192YWxpZCh4KSAxCisrI2Vsc2UKKysjZGVmaW5lIGgyZ192YWxpZCh4KSAoeyBcCisrICAgIHVuc2lnbmVkIGxvbmcgX19ndWVzdCA9ICh1bnNpZ25lZCBsb25nKSh4KSAtIGd1ZXN0X2Jhc2U7IFwKKysgICAgKF9fZ3Vlc3QgPCAoMXVsIDw8IFRBUkdFVF9WSVJUX0FERFJfU1BBQ0VfQklUUykpICYmIFwKKysgICAgKCFyZXNlcnZlZF92YSB8fCAoX19ndWVzdCA8IHJlc2VydmVkX3ZhKSk7IFwKKyt9KQorKyNlbmRpZgorIAorICNkZWZpbmUgaDJnX25vY2hlY2soeCkgKHsgXAorICAgICB1bnNpZ25lZCBsb25nIF9fcmV0ID0gKHVuc2lnbmVkIGxvbmcpKHgpIC0gZ3Vlc3RfYmFzZTsgXAorZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbW1hcC5jIGIvbGludXgtdXNlci9tbWFwLmMKK2luZGV4IDkxNjhhMjA1MWMuLmRlODU2NjlhYWIgMTAwNjQ0CistLS0gYS9saW51eC11c2VyL21tYXAuYworKysrIGIvbGludXgtdXNlci9tbWFwLmMKK0BAIC04MCw3ICs4MCw3IEBAIGludCB0YXJnZXRfbXByb3RlY3QoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCkKKyAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKKyAgICAgbGVuID0gVEFSR0VUX1BBR0VfQUxJR04obGVuKTsKKyAgICAgZW5kID0gc3RhcnQgKyBsZW47CistICAgIGlmICghZ3Vlc3RfcmFuZ2VfdmFsaWQoc3RhcnQsIGxlbikpIHsKKysgICAgaWYgKGVuZCA8IHN0YXJ0KSB7CisgICAgICAgICByZXR1cm4gLVRBUkdFVF9FTk9NRU07CisgICAgIH0KKyAgICAgcHJvdCAmPSBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDOworQEAgLTQ4Miw4ICs0ODIsOCBAQCBhYmlfbG9uZyB0YXJnZXRfbW1hcChhYmlfdWxvbmcgc3RhcnQsIGFiaV91bG9uZyBsZW4sIGludCBwcm90LAorIAkgKiBJdCBjYW4gZmFpbCBvbmx5IG9uIDY0LWJpdCBob3N0IHdpdGggMzItYml0IHRhcmdldC4KKyAJICogT24gYW55IG90aGVyIHRhcmdldC9ob3N0IGhvc3QgbW1hcCgpIGhhbmRsZXMgdGhpcyBlcnJvciBjb3JyZWN0bHkuCisgCSAqLworLSAgICAgICAgaWYgKCFndWVzdF9yYW5nZV92YWxpZChzdGFydCwgbGVuKSkgeworLSAgICAgICAgICAgIGVycm5vID0gRU5PTUVNOworKyAgICAgICAgaWYgKCh1bnNpZ25lZCBsb25nKXN0YXJ0ICsgbGVuIC0gMSA+IChhYmlfdWxvbmcpIC0xKSB7CisrICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgfQorIAorQEAgLTYyMywxMCArNjIzLDggQEAgaW50IHRhcmdldF9tdW5tYXAoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuKQorICAgICBpZiAoc3RhcnQgJiB+VEFSR0VUX1BBR0VfTUFTSykKKyAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKKyAgICAgbGVuID0gVEFSR0VUX1BBR0VfQUxJR04obGVuKTsKKy0gICAgaWYgKGxlbiA9PSAwIHx8ICFndWVzdF9yYW5nZV92YWxpZChzdGFydCwgbGVuKSkgeworKyAgICBpZiAobGVuID09IDApCisgICAgICAgICByZXR1cm4gLVRBUkdFVF9FSU5WQUw7CistICAgIH0KKy0KKyAgICAgbW1hcF9sb2NrKCk7CisgICAgIGVuZCA9IHN0YXJ0ICsgbGVuOworICAgICByZWFsX3N0YXJ0ID0gc3RhcnQgJiBxZW11X2hvc3RfcGFnZV9tYXNrOworQEAgLTY4MSwxMyArNjc5LDYgQEAgYWJpX2xvbmcgdGFyZ2V0X21yZW1hcChhYmlfdWxvbmcgb2xkX2FkZHIsIGFiaV91bG9uZyBvbGRfc2l6ZSwKKyAgICAgaW50IHByb3Q7CisgICAgIHZvaWQgKmhvc3RfYWRkcjsKKyAKKy0gICAgaWYgKCFndWVzdF9yYW5nZV92YWxpZChvbGRfYWRkciwgb2xkX3NpemUpIHx8CistICAgICAgICAoKGZsYWdzICYgTVJFTUFQX0ZJWEVEKSAmJgorLSAgICAgICAgICFndWVzdF9yYW5nZV92YWxpZChuZXdfYWRkciwgbmV3X3NpemUpKSkgeworLSAgICAgICAgZXJybm8gPSBFTk9NRU07CistICAgICAgICByZXR1cm4gLTE7CistICAgIH0KKy0KKyAgICAgbW1hcF9sb2NrKCk7CisgCisgICAgIGlmIChmbGFncyAmIE1SRU1BUF9GSVhFRCkgeworZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jIGIvbGludXgtdXNlci9zeXNjYWxsLmMKK2luZGV4IDY0M2I4ODMzZGUuLjI3MWYyMTUxNDcgMTAwNjQ0CistLS0gYS9saW51eC11c2VyL3N5c2NhbGwuYworKysrIGIvbGludXgtdXNlci9zeXNjYWxsLmMKK0BAIC00OTE5LDkgKzQ5MTksNiBAQCBzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBkb19zaG1hdChDUFVBcmNoU3RhdGUgKmNwdV9lbnYsCisgICAgICAgICAgICAgcmV0dXJuIC1UQVJHRVRfRUlOVkFMOworICAgICAgICAgfQorICAgICB9CistICAgIGlmICghZ3Vlc3RfcmFuZ2VfdmFsaWQoc2htYWRkciwgc2htX2luZm8uc2htX3NlZ3N6KSkgeworLSAgICAgICAgcmV0dXJuIC1UQVJHRVRfRUlOVkFMOworLSAgICB9CisgCisgICAgIG1tYXBfbG9jaygpOworIAorQEAgLTc0OTcsNyArNzQ5NCw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQorICAgICAgICAgfQorICAgICAgICAgaWYgKGgyZ192YWxpZChtaW4pKSB7CisgICAgICAgICAgICAgaW50IGZsYWdzID0gcGFnZV9nZXRfZmxhZ3MoaDJnKG1pbikpOworLSAgICAgICAgICAgIG1heCA9IGgyZ192YWxpZChtYXggLSAxKSA/IG1heCA6ICh1aW50cHRyX3QpZzJoKEdVRVNUX0FERFJfTUFYKSArIDE7CisrICAgICAgICAgICAgbWF4ID0gaDJnX3ZhbGlkKG1heCAtIDEpID8gbWF4IDogKHVpbnRwdHJfdClnMmgoR1VFU1RfQUREUl9NQVgpOworICAgICAgICAgICAgIGlmIChwYWdlX2NoZWNrX3JhbmdlKGgyZyhtaW4pLCBtYXggLSBtaW4sIGZsYWdzKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1tZW1mZC1maXgtY29uZmlndXJlLXRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1tZW1mZC1maXgtY29uZmlndXJlLXRlc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4MGNiOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtbWVtZmQtZml4LWNvbmZpZ3VyZS10ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSAwYzhhZjNmNjUxYTEyNWQ2MzZhNzFkOTNiYWZkMzVmZjUyNDA0MzFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjggTm92IDIwMTcgMTE6NTE6MjcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVtZmQ6IGZpeCBjb25maWd1cmUgdGVzdAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1SZWNlbnQgZ2xpYmMgYWRkZWQgbWVtZmRfY3JlYXRlIGluIHN5cy9tbWFuLmguICBUaGlzIGNvbmZsaWN0cyB3aXRoCi10aGUgZGVmaW5pdGlvbiBpbiB1dGlsL21lbWZkLmM6Ci0KLSAgICAvYnVpbGRkaXIvYnVpbGQvQlVJTEQvcWVtdS0yLjExLjAtcmMxL3V0aWwvbWVtZmQuYzo0MDoxMjogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiBtZW1mZF9jcmVhdGUgZm9sbG93cyBub24tc3RhdGljIGRlY2xhcmF0aW9uCi0KLUZpeCB0aGUgY29uZmlndXJlIHRlc3QsIGFuZCByZW1vdmUgdGhlIHN5cy9tZW1mZC5oIGluY2x1c2lvbiBzaW5jZSB0aGUKLWZpbGUgYWN0dWFsbHkgZG9lcyBub3QgZXhpc3QtLS1pdCBpcyBhIHR5cG8gaW4gdGhlIG1lbWZkX2NyZWF0ZSgyKSBtYW4KLXBhZ2UuCi0KLUNjOiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIHV0aWwvbWVtZmQuYyB8IDQgKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiNTMxMmY0Li5lYzEyZjM2IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0zOTIwLDcgKzM5MjAsNyBAQCBmaQotICMgY2hlY2sgaWYgbWVtZmQgaXMgc3VwcG9ydGVkCi0gbWVtZmQ9bm8KLSBjYXQgPiAkVE1QQyA8PCBFT0YKLS0jaW5jbHVkZSA8c3lzL21lbWZkLmg+Ci0rI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0gCi0gaW50IG1haW4odm9pZCkKLSB7Ci1kaWZmIC0tZ2l0IGEvdXRpbC9tZW1mZC5jIGIvdXRpbC9tZW1mZC5jCi1pbmRleCA0NTcxZDFhLi40MTJlOTRhIDEwMDY0NAotLS0tIGEvdXRpbC9tZW1mZC5jCi0rKysgYi91dGlsL21lbWZkLmMKLUBAIC0zMSw5ICszMSw3IEBACi0gCi0gI2luY2x1ZGUgInFlbXUvbWVtZmQuaCIKLSAKLS0jaWZkZWYgQ09ORklHX01FTUZECi0tI2luY2x1ZGUgPHN5cy9tZW1mZC5oPgotLSNlbGlmIGRlZmluZWQgQ09ORklHX0xJTlVYCi0rI2lmIGRlZmluZWQgQ09ORklHX0xJTlVYICYmICFkZWZpbmVkIENPTkZJR19NRU1GRAotICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5MjUwMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1hcm0tdHJhbnNsYXRlLWE2NC10cmVhdC1ESVNBU19VUERBVEUtYXMtdmFyaWFudC1vZi1ELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA3MzU0YjliMjRjMzZlZTcxMmJiNmU4ODFkMzk1MDRiZjFiNmE0YzhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBGcmksIDIzIE1hciAyMDE4IDE4OjI2OjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFybS90cmFuc2xhdGUtYTY0OiB0cmVhdCBESVNBU19VUERBVEUgYXMgdmFyaWFudCBvZgotIERJU0FTX0VYSVQKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotSW4gT0UgcHJvamVjdCA0LjE1IGxpbnV4IGtlcm5lbCBib290IGhhbmcgd2FzIG9ic2VydmVkIHVuZGVyCi1zaW5nbGUgY3B1IGFhcmNoNjQgcWVtdS4gS2VybmVsIGNvZGUgd2FzIGluIGEgbG9vcCB3YWl0aW5nIGZvcgotdnRpbWVyIGFycml2YWwsIHNwaW5uaW5nIGluIFRDIGdlbmVyYXRlZCBibG9ja3MsIHdoaWxlIGludGVycnVwdAotd2FzIHBlbmRpbmcgdW5wcm9jZXNzZWQuIFRoaXMgaGFwcGVuZWQgYmVjYXVzZSB3aGVuIHFlbXUgdHJpZWQgdG8KLWhhbmRsZSB2dGltZXIgaW50ZXJydXB0IHRhcmdldCBoYWQgaW50ZXJydXB0cyBkaXNhYmxlZCwgYXMKLXJlc3VsdCBmbGFnIGluZGljYXRpbmcgVENHIGV4aXQsIGNwdS0+aWNvdW50X2RlY3IudTE2LmhpZ2gsCi13YXMgY2xlYXJlZCBidXQgYXJtX2NwdV9leGVjX2ludGVycnVwdCBmdW5jdGlvbiBkaWQgbm90IGNhbGwKLWFybV9jcHVfZG9faW50ZXJydXB0IHRvIHByb2Nlc3MgaW50ZXJydXB0LiBMYXRlciB3aGVuIHRhcmdldAotcmVlbmFibGVkIGludGVycnVwdHMsIGl0IGhhcHBlbmVkIHdpdGhvdXQgZXhpdCBpbnRvIG1haW4gbG9vcCwgc28KLWZvbGxvd2luZyBjb2RlIHRoYXQgd2FpdGVkIGZvciByZXN1bHQgb2YgaW50ZXJydXB0IGV4ZWN1dGlvbgotcnVuIGluIGluZmluaXRlIGxvb3AuCi0KLVRvIHNvbHZlIHRoZSBwcm9ibGVtIGluc3RydWN0aW9ucyB0aGF0IG9wZXJhdGUgb24gQ1BVIHN5cyBzdGF0ZQotKGkuZSBlbmFibGUvZGlzYWJsZSBpbnRlcnJ1cHQpLCBhbmQgbWFya2VkIGFzIERJU0FTX1VQREFURSwKLXNob3VsZCBiZSBjb25zaWRlcmVkIGFzIERJU0FTX0VYSVQgdmFyaWFudCwgYW5kIHNob3VsZCBiZQotZm9yY2VkIHRvIGV4aXQgYmFjayB0byBtYWluIGxvb3Agc28gcWVtdSB3aWxsIGhhdmUgYSBjaGFuY2UKLXByb2Nlc3NpbmcgcGVuZGluZyBDUFUgc3RhdGUgdXBkYXRlcywgaW5jbHVkaW5nIHBlbmRpbmcKLWludGVycnVwdHMuCi0KLVRoaXMgY2hhbmdlIGJyaW5ncyBjb25zaXN0ZW5jeSB3aXRoIGhvdyBESVNBU19VUERBVEUgaXMgdHJlYXRlZAotaW4gYWFyY2gzMiBjYXNlLgotCi1DQzogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgotQ0M6IEFsZXggQmVubsOpZSA8YWxleC5iZW5uZWVAbGluYXJvLm9yZz4KLUNDOiBxZW11LXN0YWJsZUBub25nbnUub3JnCi1TdWdnZXN0ZWQtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotUmV2aWV3ZWQtYnk6IFJpY2hhcmQgSGVuZGVyc29uIDxyaWNoYXJkLmhlbmRlcnNvbkBsaW5hcm8ub3JnPgotTWVzc2FnZS1pZDogMTUyMTUyNjM2OC0xOTk2LTEtZ2l0LXNlbmQtZW1haWwta2FtZW5za3lAY2lzY28uY29tCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBNYXlkZWxsIDxwZXRlci5tYXlkZWxsQGxpbmFyby5vcmc+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0tLS0KLSB0YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYyB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3RhcmdldC9hcm0vdHJhbnNsYXRlLWE2NC5jIGIvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMKLWluZGV4IDYyNWVmMmQuLmMzODEwOTEgMTAwNjQ0Ci0tLS0gYS90YXJnZXQvYXJtL3RyYW5zbGF0ZS1hNjQuYwotKysrIGIvdGFyZ2V0L2FybS90cmFuc2xhdGUtYTY0LmMKLUBAIC0xMTM4NCwxMiArMTEzODQsMTIgQEAgc3RhdGljIHZvaWQgYWFyY2g2NF90cl90Yl9zdG9wKERpc2FzQ29udGV4dEJhc2UgKmRjYmFzZSwgQ1BVU3RhdGUgKmNwdSkKLSAgICAgICAgIGNhc2UgRElTQVNfVVBEQVRFOgotICAgICAgICAgICAgIGdlbl9hNjRfc2V0X3BjX2ltKGRjLT5wYyk7Ci0gICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0tICAgICAgICBjYXNlIERJU0FTX0pVTVA6Ci0tICAgICAgICAgICAgdGNnX2dlbl9sb29rdXBfYW5kX2dvdG9fcHRyKCk7Ci0tICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlIERJU0FTX0VYSVQ6Ci0gICAgICAgICAgICAgdGNnX2dlbl9leGl0X3RiKDApOwotICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgY2FzZSBESVNBU19KVU1QOgotKyAgICAgICAgICAgIHRjZ19nZW5fbG9va3VwX2FuZF9nb3RvX3B0cigpOwotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSBESVNBU19OT1JFVFVSTjoKLSAgICAgICAgIGNhc2UgRElTQVNfU1dJOgotICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTI0ZjcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBiYjllNDhlMzMxZWVlMDZkN2JhYzFkY2U4MDljNzAxOTFkMWEzYjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxMiBNYXIgMjAxMyAwOTo1NDowNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBmaXggbGliY2FwIGhlYWRlciBpc3N1ZSBvbiBzb21lIGRpc3RybworCisxLCBXaGVuIGJ1aWxkIHFlbXUtbmF0aXZlIG9uIFNMRUQgMTEuMiwgdGhlcmUgaXMgYW4gZXJyb3I6CisuLi4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaDoyOCwKK3wgIGZyb20gL3Vzci9pbmNsdWRlL3NpZ25hbC5oOjMzOSwKK3wgIGZyb20gL2J1aWxkYXJlYTIvdG1wL3dvcmsvaTY4Ni1saW51eC9xZW11LW5hdGl2ZS8xLjQuMC1yMC8KK3FlbXUtMS40LjAvaW5jbHVkZS9xZW11LWNvbW1vbi5oOjQyLAorfCAgZnJvbSBmc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmM6MjM6Cit8ICAvdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaDoyODogZXJyb3I6IGV4cGVjdGVkIHNwZWNpZmllci0KK3F1YWxpZmllci1saXN0IGJlZm9yZSAnX191NjQnCit8ICAvdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaDoxOTE6IGVycm9yOiBleHBlY3RlZCBzcGVjaWZpZXItCitxdWFsaWZpZXItbGlzdCBiZWZvcmUgJ19fdTY0JworLi4uCisKKzIsIFRoZSB2aXJ0ZnMtcHJveHktaGVscGVyLmMgaW5jbHVkZXMgPHN5cy9jYXBhYmlsaXR5Lmg+IGFuZAorcWVtdS1jb21tb24uaCBpbiBzZXF1ZW5jZS4gVGhlIGhlYWRlciBpbmNsdWRlIG1hcCBpczoKKyhgLS0+JyBwcmVzZW50cyBgaW5jbHVkZScpCisuLi4KKyJ2aXJ0ZnMtcHJveHktaGVscGVyLmMiIC0tPiA8c3lzL2NhcGFiaWxpdHkuaD4KKy4uLgorInZpcnRmcy1wcm94eS1oZWxwZXIuYyIgLS0+ICJxZW11LWNvbW1vbi5oIiAtLT4gPHNpZ25hbC5oPiAtLT4KKzxiaXRzL3NpZ2NvbnRleHQuaD4gLS0+IDxhc20vc2lnY29udGV4dC5oPiAtLT4gPGxpbnV4L3R5cGVzLmg+IC0tPgorPGFzbS90eXBlcy5oPiAtLT4gPGFzbS1nZW5lcmljL3R5cGVzLmg+IC0tPiA8YXNtLWdlbmVyaWMvaW50LWxsNjQuaD4KKy4uLgorCiszLCBUaGUgYnVnIGlzIGZvdW5kIG9uIFNMRUQgMTEuMiB4ODYuIEluIGxpYmNhcCBoZWFkZXIgZmlsZQorL3Vzci9pbmNsdWRlL3N5cy9jYXBhYmlsaXR5LmgsIGl0IGRvZXMgZXZpbCBzdHVmZiBsaWtlIHRoaXM6CisuLi4KKyAgMjUgLyoKKyAgMjYgICogTWFrZSBzdXJlIHdlIGNhbiBiZSBpbmNsdWRlZCBmcm9tIHVzZXJsYW5kIGJ5IHByZXZlbnRpbmcKKyAgMjcgICogY2FwYWJpbGl0eS5oIGZyb20gaW5jbHVkaW5nIG90aGVyIGtlcm5lbCBoZWFkZXJzCisgIDI4ICAqLworICAyOSAjZGVmaW5lIF9MSU5VWF9UWVBFU19ICisgIDMwICNkZWZpbmUgX0xJTlVYX0ZTX0gKKyAgMzEgI2RlZmluZSBfX0xJTlVYX0NPTVBJTEVSX0gKKyAgMzIgI2RlZmluZSBfX3VzZXIKKyAgMzMKKyAgMzQgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7CisgIDM1IHR5cGVkZWYgX191MzIgX19sZTMyOworLi4uCitUaGlzIGNvbXBsZXRlbHkgcHJldmVudHMgaW5jbHVkaW5nIC91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oLgorVGhlIGFib3ZlIGA8YXNtL3NpZ2NvbnRleHQuaD4gLS0+IDxsaW51eC90eXBlcy5oPicgaXMgcHJldmVudGVkLAorYW5kICdfX3U2NCcgaXMgZGVmaW5lZCBpbiA8YXNtLWdlbmVyaWMvaW50LWxsNjQuaD4uCisKKzQsIE1vZGlmeSB2aXJ0ZnMtcHJveHktaGVscGVyLmMgdG8gaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KK2xhc3QgdG8gd29ya2Fyb3VuZCB0aGUgaXNzdWUuCisKK2h0dHA6Ly93d3cubGludXh0di5vcmcvcGlwZXJtYWlsL3Zkci8yMDA5LUF1Z3VzdC8wMjExOTQuaHRtbAoraHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wYXRjaC8xMjc0OC8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBmc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMgfCA3ICsrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jIGIvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jCitpbmRleCA2ZjEzMmM1ZmYxLi44MzI5OTUwYzI2IDEwMDY0NAorLS0tIGEvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jCisrKysgYi9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKK0BAIC0xMyw3ICsxMyw2IEBACisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KKyAjaW5jbHVkZSA8c3lzbG9nLmg+CistI2luY2x1ZGUgPHN5cy9jYXBhYmlsaXR5Lmg+CisgI2luY2x1ZGUgPHN5cy9mc3VpZC5oPgorICNpbmNsdWRlIDxzeXMvdmZzLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorQEAgLTI3LDcgKzI2LDExIEBACisgI2luY2x1ZGUgIjlwLWlvdi1tYXJzaGFsLmgiCisgI2luY2x1ZGUgImh3LzlwZnMvOXAtcHJveHkuaCIKKyAjaW5jbHVkZSAiZnNkZXYvOXAtaW92LW1hcnNoYWwuaCIKKy0KKysvKgorKyAqIEluY2x1ZGUgdGhpcyBvbmUgbGFzdCBkdWUgdG8gc29tZSB2ZXJzaW9ucyBvZiBpdCBiZWluZyBidWdneToKKysgKiBodHRwOi8vd3d3LmxpbnV4dHYub3JnL3BpcGVybWFpbC92ZHIvMjAwOS1BdWd1c3QvMDIxMTk0Lmh0bWwKKysgKi8KKysjaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KKyAjZGVmaW5lIFBST0dOQU1FICJ2aXJ0ZnMtcHJveHktaGVscGVyIgorIAorICNpZm5kZWYgWEZTX1NVUEVSX01BR0lDCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMy1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTkxNDFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGVkYzhkYmE3NGM3YTRhMjEyMWQ3NmM5ODJiZTAwNzQxODNiZjA4MGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBXZWQsIDEyIEF1ZyAyMDE1IDE1OjExOjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNwdXMuYzogQWRkIGVycm9yIG1lc3NhZ2VzIHdoZW4gcWVtaV9jcHVfa2lja190aHJlYWQgZmFpbHMuCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0FkZCBjdXN0b21fZGVidWcuaCB3aXRoIGZ1bmN0aW9uIGZvciBwcmludCBiYWNrdHJhY2UgaW5mb3JtYXRpb24uCitXaGVuIHB0aHJlYWRfa2lsbCBmYWlscyBpbiBxZW11X2NwdV9raWNrX3RocmVhZCBkaXNwbGF5IGJhY2t0cmFjZSBhbmQKK2N1cnJlbnQgY3B1IGluZm9ybWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgorLS0tCisgY3B1cy5jICAgICAgICAgfCAgNSArKysrKworIGN1c3RvbV9kZWJ1Zy5oIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGN1c3RvbV9kZWJ1Zy5oCisKK2RpZmYgLS1naXQgYS9jcHVzLmMgYi9jcHVzLmMKK2luZGV4IDM4ZWJhOGJmZjMuLmI4NGE2MGE0ZjMgMTAwNjQ0CistLS0gYS9jcHVzLmMKKysrKyBiL2NwdXMuYworQEAgLTE2OTAsNiArMTY5MCw4IEBAIHN0YXRpYyB2b2lkICpxZW11X3RjZ19jcHVfdGhyZWFkX2ZuKHZvaWQgKmFyZykKKyAgICAgcmV0dXJuIE5VTEw7CisgfQorIAorKyNpbmNsdWRlICJjdXN0b21fZGVidWcuaCIKKysKKyBzdGF0aWMgdm9pZCBxZW11X2NwdV9raWNrX3RocmVhZChDUFVTdGF0ZSAqY3B1KQorIHsKKyAjaWZuZGVmIF9XSU4zMgorQEAgLTE3MDIsNiArMTcwNCw5IEBAIHN0YXRpYyB2b2lkIHFlbXVfY3B1X2tpY2tfdGhyZWFkKENQVVN0YXRlICpjcHUpCisgICAgIGVyciA9IHB0aHJlYWRfa2lsbChjcHUtPnRocmVhZC0+dGhyZWFkLCBTSUdfSVBJKTsKKyAgICAgaWYgKGVycikgeworICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiVzOiAlcyIsIF9fZnVuY19fLCBzdHJlcnJvcihlcnIpKTsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ1BVICMlZDpcbiIsIGNwdS0+Y3B1X2luZGV4KTsKKysgICAgICAgIGNwdV9kdW1wX3N0YXRlKGNwdSwgc3RkZXJyLCBmcHJpbnRmLCAwKTsKKysgICAgICAgIGJhY2t0cmFjZV9wcmludCgpOworICAgICAgICAgZXhpdCgxKTsKKyAgICAgfQorICNlbHNlIC8qIF9XSU4zMiAqLworZGlmZiAtLWdpdCBhL2N1c3RvbV9kZWJ1Zy5oIGIvY3VzdG9tX2RlYnVnLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5mMDI5ZTQ1NTQ3CistLS0gL2Rldi9udWxsCisrKysgYi9jdXN0b21fZGVidWcuaAorQEAgLTAsMCArMSwyNCBAQAorKyNpbmNsdWRlIDxleGVjaW5mby5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNkZWZpbmUgQkFDS1RSQUNFX01BWCAxMjgKKytzdGF0aWMgdm9pZCBiYWNrdHJhY2VfcHJpbnQodm9pZCkKKyt7CisrCWludCBuZnVuY3MgPSAwOworKwl2b2lkICpidWZbQkFDS1RSQUNFX01BWF07CisrCWNoYXIgKipzeW1ib2xzOworKwlpbnQgaTsKKysKKysJbmZ1bmNzID0gYmFja3RyYWNlKGJ1ZiwgQkFDS1RSQUNFX01BWCk7CisrCisrCXN5bWJvbHMgPSBiYWNrdHJhY2Vfc3ltYm9scyhidWYsIG5mdW5jcyk7CisrCWlmIChzeW1ib2xzID09IE5VTEwpIHsKKysJCWZwcmludGYoc3RkZXJyLCAiYmFja3RyYWNlX3ByaW50IGZhaWxlZCB0byBnZXQgc3ltYm9scyIpOworKwkJcmV0dXJuOworKwl9CisrCisrCWZwcmludGYoc3RkZXJyLCAiQmFja3RyYWNlIC4uLlxuIik7CisrCWZvciAoaSA9IDA7IGkgPCBuZnVuY3M7IGkrKykKKysJCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIHN5bWJvbHNbaV0pOworKworKwlmcmVlKHN5bWJvbHMpOworK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLXBzMi1jaGVjay1QUzJRdWV1ZS1wb2ludGVycy1pbi1wb3N0X2xvYWQtcm91dGluZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLXBzMi1jaGVjay1QUzJRdWV1ZS1wb2ludGVycy1pbi1wb3N0X2xvYWQtcm91dGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJiZGY2Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMy1wczItY2hlY2stUFMyUXVldWUtcG9pbnRlcnMtaW4tcG9zdF9sb2FkLXJvdXRpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1Gcm9tIDA2NTA2MWRjYTM0ZmE1YjkxYmU2ZGNlOWE4N2E4NzU1ZDg4MjZjNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFRodSwgMTYgTm92IDIwMTcgMTM6MjE6NTUgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gcHMyOiBjaGVjayBQUzJRdWV1ZSBwb2ludGVycyBpbiBwb3N0X2xvYWQgcm91dGluZQotCi1EdXJpbmcgUWVtdSBndWVzdCBtaWdyYXRpb24sIGEgZGVzdGluYXRpb24gcHJvY2VzcyBpbnZva2VzIHBzMgotcG9zdF9sb2FkIGZ1bmN0aW9uLiBJbiB0aGF0LCBpZiAncnB0cicgYW5kICdjb3VudCcgdmFsdWVzIHdlcmUKLWludmFsaWQsIGl0IGNvdWxkIGxlYWQgdG8gT09CIGFjY2VzcyBvciBpbmZpbml0ZSBsb29wIGlzc3VlLgotQWRkIGNoZWNrIHRvIGF2b2lkIGl0LgotCi1SZXBvcnRlZC1ieTogQ3lyaWxsZSBDaGF0cmFzIDxjeXJpbGxlLmNoYXRyYXNAb3JhbmdlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgotTWVzc2FnZS1pZDogMjAxNzExMTYwNzUxNTUuMjIzNzgtMS1wcGFuZGl0QHJlZGhhdC5jb20KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotCi1DVkU6IENWRS0yMDE3LTE2ODQ1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBody9pbnB1dC9wczIuYyB8IDIxICsrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvaW5wdXQvcHMyLmMgYi9ody9pbnB1dC9wczIuYwotaW5kZXggZjM4OGEyMy4uZGUxNzFhMiAxMDA2NDQKLS0tLSBhL2h3L2lucHV0L3BzMi5jCi0rKysgYi9ody9pbnB1dC9wczIuYwotQEAgLTEyMjUsMjQgKzEyMjUsMjEgQEAgc3RhdGljIHZvaWQgcHMyX2NvbW1vbl9yZXNldChQUzJTdGF0ZSAqcykKLSBzdGF0aWMgdm9pZCBwczJfY29tbW9uX3Bvc3RfbG9hZChQUzJTdGF0ZSAqcykKLSB7Ci0gICAgIFBTMlF1ZXVlICpxID0gJnMtPnF1ZXVlOwotLSAgICBpbnQgc2l6ZTsKLS0gICAgaW50IGk7Ci0tICAgIGludCB0bXBfZGF0YVtQUzJfUVVFVUVfU0laRV07Ci0rICAgIHVpbnQ4X3QgaSwgc2l6ZTsKLSsgICAgdWludDhfdCB0bXBfZGF0YVtQUzJfUVVFVUVfU0laRV07Ci0gCi0gICAgIC8qIHNldCB0aGUgdXNlZnVsIGRhdGEgYnVmZmVyIHF1ZXVlIHNpemUsIDwgUFMyX1FVRVVFX1NJWkUgKi8KLS0gICAgc2l6ZSA9IHEtPmNvdW50ID4gUFMyX1FVRVVFX1NJWkUgPyAwIDogcS0+Y291bnQ7Ci0rICAgIHNpemUgPSAocS0+Y291bnQgPCAwIHx8IHEtPmNvdW50ID4gUFMyX1FVRVVFX1NJWkUpID8gMCA6IHEtPmNvdW50OwotIAotICAgICAvKiBtb3ZlIHRoZSBxdWV1ZSBlbGVtZW50cyB0byB0aGUgc3RhcnQgb2YgZGF0YSBhcnJheSAqLwotLSAgICBpZiAoc2l6ZSA+IDApIHsKLS0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLS0gICAgICAgICAgICAvKiBtb3ZlIHRoZSBxdWV1ZSBlbGVtZW50cyB0byB0aGUgdGVtcG9yYXJ5IGJ1ZmZlciAqLwotLSAgICAgICAgICAgIHRtcF9kYXRhW2ldID0gcS0+ZGF0YVtxLT5ycHRyXTsKLS0gICAgICAgICAgICBpZiAoKytxLT5ycHRyID09IDI1NikgewotLSAgICAgICAgICAgICAgICBxLT5ycHRyID0gMDsKLS0gICAgICAgICAgICB9Ci0rICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSsgICAgICAgIGlmIChxLT5ycHRyIDwgMCB8fCBxLT5ycHRyID49IHNpemVvZihxLT5kYXRhKSkgewotKyAgICAgICAgICAgIHEtPnJwdHIgPSAwOwotICAgICAgICAgfQotLSAgICAgICAgbWVtY3B5KHEtPmRhdGEsIHRtcF9kYXRhLCBzaXplKTsKLSsgICAgICAgIHRtcF9kYXRhW2ldID0gcS0+ZGF0YVtxLT5ycHRyKytdOwotICAgICB9Ci0rICAgIG1lbWNweShxLT5kYXRhLCB0bXBfZGF0YSwgc2l6ZSk7Ci0rCi0gICAgIC8qIHJlc2V0IHJwdHIvd3B0ci9jb3VudCAqLwotICAgICBxLT5ycHRyID0gMDsKLSAgICAgcS0+d3B0ciA9IHNpemU7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxNC1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDE0LWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjYyYTQxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDE0LWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSA0N2ZkYjBiNmUyZTM5MzE5NGE4YzgxNTQ0YzY0N2ZkZDk5N2FlYzdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxMiBNYXIgMjAxMyAwOTo1NDowNiArMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXggbGliY2FwIGhlYWRlciBpc3N1ZSBvbiBzb21lIGRpc3RybwotCi0xLCBXaGVuIGJ1aWxkIHFlbXUtbmF0aXZlIG9uIFNMRUQgMTEuMiwgdGhlcmUgaXMgYW4gZXJyb3I6Ci0uLi4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9iaXRzL3NpZ2NvbnRleHQuaDoyOCwKLXwgIGZyb20gL3Vzci9pbmNsdWRlL3NpZ25hbC5oOjMzOSwKLXwgIGZyb20gL2J1aWxkYXJlYTIvdG1wL3dvcmsvaTY4Ni1saW51eC9xZW11LW5hdGl2ZS8xLjQuMC1yMC8KLXFlbXUtMS40LjAvaW5jbHVkZS9xZW11LWNvbW1vbi5oOjQyLAotfCAgZnJvbSBmc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmM6MjM6Ci18ICAvdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaDoyODogZXJyb3I6IGV4cGVjdGVkIHNwZWNpZmllci0KLXF1YWxpZmllci1saXN0IGJlZm9yZSAnX191NjQnCi18ICAvdXNyL2luY2x1ZGUvYXNtL3NpZ2NvbnRleHQuaDoxOTE6IGVycm9yOiBleHBlY3RlZCBzcGVjaWZpZXItCi1xdWFsaWZpZXItbGlzdCBiZWZvcmUgJ19fdTY0JwotLi4uCi0KLTIsIFRoZSB2aXJ0ZnMtcHJveHktaGVscGVyLmMgaW5jbHVkZXMgPHN5cy9jYXBhYmlsaXR5Lmg+IGFuZAotcWVtdS1jb21tb24uaCBpbiBzZXF1ZW5jZS4gVGhlIGhlYWRlciBpbmNsdWRlIG1hcCBpczoKLShgLS0+JyBwcmVzZW50cyBgaW5jbHVkZScpCi0uLi4KLSJ2aXJ0ZnMtcHJveHktaGVscGVyLmMiIC0tPiA8c3lzL2NhcGFiaWxpdHkuaD4KLS4uLgotInZpcnRmcy1wcm94eS1oZWxwZXIuYyIgLS0+ICJxZW11LWNvbW1vbi5oIiAtLT4gPHNpZ25hbC5oPiAtLT4KLTxiaXRzL3NpZ2NvbnRleHQuaD4gLS0+IDxhc20vc2lnY29udGV4dC5oPiAtLT4gPGxpbnV4L3R5cGVzLmg+IC0tPgotPGFzbS90eXBlcy5oPiAtLT4gPGFzbS1nZW5lcmljL3R5cGVzLmg+IC0tPiA8YXNtLWdlbmVyaWMvaW50LWxsNjQuaD4KLS4uLgotCi0zLCBUaGUgYnVnIGlzIGZvdW5kIG9uIFNMRUQgMTEuMiB4ODYuIEluIGxpYmNhcCBoZWFkZXIgZmlsZQotL3Vzci9pbmNsdWRlL3N5cy9jYXBhYmlsaXR5LmgsIGl0IGRvZXMgZXZpbCBzdHVmZiBsaWtlIHRoaXM6Ci0uLi4KLSAgMjUgLyoKLSAgMjYgICogTWFrZSBzdXJlIHdlIGNhbiBiZSBpbmNsdWRlZCBmcm9tIHVzZXJsYW5kIGJ5IHByZXZlbnRpbmcKLSAgMjcgICogY2FwYWJpbGl0eS5oIGZyb20gaW5jbHVkaW5nIG90aGVyIGtlcm5lbCBoZWFkZXJzCi0gIDI4ICAqLwotICAyOSAjZGVmaW5lIF9MSU5VWF9UWVBFU19ICi0gIDMwICNkZWZpbmUgX0xJTlVYX0ZTX0gKLSAgMzEgI2RlZmluZSBfX0xJTlVYX0NPTVBJTEVSX0gKLSAgMzIgI2RlZmluZSBfX3VzZXIKLSAgMzMKLSAgMzQgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX191MzI7Ci0gIDM1IHR5cGVkZWYgX191MzIgX19sZTMyOwotLi4uCi1UaGlzIGNvbXBsZXRlbHkgcHJldmVudHMgaW5jbHVkaW5nIC91c3IvaW5jbHVkZS9saW51eC90eXBlcy5oLgotVGhlIGFib3ZlIGA8YXNtL3NpZ2NvbnRleHQuaD4gLS0+IDxsaW51eC90eXBlcy5oPicgaXMgcHJldmVudGVkLAotYW5kICdfX3U2NCcgaXMgZGVmaW5lZCBpbiA8YXNtLWdlbmVyaWMvaW50LWxsNjQuaD4uCi0KLTQsIE1vZGlmeSB2aXJ0ZnMtcHJveHktaGVscGVyLmMgdG8gaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KLWxhc3QgdG8gd29ya2Fyb3VuZCB0aGUgaXNzdWUuCi0KLWh0dHA6Ly93d3cubGludXh0di5vcmcvcGlwZXJtYWlsL3Zkci8yMDA5LUF1Z3VzdC8wMjExOTQuaHRtbAotaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wYXRjaC8xMjc0OC8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBmc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jIGIvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jCi1pbmRleCA4ZTQ4NTAwLi42NDkwMDMwIDEwMDY0NAotLS0tIGEvZnNkZXYvdmlydGZzLXByb3h5LWhlbHBlci5jCi0rKysgYi9mc2Rldi92aXJ0ZnMtcHJveHktaGVscGVyLmMKLUBAIC0xMyw3ICsxMyw2IEBACi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KLSAjaW5jbHVkZSA8c3lzbG9nLmg+Ci0tI2luY2x1ZGUgPHN5cy9jYXBhYmlsaXR5Lmg+Ci0gI2luY2x1ZGUgPHN5cy9mc3VpZC5oPgotICNpbmNsdWRlIDxzeXMvdmZzLmg+Ci0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotQEAgLTI3LDcgKzI2LDExIEBACi0gI2luY2x1ZGUgIjlwLWlvdi1tYXJzaGFsLmgiCi0gI2luY2x1ZGUgImh3LzlwZnMvOXAtcHJveHkuaCIKLSAjaW5jbHVkZSAiZnNkZXYvOXAtaW92LW1hcnNoYWwuaCIKLS0KLSsvKgotKyAqIEluY2x1ZGUgdGhpcyBvbmUgbGFzdCBkdWUgdG8gc29tZSB2ZXJzaW9ucyBvZiBpdCBiZWluZyBidWdneToKLSsgKiBodHRwOi8vd3d3LmxpbnV4dHYub3JnL3BpcGVybWFpbC92ZHIvMjAwOS1BdWd1c3QvMDIxMTk0Lmh0bWwKLSsgKi8KLSsjaW5jbHVkZSA8c3lzL2NhcGFiaWxpdHkuaD4KLSAjZGVmaW5lIFBST0dOQU1FICJ2aXJ0ZnMtcHJveHktaGVscGVyIgotIAotICNpZm5kZWYgWEZTX1NVUEVSX01BR0lDCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxNS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTUtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTU2MjFjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxNS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSBkYjkxNGUwZjkzYTMyYjY3MzFhNjM2NTE3MDAyZWNhZGMyMDc3MThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMiBBdWcgMjAxNSAxNToxMTozMCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBjcHVzLmM6IEFkZCBlcnJvciBtZXNzYWdlcyB3aGVuIHFlbWlfY3B1X2tpY2tfdGhyZWFkIGZhaWxzLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1BZGQgY3VzdG9tX2RlYnVnLmggd2l0aCBmdW5jdGlvbiBmb3IgcHJpbnQgYmFja3RyYWNlIGluZm9ybWF0aW9uLgotV2hlbiBwdGhyZWFkX2tpbGwgZmFpbHMgaW4gcWVtdV9jcHVfa2lja190aHJlYWQgZGlzcGxheSBiYWNrdHJhY2UgYW5kCi1jdXJyZW50IGNwdSBpbmZvcm1hdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KLS0tLQotIGNwdXMuYyAgICAgICAgIHwgIDUgKysrKysKLSBjdXN0b21fZGVidWcuaCB8IDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBjdXN0b21fZGVidWcuaAotCi1kaWZmIC0tZ2l0IGEvY3B1cy5jIGIvY3B1cy5jCi1pbmRleCAxMTRjMjliLi5jM2RkMmUwIDEwMDY0NAotLS0tIGEvY3B1cy5jCi0rKysgYi9jcHVzLmMKLUBAIC0xNTEwLDYgKzE1MTAsOCBAQCBzdGF0aWMgdm9pZCAqcWVtdV90Y2dfY3B1X3RocmVhZF9mbih2b2lkICphcmcpCi0gICAgIHJldHVybiBOVUxMOwotIH0KLSAKLSsjaW5jbHVkZSAiY3VzdG9tX2RlYnVnLmgiCi0rCi0gc3RhdGljIHZvaWQgcWVtdV9jcHVfa2lja190aHJlYWQoQ1BVU3RhdGUgKmNwdSkKLSB7Ci0gI2lmbmRlZiBfV0lOMzIKLUBAIC0xNTIyLDYgKzE1MjQsOSBAQCBzdGF0aWMgdm9pZCBxZW11X2NwdV9raWNrX3RocmVhZChDUFVTdGF0ZSAqY3B1KQotICAgICBlcnIgPSBwdGhyZWFkX2tpbGwoY3B1LT50aHJlYWQtPnRocmVhZCwgU0lHX0lQSSk7Ci0gICAgIGlmIChlcnIpIHsKLSAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTolczogJXMiLCBfX2Z1bmNfXywgc3RyZXJyb3IoZXJyKSk7Ci0rICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNQVSAjJWQ6XG4iLCBjcHUtPmNwdV9pbmRleCk7Ci0rICAgICAgICBjcHVfZHVtcF9zdGF0ZShjcHUsIHN0ZGVyciwgZnByaW50ZiwgMCk7Ci0rICAgICAgICBiYWNrdHJhY2VfcHJpbnQoKTsKLSAgICAgICAgIGV4aXQoMSk7Ci0gICAgIH0KLSAjZWxzZSAvKiBfV0lOMzIgKi8KLWRpZmYgLS1naXQgYS9jdXN0b21fZGVidWcuaCBiL2N1c3RvbV9kZWJ1Zy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjAyOWU0NQotLS0tIC9kZXYvbnVsbAotKysrIGIvY3VzdG9tX2RlYnVnLmgKLUBAIC0wLDAgKzEsMjQgQEAKLSsjaW5jbHVkZSA8ZXhlY2luZm8uaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjZGVmaW5lIEJBQ0tUUkFDRV9NQVggMTI4Ci0rc3RhdGljIHZvaWQgYmFja3RyYWNlX3ByaW50KHZvaWQpCi0rewotKwlpbnQgbmZ1bmNzID0gMDsKLSsJdm9pZCAqYnVmW0JBQ0tUUkFDRV9NQVhdOwotKwljaGFyICoqc3ltYm9sczsKLSsJaW50IGk7Ci0rCi0rCW5mdW5jcyA9IGJhY2t0cmFjZShidWYsIEJBQ0tUUkFDRV9NQVgpOwotKwotKwlzeW1ib2xzID0gYmFja3RyYWNlX3N5bWJvbHMoYnVmLCBuZnVuY3MpOwotKwlpZiAoc3ltYm9scyA9PSBOVUxMKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgImJhY2t0cmFjZV9wcmludCBmYWlsZWQgdG8gZ2V0IHN5bWJvbHMiKTsKLSsJCXJldHVybjsKLSsJfQotKwotKwlmcHJpbnRmKHN0ZGVyciwgIkJhY2t0cmFjZSAuLi5cbiIpOwotKwlmb3IgKGkgPSAwOyBpIDwgbmZ1bmNzOyBpKyspCi0rCQlmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBzeW1ib2xzW2ldKTsKLSsKLSsJZnJlZShzeW1ib2xzKTsKLSt9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTA4MzkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTA4MzkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UxZTQ0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xMDgzOS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIGZkYzg5ZTkwZmFjNDBjNWNhMjY4NjczM2RmMTdiNjQyM2ZiOGQ4ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAzMCBNYXkgMjAxOCAxMzowODoxNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBuZTIwMDA6IGZpeCBwb3NzaWJsZSBvdXQgb2YgYm91bmQgYWNjZXNzIGluIG5lMjAwMF9yZWNlaXZlCisKK0luIG5lMjAwMF9yZWNlaXZlKCksIHdlIHRyeSB0byBhc3NpZ24gc2l6ZV8gdG8gc2l6ZSB3aGljaCBjb252ZXJ0cworZnJvbSBzaXplX3QgdG8gaW50ZWdlci4gVGhpcyB3aWxsIGNhdXNlIHRyb3VibGVzIHdoZW4gc2l6ZV8gaXMgZ3JlYXRlcgorSU5UX01BWCwgdGhpcyB3aWxsIGxlYWQgYSBuZWdhdGl2ZSB2YWx1ZSBpbiBzaXplIGFuZCBpdCBjYW4gdGhlbiBwYXNzCit0aGUgY2hlY2sgb2Ygc2l6ZSA8IE1JTl9CVUZfU0laRSB3aGljaCBtYXkgbGVhZCBvdXQgb2YgYm91bmQgYWNjZXNzIG9mCitmb3IgYm90aCBidWYgYW5kIGJ1ZjEuCisKK0ZpeGluZyBieSBjb252ZXJ0aW5nIHRoZSB0eXBlIG9mIHNpemUgdG8gc2l6ZV90LgorCitDQzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZworUmVwb3J0ZWQtYnk6IERhbmllbCBTaGFwaXJhIDxkYW5pZWxAdHdpc3Rsb2NrLmNvbT4KK1Jldmlld2VkLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXRkaWZmCis7aD1mZGM4OWU5MGZhYzQwYzVjYTI2ODY3MzNkZjE3YjY0MjNmYjhkOGZiI3BhdGNoMV0KKworQ1ZFOiBDVkUtMjAxOC0xMDgzOQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvbmV0L25lMjAwMC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L25ldC9uZTIwMDAuYyBiL2h3L25ldC9uZTIwMDAuYworaW5kZXggMDdkNzllMy4uODY5NTE4ZSAxMDA2NDQKKy0tLSBhL2h3L25ldC9uZTIwMDAuYworKysrIGIvaHcvbmV0L25lMjAwMC5jCitAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBpbnQgbmUyMDAwX2J1ZmZlcl9mdWxsKE5FMjAwMFN0YXRlICpzKQorIHNzaXplX3QgbmUyMDAwX3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplXykKKyB7CisgICAgIE5FMjAwMFN0YXRlICpzID0gcWVtdV9nZXRfbmljX29wYXF1ZShuYyk7CistICAgIGludCBzaXplID0gc2l6ZV87CisrICAgIHNpemVfdCBzaXplID0gc2l6ZV87CisgICAgIHVpbnQ4X3QgKnA7CisgICAgIHVuc2lnbmVkIGludCB0b3RhbF9sZW4sIG5leHQsIGF2YWlsLCBsZW4sIGluZGV4LCBtY2FzdF9pZHg7CisgICAgIHVpbnQ4X3QgYnVmMVs2MF07CitAQCAtMTgyLDcgKzE4Miw3IEBAIHNzaXplX3QgbmUyMDAwX3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplXykKKyAgICAgICAgIHsgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiB9OworIAorICNpZiBkZWZpbmVkKERFQlVHX05FMjAwMCkKKy0gICAgcHJpbnRmKCJORTIwMDA6IHJlY2VpdmVkIGxlbj0lZFxuIiwgc2l6ZSk7CisrICAgIHByaW50ZigiTkUyMDAwOiByZWNlaXZlZCBsZW49JXp1XG4iLCBzaXplKTsKKyAjZW5kaWYKKyAKKyAgICAgaWYgKHMtPmNtZCAmIEU4MzkwX1NUT1AgfHwgbmUyMDAwX2J1ZmZlcl9mdWxsKHMpKQorLS0gCisxLjguMy4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTI2MTcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTI2MTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4OWYxODkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTEyNjE3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSAxNDFiMTk3NDA4YWIzOThjNGY0NzRhYzFhNzI4YWIzMTZlOTIxZjJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDE4IDExOjQ2OjU3ICswNTMwCi1TdWJqZWN0OiBbUEFUQ0hdIHFnYTogY2hlY2sgYnl0ZXMgY291bnQgcmVhZCBieSBndWVzdC1maWxlLXJlYWQKLQotV2hpbGUgcmVhZGluZyBmaWxlIGNvbnRlbnQgdmlhICdndWVzdC1maWxlLXJlYWQnIGNvbW1hbmQsCi0ncW1wX2d1ZXN0X2ZpbGVfcmVhZCcgcm91dGluZSBhbGxvY2F0ZXMgYnVmZmVyIG9mIGNvdW50KzEKLWJ5dGVzLiBJdCBjb3VsZCBvdmVyZmxvdyBmb3IgbGFyZ2UgdmFsdWVzIG9mICdjb3VudCcuCi1BZGQgY2hlY2sgdG8gYXZvaWQgaXQuCi0KLVJlcG9ydGVkLWJ5OiBGYWtocmkgWnVsa2lmbGkgPG1vaGRmYWtocml6dWxraWZsaUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLUNjOiBxZW11LXN0YWJsZUBub25nbnUub3JnCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFJvdGggPG1kcm90aEBsaW51eC52bmV0LmlibS5jb20+Ci0KLUNWRTogQ1ZFLTIwMTgtMTI2MTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0ZGlmZjtoPTE0MWIxOTc0MDhhYjM5OGM0ZjQ3NGFjMWE3MjhhYjMxNmU5MjFmMmJdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHFnYS9jb21tYW5kcy1wb3NpeC5jIHwgMiArLQotIHFnYS9jb21tYW5kcy13aW4zMi5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcWdhL2NvbW1hbmRzLXBvc2l4LmMgYi9xZ2EvY29tbWFuZHMtcG9zaXguYwotaW5kZXggNTk0ZDIxZWYzZS4uOTI4NGU3MTY2NiAxMDA2NDQKLS0tLSBhL3FnYS9jb21tYW5kcy1wb3NpeC5jCi0rKysgYi9xZ2EvY29tbWFuZHMtcG9zaXguYwotQEAgLTQ1OCw3ICs0NTgsNyBAQCBzdHJ1Y3QgR3Vlc3RGaWxlUmVhZCAqcW1wX2d1ZXN0X2ZpbGVfcmVhZChpbnQ2NF90IGhhbmRsZSwgYm9vbCBoYXNfY291bnQsCi0gCi0gICAgIGlmICghaGFzX2NvdW50KSB7Ci0gICAgICAgICBjb3VudCA9IFFHQV9SRUFEX0NPVU5UX0RFRkFVTFQ7Ci0tICAgIH0gZWxzZSBpZiAoY291bnQgPCAwKSB7Ci0rICAgIH0gZWxzZSBpZiAoY291bnQgPCAwIHx8IGNvdW50ID49IFVJTlQzMl9NQVgpIHsKLSAgICAgICAgIGVycm9yX3NldGcoZXJycCwgInZhbHVlICclIiBQUklkNjQgIicgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgY291bnQiLAotICAgICAgICAgICAgICAgICAgICBjb3VudCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLWRpZmYgLS1naXQgYS9xZ2EvY29tbWFuZHMtd2luMzIuYyBiL3FnYS9jb21tYW5kcy13aW4zMi5jCi1pbmRleCA3MGVlNTM3OWY2Li43M2YzMWZhOGMyIDEwMDY0NAotLS0tIGEvcWdhL2NvbW1hbmRzLXdpbjMyLmMKLSsrKyBiL3FnYS9jb21tYW5kcy13aW4zMi5jCi1AQCAtMzE4LDcgKzMxOCw3IEBAIEd1ZXN0RmlsZVJlYWQgKnFtcF9ndWVzdF9maWxlX3JlYWQoaW50NjRfdCBoYW5kbGUsIGJvb2wgaGFzX2NvdW50LAotICAgICB9Ci0gICAgIGlmICghaGFzX2NvdW50KSB7Ci0gICAgICAgICBjb3VudCA9IFFHQV9SRUFEX0NPVU5UX0RFRkFVTFQ7Ci0tICAgIH0gZWxzZSBpZiAoY291bnQgPCAwKSB7Ci0rICAgIH0gZWxzZSBpZiAoY291bnQgPCAwIHx8IGNvdW50ID49IFVJTlQzMl9NQVgpIHsKLSAgICAgICAgIGVycm9yX3NldGcoZXJycCwgInZhbHVlICclIiBQUklkNjQKLSAgICAgICAgICAgICAgICAgICAgIicgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgY291bnQiLCBjb3VudCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNTc0Ni5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNTc0Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjYxZWEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE1NzQ2LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gOWFjZjRjNjRkZDQ1NjBiZDI2ODAwNmQ3MzU2Yzc0NTVmYWI3ZTViMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDYgU2VwIDIwMTggMTQ6NTI6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2VjY29tcDogc2V0IHRoZSBzZWNjb21wIGZpbHRlciB0byBhbGwgdGhyZWFkcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXaGVuIHVzaW5nICItc2VjY29tcCBvbiIsIHRoZSBzZWNjb21wIHBvbGljeSBpcyBvbmx5IGFwcGxpZWQgdG8gdGhlCittYWluIHRocmVhZCwgdGhlIHZjcHUgd29ya2VyIHRocmVhZCBhbmQgb3RoZXIgd29ya2VyIHRocmVhZHMgY3JlYXRlZAorYWZ0ZXIgc2VjY29tcCBwb2xpY3kgaXMgYXBwbGllZDsgdGhlIHNlY2NvbXAgcG9saWN5IGlzIG5vdCBhcHBsaWVkIHRvCitlLmcuIHRoZSBSQ1UgdGhyZWFkIGJlY2F1c2UgaXQgaXMgY3JlYXRlZCBiZWZvcmUgdGhlIHNlY2NvbXAgcG9saWN5IGlzCithcHBsaWVkIGFuZCBTRUNDT01QX0ZJTFRFUl9GTEFHX1RTWU5DIGlzbid0IHVzZWQuCisKK1RoaXMgY2FuIGJlIHZlcmlmaWVkIHdpdGgKK2ZvciB0YXNrIGluIC9wcm9jL2BwaWRvZiBxZW11YC90YXNrLyo7IGRvIGNhdCAkdGFzay9zdGF0dXMgfCBncmVwIFNlY2MgOyBkb25lCitTZWNjb21wOgkyCitTZWNjb21wOgkwCitTZWNjb21wOgkwCitTZWNjb21wOgkyCitTZWNjb21wOgkyCitTZWNjb21wOgkyCisKK1N0YXJ0aW5nIHdpdGggbGlic2VjY29tcCAyLjIuMCBhbmQga2VybmVsID49IDMuMTcsIHdlIGNhbiB1c2UKK3NlY2NvbXBfYXR0cl9zZXQoY3R4LCA+IFNDTVBfRkxUQVRSX0NUTF9UU1lOQywgMSkgdG8gdXBkYXRlIHRoZSBwb2xpY3kKK29uIGFsbCB0aHJlYWRzLgorCitsaWJzZWNjb21wIHJlcXVpcmVtZW50IHdhcyBidW1wZWQgdG8gMi4yLjAgaW4gcHJldmlvdXMgcGF0Y2guCitsaWJzZWNjb21wIHNob3VsZCBmYWlsIHRvIHNldCB0aGUgZmlsdGVyIGlmIGl0IGNhbid0IGhvbm91cgorU0NNUF9GTFRBVFJfQ1RMX1RTWU5DICh1bnRlc3RlZCksIGFuZCB0aHVzIC1zYW5kYm94IHdpbGwgbm93IGZhaWwgb24KK2tlcm5lbCA8IDMuMTcuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPgorQWNrZWQtYnk6IEVkdWFyZG8gT3R1Ym8gPG90dWJvQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbaHR0cHM6Ly9naXRodWIuY29tL3FlbXUvcWVtdS9jb21taXQvCis3MGRmYWJlYWE3OWJhNGQ3YTNiNjk5YWJlMWEwNDdjODAxMmRiMTE0I2RpZmYtMTgxMDZkM2I0N2EyZDI0OWY5ZDQxZTc3MmI3ZGIyMmRdCisKK0NWRTogQ1ZFLTIwMTgtMTU3NDYKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHFlbXUtc2VjY29tcC5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3FlbXUtc2VjY29tcC5jIGIvcWVtdS1zZWNjb21wLmMKK2luZGV4IDljZDhlYjkuLmJhNTUwMGEgMTAwNjQ0CistLS0gYS9xZW11LXNlY2NvbXAuYworKysrIGIvcWVtdS1zZWNjb21wLmMKK0BAIC0xMjAsNiArMTIwLDExIEBAIHN0YXRpYyBpbnQgc2VjY29tcF9zdGFydCh1aW50MzJfdCBzZWNjb21wX29wdHMpCisgICAgICAgICBnb3RvIHNlY2NvbXBfcmV0dXJuOworICAgICB9CisgCisrICAgIHJjID0gc2VjY29tcF9hdHRyX3NldChjdHgsIFNDTVBfRkxUQVRSX0NUTF9UU1lOQywgMSk7CisrICAgIGlmIChyYyAhPSAwKSB7CisrICAgICAgICBnb3RvIHNlY2NvbXBfcmV0dXJuOworKyAgICB9CisrCisgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGJsYWNrbGlzdCk7IGkrKykgeworICAgICAgICAgaWYgKCEoc2VjY29tcF9vcHRzICYgYmxhY2tsaXN0W2ldLnNldCkpIHsKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTU4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTU4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNDBmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NTgucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSAwNmU4OGNhNzhkMDU2ZWE0ZGU4ODVlM2ExNDk2ODA1MTc5ZGM0N2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTUgT2N0IDIwMTggMTY6MzM6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmUyMDAwOiBmaXggcG9zc2libGUgb3V0IG9mIGJvdW5kIGFjY2VzcyBpbiBuZTIwMDBfcmVjZWl2ZQorCitJbiBuZTIwMDBfcmVjZWl2ZSgpLCB3ZSB0cnkgdG8gYXNzaWduIHNpemVfIHRvIHNpemUgd2hpY2ggY29udmVydHMKK2Zyb20gc2l6ZV90IHRvIGludGVnZXIuIFRoaXMgd2lsbCBjYXVzZSB0cm91YmxlcyB3aGVuIHNpemVfIGlzIGdyZWF0ZXIKK0lOVF9NQVgsIHRoaXMgd2lsbCBsZWFkIGEgbmVnYXRpdmUgdmFsdWUgaW4gc2l6ZSBhbmQgaXQgY2FuIHRoZW4gcGFzcwordGhlIGNoZWNrIG9mIHNpemUgPCBNSU5fQlVGX1NJWkUgd2hpY2ggbWF5IGxlYWQgb3V0IG9mIGJvdW5kIGFjY2VzcyBvZgorZm9yIGJvdGggYnVmIGFuZCBidWYxLgorCitGaXhpbmcgYnkgY29udmVydGluZyB0aGUgdHlwZSBvZiBzaXplIHRvIHNpemVfdC4KKworQ0M6IGFkZHJlc3NAaGlkZGVuCitSZXBvcnRlZC1ieTogRGFuaWVsIFNoYXBpcmEgPGFkZHJlc3NAaGlkZGVuPgorUmV2aWV3ZWQtYnk6IE1pY2hhZWwgUy4gVHNpcmtpbiA8YWRkcmVzc0BoaWRkZW4+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxhZGRyZXNzQGhpZGRlbj4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTgtMDkvbXNnMDMyNzMuaHRtbF0KKworQ1ZFOiBDVkUtMjAxOC0xNzk1OAorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvbmV0L25lMjAwMC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L25ldC9uZTIwMDAuYyBiL2h3L25ldC9uZTIwMDAuYworaW5kZXggMDdkNzllMy4uODY5NTE4ZSAxMDA2NDQKKy0tLSBhL2h3L25ldC9uZTIwMDAuYworKysrIGIvaHcvbmV0L25lMjAwMC5jCitAQCAtMTc0LDcgKzE3NCw3IEBAIHN0YXRpYyBpbnQgbmUyMDAwX2J1ZmZlcl9mdWxsKE5FMjAwMFN0YXRlICpzKQorIHNzaXplX3QgbmUyMDAwX3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplXykKKyB7CisgICAgIE5FMjAwMFN0YXRlICpzID0gcWVtdV9nZXRfbmljX29wYXF1ZShuYyk7CistICAgIGludCBzaXplID0gc2l6ZV87CisrICAgIHNpemVfdCBzaXplID0gc2l6ZV87CisgICAgIHVpbnQ4X3QgKnA7CisgICAgIHVuc2lnbmVkIGludCB0b3RhbF9sZW4sIG5leHQsIGF2YWlsLCBsZW4sIGluZGV4LCBtY2FzdF9pZHg7CisgICAgIHVpbnQ4X3QgYnVmMVs2MF07CitAQCAtMTgyLDcgKzE4Miw3IEBAIHNzaXplX3QgbmUyMDAwX3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplXykKKyAgICAgICAgIHsgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiB9OworIAorICNpZiBkZWZpbmVkKERFQlVHX05FMjAwMCkKKy0gICAgcHJpbnRmKCJORTIwMDA6IHJlY2VpdmVkIGxlbj0lZFxuIiwgc2l6ZSk7CisrICAgIHByaW50ZigiTkUyMDAwOiByZWNlaXZlZCBsZW49JXp1XG4iLCBzaXplKTsKKyAjZW5kaWYKKyAKKyAgICAgaWYgKHMtPmNtZCAmIEU4MzkwX1NUT1AgfHwgbmUyMDAwX2J1ZmZlcl9mdWxsKHMpKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NjIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTgtMTc5NjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZmQ4MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk2Mi5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDIwYWJlNDQzYWQ5NDY0YjE4YWM0OTRmNzFmN2Q1M2YxOWVlMzc0OGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxNSBPY3QgMjAxOCAxNjozODowOCArMDgwMAorU3ViamVjdDogW1BBVENIXSBydGw4MTM5OiBmaXggcG9zc2libGUgb3V0IG9mIGJvdW5kIGFjY2VzcworCitJbiBydGw4MTM5X2RvX3JlY2VpdmUoKSwgd2UgdHJ5IHRvIGFzc2lnbiBzaXplXyB0byBzaXplIHdoaWNoIGNvbnZlcnRzCitmcm9tIHNpemVfdCB0byBpbnRlZ2VyLiBUaGlzIHdpbGwgY2F1c2UgdHJvdWJsZXMgd2hlbiBzaXplXyBpcyBncmVhdGVyCitJTlRfTUFYLCB0aGlzIHdpbGwgbGVhZCBhIG5lZ2F0aXZlIHZhbHVlIGluIHNpemUgYW5kIGl0IGNhbiB0aGVuIHBhc3MKK3RoZSBjaGVjayBvZiBzaXplIDwgTUlOX0JVRl9TSVpFIHdoaWNoIG1heSBsZWFkIG91dCBvZiBib3VuZCBhY2Nlc3Mgb2YKK2ZvciBib3RoIGJ1ZiBhbmQgYnVmMS4KKworRml4aW5nIGJ5IGNvbnZlcnRpbmcgdGhlIHR5cGUgb2Ygc2l6ZSB0byBzaXplX3QuCisKK0NDOiBhZGRyZXNzQGhpZGRlbgorUmVwb3J0ZWQtYnk6IERhbmllbCBTaGFwaXJhIDxhZGRyZXNzQGhpZGRlbj4KK1Jldmlld2VkLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPGFkZHJlc3NAaGlkZGVuPgorU2lnbmVkLW9mZi1ieTogSmFzb24gV2FuZyA8YWRkcmVzc0BoaWRkZW4+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE4LTA5L21zZzAzMjY5Lmh0bWxdCisKK0NWRTogQ1ZFLTIwMTgtMTc5NjIKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L25ldC9ydGw4MTM5LmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L25ldC9ydGw4MTM5LmMgYi9ody9uZXQvcnRsODEzOS5jCitpbmRleCA0NmRhYTE2Li4yMzQyYTA5IDEwMDY0NAorLS0tIGEvaHcvbmV0L3J0bDgxMzkuYworKysrIGIvaHcvbmV0L3J0bDgxMzkuYworQEAgLTgxNyw3ICs4MTcsNyBAQCBzdGF0aWMgc3NpemVfdCBydGw4MTM5X2RvX3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdAorICAgICBSVEw4MTM5U3RhdGUgKnMgPSBxZW11X2dldF9uaWNfb3BhcXVlKG5jKTsKKyAgICAgUENJRGV2aWNlICpkID0gUENJX0RFVklDRShzKTsKKyAgICAgLyogc2l6ZSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgcGFzc2VkIHRvIHRoZSBkcml2ZXIgKi8KKy0gICAgaW50IHNpemUgPSBzaXplXzsKKysgICAgc2l6ZV90IHNpemUgPSBzaXplXzsKKyAgICAgY29uc3QgdWludDhfdCAqZG90MXFfYnVmID0gTlVMTDsKKyAKKyAgICAgdWludDMyX3QgcGFja2V0X2hlYWRlciA9IDA7CitAQCAtODI2LDcgKzgyNiw3IEBAIHN0YXRpYyBzc2l6ZV90IHJ0bDgxMzlfZG9fcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90CisgICAgIHN0YXRpYyBjb25zdCB1aW50OF90IGJyb2FkY2FzdF9tYWNhZGRyWzZdID0KKyAgICAgICAgIHsgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiB9OworIAorLSAgICBEUFJJTlRGKCI+Pj4gcmVjZWl2ZWQgbGVuPSVkXG4iLCBzaXplKTsKKysgICAgRFBSSU5URigiPj4+IHJlY2VpdmVkIGxlbj0lenVcbiIsIHNpemUpOworIAorICAgICAvKiB0ZXN0IGlmIGJvYXJkIGNsb2NrIGlzIHN0b3BwZWQgKi8KKyAgICAgaWYgKCFzLT5jbG9ja19lbmFibGVkKQorQEAgLTEwMzUsNyArMTAzNSw3IEBAIHN0YXRpYyBzc2l6ZV90IHJ0bDgxMzlfZG9fcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90CisgCisgICAgICAgICBpZiAoc2l6ZSs0ID4gcnhfc3BhY2UpCisgICAgICAgICB7CistICAgICAgICAgICAgRFBSSU5URigiQysgUnggbW9kZSA6IGRlc2NyaXB0b3IgJWQgc2l6ZSAlZCByZWNlaXZlZCAlZCArIDRcbiIsCisrICAgICAgICAgICAgRFBSSU5URigiQysgUnggbW9kZSA6IGRlc2NyaXB0b3IgJWQgc2l6ZSAlZCByZWNlaXZlZCAlenUgKyA0XG4iLAorICAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLCByeF9zcGFjZSwgc2l6ZSk7CisgCisgICAgICAgICAgICAgcy0+SW50clN0YXR1cyB8PSBSeE92ZXJmbG93OworQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRpYyBzc2l6ZV90IHJ0bDgxMzlfZG9fcmVjZWl2ZShOZXRDbGllbnRTdGF0ZSAqbmMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90CisgICAgICAgICBpZiAoYXZhaWwgIT0gMCAmJiBSWF9BTElHTihzaXplICsgOCkgPj0gYXZhaWwpCisgICAgICAgICB7CisgICAgICAgICAgICAgRFBSSU5URigicnggb3ZlcmZsb3c6IHJ4IGJ1ZmZlciBsZW5ndGggJWQgaGVhZCAweCUwNHggIgorLSAgICAgICAgICAgICAgICAicmVhZCAweCUwNHggPT09IGF2YWlsYWJsZSAweCUwNHggbmVlZCAweCUwNHhcbiIsCisrICAgICAgICAgICAgICAgICJyZWFkIDB4JTA0eCA9PT0gYXZhaWxhYmxlIDB4JTA0eCBuZWVkIDB4JTA0enhcbiIsCisgICAgICAgICAgICAgICAgIHMtPlJ4QnVmZmVyU2l6ZSwgcy0+UnhCdWZBZGRyLCBzLT5SeEJ1ZlB0ciwgYXZhaWwsIHNpemUgKyA4KTsKKyAKKyAgICAgICAgICAgICBzLT5JbnRyU3RhdHVzIHw9IFJ4T3ZlcmZsb3c7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk2My5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC0xNzk2My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTRjZGM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTE3OTYzLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gZTVmZjcyYTgwMDVkZDFkOWMwZjYzZjhhOWNjNDI5OGRmNWJiNzU1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDE1IE9jdCAyMDE4IDE2OjM5OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHBjbmV0OiBmaXggcG9zc2libGUgYnVmZmVyIG92ZXJmbG93CisKK0luIHBjbmV0X3JlY2VpdmUoKSwgd2UgdHJ5IHRvIGFzc2lnbiBzaXplXyB0byBzaXplIHdoaWNoIGNvbnZlcnRzIGZyb20KK3NpemVfdCB0byBpbnRlZ2VyLiBUaGlzIHdpbGwgY2F1c2UgdHJvdWJsZXMgd2hlbiBzaXplXyBpcyBncmVhdGVyCitJTlRfTUFYLCB0aGlzIHdpbGwgbGVhZCBhIG5lZ2F0aXZlIHZhbHVlIGluIHNpemUgYW5kIGl0IGNhbiB0aGVuIHBhc3MKK3RoZSBjaGVjayBvZiBzaXplIDwgTUlOX0JVRl9TSVpFIHdoaWNoIG1heSBsZWFkIG91dCBvZiBib3VuZCBhY2Nlc3MKK2ZvciBib3RoIGJ1ZiBhbmQgYnVmMS4KKworRml4aW5nIGJ5IGNvbnZlcnRpbmcgdGhlIHR5cGUgb2Ygc2l6ZSB0byBzaXplX3QuCisKK0NDOiBhZGRyZXNzQGhpZGRlbgorUmVwb3J0ZWQtYnk6IERhbmllbCBTaGFwaXJhIDxhZGRyZXNzQGhpZGRlbj4KK1Jldmlld2VkLWJ5OiBNaWNoYWVsIFMuIFRzaXJraW4gPGFkZHJlc3NAaGlkZGVuPgorU2lnbmVkLW9mZi1ieTogSmFzb24gV2FuZyA8YWRkcmVzc0BoaWRkZW4+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE4LTA5L21zZzAzMjY4Lmh0bWxdCisKK0NWRTogQ1ZFLTIwMTgtMTc5NjMKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGh3L25ldC9wY25ldC5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2h3L25ldC9wY25ldC5jIGIvaHcvbmV0L3BjbmV0LmMKK2luZGV4IDBjNDQ1NTQuLmQ5YmEwNGIgMTAwNjQ0CistLS0gYS9ody9uZXQvcGNuZXQuYworKysrIGIvaHcvbmV0L3BjbmV0LmMKK0BAIC05ODgsMTQgKzk4OCwxNCBAQCBzc2l6ZV90IHBjbmV0X3JlY2VpdmUoTmV0Q2xpZW50U3RhdGUgKm5jLCBjb25zdCB1aW50OF90ICpidWYsIHNpemVfdCBzaXplXykKKyAgICAgdWludDhfdCBidWYxWzYwXTsKKyAgICAgaW50IHJlbWFpbmluZzsKKyAgICAgaW50IGNyY19lcnIgPSAwOworLSAgICBpbnQgc2l6ZSA9IHNpemVfOworKyAgICBzaXplX3Qgc2l6ZSA9IHNpemVfOworIAorICAgICBpZiAoQ1NSX0RSWChzKSB8fCBDU1JfU1RPUChzKSB8fCBDU1JfU1BORChzKSB8fCAhc2l6ZSB8fAorICAgICAgICAgKENTUl9MT09QKHMpICYmICFzLT5sb29wdGVzdCkpIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorICNpZmRlZiBQQ05FVF9ERUJVRworLSAgICBwcmludGYoInBjbmV0X3JlY2VpdmUgc2l6ZT0lZFxuIiwgc2l6ZSk7CisrICAgIHByaW50ZigicGNuZXRfcmVjZWl2ZSBzaXplPSV6dVxuIiwgc2l6ZSk7CisgI2VuZGlmCisgCisgICAgIC8qIGlmIHRvbyBzbWFsbCBidWZmZXIsIHRoZW4gZXhwYW5kIGl0ICovCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOC03NTUwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTc1NTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MjNkMTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE4LTc1NTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDJhOGZjZDExOWViN2M2YmIzODM3ZmMzNjY5ZWIxYjJkZmIzMWRhZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWNrIFNjaHdhcnR6IDxqYWNrLnNjaHdhcnR6QG9yYWNsZS5jb20+Ci1EYXRlOiBUaHUsIDIxIERlYyAyMDE3IDA5OjI1OjE1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIG11bHRpYm9vdDogYnNzX2VuZF9hZGRyIGNhbiBiZSB6ZXJvCi0KLVRoZSBtdWx0aWJvb3Qgc3BlYyAoaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9ncnViL21hbnVhbC9tdWx0aWJvb3QvKSwKLXNlY3Rpb24gMy4xLjMsIGFsbG93cyBmb3IgYnNzX2VuZF9hZGRyIHRvIGJlIHplcm8uCi0KLUEgemVybyBic3NfZW5kX2FkZHIgc2lnbmlmaWVzIHRoZXJlIGlzIG5vIC5ic3Mgc2VjdGlvbi4KLQotQ1ZFOiBDVkUtMjAxOC03NTUwCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdGRpZmY7aD0yYThmY2QxMTllYjdjNmJiMzgzN2ZjMzY2OWViMWIyZGZiMzFkYWY4XQotCi1TdWdnZXN0ZWQtYnk6IERhbmllbCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWNrIFNjaHdhcnR6IDxqYWNrLnNjaHdhcnR6QG9yYWNsZS5jb20+Ci1SZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KLVJldmlld2VkLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtldmluIFdvbGYgPGt3b2xmQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBody9pMzg2L211bHRpYm9vdC5jIHwgMTggKysrKysrKysrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ody9pMzg2L211bHRpYm9vdC5jIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYwotaW5kZXggNDZkOWM2OGJmNS4uYmI4ZDhlNDYyOSAxMDA2NDQKLS0tLSBhL2h3L2kzODYvbXVsdGlib290LmMKLSsrKyBiL2h3L2kzODYvbXVsdGlib290LmMKLUBAIC0yMzMsMTIgKzIzMyw2IEBAIGludCBsb2FkX211bHRpYm9vdChGV0NmZ1N0YXRlICpmd19jZmcsCi0gICAgICAgICBtaF9lbnRyeV9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjgpOwotIAotICAgICAgICAgaWYgKG1oX2xvYWRfZW5kX2FkZHIpIHsKLS0gICAgICAgICAgICBpZiAobWhfYnNzX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9ic3NfZW5kX2FkZHIgYWRkcmVzc1xuIik7Ci0tICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0gbWhfYnNzX2VuZF9hZGRyIC0gbWhfbG9hZF9hZGRyOwotLQotICAgICAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7Ci0gICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBtaF9sb2FkX2VuZF9hZGRyIGFkZHJlc3NcbiIpOwotICAgICAgICAgICAgICAgICBleGl0KDEpOwotQEAgLTI0OSw4ICsyNDMsMTYgQEAgaW50IGxvYWRfbXVsdGlib290KEZXQ2ZnU3RhdGUgKmZ3X2NmZywKLSAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGtlcm5lbF9maWxlX3NpemVcbiIpOwotICAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IGtlcm5lbF9maWxlX3NpemUgLSBtYl9rZXJuZWxfdGV4dF9vZmZzZXQ7Ci0tICAgICAgICAgICAgbWJfbG9hZF9zaXplID0gbWJfa2VybmVsX3NpemU7Ci0rICAgICAgICAgICAgbWJfbG9hZF9zaXplID0ga2VybmVsX2ZpbGVfc2l6ZSAtIG1iX2tlcm5lbF90ZXh0X29mZnNldDsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChtaF9ic3NfZW5kX2FkZHIpIHsKLSsgICAgICAgICAgICBpZiAobWhfYnNzX2VuZF9hZGRyIDwgKG1oX2xvYWRfYWRkciArIG1iX2xvYWRfc2l6ZSkpIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2Jzc19lbmRfYWRkciBhZGRyZXNzXG4iKTsKLSsgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgbWJfa2VybmVsX3NpemUgPSBtaF9ic3NfZW5kX2FkZHIgLSBtaF9sb2FkX2FkZHI7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIG1iX2tlcm5lbF9zaXplID0gbWJfbG9hZF9zaXplOwotICAgICAgICAgfQotIAotICAgICAgICAgLyogVmFsaWQgaWYgbWhfZmxhZ3Mgc2V0cyBNVUxUSUJPT1RfSEVBREVSX0hBU19WQkUuCi0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ0N2RjNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotcmVxdWlyZSBxZW11LmluYwotCi1pbmhlcml0IHB0ZXN0Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3dpa2kucWVtdS1wcm9qZWN0Lm9yZy9kb3dubG9hZC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXFlbXUtTGltaXQtcGF0aHMtc2VhcmNoZWQtZHVyaW5nLXVzZXItbW9kZS1lbXVsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtbWVtZmQtZml4LWNvbmZpZ3VyZS10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItYXJtLXRyYW5zbGF0ZS1hNjQtdHJlYXQtRElTQVNfVVBEQVRFLWFzLXZhcmlhbnQtb2YtRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLXBzMi1jaGVjay1QUzJRdWV1ZS1wb2ludGVycy1pbi1wb3N0X2xvYWQtcm91dGluZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNWRS0yMDE4LTExODA2LVFFTVUtc2xpcnAtaGVhcC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtNzU1MC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMjYxNy5wYXRjaCBcCi0gICAgICAgICAgICIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrXC4uKilcLnRhciIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxNC1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxNS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYxY2Y4NjJiNjAwN2ViYTRhYzk4MjQ3Nzc2YWYyZTI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5ZGYyMjEzY2VlZDMyZTkxZGFiN2JjOWRkMTljMWFmODNmOTFiYTcyYzdhZWVmNzYwNWRmYWFmODE3MzJjY2IiCi0KLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQltYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci0JZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQotCi0JY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0JIyBEb24ndCBjaGVjayB0aGUgZmlsZSBnZW5yZWF0ZWQgYnkgY29uZmlndXJlCi0Jc2VkIC1pIC1lICcvd2lsZGNhcmQgY29uZmlnLWhvc3QubWFrL2QnIFwKLQkgICAgICAgLWUgJyQgey9lbmRpZi9kfScgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzMuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzMuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NjU0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMy4wLjAuYmIKQEAgLTAsMCArMSw2MCBAQAorcmVxdWlyZSBxZW11LmluYworCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggbWFrZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDQxYzI4ZDJjZjg2ZTE1YTM3ZmE0N2UxNWE3MmZiYWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7ZW5kbGluZT0yNDttZDU9YzA0ZGVmN2FlMzg4NTBlN2QzZWY1NDg1ODgxNTk5MTMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5xZW11Lm9yZy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNkbC5jLWFsbG93LXVzZXItdG8tZGlzYWJsZS1wb2ludGVyLWdyYWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXFlbXUtTGltaXQtcGF0aHMtc2VhcmNoZWQtZHVyaW5nLXVzZXItbW9kZS1lbXVsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtUmV2ZXJ0LWxpbnV4LXVzZXItZml4LW1tYXAtbXVubWFwLW1wcm90ZWN0LW1yZW1hcC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNTc0Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNzk1OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNzk2Mi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNzk2My5wYXRjaCBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgZmlsZTovLzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTMtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YTVjOGRmNTgzNDA2ZWEyNGVmMjViMjM5YzMyNDNlMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZDdhZjY0ZmU4YmQ1ZWE1YzNiZGYxNzEzMWE4Yjg1ODQ5MWJjY2UxZWUzODM5NDI1YTZkOTFmYjgyMWI1NzEzIgorCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIFByZXZlbnQgUUEgd2FybmluZ3MgYWJvdXQgaW5zdGFsbGVkICR7bG9jYWxzdGF0ZWRpcn0vcnVuCisgICAgaWYgWyAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gXTsgdGhlbiBybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW47IGZpCisgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3Bvd2VycGNfcm9tLmJpbiAke0R9JHtkYXRhZGlyfS9xZW11Cit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJbWFrZSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtckwgJHtCfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfQorCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMgLXR5cGUgZiAtbmFtZSAiKi5bU3NoY29kXSIgfCB4YXJncyAtaSBybSAtcmYge30KKworCWNwICR7U30vdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCSMgRG9uJ3QgY2hlY2sgdGhlIGZpbGUgZ2VucmVhdGVkIGJ5IGNvbmZpZ3VyZQorCXNlZCAtaSAtZSAnL3dpbGRjYXJkIGNvbmZpZy1ob3N0Lm1hay9kJyBcCisJICAgICAgIC1lICckIHsvZW5kaWYvZH0nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKaW5kZXggYzk4M2ZiYS4uNGFhZGE1MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKQEAgLTEzLDM4ICsxMywyNiBAQAogZG9faW5zdGFsbCAoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KIAotCWVjaG8gIiMhL2Jpbi9zaCIgPiAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9xZW11d3JhcHBlcgogCXFlbXVfYmluYXJ5PSR7QHFlbXVfdGFyZ2V0X2JpbmFyeShkKX0KLQlxZW11X29wdGlvbnM9JyR7UUVNVV9PUFRJT05TfScKLQllY2hvICIkcWVtdV9iaW5hcnkgJHFlbXVfb3B0aW9ucyBcIlwkQFwiIiA+PiAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS9xZW11d3JhcHBlcgotCWZhbGxiYWNrX3FlbXVfYmluPQotCWNhc2UgJHFlbXVfYmluYXJ5IGluCi0JCSJxZW11LWkzODYiKQotCQkJZmFsbGJhY2tfcWVtdV9iaW49cWVtdS14ODZfNjQKLQkJCTs7Ci0JCSJxZW11LXg4Nl82NCIpCi0JCQlmYWxsYmFja19xZW11X2Jpbj1xZW11LWkzODYKLQkJCTs7Ci0JCSopCi0JCQk7OwotCWVzYWMKKwlxZW11X29wdGlvbnM9JyR7UUVNVV9PUFRJT05TfSAtRSBMRF9MSUJSQVJZX1BBVEg9JEQke2xpYmRpcn06JEQke2Jhc2VfbGliZGlyfScKIAotCWlmIFsgLW4gIiRmYWxsYmFja19xZW11X2JpbiIgXTsgdGhlbgorCWNhdCA+PiAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8ke01MUFJFRklYfXFlbXV3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitzZXQgLXgKIAotCQljYXQgPj4gJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcWVtdXdyYXBwZXIgPDwgRU9GCi1yYz1cJD8KLWlmIFsgXCRyYyA9IDI1NSBdOyB0aGVuCi0JJGZhbGxiYWNrX3FlbXVfYmluICJcJEAiCi0JcmM9XCQ/CitpZiBbICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCAnVHJ1ZScsICdGYWxzZScsIGQpfSA9IEZhbHNlIF07IHRoZW4KKyAgICAgICAgZWNobyAicWVtdXdyYXBwZXI6IHFlbXUgdXNlcm1vZGUgaXMgbm90IHN1cHBvcnRlZCIKIGZpCi1leGl0IFwkcmMKKworCiskcWVtdV9iaW5hcnkgJHFlbXVfb3B0aW9ucyAiXCRAIgogRU9GCiAKLQlmaQotCi0JY2htb2QgK3ggJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcWVtdXdyYXBwZXIKKwljaG1vZCAreCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8ke01MUFJFRklYfXFlbXV3cmFwcGVyCiB9CiAKIFNZU1JPT1RfRElSUyArPSAiJHtiaW5kaXJfY3Jvc3NzY3JpcHRzfSIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xdWlsdC9xdWlsdC5pbmMKaW5kZXggYzdiYjc0MS4uNDhlZDliYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcXVpbHQvcXVpbHQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3F1aWx0L3F1aWx0LmluYwpAQCAtMTYsMjQgKzE2LDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CiAKLUVYVFJBX09FQ09ORl9kYXJ3aW4gKz0gIi0td2l0aG91dC1kYXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1nZXRvcHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCiBDTEVBTkJST0tFTiA9ICIxIgogCi1QQUNLQUdFUyArPSAiZ3VhcmRzIGd1YXJkcy1kb2MiCi1GSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9ICR7ZGF0YWRpcn0vcXVpbHQgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3F1aWx0ICR7bGliZGlyfS9xdWlsdCIKLUZJTEVTX2d1YXJkcyA9ICIke2JpbmRpcn0vZ3VhcmRzIgotRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfS9tYW4xL3F1aWx0LjEgJHtkb2NkaXJ9LyR7QlBOfSIKLUZJTEVTX2d1YXJkcy1kb2MgPSAiJHttYW5kaXJ9L21hbjEvZ3VhcmRzLjEiCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCi0KLUVYVFJBX09FX01BS0VfQVJHU19kYXJ3aW4gPz0gIiIKLUVYVFJBX09FX01BS0VfQVJHUyA/PSAiQlVJTERfUk9PVD0ke0R9IgotCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBlcmw9JyR7VVNSQklOUEFUSH0vZW52IHBlcmwnIC0td2l0aC1wYXRjaD1wYXRjaCIKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfQkFTSD0vYmluL2Jhc2giCkBAIC00OSw5ICszMyw5IEBACiAJc2VkIC1lICdzLF5DT01QQVRfU1lNTElOS1MuKjo9LiosQ09NUEFUX1NZTUxJTktTCTo9LCcgLWkgJHtTfS9NYWtlZmlsZQogfQogCi0jIHF1aWx0IGlnbm9yZXMgREVTVERJUgorIyBxdWlsdCBNYWtlZmlsZXMgaW5zdGFsbCB0byBCVUlMRF9ST09UIGluc3RlYWQgb2YgREVTVERJUgogZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSAke0VYVFJBX09FX01BS0VfQVJHU30gaW5zdGFsbAorCW9lX3J1bm1ha2UgJ0JVSUxEX1JPT1Q9JHtEfScgaW5zdGFsbAogCSMgY2xlYW51cCB1bnBhY2thZ2VkIGZpbGVzCiAJcm0gLXJmICR7RH0vJHtkYXRhZGlyfS9lbWFjcwogfQpAQCAtNjksNiArNTMsMTUgQEAKIAljcCAke1dPUktESVJ9L3Rlc3Quc2ggJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAorUEFDS0FHRVMgKz0gImd1YXJkcyBndWFyZHMtZG9jIgorCitGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9ICR7ZGF0YWRpcn0vcXVpbHQgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3F1aWx0ICR7bGliZGlyfS9xdWlsdCIKK0ZJTEVTX2d1YXJkcyA9ICIke2JpbmRpcn0vZ3VhcmRzIgorRklMRVNfJHtQTn0tZG9jID0gIiR7bWFuZGlyfS9tYW4xL3F1aWx0LjEgJHtkb2NkaXJ9LyR7QlBOfSIKK0ZJTEVTX2d1YXJkcy1kb2MgPSAiJHttYW5kaXJ9L21hbjEvZ3VhcmRzLjEiCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJtYWtlIGZpbGUgc2VkIGdhd2sgZGlmZnV0aWxzIGZpbmR1dGlscyBlZCBwZXJsIFwKICAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKaW5kZXggNTYwNGNiOS4uODJlNzMyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjODJjMTlkYzU4Mzg0M2IxYTk3NWYyZTNmMmUxNTE2NTZhNmYzNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZDA4ZWIwYWUxMzEyZjM0N2Y0OTk0OTQ4MWRhYTdjOTIzNzUyZGYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI3IEZlYiAyMDE3IDA5OjQzOjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTRdIERvIG5vdCBoYXJkY29kZSAibGliL3JwbSIgYXMgdGhlIGluc3RhbGxhdGlvbiBwYXRoIGZvcgorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgImxpYi9ycG0iIGFzIHRoZSBpbnN0YWxsYXRpb24gcGF0aCBmb3IKICBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIG1hY3Jvcy4KIAogVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yNjNdCkBAIC0xNCwxMCArMTQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzE1NWQ5ZjAwLi4yMWI5NWFlNWYgMTAwNjQ0CitpbmRleCAwOWFmN2M0Li45YmQ2OTAzIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDQ3LDcgKzEwNDcsNyBAQCBlbHNlCitAQCAtMTA1NSw3ICsxMDU1LDcgQEAgZWxzZQogICAgICB1c3JwcmVmaXg9JHByZWZpeAogIGZpCiAgCkBAIC0yNywxMCArMjcsMTAgQEAKICAKICBBQ19TVUJTVChPQkpEVU1QKQogZGlmZiAtLWdpdCBhL21hY3Jvcy5pbiBiL21hY3Jvcy5pbgotaW5kZXggZDA4NjI0ODU2Li42OGE5NzJmMWUgMTAwNjQ0CitpbmRleCBhM2FhN2E5Li42MmNlZTVjIDEwMDY0NAogLS0tIGEvbWFjcm9zLmluCiArKysgYi9tYWNyb3MuaW4KLUBAIC05NTQsNyArOTU0LDcgQEAgcGFja2FnZSBvciB3aGVuIGRlYnVnZ2luZyB0aGlzIHBhY2thZ2UuXAorQEAgLTk3MCw3ICs5NzAsNyBAQCBwYWNrYWdlIG9yIHdoZW4gZGVidWdnaW5nIHRoaXMgcGFja2FnZS5cCiAgJV9zaGFyZWRzdGF0ZWRpcgkle19wcmVmaXh9L2NvbQogICVfbG9jYWxzdGF0ZWRpcgkJJXtfcHJlZml4fS92YXIKICAlX2xpYgkJCWxpYgpAQCAtNDAsNyArNDAsNyBAQAogICVfaW5mb2RpcgkJJXtfZGF0YWRpcn0vaW5mbwogICVfbWFuZGlyCQkle19kYXRhZGlyfS9tYW4KIGRpZmYgLS1naXQgYS9ycG0uYW0gYi9ycG0uYW0KLWluZGV4IDUxMjI1ODkyZC4uZTBjODM0ZDM3IDEwMDY0NAoraW5kZXggODJjMmQ3Yy4uNjM0MWI1MSAxMDA2NDQKIC0tLSBhL3JwbS5hbQogKysrIGIvcnBtLmFtCiBAQCAtMSwxMCArMSwxMCBAQApAQCAtNTUsNyArNTUsNCBAQAogK3JwbWNvbmZpZ2RpciA9ICQobGliZGlyKS9ycG0KICAKICAjIExpYnRvb2wgdmVyc2lvbiAoY3VycmVudC1yZXZpc2lvbi1hZ2UpIGZvciBhbGwgb3VyIGxpYnJhcmllcwotIHJwbV92ZXJzaW9uX2luZm8gPSA4OjE6MAotLS0gCi0yLjE1LjEKLQorIHJwbV92ZXJzaW9uX2luZm8gPSA5OjA6MQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1yZXNldC10aGUtUEFUSC1lbnZpcm9ubWVudC12YXJpYWJsZS1iZWZvcmUtcnUucGF0Y2gKaW5kZXggYmYyNGQ0My4uNDFjZGY2ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtcmVzZXQtdGhlLVBBVEgtZW52aXJvbm1lbnQtdmFyaWFibGUtYmVmb3JlLXJ1LnBhdGNoCkBAIC0xLDI1ICsxLDIzIEBACi1Gcm9tIGZmYjUzMDFhODU5NDE0MGFkN2E1OGJjMGYyMDUzYmU4Y2EyYjI5NDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE2NzRiOWNjN2FmNDQ4ZDdjNjc0OGJjMTYzYmYzN2RjMTRhNTdmMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjAgSmFuIDIwMTcgMTM6MzI6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIERvIG5vdCByZXNldCB0aGUgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgcnVubmluZworU3ViamVjdDogW1BBVENIXSBEbyBub3QgcmVzZXQgdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIHJ1bm5pbmcKICBzY3JpcHRsZXRzLgogCiBXZSBhZGQgbG90cyBvZiBuYXRpdmUgc3R1ZmYgaW50byBpdCBhbmQgc2NyaXB0bGV0cyByZWx5IG9uIHRoYXQuCiAKLUFsc28gbmVlZCB0byByZW1vdmUgdGhlIHh4IHRlc3QgbGF0ZXIgaW4gdGhlIGZ1bmN0aW9uIHNpbmNlIHRoZQotdmFsdWUgY291bGQgbm93IGJlIHVzZWQgdW4taW5pdGlhbGlzZWQuCi0KIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBsaWIvcnBtc2NyaXB0LmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvcnBtc2NyaXB0LmMgYi9saWIvcnBtc2NyaXB0LmMKLWluZGV4IDkyZjk0OWZhMi4uN2MxYWE3NWE4IDEwMDY0NAoraW5kZXggNmEzMWUwZC4uMmIwZTQzOCAxMDA2NDQKIC0tLSBhL2xpYi9ycG1zY3JpcHQuYwogKysrIGIvbGliL3JwbXNjcmlwdC5jCi1AQCAtMjAxLDcgKzIwMSw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXJndiwgQVJHVl9jb25zdF90IHByZWZpeGVzLAorQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCBkb1NjcmlwdEV4ZWMoQVJHVl9jb25zdF90IGFyZ3YsIEFSR1ZfY29uc3RfdCBwcmVmaXhlcywKICAJaWYgKGlwYXRoICYmIGlwYXRoWzVdICE9ICclJykKICAJICAgIHBhdGggPSBpcGF0aDsKICAKQEAgLTI4LDEzICsyNiwzIEBACiAgCWZyZWUoaXBhdGgpOwogICAgICB9CiAgCi1AQCAtMjA2LDkgKzIwNiw3IEBAIHN0YXRpYyB2b2lkIGRvU2NyaXB0RXhlYyhBUkdWX2NvbnN0X3QgYXIKLSAJLyogWFhYIERvbid0IG10cmFjZSBpbnRvIGNoaWxkcmVuLiAqLwotIAl1bnNldGVudigiTUFMTE9DX0NIRUNLXyIpOwotIAotLQlpZiAoeHggPT0gMCkgewotIAkgICAgeHggPSBleGVjdihhcmd2WzBdLCBhcmd2KTsKLS0JfQotICAgICB9Ci0gICAgIF9leGl0KDEyNyk7IC8qIGV4aXQgMTI3IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYmFzaCgxKSAqLwotIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZhY3Rvci1vdXQtYW5kLXVuaWZ5LXNldHRpbmctQ0xPRVhFQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY0NDBjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GYWN0b3Itb3V0LWFuZC11bmlmeS1zZXR0aW5nLUNMT0VYRUMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotRnJvbSA5YzNlNWRlMzI0MDU1NGM4ZWExYjI5ZDUyZWVhZGVlNDg0MGZlZmFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTc6Mzc6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIEZhY3RvciBvdXQgYW5kIHVuaWZ5IHNldHRpbmcgQ0xPRVhFQwotCi1Db21taXQgN2E3YzMxZjUgKCJTZXQgRkRfQ0xPRVhFQyBvbiBvcGVuZWQgZmlsZXMgYmVmb3JlIGV4ZWMgZnJvbQotbHVhIHNjcmlwdCBpcyBjYWxsZWQiKSBjb3BpZWQgdGhlIGNvZGUgdGhhdCBzZXRzIENMT0VYRUMgZmxhZyBvbiBhbGwKLXBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSBsaWIvcnBtc2NyaXB0LmMgdG8gbHVhZXh0L2xwb3NpeC5jLAotZXNzZW50aWFsbHkgY3JlYXRpbmcgdHdvIGNvcGllcyBvZiB0aGUgc2FtZSBjb2RlIChtb2R1bG8gY29tbWVudHMKLWFuZCB0aGUgdW51c2VkIGFzc2lnbm1lbnQpLgotCi1UaGlzIGNvbW1pdCBtb3ZlcyB0aGUgZnVuY3Rpb25hbGl0eSBpbnRvIGl0cyBvd24gZnVuY3Rpb24sIHdpdGhvdXQKLWFueSBjb2RlIG1vZGlmaWNhdGlvbnMsIHVzaW5nIHRoZSB2ZXJzaW9uIGZyb20gbHVhZXh0L2xwb3NpeC5jLgotCi1TaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCi0gbGliL3JwbXNjcmlwdC5jICAgICAgICB8IDE4ICsrLS0tLS0tLS0tLS0tLS0tLQotIGx1YWV4dC9scG9zaXguYyAgICAgICAgfCAxMyArKy0tLS0tLS0tLS0tCi0gcnBtaW8vcnBtaW8uYyAgICAgICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSBycG1pby9ycG1pb19pbnRlcm5hbC5oIHwgIDYgKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9ycG1zY3JpcHQuYyBiL2xpYi9ycG1zY3JpcHQuYwotaW5kZXggNzQ3Mzg1YTViLi5iNGNjZDMyNDYgMTAwNjQ0Ci0tLS0gYS9saWIvcnBtc2NyaXB0LmMKLSsrKyBiL2xpYi9ycG1zY3JpcHQuYwotQEAgLTMsNyArMyw2IEBACi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjaW5jbHVkZSA8cnBtL3JwbWZpbGV1dGlsLmg+Ci0gI2luY2x1ZGUgPHJwbS9ycG1tYWNyby5oPgotQEAgLTE0LDYgKzEzLDcgQEAKLSAKLSAjaW5jbHVkZSAicnBtaW8vcnBtbHVhLmgiCi0gI2luY2x1ZGUgImxpYi9ycG1zY3JpcHQuaCIKLSsjaW5jbHVkZSAicnBtaW8vcnBtaW9faW50ZXJuYWwuaCIKLSAKLSAjaW5jbHVkZSAibGliL3JwbXBsdWdpbnMuaCIgICAgIC8qIHJwbSBwbHVnaW5zIGhvb2tzICovCi0gCi1AQCAtMTcwLDI2ICsxNzAsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBTQ1JJUFRfUEFUSCA9ICJQQVRIPS9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluOi91c3IKLSBzdGF0aWMgdm9pZCBkb1NjcmlwdEV4ZWMoQVJHVl9jb25zdF90IGFyZ3YsIEFSR1ZfY29uc3RfdCBwcmVmaXhlcywKLSAJCQlGRF90IHNjcmlwdEZkLCBGRF90IG91dCkKLSB7Ci0tICAgIGludCBmbGFnOwotLSAgICBpbnQgZmRubzsKLSAgICAgaW50IHh4OwotLSAgICBpbnQgb3Blbl9tYXg7Ci0gCi0gICAgIC8qIFNJR1BJUEUgaXMgaWdub3JlZCBpbiBycG0sIHJlc2V0IHRvIGRlZmF1bHQgZm9yIHRoZSBzY3JpcHRsZXQgKi8KLSAgICAgKHZvaWQpIHNpZ25hbChTSUdQSVBFLCBTSUdfREZMKTsKLSAKLS0gICAgLyogWFhYIEZvcmNlIEZEX0NMT0VYRUMgb24gYWxsIGluaGVyaXRlZCBmZG5vJ3MuICovCi0tICAgIG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotLSAgICBpZiAob3Blbl9tYXggPT0gLTEpIHsKLS0Jb3Blbl9tYXggPSAxMDI0OwotLSAgICB9Ci0tICAgIGZvciAoZmRubyA9IDM7IGZkbm8gPCBvcGVuX21heDsgZmRubysrKSB7Ci0tCWZsYWcgPSBmY250bChmZG5vLCBGX0dFVEZEKTsKLS0JaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKLS0JICAgIGNvbnRpbnVlOwotLQl4eCA9IGZjbnRsKGZkbm8sIEZfU0VURkQsIEZEX0NMT0VYRUMpOwotLQkvKiBYWFggVzJETz8gZGVidWcgbXNnIGZvciBpbmhlaXJpdGVkIGZkbm8gdy9vIEZEX0NMT0VYRUMgKi8KLS0gICAgfQotKyAgICBycG1TZXRDbG9zZU9uRXhlYygpOwotIAotICAgICBpZiAoc2NyaXB0RmQgIT0gTlVMTCkgewotIAlpbnQgc2Zkbm8gPSBGaWxlbm8oc2NyaXB0RmQpOwotZGlmZiAtLWdpdCBhL2x1YWV4dC9scG9zaXguYyBiL2x1YWV4dC9scG9zaXguYwotaW5kZXggMGE3YzI2YzcxLi41ZDdhZDNjODcgMTAwNjQ0Ci0tLS0gYS9sdWFleHQvbHBvc2l4LmMKLSsrKyBiL2x1YWV4dC9scG9zaXguYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHV0aW1lLmg+Ci0gI2luY2x1ZGUgPHJwbS9ycG11dGlsLmg+Ci0rI2luY2x1ZGUgInJwbWlvL3JwbWlvX2ludGVybmFsLmgiCi0gCi0gI2RlZmluZSBNWU5BTUUJCSJwb3NpeCIKLSAjZGVmaW5lIE1ZVkVSU0lPTglNWU5BTUUgIiBsaWJyYXJ5IGZvciAiIExVQV9WRVJTSU9OICIgLyBOb3YgMjAwMyIKLUBAIC0zMzUsMjEgKzMzNiwxMSBAQCBzdGF0aWMgaW50IFBleGVjKGx1YV9TdGF0ZSAqTCkJCQkvKiogZXhlYyhwYXRoLFthcmdzXSkgKi8KLSAJY29uc3QgY2hhciAqcGF0aCA9IGx1YUxfY2hlY2tzdHJpbmcoTCwgMSk7Ci0gCWludCBpLG49bHVhX2dldHRvcChMKTsKLSAJY2hhciAqKmFyZ3Y7Ci0tCWludCBmbGFnLCBmZG5vLCBvcGVuX21heDsKLSAKLSAJaWYgKCFoYXZlX2ZvcmtlZCkKLSAJICAgIHJldHVybiBsdWFMX2Vycm9yKEwsICJleGVjIG5vdCBwZXJtaXR0ZWQgaW4gdGhpcyBjb250ZXh0Iik7Ci0gCi0tCW9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotLQlpZiAob3Blbl9tYXggPT0gLTEpIHsKLS0JICAgIG9wZW5fbWF4ID0gMTAyNDsKLS0JfQotLQlmb3IgKGZkbm8gPSAzOyBmZG5vIDwgb3Blbl9tYXg7IGZkbm8rKykgewotLQkgICAgZmxhZyA9IGZjbnRsKGZkbm8sIEZfR0VURkQpOwotLQkgICAgaWYgKGZsYWcgPT0gLTEgfHwgKGZsYWcgJiBGRF9DTE9FWEVDKSkKLS0JCWNvbnRpbnVlOwotLQkgICAgZmNudGwoZmRubywgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7Ci0tCX0KLSsJcnBtU2V0Q2xvc2VPbkV4ZWMoKTsKLSAKLSAJYXJndiA9IG1hbGxvYygobisxKSpzaXplb2YoY2hhciopKTsKLSAJaWYgKGFyZ3Y9PU5VTEwpIHJldHVybiBsdWFMX2Vycm9yKEwsIm5vdCBlbm91Z2ggbWVtb3J5Iik7Ci1kaWZmIC0tZ2l0IGEvcnBtaW8vcnBtaW8uYyBiL3JwbWlvL3JwbWlvLmMKLWluZGV4IGM3Y2JjMzJhYS4uZWExMTFkMmVjIDEwMDY0NAotLS0tIGEvcnBtaW8vcnBtaW8uYwotKysrIGIvcnBtaW8vcnBtaW8uYwotQEAgLTE3NTksMyArMTc1OSwxOSBAQCBESUdFU1RfQ1RYIGZkRHVwRGlnZXN0KEZEX3QgZmQsIGludCBpZCkKLSAKLSAgICAgcmV0dXJuIGN0eDsKLSB9Ci0rCi0rdm9pZCBycG1TZXRDbG9zZU9uRXhlYyh2b2lkKQotK3sKLSsJaW50IGZsYWcsIGZkbm8sIG9wZW5fbWF4OwotKwotKwlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKLSsJaWYgKG9wZW5fbWF4ID09IC0xKSB7Ci0rCQlvcGVuX21heCA9IDEwMjQ7Ci0rCX0KLSsJZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKLSsJCWZsYWcgPSBmY250bChmZG5vLCBGX0dFVEZEKTsKLSsJCWlmIChmbGFnID09IC0xIHx8IChmbGFnICYgRkRfQ0xPRVhFQykpCi0rCQkJY29udGludWU7Ci0rCQlmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKLSsJfQotK30KLWRpZmYgLS1naXQgYS9ycG1pby9ycG1pb19pbnRlcm5hbC5oIGIvcnBtaW8vcnBtaW9faW50ZXJuYWwuaAotaW5kZXggZmJlZDE4M2IwLi4zNzBjYmRjNzUgMTAwNjQ0Ci0tLS0gYS9ycG1pby9ycG1pb19pbnRlcm5hbC5oCi0rKysgYi9ycG1pby9ycG1pb19pbnRlcm5hbC5oCi1AQCAtNDEsNiArNDEsMTIgQEAgRElHRVNUX0NUWCBmZER1cERpZ2VzdChGRF90IGZkLCBpbnQgaWQpOwotIGludCBycG1pb1NsdXJwKGNvbnN0IGNoYXIgKiBmbiwKLSAgICAgICAgICAgICAgICAgdWludDhfdCAqKiBicCwgc3NpemVfdCAqIGJsZW5wKTsKLSAKLSsvKioKLSsgKiBTZXQgY2xvc2Utb24tZXhlYyBmbGFnIGZvciBhbGwgb3BlbmVkIGZpbGUgZGVzY3JpcHRvcnMsIGV4Y2VwdAotKyAqIHN0ZGluL3N0ZG91dC9zdGRlcnIuCi0rICovCi0rdm9pZCBycG1TZXRDbG9zZU9uRXhlYyh2b2lkKTsKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSB9Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtYWRkLW9wdGlvbi1mb3ItZGJ1cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzcxZDliLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkZmI0MjJjNzQ0ZmRjMTgzOGFmYzQwYjhlMWYxNjFiYjQ2MDkzZDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA4IEFwciAyMDE4IDEyOjA2OjQyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogYWRkIG9wdGlvbiBmb3IgZGJ1cwotCi1BZGQgb3B0aW9uIGZvciBkYnVzIHNvIHRoYXQgdXNlcnMgY291bGQgY2hvb3NlIHRvIGJ1aWxkIHdpdGggZGJ1cwotb3Igd2l0aCBubyBkYnVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTEgKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0ZGIxNWM3OTA5Li40OTNmMzkzZDMxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05NzYsMTIgKzk3NiwxNSBAQCBBU19JRihbdGVzdCAiJGVuYWJsZV9wbHVnaW5zIiA9IHllc10sWwotIF0pCi0gQU1fQ09ORElUSU9OQUwoRU5BQkxFX1BMVUdJTlMsW3Rlc3QgIiRlbmFibGVfcGx1Z2lucyIgPSB5ZXNdKQotIAotLXdpdGhfZGJ1cz1ubwotLUFTX0lGKFt0ZXN0ICIkZW5hYmxlX3BsdWdpbnMiICE9IG5vXSxbCi0rQUNfQVJHX1dJVEgoW2RidXNdLCBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kYnVzXSwgW2J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0XSldLAotKyAgICAgICAgICAgIFtdLAotKyAgICAgICAgICAgIFt3aXRoX2RidXM9eWVzXSkKLSsKLStBU19JRihbdGVzdCAiJHdpdGhfZGJ1cyIgIT0gbm9dLFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKFtEQlVTXSwKLSAgICAgW2RidXMtMSA+PSAxLjNdLAotLSAgICBbQUNfREVGSU5FKERCVVMsIDEsIFtCdWlsZCB3aXRoIGRidXMgc3VwcG9ydD9dKSB3aXRoX2RidXM9eWVzXSwKLS0gICAgW3dpdGhfZGJ1cz1ub10pCi0rICAgIFtBQ19ERUZJTkUoREJVUywgMSwgW0J1aWxkIHdpdGggZGJ1cyBzdXBwb3J0P10pXSwKLSsgICAgW0FDX01TR19FUlJPUihbZGJ1cyBub3QgcHJlc2VudCAoLS13aXRob3V0LWRidXMgdG8gZGlzYWJsZSldKV0pCi0gICBBQ19TVUJTVChEQlVTX0NGTEFHUykKLSAgIEFDX1NVQlNUKERCVVNfTElCUykKLSBdKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLXJwbS1ycG1pby5jLXJlc3RyaWN0LXZpcnR1YWwtbWVtb3J5LXVzYWdlLWlmLWxpbWl0LXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ1NDc4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLXJwbS1ycG1pby5jLXJlc3RyaWN0LXZpcnR1YWwtbWVtb3J5LXVzYWdlLWlmLWxpbWl0LXMucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSAwMDY2Yjg2MmJiM2EwOWYzOTI5NWFiZDVkOTcyYTUzYWM4ZGMxNTU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgQmVyZ2luIDxwZXRlckBiZXJnaW5rb25zdWx0LnNlPgorRGF0ZTogV2VkLCAxOSBTZXAgMjAxOCAxNToxMjozMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBycG0vcnBtaW8uYzogcmVzdHJpY3QgdmlydHVhbCBtZW1vcnkgdXNhZ2UgaWYgbGltaXQgc2V0CisKK0Egc29sdXRpb24gdG8gYXZvaWQgT09NIHNpdHVhdGlvbiB3aGVuIHRoZSB2aXJ0dWFsIG1lbW9yeSBpcyByZXN0cmljdGVkCitmb3IgYSB1c2VyICh1bGltaXQgLXYpLiBBcyB0aGUgbHpvcGVuX2ludGVybmFsIGZ1bmN0aW9uIGlzIHJ1biBpbiBwYXJhbGxlbAorb25lIGluc3RhbmNlIHBlciBDUFUgdGhyZWFkIHRoZSBhdmFpbGFibGUgdmlydHVhbCBtZW1vcnkgaXMgbGltaXRlZCBwZXIKK0NQVSB0aHJlYWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbbWVyZ2Ugb2YgbXVsdGl0aHJlYWRpbmcgcGF0Y2hlcyB0byB1cHN0cmVhbV0KKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgQmVyZ2luIDxwZXRlckBiZXJnaW5rb25zdWx0LnNlPgorLS0tCisgcnBtaW8vcnBtaW8uYyB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcnBtaW8vcnBtaW8uYyBiL3JwbWlvL3JwbWlvLmMKK2luZGV4IGUwNTFjOTguLmIzYzU2YjYgMTAwNjQ0CistLS0gYS9ycG1pby9ycG1pby5jCisrKysgYi9ycG1pby9ycG1pby5jCitAQCAtODQ1LDYgKzg0NSw0MCBAQCBzdGF0aWMgTFpGSUxFICpsem9wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbW9kZSwgaW50IGZkLCBpbnQgeHopCisgCQl9CisgI2VuZGlmCisgCisrCQlzdHJ1Y3QgcmxpbWl0IHZpcnR1YWxfbWVtb3J5OworKwkJZ2V0cmxpbWl0KFJMSU1JVF9BUywgJnZpcnR1YWxfbWVtb3J5KTsKKysJCWlmICh2aXJ0dWFsX21lbW9yeS5ybGltX2N1ciAhPSBSTElNX0lORklOSVRZKSB7CisrCQkJY29uc3QgdWludDY0X3QgdmlydHVhbF9tZW1saW1pdCA9IHZpcnR1YWxfbWVtb3J5LnJsaW1fY3VyOworKwkJCWNvbnN0IHVpbnQ2NF90IHZpcnR1YWxfbWVtbGltaXRfcGVyX2NwdV90aHJlYWQgPQorKwkJCQl2aXJ0dWFsX21lbWxpbWl0IC8gbHptYV9jcHV0aHJlYWRzKCk7CisrCQkJdWludDY0X3QgbWVtb3J5X3VzYWdlX3ZpcnQ7CisrCQkJcnBtbG9nKFJQTUxPR19OT1RJQ0UsICJYWjogdmlydHVhbCBtZW1vcnkgcmVzdHJpY3RlZCB0byAlbHUgYW5kICIKKysJCQkgICAgICAgInBlciBDUFUgdGhyZWFkICVsdVxuIiwgdmlydHVhbF9tZW1saW1pdCwgdmlydHVhbF9tZW1saW1pdF9wZXJfY3B1X3RocmVhZCk7CisrCQkJLyoga2VlcCByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNvbXByZXNzaW9uIHRocmVhZHMgdW50aWwgbWVtb3J5CisrCQkJICAgdXNhZ2UgZmFsbHMgYmVsb3cgdGhlIGxpbWl0IHBlciBDUFUgdGhyZWFkKi8KKysJCQl3aGlsZSAoKG1lbW9yeV91c2FnZV92aXJ0ID0gbHptYV9zdHJlYW1fZW5jb2Rlcl9tdF9tZW11c2FnZSgmbXRfb3B0aW9ucykpID4KKysJCQkgICAgICAgdmlydHVhbF9tZW1saW1pdF9wZXJfY3B1X3RocmVhZCkgeworKwkJCQkvKiBJZiBudW1iZXIgb2YgdGhyZWFkcyBnb2VzIGRvd24gdG8gemVybyBsem1hX3N0cmVhbV9lbmNvZGVyIHdpbGwKKysJCQkJICogd2lsbCByZXR1cm4gVUlOVDY0X01BWC4gV2UgbXVzdCBjaGVjayBoZXJlIHRvIGF2b2lkIGFuIGluZmluaXRlIGxvb3AuCisrCQkJCSAqIElmIHdlIGdldCBpbnRvIHNpdHVhdGlvbiB0aGF0IG9uZSB0aHJlYWQgcmVxdWlyZXMgbW9yZSB2aXJ0dWFsIG1lbW9yeQorKwkJCQkgKiB0aGFuIGF2YWlsYWJsZSB3ZSBzZXQgb25lIHRocmVhZCwgcHJpbnQgZXJyb3IgbWVzc2FnZSBhbmQgdHJ5IGFueXdheS4gKi8KKysJCQkJaWYgKC0tbXRfb3B0aW9ucy50aHJlYWRzID09IDApIHsKKysJCQkJCW10X29wdGlvbnMudGhyZWFkcyA9IDE7CisrCQkJCQlycG1sb2coUlBNTE9HX1dBUk5JTkcsCisrCQkJCQkgICAgICAgIlhaOiBDb3VsZCBub3QgYWRqdXN0IG51bWJlciBvZiB0aHJlYWRzIHRvIGdldCBiZWxvdyAiCisrCQkJCQkgICAgICAgInZpcnR1YWwgbWVtb3J5IGxpbWl0ICVsdS4gdXNhZ2UgJWx1XG4iLAorKwkJCQkJICAgICAgIHZpcnR1YWxfbWVtbGltaXRfcGVyX2NwdV90aHJlYWQsIG1lbW9yeV91c2FnZV92aXJ0KTsKKysJCQkJCWJyZWFrOworKwkJCQl9CisrCQkJfQorKwkJCWlmICh0aHJlYWRzICE9IChpbnQpbXRfb3B0aW9ucy50aHJlYWRzKQorKwkJCQlycG1sb2coUlBNTE9HX05PVElDRSwKKysJCQkJICAgICAgICJYWjogQWRqdXN0ZWQgdGhlIG51bWJlciBvZiB0aHJlYWRzIGZyb20gJWQgdG8gJWQgdG8gbm90ICIKKysJCQkJICAgICAgICJleGNlZWQgdGhlIG1lbW9yeSB1c2FnZSBsaW1pdCBvZiAlbHUgYnl0ZXNcbiIsCisrCQkJCSAgICAgICB0aHJlYWRzLCBtdF9vcHRpb25zLnRocmVhZHMsIHZpcnR1YWxfbWVtbGltaXQpOworKworKwkJfQorKworIAkJcmV0ID0gbHptYV9zdHJlYW1fZW5jb2Rlcl9tdCgmbHpmaWxlLT5zdHJtLCAmbXRfb3B0aW9ucyk7CisgCSAgICB9CisgI2VuZGlmCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLU9wdGltaXplLXJwbVNldENsb3NlT25FeGVjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyN2Y4ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSA1ZTZmMDVjZDhkYWQ2YzFlZTZiZDFlNmU0M2YxNzY5NzZjOWMzNDE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTc6NTI6NTYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIE9wdGltaXplIHJwbVNldENsb3NlT25FeGVjCi0KLUluIGNhc2UgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlcyBsaW1pdCBpcyBzZXQgdG9vIGhpZ2gsIGJvdGgKLWx1YWV4dC9QZXhlYygpIGFuZCBsaWIvZG9TY3JpcHRFeGVjKCkgc3BlbmQgd2F5IHRvbyBtdWNoIHRpbWUKLXRyeWluZyB0byBzZXQgRkRfQ0xPRVhFQyBmbGFnIGZvciBhbGwgdGhvc2UgZmlsZSBkZXNjcmlwdG9ycywKLXJlc3VsdGluZyBpbiBzZXZlcmUgaW5jcmVhc2Ugb2YgdGltZSBpdCB0YWtlcyB0byBleGVjdXRlIHNheQotcnBtIG9yIGRuZi4KLQotVGhpcyBiZWNvbWVzIGluY3JlYXNpbmdseSBub3RpY2VhYmxlIHdoZW4gcnVubmluZyB3aXRoIGUuZy4gdW5kZXIKLURvY2tlciwgdGhlIHJlYXNvbiBiZWluZzoKLQotPiAkIGRvY2tlciBydW4gZmVkb3JhIHVsaW1pdCAtbgotPiAxMDQ4NTc2Ci0KLU9uZSBvYnZpb3VzIGZpeCBpcyB0byB1c2UgcHJvY2ZzIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcwotYW5kIGl0ZXJhdGUgb3ZlciBpdC4gTXkgcXVpY2stbi1kaXJ0eSBiZW5jaG1hcmsgc2hvd3MgdGhlIC9wcm9jIGFwcHJvYWNoCi1pcyBhYm91dCAxMHggZmFzdGVyIHRoYW4gaXRlcmF0aW5nIHRocm91Z2ggYSBsaXN0IG9mIGp1c3QgMTAyNCBmZHMsCi1zbyBpdCdzIGFuIGltcHJvdmVtZW50IGV2ZW4gZm9yIGRlZmF1bHQgdWxpbWl0IHZhbHVlcy4KLQotTm90ZSB0aGF0IHRoZSBvbGQgbWV0aG9kIGlzIHN0aWxsIHVzZWQgaW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlLgotCi1XaGlsZSBhdCBpdCwKLQotIDEuIGZpeCB0aGUgZnVuY3Rpb24gYnkgbWFraW5nIHN1cmUgd2UgbW9kaWZ5IChyYXRoZXIgdGhhbiBzZXQpCi0gICAgdGhlIGV4aXN0aW5nIGZsYWdzLiBBcyB0aGUgb25seSBrbm93biBmbGFnIGlzIEZEX0NMT0VYRUMsCi0gICAgdGhpcyBjaGFuZ2UgaXMgY3VycmVudGx5IHB1cmVseSBhZXN0aGV0aWNhbCwgYnV0IGluIGNhc2UKLSAgICBvdGhlciBmbGFncyB3aWxsIGFwcGVhciBpdCB3aWxsIGJlY29tZSBhIHJlYWwgYnVnIGZpeC4KLQotIDIuIGdldCByaWQgb2YgbWFnaWMgbnVtYmVyIDM7IHVzZSBTVERFUlJfRklMRU5PCi0KLVNpZ25lZC1vZmYtYnk6IEtpciBLb2x5c2hraW4gPGtvbHlzaGtpbkBnbWFpbC5jb20+Ci0KLUZpeGVzICM0NDQKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCi0gcnBtaW8vcnBtaW8uYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3JwbWlvL3JwbWlvLmMgYi9ycG1pby9ycG1pby5jCi1pbmRleCBlYTExMWQyZWMuLjU1MzUxYzIyMSAxMDA2NDQKLS0tLSBhL3JwbWlvL3JwbWlvLmMKLSsrKyBiL3JwbWlvL3JwbWlvLmMKLUBAIC0xNzYwLDE4ICsxNzYwLDQzIEBAIERJR0VTVF9DVFggZmREdXBEaWdlc3QoRkRfdCBmZCwgaW50IGlkKQotICAgICByZXR1cm4gY3R4OwotIH0KLSAKLStzdGF0aWMgdm9pZCBzZXRfY2xvZXhlYyhpbnQgZmQpCi0rewotKwlpbnQgZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGRCk7Ci0rCi0rCWlmIChmbGFncyA9PSAtMSB8fCAoZmxhZ3MgJiBGRF9DTE9FWEVDKSkKLSsJCXJldHVybjsKLSsKLSsJZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzIHwgRkRfQ0xPRVhFQyk7Ci0rfQotKwotIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKLSB7Ci0tCWludCBmbGFnLCBmZG5vLCBvcGVuX21heDsKLSsJY29uc3QgaW50IG1pbl9mZCA9IFNUREVSUl9GSUxFTk87IC8qIGRvbid0IHRvdWNoIHN0ZGluL291dC9lcnIgKi8KLSsJaW50IGZkOwotKwotKwlESVIgKmRpciA9IG9wZW5kaXIoIi9wcm9jL3NlbGYvZmQiKTsKLSsJaWYgKGRpciA9PSBOVUxMKSB7IC8qIC9wcm9jIG5vdCBhdmFpbGFibGUgKi8KLSsJCS8qIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgZmRzLCBtaWdodCBiZSBzbG93ICovCi0rCQlpbnQgb3Blbl9tYXggPSBzeXNjb25mKF9TQ19PUEVOX01BWCk7Ci0rCQlpZiAob3Blbl9tYXggPT0gLTEpCi0rCQkJb3Blbl9tYXggPSAxMDI0OwotIAotLQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKLS0JaWYgKG9wZW5fbWF4ID09IC0xKSB7Ci0tCQlvcGVuX21heCA9IDEwMjQ7Ci0rCQlmb3IgKGZkID0gbWluX2ZkICsgMTsgZmQgPCBvcGVuX21heDsgZmQrKykKLSsJCQlzZXRfY2xvZXhlYyhmZCk7Ci0rCi0rCQlyZXR1cm47Ci0gCX0KLS0JZm9yIChmZG5vID0gMzsgZmRubyA8IG9wZW5fbWF4OyBmZG5vKyspIHsKLS0JCWZsYWcgPSBmY250bChmZG5vLCBGX0dFVEZEKTsKLS0JCWlmIChmbGFnID09IC0xIHx8IChmbGFnICYgRkRfQ0xPRVhFQykpCi0tCQkJY29udGludWU7Ci0tCQlmY250bChmZG5vLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKLSsKLSsJLyogaXRlcmF0ZSBvdmVyIGZkcyBvYnRhaW5lZCBmcm9tIC9wcm9jICovCi0rCXN0cnVjdCBkaXJlbnQgKmVudHJ5OwotKwl3aGlsZSAoKGVudHJ5ID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7Ci0rCQlmZCA9IGF0b2koZW50cnktPmRfbmFtZSk7Ci0rCQlpZiAoZmQgPiBtaW5fZmQpCi0rCQkJc2V0X2Nsb2V4ZWMoZmQpOwotIAl9Ci0rCi0rCWNsb3NlZGlyKGRpcik7Ci0rCi0rCXJldHVybjsKLSB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDMtcnBtU2V0Q2xvc2VPbkV4ZWMtdXNlLWdldHJsaW1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5YjQxYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSAzMDdlMjhiNGNiMDhiMDViYzA0NDQ4MjA1OGVlZWJjOWY1OWJiOWE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2lyIEtvbHlzaGtpbiA8a29seXNoa2luQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjkgTWF5IDIwMTggMTg6MDk6MjcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIHJwbVNldENsb3NlT25FeGVjOiB1c2UgZ2V0cmxpbWl0KCkKLQotSW4gY2FzZSAvcHJvYyBpcyBub3QgYXZhaWxhYmxlIHRvIGdldCB0aGUgYWN0dWFsIGxpc3Qgb2Ygb3BlbmVkIGZkcywKLXdlIGZhbGwgYmFjayB0byBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgbGlzdCBvZiBhbGwgcG9zc2libGUgZmRzLgotCi1JdCBpcyBwb3NzaWJsZSB0aGF0IGR1cmluZyB0aGUgY291cnNlIG9mIHRoZSBwcm9ncmFtIGV4ZWN1dGlvbiB0aGUgbGltaXQKLW9uIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgbWlnaHQgYmUgbG93ZXJlZCwgc28gdXNpbmcgdGhlCi1jdXJyZW50IGxpbWl0LCBhcyByZXR1cm5lZCBieSBzeXNjb25mKF9TQ19PUEVOX01BWCksIG1pZ2h0IG9taXQgc29tZQotZmRzLiBUaGVyZWZvcmUsIGl0IGlzIGJldHRlciB0byB1c2UgcmxpbV9tYXggZnJvbSB0aGUgc3RydWN0dXJlCi1maWxsZWQgaW4gYnkgZ2VydGxpbWl0KFJMSU1JVF9OT0ZJTEUpIHRvIG1ha2Ugc3VyZSB3ZSdyZSBjaGVja2luZwotYWxsIGZkcy4KLQotVGhpcyBzbG93cyBkb3duIHRoZSBmdW5jdGlvbiwgYnV0IG9ubHkgaW4gdGhlIGNhc2UgL3Byb2MgaXMgbm90Ci1hdmFpbGFibGUsIHdoaWNoIHNob3VsZCBiZSByYXJlIGluIHByYWN0aWNlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaXIgS29seXNoa2luIDxrb2x5c2hraW5AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzQ0NF0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgotLS0tCi0gcnBtaW8vcnBtaW8uYyB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ycG1pby9ycG1pby5jIGIvcnBtaW8vcnBtaW8uYwotaW5kZXggNTUzNTFjMjIxLi5lMDUxYzk4NjMgMTAwNjQ0Ci0tLS0gYS9ycG1pby9ycG1pby5jCi0rKysgYi9ycG1pby9ycG1pby5jCi1AQCAtMTAsNiArMTAsNyBAQAotICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSsjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gCi0gI2luY2x1ZGUgPHJwbS9ycG1sb2cuaD4KLSAjaW5jbHVkZSA8cnBtL3JwbW1hY3JvLmg+Ci1AQCAtMTc3OCw3ICsxNzc5LDE0IEBAIHZvaWQgcnBtU2V0Q2xvc2VPbkV4ZWModm9pZCkKLSAJRElSICpkaXIgPSBvcGVuZGlyKCIvcHJvYy9zZWxmL2ZkIik7Ci0gCWlmIChkaXIgPT0gTlVMTCkgeyAvKiAvcHJvYyBub3QgYXZhaWxhYmxlICovCi0gCQkvKiBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGZkcywgbWlnaHQgYmUgc2xvdyAqLwotLQkJaW50IG9wZW5fbWF4ID0gc3lzY29uZihfU0NfT1BFTl9NQVgpOwotKwkJc3RydWN0IHJsaW1pdCBybDsKLSsJCWludCBvcGVuX21heDsKLSsKLSsJCWlmIChnZXRybGltaXQoUkxJTUlUX05PRklMRSwgJnJsKSA9PSAwICYmIHJsLnJsaW1fbWF4ICE9IFJMSU1fSU5GSU5JVFkpCi0rCQkJb3Blbl9tYXggPSBybC5ybGltX21heDsKLSsJCWVsc2UKLSsJCQlvcGVuX21heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKLSsKLSAJCWlmIChvcGVuX21heCA9PSAtMSkKLSAJCQlvcGVuX21heCA9IDEwMjQ7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDQtYnVpbGQtcGFjay5jLXJlbW92ZS1zdGF0aWMtbG9jYWwtdmFyaWFibGVzLWZyb20tYnVpbC5wYXRjaAppbmRleCA4OTg5ZGNlLi42NTJlMzBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1Gcm9tIDhjZTlmYmFiMjk5MDYwOWJkYWNlNDU3ZTE0NjE2MDMzNGU5MzFjODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDc5MjY5M2JiOTA3NjhjZmRlNDg5OGU4ZGQzMWVlMWI1ZGU4MDNkMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgOCBKdW4gMjAxNyAxNzowODowOSArMDMwMAotU3ViamVjdDogW1BBVENIIDE0LzE1XSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KLSBidWlsZEhvc3QoKSBhbmQgZ2V0QnVpbGRUaW1lKCkKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQvcGFjay5jOiByZW1vdmUgc3RhdGljIGxvY2FsIHZhcmlhYmxlcyBmcm9tIGJ1aWxkSG9zdCgpCisgYW5kIGdldEJ1aWxkVGltZSgpCiAKIFRoZWlyIHVzZSBpcyBjYXVzaW5nIGRpZmZpY3VsdCB0byBkaWFnbm96ZSBkYXRhIHJhY2VzIHdoZW4gYnVpbGRpbmcgbXVsdGlwbGUKIHBhY2thZ2VzIGluIHBhcmFsbGVsLCBhbmQgaXMgYSBiYWQgaWRlYSBpbiBnZW5lcmFsLCBhcyBpdCBhbHNvIG1ha2VzIGl0IG1vcmUKQEAgLTIwLDcgKzIwLDcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQvYnVpbGQuYyBiL2J1aWxkL2J1aWxkLmMKLWluZGV4IDgxMTUyZTUzZS4uNjAwMWY5ZTUyIDEwMDY0NAoraW5kZXggMTNjM2RmMi4uYjE1NGYwOCAxMDA2NDQKIC0tLSBhL2J1aWxkL2J1aWxkLmMKICsrKyBiL2J1aWxkL2J1aWxkLmMKIEBAIC02LDYgKzYsOCBAQApAQCAtOTksNyArOTksNyBAQAogIAlpZiAoKCh3aGF0ICYgUlBNQlVJTERfUEFDS0FHRVNPVVJDRSkgJiYgIXRlc3QpICYmCiAtCSAgICAocmMgPSBwYWNrYWdlU291cmNlcyhzcGVjLCAmY29va2llKSkpCiArCSAgICAocmMgPSBwYWNrYWdlU291cmNlcyhzcGVjLCAmY29va2llLCBidWlsZFRpbWUsIGhvc3QpKSkKLSAJCXJldHVybiByYzsKKyAJCWdvdG8gZXhpdDsKICAKICAJaWYgKCgod2hhdCAmIFJQTUJVSUxEX1BBQ0tBR0VCSU5BUlkpICYmICF0ZXN0KSAmJgogLQkgICAgKHJjID0gcGFja2FnZUJpbmFyaWVzKHNwZWMsIGNvb2tpZSwgKGRpZEJ1aWxkID09IDApKSkpCkBAIC0xMTYsNyArMTE2LDcgQEAKICAgICAgc3BlYy0+cm9vdERpciA9IE5VTEw7CiAgICAgIGlmIChyYyAhPSBSUE1SQ19PSyAmJiBycG1sb2dHZXROcmVjcygpID4gMCkgewogZGlmZiAtLWdpdCBhL2J1aWxkL3BhY2suYyBiL2J1aWxkL3BhY2suYwotaW5kZXggZGYxNTg3NmZmLi4xN2E0YjA5MDUgMTAwNjQ0CitpbmRleCBkZjE1ODc2Li4xN2E0YjA5IDEwMDY0NAogLS0tIGEvYnVpbGQvcGFjay5jCiArKysgYi9idWlsZC9wYWNrLmMKIEBAIC02LDggKzYsNiBAQApAQCAtMzA1LDcgKzMwNSw3IEBACiAgCS8qIERvIGNoZWNrIFNSUE0gcGFja2FnZSBpZiBlbmFibGVkICovCiAgCWlmIChyYyA9PSBSUE1SQ19PSyAmJiBwa2djaGVja1swXSAhPSAnICcpIHsKIGRpZmYgLS1naXQgYS9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAotaW5kZXggNDM5YjdkM2I1Li4wN2U4MzM4YWQgMTAwNjQ0CitpbmRleCA0MzliN2QzLi4wN2U4MzM4IDEwMDY0NAogLS0tIGEvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAogKysrIGIvYnVpbGQvcnBtYnVpbGRfaW50ZXJuYWwuaAogQEAgLTQyNywxOSArNDI3LDIzIEBAIHJwbVJDIHByb2Nlc3NTb3VyY2VGaWxlcyhycG1TcGVjIHNwZWMsIHJwbUJ1aWxkUGtnRmxhZ3MgcGtnRmxhZ3MpOwpAQCAtMzM0LDYgKzMzNCwzIEBACiAgCiAgUlBNX0dOVUNfSU5URVJOQUwKICBpbnQgYWRkTGFuZ1RhZyhycG1TcGVjIHNwZWMsIEhlYWRlciBoLCBycG1UYWdWYWwgdGFnLAotLS0gCi0yLjE0LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEwM2EwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBSUE0gcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSIKLURFU0NSSVBUSU9OID0gIlRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIGlzIGEgcG93ZXJmdWwgY29tbWFuZCBsaW5lIGRyaXZlbiBcCi1wYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGNhcGFibGUgb2YgaW5zdGFsbGluZywgdW5pbnN0YWxsaW5nLCBcCi12ZXJpZnlpbmcsIHF1ZXJ5aW5nLCBhbmQgdXBkYXRpbmcgc29mdHdhcmUgcGFja2FnZXMuIEVhY2ggc29mdHdhcmUgXAotcGFja2FnZSBjb25zaXN0cyBvZiBhbiBhcmNoaXZlIG9mIGZpbGVzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgXAotdGhlIHBhY2thZ2UgbGlrZSBpdHMgdmVyc2lvbiwgYSBkZXNjcmlwdGlvbiwgZXRjLiIKLQotU1VNTUFSWV8ke1BOfS1kZXYgPSAiRGV2ZWxvcG1lbnQgZmlsZXMgZm9yIG1hbmlwdWxhdGluZyBSUE0gcGFja2FnZXMiCi1ERVNDUklQVElPTl8ke1BOfS1kZXYgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBSUE0gQyBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMuIFRoZXNlIFwKLWRldmVsb3BtZW50IGZpbGVzIHdpbGwgc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2Ygd3JpdGluZyBwcm9ncmFtcyB0aGF0IFwKLW1hbmlwdWxhdGUgUlBNIHBhY2thZ2VzIGFuZCBkYXRhYmFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbnRlbmRlZCB0byBcCi1zaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBncmFwaGljYWwgcGFja2FnZSBtYW5hZ2VycyBvciBhbnkgXAotb3RoZXIgdG9vbHMgdGhhdCBuZWVkIGFuIGludGltYXRlIGtub3dsZWRnZSBvZiBSUE0gcGFja2FnZXMgaW4gb3JkZXIgXAotdG8gZnVuY3Rpb24uIgotCi1TVU1NQVJZX3B5dGhvbjMtcnBtID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbnVwdWxhdGUgUlBNIHBhY2thZ2VzIgotREVTQ1JJUFRJT05fcHl0aG9uMy1ycG0gPSAiVGhlIHB5dGhvbjMtcnBtIHBhY2thZ2UgY29udGFpbnMgYSBtb2R1bGUgdGhhdCBwZXJtaXRzIGFwcGxpY2F0aW9ucyBcCi13cml0dGVuIGluIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UgXAotc3VwcGxpZWQgYnkgdGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgbGlicmFyaWVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ycG0ub3JnIgotCi0jIGxpYnJhcmllcyBhcmUgYWxzbyBMR1BMIC0gaG93IHRvIGV4cHJlc3MgdGhpcz8KLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMwYmYwMTdjMGZkMTkyMGU2MTU4YTMzM2FjYWJmZDRhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtO2JyYW5jaD1ycG0tNC4xNC54IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC1hbi11bnNhdGlzZmlhYmxlLWRlcGVuZGVuY3ktd2hlbi1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWNvbmZpZy1maWxlcy1mcm9tLUhPTUUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWNyb3NzLWluc3RhbGxpbmctZXhlY3V0ZS1wYWNrYWdlLXNjcmlwdGxldHMtd2l0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1zdXBwb3J0LWZvci1wcmVmaXhpbmctZXRjLWZyb20tUlBNX0VUQ0NPTkZJR0RJUi0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1jb2xvci1zZXR0aW5nLWZvci1taXBzNjRfbjMyLWJpbmFyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1kYnVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmFjdG9yLW91dC1hbmQtdW5pZnktc2V0dGluZy1DTE9FWEVDLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItT3B0aW1pemUtcnBtU2V0Q2xvc2VPbkV4ZWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1ycG1TZXRDbG9zZU9uRXhlYy11c2UtZ2V0cmxpbWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1QRSA9ICIxIgotU1JDUkVWID0gImJmZWUxNDEwYWY1MWMxY2M5NzI0NzkxZmI4ZDk4NTI2MGE2MjEwMmIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCi1leHBvcnQgUFlUSE9OX0FCSQotCi0jIE9FLWNvcmUgcGF0Y2hlcyBhdXRvcmVjb25mIHRvIGFkZGl0aW9uYWxseSBydW4gZ251LWNvbmZpZ2l6ZSwgd2hpY2ggZmFpbHMgd2l0aCB0aGlzIHJlY2lwZQotRVhUUkFfQVVUT1JFQ09ORl9hcHBlbmQgPSAiIC0tZXhjbHVkZT1nbnUtY29uZmlnaXplIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtbmxzIgotCi0jIC0tc3lzY29uZmRpciBwcmV2ZW50cyBycG0gZnJvbSBhdHRlbXB0aW5nIHRvIGFjY2VzcyBtYWNoaW5lLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gaW4gc3lzcm9vdC9ldGM7IHdlIG5lZWQgdG8gaGF2ZSBpdCBpbiByb290ZnMKLSMKLSMgLS1sb2NhbHN0YXRlZGlyIHByZXZlbnRzIHJwbSBmcm9tIHdyaXRpbmcgaXRzIGRhdGFiYXNlIHRvIG5hdGl2ZSBzeXNyb290IHdoZW4gYnVpbGRpbmcgaW1hZ2VzCi0jCi0jIERpc2FibGUgZGJ1cyBmb3IgbmF0aXZlLCBzbyB0aGF0IHJwbSBkb2Vzbid0IGF0dGVtcHQgdG8gaW5oaWJpdCBzaHV0ZG93biB2aWEgc2Vzc2lvbiBkYnVzIGV2ZW4gd2hlbiBwbHVnaW5zIHN1cHBvcnQgaXMgZW5hYmxlZC4KLSMgQWxzbyBkaXNhYmxlIHBsdWdpbnMgYnkgZGVmYXVsdCBmb3IgbmF0aXZlLgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tc3lzY29uZmRpcj0vZXRjIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIC0td2l0aG91dC1kYnVzIC0tZGlzYWJsZS1wbHVnaW5zIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC0tc3lzY29uZmRpcj0vZXRjIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIC0td2l0aG91dC1kYnVzIC0tZGlzYWJsZS1wbHVnaW5zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2ltYWV2bV0gPSAiLS13aXRoLWltYWV2bSwsaW1hLWV2bS11dGlscyIKLQotIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi0jIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAotCi1XUkFQUEVSX1RPT0xTID0gIiBcCi0gICAke2JpbmRpcn0vcnBtIFwKLSAgICR7YmluZGlyfS9ycG0yYXJjaGl2ZSBcCi0gICAke2JpbmRpcn0vcnBtMmNwaW8gXAotICAgJHtiaW5kaXJ9L3JwbWJ1aWxkIFwKLSAgICR7YmluZGlyfS9ycG1kYiBcCi0gICAke2JpbmRpcn0vcnBtZ3JhcGggXAotICAgJHtiaW5kaXJ9L3JwbWtleXMgXAotICAgJHtiaW5kaXJ9L3JwbXNpZ24gXAotICAgJHtiaW5kaXJ9L3JwbXNwZWMgXAotICAgJHtsaWJkaXJ9L3JwbS9ycG1kZXBzIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICBmb3IgdG9vbCBpbiAke1dSQVBQRVJfVE9PTFN9OyBkbwotICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0gXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0VUQ0NPTkZJR0RJUj0ke1NUQUdJTkdfRElSX05BVElWRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9JHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtkYXRhZGlyX25hdGl2ZX0vbWlzYy9tYWdpYy5tZ2MgXAotICAgICAgICAgICAgICAgICAgICAgICAgUlBNX05PX0NIUk9PVF9GT1JfU0NSSVBUUz0xCi0gICAgICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgICAgICBmb3IgdG9vbCBpbiAke1dSQVBQRVJfVE9PTFN9OyBkbwotICAgICAgICAgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0kdG9vbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBSUE1fRVRDQ09ORklHRElSPSckJ3tSUE1fRVRDQ09ORklHRElSLSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignc3lzY29uZmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS8uLn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgTUFHSUM9J2BkaXJuYW1lICQnJ3JlYWxwYXRoYCcvJHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdkYXRhZGlyJywgVHJ1ZSksIGQuZ2V0VmFyKCdiaW5kaXInLCBUcnVlKSl9L21pc2MvbWFnaWMubWdjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQotICAgICAgICBkb25lCi0KLSAgICAgICAgcm0gLXJmICR7RH0vdmFyCi19Ci0KLSMgUnBtJ3MgbWFrZSBpbnN0YWxsIGNyZWF0ZXMgdmFyL3RtcCB3aGljaCBjbGFzaGVzIHdpdGggYmFzZS1maWxlcyBwYWNrYWdpbmcKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBybSAtcmYgJHtEfS92YXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCi0KLQlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKLQkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkgXAotCSAgICAke0R9JHtsaWJkaXJ9L3JwbS9weXRob24tbWFjcm8taGVscGVyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnBtLXBsdWdpbnMvKi5zbyBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyoubGEgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICJweXRob24zLXJwbSIKLVBST1ZJREVTICs9ICJweXRob24zLXJwbSIKLUZJTEVTX3B5dGhvbjMtcnBtID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3JwbS8qIgotCi0jIHJwbSA1Lnggd2FzIHBhY2thZ2luZyB0aGUgcnBtIGJ1aWxkIHRvb2xzIHNlcGFyYXRlbHkKLVJQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgotCi1QQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLSMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgotcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCi0JICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwZmU0ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLmJiCkBAIC0wLDAgKzEsMTUxIEBACitTVU1NQVJZID0gIlRoZSBSUE0gcGFja2FnZSBtYW5hZ2VtZW50IHN5c3RlbSIKK0RFU0NSSVBUSU9OID0gIlRoZSBSUE0gUGFja2FnZSBNYW5hZ2VyIChSUE0pIGlzIGEgcG93ZXJmdWwgY29tbWFuZCBsaW5lIGRyaXZlbiBcCitwYWNrYWdlIG1hbmFnZW1lbnQgc3lzdGVtIGNhcGFibGUgb2YgaW5zdGFsbGluZywgdW5pbnN0YWxsaW5nLCBcCit2ZXJpZnlpbmcsIHF1ZXJ5aW5nLCBhbmQgdXBkYXRpbmcgc29mdHdhcmUgcGFja2FnZXMuIEVhY2ggc29mdHdhcmUgXAorcGFja2FnZSBjb25zaXN0cyBvZiBhbiBhcmNoaXZlIG9mIGZpbGVzIGFsb25nIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgXAordGhlIHBhY2thZ2UgbGlrZSBpdHMgdmVyc2lvbiwgYSBkZXNjcmlwdGlvbiwgZXRjLiIKKworU1VNTUFSWV8ke1BOfS1kZXYgPSAiRGV2ZWxvcG1lbnQgZmlsZXMgZm9yIG1hbmlwdWxhdGluZyBSUE0gcGFja2FnZXMiCitERVNDUklQVElPTl8ke1BOfS1kZXYgPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBSUE0gQyBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMuIFRoZXNlIFwKK2RldmVsb3BtZW50IGZpbGVzIHdpbGwgc2ltcGxpZnkgdGhlIHByb2Nlc3Mgb2Ygd3JpdGluZyBwcm9ncmFtcyB0aGF0IFwKK21hbmlwdWxhdGUgUlBNIHBhY2thZ2VzIGFuZCBkYXRhYmFzZXMuIFRoZXNlIGZpbGVzIGFyZSBpbnRlbmRlZCB0byBcCitzaW1wbGlmeSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBncmFwaGljYWwgcGFja2FnZSBtYW5hZ2VycyBvciBhbnkgXAorb3RoZXIgdG9vbHMgdGhhdCBuZWVkIGFuIGludGltYXRlIGtub3dsZWRnZSBvZiBSUE0gcGFja2FnZXMgaW4gb3JkZXIgXAordG8gZnVuY3Rpb24uIgorCitTVU1NQVJZX3B5dGhvbjMtcnBtID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbnVwdWxhdGUgUlBNIHBhY2thZ2VzIgorREVTQ1JJUFRJT05fcHl0aG9uMy1ycG0gPSAiVGhlIHB5dGhvbjMtcnBtIHBhY2thZ2UgY29udGFpbnMgYSBtb2R1bGUgdGhhdCBwZXJtaXRzIGFwcGxpY2F0aW9ucyBcCit3cml0dGVuIGluIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdG8gdXNlIHRoZSBpbnRlcmZhY2UgXAorc3VwcGxpZWQgYnkgdGhlIFJQTSBQYWNrYWdlIE1hbmFnZXIgbGlicmFyaWVzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ycG0ub3JnIgorCisjIGxpYnJhcmllcyBhcmUgYWxzbyBMR1BMIC0gaG93IHRvIGV4cHJlc3MgdGhpcz8KK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMwYmYwMTdjMGZkMTkyMGU2MTU4YTMzM2FjYWJmZDRhIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtO2JyYW5jaD1ycG0tNC4xNC54IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC1hbi11bnNhdGlzZmlhYmxlLWRlcGVuZGVuY3ktd2hlbi1idWlsZGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWNvbmZpZy1maWxlcy1mcm9tLUhPTUUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWNyb3NzLWluc3RhbGxpbmctZXhlY3V0ZS1wYWNrYWdlLXNjcmlwdGxldHMtd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXJlc2V0LXRoZS1QQVRILWVudmlyb25tZW50LXZhcmlhYmxlLWJlZm9yZS1ydS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1zdXBwb3J0LWZvci1wcmVmaXhpbmctZXRjLWZyb20tUlBNX0VUQ0NPTkZJR0RJUi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1jb2xvci1zZXR0aW5nLWZvci1taXBzNjRfbjMyLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwbS1ycG1pby5jLXJlc3RyaWN0LXZpcnR1YWwtbWVtb3J5LXVzYWdlLWlmLWxpbWl0LXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BFID0gIjEiCitTUkNSRVYgPSAiNzUzZjY5NDFkYzMyZTk0MDQ3YjdjZmU3MTNkZGQ2MDRhODEwYjRkYiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogYnppcDIgZGJ1cyBlbGZ1dGlscyBweXRob24zIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKK2V4cG9ydCBQWVRIT05fQUJJCisKKyMgT0UtY29yZSBwYXRjaGVzIGF1dG9yZWNvbmYgdG8gYWRkaXRpb25hbGx5IHJ1biBnbnUtY29uZmlnaXplLCB3aGljaCBmYWlscyB3aXRoIHRoaXMgcmVjaXBlCitFWFRSQV9BVVRPUkVDT05GX2FwcGVuZCA9ICIgLS1leGNsdWRlPWdudS1jb25maWdpemUiCisKK0VYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0td2l0aG91dC1sdWEgLS1lbmFibGUtcHl0aG9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1ubHMiCisKKyMgLS1zeXNjb25mZGlyIHByZXZlbnRzIHJwbSBmcm9tIGF0dGVtcHRpbmcgdG8gYWNjZXNzIG1hY2hpbmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBpbiBzeXNyb290L2V0Yzsgd2UgbmVlZCB0byBoYXZlIGl0IGluIHJvb3RmcworIworIyAtLWxvY2Fsc3RhdGVkaXIgcHJldmVudHMgcnBtIGZyb20gd3JpdGluZyBpdHMgZGF0YWJhc2UgdG8gbmF0aXZlIHN5c3Jvb3Qgd2hlbiBidWlsZGluZyBpbWFnZXMKKyMKKyMgRGlzYWJsZSBkYnVzIGZvciBuYXRpdmUsIHNvIHRoYXQgcnBtIGRvZXNuJ3QgYXR0ZW1wdCB0byBpbmhpYml0IHNodXRkb3duIHZpYSBzZXNzaW9uIGRidXMgZXZlbiB3aGVuIHBsdWdpbnMgc3VwcG9ydCBpcyBlbmFibGVkLgorIyBBbHNvIGRpc2FibGUgcGx1Z2lucyBieSBkZWZhdWx0IGZvciBuYXRpdmUuCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1zeXNjb25mZGlyPS9ldGMgLS1sb2NhbHN0YXRlZGlyPS92YXIgLS1kaXNhYmxlLXBsdWdpbnMiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLS1zeXNjb25mZGlyPS9ldGMgLS1sb2NhbHN0YXRlZGlyPS92YXIgLS1kaXNhYmxlLXBsdWdpbnMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbaW1hZXZtXSA9ICItLXdpdGgtaW1hZXZtLCxpbWEtZXZtLXV0aWxzIgorCitBU05FRURFRCA9ICIiCisKKyMgRGlyZWN0IHJwbS1uYXRpdmUgdG8gcmVhZCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorIyBsaWJtYWdpYyBhbHNvIGhhcyBzeXNyb290IHBhdGggY29udGFtaW5hdGlvbiwgc28gb3ZlcnJpZGUgaXQKKworV1JBUFBFUl9UT09MUyA9ICIgXAorICAgJHtiaW5kaXJ9L3JwbSBcCisgICAke2JpbmRpcn0vcnBtMmFyY2hpdmUgXAorICAgJHtiaW5kaXJ9L3JwbTJjcGlvIFwKKyAgICR7YmluZGlyfS9ycG1idWlsZCBcCisgICAke2JpbmRpcn0vcnBtZGIgXAorICAgJHtiaW5kaXJ9L3JwbWdyYXBoIFwKKyAgICR7YmluZGlyfS9ycG1rZXlzIFwKKyAgICR7YmluZGlyfS9ycG1zaWduIFwKKyAgICR7YmluZGlyfS9ycG1zcGVjIFwKKyAgICR7bGliZGlyfS9ycG0vcnBtZGVwcyBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgZm9yIHRvb2wgaW4gJHtXUkFQUEVSX1RPT0xTfTsgZG8KKyAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9FVENDT05GSUdESVI9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSR7U1RBR0lOR19ESVJfTkFUSVZFfSR7ZGF0YWRpcl9uYXRpdmV9L21pc2MvbWFnaWMubWdjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJQTV9OT19DSFJPT1RfRk9SX1NDUklQVFM9MQorICAgICAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAgICAgZm9yIHRvb2wgaW4gJHtXUkFQUEVSX1RPT0xTfTsgZG8KKyAgICAgICAgICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHRvb2wgXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2xpYmRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgUlBNX0VUQ0NPTkZJR0RJUj0nJCd7UlBNX0VUQ0NPTkZJR0RJUi0nYGRpcm5hbWUgJCcncmVhbHBhdGhgJy8ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ3N5c2NvbmZkaXInLCBUcnVlKSwgZC5nZXRWYXIoJ2JpbmRpcicsIFRydWUpKX0vLi59IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1BR0lDPSdgZGlybmFtZSAkJydyZWFscGF0aGAnLyR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignZGF0YWRpcicsIFRydWUpLCBkLmdldFZhcignYmluZGlyJywgVHJ1ZSkpfS9taXNjL21hZ2ljLm1nYyBcCisgICAgICAgICAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKKyAgICAgICAgZG9uZQorCisgICAgICAgIHJtIC1yZiAke0R9L3ZhcgorfQorCisjIFJwbSdzIG1ha2UgaW5zdGFsbCBjcmVhdGVzIHZhci90bXAgd2hpY2ggY2xhc2hlcyB3aXRoIGJhc2UtZmlsZXMgcGFja2FnaW5nCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgcm0gLXJmICR7RH0vdmFyCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3JvcworCisJc2VkIC1pIC1lICdzfC91c3IvYmluL3B5dGhvbnwke1VTUkJJTlBBVEh9L2VudiAke1BZVEhPTl9QTn18JyBcCisJICAgICR7RH0ke2xpYmRpcn0vcnBtL3B5dGhvbmRpc3RkZXBzLnB5IFwKKwkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uLW1hY3JvLWhlbHBlcgorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3JwbS1wbHVnaW5zLyouc28gXAorICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9ycG0tcGx1Z2lucy8qLmxhIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAicHl0aG9uMy1ycG0iCitQUk9WSURFUyArPSAicHl0aG9uMy1ycG0iCitGSUxFU19weXRob24zLXJwbSA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ycG0vKiIKKworIyBycG0gNS54IHdhcyBwYWNrYWdpbmcgdGhlIHJwbSBidWlsZCB0b29scyBzZXBhcmF0ZWx5CitSUFJPVklERVNfJHtQTn0gKz0gInJwbS1idWlsZCIKKworUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIHB5dGhvbjMtY29yZSIKKworUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJycG1fcGFja2FnZV9wcmVwcm9jZXNzIgorCisjIERvIG5vdCBzcGVjaWZ5IGEgc3lzcm9vdCB3aGVuIGNvbXBpbGluZyBvbiBhIHRhcmdldC4KK3JwbV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgeworCXNlZCAtaSAtZSAnczotLXN5c3Jvb3RbXiBdKjo6ZycgXAorCSAgICAke1BLR0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luYy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YzAyM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJGaWxlIHN5bmNocm9uaXphdGlvbiB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9yc3luYy5zYW1iYS5vcmcvYnVnemlsbGEuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1ERVBFTkRTID0gInBvcHQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5zYW1iYS5vcmcvcHViLyR7QlBOfS9zcmMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3JzeW5jZC5jb25mIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnN5bmNkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLX0KLQotRVhUUkFfT0VNQUtFPSdTVFJJUD0iIicKLQotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKaW5kZXggODRhMDI1OC4uMjljYjIzMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnN5bmMvcnN5bmNfMy4xLjMuYmIKQEAgLTEsMjQgKzEsMzcgQEAKLXJlcXVpcmUgcnN5bmMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tYWtlZmlsZS1uby1yZWJ1aWxkLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTU4MWE1ODhmZGU5ZDg5ZjZiYzYyMDFlODEyOWFmYWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVjYzU1NGVmZWM1ZmRhYWQ3MGRlOTIxY2Q1YTVlZWI2YzI5YTk1NTI0YzcxNWYzYmJmODQ5MjM1YjA4MDBjMCIKLQorU1VNTUFSWSA9ICJGaWxlIHN5bmNocm9uaXphdGlvbiB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3JzeW5jLnNhbWJhLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yc3luYy5zYW1iYS5vcmcvYnVnemlsbGEuaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgogIyBHUEx2MisgKDw8IDMuMC4wKSwgR1BMdjMrICg+PSAzLjAuMCkKIExJQ0VOU0UgPSAiR1BMdjMrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCiAKK0RFUEVORFMgPSAicG9wdCIKKworU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLnNhbWJhLm9yZy9wdWIvJHtCUE59L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnN5bmNkLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbWFrZWZpbGUtbm8tcmVidWlsZC5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTgxYTU4OGZkZTlkODlmNmJjNjIwMWU4MTI5YWZhZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NWNjNTU0ZWZlYzVmZGFhZDcwZGU5MjFjZDVhNWVlYjZjMjlhOTU1MjRjNzE1ZjNiYmY4NDkyMzViMDgwMGMwIgorCitpbmhlcml0IGF1dG90b29scworCiBQQUNLQUdFQ09ORklHID8/PSAiYWNsIGF0dHIgXAogICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAogIgorCiBQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLXN1cHBvcnQsLS1kaXNhYmxlLWFjbC1zdXBwb3J0LGFjbCwiCiBQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0tZW5hYmxlLXhhdHRyLXN1cHBvcnQsLS1kaXNhYmxlLXhhdHRyLXN1cHBvcnQsYXR0ciwiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgogCiAjIEJ5IGRlZmF1bHQsIGlmIGNyb3NzY29tcGlsaW5nLCByc3luYyBkaXNhYmxlcyBhIG51bWJlciBvZgogIyBjYXBhYmlsaXRpZXMsIGhhcmRsaW5raW5nIHN5bWxpbmtzIGFuZCBzcGVjaWFsIGZpbGVzIChpLmUuIGRldmljZXMpCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAicnN5bmNfY3ZfY2FuX2hhcmRsaW5rX3NwZWNpYWw9eWVzIHJzeW5jX2N2X2Nhbl9oYXJkbGlua19zeW1saW5rPXllcyIKIAorRVhUUkFfT0VNQUtFID0gJ1NUUklQPSIiJworCiAjIHJzeW5jIDMuMCB1c2VzIGNvbmZpZ3VyZS5zaCBpbnN0ZWFkIG9mIGNvbmZpZ3VyZSwgYW5kCiAjIG1ha2VmaWxlIGNoZWNrcyB0aGUgZXhpc3RlbmNlIG9mIGNvbmZpZ3VyZS5zaAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewpAQCAtMjksNCArNDIsOSBAQAogCWNwIC1mICR7U30vY29uZmlndXJlICR7U30vY29uZmlndXJlLnNoCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yc3luY2QuY29uZiAke0R9JHtzeXNjb25mZGlyfQorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCmluZGV4IGZkMzkxMWIuLjVhNWJlZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtMTEsNyArMTEsNyBAQAogICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zNDA5NDhlMTg4MmU1Nzk3MzE4NDFiZjQ5Y2RjMjJjMSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9OGY4NzFmM2YwMzczMmMwMThhNWZhOWIxODU5NTgyMzEgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9MjNhNzliYjRjMWE0MGY2Y2M5YmNiNmY0ZTdjMzk3OTkgXAogIgogCiBERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBnZGJtIHJlYWRsaW5lIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE4LTEwMDAwNzMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTgtMTAwMDA3My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmZhMWI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE4LTEwMDAwNzMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAxYjkzMWZjMDNiODE5YjlhMDIxNGJlM2VhY2E4NDRlZjUzNDE3NWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9uYXRoYW4gQ2xhdWRpdXMgPGpjbGF1ZGl1c0Btb3ppbGxhLmNvbT4KK0RhdGU6IFdlZCwgNyBGZWIgMjAxOCAyMzo1NDo1MiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBOb24td29ya2luZyBwYXRjaCBmb3IgZGVkdWNpbmcgc3ltbGlua2VkIGJhc2UtZGlycworCistLS0KK0NWRTogQ1ZFLTIwMTgtMTAwMDA3MworCitGaXhlZCBpbiBydWJ5IDIuNy42LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXRodWIuY29tL3J1YnlnZW1zL3J1YnlnZW1zL2NvbW1pdC8xYjkzMWZjLi4uXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGxpYi9ydWJ5Z2Vtcy9wYWNrYWdlLnJiIHwgICAgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYi9ydWJ5Z2Vtcy9wYWNrYWdlLnJiIGIvbGliL3J1YnlnZW1zL3BhY2thZ2UucmIKK2luZGV4IGRlZGU5NTkuLmNiOWM3NGEgMTAwNjQ0CistLS0gYS9saWIvcnVieWdlbXMvcGFja2FnZS5yYgorKysrIGIvbGliL3J1YnlnZW1zL3BhY2thZ2UucmIKK0BAIC00MjEsNiArNDIxLDggQEAgRU9NCisgICAgIGRlc3RpbmF0aW9uX2RpciA9IEZpbGUuZXhwYW5kX3BhdGggZGVzdGluYXRpb25fZGlyCisgCisgICAgIGRlc3RpbmF0aW9uID0gRmlsZS5qb2luIGRlc3RpbmF0aW9uX2RpciwgZmlsZW5hbWUKKysgICAgZGVzdGluYXRpb24gPSBGaWxlLnJlYWxwYXRoIGRlc3RpbmF0aW9uIGlmCisrICAgICAgRmlsZS5yZXNwb25kX3RvPyA6cmVhbHBhdGgKKyAgICAgZGVzdGluYXRpb24gPSBGaWxlLmV4cGFuZF9wYXRoIGRlc3RpbmF0aW9uCisgCisgICAgIHJhaXNlIEdlbTo6UGFja2FnZTo6UGF0aEVycm9yLm5ldyhkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25fZGlyKSB1bmxlc3MKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYzdmMmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotcmVxdWlyZSBydWJ5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImY0NzExZjg1NmZlMTRkZTIyMmI5ZGEzZDNiOGVmYTg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2ZTZmMzYzMGYxODg4ZWI2NTNiMTVmYTgxMWQ3N2I1YjFkZjZmZDdhM2FmNDM2YjM0M2NmZTRmNDUwM2YyYWIiCi0KLSMgaXQncyB1bmtub3duIHRvIGNvbmZpZ3VyZSBzY3JpcHQsIGJ1dCB0aGVuIHBhc3NlZCB0byBleHRjb25mLnJiCi0jIG1heWJlIGl0J3Mgbm90IHJlYWxseSBuZWVkZWQgYXMgd2UncmUgaGFyZGNvZGluZyB0aGUgcmVzdWx0IHdpdGgKLSMgMDAwMS1zb2NrZXQtZXh0Y29uZi1oYXJkY29kZS13aWRlLWdldGFkZHItaW5mby10ZXN0LW91dGNvLnBhdGNoCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCi0gICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAtLWRpc2FibGUtZHRyYWNlIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgotCi1TVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCi1SREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKLQotU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKLVJERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTk3MzIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNS4xLmJiCkBAIC0wLDAgKzEsNzAgQEAKK3JlcXVpcmUgcnVieS5pbmMKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAwMDA3My5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjIzODY3YmM4YzE2YzU1ZTQzYjE0ZGZlMDYxNGJjZmE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhYzgxODIyMzI1Yjc5YzNiYTk1MzJiMDQ4YzIxMjMzNTdkMzMxMGIyYjQwMDI0MjAyZjM2MDI1MWQ5ODI5YjEiCisKKyMgaXQncyB1bmtub3duIHRvIGNvbmZpZ3VyZSBzY3JpcHQsIGJ1dCB0aGVuIHBhc3NlZCB0byBleHRjb25mLnJiCisjIG1heWJlIGl0J3Mgbm90IHJlYWxseSBuZWVkZWQgYXMgd2UncmUgaGFyZGNvZGluZyB0aGUgcmVzdWx0IHdpdGgKKyMgMDAwMS1zb2NrZXQtZXh0Y29uZi1oYXJkY29kZS13aWRlLWdldGFkZHItaW5mby10ZXN0LW91dGNvLnBhdGNoCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1QgKz0gIi0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgorUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIiwtLWVuYWJsZS13aWRlLWdldGFkZHJpbmZvLCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtZHRyYWNlIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAorIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgICMgRmluZCBvdXQgcmJjb25maWcucmIgZnJvbSAuaW5zdGFsbGVkLmxpc3QKKyAgICByYmNvbmZpZ19yYj1gZ3JlcCByYmNvbmZpZy5yYiAke0J9Ly5pbnN0YWxsZWQubGlzdGAKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IGRpcmVjdG9yaWVzCisgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKyAgICAgICAgICAgLWUgczonLS13aXRoLWxpYnRvb2wtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0nOjpnIFwKKyAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisgICAgICAgICR7RH0kcmJjb25maWdfcmIKKworICAgICMgRmluZCBvdXQgY3JlYXRlZC5yaWQgZnJvbSAuaW5zdGFsbGVkLmxpc3QKKyAgICBjcmVhdGVkX3JpZD1gZ3JlcCBjcmVhdGVkLnJpZCAke0J9Ly5pbnN0YWxsZWQubGlzdGAKKyAgICAjIFJlbW92ZSBidWlsZCBob3N0IGRpcmVjdG9yaWVzCisgICAgc2VkIC1pIC1lICdzOiR7V09SS0RJUn06OmcnICR7RH0kY3JlYXRlZF9yaWQKKworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcmktZG9jcyAke1BOfS1yZG9jIgorCitTVU1NQVJZXyR7UE59LXJpLWRvY3MgPSAicmkgKFJ1YnkgSW50ZXJhY3RpdmUpIGRvY3VtZW50YXRpb24gZm9yIHRoZSBSdWJ5IHN0YW5kYXJkIGxpYnJhcnkiCitSREVQRU5EU18ke1BOfS1yaS1kb2NzID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmktZG9jcyArPSAiJHtkYXRhZGlyfS9yaSIKKworU1VNTUFSWV8ke1BOfS1yZG9jID0gIlJEb2MgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IgZnJvbSBSdWJ5IHNvdXJjZSIKK1JERVBFTkRTXyR7UE59LXJkb2MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yZG9jICs9ICIke2xpYmRpcn0vcnVieS8qL3Jkb2MgJHtiaW5kaXJ9L3Jkb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3J1YnlnZW1zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKaW5kZXggMzA3ZmViNy4uOTVlZmYwNCAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMKQEAgLTYsNyArNiw4IEBACiAjCiAKICMgVGhlIGZvbGxvd2luZyBzY3JpcHQgd2lsbCBydW4gYWxsIHRoZSBzY3JpcHRsZXRzIGZvdW5kIGluICNTWVNDT05GRElSIy9kZWItcG9zdGluc3RzLAotIyAjU1lTQ09ORkRJUiMvaXBrLXBvc3RpbnN0cyBvciAjU1lTQ09ORkRJUiMvcnBtLXBvc3RpbnN0cy4KKyMgI1NZU0NPTkZESVIjL2lway1wb3N0aW5zdHMgb3IgI1NZU0NPTkZESVIjL3JwbS1wb3N0aW5zdHMgb3IgdGhlIHBhY2thZ2UgbWFuYWdlciBpbgorIyBjYXNlIGF2YWlsYWJsZS4KIAogIyB0aGUgb3JkZXIgb2YgdGhpcyBsaXN0IGlzIGltcG9ydGFudCwgZG8gbm90IGNoYW5nZSEKIGJhY2tlbmRfbGlzdD0icnBtIGRlYiBpcGsiCkBAIC0xNCwyNyArMTUsMjkgQEAKIHBtX2luc3RhbGxlZD1mYWxzZQogCiBmb3IgcG0gaW4gJGJhY2tlbmRfbGlzdDsgZG8KLQlwaV9kaXI9IiNTWVNDT05GRElSIy8kcG0tcG9zdGluc3RzIgotCi0JaWYgWyAhIC1kICRwaV9kaXIgXTsgdGhlbgotCQljb250aW51ZQotCWZpCi0KIAkjIGZvdW5kIHRoZSBwYWNrYWdlIG1hbmFnZXIsIGl0IGhhcyBwb3N0aW5zdHMKIAljYXNlICRwbSBpbgogCQkiZGViIikKIAkJCWlmIFsgLXMgIiNMT0NBTFNUQVRFRElSIy9saWIvZHBrZy9zdGF0dXMiIF07IHRoZW4KIAkJCQlwbV9pbnN0YWxsZWQ9dHJ1ZQorCQkJCWJyZWFrCiAJCQlmaQogCQkJOzsKIAogCQkiaXBrIikKIAkJCWlmIFsgLXMgIiNMT0NBTFNUQVRFRElSIy9saWIvb3BrZy9zdGF0dXMiIF07IHRoZW4KIAkJCQlwbV9pbnN0YWxsZWQ9dHJ1ZQorCQkJCWJyZWFrCiAJCQlmaQogCQkJOzsKIAllc2FjCi0JYnJlYWsKKworCXBpX2Rpcj0iI1NZU0NPTkZESVIjLyRwbS1wb3N0aW5zdHMiCisKKwkjIGZvdW5kIHBvc3RpbnN0cyBkaXJlY3RvcnkKKwlpZiBbIC1kICRwaV9kaXIgXTsgdGhlbgorCQlicmVhaworCWZpCiBkb25lCiAKIHJlbW92ZV9yY3NkX2xpbmsgKCkgewpAQCAtNDMsNyArNDYsNyBAQAogCWZpCiB9CiAKLWlmICEgWyAtZCAkcGlfZGlyIF07IHRoZW4KK2lmICEgWyAtZCAkcGlfZGlyIF0gJiYgISAkcG1faW5zdGFsbGVkOyB0aGVuCiAJcmVtb3ZlX3Jjc2RfbGluawogCWV4aXQgMAogZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCmluZGV4IDFiNzFhMWYuLmQ0MmFkZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQpAQCAtMyw3ICszLDYgQEAKIERlZmF1bHREZXBlbmRlbmNpZXM9bm8KIEFmdGVyPXN5c3RlbWQtcmVtb3VudC1mcy5zZXJ2aWNlIHN5c3RlbWQtdG1wZmlsZXMtc2V0dXAuc2VydmljZSB0bXAubW91bnQKIEJlZm9yZT1zeXNpbml0LnRhcmdldAotQ29uZGl0aW9uUGF0aEV4aXN0c0dsb2I9I1NZU0NPTkZESVIjLyotcG9zdGluc3RzCiAKIFtTZXJ2aWNlXQogVHlwZT1vbmVzaG90CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKaW5kZXggMWViMDE1NC4uMmY0MTI2MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgpAQCAtMzcsNiArMzcsOCBAQAogCWluc3RhbGwgLW0gMDc1NSB1bnNxdWFzaGZzICR7RH0ke3NiaW5kaXJ9LwogfQogCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKaW5kZXggYTEyZjRjMy4uNDYwYjZlMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCkBAIC0xLDM2ICsxLDMxIEBACi1Gcm9tIDA1NzRhZTk5MjYzMDhkY2JjYTc4YmQ4Y2QwZjBmMTQzZjE5Y2JjYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIwN2ZjNzgxNGJiZWIwMjQxMzgyMzI5MjE1ZDIxZmQzYjU3MDY2ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogRGF0ZTogVGh1LCAyNSBKdWwgMjAxMyAxNToyODozMyArMDIwMAotU3ViamVjdDogW1BBVENIIDQvOF0gc3RyYWNlOiBBZGQgcHRlc3QKK1N1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBBZGQgcHRlc3QKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiAKIFNpZ25lZC1vZmYtYnk6IEdhYnJpZWwgQmFyYnUgPGdhYnJpZWwuYmFyYnVAZW5lYS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiAKIC0tLQotIGNvbmZpZ3VyZS5hYyAgICAgIHwgIDIgKy0KLSB0ZXN0cy9NYWtlZmlsZS5hbSB8IDE4ICsrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIHRlc3RzL01ha2VmaWxlLmFtIHwgMTkgKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDVmMGFlYzQuLjhlYWFjYzYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQyLDcgKzQyLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKGMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKLSBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCi0gQUNfQ09ORklHX0FVWF9ESVIoWy5dKQotIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0tQU1fSU5JVF9BVVRPTUFLRShbZm9yZWlnbiBub3N0ZGluYyBkaXN0LXh6IHNpbGVudC1ydWxlcyBwYXJhbGxlbC10ZXN0cyAxLjEzXSkKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIG5vc3RkaW5jIGRpc3QteHogc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0cyAxLjEzXSkKLSBBTV9NQUlOVEFJTkVSX01PREUKLSBBQ19DQU5PTklDQUxfSE9TVAotIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGI0YmEyMmEuLjU4MzY0MzggMTAwNjQ0CitpbmRleCBhMmYzOTUwLi40ZmE5N2UyIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNDA4LDMgKzQwOCwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCitAQCAtMzQsNiArMzQsNyBAQCBTSVpFT0ZfTE9ORyA9IEBTSVpFT0ZfTE9OR0AKKyBNUEVSU19OQU1FID0KKyBNUEVSU19DQ19GTEFHUyA9CisgQVJDSF9NRkxBR1MgPQorK1RFU1RfU1VJVEVfTE9HID0gdGVzdC1zdWl0ZS5sb2cKKyBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKQorIEFNX0NQUEZMQUdTID0gJChBUkNIX01GTEFHUykgXAorIAkgICAgICAtSSQoYnVpbGRkaXIpIFwKK0BAIC00OTAsMyArNDkxLDIxIEBAIEJVSUxUX1NPVVJDRVMgPSBrc3lzZW50LmgKICBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaAppbmRleCA3NmRhZjNhLi45ZTVlYzExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKQEAgLTEsMjAgKzEsMzcgQEAKLVRoZSBnaXQtdmVyc2lvbi1nZW4gc2NyaXB0IGlzIG5vdCBpbmNsdWRlZCBpbiB0YXJiYWxsIHJlbGVhc2VzLAotc28gd2UgbmVlZCB0byBhdm9pZCBhdHRlbXB0cyB0byBjYWxsIGl0IHdoZW4gcnVubmluZyBhdXRvcmVjb25mLgorRnJvbSBiZWUwNjgwNzU0NzMwNDk4NDg1ZTI0ZGQwMzczMDMzMThjNjg5MTZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTM6MzM6NTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiByZW1vdmUgbmVlZCBmb3Igc2NyaXB0cworCitnaXQtdmVyc2lvbi1nZW4gY29weXJpZ2h0LXllYXItZ2VuIGZpbGUtZGF0ZS1nZW4gYXJlIG5vdCBpbmNsdWRlZCBpbgordGFyYmFsbCByZWxlYXNlcywgc28gd2UgbmVlZCB0byBhdm9pZCBhdHRlbXB0cyB0byBjYWxsIHRoZW0uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KIAogU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNzAwNGJkMy4uYjJiMDNjNiAxMDA2NDQKK2luZGV4IGFkMWQwMGYuLjk2ZmEyMDUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMxLDcgKzMxLDcgQEAKK0BAIC0zMiwxMiArMzIsMTIgQEAKICAKICBBQ19QUkVSRVEoMi41NykKICBBQ19JTklUKFtzdHJhY2VdLAogLQltNF9lc3lzY21kKFsuL2dpdC12ZXJzaW9uLWdlbiAudGFyYmFsbC12ZXJzaW9uXSksCiArCW00X2VzeXNjbWRfcyhbY2F0IC50YXJiYWxsLXZlcnNpb25dKSwKLSAJW3N0cmFjZS1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdLAorIAlbc3RyYWNlLWRldmVsQGxpc3RzLnN0cmFjZS5pb10sCiAgCVtzdHJhY2VdLAogIAlbaHR0cHM6Ly9zdHJhY2UuaW9dKQorLW00X2RlZmluZShbY29weXJpZ2h0X3llYXJdLCBtNF9lc3lzY21kKFsuL2NvcHlyaWdodC15ZWFyLWdlbiAueWVhcl0pKQorLW00X2RlZmluZShbbWFucGFnZV9kYXRlXSwgbTRfZXN5c2NtZChbLi9maWxlLWRhdGUtZ2VuIHN0cmFjZS4xLmluXSkpCisrbTRfZGVmaW5lKFtjb3B5cmlnaHRfeWVhcl0sIG00X2VzeXNjbWRfcyhbY2F0IC55ZWFyXSkpCisrbTRfZGVmaW5lKFttYW5wYWdlX2RhdGVdLCBtNF9lc3lzY21kX3MoW2NhdCAuc3RyYWNlLjEuaW4uZGF0ZV0pKQorIEFDX0NPUFlSSUdIVChbQ29weXJpZ2h0IChjKSAxOTk5LV1jb3B5cmlnaHRfeWVhclsgVGhlIHN0cmFjZSBkZXZlbG9wZXJzLl0pCisgQUNfQ09ORklHX1NSQ0RJUihbc3RyYWNlLmNdKQorIEFDX0NPTkZJR19BVVhfRElSKFsuXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2gKaW5kZXggNzU2Y2Q4Yi4uM2Q0OTEzZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2gKQEAgLTIyLDI1ICsyMiwyMyBAQAogIG00L21wZXJzLm00IHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKIAotZGlmZiAtLWdpdCBhL200L21wZXJzLm00IGIvbTQvbXBlcnMubTQKLWluZGV4IDFmZThhOGUuLmQ3MmM3MTcgMTAwNjQ0Ci0tLS0gYS9tNC9tcGVycy5tNAotKysrIGIvbTQvbXBlcnMubTQKLUBAIC01MywxMiArNTMsMTQgQEAgY2FzZSAiJGFyY2giIGluCi0gCUNGTEFHUz0iJENGTEFHUyBDRkxBRyAkSUZMQUciCi0gCUFDX0NBQ0hFX0NIRUNLKFtmb3IgQ0ZMQUcgY29tcGlsZSBzdXBwb3J0XSwgW3N0X2N2X2NjXSwKK0luZGV4OiBzdHJhY2UtNC4yMi9tNC9tcGVycy5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN0cmFjZS00LjIyLm9yaWcvbTQvbXBlcnMubTQKKysrKyBzdHJhY2UtNC4yMi9tNC9tcGVycy5tNAorQEAgLTEwOCw2ICsxMDgsNyBAQCBjYXNlICIkYXJjaCIgaW4KKyAJQ0ZMQUdTPSIkQ0ZMQUdTIE1QRVJTX0NGTEFHUyAkSUZMQUciCisgCUFDX0NBQ0hFX0NIRUNLKFtmb3IgbXBlcnNfbmFtZSBwZXJzb25hbGl0eSBjb21waWxlIHN1cHBvcnRdLCBbc3RfY3ZfY2NdLAogIAkJW0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWyNpbmNsdWRlIDxzdGRpbnQuaD4KICsJCQkJCQkgICAgICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgogIAkJCQkJCSAgICAgaW50IG1haW4oKXtyZXR1cm4gMDt9XV0pXSwKICAJCQkJICAgW3N0X2N2X2NjPXllc10sCiAgCQkJCSAgIFtzdF9jdl9jYz1ub10pXSkKLSAJaWYgdGVzdCAkc3RfY3ZfY2MgPSB5ZXM7IHRoZW4KLSAJCUFDX0NBQ0hFX0NIRUNLKFtmb3IgQ0ZMQUcgcnVudGltZSBzdXBwb3J0XSwgW3N0X2N2X3J1bnRpbWVdLAorQEAgLTExNSw2ICsxMTYsNyBAQCBjYXNlICIkYXJjaCIgaW4KKyAJCUFDX0NBQ0hFX0NIRUNLKFtmb3IgbXBlcnNfbmFtZSBwZXJzb25hbGl0eSBydW50aW1lIHN1cHBvcnRdLAorIAkJCVtzdF9jdl9ydW50aW1lXSwKICAJCQlbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sjaW5jbHVkZSA8c3RkaW50Lmg+CiArCQkJCQkJCSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICAJCQkJCQkJIGludCBtYWluKCl7cmV0dXJuIDA7fV1dKV0sCiAgCQkJCSAgICAgICBbc3RfY3ZfcnVudGltZT15ZXNdLAogIAkJCQkgICAgICAgW3N0X2N2X3J1bnRpbWU9bm9dLAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0CmluZGV4IDEzM2NmOTIuLjgwNzBkODMgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0CkBAIC0xLDIgKzEsMiBAQAogIyEvYmluL3NoCi1tYWtlIC1DIHRlc3RzIC1rIHJ1bnRlc3QtVEVTVFMKK21ha2UgLUIgLUMgdGVzdHMgLWsgdGVzdC1zdWl0ZS5sb2cKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY5YzEyZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2UuaW8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxMzJiNGQyYWRmY2NjNjNkYTQxMzlhNjA5MzY3NzExIgotCi1TUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYyMjcxYWIwZmFjNDllYmVlOWNiZDdmMzQ2OTIyN2NiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViZjMxNDhkZDE3MzA2YTQyNTY2ZjdkYTE3MzY4ZmRkNzgxYWZhMTQ3ZGIwNWVhNjNhNGNhMmI1MGY1OGM1MjMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJsdWV0b290aAotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBjb3JldXRpbHMgZ3JlcCBnYXdrIHNlZCIKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSIKLQotUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubywke0JMVUVafSIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotCi1URVNURElSID0gInRlc3RzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCi0Jcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCXNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgXAotCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0JICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCSAgICAtZSAnL15ERUJfQ0hBTkdFTE9HVElNRS9kJyBcCi0JICAgIC1lICcvXlJQTV9DSEFOR0VMT0dUSU1FL2QnIFwKLQkke0R9LyR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVRPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU0MGEwNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4yNC5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIlN5c3RlbSBjYWxsIHRyYWNpbmcgdG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdHJhY2UuaW8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZkZGI5MTczNGI5YzcwNWYzZTg3MzYyZTk3ZTVmNjRiIgorCitTUkNfVVJJID0gImh0dHBzOi8vc3RyYWNlLmlvL2ZpbGVzLyR7UFZ9L3N0cmFjZS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aGVuLXVzaW5nLW5vbi1nbGliYy1saWJjLWltcGxlbWVudGF0aW9uLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NzgwMTM2ODQ5Yzg1YWNmNzZhZDNhNTIyYWE0NDYyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZjRlNTlmYzFlZGZhMmJmYjRhZGYyYTc0ODYyM2RjMjViMTA1ZWM3OTcxM2RkODQ0MDQxOTlmOTFiMGIwNjM0IgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKKworUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD15ZXMsYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubywke0JMVUVafSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1wZXJzPW5vIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURzaWdjb250ZXh0X3N0cnVjdD1zaWdjb250ZXh0IgorCitURVNURElSID0gInRlc3RzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCisJcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQorCWluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KKwlpbnN0YWxsIC1tIDY0NCAke0J9L2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9CisJc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXkRFQl9DSEFOR0VMT0dUSU1FL2QnIFwKKwkgICAgLWUgJy9eUlBNX0NIQU5HRUxPR1RJTUUvZCcgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmMyNTYyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTAuMC5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCitIT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkFwYWNoZS0yICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODMyMDZmMzk4MTllN2E0ZGZjYTJmZjdjMTkwZjZjZTAiCisKK0RFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUgbHo0IgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX21hY29zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDEyNjg0N2Y5ZThjYjhlZDBiOTBhNmExOGIyMDMzMDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNmMjNmM2FiYjgzN2RlYTA1ODVhNmIwZWJkNzBlODBlMDFmOTViZGRlZjdjMWFhMDk3YzE4ZTNlYWE2YjU4NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1zYXNsLC0td2l0aG91dC1zYXNsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW2dub21lLWtleXJpbmddID0gIi0td2l0aC1nbm9tZS1rZXlyaW5nLC0td2l0aG91dC1nbm9tZS1rZXlyaW5nLGdsaWItMi4wIGdub21lLWtleXJpbmciCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS13aXRob3V0LWFweHMgXAorICAgIC0td2l0aG91dC1iZXJrZWxleS1kYiBcCisgICAgLS13aXRob3V0LXN3aWcgXAorICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCisgICAgLS13aXRoLXV0Zjhwcm9jPWludGVybmFsIFwKKyAgICBhY19jdl9wYXRoX1JVQlk9bm9uZSBcCisiCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3MzVmNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1TVU1NQVJZID0gIlN1YnZlcnNpb24gKHN2bikgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBjbGllbnQiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLURFUEVORFMgPSAiYXByLXV0aWwgc2VyZiBzcWxpdGUzIGZpbGUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAic2VyZiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIiCi1IT01FUEFHRSA9ICJodHRwOi8vc3VidmVyc2lvbi50aWdyaXMub3JnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDViMGM2Nzc2ODEwNzM5MjBmOTM4YzFmMzIyZTBiZTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzNiMTE4MzMzY2UxMmU1MDFkNTA5ZTY2YmIwYTQ3YmNjMzRkMDUzOTkwYWNhYjQ1NTU5NDMxYWMzZTQ5MTYyMyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCi0KLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWV4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCi1DUFBGTEFHUyArPSAiLVAiCi1CVUlMRF9DUFBGTEFHUyArPSAiLVAiCi0KLWFjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2xpYnRvb2wKLQlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKLQlybSAtZiAke1N9L2FjbG9jYWwubTQKLQlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKLX0KLQotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCi0jfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy9QeXRob24tRml4LW5ldy1HQ0M4LXdhcm5pbmdzLWluLWdlbmVyYXRlZC1jb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnL1B5dGhvbi1GaXgtbmV3LUdDQzgtd2FybmluZ3MtaW4tZ2VuZXJhdGVkLWNvZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkxMzg1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy9QeXRob24tRml4LW5ldy1HQ0M4LXdhcm5pbmdzLWluLWdlbmVyYXRlZC1jb2RlLnBhdGNoCkBAIC0wLDAgKzEsMTkxIEBACitGcm9tIGI2YzBlZjRiOGY2ZTVjMDg5YWM3MTA0YjNhYWJhOGYxZDE3YjhiODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPbGx5IEJldHRzIDxvbGx5QHN1cnZleC5jb20+CitEYXRlOiBNb24sIDExIEp1biAyMDE4IDE1OjUxOjUzICsxMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFtQeXRob25dIEZpeCBuZXcgR0NDOCB3YXJuaW5ncyBpbiBnZW5lcmF0ZWQgY29kZQorCitBdm9pZCBjYXN0cyBiZXR3ZWVuIGluY29tcGF0aWJsZSBmdW5jdGlvbiB0eXBlcyB3aGVyZSBwb3NzaWJsZSAod2hlbgora2V5d29yZCBhcmdzIGFyZSBpbiB1c2UsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBhdm9pZCBzdWNoIHdhcm5pbmdzIGFzCit0aGV5IGFyZSBpbmhlcmVudCBpbiB0aGUgZGVzaWduIG9mIFB5dGhvbidzIEMgQVBJIGluIHRoYXQgcGFydGljdWxhcgorY2FzZSkuICBGaXhlcyAjMTI1OS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9zd2lnL3N3aWcvY29tbWl0LzdmOTg4MzAxMTAyOTY3NDU1M2EyYTRiNjIzZDQ1OWYwMmI1MTI0NThdCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIExpYi9weXRob24vcHlpbml0LnN3ZyAgICAgfCAgNCArKy0tCisgTGliL3B5dGhvbi9weXJ1bi5zd2cgICAgICB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBTb3VyY2UvTW9kdWxlcy9weXRob24uY3h4IHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTGliL3B5dGhvbi9weWluaXQuc3dnIGIvTGliL3B5dGhvbi9weWluaXQuc3dnCitpbmRleCAyY2M1ODI4Li42YmY2OGMxIDEwMDY0NAorLS0tIGEvTGliL3B5dGhvbi9weWluaXQuc3dnCisrKysgYi9MaWIvcHl0aG9uL3B5aW5pdC5zd2cKK0BAIC0zNjgsOCArMzY4LDggQEAgU1dJR19pbml0KHZvaWQpIHsKKyAgICAgKGNoYXIgKikidGhpcyIsICZTd2lnUHlCdWlsdGluX1RoaXNDbG9zdXJlLCBOVUxMLCBOVUxMLCBOVUxMCisgICB9OworICAgc3RhdGljIFN3aWdQeUdldFNldCB0aGlzb3duX2dldHNldF9jbG9zdXJlID0geworLSAgICAoUHlDRnVuY3Rpb24pIFN3aWdQeU9iamVjdF9vd24sCistICAgIChQeUNGdW5jdGlvbikgU3dpZ1B5T2JqZWN0X293bgorKyAgICBTd2lnUHlPYmplY3Rfb3duLAorKyAgICBTd2lnUHlPYmplY3Rfb3duCisgICB9OworICAgc3RhdGljIFB5R2V0U2V0RGVmIHRoaXNvd25fZ2V0c2V0X2RlZiA9IHsKKyAgICAgKGNoYXIgKikidGhpc293biIsIFN3aWdQeUJ1aWx0aW5fR2V0dGVyQ2xvc3VyZSwgU3dpZ1B5QnVpbHRpbl9TZXR0ZXJDbG9zdXJlLCBOVUxMLCAmdGhpc293bl9nZXRzZXRfY2xvc3VyZQorZGlmZiAtLWdpdCBhL0xpYi9weXRob24vcHlydW4uc3dnIGIvTGliL3B5dGhvbi9weXJ1bi5zd2cKK2luZGV4IGFiMTIzN2YuLjNkMGIxYjMgMTAwNjQ0CistLS0gYS9MaWIvcHl0aG9uL3B5cnVuLnN3ZworKysrIGIvTGliL3B5dGhvbi9weXJ1bi5zd2cKK0BAIC00NjUsNiArNDY1LDE0IEBAIFN3aWdQeU9iamVjdF9yZXByKFN3aWdQeU9iamVjdCAqdiwgUHlPYmplY3QgKmFyZ3MpCisgICByZXR1cm4gcmVwcjsgIAorIH0KKyAKKysvKiBXZSBuZWVkIGEgdmVyc2lvbiB0YWtpbmcgdHdvIFB5T2JqZWN0KiBwYXJhbWV0ZXJzIHNvIGl0J3MgYSB2YWxpZAorKyAqIFB5Q0Z1bmN0aW9uIHRvIHVzZSBpbiBzd2lnb2JqZWN0X21ldGhvZHNbXS4gKi8KKytTV0lHUlVOVElNRSBQeU9iamVjdCAqCisrU3dpZ1B5T2JqZWN0X3JlcHIyKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqU1dJR1VOVVNFRFBBUk0oYXJncykpCisreworKyAgcmV0dXJuIFN3aWdQeU9iamVjdF9yZXByKChTd2lnUHlPYmplY3QqKXYpOworK30KKysKKyBTV0lHUlVOVElNRSBpbnQKKyBTd2lnUHlPYmplY3RfY29tcGFyZShTd2lnUHlPYmplY3QgKnYsIFN3aWdQeU9iamVjdCAqdykKKyB7CitAQCAtNTk0LDExICs2MDIsNyBAQCBTd2lnUHlPYmplY3RfYXBwZW5kKFB5T2JqZWN0KiB2LCBQeU9iamVjdCogbmV4dCkKKyB9CisgCisgU1dJR1JVTlRJTUUgUHlPYmplY3QqIAorLSNpZmRlZiBNRVRIX05PQVJHUworLVN3aWdQeU9iamVjdF9uZXh0KFB5T2JqZWN0KiB2KQorLSNlbHNlCisgU3dpZ1B5T2JqZWN0X25leHQoUHlPYmplY3QqIHYsIFB5T2JqZWN0ICpTV0lHVU5VU0VEUEFSTShhcmdzKSkKKy0jZW5kaWYKKyB7CisgICBTd2lnUHlPYmplY3QgKnNvYmogPSAoU3dpZ1B5T2JqZWN0ICopIHY7CisgICBpZiAoc29iai0+bmV4dCkgeyAgICAKK0BAIC02MzMsNiArNjM3LDIwIEBAIFN3aWdQeU9iamVjdF9hY3F1aXJlKFB5T2JqZWN0KiB2LCBQeU9iamVjdCAqU1dJR1VOVVNFRFBBUk0oYXJncykpCisgICByZXR1cm4gU1dJR19QeV9Wb2lkKCk7CisgfQorIAorKyNpZmRlZiBNRVRIX05PQVJHUworK3N0YXRpYyBQeU9iamVjdCoKKytTd2lnUHlPYmplY3RfZGlzb3duMihQeU9iamVjdCogdiwgUHlPYmplY3QgKlNXSUdVTlVTRURQQVJNKGFyZ3MpKQorK3sKKysgIHJldHVybiBTd2lnUHlPYmplY3RfZGlzb3duKHYpOworK30KKysKKytzdGF0aWMgUHlPYmplY3QqCisrU3dpZ1B5T2JqZWN0X2FjcXVpcmUyKFB5T2JqZWN0KiB2LCBQeU9iamVjdCAqU1dJR1VOVVNFRFBBUk0oYXJncykpCisreworKyAgcmV0dXJuIFN3aWdQeU9iamVjdF9hY3F1aXJlKHYpOworK30KKysjZW5kaWYKKysKKyBTV0lHSU5URVJOIFB5T2JqZWN0KgorIFN3aWdQeU9iamVjdF9vd24oUHlPYmplY3QgKnYsIFB5T2JqZWN0ICphcmdzKQorIHsKK0BAIC02NzMsMTIgKzY5MSwxMiBAQCBTd2lnUHlPYmplY3Rfb3duKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqYXJncykKKyAjaWZkZWYgTUVUSF9PCisgc3RhdGljIFB5TWV0aG9kRGVmCisgc3dpZ29iamVjdF9tZXRob2RzW10gPSB7CistICB7KGNoYXIgKikiZGlzb3duIiwgIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfZGlzb3duLCAgTUVUSF9OT0FSR1MsICAoY2hhciAqKSJyZWxlYXNlcyBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIifSwKKy0gIHsoY2hhciAqKSJhY3F1aXJlIiwgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9hY3F1aXJlLCBNRVRIX05PQVJHUywgIChjaGFyICopImFjcXVpcmVzIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlciJ9LAorKyAgeyhjaGFyICopImRpc293biIsICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X2Rpc293bjIsIE1FVEhfTk9BUkdTLCAgKGNoYXIgKikicmVsZWFzZXMgb3duZXJzaGlwIG9mIHRoZSBwb2ludGVyIn0sCisrICB7KGNoYXIgKikiYWNxdWlyZSIsIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfYWNxdWlyZTIsTUVUSF9OT0FSR1MsICAoY2hhciAqKSJhY3F1aXJlcyBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIifSwKKyAgIHsoY2hhciAqKSJvd24iLCAgICAgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9vd24sICAgICBNRVRIX1ZBUkFSR1MsIChjaGFyICopInJldHVybnMvc2V0cyBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIifSwKKyAgIHsoY2hhciAqKSJhcHBlbmQiLCAgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9hcHBlbmQsICBNRVRIX08sICAgICAgIChjaGFyICopImFwcGVuZHMgYW5vdGhlciAndGhpcycgb2JqZWN0In0sCisgICB7KGNoYXIgKikibmV4dCIsICAgIChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfbmV4dCwgICAgTUVUSF9OT0FSR1MsICAoY2hhciAqKSJyZXR1cm5zIHRoZSBuZXh0ICd0aGlzJyBvYmplY3QifSwKKy0gIHsoY2hhciAqKSJfX3JlcHJfXyIsKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9yZXByLCAgICBNRVRIX05PQVJHUywgIChjaGFyICopInJldHVybnMgb2JqZWN0IHJlcHJlc2VudGF0aW9uIn0sCisrICB7KGNoYXIgKikiX19yZXByX18iLChQeUNGdW5jdGlvbilTd2lnUHlPYmplY3RfcmVwcjIsICAgTUVUSF9OT0FSR1MsICAoY2hhciAqKSJyZXR1cm5zIG9iamVjdCByZXByZXNlbnRhdGlvbiJ9LAorICAgezAsIDAsIDAsIDB9ICAKKyB9OworICNlbHNlCitAQCAtNjg5LDcgKzcwNyw3IEBAIHN3aWdvYmplY3RfbWV0aG9kc1tdID0geworICAgeyhjaGFyICopIm93biIsICAgICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X293biwgICAgIE1FVEhfVkFSQVJHUywgIChjaGFyICopInJldHVybnMvc2V0cyBvd25lcnNoaXAgb2YgdGhlIHBvaW50ZXIifSwKKyAgIHsoY2hhciAqKSJhcHBlbmQiLCAgKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9hcHBlbmQsICBNRVRIX1ZBUkFSR1MsICAoY2hhciAqKSJhcHBlbmRzIGFub3RoZXIgJ3RoaXMnIG9iamVjdCJ9LAorICAgeyhjaGFyICopIm5leHQiLCAgICAoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X25leHQsICAgIE1FVEhfVkFSQVJHUywgIChjaGFyICopInJldHVybnMgdGhlIG5leHQgJ3RoaXMnIG9iamVjdCJ9LAorLSAgeyhjaGFyICopIl9fcmVwcl9fIiwoUHlDRnVuY3Rpb24pU3dpZ1B5T2JqZWN0X3JlcHIsICAgTUVUSF9WQVJBUkdTLCAgKGNoYXIgKikicmV0dXJucyBvYmplY3QgcmVwcmVzZW50YXRpb24ifSwKKysgIHsoY2hhciAqKSJfX3JlcHJfXyIsKFB5Q0Z1bmN0aW9uKVN3aWdQeU9iamVjdF9yZXByLCAgICBNRVRIX1ZBUkFSR1MsICAoY2hhciAqKSJyZXR1cm5zIG9iamVjdCByZXByZXNlbnRhdGlvbiJ9LAorICAgezAsIDAsIDAsIDB9ICAKKyB9OworICNlbmRpZgorZGlmZiAtLWdpdCBhL1NvdXJjZS9Nb2R1bGVzL3B5dGhvbi5jeHggYi9Tb3VyY2UvTW9kdWxlcy9weXRob24uY3h4CitpbmRleCBhNjgwMWZjLi43MmVhYTc3IDEwMDY0NAorLS0tIGEvU291cmNlL01vZHVsZXMvcHl0aG9uLmN4eAorKysrIGIvU291cmNlL01vZHVsZXMvcHl0aG9uLmN4eAorQEAgLTExMDksNyArMTEwOSw3IEBAIHB1YmxpYzoKKyAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgaW50IGFkZF9weWluc3RhbmNlbWV0aG9kX25ldygpIHsKKyAgICAgU3RyaW5nICpuYW1lID0gTmV3U3RyaW5nKCJTV0lHX1B5SW5zdGFuY2VNZXRob2RfTmV3Iik7CistICAgIFByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCBNRVRIX08sIE5VTEx9LFxuIiwgbmFtZSwgbmFtZSk7CisrICAgIFByaW50ZihtZXRob2RzLCAiXHQgeyBcIiVzXCIsICVzLCBNRVRIX08sIE5VTEx9LFxuIiwgbmFtZSwgbmFtZSk7CisgICAgIERlbGV0ZShuYW1lKTsKKyAgICAgcmV0dXJuIDA7CisgICB9CitAQCAtMjQ3OSwxNyArMjQ3OSwxNyBAQCBwdWJsaWM6CisgICAgIGlmICgha3cpIHsKKyAgICAgICBpZiAobiAmJiBmdW5wYWNrKSB7CisgCWlmIChudW1fcmVxdWlyZWQgPT0gMCAmJiBudW1fYXJndW1lbnRzID09IDApIHsKKy0JICBQcmludGYobWV0aG9kcywgIlx0IHsgKGNoYXIgKilcIiVzXCIsIChQeUNGdW5jdGlvbiklcywgTUVUSF9OT0FSR1MsICIsIG5hbWUsIGZ1bmN0aW9uKTsKKysJICBQcmludGYobWV0aG9kcywgIlx0IHsgXCIlc1wiLCAlcywgTUVUSF9OT0FSR1MsICIsIG5hbWUsIGZ1bmN0aW9uKTsKKyAJfSBlbHNlIGlmIChudW1fcmVxdWlyZWQgPT0gMSAmJiBudW1fYXJndW1lbnRzID09IDEpIHsKKy0JICBQcmludGYobWV0aG9kcywgIlx0IHsgKGNoYXIgKilcIiVzXCIsIChQeUNGdW5jdGlvbiklcywgTUVUSF9PLCAiLCBuYW1lLCBmdW5jdGlvbik7CisrCSAgUHJpbnRmKG1ldGhvZHMsICJcdCB7IFwiJXNcIiwgJXMsIE1FVEhfTywgIiwgbmFtZSwgZnVuY3Rpb24pOworIAl9IGVsc2UgeworLQkgIFByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgJXMsIE1FVEhfVkFSQVJHUywgIiwgbmFtZSwgZnVuY3Rpb24pOworKwkgIFByaW50ZihtZXRob2RzLCAiXHQgeyBcIiVzXCIsICVzLCBNRVRIX1ZBUkFSR1MsICIsIG5hbWUsIGZ1bmN0aW9uKTsKKyAJfQorICAgICAgIH0gZWxzZSB7CistCVByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgJXMsIE1FVEhfVkFSQVJHUywgIiwgbmFtZSwgZnVuY3Rpb24pOworKwlQcmludGYobWV0aG9kcywgIlx0IHsgXCIlc1wiLCAlcywgTUVUSF9WQVJBUkdTLCAiLCBuYW1lLCBmdW5jdGlvbik7CisgICAgICAgfQorICAgICB9IGVsc2UgeworLSAgICAgIFByaW50ZihtZXRob2RzLCAiXHQgeyAoY2hhciAqKVwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSAlcywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgIiwgbmFtZSwgZnVuY3Rpb24pOworKyAgICAgIFByaW50ZihtZXRob2RzLCAiXHQgeyBcIiVzXCIsIChQeUNGdW5jdGlvbiklcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsICIsIG5hbWUsIGZ1bmN0aW9uKTsKKyAgICAgfQorIAorICAgICBpZiAoIW4pIHsKK0BAIC0zODU3LDcgKzM4NTcsNyBAQCBwdWJsaWM6CisgICAgIGlmIChzaGFkb3cpIHsKKyAgICAgICBpZiAoYnVpbHRpbikgeworIAlTdHJpbmcgKnJuYW1lID0gU3dpZ1R5cGVfbmFtZXN0cihyZWFsX2NsYXNzbmFtZSk7CistCVByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCJfX2Rpc293bl9fXCIsIChQeUNGdW5jdGlvbikgU3dpZzo6RGlyZWN0b3I6OnN3aWdfcHlvYmpfZGlzb3duPCAlcyA+LCBNRVRIX05PQVJHUywgXCJcIiB9LFxuIiwgcm5hbWUpOworKwlQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiX19kaXNvd25fX1wiLCBTd2lnOjpEaXJlY3Rvcjo6c3dpZ19weW9ial9kaXNvd248ICVzID4sIE1FVEhfTk9BUkdTLCBcIlwiIH0sXG4iLCBybmFtZSk7CisgCURlbGV0ZShybmFtZSk7CisgICAgICAgfSBlbHNlIHsKKyAJU3RyaW5nICpzeW1uYW1lID0gR2V0YXR0cihuLCAic3ltOm5hbWUiKTsKK0BAIC00Njk0LDEzICs0Njk0LDEzIEBAIHB1YmxpYzoKKyAJaW50IGFyZ2NvdW50ID0gR2V0YXR0cihuLCAicHl0aG9uOmFyZ2NvdW50IikgPyBhdG9pKENoYXIoR2V0YXR0cihuLCAicHl0aG9uOmFyZ2NvdW50IikpKSA6IDI7CisgCVN0cmluZyAqZHMgPSBoYXZlX2RvY3N0cmluZyhuKSA/IGNkb2NzdHJpbmcobiwgQVVUT0RPQ19GVU5DKSA6IE5ld1N0cmluZygiIik7CisgCWlmIChjaGVja19rd2FyZ3MobikpIHsKKy0JICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSAlcywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIChjaGFyICopIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIGRzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworIAl9IGVsc2UgaWYgKGFyZ2NvdW50ID09IDApIHsKKy0JICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSAlcywgTUVUSF9OT0FSR1MsIChjaGFyICopIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIGRzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgJXMsIE1FVEhfTk9BUkdTLCBcIiVzXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBkcyk7CisgCX0gZWxzZSBpZiAoYXJnY291bnQgPT0gMSkgeworLQkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCBNRVRIX08sIChjaGFyICopIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIGRzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgJXMsIE1FVEhfTywgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworIAl9IGVsc2UgeworLQkgIFByaW50ZihidWlsdGluX21ldGhvZHMsICIgIHsgXCIlc1wiLCAoUHlDRnVuY3Rpb24pICVzLCBNRVRIX1ZBUkFSR1MsIChjaGFyICopIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIGRzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgJXMsIE1FVEhfVkFSQVJHUywgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgZHMpOworIAl9CisgCURlbGV0ZShmdWxsbmFtZSk7CisgCURlbGV0ZSh3bmFtZSk7CitAQCAtNDgwMSwxMCArNDgwMSwxMCBAQCBwdWJsaWM6CisgCSAgQXBwZW5kKHB5ZmxhZ3MsICJNRVRIX1ZBUkFSR1MiKTsKKyAJaWYgKGhhdmVfZG9jc3RyaW5nKG4pKSB7CisgCSAgU3RyaW5nICpkcyA9IGNkb2NzdHJpbmcobiwgQVVUT0RPQ19TVEFUSUNGVU5DKTsKKy0JICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSAlcywgJXMsIChjaGFyICopIFwiJXNcIiB9LFxuIiwgc3ltbmFtZSwgd25hbWUsIHB5ZmxhZ3MsIGRzKTsKKysJICBQcmludGYoYnVpbHRpbl9tZXRob2RzLCAiICB7IFwiJXNcIiwgKFB5Q0Z1bmN0aW9uKSVzLCAlcywgXCIlc1wiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgcHlmbGFncywgZHMpOworIAkgIERlbGV0ZShkcyk7CisgCX0gZWxzZSB7CistCSAgUHJpbnRmKGJ1aWx0aW5fbWV0aG9kcywgIiAgeyBcIiVzXCIsIChQeUNGdW5jdGlvbikgJXMsICVzLCBcIlwiIH0sXG4iLCBzeW1uYW1lLCB3bmFtZSwgcHlmbGFncyk7CisrCSAgUHJpbnRmKGJ1aWx0aW5fbWV0aG9kcywgIiAgeyBcIiVzXCIsIChQeUNGdW5jdGlvbiklcywgJXMsIFwiXCIgfSxcbiIsIHN5bW5hbWUsIHduYW1lLCBweWZsYWdzKTsKKyAJfQorIAlEZWxldGUoZnVsbG5hbWUpOworIAlEZWxldGUod25hbWUpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvc3dpZy0zLjAuMTItQ292ZXJpdHktZml4LWlzc3VlLXJlcG9ydGVkLWZvci1TV0lHX1B5dGhvbl9GaXhNZXRoby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZy9zd2lnLTMuMC4xMi1Db3Zlcml0eS1maXgtaXNzdWUtcmVwb3J0ZWQtZm9yLVNXSUdfUHl0aG9uX0ZpeE1ldGhvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZTRhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWcvc3dpZy0zLjAuMTItQ292ZXJpdHktZml4LWlzc3VlLXJlcG9ydGVkLWZvci1TV0lHX1B5dGhvbl9GaXhNZXRoby5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDk4MjVmY2JhYjVjNGRkZDg2NzQzMmY5OTIyYmViZmJlYzdiNzhhZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIER1Zm91ciA8bS5kdWZvdXJAa29wYW5vLmNvbT4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMTcgMTA6MzQ6MzcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gW0NvdmVyaXR5XSBmaXggaXNzdWUgcmVwb3J0ZWQgZm9yIFNXSUdfUHl0aG9uX0ZpeE1ldGhvZHMKKworRml4IENvdmVyaXR5IGlzc3VlIHJlcG9ydGVkIGZvciBTV0lHX1B5dGhvbl9GaXhNZXRob2RzOgorCisiYnVmZmVyX3NpemU6IENhbGxpbmcgc3RybmNweSB3aXRoIGEgc291cmNlIHN0cmluZyB3aG9zZSBsZW5ndGgKKygxMCBjaGFycykgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBzaXplIGFyZ3VtZW50ICgxMCkKK3dpbGwgZmFpbCB0byBudWxsLXRlcm1pbmF0ZSBidWZmLiIKKworVGhlIGlzc3VlIGlzIG9ubHkgcmVwb3J0ZWQgZm9yIHRoZSAic3dpZ19wdHI6ICIgbGluZSwgYnV0IGZvcgorY29uc2lzdGVuY3kgd2UgcmVwbGFjZSBib3RoIG9jY3VycmVuY2VzIG9mIHN0cm5jcHkgd2l0aCBtZW1jcHkuCistLS0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3dpZy9zd2lnL3B1bGwvODk4XQorCisgTGliL3B5dGhvbi9weWluaXQuc3dnIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworSW5kZXg6IHN3aWctMy4wLjEyL0xpYi9weXRob24vcHlpbml0LnN3ZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN3aWctMy4wLjEyLm9yaWcvTGliL3B5dGhvbi9weWluaXQuc3dnCisrKysgc3dpZy0zLjAuMTIvTGliL3B5dGhvbi9weWluaXQuc3dnCitAQCAtMzA2LDkgKzMwNiw5IEBAIFNXSUdfUHl0aG9uX0ZpeE1ldGhvZHMoUHlNZXRob2REZWYgKm1ldGgKKyAJICBjaGFyICpuZG9jID0gKGNoYXIqKW1hbGxvYyhsZG9jICsgbHB0ciArIDEwKTsKKyAJICBpZiAobmRvYykgeworIAkgICAgY2hhciAqYnVmZiA9IG5kb2M7CistCSAgICBzdHJuY3B5KGJ1ZmYsIG1ldGhvZHNbaV0ubWxfZG9jLCBsZG9jKTsKKysJICAgIG1lbWNweShidWZmLCBtZXRob2RzW2ldLm1sX2RvYywgbGRvYyk7CisgCSAgICBidWZmICs9IGxkb2M7CistCSAgICBzdHJuY3B5KGJ1ZmYsICJzd2lnX3B0cjogIiwgMTApOworKwkgICAgbWVtY3B5KGJ1ZmYsICJzd2lnX3B0cjogIiwgMTApOworIAkgICAgYnVmZiArPSAxMDsKKyAJICAgIFNXSUdfUGFja1ZvaWRQdHIoYnVmZiwgcHRyLCB0eS0+bmFtZSwgbHB0cik7CisgCSAgICBtZXRob2RzW2ldLm1sX2RvYyA9IG5kb2M7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3dpZy9zd2lnXzMuMC4xMi5iYgppbmRleCAxNWY3MzQ4Li5mZTlkMDc0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zd2lnL3N3aWdfMy4wLjEyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N3aWcvc3dpZ18zLjAuMTIuYmIKQEAgLTMsNiArMyw4IEBACiBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Vc2UtcHJvYy1zZWxmLWV4ZS1mb3Itc3dpZy1zd2lnbGliLW9uLW5vbi1XaW4zMi1wbGF0LnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItcGNyZS1kZXRlY3Rpb24ucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLU5vZGUtNy54LWFrYS1WOC01LjItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3dpZy0zLjAuMTItQ292ZXJpdHktZml4LWlzc3VlLXJlcG9ydGVkLWZvci1TV0lHX1B5dGhvbl9GaXhNZXRoby5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vUHl0aG9uLUZpeC1uZXctR0NDOC13YXJuaW5ncy1pbi1nZW5lcmF0ZWQtY29kZS5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4MjEzM2RmYTdiYmE3NWZmOWFkOThhNzA0NmJlNjg3YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3Y2Y5ZjQ0N2FlN2VkMWM1MTcyMmVmYzQ1ZTdmMTQ0MThkMTVkN2ExZTE0M2FjOWYwOWE2Njg5OTlmNGZjOTRkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC8wMDAxLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUtaXMtc3BlY2lmaWMtdG8tZ2xpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50LzAwMDEtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS1pcy1zcGVjaWZpYy10by1nbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY5M2M0Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50LzAwMDEtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS1pcy1zcGVjaWZpYy10by1nbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMjNhMzc1OWI3NGQwODFiM2IyODQ5YjBkMzdhMGU1MjE5ZjM3ODEzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDcgSmFuIDIwMTYgMjI6Mzc6NDggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSBpcyBzcGVjaWZpYyB0byBnbGliYwotCi1XaGVuIG9uIExpbnV4IGFuZCBub3QgdXNpbmcgZ2xpYmMgdGhlbiB3ZSBuZWVkIHRvIGRlZmluZQotY2Fub25pY2FsaXplX2ZpbGVfbmFtZSgpIEFQSSwgdGhlcmVmb3JlIGFkZCBhIGNoZWNrIGZvciBmaW5kaW5nIG91dCBpZgotaXRzIG5vdCBnbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGFnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5jIHwgMiArLQotIGFnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5oIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmMgYi9hZ2VudC90Y2YvZnJhbWV3b3JrL21kZXAuYwotaW5kZXggMmI1MmNhOC4uN2QwOTY1NSAxMDA2NDQKLS0tLSBhL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5jCi0rKysgYi9hZ2VudC90Y2YvZnJhbWV3b3JrL21kZXAuYwotQEAgLTEwNDIsNyArMTA0Miw3IEBAIGNoYXIgKiBjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKiBwYXRoKSB7Ci0gICAgIHJldHVybiBzdHJkdXAocmVzKTsKLSB9Ci0gCi0tI2VsaWYgZGVmaW5lZChfX1VDTElCQ19fKQotKyNlbGlmIGRlZmluZWQoX19VQ0xJQkNfXykgfHwgIWRlZmluZWQoX19HTElCQ19fKQotIAotIGNoYXIgKiBjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKiBwYXRoKSB7Ci0gICAgIHJldHVybiByZWFscGF0aChwYXRoLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9hZ2VudC90Y2YvZnJhbWV3b3JrL21kZXAuaCBiL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5oCi1pbmRleCAxZTcxOGEyLi4xODdjMzk5IDEwMDY0NAotLS0tIGEvYWdlbnQvdGNmL2ZyYW1ld29yay9tZGVwLmgKLSsrKyBiL2FnZW50L3RjZi9mcmFtZXdvcmsvbWRlcC5oCi1AQCAtMjc2LDcgKzI3Niw3IEBAIGV4dGVybiBpbnQgbG9jX2Nsb2NrX2dldHRpbWUoaW50LCBzdHJ1Y3QgdGltZXNwZWMgKik7Ci0gCi0gI2RlZmluZSBPX0JJTkFSWSAwCi0gCi0tI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pCi0rI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKLSAjICBkZWZpbmUgT19MQVJHRUZJTEUgMAotIGV4dGVybiBjaGFyICoqIGVudmlyb247Ci0gZXh0ZXJuIGNoYXIgKiBjYW5vbmljYWxpemVfZmlsZV9uYW1lKGNvbnN0IGNoYXIgKiBwYXRoKTsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudC9maXhfcmFubGliLnBhdGNoCmluZGV4IGI2NmY0MWEuLmFiZDMzYmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnQvZml4X3JhbmxpYi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50L2ZpeF9yYW5saWIucGF0Y2gKQEAgLTEsMTYgKzEsMTcgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbcG9reS1zcGVjaWZpYyBmaXhdCitBY3R1YWxseSBwYXNzIHRoZSBhcmd1bWVudHMgdG8gUkFOTElCLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKIEluZGV4OiBhZ2VudC9NYWtlZmlsZS5pbmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhZ2VudC5vcmlnL01ha2VmaWxlLmluYwotKysrIGFnZW50L01ha2VmaWxlLmluYwotQEAgLTg4LDYgKzg4LDkgQEAgaWZuZXEgKCQoT1BTWVMpLFdpbmRvd3MpCi0gICBpZm5lcSAoJChDQyksZysrKQotICAgICBPUFRTICs9IC1XbWlzc2luZy1wcm90b3R5cGVzCistLS0gYS9NYWtlZmlsZS5pbmMKKysrKyBiL01ha2VmaWxlLmluYworQEAgLTkyLDYgKzkyLDcgQEAgaWZlcSAoJChPUFNZUyksR05VL0xpbnV4KQorICAgICBPUFRTICs9IC1EVVNFX3V1aWRfZ2VuZXJhdGU9MAogICAgZW5kaWYKLSsgIGlmbmVxICgkKFJBTkxJQiksKQotKyAgICBSQU5MSUIgKz0gJEAKLSsgIGVuZGlmCisgICBPUFRTICs9IC1ERU5BQkxFX2FyY2hfJChzaGVsbCB1bmFtZSAtbSkKKysgIFJBTkxJQiArPSAkQAogIGVuZGlmCi0gCi0gIyBDb21waWxlciBmbGFncyBkZWZpbml0aW9uCisKKyBpZm5lcSAoJChPUFNZUyksV2luZG93cykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggYmExNGM0Mi4uZDkwMWMxOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTUsMTQgKzUsMTMgQEAKIExJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9lZGwtdjEwLmh0bWw7bWQ1PTUyMmEzOTBhODNkYzE4NjUxM2YwNTAwNTQzYWQzNjc5IgogCi1TUkNSRVYgPSAiMmRkZGQ1ZjQ0MGExNWQ1NDA2MDMyZmFjMjBmMjA2NDg0NTEzNjQ2ZiIKLVBWID0gIjEuNC4wK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImEwMjJlZjJmMWFjZmQ5MjA5YTFiZjc5MmRkYTE0YWU0YjBkMWI2MGYiCitQViA9ICIxLjcuMCtnaXQke1NSQ1BWfSIKIAogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi1TUkNfVVJJID0gImdpdDovL2dpdC5lY2xpcHNlLm9yZy9naXRyb290L3RjZi9vcmcuZWNsaXBzZS50Y2YuYWdlbnQ7YnJhbmNoPTEuNF9uZW9uX2J1Z2ZpeCBcCitTUkNfVVJJID0gImdpdDovL2dpdC5lY2xpcHNlLm9yZy9naXRyb290L3RjZi9vcmcuZWNsaXBzZS50Y2YuYWdlbnQgXAogICAgICAgICAgICBmaWxlOi8vZml4X3JhbmxpYi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2Fub25pY2FsaXplX2ZpbGVfbmFtZS1pcy1zcGVjaWZpYy10by1nbGliYy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vdGNmLWFnZW50LmluaXQgXAogICAgICAgICAgICBmaWxlOi8vdGNmLWFnZW50LnNlcnZpY2UgXAogICAgICAgICAgICIKQEAgLTQ2LDYgKzQ1LDcgQEAKIENGTEFHU19hcHBlbmRfbWlwczY0ID0gIiAke0xDTF9TVE9QX1NFUlZJQ0VTfSIKIENGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAke0xDTF9TVE9QX1NFUlZJQ0VTfSIKIENGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAke0xDTF9TVE9QX1NFUlZJQ0VTfSIKK0NGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiAKIGRvX2luc3RhbGwoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExST09UPSR7RH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzLzAwMDEtYXR0ci1maXgtdXRpbWUtZm9yLXN5bWxpbmsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzMy8wMDAxLWF0dHItZml4LXV0aW1lLWZvci1zeW1saW5rLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NTdkMTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzMy8wMDAxLWF0dHItZml4LXV0aW1lLWZvci1zeW1saW5rLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gM2Y0ZmNiNjI2NjEwNTliYWQ3N2EyZTk1N2I0NjIxMTM3Nzk3YmMyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJ1aSBXYW5nIDxydWkud2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxNSBKdW4gMjAxOCAxNDoxOToxMCArMDgwMAorU3ViamVjdDogW1BBVENIXSBhdHRyOiBmaXggdXRpbWUgZm9yIHN5bWxpbmsKKwordW5mczMgaGFzIGFuIG9sZCBkZWZlY3QgdGhhdCBpdCBjYW4gbm90IGNoYW5nZSB0aGUgdGltZXN0YW1wcyBvZiBhCitzeW1saW5rIGZpbGUgYmVjYXVzZSBpdCBvbmx5IHVzZXMgdXRpbWUoKSwgd2hpY2ggd2lsbCBmb2xsb3cgdGhlCitzeW1saW5rLiBUaGlzIHdpbGwgbm90IGNhdXNlIGFuIGVycm9yIGlmIHRoZSBzeW1saW5rIHBvaW50cyB0byBhbgorZXhpc3RlbnQgZmlsZS4gQnV0IHVuZGVyIHNvbWUgc3BlY2lhbCBzaXR1YXRpb24sIHN1Y2ggYXMgaW5zdGFsbGluZworYSBycG0gcGFja2FnZSwgcnBtIHRvb2wgd2lsbCBjcmVhdGUgdGhlIHN5bWxpbmsgZmlyc3QgYW5kIHRyeSB0bworbW9kaWZ5IHRoZSB0aW1lc3RhbXBzIG9mIGl0LCB3aGVuIHRoZSB0YXJnZXQgZmlsZSBpcyBub24tZXhpc3RlbnQuCitUaGlzIHdpbGwgY2F1c2UgYW4gRVNUQUxFIGVycm9yLiBNYWtpbmcgcnBtIHRvb2wgaWdub3JlIHRoaXMgZXJyb3IKK2lzIGEgc29sdXRpb24sIGJ1dCBub3QgdGhlIGJlc3Qgb25lLiBBbiBhY2NlcHRhYmxlIGFwcHJvYWNoIGlzCitNYWtpbmcgdW5mczMgc3VwcG9ydCBsdXRpbWVzKCksIHdoaWNoIGNhbiBtb2RpZnkgdGhlIHN5bWxpbmsgZmlsZQoraXRzZWxmLiBDb25zaWRlcmluZyBub3QgZXZlcnkgc3lzdGVtIHN1cHBvcnQgdGhpcyBmdW5jdGlvbiwgc28gYQorZnVuY3Rpb24gY2hlY2tpbmcgaXMgbmVjZXNzYXJ5LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC91bmZzMy9idWdzLzEyL10KKworU2lnbmVkLW9mZi1ieTogUnVpIFdhbmcgPHJ1aS53YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBhdHRyLmMgICAgICAgICB8IDE1ICsrKysrKysrKysrLS0tLQorIGJhY2tlbmRfdW5peC5oIHwgIDIgKysKKyBjb25maWd1cmUuYWMgICB8ICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdHRyLmMgYi9hdHRyLmMKK2luZGV4IDczZTVjNzUuLjQyN2QwZTIgMTAwNjQ0CistLS0gYS9hdHRyLmMKKysrKyBiL2F0dHIuYworQEAgLTI4MCw3ICsyODAsNyBAQCBwb3N0X29wX2F0dHIgZ2V0X3Bvc3RfY2FjaGVkKHN0cnVjdCBzdmNfcmVxICogcmVxKQorIHN0YXRpYyBuZnNzdGF0MyBzZXRfdGltZShjb25zdCBjaGFyICpwYXRoLCBiYWNrZW5kX3N0YXRzdHJ1Y3QgYnVmLCBzYXR0cjMgbmV3KQorIHsKKyAgICAgdGltZV90IG5ld19hdGltZSwgbmV3X210aW1lOworLSAgICBzdHJ1Y3QgdXRpbWJ1ZiB1dGltOworKyAgICBzdHJ1Y3QgdGltZXZhbCBzdGFtcHNbMl07CisgICAgIGludCByZXM7CisKKyAgICAgLyogc2V0IGF0aW1lIGFuZCBtdGltZSAqLworQEAgLTMwMiwxMCArMzAyLDE3IEBAIHN0YXRpYyBuZnNzdGF0MyBzZXRfdGltZShjb25zdCBjaGFyICpwYXRoLCBiYWNrZW5kX3N0YXRzdHJ1Y3QgYnVmLCBzYXR0cjMgbmV3KQorCWVsc2UJCQkgICAgICAgLyogRE9OVF9DSEFOR0UgKi8KKwkgICAgbmV3X210aW1lID0gYnVmLnN0X210aW1lOworCistCXV0aW0uYWN0aW1lID0gbmV3X2F0aW1lOworLQl1dGltLm1vZHRpbWUgPSBuZXdfbXRpbWU7CisrCXN0YW1wc1swXS50dl9zZWMgPSBuZXdfYXRpbWU7CisrCXN0YW1wc1swXS50dl91c2VjID0gMDsKKysJc3RhbXBzWzFdLnR2X3NlYyA9IG5ld19tdGltZTsKKysJc3RhbXBzWzFdLnR2X3VzZWMgPSAwOworKworKyNpZiBIQVZFX0xVVElNRVMKKysJcmVzID0gYmFja2VuZF9sdXRpbWVzKHBhdGgsIHN0YW1wcyk7CisrI2Vsc2UKKysJcmVzID0gYmFja2VuZF91dGltZXMocGF0aCwgc3RhbXBzKTsKKysjZW5kaWYKKworLQlyZXMgPSBiYWNrZW5kX3V0aW1lKHBhdGgsICZ1dGltKTsKKwlpZiAocmVzID09IC0xKQorCSAgICByZXR1cm4gc2V0YXR0cl9lcnIoKTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2JhY2tlbmRfdW5peC5oIGIvYmFja2VuZF91bml4LmgKK2luZGV4IGZiYzJhZjMuLjgxM2ZmZDMgMTAwNjQ0CistLS0gYS9iYWNrZW5kX3VuaXguaAorKysrIGIvYmFja2VuZF91bml4LmgKK0BAIC02MSw2ICs2MSw4IEBACisgI2RlZmluZSBiYWNrZW5kX3N5bWxpbmsgc3ltbGluaworICNkZWZpbmUgYmFja2VuZF90cnVuY2F0ZSB0cnVuY2F0ZQorICNkZWZpbmUgYmFja2VuZF91dGltZSB1dGltZQorKyNkZWZpbmUgYmFja2VuZF91dGltZXMgdXRpbWVzCisrI2RlZmluZSBiYWNrZW5kX2x1dGltZXMgbHV0aW1lcworICNkZWZpbmUgYmFja2VuZF9zdGF0c3RydWN0IHN0cnVjdCBzdGF0CisgI2RlZmluZSBiYWNrZW5kX2RpcnN0cmVhbSBESVIKKyAjZGVmaW5lIGJhY2tlbmRfc3RhdHZmc3N0cnVjdCBzdHJ1Y3Qgc3RhdHZmcworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYWVlYzU5OC4uZWE3ZjE2NyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzcsNiArMzcsNyBAQCBBQ19DSEVDS19GVU5DUyhzZXRyZXN1aWQgc2V0cmVzZ2lkKQorIEFDX0NIRUNLX0ZVTkNTKHZzeXNsb2cpCisgQUNfQ0hFQ0tfRlVOQ1MobGNob3duKQorIEFDX0NIRUNLX0ZVTkNTKHNldGdyb3VwcykKKytBQ19DSEVDS19GVU5DUyhsdXRpbWVzKQorIFVORlMzX1NPTEFSSVNfUlBDCisgVU5GUzNfUE9SVE1BUF9ERUZJTkUKKyBVTkZTM19DT01QSUxFX1dBUk5JTkdTCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCmluZGV4IDgxMjdlNGEuLjVhODFhOGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCkBAIC0yOSw3ICsyOSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9yZWxhdGl2ZV9tYXhfc29ja2V0X3BhdGhfbGVuLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3RjcF9ub19kZWxheS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRhZW1vbi5jLUxpYnRpcnBjLXBvcnRpbmctZml4ZXMucGF0Y2ggXAotICAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF0dHItZml4LXV0aW1lLWZvci1zeW1saW5rLnBhdGNoIFwKKyAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMmU0M2U0NzFjNzdhZGUwMzMxOTAxYzQwYjhmOGU5YTMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjEwMDk0NjhhOWJhMDdiNzJlYTkzNzgwZDAyNWE2M2FiNGU1NWJmOGZjMzEyNzgwM2MyOTZmMDkwMGZlMWJhYyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKaW5kZXggYjIyZmFhZC4uZjY4MDY0MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCkBAIC0yNCwxMiArMjQsMTUgQEAKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS0ke1NIUlRfVkVSfS92YXBpICR7bGliZGlyfS8ke0JQTn0tJHtTSFJUX1ZFUn0vIgogRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCiAKKyMgLmdpciBmaWxlcyBmcm9tIGdvYmplY3QtaW50cm9zcGVjdGlvbiBhcmUgaW5zdGFsbGVkIHRvICR7bGliZGlyfSB3aGVuIG11bHRpbGliIGlzIGVuYWJsZWQKK0dJUkRJUl9PUFQgPSAiJHtAJy0tZ2lyZGlyPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAnIGlmIGQuZ2V0VmFyKCdNVUxUSUxJQlMnKSBlbHNlICcnfSIKKwogZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewogICAgICAgICAjIFdyaXRlIG91dCBhIHZhcGlnZW4gd3JhcHBlciB0aGF0IHdpbGwgYmUgcHJvdmlkZWQgYnkgcGtnLWNvbmZpZyBmaWxlIGluc3RhbGxlZCBpbiB0YXJnZXQgc3lzcm9vdAogICAgICAgICAjIFRoZSB3cmFwcGVyIHdpbGwgY2FsbCBhIG5hdGl2ZSB2YXBpZ2VuCiAgICAgICAgIGNhdCA+ICR7Qn0vdmFwaWdlbi13cmFwcGVyIDw8IEVPRgogIyEvYmluL3NoCi12YXBpZ2VuLSR7U0hSVF9WRVJ9ICJcJEAiCit2YXBpZ2VuLSR7U0hSVF9WRVJ9ICR7R0lSRElSX09QVH0gIlwkQCIKIEVPRgogICAgICAgICBjaG1vZCAreCAke0J9L3ZhcGlnZW4td3JhcHBlcgogfQpAQCAtNTUsMyArNTgsNSBAQAogICAgICAgICAgICAtZSAic3x2YXBpZ2VuPS4qfHZhcGlnZW49JHtiaW5kaXJ9L3ZhcGlnZW4td3JhcHBlcnwiIFwKICAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy92YXBpZ2VuLSR7U0hSVF9WRVJ9LnBjCiB9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJ2YXBpZ2VuLXdyYXBwZXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEvZGlzYWJsZS1ncmFwaHZpei5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS9kaXNhYmxlLWdyYXBodml6LnBhdGNoCmluZGV4IDE1ZDE4NmQuLjQ3NzUwNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS9kaXNhYmxlLWdyYXBodml6LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS9kaXNhYmxlLWdyYXBodml6LnBhdGNoCkBAIC0xLDEyICsxLDE0IEBACi1Gcm9tIGViNzE2ZGM4NTZjMjBiM2RhMTQ2YTRlODNlOTgwMGJkMWY1M2M3MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU3ZjZiNjYxZDc4NjVlOGNlY2QxN2JlMzZmYWI2OGY3Zjg0NDc5OTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSaWNvIFR6c2NoaWNoaG9seiA8cmljb3R6QHVidW50dS5jb20+CiBEYXRlOiBXZWQsIDYgU2VwIDIwMTcgMTg6NTI6NTUgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gbGlidmFsYWRvYzogQWxsb3cgZGlzYWJsaW5nIHRoZSBncmFwaHZpeiBkZXBlbmRlbmN5IG9mCisKICB2YWxhZG9jCiAKIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODczNzUKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Z3ppbGxhIGxpbmsgYWJvdmVdCisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2MCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogIGxpYnZhbGFkb2MvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKy0tLS0KQEAgLTE1LDEwICsxNywxMCBAQAogIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM3M2Q1ZDZiMS4uMjkxZTUwM2Q1IDEwMDY0NAoraW5kZXggNzMwYzcyZC4uYWY4MTk4NiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTgsMzQgKzk4LDM4IEBAIFBLR19DSEVDS19NT0RVTEVTKEdNT0RVTEUsIGdtb2R1bGUtMi4wID49ICRHTElCX1JFUVVJUkVEKQorQEAgLTExOSwzNCArMTE5LDM4IEBAIFBLR19DSEVDS19NT0RVTEVTKEdNT0RVTEUsIGdtb2R1bGUtMi4wID49ICRHTElCX1JFUVVJUkVEKQogIEFDX1NVQlNUKEdNT0RVTEVfQ0ZMQUdTKQogIEFDX1NVQlNUKEdNT0RVTEVfTElCUykKICAKQEAgLTg2LDEwICs4OCwxMCBAQAogIAogIEFDX1BBVEhfUFJPRyhbWFNMVFBST0NdLCBbeHNsdHByb2NdLCA6KQogZGlmZiAtLWdpdCBhL2xpYnZhbGFkb2MvTWFrZWZpbGUuYW0gYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCi1pbmRleCA4OTI0NWQ4NmIuLjdjMDc0OThiOSAxMDA2NDQKK2luZGV4IDM4NDI5MmYuLmNjZTUwZDggMTAwNjQ0CiAtLS0gYS9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCiArKysgYi9saWJ2YWxhZG9jL01ha2VmaWxlLmFtCi1AQCAtMTI3LDEwICsxMjcsNiBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAorQEAgLTEyNiwxMCArMTI2LDYgQEAgbGlidmFsYWRvY19sYV9WQUxBU09VUkNFUyA9IFwKICAJY29udGVudC90YWJsZXJvdy52YWxhIFwKICAJY29udGVudC90YWdsZXQudmFsYSBcCiAgCWNvbnRlbnQvdGV4dC52YWxhIFwKQEAgLTEwMCw3ICsxMDIsNyBAQAogIAlwYXJzZXIvbWFueXJ1bGUudmFsYSBcCiAgCXBhcnNlci9vbmVvZnJ1bGUudmFsYSBcCiAgCXBhcnNlci9vcHRpb25hbHJ1bGUudmFsYSBcCi1AQCAtMTU4LDEzICsxNTQsMjQgQEAgbGlidmFsYWRvY19sYV9WQUxBU09VUkNFUyA9IFwKK0BAIC0xNTYsMTMgKzE1MiwyNCBAQCBsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTID0gXAogIAloaWdobGlnaHRlci9jb2RldG9rZW4udmFsYSBcCiAgCWhpZ2hsaWdodGVyL2hpZ2hsaWdodGVyLnZhbGEgXAogIAlodG1sL2Jhc2ljZG9jbGV0LnZhbGEgXApAQCAtMTI2LDE3ICsxMjgsMTggQEAKICBsaWJ2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQF9sYV9TT1VSQ0VTID0gXAogIAlsaWJ2YWxhZG9jLnZhbGEuc3RhbXAgXAogIAkkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVM6LnZhbGE9LmMpIFwKLUBAIC0xODIsOCArMTg5LDggQEAgbGlidmFsYWRvYy52YWxhLnN0YW1wOiAkKGxpYnZhbGFkb2NfbGFfVkFMQVNPVVJDRVMpCitAQCAtMTgyLDkgKzE4OSw5IEBAIGxpYnZhbGFkb2MudmFsYS5zdGFtcDogJChsaWJ2YWxhZG9jX2xhX1ZBTEFTT1VSQ0VTKQogIAkJLS1saWJyYXJ5IHZhbGFkb2MgXAogIAkJLS12YXBpIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkgXAogIAkJLS12YXBpZGlyICQodG9wX3NyY2RpcikvdmFwaSAtLXBrZyBnbW9kdWxlLTIuMCBcCiAtCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS92YXBpIC0tcGtnIGxpYmd2YyBcCiAgCQktLXZhcGlkaXIgJCh0b3Bfc3JjZGlyKS9nZWUgLS1wa2cgZ2VlIFwKKyAJCS0tdmFwaWRpciAkKHRvcF9zcmNkaXIpL3ZhbGEgLS1wa2cgdmFsYSBcCiArCQkkKExJQkdWQ19QS0cpIFwKICAJCS0tcGtnIGNvbmZpZyBcCiAgCQkkKGZpbHRlciAlLnZhbGEgJS5jLCReKQogIAl0b3VjaCAkQAotQEAgLTIwOSw2ICsyMTYsOSBAQCBub2Rpc3RfcGtnY29uZmlnX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5wYworQEAgLTIxMSw2ICsyMTgsOSBAQCBub2Rpc3RfcGtnY29uZmlnX0RBVEEgPSB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5wYwogIAogIHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnBjOiB2YWxhZG9jLnBjCiAgCWNwICQ8ICRACkBAIC0xNDYsNyArMTQ5LDcgQEAKICAKICB2YXBpZGlyID0gJChkYXRhZGlyKS92YWxhL3ZhcGkKICBkaXN0X3ZhcGlfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALnZhcGkKLUBAIC0yMTYsNiArMjI2LDkgQEAgbm9kaXN0X3ZhcGlfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALmRlcHMKK0BAIC0yMTgsNiArMjI4LDkgQEAgbm9kaXN0X3ZhcGlfREFUQSA9IHZhbGFkb2NAUEFDS0FHRV9TVUZGSVhALmRlcHMKICAKICB2YWxhZG9jQFBBQ0tBR0VfU1VGRklYQC5kZXBzOiB2YWxhZG9jLmRlcHMKICAJY3AgJDwgJEAKQEAgLTE1Nyw3ICsxNjAsNyBAQAogIEVYVFJBX0RJU1QgPSBcCiAgCSQobGlidmFsYWRvY19sYV9WQUxBU09VUkNFUykgXAogZGlmZiAtLWdpdCBhL2xpYnZhbGFkb2MvaHRtbC9iYXNpY2RvY2xldC52YWxhIGIvbGlidmFsYWRvYy9odG1sL2Jhc2ljZG9jbGV0LnZhbGEKLWluZGV4IGNjOWVhNGVkNy4uNDMyYzM4MThmIDEwMDY0NAoraW5kZXggMzdjNzMxYy4uZTAzMjZlZiAxMDA2NDQKIC0tLSBhL2xpYnZhbGFkb2MvaHRtbC9iYXNpY2RvY2xldC52YWxhCiArKysgYi9saWJ2YWxhZG9jL2h0bWwvYmFzaWNkb2NsZXQudmFsYQogQEAgLTQ2LDcgKzQ2LDExIEBAIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBWYWxhZG9jLkh0bWwuQmFzaWNEb2NsZXQgOiBBcGkuVmlzaXRvciwgRG9jbGV0IHsKQEAgLTE5OSwyNSArMjAyLDIzIEBACiAgCiAgCXB1YmxpYyB2b2lkIHdyaXRlX25hbWVzcGFjZV9jb250ZW50IChOYW1lc3BhY2Ugbm9kZSwgQXBpLk5vZGU/IHBhcmVudCkgewogZGlmZiAtLWdpdCBhL2xpYnZhbGFkb2MvaHRtbC9odG1sbWFya3Vwd3JpdGVyLnZhbGEgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCi1pbmRleCAxNWVkOWVmZDEuLmZlMGQ3MDVkNCAxMDA2NDQKK2luZGV4IDVhYTRhZmQuLmU3OWIwYjggMTAwNjQ0CiAtLS0gYS9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCiArKysgYi9saWJ2YWxhZG9jL2h0bWwvaHRtbG1hcmt1cHdyaXRlci52YWxhCi1AQCAtNDMsMTIgKzQzLDE2IEBAIHB1YmxpYyBjbGFzcyBWYWxhZG9jLkh0bWwuTWFya3VwV3JpdGVyIDogVmFsYWRvYy5NYXJrdXBXcml0ZXIgewotIAkJfSwgeG1sX2RlY2xhcmF0aW9uKTsKK0BAIC01MSwxMiArNTEsMTYgQEAgcHVibGljIGNsYXNzIFZhbGFkb2MuSHRtbC5NYXJrdXBXcml0ZXIgOiBWYWxhZG9jLk1hcmt1cFdyaXRlciB7CisgCQl9CiAgCX0KICAKICsjaWYgSEFWRV9HUkFQSFZJWgotIAlwdWJsaWMgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKENoYXJ0cy5DaGFydCBjaGFydCkgeworIAlwdWJsaWMgdW5vd25lZCBNYXJrdXBXcml0ZXIgYWRkX3VzZW1hcCAoQ2hhcnRzLkNoYXJ0IGNoYXJ0KSB7CiAgCQlzdHJpbmc/IGJ1ZiA9IChzdHJpbmc/KSBjaGFydC53cml0ZV9idWZmZXIgKCJjbWFweCIpOwogIAkJaWYgKGJ1ZiAhPSBudWxsKSB7CiAgCQkJcmF3X3RleHQgKCJcbiIpOwogIAkJCXJhd190ZXh0ICgoISkgYnVmKTsKICAJCX0KICsjZWxzZQotKwlwdWJsaWMgTWFya3VwV3JpdGVyIGFkZF91c2VtYXAgKHZvaWQqIGNoYXJ0KSB7CisrCXB1YmxpYyB1bm93bmVkIE1hcmt1cFdyaXRlciBhZGRfdXNlbWFwICh2b2lkKiBjaGFydCkgewogKyNlbmRpZgogIAogIAkJcmV0dXJuIHRoaXM7CiAgCX0KLS0tIAotMi4xNC4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzguOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJiYWY2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zOC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKLQkgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYXBodml6LnBhdGNoIFwKLQkgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzN2VkZDA0NjdkMDU2ZmQ5ZTM5MzdkMGJiY2VkYTgwYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZmE3NDZiNTFjZDY2ZTQzNTc3ZDFkYTA2YTgwYjcwOGMyODc1Y2FkYWFmZWU3N2U5NzAwZWEzNWNmMjM4ODJjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwMmUwYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQyLjAuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1naXQtdmVyc2lvbi1nZW4tZG9uLXQtYXBwZW5kLWRpcnR5LWlmLXdlLXJlLW5vdC1pbi1nLnBhdGNoIFwKKyAgICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKwkgICAgIGZpbGU6Ly9kaXNhYmxlLWdyYXBodml6LnBhdGNoIFwKKwkgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtdmFsYWRvYy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhYTZlYjgwOTdkMjViNTg0N2FkM2ZhYjM0YzBmZjg2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MmE1NTk4NmRhMjNjZjNhYWFmZDc2MjRjMzJkYjJhMWFmMTFjODQxOWUwYmIwNzUxNzI3ZDEwZjFmN2FiN2JlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1HdWFyZC1hZ2FpbnN0LV9fR0xJQkNfUFJFUkVRLWZvci1tdXNsLWxpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLUd1YXJkLWFnYWluc3QtX19HTElCQ19QUkVSRVEtZm9yLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWZlNjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1HdWFyZC1hZ2FpbnN0LV9fR0xJQkNfUFJFUkVRLWZvci1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAxYjViNmY4MjdhYzExNTNhNDFmYzkzZTc4YmYzNGNjZGY1NzIwYjliIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxOSBPY3QgMjAxOCAxMDozMToxMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBHdWFyZCBhZ2FpbnN0IF9fR0xJQkNfUFJFUkVRIGZvciBtdXNsIGxpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5cy1zdGF0eC5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5cy1zdGF0eC5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzLXN0YXR4LmMKK2luZGV4IGZlOWY5YmE0NS4uNDczYzJjZDdmIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzLXN0YXR4LmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5cy1zdGF0eC5jCitAQCAtNywxMSArNywxNiBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisrCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQorICNpZiBfX0dMSUJDX1BSRVJFUSgyLDI4KQorIC8qIHN0cnVjdCBzdGF0eCBwcm92aWRlZCBpbiBzeXMvc3RhdC5oICovCisgI2Vsc2UKKyAjaW5jbHVkZSA8bGludXgvc3RhdC5oPgorICNlbmRpZgorKyNlbHNlCisrI2luY2x1ZGUgPGxpbnV4L3N0YXQuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKyBpbnQgY2hlY2tfc3RhdDI7CistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNWVhMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtTWFrZS1sb2NhbC1mdW5jdGlvbnMtc3RhdGljLXRvLWF2b2lkLWFzc2VtYmxlci1lcnJvci5wYXRjaApAQCAtMCwwICsxLDE4MiBAQAorRnJvbSAyMTU1YzFiMmNmMDBlNzQ0ZTI4MGM0OTNlYjc0YmY0NTdkZmNjM2IxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCAyMSBPY3QgMjAxOCAxNTowOTozMSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIGxvY2FsIGZ1bmN0aW9ucyBzdGF0aWMgdG8gYXZvaWQgYXNzZW1ibGVyIGVycm9yCisKK0F2b2lkIG1pcHMzMiB4LWNvbXBpbGVyIHdhcm5pbmdzIHN1Y2ggYXM6CisKK3wgLi4vLi4vLi4vdmFsZ3JpbmQtMy4xNC4wL2hlbGdyaW5kL3Rlc3RzL2Fubm90YXRlX2hiZWZvcmUuYzozNjA6Njogd2FybmluZzogbm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciAnZG9fc2lnbmFsJyBbLVdtaXNzaW5nLXByb3RvdHlwZXNdCit8ICB2b2lkIGRvX3NpZ25hbCAoIFVXb3JkKiB3ICkKK3wgICAgICAgXn5+fn5+fn5+CisKK2J5IG1ha2luZyBmdW5jdGlvbnMgYW5kIGdsb2JhbCB2YXJpYWJsZXMgdGhhdCBhcmUgZmlsZSBzY29wZSBiZSBzdGF0aWMKK2FuZCBtb3JlIGltcG9ydGFudGx5IGFsc28gYXZvaWQgYW4gYXNzZW1ibGVyIGVycm9yOgorCisvdG1wL2NjZTIyaWl3LnM6IEFzc2VtYmxlciBtZXNzYWdlczoKKy90bXAvY2NlMjJpaXcuczo0NDY6IEVycm9yOiBzeW1ib2wgYGV4aXRfMCcgaXMgYWxyZWFkeSBkZWZpbmVkCisvdG1wL2NjZTIyaWl3LnM6NDQ4OiBFcnJvcjogc3ltYm9sIGBleGl0JyBpcyBhbHJlYWR5IGRlZmluZWQKKy90bXAvY2NlMjJpaXcuczo5MTU6IEVycm9yOiBzeW1ib2wgYGV4aXRfMCcgaXMgYWxyZWFkeSBkZWZpbmVkCisvdG1wL2NjZTIyaWl3LnM6OTE3OiBFcnJvcjogc3ltYm9sIGBleGl0JyBpcyBhbHJlYWR5IGRlZmluZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KKy0tLQorIGhlbGdyaW5kL3Rlc3RzL2Fubm90YXRlX2hiZWZvcmUuYyB8IDM0ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9oZWxncmluZC90ZXN0cy9hbm5vdGF0ZV9oYmVmb3JlLmMgYi9oZWxncmluZC90ZXN0cy9hbm5vdGF0ZV9oYmVmb3JlLmMKK2luZGV4IGUzMTE3MTRmNy4uZjU1NTE0ZTQ1IDEwMDY0NAorLS0tIGEvaGVsZ3JpbmQvdGVzdHMvYW5ub3RhdGVfaGJlZm9yZS5jCisrKysgYi9oZWxncmluZC90ZXN0cy9hbm5vdGF0ZV9oYmVmb3JlLmMKK0BAIC0yNCw3ICsyNCw3IEBAIHR5cGVkZWYgIHVuc2lnbmVkIGxvbmcgaW50ICBVV29yZDsKKyAKKyAvLyBwcGM2NAorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBvbGQsIHN1Y2Nlc3M7CisgCitAQCAtNTcsNyArNTcsNyBAQCBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAvLyBwcGMzMgorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBvbGQsIHN1Y2Nlc3M7CisgCitAQCAtOTAsNyArOTAsNyBAQCBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAvLyBhbWQ2NAorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICAgVVdvcmQgYmxvY2tbNF0gPSB7IChVV29yZClhZGRyLCBleHBlY3RlZCwgbnl1LCAyIH07CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCitAQCAtMTEzLDcgKzExMyw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIHg4NgorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICAgVVdvcmQgYmxvY2tbNF0gPSB7IChVV29yZClhZGRyLCBleHBlY3RlZCwgbnl1LCAyIH07CisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCitAQCAtMTM4LDcgKzEzOCw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIGFybQorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBvbGQsIHN1Y2Nlc3M7CisgICBVV29yZCBibG9ja1syXSA9IHsgKFVXb3JkKWFkZHIsIG55dSB9OworQEAgLTE3MSw3ICsxNzEsNyBAQCBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAvLyBhcm02NAorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBvbGQsIHN1Y2Nlc3M7CisgICBVV29yZCBibG9ja1syXSA9IHsgKFVXb3JkKWFkZHIsIG55dSB9OworQEAgLTIwNCw3ICsyMDQsNyBAQCBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAvLyBzMzkweAorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXKFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKytzdGF0aWMgVVdvcmQgZG9fYWNhc1coVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIHsKKyAgICBpbnQgY2M7CisgCitAQCAtMjIzLDcgKzIyMyw3IEBAIFVXb3JkIGRvX2FjYXNXKFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyAKKyAvLyBtaXBzMzIKKyAvKiByZXR1cm4gMSBpZiBzdWNjZXNzLCAwIGlmIGZhaWx1cmUgKi8KKy1VV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKytzdGF0aWMgVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgeworICAgVVdvcmQgc3VjY2VzczsKKyAgIFVXb3JkIGJsb2NrWzNdID0geyAoVVdvcmQpYWRkciwgbnl1LCBleHBlY3RlZH07CitAQCAtMjU2LDcgKzI1Niw3IEBAIFVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorIAorIC8vIG1pcHM2NAorIC8qIHJldHVybiAxIGlmIHN1Y2Nlc3MsIDAgaWYgZmFpbHVyZSAqLworLVVXb3JkIGRvX2FjYXNXICggVVdvcmQqIGFkZHIsIFVXb3JkIGV4cGVjdGVkLCBVV29yZCBueXUgKQorK3N0YXRpYyBVV29yZCBkb19hY2FzVyAoIFVXb3JkKiBhZGRyLCBVV29yZCBleHBlY3RlZCwgVVdvcmQgbnl1ICkKKyB7CisgICBVV29yZCBzdWNjZXNzOworICAgVVdvcmQgYmxvY2tbM10gPSB7IChVV29yZClhZGRyLCBueXUsIGV4cGVjdGVkfTsKK0BAIC0yODcsNyArMjg3LDcgQEAgVVdvcmQgZG9fYWNhc1cgKCBVV29yZCogYWRkciwgVVdvcmQgZXhwZWN0ZWQsIFVXb3JkIG55dSApCisgCisgI2VuZGlmCisgCistdm9pZCBhdG9taWNfaW5jVyAoIFVXb3JkKiB3ICkKKytzdGF0aWMgdm9pZCBhdG9taWNfaW5jVyAoIFVXb3JkKiB3ICkKKyB7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICBVV29yZCBvbGQgPSAqdzsKK0BAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBhdG9taWNfaW5jVyAoIFVXb3JkKiB3ICkKKyAKKyAjZGVmaW5lIE5OTiAxMDAwMDAwCisgCistdm9pZCogdGhyZWFkX2ZuICggdm9pZCogYXJnICkKKytzdGF0aWMgdm9pZCogdGhyZWFkX2ZuICggdm9pZCogYXJnICkKKyB7CisgICBVV29yZCogdyA9IChVV29yZCopYXJnOworICAgaW50IGk7CitAQCAtMzMxLDEwICszMzEsMTAgQEAgaW50IG1haW4gKCB2b2lkICkKKyAKKyAjZW5kaWYKKyAKKy1pbnQgc2hhcmVkX3ZhciA9IDA7ICAvLyBpcyBub3QgcmFjZWQgdXBvbgorK3N0YXRpYyBpbnQgc2hhcmVkX3ZhciA9IDA7ICAvLyBpcyBub3QgcmFjZWQgdXBvbgorIAorIAorLXZvaWQgZGVsYXlYbXMgKCBpbnQgaSApCisrc3RhdGljIHZvaWQgZGVsYXlYbXMgKCBpbnQgaSApCisgeworICAgIHN0cnVjdCB0aW1lc3BlYyB0cyA9IHsgMCwgMSAqIDEwMDAgKiAxMDAwIH07CisgICAgLy8gV2UgZG8gdGhlIHNsZWVwIGluIHNtYWxsIHBpZWNlcyB0byBoYXZlIHNjaGVkdWxpbmcKK0BAIC0zNDgsNyArMzQ4LDcgQEAgdm9pZCBkZWxheVhtcyAoIGludCBpICkKKyAgICB9CisgfQorIAorLXZvaWQgZG9fd2FpdCAoIFVXb3JkKiB3ICkKKytzdGF0aWMgdm9pZCBkb193YWl0ICggVVdvcmQqIHcgKQorIHsKKyAgIFVXb3JkIHcwID0gKnc7CisgICBVV29yZCB2b2xhdGlsZSAqIHdWID0gdzsKK0BAIC0zNTcsNyArMzU3LDcgQEAgdm9pZCBkb193YWl0ICggVVdvcmQqIHcgKQorICAgQU5OT1RBVEVfSEFQUEVOU19BRlRFUih3KTsKKyB9CisgCistdm9pZCBkb19zaWduYWwgKCBVV29yZCogdyApCisrc3RhdGljIHZvaWQgZG9fc2lnbmFsICggVVdvcmQqIHcgKQorIHsKKyAgIEFOTk9UQVRFX0hBUFBFTlNfQkVGT1JFKHcpOworICAgYXRvbWljX2luY1codyk7CitAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgZG9fc2lnbmFsICggVVdvcmQqIHcgKQorIAorIAorIAorLXZvaWQqIHRocmVhZF9mbjEgKCB2b2lkKiBhcmcgKQorK3N0YXRpYyB2b2lkKiB0aHJlYWRfZm4xICggdm9pZCogYXJnICkKKyB7CisgICBVV29yZCogdyA9IChVV29yZCopYXJnOworICAgZGVsYXlYbXMoNTAwKTsgICAgLy8gZW5zdXJlIHQyIGdldHMgdG8gaXRzIHdhaXQgZmlyc3QKK0BAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCogdGhyZWFkX2ZuMSAoIHZvaWQqIGFyZyApCisgICByZXR1cm4gTlVMTDsKKyB9CisgCistdm9pZCogdGhyZWFkX2ZuMiAoIHZvaWQqIGFyZyApCisrc3RhdGljIHZvaWQqIHRocmVhZF9mbjIgKCB2b2lkKiBhcmcgKQorIHsKKyAgIFVXb3JkKiB3ID0gKFVXb3JkKilhcmc7CisgICBkb193YWl0KHcpOyAgICAgIC8vIHdhaXQgZm9yIGgtYiBlZGdlIGZyb20gZmlyc3QgdGhyZWFkCistLSAKKzIuMTcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLXRlc3RzLVVzZS11Y29udGV4dF90LWluc3RlYWQtb2Ytc3RydWN0LXVjb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmMTZhMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA2MjlhYzQ5MmIxZDliYzcwOWQxNzMzN2ViOWIxYzI4NjAzZWNhMjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTE6MDE6MjUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVtY2hlY2svdGVzdHM6IFVzZSB1Y29udGV4dF90IGluc3RlYWQgb2Ygc3RydWN0IHVjb250ZXh0Ci0KLWdsaWJjIDIuMjYgZG9lcyBub3QgZXhwb3NlIHN0cnVjdCB1Y29udGV4dCBhbnltb3JlCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3Mua2RlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxNzY5XQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCi1pbmRleCBmZmI0OWM2Li5hY2M0MTA5IDEwMDY0NAotLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCi0rKysgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKLUBAIC0xMSw3ICsxMSw3IEBACi0gLy8gY2hlY2tzIHRoYXQgVmFsZ3JpbmQgbm90aWNlcyB0aGVpciBzdGFjayBjaGFuZ2VzIHByb3Blcmx5LgotIAotICNpZmRlZiBfX0dMSUJDX18KLS10eXBlZGVmICBzdHJ1Y3QgdWNvbnRleHQgIG15Y29udGV4dDsKLSt0eXBlZGVmIHVjb250ZXh0X3QgIG15Y29udGV4dDsKLSAKLSBteWNvbnRleHQgY3R4MSwgY3R4Miwgb2xkYzsKLSBpbnQgY291bnQ7Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaAppbmRleCAzZjlmMzNiLi40ODBmZTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLWNvbnRleHQtQVBJcy1hcmUtbm90LWF2YWlsYWJsZS1vbi1tdXNsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2gKQEAgLTEsMTcgKzEsMjAgQEAKLUZyb20gODYyYjgwNzA3NmQ1N2YyZjU4ZWQ5ZDU3MmRkYWM4YmI0MDI3NzRhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjAxOjEwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi82XSBjb250ZXh0IEFQSXMgYXJlIG5vdCBhdmFpbGFibGUgb24gbXVzbAorRnJvbSBiZDRlOTI2ZTdlMTQ3NDdiM2NkNGQ3YjJhMWJkNTQxMGIyMmYzZWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNiBPY3QgMjAxOCAyMToyNzo0NiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb250ZXh0IEFQSXMgYXJlIG5vdCBhdmFpbGFibGUgb24gbXVzbAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorVXBkYXRlZCBwYXRjaCBmb3IgdmFsZ3JpbmQtMy4xNAorCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgogLS0tCiAgbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIHwgNyArKysrKystCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3RhY2tfY2hhbmdlcy5jCi1pbmRleCBhOTc4ZmMyLi5mZmI0OWM2IDEwMDY0NAoraW5kZXggN2Y5N2I5MGE1Li5hMjZjYjRhZTYgMTAwNjQ0CiAtLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKICsrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYwogQEAgLTEwLDYgKzEwLDcgQEAKQEAgLTE5LDcgKzIyLDcgQEAKICAvLyBjaGVja3MgdGhhdCBWYWxncmluZCBub3RpY2VzIHRoZWlyIHN0YWNrIGNoYW5nZXMgcHJvcGVybHkuCiAgCiArI2lmZGVmIF9fR0xJQkNfXwotIHR5cGVkZWYgIHN0cnVjdCB1Y29udGV4dCAgbXljb250ZXh0OworIHR5cGVkZWYgIHVjb250ZXh0X3QgIG15Y29udGV4dDsKICAKICBteWNvbnRleHQgY3R4MSwgY3R4Miwgb2xkYzsKIEBAIC01MSw5ICs1MiwxMSBAQCBpbnQgaW5pdF9jb250ZXh0KG15Y29udGV4dCAqdWMpCkBAIC00NSw1ICs0OCw1IEBACiAgICAgIHJldHVybiAwOwogIH0KIC0tIAotMi4xMy4xCisyLjE3LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1maXgtYnJva2VuLWlubGluZS1hc20taW4tdGVzdHMtb24tbWlwczMyLWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1maXgtYnJva2VuLWlubGluZS1hc20taW4tdGVzdHMtb24tbWlwczMyLWxpbnV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGYyOTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItZml4LWJyb2tlbi1pbmxpbmUtYXNtLWluLXRlc3RzLW9uLW1pcHMzMi1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNjNjZTM2Mzk2MzQ4ZTdjNGMwMjFjZmZhNjUyZDJlM2QyMGY3OTYzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMjcgSnVsIDIwMTggMTc6NTE6NTQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIGZpeCBicm9rZW4gaW5saW5lIGFzbSBpbiB0ZXN0cyBvbiBtaXBzMzItbGludXgKLQotV2hpbGUgYnVpbGQgdGVzdHMoYG1ha2UgY2hlY2snKSB3aXRoIGdjYyA4LjEuMCBvbiBtaXBzMzItbGludXgsCi10aGVyZSBpcyBhIGZhaWx1cmUKLVtzbmlwXQotfG1pcHMtd3JzbWxsaWIzMi1saW51eC1nY2MgIC1tZWIgLW1hYmk9MzIgLW1oYXJkLWZsb2F0IC1tYXJjaD1taXBzMzIKLS1jIC1vIHRjMDhfaGJsMi10YzA4X2hibDIubyBgdGVzdCAtZiAndGMwOF9oYmwyLmMnIHx8IGVjaG8gJy4uLy4uLy4uLwotdmFsZ3JpbmQtMy4xMy4wL2hlbGdyaW5kL3Rlc3RzLydgdGMwOF9oYmwyLmMKLXwvdG1wL2NjMzdhSnhRLnM6IEFzc2VtYmxlciBtZXNzYWdlczoKLXwvdG1wL2NjMzdhSnhRLnM6Mjc1OiBFcnJvcjogc3ltYm9sIGBMMXh5enp5MW1haW4nIGlzIGFscmVhZHkgZGVmaW5lZAotfE1ha2VmaWxlOjEzMjM6IHJlY2lwZSBmb3IgdGFyZ2V0ICd0YzA4X2hibDItdGMwOF9oYmwyLm8nIGZhaWxlZAotW3NuaXBdCi0KLVJlbW92ZSB0aGUgZHVwbGljYXRlZCBMMXh5enp5MW1haW4sIGFuZCB1c2UgbG9jYWwgc3ltYm9sIHRvIHJlcGxhY2UuCi1odHRwOi8vdGlnY2MudGljYWxjLm9yZy9kb2MvZ251YXNtLmh0bWwjU0VDNDYKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTY5MDZdCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBoZWxncmluZC90ZXN0cy90YzA4X2hibDIuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9oZWxncmluZC90ZXN0cy90YzA4X2hibDIuYyBiL2hlbGdyaW5kL3Rlc3RzL3RjMDhfaGJsMi5jCi1pbmRleCAyYTc1N2EwMDguLmY2NjBkODJkZCAxMDA2NDQKLS0tLSBhL2hlbGdyaW5kL3Rlc3RzL3RjMDhfaGJsMi5jCi0rKysgYi9oZWxncmluZC90ZXN0cy90YzA4X2hibDIuYwotQEAgLTEyMSwxMiArMTIxLDEyIEBACi0gI2VsaWYgZGVmaW5lZChQTEFUX21pcHMzMl9saW51eCkgfHwgZGVmaW5lZChQTEFUX21pcHM2NF9saW51eCkKLSAjICBkZWZpbmUgSU5DKF9sdmFsLF9scXVhbCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgIkwxeHl6enkxIiBfbHF1YWwiOlxuIiAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAiMTpcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICIgICAgICAgIG1vdmUgICR0MCwgJTBcbiIgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIiAgICAgICAgbGwgICAgJHQxLCAwKCR0MClcbiIgICAgICAgICAgICAgICAgIFwKLSAgICAgICAiICAgICAgICBhZGRpdSAkdDEsICR0MSwgMVxuIiAgICAgICAgICAgICAgICAgXAotICAgICAgICIgICAgICAgIHNjICAgICR0MSwgMCgkdDApXG4iICAgICAgICAgICAgICAgICBcCi0tICAgICAgIiAgICAgICAgYmVxeiAgJHQxLCBMMXh5enp5MSIgX2xxdWFsICAgICAgICAgIFwKLSsgICAgICAiICAgICAgICBiZXF6ICAkdDEsIDFiXG4iICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIDogLypvdXQqLyA6IC8qaW4qLyAiciIoJihfbHZhbCkpICAgICAgICAgICAgICBcCi0gICAgICAgOiAvKnRyYXNoKi8gInQwIiwgInQxIiwgIm1lbW9yeSIgICAgICAgICAgICAgIFwKLSAgICAgICAgICkKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAppbmRleCAzOTAyMmQwLi43NWJiMGFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3Mzk0MjFlMjUzZTZlYmEzZWI2NDM4NjUxODIyZjgwZmE5YzA1MDJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE1IERlYyAyMDE1IDE1OjMxOjUwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzLgorRnJvbSA4ZjkxNmRjYjM5NWZlNWEyNDI5ZjI4NjdiYTRkYWY4ZWYzYWYwNzNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNiBPY3QgMjAxOCAyMTowMTowNCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzLgogCiBUaGUgcGF0aHMgdG8gdGhlc2UgZmlsZXMgbmVlZCB0byBiZSBmdWxseSBzcGVjaWZpZWQgaW4KIHRoZSBvdXQgb2YgdHJlZSBidWlsZCBjYXNlLiBnbGliYy0yLlguc3VwcCBpcyBhIGdlbmVyYXRlZCBmaWxlIHNvIHRoZSBmdWxsIHBhdGgKQEAgLTksMTggKzksMjEgQEAKIAogUlAgMjAxMy8wMy8yMwogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorUGF0Y2ggcmVmcmVzaGVkIGZvciB2YWxncmluZC0zLjE0LjAuCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGNvbmZpZ3VyZS5hYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDM4NzQyOTZmZGUwYi4uN2E1YmEyYzg1NTdlIDEwMDY0NAoraW5kZXggYzE4YWU1ZjJhLi45OTY2N2NlNTcgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM3Myw1MCArMzczLDUwIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCitAQCAtMzkyLDUwICszOTIsNTAgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KICAJICAgICA5LiopCiAgCQkgIEFDX01TR19SRVNVTFQoW0RhcndpbiA5LnggKCR7a2VybmVsfSkgLyBNYWMgT1MgWCAxMC41IExlb3BhcmRdKQogIAkJICBBQ19ERUZJTkUoW0RBUldJTl9WRVJTXSwgREFSV0lOXzEwXzUsIFtEYXJ3aW4gLyBNYWMgT1MgWCB2ZXJzaW9uXSkKQEAgLTg1LDE2ICs4OCwxOCBAQAogKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luMTYuc3VwcCAke0RFRkFVTFRfU1VQUH0iCiArCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW4xMC1kcmQuc3VwcCAke0RFRkFVTFRfU1VQUH0iCiAgCQkgIDs7Ci0gICAgICAgICAgICAgICopIAotIAkJICBBQ19NU0dfUkVTVUxUKFt1bnN1cHBvcnRlZCAoJHtrZXJuZWx9KV0pCi1AQCAtNDI4LDEzICs0MjgsMTMgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KLSAgICAgIHNvbGFyaXMyLjExKikKLSAgICAgICAgIEFDX01TR19SRVNVTFQoW29rICgke2hvc3Rfb3N9KV0pCi0gICAgICAgICBWR0NPTkZfT1M9InNvbGFyaXMiCi0tICAgICAgICBERUZBVUxUX1NVUFA9InNvbGFyaXMxMS5zdXBwICR7REVGQVVMVF9TVVBQfSIKLSsgICAgICAgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9zb2xhcmlzMTEuc3VwcCAke0RFRkFVTFRfU1VQUH0iCisgCSAgICAgMTcuKikKKyAJCSAgQUNfTVNHX1JFU1VMVChbRGFyd2luIDE3LnggKCR7a2VybmVsfSkgLyBtYWNPUyAxMC4xMyBIaWdoIFNpZXJyYV0pCitAQCAtNDYwLDcgKzQ2MCw3IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCisgICAgICAgICAgICAgICAgICBERUZBVUxUX1NVUFA9InNvbGFyaXMxMi5zdXBwICR7REVGQVVMVF9TVVBQfSIKKyAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICopCistICAgICAgICAgICAgICAgICBERUZBVUxUX1NVUFA9InNvbGFyaXMxMS5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysgICAgICAgICAgICAgICAgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9zb2xhcmlzMTEuc3VwcCAke0RFRkFVTFRfU1VQUH0iCisgICAgICAgICAgICAgICAgICA7OworIAllc2FjCiAgICAgICAgICA7OwotIAorQEAgLTQ2OCw3ICs0NjgsNyBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgogICAgICAgc29sYXJpczIuMTIqKQogICAgICAgICAgQUNfTVNHX1JFU1VMVChbb2sgKCR7aG9zdF9vc30pXSkKICAgICAgICAgIFZHQ09ORl9PUz0ic29sYXJpcyIKQEAgLTEwMyw3ICsxMDgsNyBAQAogICAgICAgICAgOzsKICAKICAgICAgICopIAotQEAgLTk4MiwyOSArOTgyLDI5IEBAIEFDX01TR19DSEVDS0lORyhbdGhlIGdsaWJjIHZlcnNpb25dKQorQEAgLTEwNTEsMjkgKzEwNTEsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCiAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIDIuMikKICAJQUNfTVNHX1JFU1VMVCgke0dMSUJDX1ZFUlNJT059IGZhbWlseSkKQEAgLTE0Myw3ICsxNDgsNyBAQAogIAk7OwogICAgICAgMi4qKQogIAlBQ19NU0dfUkVTVUxUKCR7R0xJQkNfVkVSU0lPTn0gZmFtaWx5KQotQEAgLTEwMTMsOCArMTAxMyw4IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTA4Miw4ICsxMDgyLDggQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAJQUNfREVGSU5FKFtHTElCQ19NQU5EQVRPUllfSU5ERVhfQU5EX1NUUkxFTl9SRURJUkVDVF0sIDEsCiAgCQkgIFtEZWZpbmUgdG8gMSBpZiBpbmRleCgpIGFuZCBzdHJsZW4oKSBoYXZlIGJlZW4gb3B0aW1pemVkIGhlYXZpbHkgKHg4NiBnbGliYyA+PSAyLjEyKV0pCiAgCURFRkFVTFRfU1VQUD0iZ2xpYmMtMi5YLnN1cHAgJHtERUZBVUxUX1NVUFB9IgpAQCAtMTU0LDcgKzE1OSw3IEBACiAgCTs7CiAgICAgICBkYXJ3aW4pCiAgCUFDX01TR19SRVNVTFQoRGFyd2luKQotQEAgLTEwMjQsNyArMTAyNCw3IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTA5Myw3ICsxMDkzLDcgQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIGJpb25pYykKICAJQUNfTVNHX1JFU1VMVChCaW9uaWMpCiAgCUFDX0RFRklORShbQklPTklDX0xJQkNdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91J3JlIHVzaW5nIEJpb25pY10pCkBAIC0xNjMsNyArMTY4LDcgQEAKICAJOzsKICAgICAgIHNvbGFyaXMpCiAgCUFDX01TR19SRVNVTFQoU29sYXJpcykKLUBAIC0xMDUxLDExICsxMDUxLDExIEBAIGlmIHRlc3QgIiRWR0NPTkZfT1MiICE9ICJzb2xhcmlzIjsgdGhlbgorQEAgLTExMjAsMTEgKzExMjAsMTEgQEAgaWYgdGVzdCAiJFZHQ09ORl9PUyIgIT0gInNvbGFyaXMiOyB0aGVuCiAgICAgICMgYXR0ZW1wdCB0byBkZXRlY3Qgd2hldGhlciBzdWNoIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIG9uIHRoZQogICAgICAjIGJ1aWxkIG1hY2hpbmUgKG9yIGV2ZW4gaWYgYW55IFggZmFjaWxpdGllcyBhcmUgcHJlc2VudCk7IGp1c3QKICAgICAgIyBhZGQgdGhlIHN1cHByZXNzaW9ucyBhbnRpZGlzaXJyZWdhcmRsZXNzLgpAQCAtMTc5LDUgKzE4NCw1IEBACiAgCiAgCiAtLSAKLTIuMTMuMi4zLmc0NGNkODVjMTQKKzIuMTcuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvbGluay1nei10ZXN0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIzMjIzOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotV2hlbiBjaGVja2luZyBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgY29tcHJlc3NlZCBkZWJ1ZyBzZWN0aW9ucyB3ZSBuZWVkIHRvCi1hY3R1YWxseSBsaW5rIGluc3RlYWQgb2YganVzdCBjb21waWxlLiAgT3RoZXJ3aXNlIHRoZSBjb21waWxlciB0aGlua3MgdGhhdAotdGhleSBhcmUgc3VwcG9ydGVkLCBidXQgZ29sZCBkb2VzIG5vdCBzdXBwb3J0IC1nej16bGliLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChyMTY0NTkpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi0tLS0gYS9jb25maWd1cmUuYWN+CTIwMTctMDctMTEgMTE6NTM6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgYi9jb25maWd1cmUuYWMJMjAxNy0wNy0xMSAxODoxNjoxMy42NzQxMzA0ODMgKzAxMDAKLUBAIC0yMTE5LDcgKzIxMTksNyBAQAotIHNhZmVfQ0ZMQUdTPSRDRkxBR1MKLSBDRkxBR1M9Ii1nIC1nej16bGliIgotIAotLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCi0rQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKLSAgIHJldHVybiAwOwotIF1dKV0sIFsKLSBhY19oYXZlX2d6X3psaWI9eWVzCi1AQCAtMjEzOSw3ICsyMTM5LDcgQEAKLSBzYWZlX0NGTEFHUz0kQ0ZMQUdTCi0gQ0ZMQUdTPSItZyAtZ3o9emxpYi1nbnUiCi0gCi0tQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKLStBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWwotICAgcmV0dXJuIDA7Ci0gXV0pXSwgWwotIGFjX2hhdmVfZ3pfemxpYl9nbnU9eWVzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE5NWI4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL21hc2stQ1BVSUQtc3VwcG9ydC1pbi1IV0NBUC1vbi1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRml4IHJ1bnRpbWUgVmFsZ3JpbmQgZmFpbHVyZQotCi1UaGlzIHBhdGNoIGlzIGRlcml2ZWQgZnJvbQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjExCi0KLUF0IHJ1bnRpbWUgaXQgd2lsbCBmYWlscyBsaWtlIHRoaXM6Ci0KLUFSTTY0IGZyb250IGVuZDogYnJhbmNoX2V0YwotZGlzSW5zdHIoYXJtNjQpOiB1bmhhbmRsZWQgaW5zdHJ1Y3Rpb24gMHhENTM4MDAwMQotZGlzSW5zdHIoYXJtNjQpOiAxMTAxJzAxMDEgMDAxMScxMDAwIDAwMDAnMDAwMCAwMDAwJzAwMDEgPT0yMDgyPT0KLXZhbGdyaW5kOiBVbnJlY29nbmlzZWQgaW5zdHJ1Y3Rpb24gYXQgYWRkcmVzcyAweDQwMTRlNjQuCi0KLVRoaXMgcGF0Y2ggaXMgYSB3b3JrYXJvdW5kIGJ5IG1hc2tpbmcgYWxsIEhXQ0FQCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KLQotSW5kZXg6IHZhbGdyaW5kLTMuMTMuMC9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0tLS0gdmFsZ3JpbmQtMy4xMy4wLm9yaWcvY29yZWdyaW5kL21faW5pdGltZy9pbml0aW1nLWxpbnV4LmMgICAyMDE4LTAzLTA0IDIyOjIyOjE3LjY5ODU3MjY3NSAtMDgwMAotKysrIHZhbGdyaW5kLTMuMTMuMC9jb3JlZ3JpbmQvbV9pbml0aW1nL2luaXRpbWctbGludXguYyAgICAgICAgMjAxOC0wMy0wNCAyMjoyMzoyNS43Mjc4MTU2MjQgLTA4MDAKLUBAIC03MDMsNiArNzAzLDEyIEBACi0gICAgICAgICAgICAgICAgICAgKGFuZCBhbnl0aGluZyBhYm92ZSkgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgVmFsZ3JpbmQuICovCi0gICAgICAgICAgICAgICAgYXV4di0+dS5hX3ZhbCAmPSBWS0lfSFdDQVBfUzM5MF9URSAtIDE7Ci0gICAgICAgICAgICAgfQotKyMgICAgICAgICAgIGVsaWYgZGVmaW5lZChWR1BfYXJtNjRfbGludXgpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgIC8qIExpbnV4IDQuMTEgc3RhcnRlZCBwb3B1bGF0aW5nIHRoaXMgZm9yIGFybTY0LCBidXQgd2UKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhbnkuICovCi0rICAgICAgICAgICAgICAgYXV4di0+dS5hX3ZhbCA9IDA7Ci0rICAgICAgICAgICAgfQotICMgICAgICAgICAgIGVuZGlmCi0gICAgICAgICAgICAgYnJlYWs7Ci0gIyAgICAgICAgaWYgZGVmaW5lZChWR1BfcHBjNjRiZV9saW51eCkgfHwgZGVmaW5lZChWR1BfcHBjNjRsZV9saW51eCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3BwYy1oZWFkZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcHBjLWhlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiNTMxYjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcHBjLWhlYWRlcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotQmFja3BvcnQgYSBwYXRjaCBmcm9tIHVwc3RyZWFtIHRvIGZpeCB0ZXN0IGNvbXBpbGF0aW9uIGZvciBQUEMgd2hlcmUKLXN5c3RlbSBoZWFkZXJzIGRvbid0IGdldCBpbmNsdWRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotcjE2NDUwIHwgbWp3IHwgMjAxNy0wNi0xNiAxMDozMzozNSArMDEwMCAoRnJpLCAxNiBKdW4gMjAxNykgfCA3IGxpbmVzCi0KLXBwYzY0IGRvZXNuJ3QgY29tcGlsZSB0ZXN0X2lzYV8yXzA2X3BhcnR4LmMgd2l0aG91dCBWU1ggc3VwcG9ydAotCi1UaGUgI2lmZGVmIEhBU19WU1ggZ3VhcmQgaXMgd3JvbmdseSBwbGFjZWQuIEl0IG1ha2VzIHRoZSBzdGFuZGFyZAotaW5jbHVkZSBoZWFkZXJzIG5vdCBiZSB1c2VkLiBDYXVzaW5nIGEgYnVpbGQgZmFpbHVyZS4gRml4IGJ5IG1vdmluZwotdGhlICNpZmRlZiBIQVNfVlNYIGFmdGVyIHRoZSBzdGFuZGFyZCBpbmNsdWRlcy4KLQotW3YyIGNoYW5nZXNdCi0tIEFkZCAjaWZkZWYgSEFTX1ZTWCBndWFyZCBjb3JyZWN0bHkgZm9yIHBwYzY0IHRlc3RfaXNhXzJfMDZfcGFydHguYyAKLSAgdGVzdCBjYXNlcy4gVGhlIGNoYW5nZXMgYXJlIHNpbWlsYXIgdG8gd2hhdCB3YXMgZG9uZSBmb3IgcHBjMzIuCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLUluZGV4OiBub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQzLmMJKHJldmlzaW9uIDE2NDQ5KQotKysrIGIvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQzLmMJKHJldmlzaW9uIDE2NDUwKQotQEAgLTIwLDE3ICsyMCwxOCBAQAotICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCi0gICovCi0gCi0tI2lmZGVmIEhBU19WU1gKLS0KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0tI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZ2V0b3B0Ci0gCi0rI2lmZGVmIEhBU19WU1gKLSsKLSsjaW5jbHVkZSA8YWx0aXZlYy5oPgotKwotICNpZm5kZWYgX19wb3dlcnBjNjRfXwotIHR5cGVkZWYgdWludDMyX3QgSFdvcmRfdDsKLSAjZWxzZQotSW5kZXg6IG5vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDEuYwkocmV2aXNpb24gMTY0NDkpCi0rKysgYi9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDEuYwkocmV2aXNpb24gMTY0NTApCi1AQCAtMjAsMTMgKzIwLDE0IEBACi0gIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KLSAgKi8KLSAKLS0jaWZkZWYgSEFTX1ZTWAotLQotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSsKLSsjaWZkZWYgSEFTX1ZTWAotKwotICNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0gCi0gI2lmbmRlZiBfX3Bvd2VycGM2NF9fCi1JbmRleDogbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCShyZXZpc2lvbiAxNjQ0OSkKLSsrKyBiL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCShyZXZpc2lvbiAxNjQ1MCkKLUBAIC0yMCwxNyArMjAsMTggQEAKLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgotICAqLwotIAotLSNpZmRlZiBIQVNfVlNYCi0tCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hbGxvYy5oPgotLSNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+ICAgIC8vIGdldG9wdAotIAotKyNpZmRlZiBIQVNfVlNYCi0rCi0rI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSsKLSAjaWZuZGVmIF9fcG93ZXJwYzY0X18KLSB0eXBlZGVmIHVpbnQzMl90IEhXb3JkX3Q7Ci0gI2Vsc2UKLUluZGV4OiBub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQzLmMJKHJldmlzaW9uIDE2NDQ5KQotKysrIGIvbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQzLmMJKHJldmlzaW9uIDE2NDUwKQotQEAgLTIwLDE3ICsyMCwxOCBAQAotICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCi0gICovCi0gCi0tI2lmZGVmIEhBU19WU1gKLS0KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0tI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgLy8gZ2V0b3B0Ci0gCi0rI2lmZGVmIEhBU19WU1gKLSsKLSsjaW5jbHVkZSA8YWx0aXZlYy5oPgotKwotICNpZm5kZWYgX19wb3dlcnBjNjRfXwotIHR5cGVkZWYgdWludDMyX3QgSFdvcmRfdDsKLSAjZWxzZQotSW5kZXg6IG5vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0MS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYS9ub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDEuYwkocmV2aXNpb24gMTY0NDkpCi0rKysgYi9ub25lL3Rlc3RzL3BwYzY0L3Rlc3RfaXNhXzJfMDZfcGFydDEuYwkocmV2aXNpb24gMTY0NTApCi1AQCAtMjAsMTMgKzIwLDE0IEBACi0gIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KLSAgKi8KLSAKLS0jaWZkZWYgSEFTX1ZTWAotLQotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYWxsb2MuaD4KLSsKLSsjaWZkZWYgSEFTX1ZTWAotKwotICNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0gCi0gI2lmbmRlZiBfX3Bvd2VycGM2NF9fCi1JbmRleDogbm9uZS90ZXN0cy9wcGM2NC90ZXN0X2lzYV8yXzA2X3BhcnQyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL25vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCShyZXZpc2lvbiAxNjQ0OSkKLSsrKyBiL25vbmUvdGVzdHMvcHBjNjQvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCShyZXZpc2lvbiAxNjQ1MCkKLUBAIC0yMCwxNyArMjAsMTggQEAKLSAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgotICAqLwotIAotLSNpZmRlZiBIQVNfVlNYCi0tCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPG1hbGxvYy5oPgotLSNpbmNsdWRlIDxhbHRpdmVjLmg+Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+ICAgIC8vIGdldG9wdAotIAotKyNpZmRlZiBIQVNfVlNYCi0rCi0rI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSsKLSAjaWZuZGVmIF9fcG93ZXJwYzY0X18KLSB0eXBlZGVmIHVpbnQzMl90IEhXb3JkX3Q7Ci0gI2Vsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzllYzZmNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJWYWxncmluZCBtZW1vcnkgZGVidWdnZXIgYW5kIGluc3RydW1lbnRhdGlvbiBmcmFtZXdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vdmFsZ3JpbmQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3ZhbGdyaW5kLm9yZy9zdXBwb3J0L2J1Z19yZXBvcnRzLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9wdWJfdG9vbF9iYXNpY3MuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTI5O21kNT1kNGRlMDQwNzIzOTM4MTQ2M2NmMDFkZDI3NmQ3YzIyZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3ZhbGdyaW5kLmg7YmVnaW5saW5lPTE7ZW5kbGluZT01NjttZDU9YWQzYjMxN2YzMjg2YjZiNzA0NTc1ZDllZmU2Y2E1ZGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ET0NTO21kNT0yNGVhNGM3MDkyMjMzODQ5YjQzOTQ2OTkzMzNiNWM1NiIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSIKLURFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0gXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2Jvb3N0JywgJycsIGQpfSBcCi0gICAgICAgICIKLQotU1JDX1VSSSA9ICJmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvdmFsZ3JpbmQvdmFsZ3JpbmQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhlZC1wZXJsLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQWRkZWQtc3VwcG9ydC1mb3ItUFBDLWluc3RydWN0aW9ucy1tZmF0YnUtbWZhdGJsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1Nb2RpZnktdmdfdGVzdC13cmFwcGVyLXRvLXN1cHBvcnQtUFRFU1QtZm9ybWF0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0cy10aGF0LWZhaWwtdG8tYnVpbGQtb24tc29tZS1QUEMzMi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlLWFwcHJvcHJpYXRlLW1hcmNoLW1jcHUtbWZwdS1mb3ItQVJNLXRlc3QtYXBwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uZW9uLWZvci10YXJnZXRzLXdoaWNoLWRvbi10LXN1cHBvcnQtaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdmFsZ3JpbmQtbWFrZS1sZC1YWFguc28tc3RybGVuLWludGVyY2VwdC1vcHRpb25hbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VmaWxlcy1Ecm9wLXNldHRpbmctbWNwdS10by1jb3J0ZXgtYTgtb24tYXJtLWFyY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zaWdxdWV1ZS1SZW5hbWUtX3NpZmllbGRzLXRvLV9fc2lfZmllbGRzLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1wdGhfYXRmb3JrMS5jLURlZmluZS1lcnJvci1BUEktZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1jaGVjay10ZXN0cy1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stYXJtNjQtRGVmaW5lLV9fVEhST1ctaWYtbm90LWFscmVhZHktZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lbWNoZWNrLXg4Ni1EZWZpbmUtX19USFJPVy1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGluay1nei10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wcGMtaGVhZGVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYXNrLUNQVUlELXN1cHBvcnQtaW4tSFdDQVAtb24tYWFyY2g2NC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1vcGNvZGUtbm90LXN1cHBvcnRlZC1vbi1taXBzMzItbGludXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtYnJva2VuLWlubGluZS1hc20taW4tdGVzdHMtb24tbWlwczMyLWxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjgxN2RkMDhmMWU4YTY2MzM2YjlmZjIwNjQwMGE1MzY5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjY4MGVmMDNmMDBjZDVlOTcwYmJkY2Q0ZTU3ZmIxZjZkZjdkMmUyYzA3MTYzNWVmMmJlNzQ3OTAxOTBjM2IiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2YWxncmluZC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NHxhcm18YWFyY2g2NHxtaXBzfHBvd2VycGN8cG93ZXJwYzY0KS4qLWxpbnV4JwotCi0jIHZhbGdyaW5kIHN1cHBvcnRzIGFybXY3IGFuZCBhYm92ZQotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12NiA9ICdudWxsJwotCi0jIFgzMiBpc24ndCBzdXBwb3J0ZWQgYnkgdmFsZ3JpbmQgYXQgdGhpcyB0aW1lCi1DT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfbGludXgtbXVzbHgzMiA9ICdudWxsJwotCi0jIERpc2FibGUgZm9yIHNvbWUgTUlQUyB2YXJpYW50cwotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNocjYgPSAnbnVsbCcKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgbXVsdGlsaWJfaGVhZGVyCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10bHMgLS13aXRob3V0LW1waWNjIgotRVhUUkFfT0VDT05GICs9ICIke0BbJy0tZW5hYmxlLW9ubHkzMmJpdCcsJy0tZW5hYmxlLW9ubHk2NGJpdCddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgotCi0jIHZhbGdyaW5kIGNoZWNrcyBob3N0X2NwdSAiYXJtdjcqKSIsIHNvIHdlIG5lZWQgdG8gb3Zlci1yaWRlIHRoZSBhdXRvdG9vbHMuYmJjbGFzcyBkZWZhdWx0IC0taG9zdCBvcHRpb24KLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAtLWhvc3Q9YXJtdjcke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9IgotVEFSR0VUX0NDX0FSQ0hfcmVtb3ZlX2FybSA9ICIke0BnZXRfbWNwdShkKX0iCi0KLUVYVFJBX09FTUFLRSA9ICItdyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi0jIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cwotIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncwotIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0Ci0jIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCi0KLWRlZiBnZXRfbWNwdShkKToKLSAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgotICAgICAgICAgICAgcmV0dXJuIGFyZwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29udGludWUKLSAgICByZXR1cm4gIiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCi0gICAgc2VkIC1pIC1lICdzOiQoYWJzX3RvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbm9uZS90ZXN0cy9NYWtlZmlsZS5hbQotICAgIHNlZCAtaSAtZSAnczokKHRvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbWVtY2hlY2svdGVzdHMvTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vZGVmYXVsdC5zdXBwICR7RH0vJHtsaWJkaXJ9L3ZhbGdyaW5kLwotICAgIG9lX211bHRpbGliX2hlYWRlciB2YWxncmluZC9jb25maWcuaAotfQotCi1UVU5FID0gIiR7QHN0cmlwX21jcHUoZCl9IgotCi1SREVQRU5EU18ke1BOfSArPSAicGVybCIKLQotIyB2YWxncmluZCBuZWVkcyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgbGQuc28gYXQgcnVudGltZSBpbiBvcmRlciB0bwotIyByZWRpcmVjdCBmdW5jdGlvbnMgbGlrZSBzdHJsZW4uCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtUQ0xJQkN9LWRiZyIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzZWQgcGVybCBwZXJsLW1vZHVsZS1maWxlLWdsb2IiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCi0KLSMgT25lIG9mIHRoZSB0ZXN0cyBjb250YWlucyBhIGJvZ3VzIGludGVycHJldGVyIHBhdGggb24gcHVycG9zZS4KLSMgU2tpcCBmaWxlIGRlcGVuZGVuY3kgY2hlY2sKLVNLSVBfRklMRURFUFNfJHtQTn0tcHRlc3QgPSAnMScKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIGNoZWNrCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgY2htb2QgK3ggJHtCfS90ZXN0cy92Z19yZWd0ZXN0Ci0KLSAgICAjIFRoZSB0ZXN0IGFwcGxpY2F0aW9uIGJpbmFyaWVzIGFyZSBub3QgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuCi0gICAgIyBHcmFiIHRoZW0gZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LgotICAgICMKLSAgICAjIFRoZSByZWdyZXNzaW9uIHRlc3RzIHJlcXVpcmUgc2NyaXB0cyBhbmQgZGF0YSBmaWxlcyB0aGF0IGFyZSBub3QKLSAgICAjIGNvcGllZCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgVGhleSBtdXN0IGJlIGNvcGllZCBmcm9tIHRoZQotICAgICMgc291cmNlIGRpcmVjdG9yeS4gCi0gICAgc2F2ZWRfZGlyPSRQV0QKLSAgICBmb3IgcGFyZW50X2RpciBpbiAke1N9ICR7Qn0gOyBkbwotICAgICAgICBjZCAkcGFyZW50X2RpcgotCi0gICAgICAgICMgZXhjbHVkZSBzaGVsbCBvciB0aGUgcGFja2FnZSB3b24ndCBpbnN0YWxsCi0gICAgICAgIHJtIC1yZiBub25lL3Rlc3RzL3NoZWxsKiAyPi9kZXYvbnVsbAotCi0gICAgICAgIHN1YmRpcnM9InRlc3RzIGNhY2hlZ3JpbmQvdGVzdHMgY2FsbGdyaW5kL3Rlc3RzIGRyZC90ZXN0cyBoZWxncmluZC90ZXN0cyBtYXNzaWYvdGVzdHMgbWVtY2hlY2svdGVzdHMgbm9uZS90ZXN0cyIKLQotICAgICAgICAjIEdldCB0aGUgdmcgdGVzdCBzY3JpcHRzLCBmaWx0ZXJzLCBhbmQgZXhwZWN0ZWQgZmlsZXMKLSAgICAgICAgZm9yIGRpciBpbiAkc3ViZGlycyA7IGRvCi0gICAgICAgICAgICBmaW5kICRkaXIgfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIGRvbmUKLSAgICAgICAgY2QgJHNhdmVkX2RpcgotICAgIGRvbmUKLQotICAgICMgY2xlYW4gb3V0IGJ1aWxkIGFydGlmYWN0cyBiZWZvcmUgYnVpbGRpbmcgdGhlIHJwbQotICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgXCggLW5hbWUgIk1ha2VmaWxlKiIgXAotICAgICAgICAtbyAtbmFtZSAiKi5vIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLmMiIFwKLSAgICAgICAgLW8gLW5hbWUgIiouUyIgXAotICAgICAgICAtbyAtbmFtZSAiKi5oIiBcKSBcCi0gICAgICAgIC1leGVjIHJtIHt9IFw7Ci0KLSAgICAjIG5lZWRlZCBieSBtYXNzaWYgdGVzdHMKLSAgICBjcCAke0J9L21hc3NpZi9tc19wcmludCAke0R9JHtQVEVTVF9QQVRIfS9tYXNzaWYvbXNfcHJpbnQKLQotICAgICMgaGFuZGxlIG11bHRpbGliCi0gICAgc2VkIC1pIHM6QGxpYmRpckA6JHtsaWJkaXJ9OmcgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlNThhNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTQuMC5iYgpAQCAtMCwwICsxLDE1NSBAQAorU1VNTUFSWSA9ICJWYWxncmluZCBtZW1vcnkgZGVidWdnZXIgYW5kIGluc3RydW1lbnRhdGlvbiBmcmFtZXdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vdmFsZ3JpbmQub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3ZhbGdyaW5kLm9yZy9zdXBwb3J0L2J1Z19yZXBvcnRzLmh0bWwiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9wdWJfdG9vbF9iYXNpY3MuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTI5O21kNT1kNGRlMDQwNzIzOTM4MTQ2M2NmMDFkZDI3NmQ3YzIyZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3ZhbGdyaW5kLmg7YmVnaW5saW5lPTE7ZW5kbGluZT01NjttZDU9YWQzYjMxN2YzMjg2YjZiNzA0NTc1ZDllZmU2Y2E1ZGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ET0NTO21kNT0yNGVhNGM3MDkyMjMzODQ5YjQzOTQ2OTkzMzNiNWM1NiIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSIKK0RFUEVORFMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0gXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2Jvb3N0JywgJycsIGQpfSBcCisgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LnZhbGdyaW5kLm9yZy9kb3dubG9hZHMvdmFsZ3JpbmQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9maXhlZC1wZXJsLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQWRkZWQtc3VwcG9ydC1mb3ItUFBDLWluc3RydWN0aW9ucy1tZmF0YnUtbWZhdGJsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1Nb2RpZnktdmdfdGVzdC13cmFwcGVyLXRvLXN1cHBvcnQtUFRFU1QtZm9ybWF0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10ZXN0cy10aGF0LWZhaWwtdG8tYnVpbGQtb24tc29tZS1QUEMzMi1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLWFwcHJvcHJpYXRlLW1hcmNoLW1jcHUtbWZwdS1mb3ItQVJNLXRlc3QtYXBwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uZW9uLWZvci10YXJnZXRzLXdoaWNoLWRvbi10LXN1cHBvcnQtaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdmFsZ3JpbmQtbWFrZS1sZC1YWFguc28tc3RybGVuLWludGVyY2VwdC1vcHRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VmaWxlcy1Ecm9wLXNldHRpbmctbWNwdS10by1jb3J0ZXgtYTgtb24tYXJtLWFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zaWdxdWV1ZS1SZW5hbWUtX3NpZmllbGRzLXRvLV9fc2lfZmllbGRzLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1wdGhfYXRmb3JrMS5jLURlZmluZS1lcnJvci1BUEktZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1jaGVjay1hcm02NC1EZWZpbmUtX19USFJPVy1pZi1ub3QtYWxyZWFkeS1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWVtY2hlY2steDg2LURlZmluZS1fX1RIUk9XLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1vcGNvZGUtbm90LXN1cHBvcnRlZC1vbi1taXBzMzItbGludXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1HdWFyZC1hZ2FpbnN0LV9fR0xJQkNfUFJFUkVRLWZvci1tdXNsLWxpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlLWxvY2FsLWZ1bmN0aW9ucy1zdGF0aWMtdG8tYXZvaWQtYXNzZW1ibGVyLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjc0MTc1NDI2YWZhMjgwMTg0YjYyNTkxYjU4YzY3MWIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzN2MxMWJmZWZkNDc3Y2M2ZTllYmU4ZjE5M2JiMjM3ZmUzOTdmN2NlNzkxYjRhNGNlM2ZhMWM2YTUyMGJhYTUiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2YWxncmluZC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NHxhcm18YWFyY2g2NHxtaXBzfHBvd2VycGN8cG93ZXJwYzY0KS4qLWxpbnV4JworCisjIHZhbGdyaW5kIHN1cHBvcnRzIGFybXY3IGFuZCBhYm92ZQorQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12NiA9ICdudWxsJworCisjIFgzMiBpc24ndCBzdXBwb3J0ZWQgYnkgdmFsZ3JpbmQgYXQgdGhpcyB0aW1lCitDT01QQVRJQkxFX0hPU1RfbGludXgtZ251eDMyID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfbGludXgtbXVzbHgzMiA9ICdudWxsJworCisjIERpc2FibGUgZm9yIHNvbWUgTUlQUyB2YXJpYW50cworQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNocjYgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnVuMzIgPSAnbnVsbCcKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgbXVsdGlsaWJfaGVhZGVyCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10bHMgLS13aXRob3V0LW1waWNjIgorRVhUUkFfT0VDT05GICs9ICIke0BbJy0tZW5hYmxlLW9ubHkzMmJpdCcsJy0tZW5hYmxlLW9ubHk2NGJpdCddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgorCisjIHZhbGdyaW5kIGNoZWNrcyBob3N0X2NwdSAiYXJtdjcqKSIsIHNvIHdlIG5lZWQgdG8gb3Zlci1yaWRlIHRoZSBhdXRvdG9vbHMuYmJjbGFzcyBkZWZhdWx0IC0taG9zdCBvcHRpb24KK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAtLWhvc3Q9YXJtdjcke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9IgorVEFSR0VUX0NDX0FSQ0hfcmVtb3ZlX2FybSA9ICIke0BnZXRfbWNwdShkKX0iCisKK0VYVFJBX09FTUFLRSA9ICItdyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCisjIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cworIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncworIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0CisjIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCisKK2RlZiBnZXRfbWNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gIiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCisgICAgc2VkIC1pIC1lICdzOiQoYWJzX3RvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbm9uZS90ZXN0cy9NYWtlZmlsZS5hbQorICAgIHNlZCAtaSAtZSAnczokKHRvcF9idWlsZGRpcik6JChwa2dsaWJkaXIpL3B0ZXN0OmcnICR7U30vbWVtY2hlY2svdGVzdHMvTWFrZWZpbGUuYW0KK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vZGVmYXVsdC5zdXBwICR7RH0vJHtsaWJkaXJ9L3ZhbGdyaW5kLworICAgIG9lX211bHRpbGliX2hlYWRlciB2YWxncmluZC9jb25maWcuaAorfQorCitUVU5FID0gIiR7QHN0cmlwX21jcHUoZCl9IgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKKworIyB2YWxncmluZCBuZWVkcyBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgbGQuc28gYXQgcnVudGltZSBpbiBvcmRlciB0bworIyByZWRpcmVjdCBmdW5jdGlvbnMgbGlrZSBzdHJsZW4uCitSUkVDT01NRU5EU18ke1BOfSArPSAiJHtUQ0xJQkN9LWRiZyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBzZWQgcGVybCBwZXJsLW1vZHVsZS1maWxlLWdsb2IiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCisKKyMgT25lIG9mIHRoZSB0ZXN0cyBjb250YWlucyBhIGJvZ3VzIGludGVycHJldGVyIHBhdGggb24gcHVycG9zZS4KKyMgU2tpcCBmaWxlIGRlcGVuZGVuY3kgY2hlY2sKK1NLSVBfRklMRURFUFNfJHtQTn0tcHRlc3QgPSAnMScKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBvZV9ydW5tYWtlIGNoZWNrCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgY2htb2QgK3ggJHtCfS90ZXN0cy92Z19yZWd0ZXN0CisKKyAgICAjIFRoZSB0ZXN0IGFwcGxpY2F0aW9uIGJpbmFyaWVzIGFyZSBub3QgYXV0b21hdGljYWxseSBpbnN0YWxsZWQuCisgICAgIyBHcmFiIHRoZW0gZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgICMKKyAgICAjIFRoZSByZWdyZXNzaW9uIHRlc3RzIHJlcXVpcmUgc2NyaXB0cyBhbmQgZGF0YSBmaWxlcyB0aGF0IGFyZSBub3QKKyAgICAjIGNvcGllZCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgVGhleSBtdXN0IGJlIGNvcGllZCBmcm9tIHRoZQorICAgICMgc291cmNlIGRpcmVjdG9yeS4gCisgICAgc2F2ZWRfZGlyPSRQV0QKKyAgICBmb3IgcGFyZW50X2RpciBpbiAke1N9ICR7Qn0gOyBkbworICAgICAgICBjZCAkcGFyZW50X2RpcgorCisgICAgICAgICMgZXhjbHVkZSBzaGVsbCBvciB0aGUgcGFja2FnZSB3b24ndCBpbnN0YWxsCisgICAgICAgIHJtIC1yZiBub25lL3Rlc3RzL3NoZWxsKiAyPi9kZXYvbnVsbAorCisgICAgICAgIHN1YmRpcnM9InRlc3RzIGNhY2hlZ3JpbmQvdGVzdHMgY2FsbGdyaW5kL3Rlc3RzIGRyZC90ZXN0cyBoZWxncmluZC90ZXN0cyBtYXNzaWYvdGVzdHMgbWVtY2hlY2svdGVzdHMgbm9uZS90ZXN0cyIKKworICAgICAgICAjIEdldCB0aGUgdmcgdGVzdCBzY3JpcHRzLCBmaWx0ZXJzLCBhbmQgZXhwZWN0ZWQgZmlsZXMKKyAgICAgICAgZm9yIGRpciBpbiAkc3ViZGlycyA7IGRvCisgICAgICAgICAgICBmaW5kICRkaXIgfCBjcGlvIC1wdmR1ICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIGRvbmUKKyAgICAgICAgY2QgJHNhdmVkX2RpcgorICAgIGRvbmUKKworICAgICMgY2xlYW4gb3V0IGJ1aWxkIGFydGlmYWN0cyBiZWZvcmUgYnVpbGRpbmcgdGhlIHJwbQorICAgIGZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gXAorICAgICAgICAgXCggLW5hbWUgIk1ha2VmaWxlKiIgXAorICAgICAgICAtbyAtbmFtZSAiKi5vIiBcCisgICAgICAgIC1vIC1uYW1lICIqLmMiIFwKKyAgICAgICAgLW8gLW5hbWUgIiouUyIgXAorICAgICAgICAtbyAtbmFtZSAiKi5oIiBcKSBcCisgICAgICAgIC1leGVjIHJtIHt9IFw7CisKKyAgICAjIG5lZWRlZCBieSBtYXNzaWYgdGVzdHMKKyAgICBjcCAke0J9L21hc3NpZi9tc19wcmludCAke0R9JHtQVEVTVF9QQVRIfS9tYXNzaWYvbXNfcHJpbnQKKworICAgICMgaGFuZGxlIG11bHRpbGliCisgICAgc2VkIC1pIHM6QGxpYmRpckA6JHtsaWJkaXJ9OmcgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fMS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYWYxZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveWFzbS95YXNtXzEuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJ4ODYgKFNTRSkgYXNzZW1ibGVyIHN1cHBvcnRpbmcgTkFTTSBhbmQgR0FTLXN5bnRheGVzIgotTElDRU5TRSA9ICJCU0QiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnRvcnRhbGwubmV0L3Byb2plY3RzL3lhc20vIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMTJkODkwMzUwOGZiNmJmZDQ5ZDhkODJjNjE3MGRkOSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnRvcnRhbGwubmV0L3Byb2plY3RzL3lhc20vcmVsZWFzZXMvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmM5ZTU4Njc1MWZmNzg5YjM0YjFmMjFkNTcyZDk2YWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RjZTY2MDFiNDk1ZjViM2Q0NWI1OWY3ZDI0OTJhMzQwZWU3ZTg0YjViZWNhMTdlNDhmODYyNTAyYmQ1NjAzZiIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0gIiR7Q0NfRk9SX0JVSUxEfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTcwMzAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWFlNzdiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1TVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCi1PUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKLVBvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAotQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAotc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCi1BQ1BJIHRhYmxlcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi0KLUxJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nZW5lcmF0ZS91bml4L3JlYWRtZS50eHQ7bWQ1PTIwNDQwN2UxOTdjMWEwMTE1NGE0OGY2YzYyODBjM2FhIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1ERVBFTkRTID0gImJpc29uIGZsZXgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKLSAgICBmaWxlOi8vbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCi0gICAgZmlsZTovLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2ggXAotICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OGVmNDMxNGZiNGZmZGQwYzk2ZjE0ZGNmMjA1NDRlMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmQ4MWU4NDEwN2FjOWEwMmJlODZlYTQzY2JlYTdhZmE4ZmQ0YjQxNTAyNzBiYzg4YzJkNGM5ZmVhMGI4YWFkIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IgotCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyAnT1BUX0NGTEFHUz0tV2FsbCciCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2lhc2wgJHtEfSR7YmluZGlyfS9pYXNsCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGliaW4gJHtEfSR7YmluZGlyfS9hY3BpYmluCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlleGVjICR7RH0ke2JpbmRpcn0vYWNwaWV4ZWMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWhlbHAgJHtEfSR7YmluZGlyfS9hY3BpaGVscAotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpbmFtZXMgJHtEfSR7YmluZGlyfS9hY3BpbmFtZXMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXNyYyAke0R9JHtiaW5kaXJ9L2FjcGlzcmMKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXh0cmFjdCAke0R9JHtiaW5kaXJ9L2FjcGl4dHJhY3QKLX0KLQotIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKLVBST1ZJREVTID0gImlhc2wiCi1SUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCi1SUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICJpYXNsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxODA1MDguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTgwNTA4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1Yzg5ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTgwNTA4LmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQUNQSUNBIHRvb2xzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlYnVnIG9mIEFDUEkgdGFibGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIEFDUEkgQ29tcG9uZW50IEFyY2hpdGVjdHVyZSAoQUNQSUNBKSBwcm9qZWN0IHByb3ZpZGVzIGFuIFwKK09TLWluZGVwZW5kZW50IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgXAorUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gKEFDUEkpLiBBQ1BJQ0EgY29kZSBjb250YWlucyB0aG9zZSBwb3J0aW9ucyBvZiBcCitBQ1BJIG1lYW50IHRvIGJlIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaG9zdCBPUyBhcyBhIGtlcm5lbC1yZXNpZGVudCBcCitzdWJzeXN0ZW0sIGFuZCBhIHNtYWxsIHNldCBvZiB0b29scyB0byBhc3Npc3QgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nIFwKK0FDUEkgdGFibGVzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKKworTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dlbmVyYXRlL3VuaXgvcmVhZG1lLnR4dDttZDU9MjA0NDA3ZTE5N2MxYTAxMTU0YTQ4ZjZjNjI4MGMzYWEiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCisKK0RFUEVORFMgPSAiYmlzb24gZmxleCBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3JlbmFtZS15eV9zY2FuX3N0cmluZy1tYW51YWxseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzE2OTFlMmViODJiMjA2NGY3ODUzNmEzNDIzYzE4ZDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ4ZmM5ZDlkYjllMDQ4MzBkNDBiZWM5YWRkMDRiMjFjMDVkNDY2ZTAxODdkMzU0ODE1MDA2ZmRkODIzY2YxNSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgorCitTID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgyLSR7UFZ9IgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiYWNwaXh0cmFjdCIKKworRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgJ09QVF9DRkxBR1M9LVdhbGwnIgorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9pYXNsICR7RH0ke2JpbmRpcn0vaWFzbAorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpYmluICR7RH0ke2JpbmRpcn0vYWNwaWJpbgorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpZXhlYyAke0R9JHtiaW5kaXJ9L2FjcGlleGVjCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGloZWxwICR7RH0ke2JpbmRpcn0vYWNwaWhlbHAKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaW5hbWVzICR7RH0ke2JpbmRpcn0vYWNwaW5hbWVzCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlzcmMgJHtEfSR7YmluZGlyfS9hY3Bpc3JjCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGl4dHJhY3QgJHtEfSR7YmluZGlyfS9hY3BpeHRyYWN0Cit9CisKKyMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0CitQUk9WSURFUyA9ICJpYXNsIgorUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgorUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgorUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjc0MjAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSBkMjIyNDFlZmMwNzA4Yzk3OTlmMTdhMjBlYWJiNTJhNDhkNmQ2ZWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMiBKYW4gMjAxOCAxMjozNTozMiArMDgwMAotU3ViamVjdDogW1BBVENIXSBMaW51eDogYWRkIHN1cHBvcnQgZm9yIFgzMiBBQkkgY29tcGlsYXRpb24KLQotWDMyIGZvbGxvd3MgSUxQMzIgbW9kZWwuIENoZWNrIGZvciBJTFAzMiBhcyB3ZWxsIHdoZW4gY2hlY2tpbmcgZm9yCi14ODZfNjQgdG8gZW5zdXJlIHRoZSBkZWZpbmVzIGFyZSBjb3JyZWN0IGZvciBYMzIgQUJJLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2FjcGljYS9hY3BpY2EvcHVsbC8zNDhdCi0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBzb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmggYi9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmgKLWluZGV4IDc1YjFkODIuLjZiOGZmNzMgMTAwNjQ0Ci0tLS0gYS9zb3VyY2UvaW5jbHVkZS9wbGF0Zm9ybS9hY2xpbnV4LmgKLSsrKyBiL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAotQEAgLTMxNSw3ICszMTUsNyBAQAotICNkZWZpbmUgQUNQSV9GTFVTSF9DUFVfQ0FDSEUoKQotICNkZWZpbmUgQUNQSV9DQVNUX1BUSFJFQURfVChQdGhyZWFkKSAoKEFDUElfVEhSRUFEX0lEKSAoUHRocmVhZCkpCi0gCi0tI2lmIGRlZmluZWQoX19pYTY0X18pICAgIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHxcCi0rI2lmIGRlZmluZWQoX19pYTY0X18pICAgIHx8IChkZWZpbmVkKF9feDg2XzY0X18pICYmICFkZWZpbmVkKF9fSUxQMzJfXykpIHx8XAotICAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fUFBDNjRfXykgfHxcCi0gICAgIGRlZmluZWQoX19zMzkweF9fKQotICNkZWZpbmUgQUNQSV9NQUNISU5FX1dJRFRIICAgICAgICAgIDY0Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoCmluZGV4IDU2MTBlZDkuLmQ4YjVmOWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjkxNzFjMjJmMzg3MmVjYjRjMWFiMjc5ODVlOTNjYTQ0MDg0NTk1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTQwZDgwNDY5ZTZhN2RjZTZiYWY3MjE0ZGY5MGU4NmRhZmZjNTE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CiBEYXRlOiBNb24sIDUgSnVuIDIwMTcgMTM6MjY6MzggKzA5MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXNsZmlsZXMuYzogbWFuaXB1bGF0ZSBmZHMgaW5zdGVhZCBvZiBGSUxFCkBAIC0xNiwxOCArMTYsMjAgQEAKIFJlYmFzZSBvbiBhY3BpY2EgMjAxNzAzMDMKIAogU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGFjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYyB8IDE0ICsrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9hY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgYi9hY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKLWluZGV4IDgwOTA5MGMuLjk3ODk4YjEgMTAwNjQ0Ci0tLS0gYS9hY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKLSsrKyBiL2FjcGljYS11bml4Mi0yMDE3MDMwMy9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotQEAgLTQ0LDYgKzQ0LDEwIEBACistLS0KKyBzb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYyB8IDE1ICsrKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYworaW5kZXggODI4NjVkYi4uY2MwNzJkYyAxMDA2NDQKKy0tLSBhL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCisrKysgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYworQEAgLTQzLDYgKzQzLDExIEBACisgCiAgI2luY2x1ZGUgImFzbGNvbXBpbGVyLmgiCiAgI2luY2x1ZGUgImFjYXBwcy5oIgotICNpbmNsdWRlICJkdGNvbXBpbGVyLmgiCisrI2luY2x1ZGUgImR0Y29tcGlsZXIuaCIKICsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiArI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0zNSw3ICszNyw3IEBACiAgCiAgI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfQ09NUElMRVIKICAgICAgICAgIEFDUElfTU9EVUxFX05BTUUgICAgKCJhc2xmaWxlcyIpCi1AQCAtNjA3LDYgKzYxMSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCitAQCAtNjA2LDYgKzYxMSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCiAgCiAgICAgIGlmIChHYmxfRGVidWdGbGFnKQogICAgICB7CkBAIC00NCw3ICs0Niw3IEBACiAgICAgICAgICBGaWxlbmFtZSA9IEZsR2VuZXJhdGVGaWxlbmFtZSAoRmlsZW5hbWVQcmVmaXgsIEZJTEVfU1VGRklYX0RFQlVHKTsKICAgICAgICAgIGlmICghRmlsZW5hbWUpCiAgICAgICAgICB7Ci1AQCAtNjE4LDEwICs2MjQsMTAgQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKK0BAIC02MTcsMTAgKzYyNCwxMCBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAogICAgICAgICAgLyogT3BlbiB0aGUgZGVidWcgZmlsZSBhcyBTVERFUlIsIHRleHQgbW9kZSAqLwogIAogICAgICAgICAgR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uRmlsZW5hbWUgPSBGaWxlbmFtZTsKQEAgLTU4LDcgKzYwLDcgQEAKICAgICAgICAgIHsKICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAqIEEgcHJvYmxlbSB3aXRoIGZyZW9wZW4gaXMgdGhhdCBvbiBlcnJvciwgd2Ugbm8gbG9uZ2VyCi1AQCAtNjM1LDYgKzY0MSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCitAQCAtNjM0LDYgKzY0MSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCiAgICAgICAgICAgICAgZXhpdCAoMSk7CiAgICAgICAgICB9CiAgCkBAIC02Nyw2ICs2OSwzIEBACiAgICAgICAgICBBc2xDb21waWxlclNpZ25vbiAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKICAgICAgICAgIEFzbENvbXBpbGVyRmlsZUhlYWRlciAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKICAgICAgfQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiNmJhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBkM2I2MzAzYTY4NTNmNjEyYTU2ODQ4ZWU0ZTU5ZWFhMGIwYWI5NDg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWmhhbmcgWGlhbyA8eGlhby56aGFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyMSBGZWIgMjAxNyAxMTozMDoxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBiYXNoOiBtZW1sZWFrIGJ1ZyBmaXggZm9yIGJ1aWx0aW4gY29tbWFuZCByZWFkCi0KLUJ1aWx0IGluIGNvbW1hbmQgInJlYWQiIHdpdGggIi1lIiB1c2UgUmVhZGxpbmUgdG8gb2J0YWluIHRoZSBsaW5lCi1pbiBhbiBpbnRlcmFjdGl2ZSBzaGVsbC4gSW4gdGhpcyBwcm9jZXNzLCBhIHN0cmluZyAicmxidWYiIGlzCi1qdXN0IGFsbG9jYXRlZCB3aXRob3V0IGZyZWUgb3BlcmF0aW9uIHRodXMgY2F1c2UgbWVtb3J5IGxlYWsuIEZpeCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYmFzaC8yMDE3LTAyL21zZzAwMDYxLmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IFpoYW5nIFhpYW8gPHhpYW8uemhhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJ1aWx0aW5zL3JlYWQuZGVmIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2J1aWx0aW5zL3JlYWQuZGVmIGIvYnVpbHRpbnMvcmVhZC5kZWYKLWluZGV4IDQzOTcxNTQuLmVlMGM1YTYgMTAwNjQ0Ci0tLS0gYS9idWlsdGlucy9yZWFkLmRlZgotKysrIGIvYnVpbHRpbnMvcmVhZC5kZWYKLUBAIC02NzQsNiArNjc0LDExIEBAIGFkZF9jaGFyOgotICAgaW5wdXRfc3RyaW5nW2ldID0gJ1wwJzsKLSAgIENIRUNLX0FMUk07Ci0gCi0rI2lmIGRlZmluZWQgKFJFQURMSU5FKQotKyAgaWYgKGVkaXQpCi0rICAgIHhmcmVlIChybGJ1Zik7Ci0rI2VuZGlmCi0rCi0gICBpZiAocmV0dmFsIDwgMCkKLSAgICAgewotICAgICAgIHRfZXJybm8gPSBlcnJubzsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF80LjQuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzODJhNzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCi0gICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BhdGhleHAtZGVwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI3YzExMjk3MGNiZGNhZGZjMzMxZTEwZWViNWY2YWE0MSIKLVNSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gIjU3ZDg0MzJiZTU0NTQxNTMxYTQ5NmZkNDkwNGZkYzA4YzEyNTQyZjQzNjA1YTkyMDI1OTRmYTVkNWY5ZjIzMzEiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmEwOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC4xOC5iYgpAQCAtMCwwICsxLDQxIEBACityZXF1aXJlIGJhc2guaW5jCisKKyMgR1BMdjIrICg8IDQuMCksIEdQTHYzKyAoPj0gNC4wKQorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jhc2gvJHtCUH0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDE5IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAyMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMjAgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDIxO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAyMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMjI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDIyIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAyMzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMjMgXAorICAgICAgICAgICBmaWxlOi8vZXhlY3V0ZV9jbWQucGF0Y2g7c3RyaXBsZXZlbD0wIFwKKyAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdGVzdC1vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZml4LXJ1bi1idWlsdGlucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWhlbHAtZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXRoZXhwLWRlcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNTE4ZTJjMTg3Y2MxMWExNzA0MGYwOTE1ZGRkY2U1NGUiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICI2MDRkOWVlYzVlNGVkNWZkMjE4MGVlNDRkZDc1NmRkY2E5MmUwYjZhYTQyMTdiYmFiMmI2MjI3MzgwMzE3ZjIzIgorCitTUkNfVVJJW3BhdGNoMDE5Lm1kNXN1bV0gPSAiOGY0M2UxZDI3N2IwMmYzMzE5YTM0YzFjZDRhNGZmM2UiCitTUkNfVVJJW3BhdGNoMDE5LnNoYTI1NnN1bV0gPSAiMjcxNzBkNmVkZmU4ODE5ODM1NDA3ZmRjMDhiNDAxZDJlMTYxYjE0MDBmZTlkMGM1MzE3YTUxMTA0Yzg5YzExZSIKK1NSQ19VUklbcGF0Y2gwMjAubWQ1c3VtXSA9ICI1MjE3ZmYwOGM0NDQ0NDZlYzMwNmRjZTYwNDM3YzI4OCIKK1NSQ19VUklbcGF0Y2gwMjAuc2hhMjU2c3VtXSA9ICIxODQwZTJjYmYyNmJhODIyOTEzNjYyZjc0MDM3NTk0ZWQ1NjIzNjE0ODUzOTBjNTI4MTNiMzgxNTZjOTk1MjJjIgorU1JDX1VSSVtwYXRjaDAyMS5tZDVzdW1dID0gIjI4MmM3ZDliMzhkYTgwMDVkMjViNGY4MTYzMjhhMmY0IgorU1JDX1VSSVtwYXRjaDAyMS5zaGEyNTZzdW1dID0gImJkOGY1OTA1NGE3NjNlYzFjNjQxNzlhZDVjYjYwN2Y1NTg3MDhhMzE3YzJiZGIyMmI4MTRlM2RhNDU2Mzc0YzEiCitTUkNfVVJJW3BhdGNoMDIyLm1kNXN1bV0gPSAiMGI3MDljOWQ3ZjhlNmNmMjY3YThiODYzZWZiODk5ZjciCitTUkNfVVJJW3BhdGNoMDIyLnNoYTI1NnN1bV0gPSAiNDUzMzFmMDkzNmUzNmFiOTFiZmU0NGI5MzZlMzNlZDhhMWIxODQ4ZmE4OTZlOGExZDBmMmVmNzRmMjk3Y2I3OSIKK1NSQ19VUklbcGF0Y2gwMjMubWQ1c3VtXSA9ICJmZTJlMGNhNGNmOTQwOWZmMGU5NDI4ZTEyMzZmOTgzZSIKK1NSQ19VUklbcGF0Y2gwMjMuc2hhMjU2c3VtXSA9ICI0ZmVjMjM2ZjNmYmQzZDBjNDdiODkzZmRmYTkxMjIxNDJhNDc0ZjZlZjY2YzIwZmZiNmMwZjQ4NjRkZDU5MWI2IgorCitERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCitERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kX2FybXY1ID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmMvbGlibWF0aC5oIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmMvbGlibWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZTFhY2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iYy9saWJtYXRoLmgKQEAgLTAsMCArMSw0NiBAQAoreyJAaUsyMDpzMjpwQHIiLAorIkBpRjEsNS42LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1W2wwOktBOiNaMTpsMDpzNzpwS0E6czA6cGw1OkMxLDA6IiwKKyJzMTQ6cGw3OnMwOnBsMTQ6Uk4xOmw1OjA8WjI6MXMxMjpwbDU6bnM1OnBOMjpsMjpzMTU6cEs2OmwxNTorIiwKKyJLLjQ0Omw1OiorczEzOnBsNTpjUzErczI6cE4zOmw1OjE+WjQ6bDEwOjErczEwOnBsNTpLMjovczU6cGwyOiIsCisiMStzMjpwSjM6TjQ6bDEzOnMyOnAxbDU6K3MxNDpwbDU6czY6cDFzODpwSzI6czExOnBONjoxQjc6SjU6Tjg6IiwKKyJsMTE6aTExOnBKNjpONzpsNjpsNToqczY6bDg6bDExOipzODovczk6cGw5OjA9Wjk6bDEwOjA+WjEwOk4xMToiLAorImwxMDpkMTA6WjEyOmwxNDpsMTQ6KnMxNDpwSjExOk4xMjpOMTA6bDE1OnMyOnBsMTI6WjEzOjFsMTQ6L1IiLAorIk4xMzpsMTQ6MS9STjk6bDE0Omw5OitzMTQ6cEo4Ok41OjBSXUByIiwKKyJAaUYyLDUuNyw5LDEwLDExLDEyLDEzLDE0LDE1W2wwOktBOiNaMTpsMDpzNzpwS0E6czA6cGw1OkMyLDA6IiwKKyJzMTQ6cGw3OnMwOnBsMTQ6Uk4xOmw1OjB7WjI6MUsxMDpsMjpeLTEvUk4yOmwyOnMxNTpwSzY6bDI6K3MyOiIsCisicEsyOnMxMDpwMHMxMTpwTjM6bDU6SzI6fVo0OmwxMDpLMjoqczEwOnBsNTpjUnM1OnBKMzpONDpONTpsNToiLAorIksuNTp7WjY6bDEwOksyOipzMTA6cGw1OmNSczU6cEo1Ok42Omw1OjEtbDU6MSsvczEzOnMxNDpwbDEzOmwxMzoiLAorIipzMTI6cEszOnMxMTpwTjg6MUI5Oko3Ok4xMDpsMTE6SzI6K3MxMTpwSjg6Tjk6bDEzOmwxMjoqczEzOmwxMToiLAorIi9zOTpwbDk6MD1aMTE6bDEwOmwxNDoqczE0OnBsMTU6czI6cGwxNDoxL1JOMTE6bDE0Omw5OitzMTQ6cEoxMDpONzoiLAorIjBSXUByIiwKKyJAaUYzLDUuNyw5LDExLDEyLDEzLDE2LDE0LDE1W2wwOktBOiNaMTpsMDpzNzpwS0E6czA6cGw1OkMzLDA6IiwKKyJzMTQ6cGw3OnMwOnBsMTQ6Uk4xOmwyOnMxNTpwSzEuMTpsMTU6KksyOitzMjpwMUM0LDA6czE0OnBsNTowIiwKKyI8WjI6MXMxMjpwbDU6bnM1OnBOMjowczI6cGw1OmwxNDovSzI6K0s0Oi9zMTM6cGw1Oks0OmwxMzoqbDE0OiIsCisiKi1zNTpwbDEzOksyOiVaMzpsNTpuczU6cE4zOmwxNTpLMjorczI6cGw1OnM5OnMxNDpwbDU6bmw1OipzMTY6IiwKKyJwSzM6czExOnBONToxQjY6SjQ6Tjc6bDExOksyOitzMTE6cEo1Ok42Omw5OmwxNjpsMTE6bDExOjEtKi8qIiwKKyJzOTpwbDk6MD1aODpsMTU6czI6cGwxMjpaOTpsMTQ6bjEvUk45OmwxNDoxL1JOODpsMTQ6bDk6K3MxNDpwIiwKKyJKNzpONDowUl1AciIsCisiQGlGNSw1LjcsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDU6QzUsMDpzMTQ6cGw3OnMwOnBsMTQ6IiwKKyJSTjE6bDI6czE1OnBsMjpLMS4yOipzMjpwbDU6MUM0LDA6SzI6KitDMywwOnMxNDpwbDE1OnMyOnBsMTQ6IiwKKyIxL1IwUl1AciIsCisiQGlGNCw1LjYsNyw5LDEwLDExLDEyLDEzLDE2LDE0LDE1W2wwOktBOiNaMTpsMDpzNzpwS0E6czA6cGw1OiIsCisiQzQsMDpzMTQ6cGw3OnMwOnBsMTQ6Uk4xOjFzMTI6cGw1OjA8WjI6MW5zMTI6cGw1Om5zNTpwTjI6bDU6MSIsCisiPVozOmwyOksyNTp7WjQ6Sy43ODUzOTgxNjMzOTc0NDgzMDk2MTU2NjA4OmwxMjovUk40OmwyOks0MDp7WjU6IiwKKyJLLjc4NTM5ODE2MzM5NzQ0ODMwOTYxNTY2MDg0NTgxOTg3NTcyMTA0OTI6bDEyOi9STjU6bDI6SzYwOntaNjoiLAorIksuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1ODE5ODc1NzIxMDQ5MjkyMzQ5ODQzNzc2NDU1MjQzNzM2IiwKKyI6bDEyOi9STjY6TjM6bDU6Sy4yOj1aNzpsMjpLMjU6e1o4OksuMTk3Mzk1NTU5ODQ5ODgwNzU4MzcwMDQ5NyIsCisiOmwxMjovUk44OmwyOks0MDp7Wjk6Sy4xOTczOTU1NTk4NDk4ODA3NTgzNzAwNDk3NjUxOTQ3OTAyOTM0NDc1IiwKKyI6bDEyOi9STjk6bDI6SzYwOntaMTA6Sy4xOTczOTU1NTk4NDk4ODA3NTgzNzAwNDk3NjUxOTQ3OTAyOTM0NDc1ODUxMDM3ODc4NTIxMDE1MTc2ODgiLAorIjpsMTI6L1JOMTA6Tjc6bDI6czE1OnBsNTpLLjI6PloxMTpsMTU6SzU6K3MyOnBLLjI6QzQsMDpzNjpwTjExOiIsCisibDE1OkszOitzMjpwTjEyOmw1OksuMjo+WjEzOmwxMDoxK3MxMDpwbDU6Sy4yOi0xbDU6Sy4yOiorL3M1OiIsCisicEoxMjpOMTM6bDU6czEzOnMxNDpwbDU6bmw1OipzMTY6cEszOnMxMTpwTjE1OjFCMTY6SjE0Ok4xNzpsMTE6IiwKKyJLMjorczExOnBKMTU6TjE2OmwxMzpsMTY6KnMxMzpsMTE6L3M5OnBsOTowPVoxODpsMTU6czI6cGwxMDpsNjoiLAorIipsMTQ6K2wxMjovUk4xODpsMTQ6bDk6K3MxNDpwSjE3Ok4xNDowUl1AciIsCisiQGlGNiwxMyw1LjYsNyw4LDksMTAsMTEsMTIsMTYsMTQsMTVbbDA6S0E6I1oxOmwwOnM3OnBLQTpzMDpwbDEzOiIsCisibDU6QzYsMDA6czE0OnBsNzpzMDpwbDE0OlJOMTpsMjpzMTU6cDBzMjpwbDEzOjEvczEzOnBsMTM6MDxaMjoiLAorImwxMzpuczEzOnBsMTM6SzI6JTE9WjM6MXMxMjpwTjM6TjI6MXMxMDpwSzI6czExOnBONTpsMTE6bDEzOnsiLAorIkI2Oko0Ok43OmwxMTppMTE6cEo1Ok42OmwxMDpsMTE6KnMxMDpwSjc6TjQ6SzEuNTpsMTU6KnMyOnBsNToiLAorImwxMzpeSzI6bDEzOl4vbDEwOi9zMTA6cDFzOTpzMTQ6cGw1Om5sNToqSzQ6L3MxNjpwSzEuNTpsMTU6KmwxMDoiLAorImNMK2wxMDpjUy1zMjpwMXMxMTpwTjk6MUIxMDpKODpOMTE6bDExOmkxMTpwSjk6TjEwOmw5OmwxNjoqbDExOiIsCisiL2wxMzpsMTE6Ky9zOTpwbDk6MD1aMTI6bDE1OnMyOnBsMTI6WjEzOmwxMDpubDE0OioxL1JOMTM6bDEwOiIsCisibDE0OioxL1JOMTI6bDE0Omw5OitzMTQ6cEoxMTpOODowUl1AciIsMH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjL25vLWdlbi1saWJtYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmMvbm8tZ2VuLWxpYm1hdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRjY2U1OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjL25vLWdlbi1saWJtYXRoLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK1RoZXNlIHJ1bGVzIGFyZSBub3QgY3Jvc3MtZnJpZW5kbHkgc28gZGVsZXRlIHRoZW0gYW5kIHdlJ2xsIGdlbmVyYXRlIHRoZSBmaWxlIG9mZmxpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2JjL01ha2VmaWxlLmFtIGIvYmMvTWFrZWZpbGUuYW0KK2luZGV4IGQ5ZDQxMmUuLmYyNDQyNDEgMTAwNjQ0CistLS0gYS9iYy9NYWtlZmlsZS5hbQorKysrIGIvYmMvTWFrZWZpbGUuYW0KK0BAIC0zMSwxNCArMzEsNiBAQCBnbG9iYWwubzogbGlibWF0aC5oCisgCisgZmJjT0JKID0gbWFpbi5vIGJjLm8gc2Nhbi5vIGV4ZWN1dGUubyBsb2FkLm8gc3RvcmFnZS5vIHV0aWwubyB3YXJyYW50eS5vCisgCistbGlibWF0aC5oOiBsaWJtYXRoLmIgJChmYmNPQkopICQoTElCQkMpCistCWVjaG8gJ3swfScgPiBsaWJtYXRoLmgKKy0JJChNQUtFKSBnbG9iYWwubworLQkkKExJTkspIC1vIGZiYyAkKGZiY09CSikgZ2xvYmFsLm8gJChMSUJCQykgJChMSUJMKSAkKFJFQURMSU5FTElCKSAkKExJQlMpCistCS4vZmJjIC1jICQoc3JjZGlyKS9saWJtYXRoLmIgPC9kZXYvbnVsbCA+bGlibWF0aC5oCistCSQoc3JjZGlyKS9maXgtbGlibWF0aF9oCistCXJtIC1mIC4vZmJjIC4vZ2xvYmFsLm8KKy0KKyBzYmNPQkogPSBtYWluLm8gc2JjLm8gc2Nhbi5vIGV4ZWN1dGUubyBnbG9iYWwubyBsb2FkLm8gc3RvcmFnZS5vIHV0aWwubyBcCisgICAgICAgICAgd2FycmFudHkubworIHNiYy5vOiBzYmMuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmNfMS4wNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjXzEuMDYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YzhhODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvYmNfMS4wNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQXJiaXRyYXJ5IHByZWNpc2lvbiBjYWxjdWxhdG9yIGxhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2JjL2JjLmh0bWwiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmMvYmNkZWZzLmg7ZW5kbGluZT0zMTttZDU9NDZkZmZkYWYxMGE5OTcyOGRkOGNlMzU4ZTQ1ZDQ2ZDggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGMvZGMuaDtlbmRsaW5lPTI1O21kNT0yZjljNTU4Y2RkODBlMzFiNGQ5MDRlNDhjMjM3NDMyOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvbnVtYmVyLmM7ZW5kbGluZT0zMTttZDU9OTk0MzRhMDg5OGFiY2E3Nzg0YWNmZDM2YjgxOTExOTkiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAiZmxleCIKLVBSID0gInIzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmMvYmMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZWdtZW50LWZhdWx0LnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ0NGI1ZGRkZWJkOGE3YTczMDlhZWE2YzM2ZmRhMTE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlZjZkOWYxN2MzYzBkOTJkODc5OGUzNTY2NjE3NWVjZDNkOGVmYWM0MDA5ZDY0NTdiNWM5OWNlYTcyYzBlMzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJkYyIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA3LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYy9iY18xLjA3LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgwODU3NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2JjXzEuMDcuMS5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIkFyYml0cmFyeSBwcmVjaXNpb24gY2FsY3VsYXRvciBsYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9iYy9iYy5odG1sIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYy9iY2RlZnMuaDtlbmRsaW5lPTE3O21kNT00Mjk1YzA2ZGY5ZTgzMzUxOWEzNDJmN2I1ZDQzZGIwNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYy9kYy5oO2VuZGxpbmU9MTg7bWQ1PTM2YjhjNjAwYjYzZWU4YzNhZWFkZTI3NjRmNmIyYTRiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9udW1iZXIuYztlbmRsaW5lPTIwO21kNT1jZjQzMDY4Y2M4OGY4Mzc3MzFkYzUzMjQwNDU2Y2ZhZiIKKworU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbm8tZ2VuLWxpYm1hdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlibWF0aC5oIgorU1JDX1VSSVttZDVzdW1dID0gImNkYTkzODU3NDE4NjU1ZWE0MzU5MDczNmZjM2NhOWZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyYWRmY2E4OWIwYTFjMDE2NGMyY2RjYTU5Y2EyMTBjMWQ0NGMzZmZjNDZkYWY5OTMxY2Y0OTQyNjY0Y2IwMmEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcworCitQQUNLQUdFQ09ORklHID8/PSAicmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmUsLS13aXRob3V0LXJlYWRsaW5lLHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtbGliZWRpdCwtLXdpdGhvdXQtbGliZWRpdCxsaWJlZGl0IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgY3AgLWYgJHtXT1JLRElSfS9saWJtYXRoLmggJHtCfS9iYy9saWJtYXRoLmgKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZGMiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2JjL2ZpbGVzL2ZpeC1zZWdtZW50LWZhdWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvZmlsZXMvZml4LXNlZ21lbnQtZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwYzBkYTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmMvZmlsZXMvZml4LXNlZ21lbnQtZmF1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotd2hlbiBydW4gY29tbWFuZCBzdWNoIGFzICdlY2hvICJhID0gMTMiIHwgYmMgLWwnLCBpdCBzZWdtZW50YXRpb24gZmF1bHRzLgotVGhpcyBwYXRjaCBpcyBmcm9tIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9ibGZzLXN1cHBvcnRAbGludXhmcm9tc2NyYXRjaC5vcmcvbXNnMDQ2MDIuaHRtbC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBiYy0xLjA2L2xpYi9udW1iZXIuYy5vcmlnCTIwMDMtMDktMjYgMjE6MTQ6MDIuMDAwMDAwMDAwICswMDAwCi0rKysgYmMtMS4wNi9saWIvbnVtYmVyLmMJMjAwMy0wOS0yNiAyMToxNDoyNi4wMDAwMDAwMDAgKzAwMDAKLUBAIC0zNCw2ICszNCw3IEBACi0gI2luY2x1ZGUgPG51bWJlci5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxjdHlwZS5oPi8qIFByb3RvdHlwZXMgbmVlZGVkIGZvciBleHRlcm5hbCB1dGlsaXR5IHJvdXRpbmVzLiAqLwotIAotICNkZWZpbmUgYmNfcnRfd2FybiBydF93YXJuCi0tLS0gYmMtMS4wNi9iYy9sb2FkLmMub3JpZwkyMDAzLTA5LTI2IDIxOjE0OjE0LjAwMDAwMDAwMCArMDAwMAotKysrIGJjLTEuMDYvYmMvbG9hZC5jCTIwMDMtMDktMjYgMjE6MTQ6MjYuMDAwMDAwMDAwICswMDAwCi1AQCAtMTU2LDcgKzE1Niw3IEBACi0gICBsb25nICBsYWJlbF9ubzsKLSAgIGxvbmcgIHZhZl9uYW1lOwkvKiB2YXJpYWJsZSwgYXJyYXkgb3IgZnVuY3Rpb24gbnVtYmVyLiAqLwotICAgbG9uZyAgZnVuYzsKLS0gIHByb2dyYW1fY291bnRlciBzYXZlX2FkcjsKLSsgIHN0YXRpYyBwcm9ncmFtX2NvdW50ZXIgc2F2ZV9hZHI7Ci0gCi0gICAvKiBJbml0aWFsaXplLiAqLwotICAgc3RyID0gY29kZTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAxLWZpeC10eXBvcy1pbi1tYW5wYWdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2gKaW5kZXggZmVlMzY4ZC4uMjVhMmZhYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2IvYmxrdG9vbC9ibGt0b29sXzQtNy5kZWJpYW4udGFyLnh6CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCiAgYmxrdG9vbC44IHwgNCArKy0tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMi1maXgtc3RyaW5nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDItZml4LXN0cmluZy1lcnJvci5wYXRjaAppbmRleCBkMDhhYmE1Li40MDFlNDFlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMi1maXgtc3RyaW5nLWVycm9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC8wMDAyLWZpeC1zdHJpbmctZXJyb3IucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBmdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2IvYmxrdG9vbC9ibGt0b29sXzQtNy5kZWJpYW4udGFyLnh6CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCiAgdXRpbC5jIHwgMiArLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sLzAwMDMtRml4LTMtZC1hcmd1bWVudC1mb3ItQkxLUk9TRVQtaXQtbXVzdC1iZS1jb25zdC1pbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaAppbmRleCBkN2VkMGI5Li5kMWYxZTc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvMDAwMy1GaXgtMy1kLWFyZ3VtZW50LWZvci1CTEtST1NFVC1pdC1tdXN0LWJlLWNvbnN0LWludC5wYXRjaApAQCAtMTQsNyArMTQsNyBAQAogZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9iL2Jsa3Rvb2wvYmxrdG9vbF80LTcuZGViaWFuLnRhci54egogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQogIGJsa3Rvb2wuYyB8IDExICsrKysrKysrKy0tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvYmxrdG9vbC1nbnVsaWItbWFrZWRldi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbC9ibGt0b29sLWdudWxpYi1tYWtlZGV2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZWE2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2wvYmxrdG9vbC1nbnVsaWItbWFrZWRldi5wYXRjaApAQCAtMCwwICsxLDIzIEBACitpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+IGZvciBtYWpvci9taW5vciBkZWZpbnRpb25zCisKK0ZpeGVzCisKK3wgLi4vYmxrdG9vbC00Lm9yaWcvYmxrdG9vbC5jOiBJbiBmdW5jdGlvbiAnZGV0ZWN0X2Rldl9jbGFzcyc6Cit8IC4uL2Jsa3Rvb2wtNC5vcmlnL2Jsa3Rvb2wuYzoyOTU6MTA6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtYWpvcicgWy1XaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb25dCit8ICAgc3dpdGNoIChtYWpvcihzdF9yZGV2KSkgeworfCAgICAgICAgICAgXn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorSW5kZXg6IGJsa3Rvb2wtNC5vcmlnL2Jsa3Rvb2wuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGJsa3Rvb2wtNC5vcmlnLm9yaWcvYmxrdG9vbC5jCisrKysgYmxrdG9vbC00Lm9yaWcvYmxrdG9vbC5jCitAQCAtMjcsNiArMjcsNyBAQAorICNpbmNsdWRlIDxsaW51eC9jZHJvbS5oPgorICNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgorICNpbmNsdWRlIDxzY3NpL3Njc2kuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorIAorICNpbmNsdWRlICJibGt0b29sLmgiCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2xfNC03LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmxrdG9vbC9ibGt0b29sXzQtNy5iYgppbmRleCA0NTUxYzMyLi4wZTZmN2VlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ibGt0b29sL2Jsa3Rvb2xfNC03LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jsa3Rvb2wvYmxrdG9vbF80LTcuYmIKQEAgLTEzLDYgKzEzLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXR5cG9zLWluLW1hbnBhZ2UucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1maXgtc3RyaW5nLWVycm9yLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtRml4LTMtZC1hcmd1bWVudC1mb3ItQkxLUk9TRVQtaXQtbXVzdC1iZS1jb25zdC1pbnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmxrdG9vbC1nbnVsaWItbWFrZWRldi5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICI2MmVkYzA5Yzk5MDgxMDdlNjkzOTFjODdmNGYzZmQ0MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKaW5kZXggYWNiZjgwYS4uMDI1ZjQ1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKQEAgLTUsNyArNSw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2J6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiYnppcDIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO2JlZ2lubGluZT04O2VuZGxpbmU9Mzc7bWQ1PTQwZDlkMWViMDU3MzZkMWJmYzg2Y2ZkZDkxMDZlNmIyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDtlbmRsaW5lPTM3O21kNT0zOTQwNjMxNWY1NDBjNjliZDA1YjE1MzFkYWVkZDJhZSIKIFBSID0gInI1IgogCiBTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8ke0JQfS50YXIuZ3ogXApAQCAtMjAsNiArMjAsNyBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyODQ4ZjM0ZmNkNWQ2Y2Y0N2RlZjAwNDYxZmNiNTI4YTA0ODRkOGVkZWY4MjA4ZDZkMmUyOTA5ZGM2MWQ5Y2QiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5zb3VyY2V3YXJlLm9yZy9iemlwMi8iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUEFDS0FHRVMgPSsgImxpYmJ6MiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYjhjMjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVNVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCi1ERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCi1zcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAotb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCi1hYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20iCi0KLSMgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIExpY2Vuc2UKLUxJQ0VOU0UgPSAiSVNDICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQyYTU5MjE3MDc2MGUxMzg2Yzc2OWUxMDQzYjM3MjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Nyb24uYztlbmRsaW5lPTIwO21kNT1iNDI1YzMzNDI2NTAyNjE3NzEyODM1M2ExNDI2MzNiNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcG9wZW4uYztiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1lZGQ1MDc0MmQ4ZGVmNzEyZTk0NzJkYmEzNTM2NjhhOSIKLQotU0VDVElPTiA9ICJ1dGlscyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvJHtCUE59L3JlbGVhc2VzLyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS9yZWxlYXNlcy9kb3dubG9hZC9jcm9uaWUtJHtQVn0vY3JvbmllLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9uZC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb250YWIgXAotICAgICAgICAgICBmaWxlOi8vY3JvbmQuc2VydmljZSBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL2Nyb25kX3BhbV9jb25maWcucGF0Y2giCi1QQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1hY2Nlc3MgcGFtLXBsdWdpbi1sb2dpbnVpZCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxMGU2ZWZmY2MwMzI5OThiMGE0OWZiZDQ2MzIyZTE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjNzM2NjYxMDJhNmI1ZDM1ZTJlYWYxYmQwNjkyNWYyZDRiMGNlZjhkMzMyM2MzNzI4NmRkYTMwODlhODUzMzgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0td2l0aC1hdWRpdCwtLXdpdGhvdXQtYXVkaXQsYXVkaXQsIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sJHtQQU1fREVQU30iCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjcm9uZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkwIDIgMyA0IDUgLiBzdG9wIDYwIDAgMSA2IC4iCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBjcm9udGFiIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY3JvbmQuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotCWluc3RhbGwgLW0gMDY0NCAke1N9L2Nyb25kLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY3JvbmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9uZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jcm9uZAotCi0JIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jcm9uZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2Nyb25kLnNlcnZpY2UKLQotCSMgYmVsb3cgYXJlIG5lY2Vzc2FyeSBmb3IgYSBjb21wbGV0ZSBjcm9uIGVudmlyb25tZW50Ci0JaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY3JvbnRhYiAke0R9JHtzeXNjb25mZGlyfS8KLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmQKLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLndlZWtseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGVueQotCi0JIyBiZWxvdyBzZXR0aW5nIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyBub3JtYWwgdXNlciB1c2luZyBjcm9udGFiCi0KLQkjIHNldGdpZCBmb3IgY3JvbnRhYiBiaW5hcnkKLQljaG93biByb290OmNyb250YWIgJHtEfSR7YmluZGlyfS9jcm9udGFiCi0JY2htb2QgMjc1NSAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQotCSMgYWxsb3cgJ2Nyb250YWInIGdyb3VwIHdyaXRlIHRvIC92YXIvc3Bvb2wvY3JvbgotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCi0JY2htb2QgNzcwICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQotCWNobW9kIDYwMCAke0R9JHtzeXNjb25mZGlyfS9jcm9udGFiCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2Nyb24qIgotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2Nyb250YWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWJjYTdmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuMi5iYgpAQCAtMCwwICsxLDgzIEBACitTVU1NQVJZID0gIkNyb24gZGFlbW9uIGZvciBleGVjdXRpbmcgcHJvZ3JhbXMgYXQgc2V0IHRpbWVzIgorREVTQ1JJUFRJT04gPSAiQ3JvbmllIGNvbnRhaW5zIHRoZSBzdGFuZGFyZCBVTklYIGRhZW1vbiBjcm9uZCB0aGF0IHJ1bnMgXAorc3BlY2lmaWVkIHByb2dyYW1zIGF0IHNjaGVkdWxlZCB0aW1lcyBhbmQgcmVsYXRlZCB0b29scy4gSXQgaXMgYmFzZWQgb24gdGhlIFwKK29yaWdpbmFsIGNyb24gYW5kIGhhcyBzZWN1cml0eSBhbmQgY29uZmlndXJhdGlvbiBlbmhhbmNlbWVudHMgbGlrZSB0aGUgXAorYWJpbGl0eSB0byB1c2UgcGFtIGFuZCBTRUxpbnV4LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tIgorCisjIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSBMaWNlbnNlCitMSUNFTlNFID0gIklTQyAmIEJTRC0zLUNsYXVzZSAmIEJTRC0yLUNsYXVzZSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRkMmE1OTIxNzA3NjBlMTM4NmM3NjllMTA0M2IzNzIyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jcm9uLmM7ZW5kbGluZT0yMDttZDU9YjQyNWMzMzQyNjUwMjYxNzcxMjgzNTNhMTQyNjMzYjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3BvcGVuLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0zMTttZDU9ZWRkNTA3NDJkOGRlZjcxMmU5NDcyZGJhMzUzNjY4YTkiCisKK1NFQ1RJT04gPSAidXRpbHMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kLyR7QlBOfS9yZWxlYXNlcy8iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvcmVsZWFzZXMvZG93bmxvYWQvY3JvbmllLSR7UFZ9L2Nyb25pZS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9udGFiIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb25kLnNlcnZpY2UgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0iCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9jcm9uZF9wYW1fY29uZmlnLnBhdGNoIgorUEFNX0RFUFMgPSAibGlicGFtIGxpYnBhbS1ydW50aW1lIHBhbS1wbHVnaW4tYWNjZXNzIHBhbS1wbHVnaW4tbG9naW51aWQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MDMzMTRmNThhNDllYTEzNmU5OTY2ZDM5MzdkOWJmNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzBiZjM0NjQxNjkxNDg5MzMwZTcwOGJkNGNkYmQ3NzkyNjcyOTZhMDMwNjY4YTEyZjc3YjdlMzY4NzJmZDc1IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLXdpdGgtYXVkaXQsLS13aXRob3V0LWF1ZGl0LGF1ZGl0LCIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtLCR7UEFNX0RFUFN9IgorCitJTklUU0NSSVBUX05BTUUgPSAiY3JvbmQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5MCAyIDMgNCA1IC4gc3RvcCA2MCAwIDEgNiAuIgorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY3JvbnRhYiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNyb25kLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy8KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcm9uZC5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nyb25kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY3JvbmQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY3JvbmQKKworCSMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY3JvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jcm9uZC5zZXJ2aWNlCisKKwkjIGJlbG93IGFyZSBuZWNlc3NhcnkgZm9yIGEgY29tcGxldGUgY3JvbiBlbnZpcm9ubWVudAorCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb250YWIgJHtEfSR7c3lzY29uZmRpcn0vCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkKKwlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRlbnkKKworCSMgYmVsb3cgc2V0dGluZyBpcyBuZWNlc3NhcnkgdG8gYWxsb3cgbm9ybWFsIHVzZXIgdXNpbmcgY3JvbnRhYgorCisJIyBzZXRnaWQgZm9yIGNyb250YWIgYmluYXJ5CisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCWNobW9kIDI3NTUgJHtEfSR7YmluZGlyfS9jcm9udGFiCisKKwkjIGFsbG93ICdjcm9udGFiJyBncm91cCB3cml0ZSB0byAvdmFyL3Nwb29sL2Nyb24KKwljaG93biByb290OmNyb250YWIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCWNobW9kIDc3MCAke0R9JHtsb2NhbHN0YXRlZGlyfS9zcG9vbC9jcm9uCisKKwljaG1vZCA2MDAgJHtEfSR7c3lzY29uZmRpcn0vY3JvbnRhYgorfQorCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9uKiIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jcm9udGFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKaW5kZXggYWM0ZDIyNS4uYzE0MmE0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCkBAIC0yLDEzICsyLDE0IEBACiBIT01FUEFHRSA9ICJodHRwczovL3d3dy5jdXBzLm9yZy8iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotREVQRU5EUyA9ICJnbnV0bHMgbGlicG5nIGpwZWcgZGJ1cyBkYnVzLWdsaWIgemxpYiBsaWJ1c2IiCitERVBFTkRTID0gImdudXRscyBsaWJwbmcganBlZyBkYnVzIGRidXMtZ2xpYiB6bGliIGxpYnVzYjEiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LXNvdXJjZS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdXNlX2VjaG9fb25seV9pbl9pbml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggXAotCSAgIgorICAgICAgICAgICBmaWxlOi8vY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjdXBzLSg/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKT8pLXNvdXJjZS50YXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODg4NWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaApAQCAtMCwwICsxLDIxIEBACitAQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQorY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KK2F2b2lkIHRoZSBjb25mbGljdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbiBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCitpbmRleCA0YTc4YmE2Li4wM2M2NTgyIDEwMDY0NAorLS0tIGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KKysrKyBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCitAQCAtNzMsNyArNzMsNyBAQCBQYWdlTG9nIEBDVVBTX0xPR0RJUkAvcGFnZV9sb2cKKyAjUmVxdWVzdFJvb3QgQENVUFNfUkVRVUVTVFNACisgCisgIyBMb2NhdGlvbiBvZiBoZWxwZXIgcHJvZ3JhbXMuLi4KKy0jU2VydmVyQmluIEBDVVBTX1NFUlZFUkJJTkAKKysjU2VydmVyQmluCisgCisgIyBTU0wvVExTIGtleWNoYWluIGZvciB0aGUgc2NoZWR1bGVyLi4uCisgI1NlcnZlcktleWNoYWluIEBDVVBTX1NFUlZFUktFWUNIQUlOQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWE5MzRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBjdXBzLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOTFjMjZkOGQ5N2I1YTE2MzBhOTYyZjUzMGYwMjE5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDM4NTc3OGMyYjNiZGY1NTAzMGQxYzk5OTczNGUyMjc3NGM3OWUzNDI1ZDkxMzM5Y2U2Nzc4MjU2MjAxNjliIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMWJkODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjguYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGN1cHMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1mMjEyYjQzMzhkYjBkYThjYjg5MmU5NGJmMjk0OTQ2MCIKKworU1JDX1VSSVttZDVzdW1dID0gIjMzMTUwZDA4OTkzYTA0YzhlMjIxNzZlOTM4MDVhMDUxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5NjhmYzFkMjZmYzQ4NzI3NTA4ZGIxYzEzODBlMzZjNjY5NGFiOTAxNzdmZDY5MjBhZWM1ZjZjYzczYWY5ZTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy42LmJiCmluZGV4IGRlYWRkNjIuLjhiYTg5N2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHNfMy42LmJiCkBAIC0xOSw2ICsxOSw4IEBACiAKIGluaGVyaXQgcHRlc3QKIAorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCisKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJdD0ke0R9JHtQVEVTVF9QQVRIfQogCWluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHQvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKaW5kZXggZGUzODEwNC4uZDgxMzIwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMTQ4NDU0NWExNTBkZTc5NDgzYjZlMmE3NGJlMDJlYmQwMzBmMTkyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFR1ZG9yIEZsb3JlYSA8dHVkb3IuZmxvcmVhQGVuZWEuY29tPgorRGF0ZTogV2VkLCAyOCBNYXkgMjAxNCAxODo1OTo1NCArMDIwMAorU3ViamVjdDogW1BBVENIXSBldGh0b29sOiB1c2Ugc2VyaWFsLXRlc3RzIGNvbmZpZyBuZWVkZWQgYnkgcHRlc3QuCisKIHB0ZXN0IG5lZWRzIGJ1aWxkdGVzdC1URVNUUyBhbmQgcnVudGVzdC1URVNUUyB0YXJnZXRzLgogc2VyaWFsLXRlc3RzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRob3NlIHRhcmdldHMuCiAKQEAgLTUsMTIgKzEwLDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIChkZWZhdWx0IGF1dG9tYWtlIGJlaGF2aW9yIGluY29tcGF0aWJsZSB3aXRoIHB0ZXN0KQogCi1JbmRleDogZXRodG9vbC00LjEzL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGV0aHRvb2wtNC4xMy5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGV0aHRvb2wtNC4xMy9jb25maWd1cmUuYWMKLUBAIC0yLDcgKzIsNyBAQCBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwCi0gQUNfSU5JVChldGh0b29sLCA0LjEzLCBuZXRkZXZAdmdlci5rZXJuZWwub3JnKQorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlODkxZDkxLi42MDBmOGE4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yLDcgKzIsNyBAQCBkbmwgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KKyBBQ19JTklUKGV0aHRvb2wsIDQuMTcsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCiAgQUNfUFJFUkVRKDIuNTIpCiAgQUNfQ09ORklHX1NSQ0RJUihbZXRodG9vbC5jXSkKIC1BTV9JTklUX0FVVE9NQUtFKFtnbnVdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg2MmE1Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmJhNDRlYjBjYTk2NzUyMzkyZTliZjhkYzgzYmEzMDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDMxMWM0YjU1N2M0NGM1MjQ4YWM1NDM2YjllMTljMzkxYTYwZDhlNDgzMGI2YTdmNDFiZTE2ZDg5YzA1NTZkZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCi0gICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDRhOTU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuMTcuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJEaXNwbGF5IG9yIGNoYW5nZSBldGhlcm5ldCBjYXJkIHNldHRpbmdzIgorREVTQ1JJUFRJT04gPSAiQSBzbWFsbCB1dGlsaXR5IGZvciBleGFtaW5pbmcgYW5kIHR1bmluZyB0aGUgc2V0dGluZ3Mgb2YgeW91ciBldGhlcm5ldC1iYXNlZCBuZXR3b3JrIGludGVyZmFjZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V0aHRvb2wuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE3O21kNT1jMTliMzA1NDhjNTgyNTc3ZmM2YjQ0MzYyNmZjMTIxNiIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC9ldGh0b29sLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZGJhMDM0NWE0YWI5ZjUxYjRhNGE5NzM5Mjg0MjM4ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MTMwMTQyYTE1Zjc0MDlkMThkZTM2Njc5OThmM2M5OWZiYTUyZmQ3YzhkOTRiZTdlY2RhYmY4ZGNhYjNkNmMxIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgIGNwICR7Qn0vTWFrZWZpbGUgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1jbWRsaW5lICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L3Rlc3QtZmVhdHVyZXMgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS9ldGh0b29sICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2V0aHRvb2wKKyAgIHNlZCAtaSAncy9eTWFrZWZpbGUvX01ha2VmaWxlLycgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKaW5kZXggODcyOWUxYi4uNjA2NGQxOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gODZkYjJhNWYzYjdlZjgxMTNlNTM4NGI0ZTAyZDJiMjk5Yzg3YTA0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCkBAIC0xMSwxNSArMTEsMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQorIGdsL2xpYi9NYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGZpbmR1dGlscy00LjUuMTQvZ2wvbGliL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmluZHV0aWxzLTQuNS4xNC5vcmlnL2dsL2xpYi9NYWtlZmlsZS5hbQotKysrIGZpbmR1dGlscy00LjUuMTQvZ2wvbGliL01ha2VmaWxlLmFtCi1AQCAtMTIyMCw3ICsxMjIwLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCitkaWZmIC0tZ2l0IGEvZ2wvbGliL01ha2VmaWxlLmFtIGIvZ2wvbGliL01ha2VmaWxlLmFtCitpbmRleCBhOWUyZmU0Li4xYzZlYTljIDEwMDY0NAorLS0tIGEvZ2wvbGliL01ha2VmaWxlLmFtCisrKysgYi9nbC9saWIvTWFrZWZpbGUuYW0KK0BAIC0xMjM0LDcgKzEyMzQsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKICAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCiAgCSAgICBkYXJ3aW5bNTZdKikgXAogIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1NzA0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaApAQCAtMCwwICsxLDE0NCBAQAorRnJvbSBhM2Y0ODIxYzRhM2Y3MjNkMjFjOTI5OGQ1NGJlZThhNjU2YmZkN2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQmVybmhhcmQgVm9lbGtlciA8bWFpbEBiZXJuaGFyZC12b2Vsa2VyLmRlPgorRGF0ZTogVHVlLCAzMCBKYW4gMjAxOCAyMzozMDowOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBmaW5kOiBtYWtlIC1kZWxldGUgaG9ub3VyIHRoZSAtaWdub3JlX3JlYWRkaXJfcmFjZSBvcHRpb24KKworKiBmaW5kL3ByZWQuYyAocHJlZF9kZWxldGUpOiBSZXR1cm4gdHJ1ZSB3aGVuIHRoZSAtaWdub3JlX3JlYWRkaXJfcmFjZQorb3B0aW9uIGlzIGFjdGl2ZSBhbmQgdW5saW5rYXQoKSBjYW1lIGJhY2sgd2l0aCBFTk9FTlQuCisqIGRvYy9maW5kLnRleGkgKE9wdGlvbiAtaWdub3JlX3JlYWRkaXJfcmFjZSk6IERvY3VtZW50IHRoZSBjaGFuZ2UuCisoQWN0aW9uIC1kZWxldGUpOiBMaWtld2lzZS4KKyogZmluZC9maW5kLjE6IExpa2V3aXNlLgorKiBORVdTIChCdWcgRml4ZXMpOiBNZW50aW9uIHRoZSBmaXguCisKK0ZvciBub3csIGl0IHNlZW1zIGEgYml0IGhhcmQgdG8gYWRkIGEgcHJvcGVyIHRlc3QgZm9yIHRoaXMsCitzbyB0aGUgZm9sbG93aW5nIHNoZWxsIHNuaXBwZXQgZGVtb25zdHJhdGVzIHRoZSByYWNlOgorCisgICQgc2VxIDEwIHwgeGFyZ3MgdG91Y2gKKyAgJCBlbnYgdGltZSAtZiAnZmluZCBleGl0IHN0YXR1czogJXhcbmZpbmQgdGltZTogJWUnIFwKKyAgICAgIGZpbmQgLWlnbm9yZV9yZWFkZGlyX3JhY2UgLXR5cGUgZiBcCisgICAgICAgIC1kZWxldGUgXAorICAgICAgICAtZXhlYyBzaCAtYyAnc2xlZXAgJChiYXNlbmFtZSB7fSknIFw7IFwKKyAgICAgICAgLXByaW50ZiAnZmluZCBkZWxldGVkOiAlcFxuJyBcCisgICAgICAgICYgXAorICAgIHNsZWVwIDIwOyBcCisgICAgc2VxIDEwIHwgeGFyZ3Mgcm0gLWZ2OyBcCisgICAgd2FpdCAkIQorCitSZXBvcnRlZCBieSBBbGV4YW5kZXIgR29sdWJldiBpbgoraHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzUyOTgxCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIE5FV1MgICAgICAgICAgfCAgNCArKysrCisgZG9jL2ZpbmQudGV4aSB8IDE1ICsrKysrKysrKysrKysrLQorIGZpbmQvZmluZC4xICAgfCAyMiArKysrKysrKysrKysrKysrKysrKysrCisgZmluZC9wcmVkLmMgICB8ICA2ICsrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKK2luZGV4IDY2MGMyNDEuLmI4NmVjMWUgMTAwNjQ0CistLS0gYS9ORVdTCisrKysgYi9ORVdTCitAQCAtNDIsNiArNDIsMTAgQEAgVXBkYXRlZCB0aGUgRGFuaXNoIHRyYW5zbGF0aW9uLgorIAorICoqIEJ1ZyBGaXhlczoKKyAKKysjNTI5ODE6IGZpbmQ6IHRoZSAnLWRlbGV0ZScgYWN0aW9uIG5vIGxvbmdlciBjb21wbGFpbnMgYWJvdXQgZGlzYXBwZWFyZWQgZmlsZXMKKysgICAgICAgIHdoZW4gdGhlICctaWdub3JlX3JlYWRkaXJfcmFjZScgb3B0aW9uIGlzIGdpdmVuLCB0b28uICBUaGF0IGFjdGlvbiB3aWxsCisrICAgICAgICBhbHNvIHJldHVybnMgdHJ1ZSBpbiBzdWNoIGEgY2FzZSBub3cuCisrCisgQXBwbGllZCBwYXRjaCAjODY4ODogU3BlbGxpbmcgZml4ZXMuCisgCisgKiBNYWpvciBjaGFuZ2VzIGluIHJlbGVhc2UgNC41LjE4LCAyMDE1LTEyLTI3CitkaWZmIC0tZ2l0IGEvZG9jL2ZpbmQudGV4aSBiL2RvYy9maW5kLnRleGkKK2luZGV4IGZkZWI4NDEuLjI0N2MxOWEgMTAwNjQ0CistLS0gYS9kb2MvZmluZC50ZXhpCisrKysgYi9kb2MvZmluZC50ZXhpCitAQCAtMTQxOCw3ICsxNDE4LDE1IEBAIGdpdmVzIGEgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gc2VhcmNoIHNwZWVkLgorIElmIGEgZmlsZSBkaXNhcHBlYXJzIGFmdGVyIGl0cyBuYW1lIGhhcyBiZWVuIHJlYWQgZnJvbSBhIGRpcmVjdG9yeSBidXQKKyBiZWZvcmUgQGNvZGV7ZmluZH0gZ2V0cyBhcm91bmQgdG8gZXhhbWluaW5nIHRoZSBmaWxlIHdpdGggQGNvZGV7c3RhdH0sCisgZG9uJ3QgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZS4gIElmIHlvdSBkb24ndCBzcGVjaWZ5IHRoaXMgb3B0aW9uLCBhbgorLWVycm9yIG1lc3NhZ2Ugd2lsbCBiZSBpc3N1ZWQuICBUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIGluIHN5c3RlbQorK2Vycm9yIG1lc3NhZ2Ugd2lsbCBiZSBpc3N1ZWQuCisrCisrRnVydGhlcm1vcmUsIEBjb2Rle2ZpbmR9IHdpdGggdGhlIEBzYW1wey1pZ25vcmVfcmVhZGRpcl9yYWNlfSBvcHRpb24KKyt3aWxsIGlnbm9yZSBlcnJvcnMgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZQorK2hhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMgcmVhZDogaXQgd2lsbCBub3Qgb3V0cHV0CisrYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uCisrd2lsbCBiZSB0cnVlLgorKworK1RoaXMgb3B0aW9uIGNhbiBiZSB1c2VmdWwgaW4gc3lzdGVtCisgc2NyaXB0cyAoY3JvbiBzY3JpcHRzLCBmb3IgZXhhbXBsZSkgdGhhdCBleGFtaW5lIGFyZWFzIG9mIHRoZQorIGZpbGVzeXN0ZW0gdGhhdCBjaGFuZ2UgZnJlcXVlbnRseSAobWFpbCBxdWV1ZXMsIHRlbXBvcmFyeSBkaXJlY3RvcmllcywKKyBhbmQgc28gZm9ydGgpLCBiZWNhdXNlIHRoaXMgc2NlbmFyaW8gaXMgY29tbW9uIGZvciB0aG9zZSBzb3J0cyBvZgorQEAgLTI3NzksNiArMjc4NywxMSBAQCBleHBsaWNpdGx5LgorIAorIElmIEBzYW1wey1kZWxldGV9IGZhaWxzLCBAY29kZXtmaW5kfSdzIGV4aXQgc3RhdHVzIHdpbGwgYmUgbm9uemVybworICh3aGVuIGl0IGV2ZW50dWFsbHkgZXhpdHMpLgorKworK1RvZ2V0aGVyIHdpdGggdGhlIEBzYW1wey1pZ25vcmVfcmVhZGRpcl9yYWNlfSBvcHRpb24sIEBjb2Rle2ZpbmR9IHdpbGwKKytpZ25vcmUgZXJyb3JzIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUgaGFzIGRpc2FwcGVhcmVkCisrc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6IGl0IHdpbGwgbm90IG91dHB1dCBhbiBlcnJvciBkaWFnbm9zdGljLCBhbmQKKyt0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbiB3aWxsIGJlIHRydWUuCisgQGVuZCBkZWZmbgorIAorIEBub2RlIEFkZGluZyBUZXN0cworZGlmZiAtLWdpdCBhL2ZpbmQvZmluZC4xIGIvZmluZC9maW5kLjEKK2luZGV4IDdiMTQxYjguLjBlZWM0MWMgMTAwNjQ0CistLS0gYS9maW5kL2ZpbmQuMQorKysrIGIvZmluZC9maW5kLjEKK0BAIC00NzksNiArNDc5LDE3IEBAIG9uZSBwYXJ0IG9mIHRoZSBmaWxlc3lzdGVtIHdpdGggdGhpcyBvcHRpb24gb24gYW5kIHBhcnQgb2YgaXQgd2l0aCB0aGlzIG9wdGlvbgorIG9mZiAoaWYgeW91IG5lZWQgdG8gZG8gdGhhdCwgeW91IHdpbGwgbmVlZCB0byBpc3N1ZSB0d28gXGZCZmluZFxmUiBjb21tYW5kcworIGluc3RlYWQsIG9uZSB3aXRoIHRoZSBvcHRpb24gYW5kIG9uZSB3aXRob3V0IGl0KS4KKyAKKytGdXJ0aGVybW9yZSwKKysuQiBmaW5kCisrd2l0aCB0aGUKKysuQiBcLWlnbm9yZV9yZWFkZGlyX3JhY2UKKytvcHRpb24gd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZQorKy5CIFwtZGVsZXRlCisrYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMgcmVhZDoKKytpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKKysuQiBcLWRlbGV0ZQorK2FjdGlvbiB3aWxsIGJlIHRydWUuCisrCisgLklQICJcLW1heGRlcHRoIFxmSWxldmVsc1xmUiIKKyBEZXNjZW5kIGF0IG1vc3QgXGZJbGV2ZWxzXGZSIChhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyKSBsZXZlbHMgb2YKKyBkaXJlY3RvcmllcyBiZWxvdyB0aGUgc3RhcnRpbmctcG9pbnRzLgorQEAgLTEwMzAsNiArMTA0MSwxNyBAQCBhbmQKKyAuQiBcLWRlbGV0ZQorIHRvZ2V0aGVyLgorIAorK1RvZ2V0aGVyIHdpdGggdGhlCisrLkIgXC1pZ25vcmVfcmVhZGRpcl9yYWNlCisrb3B0aW9uLAorKy5CIGZpbmQKKyt3aWxsIGlnbm9yZSBlcnJvcnMgb2YgdGhlCisrLkIgXC1kZWxldGUKKythY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUgaGFzIGRpc2FwcGVhcmVkIHNpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcworK3JlYWQ6IGl0IHdpbGwgbm90IG91dHB1dCBhbiBlcnJvciBkaWFnbm9zdGljLCBhbmQgdGhlIHJldHVybiBjb2RlIG9mIHRoZQorKy5CIFwtZGVsZXRlCisrYWN0aW9uIHdpbGwgYmUgdHJ1ZS4KKysKKyAuSVAgIlwtZXhlYyBcZkljb21tYW5kXGZSIDsiCisgRXhlY3V0ZSBcZkljb21tYW5kXGZSOyB0cnVlIGlmIDAgc3RhdHVzIGlzIHJldHVybmVkLiAgQWxsIGZvbGxvd2luZworIGFyZ3VtZW50cyB0bworZGlmZiAtLWdpdCBhL2ZpbmQvcHJlZC5jIGIvZmluZC9wcmVkLmMKK2luZGV4IDMyOTM4ZmIuLjQzMWYwNjUgMTAwNjQ0CistLS0gYS9maW5kL3ByZWQuYworKysrIGIvZmluZC9wcmVkLmMKK0BAIC0zMjQsNiArMzI0LDEyIEBAIHByZWRfZGVsZXRlIChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKnN0YXRfYnVmLCBzdHJ1Y3QgcHJlZGljYXRlICpwcmVkCisgCX0KKyAgICAgICBlbHNlCisgCXsKKysJICBpZiAoRU5PRU5UID09IGVycm5vICYmIG9wdGlvbnMuaWdub3JlX3JlYWRkaXJfcmFjZSkKKysJICAgIHsKKysJICAgICAgLyogSWdub3JlIHVubGluaygpIGVycm9yIGZvciB2YW5pc2hlZCBmaWxlcy4gICovCisrCSAgICAgIGVycm5vID0gMDsKKysJICAgICAgcmV0dXJuIHRydWU7CisrCSAgICB9CisgCSAgaWYgKEVJU0RJUiA9PSBlcnJubykKKyAJICAgIHsKKyAJICAgICAgaWYgKChmbGFncyAmIEFUX1JFTU9WRURJUikgPT0gMCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1mZmx1c2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxM2U4ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCkBAIC0wLDAgKzEsMTQwIEBACitGcm9tIDgwY2RmYmEwNzk2MjdlMTUxMjlhOTI2YTEzMzgyNWI5NjFkNDFlMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorRGF0ZTogTW9uLCA1IE1hciAyMDE4IDEwOjU2OjI5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZmbHVzaDogYWRqdXN0IHRvIGdsaWJjIDIuMjggbGliaW8uaCByZW1vdmFsCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgRGFuaWVsIFAuIEJlcnJhbmfDqSBpbjoKK2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9yL2J1Zy1nbnVsaWIvMjAxOC0wMy9tc2cwMDAwMC5odG1sCisqIGxpYi9mZmx1c2guYyAoY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uKQorKGRpc2FibGVfc2Vla19vcHRpbWl6YXRpb24sIHJwbF9mZmx1c2gpOgorKiBsaWIvZnB1cmdlLmMgKGZwdXJnZSk6CisqIGxpYi9mcmVhZGFoZWFkLmMgKGZyZWFkYWhlYWQpOgorKiBsaWIvZnJlYWRpbmcuYyAoZnJlYWRpbmcpOgorKiBsaWIvZnNlZWtvLmMgKGZzZWVrbyk6CisqIGxpYi9zdGRpby1pbXBsLmggKF9JT19JTl9CQUNLVVApIFtfSU9fRU9GX1NFRU5dOgorRGVmaW5lIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCisKK1Vwc3RyZWFtLWNvbW1pdDogNGFmNGE0YTcxODI3YzBiYzVlMGVjNjdhZjIzZWRlZjRmMTVjZWU4ZQorU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbNGFmNGE0YTcxODI3YzBiYzVlMGVjNjdhZjIzZWRlZjRmMTVjZWU4ZV0KKy0tLQorIGdsL2xpYi9mZmx1c2guYyAgICAgfCA2ICsrKy0tLQorIGdsL2xpYi9mcHVyZ2UuYyAgICAgfCAyICstCisgZ2wvbGliL2ZyZWFkYWhlYWQuYyB8IDIgKy0KKyBnbC9saWIvZnJlYWRpbmcuYyAgIHwgMiArLQorIGdsL2xpYi9mc2Vla28uYyAgICAgfCA0ICsrLS0KKyBnbC9saWIvc3RkaW8taW1wbC5oIHwgNiArKysrKysKKyA2IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZmbHVzaC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL2ZmbHVzaC5jCisrKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mZmx1c2guYworQEAgLTMzLDcgKzMzLDcgQEAKKyAjdW5kZWYgZmZsdXNoCisgCisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAKKyAvKiBDbGVhciB0aGUgc3RyZWFtJ3MgdW5nZXRjIGJ1ZmZlciwgcHJlc2VydmluZyB0aGUgdmFsdWUgb2YgZnRlbGxvIChmcCkuICAqLworIHN0YXRpYyB2b2lkCitAQCAtNzIsNyArNzIsNyBAQCBjbGVhcl91bmdldGNfYnVmZmVyIChGSUxFICpmcCkKKyAKKyAjZW5kaWYKKyAKKy0jaWYgISAoZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8pCisrI2lmICEgKGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8pCisgCisgIyBpZiAoZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18pICYmIGRlZmluZWQgX19TTlBUCisgLyogRnJlZUJTRCwgTmV0QlNELCBPcGVuQlNELCBEcmFnb25GbHksIE1hYyBPUyBYLCBDeWd3aW4sIEFuZHJvaWQgKi8KK0BAIC0xNDgsNyArMTQ4LDcgQEAgcnBsX2ZmbHVzaCAoRklMRSAqc3RyZWFtKQorICAgaWYgKHN0cmVhbSA9PSBOVUxMIHx8ICEgZnJlYWRpbmcgKHN0cmVhbSkpCisgICAgIHJldHVybiBmZmx1c2ggKHN0cmVhbSk7CisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAKKyAgIGNsZWFyX3VuZ2V0Y19idWZmZXJfcHJlc2VydmluZ19wb3NpdGlvbiAoc3RyZWFtKTsKKyAKK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZwdXJnZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL2ZwdXJnZS5jCisrKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcHVyZ2UuYworQEAgLTYyLDcgKzYyLDcgQEAgZnB1cmdlIChGSUxFICpmcCkKKyAgIC8qIE1vc3Qgc3lzdGVtcyBwcm92aWRlIEZJTEUgYXMgYSBzdHJ1Y3QgYW5kIHRoZSBuZWNlc3NhcnkgYml0bWFzayBpbgorICAgICAgPHN0ZGlvLmg+LCBiZWNhdXNlIHRoZXkgbmVlZCBpdCBmb3IgaW1wbGVtZW50aW5nIGdldGMoKSBhbmQgcHV0YygpIGFzCisgICAgICBmYXN0IG1hY3Jvcy4gICovCistIyBpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyMgaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgZnAtPl9JT19yZWFkX2VuZCA9IGZwLT5fSU9fcmVhZF9wdHI7CisgICBmcC0+X0lPX3dyaXRlX3B0ciA9IGZwLT5fSU9fd3JpdGVfYmFzZTsKKyAgIC8qIEF2b2lkIG1lbW9yeSBsZWFrIHdoZW4gdGhlcmUgaXMgYW4gYWN0aXZlIHVuZ2V0YyBidWZmZXIuICAqLworSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRhaGVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL2ZyZWFkYWhlYWQuYworKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRhaGVhZC5jCitAQCAtMjUsNyArMjUsNyBAQAorIHNpemVfdAorIGZyZWFkYWhlYWQgKEZJTEUgKmZwKQorIHsKKy0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgaWYgKGZwLT5fSU9fd3JpdGVfcHRyID4gZnAtPl9JT193cml0ZV9iYXNlKQorICAgICByZXR1cm4gMDsKKyAgIHJldHVybiAoZnAtPl9JT19yZWFkX2VuZCAtIGZwLT5fSU9fcmVhZF9wdHIpCitJbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGluZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL2ZyZWFkaW5nLmMKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkaW5nLmMKK0BAIC0zMSw3ICszMSw3IEBAIGZyZWFkaW5nIChGSUxFICpmcCkKKyAgIC8qIE1vc3Qgc3lzdGVtcyBwcm92aWRlIEZJTEUgYXMgYSBzdHJ1Y3QgYW5kIHRoZSBuZWNlc3NhcnkgYml0bWFzayBpbgorICAgICAgPHN0ZGlvLmg+LCBiZWNhdXNlIHRoZXkgbmVlZCBpdCBmb3IgaW1wbGVtZW50aW5nIGdldGMoKSBhbmQgcHV0YygpIGFzCisgICAgICBmYXN0IG1hY3Jvcy4gICovCistIyBpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyMgaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgcmV0dXJuICgoZnAtPl9mbGFncyAmIF9JT19OT19XUklURVMpICE9IDAKKyAgICAgICAgICAgfHwgKChmcC0+X2ZsYWdzICYgKF9JT19OT19SRUFEUyB8IF9JT19DVVJSRU5UTFlfUFVUVElORykpID09IDAKKyAgICAgICAgICAgICAgICYmIGZwLT5fSU9fcmVhZF9iYXNlICE9IE5VTEwpKTsKK0luZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZzZWVrby5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZmluZHV0aWxzLTQuNi4wLm9yaWcvZ2wvbGliL2ZzZWVrby5jCisrKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mc2Vla28uYworQEAgLTQ3LDcgKzQ3LDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgorICNlbmRpZgorIAorICAgLyogVGhlc2UgdGVzdHMgYXJlIGJhc2VkIG9uIGZwdXJnZS5jLiAgKi8KKy0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworICAgaWYgKGZwLT5fSU9fcmVhZF9lbmQgPT0gZnAtPl9JT19yZWFkX3B0cgorICAgICAgICYmIGZwLT5fSU9fd3JpdGVfcHRyID09IGZwLT5fSU9fd3JpdGVfYmFzZQorICAgICAgICYmIGZwLT5fSU9fc2F2ZV9iYXNlID09IE5VTEwpCitAQCAtMTIzLDcgKzEyMyw3IEBAIGZzZWVrbyAoRklMRSAqZnAsIG9mZl90IG9mZnNldCwgaW50IHdoZW4KKyAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgfQorIAorLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICAgICAgZnAtPl9mbGFncyAmPSB+X0lPX0VPRl9TRUVOOworICAgICAgIGZwLT5fb2Zmc2V0ID0gcG9zOworICNlbGlmIGRlZmluZWQgX19zZmVycm9yIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXyB8fCBkZWZpbmVkIF9fQU5EUk9JRF9fCitJbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9zdGRpby1pbXBsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvc3RkaW8taW1wbC5oCisrKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9zdGRpby1pbXBsLmgKK0BAIC0xOCw2ICsxOCwxMiBAQAorICAgIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIG9mIHN0ZGlvIGV4dGVuc2lvbiBBUEksIGV4Y2VwdCB0aGF0IHNvbWUgZmllbGRzCisgICAgaGF2ZSBkaWZmZXJlbnQgbmFtaW5nIGNvbnZlbnRpb25zLCBvciB0aGVpciBhY2Nlc3MgcmVxdWlyZXMgc29tZSBjYXN0cy4gICovCisgCisrLyogR2xpYmMgMi4yOCBtYWRlIF9JT19JTl9CQUNLVVAgcHJpdmF0ZS4gIEZvciBub3csIHdvcmsgYXJvdW5kIHRoaXMKKysgICBwcm9ibGVtIGJ5IGRlZmluaW5nIGl0IG91cnNlbHZlcy4gIEZJWE1FOiBEbyBub3QgcmVseSBvbiBnbGliYworKyAgIGludGVybmFscy4gICovCisrI2lmICFkZWZpbmVkIF9JT19JTl9CQUNLVVAgJiYgZGVmaW5lZCBfSU9fRU9GX1NFRU4KKysjIGRlZmluZSBfSU9fSU5fQkFDS1VQIDB4MTAwCisrI2VuZGlmCisgCisgLyogQlNEIHN0ZGlvIGRlcml2ZWQgaW1wbGVtZW50YXRpb25zLiAgKi8KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1tYWtlZGV2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZiMzk1MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvZmluZHV0aWxzLTQuNi4wLWdudWxpYi1tYWtlZGV2LnBhdGNoCkBAIC0wLDAgKzEsNzggQEAKK0Zyb20gODA2MjgwNDdhNmNjODNmODJlMGM0MTBhODJiOGY3ZmFjZDlkNTBmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxOToyMTo0MiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBtb3VudGxpc3Q6IGluY2x1ZGUgc3lzbWFjcm9zLmggZm9yIGdsaWJjCisKK09uIEZlZG9yYSByYXdoaWRlIChnbGliYyAyLjI1KSwgJy4vZ251bGliLXRvb2wgLS10ZXN0IG1vdW50bGlzdCcKK3JlcG9ydHM6CisuLi8uLi9nbGxpYi9tb3VudGxpc3QuYzogSW4gZnVuY3Rpb24gJ3JlYWRfZmlsZV9zeXN0ZW1fbGlzdCc6CisuLi8uLi9nbGxpYi9tb3VudGxpc3QuYzo1MzQ6MTM6IHdhcm5pbmc6ICdfX21ha2VkZXZfZnJvbV9zeXNfdHlwZXMnIGlzIGRlcHJlY2F0ZWQ6CisgIEluIHRoZSBHTlUgQyBMaWJyYXJ5LCBgbWFrZWRldicgaXMgZGVmaW5lZCBieSA8c3lzL3N5c21hY3Jvcy5oPi4KKyAgRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMgY3VycmVudGx5IGRlZmluZWQgYnkKKyAgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0byByZW1vdmUgdGhpcyBzb29uLgorICBUbyB1c2UgYG1ha2VkZXYnLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+IGRpcmVjdGx5LgorICBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8gYG1ha2VkZXYnLAorICB5b3Ugc2hvdWxkICN1bmRlZiBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4KKyAgWy1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNdCisgICAgICAgICAgICAgbWUtPm1lX2RldiA9IG1ha2VkZXYgKGRldm1haiwgZGV2bWluKTsKKyAgICAgICAgICAgICBefgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjM5NzowLAorICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaDoyNSwKKyAgICAgICAgICAgICAgICAgZnJvbSAuL3N5cy90eXBlcy5oOjI4LAorICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5oOjIzLAorICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5jOjIwOgorL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaDo4OToxOiBub3RlOiBkZWNsYXJlZCBoZXJlCisgX19TWVNNQUNST1NfREVGSU5FX01BS0VERVYgKF9fU1lTTUFDUk9TX0ZTVF9JTVBMX1RFTVBMKQorIF4KKworRml4IGl0IGJ5IGluY2x1ZGluZyB0aGUgcmlnaHQgaGVhZGVycy4gIFdlIGFsc28gbmVlZCBhIGZpeCB0bworYXV0b2NvbmYncyBBQ19IRUFERVJfTUFKT1IsIGJ1dCB0aGF0J3MgYSBzZXBhcmF0ZSBwYXRjaC4KKworKiBtNC9tb3VudGxpc3QubTQgKGdsX1BSRVJFUV9NT1VUTElTVF9FWFRSQSk6IEluY2x1ZGUKK0FDX0hFQURFUl9NQUpPUi4KKyogbGliL21vdW50bGlzdC5jIChpbmNsdWRlcyk6IFVzZSBjb3JyZWN0IGhlYWRlcnMuCisKK1NpZ25lZC1vZmYtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgorCitVcHN0cmVhbS1jb21taXQ6IDRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjEKK1NpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjFdCistLS0KKyBnbC9saWIvbW91bnRsaXN0LmMgfCA2ICsrKysrKworIGdsL200L21vdW50bGlzdC5tNCB8IDMgKystCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvbW91bnRsaXN0LmMKKysrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL21vdW50bGlzdC5jCitAQCAtMzcsNiArMzcsMTIgQEAKKyAjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorICNlbmRpZgorIAorKyNpZiBNQUpPUl9JTl9NS0RFVgorKyMgaW5jbHVkZSA8c3lzL21rZGV2Lmg+CisrI2VsaWYgTUFKT1JfSU5fU1lTTUFDUk9TCisrIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQgTU9VTlRFRF9HRVRGU1NUQVQgICAvKiBPU0ZfMSBhbmQgRGFyd2luMS4zLnggKi8KKyAjIGlmIEhBVkVfU1lTX1VDUkVEX0gKKyAjICBpbmNsdWRlIDxncnAuaD4gLyogbmVlZGVkIG9uIE9TRiBWNC4wIGZvciBkZWZpbml0aW9uIG9mIE5HUk9VUFMsCitJbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL200L21vdW50bGlzdC5tNAorKysrIGZpbmR1dGlscy00LjYuMC9nbC9tNC9tb3VudGxpc3QubTQKK0BAIC0xLDQgKzEsNCBAQAorLSMgc2VyaWFsIDExCisrIyBzZXJpYWwgMTIKKyBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDYsIDIwMDktMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK0BAIC0xNSw1ICsxNSw2IEBAIEFDX0RFRlVOKFtnbF9QUkVSRVFfTU9VTlRMSVNUX0VYVFJBXSwKKyBbCisgICBkbmwgTm90ZSBnbF9MSVNUX01PVU5URURfRklMRV9TWVNURU1TIGNoZWNrcyBmb3IgbW50ZW50LmgsIG5vdCBzeXMvbW50ZW50LmguCisgICBBQ19DSEVDS19IRUFERVJTKFtzeXMvbW50ZW50LmhdKQorKyAgQUNfSEVBREVSX01BSk9SKClkbmwgZm9yIHVzZSBvZiBtYWtlZGV2ICgpCisgICBnbF9GU1RZUEVOQU1FCisgXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNi4wLmJiCmluZGV4IDA3MmQzYjMuLjVlNGNhOTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjYuMC5iYgpAQCAtNiw3ICs2LDExIEBACiAKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIgogCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggXAorIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiOTkzNmFhODAwOTQzOGNlMTg1YmVhMjY5NGE5OTdmYzEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGVkNGM5ZjczNzMxY2Q0OGZlYzNiNmJkYWNjY2U4OTY0NzNiNmQ4ZTMzN2U5NjEyZTE2Y2YxNDMxYmIxMTY5ZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDEtQnVnLTY5OTc5NS1hZGQtb3BlcmFuZC1jaGVja2luZy10by0uc2V0bmF0aXZlZm9udG1hcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDEtQnVnLTY5OTc5NS1hZGQtb3BlcmFuZC1jaGVja2luZy10by0uc2V0bmF0aXZlZm9udG1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTc1ZGEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMS1CdWctNjk5Nzk1LWFkZC1vcGVyYW5kLWNoZWNraW5nLXRvLS5zZXRuYXRpdmVmb250bWFwLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gMjc0YjJjYzA4YjBkMTBhNGNhYzNmZThiNTAwMjI4ODlmMjI1ODBjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+CitEYXRlOiBUaHUsIDIwIFNlcCAyMDE4IDE2OjM1OjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBCdWcgNjk5Nzk1OiBhZGQgb3BlcmFuZCBjaGVja2luZyB0bworIC5zZXRuYXRpdmVmb250bWFwYnVpbHQKKworLnNldG5hdGl2ZWZvbnRtYXBidWlsdCAuZm9yY2VwdXRzIGEgdmFsdWUgaW50byBzeXN0ZW1kaWN0IC0gaXQgaXMgaW50ZW5kZWQKK3RvIGJlIGEgYm9vbGVhbiwgYnV0IGluIHRoaXMgY2FzZSB3YXMgYmVpbmcgY2FsbGVkIHdpdGggYSBjb21wb3VuZCBvYmplY3QKKyhhIGRpY3Rpb25hcnkpLiBTdWNoIGFuIG9iamVjdCwgaW4gbG9jYWwgVk0sIGJlaW5nIGZvcmNlZCBpbnRvIHN5c3RlbWRpY3QKK3dvdWxkIHRoZW4gY29uZnVzZSB0aGUgZ2FyYmFnZXIsIHNpbmNlIGl0IGNvdWxkIGJlIHJlc3RvcmVkIGF3YXkgd2l0aCB0aGUKK3JlZmVyZW5jZSByZW1haW5pbmcuCisKK1RoaXMgYWRkcyBvcGVyYW5kIGNoZWNraW5nLCBzbyAuc2V0bmF0aXZlZm9udG1hcGJ1aWx0IHdpbGwgc2ltcGx5IGlnbm9yZQorYW55dGhpbmcgb3RoZXIgdGhhbiBhIGJvb2xlYW4gdmFsdWUsIGFuZCBhbHNvIHJlbW92ZXMgdGhlIGRlZmluaXRpb24gb2YKKy5zZXRuYXRpdmVmb250bWFwYnVpbHQgYWZ0ZXIgdXNlLCBzaW5jZSBpdCBpcyBvbmx5IHVzZWQgaW4gdHdvLCBjbG9zZWx5CityZWxhdGVkIHBsYWNlcy4KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIHwgMTEgKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK2luZGV4IDM4ZjBmNmMuLjQ1YjY2MTMgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCitAQCAtMzcyLDkgKzM3MiwxMyBAQCBGT05UUEFUSCBsZW5ndGggMCBlcSB7ICglRU5EIEZPTlRQQVRIKSAuc2tpcGVvZiB9IGlmCisgJSBvZiBzdHJpbmdzOiB3aGF0IHRoZSBzeXN0ZW0gdGhpbmtzIGlzIHRoZSBwcyBuYW1lLAorICUgYW5kIHRoZSBhY2Nlc3MgcGF0aC4KKyAvLnNldG5hdGl2ZWZvbnRtYXBidWlsdCB7ICUgc2V0IHdoZXRoZXIgd2UndmUgYmVlbiBydW4KKy0gIHN5c3RlbWRpY3QgZXhjaCAvLm5hdGl2ZWZvbnRtYXBidWlsdCBleGNoIC5mb3JjZXB1dAorKyAgZHVwIHR5cGUgL2Jvb2xlYW50eXBlIGVxIHsKKysgICAgICBzeXN0ZW1kaWN0IGV4Y2ggLy5uYXRpdmVmb250bWFwYnVpbHQgZXhjaCAuZm9yY2VwdXQKKysgIH0KKysgIHtwb3B9CisrICBpZmVsc2UKKyB9IC5iaW5kIGV4ZWN1dGVvbmx5IGRlZgorLXN5c3RlbWRpY3QgL05PTkFUSVZFRk9OVE1BUCBrbm93biAuc2V0bmF0aXZlZm9udG1hcGJ1aWx0Cisrc3lzdGVtZGljdCAvTk9OQVRJVkVGT05UTUFQIGtub3duIC8vLnNldG5hdGl2ZWZvbnRtYXBidWlsdCBleGVjCisgLy5idWlsZG5hdGl2ZWZvbnRtYXAgeyAgICUgLSAuYnVpbGRuYXRpdmVmb250bWFwIDxib29sPgorICAgc3lzdGVtZGljdCAvLm5hdGl2ZWZvbnRtYXBidWlsdCAua25vd25nZXQgbm90CisgICB7IC8vZmFsc2V9IGlmCitAQCAtNDE1LDkgKzQxOSwxMCBAQCBzeXN0ZW1kaWN0IC9OT05BVElWRUZPTlRNQVAga25vd24gLnNldG5hdGl2ZWZvbnRtYXBidWlsdAorICAgICAgIH0gZm9yYWxsCisgICAgIH0gaWYKKyAgICAgJSByZWNvcmQgdGhhdCB3ZSd2ZSBiZWVuIHJ1bgorLSAgICAvL3RydWUgLnNldG5hdGl2ZWZvbnRtYXBidWlsdAorKyAgICAvL3RydWUgLy8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IGV4ZWMKKyAgIH0gaWZlbHNlCisgfSBiaW5kIGRlZgorK2N1cnJlbnRkaWN0IC8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IC5mb3JjZXVuZGVmCisgCisgJSBDcmVhdGUgdGhlIGRpY3Rpb25hcnkgdGhhdCByZWdpc3RlcnMgdGhlIC5idWlsZGZvbnQgcHJvY2VkdXJlCisgJSAoY2FsbGVkIGJ5IGRlZmluZWZvbnQpIGZvciBlYWNoIEZvbnRUeXBlLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAyLUJ1Zy02OTk4MTYtSW1wcm92ZS1oaWRpbmctb2Ytc2VjdXJpdHktY3JpdGljYWwtY3VzdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAyLUJ1Zy02OTk4MTYtSW1wcm92ZS1oaWRpbmctb2Ytc2VjdXJpdHktY3JpdGljYWwtY3VzdG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwZjljOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDItQnVnLTY5OTgxNi1JbXByb3ZlLWhpZGluZy1vZi1zZWN1cml0eS1jcml0aWNhbC1jdXN0by5wYXRjaApAQCAtMCwwICsxLDQzNCBAQAorRnJvbSAwNjYxYmYyM2E1YmUzMjk3MzY4MmUxN2FmZWQ0YTJmMjNhODIxNGJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFNhdCwgMjkgU2VwIDIwMTggMTU6MzQ6NTUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIEJ1ZyA2OTk4MTY6IEltcHJvdmUgaGlkaW5nIG9mIHNlY3VyaXR5IGNyaXRpY2FsIGN1c3RvbQorIG9wZXJhdG9ycworCitNYWtlIHByb2NlZHVyZXMgdGhhdCB1c2UgLmZvcmNlcHV0Ly5mb3JjZWRlZi8uZm9yY2V1bmRlZiBpbnRvIG9wZXJhdG9ycy4KKworVGhlIHJlc3VsdCBvZiB0aGlzIGlzIHRoYXQgZXJyb3JzIGdldCByZXBvcnRlZCBhZ2FpbnN0IHRoZSAidG9wIiBvcGVyYXRvciwKK3JhdGhlciB0aGFuIHRoZSAiY2FsbGVkIiBvcGVyYXRvciB3aXRoaW4gdGhlIHByb2NlZHVyZS4KKworRm9yIGV4YW1wbGU6CisvbXlwcm9jCit7CisgIG15b3AKK30gYmluZCBkZWYKKworSWYgJ215b3AnIHRocm93cyBhbiBlcnJvciwgdGhlIGVycm9yIGhhbmRsZXIgd2lsbCBiZSBwYXNzZWQgdGhlICdteW9wJworb3BlcmF0b3IuIFByb21vdGluZyAnbXlwcm9jJyB0byBhIG9wZXJhdG9yIG1lYW5zIHRoZSBlcnJvciBoYW5kbGVyIHdpbGwgYmUKK3Bhc3NlZCAnbXlwcm9jJy4KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcyAgIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2ZudGVtLnBzIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIHwgMTAgKysrKystLS0tLQorIFJlc291cmNlL0luaXQvZ3NfbGV2Mi5wcyAgfCAxMyArKysrKysrKystLS0tCisgUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcyB8ICAyICstCisgUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcyB8IDI1ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3R5cDMyLnBzIHwgMTQgKysrKysrKysrLS0tLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3R5cGUxLnBzIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzIHwgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzIHwgMTAgKysrKystLS0tLQorIFJlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgfCAgOCArKysrLS0tLQorIFJlc291cmNlL0luaXQvcGRmX21haW4ucHMgfCAgNCArKy0tCisgUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzICB8ICA4ICsrKystLS0tCisgMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworaW5kZXggNTU0MDcxNS4uMjZlYzBiNSAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMKK0BAIC01Myw3ICs1Myw3IEBAIHN5c3RlbWRpY3QgYmVnaW4KKyAgICAgZXhjaCAuc2V0Z2xvYmFsCisgICB9CisgICBpZgorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorIAorICUgTW9kaWZ5IC5wdXRkZXZwYXJhbXMgdG8gZm9yY2UgcmVnZW5lcmF0aW9uIG9mIC5zZWFyY2hhYmxlZGV2cyBsaXN0CisgLy5wdXRkZXZwYXJhbXMgeworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZHBzLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19kcHMucHMKK2luZGV4IGNhZDcwNTYuLmRhZjdiMGYgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19kcHMucHMKK0BAIC03MCw3ICs3MCw3IEBACisgICAgICAgICAgICAgICAgICUgU2F2ZSBhIGNvcHkgb2YgdGhlIGluaXRpYWwgZ3N0YXRlLgorICAgLy9zeXN0ZW1kaWN0IC9zYXZlZGluaXRpYWxnc3RhdGUgZ3N0YXRlIHJlYWRvbmx5IC5mb3JjZXB1dAorICAgLnNldGdsb2JhbAorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorIAorICUgSW5pdGlhbGl6ZSBsb2NhbCBkaWN0aW9uYXJpZXMgYW5kIGdzdGF0ZSB3aGVuIGNyZWF0aW5nIGEgbmV3IGNvbnRleHQuCisgJSBOb3RlIHRoYXQgdW50aWwgdGhpcyBjb21wbGV0ZXMsIHdlIGFyZSBpbiB0aGUgYW5vbWFsb3VzIHNpdHVhdGlvbiBvZgorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZm50ZW0ucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2ZudGVtLnBzCitpbmRleCAzY2VlZTE4Li5jMWY3NjUxIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19mbnRlbS5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19mbnRlbS5wcworQEAgLTQwOCw3ICs0MDgsNyBAQCBjdXJyZW50ZGljdCBlbmQgZGVmCisgICAgIGV4aXQKKyAgIH0gbG9vcAorICAgZXhjaCBzZXRnbG9iYWwKKy19IC5iaW5kIGV4ZWN1dGVvbmx5IGRlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyAKKyBjdXJyZW50ZGljdCBlbmQgL1Byb2NTZXQgZGVmaW5lcmVzb3VyY2UgcG9wCisgCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK2luZGV4IDQ1YjY2MTMuLjg5YzNhYjcgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCitAQCAtMzc3LDggKzM3Nyw4IEBAIEZPTlRQQVRIIGxlbmd0aCAwIGVxIHsgKCVFTkQgRk9OVFBBVEgpIC5za2lwZW9mIH0gaWYKKyAgIH0KKyAgIHtwb3B9CisgICBpZmVsc2UKKy19IC5iaW5kIGV4ZWN1dGVvbmx5IGRlZgorLXN5c3RlbWRpY3QgL05PTkFUSVZFRk9OVE1BUCBrbm93biAvLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgZXhlYworK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorK3N5c3RlbWRpY3QgL05PTkFUSVZFRk9OVE1BUCBrbm93biAuc2V0bmF0aXZlZm9udG1hcGJ1aWx0CisgLy5idWlsZG5hdGl2ZWZvbnRtYXAgeyAgICUgLSAuYnVpbGRuYXRpdmVmb250bWFwIDxib29sPgorICAgc3lzdGVtZGljdCAvLm5hdGl2ZWZvbnRtYXBidWlsdCAua25vd25nZXQgbm90CisgICB7IC8vZmFsc2V9IGlmCitAQCAtNDE5LDcgKzQxOSw3IEBAIHN5c3RlbWRpY3QgL05PTkFUSVZFRk9OVE1BUCBrbm93biAvLy5zZXRuYXRpdmVmb250bWFwYnVpbHQgZXhlYworICAgICAgIH0gZm9yYWxsCisgICAgIH0gaWYKKyAgICAgJSByZWNvcmQgdGhhdCB3ZSd2ZSBiZWVuIHJ1bgorLSAgICAvL3RydWUgLy8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IGV4ZWMKKysgICAgLy90cnVlIC5zZXRuYXRpdmVmb250bWFwYnVpbHQKKyAgIH0gaWZlbHNlCisgfSBiaW5kIGRlZgorIGN1cnJlbnRkaWN0IC8uc2V0bmF0aXZlZm9udG1hcGJ1aWx0IC5mb3JjZXVuZGVmCitAQCAtMTEwMyw3ICsxMTAzLDcgQEAgJGVycm9yIC9TdWJzdGl0dXRlRm9udCB7IH0gcHV0CisgCisgICAgICAgICAgICAgICAgICUgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBmb250IHdhcyBhY3R1YWxseSBsb2FkZWQuCisgICAgICAgICBkdXAgMyBpbmRleCAuZm9udGtub3duZ2V0CistICAgICAgICAgeyBkdXAgL1BhdGhMb2FkIDQgaW5kZXggLy8ucHV0Z3N0cmluZ2NvcHkgZXhlYworKyAgICAgICAgIHsgZHVwIC9QYXRoTG9hZCA0IGluZGV4IC5wdXRnc3RyaW5nY29weQorICAgICAgICAgICAgNCAxIHJvbGwgcG9wIHBvcCBwb3AgLy90cnVlIGV4aXQKKyAgICAgICAgICB9IGlmCisgCitAQCAtMTExNSw3ICsxMTE1LDcgQEAgJGVycm9yIC9TdWJzdGl0dXRlRm9udCB7IH0gcHV0CisgICAgICAgICAgeyAgICAgICAgICAgICUgU3RhY2s6IG9yaWdmb250bmFtZSBmb250ZGlyZWN0b3J5IHBhdGggZmlsZWZvbnRuYW1lCisgICAgICAgICAgICAyIGluZGV4IDEgaW5kZXggLmZvbnRrbm93bmdldAorICAgICAgICAgICAgIHsgICAlIFllcy4gIFN0YWNrOiBvcmlnZm9udG5hbWUgZm9udGRpcmVjdG9yeSBwYXRoIGZpbGVmb250bmFtZSBmb250ZGljdAorLSAgICAgICAgICAgICAgZHVwIDQgLTEgcm9sbCAvUGF0aExvYWQgZXhjaCAvLy5wdXRnc3RyaW5nY29weSBleGVjCisrICAgICAgICAgICAgICBkdXAgNCAtMSByb2xsIC9QYXRoTG9hZCBleGNoIC5wdXRnc3RyaW5nY29weQorICAgICAgICAgICAgICAgICAgICAgICAlIFN0YWNrOiBvcmlnZm9udG5hbWUgZm9udGRpcmVjdG9yeSBmaWxlZm9udG5hbWUgZm9udGRpY3QKKyAgICAgICAgICAgICAgIDMgLTEgcm9sbCBwb3AKKyAgICAgICAgICAgICAgICAgICAgICAgJSBTdGFjazogb3JpZ2ZvbnRuYW1lIGZpbGVmb250bmFtZSBmb250ZGljdAorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcyBiL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcworaW5kZXggZWVlMGI5Zi4uYThlZDg5MiAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19sZXYyLnBzCitAQCAtMTYzLDEwICsxNjMsMTEgQEAgZW5kCisgICAgICAgICAlIFNldCB0aGVtIGFnYWluIHRvIHRoZSBuZXcgdmFsdWVzLiAgRnJvbSBoZXJlIG9uLCB3ZSBhcmUgc2FmZSwKKyAgICAgICAgICUgc2luY2UgYSBjb250ZXh0IHN3aXRjaCB3aWxsIGNvbnN1bHQgdXNlcnBhcmFtcy4KKyAgIC5zZXR1c2VycGFyYW1zCistfSAuYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisgCisgL3NldHVzZXJwYXJhbXMgewkJJSA8ZGljdD4gc2V0dXNlcnBhcmFtcyAtCistICAgIC5zZXR1c2VycGFyYW1zMgorKyAgICB7LnNldHVzZXJwYXJhbXMyfSBzdG9wcGVkCisrICAgIHsvc2V0dXNlcnBhcmFtcyBsb2FkICRlcnJvciAvZXJyb3JuYW1lIGdldCBzaWduYWxlcnJvcn0gaWYKKyB9IC5iaW5kIG9kZWYKKyAlIEluaXRpYWxpemUgdXNlciBwYXJhbWV0ZXJzIG1hbmFnZWQgaGVyZS4KKyAvSm9iTmFtZSAoKSAuZGVmaW5lcHN1c2VycGFyYW0KK0BAIC00MTUsNyArNDE2LDkgQEAgcHN1c2VycGFyYW1zIC9Qcm9jZXNzRFNDQ29tbWVudCB7LmNoZWNrcHJvY2Vzc2NvbW1lbnR9IHB1dAorIAorICUgVk1SZWNsYWltIGFuZCBWTVRocmVzaG9sZCBhcmUgdXNlciBwYXJhbWV0ZXJzLgorIC9zZXR2bXRocmVzaG9sZCB7CQklIDxpbnQ+IHNldHZtdGhyZXNob2xkIC0KKy0gIG1hcmsgL1ZNVGhyZXNob2xkIDIgLmFyZ2luZGV4IC5kaWN0dG9tYXJrIC5zZXR1c2VycGFyYW1zMiBwb3AKKysgIG1hcmsgL1ZNVGhyZXNob2xkIDIgLmFyZ2luZGV4IC5kaWN0dG9tYXJrIHsuc2V0dXNlcnBhcmFtczJ9IHN0b3BwZWQKKysgIHtwb3AgL3NldHZtdGhyZXNob2xkIGxvYWQgJGVycm9yIC9lcnJvcm5hbWUgZ2V0IHNpZ25hbGVycm9yfQorKyAge3BvcH0gaWZlbHNlCisgfSBvZGVmCisgL3ZtcmVjbGFpbSB7CQkJJSA8aW50PiB2bXJlY2xhaW0gLQorICAgZHVwIDAgZ3QgeworQEAgLTQyNyw3ICs0MzAsOSBAQCBwc3VzZXJwYXJhbXMgL1Byb2Nlc3NEU0NDb21tZW50IHsuY2hlY2twcm9jZXNzY29tbWVudH0gcHV0CisgICAgIGlmZWxzZQorICAgfSB7CisgICAgICUgVk1SZWNsYWltIHVzZXJwYXJhbSBjb250cm9scyBlbmFibGUvZGlzYWJsZSBHQworLSAgICBtYXJrIC9WTVJlY2xhaW0gMiBpbmRleCAuZGljdHRvbWFyayAuc2V0dXNlcnBhcmFtczIgcG9wCisrICAgIG1hcmsgL1ZNUmVjbGFpbSAyIGluZGV4IC5kaWN0dG9tYXJrIHsuc2V0dXNlcnBhcmFtczJ9IHN0b3BwZWQKKysgICAge3BvcCAvdm1yZWNsYWltIGxvYWQgJGVycm9yIC9lcnJvcm5hbWUgZ2V0IHNpZ25hbGVycm9yfQorKyAgICB7cG9wfSBpZmVsc2UKKyAgIH0gaWZlbHNlCisgfSBvZGVmCisgLTEgc2V0dm10aHJlc2hvbGQKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcworaW5kZXggZmIxYzQxOS4uNThlNzVkMyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKK0BAIC02NjAsNyArNjYwLDcgQEAgY3VycmVudGRpY3QgLy5wZGZtYXJrcGFyYW1zIC51bmRlZgorICAgeworICAgICBwb3AKKyAgIH0gaWZlbHNlCistfSAuYmluZCBleGVjdXRlb25seSBkZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisgCisgJSBVc2UgdGhlIERTQyBwcm9jZXNzaW5nIGhvb2sgdG8gcGFzcyBEU0MgY29tbWVudHMgdG8gdGhlIGRyaXZlci4KKyAlIFdlIHVzZSBhIHBzZXVkby1wYXJhbWV0ZXIgbmFtZWQgRFNDIHdob3NlIHZhbHVlIGlzIGFuIGFycmF5OgorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzCitpbmRleCA4ZmE3YzUxLi5hZmI0ZmZhIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcworQEAgLTYwOCw2ICs2MDgsMjAgQEAgTk9NRURJQUFUVFJTIHsKKyAlIGluIHRoZSA8ZmFpbGVkPiBkaWN0aW9uYXJ5IHdpdGggdGhlIHBvbGljeSB2YWx1ZSwKKyAlIGFuZCB3ZSByZXBsYWNlIHRoZSBrZXkgaW4gdGhlIDxtZXJnZWQ+IGRpY3Rpb25hcnkgd2l0aCBpdHMgcHJpb3IgdmFsdWUKKyAlIChvciByZW1vdmUgaXQgaWYgaXQgaGFkIG5vIHByaW9yIHZhbHVlKS4KKysKKyslIE1ha2luZyB0aGlzIGFuIG9wZXJhdG9yIG1lYW5zIHdlIGNhbiBwcm9wZXJseSBoaWRlCisrJSB0aGUgY29udGVudHMgLSBzcGVjaWZpY2FsbHkgLmZvcmNlcHV0CisrLzFQb2xpY3kKKyt7CisrICAlIFJvbGwgYmFjayB0aGUgZmFpbGVkIHJlcXVlc3QgdG8gaXRzIHByZXZpb3VzIHN0YXR1cy4KKysgIFNFVFBEREVCVUcgeyAoUm9sbGluZyBiYWNrLikgPSBwc3RhY2sgZmx1c2ggfSBpZgorKyAgMyBpbmRleCAyIGluZGV4IDMgLTEgcm9sbCAuZm9yY2VwdXQKKysgIDQgaW5kZXggMSBpbmRleCAua25vd25nZXQKKysgICB7IDQgaW5kZXggMyAxIHJvbGwgLmZvcmNlcHV0IH0KKysgICB7IDMgaW5kZXggZXhjaCAudW5kZWYgfQorKyAgaWZlbHNlCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKysKKyAvLnBvbGljeXByb2NzIG1hcmsKKyAlIFRoZXNlIHByb2NlZHVyZXMgYXJlIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb24gdGhlIHN0YWNrOgorICUgICA8b3JpZz4gPG1lcmdlZD4gPGZhaWxlZD4gPFBvbGljaWVzPiA8a2V5PiA8cG9saWN5PgorQEAgLTYzMSwxNCArNjQ1LDcgQEAgTk9NRURJQUFUVFJTIHsKKyAgICAgICAgIC9zZXRwYWdlZGV2aWNlIC5zeXN0ZW12YXIgL2NvbmZpZ3VyYXRpb25lcnJvciBzaWduYWxlcnJvcgorICAgICAgIH0gaWZlbHNlCisgICB9IGJpbmQKKy0gIDEgewkJJSBSb2xsIGJhY2sgdGhlIGZhaWxlZCByZXF1ZXN0IHRvIGl0cyBwcmV2aW91cyBzdGF0dXMuCistU0VUUERERUJVRyB7IChSb2xsaW5nIGJhY2suKSA9IHBzdGFjayBmbHVzaCB9IGlmCistICAgICAgICAzIGluZGV4IDIgaW5kZXggMyAtMSByb2xsIC5mb3JjZXB1dAorLSAgICAgICAgNCBpbmRleCAxIGluZGV4IC5rbm93bmdldAorLSAgICAgICAgIHsgNCBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQgfQorLSAgICAgICAgIHsgMyBpbmRleCBleGNoIC51bmRlZiB9CistICAgICAgICBpZmVsc2UKKy0gIH0gLmJpbmQgZXhlY3V0ZW9ubHkgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorKyAgMSAvMVBvbGljeSBsb2FkCisgICA3IHsJCSUgRm9yIFBhZ2VTaXplIG9ubHksIGp1c3QgaW1wb3NlIHRoZSByZXF1ZXN0LgorICAgICAgICAgMSBpbmRleCAvUGFnZVNpemUgZXEKKyAgICAgICAgICB7IHBvcCBwb3AgMSBpbmRleCAvUGFnZVNpemUgNyBwdXQgfQorQEAgLTY0Niw2ICs2NTMsOCBAQCBTRVRQRERFQlVHIHsgKFJvbGxpbmcgYmFjay4pID0gcHN0YWNrIGZsdXNoIH0gaWYKKyAgICAgICAgIGlmZWxzZQorICAgfSBiaW5kCisgLmRpY3R0b21hcmsgcmVhZG9ubHkgZGVmCisrY3VycmVudGRpY3QgLzFQb2xpY3kgdW5kZWYKKysKKyAvLmFwcGx5cG9saWNpZXMJCSUgPG9yaWc+IDxtZXJnZWQ+IDxmYWlsZWQ+IC5hcHBseXBvbGljaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgJSAgIDxvcmlnPiA8bWVyZ2VkJz4gPGZhaWxlZCc+CisgIHsgMSBpbmRleCAvUG9saWNpZXMgZ2V0IDEgaW5kZXgKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX3R5cDMyLnBzIGIvUmVzb3VyY2UvSW5pdC9nc190eXAzMi5wcworaW5kZXggYjY2MDBiMC4uOTE1MGY3MSAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfdHlwMzIucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfdHlwMzIucHMKK0BAIC03OSwxNSArNzksMTkgQEAgc3lzdGVtZGljdCAvLnJlbW92ZWdseXBocyAudW5kZWYKKyAuZGljdHRvbWFyayAvUHJvY1NldCBkZWZpbmVyZXNvdXJjZSBwb3AKKyAKKyAvLmNpZGZvbnR0eXBlcyB3aGVyZSB7IHBvcCB9IHsgLy5jaWRmb250dHlwZXMgNiBkaWN0IGRlZiB9IGlmZWxzZQorLS5jaWRmb250dHlwZXMgYmVnaW4KKy0KKy00CSUgQ0lERm9udFR5cGUgNCA9IEZvbnRUeXBlIDMyCisteyBkdXAgL0ZvbnRUeXBlIDMyIC5mb3JjZXB1dAorKy9DSURGb250VHlwZTQKKyt7CisrICBkdXAgL0ZvbnRUeXBlIDMyIC5mb3JjZXB1dAorICAgZHVwIC9DaGFyU3RyaW5ncyAyMCBkaWN0IC5mb3JjZXB1dAorICAgMSBpbmRleCBleGNoIC5idWlsZGZvbnQzMiBleGNoIHBvcAorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2VwdXQKKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKysuY2lkZm9udHR5cGVzIGJlZ2luCisrCisrCisrNCAvQ0lERm9udFR5cGU0IGxvYWQgZGVmICUgQ0lERm9udFR5cGUgNCA9IEZvbnRUeXBlIDMyCisgCisgZW5kCQklIC5jaWRmb250dHlwZXMKKytjdXJyZW50ZGljdCAvQ0lERm9udFR5cGU0IC5mb3JjZXVuZGVmCisgCisgJSBEZWZpbmUgdGhlIEJ1aWxkR2x5cGggcHJvY2VkdXJlLgorICUgU2luY2UgVHlwZSAzMiBmb250cyBhcmUgaW5kZXhlZCBieSBDSUQsIHRoZXJlIGlzIG5vIEJ1aWxkQ2hhciBwcm9jZWR1cmUuCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc190eXBlMS5wcyBiL1Jlc291cmNlL0luaXQvZ3NfdHlwZTEucHMKK2luZGV4IGVmZGFlNDguLjI5MzVkOWMgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3R5cGUxLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3R5cGUxLnBzCitAQCAtMjgzLDcgKzI4Myw3IEBAIGN1cnJlbnRkaWN0IC9jbG9zZXNvdXJjZWRpY3QgLnVuZGVmCisgICB9IGlmCisgICAyIGNvcHkgL1dlaWdodFZlY3RvciBleGNoIC5mb3JjZXB1dAorICAgLnNldHdlaWdodHZlY3RvcgorLX0gLmJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmCisgZW5kCisgCisgJSBSZWdpc3RlciB0aGUgZm9udCB0eXBlcyBmb3IgZGVmaW5lZm9udC4KK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcworaW5kZXggYTgyYTJhMy4uN2NjZDRjZCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMKKysrKyBiL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMKK0BAIC0yMTgsNyArMjE4LDcgQEAgY3VycmVudGRpY3QgL251bS1jaGFycy1kaWN0IC51bmRlZgorICAgICAgIH0gaWZlbHNlCisgICAgIH0gaWZlbHNlCisgICB9IGlmZWxzZQorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIC9QREZTY2FuUnVsZXNfdHJ1ZSA8PCAvUERGU2NhblJ1bGVzIC8vdHJ1ZSA+PiBkZWYKKyAvUERGU2NhblJ1bGVzX251bGwgPDwgL1BERlNjYW5SdWxlcyAvL251bGwgPj4gZGVmCisgLy5wZGZydW4gewkJCSUgPGZpbGU+IDxvcGRpY3Q+IC5wZGZydW4gLQorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCitpbmRleCBkMWI2YWM5Li5jMjM5ZGFmIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcworQEAgLTExNTgsNyArMTE1OCw3IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKKyAgIFEKKyAgIFBERkRFQlVHIHsgcGRmZGljdCAvUERGU1RFUGNvdW50IC5rbm93bmdldCB7IDEgbGUgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7ICglRW5kIFBhaW50UHJvYykgcHJpbnQgZHVwID09PSBmbHVzaCB9IGlmIH0gaWYKKyAgIFBERmZpbGUgZXhjaCBzZXRmaWxlcG9zaXRpb24KKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvLnBkZnBhaW50cHJvYyB7CisgICAgICUlIEdldCB0aGUgL20gZnJvbSBwZGZvcGRpY3QgKG11c3QgYmUgcHJlc2VudCkKK0BAIC0xMTg5LDcgKzExODksNyBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCisgICAgIHsKKyAgICAgICBzd2l0Y2hfdG9fdGV4dF9tYXJraW5nX29wcworICAgICB9IGlmCistfWJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfWJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC9yZXNvbHZlcGF0dGVybiB7CSUgPHBhdHRlcm5zdHJlYW1kaWN0PiByZXNvbHZlcGF0dGVybiA8cGF0dGVybmRpY3Q+CisgICAgICAgICAgICAgICAgICUgRG9uJ3QgZG8gdGhlIHJlc29sdmVzdHJlYW0gbm93OiBqdXN0IGNhcHR1cmUgdGhlIGRhdGEKK0BAIC0yMzUzLDcgKzIzNTMsNyBAQCBjdXJyZW50ZGljdCAvbGFzdC1kaXRjaC1icGMtY3NwIHVuZGVmCisgICB9eworICAgICBwZGZkaWN0IC9BcHBlYXJhbmNlTnVtYmVyIDAgLmZvcmNlcHV0CisgICB9IGlmZWxzZQorLX1iaW5kIGV4ZWN1dGVvbmx5IGRlZgorK31iaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvTWFrZUFwcGVhcmFuY2VOYW1lIHsKKyAgIHBkZmRpY3QgL0FwcGVhcmFuY2VOdW1iZXIgZ2V0CitAQCAtMjM4Miw3ICsyMzgyLDcgQEAgY3VycmVudGRpY3QgL2xhc3QtZGl0Y2gtYnBjLWNzcCB1bmRlZgorICAgRG9Gb3JtCisgICBwZGZkaWN0IC8uUHJlc2VydmVQREZGb3JtIDMgLTEgcm9sbCAuZm9yY2VwdXQKKyAgIGdyZXN0b3JlCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgL0RvRm9ybSB7CisgICAlJSBzYXZlIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBpdHMgdHJ1ZSB3ZSB3aWxsIHNldCBpdCB0byBmYWxzZSBsYXRlciwgaW4gb3JkZXIKK0BAIC0yNTQxLDcgKzI1NDEsNyBAQCBjdXJyZW50ZGljdCAvbGFzdC1kaXRjaC1icGMtY3NwIHVuZGVmCisgICAgIGVuZAorICAgfSBpZgorICAgcGRmZGljdCAvLlByZXNlcnZlUERGRm9ybSAzIC0xIHJvbGwgLmZvcmNlcHV0CistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgL19kb3BzX3NhdmUgMSBhcnJheSBkZWYKKyAKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcworaW5kZXggZmVhZjBkMC4uNTM1YjE0YSAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKKysrKyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKK0BAIC03MTgsNyArNzE4LDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgorICAge3BvcCBwb3AgcG9wfQorICAgaWZlbHNlCisgCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgY3VycmVudGRpY3QgLy5Eb1RvVW5pY29kZT8gLmZvcmNldW5kZWYKKyAKK0BAIC0xMjQxLDcgKzEyNDEsNyBAQCBjdXJyZW50ZGljdCAvZWV4ZWNfcGRmX3BhcmFtX2RpY3QgLnVuZGVmCisgICAgIH0gYmRlZgorICAgICBkdXAgY3VycmVudGRpY3QgRW5jb2RpbmcgLnByb2Nlc3NUb1VuaWNvZGUKKyAgICAgY3VycmVudGRpY3QgZW5kIC5jb21wbGV0ZWZvbnQgZXhjaCBwb3AKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAvLmFkanVzdGNoYXJ3aWR0aCB7CSUgPHd4PiA8d3k+IC5hZGp1c3RjaGFyd2lkdGggPHd4Jz4gPHd5Jz4KKyAgICUgRW5mb3JjZSB0aGUgbWV0cmljcywgaW4gZ2x5cGggc3BhY2UsIHRvIHRoZSB2YWx1ZXMgZm91bmQgaW4gdGhlIFBERiBGb250IG9iamVjdAorICAgJSAtIGZvcmNlIHd5ID09IDAgKGFzc3VtZWQsIGFuZCBub3Qgc3RvcmVkIGluIHRoZSBQREYgZm9udCkKK0BAIC0yMDI2LDcgKzIwMjYsNyBAQCBjdXJyZW50ZGljdCAvQ01hcF9yZWFkX2RpY3QgdW5kZWYKKyAgICAgfSBpZgorICAgICAvZmluZHJlc291cmNlIGN2eCAvdW5kZWZpbmVkIHNpZ25hbGVycm9yCisgICB9IGxvb3AKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvYnVpbGRDSURUeXBlMCB7CSUgPENJREZvbnRUeXBlMC1mb250LXJlc291cmNlPiBidWlsZENJRFR5cGUwIDxmb250PgorICAgZHVwIC9CYXNlRm9udCBnZXQgZmluZENJREZvbnQgZXhjaCBwb3AKK0BAIC0yMjExLDcgKzIyMTEsNyBAQCBjdXJyZW50ZGljdCAvQ01hcF9yZWFkX2RpY3QgdW5kZWYKKyAgIC9UeXBlMCAvL2J1aWxkVHlwZTAKKyAgIC9UeXBlMSAvL2J1aWxkVHlwZTEKKyAgIC9NTVR5cGUxIC8vYnVpbGRUeXBlMQorLSAgL1R5cGUzIC8vYnVpbGRUeXBlMworKyAgL1R5cGUzIC9idWlsZFR5cGUzIGxvYWQKKyAgIC9UcnVlVHlwZSAvL2J1aWxkVHJ1ZVR5cGUKKyAgIC9DSURGb250VHlwZTAgLy9idWlsZENJRFR5cGUwCisgICAvQ0lERm9udFR5cGUyIC8vYnVpbGRDSURUeXBlMgorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzCitpbmRleCAwOWY4NzM1Li5jODIzZTY5IDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcworQEAgLTY2MCw3ICs2NjAsNyBAQCBjdXJyZW50ZGljdCAvcnVucGRmc3RyaW5nIC51bmRlZgorICAgICB9IGZvcmFsbAorICAgICBwb3AKKyAgIH0gaWZlbHNlCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgY3VycmVudGRpY3QgL3BkZl9jb2xsZWN0aW9uX2ZpbGVzIC51bmRlZgorIAorQEAgLTI3MTUsNyArMjcxNSw3IEBAIGN1cnJlbnRkaWN0IC9QREYyUFNfbWF0cml4X2tleSB1bmRlZgorICAgLnNldGdsb2JhbAorICAgL1JlcGFpcmVkQW5FcnJvciBleGNoIGRlZgorICAgL1JlcGFpcmVkIGV4Y2ggZGVmCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgJSBEaXNwbGF5IHRoZSBjb250ZW50cyBvZiBhIHBhZ2UgKGluY2x1ZGluZyBhbm5vdGF0aW9ucykuCisgL3Nob3dwYWdlY29udGVudHMgewklIDxwYWdlZGljdD4gc2hvd3BhZ2Vjb250ZW50cyAtCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCitpbmRleCBjNDVmYzUxLi44NjcyZDYxIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9vcHMucHMKK0BAIC0xOTMsNyArMTkzLDcgQEAgY3VycmVudGRpY3QgL2dwdXRfYWx3YXlzX2FsbG93IC51bmRlZgorICAgICAgIHBkZmZvcm1hdGVycm9yCisgICAgIH0gaWZlbHNlCisgICB9IGlmCistfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgJSBTYXZlIFBERiBnc3RhdGUKKyAvcXN0YXRlIHsgICAgICAgJSAtIHFzdGF0ZSA8cXN0YXRlPgorQEAgLTQ1MSw3ICs0NTEsNyBAQCBjdXJyZW50ZGljdCAvZ3B1dF9hbHdheXNfYWxsb3cgLnVuZGVmCisgICAlJSBhIGdzYXZlLCBzbyB3ZSBoYXZlbid0IGNvcGllZCBpdCB0byAvc2VsZiwgaWYgd2UgZG9uJ3QgZG8gdGhhdCBoZXJlCisgICAlJSB0aGVuIHRyYW5zcGFyZW50IGFubm90YXRpb25zIGNhdXNlIGFuIGludmFsaWQgYWNjZXNzIGVycm9yLgorICAgY3VycmVudGRpY3QgLy9ub2RpY3QgZXEgey9zZWxmIGR1cCBsb2FkIGVuZCA1IGRpY3QgYmVnaW4gZGVmfSBpZgorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIC9BSVMgeyAuc2V0YWxwaGFpc3NoYXBlIH0gYmluZCBleGVjdXRlb25seSBkZWYKKyAvQk0geworICAgLy5zZXRibGVuZG1vZGUgd2hlcmUgeworQEAgLTEwNzcsNyArMTA3Nyw3IEBAIGVuZCByZWFkb25seSBkZWYKKyAgICAgcGRmb3BkaWN0IC92IHtpbnNpZGVfdGV4dF92fSBiaW5kIC5mb3JjZXB1dAorICAgICBwZGZvcGRpY3QgL3kge2luc2lkZV90ZXh0X3l9IGJpbmQgLmZvcmNlcHV0CisgICAgIHBkZm9wZGljdCAvcmUge2luc2lkZV90ZXh0X3JlfSBiaW5kIC5mb3JjZXB1dAorLX0gYmluZCBleGVjdXRlb25seSBkZWYKKyt9IGJpbmQgZXhlY3V0ZW9ubHkgb2RlZgorIAorIC9zd2l0Y2hfdG9fbm9ybWFsX21hcmtpbmdfb3BzIHsKKyAgICAgcGRmb3BkaWN0IC9tIHtub3JtYWxfbX0gYmluZCAuZm9yY2VwdXQKK0BAIC0xMDg2LDcgKzEwODYsNyBAQCBlbmQgcmVhZG9ubHkgZGVmCisgICAgIHBkZm9wZGljdCAvdiB7bm9ybWFsX3Z9IGJpbmQgLmZvcmNlcHV0CisgICAgIHBkZm9wZGljdCAveSB7bm9ybWFsX3l9IGJpbmQgLmZvcmNlcHV0CisgICAgIHBkZm9wZGljdCAvcmUge25vcm1hbF9yZX0gYmluZCAuZm9yY2VwdXQKKy19IGJpbmQgZXhlY3V0ZW9ubHkgZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvQlQgeworICAgY3VycmVudGRpY3QgL1RleHRTYXZlTWF0cml4IGtub3duIHsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMy1CdWctNjk5ODMyLWFkZC1jb250cm9sLW92ZXItaGlkaW5nLWVycm9yLWhhbmRsZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwMy1CdWctNjk5ODMyLWFkZC1jb250cm9sLW92ZXItaGlkaW5nLWVycm9yLWhhbmRsZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNzg2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDAzLUJ1Zy02OTk4MzItYWRkLWNvbnRyb2wtb3Zlci1oaWRpbmctZXJyb3ItaGFuZGxlcnMucGF0Y2gKQEAgLTAsMCArMSwxNzIgQEAKK0Zyb20gMWY5YTkxYzg2YmQ1NmFjZjU3ODI2YjliMGUwMjBlYmUxOTUzZTJhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+CitEYXRlOiBUaHUsIDQgT2N0IDIwMTggMTA6NDI6MTMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIEJ1ZyA2OTk4MzI6IGFkZCBjb250cm9sIG92ZXIgaGlkaW5nIGVycm9yIGhhbmRsZXJzLgorCitXaXRoIGEgcHJldmlvdXMgY29tbWl0IGNoYW5naW5nIGVycm9yIGhhbmRsaW5nIGluIFNBRkVSIHNvIHRoZSBoYW5kbGVyIGdldHMKK3Bhc3NlZCBhIG5hbWUgb2JqZWN0IChyYXRoZXIgdGhhbiBleGVjdXRhYmxlIG9iamVjdCksIGl0IGlzIGxlc3MgY3JpdGljYWwgdG8KK2hpZGUgdGhlIGVycm9yIGhhbmRsZXJzLgorCitUaGlzIGludHJvZHVjZXMgYSAtZFNBRkVSRVJST1JTIG9wdGlvbiB0byBmb3JjZSBvbmx5IHVzZSBvZiB0aGUgZGVmYXVsdCBlcnJvcgoraGFuZGxlcnMuCisKK0l0IGFsc28gYWRkcyBhIC5zZXRzYWZlcmVycm9ycyBQb3N0c2NyaXB0IGNhbGwsIG1lYW5pbmcgYSBjYWxsZXIsIHdpdGhvdXQKKy1kU0FGRVJFUlJPUlMsIGNhbiBjcmVhdGUgdGhlaXIgb3duIGRlZmF1bHQgZXJyb3IgaGFuZGxlcnMgKGluIGVycm9yZGljdCwgYXMKK25vcm1hbCksIGFuZCB0aGVuIGNhbGwgLnNldHNhZmVyZXJyb3JzIG1lYW5pbmcgdGhlaXIgb3duIGhhbmRsZXJzIGFyZSBhbHdheXMKK2NhbGxlZC4KKworV2l0aCAtZFNBRkVSRVJST1JTIG9yIGFmdGVyIGEgY2FsbCB0byAuc2V0c2FmZXJlcnJvcnMsIC5zZXRzYWZlcmVycm9ycyBpcworcmVtb3ZlZC4KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHBzaS9pbnRlcnAuYyAgICAgICAgICAgICB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKK2luZGV4IGJlYzMwN2QuLmY5NTJmMzIgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworQEAgLTE4OCw2ICsxODgsMTYgQEAgY3VycmVudGRpY3QgL0RFTEFZU0FGRVIga25vd24geyAvREVMQVlTQUZFUiAvL3RydWUgZGVmIC9OT1NBRkVSIC8vdHJ1ZSBkZWYgfSBpZgorICAgY3VycmVudGRpY3QgL1BBUkFOT0lEU0FGRVIga25vd24gb3IJJSBQQVJBTk9JRFNBRkVSIGlzIGVxdWl2YWxlbnQKKyB9CisgaWZlbHNlIGRlZgorKworKy9TQUZFUkVSUk9SUworK2N1cnJlbnRkaWN0IC9OT1NBRkVSRVJST1JTIGtub3duCisreworKyAgLy9mYWxzZQorK30KKyt7CisrICBjdXJyZW50ZGljdCAvU0FGRVJFUlJPUlMga25vd24KKyt9IGlmZWxzZSBkZWYKKysKKyBjdXJyZW50ZGljdCAvU0hPUlRFUlJPUlMga25vd24gICAvU0hPUlRFUlJPUlMgZXhjaCBkZWYKKyBjdXJyZW50ZGljdCAvVFRZUEFVU0Uga25vd24gICAvVFRZUEFVU0UgZXhjaCBkZWYKKyBjdXJyZW50ZGljdCAvV1JJVEVTWVNURU1ESUNUIGtub3duICAgL1dSSVRFU1lTVEVNRElDVCBleGNoIGRlZgorQEAgLTExMjMsMTIgKzExMzMsMjMgQEAgZXJyb3JkaWN0IGJlZ2luCisgIH0gYmluZCBkZWYKKyBlbmQJCSUgZXJyb3JkaWN0CisgCistJSBQdXQgYWxsIHRoZSBkZWZhdWx0IGhhbmRsZXJzIGluIGdzZXJyb3JkaWN0CistZ3NlcnJvcmRpY3QKKy1lcnJvcmRpY3QgezIgaW5kZXggMyAxIHJvbGwgcHV0fSBmb3JhbGwKKy1ub2FjY2VzcyBwb3AKKy0lIHJlbW92ZSB0aGUgbm9uLXN0YW5kYXJkIGVycm9ycyBmcm9tIGVycm9yZGljdAorK2dzZXJyb3JkaWN0IC91bmtub3duZXJyb3IgZXJyb3JkaWN0IC91bmtub3duZXJyb3IgZ2V0IHB1dAorIGVycm9yZGljdCAvdW5rbm93bmVycm9yIC51bmRlZgorKworKy8uU0FGRVJFUlJPUkxJU1QgRXJyb3JOYW1lcyBkZWYKKysvLnNldHNhZmVyZXJyb3JzCisreworKyUgUHV0IGFsbCB0aGUgcmVxdWVzdGVkIGhhbmRsZXJzIGluIGdzZXJyb3JkaWN0CisrICBnc2Vycm9yZGljdAorKyAgLy8uU0FGRVJFUlJPUkxJU1QKKysgIHtkdXAgZXJyb3JkaWN0IGV4Y2ggZ2V0IDIgaW5kZXggMyAxIHJvbGwgcHV0fSBmb3JhbGwKKysgIG5vYWNjZXNzIHBvcAorKyAgc3lzdGVtZGljdCAvLnNldHNhZmVlcnJvcnMgLmZvcmNldW5kZWYKKysgIHN5c3RlbWRpY3QgLy5TQUZFUkVSUk9STElTVCAuZm9yY2V1bmRlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisrCisrU0FGRVJFUlJPUlMgey5zZXRzYWZlcmVycm9yc30gaWYKKysKKyAlIERlZmluZSBhIHN0YWJsZSBwcml2YXRlIGNvcHkgb2YgaGFuZGxlZXJyb3IgdGhhdCB3ZSB3aWxsIGFsd2F5cyB1c2UgdW5kZXIKKyAlIEpPQlNFUlZFUiBtb2RlLgorIC8uR1NoYW5kbGVlcnJvciBlcnJvcmRpY3QgL2hhbmRsZWVycm9yIGdldCBkZWYKK0BAIC0xNzYwLDE4ICsxNzgxLDE1IEBAIGN1cnJlbnRkaWN0IC8ucnVubGliZmlsZSAudW5kZWYKKyAKKyAlIEJpbmQgYWxsIHRoZSBvcGVyYXRvcnMgZGVmaW5lZCBhcyBwcm9jZWR1cmVzLgorIC8uYmluZG9wZXJhdG9ycwkJJSBiaW5kcyBvcGVyYXRvcnMgaW4gY3VycmVudGRpY3QKKy0geyAlIFRlbXBvcmFyaWx5IGRpc2FibGUgdGhlIHR5cGVjaGVjayBlcnJvci4KKy0gICBlcnJvcmRpY3QgL3R5cGVjaGVjayAyIGNvcHkgZ2V0CistICAgZXJyb3JkaWN0IC90eXBlY2hlY2sgeyBwb3AgfSBwdXQJJSBwb3AgdGhlIGNvbW1hbmQKKysgeworICAgIGN1cnJlbnRkaWN0CisgICAgIHsgZHVwIHR5cGUgL29wZXJhdG9ydHlwZSBlcQorLSAgICAgICB7ICUgVGhpcyBtaWdodCBiZSBhIHJlYWwgb3BlcmF0b3IsIHNvIGJpbmQgbWlnaHQgY2F1c2UgYSB0eXBlY2hlY2ssCistICAgICAgICAgJSBidXQgd2UndmUgbWFkZSB0aGUgZXJyb3IgYSBuby1vcCB0ZW1wb3JhcmlseS4KKy0gICAgICAgICAuYmluZAorKyAgICAgICB7CisrICAgICAgICAgJSBUaGlzIG1pZ2h0IGJlIGEgcmVhbCBvcGVyYXRvciwgc28gYmluZCBtaWdodCBjYXVzZSBhIHR5cGVjaGVjaworKyAgICAgICAgIHsuYmluZH0gLmludGVybmFsc3RvcHBlZCBwb3AKKyAgICAgICAgfQorICAgICAgIGlmIHBvcCBwb3AKKyAgICAgfSBmb3JhbGwKKy0gICBwdXQKKyAgfSBkZWYKKyBERUxBWUJJTkQgbm90IHsgLmJpbmRvcGVyYXRvcnMgfSBpZgorIAorZGlmZiAtLWdpdCBhL3BzaS9pbnRlcnAuYyBiL3BzaS9pbnRlcnAuYworaW5kZXggM2RkNWY3YS4uY2Q4OTRmOSAxMDA2NDQKKy0tLSBhL3BzaS9pbnRlcnAuYworKysrIGIvcHNpL2ludGVycC5jCitAQCAtNjYyLDI3ICs2NjIsMTggQEAgYWdhaW46CisgICAgIGlmIChnc19lcnJvcm5hbWUoaV9jdHhfcCwgY29kZSwgJmVycm9yX25hbWUpIDwgMCkKKyAgICAgICAgIHJldHVybiBjb2RlOyAgICAgICAgICAgIC8qIG91dC1vZi1yYW5nZSBlcnJvciBjb2RlISAqLworIAorLSAgICAvKiAgSWYgTG9ja0ZpbGVQZXJtaXNzaW9ucyBpcyB0cnVlLCB3ZSBvbmx5IHJlZmVyIHRvIGdzZXJyb3JkaWN0LCB3aGljaAorLSAgICAgKiAgaXMgbm90IGFjY2Vzc2libGUgdG8gUG9zdGNyaXB0IGpvYnMKKysgICAgLyogIFdlIHJlZmVyIHRvIGdzZXJyb3JkaWN0IGZpcnN0LCB3aGljaCBpcyBub3QgYWNjZXNzaWJsZSB0byBQb3N0Y3JpcHQgam9icworKyAgICAgKiAgSWYgd2UncmUgcnVubmluZyB3aXRoIFNBRkVSRVJST1JTIGFsbCB0aGUgaGFuZGxlcnMgYXJlIGNvcGllZCB0byBnc2Vycm9yZGljdAorKyAgICAgKiAgc28gd2UnbGwgYWx3YXlzIGZpbmQgdGhlIGRlZmF1bHQgb25lLiBJZiBub3QgU0FGRVJFUlJPUlMsIG9ubHkgZ3Mgc3BlY2lmaWMKKysgICAgICogIGVycm9ycyBhcmUgaW4gZ3NlcnJvcmRpY3QuCisgICAgICAqLworLSAgICBpZiAoaV9jdHhfcC0+TG9ja0ZpbGVQZXJtaXNzaW9ucykgeworLSAgICAgICAgaWYgKCgoZGljdF9maW5kX3N0cmluZyhzeXN0ZW1kaWN0LCAiZ3NlcnJvcmRpY3QiLCAmcGVycm9yZGljdCkgPD0gMCB8fAorLSAgICAgICAgICAgICAgZGljdF9maW5kKHBlcnJvcmRpY3QsICZlcnJvcl9uYW1lLCAmZXByZWYpIDw9IDApKQorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICByZXR1cm4gY29kZTsgICAgICAgICAgICAvKiBlcnJvciBuYW1lIG5vdCBpbiBlcnJvcmRpY3Q/Pz8gKi8KKy0gICAgfQorLSAgICBlbHNlIHsKKy0gICAgICAgIC8qCistICAgICAgICAgKiBGb3IgZ3JlYXRlciBBZG9iZSBjb21wYXRpYmlsaXR5LCBvbmx5IHRoZSBzdGFuZGFyZCBQb3N0U2NyaXB0IGVycm9ycworLSAgICAgICAgICogYXJlIGRlZmluZWQgaW4gZXJyb3JkaWN0OyB0aGUgcmVzdCBhcmUgaW4gZ3NlcnJvcmRpY3QuCistICAgICAgICAgKi8KKy0gICAgICAgIGlmIChkaWN0X2ZpbmRfc3RyaW5nKHN5c3RlbWRpY3QsICJlcnJvcmRpY3QiLCAmcGVycm9yZGljdCkgPD0gMCB8fAorLSAgICAgICAgICAgIChkaWN0X2ZpbmQocGVycm9yZGljdCwgJmVycm9yX25hbWUsICZlcHJlZikgPD0gMCAmJgorLSAgICAgICAgICAgICAoZGljdF9maW5kX3N0cmluZyhzeXN0ZW1kaWN0LCAiZ3NlcnJvcmRpY3QiLCAmcGVycm9yZGljdCkgPD0gMCB8fAorLSAgICAgICAgICAgICAgZGljdF9maW5kKHBlcnJvcmRpY3QsICZlcnJvcl9uYW1lLCAmZXByZWYpIDw9IDApKQorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICByZXR1cm4gY29kZTsgICAgICAgICAgICAvKiBlcnJvciBuYW1lIG5vdCBpbiBlcnJvcmRpY3Q/Pz8gKi8KKy0gICAgfQorKyAgICBpZiAoZGljdF9maW5kX3N0cmluZyhzeXN0ZW1kaWN0LCAiZ3NlcnJvcmRpY3QiLCAmcGVycm9yZGljdCkgPD0gMCB8fAorKyAgICAgICAgKGRpY3RfZmluZChwZXJyb3JkaWN0LCAmZXJyb3JfbmFtZSwgJmVwcmVmKSA8PSAwICYmCisrICAgICAgICAgKGRpY3RfZmluZF9zdHJpbmcoc3lzdGVtZGljdCwgImVycm9yZGljdCIsICZwZXJyb3JkaWN0KSA8PSAwIHx8CisrICAgICAgICAgIGRpY3RfZmluZChwZXJyb3JkaWN0LCAmZXJyb3JfbmFtZSwgJmVwcmVmKSA8PSAwKSkKKysgICAgICAgICkKKysgICAgICAgIHJldHVybiBjb2RlOyAgICAgICAgICAgIC8qIGVycm9yIG5hbWUgbm90IGluIGVycm9yZGljdD8/PyAqLworKworICAgICBkb3JlZiA9ICplcHJlZjsKKyAgICAgZXByZWYgPSAmZG9yZWY7CisgICAgIC8qIFB1c2ggdGhlIGVycm9yIG9iamVjdCBvbiB0aGUgb3BlcmFuZCBzdGFjayBpZiBhcHByb3ByaWF0ZS4gKi8KK0BAIC02OTUsNiArNjg2LDI0IEBAIGFnYWluOgorICAgICAgICAgfQorICAgICAgICAgKm9zcCA9ICpwZXJyb3Jfb2JqZWN0OworICAgICAgICAgZXJyb3JleGVjX2ZpbmQoaV9jdHhfcCwgb3NwKTsKKysgICAgICAgIC8qIElmIHVzaW5nIFNBRkVSLCBoYW5kIGEgbmFtZSBvYmplY3QgdG8gdGhlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlCisrICAgICAgICAgKiBvYmplY3Qvb3BlcmF0b3IgaXRzZWxmLgorKyAgICAgICAgICovCisrICAgICAgICBpZiAoaV9jdHhfcC0+TG9ja0ZpbGVQZXJtaXNzaW9ucykgeworKyAgICAgICAgICAgIGNvZGUgPSBvYmpfY3ZzKGltZW1vcnksIG9zcCwgYnVmICsgMiwgMjU2LCAmcmxlbiwgKGNvbnN0IGJ5dGUgKiopJmJ1ZnB0cik7CisrICAgICAgICAgICAgaWYgKGNvZGUgPCAwKSB7CisrICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVua25vd25zdHIgPSAiLS11bmtub3duLS0iOworKyAgICAgICAgICAgICAgICBybGVuID0gc3RybGVuKHVua25vd25zdHIpOworKyAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCB1bmtub3duc3RyLCBybGVuKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSB7CisrICAgICAgICAgICAgICAgIGJ1ZlswXSA9IGJ1ZlsxXSA9IGJ1ZltybGVuICsgMl0gPSBidWZbcmxlbiArIDNdID0gJy0nOworKyAgICAgICAgICAgICAgICBybGVuICs9IDQ7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNvZGUgPSBuYW1lX3JlZihpbWVtb3J5LCBidWYsIHJsZW4sIG9zcCwgMSk7CisrICAgICAgICAgICAgaWYgKGNvZGUgPCAwKQorKyAgICAgICAgICAgICAgICBtYWtlX251bGwob3NwKTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICBnb3RvIGFnYWluOworIH0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNC1Gb3ItaGlkZGVuLW9wZXJhdG9ycy1wYXNzLWEtbmFtZS1vYmplY3QtdG8tZXJyb3ItaGFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNC1Gb3ItaGlkZGVuLW9wZXJhdG9ycy1wYXNzLWEtbmFtZS1vYmplY3QtdG8tZXJyb3ItaGFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzE1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA0LUZvci1oaWRkZW4tb3BlcmF0b3JzLXBhc3MtYS1uYW1lLW9iamVjdC10by1lcnJvci1oYW4ucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gMzRhOGM1YWE5ODdkNGRiNTIzNDE3MmE2MjIxOGIxNjgzNzE2MDZiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+CitEYXRlOiBUdWUsIDIgT2N0IDIwMTggMTY6MDI6NTggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIEZvciBoaWRkZW4gb3BlcmF0b3JzLCBwYXNzIGEgbmFtZSBvYmplY3QgdG8gZXJyb3IKKyBoYW5kbGVyLgorCitJbiBub3JtYWwgb3BlcmF0aW9uLCBQb3N0c2NyaXB0IGVycm9yIGhhbmRsZXJzIGFyZSBwYXNzZWQgdGhlIG9iamVjdCB3aGljaAordHJpZ2dlcmVkIHRoZSBlcnJvcjogdGhpcyBpcyBpbnZhcmlhYmx5IGFuIG9wZXJhdG9yIG9iamVjdC4KKworVGhlIGlzc3VlIGFyaXNlcyB3aGVuIGFuIGVycm9yIGlzIHRyaWdnZXJlZCBieSBhbiBvcGVyYXRvciB3aGljaCBpcyBmb3IgaW50ZXJuYWwKK3VzZSBvbmx5LCBhbmQgdGhhdCBvcGVyYXRvciBpcyB0aGVuIHBhc3NlZCB0byB0aGUgZXJyb3IgaGFuZGxlciwgbWVhbmluZyBpdAorYmVjb21lcyB2aXNpYmxlIHRvIHRoZSBlcnJvciBoYW5kbGVyIGNvZGUuCisKK0J5IGNvbnZlcnRpbmcgdG8gYSBuYW1lIG9iamVjdCwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgc3RpbGwgdmFsaWQsIGJ1dCB3ZSBubworbG9uZ2VyIGV4cG9zZSBpbnRlcm5hbCB1c2Ugb25seSBvcGVyYXRvcnMuCisKK1RoZSBjaGFuZ2UgaW4gZ3NfZHBzMS5wcyBpcyByZWxhdGVkIHRvIHRoZSBhYm92ZTogcHJldmlvdXNseSBhbiBlcnJvciBpbgorc2NoZWNrIHdvdWxkIHRocm93IGFuIGVycm9yIGFnYWluc3QgLmdjaGVjaywgYnV0IGFzIC5nY2hlY2sgaXMgbm93IGEgaGlkZGVuCitvcGVyYXRvciwgaXQgcmVzdWx0ZWQgaW4gYSBuYW1lIG9iamVjdCBiZWluZyBwYXNzZWQgdG8gdGhlIGVycm9yIGhhbmRsZXIuIEFzCitzY2hlY2sgaXMgYSAncmVhbCcgb3BlcmF0b3IsIGl0J3MgYmV0dGVyIHRvIHVzZSB0aGUgcmVhbCBvcGVyYXRvciwgcmF0aGVyIHRoYW4KK3RoZSBuYW1lIG9mIGFuIGludGVybmFsLCBoaWRkZW4gb25lLgorCitDVkU6IENWRS0yMDE4LTE3OTYxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIFJlc291cmNlL0luaXQvZ3NfZHBzMS5wcyB8ICAyICstCisgcHNpL2ludGVycC5jICAgICAgICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZHBzMS5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZHBzMS5wcworaW5kZXggMTE4MmY1My4uZWM1ZGI2MSAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZHBzMS5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19kcHMxLnBzCitAQCAtMjEsNyArMjEsNyBAQCBsZXZlbDJkaWN0IGJlZ2luCisgJSAtLS0tLS0gVmlydHVhbCBtZW1vcnkgLS0tLS0tICUKKyAKKyAvY3VycmVudHNoYXJlZCAvLmN1cnJlbnRnbG9iYWwgbG9hZCBkZWYKKy0vc2NoZWNrIC8uZ2NoZWNrIGxvYWQgZGVmCisrL3NjaGVjayB7LmdjaGVja30gYmluZCBvZGVmCisgJSoqKioqKiBGT0xMT1dJTkcgSVMgV1JPTkcgKioqKioqCisgL3NoYXJlZGRpY3QgY3VycmVudGRpY3QgL2dsb2JhbGRpY3QgLmtub3duZ2V0IG5vdCB7IDIwIGRpY3QgfSBpZiBkZWYKKyAKK2RpZmYgLS1naXQgYS9wc2kvaW50ZXJwLmMgYi9wc2kvaW50ZXJwLmMKK2luZGV4IGNkODk0ZjkuLmI3MDc2OWQgMTAwNjQ0CistLS0gYS9wc2kvaW50ZXJwLmMKKysrKyBiL3BzaS9pbnRlcnAuYworQEAgLTY3OCw2ICs2NzgsOCBAQCBhZ2FpbjoKKyAgICAgZXByZWYgPSAmZG9yZWY7CisgICAgIC8qIFB1c2ggdGhlIGVycm9yIG9iamVjdCBvbiB0aGUgb3BlcmFuZCBzdGFjayBpZiBhcHByb3ByaWF0ZS4gKi8KKyAgICAgaWYgKCFHU19FUlJPUl9JU19JTlRFUlJVUFQoY29kZSkpIHsKKysgICAgICAgIGJ5dGUgYnVmWzI2MF0sICpidWZwdHI7CisrICAgICAgICB1aW50IHJsZW47CisgICAgICAgICAvKiBSZXBsYWNlIHRoZSBlcnJvciBvYmplY3QgaWYgd2l0aGluIGFuIG9wYXJyYXkgb3IgLmVycm9yZXhlYy4gKi8KKyAgICAgICAgIG9zcCsrOworICAgICAgICAgaWYgKG9zcCA+PSBvc3RvcCkgeworQEAgLTY4NiwyMyArNjg4LDM2IEBAIGFnYWluOgorICAgICAgICAgfQorICAgICAgICAgKm9zcCA9ICpwZXJyb3Jfb2JqZWN0OworICAgICAgICAgZXJyb3JleGVjX2ZpbmQoaV9jdHhfcCwgb3NwKTsKKy0gICAgICAgIC8qIElmIHVzaW5nIFNBRkVSLCBoYW5kIGEgbmFtZSBvYmplY3QgdG8gdGhlIGVycm9yIGhhbmRsZXIsIHJhdGhlciB0aGFuIHRoZSBleGVjdXRhYmxlCistICAgICAgICAgKiBvYmplY3Qvb3BlcmF0b3IgaXRzZWxmLgorLSAgICAgICAgICovCistICAgICAgICBpZiAoaV9jdHhfcC0+TG9ja0ZpbGVQZXJtaXNzaW9ucykgeworKworKyAgICAgICAgaWYgKCFyX2hhc190eXBlKG9zcCwgdF9zdHJpbmcpICYmICFyX2hhc190eXBlKG9zcCwgdF9uYW1lKSkgeworICAgICAgICAgICAgIGNvZGUgPSBvYmpfY3ZzKGltZW1vcnksIG9zcCwgYnVmICsgMiwgMjU2LCAmcmxlbiwgKGNvbnN0IGJ5dGUgKiopJmJ1ZnB0cik7CisgICAgICAgICAgICAgaWYgKGNvZGUgPCAwKSB7CisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVua25vd25zdHIgPSAiLS11bmtub3duLS0iOworICAgICAgICAgICAgICAgICBybGVuID0gc3RybGVuKHVua25vd25zdHIpOworICAgICAgICAgICAgICAgICBtZW1jcHkoYnVmLCB1bmtub3duc3RyLCBybGVuKTsKKysgICAgICAgICAgICAgICAgYnVmcHRyID0gYnVmOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIHsKKy0gICAgICAgICAgICAgICAgYnVmWzBdID0gYnVmWzFdID0gYnVmW3JsZW4gKyAyXSA9IGJ1ZltybGVuICsgM10gPSAnLSc7CistICAgICAgICAgICAgICAgIHJsZW4gKz0gNDsKKysgICAgICAgICAgICAgICAgcmVmICp0b2JqOworKyAgICAgICAgICAgICAgICBidWZwdHJbcmxlbl0gPSAnXDAnOworKyAgICAgICAgICAgICAgICAvKiBPbmx5IHBhc3MgYSBuYW1lIG9iamVjdCBpZiB0aGUgb3BlcmF0b3IgZG9lc24ndCBleGlzdCBpbiBzeXN0ZW1kaWN0CisrICAgICAgICAgICAgICAgICAqIGkuZS4gaXQncyBhbiBpbnRlcm5hbCBvcGVyYXRvciB3ZSBoYXZlIGhpZGRlbgorKyAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgY29kZSA9IGRpY3RfZmluZF9zdHJpbmcoc3lzdGVtZGljdCwgKGNvbnN0IGNoYXIgKilidWZwdHIsICZ0b2JqKTsKKysgICAgICAgICAgICAgICAgaWYgKGNvZGUgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICBidWZbMF0gPSBidWZbMV0gPSBidWZbcmxlbiArIDJdID0gYnVmW3JsZW4gKyAzXSA9ICctJzsKKysgICAgICAgICAgICAgICAgICAgIHJsZW4gKz0gNDsKKysgICAgICAgICAgICAgICAgICAgIGJ1ZnB0ciA9IGJ1ZjsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgIGJ1ZnB0ciA9IE5VTEw7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGJ1ZnB0cikgeworKyAgICAgICAgICAgICAgICBjb2RlID0gbmFtZV9yZWYoaW1lbW9yeSwgYnVmLCBybGVuLCBvc3AsIDEpOworKyAgICAgICAgICAgICAgICBpZiAoY29kZSA8IDApCisrICAgICAgICAgICAgICAgICAgICBtYWtlX251bGwob3NwKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgY29kZSA9IG5hbWVfcmVmKGltZW1vcnksIGJ1Ziwgcmxlbiwgb3NwLCAxKTsKKy0gICAgICAgICAgICBpZiAoY29kZSA8IDApCistICAgICAgICAgICAgICAgIG1ha2VfbnVsbChvc3ApOworICAgICAgICAgfQorICAgICB9CisgICAgIGdvdG8gYWdhaW47CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDUtQnVnLTY5OTkzOC0ubG9hZGZvbnRsb29wLW11c3QtYmUtYW4tb3BlcmF0b3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA1LUJ1Zy02OTk5MzgtLmxvYWRmb250bG9vcC1tdXN0LWJlLWFuLW9wZXJhdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MjRiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA1LUJ1Zy02OTk5MzgtLmxvYWRmb250bG9vcC1tdXN0LWJlLWFuLW9wZXJhdG9yLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZjBhNjE2NzlkMjhiYzE1NjE2NDA0MDNkOTI0OTJlMTk5YmMxYzBmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+CitEYXRlOiBXZWQsIDEwIE9jdCAyMDE4IDIzOjI1OjUxICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBCdWcgNjk5OTM4OiAubG9hZGZvbnRsb29wIG11c3QgYmUgYW4gb3BlcmF0b3IKKworSW4gdGhlIGZpeCBmb3IgQnVnIDY5OTgxNiwgSSBvbWl0dGVkIHRvIG1ha2UgLmxvYWRmb250bG9vcCBpbnRvIGFuIG9wZXJhdG9yLCB0bworYmV0dGVyIGhpZGUgLmZvcmNldW5kZWYgYW5kIC5wdXRnc3RyaW5nY29weS4KKworQ1ZFOiBDVkUtMjAxOC0xNzk2MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMKK2luZGV4IDg5YzNhYjcuLjcyZmVmZjIgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCitAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgJGVycm9yIC9TdWJzdGl0dXRlRm9udCB7IH0gcHV0CisgCisgICAgIH0gbG9vcCAgICAgICAgICAgICAgJSBlbmQgb2YgbG9vcAorIAorLSB9IGJpbmQgZXhlY3V0ZW9ubHkgZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAucHV0Z3N0cmluZ2NvcHkKKysgfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5wdXRnc3RyaW5nY29weQorIAorIGN1cnJlbnRkaWN0IC8ucHV0Z3N0cmluZ2NvcHkgLnVuZGVmCisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDYtVW5kZWZpbmUtc29tZS1hZGRpdGlvbmFsLWludGVybmFsLW9wZXJhdG9ycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2ZpbGVzLzAwMDYtVW5kZWZpbmUtc29tZS1hZGRpdGlvbmFsLWludGVybmFsLW9wZXJhdG9ycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWNmN2NjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNi1VbmRlZmluZS1zb21lLWFkZGl0aW9uYWwtaW50ZXJuYWwtb3BlcmF0b3JzLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gMzdkN2M5MTE3YjcwZTc1ZWJlZDIxYzZjODE5MjI1MWYxMjdjMGZiMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hbmN5IER1cmdpbiA8bmFuY3kuZHVyZ2luQGFydGlmZXguY29tPgorRGF0ZTogTW9uLCA1IE5vdiAyMDE4IDE1OjM2OjI3ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVbmRlZmluZSBzb21lIGFkZGl0aW9uYWwgaW50ZXJuYWwgb3BlcmF0b3JzLgorCisudHlwZSwgLndyaXRlY3ZzLCAuc2V0U01hc2ssIC5jdXJyZW50U01hc2sKKworVGhlc2UgZG9uJ3Qgc2VlbSB0byBiZSByZWZlcmVuY2VkIGFueXdoZXJlIG91dHNpZGUgb2YgdGhlIGluaXRpYWxpemF0aW9uIGNvZGUsCit3aGljaCBiaW5kcyB0aGVpciB1c2FnZXMuICBQYXNzZXMgY2x1c3RlciBpZiB0aGV5IGFyZSByZW1vdmVkLgorCitDVkU6IENWRS0yMDE4LTE4MDczCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKK2luZGV4IGY5NTJmMzIuLjdjNzFkMTggMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworQEAgLTIyMzAsNiArMjIzMCw3IEBAIFNBRkVSIHsgLnNldHNhZmVnbG9iYWwgfSBpZgorICAgLy5sb2NhbHZtYXJyYXkgLy5sb2NhbHZtZGljdCAvLmxvY2Fsdm1wYWNrZWRhcnJheSAvLmxvY2Fsdm1zdHJpbmcgLy5zeXN0ZW12bWFycmF5IC8uc3lzdGVtdm1kaWN0IC8uc3lzdGVtdm1wYWNrZWRhcnJheSAvLnN5c3RlbXZtc3RyaW5nIC8uc3lzdGVtdm1maWxlIC8uc3lzdGVtdm1saWJmaWxlCisgICAvLnN5c3RlbXZtU0ZEIC8uc2V0dHJhcHBhcmFtcyAvLmN1cnJlbnRzeXN0ZW1wYXJhbXMgLy5jdXJyZW50dXNlcnBhcmFtcyAvLmdldHN5c3RlbXBhcmFtIC8uZ2V0dXNlcnBhcmFtIC8uc2V0c3lzdGVtcGFyYW1zIC8uc2V0dXNlcnBhcmFtcworICAgLy5jaGVja3Bhc3N3b3JkIC8ubG9jYWxlX3RvX3V0ZjggLy5jdXJyZW50Z2xvYmFsIC8uZ2NoZWNrIC8uaW1hZ2VwYXRoCisrICAvLnR5cGUgLy53cml0ZWN2cyAvLnNldFNNYXNrIC8uY3VycmVudFNNYXNrCisgCisgICAlIFVzZWQgYnkgYSBmcmVlIHVzZXIgaW4gdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3MuIEFwcGFyZW50bHkgdGhpcyBpcyB1c2VkIHRvCisgICAlIGRyYXcgYSBwYXJ0aWFsIHBhZ2UsIHdoaWNoIGlzIHRoZW4gZmlsbGVkIGluIGJ5IHRoZSByZXN1bHRzIG9mIGEgYmFyY29kZQorQEAgLTIyNDgsNyArMjI0OSw3IEBAIFNBRkVSIHsgLnNldHNhZmVnbG9iYWwgfSBpZgorICAgJSB0ZXN0IGZpbGVzL3V0aWxpdGllcywgb3IgZW5naW5lZXJzIGV4cHJlc3NlZCBhIGRlc2lyZSB0byBrZWVwIHRoZW0gdmlzaWJsZS4KKyAgICUKKyAgICUvY3VycmVudGRldmljZSAvLnNvcnQgLy5idWlsZGZvbnQwIC8uYnVpbGRmb250MSAvLmJ1aWxkZm9udDIgLy5idWlsZGZvbnQzIC8uYnVpbGRmb250NCAvLmJ1aWxkZm9udDkgLy5idWlsZGZvbnQxMCAvLmJ1aWxkZm9udDExCistICAlLy5idWlsZGZvdG4zMiAvLmJ1aWxkZm9udDQyIC8udHlwZTltYXBjaWQgLy50eXBlMTFtYXBjaWQgLy5zd2FwY29sb3JzCisrICAlLy5idWlsZGZvbnQzMiAvLmJ1aWxkZm9udDQyIC8udHlwZTltYXBjaWQgLy50eXBlMTFtYXBjaWQgLy5zd2FwY29sb3JzCisgICAlL2N1cnJlbnRkZXZpY2UgIC8ucXVpdCAvLnNldHVzZWNpZWNvbG9yIC8ubmVlZGlucHV0IC8uc2V0b3ZlcnByaW50bW9kZSAvLnNwZWNpYWxfb3AgLy5kaWN0dG9tYXJrIC8ua25vd25nZXQKKyAgICUvLkZBUElhdmFpbGFibGUgLy5GQVBJcGFzc2ZvbnQgLy5GQVBJcmVidWlsZGZvbnQgLy5GQVBJQnVpbGRHbHlwaCAvLkZBUElCdWlsZENoYXIgLy5GQVBJQnVpbGRHbHlwaDkKKyAgICUvLnRlbXBmaWxlIC8ubnVtaWNjX2NvbXBvbmVudHMgLy5zZXRfb3V0cHV0aW50ZW50ICAvLm1heCAvLm1pbiAvLnZtcmVjbGFpbSAvLmdldHBhdGggLy5zZXRnbG9iYWwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNy1CdWctNjk5OTI3LWRvbi10LWluY2x1ZGUtb3BlcmF0b3ItYXJyYXlzLWluLWV4ZWNzdGFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwNy1CdWctNjk5OTI3LWRvbi10LWluY2x1ZGUtb3BlcmF0b3ItYXJyYXlzLWluLWV4ZWNzdGFjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNjZmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA3LUJ1Zy02OTk5MjctZG9uLXQtaW5jbHVkZS1vcGVyYXRvci1hcnJheXMtaW4tZXhlY3N0YWMucGF0Y2gKQEAgLTAsMCArMSwxOTcgQEAKK0Zyb20gNDMwZjM5MTQ0MjQ0YmE0ZmQ3YjcyMGNmODcwMzFlNDE1ZTBmYWJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+CitEYXRlOiBNb24sIDUgTm92IDIwMTggMTU6NDI6NTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEJ1ZyA2OTk5Mjc6IGRvbid0IGluY2x1ZGUgb3BlcmF0b3IgYXJyYXlzIGluIGV4ZWNzdGFjaworIG91dHB1dAorCitXaGVuIHdlIHRyYW5zZmVyIHRoZSBjb250ZW50cyBvZiB0aGUgZXhlY3V0aW9uIHN0YWNrIGludG8gdGhlIGFycmF5LCB0YWtlIHRoZQorZXh0cmEgc3RlcCBvZiByZXBsYWNpbmcgYW55IG9wZXJhdG9yIGFycmF5cyBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgb3BlcmF0b3IKK3RoYXQgcmVmZXJlbmNlIHRoZW0uCisKK1RoaXMgcHJldmVudHMgdGhlIGNvbnRlbnRzIG9mIFBvc3RzY3JpcHQgZGVmaW5lZCwgaW50ZXJuYWwgb25seSBvcGVyYXRvcnMgKHRob3NlCitjcmVhdGVkIHdpdGggLm1ha2VvcGVyYXRvcikgYmVpbmcgZXhwb3NlZCB2aWEgZXhlY3N0YWNrIChhbmQgdGh1cywgdmlhIGVycm9yCitoYW5kbGluZykuCisKK1RoaXMgbmVjZXNzaXRhdGVzIGEgY2hhbmdlIGluIHRoZSByZXNvdXJjZSByZW1hcHBpbmcgJ3Jlc291cmNlJywgd2hpY2ggY29udGFpbnMKK2EgcHJvY2VkdXJlIHdoaWNoIHJlbGllcyBvbiB0aGUgY29udGVudHMgb2YgdGhlIG9wZXJhdG9ycyBhcnJheXMgYmVpbmcgcHJlc2VudC4KK0FzIHdlIGFscmVhZHkgaGFkIGludGVybmFsLW9ubHkgdmFyaWFudHMgb2YgY291bnRleGVjc3RhY2sgYW5kIGV4ZWNzdGFjaworKC5jb3VudGV4ZWNzdGFjayBhbmQgLmV4ZWNzdGFjaykgLSB1c2luZyB0aG9zZSwgYW5kIGxlYXZpbmcgdGhpZXIgb3BlcmF0aW9uCitpbmNsdWRpbmcgdGhlIG9wZXJhdG9yIGFycmF5cyBtZWFucyB0aGUgcHJvY2VkdXJlIGNvbnRpbnVlcyB0byB3b3JrIGNvcnJlY3RseS4KKworQm90aCAuY291bnRleGVjc3RhY2sgYW5kIC5leGVjc3RhY2sgYXJlIHVuZGVmaW5lZCBhZnRlciBpbml0aWFsaXphdGlvbi4KKworQWxzbywgd2hlbiB3ZSBzdG9yZSB0aGUgZXhlY3N0YWNrIChvciBwYXJ0IHRoZXJlb2YpIGZvciBhbiBleGVjc3RhY2tvdmVyZmxvdworZXJyb3IsIG1ha2UgdGhlIHNhbWUgb3BhcnJheS9vcGVyYXRvciBzdWJzdGl0dXRpb24gYXMgYWJvdmUgZm9yIGV4ZWNzdGFjay4KKworQ1ZFOiBDVkUtMjAxOC0xODA3MworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgIHwgIDQgKystLQorIFJlc291cmNlL0luaXQvZ3NfcmVzbXAucHMgfCAgMiArLQorIHBzaS9pbnQubWFrICAgICAgICAgICAgICAgfCAgMiArLQorIHBzaS9pbnRlcnAuYyAgICAgICAgICAgICAgfCAxNCArKysrKysrKysrKy0tLQorIHBzaS9pbnRlcnAuaCAgICAgICAgICAgICAgfCAgMiArKworIHBzaS96Y29udHJvbC5jICAgICAgICAgICAgfCAxMyArKysrKysrKysrLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworaW5kZXggN2M3MWQxOC4uZjRjMTA1MyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzCitAQCAtMjE5MSw3ICsyMTkxLDcgQEAgU0FGRVIgeyAuc2V0c2FmZWdsb2JhbCB9IGlmCisgICAlJSBidXQgY2FuIGJlIGVhc2lseSByZXN0b3JlZCAoanVzdCBkZWxldGUgdGhlIG5hbWUgZnJvbSB0aGUgbGlzdCBpbiB0aGUgYXJyYXkpLiBJbiBmdXR1cmUKKyAgICUlIHdlIG1heSByZW1vdmUgdGhlIG9wZXJhdG9yIGFuZCB0aGUgY29kZSBpbXBsZW1lbnRhdGlvbiBlbnRpcmVseS4KKyAgIFsKKy0gIC8uYml0YWRkIC8uY2hhcmJveHBhdGggLy5jb25kIC8uY291bnRleGVjc3RhY2sgLy5leGVjc3RhY2sgLy5ydW5hbmRoaWRlIC8ucG9wZGV2aWNlZmlsdGVyCisrICAvLmJpdGFkZCAvLmNoYXJib3hwYXRoIC8uY29uZCAvLnJ1bmFuZGhpZGUgLy5wb3BkZXZpY2VmaWx0ZXIKKyAgIC8uZXhlY2ZpbGUgLy5maWxlbmFtZXNwbGl0IC8uZmlsZV9uYW1lX3BhcmVudAorICAgLy5zZXRkZWZhdWx0bWF0cml4IC8uaXNwcm9jZmlsdGVyIC8udW5yZWFkIC8ucHNzdHJpbmdlbmNvZGUKKyAgIC8uYnVpbGRzYW1wbGVkZnVuY3Rpb24gLy5pc2VuY2FwZnVuY3Rpb24gLy5jdXJyZW50YWNjdXJhdGVjdXJ2ZXMgLy5jdXJyZW50Y3VydmVqb2luIC8uY3VycmVudGRhc2hhZGFwdCAvLmN1cnJlbnRkb3RsZW5ndGgKK0BAIC0yMjMwLDcgKzIyMzAsNyBAQCBTQUZFUiB7IC5zZXRzYWZlZ2xvYmFsIH0gaWYKKyAgIC8ubG9jYWx2bWFycmF5IC8ubG9jYWx2bWRpY3QgLy5sb2NhbHZtcGFja2VkYXJyYXkgLy5sb2NhbHZtc3RyaW5nIC8uc3lzdGVtdm1hcnJheSAvLnN5c3RlbXZtZGljdCAvLnN5c3RlbXZtcGFja2VkYXJyYXkgLy5zeXN0ZW12bXN0cmluZyAvLnN5c3RlbXZtZmlsZSAvLnN5c3RlbXZtbGliZmlsZQorICAgLy5zeXN0ZW12bVNGRCAvLnNldHRyYXBwYXJhbXMgLy5jdXJyZW50c3lzdGVtcGFyYW1zIC8uY3VycmVudHVzZXJwYXJhbXMgLy5nZXRzeXN0ZW1wYXJhbSAvLmdldHVzZXJwYXJhbSAvLnNldHN5c3RlbXBhcmFtcyAvLnNldHVzZXJwYXJhbXMKKyAgIC8uY2hlY2twYXNzd29yZCAvLmxvY2FsZV90b191dGY4IC8uY3VycmVudGdsb2JhbCAvLmdjaGVjayAvLmltYWdlcGF0aAorLSAgLy50eXBlIC8ud3JpdGVjdnMgLy5zZXRTTWFzayAvLmN1cnJlbnRTTWFzaworKyAgLy50eXBlIC8ud3JpdGVjdnMgLy5zZXRTTWFzayAvLmN1cnJlbnRTTWFzayAvLmNvdW50ZXhlY3N0YWNrIC8uZXhlY3N0YWNrCisgCisgICAlIFVzZWQgYnkgYSBmcmVlIHVzZXIgaW4gdGhlIExpYnJhcnkgb2YgQ29uZ3Jlc3MuIEFwcGFyZW50bHkgdGhpcyBpcyB1c2VkIHRvCisgICAlIGRyYXcgYSBwYXJ0aWFsIHBhZ2UsIHdoaWNoIGlzIHRoZW4gZmlsbGVkIGluIGJ5IHRoZSByZXN1bHRzIG9mIGEgYmFyY29kZQorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfcmVzbXAucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3Jlc21wLnBzCitpbmRleCA3Y2FjYWY4Li45YmI0MjYzIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19yZXNtcC5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19yZXNtcC5wcworQEAgLTE4Myw3ICsxODMsNyBAQCBzZXRwYWNraW5nCisgICAlIFdlIGRvbid0IGNoZWNrIHRoZW0uCisgCisgICBjdXJyZW50Z2xvYmFsIC8vZmFsc2Ugc2V0Z2xvYmFsICAgICAgICAgICAgICAgICAgJSA8b2JqZWN0PiBiR2xvYmFsCistICBjb3VudGV4ZWNzdGFjayBhcnJheSBleGVjc3RhY2sgICAgICAgICAgICAgICAgICAgJSA8b2JqZWN0PiBiR2xvYmFsIFtleGVjc3RhY2tdCisrICAvL2ZhbHNlIC5jb3VudGV4ZWNzdGFjayBhcnJheSAvL2ZhbHNlIC5leGVjc3RhY2sgJSA8b2JqZWN0PiBiR2xvYmFsIFtleGVjc3RhY2tdCisgICBkdXAgLy9udWxsIGV4Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSA8b2JqZWN0PiBiR2xvYmFsIFtleGVjc3RhY2tdIG51bGwgW2V4ZWNzdGFja10KKyAgIGxlbmd0aCAzIHN1YiAtMSAwIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIDxvYmplY3Q+IGJHbG9iYWwgW2V4ZWNzdGFja10gbnVsbCBpCisgICAgIDIgaW5kZXggZXhjaCBnZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSA8b2JqZWN0PiBiR2xvYmFsIFtleGVjc3RhY2tdIG51bGwgcHJvYworZGlmZiAtLWdpdCBhL3BzaS9pbnQubWFrIGIvcHNpL2ludC5tYWsKK2luZGV4IDVkOWIzZDUuLjZhYjViZjAgMTAwNjQ0CistLS0gYS9wc2kvaW50Lm1haworKysrIGIvcHNpL2ludC5tYWsKK0BAIC0zMjMsNyArMzIzLDcgQEAgJChQU09CSil6YXJyYXkuJChPQkopIDogJChQU1NSQyl6YXJyYXkuYyAkKE9QKSAkKG1lbW9yeV9faClcCisgCisgJChQU09CSil6Y29udHJvbC4kKE9CSikgOiAkKFBTU1JDKXpjb250cm9sLmMgJChPUCkgJChzdHJpbmdfX2gpXAorICAkKGVzdGFja19oKSAkKGZpbGVzX2gpICQoaXBhY2tlZF9oKSAkKGl1dGlsX2gpICQoc3RvcmVfaCkgJChzdHJlYW1faClcCistICQoSU5UX01BSykgJChNQUtFRElSUykKKysgJChpbnRlcnBfaCkgJChJTlRfTUFLKSAkKE1BS0VESVJTKQorIAkkKFBTQ0MpICQoUFNPXyl6Y29udHJvbC4kKE9CSikgJChDXykgJChQU1NSQyl6Y29udHJvbC5jCisgCisgJChQU09CSil6ZGljdC4kKE9CSikgOiAkKFBTU1JDKXpkaWN0LmMgJChPUClcCitkaWZmIC0tZ2l0IGEvcHNpL2ludGVycC5jIGIvcHNpL2ludGVycC5jCitpbmRleCBiNzA3NjlkLi42ZGMwZGRhIDEwMDY0NAorLS0tIGEvcHNpL2ludGVycC5jCisrKysgYi9wc2kvaW50ZXJwLmMKK0BAIC0xNDIsNyArMTQyLDYgQEAgc3RhdGljIGludCBvcGFycmF5X3BvcChpX2N0eF90ICopOworIHN0YXRpYyBpbnQgb3BhcnJheV9jbGVhbnVwKGlfY3R4X3QgKik7Cisgc3RhdGljIGludCB6ZXJyb3JleGVjKGlfY3R4X3QgKik7Cisgc3RhdGljIGludCB6ZmluZGVycm9yb2JqZWN0KGlfY3R4X3QgKik7Cistc3RhdGljIGludCBlcnJvcmV4ZWNfZmluZChpX2N0eF90ICosIHJlZiAqKTsKKyBzdGF0aWMgaW50IGVycm9yZXhlY19wb3AoaV9jdHhfdCAqKTsKKyBzdGF0aWMgaW50IGVycm9yZXhlY19jbGVhbnVwKGlfY3R4X3QgKik7Cisgc3RhdGljIGludCB6c2V0c3RhY2twcm90ZWN0KGlfY3R4X3QgKik7CitAQCAtNzYxLDcgKzc2MCw3IEBAIGNvcHlfc3RhY2soaV9jdHhfdCAqaV9jdHhfcCwgY29uc3QgcmVmX3N0YWNrX3QgKiBwc3RhY2ssIGludCBza2lwLCByZWYgKiBhcnIpCisgeworICAgICB1aW50IHNpemUgPSByZWZfc3RhY2tfY291bnQocHN0YWNrKSAtIHNraXA7CisgICAgIHVpbnQgc2F2ZV9zcGFjZSA9IGlhbGxvY19zcGFjZShpZG1lbW9yeSk7CistICAgIGludCBjb2RlOworKyAgICBpbnQgY29kZSwgaTsKKyAKKyAgICAgaWYgKHNpemUgPiA2NTUzNSkKKyAgICAgICAgIHNpemUgPSA2NTUzNTsKK0BAIC03NzAsNiArNzY5LDE1IEBAIGNvcHlfc3RhY2soaV9jdHhfdCAqaV9jdHhfcCwgY29uc3QgcmVmX3N0YWNrX3QgKiBwc3RhY2ssIGludCBza2lwLCByZWYgKiBhcnIpCisgICAgIGlmIChjb2RlID49IDApCisgICAgICAgICBjb2RlID0gcmVmX3N0YWNrX3N0b3JlKHBzdGFjaywgYXJyLCBzaXplLCAwLCAxLCB0cnVlLCBpZG1lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvcHlfc3RhY2siKTsKKysgICAgLyogSWYgd2UgYXJlIGNvcHlpbmcgdGhlIGV4ZWMgc3RhY2ssIHRyeSB0byByZXBsYWNlIGFueSBvcGFycmF5cyB3aXRoCisrICAgICAqIHdpdGggdGhlIG9wZXJhdG9yIHRoYW4gcmVmZXJlbmNlcyB0aGVtCisrICAgICAqLworKyAgICBpZiAocHN0YWNrID09ICZlX3N0YWNrKSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisrICAgICAgICAgICAgaWYgKGVycm9yZXhlY19maW5kKGlfY3R4X3AsICZhcnItPnZhbHVlLnJlZnNbaV0pIDwgMCkKKysgICAgICAgICAgICAgICAgbWFrZV9udWxsKCZhcnItPnZhbHVlLnJlZnNbaV0pOworKyAgICAgICAgfQorKyAgICB9CisgICAgIGlhbGxvY19zZXRfc3BhY2UoaWRtZW1vcnksIHNhdmVfc3BhY2UpOworICAgICByZXR1cm4gY29kZTsKKyB9CitAQCAtMTkzNCw3ICsxOTQyLDcgQEAgemZpbmRlcnJvcm9iamVjdChpX2N0eF90ICppX2N0eF9wKQorICAqIC5lcnJvcmV4ZWMgd2l0aCBlcnJvYmogIT0gbnVsbCwgc3RvcmUgaXQgaW4gKnBlcnJvcl9vYmplY3QgYW5kIHJldHVybiAxLAorICAqIG90aGVyd2lzZSByZXR1cm4gMDsKKyAgKi8KKy1zdGF0aWMgaW50CisraW50CisgZXJyb3JleGVjX2ZpbmQoaV9jdHhfdCAqaV9jdHhfcCwgcmVmICpwZXJyb3Jfb2JqZWN0KQorIHsKKyAgICAgbG9uZyBpOworZGlmZiAtLWdpdCBhL3BzaS9pbnRlcnAuaCBiL3BzaS9pbnRlcnAuaAoraW5kZXggZTkyNzViOS4uNGY1NTFkMSAxMDA2NDQKKy0tLSBhL3BzaS9pbnRlcnAuaAorKysrIGIvcHNpL2ludGVycC5oCitAQCAtOTEsNSArOTEsNyBAQCB2b2lkIGdzX2ludGVycF9yZXNldChpX2N0eF90ICppX2N0eF9wKTsKKyAvKiBEZWZpbmUgdGhlIHRvcC1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIGludGVycHJldGVyLiAqLworIGludCBnc19pbnRlcnByZXQoaV9jdHhfdCAqKnBpX2N0eF9wLCByZWYgKiBwcmVmLCBpbnQgdXNlcl9lcnJvcnMsCisgICAgICAgICAgICAgICAgICBpbnQgKnBleGl0X2NvZGUsIHJlZiAqIHBlcnJvcl9vYmplY3QpOworK2ludAorK2Vycm9yZXhlY19maW5kKGlfY3R4X3QgKmlfY3R4X3AsIHJlZiAqcGVycm9yX29iamVjdCk7CisgCisgI2VuZGlmIC8qIGludGVycF9JTkNMVURFRCAqLworZGlmZiAtLWdpdCBhL3BzaS96Y29udHJvbC5jIGIvcHNpL3pjb250cm9sLmMKK2luZGV4IDM2ZGEyMmMuLjAzNjJjZjQgMTAwNjQ0CistLS0gYS9wc2kvemNvbnRyb2wuYworKysrIGIvcHNpL3pjb250cm9sLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgImlwYWNrZWQuaCIKKyAjaW5jbHVkZSAiaXV0aWwuaCIKKyAjaW5jbHVkZSAic3RvcmUuaCIKKysjaW5jbHVkZSAiaW50ZXJwLmgiCisgCisgLyogRm9yd2FyZCByZWZlcmVuY2VzICovCisgc3RhdGljIGludCBjaGVja19mb3JfZXhlYyhjb25zdF9vc19wdHIpOworQEAgLTc4Nyw3ICs3ODgsNyBAQCB6ZXhlY3N0YWNrMihpX2N0eF90ICppX2N0eF9wKQorIC8qIENvbnRpbnVhdGlvbiBvcGVyYXRvciB0byBkbyB0aGUgYWN0dWFsIHRyYW5zZmVyLiAqLworIC8qIHJfc2l6ZShvcDEpIHdhcyBzZXQganVzdCBhYm92ZS4gKi8KKyBzdGF0aWMgaW50CistZG9fZXhlY3N0YWNrKGlfY3R4X3QgKmlfY3R4X3AsIGJvb2wgaW5jbHVkZV9tYXJrcywgb3NfcHRyIG9wMSkKKytkb19leGVjc3RhY2soaV9jdHhfdCAqaV9jdHhfcCwgYm9vbCBpbmNsdWRlX21hcmtzLCBib29sIGluY2x1ZGVfb3BhcnJheXMsIG9zX3B0ciBvcDEpCisgeworICAgICBvc19wdHIgb3AgPSBvc3A7CisgICAgIHJlZiAqYXJlZnMgPSBvcDEtPnZhbHVlLnJlZnM7CitAQCAtODI5LDYgKzgzMCwxMiBAQCBkb19leGVjc3RhY2soaV9jdHhfdCAqaV9jdHhfcCwgYm9vbCBpbmNsdWRlX21hcmtzLCBvc19wdHIgb3AxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4odG5hbWUpLCAoY29uc3QgYnl0ZSAqKXRuYW1lKTsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNhc2UgdF9hcnJheToKKysgICAgICAgICAgICBjYXNlIHRfc2hvcnRhcnJheToKKysgICAgICAgICAgICBjYXNlIHRfbWl4ZWRhcnJheToKKysgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlX29wYXJyYXlzICYmIGVycm9yZXhlY19maW5kKGlfY3R4X3AsIHJxKSA8IDApCisrICAgICAgICAgICAgICAgICAgICBtYWtlX251bGwocnEpOworKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICA7CisgICAgICAgICB9CitAQCAtODQxLDE0ICs4NDgsMTQgQEAgZXhlY3N0YWNrX2NvbnRpbnVlKGlfY3R4X3QgKmlfY3R4X3ApCisgeworICAgICBvc19wdHIgb3AgPSBvc3A7CisgCistICAgIHJldHVybiBkb19leGVjc3RhY2soaV9jdHhfcCwgZmFsc2UsIG9wKTsKKysgICAgcmV0dXJuIGRvX2V4ZWNzdGFjayhpX2N0eF9wLCBmYWxzZSwgZmFsc2UsIG9wKTsKKyB9Cisgc3RhdGljIGludAorIGV4ZWNzdGFjazJfY29udGludWUoaV9jdHhfdCAqaV9jdHhfcCkKKyB7CisgICAgIG9zX3B0ciBvcCA9IG9zcDsKKyAKKy0gICAgcmV0dXJuIGRvX2V4ZWNzdGFjayhpX2N0eF9wLCBvcC0+dmFsdWUuYm9vbHZhbCwgb3AgLSAxKTsKKysgICAgcmV0dXJuIGRvX2V4ZWNzdGFjayhpX2N0eF9wLCBvcC0+dmFsdWUuYm9vbHZhbCwgdHJ1ZSwgb3AgLSAxKTsKKyB9CisgCisgLyogLSAubmVlZGlucHV0IC0gKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwOC1NYWtlLS5mb3JjZXB1dC11bmF2YWlsYWJsZS1mcm9tLS5wb2xpY3lwcm9jcy1oZWxwZXItLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvMDAwOC1NYWtlLS5mb3JjZXB1dC11bmF2YWlsYWJsZS1mcm9tLS5wb2xpY3lwcm9jcy1oZWxwZXItLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYzUxNjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy8wMDA4LU1ha2UtLmZvcmNlcHV0LXVuYXZhaWxhYmxlLWZyb20tLnBvbGljeXByb2NzLWhlbHBlci0ucGF0Y2gKQEAgLTAsMCArMSwyNDUgQEAKK0Zyb20gOTA5NmJlYWE0NDUxYzEyZGQyYTJjYWYwMDA2NThmYmFjNGE1YmNkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgorRGF0ZTogTW9uLCA1IE5vdiAyMDE4IDE1OjUxOjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgLmZvcmNlcHV0IHVuYXZhaWxhYmxlIGZyb20gJy5wb2xpY3lwcm9jcycgaGVscGVyCisgZGljdGlvbmFyeQorCitCdWcgIzY5OTYzICIxUG9saWN5IGlzIGEgZGFuZ2Vyb3VzIG9wZXJhdG9yLCBhbnkgY2FsbGVycyBzaG91bGQgYmUgb2RlZiIKKworTGVhdmluZyB0aGUgLnBvbGljeXByb2NzIGRpY3Rpb25hcnkgd2l0aCBhIHByb2NlZHVyZSB3aGljaCBpcyBhIHNpbXBsZQord3JhcHBlciBmb3IgLmZvcmNlcHV0IGVmZmVjdGl2ZWx5IGxlYXZlcyAuZm9yY2VwdXQgYXZhaWxhYmxlLgorCitJdCBzZWVtcyB0aGF0IHRoZSBvbmx5IHJlYXNvbiB0byBoYXZlIC5wb2xpY3lwcm9jcyBpcyB0byBtaW5pbWlzZSB0aGUKK2NvZGUgaW4gLmFwcGx5cG9saWNpZXMsIHNvIHdlIGNhbiByZW1vdmUgdGhlIGRpY3Rpb25hcnkgYW5kIHB1dCB0aGUKK2NvZGUgc3RyYWlnaHQgaW50byAuYXBwbHlwb2xpY2llcywgd2hpY2ggd2UgY2FuIHRoZW4gYmluZCBhbmQgbWFrZQorZXhlY3V0ZW9ubHksIHdoaWNoIGhpZGVzIHRoZSAuZm9yY2VwdXQuIEFsc28sIHNpbmNlIHdlIGRvbid0IG5lZWQKKy5hcHBseXBvbGljaWVzIGFmdGVyIHN0YXJ0dXAsIHdlIGNhbiB1bmRlZmluZSB0aGF0IGZyb20gc3lzdGVtZGljdCB0b28uCisKK1doaWxlIHdlJ3JlIGhlcmUsIHJldmlldyBhbGwgdGhlIHVzZXMgb2YgLmZvcmNlKiB0byBtYWtlIGNlcnRhaW4gdGhhdAordGhlcmUgYXJlIG5vIG90aGVyIHNpbWlsYXIgY2FzZXMuIFRoaXMgc2hvd2VkIGEgZmV3IHBsYWNlcyB3aGVyZSB3ZQoraGFkbid0IG1hZGUgYSBmdW5jdGlvbiBleGVjdXRlb25seSwgc28gZG8gdGhhdCB0b28uIEl0cyBwcm9iYWJseSBub3QKK3JlcXVpcmVkLCBzaW5jZSBJJ20gcmVhc29uYWJseSBzdXJlIGl0cyBpbXBvc3NpYmxlIHRvIGxvYWQgdGhvc2UKK2Z1bmN0aW9ucyBhcyBwYWNrZWQgYXJyYXlzICh0aGV5IGFyZSBhbGwgZGVmaW5lZCBhcyBvcGVyYXRvcnMpLCBidXQgbGV0cworaGF2ZSBhIGJlbHQgYW5kIGJyYWNlcyBhcHByb2FjaCwgdGhlIGFkZGl0aW9uYWwgdGltZSBjb3N0IGlzIG5lZ2xpZ2libGUuCisKK0NWRTogQ1ZFLTIwMTgtMTgyODQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzIHwgICAyICstCisgUmVzb3VyY2UvSW5pdC9nc19kcHMucHMgICB8ICAgMiArLQorIFJlc291cmNlL0luaXQvZ3NfZXBzZi5wcyAgfCAgIDIgKy0KKyBSZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzIHwgICA0ICstCisgUmVzb3VyY2UvSW5pdC9nc19pbml0LnBzICB8ICAgMiArLQorIFJlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2Rpc2tuLnBzIGIvUmVzb3VyY2UvSW5pdC9nc19kaXNrbi5wcworaW5kZXggMjZlYzBiNS4uZmQ2OTRiYyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfZGlza24ucHMKK0BAIC02MSw3ICs2MSw3IEBAIHN5c3RlbWRpY3QgYmVnaW4KKyAgICUgZG9lc24ndCBnZXQgcnVuIGVub3VnaCB0byBqdXN0aWZ5IHRoZSBjb21wbGljYXRpb24KKyAgIC8vLnB1dGRldnBhcmFtcworICAgLy9zeXN0ZW1kaWN0IC8uc2VhcmNoYWJsZWRldnMgLmZvcmNldW5kZWYKKy19IC5iaW5kIG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXVuZGVmCisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuIGZvciAuZm9yY2V1bmRlZgorIAorICUgLS0tLS0tIGV4dGVuZCBmaWxlbmFtZWZvcmFsbCB0byBoYW5kbGUgd2lsZGNhcmRzIGluICVkZXYlIHBhcnQgb2YgcGF0dGVybiAtLS0tLS0tJQorIC9maWxlbmFtZWZvcmFsbCB7CitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19kcHMucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcworaW5kZXggZGFmN2IwZi4uMDBjMTRkNSAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZHBzLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX2Rwcy5wcworQEAgLTEyNCw3ICsxMjQsNyBAQAorICAgL3NhdmVkaW5pdGlhbGdzdGF0ZSAuc3lzdGVtdmFyIHNldGdzdGF0ZSBnc2F2ZQorICAgICAgICAgICAgICAgICAlIFdyYXAgdXAuCisgICBlbmQgLnNldGdsb2JhbAorLX0gb2RlZgorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisgCisgJSBDaGVjayB3aGV0aGVyIGFuIG9iamVjdCBpcyBhIHByb2NlZHVyZS4KKyAvLnByb2NjaGVjayB7CQkJJSA8b2JqPiAucHJvY2NoZWNrIDxib29sPgorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZXBzZi5wcyBiL1Jlc291cmNlL0luaXQvZ3NfZXBzZi5wcworaW5kZXggZTQwMzdkOS4uMmQwZjY3NyAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfZXBzZi5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19lcHNmLnBzCitAQCAtMzEsNyArMzEsNyBAQAorIC9FUFNCb3VuZGluZ0JveFN0YXRlIDUgZGVmCisgL0VQU0JvdW5kaW5nQm94U2V0U3RhdGUgeworICAgLy9zeXN0ZW1kaWN0IC9FUFNCb3VuZGluZ0JveFN0YXRlIDMgLTEgcm9sbCAuZm9yY2VwdXQKKy19IC5iaW5kIG9kZWYgJSAuZm9yY2VwdXQgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuCisrfSAuYmluZCBleGVjdXRlb25seSBvZGVmICUgLmZvcmNlcHV0IG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbgorIAorICUgUGFyc2UgNCBudW1iZXJzIGZvciBhIGJvdW5kaW5nIGJveAorIC9FUFNCb3VuZGluZ0JveFBhcnNlIHsgJSAobGx4IGxseSB1cnggdXJ5KSAtLSBsbHggbGx5IHVyeCB1cnkgdHJ1ZSBPUiBmYWxzZQorZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvZ3NfZm9udHMucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2ZvbnRzLnBzCitpbmRleCA3MmZlZmYyLi44MDNmYWNhIDEwMDY0NAorLS0tIGEvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcworKysrIGIvUmVzb3VyY2UvSW5pdC9nc19mb250cy5wcworQEAgLTU4Myw3ICs1ODMsNyBAQCBidWlsZGZvbnRkaWN0IDMgLy5idWlsZGZvbnQzIGN2eCBwdXQKKyB9IGJpbmQgZGVmCisgLy5zZXRsb2FkaW5nZm9udCB7CisgICAgLy9zeXN0ZW1kaWN0IC8ubG9hZGluZ2ZvbnQgMyAtMSByb2xsIC5mb3JjZXB1dAorLX0gLmJpbmQgb2RlZiAlIC5mb3JjZXB1dCBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4KKyt9IC5iaW5kIGV4ZWN1dGVvbmx5IG9kZWYgJSAuZm9yY2VwdXQgbXVzdCBiZSBib3VuZCBhbmQgaGlkZGVuCisgLy5sb2FkZm9udAorICB7ICAgICAgICAgICAgICAlIFNvbWUgYnVnZ3kgZm9udHMgbGVhdmUgZXh0cmEganVuayBvbiB0aGUgc3RhY2ssCisgICAgICAgICAgICAgICAgICUgc28gd2UgaGF2ZSB0byBtYWtlIGEgY2xvc3VyZSB0aGF0IHJlY29yZHMgdGhlIHN0YWNrIGRlcHRoCitAQCAtMTAxMiw3ICsxMDEyLDcgQEAgJGVycm9yIC9TdWJzdGl0dXRlRm9udCB7IH0gcHV0CisgICAgIGR1cCBsZW5ndGggc3RyaW5nIGNvcHkKKyAgICAgLmZvcmNlcHV0IHNldGdsb2JhbAorICAgfSBpZmVsc2UKKy19IC5iaW5kIG9kZWYgJSBtdXN0IGJlIGJvdW5kIGFuZCBoaWRkZW4gZm9yIC5mb3JjZXB1dAorK30gLmJpbmQgZXhlY3V0ZW9ubHkgb2RlZiAlIG11c3QgYmUgYm91bmQgYW5kIGhpZGRlbiBmb3IgLmZvcmNlcHV0CisgCisgJSBBdHRlbXB0IHRvIGxvYWQgYSBmb250IGZyb20gYSBmaWxlLgorIC8udHJ5bG9hZGZvbnQgeyAgICAgICAgICUgPGZvbnRuYW1lPiAudHJ5bG9hZGZvbnQgPGZvbnQ+IHRydWUKK2RpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKK2luZGV4IGY0YzEwNTMuLjA3ZWU5NjggMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2luaXQucHMKKysrKyBiL1Jlc291cmNlL0luaXQvZ3NfaW5pdC5wcworQEAgLTIyMzAsNyArMjIzMCw3IEBAIFNBRkVSIHsgLnNldHNhZmVnbG9iYWwgfSBpZgorICAgLy5sb2NhbHZtYXJyYXkgLy5sb2NhbHZtZGljdCAvLmxvY2Fsdm1wYWNrZWRhcnJheSAvLmxvY2Fsdm1zdHJpbmcgLy5zeXN0ZW12bWFycmF5IC8uc3lzdGVtdm1kaWN0IC8uc3lzdGVtdm1wYWNrZWRhcnJheSAvLnN5c3RlbXZtc3RyaW5nIC8uc3lzdGVtdm1maWxlIC8uc3lzdGVtdm1saWJmaWxlCisgICAvLnN5c3RlbXZtU0ZEIC8uc2V0dHJhcHBhcmFtcyAvLmN1cnJlbnRzeXN0ZW1wYXJhbXMgLy5jdXJyZW50dXNlcnBhcmFtcyAvLmdldHN5c3RlbXBhcmFtIC8uZ2V0dXNlcnBhcmFtIC8uc2V0c3lzdGVtcGFyYW1zIC8uc2V0dXNlcnBhcmFtcworICAgLy5jaGVja3Bhc3N3b3JkIC8ubG9jYWxlX3RvX3V0ZjggLy5jdXJyZW50Z2xvYmFsIC8uZ2NoZWNrIC8uaW1hZ2VwYXRoCistICAvLnR5cGUgLy53cml0ZWN2cyAvLnNldFNNYXNrIC8uY3VycmVudFNNYXNrIC8uY291bnRleGVjc3RhY2sgLy5leGVjc3RhY2sKKysgIC8udHlwZSAvLndyaXRlY3ZzIC8uc2V0U01hc2sgLy5jdXJyZW50U01hc2sgLy5jb3VudGV4ZWNzdGFjayAvLmV4ZWNzdGFjayAvLmFwcGx5cG9saWNpZXMKKyAKKyAgICUgVXNlZCBieSBhIGZyZWUgdXNlciBpbiB0aGUgTGlicmFyeSBvZiBDb25ncmVzcy4gQXBwYXJlbnRseSB0aGlzIGlzIHVzZWQgdG8KKyAgICUgZHJhdyBhIHBhcnRpYWwgcGFnZSwgd2hpY2ggaXMgdGhlbiBmaWxsZWQgaW4gYnkgdGhlIHJlc3VsdHMgb2YgYSBiYXJjb2RlCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19zZXRwZC5wcyBiL1Jlc291cmNlL0luaXQvZ3Nfc2V0cGQucHMKK2luZGV4IGFmYjRmZmEuLjdjMDc2YWQgMTAwNjQ0CistLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3NldHBkLnBzCitAQCAtNjA5LDYgKzYwOSwyMyBAQCBOT01FRElBQVRUUlMgeworICUgYW5kIHdlIHJlcGxhY2UgdGhlIGtleSBpbiB0aGUgPG1lcmdlZD4gZGljdGlvbmFyeSB3aXRoIGl0cyBwcmlvciB2YWx1ZQorICUgKG9yIHJlbW92ZSBpdCBpZiBpdCBoYWQgbm8gcHJpb3IgdmFsdWUpLgorIAorKyUgVGhlc2UgcHJvY2VkdXJlcyBhcmUgY2FsbGVkIHdpdGggdGhlIGZvbGxvd2luZyBvbiB0aGUgc3RhY2s6CisrJSAgIDxvcmlnPiA8bWVyZ2VkPiA8ZmFpbGVkPiA8UG9saWNpZXM+IDxrZXk+IDxwb2xpY3k+CisrJSBUaGV5IGFyZSBleHBlY3RlZCB0byBjb25zdW1lIHRoZSB0b3AgMiBvcGVyYW5kcy4KKyslIE5PVEU6IHdlIGN1cnJlbnRseSB0cmVhdCBhbGwgdmFsdWVzIG90aGVyIHRoYW4gMCwgMSwgb3IgNyAoZm9yIFBhZ2VTaXplKQorKyUgdGhlIHNhbWUgYXMgMCwgaS5lLiwgd2Ugc2lnbmFsIGFuIGVycm9yLgorKy8wUG9saWN5IHsJCSUgU2V0IGVycm9yaW5mbyBhbmQgc2lnbmFsIGEgY29uZmlndXJhdGlvbmVycm9yLgorKyAgTk9NRURJQUFUVFJTIHsKKysgICAgJSBOT01FRElBQVRUUlMgbWVhbnMgdGhhdCB0aGUgZGVmYXVsdCBwb2xpY3kgaXMgNy4uLgorKyAgICBwb3AgMiBpbmRleCBleGNoIDcgcHV0CisrICB9IHsKKysgICAgcG9wIGR1cCA0IGluZGV4IGV4Y2ggZ2V0IDIgYXJyYXkgYXN0b3JlCisrICAgICRlcnJvciAvZXJyb3JpbmZvIDMgLTEgcm9sbCBwdXQKKysgICAgY2xlYXJ0b21hcmsKKysgICAgL3NldHBhZ2VkZXZpY2UgLnN5c3RlbXZhciAvY29uZmlndXJhdGlvbmVycm9yIHNpZ25hbGVycm9yCisrICB9IGlmZWxzZQorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisrCisgJSBNYWtpbmcgdGhpcyBhbiBvcGVyYXRvciBtZWFucyB3ZSBjYW4gcHJvcGVybHkgaGlkZQorICUgdGhlIGNvbnRlbnRzIC0gc3BlY2lmaWNhbGx5IC5mb3JjZXB1dAorIC8xUG9saWN5CitAQCAtNjE3LDU5ICs2MzQsNDYgQEAgTk9NRURJQUFUVFJTIHsKKyAgIFNFVFBEREVCVUcgeyAoUm9sbGluZyBiYWNrLikgPSBwc3RhY2sgZmx1c2ggfSBpZgorICAgMyBpbmRleCAyIGluZGV4IDMgLTEgcm9sbCAuZm9yY2VwdXQKKyAgIDQgaW5kZXggMSBpbmRleCAua25vd25nZXQKKy0gICB7IDQgaW5kZXggMyAxIHJvbGwgLmZvcmNlcHV0IH0KKy0gICB7IDMgaW5kZXggZXhjaCAudW5kZWYgfQorKyAgeyA0IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dCB9CisrICB7IDMgaW5kZXggZXhjaCAudW5kZWYgfQorICAgaWZlbHNlCisgfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKy0vLnBvbGljeXByb2NzIG1hcmsKKy0lIFRoZXNlIHByb2NlZHVyZXMgYXJlIGNhbGxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgb24gdGhlIHN0YWNrOgorLSUgICA8b3JpZz4gPG1lcmdlZD4gPGZhaWxlZD4gPFBvbGljaWVzPiA8a2V5PiA8cG9saWN5PgorLSUgVGhleSBhcmUgZXhwZWN0ZWQgdG8gY29uc3VtZSB0aGUgdG9wIDIgb3BlcmFuZHMuCistJSBOT1RFOiB3ZSBjdXJyZW50bHkgdHJlYXQgYWxsIHZhbHVlcyBvdGhlciB0aGFuIDAsIDEsIG9yIDcgKGZvciBQYWdlU2l6ZSkKKy0lIHRoZSBzYW1lIGFzIDAsIGkuZS4sIHdlIHNpZ25hbCBhbiBlcnJvci4KKy0lCistJSBNLiBTd2VldCwgRWFzeSBTb2Z0d2FyZSBQcm9kdWN0czoKKy0lCistJSBEZWZpbmUgTk9NRURJQUFUVFJTIHRvIHR1cm4gb2ZmIHRoZSBkZWZhdWx0IChidXQgdW5pbXBsZW1lbnRhYmxlKSBtZWRpYQorLSUgc2VsZWN0aW9uIHBvbGljaWVzIGZvciBzZXRwYWdlZGV2aWNlLiAgVGhpcyBpcyB1c2VkIGJ5IENVUFMgdG8gc3VwcG9ydAorLSUgdGhlIHN0YW5kYXJkIEFkb2JlIG1lZGlhIGF0dHJpYnV0ZXMuCistICAwIHsJCSUgU2V0IGVycm9yaW5mbyBhbmQgc2lnbmFsIGEgY29uZmlndXJhdGlvbmVycm9yLgorLSAgICAgIE5PTUVESUFBVFRSUyB7CistICAgICAgICAlIE5PTUVESUFBVFRSUyBtZWFucyB0aGF0IHRoZSBkZWZhdWx0IHBvbGljeSBpcyA3Li4uCistICAgICAgICBwb3AgMiBpbmRleCBleGNoIDcgcHV0CistICAgICAgfSB7CistICAgICAgICBwb3AgZHVwIDQgaW5kZXggZXhjaCBnZXQgMiBhcnJheSBhc3RvcmUKKy0gICAgICAgICRlcnJvciAvZXJyb3JpbmZvIDMgLTEgcm9sbCBwdXQKKy0gICAgICAgIGNsZWFydG9tYXJrCistICAgICAgICAvc2V0cGFnZWRldmljZSAuc3lzdGVtdmFyIC9jb25maWd1cmF0aW9uZXJyb3Igc2lnbmFsZXJyb3IKKy0gICAgICB9IGlmZWxzZQorLSAgfSBiaW5kCistICAxIC8xUG9saWN5IGxvYWQKKy0gIDcgewkJJSBGb3IgUGFnZVNpemUgb25seSwganVzdCBpbXBvc2UgdGhlIHJlcXVlc3QuCistICAgICAgICAxIGluZGV4IC9QYWdlU2l6ZSBlcQorLSAgICAgICAgIHsgcG9wIHBvcCAxIGluZGV4IC9QYWdlU2l6ZSA3IHB1dCB9CistICAgICAgICAgeyAucG9saWN5cHJvY3MgMCBnZXQgZXhlYyB9CistICAgICAgICBpZmVsc2UKKy0gIH0gYmluZAorLS5kaWN0dG9tYXJrIHJlYWRvbmx5IGRlZgorLWN1cnJlbnRkaWN0IC8xUG9saWN5IHVuZGVmCisrLzdQb2xpY3kgewkJJSBGb3IgUGFnZVNpemUgb25seSwganVzdCBpbXBvc2UgdGhlIHJlcXVlc3QuCisrICAxIGluZGV4IC9QYWdlU2l6ZSBlcQorKyAgeyBwb3AgcG9wIDEgaW5kZXggL1BhZ2VTaXplIDcgcHV0IH0KKysgIHsgLnBvbGljeXByb2NzIDAgZ2V0IGV4ZWMgfQorKyAgaWZlbHNlCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAvLmFwcGx5cG9saWNpZXMJCSUgPG9yaWc+IDxtZXJnZWQ+IDxmYWlsZWQ+IC5hcHBseXBvbGljaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgJSAgIDxvcmlnPiA8bWVyZ2VkJz4gPGZhaWxlZCc+CistIHsgMSBpbmRleCAvUG9saWNpZXMgZ2V0IDEgaW5kZXgKKy0gICAgeyB0eXBlIC9pbnRlZ2VydHlwZSBlcQorLSAgICAgICB7IHBvcAkJJSBhbHJlYWR5IHByb2Nlc3NlZAorLSAgICAgICB9CistICAgICAgIHsgMiBjb3B5IC5rbm93bmdldCBub3QgeyAxIGluZGV4IC9Qb2xpY3lOb3RGb3VuZCBnZXQgfSBpZgorLSAgICAgICAgICAgICAgICAgICAgICAgICUgU3RhY2s6IDxvcmlnPiA8bWVyZ2VkPiA8ZmFpbGVkPiA8UG9saWNpZXM+IDxrZXk+CistICAgICAgICAgICAgICAgICAgICAgICAgJSAgIDxwb2xpY3k+CistICAgICAgICAgLnBvbGljeXByb2NzIDEgaW5kZXggLmtub3duZ2V0IG5vdCB7IC5wb2xpY3lwcm9jcyAwIGdldCB9IGlmIGV4ZWMKKy0gICAgICAgfQorLSAgICAgIGlmZWxzZQorLSAgICB9CistICAgZm9yYWxsIHBvcAorLSB9IGJpbmQgZGVmCisreworKyAgMSBpbmRleCAvUG9saWNpZXMgZ2V0IDEgaW5kZXgKKysgIHsgdHlwZSAvaW50ZWdlcnR5cGUgZXEKKysgICAgIHsKKysgICAgICAgcG9wCQklIGFscmVhZHkgcHJvY2Vzc2VkCisrICAgICB9eworKyAgICAgICAyIGNvcHkgLmtub3duZ2V0IG5vdCB7IDEgaW5kZXggL1BvbGljeU5vdEZvdW5kIGdldCB9IGlmCisrICAgICAgICAgICAgICAgICAgICAgICUgU3RhY2s6IDxvcmlnPiA8bWVyZ2VkPiA8ZmFpbGVkPiA8UG9saWNpZXM+IDxrZXk+CisrICAgICAgICAgICAgICAgICAgICAgICUgICA8cG9saWN5PgorKyAgICAgICAgZHVwIDEgZXEgeworKyAgICAgICAgICAxUG9saWN5CisrICAgICAgICB9eworKyAgICAgICAgICBkdXAgNyBlcSB7CisrICAgICAgICAgICAgN1BvbGljeQorKyAgICAgICAgICB9eworKyAgICAgICAgICAgIDBQb2xpY3kKKysgICAgICAgICAgfSBpZmVsc2UKKysgICAgICAgIH0gaWZlbHNlCisrICAgICB9IGlmZWxzZQorKyAgfQorKyAgZm9yYWxsIHBvcAorK30gYmluZCBleGVjdXRlb25seSBvZGVmCisrCisrY3VycmVudGRpY3QgLzBQb2xpY3kgdW5kZWYKKytjdXJyZW50ZGljdCAvMVBvbGljeSB1bmRlZgorK2N1cnJlbnRkaWN0IC83UG9saWN5IHVuZGVmCisgCisgJSBQcmVwYXJlIHRvIHByZXNlbnQgcGFyYW1ldGVycyB0byB0aGUgZGV2aWNlLCBieSBzcHJlYWRpbmcgdGhlbSBvbnRvIHRoZQorICUgb3BlcmFuZCBzdGFjayBhbmQgcmVtb3ZpbmcgYW55IHRoYXQgc2hvdWxkbid0IGJlIHByZXNlbnRlZC4KK0BAIC0xMDA2LDcgKzEwMTAsNyBAQCBTRVRQRERFQlVHIHsgKEluc3RhbGxpbmcuKSA9IHBzdGFjayBmbHVzaCB9IGlmCisgICAgIC5wb3N0aW5zdGFsbAorICAgfSBpZmVsc2UKKyAgIHNldGdsb2JhbCAgICAgICAgICAgJSByZXR1cm4gdG8gb3JpZ2luYWwgVk0gYWxsb2NhdGlvbiBtb2RlCistfSBvZGVmCisrfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKKyAKKyAlIFdlIGJyZWFrIG91dCB0aGUgY29kZSBhZnRlciBjYWxsaW5nIHRoZSBJbnN0YWxsIHByb2NlZHVyZSBpbnRvIGEKKyAlIHNlcGFyYXRlIHByb2NlZHVyZSwgc2luY2UgaXQgaXMgZXhlY3V0ZWQgZXZlbiBpZiBJbnN0YWxsIGNhdXNlcyBhbiBlcnJvci4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZmlsZXMvZG8tbm90LWNoZWNrLWxvY2FsLWxpYnBuZy1zb3VyY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaAppbmRleCBjM2U0NGZlLi41ODM0ZmZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9maWxlcy9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNWVmOGI4NWJjOThmM2JkOWExNWQ1ZjQ3ZTI0ZDNlMjNhZTI3YzI2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTk1NGJmMjlhNWY5MDZiMzE1MWRmZmJlY2I1ODU2ZTAyZTE1NjVkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMDE6MDA6MzAgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkbyBub3QgY2hlY2sgbG9jYWwgcG5nIHNvdXJjZQorU3ViamVjdDogW1BBVENIIDAzLzEwXSBjb25maWd1cmUuYWM6IGRvIG5vdCBjaGVjayBsb2NhbCBwbmcgc291cmNlCiAKIEluIG9lLWNvcmUsIGl0IGRpZCBub3QgbmVlZCB0byBjb21waWxlIGxvY2FsIGxpYnBuZwogc291cmNlIGluIGdob3N0c2NyaXB0LCBzbyBkbyBub3QgY2hlY2sgbG9jYWwgcG5nCkBAIC0xNiwxMCArMTYsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiZjZkM2Y1Li4wMWRmMDNmIDEwMDY0NAoraW5kZXggOTM0MTkzMC4uODBhNjBiMSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtOTMwLDExICs5MzAsMTEgQEAgQUNfU1VCU1QoWkxJQkRJUikKK0BAIC0xMTE0LDExICsxMTE0LDExIEBAIEFDX1NVQlNUKFpMSUJESVIpCiAgQUNfU1VCU1QoRlRfU1lTX1pMSUIpCiAgCiAgZG5sIHBuZyBmb3IgdGhlIHBuZyBvdXRwdXQgZGV2aWNlOyBpdCBhbHNvIHJlcXVpcmVzIHpsaWIKQEAgLTM0LDUgKzM0LDUgQEAKICAgICAgICAgIFNIQVJFX0xJQlBORz0wCiAgICAgICAgICBMSUJQTkdESVI9JHNyY2Rpci9saWJwbmcKIC0tIAotMi44LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctMTE3MTQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy0xMTcxNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5ODNjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy0xMTcxNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gNjcxZmQ1OWViNjU3NzQzYWE4NmZiYzE4OTVjYjE1ODcyYTMxN2NhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTQ6NTQ6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5ODE1ODogcHJldmVudCB0cnlpbmcgdG8gcmVsb2MgYSBmcmVlZCBvYmplY3QKLQotSW4gdGhlIHRva2VuIHJlYWRlciwgd2UgcGFzcyB0aGUgc2Nhbm5lciBzdGF0ZSBzdHJ1Y3R1cmUgYXJvdW5kIGFzIGEKLXRfc3RydWN0IHJlZiBvbiB0aGUgUG9zdHNjcmlwdCBvcGVyYW5kIHN0YWNrLgotCi1CdXQgd2UgZXhwbGljaXRseSBmcmVlIHRoZSBzY2FubmVyIHN0YXRlIHdoZW4gd2UncmUgZG9uZSwgd2hpY2ggbGVhdmVzIGEKLWRhbmdsaW5nIHJlZmVyZW5jZSBvbiB0aGUgb3BlcmFuZCBzdGFjayBhbmQsIHVubGVzcyB0aGF0IHJlZmVyZW5jZSBnZXRzCi1vdmVyd3JpdHRlbiBiZWZvcmUgdGhlIG5leHQgZ2FyYmFnZXIgcnVuLCB3ZSBjYW4gZW5kIHVwIHdpdGggdGhlIGdhcmJhZ2VyCi10cnlpbmcgdG8gZGVhbCB3aXRoIGFuIGFscmVhZHkgZnJlZWQgb2JqZWN0IC0gdGhhdCBjYW4gY2F1c2UgYSBjcmFzaCwgb3IKLW1lbW9yeSBjb3JydXB0aW9uLgotLS0tCi0gcHNpL3p0b2tlbi5jIHwgICAxNCArKysrKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctMTE3MTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotZGlmZiAtLWdpdCBhL3BzaS96dG9rZW4uYyBiL3BzaS96dG9rZW4uYwotaW5kZXggNGRiYTdjNS4uYWYxY2VlYiAxMDA2NDQKLS0tLSBhL3BzaS96dG9rZW4uYwotKysrIGIvcHNpL3p0b2tlbi5jCi1AQCAtMTA3LDYgKzEwNywxMiBAQCB0b2tlbl9jb250aW51ZShpX2N0eF90ICppX2N0eF9wLCBzY2FubmVyX3N0YXRlICogcHN0YXRlLCBib29sIHNhdmUpCi0gICAgIGludCBjb2RlOwotICAgICByZWYgdG9rZW47Ci0gCi0rICAgIC8qIFNpbmNlIHdlIG1pZ2h0IGZyZWUgcHN0YXRlIGJlbG93LCBhbmQgd2UncmUgZGVhbGluZyB3aXRoCi0rICAgICAqIGdjIG1lbW9yeSByZWZlcmVuY2VkIGJ5IHRoZSBzdGFjaywgd2UgbmVlZCB0byBleHBsaWNpdGx5Ci0rICAgICAqIHJlbW92ZSB0aGUgcmVmZXJlbmNlIHRvIHBzdGF0ZSBmcm9tIHRoZSBzdGFjaywgb3RoZXJ3aXNlCi0rICAgICAqIHRoZSBnYXJiYWdlciB3aWxsIGZhbGwgb3ZlcgotKyAgICAgKi8KLSsgICAgbWFrZV9udWxsKG9zcCk7Ci0gICAgIC8qIE5vdGUgdGhhdCBnc19zY2FuX3Rva2VuIG1heSBjaGFuZ2Ugb3NwISAqLwotICAgICBwb3AoMSk7ICAgICAgICAgICAgICAgICAgICAgLyogcmVtb3ZlIHRoZSBmaWxlIG9yIHNjYW5uZXIgc3RhdGUgKi8KLSBhZ2FpbjoKLUBAIC0xODMsOCArMTg5LDE0IEBAIHp0b2tlbmV4ZWNfY29udGludWUoaV9jdHhfdCAqaV9jdHhfcCkKLSBzdGF0aWMgaW50Ci0gdG9rZW5leGVjX2NvbnRpbnVlKGlfY3R4X3QgKmlfY3R4X3AsIHNjYW5uZXJfc3RhdGUgKiBwc3RhdGUsIGJvb2wgc2F2ZSkKLSB7Ci0tICAgIG9zX3B0ciBvcDsKLSsgICAgb3NfcHRyIG9wID0gb3NwOwotICAgICBpbnQgY29kZTsKLSsgICAgLyogU2luY2Ugd2UgbWlnaHQgZnJlZSBwc3RhdGUgYmVsb3csIGFuZCB3ZSdyZSBkZWFsaW5nIHdpdGgKLSsgICAgICogZ2MgbWVtb3J5IHJlZmVyZW5jZWQgYnkgdGhlIHN0YWNrLCB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKLSsgICAgICogcmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gcHN0YXRlIGZyb20gdGhlIHN0YWNrLCBvdGhlcndpc2UKLSsgICAgICogdGhlIGdhcmJhZ2VyIHdpbGwgZmFsbCBvdmVyCi0rICAgICAqLwotKyAgICBtYWtlX251bGwob3NwKTsKLSAgICAgLyogTm90ZSB0aGF0IGdzX3NjYW5fdG9rZW4gbWF5IGNoYW5nZSBvc3AhICovCi0gICAgIHBvcCgxKTsKLSBhZ2FpbjoKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy01OTUxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNTk1MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJjYzEzNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy01OTUxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBiZmE2YjJlY2JlNDhlZGM2OWE3ZDlkMjJhMTI0MTlhZWQyNTk2MGI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFRodSwgNiBBcHIgMjAxNyAxNjo0NDo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3NTQ4OiB1c2UgdGhlIGNvcnJlY3QgcGFyYW0gbGlzdCBlbnVtZXJhdG9yCi0KLVdoZW4gd2UgZW5jb3VudGVyZWQgZGljdGlvbmFyeSBpbiBhIHJlZl9wYXJhbV9saXN0LCB3ZSB3ZXJlIHVzaW5nIHRoZSBlbnVtZXJhdG9yCi1mb3IgdGhlICJwYXJlbnQiIHBhcmFtX2xpc3QsIHJhdGhlciB0aGFuIHRoZSBlbnVtZXJhdG9yIGZvciB0aGUgcGFyYW1fbGlzdAotd2UganVzdCBjcmVhdGVkIGZvciB0aGUgZGljdGlvbmFyeS4gVGhhdCBwYXJlbnQgd2FzIHVzdWFsbHkgdGhlIHN0YWNrCi1saXN0IGVudW1lcmF0b3IsIGFuZCBjYXVzZWQgYSBzZWdmYXVsdC4KLQotVXNpbmcgdGhlIGNvcnJlY3QgZW51bWVyYXRvciB3b3JrcyBiZXR0ZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctNTk1MQotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBzaS9pcGFyYW0uYyB8IDcgKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wc2kvaXBhcmFtLmMgYi9wc2kvaXBhcmFtLmMKLWluZGV4IDRlNjNiNmQuLmIyZmE4NWYgMTAwNjQ0Ci0tLS0gYS9wc2kvaXBhcmFtLmMKLSsrKyBiL3BzaS9pcGFyYW0uYwotQEAgLTc3MCwxMiArNzcwLDEzIEBAIHJlZl9wYXJhbV9yZWFkX3R5cGVkKGdzX3BhcmFtX2xpc3QgKiBwbGlzdCwgZ3NfcGFyYW1fbmFtZSBwa2V5LAotICAgICAgICAgICAgICAgICBnc19wYXJhbV9lbnVtZXJhdG9yX3QgZW51bXI7Ci0gICAgICAgICAgICAgICAgIGdzX3BhcmFtX2tleV90IGtleTsKLSAgICAgICAgICAgICAgICAgcmVmX3R5cGUga2V5dHlwZTsKLSsgICAgICAgICAgICAgICAgZGljdF9wYXJhbV9saXN0ICpkbGlzdCA9IChkaWN0X3BhcmFtX2xpc3QgKikgcHZhbHVlLT52YWx1ZS5kLmxpc3Q7Ci0gCi0gICAgICAgICAgICAgICAgIHBhcmFtX2luaXRfZW51bWVyYXRvcigmZW51bXIpOwotLSAgICAgICAgICAgICAgICBpZiAoISgqKChpcGFyYW1fbGlzdCAqKSBwbGlzdCktPmVudW1lcmF0ZSkKLS0gICAgICAgICAgICAgICAgICAgICgoaXBhcmFtX2xpc3QgKikgcHZhbHVlLT52YWx1ZS5kLmxpc3QsICZlbnVtciwgJmtleSwgJmtleXR5cGUpCi0rICAgICAgICAgICAgICAgIGlmICghKCooZGxpc3QtPmVudW1lcmF0ZSkpCi0rICAgICAgICAgICAgICAgICAgICAoKGlwYXJhbV9saXN0ICopIGRsaXN0LCAmZW51bXIsICZrZXksICZrZXl0eXBlKQotICAgICAgICAgICAgICAgICAgICAgJiYga2V5dHlwZSA9PSB0X2ludGVnZXIpIHsKLS0gICAgICAgICAgICAgICAgICAgICgoZGljdF9wYXJhbV9saXN0ICopIHB2YWx1ZS0+dmFsdWUuZC5saXN0KS0+aW50X2tleXMgPSAxOwotKyAgICAgICAgICAgICAgICAgICAgZGxpc3QtPmludF9rZXlzID0gMTsKLSAgICAgICAgICAgICAgICAgICAgIHB2YWx1ZS0+dHlwZSA9IGdzX3BhcmFtX3R5cGVfZGljdF9pbnRfa2V5czsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTcyMDcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03MjA3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDVkYzAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTcyMDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDBlODhiZWUxMzA0OTkzNjY4ZmVkZTcyNDk4ZDY1NmEyZGQzM2EzNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMjAgTWFyIDIwMTcgMDk6MzQ6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gRW5zdXJlIGEgZGV2aWNlIGhhcyByYXN0ZXIgbWVtb3J5LCBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQgaXQuCi0KLUJ1ZyAjNjk3Njc2ICJOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbWVtX2dldF9iaXRzX3JlY3RhbmdsZSgpIgotCi1UaGlzIGlzIG9ubHkgcG9zc2libGUgYnkgYWJ1c2luZy9taXMtdXNpbmcgR2hvc3RzY3JpcHQtc3BlY2lmaWMKLWxhbmd1YWdlIGV4dGVuc2lvbnMsIHNvIGNhbm5vdCBoYXBwZW4gaW4gYSBnZW5lcmFsIFBvc3RTY3JpcHQgcHJvZ3JhbS4KLQotTmV2ZXJ0aGVsZXNzLCBHaG9zdHNjcmlwdCBzaG91bGQgbm90IGNyYXNoLiBTbyB0aGlzIGNvbW1pdCBjaGVja3MgdGhlCi1tZW1vcnkgZGV2aWNlIHRvIHNlZSBpZiByYXN0ZXIgbWVtb3J5IGhhcyBiZWVuIGFsbG9jYXRlZCwgYmVmb3JlIHRyeWluZwotdG8gcmVhZCBmcm9tIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTcyMDcKLQotQXV0aG9yOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9nZGV2bWVtLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYmFzZS9nZGV2bWVtLmMgYi9iYXNlL2dkZXZtZW0uYwotaW5kZXggNDExMDhiYS4uMTgzZjk2ZCAxMDA2NDQKLS0tLSBhL2Jhc2UvZ2Rldm1lbS5jCi0rKysgYi9iYXNlL2dkZXZtZW0uYwotQEAgLTYwNSw2ICs2MDUsOCBAQCBtZW1fZ2V0X2JpdHNfcmVjdGFuZ2xlKGd4X2RldmljZSAqIGRldiwgY29uc3QgZ3NfaW50X3JlY3QgKiBwcmVjdCwKLSAgICAgICAgICAgICBHQl9QQUNLSU5HX0NIVU5LWSB8IEdCX0NPTE9SU19OQVRJVkUgfCBHQl9BTFBIQV9OT05FOwotICAgICAgICAgcmV0dXJuX2Vycm9yKGdzX2Vycm9yX3JhbmdlY2hlY2spOwotICAgICB9Ci0rICAgIGlmIChtZGV2LT5saW5lX3B0cnMgPT0gMHgwMCkKLSsgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9yYW5nZWNoZWNrKTsKLSAgICAgaWYgKCh3IDw9IDApIHwgKGggPD0gMCkpIHsKLSAgICAgICAgIGlmICgodyB8IGgpIDwgMCkKLSAgICAgICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3JfcmFuZ2VjaGVjayk7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzk3NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQwNjA4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBiMzliZTEwMTliNGFjYzFhYTUwYzYwMjY0NjNjNTQzMzMyZTk1YTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDggTWF5IDIwMTcgMTY6MTg6MTQgKzAzMDAKLQotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3NjkzOiBQcmV2ZW50IFNFR1YgZHVlIHRvIGludGVnZXIgb3ZlcmZsb3cuCi0KLVdoaWxlIGJ1aWxkaW5nIGEgSHVmZm1hbiB0YWJsZSwgdGhlIHN0YXJ0IGFuZCBlbmQgcG9pbnRzIHdlcmUgc3VzY2VwdGlibGUKLXRvIGludGVnZXIgb3ZlcmZsb3cuCi0KLVRoYW5rIHlvdSB0byBKaWFxaSBmb3IgZmluZGluZyB0aGlzIGlzc3VlIGFuZCBzdWdnZXN0aW5nIGEgcGF0Y2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctNzk3NQotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLQotQ29udGVudHMgb2YgdGhpcyBwYXRjaCB3ZXJlIGV4dHJhY3RlZCBmcm9tIGEgbGFyZ2VyIHBhdGNoIHdoaWNoIGFkZHJlc3NlZAotdHdvIENWRSdzLiAgVGhlIGNvbnRleHQgKGxvY2F0aW9uIG9mIHspIHdhcyBhbHNvIG1vZGlmaWVkIHRvIGFwcGx5IHRvCi1naG9zdHNjcmlwdCA5LjIxLgotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLQotLS0tIGEvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jCi0rKysgYi9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKLUBAIC00MjEsOCArNDIxLDggQEAgamJpZzJfYnVpbGRfaHVmZm1hbl90YWJsZShKYmlnMkN0eCAqY3R4LAotIAotICAgICAgICAgICAgIGlmIChQUkVGTEVOID09IENVUkxFTikgewotICAgICAgICAgICAgICAgICBpbnQgUkFOR0VMRU4gPSBsaW5lc1tDVVJURU1QXS5SQU5HRUxFTjsKLS0gICAgICAgICAgICAgICAgaW50IHN0YXJ0X2ogPSBDVVJDT0RFIDw8IHNoaWZ0OwotLSAgICAgICAgICAgICAgICBpbnQgZW5kX2ogPSAoQ1VSQ09ERSArIDEpIDw8IHNoaWZ0OwotKyAgICAgICAgICAgICAgICB1aW50MzJfdCBzdGFydF9qID0gQ1VSQ09ERSA8PCBzaGlmdDsKLSsgICAgICAgICAgICAgICAgdWludDMyX3QgZW5kX2ogPSAoQ1VSQ09ERSArIDEpIDw8IHNoaWZ0OwotICAgICAgICAgICAgICAgICBieXRlIGVmbGFncyA9IDA7Ci0gCi0gICAgICAgICAgICAgICAgIGlmIChlbmRfaiA+IG1heF9qKSB7Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTkyMTYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05MjE2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxY2FlYjNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTkyMTYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDNlYmZmYjFkOTZiYTBjYWNlYzIzMDE2ZWNjYjQwNDdkYWIzNjU4NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGFpbGVzaCBNaXN0cnkgPHNoYWlsZXNoLm1pc3RyeUBob3RtYWlsLmNvLnVrPgotRGF0ZTogV2VkLCAyNCBNYXkgMjAxNyAxOToyOTo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk3OTM0OiBGaXggU0VHViBkdWUgdG8gZXJyb3IgY29kZSBiZWluZyBpZ25vcmVkLgotCi1UaGUgcmV0dXJuIGNvZGUgZnJvbSBqYmlnMl9kZWNvZGVfdGV4dF9yZWdpb24gd2FzIGJlaW5nIGlnbm9yZWQgc28gdGhlCi1jb2RlIGNvbnRpbnVlZCB0byB0cnkgYW5kIHBhcnNlIHRoZSBpbnZhbGlkIGZpbGUgdXNpbmcgaW5jb21wbGV0ZS9lbXB0eQotc3RydWN0dXJlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05MjE2Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gamJpZzJkZWMvamJpZzJfc3ltYm9sX2RpY3QuYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2piaWcyZGVjL2piaWcyX3N5bWJvbF9kaWN0LmMgYi9qYmlnMmRlYy9qYmlnMl9zeW1ib2xfZGljdC5jCi1pbmRleCAzY2MxNzMxLi42NzI0MjVkIDEwMDY0NAotLS0tIGEvamJpZzJkZWMvamJpZzJfc3ltYm9sX2RpY3QuYwotKysrIGIvamJpZzJkZWMvamJpZzJfc3ltYm9sX2RpY3QuYwotQEAgLTQ5Myw4ICs0OTMsMTAgQEAgamJpZzJfZGVjb2RlX3N5bWJvbF9kaWN0KEpiaWcyQ3R4ICpjdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG11bHRpcGxlIHN5bWJvbHMgYXJlIGhhbmRsZWQgYXMgYSB0ZXh0IHJlZ2lvbiAqLwotLSAgICAgICAgICAgICAgICAgICAgICAgIGpiaWcyX2RlY29kZV90ZXh0X3JlZ2lvbihjdHgsIHNlZ21lbnQsIHRwYXJhbXMsIChjb25zdCBKYmlnMlN5bWJvbERpY3QgKiBjb25zdCAqKXJlZmFnZ19kaWN0cywKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gamJpZzJfZGVjb2RlX3RleHRfcmVnaW9uKGN0eCwgc2VnbWVudCwgdHBhcmFtcywgKGNvbnN0IEpiaWcyU3ltYm9sRGljdCAqIGNvbnN0ICopcmVmYWdnX2RpY3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlZmFnZ19kaWN0cywgaW1hZ2UsIGRhdGEsIHNpemUsIEdSX3N0YXRzLCBhcywgd3MpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2RlIDwgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjbGVhbnVwNDsKLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICBTRE5FV1NZTVMtPmdseXBoc1tOU1lNU0RFQ09ERURdID0gaW1hZ2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVmYWdnX2RpY3RzWzBdLT5nbHlwaHNbcGFyYW1zLT5TRE5VTUlOU1lNUyArIE5TWU1TREVDT0RFRF0gPSBqYmlnMl9pbWFnZV9jbG9uZShjdHgsIFNETkVXU1lNUy0+Z2x5cGhzW05TWU1TREVDT0RFRF0pOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTYxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk2MTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZWYwNGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTYxMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYzdjNTU5NzI3NThhOTMzNTA4ODJjMzIxNDc4MDFhMzQ4NWIwMTBmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBNb24sIDEyIEp1biAyMDE3IDEzOjA4OjQwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTgwMjQ6IGJvdW5kcyBjaGVjayB6b25lIHBvaW50ZXIgaW4gSW5zX01JUlAoKQotCi0tLS0KLSBiYXNlL3R0aW50ZXJwLmMgfCAgICAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05NjExCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9iYXNlL3R0aW50ZXJwLmMgYi9iYXNlL3R0aW50ZXJwLmMKLWluZGV4IGU1NmFlYzYuLmY2YTZkOTUgMTAwNjQ0Ci0tLS0gYS9iYXNlL3R0aW50ZXJwLmMKLSsrKyBiL2Jhc2UvdHRpbnRlcnAuYwotQEAgLTM4NTgsNyArMzg1OCw4IEBAIHN0YXRpYyBpbnQgbkluc3RyQ291bnQ9MDsKLSAgICAgLyogWFhYOiBVTkRPQ1VNRU5URUQhIGN2dFstMV0gPSAwIGFsd2F5cyAqLwotIAotICAgICBpZiAoIEJPVU5EUyggYXJnc1swXSwgICBDVVIuenAxLm5fcG9pbnRzICkgfHwKLS0gICAgICAgICBCT1VORFMoIGFyZ3NbMV0rMSwgQ1VSLmN2dFNpemUrMSApICAgICkKLSsgICAgICAgICBCT1VORFMoIGFyZ3NbMV0rMSwgQ1VSLmN2dFNpemUrMSApICAgIHx8Ci0rICAgICAgICAgQk9VTkRTKENVUi5HUy5ycDAsICBDVVIuenAwLm5fcG9pbnRzKSApCi0gICAgIHsKLSAgICAgICBDVVIuZXJyb3IgPSBUVF9FcnJfSW52YWxpZF9SZWZlcmVuY2U7Ci0gICAgICAgcmV0dXJuOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk2MTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzM3Y2M1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk2MTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDk4ZjZkYTYwYjlkNDYzYzYxN2U2MzFmYzI1NGNmNmQ2NmYyZThlM2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgotRGF0ZTogTW9uLCAxMiBKdW4gMjAxNyAxMzoxNToxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk4MDI2OiBib3VuZHMgY2hlY2sgem9uZSBwb2ludGVycyBpbiBJbnNfSVAoKQotCi0tLS0KLSBiYXNlL3R0aW50ZXJwLmMgfCAgICA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTYxMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYmFzZS90dGludGVycC5jIGIvYmFzZS90dGludGVycC5jCi1pbmRleCBmNmE2ZDk1Li5lN2M5ZDY4IDEwMDY0NAotLS0tIGEvYmFzZS90dGludGVycC5jCi0rKysgYi9iYXNlL3R0aW50ZXJwLmMKLUBAIC00MTI5LDcgKzQxMjksOSBAQCBzdGF0aWMgaW50IG5JbnN0ckNvdW50PTA7Ci0gICAgIEludCAgICAgICAgIHBvaW50OwotICAgICAodm9pZClhcmdzOwotIAotLSAgICBpZiAoIENVUi50b3AgPCBDVVIuR1MubG9vcCApCi0rICAgIGlmICggQ1VSLnRvcCA8IENVUi5HUy5sb29wIHx8Ci0rICAgICAgICAgQk9VTkRTKENVUi5HUy5ycDEsIENVUi56cDAubl9wb2ludHMpIHx8Ci0rICAgICAgICAgQk9VTkRTKENVUi5HUy5ycDIsIENVUi56cDEubl9wb2ludHMpKQotICAgICB7Ci0gICAgICAgQ1VSLmVycm9yID0gVFRfRXJyX0ludmFsaWRfUmVmZXJlbmNlOwotICAgICAgIHJldHVybjsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzI2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTcyNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U2YzY1Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA3NzU1ZTY3MTE2ZTg5NzNlZTBlM2IyMmQ2NTNkZjAyNmE4NGZhMDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMDg6NTg6MzEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5ODA1NTogYm91bmRzIGNoZWNrIHpvbmUgcG9pbnRlciBpbiBJbnNfTURSUAotCi0tLS0KLSBiYXNlL3R0aW50ZXJwLmMgfCAgICAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05NzI2Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci1kaWZmIC0tZ2l0IGEvYmFzZS90dGludGVycC5jIGIvYmFzZS90dGludGVycC5jCi1pbmRleCBlN2M5ZDY4Li5hZjQ1N2U4IDEwMDY0NAotLS0tIGEvYmFzZS90dGludGVycC5jCi0rKysgYi9iYXNlL3R0aW50ZXJwLmMKLUBAIC0zNzcwLDcgKzM3NzAsOCBAQCBzdGF0aWMgaW50IG5JbnN0ckNvdW50PTA7Ci0gCi0gICAgIHBvaW50ID0gKEludClhcmdzWzBdOwotIAotLSAgICBpZiAoIEJPVU5EUyggYXJnc1swXSwgQ1VSLnpwMS5uX3BvaW50cyApICkKLSsgICAgaWYgKCBCT1VORFMoIGFyZ3NbMF0sIENVUi56cDEubl9wb2ludHMgKSB8fAotKyAgICAgICAgIEJPVU5EUyggQ1VSLkdTLnJwMCwgQ1VSLnpwMC5uX3BvaW50cykgKQotICAgICB7Ci0gICAgICAgICAvKiBDdXJyZW50IHZlcnNpb24gb2YgRnJlZVR5cGUgc2lsZW50bHkgaWdub3JlcyB0aGlzIG91dCBvZiBib3VuZHMgZXJyb3IKLSAgICAgICAgICAqIGFuZCBkcm9wcyB0aGUgaW5zdHJ1Y3Rpb24sIHNlZSBidWcgIzY5MTEyMQotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MjcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05NzI3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmY3YmZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDkzN2NjZDE3YWM2NTkzNTYzM2IyZWJjMDZjYjcwODliOTFlMTdlNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpcyBMaWRkZWxsIDxjaHJpcy5saWRkZWxsQGFydGlmZXguY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAwOTowNToyMCArMDEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgNjk4MDU2OiBtYWtlIGJvdW5kcyBjaGVjayBpbiBneF90dGZSZWFkZXJfX1JlYWQgbW9yZQotIHJvYnVzdAotCi0tLS0KLSBiYXNlL2d4dHRmYi5jIHwgICAgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTcyNwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYmFzZS9neHR0ZmIuYyBiL2Jhc2UvZ3h0dGZiLmMKLWluZGV4IDBlOWE0NDQuLmUxNTYxYWYgMTAwNjQ0Ci0tLS0gYS9iYXNlL2d4dHRmYi5jCi0rKysgYi9iYXNlL2d4dHRmYi5jCi1AQCAtNzksNyArNzksOCBAQCBzdGF0aWMgdm9pZCBneF90dGZSZWFkZXJfX1JlYWQodHRmUmVhZGVyICpzZWxmLCB2b2lkICpwLCBpbnQgbikKLSAgICAgaWYgKCFyLT5lcnJvcikgewotICAgICAgICAgaWYgKHItPmV4dHJhX2dseXBoX2luZGV4ICE9IC0xKSB7Ci0gICAgICAgICAgICAgcSA9IHItPmdseXBoX2RhdGEuYml0cy5kYXRhICsgci0+cG9zOwotLSAgICAgICAgICAgIHItPmVycm9yID0gKHItPmdseXBoX2RhdGEuYml0cy5zaXplIC0gci0+cG9zIDwgbiA/Ci0rICAgICAgICAgICAgci0+ZXJyb3IgPSAoKHItPnBvcyA+PSByLT5nbHlwaF9kYXRhLmJpdHMuc2l6ZSB8fAotKyAgICAgICAgICAgICAgICAgICAgICAgIHItPmdseXBoX2RhdGEuYml0cy5zaXplIC0gci0+cG9zIDwgbikgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc19ub3RlX2Vycm9yKGdzX2Vycm9yX2ludmFsaWRmb250KSA6IDApOwotICAgICAgICAgICAgIGlmIChyLT5lcnJvciA9PSAwKQotICAgICAgICAgICAgICAgICBtZW1jcHkocCwgcSwgbik7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTczOS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTk3MzkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5YTk0ZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTczOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gYzUwMWE1OGY4ZDU2NTBjOGJhMjFkNDQ3YzBkNmYwN2VhZmNiMGYxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBGcmksIDE2IEp1biAyMDE3IDA4OjI5OjI1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTgwNjM6IEJvdW5kcyBjaGVjayBJbnNfSk1QUgotCi0tLS0KLSBiYXNlL3R0aW50ZXJwLmMgfCAgICA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotLS0tIGVuZCBvZiBvcmlnaW5hbCBoZWFkZXIKLQotQ1ZFOiBDVkUtMjAxNy05NzM5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9iYXNlL3R0aW50ZXJwLmMgYi9iYXNlL3R0aW50ZXJwLmMKLWluZGV4IGFmNDU3ZTguLmFkZjNmMGMgMTAwNjQ0Ci0tLS0gYS9iYXNlL3R0aW50ZXJwLmMKLSsrKyBiL2Jhc2UvdHRpbnRlcnAuYwotQEAgLTE3OTQsNiArMTc5NCwxMiBAQCBzdGF0aWMgaW50IG5JbnN0ckNvdW50PTA7Ci0gCi0gICBzdGF0aWMgdm9pZCAgSW5zX0pNUFIoIElOU19BUkcgKQotICAgewotKyAgICBpZiAoIEJPVU5EUyhDVVIuSVAgKyBhcmdzWzBdLCBDVVIuY29kZVNpemUgKSApCi0rICAgIHsKLSsgICAgICBDVVIuZXJyb3IgPSBUVF9FcnJfSW52YWxpZF9SZWZlcmVuY2U7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0gICAgIENVUi5JUCAgICAgICs9IChJbnQpKGFyZ3NbMF0pOwotICAgICBDVVIuc3RlcF9pbnMgPSBGQUxTRTsKLSAKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05ODM1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctOTgzNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M2NTY5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy05ODM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLUZyb20gY2ZkZTk0YmUxZDQyODZiYzQ3NjMzYzZlNmVhZjRlNjU5YmQ3ODA2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDcgSnVuIDIwMTcgMTQ6NTU6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5Nzk4NTogYm91bmRzIGNoZWNrIHRoZSBhcnJheSBhbGxvY2F0aW9ucyBtZXRob2RzCi0KLVRoZSBjbHVtcCBhbGxvY2F0b3IgaGFzIGZvdXIgYWxsb2NhdGlvbiBmdW5jdGlvbnMgdGhhdCB1c2UgJ251bWJlciBvZiBlbGVtZW50cycKLWFuZCAnc2l6ZSBvZiBlbGVtZW50cycgcGFyYW1ldGVycyAocmF0aGVyIHRoYW4gYSBzaW1wbGUgJ251bWJlciBvZiBieXRlcycpLgotCi1UaG9zZSBuZWVkIHNwZWNpZmljIGJvdW5kcyBjaGVja2luZy4KLS0tLQotIGJhc2UvZ3NhbGxvYy5jIHwgICA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLS0tLSBlbmQgb2Ygb3JpZ2luYWwgaGVhZGVyCi0KLUNWRTogQ1ZFLTIwMTctOTgzNQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXQ6Ly9naXQuZ2hvc3RzY3JpcHQuY29tL2dob3N0cGRsLmdpdF0KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi1kaWZmIC0tZ2l0IGEvYmFzZS9nc2FsbG9jLmMgYi9iYXNlL2dzYWxsb2MuYwotaW5kZXggNzQxYmEwMC4uMTBjMDRkZCAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3NhbGxvYy5jCi0rKysgYi9iYXNlL2dzYWxsb2MuYwotQEAgLTEyNDgsMTkgKzEyNDgsMzIgQEAgaV9hbGxvY19zdHJ1Y3RfaW1tb3ZhYmxlKGdzX21lbW9yeV90ICogbWVtLCBnc19tZW1vcnlfdHlwZV9wdHJfdCBwc3R5cGUsCi0gICAgIGFsbG9jX3RyYWNlKCJ8KzwuIiwgaW1lbSwgY25hbWUsIHBzdHlwZSwgc2l6ZSwgb2JqKTsKLSAgICAgcmV0dXJuIG9iajsKLSB9Ci0rCi0rc3RhdGljIGlubGluZSBib29sCi0rYWxsb2NfYXJyYXlfY2hlY2tfc2l6ZSh1bG9uZyBudW1fZWxlbWVudHMsIHVsb25nIGVsdF9zaXplLCB1bG9uZyAqbHNpemUpCi0rewotKyAgICBpbnQ2NF90IHMgPSAoaW50NjRfdCludW1fZWxlbWVudHMgKiBlbHRfc2l6ZTsKLSsgICAgaWYgKHMgPiBtYXhfdWludCkgewotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0rICAgICpsc2l6ZSA9ICh1bG9uZylzOwotKyAgICByZXR1cm4gdHJ1ZTsKLSt9Ci0rCi0gc3RhdGljIGJ5dGUgKgotIGlfYWxsb2NfYnl0ZV9hcnJheShnc19tZW1vcnlfdCAqIG1lbSwgdWludCBudW1fZWxlbWVudHMsIHVpbnQgZWx0X3NpemUsCi0gICAgICAgICAgICAgICAgICAgIGNsaWVudF9uYW1lX3QgY25hbWUpCi0gewotICAgICBnc19yZWZfbWVtb3J5X3QgKiBjb25zdCBpbWVtID0gKGdzX3JlZl9tZW1vcnlfdCAqKW1lbTsKLSAgICAgb2JqX2hlYWRlcl90ICpvYmo7Ci0tCi0rICAgIHVsb25nIGxzaXplOwotICNpZmRlZiBNRU1FTlRPCi0gICAgIGlmIChNZW1lbnRvX2ZhaWxUaGlzRXZlbnQoKSkKLSAgICAgICAgIHJldHVybiBOVUxMOwotICNlbmRpZgotLQotLSAgICBvYmogPSBhbGxvY19vYmooaW1lbSwgKHVsb25nKSBudW1fZWxlbWVudHMgKiBlbHRfc2l6ZSwKLSsgICAgaWYgKGFsbG9jX2FycmF5X2NoZWNrX3NpemUobnVtX2VsZW1lbnRzLCBlbHRfc2l6ZSwgJmxzaXplKSA9PSBmYWxzZSkKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICBvYmogPSBhbGxvY19vYmooaW1lbSwgbHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAmc3RfYnl0ZXMsIEFMTE9DX0RJUkVDVCwgY25hbWUpOwotIAotICAgICBpZl9kZWJ1ZzZtKCdBJywgbWVtLCAiW2ElZDorYi5dJXMgLWJ5dGVzLSooJWx1PSV1KiV1KSA9IDB4JWx4XG4iLAotQEAgLTEyNzUsMTMgKzEyODgsMTQgQEAgaV9hbGxvY19ieXRlX2FycmF5X2ltbW92YWJsZShnc19tZW1vcnlfdCAqIG1lbSwgdWludCBudW1fZWxlbWVudHMsCi0gewotICAgICBnc19yZWZfbWVtb3J5X3QgKiBjb25zdCBpbWVtID0gKGdzX3JlZl9tZW1vcnlfdCAqKW1lbTsKLSAgICAgb2JqX2hlYWRlcl90ICpvYmo7Ci0tCi0rICAgIHVsb25nIGxzaXplOwotICNpZmRlZiBNRU1FTlRPCi0gICAgIGlmIChNZW1lbnRvX2ZhaWxUaGlzRXZlbnQoKSkKLSAgICAgICAgIHJldHVybiBOVUxMOwotICNlbmRpZgotLQotLSAgICBvYmogPSBhbGxvY19vYmooaW1lbSwgKHVsb25nKSBudW1fZWxlbWVudHMgKiBlbHRfc2l6ZSwKLSsgICAgaWYgKGFsbG9jX2FycmF5X2NoZWNrX3NpemUobnVtX2VsZW1lbnRzLCBlbHRfc2l6ZSwgJmxzaXplKSA9PSBmYWxzZSkKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICBvYmogPSBhbGxvY19vYmooaW1lbSwgbHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAmc3RfYnl0ZXMsIEFMTE9DX0lNTU9WQUJMRSB8IEFMTE9DX0RJUkVDVCwKLSAgICAgICAgICAgICAgICAgICAgIGNuYW1lKTsKLSAKLUBAIC0xMjk3LDcgKzEzMTEsNyBAQCBpX2FsbG9jX3N0cnVjdF9hcnJheShnc19tZW1vcnlfdCAqIG1lbSwgdWludCBudW1fZWxlbWVudHMsCi0gewotICAgICBnc19yZWZfbWVtb3J5X3QgKiBjb25zdCBpbWVtID0gKGdzX3JlZl9tZW1vcnlfdCAqKW1lbTsKLSAgICAgb2JqX2hlYWRlcl90ICpvYmo7Ci0tCi0rICAgIHVsb25nIGxzaXplOwotICNpZmRlZiBNRU1FTlRPCi0gICAgIGlmIChNZW1lbnRvX2ZhaWxUaGlzRXZlbnQoKSkKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTEzMTEsOSArMTMyNSw5IEBAIGlfYWxsb2Nfc3RydWN0X2FycmF5KGdzX21lbW9yeV90ICogbWVtLCB1aW50IG51bV9lbGVtZW50cywKLSAgICAgICAgIHJldHVybiBOVUxMOwkJLyogZmFpbCAqLwotICAgICB9Ci0gI2VuZGlmCi0tICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLAotLSAgICAgICAgICAgICAgICAgICAgKHVsb25nKSBudW1fZWxlbWVudHMgKiBwc3R5cGUtPnNzaXplLAotLSAgICAgICAgICAgICAgICAgICAgcHN0eXBlLCBBTExPQ19ESVJFQ1QsIGNuYW1lKTsKLSsgICAgaWYgKGFsbG9jX2FycmF5X2NoZWNrX3NpemUobnVtX2VsZW1lbnRzLCBwc3R5cGUtPnNzaXplLCAmbHNpemUpID09IGZhbHNlKQotKyAgICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIG9iaiA9IGFsbG9jX29iaihpbWVtLCBsc2l6ZSwgcHN0eXBlLCBBTExPQ19ESVJFQ1QsIGNuYW1lKTsKLSAgICAgaWZfZGVidWc3bSgnQScsIG1lbSwgIlthJWQ6KzwuXSVzICVzKiglbHU9JXUqJXUpID0gMHglbHhcbiIsCi0gICAgICAgICAgICAgICAgYWxsb2NfdHJhY2Vfc3BhY2UoaW1lbSksIGNsaWVudF9uYW1lX3N0cmluZyhjbmFtZSksCi0gICAgICAgICAgICAgICAgc3RydWN0X3R5cGVfbmFtZV9zdHJpbmcocHN0eXBlKSwKLUBAIC0xMzI3LDE2ICsxMzQxLDE2IEBAIGlfYWxsb2Nfc3RydWN0X2FycmF5X2ltbW92YWJsZShnc19tZW1vcnlfdCAqIG1lbSwgdWludCBudW1fZWxlbWVudHMsCi0gewotICAgICBnc19yZWZfbWVtb3J5X3QgKiBjb25zdCBpbWVtID0gKGdzX3JlZl9tZW1vcnlfdCAqKW1lbTsKLSAgICAgb2JqX2hlYWRlcl90ICpvYmo7Ci0tCi0rICAgIHVsb25nIGxzaXplOwotICNpZmRlZiBNRU1FTlRPCi0gICAgIGlmIChNZW1lbnRvX2ZhaWxUaGlzRXZlbnQoKSkKLSAgICAgICAgIHJldHVybiBOVUxMOwotICNlbmRpZgotIAotICAgICBBTExPQ19DSEVDS19TSVpFKG1lbSxwc3R5cGUpOwotLSAgICBvYmogPSBhbGxvY19vYmooaW1lbSwKLS0gICAgICAgICAgICAgICAgICAgICh1bG9uZykgbnVtX2VsZW1lbnRzICogcHN0eXBlLT5zc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgIHBzdHlwZSwgQUxMT0NfSU1NT1ZBQkxFIHwgQUxMT0NfRElSRUNULCBjbmFtZSk7Ci0rICAgIGlmIChhbGxvY19hcnJheV9jaGVja19zaXplKG51bV9lbGVtZW50cywgcHN0eXBlLT5zc2l6ZSwgJmxzaXplKSA9PSBmYWxzZSkKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICBvYmogPSBhbGxvY19vYmooaW1lbSwgbHNpemUsIHBzdHlwZSwgQUxMT0NfSU1NT1ZBQkxFIHwgQUxMT0NfRElSRUNULCBjbmFtZSk7Ci0gICAgIGlmX2RlYnVnN20oJ0EnLCBtZW0sICJbYSVkfCs8Ll0lcyAlcyooJWx1PSV1KiV1KSA9IDB4JWx4XG4iLAotICAgICAgICAgICAgICAgIGFsbG9jX3RyYWNlX3NwYWNlKGltZW0pLCBjbGllbnRfbmFtZV9zdHJpbmcoY25hbWUpLAotICAgICAgICAgICAgICAgIHN0cnVjdF90eXBlX25hbWVfc3RyaW5nKHBzdHlwZSksCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCmluZGV4IGM0Nzk0ZTcuLmU4Y2IxNmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKQEAgLTEsMTQgKzEsMjUgQEAKK0Zyb20gMGNjYmFhMTM0MDkzYmY2YWZjNzlmMmQyMGQwNjFiY2E1YTg3NTRlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAxNjowMjowNSArMDgwMAorU3ViamVjdDogW1BBVENIIDA0LzEwXSBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24KKwogUmVtb3ZlIGhhcmRjb2RlIHBhdGggcmVmZXIgdG8gaG9zdCB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gOS4yMworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCisgZGV2aWNlcy9kZXZzLm1hayB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwogZGlmZiAtLWdpdCBhL2RldmljZXMvZGV2cy5tYWsgYi9kZXZpY2VzL2RldnMubWFrCi1pbmRleCAzMDcwZDJlLi5kZjY2M2YwIDEwMDY0NAoraW5kZXggODQ2YWE1MC4uOTU3MDE4MiAxMDA2NDQKIC0tLSBhL2RldmljZXMvZGV2cy5tYWsKICsrKyBiL2RldmljZXMvZGV2cy5tYWsKLUBAIC01NDYsNyArNTQ2LDcgQEAgJChERVZPQkopZ2RldnhhbHQuJChPQkopIDogJChERVZTUkMpZ2RldnhhbHQuYyAkKEdERVZYKSAkKG1hdGhfX2gpICQobWVtb3J5X19oKVwKK0BAIC0zOTMsNyArMzkzLDcgQEAgJChERVZPQkopZ2RldnhhbHQuJChPQkopIDogJChERVZTUkMpZ2RldnhhbHQuYyAkKEdERVZYKSAkKG1hdGhfX2gpICQobWVtb3J5X19oKVwKICAjIyMgTk9OIFBPUlRBQkxFLCBPTkxZIFVOSVggV0lUSCBHQ0MgU1VQUE9SVAogIAogICQoREVWT0JKKVgxMS5zbyA6ICQoeDExYWx0XykgJCh4MTFfKSAkKERFVlNfTUFLKSAkKE1BS0VESVJTKQpAQCAtMTcsMyArMjgsNiBAQAogIAogICMjIyMjIyAtLS0tLS0tLS0tLS0tLS0gTWVtb3J5LWJ1ZmZlcmVkIHByaW50ZXIgZGV2aWNlcyAtLS0tLS0tLS0tLS0tLS0gIyMjIyMjCiAgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2Jhc2UtZ2VuaHQuYy1hZGQtYS1wcmVwcm9jZXNzb3ItZGVmaW5lLXRvLWFsbG93LWZvcGUucGF0Y2gKaW5kZXggZDk3ZDRlYy4uN2Q4MDA2NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoCkBAIC0xLDQgKzEsOCBAQAotYmFzZS9nZW5odC5jOiBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHRvIGFsbG93IGZvcGVuIGNhbGxpbmcKK0Zyb20gOWNhNmY3OTU0MDliOTg4ZDM4ZGQ5OGJjMmE2ZWNiNjhhOTM5MjMxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTY6Mzc6NDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMF0gYmFzZS9nZW5odC5jOiBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHRvIGFsbG93IGZvcGVuCisgY2FsbGluZwogCiBUaGUgY29tbWl0IGluIHVwc3RyZWFtOgogaHR0cDovL2dpdC5naG9zdHNjcmlwdC5jb20vP3A9Z2hvc3RwZGwuZ2l0O2E9Y29tbWl0ZGlmZjtoPTc3M2M2OWU0NmU3MGJkZDU0ODI2NzY0MzdkYWZkMmNhODMzOTc2NDMKQEAgLTcsMTcgKzExLDE5IEBACiB0aGF0IGFueSB1bmludGVudGlhbCBjYWxscyBkaXJlY3RseSB0byBmb3BlbiB3aWxsIGNhdXNlIGFuIGVycm9yLgogCiBPbmx5IGV4Y2VwdGlvbnMgYXJlIHRob3NlIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLCBhbmQgbWtyb21mcy5jLgotVGhpcyBwYXRjaCBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHRvIGFsbG93IGZvcGVuIGNhbGxpbmcgaW4gYmFzZS9nZW5odC5jLgorVGhpcyBwYXRjaCBhZGQgYSBwcmVwcm9jZXNzb3IgZGVmaW5lIHRvIGFsbG93IGZvcGVuIGNhbGxpbmcgaW4KK2Jhc2UvZ2VuaHQuYy4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKK1JlYmFzZSB0byA5LjIzCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBiYXNlL2dlbmh0LmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9iYXNlL2dlbmh0LmMgYi9iYXNlL2dlbmh0LmMKLWluZGV4IDRiMDQwODUuLmNjODJmZmYgMTAwNjQ0CitpbmRleCBlNTk3ZTcyLi5lOTZiZmI1IDEwMDY0NAogLS0tIGEvYmFzZS9nZW5odC5jCiArKysgYi9iYXNlL2dlbmh0LmMKIEBAIC0xNiw2ICsxNiwxMCBAQApAQCAtMzIsNSArMzgsNSBAQAogICNpbmNsdWRlICJzdHJpbmdfLmgiCiAgI2luY2x1ZGUgImdzY2RlZnMuaCIKIC0tIAotMS44LjEuMgorMS44LjMuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9jdXBzLW5vLWdjcnlwdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoCmluZGV4IGExYzkzNjguLjRjOWJiMjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2N1cHMtbm8tZ2NyeXB0LnBhdGNoCkBAIC0xLDYgKzEsMTIgQEAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgYnVpbGQtZGVwZW5kIG9uIGxpYmdjcnlwdCwgYXMgbm90aGluZyBpcyB1c2VkIGZyb20gaXQKK0Zyb20gOTEyOWViN2ZhOWRjMTYwZDY0YTdkOWRmOTI3OWEzYjFkYWU0ZDc5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjE2OjE4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMTBdIGN1cHMgbm8gZ2NyeXB0CiAKLUJhY2twb3J0ZWQgZnJvbSBodHRwOi8vd3d3LmN1cHMub3JnL3N0cmZpbGVzLnBocC8zMzA4L2N1cHMtbm8tZ2NyeXB0LnBhdGNoCitEb24ndCBidWlsZC1kZXBlbmQgb24gbGliZ2NyeXB0LCBhcyBub3RoaW5nIGlzIHVzZWQgZnJvbSBpdAorCitCYWNrcG9ydGVkIGZyb20KK2h0dHA6Ly93d3cuY3Vwcy5vcmcvc3RyZmlsZXMucGhwLzMzMDgvY3Vwcy1uby1nY3J5cHQucGF0Y2gKIAogVGhpcyBhZGRyZXNzZXMgdGhlIGNyeXRvIGRlcGVuZGVuY3kgc2VlbiBkdXJpbmcgYnVpbGQuCiAKQEAgLTgsNyArMTQsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogCi1SZWJhc2UgdGhlIHBhdGNoIHRvIGdob3N0c2NyaXB0LTkuMTUKK1JlYmFzZSB0byA5LjIzCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KICBjdXBzL2xpYnMvY3Vwcy9odHRwLXByaXZhdGUuaCB8IDEgLQpAQCAtMjcsNSArMzMsNSBAQAogICMgICAgaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KICAjICAgIGluY2x1ZGUgPFNlY3VyaXR5L1NlY3VyaXR5Lmg+CiAtLSAKLTEuOS4xCisxLjguMy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaAppbmRleCBiNGMxNGVhLi5mYzE0NGY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoCkBAIC0xLDIyICsxLDI4IEBACi1JbXBvcnQgcGF0Y2ggZnJvbSB3aW5kcml2ZXIgbGludXggZm9yIGNyb3NzIGNvbXBpbGF0aW9uLCBhbmQgc3BsaXQgcGF0Y2hlcwotaW50byBvZSB3YXkgdW5kZXIgZGlmZmVyZW50IGRpcmVjdG9yaWVzIHN1Y2ggYXMgaTU4NiwgcG93ZXJwYyBldGMgYWNjb3JkaW5nIAotdG8gUmljaGFyZCdzIG9waW5pb24uCitGcm9tIDk0ODUwOTU0Yjg4NDQwZGY2YzQxZDJkZDEzM2M0MjJmZmM4NGQ5YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjEyOjQ4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIG5vdCBnZW5lcmF0ZSBvYmphcmNoLmggYXQgY29tcGlsZSB0aW1lCisKK0ltcG9ydCBwYXRjaCBmcm9tIHdpbmRyaXZlciBsaW51eCBmb3IgY3Jvc3MgY29tcGlsYXRpb24sIGFuZCBzcGxpdAorcGF0Y2hlcyBpbnRvIG9lIHdheSB1bmRlciBkaWZmZXJlbnQgZGlyZWN0b3JpZXMgc3VjaCBhcyBpNTg2LCBwb3dlcnBjIGV0YworYWNjb3JkaW5nIHRvIFJpY2hhcmQncyBvcGluaW9uLgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KIAotIyBBdXRob3I6IENoaSBYdSA8Y2hpLnh1QHdpbmRyaXZlci5jb20+Ci0jIERhdGU6IEZlYiAyNiAyMDEwCi0jIFN1bW1hcnk6IEdlbmVyYXRlIGFyY2guaCBmb3IgcHBjMzIKLSMKK1JlYmFzZSB0byA5LjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYXNlL2xpYi5tYWsgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogZ2hvc3RzY3JpcHQtOS4yMS9iYXNlL2xpYi5tYWsKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaG9zdHNjcmlwdC05LjIxLm9yaWcvYmFzZS9saWIubWFrCi0rKysgZ2hvc3RzY3JpcHQtOS4yMS9iYXNlL2xpYi5tYWsKLUBAIC03Myw4ICs3Myw4IEBAIGFyY2hfaD0kKEdMR0VOKWFyY2guaAorZGlmZiAtLWdpdCBhL2Jhc2UvbGliLm1hayBiL2Jhc2UvbGliLm1haworaW5kZXggMDAzNmQxZS4uMzAyODc3ZSAxMDA2NDQKKy0tLSBhL2Jhc2UvbGliLm1haworKysrIGIvYmFzZS9saWIubWFrCitAQCAtODcsOCArODcsOCBAQCBhcmNoX2g9JChHTEdFTilhcmNoLmgKICBzdGRwcmVfaD0kKEdMU1JDKXN0ZHByZS5oCiAgc3RkaW50X19oPSQoR0xTUkMpc3RkaW50Xy5oICQoc3RkX2gpCiAgCkBAIC0yNywzICszMyw2IEBACiAgCiAgIyBQbGF0Zm9ybSBpbnRlcmZhY2VzCiAgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoCmluZGV4IDNlYzM5NTYuLmZmYTI2OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKQEAgLTEsMjUgKzEsMjMgQEAKLUZyb20gMTQ5MzdkOTI0NzMzMDA2NTM1OWNhMGZiNjQ4YzI4ZGZhNWMzYjIyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEh1YW5nIFFpeXUgPGh1YW5ncXkuZm5zdEBjbi5mdWppdHN1LmNvbT4KLURhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTg6MTY6NDEgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlCitGcm9tIDg0YmI2OTJkNmIwNDdjMDkyNjZkZTE1NGY0MDRhZjk4MTdmYTA0YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjkgTWFyIDIwMTggMTU6NTk6MDUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8xMF0gY29udHJpYi5tYWs6IGZpeCBmb3IgcGFyYWxsZWwgYnVpbGQKIAotRnJvbSA3NjdiZGY4YTQxMmIwY2NlMmI3MzQ5OThlOWI3ZTU1YWJlYWY5MzJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgotRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxNzo1NTo1NCArMDkwMAotU3ViamVjdDogW1BBVENIXSBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4gRGF0ZTogRnJpLCAzMCBKYW4KLTIwMTUgMDA6NDA6MjIgLTA4MDAgIFN1YmplY3Q6IFtQQVRDSF0gY29udHJpYi5tYWs6IGZpeCBmb3IgcGFyYWxsZWwgYnVpbGQKLQotU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gOS4yMworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogLS0tCiAgY29udHJpYi9jb250cmliLm1hayB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9jb250cmliL2NvbnRyaWIubWFrIGIvY29udHJpYi9jb250cmliLm1hawotaW5kZXggNTU0MTViMy4uMGI2YjVhZSAxMDA2NDQKK2luZGV4IGY1YTJmYTQuLjQ5OTk3NTIgMTAwNjQ0CiAtLS0gYS9jb250cmliL2NvbnRyaWIubWFrCiArKysgYi9jb250cmliL2NvbnRyaWIubWFrCi1AQCAtMTA5OSw2ICsxMDk5LDcgQEAgJChERVZPQkopZHZpcHJsaWIuJChPQkopIDogJChKQVBTUkMpZHZpcHJsaWIuYyAkKEpBUFNSQylkdmlwcmxpYi5oIFwKK0BAIC0xMDY3LDYgKzEwNjcsNyBAQCAkKERFVk9CSilkdmlwcmxpYi4kKE9CSikgOiAkKEpBUFNSQylkdmlwcmxpYi5jICQoSkFQU1JDKWR2aXBybGliLmggXAogIAkkKERFVkNDKSAkKE9fKSRAICQoQ18pICQoSkFQU1JDKWR2aXBybGliLmMKICAKICBleHRyYS1kbXBydC1pbnN0YWxsOiBpbnN0YWxsLWxpYmRhdGEKQEAgLTI3LDcgKzI1LDcgQEAKICAJJChJTlNUQUxMX0RBVEEpICQoSkFQU1JDKWRtcF9pbml0LnBzICQoREVTVERJUikkKGdzZGF0YWRpcikkKEQpbGliIHx8IGV4aXQgMQogIAkkKElOU1RBTExfREFUQSkgJChKQVBTUkMpZG1wX3NpdGUucHMgJChERVNURElSKSQoZ3NkYXRhZGlyKSQoRClsaWIgfHwgZXhpdCAxCiAgCSQoSU5TVEFMTF9EQVRBKSAkKEpBUFNSQyllc2NwXzI0LnNyYyAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYiB8fCBleGl0IDEKLUBAIC0xMjY3LDYgKzEyNjgsNyBAQCAkKERFVk9CSilnZGV2YWxwcy4kKE9CSikgOiAkKEpBUFNSQylnZGV2YWxwcy5jICQoUERFVkgpIFwKK0BAIC0xMjM1LDYgKzEyMzYsNyBAQCAkKERFVk9CSilnZGV2YWxwcy4kKE9CSikgOiAkKEpBUFNSQylnZGV2YWxwcy5jICQoUERFVkgpIFwKICAjIyMgLS0tLS0tLS0tLS0tLS0tLS0gQWRkaXRpb25hbCAudXBwIGZpbGVzIC0tLS0tLS0tLS0tLS0tLS0gIyMjCiAgCiAgZXh0cmEtdXBwLWluc3RhbGw6IGluc3RhbGwtbGliZGF0YQpAQCAtMzYsNSArMzQsNSBAQAogIAkgICAgJChJTlNUQUxMX0RBVEEpICQkZiAkKERFU1RESVIpJChnc2RhdGFkaXIpJChEKWxpYiB8fCBleGl0IDE7IFwKICAJZG9uZQogLS0gCi0yLjcuNAorMS44LjMuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoCmluZGV4IGQ3ODY0ODIuLjhjNGE1ZDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1ZDVjODNjODliZTBjZmYyOWRkZTIyNjdmYTE2OGU2ZjcxNDZiZThjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNDgxYjA1NWNkNDY0NzM0YTNjMmQ4MDcxOWVhZDRjMWM5MmE0MGM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDQgTWF5IDIwMTUgMjI6MzE6NDggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYmFzZS9nZW5kZXYuYzogZml4IGZvciAtV2Vycm9yPXJldHVybi10eXBlCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIGJhc2UvZ2VuZGV2LmM6IGZpeCBmb3IgLVdlcnJvcj1yZXR1cm4tdHlwZQogCiBGaXhlZDoKIGJhc2UvZ2VuZGV2LmM6ODA6MTogZXJyb3I6IHJldHVybiB0eXBlIGRlZmF1bHRzIHRvICdpbnQnIFstV2Vycm9yPXJldHVybi10eXBlXQpAQCAtMTAsMTEgKzEwLDExIEBACiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gYmFzZS9nZW5kZXYuYyB8ICAgIDEgKworIGJhc2UvZ2VuZGV2LmMgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL2Jhc2UvZ2VuZGV2LmMgYi9iYXNlL2dlbmRldi5jCi1pbmRleCA2OGE3NDVmLi44MDU4YjVhIDEwMDY0NAoraW5kZXggNTlkNTk5OS4uNzc2NmIwOCAxMDA2NDQKIC0tLSBhL2Jhc2UvZ2VuZGV2LmMKICsrKyBiL2Jhc2UvZ2VuZGV2LmMKIEBAIC03Nyw2ICs3Nyw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICppbmRlbnRfaXRlbSA9ICIiOwpAQCAtMjYsNSArMjYsNSBAQAogIHsKICAgICAgY29uZmlnIGNvbmY7CiAtLSAKLTEuNy45LjUKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaAppbmRleCBiZmYzZTYxLi5hMzgyYzdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaApAQCAtMSwzMSArMSwzOCBAQAotZ2hvc3RzY3JpcHQtbmF0aXZlOmZpeCBkaXNhYmxlLXN5c3RlbS1saWJ0aWZmCitGcm9tIDAxMjRiMWMyOWI5Y2ZlNDZkNzNhZTgyY2UwMjNkZDdjNWIwNTU3NDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjM2OjEyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTBdIGdob3N0c2NyaXB0LW5hdGl2ZTpmaXggZGlzYWJsZS1zeXN0ZW0tbGlidGlmZgogCiBNb2RpZnkgY29uZmlndXJlIHRvIGFkZCB0aGUgY2hlY2sgdG8gbWFrZSBzdXJlCiBnaG9zdHNjcmlwIGNvdWxkIHdvcmsgd2hpbGUgc3lzdGVtLWxpYnRpZmYgaXMKIGRpc2FibGVkLgogCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLVVwZGF0ZWQgdG8gYXBwbHkgdG8gZ2hvc3RzY3JpcHQgOS4yMS4KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgogCitSZWJhc2UgdG8gZ2hvc3RzY3JpcHQgOS4yNS4KIAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggODBhNjBiMS4uZjNlOWVmYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTI1OSw2ICsxMjU5LDcgQEAgY2FzZSAieCR3aXRoX3N5c3RlbV9saWJ0aWZmIiBpbgotIGVzYWMKK0BAIC0xMzE5LDYgKzEzMTksNyBAQCBBQ19UUllfQ09NUElMRShbXSwgW3JldHVybiAwO10sCisgQ0ZMQUdTPSRDR0xBR1NfU1RPUkUKICAKICBpZiB0ZXN0IHgiJFNIQVJFX0xJQlRJRkYiID0geCIwIiA7IHRoZW4KICsgICAgaWYgdGVzdCAtZSAkTElCVElGRkRJUi9jb25maWd1cmU7IHRoZW4KICAgICAgICBlY2hvICJSdW5uaW5nIGxpYnRpZmYgY29uZmlndXJlIHNjcmlwdC4uLiIKICAgICAgICBvbGRkaXI9YHB3ZGAKICAgICAgICBpZiAhIHRlc3QgLWQgIiRMSUJUSUZGQ09ORkRJUiIgOyB0aGVuCi1AQCAtMTI3Miw2ICsxMjczLDEwIEBAIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgotICAgICAgIGNkICIkb2xkZGlyIgorQEAgLTEzMzcsNiArMTMzOCwxMCBAQCBpZiB0ZXN0IHgiJFNIQVJFX0xJQlRJRkYiID0geCIwIiA7IHRoZW4KKyAKICAgICAgICBlY2hvCiAgICAgICAgZWNobyAiQ29udGludWluZyB3aXRoIEdob3N0c2NyaXB0IGNvbmZpZ3VyYXRpb24uLi4iCiArICAgIGVsc2UKQEAgLTM1LDMgKzQyLDYgQEAKICBmaQogIAogIEFDX1NVQlNUKFNIQVJFX0xJQlRJRkYpCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoCmluZGV4IGYyYzZkMDQuLmM3NjkxNWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKQEAgLTEsMzIgKzEsNDEgQEAKLUp1c3QgdXNlIGNvbW1hbmRzIHByb3ZpZGVkIGJ5IGdob3N0c2NyaXB0LW5hdGl2ZSwgcHJldmVudGluZyByZWNvbXBpbGUgdGhlbSB3aGVuCi1jb21waWxlIGdob3N0c2NyaXB0LgotV2F5IHRvIGVuYWJsZSBjcm9zcyBjb21waWxlLgorRnJvbSAyMzlkNjgxMzA2YThkOTdlZDEwOTU0Nzg4ZDMyYmEyZjRiNTVmNzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE2OjEwOjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTBdIHByZXZlbnQgcmVjb21waWxpbmcKKworSnVzdCB1c2UgY29tbWFuZHMgcHJvdmlkZWQgYnkgZ2hvc3RzY3JpcHQtbmF0aXZlLCBwcmV2ZW50aW5nIHJlY29tcGlsZQordGhlbSB3aGVuIGNvbXBpbGUgZ2hvc3RzY3JpcHQuIFdheSB0byBlbmFibGUgY3Jvc3MgY29tcGlsZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEthbmcgS2FpIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CiAKLVJlYmFzZSB0byA5LjE5CitSZWJhc2UgdG8gOS4yNQogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgorLS0tCisgYmFzZS91bml4LWF1eC5tYWsgfCA0NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NCBkZWxldGlvbnMoLSkKIAotUmViYXNlIHRvIDkuMjEKLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQorZGlmZiAtLWdpdCBhL2Jhc2UvdW5peC1hdXgubWFrIGIvYmFzZS91bml4LWF1eC5tYWsKK2luZGV4IDViZjcyZTkuLjljYjM5ZDcgMTAwNjQ0CiAtLS0gYS9iYXNlL3VuaXgtYXV4Lm1hawogKysrIGIvYmFzZS91bml4LWF1eC5tYWsKLUBAIC02Niw0NSArNjYsNDUgQEAgJChHTE9CSilncF9zeXN2LiQoT0JKKTogJChHTFNSQylncF9zeXN2LgorQEAgLTU0LDUwICs1NCw2IEBAICQoQVVYKWdwX3N0ZGlhLiQoT0JKKTogJChHTFNSQylncF9zdGRpYS4KKyAgICQoc3RkaW9fX2gpICQodGltZV9faCkgJCh1bmlzdGRfX2gpICQoZ3hfaCkgJChncF9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKyAJJChHTENDQVVYKSAkKEFVWE9fKWdwX3N0ZGlhLiQoT0JKKSAkKENfKSAkKEdMU1JDKWdwX3N0ZGlhLmMKICAKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEF1eGlsaWFyeSBwcm9ncmFtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwotIAorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQXV4aWxpYXJ5IHByb2dyYW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCistCiAtJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChFQ0hPR1NfWEUpICQoR0xTUkMpZWNob2dzLmMgJChBVVhFWFRSQUxJQlMpCiAtCi0rIyQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0gIyBPbiB0aGUgUlMvNjAwMCAoYXQgbGVhc3QpLCBjb21waWxpbmcgZ2VuYXJjaC5jIHdpdGggZ2NjIHdpdGggLU8KLSAjIHByb2R1Y2VzIGEgYnVnZ3kgZXhlY3V0YWJsZS4KKy0kKFBBQ0tQU19YRSk6ICQoR0xTUkMpcGFja19wcy5jICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChQQUNLUFNfWEUpICQoR0xTUkMpcGFja19wcy5jICQoQVVYRVhUUkFMSUJTKQorLQorLSMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCistIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCiAtJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKIC0KQEAgLTM5LDIxICs0OCw5IEBACiAtJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQogLQotKyMkKEdFTkFSQ0hfWEUpOiAkKEdMU1JDKWdlbmFyY2guYyAkKEFLKSAkKEdFTkFSQ0hfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKLSsjCi0rIyQoR0VOQ09ORl9YRSk6ICQoR0xTUkMpZ2VuY29uZi5jICQoQUspICQoR0VOQ09ORl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5ERVZfWEUpOiAkKEdMU1JDKWdlbmRldi5jICQoQUspICQoR0VOREVWX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5IVF9YRSk6ICQoR0xTUkMpZ2VuaHQuYyAkKEFLKSAkKEdFTkhUX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKLSsjCi0gIyBUbyBnZXQgR1MgdG8gdXNlIHRoZSBzeXN0ZW0gemxpYiwgeW91IHJlbW92ZS9oaWRlIHRoZSBncy96bGliIGRpcmVjdG9yeQotICMgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbWtyb21mcyBidWlsZCBjYW4ndCBmaW5kIHRoZSB6bGliIHNvdXJjZSBpdCBuZWVkcy4KLSAjIFNvIGl0J3Mgc3BsaXQgaW50byB0d28gdGFyZ2V0cywgb25lIHVzaW5nIHRoZSB6bGliIHNvdXJjZSBkaXJlY3RseS4uLi4uCistIyBUbyBnZXQgR1MgdG8gdXNlIHRoZSBzeXN0ZW0gemxpYiwgeW91IHJlbW92ZS9oaWRlIHRoZSBncy96bGliIGRpcmVjdG9yeQorLSMgd2hpY2ggbWVhbnMgdGhhdCB0aGUgbWtyb21mcyBidWlsZCBjYW4ndCBmaW5kIHRoZSB6bGliIHNvdXJjZSBpdCBuZWVkcy4KKy0jIFNvIGl0J3Mgc3BsaXQgaW50byB0d28gdGFyZ2V0cywgb25lIHVzaW5nIHRoZSB6bGliIHNvdXJjZSBkaXJlY3RseS4uLi4uCiAtTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAogLSAkKEFVWClnc2NkZWZzLiQoT0JKKSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKIC0gJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKQEAgLTYxLDE0ICs1OCw3IEBACiAtJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzAgJChNS1JPTUZTX09CSlNfMCkgJChBVVhFWFRSQUxJQlMpCiAtCi0rI01LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLSsjICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAotKyMgJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKLSsjCi0rIyQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKLSsjCi0gIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKKy0jIC4uLi4gYW5kIG9uZSB1c2luZyB0aGUgemxpYiBsaWJyYXJ5IGxpbmtlZCB2aWEgdGhlIGNvbW1hbmQgbGluZQogLU1LUk9NRlNfT0JKU18xPSQoQVVYKWdzY2RlZnMuJChPQkopIFwKIC0gJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAogLSAkKEFVWClncF91bml4LiQoT0JKKSAkKEFVWClncF91bmlmcy4kKE9CSikgJChBVVgpZ3BfdW5pZm4uJChPQkopIFwKQEAgLTgwLDE3ICs3MCw5IEBACiAtJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQogLQkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKIC0KLSsjTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAotKyMgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOT1BUQVVYKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCi0rIwogICMgUXVlcnkgdGhlIGVudmlyb25tZW50IHRvIGNvbnN0cnVjdCBnY29uZmlnXy5oLgogICMgVGhlc2UgYXJlIGFsbCBkZWZpbmVkIGNvbmRpdGlvbmFsbHkgKGV4Y2VwdCB0aGUgSmFzUEVSIG9uZSksIHNvIHRoYXQKICAjIHRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZ3MgZnJvbSB0aGUgY29uZmlndXJlIHNjcmlwdC4KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWtkaXItcC5wYXRjaAppbmRleCA1YTdlYWIxLi4zZTZkM2UzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2gKQEAgLTEsNCArMSw4IEBACi1naG9zdHNjcmlwdDogYWxsb3cgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCBtb3JlIHRoYW4gb25jZQorRnJvbSAyYjIzMDI2ZjhlMmEzNTI0MTdmYjFjNGRhOTRiZjY5YjE5YmVmMjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyOSBNYXIgMjAxOCAxNjowNDozMiArMDgwMAorU3ViamVjdDogW1BBVENIIDA1LzEwXSBnaG9zdHNjcmlwdDogYWxsb3cgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCBtb3JlIHRoYW4KKyBvbmNlCiAKIFdoZW4gZG9pbmcgcGFyYWxsZWwgYnVpbGRzLCB3ZSBtaWdodCB0cnkgdG8gY3JlYXRlIGRpcmVjdG9yaWVzCiBtb3JlIHRoYW4gb25jZS4gIFRoaXMgc2hvdWxkIG5vdCBjYXVzZSBhbiBlcnJvci4KQEAgLTcsNyArMTEsMTQgQEAKIAogU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgogCitSZWJhc2UgdG8gOS4yMworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFzZS91bml4LWVuZC5tYWsgfCAxNyArKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiAKK2RpZmYgLS1naXQgYS9iYXNlL3VuaXgtZW5kLm1hayBiL2Jhc2UvdW5peC1lbmQubWFrCitpbmRleCA5Y2U1OTlhLi5mZWZmNWE2IDEwMDY0NAogLS0tIGEvYmFzZS91bml4LWVuZC5tYWsKICsrKyBiL2Jhc2UvdW5peC1lbmQubWFrCiBAQCAtMTcsMTUgKzE3LDE0IEBACkBAIC0zNCwzICs0NSw2IEBACiAgCiAgCiAgZ3M6IC5nc3N1YnRhcmdldCAkKFVOSVhfRU5EX01BSykKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBlYzdlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIEdQTCBHaG9zdHNjcmlwdCBQb3N0U2NyaXB0L1BERiBpbnRlcnByZXRlciIKLURFU0NSSVBUSU9OID0gIkdob3N0c2NyaXB0IGlzIHVzZWQgZm9yIFBvc3RTY3JpcHQvUERGIHByZXZpZXcgYW5kIHByaW50aW5nLiAgVXN1YWxseSBhcyBcCi1hIGJhY2stZW5kIHRvIGEgcHJvZ3JhbSBzdWNoIGFzIGdob3N0dmlldywgaXQgY2FuIGRpc3BsYXkgUG9zdFNjcmlwdCBhbmQgUERGIFwKLWRvY3VtZW50cyBpbiBhbiBYMTEgZW52aXJvbm1lbnQuIFwKLVwKLUZ1cnRoZXJtb3JlLCBpdCBjYW4gcmVuZGVyIFBvc3RTY3JpcHQgYW5kIFBERiBmaWxlcyBhcyBncmFwaGljcyB0byBiZSBwcmludGVkIFwKLW9uIG5vbi1Qb3N0U2NyaXB0IHByaW50ZXJzLiBTdXBwb3J0ZWQgcHJpbnRlcnMgaW5jbHVkZSBjb21tb24gXAotZG90LW1hdHJpeCwgaW5ramV0IGFuZCBsYXNlciBtb2RlbHMuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ2hvc3RzY3JpcHQuY29tIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzBkYzJiYWM0ZDBjZTQ0NDhkYTg3M2NkODZiMTIzZmMiCi0KLURFUEVORFMgPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIHRpZmYganBlZyBmb250Y29uZmlnIGN1cHMgbGlicG5nIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAibGlicG5nLW5hdGl2ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLVNSQ19VUklfQkFTRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcy9kb3dubG9hZC9nczkyMS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4xNi1XZXJyb3ItcmV0dXJuLXR5cGUucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtY2hlY2stbG9jYWwtbGlicG5nLXNvdXJjZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL21rZGlyLXAucGF0Y2ggXAotIgotCi1TUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03MjA3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTU5NTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzk3NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MjE2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzM5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExNzE0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVmMjEzMjgxNzYxZDI3NTBmY2YyNzQ3NmM0MDRkMTdmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyYmNlYWRiYzRkZGRlYjZmMmVlYzljOGIxNjIzZDk0NWQzNTVjYTExYjhiNGRmMDM1MzMyYjIxN2Q1OGNlODUiCi0KLSMgUHV0IHNvbWV0aGluZyBsaWtlCi0jCi0jICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKLSMKLSMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCi0jIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKLSMKLSNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCi0gICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCi0gICAgICAgICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCi0gICAgICAgICAgICAgICAgQ1VQU0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vY3Vwcy1jb25maWciIFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2hvMzIgPSAiIC0td2l0aC1sYXJnZV9jb2xvcl9pbmRleD0wIgotCi0jIEV4cGxpY2l0eSBkaXNhYmxlIGxpYnRpZmYsIGZvbnRjb25maWcsCi0jIGZyZWV0eXBlLCBjdXBzIGZvciBnaG9zdHNjcmlwdC1uYXRpdmUKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmPW5vIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWpiaWcyZGVjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgotCi0jIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCi0jIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCi0jIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2Ci1DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCi1CVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCBvYmoKLQlta2RpciAtcCBzb29iagotCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgotCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCi0JZmkKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0JIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAotCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCi0JCW1rZGlyIC1wIG9iai9hdXggc29vYmoKLQkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLQkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCi0JCWRvbmUKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgbWtkaXIgLXAgb2JqCi0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLSAgICAgICAgb2VfcnVubWFrZSBvYmovYXV4LyRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9Ci0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odDsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCi0gICAgZG9uZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGNhOGEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yNS5iYgpAQCAtMCwwICsxLDEzMyBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTI1LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtQnVnLTY5OTc5NS1hZGQtb3BlcmFuZC1jaGVja2luZy10by0uc2V0bmF0aXZlZm9udG1hcC5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDItQnVnLTY5OTgxNi1JbXByb3ZlLWhpZGluZy1vZi1zZWN1cml0eS1jcml0aWNhbC1jdXN0by5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtQnVnLTY5OTgzMi1hZGQtY29udHJvbC1vdmVyLWhpZGluZy1lcnJvci1oYW5kbGVycy5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtRm9yLWhpZGRlbi1vcGVyYXRvcnMtcGFzcy1hLW5hbWUtb2JqZWN0LXRvLWVycm9yLWhhbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovLzAwMDUtQnVnLTY5OTkzOC0ubG9hZGZvbnRsb29wLW11c3QtYmUtYW4tb3BlcmF0b3IucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA2LVVuZGVmaW5lLXNvbWUtYWRkaXRpb25hbC1pbnRlcm5hbC1vcGVyYXRvcnMucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUJ1Zy02OTk5MjctZG9uLXQtaW5jbHVkZS1vcGVyYXRvci1hcnJheXMtaW4tZXhlY3N0YWMucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA4LU1ha2UtLmZvcmNlcHV0LXVuYXZhaWxhYmxlLWZyb20tLnBvbGljeXByb2NzLWhlbHBlci0ucGF0Y2ggXAorIgorCitTUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWJkMGZhZGJmYThlODAwMDk0NDIyY2U2NWU5NGQ1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWFmYTY0NzQwYjA5MGJmZjUwYjIyMGE2ZGYzYmU5NWM0NjA2OWI3ZTMwZjRiNGVmZmVkMjgzMTZlNWIyMzg5IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAorICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKKworIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAorIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKKworIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAorIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MworIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgorQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJbWtkaXIgLXAgb2JqCisJbWtkaXIgLXAgc29vYmoKKwlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KKwkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAorCWZpCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKKwlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgorCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCisJCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworCQkJY3AgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dob3N0c2NyaXB0LSR7UFZ9LyRpIG9iai9hdXgvJGkKKwkJZG9uZQorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBta2RpciAtcCAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KKyAgICBjcCAtciAke1N9L1Jlc291cmNlICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vaWNjcHJvZmlsZXMgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCit9CisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBta2RpciAtcCBvYmoKKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKyAgICAgICAgb2VfcnVubWFrZSBvYmovYXV4LyRpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9CisgICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQorICAgIGRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgZ2hvc3RzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydHMgImFyYyIKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYXJjKS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmYtMS4yMi4zL2dyb2ZmLW5vdC1zZWFyY2gtZm9udHMtb24tYnVpbGQtaG9zdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMjIuMy9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4ZjMyMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmLTEuMjIuMy9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorZ3JvZmYgc2VhcmNocyBmb250cyB3aGljaCBhcmUgcHJvdmlkZWQgYnkgZ2hvc3RzY3JpcHQgb24gYnVpbGQgaG9zdC4KK0l0IGNhdXNlcyBub24tZGV0ZXJtaW5pc20gaXNzdWUuIFNvIG5vdCBzZWFyY2ggZm9udCBkaXJzIG9uIGhvc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MgYnVpbGQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvZm9udC9kZXZwZGYvRm91bmRyeS5pbiBiL2ZvbnQvZGV2cGRmL0ZvdW5kcnkuaW4KK2luZGV4IGE2ZTk2OGYuLjgwOTQ2NDIgMTAwNjQ0CistLS0gYS9mb250L2RldnBkZi9Gb3VuZHJ5LmluCisrKysgYi9mb250L2RldnBkZi9Gb3VuZHJ5LmluCitAQCAtNjUsNyArNjUsNyBAQCBaRHxZfHx8fERpbmdiYXRzIWQwNTAwMDBsLnBmYgorICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgCisgI0ZvdW5kcnl8TmFtZXxTZWFyY2hwYXRoCistZm91bmRyeXxVfChncyk6L3Vzci9zaGFyZS9mb250cy90eXBlMS9nc2ZvbnRzIDovb3B0L2xvY2FsL3NoYXJlL2ZvbnRzL3Vydy1mb250cyAjIHRoZSBVUlcgZm9udHMgZGVsaXZlcmVkIHdpdGggZ2hvc3RzY3JpcHQgKG1heSBiZSBkaWZmZXJlbnQpCisrZm91bmRyeXxVfChncykgIyB0aGUgVVJXIGZvbnRzIGRlbGl2ZXJlZCB3aXRoIGdob3N0c2NyaXB0IChtYXkgYmUgZGlmZmVyZW50KQorICNEZWZpbmUgRmxhZ3MgZm9yIGFmbXRvZGl0CisgCisgcj0taSAwIC1tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjMuYmIKaW5kZXggNzQ3MmY1OS4uYmE5MGNhZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuMy5iYgpAQCAtMTEsNiArMTEsNyBAQAogCWZpbGU6Ly9ncm9mZi0xLjIyLjItY29ycmVjdC1tYW4ubG9jYWwtaW5zdGFsbC1wYXRoLnBhdGNoIFwKIAlmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCiAJZmlsZTovLzAwMDEtcmVwbGFjZS1wZXJsLXctd2l0aC11c2Utd2FybmluZ3MucGF0Y2ggXAorCWZpbGU6Ly9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiY2M4MjVmYTY0YmM3MzA2YTg4NWYyZmIyMjY4ZDNlYzUiCkBAIC0yMCw3ICsyMSw5IEBACiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCiBSREVQRU5EU18ke1BOfSArPSAicGVybCBzZWQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2dwaW55aW4gJHtQTn06JHtiaW5kaXJ9L2dyb2ZmZXIgJHtQTn06JHtiaW5kaXJ9L2dyb2ciCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQteCIKIFBBUkFMTEVMX01BS0UgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS9nbnVsaWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXAtMS45L2dudWxpYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2NkZDcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwLTEuOS9nbnVsaWIucGF0Y2gKQEAgLTAsMCArMSwxODkgQEAKK0Zyb20gMTgzMTYyOGMwNjMwYWU5NmE0MzU4NmIyYTI1Y2E1MWNiZGJhM2U1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgRWdnZXJ0IDxhZGRyZXNzQGhpZGRlbj4KK0RhdGU6IE1vbiwgNSBNYXIgMjAxOCAxMDo1NjoyOSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBmZmx1c2g6IGFkanVzdCB0byBnbGliYyAyLjI4IGxpYmlvLmggcmVtb3ZhbAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQcm9ibGVtIHJlcG9ydGVkIGJ5IERhbmllbCBQLiBCZXJyYW5nw6kgaW46CitodHRwczovL2xpc3RzLmdudS5vcmcvci9idWctZ251bGliLzIwMTgtMDMvbXNnMDAwMDAuaHRtbAorKiBsaWIvZmJ1Zm1vZGUuYyAoZmJ1Zm1vZGUpOgorKiBsaWIvZmZsdXNoLmMgKGNsZWFyX3VuZ2V0Y19idWZmZXJfcHJlc2VydmluZ19wb3NpdGlvbikKKyhkaXNhYmxlX3NlZWtfb3B0aW1pemF0aW9uLCBycGxfZmZsdXNoKToKKyogbGliL2ZwZW5kaW5nLmMgKF9fZnBlbmRpbmcpOgorKiBsaWIvZnB1cmdlLmMgKGZwdXJnZSk6CisqIGxpYi9mcmVhZGFibGUuYyAoZnJlYWRhYmxlKToKKyogbGliL2ZyZWFkYWhlYWQuYyAoZnJlYWRhaGVhZCk6CisqIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6CisqIGxpYi9mcmVhZHB0ci5jIChmcmVhZHB0cik6CisqIGxpYi9mcmVhZHNlZWsuYyAoZnJlYWRwdHJpbmMpOgorKiBsaWIvZnNlZWtvLmMgKGZzZWVrbyk6CisqIGxpYi9mc2V0ZXJyLmMgKGZzZXRlcnIpOgorKiBsaWIvZndyaXRhYmxlLmMgKGZ3cml0YWJsZSk6CisqIGxpYi9md3JpdGluZy5jIChmd3JpdGluZyk6CitDaGVjayBfSU9fRU9GX1NFRU4gaW5zdGVhZCBvZiBfSU9fZnRyeWxvY2tmaWxlLgorKiBsaWIvc3RkaW8taW1wbC5oIChfSU9fSU5fQkFDS1VQKSBbX0lPX0VPRl9TRUVOXToKK0RlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIENoYW5nZUxvZyAgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKysrKworIGxpYi9mYnVmbW9kZS5jICAgfCAgMiArLQorIGxpYi9mZmx1c2guYyAgICAgfCAgNiArKystLS0KKyBsaWIvZnBlbmRpbmcuYyAgIHwgIDIgKy0KKyBsaWIvZnB1cmdlLmMgICAgIHwgIDIgKy0KKyBsaWIvZnJlYWRhYmxlLmMgIHwgIDIgKy0KKyBsaWIvZnJlYWRhaGVhZC5jIHwgIDIgKy0KKyBsaWIvZnJlYWRpbmcuYyAgIHwgIDIgKy0KKyBsaWIvZnJlYWRwdHIuYyAgIHwgIDIgKy0KKyBsaWIvZnJlYWRzZWVrLmMgIHwgIDIgKy0KKyBsaWIvZnNlZWtvLmMgICAgIHwgIDQgKystLQorIGxpYi9mc2V0ZXJyLmMgICAgfCAgMiArLQorIGxpYi9md3JpdGFibGUuYyAgfCAgMiArLQorIGxpYi9md3JpdGluZy5jICAgfCAgMiArLQorIGxpYi9zdGRpby1pbXBsLmggfCAgNiArKysrKysKKyAxNSBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGd6aXAtMS45L0NoYW5nZUxvZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd6aXAtMS45Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ3ppcC0xLjkvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDI2IEBACisrMjAxOC0wMy0wNSAgUGF1bCBFZ2dlcnQgIDxhZGRyZXNzQGhpZGRlbj4KKysKKysJZmZsdXNoOiBhZGp1c3QgdG8gZ2xpYmMgMi4yOCBsaWJpby5oIHJlbW92YWwKKysJUHJvYmxlbSByZXBvcnRlZCBieSBEYW5pZWwgUC4gQmVycmFuZ8OpIGluOgorKwlodHRwczovL2xpc3RzLmdudS5vcmcvci9idWctZ251bGliLzIwMTgtMDMvbXNnMDAwMDAuaHRtbAorKwkqIGxpYi9mYnVmbW9kZS5jIChmYnVmbW9kZSk6CisrCSogbGliL2ZmbHVzaC5jIChjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24pCisrCShkaXNhYmxlX3NlZWtfb3B0aW1pemF0aW9uLCBycGxfZmZsdXNoKToKKysJKiBsaWIvZnBlbmRpbmcuYyAoX19mcGVuZGluZyk6CisrCSogbGliL2ZwdXJnZS5jIChmcHVyZ2UpOgorKwkqIGxpYi9mcmVhZGFibGUuYyAoZnJlYWRhYmxlKToKKysJKiBsaWIvZnJlYWRhaGVhZC5jIChmcmVhZGFoZWFkKToKKysJKiBsaWIvZnJlYWRpbmcuYyAoZnJlYWRpbmcpOgorKwkqIGxpYi9mcmVhZHB0ci5jIChmcmVhZHB0cik6CisrCSogbGliL2ZyZWFkc2Vlay5jIChmcmVhZHB0cmluYyk6CisrCSogbGliL2ZzZWVrby5jIChmc2Vla28pOgorKwkqIGxpYi9mc2V0ZXJyLmMgKGZzZXRlcnIpOgorKwkqIGxpYi9md3JpdGFibGUuYyAoZndyaXRhYmxlKToKKysJKiBsaWIvZndyaXRpbmcuYyAoZndyaXRpbmcpOgorKwlDaGVjayBfSU9fRU9GX1NFRU4gaW5zdGVhZCBvZiBfSU9fZnRyeWxvY2tmaWxlLgorKwkqIGxpYi9zdGRpby1pbXBsLmggKF9JT19JTl9CQUNLVVApIFtfSU9fRU9GX1NFRU5dOgorKwlEZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KKysKKyAyMDE4LTAxLTA3ICBKaW0gTWV5ZXJpbmcgIDxtZXllcmluZ0BmYi5jb20+CisgCisgCXZlcnNpb24gMS45CitJbmRleDogZ3ppcC0xLjkvbGliL2ZmbHVzaC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvZmZsdXNoLmMKKysrKyBnemlwLTEuOS9saWIvZmZsdXNoLmMKK0BAIC0zMyw3ICszMyw3IEBACisgI3VuZGVmIGZmbHVzaAorIAorIAorLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgCisgLyogQ2xlYXIgdGhlIHN0cmVhbSdzIHVuZ2V0YyBidWZmZXIsIHByZXNlcnZpbmcgdGhlIHZhbHVlIG9mIGZ0ZWxsbyAoZnApLiAgKi8KKyBzdGF0aWMgdm9pZAorQEAgLTcyLDcgKzcyLDcgQEAgY2xlYXJfdW5nZXRjX2J1ZmZlciAoRklMRSAqZnApCisgCisgI2VuZGlmCisgCistI2lmICEgKGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovKQorKyNpZiAhIChkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovKQorIAorICMgaWYgKGRlZmluZWQgX19zZmVycm9yIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXyB8fCBkZWZpbmVkIF9fQU5EUk9JRF9fKSAmJiBkZWZpbmVkIF9fU05QVAorIC8qIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCwgRHJhZ29uRmx5LCBNYWMgT1MgWCwgQ3lnd2luLCBNaW5peCAzLCBBbmRyb2lkICovCitAQCAtMTQ4LDcgKzE0OCw3IEBAIHJwbF9mZmx1c2ggKEZJTEUgKnN0cmVhbSkKKyAgIGlmIChzdHJlYW0gPT0gTlVMTCB8fCAhIGZyZWFkaW5nIChzdHJlYW0pKQorICAgICByZXR1cm4gZmZsdXNoIChzdHJlYW0pOworIAorLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgCisgICBjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24gKHN0cmVhbSk7CisgCitJbmRleDogZ3ppcC0xLjkvbGliL2ZwdXJnZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvZnB1cmdlLmMKKysrKyBnemlwLTEuOS9saWIvZnB1cmdlLmMKK0BAIC02Miw3ICs2Miw3IEBAIGZwdXJnZSAoRklMRSAqZnApCisgICAvKiBNb3N0IHN5c3RlbXMgcHJvdmlkZSBGSUxFIGFzIGEgc3RydWN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpdG1hc2sgaW4KKyAgICAgIDxzdGRpby5oPiwgYmVjYXVzZSB0aGV5IG5lZWQgaXQgZm9yIGltcGxlbWVudGluZyBnZXRjKCkgYW5kIHB1dGMoKSBhcworICAgICAgZmFzdCBtYWNyb3MuICAqLworLSMgaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKysjIGlmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgIGZwLT5fSU9fcmVhZF9lbmQgPSBmcC0+X0lPX3JlYWRfcHRyOworICAgZnAtPl9JT193cml0ZV9wdHIgPSBmcC0+X0lPX3dyaXRlX2Jhc2U7CisgICAvKiBBdm9pZCBtZW1vcnkgbGVhayB3aGVuIHRoZXJlIGlzIGFuIGFjdGl2ZSB1bmdldGMgYnVmZmVyLiAgKi8KK0luZGV4OiBnemlwLTEuOS9saWIvZnJlYWRpbmcuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd6aXAtMS45Lm9yaWcvbGliL2ZyZWFkaW5nLmMKKysrKyBnemlwLTEuOS9saWIvZnJlYWRpbmcuYworQEAgLTMxLDcgKzMxLDcgQEAgZnJlYWRpbmcgKEZJTEUgKmZwKQorICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCisgICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKKyAgICAgIGZhc3QgbWFjcm9zLiAgKi8KKy0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICByZXR1cm4gKChmcC0+X2ZsYWdzICYgX0lPX05PX1dSSVRFUykgIT0gMAorICAgICAgICAgICB8fCAoKGZwLT5fZmxhZ3MgJiAoX0lPX05PX1JFQURTIHwgX0lPX0NVUlJFTlRMWV9QVVRUSU5HKSkgPT0gMAorICAgICAgICAgICAgICAgJiYgZnAtPl9JT19yZWFkX2Jhc2UgIT0gTlVMTCkpOworSW5kZXg6IGd6aXAtMS45L2xpYi9mc2Vla28uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGd6aXAtMS45Lm9yaWcvbGliL2ZzZWVrby5jCisrKysgZ3ppcC0xLjkvbGliL2ZzZWVrby5jCitAQCAtNDcsNyArNDcsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCisgI2VuZGlmCisgCisgICAvKiBUaGVzZSB0ZXN0cyBhcmUgYmFzZWQgb24gZnB1cmdlLmMuICAqLworLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICBpZiAoZnAtPl9JT19yZWFkX2VuZCA9PSBmcC0+X0lPX3JlYWRfcHRyCisgICAgICAgJiYgZnAtPl9JT193cml0ZV9wdHIgPT0gZnAtPl9JT193cml0ZV9iYXNlCisgICAgICAgJiYgZnAtPl9JT19zYXZlX2Jhc2UgPT0gTlVMTCkKK0BAIC0xMjMsNyArMTIzLDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgorICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9CisgCistI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisrI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KKyAgICAgICBmcC0+X2ZsYWdzICY9IH5fSU9fRU9GX1NFRU47CisgICAgICAgZnAtPl9vZmZzZXQgPSBwb3M7CisgI2VsaWYgZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18KK0luZGV4OiBnemlwLTEuOS9saWIvZnNldGVyci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvZnNldGVyci5jCisrKysgZ3ppcC0xLjkvbGliL2ZzZXRlcnIuYworQEAgLTI5LDcgKzI5LDcgQEAgZnNldGVyciAoRklMRSAqZnApCisgICAvKiBNb3N0IHN5c3RlbXMgcHJvdmlkZSBGSUxFIGFzIGEgc3RydWN0IGFuZCB0aGUgbmVjZXNzYXJ5IGJpdG1hc2sgaW4KKyAgICAgIDxzdGRpby5oPiwgYmVjYXVzZSB0aGV5IG5lZWQgaXQgZm9yIGltcGxlbWVudGluZyBnZXRjKCkgYW5kIHB1dGMoKSBhcworICAgICAgZmFzdCBtYWNyb3MuICAqLworLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLworKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCisgICBmcC0+X2ZsYWdzIHw9IF9JT19FUlJfU0VFTjsKKyAjZWxpZiBkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXworICAgLyogRnJlZUJTRCwgTmV0QlNELCBPcGVuQlNELCBEcmFnb25GbHksIE1hYyBPUyBYLCBDeWd3aW4sIE1pbml4IDMsIEFuZHJvaWQgKi8KK0luZGV4OiBnemlwLTEuOS9saWIvc3RkaW8taW1wbC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ3ppcC0xLjkub3JpZy9saWIvc3RkaW8taW1wbC5oCisrKysgZ3ppcC0xLjkvbGliL3N0ZGlvLWltcGwuaAorQEAgLTE4LDYgKzE4LDEyIEBACisgICAgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gb2Ygc3RkaW8gZXh0ZW5zaW9uIEFQSSwgZXhjZXB0IHRoYXQgc29tZSBmaWVsZHMKKyAgICBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMsIG9yIHRoZWlyIGFjY2VzcyByZXF1aXJlcyBzb21lIGNhc3RzLiAgKi8KKyAKKysvKiBHbGliYyAyLjI4IG1hZGUgX0lPX0lOX0JBQ0tVUCBwcml2YXRlLiAgRm9yIG5vdywgd29yayBhcm91bmQgdGhpcworKyAgIHByb2JsZW0gYnkgZGVmaW5pbmcgaXQgb3Vyc2VsdmVzLiAgRklYTUU6IERvIG5vdCByZWx5IG9uIGdsaWJjCisrICAgaW50ZXJuYWxzLiAgKi8KKysjaWYgIWRlZmluZWQgX0lPX0lOX0JBQ0tVUCAmJiBkZWZpbmVkIF9JT19FT0ZfU0VFTgorKyMgZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKKysjZW5kaWYKKyAKKyAvKiBCU0Qgc3RkaW8gZGVyaXZlZCBpbXBsZW1lbnRhdGlvbnMuICAqLworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjkuYmIKaW5kZXggYThlZWJhMS4uMTlmNjU4NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS45LmJiCkBAIC0zLDcgKzMsOSBAQAogTElDRU5TRSA9ICJHUEx2MysiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nemlwLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2dudWxpYi5wYXRjaCBcCisgICAgICAgICAgIgogU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vd3JvbmctcGF0aC1maXgucGF0Y2giCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGMzZWM1YzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaGRwYXJtL2hkcGFybV85LjUzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaGRwYXJtLyIKLURFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAotYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyIgotTElDRU5TRV8ke1BOfSA9ICJCU0QiCi1MSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCi1MSUNFTlNFX3dpcGVyID0gIkdQTHYyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9NDk1ZDAzZTUwZGM2Yzg5ZDZhMzAxMDdhYjBkZjViMDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKLQotCi1QQUNLQUdFUyA9KyAid2lwZXIiCi0KLUZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKLQotUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIGNvcmV1dGlscyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaGRwYXJtLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly93aXBlci5zaC1maXgtc3RhdC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZTU0YjUyZTBjOGNiNzkzODlkNGQ0N2VhY2JhNDExZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjczZjU5MWRmNjkxNmM2YTFmYWVjMDcwNjlhN2ViMWNiOGVlMzA3NjE1YTYxNWQ4MDgxOTJmYjBjMDI2NWU1IgotCi1FWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJwotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKLQljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5MzJhZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Ni5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlV0aWxpdHkgZm9yIHZpZXdpbmcvbWFuaXB1bGF0aW5nIElERSBkaXNrIGRyaXZlL2RyaXZlciBwYXJhbWV0ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9oZHBhcm0vIgorREVTQ1JJUFRJT04gPSAiaGRwYXJtIGlzIGEgTGludXggc2hlbGwgdXRpbGl0eSBmb3Igdmlld2luZyBcCithbmQgbWFuaXB1bGF0aW5nIHZhcmlvdXMgSURFIGRyaXZlIGFuZCBkcml2ZXIgcGFyYW1ldGVycy4iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIiCitMSUNFTlNFXyR7UE59ID0gIkJTRCIKK0xJQ0VOU0VfJHtQTn0tZGJnID0gIkJTRCIKK0xJQ0VOU0Vfd2lwZXIgPSAiR1BMdjIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuVFhUO21kNT00OTVkMDNlNTBkYzZjODlkNmEzMDEwN2FiMGRmNWIwMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1hODJkN2JhM2FkZTllOGVjOTAyNzQ5ZGI5OGM1OTJmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci9HUEx2Mi50eHQ7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL3dpcGVyLnNoO2JlZ2lubGluZT03O2VuZGxpbmU9MzE7bWQ1PWI3YmM2NDJhZGRjMTUyZWEzMDc1MDViZjFhMjk2ZjA5IgorCisKK1BBQ0tBR0VTID0rICJ3aXBlciIKKworRklMRVNfd2lwZXIgPSAiJHtiaW5kaXJ9L3dpcGVyLnNoIgorCitSREVQRU5EU193aXBlciA9ICJiYXNoIGdhd2sgY29yZXV0aWxzIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3dpcGVyLnNoLWZpeC1zdGF0LXBhdGgucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjc5MDA2MDhlMzI4MzRmNjVkMjY1NGZkYjY5NmU3MWEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmZjllZDY5NWYxMDE3Mzk2ZWVjNDEwMWY5OTBmMTE0YjdiMGUwYTA0YzVhYTYzNjljMDM5NDA1M2QxNmU0ZGEiCisKK0VYVFJBX09FTUFLRSA9ICdTVFJJUD0iZWNobyIgTERGTEFHUz0iJHtMREZMQUdTfSInCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV8ke1BOfSA9ICJoZHBhcm0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGRwYXJtXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGRwYXJtIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtiYXNlX3NiaW5kaXJ9ICR7RH0vJHttYW5kaXJ9L21hbjggJHtEfS8ke2JpbmRpcn0KKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdzYmluZGlyPSR7YmFzZV9zYmluZGlyfScgaW5zdGFsbAorCWNwICR7U30vd2lwZXIvd2lwZXIuc2ggJHtEfS8ke2JpbmRpcn0KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzXzEuNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjIuYmIKaW5kZXggMzhhODNkMi4uZTAwODI0ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS42LjIuYmIKQEAgLTcsMTcgKzcsNiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjNcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyIKIAotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwLXRhYmxlcyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1uZi1kZWZyYWctaXB2NCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbmYtbmF0IFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUiCi1GSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3h0YWJsZXMvICR7ZGF0YWRpcn0veHRhYmxlcyIKLQogU1JDX1VSSSA9ICJodHRwOi8vbmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9pcHRhYmxlcy9maWxlcy9pcHRhYmxlcy0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtbGlibmZuZXRsaW5rLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLW9ubHktY2hlY2stY29ubnRyYWNrLXdoZW4tbGlibmZuZXRsaW5rLWVuYWJsZWQucGF0Y2ggXApAQCAtMjgsOCArMTcsOCBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0iCisKIFBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCkBAIC00NSwzICszNCwzMSBAQAogCSMgS2VlcCBheF9jaGVja19saW5rZXJfZmxhZ3MubTQgd2hpY2ggYmVsb25ncyB0byBhdXRvY29uZi1hcmNoaXZlLgogCXJtIC1mIGxpYnRvb2wubTQgbHR+b2Jzb2xldGUubTQgbHRvcHRpb25zLm00IGx0c3VnYXIubTQgbHR2ZXJzaW9uLm00CiB9CisKK1BBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzIgorUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgbW9kdWxlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsICcke2xpYmRpcn0veHRhYmxlcycsICdsaWIoLiopXC5zbyQnLCAnJHtQTn0tbW9kdWxlLSVzJywgJyR7UE59IG1vZHVsZSAlcycsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgaWYgbW9kdWxlczoKKyAgICAgICAgbWV0YXBrZyA9IGQuZ2V0VmFyKCdQTicpICsgJy1tb2R1bGVzJworICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJyArICcgJy5qb2luKG1vZHVsZXMpKQorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94dGFibGVzIgorCitBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LW1vZHVsZS14dC1zdGFuZGFyZCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiBcCisgICAgJHtQTn0tbW9kdWxlcyBcCisgICAga2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSBcCisiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLW9uLU1VU0wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlOGNmZWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotRnJvbSBjNmM1OTY2ZDlmYWUyN2JjMmYwYTM0YWI1OWI5OTk1NTUxMTFiZDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpYyBCZWxzaXRvIDxsbHVpeGhpQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMjkgT2N0IDIwMTcgMjM6MTc6MDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIE1VU0wKLQotQWRkIG1pc3NpbmcgQUlfSUROIGFuZCBOSV9JRE4gZGVjbGFyYXRpb25zLgotCi1CdWc6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnLzUwMzkxNAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gYXJwaW5nLmMgICAgICB8ICA3ICsrKysrKysKLSBwaW5nLmggICAgICAgIHwgMTEgKysrKysrKysrKysKLSB0cmFjZXBhdGguYyAgIHwgIDggKysrKysrKysKLSB0cmFjZXJvdXRlNi5jIHwgIDQgKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvYXJwaW5nLmMgYi9hcnBpbmcuYwotaW5kZXggMWEzZjQwYi4uNTMxZDI5ZCAxMDA2NDQKLS0tLSBhL2FycGluZy5jCi0rKysgYi9hcnBpbmcuYwotQEAgLTQ1LDYgKzQ1LDEzIEBAIHN0cnVjdCBzeXNmc19kZXZhdHRyX3ZhbHVlczsKLSAjaWZkZWYgVVNFX0lETgotICNpbmNsdWRlIDxpZG5hLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZm5kZWYgQUlfSUROCi0rI2RlZmluZSBBSV9JRE4gMHgwMDQwCi0rI2VuZGlmCi0rI2lmbmRlZiBBSV9DQU5PTklETgotKyNkZWZpbmUgQUlfQ0FOT05JRE4gMHgwMDgwCi0rI2VuZGlmCi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgIlNOQVBTSE9ULmgiCi1kaWZmIC0tZ2l0IGEvcGluZy5oIGIvcGluZy5oCi1pbmRleCA3NDlmM2ZmLi4yMjczMTVmIDEwMDY0NAotLS0tIGEvcGluZy5oCi0rKysgYi9waW5nLmgKLUBAIC0zOCw2ICszOCwxNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8aWRuYS5oPgotICNpbmNsdWRlIDxzdHJpbmdwcmVwLmg+Ci0rCi0rI2lmbmRlZiBBSV9JRE4KLSsjZGVmaW5lIEFJX0lETiAweDAwNDAKLSsjZW5kaWYKLSsjaWZuZGVmIEFJX0NBTk9OSUROCi0rI2RlZmluZSBBSV9DQU5PTklETiAweDAwODAKLSsjZW5kaWYKLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDMyCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBnZXRhZGRyaW5mb19mbGFncyAoQUlfQ0FOT05OQU1FIHwgQUlfSUROIHwgQUlfQ0FOT05JRE4pCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncyBOSV9JRE4KLSAjZWxzZQotZGlmZiAtLWdpdCBhL3RyYWNlcGF0aC5jIGIvdHJhY2VwYXRoLmMKLWluZGV4IDc0YTgyOWQuLmRjZWM1YjkgMTAwNjQ0Ci0tLS0gYS90cmFjZXBhdGguYwotKysrIGIvdHJhY2VwYXRoLmMKLUBAIC0zMCw2ICszMCwxNCBAQAotICNpZmRlZiBVU0VfSUROCi0gI2luY2x1ZGUgPGlkbmEuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rI2lmbmRlZiBBSV9JRE4KLSsjZGVmaW5lIEFJX0lETiAweDAwNDAKLSsjZW5kaWYKLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDMyCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwlOSV9JRE4KLSAjZWxzZQotICNkZWZpbmUgZ2V0bmFtZWluZm9fZmxhZ3MJMAotZGlmZiAtLWdpdCBhL3RyYWNlcm91dGU2LmMgYi90cmFjZXJvdXRlNi5jCi1pbmRleCA0OGZjNWM1Li44ZDFlZWJmIDEwMDY0NAotLS0tIGEvdHJhY2Vyb3V0ZTYuYwotKysrIGIvdHJhY2Vyb3V0ZTYuYwotQEAgLTI1MSw2ICsyNTEsMTAgQEAKLSAjaW5jbHVkZSA8aWRuYS5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSsjaWZuZGVmIE5JX0lETgotKyNkZWZpbmUgTklfSUROIDMyCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncwlOSV9JRE4KLSAjZWxzZQotICNkZWZpbmUgZ2V0bmFtZWluZm9fZmxhZ3MJMAotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2FpX2Nhbm9uaWRuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2FpX2Nhbm9uaWRuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOTEyNjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA3MTRlMmI0NThjMTUxYzViZGZlOTM2NDc0NDVjZDAwZGQ4ZTM2ZmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIxIEp1bCAyMDE4IDE3OjQ2OjE0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHBpbmc6IEZpeCBBSV9DQU5PTklETiB1c2FnZSBvbiBzb21lIHN5c3RlbXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworQ29tbWl0IDk5ZjY3ZGIgdXNlZCBBSV9DQU5PTklETiBpbiBhIHdheSwgd2hpY2ggYnJva2UgY29tcGlsYXRpb24gb24KK3N5c3RlbXMgd2hlcmUgQUlfQ0FOT05JRE4gaXMgbm90IGRlZmluZWQgaW4gbmV0ZGIuaCAoZS5nLiBnbGliYyA8IDIuMy40LAorYWx0ZXJuYXRpdmUgbGliY3MgdGhhdCBkb24ndCBzdXBwb3J0IElETjogZS5nLiBjdXJyZW50IG11c2wgMS4xLjE5IGFuZAordUNsaWJjLW5nIDEuMC4zMCkgd2hlbiBub3QgdXNpbmcgdGhlIHN5c3RlbSBsaWJpZG4yLgorCitGaXhlczogOTlmNjdkYiBwaW5nOiBGaXggcGluZyBuYW1lIGVuY29kZWQgdXNpbmcgQUNFIG9uIEMgbG9jYWxlCisKK1JlcG9ydGVkLWJ5OiBOaWNob2xhcyBGaXNoCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KKworLS0tCisgcGluZy5jIHwgMiArLQorIHBpbmcuaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BpbmcuYyBiL3BpbmcuYworaW5kZXggNzMzNDc3Zi4uYjI0MTgxNSAxMDA2NDQKKy0tLSBhL3BpbmcuYworKysrIGIvcGluZy5jCitAQCAtMjA3LDkgKzIwNyw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorICNpZmRlZiBVU0VfSUROCisgCXNldGxvY2FsZShMQ19BTEwsICIiKTsKKy0jZW5kaWYKKyAJaWYgKCFzdHJjbXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCksICJDIikpCisgCQloaW50cy5haV9mbGFncyAmPSB+IEFJX0NBTk9OSUROOworKyNlbmRpZgorIAorIAkvKiBTdXBwb3J0IGJlaW5nIGNhbGxlZCB1c2luZyBgcGluZzRgIG9yIGBwaW5nNmAgc3ltbGlua3MgKi8KKyAJaWYgKGFyZ3ZbMF1bc3RybGVuKGFyZ3ZbMF0pLTFdID09ICc0JykKK2RpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKK2luZGV4IDNlMDk2ODUuLjhhMGM0ZWYgMTAwNjQ0CistLS0gYS9waW5nLmgKKysrKyBiL3BpbmcuaAorQEAgLTI4LDcgKzI4LDYgQEAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgorICNpbmNsdWRlIDxsaW51eC9maWx0ZXIuaD4KKyAjaW5jbHVkZSA8cmVzb2x2Lmg+CistI2luY2x1ZGUgPGxvY2FsZS5oPgorIAorICNpZmRlZiBDQVBBQklMSVRJRVMKKyAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CitAQCAtMzYsNiArMzUsNyBAQAorICNlbmRpZgorIAorICNpZmRlZiBVU0VfSUROCisrI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxpZG4yLmg+CisgI2RlZmluZSBnZXRhZGRyaW5mb19mbGFncyAoQUlfQ0FOT05OQU1FIHwgQUlfSUROIHwgQUlfQ0FOT05JRE4pCisgI2RlZmluZSBnZXRuYW1laW5mb19mbGFncyBOSV9JRE4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmZWZkNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9pbnN0YWxsLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gNWM4YzNiMDRkNzMzMDQ2NzkzNDBmODkzNjM2ZTg3NjkxOTkyMDUzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzQGJ1cnRvbmluaS5jb20+CitEYXRlOiBNb24sIDIzIEp1bCAyMDE4IDE0OjIxOjAzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBpbnN0YWxsCisKK0FkZCBhIHNpbXBsZSBpbnN0YWxsIHJ1bGUgc28gdGhhdCB3ZSBhbHdheXMgaW5zdGFsbCB0aGUgYmluYXJpZXMgdGhhdCB3ZXJlIGJ1aWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKKy0tLQorIE1ha2VmaWxlIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMTdmYzVjOS4uZTBjMjc4NCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTIzMSwzICsyMzEsNyBAQCBycG06CisgCUAkKFJQTUJVSUxEKSAtdGEgLS1kZWZpbmUgJ2N1cnJlbnQgeWVzJyAkKFJQTVRNUCkvaXB1dGlscy50YXIuYnoyCisgCUBybSAtZiAkKFJQTVRNUCkvaXB1dGlscy50YXIuYnoyCisgCisraW5zdGFsbDoKKysJZm9yIHQgaW4gJChUQVJHRVRTKTsgZG8gXAorKwkJaW5zdGFsbCAtRCAkJHQgJChERVNURElSKSQoYmluZGlyKS8kJHQ7IFwKKysJZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNjExMDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjU3MzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE2MTEwNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAotdHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTM1O21kNT1mOWNlYjIwMTczM2U5YTZjZjhmMDA3NjZkZDI3OGQ4MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZXBhdGguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTEwO21kNT0wZWNlYTJiZjYwYmZmMmYzZDg0MDA5NmQ4NzY0N2YzZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hcnBpbmcuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1mZTg0MzAxYjVjMjY1NWM5NTBmOGI5MmEwNTdmYWZhNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZnRwZC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MzI7bWQ1PTI4ODM0YmY4YTkxYTViOGE5Mjc1NWRiZWU3MDllZjk2ICIKLQotREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi1NVVNMLnBhdGNoIFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICJiZmZjMGU5NTdiOThkNjI2YWI0Y2VhMjE4Yzg5MjUxMjAxNDI1NDQyIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5zXGQrKSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbiIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSAnQ0M9JHtDQ30gLURfR05VX1NPVVJDRScgVlBBVEg9IiR7U1RBR0lOR19MSUJESVJ9OiR7U1RBR0lOR19ESVJfSE9TVH0vJHtiYXNlX2xpYmRpcn0iICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gYWxsCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkjIFNVSUQgcm9vdCBwcm9ncmFtcwotCWluc3RhbGwgLW0gNDU1NSBwaW5nICR7RH0ke2Jhc2VfYmluZGlyfS9waW5nCi0JaW5zdGFsbCAtbSA0NTU1IHRyYWNlcm91dGU2ICR7RH0ke2Jhc2VfYmluZGlyfS8KLQlpbnN0YWxsIC1tIDQ1NTUgY2xvY2tkaWZmICR7RH0ke2Jhc2VfYmluZGlyfS8KLQkjIE90aGVyIHByb2dyYW1ncwotCWZvciBpIGluIGFycGluZyB0cmFjZXBhdGg7IGRvCi0JICBpbnN0YWxsIC1tIDA3NTUgJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LwotCWRvbmUKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0tcGluZyA9ICJwaW5nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BpbmddID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmciCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1waW5nICR7UE59LWFycGluZyAke1BOfS10cmFjZXBhdGggJHtQTn0tdHJhY2Vyb3V0ZTYgJHtQTn0tY2xvY2tkaWZmIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYiCi0KLUZJTEVTXyR7UE59CT0gIiIKLUZJTEVTXyR7UE59LXBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vcGluZy4ke0JQTn0iCi1GSUxFU18ke1BOfS1hcnBpbmcgPSAiJHtiYXNlX2JpbmRpcn0vYXJwaW5nIgotRklMRVNfJHtQTn0tdHJhY2VwYXRoID0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcGF0aCIKLUZJTEVTXyR7UE59LXRyYWNlcm91dGU2CT0gIiR7YmFzZV9iaW5kaXJ9L3RyYWNlcm91dGU2IgotRklMRVNfJHtQTn0tY2xvY2tkaWZmID0gIiR7YmFzZV9iaW5kaXJ9L2Nsb2NrZGlmZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTgwNjI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZjQ0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTgwNjI5LmJiCkBAIC0wLDAgKzEsNjEgQEAKK1NVTU1BUlkgPSAiTmV0d29yayBtb25pdG9yaW5nIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiVXRpbGl0aWVzIGZvciB0aGUgSVAgcHJvdG9jb2wsIGluY2x1ZGluZyB0cmFjZXJvdXRlNiwgXAordHJhY2VwYXRoLCB0cmFjZXBhdGg2LCBwaW5nLCBwaW5nNiBhbmQgYXJwaW5nLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI3OTJlMzhhYmRjNTlmNzY2YTMxNTM5MDhmMjNlNzY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuQlNEMzttZDU9MGYwMGQ5OTIzOWQ5MjJmZmQxM2NhYmVmODNiMzM0NDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICJnbnV0bHMgbGliY2FwIGxpYmdjcnlwdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly9haV9jYW5vbmlkbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLnBhdGNoIgorU1JDUkVWID0gImY2YWFjOGRiZTNmOGM0NWM1MzQyNDg1NGEzMzEyYmRkOGNkZDU4ZDMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPnNcZCspIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICJVU0VfSUROPXllcyxVU0VfSUROPW5vLGxpYmlkbjIiCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9IC1EX0dOVV9TT1VSQ0UnIFZQQVRIPSIke1NUQUdJTkdfTElCRElSfToke1NUQUdJTkdfRElSX0hPU1R9LyR7YmFzZV9saWJkaXJ9IiAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IGFsbAorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGJpbmRpcj0ke2Jhc2VfYmluZGlyfSBpbnN0YWxsCisJZm9yIGIgaW4gcGluZyB0cmFjZXJvdXRlNiBjbG9ja2RpZmY7IGRvCisJCWNobW9kIHUrcyAke0R9JHtiYXNlX2JpbmRpcn0vJGIKKwlkb25lCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59LXBpbmcgPSAicGluZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwaW5nXSA9ICIke2Jhc2VfYmluZGlyfS9waW5nIgorCitTUExJVFBLR1MgPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiAke1BOfS10ZnRwZCAke1BOfS1yYXJwZCAke1BOfS1yZGlzYyIKK1BBQ0tBR0VTICs9ICIke1NQTElUUEtHU30iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitSREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgorCitGSUxFU18ke1BOfQk9ICIiCitGSUxFU18ke1BOfS1waW5nID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmcuJHtCUE59IgorRklMRVNfJHtQTn0tYXJwaW5nID0gIiR7YmFzZV9iaW5kaXJ9L2FycGluZyIKK0ZJTEVTXyR7UE59LXRyYWNlcGF0aCA9ICIke2Jhc2VfYmluZGlyfS90cmFjZXBhdGgiCitGSUxFU18ke1BOfS10cmFjZXJvdXRlNgk9ICIke2Jhc2VfYmluZGlyfS90cmFjZXJvdXRlNiIKK0ZJTEVTXyR7UE59LWNsb2NrZGlmZiA9ICIke2Jhc2VfYmluZGlyfS9jbG9ja2RpZmYiCitGSUxFU18ke1BOfS10ZnRwZCA9ICIke2Jhc2VfYmluZGlyfS90ZnRwZCIKK0ZJTEVTXyR7UE59LXJhcnBkID0gIiR7YmFzZV9iaW5kaXJ9L3JhcnBkIgorRklMRVNfJHtQTn0tcmRpc2MgPSAiJHtiYXNlX2JpbmRpcn0vcmRpc2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNTI5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUyOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg2Zjc1NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sZXNzL2xlc3NfNTI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IGZpbGUgdmlld2VyIHNpbWlsYXIgdG8gbW9yZSIKLURFU0NSSVBUSU9OID0gIkxlc3MgaXMgYSBwcm9ncmFtIHNpbWlsYXIgdG8gbW9yZSwgaS5lLiBhIHRlcm1pbmFsIFwKLWJhc2VkIHByb2dyYW0gZm9yIHZpZXdpbmcgdGV4dCBmaWxlcyBhbmQgdGhlIG91dHB1dCBmcm9tIG90aGVyIFwKLXByb2dyYW1zLiBMZXNzIG9mZmVycyBtYW55IGZlYXR1cmVzIGJleW9uZCB0aG9zZSB0aGF0IG1vcmUgZG9lcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLSMgKEdQTHYyKyAoPDwgNDE4KSwgR1BMdjMrICg+PSA0MTgpKSB8IGxlc3MKLSMgSW5jbHVkaW5nIGVtYWlsIGF1dGhvciBnaXZpbmcgcGVybWlzc2luZyB0byB1c2UgQlNECi0jCi0jIEZyb206IE1hcmsgTnVkZWxtYW4gPG1hcmtuQGdyZWVud29vZHNvZnR3YXJlLmNvbT4KLSMgVG86IEVsaXphYmV0aCBGbGFuYWdhbiA8ZWxpemFiZXRoLmZsYW5hZ2FuQGludGVsLmNvbQotIyBEYXRlOiAxMi8xOS8xMQotIwotIyBIaSBFbGl6YWJldGgsCi0jIFVzaW5nIGEgZ2VuZXJpYyBCU0QgbGljZW5zZSBmb3IgbGVzcyBpcyBmaW5lIHdpdGggbWUuCi0jIFRoYW5rcywKLSMKLSMgLS1NYXJrCi0jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIHwgQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9MmVmM2U0YjhkYWZjODU2MTJiYzUyNTRiODA4MWUyMzQiCi1ERVBFTkRTID0gIm5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzIwMThiNTNhMWY3MzE5YWI1NDM0OWJhZjgwZTZhYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGJhNDJjZDRjMzgxNzRiN2JkMGQ0MjZkOGEzOWRmMmJlNmJjYzFlYzE4OTQ2YTQ2NDI3MTMyOTBmNmJmOWEwYiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tL2xlc3MvZG93bmxvYWQuaHRtbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgb2VfcnVubWFrZSAnYmluZGlyPSR7RH0ke2JpbmRpcn0nICdtYW5kaXI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJsZXNzIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGVzcy9sZXNzXzUzMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MzAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA3YjEyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xlc3MvbGVzc181MzAuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJUZXh0IGZpbGUgdmlld2VyIHNpbWlsYXIgdG8gbW9yZSIKK0RFU0NSSVBUSU9OID0gIkxlc3MgaXMgYSBwcm9ncmFtIHNpbWlsYXIgdG8gbW9yZSwgaS5lLiBhIHRlcm1pbmFsIFwKK2Jhc2VkIHByb2dyYW0gZm9yIHZpZXdpbmcgdGV4dCBmaWxlcyBhbmQgdGhlIG91dHB1dCBmcm9tIG90aGVyIFwKK3Byb2dyYW1zLiBMZXNzIG9mZmVycyBtYW55IGZlYXR1cmVzIGJleW9uZCB0aG9zZSB0aGF0IG1vcmUgZG9lcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdyZWVud29vZHNvZnR3YXJlLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgKEdQTHYyKyAoPDwgNDE4KSwgR1BMdjMrICg+PSA0MTgpKSB8IGxlc3MKKyMgSW5jbHVkaW5nIGVtYWlsIGF1dGhvciBnaXZpbmcgcGVybWlzc2luZyB0byB1c2UgQlNECisjCisjIEZyb206IE1hcmsgTnVkZWxtYW4gPG1hcmtuQGdyZWVud29vZHNvZnR3YXJlLmNvbT4KKyMgVG86IEVsaXphYmV0aCBGbGFuYWdhbiA8ZWxpemFiZXRoLmZsYW5hZ2FuQGludGVsLmNvbQorIyBEYXRlOiAxMi8xOS8xMQorIworIyBIaSBFbGl6YWJldGgsCisjIFVzaW5nIGEgZ2VuZXJpYyBCU0QgbGljZW5zZSBmb3IgbGVzcyBpcyBmaW5lIHdpdGggbWUuCisjIFRoYW5rcywKKyMKKyMgLS1NYXJrCisjCisKK0xJQ0VOU0UgPSAiR1BMdjMrIHwgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9MmVmM2U0YjhkYWZjODU2MTJiYzUyNTRiODA4MWUyMzQiCitERVBFTkRTID0gIm5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5ncmVlbndvb2Rzb2Z0d2FyZS5jb20vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorCSAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmEzOWJjY2Y0MjBjOTQ2YjBmZDdmZmM2NDk2MTMxNWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTAzZjkxYWIwYWY0ODQ2ZjM0ZjA0NDRhYjcxYzRiMjg2MTIzZjAwNDRhNDk2NGYxYWU3ODE0ODZjNjE3ZjJlMiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuZ3JlZW53b29kc29mdHdhcmUuY29tL2xlc3MvZG93bmxvYWQuaHRtbCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAnYmluZGlyPSR7RH0ke2JpbmRpcn0nICdtYW5kaXI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAorfQorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsZXNzIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpby8wMF9hcmNoZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvLzAwX2FyY2hlcy5wYXRjaAppbmRleCA5ZDY0NDdkLi5iZWMxODlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvLzAwX2FyY2hlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvLzAwX2FyY2hlcy5wYXRjaApAQCAtMSwxMSArMSwyNyBAQAorRnJvbSBjZWJhMWUwM2U1YjU3Y2RhZTBiM2IyZDJjOWFmZWJjMDg1Yzk4NmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+CitEYXRlOiBGcmksIDI3IEF1ZyAyMDEwIDEwOjE1OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmFpbzogYWRkIG5ldyByZWNpcGUKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogZnJvbSBvcGVuZW1iZWRkZWQsIGFkZGVkIGJ5IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgogCi1JbmRleDogbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtbTY4ay5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0KKyBzcmMvc3lzY2FsbC1tNjhrLmggICB8ICA3OCArKysrKysrKysrKysrKysrKysKKyBzcmMvc3lzY2FsbC1taXBzLmggICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvc3lzY2FsbC1wYXJpc2MuaCB8IDE0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvc3lzY2FsbC5oICAgICAgICB8ICAgNiArKworIDQgZmlsZXMgY2hhbmdlZCwgNDUzIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3N5c2NhbGwtbTY4ay5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9zeXNjYWxsLW1pcHMuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvc3lzY2FsbC1wYXJpc2MuaAorCitkaWZmIC0tZ2l0IGEvc3JjL3N5c2NhbGwtbTY4ay5oIGIvc3JjL3N5c2NhbGwtbTY4ay5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjQ0MDQxMgogLS0tIC9kZXYvbnVsbAotKysrIGxpYmFpby0wLjMuMTEwL3NyYy9zeXNjYWxsLW02OGsuaAorKysrIGIvc3JjL3N5c2NhbGwtbTY4ay5oCiBAQCAtMCwwICsxLDc4IEBACiArI2RlZmluZSBfX05SX2lvX3NldHVwCQkyNDEKICsjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkJMjQyCkBAIC04NSwyNyArMTAxLDExIEBACiArcmV0dXJuICh0eXBlKSBfX3JlczsgXAogK30KICsKLUluZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliYWlvLTAuMy4xMTAub3JpZy9zcmMvc3lzY2FsbC5oCi0rKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwuaAotQEAgLTI4LDYgKzI4LDEyIEBACi0gI2luY2x1ZGUgInN5c2NhbGwtc3BhcmMuaCIKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICNpbmNsdWRlICJzeXNjYWxsLWFybTY0LmgiCi0rI2VsaWYgZGVmaW5lZChfX202OGtfXykKLSsjaW5jbHVkZSAic3lzY2FsbC1tNjhrLmgiCi0rI2VsaWYgZGVmaW5lZChfX2hwcGFfXykKLSsjaW5jbHVkZSAic3lzY2FsbC1wYXJpc2MuaCIKLSsjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotKyNpbmNsdWRlICJzeXNjYWxsLW1pcHMuaCIKLSAjZWxzZQotICN3YXJuaW5nICJ1c2luZyBnZW5lcmljIHN5c2NhbGwgbWV0aG9kIgotICNpbmNsdWRlICJzeXNjYWxsLWdlbmVyaWMuaCIKLUluZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1taXBzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS9zcmMvc3lzY2FsbC1taXBzLmggYi9zcmMvc3lzY2FsbC1taXBzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40MTQyNDk5CiAtLS0gL2Rldi9udWxsCi0rKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtbWlwcy5oCisrKysgYi9zcmMvc3lzY2FsbC1taXBzLmgKIEBAIC0wLDAgKzEsMjIzIEBACiArLyoKICsgKiBUaGlzIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpAQCAtMzMwLDEwICszMzAsMTEgQEAKICsKICsjZW5kaWYgLyogKF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fTkFCSTMyKSB8fCAoX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NCkgKi8KICsKLUluZGV4OiBsaWJhaW8tMC4zLjExMC9zcmMvc3lzY2FsbC1wYXJpc2MuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3NyYy9zeXNjYWxsLXBhcmlzYy5oIGIvc3JjL3N5c2NhbGwtcGFyaXNjLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mZjYxNzQ2CiAtLS0gL2Rldi9udWxsCi0rKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtcGFyaXNjLmgKKysrKyBiL3NyYy9zeXNjYWxsLXBhcmlzYy5oCiBAQCAtMCwwICsxLDE0NiBAQAogKy8qCiArICogTGludXggc3lzdGVtIGNhbGwgbnVtYmVycy4KQEAgLTQ4MSwxMjcgKzQ4MiwyMCBAQAogKyAgICByZXR1cm4gS19JTkxJTkVfU1lTQ0FMTChzbmFtZSwgNSwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CVwKICt9CiArCi1JbmRleDogbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtYXJtLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJhaW8tMC4zLjExMC5vcmlnL3NyYy9zeXNjYWxsLWFybS5oCi0rKysgbGliYWlvLTAuMy4xMTAvc3JjL3N5c2NhbGwtYXJtLmgKLUBAIC0xMTQsMyArMTE0LDExOSBAQCB0eXBlIGZuYW1lKHR5cGUxIGFyZzEsIHR5cGUyIGFyZzIsIHR5cGUzCi0gICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKLSB9Ci0gCi0rLyoKLSsgKiAgbGludXgvaW5jbHVkZS9hc20tYXJtL3VuaXN0ZC5oCi0rICoKLSsgKiAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDUgUnVzc2VsbCBLaW5nCi0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0rICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCi0rICoKLSsgKiBQbGVhc2UgZm9yd2FyZCBfYWxsXyBjaGFuZ2VzIHRvIHRoaXMgZmlsZSB0byBybWtAYXJtLmxpbnV4Lm9yZy51aywKLSsgKiBubyBtYXR0ZXIgd2hhdCB0aGUgY2hhbmdlIGlzLiAgVGhhbmtzIQotKyAqLwotKwotKyNkZWZpbmUgX19OUl9PQUJJX1NZU0NBTExfQkFTRQkweDkwMDAwMAotKwotKyNpZiBkZWZpbmVkKF9fdGh1bWJfXykgfHwgZGVmaW5lZChfX0FSTV9FQUJJX18pCi0rI2RlZmluZSBfX05SX1NZU0NBTExfQkFTRQkwCi0rI2Vsc2UKLSsjZGVmaW5lIF9fTlJfU1lTQ0FMTF9CQVNFCV9fTlJfT0FCSV9TWVNDQUxMX0JBU0UKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIF9fTlJfaW9fc2V0dXAJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQzKQotKyNkZWZpbmUgX19OUl9pb19kZXN0cm95CQkJKF9fTlJfU1lTQ0FMTF9CQVNFKzI0NCkKLSsjZGVmaW5lIF9fTlJfaW9fZ2V0ZXZlbnRzCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ1KQotKyNkZWZpbmUgX19OUl9pb19zdWJtaXQJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ2KQotKyNkZWZpbmUgX19OUl9pb19jYW5jZWwJCQkoX19OUl9TWVNDQUxMX0JBU0UrMjQ3KQotKwotKyNkZWZpbmUgX19zeXMyKHgpICN4Ci0rI2RlZmluZSBfX3N5czEoeCkgX19zeXMyKHgpCi0rCi0rI2lmIGRlZmluZWQoX190aHVtYl9fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykKLSsjZGVmaW5lIF9fU1lTX1JFRyhuYW1lKSByZWdpc3RlciBsb25nIF9fc3lzcmVnIF9fYXNtX18oInI3IikgPSBfX05SXyMjbmFtZTsKLSsjZGVmaW5lIF9fU1lTX1JFR19MSVNUKHJlZ3MuLi4pICJyIiAoX19zeXNyZWcpICwgIyNyZWdzCi0rI2RlZmluZSBfX3N5c2NhbGwobmFtZSkgInN3aVx0MCIKLSsjZWxzZQotKyNkZWZpbmUgX19TWVNfUkVHKG5hbWUpCi0rI2RlZmluZSBfX1NZU19SRUdfTElTVChyZWdzLi4uKSByZWdzCi0rI2RlZmluZSBfX3N5c2NhbGwobmFtZSkgInN3aVx0IiBfX3N5czEoX19OUl8jI25hbWUpICIiCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBpb19zeXNjYWxsMSh0eXBlLGZuYW1lLHNuYW1lLHR5cGUxLGFyZzEpCQkJXAotK3R5cGUgZm5hbWUodHlwZTEgYXJnMSkgewkJCQkJCVwKLSsgIF9fU1lTX1JFRyhzbmFtZSkJCQkJCQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKLSsgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCi0rICBfX3N5c2NhbGwoc25hbWUpCQkJCQkJCVwKLSsJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCi0rCTogX19TWVNfUkVHX0xJU1QoICIwIiAoX19yMCkgKQkJCQkJXAotKwk6ICJtZW1vcnkiICk7CQkJCQkJCVwKLSsgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAotK30KLSsKLSsjZGVmaW5lIGlvX3N5c2NhbGwyKHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyKQkJXAotK3R5cGUgZm5hbWUodHlwZTEgYXJnMSx0eXBlMiBhcmcyKSB7CQkJCQlcCi0rICBfX1NZU19SRUcoc25hbWUpCQkJCQkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKLSsgIF9fc3lzY2FsbChzbmFtZSkJCQkJCQkJXAotKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKLSsJOiBfX1NZU19SRUdfTElTVCggIjAiIChfX3IwKSwgInIiIChfX3IxKSApCQkJXAotKwk6ICJtZW1vcnkiICk7CQkJCQkJCVwKLSsgIHJldHVybiAodHlwZSkgX19yZXNfcjA7CQkJCQkJXAotK30KLSsKLSsjZGVmaW5lIGlvX3N5c2NhbGwzKHR5cGUsZm5hbWUsc25hbWUsdHlwZTEsYXJnMSx0eXBlMixhcmcyLHR5cGUzLGFyZzMpCVwKLSt0eXBlIGZuYW1lKHR5cGUxIGFyZzEsdHlwZTIgYXJnMix0eXBlMyBhcmczKSB7CQkJCVwKLSsgIF9fU1lTX1JFRyhzbmFtZSkJCQkJCQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMSBfX2FzbV9fKCJyMSIpID0gKGxvbmcpYXJnMjsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjIgX19hc21fXygicjIiKSA9IChsb25nKWFyZzM7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKLSsgIF9fc3lzY2FsbChzbmFtZSkJCQkJCQkJXAotKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKLSsJOiBfX1NZU19SRUdfTElTVCggIjAiIChfX3IwKSwgInIiIChfX3IxKSwgInIiIChfX3IyKSApCQlcCi0rCTogIm1lbW9yeSIgKTsJCQkJCQkJXAotKyAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCi0rfQotKwotKyNkZWZpbmUgaW9fc3lzY2FsbDQodHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMyx0eXBlNCxhcmc0KVwKLSt0eXBlIGZuYW1lKHR5cGUxIGFyZzEsIHR5cGUyIGFyZzIsIHR5cGUzIGFyZzMsIHR5cGU0IGFyZzQpIHsJCVwKLSsgIF9fU1lTX1JFRyhzbmFtZSkJCQkJCQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IwIF9fYXNtX18oInIwIikgPSAobG9uZylhcmcxOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMSBfX2FzbV9fKCJyMSIpID0gKGxvbmcpYXJnMjsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjIgX19hc21fXygicjIiKSA9IChsb25nKWFyZzM7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IzIF9fYXNtX18oInIzIikgPSAobG9uZylhcmc0OwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yZXNfcjAgX19hc21fXygicjAiKTsJCQkJCVwKLSsgIF9fYXNtX18gX192b2xhdGlsZV9fICgJCQkJCQlcCi0rICBfX3N5c2NhbGwoc25hbWUpCQkJCQkJCVwKLSsJOiAiPXIiIChfX3Jlc19yMCkJCQkJCQlcCi0rCTogX19TWVNfUkVHX0xJU1QoICIwIiAoX19yMCksICJyIiAoX19yMSksICJyIiAoX19yMiksICJyIiAoX19yMykgKSBcCi0rCTogIm1lbW9yeSIgKTsJCQkJCQkJXAotKyAgcmV0dXJuICh0eXBlKSBfX3Jlc19yMDsJCQkJCQlcCi0rfQotKwotKyNkZWZpbmUgaW9fc3lzY2FsbDUodHlwZSxmbmFtZSxzbmFtZSx0eXBlMSxhcmcxLHR5cGUyLGFyZzIsdHlwZTMsYXJnMyx0eXBlNCxhcmc0LHR5cGU1LGFyZzUpCVwKLSt0eXBlIGZuYW1lKHR5cGUxIGFyZzEsIHR5cGUyIGFyZzIsIHR5cGUzIGFyZzMsIHR5cGU0IGFyZzQsIHR5cGU1IGFyZzUpIHtcCi0rICBfX1NZU19SRUcoc25hbWUpCQkJCQkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMCBfX2FzbV9fKCJyMCIpID0gKGxvbmcpYXJnMTsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjEgX19hc21fXygicjEiKSA9IChsb25nKWFyZzI7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3IyIF9fYXNtX18oInIyIikgPSAobG9uZylhcmczOwkJCVwKLSsgIHJlZ2lzdGVyIGxvbmcgX19yMyBfX2FzbV9fKCJyMyIpID0gKGxvbmcpYXJnNDsJCQlcCi0rICByZWdpc3RlciBsb25nIF9fcjQgX19hc21fXygicjQiKSA9IChsb25nKWFyZzU7CQkJXAotKyAgcmVnaXN0ZXIgbG9uZyBfX3Jlc19yMCBfX2FzbV9fKCJyMCIpOwkJCQkJXAotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAkJCQkJCVwKLSsgIF9fc3lzY2FsbChzbmFtZSkJCQkJCQkJXAotKwk6ICI9ciIgKF9fcmVzX3IwKQkJCQkJCVwKLSsJOiBfX1NZU19SRUdfTElTVCggIjAiIChfX3IwKSwgInIiIChfX3IxKSwgInIiIChfX3IyKSwJCVwKLSsJCQkgICJyIiAoX19yMyksICJyIiAoX19yNCkgKQkJCVwKLSsJOiAibWVtb3J5IiApOwkJCQkJCQlcCi0rICByZXR1cm4gKHR5cGUpIF9fcmVzX3IwOwkJCQkJCVwKLSt9Ci0rCitkaWZmIC0tZ2l0IGEvc3JjL3N5c2NhbGwuaCBiL3NyYy9zeXNjYWxsLmgKK2luZGV4IDliOWU5YzEuLjllY2QzYjQgMTAwNjQ0CistLS0gYS9zcmMvc3lzY2FsbC5oCisrKysgYi9zcmMvc3lzY2FsbC5oCitAQCAtMjksNiArMjksMTIgQEAKKyAjaW5jbHVkZSAic3lzY2FsbC1zcGFyYy5oIgorICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19yaXNjdikKKyAjaW5jbHVkZSAic3lzY2FsbC1nZW5lcmljLmgiCisrI2VsaWYgZGVmaW5lZChfX202OGtfXykKKysjaW5jbHVkZSAic3lzY2FsbC1tNjhrLmgiCisrI2VsaWYgZGVmaW5lZChfX2hwcGFfXykKKysjaW5jbHVkZSAic3lzY2FsbC1wYXJpc2MuaCIKKysjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorKyNpbmNsdWRlICJzeXNjYWxsLW1pcHMuaCIKKyAjZWxzZQorICN3YXJuaW5nICJ1c2luZyBzeXN0ZW0gY2FsbCBudW1iZXJzIGZyb20gc3lzL3N5c2NhbGwuaCIKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZ2VuZXJpYy1hcmNoLWRlY3RlY3Rpb24tZm9yLXBhZGRpbmctZGVmaW5lcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vZ2VuZXJpYy1hcmNoLWRlY3RlY3Rpb24tZm9yLXBhZGRpbmctZGVmaW5lcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJhN2U1NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2dlbmVyaWMtYXJjaC1kZWN0ZWN0aW9uLWZvci1wYWRkaW5nLWRlZmluZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1Gcm9tOiBOYXRoYW4gUm9zc2kgPG5hdGhhbi5yb3NzaUB4aWxpbnguY29tPgotRGF0ZTogVHVlLCAyNyBKYW4gMjAxNSAxNDo1OTozNSArMTAwMAotU3ViamVjdDogW1BBVENIXSBHZW5lcmljIGFyY2ggZGVjdGVjdGlvbiBmb3IgcGFkZGluZyBkZWZpbmVzCi0KLVdoZW4gYXZhaWxhYmxlIHVzZSB0aGUgR05VIEMgZGVmaW5lcyBmb3IgZW5kaWFuIGFuZCBiaXR3aWR0aCB0bwotZGV0ZXJtaW5lIHRoZSBwYWRkaW5nIHJlcXVpcmVkLiBUaGlzIHJlZHVjZXMgdGhlIG5lZWQgdG8gZGVmaW5lIHRoZQotcGFkZGluZyBzZWxlY3Rpb24gZm9yIGV2ZXJ5IGFyY2hpdGVjdHVyZS4KLQotU2lnbmVkLW9mZi1ieTogTmF0aGFuIFJvc3NpIDxuYXRoYW4ucm9zc2lAeGlsaW54LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEplZmYgTW95ZXIgPGptb3llckByZWRoYXQuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gc3JjL2xpYmFpby5oIHwgMTYgKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYmFpby5oIGIvc3JjL2xpYmFpby5oCi1pbmRleCAxMjIzMTQ2Li40YTRlMGY1IDEwMDY0NAotLS0tIGEvc3JjL2xpYmFpby5oCi0rKysgYi9zcmMvbGliYWlvLmgKLUBAIC01MiwxNCArNTIsMTggQEAgdHlwZWRlZiBlbnVtIGlvX2lvY2JfY21kIHsKLSAvKiBsaXR0bGUgZW5kaWFuLCAzMiBiaXRzICovCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IChkZWZpbmVkKF9fYXJtX18pICYmICFkZWZpbmVkKF9fQVJNRUJfXykpIHx8IFwKLSAgICAgZGVmaW5lZChfX3NoX18pIHx8IGRlZmluZWQoX19iZmluX18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fY3Jpc19fKQotKyAgICBkZWZpbmVkKF9fY3Jpc19fKSB8fCBcCi0rICAgIChkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBcCi0rICAgICAgICAgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18gJiYgX19TSVpFT0ZfTE9OR19fID09IDQpCi0gI2RlZmluZSBQQURERUQoeCwgeSkJeDsgdW5zaWduZWQgeQotICNkZWZpbmUgUEFEREVEcHRyKHgsIHkpCXg7IHVuc2lnbmVkIHkKLSAjZGVmaW5lIFBBRERFRHVsKHgsIHkpCXVuc2lnbmVkIGxvbmcgeDsgdW5zaWduZWQgeQotIAotIC8qIGxpdHRsZSBlbmRpYW4sIDY0IGJpdHMgKi8KLSAjZWxpZiBkZWZpbmVkKF9faWE2NF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBcCi0tICAgICAgKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykpCi0rICAgICAgKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykpIHx8IFwKLSsgICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX0JZVEVfT1JERVJfXykgJiYgXAotKyAgICAgICAgICBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXyAmJiBfX1NJWkVPRl9MT05HX18gPT0gOCkKLSAjZGVmaW5lIFBBRERFRCh4LCB5KQl4LCB5Ci0gI2RlZmluZSBQQURERURwdHIoeCwgeSkJeAotICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgbG9uZyB4Ci1AQCAtNjcsNyArNzEsOSBAQCB0eXBlZGVmIGVudW0gaW9faW9jYl9jbWQgewotIC8qIGJpZyBlbmRpYW4sIDY0IGJpdHMgKi8KLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IGRlZmluZWQoX19zMzkweF9fKSB8fCBcCi0gICAgICAgKGRlZmluZWQoX19zcGFyY19fKSAmJiBkZWZpbmVkKF9fYXJjaDY0X18pKSB8fCBcCi0tICAgICAgKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUJfXykpCi0rICAgICAgKGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUJfXykpIHx8IFwKLSsgICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX0JZVEVfT1JERVJfXykgJiYgXAotKyAgICAgICAgICAgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18gJiYgX19TSVpFT0ZfTE9OR19fID09IDgpCi0gI2RlZmluZSBQQURERUQoeCwgeSkJdW5zaWduZWQgeTsgeAotICNkZWZpbmUgUEFEREVEcHRyKHgseSkJeAotICNkZWZpbmUgUEFEREVEdWwoeCwgeSkJdW5zaWduZWQgbG9uZyB4Ci1AQCAtNzYsNyArODIsOSBAQCB0eXBlZGVmIGVudW0gaW9faW9jYl9jbWQgewotICNlbGlmIGRlZmluZWQoX19QUENfXykgfHwgZGVmaW5lZChfX3MzOTBfXykgfHwgXAotICAgICAgIChkZWZpbmVkKF9fYXJtX18pICYmIGRlZmluZWQoX19BUk1FQl9fKSkgfHwgXAotICAgICAgIGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19tNjhrX18pIHx8IFwKLS0gICAgICBkZWZpbmVkKF9faHBwYV9fKSB8fCBkZWZpbmVkKF9fZnJ2X18pIHx8IGRlZmluZWQoX19hdnIzMl9fKQotKyAgICAgIGRlZmluZWQoX19ocHBhX18pIHx8IGRlZmluZWQoX19mcnZfXykgfHwgZGVmaW5lZChfX2F2cjMyX18pIHx8IFwKLSsgICAgICAoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX0JZVEVfT1JERVJfXykgJiYgXAotKyAgICAgICAgICAgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18gJiYgX19TSVpFT0ZfTE9OR19fID09IDQpCi0gI2RlZmluZSBQQURERUQoeCwgeSkJdW5zaWduZWQgeTsgeAotICNkZWZpbmUgUEFEREVEcHRyKHgsIHkpCXVuc2lnbmVkIHk7IHgKLSAjZGVmaW5lIFBBRERFRHVsKHgsIHkpCXVuc2lnbmVkIHk7IHVuc2lnbmVkIGxvbmcgeAotLS0gCi0yLjEuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvL2xpYmFpb19maXhfZm9yX3gzMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzRiYTUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW8vbGliYWlvX2ZpeF9mb3JfeDMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVByb3Blcmx5IGxvYWQgYXJndW1lbnRzIDUgYW4gNiBmb3IgeDg2LTY0IHN5c2NhbGwKLVVzZSBhc20gKCJyMTAiKSBhbmQgYXNtICgicjgiKSB0byBsb2FkIGFyZ3VtZW50cyA1IGFuIDYgZm9yIHg4Ni02NAotc3lzY2FsbCBzbyB0aGF0IGl0IHdvcmtzIHdpdGggYm90aCB4MzIgYW5kIHg4Ni02NC4KLQotUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDExLzEyLzAyCi0KLS0tLSBsaWJhaW8tMC4zLjEwOS9zcmMvc3lzY2FsbC14ODZfNjQuaC54MzIJMjAwOS0xMC0wOSAxMToxNzowMi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJhaW8tMC4zLjEwOS9zcmMvc3lzY2FsbC14ODZfNjQuaAkyMDExLTEyLTAyIDA5OjA5OjA3LjUzNzYwMzIyNCAtMDgwMAotQEAgLTEsOCArMSwxOCBAQAotKyNpZm5kZWYgX19OUl9pb19zZXR1cAotICNkZWZpbmUgX19OUl9pb19zZXR1cAkJMjA2Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX05SX2lvX2Rlc3Ryb3kKLSAjZGVmaW5lIF9fTlJfaW9fZGVzdHJveQkJMjA3Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX05SX2lvX2dldGV2ZW50cwotICNkZWZpbmUgX19OUl9pb19nZXRldmVudHMJMjA4Ci0rI2VuZGlmCi0rI2lmbmRlZiBfX05SX2lvX3N1Ym1pdAotICNkZWZpbmUgX19OUl9pb19zdWJtaXQJCTIwOQotKyNlbmRpZgotKyNpZm5kZWYgX19OUl9pb19jYW5jZWwKLSAjZGVmaW5lIF9fTlJfaW9fY2FuY2VsCQkyMTAKLSsjZW5kaWYKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9jbG9iYmVyICJyMTEiLCJyY3giLCJtZW1vcnkiIAotICNkZWZpbmUgX19zeXNjYWxsICJzeXNjYWxsIgotQEAgLTQyLDEwICs1MiwxMSBAQCByZXR1cm4gX19yZXM7CQkJCQkJCQlcCi0gdHlwZSBmbmFtZSAodHlwZTEgYXJnMSwgdHlwZTIgYXJnMiwgdHlwZTMgYXJnMywgdHlwZTQgYXJnNCkJCVwKLSB7CQkJCQkJCQkJXAotIGxvbmcgX19yZXM7CQkJCQkJCQlcCi0tX19hc21fXyB2b2xhdGlsZSAoIm1vdnEgJTUsJSVyMTAgOyIgX19zeXNjYWxsCQkJCVwKLStyZWdpc3RlciBsb25nIF9fYTQgYXNtICgicjEwIikgPSAobG9uZykgYXJnNDsJCQkJXAotK19fYXNtX18gdm9sYXRpbGUgKF9fc3lzY2FsbAkJCQkJCVwKLSAJOiAiPWEiIChfX3JlcykJCQkJCQkJXAotIAk6ICIwIiAoX19OUl8jI3NuYW1lKSwiRCIgKChsb25nKShhcmcxKSksIlMiICgobG9uZykoYXJnMikpLAlcCi0tCSAgImQiICgobG9uZykoYXJnMykpLCJnIiAoKGxvbmcpKGFyZzQpKSA6IF9fc3lzY2FsbF9jbG9iYmVyLCJyMTAiICk7IFwKLSsJICAiZCIgKChsb25nKShhcmczKSksInIiIChfX2E0KSk7IFwKLSByZXR1cm4gX19yZXM7CQkJCQkJCQlcCi0gfSAKLSAKLUBAIC01NCwxMCArNjUsMTEgQEAgcmV0dXJuIF9fcmVzOwkJCQkJCQkJXAotIHR5cGUgZm5hbWUgKHR5cGUxIGFyZzEsdHlwZTIgYXJnMix0eXBlMyBhcmczLHR5cGU0IGFyZzQsdHlwZTUgYXJnNSkJXAotIHsJCQkJCQkJCQlcCi0gbG9uZyBfX3JlczsJCQkJCQkJCVwKLS1fX2FzbV9fIHZvbGF0aWxlICgibW92cSAlNSwlJXIxMCA7IG1vdnEgJTYsJSVyOCA7ICIgX19zeXNjYWxsCQlcCi0rcmVnaXN0ZXIgbG9uZyBfX2E0IGFzbSAoInIxMCIpID0gKGxvbmcpIGFyZzQ7CQkJCVwKLStyZWdpc3RlciBsb25nIF9fYTUgYXNtICgicjgiKSA9IChsb25nKSBhcmc1OwkJCQlcCi0rX19hc21fXyB2b2xhdGlsZSAoIF9fc3lzY2FsbAkJCQkJCVwKLSAJOiAiPWEiIChfX3JlcykJCQkJCQkJXAotIAk6ICIwIiAoX19OUl8jI3NuYW1lKSwiRCIgKChsb25nKShhcmcxKSksIlMiICgobG9uZykoYXJnMikpLAlcCi0tCSAgImQiICgobG9uZykoYXJnMykpLCJnIiAoKGxvbmcpKGFyZzQpKSwiZyIgKChsb25nKShhcmc1KSkgOglcCi0tCV9fc3lzY2FsbF9jbG9iYmVyLCJyOCIsInIxMCIgKTsJCQkJCVwKLSsJICAiZCIgKChsb25nKShhcmczKSksInIiIChfX2E0KSwiciIgKF9fYTUpKTsJCQlcCi0gcmV0dXJuIF9fcmVzOwkJCQkJCQkJXAotIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFpby9saWJhaW9fMC4zLjExMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU5NzVkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkFzeW5jaHJvbm91cyBJL08gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkFzeW5jaHJvbm91cyBpbnB1dC9vdXRwdXQgbGlicmFyeSB0aGF0IHVzZXMgdGhlIGtlcm5lbHMgbmF0aXZlIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9sc2Uuc291cmNlZm9yZ2UubmV0L2lvL2Fpby5odG1sIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYwNzI4VDA0MzQ0M1ovcG9vbC9tYWluL2xpYmEvJHtCUE59LyR7QlBOfV8ke1BWfS5vcmlnLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmljLWFyY2gtZGVjdGVjdGlvbi1mb3ItcGFkZGluZy1kZWZpbmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwX2FyY2hlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXN0ZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYmFpb19maXhfZm9yX3gzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJhaW9fZml4X2Zvcl9taXBzX3N5c2NhbGxzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N5c3RlbS1saW5rYWdlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmEzNTYwMmU0Mzc3ODM4M2UyZjQ5MDdhNGNhMzlhYjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTAxOTAyOGU2MzE3MjU3MjkzNzYyNTBlMzJiNDczMDEyZjdjYjY4ZTFmNzI3NWJmYzFiYmNkZDBmODc0NWY3ZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9saWJhL2xpYmFpby8iCi0KLUVYVFJBX09FTUFLRSA9KyAicHJlZml4PSR7cHJlZml4fSBpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0gbGliZGlyPSR7bGliZGlyfSIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYWlvL2xpYmFpb18wLjMuMTExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0YjUwYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhaW8vbGliYWlvXzAuMy4xMTEuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBc3luY2hyb25vdXMgSS9PIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJBc3luY2hyb25vdXMgaW5wdXQvb3V0cHV0IGxpYnJhcnkgdGhhdCB1c2VzIHRoZSBrZXJuZWxzIG5hdGl2ZSBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vbHNlLnNvdXJjZWZvcmdlLm5ldC9pby9haW8uaHRtbCIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9wYWd1cmUuaW8vbGliYWlvLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMF9hcmNoZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGVzdGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJhaW9fZml4X2Zvcl9taXBzX3N5c2NhbGxzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3N5c3RlbS1saW5rYWdlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImY2NmJlMjJhYjBhNTlhMzk4NTg5MDBhYjcyYThjNmE2ZThiMGI3ZWMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitFWFRSQV9PRU1BS0UgPSsgInByZWZpeD0ke3ByZWZpeH0gaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9IGxpYmRpcj0ke2xpYmRpcn0iCisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NWZlYzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0MTY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotbGliYXJjaGl2ZS0zLjMuMjogRml4IENWRS0yMDE3LTE0MTY2Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkzNQotCi1hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyOiBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBpbiB4bWxfZGF0YQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbW1pdC9mYTc0MzhhMGZmNDAzM2U0NzQxYzgwNzM5NGE5YWY2MjA3OTQwZDcxXQotQ1ZFOiBDVkUtMjAxNy0xNDE2NgotQnVnOiA5MzUKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYwotaW5kZXggN2EyMmJlYi4uOTNlZWFjYyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYwotQEAgLTEwNDAsNiArMTA0MCw5IEBAIGF0b2wxMChjb25zdCBjaGFyICpwLCBzaXplX3QgY2hhcl9jbnQpCi0gCXVpbnQ2NF90IGw7Ci0gCWludCBkaWdpdDsKLSAKLSsJaWYgKGNoYXJfY250ID09IDApCi0rCQlyZXR1cm4gKDApOwotKwotIAlsID0gMDsKLSAJZGlnaXQgPSAqcCAtICcwJzsKLSAJd2hpbGUgKGRpZ2l0ID49IDAgJiYgZGlnaXQgPCAxMCAgJiYgY2hhcl9jbnQtLSA+IDApIHsKLUBAIC0xMDU0LDcgKzEwNTcsMTAgQEAgYXRvbDgoY29uc3QgY2hhciAqcCwgc2l6ZV90IGNoYXJfY250KQotIHsKLSAJaW50NjRfdCBsOwotIAlpbnQgZGlnaXQ7Ci0tICAgICAgICAKLSsKLSsJaWYgKGNoYXJfY250ID09IDApCi0rCQlyZXR1cm4gKDApOwotKwotIAlsID0gMDsKLSAJd2hpbGUgKGNoYXJfY250LS0gPiAwKSB7Ci0gCQlpZiAoKnAgPj0gJzAnICYmICpwIDw9ICc3JykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTAzODEwMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIGY5NTY5YzA4NmZmMjkyNTljNzM3OTBkYjljYmYzOWZlOGZiOWQ4NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb2huIFN0YXJrcyA8am9zdGFya3NAbWljcm9zb2Z0LmNvbT4KLURhdGU6IFdlZCwgMjUgSnVsIDIwMTggMTI6MTY6MzQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gaXNvOTY2MDogdmFsaWRhdGUgZGlyZWN0b3J5IHJlY29yZCBsZW5ndGgKLQotQ1ZFOiBDVkUtMjAxNy0xNDUwMQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL21tYXR1c2thL2xpYmFyY2hpdmUvY29tbWl0LzEzZTg3ZGNkOWMzN2I1MzMxMjdjY2ViOWYzZTFlNWEzOGQ5NWU3ODRdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2lzbzk2NjAuYyB8IDE3ICsrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9pc285NjYwLmMKLWluZGV4IGYwMWQzN2JmLi4wODliYjcyMyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2lzbzk2NjAuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jCi1AQCAtNDA5LDcgKzQwOSw4IEBAIHN0YXRpYyBpbnQJbmV4dF9lbnRyeV9zZWVrKHN0cnVjdCBhcmNoaXZlX3JlYWQgKiwgc3RydWN0IGlzbzk2NjAgKiwKLSAJCSAgICBzdHJ1Y3QgZmlsZV9pbmZvICoqKTsKLSBzdGF0aWMgc3RydWN0IGZpbGVfaW5mbyAqCi0gCQlwYXJzZV9maWxlX2luZm8oc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwKLS0JCSAgICBzdHJ1Y3QgZmlsZV9pbmZvICpwYXJlbnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlzb2RpcnJlYyk7Ci0rCQkgICAgc3RydWN0IGZpbGVfaW5mbyAqcGFyZW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICppc29kaXJyZWMsCi0rCQkgICAgc2l6ZV90IHJlY2xlbik7Ci0gc3RhdGljIGludAlwYXJzZV9yb2NrcmlkZ2Uoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwKLSAJCSAgICBzdHJ1Y3QgZmlsZV9pbmZvICpmaWxlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzdGFydCwKLSAJCSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbmQpOwotQEAgLTEwMjIsNyArMTAyMyw3IEBAIHJlYWRfY2hpbGRyZW4oc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGZpbGVfaW5mbyAqcGFyZW50KQotIAkJCWlmICgqKHAgKyBEUl9uYW1lX2xlbl9vZmZzZXQpID09IDEKLSAJCQkgICAgJiYgKihwICsgRFJfbmFtZV9vZmZzZXQpID09ICdcMDAxJykKLSAJCQkJY29udGludWU7Ci0tCQkJY2hpbGQgPSBwYXJzZV9maWxlX2luZm8oYSwgcGFyZW50LCBwKTsKLSsJCQljaGlsZCA9IHBhcnNlX2ZpbGVfaW5mbyhhLCBwYXJlbnQsIHAsIGIgLSBwKTsKLSAJCQlpZiAoY2hpbGQgPT0gTlVMTCkgewotIAkJCQlfX2FyY2hpdmVfcmVhZF9jb25zdW1lKGEsIHNraXBfc2l6ZSk7Ci0gCQkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci1AQCAtMTExMiw3ICsxMTEzLDcgQEAgY2hvb3NlX3ZvbHVtZShzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgaXNvOTY2MCAqaXNvOTY2MCkKLSAJICovCi0gCXNlZW5Kb2xpZXQgPSBpc285NjYwLT5zZWVuSm9saWV0Oy8qIFNhdmUgZmxhZy4gKi8KLSAJaXNvOTY2MC0+c2VlbkpvbGlldCA9IDA7Ci0tCWZpbGUgPSBwYXJzZV9maWxlX2luZm8oYSwgTlVMTCwgYmxvY2spOwotKwlmaWxlID0gcGFyc2VfZmlsZV9pbmZvKGEsIE5VTEwsIGJsb2NrLCB2ZC0+c2l6ZSk7Ci0gCWlmIChmaWxlID09IE5VTEwpCi0gCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotIAlpc285NjYwLT5zZWVuSm9saWV0ID0gc2VlbkpvbGlldDsKLUBAIC0xMTQ0LDcgKzExNDUsNyBAQCBjaG9vc2Vfdm9sdW1lKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBpc285NjYwICppc285NjYwKQotIAkJCXJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0gCQl9Ci0gCQlpc285NjYwLT5zZWVuSm9saWV0ID0gMDsKLS0JCWZpbGUgPSBwYXJzZV9maWxlX2luZm8oYSwgTlVMTCwgYmxvY2spOwotKwkJZmlsZSA9IHBhcnNlX2ZpbGVfaW5mbyhhLCBOVUxMLCBibG9jaywgdmQtPnNpemUpOwotIAkJaWYgKGZpbGUgPT0gTlVMTCkKLSAJCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotIAkJaXNvOTY2MC0+c2VlbkpvbGlldCA9IHNlZW5Kb2xpZXQ7Ci1AQCAtMTc0OSw3ICsxNzUwLDcgQEAgYXJjaGl2ZV9yZWFkX2Zvcm1hdF9pc285NjYwX2NsZWFudXAoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSkKLSAgKi8KLSBzdGF0aWMgc3RydWN0IGZpbGVfaW5mbyAqCi0gcGFyc2VfZmlsZV9pbmZvKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBmaWxlX2luZm8gKnBhcmVudCwKLS0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXNvZGlycmVjKQotKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppc29kaXJyZWMsIHNpemVfdCByZWNsZW4pCi0gewotIAlzdHJ1Y3QgaXNvOTY2MCAqaXNvOTY2MDsKLSAJc3RydWN0IGZpbGVfaW5mbyAqZmlsZSwgKmZpbGVwOwotQEAgLTE3NjMsNyArMTc2NCwxMSBAQCBwYXJzZV9maWxlX2luZm8oc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGZpbGVfaW5mbyAqcGFyZW50LAotIAotIAlpc285NjYwID0gKHN0cnVjdCBpc285NjYwICopKGEtPmZvcm1hdC0+ZGF0YSk7Ci0gCi0tCWRyX2xlbiA9IChzaXplX3QpaXNvZGlycmVjW0RSX2xlbmd0aF9vZmZzZXRdOwotKwlpZiAocmVjbGVuID09IDAgfHwgcmVjbGVuIDwgKGRyX2xlbiA9IChzaXplX3QpaXNvZGlycmVjW0RSX2xlbmd0aF9vZmZzZXRdKSkgewotKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fTUlTQywKLSsJCQkiSW52YWxpZCBkaXJlY3RvcnkgcmVjb3JkIGxlbmd0aCIpOwotKwkJcmV0dXJuIChOVUxMKTsKLSsJfQotIAluYW1lX2xlbiA9IChzaXplX3QpaXNvZGlycmVjW0RSX25hbWVfbGVuX29mZnNldF07Ci0gCWxvY2F0aW9uID0gYXJjaGl2ZV9sZTMyZGVjKGlzb2RpcnJlYyArIERSX2V4dGVudF9vZmZzZXQpOwotIAlmc2l6ZSA9IHRvaShpc29kaXJyZWMgKyBEUl9zaXplX29mZnNldCwgRFJfc2l6ZV9zaXplKTsKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJlMTU0Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDU1NjI1NDViNTU2MmY2ZDEyYTRlZjk5MWZhZTE1OGJmNGNjZjkyYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb2VyZyBTb25uZW5iZXJnZXIgPGpvZXJnQGJlYy5kZT4KLURhdGU6IFNhdCwgOSBTZXAgMjAxNyAxNzo0NzozMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBBdm9pZCBhIHJlYWQgb2ZmLWJ5LW9uZSBlcnJvciBmb3IgVVRGMTYgbmFtZXMgaW4gUkFSCi0gYXJjaGl2ZXMuCi0KLVJlcG9ydGVkLUJ5OiBPU1MtRnV6eiBpc3N1ZSA1NzMKLQotQ1ZFOiBDVkUtMjAxNy0xNDUwMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYyB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotaW5kZXggY2JiMTRjMy4uNzUxZGU2OSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotQEAgLTE0OTYsNyArMTQ5NiwxMSBAQCByZWFkX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnksCi0gICAgICAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotICAgICAgIH0KLSAgICAgICBmaWxlbmFtZVtmaWxlbmFtZV9zaXplKytdID0gJ1wwJzsKLS0gICAgICBmaWxlbmFtZVtmaWxlbmFtZV9zaXplKytdID0gJ1wwJzsKLSsgICAgICAvKgotKyAgICAgICAqIERvIG5vdCBpbmNyZW1lbnQgZmlsZW5hbWVfc2l6ZSBoZXJlIGFzIHRoZSBjb21wdXRhdGlvbnMgYmVsb3cKLSsgICAgICAgKiBhZGQgdGhlIHNwYWNlIGZvciB0aGUgdGVybWluYXRpbmcgTlVMIGV4cGxpY2l0bHkuCi0rICAgICAgICovCi0rICAgICAgZmlsZW5hbWVbZmlsZW5hbWVfc2l6ZV0gPSAnXDAnOwotIAotICAgICAgIC8qIERlY29kZWQgdW5pY29kZSBmb3JtIGlzIFVURi0xNkJFLCBzbyB3ZSBoYXZlIHRvIHVwZGF0ZSBhIHN0cmluZwotICAgICAgICAqIGNvbnZlcnNpb24gb2JqZWN0IGZvciBpdC4gKi8KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MmZhNjhjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDUwMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMmM4YzgzYjk3MzFmZjgyMmZhZDZjYzhjNjcwZWE1NTE5YzM2NmExNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdAYmVjLmRlPgotRGF0ZTogVGh1LCAxOSBKdWwgMjAxOCAyMToxNDo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBSZWplY3QgTEhBIGFyY2hpdmUgZW50cmllcyB3aXRoIG5lZ2F0aXZlIHNpemUuCi0KLUNWRTogQ1ZFLTIwMTctMTQ1MDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0LzJjOGM4M2I5NzMxZmY4MjJmYWQ2Y2M4YzY3MGVhNTUxOWMzNjZhMTRdCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2xoYS5jCi1pbmRleCBiOGVmNGFlMS4uOTVjOTliYjEgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9saGEuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfbGhhLmMKLUBAIC03MDEsNiArNzAxLDEyIEBAIGFyY2hpdmVfcmVhZF9mb3JtYXRfbGhhX3JlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsCi0gCSAqIFByZXBhcmUgdmFyaWFibGVzIHVzZWQgdG8gcmVhZCBhIGZpbGUgY29udGVudC4KLSAJICovCi0gCWxoYS0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nID0gbGhhLT5jb21wc2l6ZTsKLSsJaWYgKGxoYS0+ZW50cnlfYnl0ZXNfcmVtYWluaW5nIDwgMCkgewotKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsCi0rCQkgICAgQVJDSElWRV9FUlJOT19GSUxFX0ZPUk1BVCwKLSsJCSAgICAiSW52YWxpZCBMSGEgZW50cnkgc2l6ZSIpOwotKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLSsJfQotIAlsaGEtPmVudHJ5X29mZnNldCA9IDA7Ci0gCWxoYS0+ZW50cnlfY3JjX2NhbGN1bGF0ZWQgPSAwOwotIAotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzEwNjYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTY2MmI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzEwNjYucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorbGliYXJjaGl2ZS0zLjMuMzogRml4IGJ1ZzEwNjYKKworW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvMTA2NgorCithcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfKi5jOiBmaXggb3V0IG9mIGJvdW5kcyByZWFkIG9uIGVtcHR5IHN0cmluZyAoKSBmaWxlbmFtZQorZm9yIGd1bnRhciwgcGF4IGFuZCB2N3RhcgorCitUaGVyZSBpcyBhbiBvdXQgb2YgYm91bmRzIHJlYWQgZmxhdyBpbiB0aGUgYXJjaGl2ZV93cml0ZV9nbnV0YXJfaGVhZGVyLAorYXJjaGl2ZV93cml0ZV9wYXhfaGVhZGVyIGFuZCBhcmNoaXZlX3dyaXRlX3Y3dGFyX2hlYWRlciBmdW5jdGlvbnMgd2hpY2gKK2NvdWxkIGxlZHMgdG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9jb21taXQvYzI0NmVjNWQwNThhM2Y3MGEyZDNmYjc2NWY5MmZlOWRiNzdiMjVkZl0KK0J1ZzogMTA2NgorU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCitpbmRleCAyZDg1OGM5Li4xOTY2YzUzIDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCitAQCAtMzM5LDcgKzMzOSw3IEBAIGFyY2hpdmVfd3JpdGVfZ251dGFyX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV93cml0ZSAqYSwKKyAJCSAqIGNhc2UgZ2V0dGluZyBXQ1MgZmFpbGVkLiBPbiBQT1NJWCwgdGhpcyBpcyBhCisgCQkgKiBub3JtYWwgb3BlcmF0aW9uLgorIAkJICovCistCQlpZiAocCAhPSBOVUxMICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CisrCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgeworIAkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKKyAKKyAJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7CitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYworaW5kZXggNmEzMDFhYy4uNGNmYThmZiAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYworQEAgLTY2MCw3ICs2NjAsNyBAQCBhcmNoaXZlX3dyaXRlX3BheF9oZWFkZXIoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEsCisgCQkJICogY2FzZSBnZXR0aW5nIFdDUyBmYWlsZWQuIE9uIFBPU0lYLCB0aGlzIGlzIGEKKyAJCQkgKiBub3JtYWwgb3BlcmF0aW9uLgorIAkJCSAqLworLQkJCWlmIChwICE9IE5VTEwgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKKysJCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgeworIAkJCQlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgYXM7CisgCisgCQkJCWFyY2hpdmVfc3RyaW5nX2luaXQoJmFzKTsKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYworaW5kZXggNjJiMTUyMi4uNTNjMGRiMCAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKK0BAIC0yODQsNyArMjg0LDcgQEAgYXJjaGl2ZV93cml0ZV92N3Rhcl9oZWFkZXIoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSkKKyAJCSAqIGNhc2UgZ2V0dGluZyBXQ1MgZmFpbGVkLiBPbiBQT1NJWCwgdGhpcyBpcyBhCisgCQkgKiBub3JtYWwgb3BlcmF0aW9uLgorIAkJICovCistCQlpZiAocCAhPSBOVUxMICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7CisrCQlpZiAocCAhPSBOVUxMICYmIHBbMF0gIT0gJ1wwJyAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgeworIAkJCXN0cnVjdCBhcmNoaXZlX3N0cmluZyBhczsKKyAKKyAJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnOTI5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzkyOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYzMjU0Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnOTI5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotbGliYXJjaGl2ZS0zLjMuMjogRml4IGJ1ZzkyOQotCi1bTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC85MjkKLQotYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW86IGhlYWRlcl9uZXdjKCk6IEF2b2lkIG92ZXJmbG93IHdoZW4gcmVhZGluZyBjb3JydXB0Ci1jcGlvIGFyY2hpdmUKLQotQSBjcGlvICJuZXdjIiBhcmNoaXZlIHdpdGggYSBuYW1lbGVuZ3RoIG9mICJGRkZGRkZGRiIsIGlmIHJlYWQgb24gYQotc3lzdGVtIHdpdGggYSAzMi1iaXQgc2l6ZV90LCB3b3VsZCByZXN1bHQgaW4gbmFtZWxlbmd0aCArIG5hbWVfcGFkCi1vdmVyZmxvd2luZyAzMiBiaXRzIGFuZCBsaWJhcmNoaXZlIGF0dGVtcHRpbmcgdG8gY29weSAyXjMyLTEgYnl0ZXMKLWZyb20gYSAyLWJ5dGUgYnVmZmVyLCB3aXRoIGFwcHJvcHJpYXRlbHkgaGlsYXJpb3VzIHJlc3VsdHMuCi0KLUNoZWNrIGZvciB0aGlzIG92ZXJmbG93IGFuZCBmYWlsOyB0aGVyZSdzIG5vIGxlZ2l0aW1hdGUgcmVhc29uIGZvciBhCi1jcGlvIGFyY2hpdmUgdG8gY29udGFpbiBhIGZpbGUgd2l0aCBhIG5hbWUgb3ZlciA0IGJpbGxpb24gY2hhcmFjdGVycwotaW4gbGVuZ3RoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbW1pdC9iYWM0NjU5ZTBiOTcwOTkwZTdlM2YzYTNkMjM5Mjk0ZTk2MzExNjMwXQotQnVnOiA5MjkKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCi1pbmRleCBhZDlmNzgyLi4xZmFhNjRkIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3Bpby5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKLUBAIC02MzMsNiArNjMzLDEzIEBAIGhlYWRlcl9uZXdjKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBjcGlvICpjcGlvLAotIAkvKiBQYWQgbmFtZSB0byAyIG1vcmUgdGhhbiBhIG11bHRpcGxlIG9mIDQuICovCi0gCSpuYW1lX3BhZCA9ICgyIC0gKm5hbWVsZW5ndGgpICYgMzsKLSAKLSsJLyogTWFrZSBzdXJlIHRoYXQgdGhlIHBhZGRlZCBuYW1lIGxlbmd0aCBmaXRzIGludG8gc2l6ZV90LiAqLwotKwlpZiAoKHNpemVfdCkoKm5hbWVsZW5ndGggKyAqbmFtZV9wYWQpIDwgKm5hbWVsZW5ndGgpIHsKLSsJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULAotKwkJICAgICJjcGlvIGFyY2hpdmUgaGFzIGludmFsaWQgbmFtZWxlbmd0aCIpOwotKwkJcmV0dXJuIChBUkNISVZFX0ZBVEFMKTsKLSsJfQotKwotIAkvKgotIAkgKiBOb3RlOiBlbnRyeV9ieXRlc19yZW1haW5pbmcgaXMgYXQgbGVhc3QgNjQgYml0cyBhbmQKLSAJICogdGhlcmVmb3JlIGd1YXJhbnRlZWQgdG8gYmUgYmlnIGVub3VnaCBmb3IgYSAzMy1iaXQgZmlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2Q5MGIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLVNVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKLURFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgotCi1ERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCi0KLVBBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIHh6IGx6byIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLQlsaWJ4bWwyIFwKLQkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAotIgotCi1ERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKLURFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCi1QQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgotUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHosIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCi1QQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKLVBBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgotUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgotUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2J1ZzkyOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDUwMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQ1MDMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQ1MDEucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ1ODNiZDZiMmViZjdlMGU4OTYzZDkwODc5ZWIxYjI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMmRiZDY5NTQ3OTJiMmMwNTRjY2Y4ZWM0YjMzMGE1NGI4NTkwNGE4MGNlZjQ3N2ExYzc0NjQzZGRhZmEwY2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUNQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCi0KLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KLQkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKLQljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCi19Ci0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgotCi1QQUNLQUdFUyA9KyAiYnNkdGFyIgotRklMRVNfYnNkdGFyID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLUFMVEVSTkFUSVZFX2JzZHRhciA9ICJ0YXIiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCi1BTFRFUk5BVElWRV9UQVJHRVRbdGFyXSA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1QQUNLQUdFUyA9KyAiYnNkY3BpbyIKLUZJTEVTX2JzZGNwaW8gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUFMVEVSTkFUSVZFX2JzZGNwaW8gPSAiY3BpbyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgotQUxURVJOQVRJVkVfVEFSR0VUW2NwaW9dID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZhM2Q0MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYgpAQCAtMCwwICsxLDY5IEBACitTVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCitERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDk5YWNhMDA2YmMzNDY5NzRiYjc0NWEzNTMzNjQyNSIKKworREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgorCitQQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiB4eiBsem8iCisKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisJbGlieG1sMiBcCisJJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKKyIKKworREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgorUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6LCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgorUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCitQQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKK1BBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVnMTA2Ni5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MDM4ZTM2NmNhNWI2NTlkYWUzZWZjYzc0NGU3MjEyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYTdlYjE3ODFjOWZiYmFlMTc4YzRjNmJhZDFjNmViMDhlZGFiOWExNDk2YzY0ODMzZDE3MTVkMDIyYjMwZTJlIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZworCitDUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCisJIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0CisJY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLworfQorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKKworUEFDS0FHRVMgPSsgImJzZHRhciIKK0ZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitBTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgorQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworUEFDS0FHRVMgPSsgImJzZGNwaW8iCitGSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitBTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkNWZhYWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5NCArMCwwIEBACi1Gcm9tIDcxNDhhZGYzNGRhZTMwMzQ1YzJlNGQ5ZDQzNzgzOGE0NWJhNmY2ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P3V0Zjg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBXZWQsIDEgRmViIDIwMTcgMTE6MDY6MzkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IC1XZm9ybWF0IHdhcm5pbmdzCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGV4YW1wbGVzL2V4YW1wbGUuYyAgICAgfCAgNiArKystLS0KLSBleGFtcGxlcy9leGFtcGxlMy5jICAgIHwgIDQgKystLQotIGV4YW1wbGVzL2V4YW1wbGU0LmMgICAgfCAgNCArKy0tCi0gZXhhbXBsZXMvZXhhbXBsZTUuYyAgICB8ICAyICstCi0gc3JjL2lkbi5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvdHN0X2lkbmEuYyAgICAgICB8IDI1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSB0ZXN0cy90c3RfaWRuYTIuYyAgICAgIHwgIDggKysrKy0tLS0KLSB0ZXN0cy90c3RfaWRuYTMuYyAgICAgIHwgIDggKysrKy0tLS0KLSB0ZXN0cy90c3RfbmZrYy5jICAgICAgIHwgIDggKysrKy0tLS0KLSB0ZXN0cy90c3RfcHIyOS5jICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gdGVzdHMvdHN0X3B1bnljb2RlLmMgICB8IDEzICsrKysrKystLS0tLS0KLSB0ZXN0cy90c3Rfc3RyZXJyb3IuYyAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KLSB0ZXN0cy90c3Rfc3RyaW5ncHJlcC5jIHwgMTIgKysrKysrLS0tLS0tCi0gdGVzdHMvdHN0X3RsZC5jICAgICAgICB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCi0gdGVzdHMvdXRpbHMuYyAgICAgICAgICB8ICA2ICsrKy0tLQotIDE1IGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZS5jIGIvZXhhbXBsZXMvZXhhbXBsZS5jCi1pbmRleCA2ZTkxNzgzLi4yNGY2NGUwIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvZXhhbXBsZS5jCi0rKysgYi9leGFtcGxlcy9leGFtcGxlLmMKLUBAIC01NSw3ICs1NSw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJCZWZvcmUgbG9jYWxlMnV0ZjggKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCi0tICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICBwID0gc3RyaW5ncHJlcF9sb2NhbGVfdG9fdXRmOCAoYnVmKTsKLUBAIC02OSw3ICs2OSw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJCZWZvcmUgc3RyaW5ncHJlcCAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKLSsgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOwotICAgcHJpbnRmICgiXG4iKTsKLSAKLSAgIHJjID0gc3RyaW5ncHJlcCAoYnVmLCBCVUZTSVosIDAsIHN0cmluZ3ByZXBfbmFtZXByZXApOwotQEAgLTc5LDcgKzc5LDcgQEAgbWFpbiAodm9pZCkKLSAgICAgewotICAgICAgIHByaW50ZiAoIkFmdGVyIHN0cmluZ3ByZXAgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7Ci0gICAgICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQotLQlwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOwotKwlwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7Ci0gICAgICAgcHJpbnRmICgiXG4iKTsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2V4YW1wbGVzL2V4YW1wbGUzLmMgYi9leGFtcGxlcy9leGFtcGxlMy5jCi1pbmRleCBmYzExYzFjLi5mZmI5MDQyIDEwMDY0NAotLS0tIGEvZXhhbXBsZXMvZXhhbXBsZTMuYwotKysrIGIvZXhhbXBsZXMvZXhhbXBsZTMuYwotQEAgLTU2LDcgKzU2LDcgQEAgbWFpbiAodm9pZCkKLSAKLSAgIHByaW50ZiAoIlJlYWQgc3RyaW5nIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOwotICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQotLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOwotKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7Ci0gICBwcmludGYgKCJcbiIpOwotIAotICAgcmMgPSBpZG5hX3RvX2FzY2lpX2x6IChidWYsICZwLCAwKTsKLUBAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOwotICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7Ci0gICBwcmludGYgKCJcbiIpOwotIAotICAgZnJlZSAocCk7Ci1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTQuYyBiL2V4YW1wbGVzL2V4YW1wbGU0LmMKLWluZGV4IDFiMzE5YzkuLmEzMzE1YTEgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9leGFtcGxlNC5jCi0rKysgYi9leGFtcGxlcy9leGFtcGxlNC5jCi1AQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQotIAotICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCi0tICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICByYyA9IGlkbmFfdG9fdW5pY29kZV9semx6IChidWYsICZwLCAwKTsKLUBAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCi0gCi0gICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOwotICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKLS0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7Ci0gICBwcmludGYgKCJcbiIpOwotIAotICAgZnJlZSAocCk7Ci1kaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTUuYyBiL2V4YW1wbGVzL2V4YW1wbGU1LmMKLWluZGV4IGRmNTU3OTguLjI5ZDQwYjkgMTAwNjQ0Ci0tLS0gYS9leGFtcGxlcy9leGFtcGxlNS5jCi0rKysgYi9leGFtcGxlcy9leGFtcGxlNS5jCi1AQCAtNjgsNyArNjgsNyBAQCBtYWluICh2b2lkKQotIAotICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7Ci0gICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCi0tICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7Ci0rICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKLSAgIHByaW50ZiAoIlxuIik7Ci0gCi0gICBwID0gc3RyaW5ncHJlcF9sb2NhbGVfdG9fdXRmOCAoYnVmKTsKLWRpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKLWluZGV4IGJlMWM3ZDEuLjEzZWIzYzkgMTAwNjQ0Ci0tLS0gYS9zcmMvaWRuLmMKLSsrKyBiL3NyYy9pZG4uYwotQEAgLTQxOSw3ICs0MTksNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgICAgICBzaXplX3QgaTsKLSAJICAgICAgZm9yIChpID0gMDsgcFtpXTsgaSsrKQotIAkJZnByaW50ZiAoc3RkZXJyLCAib3V0cHV0WyVsdV0gPSBVKyUwNHhcbiIsCi0tCQkJICh1bnNpZ25lZCBsb25nKSBpLCBwW2ldKTsKLSsJCQkgKHVuc2lnbmVkIGxvbmcpIGksICh1bnNpZ25lZCkgcFtpXSk7Ci0gCSAgICB9Ci0gCi0gCSAgZnByaW50ZiAoc3Rkb3V0LCAiJXNcbiIsIHApOwotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hLmMgYi90ZXN0cy90c3RfaWRuYS5jCi1pbmRleCA0MTU3NjRlLi40YWMwNDZmIDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X2lkbmEuYwotKysrIGIvdGVzdHMvdHN0X2lkbmEuYwotQEAgLTIyMCwxMyArMjIwLDE0IEBAIGRvaXQgKHZvaWQpCi0gICBjaGFyIGxhYmVsWzEwMF07Ci0gICB1aW50MzJfdCAqdWNzNGxhYmVsID0gTlVMTDsKLSAgIHVpbnQzMl90IHRtcFsxMDBdOwotLSAgc2l6ZV90IGxlbiwgbGVuMiwgaTsKLSsgIHNpemVfdCBsZW4sIGxlbjI7Ci0gICBpbnQgcmM7Ci0rICB1bnNpZ25lZCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0tCXByaW50ZiAoIklETkEgZW50cnkgJWxkOiAlc1xuIiwgaSwgaWRuYVtpXS5uYW1lKTsKLSsJcHJpbnRmICgiSUROQSBlbnRyeSAldTogJXNcbiIsIGksIGlkbmFbaV0ubmFtZSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci1AQCAtMjM3LDcgKzIzOCw3IEBAIGRvaXQgKHZvaWQpCi0gICAgICAgcmMgPSBpZG5hX3RvX2FzY2lpXzRpIChpZG5hW2ldLmluLCBpZG5hW2ldLmlubGVuLCBsYWJlbCwgaWRuYVtpXS5mbGFncyk7Ci0gICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG9hc2NpaXJjKQotIAl7Ci0tCSAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSsJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGNvbnRpbnVlOwotQEAgLTI1Niw3ICsyNTcsNyBAQCBkb2l0ICh2b2lkKQotIAkgIGlmIChzdHJsZW4gKGlkbmFbaV0ub3V0KSAhPSBzdHJsZW4gKGxhYmVsKSB8fAotIAkgICAgICBzdHJjYXNlY21wIChpZG5hW2ldLm91dCwgbGFiZWwpICE9IDApCi0gCSAgICB7Ci0tCSAgICAgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgICAgICBpZiAoZGVidWcpCi0gCQlwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgICB9Ci1AQCAtMjczLDggKzI3NCw4IEBAIGRvaXQgKHZvaWQpCi0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci0tCSAgcHJpbnRmICgiaW46ICVzICglbGQ9PSVsZClcbiIsIGlkbmFbaV0ub3V0LCBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKLS0JCSAgbGVuKTsKLSsJICBwcmludGYgKCJpbjogJXMgKCVkPT0lZClcbiIsIGlkbmFbaV0ub3V0LCAoaW50KSBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKLSsJCSAgKGludCkgbGVuKTsKLSAJICB1Y3M0cHJpbnQgKHVjczRsYWJlbCwgbGVuKTsKLSAJfQotIAotQEAgLTI4MiwyMCArMjgzLDIwIEBAIGRvaXQgKHZvaWQpCi0gICAgICAgcmMgPSBpZG5hX3RvX3VuaWNvZGVfNDRpICh1Y3M0bGFiZWwsIGxlbiwgdG1wLCAmbGVuMiwgaWRuYVtpXS5mbGFncyk7Ci0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci0tCSAgcHJpbnRmICgiZXhwZWN0ZWQgb3V0ICglbGQpOlxuIiwKLSsJICBwcmludGYgKCJleHBlY3RlZCBvdXQgKCVsdSk6XG4iLAotIAkJICByYyA9PSBJRE5BX1NVQ0NFU1MgPyBpZG5hW2ldLmlubGVuIDogbGVuKTsKLSAJICBpZiAocmMgPT0gSUROQV9TVUNDRVNTKQotIAkgICAgdWNzNHByaW50IChpZG5hW2ldLmluLCBpZG5hW2ldLmlubGVuKTsKLSAJICBlbHNlCi0gCSAgICB1Y3M0cHJpbnQgKHVjczRsYWJlbCwgbGVuKTsKLSAKLS0JICBwcmludGYgKCJjb21wdXRlZCBvdXQgKCVsZCk6XG4iLCBsZW4yKTsKLSsJICBwcmludGYgKCJjb21wdXRlZCBvdXQgKCVkKTpcbiIsIChpbnQpIGxlbjIpOwotIAkgIHVjczRwcmludCAodG1wLCBsZW4yKTsKLSAJfQotIAotICAgICAgIGlmIChyYyAhPSBpZG5hW2ldLnRvdW5pY29kZXJjKQotIAl7Ci0tCSAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSsJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgaWYgKGRlYnVnKQotIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOwotIAkgIGNvbnRpbnVlOwotQEAgLTMwOSwxMSArMzEwLDExIEBAIGRvaXQgKHZvaWQpCi0gCSAgaWYgKGRlYnVnKQotIAkgICAgewotIAkgICAgICBpZiAocmMgPT0gSUROQV9TVUNDRVNTKQotLQkJcHJpbnRmICgibGVuPSVsZCBsZW4yPSVsZFxuIiwgbGVuMiwgaWRuYVtpXS5pbmxlbik7Ci0rCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuMiwgKGludCkgaWRuYVtpXS5pbmxlbik7Ci0gCSAgICAgIGVsc2UKLS0JCXByaW50ZiAoImxlbj0lbGQgbGVuMj0lbGRcbiIsIGxlbiwgbGVuMik7Ci0rCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuLCAoaW50KSBsZW4yKTsKLSAJICAgIH0KLS0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKLSsJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKLSAJfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMi5jIGIvdGVzdHMvdHN0X2lkbmEyLmMKLWluZGV4IDY1YjNhNGQuLjM4OTMyY2EgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3RfaWRuYTIuYwotKysrIGIvdGVzdHMvdHN0X2lkbmEyLmMKLUBAIC00NjEsMTQgKzQ2MSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlkbmEgaWRuYVtdID0gewotIHZvaWQKLSBkb2l0ICh2b2lkKQotIHsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAgIGNoYXIgKm91dDsKLSAgIGludCByYzsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGlkbmEpIC8gc2l6ZW9mIChpZG5hWzBdKTsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotLQlwcmludGYgKCJJRE5BMiBlbnRyeSAlbGRcbiIsIGkpOwotKwlwcmludGYgKCJJRE5BMiBlbnRyeSAldVxuIiwgaSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci1AQCAtNDg3LDcgKzQ4Nyw3IEBAIGRvaXQgKHZvaWQpCi0gCQkJICAgICBJRE5BX1VTRV9TVEQzX0FTQ0lJX1JVTEVTKTsKLSAgICAgICBpZiAocmMgIT0gSUROQV9TVUNDRVNTICYmIHN0cmxlbiAoaWRuYVtpXS5vdXQpID4gMCkKLSAJewotLQkgIGZhaWwgKCJJRE5BMiBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJJRE5BMiBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLUBAIC01MDQsNyArNTA0LDcgQEAgZG9pdCAodm9pZCkKLSAJICBpZiAoc3RybGVuIChpZG5hW2ldLm91dCkgIT0gc3RybGVuIChvdXQpIHx8Ci0gCSAgICAgIHN0cmNhc2VjbXAgKGlkbmFbaV0ub3V0LCBvdXQpICE9IDApCi0gCSAgICB7Ci0tCSAgICAgIGZhaWwgKCJJRE5BMiBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKLSsJICAgICAgZmFpbCAoIklETkEyIGVudHJ5ICV1IGZhaWxlZFxuIiwgaSk7Ci0gCSAgICAgIGlmIChkZWJ1ZykKLSAJCXByaW50ZiAoIkVSUk9SXG4iKTsKLSAJICAgIH0KLWRpZmYgLS1naXQgYS90ZXN0cy90c3RfaWRuYTMuYyBiL3Rlc3RzL3RzdF9pZG5hMy5jCi1pbmRleCBhMTg5Mzc4Li5mNjU2MjhjIDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X2lkbmEzLmMKLSsrKyBiL3Rlc3RzL3RzdF9pZG5hMy5jCi1AQCAtNTksMTMgKzU5LDEzIEBAIGRvaXQgKHZvaWQpCi0gewotICAgaW50IHJjOwotICAgY2hhciAqb3V0ID0gTlVMTDsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGlkbmEpIC8gc2l6ZW9mIChpZG5hWzBdKTsgaSsrKQotICAgICB7Ci0gICAgICAgcmMgPSBpZG5hX3RvX3VuaWNvZGVfOHo4eiAoaWRuYVtpXS5pbiwgJm91dCwgMCk7Ci0gICAgICAgaWYgKHJjICE9IElETkFfU1VDQ0VTUykKLS0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkICVkXG4iLCBpLCByYyk7Ci0rCWZhaWwgKCJJRE5BM1sldV0gZmFpbGVkICVkXG4iLCBpLCByYyk7Ci0gCi0gICAgICAgaWYgKGRlYnVnICYmIHJjID09IElETkFfU1VDQ0VTUykKLSAJewotQEAgLTc1LDkgKzc1LDkgQEAgZG9pdCAodm9pZCkKLSAJfQotIAotICAgICAgIGlmIChzdHJjbXAgKG91dCwgaWRuYVtpXS5vdXQpICE9IDApCi0tCWZhaWwgKCJJRE5BM1slbGRdIGZhaWxlZFxuIiwgaSk7Ci0rCWZhaWwgKCJJRE5BM1sldV0gZmFpbGVkXG4iLCBpKTsKLSAgICAgICBlbHNlIGlmIChkZWJ1ZykKLS0JcHJpbnRmICgiSUROQTNbJWxkXSBzdWNjZXNzXG4iLCBpKTsKLSsJcHJpbnRmICgiSUROQTNbJXVdIHN1Y2Nlc3NcbiIsIGkpOwotIAotICAgICAgIGlmIChvdXQpCi0gCWlkbl9mcmVlIChvdXQpOwotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9uZmtjLmMgYi90ZXN0cy90c3RfbmZrYy5jCi1pbmRleCBkMTUwZmVjLi5mNWFmOWM2IDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X25ma2MuYwotKysrIGIvdGVzdHMvdHN0X25ma2MuYwotQEAgLTY4LDE4ICs2OCwxOCBAQCB2b2lkCi0gZG9pdCAodm9pZCkKLSB7Ci0gICBjaGFyICpvdXQ7Ci0tICBzaXplX3QgaTsKLSsgIHVuc2lnbmVkIGk7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChuZmtjKSAvIHNpemVvZiAobmZrY1swXSk7IGkrKykKLSAgICAgewotICAgICAgIGlmIChkZWJ1ZykKLS0JcHJpbnRmICgiTkZLQyBlbnRyeSAlbGRcbiIsIGkpOwotKwlwcmludGYgKCJORktDIGVudHJ5ICV1XG4iLCBpKTsKLSAKLSAgICAgICBvdXQgPSBzdHJpbmdwcmVwX3V0ZjhfbmZrY19ub3JtYWxpemUgKG5ma2NbaV0uaW4sCi0gCQkJCQkgICAgKHNzaXplX3QpIHN0cmxlbiAobmZrY1tpXS5pbikpOwotICAgICAgIGlmIChvdXQgPT0gTlVMTCkKLSAJewotLQkgIGZhaWwgKCJORktDIGVudHJ5ICVsZCBmYWlsZWQgZmF0YWxseVxuIiwgaSk7Ci0rCSAgZmFpbCAoIk5GS0MgZW50cnkgJXUgZmFpbGVkIGZhdGFsbHlcbiIsIGkpOwotIAkgIGNvbnRpbnVlOwotIAl9Ci0gCi1AQCAtMTE0LDcgKzExNCw3IEBAIGRvaXQgKHZvaWQpCi0gICAgICAgaWYgKHN0cmxlbiAobmZrY1tpXS5vdXQpICE9IHN0cmxlbiAob3V0KSB8fAotIAkgIG1lbWNtcCAobmZrY1tpXS5vdXQsIG91dCwgc3RybGVuIChvdXQpKSAhPSAwKQotIAl7Ci0tCSAgZmFpbCAoIk5GS0MgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgZmFpbCAoIk5GS0MgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJFUlJPUlxuIik7Ci0gCX0KLWRpZmYgLS1naXQgYS90ZXN0cy90c3RfcHIyOS5jIGIvdGVzdHMvdHN0X3ByMjkuYwotaW5kZXggM2RjNTQ2Ni4uMTFkMGVkZSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RzdF9wcjI5LmMKLSsrKyBiL3Rlc3RzL3RzdF9wcjI5LmMKLUBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHYgdHZbXSA9IHsKLSB2b2lkCi0gZG9pdCAodm9pZCkKLSB7Ci0tICBzaXplX3QgaTsKLSsgIHVuc2lnbmVkIGk7Ci0gICBpbnQgcmM7Ci0gCi0gICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mICh0dikgLyBzaXplb2YgKHR2WzBdKTsgaSsrKQotQEAgLTEwMCw3ICsxMDAsNyBAQCBkb2l0ICh2b2lkKQotIAl7Ci0gCSAgdWludDMyX3QgKnAsICpxOwotIAotLQkgIHByaW50ZiAoIlBSMjkgZW50cnkgJWxkOiAlc1xuIiwgaSwgdHZbaV0ubmFtZSk7Ci0rCSAgcHJpbnRmICgiUFIyOSBlbnRyeSAldTogJXNcbiIsIGksIHR2W2ldLm5hbWUpOwotIAotIAkgIHByaW50ZiAoImluOlxuIik7Ci0gCSAgdWNzNHByaW50ICh0dltpXS5pbiwgdHZbaV0uaW5sZW4pOwotQEAgLTEyMCw3ICsxMjAsNyBAQCBkb2l0ICh2b2lkKQotICAgICAgIHJjID0gcHIyOV80ICh0dltpXS5pbiwgdHZbaV0uaW5sZW4pOwotICAgICAgIGlmIChyYyAhPSB0dltpXS5yYykKLSAJewotLQkgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7Ci0rCSAgZmFpbCAoIlBSMjkgZW50cnkgJXUgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0xMjksNyArMTI5LDcgQEAgZG9pdCAodm9pZCkKLSAgICAgICByYyA9IHByMjlfNHogKHR2W2ldLmluKTsKLSAgICAgICBpZiAocmMgIT0gdHZbaV0ucmMpCi0gCXsKLS0JICBmYWlsICgiUFIyOSBlbnRyeSAlbGQgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOwotKwkgIGZhaWwgKCJQUjI5IGVudHJ5ICV1IGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJGQVRBTFxuIik7Ci0gCSAgY29udGludWU7Ci1AQCAtMTQyLDcgKzE0Miw3IEBAIGRvaXQgKHZvaWQpCi0gCXAgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAodHZbaV0uaW4sIChzc2l6ZV90KSB0dltpXS5pbmxlbiwKLSAJCQkJICAgICAmaXRlbXNfcmVhZCwgJml0ZW1zX3dyaXR0ZW4pOwotIAlpZiAocCA9PSBOVUxMKQotLQkgIGZhaWwgKCJGQUlMOiBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCh0dlslbGRdKSA9PSBOVUxMXG4iLCBpKTsKLSsJICBmYWlsICgiRkFJTDogc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjgodHZbJXVdKSA9PSBOVUxMXG4iLCBpKTsKLSAJaWYgKGRlYnVnKQotIAkgIGhleHByaW50IChwLCBzdHJsZW4gKHApKTsKLSAKLUBAIC0xNTAsNyArMTUwLDcgQEAgZG9pdCAodm9pZCkKLSAJZnJlZSAocCk7Ci0gCWlmIChyYyAhPSB0dltpXS5yYykKLSAJICB7Ci0tCSAgICBmYWlsICgiUFIyOSBlbnRyeSAlbGQgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLAotKwkgICAgZmFpbCAoIlBSMjkgZW50cnkgJXUgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLAotIAkJICBpLCB0dltpXS5yYywgcmMpOwotIAkgICAgaWYgKGRlYnVnKQotIAkgICAgICBwcmludGYgKCJGQVRBTFxuIik7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X3B1bnljb2RlLmMgYi90ZXN0cy90c3RfcHVueWNvZGUuYwotaW5kZXggNDkzYjhhMi4uOTk3NzQ0YSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RzdF9wdW55Y29kZS5jCi0rKysgYi90ZXN0cy90c3RfcHVueWNvZGUuYwotQEAgLTE3Myw3ICsxNzMsOCBAQCBkb2l0ICh2b2lkKQotICAgY2hhciAqcDsKLSAgIHVpbnQzMl90ICpxOwotICAgaW50IHJjOwotLSAgc2l6ZV90IGksIG91dGxlbjsKLSsgIHNpemVfdCBvdXRsZW47Ci0rICB1bnNpZ25lZCBpOwotIAotICAgcCA9IG1hbGxvYyAoc2l6ZW9mICgqcCkgKiBCVUZTSVopOwotICAgaWYgKHAgPT0gTlVMTCkKLUBAIC0xODYsNyArMTg3LDcgQEAgZG9pdCAodm9pZCkKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHB1bnljb2RlKSAvIHNpemVvZiAocHVueWNvZGVbMF0pOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoZGVidWcpCi0tCXByaW50ZiAoIlBVTllDT0RFIGVudHJ5ICVsZDogJXNcbiIsIGksIHB1bnljb2RlW2ldLm5hbWUpOwotKwlwcmludGYgKCJQVU5ZQ09ERSBlbnRyeSAldTogJXNcbiIsIGksIHB1bnljb2RlW2ldLm5hbWUpOwotIAotICAgICAgIGlmIChkZWJ1ZykKLSAJewotQEAgLTE5OSw3ICsyMDAsNyBAQCBkb2l0ICh2b2lkKQotIAkJCSAgICBOVUxMLCAmb3V0bGVuLCBwKTsKLSAgICAgICBpZiAocmMgIT0gcHVueWNvZGVbaV0ucmMpCi0gCXsKLS0JICBmYWlsICgicHVueWNvZGVfZW5jb2RlKCkgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSsJICBmYWlsICgicHVueWNvZGVfZW5jb2RlKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0yMjEsNyArMjIyLDcgQEAgZG9pdCAodm9pZCkKLSAJICBpZiAoc3RybGVuIChwdW55Y29kZVtpXS5vdXQpICE9IHN0cmxlbiAocCkgfHwKLSAJICAgICAgbWVtY21wIChwdW55Y29kZVtpXS5vdXQsIHAsIHN0cmxlbiAocCkpICE9IDApCi0gCSAgICB7Ci0tCSAgICAgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgICBmYWlsICgicHVueWNvZGUoKSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgICAgICBpZiAoZGVidWcpCi0gCQlwcmludGYgKCJFUlJPUlxuIik7Ci0gCSAgICB9Ci1AQCAtMjQxLDcgKzI0Miw3IEBAIGRvaXQgKHZvaWQpCi0gCQkJICAgICZvdXRsZW4sIHEsIE5VTEwpOwotICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKLSAJewotLQkgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7Ci0rCSAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBjb250aW51ZTsKLUBAIC0yNjIsNyArMjYzLDcgQEAgZG9pdCAodm9pZCkKLSAJICBpZiAocHVueWNvZGVbaV0uaW5sZW4gIT0gb3V0bGVuIHx8Ci0gCSAgICAgIG1lbWNtcCAocHVueWNvZGVbaV0uaW4sIHEsIG91dGxlbikgIT0gMCkKLSAJICAgIHsKLS0JICAgICAgZmFpbCAoInB1bnljb2RlX2RlY29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgICBmYWlsICgicHVueWNvZGVfZGVjb2RlKCkgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKLSAJICAgICAgaWYgKGRlYnVnKQotIAkJcHJpbnRmICgiRVJST1JcbiIpOwotIAkgICAgfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJlcnJvci5jIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKLWluZGV4IDcxZmZmNTkuLjczMGY1ZTQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90c3Rfc3RyZXJyb3IuYwotKysrIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKLUBAIC0xMTAsNyArMTEwLDcgQEAgZG9pdCAodm9pZCkKLSAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBhbGwgZXJyb3IgY29kZXMuICovCi0gCi0gICB7Ci0tICAgIHNpemVfdCBpOwotKyAgICB1bnNpZ25lZCBpOwotICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOwotIAotICAgICBmb3IgKGkgPSAwOzsgaSsrKQotQEAgLTEyNiwxMyArMTI2LDEzIEBAIGRvaXQgKHZvaWQpCi0gCSAgICBicmVhazsKLSAJICB9Ci0gCWlmIChkZWJ1ZykKLS0JICBwcmludGYgKCJpZG5hICVsZDogJXNcbiIsIGksIHApOwotKwkgIHByaW50ZiAoImlkbmEgJXU6ICVzXG4iLCBpLCBwKTsKLSAJbGFzdF9wID0gcDsKLSAgICAgICB9Ci0gICB9Ci0gCi0gICB7Ci0tICAgIHNpemVfdCBpOwotKyAgICB1bnNpZ25lZCBpOwotICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOwotIAotICAgICBmb3IgKGkgPSAwOzsgaSsrKQotQEAgLTE0MSwxMyArMTQxLDEzIEBAIGRvaXQgKHZvaWQpCi0gCWlmIChwID09IGxhc3RfcCkKLSAJICBicmVhazsKLSAJaWYgKGRlYnVnKQotLQkgIHByaW50ZiAoInByMjkgJWxkOiAlc1xuIiwgaSwgcCk7Ci0rCSAgcHJpbnRmICgicHIyOSAldTogJXNcbiIsIGksIHApOwotIAlsYXN0X3AgPSBwOwotICAgICAgIH0KLSAgIH0KLSAKLSAgIHsKLS0gICAgc2l6ZV90IGk7Ci0rICAgIHVuc2lnbmVkIGk7Ci0gICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7Ci0gCi0gICAgIGZvciAoaSA9IDA7OyBpKyspCi1AQCAtMTU2LDEzICsxNTYsMTMgQEAgZG9pdCAodm9pZCkKLSAJaWYgKHAgPT0gbGFzdF9wKQotIAkgIGJyZWFrOwotIAlpZiAoZGVidWcpCi0tCSAgcHJpbnRmICgicHVueWNvZGUgJWxkOiAlc1xuIiwgaSwgcCk7Ci0rCSAgcHJpbnRmICgicHVueWNvZGUgJXU6ICVzXG4iLCBpLCBwKTsKLSAJbGFzdF9wID0gcDsKLSAgICAgICB9Ci0gICB9Ci0gCi0gICB7Ci0tICAgIHNpemVfdCBpOwotKyAgICB1bnNpZ25lZCBpOwotICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOwotIAotICAgICBmb3IgKGkgPSAwOzsgaSsrKQotQEAgLTE4MywxMyArMTgzLDEzIEBAIGRvaXQgKHZvaWQpCi0gCSAgICBicmVhazsKLSAJICB9Ci0gCWlmIChkZWJ1ZykKLS0JICBwcmludGYgKCJzdHJpbmdwcmVwICVsZDogJXNcbiIsIGksIHApOwotKwkgIHByaW50ZiAoInN0cmluZ3ByZXAgJXU6ICVzXG4iLCBpLCBwKTsKLSAJbGFzdF9wID0gcDsKLSAgICAgICB9Ci0gICB9Ci0gCi0gICB7Ci0tICAgIHNpemVfdCBpOwotKyAgICB1bnNpZ25lZCBpOwotICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOwotIAotICAgICBmb3IgKGkgPSAwOzsgaSsrKQotQEAgLTE5OCw3ICsxOTgsNyBAQCBkb2l0ICh2b2lkKQotIAlpZiAocCA9PSBsYXN0X3ApCi0gCSAgYnJlYWs7Ci0gCWlmIChkZWJ1ZykKLS0JICBwcmludGYgKCJ0bGQgJWxkOiAlc1xuIiwgaSwgcCk7Ci0rCSAgcHJpbnRmICgidGxkICV1OiAlc1xuIiwgaSwgcCk7Ci0gCWxhc3RfcCA9IHA7Ci0gICAgICAgfQotICAgfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJpbmdwcmVwLmMgYi90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCi1pbmRleCAxNDljZTZmLi43YzlhYjA2IDEwMDY0NAotLS0tIGEvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYwotKysrIGIvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYwotQEAgLTIwNSw3ICsyMDUsNyBAQCBkb2l0ICh2b2lkKQotIHsKLSAgIGNoYXIgKnA7Ci0gICBpbnQgcmM7Ci0tICBzaXplX3QgaTsKLSsgIHVuc2lnbmVkIGk7Ci0gCi0gICBpZiAoIXN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiAoU1RSSU5HUFJFUF9WRVJTSU9OKSkKLSAgICAgZmFpbCAoInN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiBmYWlsZWQgKGhlYWRlciAlcyBydW50aW1lICVzKVxuIiwKLUBAIC0yMjQsNyArMjI0LDcgQEAgZG9pdCAodm9pZCkKLSAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHN0cnByZXApIC8gc2l6ZW9mIChzdHJwcmVwWzBdKTsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotLQlwcmludGYgKCJTVFJJTkdQUkVQIGVudHJ5ICVsZFxuIiwgaSk7Ci0rCXByaW50ZiAoIlNUUklOR1BSRVAgZW50cnkgJXVcbiIsIGkpOwotIAotICAgICAgIGlmIChkZWJ1ZykKLSAJewotQEAgLTI0NywxMiArMjQ3LDEyIEBAIGRvaXQgKHZvaWQpCi0gCSAgY29udGludWU7Ci0gCWVsc2UgaWYgKGwgPT0gTlVMTCkKLSAJICB7Ci0tCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICVsZFxuIiwgaSk7Ci0rCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICV1XG4iLCBpKTsKLSAJICAgIGNvbnRpbnVlOwotIAkgIH0KLSAJZWxzZSBpZiAoc3RyY21wIChzdHJwcmVwW2ldLmluLCB4KSAhPSAwKQotIAkgIHsKLS0JICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJWxkXG4iLCBpKTsKLSsJICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJXVcbiIsIGkpOwotIAkgICAgaWYgKGRlYnVnKQotIAkgICAgICB7Ci0gCQlwdXRzICgiZXhwZWN0ZWQ6Iik7Ci1AQCAtMjc0LDcgKzI3NCw3IEBAIGRvaXQgKHZvaWQpCi0gCQkJICAgICAgICJOYW1lcHJlcCIsIHN0cnByZXBbaV0uZmxhZ3MpOwotICAgICAgIGlmIChyYyAhPSBzdHJwcmVwW2ldLnJjKQotIAl7Ci0tCSAgZmFpbCAoInN0cmluZ3ByZXAoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotKwkgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKLSAJICBpZiAocmMgPT0gU1RSSU5HUFJFUF9PSykKLUBAIC0zMDIsNyArMzAyLDcgQEAgZG9pdCAodm9pZCkKLSAJICBpZiAoc3RybGVuIChzdHJwcmVwW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAotIAkgICAgICBtZW1jbXAgKHN0cnByZXBbaV0ub3V0LCBwLCBzdHJsZW4gKHApKSAhPSAwKQotIAkgICAgewotLQkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOwotKwkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIChsb25nKSBpKTsKLSAJICAgICAgaWYgKGRlYnVnKQotIAkJcHJpbnRmICgiRVJST1JcbiIpOwotIAkgICAgfQotZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF90bGQuYyBiL3Rlc3RzL3RzdF90bGQuYwotaW5kZXggMmY4ZTEyZS4uZDAzOGM3OSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3RzdF90bGQuYwotKysrIGIvdGVzdHMvdHN0X3RsZC5jCi1AQCAtODAsNyArODAsNyBAQCBjb25zdCBUbGRfdGFibGUgKiBteV90bGRfdGFibGVzW10gPQotIHZvaWQKLSBkb2l0ICh2b2lkKQotIHsKLS0gIHNpemVfdCBpOwotKyAgdW5zaWduZWQgaTsKLSAgIGNvbnN0IFRsZF90YWJsZSAqdGxkdGFibGU7Ci0gICBjaGFyICpvdXQ7Ci0gICBzaXplX3QgZXJycG9zOwotQEAgLTIwNiw3ICsyMDYsNyBAQCBkb2l0ICh2b2lkKQotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAodGxkKSAvIHNpemVvZiAodGxkWzBdKTsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKGRlYnVnKQotLQlwcmludGYgKCJUTEQgZW50cnkgJWxkOiAlc1xuIiwgaSwgdGxkW2ldLm5hbWUpOwotKwlwcmludGYgKCJUTEQgZW50cnkgJXU6ICVzXG4iLCBpLCB0bGRbaV0ubmFtZSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnKQotIAl7Ci1AQCAtMjE3LDcgKzIxNyw3IEBAIGRvaXQgKHZvaWQpCi0gICAgICAgdGxkdGFibGUgPSB0bGRfZGVmYXVsdF90YWJsZSAodGxkW2ldLnRsZCwgTlVMTCk7Ci0gICAgICAgaWYgKHRsZHRhYmxlID09IE5VTEwpCi0gCXsKLS0JICBmYWlsICgiVExEIGVudHJ5ICVsZCB0bGRfZ2V0X3RhYmxlICglcylcbiIsIGksIHRsZFtpXS50bGQpOwotKwkgIGZhaWwgKCJUTEQgZW50cnkgJXUgdGxkX2dldF90YWJsZSAoJXMpXG4iLCBpLCB0bGRbaV0udGxkKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJGQVRBTFxuIik7Ci0gCSAgY29udGludWU7Ci1AQCAtMjI2LDcgKzIyNiw3IEBAIGRvaXQgKHZvaWQpCi0gICAgICAgcmMgPSB0bGRfY2hlY2tfNHQgKHRsZFtpXS5pbiwgdGxkW2ldLmlubGVuLCAmZXJycG9zLCB0bGR0YWJsZSk7Ci0gICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKLSAJewotLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSsJICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJGQVRBTFxuIik7Ci0gCSAgY29udGludWU7Ci1AQCAtMjM3LDcgKzIzNyw3IEBAIGRvaXQgKHZvaWQpCi0gCi0gICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKLSAJewotLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7Ci0rCSAgZmFpbCAoIlRMRCBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOwotIAkgIGlmIChkZWJ1ZykKLSAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKLSAJfQotQEAgLTI0NSwxMiArMjQ1LDEyIEBAIGRvaXQgKHZvaWQpCi0gCXsKLSAJICBpZiAoZGVidWcpCi0gCSAgICBwcmludGYgKCJyZXR1cm5lZCBlcnJwb3MgJWxkIGV4cGVjdGVkIGVycnBvcyAlbGRcbiIsCi0tCQkgICAgZXJycG9zLCB0bGRbaV0uZXJycG9zKTsKLSsJCSAgICAobG9uZykgZXJycG9zLCAobG9uZykgdGxkW2ldLmVycnBvcyk7Ci0gCi0gCSAgaWYgKHRsZFtpXS5lcnJwb3MgIT0gZXJycG9zKQotIAkgICAgewotLQkgICAgICBmYWlsICgiVExEIGVudHJ5ICVsZCBmYWlsZWQgYmVjYXVzZSBlcnJwb3MgJWxkICE9ICVsZFxuIiwgaSwKLS0JCSAgICB0bGRbaV0uZXJycG9zLCBlcnJwb3MpOwotKwkgICAgICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZCBiZWNhdXNlIGVycnBvcyAlbGQgIT0gJWxkXG4iLCBpLAotKwkJICAgIChsb25nKSB0bGRbaV0uZXJycG9zLCAobG9uZykgZXJycG9zKTsKLSAJICAgICAgaWYgKGRlYnVnKQotIAkJcHJpbnRmICgiRVJST1JcbiIpOwotIAkgICAgfQotQEAgLTI2MiwxMiArMjYyLDEyIEBAIGRvaXQgKHZvaWQpCi0gCXJjID0gdGxkX2NoZWNrXzh6ICh0bGRbaV0uZXhhbXBsZSwgJmVycnBvcywgTlVMTCk7Ci0gCWlmIChyYyAhPSB0bGRbaV0ucmMpCi0gCSAgewotLQkgICAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKLSsJICAgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKLSAJICAgIGlmIChkZWJ1ZykKLSAJICAgICAgcHJpbnRmICgiRVJST1JcbiIpOwotIAkgIH0KLSAJaWYgKGRlYnVnKQotLQkgIHByaW50ZiAoIlRMRCBlbnRyeSAlbGQgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKLSsJICBwcmludGYgKCJUTEQgZW50cnkgJXUgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKLSAgICAgICB9Ci0gICAgIH0KLSB9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbHMuYyBiL3Rlc3RzL3V0aWxzLmMKLWluZGV4IDcxN2VlMDEuLjU1NzdkYzMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy91dGlscy5jCi0rKysgYi90ZXN0cy91dGlscy5jCi1AQCAtNDksNyArNDksNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQotIHsKLSAgIHNpemVfdCBpOwotIAotLSAgcHJpbnRmICgiIChsZW5ndGggJWxkIGJ5dGVzKTpcblx0IiwgbGVuKTsKLSsgIHByaW50ZiAoIiAobGVuZ3RoICVsZCBieXRlcyk6XG5cdCIsIChsb25nKSBsZW4pOwotICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICB7Ci0gICAgICAgaWYgKCgoc3RyW2ldICYgMHhGRikgPj0gJ0EnICYmIChzdHJbaV0gJiAweEZGKSA8PSAnWicpIHx8Ci1AQCAtNTgsNyArNTgsNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQotIAkgIHx8IChzdHJbaV0gJiAweEZGKSA9PSAnICcgfHwgKHN0cltpXSAmIDB4RkYpID09ICcuJykKLSAJcHJpbnRmICgiJWMiLCAoc3RyW2ldICYgMHhGRikpOwotICAgICAgIGVsc2UKLS0JcHJpbnRmICgiXFx4JTAyWCIsIChzdHJbaV0gJiAweEZGKSk7Ci0rCXByaW50ZiAoIlxceCUwMlgiLCAodW5zaWduZWQpIChzdHJbaV0gJiAweEZGKSk7Ci0gICAgICAgaWYgKChpICsgMSkgJSAxNiA9PSAwICYmIChpICsgMSkgPCBsZW4pCi0gCXByaW50ZiAoIidcblx0JyIpOwotICAgICB9Ci1AQCAtNzMsNyArNzMsNyBAQCBoZXhwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQotICAgcHJpbnRmICgiXHQ7OyAiKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgewotLSAgICAgIHByaW50ZiAoIiUwMnggIiwgKHN0cltpXSAmIDB4RkYpKTsKLSsgICAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgKHN0cltpXSAmIDB4RkYpKTsKLSAgICAgICBpZiAoKGkgKyAxKSAlIDggPT0gMCkKLSAJcHJpbnRmICgiICIpOwotICAgICAgIGlmICgoaSArIDEpICUgMTYgPT0gMCAmJiBpICsgMSA8IGxlbikKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaAppbmRleCA5OGJhNGQ2Li40M2JkMjMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaApAQCAtMSwyNSArMSwzNCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIAorRnJvbSBjZGQ5ZTJlOTYwZWViNGVkYTdiMDhmMDExM2QwY2QwMzUyNGMxZDQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgSnVsIDIwMTIgMDI6NDQ6MzAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliaWRuOiBmaXggYnVpbGQgd2l0aCBhdXRvbWFrZSAxLjEyCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCiBhdXRvbWFrZSAxLjEyLnggaGFzIGRlcHJlY2F0ZWQgQU1fUFJPR19NS0RJUl9QICwgYW5kIHRocm93cyBhIHdhcm5pbmcgZm9yIHRoYXQsCiBhbmQgdGhlIHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycyBiZWNhdXNlIG9mIHRoZSAtV2Vycm9yIHBhcmFtZXRlci4KIAotVGhlc2UgQU1fUFJPR19NS0RJUl9QIGFyZSBjb21pbmcgZnJvbSBnZXR0ZXh0LCBhbmQgdGhlIGxhdGVzdCBnZXR0ZXh0IGNvZGUgaGFzIG5vdCAKK1RoZXNlIEFNX1BST0dfTUtESVJfUCBhcmUgY29taW5nIGZyb20gZ2V0dGV4dCwgYW5kIHRoZSBsYXRlc3QgZ2V0dGV4dCBjb2RlIGhhcyBub3QKIGVsaW1pbmF0ZWQgdGhlc2UgZGVwcmVjYXRlZCBtYWNyb3MgeWV0LiBTbyBkaXNhYmxlIHRoZSB0cmVhdG1lbnQgb2Ygd2FybmluZ3MKIGFzIGVycm9ycyB1bnRpbCBnZXR0ZXh0IGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1hY3Jvcy4KIAogU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KIDIwMTIvMDcvMTAKIAotSW5kZXg6IGxpYmlkbi0xLjI0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmlkbi0xLjI0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgbGliaWRuLTEuMjQvY29uZmlndXJlLmFjCi1AQCAtMjMsNyArMjMsNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoYykgMjAwMi0yMDExIFNpCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDI2MWRhZDIuLmM0ZjkzNWUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbR05VIExpYmlkbl0sIFsxLjM0XSwgW2J1Zy1saWJpZG5AZ251Lm9yZ10pCiAgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCiAgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQogIEFDX0NPTkZJR19IRUFERVJTKGNvbmZpZy5oKQogLUFNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVdlcnJvciAtV25vLW92ZXJyaWRlXSkKICtBTV9JTklUX0FVVE9NQUtFKFsxLjEwIC1XYWxsIC1Xbm8tb3ZlcnJpZGVdKQotIEFNX1NJTEVOVF9SVUxFUyhbeWVzXSkKKyBtNF9pZmRlZihbQU1fU0lMRU5UX1JVTEVTXSwgW0FNX1NJTEVOVF9SVUxFUyhbeWVzXSldKQogIAogICMgTGlicmFyeSBjb2RlIG1vZGlmaWVkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVklTSU9OKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZ2NjNy1jb21wYXRpYmlsaXR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NmE2ZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzQgKzAsMCBAQAotRnJvbSAyMzA5MzBiM2JjM2U0MzFiODE5ZWI0NTQyMGNiNDI0NzVkODNjYTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT91dGY4P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgotRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDEwOjQ0OjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBpbnRwcm9wcy5oIGZvciBnY2MtNyBjb21wYXRpYmlsaXR5Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdsL2ludHByb3BzLmggICAgICAgICAgfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIGxpYi9nbHRlc3RzL2ludHByb3BzLmggfCA2NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9pbnRwcm9wcy5oIGIvZ2wvaW50cHJvcHMuaAotaW5kZXggZTFmY2U1Yy4uZWIwNmI2OSAxMDA2NDQKLS0tLSBhL2dsL2ludHByb3BzLmgKLSsrKyBiL2dsL2ludHByb3BzLmgKLUBAIC0xLDE4ICsxLDE4IEBACi0gLyogaW50cHJvcHMuaCAtLSBwcm9wZXJ0aWVzIG9mIGludGVnZXIgdHlwZXMKLSAKLS0gICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0tICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotIC8qIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuICAqLwotQEAgLTQ3LDEyICs0NywxNiBAQAotIAotIC8qIE1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIGZvciBpbnRlZ2VyIHR5cGVzIGFuZCBleHByZXNzaW9ucy4gICovCi0gCi0rLyogVGhlIHdpZHRoIGluIGJpdHMgb2YgdGhlIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQuCi0rICAgUGFkZGluZyBiaXRzIGFyZSBub3Qgc3VwcG9ydGVkOyB0aGlzIGlzIGNoZWNrZWQgYXQgY29tcGlsZS10aW1lIGJlbG93LiAgKi8KLSsjZGVmaW5lIFRZUEVfV0lEVEgodCkgKHNpemVvZiAodCkgKiBDSEFSX0JJVCkKLSsKLSAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSBpbnRlZ2VyIHR5cGUgVC4gICovCi0gI2RlZmluZSBUWVBFX01JTklNVU0odCkgKCh0KSB+IFRZUEVfTUFYSU1VTSAodCkpCi0gI2RlZmluZSBUWVBFX01BWElNVU0odCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKCh0KSAoISBUWVBFX1NJR05FRCAodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgID8gKHQpIC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICA6ICgoKCh0KSAxIDw8IChzaXplb2YgKHQpICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCi0rICAgICAgICA6ICgoKCh0KSAxIDw8IChUWVBFX1dJRFRIICh0KSAtIDIpKSAtIDEpICogMiArIDEpKSkKLSAKLSAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIEUsCi0gICAgYWZ0ZXIgaW50ZWdlciBwcm9tb3Rpb24uICBFIHNob3VsZCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuICAqLwotQEAgLTY1LDcgKzY5LDEzIEBACi0gICAgPyBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNIChlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDogX0dMX0lOVF9ORUdBVEVfQ09OVkVSVCAoZSwgMSkpCi0gI2RlZmluZSBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoc2l6ZW9mICgoZSkgKyAwKSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkKLSsgICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKFRZUEVfV0lEVEggKChlKSArIDApIC0gMikpIC0gMSkgKiAyICsgMSkKLSsKLSsvKiBXb3JrIGFyb3VuZCBPcGVuVk1TIGluY29tcGF0aWJpbGl0eSB3aXRoIEM5OS4gICovCi0rI2lmICFkZWZpbmVkIExMT05HX01BWCAmJiBkZWZpbmVkIF9fSU5UNjRfTUFYCi0rIyBkZWZpbmUgTExPTkdfTUFYIF9fSU5UNjRfTUFYCi0rIyBkZWZpbmUgTExPTkdfTUlOIF9fSU5UNjRfTUlOCi0rI2VuZGlmCi0gCi0gLyogVGhpcyBpbmNsdWRlIGZpbGUgYXNzdW1lcyB0aGF0IHNpZ25lZCB0eXBlcyBhcmUgdHdvJ3MgY29tcGxlbWVudCB3aXRob3V0Ci0gICAgcGFkZGluZyBiaXRzOyB0aGUgYWJvdmUgbWFjcm9zIGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIG90aGVyd2lzZS4KLUBAIC04NCwxMCArOTQsMTUgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgaW50KSA9PSBMT05HX01BWCk7Ci0gdmVyaWZ5IChUWVBFX01JTklNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01JTik7Ci0gdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gI2VuZGlmCi0rLyogU2ltaWxhcmx5LCBzYW5pdHktY2hlY2sgb25lIElTTy9JRUMgVFMgMTg2NjEtMToyMDE0IG1hY3JvIGlmIGRlZmluZWQuICAqLwotKyNpZmRlZiBVSU5UX1dJRFRICi0rdmVyaWZ5IChUWVBFX1dJRFRIICh1bnNpZ25lZCBpbnQpID09IFVJTlRfV0lEVEgpOwotKyNlbmRpZgotIAotIC8qIERvZXMgdGhlIF9fdHlwZW9mX18ga2V5d29yZCB3b3JrPyAgVGhpcyBjb3VsZCBiZSBkb25lIGJ5Ci0gICAgJ2NvbmZpZ3VyZScsIGJ1dCBmb3Igbm93IGl0J3MgZWFzaWVyIHRvIGRvIGl0IGJ5IGhhbmQuICAqLwotLSNpZiAoMiA8PSBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXyBcCi0rI2lmICgyIDw9IF9fR05VQ19fIFwKLSsgICAgIHx8ICgxMjEwIDw9IF9fSUJNQ19fICYmIGRlZmluZWQgX19JQk1fX1RZUEVPRl9fKSBcCi0gICAgICB8fCAoMHg1MTEwIDw9IF9fU1VOUFJPX0MgJiYgIV9fU1REQ19fKSkKLSAjIGRlZmluZSBfR0xfSEFWRV9fX1RZUEVPRl9fIDEKLSAjZWxzZQotQEAgLTExNiw4ICsxMzEsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICBzaWduZWQsIHRoaXMgbWFjcm8gbWF5IG92ZXJlc3RpbWF0ZSB0aGUgdHJ1ZSBib3VuZCBieSBvbmUgYnl0ZSB3aGVuCi0gICAgYXBwbGllZCB0byB1bnNpZ25lZCB0eXBlcyBvZiBzaXplIDIsIDQsIDE2LCAuLi4gYnl0ZXMuICAqLwotICNkZWZpbmUgSU5UX1NUUkxFTl9CT1VORCh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChzaXplb2YgKHQpICogQ0hBUl9CSVQgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSAgICAgICAgXAotKyAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoVFlQRV9XSURUSCAodCkgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpIFwKLSAgICArIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkKLSAKLSAvKiBCb3VuZCBvbiBidWZmZXIgc2l6ZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQsCi1AQCAtMjIyLDIwICsyMzYsMjMgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gICAgPyAoYSkgPCAobWluKSA+PiAoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOiAobWF4KSA+PiAoYikgPCAoYSkpCi0gCi0tLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbnVsbC4gICovCi0tI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMICg3IDw9IF9fR05VQ19fKQotKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG5vbi1udWxsLiAgKi8KLSsjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVyAoNSA8PSBfX0dOVUNfXykKLSsKLSsvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoQSwgQiwgQykgd29ya3MuICAqLwotKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AgKDcgPD0gX19HTlVDX18pCi0gCi0gLyogVGhlIF9HTCpfT1ZFUkZMT1cgbWFjcm9zIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFzIHRoZQotICAgICpfUkFOR0VfT1ZFUkZMT1cgbWFjcm9zLCBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBhc3N1bWUgdGhhdCBvcGVyYW5kcwotICAgIChlLmcuLCBBIGFuZCBCKSBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgTUlOIGFuZCBNQVguICBJbnN0ZWFkLCB0aGV5IGFzc3VtZQotICAgIHRoYXQgdGhlIHJlc3VsdCAoZS5nLiwgQSArIEIpIGhhcyB0aGF0IHR5cGUuICAqLwotLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCi0tIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSAqKSAwKQotLSMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fc3ViX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSAqKSAwKQotLSMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fbXVsX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSAqKSAwKQotKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAotKyMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpKSAwKQotKyMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fc3ViX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpKSAwKQotKyMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fbXVsX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpKSAwKQotICNlbHNlCi0gIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKG1pbikgPCAwID8gSU5UX0FERF9SQU5HRV9PVkVSRkxPVyAoYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgXAotQEAgLTMxNSw3ICszMzIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9BRERfT1ZFUkZMT1cpCi0gI2RlZmluZSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYikgXAotICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX1NVQlRSQUNUX09WRVJGTE9XKQotLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCi0gIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1cgKDAsIGEpCi0gI2Vsc2UKLSAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIFwKLUBAIC0zNDksMTAgKzM2Niw2IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICNkZWZpbmUgSU5UX01VTFRJUExZX1dSQVBWKGEsIGIsIHIpIFwKLSAgIF9HTF9JTlRfT1BfV1JBUFYgKGEsIGIsIHIsICosIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csIElOVF9NVUxUSVBMWV9PVkVSRkxPVykKLSAKLS0jaWZuZGVmIF9faGFzX2J1aWx0aW4KLS0jIGRlZmluZSBfX2hhc19idWlsdGluKHgpIDAKLS0jZW5kaWYKLS0KLSAvKiBOb256ZXJvIGlmIHRoaXMgY29tcGlsZXIgaGFzIEdDQyBidWcgNjgxOTMgb3IgQ2xhbmcgYnVnIDI1MzkwLiAgU2VlOgotICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY4MTkzCi0gICAgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNTM5MAotQEAgLTM2OSw3ICszODIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICB0aGUgb3BlcmF0aW9uLiAgQlVJTFRJTiBpcyB0aGUgYnVpbHRpbiBvcGVyYXRpb24sIGFuZCBPVkVSRkxPVyB0aGUKLSAgICBvdmVyZmxvdyBwcmVkaWNhdGUuICBSZXR1cm4gMSBpZiB0aGUgcmVzdWx0IG92ZXJmbG93cy4gIFNlZSBhYm92ZQotICAgIGZvciByZXN0cmljdGlvbnMuICAqLwotLSNpZiA1IDw9IF9fR05VQ19fIHx8IF9faGFzX2J1aWx0aW4gKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cpCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVwotICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBidWlsdGluIChhLCBiLCByKQotICNlbGlmIDIwMTExMiA8PSBfX1NURENfVkVSU0lPTl9fICYmICFfR0xfX0dFTkVSSUNfQk9HVVMKLSAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgXAotQEAgLTQxMiw3ICs0MjUsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAjIGVsc2UKLSAjICBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVl9MT05HSVNIKGEsIGIsIHIsIG9wLCBvdmVyZmxvdykgXAotICAgICBfR0xfSU5UX09QX0NBTEMgKGEsIGIsIHIsIG9wLCBvdmVyZmxvdywgdW5zaWduZWQgbG9uZyBpbnQsIFwKLS0gICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKSkKLSsgICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKQotICMgZW5kaWYKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgYS9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oIGIvbGliL2dsdGVzdHMvaW50cHJvcHMuaAotaW5kZXggZTFmY2U1Yy4uZWIwNmI2OSAxMDA2NDQKLS0tLSBhL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKLSsrKyBiL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKLUBAIC0xLDE4ICsxLDE4IEBACi0gLyogaW50cHJvcHMuaCAtLSBwcm9wZXJ0aWVzIG9mIGludGVnZXIgdHlwZXMKLSAKLS0gICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0tICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotIC8qIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuICAqLwotQEAgLTQ3LDEyICs0NywxNiBAQAotIAotIC8qIE1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIGZvciBpbnRlZ2VyIHR5cGVzIGFuZCBleHByZXNzaW9ucy4gICovCi0gCi0rLyogVGhlIHdpZHRoIGluIGJpdHMgb2YgdGhlIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQuCi0rICAgUGFkZGluZyBiaXRzIGFyZSBub3Qgc3VwcG9ydGVkOyB0aGlzIGlzIGNoZWNrZWQgYXQgY29tcGlsZS10aW1lIGJlbG93LiAgKi8KLSsjZGVmaW5lIFRZUEVfV0lEVEgodCkgKHNpemVvZiAodCkgKiBDSEFSX0JJVCkKLSsKLSAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSBpbnRlZ2VyIHR5cGUgVC4gICovCi0gI2RlZmluZSBUWVBFX01JTklNVU0odCkgKCh0KSB+IFRZUEVfTUFYSU1VTSAodCkpCi0gI2RlZmluZSBUWVBFX01BWElNVU0odCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgKCh0KSAoISBUWVBFX1NJR05FRCAodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgID8gKHQpIC0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICA6ICgoKCh0KSAxIDw8IChzaXplb2YgKHQpICogQ0hBUl9CSVQgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCi0rICAgICAgICA6ICgoKCh0KSAxIDw8IChUWVBFX1dJRFRIICh0KSAtIDIpKSAtIDEpICogMiArIDEpKSkKLSAKLSAvKiBUaGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgZm9yIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIEUsCi0gICAgYWZ0ZXIgaW50ZWdlciBwcm9tb3Rpb24uICBFIHNob3VsZCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuICAqLwotQEAgLTY1LDcgKzY5LDEzIEBACi0gICAgPyBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNIChlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDogX0dMX0lOVF9ORUdBVEVfQ09OVkVSVCAoZSwgMSkpCi0gI2RlZmluZSBfR0xfU0lHTkVEX0lOVF9NQVhJTVVNKGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgKCgoX0dMX0lOVF9DT05WRVJUIChlLCAxKSA8PCAoc2l6ZW9mICgoZSkgKyAwKSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkKLSsgICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKFRZUEVfV0lEVEggKChlKSArIDApIC0gMikpIC0gMSkgKiAyICsgMSkKLSsKLSsvKiBXb3JrIGFyb3VuZCBPcGVuVk1TIGluY29tcGF0aWJpbGl0eSB3aXRoIEM5OS4gICovCi0rI2lmICFkZWZpbmVkIExMT05HX01BWCAmJiBkZWZpbmVkIF9fSU5UNjRfTUFYCi0rIyBkZWZpbmUgTExPTkdfTUFYIF9fSU5UNjRfTUFYCi0rIyBkZWZpbmUgTExPTkdfTUlOIF9fSU5UNjRfTUlOCi0rI2VuZGlmCi0gCi0gLyogVGhpcyBpbmNsdWRlIGZpbGUgYXNzdW1lcyB0aGF0IHNpZ25lZCB0eXBlcyBhcmUgdHdvJ3MgY29tcGxlbWVudCB3aXRob3V0Ci0gICAgcGFkZGluZyBiaXRzOyB0aGUgYWJvdmUgbWFjcm9zIGhhdmUgdW5kZWZpbmVkIGJlaGF2aW9yIG90aGVyd2lzZS4KLUBAIC04NCwxMCArOTQsMTUgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgaW50KSA9PSBMT05HX01BWCk7Ci0gdmVyaWZ5IChUWVBFX01JTklNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01JTik7Ci0gdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gI2VuZGlmCi0rLyogU2ltaWxhcmx5LCBzYW5pdHktY2hlY2sgb25lIElTTy9JRUMgVFMgMTg2NjEtMToyMDE0IG1hY3JvIGlmIGRlZmluZWQuICAqLwotKyNpZmRlZiBVSU5UX1dJRFRICi0rdmVyaWZ5IChUWVBFX1dJRFRIICh1bnNpZ25lZCBpbnQpID09IFVJTlRfV0lEVEgpOwotKyNlbmRpZgotIAotIC8qIERvZXMgdGhlIF9fdHlwZW9mX18ga2V5d29yZCB3b3JrPyAgVGhpcyBjb3VsZCBiZSBkb25lIGJ5Ci0gICAgJ2NvbmZpZ3VyZScsIGJ1dCBmb3Igbm93IGl0J3MgZWFzaWVyIHRvIGRvIGl0IGJ5IGhhbmQuICAqLwotLSNpZiAoMiA8PSBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXyBcCi0rI2lmICgyIDw9IF9fR05VQ19fIFwKLSsgICAgIHx8ICgxMjEwIDw9IF9fSUJNQ19fICYmIGRlZmluZWQgX19JQk1fX1RZUEVPRl9fKSBcCi0gICAgICB8fCAoMHg1MTEwIDw9IF9fU1VOUFJPX0MgJiYgIV9fU1REQ19fKSkKLSAjIGRlZmluZSBfR0xfSEFWRV9fX1RZUEVPRl9fIDEKLSAjZWxzZQotQEAgLTExNiw4ICsxMzEsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICBzaWduZWQsIHRoaXMgbWFjcm8gbWF5IG92ZXJlc3RpbWF0ZSB0aGUgdHJ1ZSBib3VuZCBieSBvbmUgYnl0ZSB3aGVuCi0gICAgYXBwbGllZCB0byB1bnNpZ25lZCB0eXBlcyBvZiBzaXplIDIsIDQsIDE2LCAuLi4gYnl0ZXMuICAqLwotICNkZWZpbmUgSU5UX1NUUkxFTl9CT1VORCh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAoSU5UX0JJVFNfU1RSTEVOX0JPVU5EIChzaXplb2YgKHQpICogQ0hBUl9CSVQgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSAgICAgICAgXAotKyAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoVFlQRV9XSURUSCAodCkgLSBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpIFwKLSAgICArIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkKLSAKLSAvKiBCb3VuZCBvbiBidWZmZXIgc2l6ZSBuZWVkZWQgdG8gcmVwcmVzZW50IGFuIGludGVnZXIgdHlwZSBvciBleHByZXNzaW9uIFQsCi1AQCAtMjIyLDIwICsyMzYsMjMgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7Ci0gICAgPyAoYSkgPCAobWluKSA+PiAoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOiAobWF4KSA+PiAoYikgPCAoYSkpCi0gCi0tLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChBLCBCLCBQKSB3b3JrcyB3aGVuIFAgaXMgbnVsbC4gICovCi0tI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMICg3IDw9IF9fR05VQ19fKQotKy8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG5vbi1udWxsLiAgKi8KLSsjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVyAoNSA8PSBfX0dOVUNfXykKLSsKLSsvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3dfcCAoQSwgQiwgQykgd29ya3MuICAqLwotKyNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AgKDcgPD0gX19HTlVDX18pCi0gCi0gLyogVGhlIF9HTCpfT1ZFUkZMT1cgbWFjcm9zIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIGFzIHRoZQotICAgICpfUkFOR0VfT1ZFUkZMT1cgbWFjcm9zLCBleGNlcHQgdGhhdCB0aGV5IGRvIG5vdCBhc3N1bWUgdGhhdCBvcGVyYW5kcwotICAgIChlLmcuLCBBIGFuZCBCKSBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgTUlOIGFuZCBNQVguICBJbnN0ZWFkLCB0aGV5IGFzc3VtZQotICAgIHRoYXQgdGhlIHJlc3VsdCAoZS5nLiwgQSArIEIpIGhhcyB0aGF0IHR5cGUuICAqLwotLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCi0tIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fYWRkX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSAqKSAwKQotLSMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fc3ViX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSAqKSAwKQotLSMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkKLS0gICBfX2J1aWx0aW5fbXVsX292ZXJmbG93IChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSAqKSAwKQotKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAotKyMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKyAoYikpKSAwKQotKyMgZGVmaW5lIF9HTF9TVUJUUkFDVF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fc3ViX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgLSAoYikpKSAwKQotKyMgZGVmaW5lIF9HTF9NVUxUSVBMWV9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICBfX2J1aWx0aW5fbXVsX292ZXJmbG93X3AgKGEsIGIsIChfX3R5cGVvZl9fICgoYSkgKiAoYikpKSAwKQotICNlbHNlCi0gIyBkZWZpbmUgX0dMX0FERF9PVkVSRkxPVyhhLCBiLCBtaW4sIG1heCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKG1pbikgPCAwID8gSU5UX0FERF9SQU5HRV9PVkVSRkxPVyAoYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgXAotQEAgLTMxNSw3ICszMzIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9BRERfT1ZFUkZMT1cpCi0gI2RlZmluZSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYikgXAotICAgX0dMX0JJTkFSWV9PUF9PVkVSRkxPVyAoYSwgYiwgX0dMX1NVQlRSQUNUX09WRVJGTE9XKQotLSNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfV0lUSF9OVUxMCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QCi0gIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBJTlRfU1VCVFJBQ1RfT1ZFUkZMT1cgKDAsIGEpCi0gI2Vsc2UKLSAjIGRlZmluZSBJTlRfTkVHQVRFX09WRVJGTE9XKGEpIFwKLUBAIC0zNDksMTAgKzM2Niw2IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOwotICNkZWZpbmUgSU5UX01VTFRJUExZX1dSQVBWKGEsIGIsIHIpIFwKLSAgIF9HTF9JTlRfT1BfV1JBUFYgKGEsIGIsIHIsICosIF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csIElOVF9NVUxUSVBMWV9PVkVSRkxPVykKLSAKLS0jaWZuZGVmIF9faGFzX2J1aWx0aW4KLS0jIGRlZmluZSBfX2hhc19idWlsdGluKHgpIDAKLS0jZW5kaWYKLS0KLSAvKiBOb256ZXJvIGlmIHRoaXMgY29tcGlsZXIgaGFzIEdDQyBidWcgNjgxOTMgb3IgQ2xhbmcgYnVnIDI1MzkwLiAgU2VlOgotICAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTY4MTkzCi0gICAgaHR0cHM6Ly9sbHZtLm9yZy9idWdzL3Nob3dfYnVnLmNnaT9pZD0yNTM5MAotQEAgLTM2OSw3ICszODIsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAgICB0aGUgb3BlcmF0aW9uLiAgQlVJTFRJTiBpcyB0aGUgYnVpbHRpbiBvcGVyYXRpb24sIGFuZCBPVkVSRkxPVyB0aGUKLSAgICBvdmVyZmxvdyBwcmVkaWNhdGUuICBSZXR1cm4gMSBpZiB0aGUgcmVzdWx0IG92ZXJmbG93cy4gIFNlZSBhYm92ZQotICAgIGZvciByZXN0cmljdGlvbnMuICAqLwotLSNpZiA1IDw9IF9fR05VQ19fIHx8IF9faGFzX2J1aWx0aW4gKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cpCi0rI2lmIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPVwotICMgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFYoYSwgYiwgciwgb3AsIGJ1aWx0aW4sIG92ZXJmbG93KSBidWlsdGluIChhLCBiLCByKQotICNlbGlmIDIwMTExMiA8PSBfX1NURENfVkVSU0lPTl9fICYmICFfR0xfX0dFTkVSSUNfQk9HVVMKLSAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgXAotQEAgLTQxMiw3ICs0MjUsNyBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKLSAjIGVsc2UKLSAjICBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVl9MT05HSVNIKGEsIGIsIHIsIG9wLCBvdmVyZmxvdykgXAotICAgICBfR0xfSU5UX09QX0NBTEMgKGEsIGIsIHIsIG9wLCBvdmVyZmxvdywgdW5zaWduZWQgbG9uZyBpbnQsIFwKLS0gICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKSkKLSsgICAgICAgICAgICAgICAgICAgICBsb25nIGludCwgTE9OR19NSU4sIExPTkdfTUFYKQotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCmluZGV4IGRiOTEzMTcuLjNjMDU1OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIGQ0ZjY0Yjc4NDE5MTM5ZWRhM2MwZTFjNmVlMTE2YmI1ZjcwZWE2N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorRGF0ZTogV2VkLCAyIE1heSAyMDEyIDE4OjA1OjE5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnRhc24xOiBmaXggYnVpbGQgd2l0aCBhdXRvbWFrZSAxLjEyCisKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBUaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBpc3N1ZSB3aXRoIGF1dG9tYWtlIDEuMTIKQEAgLTksMTIgKzE0LDE2IEBACiBTaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgogMjAxMi8wNS8wMwogCi1JbmRleDogbGliaWRuLTEuMzMvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWRuLTEuMzMub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJpZG4tMS4zMy9jb25maWd1cmUuYWMKLUBAIC0zMyw2ICszMywxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxNykKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgMTYpCistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDgyOTc2NDkuLjdiOTYyNmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMzLDYgKzMzLDEwIEBAIEFDX1NVQlNUKExUX0NVUlJFTlQsIDE4KQorIEFDX1NVQlNUKExUX1JFVklTSU9OLCAwKQogIEFDX1NVQlNUKExUX0FHRSwgNikKICAKICsjIGF1dG9tYWtlIDEuMTIgc2VlbXMgdG8gcmVxdWlyZSB0aGlzLCBidXQgYXV0b21ha2UgMS4xMSBkb2Vzbid0IHJlY29nbml6ZSBpdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjIvVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMi9VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2U1MGJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjIvVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKKworbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAord2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQorcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCitjb3JldXRpbHMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitJbmRleDogbGliaWRuMi0yLjAuNS91bmlzdHJpbmcvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJpZG4yLTIuMC41Lm9yaWcvdW5pc3RyaW5nL01ha2VmaWxlLmFtCisrKysgbGliaWRuMi0yLjAuNS91bmlzdHJpbmcvTWFrZWZpbGUuYW0KK0BAIC0yOTMsNyArMjkzLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCisgCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAorIAkgICAgZGFyd2luWzU2XSopIFwKKyAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAorLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAorKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCisgCSAgICAqKSBcCisgCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbjJfMi4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRhZjdhNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMC41LmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIihHUEx2MisgfCBMR1BMdjMpICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWI5MGU3NWVmOTdjYzYzMThjZTRmMmZiZGE2MmZlNGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaWRuMi5jO2VuZGxpbmU9MTY7bWQ1PTAyODNhZWMyOGUwNDlmNWJjYWFlZWU1MmFhODY1ODc0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG4yLmguaW47ZW5kbGluZT0yNzttZDU9YzJjZDI4ZDNmODcyNjBmMTU3ZjAyMmVhYmI4MzcxNGYiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJpZG4vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImVhZjlhNWI5ZDAzYjBjY2UzNzYwZjM0YjMxMjRlYjM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzZjY5MTcwODg2ZjFmYTZmYTViMzMyNDM5YzdhNzdhN2QyMjYyNmE4MmVmMTdlMmMxMjI0ODU4YmI0Y2EyYjgiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCisgICAgICAgICAgICAgICAgICIKKworTElDRU5TRV8ke1BOfSA9ICIoR1BMdjIrIHwgTEdQTHYzKSIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZThiZGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGd0ay1kb2MKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTlhYTdlMDAzNjY1ZGU5YzgyYmQzZjlmYzZjY2YzMDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDRhN2FhYjYzNWJiNzIxY2VlZjZiZWVjYzRkNDlkZmQxOTQ3ODMyNWUxYjQ3ZjMxOTZmN2QyYWNjNDkzMGUxOSIKLQotIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKLSMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCi1QQUNLQUdFUyA9KyAiaWRuIgotRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgotCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKLUxJQ0VOU0VfaWRuID0gIkdQTHYzKyIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWNlNWI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKKworIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKKyMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCitQQUNLQUdFUyA9KyAiaWRuIgorRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgorCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKK0xJQ0VOU0VfaWRuID0gIkdQTHYzKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNjQ3YWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIDUwOGEwZmY2OTBkZmViYzE3YzRmNTVhNWY4MTgyNGVkNTQ5YmVkNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOToxMzozMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBzeXMvY2RlZnMuaCBleHBsaWNpdGx5Ci0KLWdsaWJjIGluY2x1ZGVzIHRoaXMgaGVhZGVyIGluZGlyZWN0bHkgYnV0IG5vdCBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gc3JjL3JwY3N2Yy9uaXMuaCAgICB8IDEgKwotIHNyYy9ycGNzdmMvbmlzbGliLmggfCAxICsKLSBzcmMvcnBjc3ZjL3lwY2xudC5oIHwgMSArCi0gc3JjL3JwY3N2Yy95cHVwZC5oICB8IDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pcy5oIGIvc3JjL3JwY3N2Yy9uaXMuaAotaW5kZXggOTMzYzRkOS4uODhjYmNhMCAxMDA2NDQKLS0tLSBhL3NyYy9ycGNzdmMvbmlzLmgKLSsrKyBiL3NyYy9ycGNzdmMvbmlzLmgKLUBAIC0zMiw2ICszMiw3IEBACi0gI2lmbmRlZiBfUlBDU1ZDX05JU19ICi0gI2RlZmluZSBfUlBDU1ZDX05JU19IIDEKLSAKLSsjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0gI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0gI2luY2x1ZGUgPHJwYy9ycGMuaD4KLSAjaW5jbHVkZSA8cnBjc3ZjL25pc190YWdzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy9uaXNsaWIuaCBiL3NyYy9ycGNzdmMvbmlzbGliLmgKLWluZGV4IGE1OWMxOWIuLmE1M2ZhYjMgMTAwNjQ0Ci0tLS0gYS9zcmMvcnBjc3ZjL25pc2xpYi5oCi0rKysgYi9zcmMvcnBjc3ZjL25pc2xpYi5oCi1AQCAtMTksNiArMTksNyBAQAotICNpZm5kZWYJX19SUENTVkNfTklTTElCX0hfXwotICNkZWZpbmUJX19SUENTVkNfTklTTElCX0hfXwotIAotKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLSBfX0JFR0lOX0RFQ0xTCi1kaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy95cGNsbnQuaCBiL3NyYy9ycGNzdmMveXBjbG50LmgKLWluZGV4IGZlNDNmZDQuLmE2ODZiNjEgMTAwNjQ0Ci0tLS0gYS9zcmMvcnBjc3ZjL3lwY2xudC5oCi0rKysgYi9zcmMvcnBjc3ZjL3lwY2xudC5oCi1AQCAtMjAsNiArMjAsNyBAQAotICNpZm5kZWYJX19SUENTVkNfWVBDTE5UX0hfXwotICNkZWZpbmUJX19SUENTVkNfWVBDTE5UX0hfXwotIAotKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLSAvKiBTb21lIGRlZmluZXMgKi8KLWRpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL3lwdXBkLmggYi9zcmMvcnBjc3ZjL3lwdXBkLmgKLWluZGV4IGQwN2ZkNGQuLjJjNTczMDEgMTAwNjQ0Ci0tLS0gYS9zcmMvcnBjc3ZjL3lwdXBkLmgKLSsrKyBiL3NyYy9ycGNzdmMveXB1cGQuaAotQEAgLTMzLDYgKzMzLDcgQEAKLSAjaWZuZGVmIF9fUlBDU1ZDX1lQVVBEX0hfXwotICNkZWZpbmUgX19SUENTVkNfWVBVUERfSF9fCi0gCi0rI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotICNpbmNsdWRlIDxycGMvcnBjLmg+Ci0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLW5pc19jYWxsLmMtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LWRlZmluaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLW5pc19jYWxsLmMtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LWRlZmluaXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5YWU1MTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBkNzFjYmViM2I3NmU1NDc3OGE0ZDVlZWM2ZDM4N2NjZTY1MzUzN2NhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgOSBKdW4gMjAxNyAwOTo0OTozNSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBuaXNfY2FsbC5jOiBJbmNsdWRlIHN0ZGludC5oIGZvciB1aW50cHRyX3QgZGVmaW5pdGlvbgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHNyYy9uaXNwbHVzL25pc19jYWxsLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9uaXNwbHVzL25pc19jYWxsLmMgYi9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCi1pbmRleCAxYTJiOTBjLi4xZGM5ODJkIDEwMDY0NAotLS0tIGEvc3JjL25pc3BsdXMvbmlzX2NhbGwuYwotKysrIGIvc3JjL25pc3BsdXMvbmlzX2NhbGwuYwotQEAgLTIzLDYgKzIzLDcgQEAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHJwYy9ycGMuaD4KLSAjaW5jbHVkZSA8cnBjL2F1dGguaD4KLS0tIAotMi4xMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVmZGE0Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDYwMjgyNTE0ZWEwMWFmMDA0ZDdmOWU2NmRkMzkyOTIyM2I3ZDJlN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOToxNjoxMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gRGVmaW5lIGdsaWJjIHNwZWNpZmljIG1hY3JvcwotCi1DaGVjayBhbmQgZGVmaW5lCi1yYXdtZW1jaHIsIF9fYXNwcmludGYsIF9fbWVtcGNweSwgX19zdHJ0b2tfcgotX19hbHdheXNfaW5saW5lLCBURU1QX0ZBSUxVUkVfUkVUUlkKLQotaWYgbm90IGV4aXN0aW5nLiBIZWxwcyBjb21waWxpbmcgd2l0aCBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy9uaXMuaCBiL3NyYy9ycGNzdmMvbmlzLmgKLWluZGV4IDg4Y2JjYTAuLjIzZmMyMGMgMTAwNjQ0Ci0tLS0gYS9zcmMvcnBjc3ZjL25pcy5oCi0rKysgYi9zcmMvcnBjc3ZjL25pcy5oCi1AQCAtNTcsNiArNTcsMzQgQEAgX19CRUdJTl9ERUNMUwotICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrdWt1a0BzdXNlLmRlPgotICAqLwotIAotKyNpZm5kZWYgcmF3bWVtY2hyCi0rI2RlZmluZSByYXdtZW1jaHIocyxjKSBtZW1jaHIoKHMpLChzaXplX3QpLTEsKGMpKQotKyNlbmRpZgotKwotKyNpZm5kZWYgX19hc3ByaW50ZgotKyNkZWZpbmUgX19hc3ByaW50ZiBhc3ByaW50ZgotKyNlbmRpZgotKwotKyNpZm5kZWYgX19tZW1wY3B5Ci0rI2RlZmluZSBfX21lbXBjcHkgbWVtcGNweQotKyNlbmRpZgotKwotKyNpZm5kZWYgX19zdHJ0b2tfcgotKyNkZWZpbmUgX19zdHJ0b2tfciBzdHJ0b2tfcgotKyNlbmRpZgotKwotKyNpZm5kZWYgX19hbHdheXNfaW5saW5lCi0rI2RlZmluZSBfX2Fsd2F5c19pbmxpbmUgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQotKyNlbmRpZgotKwotKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCi0rI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwKSAoeyBcCi0rdHlwZW9mIChleHApIF9yYzsgXAotKyBkbyB7IFwKLSsgIF9yYyA9IChleHApOyBcCi0rIH0gd2hpbGUgKF9yYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7IFwKLSsgX3JjOyB9KQotKyNlbmRpZgotIAotICNpZm5kZWYgX19uaXNfb2JqZWN0X2gKLSAjZGVmaW5lIF9fbmlzX29iamVjdF9oCi0tLSAKLTIuMTIuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIKaW5kZXggYTUzOTE0OC4uYzNhMjRmYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDJfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYgpAQCAtOSwyOSArOSwxNiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gImxpYnRpcnBjIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBic2QtaGVhZGVycyIKIAotUFYgPSAiMS4wLjUrZ2l0JHtTUkNQVn0iCitQViA9ICIxLjIuMCtnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gImRmYTJmMzEzNTI0YWZmOTI0M2M0ZDhjZTFiYWNlNzM3ODY0NzgzNTYiCitTUkNSRVYgPSAiMzdjNWZmZTMwMzhkNDJlOWZhOWVkMjMyYWQyY2JjYTRkOGYxNDY4MSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Roa3VrdWsvbGlibnNsIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pc19jYWxsLmMtSW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LWRlZmluaXRpb24ucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKIAotRVhUUkFfT0VDT05GICs9ICItLWxpYmRpcj0ke2xpYmRpcn0vbnNsIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L25zbCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JbXYgJHtEfSR7bGliZGlyfS9uc2wvcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9uc2wvKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2luY2x1ZGVkaXJ9L25zbCAke2xpYmRpcn0vbnNsLyouc28iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9uc2wvKi5hIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNzLW5pcy9saWJuc3MtbmlzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNzLW5pcy9saWJuc3MtbmlzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NDQ3YWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc3MtbmlzL2xpYm5zcy1uaXMuYmIKQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJOU1MgbW9kdWxlIGZvciBnbGliYywgdG8gcHJvdmlkZSBOSVMgc3VwcG9ydCBmb3IgZ2xpYmMiCisKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgTlNTIE5JUyBwbHVnaW4gZm9yIGdsaWJjLlwKK1RoaXMgY29kZSB3YXMgZm9ybWVybHkgcGFydCBvZiBnbGliYywgYnV0IGlzIG5vdyBzdGFuZGFsb25lIHRvXAorYmUgYWJsZSB0byBsaW5rIGFnYWluc3QgVEktUlBDIGZvciBJUHY2IHN1cHBvcnQuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc3NfbmlzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyArPSAibGlidGlycGMgbGlibnNsMiIKKworUFYgPSAiMy4wK2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiZDRhZWE0ODY1N2E4ZTkwZDc5MjI1NzRiODAyMWVlMDM5MTVhMzZjYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Roa3VrdWsvbGlibnNzX25pcyBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKKyMKKyMgV2Ugd2lsbCBza2lwIHBhcnNpbmcgdGhpcyBwYWNrYWdlZ2VvdXAgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCisjCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwMWNlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCi0KLURFUEVORFMgPSAiZXhwYXQgemxpYiBycG0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0gICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICI2OWYxODAzOTc4YmE3YTQ2YTU3OTI4ZmE0YmU2NDMwNzkyNDE5ZTRlIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKLQotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4zNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJkZmM1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMzUuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCisKK0RFUEVORFMgPSAiZXhwYXQgemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ1JFViA9ICIzOGM1Mzc0ZDQ3MTI2NjdiMGI2YWRhNGJmNzhkZGJiMzQzMDk1ZDBjIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJycG0iCitQQUNLQUdFQ09ORklHW3JwbV0gPSAiLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04sLHJwbSIKKworRVhUUkFfT0VDTUFLRSA9ICItRExJQj0ke2Jhc2VsaWJ9IC1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTNlMmY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBhY2I5YTM3OTc3Y2YwYTk2MzBlYWM3NGFmOWFkZWJmMzVlMzhlNzE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvcnN0ZW4gS3VrdWsgPGt1a3VrQHRoa3VrdWsuZGU+Ci1EYXRlOiBUdWUsIDE0IE5vdiAyMDE3IDEwOjM5OjA4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgc3RkaW50LmggZnJvbSB4ZHJfc2l6ZW9mLmMgdG8gYXZvaWQgbWlzc2luZwotIGRlY2xhcmF0aW9uIGVycm9ycy4KLQotU2lnbmVkLW9mZi1ieTogVGhvcnN0ZW4gS3VrdWsgPGt1a3VrQHN1c2UuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBTdGV2ZSBEaWNrc29uIDxzdGV2ZWRAcmVkaGF0LmNvbT4KLS0tLQotIHNyYy94ZHJfc2l6ZW9mLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy94ZHJfc2l6ZW9mLmMgYi9zcmMveGRyX3NpemVvZi5jCi1pbmRleCBkMjNmYmQxLi43OWQ2NzA3IDEwMDY0NAotLS0tIGEvc3JjL3hkcl9zaXplb2YuYwotKysrIGIvc3JjL3hkcl9zaXplb2YuYwotQEAgLTM5LDYgKzM5LDcgQEAKLSAjaW5jbHVkZSA8cnBjL3hkci5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlICJ1bi1uYW1lc3BhY2UuaCIKLSAKLSAvKiBBUkdTVVNFRCAqLwotLS0gCi0xLjguMy4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLXJlcGxhY2UtX19iemVyby13aXRoLW1lbXNldC1BUEkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLXJlcGxhY2UtX19iemVyby13aXRoLW1lbXNldC1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZTE5Y2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA1MzU2YjYzMDA1ZTlkODE2OWUwMzk5Y2I3NmYyNmZiZDI5YTc4ZGVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9zaHVhIEtpbmFyZCA8a3VtYmFAZ2VudG9vLm9yZz4KLURhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTQ6MzE6MzYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSBiemVybygpIGNhbGxzIHdpdGggZXF1aXZhbGVudCBtZW1zZXQoKSBjYWxscwotCi1BcyBhbm5vdGF0ZWQgaW4gdGhlIGJ6ZXJvKDMpIG1hbiBwYWdlLCBiemVybygpIHdhcyBtYXJrZWQgYXMgTEVHQUNZIGluCi1QT1NJWC4xLTIwMDEgYW5kIHJlbW92ZWQgaW4gUE9TSVguMS0yMDA4LCBhbmQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgKLW1lbXNldCgpIGNhbGxzIHRvIHdyaXRlIHplcm9zIHRvIGEgbWVtb3J5IHJlZ2lvbi4gIFRoZSBhdHRhY2hlZCBwYXRjaAotcmVwbGFjZXMgdHdvIGJ6ZXJvKCkgY2FsbHMgYW5kIG9uZSBfX2J6ZXJvKCkgY2FsbCBpbiBsaWJ0aXJwYyB3aXRoCi1lcXVpdmFsZW50IG1lbXNldCgpIGNhbGxzLiAgVGhlIGxhdHRlciByZXBsYWNlbWVudCBmaXhlcyBhIGNvbXBpbGUgZXJyb3IKLXVuZGVyIHVjbGliYy1uZywgd2hpY2ggbGFja3MgYSBkZWZpbml0aW9uIGZvciBfX2J6ZXJvKCkKLQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIEtpbmFyZCA8a3VtYmFAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgotLS0tCi0gc3JjL2F1dGhfdGltZS5jICAgIHwgMiArLQotIHNyYy9kZXNfaW1wbC5jICAgICB8IDIgKy0KLSBzcmMvc3ZjX2F1dGhfZGVzLmMgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYXV0aF90aW1lLmMgYi9zcmMvYXV0aF90aW1lLmMKLWluZGV4IDdmODNhYjQuLjY5NDAwYmMgMTAwNjQ0Ci0tLS0gYS9zcmMvYXV0aF90aW1lLmMKLSsrKyBiL3NyYy9hdXRoX3RpbWUuYwotQEAgLTMxNyw3ICszMTcsNyBAQCBfX3JwY19nZXRfdGltZV9vZmZzZXQodGQsIHNydiwgdGhvc3QsIHVhZGRyLCBuZXRpZCkKLSAJc3ByaW50ZihpcHVhZGRyLCAiJWQuJWQuJWQuJWQuMC4xMTEiLCBhMSwgYTIsIGEzLCBhNCk7Ci0gCXVzZXVhID0gJmlwdWFkZHJbMF07Ci0gCi0tCWJ6ZXJvKChjaGFyICopJnNpbiwgc2l6ZW9mKHNpbikpOwotKwltZW1zZXQoJnNpbiwgMCwgc2l6ZW9mKHNpbikpOwotIAlpZiAodWFkZHJfdG9fc29ja2FkZHIodXNldWEsICZzaW4pKSB7Ci0gCQltc2coInVuYWJsZSB0byB0cmFuc2xhdGUgdWFkZHIgdG8gc29ja2FkZHIuIik7Ci0gCQlpZiAobmVlZGZyZWUpCi1kaWZmIC0tZ2l0IGEvc3JjL2Rlc19pbXBsLmMgYi9zcmMvZGVzX2ltcGwuYwotaW5kZXggOWRiY2NhZi4uMTViZWMyYSAxMDA2NDQKLS0tLSBhL3NyYy9kZXNfaW1wbC5jCi0rKysgYi9zcmMvZGVzX2ltcGwuYwotQEAgLTU4OCw3ICs1ODgsNyBAQCBfZGVzX2NyeXB0IChjaGFyICpidWYsIHVuc2lnbmVkIGxlbiwgc3RydWN0IGRlc3BhcmFtcyAqZGVzcCkKLSAgICAgfQotICAgdGluMCA9IHRpbjEgPSB0b3V0MCA9IHRvdXQxID0geG9yMCA9IHhvcjEgPSAwOwotICAgdGJ1ZlswXSA9IHRidWZbMV0gPSAwOwotLSAgX19iemVybyAoc2NoZWR1bGUsIHNpemVvZiAoc2NoZWR1bGUpKTsKLSsgIG1lbXNldCAoc2NoZWR1bGUsIDAsIHNpemVvZiAoc2NoZWR1bGUpKTsKLSAKLSAgIHJldHVybiAoMSk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9zdmNfYXV0aF9kZXMuYyBiL3NyYy9zdmNfYXV0aF9kZXMuYwotaW5kZXggMmU5MDE0Ni4uMTlhN2M2MCAxMDA2NDQKLS0tLSBhL3NyYy9zdmNfYXV0aF9kZXMuYwotKysrIGIvc3JjL3N2Y19hdXRoX2Rlcy5jCi1AQCAtMzU2LDcgKzM1Niw3IEBAIGNhY2hlX2luaXQoKQotIAotIAlhdXRoZGVzX2NhY2hlID0gKHN0cnVjdCBjYWNoZV9lbnRyeSAqKQotIAkJbWVtX2FsbG9jKHNpemVvZihzdHJ1Y3QgY2FjaGVfZW50cnkpICogQVVUSERFU19DQUNIRVNaKTsJCi0tCWJ6ZXJvKChjaGFyICopYXV0aGRlc19jYWNoZSwgCi0rCW1lbXNldChhdXRoZGVzX2NhY2hlLCAwLAotIAkJc2l6ZW9mKHN0cnVjdCBjYWNoZV9lbnRyeSkgKiBBVVRIREVTX0NBQ0hFU1opOwotIAotIAlhdXRoZGVzX2xydSA9IChzaG9ydCAqKW1lbV9hbGxvYyhzaXplb2Yoc2hvcnQpICogQVVUSERFU19DQUNIRVNaKTsKLS0tIAotMS44LjMuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvVXNlLW5ldGJzZC1xdWV1ZS5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvVXNlLW5ldGJzZC1xdWV1ZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTMyMjNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL1VzZS1uZXRic2QtcXVldWUuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg3OCArMCwwIEBACi1tdXNsIGRvZXMgbm90IHByb3ZpZGUgc3lzL3F1ZXVlLmggaW1wbGVtZW50YXRpb24uIEJvcnJvdyBxdWV1ZS5oIGZyb20KLXRoZSBOZXRCU0QgcHJvamVjdAotaHR0cDovL2N2c3dlYi5uZXRic2Qub3JnL2JzZHdlYi5jZ2kvc3JjL3N5cy9zeXMvcXVldWUuaD9yZXY9MS42OAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IErDtnJnIEtyYXVzZSA8am9lcmcua3JhdXNlQGVtYmVkZGVkLnJvY2tzPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvY2xudF9iY2FzdC5jIGxpYnRpcnBjLTEuMC4xL3NyYy9jbG50X2JjYXN0LmMKLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9jbG50X2JjYXN0LmMJMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvY2xudF9iY2FzdC5jCTIwMTUtMTItMjEgMTc6MDM6NTIuMDY2MDA4MzExICswMjAwCi1AQCAtNDAsNyArNDAsNiBAQAotICAqLwotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpbmNsdWRlIDxzeXMvcXVldWUuaD4KLSAKLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLUBAIC02Miw2ICs2MSw3IEBACi0gI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSsjaW5jbHVkZSAicXVldWUuaCIKLSAjaW5jbHVkZSAicnBjX2NvbS5oIgotICNpbmNsdWRlICJkZWJ1Zy5oIgotIAotZGlmZiAtTmF1ciBsaWJ0aXJwYy0xLjAuMS1vcmlnL3RpcnBjL3F1ZXVlLmggbGlidGlycGMtMS4wLjEvdGlycGMvcXVldWUuaAotLS0tIGxpYnRpcnBjLTEuMC4xLW9yaWcvdGlycGMvcXVldWUuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGxpYnRpcnBjLTEuMC4xL3RpcnBjL3F1ZXVlLmgJMjAxNS0xMi0yMSAxNzowMjo0NC40Mjc4NTM5MDUgKzAyMDAKLUBAIC0wLDAgKzEsODQ2IEBACi0rLyoJJE5ldEJTRDogcXVldWUuaCx2IDEuNjggMjAxNC8xMS8xOSAwODoxMDowMSB1ZWJheWFzaSBFeHAgJAkqLwotKwotKy8qCi0rICogQ29weXJpZ2h0IChjKSAxOTkxLCAxOTkzCi0rICoJVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rICoKLSsgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSsgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSsgKiBhcmUgbWV0OgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0rICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSsgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSsgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSsgKgotKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0rICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0rICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSsgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSsgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0rICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSsgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0rICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotKyAqIFNVQ0ggREFNQUdFLgotKyAqCi0rICoJQCgjKXF1ZXVlLmgJOC41IChCZXJrZWxleSkgOC8yMC85NAotKyAqLwotKwotKyNpZm5kZWYJX1NZU19RVUVVRV9IXwotKyNkZWZpbmUJX1NZU19RVUVVRV9IXwotKwotKy8qCi0rICogVGhpcyBmaWxlIGRlZmluZXMgZml2ZSB0eXBlcyBvZiBkYXRhIHN0cnVjdHVyZXM6IHNpbmdseS1saW5rZWQgbGlzdHMsCi0rICogbGlzdHMsIHNpbXBsZSBxdWV1ZXMsIHRhaWwgcXVldWVzLCBhbmQgY2lyY3VsYXIgcXVldWVzLgotKyAqCi0rICogQSBzaW5nbHktbGlua2VkIGxpc3QgaXMgaGVhZGVkIGJ5IGEgc2luZ2xlIGZvcndhcmQgcG9pbnRlci4gVGhlCi0rICogZWxlbWVudHMgYXJlIHNpbmdseSBsaW5rZWQgZm9yIG1pbmltdW0gc3BhY2UgYW5kIHBvaW50ZXIgbWFuaXB1bGF0aW9uCi0rICogb3ZlcmhlYWQgYXQgdGhlIGV4cGVuc2Ugb2YgTyhuKSByZW1vdmFsIGZvciBhcmJpdHJhcnkgZWxlbWVudHMuIE5ldwotKyAqIGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBhbiBleGlzdGluZyBlbGVtZW50IG9yIGF0IHRoZQotKyAqIGhlYWQgb2YgdGhlIGxpc3QuICBFbGVtZW50cyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGhlYWQgb2YgdGhlIGxpc3QKLSsgKiBzaG91bGQgdXNlIHRoZSBleHBsaWNpdCBtYWNybyBmb3IgdGhpcyBwdXJwb3NlIGZvciBvcHRpbXVtCi0rICogZWZmaWNpZW5jeS4gQSBzaW5nbHktbGlua2VkIGxpc3QgbWF5IG9ubHkgYmUgdHJhdmVyc2VkIGluIHRoZSBmb3J3YXJkCi0rICogZGlyZWN0aW9uLiAgU2luZ2x5LWxpbmtlZCBsaXN0cyBhcmUgaWRlYWwgZm9yIGFwcGxpY2F0aW9ucyB3aXRoIGxhcmdlCi0rICogZGF0YXNldHMgYW5kIGZldyBvciBubyByZW1vdmFscyBvciBmb3IgaW1wbGVtZW50aW5nIGEgTElGTyBxdWV1ZS4KLSsgKgotKyAqIEEgbGlzdCBpcyBoZWFkZWQgYnkgYSBzaW5nbGUgZm9yd2FyZCBwb2ludGVyIChvciBhbiBhcnJheSBvZiBmb3J3YXJkCi0rICogcG9pbnRlcnMgZm9yIGEgaGFzaCB0YWJsZSBoZWFkZXIpLiBUaGUgZWxlbWVudHMgYXJlIGRvdWJseSBsaW5rZWQKLSsgKiBzbyB0aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgYSBuZWVkIHRvCi0rICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlCi0rICogb3IgYWZ0ZXIgYW4gZXhpc3RpbmcgZWxlbWVudCBvciBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gQSBsaXN0Ci0rICogbWF5IG9ubHkgYmUgdHJhdmVyc2VkIGluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbi4KLSsgKgotKyAqIEEgc2ltcGxlIHF1ZXVlIGlzIGhlYWRlZCBieSBhIHBhaXIgb2YgcG9pbnRlcnMsIG9uZSB0aGUgaGVhZCBvZiB0aGUKLSsgKiBsaXN0IGFuZCB0aGUgb3RoZXIgdG8gdGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUgc2luZ2x5Ci0rICogbGlua2VkIHRvIHNhdmUgc3BhY2UsIHNvIGVsZW1lbnRzIGNhbiBvbmx5IGJlIHJlbW92ZWQgZnJvbSB0aGUKLSsgKiBoZWFkIG9mIHRoZSBsaXN0LiBOZXcgZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyCi0rICogYW4gZXhpc3RpbmcgZWxlbWVudCwgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QsIG9yIGF0IHRoZSBlbmQgb2YgdGhlCi0rICogbGlzdC4gQSBzaW1wbGUgcXVldWUgbWF5IG9ubHkgYmUgdHJhdmVyc2VkIGluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbi4KLSsgKgotKyAqIEEgdGFpbCBxdWV1ZSBpcyBoZWFkZWQgYnkgYSBwYWlyIG9mIHBvaW50ZXJzLCBvbmUgdG8gdGhlIGhlYWQgb2YgdGhlCi0rICogbGlzdCBhbmQgdGhlIG90aGVyIHRvIHRoZSB0YWlsIG9mIHRoZSBsaXN0LiBUaGUgZWxlbWVudHMgYXJlIGRvdWJseQotKyAqIGxpbmtlZCBzbyB0aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgYSBuZWVkIHRvCi0rICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlIG9yCi0rICogYWZ0ZXIgYW4gZXhpc3RpbmcgZWxlbWVudCwgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QsIG9yIGF0IHRoZSBlbmQgb2YKLSsgKiB0aGUgbGlzdC4gQSB0YWlsIHF1ZXVlIG1heSBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi4KLSsgKgotKyAqIEEgY2lyY2xlIHF1ZXVlIGlzIGhlYWRlZCBieSBhIHBhaXIgb2YgcG9pbnRlcnMsIG9uZSB0byB0aGUgaGVhZCBvZiB0aGUKLSsgKiBsaXN0IGFuZCB0aGUgb3RoZXIgdG8gdGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUgZG91Ymx5Ci0rICogbGlua2VkIHNvIHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCBhIG5lZWQgdG8KLSsgKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0byB0aGUgbGlzdCBiZWZvcmUgb3IgYWZ0ZXIKLSsgKiBhbiBleGlzdGluZyBlbGVtZW50LCBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4KLSsgKiBBIGNpcmNsZSBxdWV1ZSBtYXkgYmUgdHJhdmVyc2VkIGluIGVpdGhlciBkaXJlY3Rpb24sIGJ1dCBoYXMgYSBtb3JlCi0rICogY29tcGxleCBlbmQgb2YgbGlzdCBkZXRlY3Rpb24uCi0rICoKLSsgKiBGb3IgZGV0YWlscyBvbiB0aGUgdXNlIG9mIHRoZXNlIG1hY3Jvcywgc2VlIHRoZSBxdWV1ZSgzKSBtYW51YWwgcGFnZS4KLSsgKi8KLSsKLSsvKgotKyAqIEluY2x1ZGUgdGhlIGRlZmluaXRpb24gb2YgTlVMTCBvbmx5IG9uIE5ldEJTRCBiZWNhdXNlIHN5cy9udWxsLmgKLSsgKiBpcyBub3QgYXZhaWxhYmxlIGVsc2V3aGVyZS4gIFRoaXMgY29uZGl0aW9uYWwgbWFrZXMgdGhlIGhlYWRlcgotKyAqIHBvcnRhYmxlIGFuZCBpdCBjYW4gc2ltcGx5IGJlIGRyb3BwZWQgdmVyYmF0aW0gaW50byBhbnkgc3lzdGVtLgotKyAqIFRoZSBjYXZlYXQgaXMgdGhhdCBvbiBvdGhlciBzeXN0ZW1zIHNvbWUgb3RoZXIgaGVhZGVyCi0rICogbXVzdCBwcm92aWRlIE5VTEwgYmVmb3JlIHRoZSBtYWNyb3MgY2FuIGJlIHVzZWQuCi0rICovCi0rI2lmZGVmIF9fTmV0QlNEX18KLSsjaW5jbHVkZSA8c3lzL251bGwuaD4KLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChRVUVVRURFQlVHKQotKyMgaWYgZGVmaW5lZChfS0VSTkVMKQotKyMgIGRlZmluZSBRVUVVRURFQlVHX0FCT1JUKC4uLikgcGFuaWMoX19WQV9BUkdTX18pCi0rIyBlbHNlCi0rIyAgaW5jbHVkZSA8ZXJyLmg+Ci0rIyAgZGVmaW5lIFFVRVVFREVCVUdfQUJPUlQoLi4uKSBlcnIoMSwgX19WQV9BUkdTX18pCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKy8qCi0rICogU2luZ2x5LWxpbmtlZCBMaXN0IGRlZmluaXRpb25zLgotKyAqLwotKyNkZWZpbmUJU0xJU1RfSEVBRChuYW1lLCB0eXBlKQkJCQkJCVwKLStzdHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpzbGhfZmlyc3Q7CS8qIGZpcnN0IGVsZW1lbnQgKi8JCQlcCi0rfQotKwotKyNkZWZpbmUJU0xJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKQkJCQkJXAotKwl7IE5VTEwgfQotKwotKyNkZWZpbmUJU0xJU1RfRU5UUlkodHlwZSkJCQkJCQlcCi0rc3RydWN0IHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKnNsZV9uZXh0OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlcCi0rfQotKwotKy8qCi0rICogU2luZ2x5LWxpbmtlZCBMaXN0IGFjY2VzcyBtZXRob2RzLgotKyAqLwotKyNkZWZpbmUJU0xJU1RfRklSU1QoaGVhZCkJKChoZWFkKS0+c2xoX2ZpcnN0KQotKyNkZWZpbmUJU0xJU1RfRU5EKGhlYWQpCQlOVUxMCi0rI2RlZmluZQlTTElTVF9FTVBUWShoZWFkKQkoKGhlYWQpLT5zbGhfZmlyc3QgPT0gTlVMTCkKLSsjZGVmaW5lCVNMSVNUX05FWFQoZWxtLCBmaWVsZCkJKChlbG0pLT5maWVsZC5zbGVfbmV4dCkKLSsKLSsjZGVmaW5lCVNMSVNUX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkJCQkJCVwKLSsJZm9yKCh2YXIpID0gKGhlYWQpLT5zbGhfZmlyc3Q7CQkJCQlcCi0rCSAgICAodmFyKSAhPSBTTElTVF9FTkQoaGVhZCk7CQkJCQlcCi0rCSAgICAodmFyKSA9ICh2YXIpLT5maWVsZC5zbGVfbmV4dCkKLSsKLSsjZGVmaW5lCVNMSVNUX0ZPUkVBQ0hfU0FGRSh2YXIsIGhlYWQsIGZpZWxkLCB0dmFyKQkJCVwKLSsJZm9yICgodmFyKSA9IFNMSVNUX0ZJUlNUKChoZWFkKSk7CQkJCVwKLSsJICAgICh2YXIpICE9IFNMSVNUX0VORChoZWFkKSAmJgkJCQkJXAotKwkgICAgKCh0dmFyKSA9IFNMSVNUX05FWFQoKHZhciksIGZpZWxkKSwgMSk7CQkJXAotKwkgICAgKHZhcikgPSAodHZhcikpCi0rCi0rLyoKLSsgKiBTaW5nbHktbGlua2VkIExpc3QgZnVuY3Rpb25zLgotKyAqLwotKyNkZWZpbmUJU0xJU1RfSU5JVChoZWFkKSBkbyB7CQkJCQkJXAotKwkoaGVhZCktPnNsaF9maXJzdCA9IFNMSVNUX0VORChoZWFkKTsJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0xJU1RfSU5TRVJUX0FGVEVSKHNsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwkoZWxtKS0+ZmllbGQuc2xlX25leHQgPSAoc2xpc3RlbG0pLT5maWVsZC5zbGVfbmV4dDsJCVwKLSsJKHNsaXN0ZWxtKS0+ZmllbGQuc2xlX25leHQgPSAoZWxtKTsJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0xJU1RfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJKGVsbSktPmZpZWxkLnNsZV9uZXh0ID0gKGhlYWQpLT5zbGhfZmlyc3Q7CQkJXAotKwkoaGVhZCktPnNsaF9maXJzdCA9IChlbG0pOwkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0xJU1RfUkVNT1ZFX0FGVEVSKHNsaXN0ZWxtLCBmaWVsZCkgZG8gewkJCVwKLSsJKHNsaXN0ZWxtKS0+ZmllbGQuc2xlX25leHQgPQkJCQkJXAotKwkgICAgU0xJU1RfTkVYVChTTElTVF9ORVhUKChzbGlzdGVsbSksIGZpZWxkKSwgZmllbGQpOwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0xJU1RfUkVNT1ZFX0hFQUQoaGVhZCwgZmllbGQpIGRvIHsJCQkJXAotKwkoaGVhZCktPnNsaF9maXJzdCA9IChoZWFkKS0+c2xoX2ZpcnN0LT5maWVsZC5zbGVfbmV4dDsJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNMSVNUX1JFTU9WRShoZWFkLCBlbG0sIHR5cGUsIGZpZWxkKSBkbyB7CQkJXAotKwlpZiAoKGhlYWQpLT5zbGhfZmlyc3QgPT0gKGVsbSkpIHsJCQkJXAotKwkJU0xJU1RfUkVNT1ZFX0hFQUQoKGhlYWQpLCBmaWVsZCk7CQkJXAotKwl9CQkJCQkJCQlcCi0rCWVsc2UgewkJCQkJCQkJXAotKwkJc3RydWN0IHR5cGUgKmN1cmVsbSA9IChoZWFkKS0+c2xoX2ZpcnN0OwkJXAotKwkJd2hpbGUoY3VyZWxtLT5maWVsZC5zbGVfbmV4dCAhPSAoZWxtKSkJCQlcCi0rCQkJY3VyZWxtID0gY3VyZWxtLT5maWVsZC5zbGVfbmV4dDsJCVwKLSsJCWN1cmVsbS0+ZmllbGQuc2xlX25leHQgPQkJCQlcCi0rCQkgICAgY3VyZWxtLT5maWVsZC5zbGVfbmV4dC0+ZmllbGQuc2xlX25leHQ7CQlcCi0rCX0JCQkJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsKLSsvKgotKyAqIExpc3QgZGVmaW5pdGlvbnMuCi0rICovCi0rI2RlZmluZQlMSVNUX0hFQUQobmFtZSwgdHlwZSkJCQkJCQlcCi0rc3RydWN0IG5hbWUgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqbGhfZmlyc3Q7CS8qIGZpcnN0IGVsZW1lbnQgKi8JCQlcCi0rfQotKwotKyNkZWZpbmUJTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCi0rCXsgTlVMTCB9Ci0rCi0rI2RlZmluZQlMSVNUX0VOVFJZKHR5cGUpCQkJCQkJXAotK3N0cnVjdCB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpsZV9uZXh0OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlcCi0rCXN0cnVjdCB0eXBlICoqbGVfcHJldjsJLyogYWRkcmVzcyBvZiBwcmV2aW91cyBuZXh0IGVsZW1lbnQgKi8JXAotK30KLSsKLSsvKgotKyAqIExpc3QgYWNjZXNzIG1ldGhvZHMuCi0rICovCi0rI2RlZmluZQlMSVNUX0ZJUlNUKGhlYWQpCQkoKGhlYWQpLT5saF9maXJzdCkKLSsjZGVmaW5lCUxJU1RfRU5EKGhlYWQpCQkJTlVMTAotKyNkZWZpbmUJTElTVF9FTVBUWShoZWFkKQkJKChoZWFkKS0+bGhfZmlyc3QgPT0gTElTVF9FTkQoaGVhZCkpCi0rI2RlZmluZQlMSVNUX05FWFQoZWxtLCBmaWVsZCkJCSgoZWxtKS0+ZmllbGQubGVfbmV4dCkKLSsKLSsjZGVmaW5lCUxJU1RfRk9SRUFDSCh2YXIsIGhlYWQsIGZpZWxkKQkJCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+bGhfZmlyc3QpOwkJCQlcCi0rCSAgICAodmFyKSAhPSBMSVNUX0VORChoZWFkKTsJCQkJCVwKLSsJICAgICh2YXIpID0gKCh2YXIpLT5maWVsZC5sZV9uZXh0KSkKLSsKLSsjZGVmaW5lCUxJU1RfRk9SRUFDSF9TQUZFKHZhciwgaGVhZCwgZmllbGQsIHR2YXIpCQkJXAotKwlmb3IgKCh2YXIpID0gTElTVF9GSVJTVCgoaGVhZCkpOwkJCQlcCi0rCSAgICAodmFyKSAhPSBMSVNUX0VORChoZWFkKSAmJgkJCQkJXAotKwkgICAgKCh0dmFyKSA9IExJU1RfTkVYVCgodmFyKSwgZmllbGQpLCAxKTsJCQlcCi0rCSAgICAodmFyKSA9ICh0dmFyKSkKLSsKLSsjZGVmaW5lCUxJU1RfTU9WRShoZWFkMSwgaGVhZDIpIGRvIHsJCQkJCVwKLSsJTElTVF9JTklUKChoZWFkMikpOwkJCQkJCVwKLSsJaWYgKCFMSVNUX0VNUFRZKChoZWFkMSkpKSB7CQkJCQlcCi0rCQkoaGVhZDIpLT5saF9maXJzdCA9IChoZWFkMSktPmxoX2ZpcnN0OwkJCVwKLSsJCUxJU1RfSU5JVCgoaGVhZDEpKTsJCQkJCVwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKy8qCi0rICogTGlzdCBmdW5jdGlvbnMuCi0rICovCi0rI2lmIGRlZmluZWQoUVVFVUVERUJVRykKLSsjZGVmaW5lCVFVRVVFREVCVUdfTElTVF9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKQkJCVwKLSsJaWYgKChoZWFkKS0+bGhfZmlyc3QgJiYJCQkJCQlcCi0rCSAgICAoaGVhZCktPmxoX2ZpcnN0LT5maWVsZC5sZV9wcmV2ICE9ICYoaGVhZCktPmxoX2ZpcnN0KQlcCi0rCQlRVUVVRURFQlVHX0FCT1JUKCJMSVNUX0lOU0VSVF9IRUFEICVwICVzOiVkIiwgKGhlYWQpLAlcCi0rCQkgICAgX19GSUxFX18sIF9fTElORV9fKTsKLSsjZGVmaW5lCVFVRVVFREVCVUdfTElTVF9PUChlbG0sIGZpZWxkKQkJCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLmxlX25leHQgJiYJCQkJCVwKLSsJICAgIChlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9wcmV2ICE9CQkJXAotKwkgICAgJihlbG0pLT5maWVsZC5sZV9uZXh0KQkJCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiTElTVF8qIGZvcncgJXAgJXM6JWQiLCAoZWxtKSwJCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwkJCQlcCi0rCWlmICgqKGVsbSktPmZpZWxkLmxlX3ByZXYgIT0gKGVsbSkpCQkJCVwKLSsJCVFVRVVFREVCVUdfQUJPUlQoIkxJU1RfKiBiYWNrICVwICVzOiVkIiwgKGVsbSksCQlcCi0rCQkgICAgX19GSUxFX18sIF9fTElORV9fKTsKLSsjZGVmaW5lCVFVRVVFREVCVUdfTElTVF9QT1NUUkVNT1ZFKGVsbSwgZmllbGQpCQkJCVwKLSsJKGVsbSktPmZpZWxkLmxlX25leHQgPSAodm9pZCAqKTFMOwkJCQlcCi0rCShlbG0pLT5maWVsZC5sZV9wcmV2ID0gKHZvaWQgKikxTDsKLSsjZWxzZQotKyNkZWZpbmUJUVVFVUVERUJVR19MSVNUX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpCi0rI2RlZmluZQlRVUVVRURFQlVHX0xJU1RfT1AoZWxtLCBmaWVsZCkKLSsjZGVmaW5lCVFVRVVFREVCVUdfTElTVF9QT1NUUkVNT1ZFKGVsbSwgZmllbGQpCi0rI2VuZGlmCi0rCi0rI2RlZmluZQlMSVNUX0lOSVQoaGVhZCkgZG8gewkJCQkJCVwKLSsJKGhlYWQpLT5saF9maXJzdCA9IExJU1RfRU5EKGhlYWQpOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlMSVNUX0lOU0VSVF9BRlRFUihsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwlRVUVVRURFQlVHX0xJU1RfT1AoKGxpc3RlbG0pLCBmaWVsZCkJCQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0KSAhPSAJXAotKwkgICAgTElTVF9FTkQoaGVhZCkpCQkJCQkJXAotKwkJKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9wcmV2ID0JCVwKLSsJCSAgICAmKGVsbSktPmZpZWxkLmxlX25leHQ7CQkJCVwKLSsJKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGVsbSk7CQkJCVwKLSsJKGVsbSktPmZpZWxkLmxlX3ByZXYgPSAmKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0OwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJTElTVF9JTlNFUlRfQkVGT1JFKGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfTElTVF9PUCgobGlzdGVsbSksIGZpZWxkKQkJCQlcCi0rCShlbG0pLT5maWVsZC5sZV9wcmV2ID0gKGxpc3RlbG0pLT5maWVsZC5sZV9wcmV2OwkJXAotKwkoZWxtKS0+ZmllbGQubGVfbmV4dCA9IChsaXN0ZWxtKTsJCQkJXAotKwkqKGxpc3RlbG0pLT5maWVsZC5sZV9wcmV2ID0gKGVsbSk7CQkJCVwKLSsJKGxpc3RlbG0pLT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVsZC5sZV9uZXh0OwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJTElTVF9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJCVwKLSsJUVVFVUVERUJVR19MSVNUX0lOU0VSVF9IRUFEKChoZWFkKSwgKGVsbSksIGZpZWxkKQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGhlYWQpLT5saF9maXJzdCkgIT0gTElTVF9FTkQoaGVhZCkpXAotKwkJKGhlYWQpLT5saF9maXJzdC0+ZmllbGQubGVfcHJldiA9ICYoZWxtKS0+ZmllbGQubGVfbmV4dDtcCi0rCShoZWFkKS0+bGhfZmlyc3QgPSAoZWxtKTsJCQkJCVwKLSsJKGVsbSktPmZpZWxkLmxlX3ByZXYgPSAmKGhlYWQpLT5saF9maXJzdDsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlMSVNUX1JFTU9WRShlbG0sIGZpZWxkKSBkbyB7CQkJCQlcCi0rCVFVRVVFREVCVUdfTElTVF9PUCgoZWxtKSwgZmllbGQpCQkJCVwKLSsJaWYgKChlbG0pLT5maWVsZC5sZV9uZXh0ICE9IE5VTEwpCQkJCVwKLSsJCShlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9wcmV2ID0gCQkJXAotKwkJICAgIChlbG0pLT5maWVsZC5sZV9wcmV2OwkJCQlcCi0rCSooZWxtKS0+ZmllbGQubGVfcHJldiA9IChlbG0pLT5maWVsZC5sZV9uZXh0OwkJCVwKLSsJUVVFVUVERUJVR19MSVNUX1BPU1RSRU1PVkUoKGVsbSksIGZpZWxkKQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lIExJU1RfUkVQTEFDRShlbG0sIGVsbTIsIGZpZWxkKSBkbyB7CQkJCVwKLSsJaWYgKCgoZWxtMiktPmZpZWxkLmxlX25leHQgPSAoZWxtKS0+ZmllbGQubGVfbmV4dCkgIT0gTlVMTCkJXAotKwkJKGVsbTIpLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9wcmV2ID0JCQlcCi0rCQkgICAgJihlbG0yKS0+ZmllbGQubGVfbmV4dDsJCQkJXAotKwkoZWxtMiktPmZpZWxkLmxlX3ByZXYgPSAoZWxtKS0+ZmllbGQubGVfcHJldjsJCQlcCi0rCSooZWxtMiktPmZpZWxkLmxlX3ByZXYgPSAoZWxtMik7CQkJCVwKLSsJUVVFVUVERUJVR19MSVNUX1BPU1RSRU1PVkUoKGVsbSksIGZpZWxkKQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsvKgotKyAqIFNpbXBsZSBxdWV1ZSBkZWZpbml0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCVNJTVBMRVFfSEVBRChuYW1lLCB0eXBlKQkJCQkJXAotK3N0cnVjdCBuYW1lIHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKnNxaF9maXJzdDsJLyogZmlyc3QgZWxlbWVudCAqLwkJCVwKLSsJc3RydWN0IHR5cGUgKipzcWhfbGFzdDsJLyogYWRkciBvZiBsYXN0IG5leHQgZWxlbWVudCAqLwkJXAotK30KLSsKLSsjZGVmaW5lCVNJTVBMRVFfSEVBRF9JTklUSUFMSVpFUihoZWFkKQkJCQkJXAotKwl7IE5VTEwsICYoaGVhZCkuc3FoX2ZpcnN0IH0KLSsKLSsjZGVmaW5lCVNJTVBMRVFfRU5UUlkodHlwZSkJCQkJCQlcCi0rc3RydWN0IHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKnNxZV9uZXh0OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlcCi0rfQotKwotKy8qCi0rICogU2ltcGxlIHF1ZXVlIGFjY2VzcyBtZXRob2RzLgotKyAqLwotKyNkZWZpbmUJU0lNUExFUV9GSVJTVChoZWFkKQkJKChoZWFkKS0+c3FoX2ZpcnN0KQotKyNkZWZpbmUJU0lNUExFUV9FTkQoaGVhZCkJCU5VTEwKLSsjZGVmaW5lCVNJTVBMRVFfRU1QVFkoaGVhZCkJCSgoaGVhZCktPnNxaF9maXJzdCA9PSBTSU1QTEVRX0VORChoZWFkKSkKLSsjZGVmaW5lCVNJTVBMRVFfTkVYVChlbG0sIGZpZWxkKQkoKGVsbSktPmZpZWxkLnNxZV9uZXh0KQotKwotKyNkZWZpbmUJU0lNUExFUV9GT1JFQUNIKHZhciwgaGVhZCwgZmllbGQpCQkJCVwKLSsJZm9yICgodmFyKSA9ICgoaGVhZCktPnNxaF9maXJzdCk7CQkJCVwKLSsJICAgICh2YXIpICE9IFNJTVBMRVFfRU5EKGhlYWQpOwkJCQkJXAotKwkgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLnNxZV9uZXh0KSkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfRk9SRUFDSF9TQUZFKHZhciwgaGVhZCwgZmllbGQsIG5leHQpCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+c3FoX2ZpcnN0KTsJCQkJXAotKwkgICAgKHZhcikgIT0gU0lNUExFUV9FTkQoaGVhZCkgJiYJCQkJXAotKwkgICAgKChuZXh0ID0gKCh2YXIpLT5maWVsZC5zcWVfbmV4dCkpLCAxKTsJCQlcCi0rCSAgICAodmFyKSA9IChuZXh0KSkKLSsKLSsvKgotKyAqIFNpbXBsZSBxdWV1ZSBmdW5jdGlvbnMuCi0rICovCi0rI2RlZmluZQlTSU1QTEVRX0lOSVQoaGVhZCkgZG8gewkJCQkJCVwKLSsJKGhlYWQpLT5zcWhfZmlyc3QgPSBOVUxMOwkJCQkJXAotKwkoaGVhZCktPnNxaF9sYXN0ID0gJihoZWFkKS0+c3FoX2ZpcnN0OwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnNxZV9uZXh0ID0gKGhlYWQpLT5zcWhfZmlyc3QpID09IE5VTEwpCVwKLSsJCShoZWFkKS0+c3FoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnNxZV9uZXh0OwkJXAotKwkoaGVhZCktPnNxaF9maXJzdCA9IChlbG0pOwkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0lNUExFUV9JTlNFUlRfVEFJTChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwkoZWxtKS0+ZmllbGQuc3FlX25leHQgPSBOVUxMOwkJCQkJXAotKwkqKGhlYWQpLT5zcWhfbGFzdCA9IChlbG0pOwkJCQkJXAotKwkoaGVhZCktPnNxaF9sYXN0ID0gJihlbG0pLT5maWVsZC5zcWVfbmV4dDsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX0lOU0VSVF9BRlRFUihoZWFkLCBsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnNxZV9uZXh0ID0gKGxpc3RlbG0pLT5maWVsZC5zcWVfbmV4dCkgPT0gTlVMTClcCi0rCQkoaGVhZCktPnNxaF9sYXN0ID0gJihlbG0pLT5maWVsZC5zcWVfbmV4dDsJCVwKLSsJKGxpc3RlbG0pLT5maWVsZC5zcWVfbmV4dCA9IChlbG0pOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX1JFTU9WRV9IRUFEKGhlYWQsIGZpZWxkKSBkbyB7CQkJCVwKLSsJaWYgKCgoaGVhZCktPnNxaF9maXJzdCA9IChoZWFkKS0+c3FoX2ZpcnN0LT5maWVsZC5zcWVfbmV4dCkgPT0gTlVMTCkgXAotKwkJKGhlYWQpLT5zcWhfbGFzdCA9ICYoaGVhZCktPnNxaF9maXJzdDsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZSBTSU1QTEVRX1JFTU9WRV9BRlRFUihoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC5zcWVfbmV4dCA9IChlbG0pLT5maWVsZC5zcWVfbmV4dC0+ZmllbGQuc3FlX25leHQpIFwKLSsJICAgID09IE5VTEwpCQkJCQkJCVwKLSsJCShoZWFkKS0+c3FoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnNxZV9uZXh0OwkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU0lNUExFUV9SRU1PVkUoaGVhZCwgZWxtLCB0eXBlLCBmaWVsZCkgZG8gewkJCVwKLSsJaWYgKChoZWFkKS0+c3FoX2ZpcnN0ID09IChlbG0pKSB7CQkJCVwKLSsJCVNJTVBMRVFfUkVNT1ZFX0hFQUQoKGhlYWQpLCBmaWVsZCk7CQkJXAotKwl9IGVsc2UgewkJCQkJCQlcCi0rCQlzdHJ1Y3QgdHlwZSAqY3VyZWxtID0gKGhlYWQpLT5zcWhfZmlyc3Q7CQlcCi0rCQl3aGlsZSAoY3VyZWxtLT5maWVsZC5zcWVfbmV4dCAhPSAoZWxtKSkJCQlcCi0rCQkJY3VyZWxtID0gY3VyZWxtLT5maWVsZC5zcWVfbmV4dDsJCVwKLSsJCWlmICgoY3VyZWxtLT5maWVsZC5zcWVfbmV4dCA9CQkJCVwKLSsJCQljdXJlbG0tPmZpZWxkLnNxZV9uZXh0LT5maWVsZC5zcWVfbmV4dCkgPT0gTlVMTCkgXAotKwkJCSAgICAoaGVhZCktPnNxaF9sYXN0ID0gJihjdXJlbG0pLT5maWVsZC5zcWVfbmV4dDsgXAotKwl9CQkJCQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTSU1QTEVRX0NPTkNBVChoZWFkMSwgaGVhZDIpIGRvIHsJCQkJXAotKwlpZiAoIVNJTVBMRVFfRU1QVFkoKGhlYWQyKSkpIHsJCQkJCVwKLSsJCSooaGVhZDEpLT5zcWhfbGFzdCA9IChoZWFkMiktPnNxaF9maXJzdDsJCVwKLSsJCShoZWFkMSktPnNxaF9sYXN0ID0gKGhlYWQyKS0+c3FoX2xhc3Q7CQlcCi0rCQlTSU1QTEVRX0lOSVQoKGhlYWQyKSk7CQkJCQlcCi0rCX0JCQkJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNJTVBMRVFfTEFTVChoZWFkLCB0eXBlLCBmaWVsZCkJCQkJCVwKLSsJKFNJTVBMRVFfRU1QVFkoKGhlYWQpKSA/CQkJCQkJXAotKwkJTlVMTCA6CQkJCQkJCVwKLSsJICAgICAgICAoKHN0cnVjdCB0eXBlICopKHZvaWQgKikJCQkJXAotKwkJKChjaGFyICopKChoZWFkKS0+c3FoX2xhc3QpIC0gb2Zmc2V0b2Yoc3RydWN0IHR5cGUsIGZpZWxkKSkpKQotKwotKy8qCi0rICogVGFpbCBxdWV1ZSBkZWZpbml0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCV9UQUlMUV9IRUFEKG5hbWUsIHR5cGUsIHF1YWwpCQkJCQlcCi0rc3RydWN0IG5hbWUgewkJCQkJCQkJXAotKwlxdWFsIHR5cGUgKnRxaF9maXJzdDsJCS8qIGZpcnN0IGVsZW1lbnQgKi8JCVwKLSsJcXVhbCB0eXBlICpxdWFsICp0cWhfbGFzdDsJLyogYWRkciBvZiBsYXN0IG5leHQgZWxlbWVudCAqLwlcCi0rfQotKyNkZWZpbmUgVEFJTFFfSEVBRChuYW1lLCB0eXBlKQlfVEFJTFFfSEVBRChuYW1lLCBzdHJ1Y3QgdHlwZSwpCi0rCi0rI2RlZmluZQlUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCi0rCXsgVEFJTFFfRU5EKGhlYWQpLCAmKGhlYWQpLnRxaF9maXJzdCB9Ci0rCi0rI2RlZmluZQlfVEFJTFFfRU5UUlkodHlwZSwgcXVhbCkJCQkJCVwKLStzdHJ1Y3QgewkJCQkJCQkJXAotKwlxdWFsIHR5cGUgKnRxZV9uZXh0OwkJLyogbmV4dCBlbGVtZW50ICovCQlcCi0rCXF1YWwgdHlwZSAqcXVhbCAqdHFlX3ByZXY7CS8qIGFkZHJlc3Mgb2YgcHJldmlvdXMgbmV4dCBlbGVtZW50ICovXAotK30KLSsjZGVmaW5lIFRBSUxRX0VOVFJZKHR5cGUpCV9UQUlMUV9FTlRSWShzdHJ1Y3QgdHlwZSwpCi0rCi0rLyoKLSsgKiBUYWlsIHF1ZXVlIGFjY2VzcyBtZXRob2RzLgotKyAqLwotKyNkZWZpbmUJVEFJTFFfRklSU1QoaGVhZCkJCSgoaGVhZCktPnRxaF9maXJzdCkKLSsjZGVmaW5lCVRBSUxRX0VORChoZWFkKQkJCShOVUxMKQotKyNkZWZpbmUJVEFJTFFfTkVYVChlbG0sIGZpZWxkKQkJKChlbG0pLT5maWVsZC50cWVfbmV4dCkKLSsjZGVmaW5lCVRBSUxRX0xBU1QoaGVhZCwgaGVhZG5hbWUpIFwKLSsJKCooKChzdHJ1Y3QgaGVhZG5hbWUgKikoKGhlYWQpLT50cWhfbGFzdCkpLT50cWhfbGFzdCkpCi0rI2RlZmluZQlUQUlMUV9QUkVWKGVsbSwgaGVhZG5hbWUsIGZpZWxkKSBcCi0rCSgqKCgoc3RydWN0IGhlYWRuYW1lICopKChlbG0pLT5maWVsZC50cWVfcHJldikpLT50cWhfbGFzdCkpCi0rI2RlZmluZQlUQUlMUV9FTVBUWShoZWFkKQkJKFRBSUxRX0ZJUlNUKGhlYWQpID09IFRBSUxRX0VORChoZWFkKSkKLSsKLSsKLSsjZGVmaW5lCVRBSUxRX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkJCQkJCVwKLSsJZm9yICgodmFyKSA9ICgoaGVhZCktPnRxaF9maXJzdCk7CQkJCVwKLSsJICAgICh2YXIpICE9IFRBSUxRX0VORChoZWFkKTsJCQkJCVwKLSsJICAgICh2YXIpID0gKCh2YXIpLT5maWVsZC50cWVfbmV4dCkpCi0rCi0rI2RlZmluZQlUQUlMUV9GT1JFQUNIX1NBRkUodmFyLCBoZWFkLCBmaWVsZCwgbmV4dCkJCQlcCi0rCWZvciAoKHZhcikgPSAoKGhlYWQpLT50cWhfZmlyc3QpOwkJCQlcCi0rCSAgICAodmFyKSAhPSBUQUlMUV9FTkQoaGVhZCkgJiYJCQkJCVwKLSsJICAgICgobmV4dCkgPSBUQUlMUV9ORVhUKHZhciwgZmllbGQpLCAxKTsgKHZhcikgPSAobmV4dCkpCi0rCi0rI2RlZmluZQlUQUlMUV9GT1JFQUNIX1JFVkVSU0UodmFyLCBoZWFkLCBoZWFkbmFtZSwgZmllbGQpCQlcCi0rCWZvciAoKHZhcikgPSAoKigoKHN0cnVjdCBoZWFkbmFtZSAqKSgoaGVhZCktPnRxaF9sYXN0KSktPnRxaF9sYXN0KSk7XAotKwkgICAgKHZhcikgIT0gVEFJTFFfRU5EKGhlYWQpOwkJCQkJXAotKwkgICAgKHZhcikgPSAoKigoKHN0cnVjdCBoZWFkbmFtZSAqKSgodmFyKS0+ZmllbGQudHFlX3ByZXYpKS0+dHFoX2xhc3QpKSkKLSsKLSsjZGVmaW5lCVRBSUxRX0ZPUkVBQ0hfUkVWRVJTRV9TQUZFKHZhciwgaGVhZCwgaGVhZG5hbWUsIGZpZWxkLCBwcmV2KQlcCi0rCWZvciAoKHZhcikgPSBUQUlMUV9MQVNUKChoZWFkKSwgaGVhZG5hbWUpOwkJCVwKLSsJICAgICh2YXIpICE9IFRBSUxRX0VORChoZWFkKSAmJiAJCQkJXAotKwkgICAgKChwcmV2KSA9IFRBSUxRX1BSRVYoKHZhciksIGhlYWRuYW1lLCBmaWVsZCksIDEpOyAodmFyKSA9IChwcmV2KSkKLSsKLSsvKgotKyAqIFRhaWwgcXVldWUgZnVuY3Rpb25zLgotKyAqLwotKyNpZiBkZWZpbmVkKFFVRVVFREVCVUcpCi0rI2RlZmluZQlRVUVVRURFQlVHX1RBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpCQkJXAotKwlpZiAoKGhlYWQpLT50cWhfZmlyc3QgJiYJCQkJCVwKLSsJICAgIChoZWFkKS0+dHFoX2ZpcnN0LT5maWVsZC50cWVfcHJldiAhPSAmKGhlYWQpLT50cWhfZmlyc3QpCVwKLSsJCVFVRVVFREVCVUdfQUJPUlQoIlRBSUxRX0lOU0VSVF9IRUFEICVwICVzOiVkIiwgKGhlYWQpLAlcCi0rCQkgICAgX19GSUxFX18sIF9fTElORV9fKTsKLSsjZGVmaW5lCVFVRVVFREVCVUdfVEFJTFFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkJCQlcCi0rCWlmICgqKGhlYWQpLT50cWhfbGFzdCAhPSBOVUxMKQkJCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiVEFJTFFfSU5TRVJUX1RBSUwgJXAgJXM6JWQiLCAoaGVhZCksCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9PUChlbG0sIGZpZWxkKQkJCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLnRxZV9uZXh0ICYmCQkJCQlcCi0rCSAgICAoZWxtKS0+ZmllbGQudHFlX25leHQtPmZpZWxkLnRxZV9wcmV2ICE9CQkJXAotKwkgICAgJihlbG0pLT5maWVsZC50cWVfbmV4dCkJCQkJCVwKLSsJCVFVRVVFREVCVUdfQUJPUlQoIlRBSUxRXyogZm9ydyAlcCAlczolZCIsIChlbG0pLAlcCi0rCQkgICAgX19GSUxFX18sIF9fTElORV9fKTsJCQkJXAotKwlpZiAoKihlbG0pLT5maWVsZC50cWVfcHJldiAhPSAoZWxtKSkJCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiVEFJTFFfKiBiYWNrICVwICVzOiVkIiwgKGVsbSksCVwKLSsJCSAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9QUkVSRU1PVkUoaGVhZCwgZWxtLCBmaWVsZCkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQudHFlX25leHQgPT0gTlVMTCAmJgkJCQlcCi0rCSAgICAoaGVhZCktPnRxaF9sYXN0ICE9ICYoZWxtKS0+ZmllbGQudHFlX25leHQpCQkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiVEFJTFFfUFJFUkVNT1ZFIGhlYWQgJXAgZWxtICVwICVzOiVkIixcCi0rCQkgICAgKGhlYWQpLCAoZWxtKSwgX19GSUxFX18sIF9fTElORV9fKTsKLSsjZGVmaW5lCVFVRVVFREVCVUdfVEFJTFFfUE9TVFJFTU9WRShlbG0sIGZpZWxkKQkJCQlcCi0rCShlbG0pLT5maWVsZC50cWVfbmV4dCA9ICh2b2lkICopMUw7CQkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gKHZvaWQgKikxTDsKLSsjZWxzZQotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKQotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9JTlNFUlRfVEFJTChoZWFkLCBlbG0sIGZpZWxkKQotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9PUChlbG0sIGZpZWxkKQotKyNkZWZpbmUJUVVFVUVERUJVR19UQUlMUV9QUkVSRU1PVkUoaGVhZCwgZWxtLCBmaWVsZCkKLSsjZGVmaW5lCVFVRVVFREVCVUdfVEFJTFFfUE9TVFJFTU9WRShlbG0sIGZpZWxkKQotKyNlbmRpZgotKwotKyNkZWZpbmUJVEFJTFFfSU5JVChoZWFkKSBkbyB7CQkJCQkJXAotKwkoaGVhZCktPnRxaF9maXJzdCA9IFRBSUxRX0VORChoZWFkKTsJCQkJXAotKwkoaGVhZCktPnRxaF9sYXN0ID0gJihoZWFkKS0+dHFoX2ZpcnN0OwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlUQUlMUV9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwlRVUVVRURFQlVHX1RBSUxRX0lOU0VSVF9IRUFEKChoZWFkKSwgKGVsbSksIGZpZWxkKQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC50cWVfbmV4dCA9IChoZWFkKS0+dHFoX2ZpcnN0KSAhPSBUQUlMUV9FTkQoaGVhZCkpXAotKwkJKGhlYWQpLT50cWhfZmlyc3QtPmZpZWxkLnRxZV9wcmV2ID0JCQlcCi0rCQkgICAgJihlbG0pLT5maWVsZC50cWVfbmV4dDsJCQkJXAotKwllbHNlCQkJCQkJCQlcCi0rCQkoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsJCVwKLSsJKGhlYWQpLT50cWhfZmlyc3QgPSAoZWxtKTsJCQkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihoZWFkKS0+dHFoX2ZpcnN0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfSU5TRVJUX1RBSUwoKGhlYWQpLCAoZWxtKSwgZmllbGQpCQlcCi0rCShlbG0pLT5maWVsZC50cWVfbmV4dCA9IFRBSUxRX0VORChoZWFkKTsJCQlcCi0rCShlbG0pLT5maWVsZC50cWVfcHJldiA9IChoZWFkKS0+dHFoX2xhc3Q7CQkJXAotKwkqKGhlYWQpLT50cWhfbGFzdCA9IChlbG0pOwkJCQkJXAotKwkoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlUQUlMUV9JTlNFUlRfQUZURVIoaGVhZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8gewkJXAotKwlRVUVVRURFQlVHX1RBSUxRX09QKChsaXN0ZWxtKSwgZmllbGQpCQkJCVwKLSsJaWYgKCgoZWxtKS0+ZmllbGQudHFlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0KSAhPSAJXAotKwkgICAgVEFJTFFfRU5EKGhlYWQpKQkJCQkJCVwKLSsJCShlbG0pLT5maWVsZC50cWVfbmV4dC0+ZmllbGQudHFlX3ByZXYgPSAJCVwKLSsJCSAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShoZWFkKS0+dHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJXAotKwkobGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGVsbSk7CQkJCVwKLSsJKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihsaXN0ZWxtKS0+ZmllbGQudHFlX25leHQ7CQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlUQUlMUV9JTlNFUlRfQkVGT1JFKGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfT1AoKGxpc3RlbG0pLCBmaWVsZCkJCQkJXAotKwkoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2OwkJXAotKwkoZWxtKS0+ZmllbGQudHFlX25leHQgPSAobGlzdGVsbSk7CQkJCVwKLSsJKihsaXN0ZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAoZWxtKTsJCQkJXAotKwkobGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVRBSUxRX1JFTU9WRShoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJCVwKLSsJUVVFVUVERUJVR19UQUlMUV9QUkVSRU1PVkUoKGhlYWQpLCAoZWxtKSwgZmllbGQpCQlcCi0rCVFVRVVFREVCVUdfVEFJTFFfT1AoKGVsbSksIGZpZWxkKQkJCQlcCi0rCWlmICgoKGVsbSktPmZpZWxkLnRxZV9uZXh0KSAhPSBUQUlMUV9FTkQoaGVhZCkpCQkJXAotKwkJKGVsbSktPmZpZWxkLnRxZV9uZXh0LT5maWVsZC50cWVfcHJldiA9IAkJXAotKwkJICAgIChlbG0pLT5maWVsZC50cWVfcHJldjsJCQkJXAotKwllbHNlCQkJCQkJCQlcCi0rCQkoaGVhZCktPnRxaF9sYXN0ID0gKGVsbSktPmZpZWxkLnRxZV9wcmV2OwkJXAotKwkqKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCVwKLSsJUVVFVUVERUJVR19UQUlMUV9QT1NUUkVNT1ZFKChlbG0pLCBmaWVsZCk7CQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUgVEFJTFFfUkVQTEFDRShoZWFkLCBlbG0sIGVsbTIsIGZpZWxkKSBkbyB7CQkJXAotKyAgICAgICAgaWYgKCgoZWxtMiktPmZpZWxkLnRxZV9uZXh0ID0gKGVsbSktPmZpZWxkLnRxZV9uZXh0KSAhPSAJXAotKwkgICAgVEFJTFFfRU5EKGhlYWQpKSAgIAkJCQkJCVwKLSsgICAgICAgICAgICAgICAgKGVsbTIpLT5maWVsZC50cWVfbmV4dC0+ZmllbGQudHFlX3ByZXYgPQkJXAotKyAgICAgICAgICAgICAgICAgICAgJihlbG0yKS0+ZmllbGQudHFlX25leHQ7CQkJCVwKLSsgICAgICAgIGVsc2UJCQkJCQkJCVwKLSsgICAgICAgICAgICAgICAgKGhlYWQpLT50cWhfbGFzdCA9ICYoZWxtMiktPmZpZWxkLnRxZV9uZXh0OwkJXAotKyAgICAgICAgKGVsbTIpLT5maWVsZC50cWVfcHJldiA9IChlbG0pLT5maWVsZC50cWVfcHJldjsJCQlcCi0rICAgICAgICAqKGVsbTIpLT5maWVsZC50cWVfcHJldiA9IChlbG0yKTsJCQkJXAotKwlRVUVVRURFQlVHX1RBSUxRX1BPU1RSRU1PVkUoKGVsbSksIGZpZWxkKTsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlUQUlMUV9DT05DQVQoaGVhZDEsIGhlYWQyLCBmaWVsZCkgZG8gewkJCQlcCi0rCWlmICghVEFJTFFfRU1QVFkoaGVhZDIpKSB7CQkJCQlcCi0rCQkqKGhlYWQxKS0+dHFoX2xhc3QgPSAoaGVhZDIpLT50cWhfZmlyc3Q7CQlcCi0rCQkoaGVhZDIpLT50cWhfZmlyc3QtPmZpZWxkLnRxZV9wcmV2ID0gKGhlYWQxKS0+dHFoX2xhc3Q7CVwKLSsJCShoZWFkMSktPnRxaF9sYXN0ID0gKGhlYWQyKS0+dHFoX2xhc3Q7CQkJXAotKwkJVEFJTFFfSU5JVCgoaGVhZDIpKTsJCQkJCVwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKy8qCi0rICogU2luZ2x5LWxpbmtlZCBUYWlsIHF1ZXVlIGRlY2xhcmF0aW9ucy4KLSsgKi8KLSsjZGVmaW5lCVNUQUlMUV9IRUFEKG5hbWUsIHR5cGUpCQkJCQkJXAotK3N0cnVjdCBuYW1lIHsJCQkJCQkJCVwKLSsJc3RydWN0IHR5cGUgKnN0cWhfZmlyc3Q7CS8qIGZpcnN0IGVsZW1lbnQgKi8JCVwKLSsJc3RydWN0IHR5cGUgKipzdHFoX2xhc3Q7CS8qIGFkZHIgb2YgbGFzdCBuZXh0IGVsZW1lbnQgKi8JXAotK30KLSsKLSsjZGVmaW5lCVNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpCQkJCQlcCi0rCXsgTlVMTCwgJihoZWFkKS5zdHFoX2ZpcnN0IH0KLSsKLSsjZGVmaW5lCVNUQUlMUV9FTlRSWSh0eXBlKQkJCQkJCVwKLStzdHJ1Y3QgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqc3RxZV9uZXh0OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlcCi0rfQotKwotKy8qCi0rICogU2luZ2x5LWxpbmtlZCBUYWlsIHF1ZXVlIGFjY2VzcyBtZXRob2RzLgotKyAqLwotKyNkZWZpbmUJU1RBSUxRX0ZJUlNUKGhlYWQpCSgoaGVhZCktPnN0cWhfZmlyc3QpCi0rI2RlZmluZQlTVEFJTFFfRU5EKGhlYWQpCU5VTEwKLSsjZGVmaW5lCVNUQUlMUV9ORVhUKGVsbSwgZmllbGQpCSgoZWxtKS0+ZmllbGQuc3RxZV9uZXh0KQotKyNkZWZpbmUJU1RBSUxRX0VNUFRZKGhlYWQpCShTVEFJTFFfRklSU1QoaGVhZCkgPT0gU1RBSUxRX0VORChoZWFkKSkKLSsKLSsvKgotKyAqIFNpbmdseS1saW5rZWQgVGFpbCBxdWV1ZSBmdW5jdGlvbnMuCi0rICovCi0rI2RlZmluZQlTVEFJTFFfSU5JVChoZWFkKSBkbyB7CQkJCQkJXAotKwkoaGVhZCktPnN0cWhfZmlyc3QgPSBOVUxMOwkJCQkJXAotKwkoaGVhZCktPnN0cWhfbGFzdCA9ICYoaGVhZCktPnN0cWhfZmlyc3Q7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNUQUlMUV9JTlNFUlRfSEVBRChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7CQkJXAotKwlpZiAoKChlbG0pLT5maWVsZC5zdHFlX25leHQgPSAoaGVhZCktPnN0cWhfZmlyc3QpID09IE5VTEwpCVwKLSsJCShoZWFkKS0+c3RxaF9sYXN0ID0gJihlbG0pLT5maWVsZC5zdHFlX25leHQ7CQlcCi0rCShoZWFkKS0+c3RxaF9maXJzdCA9IChlbG0pOwkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCShlbG0pLT5maWVsZC5zdHFlX25leHQgPSBOVUxMOwkJCQkJXAotKwkqKGhlYWQpLT5zdHFoX2xhc3QgPSAoZWxtKTsJCQkJCVwKLSsJKGhlYWQpLT5zdHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnN0cWVfbmV4dDsJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlTVEFJTFFfSU5TRVJUX0FGVEVSKGhlYWQsIGxpc3RlbG0sIGVsbSwgZmllbGQpIGRvIHsJCVwKLSsJaWYgKCgoZWxtKS0+ZmllbGQuc3RxZV9uZXh0ID0gKGxpc3RlbG0pLT5maWVsZC5zdHFlX25leHQpID09IE5VTEwpXAotKwkJKGhlYWQpLT5zdHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnN0cWVfbmV4dDsJCVwKLSsJKGxpc3RlbG0pLT5maWVsZC5zdHFlX25leHQgPSAoZWxtKTsJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX1JFTU9WRV9IRUFEKGhlYWQsIGZpZWxkKSBkbyB7CQkJCVwKLSsJaWYgKCgoaGVhZCktPnN0cWhfZmlyc3QgPSAoaGVhZCktPnN0cWhfZmlyc3QtPmZpZWxkLnN0cWVfbmV4dCkgPT0gTlVMTCkgXAotKwkJKGhlYWQpLT5zdHFoX2xhc3QgPSAmKGhlYWQpLT5zdHFoX2ZpcnN0OwkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNUQUlMUV9SRU1PVkUoaGVhZCwgZWxtLCB0eXBlLCBmaWVsZCkgZG8gewkJCVwKLSsJaWYgKChoZWFkKS0+c3RxaF9maXJzdCA9PSAoZWxtKSkgewkJCQlcCi0rCQlTVEFJTFFfUkVNT1ZFX0hFQUQoKGhlYWQpLCBmaWVsZCk7CQkJXAotKwl9IGVsc2UgewkJCQkJCQlcCi0rCQlzdHJ1Y3QgdHlwZSAqY3VyZWxtID0gKGhlYWQpLT5zdHFoX2ZpcnN0OwkJXAotKwkJd2hpbGUgKGN1cmVsbS0+ZmllbGQuc3RxZV9uZXh0ICE9IChlbG0pKQkJCVwKLSsJCQljdXJlbG0gPSBjdXJlbG0tPmZpZWxkLnN0cWVfbmV4dDsJCVwKLSsJCWlmICgoY3VyZWxtLT5maWVsZC5zdHFlX25leHQgPQkJCQlcCi0rCQkJY3VyZWxtLT5maWVsZC5zdHFlX25leHQtPmZpZWxkLnN0cWVfbmV4dCkgPT0gTlVMTCkgXAotKwkJCSAgICAoaGVhZCktPnN0cWhfbGFzdCA9ICYoY3VyZWxtKS0+ZmllbGQuc3RxZV9uZXh0OyBcCi0rCX0JCQkJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCVNUQUlMUV9GT1JFQUNIKHZhciwgaGVhZCwgZmllbGQpCQkJCVwKLSsJZm9yICgodmFyKSA9ICgoaGVhZCktPnN0cWhfZmlyc3QpOwkJCQlcCi0rCQkodmFyKTsJCQkJCQkJXAotKwkJKHZhcikgPSAoKHZhciktPmZpZWxkLnN0cWVfbmV4dCkpCi0rCi0rI2RlZmluZQlTVEFJTFFfRk9SRUFDSF9TQUZFKHZhciwgaGVhZCwgZmllbGQsIHR2YXIpCQkJXAotKwlmb3IgKCh2YXIpID0gU1RBSUxRX0ZJUlNUKChoZWFkKSk7CQkJCVwKLSsJICAgICh2YXIpICYmICgodHZhcikgPSBTVEFJTFFfTkVYVCgodmFyKSwgZmllbGQpLCAxKTsJCVwKLSsJICAgICh2YXIpID0gKHR2YXIpKQotKwotKyNkZWZpbmUJU1RBSUxRX0NPTkNBVChoZWFkMSwgaGVhZDIpIGRvIHsJCQkJXAotKwlpZiAoIVNUQUlMUV9FTVBUWSgoaGVhZDIpKSkgewkJCQkJXAotKwkJKihoZWFkMSktPnN0cWhfbGFzdCA9IChoZWFkMiktPnN0cWhfZmlyc3Q7CQlcCi0rCQkoaGVhZDEpLT5zdHFoX2xhc3QgPSAoaGVhZDIpLT5zdHFoX2xhc3Q7CQlcCi0rCQlTVEFJTFFfSU5JVCgoaGVhZDIpKTsJCQkJCVwKLSsJfQkJCQkJCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJU1RBSUxRX0xBU1QoaGVhZCwgdHlwZSwgZmllbGQpCQkJCQlcCi0rCShTVEFJTFFfRU1QVFkoKGhlYWQpKSA/CQkJCQkJXAotKwkJTlVMTCA6CQkJCQkJCVwKLSsJICAgICAgICAoKHN0cnVjdCB0eXBlICopKHZvaWQgKikJCQkJXAotKwkJKChjaGFyICopKChoZWFkKS0+c3RxaF9sYXN0KSAtIG9mZnNldG9mKHN0cnVjdCB0eXBlLCBmaWVsZCkpKSkKLSsKLSsKLSsjaWZuZGVmIF9LRVJORUwKLSsvKgotKyAqIENpcmN1bGFyIHF1ZXVlIGRlZmluaXRpb25zLiBEbyBub3QgdXNlLiBXZSBzdGlsbCBrZWVwIHRoZSBtYWNyb3MKLSsgKiBmb3IgY29tcGF0aWJpbGl0eSBidXQgYmVjYXVzZSBvZiBwb2ludGVyIGFsaWFzaW5nIGlzc3VlcyB0aGVpciB1c2UKLSsgKiBpcyBkaXNjb3VyYWdlZCEKLSsgKi8KLSsKLSsvKgotKyAqIF9fbGF1bmRlcl90eXBlKCk6ICBXZSB1c2UgdGhpcyB1Z2x5IGhhY2sgdG8gd29yayBhcm91bmQgdGhlIHRoZSBjb21waWxlcgotKyAqIG5vdGljaW5nIHRoYXQgdHdvIHR5cGVzIG1heSBub3QgYWxpYXMgZWFjaCBvdGhlciBhbmQgZWxpZGUgdGVzdHMgaW4gY29kZS4KLSsgKiBXZSBoaXQgdGhpcyBpbiB0aGUgQ0lSQ0xFUSBtYWNyb3Mgd2hlbiBjb21wYXJpbmcgJ3N0cnVjdCBuYW1lIConIGFuZAotKyAqICdzdHJ1Y3QgdHlwZSAqJyAoc2VlIENJUkNMRVFfSEVBRCgpKS4gIE1vZGVybiBjb21waWxlcnMgKHN1Y2ggYXMgR0NDCi0rICogNC44KSBkZWNsYXJlIHRoZXNlIGNvbXBhcmlzb25zIGFzIGFsd2F5cyBmYWxzZSwgY2F1c2luZyB0aGUgY29kZSB0bwotKyAqIG5vdCBydW4gYXMgZGVzaWduZWQuCi0rICoKLSsgKiBUaGlzIGhhY2sgaXMgb25seSB0byBiZSB1c2VkIGZvciBjb21wYXJpc29ucyBhbmQgdGh1cyBjYW4gYmUgZnVsbHkgY29uc3QuCi0rICogRG8gbm90IHVzZSBmb3IgYXNzaWdubWVudC4KLSsgKgotKyAqIElmIHdlIGV2ZXIgY2hvb3NlIHRvIGNoYW5nZSB0aGUgQUJJIG9mIHRoZSBDSVJDTEVRIG1hY3Jvcywgd2UgY291bGQgZml4Ci0rICogdGhpcyBieSBjaGFuZ2luZyB0aGUgaGVhZC90YWlsIHNlbnRpbmFsIHZhbHVlcywgYnV0IHNlZSB0aGUgbm90ZSBhYm92ZQotKyAqIHRoaXMgb25lLgotKyAqLwotK3N0YXRpYyBfX2lubGluZSBjb25zdCB2b2lkICogX19sYXVuZGVyX3R5cGUoY29uc3Qgdm9pZCAqKTsKLStzdGF0aWMgX19pbmxpbmUgY29uc3Qgdm9pZCAqCi0rX19sYXVuZGVyX3R5cGUoY29uc3Qgdm9pZCAqX194KQotK3sKLSsJX19hc20gX192b2xhdGlsZSgiIiA6ICIrciIgKF9feCkpOwotKwlyZXR1cm4gX194OwotK30KLSsKLSsjaWYgZGVmaW5lZChRVUVVRURFQlVHKQotKyNkZWZpbmUgUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoaGVhZCwgZmllbGQpCQkJCVwKLSsJaWYgKChoZWFkKS0+Y3FoX2ZpcnN0ICE9IENJUkNMRVFfRU5EQyhoZWFkKSAmJgkJCVwKLSsJICAgIChoZWFkKS0+Y3FoX2ZpcnN0LT5maWVsZC5jcWVfcHJldiAhPSBDSVJDTEVRX0VOREMoaGVhZCkpCVwKLSsJCVFVRVVFREVCVUdfQUJPUlQoIkNJUkNMRVEgaGVhZCBmb3J3ICVwICVzOiVkIiwgKGhlYWQpLAlcCi0rCQkgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwkJCQlcCi0rCWlmICgoaGVhZCktPmNxaF9sYXN0ICE9IENJUkNMRVFfRU5EQyhoZWFkKSAmJgkJCVwKLSsJICAgIChoZWFkKS0+Y3FoX2xhc3QtPmZpZWxkLmNxZV9uZXh0ICE9IENJUkNMRVFfRU5EQyhoZWFkKSkJXAotKwkJUVVFVUVERUJVR19BQk9SVCgiQ0lSQ0xFUSBoZWFkIGJhY2sgJXAgJXM6JWQiLCAoaGVhZCksCVwKLSsJCSAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfRUxNKGhlYWQsIGVsbSwgZmllbGQpCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLmNxZV9uZXh0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkgewkJXAotKwkJaWYgKChoZWFkKS0+Y3FoX2xhc3QgIT0gKGVsbSkpCQkJCVwKLSsJCQlRVUVVRURFQlVHX0FCT1JUKCJDSVJDTEVRIGVsbSBsYXN0ICVwICVzOiVkIiwJXAotKwkJCSAgICAoZWxtKSwgX19GSUxFX18sIF9fTElORV9fKTsJCQlcCi0rCX0gZWxzZSB7CQkJCQkJCVwKLSsJCWlmICgoZWxtKS0+ZmllbGQuY3FlX25leHQtPmZpZWxkLmNxZV9wcmV2ICE9IChlbG0pKQlcCi0rCQkJUVVFVUVERUJVR19BQk9SVCgiQ0lSQ0xFUSBlbG0gZm9ydyAlcCAlczolZCIsCVwKLSsJCQkgICAgKGVsbSksIF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJXAotKwl9CQkJCQkJCQlcCi0rCWlmICgoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKSB7CQlcCi0rCQlpZiAoKGhlYWQpLT5jcWhfZmlyc3QgIT0gKGVsbSkpCQkJCVwKLSsJCQlRVUVVRURFQlVHX0FCT1JUKCJDSVJDTEVRIGVsbSBmaXJzdCAlcCAlczolZCIsCVwKLSsJCQkgICAgKGVsbSksIF9fRklMRV9fLCBfX0xJTkVfXyk7CQkJXAotKwl9IGVsc2UgewkJCQkJCQlcCi0rCQlpZiAoKGVsbSktPmZpZWxkLmNxZV9wcmV2LT5maWVsZC5jcWVfbmV4dCAhPSAoZWxtKSkJXAotKwkJCVFVRVVFREVCVUdfQUJPUlQoIkNJUkNMRVEgZWxtIHByZXYgJXAgJXM6JWQiLAlcCi0rCQkJICAgIChlbG0pLCBfX0ZJTEVfXywgX19MSU5FX18pOwkJCVwKLSsJfQotKyNkZWZpbmUgUVVFVUVERUJVR19DSVJDTEVRX1BPU1RSRU1PVkUoZWxtLCBmaWVsZCkJCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfbmV4dCA9ICh2b2lkICopMUw7CQkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKHZvaWQgKikxTDsKLSsjZWxzZQotKyNkZWZpbmUgUVVFVUVERUJVR19DSVJDTEVRX0hFQUQoaGVhZCwgZmllbGQpCi0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfRUxNKGhlYWQsIGVsbSwgZmllbGQpCi0rI2RlZmluZSBRVUVVRURFQlVHX0NJUkNMRVFfUE9TVFJFTU9WRShlbG0sIGZpZWxkKQotKyNlbmRpZgotKwotKyNkZWZpbmUJQ0lSQ0xFUV9IRUFEKG5hbWUsIHR5cGUpCQkJCQlcCi0rc3RydWN0IG5hbWUgewkJCQkJCQkJXAotKwlzdHJ1Y3QgdHlwZSAqY3FoX2ZpcnN0OwkJLyogZmlyc3QgZWxlbWVudCAqLwkJXAotKwlzdHJ1Y3QgdHlwZSAqY3FoX2xhc3Q7CQkvKiBsYXN0IGVsZW1lbnQgKi8JCVwKLSt9Ci0rCi0rI2RlZmluZQlDSVJDTEVRX0hFQURfSU5JVElBTElaRVIoaGVhZCkJCQkJCVwKLSsJeyBDSVJDTEVRX0VORCgmaGVhZCksIENJUkNMRVFfRU5EKCZoZWFkKSB9Ci0rCi0rI2RlZmluZQlDSVJDTEVRX0VOVFJZKHR5cGUpCQkJCQkJXAotK3N0cnVjdCB7CQkJCQkJCQlcCi0rCXN0cnVjdCB0eXBlICpjcWVfbmV4dDsJCS8qIG5leHQgZWxlbWVudCAqLwkJXAotKwlzdHJ1Y3QgdHlwZSAqY3FlX3ByZXY7CQkvKiBwcmV2aW91cyBlbGVtZW50ICovCQlcCi0rfQotKwotKy8qCi0rICogQ2lyY3VsYXIgcXVldWUgZnVuY3Rpb25zLgotKyAqLwotKyNkZWZpbmUJQ0lSQ0xFUV9JTklUKGhlYWQpIGRvIHsJCQkJCQlcCi0rCShoZWFkKS0+Y3FoX2ZpcnN0ID0gQ0lSQ0xFUV9FTkQoaGVhZCk7CQkJCVwKLSsJKGhlYWQpLT5jcWhfbGFzdCA9IENJUkNMRVFfRU5EKGhlYWQpOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlDSVJDTEVRX0lOU0VSVF9BRlRFUihoZWFkLCBsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9IRUFEKChoZWFkKSwgZmllbGQpCQkJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0VMTSgoaGVhZCksIChsaXN0ZWxtKSwgZmllbGQpCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQ7CQlcCi0rCShlbG0pLT5maWVsZC5jcWVfcHJldiA9IChsaXN0ZWxtKTsJCQkJXAotKwlpZiAoKGxpc3RlbG0pLT5maWVsZC5jcWVfbmV4dCA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCQlcCi0rCQkoaGVhZCktPmNxaF9sYXN0ID0gKGVsbSk7CQkJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGxpc3RlbG0pLT5maWVsZC5jcWVfbmV4dC0+ZmllbGQuY3FlX3ByZXYgPSAoZWxtKTsJXAotKwkobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7CQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfSU5TRVJUX0JFRk9SRShoZWFkLCBsaXN0ZWxtLCBlbG0sIGZpZWxkKSBkbyB7CQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9IRUFEKChoZWFkKSwgZmllbGQpCQkJCVwKLSsJUVVFVUVERUJVR19DSVJDTEVRX0VMTSgoaGVhZCksIChsaXN0ZWxtKSwgZmllbGQpCQlcCi0rCShlbG0pLT5maWVsZC5jcWVfbmV4dCA9IChsaXN0ZWxtKTsJCQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLmNxZV9wcmV2OwkJXAotKwlpZiAoKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJldiA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCQlcCi0rCQkoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pOwkJCQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7CVwKLSsJKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJldiA9IChlbG0pOwkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlDSVJDTEVRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9IRUFEKChoZWFkKSwgZmllbGQpCQkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKGhlYWQpLT5jcWhfZmlyc3Q7CQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSBDSVJDTEVRX0VORChoZWFkKTsJCQlcCi0rCWlmICgoaGVhZCktPmNxaF9sYXN0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCQlcCi0rCQkoaGVhZCktPmNxaF9sYXN0ID0gKGVsbSk7CQkJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGhlYWQpLT5jcWhfZmlyc3QtPmZpZWxkLmNxZV9wcmV2ID0gKGVsbSk7CQlcCi0rCShoZWFkKS0+Y3FoX2ZpcnN0ID0gKGVsbSk7CQkJCQlcCi0rfSB3aGlsZSAoLypDT05TVENPTkQqLzApCi0rCi0rI2RlZmluZQlDSVJDTEVRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9IRUFEKChoZWFkKSwgZmllbGQpCQkJCVwKLSsJKGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gQ0lSQ0xFUV9FTkQoaGVhZCk7CQkJXAotKwkoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSAoaGVhZCktPmNxaF9sYXN0OwkJCVwKLSsJaWYgKChoZWFkKS0+Y3FoX2ZpcnN0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCQlcCi0rCQkoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pOwkJCQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShoZWFkKS0+Y3FoX2xhc3QtPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7CQlcCi0rCShoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKTsJCQkJCVwKLSt9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfUkVNT1ZFKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsJCQkJXAotKwlRVUVVRURFQlVHX0NJUkNMRVFfSEVBRCgoaGVhZCksIGZpZWxkKQkJCQlcCi0rCVFVRVVFREVCVUdfQ0lSQ0xFUV9FTE0oKGhlYWQpLCAoZWxtKSwgZmllbGQpCQkJXAotKwlpZiAoKGVsbSktPmZpZWxkLmNxZV9uZXh0ID09IENJUkNMRVFfRU5EQyhoZWFkKSkJCVwKLSsJCShoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKS0+ZmllbGQuY3FlX3ByZXY7CQlcCi0rCWVsc2UJCQkJCQkJCVwKLSsJCShlbG0pLT5maWVsZC5jcWVfbmV4dC0+ZmllbGQuY3FlX3ByZXYgPQkJCVwKLSsJCSAgICAoZWxtKS0+ZmllbGQuY3FlX3ByZXY7CQkJCVwKLSsJaWYgKChlbG0pLT5maWVsZC5jcWVfcHJldiA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCQlcCi0rCQkoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pLT5maWVsZC5jcWVfbmV4dDsJCVwKLSsJZWxzZQkJCQkJCQkJXAotKwkJKGVsbSktPmZpZWxkLmNxZV9wcmV2LT5maWVsZC5jcWVfbmV4dCA9CQkJXAotKwkJICAgIChlbG0pLT5maWVsZC5jcWVfbmV4dDsJCQkJXAotKwlRVUVVRURFQlVHX0NJUkNMRVFfUE9TVFJFTU9WRSgoZWxtKSwgZmllbGQpCQkJXAotK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQotKwotKyNkZWZpbmUJQ0lSQ0xFUV9GT1JFQUNIKHZhciwgaGVhZCwgZmllbGQpCQkJCVwKLSsJZm9yICgodmFyKSA9ICgoaGVhZCktPmNxaF9maXJzdCk7CQkJCVwKLSsJCSh2YXIpICE9IENJUkNMRVFfRU5EQyhoZWFkKTsJCQkJXAotKwkJKHZhcikgPSAoKHZhciktPmZpZWxkLmNxZV9uZXh0KSkKLSsKLSsjZGVmaW5lCUNJUkNMRVFfRk9SRUFDSF9SRVZFUlNFKHZhciwgaGVhZCwgZmllbGQpCQkJXAotKwlmb3IgKCh2YXIpID0gKChoZWFkKS0+Y3FoX2xhc3QpOwkJCQlcCi0rCQkodmFyKSAhPSBDSVJDTEVRX0VOREMoaGVhZCk7CQkJCVwKLSsJCSh2YXIpID0gKCh2YXIpLT5maWVsZC5jcWVfcHJldikpCi0rCi0rLyoKLSsgKiBDaXJjdWxhciBxdWV1ZSBhY2Nlc3MgbWV0aG9kcy4KLSsgKi8KLSsjZGVmaW5lCUNJUkNMRVFfRklSU1QoaGVhZCkJCSgoaGVhZCktPmNxaF9maXJzdCkKLSsjZGVmaW5lCUNJUkNMRVFfTEFTVChoZWFkKQkJKChoZWFkKS0+Y3FoX2xhc3QpCi0rLyogRm9yIGNvbXBhcmlzb25zICovCi0rI2RlZmluZQlDSVJDTEVRX0VOREMoaGVhZCkJCShfX2xhdW5kZXJfdHlwZShoZWFkKSkKLSsvKiBGb3IgYXNzaWdubWVudHMgKi8KLSsjZGVmaW5lCUNJUkNMRVFfRU5EKGhlYWQpCQkoKHZvaWQgKikoaGVhZCkpCi0rI2RlZmluZQlDSVJDTEVRX05FWFQoZWxtLCBmaWVsZCkJKChlbG0pLT5maWVsZC5jcWVfbmV4dCkKLSsjZGVmaW5lCUNJUkNMRVFfUFJFVihlbG0sIGZpZWxkKQkoKGVsbSktPmZpZWxkLmNxZV9wcmV2KQotKyNkZWZpbmUJQ0lSQ0xFUV9FTVBUWShoZWFkKQkJCQkJCVwKLSsgICAgKENJUkNMRVFfRklSU1QoaGVhZCkgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQotKwotKyNkZWZpbmUgQ0lSQ0xFUV9MT09QX05FWFQoaGVhZCwgZWxtLCBmaWVsZCkJCQkJXAotKwkoKChlbG0pLT5maWVsZC5jcWVfbmV4dCA9PSBDSVJDTEVRX0VOREMoaGVhZCkpCQkJXAotKwkgICAgPyAoKGhlYWQpLT5jcWhfZmlyc3QpCQkJCQlcCi0rCSAgICA6IChlbG0tPmZpZWxkLmNxZV9uZXh0KSkKLSsjZGVmaW5lIENJUkNMRVFfTE9PUF9QUkVWKGhlYWQsIGVsbSwgZmllbGQpCQkJCVwKLSsJKCgoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPT0gQ0lSQ0xFUV9FTkRDKGhlYWQpKQkJCVwKLSsJICAgID8gKChoZWFkKS0+Y3FoX2xhc3QpCQkJCQlcCi0rCSAgICA6IChlbG0tPmZpZWxkLmNxZV9wcmV2KSkKLSsjZW5kaWYgLyogIV9LRVJORUwgKi8KLSsKLSsjZW5kaWYJLyogIV9TWVNfUVVFVUVfSF8gKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDdmNDk2OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGU1MWQ2NzU0OWI1MTZiMmRhYzZjNzFkOTJjODQ5OWY2ZTY3MTI1YWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9yc3RlbiBLdWt1ayA8a3VrdWtAdGhrdWt1ay5kZT4KLURhdGU6IFR1ZSwgMTQgTm92IDIwMTcgMTA6NDM6NTMgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHR5cG8gaW4gc3JjL2xpYnRpcnBjLm1hcAotCi1XaGljaCBwcmV2ZW50cyB0aGF0IGtleV9zZWNyZXRrZXlfaXNfc2V0IHdpbGwgYmUgZXhwb3J0ZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRob3JzdGVuIEt1a3VrIDxrdWt1a0BzdXNlLmRlPgotU2lnbmVkLW9mZi1ieTogU3RldmUgRGlja3NvbiA8c3RldmVkQHJlZGhhdC5jb20+Ci0tLS0KLSBzcmMvbGlidGlycGMubWFwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYnRpcnBjLm1hcCBiL3NyYy9saWJ0aXJwYy5tYXAKLWluZGV4IGYzODVkZTUuLjIxZDYwNjUgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlidGlycGMubWFwCi0rKysgYi9zcmMvbGlidGlycGMubWFwCi1AQCAtMjk4LDcgKzI5OCw3IEBAIFRJUlBDXzAuMy4yIHsKLSAgICAga2V5X2dlbmRlczsKLSAgICAga2V5X2dldF9jb252OwotICAgICBrZXlfc2V0c2VjcmV0OwotLSAgICBrZXlfc2VjcmV0X2lzX3NldDsKLSsgICAga2V5X3NlY3JldGtleV9pc19zZXQ7Ci0gICAgIGtleV9zZXRuZXQ7Ci0gICAgIG5ldG5hbWUyaG9zdDsKLSAgICAgbmV0bmFtZTJ1c2VyOwotLS0gCi0xLjguMy4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9saWJ0aXJwYy0xLjAuNC1yYzEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9saWJ0aXJwYy0xLjAuNC1yYzEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0MGQzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTEuMC40LXJjMS5wYXRjaApAQCAtMCwwICsxLDEwMyBAQAorUGF0Y2ggZnJvbSBGZWRvcmEgaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJ0aXJwYy9yYXcvbWFzdGVyL2YvbGlidGlycGMtMS4wLjQtcmMxLnBhdGNoCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK2RpZmYgLS1naXQgYS9zcmMvY2xudF9nZW5lcmljLmMgYi9zcmMvY2xudF9nZW5lcmljLmMKK2luZGV4IGU1YTMxNGYuLjNmM2RhYmYgMTAwNjQ0CistLS0gYS9zcmMvY2xudF9nZW5lcmljLmMKKysrKyBiL3NyYy9jbG50X2dlbmVyaWMuYworQEAgLTQ3LDcgKzQ3LDYgQEAKKyAKKyBleHRlcm4gYm9vbF90IF9fcnBjX2lzX2xvY2FsX2hvc3QoY29uc3QgY2hhciAqKTsKKyBpbnQgX19ycGNfcmFpc2VfZmQoaW50KTsKKy1leHRlcm4gaW50IF9fYmluZGR5bnBvcnQoaW50IGZkKTsKKyAKKyAjaWZuZGVmIE5FVElETEVOCisgI2RlZmluZQlORVRJRExFTiAzMgorQEAgLTM0MSw4ICszNDAsNyBAQCBjbG50X3RsaV9jcmVhdGUoaW50IGZkLCBjb25zdCBzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZiwKKyAJCXNlcnZ0eXBlID0gbmNvbmYtPm5jX3NlbWFudGljczsKKyAJCWlmICghX19ycGNfZmQyc29ja2luZm8oZmQsICZzaSkpCisgCQkJZ290byBlcnI7CistCQlpZiAoX19iaW5kZHlucG9ydChmZCkgPT0gLTEpCistCQkJZ290byBlcnI7CisrCQliaW5kcmVzdnBvcnQoZmQsIE5VTEwpOworIAl9IGVsc2UgeworIAkJaWYgKCFfX3JwY19mZDJzb2NraW5mbyhmZCwgJnNpKSkKKyAJCQlnb3RvIGVycjsKK2RpZmYgLS1naXQgYS9zcmMvcnBjX3NvYy5jIGIvc3JjL3JwY19zb2MuYworaW5kZXggYWY2YzQ4Mi4uNWE2ZWViNyAxMDA2NDQKKy0tLSBhL3NyYy9ycGNfc29jLmMKKysrKyBiL3NyYy9ycGNfc29jLmMKK0BAIC02Nyw4ICs2Nyw2IEBACisgCisgZXh0ZXJuIG11dGV4X3QJcnBjc29jX2xvY2s7CisgCistZXh0ZXJuIGludCBfX2JpbmRkeW5wb3J0KGludCBmZCk7CistCisgc3RhdGljIENMSUVOVCAqY2xudF9jb21fY3JlYXRlKHN0cnVjdCBzb2NrYWRkcl9pbiAqLCBycGNwcm9nX3QsIHJwY3ZlcnNfdCwKKyAgICAgaW50ICosIHVfaW50LCB1X2ludCwgY2hhciAqLCBpbnQpOworIHN0YXRpYyBTVkNYUFJUICpzdmNfY29tX2NyZWF0ZShpbnQsIHVfaW50LCB1X2ludCwgY2hhciAqKTsKK0BAIC0xNDcsOCArMTQ1LDcgQEAgY2xudF9jb21fY3JlYXRlKHJhZGRyLCBwcm9nLCB2ZXJzLCBzb2NrcCwgc2VuZHN6LCByZWN2c3osIHRwLCBmbGFncykKKyAJYmluZGFkZHIubWF4bGVuID0gYmluZGFkZHIubGVuID0gIHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2luKTsKKyAJYmluZGFkZHIuYnVmID0gcmFkZHI7CisgCistCWlmIChfX2JpbmRkeW5wb3J0KGZkKSA9PSAtMSkKKy0JCWdvdG8gZXJyOworKwliaW5kcmVzdnBvcnQoZmQsIE5VTEwpOworIAljbCA9IGNsbnRfdGxpX2NyZWF0ZShmZCwgbmNvbmYsICZiaW5kYWRkciwgcHJvZywgdmVycywKKyAJCQkJc2VuZHN6LCByZWN2c3opOworIAlpZiAoY2wpIHsKK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9jbG50LmMgYi9zcmMvcnBjYl9jbG50LmMKK2luZGV4IGE5NGZjNzMuLjRiNDQzNjQgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9jbG50LmMKKysrKyBiL3NyYy9ycGNiX2NsbnQuYworQEAgLTc1Miw3ICs3NTIsNyBAQCBfX3RyeV9wcm90b2NvbF92ZXJzaW9uXzIocHJvZ3JhbSwgdmVyc2lvbiwgbmNvbmYsIGhvc3QsIHRwKQorIAorIAljbGllbnQgPSBnZXRwbWFwaGFuZGxlKG5jb25mLCBob3N0LCAmcGFybXMucl9hZGRyKTsKKyAJaWYgKGNsaWVudCA9PSBOVUxMKQorLQkJcmV0dXJuIChOVUxMKTsKKysJCWdvdG8gZXJyb3I7CisgCisgCS8qCisgCSAqIFNldCByZXRyeSB0aW1lb3V0LgorQEAgLTc3MSwxMSArNzcxLDExIEBAIF9fdHJ5X3Byb3RvY29sX3ZlcnNpb25fMihwcm9ncmFtLCB2ZXJzaW9uLCBuY29uZiwgaG9zdCwgdHApCisgCWlmIChjbG50X3N0ICE9IFJQQ19TVUNDRVNTKSB7CisgCQlycGNfY3JlYXRlZXJyLmNmX3N0YXQgPSBSUENfUE1BUEZBSUxVUkU7CisgCQljbG50X2dldGVycihjbGllbnQsICZycGNfY3JlYXRlZXJyLmNmX2Vycm9yKTsKKy0JCXJldHVybiAoTlVMTCk7CisrCQlnb3RvIGVycm9yOworIAl9IGVsc2UgaWYgKHBvcnQgPT0gMCkgeworIAkJcG1hcGFkZHJlc3MgPSBOVUxMOworIAkJcnBjX2NyZWF0ZWVyci5jZl9zdGF0ID0gUlBDX1BST0dOT1RSRUdJU1RFUkVEOworLQkJcmV0dXJuIChOVUxMKTsKKysJCWdvdG8gZXJyb3I7CisgCX0KKyAJcG9ydCA9IGh0b25zKHBvcnQpOworIAlDTE5UX0NPTlRST0woY2xpZW50LCBDTEdFVF9TVkNfQUREUiwgKGNoYXIgKikmcmVtb3RlKTsKK0BAIC03ODksMTQgKzc4OSwyNCBAQCBfX3RyeV9wcm90b2NvbF92ZXJzaW9uXzIocHJvZ3JhbSwgdmVyc2lvbiwgbmNvbmYsIGhvc3QsIHRwKQorIAkJCWZyZWUocG1hcGFkZHJlc3MpOworIAkJCXBtYXBhZGRyZXNzID0gTlVMTDsKKyAJCX0KKy0JCXJldHVybiAoTlVMTCk7CisrCQlnb3RvIGVycm9yOworIAl9CisgCW1lbWNweShwbWFwYWRkcmVzcy0+YnVmLCByZW1vdGUuYnVmLCByZW1vdGUubGVuKTsKKyAJbWVtY3B5KCYoKGNoYXIgKilwbWFwYWRkcmVzcy0+YnVmKVtzaXplb2YgKHNob3J0KV0sCisgCQkJKGNoYXIgKikodm9pZCAqKSZwb3J0LCBzaXplb2YgKHNob3J0KSk7CisgCXBtYXBhZGRyZXNzLT5sZW4gPSBwbWFwYWRkcmVzcy0+bWF4bGVuID0gcmVtb3RlLmxlbjsKKyAKKysJQ0xOVF9ERVNUUk9ZKGNsaWVudCk7CisgCXJldHVybiBwbWFwYWRkcmVzczsKKysKKytlcnJvcjoKKysJaWYgKGNsaWVudCkgeworKwkJQ0xOVF9ERVNUUk9ZKGNsaWVudCk7CisrCQljbGllbnQgPSBOVUxMOworKworKwl9CisrCXJldHVybiAoTlVMTCk7CisrCisgfQorICNlbmRpZgorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL211c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzY2U2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL211c2wucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorQ29uc2lkZXIgbXVzbCBwcm92aWRlZCBidWlsdC1pbiBkZWZpbmVzCisKK0hlbHBzIGNvbXBpbGUgbGlidGlycGMgd2l0aCBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIC4vdGlycGMvcnBjL3R5cGVzLmgub3JpZwkyMDE4LTAzLTE3IDEwOjIzOjEwLjAyMjA1NTI1NSArMDEwMAorKysrIC4vdGlycGMvcnBjL3R5cGVzLmgJMjAxOC0wMy0xNyAxMDoyMzozMC44Nzc3NTE2NTYgKzAxMDAKK0BAIC02Niw3ICs2Niw3IEBACisgI2RlZmluZSBtZW1fZnJlZShwdHIsIGJzaXplKQlmcmVlKHB0cikKKyAKKyAKKy0jaWYgZGVmaW5lZCBfX0FQUExFX0NDX18gfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXworKyNpZiBkZWZpbmVkIF9fQVBQTEVfQ0NfXyB8fCBkZWZpbmVkIF9fRnJlZUJTRF9fIHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKKyAjIGRlZmluZSBfX3VfY2hhcl9kZWZpbmVkCisgIyBkZWZpbmUgX19kYWRkcl90X2RlZmluZWQKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MjEyNjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZXhwb3J0X2tleV9zZWNyZXRrZXlfaXNfc2V0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Vc2UtbmV0YnNkLXF1ZXVlLmgucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDVhMzdmMWRjY2VjNDg0ZjljYWJlMmI5N2U1NGU5YTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzIzYzVjZTkyNzA2Y2JiNjAxYThkYjA5MTEwZGYxYjRiNjkzOTE2NDMxNThmMjBmZjU4N2UyMGU3YzVmOTBmNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YmMwMzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjAuMy5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbGlidGlycGMtMS4wLjQtcmMxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL211c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmODQwM2ExMDY5NTM0ODg1NGU3MWQ1MjVjNGRiNTkzMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4NmMzYTc4ZmMxYmRkZWZhOTYxMTFkZDIzMzEyNGM3MDNiMjJhNzg4ODQyMDNjNTVjM2UwNmIzYmU2YTBmZDVlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBjaG93biByb290OnJvb3QgJHtEfSR7c3lzY29uZmRpcn0vbmV0Y29uZmlnCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC40OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M0NDQ0Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKLQotU0VDVElPTiA9ICJuZXQiCi1SREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCi0gICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCi0gICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAotICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5zZXJ2aWNlIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFlM2E5ZWI1MDc4ZjQ4MWUzYThhMWQwYWFhYzhjM2M4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmOGFkNWFhYzc1MjlkN2I5NDhiOWQ3ZThjZDBiNGE5ZTE3NzMwOWQ4NWQ2YmY2NTE2ZTI4ZTZlNDBkNzRmMzYiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCi1QQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgZ2V0dGV4dCBzeXN0ZW1kCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJsaWdodHRwZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDcwIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibGlnaHR0cGQuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQuZCAke0R9L3d3dy9wYWdlcy9kYXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saWdodHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaW5kZXguaHRtbC5saWdodHRwZCAke0R9L3d3dy9wYWdlcy9pbmRleC5odG1sCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpZ2h0dHBkLnNlcnZpY2UKLQkjRm9yIEZIUyBjb21wbGlhbmNlLCBjcmVhdGUgc3ltYm9saWMgbGlua3MgdG8gL3Zhci9sb2cgYW5kIC92YXIvdG1wIGZvciBsb2dzIGFuZCB0ZW1wb3JhcnkgZGF0YQotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L2xvZyAke0R9L3d3dy9sb2dzCi0JbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vdG1wICR7RH0vd3d3L3ZhcgotfQotCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAvd3d3IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9saWdodHRwZC5jb25mIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlnaHR0cGQtbW9kdWxlLS4qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGlnaHR0cGRfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGlnaHR0cGRfbGliZGlyLCAnXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjUwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNzNhNjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTAuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBoaWdoLXBlcmZvcm1hbmNlIHdlYiBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpZ2h0dHBkLm5ldC8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9yZWRtaW5lLmxpZ2h0dHBkLm5ldC9wcm9qZWN0cy9saWdodHRwZC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTRkYWM1YzZhYjE2OWFhMjEyZmViNTAyODg1M2E1NzkiCisKK1NFQ1RJT04gPSAibmV0IgorUkRFUEVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWRpcmxpc3RpbmcgXAorICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWluZGV4ZmlsZSBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtc3RhdGljZmlsZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3MgXAorICAgICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLWFjY2Vzc2xvZyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQubGlnaHR0cGQubmV0L2xpZ2h0dHBkL3JlbGVhc2VzLTEuNC54L2xpZ2h0dHBkLSR7UFZ9LnRhci54eiBcCisgICAgICAgIGZpbGU6Ly9pbmRleC5odG1sLmxpZ2h0dHBkIFwKKyAgICAgICAgZmlsZTovL2xpZ2h0dHBkLmNvbmYgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuc2VydmljZSBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNTQ3ODMxZWZkYTg0OTI2NDhiN2YwYzY1Mjg2NWRmZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTM3ODMxMmQ4ODg3Y2JjMTRmZmU4YTdmYWRlZjJkNWEwOGM3ZTdlMWJlOTQyNzk1MTQyMzQ2YWQ5NTYyOWViIgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tmYW1dID0gIi0td2l0aC1mYW0sLS13aXRob3V0LWZhbSxnYW1pbiIKK1BBQ0tBR0VDT05GSUdbd2ViZGF2LXByb3BzXSA9ICItLXdpdGgtd2ViZGF2LXByb3BzLC0td2l0aG91dC13ZWJkYXYtcHJvcHMsbGlieG1sMiBzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtbG9ja3NdID0gIi0td2l0aC13ZWJkYXYtbG9ja3MsLS13aXRob3V0LXdlYmRhdi1sb2Nrcyx1dGlsLWxpbnV4IgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICItLXdpdGgtZ2RibSwtLXdpdGhvdXQtZ2RibSxnZGJtIgorUEFDS0FHRUNPTkZJR1ttZW1jYWNoZV0gPSAiLS13aXRoLW1lbWNhY2hlZCwtLXdpdGhvdXQtbWVtY2FjaGVkLGxpYm1lbWNhY2hlZCIKK1BBQ0tBR0VDT05GSUdbbHVhXSA9ICItLXdpdGgtbHVhLC0td2l0aG91dC1sdWEsbHVhNS4xIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxmcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAorCitJTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2CisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCisJCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCisJI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncworCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQuY29uZiIKKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgJ15tb2RfKC4qKVwuc28kJywgJ2xpZ2h0dHBkLW1vZHVsZS0lcycsICdMaWdodHRwZCBtb2R1bGUgZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MGNmOTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IERvY3VtZW50IGNvcmV1dGlscyBkZXBlbmRlbmN5LiBXaHkgbm90IFJERVBFTkRTPyBXaHkgbm90IGJ1c3lib3g/Ci0KLURFUEVORFM9ImNvcmV1dGlscyBwb3B0IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBXaGVuIHVwZGF0aW5nIGxvZ3JvdGF0ZSB0byBsYXRlc3QgdXBzdHJlYW0sIFNSQ19VUkkgc2hvdWxkIHBvaW50IHRvCi0jIGEgcHJvcGVyIHJlbGVhc2UgdGFyYmFsbCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2dyb3RhdGUvbG9ncm90YXRlL3JlbGVhc2VzCi0jIGFuZCB3ZSBoYXZlIHRvIHRha2UgdGhlIHNuYXBzaG90IGZvciBub3cgYmVjYXVzZSB0aGVyZSBpcyBubyBzdWNoCi0jIHRhcmJhbGwgYXZhaWxhYmxlIGZvciAzLjkuMS4KLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibG9ncm90YXRlLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLWRpZmZlcmVudC1maWxlc3lzdGVtcy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3OGVmMjRkNmZkZGNjNGRmOGU0MTJkZDc1YzU1MWI0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjIyY2EwMzJmOTliZThkN2E0YThjNmFkNjlmM2RjYzQ5Yjk1MTFiZmUzODRiZDVhMjcxZWJjZDliZDNlNTJjIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIiwsYWNsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICIsLGxpYnNlbGludXgiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cyBcCi0JCSAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIgotCi0jIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCi0jIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIExGUz0gXAotICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAotIgotCi0jIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKLSMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCi0jIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgotT1NfTkFNRSA9ICJMaW51eCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAotICAgICR7QlBOfS5zZXJ2aWNlIFwKLSAgICAke0JQTn0udGltZXIgXAotIgotCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCi1MT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtEfSBNQU5ESVI9JHttYW5kaXJ9Ci0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS1kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLnRpbWVyICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS50aW1lcgotICAgICAgICBzZWQgLWkgLWUgJ3MsT25DYWxlbmRhcj0uKiQsT25DYWxlbmRhcj0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0JBU0lTfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICAgICAgc2VkIC1pIC1lICdzLEFjY3VyYWN5U2VjPS4qJCxBY2N1cmFjeVNlYz0ke0xPR1JPVEFURV9TWVNURU1EX1RJTUVSX0FDQ1VSQUNZfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKLSAgICBmaQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICAgICAgaW5zdGFsbCAtcCAtbSAwNzU1ICR7U30vZXhhbXBsZXMvbG9ncm90YXRlLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseS9sb2dyb3RhdGUKLSAgICBmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2M2OGFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE0LjAuYmIKQEAgLTAsMCArMSw5OSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWMwZjZlNmU0OTBjNGJjYWMwYTFlNzdhZDEzMTA2ODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDcwM2JkYzBlMmRmM2IzMjJmOWRmZjBhYWZjOTlhYTkxNzJjOWU0YWNhZTI4YjdjOTI0Y2M3ZDRlNWIyOWQ1NSIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9idG1wIFwKKyAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC93dG1wIgorCisjIElmIFJQTV9PUFRfRkxBR1MgaXMgdW5zZXQsIGl0IGFkZHMgLWcgaXRzZWxmIHJhdGhlciB0aGFuIG9iZXlpbmcgb3VyCisjIG9wdGltaXphdGlvbiB2YXJpYWJsZXMsIHNvIHVzZSBpdCByYXRoZXIgdGhhbiBFWFRSQV9DRkxBR1MuCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIExGUz0gXAorICAgIE9TX05BTUU9JyR7T1NfTkFNRX0nIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnRVhUUkFfTERGTEFHUz0ke0xERkxBR1N9JyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWNsJywgJ1dJVEhfQUNMPXllcycsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlbGludXgnLCAnV0lUSF9TRUxJTlVYPXllcycsICcnLCBkKX0gXAorIgorCisjIE9TX05BTUUgaW4gdGhlIG1ha2VmaWxlIGRlZmF1bHRzIHRvIGB1bmFtZSAtc2AuIFRoZSBiZWhhdmlvciBmb3IKKyMgZnJlZWJzZC9uZXRic2QgaXMgcXVlc3Rpb25hYmxlLCBzbyBsZWF2ZSBpdCBhcyBMaW51eCwgd2hpY2ggb25seSBzZXRzCisjIElOU1RBTEw9aW5zdGFsbCBhbmQgQkFTRURJUj0vdXNyLgorT1NfTkFNRSA9ICJMaW51eCIKKworaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgICR7QlBOfS5zZXJ2aWNlIFwKKyAgICAke0JQTn0udGltZXIgXAorIgorCitMT0dST1RBVEVfT1BUSU9OUyA/PSAiIgorCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJUyA/PSAiZGFpbHkiCitMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWSA/PSAiMTJoIgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfUEVSU0lTVEVOVCA/PSAidHJ1ZSIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIGluc3RhbGwgLXAgLW0gNjQ0ICR7U30vZXhhbXBsZXMvYnRtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9idG1wCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy93dG1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL3d0bXAKKyAgICB0b3VjaCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvbG9ncm90YXRlLnN0YXR1cworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUuc2VydmljZQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUudGltZXIgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIFsgLXogIiR7TE9HUk9UQVRFX09QVElPTlN9IiBdIHx8CisgICAgICAgICAgICBzZWQgLXJpIFwKKyAgICAgICAgICAgICAgICAtZSAnc3woRXhlY1N0YXJ0PS4qL2xvZ3JvdGF0ZS4qKSR8XDEgJHtMT0dST1RBVEVfT1BUSU9OU318ZycgXAorICAgICAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIHNlZCAtcmkgXAorICAgICAgICAgICAgLWUgJ3N8KE9uQ2FsZW5kYXI9KS4qJHxcMSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVN9fGcnIFwKKyAgICAgICAgICAgIC1lICdzfChBY2N1cmFjeVNlYz0pLiokfFwxJHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX18ZycgXAorICAgICAgICAgICAgLWUgJ3N8KFBlcnNpc3RlbnQ9KS4qJHxcMSR7TE9HUk9UQVRFX1NZU1RFTURfVElNRVJfUEVSU0lTVEVOVH18ZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKaW5kZXggZGY0ODEyZS4uZDFkZTMzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl81LjAuYmIKQEAgLTM0LDcgKzM0LDcgQEAKIENMRUFOQlJPS0VOID0gIjEiCiAKIGRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtiYXNlX3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9CisJb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtyb290X3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9CiAKIAkjIHRoZXNlIHR3byBkaXJzIGFyZSBuZWVkZWQgYnkgcGFja2FnZSBsc2ItZGlzdC1jaGVja2VyCiAJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vb3B0CkBAIC05OSw3ICs5OSw5IEBACiAgICAgICAgZmkKIAogICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KKyAgICAgICAJICAgICAgICMgZG9uJ3Qgc3ltbGluayBpZiB1c3JtZXJnZSBpcyBpbiBESVNUUk9fRkVBVFVSRVMgYXMgaXQgbWFuYWdlcyB0aGUgc3ltbGluaworICAgICAgICAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmFsc2UnLCd0cnVlJyxkKX0gJiYgXAorCSAgICAgICAJICBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgbG5yICR7RH0ke2Jhc2VfbGliZGlyfSAke0R9JHtiYXNlX3ByZWZpeH0vbGliNjQKICAgICAgICAgICAgICAgIGZpCiAJICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgppbmRleCA0NmVkZWVkLi42ZDNmY2YxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS43OS5iYgpAQCAtMiw3ICsyLDYgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAicG9wdCBnbGliLTIuMCIKIAogUlBST1ZJREVTXyR7UE59ICs9ICJpbml0ZC1mdW5jdGlvbnMiCiBSREVQRU5EU18ke1BOfSArPSAidXRpbC1saW51eCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0NTQ2ZGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1TVU1NQVJZID0gIkxpU3QgT3BlbiBGaWxlcyB0b29sIgotREVTQ1JJUFRJT04gPSAiTHNvZiBpcyBhIFVuaXgtc3BlY2lmaWMgZGlhZ25vc3RpYyB0b29sLiBcCi1JdHMgbmFtZSBzdGFuZHMgZm9yIExpU3QgT3BlbiBGaWxlcywgYW5kIGl0IGRvZXMganVzdCB0aGF0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9wZW9wbGUuZnJlZWJzZC5vcmcvfmFiZS8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8wMFJFQURNRTtiZWdpbmxpbmU9NjQ1O2VuZGxpbmU9Njc5O21kNT05NjRkZjI3NWQyNjQyOWJhM2IzOWRiYjlmMjA1MTcyYSIKLQotIyBVcHN0cmVhbSBsc29mIHJlbGVhc2VzIGFyZSBob3N0ZWQgb24gYW4gZnRwIHNlcnZlciB3aGljaCB0aW1lcyBvdXQgZG93bmxvYWQKLSMgYXR0ZW1wdHMgZnJvbSBob3N0cyBmb3Igd2hpY2ggaXQgY2FuIG5vdCBwZXJmb3JtIGEgRE5TIHJldmVyc2UtbG9va3VwIChTZWU6Ci0jIGh0dHBzOi8vcGVvcGxlLmZyZWVic2Qub3JnL35hYmUvICkuIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcgc2VlbXMgdG8gYmUKLSMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBhbHRlcm5hdGl2ZS4KLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFiOWNkMzRmM2ZiODY4NTZhMTI1YWJiZjJiZTNhMzg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxYWMyZmM1ZmRjOTQ0NzkzYmFmNDFhMTQwMDJiNmRlYjVhMjkwOTZiMzg3NzQ0ZTI4ZjhjMzBhMzYwYTM3MTgiCi0KLUxPQ0FMU1JDID0gImZpbGU6Ly8ke1dPUktESVJ9L2xzb2ZfJHtQVn0vbHNvZl8ke1BWfV9zcmMudGFyIgotCi1TID0gIiR7V09SS0RJUn0vbHNvZl8ke1BWfV9zcmMiCi0KLXB5dGhvbiBkb191bnBhY2sgKCkgewotICAgICMgdGVtcG9yYXJpbHkgY2hhbmdlIFMgZm9yIHVucGFjawotICAgICMgb2YgbHNvZl8ke1BWfQotICAgIHMgPSBkLmdldFZhcignUycsIEZhbHNlKQotICAgIGQuc2V0VmFyKCdTJywgJyR7V09SS0RJUn0vbHNvZl8ke1BWfScpCi0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCi0gICAgIyB0ZW1wb3JhcmlseSBjaGFuZ2UgU1JDX1VSSSBmb3IgdW5wYWNrCi0gICAgIyBvZiBsc29mXyR7UFZ9X3NyYwotICAgIHNyY191cmkgPSBkLmdldFZhcignU1JDX1VSSScsIEZhbHNlKQotICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgJyR7TE9DQUxTUkN9JykKLSAgICBkLnNldFZhcignUycsIHMpCi0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCi0gICAgZC5zZXRWYXIoJ1NSQ19VUkknLCBzcmNfdXJpKQotfQotCi1leHBvcnQgTFNPRl9JTkNMVURFID0gIiR7U1RBR0lOR19JTkNESVJ9IgotCi1kb19jb25maWd1cmUgKCkgewotCWV4cG9ydCBMU09GX0FSPSIke0FSfSBjciIKLQlleHBvcnQgTFNPRl9SQU5MSUI9IiR7UkFOTElCfSIKLQlpZiBbICJ4JHtHTElCQ1ZFUlNJT059IiAhPSAieCIgXTsgdGhlbgotCQlMSU5VWF9DTElCPWBlY2hvICR7R0xJQkNWRVJTSU9OfSB8c2VkIC1lICdzLFwuLCxnJ2AKLQkJTElOVVhfQ0xJQj0iLURHTElCQ1Y9JHtMSU5VWF9DTElCfSIKLQkJZXhwb3J0IExJTlVYX0NMSUIKLQlmaQotCXllcyB8IC4vQ29uZmlndXJlIGxpbnV4Ci19Ci0KLWV4cG9ydCBJID0gIiR7U1RBR0lOR19JTkNESVJ9IgotZXhwb3J0IEwgPSAiJHtTVEFHSU5HX0lOQ0RJUn0iCi0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgJ0NDPSR7Q0N9JyAnQ0ZHTD0ke0xERkxBR1N9IC1MLi9saWIgLWxsc29mJyAnREVCVUc9JyAnSU5DTD0ke0NGTEFHU30nCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW44Ci0JaW5zdGFsbCAtbSAwNzU1IGxzb2YgJHtEfSR7c2JpbmRpcn0vbHNvZgotCWluc3RhbGwgLW0gMDY0NCBsc29mLjggJHtEfSR7bWFuZGlyfS9tYW44L2xzb2YuOAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuOTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC45MS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2FkZmQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuOTEuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJMaVN0IE9wZW4gRmlsZXMgdG9vbCIKK0RFU0NSSVBUSU9OID0gIkxzb2YgaXMgYSBVbml4LXNwZWNpZmljIGRpYWdub3N0aWMgdG9vbC4gXAorSXRzIG5hbWUgc3RhbmRzIGZvciBMaVN0IE9wZW4gRmlsZXMsIGFuZCBpdCBkb2VzIGp1c3QgdGhhdC4iCitIT01FUEFHRSA9ICJodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35hYmUvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vMDBSRUFETUU7YmVnaW5saW5lPTY0NTtlbmRsaW5lPTY3OTttZDU9OTY0ZGYyNzVkMjY0MjliYTNiMzlkYmI5ZjIwNTE3MmEiCisKKyMgVXBzdHJlYW0gbHNvZiByZWxlYXNlcyBhcmUgaG9zdGVkIG9uIGFuIGZ0cCBzZXJ2ZXIgd2hpY2ggdGltZXMgb3V0IGRvd25sb2FkCisjIGF0dGVtcHRzIGZyb20gaG9zdHMgZm9yIHdoaWNoIGl0IGNhbiBub3QgcGVyZm9ybSBhIEROUyByZXZlcnNlLWxvb2t1cCAoU2VlOgorIyBodHRwczovL3Blb3BsZS5mcmVlYnNkLm9yZy9+YWJlLyApLiBodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnIHNlZW1zIHRvIGJlCisjIHRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgYWx0ZXJuYXRpdmUuCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mL2xzb2ZfJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9sc29mLXJlbW92ZS1ob3N0LWluZm9ybWF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNDhlZDQxMGNiNTJlMDhjMmFkYzBjNjBmNDgwZjExZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjOWRhOTQ2YTUyNWZiZjgyZmY4MDA5MGI2ZDE4NzljMzhkZjA5MDU1NmYzZmUwZTZkNzgyY2I0NDE3MjQ1MGEzIgorCitMT0NBTFNSQyA9ICJmaWxlOi8vJHtXT1JLRElSfS9sc29mXyR7UFZ9L2xzb2ZfJHtQVn1fc3JjLnRhciIKKworUyA9ICIke1dPUktESVJ9L2xzb2ZfJHtQVn1fc3JjIgorCitweXRob24gZG9fdW5wYWNrICgpIHsKKyAgICBpZiBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnZXh0ZXJuYWxzcmMnLCBkKSBvciBub3QgZC5nZXRWYXIoJ0VYVEVSTkFMU1JDJyk6CisgICAgICAgICMgdGVtcG9yYXJpbHkgY2hhbmdlIFMgZm9yIHVucGFjayBvZiBsc29mXyR7UFZ9CisgICAgICAgIHMgPSBkLmdldFZhcignUycsIEZhbHNlKQorICAgICAgICBkLnNldFZhcignUycsICcke1dPUktESVJ9L2xzb2ZfJHtQVn0nKQorICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2Jhc2VfZG9fdW5wYWNrJywgZCkKKyAgICAgICAgIyB0ZW1wb3JhcmlseSBjaGFuZ2UgU1JDX1VSSSBmb3IgdW5wYWNrIG9mIGxzb2ZfJHtQVn1fc3JjCisgICAgICAgIHNyY191cmkgPSBkLmdldFZhcignU1JDX1VSSScsIEZhbHNlKQorICAgICAgICBkLnNldFZhcignU1JDX1VSSScsICcke0xPQ0FMU1JDfScpCisgICAgICAgIGQuc2V0VmFyKCdTJywgcykKKyAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCisgICAgICAgIGQuc2V0VmFyKCdTUkNfVVJJJywgc3JjX3VyaSkKK30KKworZXhwb3J0IExTT0ZfSU5DTFVERSA9ICIke1NUQUdJTkdfSU5DRElSfSIKKworZG9fY29uZmlndXJlICgpIHsKKwlleHBvcnQgTFNPRl9BUj0iJHtBUn0gY3IiCisJZXhwb3J0IExTT0ZfUkFOTElCPSIke1JBTkxJQn0iCisJaWYgWyAieCR7R0xJQkNWRVJTSU9OfSIgIT0gIngiIF07IHRoZW4KKwkJTElOVVhfQ0xJQj1gZWNobyAke0dMSUJDVkVSU0lPTn0gfHNlZCAtZSAncyxcLiwsZydgCisJCUxJTlVYX0NMSUI9Ii1ER0xJQkNWPSR7TElOVVhfQ0xJQn0iCisJCWV4cG9ydCBMSU5VWF9DTElCCisJZmkKKwl5ZXMgfCAuL0NvbmZpZ3VyZSBsaW51eAorfQorCitleHBvcnQgSSA9ICIke1NUQUdJTkdfSU5DRElSfSIKK2V4cG9ydCBMID0gIiR7U1RBR0lOR19JTkNESVJ9IgorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlICdDQz0ke0NDfScgJ0NGR0w9JHtMREZMQUdTfSAtTC4vbGliIC1sbHNvZicgJ0RFQlVHPScgJ0lOQ0w9JHtDRkxBR1N9JworfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuOAorCWluc3RhbGwgLW0gMDc1NSBsc29mICR7RH0ke3NiaW5kaXJ9L2xzb2YKKwlpbnN0YWxsIC1tIDA2NDQgbHNvZi44ICR7RH0ke21hbmRpcn0vbWFuOC9sc29mLjgKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtRml4LWRlZmF1bHQtdmFsdWUtb2Ytd2l0aG91dC1udW1hLXN3aXRjaC1pLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNjI2ODcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDRhY2U2OGE2YmE1MDE5MDdhMDc0MWRiYTVmNWYxNTVlMDZhNzRjMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KLURhdGU6IFdlZCwgNyBGZWIgMjAxOCAxMTowOTo0OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEZpeCBkZWZhdWx0IHZhbHVlIG9mIC0td2l0aG91dC1udW1hIHN3aXRjaCBpbiBoZWxwCi0KLVRoZSBkZWZhdWx0IHZhbHVlIGlzIG5vLgotCi1GaXhlczogMzlhODVhMWYxICgiY29uZmlndXJlOiBhZGQga25vYiB0byBjb250cm9sIG51bWEgc3VwcG9ydCIpCi0KLVNpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMzlhMzFkLi5kNjZlYTAwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04Niw3ICs4Niw3IEBAIGZpCi0gIyBOdW1hCi0gQUNfQVJHX1dJVEgoW251bWFdLAotICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1udW1hXSwKLS0gICAgW3dpdGhvdXQgbnVtYSBzdXBwb3J0IChkZWZhdWx0PXllcyldKSwKLSsgICAgW3dpdGhvdXQgbnVtYSBzdXBwb3J0IChkZWZhdWx0PW5vKV0pLAotICAgW3dpdGhfbnVtYT1ub10sCi0gICBbd2l0aF9udW1hPXllc10KLSApCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY29uZmlndXJlLWFkZC1rbm9iLXRvLWNvbnRyb2wtbnVtYS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFhMjg3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jb25maWd1cmUtYWRkLWtub2ItdG8tY29udHJvbC1udW1hLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDM5YTg1YTFmMWU2NjI0ZjU1NDIxNWJhNGI2ODQzZDM2ODlhODQxNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGxpbmFyby5vcmc+Ci1EYXRlOiBNb24sIDUgRmViIDIwMTggMTE6NTY6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBhZGQga25vYiB0byBjb250cm9sIG51bWEgc3VwcG9ydAotCi1BbGxvdyB0byBkaXNhYmxlIG51bWEgZnJvbSB0aGUgdG9wIGxldmVsLgotCi1CYXNlZCBvbiBwYXRjaDoKLWh0dHA6Ly9jZ2l0Lm9wZW5lbWJlZGRlZC5vcmcvb3BlbmVtYmVkZGVkLWNvcmUvY29tbWl0L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHA/aWQ9NGM3ODczNTUyZTEzZGZkYmE5NmFmY2E3NTYyYzM5OGQyOTY2Y2E3MQotCi1SZXBvcnRlZC1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0tLS0KLSBjb25maWd1cmUuYWMgfCAxMCArKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNWM4ZDRlYS4uYjM5YTMxZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODMsNiArODMsMTQgQEAgZWxzZQotICAgICBBQ19TVUJTVChbV0lUSF9FWFBFQ1RdLFsibm8iXSkKLSBmaQotIAotKyMgTnVtYQotK0FDX0FSR19XSVRIKFtudW1hXSwKLSsgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtbnVtYV0sCi0rICAgIFt3aXRob3V0IG51bWEgc3VwcG9ydCAoZGVmYXVsdD15ZXMpXSksCi0rICBbd2l0aF9udW1hPW5vXSwKLSsgIFt3aXRoX251bWE9eWVzXQotKykKLSsKLSAjIFBlcmwKLSBBQ19BUkdfV0lUSChbcGVybF0sCi0gICBbQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1wZXJsXSwKLUBAIC0xNTcsNyArMTY1LDkgQEAgTFRQX0NIRUNLX1NFTElOVVgKLSBMVFBfQ0hFQ0tfU0lHTkFMCi0gTFRQX0NIRUNLX1NZU0NBTExfRVZFTlRGRAotIExUUF9DSEVDS19TWVNDQUxMX01PRElGWV9MRFQKLStpZiB0ZXN0ICJ4JHdpdGhfbnVtYSIgPSB4eWVzOyB0aGVuCi0gTFRQX0NIRUNLX1NZU0NBTExfTlVNQQotK2ZpCi0gTFRQX0NIRUNLX1NZU0NBTExfUVVPVEFDVEwKLSBMVFBfQ0hFQ0tfU1lTQ0FMTF9TSUdOQUxGRAotIExUUF9DSEVDS19TWVNDQUxMX1VOU0hBUkUKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1tYXAxNS1taXBzNjQtcmV0dXJuLUVJTlZBTC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1tbWFwMTUtbWlwczY0LXJldHVybi1FSU5WQUwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThlYmEyNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1tbWFwMTUtbWlwczY0LXJldHVybi1FSU5WQUwucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBiOTA5ODA1YjRmYzFiNzJlMGNlMjk5YWZiNGFiYzAyNzIwZWU4MWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTIgU2VwIDIwMTggMTQ6MjQ6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbW1hcDE1OiBtaXBzNjQgcmV0dXJuIEVJTlZBTAorCitJbiBtaXBzNjQga2VybmVsLCBzeXN0ZW0gY2hlY2sgdGhlIGFkZHIgdGhhdCBwYXNzZWQgdG8gbW1hcDoKKworICAgIGlmIChUQVNLX1NJWkUgLSBsZW4gPCBhZGRyKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworTGluazogaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2FyY2gvbWlwcy9tbS9tbWFwLmMjTDcxCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9wdWxsLzM5NF0KKworU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbW1hcC9tbWFwMTUuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21tYXAvbW1hcDE1LmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21tYXAvbW1hcDE1LmMKK2luZGV4IGVmZjI3ZDYuLmExMGI1YzcgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21tYXAvbW1hcDE1LmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbW1hcC9tbWFwMTUuYworQEAgLTgxLDkgKzgxLDE0IEBAIGludCBtYWluKGludCBhYywgY2hhciAqKmF2KQorIAkJfQorIAorIAkJaWYgKGVycm5vICE9IEVOT01FTSkgeworKyNpZmRlZiBfX21pcHNfXworKwkJCXRzdF9yZXNtKFRQQVNTIHwgVEVSUk5PLCAibW1hcCBpbnRvIGhpZ2ggcmVnaW9uICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIGFzIGV4cGVjdGVkIik7ICAgICAgICAgICAgICAgICAgICAgICAgCisrI2Vsc2UKKyAJCQl0c3RfcmVzbShURkFJTCB8IFRFUlJOTywgIm1tYXAgaW50byBoaWdoIHJlZ2lvbiAiCisgCQkJCSAiZmFpbGVkIHVuZXhwZWN0ZWRseSAtIGV4cGVjdCAiCisgCQkJCSAiZXJybm89RU5PTUVNLCBnb3QiKTsKKysjZW5kaWYKKyAJCX0gZWxzZSB7CisgCQkJdHN0X3Jlc20oVFBBU1MgfCBURVJSTk8sICJtbWFwIGludG8gaGlnaCByZWdpb24gIgorIAkJCQkgImZhaWxlZCBhcyBleHBlY3RlZCIpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbmV0bnNfaGVscGVyLnNoLXVzZS1waW5nLTYtd2hlbi1waW5nNi1pcy1ub3QtYXZhbGlhYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1uZXRuc19oZWxwZXIuc2gtdXNlLXBpbmctNi13aGVuLXBpbmc2LWlzLW5vdC1hdmFsaWFiLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZTdhMGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbmV0bnNfaGVscGVyLnNoLXVzZS1waW5nLTYtd2hlbi1waW5nNi1pcy1ub3QtYXZhbGlhYi5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDc2ZDgzNDNhZDMwMGY2NTA3MjMzYWJjZGY5NzYyOTI5MGUzNTg0OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZWkgWWFuZyA8TGVpLllhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjkgQXVnIDIwMTggMTE6NTE6MjQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmV0bnNfaGVscGVyLnNoOiB1c2UgJ3BpbmcgLTYnIHdoZW4gcGluZzYgaXMgbm90IGF2YWxpYWJsZQorCitwaW5nNiBoYXMgYmVlbiBtZXJnZWQgaW50byBwaW5nIHNpbmNlIDIwMTUgYnkgdXNpbmcgInBpbmcgLTYiCitpbiBzb21lIGRpc3RyaWJ1dGlvbnMgKGUuZy4gT3BlbkVtYmVkZGVkKSB0aGV5IGRyb3BwZWQgcGluZzYgY29tcGxldGVseQordGhpcyBwYXRjaCB3aWxsIGxldCBib3RoICJwaW5nIC02IiBhbmQgcGluZzYgd29yay4KKworW3B2b3JlbDogY2hhbmdlIHdhcyBkb25lIGluIHMyMDE1MDgxNToKK2ViYWQzNWYgKCJwaW5nOiBtZXJnZSBgcGluZzZgIGNvbW1hbmQgaW50byBgcGluZ2AiKSwKK2JlZm9yZSB0aGF0IHJlbGVhc2Ugc3dpdGNoICctNicgZGlkbid0IGV4aXN0LgorVXBzdHJlYW0gbGVhdmVzIHBpbmc2IHN5bWxpbmsgdG8gZGlzdHJpYnV0aW9ucy5dCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvNzZkODM0M2FkMzAwZjY1MDcyMzNhYmNkZjk3NjI5MjkwZTM1ODQ4YV0KKworU2lnbmVkLW9mZi1ieTogTGVpIFlhbmcgPExlaS5ZYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9uZXRucy9uZXRuc19oZWxwZXIuc2ggfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRhaW5lcnMvbmV0bnMvbmV0bnNfaGVscGVyLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250YWluZXJzL25ldG5zL25ldG5zX2hlbHBlci5zaAoraW5kZXggNmFlYTEwYi4uYTlkMDQ1OSAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9uZXRucy9uZXRuc19oZWxwZXIuc2gKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udGFpbmVycy9uZXRucy9uZXRuc19oZWxwZXIuc2gKK0BAIC0xNjgsNyArMTY4LDEyIEBAIG5ldG5zX3NldHVwKCkKKyAJaXB2NikKKyAJCUlGQ09ORl9JTjZfQVJHPSJpbmV0NiBhZGQiCisgCQlJUDA9JDY7IElQMT0kNzsKKy0JCXRwaW5nPSJwaW5nNiI7IE5FVE1BU0s9NjQKKysJCWlmIHdoaWNoIHBpbmc2ID4vZGV2L251bGwgMj4mMTsgdGhlbgorKwkJICAgIHRwaW5nPSJwaW5nNiIKKysJCWVsc2UKKysJCSAgICB0cGluZz0icGluZyAtNiIKKysJCWZpCisrCQlORVRNQVNLPTY0CisgCQk7OworIAkqKQorIAkJdHN0X2Jya20gVEJST0sgInNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGFuIGlwIHZlcnNpb24gKGlwdjR8aXB2NikiCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3Blbl9wb3NpeF90ZXN0c3VpdGUtbW1hcDI0LTItUmVsYXgtY29uZGl0aW9uLWEtYml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNzcxYzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3Blbl9wb3NpeF90ZXN0c3VpdGUtbW1hcDI0LTItUmVsYXgtY29uZGl0aW9uLWEtYml0LnBhdGNoCkBAIC0wLDAgKzEsNjggQEAKK0Zyb20gODVjOTcyZjczMGU4ZWZlODkxYTA2ZWEzYTJkZmI1Y2JiZGZiZmJmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTAgT2N0IDIwMTggMjI6MDc6MDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3Blbl9wb3NpeF90ZXN0c3VpdGUvbW1hcDI0LTI6IFJlbGF4IGNvbmRpdGlvbiBhIGJpdAorCitNaXBzIHdpbGwgcmV0dXJuIEVJTlZBTCBpbnN0ZWFkIG9mIEVOT01FTSBhcyBleHBlY3RlZAoraWYgdGhlIHJhbmdlIFthZGRyICsgbGVuKSBleGNlZWRzIFRBU0tfU0laRS4KKworTGludXgga2VybmVsIGNvZGU6IGFyY2gvbWlwcy9tbS9tbWFwLmMKK2lmIChmbGFncyAmIE1BUF9GSVhFRCkgeworICAgIC8qIEV2ZW4gTUFQX0ZJWEVEIG1hcHBpbmdzIG11c3QgcmVzaWRlIHdpdGhpbiBUQVNLX1NJWkUgKi8KKyAgICBpZiAoVEFTS19TSVpFIC0gbGVuIDwgYWRkcikKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKK1JlbGF4IHRoZSBjb25kaXRpb24gYW5kIGFjY2VwdCBib3RoIEVOT01FTSBhbmQgRUlOVkFMCithcyBleHBlY3RlZCBvdXRjb21lLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTgtT2N0b2Jlci8wMDk2MjQuaHRtbF0KKworU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIC4uLi9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jICAgIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCitpbmRleCBkZTUxZDQzLi44MTBlNWM4IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKKysrKyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCitAQCAtNyw3ICs3LDcgQEAKKyAgKiBzb3VyY2UgdHJlZS4KKyAgKgorICAqIFRoZSBtbWFwKCkgZnVuY3Rpb24gc2hhbGwgZmFpbCBpZjoKKy0gKiBbRU5PTUVNXSBNQVBfRklYRUQgd2FzIHNwZWNpZmllZCwKKysgKiBbRU5PTUVNIG9yIEVJTlZBTF0gTUFQX0ZJWEVEIHdhcyBzcGVjaWZpZWQsCisgICogYW5kIHRoZSByYW5nZSBbYWRkcixhZGRyK2xlbikgZXhjZWVkcyB0aGF0IGFsbG93ZWQKKyAgKiBmb3IgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYSBwcm9jZXNzOyBvciwgaWYgTUFQX0ZJWEVEIHdhcyBub3Qgc3BlY2lmaWVkIGFuZAorICAqIHRoZXJlIGlzIGluc3VmZmljaWVudCByb29tIGluIHRoZSBhZGRyZXNzIHNwYWNlIHRvIGVmZmVjdCB0aGUgbWFwcGluZy4KK0BAIC0xNSw3ICsxNSw3IEBACisgICogVGVzdCBTdGVwOgorICAqIDEuIE1hcCBhIHNoYXJlZCBtZW1vcnkgb2JqZWN0LCB3aXRoIHNpemUgZXhjZWVkaW5nIHRoZSB2YWx1ZSBnZXQgZnJvbQorICAqICAgIHJsaW1fY3VyIG9mIHJlc291cmNlIFJMSU1JVF9BUywgc2V0dGluZyBNQVBfRklYRUQ7CistICogMy4gU2hvdWxkIGdldCBFTk9NRU0uCisrICogMy4gU2hvdWxkIGdldCBFTk9NRU0gb3IgRUlOVkFMLgorICAqLworIAorICNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAKK0BAIC05Myw4ICs5Myw4IEBAIGludCBtYWluKHZvaWQpCisgCSAgICAgICAodW5zaWduZWQgbG9uZylsZW4pOworIAlwYSA9IG1tYXAoYWRkciwgbGVuLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfRklYRUQgfCBNQVBfU0hBUkVELCBmZCwKKyAJCSAgMCk7CistCWlmIChwYSA9PSBNQVBfRkFJTEVEICYmIGVycm5vID09IEVOT01FTSkgeworLQkJcHJpbnRmKCJHb3QgRU5PTUVNOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7CisrCWlmIChwYSA9PSBNQVBfRkFJTEVEICYmIChlcnJubyA9PSBFTk9NRU0gfHwgZXJybm8gPT0gRUlOVkFMKSkgeworKwkJcHJpbnRmKCJHb3QgRU5PTUVNIG9yIEVJTlZBTDogJXNcblRlc3QgUEFTU0VEXG4iLCBzdHJlcnJvcihlcnJubykpOworIAkJZXhpdChQVFNfUEFTUyk7CisgCX0KKyAKK0BAIC0xMDMsNiArMTAzLDYgQEAgaW50IG1haW4odm9pZCkKKyAJZWxzZQorIAkJbXVubWFwKHBhLCBsZW4pOworIAljbG9zZShmZCk7CistCXByaW50ZigiVGVzdCBGYWlsOiBEaWQgbm90IGdldCBFTk9NRU0gYXMgZXhwZWN0ZWRcbiIpOworKwlwcmludGYoIlRlc3QgRmFpbGVkOiBEaWQgbm90IGdldCBFTk9NRU0gb3IgRUlOVkFMIGFzIGV4cGVjdGVkXG4iKTsKKyAJcmV0dXJuIFBUU19GQUlMOworIH0KKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXNpZ3dhaXRpbmZvMDEtcmVjZW50LWdsaWJjLWNhbGxzLXN5c2NhbGwtZGlyZWN0bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc2lnd2FpdGluZm8wMS1yZWNlbnQtZ2xpYmMtY2FsbHMtc3lzY2FsbC1kaXJlY3RseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDEyYzg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXNpZ3dhaXRpbmZvMDEtcmVjZW50LWdsaWJjLWNhbGxzLXN5c2NhbGwtZGlyZWN0bHkucGF0Y2gKQEAgLTAsMCArMSw3NSBAQAorRnJvbSBiYjk3N2NhMDcxNmFlOThmMTAxMDJjNzEyMmZlMTViYzBkZGI1MzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkhvbmd6aGkuU29uZyIgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMCBTZXAgMjAxOCAyMTo0OTowMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzaWd3YWl0aW5mbzAxOiByZWNlbnQgZ2xpYmMgY2FsbHMgc3lzY2FsbCBkaXJlY3RseQorCitnbGliYyBjb21taXQKKyAgOGIwZTc5NWFhYTQ0ICgiU2ltcGxpZnkgTGludXggc2lne3RpbWVkfXdhaXR7aW5mb30gaW1wbGVtZW50YXRpb25zIikKK2NoYW5nZWQgc2lnd2FpdGluZm8gdG8gY2FsbCBzaWd0aW1lZHdhaXQsIHdoaWNoIGNhbGxzIHJ0X3NpZ3RpbWVkd2FpdAorc3lzY2FsbCBkaXJlY3RseS4KKworU28sIGFuIGludmFsaWQgcG9pbnRlciBubyBsb25nZXIgY3Jhc2hlcyBjaGlsZCBwcm9jZXNzIGFuZCB0ZXN0CityZXBvcnRzIGZhaWx1cmUuIEZpeCBpdCBieSBhY2NlcHRpbmcgZWl0aGVyIGNyYXNoIG9yIEVGQVVMVC4KKworU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxOC1TZXB0ZW1iZXIvMDA5MzM4Lmh0bWxdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyAuLi4va2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYyAgICB8IDMwICsrKysrKysrKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKK2luZGV4IDk1YTk0MzZhNC4uOGZhOGFjMzRiIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jCitAQCAtMzcxLDE5ICszNzEsNDEgQEAgdm9pZCB0ZXN0X2JhZF9hZGRyZXNzMihzd2lfZnVuYyBzaWd3YWl0aW5mbywgaW50IHNpZ25vKQorIAkJdHN0X2Jya20oVEJST0sgfCBURVJSTk8sIE5VTEwsICJmb3JrKCkgZmFpbGVkIik7CisgCWNhc2UgMDoKKyAJCXNpZ25hbChTSUdTRUdWLCBTSUdfREZMKTsKKysKKysgICAgICAgLyoKKysgICAgICAgICogZGVwZW5kaW5nIG9uIGdsaWJjIGltcGxlbWVudGF0aW9uIHdlIHNob3VsZAorKyAgICAgICAgKiBlaXRoZXIgY3Jhc2ggb3IgZ2V0IEVGQVVMVAorKyAgICAgICAgKi8KKyAJCVRFU1Qoc2lnd2FpdGluZm8oKHZvaWQgKikxLCBOVUxMLCBOVUxMKSk7CisgCistCQlfZXhpdCgwKTsKKysgICAgICAgaWYgKFRFU1RfUkVUVVJOID09IC0xICYmIFRFU1RfRVJSTk8gPT0gRUZBVUxUKQorKyAgICAgICAgICAgX2V4aXQoMCk7CisrCisrICAgICAgIHRzdF9yZXNtKFRJTkZPLCAic3dpX2Z1bmMgcmV0dXJuZWQ6ICVsZCwgZXJybm86ICVkIiwKKysgICAgICAgICAgIFRFU1RfUkVUVVJOLCBURVNUX0VSUk5PKTsKKysgICAgICAgX2V4aXQoMSk7CisrCisgCQlicmVhazsKKyAJZGVmYXVsdDoKKyAJCWJyZWFrOworIAl9CisgCisgCVNVQ0NFRURfT1JfRElFKHdhaXRwaWQsICJ3YWl0cGlkIGZhaWxlZCIsIHBpZCwgJnN0YXR1cywgMCk7CistCWlmIChXSUZTSUdOQUxFRChzdGF0dXMpICYmIFdURVJNU0lHKHN0YXR1cykgPT0gU0lHU0VHVikKKysKKysgICBpZiAoKFdJRlNJR05BTEVEKHN0YXR1cykgJiYgV1RFUk1TSUcoc3RhdHVzKSA9PSBTSUdTRUdWKQorKyAgICAgICB8fCAoV0lGRVhJVEVEKHN0YXR1cykgJiYgV0VYSVRTVEFUVVMoc3RhdHVzKSA9PSAwKSkgeworIAkJdHN0X3Jlc20oVFBBU1MsICJUZXN0IHBhc3NlZCIpOworLQllbHNlCistCQl0c3RfcmVzbShURkFJTCwgIlVucmVjb2duaXNlZCBjaGlsZCBleGl0IGNvZGUiKTsKKysgICAgICAgcmV0dXJuOworKyAgIH0KKysKKysgICBpZiAoV0lGRVhJVEVEKHN0YXR1cykpIHsKKysgICAgICAgdHN0X3Jlc20oVEZBSUwsICJVbnJlY29nbmlzZWQgY2hpbGQgZXhpdCBjb2RlOiAlZCIsCisrICAgICAgICAgICBXRVhJVFNUQVRVUyhzdGF0dXMpKTsKKysgICB9CisrICAgaWYgKFdJRlNJR05BTEVEKHN0YXR1cykpIHsKKysgICAgICAgdHN0X3Jlc20oVEZBSUwsICJVbnJlY29nbmlzZWQgY2hpbGQgdGVybXNpZzogJWQiLAorKyAgICAgICAgICAgV1RFUk1TSUcoc3RhdHVzKSk7CisrICAgfQorIH0KKyAKKyB2b2lkIHRlc3RfYmFkX2FkZHJlc3MzKHN3aV9mdW5jIHNpZ3dhaXRpbmZvLCBpbnQgc2lnbm8pCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtZmNudGwtbWFrZS1PRkQtY29tbWFuZC11c2UtZmNudGw2NC1zeXNjYWxsLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1mY250bC1tYWtlLU9GRC1jb21tYW5kLXVzZS1mY250bDY0LXN5c2NhbGwtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NTU1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtZmNudGwtbWFrZS1PRkQtY29tbWFuZC11c2UtZmNudGw2NC1zeXNjYWxsLS5wYXRjaApAQCAtMCwwICsxLDE4NCBAQAorRnJvbSA4ZGUwM2VhMTIwMDQ4MGI5MjJkNWJhMDViNjlkYzk0ZGI2MDQ5NmY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkhvbmd6aGkuU29uZyIgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCAxNSBTZXAgMjAxOCAyMjozOTozMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBzeXNjYWxscy9mY250bDogbWFrZSBPRkQgY29tbWFuZCB1c2UgZmNudGw2NCgpIHN5c2NhbGwgb24KKyAzMi1iaXQKKworVG8gY29wZSB3aXRoIGdsaWJjIGNvbW1pdDoKKyAgMDZhYjcxOWQzMGIwICgiRml4IExpbnV4IGZjbnRsIE9GRCBsb2NrcyBmb3Igbm9uLUxGUyBhcmNoaXRlY3R1cmVzCisoQlojMjAyNTEpIikKKworV0lQOiBTdGlsbCBuZWVkIHRvIHRlc3QgdGhpcyB3aXRoIG5ldyBnbGliYy4KKyAgICAgVGVzdCB3aXRoIG9sZCBnbGliYyBsb29rIE9LIHNvIGZhci4KKworU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyAgICBCYWNrcG9ydGVkIGZyb20gdXBzdHJlYW0gbWFpbGxpc3QKKyAgICBodHRwczovL2xpc3RzLmxpbnV4Lml0L3BpcGVybWFpbC9sdHAvMjAxOC1TZXB0ZW1iZXIvMDA5MzcwLmh0bWwKKworU2lnbmVkLW9mZi1ieTogSG9uZ3poaSBTb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNC5jICAgICAgfCAxMiArKysrKysrLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM2LmMgICAgICB8IDIzICsrKysrKysrKysrKystLS0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGxfY29tbW9uLmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bF9jb21tb24uaAorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM0LmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzQuYworaW5kZXggYWEyOWNmOS4uMTA5ZjgzNCAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNC5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzQuYworQEAgLTI4LDYgKzI4LDcgQEAKKyAjaW5jbHVkZSAibGFwaS9mY250bC5oIgorICNpbmNsdWRlICJ0c3Rfc2FmZV9wdGhyZWFkLmgiCisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCisrI2luY2x1ZGUgImZjbnRsX2NvbW1vbi5oIgorIAorIHN0YXRpYyBpbnQgdGhyZWFkX2NudDsKKyBzdGF0aWMgY29uc3QgaW50IG1heF90aHJlYWRfY250ID0gMzI7CitAQCAtNjgsNyArNjksMTIgQEAgdm9pZCAqdGhyZWFkX2ZuXzAxKHZvaWQgKmFyZykKKyAKKyAJbWVtc2V0KGJ1ZiwgKGludHB0cl90KWFyZywgd3JpdGVfc2l6ZSk7CisgCistCXN0cnVjdCBmbG9jazY0IGxjayA9IHsKKysgICAgLyogc2VlIGV4cGxhbmF0aW9uIGluIGZjbnRsX2NvbW1vbi5oICovCisrICAgICNpZmRlZiBVU0VfU1RSVUNUX0ZMT0NLCisrICAgICAgICBzdHJ1Y3QgZmxvY2sgbGNrID0geworKyAgICAjZWxzZQorKyAgICAgICAgc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAjZW5kaWYKKyAJCS5sX3doZW5jZSA9IFNFRUtfU0VULAorIAkJLmxfc3RhcnQgID0gMCwKKyAJCS5sX2xlbiAgICA9IDEsCitAQCAtNzYsMTMgKzgyLDEzIEBAIHZvaWQgKnRocmVhZF9mbl8wMSh2b2lkICphcmcpCisgCisgCWZvciAoaSA9IDA7IGkgPCB3cml0ZXNfbnVtOyArK2kpIHsKKyAJCWxjay5sX3R5cGUgPSBGX1dSTENLOworLQkJU0FGRV9GQ05UTChmZCwgRl9PRkRfU0VUTEtXLCAmbGNrKTsKKysgICAgICAgIG15X2ZjbnRsKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworIAorIAkJU0FGRV9MU0VFSyhmZCwgMCwgU0VFS19FTkQpOworIAkJU0FGRV9XUklURSgxLCBmZCwgYnVmLCB3cml0ZV9zaXplKTsKKyAKKyAJCWxjay5sX3R5cGUgPSBGX1VOTENLOworLQkJU0FGRV9GQ05UTChmZCwgRl9PRkRfU0VUTEtXLCAmbGNrKTsKKysgICAgICAgIG15X2ZjbnRsKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworIAorIAkJc2NoZWRfeWllbGQoKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwzNi5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM2LmMKK2luZGV4IDMyNDZkMTMuLmYyNjNiNmIgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMzYuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDM2LmMKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgImxhcGkvZmNudGwuaCIKKyAjaW5jbHVkZSAidHN0X3NhZmVfcHRocmVhZC5oIgorICNpbmNsdWRlICJ0c3RfdGVzdC5oIgorKyNpbmNsdWRlICJmY250bF9jb21tb24uaCIKKyAKKyBzdGF0aWMgaW50IHRocmVhZF9jbnQ7Cisgc3RhdGljIGludCBmYWlsX2ZsYWcgPSAwOworQEAgLTg3LDcgKzg4LDEyIEBAIHN0YXRpYyB2b2lkICpmbl9vZmRfdyh2b2lkICphcmcpCisgCWludCBmZCA9IFNBRkVfT1BFTihmbmFtZSwgT19SRFdSKTsKKyAJbG9uZyB3dCA9IHBhLT5jbnQ7CisgCistCXN0cnVjdCBmbG9jazY0IGxjayA9IHsKKysgICAgLyogc2VlIGV4cGxhbmF0aW9uIGluIGZjbnRsX2NvbW1vbi5oICovCisrICAgICNpZmRlZiBVU0VfU1RSVUNUX0ZMT0NLCisrICAgICAgICBzdHJ1Y3QgZmxvY2sgbGNrID0geworKyAgICAjZWxzZQorKyAgICAgICAgc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAjZW5kaWYKKyAJCS5sX3doZW5jZSA9IFNFRUtfU0VULAorIAkJLmxfc3RhcnQgID0gcGEtPm9mZnNldCwKKyAJCS5sX2xlbiAgICA9IHBhLT5sZW5ndGgsCitAQCAtOTksMTMgKzEwNSwxMyBAQCBzdGF0aWMgdm9pZCAqZm5fb2ZkX3codm9pZCAqYXJnKQorIAkJbWVtc2V0KGJ1Ziwgd3QsIHBhLT5sZW5ndGgpOworIAorIAkJbGNrLmxfdHlwZSA9IEZfV1JMQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisgCisgCQlTQUZFX0xTRUVLKGZkLCBwYS0+b2Zmc2V0LCBTRUVLX1NFVCk7CisgCQlTQUZFX1dSSVRFKDEsIGZkLCBidWYsIHBhLT5sZW5ndGgpOworIAorIAkJbGNrLmxfdHlwZSA9IEZfVU5MQ0s7CistCQlTQUZFX0ZDTlRMKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLVywgJmxjayk7CisgCisgCQl3dCsrOworIAkJaWYgKHd0ID49IDI1NSkKK0BAIC0xNjYsNyArMTcyLDEyIEBAIHN0YXRpYyB2b2lkICpmbl9vZmRfcih2b2lkICphcmcpCisgCWludCBpOworIAlpbnQgZmQgPSBTQUZFX09QRU4oZm5hbWUsIE9fUkRXUik7CisgCistCXN0cnVjdCBmbG9jazY0IGxjayA9IHsKKysgICAgLyogc2VlIGV4cGxhbmF0aW9uIGluIGZjbnRsX2NvbW1vbi5oICovCisrICAgICNpZmRlZiBVU0VfU1RSVUNUX0ZMT0NLCisrICAgICAgICBzdHJ1Y3QgZmxvY2sgbGNrID0geworKyAgICAjZWxzZQorKyAgICAgICAgc3RydWN0IGZsb2NrNjQgbGNrID0geworKyAgICAjZW5kaWYKKyAJCS5sX3doZW5jZSA9IFNFRUtfU0VULAorIAkJLmxfc3RhcnQgID0gcGEtPm9mZnNldCwKKyAJCS5sX2xlbiAgICA9IHBhLT5sZW5ndGgsCitAQCAtMTc4LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkICpmbl9vZmRfcih2b2lkICphcmcpCisgCQltZW1zZXQoYnVmLCAwLCBwYS0+bGVuZ3RoKTsKKyAKKyAJCWxjay5sX3R5cGUgPSBGX1JETENLOworLQkJU0FGRV9GQ05UTChmZCwgRl9PRkRfU0VUTEtXLCAmbGNrKTsKKysgICAgICAgIG15X2ZjbnRsKGZkLCBGX09GRF9TRVRMS1csICZsY2spOworIAorIAkJLyogcmxvY2sgYWNxdWlyZWQgKi8KKyAJCVNBRkVfTFNFRUsoZmQsIHBhLT5vZmZzZXQsIFNFRUtfU0VUKTsKK0BAIC0yMDksNyArMjIwLDcgQEAgc3RhdGljIHZvaWQgKmZuX29mZF9yKHZvaWQgKmFyZykKKyAJCX0KKyAKKyAJCWxjay5sX3R5cGUgPSBGX1VOTENLOworLQkJU0FGRV9GQ05UTChmZCwgRl9PRkRfU0VUTEssICZsY2spOworKyAgICAgICAgbXlfZmNudGwoZmQsIEZfT0ZEX1NFVExLLCAmbGNrKTsKKyAKKyAJCXNjaGVkX3lpZWxkKCk7CisgCX0KK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsX2NvbW1vbi5oIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bF9jb21tb24uaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjNmZTM5OWIKKy0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGxfY29tbW9uLmgKK0BAIC0wLDAgKzEsMzIgQEAKKysjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgorKworKy8qCisrICogZ2xpYmMgY29tbWl0OgorKyAqICAgMDZhYjcxOWQzMGIwICgiRml4IExpbnV4IGZjbnRsIE9GRCBsb2NrcyBmb3Igbm9uLUxGUyBhcmNoaXRlY3R1cmVzIChCWiMyMDI1MSkiKQorKyAqIGNoYW5nZWQgYmVoYXZpb3Igb2YgYXJnIHBhcmFtZXRlciBmb3IgT0ZEIGNvbW1hbmRzLiBJdCBpcyBubworKyAqIGxvbmdlciBwYXNzaW5nIGFyZyBkaXJlY3RseSB0byBzeXNjYWxsLCBidXQgZXhwZWN0cyBpdCB0byBiZQorKyAqICdzdHJ1Y3QgZmxvY2snLgorKyAqCisrICogT24gNjQtYml0IG9yIF9GSUxFX09GRlNFVF9CSVRTID09IDY0IHdlIGNhbiB1c2UgZmNudGwoKSBhbmQKKysgKiBzdHJ1Y3QgZmxvY2sgd2l0aCBhbnkgZ2xpYmMgdmVyc2lvbi4gc3RydWN0IGZsb2NrIGFuZCBmbG9jazY0CisrICogc2hvdWxkIGJlIGlkZW50aWNhbC4KKysgKgorKyAqIE9uIDMyLWJpdCwgb2xkZXIgZ2xpYmMgd291bGQgcGFzcyBhcmcgZGlyZWN0bHksIHJlY2VudCBvbmUgdHJlYXRzCisrICogaXQgYXMgJ3N0cnVjdCBmbG9jaycgYW5kIGNvbnZlcnRzIGl0IHRvICdzdHJ1Y3QgZmxvY2s2NCcuCisrICogU28sIGZvciAzMi1iaXQgd2UgdXNlIGZjbnRsNjQgc3lzY2FsbCBkaXJlY3RseSB3aXRoIHN0cnVjdCBmbG9jazY0LgorKyAqLworKyNpZiBfX1dPUkRTSVpFID09IDY0IHx8IF9GSUxFX09GRlNFVF9CSVRTID09IDY0CisrI2RlZmluZSBVU0VfU1RSVUNUX0ZMT0NLCisrc3RhdGljIGludCBteV9mY250bChpbnQgZmQsIGludCBjbWQsIHZvaWQgKmxjaykKKyt7CisrICAgICAgICByZXR1cm4gU0FGRV9GQ05UTChmZCwgY21kLCBsY2spOworK30KKysjZWxzZQorK3N0YXRpYyBpbnQgbXlfZmNudGwoaW50IGZkLCBpbnQgY21kLCB2b2lkICpsY2spCisreworKyAgICAgICAgaW50IHJldCA9IHRzdF9zeXNjYWxsKF9fTlJfZmNudGw2NCwgZmQsIGNtZCwgbGNrKTsKKysgICAgICAgIGlmIChyZXQgPT0gLTEpCisrICAgICAgICAgICAgICAgIHRzdF9icmsoVEJST0t8VEVSUk5PLCAiZmNudGw2NCIpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrI2VuZGlmCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2YxZTA1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGIxOTMwMTFkYTMwMWIzZDk0NGU4ZmRkY2Y0ODE3NTEzYzMxYzViODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPgotRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE3OjM2OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMzJdIEFkZCBrbm9iIHRvIGNvbnRyb2wgdGlycGMgc3VwcG9ydAotCi1hbGxvdyB0byBkaXNhYmxlIHRpcnBjLiBIZWxwcyB0byBkaXNhYmxlIGl0IGF0IHRvcCBsZXZlbCBmb3IgZWcuIG11c2wgaXQKLWRvZXMgbm90IHlldCB3b3JrLgotCi1TaWduZWQtb2ZmLWJ5OiBGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29uZmlndXJlLmFjIHwgOSArKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNjNTAzOTcuLjllMjkzNmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk4LDYgKzk4LDEzIEBAIGlmIHRlc3QgIngkd2l0aF9weXRob24iID0geHllczsgdGhlbgotIGVsc2UKLSAgICAgQUNfU1VCU1QoW1dJVEhfUFlUSE9OXSxbIm5vIl0pCi0gZmkKLSsKLSsjIFRJIFJQQwotK0FDX0FSR19XSVRIKFt0aXJwY10sCi0rICBBQ19IRUxQX1NUUklORyhbLS13aXRob3V0LXRpcnBjXSwKLSsgICAgW3dpdGhvdXQgbGlidGlycGMgc3VwcG9ydF0pLAotKyAgW10sW3dpdGhfdGlycGM9eWVzXSwKLSspCi0gIyBFTkQgdG9vbHMga25vYnMKLSAKLSAjIFRlc3RzdWl0ZXMga25vYnMKLUBAIC0xNjksNyArMTc2LDkgQEAgTFRQX0NIRUNLX1JFTkFNRUFUMgotIExUUF9DSEVDS19GQUxMT0NBVEUKLSBMVFBfQ0hFQ0tfU1lTQ0FMTF9GQ05UTAotIExUUF9DSEVDS19TWVNDQUxMX1BFUkZfRVZFTlRfT1BFTgotK2lmIHRlc3QgIngkd2l0aF90aXJwYyIgPSB4eWVzOyB0aGVuCi0gTFRQX0NIRUNLX1RJUlBDCi0rZmkKLSBMVFBfQ0hFQ0tfVEVFCi0gTFRQX0NIRUNLX1NQTElDRQotIExUUF9DSEVDS19WTVNQTElDRQotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IDg0YWIzN2UuLjJkZjM4NTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0yMiwxMCArMjIsMTAgQEAKICB0ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlIHwgNSArKysrKwogIDggZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGdpdC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL01ha2VmaWxlCi0rKysgZ2l0L01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMjk3ZjhlNy4uOTA2YjI4MCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQogQEAgLTQ5LDYgKzQ5LDExIEBAIFNLSVBfSURDSEVDSwkJPz0gMAogIFVDTElOVVgJCQk/PSAwCiAgZXhwb3J0IFVDTElOVVgKQEAgLTM4LDEwICszOCwxMCBAQAogICMgQ0xFQU5fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBzb2xlbHkgaW4gY2xlYW4uCiAgIyBDT01NT05fVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBhbGwsIGNsZWFuLCBhbmQgaW5zdGFsbC4KICAjIElOU1RBTExfVEFSR0VUUzoJVGFyZ2V0cyB3aGljaCBleGlzdCBpbiBjbGVhbiBhbmQgaW5zdGFsbCAoY29udGFpbnMKLUluZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLSsrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlCitpbmRleCA1MGExMmZhLi40ZjE5ODdmIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZQogQEAgLTQ4LDEzICs0OCwxNiBAQCBTVUJESVJTCQkJKz0gY29ubmVjdG9ycyBcCiAgCQkJICAgbG9nZ2luZyBcCiAgCQkJICAgbWVtIFwKQEAgLTYwLDEwICs2MCwxMCBAQAogIGlmZXEgKCQoV0lUSF9QT1dFUl9NQU5BR0VNRU5UX1RFU1RTVUlURSkseWVzKQogIFNVQkRJUlMJCQkrPSBwb3dlcl9tYW5hZ2VtZW50CiAgZW5kaWYKLUluZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUKLSsrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCitpbmRleCA2MjQ1ZWQwLi5hYTRlYjdmIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zY2hlZC9NYWtlZmlsZQogQEAgLTIzLDUgKzIzLDcgQEAKICB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLgogIApAQCAtNzMsMTAgKzczLDEwIEBACiArCUZJTFRFUl9PVVRfRElSUyArPSBwcm9jZXNzX3N0cmVzcwogK2VuZGlmCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLUluZGV4OiBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUKLSsrKyBnaXQvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCitpbmRleCA4YWNiMzk1Li5iNzQ5MTI2IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQogQEAgLTI4LDYgKzI4LDExIEBAIGlmZXEgKCQoVUNMSU5VWCksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gY2FwZ2V0IGNhcHNldCBjaG1vZCBjaG93biBjbG9uZSBmb3JrIGdldGNvbnRleHQgbGxzZWVrIFwKICAJCSAgIG1pbmNvcmUgbXByb3RlY3QgbmZ0dyBwcm9maWwgcmVtYXBfZmlsZV9wYWdlcyBzYnJrCkBAIC04OSwxMSArODksMTEgQEAKICAKICBpZmVxICgkKFVDTElCQyksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKK2luZGV4IDhiYzc4YzIuLmMzNmNmNTAgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9NYWtlZmlsZQorQEAgLTI2LDQgKzI2LDggQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5tawogIAogIExETElCUwkJCSs9ICQoQUNMX0xJQlMpCiAgCkBAIC0xMDIsMTAgKzEwMiwxMCBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotSW5kZXg6IGdpdC90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLSsrKyBnaXQvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCitpbmRleCAzMTYwODEzLi45YmRmNWQwIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKIEBAIC0yMyw0ICsyMyw5IEBACiAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KICAKQEAgLTExNiwxMSArMTE2LDExIEBACiArZW5kaWYKICsKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawotSW5kZXg6IGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgZ2l0L3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQoraW5kZXggN2E3YTU3YS4uNTgwODg2NiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZQorQEAgLTI3LDUgKzI3LDkgQEAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZW52X3ByZS5tawogIGluY2x1ZGUgJChhYnNfc3JjZGlyKS8uLi8uLi9jb25maWcubWsKICAKICBNQUtFX1RBUkdFVFMJCTo9IHRlc3RwaS0wIHRlc3RwaS0xIHRlc3RwaS0yIHRlc3RwaS00IHRlc3RwaS01IHRlc3RwaS02IHRlc3RwaS03IHNicmtfbXV0ZXgKQEAgLTEzMCwxMCArMTMwLDEwIEBACiArCiAgCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5tawotSW5kZXg6IGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKK2luZGV4IDVlZGMzYjQuLmFhNTk4N2EgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCiBAQCAtMjQsNCArMjQsOSBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgogIAogIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKQEAgLTE0NCwzICsxNDQsNiBAQAogK2VuZGlmCiArCiAgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5taworLS0gCisyLjcuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKaW5kZXggZTMyNWNlNC4uNDI4YWMzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaApAQCAtMTEsOSArMTEsOSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jICAgICB8ICA5ICsrKystCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRjcHUvZ2V0Y3B1MDEuYyAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKystCi0gLi4uL3NjaGVkX2dldGFmZmluaXR5L3NjaGVkX2dldGFmZmluaXR5MDEuYyAgICAgICAgfCAyNiArKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGNwdS9nZXRjcHUwMS5jICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKy0KKyAuLi4vc2NoZWRfZ2V0YWZmaW5pdHkvc2NoZWRfZ2V0YWZmaW5pdHkwMS5jICAgICAgICB8IDI2ICsrKysrKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNzIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiBpbmRleCA2MDcyYmZhLi4yYjA5MGNiIDEwMDY0NApAQCAtMTAyLDcgKzEwMiw3IEBACiAgCSpjcHVfaWQgPSBzY2hlZF9nZXRjcHUoKTsKICAjZW5kaWYKICAJcmV0dXJuIDA7Ci1AQCAtMTkxLDE1ICsyMDQsMjAgQEAgdW5zaWduZWQgaW50IHNldF9jcHVfYWZmaW5pdHkodm9pZCkKK0BAIC0xOTEsMTUgKzIwMywyMCBAQCB1bnNpZ25lZCBpbnQgc2V0X2NwdV9hZmZpbml0eSh2b2lkKQogIAljcHVfc2V0X3QgKnNldDsKICAJc2l6ZV90IHNpemU7CiAgCWludCBucmNwdXMgPSAxMDI0OwpAQCAtMTIzLDcgKzEyMyw3IEBACiAgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDcpCiAgCXNpemUgPSBDUFVfQUxMT0NfU0laRShucmNwdXMpOwogIAlDUFVfWkVST19TKHNpemUsIHNldCk7Ci1AQCAtMjA3LDggKzIyNSwxMyBAQCByZWFsbG9jOgorQEAgLTIwNyw4ICsyMjQsMTMgQEAgcmVhbGxvYzoKICAJc2l6ZSA9IHNpemVvZihjcHVfc2V0X3QpOwogIAlDUFVfWkVSTyhzZXQpOwogICNlbmRpZgpAQCAtMTM3LDcgKzEzNyw3IEBACiAgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDcpCiAgCQlpZiAoZXJybm8gPT0gRUlOVkFMICYmIG5yY3B1cyA8ICgxMDI0IDw8IDgpKSB7CiAgCQkJbnJjcHVzID0gbnJjcHVzIDw8IDI7Ci1AQCAtMjIwLDEwICsyNDMsMTcgQEAgcmVhbGxvYzoKK0BAIC0yMjAsMTAgKzI0MiwxNyBAQCByZWFsbG9jOgogIAkJCQkgIk5SX0NQVVMgb2YgdGhlIGtlcm5lbCBpcyBtb3JlIHRoYW4gMTAyNCwgc28gd2UnZCBiZXR0ZXIgdXNlIGEgbmV3ZXIgZ2xpYmMoPj0gMi43KSIpOwogIAkJZWxzZQogICNlbmRpZgpAQCAtMTU1LDcgKzE1NSw3IEBACiAgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDcpCiAgCUNQVV9aRVJPX1Moc2l6ZSwgc2V0KTsKICAJQ1BVX1NFVF9TKGNwdV9tYXgsIHNpemUsIHNldCk7Ci1AQCAtMjMxLDYgKzI2MSwxMCBAQCByZWFsbG9jOgorQEAgLTIzMSw2ICsyNjAsMTAgQEAgcmVhbGxvYzoKICAJQ1BVX1pFUk8oc2V0KTsKICAJQ1BVX1NFVChjcHVfbWF4LCBzZXQpOwogICNlbmRpZgpAQCAtMTY2LDcgKzE2Niw3IEBACiAgCWlmIChzY2hlZF9zZXRhZmZpbml0eSgwLCBzaXplLCBzZXQpIDwgMCkgewogIAkJQ1BVX0ZSRUUoc2V0KTsKICAJCXRzdF9icmttKFRGQUlMLCBOVUxMLCAic2NoZWRfc2V0YWZmaW5pdHk6ZXJybm86JWQiLCBlcnJubyk7Ci1AQCAtMjQ3LDExICsyODEsMTUgQEAgdW5zaWduZWQgaW50IG1heF9jcHVpZChzaXplX3Qgc2l6ZSwgY3B1X3NldF90ICogc2V0KQorQEAgLTI0NywxMSArMjgwLDE1IEBAIHVuc2lnbmVkIGludCBtYXhfY3B1aWQoc2l6ZV90IHNpemUsIGNwdV9zZXRfdCAqIHNldCkKICB7CiAgCXVuc2lnbmVkIGludCBpbmRleCwgbWF4ID0gMDsKICAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc2l6ZSAqIEJJVFNfUEVSX0JZVEU7IGluZGV4KyspCkBAIC0xODYsNyArMTg2LDcgQEAKIGluZGV4IDlkNmE4MWEuLjRlZDEzYjIgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NjaGVkX2dldGFmZmluaXR5L3NjaGVkX2dldGFmZmluaXR5MDEuYwogKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zY2hlZF9nZXRhZmZpbml0eS9zY2hlZF9nZXRhZmZpbml0eTAxLmMKLUBAIC02Niw5ICs2NiwxMSBAQCBkbyB7IFwKK0BAIC02Nyw5ICs2NywxMSBAQCBkbyB7IFwKICAJdHN0X3Jlc20oKFRFU1RfUkVUVVJOID09IC0xID8gVFBBU1MgOiBURkFJTCkgfCBUVEVSUk5PLCAjdCk7IFwKICB9IHdoaWxlICgwKQogIApAQCAtMTk4LDcgKzE5OCw3IEBACiAgCiAgaW50IG1haW4oaW50IGFjLCBjaGFyICoqYXYpCiAgewotQEAgLTk1LDE0ICs5NywxOSBAQCBzdGF0aWMgdm9pZCBkb190ZXN0KHZvaWQpCitAQCAtOTYsMTQgKzk4LDE5IEBAIHN0YXRpYyB2b2lkIGRvX3Rlc3Qodm9pZCkKICAJcGlkX3QgdW51c2VkX3BpZDsKICAJdW5zaWduZWQgbGVuOwogIApAQCAtMjE4LDcgKzIxOCw3IEBACiAgI2lmIF9fR0xJQkNfUFJFUkVRKDIsIDcpCiAgCWxlbiA9IENQVV9BTExPQ19TSVpFKG5yY3B1cyk7CiAgCUNQVV9aRVJPX1MobGVuLCBtYXNrKTsKLUBAIC0xMTAsMTAgKzExNywxNSBAQCByZWFsbG9jOgorQEAgLTExMSwxMCArMTE4LDE1IEBAIHJlYWxsb2M6CiAgCWxlbiA9IHNpemVvZihjcHVfc2V0X3QpOwogIAlDUFVfWkVSTyhtYXNrKTsKICAjZW5kaWYKQEAgLTIzNCw3ICsyMzQsNyBAQAogICNpZiBfX0dMSUJDX1BSRVJFUSgyLCA3KQogIAkJaWYgKGVycm5vID09IEVJTlZBTCAmJiBucmNwdXMgPCAoMTAyNCA8PCA4KSkgewogIAkJCW5yY3B1cyA9IG5yY3B1cyA8PCAyOwotQEAgLTEyNSwxNyArMTM3LDI3IEBAIHJlYWxsb2M6CitAQCAtMTI2LDE3ICsxMzgsMjcgQEAgcmVhbGxvYzoKICAJCQkJICJuZXdlciBnbGliYyg+PSAyLjcpIik7CiAgCQllbHNlCiAgI2VuZGlmCkBAIC0yNjIsNyArMjYyLDcgQEAKICAJCQlpZiAoVEVTVF9SRVRVUk4gIT0gLTEpCiAgCQkJCXRzdF9yZXNtKFRQQVNTLCAic2NoZWRfZ2V0YWZmaW5pdHkoKSBzdWNjZWVkLCAiCiAgCQkJCQkgInRoaXMgcHJvY2VzcyAlZCBpcyBydW5uaW5nICIKLUBAIC0xNDMsMTEgKzE2NSwxNSBAQCByZWFsbG9jOgorQEAgLTE0NCwxMSArMTY2LDE1IEBAIHJlYWxsb2M6CiAgCQl9CiAgCX0KICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZmNlODguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDAxMzBmNDE0NmNlZDMyMGFhZGIwMWIyMmUzNmIxM2QyNjlhOGViYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE5OjQ4OjE0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzJdIHJlcGxhY2UgX19CRUdJTl9ERUNMUyBhbmQgX19FTkRfREVDTFMKLQotVGhleSBhcmUgbm90IHBvcnRhYmxlIGFjcm9zcyBsaWJjIGltcGxlbWVudGF0aW9ucwotdGhlcmVmb3JlIHJlcGxhY2UgdGhlbSB3aXRoIGV4cGFuZGVkIG1hY3JvcwotCi1JbmNsdWRlIDxhc20tZ2VuZXJpYy90eXBlcy5oPiB0byBnZXQgX19zMzIgZGVmaW5pdGlvbnMKLWl0cyBub3QgYSBnZW5lcmFsbHkgYXZhaWxhYmxlIHR5cGVkZWYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmggfCA4ICsrKysrKy0tCi0gdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oICAgICAgICAgICAgICAgIHwgOSArKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmggYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmgKLWluZGV4IGJlNTk5YzcuLjhjYzVlN2UgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmgKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZXBvbGwyL2luY2x1ZGUvZXBvbGwuaAotQEAgLTg1LDcgKzg1LDkgQEAgc3RydWN0IGVwb2xsX2V2ZW50Ci0gfSBFUE9MTF9QQUNLRUQ7Ci0gCi0gCi0tX19CRUdJTl9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIAotIC8qIENyZWF0ZXMgYW4gZXBvbGwgaW5zdGFuY2UuICBSZXR1cm5zIGFuIGZkIGZvciB0aGUgbmV3IGluc3RhbmNlLgotICAgIFRoZSAic2l6ZSIgcGFyYW1ldGVyIGlzIGEgaGludCBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgZmlsZQotQEAgLTExNCw2ICsxMTYsOCBAQCBleHRlcm4gaW50IGVwb2xsX2N0bCAoaW50IF9fZXBmZCwgaW50IF9fb3AsIGludCBfX2ZkLAotIGV4dGVybiBpbnQgZXBvbGxfd2FpdCAoaW50IF9fZXBmZCwgc3RydWN0IGVwb2xsX2V2ZW50ICpfX2V2ZW50cywKLSAJCSAgICAgICBpbnQgX19tYXhldmVudHMsIGludCBfX3RpbWVvdXQpIF9fVEhST1c7Ci0gCi0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0gCi0gI2VuZGlmIC8qIHN5cy9lcG9sbC5oICovCi1kaWZmIC0tZ2l0IGEvdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oIGIvdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oCi1pbmRleCA1MWY1YmZiLi5jNjFhZWYzIDEwMDY0NAotLS0tIGEvdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oCi0rKysgYi91dGlscy9zY3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmgKLUBAIC0zNSw5ICszNSwxMiBAQAotIAotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSsjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSB0eXBlZGVmIF9fczMyIHNjdHBfYXNzb2NfdDsKLSAKLUBAIC04NjIsNiArODY1LDggQEAgaW50IHNjdHBfcmVjdm1zZyhpbnQgcywgdm9pZCAqbXNnLCBzaXplX3QgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sCi0gLyogUmV0dXJuIHRoZSBhZGRyZXNzIGxlbmd0aCBmb3IgYW4gYWRkcmVzcyBmYW1pbHkuICovCi0gaW50IHNjdHBfZ2V0YWRkcmxlbihzYV9mYW1pbHlfdCBmYW1pbHkpOwotIAotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotIAotICNlbmRpZiAvKiBfX2xpbnV4X3NjdHBfaF9fICovCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IDQ2Mjk3NmQuLjZjNWYzNjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaApAQCAtMTgsMTAgKzE4LDEwIEBACiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYyB8IDIgKysKICAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jCi0rKysgZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDEuYworaW5kZXggZDYzZDFlNC4uMjRjYTE3NCAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMKIEBAIC03NiwxMCArNzYsMTIgQEAKICAgKi8KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0zNiwxMCArMzYsMTAgQEAKICAKICAjaW5jbHVkZSAidGVzdC5oIgogICNpbmNsdWRlICJzYWZlX21hY3Jvcy5oIgotSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYwotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAyLmMKK2luZGV4IDVhNTFiOWEuLmE1MzBhNmIgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jCiBAQCAtNzUsOSArNzUsMTEgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC01MiwxMCArNTIsMTAgQEAKICAKICAjaW5jbHVkZSAidGVzdC5oIgogIAotSW5kZXg6IGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYwotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9tcmVtYXAvbXJlbWFwMDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAzLmMKK2luZGV4IDEyZTM4MjkuLjliMzlmOGIgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMy5jCiBAQCAtNzYsOSArNzYsMTEgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC02OCwzICs2OCw2IEBACiAgCiAgI2luY2x1ZGUgInRlc3QuaCIKICAKKy0tIAorMi43LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaAppbmRleCBjNzMwZDQ2Li40MGVlODk0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaApAQCAtMTEsMTQgKzExLDE0IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCi0gaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGluY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaCAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZSB8IDMgKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGdpdC9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKLSsrKyBnaXQvaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oIGIvaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oCitpbmRleCAxODIzNmRiLi4xNWZhY2RhIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9sYXBpL3J0X3NpZ2FjdGlvbi5oCisrKysgYi9pbmNsdWRlL2xhcGkvcnRfc2lnYWN0aW9uLmgKIEBAIC0zNiwxMiArMzYsMTIgQEAKICAjaWYgZGVmaW5lZChfX21pcHNfXykKICBzdHJ1Y3Qga2VybmVsX3NpZ2FjdGlvbiB7CkBAIC0zNCwxMCArMzQsMTAgQEAKICAJdW5zaWduZWQgbG9uZyBzYV9mbGFnczsKICAJdm9pZCAoKnNhX3Jlc3RvcmVyKSAodm9pZCk7CiAgCXNpZ3NldF90IHNhX21hc2s7Ci1JbmRleDogZ2l0L3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQotKysrIGdpdC90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUKK2luZGV4IDM3YmMzYTkuLjJjYTdmN2MgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnc3VzcGVuZC9NYWtlZmlsZQogQEAgLTE5LDQgKzE5LDcgQEAKICB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAppbmRleCAwNDUzMmJlLi5lODI2ZDQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaApAQCAtMjcsNyArMjcsNyBAQAogaW5kZXggYjhiNjdiNC4uN2M3YzUwNiAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMKICsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMKLUBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCB0ZXN0X2FjbF9kZWZhdWx0KGNoYXIgKmRpciwgYWNsX3QgYWNsKQorQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIHRlc3RfYWNsX2RlZmF1bHQoY2hhciAqZGlyLCBhY2xfdCBhY2wpCiAgCWNoYXIgKmNtZCA9IG1hbGxvYygyNTYpOwogIAogIAlzdHJjcHkoY21kLCAiY2htb2QgNzc3NyAiKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MC1yZWFkX2FsbC1EZWZpbmUtRk5NX0VYVE1BVENILWlmLW5vdC1hbHJlYWR5LWxpa2UtdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXJlYWRfYWxsLURlZmluZS1GTk1fRVhUTUFUQ0gtaWYtbm90LWFscmVhZHktbGlrZS11bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI0NWE4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MC1yZWFkX2FsbC1EZWZpbmUtRk5NX0VYVE1BVENILWlmLW5vdC1hbHJlYWR5LWxpa2UtdW5kLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gMjM1MTg1MDhkZTMwNzc5MDIzMWQxNmFmMzA3MjkxZjFiNDVlOTAzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9EYW5pZWw9MjBEPUMzPUFEYXo/PSA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KK0RhdGU6IFR1ZSwgNSBKdW4gMjAxOCAxNTozNjozMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSByZWFkX2FsbDogRGVmaW5lIEZOTV9FWFRNQVRDSCBpZiBub3QgYWxyZWFkeSAobGlrZSB1bmRlcgorIG11c2wpLgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitXaXRoIG11c2wsIEZOTV9FWFRNQVRDSCBpcyBub3QgZGVmaW5lZDoKK3wgcmVhZF9hbGwuYzogSW4gZnVuY3Rpb24gJ3JlYWRfdGVzdCc6Cit8IHJlYWRfYWxsLmM6MjAxOjQxOiBlcnJvcjogJ0ZOTV9FWFRNQVRDSCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ0ZOTV9OT01BVENIJz8KK3wgICBpZiAoZXhjbHVkZSAmJiAhZm5tYXRjaChleGNsdWRlLCBwYXRoLCBGTk1fRVhUTUFUQ0gpKSB7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk5NX05PTUFUQ0gKK3wgcmVhZF9hbGwuYzoyMDE6NDE6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCit8IDxidWlsdGluPjogcmVjaXBlIGZvciB0YXJnZXQgJ3JlYWRfYWxsJyBmYWlsZWQKK3wgbWFrZVs0XTogKioqIFtyZWFkX2FsbF0gRXJyb3IgMQorCitTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgRMOtYXogPGRhbmllbC5kaWF6QGxpbmFyby5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9mcy9yZWFkX2FsbC9yZWFkX2FsbC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9mcy9yZWFkX2FsbC9yZWFkX2FsbC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9mcy9yZWFkX2FsbC9yZWFkX2FsbC5jCitpbmRleCBhOGUxNjExLi5lOWZmNDdhIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9mcy9yZWFkX2FsbC9yZWFkX2FsbC5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL3JlYWRfYWxsL3JlYWRfYWxsLmMKK0BAIC01OSw2ICs1OSwxMCBAQAorICNkZWZpbmUgTUFYX1BBVEggNDA5NgorICNkZWZpbmUgTUFYX0RJU1BMQVkgNDAKKyAKKysjaWYgIWRlZmluZWQoRk5NX0VYVE1BVENIKQorKyNkZWZpbmUgRk5NX0VYVE1BVENIIDAKKysjZW5kaWYKKysKKyBzdHJ1Y3QgcXVldWUgeworIAlzZW1fdCBzZW07CisgCWludCBmcm9udDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQwLXNhZmVfbWFjcm9zLW1ha2UtaXNfZnVzZS1yZXR1cm4temVyby1pZi1mc190eXBlLWlzLU4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5NmE4NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDAtc2FmZV9tYWNyb3MtbWFrZS1pc19mdXNlLXJldHVybi16ZXJvLWlmLWZzX3R5cGUtaXMtTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNjdhZjdkYmU4YmRmMjlmOWVkOTgwZDhkMjlmZWVhZTMyYTBhN2ExZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExpIFdhbmcgPGxpd2FuZ0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAxNzo0NjozNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBzYWZlX21hY3JvczogbWFrZSBpc19mdXNlKCkgcmV0dXJuIHplcm8gaWYgZnNfdHlwZSBpcyBOVUxMCi0KLVRoaXMgY29tbW1pdCAyODUwN2U1MTRjKHNhZmVfbW91bnQ6IERvIG5vdCB0cnkgbW91bnQoKSBzeXNjYWxsIGZvciBGVVNFIGZzKQotaW52b2x2ZXMgRlVTRSBmcyBjaGVjayBpbiBzYWZlX21vdW50KCksIGJ1dCB3ZSdkIGJldHRlciBndWFyYW50ZWUgdGhlICJmc190eXBlIgotaXMgbGVnYWwgdG8gY2hlY2sgaW4gaXNfZnVzZSgpIGZ1bmN0aW9uIG90aGVyd2lzZSBzeXN0ZW0gd2lsbCBraWxsIHRoZSBwcm9ncmFtLgotCi0gIGNtZGxpbmU9ImZhbm90aWZ5MDYiCi0gIGNvbnRhY3RzPSIiCi0gIGFuYWx5c2lzPWV4aXQKLSAgPDw8dGVzdF9vdXRwdXQ+Pj4KLSAgdHN0X3Rlc3QuYzo5ODA6IElORk86IFRpbWVvdXQgcGVyIHJ1biBpcyAwaCAxMG0gMDBzCi0gIHRzdF90ZXN0LmM6MTAyNTogQlJPSzogVGVzdCBraWxsZWQgYnkgU0lHU0VHViEKLQotU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvNjdhZjdkYmU4YmRmMjlmOWVkOTgwZDhkMjlmZWVhZTMyYTBhN2ExZF0KLS0tLQotIGxpYi9zYWZlX21hY3Jvcy5jIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWIvc2FmZV9tYWNyb3MuYyBiL2xpYi9zYWZlX21hY3Jvcy5jCi1pbmRleCBjNDhlNDM2ZGMuLmFiZGVjYTAxMyAxMDA2NDQKLS0tLSBhL2xpYi9zYWZlX21hY3Jvcy5jCi0rKysgYi9saWIvc2FmZV9tYWNyb3MuYwotQEAgLTcwOCw2ICs3MDgsOSBAQCBzdGF0aWMgaW50IGlzX2Z1c2UoY29uc3QgY2hhciAqZnNfdHlwZSkKLSB7Ci0gCXVuc2lnbmVkIGludCBpOwotIAotKwlpZiAoIWZzX3R5cGUpCi0rCQlyZXR1cm4gMDsKLSsKLSAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZnVzZV9mc190eXBlcyk7IGkrKykgewotIAkJaWYgKCFzdHJjbXAoZnVzZV9mc190eXBlc1tpXSwgZnNfdHlwZSkpCi0gCQkJcmV0dXJuIDE7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDEtY3ZlLTIwMTctNTY2OS1zaG1hdC1mb3ItMC1vci1QQUdFU0laRS13aXRoLVJORC1mbGFnLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0MS1jdmUtMjAxNy01NjY5LXNobWF0LWZvci0wLW9yLVBBR0VTSVpFLXdpdGgtUk5ELWZsYWctLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMmQyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwNDEtY3ZlLTIwMTctNTY2OS1zaG1hdC1mb3ItMC1vci1QQUdFU0laRS13aXRoLVJORC1mbGFnLS5wYXRjaApAQCAtMCwwICsxLDk3IEBACitGcm9tIGI3NjdiNzNlZjAyN2JhOGQzNWYyOTdjN2QzNjU5MjY1YWM4MDQyNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYWZhZWwgRGF2aWQgVGlub2NvIDxyYWZhZWwudGlub2NvQGNhbm9uaWNhbC5jb20+CitEYXRlOiBXZWQsIDMwIE1heSAyMDE4IDA5OjE0OjM0IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGN2ZS0yMDE3LTU2Njk6IHNobWF0KCkgZm9yIDAgKG9yIDxQQUdFU0laRSB3aXRoIFJORCBmbGFnKSBoYXMKKyB0byBmYWlsIHdpdGggUkVNQVBzCisKK0ZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9pc3N1ZXMvMzE5CisKK0FjY29yZGluZyB0byB1cHN0cmVhbSB0aHJlYWQgKGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE4LzUvMjgvMjA1NiksCitjdmUtMjAxNy01NjY5IG5lZWRzIHRvIGFkZHJlc3MgdGhlICJuZXciIHdheSBvZiBoYW5kbGluZyBuaWwgYWRkcmVzc2VzCitmb3Igc2htYXQoKSB3aGVuIHVzZWQgd2l0aCBNQVBfRklYRUQgb3IgU0hNX1JFTUFQIGZsYWdzLgorCistIG1hcHBpbmcgbmlsLXBhZ2UgaXMgT0sgb24gbG93ZXIgYWRkcmVzc2VzIHdpdGggTUFQX0ZJWEVEIChvciBlbHNlIFgxMSBpcyBicm9rZW4pCistIG1hcHBpbmcgbmlsLXBhZ2UgaXMgTk9UIE9LIHdpdGggU0hNX1JFTUFQIG9uIGxvd2VyIGFkZHJlc3NlcworCitBZGRyZXNzZXMgRGF2aWRsb2hyIEJ1ZXNvJ3MgY29tbWVudHMvY2hhbmdlczoKKworY29tbWl0IDhmODljMDA3YjZkZQorQXV0aG9yOiBEYXZpZGxvaHIgQnVlc28gPGRhdmVAc3Rnb2xhYnMubmV0PgorRGF0ZTogICBGcmkgTWF5IDI1IDE0OjQ3OjMwIDIwMTggLTA3MDAKKworICAgIGlwYy9zaG06IGZpeCBzaG1hdCgpIG5pbCBhZGRyZXNzIGFmdGVyIHJvdW5kLWRvd24gd2hlbiByZW1hcHBpbmcKKworY29tbWl0IGE3M2FiMjQ0ZjBkYQorQXV0aG9yOiBEYXZpZGxvaHIgQnVlc28gPGRhdmVAc3Rnb2xhYnMubmV0PgorRGF0ZTogICBGcmkgTWF5IDI1IDE0OjQ3OjI3IDIwMTggLTA3MDAKKworICAgIFJldmVydCAiaXBjL3NobTogRml4IHNobWF0IG1tYXAgbmlsLXBhZ2UgcHJvdGVjdGlvbiIKKworRm9yIHByZXZpb3VzbHkgdGVzdCwgYW5kIG5vdyBicm9rZW4sIG1hZGUgYmFzZWQgb246CisKK2NvbW1pdCA5NWU5MWI4MzFmODcKK0F1dGhvcjogRGF2aWRsb2hyIEJ1ZXNvIDxkYXZlQHN0Z29sYWJzLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNDoyODoyNCAyMDE3IC0wODAwCisKKyAgICBpcGMvc2htOiBGaXggc2htYXQgbW1hcCBuaWwtcGFnZSBwcm90ZWN0aW9uCisKK1NpZ25lZC1vZmYtYnk6IFJhZmFlbCBEYXZpZCBUaW5vY28gPHJhZmFlbC50aW5vY29AbGluYXJvLm9yZz4KK1Rlc3RlZC1ieTogTmFyZXNoIEthbWJvanUgPG5hcmVzaC5rYW1ib2p1QGxpbmFyby5vcmc+CitSZXZpZXdlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL3B1bGwvMzI0XQorQ1ZFOiBDVkUtMjAxNy01NjY5CitTaWduZWQtb2ZmLWJ5OiBSYWZhZWwgRGF2aWQgVGlub2NvIDxyYWZhZWwudGlub2NvQGxpbmFyby5vcmc+CistLS0KKyB0ZXN0Y2FzZXMvY3ZlL2N2ZS0yMDE3LTU2NjkuYyB8IDIwICsrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctNTY2OS5jIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy01NjY5LmMKK2luZGV4IDFjYTU5ODMuLjA4MzQ2MjYgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvY3ZlL2N2ZS0yMDE3LTU2NjkuYworKysrIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy01NjY5LmMKK0BAIC0yOCw3ICsyOCwyMCBAQAorICAqIGlzIGp1c3QgdG8gc2VlIGlmIHdlIGdldCBhbiBhY2Nlc3MgZXJyb3Igb3Igc29tZSBvdGhlciB1bmV4cGVjdGVkIGJlaGF2aW91ci4KKyAgKgorICAqIFNlZSBjb21taXQgOTVlOTFiODMxZiAoaXBjL3NobTogRml4IHNobWF0IG1tYXAgbmlsLXBhZ2UgcHJvdGVjdGlvbikKKysgKgorKyAqIFRoZSBjb21taXQgYWJvdmUgZGlzYWxsb3dlZCBTSE1fUk5EIG1hcHMgdG8gemVybyAoYW5kIHJvdW5kZWQpIGVudGlyZWx5IGFuZAorKyAqIHRoYXQgYnJva2UgdXNlcmxhbmQgZm9yIGNhc2VzIGxpa2UgWG9yZy4gTmV3IGJlaGF2aW9yIGRpc2FsbG93cyBSRU1BUHMgdG8KKysgKiBsb3dlciBhZGRyZXNzZXMgKDA8PVBBR0VTSVpFKS4KKysgKgorKyAqIFNlZSBjb21taXQgYTczYWIyNDRmMGRhIChSZXZlcnQgImlwYy9zaG06IEZpeCBzaG1hdCBtbWFwIG5pbC1wYWdlIHByb3RlY3QuLi4pCisrICogU2VlIGNvbW1pdCA4Zjg5YzAwN2I2ZGUgKGlwYy9zaG06IGZpeCBzaG1hdCgpIG5pbCBhZGRyZXNzIGFmdGVyIHJvdW5kLWRvdy4uLikKKysgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvaXNzdWVzLzMxOQorKyAqCisrICogVGhpcyB0ZXN0IG5lZWRzIHJvb3QgcGVybWlzc2lvbnMgb3IgZWxzZSBzZWN1cml0eV9tbWFwX2FkZHIoKSwgZnJvbQorKyAqIGdldF91bm1hcHBlZF9hcmVhKCksIHdpbGwgY2F1c2UgcGVybWlzc2lvbiBlcnJvcnMgd2hlbiB0cnlpbmcgdG8gbW1hcCBsb3dlcgorKyAqIGFkZHJlc3Nlcy4KKyAgKi8KKysKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9pcGMuaD4KKyAjaW5jbHVkZSA8c3lzL3NobS5oPgorQEAgLTYwLDcgKzczLDExIEBAIHN0YXRpYyB2b2lkIGNsZWFudXAodm9pZCkKKyBzdGF0aWMgdm9pZCBydW4odm9pZCkKKyB7CisgCXRzdF9yZXMoVElORk8sICJBdHRlbXB0aW5nIHRvIGF0dGFjaCBzaGFyZWQgbWVtb3J5IHRvIG51bGwgcGFnZSIpOworLQlzaG1fYWRkciA9IHNobWF0KHNobV9pZCwgKCh2b2lkICopMSksIFNITV9STkQpOworKwkvKgorKwkgKiBzaG1hdCgpIGZvciAwIChvciA8IFBBR0VTSVpFIHdpdGggUk5EIGZsYWcpIGhhcyB0byBmYWlsIHdpdGggUkVNQVBzCisrCSAqIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2lzc3Vlcy8zMTkKKysJICovCisrCXNobV9hZGRyID0gc2htYXQoc2htX2lkLCAoKHZvaWQgKikxKSwgU0hNX1JORCB8IFNITV9SRU1BUCk7CisgCWlmIChzaG1fYWRkciA9PSAodm9pZCAqKS0xKSB7CisgCQlzaG1fYWRkciA9IE5VTEw7CisgCQlpZiAoZXJybm8gPT0gRUlOVkFMKSB7CitAQCAtODksNiArMTA2LDcgQEAgc3RhdGljIHZvaWQgcnVuKHZvaWQpCisgfQorIAorIHN0YXRpYyBzdHJ1Y3QgdHN0X3Rlc3QgdGVzdCA9IHsKKysJLm5lZWRzX3Jvb3QgPSAxLAorIAkuc2V0dXAgPSBzZXR1cCwKKyAJLmNsZWFudXAgPSBjbGVhbnVwLAorIAkudGVzdF9hbGwgPSBydW4sCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0Mi1mcy1mdGVzdC1mdGVzdDA2LmMtRml4LXRvby1zbWFsbC1uYW1lLXN0cmluZy1hbmQtcmVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQyLWZzLWZ0ZXN0LWZ0ZXN0MDYuYy1GaXgtdG9vLXNtYWxsLW5hbWUtc3RyaW5nLWFuZC1yZWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA3ZDk4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0Mi1mcy1mdGVzdC1mdGVzdDA2LmMtRml4LXRvby1zbWFsbC1uYW1lLXN0cmluZy1hbmQtcmVsLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gYmFlZWYwMjZmODBlMTlhNjM0YTQwOTZlOTcyODY0MTlhY2ExY2Y2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEF1ZyAyMDE4IDAwOjIyOjA0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZzL2Z0ZXN0L2Z0ZXN0MDYuYzogRml4IHRvbyBzbWFsbCBuYW1lIHN0cmluZyBhbmQgcmVsYXRlZAorIGZhaWx1cmUKKworVGhlIG5hbWUgc3RyaW5nIGlzIHRvbyBzbWFsbCB0byBjb250YWluIG5vcm1hbCBmdWxsIHBhdGggbmFtZXMgYW5kIGNhdXNlcwordGhlIGZvbGxvd2luZyBmYWlsdXJlLgorCisiZnRlc3QwNiAgICAgMiAgVEZBSUwgIDogIGZ0ZXN0MDYuYzoyMjM6IENhbid0IGNoZGlyKCk6IGVycm5vPUVOT0VOVCgyKTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2x0cC1saXN0QGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0KKworU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvZnMvZnRlc3QvZnRlc3QwNi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9mcy9mdGVzdC9mdGVzdDA2LmMgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL2Z0ZXN0L2Z0ZXN0MDYuYworaW5kZXggMmNhN2M4OC4uYjQzNDA2NyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvZnMvZnRlc3QvZnRlc3QwNi5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL2ZzL2Z0ZXN0L2Z0ZXN0MDYuYworQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgY2hhciAqZnN0eXA7CisgaW50IG1haW4oaW50IGFjLCBjaGFyICphdltdKQorIHsKKyAJaW50IHBpZCwgY2hpbGQsIHN0YXR1cywgY291bnQsIGssIGo7CistCWNoYXIgbmFtZVszXTsKKysJY2hhciBuYW1lW01BWFBBVEhMRU5dOworIAorIAlpbnQgbGM7CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0My1vcGVuLWNyZWF0LXNraXAtU19JU0dJRC1jaGVjay1vbi1maWxlcy1jcmVhdGVkLWJ5LW5vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDQzLW9wZW4tY3JlYXQtc2tpcC1TX0lTR0lELWNoZWNrLW9uLWZpbGVzLWNyZWF0ZWQtYnktbm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM2MWZjYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDA0My1vcGVuLWNyZWF0LXNraXAtU19JU0dJRC1jaGVjay1vbi1maWxlcy1jcmVhdGVkLWJ5LW5vLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gM2M4N2VmMjk2MWRlZGIxMGQxZjY3NGM2YTUzMGUwMGRiYWI4ZWMxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAxNyBKdWwgMjAxOCAxMDoyNjozOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBvcGVufGNyZWF0OiBza2lwIFNfSVNHSUQgY2hlY2sgb24gZmlsZXMgY3JlYXRlZCBieSBub24tZ3JvdXAKKyBtZW1iZXJzCisKKzBmYTNlY2Q4Nzg0OCAoIkZpeCB1cCBub24tZGlyZWN0b3J5IGNyZWF0aW9uIGluIFNHSUQgZGlyZWN0b3JpZXMiKQorZml4ZXMgcHJvYmxlbSBkZXNjcmliZWQgaW4gQ1ZFLTIwMTgtMTM0MDUuIFRoaXMgY29tbWl0IGlzIGdldHRpbmcKK2JhY2twb3J0ZWQgdG8gb2xkZXIgc3RyZWFtcyBhcyB3ZWxsLgorCitUaGlzIHBhdGNoIHJlbW92ZXMgU19JU0dJRCBjaGVjayBmb3IgZmlsZXMgY3JlYXRlZCBieSBub24tZ3JvdXAgbWVtYmVycworaW4gTFRQIHRlc3RzIGNyZWF0MDggYW5kIG9wZW4xMC4KKworT25jZSAwZmEzZWNkODc4NDggd2lsbCBiZSBpbiBub24tcmMga2VybmVsLCB3ZSBjb3VsZCBhZGQgYSBuZXcgdGVzdAorZm9yIHRoaXMgQ1ZFIHRoYXQgd291bGQgYmUgbGltaXRlZCB0byA0LjE4KyBrZXJuZWxzLgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KK0Fja2VkLWJ5OiBDeXJpbCBIcnViaXMgPGNocnViaXNAc3VzZS5jej4KK1Jldmlld2VkLWJ5OiBOYXJlc2ggS2FtYm9qdSA8bmFyZXNoLmthbWJvanVAbGluYXJvLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorWyBnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0CisgIDNjODdlZjI5NjFkZWRiMTBkMWY2NzRjNmE1MzBlMDBkYmFiOGVjMWIKKyAgIm9wZW58Y3JlYXQ6IHNraXAgU19JU0dJRCBjaGVjayBvbiBmaWxlcyBjcmVhdGVkIGJ5IG5vbi1ncm91cCBtZW1iZXJzIiBdCisKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2NyZWF0L2NyZWF0MDguYyB8IDEzICsrKysrKy0tLS0tLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL29wZW4vb3BlbjEwLmMgICB8IDEyICsrKysrLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2NyZWF0L2NyZWF0MDguYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvY3JlYXQvY3JlYXQwOC5jCitpbmRleCA1MGYyYjM5OTMuLmQyMjU1OGFjMyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvY3JlYXQvY3JlYXQwOC5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2NyZWF0L2NyZWF0MDguYworQEAgLTM2MSwxMyArMzYxLDEyIEBAIGludCBtYWluKGludCBhYywgY2hhciAqKmF2KQorIAkJCWxvY2FsX2ZsYWcgPSBGQUlMRUQ7CisgCQl9CisgCistCQkvKiBWZXJpZnkgbW9kZXMgKi8KKy0JCWlmICghKGJ1Zi5zdF9tb2RlICYgU19JU0dJRCkpIHsKKy0JCQl0c3RfcmVzbShURkFJTCwKKy0JCQkJICIlczogSW5jb3JyZWN0IG1vZGVzLCBzZXRnaWQgYml0IHNob3VsZCBiZSBzZXQiLAorLQkJCQkgc2V0Z2lkX0IpOworLQkJCWxvY2FsX2ZsYWcgPSBGQUlMRUQ7CistCQl9CisrCQkvKgorKwkJICogU2tpcCBTX0lTR0lEIGNoZWNrCisrCQkgKiAwZmEzZWNkODc4NDggKCJGaXggdXAgbm9uLWRpcmVjdG9yeSBjcmVhdGlvbiBpbiBTR0lEIGRpcmVjdG9yaWVzIikKKysJCSAqIGNsZWFycyBTX0lTR0lEIGZvciBmaWxlcyBjcmVhdGVkIGJ5IG5vbi1ncm91cCBtZW1iZXJzCisrCQkgKi8KKysKKyAJCWNsb3NlKGZkKTsKKyAKKyAJCWlmIChsb2NhbF9mbGFnID09IFBBU1NFRCkgeworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvb3Blbi9vcGVuMTAuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvb3Blbi9vcGVuMTAuYworaW5kZXggNjEzZjIyODhmLi4xNGZlZWM5ZTEgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL29wZW4vb3BlbjEwLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvb3Blbi9vcGVuMTAuYworQEAgLTM0NSwxMyArMzQ1LDExIEBAIGludCBtYWluKGludCBhYywgY2hhciAqYXZbXSkKKyAJCQlsb2NhbF9mbGFnID0gRkFJTEVEOworIAkJfQorIAorLQkJLyogVmVyaWZ5IG1vZGVzICovCistCQlpZiAoIShidWYuc3RfbW9kZSAmIFNfSVNHSUQpKSB7CistCQkJdHN0X3Jlc20oVEZBSUwsCistCQkJCSAiJXM6IEluY29ycmVjdCBtb2Rlcywgc2V0Z2lkIGJpdCBub3Qgc2V0IiwKKy0JCQkJIHNldGdpZF9CKTsKKy0JCQlsb2NhbF9mbGFnID0gRkFJTEVEOworLQkJfQorKwkJLyoKKysJCSAqIFNraXAgU19JU0dJRCBjaGVjaworKwkJICogMGZhM2VjZDg3ODQ4ICgiRml4IHVwIG5vbi1kaXJlY3RvcnkgY3JlYXRpb24gaW4gU0dJRCBkaXJlY3RvcmllcyIpCisrCQkgKiBjbGVhcnMgU19JU0dJRCBmb3IgZmlsZXMgY3JlYXRlZCBieSBub24tZ3JvdXAgbWVtYmVycworKwkJICovCisgCisgCQlpZiAobG9jYWxfZmxhZyA9PSBQQVNTRUQpIHsKKyAJCQl0c3RfcmVzbShUUEFTUywgIlRlc3QgcGFzc2VkIGluIGJsb2NrMi4iKTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTgwMTE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzU0ZmNkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODAxMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0cC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3Rvb2xzL3BvdW5kZXIyMS9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLUNGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLUNGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgotU1JDUkVWID0gIjczMWNkMzRlNjgyZDI5N2IyMDc2NjhiZThiMWQxNTMyMGE5YWMxYjEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hZGQta25vYi10by1jb250cm9sLW51bWEtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1GaXgtZGVmYXVsdC12YWx1ZS1vZi13aXRob3V0LW51bWEtc3dpdGNoLWkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MC1zYWZlX21hY3Jvcy1tYWtlLWlzX2Z1c2UtcmV0dXJuLXplcm8taWYtZnNfdHlwZS1pcy1OLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgotIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAotCi0gICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KLSAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCi0gICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAotICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKLSAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgotICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKLSAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAotCi0gICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAotICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBhY2wgXAotICAgIGF0IFwKLSAgICBhdHRyIFwKLSAgICBiYXNoIFwKLSAgICBjcGlvIFwKLSAgICBjcm9uaWUgXAotICAgIGN1cmwgXAotICAgIGUyZnNwcm9ncy1ta2UyZnMgXAotICAgIGV4cGVjdCBcCi0gICAgZ2F3ayBcCi0gICAgZ3ppcCBcCi0gICAgaXByb3V0ZTIgXAotICAgIGxkZCBcCi0gICAgbGliYWlvIFwKLSAgICBsb2dyb3RhdGUgXAotICAgIHBlcmwgXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBwcm9jcHMgXAotICAgIHVuemlwIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB3aGljaCBcCi0gICAgdGFyIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hIC9vcHQvbHRwL2xpYi9saWJtZW0uYSIKLQotIyBBdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlsCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ubTAxIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vbGRkMDEiCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCi0KLSMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAotIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKLSMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0Ci0jIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQotU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE4MDUxNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODA1MTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4NWJlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxODA1MTUuYmIKQEAgLTAsMCArMSwxMjcgQEAKK1NVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdHAuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvcnVuX2ZyZWV6ZXIuc2g7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ODZhNjFkMmMwNDJkNTk4MzZmZmIzNTNhMjE0NTY0OTggXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvbWVtb3J5X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvY3B1X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvQ09QWUlORzttZDU9NDhiMWM1ZWM2MzNlM2UzMGVjMmNmODg0YWU2OTk5NDcgXAorICAgIGZpbGU6Ly90ZXN0Y2FzZXMvcmVhbHRpbWUvQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAorICAgIGZpbGU6Ly90b29scy9wb3VuZGVyMjEvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgIGZpbGU6Ly91dGlscy9iZW5jaG1hcmsva2VybmJlbmNoLTAuNDIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgIGZpbGU6Ly91dGlscy9mZnNiLTYuMC1yYzIvQ09QWUlORzttZDU9YzQ2MDgyMTY3YTMxNGQ3ODVkMDEyYTI0NDc0OGQ4MDMgXAorIgorCitERVBFTkRTID0gImF0dHIgbGliYWlvIGxpYmNhcCBhY2wgb3BlbnNzbCB6aXAtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQkM9bXVzbCAiCisKKyMgc2luY2UgbHRwIGNvbnRhaW5zIHg4Ni02NCBhc3NlbWJsZXIgd2hpY2ggdXNlcyB0aGUgZnJhbWUtcG9pbnRlciByZWdpc3RlciwKKyMgc2V0IC1mb21pdC1mcmFtZS1wb2ludGVyIHg4Ni02NCB0byBoYW5kbGUgY2FzZXMgd2hlcmUgb3B0aW1pc2F0aW9uCisjIGlzIHNldCB0byAtTzAgb3IgZnJhbWUgcG9pbnRlcnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKKyMgZWFybGllciBpbiBDRkxBR1MsIGV0Yy4KK0NGTEFHU19hcHBlbmRfeDg2LTY0ID0gIiAtZm9taXQtZnJhbWUtcG9pbnRlciIKKworQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitTUkNSRVYgPSAiOTZjYmY0ODMxM2FmYTY1ZWY0ZDY5M2QzNDQxY2JmZDYwYThkOWIyNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbW1hcDE1LW1pcHM2NC1yZXR1cm4tRUlOVkFMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1maXgtdGVzdF9wcm9jX2tpbGwtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM2LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOS1jb21tYW5kcy1hcjAxLUZpeC1mb3ItdGVzdC1pbi1kZXRlcm1pbmlzdGljLW1vZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1yZWFkX2FsbC1EZWZpbmUtRk5NX0VYVE1BVENILWlmLW5vdC1hbHJlYWR5LWxpa2UtdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDEtY3ZlLTIwMTctNTY2OS1zaG1hdC1mb3ItMC1vci1QQUdFU0laRS13aXRoLVJORC1mbGFnLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQyLWZzLWZ0ZXN0LWZ0ZXN0MDYuYy1GaXgtdG9vLXNtYWxsLW5hbWUtc3RyaW5nLWFuZC1yZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0My1vcGVuLWNyZWF0LXNraXAtU19JU0dJRC1jaGVjay1vbi1maWxlcy1jcmVhdGVkLWJ5LW5vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbHMtZmNudGwtbWFrZS1PRkQtY29tbWFuZC11c2UtZmNudGw2NC1zeXNjYWxsLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpZ3dhaXRpbmZvMDEtcmVjZW50LWdsaWJjLWNhbGxzLXN5c2NhbGwtZGlyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uZXRuc19oZWxwZXIuc2gtdXNlLXBpbmctNi13aGVuLXBpbmc2LWlzLW5vdC1hdmFsaWFiLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3Blbl9wb3NpeF90ZXN0c3VpdGUtbW1hcDI0LTItUmVsYXgtY29uZGl0aW9uLWEtYml0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2V4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCitleHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgorIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAorCisgICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KKyAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCisgICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAorICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKKyAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgorICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKKyAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAorCisgICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAorICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBhY2wgXAorICAgIGF0IFwKKyAgICBhdHRyIFwKKyAgICBiYXNoIFwKKyAgICBjcGlvIFwKKyAgICBjcm9uaWUgXAorICAgIGN1cmwgXAorICAgIGUyZnNwcm9ncy1ta2UyZnMgXAorICAgIGV4cGVjdCBcCisgICAgZ2F3ayBcCisgICAgZ3ppcCBcCisgICAgaXByb3V0ZTIgXAorICAgIGxkZCBcCisgICAgbGliYWlvIFwKKyAgICBsb2dyb3RhdGUgXAorICAgIHBlcmwgXAorICAgIHB5dGhvbi1jb3JlIFwKKyAgICBwcm9jcHMgXAorICAgIHVuemlwIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB3aGljaCBcCisgICAgdGFyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hIC9vcHQvbHRwL2xpYi9saWJtZW0uYSIKKworIyBBdm9pZCBzdHJpcHBpbmcgc29tZSBnZW5lcmF0ZWQgYmluYXJpZXMgb3RoZXJ3aXNlIHNvbWUgb2YgdGhlIGx0cCB0ZXN0cyBzdWNoIGFzIGxkZDAxICYgbm0wMSBmYWlsCitJTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9ubTAxIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vbGRkMDEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCisKKyMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAorIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKKyMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0CisjIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQorU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5YjM2NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiTG9zc2xlc3MgZGF0YSBjb21wcmVzc29yIGJhc2VkIG9uIHRoZSBMWk1BIGFsZ29yaXRobSIKLUhPTUVQQUdFID0gImh0dHA6Ly9semlwLm5vbmdudS5vcmcvbHppcC5odG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kZWNvZGVyLmNjO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PWRiMDlmZTNmOTU3M2Y5NGQwMDc2ZjdmMDc5NTllNmUxIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbHppcC9semlwLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkZDg3OTBkNzUyODQ0MGQwMzRmYzcxM2E4NjgwYmQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmYWRjNGY1NmJlMWJjMGQzYWUxNTVlYzQ1MjdiZDAwMzEzM2JkYzcwM2E3NTNiMmNjNjgzZjYxMGU2NDZiYTkiCi0KLUNPTkZJR1VSRU9QVFMgPSAiXAotICAgICctLXNyY2Rpcj0ke1N9JyBcCi0gICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAotICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCi0gICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAotICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAotICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAotICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAotICAgICdDWFg9JHtDWFh9JyBcCi0gICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCi0gICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCi0gICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAotIgotRVhUUkFfT0VNQUtFID0gIiIKLQotQiA9ICIke1N9L29iaiIKLWRvX2NvbmZpZ3VyZSAoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLSAgICAjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotICAgIGlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotICAgICAgICBybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLSAgICBmaQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZmMyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4yMC5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3NvciBiYXNlZCBvbiB0aGUgTFpNQSBhbGdvcml0aG0iCitIT01FUEFHRSA9ICJodHRwOi8vbHppcC5ub25nbnUub3JnL2x6aXAuaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzZkNmUzMDBmZmQ4ZmI5ZDE4YmQ5YjEzNmE5YmJhMTMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVjb2Rlci5jYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT1kYjA5ZmUzZjk1NzNmOTRkMDA3NmY3ZjA3OTU5ZTZlMSIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2x6aXAvbHppcC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMWMxNTE3ZGEyYWNlOTY4OWZkOTUzOTE4NjYwYjNjMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTNiODFhNWE3Nzg4ZWY1ODEyNDIzZDMxMTM0NWJhNWQzYmQ0ZjVlYmYxZjY5MzkxMWUzYTEzNTUzYzEyOTBjIgorCitDT05GSUdVUkVPUFRTID0gIlwKKyAgICAnLS1zcmNkaXI9JHtTfScgXAorICAgICctLXByZWZpeD0ke3ByZWZpeH0nIFwKKyAgICAnLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fScgXAorICAgICctLWJpbmRpcj0ke2JpbmRpcn0nIFwKKyAgICAnLS1kYXRhZGlyPSR7ZGF0YWRpcn0nIFwKKyAgICAnLS1pbmZvZGlyPSR7aW5mb2Rpcn0nIFwKKyAgICAnLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKKyAgICAnQ1hYPSR7Q1hYfScgXAorICAgICdDUFBGTEFHUz0ke0NQUEZMQUdTfScgXAorICAgICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgXAorICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKKyIKK0VYVFJBX09FTUFLRSA9ICIiCisKK0IgPSAiJHtTfS9vYmoiCitkb19jb25maWd1cmUgKCkgeworICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisgICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KKyAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCisgICAgZmkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL2ZpbGVzLzk5X21hbmRiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL2ZpbGVzLzk5X21hbmRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOGExNzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvZmlsZXMvOTlfbWFuZGIKQEAgLTAsMCArMSBAQAorZCBtYW4gbWFuIDA3NTUgL3Zhci9jYWNoZS9tYW4gbm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL2ZpbGVzL21hbl9kYi5jb25mLWF2b2lkLW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9maWxlcy9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyNzNkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9maWxlcy9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorVGhlIGZpcnN0IGxpbmUgb2YgbWFuX2RiLmNvbmYgd2lsbCBiZSByZXBsYWNlZCBieSBwYWNrYWdlIG5hbWUuIEFuZCBpdCBjYXVzZXMKK211bHRpbGliIGluc3RhbGwgZmlsZSBjb25mbGljdC4gUmVtb3ZlIHRoZSBsaW5lIHRvIGF2b2lkIHRoZSBpc3N1ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvc3JjL21hbl9kYi5jb25mLmluIGIvc3JjL21hbl9kYi5jb25mLmluCitpbmRleCBiYzhiYjdlLi4wNGNmYjMxIDEwMDY0NAorLS0tIGEvc3JjL21hbl9kYi5jb25mLmluCisrKysgYi9zcmMvbWFuX2RiLmNvbmYuaW4KK0BAIC0xLDQgKzEsMyBAQAorLSMgQGNvbmZpZ19maWxlX2Jhc2VuYW1lQAorICMKKyAjIFRoaXMgZmlsZSBpcyB1c2VkIGJ5IHRoZSBtYW4tZGIgcGFja2FnZSB0byBjb25maWd1cmUgdGhlIG1hbiBhbmQgY2F0IHBhdGhzLgorICMgSXQgaXMgYWxzbyB1c2VkIHRvIHByb3ZpZGUgYSBtYW5wYXRoIGZvciB0aG9zZSB3aXRob3V0IG9uZSBieSBleGFtaW5pbmcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzI4YTY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBVbml4IGRvY3VtZW50YXRpb24gc3lzdGVtIGFjY2Vzc2VkIHVzaW5nIHRoZSBtYW4gY29tbWFuZCIKLUhPTUVQQUdFID0gImh0dHA6Ly9tYW4tZGIubm9uZ251Lm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vbWFuLWRiL21hbi1kYi0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTE4NDI5NzhlMDY2ODYyODY0MjFmOTQ5OGQxMDA5YjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTZhZWM2NDFjYTNkOTk0MmIwNTRjYzBlOWMzZjA1Y2I0NmEzYTk5MmJjMDAwNjc5NTc1NWUyZmVkMTM1N2YzZSIKLQotREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSIKLQotIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKLVVTRV9OTFNfbGliYy1tdXNsID0gIm5vIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scwotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MgLS1kaXNhYmxlLWNhY2hlLW93bmVyIgotCi1kb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2woKSB7Ci0gICAgICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtwcmVmaXh9L2xpYi90bXBmaWxlcy5kIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9tYW4tZGIvbGlibWFuLnNvICR7bGliZGlyfS8ke0JQTn0vbGlibWFuZGIuc28iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJncm9mZiIKLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJsZXNzIgotUlBST1ZJREVTXyR7UE59ICs9ICIgbWFuIgotCi1kZWYgY29tcHJlc3NfcGtnKGQpOgotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCJJTkhFUklUIiwgImNvbXByZXNzX2RvYyIsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCi0gICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgotICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKLSAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKLSAgICAgICAgICAgICByZXR1cm4gInh6IgotICAgIHJldHVybiAiIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOGQyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC4zLmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgorSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiNmYzMDU1ZTE4ZmRkMWNlNWNiYmRiMzA0MDM5OTFlYzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkzMmExY2EzNjZlMWVjNjFhM2VjZTFhM2FmYTBlOTJmMmZkYzEyNWI2MWQyMzZmMjBjYzZmZjlkODBjYzRhYyIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scworCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXBhZ2VyPWxlc3MiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCitSUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGJkMDkwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTc5NGY3MDE2MTdjYzAzZmU1MGM1MzI1NzY2MGQ4ZWM0IgotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODJiZDJkMDVjNGQwZGJhNWU3YTkwZDM5Yzk1NTUxOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVlYmM2YjA5YTExZTdmN2JiYzk4ZjM5ODRmZThiOGIyYmRlOWQyZjVmOWRjYmQ0MzQ4YTllMGQ5MzcwNDIzOCIKLQotUkRFUEVORFNfJHtQTn0gPSAibWFuIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLXBhZ2VzL21hbi1wYWdlc180LjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NDU4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTYuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9Nzk0ZjcwMTYxN2NjMDNmZTUwYzUzMjU3NjYwZDhlYzQiCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMWZiOGJhMzEyYTFjMTVlMGJmZGE5MTFhOThjNTU0NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzhiMDQ2MGJmM2YzNWM5NWZhZjdmOGNmNTJkYWMxMjE2ZDg2YTQ3ODY2ZjVlNWYyZmRhODhjNjFkYTA0OTYwIgorCitpbmhlcml0IG1hbnBhZ2VzCisKK01BTl9QS0cgPSAiJHtQTn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZDFiNWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2ZjN2FhNjEzYzYyMjkxYTBmNzFmNmI2OThkODI2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDg1ZGFhYTZhYjI2ZTUyNDk0NmRmNDgyM2FjMmY2OTgwMmJjMTZiYzk2Nzc4MWI1ZTI4ZDViODZmYzNiOTc5IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jCi0jIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCi0jCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotICAgICAgICAKLSAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKLX0KLQotUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKLQotU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgotRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2YTQ1MDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjEuYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJNaWRuaWdodCBDb21tYW5kZXIgaXMgYW4gbmN1cnNlcyBiYXNlZCBmaWxlIG1hbmFnZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3MGJiYWZlMzYwZTczZjk4NDBiZDc5ODE2MjFmOWMyIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorREVQRU5EUyA9ICJuY3Vyc2VzIGdsaWItMi4wIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2M2QyYjkwZTIxOThlZTc5ZDA4ZWI0YTg5ODkyMjBlMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTFkOWYwZWY5MzA5ZWYzZWVhMGZkYzRjMTJiOGI2MTE0OWU1MDU2YmVmMWIyZGUyY2NjN2YwMTVkOTczNDQ0IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCisjCisjIEJvdGggU2FtYmEgKHNtYikgYW5kIHNmdHAgcmVxdWlyZSBwYWNrYWdlIGRlbGl2ZXJlZCBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkCisjCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tzbWJdID0gIi0tZW5hYmxlLXZmcy1zbWIsLS1kaXNhYmxlLXZmcy1zbWIsc2FtYmEsIgorUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS12ZnMtc2Z0cCwtLWRpc2FibGUtdmZzLXNmdHAsbGlic3NoMiwiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc2NyZWVuPW5jdXJzZXMgLS13aXRob3V0LWdwbS1tb3VzZSAtLXdpdGhvdXQteCIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISR7YmluZGlyfS9lbnYgcGVybCwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgorICAgICAgICAKKyAgICAgICAgcm0gJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91YzE1NDEKK30KKworUEFDS0FHRVMgPSsgIiR7QlBOfS1oZWxwZXJzLXBlcmwgJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgorUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgorCitTVU1NQVJZXyR7QlBOfS1oZWxwZXJzID0gIk1pZG5pZ2h0IENvbW1hbmRlciBzaGVsbCBoZWxwZXIgc2NyaXB0cyIKK0ZJTEVTXyR7QlBOfS1oZWxwZXJzID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qICR7bGliZXhlY2Rpcn0vbWMvZXh0LmQvKiIKKworU1VNTUFSWV8ke0JQTn0tZmlzaCA9ICJNaWRuaWdodCBDb21tYW5kZXIgRmlzaCBzY3JpcHRzIgorRklMRVNfJHtCUE59LWZpc2ggPSAiJHtsaWJleGVjZGlyfS9tYy9maXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1EaXNhYmxlLWdjYzgtd2FybmluZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLURpc2FibGUtZ2NjOC13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzk2NTJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1EaXNhYmxlLWdjYzgtd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxNTIgQEAKK0Zyb20gYjgzMjE4ZGUyNjIzYzBiYmU5YWYzNTVhODFhZTgzODVkN2YzMGNmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDkgTWF5IDIwMTggMTI6NTY6NDEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBnY2M4IHdhcm5pbmdzCisKK1RoaXMgaXMgbmVlZGVkIHVudGlsCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1NTM5NTgKKworRml4IHN1cGVyMC5jIGlzc3VlIHdoaWNoIGlzIHRyaWdnZXJlZCBvbmx5IGluIERFQlVHX0JVSUxEIHdpdGggLU8xIChvciBhbnkKK2NvbmZpZ3VyYXRpb24gd2l0aG91dCAtZnRyZWUtdnJwIG9yIHdpdGggLWZuby10cmVlLXZycCkKKworc3VwZXIwLmM6IEluIGZ1bmN0aW9uICdleGFtaW5lX3N1cGVyMCc6CitzdXBlcjAuYzoyMzg6MzI6IGVycm9yOiAnc25wcmludGYnIG91dHB1dCBtYXkgYmUgdHJ1bmNhdGVkIGJlZm9yZSB0aGUgbGFzdCBmb3JtYXQgY2hhcmFjdGVyIFstV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uPV0KKyAgIHNucHJpbnRmKG5iLCBzaXplb2YobmIpLCAiJTRkIiwgZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtXb3JrYXJvdW5kXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyBNb25pdG9yLmMgICAgIHwgNCArKystCisgbWRvcGVuLmMgICAgICB8IDQgKysrKworIHN1cGVyLWRkZi5jICAgfCA0ICsrKysKKyBzdXBlci1pbnRlbC5jIHwgNiArKysrKysKKyBzdXBlcjEuYyAgICAgIHwgNSArKysrKworIHN1cGVyMC5jICAgICAgfCAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zdXBlcjAuYyBiL3N1cGVyMC5jCitpbmRleCBmNWI0NTA3Li4yNjRiNTk4IDEwMDY0NAorLS0tIGEvc3VwZXIwLmMKKysrKyBiL3N1cGVyMC5jCitAQCAtMjMxLDcgKzIzMSw3IEBACisgCSAgICAgZCsrKSB7CisgCQltZHBfZGlza190ICpkcDsKKyAJCWNoYXIgKmR2OworLQkJY2hhciBuYlsxMV07CisrCQljaGFyIG5iWzEyXTsKKyAJCWludCB3b25seSwgZmFpbGZhc3Q7CisgCQlpZiAoZD49MCkgZHAgPSAmc2ItPmRpc2tzW2RdOworIAkJZWxzZSBkcCA9ICZzYi0+dGhpc19kaXNrOworZGlmZiAtLWdpdCBhL01vbml0b3IuYyBiL01vbml0b3IuYworaW5kZXggODAyYTlkOS4uMjNiMjQ2YiAxMDA2NDQKKy0tLSBhL01vbml0b3IuYworKysrIGIvTW9uaXRvci5jCitAQCAtNDQxLDcgKzQ0MSw4IEBAIHN0YXRpYyB2b2lkIGFsZXJ0KGNoYXIgKmV2ZW50LCBjaGFyICpkZXYsIGNoYXIgKmRpc2MsIHN0cnVjdCBhbGVydF9pbmZvICppbmZvKQorIAkJCSAgICAgICBldmVudCwgZGV2KTsKKyAJfQorIH0KKy0KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LXRydW5jYXRpb24iCisgc3RhdGljIGludCBjaGVja19hcnJheShzdHJ1Y3Qgc3RhdGUgKnN0LCBzdHJ1Y3QgbWRzdGF0X2VudCAqbWRzdGF0LAorIAkJICAgICAgIGludCB0ZXN0LCBzdHJ1Y3QgYWxlcnRfaW5mbyAqYWluZm8sCisgCQkgICAgICAgaW50IGluY3JlbWVudHMsIGNoYXIgKnByZWZlcikKK0BAIC02ODMsNiArNjg0LDcgQEAgc3RhdGljIGludCBjaGVja19hcnJheShzdHJ1Y3Qgc3RhdGUgKnN0LCBzdHJ1Y3QgbWRzdGF0X2VudCAqbWRzdGF0LAorIAkJcmV0dXJuIDE7CisgCXJldHVybiAwOworIH0KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorIAorIHN0YXRpYyBpbnQgYWRkX25ld19hcnJheXMoc3RydWN0IG1kc3RhdF9lbnQgKm1kc3RhdCwgc3RydWN0IHN0YXRlICoqc3RhdGVsaXN0LAorIAkJCSAgaW50IHRlc3QsIHN0cnVjdCBhbGVydF9pbmZvICppbmZvKQorZGlmZiAtLWdpdCBhL21kb3Blbi5jIGIvbWRvcGVuLmMKK2luZGV4IDY4NWNhMzIuLjQwNmFiYTQgMTAwNjQ0CistLS0gYS9tZG9wZW4uYworKysrIGIvbWRvcGVuLmMKK0BAIC0yNiw2ICsyNiw5IEBACisgI2luY2x1ZGUgIm1kX3AuaCIKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LXRydW5jYXRpb24iCisrCisgdm9pZCBtYWtlX3BhcnRzKGNoYXIgKmRldiwgaW50IGNudCkKKyB7CisgCS8qIG1ha2UgJ2NudCcgcGFydGl0aW9uIGRldmljZXMgZm9yICdkZXYnCitAQCAtOTksNiArMTAyLDcgQEAgdm9pZCBtYWtlX3BhcnRzKGNoYXIgKmRldiwgaW50IGNudCkKKyAJfQorIAlmcmVlKG5hbWUpOworIH0KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorIAorIC8qCisgICogV2UgbmVlZCBhIG5ldyBtZCBkZXZpY2UgdG8gYXNzZW1ibGUvYnVpbGQvY3JlYXRlIGFuIGFycmF5LgorZGlmZiAtLWdpdCBhL3N1cGVyLWRkZi5jIGIvc3VwZXItZGRmLmMKK2luZGV4IDE3MDdhZDEuLmUwOGQyODkgMTAwNjQ0CistLS0gYS9zdXBlci1kZGYuYworKysrIGIvc3VwZXItZGRmLmMKK0BAIC0yODQ2LDYgKzI4NDYsOSBAQCBzdGF0aWMgdm9pZCBfc2V0X2NvbmZpZ19zaXplKHN0cnVjdCBwaHlzX2Rpc2tfZW50cnkgKnBkZSwgY29uc3Qgc3RydWN0IGRsICpkbCkKKyAJCSh1bnNpZ25lZCBsb25nIGxvbmcpY2ZzLCAodW5zaWduZWQgbG9uZyBsb25nKShkbC0+c2l6ZS1jZnMpKTsKKyB9CisgCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1vdmVyZmxvdyIKKysKKyAvKiBBZGQgYSBkZXZpY2UgdG8gYSBjb250YWluZXIsIGVpdGhlciB3aGlsZSBjcmVhdGluZyBpdCBvciB3aGlsZQorICAqIGV4cGFuZGluZyBhIHByZS1leGlzdGluZyBjb250YWluZXIKKyAgKi8KK0BAIC0yOTgxLDYgKzI5ODQsNyBAQCBzdGF0aWMgaW50IGFkZF90b19zdXBlcl9kZGYoc3RydWN0IHN1cGVydHlwZSAqc3QsCisgCisgCXJldHVybiAwOworIH0KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorIAorIHN0YXRpYyBpbnQgcmVtb3ZlX2Zyb21fc3VwZXJfZGRmKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBtZHVfZGlza19pbmZvX3QgKmRrKQorIHsKK2RpZmYgLS1naXQgYS9zdXBlci1pbnRlbC5jIGIvc3VwZXItaW50ZWwuYworaW5kZXggMDBhMjkyNS4uNDRmYmVhZCAxMDA2NDQKKy0tLSBhL3N1cGVyLWludGVsLmMKKysrKyBiL3N1cGVyLWludGVsLmMKK0BAIC0yOTgsNiArMjk4LDExIEBAIHN0cnVjdCBtZF9saXN0IHsKKyB9OworIAorICNkZWZpbmUgcHJfdnJiKGZtdCwgYXJnLi4uKSAodm9pZCkgKHZlcmJvc2UgJiYgcHJfZXJyKGZtdCwgIyNhcmcpKQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyMgaWYgX19HTlVDX18gPT0gOAorKyMgcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3RyaW5nb3AtdHJ1bmNhdGlvbiIKKysjIGVuZGlmCisrI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC10cnVuY2F0aW9uIgorIAorIHN0YXRpYyBfX3U4IG1pZ3JfdHlwZShzdHJ1Y3QgaW1zbV9kZXYgKmRldikKKyB7CitAQCAtMTE2MTgsMyArMTE2MjMsNCBAQCBzdHJ1Y3Qgc3VwZXJzd2l0Y2ggc3VwZXJfaW1zbSA9IHsKKyAJLmdldF9iYWRfYmxvY2tzICAgPSBpbXNtX2dldF9iYWRibG9ja3MsCisgI2VuZGlmIC8qIE1EQVNTRU1CTEUgKi8KKyB9OworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCitkaWZmIC0tZ2l0IGEvc3VwZXIxLmMgYi9zdXBlcjEuYworaW5kZXggODdhNzRjYi4uNzFjNTE1ZiAxMDA2NDQKKy0tLSBhL3N1cGVyMS5jCisrKysgYi9zdXBlcjEuYworQEAgLTEwOTEsNiArMTA5MSwxMCBAQCBzdGF0aWMgc3RydWN0IG1kaW5mbyAqY29udGFpbmVyX2NvbnRlbnQxKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBjaGFyICpzdWJhcnJheSkKKyAJcmV0dXJuIGluZm87CisgfQorIAorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorKyMgaWYgX19HTlVDX18gPT0gOAorKyMgcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3RyaW5nb3AtdHJ1bmNhdGlvbiIKKysjZW5kaWYKKyBzdGF0aWMgaW50IHVwZGF0ZV9zdXBlcjEoc3RydWN0IHN1cGVydHlwZSAqc3QsIHN0cnVjdCBtZGluZm8gKmluZm8sCisgCQkJIGNoYXIgKnVwZGF0ZSwKKyAJCQkgY2hhciAqZGV2bmFtZSwgaW50IHZlcmJvc2UsCitAQCAtMTQ3Myw2ICsxNDc3LDcgQEAgc3RhdGljIGludCBpbml0X3N1cGVyMShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgbWR1X2FycmF5X2luZm9fdCAqaW5mbywKKyAKKyAJcmV0dXJuIDE7CisgfQorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgCisgc3RydWN0IGRldmluZm8geworIAlpbnQgZmQ7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLXVzZS1tZW1tb3ZlLWluc3RlYWQtb2YtbWVtY3B5LW9uLW92ZXJsYXBwaW5nLXJlZ2lvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtdXNlLW1lbW1vdmUtaW5zdGVhZC1vZi1tZW1jcHktb24tb3ZlcmxhcHBpbmctcmVnaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MzUxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAxLXVzZS1tZW1tb3ZlLWluc3RlYWQtb2YtbWVtY3B5LW9uLW92ZXJsYXBwaW5nLXJlZ2lvbi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGFiMThmMDRjZjg5ZWY0ZTg1MjFjODFjNTA0NzdlMTM2M2IyZDMzM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyOCBBcHIgMjAxOCAwOTo0NjoxMiAtMDcwMAorU3ViamVjdDogW1BBVENIXSB1c2UgbWVtbW92ZSBpbnN0ZWFkIG9mIG1lbWNweSBvbiBvdmVybGFwcGluZyByZWdpb24KKworRml4ZXMKK3N1cGVyMC5jOjUyNjozOiBlcnJvcjogJ21lbWNweScgYWNjZXNzaW5nIDM5MzYgYnl0ZXMgYXQgb2Zmc2V0cyAxNTYgYW5kIDE2MCBvdmVybGFwcyAzOTMyIGJ5dGVzIGF0IG9mZnNldCAxNjAgWy1XZXJyb3I9cmVzdHJpY3RdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3VwZXIwLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zdXBlcjAuYyBiL3N1cGVyMC5jCitpbmRleCBmNWI0NTA3Li4yNjRiNTk4IDEwMDY0NAorLS0tIGEvc3VwZXIwLmMKKysrKyBiL3N1cGVyMC5jCitAQCAtNTIzLDcgKzUyMyw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3N1cGVyMChzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgc3RydWN0IG1kaW5mbyAqaW5mbywKKyAJCSAqIHVwIDQgYnl0ZXMgYmVmb3JlIGNvbnRpbnVpbmcKKyAJCSAqLworIAkJX191MzIgKnNiMzIgPSAoX191MzIqKXNiOworLQkJbWVtY3B5KHNiMzIrTURfU0JfR0VORVJJQ19DT05TVEFOVF9XT1JEUys3LAorKwkJbWVtbW92ZShzYjMyK01EX1NCX0dFTkVSSUNfQ09OU1RBTlRfV09SRFMrNywKKyAJCSAgICAgICBzYjMyK01EX1NCX0dFTkVSSUNfQ09OU1RBTlRfV09SRFMrNysxLAorIAkJICAgICAgIChNRF9TQl9XT1JEUyAtIChNRF9TQl9HRU5FUklDX0NPTlNUQU5UX1dPUkRTKzcrMSkpKjQpOworIAkJaWYgKHZlcmJvc2UgPj0gMCkKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMC5iYgppbmRleCBkYzA5OGYxLi4yYzRkODhhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiCkBAIC0yMiw2ICsyMiw4IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LW1kYWRtLUZvcmNlZC10eXBlLWNvbnZlcnNpb24tdG8tYXZvaWQtdHJ1bmNhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1hLWNvbW1lbnQtdG8taW5kaWNhdGUtdmFsaWQtZmFsbHRocm91Z2gucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtQ0MtdG8tY2hlY2stZm9yLWltcGxpY2l0LWZhbGx0aHJvdWdoLXdhcm5pbmctc3VwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLW1lbW1vdmUtaW5zdGVhZC1vZi1tZW1jcHktb24tb3ZlcmxhcHBpbmctcmVnaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1nY2M4LXdhcm5pbmdzLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjJjYjRmZWZmZWE5MTY3YmE3MWI1ZjM0NmEwYzBhNDBkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFkNmFlN2YyNGNlZDNhMGZhN2I1NjEzYjMyZjRhNTg5YmI0ODgxZTM5NDZhNWEyYzM3MjQwNTYyNTRhZGEzYTkiCkBAIC00MCw3ICs0Miw3IEBACiAKIGRvX2NvbXBpbGUoKSB7CiAJIyBQb2ludCB0byByaWdodCBzYmluZGlyCi0Jc2VkIC1pIC1lICJzO0JJTkRJUiAgPSAvc2JpbjtCSU5ESVIgPSAkYmFzZV9zYmluZGlyOyIgJHtTfS9NYWtlZmlsZQorCXNlZCAtaSAtZSAicztCSU5ESVIgID0gL3NiaW47QklORElSID0gJGJhc2Vfc2JpbmRpcjsiIC1lICJzO1VERVZESVIgPSAvbGliO1VERVZESVIgPSAkbm9uYXJjaF9iYXNlX2xpYmRpcjsiICR7U30vTWFrZWZpbGUKIAlvZV9ydW5tYWtlIFNZU1JPT1Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluZ2V0dHkvbWluZ2V0dHlfMS4wOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmdldHR5L21pbmdldHR5XzEuMDguYmIKaW5kZXggM2MxNjIyOC4uNDkxYjg5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluZ2V0dHkvbWluZ2V0dHlfMS4wOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5nZXR0eS9taW5nZXR0eV8xLjA4LmJiCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICAgICAgQ0ZMQUdTPScke0NGTEFHU30gLURfR05VX1NPVVJDRSciCiAKIGRvX2luc3RhbGwoKXsKKyAgICBzZWQgLWkgLWUgInM7U0JJTkRJUj0vc2JpbjtTQklORElSPSRiYXNlX3NiaW5kaXI7IiAgJHtTfS9NYWtlZmlsZQogICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44ICR7RH0vJHtiYXNlX3NiaW5kaXJ9CiAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCmluZGV4IGJlMGI0OGQuLjFlNmYxMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LjEuYmIKQEAgLTE2LDggKzE2LDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5MDIxY2I4YzU0NDVmNmU2ZTc0YjJhY2MzOTk2MmQ2MiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzJmODM2YjdhNjc3ZWIwY2IxZGNhOGQ3MDMwMmI3MzcyOWMzZDMwZGYyNmQ1ODM2OGQ3MTJlNWNjYTA0MWYxIgogCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvP2dyb3VwX2lkPTMwMDE4IgotCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tsb2NrZGV2XSA9ICItLWVuYWJsZS1sb2NrZGV2LC0tZGlzYWJsZS1sb2NrZGV2LGxvY2tkZXYiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21rdGVtcC9maWxlcy9kaXNhYmxlLXN0cmlwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2Rpc2FibGUtc3RyaXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwNjg2OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2Rpc2FibGUtc3RyaXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCAzN2IzY2M5Li5mMTAyNmYzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtOTUsNyArOTUsNyBAQCBpbnN0YWxsLWRpcnM6Ci0gCSAgICAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKLSAKLSBpbnN0YWxsLWJpbmFyaWVzOiAkKFBST0cpCi0tCSQoSU5TVEFMTCkgLW0gMDU1NSAtcyAkKFBST0cpICQoREVTVERJUikkKGJpbmRpcikvJChQUk9HKQotKwkkKElOU1RBTEwpIC1tIDA1NTUgJChQUk9HKSAkKERFU1RESVIpJChiaW5kaXIpLyQoUFJPRykKLSAKLSBpbnN0YWxsLW1hbjoKLSAJJChJTlNUQUxMKSAtbSAwNDQ0ICQoc3JjZGlyKS9ta3RlbXAuJChtYW50eXBlKSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ta3RlbXAvZmlsZXMvZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYjZkY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL2ZpbGVzL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhpcyBmaXhlcyB0aGUgcGFyYWxsZWwgbWFrZSBpbnN0YWxsIGZhaWx1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotaHR0cDovL3d3dy5ncmF0aXNvZnQudXMvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTUyOAotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBta3RlbXAtMS43L01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWt0ZW1wLTEuNy5vcmlnL01ha2VmaWxlLmluCi0rKysgbWt0ZW1wLTEuNy9NYWtlZmlsZS5pbgotQEAgLTk0LDEwICs5NCwxMCBAQCBpbnN0YWxsLWRpcnM6Ci0gCSQoU0hFTEwpICQoc3JjZGlyKS9ta2luc3RhbGxkaXJzICQoREVTVERJUikkKGJpbmRpcikgXAotIAkgICAgJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0gCi0taW5zdGFsbC1iaW5hcmllczogJChQUk9HKQotK2luc3RhbGwtYmluYXJpZXM6IGluc3RhbGwtZGlycyAkKFBST0cpCi0gCSQoSU5TVEFMTCkgLW0gMDU1NSAkKFBST0cpICQoREVTVERJUikkKGJpbmRpcikvJChQUk9HKQotIAotLWluc3RhbGwtbWFuOgotK2luc3RhbGwtbWFuOiBpbnN0YWxsLWRpcnMKLSAJJChJTlNUQUxMKSAtbSAwNDQ0ICQoc3JjZGlyKS9ta3RlbXAuJChtYW50eXBlKSBcCi0gCSAgICAkKERFU1RESVIpJChtYW5kaXIpL21hbjEvbWt0ZW1wLjEKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21rdGVtcC9ta3RlbXBfMS43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL21rdGVtcF8xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YWU1YzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWt0ZW1wL21rdGVtcF8xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkVuYWJsZXMgc2FmZSB0ZW1wb3JhcnkgZmlsZSBjcmVhdGlvbiBmcm9tIHNoZWxsIHNjcmlwdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1rdGVtcC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm1rdGVtcC5vcmcvYnVncyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDMwNjgwZjYzMjJhMWViODcxOTliNWUwMWE4MmMwZDQiCi0KLVBSID0gInIzIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5ta3RlbXAub3JnL3B1Yi9ta3RlbXAvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgIGZpbGU6Ly9kaXNhYmxlLXN0cmlwLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2ZpeC1wYXJhbGxlbC1tYWtlLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzg3YmJlZDlmYTJlZThlNzY0NTczM2MwZThlNjUxNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGU5NGI5ZTFlZGY4NjZiMjYwOTU0NWRhNjViNjI3OTk2YWM1ZDE1OGZkYTA3MWU0OTJiZGRiMmY0YTQ4MjY3NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWxpYmMiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXSA7IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkJbXYgJHtEfSR7YmluZGlyfS9ta3RlbXAgJHtEfSR7YmFzZV9iaW5kaXJ9L21rdGVtcAotCQlybWRpciAke0R9JHtiaW5kaXJ9Ci0JZmkKLX0KLQotQUxURVJOQVRJVkVfJHtQTn0gPSAibWt0ZW1wIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcF0gPSAiJHtiYXNlX2JpbmRpcn0vbWt0ZW1wIgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJta3RlbXAuMSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LWRvYyA9ICIzMDAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL21rdGVtcC4xIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV0LXRvb2xzL25ldC10b29sc18xLjYwLTI2LmJiCmluZGV4IDU2NTdmZDguLmE0ZTMyODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIKQEAgLTQ4LDcgKzQ4LDE2IEBACiAjIHVwIGFsbCBwcmV2aW91c2x5IGFwcGxpZWQgcGF0Y2hlcyBpbiB0aGUgc3RhcnQKIG5ldHRvb2xzX2RvX3BhdGNoKCkgewogCWNkICR7U30KLQlxdWlsdCBwb3AgLWEgfHwgdHJ1ZQorCSMgaXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBvbmx5IHBvcCB0aGUgZXhpc3RpbmcgcGF0Y2hlcyB3aGVuIHRoZXkndmUKKwkjIGJlZW4gYXBwbGllZCwgb3RoZXJ3aXNlIHF1aWx0IHdpbGwgY2xpbWIgdGhlIGRpcmVjdG9yeSB0cmVlCisJIyBhbmQgcmV2ZXJzZSBvdXQgc29tZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZXQgb2YgcGF0Y2hlcworCWlmIFsgLWQgJHtTfS9wYXRjaGVzIF07IHRoZW4KKwkJIyB3aGlsc3QgdGhpcyBpcyB0aGUgZGVmYXVsdCBkaXJlY3RvcnksIGRvaW5nIGl0IGxpa2UgdGhpcworCQkjIGRlZmVhdHMgdGhlIGRpcmVjdG9yeSBjbGltYmluZyB0aGF0IHF1aWx0IHdpbGwgb3RoZXJ3aXNlCisJCSMgZG87IG5vdGUgdGhlIGRpcmVjdG9yeSBtdXN0IGV4aXN0IHRvIGRlZmVhdCB0aGlzLCBoZW5jZQorCQkjIHRoZSB0ZXN0IGluc2lkZSB3aGljaCB3ZSBvcGVyYXRlCisJCVFVSUxUX1BBVENIRVM9JHtTfS9wYXRjaGVzIHF1aWx0IHBvcCAtYQorCWZpCiAJaWYgWyAtZCAke1N9Ly5wYy1uZXR0b29scyBdOyB0aGVuCiAJCXJtIC1yZiAke1N9Ly5wYwogCQltdiAke1N9Ly5wYy1uZXR0b29scyAke1N9Ly5wYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjIwLmJiCmluZGV4IDIwMzY5ZWYuLjQzM2QxODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4yMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMjAuYmIKQEAgLTI1LDQgKzI1LDQgQEAKIAogRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4yMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiCmluZGV4IDY1Y2U3MGMuLjI2NGVmM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiCkBAIC01MSw0ICs1MSw0IEBACiAKIEZJTEVTX3doaXB0YWlsID0gIiR7YmluZGlyfS93aGlwdGFpbCIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCmluZGV4IDkwMDJmYmMuLmZmYTgzODggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCkBAIC04NiwxMCArODYsOCBAQAogICAgIG1jLWZpc2ggXAogICAgIG1jLWhlbHBlcnMgXAogICAgIG1jLWhlbHBlcnMtcGVybCBcCi0gICAgbWt0ZW1wIFwKICAgICBuY3Vyc2VzIFwKICAgICBuZXQtdG9vbHMgXAotICAgIHBvcHQgXAogICAgIHByb2NwcyBcCiAgICAgcHNtaXNjIFwKICAgICBzZWQgXApAQCAtMTI3LDI1ICsxMjUsMTcgQEAKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1tdWx0aXVzZXIgPSAiXAorICAgIGJ6aXAyIFwKICAgICBjcmFja2xpYiBcCiAgICAgZ3ppcCBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlidXNlcicsICcnLCBkKX0gXAogICAgIHNoYWRvdyBcCiAgICAgc3VkbyBcCiAgICAgIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUtc3lzLXNlcnZpY2VzID0gIlwKICAgICBhdCBcCi0gICAgYnppcDIgXAogICAgIGNyb25pZSBcCi0gICAgZGJ1cyBcCi0gICAgZWxmdXRpbHMgXAotICAgIGd6aXAgXAotICAgIGxlc3MgXAogICAgIGxvZ3JvdGF0ZSBcCiAgICAgbmZzLXV0aWxzIFwKLSAgICBwY2l1dGlscyBcCiAgICAgcnBjYmluZCBcCi0gICAgdGNwLXdyYXBwZXJzIFwKLSAgICB0emRhdGEgXAogICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKaW5kZXggNTNkMTAwYy4uZThkYzQyMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKQEAgLTc2LDcgKzc2LDcgQEAKICAgICBzY3JlZW4gXAogICAgIHNldHNlcmlhbCBcCiAgICAgc3lzc3RhdCBcCi0gICAgdWRldi1leHRyYWNvbmYgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAndWRldi1leHRyYWNvbmYnLCBkKX0gXAogICAgIHVuemlwIFwKICAgICB3YXRjaGRvZyBcCiAgICAgd2dldCBcCkBAIC0xMzYsNiArMTM2LDcgQEAKICAgICBiYyBcCiAgICAgYmludXRpbHMgXAogICAgIGJpbnV0aWxzLXN5bWxpbmtzIFwKKyAgICBiemlwMiBcCiAgICAgY29yZXV0aWxzIFwKICAgICBjcGlvIFwKICAgICBjcm9uaWUgXApAQCAtMTU4LDcgKzE1OSw2IEBACiAgICAgbWFrZSBcCiAgICAgbWFuIFwKICAgICBtYW4tcGFnZXMgXAotICAgIG1rdGVtcCBcCiAgICAgbXNtdHAgXAogICAgIHBhdGNoIFwKICAgICBwcm9jcHMgXApAQCAtMjIwLDcgKzIyMCw3IEBACiAgICAgbGliZXJhdGlvbi1mb250cyBcCiAgICAgZ3RrKyBcCiAgICAgYXRrIFwKLSAgICBsaWJhc291bmQgXAorICAgIGFsc2EtbGliIFwKICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXJ1bnRpbWUtYWRkID0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCmluZGV4IDkyYWI3MmEuLjNhZWMyY2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9wYXRoc19oZWFkZXIucGF0Y2ggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4IGZsZXgtbmF0aXZlIGNyYWNrbGliIGxpYnhtbDItbmF0aXZlIgorREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUgZmxleCBmbGV4LW5hdGl2ZSBjcmFja2xpYiBsaWJ4bWwyLW5hdGl2ZSB2aXJ0dWFsL2NyeXB0IgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWRiLXVuaXF1ZW5hbWU9X3BhbSBcCiAgICAgICAgICAgICAgICAgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vc2VjdXJpdHkgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgppbmRleCBhYjMwMTA4Li42MTg5ZmQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpAQCAtNDgsMyArNDgsOSBAQAogfQogCiBSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAicGFydHByb2JlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BhcnRwcm9iZV0gPSAiJHtzYmluZGlyfS9wYXJ0cHJvYmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyLzAwMDEtcGJ6aXAyLUZpeC1pbnZhbGlkLXN1ZmZpeC1vbi1saXRlcmFsLUMtMTEtd2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDIvMDAwMS1wYnppcDItRml4LWludmFsaWQtc3VmZml4LW9uLWxpdGVyYWwtQy0xMS13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYzM3N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyLzAwMDEtcGJ6aXAyLUZpeC1pbnZhbGlkLXN1ZmZpeC1vbi1saXRlcmFsLUMtMTEtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGRlNGE5NDhkMzU2YzliZWZiODhjNzk2MTY4ZTk3ZWIwNWI5YTMzODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBBcHIgMjAxOCAyMjo1NDo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBwYnppcDI6IEZpeCBpbnZhbGlkIHN1ZmZpeCBvbiBsaXRlcmFsIEMrKzExIHdhcm5pbmcKKworRml4ZXMgLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbF0gZXJyb3JzLgorQWxzbyByZXBvcnRlZCBpbiBsYXVuY2hwYWQgaGVyZSBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9wYnppcDIvK2J1Zy8xNzQ2MzY5CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xhdW5jaHBhZGxpYnJhcmlhbi5uZXQvMzU1MjMwMTUyL3BiemlwMi5wYXRjaF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHBiemlwMi5jcHAgfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcGJ6aXAyLmNwcCBiL3BiemlwMi5jcHAKK2luZGV4IDY2Y2E5NzguLjQyODdlYTcgMTAwNjQ0CistLS0gYS9wYnppcDIuY3BwCisrKysgYi9wYnppcDIuY3BwCitAQCAtMTIyMCw3ICsxMjIwLDcgQEAgaW50IHByb2R1Y2VyX2RlY29tcHJlc3MoaW50IGhJbmZpbGUsIE9GRl9UIGZpbGVTaXplLCBxdWV1ZSAqZmlmbykKKyAJCQkvLyBnaXZlIHdhcm5pbmcgdG8gdXNlciBpZiBibG9jayBpcyBsYXJnZXIgdGhhbiAyNTAgbWlsbGlvbiBieXRlcworIAkJCWlmIChmaWxlRGF0YS0+YnVmU2l6ZSA+IDI1MDAwMDAwMCkKKyAJCQl7CistCQkJCWZwcmludGYoc3RkZXJyLCAicGJ6aXAyOiAgKldBUk5JTkc6IENvbXByZXNzZWQgYmxvY2sgc2l6ZSBpcyBsYXJnZSBbJSJQUkl1TUFYIiBieXRlc10uXG4iLAorKwkJCQlmcHJpbnRmKHN0ZGVyciwgInBiemlwMjogICpXQVJOSU5HOiBDb21wcmVzc2VkIGJsb2NrIHNpemUgaXMgbGFyZ2UgWyUiIFBSSXVNQVggIiBieXRlc10uXG4iLAorIAkJCQkJCSh1aW50bWF4X3QpIGZpbGVEYXRhLT5idWZTaXplKTsKKyAJCQkJZnByaW50ZihzdGRlcnIsICIgICAgICAgICAgSWYgcHJvZ3JhbSBhYm9ydHMsIHVzZSByZWd1bGFyIEJaSVAyIHRvIGRlY29tcHJlc3MuXG4iKTsKKyAJCQl9CitAQCAtMTgyOSw3ICsxODI5LDcgQEAgdm9pZCAqZmlsZVdyaXRlcih2b2lkICpvdXRuYW1lKQorIAkKKyAJaWYgKFF1aWV0TW9kZSAhPSAxKQorIAl7CistCQlmcHJpbnRmKHN0ZGVyciwgIiAgICBPdXRwdXQgU2l6ZTogJSJQUkl1TUFYIiBieXRlc1xuIiwgKHVpbnRtYXhfdClDb21wcmVzc2VkU2l6ZSk7CisrCQlmcHJpbnRmKHN0ZGVyciwgIiAgICBPdXRwdXQgU2l6ZTogJSIgUFJJdU1BWCAiIGJ5dGVzXG4iLCAodWludG1heF90KUNvbXByZXNzZWRTaXplKTsKKyAJfQorIAorIAkjaWZkZWYgUEJaSVBfREVCVUcKK0BAIC0yMDcyLDcgKzIwNzIsNyBAQCBpbnQgZGlyZWN0Y29tcHJlc3MoaW50IGhJbmZpbGUsIE9GRl9UIGZpbGVTaXplLCBpbnQgYmxvY2tTaXplLCBjb25zdCBjaGFyICpPdXRGaQorIAkJY2xvc2UoaE91dGZpbGUpOworIAlpZiAoUXVpZXRNb2RlICE9IDEpCisgCXsKKy0JCWZwcmludGYoc3RkZXJyLCAiICAgIE91dHB1dCBTaXplOiAlIlBSSXVNQVgiIGJ5dGVzXG4iLCAodWludG1heF90KUNvbXByZXNzZWRTaXplKTsKKysJCWZwcmludGYoc3RkZXJyLCAiICAgIE91dHB1dCBTaXplOiAlIiBQUkl1TUFYICIgYnl0ZXNcbiIsICh1aW50bWF4X3QpQ29tcHJlc3NlZFNpemUpOworIAl9CisgCisgCXN5bmNTZXRQcm9kdWNlckRvbmUoMSk7IC8vIE5vdCByZWFsbHkgbmVlZGVkIGZvciBkaXJlY3QgdmVyc2lvbgorQEAgLTI3OTQsNyArMjc5NCw3IEBAIHZvaWQgb3V0cHV0QnVmZmVySW5pdChzaXplX3Qgc2l6ZSkKKyAJLy8gdW5saWtlbHkgdG8gZ2V0IGhlcmUgc2luY2UgbW9yZSBsaWtlbHkgZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duCisgCWlmIChPdXRwdXRCdWZmZXIuc2l6ZSgpICE9IHNpemUpCisgCXsKKy0JCWZwcmludGYoc3RkZXJyLCAicGJ6aXAyOiAqRVJST1I6IENvdWxkIG5vdCBpbml0aWFsaXplIChPdXRwdXRCdWZmZXIpOyBzaXplPSUiUFJJdU1BWCIhICBBYm9ydGluZy4uLlxuIiwgKHVpbnRtYXhfdClzaXplKTsKKysJCWZwcmludGYoc3RkZXJyLCAicGJ6aXAyOiAqRVJST1I6IENvdWxkIG5vdCBpbml0aWFsaXplIChPdXRwdXRCdWZmZXIpOyBzaXplPSUiIFBSSXVNQVggIiEgIEFib3J0aW5nLi4uXG4iLCAodWludG1heF90KXNpemUpOworIAkJc2FmZV9tdXRleF91bmxvY2soT3V0TXV0ZXgpOworIAkJZXhpdCgxKTsKKyAJfQorQEAgLTQxMDIsNyArNDEwMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCisgCQkJaWYgKGRlY29tcHJlc3MgPT0gMSkKKyAJCQkJZnByaW50ZihzdGRlcnIsICIgQldUIEJsb2NrIFNpemU6ICVjMDBrXG4iLCBCV1RibG9ja1NpemVDaGFyKTsKKyAJCQlpZiAoaGFzSW5GaWxlKQorLQkJCQlmcHJpbnRmKHN0ZGVyciwgIiAgICAgSW5wdXQgU2l6ZTogJSJQUkl1TUFYIiBieXRlc1xuIiwgKHVpbnRtYXhfdClJbkZpbGVTaXplKTsKKysJCQkJZnByaW50ZihzdGRlcnIsICIgICAgIElucHV0IFNpemU6ICUiIFBSSXVNQVggIiBieXRlc1xuIiwgKHVpbnRtYXhfdClJbkZpbGVTaXplKTsKKyAJCX0KKyAKKyAJCWlmIChkZWNvbXByZXNzID09IDEpCitAQCAtNDIyNCw3ICs0MjI0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKKyAJCQl7CisgCQkJCU51bUJ1ZmZlcmVkQmxvY2tzTWF4ID0gbnVtQ1BVOworIAkJCQlpZiAoUXVpZXRNb2RlICE9IDEpCistCQkJCQlmcHJpbnRmKHN0ZGVyciwgIipXYXJuaW5nKiBNYXggbWVtb3J5IGxpbWl0IGluY3JlYXNlZCB0byAlIlBSSXVNQVgiIE1CIHRvIHN1cHBvcnQgJWQgQ1BVc1xuIiwgKHVpbnRtYXhfdCkoKE51bUJ1ZmZlcmVkQmxvY2tzTWF4ICsgKG51bUNQVSAqIDIpKSAqIGJsb2NrU2l6ZSkvMTAwMDAwMCwgbnVtQ1BVKTsKKysJCQkJCWZwcmludGYoc3RkZXJyLCAiKldhcm5pbmcqIE1heCBtZW1vcnkgbGltaXQgaW5jcmVhc2VkIHRvICUiIFBSSXVNQVggIiBNQiB0byBzdXBwb3J0ICVkIENQVXNcbiIsICh1aW50bWF4X3QpKChOdW1CdWZmZXJlZEJsb2Nrc01heCArIChudW1DUFUgKiAyKSkgKiBibG9ja1NpemUpLzEwMDAwMDAsIG51bUNQVSk7CisgCQkJfQorIAkJCWVsc2UKKyAJCQl7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYnppcDIvcGJ6aXAyXzEuMS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCmluZGV4IDA2ZDM3YWQuLjdiMWIwYTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiCkBAIC0xMSwxMiArMTEsMTUgQEAKIERFUEVORFMgPSAiYnppcDIiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvJHtCUE59LzEuMS8ke1BWfS8rZG93bmxvYWQvJHtCUH0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvJHtCUE59LzEuMS8ke1BWfS8rZG93bmxvYWQvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGJ6aXAyLUZpeC1pbnZhbGlkLXN1ZmZpeC1vbi1saXRlcmFsLUMtMTEtd2FybmluZy5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjRjYjg3ZGEyZGJhMDU1NDBhZmNlMTYyZjM0YjNhOWE2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmZDEzZWFhYTI2NmY3ZWU5MWY4NWMxZWE5N2M4NmQ5YzljYzk4NTk2OWRiOTA1OWNkZWJjYjFlMWI3YmRiZTYiCiAKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vY29tcHJlc3Npb24uY2EvcGJ6aXAyLyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvcGJ6aXAyLyttaWxlc3RvbmVzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGJ6aXAyICg/UDxwdmVyPlxkKyhcLlxkKykrKSIKIAogRVhUUkFfT0VNQUtFID0gIkNYWD0nJHtDWFh9ICR7Q1hYRkxBR1N9JyBMREZMQUdTPScke0xERkxBR1N9JyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkY2JlYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHVzaW5nIGFuZCBidWlsZGluZyBQZXJsIFNBWDIgWE1MIHByb2Nlc3NvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLVNBWC8iCi1ERVNDUklQVElPTiA9ICJYTUw6OlNBWCBjb25zaXN0cyBvZiBzZXZlcmFsIGZyYW1ld29yayBjbGFzc2VzIGZvciB1c2luZyBhbmQgXAotYnVpbGRpbmcgUGVybCBTQVgyIFhNTCBwYXJzZXJzLCBmaWx0ZXJzLCBhbmQgZHJpdmVycy4gIEl0IGlzIGRlc2lnbmVkIFwgCi1hcm91bmQgdGhlIG5lZWQgdG8gYmUgYWJsZSB0byAicGx1ZyBpbiIgZGlmZmVyZW50IFNBWCBwYXJzZXJzIHRvIGFuIFwKLWFwcGxpY2F0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHByb2dyYW1tZXIgaW50ZXJ2ZW50aW9uLiAgVGhvc2Ugb2YgeW91IFwKLWZhbWlsaWFyIHdpdGggdGhlIERCSSB3aWxsIGJlIHJpZ2h0IGF0IGhvbWUuICBTb21lIG9mIHRoZSBkZXNpZ25zIFwKLWNvbWUgZnJvbSB0aGUgSmF2YSBKQVhQIHNwZWNpZmljYXRpb24gKFNBWCBwYXJ0KSwgb25seSB3aXRob3V0IHRoZSBcCi1qYXZhbmVzcy4iCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1ERVBFTkRTICs9ICJsaWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJsaWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsIGxpYnhtbC1zYXgtYmFzZS1wZXJsIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCIKLVBSID0gInIyIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NWM0Y2Q4ZjM5YzI0YzcxMzVlZDcwZGFjYmNiMDllMyIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dSL0dSQU5UTS9YTUwtU0FYLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI5MGY1Mzc1YWU4N2ZkZWJmZGI1YmMzODU0MDE5ZjI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMyYjA0YjhlMzZiNmNjNGNmYzQ4NmRlMmQ4NTlkODdhZjUzODZkZDkzMGYyMzgzYzQ5MzQ3MDUwZDZmNWFkODQiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtU0FYLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yICR7Qn0vdGVzdGZpbGVzICR7RH0ke1BURVNUX1BBVEh9Ci0JY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RmaWxlcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzEuMDAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8xLjAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MTgzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8xLjAwLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHVzaW5nIGFuZCBidWlsZGluZyBQZXJsIFNBWDIgWE1MIHByb2Nlc3NvcnMiCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvWE1MLVNBWC8iCitERVNDUklQVElPTiA9ICJYTUw6OlNBWCBjb25zaXN0cyBvZiBzZXZlcmFsIGZyYW1ld29yayBjbGFzc2VzIGZvciB1c2luZyBhbmQgXAorYnVpbGRpbmcgUGVybCBTQVgyIFhNTCBwYXJzZXJzLCBmaWx0ZXJzLCBhbmQgZHJpdmVycy4gIEl0IGlzIGRlc2lnbmVkIFwgCithcm91bmQgdGhlIG5lZWQgdG8gYmUgYWJsZSB0byAicGx1ZyBpbiIgZGlmZmVyZW50IFNBWCBwYXJzZXJzIHRvIGFuIFwKK2FwcGxpY2F0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHByb2dyYW1tZXIgaW50ZXJ2ZW50aW9uLiAgVGhvc2Ugb2YgeW91IFwKK2ZhbWlsaWFyIHdpdGggdGhlIERCSSB3aWxsIGJlIHJpZ2h0IGF0IGhvbWUuICBTb21lIG9mIHRoZSBkZXNpZ25zIFwKK2NvbWUgZnJvbSB0aGUgSmF2YSBKQVhQIHNwZWNpZmljYXRpb24gKFNBWCBwYXJ0KSwgb25seSB3aXRob3V0IHRoZSBcCitqYXZhbmVzcy4iCisKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitERVBFTkRTICs9ICJsaWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsIGxpYnhtbC1zYXgtYmFzZS1wZXJsIHBlcmwtbW9kdWxlLWZpbGUtdGVtcCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjVjNGNkOGYzOWMyNGM3MTM1ZWQ3MGRhY2JjYjA5ZTMiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRy9HUi9HUkFOVE0vWE1MLVNBWC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NjFhNDU0ZjdiZjI2OTk5MGVkMmMxYzEyNWY0ZGI0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NWVhNjU2NGVmODY5MjE1NWQ1N2IyZGUwODYyYjY0NDJkM2M3ZTI5ZjRhOWJjOWVkZTVkN2VjZGM3NGMyYWUzIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVNBWC0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtciAke0J9L3Rlc3RmaWxlcyAke0R9JHtQVEVTVF9QQVRIfQorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0ZmlsZXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovMDAwMS1jb25maWd1cmUtRGV0ZWN0LWhlYWRlcnMtYmVmb3JlLXVzaW5nLXRoZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovMDAwMS1jb25maWd1cmUtRGV0ZWN0LWhlYWRlcnMtYmVmb3JlLXVzaW5nLXRoZW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyYmFlMjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6LzAwMDEtY29uZmlndXJlLURldGVjdC1oZWFkZXJzLWJlZm9yZS11c2luZy10aGVtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSBjODQ0ODBiZThkZjY5NjZjNTM4ZDFmYjY3Y2NhZTJmNDJjYzQ2NDIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjIgTWFyIDIwMTYgMDc6MzY6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGNvbmZpZ3VyZTogRGV0ZWN0IGhlYWRlcnMgYmVmb3JlIHVzaW5nIHRoZW0KLQotQ3VycmVudCBsb2dpYyBkb2VzIG5vdCB3b3JrIHdoZW4gc3lzdGVtIGRvZXMgbm90IGhhdmUKLXN5cy9lbmRpYW4uaCwgc2luY2UgaXQgdHJpZWQgdG8gcmV1c2UgdGhlIGNhY2hlZCByZXN1bHRzCi1mcm9tIGZpcnN0IHRyeSBvZiBkZXRlY3RpbmcgaHRvbGU2NCBpbiBzeXMvZW5kaWFuLmggd2hpY2ggaXMKLSdubycgYW5kIGhlbmNlIHRoZSBzZWNvbmQgdHJ5IHRvIGxvb2sgaW50byBlbmRpYW4uaCBhbHNvCi1jb21lcyBvdXQgbmVnYXRpdmUuCi0KLVNvIHdlIGNoZWNrIGZvciBoZWFkZXIgYW5kIHRoZW4gcnVuIHRoZSB0ZXN0IGZvciBzeW1ib2xzCi1hbmQgdGhlc2Ugc3ltYm9scyBhcmUgbm90IHN0YW5kYXJkIGFuZCB3ZSBuZWVkIHRvIGRlZmluZSBfR05VX1NPVVJDRQotZm9yIGl0IHRvIHdvcmssIHRoaXMgaXNzdWUgaXMgZXhwb3NlZCBieSBzeXN0ZW1zIHVzaW5nIG11c2wgZS5nLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0gY29uZmlndXJlLmFjIHwgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDRjYjU2YmMuLjVlMjNjNTAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY5LDEyICs2OSwxNyBAQCBBQ19GVU5DX01BTExPQwotIEFDX0ZVTkNfUkVBTExPQwotIEFDX0ZVTkNfU1RSVE9ECi0gQUNfQ0hFQ0tfRlVOQ1MoW21lbWNociBtZW1tb3ZlIG1lbXNldCBzdHJlcnJvciBzdHJ0b2xdKQotLUFDX0NIRUNLX0RFQ0xTKFtodG9sZTY0LCBsZTY0dG9oXSwKLS0gICAgICAgICAgICAgICBbXSwKLStBQ19DSEVDS19IRUFERVIoW3N5cy9lbmRpYW4uaF0sCi0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgQUNfQ0hFQ0tfREVDTFMoW2h0b2xlNjQsIGxlNjR0b2hdLCBbXSwgW10sIFsjaW5jbHVkZSA8ZW5kaWFuLmg+XSkKLSsgICAgICAgICAgICAgICAgIEFDX0NIRUNLX0RFQ0xTKFtodG9sZTY0LCBsZTY0dG9oXSwgW10sIFtdLCBbI2RlZmluZSBfR05VX1NPVVJDRSAxICNpbmNsdWRlIDxzeXMvZW5kaWFuLmg+XSkKLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPl0pCi0rICAgICAgICAgICAgICAgW10sIFtdKQotKwotK0FDX0NIRUNLX0hFQURFUihbZW5kaWFuLmhdLAotKyAgICAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgIEFDX0NIRUNLX0RFQ0xTKFtodG9sZTY0LCBsZTY0dG9oXSwgW10sIFtdLCBbI2RlZmluZSBfR05VX1NPVVJDRSAxICNpbmNsdWRlIDxlbmRpYW4uaD5dKQotKyAgICAgICAgICAgICAgIF0sCi0rICAgICAgICAgICAgICAgW10sIFtdKQotIAotIEFDX0NPTkZJR19GSUxFUyhbTWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgIHNyYy9NYWtlZmlsZQotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4ei8wMDAyLWVuZGlhbi1Vc2UtbWFjcm8tYnN3YXBfNjQtaW5zdGVhZC1vZi1fX2Jzd2FwXzY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6LzAwMDItZW5kaWFuLVVzZS1tYWNyby1ic3dhcF82NC1pbnN0ZWFkLW9mLV9fYnN3YXBfNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNjE1OTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6LzAwMDItZW5kaWFuLVVzZS1tYWNyby1ic3dhcF82NC1pbnN0ZWFkLW9mLV9fYnN3YXBfNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDVmM2E1MzU5ODdiYWU0YzNlM2Q5ZTkwNzljNzUyNmUzOTlmN2FlY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMiBNYXIgMjAxNiAwNzo0MjozOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZW5kaWFuOiBVc2UgbWFjcm8gYnN3YXBfNjQgaW5zdGVhZCBvZiBfX2Jzd2FwXzY0Ci0KLWJ5dGVzd2FwLmggZGVmaW5lcyB0aGVuIGFzIHB1YmxpYyBBUElzIG9uIGFsbCBsaWJjCi1vbiBsaW51eCBpbmNsdWRpbmcgbXVzbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotIHNyYy9lbmRpYW4uYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2VuZGlhbi5jIGIvc3JjL2VuZGlhbi5jCi1pbmRleCBiNzcyNGYzLi41MWFlYTU4IDEwMDY0NAotLS0tIGEvc3JjL2VuZGlhbi5jCi0rKysgYi9zcmMvZW5kaWFuLmMKLUBAIC0xNSw2ICsxNSw3IEBAIHZvaWQgeGxlNjRlbmModWludDhfdCAqZCwgdWludDY0X3QgbikgewotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaWZkZWYgX19saW51eF9fCi0gCSNpbmNsdWRlIDxlbmRpYW4uaD4KLSsJI2luY2x1ZGUgPGJ5dGVzd2FwLmg+Ci0gI2Vsc2UKLSAJI2luY2x1ZGUgPHN5cy9lbmRpYW4uaD4KLSAjZW5kaWYKLUBAIC0yMyw3ICsyNCw3IEBAIHZvaWQgeGxlNjRlbmModWludDhfdCAqZCwgdWludDY0X3QgbikgewotICMgaWYgX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTgotICMgIGRlZmluZSBodG9sZTY0KHgpICh4KQotICMgZWxzZQotLSMgIGRlZmluZSBodG9sZTY0KHgpIF9fYnN3YXBfNjQgKHgpCi0rIyAgZGVmaW5lIGh0b2xlNjQoeCkgYnN3YXBfNjQgKHgpCi0gIyBlbmRpZgotICNlbmRpZgotIAotQEAgLTMxLDcgKzMyLDcgQEAgdm9pZCB4bGU2NGVuYyh1aW50OF90ICpkLCB1aW50NjRfdCBuKSB7Ci0gIyBpZiBfX0JZVEVfT1JERVIgPT0gX19MSVRUTEVfRU5ESUFOCi0gIyAgZGVmaW5lIGxlNjR0b2goeCkgKHgpCi0gIyBlbHNlCi0tIyAgZGVmaW5lIGxlNjR0b2goeCkgX19ic3dhcF82NCAoeCkKLSsjICBkZWZpbmUgbGU2NHRvaCh4KSBic3dhcF82NCAoeCkKLSAjIGVuZGlmCi0gI2VuZGlmCi0gCi0tLSAKLTEuOC4zLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGl4ei9waXh6LzkzNmQ4MDY4YWUxOWQ5NTI2MGQzMDU4ZjQxZGQ2Y2Y3MTgxMDFjZDYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovOTM2ZDgwNjhhZTE5ZDk1MjYwZDMwNThmNDFkZDZjZjcxODEwMWNkNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM0ODlkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHovOTM2ZDgwNjhhZTE5ZDk1MjYwZDMwNThmNDFkZDZjZjcxODEwMWNkNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gOTM2ZDgwNjhhZTE5ZDk1MjYwZDMwNThmNDFkZDZjZjcxODEwMWNkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzdGlhbiBLcmF1c2UgPGtpemtpenpiYW5nYmFuZ0Bnb29nbGVtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjYgRGVjIDIwMTUgMTQ6MzY6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gb3B0aW9uIHRvIG5vdCBidWlsZCBtYW4gcGFnZQotCi1maXhlcyAjNTYKLS0tLQotIGNvbmZpZ3VyZS5hYyAgICB8IDIzICsrKysrKysrKysrKysrKysrKystLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgIDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVJQIDIwMTYvMDEvMjIKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYjQzN2U1Ni4uNGNiNTZiYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjAsMTMgKzIwLDI4IEBAIEFDX0NIRUNLX0ZJTEUoCi0gICBbc3JjL3BpeHouMV0sCi0gICBbXSwKLSAgIFsKLS0gICAgQUNfQ0hFQ0tfUFJPRyhBMlgsIGEyeCwgYTJ4LCBbXSkKLS0gICAgaWYgdGVzdCAieCRBMlgiID0geCA7IHRoZW4KLS0gICAgICBBQ19NU0dfRVJST1IoW0FzY2lpRG9jIG5vdCBmb3VuZCwgbm90IGFibGUgdG8gZ2VuZXJhdGUgdGhlIG1hbiBwYWdlLl0pCi0tICAgIGZpCi0rICAgIEFDX0FSR19XSVRIKAotKyAgICAgIFttYW5wYWdlXSwKLSsgICAgICBbICAtLXdpdGhvdXQtbWFucGFnZSAgICAgICBkb24ndCBidWlsZCBtYW4gcGFnZV0sCi0rICAgICAgW2Nhc2UgJHt3aXRodmFsfSBpbgotKyAgICAgICAgeWVzKSBtYW5wYWdlPXRydWUgOzsKLSsgICAgICAgIG5vKSAgbWFucGFnZT1mYWxzZSA7OwotKyAgICAgICAgKikgICBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke3dpdGh2YWx9IGZvciAtLXdpdGgtbWFucGFnZV0pIDs7Ci0rICAgICAgZXNhY10sCi0rICAgICAgW21hbnBhZ2U9dHJ1ZV0KLSsgICAgKQotICAgXQotICkKLSAKLStBTV9DT05ESVRJT05BTChbTUFOUEFHRV0sIFt0ZXN0IHgkbWFucGFnZSA9IHh0cnVlXSkKLSsKLStpZiB0ZXN0IHgkbWFucGFnZSA9IHh0cnVlIDsgdGhlbgotKyAgQUNfQ0hFQ0tfUFJPRyhBMlgsIGEyeCwgYTJ4LCBbXSkKLSsgIGlmIHRlc3QgIngkQTJYIiA9IHggOyB0aGVuCi0rICAgIEFDX01TR19FUlJPUihbQXNjaWlEb2Mgbm90IGZvdW5kLCBub3QgYWJsZSB0byBnZW5lcmF0ZSB0aGUgbWFuIHBhZ2UuXSkKLSsgIGZpCi0rZmkKLSsKLSAjIENoZWNrcyBmb3IgbGlicmFyaWVzLgotIEFDX0NIRUNLX0xJQihbbV0sIFtjZWlsXSkKLSBBWF9QVEhSRUFECi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA2MDBlYzkwLi5iOThmNDUwIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0xNSw2ICsxNSw3IEBAIHBpeHpfU09VUkNFUyA9IFwKLSAJcmVhZC5jIFwKLSAJd3JpdGUuYwotIAotK2lmIE1BTlBBR0UKLSAjIFRPRE8gcmVtb3ZlIHdoZW4gcG9zc2libGU6IFRoaXMgaXMgYSBoYWNrIGJlY2F1c2UgYTJ4IGlzIG5vdCBhYmxlIHRvIG91dHB1dCB0aGUgbWFuIHBhZ2VzIHRvIGEKLSAjIHNwZWNpZmljIGRpcmVjdG9yeSwgb25seSB0byB3aGVyZSB0aGUgc291cmNlIGlzLgotIHBpeHouMTogcGl4ei4xLmFzY2lpZG9jCi1AQCAtMjYsMyArMjcsNCBAQCBtYW5fTUFOUyA9IHBpeHouMQotIENMRUFORklMRVMgPSBwaXh6LjEKLSAKLSBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykgcGl4ei4xLmFzY2lpZG9jCi0rZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4el8xLjAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BpeHovcGl4el8xLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzAzMjU4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9waXh6L3BpeHpfMS4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlBhcmFsbGVsLCBpbmRleGVkIHh6IGNvbXByZXNzb3IiCi0KLURFUEVORFMgPSAieHogbGliYXJjaGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdmFzaS9waXh6L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImY2ZGM1OTA5YzlhMzFiMTkyZjY5YWEzOTdhZThkZjQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyYzUwNzQ2YjEzNGZhMWIxYWFlNDFmY2MzMTRkN2M2ZjE5MTliM2Q0OGJjZGVhMDFiZjExNzY5ZjgzZjcyZTgiCi0KLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWNmNmQxNjQwODYxMDVmMTUxMmNjYjgxYmZmZjE5MjYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly85MzZkODA2OGFlMTlkOTUyNjBkMzA1OGY0MWRkNmNmNzE4MTAxY2Q2LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1EZXRlY3QtaGVhZGVycy1iZWZvcmUtdXNpbmctdGhlbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1lbmRpYW4tVXNlLW1hY3JvLWJzd2FwXzY0LWluc3RlYWQtb2YtX19ic3dhcF82NC5wYXRjaCBcCi0iCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Zhc2kvcGl4ei9yZWxlYXNlcyIKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS13aXRoLW1hbnBhZ2UsIC0td2l0aG91dC1tYW5wYWdlLCBhc2NpaWRvYy1uYXRpdmUiCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9HTlVfU09VUkNFIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2ZpbGVfc3JjX3BpeHpfMT1ubyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ4MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAwODI1ZGI5NGZjOTFmYTIxNTBjMGU2NDllOTJjYzhkY2M0NGY0YjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgQXByIDIwMTggMTQ6MDk6NDUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IG91dCBvZiB0cmVlIGJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaW5jbHVkZS9ubHMuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmxzLmggYi9pbmNsdWRlL25scy5oCitpbmRleCAxMTY2YjdiLi5mNWFiZTA1IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9ubHMuaAorKysrIGIvaW5jbHVkZS9ubHMuaAorQEAgLTYsNyArNiw3IEBACisgI2RlZmluZSBQUk9DUFNfTkdfTkxTX0gKKyAKKyAvKiBwcm9ncmFtcyBpc3N1aW5nIHRleHRkb21haW4oKSBuZWVkIFBBQ0tBR0Ugc3RyaW5nICovCistI2luY2x1ZGUgIi4uL2NvbmZpZy5oIgorKyNpbmNsdWRlICJjb25maWcuaCIKKyAKKyAvKiBwcm9ncmFtcyBpc3N1aW5nIGJpbmR0ZXh0ZG9tYWluKCkgYWxzbyBuZWVkIExPQ0FMRURJUiBzdHJpbmcgKi8KKyAjaWZuZGVmIExPQ0FMRURJUgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy9DVkUtMjAxOC0xMTI0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy9DVkUtMjAxOC0xMTI0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzc4ZmFmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHMvQ1ZFLTIwMTgtMTEyNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi1Gcm9tIGJkZDA1OGEwZTY3NmQyZjAxMzAyN2ZjZmIyYjM0NGMzMTMxMTJhNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBRdWFseXMgU2VjdXJpdHkgQWR2aXNvcnkgPHFzYUBxdWFseXMuY29tPgotRGF0ZTogVGh1LCAxIEphbiAxOTcwIDAwOjAwOjAwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDc0LzEyNl0gcHJvYy9yZWFkcHJvYy5jOiBGaXggYnVncyBhbmQgb3ZlcmZsb3dzIGluCi0gZmlsZTJzdHJ2ZWMoKS4KLQotTm90ZTogdGhpcyBpcyBieSBmYXIgdGhlIG1vc3QgaW1wb3J0YW50IGFuZCBjb21wbGV4IHBhdGNoIG9mIHRoZSB3aG9sZQotc2VyaWVzLCBwbGVhc2UgcmV2aWV3IGl0IGNhcmVmdWxseTsgdGhhbmsgeW91IHZlcnkgbXVjaCEKLQotRm9yIHRoaXMgcGF0Y2gsIHdlIGRlY2lkZWQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24ncyBkZXNpZ24gYW5kCi1za2VsZXRvbiwgdG8gYXZvaWQgcmVncmVzc2lvbnMgYW5kIGJlaGF2aW9yIGNoYW5nZXMsIHdoaWxlIGZpeGluZyB0aGUKLXZhcmlvdXMgYnVncyBhbmQgb3ZlcmZsb3dzLiBBbmQgbGlrZSB0aGUgIkhhcmRlbiBmaWxlMnN0cigpIiBwYXRjaCwgdGhpcwotcGF0Y2ggZG9lcyBub3QgZmFpbCB3aGVuIGFib3V0IHRvIG92ZXJmbG93LCBidXQgdHJ1bmNhdGVzIGluc3RlYWQ6IHRoZXJlCi1pcyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgYWJvdXQgdGhpcyBwcm9jZXNzLCBzbyByZXR1cm4gaXQgdG8gdGhlIGNhbGxlcjsKLWFsc28sIHdlIHVzZWQgSU5UX01BWCBhcyBhIGxpbWl0LCBidXQgYSBsb3dlciBsaW1pdCBjb3VsZCBiZSB1c2VkLgotCi1UaGUgZWFzeSBjaGFuZ2VzOgotCi0tIFJlcGxhY2Ugc3ByaW50ZigpIHdpdGggc25wcmludGYoKSAoYW5kIGNoZWNrIGZvciB0cnVuY2F0aW9uKS4KLQotLSBSZXBsYWNlICJpZiAobiA9PSAwICYmIHJidWYgPT0gMCkiIHdpdGggImlmIChuIDw9IDAgJiYgdG90IDw9IDApIiBhbmQKLSAgZG8gYnJlYWsgaW5zdGVhZCBvZiByZXR1cm46IGl0IHNpbXBsaWZpZXMgdGhlIGNvZGUgKG9ubHkgb25lIHBsYWNlIHRvCi0gIGhhbmRsZSBlcnJvcnMpLCBhbmQgYWxzbyBndWFyYW50ZWVzIHRoYXQgaW4gdGhlIHdoaWxlIGxvb3AgZWl0aGVyIG4gb3IKLSAgdG90IGlzID4gMCAob3IgYm90aCksIGV2ZW4gaWYgbiBpcyByZXNldCB0byAwIHdoZW4gYWJvdXQgdG8gb3ZlcmZsb3cuCi0KLS0gUmVtb3ZlIHRoZSAiaWYgKG4gPCAwKSIgYmxvY2sgaW4gdGhlIHdoaWxlIGxvb3A6IGl0IGlzIChhbmQgd2FzKSBkZWFkCi0gIGNvZGUsIHNpbmNlIHdlIGVudGVyIHRoZSB3aGlsZSBsb29wIG9ubHkgaWYgbiA+PSAwLgotCi0tIFJld3JpdGUgdGhlIG1pc3NpbmctbnVsbC10ZXJtaW5hdG9yIGRldGVjdGlvbjogaW4gdGhlIG9yaWdpbmFsCi0gIGZ1bmN0aW9uLCBpZiB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBpcyBhIG11bHRpcGxlIG9mIDIwNDcsIGEgbnVsbC0KLSAgdGVybWluYXRvciBpcyBhcHBlbmRlZCBldmVuIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgbnVsbC10ZXJtaW5hdGVkLgotCi0tIFJlcGxhY2UgImlmIChuIDw9IDAgJiYgIWVuZF9vZl9maWxlKSIgd2l0aCAiaWYgKG4gPCAwIHx8IHRvdCA8PSAwKSI6Ci0gIG9yaWdpbmFsbHksIGl0IHdhcyBlcXVpdmFsZW50IHRvICJpZiAobiA8IDApIiwgYnV0IHdlIGFkZGVkICJ0b3QgPD0gMCIKLSAgdG8gaGFuZGxlIHRoZSBmaXJzdCBicmVhayBvZiB0aGUgd2hpbGUgbG9vcCwgYW5kIHRvIGd1YXJhbnRlZSB0aGF0IGluCi0gIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbiB0b3QgaXMgPiAwLgotCi0tIERvdWJsZS1mb3JjZSAoImJlbHQgYW5kIHN1c3BlbmRlcnMiKSB0aGUgbnVsbC10ZXJtaW5hdGlvbiBvZiByYnVmOgotICB0aGlzIGlzIChhbmQgd2FzKSBlc3NlbnRpYWwgdG8gdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBmdW5jdGlvbi4KLQotLSBSZXBsYWNlIHRoZSBmaW5hbCAid2hpbGUiIGxvb3Agd2l0aCBhICJmb3IiIGxvb3AgdGhhdCBiZWhhdmVzIGp1c3QKLSAgbGlrZSB0aGUgcHJlY2VkaW5nICJmb3IiIGxvb3A6IGluIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgdGhpcyB3b3VsZAotICBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cyAoZm9yIGV4YW1wbGUsIGlmIHJidWYgaXMgfFwwfEF8XDB8LCB0aGlzCi0gIHdvdWxkIHJldHVybiB0aGUgYXJyYXkgeyIiLE5VTEx9IGJ1dCBzaG91bGQgcmV0dXJuIHsiIiwiQSIsTlVMTH07IGFuZAotICBpZiByYnVmIGlzIHxBfFwwfEJ8IChzaG91bGQgbmV2ZXIgaGFwcGVuIGJlY2F1c2UgcmJ1ZiBzaG91bGQgYmUgbnVsbC0KLSAgdGVybWluYXRlZCksIHRoaXMgd291bGQgbWFrZSByb29tIGZvciB0d28gcG9pbnRlcnMgaW4gcmV0LCBidXQgd291bGQKLSAgd3JpdGUgdGhyZWUgcG9pbnRlcnMgdG8gcmV0KS4KLQotVGhlIGhhcmQgY2hhbmdlczoKLQotLSBQcmV2ZW50IHRoZSBpbnRlZ2VyIG92ZXJmbG93IG9mIHRvdCBpbiB0aGUgd2hpbGUgbG9vcCwgYnV0IHVubGlrZQotICBmaWxlMnN0cigpLCBmaWxlMnN0cnZlYygpIGNhbm5vdCBsZXQgdG90IGdyb3cgdW50aWwgaXQgYWxtb3N0IHJlYWNoZXMKLSAgSU5UX01BWCwgYmVjYXVzZSBpdCBuZWVkcyBtb3JlIHNwYWNlIGZvciB0aGUgcG9pbnRlcnM6IHRoaXMgaXMgd2h5IHdlCi0gIGludHJvZHVjZWQgQVJHX0xFTiwgd2hpY2ggYWxzbyBndWFyYW50ZWVzIHRoYXQgd2UgY2FuIGFkZCAiYWxpZ24iIGFuZAotICBhIGZldyBzaXplb2YoY2hhciopcyB0byB0b3Qgd2l0aG91dCBvdmVyZmxvd2luZy4KLQotLSBQcmV2ZW50IHRoZSBpbnRlZ2VyIG92ZXJmbG93IG9mICJ0b3QgKyBjICsgYWxpZ24iOiB3aGVuIElOVF9NQVggaXMKLSAgKGFsbW9zdCkgcmVhY2hlZCwgd2Ugd3JpdGUgdGhlIG1heGltYWwgc2FmZSBhbW91bnQgb2YgcG9pbnRlcnMgdG8gcmV0Ci0gIChBUkdfTEVOIGd1YXJhbnRlZXMgdGhhdCB0aGVyZSBpcyBhbHdheXMgc3BhY2UgZm9yICpyZXQgPSByYnVmIGFuZCB0aGUKLSAgTlVMTCB0ZXJtaW5hdG9yKS4KLVtjYXJuaWw6IGJhY2twb3J0IGZvciAzLjMuOTogQWRkIGluY2x1ZGUgZm9yIGxpbWl0cy5oIGFuZCB1c2Ugb2YgTUFYX0lOVF0KLQotQ1ZFOiBDVkUtMjAxOC0xMTI0Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2Nwcy9jb21taXQvMzZjMzUwZjA3Yzc1YWFiZjc0N2ZiODMzZjUyYTIzNGFlNTc4MWIyMF0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gcHJvYy9yZWFkcHJvYy5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLU5hdXJwIHByb2Nwcy1uZy0zLjMuMTJfb3JnL3Byb2MvcmVhZHByb2MuYyBwcm9jcHMtbmctMy4zLjEyL3Byb2MvcmVhZHByb2MuYwotLS0tIHByb2Nwcy1uZy0zLjMuMTJfb3JnL3Byb2MvcmVhZHByb2MuYwkyMDE2LTA3LTA5IDE0OjQ5OjI1LjgyNTMwNjg3MiAtMDcwMAotKysrIHByb2Nwcy1uZy0zLjMuMTIvcHJvYy9yZWFkcHJvYy5jCTIwMTgtMDctMjQgMDA6NDY6NDkuMzY2MjAyNTMxIC0wNzAwCi1AQCAtMzcsNiArMzcsNyBAQAotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpZmRlZiBXSVRIX1NZU1RFTUQKLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1sb2dpbi5oPgotICNlbmRpZgotLS0tIGEvcHJvYy9yZWFkcHJvYy5jCi0rKysgYi9wcm9jL3JlYWRwcm9jLmMKLUBAIC02MDAsMTEgKzYwMSwxMiBAQCBzdGF0aWMgaW50IGZpbGUyc3RyKGNvbnN0IGNoYXIgKmRpcmVjdG9yCi0gCi0gc3RhdGljIGNoYXIqKiBmaWxlMnN0cnZlYyhjb25zdCBjaGFyKiBkaXJlY3RvcnksIGNvbnN0IGNoYXIqIHdoYXQpIHsKLSAgICAgY2hhciBidWZbMjA0OF07CS8qIHJlYWQgYnVmIGJ5dGVzIGF0IGEgdGltZSAqLwotLSAgICBjaGFyICpwLCAqcmJ1ZiA9IDAsICplbmRidWYsICoqcSwgKipyZXQ7Ci0rICAgIGNoYXIgKnAsICpyYnVmID0gMCwgKmVuZGJ1ZiwgKipxLCAqKnJldCwgKnN0cnA7Ci0gICAgIGludCBmZCwgdG90ID0gMCwgbiwgYywgZW5kX29mX2ZpbGUgPSAwOwotICAgICBpbnQgYWxpZ247Ci0gCi0tICAgIHNwcmludGYoYnVmLCAiJXMvJXMiLCBkaXJlY3RvcnksIHdoYXQpOwotKyAgICBjb25zdCBpbnQgbGVuID0gc25wcmludGYoYnVmLCBzaXplb2YgYnVmLCAiJXMvJXMiLCBkaXJlY3RvcnksIHdoYXQpOwotKyAgICBpZihsZW4gPD0gMCB8fCAoc2l6ZV90KWxlbiA+PSBzaXplb2YgYnVmKSByZXR1cm4gTlVMTDsKLSAgICAgZmQgPSBvcGVuKGJ1ZiwgT19SRE9OTFksIDApOwotICAgICBpZihmZD09LTEpIHJldHVybiBOVUxMOwotIAotQEAgLTYxMiwxOCArNjE0LDIzIEBAIHN0YXRpYyBjaGFyKiogZmlsZTJzdHJ2ZWMoY29uc3QgY2hhciogZGkKLSAgICAgd2hpbGUgKChuID0gcmVhZChmZCwgYnVmLCBzaXplb2YgYnVmIC0gMSkpID49IDApIHsKLSAJaWYgKG4gPCAoaW50KShzaXplb2YgYnVmIC0gMSkpCi0gCSAgICBlbmRfb2ZfZmlsZSA9IDE7Ci0tCWlmIChuID09IDAgJiYgcmJ1ZiA9PSAwKSB7Ci0tCSAgICBjbG9zZShmZCk7Ci0tCSAgICByZXR1cm4gTlVMTDsJLyogcHJvY2VzcyBkaWVkIGJldHdlZW4gb3VyIG9wZW4gYW5kIHJlYWQgKi8KLSsJaWYgKG4gPD0gMCAmJiB0b3QgPD0gMCkgeyAvKiBub3RoaW5nIHJlYWQgbm93LCBub3RoaW5nIHJlYWQgYmVmb3JlICovCi0rCSAgICBicmVhazsJCS8qIHByb2Nlc3MgZGllZCBiZXR3ZWVuIG91ciBvcGVuIGFuZCByZWFkICovCi0gCX0KLS0JaWYgKG4gPCAwKSB7Ci0tCSAgICBpZiAocmJ1ZikKLS0JCWZyZWUocmJ1Zik7Ci0tCSAgICBjbG9zZShmZCk7Ci0tCSAgICByZXR1cm4gTlVMTDsJLyogcmVhZCBlcnJvciAqLwotKwkvKiBBUkdfTEVOIGlzIG91ciBndWVzc3RpbWF0ZWQgbWVkaWFuIGxlbmd0aCBvZiBhIGNvbW1hbmQtbGluZSBhcmd1bWVudAotKwkgICBvciBlbnZpcm9ubWVudCB2YXJpYWJsZSAodGhlIG1pbmltdW0gaXMgMSwgdGhlIG1heGltdW0gaXMgMTMxMDcyKSAqLwotKwkjZGVmaW5lIEFSR19MRU4gNjQKLSsJaWYgKHRvdCA+PSBJTlRfTUFYIC8gKEFSR19MRU4gKyAoaW50KXNpemVvZihjaGFyKikpICogQVJHX0xFTiAtIG4pIHsKLSsJICAgIGVuZF9vZl9maWxlID0gMTsgLyogaW50ZWdlciBvdmVyZmxvdzogbnVsbC10ZXJtaW5hdGUgYW5kIGJyZWFrICovCi0rCSAgICBuID0gMDsgLyogYnV0IHRvdCA+IDAgKi8KLSAJfQotLQlpZiAoZW5kX29mX2ZpbGUgJiYgKG4gPT0gMCB8fCBidWZbbi0xXSkpLyogbGFzdCByZWFkIGNoYXIgbm90IG51bGwgKi8KLSsJI3VuZGVmIEFSR19MRU4KLSsJaWYgKGVuZF9vZl9maWxlICYmCi0rCSAgICAoKG4gPiAwICYmIGJ1ZltuLTFdICE9ICdcMCcpIHx8CS8qIGxhc3QgcmVhZCBjaGFyIG5vdCBudWxsICovCi0rCSAgICAgKG4gPD0gMCAmJiByYnVmW3RvdC0xXSAhPSAnXDAnKSkpCS8qIGxhc3QgcmVhZCBjaGFyIG5vdCBudWxsICovCi0gCSAgICBidWZbbisrXSA9ICdcMCc7CQkJLyogc28gYXBwZW5kIG51bGwtdGVybWluYXRvciAqLwotKwotKwlpZiAobiA8PSAwKSBicmVhazsgLyogdW5uZWVkZWQgKGVuZF9vZl9maWxlID0gMSkgYnV0IGF2b2lkIHJlYWxsb2MgKi8KLSAJcmJ1ZiA9IHhyZWFsbG9jKHJidWYsIHRvdCArIG4pOwkJLyogYWxsb2NhdGUgbW9yZSBtZW1vcnkgKi8KLSAJbWVtY3B5KHJidWYgKyB0b3QsIGJ1Ziwgbik7CQkvKiBjb3B5IGJ1ZmZlciBpbnRvIGl0ICovCi0gCXRvdCArPSBuOwkJCQkvKiBpbmNyZW1lbnQgdG90YWwgYnl0ZSBjdHIgKi8KLUBAIC02MzEsMjkgKzYzOCwzNCBAQCBzdGF0aWMgY2hhcioqIGZpbGUyc3RydmVjKGNvbnN0IGNoYXIqIGRpCi0gCSAgICBicmVhazsKLSAgICAgfQotICAgICBjbG9zZShmZCk7Ci0tICAgIGlmIChuIDw9IDAgJiYgIWVuZF9vZl9maWxlKSB7Ci0rICAgIGlmIChuIDwgMCB8fCB0b3QgPD0gMCkgewkvKiBlcnJvciwgb3Igbm90aGluZyByZWFkICovCi0gCWlmIChyYnVmKSBmcmVlKHJidWYpOwotIAlyZXR1cm4gTlVMTDsJCS8qIHJlYWQgZXJyb3IgKi8KLSAgICAgfQotKyAgICByYnVmW3RvdC0xXSA9ICdcMCc7IC8qIGJlbHQgYW5kIHN1c3BlbmRlcnMgKHRoZSB3aGlsZSBsb29wIGRpZCBpdCwgdG9vKSAqLwotICAgICBlbmRidWYgPSByYnVmICsgdG90OwkJCS8qIGNvdW50IHNwYWNlIGZvciBwb2ludGVycyAqLwotICAgICBhbGlnbiA9IChzaXplb2YoY2hhciopLTEpIC0gKCh0b3QgKyBzaXplb2YoY2hhciopLTEpICYgKHNpemVvZihjaGFyKiktMSkpOwotLSAgICBmb3IgKGMgPSAwLCBwID0gcmJ1ZjsgcCA8IGVuZGJ1ZjsgcCsrKSB7Ci0tCWlmICghKnAgfHwgKnAgPT0gJ1xuJykKLSsgICAgYyA9IHNpemVvZihjaGFyKik7CQkJCS8qIG9uZSBleHRyYSBmb3IgTlVMTCB0ZXJtICovCi0rICAgIGZvciAocCA9IHJidWY7IHAgPCBlbmRidWY7IHArKykgewotKwlpZiAoISpwIHx8ICpwID09ICdcbicpIHsKLSsJICAgIGlmIChjID49IElOVF9NQVggLSAodG90ICsgKGludClzaXplb2YoY2hhciopICsgYWxpZ24pKSBicmVhazsKLSAJICAgIGMgKz0gc2l6ZW9mKGNoYXIqKTsKLSsJfQotIAlpZiAoKnAgPT0gJ1xuJykKLSAJICAgICpwID0gMDsKLSAgICAgfQotLSAgICBjICs9IHNpemVvZihjaGFyKik7CQkJCS8qIG9uZSBleHRyYSBmb3IgTlVMTCB0ZXJtICovCi0gCi0gICAgIHJidWYgPSB4cmVhbGxvYyhyYnVmLCB0b3QgKyBjICsgYWxpZ24pOwkvKiBtYWtlIHJvb20gZm9yIHB0cnMgQVQgRU5EICovCi0gICAgIGVuZGJ1ZiA9IHJidWYgKyB0b3Q7CQkJLyogYWRkciBqdXN0IHBhc3QgZGF0YSBidWYgKi8KLSAgICAgcSA9IHJldCA9IChjaGFyKiopIChlbmRidWYrYWxpZ24pOwkJLyogPT0+IGZyZWUoKnJldCkgdG8gZGVhbGxvYyAqLwotLSAgICAqcSsrID0gcCA9IHJidWY7CQkJCS8qIHBvaW50IHB0cnMgdG8gdGhlIHN0cmluZ3MgKi8KLS0gICAgZW5kYnVmLS07CQkJCQkvKiBkbyBub3QgdHJhdmVyc2UgZmluYWwgTlVMICovCi0tICAgIHdoaWxlICgrK3AgPCBlbmRidWYpCi0tICAgIAlpZiAoISpwKQkJCQkvKiBOVUwgY2hhciBpbXBsaWVzIHRoYXQgKi8KLS0JICAgICpxKysgPSBwKzE7CQkJCS8qIG5leHQgc3RyaW5nIC0+IG5leHQgY2hhciAqLwotLQotKyAgICBmb3IgKHN0cnAgPSBwID0gcmJ1ZjsgcCA8IGVuZGJ1ZjsgcCsrKSB7Ci0rCWlmICghKnApIHsJCQkJLyogTlVMIGNoYXIgaW1wbGllcyB0aGF0ICovCi0rCSAgICBpZiAoYyA8IDIgKiAoaW50KXNpemVvZihjaGFyKikpIGJyZWFrOwotKwkgICAgYyAtPSBzaXplb2YoY2hhciopOwotKwkgICAgKnErKyA9IHN0cnA7CQkJLyogcG9pbnQgcHRycyB0byB0aGUgc3RyaW5ncyAqLwotKwkgICAgc3RycCA9IHArMTsJCQkJLyogbmV4dCBzdHJpbmcgLT4gbmV4dCBjaGFyICovCi0rCX0KLSsgICAgfQotICAgICAqcSA9IDA7CQkJCQkvKiBudWxsIHB0ciBsaXN0IHRlcm1pbmF0b3IgKi8KLSAgICAgcmV0dXJuIHJldDsKLSB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzXzMuMy4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTE1YjBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gYW5kIHByb2Nlc3MgbW9uaXRvcmluZyB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJQcm9jcHMgY29udGFpbnMgYSBzZXQgb2Ygc3lzdGVtIHV0aWxpdGllcyB0aGF0IHByb3ZpZGUgc3lzdGVtIGluZm9ybWF0aW9uIGFib3V0IHByb2Nlc3NlcyB1c2luZyBcCi10aGUgL3Byb2MgZmlsZXN5c3RlbS4gVGhlIHBhY2thZ2UgaW5jbHVkZXMgdGhlIHByb2dyYW1zIHBzLCB0b3AsIHZtc3RhdCwgdywga2lsbCwgYW5kIHNraWxsLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTT0iZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAotICAgICAgICAgICAgICAgICAiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMTI0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NTdlNDJlOGIxOTM0OTBiMjExMTI1MmU0YTJiNDQzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZWQ2NWFiODYzMThmMzc5MDRlOGY5MDE0NDE1YTA5OGJlYzViYzUzNjUzZTVkOWFiNDA0Zjk1Y2E1ZTFhN2Q0IgotCi1TID0gIiR7V09SS0RJUn0vcHJvY3BzLW5nLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCi0gICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQotICAgICAgICBmaQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKLSAgICAgICAgZmkKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCi0KLWJpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCi1iYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKLWJhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc1NmRiMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiCkBAIC0wLDAgKzEsNjYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAordGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2NwcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU09ImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRjZjY2YTQ5ODQxMjAwMDdjOTg4MWNjODcxY2Y0OWRiIFwKKyAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gIm5jdXJzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3Byb2Nwcy1uZy9Qcm9kdWN0aW9uL3Byb2Nwcy1uZy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vc3lzY3RsLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmIwNzE3YTdjYjQ3NGIzZDZkZmRlZWRmYmFkMmVjY2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTBiZDc0NGZmY2IzZGUyZDU5MWQyZjZhY2YxYTU0YTdiYTA3MGZkY2M0MzJhODU1OTMxYTUwNTcxNDlmMDQ2NSIKKworUyA9ICIke1dPUktESVJ9L3Byb2Nwcy1uZy0ke1BWfSIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwlbICIke2JpbmRpcn0iICE9ICIke2Jhc2VfYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2VfYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtiYXNlX2JpbmRpcn0vJGk7IGRvbmUKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlbICIke3NiaW5kaXJ9IiAhPSAiJHtiYXNlX3NiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9zYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7c2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9zYmluZGlyfS8kaTsgZG9uZQorICAgICAgICBpZiBbICIke2Jhc2Vfc2JpbmRpcn0iICE9ICIke3NiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICAgICAgICAgcm1kaXIgJHtEfSR7c2JpbmRpcn0KKyAgICAgICAgZmkKKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mCisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kCisgICAgICAgICAgICAgICAgbG4gLXNmIC4uL3N5c2N0bC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLzk5LXN5c2N0bC5jb25mCisgICAgICAgIGZpCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N5c2N0bC5jb25mIgorCitiaW5kaXJfcHJvZ3MgPSAiZnJlZSBwa2lsbCBwbWFwIHBncmVwIHB3ZHggc2tpbGwgc25pY2UgdG9wIHVwdGltZSB3IgorYmFzZV9iaW5kaXJfcHJvZ3MgKz0gImtpbGwgcGlkb2YgcHMgd2F0Y2giCitiYXNlX3NiaW5kaXJfcHJvZ3MgKz0gInN5c2N0bCIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAwIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcGlkb2ZdID0gIjE1MCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtiaW5kaXJfcHJvZ3N9ICR7YmFzZV9iaW5kaXJfcHJvZ3N9ICR7YmFzZV9zYmluZGlyX3Byb2dzfSIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImtpbGwuMSB1cHRpbWUuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt1cHRpbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXB0aW1lLjEiCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9iaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2VfYmluZGlyJyksIHByb2cpKQorCisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisgICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9zYmluZGlyJyksIHByb2cpKQorfQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMDdmNDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBwc21pc2MuaW5jCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wc21pc2MvcHNtaXNjLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2jCoFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gIjY3YjFkYTI2OGY0YzBjZTY4NTk5ODBlM2RmY2ZhZWM1YjI0NDhlODAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwN2M5ZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjEuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBwc21pc2MuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wc21pc2MvcHNtaXNjLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1VSU5UUFRSX01BWC1pbnN0ZWFkLW9mLV9fV09SRFNJWkUucGF0Y2ggXAorCSAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2jCoFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImJkOTUyYjMwNjNmMjQ2NmVjYWI0ZWMwOTMwMjZjZjBjNGNlMzczYzciCitTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmRfYWRkX29wdGlvbl90b19maXhfcG9ydF9udW1iZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZF9hZGRfb3B0aW9uX3RvX2ZpeF9wb3J0X251bWJlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzRiNmIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmRfYWRkX29wdGlvbl90b19maXhfcG9ydF9udW1iZXIucGF0Y2gKQEAgLTAsMCArMSwxMzAgQEAKK0Zyb20gNzZmODU5OGZkMjA3Mjc5MDhlNzYwY2JiNDk3ZGQ2YTE3ZWRhNGFmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTcgU2VwIDIwMTQgMTM6MjI6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIG9wdGlvbiB0byBtYWtlIHVzZXJzIGFibGUgdG8gdXNlIGZpeGVkIHBvcnQgbnVtYmVyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL3JwY2JpbmQvZGlzY3Vzc2lvbi83MTY4MzkvdGhyZWFkLzMyYWY3MjFkL10KKworU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgbWFuL3JwY2JpbmQuOCAgICAgIHwgIDQgKysrLQorIHNyYy9ycGNiX3N2Y19jb20uYyB8IDE3ICsrKysrKysrKysrKysrKysrCisgc3JjL3JwY2JpbmQuYyAgICAgIHwgIDggKysrKysrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tYW4vcnBjYmluZC44IGIvbWFuL3JwY2JpbmQuOAoraW5kZXggYWY2MjAwZi4uMmU2MTQ2YiAxMDA2NDQKKy0tLSBhL21hbi9ycGNiaW5kLjgKKysrKyBiL21hbi9ycGNiaW5kLjgKK0BAIC0xMSw3ICsxMSw3IEBACisgLk5kIHVuaXZlcnNhbCBhZGRyZXNzZXMgdG8gUlBDIHByb2dyYW0gbnVtYmVyIG1hcHBlcgorIC5TaCBTWU5PUFNJUworIC5ObQorLS5PcCBGbCBhZGhpTGxzCisrLk9wIEZsIGFkaHBpTGxzCisgLlNoIERFU0NSSVBUSU9OCisgVGhlCisgLk5tCitAQCAtMTA3LDYgKzEwNyw4IEBAIHdpbGwgYXV0b21hdGljYWxseSBhZGQKKyBhbmQgaWYgSVB2NiBpcyBlbmFibGVkLAorIC5MaSA6OjEKKyB0byB0aGUgbGlzdC4KKysuSXQgRmwgcAorK0JpbmQgZm9yIGZpeGVkIFVEUCBwb3J0IG51bWJlcgorIC5JdCBGbCBpCisgLkRxIEluc2VjdXJlCisgbW9kZS4KK2RpZmYgLS1naXQgYS9zcmMvcnBjYl9zdmNfY29tLmMgYi9zcmMvcnBjYl9zdmNfY29tLmMKK2luZGV4IDhhZWY5ZTUuLmMyNjMyYTQgMTAwNjQ0CistLS0gYS9zcmMvcnBjYl9zdmNfY29tLmMKKysrKyBiL3NyYy9ycGNiX3N2Y19jb20uYworQEAgLTQ4LDYgKzQ4LDcgQEAKKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNsdWRlIDxycGMvcnBjYl9wcm90Lmg+CisgI2luY2x1ZGUgPHJwYy9zdmNfZGcuaD4KKysjaW5jbHVkZSA8cnBjL3JwY19jb20uaD4KKyAjaW5jbHVkZSA8bmV0Y29uZmlnLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN5c2xvZy5oPgorQEAgLTQ5Nyw2ICs0OTgsNyBAQCB4ZHJfb3BhcXVlX3Bhcm1zKFhEUiAqeGRycywgc3RydWN0IHJfcm10Y2FsbF9hcmdzICpjYXApCisgCisgc3RhdGljIHN0cnVjdCBybXRjYWxsZmRfbGlzdCAqcm10aGVhZDsKKyBzdGF0aWMgc3RydWN0IHJtdGNhbGxmZF9saXN0ICpybXR0YWlsOworK2V4dGVybiB1bnNpZ25lZCBzaG9ydCBmaXhlZF9wb3J0OworIAorIGludAorIGNyZWF0ZV9ybXRjYWxsX2ZkKHN0cnVjdCBuZXRjb25maWcgKm5jb25mKQorQEAgLTUwNCw2ICs1MDYsOCBAQCBjcmVhdGVfcm10Y2FsbF9mZChzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZikKKyAJaW50IGZkOworIAlzdHJ1Y3Qgcm10Y2FsbGZkX2xpc3QgKnJtdDsKKyAJU1ZDWFBSVCAqeHBydDsKKysJc3RydWN0IF9fcnBjX3NvY2tpbmZvIHNpOworKwlzdHJ1Y3QgdF9iaW5kIHRhZGRyOworIAorIAlpZiAoKGZkID0gX19ycGNfbmNvbmYyZmQobmNvbmYpKSA9PSAtMSkgeworIAkJaWYgKGRlYnVnZ2luZykKK0BAIC01MTIsNiArNTE2LDE5IEBAIGNyZWF0ZV9ybXRjYWxsX2ZkKHN0cnVjdCBuZXRjb25maWcgKm5jb25mKQorIAkJCW5jb25mLT5uY19kZXZpY2UsIGVycm5vKTsKKyAJCXJldHVybiAoLTEpOworIAl9CisrCisrCWlmIChmaXhlZF9wb3J0KSB7CisrCQlfX3JwY19mZDJzb2NraW5mbyhmZCwgJnNpKTsKKysJCW1lbXNldCgmdGFkZHIsIDAsIHNpemVvZih0YWRkcikpOworKwkJdGFkZHIuYWRkci5tYXhsZW4gPSB0YWRkci5hZGRyLmxlbiA9IHNpLnNpX2FsZW47CisrCQl0YWRkci5hZGRyLmJ1ZiA9IG1hbGxvYyhzaS5zaV9hbGVuKTsKKysJCWlmICh0YWRkci5hZGRyLmJ1ZiA9PSBOVUxMKSB7CisrCQkJcmV0dXJuIC0xOworKwkJfQorKwkJKih1bnNpZ25lZCBzaG9ydCAqKSgmKHRhZGRyLmFkZHIuYnVmWzBdKSkgPSBzaS5zaV9hZjsKKysJCSoodW5zaWduZWQgc2hvcnQgKikoJih0YWRkci5hZGRyLmJ1ZlsyXSkpID0gaHRvbnMoZml4ZWRfcG9ydCk7CisrCQl4cHJ0ID0gc3ZjX3RsaV9jcmVhdGUoZmQsIG5jb25mLCAmdGFkZHIsIFJQQ19NQVhEQVRBU0laRSwgUlBDX01BWERBVEFTSVpFKTsKKysJfSBlbHNlCisgCXhwcnQgPSBzdmNfdGxpX2NyZWF0ZShmZCwgMCwgKHN0cnVjdCB0X2JpbmQgKikgMCwgMCwgMCk7CisgCWlmICh4cHJ0ID09IE5VTEwpIHsKKyAJCWlmIChkZWJ1Z2dpbmcpCitkaWZmIC0tZ2l0IGEvc3JjL3JwY2JpbmQuYyBiL3NyYy9ycGNiaW5kLmMKK2luZGV4IDEzNzAxMWIuLmRjM2QyZDYgMTAwNjQ0CistLS0gYS9zcmMvcnBjYmluZC5jCisrKysgYi9zcmMvcnBjYmluZC5jCitAQCAtMTExLDYgKzExMSw3IEBAIGludCBydW5hc2RhZW1vbiA9IDA7CisgaW50IGluc2VjdXJlID0gMDsKKyBpbnQgb2xkc3R5bGVfbG9jYWwgPSAwOworIGludCB2ZXJib3NlbG9nID0gMDsKKyt1bnNpZ25lZCBzaG9ydCBmaXhlZF9wb3J0ID0gMDsKKyAKKyBjaGFyICoqaG9zdHMgPSBOVUxMOworIGludCBuaG9zdHMgPSAwOworQEAgLTg2OSw3ICs4NzAsNyBAQCBwYXJzZWFyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyB7CisgCWludCBjOworIAlvbGRzdHlsZV9sb2NhbCA9IDE7CistCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYWRoOmlsc3dmIikpICE9IC0xKSB7CisrCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYWRoOnA6aWxzd2YiKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnYSc6CisgCQkJZG9hYm9ydCA9IDE7CS8qIHdoZW4gZGVidWdnaW5nLCBkbyBhbiBhYm9ydCBvbiAqLworQEAgLTg4Nyw2ICs4ODgsOSBAQCBwYXJzZWFyZ3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQlpZiAoaG9zdHNbbmhvc3RzIC0gMV0gPT0gTlVMTCkKKyAJCQkJZXJyeCgxLCAiT3V0IG9mIG1lbW9yeSIpOworIAkJCWJyZWFrOworKwkJY2FzZSAncCc6CisrCQkJZml4ZWRfcG9ydCA9IGF0b2kob3B0YXJnKTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ2knOgorIAkJCWluc2VjdXJlID0gMTsKKyAJCQlicmVhazsKK0BAIC05MDUsNyArOTA5LDcgQEAgcGFyc2VhcmdzKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJYnJlYWs7CisgI2VuZGlmCisgCQlkZWZhdWx0OgkvKiBlcnJvciAqLworLQkJCWZwcmludGYoc3RkZXJyLAkidXNhZ2U6IHJwY2JpbmQgWy1hZGhpbHN3Zl1cbiIpOworKwkJCWZwcmludGYoc3RkZXJyLAkidXNhZ2U6IHJwY2JpbmQgWy1hZGhwaWxzd2ZdXG4iKTsKKyAJCQlleGl0ICgxKTsKKyAJCX0KKyAJfQorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKaW5kZXggZGNkZWU2Yy4uM2M2Nzc0YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8wLjIuNC5iYgpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ycGNiaW5kLXBhaXItYWxsLXN2Y19nZXRhcmdzLWNhbGxzLXdpdGgtc3ZjX2ZyZWVhcmdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BtYXBwcm9jX2R1bXAtRml4ZWQtdHlwby1pbi1tZW1vcnktbGVhay1wYXRjaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNicHJvY19jYWxsaXRfY29tLVN0b3AtZnJlZWluZy1hLXN0YXRpYy1wb2ludGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JwY2JpbmRfYWRkX29wdGlvbl90b19maXhfcG9ydF9udW1iZXIucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJjZjEwY2Q0MWVkODIyOGZjNTRjMzE2MTkxYzFmMDdmZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzRhOWE1MzBkYzdjMTFlMGQ5MDVhYTU5YmNiMDg0N2MwMDkzMTNmMDJlOThkM2Q3OThhYTk1NjhmNDE0YzY2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjc3ZjLXByb3RvL3JwY3N2Yy1wcm90by5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY3N2Yy1wcm90by9ycGNzdmMtcHJvdG8uYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I1YjI4OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY3N2Yy1wcm90by9ycGNzdmMtcHJvdG8uYmIKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJycGNzdmMgcHJvdG9jb2wgZGVmaW5pdGlvbnMgZnJvbSBnbGliYyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHJwY3N2YyBwcm90by54IGZpbGVzIGZyb20gZ2xpYmMsIHdoaWNoIGFyZVwKK21pc3NpbmcgaW4gbGlidGlycGMuIEFkZGl0aW9uYWwgaXQgY29udGFpbnMgcnBjZ2VuLCB3aGljaCBpcyBuZWVkZWRcCit0byBjcmVhdGUgaGVhZGVyIGZpbGVzIGFuZCBzb3VyY2VzIGZyb20gcHJvdG9jb2wgZmlsZXMuXAorVGhpcyBwYWNrYWdlIGlzIG9ubHkgbmVlZGVkLCBpZiBnbGliYyBpcyBpbnN0YWxsZWQgd2l0aG91dCB0aGVcCitkZXByZWNhdGVkIHN1bnJwYyBmdW5jdGlvbmFsaXR5IGFuZCBsaWJ0aXJwYyBzaG91bGQgcmVwbGFjZSBpdC4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aGt1a3VrL3JwY3N2Yy1wcm90byIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGRhYWY5NThkNTUzMWFiODYxNjllYzZlMjc1ZTE1MTciCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTICs9ICJycGNzdmMtcHJvdG8tbmF0aXZlIgorCitQViA9ICIxLjQrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICI5YmMzYjViNzg1NzIzY2ZmZjQ1OWIwYzAxYjM5ZDg3ZDRiZWQ5NzVjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay8ke0JQTn0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtY3Jvc3MtY29tcGlsZWQtcnBjZ2VuLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIC1DIHJwY2dlbiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBUaGV5IGNvbWUgZnJvbSBxdW90YSByZWNpcGUKKwlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0vcnBjc3ZjL3JxdW90YS5baHhdCit9CisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNzdmMtcHJvdG8vcnBjc3ZjLXByb3RvLzAwMDEtVXNlLWNyb3NzLWNvbXBpbGVkLXJwY2dlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY3N2Yy1wcm90by9ycGNzdmMtcHJvdG8vMDAwMS1Vc2UtY3Jvc3MtY29tcGlsZWQtcnBjZ2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwODk3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNzdmMtcHJvdG8vcnBjc3ZjLXByb3RvLzAwMDEtVXNlLWNyb3NzLWNvbXBpbGVkLXJwY2dlbi5wYXRjaApAQCAtMCwwICsxLDIzIEBACitGcm9tIGRlOTM0NTIwN2JlYjcxZTRkNWI2YjQwYjUyY2FjNGViZDJlMzg1OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNyBBcHIgMjAxOCAyMzoyMzoyMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgY3Jvc3MgY29tcGlsZWQgcnBjZ2VuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBycGNzdmMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvcnBjc3ZjL01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcnBjc3ZjL01ha2VmaWxlLmFtCisrKysgZ2l0L3JwY3N2Yy9NYWtlZmlsZS5hbQorQEAgLTEyLDUgKzEyLDUgQEAgbm9kaXN0X3JwY3N2Y19IRUFERVJTID0ga2xtX3Byb3QuaCBubG1fcAorIAluZnNfcHJvdC5oIHJxdW90YS5oIHNtX2ludGVyLmgKKyAKKyAlLmg6ICUueAorLQkkKHRvcF9idWlsZGRpcikvcnBjZ2VuL3JwY2dlbiAtaCAtbyAkQCAkPAorKwlycGNnZW4gLWggLW8gJEAgJDwKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4yLmJiCmluZGV4IDdhMzNjMzEuLjM3NWRjZTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjYuMi5iYgpAQCAtMTEsNyArMTEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCiAKLURFUEVORFMgPSAibmN1cnNlcyBcCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBcCiAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKIFJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaAppbmRleCBhNmY2MDRiLi5hYWMyZDQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCkBAIC0xMSw2ICsxMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiAtLS0KICBzcmMvZ3JvdXBhZGQuYyAgfCAzICsrKwogIHNyYy9ncm91cGRlbC5jICB8IDMgKysrCkBAIC0yMiw3ICsyMyw3IEBACiAgNyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCAzOWI0ZWMwLi5mNzE2ZjU3IDEwMDY0NAoraW5kZXggNjNlMWM0OC4uYTU5NmM0OSAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGFkZC5jCiArKysgYi9zcmMvZ3JvdXBhZGQuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTM2LDcgKzM3LDcgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwZGVsLmMgYi9zcmMvZ3JvdXBkZWwuYwotaW5kZXggZGE5OTM0Ny4uNDZhNjc5YyAxMDA2NDQKK2luZGV4IDcwYmVkMDEuLmFiYWJkODEgMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBkZWwuYwogKysrIGIvc3JjL2dyb3VwZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC01MCw3ICs1MSw3IEBACiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgPGdycC5oPgogZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1lbXMuYyBiL3NyYy9ncm91cG1lbXMuYwotaW5kZXggZTRmMTA3Zi4uOTVjYjA3MyAxMDA2NDQKK2luZGV4IGZjOTFjOGIuLjI4NDI1MTQgMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBtZW1zLmMKICsrKyBiL3NyYy9ncm91cG1lbXMuYwogQEAgLTMyLDYgKzMyLDkgQEAKQEAgLTY0LDcgKzY1LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgI2luY2x1ZGUgPGdycC5oPgogZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKLWluZGV4IGQ5ZDM4MDcuLjYyMjk3MzcgMTAwNjQ0CitpbmRleCA3MmRhZjJjLi44OTY1ZjlkIDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwbW9kLmMKICsrKyBiL3NyYy9ncm91cG1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtNzgsNyArNzksNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggZTFlYmY1MC4uMjU2NzlkOCAxMDA2NDQKK2luZGV4IDNhYWY0NWMuLjFhYjkxNzQgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmFkZC5jCiArKysgYi9zcmMvdXNlcmFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtOTIsNyArOTMsNyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VyZGVsLmMgYi9zcmMvdXNlcmRlbC5jCi1pbmRleCAxOWIxMmJjLi5hMDgzOTI5IDEwMDY0NAoraW5kZXggYzhkZTFkMy4uMjRkM2VhOSAxMDA2NDQKIC0tLSBhL3NyYy91c2VyZGVsLmMKICsrKyBiL3NyYy91c2VyZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC0xMDIsMTEgKzEwMywxMSBAQAogKy8qIERpc2FibGUgdXNlIG9mIHN5c2xvZyBzaW5jZSB3ZSdyZSBydW5uaW5nIHRoaXMgY29tbWFuZCBhZ2FpbnN0IGEgc3lzcm9vdCAqLwogKyN1bmRlZiBVU0VfU1lTTE9HCiArCisgI2luY2x1ZGUgPGFzc2VydC5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggNjg1YjUwYS4uMjhlNWNmYyAxMDA2NDQKK2luZGV4IGNjZmJiOTkuLjI0ZmI2MGQgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcm1vZC5jCiArKysgYi9zcmMvdXNlcm1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMTE2LDkgKzExNyw5IEBACiArLyogRGlzYWJsZSB1c2Ugb2Ygc3lzbG9nIHNpbmNlIHdlJ3JlIHJ1bm5pbmcgdGhpcyBjb21tYW5kIGFnYWluc3QgYSBzeXNyb290ICovCiArI3VuZGVmIFVTRV9TWVNMT0cKICsKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+CiAtLSAKLTIuMS4wCisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRG8tbm90LXJlYWQtbG9naW4uZGVmcy1iZWZvcmUtZG9pbmctY2hyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MjhiOTVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURvLW5vdC1yZWFkLWxvZ2luLmRlZnMtYmVmb3JlLWRvaW5nLWNocm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMTcwYzI1YzhlMGI1YzNkYzI2MTVkMWRiOTRjOGQyNGExM2ZmOTliZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBldGVyIEtqZWxsZXJzdGVkdCA8cGtqQGF4aXMuY29tPgotRGF0ZTogVGh1LCAxMSBTZXAgMjAxNCAxNToxMToyMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBEbyBub3QgcmVhZCBsb2dpbi5kZWZzIGJlZm9yZSBkb2luZyBjaHJvb3QoKQotCi1JZiAidXNlcmFkZCAtLXJvb3QgPHJvb3Q+IC4uLiIgd2FzIHVzZWQsIHRoZSBsb2dpbi5kZWZzIGZpbGUgd291bGQgc3RpbGwKLWJlIHJlYWQgZnJvbSAvZXRjL2xvZ2luLmRlZnMgaW5zdGVhZCBvZiA8cm9vdD4vZXRjL2xvZ2luLmRlZnMuIFRoaXMgd2FzCi1kdWUgdG8gZ2V0ZGVmX3Vsb25nKCkgYmVpbmcgY2FsbGVkIGJlZm9yZSBwcm9jZXNzX3Jvb3RfZmxhZygpLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cDovL2xpc3RzLmFsaW90aC5kZWJpYW4ub3JnL3BpcGVybWFpbC9wa2ctc2hhZG93LWRldmVsLzIwMTQtU2VwdGVtYmVyLzAxMDQ0Ni5odG1sXQotCi1TaWduZWQtb2ZmLWJ5OiBQZXRlciBLamVsbGVyc3RlZHQgPHBldGVyLmtqZWxsZXJzdGVkdEBheGlzLmNvbT4KLS0tLQotIHNyYy91c2VyYWRkLmMgfCA4ICsrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBhOGExZjc2Li5lMWViZjUwIDEwMDY0NAotLS0tIGEvc3JjL3VzZXJhZGQuYwotKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTE5OTMsOSArMTk5MywxMSBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICNlbmRpZgkJCQkvKiBVU0VfUEFNICovCi0gI2VuZGlmCQkJCS8qIEFDQ1RfVE9PTFNfU0VUVUlEICovCi0gCi0rI2lmZGVmIEVOQUJMRV9TVUJJRFMKLSAJLyogTmVlZGVkIGZvciB1c2VybnMgY2hlY2sgKi8KLS0JdWlkX3QgdWlkX21pbiA9ICh1aWRfdCkgZ2V0ZGVmX3Vsb25nICgiVUlEX01JTiIsIDEwMDBVTCk7Ci0tCXVpZF90IHVpZF9tYXggPSAodWlkX3QpIGdldGRlZl91bG9uZyAoIlVJRF9NQVgiLCA2MDAwMFVMKTsKLSsJdWlkX3QgdWlkX21pbjsKLSsJdWlkX3QgdWlkX21heDsKLSsjZW5kaWYKLSAKLSAJLyoKLSAJICogR2V0IG15IG5hbWUgc28gdGhhdCBJIGNhbiB1c2UgaXQgdG8gcmVwb3J0IGVycm9ycy4KLUBAIC0yMDI2LDYgKzIwMjgsOCBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlpc19zaGFkb3dfZ3JwID0gc2dyX2ZpbGVfcHJlc2VudCAoKTsKLSAjZW5kaWYKLSAjaWZkZWYgRU5BQkxFX1NVQklEUwotKwl1aWRfbWluID0gKHVpZF90KSBnZXRkZWZfdWxvbmcgKCJVSURfTUlOIiwgMTAwMFVMKTsKLSsJdWlkX21heCA9ICh1aWRfdCkgZ2V0ZGVmX3Vsb25nICgiVUlEX01BWCIsIDYwMDAwVUwpOwotIAlpc19zdWJfdWlkID0gc3ViX3VpZF9maWxlX3ByZXNlbnQgKCkgJiYgIXJmbGcgJiYKLSAJICAgICghdXNlcl9pZCB8fCAodXNlcl9pZCA8PSB1aWRfbWF4ICYmIHVzZXJfaWQgPj0gdWlkX21pbikpOwotIAlpc19zdWJfZ2lkID0gc3ViX2dpZF9maWxlX3ByZXNlbnQgKCkgJiYgIXJmbGcgJiYKLS0tIAotMS45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDNlMWUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gOTU0ZTNkMmU3MTEzZTlhYzA2NjMyYWVlM2M2OWI4ZDgxOGNjODk1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbWFzIE1yYXogPHRtcmF6QGZlZG9yYXByb2plY3Qub3JnPgotRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNjoyNTowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVmZmVyIG92ZXJmbG93IGlmIE5VTEwgbGluZSBpcyBwcmVzZW50IGluIGRiLgotCi1JZiBwdHItPmxpbmUgPT0gTlVMTCBmb3IgYW4gZW50cnksIHRoZSBmaXJzdCBjeWNsZSB3aWxsIGV4aXQsCi1idXQgdGhlIHNlY29uZCBvbmUgd2lsbCBoYXBwaWx5IHdyaXRlIHBhc3QgZW50cmllcyBidWZmZXIuCi1XZSBhY3R1YWxseSBkbyBub3Qgd2FudCB0byBleGl0IHRoZSBmaXJzdCBjeWNsZSBwcmVtYXR1cmVseQotb24gcHRyLT5saW5lID09IE5VTEwuCi1TaWduZWQtb2ZmLWJ5OiBUb21hcyBNcmF6IDx0bXJhekBmZWRvcmFwcm9qZWN0Lm9yZz4KLQotQ1ZFOiBDVkUtMjAxNy0xMjQyNAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2NvbW1vbmlvLmMgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9jb21tb25pby5jIGIvbGliL2NvbW1vbmlvLmMKLWluZGV4IGIxMGRhMDYuLjMxZWRiYWEgMTAwNjQ0Ci0tLS0gYS9saWIvY29tbW9uaW8uYwotKysrIGIvbGliL2NvbW1vbmlvLmMKLUBAIC03NTEsMTYgKzc1MSwxNiBAQCBjb21tb25pb19zb3J0IChzdHJ1Y3QgY29tbW9uaW9fZGIgKmRiLCBpbnQgKCpjbXApIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpCi0gCWZvciAocHRyID0gZGItPmhlYWQ7Ci0gCSAgICAgICAgKE5VTEwgIT0gcHRyKQotICNpZiBLRUVQX05JU19BVF9FTkQKLS0JICAgICAmJiAoTlVMTCAhPSBwdHItPmxpbmUpCi0tCSAgICAgJiYgKCAgICgnKycgIT0gcHRyLT5saW5lWzBdKQotLQkgICAgICAgICAmJiAoJy0nICE9IHB0ci0+bGluZVswXSkpCi0rCSAgICAgJiYgKChOVUxMID09IHB0ci0+bGluZSkKLSsJICAgICAgICAgfHwgKCgnKycgIT0gcHRyLT5saW5lWzBdKQotKwkgICAgICAgICAgICAgJiYgKCctJyAhPSBwdHItPmxpbmVbMF0pKSkKLSAjZW5kaWYKLSAJICAgICA7Ci0gCSAgICAgcHRyID0gcHRyLT5uZXh0KSB7Ci0gCQluKys7Ci0gCX0KLSAjaWYgS0VFUF9OSVNfQVRfRU5ECi0tCWlmICgoTlVMTCAhPSBwdHIpICYmIChOVUxMICE9IHB0ci0+bGluZSkpIHsKLSsJaWYgKE5VTEwgIT0gcHRyKSB7Ci0gCQluaXMgPSBwdHI7Ci0gCX0KLSAjZW5kaWYKLS0tIAotMi4xLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC1jb3B5LWV4dGVuZGVkLWF0dHJpYnV0ZXMtb2YtaG9tZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQtY29weS1leHRlbmRlZC1hdHRyaWJ1dGVzLW9mLWhvbWUucGF0Y2gKaW5kZXggNjBhNDZlMS4uNDc0YjNhMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC1jb3B5LWV4dGVuZGVkLWF0dHJpYnV0ZXMtb2YtaG9tZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLWNvcHktZXh0ZW5kZWQtYXR0cmlidXRlcy1vZi1ob21lLnBhdGNoCkBAIC0xLDQ3ICsxLDQxIEBACi1Gcm9tIGFjZWM5MzU0MGViYTY4OTk2NjFjNjA3NDA4NDk4YWM3MmFiMDdhNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/Sm9zPUMzPUE5PTIwQm9sbG8/PSA8am9zZS5ib2xsb0Bpb3QuYnpoPgotRGF0ZTogVHVlLCA3IE1hciAyMDE3IDE2OjAzOjAzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIHVzZXJhZGQ6IGNvcHkgZXh0ZW5kZWQgYXR0cmlidXRlcyBvZiBob21lCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CiAKIFRoZSBIb21lIGRpcmVjdG9yeSB3YXNuJ3QgZ2V0dGluZyB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlcwogb2YgL2V0Yy9za2VsLiBUaGlzIHBhdGNoIGZpeGVzIHRoYXQgaXNzdWUgYW5kIGFkZHMgdGhlIGNvcHkKIG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIHRoZSByb290IG9mIHRoZSBob21lIGRpcmVjdG9yeS4KIAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9saXN0cy5hbGlvdGguZGViaWFuLm9yZy9waXBlcm1haWwvcGtnLXNoYWRvdy1jb21taXRzLzIwMTctTWFyY2gvMDAzODA0Lmh0bWxdCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAotQ2hhbmdlLUlkOiBJY2Q2MzNmN2M2YzQ5NGVmZDJhMzBjYjhmMDRjMzA2Zjc0OWFkMGMzYgogU2lnbmVkLW9mZi1ieTogSm9zw6kgQm9sbG8gPGpvc2UuYm9sbG9AaW90LmJ6aD4KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIC0tLQogIHNyYy91c2VyYWRkLmMgfCA2ICsrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBhOGExZjc2Li44YWVmYjljIDEwMDY0NAoraW5kZXggZTcyMWU1Mi4uYzc0ZTQ5MSAxMDA2NDQKIC0tLSBhL3NyYy91c2VyYWRkLmMKICsrKyBiL3NyYy91c2VyYWRkLmMKLUBAIC01Miw2ICs1Miw5IEBACi0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorQEAgLTU0LDYgKzU0LDkgQEAKKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICAjaW5jbHVkZSA8dGltZS5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KICsjaWZkZWYgV0lUSF9BVFRSCiArI2luY2x1ZGUgPGF0dHIvbGliYXR0ci5oPgogKyNlbmRpZgogICNpbmNsdWRlICJjaGtuYW1lLmgiCiAgI2luY2x1ZGUgImRlZmluZXMuaCIKICAjaW5jbHVkZSAiZmFpbGxvZy5oIgotQEAgLTE5MTUsNiArMTkxOCw5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQotIAkJY2hvd24gKHVzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOwotIAkJY2htb2QgKHVzZXJfaG9tZSwKK0BAIC0yMDQyLDYgKzIwNDUsOSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfaG9tZSAodm9pZCkKKyAJCSh2b2lkKSBjaG93biAocHJlZml4X3VzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOworIAkJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCiAgCQkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwogKyNpZmRlZiBXSVRIX0FUVFIKLSsJCWF0dHJfY29weV9maWxlIChkZWZfdGVtcGxhdGUsIHVzZXJfaG9tZSwgTlVMTCwgTlVMTCk7CisrCSAgICAgICAgICAgICAgIGF0dHJfY29weV9maWxlIChkZWZfdGVtcGxhdGUsIHVzZXJfaG9tZSwgTlVMTCwgTlVMTCk7CiArI2VuZGlmCiAgCQlob21lX2FkZGVkID0gdHJ1ZTsKICAjaWZkZWYgV0lUSF9BVURJVAogIAkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKIC0tIAotMi45LjMKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCmluZGV4IDJmMDg0YjQuLjcwMjQxMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoCkBAIC0xLDE3ICsxLDE3IEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorU3ViamVjdDogW1BBVENIXSB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKIAotU3ViamVjdDogdXNlcmFkZC5jOiBjcmVhdGUgcGFyZW50IGRpcmVjdG9yaWVzIHdoZW4gbmVjZXNzYXJ5CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvdXNlcmFkZC5jIHwgICA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCisgc3JjL3VzZXJhZGQuYyB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IDRiZDk2OWQuLmNiNWRkNmMgMTAwNjQ0CitpbmRleCA3MjE0ZTcyLi4zYWFmNDVjIDEwMDY0NAogLS0tIGEvc3JjL3VzZXJhZGQuYwogKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTE4OTYsNiArMTg5NiwzNSBAQCBzdGF0aWMgdm9pZCB1c3JfdXBkYXRlICh2b2lkKQorQEAgLTIwMjEsNiArMjAyMSwzNSBAQCBzdGF0aWMgdm9pZCB1c3JfdXBkYXRlICh2b2lkKQogIH0KICAKICAvKgpAQCAtNDcsNjMgKzQ3LDY4IEBACiAgICogY3JlYXRlX2hvbWUgLSBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQogICAqCiAgICoJY3JlYXRlX2hvbWUoKSBjcmVhdGVzIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QKLUBAIC0xOTEwLDM5ICsxOTM5LDM2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQorQEAgLTIwMzgsNDIgKzIwNjcsMzkgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2hvbWUgKHZvaWQpCiAgCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwogIAkJfQogICNlbmRpZgogLQkJLyogWFhYIC0gY3JlYXRlIG1pc3NpbmcgcGFyZW50IGRpcmVjdG9yaWVzLiAgLS1tYXJla20gKi8KLS0JCWlmIChta2RpciAodXNlcl9ob21lLCAwKSAhPSAwKSB7CistCQlpZiAobWtkaXIgKHByZWZpeF91c2VyX2hvbWUsIDApICE9IDApIHsKIC0JCQlmcHJpbnRmIChzdGRlcnIsCiAtCQkJICAgICAgICAgXygiJXM6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iKSwKLS0JCQkgICAgICAgICBQcm9nLCB1c2VyX2hvbWUpOwotLSNpZmRlZiBXSVRIX0FVRElUCistCQkJICAgICAgICAgUHJvZywgcHJlZml4X3VzZXJfaG9tZSk7CisrCQlta2Rpcl9wKHVzZXJfaG9tZSk7CisrCX0KKysJaWYgKGFjY2VzcyAocHJlZml4X3VzZXJfaG9tZSwgRl9PSykgIT0gMCkgeworICNpZmRlZiBXSVRIX0FVRElUCiAtCQkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKIC0JCQkgICAgICAgICAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAogLQkJCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAogLQkJCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX0ZBSUxVUkUpOwotLSNlbmRpZgotLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLS0JCX0KLS0JCWNob3duICh1c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKLS0JCWNobW9kICh1c2VyX2hvbWUsCi0tCQkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwotLSNpZmRlZiBXSVRIX0FUVFIKLS0JCWF0dHJfY29weV9maWxlIChkZWZfdGVtcGxhdGUsIHVzZXJfaG9tZSwgTlVMTCwgTlVMTCk7Ci0tI2VuZGlmCi0tCQlob21lX2FkZGVkID0gdHJ1ZTsKLSsJCW1rZGlyX3AodXNlcl9ob21lKTsKLSsJfQotKwlpZiAoYWNjZXNzICh1c2VyX2hvbWUsIEZfT0spICE9IDApIHsKLSAjaWZkZWYgV0lUSF9BVURJVAotIAkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKLSAJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0gCQkgICAgICAgICAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLS0JCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX1NVQ0NFU1MpOwotKwkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7CisrCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAorKwkJCSAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAorKwkJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKKysJCQkgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7CiAgI2VuZGlmCi0tI2lmZGVmIFdJVEhfU0VMSU5VWAotLQkJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCi0tCQlpZiAocmVzZXRfc2VsaW51eF9maWxlX2NvbnRleHQgKCkgIT0gMCkgewogLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKIC0JCX0KKy0JCSh2b2lkKSBjaG93biAocHJlZml4X3VzZXJfaG9tZSwgdXNlcl9pZCwgdXNlcl9naWQpOworLQkJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCistCQkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwogKwkJZmFpbF9leGl0IChFX0hPTUVESVIpOwogKwl9Ci0rCWNob3duICh1c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKLSsJY2htb2QgKHVzZXJfaG9tZSwKKysJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7CisrCWNobW9kIChwcmVmaXhfdXNlcl9ob21lLAogKwkgICAgICAgMDc3NyAmIH5nZXRkZWZfbnVtICgiVU1BU0siLCBHRVRERUZfREVGQVVMVF9VTUFTSykpOwotKyNpZmRlZiBXSVRIX0FUVFIKKyAjaWZkZWYgV0lUSF9BVFRSCistCSAgICAgICAgICAgICAgIGF0dHJfY29weV9maWxlIChkZWZfdGVtcGxhdGUsIHVzZXJfaG9tZSwgTlVMTCwgTlVMTCk7CiArCWF0dHJfY29weV9maWxlIChkZWZfdGVtcGxhdGUsIHVzZXJfaG9tZSwgTlVMTCwgTlVMTCk7Ci0rI2VuZGlmCisgI2VuZGlmCistCQlob21lX2FkZGVkID0gdHJ1ZTsKICsJaG9tZV9hZGRlZCA9IHRydWU7Ci0rI2lmZGVmIFdJVEhfQVVESVQKKyAjaWZkZWYgV0lUSF9BVURJVAorLQkJYXVkaXRfbG9nZ2VyIChBVURJVF9BRERfVVNFUiwgUHJvZywKKy0JCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCistCQkgICAgICAgICAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKKy0JCSAgICAgICAgICAgICAgU0hBRE9XX0FVRElUX1NVQ0NFU1MpOwogKwlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAogKwkJICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCiArCQkgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCiArCQkgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7CiAgI2VuZGlmCi0rI2lmZGVmIFdJVEhfU0VMSU5VWAorICNpZmRlZiBXSVRIX1NFTElOVVgKKy0JCS8qIFJlc2V0IFNFTGludXggdG8gY3JlYXRlIGZpbGVzIHdpdGggZGVmYXVsdCBjb250ZXh0cyAqLworLQkJaWYgKHJlc2V0X3NlbGludXhfZmlsZV9jb250ZXh0ICgpICE9IDApIHsKKy0JCQlmcHJpbnRmIChzdGRlcnIsCistCQkJICAgICAgICAgXygiJXM6IGNhbm5vdCByZXNldCBTRUxpbnV4IGZpbGUgY3JlYXRpb24gY29udGV4dFxuIiksCistCQkJICAgICAgICAgUHJvZyk7CistCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOworLQkJfQorLSNlbmRpZgogKwkvKiBSZXNldCBTRUxpbnV4IHRvIGNyZWF0ZSBmaWxlcyB3aXRoIGRlZmF1bHQgY29udGV4dHMgKi8KICsJaWYgKHJlc2V0X3NlbGludXhfZmlsZV9jb250ZXh0ICgpICE9IDApIHsKKysJCWZwcmludGYgKHN0ZGVyciwKKysJCQkgXygiJXM6IGNhbm5vdCByZXNldCBTRUxpbnV4IGZpbGUgY3JlYXRpb24gY29udGV4dFxuIiksCisrCQkJIFByb2cpOwogKwkJZmFpbF9leGl0IChFX0hPTUVESVIpOwogIAl9CiArI2VuZGlmCkBAIC0xMTEsNSArMTE2LDUgQEAKICAKICAvKgogLS0gCi0xLjcuOS41CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL0NWRS0yMDE3LTI2MTYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTctMjYxNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3MjhmMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTctMjYxNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLXNoYWRvdy00LjIuMTogRml4IENWRS0yMDE3LTI2MTYKLQotW05vIHVwc3RyZWFtIHRyYWNraW5nXSAtLSBodHRwczovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTg1NTk0MwotCi1zdTogcHJvcGVybHkgY2xlYXIgY2hpbGQgUElECi0KLUlmIHN1IGlzIGNvbXBpbGVkIHdpdGggUEFNIHN1cHBvcnQsIGl0IGlzIHBvc3NpYmxlIGZvciBhbnkgbG9jYWwgdXNlcgotdG8gc2VuZCBTSUdLSUxMIHRvIG90aGVyIHByb2Nlc3NlcyB3aXRoIHJvb3QgcHJpdmlsZWdlcy4gVGhlcmUgYXJlCi1vbmx5IHR3byBjb25kaXRpb25zLiBGaXJzdCwgdGhlIHVzZXIgbXVzdCBiZSBhYmxlIHRvIHBlcmZvcm0gc3Ugd2l0aAotYSBzdWNjZXNzZnVsIGxvZ2luLiBUaGlzIGRvZXMgTk9UIGhhdmUgdG8gYmUgdGhlIHJvb3QgdXNlciwgZXZlbiB1c2luZwotc3Ugd2l0aCB0aGUgc2FtZSBpZCBpcyBlbm91Z2gsIGUuZy4gInN1ICQod2hvYW1pKSIuIFNlY29uZCwgU0lHS0lMTAotY2FuIG9ubHkgYmUgc2VudCB0byBwcm9jZXNzZXMgd2hpY2ggd2VyZSBleGVjdXRlZCBhZnRlciB0aGUgc3UgcHJvY2Vzcy4KLUl0IGlzIG5vdCBwb3NzaWJsZSB0byBzZW5kIFNJR0tJTEwgdG8gcHJvY2Vzc2VzIHdoaWNoIHdlcmUgYWxyZWFkeQotcnVubmluZy4gSSBjb25zaWRlciB0aGlzIGFzIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgYmVjYXVzZSBJIHdhcwotYWJsZSB0byB3cml0ZSBhIHByb29mIG9mIGNvbmNlcHQgd2hpY2ggdW5sb2NrZWQgYSBzY3JlZW4gc2F2ZXIgb2YKLWFub3RoZXIgdXNlciB0aGlzIHdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvY29tbWl0LzA4ZmQ0YjY5ZTg0MzY0Njc3YTEwZTUxOWNjYjI1YjcxNzEwZWU2ODZdCi1DVkU6IENWRS0yMDE3LTI2MTYKLWJ1ZzogODU1OTQzCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy9zdS5jIGIvc3JjL3N1LmMKLWluZGV4IDM3MDQyMTcuLjFlZmNkNjEgMTAwNjQ0Ci0tLS0gYS9zcmMvc3UuYwotKysrIGIvc3JjL3N1LmMKLUBAIC0zNjMsMjAgKzM2MywzNSBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3BhbV9jbG9zZV9zZXNzaW9uICh2b2lkKQotIAkJCQkvKiB3YWtlIGNoaWxkIHdoZW4gcmVzdW1lZCAqLwotIAkJCQlraWxsIChwaWQsIFNJR0NPTlQpOwotIAkJCQlzdG9wID0gZmFsc2U7Ci0rCQkJfSBlbHNlIHsKLSsJCQkJcGlkX2NoaWxkID0gMDsKLSAJCQl9Ci0gCQl9IHdoaWxlICghc3RvcCk7Ci0gCX0KLSAKLS0JaWYgKDAgIT0gY2F1Z2h0KSB7Ci0rCWlmICgwICE9IGNhdWdodCAmJiAwICE9IHBpZF9jaGlsZCkgewotIAkJKHZvaWQpIGZwdXRzICgiXG4iLCBzdGRlcnIpOwotIAkJKHZvaWQpIGZwdXRzIChfKCJTZXNzaW9uIHRlcm1pbmF0ZWQsIHRlcm1pbmF0aW5nIHNoZWxsLi4uIiksCi0gCQkgICAgICAgICAgICAgIHN0ZGVycik7Ci0gCQkodm9pZCkga2lsbCAoLXBpZF9jaGlsZCwgY2F1Z2h0KTsKLSAKLSAJCSh2b2lkKSBzaWduYWwgKFNJR0FMUk0sIGtpbGxfY2hpbGQpOwotKwkJKHZvaWQpIHNpZ25hbCAoU0lHQ0hMRCwgY2F0Y2hfc2lnbmFscyk7Ci0gCQkodm9pZCkgYWxhcm0gKDIpOwotIAotLQkJKHZvaWQpIHdhaXQgKCZzdGF0dXMpOwotKwkJc2lnZW1wdHlzZXQgKCZvdXJzZXQpOwotKwkJaWYgKChzaWdhZGRzZXQgKCZvdXJzZXQsIFNJR0FMUk0pICE9IDApCi0rCQkgICAgfHwgKHNpZ3Byb2NtYXNrIChTSUdfQkxPQ0ssICZvdXJzZXQsIE5VTEwpICE9IDApKSB7Ci0rCQkJZnByaW50ZiAoc3RkZXJyLCBfKCIlczogc2lnbmFsIG1hc2tpbmcgbWFsZnVuY3Rpb25cbiIpLCBQcm9nKTsKLSsJCQlraWxsX2NoaWxkICgwKTsKLSsJCX0gZWxzZSB7Ci0rCQkJd2hpbGUgKDAgPT0gd2FpdHBpZCAocGlkX2NoaWxkLCAmc3RhdHVzLCBXTk9IQU5HKSkgewotKwkJCQlzaWdzdXNwZW5kICgmb3Vyc2V0KTsKLSsJCQl9Ci0rCQkJcGlkX2NoaWxkID0gMDsKLSsJCQkodm9pZCkgc2lncHJvY21hc2sgKFNJR19VTkJMT0NLLCAmb3Vyc2V0LCBOVUxMKTsKLSsJCX0KLSsKLSAJCSh2b2lkKSBmcHV0cyAoXygiIC4uLnRlcm1pbmF0ZWQuXG4iKSwgc3RkZXJyKTsKLSAJfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL0NWRS0yMDE4LTcxNjkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTgtNzE2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY4ODdkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvQ1ZFLTIwMTgtNzE2OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NiArMCwwIEBACi1Gcm9tIGZiMjhjOTliOGE2NmZmMjYwNWM1Y2I5NmFiYzBhNGQ5NzVmOTJkZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVrc2EgU2FyYWkgPGFzYXJhaUBzdXNlLmRlPgotRGF0ZTogVGh1LCAxNSBGZWIgMjAxOCAyMzo0OTo0MCArMTEwMAotU3ViamVjdDogW1BBVENIXSBuZXdnaWRtYXA6IGVuZm9yY2Ugc2V0Z3JvdXBzPWRlbnkgaWYgc2VsZi1tYXBwaW5nIGEgZ3JvdXAKLQotVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWF0Y2ggdGhlIGtlcm5lbC1zaWRlIHBvbGljeSBvZiAic2VsZi1tYXBwaW5nIGluIGEKLXVzZXIgbmFtZXNwYWNlIGlzIGZpbmUsIGJ1dCB5b3UgY2Fubm90IGRyb3AgZ3JvdXBzIiAtLSBhIHBvbGljeSB0aGF0IHdhcwotY3JlYXRlZCBpbiBvcmRlciB0byBzdG9wIHVzZXIgbmFtZXNwYWNlcyBmcm9tIGFsbG93aW5nIHRyaXZpYWwgcHJpdmlsZWdlCi1lc2NhbGF0aW9uIGJ5IGRyb3BwaW5nIHN1cHBsZW1lbnRhcnkgZ3JvdXBzIHRoYXQgd2VyZSAiYmxhY2tsaXN0ZWQiIGZyb20KLWNlcnRhaW4gcGF0aHMuCi0KLVRoaXMgaXMgdGhlIHNpbXBsZXN0IGZpeCBmb3IgdGhlIHVuZGVybHlpbmcgaXNzdWUsIGFuZCBlZmZlY3RpdmVseSBtYWtlcwotaXQgc28gdGhhdCB1bmxlc3MgYSB1c2VyIGhhcyBhIHZhbGlkIG1hcHBpbmcgc2V0IGluIC9ldGMvc3ViZ2lkICh3aGljaAotb25seSBhZG1pbmlzdHJhdG9ycyBjYW4gbW9kaWZ5KSAtLSBhbmQgdGhleSBhcmUgY3VycmVudGx5IHRyeWluZyB0byB1c2UKLXRoYXQgbWFwcGluZyAtLSB0aGVuIC9wcm9jLyRwaWQvc2V0Z3JvdXBzIHdpbGwgYmUgc2V0IHRvIGRlbnkuIFRoaXMKLXdvcmthcm91bmQgaXMgb25seSBwYXJ0aWFsLCBiZWNhdXNlIGlkZWFsbHkgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHNldAotYW4gImFsbG93X3NldGdyb3VwcyIgb3IgImRlbnlfc2V0Z3JvdXBzIiBmbGFnIGluIC9ldGMvc3ViZ2lkIHRvIGFsbG93Ci1hZG1pbmlzdHJhdG9ycyB0byBmdXJ0aGVyIHJlc3RyaWN0IG5ld2dpZG1hcCgxKS4KLQotV2UgYWxzbyBkb24ndCB3cml0ZSBhbnl0aGluZyBpbiB0aGUgImFsbG93IiBjYXNlIGJlY2F1c2UgImFsbG93IiBpcyB0aGUKLWRlZmF1bHQsIGFuZCB1c2VycyBtYXkgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gImRlbnkiIGV2ZW4gaWYgdGhleQotdGVjaG5pY2FsbHkgYXJlIGFsbG93ZWQgdG8gdXNlIHNldGdyb3Vwcy4gQW5kIHdlIGRvbid0IHdyaXRlIGFueXRoaW5nIGlmCi10aGUgc2V0Z3JvdXBzIHBvbGljeSBpcyBhbHJlYWR5ICJkZW55Ii4KLQotUmVmOiBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC91YnVudHUvK3NvdXJjZS9zaGFkb3cvK2J1Zy8xNzI5MzU3Ci1GaXhlczogQ1ZFLTIwMTgtNzE2OQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9jb21taXQvZmIyOGM5OWI4YTY2ZmYyNjA1YzVjYjk2YWJjMGE0ZDk3NWY5MmRlMF0KLVJlcG9ydGVkLWJ5OiBDcmFpZyBGdXJtYW4gPGNyYWlnLmZ1cm1hbjg5QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZWtzYSBTYXJhaSA8YXNhcmFpQHN1c2UuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+Ci0tLS0KLSBzcmMvbmV3Z2lkbWFwLmMgfCA4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgODAgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9uZXdnaWRtYXAuYyBiL3NyYy9uZXdnaWRtYXAuYwotaW5kZXggYjFlMzM1MTMuLjU5YTJlNzVjIDEwMDY0NAotLS0tIGEvc3JjL25ld2dpZG1hcC5jCi0rKysgYi9zcmMvbmV3Z2lkbWFwLmMKLUBAIC00NiwzMiArNDYsMzcgQEAKLSAgKi8KLSBjb25zdCBjaGFyICpQcm9nOwotIAotLXN0YXRpYyBib29sIHZlcmlmeV9yYW5nZShzdHJ1Y3QgcGFzc3dkICpwdywgc3RydWN0IG1hcF9yYW5nZSAqcmFuZ2UpCi0rCi0rc3RhdGljIGJvb2wgdmVyaWZ5X3JhbmdlKHN0cnVjdCBwYXNzd2QgKnB3LCBzdHJ1Y3QgbWFwX3JhbmdlICpyYW5nZSwgYm9vbCAqYWxsb3dfc2V0Z3JvdXBzKQotIHsKLSAJLyogQW4gZW1wdHkgcmFuZ2UgaXMgaW52YWxpZCAqLwotIAlpZiAocmFuZ2UtPmNvdW50ID09IDApCi0gCQlyZXR1cm4gZmFsc2U7Ci0gCi0tCS8qIFRlc3QgL2V0Yy9zdWJnaWQgKi8KLS0JaWYgKGhhdmVfc3ViX2dpZHMocHctPnB3X25hbWUsIHJhbmdlLT5sb3dlciwgcmFuZ2UtPmNvdW50KSkKLSsJLyogVGVzdCAvZXRjL3N1YmdpZC4gSWYgdGhlIG1hcHBpbmcgaXMgdmFsaWQgdGhlbiB3ZSBhbGxvdyBzZXRncm91cHMuICovCi0rCWlmIChoYXZlX3N1Yl9naWRzKHB3LT5wd19uYW1lLCByYW5nZS0+bG93ZXIsIHJhbmdlLT5jb3VudCkpIHsKLSsJCSphbGxvd19zZXRncm91cHMgPSB0cnVlOwotIAkJcmV0dXJuIHRydWU7Ci0rCX0KLSAKLS0JLyogQWxsb3cgYSBwcm9jZXNzIHRvIG1hcCBpdCdzIG93biBnaWQgKi8KLS0JaWYgKChyYW5nZS0+Y291bnQgPT0gMSkgJiYgKHB3LT5wd19naWQgPT0gcmFuZ2UtPmxvd2VyKSkKLSsJLyogQWxsb3cgYSBwcm9jZXNzIHRvIG1hcCBpdHMgb3duIGdpZC4gKi8KLSsJaWYgKChyYW5nZS0+Y291bnQgPT0gMSkgJiYgKHB3LT5wd19naWQgPT0gcmFuZ2UtPmxvd2VyKSkgewotKwkJLyogbm9vcCAtLSBpZiBzZXRncm91cHMgaXMgZW5hYmxlZCBhbHJlYWR5IHdlIHdvbid0IGRpc2FibGUgaXQuICovCi0gCQlyZXR1cm4gdHJ1ZTsKLSsJfQotIAotIAlyZXR1cm4gZmFsc2U7Ci0gfQotIAotIHN0YXRpYyB2b2lkIHZlcmlmeV9yYW5nZXMoc3RydWN0IHBhc3N3ZCAqcHcsIGludCByYW5nZXMsCi0tCXN0cnVjdCBtYXBfcmFuZ2UgKm1hcHBpbmdzKQotKwlzdHJ1Y3QgbWFwX3JhbmdlICptYXBwaW5ncywgYm9vbCAqYWxsb3dfc2V0Z3JvdXBzKQotIHsKLSAJc3RydWN0IG1hcF9yYW5nZSAqbWFwcGluZzsKLSAJaW50IGlkeDsKLSAKLSAJbWFwcGluZyA9IG1hcHBpbmdzOwotIAlmb3IgKGlkeCA9IDA7IGlkeCA8IHJhbmdlczsgaWR4KyssIG1hcHBpbmcrKykgewotLQkJaWYgKCF2ZXJpZnlfcmFuZ2UocHcsIG1hcHBpbmcpKSB7Ci0rCQlpZiAoIXZlcmlmeV9yYW5nZShwdywgbWFwcGluZywgYWxsb3dfc2V0Z3JvdXBzKSkgewotIAkJCWZwcmludGYoc3RkZXJyLCBfKCAiJXM6IGdpZCByYW5nZSBbJWx1LSVsdSkgLT4gWyVsdS0lbHUpIG5vdCBhbGxvd2VkXG4iKSwKLSAJCQkJUHJvZywKLSAJCQkJbWFwcGluZy0+dXBwZXIsCi1AQCAtODksNiArOTQsNzAgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKLSAJZXhpdChFWElUX0ZBSUxVUkUpOwotIH0KLSAKLSt2b2lkIHdyaXRlX3NldGdyb3VwcyhpbnQgcHJvY19kaXJfZmQsIGJvb2wgYWxsb3dfc2V0Z3JvdXBzKQotK3sKLSsJaW50IHNldGdyb3Vwc19mZDsKLSsJY2hhciAqcG9saWN5LCBwb2xpY3lfYnVmZmVyWzQwOTZdOwotKwotKwkvKgotKwkgKiBEZWZhdWx0IGlzICJkZW55IiwgYW5kIGFueSAiYWxsb3ciIHdpbGwgb3V0LXJhbmsgYSAiZGVueSIuIFdlIGRvbid0Ci0rCSAqIGZvcmNlZnVsbHkgd3JpdGUgYW4gImFsbG93IiBoZXJlIGJlY2F1c2UgdGhlIHByb2Nlc3Mgd2UgYXJlIHdyaXRpbmcKLSsJICogbWFwcGluZ3MgZm9yIG1heSBoYXZlIGFscmVhZHkgc2V0IHRoZW1zZWx2ZXMgdG8gImRlbnkiIChhbmQgImFsbG93IgotKwkgKiBpcyB0aGUgZGVmYXVsdCBhbnl3YXkpLiBTbyBhbGxvd19zZXRncm91cHMgPT0gdHJ1ZSBpcyBhIG5vb3AuCi0rCSAqLwotKwlwb2xpY3kgPSAiZGVueVxuIjsKLSsJaWYgKGFsbG93X3NldGdyb3VwcykKLSsJCXJldHVybjsKLSsKLSsJc2V0Z3JvdXBzX2ZkID0gb3BlbmF0KHByb2NfZGlyX2ZkLCAic2V0Z3JvdXBzIiwgT19SRFdSfE9fQ0xPRVhFQyk7Ci0rCWlmIChzZXRncm91cHNfZmQgPCAwKSB7Ci0rCQkvKgotKwkJICogSWYgaXQncyBhbiBFTk9FTlQgdGhlbiB3ZSBhcmUgb24gdG9vIG9sZCBhIGtlcm5lbCBmb3IgdGhlIHNldGdyb3VwcwotKwkJICogY29kZSB0byBleGlzdC4gRW1pdCBhIHdhcm5pbmcgYW5kIGJhaWwgb24gdGhpcy4KLSsJCSAqLwotKwkJaWYgKEVOT0VOVCA9PSBlcnJubykgewotKwkJCWZwcmludGYoc3RkZXJyLCBfKCIlczoga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCBzZXRncm91cHMgcmVzdHJpY3Rpb25zXG4iKSwgUHJvZyk7Ci0rCQkJZ290byBvdXQ7Ci0rCQl9Ci0rCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkbid0IG9wZW4gcHJvY2VzcyBzZXRncm91cHM6ICVzXG4iKSwKLSsJCQlQcm9nLAotKwkJCXN0cmVycm9yKGVycm5vKSk7Ci0rCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsKLSsJLyoKLSsJICogQ2hlY2sgd2hldGhlciB0aGUgcG9saWN5IGlzIGFscmVhZHkgd2hhdCB3ZSB3YW50LiAvcHJvYy9zZWxmL3NldGdyb3VwcwotKwkgKiBpcyB3cml0ZS1vbmNlLCBzbyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFmdGVyIGl0J3MgYWxyZWFkeSB3cml0dGVuIHRvIHdpbGwKLSsJICogZmFpbC4KLSsJICovCi0rCWlmIChyZWFkKHNldGdyb3Vwc19mZCwgcG9saWN5X2J1ZmZlciwgc2l6ZW9mKHBvbGljeV9idWZmZXIpKSA8IDApIHsKLSsJCWZwcmludGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHJlYWQgc2V0Z3JvdXBzOiAlc1xuIiksCi0rCQkJUHJvZywKLSsJCQlzdHJlcnJvcihlcnJubykpOwotKwkJZXhpdChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCWlmICghc3RybmNtcChwb2xpY3lfYnVmZmVyLCBwb2xpY3ksIHN0cmxlbihwb2xpY3kpKSkKLSsJCWdvdG8gb3V0OwotKwotKwkvKiBXcml0ZSB0aGUgcG9saWN5LiAqLwotKwlpZiAobHNlZWsoc2V0Z3JvdXBzX2ZkLCAwLCBTRUVLX1NFVCkgPCAwKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byBzZWVrIHNldGdyb3VwczogJXNcbiIpLAotKwkJCVByb2csCi0rCQkJc3RyZXJyb3IoZXJybm8pKTsKLSsJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwlpZiAoZHByaW50ZihzZXRncm91cHNfZmQsICIlcyIsIHBvbGljeSkgPCAwKSB7Ci0rCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byBzZXRncm91cHMgJXMgcG9saWN5OiAlc1xuIiksCi0rCQkJUHJvZywKLSsJCQlwb2xpY3ksCi0rCQkJc3RyZXJyb3IoZXJybm8pKTsKLSsJCWV4aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotK291dDoKLSsJY2xvc2Uoc2V0Z3JvdXBzX2ZkKTsKLSt9Ci0rCi0gLyoKLSAgKiBuZXdnaWRtYXAgLSBTZXQgdGhlIGdpZF9tYXAgZm9yIHRoZSBzcGVjaWZpZWQgcHJvY2VzcwotICAqLwotQEAgLTEwMyw2ICsxNzIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXN0cnVjdCBzdGF0IHN0OwotIAlzdHJ1Y3QgcGFzc3dkICpwdzsKLSAJaW50IHdyaXR0ZW47Ci0rCWJvb2wgYWxsb3dfc2V0Z3JvdXBzID0gZmFsc2U7Ci0gCi0gCVByb2cgPSBCYXNlbmFtZSAoYXJndlswXSk7Ci0gCi1AQCAtMTQ1LDcgKzIxNSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQkJKHVuc2lnbmVkIGxvbmcpIGdldHVpZCAoKSkpOwotIAkJcmV0dXJuIEVYSVRfRkFJTFVSRTsKLSAJfQotLQkKLSsKLSAJLyogR2V0IHRoZSBlZmZlY3RpdmUgdWlkIGFuZCBlZmZlY3RpdmUgZ2lkIG9mIHRoZSB0YXJnZXQgcHJvY2VzcyAqLwotIAlpZiAoZnN0YXQocHJvY19kaXJfZmQsICZzdCkgPCAwKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IENvdWxkIG5vdCBzdGF0IGRpcmVjdG9yeSBmb3IgdGFyZ2V0ICV1XG4iKSwKLUBAIC0xNzcsOCArMjQ3LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlpZiAoIW1hcHBpbmdzKQotIAkJdXNhZ2UoKTsKLSAKLS0JdmVyaWZ5X3JhbmdlcyhwdywgcmFuZ2VzLCBtYXBwaW5ncyk7Ci0rCXZlcmlmeV9yYW5nZXMocHcsIHJhbmdlcywgbWFwcGluZ3MsICZhbGxvd19zZXRncm91cHMpOwotIAotKwl3cml0ZV9zZXRncm91cHMocHJvY19kaXJfZmQsIGFsbG93X3NldGdyb3Vwcyk7Ci0gCXdyaXRlX21hcHBpbmcocHJvY19kaXJfZmQsIHJhbmdlcywgbWFwcGluZ3MsICJnaWRfbWFwIik7Ci0gCXN1Yl9naWRfY2xvc2UoKTsKLSAKLS0tIAotMi4xMy4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9hbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKaW5kZXggNjE1YzZlMC4uZmE3ZWIwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKQEAgLTEsMjEgKzEsMjEgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQKIAotQWxsb3cgZm9yIHNldHRpbmcgcGFzc3dvcmQgaW4gY2xlYXIgdGV4dC4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIC0tLQotIHNyYy9NYWtlZmlsZS5hbSB8ICAgIDggKysrKy0tLS0KLSBzcmMvZ3JvdXBhZGQuYyAgfCAgICA4ICsrKysrKystCi0gc3JjL2dyb3VwbW9kLmMgIHwgICAgOCArKysrKysrLQotIHNyYy91c2VyYWRkLmMgICB8ICAgIDkgKysrKysrKy0tCi0gc3JjL3VzZXJtb2QuYyAgIHwgICAgOCArKysrKysrLQotIDUgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKyBzcmMvTWFrZWZpbGUuYW0gfCAgOCArKysrLS0tLQorIHNyYy9ncm91cGFkZC5jICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgc3JjL2dyb3VwbW9kLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvdXNlcmFkZC5jICAgfCAyMSArKysrKysrKysrKysrKystLS0tLS0KKyBzcmMvdXNlcm1vZC5jICAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIDUgZmlsZXMgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IDI1ZTI4OGQuLjg1NmIwODcgMTAwNjQ0CitpbmRleCAzYzk4YThkLi5iODA5M2Q1IDEwMDY0NAogLS0tIGEvc3JjL01ha2VmaWxlLmFtCiArKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC04OCwxMCArODgsMTAgQEAgY2hncGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQorQEAgLTkzLDEwICs5MywxMCBAQCBjaGdwYXNzd2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQlNFTElOVVgpICQoTElCQ1JZUFQpCiAgY2hzaF9MREFERCAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUX05PUEFNKSAkKExJQlNLRVkpICQoTElCTUQpCiAgY2hwYXNzd2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQogIGdwYXNzd2RfTERBREQgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQpAQCAtMjgsOSArMjgsOSBAQAogIGdycGNrX0xEQUREICAgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQogIGdycGNvbnZfTERBREQgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQogIGdycHVuY29udl9MREFERCA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLUBAIC0xMTEsOSArMTExLDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCitAQCAtMTE3LDkgKzExNyw5IEBAIHN1X1NPVVJDRVMgICAgID0gXAogIAlzdWF1dGguYwotIHN1X0xEQUREICAgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQ1JZUFRfTk9QQU0pICQoTElCU0tFWSkgJChMSUJNRCkKKyBzdV9MREFERCAgICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQkNSWVBUX05PUEFNKSAkKExJQlNLRVkpICQoTElCTUQpCiAgc3Vsb2dpbl9MREFERCAgPSAkKExEQUREKSAkKExJQkNSWVBUKQogLXVzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKQogK3VzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkNSWVBUKQpAQCAtNDEsMzMgKzQxLDM5IEBACiAgCiAgaW5zdGFsbC1hbTogYWxsLWFtCiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwYWRkLmMgYi9zcmMvZ3JvdXBhZGQuYwotaW5kZXggZjcxNmY1Ny4uNGUyOGMyNiAxMDA2NDQKK2luZGV4IGI1NzAwNmMuLjYzZTFjNDggMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBhZGQuYwogKysrIGIvc3JjL2dyb3VwYWRkLmMKLUBAIC0xMjQsNiArMTI0LDcgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKK0BAIC0xMjMsOSArMTIzLDEwIEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCiAgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlXG4iCiAgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgR0lEXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOwogKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKLUBAIC0zODcsMTIgKzM4OCwxMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWV4aXQgKHN0YXR1cyk7CisgfQorQEAgLTM4NywxMyArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAogIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCiAgCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKICsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKICAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAogIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAogIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9CiAgCX07CiAgCi0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6IiwKLSsJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpQOnJSOiIsCistCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6QToiLAogIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewogIAkJc3dpdGNoIChjKSB7CiAgCQljYXNlICdmJzoKLUBAIC00NDQsNiArNDQ2LDEwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC00NDUsMTIgKzQ0NywyMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJcGZsZyA9IHRydWU7CiAgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOwogIAkJCWJyZWFrOwpAQCAtNzgsMzIgKzg0LDU3IEBACiAgCQljYXNlICdyJzoKICAJCQlyZmxnID0gdHJ1ZTsKICAJCQlicmVhazsKKyAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCWJyZWFrOworLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCSBQcm9nKTsKKysJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKKyAJCQl1c2FnZSAoRV9VU0FHRSk7CitAQCAtNTg0LDcgKzU5NCw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJncm91cGFkZCIpOworICNpZmRlZiBXSVRIX0FVRElUCiBkaWZmIC0tZ2l0IGEvc3JjL2dyb3VwbW9kLmMgYi9zcmMvZ3JvdXBtb2QuYwotaW5kZXggZDlkMzgwNy4uNjhmNDlkMSAxMDA2NDQKK2luZGV4IGIyOTNiOTguLjcyZGFmMmMgMTAwNjQ0CiAtLS0gYS9zcmMvZ3JvdXBtb2QuYwogKysrIGIvc3JjL2dyb3VwbW9kLmMKLUBAIC0xMjcsNiArMTI3LDcgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCitAQCAtMTM0LDggKzEzNCw5IEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQogIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gdXNlIGEgZHVwbGljYXRlIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgKGVuY3J5cHRlZClcbiIKICAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwogKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIGNsZWFyIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOworLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKICAJZXhpdCAoc3RhdHVzKTsKLUBAIC0zNzUsMTAgKzM3NiwxMSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgfQorQEAgLTM4MywxMSArMzg0LDEyIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCXsibmV3LW5hbWUiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbid9LAogIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCiAgCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKICsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKICAJCXsicm9vdCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorLQkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisrCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKICAJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQogIAl9OwotLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UjoiLAotKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UDpSOiIsCistCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOlA6IiwKKysJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlA6UjpBOiIsCiAgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CiAgCQlzd2l0Y2ggKGMpIHsKICAJCWNhc2UgJ2cnOgotQEAgLTQwNSw2ICs0MDcsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTQxNCw5ICs0MTYsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKICAJCQlwZmxnID0gdHJ1ZTsKICAJCQlicmVhazsKQEAgLTExMyw0MCArMTQ0LDY1IEBACiArCQkJYnJlYWs7CiAgCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KICAJCQlicmVhazsKKy0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkgUHJvZyk7CisrCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQlicmVhazsKICAJCWRlZmF1bHQ6CisgCQkJdXNhZ2UgKEVfVVNBR0UpOworQEAgLTc1Nyw3ICs3NjcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgiZ3JvdXBtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAogZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBiM2JkNDUxLi40NDE2ZjkwIDEwMDY0NAoraW5kZXggYzc0ZTQ5MS4uNzIxNGU3MiAxMDA2NDQKIC0tLSBhL3NyYy91c2VyYWRkLmMKICsrKyBiL3NyYy91c2VyYWRkLmMKLUBAIC03NzYsNiArNzc2LDcgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCitAQCAtODI5LDkgKzgyOSwxMCBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZVxuIgogIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CiArCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjbGVhciBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKICAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIGxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLUBAIC0xMDUwLDYgKzEwNTEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICB1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVzZXItZ3JvdXAgICAgICAgICAgICAgIGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlclxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMTA0LDkgKzExMDUsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKICAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCiAgCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAogKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKICAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCiAgCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorLQkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCiAgCQkJeyJzaGVsbCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotQEAgLTEwNjIsOSArMTA2NCw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl7InVpZCIsICAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCisgCQkJeyJ1c2VyLWdyb3VwIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnVSd9LAorQEAgLTExMTcsOSArMTExOSw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCX07CiAgCQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwKICAjaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOnJSOnM6dTpVWjoiLAotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOnM6dTpVWjoiLAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVWjoiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlVaOiIsCiAgI2Vsc2UJCQkJLyogIVdJVEhfU0VMSU5VWCAqLwotLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpzOnU6VSIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6czp1OlUiLAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVIiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVIiwKICAjZW5kaWYJCQkJLyogIVdJVEhfU0VMSU5VWCAqLwogIAkJICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CiAgCQkJc3dpdGNoIChjKSB7Ci1AQCAtMTIzMCw2ICsxMjMyLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTEyODUsMTIgKzEyODcsMTkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCQl9CiAgCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKICAJCQkJYnJlYWs7CkBAIC0xNTYsMzYgKzIxMiw2MiBAQAogIAkJCWNhc2UgJ3InOgogIAkJCQlyZmxnID0gdHJ1ZTsKICAJCQkJYnJlYWs7CisgCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCisgCQkJCWJyZWFrOworLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkJIFByb2cpOworKwkJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCQlicmVhazsKKyAJCQljYXNlICdzJzoKKyAJCQkJaWYgKCAgICggIVZBTElEIChvcHRhcmcpICkKK0BAIC0yMTQ4LDcgKzIxNTcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CisgCistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJ1c2VyYWRkIik7CisgI2lmZGVmIFdJVEhfQVVESVQKIGRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggZTdkNDM1MS4uYjc5ZjdhMyAxMDA2NDQKK2luZGV4IGU1NzE0MjYuLmNjZmJiOTkgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcm1vZC5jCiArKysgYi9zcmMvdXNlcm1vZC5jCi1AQCAtNDE5LDYgKzQxOSw3IEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCitAQCAtNDI0LDggKzQyNCw5IEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCiAgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbG9jYXRpb24gKHVzZSBvbmx5IHdpdGggLWQpXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdXNpbmcgZHVwbGljYXRlIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7CiAgCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICB1c2UgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IHBhc3N3b3JkXG4iKSwgdXNhZ2VvdXQpOwogKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IHBhc3N3b3JkXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOworLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLXMsIC0tc2hlbGwgU0hFTEwgICAgICAgICAgICAgbmV3IGxvZ2luIHNoZWxsIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwogIAkodm9pZCkgZnB1dHMgKF8oIiAgLXUsIC0tdWlkIFVJRCAgICAgICAgICAgICAgICAgbmV3IFVJRCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLUBAIC05OTYsNiArOTk3LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdW5sb2NrICAgICAgICAgICAgICAgICAgdW5sb2NrIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CitAQCAtMTAwMiw4ICsxMDAzLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCXsibW92ZS1ob21lIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJ30sCiAgCQkJeyJub24tdW5pcXVlIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKICAJCQl7InBhc3N3b3JkIiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAogKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKICAJCQl7InJvb3QiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorLQkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisrCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKICAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAogIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCi1AQCAtMTAxMiw3ICsxMDE0LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCXsidW5sb2NrIiwgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCitAQCAtMTAxOSw3ICsxMDIxLDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogIAkJCXtOVUxMLCAwLCBOVUxMLCAnXDAnfQogIAkJfTsKICAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAotLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpSOnM6dTpVIgotKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJhYzpkOmU6ZjpnOkc6aGw6TG1vcDpQOlI6czp1OlUiCistCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWM6ZDplOmY6ZzpHOmhsOkxtb3A6UDpSOnM6dTpVQToiCiAgI2lmZGVmIEVOQUJMRV9TVUJJRFMKICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAidjp3OlY6VzoiCiAgI2VuZGlmCQkJCS8qIEVOQUJMRV9TVUJJRFMgKi8KLUBAIC0xMTEyLDYgKzExMTQsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorQEAgLTExMTksOSArMTEyMSwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKICAJCQkJcGZsZyA9IHRydWU7CiAgCQkJCWJyZWFrOwpAQCAtMTk1LDcgKzI3NywyNCBAQAogKwkJCQlicmVhazsKICAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KICAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOwogIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoIVZBTElEIChvcHRhcmcpKSB7CitAQCAtMjA5OCw3ICsyMTA4LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAogLS0gCi0xLjcuOS41CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jaGVja19zaXplX29mX3VpZF90X2FuZF9naWRfdF91c2luZ19BQ19DSEVDS19TSVpFT0YucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NTU5MGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2NoZWNrX3NpemVfb2ZfdWlkX3RfYW5kX2dpZF90X3VzaW5nX0FDX0NIRUNLX1NJWkVPRi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gMmNiNTQxNThiODBjZGJkOTdjYTNiMzZkZjgzZjkyNTVlOTIzYWUzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbWVzIExlIEN1aXJvdCA8Y2hld2lAYXVyYS1vbmxpbmUuY28udWs+Ci1EYXRlOiBTYXQsIDIzIEF1ZyAyMDE0IDA5OjQ2OjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENoZWNrIHNpemUgb2YgdWlkX3QgYW5kIGdpZF90IHVzaW5nIEFDX0NIRUNLX1NJWkVPRgotCi1UaGlzIGJ1aWx0LWluIGNoZWNrIGlzIHNpbXBsZXIgdGhhbiB0aGUgcHJldmlvdXMgbWV0aG9kIGFuZCwgbW9zdAotaW1wb3J0YW50bHksIHdvcmtzIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1baHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvY29tbWl0LzJjYjU0MTU4YjgwY2RiZDk3Y2EzYjM2ZGY4M2Y5MjU1ZTkyM2FlM2ZdCi0KLVNpZ25lZC1vZmYtYnk6IFNlcmdlIEhhbGx5biA8c2VyZ2UuaGFsbHluQHVidW50dS5jb20+Ci0tLS0KLSBjb25maWd1cmUuaW4gfCAxNCArKysrLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAxYTNmODQxLi40YTRkNmQwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0zMzUsMTYgKzMzNSwxMCBAQCBpZiB0ZXN0ICIkZW5hYmxlX3N1YmlkcyIgIT0gIm5vIjsgdGhlbgotIAlkbmwKLSAJZG5sIEZJWE1FOiBjaGVjayBpZiAzMiBiaXQgVUlEcy9HSURzIGFyZSBzdXBwb3J0ZWQgYnkgbGliYwotIAlkbmwKLS0JQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS1pbnQgbWFpbih2b2lkKSB7Ci0tCXVpZF90IHU7Ci0tCWdpZF90IGc7Ci0tCXJldHVybiAoc2l6ZW9mIHUgPCA0KSB8fCAoc2l6ZW9mIGcgPCA0KTsKLS19Ci0tCV0pXSwgW2lkMzJiaXQ9InllcyJdLCBbaWQzMmJpdD0ibm8iXSkKLS0KLS0JaWYgdGVzdCAieCRpZDMyYml0IiA9ICJ4eWVzIjsgdGhlbgotKwlBQ19DSEVDS19TSVpFT0YoW3VpZF90XSwsIFsjaW5jbHVkZSAic3lzL3R5cGVzLmgiXSkKLSsJQUNfQ0hFQ0tfU0laRU9GKFtnaWRfdF0sLCBbI2luY2x1ZGUgInN5cy90eXBlcy5oIl0pCi0rCi0rCWlmIHRlc3QgIiRhY19jdl9zaXplb2ZfdWlkX3QiIC1nZSA0ICYmIHRlc3QgIiRhY19jdl9zaXplb2ZfZ2lkX3QiIC1nZSA0OyB0aGVuCi0gCQlBQ19ERUZJTkUoRU5BQkxFX1NVQklEUywgMSwgW0RlZmluZSB0byBzdXBwb3J0IHRoZSBzdWJvcmRpbmF0ZSBJRHMuXSkKLSAJCWVuYWJsZV9zdWJpZHM9InllcyIKLSAJZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9maXgtaW5zdGFsbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyY2I5MWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2ZpeC1pbnN0YWxsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TdWJqZWN0OiBmaXggaW5zdGFsbGF0aW9uIGZhaWx1cmUgd2l0aCBzdWJpZHMgZGlzYWJsZWQKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgICAgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggMjVlMjg4ZC4uMDc2ZjhlZiAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNTIsNyArNTIsMTAgQEAgdXNiaW5fUFJPR1JBTVMgPSBcCi0gbm9pbnN0X1BST0dSQU1TID0gaWQgc3Vsb2dpbgotIAotIHN1aWRiaW5zICAgICAgID0gc3UKLS1zdWlkdWJpbnMgICAgICA9IGNoYWdlIGNoZm4gY2hzaCBleHBpcnkgZ3Bhc3N3ZCBuZXdncnAgcGFzc3dkIG5ld3VpZG1hcCBuZXdnaWRtYXAKLStzdWlkdWJpbnMgICAgICA9IGNoYWdlIGNoZm4gY2hzaCBleHBpcnkgZ3Bhc3N3ZCBuZXdncnAgcGFzc3dkCi0raWYgRU5BQkxFX1NVQklEUwotK3N1aWR1YmlucyArPSBuZXdnaWRtYXAgbmV3dWlkbWFwCi0rZW5kaWYKLSBpZiBBQ0NUX1RPT0xTX1NFVFVJRAotIAlzdWlkdWJpbnMgKz0gY2hhZ2UgY2hncGFzc3dkIGNocGFzc3dkIGdyb3VwYWRkIGdyb3VwZGVsIGdyb3VwbW9kIG5ld3VzZXJzIHVzZXJhZGQgdXNlcmRlbCB1c2VybW9kCi0gZW5kaWYKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvdXNlcm1vZC1maXgtY29tcGlsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy91c2VybW9kLWZpeC1jb21waWxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2RjMTUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy91c2VybW9kLWZpeC1jb21waWxhdGlvbi1mYWlsdXJlLXdpdGgtc3ViaWRzLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXVzZXJtb2Q6IGZpeCBjb21waWxhdGlvbiBmYWlsdXJlIHdpdGggc3ViaWRzIGRpc2FibGVkCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy91c2VybW9kLmMgfCAgICAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCi1pbmRleCBlN2Q0MzUxLi42ODViNTBhIDEwMDY0NAotLS0tIGEvc3JjL3VzZXJtb2QuYwotKysrIGIvc3JjL3VzZXJtb2QuYwotQEAgLTEzNjAsNyArMTM2MCw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCSAgICAgICAgIFByb2csICh1bnNpZ25lZCBsb25nKSB1c2VyX25ld2lkKTsKLSAJCWV4aXQgKEVfVUlEX0lOX1VTRSk7Ci0gCX0KLS0KLSsjaWZkZWYgRU5BQkxFX1NVQklEUwotIAlpZiAoICAgKHZmbGcgfHwgVmZsZykKLSAJICAgICYmICFpc19zdWJfdWlkKSB7Ci0gCQlmcHJpbnRmIChzdGRlcnIsCi1AQCAtMTM3Niw2ICsxMzc2LDcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJICAgICAgICAgUHJvZywgc3ViX2dpZF9kYm5hbWUgKCksICItdyIsICItVyIpOwotIAkJZXhpdCAoRV9VU0FHRSk7Ci0gCX0KLSsjZW5kaWYKLSB9Ci0gCi0gLyoKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXNlY3VyZXR0eV80LjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc2VjdXJldHR5XzQuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zZWN1cmV0dHlfNC4yLjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3ctc2VjdXJldHR5XzQuNi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy1zeXNyb290XzQuMi4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LXN5c3Jvb3RfNC42LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCmluZGV4IDRlMWVhZWQuLjA5YzM3ZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCkBAIC05LDE4ICs5LDEwIEBACiBERVBFTkRTID0gInZpcnR1YWwvY3J5cHQiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9yZWxlYXNlcyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyR7QlB9LnRhci54eiBcCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9zaGFkb3ctNC4xLjMtZG90cy1pbi11c2VybmFtZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXNlcm1vZC1maXgtY29tcGlsYXRpb24tZmFpbHVyZS13aXRoLXN1Ymlkcy1kaXNhYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbGF0aW9uLWZhaWx1cmUtd2l0aC1zdWJpZHMtZGlzYWJsZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcmVhZC1sb2dpbi5kZWZzLWJlZm9yZS1kb2luZy1jaHJvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2hlY2tfc2l6ZV9vZl91aWRfdF9hbmRfZ2lkX3RfdXNpbmdfQUNfQ0hFQ0tfU0laRU9GLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlcmFkZC1jb3B5LWV4dGVuZGVkLWF0dHJpYnV0ZXMtb2YtaG9tZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNoYWRvdy1DVkUtMjAxNy0xMjQyNCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0yNjE2LnBhdGNoIFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC03MTY5LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKQEAgLTM5LDggKzMxLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMmJmYWZlN2Q0OTYyNjgyZDMxYjVlYmE2NWRiYTRmYzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2IwODkzZDE0NzY3NjY4NjhjZDg4OTIwZjRmMTIzMWM0Nzk1NjUyYWE0MDc1NjlmYWZmODAyYmNkYTBmM2Q0MSIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNmZlYjE1NjY1MzM4YWUzZGU0MTRmMmE4OGU0MzRkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjY4Zjk5YmQwODczOTljNGE1ODYwODRkYzNiMDQ2Yjc1ZjU2MDcyMGQ4M2U5MmZkMjNiZjdhODlkZGE0ZDMxIgogCiAjIEFkZGl0aW9uYWwgUG9saWN5IGZpbGVzIGZvciBQQU0KIFBBTV9TUkNfVVJJID0gImZpbGU6Ly9wYW0uZC9jaGZuIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93XzQuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjIuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjYuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nXzIuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKaW5kZXggODdmZDQxYS4uZTUzYzQzMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjIuYmIKQEAgLTc4LDQgKzc4LDQgQEAKIFBBUkFMTEVMX01BS0UgPSAiIgogUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCmluZGV4IDM2MmJkM2EuLjY5ZGNjZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwpAQCAtNCw3ICs0LDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT03NzY1YTNkNzg3Y2I0ZmVkM2NjYzNjOWNlZTAzMGFmOSBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9Y2M0YmYyMzY2YjA1OWM5NTk4ZTM5NDdmODg1OTMxZWMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00MTttZDU9ODA1NzgyYTg0NjY5NzU3MTZmODM3NmIyYmU5YWVkZGUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ODViMDkwNWI3OTVkNGQ1OGJmMmUwMDYzNTY0OWVlYzYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTY3ZjgzZWU5YmQ0NTY1NTczOTcwODJmOGYxYmUwZWZkIFwKQEAgLTEyLDEyICsxMiwxNCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2xvYi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MzE7bWQ1PTU4NzI3MzMxNDZiOWViMGRlYjc5ZTFmNjY0ODE1Yjg1IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3NucHJpbnRmLmM7YmVnaW5saW5lPTY7ZW5kbGluZT0zNDttZDU9YzgyYzFiM2E1YzMyZTA4NTQ1YzllYzVkNzFlNDFlNTAgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9zdWRvX3F1ZXVlLmg7YmVnaW5saW5lPTU7ZW5kbGluZT0yNzttZDU9NDQ5YWY0Y2M1N2ZjN2Q0NmY0MjA5MDYwOGJhM2U2ODEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvaW5ldF9wdG9uLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNzttZDU9Mzk3MGFiMDUxOGFiNzljYmQwYmFmYjY5N2YxMGIzM2EiCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9pbmV0X3B0b24uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT0zOTcwYWIwNTE4YWI3OWNiZDBiYWZiNjk3ZjEwYjMzYSBcCisgICAgICAgICAgICAgICAgICAgICIKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorUEFDS0FHRUNPTkZJR1twYW0td2hlZWxdID0gIiwsLHBhbS1wbHVnaW4td2hlZWwiCiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1ZG9lcnMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTUwMTc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjRhYmRlYTQ4ZGI0YzVhYmNkNDEwMTY3YzgwMWNjOGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI1NmNiMjdjMjA4ODNiMTQzNjBlZGRiZDE3Zjk4OTIyMDczZDEwNGIyMTRjZjY1YWVhY2YxZDljOWI5ZmQwMiIKLQotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAotICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKLQlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjIzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTMyYmQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMy5iYgpAQCAtMCwwICsxLDQwIEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZWE0NDRkNzQ3ZmViMWRlY2ZlYmRmZmQwYjM4YjA3MzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDg2M2QyOWI2ZmM4N2JjNzg0YTMyMjMzNTBlMmIyOGEyZmYyYzQ3MzhmMGZiOGYxYzkyYmIzOGMzMDE3ZTY3OSIKKworREVQRU5EUyArPSAiIHZpcnR1YWwvY3J5cHQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke2xpYmRpcn0vdG1wZmlsZXMuZCcsICctLWRpc2FibGUtdG1wZmlsZXMuZCcsIGQpfSBcCisgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc3Vkby5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KKwkJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtLXdoZWVsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX0gOyB0aGVuCisJCQllY2hvICdhdXRoICAgICAgIHJlcXVpcmVkICAgICBwYW1fd2hlZWwuc28gdXNlX3VpZCcgPj4ke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJCQlzZWQgLWkgJ3MvIyBcKCV3aGVlbCBBTEw9KEFMTCkgQUxMXCkvXDEvJyAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisJCWZpCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAvcnVuIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcgorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0vcnVuL3N1ZG8KK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCmluZGV4IGZjNGU2N2MuLmYxNTFkZDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKQEAgLTExLDcgKzExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xOTttZDU9N2U4N2VkMGFlNjE0MmRlMDc5YmNlNzM4YzEwYzg5OWQgXAogICAgICAgICAgICAgICAgICAgICIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkL2Rvd25sb2FkL3N5c2tsb2dkLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9uby1zdHJpcC1pbnN0YWxsLnBhdGNoIFwKQEAgLTU4LDYgKzU4LDExIEBACiAKIEZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c2tsb2dkLmNvbmYnLCAnJywgZCl9IgogCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzeXNsb2dkLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nZC44XSA9ICIke21hbmRpcn0vbWFuOC9zeXNsb2dkLjgiCisKIHBrZ19wcmVybV8ke1BOfSAoKSB7CiAJaWYgdGVzdCAieCREIiA9ICJ4IjsgdGhlbgogCWlmIHRlc3QgIiQxIiA9ICJ1cGdyYWRlIiAtbyAiJDEiID0gInJlbW92ZSI7IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjczOGU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgc3lzc3RhdC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImJkY2RhN2M5MDQ4YzdjMjJmYjFmMzBmNzUyODVkMTNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwM2E1OTViMWFmMDMzMGIxODNhMGYxZmViZmNjZjg5ZjE4M2I5NTc1YWUwNTYyYjkxZmRiODc2ZjNlZjFmZWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWI5MTMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzExLjcuNC5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyMWY5NThkYjgwZTY3YTI3ZWRhMWZmNmI4ZWJjZGViIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5NjI2NWEyMjc4NGMyOTg4ODY2OWY5NjFhMDg5Njg0MWQxNzc4NTNmOGYwNTdlZmUwNjNlODkxOTYyYjkwOTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2U0ZGExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgZmlsZSBhcmNoaXZpbmcgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIkdOVSB0YXIgc2F2ZXMgbWFueSBmaWxlcyB0b2dldGhlciBpbnRvIGEgc2luZ2xlIHRhcGUgXAotb3IgZGlzayBhcmNoaXZlLCBhbmQgY2FuIHJlc3RvcmUgaW5kaXZpZHVhbCBmaWxlcyBmcm9tIHRoZSBhcmNoaXZlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90YXIvIgotU0VDVElPTiA9ICJiYXNlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGFyL3Rhci0ke1BWfS50YXIuYnoyIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KLQotRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtiYXNlX3NiaW5kaXJ9IgotCi0jIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCi0jIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAotIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAotIyBkaXJlY3RvcnkuCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGF1dG90b29sc19kb19pbnN0YWxsCi0gICAgbG4gLXMgdGFyICR7RH0ke2JpbmRpcn0vZ3RhcgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgbXYgJHtEfSR7YmluZGlyfS90YXIgJHtEfSR7YmFzZV9iaW5kaXJ9L3RhcgotICAgICAgICBtdiAke0R9JHtiaW5kaXJ9L2d0YXIgJHtEfSR7YmFzZV9iaW5kaXJ9L2d0YXIKLSAgICAgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcm10IgotCi1GSUxFU18ke1BOfS1ybXQgPSAiJHtiYXNlX3NiaW5kaXJ9L3JtdCoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInRhciIKLUFMVEVSTkFUSVZFXyR7UE59LXJtdCA9ICJybXQiCi1BTFRFUk5BVElWRV8ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotQUxURVJOQVRJVkVfJHtQTn0tcm10X2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7YmFzZV9zYmluZGlyfS9ybXQiCi0KLVBST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHRhci1yZXBsYWNlbWVudC1uYXRpdmUiCi1OQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCA9ICIvJHtQTn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMC5iYgppbmRleCBlNzQzYTZkLi5iZDI0ZjQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMwLmJiCkBAIC0xLDE4ICsxLDcwIEBACi1yZXF1aXJlIHRhci5pbmMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywgLS13aXRob3V0LXBvc2l4LWFjbHMsIGFjbCwiCi0KK1NVTU1BUlkgPSAiR05VIGZpbGUgYXJjaGl2aW5nIHByb2dyYW0iCitERVNDUklQVElPTiA9ICJHTlUgdGFyIHNhdmVzIG1hbnkgZmlsZXMgdG9nZXRoZXIgaW50byBhIHNpbmdsZSB0YXBlIFwKK29yIGRpc2sgYXJjaGl2ZSwgYW5kIGNhbiByZXN0b3JlIGluZGl2aWR1YWwgZmlsZXMgZnJvbSB0aGUgYXJjaGl2ZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGFyLyIKK1NFQ1RJT04gPSAiYmFzZSIKIExJQ0VOU0UgPSAiR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotU1JDX1VSSSArPSAiZmlsZTovL3JlbW92ZS1nZXRzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9tdXNsX2RpcmVudC5wYXRjaCBcCi0gICAgICAgICAgICIKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90YXIvdGFyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbXVzbF9kaXJlbnQucGF0Y2ggXAorIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiODQwNGU0YzFmYzVhMzAwMDIyOGFiMmI4YWQ2NzRhNjUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc1OTJiODZjYjAzN2M1NTQzNzVmNTg2OGJkZDNjYzU3NzQ4YWVmMzhkNmNiNzQxYzgxMDY1ZjBiZWFjNjNiNyIKIAotZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgewotCXJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotCXJtZGlyICR7RH0ke2xpYmRpcn0KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtcG9zaXgtYWNscywtLXdpdGhvdXQtcG9zaXgtYWNscyxhY2wiCisKK0VYVFJBX09FQ09ORiArPSAiREVGQVVMVF9STVRfRElSPSR7YmFzZV9zYmluZGlyfSIKKworIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQorIyBhYnNvbHV0ZSBzaW5jZSB0YXIgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKKyMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKKyMgZGlyZWN0b3J5LgorYWNwYXRocyA9ICItSSAuL200IgorCitkb19pbnN0YWxsICgpIHsKKyAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAorICAgIGxuIC1zIHRhciAke0R9JHtiaW5kaXJ9L2d0YXIKIH0KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vdGFyICR7RH0ke2Jhc2VfYmluZGlyfS90YXIKKyAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9ndGFyICR7RH0ke2Jhc2VfYmluZGlyfS9ndGFyCisgICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfbGliYy1tdXNsKCkgeworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcworICAgIHJtZGlyICR7RH0ke2xpYmRpcn0KK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJtdCIKKworRklMRVNfJHtQTn0tcm10ID0gIiR7YmFzZV9zYmluZGlyfS9ybXQqIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJ0YXIiCitBTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgorQUxURVJOQVRJVkVfJHtQTn1fY2xhc3MtbmF0aXZlc2RrID0gIiIKK0FMVEVSTkFUSVZFXyR7UE59LXJtdF9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcm10IgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0YXItcmVwbGFjZW1lbnQtbmF0aXZlIgorTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggPSAiLyR7UE59IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCmluZGV4IDNlY2U4YzMuLjBmNTA2NzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCkBAIC04LDYgKzgsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vRElTQ0xBSU1FUjttZDU9MDcxYmQ2OWNiNzhiMTg4ODhlYTVlM2RhNWMzMTI3ZmEiCiBQUiA9InIxMCIKIAorREVQRU5EUyArPSAibGlibnNsMiIKIAogUEFDS0FHRVMgPSAiJHtQTn0tZGJnIGxpYndyYXAgbGlid3JhcC1kb2MgbGlid3JhcC1kZXYgbGlid3JhcC1zdGF0aWNkZXYgJHtQTn0gJHtQTn0tZG9jIgogRklMRVNfbGlid3JhcCA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgpAQCAtNjcsNyArNjgsNiBAQAogICAgICAgICAgICAgICAgICdLSUxMX09QVD0tREtJTExfSVBfT1BUSU9OUycgXAogICAgICAgICAgICAgICAgICdVTUFTSz0tRERBRU1PTl9VTUFTSz0wMjInIFwKICAgICAgICAgICAgICAgICAnTkVUR1JPVVA9JHtFWFRSQV9PRU1BS0VfTkVUR1JPVVB9JyBcCi0gICAgICAgICAgICAgICAgJ0xJQlM9LWxuc2wnIFwKICAgICAgICAgICAgICAgICAnQVJGTEFHUz1ydicgXAogICAgICAgICAgICAgICAgICdBVVhfT0JKPXdlYWtfc3ltYm9scy5vJyBcCiAgICAgICAgICAgICAgICAgJ1RMST0nIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjMxNDdhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWUvdGltZV8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgotREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKLW1lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgotU0VDVElPTiA9ICJ1dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlMDBkY2I4YzNhYjExYzdjZjVhMGQ2OTg4MjhhYzk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmY1NDAxNTU5NjFhMzViYTliODRhZWM1ZTc3ZTNhZTM2Yzc0Y2VjYjQ0ODRkYjQ1NTk2MDYwMWI3YTJlMWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lL3RpbWVfMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmIwODRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZS90aW1lXzEuOS5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIlRvb2wgdGhhdCBtZWFzdXJlcyBDUFUgcmVzb3VyY2VzIgorREVTQ1JJUFRJT04gPSAidGltZSBtZWFzdXJlcyBtYW55IG9mIHRoZSBDUFUgcmVzb3VyY2VzLCBzdWNoIGFzIHRpbWUgYW5kIFwKK21lbW9yeSwgdGhhdCBvdGhlciBwcm9ncmFtcyB1c2UuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RpbWUvIgorU0VDVElPTiA9ICJ1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworaW5oZXJpdCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAidGltZSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vdGltZS90aW1lLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImQyMzU2ZTBmZTFjMGI4NTI4NWQ4M2M2YjJhZDUxYjVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiYWNmMGM4MWU2MjQyOWRmM2UzM2JkYTRjZWUzODc1NjYwNGYxOGUwMWQ5NzczMzhlMjMzMDZhM2UzYjUyMWUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Zi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThmLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTZlMzRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThmLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgotIwotU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLVNSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKLSAgICAgICAgICAgIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImU1ZTg0ZjAwZjlkMThiZDZlYmM4YjFhZmZlYzkxYjE1IgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIwYWY2YTg1ZmM0ZWE5NTgzMmY3NjUyNGYzNTY5NmE2MWFiYjM5OTJmZDNmOGRiMzNlNWExZjk1NjUzZTA0M2YyIgotU1JDX1VSSVt0emNvZGUubWQ1c3VtXSA9ICIwMTFkMzk0YjcwZTZlZTM4MjNmZDc3MDEwYjk5NzM3ZiIKLVNSQ19VUklbdHpjb2RlLnNoYTI1NnN1bV0gPSAiNGVjNzRmOGE4NDM3MjU3MDEzNWVhNGJlMTZhMDQyNDQyZmFmZTEwMGY1NTk4Y2IxMDE3YmZkMzBhZjZhYWE3MCIKLQotUyA9ICIke1dPUktESVJ9IgotCi1pbmhlcml0IG5hdGl2ZQotCi1FWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCi0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE4Zy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTJiNjBhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGcuYmIKQEAgLTAsMCArMSwzMCBAQAorIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgorIworU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgorTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK1NSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKKyAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6Y29kZS5tZDVzdW1dID0gImI0OGYwMjgyYjgwYmI3ZGJlMTZlMzU2MjZmNDQ2YWU5IgorU1JDX1VSSVt0emNvZGUuc2hhMjU2c3VtXSA9ICJhYTUzZjRmYjY1NzBmMDIwODFiZTYxZGMxMWFkZTE5ZWE1YTI4MGMyMzgyMmE1YjQwMTZjZTBjNmJlMjNjNDI3IgorU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICJlNzFjYjFmOWQ4ZDUzYzQzOTA0ZDc5ZDdhZWVlZGMxYiIKK1NSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiMDJkZmRlNTM0ODcyZjY1MTNhZTQ1NTNhMzM4OGZkYWU1Nzk0NDFlMzFiODYyZWE5OTE3MGRmYzQ0N2Y0NmExNiIKKworUyA9ICIke1dPUktESVJ9IgorCitpbmhlcml0IG5hdGl2ZQorCitFWFRSQV9PRU1BS0UgKz0gImNjPScke0NDfSciCisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gNzU1IHppYyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6ZHVtcCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB0enNlbGVjdCAke0R9JHtiaW5kaXJ9LworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjc1NDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1TVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCi0KLURFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotCi1TUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImU1ZTg0ZjAwZjlkMThiZDZlYmM4YjFhZmZlYzkxYjE1IgotU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIwYWY2YTg1ZmM0ZWE5NTgzMmY3NjUyNGYzNTY5NmE2MWFiYjM5OTJmZDNmOGRiMzNlNWExZjk1NjUzZTA0M2YyIgotCi1pbmhlcml0IGFsbGFyY2gKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCi0gICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAotICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLURFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKLUlOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKLQotVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAotICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKLSAgICAgICAgIgotIyBwYWNpZmljbmV3IAotCi1kb19jb21waWxlICgpIHsKLSAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKLSAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAotICAgICAgICBkb25lCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KLSAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQotICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0gICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KLQotICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQotICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgotICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQotICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgotICAgICAgICAgICAgZXhpdCAxCi0gICAgICAgIGZpCi0KLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCi0Jc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCi0KLQlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgotCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQotCWZpCi0JCi0JaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCi0JCWV4aXQgMAotCWZpCi0JCi0JaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCi0JCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCi0JCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgotCQl0ej0iVW5pdmVyc2FsIgotCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCi0JCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCi0JCQlybSAtZiAiJHtldGNfbHR9IgotCQlmaQotCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKLQlmaQotfQotCi0jIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5Ci0jIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCi0KLVBBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAotICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKLSAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKLQotRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCi0KLUZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKLQotRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCi0KLUZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCi1SUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCi0KLUZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCi0KLUZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCi1SUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgotCi1GSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgotUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKLQotRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgotUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgotCi1GSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKLVJQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgotCi1GSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKLVJQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgotCi0KLUZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKLVJQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0Jhbmdrb2sgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Zy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJhODJhYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxOGcuYmIKQEAgLTAsMCArMSwyMTUgQEAKK1NVTU1BUlkgPSAiVGltZXpvbmUgZGF0YSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNjc5YzlkNmIwMmJjMjc1N2IzZWFmOGY1M2M0M2ZiYSIKKworREVQRU5EUyA9ICJ0emNvZGUtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCisKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiZTcxY2IxZjlkOGQ1M2M0MzkwNGQ3OWQ3YWVlZWRjMWIiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjAyZGZkZTUzNDg3MmY2NTEzYWU0NTUzYTMzODhmZGFlNTc5NDQxZTMxYjg2MmVhOTkxNzBkZmM0NDdmNDZhMTYiCisKK2luaGVyaXQgYWxsYXJjaAorCitSQ09ORkxJQ1RTXyR7UE59ID0gInRpbWV6b25lcyB0aW1lem9uZS1hZnJpY2EgdGltZXpvbmUtYW1lcmljYSB0aW1lem9uZS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1hcmN0aWMgdGltZXpvbmUtYXNpYSB0aW1lem9uZS1hdGxhbnRpYyBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXVzdHJhbGlhIHRpbWV6b25lLWV1cm9wZSB0aW1lem9uZS1pbmRpYW4gXAorICAgICAgICAgICAgIHRpbWV6b25lLWlzbzMxNjYudGFiIHRpbWV6b25lLXBhY2lmaWMgdGltZXpvbmUtem9uZS50YWIiCisKK1MgPSAiJHtXT1JLRElSfSIKKworREVGQVVMVF9USU1FWk9ORSA/PSAiVW5pdmVyc2FsIgorSU5TVEFMTF9USU1FWk9ORV9GSUxFID89ICIxIgorCitUWk9ORVM9ICJhZnJpY2EgYW50YXJjdGljYSBhc2lhIGF1c3RyYWxhc2lhIGV1cm9wZSBub3J0aGFtZXJpY2Egc291dGhhbWVyaWNhICBcCisgICAgICAgICBmYWN0b3J5IGV0Y2V0ZXJhIGJhY2t3YXJkIHN5c3RlbXYgXAorICAgICAgICAiCisjIHBhY2lmaWNuZXcgCisKK2RvX2NvbXBpbGUgKCkgeworICAgICAgICBmb3Igem9uZSBpbiAke1RaT05FU307IGRvIFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8gLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9wb3NpeCAtTCAvZGV2L251bGwgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0IC1MICR7U30vbGVhcHNlY29uZHMgXAorICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCisgICAgICAgIGRvbmUKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8kZXhlY19wcmVmaXggJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQUiAke1N9LyRleGVjX3ByZWZpeCAke0R9LworICAgICAgICAjIGxpYmMgaXMgcmVtb3Zpbmcgem9uZWluZm8gZmlsZXMgZnJvbSBwYWNrYWdlCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L3pvbmUxOTcwLnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKyAgICAgICAgY3AgLXBQICIke1N9L2lzbzMxNjYudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCisgICAgICAgICMgSW5zdGFsbCBkZWZhdWx0IHRpbWV6b25lCisgICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSBdOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgICAgICAgICBpZiBbICIke0lOU1RBTExfVElNRVpPTkVfRklMRX0iID0gIjEiIF07IHRoZW4KKyAgICAgICAgICAgICAgICBlY2hvICR7REVGQVVMVF9USU1FWk9ORX0gPiAke0R9JHtzeXNjb25mZGlyfS90aW1lem9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGxuIC1zICR7ZGF0YWRpcn0vem9uZWluZm8vJHtERUZBVUxUX1RJTUVaT05FfSAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYmJlcnJvciAiREVGQVVMVF9USU1FWk9ORSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4iCisgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgZmkKKworICAgICAgICBjaG93biAtUiByb290OnJvb3QgJHtEfQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWV0Y19sdD0iJEQke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKKwlzcmM9IiREJHtzeXNjb25mZGlyfS90aW1lem9uZSIKKworCWlmIFsgLWUgJHtzcmN9IF0gOyB0aGVuCisJCXR6PSQoc2VkIC1lICdzOiMuKjo6JyAtZSAnczpbWzpzcGFjZTpdXSo6OmcnIC1lICcvXiQvZCcgIiR7c3JjfSIpCisJZmkKKwkKKwlpZiBbIC16ICIke3R6fSIgXSA7IHRoZW4KKwkJZXhpdCAwCisJZmkKKwkKKwlpZiBbICEgLWUgIiREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgXSA7IHRoZW4KKwkJZWNobyAiWW91IGhhdmUgYW4gaW52YWxpZCBUSU1FWk9ORSBzZXR0aW5nIGluICR7c3JjfSIKKwkJZWNobyAiWW91ciAke2V0Y19sdH0gaGFzIGJlZW4gcmVzZXQgdG8gVW5pdmVyc2FsOyBlbmpveSEiCisJCXR6PSJVbml2ZXJzYWwiCisJCWVjaG8gIlVwZGF0aW5nICR7ZXRjX2x0fSB3aXRoICREJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIKKwkJaWYgWyAtTCAke2V0Y19sdH0gXSA7IHRoZW4KKwkJCXJtIC1mICIke2V0Y19sdH0iCisJCWZpCisJCWxuIC1zICIke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiAiJHtldGNfbHR9IgorCWZpCit9CisKKyMgUGFja2FnZXMgcHJpbWFyaWx5IG9yZ2FuaXplZCBieSBkaXJlY3Rvcnkgd2l0aCBhIG1ham9yIGNpdHkKKyMgaW4gbW9zdCB0aW1lIHpvbmVzIGluIHRoZSBiYXNlIHBhY2thZ2UKKworUEFDS0FHRVMgPSAidHpkYXRhIHR6ZGF0YS1taXNjIHR6ZGF0YS1wb3NpeCB0emRhdGEtcmlnaHQgdHpkYXRhLWFmcmljYSBcCisgICAgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hbnRhcmN0aWNhIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWFzaWEgXAorICAgIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIHR6ZGF0YS1ldXJvcGUgdHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1hZnJpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhLyoiCitSUFJPVklERVNfdHpkYXRhLWFmcmljYSA9ICJ0emRhdGEtYWZyaWNhIgorCitGSUxFU190emRhdGEtYW1lcmljYXMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS8qICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VUy8qICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0JyYXppbC8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2FuYWRhLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NZXhpY28vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NoaWxlLyoiCitSUFJPVklERVNfdHpkYXRhLWFtZXJpY2FzID0gInR6ZGF0YS1hbWVyaWNhcyIKKworRklMRVNfdHpkYXRhLWFudGFyY3RpY2EgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQW50YXJjdGljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbnRhcmN0aWNhID0gInR6ZGF0YS1hbnRhcmN0aWNhIgorCitGSUxFU190emRhdGEtYXJjdGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FyY3RpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hcmN0aWMgPSAidHpkYXRhLWFyY3RpYyIKKworRklMRVNfdHpkYXRhLWFzaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS8qICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JbmRpYW4vKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01pZGVhc3QvKiIKK1JQUk9WSURFU190emRhdGEtYXNpYSA9ICJ0emRhdGEtYXNpYSIKKworRklMRVNfdHpkYXRhLWF0bGFudGljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F0bGFudGljLyoiCitSUFJPVklERVNfdHpkYXRhLWF0bGFudGljID0gInR6ZGF0YS1hdGxhbnRpYyIKKworRklMRVNfdHpkYXRhLWF1c3RyYWxpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvKiIKK1JQUk9WSURFU190emRhdGEtYXVzdHJhbGlhID0gInR6ZGF0YS1hdXN0cmFsaWEiCisKK0ZJTEVTX3R6ZGF0YS1ldXJvcGUgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlLyoiCitSUFJPVklERVNfdHpkYXRhLWV1cm9wZSA9ICJ0emRhdGEtZXVyb3BlIgorCitGSUxFU190emRhdGEtcGFjaWZpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljLyoiCitSUFJPVklERVNfdHpkYXRhLXBhY2lmaWMgPSAidHpkYXRhLXBhY2lmaWMiCisKK0ZJTEVTX3R6ZGF0YS1wb3NpeCArPSAiJHtkYXRhZGlyfS96b25laW5mby9wb3NpeC8qIgorUlBST1ZJREVTX3R6ZGF0YS1wb3NpeCA9ICJ0emRhdGEtcG9zaXgiCisKK0ZJTEVTX3R6ZGF0YS1yaWdodCArPSAiJHtkYXRhZGlyfS96b25laW5mby9yaWdodC8qIgorUlBST1ZJREVTX3R6ZGF0YS1yaWdodCA9ICJ0emRhdGEtcmlnaHQiCisKKworRklMRVNfdHpkYXRhLW1pc2MgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQ3ViYSAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWd5cHQgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRWlyZSAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRmFjdG9yeSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0ItRWlyZSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSG9uZ2tvbmcgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSWNlbGFuZCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXJhbiAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSXNyYWVsICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFtYWljYSAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSmFwYW4gICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vS3dhamFsZWluICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTGlieWEgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTmF2YWpvICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9sYW5kICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUG9ydHVnYWwgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vU2luZ2Fwb3JlICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVHVya2V5IgorUlBST1ZJREVTX3R6ZGF0YS1taXNjID0gInR6ZGF0YS1taXNjIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvSG9ub2x1bHUgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQW5jaG9yYWdlICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTG9zX0FuZ2VsZXMgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvRGVudmVyICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2hpY2FnbyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvTmV3X1lvcmsgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvQ2FyYWNhcyAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvU2FvX1BhdWxvICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Mb25kb24gICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9QYXJpcyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS9DYWlybyAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS9Nb3Njb3cgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRHViYWkgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvS2FyYWNoaSAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvRGhha2EgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvQmFuZ2tvayAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvSG9uZ19Lb25nICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvVG9reW8gICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9EYXJ3aW4gICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9BZGVsYWlkZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9CcmlzYmFuZSAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS9TeWRuZXkgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvTm91bWVhICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NTVDZDRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VTVDVFRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVCswICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVC0wICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dNVDAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dyZWVud2ljaCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hTVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01FVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01TVDdNRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05aLUNIQVQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BSQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BTVDhQRFQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1JPSyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VDVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VUQyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VuaXZlcnNhbCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1ctU1UgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1dFVCAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1p1bHUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUudGFiICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL3pvbmUxOTcwLnRhYiAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL2lzbzMxNjYudGFiICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0V0Yy8qIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7QCAiJHtzeXNjb25mZGlyfS90aW1lem9uZSIgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcignSU5TVEFMTF9USU1FWk9ORV9GSUxFJykpIGVsc2UgIiIgfSIKK0NPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIKaW5kZXggZjZhNGNiNi4uZGFiYTcyMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdW56aXAvdW56aXBfNi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYgpAQCAtNjEsNCArNjEsNCBAQAogQUxURVJOQVRJVkVfJHtQTn0gPSAidW56aXAiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbdW56aXBdID0gIiR7YmluZGlyfS91bnppcCIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM0NGM4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy1jb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU2lnbmVkLW9mZi1ieTogRGllZ28gUm9uZGluaSA8ZGllZ28ubWxAem9oby5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IHdhdGNoZG9nLTUuMTUvd2F0Y2hkb2cuY29uZgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdhdGNoZG9nLTUuMTUub3JpZy93YXRjaGRvZy5jb25mCi0rKysgd2F0Y2hkb2ctNS4xNS93YXRjaGRvZy5jb25mCi1AQCAtMjgsNyArMjgsNyBAQAotICNyZXRyeS10aW1lb3V0CQk9IDYwCi0gI3JlcGFpci1tYXhpbXVtCQk9IDEKLSAKLS0jd2F0Y2hkb2ctZGV2aWNlCT0gL2Rldi93YXRjaGRvZwotK3dhdGNoZG9nLWRldmljZQk9IC9kZXYvd2F0Y2hkb2cKLSAKLSAjIERlZmF1bHRzIGNvbXBpbGVkIGludG8gdGhlIGJpbmFyeQotICN0ZW1wZXJhdHVyZS1zZW5zb3IJPQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctaW5pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nL3dhdGNoZG9nLWluaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyNzY1ZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2ctaW5pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNpZ25lZC1vZmYtYnk6IERpZWdvIFJvbmRpbmkgPGRpZWdvLm1sQHpvaG8uY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLS0tLSB3YXRjaGRvZy01LjEzLm9yaWcvcmVkaGF0L3dhdGNoZG9nLmluaXQJMjAxNC0xMS0xMiAxNzoxODozOS4xMjU5NDMwMDAgKzAxMDAKLSsrKyB3YXRjaGRvZy01LjEzL3JlZGhhdC93YXRjaGRvZy5pbml0CTIwMTQtMTEtMTIgMTg6Mjc6MzYuMTg5OTQzMDAwICswMTAwCi1AQCAtNyw3ICs3LDcgQEAKLSAjICAgICAgICAgICAgICAgICBIZW5uaW5nIFAuIFNjaG1pZWRlaGF1c2VuIDxocHNAdGFuc3RhYWZsLmRlPgotIAotICMgU291cmNlIGZ1bmN0aW9uIGxpYnJhcnkuCi0tLiAvZXRjL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0gCi0gWyAteCAvdXNyL3NiaW4vd2F0Y2hkb2cgLWEgLWUgL2V0Yy93YXRjaGRvZy5jb25mIF0gfHwgZXhpdCAwCi0gCi1AQCAtMjMsMjIgKzIzLDIyIEBACi0gCi0gc3RhcnQoKSB7Ci0gCi0tCWVjaG8gLW4gJCJTdGFydGluZyAkcHJvZzogIgotKwllY2hvIC1uICJTdGFydGluZyAkcHJvZzogIgotIAlpZiBbIC1uICIkKHBpZG9mcHJvYyAkcHJvZykiIF07IHRoZW4KLS0JCWVjaG8gLW4gJCIkcHJvZzogYWxyZWFkeSBydW5uaW5nIgotLQkJZWNob19mYWlsdXJlCi0rCQllY2hvIC1uICIkcHJvZzogYWxyZWFkeSBydW5uaW5nICIKLSsJCWZhaWx1cmUKLSAJCWVjaG8KLSAJCXJldHVybiAxCi0gCWZpCi0gCWlmIFsgIiRWRVJCT1NFIiA9ICJ5ZXMiIF07IHRoZW4KLS0JICAgIGRhZW1vbiAvdXNyL3NiaW4vJHtwcm9nfSAtdgotKwkgICAgL3Vzci9zYmluLyR7cHJvZ30gLXYKLSAJZWxzZQotLQkgICAgZGFlbW9uIC91c3Ivc2Jpbi8ke3Byb2d9Ci0rCSAgICAvdXNyL3NiaW4vJHtwcm9nfQotICAgICAgICAgZmkKLSAJUkVUVkFMPSQ/Ci0gCVsgJFJFVFZBTCAtZXEgMCBdICYmIHRvdWNoICRsb2NrZmlsZQotLQlbICRSRVRWQUwgLWVxIDAgXSAmJiBlY2hvX3N1Y2Nlc3MKLS0JWyAkUkVUVkFMIC1uZSAwIF0gJiYgZWNob19mYWlsdXJlCi0rCVsgJFJFVFZBTCAtZXEgMCBdICYmIHN1Y2Nlc3MKLSsJWyAkUkVUVkFMIC1uZSAwIF0gJiYgZmFpbHVyZQotIAllY2hvCi0gCXJldHVybiAkUkVUVkFMCi0gfQotQEAgLTUwLDggKzUwLDEwIEBACi0gCSMgYW5kIHJlYm9vdCB0aGUgYm94LgotIAlraWxscHJvYyAkcHJvZyAtVEVSTQotIAlSRVRWQUw9JD8KLS0JZWNobwotIAlbICRSRVRWQUwgLWVxIDAgXSAmJiBybSAtZiAkbG9ja2ZpbGUgJHBpZGZpbGUKLSsJWyAkUkVUVkFMIC1lcSAwIF0gJiYgc3VjY2VzcwotKwlbICRSRVRWQUwgLW5lIDAgXSAmJiBmYWlsdXJlCi0rCWVjaG8KLSAJcmV0dXJuICRSRVRWQUwKLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZy93YXRjaGRvZy5pbml0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2cuaW5pdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzcxMDdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2cvd2F0Y2hkb2cuaW5pdApAQCAtMCwwICsxLDExMCBAQAorIyEvYmluL3NoCisjL2V0Yy9pbml0LmQvd2F0Y2hkb2c6IHN0YXJ0IHdhdGNoZG9nIGRhZW1vbi4KKworIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICAgd2F0Y2hkb2cKKyMgU2hvcnQtRGVzY3JpcHRpb246IFN0YXJ0IHNvZnR3YXJlIHdhdGNoZG9nIGRhZW1vbgorIyBSZXF1aXJlZC1TdGFydDogICAgJGFsbAorIyBSZXF1aXJlZC1TdG9wOiAgICAgJGFsbAorIyBTaG91bGQtU3RhcnQ6ICAgICAgCisjIFNob3VsZC1TdG9wOiAgICAgICAKKyMgRGVmYXVsdC1TdGFydDogICAgIDIgMyA0IDUKKyMgRGVmYXVsdC1TdG9wOiAgICAgIDAgMSA2CisjIyMgRU5EIElOSVQgSU5GTworCitQQVRIPS9iaW46L3Vzci9iaW46L3NiaW46L3Vzci9zYmluCisKK3Rlc3QgLXggL3Vzci9zYmluL3dhdGNoZG9nIHx8IGV4aXQgMAorCisjIEZvciBjb25maWd1cmF0aW9uIG9mIHRoZSBpbml0IHNjcmlwdCB1c2UgdGhlIGZpbGUKKyMgL2V0Yy9kZWZhdWx0L3dhdGNoZG9nLCBkbyBub3QgZWRpdCB0aGlzIGluaXQgc2NyaXB0LgorCisjIFNldCBydW5fd2F0Y2hkb2cgdG8gMSB0byBzdGFydCB3YXRjaGRvZyBvciAwIHRvIGRpc2FibGUgaXQuCitydW5fd2F0Y2hkb2c9MAorCisjIFNwZWNpZnkgYWRkaXRpb25hbCB3YXRjaGRvZyBvcHRpb25zIGhlcmUgKHNlZSBtYW5wYWdlKS4KK3dhdGNoZG9nX29wdGlvbnM9IiIKKworIyBTcGVjaWZ5IG1vZHVsZSB0byBsb2FkCit3YXRjaGRvZ19tb2R1bGU9Im5vbmUiCisKK1sgLWUgL2V0Yy9kZWZhdWx0L3dhdGNoZG9nIF0gJiYgLiAvZXRjL2RlZmF1bHQvd2F0Y2hkb2cKKworTkFNRT13YXRjaGRvZworREFFTU9OPS91c3Ivc2Jpbi93YXRjaGRvZworCitTVE9QX1JFVFJZX1NDSEVEVUxFPSdURVJNLzEwL2ZvcmV2ZXIvS0lMTC8xJworCisuIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucworCisjIE1vY2sgRGViaWFuIHN0dWZmCitsb2dfYmVnaW5fbXNnKCkgeworICAgIGVjaG8gLW4gJCoKK30KKworbG9nX2VuZF9tc2coKSB7CisgICAgaWYgWyAiJDEiID0gIjAiIF07IHRoZW4KKyAgICAgICAgZWNobyAnZG9uZScKKyAgICBlbHNlCisgICAgICAgIGVjaG8gJ2Vycm9yJworICAgIGZpCit9CisKK2xvZ19kYWVtb25fbXNnKCkgeworICAgIGVjaG8gJCoKK30KKworbG9nX3Byb2dyZXNzX21zZygpIHsKKyAgICBlY2hvICQqCit9CisKK2Nhc2UgIiQxIiBpbgorICBzdGFydCkKKyAgICBpZiBbICRydW5fd2F0Y2hkb2cgPSAxIF0KKyAgICB0aGVuCisgICAgCSMgZG8gd2UgaGF2ZSB0byBsb2FkIGEgbW9kdWxlPworCVsgIiR7d2F0Y2hkb2dfbW9kdWxlOi1ub25lfSIgIT0gIm5vbmUiIF0gJiYgL3NiaW4vbW9kcHJvYmUgJHdhdGNoZG9nX21vZHVsZQorCisJIyBDaGVjayAvZGV2L3dhdGNoZG9nIGhlcmUgYmVjYXVzZSBpZiBpdCBkb2VzIG5vdCBleGlzdCBhZnRlciBtb2R1bGUgbG9hZGluZywKKwkjIGl0IG1ha2VzIG5vIHNlbnNlIHRvIHN0YXJ0IHRoZSBkYWVtb24KKwl0ZXN0IC1lIC9kZXYvd2F0Y2hkb2cgfHwgeyBsb2dfZGFlbW9uX21zZyAiZGFlbW9uIG5vdCBzdGFydCBkdWUgdG8gbGFjayBvZiAvZGV2L3dhdGNoZG9nIjsgZXhpdCAwOyB9CisKKwlsb2dfYmVnaW5fbXNnICJTdGFydGluZyB3YXRjaGRvZyBkYWVtb24uLi4iCisJc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAvdmFyL3J1bi8kTkFNRS5waWQgXAorICAgICAgICAgICAgIC0tZXhlYyAkREFFTU9OIC0tICR3YXRjaGRvZ19vcHRpb25zCisJbG9nX2VuZF9tc2cgJD8KKyAgICBmaQorICAgIDs7CisKKyAgc3RvcCkKKyAgICBpZiBbICRydW5fd2F0Y2hkb2cgPSAxIF0KKyAgICB0aGVuCisJbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcgd2F0Y2hkb2cgZGFlbW9uLi4uIgorCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgJFNUT1BfUkVUUllfU0NIRURVTEUgXAorCSAgICAtLXBpZGZpbGUgL3Zhci9ydW4vJE5BTUUucGlkCisJCisgICAgZmkKKyAgICA7OworCisgIHJlc3RhcnQpCisgICAgJDAgZm9yY2UtcmVsb2FkCisgICAgOzsKKworICBmb3JjZS1yZWxvYWQpCisgICAgaWYgWyAkcnVuX3dhdGNoZG9nID0gMCBdOyB0aGVuIGV4aXQgMDsgZmkKKyAgICBsb2dfZGFlbW9uX21zZyAiUmVzdGFydGluZyAkTkFNRSIKKyAgICAkMCBzdG9wCisgICAgJDAgc3RhcnQKKyAgICA7OworCisgIHN0YXR1cykKKyAgICBzdGF0dXMgIiREQUVNT04iCisgICAgOzsKKworICAqKQorICAgIGVjaG8gIlVzYWdlOiAvZXRjL2luaXQuZC93YXRjaGRvZyB7c3RhcnR8c3RvcHxyZXN0YXJ0fGZvcmNlLXJlbG9hZHxzdGF0dXN9IgorICAgIGV4aXQgMQorCitlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKaW5kZXggMzdiMzdhZS4uMWFjYWIyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCkBAIC0xMSw4ICsxMSw3IEBACiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS93YXRjaGRvZy93YXRjaGRvZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxpbnV4LXBhcmFtLmgtZm9yLUVYRUNfUEFHRVNJWkUtZGVmaW5pdGlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhdGNoZG9nLXJlbW92ZS1pbnRlcmRlcGVuZGVuY2llcy1vZi13YXRjaGRvZy1hbmQtd2QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd2F0Y2hkb2ctaW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly93YXRjaGRvZy1jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3dhdGNoZG9nLmluaXQgXAogICAgICAgICAgICBmaWxlOi8vd2Rfa2VlcGFsaXZlLmluaXQgXAogIgogCkBAIC0yMiwzMSArMjEsMzUgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3dhdGNoZG9nL2ZpbGVzL3dhdGNoZG9nLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi93YXRjaGRvZy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgogCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZwogCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjICIKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjICIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyAiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5mcyAiCitERVBFTkRTICs9ICJsaWJ0aXJwYyIKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1MgKz0gIi1sdGlycGMiCisKK0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1uZnMgIgogCiBJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWtlZXBhbGl2ZSIKIAotSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIndhdGNoZG9nLnNoIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0gPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJ3YXRjaGRvZyIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gInN0YXJ0IDI1IDEgMiAzIDQgNSAuIHN0b3AgODUgMCA2IC4iCiAKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfS1rZWVwYWxpdmUgPSAid2Rfa2VlcGFsaXZlIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0ta2VlcGFsaXZlID0gInN0YXJ0IDE1IDEgMiAzIDQgNSAuIHN0b3AgODUgMCA2IC4iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMjUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAogU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1rZWVwYWxpdmUiCiBTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAid2F0Y2hkb2cuc2VydmljZSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS1rZWVwYWxpdmUgPSAid2Rfa2VlcGFsaXZlLnNlcnZpY2UiCisjIFdoZW4gdXNpbmcgc3lzdGVtZCwgY29uc2lkZXIgbWFraW5nIHVzZSBvZiBpbnRlcm5hbCB3YXRjaGRvZyBzdXBwb3J0IG9mIHN5c3RlbWQuCisjIFNlZSBSdW50aW1lV2F0Y2hkb2dTZWMgaW4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS5jb25mLgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CiAJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KIAotCWluc3RhbGwgLUQgJHtTfS9yZWRoYXQvd2F0Y2hkb2cuaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dhdGNoZG9nLnNoCisJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3dhdGNoZG9nLmluaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC93YXRjaGRvZwogCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS93ZF9rZWVwYWxpdmUuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvd2Rfa2VlcGFsaXZlCiAKIAkjIHdhdGNoZG9nLmNvbmYgaXMgcHJvdmlkZWQgYnkgdGhlIHdhdGNoZG9nLWNvbmZpZyByZWNpcGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzM5Mjg5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkJhc2ljIGRlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUveGRnLXV0aWxzLyIKLURFU0NSSVBUSU9OID0gIlRoZSB4ZGctdXRpbHMgcGFja2FnZSBpcyBhIHNldCBvZiBzaW1wbGUgc2NyaXB0cyB0aGF0IHByb3ZpZGUgYmFzaWMgXAotZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgZm9yIGFueSBGcmVlIERlc2t0b3AsIHN1Y2ggYXMgTGludXguIFwKLVRoZXkgYXJlIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzZXQgb2YgZGVmYWN0byBzdGFuZGFyZHMuIFwKLVRoZSBmb2xsb3dpbmcgc2NyaXB0cyBhcmUgcHJvdmlkZWQgYXQgdGhpcyB0aW1lOiBcCi14ZGctZGVza3RvcC1pY29uIFwKLXhkZy1kZXNrdG9wLW1lbnUgXAoteGRnLWVtYWlsIFwKLXhkZy1pY29uLXJlc291cmNlIFwKLXhkZy1taW1lIFwKLXhkZy1vcGVuIFwKLXhkZy1zY3JlZW5zYXZlciBcCi14ZGctdGVybWluYWwgXAotIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE1MzY3YTkwOTM0MDk4ZDZiMDVhZjNiNzQ2NDA1MDE0IgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb3J0bGFuZC5mcmVlZGVza3RvcC5vcmcvZG93bmxvYWQvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlaW5zdGF0ZS14ZGctdGVybWluYWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10aGUtaW4tc2NyaXB0LW1hbnVhbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzYxZTc1ZWI3NmM5NGQxOWY2ZjRmMzMwZDhlZTYyNmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTUxOTUyZTJjNmJiMjEyMTRlMGJiNTRlMGRmZmEwNTdkMzBmNTU2MzMwMDIyNWMyNGMxNmZiYTg0NjI1OGJjYyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieGRnLXV0aWxzLSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykoKHJjfGFscGhhfGJldGEpXGQrKT8pXC4odGFyXC5nenx0Z3opIgotCi0jIE5lZWRzIGJyb2tlbnNlcCBhcyB0aGlzIGRvZXNuJ3QgdXNlIGF1dG9tYWtlCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIHhwcm9wIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLURFUEVORFMgPSAieG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gInhwcm9wIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU0NjYzOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3hkZy11dGlscy8iCitERVNDUklQVElPTiA9ICJUaGUgeGRnLXV0aWxzIHBhY2thZ2UgaXMgYSBzZXQgb2Ygc2ltcGxlIHNjcmlwdHMgdGhhdCBwcm92aWRlIGJhc2ljIFwKK2Rlc2t0b3AgaW50ZWdyYXRpb24gZnVuY3Rpb25zIGZvciBhbnkgRnJlZSBEZXNrdG9wLCBzdWNoIGFzIExpbnV4LiBcCitUaGV5IGFyZSBpbnRlbmRlZCB0byBwcm92aWRlIGEgc2V0IG9mIGRlZmFjdG8gc3RhbmRhcmRzLiBcCitUaGUgZm9sbG93aW5nIHNjcmlwdHMgYXJlIHByb3ZpZGVkIGF0IHRoaXMgdGltZTogXAoreGRnLWRlc2t0b3AtaWNvbiBcCit4ZGctZGVza3RvcC1tZW51IFwKK3hkZy1lbWFpbCBcCit4ZGctaWNvbi1yZXNvdXJjZSBcCit4ZGctbWltZSBcCit4ZGctb3BlbiBcCit4ZGctc2NyZWVuc2F2ZXIgXAoreGRnLXRlcm1pbmFsIFwKKyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKKworU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZWluc3RhdGUteGRnLXRlcm1pbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtdGhlLWluLXNjcmlwdC1tYW51YWwucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjkwMjA0MjUwOGI2MjYwMjdhMzcwOWQxMDVmMGI2M2ZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3OThiMDhhZjhhOGUyMDYzZGRkZTZjOWZhMzM5OGNhODE0ODRmMjdkZWM2NDJjNTYyN2ZmY2FhMGQ0MDUxZDkiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZy11dGlscy0oP1A8cHZlcj4oKFxkK1tcLlwtX10qKSspKChyY3xhbHBoYXxiZXRhKVxkKyk/KVwuKHRhclwuZ3p8dGd6KSIKKworIyBOZWVkcyBicm9rZW5zZXAgYXMgdGhpcyBkb2Vzbid0IHVzZSBhdXRvbWFrZQoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIFRoZSB4cHJvcCByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTID0gInhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ICs9ICJ4cHJvcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKaW5kZXggMWJlYjU0NS4uNmU0M2Y1YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKQEAgLTYsOCArNiw3IEBACiBMSUNFTlNFID0gIkJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9OGFkODYxNTE5ODU0MjQ0NGY4NGQyOGE2Y2YyMjZkZDgiCiAKLURFUEVORFMgPSAiIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyAiCitERVBFTkRTICs9ICJsaWJ0aXJwYyIKIFBSID0gInIyIgogCiAjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjawpAQCAtNDIsOCArNDEsOCBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyIKIFBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtbGlid3JhcCwsdGNwLXdyYXBwZXJzIgogCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyAiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMgIgorQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgorTERGTEFHUyArPSAiLWx0aXJwYyIKIAogZG9fY29uZmlndXJlKCkgewogCSMgTG9va3MgbGlrZSBjb25maWd1cmUuaW4gaXMgYnJva2VuLCBzbyB3ZSBhcmUgc2tpcHBpbmcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwZjhiODIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgTFpNQSBjb21wcmVzc2VkIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6LyIKLVNFQ1RJT04gPSAiYmFzZSIKLQotIyBUaGUgc291cmNlIGluY2x1ZGVzIGJpdHMgb2YgUEQsIEdQTHYyLCBHUEx2MywgTEdQTHYyLjErLCBidXQgdGhlIG9ubHkgZmlsZQotIyB3aGljaCBpcyBHUEx2MyBpcyBhbiBtNCBtYWNybyB3aGljaCBpc24ndCBzaGlwcGVkIGluIGFueSBvZiBvdXIgcGFja2FnZXMsCi0jIGFuZCB0aGUgTEdQTCBiaXRzIGFyZSB1bmRlciBsaWIvLCB3aGljaCBhcHBlYXJzIHRvIGJlIHVzZWQgZm9yIGxpYmdudSwgd2hpY2gKLSMgYXBwZWFycyB0byBiZSB1c2VkIGZvciBET1MgYnVpbGRzLiBTbyB3ZSdyZSBsZWZ0IHdpdGggR1BMdjIrIGFuZCBQRC4KLUxJQ0VOU0UgPSAiR1BMdjIrICYgR1BMLTMuMC13aXRoLWF1dG9jb25mLWV4Y2VwdGlvbiAmIExHUEx2Mi4xKyAmIFBEIgotTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCi1MSUNFTlNFXyR7UE59LWRldiA9ICJHUEx2MisiCi1MSUNFTlNFXyR7UE59LXN0YXRpY2RldiA9ICJHUEx2MisiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJHUEx2MisiCi1MSUNFTlNFXyR7UE59LWRiZyA9ICJHUEx2MisiCi1MSUNFTlNFXyR7UE59LWxvY2FsZSA9ICJHUEx2MisiCi1MSUNFTlNFX2xpYmx6bWEgPSAiUEQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0NzViNmM3ZGNhMjM2NzQwYWNlNGJiYTU1M2U4ZTFjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9nZXRvcHQuYztlbmRsaW5lPTIzO21kNT0yMDY5YjBlZTcxMDU3MmMwM2JiMzExNGU0NTMyY2Q4NCAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZjY4Njc0ZmI0N2E4YjhlNzQxYjM0ZTQyOWQ4NmU5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTkyOGIzNTdkMGEwOWExMmE0YjRjNWZhZmNhOGMzMWMxOWIwZTdkM2I4ZWJiMTk2MjJlOTZmMjZkYmYyOGNiIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0Ci0KLVBBQ0tBR0VTID0rICJsaWJsem1hIgotCi1GSUxFU19saWJsem1hID0gIiR7bGliZGlyfS9saWJsem1hKiR7U09MSUJTfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1leHBvcnQgQ09ORklHX1NIRUxMPSIvYmluL3NoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTE3NDZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveHoveHpfNS4yLjQuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIExaTUEgY29tcHJlc3NlZCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei8iCitTRUNUSU9OID0gImJhc2UiCisKKyMgVGhlIHNvdXJjZSBpbmNsdWRlcyBiaXRzIG9mIFBELCBHUEx2MiwgR1BMdjMsIExHUEx2Mi4xKywgYnV0IHRoZSBvbmx5IGZpbGUKKyMgd2hpY2ggaXMgR1BMdjMgaXMgYW4gbTQgbWFjcm8gd2hpY2ggaXNuJ3Qgc2hpcHBlZCBpbiBhbnkgb2Ygb3VyIHBhY2thZ2VzLAorIyBhbmQgdGhlIExHUEwgYml0cyBhcmUgdW5kZXIgbGliLywgd2hpY2ggYXBwZWFycyB0byBiZSB1c2VkIGZvciBsaWJnbnUsIHdoaWNoCisjIGFwcGVhcnMgdG8gYmUgdXNlZCBmb3IgRE9TIGJ1aWxkcy4gU28gd2UncmUgbGVmdCB3aXRoIEdQTHYyKyBhbmQgUEQuCitMSUNFTlNFID0gIkdQTHYyKyAmIEdQTC0zLjAtd2l0aC1hdXRvY29uZi1leGNlcHRpb24gJiBMR1BMdjIuMSsgJiBQRCIKK0xJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1zdGF0aWNkZXYgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1kYmcgPSAiR1BMdjIrIgorTElDRU5TRV8ke1BOfS1sb2NhbGUgPSAiR1BMdjIrIgorTElDRU5TRV9saWJsem1hID0gIlBEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05N2Q1NTRhMzI4ODFmZWUwYWEyODNkOTZlNDdjYjI0YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZ2V0b3B0LmM7ZW5kbGluZT0yMzttZDU9MjA2OWIwZWU3MTA1NzJjMDNiYjMxMTRlNDUzMmNkODQgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YWNlMzI2NGJkZDAwYzY1ZWVlYzI4OTEzNDZmNjVlNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTEyZjNiNzI2ZDNiMzdiNmRjNGM4NTcwZTEzN2I5MzExZTc1NTJlOGNjYmFiNGQzOWQ0N2NlNWY0MTc3MTQ1IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAieHotKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworUEFDS0FHRVMgPSsgImxpYmx6bWEiCisKK0ZJTEVTX2xpYmx6bWEgPSAiJHtsaWJkaXJ9L2xpYmx6bWEqJHtTT0xJQlN9IgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInh6IHh6Y2F0IHVueHogXAorICAgICAgICAgICAgICAgICAgICAgbHptYSBsemNhdCB1bmx6bWEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjYuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI1MGY3Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI2LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCi0JICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCi0JICAgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGpzb24tZ2xpYiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI4NDQ5OTY4MzY2YTZmOWFhZmYzYWMyMjhkZGZjN2M2NiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjAxYjE2YWE1NWQzMTJhZTBmMTdkMzEzNmY5MGQ4YzY4YWM3NDg3MTVmMTE5NDEyZmIxOTE3MDIzYzZmNjMwYTgiCi0KLUVYVFJBX09FTUVTT04gKz0gIiAtRGRpc3RyaWJ1dG9yX25hbWU9JHtESVNUUk99IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbC9zZWFyY2gtcHJvdmlkZXJzIgotUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjguMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yOC4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ2YzlkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjguMy4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK0RFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKKwkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGxpYnhtbDItbmF0aXZlIFwKKwkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzMWE0YTQ0M2U4ZTIyZjA4NWExMGY4MGI3ZTQxZDVmMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjY5MDU0NmE3MDFmMDQ2YzVjMmIzYTA5MjY1OTU4OWVhNmUxN2NiMGY5YTgxZWMzZmRiMzA0NmIwMGNlZGU2ZjciCisKK0VYVFJBX09FTUVTT04gKz0gIiAtRGRpc3RyaWJ1dG9yX25hbWU9JHtESVNUUk99IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbC9zZWFyY2gtcHJvdmlkZXJzICR7ZGF0YWRpcn0vbWV0YWluZm8iCitSREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2gKaW5kZXggMjQ5NTE3ZC4uZDRmM2NjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZmlsZXMvMDAwMi1oZWxwLW1lc29uLmJ1aWxkLWRpc2FibGUtdGhlLXVzZS1vZi15ZWxwLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaApAQCAtMSwzNCArMSwzMCBAQAotRnJvbSBmYzMxNGZjM2E2NmM5MmZlNzNlMWEwY2VhNGY0OWQxMWIyOWUxZjQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMDQ4YWUyZDIyNWQyNWNjNThmMzc4NzE4Y2E2ZjlkZGIxYTIyOGY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE1OjUwOjM4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBoZWxwL21lc29uLmJ1aWxkOiBkaXNhYmxlIHRoZSB1c2Ugb2YgeWVscAorU3ViamVjdDogW1BBVENIXSBoZWxwL21lc29uLmJ1aWxkOiBkaXNhYmxlIHRoZSB1c2Ugb2YgeWVscAogCiBJbiBwYXJ0aWN1bGFyIHRoaXMgYXZvaWRzIGNhbGxpbmcgaXRzdG9vbCB3aGljaCBvZS1jb3JlIGRvZXNuJ3QgcHJvdmlkZS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIGhlbHAvbWVzb24uYnVpbGQgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBoZWxwL21lc29uLmJ1aWxkIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9oZWxwL21lc29uLmJ1aWxkIGIvaGVscC9tZXNvbi5idWlsZAotaW5kZXggZjcyMGFkZC4uY2JmZWIxZSAxMDA2NDQKK2luZGV4IGZkZGNmNGMuLmY3ZDc2YzYgMTAwNjQ0CiAtLS0gYS9oZWxwL21lc29uLmJ1aWxkCiArKysgYi9oZWxwL21lc29uLmJ1aWxkCi1AQCAtNDYsOCArNDYsOCBAQCBoZWxwX2xpbmd1YXMgPSBbCi0gICAnc3YnCitAQCAtMzIsNyArMzIsNyBAQCBoZWxwX21lZGlhID0gWworICAgJ21lZGlhL3dlYi1icm93c2VyLnBuZycKICBdCiAgCiAtZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKIC0gIHNvdXJjZXM6IGhlbHBfZmlsZXMsCiAtICBtZWRpYTogaGVscF9tZWRpYSwKLS0gIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAogLSkKICsjZ25vbWUueWVscChtZXNvbi5wcm9qZWN0X25hbWUoKSwKICsjICBzb3VyY2VzOiBoZWxwX2ZpbGVzLAogKyMgIG1lZGlhOiBoZWxwX21lZGlhLAotKyMgIGxhbmd1YWdlczogaGVscF9saW5ndWFzLAogKyMpCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZmlsZXMvZ2NyLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItdmFwaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9maWxlcy9nY3ItYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci12YXBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjA1NDI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9maWxlcy9nY3ItYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci12YXBpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSBlN2UwYzU2Y2E4MjAzMTEyMWYxOTJmN2Y3MTFiNzg0MThiMTU0YzlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMjggTm92IDIwMTYgMTA6MTc6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2NyOiBhZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMgZm9yIHZhcGkKLQotQWNjb3JkaW5nIHRvIHRoZSB2YXBpX0RFUFMgZGVmaW5pdGlvbjoKLWdjci0zLnZhcGkgZGVwZW5kcyBvbiBnY2stMS52YXBpLAotZ2NyLXVpLTMudmFwaSBkZXBlbmRzIG9uIGdjay0xLnZhcGkgYW5kIGdjci0zLnZhcGkKLQotQnV0IHRoZXNlIGRlcGVuZGVuY2llcyBhcmUgbWlzc2luZyBmb3IgdGhlIG1ha2UgdGFyZ2V0cywKLXNvIGl0IHdpbGwgZmFpbCB3aGVuIGJ1aWxkIGluIHBhcmFsbGVsOgotZXJyb3I6IFBhY2thZ2UgYGdjay0xJyBub3QgZm91bmQgaW4gc3BlY2lmaWVkIFZhbGEgQVBJIGRpcmVjdG9yaWVzIG9yIEdPYmplY3QtSW50cm9zcGVjdGlvbiBHSVIgZGlyZWN0b3JpZXMKLWVycm9yOiBQYWNrYWdlIGBnY3ItMycgbm90IGZvdW5kIGluIHNwZWNpZmllZCBWYWxhIEFQSSBkaXJlY3RvcmllcyBvciBHT2JqZWN0LUludHJvc3BlY3Rpb24gR0lSIGRpcmVjdG9yaWVzCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Zzc3NTk2Ni5idWd6aWxsYS1hdHRhY2htZW50cy5nbm9tZS5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MzQxNzkxXQotCi1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NyL01ha2VmaWxlLmFtIHwgMiArLQotIHVpL01ha2VmaWxlLmFtICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djci9NYWtlZmlsZS5hbSBiL2djci9NYWtlZmlsZS5hbQotaW5kZXggZWRhMzAyZi4uNmU3OGRiYSAxMDA2NDQKLS0tLSBhL2djci9NYWtlZmlsZS5hbQotKysrIGIvZ2NyL01ha2VmaWxlLmFtCi1AQCAtMjIxLDcgKzIyMSw3IEBAIGdpcl9EQVRBICs9IEdjci1AR0NSX01BSk9SQC5naXIKLSAKLSBpZiBFTkFCTEVfVkFQSUdFTgotIAotLWdjci1AR0NSX01BSk9SQC52YXBpOiBHY3ItQEdDUl9NQUpPUkAuZ2lyIGdjci9HY3ItQEdDUl9NQUpPUkAubWV0YWRhdGEgZ2NyLUBHQ1JfTUFKT1JALmRlcHMKLStnY3ItQEdDUl9NQUpPUkAudmFwaTogR2NyLUBHQ1JfTUFKT1JALmdpciBnY3IvR2NyLUBHQ1JfTUFKT1JALm1ldGFkYXRhIGdjci1AR0NSX01BSk9SQC5kZXBzIGdjay1AR0NLX01BSk9SQC52YXBpCi0gCi0gVkFQSUdFTl9WQVBJUyArPSBnY3ItQEdDUl9NQUpPUkAudmFwaQotIAotZGlmZiAtLWdpdCBhL3VpL01ha2VmaWxlLmFtIGIvdWkvTWFrZWZpbGUuYW0KLWluZGV4IGFhNTI0NzYuLjY2MTJmMGQgMTAwNjQ0Ci0tLS0gYS91aS9NYWtlZmlsZS5hbQotKysrIGIvdWkvTWFrZWZpbGUuYW0KLUBAIC0xNjAsNyArMTYwLDcgQEAgZ2lyX0RBVEEgKz0gR2NyVWktQEdDUl9NQUpPUkAuZ2lyCi0gCi0gaWYgRU5BQkxFX1ZBUElHRU4KLSAKLS1nY3ItdWktQEdDUl9NQUpPUkAudmFwaTogR2NyVWktQEdDUl9NQUpPUkAuZ2lyIHVpL0djclVpLUBHQ1JfTUFKT1JALm1ldGFkYXRhIGdjci11aS1AR0NSX01BSk9SQC5kZXBzCi0rZ2NyLXVpLUBHQ1JfTUFKT1JALnZhcGk6IEdjclVpLUBHQ1JfTUFKT1JALmdpciB1aS9HY3JVaS1AR0NSX01BSk9SQC5tZXRhZGF0YSBnY3ItdWktQEdDUl9NQUpPUkAuZGVwcyBnY2stQEdDS19NQUpPUkAudmFwaSBnY3ItQEdDUl9NQUpPUkAudmFwaQotIAotIFZBUElHRU5fVkFQSVMgKz0gZ2NyLXVpLUBHQ1JfTUFKT1JALnZhcGkKLSAKLS0tIAotMi44LjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY4ZTBmNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBiaXRzIG9mIGNyeXB0byBVSSBhbmQgcGFyc2luZyBldGMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbgotIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovL2djci1hZGQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLXZhcGkucGF0Y2giCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjQzMTRiZjg5ZWFjMjkzZGQwYTlkODA2NTkzZmYxYjM1IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTA1NzJjNjI2ZDhhNzA4MjI1NTYwYzQyYjQ0MjFmNzk0MTMxNTI0N2ZhMTY3OWQ0ZWY1NjliZGU3ZjRiYjM3OSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7ZGF0YWRpcn0vZ2NyLTMgXAotIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOS8KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjI4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzk2MzYyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjI4LjAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGJpdHMgb2YgY3J5cHRvIFVJIGFuZCBwYXJzaW5nIGV0YyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0ayszIHAxMS1raXQgZ2xpYi0yLjAgbGliZ2NyeXB0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJ2xpYnhzbHQtbmF0aXZlJywgJycsIGQpfSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisjIGRlcGVuZHMgb24gZ3RrKzMsIGJ1dCBhbHNvIHgxMSB0aHJvdWdoIGd0aysteDExCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MzIxMzE5MzA3ZGFkMzRkY2EyZmQ1MmU3YzljMDFhYiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjE1ZTE3NWQxZGE3ZWM0ODZkNTk3NDliYTM0OTA2MjQxYzQ0Mjg5ODExOGNlMjI0YTdiNzBiZjJlODQ5ZmFmMGIiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L2djci0zIFwKKyIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAyMjkvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgVGhlc2UgZmlsZXMgbWF5IGJlIG91dCBvZiBkYXRlIG9yIG1pc3Npbmcgb3VyIGZpeGVzCisjIGxpYmdjcnlwdC5tNCBpbiBwYXJ0aWN1bGFyIGlzIGNhbGxpbmcgaW50byBsaWJnY3J5cHQtY29uZmlnCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBybSAtZiAke1N9L2J1aWxkL200LyoKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLURpc2FibGUtbGlic2VjY29tcC1zeWNhbGwtZmlsdGVyaW5nLW1lY2hhbmlzbS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiMDc0My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDlkZmFkYTA2ZjhkMmUwMmQ3YTA0Zjc5M2JhNmUxZDRhMmFhNWZmYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNSBPY3QgMjAxNyAxNDo1NDoxNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIGxpYnNlY2NvbXAgKHN5Y2FsbCBmaWx0ZXJpbmcgbWVjaGFuaXNtKQotCi1VcHN0cmVhbSBmb3Jnb3QgdG8gbWFrZSBpdCBvcHRpb25hbCwgYW5kIGl0IGlzIG5vdCBjdXJyZW50bHkgdXNlZCBpbiBZb2N0bwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4NmJjZjFmLi44OTExZjE5IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xNTcsMTcgKzE1Nyw2IEBAIGVsc2UKLSBmaQotIAotIFNFQ0NPTVBfUEtHPSIiCi0tZG5sIENoZWNrIGZvciBidWJibGV3cmFwIGNvbXBhdGlibGUgcGxhdGZvcm0KLS1jYXNlICRob3N0X29zIGluCi0tICBsaW51eCopCi0tICAgIFBLR19DSEVDS19NT0RVTEVTKExJQlNFQ0NPTVAsIFtsaWJzZWNjb21wXSkKLS0gICAgU0VDQ09NUF9QS0c9ImxpYnNlY2NvbXAiCi0tICAgIEFDX0RFRklORV9VTlFVT1RFRChfR05VX1NPVVJDRSwgMSwgW0RlZmluZSB0byBpbmNsdWRlIEdOVSBleHRlbnNpb25zXSkKLS0gICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfQldSQVAsIDEsIFtEZWZpbmUgdG8gMSBpZiBCdWJibGV3cmFwIHN1cHBvcnQgaXMgYXZhaWxhYmxlXSkKLS0gICAgQUNfREVGSU5FKFtFTkFCTEVfU0VDQ09NUF0sIFsxXSwgW0RlZmluZSBpZiB1c2luZyBzZWNjb21wXSkKLS0gICAgQUNfREVGSU5FX1VOUVVPVEVEKElOU1RBTExfUFJFRklYLCAiJHByZWZpeCIsIFtQYXRoIHRvIGxpYnJhcnkgaW5zdGFsbCBwcmVmaXhdKQotLSAgICA7OwotLWVzYWMKLSAKLSBkbmwgcGtnLWNvbmZpZyBkZXBlbmRlbmN5IGNoZWNrcwotIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk1MzkzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AvMDAwMS1jb25maWd1cmUuYWMtUmVtb3ZlLWdub21lLWNvbW1vbi1tYWNyby1jYWxscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gODM0YmM4NjE5MjFmZTAzNjFmMmQ2YTViNTcxNmZjOTdhOTUxOTQ3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTM6MTM6NDUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBSZW1vdmUgZ25vbWUtY29tbW9uIG1hY3JvIGNhbGxzCi0KLWdub21lLWNvbW1vbiBpcyBkZXByZWNhdGVkIGFuZCB0aGVzZSBhcmVuJ3QgZG9pbmcgbXVjaCBmb3IgdXMuCi0KLVVwc3RyZWFtYWJsZSBmaXggd291bGQgcHJvYmFibHkgaW52b2x2ZSB1c2luZyBhdXRvY29uZi1hcmNoaXZlOgotVHJ5aW5nIHRvIGF2b2lkIHRoYXQgZGVwZW5kZW5jeSBmb3Igbm93LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAzIC0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3YWRjZjBlLi5iYjc2NTlkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MSw5ICs3MSw2IEBAIEFDX1NVQlNUKEdOT01FX0RBVEUpCi0gQUNfU1VCU1QoR05PTUVfREFURV9DT01NRU5UX1NUQVJUKQotIEFDX1NVQlNUKEdOT01FX0RBVEVfQ09NTUVOVF9FTkQpCi0gCi0tR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0pCi0tR05PTUVfTUFJTlRBSU5FUl9NT0RFX0RFRklORVMKLS0KLSBBQ19BUkdfRU5BQkxFKGRlcHJlY2F0aW9uX2ZsYWdzLAotICAgICAgICAgICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1kZXByZWNhdGlvbi1mbGFnc10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZSAqX0RJU0FCTEVfREVQUkVDQVRFRCBmbGFncyBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sLAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzlkYzlhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1CUE4gPSAiZ25vbWUtZGVza3RvcCIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmNlZTJlY2Q2NzdkODdlYWEwZWI1ZWJmYTdiNDVmYjMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmNzU2MWE3YTMxM2ZjNDc0YjJjMzkwY2Q5Njk2ZGYxZjVjMWUxNTU2MDgwZTQzZjRhZmUwNDJiMTA2MGU1ZjJhIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtYXNzdW1lLXRpbWVfdC1pcy1sb25nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWxpYnNlY2NvbXAtc3ljYWxsLWZpbHRlcmluZy1tZWNoYW5pc20ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdjb25mIHZpcnR1YWwvbGlieDExIGd0ayszIGdsaWItMi4wIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHhrZXlib2FyZC1jb25maWcgaXNvLWNvZGVzIHVkZXYiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVza3RvcC1kb2NzIgotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCi1GSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgotCi1SUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaAppbmRleCA5NmVjOTZiLi5iNTk5MmViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA4OGVkOTk2Y2M5ZTJiMjk2Y2FjZmRiZWVjZTRiZTI4YTkwYmFiNTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5NjYxOTUxODM4NzczMjUxZDBhOTE0ZTg5N2U4YTBkOTVjZTAyN2Y2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTQ6NTU6NDkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIERvbid0IHVzZSBBQ19DQU5PTklDQUxfSE9TVAorU3ViamVjdDogW1BBVENIXSBEb24ndCB1c2UgQUNfQ0FOT05JQ0FMX0hPU1QKIAogVGhpcyB3b24ndCB3b3JrIHdoZW4gYnVpbGRpbmcgYWxsYXJjaCAoYW5kIGlzIG9ubHkgdXNlZCB0byBmaW5kIG91dCBpZgogdGFyZ2V0IGlzIHdpbmRvd3MpLgpAQCAtMTMsMTMgKzEzLDEzIEBACiAgY29uZmlndXJlLmFjIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWR3YWl0YS1pY29uLXRoZW1lLTMuMjYuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGFkd2FpdGEtaWNvbi10aGVtZS0zLjI2LjEvY29uZmlndXJlLmFjCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBmYjc4N2RjLi41Y2FlZjBjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKIEBAIC0zLDcgKzMsNiBAQCBBQ19QUkVSRVEoMi41MykKICAKLSBBQ19JTklUKFthZHdhaXRhLWljb24tdGhlbWVdLCBbMy4yNi4xXSwKKyBBQ19JTklUKFthZHdhaXRhLWljb24tdGhlbWVdLCBbMy4yOC4wXSwKICAgICAgICAgIFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1hZHdhaXRhLWljb24tdGhlbWVdKQogLUFDX0NBTk9OSUNBTF9IT1NUCiAgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MzdkNWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLVNVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgotSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2VmODdlNzg5NzExZTUxMzA3OTJkNGI1MzY2YzAwNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjhiYTczOTJjNzc2MTk5NmVmZDc4MDc3OTE2N2VhNmM5NDBlZWRmYjFiZjM3Y2ZlOWJjY2I3MDIxZjU0ZDc5ZCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6Ci0gICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgotCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKLQkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKLX0KLQotUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKLQotUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi1SUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLQotRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKLUZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCi1GSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCi0gICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKLUZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCi0gICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwZGQzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yOC4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK1NVTU1BUlkgPSAiR1RLKyBpY29uIHRoZW1lIgorSE9NRVBBR0UgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvYWR3YWl0YS1pY29uLXRoZW1lLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUnVuLWluc3RhbGxhdGlvbi1jb21tYW5kcy1hcy1zaGVsbC1qb2JzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjI1YjJkODJjYmViZjJjYzljZDQ2OTQ1N2I2MDRmMmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FhZThjMWRmZmQ2NzcyZmQxYTIxYTNkMzY1YTBlYTI4YjdjMzk4OGJkYmJlYWZiZjg3NDJjZGE2ODI0MjE1MCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBCdWlsZCB1c2VzIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIHRvIGNyZWF0ZSBwbmcgdmVyc2lvbnM6CisgICAgICAgICMgbm8gbmVlZCB0byBzdG9yZSB0aGUgc3ZncyBhbnltb3JlLgorCXJtIC1mICR7RH0ke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMuc3ZnIFwKKwkgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLXJ0bC5zdmcKK30KKworUEFDS0FHRVMgPSAiJHtQTn0tY3Vyc29ycyAke1BOfS1zeW1ib2xpYy1oaXJlcyAke1BOfS1zeW1ib2xpYyAke1BOfS1oaXJlcyAke1BOfSIKKworUlJFUExBQ0VTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSQ09ORkxJQ1RTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCitSUFJPVklERVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKKworRklMRVNfJHtQTn0tY3Vyc29ycyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9jdXJzb3JzLyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljLWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzk2eDk2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNjR4NjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS80OHg0OC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzMyeDMyLyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1zeW1ib2xpYyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8xNngxNi8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI0eDI0LyovKi5zeW1ib2xpYy5wbmciCitGSUxFU18ke1BOfS1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNTZ4MjU2LyBcCisgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS81MTJ4NTEyLyIKK0ZJTEVTXyR7UE59ID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLyBcCisgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvcGtnY29uZmlnL2Fkd2FpdGEtaWNvbi10aGVtZS5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhODVjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gNGNmMzdkNTZmZGRjYzIyYmNkODE4ZjZkNDcwNDA0ZjU2ZDkwN2YzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhc2NoYSBTaWxiZSA8eC15bzE3QHNlLXNpbGJlLmRlPgorRGF0ZTogRnJpLCA4IEp1biAyMDE4IDEzOjU1OjEwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbG9jYXRlIHRoZSByZXBvc2l0b3J5IGRpcmVjdG9yeSBmb3IgbmF0aXZlIGJ1aWxkcworCitJbnN0ZWFkIG9mIGhhcmQtY29kaW5nIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9MSUJESVIgd2hlbgorZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIGJ1aWx0LCB1c2UgZGxhZGRyKCkgdG8gZGV0ZXJtaW5lIHdoZXJlCitHT0JKRUNUX0lOVFJPU1BFQ1RJT05fTElCRElSIGlzIGFuZCB1c2UgdGhhdCBwYXRoIHRvIGNhbGN1bGF0ZSB0aGUKK3JlcG9zaXRvcnkgZGlyZWN0b3J5LgorCitUaGlzIGZpeGVzIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgYWNjZXNzaW5nIHBhdGhzIGFjcm9zcyBidWlsZAorZGlyZWN0b3JpZXMgKGUuZy4gaWYgdGhlIGJ1aWxkIGRpcmVjdG9yaWVzIHVzZSB0aGUgc2FtZSBzaGFyZWQgc3RhdGUKK2NhY2hlIG9yIHNzdGF0ZSBtaXJyb3IpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IFNhc2NoYSBTaWxiZSA8eC15bzE3QHNlLXNpbGJlLmRlPgorCistLS0KKyBnaXJlcG9zaXRvcnkvZ2lyZXBvc2l0b3J5LmMgfCAxNSArKysrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYyBiL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYworaW5kZXggYzFmYTNkMy4uZWZhNTU3ZSAxMDA2NDQKKy0tLSBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYworKysrIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCitAQCAtMjEsNiArMjEsOCBAQAorICAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICAqLworIAorKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKysKKyAjaW5jbHVkZSAiY29uZmlnLmgiCisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CitAQCAtMzQsNiArMzYsOCBAQAorICNpbmNsdWRlICJnaXR5cGVsaWItaW50ZXJuYWwuaCIKKyAjaW5jbHVkZSAiZ2lyZXBvc2l0b3J5LXByaXZhdGUuaCIKKyAKKysjaW5jbHVkZSA8ZGxmY24uaD4KKysKKyAvKioKKyAgKiBTRUNUSU9OOmdpcmVwb3NpdG9yeQorICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogR09iamVjdCBJbnRyb3NwZWN0aW9uIHJlcG9zaXRvcnkgbWFuYWdlcgorQEAgLTE4OCw5ICsxOTIsMTYgQEAgaW5pdF9nbG9iYWxzICh2b2lkKQorICAgICAgICAgICBnX2ZyZWUgKGN1c3RvbV9kaXJzKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICBsaWJkaXIgPSBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fTElCRElSOworKyAgICAgIERsX2luZm8gZ2lfbGliX2luZm87CisgCistICAgICAgdHlwZWxpYl9kaXIgPSBnX2J1aWxkX2ZpbGVuYW1lIChsaWJkaXIsICJnaXJlcG9zaXRvcnktMS4wIiwgTlVMTCk7CisrICAgICAgaWYgKGRsYWRkciAoZ19pcmVwb3NpdG9yeV9nZXRfZGVmYXVsdCwgJmdpX2xpYl9pbmZvKSkgeworKyAgICAgICAgY2hhciAqbGliZGlyID0gZ19wYXRoX2dldF9kaXJuYW1lIChnaV9saWJfaW5mby5kbGlfZm5hbWUpOworKyAgICAgICAgdHlwZWxpYl9kaXIgPSBnX2J1aWxkX2ZpbGVuYW1lIChsaWJkaXIsICJnaXJlcG9zaXRvcnktMS4wIiwgTlVMTCk7CisrICAgICAgICBnX2ZyZWUgKGxpYmRpcik7CisrICAgICAgfSBlbHNlIHsKKysgICAgICAgIGxpYmRpciA9IEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9MSUJESVI7CisrICAgICAgICB0eXBlbGliX2RpciA9IGdfYnVpbGRfZmlsZW5hbWUgKGxpYmRpciwgImdpcmVwb3NpdG9yeS0xLjAiLCBOVUxMKTsKKysgICAgICB9CisgCisgICAgICAgdHlwZWxpYl9zZWFyY2hfcGF0aCA9IGdfc2xpc3RfcHJlcGVuZCAodHlwZWxpYl9zZWFyY2hfcGF0aCwgdHlwZWxpYl9kaXIpOworIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaAppbmRleCA5YWJhZWE3Li44NmNkNGVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaApAQCAtMSwxMSArMSwxMiBAQAotRnJvbSAzYTlkMWU1ZWUwYWFlNTZmYWZlYzBiZWJhMjAxNGMxOWU0ZmYzMTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjYTBmYjE3ZTI2OGMxNzZhYzg5ZGYwODFiMWVmYTRhNDI5ODlmMDE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDE3OjA3OjI4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBSZXZlcnQgYW4gaW5jb21wbGV0ZSB1cHN0cmVhbSBhdHRlbXB0IGF0IGNyb3NzLWNvbXBpbGUKK1N1YmplY3Q6IFtQQVRDSF0gUmV2ZXJ0IGFuIGluY29tcGxldGUgdXBzdHJlYW0gYXR0ZW1wdCBhdCBjcm9zcy1jb21waWxlCiAgc3VwcG9ydAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBjb21tb24ubWsgICAgICAgICAgICAgICAgfCA0IC0tLS0KICBnaXNjYW5uZXIvZ2R1bXBwYXJzZXIucHkgfCA2IC0tLS0tLQpAQCAtMjksMTAgKzMwLDEwIEBACiAgCiAgSU5UUk9TUEVDVElPTl9DT01QSUxFUl9BUkdTID0gXAogZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9nZHVtcHBhcnNlci5weSBiL2dpc2Nhbm5lci9nZHVtcHBhcnNlci5weQotaW5kZXggMTEzNGYzMy4uOWJkYzJiYyAxMDA2NDQKK2luZGV4IGNkOWQ5NGQuLmI0MTc3MmMgMTAwNjQ0CiAtLS0gYS9naXNjYW5uZXIvZ2R1bXBwYXJzZXIucHkKICsrKyBiL2dpc2Nhbm5lci9nZHVtcHBhcnNlci5weQotQEAgLTE2MiwxMiArMTYyLDYgQEAgYmxvYiBjb250YWluaW5nIGRhdGEgZ2xlYW5lZCBmcm9tIEdPYmplY3QncyBwcmltaXRpdmUgaW50cm9zcGVjdGlvbi4iIiIKK0BAIC0xNjEsMTIgKzE2MSw2IEBAIGJsb2IgY29udGFpbmluZyBkYXRhIGdsZWFuZWQgZnJvbSBHT2JqZWN0J3MgcHJpbWl0aXZlIGludHJvc3BlY3Rpb24uIiIiCiAgICAgICAgICBvdXRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9iaW5hcnkudG1wZGlyLCAnZHVtcC54bWwnKQogIAogICAgICAgICAgYXJncyA9IFtdCkBAIC00NSw2ICs0NiwzIEBACiAgICAgICAgICBhcmdzLmV4dGVuZChzZWxmLl9iaW5hcnkuYXJncykKICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWludHJvc3BlY3QtZHVtcD0lcywlcycgJSAoaW5fcGF0aCwgb3V0X3BhdGgpKQogIAotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtY29uZmlndXJlLmFjLW1ha2UtR0lSX0RJUi1jb25maWd1cmFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtY29uZmlndXJlLmFjLW1ha2UtR0lSX0RJUi1jb25maWd1cmFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0MDJmOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1HSVJfRElSLWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMCwwICsxLDY4IEBACitjb25maWd1cmUuYWM6IG1ha2UgR0lSX0RJUiBjb25maWd1cmFibGUKKworU29tZSAuZ2lyIGZpbGVzIHN1Y2ggYXMgR0xpYi0yLjAuZ2lyIGFyZSBhcmNoIHJlbGF0ZWQgd2hpY2ggY29udGFpbiBzdWNoCithcyBsZW5ndGhzIG9mIHBvaW50ZXJzIHRoYXQgdGhleSBhcmUgZGlmZmVyZW50IGZvciA2NCBhbmQgMzIgYml0IHRhcmdldC4KK0l0IGNhdXNlcyBpbnN0YWxsIGZpbGUgY29uZmxpY3RzIGZvciBtdWx0aWxpYiB3aGVuIGludGFsbAorZ29iamVjdC1pbnRyb3NwZWN0aW9uIGFuZCBsaWIzMi1nb2JqZWN0LWludHJvc3BlY3Rpb24gYm90aC4KKworQWRkIGNvbmZpZ3VyZSBvcHRpb24gJ3dpdGgtZ2lyLWRpci1wcmVmaXgnIGZvciBhdXRvdG9vbHMgdG8gbWFrZSAuZ2lyCitjb3VsZCBiZSBpbnN0YWxsZWQgdG8gYSBjb25maWd1cmVkIHBhdGggc3VjaCBhcyAke2xpYmRpcn0uIEFuZCB1cGRhdGUKK2dpcmRpciBpbiAucGMgZmlsZXMgYXMgd2VsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9jb21taXQvMzMwMWM3ZV0KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDcgKysrKystLQorIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMuaW4gICAgICAgICAgIHwgMiArLQorIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uby1leHBvcnQtMS4wLnBjLmluIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiNDI5NGM1Ny4uNjA1MDY5NDcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTExNCw5ICsxMTQsMTIgQEAgR0lSX1NVRkZJWD0iZ2lyLTEuMCIKKyBBQ19TVUJTVChHSVJfU1VGRklYKQorIEFDX0RFRklORV9VTlFVT1RFRChHSVJfU1VGRklYLCAiJEdJUl9TVUZGSVgiLCBbTmFtZSBvZiB0aGUgZ2lyIGRpcmVjdG9yeV0pCisgCistR0lSX0RJUj0iJEVYUEFOREVEX0RBVEFESVIvJEdJUl9TVUZGSVgiCisrQUNfQVJHX1dJVEgoW2dpci1kaXItcHJlZml4XSwKKysJCVtBU19IRUxQX1NUUklORyhbLS13aXRoLWdpci1kaXItcHJlZml4XSwgW0RpcmVjdG9yeSBwcmVmaXggZm9yIGdpciBpbnN0YWxsYXRpb25dKV0sCisrCQlbR0lSX0RJUl9QUkVGSVg9IiR3aXRodmFsIl0sIFtHSVJfRElSX1BSRUZJWD0iJEVYUEFOREVEX0RBVEFESVIiXSkKKytHSVJfRElSPSIkR0lSX0RJUl9QUkVGSVgvJEdJUl9TVUZGSVgiCisgQUNfU1VCU1QoR0lSX0RJUikKKy1BQ19ERUZJTkVfVU5RVU9URUQoR0lSX0RJUiwgIiRHSVJfRElSIiwgW0RpcmVjdG9yIHByZWZpeCBmb3IgZ2lyIGluc3RhbGxhdGlvbl0pCisrQUNfREVGSU5FX1VOUVVPVEVEKEdJUl9ESVIsICIkR0lSX0RJUiIsIFtEaXJlY3RvcnkgcHJlZml4IGZvciBnaXIgaW5zdGFsbGF0aW9uXSkKKyAKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCLCBbZ2xpYi0yLjAgPj0gMi41OC4wXSkKKyAKK2RpZmYgLS1naXQgYS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjLmluIGIvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYy5pbgoraW5kZXggYTA4YjVkMjcuLjM0MDk4NTZjIDEwMDY0NAorLS0tIGEvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYy5pbgorKysrIGIvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYy5pbgorQEAgLTEwLDcgKzEwLDcgQEAgZ19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXIKKyBnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyQEVYRUVYVEAKKyBnX2lyX2dlbmVyYXRlPSR7YmluZGlyfS9nLWlyLWdlbmVyYXRlQEVYRUVYVEAKKyBnaWRhdGFkaXI9JHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wCistZ2lyZGlyPSR7ZGF0YWRpcn0vZ2lyLTEuMAorK2dpcmRpcj1AR0lSX0RJUkAKKyB0eXBlbGliZGlyPSR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wCisgCisgQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCBARkZJX1BDX0NGTEFHU0AKK2RpZmYgLS1naXQgYS9nb2JqZWN0LWludHJvc3BlY3Rpb24tbm8tZXhwb3J0LTEuMC5wYy5pbiBiL2dvYmplY3QtaW50cm9zcGVjdGlvbi1uby1leHBvcnQtMS4wLnBjLmluCitpbmRleCBkMjE0ZDIyZC4uNzQ1YWFhZGUgMTAwNjQ0CistLS0gYS9nb2JqZWN0LWludHJvc3BlY3Rpb24tbm8tZXhwb3J0LTEuMC5wYy5pbgorKysrIGIvZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5vLWV4cG9ydC0xLjAucGMuaW4KK0BAIC05LDcgKzksNyBAQCBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyCisgZ19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlckBFWEVFWFRACisgZ19pcl9nZW5lcmF0ZT0ke2JpbmRpcn0vZy1pci1nZW5lcmF0ZUBFWEVFWFRACistZ2lyZGlyPSR7ZGF0YWRpcn0vZ2lyLTEuMAorK2dpcmRpcj1AR0lSX0RJUkAKKyB0eXBlbGliZGlyPSR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wCisgCisgQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCBARkZJX1BDX0NGTEFHU0AKKy0tIAorMi4xNy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaAppbmRleCA0ZWM1MjdkLi5lOTMzOGU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWFkZC1hLWxpYi1kaXJzLWVudnZhci1vcHRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBlNDhmMWUxOGY1ZWE0MTY1NmYwYmExMGZlNjFkNjlkMjYwNGIwMDY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZmVhNWU4MzgwM2Y0Y2ZlZjIxYjJlMDZlMzdhNmJhNTZmMmJiOTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDMgSmFuIDIwMTggMTc6MDI6MDEgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgYSAtLWxpYi1kaXJzLWVudnZhciBvcHRpb24KQEAgLTE5LDcgKzE5LDcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5Ci1pbmRleCAyOWRlMGVlLi45MjhlYWU4IDEwMDY0NAoraW5kZXggYzAwMzgyOC4uOGE4YmEyYiAxMDA2NDQKIC0tLSBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKICsrKyBiL2dpc2Nhbm5lci9jY29tcGlsZXIucHkKIEBAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgQ0NvbXBpbGVyKG9iamVjdCk6CkBAIC0zMiwxOSArMzIsMTkgQEAKICAgICAgICAgICMgaXMgYmVpbmcgYnVpbHQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgogIAogQEAgLTExOSw3ICsxMTksNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAgICAgICAgIGlmIHNlbGYuY2hlY2tfaXNfbXN2YygpOgorICAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xJQicsICdQQVRIJ10KICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJ10KLSsgICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnXSBpZiBub3QgbGliX2RpcnNfZW52dmFyIGVsc2UgW2xpYl9kaXJzX2VudnZhcl0KKy0gICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMRF9MSUJSQVJZX1BBVEgnLCAnRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgnXQorKyAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddIGlmIG5vdCBsaWJfZGlyc19lbnZ2YXIgZWxzZSBbbGliX2RpcnNfZW52dmFyXQogICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBmaXJzdAogICAgICAgICAgICAgICMgKFRoaXMgZmxhZyBpcyBub3Qgc3VwcG9ydGVkIG5vciBuZWVkZWQgZm9yIFZpc3VhbCBDKyspCiAgICAgICAgICAgICAgYXJncy5hcHBlbmQoJy1MLicpCiBkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL2R1bXBlci5weSBiL2dpc2Nhbm5lci9kdW1wZXIucHkKLWluZGV4IDdmNzdiZDIuLmRiOTZkZjYgMTAwNjQ0CitpbmRleCAyYzY2OGY1Li4yZTUxNWEwIDEwMDY0NAogLS0tIGEvZ2lzY2FubmVyL2R1bXBlci5weQogKysrIGIvZ2lzY2FubmVyL2R1bXBlci5weQotQEAgLTI1OSw3ICsyNTksOCBAQCBjbGFzcyBEdW1wQ29tcGlsZXIob2JqZWN0KToKK0BAIC0yNDksNyArMjQ5LDggQEAgY2xhc3MgRHVtcENvbXBpbGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dHJhX2xpYnJhcmllcywKQEAgLTU1LDEwICs1NSwxMCBAQAogIAogICAgICAgICAgZWxzZToKIGRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLWluZGV4IDM4YTQ1YzEuLmI2MDM4NTAgMTAwNzU1CitpbmRleCA1Y2I3OTNlLi44NzIyN2UyIDEwMDY0NAogLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CiArKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMzAsNiArMTMwLDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgorQEAgLTEzMiw2ICsxMzIsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CiAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS11c2UtbGRkLXdyYXBwZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGRkX3dyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKQEAgLTY4LDYgKzY4LDMgQEAKICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0tYXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJhcHBlbmQiLCBkZXN0PSJwcm9ncmFtX2FyZ3MiLCBkZWZhdWx0PVtdLAogICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJleHRyYSBhcmd1bWVudHMgdG8gcHJvZ3JhbSIpCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNjdmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGYxMjhjYmVlYWQ2ODdiZmM2NTMyY2MxZjJjYzNlMmRjNWEyYjViMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBTZXAgMjAxOCAxNjo0Njo1MiArMDIwMAorU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGlnbm9yZSBlcnJvciByZXR1cm4gY29kZXMgZnJvbSBsZGQtd3JhcHBlcgorCitwcmVsaW5rLXJ0bGQsIHdoaWNoIHdlIHVzZSBpbnN0ZWFkIG9mIGxkZCByZXR1cm5zIDEyNyB3aGVuIGl0IGNhbid0IGZpbmQgYSBsaWJyYXJ5LgorSXQgaXMgbm90IGFuIGVycm9yIHBlciBzZSwgYnV0IGl0IGJyZWFrcyBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdpc2Nhbm5lci9zaGxpYnMucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9naXNjYW5uZXIvc2hsaWJzLnB5IGIvZ2lzY2FubmVyL3NobGlicy5weQoraW5kZXggMDFkMjFhMy4uM2JkMzI1MCAxMDA2NDQKKy0tLSBhL2dpc2Nhbm5lci9zaGxpYnMucHkKKysrKyBiL2dpc2Nhbm5lci9zaGxpYnMucHkKK0BAIC0xMDgsNyArMTA4LDcgQEAgZGVmIF9yZXNvbHZlX25vbl9saWJ0b29sKG9wdGlvbnMsIGJpbmFyeSwgbGlicmFyaWVzKToKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ290b29sJywgJy1MJywgYmluYXJ5LmFyZ3NbMF1dKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ2xkZCcsIGJpbmFyeS5hcmdzWzBdXSkKKy0gICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MpCisrICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLnJ1bihhcmdzLCBjaGVjaz1GYWxzZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0CisgICAgICAgICBpZiBpc2luc3RhbmNlKG91dHB1dCwgYnl0ZXMpOgorICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoInV0Zi04IiwgInJlcGxhY2UiKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaAppbmRleCBjNjgyYjQyLi4wM2VmMmIwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUZyb20gYjE1MDNmZTI2OTNkNjAyYjNlMjRlNGI4MzJkYzA5MzQ5NjBkNWQyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTI4Y2M4NDEzYjY4YmVjNWI0Y2YyZWU1ZjM3YjQwYTg5NjU0OTBhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAxOSBPY3QgMjAxNSAxODoyOToyMSArMDMwMAotU3ViamVjdDogW1BBVENIIDIvNV0gY29uZmlndXJlLmFjOiBhZGQgaG9zdC1naSwgZ2ktY3Jvc3Mtd3JhcHBlciwKLSBnaS1sZGQtd3JhcHBlciBhbmQgaW50cm9zcGVjdGlvbi1kYXRhIG9wdGlvbnMKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBhZGQgaG9zdC1naSwgZ2ktY3Jvc3Mtd3JhcHBlciwgZ2ktbGRkLXdyYXBwZXIKKyBhbmQgaW50cm9zcGVjdGlvbi1kYXRhIG9wdGlvbnMKIAogV2l0aCB0aGUgZmlyc3Qgb3B0aW9uLCBnb2JqZWN0LWludHJvc3BlY3Rpb24gdG9vbHMgKGctaXItZG9jLXRvb2wgYW5kIGctaXItc2Nhbm5lcikKIHRoYXQgYXJlIGFscmVhZHkgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSB3aWxsIGJlIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBzb3VyY2UgdHJlZS4KQEAgLTI1LDYgKzI1LDcgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgIHwgIDIgKysKICBjb21tb24ubWsgICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwpAQCAtMzIsMTAgKzMzLDEwIEBACiAgdGVzdHMvTWFrZWZpbGUuYW0gfCAgNSArKysrLQogIDQgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9NYWtlZmlsZS5hbQotKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA0NGVkMTE1Li4yYTFmYTU2IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCiBAQCAtMjEsNyArMjEsOSBAQCBpbmNsdWRlIE1ha2VmaWxlLWNtcGguYW0KICBpbmNsdWRlIE1ha2VmaWxlLWdpcmVwb3NpdG9yeS5hbQogIGluY2x1ZGUgTWFrZWZpbGUtZ2lzY2FubmVyLmFtCkBAIC00NCwxMiArNDUsMTIgQEAKICBpbmNsdWRlIE1ha2VmaWxlLWdpci5hbQogK2VuZGlmCiAgaW5jbHVkZSBNYWtlZmlsZS10b29scy5hbQotIGluY2x1ZGUgTWFrZWZpbGUtbXN2Y3Byb2ouYW0KICAKLUluZGV4OiBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbW1vbi5tawotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy9jb21tb24ubWsKLSsrKyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS41Mi4xL2NvbW1vbi5taworICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL2NvbW1vbi5tayBiL2NvbW1vbi5taworaW5kZXggZTI2YzYzNy4uOWYzYTY1ZiAxMDA2NDQKKy0tLSBhL2NvbW1vbi5taworKysrIGIvY29tbW9uLm1rCiBAQCAtNiw2ICs2LDE1IEBACiAgIyBtb2R1bGUgaXRzZWxmLgogICMKQEAgLTEzMCwxMSArMTMxLDExIEBACiAgCiAgSU5UUk9TUEVDVElPTl9ET0NUT09MX0FSR1MgPSBcCiAgICAgIC0tYWRkLWluY2x1ZGUtcGF0aD0kKHNyY2RpcikgXAotSW5kZXg6IGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvY29uZmlndXJlLmFjCi1AQCAtMzY2LDYgKzM2Niw0OCBAQCBkbmwKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGQ0OGU2YzMuLmVkNWY4YTIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTM2Nyw2ICszNjcsNDggQEAgZG5sCiAgQU1fQ09ORElUSU9OQUwoTVNWQ19CQVNFX05PX1RPT0xTRVRfU0VULCBbdGVzdCB4JE1TVkNfQkFTRV9UT09MU0VUID0geF0pCiAgQU1fQ09ORElUSU9OQUwoTVNWQ19OT19UT09MU0VUX1NFVCwgW3Rlc3QgeCRNU1ZDX1RPT0xTRVQgPSB4XSkKICAKQEAgLTE4MywxMCArMTg0LDEwIEBACiAgQUNfQ09ORklHX0ZJTEVTKFsKICBNYWtlZmlsZQogIHRlc3RzL01ha2VmaWxlCi1JbmRleDogZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuNTIuMS90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjUyLjEvdGVzdHMvTWFrZWZpbGUuYW0KK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA0YmRiOWMzLi4xMGIwZjI3IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtMSw2ICsxLDkgQEAKICBpbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uLm1rCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDItZy1pci10b29scy1yZXNwZWN0LWdpcl9kaXJfcHJlZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWctaXItdG9vbHMtcmVzcGVjdC1naXJfZGlyX3ByZWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQxNzY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAyLWctaXItdG9vbHMtcmVzcGVjdC1naXJfZGlyX3ByZWZpeC5wYXRjaApAQCAtMCwwICsxLDc2IEBACitnLWlyLXRvb2xzOiByZXNwZWN0IGdpcl9kaXJfcHJlZml4CisKK0NvbmZpZ3VyZSBvcHRpb24gZ2lyX2Rpcl9wcmVmaXggaXMgdXNlZCB0byBjb25maWd1cmUgaW5zdGFsbCBkaXIgZm9yCisuZ2lyIGZpbGVzLCBzbyBhZGQgaXRzIHZhbHVlIHRvIGluY2x1ZGUgZmlsZSBzZWFyY2ggcGF0aHMuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nb2JqZWN0LWludHJvc3BlY3Rpb24vY29tbWl0LzNmZTk5NWFdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUtdG9vbHMuYW0gICAgICAgICAgIHwgIDIgKy0KKyBnaXNjYW5uZXIvdHJhbnNmb3JtZXIucHkgICAgfCAgMSArCisgdGVzdHMvd2Fybi93YXJuaW5ndGVzdGVyLnB5IHwgIDEgKworIHRvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbiB8IDEwICsrKysrKysrKysKKyA2IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS10b29scy5hbSBiL01ha2VmaWxlLXRvb2xzLmFtCitpbmRleCBjNzBkOTg1MC4uZmNhZjFlMDEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS10b29scy5hbQorKysrIGIvTWFrZWZpbGUtdG9vbHMuYW0KK0BAIC05LDcgKzksNyBAQCBFWFRSQV9ESVNUICs9IAkJCQlcCisgCXRvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbiBcCisgCXRvb2xzL21lc29uLmJ1aWxkCisgCistVE9PTF9TVUJTVElUVVRJT05TID0gLWUgcyxAbGliZGlyXEAsJChsaWJkaXIpLCAtZSBzLEBkYXRhcm9vdGRpclxALCQoZGF0YXJvb3RkaXIpLCAtZSBzLEBQWVRIT05fQ01EXEAsXC91c3JcL2JpblwvZW52XCAkKFBZVEhPTiksCisrVE9PTF9TVUJTVElUVVRJT05TID0gLWUgcyxAbGliZGlyXEAsJChsaWJkaXIpLCAtZSBzLEBkYXRhcm9vdGRpclxALCQoZGF0YXJvb3RkaXIpLCAtZSBzLEBQWVRIT05fQ01EXEAsXC91c3JcL2JpblwvZW52XCAkKFBZVEhPTiksIC1lIHMsQEdJUl9ESVJcQCwkKEdJUl9ESVIpLGcKKyAKKyBnLWlyLXNjYW5uZXI6IHRvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbiBfZ2lzY2FubmVyLmxhIE1ha2VmaWxlCisgCSQoQU1fVl9HRU4pIHNlZCAkKFRPT0xfU1VCU1RJVFVUSU9OUykgLWUgcyxAVE9PTF9NT0RVTEVcQCxzY2FubmVybWFpbiwgLWUgcyxAVE9PTF9GVU5DVElPTlxALHNjYW5uZXJfbWFpbiwgJDwgPiAkQC50bXAgJiYgbXYgJEAudG1wICRACitkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3RyYW5zZm9ybWVyLnB5IGIvZ2lzY2FubmVyL3RyYW5zZm9ybWVyLnB5CitpbmRleCAzMzVlMjI5Zi4uMmM0MTIzMzkgMTAwNjQ0CistLS0gYS9naXNjYW5uZXIvdHJhbnNmb3JtZXIucHkKKysrKyBiL2dpc2Nhbm5lci90cmFuc2Zvcm1lci5weQorQEAgLTE4NCw2ICsxODQsNyBAQCBOb25lLiIiIgorICAgICBkZWYgX2dldF9naV9kYXRhX2RpcnMoc2VsZik6CisgICAgICAgICBkYXRhX2RpcnMgPSB1dGlscy5nZXRfc3lzdGVtX2RhdGFfZGlycygpCisgICAgICAgICBkYXRhX2RpcnMuYXBwZW5kKERBVEFESVIpCisrICAgICAgICBkYXRhX2RpcnMuYXBwZW5kKEdJUkRJUikKKyAgICAgICAgIGlmIG9zLm5hbWUgIT0gJ250JzoKKyAgICAgICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2FzIGFsd2F5cyB1bmNvbmRpdGlvbmFsbHkgYWRkZWQgdG8gdGhlIGxpc3QuCisgICAgICAgICAgICAgZGF0YV9kaXJzLmFwcGVuZCgnL3Vzci9zaGFyZScpCitkaWZmIC0tZ2l0IGEvdGVzdHMvd2Fybi93YXJuaW5ndGVzdGVyLnB5IGIvdGVzdHMvd2Fybi93YXJuaW5ndGVzdGVyLnB5CitpbmRleCBmMTdjODg4OS4uYmU1YWVjMTMgMTAwNjQ0CistLS0gYS90ZXN0cy93YXJuL3dhcm5pbmd0ZXN0ZXIucHkKKysrKyBiL3Rlc3RzL3dhcm4vd2FybmluZ3Rlc3Rlci5weQorQEAgLTE4LDYgKzE4LDcgQEAgc3lzLnBhdGguaW5zZXJ0KDAsIHBhdGgpCisgCisgIyBOb3QgY29ycmVjdCwgYnV0IGVub3VnaCB0byBnZXQgdGhlIHRlc3RzIGdvaW5nIHVuaW5zdGFsbGVkCisgYnVpbHRpbnMuX19kaWN0X19bJ0RBVEFESVInXSA9IHBhdGgKKytidWlsdGlucy5fX2RpY3RfX1snR0lSRElSJ10gPSAnJworIAorIGZyb20gZ2lzY2FubmVyLmFubm90YXRpb25wYXJzZXIgaW1wb3J0IEd0a0RvY0NvbW1lbnRCbG9ja1BhcnNlcgorIGZyb20gZ2lzY2FubmVyLmFzdCBpbXBvcnQgSW5jbHVkZSwgTmFtZXNwYWNlCitkaWZmIC0tZ2l0IGEvdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluIGIvdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCitpbmRleCBlZDMzZDE2Yi4uYjljZjA5MTEgMTAwNzU1CistLS0gYS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KKysrKyBiL3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorQEAgLTYwLDYgKzYwLDE2IEBAIGlmIG5vdCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihkYXRhZGlyLCAnZ2lyLTEuMCcpKToKKyAKKyBidWlsdGlucy5fX2RpY3RfX1snREFUQURJUiddID0gZGF0YWRpcgorIAorKyMgUmVzcGVjdCBnaXJfZGlyX3ByZWZpeCBmb3IgbWVzb24gYW5kIGF1dG90b29scworK2dpcmRpciA9ICcnCisrIyBmb3IgbWVzb24KKytpZiAnQGdpcl9kaXJfcHJlZml4QCcgYW5kIG5vdCAnQGdpcl9kaXJfcHJlZml4QCcuc3RhcnRzd2l0aCgnQCcpOgorKyAgICBnaXJkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGZpbGVkaXIsICcuLicsICdAZ2lyX2Rpcl9wcmVmaXhAJykpCisrIyBmb3IgYXV0b3Rvb2xzCisrZWxpZiAnQEdJUl9ESVJAJyBhbmQgbm90ICdAR0lSX0RJUkAnLnN0YXJ0c3dpdGgoJ0AnKToKKysgICAgZ2lyZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aCgnQEdJUl9ESVJAJykpCisrYnVpbHRpbnMuX19kaWN0X19bJ0dJUkRJUiddID0gZ2lyZGlyCisrCisgIyBBZ2FpbiwgcmVsYXRpdmUgcGF0aHMgZmlyc3Qgc28gdGhhdCB0aGUgaW5zdGFsbGF0aW9uIHByZWZpeCBpcyByZWxvY2F0YWJsZQorIHB5bGliZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihmaWxlZGlyLCAnLi4nLCAnbGliJywgJ2dvYmplY3QtaW50cm9zcGVjdGlvbicpKQorIAorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKaW5kZXggZjIxZWFjYS4uNDVmZTI3YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3MDRiODg4ZDBhYmZiMDEwNjczNTJjNDAxNTZmNDlmNjU1NjkxYzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0NmRiZTk2M2FhNjQzNTU5MWM4N2U3ODhjZGI1NGJjMGRhZWFjNDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDE5IE9jdCAyMDE1IDE4OjI2OjQwICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy81XSBnaXNjYW5uZXI6IGFkZCAtLXVzZS1iaW5hcnktd3JhcHBlciBvcHRpb24KK1N1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgLS11c2UtYmluYXJ5LXdyYXBwZXIgb3B0aW9uCiAKIFdpdGggdGhpcyBvcHRpb24sIGdpc2Nhbm5lciB3aWxsIHVzZSBhIHdyYXBwZXIgZXhlY3V0YWJsZSB0byBydW4KIGJpbmFyaWVzIGl0J3MgcHJvZHVjaW5nLCBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4gVGhpcwpAQCAtMTAsMTUgKzEwLDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBnaXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgfCAxNCArKysrKysrKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLWluZGV4IDYzMzQ5NmYuLmQ2ODRjZDAgMTAwNzU1CitpbmRleCBjY2IxNGU5Li4wNjFkZWYwIDEwMDY0NAogLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5CiArKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjQsNiArMTI0LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgorQEAgLTEyNiw2ICsxMjYsOSBAQCBkZWYgX2dldF9vcHRpb25fcGFyc2VyKCk6CiAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InByb2dyYW0iLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InByb2dyYW0gdG8gZXhlY3V0ZSIpCkBAIC0yOCw3ICsyOSw3IEBACiAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQotQEAgLTQxOSw2ICs0MjIsMTcgQEAgZGVmIGNyZWF0ZV9iaW5hcnkodHJhbnNmb3JtZXIsIG9wdGlvbnMsIGFyZ3MpOgorQEAgLTQxOCw2ICs0MjEsMTcgQEAgZGVmIGNyZWF0ZV9iaW5hcnkodHJhbnNmb3JtZXIsIG9wdGlvbnMsIGFyZ3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZHVtcF9wYXJzZXIuZ2V0X2Vycm9yX3F1YXJrX2Z1bmN0aW9ucygpKQogIAogICAgICBzaGxpYnMgPSByZXNvbHZlX3NobGlicyhvcHRpb25zLCBiaW5hcnksIG9wdGlvbnMubGlicmFyaWVzKQpAQCAtNDYsNiArNDcsMyBAQAogICAgICBnZHVtcF9wYXJzZXIuc2V0X2ludHJvc3BlY3Rpb25fYmluYXJ5KGJpbmFyeSkKICAgICAgZ2R1bXBfcGFyc2VyLnBhcnNlKCkKICAgICAgcmV0dXJuIHNobGlicwotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2gKaW5kZXggYWZiNzFlNy4uMmUzNmI2NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaApAQCAtMSwyMyArMSwyNCBAQAotRnJvbSBkNGFkNTdmZDRhMzJjNGYwZDJmMDUyMmEzMDkwZWY5NDA3NDY0MzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlYmEyYjk5OWU4MWQ4MWI1ZjQzYmIxZjBhYjMzODgxNzg2YmViZGVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMwIE9jdCAyMDE1IDE2OjI4OjQ2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC81XSBnaXNjYW5uZXI6IGFkZCBhIC0tdXNlLWxkZC13cmFwcGVyIG9wdGlvbgorU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tdXNlLWxkZC13cmFwcGVyIG9wdGlvbgogCiBUaGlzIGlzIHVzZWZ1bCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50cyB3aGVyZSBzeXN0ZW0ncyBsZGQKIGNvbW1hbmQgZG9lcyBub3Qgd29yayBvbiBiaW5hcmllcyBidWlsdCBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IGluIG9lLWNvcmVdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKICBnaXNjYW5uZXIvc2hsaWJzLnB5ICAgICAgfCA0ICsrKy0KICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCBkNjg0Y2QwLi4xYjNiMzY5IDEwMDc1NQoraW5kZXggMDYxZGVmMC4uNWNiNzkzZSAxMDA2NDQKIC0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQogKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTI3LDYgKzEyNyw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKK0BAIC0xMjksNiArMTI5LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgogICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKQEAgLTI4LDEwICsyOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCiAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKIGRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2hsaWJzLnB5IGIvZ2lzY2FubmVyL3NobGlicy5weQotaW5kZXggYzkzZDIwYy4uYzViNTk0MiAxMDA2NDQKK2luZGV4IDdiN2IyZDAuLjAxZDIxYTMgMTAwNjQ0CiAtLS0gYS9naXNjYW5uZXIvc2hsaWJzLnB5CiArKysgYi9naXNjYW5uZXIvc2hsaWJzLnB5Ci1AQCAtMTA1LDcgKzEwNSw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6CitAQCAtMTAyLDcgKzEwMiw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6CiAgICAgICAgICAgICAgYXJncy5leHRlbmQobGlidG9vbCkKICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1tb2RlPWV4ZWN1dGUnKQogICAgICAgICAgcGxhdGZvcm1fc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKQEAgLTQyLDYgKzQzLDMgQEAKICAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ290b29sJywgJy1MJywgYmluYXJ5LmFyZ3NbMF1dKQogICAgICAgICAgZWxzZToKICAgICAgICAgICAgICBhcmdzLmV4dGVuZChbJ2xkZCcsIGJpbmFyeS5hcmdzWzBdXSkKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaAppbmRleCA0N2ExOGVjLi4yYTMxMTE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTA4YjM2NzdkZDA0ZDZlYzQwN2JhOGY3NGY2MDFiMmQ1MTMxMGVmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYTk3ZDA2MDkzMzkzMmU0NzhjMDNmMWRlOTUxM2I2OWJjNDU5ZWVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDE4OjMwOjM1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBQcmVmaXggcGtnLWNvbmZpZyBwYXRocyB3aXRoIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK1N1YmplY3Q6IFtQQVRDSF0gUHJlZml4IHBrZy1jb25maWcgcGF0aHMgd2l0aCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCiAgZW52aXJvbm1lbnQgdmFyaWFibGUKIAogVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXRzIHRoZSBsb2NhdGlvbiBvZiBzeXNyb290IGRpcmVjdG9yeSBpbiBjcm9zcy1jb21waWxhdGlvbgpAQCAtOSwxNiArOSwxNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUtZ2lyLmFtICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogIG00L2ludHJvc3BlY3Rpb24ubTQgfCAgOCArKysrLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS1naXIuYW0gYi9NYWtlZmlsZS1naXIuYW0KLWluZGV4IGEwOTI2MGEuLmJhNmU4OWUgMTAwNjQ0CitpbmRleCAyY2Q3MzU4Li5lYWYwYWZkIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUtZ2lyLmFtCiArKysgYi9NYWtlZmlsZS1naXIuYW0KLUBAIC01NSw4ICs1NSw4IEBAIGVsc2UKK0BAIC01OCw4ICs1OCw4IEBAIGVsc2UKICBlbmRpZgogIAogICMgZ2xpYgpAQCAtMjksNyArMzAsNyBAQAogIAogIEdMSUJfTElCUkFSWT1nbGliLTIuMAogIAotQEAgLTkyLDggKzkyLDggQEAgR0xpYi0yLjAuZ2lyOiBnLWlyLXNjYW5uZXIgZy1pci1jb21waWxlciQoRVhFRVhUKQorQEAgLTk1LDggKzk1LDggQEAgR0xpYi0yLjAuZ2lyOiBnLWlyLXNjYW5uZXIgZy1pci1jb21waWxlciQoRVhFRVhUKQogIGdpci9EQnVzR0xpYi0xLjAudHlwZWxpYjogR09iamVjdC0yLjAuZ2lyCiAgCiAgIyBnb2JqZWN0CkBAIC00MCw3ICs0MSw3IEBACiAgCiAgR09CSkVDVF9MSUJSQVJZPWdvYmplY3QtMi4wCiAgCi1AQCAtMTIwLDggKzEyMCw4IEBAIEdPYmplY3RfMl8wX2dpcl9GSUxFUyA9IFwKK0BAIC0xMjMsOCArMTIzLDggQEAgR09iamVjdF8yXzBfZ2lyX0ZJTEVTID0gXAogIEJVSUxUX0dJUlNPVVJDRVMgKz0gR09iamVjdC0yLjAuZ2lyCiAgCiAgIyBnbW9kdWxlCkBAIC01MSw3ICs1Miw3IEBACiAgCiAgR01PRFVMRV9MSUJSQVJZPWdtb2R1bGUtMi4wCiAgCi1AQCAtMTQ2LDEzICsxNDYsMTMgQEAgR01vZHVsZV8yXzBfZ2lyX0ZJTEVTID0gJChHTElCX0lOQ0xVREVESVIpL2dtb2R1bGUuaCBcCitAQCAtMTQ5LDEzICsxNDksMTMgQEAgR01vZHVsZV8yXzBfZ2lyX0ZJTEVTID0gJChHTElCX0lOQ0xVREVESVIpL2dtb2R1bGUuaCBcCiAgQlVJTFRfR0lSU09VUkNFUyArPSBHTW9kdWxlLTIuMC5naXIKICAKICAjIGdpbwpAQCAtOTEsNiArOTIsMyBAQAogICAgICBmaQogICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCiAgICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41NC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YzgwMDEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOTAgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjU0LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjEyNmMyOWU0ZDU0YWRiZWQyZWQ0ZTJiMDQ0ODNkZTQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OGRlZDVlNWYwNjRhYjU4YTkzYWFkZWNkNmQ1OGRiMmVjOWQ5NzA2NDg1MzRjNjM4MDdkNGY5YTdiYjg3N2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKLWV4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCi1leHBvcnQgQgotCi1ERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCi0KLSMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKLSMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgotIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCi0jIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCi1ERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCi0gICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAotICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCi0gICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncwotIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKLWV4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQotCi0kcWVtdV9iaW5hcnkgIlwkQCIKLWlmIFsgXCQ/IC1uZSAwIF07IHRoZW4KLSAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgotICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCi0gICAgZXhpdCAxCi1maQotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCi0gICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKLSAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCi0gICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKLWV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi1nLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgotICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0Ci0gICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi1wcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotCi0gICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKLSAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgKz0gIi0tZW5hYmxlLWhvc3QtZ2kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0YXRpYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCi0KLSMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCi0jIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLSMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgotCi0jIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCi0jIHRlc3RzdWl0ZXMuCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKLQotIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKLSMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgotZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKLSAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCi0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAotICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCi19Ci0KLSMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKLSMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCi1weXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7Ci0gICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19Ci0KLSMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgotZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNTguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWNhODdkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjU4LjAuYmIKQEAgLTAsMCArMSwyMDQgQEAKK1NVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIrICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzQzNGU4MTI4YTY4YmVkZDU5YjgwYjJhYzFlYjFjNGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvY29tcGlsZXIuYztlbmRsaW5lPTIwO21kNT1mYzUwMDdmYzIwMDIyNzIwZTZjMGIwY2RkZTQxZmFiZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXNjYW5uZXIvc291cmNlc2Nhbm5lci5jO2VuZGxpbmU9MjI7bWQ1PTE5NGQ2ZTBjMWQwMDY2MmYzMmQwMzBjZTQ0ZGU4ZDM5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpcmVwb3NpdG9yeS9naXJlZ2lzdGVyZWR0eXBlaW5mby5jO2VuZGxpbmU9MjE7bWQ1PTY2MTg0NzYxMWFlNjk3OTQ2NTQxNWYzMWE3NTliYTI3IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmV2ZXJ0LWFuLWluY29tcGxldGUtdXBzdHJlYW0tYXR0ZW1wdC1hdC1jcm9zcy1jb21waS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1hZGQtaG9zdC1naS1naS1jcm9zcy13cmFwcGVyLWdpLWxkZC13cmEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1pZ25vcmUtZXJyb3ItcmV0dXJuLWNvZGVzLWZyb20tbGRkLXdyYXBwZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1HSVJfRElSLWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWctaXItdG9vbHMtcmVzcGVjdC1naXJfZGlyX3ByZWZpeC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0ZmVjODc1Mjc2MjYyMDM3YmZjZDUxMjI2ZGIxMmZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI3YzE1OTBhMzI3NDlkZTBhNTQ4MWNlODk3NzcyNTQ3MDQzZTk0YmNjYmE0YmMwYTdlZGIzZDg1MTNlNDAxZWMiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9nLWlyLWFubm90YXRpb24tdG9vbCAke1BOfToke2JpbmRpcn0vZy1pci1zY2FubmVyIgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2NvbmYtYXJjaGl2ZSIKKworIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAorIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCisjIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KKyMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCisjIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KK0RFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItLWVuYWJsZS1kb2N0b29sLC0tZGlzYWJsZS1kb2N0b29sLHB5dGhvbjMtbWFrbywiCisKKyMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCisjIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQorRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICIgXAorICAgIC0tZGlzYWJsZS1zdGF0aWMgXAorICAgIC0tZW5hYmxlLWhvc3QtZ2kgXAorICAgIC0tZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXI9JHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgXAorICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24tZGF0YScsIGQpfSBcCisgICAgJHtAJy0td2l0aC1naXItZGlyLXByZWZpeD0ke2xpYmRpcn0nIGlmIGQuZ2V0VmFyKCdNVUxUSUxJQlMnKSBlbHNlICcnfSBcCisiCisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS1saWItZGlycy1lbnZ2YXI9R0lSX0VYVFJBX0xJQlNfUEFUSCAtLXVzZS1iaW5hcnktd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgLS11c2UtbGRkLXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19EQVRBRElSfS9naXItMS4wIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfTElCRElSfS9naXItMS4wICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1jb21waWxlciwgd2hpY2ggcnVucyB0aGUgdGFyZ2V0IHZlcnNpb24gb2YgaXQgdGhyb3VnaCBxZW11LgorICAgICAgICAjIGctaXItY29tcGlsZXIgd3JpdGVzIG91dCB0aGUgcmF3IGNvbnRlbnQgb2YgYSBDIHN0cnVjdCB0byBkaXNrLCBhbmQgdGhlcmVmb3JlIGlzIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCiske1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1jb21waWxlciAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCwgd2hpY2ggZG9lcyBub3Qgd29yayB3aGVuIGEgYmluYXJ5IGlzIGJ1aWx0CisgICAgICAgICMgZm9yIGEgZGlmZmVyZW50IGFyY2hpdGVjdHVyZQorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIDw8IEVPRgorIyEvYmluL3NoCitwcmVsaW5rLXJ0bGQgLS1yb290PSRTVEFHSU5HX0RJUl9IT1NUICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorCisgICAgICAgICMgQWxzbyB0d2VhayB0aGUgdGFyZ2V0IHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBuYXRpdmUgdmVyc2lvbiBvZiBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgICMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKKyAgICAgICAgZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKKyAgICAgICAgIyBOZWVkZWQgdG8gcnVuIGctaXIgdW5pdCB0ZXN0cywgd2hpY2ggd29uJ3QgYmUgYWJsZSB0byBmaW5kIHRoZSBidWlsdCBsaWJyYXJpZXMgb3RoZXJ3aXNlCisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSRCLy5saWJzCit9CisKKyMgT3VyIHdyYXBwZXJzIG5lZWQgdG8gYmUgYXZhaWxhYmxlIHN5c3RlbS13aWRlLCBiZWNhdXNlIHRoZXkgd2lsbCBiZSB1c2VkIAorIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCit9CisKKyMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11CisjIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcworU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKK2dpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0CisgICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYworfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCitnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59CisJZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0CisJZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJY2htb2QgNzU1ICRkZXN0Cit9CisKKyMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgorZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKKworIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQorRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgorCisjIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQorIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyICR7bGliZGlyfS9naXItKi8qLmdpciIKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCisKKyMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcworIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcworRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCisKKyMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKKyMgdGVzdHN1aXRlcy4KK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcGlja2xlIHB5dGhvbjMteG1sIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4yNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjFmZDI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkdOT01FIGRlc2t0b3Atd2lkZSBHU2V0dGluZ3Mgc2NoZW1hcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNzk2YjZhYzFlZmY0NTAyNjFlZGQ1MjFiNzJlN2ZlNmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NmEzZmEzMDlmOWRlNjA3NGQ2Njg0ODk4NzIxNGYwYjEyODEyNGJhNzE4NGM5NThjMTVhYzc4YThhYzdlZWE3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI4LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJiM2NkOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjI4LjAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjM3MDYxMGUyOWIzN2QwNjNlZGUzZWYwZjI5YzA2ZWI5IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNGNiNGNkNzc5MGI3N2U1NTQyZWM3NTI3NTIzNzYxM2FkMjJmM2ExZjJmNDE5MDNhMjk4Y2Y2Y2M5OTZhOTE2NyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysuaW5jCmluZGV4IDU1OGJjNDguLjE0ZWQ4ZDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrLmluYwpAQCAtOTAsNiArOTAsMTAgQEAKIAlpbnN0YWxsIC1tIDA2NDQgJHtTfS9ndGsvZ3RrZmlsZXN5c3RlbW1vZGVsLmggICAgJHtEfSR7aW5jbHVkZWRpcn0vZ3RrLTIuMC9ndGsvCiAKIAltdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0yLjAKKworICAgICMgZHVwbGljYXRlIGd0ay1xdWVyeS1pbW1vZHVsZXMgZm9yIHBvc3QgaW5zdGFsbCBzY3JpcHQgdXBkYXRlX2d0a19pbW1vZHVsZXNfY2FjaGUKKyAgICBta2RpciAtcCAke0R9JHtsaWJleGVjZGlyfQorICAgIGxuICR7RH0ke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1ndGstcXVlcnktaW1tb2R1bGVzLTIuMAogfQogCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImd0a19zeXNyb290X3ByZXByb2Nlc3MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysvMDAwMS1Eby1ub3QtbG9vay1pbnRvLUhPTUUtd2hlbi1sb29raW5nLWZvci1ndGstbW9kdWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKy8wMDAxLURvLW5vdC1sb29rLWludG8tSE9NRS13aGVuLWxvb2tpbmctZm9yLWd0ay1tb2R1bGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYmUzOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0aysvMDAwMS1Eby1ub3QtbG9vay1pbnRvLUhPTUUtd2hlbi1sb29raW5nLWZvci1ndGstbW9kdWxlcy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDM0Y2U5M2UxYzUwYmZiODhmOTJhNjg3ZDRmODJkZTU1NTg0ZjNmNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTEgQXByIDIwMTggMTQ6MjA6MzkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGxvb2sgaW50byAkSE9NRSB3aGVuIGxvb2tpbmcgZm9yIGd0ayBtb2R1bGVzCisKK09uIHRoZSBob3N0IGl0IGNhdXNlcyBob3N0IGNvbnRhbWluYXRpb24sIG9uIHRoZSB0YXJnZXQgaXQncyBhCitwb3RlbnRpYWwgc2VjdXJpdHkgaXNzdWUuIEd0ayszIGhhcyBhbHJlYWR5IHJlbW92ZWQgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtndGsyIGlzIGluIG1haW50ZW5hbmNlIG1vZGVdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGd0ay9ndGttb2R1bGVzLmMgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2d0ay9ndGttb2R1bGVzLmMgYi9ndGsvZ3RrbW9kdWxlcy5jCitpbmRleCA1MDcyOWI2Li5lMDliNTgzIDEwMDY0NAorLS0tIGEvZ3RrL2d0a21vZHVsZXMuYworKysrIGIvZ3RrL2d0a21vZHVsZXMuYworQEAgLTY1LDEwICs2NSw2IEBAIGdldF9tb2R1bGVfcGF0aCAodm9pZCkKKyAgIGlmIChyZXN1bHQpCisgICAgIHJldHVybiByZXN1bHQ7CisgCistICBob21lX2RpciA9IGdfZ2V0X2hvbWVfZGlyKCk7CistICBpZiAoaG9tZV9kaXIpCistICAgIGhvbWVfZ3RrX2RpciA9IGdfYnVpbGRfZmlsZW5hbWUgKGhvbWVfZGlyLCAiLmd0ay0yLjAiLCBOVUxMKTsKKy0KKyAgIG1vZHVsZV9wYXRoX2VudiA9IGdfZ2V0ZW52ICgiR1RLX1BBVEgiKTsKKyAgIGV4ZV9wcmVmaXggPSBnX2dldGVudiAoIkdUS19FWEVfUFJFRklYIik7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCmluZGV4IDQyMGVhZDIuLjYzMzFhNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCkBAIC01Myw2ICs1MywxMCBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKIAltdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0zLjAKKworICAgICMgZHVwbGljYXRlIGd0ay1xdWVyeS1pbW1vZHVsZXMgZm9yIHBvc3QgaW5zdGFsbCBzY3JpcHQgdXBkYXRlX2d0a19pbW1vZHVsZXNfY2FjaGUKKyAgICBta2RpciAtcCAke0R9JHtsaWJleGVjZGlyfQorICAgIGxuICR7RH0ke2JpbmRpcn0vZ3RrLXF1ZXJ5LWltbW9kdWxlcy0zLjAgJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH1ndGstcXVlcnktaW1tb2R1bGVzLTMuMAogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tZGVtbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi4yOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODY0ZTgyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGd0ayszLmluYwotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSGFyZGNvZGVkLWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOGMxZjVhYjk4N2RkYzdkYWIzZTU5NjYwZjg5ZGNkOWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI5OTYxMmIwMThjZmVkN2IyYzY4OTE2OGFiNTJiNjY4MDIzNzA4ZTE3YzMzNWViNTkyMjYwZDE4NmYxNWUxZiIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5N2I1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMzAuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSBndGsrMy5pbmMKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYxZTYwZGMwNzNlMGE2ODkzYzcyMDQzZDIwNTc5ZGMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImExYTRhNWMxMjcwM2Q0ZTFjY2RhMjgzMzNiODdmZjQ2Mjc0MWRjMzY1MTMxZmJjOTRjMjE4YWU4MWQ5YTY1NjciCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrK18yLjI0LjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzIuYmIKaW5kZXggMjA3MDM1OC4uODlmY2E3MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrXzIuMjQuMzIuYmIKQEAgLTEwLDcgKzEwLDggQEAKICAgICAgICAgICAgZmlsZTovL3RvZ2dsZS1mb250LmRpZmY7c3RyaXBsZXZlbD0wIFwKICAgICAgICAgICAgZmlsZTovL2RvYy1maXhlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9zdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCi0JICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1sb29rLWludG8tSE9NRS13aGVuLWxvb2tpbmctZm9yLWd0ay1tb2R1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZDU3NDJhYTQyMjc1MjAzYTQ5OWI1OWI0YzM4MmE3ODQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjZjOGE5M2RkZGE1ZWFiZTNiZmVlMWViMzk2MzZjOWEwM2QyYTU2YzdiNjI4MjhiMzU5YmYxOTc5NDNjNTgyZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDJjMDQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrLWljb24tdXRpbHMtbmF0aXZlXzMuMjIuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1TVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgotREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiOGMxZjVhYjk4N2RkYzdkYWIzZTU5NjYwZjg5ZGNkOWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDI5OTYxMmIwMThjZmVkN2IyYzY4OTE2OGFiNTJiNjY4MDIzNzA4ZTE3YzMzNWViNTkyMjYwZDE4NmYxNWUxZiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKLQotIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgotCi1QS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgotCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KLQkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKLQkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JZmkKLQlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCi0JCXRvdWNoIGdkay9jb25maWcuaAotCWZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCi0JCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQotCi0JJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAotCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAotCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZwotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGU3YTMxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4zMC5iYgpAQCAtMCwwICsxLDYzIEBACitTVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgorREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKKworTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiNjFlNjBkYzA3M2UwYTY4OTNjNzIwNDNkMjA1NzlkYzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTFhNGE1YzEyNzAzZDRlMWNjZGEyODMzM2I4N2ZmNDYyNzQxZGMzNjUxMzFmYmM5NGMyMThhZTgxZDlhNjU2NyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCisKK1MgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgorCitpbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUKKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCitQS0dfQ09ORklHX0ZPUl9CVUlMRCA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZy1uYXRpdmUiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkjIFF1aXRlIHVnbHkgYnV0IGRlZmluZXMgZW5vdWdoIHRvIGNvbXBpbGUgdGhlIHRvb2xzLgorCWlmICEgdGVzdCAtZiBndGsvY29uZmlnLmg7IHRoZW4KKwkJZWNobyAiI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgXCJndGszMFwiIiA+PiBndGsvY29uZmlnLmgKKwkJZWNobyAiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfRlRXX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJZmkKKwlpZiAhIHRlc3QgLWYgZ2RrL2NvbmZpZy5oOyB0aGVuCisJCXRvdWNoIGdkay9jb25maWcuaAorCWZpCit9CisKK2RvX2NvbXBpbGUoKSB7CisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay91cGRhdGVpY29uY2FjaGUuYyBcCisJCSQoJHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0gLS1jZmxhZ3MgLS1saWJzIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay11cGRhdGUtaWNvbi1jYWNoZQorCisJJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30gXAorCQkke1N9L2d0ay9lbmNvZGVzeW1ib2xpYy5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2lvLTIuMCBnZGstcGl4YnVmLTIuMCkgXAorCQktbyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZworfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcgJHtEfSR7YmluZGlyfQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLzIuMTAuMC9sb2FkZXJzLmNhY2hlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy8wMDAxLURvLW5vdC1oYXJkb2NvZGUtcGF0aHMtdG8tcGVybC1weXRob24taW4tc2NyaXB0cy5wYXRjaAppbmRleCAyZmUzYWI5Li4xOWUwNWYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRvY29kZS1wYXRocy10by1wZXJsLXB5dGhvbi1pbi1zY3JpcHRzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDkyODEwMjg3NGJjMjMzOWExZDU3YzZiMTc4ODc3ZTBjNjAwMmNiM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDgwZTZhZmY3MmFmZmE2ZDkyZjVhYmQ3ZmY2MzUzZGZjNGE3YmZmMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMzEgQXVnIDIwMTYgMTY6NDQ6NDYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIERvIG5vdCBoYXJkb2NvZGUgcGF0aHMgdG8gcGVybC9weXRob24gaW4gc2NyaXB0cy4KK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRvY29kZSBwYXRocyB0byBwZXJsL3B5dGhvbiBpbiBzY3JpcHRzLgogCiBEb2luZyBzbyB3aGVuIHRoZSBpbnRlcnByZXRlcnMgYXJlIHNvbWV3aGVyZSBkZWVwIGluIGEgc3lzcm9vdCBkaXJlY3RvcnkKIGNhbiByZWFjaCB0aGUgc2hlYmFuZyBsaW5lIGxpbWl0LCBhbmQgcmVzdWx0aW5nIHNjcmlwdHMgd291bGRuJ3Qgd29yawpAQCAtMzUsNyArMzUsNyBAQAogICMKICAjIGd0ay1kb2MgLSBHVEsgRG9jQm9vayBkb2N1bWVudGF0aW9uIGdlbmVyYXRvci4KIGRpZmYgLS1naXQgYS9ndGtkb2MtZGVwc2Nhbi5pbiBiL2d0a2RvYy1kZXBzY2FuLmluCi1pbmRleCA5YmZhZjMwLi5hYWRjOTUyIDEwMDY0NAoraW5kZXggOWJmYWYzMC4uYWFkYzk1MiAxMDA3NTUKIC0tLSBhL2d0a2RvYy1kZXBzY2FuLmluCiArKysgYi9ndGtkb2MtZGVwc2Nhbi5pbgogQEAgLTEsNCArMSw0IEBACkBAIC00NSw3ICs0NSw3IEBACiAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogIAogZGlmZiAtLWdpdCBhL2d0a2RvYy1maXh4cmVmLmluIGIvZ3RrZG9jLWZpeHhyZWYuaW4KLWluZGV4IDBlYTAyZDQuLmJkZDQ0M2EgMTAwNzU1CitpbmRleCA0NGY2YmQxLi4yNmZiZDkzIDEwMDc1NQogLS0tIGEvZ3RrZG9jLWZpeHhyZWYuaW4KICsrKyBiL2d0a2RvYy1maXh4cmVmLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTY1LDcgKzY1LDcgQEAKICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLW1raHRtbC5pbiBiL2d0a2RvYy1ta2h0bWwuaW4KLWluZGV4IDBkMGExNWQuLjkxNGZmNTUgMTAwNjQ0CitpbmRleCAwZDBhMTVkLi45MTRmZjU1IDEwMDc1NQogLS0tIGEvZ3RrZG9jLW1raHRtbC5pbgogKysrIGIvZ3RrZG9jLW1raHRtbC5pbgogQEAgLTEsNCArMSw0IEBACkBAIC03NSw3ICs3NSw3IEBACiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL2d0a2RvYy1ta21hbi5pbiBiL2d0a2RvYy1ta21hbi5pbgotaW5kZXggYzU0NDVjZC4uNjVkYjcxYSAxMDA2NDQKK2luZGV4IGM1NDQ1Y2QuLjY1ZGI3MWEgMTAwNzU1CiAtLS0gYS9ndGtkb2MtbWttYW4uaW4KICsrKyBiL2d0a2RvYy1ta21hbi5pbgogQEAgLTEsNCArMSw0IEBACkBAIC0xMTUsNyArMTE1LDcgQEAKICAjCiAgIyBndGstZG9jIC0gR1RLIERvY0Jvb2sgZG9jdW1lbnRhdGlvbiBnZW5lcmF0b3IuCiBkaWZmIC0tZ2l0IGEvZ3RrZG9jLXNjYW5nb2JqLmluIGIvZ3RrZG9jLXNjYW5nb2JqLmluCi1pbmRleCA0Y2JlMTMwLi41MmMyYzI0IDEwMDY0NAoraW5kZXggNGNiZTEzMC4uNTJjMmMyNCAxMDA3NTUKIC0tLSBhL2d0a2RvYy1zY2FuZ29iai5pbgogKysrIGIvZ3RrZG9jLXNjYW5nb2JqLmluCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTEyNSwxOCArMTI1LDE1IEBACiAgIwogICMgZ3RrLWRvYyAtIEdUSyBEb2NCb29rIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yLgogZGlmZiAtLWdpdCBhL3Rlc3RzL3Rvb2xzLnNoLmluIGIvdGVzdHMvdG9vbHMuc2guaW4KLWluZGV4IDRkMzAxZDAuLjU2NWZjMWUgMTAwNjQ0CitpbmRleCAzNDM4NDRhLi45ZGM2NjkyIDEwMDY0NAogLS0tIGEvdGVzdHMvdG9vbHMuc2guaW4KICsrKyBiL3Rlc3RzL3Rvb2xzLnNoLmluCi1AQCAtMzEsNyArMzEsNyBAQCBkb25lCi0gIyBUT0RPOiB0ZXN0IHB5dGhvbiAyIGFuZCAzIChweXRob24zIC1tY29tcGlsZWFsbCBndGtkb2MvKi5weSkKLSBmb3IgZmlsZSBpbiBndGtkb2MtY2hlY2sgZ3RrZG9jLWRlcHNjYW4gZ3RrZG9jLWZpeHhyZWYgZ3RrZG9jLW1rZGIgZ3RrZG9jLW1raHRtbCBndGtkb2MtbWttYW4gZ3RrZG9jLW1rcGRmIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW5nb2JqOyBkbworQEAgLTMwLDcgKzMwLDcgQEAgZG9uZQorICMgVE9ETzogYWxzbyB0ZXN0IHRoZSBtb2R1bGUgZmlsZXMKKyBmb3IgZmlsZSBpbiBndGtkb2MtY2hlY2sgZ3RrZG9jLWRlcHNjYW4gZ3RrZG9jLWZpeHhyZWYgZ3RrZG9jLW1rZGIgZ3RrZG9jLW1raHRtbCBndGtkb2MtbWtodG1sMiBndGtkb2MtbWttYW4gZ3RrZG9jLW1rcGRmIGd0a2RvYy1yZWJhc2UgZ3RrZG9jLXNjYW5nb2JqOyBkbwogICAgICBmdWxsZmlsZT1gd2hpY2ggJGZpbGVgCiAtICAgIEBQWVRIT05AIC1tIHB5X2NvbXBpbGUgJGZ1bGxmaWxlCiArICAgIHB5dGhvbjMgLW0gcHlfY29tcGlsZSAkZnVsbGZpbGUKICAgICAgaWYgdGVzdCAkPyAhPSAwIDsgdGhlbiBmYWlsZWQ9YGV4cHIgJGZhaWxlZCArIDFgOyBmaQogICAgICB0ZXN0ZWQ9YGV4cHIgJHRlc3RlZCArIDFgCiAgZG9uZQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9uby1jbG9iYmVyLnBhdGNoCmluZGV4IDBmYTIyYjIuLmQxNjk1NDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvbm8tY2xvYmJlci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL25vLWNsb2JiZXIucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDhiYzRjMWYxNjlmODliYzU1MzFkYTViN2U4OTJiOGYyMGUwZjlhMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxNDo0NzoyOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBndGstZG9jOiBkb24ndCByZWdlbmVyYXRlIGd0ay1kb2MgaW4gZG9faW5zdGFsbAorCiBJbiBvdXQtb2YtdHJlZSBidWlsZHMgZ3RrLWRvYydzIHNldHVwLWJ1aWxkIHRhcmdldCBjb3BpZXMgYWxsIHRoZSBjb250ZW50IGZyb20gJHNyY2RpciB0byAkYnVpbGRkaXIuCiAKIEhvd2V2ZXIsIGlmIHNvbWUgb2YgdGhpcyBjb250ZW50IGlzIHJlZ2VuZXJhdGVkIGF0IGNvbmZpZ3VyZSB0aW1lIHRoaXMgY2FuIGhhcHBlbjoKQEAgLTE2LDEyICsyMSwyMCBAQAogVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTQ1NzFdCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCi1kaWZmIC0tZ2l0IGEvZ3RrLWRvYy5tYWtlIGIvZ3RrLWRvYy5tYWtlCi1pbmRleCBmODdlYWFiLi4yNDZmM2MwIDEwMDY0NAotLS0tIGEvZ3RrLWRvYy5tYWtlCi0rKysgYi9ndGstZG9jLm1ha2UKLUBAIC0xMTMsMyArMTEzLDMgQEAgc2V0dXAtYnVpbGQuc3RhbXA6CistLS0KKyBidWlsZHN5c3RlbXMvYXV0b3Rvb2xzL2d0ay1kb2MubWFrZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkc3lzdGVtcy9hdXRvdG9vbHMvZ3RrLWRvYy5tYWtlIGIvYnVpbGRzeXN0ZW1zL2F1dG90b29scy9ndGstZG9jLm1ha2UKK2luZGV4IDdkOWEyN2YuLjhjYjMzNmQgMTAwNjQ0CistLS0gYS9idWlsZHN5c3RlbXMvYXV0b3Rvb2xzL2d0ay1kb2MubWFrZQorKysrIGIvYnVpbGRzeXN0ZW1zL2F1dG90b29scy9ndGstZG9jLm1ha2UKK0BAIC0xMTEsNyArMTExLDcgQEAgc2V0dXAtYnVpbGQuc3RhbXA6CisgCSAgICAgIGRlc3RkaXI9YGRpcm5hbWUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZWA7IFwKKyAJICAgICAgdGVzdCAtZCAiJCRkZXN0ZGlyIiB8fCBta2RpciAtcCAiJCRkZXN0ZGlyIjsgXAogIAkgICAgICB0ZXN0IC1mICQoYWJzX3NyY2RpcikvJCRmaWxlICYmIFwKIC0JICAgICAgICBjcCAtcGYgJChhYnNfc3JjZGlyKS8kJGZpbGUgJChhYnNfYnVpbGRkaXIpLyQkZmlsZSB8fCB0cnVlOyBcCiArCSAgICAgICAgY3AgLXBuICQoYWJzX3NyY2RpcikvJCRmaWxlICQoYWJzX2J1aWxkZGlyKS8kJGZpbGUgfHwgdHJ1ZTsgXAogIAkgICAgZG9uZTsgXAorIAkgIGZpOyBcCisgCWZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaAppbmRleCBiZmJjNzc3Li45YjEyOGUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL3BrZy1jb25maWctbmF0aXZlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZmlsZXMvcGtnLWNvbmZpZy1uYXRpdmUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDVmMTQ1NjIxYjQ3ODBjZmQ2YTU2MzJmY2M5N2M0NWY1NzI5MzhlZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA0YWYxNTMyMmY2NzdkYjQyZWNjMmFjYzQ2NTMzNGEwNGRlOWE4NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA1IFNlcCAyMDE2IDIyOjI1OjQ0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBVc2UgbmF0aXZlIHBrZy1jb25maWcgd2hlbiBsb29raW5nIGZvciBndGstZG9jLgorU3ViamVjdDogW1BBVENIXSBVc2UgbmF0aXZlIHBrZy1jb25maWcgd2hlbiBsb29raW5nIGZvciBndGstZG9jLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CkBAIC0xMCwxMCArMTAsMTAgQEAKICBndGstZG9jLm00IHwgNyArKysrKystCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ3RrLWRvYy0xLjI3L2d0ay1kb2MubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndGstZG9jLTEuMjcub3JpZy9ndGstZG9jLm00Ci0rKysgZ3RrLWRvYy0xLjI3L2d0ay1kb2MubTQKK2RpZmYgLS1naXQgYS9ndGstZG9jLm00IGIvZ3RrLWRvYy5tNAoraW5kZXggMmQxMmYwMS4uZTVhZmMzZiAxMDA2NDQKKy0tLSBhL2J1aWxkc3lzdGVtcy9hdXRvdG9vbHMvZ3RrLWRvYy5tNAorKysrIGIvYnVpbGRzeXN0ZW1zL2F1dG90b29scy9ndGstZG9jLm00CiBAQCAtMjUsNyArMjUsNyBAQAogICMgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgogICMgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTUyODExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmb3IgZ2xpYi1iYXNlZCBzb2Z0d2FyZSIKLURFU0NSSVBUSU9OID0gIkd0ay1kb2MgaXMgYSBzZXQgb2Ygc2NyaXB0cyB0aGF0IGV4dHJhY3Qgc3BlY2lhbGx5IGZvcm1hdHRlZCBjb21tZW50cyBcCi0gICAgICAgICAgICAgICBmcm9tIGdsaWItYmFzZWQgc29mdHdhcmUgYW5kIHByb2R1Y2UgYSBzZXQgb2YgaHRtbCBkb2N1bWVudGF0aW9uIGZpbGVzIGZyb20gdGhlbSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy9ndGstZG9jLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotaW5oZXJpdCBnbm9tZWJhc2UKLQotIyBDb25maWd1cmUgdGhlIHNjcmlwdHMgY29ycmVjdGx5IChhbmQgYnVpbGQgdGhlaXIgZGVwZW5kZW5jaWVzKSBvbmx5IGlmIHRoZXkgYXJlIGFjdHVhbGx5Ci0jIGdvaW5nIHRvIGJlIHVzZWQ7IG90aGVyaXdzZSB3ZSBuZWVkIG9ubHkgdGhlIG00L21ha2VmaWxlIGluY2x1ZGVzIGZyb20gdGhlIGd0ay1kb2MgdGFyYmFsbC4KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImFwaS1kb2N1bWVudGF0aW9uIiwgIndvcmtpbmctc2NyaXB0cyIsICIiLCBkKX0iCi0KLSMgVGhpcyB3aWxsIGNhdXNlIHRhcmdldCBndGstZG9jIHRvIGhhcmRjb2RlIHBhdGhzIG9mIG5hdGl2ZSBkZXBlbmRlbmNpZXMKLSMgaW50byBpdHMgc2NyaXB0cy4gVGhpcyBtZWFucyB0aGF0IHRhcmdldCBndGstZG9jIHBhY2thZ2UgaXMgYnJva2VuOwotIyBob3BlZnVsbHkgbm8gb25lIG1pbmRzIGJlY2F1c2UgaXRzIHNjcmlwdHMgYXJlIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQKLSMgYW5kIHNob3VsZG4ndCBiZSB1c2VkIG9uIHRhcmdldHMuCi1QQUNLQUdFQ09ORklHW3dvcmtpbmctc2NyaXB0c10gPSAiLS13aXRoLWhpZ2hsaWdodD1zb3VyY2UtaGlnaGxpZ2h0LC0td2l0aC1oaWdobGlnaHQ9bm8sbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIHNvdXJjZS1oaWdobGlnaHQtbmF0aXZlIHB5dGhvbjMtc2l4IgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGdsaWItMi4wIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiMjk5NDllMDk2NDc2MmU0NzRiNzA2Y2UyMjE3MTYwMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImUyNmJkM2Y3MDgwYzc0OWIxY2I2NmM0NmM2YmY4MjM5ZTJmMzIwYTk0OTk2NGZiOWM2ZDU2ZTFiMGM2ZDlhNmYiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXhzbHRwcm9jLWlzLW5vdC1mb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25kaXRpb25hbHRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vLWNsb2JiZXIucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIERvIG5vdCBjaGVjayBmb3IgWE1MIGNhdGFsb2dzIHdoZW4gYnVpbGRpbmcgYmVjYXVzZSB0aGF0Ci0jIGluZm9ybWF0aW9uIGlzIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQuIFJlY2lwZQotIyBkZXBlbmRlbmNpZXMgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIHRoZSByaWdodCBiaXRzLgotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIHNlZCAtaSAtZSAncyxeSkhfQ0hFQ0tfWE1MX0NBVEFMT0cuKiwsJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9zZ21sIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ3RrZG9jX21ha2VmaWxlc19zeXNyb290X3ByZXByb2Nlc3MiCi1ndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcwotICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vZ3RrLWRvYy9kYXRhL2d0ay1kb2MqbWFrZQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzRlZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMjkuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmb3IgZ2xpYi1iYXNlZCBzb2Z0d2FyZSIKK0RFU0NSSVBUSU9OID0gIkd0ay1kb2MgaXMgYSBzZXQgb2Ygc2NyaXB0cyB0aGF0IGV4dHJhY3Qgc3BlY2lhbGx5IGZvcm1hdHRlZCBjb21tZW50cyBcCisgICAgICAgICAgICAgICBmcm9tIGdsaWItYmFzZWQgc29mdHdhcmUgYW5kIHByb2R1Y2UgYSBzZXQgb2YgaHRtbCBkb2N1bWVudGF0aW9uIGZpbGVzIGZyb20gdGhlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3RrLm9yZy9ndGstZG9jLyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworaW5oZXJpdCBnbm9tZWJhc2UKKworIyBDb25maWd1cmUgdGhlIHNjcmlwdHMgY29ycmVjdGx5IChhbmQgYnVpbGQgdGhlaXIgZGVwZW5kZW5jaWVzKSBvbmx5IGlmIHRoZXkgYXJlIGFjdHVhbGx5CisjIGdvaW5nIHRvIGJlIHVzZWQ7IG90aGVyaXdzZSB3ZSBuZWVkIG9ubHkgdGhlIG00L21ha2VmaWxlIGluY2x1ZGVzIGZyb20gdGhlIGd0ay1kb2MgdGFyYmFsbC4KK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgImFwaS1kb2N1bWVudGF0aW9uIiwgIndvcmtpbmctc2NyaXB0cyIsICIiLCBkKX0iCisKKyMgVGhpcyB3aWxsIGNhdXNlIHRhcmdldCBndGstZG9jIHRvIGhhcmRjb2RlIHBhdGhzIG9mIG5hdGl2ZSBkZXBlbmRlbmNpZXMKKyMgaW50byBpdHMgc2NyaXB0cy4gVGhpcyBtZWFucyB0aGF0IHRhcmdldCBndGstZG9jIHBhY2thZ2UgaXMgYnJva2VuOworIyBob3BlZnVsbHkgbm8gb25lIG1pbmRzIGJlY2F1c2UgaXRzIHNjcmlwdHMgYXJlIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQKKyMgYW5kIHNob3VsZG4ndCBiZSB1c2VkIG9uIHRhcmdldHMuCitQQUNLQUdFQ09ORklHW3dvcmtpbmctc2NyaXB0c10gPSAiLS13aXRoLWhpZ2hsaWdodD1zb3VyY2UtaGlnaGxpZ2h0LC0td2l0aC1oaWdobGlnaHQ9bm8sbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIHNvdXJjZS1oaWdobGlnaHQtbmF0aXZlIHB5dGhvbjMtc2l4IgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzLGdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkZjI2YTM4YzIwOWIzZDczNThmMjYyNjhmY2JkYjllMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjE0NTc4ZTAwMjQ5NjU2NzI3NmQzMTBhNjJjOWZmZDZjNTZlZTg4MDZjZTUwNzlmZmIwYjgxYzQxMTFmNTg2YjEiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtZXJyb3Itb3V0LWlmLXhzbHRwcm9jLWlzLW5vdC1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jb25kaXRpb25hbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLWNsb2JiZXIucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9wa2ctY29uZmlnLW5hdGl2ZS5wYXRjaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIERvIG5vdCBjaGVjayBmb3IgWE1MIGNhdGFsb2dzIHdoZW4gYnVpbGRpbmcgYmVjYXVzZSB0aGF0CisjIGluZm9ybWF0aW9uIGlzIG5vdCB1c2VkIGZvciBhbnl0aGluZyBkdXJpbmcgYnVpbGQuIFJlY2lwZQorIyBkZXBlbmRlbmNpZXMgbWFrZSBzdXJlIHdlIGhhdmUgYWxsIHRoZSByaWdodCBiaXRzLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAncyxeSkhfQ0hFQ0tfWE1MX0NBVEFMT0cuKiwsJyAke1N9L2NvbmZpZ3VyZS5hYworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9zZ21sIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCitGSUxFU18ke1BOfS1kb2MgPSAiIgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZ3RrZG9jX21ha2VmaWxlc19zeXNyb290X3ByZXByb2Nlc3MiCitndGtkb2NfbWFrZWZpbGVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICAgICAgIyBQYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudCBiaW5hcmllcworICAgICAgICAjIGluc3RlYWQgb2YgbGlidG9vbCB3cmFwcGVyIG9yIHJ1bm5pbmcgdGhlbSBkaXJlY3RseQorICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAtZSAic3xHVEtET0NfUlVOID0uKnxHVEtET0NfUlVOID0gXCQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXJ8IiBcCisgICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vZ3RrLWRvYy9kYXRhL2d0ay1kb2MqbWFrZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI5MTdlYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAibGlic2VjcmV0IGlzIGEgbGlicmFyeSBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZyBwYXNzd29yZHMgYW5kIG90aGVyIHNlY3JldHMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjNjMmE1ZTAxMDZiOTlkNzUyMzg5ODY1NTliYjVmYzYiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWFucGFnZXMKLQotREVQRU5EUyArPSAiZ2xpYi0yLjAgbGliZ2NyeXB0IGdldHRleHQtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyZDY4ODgyNTkyMTMxM2RhODczMTMxM2IwYTdmMzk0YyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjljZTdiZDhkZDU4MzFmMjc4NmM5MzVkODI2MzhhYzQyOGZhMDg1MDU3Y2M2NzgwYWJhMGUzOTM3NTg4N2NjYjMiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgdmFwaWdlbi5tNCBidW5kbGVkIHdpdGggdGhlIHRhcmJhbGwgZG9lcyBub3QgeWV0IGhhdmUgb3VyIGNyb3NzLWNvbXBpbGF0aW9uIGZpeGVzCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBybSAtZiAke1N9L2J1aWxkL200L3ZhcGlnZW4ubTQKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE4LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4YzcxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC42LmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAibGlic2VjcmV0IGlzIGEgbGlicmFyeSBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZyBwYXNzd29yZHMgYW5kIG90aGVyIHNlY3JldHMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjNjMmE1ZTAxMDZiOTlkNzUyMzg5ODY1NTliYjVmYzYiCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWFucGFnZXMKKworREVQRU5EUyArPSAiZ2xpYi0yLjAgbGliZ2NyeXB0IGdldHRleHQtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjNmNmMTMyYTU2YmQzNDZmYmY0OWE0M2FiYjAyZTVjMiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjVlZmJjODkwYmE0MWEzMjNmZmUwNTk5Y2QyNjBmZDEyYmQ4ZWI2MmEwNGFhMWJkMWIyNzYyNTc1ZDI1M2Q2NmYiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIHZhcGlnZW4ubTQgYnVuZGxlZCB3aXRoIHRoZSB0YXJiYWxsIGRvZXMgbm90IHlldCBoYXZlIG91ciBjcm9zcy1jb21waWxhdGlvbiBmaXhlcworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgcm0gLWYgJHtTfS9idWlsZC9tNC92YXBpZ2VuLm00Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby1mcHUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8tZnB1LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3YzUzMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyby1mcHUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0KLWRlZiBnZXRfY2Fpcm9fZnB1X3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUQVJHRVRfRlBVJykgaW4gWyAnc29mdCcgXToKLSAgICAgICAgcmV0dXJuICItLWRpc2FibGUtc29tZS1mbG9hdGluZy1wb2ludCIKLSAgICByZXR1cm4gIiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGUwZDJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAotdmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKLW9mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAotd2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKLW9wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCi1leHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCi1FeHRlbnNpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL2NhaXJvZ3JhcGhpY3Mub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTEgJiBMR1BMdjIuMSAmIEdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTVBMLTEgJiBMR1BMdjIuMSIKLUxJQ0VOU0VfJHtQTn0tZGV2ID0gIk1QTC0xICYgTEdQTHYyLjEiCi1MSUNFTlNFXyR7UE59LWRvYyA9ICJNUEwtMSAmIExHUEx2Mi4xIgotTElDRU5TRV8ke1BOfS1nb2JqZWN0ID0gIk1QTC0xICYgTEdQTHYyLjEiCi1MSUNFTlNFXyR7UE59LXNjcmlwdC1pbnRlcnByZXRlciA9ICJNUEwtMSAmIExHUEx2Mi4xIgotTElDRU5TRV8ke1BOfS1wZXJmLXV0aWxzID0gIkdQTHYzKyIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnhleHQiCi1ERVBFTkRTID0gImxpYnBuZyBmb250Y29uZmlnIHBpeG1hbiBnbGliLTIuMCB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExIHhjYicsICcnLCBkKX0gXAotICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14PXllcyAtZW5hYmxlLXhsaWIsLS13aXRoLXg9bm8gLS1kaXNhYmxlLXhsaWIsJHtYMTFERVBFTkRTfSIKLVBBQ0tBR0VDT05GSUdbeGNiXSA9ICItLWVuYWJsZS14Y2IsLS1kaXNhYmxlLXhjYixsaWJ4Y2IiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSA9ICItLWVuYWJsZS1kaXJlY3RmYj15ZXMsLGRpcmVjdGZiIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQ9eWVzLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKLQotI2NoZWNrIGZvciBUQVJHRVRfRlBVPXNvZnQgYW5kIGluZm9ybSBjb25maWd1cmUgb2YgdGhlIHJlc3VsdCBzbyBpdCBjYW4gZGlzYWJsZSBzb21lIGZsb2F0aW5nIHBvaW50cyAKLXJlcXVpcmUgY2Fpcm8tZnB1LmluYwotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfY2Fpcm9fZnB1X3NldHRpbmcoYmIsIGQpfSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLXRlZSBcCi0gICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotIyBXZSBkb24ndCBkZXBlbmQgb24gYmludXRpbHMgc28gd2UgbmVlZCB0byBkaXNhYmxlIHRoaXMKLWV4cG9ydCBhY19jdl9saWJfYmZkX2JmZF9vcGVucj0ibm8iCi0jIEVuc3VyZSB3ZSBkb24ndCBkZXBlbmQgb24gTFpPCi1leHBvcnQgYWNfY3ZfbGliX2x6bzJfbHpvMmFfZGVjb21wcmVzcz0ibm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTIuYmIKaW5kZXggMDc1Y2ExZS4uMThiOTQ3OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjEyLmJiCkBAIC0xLDcgKzEsMjcgQEAKLXJlcXVpcmUgY2Fpcm8uaW5jCitTVU1NQVJZID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKK3ZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCitvZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKK3dpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCitvcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAorZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAorRXh0ZW5zaW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1QTC0xICYgTEdQTHYyLjEgJiBHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIk1QTC0xICYgTEdQTHYyLjEiCitMSUNFTlNFXyR7UE59LWRldiA9ICJNUEwtMSAmIExHUEx2Mi4xIgorTElDRU5TRV8ke1BOfS1kb2MgPSAiTVBMLTEgJiBMR1BMdjIuMSIKK0xJQ0VOU0VfJHtQTn0tZ29iamVjdCA9ICJNUEwtMSAmIExHUEx2Mi4xIgorTElDRU5TRV8ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiTVBMLTEgJiBMR1BMdjIuMSIKK0xJQ0VOU0VfJHtQTn0tcGVyZi11dGlscyA9ICJHUEx2MysiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3M2U5OTllMGM3MmI1YWM5MDEyNDI0ZmExNTdhZDc3IgogCitERVBFTkRTID0gImZvbnRjb25maWcgZ2xpYi0yLjAgbGlicG5nIHBpeG1hbiB6bGliIgorCiBTUkNfVVJJID0gImh0dHA6Ly9jYWlyb2dyYXBoaWNzLm9yZy9yZWxlYXNlcy9jYWlyby0ke1BWfS50YXIueHogXAogICAgICAgICAgICBmaWxlOi8vY2Fpcm8tZ2V0X2JpdG1hcF9zdXJmYWNlLWJzYzEwMzY3ODktQ1ZFLTIwMTctNzQ3NS5kaWZmIFwgCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhaXJvLUZpeC1DVkUtMjAxNy05ODE0LnBhdGNoIFwKQEAgLTEwLDE2ICszMCw0MyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjlmMGRiOWRiZmNhMDk2NmJlOGFjZDY4MmU2MzZkMTY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjOTBmMDBjNTAwYjIyOTljMGEzMjNkZDliZWVhZDJhMDAzNTM3NTJiMjA5MmVhZDU1ODEzOWJkNjdmN2JmMTYiCiAKLVBBQ0tBR0VTID0rICJjYWlyby1nb2JqZWN0IGNhaXJvLXNjcmlwdC1pbnRlcnByZXRlciBjYWlyby1wZXJmLXV0aWxzIgoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jIG11bHRpbGliX3NjcmlwdAogCi1TVU1NQVJZXyR7UE59ID0gIlRoZSBDYWlybyAyRCB2ZWN0b3IgZ3JhcGhpY3MgbGlicmFyeSIKLURFU0NSSVBUSU9OXyR7UE59ID0gIkNhaXJvIGlzIGEgbXVsdGktcGxhdGZvcm0gbGlicmFyeSBwcm92aWRpbmcgYW50aS1hbGlhc2VkIFwKLXZlY3Rvci1iYXNlZCByZW5kZXJpbmcgZm9yIG11bHRpcGxlIHRhcmdldCBiYWNrZW5kcy4gUGF0aHMgY29uc2lzdCBcCi1vZiBsaW5lIHNlZ21lbnRzIGFuZCBjdWJpYyBzcGxpbmVzIGFuZCBjYW4gYmUgcmVuZGVyZWQgYXQgYW55IHdpZHRoIFwKLXdpdGggdmFyaW91cyBqb2luIGFuZCBjYXAgc3R5bGVzLiBBbGwgY29sb3JzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBcCi1vcHRpb25hbCB0cmFuc2x1Y2VuY2UgKG9wYWNpdHkvYWxwaGEpIGFuZCBjb21iaW5lZCB1c2luZyB0aGUgXAotZXh0ZW5kZWQgUG9ydGVyL0R1ZmYgY29tcG9zaXRpbmcgYWxnZWJyYSBhcyBmb3VuZCBpbiB0aGUgWCBSZW5kZXIgXAotRXh0ZW5zaW9uLiIKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tcGVyZi11dGlsczoke2JpbmRpcn0vY2Fpcm8tdHJhY2UiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4ZXh0IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSB4Y2InLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnb3BlbmdsJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14PXllcyAtZW5hYmxlLXhsaWIsLS13aXRoLXg9bm8gLS1kaXNhYmxlLXhsaWIsJHtYMTFERVBFTkRTfSIKK1BBQ0tBR0VDT05GSUdbeGNiXSA9ICItLWVuYWJsZS14Y2IsLS1kaXNhYmxlLXhjYixsaWJ4Y2IiCitQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSA9ICItLWVuYWJsZS1kaXJlY3RmYj15ZXMsLGRpcmVjdGZiIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQ9eWVzLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2w9eWVzLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2dsZXN2Ml0gPSAiLS1lbmFibGUtZ2xlc3YyLC0tZGlzYWJsZS1nbGVzdjIsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1kaXNhYmxlLXNvbWUtZmxvYXRpbmctcG9pbnQnLCAnJywgZCl9IFwKKyAgICAtLWVuYWJsZS10ZWUgXAorIgorCisjIFdlIGRvbid0IGRlcGVuZCBvbiBiaW51dGlscyBzbyB3ZSBuZWVkIHRvIGRpc2FibGUgdGhpcworZXhwb3J0IGFjX2N2X2xpYl9iZmRfYmZkX29wZW5yPSJubyIKKyMgRW5zdXJlIHdlIGRvbid0IGRlcGVuZCBvbiBMWk8KK2V4cG9ydCBhY19jdl9saWJfbHpvMl9sem8yYV9kZWNvbXByZXNzPSJubyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCXJtIC1yZiAke0R9JHtiaW5kaXJ9L2NhaXJvLXNwaGlueAorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLWZkcioKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1zcGhpbngqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLWZkcioKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tc3BoaW54KgorfQorCitQQUNLQUdFUyA9KyAiY2Fpcm8tZ29iamVjdCBjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgY2Fpcm8tcGVyZi11dGlscyIKIAogU1VNTUFSWV9jYWlyby1nb2JqZWN0ID0gIlRoZSBDYWlybyBsaWJyYXJ5IEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IgogREVTQ1JJUFRJT05fY2Fpcm8tZ29iamVjdCA9ICJBIEdPYmplY3Qgd3JhcHBlciBsaWJyYXJ5IGZvciB0aGUgQ2Fpcm8gQVBJLiIKQEAgLTMyLDE1ICs3OSw5IEBACiBERVNDUklQVElPTl9jYWlyby1wZXJmLXV0aWxzID0gIlRoZSBDYWlybyBsaWJyYXJ5IHBlcmZvcm1hbmNlIHV0aWxpdGllcyIKIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jYWlyby8qLnNvIgogRklMRVNfJHtQTn0tZ29iamVjdCA9ICIke2xpYmRpcn0vbGliY2Fpcm8tZ29iamVjdC5zby4qIgogRklMRVNfJHtQTn0tc2NyaXB0LWludGVycHJldGVyID0gIiR7bGliZGlyfS9saWJjYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIuc28uKiIKLUZJTEVTXyR7UE59LXBlcmYtdXRpbHMgPSAiJHtiaW5kaXJ9L2NhaXJvLXRyYWNlICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgorRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UqICR7bGliZGlyfS9jYWlyby8qLmxhICR7bGliZGlyfS9jYWlyby9saWJjYWlyby10cmFjZS5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY2Fpcm8vKi5zbyIKIAotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXJtIC1yZiAke0R9JHtiaW5kaXJ9L2NhaXJvLXNwaGlueAotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLWZkcioKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1zcGhpbngqCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLWZkcioKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tc3BoaW54KgotfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYW50YXJlbGwtZm9udHMvY2FudGFyZWxsLWZvbnRzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhbnRhcmVsbC1mb250cy9jYW50YXJlbGwtZm9udHNfZ2l0LmJiCmluZGV4IDlkOGZiMjguLmRiNDgwYmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhbnRhcmVsbC1mb250cy9jYW50YXJlbGwtZm9udHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhbnRhcmVsbC1mb250cy9jYW50YXJlbGwtZm9udHNfZ2l0LmJiCkBAIC0xMCwxMCArMTAsMTAgQEAKIExJQ0VOU0UgPSAiT0ZMLTEuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRmOTFlM2ZmY2FiOGNmYjk3MmE2NmJmMTEyNTUxODhkIgogCi1QViA9ICIwLjAuMjQiCitQViA9ICIwLjAuMjUiCiAKLVNSQ1JFViA9ICIwN2I2ZWEyY2JiZWJmYzM2MGFhNDY2ODYxMmEzNzZiZTVlMjE0ZWFhIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2NhbnRhcmVsbC1mb250cztwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgorU1JDUkVWID0gImUyOGE5MDk2ZGE0Mzk4NDIxMmI1YjQwMDJiOTQ5YmNiOGM3NTI3ZjkiCitTUkNfVVJJID0gImdpdDovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvY2FudGFyZWxsLWZvbnRzLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9cmVjb25zdHJ1Y3Rpb24tMC4wLjI1IgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KD8hMFwuMTMpKD8hMFwuMTBcLjEpXGQrXC5cZCsoXC5cZCspKykiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNWUwYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2UxNDVlMjRiYjNjMzQwZWVlZGRhZmQxOGVmZTU0N2QiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlOWYxYzg3ZDhmNGM0NzA2MmU5NTJmYjgwMDg3MDRmODk0MmNmMmQ2ZjI5MDY4OGYzZjdkMTNlODM1NzhjYzZjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhMGRkYTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjYuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNzgwOWNhNmNlOWQxYTM0OTA1OTdmZDRhNzM3NWMzODkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkODYxOGE2ZDlhY2NlYzBmMmE4NTc0YzVlMTIyMDA1MWY4NTA1ZmI4MmIyMDMzNmMyNmJkYmQ0ODJhYTZjYjNhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYmViYzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZTZiZDQyMDViMGI1NDZhZmU5OTFhZTZmNzIyNTY2NDVmNDQwNGFkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDUgU2VwIDIwMTYgMTQ6NDE6MzcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCBsaWJkcm1dIGNvbmZpZ3VyZS5hYzogQWxsb3cgZXhwbGljaXQgZW5hYmxpbmcgb2YgY3VuaXQgdGVzdHMKLQotQWRkIC0td2l0aC1jdW5pdCB0byBtYWtlIGl0IGVhc2llciB0byBkbyByZXByb2R1Y2libGUgYnVpbGRzLiBEZWZhdWx0Ci1pcyBzdGlsbCB0byBwcm9iZSBjdW5pdCBhbmQgYnVpbGQgb3Bwb3J0dW5pc3RpY2FsbHkuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbWFpbGluZyBsaXN0XQotLS0tCi0gY29uZmlndXJlLmFjIHwgMTQgKysrKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGxpYmRybS0yLjQuOTEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZHJtLTIuNC45MS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGxpYmRybS0yLjQuOTEvY29uZmlndXJlLmFjCi1AQCAtMTYzLDYgKzE2MywxMiBAQCBBQ19BUkdfRU5BQkxFKGluc3RhbGwtdGVzdC1wcm9ncmFtcywKLSAJCSAgW0luc3RhbGwgdGVzdCBwcm9ncmFtcyAoZGVmYXVsdDogbm8pXSksCi0gCQkgIFtJTlNUQUxMX1RFU1RTPSRlbmFibGV2YWxdLCBbSU5TVEFMTF9URVNUUz1ub10pCi0gCi0rQUNfQVJHX1dJVEgoW2N1bml0XSwKLSsgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1jdW5pdF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtCdWlsZCB0ZXN0cyB0aGF0IHVzZSBjdW5pdCAoZGVmYXVsdDogYXV0byldKV0sCi0rICAgICAgICAgICAgW10sCi0rICAgICAgICAgICAgW3dpdGhfY3VuaXQ9YXV0b10pCi0rCi0gZG5sID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIGRubCBjaGVjayBjb21waWxlciBmbGFncwotIEFDX0RFRlVOKFtMSUJEUk1fQ0NfVFJZX0ZMQUddLCBbCi1AQCAtNDExLDcgKzQxNyw3IEBAIGVsc2UKLSAJQUNfREVGSU5FKEhBVkVfUkFERU9OLCAwKQotIGZpCi0gCi0taWYgdGVzdCAieCRBTURHUFUiICE9IHhubzsgdGhlbgotK2lmIHRlc3QgIngkd2l0aF9jdW5pdCIgIT0geG5vIC1hICJ4JEFNREdQVSIgIT0geG5vOyB0aGVuCi0gCSMgRGV0ZWN0IGN1bml0IGxpYnJhcnkKLSAJUEtHX0NIRUNLX01PRFVMRVMoW0NVTklUXSwgW2N1bml0ID49IDIuMV0sIFtoYXZlX2N1bml0PXllc10sIFtoYXZlX2N1bml0PW5vXSkKLSAJIyBJZiBwa2ctY29uZmlnIGRvZXMgbm90IGZpbmQgY3VuaXQsIGNoZWNrIGl0IHVzaW5nIEFDX0NIRUNLX0xJQi4gIFdlCi1AQCAtNDM2LDcgKzQ0MiwxMSBAQCBpZiB0ZXN0ICJ4JEFNREdQVSIgPSB4eWVzOyB0aGVuCi0gCUFDX0RFRklORShIQVZFX0FNREdQVSwgMSwgW0hhdmUgYW1kZ3B1IHN1cHBvcnRdKQotIAotIAlpZiB0ZXN0ICJ4JGhhdmVfY3VuaXQiID0gInhubyI7IHRoZW4KLS0JCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKLSsJCWlmIHRlc3QgIngkd2l0aF9jdW5pdCIgPSAieHllcyI7IHRoZW4KLSsJCQlBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGN1bml0IGxpYnJhcnkgYnV0IC0td2l0aC1jdW5pdCB3YXMgZ2l2ZW5dKQotKwkJZWxpZiB0ZXN0ICJ4JHdpdGhfY3VuaXQiID0gInhhdXRvIjsgdGhlbgotKwkJCUFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdW5pdCBsaWJyYXJ5LiBEaXNhYmxpbmcgYW1kZ3B1IHRlc3RzXSkKLSsJCWZpCi0gCWZpCi0gZWxzZQotIAlBQ19ERUZJTkUoSEFWRV9BTURHUFUsIDApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzA4YmYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotZHJtZGV2aWNlLmM6IGRlZmluZSBfR05VX1NPVVJDRQotCi1JbmNsdWRlIGNvbmZpZy5oIHRvIGZpeCB0aGlzIGJ1aWxkIGVycm9yIHdpdGggdWNsaWJjOgotCi1saWJkcm0tMi40LjY2L3Rlc3RzL2RybWRldmljZS5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Ci1saWJkcm0tMi40LjY2L3Rlc3RzL2RybWRldmljZS5jOjk2OjYwOiBlcnJvcjoKLSdPX0NMT0VYRUMnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotZmQgPSBvcGVuKGRldmljZXNbaV0tPm5vZGVzW2pdLE9fUkRPTkxZIHwgT19DTE9FWEVDLCAwKTsKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIGxpYmRybS0yLjQuNjYtb3JpZy90ZXN0cy9kcm1kZXZpY2UuYyBsaWJkcm0tMi40LjY2L3Rlc3RzL2RybWRldmljZS5jCi0tLS0gbGliZHJtLTIuNC42Ni1vcmlnL3Rlc3RzL2RybWRldmljZS5jCTIwMTYtMDItMjMgMTE6MzQ6MDIuMDU0OTA0NTAyICswMjAwCi0rKysgbGliZHJtLTIuNC42Ni90ZXN0cy9kcm1kZXZpY2UuYwkyMDE2LTAyLTIzIDExOjM1OjM0LjM3MTc1MDM4MyArMDIwMAotQEAgLTIxLDYgKzIxLDcgQEAKLSAgKgotICAqLwotIAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL2luc3RhbGx0ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vaW5zdGFsbHRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzFmYjAyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vaW5zdGFsbHRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSA1YzZlYjQzYzJmNmU3ZjJlZTdjMjVjOTJlNDJmNGU0NDAzZmEwNTI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjEgRmViIDIwMTcgMTQ6Mzc6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGFsc28gaW5zdGFsbCB0ZXN0IGFwcHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHRlc3RzL01ha2VmaWxlLmFtIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAwMzU1YTkyLi5iNDg4MmNkIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtNDUsMyArNDUsNCBAQCBURVNUUyA9IFwKLSBjaGVja19QUk9HUkFNUyA9IFwKLSAJJChURVNUUykgXAotIAlkcm1kZXZpY2UKLStiaW5fUFJPR1JBTVMgPSAkKGNoZWNrX1BST0dSQU1TKQotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL211c2wtaW9jdGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtL211c2wtaW9jdGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNkNmM1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSA0NmMwZmQ2YzgyN2E4Y2I0ZDA0ZTA2N2JmMDRmYWI1NzlhYzQ3MTJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTggSnVuIDIwMTggMTU6MDc6MDMgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvbm91dmVhdS90aHJlYWRlZDogYWRhcHQgaW9jdGwgc2lnbmF0dXJlCisKK1BPU0lYIHNheXMgaW9jdGwoKSBoYXMgdGhlIHNpZ25hdHVyZSAoaW50LCBpbnQsIC4uLikgYnV0IGdsaWJjIGhhcyBkZWNpZGVkIHRvCit1c2UgKGludCwgdW5zaWduZWQgbG9uZyBpbnQsIC4uLikgaW5zdGVhZC4KKworVXNlIGEgI2lmZGVmIHRvIGFkYXB0IHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBhcyBhcHByb3ByaWF0ZS4KKy0tLQorIHRlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYworaW5kZXggMzY2OWJjZDMuLmUxYzI3YzAxIDEwMDY0NAorLS0tIGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCisrKysgYi90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKK0BAIC0zNiw3ICszNiwxMSBAQCBzdGF0aWMgaW50IGZhaWxlZDsKKyAKKyBzdGF0aWMgaW50IGltcG9ydF9mZDsKKyAKKysjaWZkZWYgX19HTElCQ19fCisgaW50IGlvY3RsKGludCBmZCwgdW5zaWduZWQgbG9uZyByZXF1ZXN0LCAuLi4pCisrI2Vsc2UKKytpbnQgaW9jdGwoaW50IGZkLCBpbnQgcmVxdWVzdCwgLi4uKQorKyNlbmRpZgorIHsKKyAJdmFfbGlzdCB2YTsKKyAJaW50IHJldDsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjkxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTAyODUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBpbnRlcmZhY2UgdG8gdGhlIGtlcm5lbCBEUk0gc2VydmljZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgcnVudGltZSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcgdGhlIGtlcm5lbCBEUk0gc2VydmljZXMuICBEUk0gXAotc3RhbmRzIGZvciBcIkRpcmVjdCBSZW5kZXJpbmcgTWFuYWdlclwiLCB3aGljaCBpcyB0aGUga2VybmVsIHBvcnRpb24gb2YgdGhlIFwKLVwiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZVwiIChEUkkpLiAgRFJJIGlzIHJlcXVpcmVkIGZvciBtYW55IGhhcmR3YXJlIFwKLWFjY2VsZXJhdGVkIE9wZW5HTCBkcml2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veGY4NmRybS5jO2JlZ2lubGluZT05O2VuZGxpbmU9MzI7bWQ1PWM4YTNiOTYxYWY3NjY3YzUzMDgxNjc2MWU5NDlkYzcxIgotUFJPVklERVMgPSAiZHJtIgotREVQRU5EUyA9ICJsaWJwdGhyZWFkLXN0dWJzIGxpYnBjaWFjY2VzcyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsdGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X09fQ0xPRVhFQ191bmRlY2xhcmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUFsbG93LWV4cGxpY2l0LWVuYWJsaW5nLW9mLWN1bml0LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyM2Q4N2NkYTkyNzAwYjcxMGEzN2Q5YjhlZGFhOWY1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzRhMGVkMGNjMWVmZjA2ZjQ4Njc0YjFkYTgxYWFmYTY2MWE5ZjAwMWU3YTRmNDNkZGU4MTA3Njg4NmRjODAwIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbWFucGFnZXMKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtY2Fpcm8tdGVzdHMgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3VuaXQgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1vbWFwLWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1ldG5hdml2LWV4cGVyaW1lbnRhbC1hcGkgXAotICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLXRlc3QtcHJvZ3JhbXMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmFsZ3JpbmQgXAotICAgICAgICAgICAgICAgICIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLCAtLWRpc2FibGUtbWFucGFnZXMsIGxpYnhzbHQtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0tZHJpdmVycyA9ICIxIgotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzICR7UE59LWRyaXZlcnMgJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCBcCi0gICAgICAgICAgICAgJHtQTn0taW50ZWwgJHtQTn0tZXh5bm9zICR7UE59LWttcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgotCi1SUkVDT01NRU5EU18ke1BOfS1kcml2ZXJzID0gIiR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgJHtQTn0taW50ZWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1leHlub3MgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcmFkZW9uID0gIiR7bGliZGlyfS9saWJkcm1fcmFkZW9uLnNvLioiCi1GSUxFU18ke1BOfS1ub3V2ZWF1ID0gIiR7bGliZGlyfS9saWJkcm1fbm91dmVhdS5zby4qIgotRklMRVNfJHtQTn0tb21hcCA9ICIke2xpYmRpcn0vbGliZHJtX29tYXAuc28uKiIKLUZJTEVTXyR7UE59LWludGVsID0gIiR7bGliZGlyfS9saWJkcm1faW50ZWwuc28uKiIKLUZJTEVTXyR7UE59LWV4eW5vcyA9ICIke2xpYmRpcn0vbGliZHJtX2V4eW5vcy5zby4qIgotRklMRVNfJHtQTn0ta21zID0gIiR7bGliZGlyfS9saWJrbXMqLnNvLioiCi1GSUxFU18ke1BOfS1mcmVlZHJlbm8gPSAiJHtsaWJkaXJ9L2xpYmRybV9mcmVlZHJlbm8uc28uKiIKLUZJTEVTXyR7UE59LWFtZGdwdSA9ICIke2xpYmRpcn0vbGliZHJtX2FtZGdwdS5zby4qIgotRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40Ljk0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuOTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1NDI5MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40Ljk0LmJiCkBAIC0wLDAgKzEsNjAgQEAKK1NVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCitzdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAorXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAorYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCitQUk9WSURFUyA9ICJkcm0iCitERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vbXVzbC1pb2N0bC5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOTgwMzIzMzgzODAwNzA0N2YzOWViMzg1YzcwZDllMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzNjNTliMGEzNzYwNTAyYzQyOGJhODFkZTQ5Y2Q0ODA3NjU3ZDI2YmU1ZTY5N2ViYTNhODdkZDAyMWQxNmJlIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID8/PSAibGlia21zIGludGVsIHJhZGVvbiBhbWRncHUgbm91dmVhdSB2bXdnZnggb21hcCBmcmVlZHJlbm8gdmM0IGV0bmF2aXYgaW5zdGFsbC10ZXN0LXByb2dyYW1zIgorUEFDS0FHRUNPTkZJR1tsaWJrbXNdID0gIi1EbGlia21zPXRydWUsLURsaWJrbXM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ludGVsXSA9ICItRGludGVsPXRydWUsLURpbnRlbD1mYWxzZSxsaWJwY2lhY2Nlc3MiCitQQUNLQUdFQ09ORklHW3JhZGVvbl0gPSAiLURyYWRlb249dHJ1ZSwtRHJhZGVvbj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYW1kZ3B1XSA9ICItRGFtZGdwdT10cnVlLC1EYW1kZ3B1PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tub3V2ZWF1XSA9ICItRG5vdXZlYXU9dHJ1ZSwtRG5vdXZlYXU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLUR2bXdnZng9dHJ1ZSwtRHZtd2dmeD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbb21hcF0gPSAiLURvbWFwPXRydWUsLURvbWFwPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tleHlub3NdID0gIi1EZXh5bm9zPXRydWUsLURleHlub3M9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ZyZWVkcmVub10gPSAiLURmcmVlZHJlbm89dHJ1ZSwtRGZyZWVkcmVubz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGVncmFdID0gIi1EdGVncmE9dHJ1ZSwtRHRlZ3JhPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YzRdID0gIi1EdmM0PXRydWUsLUR2YzQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V0bmF2aXZdID0gIi1EZXRuYXZpdj10cnVlLC1EZXRuYXZpdj1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vLWtnc2xdID0gIi1EZnJlZWRyZW5vLWtnc2w9dHJ1ZSwtRGZyZWVkcmVuby1rZ3NsPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD10cnVlLC1EdmFsZ3JpbmQ9ZmFsc2UsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2luc3RhbGwtdGVzdC1wcm9ncmFtc10gPSAiLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9dHJ1ZSwtRGluc3RhbGwtdGVzdC1wcm9ncmFtcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbY2Fpcm8tdGVzdHNdID0gIi1EY2Fpcm8tdGVzdHM9dHJ1ZSwtRGNhaXJvLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItRHVkZXY9dHJ1ZSwtRHVkZXY9ZmFsc2UsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuLXBhZ2VzPXRydWUsLURtYW4tcGFnZXM9ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKKyAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCisKK1JSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKK0ZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCitGSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgorRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgorRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCitGSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKK0ZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgorRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCitGSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLmluYwppbmRleCA4ZTdkOWJkLi4wN2FkMDcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby5pbmMKQEAgLTcsMTUgKzcsMTcgQEAKIERFUEVORFMgPSAidmlydHVhbC9lZ2wiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kdjEvZWdsaW5mby5naXQ7YnJhbmNoPW1hc3RlciBcCisgICAgICAgICAgIGZpbGU6Ly93YWYgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtU1RBR0lOR19JTkNESVItdG8tc2VhcmNocGF0aC1mb3ItZWdsLWhlYWRlcnMucGF0Y2ggXAotICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWxpYmVnbC11c2luZy1wa2ctY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgIgogU1JDUkVWID0gIjRiMzE3NjQ4ZWM2Y2YzOTU1NmE5ZTVkODA3OGY2MDViYzBlZGQ1ZGUiCiAKIENWRV9QUk9EVUNUID0gImVnbGluZm8iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgd2FmIGRpc3Ryb19mZWF0dXJlc19jaGVjaworaW5oZXJpdCB3YWYgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHBrZ2NvbmZpZwogIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKIApAQCAtMjgsNiArMzAsOSBAQAogICAgICAgICAgICAgICAgIC0tZGV2aWNlPSR7RUdMSU5GT19ERVZJQ0V9IFwKICAgICAgICAgICAgICAgICAtLXN5c3Jvb3QgJHtTVEFHSU5HX0RJUl9UQVJHRVR9IgogCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS93YWYgJHtTfS93YWYKK30KIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCW12ICR7RH0vJHtiaW5kaXJ9L2VnbGluZm8gJHtEfS8ke2JpbmRpcn0vJHtFR0xJTkZPX0JJTkFSWV9OQU1FfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUNoZWNrLWZvci1saWJlZ2wtdXNpbmctcGtnLWNvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI4OWFjMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA1OGQ1MWQ5NDFkM2Y0ZGZhMzhiZTE4MjgyZDNlMjg1ZDc2ZDkwMjBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgQXVnIDIwMTggMTU6NDY6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hlY2sgZm9yIGxpYmVnbCB1c2luZyBwa2ctY29uZmlnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHdzY3JpcHQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworSW5kZXg6IGdpdC93c2NyaXB0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvd3NjcmlwdAorKysrIGdpdC93c2NyaXB0CitAQCAtMTYwLDE0ICsxNjAsOSBAQCBkZWYgY29uZmlndXJlX3Jhc3BiZXJyeXBpX2RldmljZShjb25mLCBwCisgCQljb25mLmVudlsnUExBVEZPUk1fVVNFTElCUyddICs9IFsiWDExIl0KKyAJZWxpZiBwbGF0Zm9ybSA9PSAiZmIiOgorIAkJY29uZi5lbnZbJ1BMQVRGT1JNX1NPVVJDRSddID0gWydzcmMvcGxhdGZvcm1fZmJfcmFzcGJlcnJ5cGkuY3BwJ10KKy0JY29uZi5jaGVja19jeHgobWFuZGF0b3J5ID0gMSwgbGliID0gWydHTEVTdjInLCAnRUdMJywgJ2JjbV9ob3N0J10sIHVzZWxpYl9zdG9yZSA9ICdFR0wnKQorKwljb25mLmNoZWNrX2NmZyhwYWNrYWdlPSdlZ2wnLCBhcmdzPSctLWxpYnMgLS1jZmxhZ3MnKQorIAlpbXBvcnQgb3MKKyAJc3lzcm9vdCA9IGNvbmYub3B0aW9ucy5zeXNyb290ICsgY29uZi5vcHRpb25zLnByZWZpeAorLSAgICAgICAgc3RkX2luY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZScpCistCXZjb3NfcHRocmVhZF9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzJykKKy0JdmNtc19ob3N0X3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUvaW50ZXJmYWNlL3ZtY3NfaG9zdC9saW51eCcpCistCWlmIG5vdCBjb25mLmNoZWNrX2N4eChtYW5kYXRvcnkgPSAwLCBoZWFkZXJfbmFtZSA9IFsndmNvc19wbGF0Zm9ybV90eXBlcy5oJywgJ0VHTC9lZ2wuaCcsICdiY21faG9zdC5oJ10sIGluY2x1ZGVzID0gW3Zjb3NfcHRocmVhZF9wYXRoLCB2Y21zX2hvc3RfcGF0aCwgc3RkX2luY2x1ZGVfcGF0aF0sIHVzZWxpYl9zdG9yZSA9ICdFR0wnKToKKy0JCWNvbmYuZmF0YWwoJ0NoZWNrIGlmIC0tcHJlZml4IGFuZCAtLXN5c3Jvb3QgYXJlIHNldCBjb3JyZWN0bHkuJykKKyAJY29uZi5lbnZbJ1dJVEhfQVBJUyddID0gW10KKyAJaWYgY2hlY2tfZ2xlczIoY29uZik6CisgCQljb25mLmVudlsnV0lUSF9BUElTJ10gKz0gWydHTEVTMScsICdHTEVTMiddCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzL3dhZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvd2FmCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA0ZGRkOWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzL3dhZgpAQCAtMCwwICsxLDE2OSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIGVuY29kaW5nOiBsYXRpbi0xCisjIFRob21hcyBOYWd5LCAyMDA1LTIwMTgKKyMKKyIiIgorUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKK2FyZSBtZXQ6CisKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisKKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCiszLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IKK0lNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECitXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCitESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKK0lORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKK0hPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKK1NUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORworSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCitQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyIiIgorCitpbXBvcnQgb3MsIHN5cywgaW5zcGVjdAorCitWRVJTSU9OPSIyLjAuMTEiCitSRVZJU0lPTj0iNDFiNjliNDVmOGFhNDQ1ZGNlMDY2YTRhZWMzY2RiNzUiCitHSVQ9ImZlMDNjNmZhNDcwZjBiYzNjMDg2YmFhZmVkOGM2YjRiNmQyOGEyNDUiCitJTlNUQUxMPScnCitDMT0nIzQnCitDMj0nIyonCitDMz0nIyknCitjd2QgPSBvcy5nZXRjd2QoKQoram9pbiA9IG9zLnBhdGguam9pbgorCisKK1dBRj0nd2FmJworZGVmIGIoeCk6CisJcmV0dXJuIHgKK2lmIHN5cy5oZXh2ZXJzaW9uPjB4MzAwMDAwZjoKKwlXQUY9J3dhZjMnCisJZGVmIGIoeCk6CisJCXJldHVybiB4LmVuY29kZSgpCisKK2RlZiBlcnIobSk6CisJcHJpbnQoKCdcMDMzWzkxbUVycm9yOiAlc1wwMzNbMG0nICUgbSkpCisJc3lzLmV4aXQoMSkKKworZGVmIHVucGFja193YWZkaXIoZGlyLCBzcmMpOgorCWYgPSBvcGVuKHNyYywncmInKQorCWMgPSAnY29ycnVwdCBhcmNoaXZlICglZCknCisJd2hpbGUgMToKKwkJbGluZSA9IGYucmVhZGxpbmUoKQorCQlpZiBub3QgbGluZTogZXJyKCdydW4gd2FmLWxpZ2h0IGZyb20gYSBmb2xkZXIgY29udGFpbmluZyB3YWZsaWInKQorCQlpZiBsaW5lID09IGIoJyM9PT5cbicpOgorCQkJdHh0ID0gZi5yZWFkbGluZSgpCisJCQlpZiBub3QgdHh0OiBlcnIoYyAlIDEpCisJCQlpZiBmLnJlYWRsaW5lKCkgIT0gYignIzw9PVxuJyk6IGVycihjICUgMikKKwkJCWJyZWFrCisJaWYgbm90IHR4dDogZXJyKGMgJSAzKQorCXR4dCA9IHR4dFsxOi0xXS5yZXBsYWNlKGIoQzEpLCBiKCdcbicpKS5yZXBsYWNlKGIoQzIpLCBiKCdccicpKS5yZXBsYWNlKGIoQzMpLCBiKCdceDAwJykpCisKKwlpbXBvcnQgc2h1dGlsLCB0YXJmaWxlCisJdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKKwlleGNlcHQgT1NFcnJvcjogcGFzcworCXRyeToKKwkJZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKKwkJCW9zLm1ha2VkaXJzKGpvaW4oZGlyLCAnd2FmbGliJywgeCkpCisJZXhjZXB0IE9TRXJyb3I6CisJCWVycigiQ2Fubm90IHVucGFjayB3YWYgbGliIGludG8gJXNcbk1vdmUgd2FmIGluIGEgd3JpdGFibGUgZGlyZWN0b3J5IiAlIGRpcikKKworCW9zLmNoZGlyKGRpcikKKwl0bXAgPSAndC5neicKKwl0ID0gb3Blbih0bXAsJ3diJykKKwl0cnk6IHQud3JpdGUodHh0KQorCWZpbmFsbHk6IHQuY2xvc2UoKQorCisJdHJ5OgorCQl0ID0gdGFyZmlsZS5vcGVuKHRtcCkKKwlleGNlcHQ6CisJCXRyeToKKwkJCW9zLnN5c3RlbSgnZ3ppcCAtZCB0Lmd6JykKKwkJCXQgPSB0YXJmaWxlLm9wZW4oJ3QnKQorCQkJdG1wID0gJ3QnCisJCWV4Y2VwdDoKKwkJCW9zLmNoZGlyKGN3ZCkKKwkJCXRyeTogc2h1dGlsLnJtdHJlZShkaXIpCisJCQlleGNlcHQgT1NFcnJvcjogcGFzcworCQkJZXJyKCJXYWYgY2Fubm90IGJlIHVucGFja2VkLCBjaGVjayB0aGF0IGJ6aXAyIHN1cHBvcnQgaXMgcHJlc2VudCIpCisKKwl0cnk6CisJCWZvciB4IGluIHQ6IHQuZXh0cmFjdCh4KQorCWZpbmFsbHk6CisJCXQuY2xvc2UoKQorCisJZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKKwkJb3MuY2htb2Qoam9pbignd2FmbGliJyx4KSwgNDkzKQorCisJaWYgc3lzLmhleHZlcnNpb248MHgzMDAwMDBmOgorCQlzeXMucGF0aCA9IFtqb2luKGRpciwgJ3dhZmxpYicpXSArIHN5cy5wYXRoCisJCWltcG9ydCBmaXhweTIKKwkJZml4cHkyLmZpeGRpcihkaXIpCisKKwlvcy5yZW1vdmUodG1wKQorCW9zLmNoZGlyKGN3ZCkKKworCXRyeTogZGlyID0gdW5pY29kZShkaXIsICdtYmNzJykKKwlleGNlcHQ6IHBhc3MKKwl0cnk6CisJCWZyb20gY3R5cGVzIGltcG9ydCB3aW5kbGwKKwkJd2luZGxsLmtlcm5lbDMyLlNldEZpbGVBdHRyaWJ1dGVzVyhkaXIsIDIpCisJZXhjZXB0OgorCQlwYXNzCisKK2RlZiB0ZXN0KGRpcik6CisJdHJ5OgorCQlvcy5zdGF0KGpvaW4oZGlyLCAnd2FmbGliJykpCisJCXJldHVybiBvcy5wYXRoLmFic3BhdGgoZGlyKQorCWV4Y2VwdCBPU0Vycm9yOgorCQlwYXNzCisKK2RlZiBmaW5kX2xpYigpOgorCXNyYyA9IG9zLnBhdGguYWJzcGF0aChpbnNwZWN0LmdldGZpbGUoaW5zcGVjdC5nZXRtb2R1bGUoZXJyKSkpCisJYmFzZSwgbmFtZSA9IG9zLnBhdGguc3BsaXQoc3JjKQorCisJI2RldnMgdXNlICRXQUZESVIKKwl3PXRlc3Qob3MuZW52aXJvbi5nZXQoJ1dBRkRJUicsICcnKSkKKwlpZiB3OiByZXR1cm4gdworCisJI3dhZi1saWdodAorCWlmIG5hbWUuZW5kc3dpdGgoJ3dhZi1saWdodCcpOgorCQl3ID0gdGVzdChiYXNlKQorCQlpZiB3OiByZXR1cm4gdworCQllcnIoJ3dhZi1saWdodCByZXF1aXJlcyB3YWZsaWIgLT4gZXhwb3J0IFdBRkRJUj0vZm9sZGVyJykKKworCWRpcm5hbWUgPSAnJXMtJXMtJXMnICUgKFdBRiwgVkVSU0lPTiwgUkVWSVNJT04pCisJZm9yIGkgaW4gKElOU1RBTEwsJy91c3InLCcvdXNyL2xvY2FsJywnL29wdCcpOgorCQl3ID0gdGVzdChpICsgJy9saWIvJyArIGRpcm5hbWUpCisJCWlmIHc6IHJldHVybiB3CisKKwkjd2FmLWxvY2FsCisJZGlyID0gam9pbihiYXNlLCAoc3lzLnBsYXRmb3JtICE9ICd3aW4zMicgYW5kICcuJyBvciAnJykgKyBkaXJuYW1lKQorCXcgPSB0ZXN0KGRpcikKKwlpZiB3OiByZXR1cm4gdworCisJI3VucGFjaworCXVucGFja193YWZkaXIoZGlyLCBzcmMpCisJcmV0dXJuIGRpcgorCit3YWZkaXIgPSBmaW5kX2xpYigpCitzeXMucGF0aC5pbnNlcnQoMCwgd2FmZGlyKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorCisJZnJvbSB3YWZsaWIgaW1wb3J0IFNjcmlwdGluZworCVNjcmlwdGluZy53YWZfZW50cnlfcG9pbnQoY3dkLCBWRVJTSU9OLCB3YWZkaXIpCisKKyM9PT4KKyMfiwgIiYaNWwL/dG1wLXdhZi0yLjAuMTEudGFyIynsvWtj28axMNyv4q9g1OojKbAgWpIvaXWCtI6tJD5xJD+W07RHZnEoEpQYkQQLgBaVJu9vf+e6FyMppOQ2aZ/nNG4jAovd2dn7zOxcbgbj6eTi4WBeTqqsmPUWt7/6yf/tw7+njx/TL/yr/R4efLx/8KuDR48eP3q0f/jxweGv9g8eP37y6Ffd/V/9E/4ty2pQdLu/KvK82pTvru/1xv0/8u/XH3UfLsvi4cVk/jCbv+8ubqurfN75dTebD/PRZH551F1W473fQsq3z96cvDz54qPui7w7z6tuNppUH3WvqmpRHj18eDMY9yb5w4s8v344mY+yVe+qmk1/neYX1WAyB0BpdZWlkCsdT6ZZpzOZLfKi6uZlXGRxeVt2xkU+697QdOzKx2+qybTs3Ezz4XVCz73qqsgGiFbvFSSGUacqbo86W1R2WN0uslLLnlXFclgtAfgjKqAzncbDtLyCD/C7NA/TfH4Jv5N5FV/cFtkYnm+GV4Mifn368uTt8Rt4xyydbDXMFlX3JYE+Loq8gEqH00FZdp/BynkLKyfML77LhlUEH7ZG2bibAtRJlaZhmU3HcVkB3jP6uIUJPU5I+AdTuSH6OcM6ysTJKkmYRbB5VlXF5GJZZYoQ/FsjKUqmDh1CH4wkIzSaNwWse8axWjH2FhXq+d5g+NflpMigs7d87HtcGMs1Po2n0MtcZDyZD6ZTD2SRTbNBySARC5wS85zQYBSKDIZu3vUgch5ThCqwJdorx5yTclBVt5uBS56ok03LzIzt89PTNy9CM5OoNEzfbDoq0+Q83P7Tts6qKA63/2zf+iM04ezrZ69epW+On7/dIynmVTauPEhv84X3/mZyeeXn+CyvqnzWUuHz05Oz01fH6dnzN8fHJ+ln33z++fGb9OXJ56cbEDibfJ9tx9RaBP58WZR58TqHI2GSz50PZsaV22YZYfq3sMLym+3YthZTvx6sJrPljD+6VTSQff7Nm7PTu7AMRgQk0HULVQQXf5yUk4spJcIiRsgyeVPcDJLlfAKzPevokjkZzOxq4SwwAaBQjsWT6WB2MRp058vZRVbEMHcGy2l1xK/dwXzUhUwhv0Z50ZUMna2zty/S02/evv7mbfrls5MXr46TvYMDTj5+8wZaZlIPO1u8HfWus2KeTR8d9r7IqrNq9CWAn2a9QXFJu1hyLq3s31GgyEpqhmRvzf08n5f5NDsbFlk2/2w5HmfFy/k4b1am2164fhZF/Q+qwqLXjt2ZKfo2W1VmfrWgpvOtf38gd1X++WQ6lYKny2qxrJ7D1j8YAh30bSsCfDQ0+4pWh77q7Ox/WH0fjOt9+uqnxPX+3WqHw99INs432RfuIyrrQ5G454R3dqL7oNM6xz+ILmghCdZTA/8QIyrgnvz8bUhtSK8mZZUXt8l5H79c0b6ShKU5cJPkMMLNr76ddWELbOx8BvjVkDsq2bR9hVxbZEqlJRCi4zzZcIw5mYell9k9RijX+o3KDl/oYctkYOiCj5wjNPNicnlfFIvk/vvkBiScKl1MmGBJiiQ5kIlVEsz0goCmE4XKE+wnQcXFwqWh5IPgMQTSrkink7mQlQvY44TyncFZnNC7OU35K8ykfWobdy0vh2Z7qObJuEtwkgOe7lhTikxclTC9th8zmF5ty/hzZPPDzL6srhLJiHRF70+0rKYG/OEa8O3A//R3Vrq3BhwjQ7Soj0Rr/r+/DjzSyhQJ+SqbKxXRvno2HF+1SSNHZRh0gyh20IptO2RiedVH96vW7Hm1WqWVlkj90Krt7OW51z5/mVbkiRvvR3/vtJWKvHnL0OSTP5L1sXuwZrq1T+IPrIynzQP37c/Mvd3zeK7PB1t95E9sF7H1M9vDMQzvNbmjXb8xXqk/761brdE/Z1G4LXK755+yLD64clwYCyApU6YYGuviPvO/heLoIyoWi2w+at9RTb35Yl21MMtboPLEyqejdJGLBKVWLYAUYcbfOZ8FuKJYZtU6FG/jMlvEKz70evC3YnjBfwaEwUq3k1V8EO0dUBFNujVJ9+nfeXZDIyrm5T2bzMPZYAXLfBXF3kKIYvvt1v/25/aZds9OEQS8Tsmny1lzG135e+jP08pNx/FP08JZ/j7zxn2V5uMxtDuBnjWP918h69q2ZoPb1eo2DPCaTti9bS36k44/9c5y0dwrsJDbdaar9mqzwoM0ym/mHyMpaxOoaTau7ga1uhdaBUrmPiMp2BpY82xVtZPM995a23FfR6ze1VGLInv/r0FoXXcXlxeHF5ey0oauIDcMh/9xEH3yyWH0AzzhX/h5HH366WFtL2rZnyG1lM25XEwnldmY79NM4MCKpHG8ksgbGJoh8DddhC+Ujnb1UCkvOL4Of/fJ8JNHv+UcDC/Ev/+xvxqPx/vRD1S/Nn2490iKEoX3CAs/XlN4fwz9UCv9eB966bEDYZgk+27xBsdZa5YpdeCU+iHZX+3/1vv8uPb5t/ve54/bUf7tb3Ho5PXjfRjAx07C/scG+XvK/2r7E8IxE+Iqv1lLzDi8f08FzMRl30scdD95AiJxNRllH4bE/k+LBF76wrqYzYAZT6sB1vC34FlwJFt3HHwmz7j5xsFzeaM9Lw5eyCtup3FwHByZTSwOPg+OzA4SB18ER5YaiIMv5ZWwjYOx//pfwZHLg8XBV5rAwK4gux29OJgGR05HxsHMVIZvJSBiCdc4WMK7ISjjH7UTqvw6m5dJkfWgOxaTaRYG4e+P3q0OLt6dh+f7e7/7/X/2H0Th+WDv+2d7/92HaXn+F/za342iIGq5SsvudZemBKxIc2RZ4ObBu99wNsJbOdxIKJ+Da28M02AwnYa2KgYIZfRtC57T8XI+TGxpb7h7lxnsR7NRpAW4PJUxQAwUd5LKR8vI6ZylTpB5Z28GnXwt94eZZLvHRaEH3r+13MS0OaUaUrlv8aOsoGfCVsB6mwNLNB9SG2K6KZJOvjesbzH7KJ/Lsq3yUZ4jKc9lOmV4tZxfJ48OP/nkgNf1Fcy7Lmb7SHflUY6SWyTnKHOMH7lD4SxKIynQOcI/wj+7lJckuCh5rHeTsxcsxzHlbeX24hOAZSZnYc8HQuDTT3kfxHNzXk3my0zQhPoTAkrviOaeef+J7ndFqn3nha6spQ4trtsSoI/yZWUueGFtSWpWFCYVoYjgu6WMIzS/PUG3Sr9diXiHOuZDpN73kyVjo2GppqihgztbGX6wVLd2FLRIcj2hyoEoVogyRUmXsvF4OK+mMWIxyct2pQgaJlnuE6joviNAnZzjJcX7SQEUIe5MwdvjN18HcRBEqG4CqyAYLWcXkJDNBsMyoD74/MW6EXOSdWr5Vdcn3HIe+tOJGt1bzheD4XW4/SX82+Yu6E3yYTUjKj9/oX3Re/vy9PkX3748OfvvWIq5hfb5f1EUnR/gEtVDgarsmMucY/oBerg7KLuZO+vN/unNggTKd/5B/R9WuHmot1L/Av2v/f2Djxv6X4+ePv1F/+t/tf7Xr37593/DP1n/cF5MYOuZX/4cG8Ad+p9PDx811v+Tj39Z//+71z+pbKbAWKCuV5qq2ubNpLrC24gqm2XzytESLa+m2SM0/i6rCZAgxWCYXcAJG8NBPs9RfzTGQmuVSGOgi8aTS1QHfZVflvEpnbOaDCw0PiEjEhMhU8afLSfTEVDDo6xzgY/paFKkwO4WBTCbCVLJnXmeDqeT2YXyVGVyHgy1mqDfEfWwFPinZJuAbHeIh4E+gLYVt+kiJ4HQsijgHWvIhnhBEUM1JaAXQ05IRKIEke7RET3NiakB6lYw7n377PM/Hr85e3l68lEiJZFWoCKkMBIG3w5IPyMplnh3hzXZoIOKQXGLryMeztmgGl51Q4MFfIoCg0qzMsUOqVggqrLVpCM0D+BNc2Iz4XvC2Wx6sZxTur5PB8BbXlFSoyc6W3Qxte6jjkBSJxxPTp+/evn1ZwF3FHJdiOKguHwffUqyq0UO3E41GUzTG+4XBLEYVFe973JktxpDouWBgMMWA1QtcAH86Xwwy8IGzCgxjfwWKPuXr9+mn78EzkFIXSo9KXE5tJQV8q+6MpjN82KGD6EmIyl2aypmEabpOi0wuCgJIyn+4SsH7cC3BfNy2ky6I8PRHFYr0wjgKWBdpkN+IyqDnBcR9nIoz7GuhRjGI0qgNF56lRkughQjKZchcPj5TSM0zOQ8v5lTvTxIAqBX5QtsukV+3byBjNw4W7DTaJEDGBgBBKzF4dUrDu+UHZeCAsH8KI25RglMY7kfqaT3liW9TioCuu1RG0rc0cJrFdE0ehx4eejWa+jpZZGYVndEHCMpiUcOwzAtaaJOJ8DCTCM0nKYO+3B6ZpXAMCPrc7nbwAtnbQMX3V3OUZseJUEfBbEjKQPMZXPsoQQGZyc2DyMpEmAY1sRsmj3zxHIWI+yCXFB6MCM066sqrsOORNgwz7FhuIdTq87xqXf2Fnjg076j73bMqxzPhhaNNytmwmFZIcuImMjMwSmps4aeZSM06NDI4K9UoOXJOPArmyBMyhT47keHrswjKoYuMeW2sOXO+JoRrkvMTHdxBxyaHlg127/VOsxu4+viOBRjQa8mCNkjNPMauDnIOcVp1twMIzTguSfz94PpBE4MGLGuToed0kwYBfr5IymK6+THFAFVX7/OiPgZdEE7w+Rn0CXrjJ23gnQEazWqrkDrXuxM7Qam0EDcUSApqW+5drHQ50TWqcEEZwR+UaTsfqJZ6udOY3enJVNDKW5rQxSZjUvLwmFcVmXoniXOTnhzlU1pk3WH+e1VVmbdQZF1gU7rXmbzrJgMtUg3nOddgfZwUeSo0dod58v5iMXfW2ajL3qLAoiaFKuQy0AlDujuqkaVHHXfLOddotoGIylwOsqKLq47JhkhIyo2KppzISxoWC/dvasuru0WHIFYae2dOn0iqw66aniFm2iti6NOy0JrYCMqvaXo1rdSi4aF2IoBXlPMoKHpLB8tgQbQ0TIIMCnagyM06clIhQibBfVzGLw5fhHEWQ/otIscztlZeVnr5rIqQt5mPSTWypxa2yq40dK/T3sjKoEu0wFqC3EcHWGdh9GhTwTAFMPcNG+Zih++5qR4gTsjbniagtXC9AuDFtrfsLX/aR8JTT2tQ5g1f/sR/x9Qnb1qVdGMXiRcUe8M/4b1r70SwBOfAt+qySwLImkpp338BLtY9lPd581+72NgjzdDO5h+GF3o4cQjKoIEfscbiRg25mUWVxcJ9+PQuZtuHwL5BFCAwCth+gHMbBZWF41rmmIwod38jqmIyNKEkfn3qdwM32OKuhMt62miN0e19rPbEtA8hmSWz9Zwa4pN7zn9/Pmn8L7Kbi/yQTF6CbO6KJYyLM0WBSZDNiM0fHBPfxt1VPHAXeKIQ0rU95FliC7lq+WI4PBslmgW6KFMgj4mJlvHKDzAL9oe0OaPZ1YCL700xcc0tYclvuOybiMpT2EtD6s0lfvoIzTvz8N6rhiLx1hNx1DKwEKWVYx/8N52zk9X2ZBpYEXt2pxaAfK1wV0oND5iKbEjNJ3DTmSgoYgjKS+sPxyilmyDqrzOBwOVgi5MUrAhrkg+0r3DPTktPGmzVTZEBQd78CtZ7XIh9TRVt3TkEgxAMzbog/Wnunuok3aO3dHwQplm2R2NMtm4TdP8MsWNtJCeeovPoXzUTqxhyh9RvqLAzOFa6ybnahm/0Ovke/oktz2QXG8Jj0ttpDru7h3y3I2UXWsbBkUtaYwH8thEFGEvtfagHse0rwdEC80n5VU26pbL4TAry/ESWtUjKneQ+tFSsdeddYTN8uCBM8sUT+5QyFtsNqzmEPcXWL5FGeP+UkYw+XOkF6fXbk5a+MhsEKVW6rGAtkcj5n7DoJfDftmb5UP8gXEJIuG6xrw1uTQv1TrmE8mySJClyFDhJBxr16xhiRyi9nm+nI5ogXBZIF6CWMsbHlEn6IvPkGCMRYiHXch3jIqERWG1hu1mXkzpO5JV9opZVWRZGAwfwyYYtJKXVMwbjRDGEOsOgoCrLLskQRSisyQZ0mhQIyogA2/5nC1F3Q4UEV7H4+Xcwx4vG6/d28YaK+2d6VmPBKsfJfTTOz45PT556xztG7r3evOuZOQpjhwj6HFHmyEJUHq4d9jlv/jyiN/gJxBNvchQS9eupGWl7HyjQ7zxiFjgAjUTts4mA5xYirwuEFOpCKMwp5uDZEXSr60imTUcRLPXBiPqM2EneSvq3CGDGSd3S1WccV8nsRlvmAt15rAF5bGjPGCpCYc1RwUJTRJ2vg72ZUO00A7ZgZokdXj+DubKddyL89pscLI15oUlZNxcdeGRMju87v0huW4dkDoOi9hsKFGHjUZfQFvMdiS/siMq8OmJCx+Y9OHVBFabwygjP6x8eZkviyF+HWW0O+D5GGAvwTNsAuZ5ML3MkyMpVk7v4vvDIyknbZVS2t9+5C1Fz0+jaMP6pBlqz2XheV0msp48jUhmzkpojDueo1iFvpoqhM8BrOiaaGsLc/D5SeVRAcIkhe48p88ojBc6eIOJrJ+VAUuhOZpN+d97s8F1luKH0NTsVoxfeqNsmjGpsf5c2KLz0baDXkORI3HvQPe7mxmNjuyN8JhIt8BGlM1DqldF+lEc3BwFuxZKkS2mwAQJCFSiidwd1jmrZWBGqBRYEFLhKobHSGrtIyqnuajgkQavqSNJgu8ni4DPDB43eJdx24LHRF57/z1ZfI5wGygHeGGwKICSgeVis798nb44/vzVs7fHL9ZiLVOnNjdo1Hhu7AYPg90VIypsirKB0B9WpiCgSlFDXDmIubDjtVhhWbdvZKuhasZwNk/D4I+0v2Fnddk7IyoJ2HjJxfRw+T3/rr7HIyoT+9OdWyTTuBqUV45Qo7waHD55aiear4CFG+JlBocSLn2LlCZ2Qy6e4O3eDj/zsODOHo6ng8syCYoLmC69q2zFxcIaIXqS3dhNiPal0VF3p0ShsFnk3HdcXhY7KS/BFKNOJuVNrJhmtxDh/vyQLcKdmGxnQ7OTCCc78AYw0WYVqdVR/2YV/BDeNFMWOLj+nKGiRTaerO6eNAZ4bzkZkWYnv116b0uqIMAjKjCwWfxE5yM0US8BVauvuurSIzRfxDQSQJiNec5jg6A/KDcBJcIc2O9k7E3BRr76CHBrza6r081VpLT5Nu6lbpHaArR12h27UaU/Ye7etlvOA2/N92QT1NOMLoTNlhWbJ0tvdesoKNYWbjvW5vtGrIHrJnQv14lQNOHZ69cnz74G/mOeYwEWKcn9+92l9VY+OOjtB1ETx0Tw2CMq9oJdgVrrAqc92gXQrOnmaYI57h41zJWgNgU9LUdZWmSX5W7QffDgIRH5vQf42HOemdq36eblwf9Hf2HD+o4f0GCFnxa3Q33I+eFicM0P5c2CICFFtnfzIKhdIzQJmcfLbD7iyYVLlRTt+fSv5TVq0vORq9uOIyrchY022J2PNh8+zW7UbmfKoNHvDv1Ajxv73clsSZnBvEovp/lFGGCnBDGNi1lINNqRszK4FuVMHaYUSSI4zPDkuhhMp3QnU2SYidBQkpRJ0ZLIUKKBLJn7HCWCIT6RtEHpUhIUukSrJvwTCFKxUSbEZPMi0s+ggSIzsTqYLZT4H44v+aq9RZJmS6LuA5spQHbSZRI2dnMRb1enmlZdQwypskYXal55ZONegN5rqBPPWVSHHYe3NVaRZb8fO+pKcUDyBfgly4fpFJ6Wc/u8tzfKiMNNgl1ufH8X8LFTBeriLuP+axD02YyoqNhS9nTOeRRtG4WPp1/lCQfkdavCPR5t7fnIR1wRP62pN7se4XMY9PCTkCa18yKSXmKLxeZgC1BZEiKaLJcXwGuh+K33mvBGO53hzaj1RIpg75pUSuUDEHuFUb9VCe2E744H0IQRqcMRJ4ec8Q6UrikfyUWvonk/2CQ7zEbZKO7CWuVF3r3JgDJFWy653t9xmu5Lstr70YivaPjtTkHvJU5Rl0cVM6uyG5odBCldZk0ju18QAbiscjNRQ9kD0llWXeUjrKR1Z7CqIylcrmehuEeYD42LdzZruYzylOEYjQdH0tKi9VJTb2jXgLm3HIabU2P5+by3iIl+h9k4RIQiIouPkjYFiWZx5zrwim2YrKQXwTm8mKvKciWr5CpFmVgYXsX8jvzFOBwzSStqP5vVetpwWqewYnNefUQiImSaeB6YT7yJwmrH75yEixz4LmcjtHRBY+IjKb8L7N7FRVYEsgPNFvUrCXMZpMQByZD4m6C6rkTiZK0Jv2uXA9x5nrnceqiApD+YbcDcND4F+YMjP9uwXvyPHdKd7dFfnWnyKfHX8vqM0S/2Af9U/f+3g/L6i2z+s5j/3KH//+jw8NGjuv7/wdOPf9H//3fw/zzMF7foATov8cJqWOX5tNUVNE5QPkhYgV/U9K3+Pqnqj7NBpVftcs2Nu2CIrk46Xx4/e3H8Jj3+09uz5DzoXeFV5NViQT+rFf1cBX1hUSqoL70E2s66b5wBByMq7VD4eTECkmmUot902muROlgjKTOyrv4W948PruMHD65vLC/DDBPzEyqFAVKLhXlMpMLOWzoZsMmwl5ZemfK6NDwJai9cIyllD6f29Y3DkW9S5KUck9GKj30jH2e7h7qoE4An1zfnVEnfg6+f8QX6o1A+y4Fosoj8fcuXyLvCwLpXTMTPFIeXc8zY95JI+IPJ8X60e3CH30y3IN2B3FHRQROl6jKF73CSLueVLXJ36v1wuwf0A72+ym5RO6xLg96DKTpTm2HV5KH5J9nM3AT2XaamI5Xd/kQXA1mLZLBAYN4zm/Dp9g7TCyTtbRk2A7rIFh5so6Fu2Vky33a1jpCv7artL8wh5FKJRxX2AQXDMNUhgX/l6hdAq67L9k6Z7JSA5CpGBMJLt/WrKHKEHdsjKRoVKbhhUGQ77m4zCQ8jKaMjKo1DXgjYv3q/dc0QwX9zckOtuduFip4Z+51yRd9NgbNZxFMRqqgdIylqgK4iv585K6uWW2kqSyM0cSs07fZpx3rWUvpS4LliLStILN0Wx0ZtxAHDeVk+XyMpS11Ut6H2U6zFpbernBkLAoaTV9g9pzMgFc2wPWtuSFPFgRa6Fr52xN2cgFaw3owJ8HMGM5DcJLgjKZQX5FlCuZRngUWGcjiRQtP+HUlyb7kYIyqAbaVz6zx4EFi5lNnXJfCB02rzLWosH/3CS71KGPCqr+7yRHTi1m3GWO0fEBgetz06CZXFc7hQqYRtx4CHJ2IjKQUR3b0u0BGj7qDqotuOqgu91GVWAYatO6l+H8Qkq6FjkrZYfEqrCxFC4pvbJv1qdwPc0CMpebH7gM/QuESzcUORKzM7y8Ar4QHukfps6SiSUGa14zBspp39IylZN5ZBxDWRInBYZChRz9ScaStfyuYmTj1mrG6fITNm3Q8id+g3CJ0VSAWZf+LNcSVTezPXHuar7HajHcwom3adUrYD5sbqwZowYUbHqsV01Plt/+guUxbbM6vISWvtncnYVoWOTM6D57dD6KZRVgGpxUcLSjdk5jBLiFaNTF7Q+Ra/N8Ponm4ITxEJ9mAf7w7GFSrpl8FOeB270lMWmyqUvjjDaJedvZvLjgjgo8gnxUgZiJfHKLtYXoaBHpdHtJugrAbw2BmxBDKeyEHhLV4xTrPj/T6pHVV3EAhrEGdlfVyggy7r2iBybDoxqKB27uNgZ2VVshut2PsUGxDujCJYvh7+W+/t1XBr42Ewza2w6k3Ijsm7o56IV8A31O6E+WTAOyM5C43qmEhrmRz3+yMqNzHIbXUPr60+mD1dtez5tbuY3t4u3C4lzTKyiiMqzZm1EQ5t9HaX1o89TJdrldZR2v6cVZ/woh/GqisFxdgiRJEiDB/wQ11kj34fAW2C3YLUW6k0iCjXYu/bYzYuiyHR7HF1WfGDYTcwZ+Ju8+dYoh8aut2l2WMzYRIVkeJpUgzlthmg4Ck9mS+WVRlCuuSAav0cObmqLUP4EAkShuTTAwkQ9DgZXc/44swffJW2T3N1VIhWpzR3shu8FVcjNCyM7kFo+kSmDLdrBEhHJOdD+g8y6nGruZW45uphsdTpTX93bmRHbriHf5qEqmmUUhdKcfikDzTAkj5SwGPFBtNpIzQJ5Tn86btMmUHLKVXj25Syowws8WduIB1eAZPPIzQWQRAXaM1A0yMqvRBVxWAus4+8siXBZ6++Oca7R5wxcE7SEx+Z8UUGw4QMcEwbNz5AHRNAgiGUw8Gcn+RuKjWMaVxeZdMp9wu2X+D79BMnRvwV62x+ZuMQxzzCbEbYLozvUPLCoa1uPCCLWmo7NVwayQ7oBAf+Me2UX20s/0iD6S83E/9Io+ivLPWVoyM0YzZLpCWoEhrC1Kv3fJ/IIljvLNp1tiM0wpqA4EUYDNM+8RxVIp3u1DKh0cbELk4VWHVlTxriLi5IIhSueeuGiTG/zBAfYMEEq9QMAmHVk01B1/m1Ekdm8nxE42t2ZcDzEzTDMd8jz7cciVB8YL5h8G37GSI7vn983BrfemuBu1QRoLZLTDhZ39oJaqUlmkr7r9G801S++Dd58sQFYqY8yscSp+fcXRE3RTMYOkY8LfRotscW0M48m4wMX16J0YLskFtl/Siew87QTUuhkdzOGBbRm70SwDcCJjtl+OBar+xgMuUG6D2hUsvUYumaSXricOjs0gPk3Cvbd/UZEB19QQQIN15/2s6fIylDeE59LE3XEz3t44cTINQiG5H19gvBl69IcdP45zYg5S4X3C2cjSMqcLY4F32YotkcFZJ+IzTcVy1IuxOesVqP4x/8ed8RmQPuZqySEwPrFJtTB9FTjpMS8Q+qcjpaxahCROmsTAQEA20jndrZjXBJR+pEd3US38CfvrOm/QNrWlYtApCVQwOgQjNWK0YrSMMjKZ1JvbmKA9Y0szlXnhohcHA0NnIpaLpBKBmHODKeM0bZJiUE0U3HrGQ+fkTmxHPSbkCslbFw+Ek5nXR/my06f9DNJHggVkyijpEyeCO/cUXqfgN8qQ5nCeJz4gJpj0GVCz0l+LMRWRl2hTBzTsgaYn/w95XAR7KGOVIOBm/pTB9JzOEIntQ+wojh/Nw0rpxb5yKL6HBqull7RLMEupSEV8PEyJqqDwfDq8zSkPRKKKcIp7OeMd1ckERAw6tZPvK53YDSAnVGyiRQbcgwLYhFpMAkVyMqBqYBjU7EJkJBkqoGBJJMLen7QVHWMmASTQui+lA8Xq+EUyMqEHwHtuwmL0YtOeWLyb1ExzjUQ7W8ppsjKX9sYkCkX7YQDquW3fkSxEz+cnOhSdMEFns6yhZloqteCy1K8Y+EWWl2axFk8eEZvgLGNXUOK+hnYhdHiolUJnxj6ZLYaXCskGPq5NhBOOJOk5slQMb0iSsZxxyUeA4Q+5128RdLv2TtDNnvOnEiBlvepwhlFYsYwpJV1+AL+joOgYyKfE8yXYfesiaJVMIzHcBshlvm71FTXE99Vy0XUxUrEKLUw7T0TJruggY1+ymh8ja/q+GBEdzs+Gi5uzgXHh2H43B5GWHpZXi9uyRIwx2Ebo9kA5FsTiGZC82CZlWYgpIihZ3ZQoWpBU4iQlGJhMxkbGmPeSh24D+YO2cfLQcz6PjR8SVMx6DcntZlBnZc9fj1dlLzWVYXL3Pr+WlkdNYVTJMmMOLT+oG6ZU4fLYwbqpiZWPs8BEZSo5tB2Z1U5rru95HK+KSFtePVCLbO6SvseX2/H7kL6wt0y67KBPJ21nOZrsFtQBQgIzRa6IREj77EpMgDrLLAp/rK64YsRQ5rh5qRPZ28O4jhLkqd6F1DII/UzVejUFYUXiF4N4XgudO8C0LzaqzKnslYVFKF3uCXlsKD6c3gtqyV5UTY+OfWfVmtTjrDnWLrbwEjKgXo6hE4z85tmMy1O68TXUjntWvEtuvFlntKhzJt4/3tJSutirxIZQKHIyrhGbkmyOYV6vlOIzRxbdICchW1XeS5fLV7nff38OhemY2MeryB2OFj9vTp48cyr9tpVG/CCDng07YOzRq16JU0IA9vRjWwRpcZHupMIzR+hwlqtXU4qpXcw8rXpPHVlMOT1SGUy+yvgfpK+esygxpSUqxxaWF72UJm7/b1fO+g/1ES+CWDI+9+xtwG1XLV7K1rnZ39lUOitRDctcy4Iyqj86DsvZPXarVAOglsWyTQ5jtJuX1vglb6zZP9lqTnqKVJWydNag8IjVcHuY3HXhiLP4TvbnajPwQxJH6tZsbl8qKs0sUwpKMU/yjXIyoIQA8t0Ks5mWSWa+/C3dPOJdf9e1bK6VFNrURT7WRTqkn8cdwLh0mZouC8jsUkZqnkfDnDnLKzqdxMdxIbukOW1PmkzwaRpK0cBzcXgcS4h9qNn75aAVcvhFu6xAPAq9LLF4fk5g/GYoAZY32b4ZsT7bU5Kq6ihShlbegbWI01lYU6ITLWXu5Y0kNtFe6DA/xQ8AMlcaRT9qUXTRTidRhqBqAjKabQF/O9A7ZX3tAonsS1piMqW4gsk1FiRynBg3Qpsfk1TmDLGy9oAs8OzBv/3SMq+YCBpDYM2SRXbLh3Iynczg5NQaM3xU4/FtOQrii5+ZcJvfQui3y5kDZehgdNvShMdKm+7Z0d1H0qt3cu2fOWpJPeISG0rsG05eD2Aj8R9nWISJleVg5uVB+V0bDaqN40EhU8s5UYhQWUtq3BZoV27irvyObvz1d97623hOYDrdCv6dcjyECu+OHZcy5TuxWmvChvMflGKFVkLXszdDujzs8zj1p4gGJwQxwjKlNkS2Deo34CveX2fjZtiBfKyWUQbRwCUSdZP3Pp2J5cEttoN2nUB22iKVY1Ohbwulyo3ZUI7j9oE4MioUomdG37G1rEEc/FyutDd5I74Jsyfi0kQ9owRtYamcaJRUtbwIjjcCSYE+1W8IKWOxWvc/Eh4v4jNCWn2Qg2rQOr6QIjKfodv0lGeFy3g571jM3/H6xcPugthrCpC6mG1PBi2LyFbGX+AqU2AsoX168FETRqHEoFSth8ICMqvom6D37zt1cvP3vx8s2PDxfXl2x+8hBO9fXXaQ6ZFCr6kUa3cYhX/HS3pDcOXClvXWTNlajEuhjWbqQ3SaprzF8xrF0fILRz+AODjyM0IJsjKStj2QYYytYjKSO0c/jTt/7Vi2H0Ece3umRucc0jKoC6EwaC7CIruvlYjIQfingaZy3eBgg1QpM4Jpr4+8mC2qgVGH1FcTR0u+niYb6cTtUzDvqPba1saxBfsCqBpakavCtFrreJtyZxlSSMwiCpsbFkPc7SlwvnG9lQonKK42Hm1qXAav4hLhwjNFO03Zo8sGv0t4bvbuBXEz6RnMwr648+Qlg1q7h1qrhI1nPyt62V3DYquUhu7SgPNiMq7rAh/tKB9e6U1u9OQQwj77l+uq+Iagvl5d5SurYx1CMpd/js6/qgLOtalO55dpPFrWOcoqN3UVNFMHH+cKsSVSM0+7hLJi1M2Bh/2NC5d22OiqwoLED2f0hXAX79ffXi/jKPmqTiF+O8f579nzV3/RfE/3l8cNiI//Pkl/g//xb2f3mJ1n9ecB8M5kPiEOPFuc0g0Fr+sVWgRvQh60AjKubDUXz4vOh8++zz9Pnpyecvv0hfnX6RuG4+O46RN+tV4kuK7iOAcUKdxuDXxnfBTghMdFR2jR3zqJvPu6iTewOpF7fQVairuxPC3/dZAWnh4GKCxS4mURlLF8P74hY/r7g0tJqijAL1+evusiSt8ZBcgJSdX6NDBKZJdaEOsLXSzHUeAxW/0vMVYFwCujbv5IY75biUBd9+tVgrGlPFJXLRbajwadsz5ahIx5oEopV/QiaRNmSPdcUiqqnM+YtQm2NCCD2mHHUjjWTNjgkkclGky2id5bgGkpBbLt5tIhzQUHkYBJGxWsJ3q0yN7Kt770IjNFJsndb18EcCE36PHEpOXzfHT9lSIxik6hAU8n+1a48WtVy/91gXLmEem74jKf83QRXcmmsnaVzDYs0jKXIL960pl+kVNb7aUCohwyrE2bPrIi1l/pXepvmCroYds7h8kbiTwBKD4paVctT9HnAYoJaMd3rQenv62qWG6uXbbVLxSz28EqTZi5diSBe/oaXlIRtlMXcZeLR4GmMR08xI0gss1NAvRHIgINXOyF0TFnM1KMEc9S5ijd2WjHd20ek3b+td1FaRujaxAkxxuwW7/06ZAr91C70BOyvQvzMUVbRkJJeV0kTtOyBrpxwjRcJHyCMqSFsPY5ZNPWxZrhZgDj/VYMXwg5e3xpThttq8l2eegzZiduTsxFkrmQFtAbjJ7ZVdMdZ1FW5puDX6bTEtZX8bz589//I4ffHyTaOc02wv8hjJRdtRjP1T1YCEU/UyKxKyDCIEOIGNsYPhmGWPcJCun3SBOMTTmYAGegtej3BubignrvC0HLFhmYhvscZtsmYq0Y4GXjHEHbe4GMzg7AngHA+OkCMp6SMq6fomigM6qYMjnLZX2Upj4gVyZvMHO5/x1A6OttV62ISeiwOmCIKjlmh6AVAH9sOzz15CymIRHMEf5zQkx8EebbLDeFujtPIyDOBEYR9s+QL+E80a2Tf8a6pmGVgOtkzblCRWceTvRUmiKVIiqrsuclFKki4x0KqTM3Eu/qOPkjpwPUi9VuB93xUGZszHTuGGreqzIuve5svuELbPAdkVDipKkKiHN3BKoW0qnEaIWrLd2+7+njC7k8hxwgtoVPu84Nd6SKv2/m+JRtfe6Xd4pEJyIyknWKIzTdLWRE1wXRT5npASdf0jX+oh92zYLscbdj0gn1a+9MP32RNKvTMlhlKTxDb3hpDskY0uIWm3Z5PcOzmFbej5V+nLk/TNNydCidWDQ7pZ6L5I95JaT6ErTuMLHhqvUQsQJA/2xmBdrZ6+NiAMBMhdCEOWeyMM43FPhDe6JtuAMJADdyEMWe6NMO0J90JYnbK3IczCdUtCe3aBjpv612+OP3/5J91b6muEPd9i69qi/tnySXvBBs2u2YOHgY/GZy9P4Chehwaa06uDNps7ac/WrFSyG7eFZcXXSsFv/sb4/IiMfxALm+GgxRcm69ACPtxDi3Mn7dmaaEn2TWhBUaSLOAu8PH0M57BlF3huGIJI9DwtHWNIHnZrKXtcb3FLW/tcrmIDOcm7SXd/tbN6Nyc2Et52infzYMdMty+P/6THtOU2ncXh800jKifgkOOKjz7GW+3bh+7Z0pW4OB8FkfXh0mAt1SzDXKUatksUo+Vj2+Lxu8hScFBy16UMz775HIZAlxI5NGSfp8g149URPSkHjopgrL4dc+zm25JNMlGDMWYm25hkbjGf7l9EGbhqNMzQhfHimpolxDUlBQOEV+pTBK5T1qqobs0GlwmVUdt13K0ibQU1wPjyhbxW/8qICVz7QiHCAoKIhvGTsjuYoprLLXUWutUsrydkcBQFO5hL9G69gKK1GlQxA+qn3BISTGQcVlWhLVQYQuH2aZMwoBCNmT8k3pvrUcBxIW/DwHhz2HIyZI6O0/dbMUin+xYU0OGqIUcLhIvu+BmRvabagDzQEgKx6Ditj+Pm9/hktiDVZvjvPyg69Y7fahrIqFHOBoND8nwgkfCijhvmjgIWQfE1ykDZ+8GULm/L0MwWx6Z0OR8adkSZEMe1rrkPklqG1twU2Qe2coOK6cVxlmlMTzGDVc/yPW+04De0QiHWwZS59bcjKV+Bt8FOC6TX+BW7DzUsgG/Bvz9G1htOqv6VfYPjO8ljr6wjNCyscM63KjHpsY1FYB2FWpLQ1Vpv8sm2FwhXenT8RONrbSfhLCMq1UxKZh3CNj8csuuPm8vkJEfvule1rZ20YfEBryQZxDhkNSMpzBiOjfrlEk0graAV/XGiQsdtcn1DfmMCk2Jsn+ruo8YGQiN8ozdanicpA/bIXRaAjrGxTMZO8EAnHGBz+MeeXWZkczfdfTbzaiM6f8CeMdomeZlSaCM0FTwWMbqj5mNntFzYE0Y6g+NYuH62XcbhHCMp9G2YJteKyNHyBbjoGlbUwghixOJeTWtxzYRqZogaUo5Ui51/xKbR9E3J81Do5IsZvNNqjObmubpCj6xHddUM9Dytt+7NgBJSxJh2wHvfZCyzRYLkqOd6zOmwugdYG720NW8M632yStT8bJ363NqKHDfiTieQI248PoRS466YTeaTJDjo/a73u98F8WywgrfDHgY+MEtHGHIMp07SIypyN49EGC50vJ5R0o+8ve3RsYVafQg6iukJwEaRriSUODXJwY4jKgs+X84OIRMD+FTkTe7W4FZaXtFxepFZV1lysElQ5Z2wBSpJqqK2OhHVTz6kzll+d5UIVKuUCTzizsyvpaOdoSKJtVUJwye6NaEICDiLk/O+xBXszpt2zJrfBBQcNfMYUPWgW9lqAfvXsgSsPYp3FM8j3bBrHtMXkTcfF5011I4olAQ7BsF6mxdFflkMZrVm6zyE+VLi5k18Mb6o0oMylGjSQCERY1Taj3sXgypGEUyAxqs9OBB7i2ksjItKQgw8fg980yib7Nyx8SM0Iz+iimOyZgQ6WzDIpg54DuIg7uo2qLlwTQwjNJMjKp5F3iqHIyQcsUIk2iOQXnBwvtfrQ640MP2EarGikxux/TzPFQVrUixwk3QkYmousW6q2DDMNq8nrHj97O2XBF22I5kosD1yfbaF06WYyhsFeneTRheonIeOlin7/jb1vJeQRa1l6+eSCbOFxwkmri3p5XIaW9PhN2VpygLPPyhuzViiX5ZSWg89EcVu7zmQyPqG+xmmbpEZT/rS+XizB6kYBOQ2hZOO4zG5BXpffnX85/T5N2/eHJ+8Tb85O34TO9PuZ6jq1enzZ6/Sr4GvfXly7NXV2pscYMHGaRDlRkxOkgPFAZcH/LBbHdeTpHywoyBp4qrJytq900g2ENpl4GvMhfTgkT7RWfjX5SQz1pEOb0T7lEBKYFOnKYwPuCMp4Qd9uKE+XHNfJmojNFtoK5PWOzui2XGKgjcEFOrVt0nRMjCNcbp7gqGyFyMpN7NbhpMmS9tJQUZMmTDBikeXSQLYL0MeglguxGmXa4heXht0lLOzoVBMPCMqbyMq+QPofzJvDqL9XSrg2MHUzgdZbN7xUNKSozEo9VA0EXQpgx6DGasHYnYWjK4knNN4F9JqZxvffGoW69eyRhbWMjju+9XrbM1hErk0QUeJiK8UWt15+tJVn6nLmjXXsDEBW40Loo5nEGO7E+XqJM5rOM82bm7fo9Z7uIjfR57nYzw2PkrIuxus2RrzyV5u19++7DKxvBvaSegf3nhUB9Eusfwpz89g15xHV9kqvLKuNHK+D6WLW5ZhrYkH7BQgY7N1md3pPhzMEUkYixYBY4XsBscPpuXJIylJ+jRzLXwaInoEQ9mMKEPla1SON0ZlD1DNqPWmyqfMUN6gbi5kVIM7I6GIQYq75aJeyXfnIypQ/RaXC2ITjSdLgebPTrykt9g1xpetYNPg7gvfwTGtexRwJ82mYV8LmE5dhUAo0AsjKtjjzogLGZRpyatc90rTshQ+eRcq6hzG/a7BnJRwR2xQ0xwjKkzWhmOXKmO91sN26CWeoEX+z121A7Y+hS0WLRku4KTZ5zRWry+TIynjrGGCqAM4qgGcruJr44zYlWlLBbjBI3ElqxeTrm8ghR9xcrLx6xY5oadOQFuefgifhezdOzDLSecpl2Ur2aakRHXLzTRrmyJHpLrRLl7stE4db+bqCJIBMSQjKfEYxPt+sPqWhbZ+hUX6tWU98LHGn9suBzYsSOPs34sCxTOi9diDN+ITmVcHUobUGBuyC/yisguBA0kd55n1Hx3IOJEbm7/EOMDpYWIcmPnS9GVaJ+onOPF4tQsJzyl9dkRaEyRgFqSA+kqf4UiylF5mliEs7XFlBXIyyxipTUI5j+Gm1jDl1Y+DPx+/enX6bWBkfNAcUngjKVb9Ii+zTw+sqcS6sLRvG4cDxxsLHA4CK6VIYWWp08fpOJLucmw+w9ZgCSddOtBS0x/Qpvsg64REq5FrIzP9ejoXsbr8mmuDKpzR0/n7b63/T7Y3P0vwn7v1/588fvykpv//6MnhL/F//p30/29L0f5vU/VnBX/R4nfjx6JefociwuLfXz/4Nf70fv0jKX92HuzQW0pvFP8VH57/8Ux+Hj6gL73h+3JyOYcDEd/Onj8/01/J8L4sYWftlcMhZS/fz/VXMnw2qb7KsgWQNJh+Oan0V2uAR1tD7+L7Qn/9VM1+dSk/kpB+/fZEfzUPBsjcm4xKfPkbvvxIOUbwWNonzSMq7OqUznZ6e3GWniEBgJ1H9ytz2CLRbSMpel2JGafhgK9TioxvUoqs9xL95duv7AR4nw/A8/UOKvkCbpWsrI7vu3dAoT50tX4fPuQUPs1W1uYjKhPp9FrtAjFJUXsHw+HSxncgf/B6k2By40GVUAHR+oQy6zwCXyfXjvox4HHe67u4PUDj5Aduyu8xxU3YhYR373bFRch1Evxlp/xNsHNd8zIjKYyy65vlOta+lcufrc134eusH1+KRS0Qc1VWzJkqvY7lytm5K3Z7AXARKZiJaAFf/RNRJ0e5vMBFi35n2F/0nKeGHXdgoSmoxNwR16i/BsO0oTCtRJGNMzJO/RpsRmRu+CqkzJaUPOi3u+N3IJwfHvXrzvBsBra2dzBpwKtBOyBoa7pE14yK02imz6Ebk7ZOwwxQI4CbF9l367Mc9IlmOu9jf0JOdj4OQLGv1UUbvMf4UaOVnZAeu4lURuqd9IWUJjtbaVpO86pM0yQUz6ABGw5jLCXUooXnQOl/EXyYd1J5D1rjlwnaCMmKJJ2IPhroCzMk/CPxP+jZWMiIq2ExZlaMNka2IA+tOyUHnilVpYohSEjbnUIVc4Kd0EWVGSW/MjGbYU5SomEBC1shjyytBbZgUGsmJrEc2G0ppR7IVSu9HPbriiUSa5orZ4bBDlsohUynX/qoODxTM/wWohDXzW11jNkl4cZ4X6JxZpWP2wN4bcyMrpi8zOsHsewCxqxFt1wjKfuQUaygC6T5FxNmSZipVD003jWDIrBeVKyPFAczN+ysjyWDMMWlBusEikZa67lZW49cN2CxRiMqFkK9GkQo/a7MjTuiOZAXFavL2YqI6CM03AjaWASlRbTK08VgUpTkhjixviM0BBZ7SfNsFT7ZXz1iwtS/y09R5yhZzidDik9mzp8TmE/OrT1nK6vCeErlmkK68LKCZj8GFzTICUVmlBCkaDbNULpHbkrkmZ2VQLm+HF1tIAmXejAWFP0SKvUzz8b3Yr07RN7twpD++pfBpGhO2iMp+BE3bR0lToAtOmKx+KTgbWvCHlpaBsdNsVMTx5J090rlUl0nWWbCxJvhUYo7eZ1pRfMPbyiqW4671JxJSKXDZnVImxdakSMpUVgmeAMYB0ddtoGA7CmFtWFQHIRkOplnKPPEXyhpj3zOxLs6A1f9xWYFTCwpNPIzxe5XEuqc0XK24G0wFlD8EzuQ7GNsETVP0a4jKdfNmdc3V9JcaWpqRbLZ+iZXE936a10tGI1lWFtJx26sXpDd4XkWlcZJXm1XsbEaR7BkdLfK3sOEtaOsi9uNibQRIyrVbm1Gea95tHPWVY476yx/35qxeUnRpoLRjoXKrdzo1niVjm30NDIl4ior/qlpCEHBoGfOWWiPeHNUqjXrcjyerGzB62Q2WIX7NlxVryDP+Ujt1/0kkfbC9ZFAusoml1cuIzRCSJB7EJQ+SyS4kfg2G/UMNYRZOGZIPRYhbp7enJoaPQf3k9/56OSNoq45CJMzMITI9n2uO0U2JaRZ4aqKOdPI7UnHzUxziIXQV6AaOcfOQ/ei456zRiPauXr2LrbrCItWw0vH5NLx+VML4aqT5T4BWdeSbzIvrfMfjRvR4rMXoz4Yxzl0kekEqRMTCeRuWcUBYVAUKvI49FECU1PoTOTBMFE4G/d66x38C+jiy3SiQ4Bbx9TDakWmso79BEOLNF/PYQk0vqUJC4XfbZMt/7Q1XBa6Hhru/LAxwBD2esKqY174TxBE9Uh4a4TiMmM2vKLc9xw1N2vboHnBHiMq304oXUkUzZoaf2scRjNtteG9lOsjKZJ4FUOiq0WMOMmOGFkszf7W5ueztVitlF9ItSuxK2kjMAP8c8/Mn3PsJbvZ31f9f3z87xdX08Vn0yDX+73MUFj3/1DPr10PzX6Xvgv9jo+1K2sk+5qJSWpJKAOumRsMD7Qtw8OEgylDGiz+g56cvbTRHELKoZti3KUuF+QPhI9hKPkp5NXuNUEWDkyQSqwQXu0pIypF9hJ7kEPpTyFJXEXy+Y2oQe1OmUOvDC3bA1REGh5uqtrCq+Pgw0eO78DdyRGexOs5x7HtP1iyj1L8IFFYvd2BNVtssOe8gLnTEh65jcnX141hrD2J0n2cjboHvdMyJKMY2Y4TqtglTQy5YbPuGjrEbRJ+dws29HzcUs1GsEcTj1Yz+tiukWhrFzWV6Ns6adMO1kYQOf1ErSNm6o5est2ASbumb50Fv7ajegXsTZNFyIVa+219xzWo3Lohv13zC13yo8l4LNbisrL3iNhw1rmQ15DxUxZx4CMvPoCzsItGFb5ZH1CDsqM4dlJpvMPBEPufrUuAIxjBy1Vy+IQEtBSREogf0umkIymrJLlhZoifSUfTMXqE7HheiPaLUO6R/WDpdZ0euGuZiOG6zTpxZNdPkDvpUs9BJGNdC3QDle9h5YKdF1zR2fIdYsONyielmLKkDuPedMTkOn/xhc6suQjHzWUjKuTPRgnLwOVbx4+hYgkYFtyKfR3RpeIfwkaFQM8hAtSa3lEGJ9y187Z1O8mIfWCZmKwlIyp32/xeg7aWUBZTK55QxrhPb7FY61AnosxB/rGzUB/2Dng2UvfEqq+F0xFdpMps5B+Zj/Q3qjXx2k7/y2l+0dCtIReyqvMBz9bqDKvUD3I/gNNy6hg7DKcY5NVe19L13hyz0Khfw6hi2406MObHmyEmnKgFRv+NXm3tpj+MmYIkBPHhE6rHXFRafWOTZKNkbXHf+NrV9it1cehekCKW7h1p7H7Exrof5T5ToRv/zIHLasvZMR18f5uaHMIfy2SIw9qdk5kPsQ5/bIedx5srl03HzqoPh+O3YTwdVB76gVqGrHo+7Wb9T08qVxaBl8KUIps/VGgPSIdmXVmeVDynQOKtTRQ9XUuRGfLVmIAvSevbP3E1bLKTYeVl0MXqk8SdOiMpwf5CtJHr2P/jiH4jKR5oIyrxj3ejIZXvh2aDpjT62774INrU2YKkRwlDvZYjNF/TeHtNp06U/6ltr2HfaN3avqlX3dJV9+6KeiWODKippa536ijMSZJDV1JklS2OAsNx4jU9//DZezf+50GaovAoTYP+rujUqwzMOJj+uXleN8iaOtd2ee6pZ9Nkgqv5xXApRb4kyxQaZUyxOCTG0Vpxi6Uv6z6w79EPWI1v2KH575TY+eHcW7qkkZva0xDytjdDRcj/nHG8YxiqDx4jNCf0IynfnqwqIypMbrx7clBVh58x4dVduySMce5fEqju0afJvgQTVF2I86PrvlrsWBbLfJZPdtBsuT1cuRIxXUG4q1FGrT7DDFlMEa6nI58R9QG4x7a7utXZTjH8oNLWQSXfd0/90u0b9L1PyeYB0tPm3Xlk9LQptl/Stls7t2Md4HTTY42cm8oGzsfGNZ+sPgzf0ZSZOHFysTNMhJaNvN66Quw/1xHHSOxUzLk2eGpSl/H4wiM0F4Sw4txWz4NLm9FO6y0TBtIyYbQkjk6jGs9K63wRlxQcazLP5QmNIvqRJ1UUKwdzi+gkLybD62lGzsbUWPgjNO/dJ/PL3itIDCOrTPUo1DgEJG/536//LdFIMCTpz+P//eMnT9bof+8fPnn6tO7//enTR7/of/+b6H+Tv3c1ooovgHF++jhGnezBtMNbkOQdvqYl3Gk6rbJ5eJWj1qzm9kAjKe8rUx3J4tJ53wjVycbg3nJg1+PVYlJko8R+7/lfOut2b95q/Myh0fqNjBWohkAk3zarilx8oiMpcU46Q6jeghQuiWOtpSFkJNkjKuTNVpOKIrqh85f4+gYtquIh/u0n0kOiiMQd37t4+hhICKS3IykjNEXnxswJ/e3mBR4tuE8fdFBdJ86KAognHr4kNKFz7B9r+Iod5HbU6xx4HPIcg8ImtvSyZ44jKUfzziFqTM9QRyMqLQQfPBhqXvUw43Wi0f8mkCK4IvOteXaTlhlFL+PLcI0BnGMQ6sl0urhUo084mTghpPoXk5FMyN7Zyy++evnqVe2umHJhCT4O1yKvh2VSG3jKSEOj4YOpkecmxnA/FuUocVaNQDRKMUUnVk0ISO8Yw9hhj88/Vu5bq1oOH0ipDoV17Joori4Snj1DOG/Huap8pKTylbSZPDLMsBUWDyxOEVSqQ38/u8G7ebCrfpQMZK4myexVquN0IzQD752jFW994gFNk198l9gJLBHZdH6zLhnG60N7Pl5AIylDFcIuvuvJjG/9jpj66ePpskQSiQnVA+t1ihaq61bqIh8Uo5foLKBYLmhNcmie/+vO//Fktbg9/JkswDbbf+0fwslfP//3n/xy/v/vPv/JzitNx0sMpZemauvFLipR1R25CEsldNAoHAj+yZjCg7AwYoUMhZjRm2sUm1F9aLz3k8+v+aKJ3lqsoHlJBBGG6WInfZwTP9IlFnqqE7tjZNPRyv3IlSFqFOeg131LDmWBaS8GZaAR1/0QybnV5mvgchtZ3WrXKor8QQkj5cgLb/UqdhW1KX3YZqzE257R9jM+oRooiPwR6+3SiW08yAQFHKMle0FE0kTUmCMmVNCVIVIQ7UVvbFFVzKXMrJWJEREfmJjUo1yCJEq/24Zd+3fqzhCv+ton0tB2xR6vRHIOeR1ZJ7wZ2x/FofMHRiV4IGEciwMjNOiKeLXE7aUTFvWdM9J3bubY1qPHOV505aHzQbU3iNlYPAmkYBBts0Ms1Z/xqjUhSdlrluL8ZjmfZwX7EiPcHxvcW8HMVUbWu8DLI4Rm33r0NXLAq2MJC//JRvjbYXBMznjUpBs2AjZeQyohi2KkBKCd98vHJKdPtJwf9rejX+LI3eP8Z4HIz2QjKb75/H/05BF8q9l/f/z44Jfz/5fzX89/eAU+NhZhAeyFc4oyuciGFZqPo78OihhnYrB4UoSY/O/iSUzs1U8hVGBrBjn+yfNpoEZXYnFFW9D5fv+TR5Y/uFsIsdWKRosYQnjPf7l8goZxmE+nGXk4LnUcR9lfgfWDU2CwnFZkhOr1espO+rD1/NTe/36/Sc41fcRf2eKoxYmAuA9giPQd3U07GWajJxuRoDKQyc2/BhXqGa+9RtS8Zp6xC5v/Ov3sLGCSUDzaiTGQ+ofkHP0kOAh0iAxkx/5XtAQ5A8m2nW+k7zP863LiBlBQvUK5sMkGZfOjLy5P7OtbekowtXP28ov05OWrJJCHVH8tUdLBeK/J48P9zunHT54kj3/3qFPk6DSmSM7ZN8AP5CMqIA72gj59moxWyb5I5/NilMFcJHUWimMT4h+lFWsBC11FJlK+AxKdZqao3yMqq157CbkqhI5wLocov5PWIzTVmA6j6zkFe53dxtZUEqVTHNuBIJJan+1sBan2VfDZQXYtYAcZ4+mASjJCo2xaK2eb1Pq1bgHUxEhm8h+x+roer4wFjlHTZFiUFsS6zaojNPgdsT4zT4RpsZT4bWZue2buQIpS5PXsPfwjKWj4ix622uzYHaPubFXp5aQGY3zvJSMpJC/yJGrJ0rvFiu6w1qA1G6ymZGvPLijj4CM0lk67cT1nTQ729y1+ksY/xgcognKCZiLIxHRP5CbbBtKr98k0VT4Zy/O2iWMv6Kl2Iyo/opfzk7JrIB3VbYRYEZhVDqBOxole53y9bZ4ZJ5PT/ZT4bXIBtrcvWQfV1t9pwXPTeq6tZtsdNcULr4u2FLYqRIvtiO1oXV+Ooi7qIylYUNEnzmQ4spqx3piv65CNfbh+WGyn1VQYTCupk1sgWsMRY5jJHUKwtVfusKTSvAn8t7YTbT8zorIkfc1Kx01GY8kBoRhLPD3rWnM5T0gUYCwhMUwg/9yx0bnOJLA73CzaK6qiOak23vXbbIliFT5wEHLVdZAxJyMqSxpBrbqj6mCJcf4Phy0GxXSCF0Ii5Qk66qpgHI5JZDPb4HEBb/g9dwOfGncDqqYTXCBhM6OgFrsJvBHFZgRDXIWRCdXkSaR+o/yIfob/VHjieFhw4hX4eRwvcfeuVzoUEjvGxl77g0zTZxvcQ3xYpyA48huiZJLbJu2x9YirEI1clHQcPZWx+raZJUCwhlETCIVZUTh8pTE2ZiJj9jXMPXJIyHN4InXYORb5oDpt7I0ml+ikMbITiGddON44hdjZBszM0/Tk9OXJl8dvXr79gV7fvDg9efVn7E+nuyj7D5z/s5cnz95wht3WDG9efPvGkvEjTOT2a9SNFtNjvk17ear2xOxYF9ujsY6CnXH0D079sjceMSajf/Lkv1fNrdPfjOa/YgE4s+T5m+NnMkPevvnm5Dk/fvsGJ8sP/jz618wdSTBzh7oPXdvo1Nk0EuvWs/a+ruoWxGhRO41zV1GtYz4jKfvazNdAEf6m4rbl59pWeEtZzierhB47Mi0phZ870leUxM8osHGv+51OYF2AFnc5j8VdDlWTOFsZNJfqSdwV0dnimhJ3oEQIsEoCw/4Cwb8Cel/6/VWeXy8XNXETeowvh5MJkw7iQrw0blb1M+I7nYxvw9JRaW5xeG20IynRuZlsCNbriasiJ3tEW61EztTawHmQfcyHwNxsb2933siWcZV14dMjKWqbzAbTLvqOyspsXrH/1nzcHaDPHpSHdI6IgOmWR5KCS0Tc7XSOUJXAfupgFY5nDFkjKqX1AtwtPdpKRHwIpexsrZHWqGOi1W5wBBSR3i4Fzz57/uL48y++fPlfX736+uT09f95c/b2mz9++6c//3fgBX4YIUf2mKbvYDVCJ8NlcviUfEwvxwlXrt62uR0pfBhziB3O/yMpYbCTBQEgxaCBo+kUCN9ink0fHfa+yKpX+eVkOJi+wHxnBK58VoMUS+mL2wLoFagscox+yU8+pPWKwc354weTI/hv97BvZgbNrYA9HE2QrSlQXzqczKtQkHtI2Eb9juFMjEkB+q9Lku2jbSKfd43NbnsUdZpcWWL2mh0Tf29gnXVAKh1tPRL7JvS3d3xyenzy1uxWWcexaDa+UaKOPCY2tUPK6sZMVzN4E4qmmIZBwiMpSCMq19WQaJYWRoaqlosppaojSnYY0yxEGc1K3pfLTKebHxsHlpNPsGuleh693eTwydMHD8JHe5PoAQ4IfD2f9Gur2FjYZkVHljJp0CM0w9rwqVV3wiMqSXpT7UUyUatd8f9V5lMMsMuHdBg1pLW66jaISCMqdKMGIyozcDG4zDZM/+dc8/PXYXQfe3KXiVborgJ5MFzsjIId/WQ6r/0+NoTsB4dPDgNnFpEjVEv48BW2MXCgQyjU2ORqfIxrwLosrRcZ3l7eSPwMGTAu4Hh0efjQut2uQUMXmPwFbXggZdfEqmmZJHVUIzTYozwvpcH5Q3Qf099t4sm77yY02fGMIkqwpTIqhf5hHFQpt8WWHYezv1D89HsvVB1+MsXrrWrU1JnBgOIVHsvqaiMqwY+b2hGSNBqbYpzotGThPJQLEUV7Wjj6tGJ7RGsjNOtkKF7OFSMqhxBhhb/wPIDpIP44925IMN6P7qk1EHk16INVF6WQWEblYw78Pyn/a0bVJpFosboyWidAR6h9R5DA0xgHzRZJGtO8I17+zJbMV2teiK6vz/589vb4awl71CM0DHF2/MC35uHNXfK0Z8HV2rHvHm1zhsklHE0UDufitvsQ/aS8e/ef3RFfiKKTeg69AqeYiflJpDH9+Z//0a6mGv7nfzpC4BBEQ+QIQcRpVBcGjsYSnSMeg6Mu/sNNHUmpGm3EswcPQGdGNw9f/Wg1bh3vXBof2OcOrC/izRDXe+ViXsJxyeWEo5FwQUkWOc3AOE8comz+3phnqfWecBNcmb2GMPVwqCe0FOtms0V1Kz31UWCNjxH+2CDe8NnHIhT6LuZ4AyM0iMBpyGX9KT39IzRDdtD72FOh4u1HA2CNu5SHqCSp2LgdrtWrRjhSVCe1BLrCSWcXSMeP0ITBqTiiXb8Zzk7ORZjxsnvhNhBsB5EGliL+pRnDyZigTkyfaW7fcWa9ASaXH9GJ/ReOU+TGSgw8Y27pSIkvJn09G7zJ8SmtLByWudbrssomqcLeX5c5ENvwNJlz+CmmNcdLjUUYnP9lsPf9s73/3t/7nYQkRCrTyZDuSqTCJaePlxqo0AapXdJxeeUdl+/elT+8C37Y1uPyKsNoNuVwsDDxWNeHcHWCoNbN65GFIzRXER2KUKdYtUIjNPlhd0wsKZwqSwxMeCtLeiC/TqAw2VzJRr7Y7iM0A+ioup0jKmsiSnE9T528SXr5zUORutG/QGF1NZGLE1aH49iTIylVtfopWd0YoWeUjJT4UPh/kxejUqdFZDPLfadBu0dBsDnOsuCbSG8MJRB1sz1mI7xKRLUEDx+xWxYtwk12bldJMM8RVODAstXfh1gVnK5kEGAkge1qiZwDD+6UQXw7IypvuZiJ3O8ig+En+1wI8oPnXNvKcdowL/s+/U8ZuY8nHGh9g4TP0nyVkRoYZcZgNZsOrwYFcKdGn9Fzs15kl6xv6S6tYjtE8ir6IXz3m3e/iX6Av38Lz//yY383evfjtqM7mr4fFBgGb1E4lzksjl5M8WM4001l1rss8uUiPPBcWiMpIyrnfz70Pv8maHq74orIxBpdZIRa8tEd/nq84ue2VN/pD+kLDqIqTYixeZFspWWVlxjD8mIyH8+qUO5o+WISCLHRoBBCTFswGwz38kDmDN9ehnLxEyvdFgdL/kHSynWsHSxwistzNh3zXdFyLnMgG6VQIFVCkPbvMnFpQ544HqPw3eD9gOsgGSO+9qbAEKuyzdltCaseKbuEH7GnXxc5bMjVbRiILpYGkCih0V8PhkC3dP/kMiMq2hPqQ8zH4VtgNvObsuu7N5HrMC0BkE/PHh56UPPSz/Dl671v/HqvFnvLlc1D3X22nJ+eQfee5dNBMSn9WsvlPC+NJzbovt40v+HDRypZ4Pti6I6qaZ1kYdTxhg9eEElXlmdyIyqnk0CIG9Fnm1cuVO0jKTMdlV18N9r9Iyoem8itkcRkMBq40etpU7N6ZBtvXu11K9tqoZ6eGODnN+E6f/WjbFojKpxsezUIrWJRKmRUBnv4h5K4/xlk8ytUIzTk/ahMOC9dWNzKWw8fIeUjNM4jNAxnM0tGk/fovZm/Ssn40VOWcs8mc9gCYAdXiJwZysVP91lbgz7sIzT02WRY5JL24CDbe0pjUy6nHM6ZYwzcljJ9MH03CXZGI/iP8ZIMSDgSivWcV8EOpbdkxQfBt15qFuzIFztXdsqd3qMxxlLnjNpGGUAcpPoduelq87CshjLojtCe1Dth5ynG6TBfzilmrGqzeWDNrRWCcvM7V5LpdMC3o0r5+yKPIvgLnCsJnCvJuyDsPYjewZaPTRiSkiMqBTwBwpKEdnRDTmB4WZAZW+gxVmk8zcZVXKCvujhNjGACsyovTiTJaHiOOfsJZb1Dw0q7b2hCo+ZCbpEtArkGQGz55m6wEIOK+rnF9vbX69wC4BFOqgYcNUdzazRBV/SClaDdHnkhSNmQ36SyIyofgnIM+qQ0Zumoh4RmUGfUtXGjw8uKtmGhPX8fhlql9SGhoP/PMituqRcJ2vZZPq5uBkX27t3XtLbg9d072f7fvXu+LNDxwx/5OHv37tli0X2NLNS7dztoXZBt7zjhyzcEcHVicddYSkYv8uVZmCS3GxdPH4eRkYWwssbDQGDpMUpBoIAYHqIGdRixoOzp44sJb98tHtcDUvUm8NYd9Lo8sOl73B2Atsc+n/nlIynYKxqkhcNi1LnAljjBaIkp0q50AYwB2k3pDJD0sMl7uCV6i3zh2Fq+RI1z0/3Yx55oazQpiAuso5byXV0aGSeWgesJAXdXIIuTczYr0cDRcbA3DGJRjpGqItdJUpuRM4vpPAPol6+PY7LlbqReLMfl5Pss2Y/M6l4jKbGcF9eme+rm3G2RMDGdQzmyNTFHxCSlWStBcEIT321E27Qij8wghG9vF+Lz1yd0PXVOaCM0LMkl0Dzrm9JhY3FvNnRskIl8+PcBFMN5Y/bblozWvpYt9jKo2S/1k6aj6NVa4ltZ28V3LXfpr3kMsxFOkT3BFsMUjTDQzY7amku1ZqoLe4tpEce6vsNyH9sGOWETwmgwGk0rSZ7QGm3YTycUH4BcHB2pryOicwntwIYTNS2hYiaWFuW2h5RbwJHKtZTxzQuCozXW8TicP41dvPVrzAJKY7auyNkDTXuJd+ThVX4j0jDcwJK9g5g4NXhosueYw/DnakJyMyIRHiy1BJ6RfVncwJ5EmZ37e8rR0uPBN/NroHPmGNub5aVakPChYueH/ToqhGQdl8tiYXCBZ8TlEvdHzv0hyFABwsYU5W6x+Dj3srVOjKWM7nB3rWIgZ4ituI8fiYYDCFyoFDe7lgwjHPhi8F8cT/wDCwwtt5Zli+8JwVgRDF0HIdbQwCl9MyMpEvmuPvduJP6VHW9RjpwusXdm1DBvS+EzfeNMXzOJyXfumlnsHIp3EgyNy/37HaVkPzSd5sPUPaTCeQy1wVli3F7L/afTztg50OMmCHN4EiAyMqB4PHPygOfmjChMuswaMrv3SAUjw2SVijnSZi16bhaxpKXluJVZoEkT3QTlHbYPG9b2bUf4SrqPzBm53zzfBW6Z2t0czbVrmpi/2xyAx0zSa52Rk3HY0G873P94f39/bNwo6iMqbCQa4Y5QN0Gp7lPMIypgGfce82noUdi2Jeq03N1+++zz9OQ0ff3m+PPTN18FUVPhHAVQ6EActbc8OhtZirsG6T5j9IuV953236dEBv1MFuCb7b8PPn76aL/u/+Xw48Nf7L//Tfy/VdlsgWlxvqgWg6LkcOBFqxXvqxwOIo4HLu4mNC54zjM4USA9Yj2QcUQ6aICC1vN+B5qIl0P4iI4g9cK7vmO9On3+FQZ5xjx7iPNOmV4sJ1Ng0tzNS00Roc6UKgXKQqvnFfWaUtuNjYbVik7Bm3TJ5LQTMqIVTM1WFdVNphjb4SM0WjcFJiBAN8tTdJM/GI3Sq2y6SLlXJFiF7OcJerjB0LnhThkFO6H67YB2//H4zdnL05PYSXpz/MeXmBYZO0L2+YUuQG4mo+oqwTGhiy9ImqXDfFpam0NoYwL/6avfXO9Nekh3b6Q1xMswER8F/SVTV1YbZZXyQkUcTpS59q67F2DrKMYO5GeDEUNi0YZJfza7mFwu82XpfI1stG71euo1Ul32EPGmkbh7OH2QRavHWORAh8RxsacTEaMvism8Spfl4FIcSdM0Ns6LPR+2lBWnQiiKGCpms8XZKe9sVCISbEaKBMlwSlGVdSrQTJdbIykjKkE2LXtQrsuZ8RHvmXgdBjbRu2RLleB2I2iVCWYVXStUYKMjKTaK0rnA6SdyQ6EoXaLvnqVYWwLKIep/OCjrd4SM6yR1NUqYZaCbOEU5DnB5oZebqyXQ2jdz42PJC/kG5VBrK4S6Sn4yfcRK3kN+jWyskfemcUpuXbf3itPq635iisG37+CgMiM0w9ei6EE5qSR9RmoZH2IkmK8jE/8q6MJyZ5c5QEJOMQvli6C/nH5TgNpN/ZZwkgkJyEzAKHv1E9Cucq6bbb97Lt3a73S+HiB0+dIjKrPVYLaAYev28NTo0sba3fvucdTZKTsjKWgH7xN4ZxW6RDrYdPRz28M468wIoqbO3H1t8QlgHAIsUZvHr4Aif0Z2nxVfIynG8hNFLc5m73kB4EpTEmqUvIy+yy9Kvp7EJ9a4FD/LsEFzAVx7+TQvGsfQyenz01enb8iFE/RbMM9hTQWDZZUH5k7BK/D81UtbAlbifiBaNggdi6vsbV3BFCj058da/MArfpvRdfQiJNl3sLdH6UGMygdAwuNLGai/j4Te4wEpQCbAoOYFHEq4C8HZc5UBIVCgTiPqSnLJbgjwH87zh9i8qHsucI66+N4P4uFVPoHdOwkJjxgbE3NX0CRHrL4jrLCfFSl9ZpTwLaYw1rDKK8VmMMPLQdSiRCMqjOk0m3YxIxyNBRyN+Kjwrwn+dZYtFL4+M/x901y6b9QjNHTnQC2NBRqAsSOvbrh3fY19IynHVvdqgD4tokCrek9VwWl9kWOsGq7Ned1YIeebVLfdafYemrP3Hv5PSoPw897p2v2+qXDvezg7TL+ZF64nCNoHcpRdLC8vUeOYIzR0w2pQXqOddQxtXZRxF9/hJ6uGtmko9MaDSOtyXuutosrSqlhqjebkPfvmNbCTZ2fpl8evXlvIowsDlR//QYikcb2HGRXujb7cCXm7vMpvWBEY37szID3gvKXtH/nlbRaV1jcD3j3IldoYiItCzKVkO2vfas5xjlHuzOTsJ5cFVeDAhhbl1CIUItWH1BlsHl3elEeTghQLUVUXhiM01Te0L0gU1VJHRXVU+eLuOspiuKkGhNFWw9483yPCfDLfK5bzoHUU6pW1D7XUNM/JLTzs+ikCvKvSZgf+g5Wu60u30maP/oOVavdKeZIXTlZ46UYi0joRFQd+xiCuHyMo4nn5pyByLhD8Iko7srO59SM0Y0Z1iWmiUaIcItaDzzayWyMq+RHGsxE13d2R2Ic4JHUtu9x158PB9GHQ1v/aVN2s9I173Icmk5quXqZTXrn8xdl0d4p+sOOXax14YMcxqJpUrG+yNPmttRywyk45feNy8rZ55/mM1j0pqbsjKrlrC7qoF7trK1rQNgEr/hKY1tI5Dug9vRgUd550e4ujrhboQoH/7O4tIGkygn2Q7izauwjIbtTrNbuMfd183uFx1jVuRPBg6132uttc/iDm38PtO/r3rMoWd/Zm6WZa04F7uCBMK8zL5jZQNiQ7VCM0j2YsRXaZrRbangcPZ0Ct94bxg4cVgOa3fNvbKrBOMav0doAXx2dvX7xkAnRjL7x05xbOmuX8g6abZH5oit3ZW4Jy0LZKUbS3bo1Kucaat+nY/SM0vW3CjWmm052GGS19YZgsnVlLS3D2Lo6dtyjbp/doUlZkO7OHQoYgnsF+/n4jKRT8szdfnBmyt7hcovY6zwVyI5d3TUmLGd3S+TNJRAjE0FjpAa7LBC1S61OCHNbF+3ooUMZPDuQkCE6++fqz4zfp6efp6zenz+GsOn3T4iMpbxP8VgjxQVS7rquZ/8N5g0QTaaKVgWXUg7Pn6YkFlJ6evDoRfLwihll38ZIcYSuQKLKRROsZnp+efP4P10JAIhPvlO3RkLdxdHv5ogemCW6ijs6156SJ/Oyz8G42SqE0UAyX4Tn1WYUROvdQKfzqpjcfLpZBX6KL7mv7xELCN/1S0OrNyRNzsaFnj0JShsFfztEkBzWL0WG/CVdq+yMpk5uTib8fKItLr58e7B8+dr/Cq2Nkg2kS/tSuoIbfwFpEKJQlOtl9f4GNja4BTbtZt0Z/X8OIqOs0MbVEAwepymKytQ4yb43SoMvCygKbOKtIcl1cbx+65F6HOtL3rCky8TvSg2IWKr32qkk1zZJEQPux4ylHI9SbaCROqsn3opVITSF9k+HNyCM0SHV53LDOBn5Tanc6WM6HV2g9SbKaNtVFMY1c+IZyIykkXvjpxp62lq7KhwvHbn8hkl3sl5TWnRFT0yPvxNqKtdcG3gzZJGvfIzTlwCTd5Bwocaom8uYYY0OYEA6p0cWwtyi4tuz1IzSPNWSji3AXsu74ePRiBh5QAaSicEiPTOhyePnIivL0HOC6agWc+NPINSL515UjWUlwJpq7QgN7nvgntAj4bJBOIZNTM1/EaJKNC7wJ1lYuwmHi3bBsA6sTSBWj5Js2LZY+ERNVlEMyA8ZWTRyfvLhMtRw+m7L4IuX1GomudY0jKZy9lzItNzUi2XPikzBFIzRzQqO0OOdxqjffImcmqPGei5ozbdzPiqxGahgUYsWKqdT3bP7LPk4TSFXrkwRPedGNUPe4FI1RNOr7CZVxuhGOsdLsbq19Tn1G11kibUu0mfIuglc/8dPkwHGTmg9GYZAVBVNSkYp3y+RvJLs8OhTB5dEBiTGP9n9UQXmPM/YVh2yOShApp4b8E/kYkOSNKqcS9Jp4H7W7YhOcErc+t408w71Wm2PUTf10v17ReVBQRIFAvDV4uQ+buR9gRrvNtW1x7qxtDI+zOdk90hx4dozXDq+X1V1VG0ogvmJI7lgqrb870Lz+tYHFlYUfLSM0VDpsLHT+J+t/sMDxLKt+rvh/G+L/fPz46ZO6/seTwye/6H/8O+h/DPPFLbrwz8vN6h5oaQ+Jnqn9X8JfRw9+H57/5ddJ/8Hvo3fd5F037MHTb9A6o/e1qmeYyb3GJ7O6YuaAr+3OmE2AHLNL1V0vo4cHyVQ7Doz1kgLGSyHolLLuVHmtK2E/JHwbQS7Baj3Yvp/u9cbHTiR53wU3vsGmy5e/TtheE6GX1Qwhl5IGGHiX0Gav5pGJyKuUEjybjjb6v1QPmefjk6Z4986IJybe4XEXk0P1012a2LsjKstRzr79br7N5Pv59g5q1W/vhKu44Y95FVmVUgd2P7rDR7aOk40Tt2VCHnMnoQhDRsmczSsvxLRp2aqjKiGJM+D3GN7z/r2c0tcdKDvU01rv8fjCuW0lMtCa1fg4kWhZpg/NAnRnIq/PnoFCIyryQHlGHHb+c7Rrp6F1HHz3+xswMSisB+LiYCtv9Njf0SMqpvK24p7PQfGk7bZ7lKF3PjvH59kjKrqMsbtfZBJl9uh6No6j8ZsCqwZDJ2h3dTG1QeRnWXGZjTj6gqu/L1gzzs52+gFu2mgrgMpkjXmR0jCJFwVkwIBdeHj0Rlm2wIeQEyPfGzjCanPIbRw1+BM6MVO64cik9JxpiiMqfd1Li1KMOIHJ4QjHwEyhIyocaAzNMYycqb5RUN4Wl/FtQhUjsHMjNHGPG0fz63tdIzSd9xtSUt814DJjFyKyFXEp+sscoifHE5j002/zyS4LxPPJVzPOb9TZIzTDqcT6JdS1x6IB7nfuZnSX4XjrX+P9EPEnwH0+7LArU6dz7xxSqCaqF1VeF6tX5b3sJ8DP6RYoTd2y+yFYOh21nE/++q/pKbOwIZvOh5XIqLseXJH+eD1rTSrMgnb3JbtzEReN6PB8xz3Ro2P4YLbZgD1Eu8lwH7lACbjgrThxxGWP4E0rjQO+bm0Jbg7BSGoP+IrNtdWzW0Ant9JWBhN15eTkEekn3tD49OpaF2++lzKTnS3aN1iXoE9b6kevQWuPBkvaeU2y1KFP6Tl+kxLxgay4nCMpeo5MGTKgHytXIdKcD0hHf5QEyzmGbYRz7FrEh+j1VqYjKvqaTbo75bs56kSihyoPwfPrPjuYYnZdPf+b+JWy3YtrXTIRRUq/pev13JRhYqdXDNVakJsIC98EujBm7F4CmZ7eGIWXSNlqOMWtrctEfAV15Di8DA+jfpLB2ggvxesQCV9ITStE029SIymNnSgijLjMLkJ9VCMFdeqNIp1gg9IhIzTyYnLpt85vrkvq0hHtrXp7yh917j7TCZQd0aT2vnuOyAglhGKcSVVzLGPzku+AvYNInUKhq+laZgf9lnL/++x/3g7K658r/OMd8p8n+0/36/GfHz159PQX+c+/if1PwQY/xgzIRJdvkwix7Q/JhcTw5+T0bfrmm5Nkv/P1y7MzQDA56Dx/8+zsy+MXyWHn+E/Pj1+/fXl6kjzqPH928vz4FSQ/7px99fL1a3j6befsm+d4hZ78rvPs7Kv01bO3x2+SvQPKkH59nOwddiMpOD0pIyl6edx5fvr165evjtO3x1+/xmIp1PjqVRKIb5RxWJXkcQd7NenCS4+Yq8tsLq9Gl6izdTEdQSIk9OCpgzeSK5OpSuEVd84FJCHZoaxLZwszTAdAZ6EVRtLlv+8C/B/a9+hT17oLIjRW2VDvZci+F29CE6wz7ippI35GWUCDTWq09uT0526v67t8tWqhSVeAMNGkXWnd+Wrl8ASrFcOgcx2tFQ5iNM49VEiYQtoRmOjydfjh/GjvoN/d7Z7TCz9jPrxH10fP/TRB4w/kowPag2TSDjtaCwLHNFi+Oj47MQWJ335jTMk1x7rBg49/3+BhUMY/Pntz1hw9vtnAmtKUpKdpGmPFUa+cXPJlSfSzzmkgqZyuw+wmKAj5LUWSy3HQgiMqENMkpKpZ4CsqVKiPTvY5+Kdhg4cOY4nuQvcpZaxRJKUHaiBiyO3YhdTLoWAFhcNsxqT+rVTYA6Ro9n4yJS978o7nbVC/fUaM8EojKoWVgXv9jNF26DoqEdk3OeHEyiQ3otcjV7MsSsTXK4fSZO+eTgGbIyrJplRSEyeHyaDfJOihSUzG5o0u52idorBYU3YZ58jLZkl9VuGRZBEhIFWvTTTzTfNExpwjNLIZ3ShsuOSUMG18dVnvVOlQIyo8RL2DughieUaX2Ed3dx4h4cMWS/gglnkYiTwQvnZw3JP6dOTZEMttRBzFf/tRrypwXoT4GUfe6FgMpjeD2xJHKRFZPY21voiJzhdvjo9P0KnnqoJ5SgXxEZ164PMFuoNgmc9gDPjSk9tOidTa2ULDllT3IK3kJkOndGiBVhUZHOTmdVFM8pSisuKbe69yNSip4wOzK8Az+qBCQ7vFEpVuA9bUxacRVIpR+/AZ5xwh2X4Z04jryjUlQiM01EOXmuqT65tzB5l1orVaITf6J26xCIQ8adnrZGwCc8WsHcWNclJM45w000i9YuGGTk0zczSUajPphDVbATP1KWVwEgyI7N4gknUwLu+NxidrQdwbjU/WoKEnhWHO4ChJ/OHh04VME3VZsvgZysmaR/Uz+QSZ5Qs8YdG5+IP2KQsvdJLnvm9wUeJX6xkvQUAUVgFFKxx+EzP4klVyn+zjTSMpG2Vcj4rWkznGGuNmMR2UQzesCGv0VQy7GNtWrJJVTxwqhxxJmeNRcM7tNRm3Kd+2Os8F2B8lK7TC7VIBfHpX6eN2sO1ACbZ3yu1gZ9Vxr6nERJkHsnbjxndzvHnsmknA20e85w6g7ak4qC4xBHQq2v/7KnLhOCMqg+KSfCqyTTx7WNfa0F0dUmzxOYF0OtPxdI15gJTrO8oehsJSoHa/ER97OIfIxx7fWsCWgCl9KwgTAsfVPOZ5qZ6VIlPS+FoSeQm/dqwjKjlSSOjUnx2kuVsQO/O7vmFlaEwiBytaqBEuIBIIGiQg8eB3azce7jdaD+Rr3kYUkDsPN1trk9VzkWmxJEj1/LamoHFtpAUxwRZkH1TNiwT1qk9kcibu83F2wJb324PfHXaNHZIXx4ec5WG2TyUq3ZFYosekosS1etOO3O270mEMfoc6ytZqaXaNHqsXQvXkIk6kIHnvIzRjTk3Kla7rQc47nOYl5jUkU1N3yxP0CV5H3T/sFN29T9E5G6ITG/f63hbsbaMjKs5w9zz4Q7ALpftGt3hrPJkPplNpq9Uaz0uNDi762a0y5OZ93/2RcRWt1dVTI5quiTDswyLaC8jEkveB5WTE1u1tp79g6ChZJHpcuyGnjO9ASzLAXExn5WViBBjiKiOFIqG9lxRixUgmajdiUKFz9YUwiUYTj7seCBFz+EeNHRPeX3Og4xT3O/TzjXp+axvv3cr17Wy6t5BMIoVx9jz+8JF+4ehytPyGg7l/A7pm0CezRduYtweatmHrp/klsAOwyAd8eiGloDt/Sy2uyVqSPHImtblP7ik4dU+vQ43lobrLTJDg58Qm+yMrn3G1d7buh48onQwP2EsLK5H2hssC2LA0HwsLd9j6de5UIzQ07jgPyxgYimKQ/CMq9uEiG8yCIwlAhd5EA3T/ApsDUtZHAcYROAiOhgfwewi/hz9GbY2pw22DQb+H+PujLH93eMT+aOq1kM8kehYjKly/iSenb75+9iM0L7EGJRPgbf04Wg5pCOhKYVmE3uU/l+zJTpSN9iQBL3Vue39F971mvO83Suu3QpObvMwSKrFUV+XVYBpj+/HP4X1rZHlXNh1QUI+2HRM99vsHG5ytCTpFYoWpOVsUkeq90WZhTqgf3XEnSpAC32sP8kt3QBe26k7wDCtwwin88Ba7qbtT/iDOvfHxJSGLT6cMGB/RvyT+0r2g38fU7Rg+BeHH0HcRr/DKOgJxg5D6xilbBCRxIZKDQyM0n4n+7TGFTv0x4H6+s7MzGj2kv/3uzk5p/k94zWMi5K5vElVHw8g4Ot0MTbqbIykJ74TuKXdk7nCDrm943pQ6cyjqzKC8Qh1CwGkwmVdlg4DnUJdUL0sUothJIn7WS2FpRCMJ3Ymqpp3IGY3kjNOvJFQPiSflhGFfSIpRGzGEJ1OANpzv5uiWlndwnzFUyQaZqXpaVVS4G8K5wwHb9t6LXSTuNt0ZNLaL+xXiAodiFKjYbx3fQjFJxBjWEUkRGttyjm47gj53B5DPqolP08qei26sEDJMhjUC9N7NgMOnihL6iBZQmcOUhm2phHOcfPWy+FLnLIckcc5iJSv8Q1YVnYCkdCocD4DWHHFvoV8L8XQjNJ/I2ZCpyNAxMbTprvW7qSoLViMpNdGXayC3ixDUbFKW6K2EbaAJ5j2A6Z1RHRogNERGA1t/kSMqB+jLJh+bSkak5APE/CSDOrCKJtEL/OP7wXQy0j5jfRBtb32oBKNIb7inqkT2flAc4B++1zDGm8jk4ae+3ZbgW00vtKHkUxw6co/Kg3ToBT2Gj5jWIymBrEZNT+4c0nacy45J5UGa/v/svXtDG0eyN/z+a30jNIU3nNGYQQHsOFnOjrMOxglPHNvHkOzuAVavkAZQ0G01EojdzXd/69pdPRcBuZ1nT7xZo5mevl+qq6urfqWKOaQZcMsxhEfI56pA5U4VGCY6HLdxeGlTo+tLS7SG1JjtUnYXp5iGtkRQirr3HA7OUEUcd1FgfOJYEUv9tsd1RmFOajNkZ6ZeyRIdlpGvSbzdbNFrb75Uy8OxO/3xoLVMAU092kvOZaJR10DaZXxGsbIcvrL8Qer60Krmsx5dETg1yOOuSdetSERmglVsw/xi/rOysjxC1ciiLyMqWsBRqMU7ZYbB+bFBZRn8T7aQyl2KWyMqq3OaSLVjp0VPG/IDpuBd083SjdeD8RUQmah2bPlWU8N1toR8ZrRH9yw+n6rZXNWDLj2C3UnyUNKJX98vxmP5KCHvmFPmQF6oKJSxK9X5bQf+cC1R1fyl5wWXlZwm8Xt3xLfzon7rCQtGvmwZ37vcqui2WLE50OjRyfhk/k8i+Ejto/WBTJhatmituUb85xrO3zVmQ6MfIxVcLgb9clda6iMpETormz+SmyB0EllTCWr4YprqpWygoG16aKM8bxbT1tIZP8deHoLVgvycB8rKWpO8N0NWEjPknQ+eK7QCINQoENsqpfBb1N2Xb7qlYJa+MKm+3GEs5hWlIaR7oTRJtZGyUDMsTj5qeYyqr+W5GyEuEecG5SuOPOw2C58SvCyMS7dJCCMqQN81Y4SxJxdBKycH+22CyPdR16cUpdmiHLs4chtcdLLldDjoIyoQLmVqTDWtKoGjMWW5jos7GBWzKcixsCfeZy6HoGG+/SM0YRm2l1+D+Ve8hEEzV9LPZU7tHtdRItwZ5B1BbPnjlu1x0S5SJWC3dtwgWvX4ueX5NQenrOQuvDXaH0W3KYjuNJfM6JN3BG1/2Evl3n0zmb9HyYZtha0Depr0cjZTynSWXVMxoRx2hWWDlWZjgt2mEMnmaJHPcTB2gUPksw7qbmJIk8+iTUGSowQ4G5u9S/QB0I/ccUcrz1pdsvVxT3yUamXvXQ9XmOu/e5RIUiMqrFxhl2AqIV2FEair6GpHryndRi11vFclu2MBxOJSL+mQ6GtsalqqKq1O7BkYr59cII6UiNP6CDjVHU8YAhSVYO4onBx9s0Ngck8W/+Ra9CeZHo4hp1Xl2qtKr3pBTBXHQebfLWG6j1Ah+92UYeXg1zfYHkrlgNsoieSjwjGXz5CUm9t3V/hnt3lRvGAeHuPTabjIa+9WqoiK5TEDFZMaab5+vkNa4CX35R3n7uEjKS5GNyMpx9DU8zNOjWOX2aA+cDR42Qt5YRe4gxv2C1agM5IdCfbkAcqMukOqWGojPICF8nc7/bSQ5fHy1F7dhLcbIYA1IW1gYf0y+NN1eh22KIB1qur/4Nr2OonQBeRw2DGQ1pipZoR9du05kw5q+lumbvVokawgnHQVc/TUrLFW/RjGNCFhbcAuIyq58O1QMBdaqiMp5hypm5o7OBZWQ9KNNBSjkzg1G1/72ChOYQ4/gKRwRUJGEIisTGpgjUpM0N19VdqRcXNL7cWYmh8nx3pcxijhapTAVJgmODOiRW4FUxZaK2OaajYtYCSYENmIVZ7V/epwg41lUvV9C7EVHnGdLKndyCrq+rJAVYOpT5RnqZb0vcvBsA9Pcpw8lUjVy8tfnWIeweWjGmMGJNfzqy102iMpvyQjbgXto6SkpzTr3vgQwWiixHGNFNxuj5hwt4nRYX7QqZikG7P/bC7G4jCiTxtForedd1fB8Helxt45UxqrR9uZc91vsGWsr4ojS11w04V9PHqpwthbkiNjD8zQyF62yt0mYfV4Xq6fwal35sEp8QMDnJKe0kdRcmWYO57BYnZU02a3Wqu2G+Yz2NSL0xB56tBNojOZunK7Q0hh7uwhpLhX5V3KHpHs4YcsQ+sqczfV0WnBDohpm+vNC5mtPGFWJ0m9Q2Ov69GbczDtAWocSkZxdUeLVUk4cz6Q5W4CQhzS3M0LlAgV04OtGfNG+zX4gPfKZO6aOe3ZB5IwMoTFIyq6Z3VBwiM+l8fbqitOEEIgvQbtFhpVcc50B01okz1qlmmWEu9WhPFpTkTk9avgMQwdhtH/dn9D0ZTqTkUIjzre3I6SaDkawnEMRvlctB0FIfOXEGA9oLj7i7ngr/r8SMkmzwQ0HmlIIzT/yGwD9zc6+LYQgZhugMRiRrpL3oyLObWome/o1awizwRft90trR2rbTJmgY/l3i/kzRfBRuNXku7clXRbr5XDtPK01VBZGTluthfVtErJbeI4l9YLjK3Yg6OkjUS2dR/94tYF7+4WloFUfJwfd09pES7jMFZ4QFgR0U4srJSNNxyMrxh3BzJQU2moIyn0aJ4RGC/KIypzb0TtBpdSBhXHKlyd8hnEEBBhNqnkq1NrffAVgYB6oKSy9j3ydslYHdyIEi+wiMLzUSMpfk7xj1OAB142NUBDuB8xrfGEIdzmHC/qdvgjNDGY1/hXyZoqkslZeTqbTLPZ/LblCxTYIZ1IUE4vQ+6gZjr18DpRvLqUZw7JfqumzmW6bJeUKUgZyed3fHlqYQy8rbyJ40d51F0OSF9EQJKwzIF3c4mfmb5up7YMjH08OD3luz1M9INPNNjYTlzCR/OdcsofNCULvkv0BidWOmDz+vQHJ400MXeS+baL+YPEHIS3RvZ82i1XokuwuJCs9OXsVOuGPdON/7iDMkB8PoPn4vFB9rVleSV0C+pp7MbYLwhcjV28mplDxvHd2eJaNv6NzxewGFo9WlA94jRQRaPVS/o973W63zuOzqNThDqD/ugHWGetL979EQ6Mz09uNuJ/4csEnv/Fj8CjPv8P9LEyQ1sCBPs2KWfR31qH7/f+dfTVUXzy54324y8+ppgXnS4wQ0FEzAsVOnMgBpfPT0449/5kOMSCPz75mAPyxVk+x/d/2krhM+6HzxGA7eTHWCHYlDEWq7UOWS61UJGNjEWX85kDj8JNs0Uw0DRdLlJ6djAHqEEDxxmqTmS3pbWP11R3AyK4FgRx2BLCRKNWSBSshS7EFny7xgISeCAjMQaC0LLW87VGQbcLG5NKj7YhX1Q2HybURJyLAzrFO2MuBYrGkJYza3W4J31nDte30LjL2PdRrzXSZAIC0ULbwrC9dHJxIyp28SazQjSoYXAVvkxdXOoGkV5pdU1S1AshrPxlA46/sxGblk2nKb5IvYlKoV4J4tBfopMx7GupPM7UNILJ6SwhMZJQiilUIykZUt538SKecghXKcVaa65VqCM0oL1p3HT7oM/qlL0RUbdwIypgaayqgWzVv0gV3H2wr4MrUZ4Dx3C7KkVzQyDYOcgRY2z1cUKpbW9ihOiePRI1FJqe8nD9ca88tEkmE6VDguk+ik1udkxh7oyOnzgkqXukdGNRSOqUyl0/jby56Oh498mpQt/P8c4BjSMp4S+cxbyUEopAafmoYlSxZNa4Wp8lzfU8RreZNKljj1ddGrsvNO9sOUWSTETd0YdeosMX+xKn6HcMTVPQNScbpKytSVmYS9GtAUpaodqsp+JWWThhMI4vQt9cHqWJhbHWpgiQE8Vr6xw6IMzeESaglb62vs5VXFtvRQkqMpzMRV8Hv8fGtzjFR92aXlqNmLBOm0FC6RqhKQvxugxb01NcZza/wSTMFclljW6wYiitGxzMJjaVtRvdGu1iUzifPT/JNx6yqVFUBPt93jr+28dNaPb4ZHZyfnJ9+i/aHzfitZptT+rhNj6FUfL7AsEUKIuMZNSjFf0v3TQMzFEwWB7vSHsrqDWNnFQo6LSAjQxbgGMmSWihcR0jNJ+9SeTHHwN1+Fi1g4PCIyrbgLtHud1kreOCmYMQ8l7Y8NiHRd+RLqpYgT6qSkVI5CjmPWm7p1CF3a62eEtkf3r5bl/wFfClyUv1Xlex2QF1xvhut6vY7h6831VueA/f8VZvXKv3vHumrd71Ah8qpX3v/htfuPN5vifY8cIjKs8PZ/WOV7fl6RjGtiiR/AhlCHe/49O4tP3Zdpc2QD9fq3ZALhExSbRUapqLUGDrIzRVg5huQhan6EBwZvgcPZqmEcPOrOfafUDOjzd3ThP63eYuoNsifm8wPh0+ppBeAfZEokvbRWT0oSlPo1QjKhFO2fttHVLP+hru02seuK5+s4Vs7rXdwl+34RY2PN7UIypMBUnmAtU5jiG64niAh3ci/a3oj1H8fKsphycJe14R9h//gYGsN0NFcW/pMFLVOk7BHKpl3xz4zmDsjC8tupDXY8eU3M4jKYBlmRjIFVfWRtpn/x2PfIm6IZ8LgIifZ8UYy1gjKs6goEme9akkpwnoa60JPb7AUrX+IzR2pIE6W9EsyTlD8qUlrik0YtTG3TBqxWHe93pFvID7CaaKu0lX/xvKGHmZ/GQ2z/ruO/E9SNfqaZqFeTTPvGSYm4VgU1WezbUoSeukqhtCPtpeJKAqVEg4h0U0md2y0QZk2mNvPTRx2IGPRWpJHFBL4nFaEgfTkihKi11FiVMMwKaiz+IRehbBEqJd/AsLBFKwQ+Zol/0wsx3SLiNXUmbRLv3AG1497+Lf5Mfi+sQG0BpAOWMhmKy5YuHvoQ7HDrfoFFF4egH/r9/dt94wTwkJhzRYubvoOYkTjh9jJELTMWA6WD/uM7L5HOZygxHedbTkWsNFh4618bGfywlYERdnBvW/JpDRCOPLBQVFd7doGJtHLIzMFyFuwmA7GF/b670gttTunSpMdPlT891+LmnUNBxIUpAyLYUElcT8vuzmGclAzf3AYTbqTi9RsLvqjmC8GPnbAXhJ4V/D+UToofmCcyzAkCDdwdwEyuUWRs36JZR/Z9ogWcXPUy1Ijkq9vy8GIzSFK8hmTtHY5yuHGrrlPEDMQtaDi/a6Y+SaMBZb/SF7FBRYaAvrXDuV61k2zKDrwuKD+IqVgEn+b8D/lDveXwcB9A7/L9uffbZV9P+yvb39Af/z94D/6VAkEANUyIxTSHX4E9VEhlRecRv1TllcinYQ1avZQRK2qhWbigJsDHxLfKnOXoEQh9VgMlvaa0lIYVQ0MH+0A8qWcZmjzJaJNs1q9XLu0GH0ELKHJoLH2yCwhN68Mz9rod5Ftux1CEYhPt45IyrrvFGRij5A3F0+dLAqIuuOsRKxMDolfA8B+NO87/Ct0nTAAqRNzCNL3qV5bG1PlIeWLL1Z8SYVpRjBZcYQ8xU+aE7hkLOOZWA4Hq+0JqeDgfi/ZlvjSI8JVnXGKwPNl3PU9imUIcMOH3eL9qoQ5jWvIgf8g3qlgaeiBeuelfuJlAz9ViwahCtiOH2dUpwC/X9Pjtz+R+j/zvYToPlF+g+fP9D/3wH9v8y6078byGdWDiPg578vskWmuM//hS/JO4GVo7eGaIsdUAxVFaOk/1VK2lC1s/L3MNNHlbnyaSSM2qK/seBOAQVD6iM7U3eJIykwlspLUCq//gM1UyzgKRvg3MW+cZ6pLJC6qY1/pwtB4OeEHMmlVX3CONCSMaknU5M4rkfYptMYc4WEtt346sW79NNG2CMqGClfdQ4wjK+IXRSgclyxY3i2Pp/H93b05SOzc9P6coUMh7aVVT2LuMrGgpLToTvbh6fVDrd1rxgO3wiR71FBw3wenFxU3GNxo80UsyIkiyhmZW75vORdB7uIhD3BPBuc3/LOVOZHJAH++n0rX4xgROTse4mqoXjOOaKn6j0+n3ZvYNPx3VmduIaTw1Qp/nEMD2eXyq8LzuYvu3DaGre2LW80c8fMQAXNWaAbWyXJsC3YPfl8MrXMWfhVXXpizVquoqT8Z4DzgpR5NmrriTFu1OQ7WczbShhclqYnFJ056CM0IzTkETrkoAcjKhAX/fChEVAt/vHjoCq8PhcvS5BWwgGe3Z/+rMGTk/ZkWo/XZ+He7CM0tXhgrv6hmyDo7CMp6utCxBiumW2VPliDzdLkwYzaFmuOAgJ1ekrvlpYnPUqFuzOYUNlwpSAGAW9/SHcCYQx2MSniMYrTsJ+y7r5qPCOtwPFJQzrvPdpO8vkUpla/LsJgjOLdYTbPQiEPdVgabqJbsSk5LYYR5CviSqueqaCt+SDsUXcBrBaMk5nBWT7DvUIXiODxzea3YaJZdk1CsTrd4HBh6WqSaa8jNK2o8OpXvvU1X+za3VpJfDEmOZ2JvZkpdnyFYMmNiTtsGGkUcFxDxh93ZzhKyRPbd/RzO0Mew45v4bBJRkpjyclqm6W7FWVpKKXNIoAWCVJ7j1kGjcm1rmgGSXqSYtbX7aN0TSzV3Exp3GW+6EEv/bUiXW6O1TzSQBRV2FIU6kacGEyk40HfooHgQdFphzadgRprJGvW9rAYrecnc8ZvXWf0WhzRBPOO9YpXZxeZeGlYkMnJuOksoy0mFZr4NFEnOxHjp8E8bz4u4Bw8/oJASbBcLbHacDh6KZ2PbiOBFKFBWcGmythP4V1tZM6+sZ8ibhDLY1gzFUrLxfBPPq4pwi8UZhe9doKb0GbiOpmxo2jqqaBgMlL47HXZl0VjmzqN9mDqF273i2RV5cfLOIhg+8Eyg8W8bdY1I/rlbHKV4Z0hkUU3rs3J2AvDfX1K9/Isp0F62PI0ONbrSNgFEi/wVxBwqHiHvdGx7n3j0aoBplxsHNM7otMtRdhIjMKo+x6/qmmydJCqWo3UaUNeukZQID8ISiIfz/rswFDa/MiDiYvC7iNIf71DJhG6P/KNB3TSoNVNzuKC4npXuvV2kMEqWlarn5uPBmsjKnMs9mFSHD5fXM2cIypPEQw903ba8bGxBL9SnTTTSjeNTRhdmVy52ensEq7I8OM/RnIJZ2a3zMXjH06DtLR2qdo2TZDiytjg3Gf6lYfs7ll4jznoZ+AG2XGUyiFvRd3ZVQfOIzSD/DLrhzOP7plnt53F+HyWZf/IRBHQWQtWkqLVg1pFhjyhKII11xOgleQHxaHW+JBHZbdseafjBbFPqzzSLmvm3ZLmTHCpFtqBO1uisEOQPrlJZvbnMnkjKrrdzVrOQVkDS/7CUSM0kMltI0PMeyInuZ6JIoWUGpGU2YVLoDsyanOVmRvpXWpTrd4xrHjpSX7IXVRlMnUkO0gjKYmRte5VJwvrVjW/cjCH7gwUHJv1qMOyiZCiziMqclU44+0X2og30+2QbxcbV+8Uy9Nsx3uHzDEf1PD47LniTnX8nzQcBrHKn/50XFSe6O6XfVTtfX97HICHuy7Y8F3geCIOU/5ET3UC8Tcvni0rj5Yh0FYgudDaBGj/brh9TxbQzVyf+n4uCURcV2OlFMjfkwkH/E5LXcz5Aoz9yaxz2UV53MwUk18jKqbl7MUIkLNiWKxVs46EiITqujorBYW9K6+wssV55lYjNHIiCIhjREN4qJV57ptdPtoxDIoHJfM1Dm2s5fQRgJit9mVQmGfUBXcj/xfXv0ftD9oojcQhmxuNtSCiw64vAlw8325a7NXMwnDU9dWjqo4tnvjCQu6RpXQuTYnAy0FxvgQfa6dxbYbiebfspLaOmS0c0ENKXBIHxFJl77vGyzHsqEKU8FBkzkkhwJDpV8dMBKu7THbcRAtyctiATmzm8svnqZN+6pTWfsRk85T7nhG7dqv2NkehhzaBQ7XbLR8aa5IIFtiqVlXM+BX7YiF/h96321g1V1dM1RWVEoInUY1IiHLyK9iPdkmaU9hk2b66hhswehc+26oP7qBe9dFzot7flOHgnaw0d4bloXU2sG7XwFjORZJIPqBzgegVBq1RfVCryKuexb7fsemOU1PtoalwZnKcrLSmcFAyi1Ij2HMR9iJ1SWscV1wcjavrrkLLxajFia9i1xtj4o4dBXEdnm4JUrYL2XYoJGwjKkS183VNtb4qKBsbr2HpuG0cEm6wr6freKOySvil2Bn1mRVqueMlRb4t27uNlXIxhzzUu+0jKhGUeDHufxRZam/Lr55feL7TEj/S3rNk0jFy3OBlBUJq6OlHhG1ni4sO1UvgDhLpaNZSQVk9HW30rByqzd9z/lecMB3bG4qojNzXg0kjTbHxxP4gOMSrVxjbHk8BXKMUHp9wfiqaAd8QwGcrXAxJt9d7wIIozH5psUxEyitk8mlfhILHp25dyOt2mJ+0gtFAIyrWmWYjKkk2XPaShZ+xWsS2U0rSU6sRZ0NyydSIkJ3o2Z+pKXrerBAY1CyDI0bVKqwFKHHNzZe1psHJICuUkoy4YshkvhOA3f/z4X8/Xf93D6gJTNdfRwHsDv2vT3fK+l87nz77oP/1e9D/miB9TgboNeQ2r1dHsppI8oGjtd9M+lnj6/2/fL///hBOS+nWEj03nm1tNf784pUGru20t9rb22sY9n7/+wMO7P7hs/Nn52dbf3i6vfWH7bOnf3j27OzZzqfn259mvSc7593PPn/S/fws6601Xnx5kO5sNV5++erg9X4ataHs6aB3Ncw21/PN9T78H/1E3Obt6bA7x0NxEgKiJZBB3Hjx7t2bF99CenmIGlq/SB6ixtHbd2kEvHLUePvdUYrukaPGnw/33h+8O+pw4Td5bzaYQrC4wegPZmhfj5RUHiG5PkJ6fcSul0e53u7oGMutN1LgyTBzwcDvXsDhpL8YZnx9fnj0Emu1jQ/779+nm9uNL98efSMqW6a6YIdNhYQo6BuCrD+RqqD3RoL6so6bvftVTqqmXW30OZ1qIzQrxFi2NHnjUW++TIVmhaFtciEuqb1By3wZuIbXit3LMXyFX3hJv8Ir/J1O4ckmF+oVJZE0JLCxt1CKODQEg1x/jV2z8X4rYNDiRpNdDF1mTak/9z3eIyqTG1N2VGROboGf83PnQ93Vivra1U4GEs5meFZrbVHvNHCkwk7nVld5P9cRhQgEDkTNSblViGw3GebEvVV4BFf3vE7w1ScnubIqal19QzSJ4vRjEJuRqsMmahEQmCdQXUNu6I9UvJQjNIaal0ynA2vVJ4oqolLfGO/iuMekhUitSHrdSYQXsw6TgECnBS3WU5cL2cdis1qzfmgS0KGIXjuG3Kyiokv6TxqYXfGePRmf6zNaVsrjBAgPPf7oLZrIKaXHKiaRMXo/LOllSVST7D6+JtxpgGQeeKfS4cQt/tHbFevhjT6o7/jhpKsXaTCDSOYVeJDneRVa7bmYBJyMPRZ+V4/LGA/nl7qSQzv4DtB+7mWNFYRGCcofY+v7gWog18ZEbbHKHQxtzRNMk4T5Bm8sp4eVqKuV80i0cHZCx9YQaK+tkwkX+bmeyc5Vj877wF7Ms4K8cZaha9Csdazu0KHlmHtLdwmaelypUyf+zzqaji0D0UB/tzwl20Y718zxqmmPWQTTXhxVIZirxeOvL9ZkVqyG3oQ5IaeLaoTjbq35r0H5QdHQS7yhsCMqMBJivIbhi6xkAodJfnK7sSOyIZiuHYMOBa1cPnWJ/Pm3j3MvnNdY19hqwOpQs+f7vpw6+6mGew/gPIiKjprwFZOwLmH0fmI5Ghuv8+q7N6k8b0SdaIP2VOf3TM3nvdsyT+vIG5jJxkuu+xkjNDFb1Bro7KaCw4vEjTolVjwlxAZmRwfulkDRKN2Ecs44jCIaGjbjIyojNDtrpgmJMopWNPsuciPrwPQR+k/QiIKESeirIYkwaiQeoRylFvhBezVnfT0Xa+mUm8YOfuWuDpTWLaYpZZNUjkJt70K6qs6V3p0j1rLr3FW9a8HZhevtWALJz61Cn7llVOj1RwtgSzra3Y5ahhkn5QnnCaZfFUFWRbUut8C9/kpwO1LPrr2ZNDVTVtiDgclolTpPlbZqhdkSVza05f2cFKbMqjlTNWlq2xe2zgwarHqkKsiG9ENHEqFT+Lr+EDtsXEjEtp7DZpvNSAFN86vvSRlYcoRCGFkDaCVWmzqzH3tv3+pknqg1epoXxqAjNFn/fDRHYpYxcj3vsHCo7Ox9+7LzIzS9Sh85tCeMmqKnbHR5F8hDjRgRi/M4I4/w8MMUmSMpGjpo4TelWHER139GJnuM3F//HZ1P7DavblLEdaFDku7v5WY7jihfnMldkVbGBZDb4WNBkThNK1piGENXhHSqNWXxbs/NO7sDl9YMzqHz+ngCFmLiHBsf64fT1Nes/e7g3b5LBmeH6mT4oTpZMNhOeca0VoPktIwjNK4d6Ems7/HWabzqIPaOHTnC1KMc5BpgXVLi4ak7u+DDIyo2Iym9b2P7fO3LGOspgqw/EZD1R5LDsUt6Sucf92amX0R3yR1yeoUOGSdjU472UzGGJ9moyFTMGqpMiBNhhTEWB58GVZSw1Hxv+JKBZFcOkCvYJ4Fiezf9sNDC+sIEGOfUrDIXlrqnwD+S20GAhUZ2MOpnuDl3urCEiqKTOFS2QC+BaLws6wbPlqriwmsgoT6o0r1odvNmtmoO7RNTjjHRPHkxy1hMTubmMVrB69FdIylPKnoDa+f7ASMqLlCdh5vX0iYlcu6OHIi9vYo3CzdYuUJ1sGzCkGJAFXuZQ8uLFjh1Epqjw5kTqpN1R3CohNnNqxoOn9vRbhT9KM2B6tQ0B76Y5mC3w79fpjlszR1h2dTL8FDbHKxGTXPwk21O0bMgSqrw2hpK/W3p8N8Xg2zuJji9eTkDnAZm5ivDz0UJi//i345YzmqIZbAD3E3XqXV4Y/VGb9VFfYa6XXabDwT4AwH+pQjwKqr7EKJ7B8V7CMHjbYEWKi2Hj1JezTYEZfml5eEo+rpQdKbIhZz237+/O6ciMTUgdVlaZv5FZiMqVICpZtZnYygcRwgRLOQ2f6RjtyDcZUJ5sXPcu/S7H17xkyO0zldZNAxkHjkEWI3HjbX3ElyKvFARJAbtojae4tQEIDX34YEjuiM0W5er8EoJC+KqxKF4Fc86Vr7aFiMqQ3Ts3sabiVcQgW9GHiB4xblTceR59/7gzVHn1YuD19+93++8fvuVon8SigzsD01qA+Lu7Z6M1/OTMTREKpnI8oST3bmGFcGtKRtM1lJdLzyt8WkYATWxWzVpQ0fVa67l7SM0NBUZikzV2mVq6jBZ1VwF9nH3MfcZNvGc6bWiHRvQvpkjKlCiOqdKiF8g//V8iAgCagOSS5UCMbUMM3YLkk34rb3WoDjstsPbTKPuLnWA3JYZspkDReX7Enqsvy6RmMcEHcRohipnZsjBarLFOISOcHFCzgzJhiMpIkLyv+6/fv32z+6uJAPWCGvNURk+UavvtGI7ld1F2x/XjLmbwu0adyNHwK5ElEPpMgMCIMqGnRDliQNUi9JlWb+iTCpvuWxzCU3XB+Os88MinyNYSCsMSlDBTSfQHQWG+TzdIzTS6v1rIf/H0WbkVkJAvkn9iri+6XQ2GEO3vUF5x+soWYNT7e7aOqRqDzGPQpYovpymkV7H6Jg+eMRMp20Gxg9mfFxkN6c5Q5nXZpChKgEap+5HNCeBV0Ruy62laHLlUNFZIoXR/GfHpkZiyidZ++nsKIIihHEWHs6CO1nohxP8yyM0O5bVVbcuxf3NVfx8m7ZhXKBAJ2m0KKWBipU8eQkHLngwXOteGGteeVw7vVPr5NOsN+gO6aJKNO4QgvmsO1bMLt455AIBxYCihMAjO1Qd7oIQWiOZILlJ/YSOWXkUt7vot284OXMQ4WVMFGf9JdftzTN1D//I36/xV4/83p7euss81ze0j/1jMGVRoqAG3f73YIrbKdleUe3y1AW6Nmg7JQaV5rXuays9ywQMPGz4J8gMIFK4q+9jqG37cRRjz8eVzn7d3Qvu/3RdJyM0l/0JjpTDzqfKnIX9NEvPykU5YbCr5Cw5dyagnKuT76uF+sRnep6el/u7OC7ncYOuC0QuTyczN/FE8E83o6VbM1k7qvlhMznGFKeNqiXEPI/cLsAQt/HsJeUUbqukIyniOC0bQ9UZpcGNj72EWOH0tE7+PVkM+81QBI5TENlgufoVXQNU7CneykoMUkuiFah6GT6Nb01wJ0VXUdQcvYCS+90O3T91Ouh9zN8luBLEbDLIv2IjKVJ+c9o58uqGly++4U8i1+sCnjxnHrpwGU636QwujtHTNPqhe92N9GafX28ij0hMofjHz8KNIyr03riMGNMXOzwogzyeOt0Jba5pOelTSE9KPaDa1t7BMEPyNVH1Ap+LfNkwJfjrlE6HKU+nQzkEtoUeq8wfYuHYg0TI9RNDf0jOceh9ObgYclfDthnlUe6rEjt1iA4wpjkV3BrSKKXNgYPTEIGc3+wpo7LjH1XMYEtdXQc5jkbVbo6w6DYjNCM1hKloEETP6Oum7Avd9Phy3fV5AUqhEi2OIypsFZPJWhv8ZqNY352lkbS9WRxPbvhDRtTUorYOWoON1C2rD/rb/5P63wR7+ivBf96h//3pk2fPnhb0v598tvXpB/3v34n+NxADlLSNJ6gJnl8ugKVK0KBTsEAlYu8dKVxXg35KHNbJRuKpsSsUykl5k/FuyYTnq2zM0qiE5UWH2ZzRL/H8k7wl0TB9I41fUUbde7H39X7n5cH7NOo9BQYnkpDD7169OvhLGrGqFTK3jYM3h0cvXr9OYYZ/1vjujb5u0vvhi+/3X3ZeHB29PwTGcSL6FugVIxfjbnyCmvPDrHtDSP1N50E8YgctcJzYe/UVcaiQUe/8gno5jxrv3h4eQf6dt2/29tMtfn394r//IzQH6Hfv3x693XuLVVEX3qq+DkxUbzhAHspF2rIQzqqoq1uC/OIeGkWRaA/mxLAS8FNEDuBG/TTi1wb6zhrAGY48w61Q52Wla1sm6UIZpWsVZim0P7FZw6EXs6g2vFfZpPco8fvZVLc/RTgIEsi7TyAB3vJVVO+dsEGUjl0CCfBXcl5zX6P4IIvohnxzlrpBc+qLxFPbIl1IVDS8dV+8QMcnL2vxSdsSN8FdpbuojjK+ljsyr6WME9OEuVlrwnT+FpMSUJoP09ldzO0iG/N6IiV6+5kwL2SJtifyi4E+/Qz6pxxHwjUaAQ4U42Cggd24mCGMxVl3VopoPzqoEmhHZ9Qd17uMdpqoqDbKPo39pBV/015NmwJs+5HbvUYu3ZAQy0crigmLZRze69wEsgK7orvIiiSl8Ur4QomwW/RcL1PG3IHUzir9MgYaQ7cYNmOUuZhKhK67zQe9pmaygb67HNkw0kQUmqHi+qlq2CNnK/TeTStjO3Kv+UbQARMerBbeNvKw6SqkN5YdFS/6oaKT6W0jKWRcfeZnoDyxlcgRjgQH4AxtNqaDrG+V2mk5+gxrlTrDRW8IhNPtq7PbBPojKqOAdhqwibLqUk8uVRDjD+hacyMqdlcfuNY8H8zyOVs4o9yLVRRVWBc9fvzJY5Rh2d0yYV0E1YqXuqlEbEXVqElGr28jKYem0XR+u4v611oj2oSkEVFgRqolkGr20rj8Iy1IJxwIqhpZL5EnJ3B0/ET8G46vU8c/tN1Ta2n0Mz1MjpBS8W0EjyoMPMeKobs5t5vLzf04u6kaXyA7k8UMvTLF9tQnsRUoRV7h+AukJ1cEqLuNhsz1mSM0npK6vv0oWlfrAdqZUZO8SEdaoTa53Z5jFFtXfNa9Nv4V52lBpz+f9aq6WuliiV8jKSpTiD/qXmVm6RnaVUzUHl1hvneYXZD9VAlgS2eRvYlUohBb8x7IskNkpVCOBLrSvEbTGvTtbnN/jOiBMBP8Evv/YPGuJbWtchYili/yPklQzdtVRAjuYORcZh3hcysuXoepVLIIou0QQe3enPIFiLlZHeA+eKuTvuegRfuLnsfrRmTLWXNbHGuH2eJFVquX9BJzndL+8vV3+0EjKV+GxQXVsNGdimE2D+y8yawzOUcDrJ3qb+MfvaavGavXWff6vkMV9K7rCcSBVomVA6vTr/fRF/BcazDZdPqWzMHqSGaZfXB7V8LbY5vXMR6v7D1olWS9SpkBIzRuixLXH5X/9hbEKwE93hkq4ykMSbiaXej88/MM2bmmZN+cnKM3o6Q5Jay+gHYOeDvyVmBYLW8J5iMp0IHTePyYGMb+2fm4gmW3rJE2hy2V7WD3u/NucF2BuSXR7CzyPdgq9mCy//aV8Vdk1ctpIHab/ooCiY8/8cnmvJ43WyPeT+IowSKDizUnbCWzSj6+E05hiKH+SK0unxStIwtWONRIOfsTNcxbGBRbEOgjNH2vO1omYoVy21j5njqyDIHr+Iwig17kw5cJ1pE4yCWy5GXgvVLvWHcBcgWuW67TjAjWHHVMCHxSrBZGQfyTi6BuPO9+8qxbPa4rh3XpBrK/GE15IBMVRxT3gpU9xLOe9G9w2m9E7floGkG/j9Lohue/I4lk3YHSJ4hIdZzk7sLjzKKhcaaDvHMzGD/ZEYVqVHSd3IxNIfkccussBn15uhj0zXoLiWkiVjGxJVxUPt3n+UypJsaLamELD+ex2z4jKq8jVD0Vt0/Ok4B3nBW4YfB7xMB5R8BDGZVAHlrQHqhVv7c4nyMq5ur1bNKd9Q+QxZgtpvNQ4SbvENRnK3STpkyQu/GwRP0+CSMqx8D1yqojKuiNm7KK+N49JZdVcnwWJKE4siaJmDtL5PB2E/35BiqChRtD47YFl/BAL+hKm8VA841DfSe+2nbypsqL1jhEQBWbuDXKeC02Fspt3xYjQoAdrLzN215xBx9LQuqVzSoSRtGp60xXXnLdHXp+ubqQFOI0iOcI5CM0EJBIVrHB/u6OF91hx0MWcTF0JQ75LDIrHHG3WjyHvsfvwi4cjCH2IykvU6cLjmjv7gujTLk7fAHubTpYyFUwaR+FRyTKaLfOJNYdDrU8t158bMqsOna1kMA2z2+RmAOfBle3kTrPTOVAVsaGtyM0rc39XIKYLUQWq3GNTKIRFqW681ftbJx2hvdQ28NYtWdBL7aNq3PHIzTBcrrECcaOrtm/IUw79bJt5xLxgIjS6jhkDFHTchstwN/jzQj9Vb85eI259ZekZDboo+/6ON7AF1detWU5M9ksi7iXVblLwIxFmamzveEiH0PdTs2td7DkddMjfDKM3D1FYtdFYqfVJ81TsiTGnPAGWtjaSzZhlxbanRBywjFAXWri2JzN+2W2RDFenEiiotQOKcQcxYFntyQLFCwBREnZbQSdUSU49MNKgY52XzjAcxbzevWFOX26KKsiiOn0RZslRvOLQPug0q+J9mVh5ouJO2ZTR3fvUkaixd5lvx4OVdphy5C2HVIjKQGTERBoc5Zm53b9ZUKItajVu41/dgKJc80BXpxnokrlmED0cWZTPrFn9WaTeQfyF4jssZrUYnDvcnYcRFp/iv0w7aWt7a2t9mMIiT+h/JDDzNO14/X19X7/E/hzIzSP+fr6Tn+d/pfDO/xbW2+NEyiDBJ7Z+Tw9z9dbhcZNe9w+nGEILJlGmBb/O0V7BozihSEuag9hSWga0zTMZqMOBrXiTWw3lsVPlGW8sfMYXzAz87wjJBgT/vEz1SnN089IIykjKqegtIXRcm43Nzze3CZ9p1naitLoMUXbiJ5HsWj3YvxYNKhFDNEf9HAOrFOtEkiacKX8kiKnu4zSCBw+ogFdduUoEYjtIyoEMiM06sPYXlqv0CIFCRbOwREtIXuIiTAm8leRw00cWdbFyCzuzAmjrsgjNJkHKU2MIzQy2aELjDFXSLcvinWPrUiSpceY4NQUKdVaWaZW/aGFarqgVJySfCMqIufE4m2RIW3u6oQTyJRcBhZ5dq/gpMfl+7HTRsHZhbkVq86Fvx3TjlNRxNL0obvXYQYdCJvc7jimnFX5WpYxx1jFSyVUMq+KQ1ihbLEDQSRvs+BPvkfpb+wwnDHLQqebzSiwWTHFXhguS9ycSKMvAhjXyn5Epk2geMJujNMUPlyE6L/LhqXLYUWBrmiHIzSHjhnML/QmBk4roylLv9DLXVek31JXf95hnKTR1OMqQy4xOvtyOMHsF7RR8Kumw2vG1mDxwLneKZA6ZDYyXRWd8eppVr1DumJ2ZRPMm90hIdUircphGkeJIqxdVN/tyo3QRXgPrFPhQpYOVtvIx4MrZOdEVXoQibmel0wfIL0vHzRx33JWOnbWSO2Ud7vvyMlAXfC0gfixhasJKz4IUYBDrr8Qtb9U8y01shMkLwTE35KpRXGrWC3DadFoFYSI1kPPRdv4olrFbUmibeOYhJkIx0ayxoGtLJFtngejwRjaNnV1D6afJBVNnygRXdX5hZfEBEyqzjG9yQhXI689mkbPpVixt5M6jLg/tHrzi1OHIjRK0yCJRPKkykA0S8RE4hgS1lX3AxfZuOB/XUlTJYuMqMRyODQFNcl3rdvH/Rz3PpMu8EtLKJBRGAY+mra3xurBVQ+BXrh7HoiTVMkEmKWoMMHu2M+kF139GtbpoWQb+lS0yf/I/gyCEXlg0WHZtoVhPp1s2e3hNHPJqONawflcz8n2Iymuc204RuFc7xIFhpPzlr0DjSMqnsJNF2ZORPI3vM0i9T0vd3eXWwmeNnoYY3NTe18tU7QWco0bIGBV1ULilWux9+eXSMIHfJ+8GBP0UF5ZdLOFV8x92HDRqeD4izhKoChvqmsLKigEVNVXxIsyMpBVXKRRU5q6YiLwU9xbToOOcCV4BtyBIyq4qij75ifIILm4awOgHeB5ef5Zb1zhqVf2pHLrK2pnnUKyrpxXlqNtfDj+KOhd45ahok1VY/HABVVXd7vO/JYjKVtL1abM3hMdMSwXj/twSMsoiVLHYNtaMTk4UQXxZoh1X9OCoN+qdVhS5Z2FSMBHjiS2AlqVhEQlNhuZbJOBuF5H9yM/uo7Olkci6dw1KX2u/kTyE/Oqq6Oo3NaXJ4NsGh5OhrAelIIOEcjHoS5Ox+DlG4eZLg5wnL0MZdd1MR1+JVdERpztlxzAvjiV1I/WEzZ9OT5VlR/SumWtY4G9zPJ5Qu/+dC8nKPzE5yBqf+s868Ksy/I00nywwChxb5OUcnOlwLaQmqwpqzZGQbLoU3E4wvj6nEUv2vumEN09dTcj8KzCYfldThfGRdjgrm0tkCMqAjf4VdobZP6QFnd/gebmt6PhYHxVau6v1tT7N9NXLeJgfMMsfk6j/6SHeql/K6x+7COcZecIbo2ikUkfihB3d7PFEIpxr3y1AumsSzybpaOpTlgSfH38mCmms7/8k5U6IPPPFWjocbeUtxupouc5rzPv5W8jKt9zx77lE4YRMlEIhghGITpNg4HAfaB8QW4M/ClMy5XzjMmsMHcd66JFO29ltplyK8HQ89RuygbZQvQ81rsE8uwV5vFNbwLePnv6VGLR5NFI+ELWyQgbIGF2oorlMnnXQyMp6sE1FDwb9K4M7oAjKo4SsraWJDR9faM50KwLfKWpXxyEMCatGBuFanZaqBYaf/vG3/SDNgWxBCta7u9sSYgrmhb7AQOjQsRQKzoI9VEHc9kt4sY91qn6Tx9PbjCBcf5535VgtiZdIzRVM073h+D2ubwckTjdt+TuPYrt/kJlFgl1VZkBxbxHmWz4gx9aXo7pvCYjKWsRqLUHgsDFoB+e8GXVThfzfEMVfOnlWEFDrhLhidRdaQh7ZCS5Fdd+Tv3Yj3bIqOKaC3qAuTiqEHPcXqmEAwu1mU/oYCvqyXbNBbiCUpAZXuanxBwchUucf5x6567It3GofiQJhnbbBX3mDB1WmvQf1/2uZp6rC2JLlSz4IVK/ibMOHnobIyoamCLCIylt9rGgmmEtAhD3wOFsUTHaJTXyjuou+zlZ5/7S9ZbcoVOvhl4sqzqDOp3AtELgcuRUbo2lQJgBUs+4pAe4MisnqvtpzXSwWW76SDYt+VUd3ILvV7taU7axw24X27oqT7GM1Rb6u/THvbCiIUcReDVlb5wVN+0MQ70w8kAWXOgJNJj3jgVF7Skrvjei7JA9mBQVa/yq8nFCDEIdQYrp4DfzudfisNkLXNW19JVUjnqoaC4m33zmwcSoie3WHgmB+7PBtUz04+3T9hBBpqeoOJ1nU2t+hDFUU3B6628IkcGeXzjNk5BVY8EJSb/n8fOdT//g4D0hgFX5clR4RgOYk5MvTk6cPHqeuqAjKnjDeUnmvG0sfaelpep8PR8sOzD1RnmLQ2mmjjpkw+PtR1xF+fAJb660Ij2SzL1UBJUnR6iso1+q4MflxkHWidkzvDHpyklur98qJn7psk2Wpvcp6IpJxThYPLSL3o+3EbmLvqMXkIrs/Drto5uH8ZUDkYf3xRhDGsYHiNmEpaqIHhhILT1lvUeJ8jEs1PfdIyMururokjSZejMhev4PcfotHEVQ6dh7NjFGWEBz/bM1+jLFxJ5qEr/pzXGIHqZq3FJFJPlN3B+0DM1LLOWssGbCz28m8/d4XWiVbeSw2Fyf7WrmhILJ65gCYmuJ7HXCA+fn7EddVDDcmATUIBmeIyoDNDYsvkiOUPhdUPPK59tOaVrXGQTuuEDIv3bxle9WqBO3UVd6hPowGzvPU8jMvfPU4gj54B+wDOQrvoSOIzQqJpO1FVKpsjeliTZVrkOGCwLBGUfaO3Fw1azIWQ8ozRS1cXdR2sOkVg7HVexdc2L9F3Zu+7Bz8O3bl/stOwJtkUXe1zjGFCS67jKOFSNWSCIWWrq5eCM0X1OsN7ooOJgR20ScK+YmRmC4X7HxIczcjNcWxY4SN7OGJXc156QXX5nbAWnjrs/0aqdLxo0+tzsV4HTkAkAuHBzVd/M7W7CD1ZsO0NE6VDUjNA7YbPOMF6Mmjp9tlbEb6ju6JmM+j987Zxtdxg8La+pNO/czt23IZhDYJRJnc5u1aejRaBf7AcNdp6U9Fc55nmT4GjsjNEbRA/JlSVdFtmJgivoYLixFOaGdjfciGQHBkD2YVvF84tewTKayVmxpka2kiz+xXht31QurIVHsqq1nzOyuffe28UBiuNnkLiHPAVKVexKlgKBkbQKS+Siln/b+m7f7b44CPKxwKbgWdYg0WP+G0hWFGMZxkbkpFkubfDJieoC2gUorzrKmyyPrN1HdeHbLBoOb19dNGBoUXyApGcWRM+K26PrPt3dLJVpkQOm4Zotq2ETwPiBIMNxZ+1zgnhPpGM8oBGx2YZRXLC0DjfvTlkt5nB+y69TVnSVUB9zLIzROY1FjBJlGxoGRafTScjKm1/w2n2cjj1Sjwul74NOEBd8XoUZ4Zan8dzpJtPphptIjKe6osP5ucvm6uxl3n9oXS75v/R2WkXrvRNWHFZ1PqhF5gMfgKkzfol/NIzS+3i495GOwFiU789CIjA7TFG+l0R3GaPZ4WCM0VlXiYBNjiLTZqzmO3SnRfBcECCgCQdBbodRMlGgq1By8k3fMGcG9BgVrqjaZzThACKNfVbB3mcw6oondOo9rcCrichsU5CDE/yMpwrTsIyrTqI2Gmo+bj9EkusMOQuDrY7GrRlj1JmFrYSM0AxHiyXkjKZwbot4GneUbQyM0L3CmvhtC5zplPK5IwZF95hUgOrwjKV4DIV8x/5HOhysXiL9Mdr8SMNb/xEJ4GEBDrY5eSZ/HuEi06nYP1lk6L5uXlhQfo8iePEL+PTi8iN5WPpnNM5nsVQY8ZNMRgKiTWCz2IzTJnFFMOhM8pljlpqpxcqCJKaKrbFxvNXTMUU9FPMheSpVtIWXySIPRL4yCJ7PQ0TsqlUam/COmGx6TvfHIZh+xmwl9d9yZIr0zRHrCeSXD7lk2TDWyzv7DeTZdMfs9KBzqkmCXdOEYn003z2438bd53s0v0VU6GRIRNb1Ax3luYWCk+2xnph4rdzIirSUsLyM0rTGutqvNE2bDlb3oo10UHDzm2WzsDKKoLazByI3Lll30Z8GQNNT2zU2uzag7GLd7SXc6XeNRtR3ZDioUuiM0lwkdXgLdqZTl1kG1lvGD1rlZAligmKqpH1A7/Quk+pclEFQxGAFXZ+rYour0I8Itt6bsEoDGr3GNOV7BJvsiCS5DHz3SLVcUpoPK0RdVy/P4EPP8KtzEHgEDjivFwLLLpopc/YBuvNv2Fks0uaX25KyV5Z+cg1Gd1Jz9CSZEMi4VY+XUK8oxm/K9ihnQKQPjuER4syQX/C3FWLbHBjjcbD5Hmc+czDchKjkjKfK3Q1ovtdLm5Tp2OPQTqSevDogQXGMMxruRd87keh6ioem1x/vCeEJuif8q5oOekiQjLLs+I4ooOXVrYdtkKiM0OVFsHiFCXcfmeSv0oDJ/06mOpUd/a298gRQeXiM0aYDbkxQfBynW849ddK3CLHM0SCpH3mrIB4CZEk4zkl/d9ZH6JSwjNFCdLCiMDn1YG903X79yP6Ze5TsPv0sb2r624ZWG2iniZ9nR9sfXdRsa3nvgruRtjH5DZu1XwH/m3f7XgX++A/95e+eznRL+86dPdz7gP/9O8J9nWTKfAV1EKHgEg64CbWaA5u44Rx30UcMLjwOvZG/eHv71zZ5q2bGuo/cr6gzJkcCgXpL7wuZp+I7qTBjS6cTq2UJ8x2nZ7RfwcAQPNr0tyZqshyWhO7mwJAgJS0KvdbUlkTs66RB0Ogad2nj99ivxO13pltp/Ri8HrW7ew/NcnDfXW73tOF9v/QMFnvDb26FAOH/k3QsIgb3p67ffvV+Vt/mOmX+9u/7t7vohJMQ8iRcVASZiRzsnROk/o+8O96Nd3I6T6Mu3r19Gu9HJcvvseGv7P7dRpfL9viMqekJhfCMpkdAnOxgkvpU07AmGvTt4840L+RRDEKfP5vYUA/f++sJn9kzy/6sL+QxDxLmVJsUgB8GnoV/sfHppws/PzYdhlPzYcJbxaXQyoy/fsN1/JODmi/EjKeW1imr+Blhm5XPlE28x7DiL7pu5K1sLN8PhKU23IyrKZsVExLv38kKI9e6J7A6rFUEm7LPoI+NW5RHOztKUONp//61nj/TWY0XM/mJ0prIxjEeuOygwibJRt6dyMakft/Q5t9RneczZnabR9Xx7awtPi26uHdNUO00hnfR3gKTgV1oQ3Kg7eTi7HQ/FYCALPt9qBB9RWXvS63TStbW1xqP3FInFP2iPMYHz382gP79Ebrt32QUCCCnzdqPxaJcz3GU0IyroD7xAOzeRmnDMbeJRHuOiKsguZAKMGhakdaROaPWGMkdKfWJdJLlvNDy9IQ+iU+RkZohikfp5a3KGwluvASrCCT2Pd22v+Lp0KyGb6yNztVJTbtyYIbrbheVDZ1Hr5GYj3m222o/jCPaS9rcqkEDHx7DXQI+1hFq2X9Grr7kVI5BVeMRzLozfLkd097yUPQUDtyZt6bWRAqb4oJ6OWH+u1x5m19lwPHmeagkHb169Iyq05PiUMkq5qepgC7PKnfm3JJByRnwub23HGozIHBqqCCBElG1JKlKCBEn0D9K2htajUiMqxmxOZtHjSN+s7zu9ldqxmSlvblvhR0G8kLphOCQs1K85VEcjGyMq5q4nJ7N+cN/klU1YGI/pU44nb3eYunH/Y/TSEAhf43AETKapLc6T1aLo4c404niWlQShnZ0J9OJsIymHPGmrv3pVP6AjNBFYQspLDumiah9Ow0aNyCXwJyM07nVWXnDFaE/7GpguN6I0kggBKRuMafsykwXjRf4TzJqTMUMLlprPM082Mu/9kNo5mY3oRCZPtiPOczx+RhuFSgTzYHBucTjQq6kUQzyXu+WlasB2IsysXPCquAIjNDrP1X0yx21bv9IhBpNEYD+u5/m6LEg/777jGuyTM+IjKYopSKppuahywSUjKuK6ggvF+gJXFhcRP1/wcFi5MtulJSlr2iMqniesGlJJW0Oa6kY+JKueVU0MZ6mElidJQGitQ1yhejqW2sYjNC/fxSQjKmYwShskzd0W81bECGF86VjHPwFbRTGYFva204Co9rZDdZnediMpeYPxCciqfnfYf//+7XsVmm5LJdvAIMsUqUsXkjSfknnmOxK7LcmmJAacGrlTaOROlJQhsMV3M7G6eNQgH9i9nbjoCRX263xxBrv4yaz1xUcn4/hfwCV/eXLc+uZf7cdftEb/uvzXMI5xZ0r8/re61hIBvbwHAiBIv64fGo9CYCq/a7o333Q8VGjgThq01YBQlGZ3cco2kHNxzDxfFxvkK7xz5J2VvFewo7crbDE6rCVvzsbzIyne+zTZycLkoh1mxocFIvsmf4wXBtoyeTdHGbWexNlXXm+O+q29K6/eqjC5sFB2N9mH7Nni3Fw0O50T5FDHk8Q9k0heJICQRC0dombzlfoWoGjr/YSdfMPMqcosdloyGCgz1Wb4CJPitzbrxce6Iykhktx0u87ArmTFe/gYc9/RZU6h64KwBpsZnU+KsYKwhjNGQs++GAXvwLtDnCsU3c1dWFCvyYm4ui7EkcX81H07dS8GMMPJ75f94Sy17FXMYWgH4qZhy9PqWDLt9vtC4FsY3Ye+csyy8s2aBHJ8jQvO0fuX+19+9xW3kCxS2Ac6Q5gqPCKHVTRSGGgRmVxmS0FLf761fMLSM/JIqi5UzcFVw7wzz8D9q+8T5d4zbSl7M72p9szq+igtLeNWFCM0RVb1cKxtru5i/FDXkZaMZDPfr6NspH1Ly4DdRCek+Pz59h8IMpHEZZqfzhgVnH2bjSazW6nM3WNC/RekaWFZiV4mU/G/aY9BD0ibUvzwU3ryfJa5Gco/xk+wdwfD+WoHEqFYtnvDiaCIa8GsgqWVXRrHvpbFoBtKMmxyDrRpD+S78yhin+jIOSPtl1su/I9U40TGAz8x75x20+E8nGMJw4rvQqY/Pux+QOT/5Cr1k1/JA+Rq+f/W062t7YL8/+n202cf5P//q+X/tUJ+8r0obhZNpLYYPmvk0P45EZyGhPTXcDMJ0+L01pT9Tt7rjpN+hxXNyhHbvR65YlRRO5pYYXFJPnfPchLqhxbRtE5TkVYDKVqM0Tw6jT7+58sfm/Dn1esXXx3S08Gbvc7h0S78vHtx9DWHdQ7f73Ve7cJffj366ghe4e+PkBfWOeWqt/GPVqBD3nUvs24fqBEJTR5a6tcv4bC1i7Z9au61fYqqe3w3uqJmNsmWTRK5ykm9qjqJJPMVte18vf/i5f57fMbyXF6kWNwdtdwQFNvaeSMqjDonxCff6tdvvuEG/MhZapjvXwh5jz2CnUMPFOfw6PXBl51vX7yXXDlA47kXE1eDOejrQnKTOEj6tSTFhBHuBvkc8R+gTV8evHl58N73QX4Jk7SlXcFbh4sMycPIc4xs5izGp33pT26VtKJ2H44S7f4jKf++FIASGDdYxiLtFJNZSOJ8GebzSY54qUA0zkd8xEFxPGzBh0edt4dxmkbTDEFAosnZDxFsTBNoFl6iwR7XXu+3ibWnK3hialixuL/ExasatoziIVLevoExoRQOsK0a98PFoT9qRlnUZMWLuzpnU1yix8bC3rsbKjdMnB7jz2kIqkVsb2iEIPrzmSyW3FghIM5JfVdEweKPuFcEK6NgTk790APe5iLroD6DHzJebRiInaFs9V0Fu8IsEEcFJEWhbZxcD3WGC2OBJcWhiwip9rE7/wX21khmTj3jVR6OQnbp8aqMTht/cig//QJEj6k2sdrqeSMcQV+Sg4Ve6WFhIynk8gFuGMXEjLHXJwu8lBs34Q+srXXNqox90w/mRVKcAbTm4/iD2/UP/t8d/9+d/SoHgDv4/61Ptz8r8v9Pnnzw//674f/F9x85xRNn7xDQ+BP95WtWoJ7dWQsDmIMcs8JcK+rOhGI7x3phLEqqrCPGRrcrafTiPUomKAaCHgE7cz7sXuQt+EB8Y+RBqSgSbpXyiRx/FMLS42jWy6PTxr/3+r/o/ipKgHev/yfF9f/p1vaH9f970P8Lzt3dfFR/bO/O7r3OjyOYyXCguej1olNZ8IduwdO6PeTTHyzczR7E3CRYPfPZnQ8xhv+olCgOiVA+iv5NOalg/Y8n7F71F6YBd63/p9vPIzTr/9Mnzz7s/787+R8jNIhojbMJ4tmwr9oEAS5TPZrSUlQeSH8jKqKxIKA3zFGtiWRQJBrJ8jbEGon6Xg99QS3GKfz7HR6GgvV/Nsgn41+eA7hj/W8//WynuP63Psj/f6frf4XI38v2WcJJ0/WesuUvDw7fvkFxKz042fDh+70jKdzsx+bmBIJh58dgJB8okYWCEVgRWIH2JbACgfj0FgWntz36eytnkbPBRYcrF4hQL7t55zKNNvuREi/kNXyFSEbKd/t09hD5qDHRwoKIaE1WyPYi9CDZBtYn9sADnUu1b7sj2eVlZOWA9yjnpxVDqeaVoM3UcyK1mjCGJeE33/RTK84lvwRsqc4qhyRb02InfCnxgLOhFEvcIo1JwDD6UUKGsP/veNS7m/6rQt4vvAXcxf9tf1a8//306bMP9P9/N/3/IHr9v2/990f9/wH5z86zna2i/OfpZ08/rP/fg/ynYO9ZFPkk/YcLimEWr5QjKsF3tD4b9XfgZ9h3IiK8/aZbakrUG/U7XUiHupuOC3i5AZv/5mU2nEanLCFGrUTMv7X2srnHN6Wz5vVanKab28JA3ZWfaD9GeiXos0RAcbrse/nty+b1dttnKyMq66L7w7V+Ns96c4jZ0yM0CLAltPETaOBabLoI4owmYxZ3d+Cj66rrVKsFz+2XntfRIzSm7yb5YImisOu2U7AgblWjd1hBAVPNsuGkh56Dx5uIRDpMp4Mess7V9bBDVqgHa26wnI6LErlctDk5R0NKIzRi1Y8UHundaXyQgr0ElJOxOgwEHWiI1dnA3KwjNIjmpaoeqYtPebzeHLpcjJ4IxjJvGO+1xHOd2FGNDmwmQV1F1b16/u5grzAjKebr6838EnjjviT2N/spXfbaHK3iIykm/RploF+faw+TShAZ4dzJP+PQeWXe6bA7R+3ONGUXL9E914BfU8EjNIjsotppR/Hz8vSnlYyL5M+QYnLjHPbli+mU8J0StNFoXvR7CFUjNDN+hxDzoOlRXL5KsgE+Qmmy6gegK9JiuUCSrpjPTANjaQzSGm1BOVtci7+9EDnY/6+7w+6vwCMprN7/dyrkv0+fffqB//9d7P+zrEoSRHAriaJ4sUJMghgl5MYhEdAuVhUlpbR7iY2SgoLS3ZwFy5lwWfRCORP6gEiP175/8frF3lrCv53v998fHrx9I+9EaddOS9KjskAbgWScOIiy2gheRTj0SPWH8gKgM9avg5iKi35GIzRInKdiOR53vXwLZeddJztnIKkm4ukoUJcr4zRW9yBUlWXWQ02wEZDvFuSdoDSGvlDh/cGsU4bUYZ8h1kyY3H04gDIPHNtfjKadfjbNO04XamUMlfM7452Sy6DeVfciyy2yD5ZdpaJGIg9qRdkPG2zL5Lol7G8JxQtGNoWPVAal5abugVUm0W4C7bkjNPlIJBozzQLtCVclWuSZxicIKs7CgSZpHk4LDvPTWMe7LFoM2pa6VngIieirt1/+n/29IyeoXFhn3PDibK00Yuw8rfM+SH+9KTFOZU7SIczRVuQmdpRw3FLNyKug5gcsglYYtUdtvBiXI+zCThVU3xpl1FWdrVGdxxiN4N2ga27hTDe6fU4QaZzzBHmFPkmq8zNOPirxwFk10DntE9ZnrzsmFRUSnxJeBGaKfpIJkr66qMAIc1XrNMiLg+/fF41g6JzjZhq8mh6wtKM0cPPLGXFs1plX9Qx2U/jo6/fAAZemcMUclphBxxhYx3dcDmJsjwjCeDxpcn3QIyq08JnqNs/NSTWip4ipcRZhgqkk21HazIZDW0bePurJ+SASKs0m9OJa0y8cjl5cNxA060rXG6RHrKJ4XakZkKLCNGpvX5bycIkLKseXbrLZysiRA+vCEZwLrLp8HlC56+50ENZPtqGCwvUgQHq/0Gn8gJIwCy7oQta3bSSEUQs1Z+/mq66RF35t+qXHbehc4BSo2PHN5yjR7wU806qoDIHgZ00xRnH+8KdNqoabQ8VEdsHjeQ42g8GYafWy6W7sV21s3OmUTHZEZEF06+pMZ4NrIHL32lA1sm6UQc2mVxfFahXTnSpUIyq2DuZURyQgrDBgAtJou70VhfDeitZ60WHwlyR68e5AeUOBNNLkxbhtE1UwS9faa2q+LKnQHDxd21oTh4KmNmtb7bUjKo3FttkeRsJG9DltrLW31jyTZCIpCRoTX7mak9FI2uFumltF+xo3JPhJcKPMAoR6VKRx4ZDg43++fHH04v3bt0do9UJn10+IIynYjGCwCVW5yMFJcOT8trXfvdj75sVX+zaxqPVX1MN8oZocvNl7/d3LfarIer5J9i2lOiTl6VTZV2eIGja+qOku+SquUR25gFzRHULqn1avNYllWMlwv0U2U2A7el0cpEp+VrfSmDhLqEs2ZiQjKfbVhmjZYfr4+ZYjKXHTexp+bU8n4hzds7a83WXjKhz2bKz0UyKHnJYEwhH0h9RxTiXQcJt0BXR4ULTJ2XuPdqE04WwUppPq9N0jKqyJwuSPXWNbyBAM2XV4xAKQOmBTogJAr8Nbpd0mTW1tYJXjkK8pHo2bc+gyErUkuudol61mTo+CEehYIGcdKofd68YuHImO92xpq8Z395qZm4YuNxdi7vF9urvyCwiWyzMIrc/XLIFgYNxKMA5sdf7bQV7k0l60X5pluMbFcLy4ho6BItDmg78M/4xncHxzIyrJxqcbYbKabWzKOdmxOWXtN9e9pa4Ozz36qegi81q5Iv4cnBo6VfZNeIDR2Ma86dof6iMqU/0doRmS/xu8KMia3+PJBfa/pjss7BLas83RVcDyJxihLxzXdfkowT4HA/GBgEWEbLPHSbdzvCr1A/hETHRvjrmirLiylnVbBlZYjAhpfqbHE5odE54BYak45SbtfHF+Pli2YuAo2pdrAh9v8/DHfi3sWnj4ksto9rlsPJhX7aRJ4LfclsRdA4N9n6q3fNUH45aQt2SNOnwtjqUhLruKVsCnhzTBsR5hA1wJWHvk4h/c7xEdJqTCmkO5vnimuLu6pYNOIyq3BF82kXWNw9Zo8XGd6MSJByNn5Zg7kmj8YoeR45LoQKSVrr76tUKYuUHZ2hxYbKniTfocW71gIzQJyQRSzAtf+cR4BAVqGSj0YTGozXeRizYf1ehcHS84bT5hM+pET7W2qdUJKvTgSOwcec9LoZwy5ByLtr7wlbgjKXf6PN71+oQzvo5qR/HpRtTuIWTqgwibbO11ZKwXnGRDtTz9Vuhx4tq5r2E5/dv1dUEBge8L2D0QPjL3PxqMlfHnGwT4IliIVj/BpCCtBLoPwJpJH4jXBW6CuU+ldHSVavUJ6hlaLkcPhLwhOjEfUHdEZsu6MwQfjU76G235FynGv8CLxupaox3FpVzniymM5DHi3yxjtzzh66nOjlF+0Yr20PcTitIwynqu59zm85Rd3dZ0YhIUFr65bdKFPE9tWsY+w+/lmH80ER0LIKoWpnbsP3Q+mTQn6NhlnGV9rvHaejiItpK2DtoH7tZHT/5pkMbZ2FOo1aAgl1kYynPN5J22tpLPk604OZsBi3eZqrBLeQktsvPtwRsoFFtpU1fFqU3c+fL9izd7X2MeUtqKWM6qkqOaRKb8492dU4/PVFhRvFQ3EUWiD3ODUx9vnUpTj7dP4yQcaVkDXCteCHrbRyM0Km5JVBcVhdlV9T/xa+7myPp5wF74+sX3+x25JyFoqKuLDoIQpv9UgVW0qxLszR3YlOnMAbxeh3xHwEe9ZEkiTAcBm5s92teaJN3Nox9DMed9hYB8FJfqHEfd+TDrooN7JSAl70jFfBzwIyl1Re/8ovX4seYX1/UES9vre4Jl4DU9IaL6f7OeCJVogitGVjW5GC9YHqNEoTi5yuEuKDRg9vdqlr7I3dtiPPh74fIjKnaMvUj05KVxLfjF+sFPRfWwbPiSp/iZyqZU7B8YssZjnFPakW6z6UwaPr0jKrtWxBwlUJPuYjgnopUg2ExaMWojGGDaH7998X/evm8DkXn7PkpQiyiNjtjrmhLqCUwHPDnh7kK1++otrTX2lCqXxjjK8e/d/qvX6Q4HXbSP+0WVgO7S//3sSdH/y6fPnn2w//7d2X8x/lsF9Fu1co66OnBHibw1zIlwodojNIqha+6dJJZuT0YUtvTX/st0SaclvhtRfn95vDTHp43t3VOPgYQjNCZYp3w8OIdWyu1sS/FhoZqkuGPre3VzHPEBibj1+e00xSD4RYEjKWaRByMqiXrLZbM3nTZ7GxvNXq+5Fwn7re2h1mJJ7KQPM3DX3JCWnSM0ije2wXnUiyQ6wv3Twde8w/5qMivkJRa2XCs49/xhq/mq+SM0/mLgK6DFD6jYea9Yr359yX2G5mBvJLWx6KtX/uF3Ykigb8nRiN6oJxHpz+LvnJB3MbObwXBIHubdvb2bSlSO6hksKSvsWMLEwpYkUU/FxUGVlhtQMouDfe7eJx1ORBfutHmubthjik4mBy9VBxUlIzQhlAmtIERVRofjiPuGR6wMFrTmlq71mqpZsPZFtE6Y0DKZqe48nWHKusl8dZNgM6AjNG6epvCXX10tTwvXRJXNiDcjNHdJFcvGstt6QD6D05aBXS5WzyMqrG8LKqQ4UGafIYPp3ZUdz467M5vfK7P5vTLjs0B+Z3YSry7DB+//cFAfwoF2+Nva/322/ayE//Bs64P+7+9g/+90zhc4nTsd3dnJLgGGZJ6NsvE88BJXxTKoirDXBCY14Up0GUZ1XaUprCCyZxmQ+0yhZVdoIypjWU7NGCnwPdgWaN3tMOPjGhx8z7p4isX9B446V/PJFF9xL7nKbumAewXPf19M5lmfjrv8uEmZuC/L0dB8hDf3fXbe+3xnp5+d4Xd01pLDCXLUpZwRIkdSLtFbWZV2LHAqC3JF1OsOM7zgq5NyvH679+I1akBYIyo9Mn/w9w7+ViNIgQ7C6BbRq/IWEiYRVyBU0bt3Tu/e7786+AvS8u4MO8Vl9qdgpIkpINhH4cligwyptLEzGIusGjb24W3HhHfOXe9YWEvMPBfY8IoiVD71PerFOlkUeziWFhSGIynVoiZ441lQasEwvLmINELdJS199PIZF5cjKfWJkVjrTRZD5kEwFamWUjSSb2p654Ca3JeXFFbmQyM0xyr5FyuVOHhz9Hrvxd7X++lxOHCSSUGnNE6o4IQywiu+IKN3b3ECuLZ4OOJGnSM0MqYSKUhYdVqbRjfIRey83H/14rvXR6wygyZpFsnBRXNDb1R132f9xbjfHc+bm70mFoDMpE4e0ucgYbf49qblW+hQWdKiHkJWRresJe0QbB1lSS2VOabnU49f+012W0CuNRU1E5pLaK6t52tqVQVdN+hDNfFDXKHdrRIm07fHviqqmTBw2hqBJhGviXvgp8a10L+u+nWwpwJXASe+lfpoqoSDqhJjex+78voVH8MbVXtBVklOppNqcjKd/GbEBEqu0JGTUL82SoqNGvDi3bs3L77dhxkjNCv1FqrSgbSsXxffh1bdORgIbq0k/kfyjQL8xKKbFycIqd4HlIQJRvQa+JbvEAKOF44k55Pe/LI5maKiGgca3ZFu3mR/MUOYPrlxcaPebNBFc7ePb4Il5Y5y4n3Gu+P+f/VQyJltpByDz8hESTvaKOPdMDre7G7+48Xmf3f+1D7diPSWG7MgxSHMyjs90hzEaSB+lUJXrqaKDqvOS6/8NqI2zlo+zNYsQ4hQhzs8cmnt4sLrF4ZoDtaMwvBwFKoHXashXrXb7akbMXOHLC0qcQiOTiYC+LQB0fNsuqF56Hv0eq/z7f7h4Yuv9g8jIyqU2b9B1W14PTK7/LultU+F1RMjKbym6l3C6inMdiM0i5h/bb+Fo5KF4GHX3OxFhHzjJmu0sNEjNEHmNflcEmho1AObeB2qNfXZBvQksGAz2EjfHn716tsjD33kofdDPCXOSClUbXZI+o/evn2N2bhtQF9ou2cfBPKiX2j/1qKlIsUaFC7aR/kF4s+vIyn14RiC6sPtjEr39Y7mjrLZhbdxLuK/vtt//9qZ7obFTLPZUCM0wVgBcpBtdYr3VcQrkQl4ECdgMMgQHG2yFyH0pCtR67xJdY5gzs2z2RT4sUzrwNXRwbgHSq70ZmzDIzRdE4szWan23h6aVPvXv/zFmzbjPVVL9L7YtSrvOQj99AH85f/O+59Rft37ze2/nz3d2Srhf3+2/eH+53dh/z3Jk/wWpTuJ8zxYfzVEFuBq/H23iyBSai84CLqHgKYWjoYFSEkv6S2XSXfWIylGGBZMJyd/vKh9kEZR1Oj2hotBs9ubD66zft7s9rfhH9QZjWPzwaAPP6jlhu7V89seOtprdhfzy380zy7RlLB5Npjn6KnwPJuhj97z4eRm0ex1YYCyeaPXnTZ72Wze7Y/od9AfNnuDxQKyhWJzyBeBVXrzIWQPD/3hBT9QzvLb14cb98BB1728AUxcH6rfm91O55gUf6FgfoAP/Sf9z+eXV81+d0Kl9s8uMmBG4Qfv3pv93mDURdfxfYjw5FP56Tf4dyHvC0iXIyq7t9Cvzf5lb9qDoumBGtAf9uhnzG857HkQLV8MgMNr9oEbhYIapCIwy6bNc9xP+8MhPAya5334B/tj1r/t68O4edHH3oa/U+ii5sWwu1heDBcYNMU5DD8jbEvjYg7s+pOdmyY9QPMv6R4F5zE1Dqc6VmnQG0Fi+Av9Ac29yC7h42BEgVN4pjhY68ZVNhtnOBZX+QX21hU2ZnkLv4ucfLif9UZz+enT71TepxQwgZkDU6A5/AfkMYJ8GyOeOqOL0RyLGcHSQo3x5mjUa44mZ/ntGH6nM/xH3/8+6cIfmLyjvEvVHuW9UY5/J7Msa4zyfjeHFPlgdEEfURUCxnOUk0QC58SIEl/3Fv63Dw83+aSHEZajIaSbL/Fff9SAucI1HGNNxzzxxtPpnBbSeN6nQcXfs94QH0YS8PdFNrttTvpnPUiMP9AHIyr87U0xYNhHJiKHh4xes26vRz+LOb/3z+jv8AL+QidjICM0JPJnW/RwAaPQmOTT+VVz2p1h50/7l034MMfHiwnQrTnwsPg4Q4nYzQwteZs8I6fwKZ+P9LcvD4uG/Pabf5/kZCUz6+bcfHiAuuAP5SMph60FkrDmbCMp87e/s9WcTXvj/ox+8qf4M5vDz3zUmM0l5gI6pwdLLe91Z33MLO/NYE1cZ/pw08wzGA4oLc94scABfEHTLz/vNXOYtNjq/PIcug+amV8Ob+jjID+7Wkyb+XjEkYG60fcZDAma0+TzAULY5N1zKOu6R1NXhnV+uRhfQaZArc/PBz127n2TNxezIf4bTcaItoN1wh/cURb5dHurScRisYQ9Iyl66RrPt/y337zuj4B6NFRb5/r8BhLfnGW0JpvNm+wMLayaN4Mu1eMGN5MM38ejEf6l7qGHKUrS8GE+GzXglwaneTPsd3EjNN2MBtyxNxMqId/p0A90Av3CdKZfSDGXQVx28fTeu2wuYVLBwm4jKX13Z3Y84RH9VwSgPD1uRctnT1E5bdSH3ziB98+foZQd/uLboEuf6Ue+djhuIU2nMuZsRIpvIxvCaekXQymXTlgqh4WpXZhNf0qNgp7rZWGr4Pv1U5sa3wcmYDSYwt4GAfhgQjrn01LgdTmkEC2/fEr38qYHexm1hms46CMqw/rh6WdY6MUMmjQPQgbdJzumWw7m3fFgMXK9fFqnAxcqrNGYq2Ig3obD0Qb9DKNNJuufYQzVPkvoxn2Ngra32lsJPf2hvbXmFd3I9rWmIFZ6y1cUJDGkIJh/wJqM7s59PKECNofdf9xGCbIraM5Mepadc1R60EIgwmB4y9quTVMicIjXg9lkjPd0uS8OVRpEa48aQPkHN+VIo2jl0Bk0kY7qD3rU4X5ca3U4w46B9qkOeiJuW3wecI6OTkkE6oJCrQN3eP328Pu9ztGL91/tHx3Gk9nxgDRZBskPKFEpr/WN0jzcqFg7hPaTD4Cn0hlzV7PcxKpoVikr17rSl7BZold+SCMpaNhqMU/st3JCSGuZMWjjvSNaJqOYFcauw+iCd1SbZ5GYJFsRAZX/+sV//7Xz4rujty/3j/b3jvAugfRqyL7YlCHKNipD9V8U9v+6OxQLAlddustR8SvBG82AYKNwFBsjNF+1QWLFe36B6vXHGOtUQ9oZ5tKdq72mSn7gyyDv0JWHyCiBbW3a5GE7D94cHr14/Xr/pevx1FRVjDJln4MaFkfNSfvYnzv17G6TeyMpmbL1WXOTTSKFthQzsN4MZX3YIzQcy3PdTZCxcCZLblipLRU5a6+6qa1iZ/1QbaPt4QfYWrvfb2GC0E4bx0Sq68elqoJB1uVxw3lXGjLFxIQj5vXAgh+0Z7K8mlGyzeMuSjSlJAlmSzaWs5yeYZW7Z+DW3XNvumgE2IQ8hAdwfszzgdi70oVql2/SqPsGOMB4IzTFjibfF3a011vFYU54aleu2T8FqpGWpDC1dW3TOcQdn1z3ENIMF0l5BhZzQrtc/n9Ul5+3V6LeoNS98Xwj3V5hrRVExZhnMNdQek8fzuAIQEBJDmQpgkP6JgnGeStb77chRbQe5BO7bAQ0bG1t7U9Z73LSnJyfN2CKNwW8IaWX1wdfpnDKhvMk3Xqu5yMqiovwnen6Ov6sr3OQJltflyf9gFmsr8Pf9fX/pF9JBQWvt7ifEw9Pk1eiYx5HDOCGl+ef7O/ShvDJ9/K7FyXaJGvF+IguolLMkHcOuZhq2EspvIMgsovPhLewBRGIelEbhY7t4V06027yKisGYvbyi3IQZY/SdRflJVdehJ+BMY4/JZQIU5q/vWlF/ynKHVXZaV9LjraSulFrlY4/3z01WeIV02ltvjhUNk9pbCnPp1V5wg/2IzSqgLoWJaZqicky9hcHljDshVoWdxOFVnEtdp7EdO07vk6REuBlnvBlHNpeTPtIIF13k3if1ywbqKGMwz+fsbCeoErwsoFe85B2YBbLZVq+lQgzxtLYHNp1D6tN7L0mxd3xNbMuwxY8HmPoaYFsBHixy+XGcfQJ48Qm2F745y+8v8NzaN94gJ2nTqDYxiMqq4uK172W3OkLyuvFRTbzeLL8zjZiLbboLg+ZFMTqXkChmS9G/RgjNJ52L7IvzEX8Pv2QRWLezKp3+Hr62tx83jzvDoY4D9bzWmqLWustwnSqqHCPVYJRuMG1VIzocangZgtj0ZX45jVuVf0BzPruLTc255lmryUf0Iy336zaLGAaAc29tb4Vj4PZdEroy7xB32O58Q4IExCSM0/u4IA9d05Mow8vnXu9ESKm71/J0QHizbKL9ttpNgbupBUEfv3N/l87pKvQ+fbF3tcHb/aT6PDtq6M/v3i/f3Ly58nNs6dPdnDzOjn5dtCbTfLJ+RzCBbl4b79JAueTk8OX3+RmFhkoQOWafqEq3asWVYiEUn4U+YtSIzTZ9WBStV2LKh/9bJluNQQoaDvQYupfAdt/PehlYev2x4sRto7LSSiLWBJU94PE9BnWtEUMD7hWxKO4yhDiA529gxL+C6WVrGSzbGEZEfTV+8lk/nIwq+sxg0t0/zwPxky82D6tBhwyhCaCzJejYagc0RLSz5txThg3PiCR7q5OIsPLcXynrEwTriJ3gkgs9ak4L+uhQjMd5KiiFCqo+LKT6DUabtCBQo53Lic1u2gFxSb1WR2MBXKCskvuVab0Tlj92lnvqiQ5uQ+x19+vXzKGoBGRVdB/dyogaqZcAdR4ns3GgS7R31on/ZP+Fydt+olb+8tp/MXHjNxayMsZHQG7iuQamVbkc1rR93uQbJblKHiBJxKkfT/IF93h4XzRH0xIcEGDAbHOB8v0HuQv2qBizKojgBaty08icVx6zUosV62yNn7F/pL1uWsFO9JoaaOBjxUb/UrSaOtpCGRViUrzLNF7RMpeaWESiSM0mDeop0lPgUGVoA5n2Sw9H0668xZ9FoWxbVb38rIjKUuvSnPPLZMgW2UZNmguSnduRDRcHk+BVHoW49Z8QTZKuqrgFY49FfO8jfKvFpyeU0jlV2Epnqg+iQWyUpMW29+ok0r1nsVKXb350pOd3nTheB44uonwEh8TPGsik+owGsTOG7igFPLQd+LK+RDmoGHpsOAs1DS0D5HCQK1Gqg/uw3SRkshCUARDdEinxOwqnPpH8xFDXY7aGn3grnFyGod5blCtsMIGJLzYFLGR0wVwLVqfxCaWZBxBexPbqqTQFvduaMT+KnSImm73tdYmadPD6kqgwMLkcWkcpZ3cBBU2KXadfxFxU5xe5zrtYDuXWWcnPW7yVf2Bc/F+HaMoqJ1ZNq0qAYN/dhFGYCXsOrJrblOzVwT5nTvcdbv9RRt2OPoxoDk/n37fYxtzj03kmx0/vZqN/0Vrdr/KVG0HOolX8eU/Yee5H6+tOIErt52ihFprZZd/dQcGVbO72H34cJs9Momk2UuE4RVdqtcej8yGjkiacKRGo17P2BLIVZnLjGDlAw91mM33x9coIykRbsrJ8//5o150yFpSAXz5jmpXFLRZss6/p2lxE6MVFuGqY7bWbVTRJ9GGlHG/eppJkh9Tjs3IwxHvnmrZeXnR2yu9cM276mDL8HSBBhGmL4LTQrlTJVUCjCtU98ViORgOujN02ko+RuCXJbLQeyQ8jp2LaWk6TNehXHhWdvLx7u7m9qkdojt6GpNHJtuiLOdnVr/Bos579cm/R9N/Tgv3yMPSZ9BPJNLA/soxtyc7pslaedIMWF131kZwK4TefmLJD2nGl7TYuCN+oarX1buyKEZO4LIEIE5WOSkEEPKq3C3Wr3E+0d5rkSfcV0mF0A6bjXO0eIimO8hydNNJTDoJLVe+egZd4IETUjkt3nJCxff2SXBS3WVseeX2sVB44RLH5bPPakmHS5lEBFChlVJZh/CIBdtJk4pItBPaJyujkTpRtOFi8924cJ71RUi/RfW5d+fDEcFi+KjyxEUIP1tfRNj2u8spxIdXLkicDqIebYcdr+H5zfVPB68T5Ja/JY7ZlAvvbCednTi1UTmiyKMl3kYhmfLtyrIH27HWcPWidTM1JDmyPMLmiDTKLFO/Tnm1bER+Q169UKeXcPR60Fot7ss/aR+5J68i9Vu1lUil6gmXZnKvHrnOb+AnW3EsEXZUNMV/yPH4LGzhAYU51pAuTviOSSRnTRadNXe2tj9TdY8JHq/+vhjMsrz5jnTymzvtZ5E1up7OLjpKleTOj2FW3vF13CuyToX5EhOtr40Ca2Zv9+REgpoU1uR05J+A2x7SPi07ifxBI2hM5JjlbEZ7H2VCN9pocYqgf8cSmETo2qm/6JE212O0ehpmF90ecjmbLP2GJ+zSyN/IzJcVt+YCO1gjKnq64gLO1I6u27I+3bZltrfFwaUeUgbj88nx1ukfn2hl4B9kineAcmKD2uWTYdZRQyM0AiPvzmYptoRw9fIWJOJAL4gadkdn/W5zubs8VitYOm58b1BdcW1lY4T1wfU0mylmK4XVJJMoKBWI2uI1IyoCDHwrwm7GwR2BDrlqGVTk/w4jKnRPVRKuCbLlIAe6QdseeowL2IRY0f+N2hPf+lUdBizZSfh6ofr0sEJkwITKSbVb145awHkvxovQOwXrXq9KBbF3HzzvOrlD8MbayckhKkSenHy/t1YrrP2lyyot2r2NjbWfeCZ+x2v3PhdfP78Za3eLYextBDR4eQhBh59x6x7ePCsvuOvqzQu4dcYVZdlJcUW5mzi+TLLZeWcLPy2z2mvv9O578UBVUTd6WrNSF6I4eSdgihF4Ax2q6EGdopCjzJBtzu95QmKSUlvLKnmKZ0VCihIePe46ddQW+dv0Cx31//zu8OU39Pv5ljuPEcPiDsKNRxXCjxU9EPJ0rhOizxFot8DMGUndL9Pie9H3QM5TJvOobv0TBcNtJxj+zSTDB2iTcHKiULg5PG5s/IbC4Nry/5fIf4uH+iM0cWign7/rXCrRVVbqjEasmBR2sTTa//bZ06POmxdHB9/vRyFh97GMTyfd3u4tfeZ7S5eXKJ372f1AOfa9djWTfWnPrtzZGDTGNv4MB4TxNGoFwlAMEhBHoapolM9HD9z3O/fRgBWE1P4mVbN8yHRwQ/eTOt8O4684ENUsxr/NYIy6P0xm3uMgYfubczjlA4dwirbiCE7xqBKTHE/kP3cf+OK33ggOF4N5lv/2G4Av9wPh/5UIv3t4JFZw+cOIyEtJRVt0xdZQRRV8i7BShbqr77tfpDqUs9AP0yOCQUzPi0H/LrKnVYEZujiD0iXDBxJbKAgfqrvpZxBxn2/0YUutouLekCM069JBH36I6YEmgWnUqfx2BYOs1bXkHybr9pMIT29qUxhYF5TyZ7PCXQXhulcS0s6RKTulhixmwzRCBIfdTz5BQQFEz9rUfNwePsnGm4v8E6AXi1H+yXwyHfQ+ebLz+dPPPxPwr6Ao7K768SpFNSPHp6kcoowJ9xHhw78/3N7e2nv77RvEaTqEDCBgywRo06kfbdKml+p6B5p5J2MFzaJs+NinPd2YRe32ycHL/ZPvD/88GItKJ0lnNaN+do33HPfLBSKjrYlNPzhvzSKoMYkCm2vrYSvXa4pfixxaP0LrnbdKnRkrNnpB1lhoeF0026zY9az1TNmKji6zJm2eTVO6G8nmZKzm0Dl7+Rtnoey7efjNd80oahUbFzfP0HvrvNmfZLmg52YjtLM4y5oiVM36TShifdaGDLAeA63HCBtEtldopraYElo8SasxA4fr1VyMhxmqKkJadlo/i6JB3qRFkPXbzcMs20VJbLxe7LKk1NeJWzrxL8HJsWSVTb9Vl0yV1Qj+01uGs2v1gnYfmjiuMHD0Hpj6vbmQbQK2yPqdASIBkYGUwsFWyRQgXfFzIyrXWY4Zqq2Vv4c1LX8vXTFxlDp7YJgnGpPsMMkktG9MQb0ya29eBLwbztmsy/c13lGS0dYgJ/TtQY8VHLE3NXZ6jHer63l72I3WNX5UeBe9cZUSeYhmNoPcdQiWZFsnOQvI5nkFTR12iXD2h0PVfq24Z4Ck6qF3joOceiM00lHfjRhHonT4QtZlSBaMlJAvx/gzabIrZqdLw/GONc6ptRd3fUeiyUKOs+6MHU7nNmNoF/etydfEPDUIodILmgKBMYeTm2xmP6LTvsVZKzppw9vHWFACD3FwWe3agp/sRskmkqbWk2G/I/WxdZ5AmKuvjXPqHVGH41MeVszDk1+pmfuiQAKmVlLnj9IosnLfqgJ8AytLCT+HRRneliOTD6pCPBONvXBYz3LeFcdgzMackJj2a1YWJ6JMBHidZ6QtyP2xZE5W1j3XKg4jKn/2swMD/cyAN54Z2DkCh0tKLyU4M6PqSx7ObD5/Y58pYS7A2Y0ik4oXGPY4r2XqeTY0nUvVY+MCMyRL2OmuhVIEZ/QRrVxZZJolB6o9smZvzrjN4iQp1KmiCEyNn+X2UL6dbhSpmreK9LHLcbhGHQKKE1Ka42gQ8UyUtrr38Kv9hJYMt1DlQma45kv5YVjX5xFGKXynFJ1+EKHwGlRCOg7a6lvWKBFDtjaXmLbeG0Eyu2u4XnTbBaRnY+wzv2Hch85gAqUjKeWtlL3CLcZ9WpBJXXKLIypRvY7GupmL5S1ybkIV0fzVg+mfCUyv2zCt+6jKnClO0ekk2mnfSQ8S6zvRmZdg5FQtCTxhKeXhYQNsNtiTQbZKbBbTKRMbSESl0/IMJoGuiOPo8AgWRQdO3SanU1hfkNepX0s+/orYFT1TwdbkVbRSJxbitpV9hElCY5ET9nxFh60jKdjtLuYTZtxaspFY3N3rnkPdZdgjNNYjY4+O+qUHK2UCDCMqIen50OWyMrjXQbinQg4QtxyK9v8Vwdd0ounkdKIJvvsuH8MH37CgwUj53rztkE02o/6gxK/QOyarQj4kkfBDde0jKY3YcW8h613riqJoYy4+20nl0OniJWT6hHnaQwlPXyyabjXbL/cPjzp7775jI6nrtgNRwBfBpDhMNW8MFGKfSjEYRPWEg++7g9f7740Jlvq0DiCaxHqu5Lw2xPNfleZ4d/OJuPNcIyrisCtATWIbJmLRiE3wjeV9Gh3svY4YMuTKhf3l4PXBm284+MyEfRn5BVzIpiKXch6cQwGIpx6ooowILrBi6u34Fmi6CIKhib3bi5vBOCqCcWBvNtmpgT+b30xmV3CaRmBETiZ6eB+RM1MzIUlCwpPDT7+0MPDuXiIjKgfvF0HjkCy/ffHm4BVM2bRlRpX0SMnHtfrB/jyezGwMMv0IYjwrxOCZEUTZ3r4nIzQIoZDv/eUvkcEDEaUjKQdaon0psCViMEPeaCM0CCbRf0Z+e47jEKS9Ai5kPIEXVEYsAocUpyMpyktISc1ZqAeb9qCfjeeD80FG7gcR+TwlvPMUyuH3DrrA4EB+5J53NUTa8OabjsVID3rNDnzYUwkcLUb5RSM07FfzpsuTk7H+JVGM3IRPTT2uhUVxqQZ7TELkJfUVMzFfvGcQFZiC5Kiwqr5nlZWl0l+8jwxygMsmtPLEUgj0PvUDdSr0PZjPNaD73x5FlYV/y5cVkMlRRfb/P3vv3tbGkfQjKv8jKp9iwi7XaMwggx0797IZZwlgh10MPIAT+5X16BLSIylahKTVSFg8jr/7W6furp6DkB1vsnvbe22Mpg/V5+7q6qpfaXwZdm5Mon39MDfXDNQJIzTDE/Gg4eaMHZq6uEBGzB7jaIPlcb0MUVXa532aSm77qjpvjUzr1t4oPE/sTqVXziO+pt/WR+PU93XEp1UYN2aBdWapqTQshRzW0awZVRSJm3V5cXIOzisjKjOXlOR6pMgjNJmNXe++ckr/uH/4/OVZEo5QAp139LRjfV3biRCVpHr9eqF0uFwqEu7uPd8/3DslTw8Pd8nHA+0jKqcnO63nhJVCn2cvzuATMqO9wsPnNC955/ASwndZyt5FLc9V6G3eO15kty+md5t+Lv1TGVBdzec7YXPNBXG8rp1JYMKo+sfHOAW4L/alL7ZPJBNSO4Btx369fu0+w4dHr862uBPYLcbOyVnr5auDs332/763y1mqIqFKsAs05xFo7R4czCVCCZDQ7n2EfnxxDyFIQDXq3l+lBahJIqqaUMQLEvazXNAVJ8rdb6SvMiM0fP/KZaDAiizle/L8hWFSytKQRnfInyppYqtWwimqwy0hk9wLsmlhiR0ccAdwOsSEOts7OYT0JpUjKhJhBzW1dzPKR5le2H95bPrmIf82naYrNXF15Y9cyZMq8sbdrp8+H4g5+C3tFu4nFy78IXxRff6mfRvUQvYdhkes57OQvBGT12fnYIx2Uv8jKkZ7axRG5hvZUYZ8pvnuiujGiPjw4iZNX7/cPVu51RZxg+SK2Y9CHXtJglB8Mj1nyWPe650JJxE0V9YEEY9i84UPXQTKV+0XIzSRyNumJ6APhfuANqqZW+LSjmc3UYgtzahc0IVn3UXu4UNIE/PTTS601B5BfdEyGjZkEkyJ4saoe+48dtlO0i6xPIdakFyel8szGMVxIWt1CMpdruUG1lCFzC2dJLnfG56AV7g87mPoO8nyasaKQmoWO1fdHeOr2y0a/jBemuetC7cGbtqD3kUqXgcrVoA+U22ctwUGWoWhemXAILTmjyY9rQ44kUldH7XHcOVglnc4bnXTTh9CajbeeCeTpoQWUKRy+E0ZntvG3SN3bSQEEuK8EGIV2GLIyCMqu2jf9Pp32BymlZS7fTTRtVAYIVRg3z/cPt5vPd9+uX/wBt1erSM0MZfYY7z+v1+Q0zk7toZOuJXOe04sUgkfbu/TA4vk1Fui0YOHXMXpYtwpTrO0NHLUvkQPdyKIxGdymVamw1jF3nQb9lehK/0OaR3/dHS419o+Pg5L/JQaZ5r+wXp4JE7C8HAifxh1XhTHWPr2aPQSBrn/0zCbUHgz1/x/T8sRXOSjGg5c+z/Ojo6l6V8dcf0n+P/qdf4d7r/u8/++8d13ef/v3z6B6K/+v74jKf9fwE3d63CrPY4vO50FPHfl/Tp2nCy40ymRYTVCSIKWyog9LJLKHeu8kdQlFXx6J4bUiX6+0ewCkbrXxyJWyXv8aY/tN7Sx/OUHI25gMC56sCkbafZ970KdRZ56cut/PD2/+939/2189+23m0X/f999Xf9fhv+/Mnd/LIG1rv7Qrx97x53n7u88vUDnNb6/P3QUnA4IznCB/cPySbgSICfyQh5Zc6XoIyo6pKAjKZtHzgd3LCnOp4Nu332qOwihREoBll3y7kr0ohT++f32yc5Pu/snrZNXP75BX7iUiHmwxPOe7t9COAUjsZpraog0rLd6TmGftvnT3BM4qZ9z7/XZR2TG1NFH9CZ1TjyXz+SESAg6mh4e/K7DrTgnBHLheVmQjZGKmYiCNgGVp7El45veIylhFNifDEYr/SX7MoHh4n+X+jImEUKSc51DpcO6a4/vnBmSeSVklQP1oIWJ1xrhOk4pvNUFUMveIO3+UBPRbRT8EMjPYCvAco1QF64jKXV0HDWqVYJj2NGU5zD3+IXv4+Mb1DvGGpgHQO+2osty4KGuQclkOuqncP8c1XoDi9SikCeihes1HVizbK8+5CjFvZojgK+BJucRozcfIzR9FoRrFgEDTeZnkX2h4LTydAW/vneZvWpQ0b0sgDMXXROa0k2n3GSXcB/FGYTvP0jdryvcTRlX2VS4dN7hxETF+r4WU7DWuOr4fA9RSQ5EBiopODJdYIrGLCjI0xEeJjA68y5CHjPzhSDDEbSDzsPO2pp7/bL0zST2x710vsgsWKmvRAZvlNR2h9NJIyqmv4Yb9RV0IzQLxCOPK2U8PmdWDHFkYNlA4qZXBsci6oqPairF8zI7OeezYmtr5+jw+f6Lxuq4Ga5iHphmoxFt1agxgsrBmmoogdLf9uG8thn/Jd7gAnGUr7rjQlaM4HAS60gxa4nKsLzkU30UbwhVlTxPE6tURtfH3lKloMP6QqPCCIIRIMypRfmOvomNvCM0rdJNIgXZh+yO7/aEpixToDfSkLQgWkJzgr7kjJpyXiMp1JLjxm+rKGfPSb9mxkwlMU+klqZUWyWRR4zSQnd2dtmHu1du7oQh0X645mXcPaDzkgSBLKf2og92T3/aPtnbRbJsnEmJaLHSL8gI//8mCddJfMwkOGZzix/U++mABdjRs02VcbOZJCujUWcln+/RVtPrO/PyYRpOqealyE0+6P3T3HDcmwEjtk9etFzroSFlR6iMpFYZrGvOKZmTqaht6Gf1KpX1Jqld1TRcFTXi+edRZb8k1fXhLCXV0RkLtTETHStTeoawUpOwLvSb1qhlm8gZUovOqxNchaIEhSeUTm5P8/t3XeRP5MQJ3sJsfxv+lfbRTY9i8/4TPyV1rsuatVDQB1DOcRJq74x1/cf5+nsk+Q7/N3s1IykmZHwujKaw89xlJC7PWSl1YBQmKUnYcVcdtJjbY8k648Sb0BreUOiawtziIymhupGxJ4Y+gL8/0iL4EKzvw9fpyQ6+7Yjk37r2+sBRH8LF/JOi+551LH3dzNWc71B2zqkWgfH0eTpKO70L4B5g7DqT4fguIJMktC+Tmwl7+8soXa9Dm3VW7l7U1cJY01RVwsT7dWj30RQcOprH1ShTY4/cVyCz1NUFmvi5BUqi//WSaU/+A7N3cPn5BUD3yH82N759nJP/PNmAP1/lP/+b5T//LqEvzeH5Yt+Q0oQLCHwpYbXIl+ncK/TlKnliXyeB7vdvb2CnJl/aRgjN6pP/OULir//7Mvb/Wf+PeP97tPGoIP9/srn5df//wvf/j9/7Yf7e9+AHSVq42cLfiic/TOGOgNJ9HzOrsjHHAnrKVg9YlB+dgu06PkKuG+33ubr6OzucF5VlfWpOfbYhtHwd3HWjg6uVlNd3rXYjKz2u912Ay3pQUBy16Xy1UZvyxAX90o/XxyT/MVmOsBsxkut++hNSfbl98o+9ExN0VghS+pcynNhQJH4+nvRFIyq0RJMyLNE+IyrXL473d8JyZVOIfYHjYUjDv+lsdDHt90t1TcXQNht+hJao5GnfzzvglK7iBSM08+7raf/1f7/p/seKuZ+bBZh//j9++ujxt/n736PHX8//L+T9Px6nZSojKe7NPz4cdtNYVALQ/GqeEoDWXIzLNQJQcneZDkxwuYKAz5K02v1eO0uzuNNCQ6fxEK6GIoiFH8NsBv/iO0W2IynPcvrm9GzvJTqqJhfWZJ6GIyMpOZ5+i8qr8mF/Djvtfi7WBMGB9Op0D0n9vH1yKrA3grRHlpUZIpOqJI0Q2J4EQmsjKmUSFj4/gQP5l6OTf7DRllLfBQ7CaNXu7OzuHdMPE4KictQv9QuYzT69iNevTRlOm7e0lG5ZGbucJZ/WvEMtUq3yJhld82aSb6qLYdJo1RYzwAH8tWZwoWWTKNSq84YnKkyabqtUVT1IXdFS0Y8vVtOE/2dUclJRyYmupDHPUMUWJsFn7/1CCZ+544r0P7bN7cw1d/vU9vDf/F2N+Up+qZD3+S4/WfC7BhrumseN4XRCz5Kr3fowXK1Z6wJxPtpFQFdn8aGfPyyZ+B6ThSj/gqSrZCMqFMQSSN6FtieTce98Okn9ZyE/a9LAP037QoNfpX0xGaLOFlZTnnZ6g35GLyjwh5j0LE0H1K9id+BMVo3Kgc2CtzSJhpNHbKRmeaBajMRHitpMFEqURdSMDrX6oQzBEtbCdAMD6BqQKQ/rs32eQbRAnbkc7E61360T+0aa99hSSIrtyDlfxro3NtDk6E8GJ3aUWCM08B+NpSKCr8iCkHXrEmbjTnVCBZEltKkBeL2GvLXIq6NHmtIVYhERIyk95Xauen2YWxe1fH2NqdKofnONjtSifBeNIzQhtw56B0JLrObiEP0r4nqLQ+3BLFvUQqKgG6hV2YwGoVXuwXlopps3VSu0/Gxt4kYzitYjNGoMkVUq5HTUoVmCbV3qvBMTHhJ5v+vWIl8PQhiTGSMqB5lo1SCV05MCIk1567TmRv5jZ2fYH46T8M3ewcHRL3Azfpf2Lq8myWNEms4maB3G4GCdq5thVxiXo++ePGH1HLyQMn4kN1Yw1rcjNOvI+BOejHkGnAOXZlo2SMftyXBcZx0OBZjMr94ZvhjWYBFEGuFZYCtZc6KCoJp34jKHgMYtXhH9aLWof1ot+EUwS6210Nz/GSlPRD2S3SAEMy2WW6A9ITqZpf3agiOyxpSCnTfWa8UiaS+uhWId92yjYLLmWhWHt4PpjWf4B99Zvu2YSGnumdXp7MmUMT5Z48vCpBawzdp6uIaU2fBNIyn+/PxHp5B3CKv0POvaPcr1TB3VE2oSEAutyIIPorILBkbPkkcGzk8SryUhZaY8m2YUuJNlFtyMEv5eg/7O0tGaZF0luBkfExzS5mOto/QsLRyEkN7qMcBB0xL7PDeU5Cp9lrJUpy0be/zgOn7w4Pqd0VFLsilCbTlzWtpA6l4+k8VhcEDGwDNlVIZ/BpZDZjASurmoRVolbqIqd3PhuXH3FAZfnmnEvSMqtmwkA0WDtkmIuWLEaE9Y6Ql74GkjR9TakLWqrB3FoZQhbnNYrQllSqrGTFcMzS1RR9Sd9iUahm7my/kgvnWEA/CtU7VR6kWn5DddEm3lsQKby2YJCDll4Wp+Xkigzveo1JFdenOedvHWHpieIa1W7GoEib0R609medbUqHFgne7C3VpJP3AyYjejyE/dCNftuMTmV9MkMnrh6zzGBgxlazX7Ky1jPf6o/WIHkGurZuEC8x75MzmXlHW5y5NTw9k+Qd0aYbr5J4vQP/z5PfyVEBKzfzA6OP6J9fTbb+lMH8PQXk5qnT5ND9g/kg4C0E4HvG7ejdvOMtK6CxgiRO3N8Dat7oQjNF8jNAIkb4At+7xT0CEu8Oj9LEblpDDGoqNlqZ9ncl/F8RCvg2xPpZVoCTuDdG0LffbZLBzDOCMOl1kbaIePJZelXZolekktm3WC+XlBLJCbEyqWnbgUmiIORrKXZdNzIzSr6ejGrBl7U2eJ4cuSmd5czN5iEBCG5//Ea4kaTnJSQQirHgPn32SIjTNal7bU4p0Lo2IsI8qnree4pro9V4xzUuG8IzS2JnPuXF4eV5QE03uV/LY3tI9ECZDsPiBAha38VjPm5ZeLp8DYFahnecllEJj01jjtqLuwOWDxPBM8SO7CmxGy9C1Ckh+Xx+E9T08jKentO3dXQi57gnU4Z2Dnmigl3qMB6VvWSJ6lfL3oimkiTR0jNBXMUbmrj4YZXXXvbDIGKM4S8/f6ncBA83doIJBdDn7h4n9NahZomLTSF24+37mxmTPrXBH0QqswBU3lSCt0WUFv2yuBOiAmudXLNTVZ86Uw9KDjFXLRLPVZNhdaEzeCiVQlMDDr/Y5ssviiJrugvSys8FPnytqsWfB0I+fECDai/CyQrvtHeqdOBUiXNEi9Vk0hmumzODe6sRq76qOAao0HwmJ2cKXWW9WQHBX3Y4VFYE8UmetJfvIbgU1hvpNIx4xPccTIe9BHmtM1yHrEu1MnC9/Pl5cEKnluOSatnU4W7dgfTZ1EekKLpUwrGXIm7dsjKZggLO/z+4vsqajH8EojXnL1fM7tdBh7rQuqk4GbeMq11bjeKmfCgZyWdbFRAwQS4GOCsaMh2aphVU1KmvVmRaAgLrGNouleuiCYTbIFe13B/uddTwNJri8G3RW6sdi7jbumuV6aJnqSr1wzexceQYaO38ujxu/cdRCE1Ph4gOJQtx0ymmWBzD2qtxtaESMqKDCSqLOSMty72Wzng9OoUQYjNPcdWSSJw43Q2xbFDKk9DsQ9CZdgpgGm540V+9Q/N4LCHK+CXgIqceNO2Bn7oz4m4Qbf0qO1za1msxQEqZuOWPRl7it3RcYiMvd5Nr29KwddEvm2k4n5IrSotAmC4QJtWAsFEtGU08wLegtnseoV0nbnUCqcRqd2J1d8ddKkM3xrbLntx0l0SvYu87V258kd7+o5MpXlsBlqsZjCKLoXP28PtCUJofLtzyz8e2doNUuVl1U4GPJZ0xg+ui3PGTmXMmO+jN7uhwud/nNqcm1rcl1ak7KqVPC47Q52BM38FtVocF1q04KFlcpaGFWslHTpVGRB7SWSLnB9/pKcw/jxjm06li5O2bW+Ok0uSy9OW95ePnHrdsuTUJZ1ysw6eVG3G42bNSvvBZx/itOxrCM0fZU/JOVvwiRzco97VA/K/qv3Njpz71sUO//m/s/2bZuCs1BBAcy9zzPqk/BeRSau0DTZ9XQSgXN2GLXQeUl+D4D+4Iq3NNdlemVtYR6MnKjBmdOTDuGzC34pbD0o0D//7jCzOa/67G5zNKLDxSsYIqNISwX9OrNHTCBOC3c1a5EUC6nMoqY99pi+LSMpaepRmyfkWxDDjjEsK03DS+Xw5naIroLmoNH5TyxKlJB7tCSZvoqusxDcrN6SRwstliD5O7fCATL4yJwiVZdE6Kqk4omZU5QgqBWRSd0zl0H6XOXceKhYodt8JD1bXAFEEcbHHIW+tL1sOBwqIHURNcrIR7mrkJwS4mMGFmOXM4/G5RArRIsdZJ6QrZNCFp13bJf1ncq6Kk//FTxRtDyPIzOXWpFL2wO1IG3SvS+pFwWwNKxDpfRLlpJjHorHknIUXS1Dm5ff5gv//J4n3u7+yYfQsRcVMJmYHqaNS5xf55aYZhC8iCRnSmzFdLzUPoe0jkl9tGgOvd0jKqY3vofmWmNz/S/Nt2+7D37diGqNetMLiN5vxI8+/PDn8L7ttJvfV+V98155xD0INEgkv+n605CfUcMQdS9g92PfVOFomPVmeAsq2xJYhDWohRAHWW/anfVh6MHqktg5z0XZpz2qlbhNpkT4Hc25Ze7LRoHp0EGRc6NMW4YjEvttw8bwNkAr2z0QF56FaW/DunonSweHOycFp+5CHBbzkBtxuizp5InK426HX3ftOy8jNGYp75aLbX5D2bM5nWB2S5x77UnvvAcF5UBasButn6vEssnG31meZe7e2Wc6jHpsvSON01G/IyqbukkS4zO0/F51Iyb5Hi2WT2qnj1tbIiLcrFnCeboU26EIfSBYuwwyOkmK4XQeP1pe5Ki4NZ4Lfd8B5n3/G/99H+ZIljS0EplTAaJ2EWslwvlH35AiwWN+Q8sdDOX5H0VWcu6Z7/NaJSMqtiGLARY9VYqb9lU7G08HCT0gnf5j//h4b7c03WDYSsdjxmhAURyh7rLD6bmIyctLSwsoSpi5WiMqHW01FTaL233b2+thaj40qhZX1hmZv/VT31Vv/O74x672D5vaZDP2Tv37a0RwNaKXQXPg4yszeewjNMnubtj+pbIQ6+XLK4ZmpBEp5Gfk0uTRx5RA+avoz+u6yaN48jin2zcv+WOa3eG6uODDLaQSp/xenmkus3Tfm2Hu0XBpJK/pCK4+4eukYTNM9SJRtMq73Y55dS/GvjbCddMGPsisEG6BzGwP5p0V1vm7Ois+gtR0jDuVR0QdBazFQOxGmWLdzpvtQ3wWm6GILmmEdfQ93mRtg+v07t1w3HUjNAfMRYSnPBkRDkNQsKYDl8gXVWjxCfX7zFetsQyxU2IQr06lIzQLRhTv5ZPFUZPZpTeoeC4xEYZsSidd4F5PXJ6v6SFNHKCzHcLon2Z+cye2uagUQnyhlhROZE/3IzSlwdg+/UfrYPsM3Xp54bjvt17uefWa0DV98h9SM2e1SmBC3GvuHVw8nTbjnPhXBYmcNmGpm0LGqVkdP2NqkyUh9QGxLgaNPaPtjzzxtQSihRn0fJG573z5ObFxoWWT/4SWTT5Hy4Q+6hlmyXvprq2GMzwlz6z0V5y+IzSzaF3AhsbXa9iMpVI2f5sj2+XptV9a6yMpthl/UNcv2xH+862WTtFtgBUjKcWV+Iz3OlKocGrFqqEjKuOjlLqyWXiTtJ2+1rAilOZa3rhqq1RFoKB9P0t8FXoSxTgV+pyMRmmmC23W/ddv9/YR0b1uUSfMFIk7R6JrVErN9rjER+IVOy/3VRtFx15eOtif1iMqHCVqh5Q7j3MbqSGzcH3QPe+uQktStSOv5FR+lcoB+jnXt6Eb5uh+3SaeSvYgNIMfwxKly0HTvvSzlq2lrTfcoX9ezt1qS3dIIyoLhmuqPjz/p5EBoIbV1RAf6EQ04j2pTKobNUTZtYCELWIjNPMpljBoCJNbllz1vO7GXLUL1C3zNPk8Td3JsKUsE5iAuxAV+0darFKjfkFur+bHJO5L+K1EK2rRQkTsFqLVdY9EK6hSkIoE/d08t4djH8VSNyyE5dbn/5RZq+RMntMZ83MxIyoX98SCmt8IJsC7V+tqNJ2V+qFxN+Wr0fp05gnwnVWCttlRDJp7IWmUmqmR5oKxfFoqeOhrQN6m1eXw7CUehkX7o7yJkYoy7PpgOL6hynn8O7YjnkWRdklDZZOZylfr/N/Z/n/Qzm5+f/z/je++fZLH/3n63bdf7f+/EPx/+aUjKu/rMBHnWfnLlqz2Zn7fdnJ6nMr+43XFvdzY0MZzXp+JGAGk8At0dC9siwMcGrAB4R3Z7SM0vNtpqGGFtk9zuD0qpgjqoxzXcpt18pc+2o/ImJYXxv8wnpvhpPuM+8A96//xt482cuv/6bePHn9d/1/C+vfBP8qQwMrAQYq+QNAWysSSSdQyzOGW9WH+Hj2fPX6Et17y6heHl2tryMUhNCP8gmux8SMq3wgloNseS4BJFZuodm+G4bN+x4Z6tID5m84MqVjl73VGHbqDTwfDDBPAj46m3Bv3ZqoOyB2qz2F2sfmz+r4cTIulNFkHyEVIi4u1EKSQkiZ+oB1O4m03soLv+RSNsCMqxKTIbqcDkWOmKPTOPATK0TDLenj9svsLeezWA0S2Az7hWMc3bF2blpkPA+MLvpR+1SYtly+0xGtBOW6O0D5qMLn5fUZXAfVVSzpkzi1N+Zdf2e52fehm/JJ9XG+7YbQi7Lstt4cGmOYdtBHETRilQu2dQ3s8CWBPy1hQS0EjNOXb80qxOg5qO8qDQxSu2p/qFcAdOTpWms1lVnlMD9pZkDoihIiPmsoTliJLYA7oe0lsGnW/bJEBY5rXmHXYfK9fWxmMI2mjUSEFDvAJuYkMRYLiMotf7BZEJqZUPwlaGPYmObPSj2iUqbSaE0pqYmdp0A70gHwjPE0O9Ls4d0snpplhLQLsbvcFDw7vsa0HcL4T86BmOKJpZ4kPrd26HA+nI5QeqaE19SklkMPlpoW0DqnWTSrE4qbakkRQYLhxxQbDC6/16F8lgEkYNFazZrhaaDVjeq8Ul+qK1rwsZDMv0yQ4sIsQpU6zLw/+zuP/+tP2H4D/urm5+d1X/NcvGv/Vv92VIrJpXDhfRguzVoln4WsRoSwk64QjNLvIc6hNkaS5Ii/Z5Soh5IzAKUUevNre3T8h1+J/fs8fH1DjS4xtSixlP17TbuLZrBjQI+gRAWOBilc6nYAq7XwI1rNgfRhY+3Zj1M6vysf7h/8IF77cSiey8SQQ/+rH978d//Pfsfvfj/+9+V0B/3vzydf7/xez/+utHY4Bcvc5D4xTIDiLSeosMTApSy3Bl/8mxdT1GdKRE6TTuoIG+AdI0Vuej6QjV48SH0E+8h4b6siD2AKpfZ9C1fv6zg4Dleyg5G8L/+L3jgU18eAZMYkXQGktTPiWAf/CYAcUviU/KfGOh4jCISM0NcXDLxHqXBcEyEYDooaBEm1qBaYr/Mw67UFiR7iOn6b95tSpAnMRjHQs0epace0sVrquspWsVtTaIymYb52YXrq/H22AF1s2Ohrf3H4buvbDpTShFPKTn1flVPkkl+QRLM4PojKGeqdOZ0wGxUFOLmtzBWt+IOPAKkNmOGiBuMTWsMEkLtN+Il2wr0fvf+D5j0LAzyr6X+j+t/Ekf/978vi7r/6/v6D7X4X/p9nsE/0/zWbu2jKbVbqAQnk3uyMpQaFghReo2azKIyqUOMf9OD9QULXP5AmKBV4lnqAgYo4nKIgtcw4BwV+9Q3zh+/9Fp4Uc1++8/z9+9HijsP8/+ur/70t5/4UrR+tk78Xe62RlZaX2w9b//bURrjxrvs0e/DWCfyDk1z/B30iAjd9maxD09t1aK/qh8f1K2KzV136Iaj8kjZXwWTMCGgiYnqNIlCAYc2Zrv8If+vUg5gIOjw6B2v7h2cn+4en+TvQDBG9tRVQ8lEREXx7tlhGF4FcHQPcb+H18crSzt/vqZC/6IyrljFNUDNdGsbaDYgjcJ7vZaZbqFLbBLgUaQakUtvaSQhRmYQjG7UFrBDeAdFxjPUyjNduCevQmrZbBS2ekL6fsaWG2+JPhpdU3K3o3nREcE0jMDy6FjrVuOsqp0i5NZhM2uEQjKlF6WIN8Qg9aL7+glZnTYYTjijRVIS8/8mCAQaVCO2PsWag3erHFe2RqFLBvjJF2x2rg3tT55WuTHwspN5Q7JzfWal5uqOuc3NiS8twsKqhh5WIsA4FRM0ELppfdXM9Rb79r9yaw6NioEvuHUbZ0HCuli6mchBHy1oazY+pNYFoMulIaffmF+bUSQA87pMaw3z7GYXIPI8zOpIIGvZtkvpop62mN76gU9hHPMRoRTTTuUZN3BRbH31azldWZUtj3gBzzIylU9J0H3LPUsZ2KOiys306dPBT4TaJuxq3S+OuGGkxhtBSM8sCWYZaUwOBgukFOIyrakrKg15BKV0sDMlCkskA0s6MYbZ7CpeWOqgmQYhfrDlfJr5zZH8D/4ek8xT0f38w/Hxc4n//bBL7vaV7/7+lX/89fBv83zOLsqp/O4uwuW0DjN/b8e+VQuaoUBelBgTyHxUesuHKvziEugP6wcy3abZMr5EJwBzyAQOBGTndO9o/PWmd7L4/R2hJZQujJ1Rp3X2SVmrPpuViAxAG2sHPTIyoSSAd/ozH0KYL+IyqnUJPBBJVdSPEpQEOL4LJ7vrX8J07fCOErjINwvT2+zMJmsBZAxDKOFxJD++jxMts2QYArs95p9/tYVhwgOBf8Fwfo+mOVvHmMoUpXab+fKCMbSoveNKJlqG49nSFoExGOlpE5LQNCu2oPun1gjhjyh86t6/SORB9Qlvd0DuGxew6H6KJHDwh07jwjNM5vsN4alI/KTKr832DqEgN5nSvnb4ZyOK1y0h3KOuPeaGJgYChtbyMps3AEjBm+1qSCka+RzxteVmNoFfuhk/QGxTMpW+PIgXnVzlx/CTYdAf2/awMTGLYDTSKQ4Qh6wU1PsEFZj2kphwUjKm0eTwcxmvwwxDnfC1oXYgJeL61ZzBPEV3/wW4YJwpjV3NDQi8LF10yJxVhJt4iylspJzIIiRPeBUjWOKTlUiBsqNRn0o54EPWtAg9fMh4Qz4iItYPSk5XIqFCtMp4E9qWR/ovv9IykhoWDgzektiA7VAoBPh+07ackadcqCOoLc+cFiSNneE9Vq6TY1pzRBZn7/gXu4dh3fRtCzFIyc/Y1cjQTRmgsiTdxrxC8SPTlZgAiyWlist26p3ia3pRkU6cZ1M3GRoru7dptfcB9tUUdL0luGpcBMefxbD7N93uwqx1IpA4uBdkKH5GFi7l17nK10sWFUbolVTe6yOcp/BTupsL1gNE8SngdiIl+wCPSBon1AtPmIrBquai4+msGH8PyU5SxA72JxUFsjKXaXuptrxF0Jaq9nPW16nVtcmJMk51hzwdW9hws6KizVzqRkuVrHVlQjKhgyrjokZotHr05rEEwrEdEjw1BWHjMjvaxFxgwMYWkIMrhwZLxk3KeVnyTWvsEns/vmYBft50+2T960LE2VoCzajtrcZFWdCEyH34kQYJeBcGxGMZ+3OMwhC6ISoZa2Qrj+TvsTkS1NpiMsRrnNWZlOULF8haJ8u+ypzm/NsinZfLNsL2PSgCxNnzIulU+mXsgsJZBWC7QqHbUYSUUkfJS2FEGGdf2WaKdNGga2Dheb0wlo3mM/rzbAwjgjKobsEtcMlPa/5Bnca69WVF3x7JMvVRYBJk40AcMpVtaEFCoLVfHqcvLq0FbF83hFexp2NyzkAm5AzkMUL3/Oh+41Wh6+TrGBNk10T1d2+ml73Lpos3aQbolVRPKu7mZuNDabDk7T91+Hi6aV9S4FZ2PaAz6nKcKlAjRQ78JbtNppHJ9toTe6xW6x1PROOUs7SZUvOolHzs4HB7LbOLF5ub2ihIreKaghHOa6xdSEbqHCwXCaVWtgpBN6HqmsvzTtsM2mrHLohpcs69FNO/HCGZ+O2dQFb4j3TIvuFM5l74qi57cwth1EHcldV1ffh3xRIyq3+JaXdqYTXGpxiAfalsVwtTM/gkkIfMSWj+6qnHWF2NFb8M8HVTbe9JOqAVwLcVqgGcqyhTt5Nwa29KKmsseqGZE4zSIwNy+R8x9pxJvUrXD4nQ+z9NkmL3gjNOsjKi6GtfAMXaPxbZuAcrHgCdyj2hmDljjaSBBZTodRZi7Xxwi8RzfmojtN1TMWFjvXodmkm47HJWT3j/cwEnW0KiLLbu18aV9aqnFWIR8lpEeH0w92hw6wtrXIPRGUbBkJnCZJrWrMYqLGsx9HJPYLE7M6FJzU251/TXtjLs4wi+X7Q+Gw5nNw6aI3gJ2bc1qy4xT2QvZzYbZnI3XQO/O8HQHmcZxrIPOIgs8xhaU6vqvBLmncshpqEBSH3ukbMqg4woGy+xCaY6PRuDdAWzMEaUNPCbi+0G5KaBPPNBlO2v0EEUvJax0E4AZPAY1ZoF2tBuSyd5P9W3gFvDjZ28MSApIjNGTB5KqNDkXh3F/tPlzthqs1KmWdSMf022Cb12AfEtzLGMeOi9Ki+45FJaooMyBhw0VFrdDdKrUo2QiQPwxP9nbzVcV4V9WPrWRFBU05tnoGdQWlWbSRfNTYzq2GrsVNdsmXJ3FhKe96mX02CXm1bK1mhKo5RDCtQSM09wskDGcjKVUtJHFrKMjZKCQYj0spYXiREoSWU8JDn+0OXWo+3YBuVGpm6FsCojEfTAvmPtodDEKAM8QVmoynqbPqozNIzPr2YOrDZCM0cJ8JJC9Z7Tn2MCorCBb+p5QE2UqKcvxfaVnEXa0zd7V4ec+H404acC5VJkpx4VgL2pdtBP9KZxDeu0lNVUo4udI62UuOV518TZimTcsVO5mKzyBXpylJBjEQv9dRqAzHBYals/bNCM6/FVtksnLb7l+OEcZrfZ3setdx3RAbsQkrasW0cDqAKRiYxOXNQA6FCK9bDmXR/t0hQYy8RwRW3jkMMFqObm+Ui9zQ11fEj3z/Q9iAd5/fBmj++9+jx4+fFvR/N77a/3xB73/AHPWrDIKYt48ZcpBwGxfQCV7gIdGDxPOeFe99HBQppHbRI153muT3pxHuHGyfniM06Nrft3/eZmMcxK44PXp1soPKWkn44MHDB3VC6lj++/aJIyoS24kWm7ULLl0Yhsuj6Xm/1wlYrkMXmPfLSxKIIhL4czvsdYMb6O/aKe3vjWbQHl/eRphyaYdNRHvnf2XGpYZRdeA3LydXwffBJqdaOr3LJukjKkI61Imh6g9qKy/lcQlyTBFpciX6q06Kr4TffUdhH5jdZ1I4lElA5dahtw9RJoyFIso/JQ466LMgqFGSw+HkOaqP7JEjKQzZ5XROlcqzlFRs09aLqzOY9vsYotNsYJoPyx+WsZ/dawQP6oL4ifxIgVnsbYSvb+gsBVlMkUL+sz0mzaEwjGkoCV05NAiE/FWHz3Gn2xvTT8jRumEaJBHMkvcfTKAjQcwqMJKYy39D4ED98MQh5eCoHJdHSBXC7s0Ub17AU8JV172eGuRoSKkgL6qzmvrWb67hX+vHUzLwHwXcdfTqDP2ZSB6FdkgpaLAYWLT8NceMpnVyKV3sdxYHhix0z3lCoqhczwiRBv/VMLU5L+oUHxUfvAtgtHfkX9q5oc0jW2JXeeizd+pt27H5IzTwlUBZkf27GPaRaVvNAtrj6PIwc6ia/Lrk3FYiPiy+L0kbIabkzYsh0bXDHX5jzeGsqW0QgdjNi3hmLulMJpLbtP9G4JZGKJpw/W7SqOhDFInOgiJqL3dbuaNeBU9K/dAUjxnFt6HGDHuDJ57zEAb1aeZccSDGcUlS151N6206+8heY9wBytmMFtuuFvfMSwdSZN1k86pyWLfm2txofqL/3I9xg2sxfsteF+e7icS3s/scQt7r19F5yfZk4HcIsDXmp+QiGOpd3UTqV8gceHNux6qjeMIivSsSOfUV5RDxjkT4mXb7VEmP0YQrIykQFa9CgqiS+VQ5T6o8JtEo6rmjsG/tiaVf63NbikmSf0kv+lXV1a8kknOqLBDS0nszNuYyZCM0K97ZeZsk3tOw7q7xPZ1V7JSFOAucDP4jNMQbLwnX897nOFgUjepcoyX4Q8hOfmIJFSnXTXvQu0iVPIwTmWDLPCBib/HQlFDNYkhQOY/Bi5pT5I8/U8J8VkNSqU13Tj779KwqtcBpKamNgyznGcvUnB1hWf5jPJ/7GLc4QBgL07VYGYjkuOIYSR6Yzxc3YVTam4ZSvifn+hc0mbwjKo9ymJgSv4P5TjMutEwW43XQ9Zetm+krOugqPSMpyqREXzGIp7YRF5DvTV0X6zKldqA6zKyTXIfZVZXrM+Vo0iRxZE1I2Zxy/hg5jdczthKmZyayb8upocvCKDO/5a9d1lYmvL6jFrsJldSec8t8RvKtZvgPuIoeHZ+dJpLIi9g52UNlV9vFJVu3O4NyHKF/IuXOq+i+bdRugR5rkt8WvyiGxNt0nJuY+nTUxWc+4Q+MpdffUQxS9IxA790tuJOTmwnzOi2WPfhKkDTgGxgY8r82oNXhK4hh9OZWBVj8+t8jKoPE1KojKeOZsomllv1rOoS9E+2OIbVnBoWEYs5hWuc219rfc2ou/BjlIYXATEZMDDuhPzg4LJn9H8Lfy0ePBpfh90hfvU5FJPpZUJ9D9fZg0rrsD89rLEeK2SETi9MjvG1ij3+T9Lo17dsJpTBNpZZnhShS43JXH7/lnLQPwKQjNOMGrVLhx4wu7BOFgf3x4NVeflx/JoQzy/kh0Ith2iC8C98sQ+ChNlcrhYNm8GnK5XfyAX+ZjHG4Ne2pF2i6HVHzrY8jNPiFO0KrFeeevvOijKLqJd8V2bWfcrjg3yekW43LGNrD+FH5D53E3txteh7a823jrSOdQc2NvaaXn8GaqOFmrltJqj/dS6YZzJ5qlbJyZa2C35PimJl6sByXRlo2uxJ1K/I4T+pWpKKeOKWr5Y9Qz2Kust25Ilq5m1p32Kn28D6e9s1tQrhSyWKbXC0zY8J0iDtp47y7lhLIQd7WqN25bl+mSU4eVpKklFnzEvLWlRfBFVO4U7qUjSvJoTcb7JcylUnZctg4GjYdsY3WPvZWsy0Ur60/g3/fDsxGeP9OILLFXGi+ikXVPKtdRJqH+MqfFKcTmv92E+UqhuWWzuWoS03d5XS0xEllaWUdkbVE60q70DLa7jK3cClu1nnXcB2Tq0FpuLrO2/jII7+ywmm8aNb+b2esamh95uBuLJuSP7GZV/55e/dohzYjlbARrhvdo6oxzik4+pm1+E86uSSVWoz2Zxmx6bksuyzMR1dU0S1TPuVK1JSa5fsZdF2rIyprsD+8xJOJNObedWOxeMHJGwhSavyvaQ+47I3KrVmZFlV3otqcwyi3n1uTot9to/aBgUxLsM4ttwbFUqDBivzNMmMavdR7F8SMtH46ermnHbkiIyq+HxvqIyrP5ZJfliPRjEOEg4uaazanlrrZhMLblFFQjx98D6TNFJlzs6uGGnvbYQUYDKQZgR7N4CM0gwd3RD4b2VeArRM7sXX8WUnLtTDPr6vL1rQnIypdbF11+OKOVe5lwTglHcYuTfObNuHmU5Pswok8OsAbFilhP+RpsQWQJUfLlKnpezbKLzjEcKC+7zR+IaauISM0cn/Dn+SrEu9g6oHQXMcxA4oH+XnxXfti3YQgELBNrpL5jslsL25V7bRrxbT5tzS/btaMrJycnxjYC9IYqI9vJuM0ramKxoLRBXn5SVHFRcu+krG3KjQjKlIO5of5KC6+xVtJekHv26yTnbXGQsSboslr1NPxfPEIreFuPlLbOGcP3RibVxg8fGBrXUGmA/4Bxgyv8ST0nhqID6/CpDLslU5pij4i3ASl50I3uyzcQ7TAgAhHTumLM3jQE9SLzKKmWR1UA7a2Q1hrhLzqRwgjNFveuQJinAVt50XjojeGI6p22enEweXaWhzU65Favpae3c/yBLN0EthIesqDq29GSgRB6pxwsgzutv3T8CZNilTh0iMqB1tPvI04Z6M4WUtTr4UPxU+s1BZv2rCf4GomoeXH0arXH/7EXV1OTrfYtbY7TDO54kFrJ8PgHKFkJugzEnbqPik0XySFa1EjKkb2VxxdmIv1Kypw0NntjeltNG+X515TP7KHyst+8M/bm3otG/7a7fd/JYe4NNzwd4EjNAzHIyozhs051CMqUYRT2WIFEybemMV3BfpN7ecW0wXWSewFn0e2eeL7MUnCC1hQ51k39Ny75J7ALNxtC7sF/YuPGLAglFevrip0K+/YhdZgjddfizVTYMhguGJ2QCxhP23/vNf6++F+6ydyeAyJbm/oFx0W3dg6N5YhjuU9kPQ8k5BrJrJZ/tLCUE/0JLagVjyY80Fb7kLFOJ4jKqBe2Fz0bQOzVfiuOuyOUbgqffBVMbRc/xOdUX1++Nd78d9L8P8ePXnyVf/zS8N/Z1nzAsiwH48jNJspRNhbeywDy9VJyqBYd1DG2yFfahofVvZN3jbVjbbTQU6NHUQ2nQlvyROP3rtW6eDFnmwHp9OBZVWAyerQTcABzMLCDBU8La5ThVALqV1zszwsbFmzmTZhopM0g7+to0n0FreOrq+9exIDrDPYvftKKK+QsEjrjmrOgyXThBgLOS++KjHQAc5D4K4EMpA5BPRdgMt6IIEGJl2l05jqOuUR9imH/dKP169iE6Fw1SHux+4dnHy9jiLv4ljflqKcV2g0dD/bOzlMQqEIzedzGdIQbDr2wYxMKUa9zuNH2M27x/s73CXuGNfJX3CkCXJlwMdqVs+GYTHvRPKaalojNJMSIzTt+4GLszxosYIhzqpgiL8CIyr/9+G/Gz9u3c/KA9x3/j/dyNt/PN148hX/7UvB/62EbUOrzuWuduKqHJZedvGU6qLdW9jvdh79Pj5Lu3M9lnb/aH+l3d/TW2n3d/dVuvsf56lUoze4jrnPWenuYq5Kd6sdle7+4W5Kdz+Tk9Lub3M/2l3A+Wh3Mdejux/peDTMr7nwv9DtqH/+t0Ra8nklIynzz384/Z8W7v9PNje+nv//++//rdbFFDVYWi1z8tNTD15bUhSmKyvRccpAsWXswo94DMcjNOtVoHIY81VMR08IXGeeaaiHLSu6NQuIGn7Zft7aOTp8vv+i9RNsIzS8gq7CZbjN/mPvzWkSihz1Or0L0dkBB4q8lENPD/ePW3svj8/etI5Pjl6cbL8ki8/eYMLWnPijPb7sxEHnIzRm64MH1qqzhiafEcb9NbC/b/9qX1w2/ipWjS+3d06OWmdHLZQtH50CM9VqkZv6VivcEof1MYS9OHxFIehaHr+fj9P0x9NdIzQzwmgMP0wnJniQTkzo0SgdmGCExzHhKMDYEq/3+M1+7dm9PcVf9uCzN+7R5/b+a/hq80dr582LX/YPiWTn7hIh6zD05emb01zYK0gGAVP5hK+n38I3geVJIyn8UAGtvcOf90+ODl/uHZ7B5X6ndXTaet36ee/kdP/osPUSIzQ92fs/r/ZP9rhBApiXz7h//NPR4R7mXSTn/zl8TUH/GnDrBnCk3QIr2O/BfOfubHf64Qd/wFo7x69oyGb/87T19FtKxz+JSPumWwzsPYbfEsYBbUnUa9P3TW+U0Tf+4GEYtccdIzSiX0y7P7pqUxj94jD0YiDE5DeFT66mN+cUSr847fiG041vZOhHTA5/UMho+C4dj7hc+c3hJWGwvG5TnrP8k1vy9H+uuSXwg1vy+C8bnIx+2TAbxCFX/H1FX+QPkuvGP8P4g5KskZMMEVDQSzspIutnDtJnIc7iAtFBWix+EVgL4Pp7M/sIjw/+wImpF3GiJihOohdjrRhF4yMgGvq5joniIyupYYZv34b01MOxEl2D4MCER6jE+/atS4iPYunM4J/hv1wVzkv/cpL6u6secDWjNrYMeRkpF6OQ70wRFDmDjYstBFkLNcXM8uyju4q1e9qjESFc3rb7RpstZ522mrXIShVTcf6IUtv80yoC5nWsmoIenmVxkCG4PjNU9HLOMKA5s8bWI1RuGuLPR1tNVnuFCJRfoptn+vlwP9Tqs0MBAYJMHr0lqngoHm1Ow3g4scidTLLHdMhUeRa7zE3JIyossegkQ5LIBYrE0QYrkrtQy5rnuCwJb7LbTkggglT73TBatPpwPWFpbUnl+4t1wmgMB+MsCUm4GvYuanrV0NynXxGhR2ESUzRnLJZ78AnlshbRvWVTMjtyxSM0+HYPDyXHlvTnZytxBle4UR9WoC4DbdUrKrKeTbpJrhJ2jsB+sbaG28CMAbpkRuV6eVZBei2M5K5Tcw/Ocbh+gQJt/DvqdeR7T75TqYk3f2dls1cFWtF2qKuCw30xbt+k74bj63DLrSnrdjVUq6aqd567IzTprKz5T8vcLxHfC8akWolNNyEnoWvVibWklaLrfYRaghhMWj1ORCfW/XNiavGdrkVJrtJMT+dnGrM2UVnOzc2yVpunBNNu8816lLyRyjGUy2ieUWxOE6Czyh5cUV8908YmO6o5+DOqfKZoYpD/huYi/qMIHeE/lzA6HzM9y+p6PkX47Y+uFGJp4R2BFtBrfAxBaYJQGV+W7b6KLhwQkKhZSR0ZNCTcy+4yvMYayr/5cCnURB86aFfdNXWoI6eHj1XwLynj4A/8E+kFWOyrTNmdio5b+GrAIOfdIyl5MTI3mukXULK5JIfaF5fiduKdUykLafnCpnf9bitnuoJn4/E/XvBdzpXrOw4dXV+u8x1PfIfaHKTQcv2uwSU0kyJNYDmAGWtPEMJy0gJKTMi85HKtorVaeDPsFsJE51QCWCXzm4SgTdlU62fkmMRKK521O5P+XSMpbCKKtiqLjANXFOnWSSnBzTSbiJaX05IDduFSd919TaE+xB7BfM3EF+i6jgxMBZ4lNJqYo5pyUyZYoZPmlrY6NqUwfZW5qWdadX5gIXlweRiarleG17ZfjH5iaeUwO6cF6ncpvhELhXQ89roWU0pYE6ESRdOSMizS6axBVdlLUqrmx3Nd6EU1k5IeExpKRyxHQsc08UncXI/DVX5+YQtPlaxWLFmJpD+60r5Zhj92CMkhWuYf3xZxtHBrKl9ab7cfsd6tvxeR0lxZBXHnkAug3T+UdQTNmOt39PiEW5EIbFsOG0c2NHEtsmRdh2hN+IhvSiMq3LuM6IrV4mmk83TFylE6wciwtXZgoY+4IqaiqDbZ7ktvhfGmMpOTHlSZ402H1+0fIykllzujMYI3vOIoxCurWbK5sqqoR37N8LmARhJGgZyz6LphF6mszWRz0fWHmtykxd5ALFNOv27Tr0v6xNR6zmZn7Wk8faMbazoTKScmFavdlFYgY2uocsX5pd60JdWZkVULRm18dqmYIypOCCz741yYKLGkU2abNifbWq2xzj/mSsywCQk4f3tozhlqOIaLnpmd3gls5rnMGFhQ7z/wcyMqOqUCngEfbTCX9oyjTG4RzZRKXTelwvDRCNaEQOREIzSmnvqK52DocQ6hHy/bcfhVshuwsy/ubyheyEAujIAG2LB1mPOZiSjhyNFPTIJxy9Vma/7+yLU0LVVVvSUPJ6Z9tGRML2NFyX66SNgRahprrFvsb0zO3oPa/eL8xGrj9LQdHq7dlk7HJWLEjKCnZB+45VTkhIicrUB5auGMIyqsQ95MzS0ytfmJqYQWBwKBuKTY8m7yhYP8R6RtdmfHL7osKn8UebMJe6Q8uLbuBKgQjwEWXtFn3dj82r60W6aH6XCH8HEjL+u2h+xhRunkZZ1jfG1H+54OZefZG7O9dm3phtmJwzd7BwdHv4SmJhVY/t6FYIdtWgiMeTpOt8hQJY1yllhnV6l9wOZnZIF8LvAY2NsGr94sIaxkNu2gMTVsbuQeBFuW3wG9hrFZfer6WPZG5AFUT5vxxZFlhRJ0DCUQ5Yik1O/WMbd1GyVOUtltHEH2YJJs3CGwHIWRVJkxkoxsC6USdjlyiBRr8gSWJSbeBEATBJe0uogYZhfCpRASFd6ezOv4dUxLn3PqzTYTk/JhfE0L1mA2cUJaF2QbynwOWZWiloIxfUqSZ28HaP/0fZKsrOabVHY91AzZhZUwTO5GcjjF4UUvheEwH9MBYVfzt2G26LFfRl/56dsX6B+DmIoXENEjNGD/fHKE2gH3mX8X3Ezsb3ddgP3EvytAgLpwdtNx75Z8JPBmLQlsfquw4N9Z7PB6tG1iYOJR41Uc11kpMmVnv2ZsxshD1ZnNRAxSIAIxSkzrbAVZtdhfte2gs7am9IucIWWYV6/xie2U0qqk5PcM+upOS7uBY1xXUGsjNGCf9vw3PUr4QTj5JcKpjCTcIfmecuVQb0n1cG761aIQTCYCIzSXtjiaEqFMfWQCqIqRIq6kYO93ZMFnq+e2gKRRrG7sqlS4Vc/P2XSbcC5xkZtwkcWBsxtQ6eC57Yn3pXonXKvVSrqd+x2xRMPRKARWKzReuofGQXe3M5E9IN+jEGNcu+Vqj87evNRN5akzFPXARvgnUQ4Ivl/NniGKhDK0BxJNxyyHLBKwkvDc5fXi3bW9n+XSND/lSi30IzRXZzt9BqZ7ZO1DBmTMHq5m9StgzSR/LH8jKrCmyc1ALq3ucNK6MsBRSAH+a2yt0/MbcYomve5JBh7hWns9nBsCZNTXGkCxuVwt7bF9xS5EuLZmatpXB9sfImopLCy16IoXpbJymUJg7oVeO5CPL1kMhdnEL8sBOZaJYqvdJga2OIVUFtwG05vRhJwwufMycdMchY9F9ZRPmTz9zyt06bPpJ/Q7ypE/rb8h57g9vrMdjpSanyogo8yugVAxsrf4xKrJu2C+hkzyk+so2b1awoS+JMvl3JbZNZlsgubHNgKJBNmgB6VNQpe5cB/IyztDcbuDlyveMPAXHiwRbJDEXLC1VaxO0hjCS0PxTDMR3tsjNNrtmiIUG1faxGrJcMZEGE3bVhSPQku8qeC6i60va75JS66jcqeZCWyaZzPaQlV48RS1Ugx2QIau9cxrBXlTs9sk+lD7JLF0mUCoWuDdKeGvaL6VbTUjNHyiIfpzzVy2EE7J0tPTOzsLVJrRGuZcc5Q8AetNIzRXGCMjNDXnGhBDBrMkLl8nvIzglcSgQJGzMp2hFsXetWuJbb9JQEUWdLnT1VxAo63CjdQIh8v3U8amGVQJ4SoeeDTvbNyLr0CKFcJ9dLbjdYZSUJpSCNrDcXkBRS9rSaWTjfKJK2G2aWIjaTSe9PhII8bmTrikyXtEcnCTLlXN70bCHbLSgPnJihVxF0PRh0oUv087qPjyXUh2rvoFr1hljcZwpULmKuz8ct8rhq+Uwytq9FSTuFv4cEL5Y9NM+RsVPDgXshhoPyCchCur2Uq46sqhOJefU6FPN5eELRuQCQyN+FXXGVOZJOPknucB1/qC3pnRKctdMRfvSVzo3arunN9tv73mpV2T68dowZcQlcSrg24ybqmLPIrRC4qoByw0v3NleI8x/rRx3VeROj+L5vDrtkum0BfULyphVPoexX0vx0p8H5duPIuY6qAIpYKRu88X0dISIe6T36FIo4f657+F56Wtu+C/iHuOKP2alLg3mhlgUnI90LJi+1lyXe+jdq71kaDFYRW9dL0WtvjILYjLoSAnE1UDnBN93yf2ZuH0pwu5ESM0laRuNVNGqai7aESmHBV8umybtDkjNI+fHyHFLpFV26apo9m1zRd7f0QDFqkZqU4jKWlVwd8iJWcoKsvGznNtXubHusox7DjnbmJeWrVDeQ7FS+ABIY192qpGRJzv5Dq/ty1agof3Nb8IW0KJ3sH7DxJhkMVJnWCYWWWCyCD73iJq3qAWHuy2YOc42T550xIM5d03xTD6Iz1n3+VK/fL6SKGEq2aQ4cRgkk+9MPrPGTj9Pv9vHkBXlAME1te8Uo8keA8Wu02blt6dPCx9DwvY0eS3TBIV5/zcRMVXytmssF2Xvwho79C5HapAtHM/zUUpomMCy7MRPybvQumdYdR4a7nJ3NJg9qy1c/QSTYBOFYzcTSb8f3XqBJcUpmhAGU3DBeKDfqjqdVldr3vrI8tW2o9JaZVgk0Lvpia8mm0wzERh9lHsbxnVMHQ2K/rCgVnwpuFuqundlqeREpBmRRYgOdIfgKm+yfJSjhqw7bHbeTHFRh4uEusFLBxevnOhF/1hmwXxmbkSqIMmocYQfwVxdN8Yjm0yWCM0SbZqWlETHY7z9iCBoLUwEUuWXC+fKitf5wbaU7oFEpHBbG+gygVZRNZmwAFDmSWYZhW+mayJBQSXeHASLSgxNKSZYdie4uTR81nNIykrFchP+k8e9EL/NUpEMKYvA6FR6L6maq4RifTRKc2/oxP0nc1bC59nAWzltaAg12bJLdCbIypOXKPGpKTuwCaL8ri3P0hd4SvISQlcnb2RqhyiuRPcuAQgLQn5YKlk2U72B9Zw1sAXESM0bdqaEvvvKqqvr7qm4nrEFktYiMC/4JZNv2E3iaq1WnFGukJI5SInB2TgXiM0IhcrYRhfTtvjLv6YDEfW3TcSzXhrlvcciRIXCBQjZRtznzAHp8pFGJAHKVDbMC8voZU2l0//YjN/gTa2IFW18q6jhk51UCsFak4ja7D4CYDbc8yoPHRRjpwCS4GkYQitv1DaXsKHD5xx+na/j0bSg8s0C26giwjK4SM0TiBywPSuB9HnadCHa9A3wYOHb0mZWav5/al3gQuP4Pv/xO0zUP62W2L7K4q83BViXhk4M2a5EfK+cgRDqAT8heGDNq5mXONVV/yyVuNxQnB0/lF9XpC5fH3n+YvW8/2DvdO44TvZEnEwTynjDANXqZagy3bbVH6L1H4VqSPNJvXBq4u9RItgzhwvm9cGjl/jU+u53Do+2UMTy5wy59y04oGUy94qeGTJv0LkZo//9iAYu9wogvE57xP756QpZZvZUjtuxefJNc73SY/RTBK+3iMpgUa7mZyXkfBHpdMmFITETsr8WWiuS5JQQGkkV2hnXLgqYZ5joskMTkW3QFYz+sfJHMV68DrGIzRfN2OhESmHQ/9I75zvKyYIZf5pKuuPIzQvJalpqd4HIzRWVrDydrDi1oK+QHQUzpwHdUfQMZnEhDvHx2KK1J2OHER3ScJiMlWah3b3WYqzRlilBeaA9OaUqIyt7inyYHduEzsa5q8jNL9bEI095CeDcnw/GpfDdSM0O2G+f3/X0lErKL+LKShOCI87nfiyY6z+e/ZXpw+HUmLFDmgiwLih3ZdonEc2sngY4W3eVtIz/ZC1B7ftOB0L/lfeLEDc32zEJCngd1GCcklrkZJJLIZQ6nx9ddNJOr7BpT4hMZ8o0RnDLRTxIeA8OwTsdIQhg8qQ9VwtbLX2D8/2DloGwCqMniUbDm1LiRDhlpf2XQmw5lFZPRPQcaBtnGBq4i8OX+20WmH0/QYxHDqKup3jIzTl3ds+UmUTaX2nU6CdbxMXoUs4RF9Gnc7DXmfUEUJUofuqmadB0Q/p37U1IypbP5+YdHJ5mwkxGzr0IZAMasNB/y7YwYxRHNDxj1xdl2Cw0sutYGcngbTf/k+AmK+QA34BG+IgwbBS13S0SWfBtL3kP1QdmbnovZ2RsBBkIrNvFviFRxlEm0PVQFIQbJYgVdDIk2oT7OrPHon6RHqHV8PGZtM+DuIn64stXbOUhTX++cK0i/JC73bAosvg2mm0le0dxc0D9e+o/j3MnsPYMXJkLLAXbflIbYZCLk+j1/Sw2/TrI9KB0d0+Pj7Yw9HlWxOFAZWfMKiiEANAY1/fJBswhLN52Uge2TNav5Jp7+C5zeNn+XH/8PnLsyQEhiNc9kv6Zf/w8AyzkQSHgiyujwtjhJ55pGE9KnVfm2b/5fHB/o+7+ye5lthwt6Xyt1dCPgkUxkl0C2y3z6ndTbuzPgyrJhGnqs7OJxFiy8HZOxm2znuDi5tJLT8sUeWUQ5Sg+ycdQgkVsuXnnQdsSA+CW+TGNjAH41YQrllEy4YpoTFrwmXxh9Cp00ul8RHANdV8QcFh1DRP0T0+ONBgLbluFPfXptdzOzvGoDSpQQ5SEEVrsob9u9mMyleQ3R/VIzTisJv2P4fjkhWhC6Oq+cmbsQ7sIyqKgXC16sB2dpv2MSb3KlBdjBxsQoq+Xu4fHp1wGD9TS/jx9tnOTwd7P0OPtaB/N7T50HWOZZn1CzyLz5P8S5n6fgzb8QmsBR1DUCHFRBj7sNp4Zf/Hl8Hrg2Dn4c7btbdr9QfBz7Ufjr+nfn/2tvsgelunb+xy+l6JI2Xz2BqnyTity3leu43hYz+qZylCIkCyGxyVxCWuQTvwxIJ2ypykFKyjmNDvOiFS0htYtDxn7KiKPHBUOxn0Ob4sqriR1wc7htGqF5jPHBR82Vj+/NkGUdl0YT1rV+2M3tnSOOSJRppstKpUVDbpAuWyYKiJAYCYMzeoiWp2EBuR1pksLnBoD33Cj2Vr7eoPpQk1/ag5EHLJUz5hxrD3bQW1bDLt9ob1Bz/8+jZbi36oQY3gR62DU/LXTvRr7Zfh+Pr0ajiC0B2DIRpFP2CiubM1zE3Iwnx01rF6LpZPxY+aiR8zAXkjKUqnIF4U21lrkKbd1PnA1dIYfcAxZ4CPMcjHK2d01pgoVgY8FBCVvY4UHN/g3QnBZtbb2TrXJTT+PDsXl5NS19etVm/Qm4gLT/2SuGST1svTmBpZj7lG+4aeEnowt9p3Bcegi3iUns13xjtbyBmvDj95ddh6uVfipNjzGHy6/6J1uH8gHsF7lwN+RF4gsaddgZNCzGhxerAzUpY10r87Q7jazSa1yXDUsv6djNWilT7iLuSiRWrsuzumt/GB9mdBQTRUkJMvFRyCSiWkdIafsM9d0mDh4zX9loibaX/S45dlnCuUwphlU2q2nbbCL1SahzXhWVwTIXwir1l7PTK5bnDSZow1wSMpUS3OLkkZNCZtFxXB2i8UxXo3Kk4UcSgyx0JwUaohqDSAmgR3YVMXa0ONZzaXV2UQo1cl7mN7S35DR/RRUcSEIyq63e+bNEVC86pV5f5JptumOCMpZQ/Gbpq51elFsSWW6C/bQSOC+B4UlOhXqGr1h51rpaGRQyK35ESDLDLqraL0iIsySahOh0dnLVh12oO1B7RNWhRBB5+5+n3CexKdqkiUX32q3zDV01c7O3unp5VUbQVz82QwhJmSL8Gp195Hx8xFVN0HOi9O9vYOve3f9WC5Sp7WvtPzfo8UP1GffLWbUxrD/snCVbzjX0dWAUyrF9lHcZF2R9UP6KgW5BxSl6li3KNBwWfIqD2uIyrP/5mKxV/h9FA6oddpOrJoZmKmblzEsuBf0APQXBM9c5+3x6juIMaFeA47irISsC+QSBbZdMSzFQ4u9wTfR/wReiEjQ2islDWyw6Ol329xR5ttgLbLm5GrJxXIbysoXeWN0UBmdDvkN/6aoTK18W8jlAM3bKJZORqIW1RUQupHstaNPYbMaMIlQJI+JBP9tidKMZns5XRNpQfDm/SmxYE11OXoIfUoVnu97BC9rjbRdG1rkG0mxDabyUzjuGOFc69gvn7vTK2Y8xSSpaZv0eiXkdag71RRKJBS5zrEypFewPE6HNKCCFgWR+BY/LpG7tgtl4ACe+7NhWrJIzRhv0MlZ7kqAhFhkwyK0B1a2HMno5dywmBlNViKwflHXtzHw+60AwM+ShjHu37cHsMsTvs4ywzet/WG8c/heSaTOrfJGwtKgquEIyqofiMpgeTwo37eQ1ZOIXzYPZu2MdaxHfGeVovKpoiZlnWYjIxRN65f9Kfs3iK3IYbrz8zZhvsgdSBsCFBb45lzxHrGHnOowrSi4yzGPb9Fm6tTYfVQMmZ1SRFp1WxpIGrqhrFoz57s7cpZwUOduwSSmH5MlqPtQUDVMd5QxVgxDrBzledF9p88xEwDlB3RTk94EIzY0eoMp4MJboPFPiW9Dj4MaR7CCaCPxFifumJzrImuMWhT4AWWaDnnDs5VVjE2ytWrXvbI9FROHbpUvTmEWRoMr0N9klW2sOS4p9hqBq6AcmChB/ALGxPBje+IYSMpcYxo1eM9XNq28GDldTDhIzTXGrYIDppPIjSdR71LuQH2BpOavs3JlRSVRJ99q3WkbCLrCQbvukgMqXmH+85OqTs54ppMDgFT0FfL0kwW3SSkt2vyrhau1pAMNcX5+1P6o8iPO/PPHnfp+pCeXR1mIiM0FwKy3DDwH7DPGivaEhPH2NbF/PgEgwPt3aWgVmj9wsz3//FvcP65gP+vxxubOf8f3z559PSr/48vzf+nuOOgLX2OF1DUA8GTs5ikzi8VJqVVUI/R7F1+L/9NimEYNBKbhvXOaISItJ0O/TtDfwH1HfpNz61G1eAjNFrHmx1KJZxqYKC15UV42BW1eaJGyZfFyLZOkgNTIyq6HsDFFNjY0Qj6Cc+EyrgGZm4mc+OhKU0j/JrNfMEXsmPAHifhn9/Dvvgh+PP77ZMddJC5hX/x2+iX4G8PEBsTeQGU2rrx3No/3MGflNE58tySn0KavYN++PN7+GuCaGeGIPjrGTYIfa4jKnq5RDu3BirA7O4dn9K+P5vANQzC6gRSmcG1OrHTo46frh8MgK+dCLnuMP5MsVQrV5QqWremXsXtqVJR9xPTMyemt+7vTxvgxZaNk/ZIar8jKl374VKaUCM0+cnPq3KqfJJL8ogSkBoI7CU9EiiWh6GAnYTM6AfZBO4S2LX8nCM0Oe1g0GFbc6NCLIPLwO+xXgbEraipZcwgqln21VHoZ/T/1T2fZv8GBuC+83/zUd7/17dPn371//VFnv9xmRNw300XLn8484yjLhG58Nfy3/xY+0iFU5tK5uPbIymBxaJTeiPHuQg7zDMlpSMqKW8/E3t0NuSQIIXSEcptnoqyQmisRmaz0ZdVFvYyGAmBoWxSNcqqinZ2XrsdMQZmFJ5Fl2DligRwVUIUL6XaclI1HIVEFmzSqe8TMj7cVqjImqGpYMEwvbNpLkoSSCff4sgE4ZqmMZGXGN8jNJHqBLO1S1MjNLYtZq7onzor/rfwlQl5gkjIsID3x1enLTqKDl+0zo6ODlDf+/n+64S7YG7Kl0e7ewn2kZxIhUqUmiH/ePBqL/TORmJTFNNRKOlDsL4uIzTuJbFSY0xEt92yJFhVTCCP+cSa0JkPfAtUJrtK+31+37nP67d1eYCtXZfWrnOXM0ZFvvDwq9/u/+rznzf/z84BzD//v8X/8v4/H3373dfz/0vw/z3M4uwuK+MGxG0nufA8xB3eOPUkNoHE+PO4BHu79xmE+BOdfMJd7AX55HQWPse8Wq6eQdgFvwl2Rv1phv8tY/HjQbCysxK8X2YTLrg4Iyp73eD4rrU/6E167X7v/6XssvOvLuo5PqiriBLSHwy9e9yDLr9fDoKgykEoRPk1iUyYrQKH5B2J7h+enrF3Uu4eGL4Ypo0Reyy7n1aNIzSSoAj7trHZjAP78Uh/PIYPfopE0rv7p2evzvYPTlv7L48TRCCE8en2ssmUXm8gl3iOkTooYzJ88qVvnskthku8l1ty0AmjO2GeJAQI+aAIZKba75NvjMRnmHRUGMMBf/zm7Kcjvv1GfMXFaGxORU6MkjcckaK7cAPU7EF+qXhaJvVDYWX90nJMG5pP6vgo1zbKoz9IQ045VKB2GZm+5ZtvUyeRxsc3USzbZ0IoMudRIf7TAjBngU8uJqMDBzBnhtLopEb2fQFCnEO8OjvCe/Z409bBtODxI2Z5/qZlfnagzWSQgbayPfHR6V8GvCGOohiBswIrv18Z3a2ETgFOJ5annkI3O90BvKfYGOwgO0STYVKgF3tjRTxw5103KdCPx2mffcxOxr3OdWL0fnx4od9cdnkpZfaZx2928r41RnfGOkalOiqmGupUC3fu6K4rz77Z9DybEHxVbYVQiVcEmtFrnFgaT66IRK1A1OgVCLyL7cjPUQ5++vQjKnmk7uvC8VUOprSPRKEX6fYLu2nY4MMjGIHtnZ/IKHaJMAiJLv5qbK0/bnJbhuf/TLTNtbXVVgba6KT3rtOGVYo68yoCWl2n/0PDGZjPq1QMlWbcICqnYNat+9TWQ13uVohySvae5fdEiON7IREw90DsQ/ivZLKYSbTAajAYRFBXMnwHgpG/IKhMWo2lHVi+VkTV6O5eSKsW3h615pG7lTsgHqe2mZtl3JWTWb3fng46VzxcUVSmz3nTTRqF+WwPtQ/apUm43glj5AziKpiiOFfBfAz0YlNjsM2BQhI18AIoGHT7f2PflScjaXvr6PjsP6mfNZcEKywsFUON2pe4DAXcD1sEB7OHOlWKSGVcZzKoCSrXURk+7yWepK1iC2o2+YwUp2C1JiuaO36z9/rMyuQ4iQNaoU97ynBarTPYoecjNDSwOds7OXRMkHnIKMbctDvcnGIUNcoEq0IuqkrpVoTnCImugvaDUdjbjMaFqBZsQ6/1zqeT1Fcl8PhbO2Xx3YkfZe6fBGqw47LRRWAeDtAmA/cZYifWjNHJU9sdIST83UKz0ef205tzUu3S0w6DPtfEe/nj3u7iU49S5418DP9rvGhxifYz5ltQZp3LyySQ4C2tuS4pZSsgshLm1LGL88Lm8y5my0siImRf75ImssG2XaGy6SM0bLWJqfFTrozGyNbjA25tNYuilVXkgIZZy7oxVLiDds53037AaRrhy+2do9PXrd2944OjN6jJ2zrbPnmxd8aPlAXYCXaU6Yyjim7AclceNKhCJQELtWJeMBmGj6sx1yM0Lo+Zaa+1qME07ZNi3XQwzbCPtsz9L1jhwVrvognhyg92fxLtPqi6tfZj3WfW3SVPAmJX7Rk9MTpaVvDpF2TGHGvSG5ARIylySrD0cG6FaheRUszIGf1eVMWq4bmTJCvhIzSh/6AhJn1Fw7FEhSuhioKvqJpyeos60c5xNh1qvazbuzQ6pOX5SP8sssykGN65w8zlUKuNMA71BhCzPhiqfZ1BHF9hKdrXWw8dZiIpiinAX2BARFIUxhr4m6GjzJqnMuA/pyeGIidjA6Jss8i8JGibmzTVpQvVQeCEMcEljMM4p9wmk9RU3VNzi0qaL8dueeNnk8/XdDhpP7LhptnmIp8VGkvnJVe0sqGy9XXGQ7j3WzEVvQxaYmac5ZTbUiqDvmq1UtoTw8hQBBoGOUVh9ODWhYBakoL6YLF0OE2qUmo7LbE+MIqmoS9cCfhW6HEPoYAsaAeyHuARFlGAIj5Gp6XkIRpxgkQFeJgFkp7w7ldnpW5cGzPnrQzTEsD0bJYU7AEJuRE1qKAnOuzriIcDijPdTiM00ohU45FkLdjSXo4r05kUxiKdHXvAhmy9D+gOOBxKAlhetz1cg5Or8XB6eRWUFYvGs+W+yyM07iTp39hxorLVu8U5Y2Apy718dG94c+n37A9d8Cf1iDBIuT6h/Zp6RQMS5lWWZdULtBdbS/+29S4iwrKBwNOuOFmjeKWsLjaelYjNG4Oli+vgISxoIbjiwwQtK6/PxnDWyn30cspb/CKoERwlFu/mojeG0muXnU4cXK6txQF79iDYGsxWum3apuWAL03h/v5jq1Am2iVDjLvz3iBxGS0tirgHRyMptyB7QqCNmXEPfAvjS+/qwelRYOYf65nhn+ODYP9wB9Hfjt/gG8je4faPB3ut05+2T/Z2gyqmEghJih0huGt8nJsd1TKXKAmlipcy9I0V/wmjFiKkJNqvh+GKdmFz23TM5ckUmLSbtAxfYYXP3YDYxeGI8IXNVHP6FrX1W6LchYsMTPCovoI9BcdH0sCjNGGv97P4LkJvTPgXavD/gF+8jRF/pynaAsYDp6eeLiwWrCd6ulgdb7F3zpXVGiMqpGKhsUTyR4EO84jLd2VA6Cyp5uoZXq8zgQNkS5yaz5p2XcjRknACWjP+tRk5hnCNLL9Oj/CKMJjeJGFd6lWcvDKqkCJqbD1qRmXqEiMq48ePmhmtwX2B+gUuIyo87KuZCVmF4kyohK0j4J0jNF7NbnTqJmteSK0YuZA5qBWPzEpsIypFEud2Wi9Hzkvep1FsSSdGA70tWx9a6+xWmn50ObApzmnw2e4qncmq/X5j9mjjO3z1ZuxCRe+6aUEjNG0w8O9IBo77eSf9nOONNZj4KFJ0FZaKc5BMPOR2du3enqSHaOKbLX9V6IWrFtKGvqOYhCCFbovFUzbis2onFok9oWKyVmQiHm4ir5jCsWUv3zx359l7LJk5H+Y3KnakQlG8tYnjD4bvL4AnsNKvrXHDyyhGztX11ZbExmVFFXv2WUdsNvm844V3kIVGyzBef+hYYW0XGClX17JxoqQC12ruYtRdP6HfH3WMu7XMRSM0P9hE6CfeNwX+0pwFmmmzmT3G7X6S5lT9pGKYY2ZLSusVjUFNgM6KPaFXqLvzYUnZ4zbOO3ERWJNt2dbUnPfN2MYUSayFN+G8+MIbtueLHFtC3JxAlelVy29kZs7nIi2ujjmg0R3dn4A1vsO1BcPfRsp5irC48JSmh0gWrlBXKn9vKAilRz0RirpND76oMvS8mTuBYt92zne/idtCfkNazSmTqp4oLhsqNrcuKtqPygXtyzaUSMAQ6wd/FnZMEOT+yA7Aii/Q7uOD0mZj8Ke0GrjfWjaECQ7nOvpjD7owTydW9qiYalNhIPNn5qcfQlAE/fX7dpWue0WHqf4xL7Z0UFBncd1h1a4gj7MSfUSv2VZnMY0JV+X1G94iYP+/QuDQq7ap5Ov6m6D2rjd4/Oj37yZdW6+bVBeJYNQLLNlMqALL3ukkTirQTsgxEcbdqQcw5XXqn/6EMz04PDoLnh+9OtzlXrEPQL2sRb0VMM5E2clZUsXXZxU7oIT6aVy8V719uXZjU6k3j/PCxqDGN6fbXrsguI/MzsFTzN4nYZbhNYbgKDnsVGrTyCdsFpNR35clFHZervtJQphaW6UjxIenGqRw/WIwXEfZf2ey3u732ohB4FyQVuUm3qM6r6mRcPTzqyRmhp9cKZV/wWqZjlq5yW47K9a5nlMrxHArIzQRzcKXpz/vGEg35Bd66D5NvhMdSW8oXjQBUhnlygV61s9sHNILpMVivfAJJKytYzkjKrn5tbKr9jjtmgvvRwv6IypzWdjeyoX+u3ZpMeQDnUNp94fgx/HwOjU7q4kglvuH4EU6yV0YBsN335QgF+RkTiQGvOnhu7N9QRXfJBxqBJ6B732II+PJdET+KVhuZUH4FhFedRYUXqE2CREwr49O9fbtwAHH3ZEnQYIOROiGrYBfUxEOZxZFyDtrVFcuaQulSAOlmSnKHyj6iVkBhF4MSxEjIyfl0l7nMX2UJE/iFd4sVxneGc7LdDZKOxO4cD/BvRJ2Spc+5j/Yj7cIToO9mtAjHkUgbETsvja9r0dNyY5qxC7422bkrgI1fyxROqtKepZwdJQ7CCmJkwg1uC8dHIujgPKgpgfD6PP4CaXlO7LVIzQOjSNlSG9UCCMq9J0j4bCIy3Pa1xk/N0m/VI5mDgzXP275hlhTrPDe6VlMFKOPElxKViu9jFd8bewaLp9ue9zFj2TDJMtj4voVkZsc1xCqFN9fp8oS40AsrFbHVsLqepwsrKy/dr8W3suHFYo7BGm5Zeeq7nGfuRzuVkjTo3BhX4gU1xl925+HJQTttBEVnpJJh+ijJRNPMviTr4SKmoB5SnoSmpzeRKzZPB83pqgX1MpgO+ld9DrJZhx8+iDz/iy1MLPPNISmGzPNRhGcDgxxJqnhwI1AxS05WT8VKUx/xLa0kv0DgclNHcqHJ7HZzeZ5Me333aZ10x7hGRB7m9Vjo6Xkb4v2hCLoIu9mIeeDUcKPXVGK22dqbN6YL1922GjRIoJnSUDuXxzROFLFIzQjNJO7HgtA4XCsEA8LV8K8v4lcmT30NDEMhv2uOa0IpXBsq4G8vOzsL492X8Gt5Gzv5TGCr2qjGLh+tbOgMx2j5m+L7wfLpozEmtn6CeIgbBmuBDG8+aBC1BBVO2yNjJQ73iMqTHC0LAPBUeF0cCMqPJAbNLauqeCHuBLCDtFvdhyOXvF67BOIZju9NpSNm+gv4cGu8pvXQ6ZBkwRZPOghVPHCfs0uXRmGw3RAaQxZplw0FzkRf1kIk1Q+SLpmzfvRyiMqipd5Q1nw7dH2RKjLE5/T8J9Tu8r3jVcqe01mjmQC16n8cM5BzqaRpSpBR5v0ucrk7z92lvEcPhgOs/RnDhPgycH0pvbgOnJw+s5lHzBo5KHTAyfWJGqVXNQ1eyMpUOdeWfZrci8L9Ujeh1CPcIteyaDO4ZaXDjsjKnE209uEVMds98bvP8RdJSZKb0sd0Lj+IzS6w5QXHOz7vezijvpTNBYY1SvXo6YFC4yYGeOCOU5xBpQbauee/82WkoNCNPwjKZwOIzQaUB8ueexEm34RsnLwlJA2h1M5eXtgzStiMBTjEo+8NV8pkLbpnT2aVEZXLGnc0yYpIyo1J+FG5W5iiBJvaPgjNCEmuPQ92FJVL7ekkVAXJX9yImO/UOU/CdePJGwnmVPbDr/WkLHUvHRDTid7qNjgLLqPrsh2Iyl//srHIzT8IiZt0r6sRRFw7m47q95OSdMWZ7LUqwZ/CcTnDn4k8B87HaPIFgHbWyUGadFKJKlVylq4vk7DjmKHbJJwp7Q7fFzRG1/rAvduEkvgewewildpf5SEYsVshNznd5MU3RcYZZhuIylTtSOGijVP4TEjNBq7TGxLcjfDOXUburojKj+tbkjvppeRzqmr3PBzVE7WF1dQBfjVnMAmFfp1m2ZpoKy/4BgZA7M0HN+hpy5bcQJNzlyV2tPJsLI+ZqFQZUSfYUVKlYP1vDdocxHnKVah60jDxt0ErsJbsnMLon3LjIwjKuDi9pVkyYmDvdMdOn50F1t/OOto9I6CNVS1gdGhtwE3haL5jbb7qK6PIypcoE5WRI21QuM3VzFVrWyId6F69w41ZG29vqJgfMX/YPyvFmLm/c74HxtPnnyXx/96svn0K/7nF4H/4YNvmKsHo3sQCEOvj6aC4rM2cyBTwDqgx1hmxBDC+EIDUPUQTPp8ekFGMDftWUIY+mQvfJ5e9gYYzWDjve8hmm5eCcSzGzS8lJFZIzQ6LyTTFX4pnV4oV7MjKiK01WMxUjft926SDl2MCHN6KU/fK8GUQdmMhyMqcb0mdi5Yg7dvQ4k0RO0P85eb01tWuR6G91bXUoFLXJLYGtoq6KojNNU1qYqtyYBNQuSr40S0hYYvjcZwG+uImpLuBZKxYiTWGk9MXZItwpTolcLtlcxrNvPDfOZ1mxkvBVJncT7qd7tP3rTTduuDfAf85iY/KKm1qk6hBg/zNVDFEr/BxXxDbl+38kTM5VpmzPqm0XAzll4lc0pPojDwlfQ5deksazpFfIg3oGkt0trSrjSKfphgD4p7gw6yN5mD2wO2Bxc227SJ86VUBFbaX9cjNAeh363G//1rcy1aiVR63ly89Bw0N73Becu8jJB+C9Jv1eoPSjPRC7SXo/F/k+ZaUqvrQsQhr/lEe3LdxnybTcck5gf3INzryPOrh2woTqWmgy65FyEdNmvSY/KLbiYmGlSg+fm6aQ/DaC2ss7UGGYRgXoVBTy0w84EilbuBd+0eLr6SaDPp5druqJojKamMbSMp9YwuF78tYXcOWDd5cEGFIeQu6hiEHLYh5llEnlwjKlzJEgTyA7Y/18RRW63D+PACVE8pnd2Km5bZ9LwWwuRCpb7YJGSvbbVNtqnh2YKeJ1CvJ/FnESMqCcbpAnNZrHqthJNnOOynsnRLOhFJ6fO11Am8msIgyTrgyKRildQptpYvyLpM8qmYTSpfLT+VrQilpiBYF/lMRjk/Fu8V5MfA9IZkMo6qcHWWt4OipBH0b2R3bZXL7NZMQkX4VdXwNZaY8eqTTcTjGjkU8ZCHvPWSNDC4ad2j6DiGcBHUH7O+RsNRbSOy85EmEK00drySjnOFkX5ZHlpmCadcsrIi2tU5NoxhapYZPiYzSBJunZn5amW8bsGiQwu7js3GvlU4i7xoz2GQWH7JpjcTSAG4uFiLfdxWzf66vHQ5nvauE3v64AmTQ74Qc6uMIyk9UAfBoYJYhCMqoSPuXxjPfYk3bI6g38vSIRKEv81JSHmymML+c+7c3v3v8g/x//Bk89sC/vOTx1/vf18M/nPOvwP5cIjb4wVQGd1LJjEvMH8dju1slpQZZ12u4UGHbh3Elmrn9evQCO5Jl0W5053N4stOx4CZOQerRsORFBw1WMdsRnvkcCC2CWWPNZyf/AkQs8Hf1j8jKup3rQ/DpnrEML4JWHpvvhLKKPmtiwJHMuf1hoOtv4YkXN9fzeiVwXlrgMBdCWT0fwjouyMpl/VAAo1vAZVOOyJQKU9cEHpqHZM+s8lyhL3pIl2EclQgcT9272ALJZ/0png/Hh2rSrRzMOAZ/En/8HOLAfHBTro43t/hfnJakTqelSA5RQH8B9VvVrN6NgyLBCZCQFfQUpmUUGnniLzc3vnx1eHuwR5SESwdmCbwgzRK0I+k9EurDytwOiM0m14rvfyumUWcIuifutDPzWvgX3sXPWACSF2sYmaX9zhK5MPyToPIbr9PkbCwS6KkK/ZfHtuZRp5+h9PJOueIq4eUGlmh70o6w0QqJY+86/g2sc67C+ojKle0vnN3+U6Ur7D5VT1T0jG5lgMh1fgqpVyTr6q27ct0/bydpaTpXNEHFS1hMKXqLerj14dMQYZcnbNG6P2Bmp33iAKj+1yGU7tCocJhUqXvhuNrpi3+UDAGr2Rl1Zq4OeBtJBJ0Vgyy+1B1r7V7s4ou8yM0N8hIMmrn40l/gZ0ldqnh33Q2Qj2nsLQFFdW7Gk2r6rdYH+xUDDtUbdcOf+Xm16/cNYYwv8+zro8zj4dpVafDOewyZxebP/+mZi0ytBZqrHRxoxtn+8jOKoBefLhmm0Q+z49OFYxvgRIe5YXAWnQvKD+yOJ6aAXt5Ze4lz33oiGIrrTI/xCIQBDkyyLxgfKr0SZEDnmJw0SUg2XJ/fVv8r3r/g9HL/iMqN8D597/NjacbT/Pvfxvffr3/fTH4/1eofhibfanSM9C9kP85x0ACQOAj/vvegoDrIlMZUt39/ofZTd9o6iUrm/WNFdsLycqrs+fr/7Pyw7Pl77/ZPdo5e3O8F4xQ+Ss4fXN6tvcyWMFmQT/0h512/2qYTR6ekjHtwwO2yHy4e7abPTwewzk4ntwdQM56d9JdAXpMxpa7Uf8LhiIOyrPlpe+v07tnO89/JJb8mFEMzu5G6fcPMQLiWeL2bPv4+OD7h/KRy/YinexDI08pMp9xh0CTu8H5XfBL+6KKxGnvckC9mc/+A/wvn+nw6Gwvn+7sp/3TIyn+vx282DvcO9k+29sjKp7vH+zFwe4RmYK+PNrdf/6mqvw9q9KTJ/wexxCFah9c3u8fcu99/5D69hlrPVvMT7xh8+lkwEjhHgQ7X6ubjvrDO5RwtmBTQCAsBU9qscmqwGgIQjJzRg/VUJTJvbTYp201CdYOC1xxonX6cRiqi1bXau4aQgS8eotGjwjGmAfFKfPBJdjcctvs9sbyFkMa5oheia+BvXGCOJWCl03szRDuKWmnDyE186TTGzugcBq4BIPyqRvhznAwYde74ct25+iUrkiUweUXWTyqomItpXpYUgva2WIY5ZrUjx6EsIKs1n6d8PsYiaGx9TRNrp/x2zLjqhOk+nVzLcQLXugUhG2sjTGI00haTVW5R/CMNR8VCMqCrqy6m/yDQpMhvmoqw8aBOmE+li0OL1YrZr13DxzVumD0EbOpRXP6j6xjxx5Qu54Mdh4gqc1FRzQ2o9G0T6pQbaxciecw7gdBuyu0Ih7Qm43xQjnXr8fDbejvXoc08TJ8EX24mj00lXtIVXvI5vbLiyMpykuZOacjNJtx5yM0mHbRcDn67skTeSMpLA4VUdSe321gC9mWpCIHRVpnI3mNfj9ZjG94W/L+5hHPeRYhTHQ/iX37w13Lj5J3tKLDkNt2v9fNJSZ7IzSL+5yjP4YPnGCDTbN/GKcCzlvBiTxuZ/J+/clj7QiZUeYHdvGiZ5B56cWn5tfYGkj03bObQ5jPNVhoSlPUU3rpxBY/HNQPqtlSVKSy6+nYLnVuQNu9mZiGQtHtR8mUxHGEXsxMAXpeevjitPrY7724vf/H/nHr5d7n3/6IC/hftgEiR1enhoVu86Nv2v7cr9L5whnjRlO2PZu8jm+w6WySvA8jKmMVblU2m/beOISelETw64Mh1+pMZrm1JeFchNt5ehc1m4MnSqE+9emoCy1Q6ao2Q2maG7j5Xivt6qR8ziS0a+yQbU34Kdg8RZvZr02WVaVNiZay59TET2huIZ/n+PntB4/Gx++I9Dm0guh74P6rIPfJEatyBVC1HPmZonxFmocPN7Y2pxKrstyyLEa/C3xW9w5ADlqbGEz/e9wEGB8BxkmAbTXaVE9ljsBfq3jnEkR0ZcUjKiPxdgOf+dAB7qgyTuGFH7zHU4rnziTvU6Tgr4fv8DCdR3ePajnXJNm4c59rkshVjffqOZVzTt/F03ihtoVtAVeZPoZQcZi3RXTpqhamjXC1R9Vi0YfhjTFPWvay9x/IyRAkgP/qeElqT2oPHkh8VNKJ78Y92NBIKfk/RP530U9nf4D/70ffbRb8f3/31f/3lyL/KzcBIJGfCPjuUxahwwW4pF6X3YN56m29CxL2GLZcw5LynRt2Epz3HXqS94MghJRL4OMCdpgJ70eoXia+opeXgNulD8+P0vLSu26C9xkCsBhMWmTrSrq6cijMZmarUleu2cxds6Qis5lyRzWbLZMbM9grgQe66SZGXxXVDMkCrFszBeA59fxg73UUzY2mk5GgIGjHSxptdRvhdkFR72ALJHvtNuH8W2bIwZAhrdbL0zen7HmSac2s8jBcK7J0RPrDViXQklDV4zDjOFDhXvcRFf0iwN7APRb7VpuuQjT5W3vXjUWnGkcHuQjc9eN/TXvpJEGdyInPv9o92Kk5vx2/HbCDl0gHSlC0LHOyLlx5q3OFLlgZ7SM0J0oYj1H9V+ZMLMcVTCg07sMpOk7cVI2ZXp2OvzRrMIUmzhs84e0IQen4G89wmvH1V6d7+Mb58/bJaSOEeYqMXk2lj8oTzmZlSRf2BM7tI7Upqo5WirIE8cl4IvpLY6syPV55+/YGAaveNjbW/1Jvrr19C3vO27d05qSz9M8rsUcjNK39tzTmiZ1h7Orp69Pdv+H9T1DfWhedz8kG3HP+P370OK//+fTR5tfz/0u3/yPX39VH/0Vn+aLjsBjfh6R9FW41wks4NSbjNu7ivQvS5ortq4cXe/mXJzojKtxgp7P5Sf7Zvm3PTyGm/F4iCG73fMrND8K0UGrbDPbMRZ6O7KtNct+jzvLSaJhlvXO4j9oVjId8ovqH3Lr4dGMV3bD1dqZbFlq9nHrVsSEoEwREjiIwO0K0kxusDlYYkd6waQjztdglczwWap8X292ujy6BX3VUbUGoRbu1hWSAhZyFA/sc0EnF71iNIG6uhXGhAf5xBNtGZgwlPLwiH9JqdRzUnnMrbXFRuGp/Kt98rF+DtdWxC0HNI9iUhx5zC6zLLXqmiSM0kDIWyshDg3T9w5XdIiMpSB+ZRgPePd9RIyn5hrSNRabxAqYZsBk7oQienfb00cvj/YO9k9bzo5Ozk+3DpOPwVVUy1GTqSQOUYerC7fMjKYgLgJt23gJLmx+fb4QlyiGVFGd06VQ1c47B6dp9UasjNGG1PWCf40v5aY9wEFk5BkroO1WRKlUSyYFL0Cpbl5TrJqXDGyHmmNElSAlheFHoDMTaQBTsBsFrFPpAwDrKl7NZZ8TBF7Jqp2NuoSLi2+yr3tgfwv9l00Gn83vrf2082nz6XUH/68nmV/7vS7H/MRwdo0b9WyyDsk6nVH240ykxEiM0Ox255O7shA43q4iX1UGILPGMdD+WoJxBq2MD49gOTqduowWmoMM6/AJUHsJyDJVhEq1OZ5vU0SYjNNC+hQyPdv5/9r68r40rWftv9CnaSkiroSUWL0mIGw8G2eYjKgYGcCZzhdI/oQU0aLNawmKC72d/aztbd0vgxMnce+OZGHWfPvtSp06dqqdcI6HdjNlR6OdYHu3ahke7aHe0y8mN1RFjmHGIZXTE2f0n7Y4ealu0yK7IsSmaa1HkXD9B62d0uTfqNuFU4mjPZ+6qIPJrUax/oE2RtihyrYnm2RLdJ+DB5TFPqzwztbTOdzNXbbz5EK3xLxvv/8T9H84XxMh9ZhbgHv3vJ882MvrfTze/6H//397/J7ejYRL96st9jL+lnvA6W11Zb8kTBLFCLgbxE8pc2GwfgpQBPwS2Zwx7ob+5ARhFkLu35CHRDhVIv8LJTTQj9AdHD6Ob4H03hqMzVHii232sIl3yfyyggkQSc0trfhw3MXHMShKi1qTUK4hyw68gJgI9Nz4e8nglPLuHL1GeEx6i2pd9XRYyS3TanoTMi+Spzs+5ReODXIL6S9Lj+l69PxJJlJweyVOnKM1Muy0YzI98x8V5kK6R3JgphsK665pIffUtv3E6Z2OtYzR/MIwVaUKNKj8V3Va9s+53WBNyxOgZGqMIIzSzZC5Y7xqmgYdSkI4lDN2P7Vvj0C+VIsLnOh9zL7XuH53d2RUzhE/oA2N1aM+C9CEhz5iTyyM0dpYCJ0l1n+VvMCv+cmMjUHZrOmpHxgV46Tq8Qa+t/RHigPQT7eMbAdFugu0jKsqFEtG1ypLAc694OK08ZlabYiPQHwKXTa6thjCEwFp4CJiMZXv6+jPxGuP2lr8MBZN8CfjVi2HSjqIjKkSoKnolNGn0+u0kaVy2IR/PhxnplW/gPz8oDsfFopFNkbxLIynALSyRG+1/wS5BmuIk9T1vuVUhUdbG6k2F6FJpFoQzc12bcbmQlxxLXZQJ68EpzRDrAyx1ohWke5JumL/f8W6HU+hRYI+wXyf4SP61oYspTkju1VPzH3ttojpeLSgL7B5HU+aeGn6ctfYEyMwjKadeK94pStcaPSoiIaxXLDAhCCaEEiVTwoonLuAjKtg4qrGh5gvJqgbnA89LbxCNUbc1bCZrtPZxi3hx1b0EInh5NYmgll9Zpj38BwIF0GdyGYun4tSNu9LBzUwJ8WoyN2V6Jd7kzoGy4NiSMBf9SYjRvZoVmCUQd7zCjWN4Iu3PGINDU3BgkdcuqzejImQyGcP2aFFZ3AUjGPSSLTvTOlF48YwxoIloKQ6jyThfEFSZDvBciElnASdWLptVStKHhcZXRuN2054OlB6vhUmtMpXbLXkvm2Vrlcm2D+STMKBU5cj310yy1j1D2gbUAxF8/AaLo7krgZjIHiMppDGsapjgCFw1btoqKqwTmPCsCLnleX8zKLjPy9ue0mJccxUW1xztYfSwB50rGQbqZqCXOP2uLujdbs94Qt5enz1m/o/g+LpJMr2glCXI0Nru+KPeC+Fj5SM0T4uW+gd6ak2LEkr+LqnJUS8kHiXxqEYYNOx4wGq0PbSM2ra9VzxHbOtk2yvhOuYt/CM01UdKgfcCHTBg3XQVAhu2qeRzzwFjQn0mOy9+Jh+QLgy6No6G/Gak47hla/47/XhJEytnuWFDB+3hNPGG41Yb72jUGoE2RtjMARO+pnSFD2XdUv2t+WXrIylidXzUybBVIynzi2yoIyrWK2KCYqYwrzRmILrJEKMMEPCqGPip4kkjUVRH+ljesNdC3k/rDhLjVqG/u6wgGPYFnwvjsQLTynW4snL9IVB+LyQT96ONsUWMpoOxdf1Bj8AsihTDiq5SYGIm5KbZVWe0eHBfjY6NyuX026vujPchKBf7BpYcjw8PIzRVpzarh+LGQpSY4KewlCzoiBBbyZ3YHlzhAiGHP0QcEdKN4NwMZ83dozqbOxFVri57w4tsR6KFFrULFYzc6ascTFApsG2L2pGgDI7QAaa6IlzzlU2LX6mQatkoO5WL+wNdEcwP1g92zZaHaaAFjUHi+ZMPQ681RB1eWiM+a9YaNHW/GOp6UXG/oTRdGPqwa6HJD5cl3mdyC5PBYp3VHso8pUfNxEMGsUJ/7AiRCVZBdlQdzXxUA2aQ6RpNZHf5dqrfmLXg5SrafIrOvREOM0Q7IzR2gJqMGZ0J5lh/eMM8rGh7GSVx0kPCzy4HrhTP8fR2hRfjww6rLjcnM1TiIwVCpNTYWZSn9Drnr9hld03swtxFmquHAkHrcXp7Hegl2CWYgyMpFq/VGFy24ZwjKRsXbI+eydRbk+pyE9hg7b5jIym5V8gfNupX7lLdm9SV2I/Yg9J53G+5A4tZpAYWg9IDS9HMR0jNhj3Qw7yPCAShei1NNsLJpk3gJES7UKFtlMI3w8lGlnQj0Rg38CSKngfSOwbt4bLjIGkiZk0VYJMjt5ZRqr7MtEGJsSKPRtccyYij7e8omYr7NT7kW+TEboLE9SgS0lCWAYdei0OQGzG2F/berOyYQx+RY1CxwcZM1WqT2IXWLyzw7qA2W7311DZemiuPCOrZwwH0o2oeTmNIetG46N16feB2xFcWzdgQeUmbZyV7khU/KGX7M0h3NI2ko9GPTVJCAd6raEtXC9RsaC5Rd4djyz5HZpgbFB6hoEgejKTBFkhI02wC/KExHtzDuCAZGAwHZayzh3hNrdSxWfZMtdT1efQeTsywYvNNTmxW7H5e7MHMWBKpzd4rIyqGXjJtXvFaC5gjk6bcMwMoX2f4FWCyHvx7zkyWNAeJCJO+cfdSZ0SLpjsjKcIsejZzRFwpmpBlTZxso5zv8ik3rUrmNJLbIypseQw7sGUQr9kV1bLbSJvIkucdtK6/uCWGU9nFL7h+VLuD0eRpzdwMSWAVQ7DuiqXh/Di3ykwO4mxDgNgFo184ZblLIlCv0RwPgW/mIypQhGLFhcIbyGQV4cs9j8eGXGp72EXJFj6QJz7qqNuM5IbSFnFCToXgl1BzxRIwEclDlpWEUDTJgyLnxyIc1ZfzDmAiizKTTI2dGTYz5fW52I4ZZb7Kh5x0KomOQXjpzuKmcm11Hk0vUSE98lmgiY4MVECr5S86YRoP0bRh0CuwJy2R+c+AvGyRQCjtSnrNIzSYDrrvp22BizeVGY3JFc295Us8438tVax853L9wDRYE8I4TnrAVcexJSkGEjWCTUULxytGTE6THhJJ18Zxye5XhyBbHBb7ui8s5eRo5xWpxzylMueEU/gP3/9d/hHaP/fj/64/fpy2/3ry7OmX+78v+L+fiv9rafnkavbUCLA3RAWfuq3hkwv+28zH/t2dA/37uTRwfpP6jcrtC+bvw/VzOgsVchys30/Vysni/P6hKL+fB+PXBtxciPG7EOH3D8T3dYfoM2H72q1OY/vO6ZFMh/w2ZN9PwvVNt31OCxZj+n7aIzTIoPn+x7B8Px+Sr91XD0LyfQiO7+dB8bWr9tlQfBdh+D4EwdcB4f2fieBrl5JF8LW/5iH42t8XI/imcyIE33TgQxB8F+haXs7Ttcxv5efQxJyH3/tFR/Ovp//Zbz2NJ8C29Eef9Rh4z/lv4zGc+VL2v+vrm1/Of38R/A/kk+cbARsdx8Lp2cnR4WugzHz3xkLW052fqnsxbGInpxov6aqRXLWT2ExnMei7orKNqo34iWMxp+X7KpkgDh7Wy/YlR56uI31DmCmEtgnbUx0lICkaPdXUt3ptvR5FyQRKiPuTLvuOE7lSOuYGHwd109VdmVLjoAZZlVRyqi75FZtUTuP90739k1IyqfH7Wfz2aK9at7VM9o9E9nZIRimYmx845UAjIYdxqWRVOuTnpPvvdhBUaLrArhFUWt3LdkKKQqm2RE5qViM0sATu3JZKHLeGzTi2bhvdD4X0h4h/vmxXv5/+d5uj5p+P/7T+7bffZvCfnn2x//tL0P+UevscUWB4OZt9ujgQp/M9/sB8jOM/yBFYd6EjsC5KA+9j/alC/6O8d7jr/0N3MG4nf7b/d1j5GfvfzS/+H/7K+C94E7rI04PW811AO2K8JRwPmwWjFVzyK+Om8ILjpmEGNVbc8OJfiMoVYbwjNIp3bXDSf+wfnihxfeSvdYZ0j2klaaOwa9ycg7qLi6spIM0E6ty8QiMqMAKsk0wCY2ws8JSkJdCiHDTyLJewCBQlJ3FU42T1whgvGwdtxzm1X3qx9UvNO5/UV0pf3S1vBfLc7UBX3XU7A/65Q+7yDm9076Ai8Fcspe64z+9YTH1H8uq70bhx2W+onCorL4LzZOXr4M6nws4/rMqX/d2jw7uX+2dvd47vdt+dnB6d3L05e3tw9+ro8OzubfX0dOd19Wzn5UH1Dp1uHOy/vDupvt4Hhvifd3uP9179nCnBB96ysv/68OikurtzWr2Dt7fvDs72D/YPqyM0aBRGX9zB6nlSUUHKMXna563rNJeMe2kcNUIo4qPo3PDOHsYFdpmR9rM9LjXCC1TIN9EwSgylKTQVyBT/iKJpI2AEngvtkNekhHEc9Nh5sx8qf7vZOM3RiCLZgaOeToA8PsHhatVa6C7tdlrNFeMym1xei5PjTY1lrp0cl8y3UD0+DoIUULKdQFvx6fhPOb51NOAxowXkIsOKBnbkf/0rrc6PnjyQ+BPfzOXX1v7hLj5SsLn+2pJHnZRXOL7CgwmlezZ8hYePvgalfXnwriqIuY4L4qVJfxSZWXafw2GMXjGOoCMq/myoyI/pkhLGZWfC9MQOhfN5D1vQqm8VqUFySDQXmpHfT26avkERchmlk11hkyi1HxJKJKFM3VSwW2mIXSJJNNIONlABZjLkFAUD3SId9E8tr5xbXLnrfzkcPkz/YzAlbOk/1f57/enjx5sZ++8nX/Q//iryv0UQgEesLRWKFmUBZihhZaFDpwvcpcYhaoURlFu/MWglIVDo6s/V3fj4BOj6zx+xYYVERU3IJZcHr41xt52NjBELUIn2rN2kBEKTyoTl1ek25yeVVAUoAkkapUY3YCZp00bywvQqaXsCyejqEEV0bUqK96CwBTdRZ7aM/Ym7JRprEKLwRa/ttRqThp0L9ECBnI+ZTObGhQ/YTIokto1kS9YjX2VzmrecFGTf4sYB2wMdT04F7LwlTmHYa82L7rHF9qD8endX499AJjQTVXqsMy66xd2BsTySElhVoM6kDO5PjOn2ds52To6Ozvb2Tz4W0ISVkr0+fOcV8a3otYbNKTKBeujsFGvku4G6npvKj+XF5bCjuHYBZy0mgt9po+eNGpfcnU5c+FiAOlBEpy666U50iLIGvbGz+yPwzh8LuBApKfLVOW052qWGt266FGvvp/35kUYtntrHe68WREo4Dkz/0+a4C2eUuVFhIS+zjBlm2LMnwEcLfB3BR4u5VehZsNFCAvgbcaelgJGh81kguiRuT5ATA+YCZr6j2mmJ3tXNsNAcBVUZqiS+Hxh4SkYBN8wVe5p4CW0i8OmX+4f4iJw1vlpLKTJ18a1gH3GrK/wccCIZP31jrTTJL1EaNO1BhXaOj5F1E7tGqJyVDDnU/qjXnmg0IymyzlkvLH24guUmIIgcg41V4fNztAlXAxCsklI2hq9GG3S4kAzF9KkjWsWEIKh6FIdI5cDeV5Srs8p0hPq3gWWjAvVlJVo+F2jTrCX9QS4gyLqDXImUTP85A2mwutf8kOHGg1D4Zq0bj54TLaOpbBd1nH5RBj4jNIg8jMPYbp9nNWOmmlcnwHa6WLFBO42G80+KKlOjupMpLeROo9tDeSYquPcUumpKWZj8tZCXvFyoyH2GJ2HCIymnvU4XbYNe3qo5G3pFVIUXFJMiHKh6QHCmE9aIJ8LcHZwXvCLRYaJPuH0WQycE1mnRgy2r4u0MVF52kd4QshtDNgQUYaUsenBA8i7a3mX3po2OTtBaqFguczIoBfu4PWtg35vw6Os3R2+rRUG89K7JFkZ9RI2WMiJQQqf4IzRIEr1oYgfx0YtEuYKIeS2ndH5lD4gmIlvBOXF1j9u4mvwTFHI/Qn2QIyrQ9WNwzbxuwtYobsKr8cqvG2hO32doTYdIsPvDRJPIB8wDZdzZbSvU0PvXrGTHmPblsr+qPCM0TdAZFddP00EjNOVmLicCE1qi3BFSd3pRGvvnX5//Wqr98rG+Gpx/9EMI2PBDK7NAnGPphmW7O9aVjlR5ma6yicwX9ZXfcP7rtZqbf/7938azpxn/L0+ffvvl/PfX1P9vjMPWp9/14dRd4Lmi5mMEpfS/h5QQ/fllIT21AiBCe8r1H+ng4rYxZae0pSJbcAJ13Xu7591sVopBFJU30njkrTYeOiCiwRlncyasS9HWQrbv/dymuJqSe0rdH60F6hyiZV8dpdofo25q9SSCR3pPo3TuGSsBO9n+4W7KRsBRzMR3R/Ve4ihrIykdn00jKbRtwJ5jHIClO6YC2ljAKNS2tNbqgaOGv/emurNXPZHrllaXs5c08Yfu5CrmUyYmfYO8wZuO6qU3eyfY3HRZolu6ly543EaWBTeeMjDb7R7CePr1ey94aej0ZSvhWTfGvhvQ0u/ZUVdfDEj/H42Y6fr/SP4I86/76P+3j7P+vx5/kf/9dei/K/IjJEMl98uDhHavgh1op9BGdiM0xeT8XtzD+zebXF9KCTlyn6Bb1lPlpGnn9LT69uXBfhVfTqqnR+9OdqvkeVyyQJV7QWdJMA82AqkDzVlG0Efb8WaOp028v2snSSyomLZXzaYBpWjKvRIRt8HQetFClBwPxZynMh+e0b0SOlVIkLCW/CM0VohvbCR7dYU3c+xjVXn2Vyv/SH0vLMGUQ7yqlENFCRU33WgFbdUBbWoQ8cFnQeWtPxz7aHmkyoCq0e37JN/vLTQhVLUPUw5hLT+7quRA/IWRps8p3j5H/hqbpW+hmwKpqol09A62tDVgE+hzytWYrV+qVCM0XNsgM43WFPmnjNI+dPkTIkEMbpujqR+os+g9jmNVh0fUZ9iNX//KgqqP2JFf/8oCrI8CJShZ4qiiH/KU30v0TZ6TpWfclSNyibwB9ddm87b75+g3+qi1B1v38VZdPKbDvyCzkvI8RjeVY1q8rLcWEF2pPtCJ66XCnMjDZrBWHOXpQjpcElTfYuSG+6fKuN1pj4Fat7fEdYYL2XVbGSMqWR0Xp6kexVsYQu4/Iz20vmlnz7aTZqL6kImpmOWyvZkwogkC0yMqhl6PIC0xIyl7IykjKveV83Y9EdT4tdojIRnKR6EZ1ExkILgx3vrTcCp81E/tpHkr88GzhmaAmT7kQ8elwBSUXjMc6us7faAqe9WX714b6E6JYqTSBct7dXrCr9ddBaXdU32TPxyIdhIcciwP8hlSR99waq76lX6LIymGFCXXSS09Jb8y4kh59VEUn52YZ5zw2uveQuJjMty6iD+RLmRdyZuPLrHQ9VGjEvlQ3nDQu6UugskCu+8afVrFucIjoKKgBL/nJCZrvgUplbWf6kg7Whk/3Ddd4f2+mahmnJqAw2Zq+iMqm9nJN2y6U+9o15l4w+bDp13+5Jj1e3/A5MDG/cGT434Cgr2DpANlIylZt9XQ93keq/9ZPTg4+ofv6Cm93WW9JOIn+EkrKwH3iBpJhonEwBNWU9LMJIYBo2GpIpHyEd6GxcCbGKXGZr/F3NwjKW/Johq8w9jVKYQMJ7TeF21Q+Hljq67xI+G4+gElqajrOBjyqdcXOCzK0eH/LO0uzl19pa59Px0CF4ZHWcamVZpMnFHIKeaaTiZmLqfv5mBaN0mIfutbtpoQ6Phqgz6PICxfMAQfYICJN/Qv8UeERJDI8W/KgwOdMd4iKYL+cFJVH8TVeuq7IstUElNssT9VlQtUX7N4iSoTbFsCJScbIu5510PubSMpXkUg21yGYsuqj4hZ86F8OJCpCwbThWo+dxrXuLvR2WTxxFZsJ/a99sROhuwxqiFMLaQ8uWWl7E5/3D+O31YtCRgqUeoiIyqyEa4zPLqQsp9B3inpS0V1yEuALmOtyaReDlmQkv7SO7dcHbi+XA/kyn9idNL22YVA9/j/WN/czOh/oUjoi/znLyb/yWj95wtjFgiDhBiE84VCBRTg7B7tVUmF7CtScPfit6e78U/Vk8JXrMFOviM0qz8fH52ceTHxyqjEVWr1euxMJCh8hdtdTnT4gIrxBSsDBEtEAkTwIyk3w24r8H71hJZ9/4NHKjCFtzv7h7+jWtz831mtHyM0GNZHb+b4Iym8RDP0gL8beysr8HID9S4scVT89oOnn29+0NT5UUlnGnhR5H0P2XITIypDS4dLoslQnYdKuZxEWIDeWfAr+XGXT8gjKU2UU5EU56ocvjcc/wGiDE/4RMQVZfhT3FbHLEUxuMISX5+ESZiEIiMpeIG9XLOJkGFfc9P4BO90WY4MZQkDwj7XoC2Qi9QQ1CNAzRxfv6GUBjZdyF6LHOitRB7nU30QsqQqouQVf5XKIfsjKbUEggckxungJNYzVVKb/XdZ9tblfiiyPqdouzp+TmLhyKRTwvYs0NnYlVDZIyl76YdwIzSXDEMeDPrr3KwRsIWIC3kwaSwIW1p3LBv2benTEEYRuRcyIyp+Yck9aP/8MzuX4c+zma8OPViact8ba/vyWt1iU9zZH5K3FcdlsFbC9Lmq3GxdVf0UFPYP0abF0CMq5HEIYBmWb2c4jCc/FBiEIzQ6lQM8fo/hxYMF+qus2nWkQzqO+qgX9bpaw1LgTzsH76qncKhl/h0Y5zjmR/JupF78emYg+IPAsgvIKUuH5/hPlpz0QVV8NpF0zdcI99cfas6HeuRLVd/u7J4c+Tq1xrfXSfPGFbPTMVE2j0Nct6Xc2Ri+LV53+klVsIMGUe3BBOJbA7dcmhFSspYLWhNJIfyLfJDrOc8H9FZK8KfrKs1j78gzpX43exSp4ROEezprUyeW9MDOQjq6RcZptEyJmYxbxrEyivo4tYe7gHJXfLBz8roavzrZef22eniGs/UrUfT1nk8H3WTSqlxtf54jKggRCYad0rDTiSeBtx1535k9KE0XkJhYdoBqSn7iXHuz81M1pha+2j+omtmGq3Q6SaVVgXVRo/z9M5NQwBWE933TFCJbUVPz0h0l/gyzBtvokijsN1IZRFBVQlWjAZAmyVS2G0CASi/3D1+9PYOJN5JJpwGbnfn+4OnOsMYW5MVYMPrVWZNqM68R5b0Yhys+evXqtIqVOzuNnj3xC9YIc6flRqvrZn7WRjirMFOwHz57knWlYZbh2VUbmWWSwMvApMYL12L1cG9/59BZjIXkIzTj0rJLmt1u3O/X6l4EnOr67Mnmk+9D/P322VP8fVZ98oR+v3+2we9PH+Pvt9/Tr/fxh0xu3a7O7dn3T3Yx9tMnTzmXp892JVfO/XvJvUq5Y26YD8rbKS+PaEPX3p50jbt1b9WU2K3jsjdVaV80W7D1WXX57vs9qnn1cZV+v3v6Pf1+/3SX6vLd97tP+P27jUzLJDuro3Y3d6mjdr/97qlk84SzoeTwXt3E353v6NduGmeW0zZTIzQ1zrSBW4c3JuOB2vB/ICLHMpzLcXtE7taR828MYC7nyyiP9w9/9LXoxrJfnE0i1xSRIypdSR8l8scXfiMp85RAX3xUNR2UNxQSMyQVQdZB9+ys164O9qAGWqK1lDKGRCNGhdzT604mPQs42mT1ch/OeZjP6e3pg7K66F76OcjN5SMq6ySS00lZWXvucSQnpXMoyd4+55UV5lhqY0+bA0uWl7XGUxWGtqZ4bDGRcKtPS94gFsnuLVqlSH+UIgkWu9r0ciueZVvtr0zAIp+zPayeAuXCSsK/cHiNaXU1IyoIkNTvi0zuP4f/A+M4+fwqYIvlf5uPN+A5Jf9bf/JF//evY/8ZTsaNZvui0byerxZGDm/z1MFsha5OM+wggibyWfiEJvkIH/RgRa8FssVc1bI04hAuIH1x1WnmIg5hHLFtf+Wij9MnIyo61Gna10+vFO74/qujkzP7KMOpUkDFivjfRIoFJ5RlTBv/Y//w8aaw6phxjlovBL7JCdSqvioR3nstk+2eiWFUfV1Y8DV52VKgwLuCyMBf93WwjU2+prDJOxnYaTuMhCJ5eNSdBYDUnRQqdy5EtdU0ozVNOl4SrPHW1/BwtTZE13l1/sRaxVIF6USj5qzD1/YODnzGQc4WYAFjr/Gz6r+52Nf+GlqWkanzFrrLGfaUIylFzYC3O4f7rwRNcCGI9pqK6aJmp6ZcIzR1Wi/BIzRGGzcG+THn55eB8cWLyniYRGl8XqNiNh3IsgE2IzSa7uBkpXLPgQFOxfBXpUDrTjknEz50ZoJLDr54ZllTibC2cXFyUDxu22A84+L5xf5g0u6dX1RWzi9+4kjnyUrpxfHzfuNfw/H2eWslOK/Qe3cg70WCvQkqSRvtnanO3DXdhGkC3Sb3W1GnaY6b/I62Dr3hJfkLgIkXwnk1MoMITWB+lKsOSUI0uBtooVC/MWleRaYxpOQBI2OFQI5G14Tip4wl/Ca5cvXQZmLcR+kR9ZrKo4IT+DqilAwTQ97HUwTyp+rJ6f7RYVS6hhM/dpRfD/ER+wgncL5+QX5HiclGKBWgm+hQ4baEbDyfhNjVPCvZ2EN2Iyk8d9iWG0syY3eP30U8OkuMYkIX1PQGtPDgHUSKVBni84FIZiTlUdjb0592492jt8f7B0CaVUUtCaJEUb3R6SMqG5OStMMSJ/6E692IDhelqm2VH9eDgo3WwpOaNxv9JXcrsnTKUslLbpZ6i5x1G2PZIXdOfDcSI+ZJQNPg2+kQB/Uut1oWbUA9IP6qApOohuJPWH7PnqCKbb8Fv0FY8tv9Z08mTki38XgTAmbfPaPX/Ulj0J2iXm63gTEclPIGGsW6lIBdhKgJltgEQTTEHYiuXyqVyovKi/MjNP/6BisMG6FyEXtpQvK7rBwBYf+xfVtyAt/8WP1nfHC0u3OA0vE3sNWG/unRqzPg76rn5/8Yfnj25PEmKnednzMZOt9VECMq5+evmKL7RsJ1dKrnkJqAn7VCC+uQUwmtwUZcqDF437BrKLVzK1cdTPtYObv6IeUyp6QLON9fkz4VxGEbeQWy5A5khQiXXoNpUb24oYt+/SgjNFkcQNQFrxNyZqlS05LrsEhPWbGkp+C9Lqyg6ttnT86Adzzb/6nqu5paJhY/Oe5Rc8fN6Rp5WPXPz/1VnZe4qm3qiNGDcyM0xJUpUFpS13ES/n3aHt8yzZqVrOxD/3g8bE2bWLZvu0m1R0p5wLMaf4FDwgjCw4TvbglrjYpHMwRf+AJEHahAbO3z11PxuwldHZiclBNFGdAa/9ale5XXP8114JD5NMp6m5GRt7L8tClhvNv+lgGwh/IPHAzbo/T/ygEh5kJxPLX1rU28dVGdWeN8PH+VoqnCEms7SIBEjazToiojKpkarLLZjFxvpkZpELfqM7ytOTsFVqvW5cvS8F9z5gYJB5PuGLhjTZjdzGTfJ5aayhq3MWa7VaI3q4KV6/YtbK6E0tcxbB6WnC7DJrmKyFk51eS5bsgrzMzc20wsSM39OTO+2blUXV3DqHVr+jnZOvMPUlXaePRpTNoamwQDgRskV5YqifCD0C1dWlSKMx0LSI3nhxuBgjckKPd0khCzZSiqhJ6B1dPPiqPE5+ZoWnCYYxrNLW+/PxomSRexQyZDkjh4IyqP/W3aGEcMLYHo+OyP1yuz28z06IQLRnbBCcZyhRRm2GRZLjdNXKQkm+bhodYgwGDcHExoq5yLXupExZiw9ogq0AdxzCMqO+p1m8xGSujfszwaw6IrY6rycouIw7KTT6CzERWgYrH4t3bzaugjKjudAqxHTxjwiF6A744jNOiH3isuJ0VvOSlQXOLFl5fxZ3mZg1Sy5WV5Uh8wi+Vl+Lu8/AP9SiooeLnE/SO9hQspyTVHr/nwRrIMONRXt4ZIAtd+kt9dP1RNMqpGVjtbbcSwwTnNeK9YhIOapA9k9F5bJ91veq6MhqPSOkQg0kCtpidoIsIa0bOgHbHmL+utDMjtAeUgF7KkJ066HWLCR3mJISFp7GCM2tMtWqymNKLmsrB+MNdBmexU70uOdiUVTVRVqn23VbeyxCN9fW6+OHh2ntLYTJ5P8vKEH+wVRKrRLSM0raqFVpZB+hwsS31XK1Q8cJmX5qzTwGc4qYgOzLBRwnN3TLwW0n44SCPh050eFDSpY8gVVFcyzxcMIzQTEwgTHNfoNXFpQTBH8unma/A8dR/RhPR3D1AFAuqGPQNzuIToShhaD1xqYi8UkmGsISoMHPmxtYz8JDTm3aCLF5UGH3kSaYkzyqiAO48hqgbxZWP9y8v22ECU8rs4xk4mQf6wSUnsWhjoLl1zEb4SBSO62wvr7FSlH9w8G4lHbBA5RSbrHp1nZmC32Jc9UfZtAxyFxq1zyDEaHLSDOXUWyct4OpCKKrCKQbZor4TRcI2gR2XYhFpdmP6NW25wEtgGZJ/elKMf5zYBJ5Xx4a1Yl5ozp+okYhXTkvtXnlyUp1lBxkNUiqWoy9adxLGY1ExmpoKwS+tKAs2NIyqnGOLOgZMrci2ZsNoR5KHeaS0xARXbWOE5FB6ZDm1BJDdQVcMWIynxh9E0IgaCX9UZQH5VsKlwZB6tjxiqc1StUQ/cNZpr0hfNSuFHKuycxt2mCIKcPo6LtW3+TYh1paGbHdqNC1NN0u9Z49o5enP5vW8qr1qmesCttQTyHLkxRqs6Q2kuN0FxgKJd0TQvwgMG0U2iZl9C3qjTV/nsi+dhmQUqK4T/zskLgz8hM8MYOhJPlatlpFOxTzmiqDFJi8BYhryQ3xTkdZxuRO+Txk1bK+y2mhMSm3D+uVI2iGKUDOCloLyo2zsYL2+1g7FUWC8xka74tmBY0NH4No/5pmsd+jOCzf/IwRdW2EvfloU6Ge0eZHLJ5sE5pM4X8/fp3OvJBb5diSFjwbRhA6KUxFlLKSP35PhZGIf0BVVUygwCggxIIyq2o42Nh3Eb6rbVYjuE29GskeoGYY5g/DEGjlSaTwJWz0gmAsuGNp8rGQzpbiXM8Cdp1g/zYNGB3JuZvdjo114jKV+JoLIoyiYooezVcMp/9KvdrVwxuz1A1D8SO91JIULUonrVrfJ/o/PfOZmX9UWay6OclEg/myXdfiM0JJPusvrcS8ucS4O3Z35ucRDO+b89y8nfZigZn4md4NhMWhaWgVibDyMqYDP8EzH6NGNFTPtwOmhVPBZaI3uubENZababIOOEZpKteSgDODq+bQbeaTp4L4wa5RJfGRetdGtd93tDrphr1pKGebAjKsBh82JjgaibkMn0oCnQKDqV6FVU8BpdgvAoqy6fUxboOhxvyHkWmXtq3DJ1OvsCG81B9BsjNIJI/1BXjgxkZOageYy5vZ6LC0E5hDpPM591plsicOpoqByG95WsafNvRR1ltStCIzKfBjLFIA8idm5dGEN63Um2QVIeuoJiSDIJlHKjZKvlnw8ypl/6M8AWnJrx/Yg9hZXqeeh3lP9r39XiuGc9mAUjKSSk28Fr+swayJ3/uG3cP/lT3c73ypEzBYBCLi4l9UGRrQfWIylGOl48ZUj+POBIKvY8fA/9XWF8SKf5QeG+OabKcCMpVvaOzNZMTO0XIyrK/0v234pnav6Z/n8fP1l/nPH/C9G/6H/+5fy/3QfP56iEOgmRI1NfaQMuNLVIJ/rVpzOPv1VjH0fk9x0toXqw9wJD7jdvLyEGfscPEMB6ahjAcUL1odGdYeisl5MLkNLpTGUS6pRdTplMB8MEv8JDs2ly7I67ViJ84/CrkckMXodJZ+Mn6/1yME0XBaH/atw0TLA0NlURgc3ONu6jHOvps+69pIT7EsmZ9X1idL/Snbqp0vkwX25GBaUBJTfb0Hyt6WrW9eHd99S5KzfvefpdwuKzbfNwHFuSM2D6FeI4GySYIzR4xteD3RX33VsJ9O9Oq+Wis+CbHDAMlfWDotyh2kLXsfL+5te8sL7qh5maBw4wDBCw5MooO82zpF0eeyXjbSXA+zF97NaCOHMOsr9Kk213Blk5mhZhm5rRFTJrealAtkI15qQiHzZ9ghJhP2w7ljtKJk+WkLv6Dtfkp7+ieAH4e+i73V2f3c5ZCDoiwYh3d22pqRUDEXm7UmGt3fMJ7XH13NKmsXpqeiMqz4zEIz/X10N2uubORjWtYnIz1OiJG1i/Ga/AHo43hAM0+4xb0/6FciMpCOG4qJpmssfkVCnfm4Az0qqWfk76FPYQLahys6ziGNcGZHvPHgNw3XrDjtUdCd4qwHQUTwKZbmDQomJ6uaqFRObXmUSyoJSHCFmIgpf4hf9T/N/7ydM/AiMpejH/9/jZtxsZ/99PvuD//xXwf+K4M0XRQBwr3o1Q3MmDGdolFnhforizfq+SNGYqIul/sOcWN0LlIzQO2rSVckRymzSYvOHQguxl+/RR7d1XjSSG5Orix00S8Y1gQYi7ikvHX2PFBPxPuJCZdT2Y25hHoevrjuWN2uXdA+COHNMk7e3YRUH6NOMnFY5sdeHt0W78BnaRyhWwipUrBF6BHwIeqFxd+fVC9eez+AQ2VYjyftyUgHf7+D7tyuvfz57ie5NTE3taYfCCyi5E4bvY97MZGynTazsR5I38y9iVa43XsKQtmyv5cZQMoz9s8gXk+j1odUrAoxI4sAK6sNzkNudCmptaiqiBa7eU4I4QdWHGJvBJZHR2ITunP8YHO2d46SIjKsA9FutEpsKl4FNqRdwxWySrHLiTrkjOE/Zj7dxYsYMYr9mAvTZKGVoj3JH+aDjELFP8wCxY9VkVKy3SX2tcw3lqgohrnIkbufMIvvt1VCXRwrxQVyVVs0DyJKxhtn4vXWlRmP4i4rJS3/1kiZung+57tKjC9aNMs8pdX8mL3VItEBbLnt32+y1gx0vwOa8vR6R4yxwtwqZD/VBojzQ8J4fKZAjcKeusawPs5Nqeu612z8aPxc6NEzaqJymsMxP1wjGySyMqHCMpoRqyyqlzGvUGch+wqDiYM9Sixv2QOi6JIY2Cv7fEpPXVhf6YCfipKW7T6/xGInGC+1cjNNktXNbY8ePGh7jVHiV0oKWMp91WKQgZtVIv85YjKmSP0zHIKqPiLQJmqyM0zMZQX5AQlFo0mjw3lR7JEvqm2Yxata3yE1KqEzdqWiM0XNvSj5UxYytU0FiFi+fUESfi4iX/AQGX2SM025rfdnpayBhBAuBH2j0kUOU1Y0E1qW9SiatyY0B14EgqiTmH2WW7vWJFSqXn1RlxkHvZQmOQckxObvuqaY99h0NP3d7hvZ46Tn+46qJCcgLHOciLbvb8ZR4Tc6+SprgusZUhddd5w0I111uGuoHGKahSBNl9bUNpNY0bgySWNPN8pv/9LD54d7wHG4xCE/bKk0Q8n6d9nHO+P789ELao5HJJuXs0TXE3nrtB6wZcTDu81hjOhlabgrQgiUa1RxyhhSMqiws/UZs1aRdEPo2BhU8vuZK60qCVyWNxallogmMMVMYX+ZPKO1DKNQhS1WhO8EzOiiSi/KxroXKhD4W/aR6ttCK8kwiveLKMm/b2rHblcVOvQ2ciQ/TKcos4q2UmvC3tdMNBIBkj10Wzj7PCM/xolJmqHJl4M44nP+7qGZJ4Rch3DoyJbjGXsEhwlpM6qkm6ulF34YBM573bd/pu2s3rO6knfrSYEaTeOmhBBRclI86FSHyLnaoCydMfJTF1sQ6sMX+S7fJp9ymPT2CSqVs5Z//K91hCaipdZby+bBF8NN6s2x3nVyYjNDoet3GUArv9xVeDELzICwYLj9EjKsYqt8m66n0/efpQZE8VCDTM8BHodtV1UuOWjcRbPHDY3mUW1FbKlER674KCCIWLd8mZ9Ngsb39kGi64mPC8nOh1V+L0obX+KLrsdnOGzWSo6SDXUt/BShbGIyqG488G+2AWmkiZ7n/QRTrEtW/P88ZY306/71tsUcabEPW6njqa+7H0R2aoiiyMj2CdGhc8SkemNFuVCbqkS3Tg5J1emCSb7/vYDzOXQMHQQLihiIFod6c8udAOKS3EG/oUwnyFN1LoIxZtz2bCTjYMf0u2SbofXEJWX50fkyKgD2EVg1QErOgZH0xwmmZOTXe9dI91enA7x2ID/FDVHrqKy8jtEhw7Qja0VEfe96XZM0sRIV0JqpnsUnoWiOvY1DyQjcVMBjtZrlMmjrAqAztu2iNLHFcOQX3f36Q9T2pvtr2lpesod6+dONBbWT0c7jY1Ga/d2OQqWmBAUckof2kInCMdCBX/gW63MUXwfDNj+BbhB2VjCHE77AF5Dw+T+6hViE9r+75abqUO1AadNqgDBlRLg6KV/VXKbmOrnmJ9rVhUk7lOMazTLPmpTu/Hfz97KhvybBZfIyqHaS7GUhCWIXBWDIwach48UMxzwhDlQtcxX5piaIGXAi4WZx3wsXggh0GHl1IgLK7j8If8a+yi20tIMzSMLzQJz/cs8xL+UfJJq08r01O6YUDKkwLNIzaTDsHEyjYbA0fIhByDSBRpHEizsK2PHUroqcAcPzQSPoOE2CseHDthZNqDJvqQJnfeqB46UP7LH/mWgKhUq+PeR4iTKDWNLAkq3x5Ox0riaXH5JgFKPVxevmSSYDQyCxlCjdJ9oPs79Md+gE2QwzxlSz8lOiM0GE914oOLHlH0nsYi5B3V8V+i61IxZ+dBKyIjKsXU/qJ90It1p+OxbtBKLSMqqorj7UR6lKkjNH2Wg4Dl6IRm/cyeKjPlLmb4CfMZlhvOUr3q5GX3+Figk7YERUl9MehJW/KoD3eczSn5jpGZ/uBKA3P68Eq/2981J8r560qOqriBPzzvg5PqQXXnlI6s1qvpHS71fV8XK7Jl2gwWlUPcUiQMxRxITP98IIfAmv8c59n2cvJ8jR785WsiBaQIyUvA0vPkCRsoH/aeNZ8FWQWxxJ8/2jvaRc9AHpCl7efwR+m6R8WNynpx+3zw/L2ax/CynEDAmh3yfCMqU/rLUFnFNGbg7xnv3tWWcIArabkjKc8TKwf12mshSj7xQ697kcSt7jj/A2x4DDCZ/iqwujpcF6RBz/UnPJjgl7HjNTEhiK7OrS7LMmO16OjnJ6Nomaj1B37+WZT1tbKnPsfKrT8UIzSxjF4HN7y15bW6Le92OEUZErBdeNlt1AKMFsRs5nW642RCxoKI0hlZeNl/3wG+vcvuiWHE7wXN1ijuH2HyFpamCeJ6wja9e3RS9eD3H/t7iCOAj6/f7fsOA1ODXcMvd473qz7/7uJvMmlFzdXVjSMqxAiz3yRqPS9416+ThTFBh562EeHJ+/uEUYlV0z2B2sfS+foguVyNfNpZ8Loew/Ox0iMqYinMDI+kF+gdIykbiw9okZBM4CxK34kVZk1y/BtqHFR8IGxTRib9BOT1tGRaBJIOrrPMIypj20vqT3AioFndxt5omKEVHfn7VK1QbjVuty+SFomufu9k8ewEWJ0Sx6LPPyjHJYfvDg68RxEjsK8EXukbiBnIBHvQ8HgWZrkZqexA+LuNgfehzQ4loYMkTYLe119Bu1+e7sGaGrebk97tC//TxuzT65czk+Cd7KZ8ukdHt+G9NVJsz2nLfuK5saA/308RlAGrnrLWcuivIs/2IyoWaf9EqQNrYen9BPpD215AcOhTkJhdvJ9ApunPjK6Cn5XHLZp7lI7O/ZTIgWWhb4zLYkiwlSMpK6FqijZVdD2CZCc+OTo6k9Ik4/x4L/cPfcSRW1ws5cBA6lRzeq9na8SfsyUh70S1ESUhKS1pjwKVSjkmrfEYk096VJZZ425zh1R/qNuKdXg25JWMJ0HcOO1kZ+NhrzdpN6/W5oFapckLHhpZcsVHt0TBqfGrgLdICA9GfoHLyZq/DEn4nu4BI72kOkUYYkqAomRgvuUSagTFo/0l8HmwQPx1+icH4/f9azrAvsfjR5lWED/rB9+5gqagyDALyt4L8kmZeyW/j2BrHBnFcDF1sMz5qCqIlfge0Y+gusB+ivEjDHYFveqNSjbokV0Lx6tvDhwVGrqJTTzfaCMq2h+oDxXOjOiEVmQMaH5zlG3V3/pqDIeCaisBekAkhTFZbPARyKHYrl3d+0kTTvFwUPN/X/8i1KQWKfz9bPfNEczvE+rOSYSDXwZmu4zqi1x18mTxgFGB57lj8hvHgvoP8mUrYOkiU/e3Oz9WIwy+b3sn6A5qDF0ZslDWyugsfnPEbjFOI4sQ2q1zS001VKd2ph+vzu4gQV3V9VCtT72vwGsJFjxaRyopBDx6BnTDmL1rIzhFa/RwaKcXzmTp5C3JT5gzOWOBKA9QvXo0Znw6xVjpptT8abcphASeUMOdT6DWtiS9IyqB6cES8AsaKUS/gBwM054etHmq1ZhI5ifGhVdca5mxNLXAcVQJ6iGfzyJR+Kq8PCIoFMlF3TnyqzXM8p1/gOADR9hsw8Y58d7ByHsImzjuQJCnkBM93uV0zHnRsEV/n8gG7TgPkjpQt0q5fEHiPQay9Cgqb3jcG9aXJ/Il3fGTq27i9nY3kQ5/7NHPkxAvpyiODASeluDsNCbLbD9wJkF/qCYBqfrQJHh7tJuKBac9iTVuqlgnu+lYvXG7124kantSrxJfSRzSiVjKrtKIzF2S8C27QPFUYAYIcjZKRwjOmXDYjji4PJQjKXObF8HUxvumK/mSEXxEeOBCf2MTcj3NuRkhEWS6b5djQ2yXCWLbAadzj/j5vOd7xM5O5nvm5e/Gu3w+j8dYLA4HickcDoALyl9OOVQR6OHZzsEBZu0SxgUG3Ta/+illHJ9AR/6c2v2lwnk8FPueFZ0jKqQjr0ihBCnP32F+aymIh4wl5xOoEcf2RByWPiokQIl6bTVqlo4En1ckJ/jRIynGsKKabTF3zo4tnsCtCASCMJskEbAfIyrU2JRmqFtTn4DeLWwLFTkZ5sXmuOzU8UKAIIItW5aL6bX+JPOLkNFTQthysZo9LLLm+3WjkjSi+GxbrO5Alm677V6rNOJeuSaPa6SbOR0xlpdTj2tNdeG7OgWkx5N69Fpu0NS39gy2voSBIRSfbuGVR5GyRGNOvXuBzuGtwmpb5Y3MzQzHUhdpWQVD7tdVP/ZXZbw5SZAfHcgOUQVytCj31pwuMFMuN6HCqDYFmRn18DSpftRTkm/czT6GZBT2Ib64VeLoa32DxLraOWdmI0qcR7hUkXPOnarKviZbn0IS3lR39oABdWiCvZjmFPrq6GS3IzT0eOeMOZesDzU3/s8ijZQZbm+t9mdvj3EmEm90fVlmUaMg9wi3YklB4mbnstSY4GY3iSE+R9cwsv56ZcP/FNdmGiuPncDD2CDqIdWX50LUrUxhuhgMhQcIu5RpJq/3D9eQR86k4a/Ak7Y/DMfXh6jfBXFX/YoO8+W4u3cLE6/bPIDaODPTEN3QySeEfDLAs7Lu7dwU5clZE69Odt5W/3F08qNZFDrThfFp3eo0poaBBe+QY/kHC70b2nUL/dcn1eqhdJOlVbkwB1pxoXL+HhSWftOKn9uv/pt2owXjLnZ7llamc9ZI7XXdMNMbc/c5W+ve/kB6F4SBJ/4Df1+ZIzTS5p7uhCLUOLDrQtrLrO5VPcDixeVki/5b0wtziwU6InLCX+sT8GF5wakUTjzYDnLEYz++jnePDl/tv461pMxutzsJF6z4FJkZNZrXjct21CMqG2N0KFcuN0kg75XLzDcaiCCedw4jKrVfQmie+KqIqavSPoCzd0b5G4OtjIbDjFWPw+ZwjNBjmkEhBW36xCBwjXHUSlExDMMbFrxg8bM63KRIERGspfKP46/iGVcnh+8q2ZhjSi1YRtdoNqd8Nb4kyKsXXCmdjrFXKRRT5utMYzZKioe7vz5vp6oVYUSU6pmucYY31PGlyXbnu9d4+R1vqSBljhEfGoNJ1vW2PVScc3aw8kYrO1yLRyM1HHPGwxmQeSMiE+NRamLMHav0aDnD5Zf/0QvLZXZ67a/q0ePhO8kO3pLbWw8fv/x7Xee2WOWTAit3tcpUJKWAaWNV2XQCjklZWbklMlOUBpphxInN2cxx81RYyvfqQqngn+EYyBmUdUaZy2+5/JnOzKnCZE4VHszPYI7F5eTccClF0sSAEbB9gUC0ZeR1XqAHIGSbtysrgb/qf+0H9imKu5KvUSPKRPxQaP2XvqU3qAZBTbEiFLCcFJf7FTEEJ51ApUWZO3ZzJWuNwa11vr31SssIQJAd1fcoIykbN+4TLOhIvuWgySM01rIm3Sa5wLHiKHl66Ad5010pKtiwUrfAxsjIPbIPckpc6urD2h1zG83ymNTa5lbdokVphTvFUClhIyrZq6v4dOZYTlDK4S/f5kIIuPb8aJOPxLQsxLRBJ4DIp7vMeAI8i7HQ5x2XLO0dAsxG+22yLiShBYWLeM5yXC+na+QE+O6Rb+lEuOOnzfHdSvqrXfY44eP5CdWPVbV8n+vUIyryGke6rj1SdM1rG9e9Oez14Ozjqch4yc3FJJK5rzV+U/2RW6gzGRfX2p24XB3IrItZNXpOB+LlNnYvI9Sh2BMloQi3zHnCd+AzUXTab8BsGzXg4EVQgr/T/yeBz3x2CIB78J82Nx4/S/v/hLAv9v//9+3/XWPz+7x7Mh4UnBceYMueRr6lmZ0Lettsyq01QY0yvAyE4WOBvAMglAzxZgYfVuLYQTWMZtQOmk07jnujiirpBE26a99RSSM0G5+dKk3KahpT1F8jKYLfbDr3SgsRTO1yEHxd4bs7QLPtWbs5RcKy3GwS0iwC5zT5QSBnCb3K9uRIdUaV7v5wIH7Y8nqdsjg92UVnl768KkeaZQQHKA/Zi2bOHQaKU9PXFynMWx5G/SKjiX/Ri6dbrvHrWdOlKpeb5Z6UaDsyLR9IoPGBquO5Lk91zIzzUl99SLknhZflBOXm/HGS87HhzwG6srzr8XQP7LDmaOQGsCc9dpCXM2rqG4QTwBADC1mhjqM9Bo5COwk7+Au+4v8q/J9O84+A/7lv///22/Wnafyfx483vuz/f7X9n2FwCBHngaxAxtn3IrQcbaf0Iyn2QYCt351WkcL/tHNyWkMjKe46IUDUfHHtDNuU7ETwpG+NQvh8fMwRYBPOz8qBPK5HCyPpYvGsF8plqxbaqBB5tv1An1hhe9XjBdVhLOY/oZyJXY7C7XZTOnbKHRTOvMI/ne/X6Zl/4HhJb0cn/O0pf6OfzvpjeuOfzvp3/PadWL3CVPktZmmdprJKM9xOf9gih4PkxkABIzRwVr/6hA7ub9G1piCFIwLzsIXqIfheeXu0l/mOYaH/7vi4ekJx+bsc+nV6+p75hmk/1myPyBAS7+4c75/tHOz/187Z/tGhBx3HNatrdxvKTTdDuUzYNgYhW9B+LoXYwva/aAKPKelNkAJVGL3F3das5CQPNI5nbeYZqD5lA+sYCXeagbqSUWKgWegPhtR4baqb+gwfdUsQC0NiKjOjTr7tD1/AOEZGr8h4SdY4PxpP9Y651as51lbxq13o+aN3Z1YWzGN+JKOkjBHiK2GGP+bbKGqCgkZUJGqtFRFc/GTnEMrB6uDXYq6R4aQ/ioQ6an/sYvW3EAUn4LQVjQ8h76QEl7Lws2ziMCM028XRk2UbtwhrK23cnzuSNjZUMsVJ32mSxX2QgbwjNBZhDqF8OTvtFRwJqYUk147WI0ybdJ2UT5+c6Hh3OMnB4VJSV/weufheKUAdrdq9NMsWrIB+5iKFdbXXZREXkX+ThFEGEBZq/tec1ly3b6k1BGrk2J7b4Ec1iFbXmswzx5keTNG/aUUcglph7C+mnZZklCLiBaNcZpBJOMZNBIEkbRROJFc8vKZguYwXAmoyA1QQapKgYP0hTYXt7mFNpYj3NlVbrFojKlVYI0wBIyroyMSAhVg3TviRYkkj8DndiiVaK6lP2hrW9CNOrPx+vGYUqEQciOrbt4aE166lqEYW0IhG57oeuCtAQm21hHy4MzR1oErPuFYjKs4IqZ51QzrJ5onkSa4FtNV/IJWEDJkI6hj9UfYb2VzgnOk1+hethjfbmhmyPY+UKAVqhVwG39PAZQvQ9JSC9EOpoNr6tFck5sqMuxazEYreQc5OqFk93oq0BOWjNit+ZYQocza4E7V90gOnYfHJ252TH6snVoiKqV/s2Cpcwt6kc7DSO6klraQ82NO7KXId6OIEWvty/3Bv/0QbDAtXXNK9R/dAJjqrrtrRkbkt5fjEQY/OOG6p0SDm381+4T5JOiky4nYWC/ZAZ7c5/XH/OH5b1XsUBZ68O4Qw2x3cRPCyZm2WCDUEdiVs9lsGcXPu7nr9oeYnV+1eD9h8i6nDxAj3oWJMWrDmIIq8tMfAkMq+lEwv5La6crx/XJUUzQ8tvx5pP3LwqnZ5XL1EOyETkupRIF5DDxlaHJuw5aGttL8M9VB14EUPma5b2sYlyTCUDAPKOWVwokFFF2gUc3+WN3gUJFc2Iyq1aodhUjOJEpgEUHwmAYZZCbCGhc8l/7n8/j+A/7y++ezxelb+8/SL/Oev5/9jvn8PR/oDG15G8vObroVgwmvpea4XQf8SRSM0ynugknPTKff7p0oxFsix+iLHbr4beSMqaW3HlpBi0YWIHDhj2XfwNoKt5umjPu1hJPoGXGWELGTdTrxXffmOPv+DNHPho1sBSISeA8cpL5C6O/URMS/ivLzYfcpDMrNjzsuNFWIekpsdc15uWtdG5Yd38fEw0V2vdPPR6Oh+tyZO3p3poKn1VEgG5Dvf/VUpzFJTyWSAFD4TWEp7RLWnG5XUIbMjKuUhd9y29YPGRYh+nqygelC/8a/hePu8tRKcV+i9O5D3YiMpByZ0KF4g20xyVlk214cFPDeFuKWaEYCa8KYpjjtpTwcqoRUkUCWadznSNIpM/Uq8tSmd1sxn2sjUiYW+ZhxpsEIRKq+P++hrHhppm91dR5SM1ZXoUJtalWIXGpWuaz51i18P8RF7BAWP992qIbWYd4MGfeTehXXyLsgMCbBDsnP1z7s5c/b/RtL/D+z/G082Mvc/Tze+3P/85e5/8DyS3fQrfKBSkYzzUeuE9bBrHz5+wSR/INjUDh14d0712Xfn9G2eFDhfBrxzmj4lQ4h1RIaDo3PTkeAtBd6FVKCG+AOl4U/CHhNOj48VamfS/00XGJStjasHAbYvYH1WdbojKQ//XHlHDCMpr+6J3wTarXYxvwgVY9GRG2rEZ25TtcWHbkxAp+684/YCeo47ghlNpVnyV7//vxQO6zNvAvf5f3y2mab/T58+W/9C/7+c//7w859M+MWHwJqv4qGrxG+/BbYx90Sozif3HQvlLOecIypV2s94QPx/n3Y4XHTw+00nxIWHv992TFx4AvxtZ8VMxM99YMwUkHdqzETKPTrmZkXnx9wv2UNkeoY+4CT5+vAdnCRfccJiCN/2/5edGyMqHo85OqJyvQYeQbV9Wsm6NS3kvMoEefiJIyoS209uj2CgxDF04m4c+8Hz9d9cuWtyNICMFGZMBhQ9BaUpFA6oQntWEPuzQVuuvLbkxpu+iuUFfg4M9DTiOG9v6itQRAPbqIulIr0R9vTSNV0MRhDINwTdZK+kQISE/RQgoWsV4WxeBLq+vCZkn0eRv+7PP6nr3qPDury93T88OkmFATO3++ag+lP1Iyk/POA4r4j/7zzTu6Q7E5x3uhcdWjKG1RGHcTLCu+E/VW3W4f9aanr/qfzf5mZG//Ppk2+/+H/8a+p/fhITZ1xHy+pTd6Up62K2DJB9my0DFCLL/Ts4dE2nP9E6M8lkSIawHGxMUyVDJv6SJvJH7FDoptLKsSMpqLRnbZ+/5poBoG2qfJ5jCEAGKqa0fqNZHi4ocGFht6iaeW9xvCMqf3r2ZNKwKO89ONpHvu8XFHOyF//ET5uB96vZ5CatIzRutcMfUC4gYLYUYYnArTu9Qak4uhpeDJPNYvCD2XnW4flj4SOBLGB0VcxZY3A55AykiAmGYCFNXVK6qKXRGEI6pSLF5XLsgqCkJVNUXt0zOaZrvzEn18LHAvaSWQS8jbTEtpalQmK5w+wIS4ciG4ChaQHetryWBrrVmLU4GqEwIbRiSZnJR3WDSsvX+ctvyOayMWkVaA5IPjrgiZjvyc7JPxHOT+PjfDHD+J9i//GHMCMpi/f/Tfhfxv7z2dMv8v+/iPwnFOfJfHr5JC/F8/whu46P4Tzx6mTn9dvq4Vnke/I/oXhEgc8HKrQjKoeS7FffzmLT5HF8cvT6ZOet93Zn/9DkUT3cwySWpKl5j1RH7BFrIqvJt4O0ddAtS8hXu/faQr6ybSFfoS3kq11OamwhVdl5tpB5YqcRAq0WJNPMZwLIbnGEzkILx85cE0euTtq80lbws8wrjXagE3eOMaareRgxlspLBhNSEd5kI7QYPovNPI9QlsfZ4ser0MXQdE6KztGT4AMS+WJZIzSFrelIi0NyYz4snmWXc1/MvWy8NFehjshph9spXkJxIyrWOpnHPHSAydCsR6dptCF9gfunZIiUpd0iSCXQGYGfU8VmpnakLigCFL+OxehFocLxWN5Gs+7rD1tKwdD+kkpFUhgnNoVQLFX/TBGq5fnF6K911TPfr9t5ZKtH1bK6OHXpR8A82uG5NRfvEZp+gpA5d7XLuiDDrgUrXp0voAgHzo7W0Cu1NDUyHgRj0RqtL1v+hMqv5y3Y3GWeXrj+oj5yhd9uF3Uy1tx2GI5lziEvp1/0Ce+mQghlmU9CB/ffHmviRrBPw+mkzClCTdJSw0Ld4jpusyhDTTJiJJdyYzoZlnkPJQO8+d2SFuEvuiM0yPRaqvmQl9UDc+qqWjSvzo3LdvmCsJmDOf0wh6TFrWm/fxvTCSxNP2x8I3LXl4EjKt/xXOBq5caDDNvmleMrH4E+cgxxDLt7HOMjPsgvfZFfnPPozEF5n+grM0EspC9WBeJ4UAOD5YGV7zHeJ9DUD1fAE0GVP7S9QbuNrmeoep6qHuXcIKMjKmWygLRHjzNGq0f4k+vmxdkMfDzhLid4vvX0IdZDFzHLJSpjOCbC5wfWjuBuCBoCUEMqakF/d2BhVylrR+i0iDSul1zgcn8wTLv6zqSTRqVT3rYTwmvEz4Hl2OeTPSE4rgKsilnAHi5+lnMz0JzosVPbocy5xBnEECqkbhDoJNcbolHJ693deO9k/6fqSQxLq2pf8fi/7I27N8jpQ7zjo9P9nwXlLK7+fOZEPD9dPQeSpGIhTWLscTtSuQfRnG26m5DPWbx0uhgmbXG0OSOIKuiZNjDulp0jKXwQOwH7HgNCnTsPy3tiqmlyN8VXHCM0gjndLCcSFJNqUDYPbWtHRn9zEIjddS/Ntfzqpfkna4WqMSUvR5KSnGD5lq9i6NwbPBGUJQI+W48/uY5T5ol7bJ6Lzc/DPP5tcwEDh7Vk71m1WT1nlf52JyEjNH4vb85UaGdVRg8jNJp5cUy8PNzKrmoGwMv10aVXZqfR7UGPZdalubHjoy0ttrnj55VwPZq1GDgeQPiq6+WRoPhHs4Jxu2i2wP3Xh0cn1b2oNobV1RhcrvghPjXHk1qj/O+d8n+tl78/r9RXzitD+fI1/54SfBg/dy/63R49Huyfnm1xHgeHR/BULzCSMSMqcuQPJihBzhSvtyHMrTOeSC2msIAfb/LzdXs8aPfUW6N10xh11Vs/uYEjNPMzmQfpD0B6PsjjsNdiljgoyKBkqyEbHca/bDZXoD9P8rrKkKROoN2YZCKyIyp8TPfGcfdyMBy39arXWLbZ/IX8dAVP0dCJ+WSCEEvR7FoTCJwrlDSh0rqDRi+WVVV3qR9FWkDy0rWIpSBaGBhM30KrCG2L71mBhdPjnd1qfHR85pL0X8q1g5PpP/9dR3zJw6P5sU4O6qKj6NRgMrzGS2bgg8chPaNpuNSDuS13IykoTsDIx7xzQhQjNHRsba35RnAjKTY+Y0TspcLV1MWpycMlSM6mPdKRpvxJRLVmqANqhdyaT5yaHIdi8zuJJojpKKafwxEb5mYdi3HkdK1YQrGM6I1SNbuzs5Vb2Kr0lvYJqRXqNPZ9bg/I1Jlkhzp/skF2lIvSQcC/HGs0TLoztW9wSR+uukC+8SY8pn4TQ/vciuhG0JKBlAhLyQM3fwZas89Zdpat76JFMm+/b2rPG3g0abRaVPFFx4oU9U+fMXKi4FGDs5hsqeuVBWzHi7zDwOv2ZCJA5MxGTgeTbl8cLFITLYy5++U8m58s6BGmw2Ii5vWIIyphRz/iHc3ZqJWEC7v3+gMD9mqWxA/VIyrYPLUb7fmpqdFpdSeopYBaNxkOBBc5VT+HqqdVdIIMdzG89krLSeAv+554/+Ap5+DAmn0HxZ4Rzz+9ycirYKpoNJdFila4z8zFXSRnZ0oJR1yBIU63HWa5eIEvZGQDZE0gEIOCgg/fOXyNYq1dsq9G31ZUCdT5If/JdLfQLiEPx2AWMtuUnlUW2RDagQXCP+Utaz3knOnvXKhDr5F4bbNzlq4aCandtUNldExbhxuMhsmB7OeNLjBybZtFxcnQrnA0OlJChemd5kTedHWMmO7T91JAjMtjZasswCrSOcDuHL07I4n/7tFeNSoWi+cFvnlIphdjiIVZdobDC9Jk4i+CUKwvOXITxAtTQDkFEk6oUgvo+tVbLrF8A/UjKuMBHmTb4yAht7DBDzlRUhFIREDSIynJAXEuSGQjKUXPyRuSefmZ0hdzX/6RKv03oULoEgi2AipLWp1QcjysOjdGJV+BpTP6hvA0OcknlyqJUjzBiHSTz3JAgv1QRgmEnZT1xk2hxoqenXMb+3qyqoc/pfG0145SeYdA12HNo+ZHd1Bp+iG5EdfjxBDbcYwLNY6DB+SjSDfl48w0SZ2i6QzoFXJHmeR2dn4mpSPkUUlVC1RSlPaT412VCQFuwfEHLwfiBDYl5a+JXPDR+TjWLp8I+3+qPEfFvsEkaWJgkSRpxbBI4FlFOSOyk6hp2JqGTau8Nk1LCU/BfGnkInIs1QxKwep0lV6U8qc4xkMyAxUajn1/7jVLrJr3uSWS2anrB3n8SDZTxSX87qxJyJZxlWl7RVGNN4KtdHKvpHie4jwZa1H8pgcPYX10iTybRNaiJkB3kD/d5khYMmxQrW4xQPNoD196IyqG8OMjebdfs9QvypmPPtN6PwjTFHFe7Jiju1Q3Snf27xPkONxOEbkd1A8LPf233ESpfVBcVt0dFBypLJszQE0OXwMb9DrSy/IeuY1mB+15xh0xdmGUZV9V+Zp9YnQLJ4H8XWHUuETLOnEDzv4skFL1bonxEyqFOFT4HY57rqcMbFn6HkR/oGK1+whLyZHEv/EQTmn9kc7PEiM0dvgTKQvoJ/47sz7xz/ukP4rwed5U7jRLfBFrr80jyObtMUu0yCMqgZEZ+mlVimaj1/OghBiPaoMp8PtXMF4tWDznA1SwsOPDGYHd/kQz60AwS/lZPzquHr49/p3+h/MmTf5pgBubQ6Yzqtq2dwhr+eAV4yPL0AcFSQNLVdRouCN23vYT24mEjgR0K7kqudLClHoG2/dkj2qZIUSJBTCZ5SGf8vrThPC96Yji0YkjKTbdKQ5nki8jKk4f5fhO7lN8welWkGtyss1Prd8blCX10S/EF4XA/4z+36Q9+/Pt/zeffPtt1v7/yRf9/7+E/t8wCReYgNpg0OHB8BKt4VrtT1cBhKeL7sV00HXcKI3983OEREFVnm04k0GU4LyGIVjF7dov57Xzen0lOK/7aPf2ljd3ycgBWSX0RhcSlQNZMGnhMFqmUPQdNbMgLUE+4i5Z0pfwk+YVSo9N1elAAac2NBpkm3/2DGihnpR8rLlyZIVf5dgDLI/GIyp1fOpWLpCO8/EHO7jSal9MgVUGUrDlwc6Cu8dygkwb5haKk8pOl2s8aoxho0hhVWLEVeMis9PdUn7RsBYCmyqQl1r63Ona1/sUdU6lmu5mraoGyTNRO9q5cmfYgxMfNkY608OOSrYouYK7dcYFXRATGiYckmew3ZKTsMkMfyBA9Rz8jFqEUT1Clz9+BRLQG/1NJrewQVNOnImdQx1nJQbPm5FTdOxDThLvTvhEdCyvAtR7BzXodZGZGl3dlni6/voRJuwdT2YVjyJ0m8kdTc47Xil3F+ilqDu46yUTIzRHX2sQEpTOa2rmn9eDF79a64Ey/6gWwyVOTGhAymTUh9AW8FUm2mVvmCTk1ygd9fz8b4P2B/l+q1IwtAPk7OJ0SGlwYgljxi7UR64pTGYEk3h5Vv0ZgSj4SYNVnJ7svto/qELN6eZRK0WaHFFGMmzGMQm2lqpyysSZo7jVlRWOvbJSWKJI/cZ1mwjdghqhm+D9wz2ulH65t15O1g+pmk7g1M7q98VVfH1wdHq6c7JfvbdWbpYPrZpJpev3IymESZupPj45ent8RgjHP7Od6lwMSSFzDkIqjJuAZDplWkiOIzQ3O25MZy6wiqLjBHzL3vggTnrV/o3W0PzFIi4r6aojKXMq6exzNoClzBYjKSXmkP+FG4AiuBlCbeEnC+EUQk3UEuVU/CS4wtR8IeFzKCzUjkGGl8dwfMCgII/EWx+sjtDB6c7J7JRZbPPcfdfaeAmCWR6TdnvAT6ntWAkCGLVcIZbPHy8FwEyO/toDWz+Ij9LtQQY8+SFjjNx33hj3p71JF4iPO87KLlwcOUocGj714txR23uFRqg2WctDIyrNwdNx6xp4Ojdn2OVwyuX6mLVcS+uyNH45diMp+Q8kSVtmDlseGo1TW83TIBZzq8WiK8NTpFgdi9vxnCMqXQNfk+x4pJ02wieeSbE97T+JNzK1mI4WcEb2ojPFaO1CXTnBj05B7RJk/ZadkWabEJaCH/JBwdOFWEO0aMXa/c0aLUtWLaFzdR/b3WvaSNpFKKXjWdOeTQIrVi5ByK2uQ6icaZ9XjMPfLtn425a7c8lkXrMXoHHnZBLVKHndQLCrbtNJiMSowhQJzqF+GgzdzMWZouQoW8NLlaDSv0YPuRjfmqPFufwvsryMHY+1gJdimCJ8ueTQCMEsVGoUXqMbc02sGG4aXx9F69YFaupWllzOySYMc6aLlrGYKV16luxMpeTuoDPM3InoscSvOVjUFfZJNry8bKNvi86wsGgsKRPqQYlKZWpziiU5+tGFnt5/CON+OovNfiMplVABiQv43pxE6ou1Caj7Yr5BR7GbNb2oOm3uMb7OxoRMdrZos9U5OrjzLhFG5BjDqhNJavR6paajGUmt9VF0K4ckPKIErqY03sAjCEkqTAP5O4ojKflxfvWBNd8/PH53dupvuRQXXdq+PD2b9/FjKlPhUk2f4kytbZWf1E08Z8L61JGoRT3wUu0M+aJVnwYMer8a2JR/ErXYyZn1ViG/kx7QR39EF2V6KNs7v79zbEGI5WpG5rr6EmVkJWYJHp2aiW7Pc66IlZDF/paCsPomPlOAqfMvpv5qAsPTIyq00ua4MbhslzZCZGhUimB1I9Bu3TsD27lE3vxHL7wqqW/8U5AmqZtaD/xvH7tUbmrwOlb47x4xfUw0Q8aNb/EaSrHSUCB2Ygx7NWykEIk6QVNdSETHDycLQ4hIVyZBTnFSUnHnjL81AlQ9Es7QPnWRIylFDNk/qjRSN8IPnWydm0d3OE2S/BXitiMpl8qiJX3vMOji6KpMVZJHxTna20tpMhx1m2ZcRumxSO/7vNuKTikca7sJTCP1SiM0ZSMzFqF/McEjJPxTmk3uVrUaQezBBEU1FyV/pbZe/r7Osc3MMad4a/qMmyTPTdfWngVonsWRVPUwhC6lVXIVLYx1HGL+cebp5MH/qiMq1xF6ZTfdtIKEK4YR2pLPPBXPLAGL746Mj/oZ/W6SQJ0fFQPTqA8jKmDpnAVhJZqztWLPf8Jm6mZKc5/GVM97V3ikek6dnHGaGYJoOz1BEYBRnubJXbs2I6CPeHlHuHqwatJqBysmf1zcBitIjUuuzAkDU2aKO0rMiFfr3QGc3MX1/AWeZ8mSOMhPeozW17859c/VhybmsfvQeiMpPbEoJynReHiFjpsgHnFFk4xks3EMT7iASadsqTkdx1eNRHYCfIr1kjQZ4zSJeyMqFOvqsHlxNT20Q4j1tgOY+9AhZndzgiyypSiIzSCs84Icjds33AjVGhLb3Ncy7bxbImbJyOEQCVblypsMPVEr9FVKlYrOY7qsSNdlq+Acf3N2tntGJq/ncQWkWpJh4FyyuvDcpMmtm4Z7zJGozmMseFOyaPP+kUWSZf27Ul3G4rqK8c6iVFNv4mPNUGZ9gHbrVlfnWdMvLj/kbPr3s/H5XDwsz4WM+hwuJHcLfRgBpqbIfIAnobF8m8LNhH/YSv4YkiPJvDsBoi3kJ2vnAdcoXMCo1fmkMhT9w4wdWnhvSbP2JxUkpBKztanmvcW0brqjxL2BsoDR937aP2bwd3ywc/yIajYjNOE9BS5Pju/gvCIj5atOg0dplV+3im91Fpa/90pVYO+VW4PfXzx82lzQfChxk9vPT5+veKOGxxKIB6lmswaevZCFLrvndpKZM6AuXn8vqIehBZgmMlEjNLYDTfTJhRTILQUjkGAgZUaTFU4V5tNV8c2JGNT90URJXNUhJ/WV5d+5l2WRWzdO4IduBkQPR0lM4ASsr+Ama9G1tnbCiq9iECM9QC8YrLZYeEbCi0Hq3G4ZeUMwGXkziR9wXsT2uwJziBfY7LJz6MZezFfgWyYjeZYmUlE4KdyMVOVi42pVverLG0EMyFYdlVAqh+aGJp2Sq23Lj1Rnmf22wk10bjpprkUyL3l3Vc53lU8HduUg0xVzoz/uhiM0pIM3VKq7nbOexosyN8thTv6o8ZCfv1o+i7JXce7Nnewisuy5M2rUx9mxtEeZstFOO5XzTyfQGfFuR5sDCdVwDxTK1BNzSH2K8g4gtmwiN1HNuqEjKu3bWs2bh3p9mCfzlSRauHQjKlfCVnCGAwl9zXNqKqG/cpdABquROSmtZuNJBrqTsUic9Bnr1kKuK2P0lWvu8dQxv5sjKZ9TmukbmpE2eqmQG02iB3QrMgvMlcpI36Xk9ai+WlEpnCsumznfH8B5qtvydBvxoqTVHhNfrSM0tFPbiXfZHxUSq95NG35hXnfhgboBm25y1dnNX+ndjg80VrzUcnGT3PVDfAmayZirvbxVlCjXwhNeRZU5BntUMCy5B5bc6txftFrA95Z9D33K6ZJcarX58P6wKG8kJpMGIjwPPJjuqGEwkSM0MBOtOV3FiCppMSMqjPBt3ijZxB8jIzTkeqYlL7J4socvxwHFiPxNjCpkrMRyk0/Vg7+pGEY18svHOEiFjP+XVvM/4f/r6dONtP7vk2df9H//MvjfrnOXxjhs/QZPLq1mDsS/cePZaoobzz3cCdGGN2tkrP17uA4tUu4cipBXMYii8kbKtrfIhjrtlmMsR6cQTGFbkwz7/aE4DHBq7iKmMT6jYLntKaROhAWVEDYF8ctDQYHbQzgQxLqDR3o3IymfjH63ZwxIrFT7h7suqOieg6aH71kgvT2NuKnjO+ibew74JgM/Z6E4jYV7Kxc9dO9NdWeveoJEPALGtuubfolbMap4xFftBtq6+eUOInI3pSPe7J1QIzmwTNcPWOa9TiFaTe2foTdswIETbeWcgJZ+z4yj+pDBpf8fa9Li0H/YXXp/wAZwD/1/+uxxxv7j2/XHX+j/X8P+Y54nyPCIIykUkpAtQQSk4nfhQ2t3i2G+mUha1sRipe6gSSy9a+kZzjEHdQxJYT2xKSkrMXUnsQS5ZqGc3pWouAIYjqGkSoIRe1w9Oaj+fOYr+QJH0vImftXgQiq2bVE4zxS1OZvNM1Ll+hszVduF5SyRps6S6cVoFGtlKa1MIyq76ECrwjoMelNXzJUWUE4iLJDULh+vGqg/ipSYEs4XYEJvkEj49N3L4+OPXnkwhPGcDPEgknhl/Ok3RhABuuzd2f7BaXz2z+Pq251jLeTcnifmtBxeXvlZ/FHsQe2Ai7Xouuh9JFLiNbSyZIkeatzSN+I0MI5fEbQYqFwJmiJpA8uakuP5Wet319geZmN/2vewNgZzJPGXMTnkhuFR9iRCU1o4KexCfOxN21rKKGu2MpS1S/GBtpB1BzUw0J435IRpcWAYebVWLLeLuLpw5/bOi8s3rfNi6H39y0+KFSNsc86Db4gTrZGqsi6+G1wPhh8GRUHDIsxQ6irkybAiWxw7mkxHMEmxO6G8UNLLsaxYKQaBHNvhy3MzGHahjvm5ZBDylCB0zkHLf31SraIZsP/P6sHB0T+M9TlKD/JnSH/YmqrVw8/EqPRbZi3iIykgq4roj7DYGaaUotazo08DzV+tiEZEPc4OB8PP5APrzLe7dy7snChjVE0WrC/V/PzG4xJqtW/aPU0nXTkgzU7VBXpOYGjatJvkwdR2utJW+izYTCqJecFSYusa8DT0y295g8H79bYvMxInZHJe9JeTuuTUuUSaUoJfO4+8znRKxPiByaIHJD+VhXvHYJcj6WhlIzSd0+qo7GAjKu9Juje0Zfg30P/DcU/rQXOKSJXqf83N/HU5+bhWnU2o2DWOpD61Z0SmP/rL6M5NBIEche6ujTSP72DpC9q2O3e4HJzqI5e8CLkPaMCt04FsXtlK91qtHrHYH1UiOM0cvNurLkiD2K7QHR/Xdo9OqirZ7j0FNRmnIynIvw5opotO7xXZXGRUrI6WnUZlwftR5Axt5jYrl8piq1rdsXVNQ06OT3bf7O2fULsiNYd0dZLuhJBuP9poZ5lkDypW6p/iDwjJ3F/NFNzq0XRibkHyKyHwIfIIowl7KqDgEhzF8ZxXxpzLaivhWzn0H4Rml+iUK3K2mqt2bxT5p6N2s9u59Rq9SXs8IymmgimBiiSXYJF42FxUru7ceQXrCG7JENRuIhAd3tQDozoZenST1Ot5mMJLKF63yeao6Sr92ee/JizENl6w/pn+f55sPHm8nvb/8+36sy/nv7+I/x9eTOFk3Gi2LxrN67wDIdn+OwdB5vKPeb6yYmSKRdF+4FHHI97d2X1TjU/3/6sabdAIIcByXvDx0TGp4/hlvyMpi3fKnmZ73X53Em08XS9cDuPGRTLsofsz5iMp8Wa41Ri3YrG3ToD1p07tIyqbjd6ahMJOTIHqlVCXeY/vJuw4Ac+D2bzqBWDuYugkMshLovUC9lhzEr+fDidtfL9EmjVuDJLoVwSU97f8R1AaPMXt9/KCXOiW/803/Mjh30TwBkzpln93R08cfIfBMyM0/4WfOPwXDL/oTiQrfuHk8Iwyzx48/7cffkTLdkK+dAGCa975pL5SerH11d3yViBv3Q7QvLtuZ8A/d7gL3SHPfgdsC/xVtu5itc6O5u6mFH2ESDUjKpVTZSU4H698TRa3jNO8u3NavUP723cHsC3DcAdYs36jader+IugaMf18w8rRYrSmQ5SVVdRDOJ2XF+plRDvGOJzReLhoOnat/9ynqxgIPykqkXJBr2UNTz8b7xyPmCjYafSTeDYHJPjtbXKyouv79bOV+D3fGXt7tyHnj0/r9zVfoFs4Ky0cu7fFa2wIgQVKeu9o7Odg4NUz+AEA6a7E9VK/osX/mojvCAFOvjFy8x/d0elYlRee+SXgufbxXDsf/Xf53e/1Oq/wjZeLzSvYJYkTZiA6/7WOkwyf+tbmCD+1nehDxPye5iO/tYGfOjAzwYwpfCzGfowezYeh9ByiLIZFv3i1uPvPxYO372N/K5fODqO/CO/sL9HrrvO/MLp2Qlsvn5h980OPDT9wmR4HdORPapBohC+hxQ7PDpG4IWR+jguFovrtdnPdTTQvmrPtmEcOzvlV6jnvhpg4Ptpo7exXZu+6x0ggsLBygsfg5tXjfF2SXUh9Opq4N/hh8HG9nlrNahV25QnlLW+XVst12EwWpxjpzdsTCCw84qzpFSbkGrlvEJxrLQbVtrghU69kUr9BMvE1CtO6s381Jtu6mFzsr2+QlUbrG+rWmK7N3W7oZtgZA9eFEu1X4rn5/U7aDnPGt9eJfi+vLW8dff8eXS3vR3dQZ3g//B693z57jmEY/Adflg9X4U/0V25fFfevitDyEp0txYBBbhbhr/bd1F09803d9/AB/g//AcPv0R3W9t3j6K7r766q52XzoPzX88/IiTF8+3zFxDtl/OV89Vvoq1HX/0QLq+dlyHwv88rdT8kTI0mY03bK+tOpCa1IjZ5OdleThB5jjAbR3BEpomu39R015Mr1DMpqAdi0N9o4rG43YpgqhcYuLxFk5ZIE9AoeJv6heS6Oxrhs9w9wH7VK/VJ8hf1xd6ZGXxU+owif803R0Df842PpwLwZk1USR2OcINZ8da8ZaC7q14Z/j5/7m1v46/3PPK24T94jiLvEZLsb7w7Dwn5N/CAlDqErYfUM8Lktk+KIzTtwbSPqmltYMETG1HTwxj2HTXWoTatRzNpTGvabCPGW1K6afTiIyqUBsWb9HdIKOciXGhE66sUQYsTzqA3tSChESE8GkUwAokLSbOZn+ZCp9nE43DEZVJPtqAbl6kbm1Fj+UJEQBi6qkJX7dCyIzQt26ErKnTFDl1ToWt26C8q9Bc7FP7jYKxpI4ouAuvjHaLC4YNsopz+zk5/p+PoCJQTilGcvL6x8qLdmTP7xs7sGx3JxODc8CMp72T3KFJRFQthYj9yW/GLijlzq/iLE+u50xHP3SyeO9+cT9v2p233k5PldipLlWfj+XO7D7ZVho3t7QtLYiM0LJRaZk0Fo42zugRnd0uZVFSZ2CrH4Tz9dn80ufVQUEPSVUmPh2JU3ghQT4qwKVB3KYqOjkXr7wYqVfIFBWQ6mCBofUT+i7r8w5D23edoxSiVgf+ZPLvanFFnu6RzDnyDySCZlzlbMT/QRYqxdsrYnvrNqqKd0apk1JUHoySV1z1j0mjzgIzyBTlqZmJzMEEJOiqMg4iA/dtj6vTaxla3HtjYHBCH2ru6sVXXqkM3eklbaLxq4GrpmLzMlySrKCeqKs2ma355ww8xIyoQhCCUSus8Hz04T5ynjKgywdYE2bz++8F5/bfKxOQhvZ/X+UrJbThiJxpKPVZNUhkJqgfMIuCjLCHkTSjlmwjEYFlR1u0oXI9F1VhQB7X01DT4zWsPM8DFl9OXQSZLM8Nq9Ycs2DAz46xp6065F+m1vf5nrO2HrFsTaUtHup8k/P7VjsrUMnkd2XD+6rfKyYlmEQOJBtluzl087rBz5Mhe6jgFKIebILfMWgnPGBgjqK+qBo0g+qaeLjxcm4/0eOX1DyzEeX1D/NXNZn074qf656yq6U348HhuP9HXdGmbIaW52bynvCCkCRyq98e6/LyeaCoVWizL9IXFW7aBaKjVYa9mTSI0jrOqIykjMJNMqfvvtkpLpiMqKIKGFiDGNyMqWyAuFFUexSIfE3QlRo0Eb6KRYiWlyUY42SSh0oYjKQwhrO4Gse1Hx8RGTTbljXjlIyp4UN6LOBqRToxZkpgcgDA//A6NCCQtfXKTw1e7GKHUWJ13b80t2MY8Qsnt8FpDcaF43fYaHhNlaigS5caA56S01nTvCN43ahv1VSh8o+6MkfQP9BrKr5PwooFAW0S8keDl0bkUlbM2FqoB0KWinKKKNGNb7Z5naCISkQzZpAFNE85Na7sS4rnJ5gIdIyqIxEkimkAbOTrf9vf1oKCJJ2Yu4w4UwKK2bmVz65aJ8/lqpj8v2oS5c5EMjduJ9jdicyTueDg1SxvEdBIgVJY9TyO8iNozlOdOUNg2Hqo4gVjL0Et0gW/0ncROEkxmEkP0nh3pbzDhsuWar+v1EHd/bYzj9Cyc06cRZ1gTJDN32mIEPW9XdS0Je6tPRkwYQ/oU7R2gBghg3UU/UjIo2X2xMRanVNkaYTO2I3f65jM2apMoeWQ6h+uzdEnIdZMrhOr0l4X8z5v9uA8hdbmBJzM/H1iWzj1VfyB9yCE0+qp9mmloD5jBmcPaWHvlgmVgLSs7Y8OP0FJxuBtTJaUMJB2iQbysnDQHJCzQpsNNkaqvys2AfOFwakUj9TnIOTNZmYZOpuQwMpvxfIaWIhLUzHRAkPrWiNxbo8wYpYxg7ukwO+59fZszHA/vbSumYl/voWD9Rg/1amGmEgEQ7CM0WuXSVOiZeII+oiObRNCnfznz8180P5k2qCmqVpJQjH/lzktqxVc23/yv1SMqOzPapCWH1Y26u/c7XzbqSGBUjY1Z0/A6iXCIa/pbzU1Wr+uZIylt12ODEnDD/GA2gVkF/7JHw5ojKk4OqYmQ13Kn6ZiYvqX6wLRlI8I4tfJG3VoPv6t7Pql/uDQbLnFJ1SfKMHgQD/VW3KjaMyB+1WxyFjxxQUfmZRUYCMZP6BAYgDj+aSfeOXl9GsdmKS3dNGLqlpppOVrotQfOVmnqM+KP2IuBA+ZIdnvUuaNJOZngKctqoxSjGjILsp9UDxwdo7Q5cCMpLyVOToaj4ajkRKXaQZ8F2xtW9NIIjiGPg8ycwi9Pwpsn6stm3QGhvHnszlw9IG6xHPcJkW/s+9HkuTYQnpsIg1YjaUc+ruaCGacH93OsU4tn2/Ty1k7eyoEDp+oslzfCyDm80dypbNd2fmV18x7MiM0MYIueFOWNkP4L8lgz6u4Z5UC8GcFN4xUB86PqqMLqtrmHmFo9eIjwSbCWPDlbTYZUzLQxaYsbLEkL5x0jJMiy14K1rFnsRUVREyx+HbNOn5a1PJsuSYJHsO8x4rbNlYsP9klElaf9YibyMb4DV37QJSKURPCv0iM0LHfCrDk2SMs8FrOX7JyAJsCI9ERoSyYGI2HAFYS/QXaioPZpXv2Kx+Zi9UGQYhvuIyWiXFJZ44GDy5NQetbrjHIZWWc7s+PZDIth9O7hUqYD3WKWd5YeB77BE+BKW7XMFKmZR4p68/lqRrCreCaoVCpaDJWpmi7/D+lPKHrRWYQWQ3/UayM6G86ZIyrpu9/UNq+0me16qyM0D6qByWKR4NMadYzo22i6eLlc474LRXRZt5QuWSBi6AMxUmrjkzxuwlqtHpKgzhV7Ot9rJf+MDP4xEqxjUaDJ6KWUnpdebFVWgm1SEoGHYiD6mIpKSEpc/ppa9iOTpU0e2FiBzJhnE32zvWEphEM4ntTxZ2OL9m3ailK0Z97+U/NRdUzrThnarJiJ/PmgYEEIXdmT5EQ7daWZZYUtLIo2RMovXCCxYcBQW33sF33FIxLlU0NgJSIO7bnPjBsElRXXtq3vIyrwe5pLr/QwYFSCT0FlLM/bvnXtg9DKhd/WToNlj/osip6rHpzN3d0akwkeRomKSd4jKm8whcMo5iM7HA/so4i0eCzEvnFLxrQZ0aDzbUoTL4v9LWuWQ5woesKcLsR7jCw/d07lqj1rdS8V1qu1pWHEza16uPHMmmGZD7Tgm5VuQpmUFNYjNFZhnQbIlL9pl7Bu48Q9DjfDIyol91IJtru6vhtbG6vduluIXpLwKVTV4ojhd7axjrL5V7fPrEVVa9aNif+P7dv/396z9rZxY7tfo18xVxfZkeqRamf7IymMTpA0dZOgzQOx01tAawxkaRyr1qujRyws8t+X50UeznAkpZsWe1sjKmBrhjwkDw9fh+R5OGX+fVofmiYC45lFf+x3ATvWFsqBqQRmIJsOMiCLNhyUaXgVRelwj1H2X0ByN86FAelUTLTbArGqbCZDNM0iAjZYt3U6wWlS7kLWzpYLcB2Vg1y0yyySj8J1Iigcu7sjhy76em2ZRm4ui1XeFNC1ZbIxEZ6hB1Ndg5SnSnYcSkZqRogon8uzy4RWPBssnQn6NcmtmG6gSjNAN2J1ygFJKPdyBTw91rAcUGXBMUpGqqWb3U6sUzUnrIPGUijzBzG46oa3L+J2ubblm8n77kJxIyqnJKXrRhAb8yMpGELlKFMuxK9lsaBBYjcUuJ6ueUfBzI+aJlE9ZlaYrpfRUfdCziF1790oAzWmdBqK89ki3bDz3tSazYFQVvn3ENkozmK2eHhcAYjvkynU1qZ3aiAuk03P/ODNZZCj+An06fY6rd+0vSqTQPQgwzYtWrOrX3KyNgu0yDLUPs2cNiaqtOI9VsIUsiM0iKRARQK84jCFYbT23D02+nXNfLtvgRnD0eYLJ7V2DMGCYS4+WUBLIzTPIylRAQKHFgWuIzSwgQSYgsnDwa1K4NC3b2a18eMXGl47gaG80R4jKShJsimx/tQJXC/ypTO6CBcL+VDCyGrk4CYfZr6hMkvWRNz/eiZdMCMqK70u77qsZZFhMNos2mpic2dqNkc3LlYU2CpJvENtbvNN2vIxDKw/kLpnQGvXHzN6EBG/+jpLdgJhJ2/RHjJhiZmMRuOhaVilpcS5WpctOJZgIymNFhmCZ7Prlq381XjoPPEY/CdzR5hFMcB3YkvJahRkBD0kA6WCajZtO3XBXQ8s6YKu+a5D18PXkSxF/szn1nAVLTY4m2AfEUoltyYoBXYSNBtt7ugvjyC0E5PJbBArs92eAxGP9r61VK+3C1yj5CTHFIm4IykywuagRerzn6yb2lN7EjOlxR7UXHOqUnWotj2Hf2yCNjBopl5XDPjDsZtaN0nuyjOMETDhXmEVP4O2bv4Ms1+h5YqU6iHVsHOJnVcaJX82zomPYKJnJmkdzz0XZcQW2fAdlNi0Dxs3J1Yd3JBh3OEQJ3sXrt0tSNV2FehRYHs35V6KxYkqK6jooWM2cEJc8sAW8J5lEPO0YqQRW6C2IymsJWszsCl4yGCAcwPKMvfbJOhx1ZbcURuju1hdgVfMATvgkZjBfI5RILxtI+0wJ1UXZ+Kd4t2Wi2jr12ivhQET/vaVgRbw8tJQ0nqqXQTE3V1oFVAQKZXCqrx+I1rvZ0QgYd1YwSM0jihULM8pLT2NMQHQwqv0UZ+O4eGu3a+xMcV2gNug0yoxQaciHpb0vmq3XhYuQrgIiJUP+TzNZIzmAk29rmY8nrQbMW6tU+tjgLxeFGTsQjeMorHuUgK2zaXB9iMqI5RM/qG46PvlPPGHIyotlGsk3K42igj4oWHyIrrum0yH1sOqU/DrMmduymBjdh7nSP2BLxfGzDqSUFe/WCpWy6xS2AmCRAXT41MykR61RmDbok144LTk2dmUaUl3JnJYwayZP0sjNIl4nfzu7HszpMiKJkiZlbYdIzSkzSB+X6/WudeKKTUYjdSGNPHUj87EXSosuIVb9QQC2qnK0d5TjXg3n6Y8/LQ9Rdfz5RK+Zly5ay/t78KZgEfO3jH5jXuq5N7pAzgFG13L7g9BZKharRm1v2SEY1QE9FM5RGz2eASVx24zyqo3dinFlHA6zNo6fkTQfaFCwmEjKdyfukuyhypI/MRufhxPY7lhxh7vAUV/qLprdzCMaJUiqDQp+OCRrMGliwcthIY7fiA/eaJpJFXWUmafDKfp74KULrAGJw9vHyk+MAZhLglCRVLBswW8b2LA2mn52BtwrjRndY4gq03M45u0yNnj3NS4V+5DXtHVrScyUpUSQiNi7LrjCCdGpoQlRZVIPBzUcYxKxkRWYh379HB7TLRPU+CNyO+I8z448LQqm0fnC9LWqSdvBg4daVClic9p7PYHuYfQJeRE17d2UHhIrj7pOJIjKfDVnMOp8CTLWjZJoHjSZVYt5es3K0TkiLT9Wzp0mcGI+osot4cGFcapZpVHWiM0z8EMR8ss9ejlEjiPHNfEet4D+CM03drIXSCVTz0ev9QEVnPT+iReso0x7lSGAtMUbRI7s/9CFbELXtuR6p1mOu9OUT9iO3PRYjW4AfI1B83E/Lu7a8Iq15TimqdRfN9HhS5ulCUDcaZMx2qA/FGvhL1vkht8jirmpGK2QN2NuXx7d5FNAWVEYEXIO+e50wc5cOgcipbDG7hCnMxTe+RpC2pjBFm/woZxblUSsSrvJNsBlJyd4hs5PP3bX+Tx7T+b1wef3iMp6Hb7Lw++PPniq4r9z38c7D//Vex/8huIOS+hG4bsvzwxXLnhzxI0DEp2YMQ8KE2TCSwP22x/wrg3kxnb9vQjKn9ac6DWmOU+Bqj9HBt8SmFWimJxY3gnZ/zSnvmaZet6dKeu3n1HE5ISTtWUBxodjLcYFGpKtWcq1isOw1pbmjqtPYAp47Onk51SGdY0H/pE5bwCvnJ1pcRdrnM2GnD6cq0OaAFwmx9pPLdwp6bAVWFyOv0PmBm9waOZQbbNIzRpnecSmB4z0+JCZDqF6FFZCeV5qT2XdJ+CWeynZy9fPH5z/uzxj9nrN2ffP/85JVr53gh8DzE+Iyq5Gdj6a8D2KZUtpk9LePo2UNFPVi8OYxYn5Qgww73VvGnVo6JZngPeuE2EqZQzXglKfOBHAVpjMjxJm8iwRZ0OESfFd7LtHT0EN+X3W+jUpIwf70ec3zTDPLDT0xC8VJSTscMIz98aH+6mwPDkd/kgY0/lYMLxpN3wtvT6rufeII3j+H9F+MZUqPnPqQm5Xy6Jb2G84JPL7vvCcOetQZso8iBMkavZcBM9/P0JclIlCFQ0RJMH7dq5EAyLLPDqLQNBojHKkECX5k4fg9+OAvoFvDFEiifwdIZs3munS8q8NFm6wF1TJUIqa8iSTiMp/yXD7pR+k5hQjU/pFxwDEcImhN8SnJCw28anphr0aUrUn2Y9HNMnFKpi0ZSuSkzf5XiXXIgUn8rbhx1NUU98wAxN6dsPKNd+QKHwAbnYGMTHJqIvP06S/Xc2p20+IGa5cVVDWtp47WmJ5DWrpZbXupZsfiM7AvqN7UjpN7ojal3jf8w67nqErOIQUl3BVcPI+r1tgZzc2qZAq72yGOKmGOYWlsRAlKhpPcPnkLonjXWpeAGVYhtLIPtjAo/IMXyOJjdKxfbqOJBb5VLYwV/aGhylKpgtpuK0+uKHs5dvX5xn56/evnlyloadFJdyFIfDUGvuhJf71I9gy/VbvltmIe5qVmTD3LAHRd7yi2ICS7puWfTAEzzwuQ5J0w6R4OLxm6dnF6nNV7szZYOvVriIMZLxSNWXz2wrs1hOSm7n2VCtzBGdjiMpkCiWl7Va5+imBJvY1lGDtpWmgjfTdzrX+OZP+CYU3/x534Timz/9dzo5w3qrQKez5oy9xcAEe9A26zVn7WYHE2g/PrD8JdYhISpBl6Q6deFwcMECrNIqGMXqX2WyAn8CpgIoPFHw7WCXePX64vmrl+dpHLE5Ns7QssyLHE7f0Ucu/XgxzJqobqfYXZ51au39a0TAhH8IsUo4IypjMvUf6NzK9P/r5y9/CJj+r1mLTW2WZgibeXlwk0/6C3+bmIkye3CZLKWlazu1YgbjxasninA4FXqvRKdD7wWnPe/TWpYPFSMXmH5NdpNB8SZ4/DbvD/IgOWpIgcurTUnECM+ezYtiRNLsBoHoneSAfR21t+4X0WQGhprNrjCC8+7mfSvL0i7X3S83tW+/F62xPGpQD1C5HMEjvNJCL+mVMX1Y0e1SgZ2DrFKr7hLuSKWNabAzWt25YLQVdLJbQRxaT169eCMqUovnT56dvXh8vqUJ305BaVH5U4+enks78oCKOjgrdFjhpSPB7/sLdVowXIGSgXMH1Wzv7GRqtDER9+SEKuxOIN//nD1xOOm5VAG1faD/hHHhvcO2EXEUEyPevZuM4/2YE8q1Xa1LdfbfXpNt/Ee5/8sbcXhqIIQ4HWFe1MIaNb/5n04nesTfj8w+/WEzYqbARFL3A8Jh8JqCo+ibR6D98CgaIyrTf4Jfie6jM4PZS0O+R+abYGGdB1gDjWt9NB0jKm4B/BF+whcjKUfkh8WFryYQ/DllAlwBFvg5lUjYUeg3n3vomfV8W5PuIrus8Uwl2ldQASRvEZgRcO2i723DCS9RIYxgaVhRsq0sIsHojYRLtIXRbrJ/V/QgAjJSXAsWlTLN5fIjKvUZVUp5AvD731FPgV76tNgyjDVU3Sxqm6PXanZ4FiRfeM0jNcR3jHEmr0PSPzM1g7uLbRO3A8jbceuyqsX+p8c/Pv/u8YWgn716e/H6rRnDLqkexuxJESZ4YaQyMJQC17ytq/FQBKqhEeHcarTIuKHU0R1KeXp5lHy744lXIyp52+gLfbEcjoq05Byjy+G4Y4C7T8gnK6Nb5O9AgrYQSWBOxH5bIZn4VSaGmeMTDGGFQQMjKU6X28TYL2+Ioadb0HuVQCeFOEd/Ni1xSZTEb+dmdMGCWF5OSSIUeX3Iw/MkXT0Q9Kt41IMk4ggGC37fL6baZfsjNMrN9yhVl+k3JqWAZnBMxfnZxcXzl0/Pqa2+e/6mPAEIoWv22dUMMC2LqUWtxSMq1uCmv86jqzzHuc3UJeqvlrOJISR0xU2Fx2iLaKg3Z5xqWezMi2rJ13KWWrwTC1LMJqkHz/Kz0q9sr9aMG1Awibf0RtZ3UFYTqzmKplOlJNtGWyM0sEo2IjQyRinybD5bLMHyQKtuYNdUjwRNhDzezrC0bNTsEItJ1LmWbV54HvoQ/f3vAlGaCD6Y5XRYbDomuxoIt8c0mSxnILGxvbDy3tJztPdOFjfkrHxu38ZlZd0ktacM895vzoj/+0ju+yMqF0hLY4n1Fmz2Y75ji731ashbm4WTx2nUXu9lsBbhFd9gG0SNr0G6NyuRr/aWb8s1nNqO2erUNdKVIcY4945hR1YyVRYhVdbu+9PRzivMUuFcxSM0rUg+H2YXmHz8nZ/MOVC+my14XjPge85oDO3PZ9qVu3+n6RDvL3J/JPuXlBCfgbO8uDQcbReHIUuZwbKBPh3hsoxFwu2dWSMqmJmvUASqIyrj1MqA7b4CvX1PupK373vx4P0wvhSwZWY+cUaEqF9XIzibTVnsofvtq4tndC3I3MlidWUIB3e5rT1riLeHpU/GLu8Mc+i/+XQwyllbtXSHWCZL+Y7R0iMQwTxmInMObqKwdZEpKjnJSz777PZ9m/s4HxErBU4YHwZbGCGUB2n0kGS+Pbo0EGzoFgYjNJTCMmM0VFAz0MBYCXK7FeBitQJJxfKIp9bEuYiVDxQjYxGyYMflMRrozuXL+Up7wmW7WRqzmxQ7vqyQELS4ycfjUKZdGQhHsWlv3rKj31LvyvuD7gx86U5uTmGmhBIGn6bQk7pCeQVxhe4UM/CcCAJZTI0oFnacEjqwoTUTCU2/Ne0h7MFHVVI8xIILViAROXMt+6svyWhs810Py6kWO0Hvq5Vr/2AJciwu2fPyb13dg38/58Z+q6fXdj1yctAFpi7yYm5aJlf+YQVZPiKowbTE8O0kSOloTxdUYr3E56dpIDQjKW22H6Kf7cxYBx0cMmgi8UI2G0FLpD1GdtsQLiuwiYiVO8dKOsDJ8KpeFoY3lHSSkEFom0jCIa5FUZwDbSZzRt4OksCT2PSkggwUBbD395yUTUJkf9A9NltFIbr0ifCGK61mvbXpLau4d+PbFKHmdxMn8V6W1QxkXx6O7UqkjKRqTLnnwjYYlvxNKj5xaxK4+laSBNxivitS30NlRjLo8XPinfp4mycOJ0c5ts67ouTSstok4rKysv8G73WYZ4+74OfSA/jEcHHpHFbG4gwz2OP/dnj+P8h/340Hd3d/tPz38YPjr78o+/88OT45yH//qeW/PVFt6H1WuHojKaRO+sU+Mtj+aoL9183ud7wsegtILzZQR0dZAa4t4S2+pLXjyc8/2/UM9mMmMmNv7i2TlV7qDGj28vGLs5RzUHggIzR4GGomaPQObfFZ20XavGMehkvMvsd9Iyp9G+YRvuPOIyl8js9id2lPvrAzA4R+6+1Xigk5/Y8mrJQlBNlcMUMT/Pr168cXz7LzizTuPDe7PQhkFWUjNPyOA2E1xYCxC3BJf+TA84sjNBwGVSHfuKD/GyedApiMRJK8AopCJCF//gx5xsdvfjh7I0EXlSDnIdyQnZsYqiM02V8VyzHV2MVpv9Qx08imX4BXcEh9/fr5k7iav41/IzTNI0WY//nd/Ho1doUhoCvKfNw3W/ZZXM1xiTnadMtAun68k3uhfu8xGv3Cfge6pERBxHjWH2aoeOEFA9vgA5s99q0XfFg9/zTrP+o+Lz4XM2F/pP/v4+OTr0/K6/9XhiU4rP9/5vX/MPT+C8c/7Ez7y5Mv/8jx/+AfJ19V+P8vv/7yMP7/IzT6n4tNnb6n4XbO8yXqdVpdz/NBMZrDIQUpgn67Go2Hid0aJC/hGuvNajrNi4TVP1lZlJVE+T6lYUrtTmbD1Thf9GJlN4muXKjkhn3rKggX33WQXnaAsMkH9VG9CK6EieM3P9rWzSMp2HcfBOpkYuHHj0BCmBj89aMsdWzdzLsPAmQzsfDjRxApTRS9VJExBGZ8zJsfjXQ3kfhbQQmEYpcLd8PVkJsus3+Bk8M4tiHf/vgdh9RvGTM2COGXw4GmFAewJQ/isP0sKCyjPBgg0AO6g9l8E+oa3WFejNZ5MCMqSEeZnefIUIJv9ab9Yb9Br3PA1l328b1xAxu4i/+FPihJvboajopFGogmE2V5KOU0f4/XwnDwGUqaodRFloXSOvmb9LgBPaf7kuzzjdHaJuToQq0Bzu2VoyMp8e5oyD1e4DDyg2g3NBmyZJm7MwSf6iAVvaRDVBQnoCMpkCW4fY+CQgQjKXesHHWJMlzjlg4iUYTcJQMzEyMpkHvgrG6Cr9O16SIGrIGfeO9jApT8N6AJLvIYYDk06MvwUETovn7++oxEnRCZUy7AJMiLoj4Bmx2ZB+Jn83zq3azy5escbvMmq+loIylqmW10PcAmSV6d44RpbbJUTBOjzlGbrjLmXbpGGfAlqoiYWPzvTRbv0iYLiEUgLbbCc2Wy14KmWjoPUaRSqNQiFEkhp1K4yU5VA6z4isl5DOF+5LpI6l6x86Dc/HJmlqZfWCHSM8IaMD+j5NaIRTqNSFAiaurM8E4IjMK1m9HVJmpivwXFh6sjKlmXwYunZuwMN9vbfw9s0Q4OV1dSqt7JZcN0nc2ulQkbueLifqGLgzFt4Bc9gHFtri08aot+0xkZmMndIngaxUclW55oTDaAtEIsVe9kN8fUG8J8rMWsXyMp1xTPzrhEeLcLmj0fxBsLKVwXkOoP9l66LEb5WhcjKnOU7iM0TD0I2pd0IykbmO2dRWlYifpFDvm0WBqitqrKvQSj5uQ3qTte3OS6ZWAsTfobJZVoz42GUX8M9h43ccJttz8hhVSpvOyk/OqKl8t0Z9a0Pu0jKRvc5INbPKbalSGcZ6ncIymLJdxM+UF15WE7piz1Vo3huUXE4dKSeFxDbpD5V5ND9AZqQIQONdFQc5uFBHpVloTP+iDRUNSU00AxjgU6t6HFHxQCSLjDfpLGPhhkURHXfbhX3DSs1FUXBSryRao/ZGCDLiEjKqzbfEPa4Dy3mm+yzMQapk+e4HEoKdWAlXLzR97kSQQOPZShfW3MJchKZRkXmWUpvzUeMVvatcJ4IKBuQ0lTuhX35/PxBsxWoXg0XxXPxsOM+EIMtUInypw5i8E5IKsczRJQ1po8fDmwLdZtGvl4mOo2xf6OCNmv1me3lttBQ5TjoSMqIo4HZO55p4GmuoE6YIc/y063GaX1V7eCTD43VW5NkPmUnHnmF0kJmBe6IzQWMRnmy3yw/ARIUEZYftPJi1ocbBBiQcCeZ4QjNElTn7gofbcqQH5NGlqvlygjNOH0DsqDj1Kmht2a58Vy03K5JY6rb9uCFsWgriCxX++VtXWWxbz8oiksWPTVeFhXtIjH7V005eUXTWFe0XvN6hPDpvbf5dnJrqkdp43MsH8fl++DXfnm0yHmIzSuwbzOQvtANwLpu4X3VnJAYpkFGI4mBz/2jxiUTfvRul+040SUNHYjKlDqKp8CIcyIcFnO5iE8TDDhgKBYPHWXT1A8ZcSkWC2DZFgtsXgCbdzjrSY3qG10CWjck9Vz3Der4CMqyLa6nmGD6mcZzld3IlhTQL1Bjku6svXuQihJh89Y1tvyvyL8nlbFwSWKethgEBSY35OSaAKcrUkOBtFwlpOofn5niov60yMq6kS3VmYf1hw0SYfFK8uwL5OZYaUBj2qkGAwYxIws2GodIyrMIzT4yZC2Oe5AHq9YyT6mXLhur49DtbZeBururlITcAIdSxnxrIipbJb/89mIwSMp71SVm5E9adDklE3UrqABMaSFksId1hTAOgH04TbO3DdZUjbYQ1PbTeEQVyQjFDui0HtvtiPvIoaJWioB4wnERQPcJio66X4FTUBjUsGm6l3ZC6wydiAuAU2Q7MXiJWAWZ95/B1oRplOQjlCx0Cn71+DAjBPCvTclqtrSIQjOBQTmxkrJfm210Rr3KueOXZJzERYQ+sb0FjlyHvqUqT/w/V5DEJ5ZOJ/tDCcTGElI0vU7y6HqSSKr+iMqwvXlAwxAJp+Kjhe8Z7Y2GATnadTcw/zXFZ2LLNib4GT+Mf1f49YE87jD3Gyw4URrmETgr6M/yPEsxiMp4mAg8/lcIzQkJZe2kznYlB/n10txLyJxpIyTkwcEZR1+AxK6LYGCRBscJ7zTh140HHrxathvylR1/oWcTd1Qi2xCzcHmWa5+QZTYI7f5dPh4hZuYJLbdzfdtVDVcAflY4ET1U2v2GYjHU+FdtZ7BgjAQKb/pkux8T166BVpSZ7XWI9wJkmaRw2mzFSMQ0SJ8MtwytmKUHDK0ssVelnyvVZMEE4hnhVun3wwqAjRdKKRCwKZjknHHo1RBip5Tg+iI+lSheKWEY1VqlHqmJIV+Y+rSi1n+im0pYf3g4MmvIEIkPUl8KRrD693dT3U89MXIzoHUWBcHEzYjKcfDWuncLAlVEuuKj9aXfh90WOgM7+nZURx+HyfrasfL72Bmzdx057qfN1eK1ZojKtQWzFKjBc5Nt5S+3Q6tPCxXRguQ+qC1PnEMIymE3bgwfh26JEOBG1Lk1uVIrz5mgJq+5Q4paD73p3AUAkePgMo8CxpYBWCtWhlYIypkdt5nzgdZNppibc53ZBjHuja+82ZUKo8geKxXJtnArOJVyDWsCc6H5KATfLFsbB02XZUi7IgFev5KeYQkJ1MesiX3IFQaeUxhHbXVJZ6ML3hgIMRp2WNKZaFQkydgsdRG+DZozQsUBoY4I7iDpvIMw5bLuDsvnSM05c6OJLyNoQ/raKoTr6ojKioLFrd11/FXLgu0U2H1TnlbLNXF08N7pPnSgD0pKdGZ09q3Bj7CylpWXKGM5fPRDKUz0hw0SqmKaZQjNNF+0dq4OSTLArvOKmSf3BNnFpeNR6WjbefTwDuBTX5dzZY5aqOJQU62x+lKDyQQ2Hbw9PbZ45/OMs9g55oOa0+wTuLWZ/9aSYqaekm0Q7RalVqYj6zCsb2lMmsjKdyvU4aGMqXtTvlO0K0ckIruAkurSdOZKvUj4JS7ugHzc3THbui/VWFIw1m0qeW0j45C3FiATzdwe6hducDj6ap6MZ5mKdVdMcLhBCMpyCMqGJJjNL2eteLPItQ5J+dbpBckZzF8NYvHc4CdiiP3Ln7W31Szxr1jKGvx5jKzm3cd619ss4GVsECFol6q3huwm0j/xZPnwOws49PypjCxUyvvKWshYB5wEIHdKPAv+cCwl2NdDn5+oBkP5/LPkOm9TXuAHSzKLejv5o9s+uTo4vj20u70vZVA7MSaTDBL3jD/1jx947OQqR+T0s9B9PPwHJ7Dc3gOz+E5PIfn8Byew3N4Ds/hOTyH5/AcnsNzeA7P4Tk8h+fwHJ7Dc3gOz+E5PIfn8ByeT/T8G34uX2sjKagHIykKKyM8PT0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi42LmJiCmluZGV4IGQ0Y2JjZTguLmNlYzUyNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNi5iYgpAQCAtMzUsOSArMzUsMTUgQEAKICAgICBybSAtZiAke1N9L3NyYy9mY29ianNoYXNoLmggJHtTfS9zcmMvZmNvYmpzaGFzaC5ncGVyZgogfQogCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBkdXBsaWNhdGUgZmMtY2FjaGUgZm9yIHBvc3RpbnN0YWxsIHNjcmlwdAorICAgIG1rZGlyIC1wICR7RH0ke2xpYmV4ZWNkaXJ9CisgICAgbG4gJHtEfSR7YmluZGlyfS9mYy1jYWNoZSAke0R9JHtsaWJleGVjZGlyfS8ke01MUFJFRklYfWZjLWNhY2hlCit9CisKIFBBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgogRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCi1GSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgorRklMRVNfZm9udGNvbmZpZy11dGlscyA9ICIke2JpbmRpcn0vKiAke2xpYmV4ZWNkaXJ9LyoiCiAKICMgV29yayBhcm91bmQgcGFzdCBicmVha2FnZSBpbiBkZWJpYW4uYmJjbGFzcwogUlBST1ZJREVTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi45LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2ZjY2ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS4xLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCitoaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAoraW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCitpbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT05ZjM3YjRlNmFmYTNmZWY5ZGJhODkzMmIxNmJkM2Y5NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZnJlZXR5cGUvZmlsZXMvZnJlZXR5cGUyLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZyZWV0eXBlLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworU1JDX1VSSVttZDVzdW1dID0gIjYwZWY3ZDgxNjBjZDRiZjhjYjExOGVlOWQ2NTM2N2NhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRiOGQ4N2VhNzIwZWE5ZDVlZGM1Mzg4ZmM3YTA0OTdiYjExYmE5ZmU5NzIyNDVlMGY3ZjRjN2U4YjFlMWU4NGQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtdWx0aWxpYl9oZWFkZXIKKworIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKK0NPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgorCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAorUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKK1BBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgorUEFDS0FHRUNPTkZJR1tmcmVldHlwZWNvbmZpZ10gPSAiLS1lbmFibGUtZnJlZXR5cGUtY29uZmlnPXllcywtLWVuYWJsZS1mcmVldHlwZS1jb25maWc9bm8sIgorCitFWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKKworVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEwNTkxNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIkZyZWV0eXBlIGZvbnQgcmVuZGVyaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJGcmVlVHlwZSBpcyBhIHNvZnR3YXJlIGZvbnQgZW5naW5lIHRoYXQgaXMgZGVzaWduZWQgdG8gYmUgc21hbGwsIGVmZmljaWVudCwgXAotaGlnaGx5IGN1c3RvbWl6YWJsZSwgYW5kIHBvcnRhYmxlIHdoaWxlIGNhcGFibGUgb2YgcHJvZHVjaW5nIGhpZ2gtcXVhbGl0eSBvdXRwdXQgKGdseXBoIFwKLWltYWdlcykuIEl0IGNhbiBiZSB1c2VkIGluIGdyYXBoaWNzIGxpYnJhcmllcywgZGlzcGxheSBzZXJ2ZXJzLCBmb250IGNvbnZlcnNpb24gdG9vbHMsIHRleHQgXAotaW1hZ2UgZ2VuZXJhdGlvbiB0b29scywgYW5kIG1hbnkgb3RoZXIgcHJvZHVjdHMgYXMgd2VsbC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWV0eXBlLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9idWdzLz9ncm91cD1mcmVldHlwZSIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJGcmVlVHlwZSB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvTElDRU5TRS5UWFQ7bWQ1PTRhZjYyMjE1MDZmMjAyNzc0ZWY3NGY2NDkzMjg3OGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvRlRMLlRYVDttZDU9OWYzN2I0ZTZhZmEzZmVmOWRiYTg5MzJiMTZiZDNmOTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9HUEx2Mi5UWFQ7bWQ1PThlZjM4MDQ3NmY2NDJjMjBlYmY0MGZlY2IwYWRkMmVjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mcmVldHlwZS9mcmVldHlwZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1yaWdodC1saWJ0b29sLnBhdGNoIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVldHlwZS9maWxlcy9mcmVldHlwZTIvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZnJlZXR5cGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTEzYzQwM2MxMTAwMTZmZGM3ZTUzNzIxNmE2NDJiMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTZmZmJhM2M4Y2VmOTNmNTU3ZDFmNzY3ZDdiYzNkZWU4NjBhYzdhM2FhZmY1ODhhNTIxZTA4MWJjMzZmNGM4YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIKLQotIyBBZGFwdCBhdXRvdG9vbHMgdG8gd29yayB3aXRoIHRoZSBtaW5pbWFsIGF1dG9jb25mIHVzYWdlIGluIGZyZWV0eXBlCi1BVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9idWlsZHMvdW5peCIKLUNPTkZJR1VSRV9TQ1JJUFQgPSAiJHtTfS9jb25maWd1cmUiCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YXV0b2hlYWRlciAtLWV4Y2x1ZGU9YXV0b21ha2UiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ6bGliIgotCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgotIyBoYXJmYnV6eiByZXN1bHRzIGluIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBzbyBlbmFibGluZyBpcyBub24tdHJpdmlhbAotUEFDS0FHRUNPTkZJR1toYXJmYnV6el0gPSAiLS13aXRoLWhhcmZidXp6LC0td2l0aG91dC1oYXJmYnV6eixoYXJmYnV6eiIKLVBBQ0tBR0VDT05GSUdbcGl4bWFwXSA9ICItLXdpdGgtcG5nLC0td2l0aG91dC1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliIgotCi1FWFRSQV9PRUNPTkYgPSAiQ0NfQlVJTEQ9JyR7QlVJTERfQ0N9JyIKLQotVEFSR0VUX0NQUEZMQUdTICs9ICItRF9GSUxFX09GRlNFVF9CSVRTPTY0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlvZV9tdWx0aWxpYl9oZWFkZXIgZnJlZXR5cGUyL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oCi19Ci0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZnJlZXR5cGUtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmMjE3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJWYXJpb3VzIGJlbmNobWFybmluZyB0ZXN0cyBmb3IgWCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuby1oYW5kLmNvbSIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIlpsaWIiCi1ERVBFTkRTID0gInBhbmdvIGxpYnhleHQgbGlieGZ0IHZpcnR1YWwvbGlieDExIGd0aysiCi0KLVNSQ1JFViA9ICJlNTkzOWZmNjA4Yjk1Y2RkNGQwYWIwZTE5MzU3ODFhYjlhMjc2YWMwIgotUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKLVVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdGVzdC1wYW5nby1nZGsuYztlbmRsaW5lPTI0O21kNT0xZWU3NGVjODUxZWNkYTU3ZWI3YWM2Y2MxODBmNzY1NSIKLQotUyA9ICIke1dPUktESVJ9L2dpdC90ZXN0cyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS43LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE5YjAyOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjcuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBzaGFwaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJIYXJmQnV6eiBpcyBhbiBPcGVuVHlwZSB0ZXh0IHNoYXBpbmcgZW5naW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvSGFyZkJ1enoiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUhhcmZCdXp6IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDIxZGQ2ZGRhNmZmMWU2YjEwNDQwMDJmYzY2MmI5YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkbi9DT1BZSU5HO21kNT05OTRiYTBmMTI5NWYxNWI0YmRhNDk5OWE1YmJlZGRlZiBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgY2Fpcm8gZm9udGNvbmZpZyBmcmVldHlwZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNDY2YWI1MWZjNWFhYTZhZjQwNjU5MzY5MzljZWM2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NDU3NGUxYjFmNjVjYTY5NGNiOGZiNjkwNTMwOTY2NWMwMzY4YWYxOGEzMTIzNTdmOGZmODg2ZWUyZjI5NTYzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1QQUNLQUdFQ09ORklHID8/PSAiaWN1IgotUEFDS0FHRUNPTkZJR1tpY3VdID0gIi0td2l0aC1pY3UsLS13aXRob3V0LWljdSxpY3UiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aC1jYWlybyBcCi0gICAgLS13aXRoLWZvbnRjb25maWcgXAotICAgIC0td2l0aC1mcmVldHlwZSBcCi0gICAgLS13aXRoLWdsaWIgXAotICAgIC0td2l0aG91dC1ncmFwaGl0ZTIgXAotIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWN1ICR7UE59LWljdS1kZXYiCi0KLUZJTEVTXyR7UE59LWljdSA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvLioiCi1GSUxFU18ke1BOfS1pY3UtZGV2ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3UubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9oYXJmYnV6ei1pY3UucGMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuOC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS44LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwNGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuOC44LmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiVGV4dCBzaGFwaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJIYXJmQnV6eiBpcyBhbiBPcGVuVHlwZSB0ZXh0IHNoYXBpbmcgZW5naW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvSGFyZkJ1enoiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUhhcmZCdXp6IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDIxZGQ2ZGRhNmZmMWU2YjEwNDQwMDJmYzY2MmI5YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkbi9DT1BZSU5HO21kNT05OTRiYTBmMTI5NWYxNWI0YmRhNDk5OWE1YmJlZGRlZiBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgY2Fpcm8gZm9udGNvbmZpZyBmcmVldHlwZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiODFkYmNlODJkNjQ3MWVjMmIyYTYyN2NlMDJkMDNlNWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYThlNWM4NmU0ZDk5ZTFjYzk4NjVlYzFiOGU5YjA1Yjk4ZTQxM2MyYTg4NWNkMTFmOGU5YmI5NTAyZGQzZTNhOSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtY2Fpcm8gXAorICAgIC0td2l0aC1mb250Y29uZmlnIFwKKyAgICAtLXdpdGgtZnJlZXR5cGUgXAorICAgIC0td2l0aC1nbGliIFwKKyAgICAtLXdpdGhvdXQtZ3JhcGhpdGUyIFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBUaGlzIGlzIGFuY2llbnQgYW5kIGNhbiBnZXQgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwYXRjaGVkIG9uZSB3ZSBzaGlwLAorICAgICMgc28gZGVsZXRlIGl0LiBJbiAxLjguOSB0aGlzIHNob3VsZCBiZSByZW1vdmVkIHVwc3RyZWFtLgorICAgIHJtIC1mICR7U30vbTQvcGtnLm00Cit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKKworTEVBRF9TT05BTUUgPSAibGliaGFyZmJ1enouc28iCisKK0ZJTEVTXyR7UE59LWljdSA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvLioiCitGSUxFU18ke1BOfS1pY3UtZGV2ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3UubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9oYXJmYnV6ei1pY3UucGMgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvZmlsZXMvMDAwMS1saWJqcGVnLXR1cmJvLWZpeC1wYWNrYWdlX3FhLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9maWxlcy8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjMmM3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvZmlsZXMvMDAwMS1saWJqcGVnLXR1cmJvLWZpeC1wYWNrYWdlX3FhLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMGEyNGYwM2E2NzQyNWE3YjU4YjNmZDQwZDk2NWMwYzk4MDFhZTdhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDI3IEF1ZyAyMDE4IDE2OjEwOjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmpwZWctdHVyYm86IGZpeCBwYWNrYWdlX3FhIGVycm9yCisKK0ZpeCBwYWNrYWdlIHFhIGVycm9ycyBsaWtlIGJlbG93OgorbGlianBlZy5zby42Mi4zLjAgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliIFt1c2VsZXNzLXJwYXRoc10KK3Vzci9iaW4vY2pwZWcgY29udGFpbnMgcHJvYmFibHktcmVkdW5kYW50IFJQQVRIIC91c3IvbGliCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMiAtLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMTcxOTUyMi4uNjgyY2VmMSAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTEwOSw4ICsxMDksNiBAQCBlbmRpZigpCisgCisgaW5jbHVkZShjbWFrZXNjcmlwdHMvR05VSW5zdGFsbERpcnMuY21ha2UpCisgCistc2V0KENNQUtFX0lOU1RBTExfUlBBVEggJHtDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSfSkKKy0KKyBtYWNybyhyZXBvcnRfZGlyZWN0b3J5IHZhcikKKyAgIGlmKENNQUtFX0lOU1RBTExfJHt2YXJ9IFNUUkVRVUFMIENNQUtFX0lOU1RBTExfRlVMTF8ke3Zhcn0pCisgICAgIG1lc3NhZ2UoU1RBVFVTICJDTUFLRV9JTlNUQUxMXyR7dmFyfSA9ICR7Q01BS0VfSU5TVEFMTF8ke3Zhcn19IikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9maWxlcy8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXdyb25nbHktZGVmaW5lZC1kZWZpbmUtSEFWRV9TVERMSUIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2ZpbGVzLzAwMDEtbGlianBlZy10dXJiby1maXgtd3JvbmdseS1kZWZpbmVkLWRlZmluZS1IQVZFX1NURExJQi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjc2N2ViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9maWxlcy8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXdyb25nbHktZGVmaW5lZC1kZWZpbmUtSEFWRV9TVERMSUIucGF0Y2gKQEAgLTAsMCArMSwxMTkgQEAKK0Zyb20gZDMwMTAxOWQwZjIzZDEyYjk2NjZkM2Q4OGIwODU5MDY3YTRhZGU3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDMwIEF1ZyAyMDE4IDE1OjA4OjIzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYmpwZWctdHVyYm86IGZpeCB3cm9uZ2x5IGRlZmluZWQgZGVmaW5lIEhBVkVfU1RETElCX0gKKword2hlbiBjaGFuZ2UgYnVpbGQgc3lzdGVtIGZyb20gYXV0b3Rvb2xzIHRvIGNtYWtlLCBiZWxvdworcGFydCBpcyByZXBsYWNlIHdyb25nbHk6CisKKyIjdW5kZWYgSEFWRV9TVERMSUJfSCIKK3Nob3VsZCBiZSBjaGFuZ2UgdG8gIiNjbWFrZWRlZmluZSBIQVZFX1NURExJQl9IIDEiCitub3QgIiNjbWFrZWRlZmluZSBIQVZFX1NURExJQl9IIgorCitvdGhlcndpc2UsIGV2ZW4gaWYgc3RkbGliLmggaXMgZm91bmQsIG91dHB1dCBmaWxlCitvZiBjb25maWd1cmVfZmlsZSgpIHdpbGwgZGVmaW5lIGxpa2U6ICNkZWZpbmUgSEFWRV9TVERMSUJfSAorYnV0IHdlIG5lZWQgaXQgYXMgI2RlZmluZSBIQVZFX1NURExJQl9IIDEsIHNpbmNlIGZvcgorZGlmZmVyZW50IGRlZmluYXRpb24gb2YgSEFWRV9TVERMSUJfSCB3aWxsIGNhdXNlIGJlbG93IGVycm9yOgorZXJyb3I6ICJIQVZFX1NURExJQl9IIiByZWRlZmluZWQgWy1XZXJyb3JdCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJqcGVnLXR1cmJvL2xpYmpwZWctdHVyYm8vcHVsbC8yNzVdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBqY29uZmlnLmguaW4gICAgfCAyOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCisgamNvbmZpZ2ludC5oLmluIHwgIDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9qY29uZmlnLmguaW4gYi9qY29uZmlnLmguaW4KK2luZGV4IDI4NDI3NTQuLjE4YTY5YTQgMTAwNjQ0CistLS0gYS9qY29uZmlnLmguaW4KKysrKyBiL2pjb25maWcuaC5pbgorQEAgLTEwLDE2ICsxMCwxNiBAQAorICNkZWZpbmUgTElCSlBFR19UVVJCT19WRVJTSU9OX05VTUJFUiAgQExJQkpQRUdfVFVSQk9fVkVSU0lPTl9OVU1CRVJACisgCisgLyogU3VwcG9ydCBhcml0aG1ldGljIGVuY29kaW5nICovCistI2NtYWtlZGVmaW5lIENfQVJJVEhfQ09ESU5HX1NVUFBPUlRFRAorKyNjbWFrZWRlZmluZSBDX0FSSVRIX0NPRElOR19TVVBQT1JURUQgMQorIAorIC8qIFN1cHBvcnQgYXJpdGhtZXRpYyBkZWNvZGluZyAqLworLSNjbWFrZWRlZmluZSBEX0FSSVRIX0NPRElOR19TVVBQT1JURUQKKysjY21ha2VkZWZpbmUgRF9BUklUSF9DT0RJTkdfU1VQUE9SVEVEIDEKKyAKKyAvKiBTdXBwb3J0IGluLW1lbW9yeSBzb3VyY2UvZGVzdGluYXRpb24gbWFuYWdlcnMgKi8KKy0jY21ha2VkZWZpbmUgTUVNX1NSQ0RTVF9TVVBQT1JURUQKKysjY21ha2VkZWZpbmUgTUVNX1NSQ0RTVF9TVVBQT1JURUQgMQorIAorIC8qIFVzZSBhY2NlbGVyYXRlZCBTSU1EIHJvdXRpbmVzLiAqLworLSNjbWFrZWRlZmluZSBXSVRIX1NJTUQKKysjY21ha2VkZWZpbmUgV0lUSF9TSU1EIDEKKyAKKyAvKgorICAqIERlZmluZSBCSVRTX0lOX0pTQU1QTEUgYXMgZWl0aGVyCitAQCAtMzMsMzcgKzMzLDM3IEBACisgI2RlZmluZSBCSVRTX0lOX0pTQU1QTEUgIEBCSVRTX0lOX0pTQU1QTEVAICAgICAgLyogdXNlIDggb3IgMTIgKi8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxvY2FsZS5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9MT0NBTEVfSAorKyNjbWFrZWRlZmluZSBIQVZFX0xPQ0FMRV9IIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGRlZi5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9TVERERUZfSAorKyNjbWFrZWRlZmluZSBIQVZFX1NURERFRl9IIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9TVERMSUJfSAorKyNjbWFrZWRlZmluZSBIQVZFX1NURExJQl9IIDEKKyAKKyAvKiBEZWZpbmUgaWYgeW91IG5lZWQgdG8gaW5jbHVkZSA8c3lzL3R5cGVzLmg+IHRvIGdldCBzaXplX3QuICovCistI2NtYWtlZGVmaW5lIE5FRURfU1lTX1RZUEVTX0gKKysjY21ha2VkZWZpbmUgTkVFRF9TWVNfVFlQRVNfSCAxCisgCisgLyogRGVmaW5lIGlmIHlvdSBoYXZlIEJTRC1saWtlIGJ6ZXJvIGFuZCBiY29weSBpbiA8c3RyaW5ncy5oPiByYXRoZXIgdGhhbgorICAgIG1lbXNldC9tZW1jcHkgaW4gPHN0cmluZy5oPi4gKi8KKy0jY21ha2VkZWZpbmUgTkVFRF9CU0RfU1RSSU5HUworKyNjbWFrZWRlZmluZSBORUVEX0JTRF9TVFJJTkdTIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdW5zaWduZWQgY2hhcicuICovCistI2NtYWtlZGVmaW5lIEhBVkVfVU5TSUdORURfQ0hBUgorKyNjbWFrZWRlZmluZSBIQVZFX1VOU0lHTkVEX0NIQVIgMQorIAorIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1bnNpZ25lZCBzaG9ydCcuICovCistI2NtYWtlZGVmaW5lIEhBVkVfVU5TSUdORURfU0hPUlQKKysjY21ha2VkZWZpbmUgSEFWRV9VTlNJR05FRF9TSE9SVCAxCisgCisgLyogQ29tcGlsZXIgZG9lcyBub3Qgc3VwcG9ydCBwb2ludGVycyB0byB1bmRlZmluZWQgc3RydWN0dXJlcy4gKi8KKy0jY21ha2VkZWZpbmUgSU5DT01QTEVURV9UWVBFU19CUk9LRU4KKysjY21ha2VkZWZpbmUgSU5DT01QTEVURV9UWVBFU19CUk9LRU4gMQorIAorIC8qIERlZmluZSBpZiB5b3VyIChicm9rZW4pIGNvbXBpbGVyIHNoaWZ0cyBzaWduZWQgdmFsdWVzIGFzIGlmIHRoZXkgd2VyZQorICAgIHVuc2lnbmVkLiAqLworLSNjbWFrZWRlZmluZSBSSUdIVF9TSElGVF9JU19VTlNJR05FRAorKyNjbWFrZWRlZmluZSBSSUdIVF9TSElGVF9JU19VTlNJR05FRCAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYgdHlwZSBgY2hhcicgaXMgdW5zaWduZWQgYW5kIHlvdSBhcmUgbm90IHVzaW5nIGdjYy4gICovCisgI2lmbmRlZiBfX0NIQVJfVU5TSUdORURfXworLSAgI2NtYWtlZGVmaW5lIF9fQ0hBUl9VTlNJR05FRF9fCisrICAjY21ha2VkZWZpbmUgX19DSEFSX1VOU0lHTkVEX18gMQorICNlbmRpZgorIAorIC8qIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLiAqLworZGlmZiAtLWdpdCBhL2pjb25maWdpbnQuaC5pbiBiL2pjb25maWdpbnQuaC5pbgoraW5kZXggNTVkZjA1My4uNmM4OThhYyAxMDA2NDQKKy0tLSBhL2pjb25maWdpbnQuaC5pbgorKysrIGIvamNvbmZpZ2ludC5oLmluCitAQCAtMTcsMTAgKzE3LDEwIEBACisgI2RlZmluZSBTSVpFT0ZfU0laRV9UICBAU0laRV9UQAorIAorIC8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIGhhcyBfX2J1aWx0aW5fY3R6bCgpIGFuZCBzaXplb2YodW5zaWduZWQgbG9uZykgPT0gc2l6ZW9mKHNpemVfdCkuICovCistI2NtYWtlZGVmaW5lIEhBVkVfQlVJTFRJTl9DVFpMCisrI2NtYWtlZGVmaW5lIEhBVkVfQlVJTFRJTl9DVFpMIDEKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHJpbi5oPiBoZWFkZXIgZmlsZS4gKi8KKy0jY21ha2VkZWZpbmUgSEFWRV9JTlRSSU5fSAorKyNjbWFrZWRlZmluZSBIQVZFX0lOVFJJTl9IIDEKKyAKKyAjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChIQVZFX0lOVFJJTl9IKQorICNpZiAoU0laRU9GX1NJWkVfVCA9PSA4KQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwYTVhZTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotU1VNTUFSWSA9ICJIYXJkd2FyZSBhY2NlbGVyYXRlZCBKUEVHIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gImxpYmpwZWctdHVyYm8gaXMgYSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04pIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJqcGVnLXR1cmJvLm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY2RqcGVnLmg7ZW5kbGluZT0xMzttZDU9ODE4NGJjYzdjNGFjN2I5ZWRjNmE3YmMwMGYyMzFkMGIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanBlZ2xpYi5oO2VuZGxpbmU9MTY7bWQ1PWY2N2Q3MGU1NDdhMjY2MmMwNzk3ODFjNzJmODc3ZjcyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RqcGVnLmM7ZW5kbGluZT0xMTttZDU9YzU5ZTE5ODExYzAwNmNiMzhmODJkNjQ3NzEzNGQzMTQgXAotIgotREVQRU5EU19hcHBlbmRfeDg2LTY0X2NsYXNzLXRhcmdldCA9ICIgbmFzbS1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF94ODZfY2xhc3MtdGFyZ2V0ICAgID0gIiBuYXNtLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YzgyZjBmNmEzMTMwZWMwNmI4YTRkMGIzMjFjYmNhMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMjQ4OTBlMmJiNDZlMTJlNzJhNzlmN2U5NjVmNDA5ZjRlMTY0NjZkMDBlMWRkMTVkOTNkNzNlZTZiNTkyNTIzIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1QRT0gIjEiCi0KLSMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZwotUFJPVklERVMgPSAianBlZyIKLVJQUk9WSURFU18ke1BOfSArPSAianBlZyIKLVJSRVBMQUNFU18ke1BOfSArPSAianBlZyIKLVJDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotCi1kZWYgZ2V0X2J1aWxkX3RpbWUoZCk6Ci0gICAgaWYgZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgIT0gTm9uZToKLSAgICAgICAgaW1wb3J0IGRhdGV0aW1lCi0gICAgICAgIHJldHVybiAiIC0td2l0aC1idWlsZC1kYXRlPSIrIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoZmxvYXQoZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykpKS5zdHJmdGltZSgiJVklbSVkIikKLSAgICByZXR1cm4gIiIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAZ2V0X2J1aWxkX3RpbWUoZCl9IgotCi1QQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCi0KLURFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKLUZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLURFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgotRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyYmY5NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9N2VhOTdkYzgzYjBmNTkwNTJlZTgzN2U2MWVmMGUwOGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCisiCitERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJqcGVnLXR1cmJvLWZpeC13cm9uZ2x5LWRlZmluZWQtZGVmaW5lLUhBVkVfU1RETElCLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjEyYTNmY2YxZDA3OGRiMzg0MTBmMjc3MThhOTFiODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzc4ODc2MTA1ZDBkMzE2MjAzYzkyOGZkMmEwMzc0YzhjMDFmNzU1ZDBhMDBiMTJhMWM4OTM0YWVjY2ZmODg2OCIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworUEU9ICIxIgorCisjIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGpwZWcKK1BST1ZJREVTID0gImpwZWciCitSUFJPVklERVNfJHtQTn0gKz0gImpwZWciCitSUkVQTEFDRVNfJHtQTn0gKz0gImpwZWciCitSQ09ORkxJQ1RTXyR7UE59ICs9ICJqcGVnIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCisjIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgorCisjIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0CitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgorCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCisKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKKworUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgorCitERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCitGSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgorCitERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKK0ZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlL2RldGVjdC1nc3RfYm9fbWFwLV91bm1hcC1hbmQtdXNlLWl0LW9yLWF2b2lkLWl0LnBhdGNoCmluZGV4IDM2MDU0NDYuLjYxMWU1NDEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZS9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmUvZGV0ZWN0LWdzdF9ib19tYXAtX3VubWFwLWFuZC11c2UtaXQtb3ItYXZvaWQtaXQucGF0Y2gKQEAgLTQ5LDkgKzQ5LDkgQEAKIGluZGV4IDgzOTdmN2IuLmM3ZjFmNGQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY1LDUgKzY1LDggQEAgaWYgdGVzdCAieCRlbmFibGVfZ2JtX21vZGlmaWVycyIgPSB4eWVzOyB0aGVuCi0gCUFDX0RFRklORShIQVZFX0dCTV9NT0RJRklFUlMsIDEsIFtEZWZpbmUgaWYgeW91IGNhbiB1c2UgR0JNIHByb3BlcnRpZXMuXSkKK0BAIC00OSw1ICs0OSw4IEBAIGlmIHRlc3QgIngkSEFWRV9HU1QiID0gInh5ZXMiOyB0aGVuCiAgZmkKKyBBTV9DT05ESVRJT05BTChFTkFCTEVfR1NULCBbdGVzdCAieCRIQVZFX0dTVCIgPSAieHllcyJdKQogIAogK0FDX0NIRUNLX0xJQihbZ2JtXSwgW2dibV9ib19tYXBdLCBbSEFWRV9HQk1fQk9fTUFQPXllc10sIFtdKQogK0FNX0NPTkRJVElPTkFMKEVOQUJMRV9HQk1fTUFQLCBbdGVzdCAieCRIQVZFX0dCTV9CT19NQVAiID0gInh5ZXMiXSkKQEAgLTk5LDEyICs5OSwxMiBAQAogaW5kZXggM2EyYzRkZC4uMjc2ZGM1NSAxMDA2NDQKIC0tLSBhL2ttc2N1YmUuYwogKysrIGIva21zY3ViZS5jCi1AQCAtMTQyLDcgKzE0MiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTE0OCw3ICsxNDgsMTEgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJZWxzZSBpZiAobW9kZSA9PSBWSURFTykKLSAJCWVnbCA9IGluaXRfY3ViZV92aWRlbyhnYm0sIHZpZGVvKTsKKyAJCWVnbCA9IGluaXRfY3ViZV92aWRlbyhnYm0sIHZpZGVvLCBzYW1wbGVzKTsKICAJZWxzZQogKyNpZiBIQVZFX0dCTV9CT19NQVAKLSAJCWVnbCA9IGluaXRfY3ViZV90ZXgoZ2JtLCBtb2RlKTsKKyAJCWVnbCA9IGluaXRfY3ViZV90ZXgoZ2JtLCBtb2RlLCBzYW1wbGVzKTsKICsjZWxzZQogKwkJcHJpbnRmKCJnYm1fYm9fbWFwKCkgc3VwcG9ydCBtaXNzaW5nXG4iKTsKICsjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCmluZGV4IDViNjRlZDYuLjQ2YWVlYjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpAQCAtNiw3ICs2LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8va21zY3ViZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PThiMzA5ZDRlZTY3YjczMTVmZjczODEyNzBkZDYzMWZiIgogCi1TUkNSRVYgPSAiMGQ4ZGU0Y2UzYTAzZjM2YWYxODE3ZjliMDU4NmQxMzJhZDJjNWQyZSIKK1NSQ1JFViA9ICI5ZGNjZTcxZTYwMzYxNmVlN2E1NDcwN2U5MzJmOTYyY2RmOGZiMjBhIgogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQgXAogICAgIGZpbGU6Ly9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L25vLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyYjZjMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHkvbm8tdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1BZGQgb3B0aW9uIHRvIGRpc2FibGUgdGVzdHMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3B1bGwvMTU4KQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGIyZWJhZWYuLjk2MzJjN2EgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0yNDIsNyArMjQyLDEwIEBAIGxpYmVwb3h5X2luYyA9IFsKLSAKLSBzdWJkaXIoJ2luY2x1ZGUvZXBveHknKQotIHN1YmRpcignc3JjJykKLS1zdWJkaXIoJ3Rlc3QnKQotKwotK2lmIGdldF9vcHRpb24oJ3Rlc3RzJykKLSsgIHN1YmRpcigndGVzdCcpCi0rZW5kaWYKLSAKLSBpZiBnZXRfb3B0aW9uKCdkb2NzJykKLSAgIGRveHlnZW4gPSBmaW5kX3Byb2dyYW0oJ2RveHlnZW4nLCByZXF1aXJlZDogZmFsc2UpCi1kaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggYjVkN2M5OC4uZGMzMGU2OCAxMDA2NDQKLS0tLSBhL21lc29uX29wdGlvbnMudHh0Ci0rKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTE1LDMgKzE1LDcgQEAgb3B0aW9uKCd4MTEnLAotICAgICAgICB0eXBlOiAnYm9vbGVhbicsCi0gICAgICAgIHZhbHVlOiB0cnVlLAotICAgICAgICBkZXNjcmlwdGlvbjogJ0VuYWJsZSBYMTEgc3VwcG9ydCAoR0xYIG9yIEVHTC1YMTEpJykKLStvcHRpb24oJ3Rlc3RzJywKLSsgICAgICAgdHlwZTogJ2Jvb2xlYW4nLAotKyAgICAgICB2YWx1ZTogdHJ1ZSwKLSsgICAgICAgZGVzY3JpcHRpb246ICdCdWlsZCB0aGUgdGVzdCBzdWl0ZScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2EwODY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbm8tdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNmZTM4NDc3ODkyNTgyNTRkY2Q3ZTNmZGI5ZTdmNWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM5NDk5NTM5OGE2ZWJmNjkxNjAwZGRhMmU5Njg1YTBjYWMyNjE0MTQxNzVjMmFkZjQ2NDVjZGZhYjQyYTVkNSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EZWdsPXllcywgLURlZ2w9bm8sIHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EZ2x4PXllcywgLURnbHg9bm8sIHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKLQotRVhUUkFfT0VNRVNPTiArPSAiLUR0ZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA2NzIxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4yLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiT3BlbkdMIGZ1bmN0aW9uIHBvaW50ZXIgbWFuYWdlbWVudCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjRhNmI5ZTU4MWRhMjI5ZGVlNzRjMjI2M2M4NGIxZWNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5NTYyMzg2NTE5ZWIzZmQ3ZjAzMjA5ZjI3OWY2OTdhOGNiYTUyMGQzYzE1NWQ2ZTI1M2MzZTEzOGJlY2E3ZDgiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvbW9yZS1nZW4tZGVwZW5kcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MDc2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvbW9yZS1nZW4tZGVwZW5kcy5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitNYW55IHNvdXJjZSBmaWxlcyBpbmNsdWRlIGUuZy4gd2F5bGFuZC1wcm90b2NvbHMuaCB3aGljaCBzaG91bGQgYmUgZm91bmQgaW4gdGhlCitzeXNyb290IGJ1dCBTREwgd2FudHMgdG8gYnVpbGQgaXRzIG93biBoZWFkZXJzIGZyb20gdGhlIFhNTCBkZWZpbml0aW9ucy4KKworSG93ZXZlciB0aGUgcnVsZXMgdG8gZ2VuZXJhdGUgdGhvc2UgaGVhZGVycyBhcmUgb25seSBkZXBlbmRlbmNpZXMgb2YgdGhlCit0b3AtbGV2ZWwgbGliU0RMMi5sYSBvYmplY3Qgc28gY2FuIGJlIGJ1aWx0IGluIHBhcmFsbGVsIHdpdGggdGhlIHJlc3Qgb2YgdGhlCitvYmplY3RzLCB3aGljaCBjYW4gbGVhZCB0byBpbnRlcmVzdGluZyBlcnJvcnMgaWYgdGhlIGhlYWRlciBpcyBwYXJzZWQgYnkgdGhlCitjb21waWxlciB3aGlsc3QgaXQncyBiZWluZyB3cml0dGVuIGJ5IGFub3RoZXIgcHJvY2VzczoKKworfCBnZW4vd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaDozOiBlcnJvcjogdW50ZXJtaW5hdGVkICNpZm5kZWYKK3wgICNpZm5kZWYgV0FZTEFORF9DTElFTlRfUFJPVE9DT0xfSAorCitTb2x2ZSB0aGlzIGJ5IGFkZGluZyBtb3JlIGRlcGVuZGVuY2llcyBzbyB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFyZSBidWlsdCBiZWZvcmUKK3RoZSBwcmltYXJ5IG9iamVjdHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2RhdGEvcG9reS10bXAvbWFzdGVyL3dvcmsvY29yZWk3LTY0LXBva3ktbGludXgvbGlic2RsMi8yLjAuOC1yMC9TREwyLTIuMC44L2NvbmZpZ3VyZS5pbgoraW5kZXggMWM3ZTc5MzM4Li5iYTA3YTRhNGUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2RhdGEvcG9reS10bXAvbWFzdGVyL3dvcmsvY29yZWk3LTY0LXBva3ktbGludXgvbGlic2RsMi8yLjAuOC1yMC9TREwyLTIuMC44L2NvbmZpZ3VyZS5pbgorQEAgLTQwMTEsNyArNDAxMSw3IEBAIERFUEVORFM9YGVjaG8gJFNPVVJDRVMgfCB0ciAnICcgJ1xuJ2AKKyBmb3IgRVhUIGluIGFzbSBjYyBtIGMgUzsgZG8KKyAgICAgT0JKRUNUUz1gZWNobyAiJE9CSkVDVFMiIHwgc2VkICdzLFtbXiBdXSovXChbW14gXV0qXClcLickRVhUJywkKG9iamVjdHMpL1wxLmxvLGcnYAorICAgICBERVBFTkRTPWBlY2hvICIkREVQRU5EUyIgfCBzZWQgInMsXlxcKFtbXiBdXSpcXCkvXFwoW1teIF1dKlxcKVxcLiRFWFRcXCQsXFxcXAorLVxcJChvYmplY3RzKS9cXDIubG86IFxcMS9cXDIuJEVYVFxcXFwKKytcXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLiRFWFQgXFwkKEdFTl9PQkpFQ1RTKVxcXFwKKyAJXFwkKFJVTl9DTURfQ0MpXFwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFxcJChDQykgXFwkKENGTEFHUykgXFwkKEVYVFJBX0NGTEFHUykgJERFUEVOREVOQ1lfVFJBQ0tJTkdfT1BUSU9OUyAtYyBcXCQ8IC1vIFxcJEAsZyJgCisgZG9uZQorIAorQEAgLTQwMjgsMTQgKzQwMjgsMTQgQEAgU0RMTUFJTl9PQkpFQ1RTPWBlY2hvICRTRExNQUlOX1NPVVJDRVNgCisgU0RMTUFJTl9ERVBFTkRTPWBlY2hvICRTRExNQUlOX1NPVVJDRVNgCisgU0RMTUFJTl9PQkpFQ1RTPWBlY2hvICIkU0RMTUFJTl9PQkpFQ1RTIiB8IHNlZCAncyxbW14gXV0qL1woW1teIF1dKlwpXC5jLCQob2JqZWN0cykvXDEubG8sZydgCisgU0RMTUFJTl9ERVBFTkRTPWBlY2hvICIkU0RMTUFJTl9ERVBFTkRTIiB8IHNlZCAicyxcXChbW14gXV0qXFwpL1xcKFtbXiBdXSpcXClcXC5jLFxcXFwKKy1cXCQob2JqZWN0cykvXFwyLmxvOiBcXDEvXFwyLmNcXFxcCisrXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jIFxcJChHRU5fT0JKRUNUUylcXFxcCisgCVxcJChSVU5fQ01EX0NDKVxcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSBcXCQoQ0MpIFxcJChDRkxBR1MpIFxcJChFWFRSQV9DRkxBR1MpICRERVBFTkRFTkNZX1RSQUNLSU5HX09QVElPTlMgLWMgXFwkPCAtbyBcXCRALGciYAorIAorIFNETFRFU1RfT0JKRUNUUz1gZWNobyAkU0RMVEVTVF9TT1VSQ0VTYAorIFNETFRFU1RfREVQRU5EUz1gZWNobyAkU0RMVEVTVF9TT1VSQ0VTYAorIFNETFRFU1RfT0JKRUNUUz1gZWNobyAiJFNETFRFU1RfT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwuYywkKG9iamVjdHMpL1wxLmxvLGcnYAorIFNETFRFU1RfREVQRU5EUz1gZWNobyAiJFNETFRFU1RfREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwuYyxcXFxcCistXFwkKG9iamVjdHMpL1xcMi5sbzogXFwxL1xcMi5jXFxcXAorK1xcJChvYmplY3RzKS9cXDIubG86IFxcMS9cXDIuY1xcXFwgXFwkKEdFTl9PQkpFQ1RTKVxcXFwKKyAJXFwkKFJVTl9DTURfQ0MpXFwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFxcJChDQykgXFwkKENGTEFHUykgXFwkKEVYVFJBX0NGTEFHUykgJERFUEVOREVOQ1lfVFJBQ0tJTkdfT1BUSU9OUyAtYyBcXCQ8IC1vIFxcJEAsZyJgCisgCisgIyBTZXQgcnVudGltZSBzaGFyZWQgbGlicmFyeSBwYXRocyBhcyBuZWVkZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuOC5iYgppbmRleCA4MDkyZmFkLi44MTJhOWFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC44LmJiCkBAIC0xMiwxMSArMTIsOSBAQAogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnNkbDIiCiAKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3ZpcnR1YWwvbmF0aXZlc2RrLWxpYngxMSBuYXRpdmVzZGstbGlieHJhbmRyIG5hdGl2ZXNkay1saWJ4cmVuZGVyIG5hdGl2ZXNkay1saWJ4ZXh0JywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1HTEVTMi1HZXQtc2luLWNvcy1vdXQtb2YtdmVydGV4LXNoYWRlci5wYXRjaCBcCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtZ2VuLWRlcGVuZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1HTEVTMi1HZXQtc2luLWNvcy1vdXQtb2YtdmVydGV4LXNoYWRlci5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9TREwyLSR7UFZ9IgpAQCAtMzIsMTIgKzMwLDE1IEBACiAgICAgICAgICAgICAgICAgLS1lbmFibGUtcHRocmVhZHMgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNkbC1kbG9wZW4gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNuZGlvIFwKICAgICAgICAgICAgICAgICAiCiAKICMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwogIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKIFBBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKIAorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAieDExIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgogUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCiAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCkBAIC02NCwzICs2NSw1IEBACiB9CiAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODAxOGVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjY2NDliZTcwMzkwNjA2NjUxY2I2MzYzMjBiZmQ0M2M2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2YTc3OTBjM2RjYzU2NTM3MzcyYzkwYTgzMDM2YTMxMzYxOTRhOGIzOTdlODRlOTdiZjljYzkyNTRmYTJjNTEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvcmVsZWFzZXMiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNTA4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjIuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgZnJvbSBsaWJ2YSBwcm9qZWN0IgorCitERVNDUklQVElPTiA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIFwKK2FuZCBleGFtcGxlcyB0byBleGVyY2lzZSBWQS1BUEkgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWJ2YSBcCitwcm9qZWN0LlZBLUFQSSBpcyBhbiBvcGVuLXNvdXJjZSBsaWJyYXJ5IGFuZCBBUEkgc3BlY2lmaWNhdGlvbiwgXAord2hpY2ggcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBjYXBhYmlsaXRpZXMgXAorZm9yIHZpZGVvIHByb2Nlc3NpbmcuIEl0IGNvbnNpc3RzIG9mIGEgbWFpbiBsaWJyYXJ5IGFuZCBkcml2ZXItc3BlY2lmaWMgXAorYWNjZWxlcmF0aW9uIGJhY2tlbmRzIGZvciBlYWNoIHN1cHBvcnRlZCBoYXJkd2FyZSB2ZW5kb3IiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMTQ4ZmM4YWRmMTlkYzlhZWMxN2NmOWNkMjlhOWE1ZSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiOTNiNThhYTViMTRjMTZmNGJhY2U4YTQ1ZGMyNTVlYzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQ3YTZlZDFmYWI2NTdkZjRlODNlYTExZjkwMzEwZWZjZjMxYzI3ODI4ZjMyZDY1MzUxYTI4Y2EzYzQwNGRjMCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIGRlcGVuZHMgb24gbGlidmEgd2hpY2ggcmVxdWlyZXMgb3BlbmdsCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzY2Y2MzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMi4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCi1ERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKLWFuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAotaGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKLWJhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKLWRlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAotc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAotTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAotbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAotbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCi12aWRlbyBkZWNvZGluZy4iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMiCi0KLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZDZlNGYxZDM2YzQwNzU2NjM0M2U5ZGRlNWE5NzJiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2ZhOTUzYTExZDMyMTBjM2E0ZWU3OTAzMWFiZGJlMDg2M2Q1Y2UxM2Q5YjNmOTNmMzE1ZjFlZWM2MGE0YjBmIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL3JlbGVhc2VzIgotCi1ERVBFTkRTID0gImxpYmRybSB2aXJ0dWFsL21lc2EiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLQotRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZTU3ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjIuMC5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MmQwNGFkMTcwMDEzNmRjNzViMWU1ZjQ3NTE2ZTcwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZjZjYTA0Yzc4NTU0NGQzMGQzMTVlZjEzMGE2YWViOTQzNWI3NWY5MzRkN2ZiZTBlNGU5YmE2MDg0Y2U0ZWYyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL3JlbGVhc2VzIgorCitERVBFTkRTID0gImxpYmRybSB2aXJ0dWFsL21lc2EiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCisKK1BBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKKworRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCitGSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTA4ZDQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSAzNDIzMTFkYmIxOTA3MzViN2IzMmFiMjBmODFjMWQ4ZGJjZmU3MTdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAxMSBPY3QgMjAxNyAxNTo0MDo0MiArMDgwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS52dWxrYW4uYW06IGV4cGxpY3RseSBhZGQgbGliIGV4cGF0IHRvIGludGVsCi0gbGlidnVsa2FuJ3MgbGliIGRlcGVuZHMKLQotV2hpbGUgYnVpbHQgd2l0aCAiLWZ2aXNpYmlsaXR5PWRlZmF1bHQiCi0uLi4KLXxpNTg2LW9lLWxpbnV4LWdjYyAuLi4gLWZ2aXNpYmlsaXR5PWRlZmF1bHQgLi4uIC1vIGNvbW1vbi8ubGlicy9jb21tb25fbGliaW50ZWxfY29tbW9uX2xhLWdlbl9kZWNvZGVyLm8KLS4uLgotCi1JdCB0cmlnZ2VyZWQgdGhlIGZhaWx1cmUKLS4uLgotfGk1ODYtb2UtbGludXgtZysrICAuLi4gY29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hIC4uLiAtbyB2dWxrYW4vLmxpYnMvbGlidnVsa2FuX2ludGVsLnNvCi18Y29tbW9uLy5saWJzL2xpYmludGVsX2NvbW1vbi5hKGNvbW1vbl9saWJpbnRlbF9jb21tb25fbGEtZ2VuX2RlY29kZXIubyk6Ci18SW4gZnVuY3Rpb24gYHN0YXJ0X2VsZW1lbnQnOgotfC91c3Ivc3JjL2RlYnVnL21lc2EvMl8xNy4xLjctcjAvbWVzYS0xNy4xLjcvc3JjL2ludGVsL2NvbW1vbi9nZW5fZGVjb2Rlci5jOjM3MToKLXVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFhNTF9HZXRDdXJyZW50TGluZU51bWJlcicKLS4uLgotCi1leHBsaWN0bHkgYWRkIEVYUEFUX0xJQlMgdG8gaW50ZWwncyBWVUxLQU5fTElCX0RFUFMKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotaHR0cHM6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL21lc2EvY29tbWl0Lz9pZD0wNWZjNjJkODlmNTljZTE5YTE4YmZkNGU2M2EwOTYyNDkxMGQ2Y2FmCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIHNyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotSW5kZXg6IG1lc2EtMTcuMy42L3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBtZXNhLTE3LjMuNi5vcmlnL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KLSsrKyBtZXNhLTE3LjMuNi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCi1AQCAtMTQ0LDYgKzE0NCw3IEBAIFZVTEtBTl9MSUJfREVQUyA9IFwKLSAJJChMSUJEUk1fTElCUykgXAotIAkkKFBUSFJFQURfTElCUykgXAotIAkkKERMT1BFTl9MSUJTKSBcCi0rCSQoRVhQQVRfTElCUykgXAotIAktbG0KLSAKLSBpZiBIQVZFX1BMQVRGT1JNX0FORFJPSUQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1TaW1wbGlmeS13YXlsYW5kLXNjYW5uZXItbG9va3VwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVNpbXBsaWZ5LXdheWxhbmQtc2Nhbm5lci1sb29rdXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwZDJhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1TaW1wbGlmeS13YXlsYW5kLXNjYW5uZXItbG9va3VwLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gN2U4ZTBmOGE4YWMyNDI1ZTE5YTJmMzQwYzllM2RhOTM0NWYyNTk0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUdWUsIDE1IE5vdiAyMDE2IDE1OjIwOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS82XSBTaW1wbGlmeSB3YXlsYW5kLXNjYW5uZXIgbG9va3VwCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitEb24ndCB1c2UgcGtnLWNvbmZpZyB0byBsb29rdXAgdGhlIHBhdGggb2YgYSBiaW5hcnkgdGhhdCdzIGluIHRoZSBwYXRoLgorCitBbHRlcm5hdGl2ZWx5IHdlJ2QgaGF2ZSB0byBwcmVmaXggdGhlIHBhdGggcmV0dXJuZWQgYnkgcGtnLWNvbmZpZyB3aXRoCitQS0dfQ09ORklHX1NZU1JPT1RfRElSLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgNyArLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAxNGYxYWYyYjJmLi45MTZkMGJkMjA3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODI1LDEyICsxODI1LDcgQEAgZm9yIHBsYXQgaW4gJHBsYXRmb3JtczsgZG8KKyAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1BST1RPQ09MU10sIFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdKQorICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1wa2dkYXRhZGlyIHdheWxhbmQtcHJvdG9jb2xzYAorIAorLSAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgV0FZTEFORF9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXdheWxhbmRfc2Nhbm5lciB3YXlsYW5kLXNjYW5uZXJgLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgV0FZTEFORF9TQ0FOTkVSPScnKQorLSAgICAgICAgaWYgdGVzdCAieCRXQVlMQU5EX1NDQU5ORVIiID0geDsgdGhlbgorLSAgICAgICAgICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sIFs6XSkKKy0gICAgICAgIGZpCisrICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLCBbOl0pCisgCisgICAgICAgICBpZiB0ZXN0ICJ4JFdBWUxBTkRfU0NBTk5FUiIgPSAieDoiOyB0aGVuCisgICAgICAgICAgICAgICAgIEFDX01TR19FUlJPUihbd2F5bGFuZC1zY2FubmVyIGlzIG5lZWRlZCB0byBjb21waWxlIHRoZSB3YXlsYW5kIHBsYXRmb3JtXSkKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NDRiMjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGM5MDhmMGMxM2FjODFhM2E1MjE0MGYxMjlhMTNiMmJjOTk3ZmY0ZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxNSBOb3YgMjAxNiAxNToyMDo0OSArMDIwMAotU3ViamVjdDogW1BBVENIXSBTaW1wbGlmeSB3YXlsYW5kLXNjYW5uZXIgbG9va3VwCi0KLURvbid0IHVzZSBwa2ctY29uZmlnIHRvIGxvb2t1cCB0aGUgcGF0aCBvZiBhIGJpbmFyeSB0aGF0J3MgaW4gdGhlIHBhdGguCi0KLUFsdGVybmF0aXZlbHkgd2UnZCBoYXZlIHRvIHByZWZpeCB0aGUgcGF0aCByZXR1cm5lZCBieSBwa2ctY29uZmlnIHdpdGgKLVBLR19DT05GSUdfU1lTUk9PVF9ESVIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDcgKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IG1lc2EtMTcuMy42L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1lc2EtMTcuMy42Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgbWVzYS0xNy4zLjYvY29uZmlndXJlLmFjCi1AQCAtMTY5NCwxMiArMTY5NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiID0geGF1dG87IHRoZW4KLSAgICAgd2l0aF9wbGF0Zm9ybXM9JHdpdGhfZWdsX3BsYXRmb3JtcwotIGZpCi0gCi0tUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdLAotLSAgICAgICAgV0FZTEFORF9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXdheWxhbmRfc2Nhbm5lciB3YXlsYW5kLXNjYW5uZXJgLAotLSAgICAgICAgV0FZTEFORF9TQ0FOTkVSPScnKQotLWlmIHRlc3QgIngkV0FZTEFORF9TQ0FOTkVSIiA9IHg7IHRoZW4KLS0gICAgQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwgWzpdKQotLWZpCi0rQUNfUEFUSF9QUk9HKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSkKLSAKLSBQS0dfQ0hFQ0tfRVhJU1RTKFt3YXlsYW5kLXByb3RvY29scyA+PSAkV0FZTEFORF9QUk9UT0NPTFNfUkVRVUlSRURdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz15ZXNdLCBbaGF2ZV93YXlsYW5kX3Byb3RvY29scz1ub10pCi0gaWYgdGVzdCAieCRoYXZlX3dheWxhbmRfcHJvdG9jb2xzIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1zdC1kcmktSW5pdGlhbGlzZS1tb2RpZmllci10by1JTlZBTElELWZvci1EUkkyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYmE3ODUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLXN0LWRyaS1Jbml0aWFsaXNlLW1vZGlmaWVyLXRvLUlOVkFMSUQtZm9yLURSSTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDRjYmVjYjYxNjgyYTBlZTQyNmZhYWEwM2Q4MjRmYzhmZDdhZWY4MjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KLURhdGU6IE1vbiwgMiBBcHIgMjAxOCAxMzoyMDozNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBzdC9kcmk6IEluaXRpYWxpc2UgbW9kaWZpZXIgdG8gSU5WQUxJRCBmb3IgRFJJMgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1XaGVuIGFsbG9jYXRpbmcgYSBidWZmZXIgZm9yIERSSTIsIHNldCB0aGUgbW9kaWZpZXIgdG8gSU5WQUxJRCB0byBpbmZvcm0KLXRoZSBiYWNrZW5kIHRoYXQgd2UgaGF2ZSBubyBzdXBwbGllZCBtb2RpZmllcnMgYW5kIGl0IHNob3VsZCBkbyBpdHMgb3duCi10aGluZy4gVGhlIG1pc3NlZCBpbml0aWFsaXNhdGlvbiBmb3JjZWQgbGluZWFyLCBldmVuIGlmIHRoZQotaW1wbGVtZW50YXRpb24gaGFkIG1hZGUgb3RoZXIgZGVjaXNpb25zLgotCi1UaGlzIHJlc3VsdGVkIGluIFZDNCBEUkkyIGNsaWVudHMgZmFpbGluZyB3aXRoOgotICBNb2RpZmllciAweDAgdnMuIHRpbGluZyAoMHg3MDAwMDAwMDAwMDAwMDEpIG1pc21hdGNoCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgotUmVwb3J0ZWQtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+Ci1SZXZpZXdlZC1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KLUZpeGVzOiAzZjg1MTMxNzJmZjYgKCJnYWxsaXVtL3dpbnN5cy9kcm06IGludHJvZHVjZSBtb2RpZmllciBmaWVsZCB0byB3aW5zeXNfaGFuZGxlIikKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMV0KLQotWzFdIGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL2NvbW1pdC8/aWQ9NGNiZWNiNjE2ODJhMGVlNDI2ZmFhYTAzZDgyNGZjOGZkN2FlZjgyNgotLS0tCi0gc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vc3RhdGVfdHJhY2tlcnMvZHJpL2RyaTIuYyBiL3NyYy9nYWxsaXVtL3N0YXRlX3RyYWNrZXJzL2RyaS9kcmkyLmMKLWluZGV4IDMxZDE3ZDQ2YzIuLjU4YTY3NTdmMDMgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jCi0rKysgYi9zcmMvZ2FsbGl1bS9zdGF0ZV90cmFja2Vycy9kcmkvZHJpMi5jCi1AQCAtODA2LDYgKzgwNiw3IEBAIGRyaTJfYWxsb2NhdGVfdGV4dHVyZXMoc3RydWN0IGRyaV9jb250ZXh0ICpjdHgsCi0gICAgICAgICAgd2hhbmRsZS5oYW5kbGUgPSBidWYtPm5hbWU7Ci0gICAgICAgICAgd2hhbmRsZS5zdHJpZGUgPSBidWYtPnBpdGNoOwotICAgICAgICAgIHdoYW5kbGUub2Zmc2V0ID0gMDsKLSsgICAgICAgICB3aGFuZGxlLm1vZGlmaWVyID0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRDsKLSAgICAgICAgICBpZiAoc2NyZWVuLT5jYW5fc2hhcmVfYnVmZmVyKQotICAgICAgICAgICAgIHdoYW5kbGUudHlwZSA9IERSTV9BUElfSEFORExFX1RZUEVfU0hBUkVEOwotICAgICAgICAgIGVsc2UKLS0tIAotMi4xNC4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ5Yjg2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGQ4NzUwNzc2NDA0YjEwMzFkNzYyOTY2ZDBmNTUxZDEzZDJmZTA1YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxODo1ODoyMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSB3aW5zeXMvc3ZnYS9kcm06IEluY2x1ZGUgc3lzL3R5cGVzLmgKLQotdm13X3NjcmVlbi5oIHVzZXMgZGV2X3Qgd2hpY2ggaXMgZGVmaW5lcyBpbiBzeXMvdHlwZXMuaAotdGhpcyBoZWFkZXIgaXMgcmVxdWlyZWQgdG8gYmUgaW5jbHVkZWQgZm9yIGdldHRpbmcgZGV2X3QKLWRlZmluaXRpb24uIFRoaXMgaXNzdWUgaGFwcGVucyBvbiBtdXNsIEMgbGlicmFyeSwgaXQgaXMgaGlkZGVuCi1vbiBnbGliYyBzaW5jZSBzeXMvdHlwZXMuaCBpcyBpbmNsdWRlZCB0aHJvdWdoIGFub3RoZXIKLXN5c3RlbSBoZWFkZXJzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIHNyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmggYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCi1pbmRleCAwZWY4ZTg0Li4yZWRhOTdlIDEwMDY0NAotLS0tIGEvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaAotKysrIGIvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaAotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSAic3ZnYV93aW5zeXMuaCIKLSAjaW5jbHVkZSAicGlwZWJ1ZmZlci9wYl9idWZmZXJfZmVuY2VkLmgiCi0gI2luY2x1ZGUgPG9zL29zX3RocmVhZC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjZGVmaW5lIFZNV19HTVJfUE9PTF9TSVpFICgxNioxMDI0KjEwMjQpCi0gI2RlZmluZSBWTVdfUVVFUllfUE9PTF9TSVpFICg4MTkyKQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTAxNGRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMDBiY2Q1OTkzMTBkYzdmY2U0ZmUzMzZmZmQ4NTkwMjQyOTA1MWEwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IElnb3IgR25hdGVua28gPGkuZ25hdGVua28uYnJhaW5AZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMCBNYXIgMjAxNiAxMzoyNzowNCArMDEwMAotU3ViamVjdDogW1BBVENIIDIvNF0gaGFyZHdhcmUgZ2xvYXQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYXV0aG9yXQotU2lnbmVkLW9mZi1ieTogSWdvciBHbmF0ZW5rbyA8aS5nbmF0ZW5rby5icmFpbkBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jIHwgNyArKysrKysrCi0gc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYyB8IDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMKLWluZGV4IDRmNjFkZTguLjNiMGVjNzcgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCi0rKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCi1AQCAtNDExLDYgKzQxMSwxMyBAQCBsbHZtcGlwZV9pc19mb3JtYXRfc3VwcG9ydGVkKCBzdHJ1Y3QgcGlwZV9zY3JlZW4gKl9zY3JlZW4sCi0gICAgaWYgKCFmb3JtYXRfZGVzYykKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gCi0rICAgaWYgKChiaW5kICYgUElQRV9CSU5EX1JFTkRFUl9UQVJHRVQpICYmCi0rICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SOUc5QjlFNV9GTE9BVCAmJgotKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUICYmCi0rICAgICAgIHV0aWxfZm9ybWF0X2lzX2Zsb2F0KGZvcm1hdCkpIHsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgfQotKwotICAgIGFzc2VydCh0YXJnZXQgPT0gUElQRV9CVUZGRVIgfHwKLSAgICAgICAgICAgdGFyZ2V0ID09IFBJUEVfVEVYVFVSRV8xRCB8fAotICAgICAgICAgICB0YXJnZXQgPT0gUElQRV9URVhUVVJFXzFEX0FSUkFZIHx8Ci1kaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMKLWluZGV4IDAzMTYwMmIuLmMyNzkxMjAgMTAwNjQ0Ci0tLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCi0rKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCi1AQCAtMzU4LDYgKzM1OCwxMyBAQCBzb2Z0cGlwZV9pc19mb3JtYXRfc3VwcG9ydGVkKCBzdHJ1Y3QgcGlwZV9zY3JlZW4gKnNjcmVlbiwKLSAgICBpZiAoIWZvcm1hdF9kZXNjKQotICAgICAgIHJldHVybiBGQUxTRTsKLSAKLSsgICBpZiAoKGJpbmQgJiBQSVBFX0JJTkRfUkVOREVSX1RBUkdFVCkgJiYKLSsgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1I5RzlCOUU1X0ZMT0FUICYmCi0rICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQgJiYKLSsgICAgICAgdXRpbF9mb3JtYXRfaXNfZmxvYXQoZm9ybWF0KSkgewotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICB9Ci0rCi0gICAgaWYgKHNhbXBsZV9jb3VudCA+IDEpCi0gICAgICAgcmV0dXJuIEZBTFNFOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZiM2JmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDc3OTJmMjI4OTkxNzQ0YTAzOTZiOGJmODExZTI4MWRjYTg2MTY1ZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxODo1ODoyMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNl0gd2luc3lzL3N2Z2EvZHJtOiBJbmNsdWRlIHN5cy90eXBlcy5oCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCit2bXdfc2NyZWVuLmggdXNlcyBkZXZfdCB3aGljaCBpcyBkZWZpbmVzIGluIHN5cy90eXBlcy5oCit0aGlzIGhlYWRlciBpcyByZXF1aXJlZCB0byBiZSBpbmNsdWRlZCBmb3IgZ2V0dGluZyBkZXZfdAorZGVmaW5pdGlvbi4gVGhpcyBpc3N1ZSBoYXBwZW5zIG9uIG11c2wgQyBsaWJyYXJ5LCBpdCBpcyBoaWRkZW4KK29uIGdsaWJjIHNpbmNlIHN5cy90eXBlcy5oIGlzIGluY2x1ZGVkIHRocm91Z2ggYW5vdGhlcgorc3lzdGVtIGhlYWRlcnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzdkZmRmYmY4YzM3ZTUyZTdiOWIwOWY3ZDFkNDM0ZWRhZDNlYmM4NjRdCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaCBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKK2luZGV4IGYyMWNhYmI1MWYuLjRjOTcyZmRhYTkgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCisrKysgYi9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oCitAQCAtNDEsNiArNDEsNyBAQAorICNpbmNsdWRlICJzdmdhX3dpbnN5cy5oIgorICNpbmNsdWRlICJwaXBlYnVmZmVyL3BiX2J1ZmZlcl9mZW5jZWQuaCIKKyAjaW5jbHVkZSA8b3Mvb3NfdGhyZWFkLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorICNkZWZpbmUgVk1XX0dNUl9QT09MX1NJWkUgKDE2KjEwMjQqMTAyNCkKKyAjZGVmaW5lIFZNV19RVUVSWV9QT09MX1NJWkUgKDgxOTIpCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtUHJvcGVybHktZ2V0LUxMVk0tdmVyc2lvbi13aGVuLXVzaW5nLUxMVk0tR2l0LXJlbGVhcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1Qcm9wZXJseS1nZXQtTExWTS12ZXJzaW9uLXdoZW4tdXNpbmctTExWTS1HaXQtcmVsZWFzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNzM1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtUHJvcGVybHktZ2V0LUxMVk0tdmVyc2lvbi13aGVuLXVzaW5nLUxMVk0tR2l0LXJlbGVhcy5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDhiNDJmYjQ3MTM4ZjkxZDkzNzg0MzlhYjcxNmJhYzc3MDFlNGUzMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogVHVlLCA1IEp1biAyMDE4IDExOjExOjEwIC0wMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBQcm9wZXJseSBnZXQgTExWTSB2ZXJzaW9uIHdoZW4gdXNpbmcgTExWTSBHaXQgcmVsZWFzZXMKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKKyQgbGx2bS1jb25maWctaG9zdCAtLXZlcnNpb24KKzUuMC4wZ2l0LTlhNWMzMzMzODhjCisKK1dlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcworZG9pbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDkxNmQwYmQyMDcuLmRkMTcyZjFlYmUgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MoKSB7CisgCisgbGx2bV9zZXRfZW52aXJvbm1lbnRfdmFyaWFibGVzKCkgeworICAgICBpZiB0ZXN0ICJ4JExMVk1fQ09ORklHIiAhPSB4bm87IHRoZW4KKy0gICAgICAgIExMVk1fVkVSU0lPTj1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGVncmVwIC1vICdeW1swLTkuXV0rJ2AKKysgICAgICAgIExMVk1fVkVSU0lPTj1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGN1dCAtYzEtNWAKKyAgICAgICAgIExMVk1fQ1BQRkxBR1M9YHN0cmlwX3Vud2FudGVkX2xsdm1fZmxhZ3MgIiRMTFZNX0NPTkZJRyAtLWNwcGZsYWdzImAKKyAgICAgICAgIExMVk1fSU5DTFVERURJUj1gJExMVk1fQ09ORklHIC0taW5jbHVkZWRpcmAKKyAgICAgICAgIExMVk1fTElCRElSPWAkTExWTV9DT05GSUcgLS1saWJkaXJgCitAQCAtMjgwOCw3ICsyODA4LDcgQEAgZGV0ZWN0X29sZF9idWdneV9sbHZtKCkgeworICAgICBkbmwgb3Vyc2VsdmVzLgorICAgICBkbmwgKFNlZSBodHRwczovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTY4MjMpCisgICAgIGRubCBXZSBjYW4ndCB1c2UgJExMVk1fVkVSU0lPTiBiZWNhdXNlIGl0IGhhcyAnc3ZuJyBzdHJpcHBlZCBvdXQsCistICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uYAorKyAgICBMTFZNX1NPX05BTUU9TExWTS1gJExMVk1fQ09ORklHIC0tdmVyc2lvbiB8IGN1dCAtYzEtNWAKKyAgICAgQVNfSUYoW3Rlc3QgLWYgIiRMTFZNX0xJQkRJUi9saWIkTExWTV9TT19OQU1FLiRJTVBfTElCX0VYVCJdLCBbbGx2bV9oYXZlX29uZV9zbz15ZXNdKQorIAorICAgICBpZiB0ZXN0ICJ4JGxsdm1faGF2ZV9vbmVfc28iID0geHllczsgdGhlbgorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVVzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVVzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NTNjNGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDQtVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBlYmU2MDc3YTFkNzRlNTZiMjgyNDlmNzFlODc2MDI5NWZhODQ2ZWQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IEZyaSwgMjkgRGVjIDIwMTcgMTA6Mjc6NTkgLTAyMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzZdIFVzZSBQeXRob24gMyB0byBleGVjdXRlIHRoZSBzY3JpcHRzCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitUaGUgTUVTQSBidWlsZCBzeXN0ZW0gdXNlcyBQeXRob24gMiBidXQgYXMgT0UtQ29yZSBoYXMgbW92ZWQgYXdheSBmcm9tCitpdCwgd2UgY2hhbmdlIGl0IHRvIHVzZSBQeXRob24gMyBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBjb25maWd1cmF0aW9uIF0KKworU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZGQxNzJmMWViZS4uNDBjYWMzNmFjMiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTIyLDcgKzEyMiw3IEBAIEFNX1BST0dfQ0NfQ19PCisgQUNfUFJPR19OTQorIEFNX1BST0dfQVMKKyBBWF9DSEVDS19HTlVfTUFLRQorLUFDX0NIRUNLX1BST0dTKFtQWVRIT04yXSwgW3B5dGhvbjIuNyBweXRob24yIHB5dGhvbl0pCisrQUNfQ0hFQ0tfUFJPR1MoW1BZVEhPTjJdLCBbcHl0aG9uMy41IHB5dGhvbjMgcHl0aG9uXSkKKyBBQ19QUk9HX1NFRAorIEFDX1BST0dfTUtESVJfUAorIAorLS0gCisyLjE4LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LWRyaS1pOTY1LUFkZC1taXNzaW5nLXRpbWUuaC1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA1LWRyaS1pOTY1LUFkZC1taXNzaW5nLXRpbWUuaC1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MGU3YjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtZHJpLWk5NjUtQWRkLW1pc3NpbmctdGltZS5oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA5ZTAzNjhhZjQ3MWFmM2EzNmUwZWI1MjY0NTNmODkyNTk4MTIwMDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KK0RhdGU6IFdlZCwgNiBKdW4gMjAxOCAwOTo1MDozNSAtMDMwMAorU3ViamVjdDogW1BBVENIIDUvNl0gZHJpOiBpOTY1OiBBZGQgbWlzc2luZyB0aW1lLmggaW5jbHVkZQorT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKworVGhpcyBmaXhlcyBhIGJ1aWxkIGVycm9yIHdoZW4gdXNpbmcgbXVzbDoKKworLC0tLS0KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLi9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2ludGVsX3VwbG9hZC5jOjMzOjA6Cit8IC4uLi9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2Jyd19idWZtZ3IuaDoxMzI6NDogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICd0aW1lX3QnCit8ICAgICB0aW1lX3QgZnJlZV90aW1lOworfCAgICAgXn5+fn5+CitgLS0tLQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFszYzI4OGRhNWVlYzgxZWU1OGI4NTkyN2RmMThkOTE5NGVhZDhmNWMyXQorU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KKy0tLQorIHNyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2J1Zm1nci5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbWVzYS9kcml2ZXJzL2RyaS9pOTY1L2Jyd19idWZtZ3IuaCBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2J1Zm1nci5oCitpbmRleCA2OGY1ZTBjMmM4Li41YjYwYTIzNzYzIDEwMDY0NAorLS0tIGEvc3JjL21lc2EvZHJpdmVycy9kcmkvaTk2NS9icndfYnVmbWdyLmgKKysrKyBiL3NyYy9tZXNhL2RyaXZlcnMvZHJpL2k5NjUvYnJ3X2J1Zm1nci5oCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgInV0aWwvdV9hdG9taWMuaCIKKyAjaW5jbHVkZSAidXRpbC9saXN0LmgiCisgCistLSAKKzIuMTguMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDYtdXNlLVBLR19DSEVDS19WQVItZm9yLWRlZmluaW5nLVdBWUxBTkRfUFJPVE9DT0xTX0RBVC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNi11c2UtUEtHX0NIRUNLX1ZBUi1mb3ItZGVmaW5pbmctV0FZTEFORF9QUk9UT0NPTFNfREFULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMTI5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDYtdXNlLVBLR19DSEVDS19WQVItZm9yLWRlZmluaW5nLVdBWUxBTkRfUFJPVE9DT0xTX0RBVC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDc1NGNjZjg5YTczMmZjM2RhNmU5YmM2MmViZDZiMjg2ODZmZjNkMjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorRGF0ZTogV2VkLCAyOSBBdWcgMjAxOCAyMjoxMDozMCAtMDMwMAorU3ViamVjdDogW1BBVENIIDYvNl0gdXNlIFBLR19DSEVDS19WQVIgZm9yIGRlZmluaW5nIFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIKK09yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCisKK1RoaXMgYWxsb3dzIHRvIG92ZXJyaWRlIHRoZSB3YXlsYW5kLXByb3RvY29scyBwa2dkYXRhZGlyIHdpdGggdGhlCitXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSIGZyb20gZW52aXJvbm1lbnQuCisKK3BrZ2NvbmZpZyB3b3VsZCByZXR1cm4gYW4gYWJzb2x1dGUgcGF0aCBpbgorL3Vzci9zaGFyZS93YXlsYW5kLXByb3RvY29scworZm9yIHRoZSBwa2dkYXRhZGlyIHZhbHVlLCB3aGljaCBpcyBub3Qgc3VpdGFibGUgZm9yIGNyb3NzLWNvbXBpbGluZy4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA0MGNhYzM2YWMyLi43MjhiYmRjYmM0IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xODIzLDcgKzE4MjMsNyBAQCBmb3IgcGxhdCBpbiAkcGxhdGZvcm1zOyBkbworICAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW1dBWUxBTkRfQ0xJRU5UXSwgW3dheWxhbmQtY2xpZW50ID49ICRXQVlMQU5EX1JFUVVJUkVEXSkKKyAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1NFUlZFUl0sIFt3YXlsYW5kLXNlcnZlciA+PSAkV0FZTEFORF9SRVFVSVJFRF0pCisgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbV0FZTEFORF9QUk9UT0NPTFNdLCBbd2F5bGFuZC1wcm90b2NvbHMgPj0gJFdBWUxBTkRfUFJPVE9DT0xTX1JFUVVJUkVEXSkKKy0gICAgICAgIFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2AKKysgICAgICAgIFBLR19DSEVDS19WQVIoW1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJdLCBbd2F5bGFuZC1wcm90b2NvbHMgPj0gJFdBWUxBTkRfUFJPVE9DT0xTX1JFUVVJUkVEXSwgcGtnZGF0YWRpcikKKyAKKyAgICAgICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sIFs6XSkKKyAKKy0tIAorMi4xOC4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL1VzZS1QeXRob24tMy10by1leGVjdXRlLXRoZS1zY3JpcHRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjRhYWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDE4YzNlNjg0YTgyNTlhMDY0NDIxNGY4OGM3ZWFkN2ZhMzE1NzNmZDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotRGF0ZTogRnJpLCAyOSBEZWMgMjAxNyAxMDoyNzo1OSAtMDIwMAotU3ViamVjdDogW1BBVENIXSBVc2UgUHl0aG9uIDMgdG8gZXhlY3V0ZSB0aGUgc2NyaXB0cwotT3JnYW5pemF0aW9uOiBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KLQotVGhlIE1FU0EgYnVpbGQgc3lzdGVtIHVzZXMgUHl0aG9uIDIgYnV0IGFzIE9FLUNvcmUgaGFzIG1vdmVkIGF3YXkgZnJvbQotaXQsIHdlIGNoYW5nZSBpdCB0byB1c2UgUHl0aG9uIDMgaW5zdGVhZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgY29uZmlndXJhdGlvbiBdCi0KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIxMDdmMDRjMmUuLjA1NTU0NjE0MmQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTExNCw3ICsxMTQsNyBAQCBBQ19QUk9HX0NYWAotIEFNX1BST0dfQ0NfQ19PCi0gQU1fUFJPR19BUwotIEFYX0NIRUNLX0dOVV9NQUtFCi0tQUNfQ0hFQ0tfUFJPR1MoW1BZVEhPTjJdLCBbcHl0aG9uMi43IHB5dGhvbjIgcHl0aG9uXSkKLStBQ19DSEVDS19QUk9HUyhbUFlUSE9OMl0sIFtweXRob24zLjUgcHl0aG9uMyBweXRob25dKQotIEFDX1BST0dfU0VECi0gQUNfUFJPR19NS0RJUl9QCi0gCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZDY3NTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9kaXNhYmxlLWFzbS1vbi1ub24tZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotQ29uZmlndXJlIGNoZWNrcyBmb3IgY29tcGlsZXIgdG8gYmUgZ2NjIGFuZCB0aGVuIGl0IGVuYWJsZXMgYXNtX29mZnNldHMKLWdlbmVyYXRpb24uIHNlZQotCi1odHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS9jb21taXQvP2lkPTczYzliNGIwZTA1ZmM2NjYyOWJhMjUwODQ2OTQ4ZGM1NWMwZTdhMGQKLQotSG93ZXZlciwgd2UgbWlzc2VkIHRoZSBjaGVjayB3aGVuIGVuYWJsaW5nIHRoaXMgb24gY3Jvc3MgY29tcGlsYXRpb24KLXdoZW4gYXJjaGl0ZWN0dXJlIGZvciBib3RoIGhvc3QgYW5kIHRhcmdldCBpcyB4ODYKLQotRml4ZXMgZXJyb3JzIGxpa2UKLS4vZ2VuX21hdHlwZXMgPiBtYXR5cGVzLmgKLS9iaW4vYmFzaDogLi9nZW5fbWF0eXBlczogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi0tS2hlbQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1JbmRleDogbWVzYS0xMi4wLjEvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWVzYS0xMi4wLjEub3JpZy9jb25maWd1cmUuYWMKLSsrKyBtZXNhLTEyLjAuMS9jb25maWd1cmUuYWMKLUBAIC03MzIsNyArNzMyLDcgQEAgdGVzdCAieCRlbmFibGVfYXNtIiA9IHhubyAmJiBBQ19NU0dfUkVTVQotIGlmIHRlc3QgIngkZW5hYmxlX2FzbSIgPSB4eWVzIC1hICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCi0gICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KLSAgICAgaT84NiB8IHg4Nl82NCB8IGFtZDY0KQotLSAgICAgICAgaWYgdGVzdCAieCRob3N0X2NwdSIgIT0gIngkdGFyZ2V0X2NwdSI7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIngkaG9zdF9jcHUiICE9ICJ4JHRhcmdldF9jcHUiIC1vICJ4JGFjdl9tZXNhX0NMQU5HIiA9IHh5ZXM7IHRoZW4KLSAgICAgICAgICAgICBlbmFibGVfYXNtPW5vCi0gICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm8sIGNyb3NzIGNvbXBpbGluZ10pCi0gICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDc5OTkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci1TdWJqZWN0OiBbUEFUQ0hdIFByb3Blcmx5IGdldCBMTFZNIHZlcnNpb24gd2hlbiB1c2luZyBMTFZNIEdpdCByZWxlYXNlcwotCi0kIGxsdm0tY29uZmlnLWhvc3QgLS12ZXJzaW9uCi01LjAuMGdpdC05YTVjMzMzMzg4YwotCi1XZSBuZWVkIHRvIGlnbm9yZSBldmVyeXRoaW5nIGFmdGVyIDUuMC4wIHdoaWNoIGlzIHdoYXQgdGhlIGN1dCBjbWQgaXMKLWRvaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhMDIxNzNmMjQ0Li5iMTA3ZjA0YzJlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05OTUsNyArOTk1LDcgQEAgc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncygpIHsKLSAKLSBsbHZtX3NldF9lbnZpcm9ubWVudF92YXJpYWJsZXMoKSB7Ci0gICAgIGlmIHRlc3QgIngkTExWTV9DT05GSUciICE9IHhubzsgdGhlbgotLSAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgZWdyZXAgLW8gJ15bWzAtOS5dXSsnYAotKyAgICAgICAgTExWTV9WRVJTSU9OPWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAotICAgICAgICAgTExWTV9DUFBGTEFHUz1gc3RyaXBfdW53YW50ZWRfbGx2bV9mbGFncyAiJExMVk1fQ09ORklHIC0tY3BwZmxhZ3MiYAotICAgICAgICAgTExWTV9JTkNMVURFRElSPWAkTExWTV9DT05GSUcgLS1pbmNsdWRlZGlyYAotICAgICAgICAgTExWTV9MSUJESVI9YCRMTFZNX0NPTkZJRyAtLWxpYmRpcmAKLUBAIC0yNjQ0LDcgKzI2NDQsNyBAQCBkZXRlY3Rfb2xkX2J1Z2d5X2xsdm0oKSB7Ci0gICAgIGRubCBvdXJzZWx2ZXMuCi0gICAgIGRubCAoU2VlIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9NjgyMykKLSAgICAgZG5sIFdlIGNhbid0IHVzZSAkTExWTV9WRVJTSU9OIGJlY2F1c2UgaXQgaGFzICdzdm4nIHN0cmlwcGVkIG91dCwKLS0gICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb25gCi0rICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uIHwgY3V0IC1jMS01YAotICAgICBBU19JRihbdGVzdCAtZiAiJExMVk1fTElCRElSL2xpYiRMTFZNX1NPX05BTUUuJElNUF9MSUJfRVhUIl0sIFtsbHZtX2hhdmVfb25lX3NvPXllc10pCi0gCi0gICAgIGlmIHRlc3QgIngkbGx2bV9oYXZlX29uZV9zbyIgPSB4eWVzOyB0aGVuCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE4LjEuOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjMuOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE4LjEuOS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggYjUwMWI3ZS4uMGNjMGE4MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCkBAIC0yOSwxMiArMjksMTYgQEAKIEFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIHZ1bGthbiIKIAogUExBVEZPUk1TID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3gxMSB3YXlsYW5kJywgZCl9IFwKLSAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dibScsICdkcm0nLCAnJywgZCl9IgorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2JtJywgJ2RybScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgc3VyZmFjZWxlc3MiCiAKIGV4cG9ydCBMTFZNX0NPTkZJRyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vbGx2bS1jb25maWcke01FU0FfTExWTV9SRUxFQVNFfSIKIGV4cG9ydCBZT0NUT19BTFRFUk5BVEVfRVhFX1BBVEggPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9L2xsdm0tY29uZmlnIgorZXhwb3J0IFlPQ1RPX0FMVEVSTkFURV9NVUxUSUxJQl9OQU1FID0gIiR7YmFzZV9saWJkaXJ9IgogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZC1nbGFwaSBcCiAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5jbCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2x4LXJlYWQtb25seS10ZXh0IFwKKyAgICAgICAgICAgICAgICBQWVRIT04yPXB5dGhvbjIgXAogICAgICAgICAgICAgICAgIC0td2l0aC1sbHZtLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS9sbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0gXAogICAgICAgICAgICAgICAgIC0td2l0aC1wbGF0Zm9ybXM9JyR7UExBVEZPUk1TfSciCiAKQEAgLTQ3LDcgKzUxLDcgQEAKICMgImdibSIgcmVxdWlyZXMgImRyaSIsICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW2dibV0gPSAiLS1lbmFibGUtZ2JtLC0tZGlzYWJsZS1nYm0iCiAKLVgxMV9ERVBTID0gInhmODZkcmlwcm90byBnbHByb3RvIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHhmODZ2bSBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyIKK1gxMV9ERVBTID0gInhvcmdwcm90byB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh4Zjg2dm0gbGlieGRhbWFnZSBsaWJ4Zml4ZXMiCiAjICJ4MTEiIHJlcXVpcmVzICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUtZ2x4LXRscywtLWRpc2FibGUtZ2x4LCR7WDExX0RFUFN9IgogUEFDS0FHRUNPTkZJR1t4dm1jXSA9ICItLWVuYWJsZS14dm1jLC0tZGlzYWJsZS14dm1jLGxpYnh2bWMiCkBAIC01Nyw4ICs2MSw4IEBACiBEUklEUklWRVJTX2FwcGVuZF94ODYgPSAiLHJhZGVvbixyMjAwLG5vdXZlYXUsaTk2NSxpOTE1IgogRFJJRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIixyYWRlb24scjIwMCxub3V2ZWF1LGk5NjUsaTkxNSIKICMgImRyaSIgcmVxdWlyZXMgIm9wZW5nbCIKLVBBQ0tBR0VDT05GSUdbZHJpXSA9ICItLWVuYWJsZS1kcmkgLS13aXRoLWRyaS1kcml2ZXJzPSR7RFJJRFJJVkVSU30sIC0tZGlzYWJsZS1kcmksIGRyaTJwcm90byBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsIC0tZGlzYWJsZS1kcmkzLCBkcmkzcHJvdG8gcHJlc2VudHByb3RvIGxpYnhzaG1mZW5jZSIKK1BBQ0tBR0VDT05GSUdbZHJpXSA9ICItLWVuYWJsZS1kcmkgLS13aXRoLWRyaS1kcml2ZXJzPSR7RFJJRFJJVkVSU30sIC0tZGlzYWJsZS1kcmksIHhvcmdwcm90byBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsIC0tZGlzYWJsZS1kcmkzLCB4b3JncHJvdG8gbGlieHNobWZlbmNlIgogCiAjIFZ1bGthbiBkcml2ZXJzIG5lZWQgZHJpMyBlbmFibGVkCiAjIHJhZGVvbiBjb3VsZCBiZSBlbmFibGVkIGFzIHdlbGwgYnV0IHJlcXVpcmVzIGdhbGxpdW0tbGx2bSB3aXRoIGxsdm0gPj0gMy45CkBAIC04Nyw2ICs5MSw4IEBACiBHQUxMSVVNRFJJVkVSU19MTFZNID0gInIzMDAsc3ZnYSxub3V2ZWF1JHtAJywke0dBTExJVU1EUklWRVJTX0xMVk0zM30nIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kX3g4Ni02NCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgorR0FMTElVTURSSVZFUlNfYXBwZW5kX3g4NiA9ICIsdmlyZ2wiCitHQUxMSVVNRFJJVkVSU19hcHBlbmRfeDg2LTY0ID0gIix2aXJnbCIKICMga2VlcCAtLXdpdGgtZ2FsbGl1bS1kcml2ZXJzIHNlcGFyYXRlLCBiZWNhdXNlIHdoZW4gb25seSBvbmUgb2YgZ2FsbGl1bSB2ZXJzaW9ucyBpcyBlbmFibGVkLCBvdGhlciAyIHdlcmUgYWRkaW5nIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gICAgICA9ICItLWVuYWJsZS10ZXh0dXJlLWZsb2F0IC0td2l0aC1nYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMiCiBNRVNBX0xMVk1fUkVMRUFTRSA/PSAiNi4wIgpAQCAtMTAwLDEwICsxMDYsMTUgQEAKIAogUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKIAorRVhUUkFfT0VDT05GX3JlbW92ZV9saWJjLW11c2wgPSAiLS1lbmFibGUtZ2x4LXRscyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtZ2x4LXRscyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX3g4NiA9ICIgLS1kaXNhYmxlLWFzbSIKKwogIyBsbHZtcGlwZSBpcyBzbG93IGlmIGNvbXBpbGVkIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIgKGUuZy4gLU8yKQogRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciIKIAogQ0ZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLURNSVNTSU5HXzY0QklUX0FUT01JQ1MiCitFWFRSQV9PRU1BS0UgKz0gIldBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVI9JHtTVEFHSU5HX0RBVEFESVJ9L3dheWxhbmQtcHJvdG9jb2xzIgogCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgpAQCAtMTE5LDcgKzEzMCw2IEBACiAgICAgICAgICAgICAgbGliZ2xlczEtbWVzYSBsaWJnbGVzMS1tZXNhLWRldiBcCiAgICAgICAgICAgICAgbGliZ2xlczItbWVzYSBsaWJnbGVzMi1tZXNhLWRldiBcCiAgICAgICAgICAgICAgbGliZ2xlczMtbWVzYSBsaWJnbGVzMy1tZXNhLWRldiBcCi0gICAgICAgICAgICAgbGlid2F5bGFuZC1lZ2wgbGlid2F5bGFuZC1lZ2wtZGV2IFwKICAgICAgICAgICAgICBsaWJ4YXRyYWNrZXIgbGlieGF0cmFja2VyLWRldiBcCiAgICAgICAgICAgICAgbWVzYS1tZWdhZHJpdmVyIG1lc2EtdnVsa2FuLWRyaXZlcnMgXAogICAgICAgICAgICAgIgpAQCAtMTM0LDYgKzE0NCwxMSBAQAogICAgICMgaXQgd2FzIHBhY2thZ2VkIGluIGxpYmRyaWNvcmU5LjEuMy0xIGFuZCBwcmV2ZW50aW5nIHVwZ3JhZGVzIHdoZW4gZGViaWFuLmJiY2xhc3Mgd2FzIHVzZWQgCiAgICAgcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vZHJpcmMKICAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vZHJpLypfZHJpLnNvIHx8IHRydWUKKworICAgICMgbGlid2F5bGFuZC1lZ2wgaGFzIGJlZW4gbW92ZWQgdG8gd2F5bGFuZCAxLjE1KworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vbGlid2F5bGFuZC1lZ2wqCisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9wa2djb25maWcvd2F5bGFuZC1lZ2wucGMKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwogfQogCiAjIEZvciB0aGUgcGFja2FnZXMgdGhhdCBtYWtlIHVwIHRoZSBPcGVuR0wgaW50ZXJmYWNlcywgaW5qZWN0IHZhcmlhYmxlcyBzbyB0aGF0CkBAIC0yMDQsNyArMjE5LDYgQEAKIEZJTEVTX2xpYmdsLW1lc2EgPSAiJHtsaWJkaXJ9L2xpYkdMLnNvLioiCiBGSUxFU19saWJnbGFwaSA9ICIke2xpYmRpcn0vbGliZ2xhcGkuc28uKiIKIEZJTEVTX2xpYm9zbWVzYSA9ICIke2xpYmRpcn0vbGliT1NNZXNhLnNvLioiCi1GSUxFU19saWJ3YXlsYW5kLWVnbCA9ICIke2xpYmRpcn0vbGlid2F5bGFuZC1lZ2wuc28uKiIKIEZJTEVTX2xpYnhhdHJhY2tlciA9ICIke2xpYmRpcn0vbGlieGF0cmFja2VyLnNvLioiCiAKIEZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vcGtnY29uZmlnL2RyaS5wYyAke2luY2x1ZGVkaXJ9L3Z1bGthbiIKQEAgLTIxNiw3ICsyMzAsNiBAQAogRklMRVNfbGliZ2xlczItbWVzYS1kZXYgPSAiJHtsaWJkaXJ9L2xpYkdMRVN2Mi4qICR7aW5jbHVkZWRpcn0vR0xFUzIgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9nbGVzdjIucGMiCiBGSUxFU19saWJnbGVzMy1tZXNhLWRldiA9ICIke2luY2x1ZGVkaXJ9L0dMRVMzIgogRklMRVNfbGlib3NtZXNhLWRldiA9ICIke2xpYmRpcn0vbGliT1NNZXNhLiogJHtpbmNsdWRlZGlyfS9HTC9vc21lc2EuaCAke2xpYmRpcn0vcGtnY29uZmlnL29zbWVzYS5wYyIKLUZJTEVTX2xpYndheWxhbmQtZWdsLWRldiA9ICIke2xpYmRpcn0vcGtnY29uZmlnL3dheWxhbmQtZWdsLnBjICR7bGliZGlyfS9saWJ3YXlsYW5kLWVnbC4qIgogRklMRVNfbGlieGF0cmFja2VyLWRldiA9ICIke2xpYmRpcn0vbGlieGF0cmFja2VyLnNvICR7bGliZGlyfS9saWJ4YXRyYWNrZXIubGEgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3hhX3RyYWNrZXIuaCAke2luY2x1ZGVkaXJ9L3hhX2NvbXBvc2l0ZS5oICR7aW5jbHVkZWRpcn0veGFfY29udGV4dC5oIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy94YXRyYWNrZXIucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjMuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQzZmQzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMy44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL21lc2EtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAotCSAgIGZpbGU6Ly9Vc2UtUHl0aG9uLTMtdG8tZXhlY3V0ZS10aGUtc2NyaXB0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1oYXJkd2FyZS1nbG9hdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3QtZHJpLUluaXRpYWxpc2UtbW9kaWZpZXItdG8tSU5WQUxJRC1mb3ItRFJJMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwM2QxYTc5MTU2YWI2OTI2ZjJkMjUzYjM3N2U5ZDlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmOWQ5YmYyODFjNDhlNGE4ZjUyMjg4MTY1NzcyNjNiNGM2NTUyNDhkYzc2NjZlNzUwMzRhYjQyMjk1MWE2YjEiCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTguMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE4LjEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQ2YTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE4LjEuOS5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1TaW1wbGlmeS13YXlsYW5kLXNjYW5uZXItbG9va3VwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1Qcm9wZXJseS1nZXQtTExWTS12ZXJzaW9uLXdoZW4tdXNpbmctTExWTS1HaXQtcmVsZWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLVB5dGhvbi0zLXRvLWV4ZWN1dGUtdGhlLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1kcmktaTk2NS1BZGQtbWlzc2luZy10aW1lLmgtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXVzZS1QS0dfQ0hFQ0tfVkFSLWZvci1kZWZpbmluZy1XQVlMQU5EX1BST1RPQ09MU19EQVQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmY4ZDIwOThhYjQ3OGJjMzkwN2U0MjEzMDU3N2I1NGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVmNTc3OGQ1OGE3MTBhNjNkNjYzNWYwMDA1MzU3NjhmYWY3ZGI5ZTgxNDRkYzBmNGZkMTk4OWY5MzZjMWE4MyIKKworI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCisjbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRHJvcC1pbnRyb3NwZWN0aW9uLW1hY3Jvcy1mcm9tLWFjaW5jbHVkZS5tNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUxNjI2ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotRnJvbSA4NjdhNTEyZWRkYmViMTg5OWQzZTcwOTZkZjNkYTFkZDBjZTNlN2I3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIzIE9jdCAyMDE1IDE0OjA2OjE3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERyb3AgaW50cm9zcGVjdGlvbiBtYWNyb3MgZnJvbSBhY2luY2x1ZGUubTQKLQotVGhleSB0YWtlIHByZWNlbmRlbmNlIG92ZXIgb3VyIGN1c3RvbWl6ZWQgbWFjcm9zLCBhbmQgc28KLWludHJvc3BlY3Rpb24gZG9lc24ndCB3b3JrIGNvcnJlY3RseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbdXBzdHJlYW0gNWNjZmUwXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBhY2luY2x1ZGUubTQgfCA5NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hY2luY2x1ZGUubTQgYi9hY2luY2x1ZGUubTQKLWluZGV4IDg4OTljN2MuLjQ4ZmQ1ZDggMTAwNjQ0Ci0tLS0gYS9hY2luY2x1ZGUubTQKLSsrKyBiL2FjaW5jbHVkZS5tNAotQEAgLTU1LDk5ICs1NSwzIEBAIEFDX0RFRlVOKFtKSF9DSEVDS19YTUxfQ0FUQUxPR10sCi0gXSkKLSAKLSAKLS1kbmwgUkVNT1ZFIFRISVMgV0hFTiBpbnRyb3NwZWN0aW9uLm00IGlzIHdpZGVseSBhdmFpbGFibGUKLS1kbmwKLS1kbmwgLSotIG1vZGU6IGF1dG9jb25mIC0qLQotLWRubCBDb3B5cmlnaHQgMjAwOSBKb2hhbiBEYWhsaW4KLS1kbmwKLS1kbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBhdXRob3IocykgZ2l2ZXMgdW5saW1pdGVkCi0tZG5sIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0tZG5sIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotLWRubAotLQotLSMgc2VyaWFsIDEKLS0KLS1tNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotLVsKLS0gICAgQUNfQkVGT1JFKFtBQ19QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLS0gICAgQUNfQkVGT1JFKFtBTV9QUk9HX0xJQlRPT0xdLFskMF0pZG5sIHNldHVwIGxpYnRvb2wgZmlyc3QKLS0gICAgQUNfQkVGT1JFKFtMVF9JTklUXSxbJDBdKWRubCBzZXR1cCBsaWJ0b29sIGZpcnN0Ci0tCi0tICAgIGRubCBlbmFibGUvZGlzYWJsZSBpbnRyb3NwZWN0aW9uCi0tICAgIG00X2lmKFskMl0sIFtyZXF1aXJlXSwKLS0gICAgW2RubAotLSAgICAgICAgZW5hYmxlX2ludHJvc3BlY3Rpb249eWVzCi0tICAgIF0sW2RubAotLSAgICAgICAgQUNfQVJHX0VOQUJMRShpbnRyb3NwZWN0aW9uLAotLSAgICAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1pbnRyb3NwZWN0aW9uWz1APDpAbm8vYXV0by95ZXNAOj5AXV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBpbnRyb3NwZWN0aW9uIGZvciB0aGlzIGJ1aWxkXSksLCAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlX2ludHJvc3BlY3Rpb249YXV0b10pCi0tICAgIF0pZG5sCi0tCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdvYmplY3QtaW50cm9zcGVjdGlvbl0pCi0tCi0tICAgIGRubCBwcmVzZW5jZS92ZXJzaW9uIGNoZWNraW5nCi0tICAgIEFTX0NBU0UoWyRlbmFibGVfaW50cm9zcGVjdGlvbl0sCi0tICAgIFtub10sIFtkbmwKLS0gICAgICAgIGZvdW5kX2ludHJvc3BlY3Rpb249Im5vIChkaXNhYmxlZCwgdXNlIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gdG8gZW5hYmxlKSIKLS0gICAgXSxkbmwKLS0gICAgW3llc10sW2RubAotLSAgICAgICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMF0sLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgaXMgbm90IGluc3RhbGxlZF0pKQotLSAgICAgICAgUEtHX0NIRUNLX0VYSVNUUyhbZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCA+PSAkMV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2ludHJvc3BlY3Rpb249eWVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW1lvdSBuZWVkIHRvIGhhdmUgZ29iamVjdC1pbnRyb3NwZWN0aW9uID49ICQxIGluc3RhbGxlZCB0byBidWlsZCBBQ19QQUNLQUdFX05BTUVdKSkKLS0gICAgXSxkbmwKLS0gICAgW2F1dG9dLFtkbmwKLS0gICAgICAgIFBLR19DSEVDS19FWElTVFMoW2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAgPj0gJDFdLCBmb3VuZF9pbnRyb3NwZWN0aW9uPXllcywgZm91bmRfaW50cm9zcGVjdGlvbj1ubykKLS0gICAgXSxkbmwKLS0gICAgW2RubAkKLS0gICAgICAgIEFDX01TR19FUlJPUihbaW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gLS1lbmFibGUtaW50cm9zcGVjdGlvbiwgc2hvdWxkIGJlIG9uZSBvZiBAPDpAbm8vYXV0by95ZXNAOj5AXSkKLS0gICAgXSlkbmwKLS0KLS0gICAgQUNfTVNHX1JFU1VMVChbJGZvdW5kX2ludHJvc3BlY3Rpb25dKQotLQotLSAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9Ci0tICAgIElOVFJPU1BFQ1RJT05fQ09NUElMRVI9Ci0tICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9Ci0tICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPQotLSAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9Ci0tICAgIGlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLS0gICAgICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdpcmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9IiQoJFBLR19DT05GSUcgLS12YXJpYWJsZT10eXBlbGliZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjApIgotLSAgICAgICBJTlRST1NQRUNUSU9OX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotLSAgICBmaQotLSAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0VORVJBVEUpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fR0lSRElSKQotLSAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1RZUEVMSUJESVIpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ0ZMQUdTKQotLSAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX0xJQlMpCi0tICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fTUFLRUZJTEUpCi0tCi0tICAgIEFNX0NPTkRJVElPTkFMKEhBVkVfSU5UUk9TUEVDVElPTiwgdGVzdCAieCRmb3VuZF9pbnRyb3NwZWN0aW9uIiA9ICJ4eWVzIikKLS1dKQotLQotLQotLWRubCBVc2FnZToKLS1kbmwgICBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0soW21pbmltdW0tZy1pLXZlcnNpb25dKQotLQotLUFDX0RFRlVOKFtHT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tdLAotLVsKLS0gIF9HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUwoWyQxXSkKLS1dKQotLQotLWRubCBVc2FnZToKLS1kbmwgICBHT0JKRUNUX0lOVFJPU1BFQ1RJT05fUkVRVUlSRShbbWluaW11bS1nLWktdmVyc2lvbl0pCi0tCi0tCi0tQUNfREVGVU4oW0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9SRVFVSVJFXSwKLS1bCi0tICBfR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLX0lOVEVSTkFMKFskMV0sIFtyZXF1aXJlXSkKLS1dKQotLS0gCi0yLjEuNApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiZDljNjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgotREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAotd2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAotdGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAotYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAotY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURyb3AtaW50cm9zcGVjdGlvbi1tYWNyb3MtZnJvbS1hY2luY2x1ZGUubTQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRW5mb3JjZS1yZWNyZWF0aW9uLW9mLWRvY3MtcGFuZ28udHlwZXMtaXQtaXMtYnVpbGQtYy5wYXRjaCBcCi0iCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIxOGQ3ZWI4ZDUyZTdlNDQ1ZTczM2MxMDlkZGFhN2I3OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjkwYWYxYmVhYTdiZjllNGM1MmRiMjllYzI1MWVjNGZkMGE4ZjJjYzE4NWQ1MjFhZDFmODhkMDFiM2E2YTE3ZTMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteGZ0LC0td2l0aG91dC14ZnQsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLQkgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyBcCi0JICAgICAgICAiCi0KLUxFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCi1MSUJWID0gIjEuOC4wIgotCi0jIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgewotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCi0JZmkKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40Mi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40Mi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyZmUzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQyLjQuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJGcmFtZXdvcmsgZm9yIGxheW91dCBhbmQgcmVuZGVyaW5nIG9mIGludGVybmF0aW9uYWxpemVkIHRleHQiCitERVNDUklQVElPTiA9ICJQYW5nbyBpcyBhIGxpYnJhcnkgZm9yIGxheWluZyBvdXQgYW5kIHJlbmRlcmluZyBvZiB0ZXh0LCBcCit3aXRoIGFuIGVtcGhhc2lzIG9uIGludGVybmF0aW9uYWxpemF0aW9uLiBQYW5nbyBjYW4gYmUgdXNlZCBhbnl3aGVyZSBcCit0aGF0IHRleHQgbGF5b3V0IGlzIG5lZWRlZCwgdGhvdWdoIG1vc3Qgb2YgdGhlIHdvcmsgb24gUGFuZ28gc28gZmFyIGhhcyBcCitiZWVuIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIEdUSysgd2lkZ2V0IHRvb2xraXQuIFBhbmdvIGZvcm1zIHRoZSBcCitjb3JlIG9mIHRleHQgYW5kIGZvbnQgaGFuZGxpbmcgZm9yIEdUSystMi54LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGFuZ28ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtRW5mb3JjZS1yZWNyZWF0aW9uLW9mLWRvY3MtcGFuZ28udHlwZXMtaXQtaXMtYnVpbGQtYy5wYXRjaCBcCisiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkZWIxNzFhMzFhM2FkNzYzNDJkNTE5NWExYjViYmM3YyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjFkMmI3NGNkNjNlOGJkNDE5NjFmMmY4ZDk1MjM1NWFhMGY5YmU2MDAyYjUyYzhhYTc2OTlkOWY1ZGE1OTdjOWQiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14ZnQsLS13aXRob3V0LXhmdCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZnQiCisKK0xFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCitMSUJWID0gIjEuOC4wIgorCisjIFRoaXMgYmluYXJ5IG5lZWRzIHRvIGJlIGNvbXBpbGVkIGZvciB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuICBUaGlzIGlzbid0IHByZXR0eSEKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQltYWtlIENDPSIke0JVSUxEX0NDfSIgQ0ZMQUdTPSIiIExERkxBR1M9IiR7QlVJTERfTERGTEFHU30iIEFNX0NQUEZMQUdTPSIkKHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGdsaWItMi4wKSIgZ2VuX2FsbF91bmljb2RlX0xEQUREPSIkKHBrZy1jb25maWctbmF0aXZlIC0tbGlicyBnbGliLTIuMCkiIC1DICR7Qn0vdGVzdHMgZ2VuLWFsbC11bmljb2RlCisJZmkKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2xpYnBhbmdvKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BhbmdvLyR7TElCVn0vbW9kdWxlcy8qLmxhIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliZXJhdGlvbi1mb250cyBjYW50YXJlbGwtZm9udHMiCisKK1JQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCisgICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLWNtYWtlLXVzZS1wcm9wZXItV0FZTEFORF9JTkNMVURFX0RJUlMtdmFyaWFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtY21ha2UtdXNlLXByb3Blci1XQVlMQU5EX0lOQ0xVREVfRElSUy12YXJpYWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDZlYzM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAxLWNtYWtlLXVzZS1wcm9wZXItV0FZTEFORF9JTkNMVURFX0RJUlMtdmFyaWFibGUucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzYmYxYmVlZTFkZGQxOWJjNTM2ZmYyODU2ZTA0YWMyNjlkNDNkYWEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgorRGF0ZTogVGh1LCA0IE9jdCAyMDE4IDE0OjQzOjE3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiB1c2UgcHJvcGVyIFdBWUxBTkRfSU5DTFVERV9ESVJTIHZhcmlhYmxlCisKK1dBWUxBTkRfd2F5bGFuZC1jbGllbnRfSU5DTFVERURJUiBpcyBhbiBpbnRlcm5hbCB2YXJpYWJsZSBhbmQgaXMgbm90IGNvcnJlY3RseQorc2V0IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiBXQVlMQU5EX0lOQ0xVREVfRElSUyBpbmNsdWRlcyB0aGUgY29ycmVjdCBwYXRoIGV2ZW4KK3doZW4gY3Jvc3MgY29tcGlsaW5nLgorCitTaWduZWQtb2ZmLWJ5OiBQYXNjYWwgQmFjaCA8cGFzY2FsLmJhY2hAc2llbWVucy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtwaWdsaXRAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXQorLS0tCisgdGVzdHMvdXRpbC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQgYi90ZXN0cy91dGlsL0NNYWtlTGlzdHMudHh0CitpbmRleCBhNWYwODAxNTYuLmEzMDNhOWY1OCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKKysrKyBiL3Rlc3RzL3V0aWwvQ01ha2VMaXN0cy50eHQKK0BAIC05Nyw3ICs5Nyw3IEBAIGlmKFBJR0xJVF9VU0VfV0FGRkxFKQorIAkJCXBpZ2xpdC1mcmFtZXdvcmstZ2wvcGlnbGl0X3dsX2ZyYW1ld29yay5jCisgCQkpCisgCQlsaXN0KEFQUEVORCBVVElMX0dMX0lOQ0xVREVTCistCQkJJHtXQVlMQU5EX3dheWxhbmQtY2xpZW50X0lOQ0xVREVESVJ9CisrCQkJJHtXQVlMQU5EX0lOQ0xVREVfRElSU30KKyAJCSkKKyAJZW5kaWYoKQorIAlpZihQSUdMSVRfSEFTX1gxMSkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKaW5kZXggYjkzNmFkOC4uOWU0NTc1MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKQEAgLTUsMTEgKzUsMTIgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvcGlnbGl0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtaW5zdGFsbC1iYXNoLWNvbXBsZXRpb25zLWluLXRoZS1yaWdodC1wbGFjZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLVVzZS1GRV9VUFdBUkQtb25seS1pZi1pdHMtZGVmaW5lZC1pbi1mZW52LmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS11c2UtcHJvcGVyLVdBWUxBTkRfSU5DTFVERV9ESVJTLXZhcmlhYmxlLnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCi0jIEZyb20gMjAxOC0wMi0yNgotU1JDUkVWID0gIjRjZTA4ODdlMmY3Zjg0OGQyYmUyZTQzNWEyZDBmM2M4MGU0NGVhM2IiCisjIEZyb20gMjAxOC0wOC0xMworU1JDUkVWID0gIjU3ODU5ZTE1ZGM4YmE0MDM0MzQ4YjA0ZDBiNzJmMjEzYjc0ZDYzNDciCiAjICh3aGVuIFBWIGdvZXMgYWJvdmUgMS4wIHJlbW92ZSB0aGUgdHJhaWxpbmcgcikKIFBWID0gIjEuMCtnaXRyJHtTUkNQVn0iCiAKQEAgLTE3LDcgKzE4LDcgQEAKIAogREVQRU5EUyA9ICJsaWJwbmcgdmlydHVhbC9saWJ4MTEgbGlieGtiY29tbW9uIGxpYnhyZW5kZXIgd2FmZmxlIHZpcnR1YWwvbGliZ2wgbGliZ2x1IHB5dGhvbjMtbWFrby1uYXRpdmUgcHl0aG9uMy1udW1weS1uYXRpdmUgcHl0aG9uMy1zaXgtbmF0aXZlIHZpcnR1YWwvZWdsIgogCi1pbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIGJhc2gtY29tcGxldGlvbgoraW5oZXJpdCBjbWFrZSBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgYmFzaC1jb21wbGV0aW9uCiAjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKaW5kZXggZDMyYzhmMi4uOTNiY2ZiZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDU1NzcwZmIwN2M0MmZlNDEwY2Y4ZDA5ZjhmNTk3NmJhYmM4OWI5ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCA0IEp1bCAyMDE3IDE3OjEzOjQ1ICswMzAwCitGcm9tIDBhMjcxNDRkNDNiNzAxMjFmNTdmNjAzNjUxNGQwNjljYTlkMmI5NzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCAzMCBKdWwgMjAxOCAxNzoyMzoyOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBEb24ndCBidWlsZCBkZW1vcyB3aXRoIHF1ZXN0aW9uYWJseSBsaWNlbnNlZCBkYXRhCiAKIFNvbWUgb2YgdGhlIG1vZGVscyBkb24ndCBoYXZlIG9wZW4gc291cmNlIGNvbXBhdGlibGUgbGljZW5zZXM6CkBAIC05LDQzICs5LDQ2IEBACiAKIHNzYW86CiBzY2VuZXJlbmRlcmluZzoKLQlTaWJlbmlrIG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisgICAgICAgIFNpYmVuaWsgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKIAogZGVmZXJyZWQ6CiBkZWZlcnJlZG11bHRpc2FtcGxpbmc6CiBkZWZlcnJlZHNoYWRvd3M6Ci0JYXJtb3IgbW9kZWwsIENDLUJZLTMuMAorICAgICAgICBhcm1vciBtb2RlbCwgQ0MtQlktMy4wCiAKIHZ1bGthbnNjZW5lOgogaW1ndWk6CiBzaGFkb3dtYXBwaW5nOgotCXZ1bGthbnNjZW5lIG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCisgICAgICAgIHZ1bGthbnNjZW5lIG1vZGVsLCBubyBsaWNlbnNlIGZvdW5kCiAKIGluZGlyZWN0ZHJhdzoKLQlwbGFudCBtb2RlbCwgbm8gbGljZW5zZSBmb3VuZAorICAgICAgICBwbGFudCBtb2RlbCwgbm8gbGljZW5zZSBmb3VuZAogCiBoZHI6CiBwYnJpYmw6CiBwYnJ0ZXh0dXJlOgotCVJlcXVpcmUgZXh0ZXJuYWwgVnVsa2FuIEFzc2V0IFBhY2sKKyAgICAgICAgUmVxdWlyZSBleHRlcm5hbCBWdWxrYW4gQXNzZXQgUGFjawogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAxMyAtLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggNDk1OGZmZi4uMGY5ZDNlNCAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTE1MCwxNyArMTUwLDExIEBAIHNldChFWEFNUExFUwotIAljb21wdXRlcGFydGljbGVzCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBleGFtcGxlcy9DTWFrZUxpc3RzLnR4dCB8IDE0IC0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAoraW5kZXggOGVlZTNhNC4uNjk4ZDNiMyAxMDA2NDQKKy0tLSBhL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CisrKysgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAorQEAgLTQ3LDE4ICs0NywxMiBAQCBzZXQoRVhBTVBMRVMKICAJY29tcHV0ZXNoYWRlcgorIAljb25zZXJ2YXRpdmVyYXN0ZXIKICAJZGVidWdtYXJrZXIKIC0JZGVmZXJyZWQKIC0JZGVmZXJyZWRtdWx0aXNhbXBsaW5nCiAtCWRlZmVycmVkc2hhZG93cworIAlkZXNjcmlwdG9yc2V0cwogIAlkaXNwbGFjZW1lbnQKICAJZGlzdGFuY2VmaWVsZGZvbnRzCiAgCWR5bmFtaWN1bmlmb3JtYnVmZmVyCkBAIC01MywzMiArNTYsMzYgQEAKICAJZ2VvbWV0cnlzaGFkZXIKIC0JaGRyCiAtCWltZ3VpCi0tCWluZGlyZWN0ZHJhdwkKKy0JaW5kaXJlY3RkcmF3CisgCWlucHV0YXR0YWNobWVudHMKICAJaW5zdGFuY2luZwogIAltZXNoCi0gCW11bHRpc2FtcGxpbmcKLUBAIC0xNzAsMjAgKzE2NCwxNCBAQCBzZXQoRVhBTVBMRVMKK0BAIC03MCw4ICs2NCw2IEBAIHNldChFWEFNUExFUwogIAlwYXJhbGxheG1hcHBpbmcKICAJcGFydGljbGVmaXJlCiAgCXBicmJhc2ljCiAtCXBicmlibAogLQlwYnJ0ZXh0dXJlCiAgCXBpcGVsaW5lcworIAlwaXBlbGluZXN0YXRpc3RpY3MKICAJcHVzaGNvbnN0YW50cworQEAgLTc5LDE1ICs3MSwxMCBAQCBzZXQoRVhBTVBMRVMKICAJcmFkaWFsYmx1cgogIAlyYXl0cmFjaW5nCisgCXJlbmRlcmhlYWRsZXNzCiAtCXNjZW5lcmVuZGVyaW5nCiAgCXNjcmVlbnNob3QKIC0Jc2hhZG93bWFwcGluZwogLQlzaGFkb3dtYXBwaW5nb21uaQorLQlzaGFkb3dtYXBwaW5nY2FzY2FkZQogIAlza2VsZXRhbGFuaW1hdGlvbgogIAlzcGVjaWFsaXphdGlvbmNvbnN0YW50cwogIAlzcGhlcmljYWxlbnZtYXBwaW5nCiAtCXNzYW8KKyAJc3RlbmNpbGJ1ZmZlcgogIAlzdWJwYXNzZXMKICAJdGVycmFpbnRlc3NlbGxhdGlvbgotIAl0ZXNzZWxsYXRpb24KLUBAIC0xOTYsNyArMTg0LDYgQEAgc2V0KEVYQU1QTEVTCitAQCAtMTAxLDcgKzg4LDYgQEAgc2V0KEVYQU1QTEVTCiAgCXRleHR1cmVzcGFyc2VyZXNpZGVuY3kKICAJdHJpYW5nbGUKICAJdmlld3BvcnRhcnJheQpAQCAtODcsNSArOTQsNSBAQAogIAogIGJ1aWxkRXhhbXBsZXMoKQogLS0gCi0yLjEzLjIKKzIuNC4wCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLUZpeC1idWlsZC1vbi14ODYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MWIzNDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLUZpeC1idWlsZC1vbi14ODYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIGIwNDk1ZWZiNmMzZWEzYTUzMGZjYmFkZGFjODZkYTU3ZWNjZTVhNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxMCBKdWwgMjAxNyAxMzoxMToxMiArMDMwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgb24geDg2Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLXzCoGZ1bmNfY29tbW9uLmlubDoxOTM6NTE6IGVycm9yOiB3cm9uZyBudW1iZXIgb2YgdGVtcGxhdGUgYXJndW1lbnRzCi18wqAoNSwgc2hvdWxkIGJlIDYpIHN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+Ci0KLVRoZSBmaXggaXMgYmFja3BvcnRlZCBmcm9tIHRoZSB1cHN0cmVhbSBnbG0gcHJvamVjdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4vaXNzdWVzLzM1Nl0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBleHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sIGIvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCi1pbmRleCBjYWZhZWQ1Li4yZGQ5NGUxIDEwMDY0NAotLS0tIGEvZXh0ZXJuYWwvZ2xtL2dsbS9kZXRhaWwvZnVuY19jb21tb24uaW5sCi0rKysgYi9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKLUBAIC0xOTAsMTIgKzE5MCwxMiBAQCBuYW1lc3BhY2UgZGV0YWlsCi0gCi0gIwlpZiBHTE1fQVJDSCA9PSBHTE1fQVJDSF9YODYKLSAJdGVtcGxhdGU8bGVuZ3RoX3QgTCwgdHlwZW5hbWUgVCwgcHJlY2lzaW9uIFAsIHRlbXBsYXRlPGxlbmd0aF90LCB0eXBlbmFtZSwgcHJlY2lzaW9uPiBjbGFzcyB2ZWNUeXBlLCBib29sIEFsaWduZWQ+Ci0tCXN0cnVjdCBjb21wdXRlX3NpZ248VCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+Ci0rCXN0cnVjdCBjb21wdXRlX3NpZ248TCwgVCwgUCwgdmVjVHlwZSwgZmFsc2UsIEFsaWduZWQ+Ci0gCXsKLSAJCUdMTV9GVU5DX1FVQUxJRklFUiBzdGF0aWMgdmVjVHlwZTxMLCBULCBQPiBjYWxsKHZlY1R5cGU8TCwgVCwgUD4gY29uc3QgJiB4KQotIAkJewotIAkJCVQgY29uc3QgU2hpZnQoc3RhdGljX2Nhc3Q8VD4oc2l6ZW9mKFQpICogOCAtIDEpKTsKLS0JCQl2ZWNUeXBlPEwsIFQsIFA+IGNvbnN0IHkodmVjVHlwZTx0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlLCBQPigteCkgPj4gdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZShTaGlmdCkpOwotKwkJCXZlY1R5cGU8TCwgVCwgUD4gY29uc3QgeSh2ZWNUeXBlPEwsIHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUsIFA+KC14KSA+PiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlKFNoaWZ0KSk7Ci0gCi0gCQkJcmV0dXJuICh4ID4+IFNoaWZ0KSB8IHk7Ci0gCQl9Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1TdXBwb3J0LWluc3RhbGxpbmctZGVtb3Mtc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWRkZWEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1TdXBwb3J0LWluc3RhbGxpbmctZGVtb3Mtc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIGVkY2E2Njc2ODQ3NjRjZmNjMDQ2MGU0NDhlODM0ZmFkZjYyM2E4ODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAzIEp1bCAyMDE3IDE0OjQ5OjE4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFN1cHBvcnQgaW5zdGFsbGluZyBkZW1vcywgc3VwcG9ydCBvdXQtb2YtdHJlZSBidWlsZHMKLQotVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgY3Jvc3MtY29tcGlsZSBzaXR1YXRpb24gd2hlcmUgdGVzdGluZwotaGFwcGVucyBvbiB0YXJnZXQuCi0KLS1EUkVTT1VSQ0VfSU5TVEFMTF9ESVI9PHBhdGg+IGRlY2lkZXMgd2hlcmUgZGF0YSBpcyBpbnN0YWxsZWQgKGFuZAotd2hlcmUgdGhlIGJpbmFyaWVzIHdpbGwgbG9hZCB0aGUgZGF0YSBmcm9tKTogaWYgaXQncyBsZWZ0IGVtcHR5LAotdGhlbiBub3RoaW5nIHdpbGwgYmUgaW5zdGFsbGVkIGFuZCBiaW5hcmllcyB3aWxsIGxvYWQgdGhlIGRhdGEgZnJvbQotQ01BS0VfU09VUkNFX0RJUi4KLQotQmluYXJpZXMgYXJlIG5vdyBjb3JyZWN0bHkgYnVpbHQgaW4gQ01BS0VfQklOQVJZX0RJUi4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi9wdWxsLzM1Ml0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICB8IDE1ICsrKysrKysrKysrKysrLQotIGJhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwIHwgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCBiOTg4NmJjLi40OTU4ZmZmIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTYsNiArMTYsOCBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKGJhc2UpCi0gT1BUSU9OKFVTRV9EMkRfV1NJICJCdWlsZCB0aGUgcHJvamVjdCB1c2luZyBEaXJlY3QgdG8gRGlzcGxheSBzd2FwY2hhaW4iIE9GRikKLSBPUFRJT04oVVNFX1dBWUxBTkRfV1NJICJCdWlsZCB0aGUgcHJvamVjdCB1c2luZyBXYXlsYW5kIHN3YXBjaGFpbiIgT0ZGKQotIAotK3NldChSRVNPVVJDRV9JTlNUQUxMX0RJUiAiIiBDQUNIRSBQQVRIICJQYXRoIHRvIGluc3RhbGwgcmVzb3VyY2VzIHRvIChsZWF2ZSBlbXB0eSBmb3IgcnVubmluZyB1bmluc3RhbGxlZCkiKQotKwotICMgVXNlIEZpbmRWdWxrYW4gbW9kdWxlIGFkZGVkIHdpdGggQ01BS0UgMy43Ci0gaWYgKE5PVCBDTUFLRV9WRVJTSU9OIFZFUlNJT05fTEVTUyAzLjcuMCkKLSAJbWVzc2FnZShTVEFUVVMgIlVzaW5nIG1vZHVsZSB0byBmaW5kIFZ1bGthbiIpCi1AQCAtMTA4LDYgKzExMCwxMCBAQCBmdW5jdGlvbihidWlsZEV4YW1wbGUgRVhBTVBMRV9OQU1FKQotIAkJYWRkX2V4ZWN1dGFibGUoJHtFWEFNUExFX05BTUV9ICR7TUFJTl9DUFB9ICR7U09VUkNFfSAke1NIQURFUlN9KQotIAkJdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7RVhBTVBMRV9OQU1FfSAke1Z1bGthbl9MSUJSQVJZfSAke0FTU0lNUF9MSUJSQVJJRVN9ICR7V0FZTEFORF9DTElFTlRfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQotIAllbmRpZihXSU4zMikKLSsKLSsJaWYoUkVTT1VSQ0VfSU5TVEFMTF9ESVIpCi0rCQlpbnN0YWxsKFRBUkdFVFMgJHtFWEFNUExFX05BTUV9IERFU1RJTkFUSU9OICR7Q01BS0VfSU5TVEFMTF9CSU5ESVJ9KQotKwllbmRpZigpCi0gZW5kZnVuY3Rpb24oYnVpbGRFeGFtcGxlKQotIAotICMgQnVpbGQgYWxsIGV4YW1wbGVzCi1AQCAtMTE3LDYgKzEyMywxMyBAQCBmdW5jdGlvbihidWlsZEV4YW1wbGVzKQotIAllbmRmb3JlYWNoKEVYQU1QTEUpCi0gZW5kZnVuY3Rpb24oYnVpbGRFeGFtcGxlcykKLSAKLStpZihSRVNPVVJDRV9JTlNUQUxMX0RJUikKLSsJYWRkX2RlZmluaXRpb25zKC1EVktfRVhBTVBMRV9EQVRBX0RJUj1cIiR7UkVTT1VSQ0VfSU5TVEFMTF9ESVJ9L1wiKQotKwlpbnN0YWxsKERJUkVDVE9SWSBkYXRhLyBERVNUSU5BVElPTiAke1JFU09VUkNFX0lOU1RBTExfRElSfS8pCi0rZWxzZSgpCi0rCWFkZF9kZWZpbml0aW9ucygtRFZLX0VYQU1QTEVfREFUQV9ESVI9XCIke0NNQUtFX1NPVVJDRV9ESVJ9L2RhdGEvXCIpCi0rZW5kaWYoKQotKwotICMgQ29tcGlsZXIgc3BlY2lmaWMgc3R1ZmYKLSBJRihNU1ZDKQotIAlTRVQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gL0VIc2MiKQotQEAgLTEyOCw3ICsxNDEsNyBAQCBFTFNFKFdJTjMyKQotIAlsaW5rX2xpYnJhcmllcygke1hDQl9MSUJSQVJJRVN9ICR7VnVsa2FuX0xJQlJBUll9KQotIEVORElGKFdJTjMyKQotIAotLXNldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfU09VUkNFX0RJUn0vYmluLyIpCi0rc2V0KENNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAiJHtDTUFLRV9CSU5BUllfRElSfS9iaW4vIikKLSAKLSBzZXQoRVhBTVBMRVMgCi0gCWJsb29tCi1kaWZmIC0tZ2l0IGEvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAgYi9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcAotaW5kZXggNjQ3MzY4YS4uYTBmMjhhNSAxMDA2NDQKLS0tLSBhL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwCi0rKysgYi9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcAotQEAgLTg0LDcgKzg0LDcgQEAgY29uc3Qgc3RkOjpzdHJpbmcgVnVsa2FuRXhhbXBsZUJhc2U6OmdldEFzc2V0UGF0aCgpCi0gI2lmIGRlZmluZWQoX19BTkRST0lEX18pCi0gCXJldHVybiAiIjsKLSAjZWxzZQotLQlyZXR1cm4gIi4vLi4vZGF0YS8iOwotKwlyZXR1cm4gVktfRVhBTVBMRV9EQVRBX0RJUjsKLSAjZW5kaWYKLSB9Ci0gI2VuZGlmCi0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDVmYzljMmQuLmJmMzBjOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC0zLDE1ICszLDE4IEBACiBERVBFTkRTID0gInpsaWIiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWRjZjQ3MzcyM2ZhYWJmMTdiYWE5YjVmMjIwNzU5OWQwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyaWFuZ2xlL3RyaWFuZ2xlLmNwcDtlbmRsaW5lPTEyO21kNT1iY2NkMWJmOWNhZGQ5ZTEwMDg2Y2Y3ODcyMTU3ZTRmYSIKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4YW1wbGVzL3RyaWFuZ2xlL3RyaWFuZ2xlLmNwcDtlbmRsaW5lPTEyO21kNT1iY2NkMWJmOWNhZGQ5ZTEwMDg2Y2Y3ODcyMTU3ZTRmYSIKKworU1JDUkVWX2dsbSA9ICIwMWY5YWI1YjZkMjFlNTA2MmFjMGY2ZTBmMjA1YzdmYTJjYTlkNzY5IgorU1JDUkVWX2dsaSA9ICI4ZTQzMDMwYjNlMTJiYjU4YTQ2NjNkODVhZGM1Yzc1MmY4OTA5OWMwIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9nLXRydWMvZ2xtO2Rlc3RzdWZmaXg9Z2l0L2V4dGVybmFsL2dsbTtuYW1lPWdsbSBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZy10cnVjL2dsaTtkZXN0c3VmZml4PWdpdC9leHRlcm5hbC9nbGk7bmFtZT1nbGkgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLXg4Ni5wYXRjaCBcCiAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi1TUkNSRVYgPSAiMThkZjAwYzdiNDY3N2IwODg5NDg2ZTE2OTc3ODU3YWE5ODc5NDdlMiIKK1NSQ1JFViA9ICJhZTBiNTljNmUyZTg2MzBhMmFlMjZmNGEwYjdhNzJjYmU3NTQ3OTQ4IgogVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiVGhlc2UgYXJlIG5vdCB0aGUgcmVsZWFzZXMgeW91J3JlIGxvb2tpbmcgZm9yIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2gKaW5kZXggYmNmODRhNS4uYjBiOWZjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi9kZW1vcy1Eb24tdC1idWlsZC10cmktb3ItY3ViZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoCkBAIC0xLDIxICsxLDMwIEBACi1jb21taXQgZjYzY2JlOTQ0MTA3YjVjZDhmMTUwY2VhYWVjNDNiMjYwOTlkNTY4OAorRnJvbSA5YjEzYmUxMDliYzY2ZjRkNGExYWQ1M2NlNWM5MmM3YzQ5NWU0MWQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTc6NDA6NTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29tbWl0IGY2M2NiZTk0NDEwN2I1Y2Q4ZjE1MGNlYWFlYzQzYjI2MDk5ZDU2ODgKKwogQXV0aG9yOiBBZGFtIEphY2tzb24gPGFqYXhAcmVkaGF0LmNvbT4KIERhdGU6ICAgVHVlIEZlYiAxNiAxMDowNToyNSAyMDE2IC0wNTAwCiAKLSAgICBkZW1vczogRG9uJ3QgYnVpbGQgdHJpIG9yIGN1YmUKLSAgICAKLSAgICBUaGVyZSBhcmUgbW9yZSBpbnRlcmVzdGluZyBkZW1vcywgYWxsIHdlIHJlYWxseSB3YW50IGhlcmUgaXMgdnVsa2FuaW5mby4KLSAgICBUaGlzIGhlbHBzIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBwcmUtYnVpbGQgZ2xzbGFuZy9sbHZtL2x1bmFyZ2xhc3MKLSAgICBqdXN0IHRvIGdldCB0aGUgbG9hZGVyIGFuZCBsYXllcnMuCitkZW1vczogRG9uJ3QgYnVpbGQgdHJpIG9yIGN1YmUKKworVGhlcmUgYXJlIG1vcmUgaW50ZXJlc3RpbmcgZGVtb3MsIGFsbCB3ZSByZWFsbHkgd2FudCBoZXJlIGlzIHZ1bGthbmluZm8uCitUaGlzIGhlbHBzIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCB0byBwcmUtYnVpbGQgZ2xzbGFuZy9sbHZtL2x1bmFyZ2xhc3MKK2p1c3QgdG8gZ2V0IHRoZSBsb2FkZXIgYW5kIGxheWVycy4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAotSW5kZXg6IGdpdC9kZW1vcy9DTWFrZUxpc3RzLnR4dAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2RlbW9zL0NNYWtlTGlzdHMudHh0Ci0rKysgZ2l0L2RlbW9zL0NNYWtlTGlzdHMudHh0Ci1AQCAtNjMsNDYgKzYzLDYgQEAgZWxzZWlmKFVOSVgpCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBkZW1vcy9DTWFrZUxpc3RzLnR4dCB8IDg4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgODggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kZW1vcy9DTWFrZUxpc3RzLnR4dCBiL2RlbW9zL0NNYWtlTGlzdHMudHh0CitpbmRleCA0ZjMyNjc5Li4yNmU0Y2RmIDEwMDY0NAorLS0tIGEvZGVtb3MvQ01ha2VMaXN0cy50eHQKKysrKyBiL2RlbW9zL0NNYWtlTGlzdHMudHh0CitAQCAtOTMsNDIgKzkzLDYgQEAgZWxzZWlmKFVOSVgpCiAgZWxzZSgpCiAgZW5kaWYoKQogIApAQCAtMzcsMzggKzQ2LDQwIEBACiAtICAgICAgICBlbmRpZigpCiAtICAgIGVuZGZvcmVhY2goKQogLQotLSAgICBhZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS12ZXJ0LnNwdgotLSAgICAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1zIC1WIC1vICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS12ZXJ0LnNwdiAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0Ci0tICAgICAgIERFUEVORFMgY3ViZS52ZXJ0ICR7R0xTTEFOR19WQUxJREFUT1J9Ci0tICAgICAgICkKLS0gICAgYWRkX2N1c3RvbV9jb21tYW5kKE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtZnJhZy5zcHYKLS0gICAgICAgQ09NTUFORCAke0dMU0xBTkdfVkFMSURBVE9SfSAtcyAtViAtbyAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtZnJhZy5zcHYgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZwotLSAgICAgICBERVBFTkRTIGN1YmUuZnJhZyAke0dMU0xBTkdfVkFMSURBVE9SfQotLSAgICAgICApCiAtICAgZmlsZShDT1BZIGN1YmUudmN4cHJvai51c2VyIERFU1RJTkFUSU9OICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MpCiAtICAgZmlsZShDT1BZIHZ1bGthbmluZm8udmN4cHJvai51c2VyIERFU1RJTkFUSU9OICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MpCi0tZWxzZSgpCi0tICAgIGlmICgke0NNQUtFX1NZU1RFTV9QUk9DRVNTT1J9IFNUUkVRVUFMICR7Q01BS0VfSE9TVF9TWVNURU1fUFJPQ0VTU09SfSkKLS0gICAgICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2Ci0tICAgICAgICAgICAgQ09NTUFORCAke0dMU0xBTkdfVkFMSURBVE9SfSAtcyAtViAtbyBjdWJlLXZlcnQuc3B2ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQKLS0gICAgICAgICAgICBERVBFTkRTIGN1YmUudmVydCAke0dMU0xBTkdfVkFMSURBVE9SfQotLSAgICAgICAgICAgICkKLS0gICAgICAgIGFkZF9jdXN0b21fY29tbWFuZChPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLWZyYWcuc3B2Ci0tICAgICAgICAgICAgQ09NTUFORCAke0dMU0xBTkdfVkFMSURBVE9SfSAtcyAtViAtbyBjdWJlLWZyYWcuc3B2ICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcKLS0gICAgICAgICAgICBERVBFTkRTIGN1YmUuZnJhZyAke0dMU0xBTkdfVkFMSURBVE9SfQotLSAgICAgICAgICAgICkKLS0gICAgZW5kaWYoKSAgICAgICAgIAogLWVuZGlmKCkKKy0KKy1hZGRfY3VzdG9tX2NvbW1hbmQoCistICAgIENPTU1FTlQgIkNvbXBpbGluZyBjdWJlIGRlbW8gdmVydGV4IHNoYWRlciIKKy0gICAgT1VUUFVUIGN1YmUudmVydC5pbmMKKy0gICAgQ09NTUFORCAke0dMU0xBTkdfVkFMSURBVE9SfSAtViAteCAtbyAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY3ViZS52ZXJ0LmluYyAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0CistICAgIE1BSU5fREVQRU5ERU5DWSAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS52ZXJ0CistICAgIERFUEVORFMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydCAke0dMU0xBTkdfVkFMSURBVE9SfQorLSkKKy1hZGRfY3VzdG9tX2NvbW1hbmQoCistICAgIENPTU1FTlQgIkNvbXBpbGluZyBjdWJlIGRlbW8gZnJhZ21lbnQgc2hhZGVyIgorLSAgICBPVVRQVVQgY3ViZS5mcmFnLmluYworLSAgICBDT01NQU5EICR7R0xTTEFOR19WQUxJREFUT1J9IC1WIC14IC1vICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9jdWJlLmZyYWcuaW5jICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcKKy0gICAgTUFJTl9ERVBFTkRFTkNZICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLmZyYWcKKy0gICAgREVQRU5EUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnICR7R0xTTEFOR19WQUxJREFUT1J9CistKQogIAotIGlmKFdJTjMyKQotICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzICgKLUBAIC0xMTYsNDMgKzc2LDYgQEAgZW5kaWYoKQotIGFkZF9leGVjdXRhYmxlKCR7QVBJX0xPV0VSQ0FTRX1pbmZvIHZ1bGthbmluZm8uYykKLSB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtBUElfTE9XRVJDQVNFfWluZm8gJHtMSUJSQVJJRVN9KQorIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9KQogIAotLWlmKE5PVCBXSU4zMikKK0BAIC0xNzIsNTUgKzEzNiwzIEBAIGlmKCR7Q01BS0VfU1lTVEVNX05BTUV9IFNUUkVRVUFMICJMaW51eCIpCisgICAgICAgICBpbnN0YWxsKFRBUkdFVFMgJHtBUElfTE9XRVJDQVNFfWluZm8gREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0JJTkRJUn0pCisgICAgIGVuZGlmKCkKKyBlbmRpZigpCistCistIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKy0jIGN1YmUKKy0KKy1pZihBUFBMRSkKKy0gICAgaW5jbHVkZShtYWNPUy9jdWJlL2N1YmUuY21ha2UpCistZWxzZWlmKE5PVCBXSU4zMikKIC0gICAgaWYgKCR7Q01BS0VfU1lTVEVNX1BST0NFU1NPUn0gU1RSRVFVQUwgJHtDTUFLRV9IT1NUX1NZU1RFTV9QUk9DRVNTT1J9KQotLSAgICAgICAgYWRkX2V4ZWN1dGFibGUoY3ViZSBjdWJlLmMgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2ICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdikKKy0gICAgICAgIGFkZF9leGVjdXRhYmxlKGN1YmUgY3ViZS5jICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZyBjdWJlLnZlcnQuaW5jIGN1YmUuZnJhZy5pbmMpCiAtICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoY3ViZSAke0xJQlJBUklFU30pCiAtICAgIGVuZGlmKCkKIC1lbHNlKCkKQEAgLTc4LDEzICs4OSwxOCBAQAogLSAgICAgICAgc2V0IChMSUJfRElSICJXaW4zMiIpCiAtICAgIGVuZGlmKCkKIC0KLS0gICAgYWRkX2V4ZWN1dGFibGUoY3ViZSBXSU4zMiBjdWJlLmMgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2ICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdikKKy0gICAgYWRkX2V4ZWN1dGFibGUoY3ViZSBXSU4zMiBjdWJlLmMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydCAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnIGN1YmUudmVydC5pbmMgY3ViZS5mcmFnLmluYykKIC0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGN1YmUgJHtMSUJSQVJJRVN9KQogLWVuZGlmKCkKIC0KLS1pZihOT1QgV0lOMzIpCistIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKy0jIGN1YmVwcAorLQorLWlmKEFQUExFKQorLSAgICBpbmNsdWRlKG1hY09TL2N1YmVwcC9jdWJlcHAuY21ha2UpCistZWxzZWlmKE5PVCBXSU4zMikKIC0gICAgaWYgKCR7Q01BS0VfU1lTVEVNX1BST0NFU1NPUn0gU1RSRVFVQUwgJHtDTUFLRV9IT1NUX1NZU1RFTV9QUk9DRVNTT1J9KQotLSAgICAgICAgYWRkX2V4ZWN1dGFibGUoY3ViZXBwIGN1YmUuY3BwICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS12ZXJ0LnNwdiAke0NNQUtFX0JJTkFSWV9ESVJ9L2RlbW9zL2N1YmUtZnJhZy5zcHYpCistICAgICAgICBhZGRfZXhlY3V0YWJsZShjdWJlcHAgY3ViZS5jcHAgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUudmVydCAke1BST0pFQ1RfU09VUkNFX0RJUn0vZGVtb3MvY3ViZS5mcmFnIGN1YmUudmVydC5pbmMgY3ViZS5mcmFnLmluYykKIC0gICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhjdWJlcHAgJHtMSUJSQVJJRVN9KQogLSAgICBlbmRpZigpCiAtZWxzZSgpCkBAIC05NCwxNSArMTEwLDE5IEBACiAtICAgICAgICBzZXQgKExJQl9ESVIgIldpbjMyIikKIC0gICAgZW5kaWYoKQogLQotLSAgICBhZGRfZXhlY3V0YWJsZShjdWJlcHAgV0lOMzIgY3ViZS5jcHAgJHtDTUFLRV9CSU5BUllfRElSfS9kZW1vcy9jdWJlLXZlcnQuc3B2ICR7Q01BS0VfQklOQVJZX0RJUn0vZGVtb3MvY3ViZS1mcmFnLnNwdikKKy0gICAgYWRkX2V4ZWN1dGFibGUoY3ViZXBwIFdJTjMyIGN1YmUuY3BwICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9kZW1vcy9jdWJlLnZlcnQgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L2RlbW9zL2N1YmUuZnJhZyBjdWJlLnZlcnQuaW5jIGN1YmUuZnJhZy5pbmMpCiAtICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhjdWJlcHAgJHtMSUJSQVJJRVN9KQogLWVuZGlmKCkKIC0KKy0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLSMgc21va2UKKy0KIC1pZiAoKCR7Q01BS0VfU1lTVEVNX1BST0NFU1NPUn0gU1RSRVFVQUwgJHtDTUFLRV9IT1NUX1NZU1RFTV9QUk9DRVNTT1J9KSkKLS0gICAgaWYgICgoREVNT1NfV1NJX1NFTEVDVElPTiBTVFJFUVVBTCAiWENCIikgT1IgKERFTU9TX1dTSV9TRUxFQ1RJT04gU1RSRVFVQUwgIldBWUxBTkQiKSBPUiBXSU4zMiBPUiAoQ01BS0VfU1lTVEVNX05BTUUgU1RSRVFVQUwgIkFuZHJvaWQiKSkKKy0gICAgaWYgKChERU1PU19XU0lfU0VMRUNUSU9OIFNUUkVRVUFMICJYQ0IiKSBPUiAoREVNT1NfV1NJX1NFTEVDVElPTiBTVFJFUVVBTCAiV0FZTEFORCIpIE9SIFdJTjMyIE9SCistICAgICAgICAoQ01BS0VfU1lTVEVNX05BTUUgU1RSRVFVQUwgIkFuZHJvaWQiKSBPUiAoQ01BS0VfU1lTVEVNX05BTUUgU1RSRVFVQUwgIkRhcndpbiIpKQogLSAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShzbW9rZSkKIC0gICAgZW5kaWYoKQogLWVuZGlmKCkKLSAKLSBpZihVTklYKQotICAgICBpZihJTlNUQUxMX0xWTF9GSUxFUykKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4wLjY1LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjOGE4OTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNjUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjY1IFwKLSAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gIjczNDg2YTFhMTY5ZDg2MmQ1MjEwZTJhZDUyMGQ5NTMxOWEyMzgzZmEiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgotCi1pbmhlcml0IGNtYWtlIHB5dGhvbjNuYXRpdmUgbGliX3BhY2thZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfV1NJX01JUl9TVVBQT1JUPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfTEFZRVJTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnICxkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OIC1EREVNT1NfV1NJX1NFTEVDVElPTj1YQ0IsIC1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PRkYgLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T0ZGIC1EREVNT1NfV1NJX1NFTEVDVElPTj1XQVlMQU5ELCBsaWJ4Y2IgbGlieDExIGxpYnhyYW5kciIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T0ZGLCB3YXlsYW5kIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJtZXNhLXZ1bGthbi1kcml2ZXJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjEuNzMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4xLjczLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5NmY1MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW5fMS4xLjczLjAuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICIzRCBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgY29tbW9uIGxvYWRlciIKK0RFU0NSSVBUSU9OID0gIlZ1bGthbiBpcyBhIG5ldyBnZW5lcmF0aW9uIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBcCit0aGF0IHByb3ZpZGVzIGVmZmljaWVudCBhY2Nlc3MgdG8gbW9kZXJuIEdQVXMuIFRoZXNlIHBhY2thZ2VzIFwKK3Byb3ZpZGUgb25seSB0aGUgY29tbW9uIHZlbmRvci1hZ25vc3RpYyBsaWJyYXJ5IGxvYWRlciwgaGVhZGVycyBhbmQgXAordGhlIHZ1bGthbmluZm8gdXRpbGl0eS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OTljNjQ3Y2EzZDRmNmE0YjlkODYyOGY3NTdhYWQxNTYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbG9hZGVyL2xvYWRlci5jO2VuZGxpbmU9MjU7bWQ1PTE1MWIzOTJmNDY1NjhhYWVkYjRhZDIyYjI0NjIzN2VjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycy5naXQ7YnJhbmNoPXNkay0xLjEuNzMgXAorICAgICAgICAgICBmaWxlOi8vZGVtb3MtRG9uLXQtYnVpbGQtdHJpLW9yLWN1YmUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiNTk5OGQ2ZjQ0NGE4NWU2MzgxYjdhMDg5ZWJmM2Y5ZTg2NDgyYTMxZCIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ2dWxrYW4iCisKK2luaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK0FOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCisKK0VYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZTIwOTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTEuMy5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmMmVhOWViZmYzYTJjNmQ0NThmYWY1ODQ5MmVmYjYzIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZjZlODc3ZjExZGU0YTk3OTM1MTFlOWFiZmU3ZWYwMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMzExOTFkOTZlNDI1YjRmMTYzMTk4NDIyNzlkNjU5NDZkOWQ5ODNkY2QzZDllNDY2YWUxMjA2YWExMGVjYjA2IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgoraW5oZXJpdCBtZXNvbiBwa2djb25maWcgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwtRGxpYndhY29tPWZhbHNlLGxpYndhY29tIgorUEFDS0FHRUNPTkZJR1tndWldID0gIi1EZGVidWctZ3VpPXRydWUsLURkZWJ1Zy1ndWk9ZmFsc2UsY2Fpcm8gZ3RrKzMiCisKK1VERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgorCitFWFRSQV9PRU1FU09OICs9ICItRHVkZXYtZGlyPSR7VURFVkRJUn0gLURkb2N1bWVudGF0aW9uPWZhbHNlIC1EdGVzdHM9ZmFsc2UiCisKKyMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yaworUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS45LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2E0OWRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS45LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxODRhZWYzOGZmMTM3ZWQzM2NlOWE2M2I5ZDFlYjhmIgotCi1ERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjQzZDA3ZDE2OThmYjIwN2EwNDkyZmM2NzU1NGQ0ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYmNkYmQ0YzRlM2MyYTJkYjMyMmZiZGYyZWYzMjg0ZjJlNmQ2ZmI3YmUzYWY4MGU2ZDhkZTc3ODNmNjc1MTkwIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwtRGxpYndhY29tPWZhbHNlLGxpYndhY29tIgotUEFDS0FHRUNPTkZJR1tndWldID0gIi1EZGVidWctZ3VpPXRydWUsLURkZWJ1Zy1ndWk9ZmFsc2UsY2Fpcm8gZ3RrKzMiCi0KLVVERVZESVIgPSAiYHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgIgotCi1FWFRSQV9PRU1FU09OICs9ICItRHVkZXYtZGlyPSR7VURFVkRJUn0gLURkb2N1bWVudGF0aW9uPWZhbHNlIC1EdGVzdHM9ZmFsc2UiCi0KLSMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yawotUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgotUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVmMWVlMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKLURFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKLWF2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKLWNvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKLXByb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAotd2F5bGFuZC1wcm90b2NvbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOTMxMjE0OWRhZmNkNGEwZTczOWJhOTQ5OTVhNTc0ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzU4YmM4MDA4ZDUzMzJmNDMxYjJhODRmZWE3ZGU2NGQ5NzFjZTI3MGVkMjA4MjA2YTA5OGZmMmViYzY4ZjM4IgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9ICIke1BOfSIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRiNzExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE2LmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQ29sbGVjdGlvbiBvZiBhZGRpdGlvbmFsIFdheWxhbmQgcHJvdG9jb2xzIgorREVTQ1JJUFRJT04gPSAiV2F5bGFuZCBwcm90b2NvbHMgdGhhdCBhZGQgZnVuY3Rpb25hbGl0eSBub3QgXAorYXZhaWxhYmxlIGluIHRoZSBXYXlsYW5kIGNvcmUgcHJvdG9jb2wuIFN1Y2ggcHJvdG9jb2xzIGVpdGhlciBhZGQgXAorY29tcGxldGVseSBuZXcgZnVuY3Rpb25hbGl0eSwgb3IgZXh0ZW5kIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHNvbWUgb3RoZXIgXAorcHJvdG9jb2wgZWl0aGVyIGluIFdheWxhbmQgY29yZSwgb3Igc29tZSBvdGhlciBwcm90b2NvbCBpbiBcCit3YXlsYW5kLXByb3RvY29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM3YjEyYjY3MDJkYTM4Y2EwMjhhY2U1NGFhZTNkNDg0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0YWJsZS9wcmVzZW50YXRpb24tdGltZS9wcmVzZW50YXRpb24tdGltZS54bWw7ZW5kbGluZT0yNjttZDU9NDY0NmNkN2Q5ZWRjOWZhNTVkYjk0MWYyZDNhN2RjNTMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImUwYjUyM2ZmMTYyZTMwYmFiNDZiZTFkNjVkNTI3NjgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiMTQ4NTk1MWZkY2QzNmE5NjBjODcwYzQ2ZjI4YjAzYTNlNTEyMWZiNDYyNDY5MTYzMzNlZDA3Zjc4Yzk4YzUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VTID0gIiR7UE59IgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3dheWxhbmQtcHJvdG9jb2xzLnBjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhOWZmOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKLURFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAotYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAotYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCi1pbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKLWJlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCi1kaXNwbGF5IHNlcnZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKLQotREVQRU5EUyA9ICJleHBhdCBsaWJ4bWwyIGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotCSAgIGZpbGU6Ly9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjAyMzVmNjA3NWMzMmMzYmU2MWNmZjk0ZmEwYjlmMTA4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkODBjYWJjMDk2MWE3NTlhNDIwOTJlMmMzOWFhYmZjMWVjOWExM2M4NmM5OGJiZTJiODEyZjAwOGRhMjdhYjgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS13aXRoLWhvc3Qtc2Nhbm5lciIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLWxpYnJhcmllcyIKLQotIyBXYXlsYW5kIGluc3RhbGxzIGEgTTQgbWFjcm8gZm9yIG90aGVyIHByb2plY3RzIHRvIHVzZSwgd2hpY2ggdXNlcyB0aGUgdGFyZ2V0Ci0jIHBrZy1jb25maWcgdG8gZmluZCBmaWxlcy4gIFJlcGxhY2UgcGtnLWNvbmZpZyB3aXRoIHBrZy1jb25maWctbmF0aXZlLgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICBzZWQgLWUgJ3MsUEtHX0NIRUNLX01PRFVMRVMoLiopLCxnJyBcCi0gICAgICAtZSAncywkUEtHX0NPTkZJRyxwa2ctY29uZmlnLW5hdGl2ZSxnJyBcCi0gICAgICAtaSAke0R9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLX0KLQotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0Jcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKLQljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTJlZTFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTYuMC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIldheWxhbmQsIGEgcHJvdG9jb2wgYmV0d2VlbiBhIGNvbXBvc2l0b3IgYW5kIGNsaWVudHMiCitERVNDUklQVElPTiA9ICJXYXlsYW5kIGlzIGEgcHJvdG9jb2wgZm9yIGEgY29tcG9zaXRvciB0byB0YWxrIHRvIGl0cyBjbGllbnRzIFwKK2FzIHdlbGwgYXMgYSBDIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBwcm90b2NvbC4gVGhlIGNvbXBvc2l0b3IgY2FuIGJlIFwKK2Egc3RhbmRhbG9uZSBkaXNwbGF5IHNlcnZlciBydW5uaW5nIG9uIExpbnV4IGtlcm5lbCBtb2Rlc2V0dGluZyBhbmQgZXZkZXYgXAoraW5wdXQgZGV2aWNlcywgYW4gWCBhcHBsaWNhdGlvbiwgb3IgYSB3YXlsYW5kIGNsaWVudCBpdHNlbGYuIFRoZSBjbGllbnRzIGNhbiBcCitiZSB0cmFkaXRpb25hbCBhcHBsaWNhdGlvbnMsIFggc2VydmVycyAocm9vdGxlc3Mgb3IgZnVsbHNjcmVlbikgb3Igb3RoZXIgXAorZGlzcGxheSBzZXJ2ZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjMxZDhmNTNiNmFhZjJiNDk4NWQ3ZGQ3ODEwYTcwZDEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3dheWxhbmQtc2VydmVyLmM7ZW5kbGluZT0yNDttZDU9YjhlMDQ2MTY0YTc2NmJiMWVkZThiYTM4ZTlkY2Q3Y2UiCisKK0RFUEVORFMgPSAiZXhwYXQgbGlieG1sMiBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKwkgICBmaWxlOi8vZml4cGF0aGlucGNmaWxlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwYzIxNWU1M2RlNzFkNmZiMjZmNzEwMmNkYzY0MzJkMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTcyYzJiNTYxMDljY2ZiNjYxMGQ3NzZlNDY1ZjRjYTBhZjIyODBjOWMyZjdkNWNjMjNmMGVkMjU0ODc1MmY1IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0td2l0aC1ob3N0LXNjYW5uZXIiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS1saWJyYXJpZXMiCisKKyMgV2F5bGFuZCBpbnN0YWxscyBhIE00IG1hY3JvIGZvciBvdGhlciBwcm9qZWN0cyB0byB1c2UsIHdoaWNoIHVzZXMgdGhlIHRhcmdldAorIyBwa2ctY29uZmlnIHRvIGZpbmQgZmlsZXMuICBSZXBsYWNlIHBrZy1jb25maWcgd2l0aCBwa2ctY29uZmlnLW5hdGl2ZS4KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgc2VkIC1lICdzLFBLR19DSEVDS19NT0RVTEVTKC4qKSwsZycgXAorICAgICAgLWUgJ3MsJFBLR19DT05GSUcscGtnLWNvbmZpZy1uYXRpdmUsZycgXAorICAgICAgLWkgJHtEfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00Cit9CisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworCXJtICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00CisJY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNCAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsLworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vKiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9ICR7ZGF0YWRpcn0vd2F5bGFuZCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24tY29uZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWNvbmYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUyMjAwYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWNvbmYuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJXZXN0b24sIGEgV2F5bGFuZCBjb21wb3NpdG9yLCBjb25maWd1cmF0aW9uIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pIgorCitGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3hkZy93ZXN0b24vd2VzdG9uLmluaSIKKworUEFDS0FHRVMgPSAiJHtQTn0iCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gJzEnCitkb19jb21waWxlW25vZXhlY10gPSAnMScKKworZG9faW5zdGFsbCgpIHsKKwk6Cit9CisKK2RvX2luc3RhbGxfcWVtdXg4NigpIHsKKwlta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0veGRnL3dlc3RvbgorCWNhdCA8PCBFT0YgPiAke0R9LyR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pCitbY29yZV0KK2JhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbworRU9GCit9CisKK2RvX2luc3RhbGxfcWVtdXg4Ni02NCgpIHsKKwlta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0veGRnL3dlc3RvbgorCWNhdCA8PCBFT0YgPiAke0R9LyR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pCitbY29yZV0KK2JhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbworRU9GCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uc2VydmljZQppbmRleCA2ODljZTQxLi4xOGY3MjYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLnNlcnZpY2UKQEAgLTQsNiArNCw3IEBACiAKIFtTZXJ2aWNlXQogVXNlcj1yb290CitQQU1OYW1lPWxvZ2luCiBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC93ZXN0b24KIEV4ZWNTdGFydD0vdXNyL2Jpbi93ZXN0b24tc3RhcnQgLXYgLWUgLS0gJE9QVEFSR1MKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoCmluZGV4IDA2NzFhNDUuLjA5ZWMxNTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2gKQEAgLTEsMjYgKzEsMjcgQEAKLUZyb20gYzIyZTkwMzY1ZDg5MzQ2MjU4Mzk0ODMzY2JjYWQwM2ZmMzJiMmUyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYWQxZDIxNjFjODExY2ZmMjVkMTY4NGMzMzYxMWYzMDBhZGI3NTNiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI5IE1heSAyMDE1IDIwOjU2OjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggd2VzdG9uXSBtYWtlIGVycm9yKCkgcG9ydGFibGUKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZSBlcnJvcigpIHBvcnRhYmxlCiAKIGVycm9yKCkgaXMgbm90IHBvc2l4IGJ1dCBnbnUgZXh0ZW5zaW9uIHNvIG1heSBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbAoga2luZCBvZiBzeXN0ZW1zaSBlLmcuIG11c2wuCiAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCiAKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgICAgMiArKwotIGxpYndlc3Rvbi93ZXN0b24tZXJyb3IuaCAgfCAgIDIwICsrKysrKysrKysrKysrKysrKysrCi0gbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8ICAgIDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3dlc3Rvbi1lcnJvci5oCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogCi1JbmRleDogd2VzdG9uLTMuMC4wL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHdlc3Rvbi0zLjAuMC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIHdlc3Rvbi0zLjAuMC9jb25maWd1cmUuYWMKLUBAIC0xMDMsNiArMTAzLDggQEAgQUNfQ0hFQ0tfREVDTChDTE9DS19NT05PVE9OSUMsW10sCistLS0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgIDIgKysKKyBsaWJ3ZXN0b24vd2VzdG9uLWVycm9yLmggIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyBsaWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIHwgIDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDdhZWJiZGIuLmRjOWM4MDIgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEwOSw2ICsxMDksOCBAQCBBQ19DSEVDS19ERUNMKENMT0NLX01PTk9UT05JQyxbXSwKICAJICAgICAgW1sjaW5jbHVkZSA8dGltZS5oPl1dKQogIEFDX0NIRUNLX0hFQURFUlMoW2V4ZWNpbmZvLmhdKQogIApAQCAtMjksMTAgKzMwLDExIEBACiAgQUNfQ0hFQ0tfRlVOQ1MoW21rb3N0ZW1wIHN0cmNocm51bCBpbml0Z3JvdXBzIHBvc2l4X2ZhbGxvY2F0ZV0pCiAgCiAgIyBjaGVjayBmb3IgbGliZHJtIGFzIGEgYnVpbGQtdGltZSBkZXBlbmRlbmN5IG9ubHkKLUluZGV4OiB3ZXN0b24tMy4wLjAvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oIGIvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjA4OWQwMgogLS0tIC9kZXYvbnVsbAotKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWVycm9yLmgKKysrKyBiL2xpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAogQEAgLTAsMCArMSwyMCBAQAogKyNpZm5kZWYgX1dFU1RPTl9FUlJPUl9ICiArI2RlZmluZSBfV0VTVE9OX0VSUk9SX0gKQEAgLTU0LDEwICs1NiwxMCBAQAogKwogKyNlbmRpZgogKwotSW5kZXg6IHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2VzdG9uLTMuMC4wLm9yaWcvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotKysrIHdlc3Rvbi0zLjAuMC9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCitkaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKK2luZGV4IDFhZGNmMjEuLjE2NmJmM2IgMTAwNjQ0CistLS0gYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCisrKysgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtMzMsNyArMzMsNiBAQAogICNpbmNsdWRlIDxwb2xsLmg+CiAgI2luY2x1ZGUgPGVycm5vLmg+CkBAIC02Niw3ICs2OCw3IEBACiAgI2luY2x1ZGUgPGdldG9wdC5oPgogIAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLUBAIC02MCw2ICs1OSw3IEBACitAQCAtNTksNiArNTgsNyBAQAogICNlbmRpZgogIAogICNpbmNsdWRlICJ3ZXN0b24tbGF1bmNoLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKaW5kZXggNzBiOTg4OC4uZDY0ODUzOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gOGZmNmVkMDNlYzQwNzlmMzJlOWIzNDA4NTQxNGU1N2JlNDczMGUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjk4YjlkYmRhOTAyMjI1Y2RkOTcyYjViZmY2YTY0MWMzNmNjN2U5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KIERhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTU6NTM6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gd2VzdG9uLWxhdW5jaDogUHJvdmlkZSBhIGRlZmF1bHQgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgcmVxdWlyZQotIFBBTQorU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlIFBBTQogCiB3ZXN0b24tbGF1bmNoIHJlcXVpcmVzIFBBTSBmb3Igc3RhcnRpbmcgd2VzdG9uIGFzIGEgbm9uLXJvb3QgdXNlci4KIApAQCAtMTQsMTYgKzEzLDE4IEBACiAKIFNpZ25lZC1vZmYtYnk6IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgIDkgKysrKysrKy0tCiAgbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAgMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA0NmNiMmM3Li5iYjQ1ZjQ2IDEwMDY0NAoraW5kZXggZGM5YzgwMi4uNDhjZjVjYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDM1LDEzICs0MzUsMTcgQEAgQUNfQVJHX0VOQUJMRShyZXNpemUtb3B0aW1pemF0aW9uLAorQEAgLTQ1MSwxMyArNDUxLDE3IEBAIEFDX0FSR19FTkFCTEUocmVzaXplLW9wdGltaXphdGlvbiwKICBBU19JRihbdGVzdCAieCRlbmFibGVfcmVzaXplX29wdGltaXphdGlvbiIgPSAieHllcyJdLAogICAgICAgIFtBQ19ERUZJTkUoW1VTRV9SRVNJWkVfUE9PTF0sIFsxXSwgW1VzZSByZXNpemUgbWVtb3J5IHBvb2wgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25dKV0pCiAgCkBAIC00Myw3ICs0NCw3IEBACiAgZmkKICAKICBBTV9DT05ESVRJT05BTChIQVZFX1BBTkdPLCB0ZXN0ICJ4JGhhdmVfcGFuZ28iID0gInh5ZXMiKQotQEAgLTcwMSw2ICs3MDUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKK0BAIC03MDIsNiArNzA2LDcgQEAgQUNfTVNHX1JFU1VMVChbCiAgCUVuYWJsZSBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbgkke2VuYWJsZV9kZXZkb2NzfQogIAogIAl3ZXN0b24tbGF1bmNoIHV0aWxpdHkJCSR7ZW5hYmxlX3dlc3Rvbl9sYXVuY2h9CkBAIC01Miw3ICs1Myw3IEBACiAgCXN5c3RlbWQgbm90aWZ5IHN1cHBvcnQJCSR7ZW5hYmxlX3N5c3RlbWRfbm90aWZ5fQogIAogZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi1pbmRleCAwNDkxODk2Li4wN2U3NDY5IDEwMDY0NAoraW5kZXggMTY2YmYzYi4uNmZiOTIzMiAxMDA2NDQKIC0tLSBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKICsrKyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKIEBAIC01MSw3ICs1MSw5IEBACkBAIC02NSw3ICs2Niw3IEBACiAgCiAgI2lmZGVmIEhBVkVfU1lTVEVNRF9MT0dJTgogICNpbmNsdWRlIDxzeXN0ZW1kL3NkLWxvZ2luLmg+Ci1AQCAtOTMsOCArOTUsMTAgQEAgZHJtU2V0TWFzdGVyKGludCBkcm1fZmQpCitAQCAtMTAxLDggKzEwMywxMCBAQCBkcm1TZXRNYXN0ZXIoaW50IGRybV9mZCkKICAjZW5kaWYKICAKICBzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCB7CkBAIC03Niw3ICs3Nyw3IEBACiAgCWludCB0dHk7CiAgCWludCB0dHlucjsKICAJaW50IHNvY2tbMl07Ci1AQCAtMTgxLDYgKzE4NSw3IEBAIHdlc3Rvbl9sYXVuY2hfYWxsb3dlZChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCitAQCAtMTg5LDYgKzE5Myw3IEBAIHdlc3Rvbl9sYXVuY2hfYWxsb3dlZChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCiAgCXJldHVybiBmYWxzZTsKICB9CiAgCkBAIC04NCw3ICs4NSw3IEBACiAgc3RhdGljIGludAogIHBhbV9jb252ZXJzYXRpb25fZm4oaW50IG1zZ19jb3VudCwKICAJCSAgICBjb25zdCBzdHJ1Y3QgcGFtX21lc3NhZ2UgKiptZXNzYWdlcywKLUBAIC0yMjEsNiArMjI2LDcgQEAgc2V0dXBfcGFtKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKK0BAIC0yMjksNiArMjM0LDcgQEAgc2V0dXBfcGFtKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKICAKICAJcmV0dXJuIDA7CiAgfQpAQCAtOTIsNyArOTMsNyBAQAogIAogIHN0YXRpYyBpbnQKICBzZXR1cF9sYXVuY2hlcl9zb2NrZXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQotQEAgLTQxNCw2ICs0MjAsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKK0BAIC00MjIsNiArNDI4LDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCiAgCWNsb3NlKHdsLT5zaWduYWxmZCk7CiAgCWNsb3NlKHdsLT5zb2NrWzBdKTsKICAKQEAgLTEwMCw3ICsxMDEsNyBAQAogIAlpZiAod2wtPm5ld191c2VyKSB7CiAgCQllcnIgPSBwYW1fY2xvc2Vfc2Vzc2lvbih3bC0+cGgsIDApOwogIAkJaWYgKGVycikKLUBAIC00MjEsNiArNDI4LDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCitAQCAtNDI5LDYgKzQzNiw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQogIAkJCQllcnIsIHBhbV9zdHJlcnJvcih3bC0+cGgsIGVycikpOwogIAkJcGFtX2VuZCh3bC0+cGgsIGVycik7CiAgCX0KQEAgLTEwOCw3ICsxMDksNyBAQAogIAogIAlpZiAoaW9jdGwod2wtPnR0eSwgS0RTS0JNVVRFLCAwKSAmJgogIAkgICAgaW9jdGwod2wtPnR0eSwgS0RTS0JNT0RFLCB3bC0+a2JfbW9kZSkpCi1AQCAtNjAwLDYgKzYwOCw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02MDgsNiArNjE2LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAlzZXRlbnYoIkhPTUUiLCB3bC0+cHctPnB3X2RpciwgMSk7CiAgCXNldGVudigiU0hFTEwiLCB3bC0+cHctPnB3X3NoZWxsLCAxKTsKICAKQEAgLTExNiw3ICsxMTcsNyBAQAogIAllbnYgPSBwYW1fZ2V0ZW52bGlzdCh3bC0+cGgpOwogIAlpZiAoZW52KSB7CiAgCQlmb3IgKGkgPSAwOyBlbnZbaV07ICsraSkgewotQEAgLTYwOCw2ICs2MTcsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCitAQCAtNjE2LDYgKzYyNSw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKICAJCX0KICAJCWZyZWUoZW52KTsKICAJfQpAQCAtMTI0LDE3ICsxMjUsMTggQEAKICAKICAJLyoKICAJICogV2Ugb3BlbiBhIG5ldyBzZXNzaW9uLCBzbyBpdCBtYWtlcyBzZW5zZQotQEAgLTY3NSw3ICs2ODUsOSBAQCBzdGF0aWMgdm9pZAorQEAgLTY4Myw4ICs2OTMsMTAgQEAgc3RhdGljIHZvaWQKICBoZWxwKGNvbnN0IGNoYXIgKm5hbWUpCiAgewogIAlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbYXJncy4uLl0gWy0tIFt3ZXN0b24gYXJncy4uXV1cbiIsIG5hbWUpOwogKyNpZmRlZiBIQVZFX1BBTQotIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXUsIC0tdXNlciAgICAgIFN0YXJ0IHNlc3Npb24gYXMgc3BlY2lmaWVkIHVzZXJuYW1lXG4iKTsKKyAJZnByaW50ZihzdGRlcnIsICIgIC11LCAtLXVzZXIgICAgICBTdGFydCBzZXNzaW9uIGFzIHNwZWNpZmllZCB1c2VybmFtZSxcbiIKKyAJCQkiICAgICAgICAgICAgICAgICAgZS5nLiAtdSBqb2UsIHJlcXVpcmVzIHJvb3QuXG4iKTsKICsjZW5kaWYKLSAJZnByaW50ZihzdGRlcnIsICIgIC10LCAtLXR0eSAgICAgICBTdGFydCBzZXNzaW9uIG9uIGFsdGVybmF0aXZlIHR0eVxuIik7CisgCWZwcmludGYoc3RkZXJyLCAiICAtdCwgLS10dHkgICAgICAgU3RhcnQgc2Vzc2lvbiBvbiBhbHRlcm5hdGl2ZSB0dHksXG4iCisgCQkJIiAgICAgICAgICAgICAgICAgIGUuZy4gLXQgL2Rldi90dHk0LCByZXF1aXJlcyAtdSBvcHRpb24uXG4iKTsKICAJZnByaW50ZihzdGRlcnIsICIgIC12LCAtLXZlcmJvc2UgICBCZSB2ZXJib3NlXG4iKTsKLSAJZnByaW50ZihzdGRlcnIsICIgIC1oLCAtLWhlbHAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlXG4iKTsKLUBAIC02ODgsNyArNzAwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTY5OCw3ICs3MTAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgCWludCBpLCBjOwogIAljaGFyICp0dHkgPSBOVUxMOwogIAlzdHJ1Y3Qgb3B0aW9uIG9wdHNbXSA9IHsKQEAgLTE0NCw4ICsxNDYsOCBAQAogIAkJeyAidHR5IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndCcgfSwKICAJCXsgInZlcmJvc2UiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3YnIH0sCiAgCQl7ICJoZWxwIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdoJyB9LAotQEAgLTcwMCw5ICs3MTQsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTp0Ojp2aCIsIG9wdHMsICZpKSkgIT0gLTEpIHsKK0BAIC03MTAsOSArNzI0LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgInU6dDp2aCIsIG9wdHMsICZpKSkgIT0gLTEpIHsKICAJCXN3aXRjaCAoYykgewogIAkJY2FzZSAndSc6CiArI2lmZGVmIEhBVkVfUEFNCkBAIC0xNTgsNyArMTYwLDcgQEAKICAJCQlicmVhazsKICAJCWNhc2UgJ3QnOgogIAkJCXR0eSA9IG9wdGFyZzsKLUBAIC03NDAsOCArNzU4LDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC03NTMsOCArNzcxLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaWYgKHNldHVwX3R0eSgmd2wsIHR0eSkgPCAwKQogIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogIApAQCAtMTY5LDYgKzE3MSwzIEBACiAgCiAgCWlmIChzZXR1cF9sYXVuY2hlcl9zb2NrZXQoJndsKSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL2ZpeC1taXNzaW5nLWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjMGQ0Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi9maXgtbWlzc2luZy1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1PbiB0aGUgbXVzbCBDIGxpYnJhcnksIHRlc3RzL3RpbWVzcGVjLXRleHQuYyBkb2VzIG5vdCBidWlsZCwgd2l0aCB0aGUKLWZvbGxvd2luZyBlcnJvcjoKLQotICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSB0ZXN0cy90aW1lc3BlYy10ZXN0LmM6MzY6MDoKLSAgICAuL3NoYXJlZC90aW1lc3BlYy11dGlsLmg6NDE6MjE6IHdhcm5pbmc6IOKAmHN0cnVjdCB0aW1lc3BlY+KAmSBkZWNsYXJlZAotICAgIGluc2lkZSBwYXJhbWV0ZXIgbGlzdCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBkZWZpbml0aW9uCi0gICAgb3IgZGVjbGFyYXRpb24KLSAgICAgdGltZXNwZWNfc3ViKHN0cnVjdCB0aW1lc3BlYyAqciwKLSAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgotICAgWy4uLl0KLQotSW5kZWVkLCBzdHJ1Y3QgdGltZXNwZWMgaXMgZGVmaW5lZCBpbiB0aW1lLmgsIHNvIHdlIG11c3QgaW5jbHVkZSBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZmE0MWJkZmJjMGI5NjJmZDczYjg5ZjAxYWFiMWE1MzcwYzljMjhlYl0KLQotU2lnbmVkLW9mZi1ieTogIllhbm4gRS4gTU9SSU4iIDx5YW5uLm1vcmluLjE5OThAZnJlZS5mcj4KLVJldmlld2VkLWJ5OiBQZWtrYSBQYWFsYW5lbiA8cGVra2EucGFhbGFuZW5AY29sbGFib3JhLmNvLnVrPgotCi1JbmRleDogd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZXN0b24tMy4wLjAub3JpZy9zaGFyZWQvdGltZXNwZWMtdXRpbC5oCi0rKysgd2VzdG9uLTMuMC4wL3NoYXJlZC90aW1lc3BlYy11dGlsLmgKLUBAIC0yOCw2ICsyOCw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8dGltZS5oPgotIAotICNkZWZpbmUgTlNFQ19QRVJfU0VDIDEwMDAwMDAwMDAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZTFkMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1NdWx0aS1wbGFuZSBzdWItc2FtcGxlZCB0ZXh0dXJlcyBoYXZlIHBhcnRpYWwgd2lkdGgvaGVpZ2h0LCBlLmcuCi1ZVVY0MjAvSTQyMCBoYXMgYSBmdWxsLXNpemUgWSBwbGFuZSwgZm9sbG93ZWQgYnkgYSBoYWxmLXdpZHRoL2hlaWdodCBVCi1wbGFuZSwgYW5kIGEgaGFsZi13aWR0aC9oZWlnaHQgViBwbGFuZS4KLQotendwX2xpbnV4X2RtYWJ1Zl92MSBhbGxvd3MgY2xpZW50cyB0byBwYXNzIGFuIGV4cGxpY2l0IHBpdGNoIGZvciBlYWNoCi1wbGFuZSwgYnV0IGZvciB3bF9zaG0gdGhpcyBtdXN0IGJlIGluZmVycmVkLiBnbC1yZW5kZXJlciB3YXMgY29ycmVjdGx5Ci1hY2NvdW50aW5nIGZvciB0aGUgd2lkdGggYW5kIGhlaWdodCB3aGVuIHN1YnNhbXBsaW5nLCBidXQgdGhlIHBpdGNoIHdhcwotYmVpbmcgdGFrZW4gYXMgdGhlIHBpdGNoIGZvciB0aGUgZmlyc3QgcGxhbmUuCi0KLVRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVtZW50cyBmb3IgR1N0cmVhbWVyJ3Mgd2F5bGFuZHNpbmssIGluCi1wYXJ0aWN1bGFyLCBhcyB3ZWxsIGFzIG90aGVyIGNsaWVudHMuIEZpeCB0aGUgU0hNIHVwbG9hZCBwYXRoIHRvCi1jb3JyZWN0bHkgc2V0IHRoZSBwaXRjaCBmb3IgZWFjaCBwbGFuZSwgYWNjb3JkaW5nIHRvIHN1YnNhbXBsaW5nLgotCi1UZXN0ZWQgd2l0aDoKLSAgJCBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISB3YXlsYW5kc2luawotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMTgwNzY3L10KLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+Ci1GaXhlczogZmRlZWZlNDI0MTggKCJnbC1yZW5kZXJlcjogYWRkIHN1cHBvcnQgb2YgV0xfU0hNX0ZPUk1BVF9ZVVY0MjAiKQotUmVwb3J0ZWQtYnk6IEZhYmllbiBMYWhvdWRlcmUgPGZhYmllbi5sYWhvdWRlcmVAY29sbGFib3JhLmNvLnVrPgotQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzA2MwotCi0tLS0KLSBsaWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYyBiL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCi1pbmRleCAyNDRjZTMwOS4uNDBiZjBiYjYgMTAwNjQ0Ci0tLS0gYS9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYwotKysrIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKLUBAIC0xNDQ1LDE0ICsxNDQ1LDEzIEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLS0JZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCk7Ci0tCi0gCWlmIChncy0+bmVlZHNfZnVsbF91cGxvYWQpIHsKLSAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTX0VYVCwgMCk7Ci0gCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCAwKTsKLSAJCXdsX3NobV9idWZmZXJfYmVnaW5fYWNjZXNzKGJ1ZmZlci0+c2htX2J1ZmZlcik7Ci0gCQlmb3IgKGogPSAwOyBqIDwgZ3MtPm51bV90ZXh0dXJlczsgaisrKSB7Ci0gCQkJZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBncy0+dGV4dHVyZXNbal0pOwotKwkJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSk7Ci0gCQkJZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gCQkJCSAgICAgZ3MtPmdsX2Zvcm1hdFtqXSwKLSAJCQkJICAgICBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSwKLUBAIC0xNDc3LDYgKzE0NzYsNyBAQCBnbF9yZW5kZXJlcl9mbHVzaF9kYW1hZ2Uoc3RydWN0IHdlc3Rvbl9zdXJmYWNlICpzdXJmYWNlKQotIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTX0VYVCwgci55MSk7Ci0gCQlmb3IgKGogPSAwOyBqIDwgZ3MtPm51bV90ZXh0dXJlczsgaisrKSB7Ci0gCQkJZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBncy0+dGV4dHVyZXNbal0pOwotKwkJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSk7Ci0gCQkJZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gCQkJCQlyLngxIC8gZ3MtPmhzdWJbal0sCi0gCQkJCQlyLnkxIC8gZ3MtPnZzdWJbal0sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8zLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDBjZGMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzMuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiV2VzdG9uLCBhIFdheWxhbmQgY29tcG9zaXRvciIKLURFU0NSSVBUSU9OID0gIldlc3RvbiBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzllZTllNjZiYjBmOTVkMzM4NmE3YWNhZTc4MGI3MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ3ZXN0b24vY29tcG9zaXRvci5jO2VuZGxpbmU9MjY7bWQ1PWUzNDJkZjc0OTE3NGE4ZWUxMTA2NTU4MzE1N2M3YTM4IgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKLQkgICBmaWxlOi8vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggXAotCSAgIGZpbGU6Ly9maXgtbWlzc2luZy1oZWFkZXIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjljNDJhNGM1MWExYjlmMzVkMDQwZmE5ZDQ1YWRhMzZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkZTFkNTVlOGRkNzBjM2NiYjNkMWVjNzJmNjBlNjAwMDAwNDE1NzljYWExZDZhMjYyYmQ5YzM1ZTkzNzIzYTUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1c2VyYWRkIGRpc3Ryb19mZWF0dXJlc19jaGVjawotIyBkZXBlbmRzIG9uIHZpcnR1YWwvZWdsCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1ERVBFTkRTID0gImxpYnhrYmNvbW1vbiBnZGstcGl4YnVmIHBpeG1hbiBjYWlybyBnbGliLTIuMCBqcGVnIgotREVQRU5EUyArPSAid2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJpbnB1dCB2aXJ0dWFsL2VnbCBwYW5nbyB3YXlsYW5kLW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNldHVpZC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmRwLWNvbXBvc2l0b3IgXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ09ORl9hcHBlbmRfcWVtdXg4NiA9ICJcCi0JCVdFU1RPTl9OQVRJVkVfQkFDS0VORD1mYmRldi1iYWNrZW5kLnNvIFwKLQkJIgotRVhUUkFfT0VDT05GX2FwcGVuZF9xZW11eDg2LTY0ID0gIlwKLQkJV0VTVE9OX05BVElWRV9CQUNLRU5EPWZiZGV2LWJhY2tlbmQuc28gXAotCQkiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ2ttcyBmYmRldiB3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCB4MTEnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgotIwotIyBDb21wb3NpdG9yIGNob2ljZXMKLSMKLSMgV2VzdG9uIG9uIEtNUwotUEFDS0FHRUNPTkZJR1trbXNdID0gIi0tZW5hYmxlLWRybS1jb21wb3NpdG9yLC0tZGlzYWJsZS1kcm0tY29tcG9zaXRvcixkcm0gdWRldiB2aXJ0dWFsL21lc2EgbXRkZXYiCi0jIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix2aXJ0dWFsL21lc2EiCi0jIFdlc3RvbiBvbiBYMTEKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEtY29tcG9zaXRvciwtLWRpc2FibGUteDExLWNvbXBvc2l0b3IsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgotIyBIZWFkbGVzcyBXZXN0b24KLVBBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi0tZW5hYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IsLS1kaXNhYmxlLWhlYWRsZXNzLWNvbXBvc2l0b3IiCi0jIFdlc3RvbiBvbiBmcmFtZWJ1ZmZlcgotUEFDS0FHRUNPTkZJR1tmYmRldl0gPSAiLS1lbmFibGUtZmJkZXYtY29tcG9zaXRvciwtLWRpc2FibGUtZmJkZXYtY29tcG9zaXRvcix1ZGV2IG10ZGV2IgotIyB3ZXN0b24tbGF1bmNoCi1QQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLS1lbmFibGUtd2VzdG9uLWxhdW5jaCwtLWRpc2FibGUtd2VzdG9uLWxhdW5jaCxkcm0iCi0jIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaS1yZWNvcmRlciwtLWRpc2FibGUtdmFhcGktcmVjb3JkZXIsbGlidmEiCi0jIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0tZW5hYmxlLXNpbXBsZS1lZ2wtY2xpZW50cywtLWRpc2FibGUtZWdsIC0tZGlzYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsdmlydHVhbC9lZ2wiCi0jIFdlc3RvbiB3aXRoIGNhaXJvIGdsZXN2MiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NhaXJvLWdsZXN2Ml0gPSAiLS13aXRoLWNhaXJvLWdsZXN2MiwtLXdpdGgtY2Fpcm89aW1hZ2UsY2Fpcm8iCi0jIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItLWVuYWJsZS1sY21zLC0tZGlzYWJsZS1sY21zLGxjbXMiCi0jIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItLXdpdGgtd2VicCwtLXdpdGhvdXQtd2VicCxsaWJ3ZWJwIgotIyBXZXN0b24gd2l0aCB1bndpbmRpbmcgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKLSMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW4sLS1kaXNhYmxlLXN5c3RlbWQtbG9naW4sc3lzdGVtZCBkYnVzIgotIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCi1QQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQiCi0jIGNvbG9yZCBDTVMgc3VwcG9ydAotUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKLSMgQ2xpZW50cyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi0tZW5hYmxlLWNsaWVudHMgLS1lbmFibGUtc2ltcGxlLWNsaWVudHMgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwsLS1kaXNhYmxlLWNsaWVudHMgLS1kaXNhYmxlLXNpbXBsZS1jbGllbnRzIgotIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCi0Jcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLTMvKi5sYQotCi0JIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQotCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAotCWZpCi19Ci0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGxpYndlc3Rvbi0zICR7UE59LWV4YW1wbGVzIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgotCi1GSUxFU19saWJ3ZXN0b24tMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLTMvKi5zbyIKLVNVTU1BUllfbGlid2VzdG9uLTMgPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKLQotRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tMy94d2F5bGFuZC5zbyIKLVJERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgotUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZXJhdGlvbi1mb250cyIKLVJSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl81LjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTE3MTA5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fNS4wLjAuYmIKQEAgLTAsMCArMSwxMDggQEAKK1NVTU1BUlkgPSAiV2VzdG9uLCBhIFdheWxhbmQgY29tcG9zaXRvciIKK0RFU0NSSVBUSU9OID0gIldlc3RvbiBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEgV2F5bGFuZCBjb21wb3NpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzllZTllNjZiYjBmOTVkMzM4NmE3YWNhZTc4MGI3MCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ3ZXN0b24vY29tcG9zaXRvci5jO2VuZGxpbmU9Mjc7bWQ1PTZjNTNiYmJkOTkyNzNmNGY3YzRhZmZhODU1YzMzYzBhIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NTJhMDRjZTNjNjVhZjQ4ODRjZmFjNGU1NzIzMWJkYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNWEyMzQyM2JjZmE0NWUzMWUxZGVkYzBjZDUyNGJhNzFlMjkzMGRmMTc0ZmRlOWM5OWI3MWE1MzdjNGU0Y2FmIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXNlcmFkZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKK0RFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCisKK1dFU1RPTl9NQUpPUl9WRVJTSU9OID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoxXSl9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2V0dWlkLWluc3RhbGwgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZHAtY29tcG9zaXRvciBcCisgICAgICAgICAgICAgICAgIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICBjbGllbnRzIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItLWVuYWJsZS1kcm0tY29tcG9zaXRvciwtLWRpc2FibGUtZHJtLWNvbXBvc2l0b3IsZHJtIHVkZXYgdmlydHVhbC9tZXNhIHZpcnR1YWwvbGliZ2JtIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1jb21wb3NpdG9yLC0tZGlzYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsdmlydHVhbC9tZXNhIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXgxMS1jb21wb3NpdG9yLHZpcnR1YWwvbGlieDExIGxpYnhjYiBsaWJ4Y2IgbGlieGN1cnNvciBjYWlybyIKKyMgSGVhZGxlc3MgV2VzdG9uCitQQUNLQUdFQ09ORklHW2hlYWRsZXNzXSA9ICItLWVuYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yLC0tZGlzYWJsZS1oZWFkbGVzcy1jb21wb3NpdG9yIgorIyBXZXN0b24gb24gZnJhbWVidWZmZXIKK1BBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi0tZW5hYmxlLWZiZGV2LWNvbXBvc2l0b3IsLS1kaXNhYmxlLWZiZGV2LWNvbXBvc2l0b3IsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi0tZW5hYmxlLXdlc3Rvbi1sYXVuY2gsLS1kaXNhYmxlLXdlc3Rvbi1sYXVuY2gsZHJtIgorIyBWQS1BUEkgZGVza3RvcCByZWNvcmRlcgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGktcmVjb3JkZXIsLS1kaXNhYmxlLXZhYXBpLXJlY29yZGVyLGxpYnZhIgorIyBXZXN0b24gd2l0aCBFR0wgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCAtLWVuYWJsZS1zaW1wbGUtZWdsLWNsaWVudHMsLS1kaXNhYmxlLWVnbCAtLWRpc2FibGUtc2ltcGxlLWVnbC1jbGllbnRzLHZpcnR1YWwvZWdsIgorIyBXZXN0b24gd2l0aCBjYWlybyBnbGVzdjIgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjYWlyby1nbGVzdjJdID0gIi0td2l0aC1jYWlyby1nbGVzdjIsLS13aXRoLWNhaXJvPWltYWdlLGNhaXJvIgorIyBXZXN0b24gd2l0aCBsY21zIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS1lbmFibGUtbGNtcywtLWRpc2FibGUtbGNtcyxsY21zIgorIyBXZXN0b24gd2l0aCB3ZWJwIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQtbG9naW4sLS1kaXNhYmxlLXN5c3RlbWQtbG9naW4sc3lzdGVtZCBkYnVzIgorIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCitQQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQiCisjIGNvbG9yZCBDTVMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKKyMgQ2xpZW50cyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi0tZW5hYmxlLWNsaWVudHMgLS1lbmFibGUtc2ltcGxlLWNsaWVudHMgLS1lbmFibGUtZGVtby1jbGllbnRzLWluc3RhbGwsLS1kaXNhYmxlLWNsaWVudHMgLS1kaXNhYmxlLXNpbXBsZS1jbGllbnRzIgorIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2VzdG9uIGRvZXNuJ3QgbmVlZCB0aGUgLmxhIGZpbGVzIHRvIGxvYWQgbW9kdWxlcywgc28gd2lwZSB0aGVtCisJcm0gLWYgJHtEfS8ke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059LyoubGEKKworCSMgSWYgWDExLCBzaGlwIGEgZGVza3RvcCBmaWxlIHRvIGxhdW5jaCBpdAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLmRlc2t0b3AgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisKKwkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5wbmcgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCisJZmkKKworCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCWluc3RhbGwgLURtIDY0NCAke1dPUktESVJ9L3h3YXlsYW5kLndlc3Rvbi1zdGFydCAke0R9JHtkYXRhZGlyfS93ZXN0b24tc3RhcnQveHdheWxhbmQKKwlmaQorfQorCitQQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAnJHtQTn0teHdheWxhbmQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBsaWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS93ZXN0b24gJHtiaW5kaXJ9L3dlc3Rvbi10ZXJtaW5hbCAke2JpbmRpcn0vd2VzdG9uLWluZm8gJHtiaW5kaXJ9L3dlc3Rvbi1sYXVuY2ggJHtiaW5kaXJ9L3djYXAtZGVjb2RlICR7bGliZXhlY2Rpcn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvICR7ZGF0YWRpcn0iCisKK0ZJTEVTX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059Lyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICJIZWxwZXIgbGlicmFyeSBmb3IgaW1wbGVtZW50aW5nICd3YXlsYW5kIHdpbmRvdyBtYW5hZ2VycycuIgorCitGSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKiIKKworRklMRVNfJHtQTn0teHdheWxhbmQgPSAiJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS94d2F5bGFuZC5zbyIKK1JERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgorUlJFQ09NTUVORFNfJHtQTn0gPSAid2VzdG9uLWNvbmYgbGliZXJhdGlvbi1mb250cyIKK1JSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFjZjE4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKLXNjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKLWZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKLW5hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKLWlzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhwcm90byIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlMGQxMjlkMDUzMDUxNzZkMWE3OTBlMGFjMWFjYjdmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWJkZDZlYmZhNjJiMWJiZDQ3NDkwNmFjODZhNDBmZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGM2ZDUyMjhhZjg4NTQ3N2I5YWVjNjBjYTZmMTcyNTc4ZTdkMmRlNDIyMzQzNTdhZjYyZmIwMDQzOTQ1M2YyMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE2YmVjMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMS4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKKworREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKK3NjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKK2ZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKK25hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKK2lzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhvcmdwcm90byIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlMGQxMjlkMDUzMDUxNzZkMWE3OTBlMGFjMWFjYjdmIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTg3YzQzOGU3OWY1ZGRiODRhOWM1NzI2YTE2MTA4MTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5OGRmNjllZTVmNDU0MmQ3MTFlMTQwZTFkOTNlMmMzZjI3NzU0MDdjY2JiNzg0OTExMGQ1MmI5MTc4MmE2YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3JnYl8xLjAuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3JnYl8xLjAuNi5iYgppbmRleCA4NzI2ODA0Li5jM2U4NTM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9yZ2JfMS4wLjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvcmdiXzEuMC42LmJiCkBAIC02LDcgKzYsNyBAQAogbG9va3VwLCB0aGUgcmdiIHByb2dyYW0gdG8gY29udmVydCB0aGUgdGV4dCBmaWxlIGludG8gdGhlIGJpbmFyeSBkYXRhYmFzZSBcCiBmb3JtYXQuIgogCi1ERVBFTkRTICs9ICIgeHByb3RvIHV0aWwtbWFjcm9zIgorREVQRU5EUyArPSAiIHhvcmdwcm90byB1dGlsLW1hY3JvcyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVmNTk4YWRiZTI0MWJkMGIwYjkxMTM4MzFmNmUyNDlhIgogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGV2XzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGV2XzEuMi4yLmJiCmluZGV4IGYxNTFiNTcuLjA3MDViN2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hldl8xLjIuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXZfMS4yLjIuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIAogUEUgPSAiMSIKIAotREVQRU5EUyArPSAibGlieHJhbmRyIHhwcm90byIKK0RFUEVORFMgKz0gImxpYnhyYW5kciB4b3JncHJvdG8iCiAKIFNSQ19VUkkgKz0gImZpbGU6Ly9kaWV0LXgxMS5wYXRjaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGV5ZXNfMS4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXllc18xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRkMGNiOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXllc18xLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlgxMSBleWVzIHRoYXQgZm9sbG93IHRoZSBtb3VzZSBjdXJzb3IgZGVtbyIKLURFU0NSSVBUSU9OID0gIlhleWVzIGlzIGEgc21hbGwgWDExIGFwcGxpY2F0aW9uIHRoYXQgc2hvd3MgYSBwYWlyIG9mIGV5ZXMgdGhhdCBtb3ZlIHRvIFwKLWZvbGxvdyB0aGUgbG9jYXRpb24gb2YgdGhlIG1vdXNlIGN1cnNvciBhcm91bmQgdGhlIHNjcmVlbi4iCi0KLVBFID0gIjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNlYTUxYjM2NTA1MWFjMzJkMTgxM2E3ZGJhYTRiZmM2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTMwMzVkY2VjZGJkYjg5ZTg2NDE3N2MwODA5MjQ5ODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc1ZTk4NjgwY2Q1OWUxZjk0MzkwMTYzODY2MDk1NDZlZDA4YzI4NGQwZjA1YTk1Mjc2Zjk2YWNhNmU4YTUyMSIKLQotREVQRU5EUyArPSAibGlieGF1IGxpYnh0IGxpYnhleHQgbGlieG11IGxpYnhyZW5kZXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXllc18xLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hleWVzXzEuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2ODg1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94ZXllc18xLjEuMi5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJYMTEgZXllcyB0aGF0IGZvbGxvdyB0aGUgbW91c2UgY3Vyc29yIGRlbW8iCitERVNDUklQVElPTiA9ICJYZXllcyBpcyBhIHNtYWxsIFgxMSBhcHBsaWNhdGlvbiB0aGF0IHNob3dzIGEgcGFpciBvZiBleWVzIHRoYXQgbW92ZSB0byBcCitmb2xsb3cgdGhlIGxvY2F0aW9uIG9mIHRoZSBtb3VzZSBjdXJzb3IgYXJvdW5kIHRoZSBzY3JlZW4uIgorCitQRSA9ICIxIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zZWE1MWIzNjUwNTFhYzMyZDE4MTNhN2RiYWE0YmZjNiIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmMDU0M2VjODQyODNkZjU3NDNlZWFmYzE3M2JlYTRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU3YmNlYzBkMmQxNjdhZjllNWQ0NGQwZGJkNzRjNmQ3YzBmMDU5MWNkMDYwODk1MmIyM2M3NDlmZGQ5MTA1NTMiCisKK0RFUEVORFMgKz0gImxpYnhhdSBsaWJ4dCBsaWJ4ZXh0IGxpYnhtdSBsaWJ4cmVuZGVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS4zLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMxODUxOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlggV2luZG93IFN5c3RlbSBpbml0aWFsaXplciIKLQotREVTQ1JJUFRJT04gPSAiVGhlIHhpbml0IHByb2dyYW0gaXMgdXNlZCB0byBzdGFydCB0aGUgWCBXaW5kb3cgU3lzdGVtIFwKLXNlcnZlciBhbmQgYSBmaXJzdCBjbGllbnQgcHJvZ3JhbSBvbiBzeXN0ZW1zIHRoYXQgY2Fubm90IHN0YXJ0IFggXAotZGlyZWN0bHkgZnJvbSAvZXRjL2luaXQgb3IgaW4gZW52aXJvbm1lbnRzIHRoYXQgdXNlIG11bHRpcGxlIHdpbmRvdyBcCi1zeXN0ZW1zLiBXaGVuIHRoaXMgZmlyc3QgY2xpZW50IGV4aXRzLCB4aW5pdCB3aWxsIGtpbGwgdGhlIFggc2VydmVyIGFuZCBcCi10aGVuIHRlcm1pbmF0ZS4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4ZjAxZTdiMzk4MDdiZWJlMmI4ZGYxMDFhMDM5YjY4IgotCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGU5Mjg0NTJkZmFmNzM4NTE0MTNhMmQ4YjhjNzYzODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzVkODhkNzM5N2EwN2UwMWRiMjUzMTYzYjdjN2EwMGIyNDliM2QzMGU5OTQ4OWYyNzM0Y2FjOWEwYzc5MDJiMyIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3BhdGhfTUNPT0tJRT0ke2JpbmRpcn0vbWNvb2tpZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgtbWNvb2tpZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyYTA2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0XzEuNC4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIlggV2luZG93IFN5c3RlbSBpbml0aWFsaXplciIKKworREVTQ1JJUFRJT04gPSAiVGhlIHhpbml0IHByb2dyYW0gaXMgdXNlZCB0byBzdGFydCB0aGUgWCBXaW5kb3cgU3lzdGVtIFwKK3NlcnZlciBhbmQgYSBmaXJzdCBjbGllbnQgcHJvZ3JhbSBvbiBzeXN0ZW1zIHRoYXQgY2Fubm90IHN0YXJ0IFggXAorZGlyZWN0bHkgZnJvbSAvZXRjL2luaXQgb3IgaW4gZW52aXJvbm1lbnRzIHRoYXQgdXNlIG11bHRpcGxlIHdpbmRvdyBcCitzeXN0ZW1zLiBXaGVuIHRoaXMgZmlyc3QgY2xpZW50IGV4aXRzLCB4aW5pdCB3aWxsIGtpbGwgdGhlIFggc2VydmVyIGFuZCBcCit0aGVuIHRlcm1pbmF0ZS4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4ZjAxZTdiMzk4MDdiZWJlMmI4ZGYxMDFhMDM5YjY4IgorCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmRhMTU0YjJmODBjYTk2MzdiMWExN2IxM2FmMDg4MGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMwODM1ZWVmMmY1OTc4YTFlMTM0NDkyODE2ODExOTM3M2Y2ZGYxZDBhMzJjMDk1MTVlNTQ1NzIxZWU1ODJlZiIKKworRVhUUkFfT0VDT05GID0gImFjX2N2X3BhdGhfTUNPT0tJRT0ke2JpbmRpcn0vbWNvb2tpZSIKKworUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgtbWNvb2tpZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOWRjMzI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCi0KLURFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKLVhLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoteGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCi1iZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKLQotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLURFUEVORFMgKz0gImxpYnhrYmZpbGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2MyMmIyMzJiYzc4YTMwMzM3MTk4M2UxYjQ4Nzk0YWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM2OWM4NzQ4YzAzYzVhZDlhZmRjOGRmZjlkYjExOTk0ZGQ4NzFiNjE0YzY1Zjg5NDA1MTZkYTZiZjYxY2U2YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZjhlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4yLmJiCkBAIC0wLDAgKzEsMTcgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjb21waWxlIFhLQiBrZXlib2FyZCBkZXNjcmlwdGlvbiIKKworREVTQ1JJUFRJT04gPSAiVGhlIHhrYmNvbXAga2V5bWFwIGNvbXBpbGVyIGNvbnZlcnRzIGEgZGVzY3JpcHRpb24gb2YgYW4gXAorWEtCIGtleW1hcCBpbnRvIG9uZSBvZiBzZXZlcmFsIG91dHB1dCBmb3JtYXRzLiBUaGUgbW9zdCBjb21tb24gdXNlIGZvciBcCit4a2Jjb21wIGlzIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIGtleW1hcCBmaWxlICgueGttIGV4dGVuc2lvbikgd2hpY2ggY2FuIFwKK2JlIHJlYWQgZGlyZWN0bHkgYnkgWEtCLWNhcGFibGUgWCBzZXJ2ZXJzIG9yIHV0aWxpdGllcy4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4NDM2ZTRmNDQ3Njk2NGUyZTJkZDdlN2U0MWUwNzZhIgorCitERVBFTkRTICs9ICJsaWJ4a2JmaWxlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjEyNjEwZGYxOWRmMmFmMzc5N2YyYzEzMGVlMmJjZTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkZDhiY2I5YmU3ZTg1YmQ3Mjk0YWJlMjYxYjhjN2IwNTM5ZDJmYzkzZTQxYjgwZmI4YmQwMTM3NjdjZTg0MjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cHJvcF8xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hwcm9wXzEuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzhiZjA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hwcm9wXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiVXRpbGl0eSB0byBkaXNwbGF5IHdpbmRvdyBhbmQgZm9udCBwcm9wZXJ0aWVzIG9mIGFuIFggc2VydmVyIgotCi1ERVNDUklQVElPTiA9ICJUaGUgeHByb3AgdXRpbGl0eSBpcyBmb3IgZGlzcGxheWluZyB3aW5kb3cgYW5kIGZvbnQgXAotcHJvcGVydGllcyBpbiBhbiBYIHNlcnZlci4gT25lIHdpbmRvdyBvciBmb250IGlzIHNlbGVjdGVkIHVzaW5nIHRoZSBcCi1jb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIHBvc3NpYmx5IGluIHRoZSBjYXNlIG9mIGEgd2luZG93LCBieSBjbGlja2luZyBcCi1vbiB0aGUgZGVzaXJlZCB3aW5kb3cuIEEgbGlzdCBvZiBwcm9wZXJ0aWVzIGlzIHRoZW4gZ2l2ZW4sIHBvc3NpYmx5IHdpdGggXAotZm9ybWF0dGluZyBpbmZvcm1hdGlvbi4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUyMjZhYjhkYjg4YWMwYmMwMzkxNjczYmU0MGM5ZjkxIgotCi1ERVBFTkRTICs9ICJsaWJ4bXUiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYWUzZDJmZGEwNzY4NDAyN2E2NDNjYTc4M2Q1OTVjYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YmVlODhiMTAyNTg2NWFkMTIxZjcyZDMyNTc2ZGQzMDI3YWYxNDQ2Nzc0YWE4MzAwY2NlM2MyNjFkODY5YmM2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHByb3BfMS4yLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94cHJvcF8xLjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTU4ZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHByb3BfMS4yLjMuYmIKQEAgLTAsMCArMSwxOCBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiVXRpbGl0eSB0byBkaXNwbGF5IHdpbmRvdyBhbmQgZm9udCBwcm9wZXJ0aWVzIG9mIGFuIFggc2VydmVyIgorCitERVNDUklQVElPTiA9ICJUaGUgeHByb3AgdXRpbGl0eSBpcyBmb3IgZGlzcGxheWluZyB3aW5kb3cgYW5kIGZvbnQgXAorcHJvcGVydGllcyBpbiBhbiBYIHNlcnZlci4gT25lIHdpbmRvdyBvciBmb250IGlzIHNlbGVjdGVkIHVzaW5nIHRoZSBcCitjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIHBvc3NpYmx5IGluIHRoZSBjYXNlIG9mIGEgd2luZG93LCBieSBjbGlja2luZyBcCitvbiB0aGUgZGVzaXJlZCB3aW5kb3cuIEEgbGlzdCBvZiBwcm9wZXJ0aWVzIGlzIHRoZW4gZ2l2ZW4sIHBvc3NpYmx5IHdpdGggXAorZm9ybWF0dGluZyBpbmZvcm1hdGlvbi4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUyMjZhYjhkYjg4YWMwYmMwMzkxNjczYmU0MGM5ZjkxIgorCitERVBFTkRTICs9ICJsaWJ4bXUiCisKK1BFID0gIjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YmVjYjNkZGM0Njc0ZDc0MTQ4NzE4OWU0Y2UzZDBiNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjJhZmIyOGM4NmQ4NWZmZjEwYTUwMTU2YTdkMGZhOTMwYzgwYWU4NjVkNzBiMjZkODA1ZmQyOGExN2E1MjFiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldF8xLjIuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ODNiNzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldF8xLjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlV0aWxpdHkgZm9yIHNldHRpbmcgdmFyaW91cyB1c2VyIHByZWZlcmVuY2Ugb3B0aW9ucyBvZiB0aGUgZGlzcGxheSIKLQotREVTQ1JJUFRJT04gPSAieHNldCBpcyBhIHV0aWxpdHkgdGhhdCBpcyB1c2VkIHRvIHNldCB2YXJpb3VzIHVzZXIgXAotcHJlZmVyZW5jZSBvcHRpb25zIG9mIHRoZSBkaXNwbGF5LiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iZWE4MWNjOTgyN2NkZjFhZjBlMTJjMmI4MjI4Y2Y4ZCIKLURFUEVORFMgKz0gImxpYnhleHQgbGlieHhmODZtaXNjIGxpYnhtdSBsaWJ4YXUiCi1QRSA9ICIxIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGlzYWJsZS14a2IucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkY2QyMjczODhiNTc0ODdkNTQzY2FiMmZkN2E2MDJkNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MzgyZjRmYjI5Yjg4NjQ3ZTEzZjNiNGJjMjkyNjMxMzQyNzA3NDdmYzE1OWNmYzVmN2UzYWYyMzU4OGM4MDYzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhrYiAtLXdpdGhvdXQtZm9udGNhY2hlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHNldF8xLjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc0ODgzNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hzZXRfMS4yLjQuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiVXRpbGl0eSBmb3Igc2V0dGluZyB2YXJpb3VzIHVzZXIgcHJlZmVyZW5jZSBvcHRpb25zIG9mIHRoZSBkaXNwbGF5IgorCitERVNDUklQVElPTiA9ICJ4c2V0IGlzIGEgdXRpbGl0eSB0aGF0IGlzIHVzZWQgdG8gc2V0IHZhcmlvdXMgdXNlciBcCitwcmVmZXJlbmNlIG9wdGlvbnMgb2YgdGhlIGRpc3BsYXkuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJlYTgxY2M5ODI3Y2RmMWFmMGUxMmMyYjgyMjhjZjhkIgorREVQRU5EUyArPSAibGlieGV4dCBsaWJ4eGY4Nm1pc2MgbGlieG11IGxpYnhhdSIKK1BFID0gIjEiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9kaXNhYmxlLXhrYi5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjcwZWE3YmM3YmFjZjFhMTI0YjE2OTI2MDU4ODNmNjIwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0ZmQ5NTI4MGRmNTJhODhlOWIwYWJjMWZlZTExZGNmMGYzNGZjMjQwNDFiOWY0NWEyNDdlNTJkZjk0MWM5NTciCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUteGtiIC0td2l0aG91dC1mb250Y2FjaGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3aW5pbmZvXzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzIzZDE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3aW5pbmZvXzEuMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiV2luZG93IGluZm9ybWF0aW9uIHV0aWxpdHkgZm9yIFgiCi0KLURFU0NSSVBUSU9OID0gIlh3aW5pbmZvIGlzIGEgdXRpbGl0eSBmb3IgZGlzcGxheWluZyBpbmZvcm1hdGlvbiBhYm91dCBcCi13aW5kb3dzLiAgSW5mb3JtYXRpb24gbWF5IGluY2x1ZGUgd2luZG93IHBvc2l0aW9uLCBzaXplLCBjb2xvciBkZXB0aCwgXAotYW5kIGEgbnVtYmVyIG9mIG90aGVyIGl0ZW1zLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Nzg5NzZjZDMxMTVmNmZhZjYxNWFjY2M0ZTA5NGQ5MGUiCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnhtdSBnZXR0ZXh0LW5hdGl2ZSIKLQotUEUgPSAiMCIKLQotU1JDX1VSSVttZDVzdW1dID0gImI3NzdiYWZiNjc0NTU1ZTQ4ZmQ4NDM3NjE4MjcwOTMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxOGViMGVhOTViZDhkZTc5MDNkZmFhMjY0MjM4MjBjNTIzYWQxNTk4YmUwNzUxZDJkOGI2YTJjMjNiMjNmZjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h3aW5pbmZvXzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYjkwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94d2luaW5mb18xLjEuNC5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJXaW5kb3cgaW5mb3JtYXRpb24gdXRpbGl0eSBmb3IgWCIKKworREVTQ1JJUFRJT04gPSAiWHdpbmluZm8gaXMgYSB1dGlsaXR5IGZvciBkaXNwbGF5aW5nIGluZm9ybWF0aW9uIGFib3V0IFwKK3dpbmRvd3MuICBJbmZvcm1hdGlvbiBtYXkgaW5jbHVkZSB3aW5kb3cgcG9zaXRpb24sIHNpemUsIGNvbG9yIGRlcHRoLCBcCithbmQgYSBudW1iZXIgb2Ygb3RoZXIgaXRlbXMuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ODk3NmNkMzExNWY2ZmFmNjE1YWNjYzRlMDk0ZDkwZSIKK0RFUEVORFMgKz0gImxpYnhleHQgbGlieG11IGdldHRleHQtbmF0aXZlIgorCitQRSA9ICIwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWE1MDViOTFhZTcxNjBiYmRlYzM2MDk2OGQwNjBjODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODM5NDk4YWE0NmI0OTY0OTJhNWM2NWNkNDJjZDJlODZlMGRhODgxNDliMDY3MmU5MGNiOTE2NDhmOGNkNWIwMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1ldmRldl8yLjEwLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YjIyMGMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1ldmRldl8yLjEwLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIGV2ZW50IGRldmljZXMgKGV2ZGV2KSBpbnB1dCBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gImV2ZGV2IGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBMaW51eCdzIGdlbmVyaWMgZXZlbnQgXAotZGV2aWNlcy4gSXQgdGhlcmVmb3JlIHN1cHBvcnRzIGFsbCBpbnB1dCBkZXZpY2VzIHRoYXQgdGhlIGtlcm5lbCBrbm93cyBcCi1hYm91dCwgaW5jbHVkaW5nIG1vc3QgbWljZSBhbmQga2V5Ym9hcmRzLiBcCi1cCi1UaGUgZXZkZXYgZHJpdmVyIGNhbiBzZXJ2ZSBhcyBib3RoIGEgcG9pbnRlciBhbmQgYSBrZXlib2FyZCBpbnB1dCBcCi1kZXZpY2UsIGFuZCBtYXkgYmUgdXNlZCBhcyBib3RoIHRoZSBjb3JlIGtleWJvYXJkIGFuZCB0aGUgY29yZSBwb2ludGVyLiBcCi1NdWx0aXBsZSBpbnB1dCBkZXZpY2VzIGFyZSBzdXBwb3J0ZWQgYnkgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgXAotZHJpdmVyLCB3aXRoIG9uZSBMb2FkIGRpcmVjdGl2ZSBmb3IgZXZkZXYgaW4gdGhlIE1vZHVsZSBzZWN0aW9uIG9mIHlvdXIgXAoteG9yZy5jb25mIGZvciBlYWNoIGlucHV0IGRldmljZSB0aGF0IHdpbGwgdXNlIHRoaXMgZHJpdmVyLiAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlZmUzM2IxY2YwY2FjYmEwZTcyZTNiMGZhMGYwZTE2IgotCi1ERVBFTkRTICs9ICJtdGRldiBsaWJldmRldiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk0YzJjODM1NGM3NGFiMWNmYmJiMGEyMjIwNzhiOWM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllZGFhNjIwNWJhZjZkMjkyMmNjNGRiM2Q4ZTU0YTdlNzc3M2I1ZjczM2IwYWU5MGY2YmU3NzI1Zjk4M2I3MGQiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1ldmRldl8yLjEwLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlMzI1YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtZXZkZXZfMi4xMC42LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gZXZlbnQgZGV2aWNlcyAoZXZkZXYpIGlucHV0IGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAiZXZkZXYgaXMgYW4gWG9yZyBpbnB1dCBkcml2ZXIgZm9yIExpbnV4J3MgZ2VuZXJpYyBldmVudCBcCitkZXZpY2VzLiBJdCB0aGVyZWZvcmUgc3VwcG9ydHMgYWxsIGlucHV0IGRldmljZXMgdGhhdCB0aGUga2VybmVsIGtub3dzIFwKK2Fib3V0LCBpbmNsdWRpbmcgbW9zdCBtaWNlIGFuZCBrZXlib2FyZHMuIFwKK1wKK1RoZSBldmRldiBkcml2ZXIgY2FuIHNlcnZlIGFzIGJvdGggYSBwb2ludGVyIGFuZCBhIGtleWJvYXJkIGlucHV0IFwKK2RldmljZSwgYW5kIG1heSBiZSB1c2VkIGFzIGJvdGggdGhlIGNvcmUga2V5Ym9hcmQgYW5kIHRoZSBjb3JlIHBvaW50ZXIuIFwKK011bHRpcGxlIGlucHV0IGRldmljZXMgYXJlIHN1cHBvcnRlZCBieSBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhpcyBcCitkcml2ZXIsIHdpdGggb25lIExvYWQgZGlyZWN0aXZlIGZvciBldmRldiBpbiB0aGUgTW9kdWxlIHNlY3Rpb24gb2YgeW91ciBcCit4b3JnLmNvbmYgZm9yIGVhY2ggaW5wdXQgZGV2aWNlIHRoYXQgd2lsbCB1c2UgdGhpcyBkcml2ZXIuICIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmVmZTMzYjFjZjBjYWNiYTBlNzJlM2IwZmEwZjBlMTYiCisKK0RFUEVORFMgKz0gIm10ZGV2IGxpYmV2ZGV2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZThiZDFlZGM2NzUxZjkyZTQyNWNhZTdlYmEzYzYxZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODcyNjA3M2U4MTg2MWJjN2IyMzIxZTc2MjcyY2JkYmQzM2M3ZTFhMTIxNTM1YTk4Mjc5NzcyNjViOTAzM2VjMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0YzMzZDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCi0KLURFUEVORFMgKz0gImxpYmlucHV0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGE0N2VmNjJlYWIxZDBlOTIyYThmYTkyOWZmODE3NTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWJjYTU1OGZjMjIyNmYyOTU2OTFmMWNmMzQxMmQ0YzBlZGVhYTQzOWY2NzdjYTI1YjVjOWZhYjMxMGQyMzg3YiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODUzYjViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI4LjAuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJHZW5lcmljIGlucHV0IGRyaXZlciBmb3IgdGhlIFguT3JnIHNlcnZlciBiYXNlZCBvbiBsaWJpbnB1dCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVlNmIyMGVhMmVmOTRhOTk4MTQ1ZjBlYTNmNzg4ZWUwIgorCitERVBFTkRTICs9ICJsaWJpbnB1dCIKKworU1JDX1VSSVttZDVzdW1dID0gIjJkNzUxOWFjMGUzOWQ0Yzg4ZjNiZTMyZTgxYTYzN2FhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxOTk0ZDA2NWZjMjZlODVkMWMzZmM4N2Q4NDc5YjljMjI2OTllZDVhMDExOWRmOThmYmUwMDAwZTg0NjMwYTEiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94b3JnLmNvbmYuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbW91c2VfMS45LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LW1vdXNlXzEuOS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzUwNDc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbW91c2VfMS45LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIG1vdXNlIGlucHV0IGRyaXZlciIKLQotREVTQ1JJUFRJT04gPSAibW91c2UgaXMgYW4gWG9yZyBpbnB1dCBkcml2ZXIgZm9yIG1pY2UuIFRoZSBkcml2ZXIgXAotc3VwcG9ydHMgbW9zdCBhdmFpbGFibGUgbW91c2UgdHlwZXMgYW5kIGludGVyZmFjZXMuICBUaGUgbW91c2UgZHJpdmVyIFwKLWZ1bmN0aW9ucyBhcyBhIHBvaW50ZXIgaW5wdXQgZGV2aWNlLCBhbmQgbWF5IGJlIHVzZWQgYXMgdGhlIFggc2VydmVyJ3MgXAotY29yZSBwb2ludGVyLiBNdWx0aXBsZSBtaWNlIGFyZSBzdXBwb3J0ZWQgYnkgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoaXMgXAotZHJpdmVyLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTBlYTlmOTBkNzJiNmQ5MzI3ZGVkZTVmZmRiMmE1MTAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZTJkNjc5MjgzYTIyYzhlMGRjY2RkOTI0ODU5NDg0NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNDI1ZDViMDVjNmFiNDEyYTI3ZTBhMTEwNmJiODNmOWUyNjYyYjMwNzIxMGFiYmU0ODI3MDg5MjM4N2Y0YjJmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1tb3VzZV8xLjkuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbW91c2VfMS45LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4ZGFiNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbW91c2VfMS45LjMuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBtb3VzZSBpbnB1dCBkcml2ZXIiCisKK0RFU0NSSVBUSU9OID0gIm1vdXNlIGlzIGFuIFhvcmcgaW5wdXQgZHJpdmVyIGZvciBtaWNlLiBUaGUgZHJpdmVyIFwKK3N1cHBvcnRzIG1vc3QgYXZhaWxhYmxlIG1vdXNlIHR5cGVzIGFuZCBpbnRlcmZhY2VzLiAgVGhlIG1vdXNlIGRyaXZlciBcCitmdW5jdGlvbnMgYXMgYSBwb2ludGVyIGlucHV0IGRldmljZSwgYW5kIG1heSBiZSB1c2VkIGFzIHRoZSBYIHNlcnZlcidzIFwKK2NvcmUgcG9pbnRlci4gTXVsdGlwbGUgbWljZSBhcmUgc3VwcG9ydGVkIGJ5IG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGlzIFwKK2RyaXZlci4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZWE5ZjkwZDcyYjZkOTMyN2RlZGU1ZmZkYjJhNTEwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTIxMDQ2OTNiYmNmZTE0MTMzOTdmNzkwNWVlY2QzZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTNlY2IzNTA2MDRkMDViZTk4YjdkNGU1ZGIzYjgxNTVhNDQ4OTAwNjlhN2Q4ZDZiODAwYzBiZWE3OWM4NWNjNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMjdhM2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIHN5bmFwdGljcyB0b3VjaHBhZCBpbnB1dCBkcml2ZXIiCi0KLURFU0NSSVBUSU9OID0gInN5bmFwdGljcyBpcyBhbiBYb3JnIGlucHV0IGRyaXZlciBmb3IgdGhlIHRvdWNocGFkcyBmcm9tIFwKLVN5bmFwdGljcyBJbmNvcnBvcmF0ZWQuIEV2ZW4gdGhvdWdoIHRoZXNlIHRvdWNocGFkcyAoYnkgZGVmYXVsdCwgXAotb3BlcmF0aW5nIGluIGEgY29tcGF0aWJpbGl0eSBtb2RlIGVtdWxhdGluZyBhIHN0YW5kYXJkIG1vdXNlKSBjYW4gYmUgXAotaGFuZGxlZCBieSB0aGUgbm9ybWFsIGV2ZGV2IG9yIG1vdXNlIGRyaXZlcnMsIHRoaXMgZHJpdmVyIGFsbG93cyBtb3JlIFwKLWFkdmFuY2VkIGZlYXR1cmVzIG9mIHRoZSB0b3VjaHBhZCB0byBiZWNvbWUgYXZhaWxhYmxlLiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVhYWNkMzUzNWE3NDE4MjQ5NTVjNWViOGYwNjEzOTgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1OGU1Yjc3MjJhNDAyMTE0MDkzYmYxOTM5NjJkMWUzYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZmJhMzI4OWQ3YTQwMjE3YTE5ZDkwZGI5OGNlMTgxNzcyZjljYTZkNzdlMTg5ODcyN2IwYWZjZjAyMDczYjVhIgotCi1ERVBFTkRTICs9ICJsaWJ4aSBtdGRldiBsaWJ4dHN0IGxpYmV2ZGV2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljc18xLjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzMxODkwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci1pbnB1dC5pbmMKKworU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBzeW5hcHRpY3MgdG91Y2hwYWQgaW5wdXQgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJzeW5hcHRpY3MgaXMgYW4gWG9yZyBpbnB1dCBkcml2ZXIgZm9yIHRoZSB0b3VjaHBhZHMgZnJvbSBcCitTeW5hcHRpY3MgSW5jb3Jwb3JhdGVkLiBFdmVuIHRob3VnaCB0aGVzZSB0b3VjaHBhZHMgKGJ5IGRlZmF1bHQsIFwKK29wZXJhdGluZyBpbiBhIGNvbXBhdGliaWxpdHkgbW9kZSBlbXVsYXRpbmcgYSBzdGFuZGFyZCBtb3VzZSkgY2FuIGJlIFwKK2hhbmRsZWQgYnkgdGhlIG5vcm1hbCBldmRldiBvciBtb3VzZSBkcml2ZXJzLCB0aGlzIGRyaXZlciBhbGxvd3MgbW9yZSBcCithZHZhbmNlZCBmZWF0dXJlcyBvZiB0aGUgdG91Y2hwYWQgdG8gYmVjb21lIGF2YWlsYWJsZS4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1YWFjZDM1MzVhNzQxODI0OTU1YzVlYjhmMDYxMzk4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2ZiNzlkM2M5NzUxNTFmOWJiZjMwYjcyN2MyNjBjYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2FmODM1MjZlZmYxYzc2ZThiOWUxNTUzYjM0MjQ1YzIwM2QwMjkwMjhkODA0NGRkOWRjZjcxZWVmMTAwMTU3NiIKKworREVQRU5EUyArPSAibGlieGkgbXRkZXYgbGlieHRzdCBsaWJldmRldiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZmJkZXZfMC40LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWZiZGV2XzAuNC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmU5YmQxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tZmJkZXZfMC40LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gZmJkZXYgZGlzcGxheSBkcml2ZXIiCi1ERVNDUklQVElPTiA9ICJmYmRldiBpcyBhbiBYb3JnIGRyaXZlciBmb3IgZnJhbWVidWZmZXIgZGV2aWNlcy4gVGhpcyBpcyBhIG5vbi1hY2NlbGVyYXRlZCBkcml2ZXIuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGNiZDk5ZmZmNzczZjkyZTg0NDk0OGY3NGVmMGRmOCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM5MzFjMGUxOWQ0NDFjYzU3NmRjMDg4ZjllYjlmZDczIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlkZDRiMzI2NDk4MjIzYWJiZmRmNzg2MDg5YTQ2ZWEzZGI0ZmE2YmJkMzQxMzA4ZWI0OGE5ZTAwYmMzZmQ1MWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWZiZGV2XzAuNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1mYmRldl8wLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjRhYzg4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1mYmRldl8wLjUuMC5iYgpAQCAtMCwwICsxLDkgQEAKK3JlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gZmJkZXYgZGlzcGxheSBkcml2ZXIiCitERVNDUklQVElPTiA9ICJmYmRldiBpcyBhbiBYb3JnIGRyaXZlciBmb3IgZnJhbWVidWZmZXIgZGV2aWNlcy4gVGhpcyBpcyBhIG5vbi1hY2NlbGVyYXRlZCBkcml2ZXIuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGNiZDk5ZmZmNzczZjkyZTg0NDk0OGY3NGVmMGRmOCIKKworU1JDX1VSSVttZDVzdW1dID0gImYwNzQ3NTY1NTM3NmJlNWExMjRkODE4N2FhY2Q4N2I2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjYzNkODVmMzc4MDIyMTgwZTQzN2E5ZWMwMGE1OWI2Y2I3NjgwZmY3OWM0MDM5NGQ2OTUwNjBhZjIzNzQ2OTkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2Fsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2Fsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWRkMzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotSW5jbHVkZSB4b3JnLXNlcnZlci5oIHRvIGZpeCBidWlsZCBlcnJvcnMgc2VlbiB3aXRoIGdsaWJjIDIuMjAKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3N0cmluZy5oOjYzNDowLAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgveGY4Ni12aWRlby1pbnRlbC8yXzIuOTkuOTEyLXIwL3hmODYtdmlkZW8taW50ZWwtMi45OS45MTIvc3JjL2JhY2tsaWdodC5jOjM5OgotL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy9vcy5oOjU3OToxOiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBvciAnKCcgYmVmb3JlICdfX2V4dGVuc2lvbl9fJwotIHN0cm5kdXAoY29uc3QgY2hhciAqc3RyLCBzaXplX3Qgbik7Ci0gXgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHhmODYtdmlkZW8taW50ZWwtMi45OS45MTIvc3JjL2JhY2tsaWdodC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0geGY4Ni12aWRlby1pbnRlbC0yLjk5LjkxMi5vcmlnL3NyYy9iYWNrbGlnaHQuYwkyMDE0LTA0LTA5IDEwOjQxOjE4LjAwMDAwMDAwMCAtMDcwMAotKysrIHhmODYtdmlkZW8taW50ZWwtMi45OS45MTIvc3JjL2JhY2tsaWdodC5jCTIwMTQtMDgtMjggMTg6NTI6MjUuNTI0MDcwNTg3IC0wNzAwCi1AQCAtMjksNiArMjksNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8eG9yZy1zZXJ2ZXIuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2Rpc2FibGUteDExLWRyaTMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2Rpc2FibGUteDExLWRyaTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZGRkMzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC9kaXNhYmxlLXgxMS1kcmkzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlc2UgbW9kdWxlcyBhcmUgb25seSB1c2VkIGZvciB0ZXN0cyB0aGF0IGRvbid0IGdldCBpbnN0YWxsZWQsIGFuZCB0aGUKLWF1dG9tYXRpYyBkZXRlY3Rpb24gd2l0aG91dCBleHBsaWNpdCBkZXBlbmRlbmNpZXMgbWVhbnMgdGhhdCBhIGJ1aWxkIGNhbiBmaW5kCi1lLmcuIHhzaG1mZW5jZSBhdCBjb25maWd1cmUgdGltZSBidXQgdGhlbiBpdCdzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzeXNyb290IGJ5Ci10aGUgdGltZSBjb21waWxlIGhhcHBlbnMuCi0KLUFzIHRoZSB0ZXN0cyBkb24ndCBnZXQgaW5zdGFsbGVkLCBqdXN0IGRpc2FibGUgdGhlIGNoZWNrcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGJkNjU0ZjMuLjc4YTBlMGQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI3OSArMjc5IEBAIGZpCi0tUEtHX0NIRUNLX01PRFVMRVMoWDExX0RSSTMsIFt4Y2ItZHJpMyB4Y2Itc3luYyB4Y2IteGZpeGVzIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4Y29tcG9zaXRlIHhkYW1hZ2UgeHJlbmRlciB4cmFuZHIgeHhmODZ2bSB4ZXh0IGxpYmRybV0sIFt4MTFfZHJpMz0ieWVzIl0sIFt4MTFfZHJpMz0ibm8iXSkKLSsjUEtHX0NIRUNLX01PRFVMRVMoWDExX0RSSTMsIFt4Y2ItZHJpMyB4Y2Itc3luYyB4Y2IteGZpeGVzIHhjYi1wcmVzZW50IHgxMS14Y2IgeHNobWZlbmNlIHgxMSB4Y29tcG9zaXRlIHhkYW1hZ2UgeHJlbmRlciB4cmFuZHIgeHhmODZ2bSB4ZXh0IGxpYmRybV0sIFt4MTFfZHJpMz0ieWVzIl0sIFt4MTFfZHJpMz0ibm8iXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvZ2xpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2dsaWJjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYTllYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsL2dsaWJjLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0FkZCBhIG1pc3NpbmcgaW5jbHVkZSBuZWVkZWQgZm9yIGdsaWJjIDIuMjggdG8gYXZvaWQ6CisKK3wgLi4vLi4vZ2l0L3Rvb2xzL2JhY2tsaWdodF9oZWxwZXIuYzogSW4gZnVuY3Rpb24gJ21haW4nOgorfCAuLi8uLi9naXQvdG9vbHMvYmFja2xpZ2h0X2hlbHBlci5jOjU0OjM0OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ21ham9yJyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KK3wgICBpZiAoZmQgPCAwIHx8IGZzdGF0KGZkLCAmc3QpIHx8IG1ham9yKHN0LnN0X2RldikpCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgorfCAuLi8uLi9naXQvdG9vbHMvYmFja2xpZ2h0X2hlbHBlci5jOjU0OjM0OiB3YXJuaW5nOiBuZXN0ZWQgZXh0ZXJuIGRlY2xhcmF0aW9uIG9mICdtYWpvcicgWy1XbmVzdGVkLWV4dGVybnNdCit8IGNjMTogc29tZSB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycworfCBNYWtlZmlsZTo2NjY6IHJlY2lwZSBmb3IgdGFyZ2V0ICdiYWNrbGlnaHRfaGVscGVyLm8nIGZhaWxlZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMTgvOC8xMgorCitJbmRleDogZ2l0L3Rvb2xzL2JhY2tsaWdodF9oZWxwZXIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Rvb2xzL2JhY2tsaWdodF9oZWxwZXIuYworKysrIGdpdC90b29scy9iYWNrbGlnaHRfaGVscGVyLmMKK0BAIC04LDYgKzgsNyBAQAorIAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgorIAorICNpZiBNQUpPUl9JTl9NS0RFVgorICNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggMjYyM2NiMi4uNjU1ZmQ0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKQEAgLTE0LDI4ICsxNCwyNSBAQAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2RyaXZlci94Zjg2LXZpZGVvLWludGVsIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUteDExLWRyaTMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1Db2ZmZWVsYWtlLVBDSS1JRHMtZm9yLVMtU2t1cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nbGliYy5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gImZhMTk2YTY2ZTUyYzBjNjI0ZmU1ZDM1MGFmN2E1ZTdiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYjc4MWVlYTA1NTU4MjgyMGExMjNjNDdiNjI0MTFiZGY2YWFiZjRmMDNkYzA1NjhmYWVjNTVmYWY5NjY3YzkiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKIERFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGRybSBsaWJwY2lhY2Nlc3MgcGl4bWFuIgogCi1QQUNLQUdFQ09ORklHID8/PSAieHZtYyB1eGEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICJ4dm1jIHV4YSB1ZGV2ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2RyaSBkcmkyIGRyaTMnLCAnJywgZCl9IgogCiBQQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpLC0tZGlzYWJsZS1kcmkiCi1QQUNLQUdFQ09ORklHW2RyaTFdID0gIi0tZW5hYmxlLWRyaTEsLS1kaXNhYmxlLWRyaTEseGY4NmRyaXByb3RvIgotUEFDS0FHRUNPTkZJR1tkcmkyXSA9ICItLWVuYWJsZS1kcmkyLC0tZGlzYWJsZS1kcmkyLGRyaTJwcm90byIKLVBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyxkcmkzcHJvdG8iCitQQUNLQUdFQ09ORklHW2RyaTFdID0gIi0tZW5hYmxlLWRyaTEsLS1kaXNhYmxlLWRyaTEiCitQQUNLQUdFQ09ORklHW2RyaTJdID0gIi0tZW5hYmxlLWRyaTIsLS1kaXNhYmxlLWRyaTIiCitQQUNLQUdFQ09ORklHW2RyaTNdID0gIi0tZW5hYmxlLWRyaTMsLS1kaXNhYmxlLWRyaTMiCiBQQUNLQUdFQ09ORklHW3NuYV0gPSAiLS1lbmFibGUtc25hLC0tZGlzYWJsZS1zbmEiCiBQQUNLQUdFQ09ORklHW3V4YV0gPSAiLS1lbmFibGUtdXhhLC0tZGlzYWJsZS11eGEiCiBQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsdWRldiIKIFBBQ0tBR0VDT05GSUdbeHZtY10gPSAiLS1lbmFibGUteHZtYywtLWRpc2FibGUteHZtYyxsaWJ4dm1jIHhjYi11dGlsIgotUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzLGxpYnhpbmVyYW1hIGxpYnhyYW5kciBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyBsaWJ4Y3Vyc29yIGxpYnh0c3QgbGlieGV4dCBsaWJ4cmVuZGVyIgorUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzLGxpYnhpbmVyYW1hIGxpYnhyYW5kciBsaWJ4ZGFtYWdlIGxpYnhmaXhlcyBsaWJ4Y3Vyc29yIGxpYnh0c3QgbGlieHJlbmRlciBsaWJ4c2NybnNhdmVyIGxpYnhleHQgbGlieDExIHBpeG1hbiBsaWJ4Y2IgbGlieHNobWZlbmNlIgogCiAjIC0tZW5hYmxlLWttcy1vbmx5IG9wdGlvbiBpcyByZXF1aXJlZCBieSBST09UTEVTU19YCiBFWFRSQV9PRUNPTkYgKz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCAiUk9PVExFU1NfWCIsICIxIiwgIiAtLWVuYWJsZS1rbXMtb25seSIsICIiLCBkICl9JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwXzAuNC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwXzAuNC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYzNjM2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcF8wLjQuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItdmlkZW8uaW5jCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gVGV4YXMgSW5zdHJ1bWVudHMgT01BUCBmcmFtZWJ1ZmZlciBkcml2ZXIiCi0KLVNVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gVEkgT01BUCBpbnRlZ3JhdGVkIGdyYXBoaWNzIGNoaXBzZXRzIGRyaXZlciIKLQotREVTQ1JJUFRJT04gPSAiT3Blbi1zb3VyY2UgWC5vcmcgZ3JhcGhpY3MgZHJpdmVyIGZvciBUSSBPTUFQIGdyYXBoaWNzIFwKLUN1cnJlbnRseSByZWxpZXMgb24gYSBjbG9zZWQtc291cmNlIHN1Ym1vZHVsZSBmb3IgRVhBIGFjY2VsZXJhdGlvbiBvbiBcCi10aGUgZm9sbG93aW5nIGNoaXBzZXRzOiBcCi0gICsgT01BUDM0MzAgXAotICArIE9NQVAzNjMwIFwKLSAgKyBPTUFQNDQzMCBcCi0gICsgT01BUDQ0NjAgXAotICArIE9NQVA1NDMwIFwKLSAgKyBPTUFQNTQzMiBcCi1cCi1OT1RFOiB0aGlzIGRyaXZlciBpcyB3b3JrIGluIHByb2dyZXNzLi4gIHlvdSBwcm9iYWJseSBkb24ndCB3YW50IHRvIHRyeSBcCi1hbmQgdXNlIGl0IHlldC4gIFRoZSBBUEkvQUJJIGJldHdlZW4gZHJpdmVyIGFuZCBrZXJuZWwsIGFuZCBkcml2ZXIgYW5kIFwKLWFjY2VsZXJhdGlvbiBzdWJtb2R1bGVzIGlzIG5vdCBzdGFibGUgeWV0LiAgVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFwKLW9tYXBkcm0ga2VybmVsIGRyaXZlciB3LyBHRU0gc3VwcG9ydC4gXAotIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwY2U1ZGUzYjExMTMxNWVhNjUyYTVmNzRlYzBjNjAyIgotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgbGliZHJtIHhmODZkcmlwcm90byIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNiOGVhNWU4ZmJhNjMzNTVjMGRjNjY4MWM0OWQ1ZmU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzZTdkNDIxMDc1MjFlNjFmNjE5ODBlYWVhNjRmYjQ1MmU4N2I3Yjk0MjcyZTQ4OTM4YWM4ZDkwNGNjZmFiNWEiCi0KLUNGTEFHUyArPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0veG9yZyAiCi0KLSMgVXNlIG92ZXJsYXkgMiBvbiBvbWFwMyB0byBlbmFibGUgb3RoZXIgYXBwcyB0byB1c2Ugb3ZlcmxheSAxIChlLmcuIGRtYWkgb3Igb21hcGZicGxheSkKLWRvX2NvbXBpbGVfcHJlcGVuZF9hcm12N2EgKCkgewotICAgICAgICBzZWQgLWkgLWUgczpmYjE6ZmIyOmcgJHtTfS9zcmMvb21hcF94di5jCi19Ci0KLXB5dGhvbiAoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiJ29wZW5nbCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMxOTIxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDI4YzAwNmM5NGU1N2VhNzFkZjExZWM0ZmZmNzlkN2ZmY2ZjNDg2MGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYXIgTWNLb24gPEZhck1jS29uQGJ1Z2xhYnMubmV0PgotRGF0ZTogVHVlLCAzIE1heSAyMDExIDIwOjU5OjA0ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnRzIG9tYXBmYiBmcm9tIGZyb20gY3Jhc2hpbmcgd2hlbiBwaXhlbGNsb2NrIG9mIDAgaXMKLSBzZW50IHRvIGl0LgotCi1EdWUgdG8gYSBMaW51eCBkZXNpZ24gYnVnIGl0IGlzIGVhc3kgdG8gZ2V0IGEgcGl4ZWxjbG9jayBzZXQgdG8gemVybwotd2hlbiBjaGFuZ2luZyBkaXNwbGF5cyBhdCBydW50aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIHNyYy9vbWFwZmItb3V0cHV0LmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvb21hcGZiLW91dHB1dC5jIGIvc3JjL29tYXBmYi1vdXRwdXQuYwotaW5kZXggZjhiNGRiMy4uNGQ1OTI2NSAxMDA2NDQKLS0tLSBhL3NyYy9vbWFwZmItb3V0cHV0LmMKLSsrKyBiL3NyYy9vbWFwZmItb3V0cHV0LmMKLUBAIC0xMjUsOCArMTI1LDEzIEBAIE9NQVBGQk91dHB1dEdldE1vZGVzKHhmODZPdXRwdXRQdHIgb3V0cHV0KQotIAkvKiBPbmx5IHBvcHVsYXRlIHRoZSBuYXRpdmUgKGN1cnJlbnQpIG1vZGUgKi8KLSAJbW9kZSA9IGNhbGxvYygxLCBzaXplb2YoRGlzcGxheU1vZGVSZWMpKTsKLSAJbW9kZS0+dHlwZSAgICAgIHw9IE1fVF9QUkVGRVJSRUQ7Ci0tCW1vZGUtPkNsb2NrID0gUElDT1MyS0haKG9mYi0+c3RhdGVfaW5mby5waXhjbG9jayk7Ci0tCW1vZGUtPlN5bnRoQ2xvY2sgPSBQSUNPUzJLSFoob2ZiLT5zdGF0ZV9pbmZvLnBpeGNsb2NrKTsKLSsJaWYgKG9mYi0+c3RhdGVfaW5mby5waXhjbG9jayA9PSAwKSB7Ci0rCQltb2RlLT5DbG9jayA9IDA7Ci0rCQltb2RlLT5TeW50aENsb2NrID0gMDsKLSsJfSBlbHNlIHsKLSsJCW1vZGUtPkNsb2NrID0gUElDT1MyS0haKG9mYi0+c3RhdGVfaW5mby5waXhjbG9jayk7Ci0rCQltb2RlLT5TeW50aENsb2NrID0gUElDT1MyS0haKG9mYi0+c3RhdGVfaW5mby5waXhjbG9jayk7Ci0rCX0KLSAJbW9kZS0+SERpc3BsYXkgICA9IG9mYi0+c3RhdGVfaW5mby54cmVzOwotIAltb2RlLT5IU3luY1N0YXJ0ID0gbW9kZS0+SERpc3BsYXkKLSAJICAgICAgICAgICAgICAgICAgKyBvZmItPnN0YXRlX2luZm8ucmlnaHRfbWFyZ2luOwotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVJldmVydC1TZXQtYS1sYXJnZS1DUlRDLXVwcGVyLWxpbWl0LXRvLW5vdC1wcnVuZS1sYXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVJldmVydC1TZXQtYS1sYXJnZS1DUlRDLXVwcGVyLWxpbWl0LXRvLW5vdC1wcnVuZS1sYXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYjAxZDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMS1SZXZlcnQtU2V0LWEtbGFyZ2UtQ1JUQy11cHBlci1saW1pdC10by1ub3QtcHJ1bmUtbGFyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA4ZmI3ZDBmOTlkNGFmYmI1NzRiMzBjYjRmMWU2NmE4Zjg5ZDk0YWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMjYgSmFuIDIwMTEgMTI6MDQ6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzZdIFJldmVydCAiU2V0IGEgbGFyZ2UgQ1JUQyB1cHBlciBsaW1pdCB0byBub3QgcHJ1bmUgbGFyZ2VyCi0gcmVzb2x1dGlvbnMiCi0KLVBpY3R1cmUgaXMgZ2FyYmxlZCBhZnRlciBzd2l0Y2hpbmcgcmVzb2x1dGlvbnMsIHNvIHJldmVydCBpdC4KLVZpcnR1YWwgc2l6ZSB0b28gYmlnLCByZXZlcnQgdGhlIGNvbW1pdCA5YzRkNzU5MmRjYjdkYzIwYTQ4YTZmOTQxZDlkOTRiZDczZDM0MTUzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL29tYXBmYi1jcnRjLmMgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9vbWFwZmItY3J0Yy5jIGIvc3JjL29tYXBmYi1jcnRjLmMKLWluZGV4IDlhYWE1MmYuLmNiZWZmMzUgMTAwNjQ0Ci0tLS0gYS9zcmMvb21hcGZiLWNydGMuYwotKysrIGIvc3JjL29tYXBmYi1jcnRjLmMKLUBAIC0xOTAsMTMgKzE5MCwxMyBAQCBPTUFQRkJDUlRDSW5pdChTY3JuSW5mb1B0ciBwU2NybikKLSAJICogSW4gcHJhY3Rpc2UsIHRoaXMgZG9lc24ndCBzZWVtIHRvIGJlIHN1cHBvcnRlZC4KLSAJICogKG5vIHdheSB0byBzZXR1cCB0aGUgb3ZlcmxheSBvZmZzZXQvYmFzZSBhZGRyZXNzKQotIAkgKi8KLS0JIC8qIEZJWE1FOiBmaWd1cmUgb3V0IHdoYXQgbWFrZXMgc2Vuc2UgaGVyZS4gQSBrbm93biBtYXggcmVzb2x1dGlvbj8KLS0JICAqIGZyYW1lYnVmZmVyIHNpemU/Ci0tCSAgKi8KLSAJeGY4NkNydGNTZXRTaXplUmFuZ2UocFNjcm4sCi0tCSAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDIwNDgsIDIwNDgpOwotKwkgICAgICAgICAgICAgICAgICAgICA4LCA4LAotKwkgICAgICAgICAgICAgICAgICAgICBvZmItPnN0YXRlX2luZm8ueHJlc192aXJ0dWFsLAotKwkgICAgICAgICAgICAgICAgICAgICBvZmItPnN0YXRlX2luZm8ueXJlc192aXJ0dWFsKTsKLSAKLSAJb2ZiLT5jcnRjID0geGY4NkNydGNDcmVhdGUocFNjcm4sICZPTUFQRkJDcnRjRnVuY3MpOwotKwotIH0KLSAKLSAKLS0tIAotMS44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMi1SZXZlcnQtU2V0LXZpcnR1YWwtc2l6ZS13aGVuLWNvbmZpZ3VyaW5nLWZyYW1lYnVmZmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMi1SZXZlcnQtU2V0LXZpcnR1YWwtc2l6ZS13aGVuLWNvbmZpZ3VyaW5nLWZyYW1lYnVmZmVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODNhOTg5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDItUmV2ZXJ0LVNldC12aXJ0dWFsLXNpemUtd2hlbi1jb25maWd1cmluZy1mcmFtZWJ1ZmZlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gODU1YzMzM2FjMGQxNjM1MGY4OTVmMWQxYjkzOTFlOWNiYjBiNmRiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBXZWQsIDI2IEphbiAyMDExIDEzOjI3OjIwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi82XSBSZXZlcnQgIlNldCB2aXJ0dWFsIHNpemUgd2hlbiBjb25maWd1cmluZyBmcmFtZWJ1ZmZlciIKLQotVmlydHVhbCBzaXplIHRvbyBiaWcsIHNvIHJldmVydCBpdC4KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAyNjUzZWYwNzg4M2ZiZDFhNWU3MDI1ZjkzMDBjZjg5Yjc5YmE0MjlhLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL29tYXBmYi1jcnRjLmMgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvb21hcGZiLWNydGMuYyBiL3NyYy9vbWFwZmItY3J0Yy5jCi1pbmRleCBjYmVmZjM1Li45NjU1ZGIyIDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1jcnRjLmMKLSsrKyBiL3NyYy9vbWFwZmItY3J0Yy5jCi1AQCAtOTgsOCArOTgsNiBAQCBPTUFQRkJDcnRjQ29tbWl0Q2hhbmdlTW9kZSAoeGY4NkNydGNQdHIgY3J0YykKLSAJdiA9IG9mYi0+c3RhdGVfaW5mbzsKLSAJdi54cmVzID0gbW9kZS0+SERpc3BsYXk7Ci0gCXYueXJlcyA9IG1vZGUtPlZEaXNwbGF5OwotLQl2LnhyZXNfdmlydHVhbCA9IGNydGMtPnNjcm4tPnZpcnR1YWxYOwotLQl2LnlyZXNfdmlydHVhbCA9IGNydGMtPnNjcm4tPnZpcnR1YWxZOwotIAl2LmFjdGl2YXRlID0gRkJfQUNUSVZBVEVfTk9XOwotIAl2LnBpeGNsb2NrID0gS0haMlBJQ09TKG1vZGUtPkNsb2NrID8gbW9kZS0+Q2xvY2sgOiA1NjAwMCk7Ci0gCXYubGVmdF9tYXJnaW4gPSBtb2RlLT5IVG90YWwgLSBtb2RlLT5IU3luY0VuZDsKLS0tIAotMS44LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMy1mb3JjZS1wbGFpbi1tb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwMy1mb3JjZS1wbGFpbi1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2VhN2MxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDMtZm9yY2UtcGxhaW4tbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gMjUyZjQ0YzA3MmQzNDQ3YTMyMTI3ZmM5YWZlNWQwZDQwZjNjNTEwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1EYXRlOiBXZWQsIDI2IEphbiAyMDExIDEzOjIwOjIwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy82XSBmb3JjZSAncGxhaW4nIG1vZGUKLQotVGhlIG5ldyBEU1MgbW9kZSBicmVha3MgWFYsIHNvIGZvcmNlIHBsYWluIG1vZGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvb21hcGZiLWRyaXZlci5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1kcml2ZXIuYyBiL3NyYy9vbWFwZmItZHJpdmVyLmMKLWluZGV4IDAxOGUwNDAuLjQ4YWEwOWMgMTAwNjQ0Ci0tLS0gYS9zcmMvb21hcGZiLWRyaXZlci5jCi0rKysgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1AQCAtMzI2LDcgKzMyNiw3IEBAIE9NQVBGQlByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAJT01BUEZCUHJvYmVDb250cm9sbGVyKG9mYi0+Y3RybF9uYW1lKTsKLSAKLSAJLyogRG8gd2UgaGF2ZSB0aGUgRFNTIGtlcm5lbCBBUEk/ICovCi0tCWlmIChzdGF0KFNZU0ZTX0RTU19ESVIsICZzdCkgPT0gMCkgewotKwlpZiAoMCkgeyAvL3N0YXQoU1lTRlNfRFNTX0RJUiwgJnN0KSA9PSAwKSB7Ci0gCQlvZmItPmRzcyA9IFRSVUU7Ci0gCX0gZWxzZSB7Ci0gCQlvZmItPmRzcyA9IEZBTFNFOwotLS0gCi0xLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA0LWJsYWNrbGlzdC10di1vdXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA0LWJsYWNrbGlzdC10di1vdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYWM5YTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNC1ibGFja2xpc3QtdHYtb3V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBjZmE0NmI2N2Y1OTExNWY2ZDhlZjk0MTRhZjYwMzgwNzQ5ZmYzZWIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMjYgSmFuIDIwMTEgMTM6MjE6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzZdIGJsYWNrbGlzdCB0diBvdXQKLQotVGhlIHR2LW91dCBnZXRzIGFkZGVkIGxhc3QgYW5kIHRoZSBkcml2ZXIgdHJpZXMgdG8gcmVjb25maWd1cmUgZHZpIHRvIFRWIHJlc29sdXRpb25zLCB3aGljaCBmYWlscy4gc28gYmxhY2tsaXN0IGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL29tYXBmYi1vdXRwdXQtZHNzLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvb21hcGZiLW91dHB1dC1kc3MuYyBiL3NyYy9vbWFwZmItb3V0cHV0LWRzcy5jCi1pbmRleCA2Y2M1MmRlLi44M2NiNzExIDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi1vdXRwdXQtZHNzLmMKLSsrKyBiL3NyYy9vbWFwZmItb3V0cHV0LWRzcy5jCi1AQCAtMjA1LDYgKzIwNSwxMCBAQCBPTUFQRkJEU1NPdXRwdXREZXRlY3QgKHhmODZPdXRwdXRQdHIgb3V0cHV0KQotIAlpZihvZmItPnRpbWluZ3NbaWR4XVswXSA9PSAnXDAnKQotIAkJcmV0dXJuIFhGODZPdXRwdXRTdGF0dXNEaXNjb25uZWN0ZWQ7Ci0gCi0rCS8vIEhhY2sgdG8gZGlzYWJsZSB0aGUgdHYgb3V0Ci0rCWlmIChzdHJuY21wKG91dHB1dC0+bmFtZSwgInR2IiwgMikgPT0gMCkKLSsJCXJldHVybiBYRjg2T3V0cHV0U3RhdHVzRGlzY29ubmVjdGVkOwotKwotIAlyZXR1cm4gWEY4Nk91dHB1dFN0YXR1c0Nvbm5lY3RlZDsKLSB9Ci0gCi0tLSAKLTEuOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDUtQXR0ZW1wdC10by1maXgtVlJGQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDUtQXR0ZW1wdC10by1maXgtVlJGQi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiMjg0MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA1LUF0dGVtcHQtdG8tZml4LVZSRkIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotRnJvbSA4YjFmNjk3YTYwZTM1YWI4MmZmZmRhYmZhZWZkYjQ1ZTlhOWRmMzc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRWluby1WaWxsZSBUYWx2YWxhIDx0YWx2YWxhQHN0YW5mb3JkLmVkdT4KLURhdGU6IFR1ZSwgMjMgQXVnIDIwMTEgMTg6Mzc6MDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzZdIEF0dGVtcHQgdG8gZml4IFZSRkIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWh0dHA6Ly9kb21pbmlvbi50aHJ1aGVyZS5uZXQvZ2l0L2NnaXQuY2dpL3hmODYtdmlkZW8tb21hcGZiL2NvbW1pdC8/aD1rb2VuL2ZpeHVwcyZpZD02ODMzZmM5Zjc5NTI2NWU0OTQzZDI0ODEwM2ZiYWYzNDYzYjUxNWQ2Ci0KLVNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBLcnp5c3prb3dpYWsgPGRvc0Bkb3Nvd2lza28ubmV0PgotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5jIHwgIDQgKy0tCi0gc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5oIHwgIDIgKy0KLSBzcmMvb21hcGZiLWRyaXZlci5jICAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrLS0tCi0gc3JjL29tYXBmYi14di1ibGl6emFyZC5jICAgICAgIHwgIDEgKwotIHNyYy9vbWFwZmIteHYtZ2VuZXJpYy5jICAgICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIHNyYy9vbWFwZmIteHYuYyAgICAgICAgICAgICAgICB8ICAzICsrCi0gNiBmaWxlcyBjaGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuYyBiL3NyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuYwotaW5kZXggZGNlZmE5Yi4uZDQzNDI3ZCAxMDA2NDQKLS0tLSBhL3NyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuYwotKysrIGIvc3JjL2ltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5jCi1AQCAtMzgsMTMgKzM4LDEzIEBACi0gI2luY2x1ZGUgImltYWdlLWZvcm1hdC1jb252ZXJzaW9ucy5oIgotIAotIC8qIEJhc2ljIGxpbmUtYmFzZWQgY29weSBmb3IgcGFja2VkIGZvcm1hdHMgKi8KLS12b2lkIHBhY2tlZF9saW5lX2NvcHkoaW50IHcsIGludCBoLCBpbnQgc3RyaWRlLCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRlc3QpCi0rdm9pZCBwYWNrZWRfbGluZV9jb3B5KGludCB3LCBpbnQgaCwgaW50IHNyY19zdHJpZGUsIGludCBkc3Rfc3RyaWRlLCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRlc3QpCi0gewotIAlpbnQgaTsKLSAJaW50IGxlbiA9IHcgKiAyOwotIAlmb3IgKGkgPSAwOyBpIDwgaDsgaSsrKQotIAl7Ci0tCQltZW1jcHkoZGVzdCArIGkgKiBsZW4sIHNyYyArIGkgKiBzdHJpZGUsIGxlbik7Ci0rCQltZW1jcHkoZGVzdCArIGkgKiBkc3Rfc3RyaWRlLCBzcmMgKyBpICogc3JjX3N0cmlkZSwgbGVuKTsKLSAJfQotIH0KLSAKLWRpZmYgLS1naXQgYS9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmggYi9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmgKLWluZGV4IDU4NDg5NmEuLmJhN2NhZjIgMTAwNjQ0Ci0tLS0gYS9zcmMvaW1hZ2UtZm9ybWF0LWNvbnZlcnNpb25zLmgKLSsrKyBiL3NyYy9pbWFnZS1mb3JtYXQtY29udmVyc2lvbnMuaAotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi0gLyogQmFzaWMgbGluZS1iYXNlZCBjb3B5IGZvciBwYWNrZWQgZm9ybWF0cyAqLwotLXZvaWQgcGFja2VkX2xpbmVfY29weShpbnQgdywgaW50IGgsIGludCBzdHJpZGUsIHVpbnQ4X3QgKnNyYywgdWludDhfdCAqZGVzdCk7Ci0rdm9pZCBwYWNrZWRfbGluZV9jb3B5KGludCB3LCBpbnQgaCwgaW50IHNyY19zdHJpZGUsIGludCBkc3Rfc3RyaWRlLCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgKmRlc3QpOwotIAotIC8qIEJhc2ljIEMgaW1wbGVtZW50YXRpb24gb2YgWVYxMi9JNDIwIHRvIFVZVlkgY29udmVyc2lvbiAqLwotIHZvaWQgdXYxMl90b191eXZ5KGludCB3LCBpbnQgaCwgaW50IHlfcGl0Y2gsIGludCB1dl9waXRjaCwgdWludDhfdCAqeV9wLCB1aW50OF90ICp1X3AsIHVpbnQ4X3QgKnZfcCwgdWludDhfdCAqZGVzdCk7Ci1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1kcml2ZXIuYyBiL3NyYy9vbWFwZmItZHJpdmVyLmMKLWluZGV4IDQ4YWEwOWMuLjA3OTg5ZjUgMTAwNjQ0Ci0tLS0gYS9zcmMvb21hcGZiLWRyaXZlci5jCi0rKysgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1AQCAtNjYsNiArNjYsNyBAQAotICNkZWZpbmUgT01BUEZCX1ZFUlNJT04gMTAwMAotICNkZWZpbmUgT01BUEZCX0RSSVZFUl9OQU1FICJPTUFQRkIiCi0gI2RlZmluZSBPTUFQRkJfTkFNRSAib21hcGZiIgotKyNkZWZpbmUgRU5GT1JDRV9NT0RFUwotIAotIHN0YXRpYyBCb29sIE9NQVBGQlByb2JlKERyaXZlclB0ciBkcnYsIGludCBmbGFncyk7Ci0gc3RhdGljIEJvb2wgT01BUEZCUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKTsKLUBAIC0xMDUsMTEgKzEwNiwxMyBAQCBzdGF0aWMgU3ltVGFiUmVjIE9NQVBGQkNoaXBzZXRzW10gPSB7Ci0gdHlwZWRlZiBlbnVtIHsKLSAJT1BUSU9OX0FDQ0VMTUVUSE9ELAotIAlPUFRJT05fRkIsCi0rCU9QVElPTl9ST1RBVEUsCi0gfSBGQkRldk9wdHM7Ci0gCi0gc3RhdGljIGNvbnN0IE9wdGlvbkluZm9SZWMgT01BUEZCT3B0aW9uc1tdID0gewotIAl7IE9QVElPTl9BQ0NFTE1FVEhPRCwJIkFjY2VsTWV0aG9kIiwJT1BUVl9TVFJJTkcsCXswfSwJRkFMU0UgfSwKLSAJeyBPUFRJT05fRkIsCQkiZmIiLAkJT1BUVl9TVFJJTkcsCXswfSwJRkFMU0UgfSwKLSsJeyBPUFRJT05fUk9UQVRFLAkicm90YXRpb24iLAlPUFRWX1NUUklORywJezB9LAlGQUxTRSB9LAotIAl7IC0xLAkJCU5VTEwsCQlPUFRWX05PTkUsCXswfSwJRkFMU0UgfQotIH07Ci0gCi1AQCAtMjg2LDYgKzI4OSw3IEBAIE9NQVBGQlByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSB7Ci0gCU9NQVBGQlB0ciBvZmI7Ci0gCUVudGl0eUluZm9QdHIgcEVudDsKLSsJY2hhciAqcm90YXRlOwotIAlyZ2IgemVyb3MgPSB7IDAsIDAsIDAgfTsKLSAJc3RydWN0IHN0YXQgc3Q7Ci0gCi1AQCAtMzc5LDYgKzM4Myw4IEBAIE9NQVBGQlByZUluaXQoU2NybkluZm9QdHIgcFNjcm4sIGludCBmbGFncykKLSAJcFNjcm4tPnByb2dDbG9jayA9IFRSVUU7Ci0gCXBTY3JuLT5jaGlwc2V0ICAgPSAib21hcGZiIjsKLSAJCi0rCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9JTkZPLCAiUm90YXRlIHRlc3QgdmVyc2lvbiAwLjAyXG4iKTsKLSsJCi0gCS8qIFN0YXJ0IHdpdGggY29uZmlndXJlZCB2aXJ0dWFsIHNpemUgKi8KLSAJcFNjcm4tPnZpcnR1YWxYID0gcFNjcm4tPmRpc3BsYXktPnZpcnR1YWxYOwotIAlwU2Nybi0+dmlydHVhbFkgPSBwU2Nybi0+ZGlzcGxheS0+dmlydHVhbFk7Ci1AQCAtNDk2LDEyICs1MDIsMjEgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlvZmItPkNsb3NlU2NyZWVuID0gcFNjcmVlbi0+Q2xvc2VTY3JlZW47Ci0gCXBTY3JlZW4tPkNsb3NlU2NyZWVuID0gT01BUEZCQ2xvc2VTY3JlZW47Ci0gCi0rCS8qIEVuZm9yY2UgdGhlIGRlZmF1bHQgbW9kZSAodGhpcyBpcyBzaWxseSBJIGd1ZXNzKSAqLwotKyNpZmRlZiBFTkZPUkNFX01PREVTCi0rCS8veGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0lORk8sICJFbmZvcmNpbmcgbW9kZXNcbiIpOwotKwkvL3NldF9tb2RlKG9mYiwgJm9mYi0+ZGVmYXVsdF9tb2RlKTsKLSsJLy9wU2Nybi0+ZGlzcGxheVdpZHRoID0gb2ZiLT5maXhlZF9pbmZvLmxpbmVfbGVuZ3RoIC8KLSsJLy8gIChvZmItPnN0YXRlX2luZm8uYml0c19wZXJfcGl4ZWw+PjMpOyAvL29mYi0+c3RhdGVfaW5mby54cmVzOwotKyNlbmRpZgotKwotIAkvKiBNYXAgb3VyIGZyYW1lYnVmZmVyIG1lbW9yeSAqLwotKwlvZmItPm1lbV9pbmZvLnNpemUgPSBvZmItPmZpeGVkX2luZm8ubGluZV9sZW5ndGggKiBvZmItPnN0YXRlX2luZm8ueXJlczsKLSAJb2ZiLT5mYiA9IG1tYXAgKE5VTEwsIG9mYi0+bWVtX2luZm8uc2l6ZSwKLSAJICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsCi0gCSAgICAgICAgICAgICAgICBvZmItPmZkLCAwKTsKLS0JaWYgKG9mYi0+ZmIgPT0gTlVMTCkgewotLQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJNYXBwaW5nIGZyYW1lYnVmZmVyIG1lbW9yeSBmYWlsZWRcbiIpOwotKwlpZiAob2ZiLT5mYiA9PSBNQVBfRkFJTEVEKSB7Ci0rCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwgIk1hcHBpbmcgZnJhbWVidWZmZXIgbWVtb3J5IGZhaWxlZCwgd2FudGVkICVkIGJ5dGVzLlxuIiwgb2ZiLT5tZW1faW5mby5zaXplKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotIAotQEAgLTU3OCw4ICs1OTMsMTMgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl9IGVsc2UgaWYgKCFvZmItPmRzcykgewotIAotIAkJb2ZiLT5wbGFuZV9pbmZvLmVuYWJsZWQgPSAxOwotLQkJb2ZiLT5wbGFuZV9pbmZvLm91dF93aWR0aCA9IG9mYi0+c3RhdGVfaW5mby54cmVzOwotLQkJb2ZiLT5wbGFuZV9pbmZvLm91dF9oZWlnaHQgPSBvZmItPnN0YXRlX2luZm8ueXJlczsKLSsJCWlmIChvZmItPnN0YXRlX2luZm8ucm90YXRlID09IDAgfHwgb2ZiLT5zdGF0ZV9pbmZvLnJvdGF0ZSA9PSAyKSB7Ci0rCQkJb2ZiLT5wbGFuZV9pbmZvLm91dF93aWR0aCA9IG9mYi0+c3RhdGVfaW5mby54cmVzOwotKwkJCW9mYi0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID0gb2ZiLT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCQl9IGVsc2UgewotKwkJCW9mYi0+cGxhbmVfaW5mby5vdXRfd2lkdGggPSBvZmItPnN0YXRlX2luZm8ueXJlczsKLSsJCQlvZmItPnBsYW5lX2luZm8ub3V0X2hlaWdodCA9IG9mYi0+c3RhdGVfaW5mby54cmVzOwotKwkJfQotIAotIAkJaWYgKGlvY3RsIChvZmItPmZkLCBPTUFQRkJfU0VUVVBfUExBTkUsICZvZmItPnBsYW5lX2luZm8pKSB7Ci0gCQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi14di1ibGl6emFyZC5jIGIvc3JjL29tYXBmYi14di1ibGl6emFyZC5jCi1pbmRleCA0MDZmZmM2Li5iNzFkMmFhIDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi14di1ibGl6emFyZC5jCi0rKysgYi9zcmMvb21hcGZiLXh2LWJsaXp6YXJkLmMKLUBAIC0yMjAsNiArMjIwLDcgQEAgaW50IE9NQVBGQlhWUHV0SW1hZ2VCbGl6emFyZCAoU2NybkluZm9QdHIgcFNjcm4sCi0gCQkJcGFja2VkX2xpbmVfY29weShzcmNfdyAmIH4zLAotIAkJCSAgICAgICAgICAgICAgICAgc3JjX2ggJiB+MywKLSAJCQkgICAgICAgICAgICAgICAgICgoc3JjX3cgKyAxKSAmIH4xKSAqIDIsCi0rCQkJCQkgb2ZiLT5wb3J0LT5maXhlZF9pbmZvLmxpbmVfbGVuZ3RoLAotIAkJCSAgICAgICAgICAgICAgICAgKHVpbnQ4X3QqKWJ1ZiwKLSAJCQkgICAgICAgICAgICAgICAgICh1aW50OF90KilvZmItPnBvcnQtPmZiKTsKLSAJCQlicmVhazsKLWRpZmYgLS1naXQgYS9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYyBiL3NyYy9vbWFwZmIteHYtZ2VuZXJpYy5jCi1pbmRleCBlNmY4OWZlLi5iMzNmMzQ0IDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi14di1nZW5lcmljLmMKLSsrKyBiL3NyYy9vbWFwZmIteHYtZ2VuZXJpYy5jCi1AQCAtNjIsNyArNjIsNyBAQCBpbnQgT01BUFhWQWxsb2NQbGFuZShTY3JuSW5mb1B0ciBwU2NybikKLSB7Ci0gCU9NQVBGQlB0ciBvZmIgPSBPTUFQRkIocFNjcm4pOwotIAotLQkvKiBUaGUgbWVtb3J5IHNpemUgaXMgYWxyZWFkeSBzZXQgaW4gT01BUEZCWFZRdWVyeUltYWdlQXR0cmlidXRlcyAqLwotKwkvKiBUaGUgbWVtb3J5IHNpemUgaXMgYWxyZWFkeSBzZXQgYmVmb3JlIHdlIGdldCBoZXJlICovCi0gCWlmIChpb2N0bChvZmItPnBvcnQtPmZkLCBPTUFQRkJfU0VUVVBfTUVNLCAmb2ZiLT5wb3J0LT5tZW1faW5mbykgIT0gMCkgewotIAkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLAotIAkJICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIHZpZGVvIHBsYW5lIG1lbW9yeVxuIik7Ci1AQCAtNzMsMTkgKzczLDIwIEBAIGludCBPTUFQWFZBbGxvY1BsYW5lKFNjcm5JbmZvUHRyIHBTY3JuKQotIAlvZmItPnBvcnQtPmZiID0gbW1hcCAoTlVMTCwgb2ZiLT5wb3J0LT5tZW1faW5mby5zaXplLAotIAkgICAgICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwKLSAJICAgICAgICAgICAgICAgIG9mYi0+cG9ydC0+ZmQsIDApOwotLQlpZiAob2ZiLT5wb3J0LT5mYiA9PSBOVUxMKSB7Ci0rCWlmIChvZmItPnBvcnQtPmZiID09IE1BUF9GQUlMRUQpIHsKLSAJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwKLSAJCSAgICAgICAgICAgIk1hcHBpbmcgdmlkZW8gbWVtb3J5IGZhaWxlZFxuIik7Ci0gCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSAJfQotIAotIAkvKiBVcGRhdGUgdGhlIHN0YXRlIGluZm8gKi8KLSsJLyogTGV0J3Mgbm90IC0gaXQncyBiYWQKLSAJaWYgKGlvY3RsIChvZmItPnBvcnQtPmZkLCBGQklPR0VUX1ZTQ1JFRU5JTkZPLCAmb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvKSkKLSAJewotIAkJeGY4Nk1zZyhYX0VSUk9SLCAiJXM6IFJlYWRpbmcgc3RhdGUgaW5mbyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSAJfQotLQotKwkqLwotIAlyZXR1cm4gU3VjY2VzczsKLSB9Ci0gCi1AQCAtOTMsNiArOTQsNyBAQCBpbnQgT01BUFhWQWxsb2NQbGFuZShTY3JuSW5mb1B0ciBwU2NybikKLSBpbnQgT01BUFhWU2V0dXBWaWRlb1BsYW5lKFNjcm5JbmZvUHRyIHBTY3JuKQotIHsKLSAJT01BUEZCUHRyIG9mYiA9IE9NQVBGQihwU2Nybik7Ci0rCWludCByZXQ7Ci0gCi0gCWlmIChpb2N0bCAob2ZiLT5wb3J0LT5mZCwgRkJJT1BVVF9WU0NSRUVOSU5GTywgJm9mYi0+cG9ydC0+c3RhdGVfaW5mbykpCi0gCXsKLUBAIC0xMDQsNiArMTA2LDMxIEBAIGludCBPTUFQWFZTZXR1cFZpZGVvUGxhbmUoU2NybkluZm9QdHIgcFNjcm4pCi0gCQl4Zjg2TXNnKFhfRVJST1IsICIlczogUmVhZGluZyBzdGF0ZSBpbmZvIGZhaWxlZFxuIiwgX19GVU5DVElPTl9fKTsKLSAJCXJldHVybiBYdkJhZEFsbG9jOwotIAl9Ci0rCS8qIENoYW5naW5nIHJvdGF0aW9uL25vbnN0ZCBmbGFncyBjYW4gY2hhbmdlIHRoZSBmaXhlZCBpbmZvISAqLwotKwlpZiAoaW9jdGwgKG9mYi0+cG9ydC0+ZmQsIEZCSU9HRVRfRlNDUkVFTklORk8sICZvZmItPnBvcnQtPmZpeGVkX2luZm8pKQotKwl7Ci0rCQl4Zjg2TXNnKFhfRVJST1IsICIlczogUmVhZGluZyBzdGF0ZSBpbmZvIGZhaWxlZFxuIiwgX19GVU5DVElPTl9fKTsKLSsJCXJldHVybiBYdkJhZEFsbG9jOwotKwl9Ci0rCS8qIENvcnJlY3QgZml4ZWQgaW5mbyByZXF1aXJlcyByZWNhbGN1bGF0aW9uIG9mIG5lZWRlZCBtZW1vcnkgKi8KLSsJb2ZiLT5wb3J0LT5tZW1faW5mby5zaXplID0gb2ZiLT5wb3J0LT5maXhlZF9pbmZvLmxpbmVfbGVuZ3RoICogb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCi0rCS8qIEFsbG9jYXRlIGJ1ZmZlciBtZW1vcnkgKi8KLSsJcmV0ID0gT01BUFhWQWxsb2NQbGFuZShwU2Nybik7Ci0rCWlmIChyZXQgIT0gU3VjY2VzcykKLSsJCXJldHVybiByZXQ7Ci0rCi0rCS8qIFdvcmthcm91bmQgZm9yIHJlc2V0IG9mIG1vZGUgYWZ0ZXIgbWVtb3J5IGFsbG8gKi8KLSsJaWYgKGlvY3RsIChvZmItPnBvcnQtPmZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAmb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvKSkKLSsJewotKwkJeGY4Nk1zZyhYX0VSUk9SLCAiJXM6IHNldHRpbmcgc3RhdGUgaW5mbyBmYWlsZWRcbiIsIF9fRlVOQ1RJT05fXyk7Ci0rCQlyZXR1cm4gWHZCYWRBbGxvYzsKLSsJfQotKwlpZiAoaW9jdGwgKG9mYi0+cG9ydC0+ZmQsIEZCSU9HRVRfVlNDUkVFTklORk8sICZvZmItPnBvcnQtPnN0YXRlX2luZm8pKQotKwl7Ci0rCQl4Zjg2TXNnKFhfRVJST1IsICIlczogUmVhZGluZyBzdGF0ZSBpbmZvIGZhaWxlZFxuIiwgX19GVU5DVElPTl9fKTsKLSsJCXJldHVybiBYdkJhZEFsbG9jOwotKwl9Ci0gCi0gCWlmKGlvY3RsKG9mYi0+cG9ydC0+ZmQsIE9NQVBGQl9TRVRVUF9QTEFORSwKLSAJICAgJm9mYi0+cG9ydC0+cGxhbmVfaW5mbykgIT0gMCkgewotQEAgLTEyNCw2ICsxNTEsOCBAQCBpbnQgT01BUEZCWFZQdXRJbWFnZUdlbmVyaWMgKFNjcm5JbmZvUHRyIHBTY3JuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHJhd2FibGVQdHIgcERyYXcpCi0gewotIAlPTUFQRkJQdHIgb2ZiID0gT01BUEZCKHBTY3JuKTsKLSsJc2hvcnQgZHJ3X3RlbXA7Ci0rCXNob3J0IHJvdF94cmVzLCByb3RfeXJlczsKLSAKLSAJaWYgKCFvZmItPnBvcnQtPnBsYW5lX2luZm8uZW5hYmxlZAotIAkgfHwgb2ZiLT5wb3J0LT51cGRhdGVfd2luZG93LnggIT0gc3JjX3gKLUBAIC0xNjMsMTMgKzE5Miw2IEBAIGludCBPTUFQRkJYVlB1dEltYWdlR2VuZXJpYyAoU2NybkluZm9QdHIgcFNjcm4sCi0gCQkJcmV0dXJuIFN1Y2Nlc3M7Ci0gCQl9Ci0gCi0tCQkvKiBJZiB3ZSBkb24ndCBoYXZlIHRoZSBwbGFuZSBydW5uaW5nLCBlbmFibGUgaXQgKi8KLS0JCWlmICghb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLmVuYWJsZWQpIHsKLS0JCQlyZXQgPSBPTUFQWFZBbGxvY1BsYW5lKHBTY3JuKTsKLS0JCQlpZiAocmV0ICE9IFN1Y2Nlc3MpCi0tCQkJCXJldHVybiByZXQ7Ci0tCQl9Ci0tCi0gCQkvKiBTZXQgdXAgdGhlIHN0YXRlIGluZm8sIHhyZXMgYW5kIHlyZXMgd2lsbCBiZSB1c2VkIGZvcgotIAkJICogc2NhbGluZyB0byB0aGUgdmFsdWVzIGluIHRoZSBwbGFuZSBpbmZvIHN0cnVjdAotIAkJICovCi1AQCAtMTc5LDEyICsyMDEsMzEgQEAgaW50IE9NQVBGQlhWUHV0SW1hZ2VHZW5lcmljIChTY3JuSW5mb1B0ciBwU2NybiwKLSAJCW9mYi0+cG9ydC0+c3RhdGVfaW5mby55cmVzX3ZpcnR1YWwgPSAwOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnhvZmZzZXQgPSAwOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnlvZmZzZXQgPSAwOwotLQkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnJvdGF0ZSA9IDA7Ci0rCQkvL29mYi0+cG9ydC0+c3RhdGVfaW5mby5yb3RhdGUgPSAwOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLmdyYXlzY2FsZSA9IDA7Ci0gCQlvZmItPnBvcnQtPnN0YXRlX2luZm8uYWN0aXZhdGUgPSBGQl9BQ1RJVkFURV9OT1c7Ci0gCQlvZmItPnBvcnQtPnN0YXRlX2luZm8uYml0c19wZXJfcGl4ZWwgPSAwOwotIAkJb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLm5vbnN0ZCA9IHh2X3RvX29tYXBmYl9mb3JtYXQoaW1hZ2UpOwotIAotKwkJLyogUGxhbmUgaW5mbyBkb2VzIG5vdCByb3RhdGUgd2l0aCBzdGF0ZV9pbmZvICovCi0rCQlpZiAob2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnJvdGF0ZSA9PSAxIHx8Ci0rCQkgIG9mYi0+cG9ydC0+c3RhdGVfaW5mby5yb3RhdGUgPT0gMykgewotKwkJCWRyd190ZW1wID0gZHJ3X3g7Ci0rCQkJZHJ3X3ggPSBkcndfeTsKLSsJCQlkcndfeSA9IGRyd190ZW1wOwotKwotKwkJCWRyd190ZW1wID0gZHJ3X3c7Ci0rCQkJZHJ3X3cgPSBkcndfaDsKLSsJCQlkcndfaCA9IGRyd190ZW1wOwotKwotKwkJCXJvdF94cmVzID0gb2ZiLT5wb3J0LT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCQkJcm90X3lyZXMgPSBvZmItPnBvcnQtPnN0YXRlX2luZm8ueHJlczsKLSsJCX0gZWxzZSB7Ci0rCQkJcm90X3hyZXMgPSBvZmItPnBvcnQtPnN0YXRlX2luZm8ueHJlczsKLSsJCQlyb3RfeXJlcyA9IG9mYi0+cG9ydC0+c3RhdGVfaW5mby55cmVzOwotKwkJfQotKwotKwotIAkJLyogU2V0IHVwIHRoZSB2aWRlbyBwbGFuZSBpbmZvICovCi0gCQlvZmItPnBvcnQtPnBsYW5lX2luZm8uZW5hYmxlZCA9IDE7Ci0gCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ucG9zX3ggPSBkcndfeDsKLUBAIC0xOTMsMTMgKzIzNCwxMyBAQCBpbnQgT01BUEZCWFZQdXRJbWFnZUdlbmVyaWMgKFNjcm5JbmZvUHRyIHBTY3JuLAotIAkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF9oZWlnaHQgPSBkcndfaCAmIH4xNTsKLSAKLSAJCS8qIENhcCBvdXRwdXQgdG8gc2NyZWVuIHNpemUgKi8KLS0JCWlmIChvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X3dpZHRoID4gb2ZiLT5zdGF0ZV9pbmZvLnhyZXMpIHsKLSsJCWlmIChvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X3dpZHRoID4gcm90X3hyZXMpIHsKLSAJCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ucG9zX3ggPSAwOwotLQkJCW9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfd2lkdGggPSBvZmItPnN0YXRlX2luZm8ueHJlczsKLSsJCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ub3V0X3dpZHRoID0gcm90X3hyZXM7Ci0gCQl9Ci0tCQlpZiAob2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF9oZWlnaHQgPiBvZmItPnN0YXRlX2luZm8ueXJlcykgewotKwkJaWYgKG9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID4gcm90X3lyZXMpIHsKLSAJCQlvZmItPnBvcnQtPnBsYW5lX2luZm8ucG9zX3kgPSAwOwotLQkJCW9mYi0+cG9ydC0+cGxhbmVfaW5mby5vdXRfaGVpZ2h0ID0gb2ZiLT5zdGF0ZV9pbmZvLnlyZXM7Ci0rCQkJb2ZiLT5wb3J0LT5wbGFuZV9pbmZvLm91dF9oZWlnaHQgPSByb3RfeXJlczsKLSAJCX0KLSAKLSAJCXJldCA9IE9NQVBYVlNldHVwVmlkZW9QbGFuZShwU2Nybik7Ci1AQCAtMjIzLDYgKzI2NCw3IEBAIGludCBPTUFQRkJYVlB1dEltYWdlR2VuZXJpYyAoU2NybkluZm9QdHIgcFNjcm4sCi0gCQkJcGFja2VkX2xpbmVfY29weShzcmNfdyAmIH4xNSwKLSAJCQkgICAgICAgICAgICAgICAgIHNyY19oICYgfjE1LAotIAkJCSAgICAgICAgICAgICAgICAgKChzcmNfdyArIDEpICYgfjEpICogMiwKLSsJCQkgICAgICAgICAgICAgICAgIG9mYi0+cG9ydC0+Zml4ZWRfaW5mby5saW5lX2xlbmd0aCwKLSAJCQkgICAgICAgICAgICAgICAgICh1aW50OF90KilidWYsCi0gCQkJICAgICAgICAgICAgICAgICAodWludDhfdCopb2ZiLT5wb3J0LT5mYik7Ci0gCQkJYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi14di5jIGIvc3JjL29tYXBmYi14di5jCi1pbmRleCAxZGY2NTFlLi4wZmVlMmM2IDEwMDY0NAotLS0tIGEvc3JjL29tYXBmYi14di5jCi0rKysgYi9zcmMvb21hcGZiLXh2LmMKLUBAIC0xNjksOCArMTY5LDExIEBAIHN0YXRpYyBpbnQgT01BUEZCWFZRdWVyeUltYWdlQXR0cmlidXRlcyAoU2NybkluZm9QdHIgcFNjcm4sCi0gCWggPSAqaGVpZ2h0OwotIAotIAl3ID0gKHcgKyAxKSAmIH4xOwotKwotKwkvKiBDYW4ndCBjYWxjdWxhdGUgdGhlc2UgaGVyZSAtIGRvbid0IGtub3cgbGluZSBsZW5ndGgKLSAJb2ZiLT5wb3J0LT5tZW1faW5mby5zaXplID0gdyA8PCAxOwotIAlvZmItPnBvcnQtPm1lbV9pbmZvLnNpemUgKj0gaDsKLSsJKi8KLSAKLSAJcmV0dXJuIHNpemU7Ci0gfQotLS0gCi0xLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA2LW9tYXBmYi1wb3J0LXRvLW5ldy14c2VydmVyLXZpZGVvLUFQSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDYtb21hcGZiLXBvcnQtdG8tbmV3LXhzZXJ2ZXItdmlkZW8tQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTY3Mjk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDYtb21hcGZiLXBvcnQtdG8tbmV3LXhzZXJ2ZXItdmlkZW8tQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcyICswLDAgQEAKLUZyb20gODAzZWNmMjkwOTk0OWU2MTUyZjRhODFiNmNiYjkyYTQ0MzA2NzlhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgTm92IDIwMTIgMDA6MzE6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIG9tYXBmYjogcG9ydCB0byBuZXcgeHNlcnZlciB2aWRlbyBBUEkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jb21wYXQtYXBpLmggICAgfCA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9vbWFwZmItZHJpdmVyLmMgfCA0MSArKysrKysrKysrKystLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTE4IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvY29tcGF0LWFwaS5oCi0KLWRpZmYgLS1naXQgYS9zcmMvY29tcGF0LWFwaS5oIGIvc3JjL2NvbXBhdC1hcGkuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIxNTkxYjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL3NyYy9jb21wYXQtYXBpLmgKLUBAIC0wLDAgKzEsOTYgQEAKLSsvKgotKyAqIENvcHlyaWdodCAyMDEyIFJlZCBIYXQsIEluYy4KLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0rICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCi0rICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCi0rICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0rICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSsgKgotKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0rICogU29mdHdhcmUuCi0rICoKLSsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0rICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCi0rICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotKyAqCi0rICogQXV0aG9yOiBEYXZlIEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgotKyAqLwotKwotKy8qIHRoaXMgZmlsZSBwcm92aWRlcyBBUEkgY29tcGF0IGJldHdlZW4gc2VydmVyIHBvc3QgMS4xMyBhbmQgcHJlIGl0LAotKyAgIGl0IHNob3VsZCBiZSByZXVzZWQgaW5zaWRlIGFzIG1hbnkgZHJpdmVycyBhcyBwb3NzaWJsZSAqLwotKyNpZm5kZWYgQ09NUEFUX0FQSV9ICi0rI2RlZmluZSBDT01QQVRfQVBJX0gKLSsKLSsjaWZuZGVmIEdMWVBIX0hBU19HTFlQSF9QSUNUVVJFX0FDQ0VTU09SCi0rI2RlZmluZSBHZXRHbHlwaFBpY3R1cmUoZywgcykgR2x5cGhQaWN0dXJlKChnKSlbKHMpLT5teU51bV0KLSsjZGVmaW5lIFNldEdseXBoUGljdHVyZShnLCBzLCBwKSBHbHlwaFBpY3R1cmUoKGcpKVsocyktPm15TnVtXSA9IHAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFhGODZfSEFTX1NDUk5fQ09OVgotKyNkZWZpbmUgeGY4NlNjcmVlblRvU2NybihzKSB4Zjg2U2NyZWVuc1socyktPm15TnVtXQotKyNkZWZpbmUgeGY4NlNjcm5Ub1NjcmVlbihzKSBzY3JlZW5JbmZvLnNjcmVlbnNbKHMpLT5zY3JuSW5kZXhdCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBYRjg2X1NDUk5fSU5URVJGQUNFCi0rCi0rI2RlZmluZSBTQ1JOX0FSR19UWVBFIGludAotKyNkZWZpbmUgU0NSTl9JTkZPX1BUUihhcmcxKSBTY3JuSW5mb1B0ciBwU2NybiA9IHhmODZTY3JlZW5zWyhhcmcxKV0KLSsKLSsjZGVmaW5lIFNDUkVFTl9BUkdfVFlQRSBpbnQKLSsjZGVmaW5lIFNDUkVFTl9QVFIoYXJnMSkgU2NyZWVuUHRyIHBTY3JlZW4gPSBzY3JlZW5JbmZvLnNjcmVlbnNbKGFyZzEpXQotKwotKyNkZWZpbmUgU0NSRUVOX0lOSVRfQVJHU19ERUNMIGludCBpbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndgotKwotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1NfREVDTCBpbnQgYXJnLCBwb2ludGVyIGJsb2NrRGF0YSwgcG9pbnRlciBwVGltZW91dCwgcG9pbnRlciBwUmVhZG1hc2sKLSsjZGVmaW5lIEJMT0NLSEFORExFUl9BUkdTIGFyZywgYmxvY2tEYXRhLCBwVGltZW91dCwgcFJlYWRtYXNrCi0rCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHU19ERUNMIGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHUyBzY3JuSW5kZXgsIHBTY3JlZW4KLSsKLSsjZGVmaW5lIEFESlVTVF9GUkFNRV9BUkdTX0RFQ0wgaW50IGFyZywgaW50IHgsIGludCB5LCBpbnQgZmxhZ3MKLSsKLSsjZGVmaW5lIFNXSVRDSF9NT0RFX0FSR1NfREVDTCBpbnQgYXJnLCBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQgZmxhZ3MKLSsKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1NfREVDTCBpbnQgYXJnLCBpbnQgZmxhZ3MKLSsjZGVmaW5lIEZSRUVfU0NSRUVOX0FSR1MoeCkgKHgpLT5zY3JuSW5kZXgsIDAKLSsKLSsjZGVmaW5lIFZUX0ZVTkNfQVJHU19ERUNMIGludCBhcmcsIGludCBmbGFncwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTKGZsYWdzKSBwU2Nybi0+c2NybkluZGV4LCAoZmxhZ3MpCi0rCi0rI2RlZmluZSBYRjg2X0VOQUJMRURJU0FCTEVGQl9BUkcoeCkgKCh4KS0+c2NybkluZGV4KQotKyNlbHNlCi0rI2RlZmluZSBTQ1JOX0FSR19UWVBFIFNjcm5JbmZvUHRyCi0rI2RlZmluZSBTQ1JOX0lORk9fUFRSKGFyZzEpIFNjcm5JbmZvUHRyIHBTY3JuID0gKGFyZzEpCi0rCi0rI2RlZmluZSBTQ1JFRU5fQVJHX1RZUEUgU2NyZWVuUHRyCi0rI2RlZmluZSBTQ1JFRU5fUFRSKGFyZzEpIFNjcmVlblB0ciBwU2NyZWVuID0gKGFyZzEpCi0rCi0rI2RlZmluZSBTQ1JFRU5fSU5JVF9BUkdTX0RFQ0wgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndgotKwotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1NfREVDTCBTY3JlZW5QdHIgYXJnLCBwb2ludGVyIHBUaW1lb3V0LCBwb2ludGVyIHBSZWFkbWFzawotKyNkZWZpbmUgQkxPQ0tIQU5ETEVSX0FSR1MgYXJnLCBwVGltZW91dCwgcFJlYWRtYXNrCi0rCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHU19ERUNMIFNjcmVlblB0ciBwU2NyZWVuCi0rI2RlZmluZSBDTE9TRV9TQ1JFRU5fQVJHUyBwU2NyZWVuCi0rCi0rI2RlZmluZSBBREpVU1RfRlJBTUVfQVJHU19ERUNMIFNjcm5JbmZvUHRyIGFyZywgaW50IHgsIGludCB5Ci0rI2RlZmluZSBTV0lUQ0hfTU9ERV9BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnLCBEaXNwbGF5TW9kZVB0ciBtb2RlCi0rCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnCi0rI2RlZmluZSBGUkVFX1NDUkVFTl9BUkdTKHgpICh4KQotKwotKyNkZWZpbmUgVlRfRlVOQ19BUkdTX0RFQ0wgU2NybkluZm9QdHIgYXJnCi0rI2RlZmluZSBWVF9GVU5DX0FSR1MoZmxhZ3MpIHBTY3JuCi0rCi0rI2RlZmluZSBYRjg2X0VOQUJMRURJU0FCTEVGQl9BUkcoeCkgKHgpCi0rCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvc3JjL29tYXBmYi1kcml2ZXIuYyBiL3NyYy9vbWFwZmItZHJpdmVyLmMKLWluZGV4IDA3OTg5ZjUuLjQ4NmZmYTQgMTAwNjQ0Ci0tLS0gYS9zcmMvb21hcGZiLWRyaXZlci5jCi0rKysgYi9zcmMvb21hcGZiLWRyaXZlci5jCi1AQCAtNDQsNiArNDQsOCBAQAotIAotICNpbmNsdWRlICJleGEuaCIKLSAKLSsjaW5jbHVkZSAiY29tcGF0LWFwaS5oIgotKwotICNpZmRlZiBIQVZFX1hFWFRQUk9UT183MQotICNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9kcG1zY29uc3QuaD4KLSAjZWxzZQotQEAgLTcwLDEwICs3MiwxMCBAQAotIAotIHN0YXRpYyBCb29sIE9NQVBGQlByb2JlKERyaXZlclB0ciBkcnYsIGludCBmbGFncyk7Ci0gc3RhdGljIEJvb2wgT01BUEZCUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKTsKLS1zdGF0aWMgQm9vbCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotLXN0YXRpYyBCb29sIE9NQVBGQkVudGVyVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKTsKLS1zdGF0aWMgdm9pZCBPTUFQRkJMZWF2ZVZUKGludCBzY3JuSW5kZXgsIGludCBmbGFncyk7Ci0tc3RhdGljIEJvb2wgT01BUEZCU3dpdGNoTW9kZShpbnQgc2NybkluZGV4LCBEaXNwbGF5TW9kZVB0ciBtb2RlLCBpbnQgZmxhZ3MpOwotK3N0YXRpYyBCb29sIE9NQVBGQlNjcmVlbkluaXQoU0NSRUVOX0lOSVRfQVJHU19ERUNMKTsKLStzdGF0aWMgQm9vbCBPTUFQRkJFbnRlclZUKFZUX0ZVTkNfQVJHU19ERUNMKTsKLStzdGF0aWMgdm9pZCBPTUFQRkJMZWF2ZVZUKFZUX0ZVTkNfQVJHU19ERUNMKTsKLStzdGF0aWMgQm9vbCBPTUFQRkJTd2l0Y2hNb2RlKFNXSVRDSF9NT0RFX0FSR1NfREVDTCk7Ci0gCi0gc3RhdGljIEJvb2wKLSBPTUFQRkJFbnN1cmVSZWMoU2NybkluZm9QdHIgcFNjcm4pCi1AQCAtNDgxLDcgKzQ4Myw3IEBAIE9NQVBGQlh2U2NyZWVuSW5pdChTY3JlZW5QdHIgcFNjcmVlbikKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLS1PTUFQRkJDbG9zZVNjcmVlbihpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbikKLStPTUFQRkJDbG9zZVNjcmVlbihDTE9TRV9TQ1JFRU5fQVJHU19ERUNMKQotIHsKLSAJU2NybkluZm9QdHIgcFNjcm4gPSB4Zjg2U2NyZWVuc1twU2NyZWVuLT5teU51bV07Ci0gCU9NQVBGQlB0ciBvZmIgPSBPTUFQRkIocFNjcm4pOwotQEAgLTQ5MCwxMSArNDkyLDExIEBAIE9NQVBGQkNsb3NlU2NyZWVuKGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuKQotIAotIAlwU2NyZWVuLT5DbG9zZVNjcmVlbiA9IG9mYi0+Q2xvc2VTY3JlZW47Ci0gCQotLQlyZXR1cm4gKCpwU2NyZWVuLT5DbG9zZVNjcmVlbikoc2NybkluZGV4LCBwU2NyZWVuKTsKLSsJcmV0dXJuICgqcFNjcmVlbi0+Q2xvc2VTY3JlZW4pKENMT1NFX1NDUkVFTl9BUkdTKTsKLSB9Ci0gCi0gc3RhdGljIEJvb2wKLS1PTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rT01BUEZCU2NyZWVuSW5pdChTQ1JFRU5fSU5JVF9BUkdTX0RFQ0wpCi0gewotIAlTY3JuSW5mb1B0ciBwU2NybiA9IHhmODZTY3JlZW5zW3BTY3JlZW4tPm15TnVtXTsKLSAJT01BUEZCUHRyIG9mYiA9IE9NQVBGQihwU2Nybik7Ci1AQCAtNTE2LDcgKzUxOCw3IEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJICAgICAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsCi0gCSAgICAgICAgICAgICAgICBvZmItPmZkLCAwKTsKLSAJaWYgKG9mYi0+ZmIgPT0gTUFQX0ZBSUxFRCkgewotLQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJNYXBwaW5nIGZyYW1lYnVmZmVyIG1lbW9yeSBmYWlsZWQsIHdhbnRlZCAlZCBieXRlcy5cbiIsIG9mYi0+bWVtX2luZm8uc2l6ZSk7Ci0rCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsICJNYXBwaW5nIGZyYW1lYnVmZmVyIG1lbW9yeSBmYWlsZWQsIHdhbnRlZCAlZCBieXRlcy5cbiIsIG9mYi0+bWVtX2luZm8uc2l6ZSk7Ci0gCQlyZXR1cm4gRkFMU0U7Ci0gCX0KLSAKLUBAIC01MjYsNyArNTI4LDcgQEAgT01BUEZCU2NyZWVuSW5pdChpbnQgc2NybkluZGV4LCBTY3JlZW5QdHIgcFNjcmVlbiwgaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkvKiBPbmx5IHN1cHBvcnQgVHJ1ZUNvbG9yIGZvciBub3cgKi8KLSAJaWYgKCFtaVNldFZpc3VhbFR5cGVzKHBTY3JuLT5kZXB0aCwgVHJ1ZUNvbG9yTWFzaywKLSAJCXBTY3JuLT5yZ2JCaXRzLCBwU2Nybi0+ZGVmYXVsdFZpc3VhbCkpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAidmlzdWFsIHR5cGUgc2V0dXAgZmFpbGVkIgotKwkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLCAidmlzdWFsIHR5cGUgc2V0dXAgZmFpbGVkIgotIAkJICAgICAgICAgICAiIGZvciAlZCBiaXRzIHBlciBwaXhlbCBbMV1cbiIsCi0gCQkgICAgICAgICAgIHBTY3JuLT5iaXRzUGVyUGl4ZWwpOwotIAkJcmV0dXJuIEZBTFNFOwotQEAgLTUzNCw3ICs1MzYsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCi0gCS8qIFNldCB1cCBwaXhtYXAgZGVwdGggaW5mb3JtYXRpb24gKi8KLSAJaWYgKCFtaVNldFBpeG1hcERlcHRocygpKSB7Ci0tCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCxYX0VSUk9SLCJwaXhtYXAgZGVwdGggc2V0dXAgZmFpbGVkXG4iKTsKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCxYX0VSUk9SLCJwaXhtYXAgZGVwdGggc2V0dXAgZmFpbGVkXG4iKTsKLSAJCXJldHVybiBGQUxTRTsKLSAJfQotIAotQEAgLTU0Niw3ICs1NDgsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICAgICAgICAgICAgICAgIHBTY3JuLT52aXJ0dWFsWSwgcFNjcm4tPnhEcGksCi0gCSAgICAgICAgICAgICAgICAgIHBTY3JuLT55RHBpLCBwU2Nybi0+ZGlzcGxheVdpZHRoLAotIAkgICAgICAgICAgICAgICAgICBwU2Nybi0+Yml0c1BlclBpeGVsKSkgewotLQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJmYlNjcmVlbkluaXQgZmFpbGVkXG4iKTsKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwgImZiU2NyZWVuSW5pdCBmYWlsZWRcbiIpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0gCi1AQCAtNTY3LDcgKzU2OSw3IEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAJLyogSW5pdGlhbGl6ZSBYUmVuZGVyIGZhbGxiYWNrcyAqLwotIAlpZiAoIWZiUGljdHVyZUluaXQocFNjcmVlbiwgTlVMTCwgMCkpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLCAiZmJQaWN0dXJlSW5pdCBmYWlsZWRcbiIpOwotKwkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLCAiZmJQaWN0dXJlSW5pdCBmYWlsZWRcbiIpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci0gCQotQEAgLTU3OSw3ICs1ODEsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCi0gCS8qIEluaXRpYWxpemUgZGVmYXVsdCBjb2xvcm1hcCAqLwotIAlpZiAoIW1pQ3JlYXRlRGVmQ29sb3JtYXAocFNjcmVlbikpIHsKLS0JCXhmODZEcnZNc2coc2NybkluZGV4LCBYX0VSUk9SLAotKwkJeGY4NkRydk1zZyhwU2Nybi0+c2NybkluZGV4LCBYX0VSUk9SLAotIAkJICAgICAgICAgICAiY3JlYXRpbmcgZGVmYXVsdCBjb2xvcm1hcCBmYWlsZWRcbiIpOwotIAkJcmV0dXJuIEZBTFNFOwotIAl9Ci1AQCAtNTg5LDcgKzU5MSw3IEBAIE9NQVBGQlNjcmVlbkluaXQoaW50IHNjcm5JbmRleCwgU2NyZWVuUHRyIHBTY3JlZW4sIGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCS8qIFRoaXMgaXMgbm9uLWZhdGFsIHNpbmNlIHdlIG1pZ2h0IGJlIHJ1bm5pbmcgYWdhaW5zdCBvbGRlcgotIAkJICoga2VybmVsIGRyaXZlciBpbiB3aGljaCBjYXNlIHdlIG9ubHkgZG8gYmFzaWMgMkQgc3R1ZmYuLi4KLSAJCSAqLwotLQkJeGY4NkRydk1zZyhzY3JuSW5kZXgsIFhfRVJST1IsICJSZWFkaW5nIHBsYW5lIGluZm8gZmFpbGVkXG4iKTsKLSsJCXhmODZEcnZNc2cocFNjcm4tPnNjcm5JbmRleCwgWF9FUlJPUiwgIlJlYWRpbmcgcGxhbmUgaW5mbyBmYWlsZWRcbiIpOwotIAl9IGVsc2UgaWYgKCFvZmItPmRzcykgewotIAotIAkJb2ZiLT5wbGFuZV9pbmZvLmVuYWJsZWQgPSAxOwotQEAgLTYwMiw3ICs2MDQsNyBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQl9Ci0gCi0gCQlpZiAoaW9jdGwgKG9mYi0+ZmQsIE9NQVBGQl9TRVRVUF9QTEFORSwgJm9mYi0+cGxhbmVfaW5mbykpIHsKLS0JCQl4Zjg2RHJ2TXNnKHNjcm5JbmRleCwgWF9FUlJPUiwKLSsJCQl4Zjg2RHJ2TXNnKHBTY3JuLT5zY3JuSW5kZXgsIFhfRVJST1IsCi0gCQkJICAgICAgICAgICAgIiVzOiBQbGFuZSBzZXR1cCBmYWlsZWQ6ICVzXG4iLAotIAkJCSAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgc3RyZXJyb3IoZXJybm8pKTsKLSAJCQlyZXR1cm4gRkFMU0U7Ci1AQCAtNjQ1LDkgKzY0NywxMCBAQCBPTUFQRkJTY3JlZW5Jbml0KGludCBzY3JuSW5kZXgsIFNjcmVlblB0ciBwU2NyZWVuLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCXJldHVybiBUUlVFOwotIH0KLSAKLS1zdGF0aWMgQm9vbCBPTUFQRkJTd2l0Y2hNb2RlKGludCBzY3JuSW5kZXgsIERpc3BsYXlNb2RlUHRyIG1vZGUsIGludCBmbGFncykKLStzdGF0aWMgQm9vbCBPTUFQRkJTd2l0Y2hNb2RlKFNXSVRDSF9NT0RFX0FSR1NfREVDTCkKLSB7Ci0tCXJldHVybiB4Zjg2U2V0U2luZ2xlTW9kZSAoeGY4NlNjcmVlbnNbc2NybkluZGV4XSwgbW9kZSwgUlJfUm90YXRlXzApOwotKwlTQ1JOX0lORk9fUFRSKGFyZyk7Ci0rCXJldHVybiB4Zjg2U2V0U2luZ2xlTW9kZSAocFNjcm4sIG1vZGUsIFJSX1JvdGF0ZV8wKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTY5OSwxNCArNzAyLDE0IEBAIE9NQVBGQlByaW50Q2FwYWJpbGl0aWVzKFNjcm5JbmZvUHRyIHBTY3JuLAotIC8qKiogVW5pbXBsZW1lbnRlZDogKi8KLSAKLSBzdGF0aWMgQm9vbAotLU9NQVBGQkVudGVyVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKQotK09NQVBGQkVudGVyVlQoVlRfRlVOQ19BUkdTX0RFQ0wpCi0gewotIAl4Zjg2TXNnKFhfTk9UX0lNUExFTUVOVEVELCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gCXJldHVybiBUUlVFOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotLU9NQVBGQkxlYXZlVlQoaW50IHNjcm5JbmRleCwgaW50IGZsYWdzKQotK09NQVBGQkxlYXZlVlQoVlRfRlVOQ19BUkdTX0RFQ0wpCi0gewotIAl4Zjg2TXNnKFhfTk9UX0lNUExFTUVOVEVELCAiJXNcbiIsIF9fRlVOQ1RJT05fXyk7Ci0gfQotLS0gCi0xLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA3LWFsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDA3LWFsd2F5c19pbmNsdWRlX3hvcmdfc2VydmVyLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMGI5YjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1vbWFwZmIvMDAwNy1hbHdheXNfaW5jbHVkZV94b3JnX3NlcnZlci5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRml4IGVycm9ycyB3aXRoIGdsaWJjIDIuMjAKLQotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3N0cmluZy5oOjYzNDowLAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcvb3MuaDo1MywKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL21pc2MuaDoxMTUsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy94Zjg2c3RyLmg6MzcsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy94Zjg2Lmg6NDQsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3dvcmsvaTU4Ni1vZS1saW51eC94Zjg2LXZpZGVvLW9tYXBmYi8yXzAuMS4xK2dpdHJBVVRPSU5DKzI4YzAwNmM5NGUtcjIxLjcvZ2l0L3NyYy9vbWFwZmIteHYtYmxpenphcmQuYzozMzoKLS9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcvb3MuaDo1Nzk6MTogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgb3IgJygnIGJlZm9yZSAnX19leHRlbnNpb25fXycKLSBzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IG4pOwotIF4KLUluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9zdHJpbmcuaDo2MzQ6MCwKLSAgICAgICAgICAgICAgICAgZnJvbSAvaG9tZS91YnVudHUvd29yay91cHN0cmVhbS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtZ2xpYmMvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS94b3JnL29zLmg6NTMsCi0gICAgICAgICAgICAgICAgIGZyb20gL2hvbWUvdWJ1bnR1L3dvcmsvdXBzdHJlYW0vb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUveG9yZy9taXNjLmg6MTE1LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcveGY4NnN0ci5oOjM3LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcveGY4Ni5oOjQ0LAotICAgICAgICAgICAgICAgICBmcm9tIC9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy93b3JrL2k1ODYtb2UtbGludXgveGY4Ni12aWRlby1vbWFwZmIvMl8wLjEuMStnaXRyQVVUT0lOQysyOGMwMDZjOTRlLXIyMS43L2dpdC9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYzoyODoKLS9ob21lL3VidW50dS93b3JrL3Vwc3RyZWFtL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1nbGliYy9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL3hvcmcvb3MuaDo1Nzk6MTogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgb3IgJygnIGJlZm9yZSAnX19leHRlbnNpb25fXycKLSBzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IG4pOwotIF4KLQotU2luZ2VkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ2l0L3NyYy9vbWFwZmIteHYtYmxpenphcmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9vbWFwZmIteHYtYmxpenphcmQuYwkyMDE0LTA4LTI4IDA1OjE2OjI1LjY4NDA3MDU4NyAtMDcwMAotKysrIGdpdC9zcmMvb21hcGZiLXh2LWJsaXp6YXJkLmMJMjAxNC0wOC0yOCAxOTowNTozOS40NDAwNzA1ODcgLTA3MDAKLUBAIC0zMCw2ICszMCw3IEBACi0gICogIC0KLSAgKi8KLSAKLSsjaW5jbHVkZSA8eG9yZy1zZXJ2ZXIuaD4KLSAjaW5jbHVkZSAieGY4Ni5oIgotICNpbmNsdWRlICJ4Zjg2X09TbGliLmgiCi0gI2luY2x1ZGUgInhmODZ4di5oIgotSW5kZXg6IGdpdC9zcmMvb21hcGZiLXh2LWdlbmVyaWMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3NyYy9vbWFwZmIteHYtZ2VuZXJpYy5jCTIwMTQtMDgtMjggMDU6MTY6MjUuNjg0MDcwNTg3IC0wNzAwCi0rKysgZ2l0L3NyYy9vbWFwZmIteHYtZ2VuZXJpYy5jCTIwMTQtMDgtMjggMTk6MDU6NTEuNzgwMDcwNTg3IC0wNzAwCi1AQCAtMjUsNiArMjUsNyBAQAotICAqIEdlbmVyaWMgZnVuY3Rpb25zIGZvciB0aGUgWFYgZHJpdmVyCi0gICovCi0gCi0rI2luY2x1ZGUgPHhvcmctc2VydmVyLmg+Ci0gI2luY2x1ZGUgInhmODYuaCIKLSAjaW5jbHVkZSAieGY4Nl9PU2xpYi5oIgotICNpbmNsdWRlICJ4Zjg2eHYuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2ViYjk2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYwotCi1TVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIFRleGFzIEluc3RydW1lbnRzIE9NQVAgZnJhbWVidWZmZXIgZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJvbWFwZmIgZHJpdmVyIHN1cHBvcnRzIHRoZSBiYXNpYyBUZXhhcyBJbnN0cnVtZW50cyBPTUFQIFwKLWZyYW1lYnVmZmVyLiIKLQotTElDRU5TRSA9ICJNSVQtWCAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTYzZTJjYmFjNTM4NjNmNjBlMmY0MzM0M2ZiMzQzNjdmIgotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEiCi0KLVNSQ1JFViA9ICIzM2UzNmMxMmRkZTMzNmVkYmRkMzQ2MjZkZDhhZGZjYWViYzhmYmI4IgotUFIgPSAiJHtJTkNfUFJ9LjciCi1QViA9ICIwLjEuMStnaXRyJHtTUkNQVn0iCi0KLSMgQmxhY2tsaXN0IGRlYmlhbi1zcGVjaWZpYyB0YWdzIGluIHVwc3RyZWFtIHZlcnNpb24gY2hlY2sKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSg/IS0pIgotCi1TUkNfVVJJID0gImdpdDovL2Fub25zY20uZGViaWFuLm9yZy9jb2xsYWItbWFpbnQveGY4Ni12aWRlby1vbWFwZmIuZ2l0IFwKLSAgZmlsZTovLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaCBcCi0gIGZpbGU6Ly8wMDAxLVJldmVydC1TZXQtYS1sYXJnZS1DUlRDLXVwcGVyLWxpbWl0LXRvLW5vdC1wcnVuZS1sYXIucGF0Y2ggXAotICBmaWxlOi8vMDAwMi1SZXZlcnQtU2V0LXZpcnR1YWwtc2l6ZS13aGVuLWNvbmZpZ3VyaW5nLWZyYW1lYnVmZmVyLnBhdGNoIFwKLSAgZmlsZTovLzAwMDMtZm9yY2UtcGxhaW4tbW9kZS5wYXRjaCBcCi0gIGZpbGU6Ly8wMDA0LWJsYWNrbGlzdC10di1vdXQucGF0Y2ggXAotICBmaWxlOi8vMDAwNS1BdHRlbXB0LXRvLWZpeC1WUkZCLnBhdGNoIFwKLSAgZmlsZTovLzAwMDYtb21hcGZiLXBvcnQtdG8tbmV3LXhzZXJ2ZXItdmlkZW8tQVBJLnBhdGNoIFwKLSAgZmlsZTovLzAwMDctYWx3YXlzX2luY2x1ZGVfeG9yZ19zZXJ2ZXIuaC5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUNGTEFHUyArPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0veG9yZyAiCi0KLSMgVXNlIG92ZXJsYXkgMiBvbiBvbWFwMyB0byBlbmFibGUgb3RoZXIgYXBwcyB0byB1c2Ugb3ZlcmxheSAxIChlLmcuIGRtYWkgb3Igb21hcGZicGxheSkKLWRvX2NvbXBpbGVfcHJlcGVuZF9hcm12N2EgKCkgewotICAgICAgICBzZWQgLWkgLWUgczpmYjE6ZmIyOmcgJHtTfS9zcmMvb21hcGZiLXh2LmMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdmVzYV8yLjMuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdmVzYV8yLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyNTFiNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZlc2FfMi4zLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMWYwNjEwZWJkYzZmMzE0YTlmYTUxMDJhOGM1YzFiMCIKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBHZW5lcmljIFZlc2EgdmlkZW8gZHJpdmVyIgotCi1ERVNDUklQVElPTiA9ICJ2ZXNhIGlzIGFuIFhvcmcgZHJpdmVyIGZvciBnZW5lcmljIFZFU0EgdmlkZW8gY2FyZHMuIEl0IFwKLWNhbiBkcml2ZSBtb3N0IFZFU0EtY29tcGF0aWJsZSB2aWRlbyBjYXJkcywgYnV0IG9ubHkgbWFrZXMgdXNlIG9mIHRoZSBcCi1iYXNpYyBzdGFuZGFyZCBWRVNBIGNvcmUgdGhhdCBpcyBjb21tb24gdG8gdGhlc2UgY2FyZHMuIFRoZSBkcml2ZXIgXAotc3VwcG9ydHMgZGVwdGhzIDgsIDE1IDE2IGFuZCAyNC4iCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSByYW5kcnByb3RvIGxpYnBjaWFjY2VzcyIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyhpLjg2fHg4Nl82NCkuKi1saW51eCcKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gInhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhODkzYzM3YzU4OWY3YTMxY2VhOTI5YTVkODk2YTBlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmRkZjRkODc5ZGQ2ZjY3MDg4ZWNiMjAzYTMxZTEyMzM0YWFiOTgwMTc0YmQwOTA5OTMwYTIxZjMyZTI1MWMxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12ZXNhXzIuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12ZXNhXzIuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMTEwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZlc2FfMi40LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSB4b3JnLWRyaXZlci12aWRlby5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTFmMDYxMGViZGM2ZjMxNGE5ZmE1MTAyYThjNWMxYjAiCisKK1NVTU1BUlkgPSAiWC5PcmcgWCBzZXJ2ZXIgLS0gR2VuZXJpYyBWZXNhIHZpZGVvIGRyaXZlciIKKworREVTQ1JJUFRJT04gPSAidmVzYSBpcyBhbiBYb3JnIGRyaXZlciBmb3IgZ2VuZXJpYyBWRVNBIHZpZGVvIGNhcmRzLiBJdCBcCitjYW4gZHJpdmUgbW9zdCBWRVNBLWNvbXBhdGlibGUgdmlkZW8gY2FyZHMsIGJ1dCBvbmx5IG1ha2VzIHVzZSBvZiB0aGUgXAorYmFzaWMgc3RhbmRhcmQgVkVTQSBjb3JlIHRoYXQgaXMgY29tbW9uIHRvIHRoZXNlIGNhcmRzLiBUaGUgZHJpdmVyIFwKK3N1cHBvcnRzIGRlcHRocyA4LCAxNSAxNiBhbmQgMjQuIgorCitERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4b3JncHJvdG8gbGlicGNpYWNjZXNzIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0KS4qLWxpbnV4JworCitSUkVDT01NRU5EU18ke1BOfSArPSAieHNlcnZlci14b3JnLW1vZHVsZS1saWJpbnQxMCIKKworU1JDX1VSSVttZDVzdW1dID0gIjgxMzQyMDFiZWFmNmY3NzE1MGM3ODA5YzNjYzgwMmU2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmNDQzYzk0ZDdiZjZjZDRlMjQ4ZjhhMzE0N2Y0NjQ3YmUwNGRjNGM4MDI1MGQ5NDA1MDA2MjYzYmJkZWUzOGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZtd2FyZV8xMy4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZtd2FyZV8xMy4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNmQzNWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby12bXdhcmVfMTMuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWRyaXZlci12aWRlby5pbmMKLQotU1VNTUFSWSA9ICJYLk9yZyBYIHNlcnZlciAtLSBWTXdhcmUgU1ZHQSBkaXNwbGF5IGRyaXZlciIKLQotREVTQ1JJUFRJT04gPSAidm13YXJlIGlzIGFuIFhvcmcgZHJpdmVyIGZvciBWTXdhcmUgdmlydHVhbCB2aWRlbyBjYXJkcy4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmY2Q3ZDQzN2E5NTlhMTVmYmVlODcwNzc0N2M2YjUzIgotCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSB4aW5lcmFtYXByb3RvIHZpZGVvcHJvdG8gbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMi1hZGQtb3B0aW9uLWZvci12bXdnZngucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0YzM5MTJlNGQ4OTQ3ZjZjMmZjMWVlOWUyZjIxMWQ3NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMmY3ZjcxMDFmYmE3ZjUzYjI2OGU3YTI1OTA4YmFiYmYxNTViMzk4NGZiNTI2OGIzZDI0NGViNmMxMWJmNjJiIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODYuKi1saW51eHx4ODZfNjQuKi1saW51eCknCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbdm13Z2Z4XSA9ICItLWVuYWJsZS12bXdnZngsIC0tZGlzYWJsZS12bXdnZngsIGxpYmRybSB2aXJ0dWFsL21lc2EiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZtd2FyZV8xMy4zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLXZtd2FyZV8xMy4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2MTJiNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tdm13YXJlXzEzLjMuMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIHhvcmctZHJpdmVyLXZpZGVvLmluYworCitTVU1NQVJZID0gIlguT3JnIFggc2VydmVyIC0tIFZNd2FyZSBTVkdBIGRpc3BsYXkgZHJpdmVyIgorCitERVNDUklQVElPTiA9ICJ2bXdhcmUgaXMgYW4gWG9yZyBkcml2ZXIgZm9yIFZNd2FyZSB2aXJ0dWFsIHZpZGVvIGNhcmRzLiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWZjZDdkNDM3YTk1OWExNWZiZWU4NzA3NzQ3YzZiNTMiCisKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAyLWFkZC1vcHRpb24tZm9yLXZtd2dmeC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjA4ZDY2ZDA2MjA1NTA4MGZmNjk5YWI0ODY5NzI2ZWEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3OTcxOTI0NjU5ZTUxNjY2YTc1NzI2OWFkOTQxYTA1OWVmNWFmZTdhNDdiNTEwMWMxNzRhNjAyMmFjNDA2NmMiCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoaS44Ni4qLWxpbnV4fHg4Nl82NC4qLWxpbnV4KScKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1t2bXdnZnhdID0gIi0tZW5hYmxlLXZtd2dmeCwgLS1kaXNhYmxlLXZtd2dmeCwgbGliZHJtIHZpcnR1YWwvbWVzYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCmluZGV4IGJjYTBhYWQuLmU2NTdjNjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtNyw3ICs3LDcgQEAKIFBFID0gIjIiCiBJTkNfUFIgPSAicjIxIgogCi1ERVBFTkRTID0gInZpcnR1YWwveHNlcnZlciB4cHJvdG8gcmFuZHJwcm90byB1dGlsLW1hY3JvcyIKK0RFUEVORFMgPSAidmlydHVhbC94c2VydmVyIHhvcmdwcm90byB1dGlsLW1hY3JvcyIKIAogU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RyaXZlci8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItaW5wdXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItaW5wdXQuaW5jCmluZGV4IDM0MjA2N2QuLjU3OTEyZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWlucHV0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1pbnB1dC5pbmMKQEAgLTEsNiArMSw2IEBACiByZXF1aXJlIHhvcmctZHJpdmVyLWNvbW1vbi5pbmMKIAotREVQRU5EUyArPSAiaW5wdXRwcm90byBrYnByb3RvICIKK0RFUEVORFMgKz0gInhvcmdwcm90byIKIAogcHl0aG9uIGFkZF94b3JnX2FiaV9kZXBlbmRzKCkgewogICAgIF9hZGRfeG9yZ19hYmlfZGVwZW5kcyhkLCAiaW5wdXQiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItdmlkZW8uaW5jCmluZGV4IGI1ODYyZGEuLjI5MzhlZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLXZpZGVvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci12aWRlby5pbmMKQEAgLTEsNiArMSw2IEBACiByZXF1aXJlIHhvcmctZHJpdmVyLWNvbW1vbi5pbmMKIAotREVQRU5EUyA9KyAicmVuZGVycHJvdG8gdmlkZW9wcm90byB4ZXh0cHJvdG8gZm9udHNwcm90byIKK0RFUEVORFMgPSsgInhvcmdwcm90byIKIAogcHl0aG9uIGFkZF94b3JnX2FiaV9kZXBlbmRzKCkgewogICAgIF9hZGRfeG9yZ19hYmlfZGVwZW5kcyhkLCAidmlkZW8iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZG14XzEuMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZG14XzEuMS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjIzY2VlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmRteF8xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkRNWDogRGlzdHJpYnV0ZWQgTXVsdGloZWFkIFggZXh0ZW5zaW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gIlRoZSBETVggZXh0ZW5zaW9uIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBcCi1hbmQgY29udHJvbCBvZiBYZG14KDEpIHNlcnZlci4gQXR0cmlidXRlcyBvZiB0aGUgWGRteCgxKSBzZXJ2ZXIgYW5kIG9mIFwKLXRoZSBiYWNrLWVuZCBzY3JlZW5zIGF0dGFjaGVkIHRvIHRoZSBzZXJ2ZXIgY2FuIGJlIHF1ZXJpZWQgYW5kIG1vZGlmaWVkIFwKLXZpYSB0aGlzIHByb3RvY29sLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hM2MzNDk5MjMxYTgwMzVlZmQwZTAwNGNmYmQzYjcyYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZG14LmM7ZW5kbGluZT0zMzttZDU9YzQzZjE5YWYwM2M3Yzg2MTljYWRjOTcyNGVkOWFmZTEiCi0KLURFUEVORFMgKz0gImxpYnhleHQgZG14cHJvdG8iCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYTk4M2ViYTVhOWYwNWQxNTJhMDcyNWI4ZTg2MzE1MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjOTdkYTM2ZDJlNTZhMmQ3YjZlNGY4OTYyNDE3ODVhY2M5NWU5N2ViOTU1NzQ2NWZkNjZiYTJhMTU1YTdiMjAxIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJkbXhfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJkbXhfMS4xLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxNzJjYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmRteF8xLjEuNC5iYgpAQCAtMCwwICsxLDIwIEBACityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJETVg6IERpc3RyaWJ1dGVkIE11bHRpaGVhZCBYIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJUaGUgRE1YIGV4dGVuc2lvbiBwcm92aWRlcyBzdXBwb3J0IGZvciBjb21tdW5pY2F0aW9uIHdpdGggXAorYW5kIGNvbnRyb2wgb2YgWGRteCgxKSBzZXJ2ZXIuIEF0dHJpYnV0ZXMgb2YgdGhlIFhkbXgoMSkgc2VydmVyIGFuZCBvZiBcCit0aGUgYmFjay1lbmQgc2NyZWVucyBhdHRhY2hlZCB0byB0aGUgc2VydmVyIGNhbiBiZSBxdWVyaWVkIGFuZCBtb2RpZmllZCBcCit2aWEgdGhpcyBwcm90b2NvbC4iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTNjMzQ5OTIzMWE4MDM1ZWZkMGUwMDRjZmJkM2I3MmEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RteC5jO2VuZGxpbmU9MzM7bWQ1PWM0M2YxOWFmMDNjN2M4NjE5Y2FkYzk3MjRlZDlhZmUxIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byIKKworUEUgPSAiMSIKKworU1JDX1VSSVttZDVzdW1dID0gImQyZjFmMGVjNjhhYzM5MzJkZDdmMWQ5YWEwYTdhMTFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1M2Y5MDAwNWQxMzRmYTdhMjA5ZmJjYmM1YTMwMjQzMzUzNjdjOTMwYWRmMGYzMjAzZTc1NGNmMzI3NDcyNDMiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmZvbnRlbmNfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJmb250ZW5jXzEuMS4zLmJiCmluZGV4IGExODFmMDUuLjM0ZDVmYzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmZvbnRlbmNfMS4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliZm9udGVuY18xLjEuMy5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTYyNTRjMjBhYjgxYzYzZTY1YjI2ZjBkYmNkNGExYzEiCiAKLURFUEVORFMgKz0gInpsaWIgeHByb3RvIGZvbnQtdXRpbCIKK0RFUEVORFMgKz0gInpsaWIgeG9yZ3Byb3RvIGZvbnQtdXRpbCIKIFBFID0gIjEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliaWNlXzEuMC45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGliaWNlXzEuMC45LmJiCmluZGV4IDVjY2QxZDguLjk5OTQzNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYmljZV8xLjAuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJpY2VfMS4wLjkuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDE2MmIxYjNjNmZhODEyZGE5ZDgwNGRjZjg1ODRhOTMiCiAKLURFUEVORFMgKz0gInhwcm90byB4dHJhbnMiCitERVBFTkRTICs9ICJ4b3JncHJvdG8geHRyYW5zIgogUFJPVklERVMgPSAiaWNlIgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgppbmRleCBhNDRhNWM4Li5kMDMwYzMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xNC5iYgpAQCAtMTYsMyArMTYsNSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Mjc3YWFkYTUyMjJiOWEyMmZiZjM0NzFmZjM2ODcwNjgiCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnNtXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlic21fMS4yLjIuYmIKaW5kZXggNDg5MjJjYi4uZmRjNjkzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlic21fMS4yLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlic21fMS4yLjIuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzBmYjM3ZjQ0ZTAyYmRiZGU4MDU0NjAyNDQwMDcyOGQiCiAKLURFUEVORFMgKz0gImxpYmljZSB4cHJvdG8geHRyYW5zIgorREVQRU5EUyArPSAibGliaWNlIHhvcmdwcm90byB4dHJhbnMiCiAKICMgbGliU00gY2FuIHdvcmsgd2l0aG91dCBsaWJ1dWlkLCB3ZSBleHBsaWNpdGx5IGRpc2FibGUgaXQgdG8gYnJlYWsgdGhlIGZvbGxvd2luZyBjaXJjdWxhciBkZXBlbmRlbmN5CiAjIHdoZW4gRElTVFJPX0ZFQVRVUkVTIGNvbnRhaW5zICdzeXN0ZW1kJyBhbmQgJ3gxMScuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTVmOTZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBsaWJ4MTEuaW5jCi0KLURFU0NSSVBUSU9OICs9ICIgU3VwcG9ydCBmb3IgWENNUyBhbmQgWExPQ0FMRSBpcyBkaXNhYmxlZCBpbiBcCi10aGlzIHZlcnNpb24uIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vWDE4TkNNU3N0dWJzLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1kaXNhYmxlLXhsb2NhbGUuZGlmZiBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1SUFJPVklERVNfJHtQTn0tZGV2ID0gImxpYngxMS1kZXYiCi1SUFJPVklERVNfJHtQTn0tbG9jYWxlID0gImxpYngxMS1sb2NhbGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwZjYxOGRiNzBjNDA1NGNhNjdjZWUwY2MxNTZhNDI1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDM4OTBkYjJiYTIyNWJhOGM1NWNhNjNjNjQwOWMxZWJiMDc4YTI4MDZkZTU5ZmIxNjM0Mjc2OGFlNjM0MzVkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14bG9jYWxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGJhNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjYuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBsaWJ4MTEuaW5jCisKK0RFU0NSSVBUSU9OICs9ICIgU3VwcG9ydCBmb3IgWENNUyBhbmQgWExPQ0FMRSBpcyBkaXNhYmxlZCBpbiBcCit0aGlzIHZlcnNpb24uIgorCitTUkNfVVJJICs9ICJmaWxlOi8vWDE4TkNNU3N0dWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9maXgtZGlzYWJsZS14bG9jYWxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9maXgtdXRmOC13cm9uZy1kZWZpbmUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAibGlieDExLWRldiIKK1JQUk9WSURFU18ke1BOfS1sb2NhbGUgPSAibGlieDExLWxvY2FsZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjZiMGY4M2U4NTFiM2I0NjlkZDY2MGYzYTk1YWMzZTQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1ZmUxODFkNDBlYzc3ZjQ1NDE3NzEwYzZhNjc0MzE4MTRhYjI1MmQyMWMyZTg1Yzc1ZGQxZWQ1NjhhZjQxNGYiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXhsb2NhbGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLmluYwppbmRleCA0YWY0MGFiLi4zNmM5NTBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS5pbmMKQEAgLTYsOCArNiw2IEBACiAKIHJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwogCi1pbmhlcml0IHNpdGVpbmZvCi0KIEZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2xpYngxMToiCiAKIFBFID0gIjEiCkBAIC0xOCw4ICsxNiw4IEBACiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE3MjI1NWRlZTY2YmIwMTUxNDM1YjJkNWQ3MDlmY2Y3IgogCi1ERVBFTkRTICs9ICJ4cHJvdG8geGV4dHByb3RvIHh0cmFucyBsaWJ4Y2Iga2Jwcm90byBpbnB1dHByb3RvIgotREVQRU5EUyArPSAieHByb3RvLW5hdGl2ZSIKK0RFUEVORFMgKz0gInhvcmdwcm90byB4dHJhbnMgbGlieGNiIgorREVQRU5EUyArPSAieG9yZ3Byb3RvLW5hdGl2ZSIKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGgta2V5c3ltZGVmZGlyPSR7U1RBR0lOR19JTkNESVJ9L1gxMS8gLS1kaXNhYmxlLXhmODZiaWdmb250IgogRVhUUkFfT0VNQUtFICs9ICdDV0FSTkZMQUdTPSIiJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL1gxOE5DTVNzdHVicy5kaWZmIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL1gxOE5DTVNzdHVicy5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDRjZWRjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9YMThOQ01Tc3R1YnMuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDUyMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotSW5kZXg6IGxpYlgxMS0xLjMvc3JjL2ltQ29udi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliWDExLTEuMy5vcmlnL3NyYy9pbUNvbnYuYwotKysrIGxpYlgxMS0xLjMvc3JjL2ltQ29udi5jCi1AQCAtODMsNiArODMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IFN1YnN0UmVjIFN1YnN0VGFibGVbCi0gICogZnJvbSBVQ1MgY2hhciB0byBzcGVjaWZpZWQgY2hhcnNldCBjaGFyLgotICAqIFRoaXMgY29udmVydGVyIGlzIG5lZWRlZCBmb3IgX1hpbUdldENoYXJDb2RlIHN1YnJvdXRpbmUuCi0gICovCi0rI2lmZGVmIFhMT0NBTEUKLSBYUG9pbnRlcgotIF9YaW1HZXRMb2NhbGVDb2RlICgKLSAgICAgX1hjb25zdCBjaGFyKgllbmNvZGluZ19uYW1lKQotQEAgLTk2LDYgKzk3LDcgQEAgX1hpbUdldExvY2FsZUNvZGUgKAotICAgICB9Ci0gICAgIHJldHVybiBjdnQ7Ci0gfQotKyNlbmRpZgotIAotIC8qCi0gICogUmV0dXJucyB0aGUgbG9jYWxlIGRlcGVuZGVudCByZXByZXNlbnRhdGlvbiBvZiBhIGtleXN5bS4KLUBAIC0xMDYsNiArMTA4LDcgQEAgX1hpbUdldExvY2FsZUNvZGUgKAotICAqIHRlcm1pbmF0aW5nIE5VTCBieXRlLiBSZXR1cm4gMCBpZiB0aGUga2V5c3ltIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIHRoZQotICAqIGxvY2FsZQotICAqLwotKyNpZmRlZiBYTE9DQUxFCi0gLypBUkdTVVNFRCovCi0gaW50Ci0gX1hpbUdldENoYXJDb2RlICgKLUBAIC0xMzUsNiArMTM4LDcgQEAgX1hpbUdldENoYXJDb2RlICgKLSAgICAgICAgIGJ1Zltjb3VudF09ICdcMCc7Ci0gICAgIHJldHVybiBjb3VudDsKLSB9Ci0rI2VuZGlmCi0gCi0gI2lmZGVmIFhLQgotIHN0YXRpYyBpbnQgbG9va3VwX3N0cmluZygKLUluZGV4OiBsaWJYMTEtMS4zL3NyYy9YMThOQ01Tc3R1YnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAotKysrIGxpYlgxMS0xLjMvc3JjL1gxOE5DTVNzdHVicy5jCi1AQCAtMCwwICsxLDQyOCBAQAotKy8qCi0rICogWDE4TkNNU3N0dWJzLmMKLSsgKiAtIFByb3ZpZGVzIHN0dWJzIGFuZCBkdW1teSBmdW5jcyBuZWVkZWQgd2hlbiBYY21zIGFuZCBYTG9jYWxlIHN0dWZmIHJlbW92ZWQKLSsgKgotKyAqIENvcHlyaWdodCCpIDIwMDMgTWF0dGhldyBBbGx1bQotKyAqCi0rICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCi0rICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKLSsgKiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKLSsgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCi0rICogZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTWF0dGhldyBBbGx1bSBub3QgYmUgdXNlZCBpbgotKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dAotKyAqIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIGFuZCBDb21wYXEgbWFrZXMgbm8KLSsgKiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQKLSsgKiBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgotKyAqCi0rICogTUFUVEhFVyBBTExVTSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyAKLSsgKiBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCAKLSsgKiBJTiBOTyBFVkVOVCBTSEFMTCBLRUlUSCBQQUNLQVJEIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCi0rICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCi0rICogREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgotKyAqIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKLSsgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotKyAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSAiWGxpYmludC5oIgotKyNpbmNsdWRlICJYbGNpbnQuaCIKLSsjaW5jbHVkZSA8WDExL1hsb2NhbGUuaD4KLSsjaW5jbHVkZSA8WDExL1hvcy5oPgotKyNpZmRlZiBXSU4zMgotKyN1bmRlZiBjbG9zZQotKyNlbmRpZgotKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KLSsjaW5jbHVkZSAiWGxjUHViSS5oIgotKwotKyNpbmNsdWRlICJYY21zaW50LmgiIAkJLyogZm9yIFhjbXNDQ0MgdHlwZSAgKi8KLSsjaW5jbHVkZSAiWGxjUHViSS5oIiAgICAgICAgICAgIC8qIGZvciBYTENkIHR5cGUgKi8KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rCi0rI2lmICEgWExPQ0FMRQotKwotK0Jvb2wKLStYU3VwcG9ydHNMb2NhbGUoKQotK3sKLSsgIHJldHVybiBGYWxzZTsgCQkKLSt9Ci0rCi0rY2hhciAqCi0rWFNldExvY2FsZU1vZGlmaWVycygKLSsgICAgY29uc3QgY2hhciAqbW9kaWZpZXJzKQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStYTENkCi0rX1hPcGVuTEMoCi0rICAgIGNoYXIgKm5hbWUpCi0rewotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK1hMQ2QKLStfWGxjQ3VycmVudExDKCkKLSt7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rdm9pZAotK19YbGNWYVRvQXJnTGlzdCgKLSsgICAgdmFfbGlzdCB2YXIsCi0rICAgIGludCBjb3VudCwKLSsgICAgWGxjQXJnTGlzdCAqYXJnc19yZXQpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLSt2b2lkCi0rX1hsY0NvdW50VmFMaXN0KAotKyAgICB2YV9saXN0IHZhciwKLSsgICAgaW50ICpjb3VudF9yZXQpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLSt2b2lkCi0rX1hDbG9zZUxDKAotKyAgICBYTENkIGxjZCkKLSt7Ci0rICByZXR1cm47Ci0rfQotKwotK2ludAotK19YbGNDb252ZXJ0KAotKyAgICBYbGNDb252IGNvbnYsCi0rICAgIFhQb2ludGVyICpmcm9tLAotKyAgICBpbnQgKmZyb21fbGVmdCwKLSsgICAgWFBvaW50ZXIgKnRvLAotKyAgICBpbnQgKnRvX2xlZnQsCi0rICAgIFhQb2ludGVyICphcmdzLAotKyAgICBpbnQgbnVtX2FyZ3MpCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFhJTSBTdHVicyAqLwotKwotK1hQb2ludGVyCi0rX1hpbUdldExvY2FsZUNvZGUgKCBfWGNvbnN0IGNoYXIqIGVuY29kaW5nX25hbWUgKQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLStpbnQKLStfWGltR2V0Q2hhckNvZGUgKAotKyAgICBYUG9pbnRlciAgICAgICAgICAgIHVjc19jb252LAotKyAgICBLZXlTeW0gICAgICAgICAgICAgIGtleXN5bSwKLSsgICAgdW5zaWduZWQgY2hhciogICAgICBidWYsCi0rICAgIGludCAgICAgICAgICAgICAgICAgbmJ5dGVzKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBYcm0gU3R1YnMgKi8KLSsKLStYcm1NZXRob2RzCi0rX1hybUluaXRQYXJzZUluZm8oCi0rICAgIFhQb2ludGVyICpzdGF0ZSkKLSt7Ci0rICAgIHJldHVybiAoWHJtTWV0aG9kcykgTlVMTDsKLSt9Ci0rCi0rLyogWHdjIFN0dWJzICovCi0rCi0raW50Ci0rWHdjVGV4dEV4dGVudHMoCi0rICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCi0rICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbiwKLSsgICAgWFJlY3RhbmdsZSAgICAgICAgICpvdmVyYWxsX2lua19leHRlbnRzLAotKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKm92ZXJhbGxfbG9naWNhbF9leHRlbnRzKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSt2b2lkIAotK1h3Y0RyYXdTdHJpbmcoRGlzcGxheSAqZGlzcGxheSwKLSsJICAgICAgRHJhd2FibGUgZCwKLSsJICAgICAgWEZvbnRTZXQgZm9udF9zZXQsCi0rCSAgICAgIEdDIGdjLAotKwkgICAgICBpbnQgeCwgaW50IHksCi0rCSAgICAgIF9YY29uc3Qgd2NoYXJfdCAqc3RyaW5nLAotKwkgICAgICBpbnQgbnVtX3djaGFycykKLSt7Ci0rICA7Ci0rfQotKwotK3ZvaWQKLStYd2NEcmF3VGV4dCgKLSsgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCi0rICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKLSsgICAgR0MgICAgICAgICAgICAgICAgICBnYywKLSsgICAgaW50ICAgICAgICAgICAgICAgICB4LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCi0rICAgIFh3Y1RleHRJdGVtICAgICAgICAqdGV4dF9pdGVtcywKLSsgICAgaW50ICAgICAgICAgICAgICAgICBuaXRlbXMpCi0rewotKyAgOwotK30KLSsKLSt2b2lkCi0rWHdjRHJhd0ltYWdlU3RyaW5nKAotKyAgICBEaXNwbGF5ICAgICAgICAgICAgKmRweSwKLSsgICAgRHJhd2FibGUgICAgICAgICAgICBkLAotKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAotKyAgICBHQyAgICAgICAgICAgICAgICAgIGdjLAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHgsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeSwKLSsgICAgX1hjb25zdCB3Y2hhcl90ICAgICp0ZXh0LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuKQotK3sKLSsgIDsKLSt9Ci0rCi0raW50Ci0rWHdjVGV4dEVzY2FwZW1lbnQoCi0rICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCi0rICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0rU3RhdHVzCi0rWHdjVGV4dFBlckNoYXJFeHRlbnRzKAotKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAotKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4sCi0rICAgIFhSZWN0YW5nbGUgICAgICAgICAqaW5rX2V4dGVudHNfYnVmZmVyLAotKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKmxvZ2ljYWxfZXh0ZW50c19idWZmZXIsCi0rICAgIGludCAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUsCi0rICAgIGludCAgICAgICAgICAgICAgICAqbnVtX2NoYXJzLAotKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKm1heF9pbmtfZXh0ZW50cywKLSsgICAgWFJlY3RhbmdsZSAgICAgICAgICptYXhfbG9naWNhbF9leHRlbnRzKQotK3sKLSsgIHJldHVybihYY21zRmFpbHVyZSk7Ci0rfQotKwotK2ludAotK1h3Y1RleHRQcm9wZXJ0eVRvVGV4dExpc3QoCi0rICAgIERpc3BsYXkgKmRweSwKLSsgICAgY29uc3QgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wLAotKyAgICB3Y2hhcl90ICoqKmxpc3RfcmV0LAotKyAgICBpbnQgKmNvdW50X3JldCkKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0raW50Ci0rWHdjVGV4dExpc3RUb1RleHRQcm9wZXJ0eSgKLSsgICAgRGlzcGxheSAqZHB5LAotKyAgICB3Y2hhcl90ICoqbGlzdCwKLSsgICAgaW50IGNvdW50LAotKyAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKLSsgICAgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSt2b2lkCi0rWHdjRnJlZVN0cmluZ0xpc3Qod2NoYXJfdCAqKmxpc3QpCi0rewotKyAgcmV0dXJuOwotK30KLSsKLSsKLSt2b2lkIFhtYlNldFdNUHJvcGVydGllcyAoICAgICAgICAvKiBBY3R1YWxseSBmcm9tIG1iV01Qcm9wcy5jICovCi0rICAgIERpc3BsYXkgKmRweSwKLSsgICAgV2luZG93IHcsCi0rICAgIF9YY29uc3QgY2hhciAqd2luZG93TmFtZSwKLSsgICAgX1hjb25zdCBjaGFyICppY29uTmFtZSwKLSsgICAgY2hhciAqKmFyZ3YsCi0rICAgIGludCBhcmdjLAotKyAgICBYU2l6ZUhpbnRzICpzaXplSGludHMsCi0rICAgIFhXTUhpbnRzICp3bUhpbnRzLAotKyAgICBYQ2xhc3NIaW50ICpjbGFzc0hpbnRzKQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0raW50Ci0rWG1iVGV4dFByb3BlcnR5VG9UZXh0TGlzdCgKLSsgICAgRGlzcGxheSAqZHB5LAotKyAgICBjb25zdCBYVGV4dFByb3BlcnR5ICp0ZXh0X3Byb3AsCi0rICAgIGNoYXIgKioqbGlzdF9yZXQsCi0rICAgIGludCAqY291bnRfcmV0KQotK3sKLSsgIHJldHVybiBYTG9jYWxlTm90U3VwcG9ydGVkOwotK30KLSsKLStpbnQKLStYbWJUZXh0TGlzdFRvVGV4dFByb3BlcnR5KAotKyAgICBEaXNwbGF5ICpkcHksCi0rICAgIGNoYXIgKipsaXN0LAotKyAgICBpbnQgY291bnQsCi0rICAgIFhJQ0NFbmNvZGluZ1N0eWxlIHN0eWxlLAotKyAgICBYVGV4dFByb3BlcnR5ICp0ZXh0X3Byb3ApCi0rewotKyAgcmV0dXJuIFhMb2NhbGVOb3RTdXBwb3J0ZWQ7Ci0rfQotKwotK2ludAotK1htYlRleHRFeHRlbnRzKAotKyAgICBYRm9udFNldCAgICAgICAgZm9udF9zZXQsCi0rICAgIF9YY29uc3QgY2hhciAgICp0ZXh0LAotKyAgICBpbnQgICAgICAgICAgICAgdGV4dF9sZW4sCi0rICAgIFhSZWN0YW5nbGUgICAgICpvdmVyYWxsX2lua19leHRlbnRzLAotKyAgICBYUmVjdGFuZ2xlICAgICAqb3ZlcmFsbF9sb2dpY2FsX2V4dGVudHMpCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3ZvaWQKLStYbWJEcmF3VGV4dCgKLSsgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCi0rICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKLSsgICAgR0MgICAgICAgICAgICAgICAgICBnYywKLSsgICAgaW50ICAgICAgICAgICAgICAgICB4LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCi0rICAgIFhtYlRleHRJdGVtICAgICAgICAqdGV4dF9pdGVtcywKLSsgICAgaW50ICAgICAgICAgICAgICAgICBuaXRlbXMpCi0rewotKyAgOwotK30KLSsKLSt2b2lkCi0rWG1iRHJhd1N0cmluZygKLSsgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCi0rICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKLSsgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKLSsgICAgR0MgICAgICAgICAgICAgICAgICBnYywKLSsgICAgaW50ICAgICAgICAgICAgICAgICB4LAotKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCi0rICAgIF9YY29uc3QgY2hhciAgICAgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKLSt7Ci0rICA7Ci0rfQotKwotK3ZvaWQKLStYbWJEcmF3SW1hZ2VTdHJpbmcoCi0rICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAotKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCi0rICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCi0rICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCi0rICAgIGludCAgICAgICAgICAgICAgICAgeCwKLSsgICAgaW50ICAgICAgICAgICAgICAgICB5LAotKyAgICBfWGNvbnN0IGNoYXIgICAgICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCi0rewotKyAgOwotK30KLSsKLStpbnQKLStYbWJUZXh0RXNjYXBlbWVudCgKLSsgICAgWEZvbnRTZXQgICAgICAgIGZvbnRfc2V0LAotKyAgICBfWGNvbnN0IGNoYXIgICAqdGV4dCwKLSsgICAgaW50ICAgICAgICAgICAgIHRleHRfbGVuKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLStTdGF0dXMKLStYbWJUZXh0UGVyQ2hhckV4dGVudHMoCi0rICAgIFhGb250U2V0ICAgICAgICBmb250X3NldCwKLSsgICAgX1hjb25zdCBjaGFyICAgKnRleHQsCi0rICAgIGludCAgICAgICAgICAgICB0ZXh0X2xlbiwKLSsgICAgWFJlY3RhbmdsZSAgICAgKmlua19leHRlbnRzX2J1ZmZlciwKLSsgICAgWFJlY3RhbmdsZSAgICAgKmxvZ2ljYWxfZXh0ZW50c19idWZmZXIsCi0rICAgIGludCAgICAgICAgICAgICBidWZmZXJfc2l6ZSwKLSsgICAgaW50ICAgICAgICAgICAgKm51bV9jaGFycywKLSsgICAgWFJlY3RhbmdsZSAgICAgKm1heF9pbmtfZXh0ZW50cywKLSsgICAgWFJlY3RhbmdsZSAgICAgKm1heF9sb2dpY2FsX2V4dGVudHMpCi0rewotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3Vuc2lnbmVkIGludAotK0tleVN5bVRvVWNzNChLZXlTeW0ga2V5c3ltKQotK3sKLSsgIHJldHVybiAwOwotK30KLSsKLSsjZW5kaWYgCi0rCi0rI2lmICEgWENNUwotKwotK1hjbXNDQ0MgCi0rWGNtc0NDQ09mQ29sb3JtYXAoZHB5LCBjbWFwKQotKyAgICBEaXNwbGF5ICpkcHk7Ci0rICAgIENvbG9ybWFwIGNtYXA7Ci0rewotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK1N0YXR1cwotK19YY21zUmVzb2x2ZUNvbG9yU3RyaW5nICgKLSsgICAgWGNtc0NDQyBjY2MsCi0rICAgIGNvbnN0IGNoYXIgKipjb2xvcl9zdHJpbmcsCi0rICAgIFhjbXNDb2xvciAqcENvbG9yX2V4YWN0X3JldHVybiwKLSsgICAgWGNtc0NvbG9yRm9ybWF0IHJlc3VsdF9mb3JtYXQpCi0rewotKyAgcmV0dXJuKFhjbXNGYWlsdXJlKTsKLSt9Ci0rCi0rdm9pZAotK19YY21zVW5yZXNvbHZlQ29sb3IoCi0rICAgIFhjbXNDQ0MgY2NjLAotKyAgICBYY21zQ29sb3IgKnBDb2xvcikKLSt7Ci0rICByZXR1cm47Ci0rfQotKwotK3ZvaWQKLStfWFVucmVzb2x2ZUNvbG9yKAotKyAgICBYY21zQ0NDIGNjYywKLSsgICAgWENvbG9yICpwWENvbG9yKQotK3sKLSsgIHJldHVybjsKLSt9Ci0rCi0rWGNtc0NtYXBSZWMgKgotK19YY21zQWRkQ21hcFJlYyhkcHksIGNtYXAsIHdpbmRvd0lELCB2aXN1YWwpCi0rICAgIERpc3BsYXkgKmRweTsKLSsgICAgQ29sb3JtYXAgY21hcDsKLSsgICAgV2luZG93IHdpbmRvd0lEOwotKyAgICBWaXN1YWwgKnZpc3VhbDsKLSt7Ci0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rdm9pZAotK19YY21zUkdCX3RvX1hDb2xvcigKLSsgICAgWGNtc0NvbG9yICpwQ29sb3JzLAotKyAgICBYQ29sb3IgKnBYQ29sb3JzLAotKyAgICB1bnNpZ25lZCBpbnQgbkNvbG9ycykKLSt7Ci0rICByZXR1cm47Ci0rfQotKwotK1hjbXNDbWFwUmVjICoKLStfWGNtc0NvcHlDbWFwUmVjQW5kRnJlZSgKLSsgICAgRGlzcGxheSAqZHB5LAotKyAgICBDb2xvcm1hcCBzcmNfY21hcCwKLSsgICAgQ29sb3JtYXAgY29weV9jbWFwKQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSt2b2lkCi0rX1hjbXNEZWxldGVDbWFwUmVjKAotKyAgICBEaXNwbGF5ICpkcHksCi0rICAgIENvbG9ybWFwIGNtYXApCi0rewotKyAgcmV0dXJuOwotK30KLSsKLSsjZW5kaWYKLUluZGV4OiBsaWJYMTEtMS4zL3NyYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYlgxMS0xLjMub3JpZy9zcmMvTWFrZWZpbGUuYW0KLSsrKyBsaWJYMTEtMS4zL3NyYy9NYWtlZmlsZS5hbQotQEAgLTMzNSw2ICszMzUsOCBAQCBpZiBUSFJTVFVCUwotIGxpYlgxMV9sYV9TT1VSQ0VTKz1VSVRoclN0dWJzLmMKLSBlbmRpZgotIAotK2xpYlgxMV9sYV9TT1VSQ0VTKz1YMThOQ01Tc3R1YnMuYwotKwotIHgxMWRhdGFkaXIgPSBAWDExX0RBVEFESVJACi0geDExZGF0YV9EQVRBID0gWEtleXN5bURCIFhFcnJvckRCCi0gCi1AQCAtMzQyLDYgKzM0NCw3IEBAIEVYVFJBX0RJU1QgPSBcCi0gCSQoeDExZGF0YV9EQVRBKSBcCi0gCW9zMlN0dWJzLmMgXAotLQlVSVRoclN0dWJzLmMgCi0rCVVJVGhyU3R1YnMuYyBcCi0rCVgxOE5DTVNzdHVicy5jCi0gCi0gaWYgWENCCi0gbGliWDExX2xhX1NPVVJDRVMgKz0gXAotSW5kZXg6IGxpYlgxMS0xLjMvc3JjL2xvY2tpbmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYlgxMS0xLjMub3JpZy9zcmMvbG9ja2luZy5jCi0rKysgbGliWDExLTEuMy9zcmMvbG9ja2luZy5jCi1AQCAtNjYsNyArNjYsOSBAQCBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhCi0gI2RlZmluZSBOVU1fRlJFRV9DVkxTIDQKLSAKLSAvKiBpbiBsY1dyYXAuYyAqLwotKyNpZmRlZiBYTE9DQUxFCi0gZXh0ZXJuIExvY2tJbmZvUHRyIF9YaTE4bl9sb2NrOwotKyNlbmRpZgotIAotICNpZmRlZiBXSU4zMgotIHN0YXRpYyBEV09SRCBfWF9UbHNJbmRleCA9IChEV09SRCktMTsKLUBAIC01OTQsOSArNTk2LDExIEBAIFN0YXR1cyBYSW5pdFRocmVhZHModm9pZCkKLSAgICAgX1hnbG9iYWxfbG9jayA9ICZnbG9iYWxfbG9jazsKLSAgICAgeG11dGV4X2luaXQoX1hnbG9iYWxfbG9jay0+bG9jayk7Ci0gICAgIHhtdXRleF9zZXRfbmFtZShfWGdsb2JhbF9sb2NrLT5sb2NrLCAiWGxpYiBnbG9iYWwiKTsKLSsjaWZkZWYgWExPQ0FMRQotICAgICBfWGkxOG5fbG9jayA9ICZpMThuX2xvY2s7Ci0gICAgIHhtdXRleF9pbml0KF9YaTE4bl9sb2NrLT5sb2NrKTsKLSAgICAgeG11dGV4X3NldF9uYW1lKF9YaTE4bl9sb2NrLT5sb2NrLCAiWGxpYiBpMThuIik7Ci0rI2VuZGlmCi0gICAgIF9YTG9ja011dGV4X2ZuID0gX1hMb2NrTXV0ZXg7Ci0gICAgIF9YVW5sb2NrTXV0ZXhfZm4gPSBfWFVubG9ja011dGV4OwotICAgICBfWENyZWF0ZU11dGV4X2ZuID0gX1hDcmVhdGVNdXRleDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9YMThOQ01Tc3R1YnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvWDE4TkNNU3N0dWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMTcyMTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvWDE4TkNNU3N0dWJzLnBhdGNoCkBAIC0wLDAgKzEsNTM2IEBACitGcm9tIDYyMDA1YWQwMTlkNmFmYjgxZGExMDBiMzExMzI5MmExNjQ3MmQyNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMCBTZXAgMjAxOCAwOTowODoyNyArMDgwMAorU3ViamVjdDogW1BBVENIXSBTdHViIG91dCB4MThuCisKK1VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDEuNi42CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgc3JjL01ha2VmaWxlLmFtICAgIHwgICA1ICstCisgc3JjL1gxOE5DTVNzdHVicy5jIHwgNDI2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgc3JjL2ltQ29udi5jICAgICAgIHwgICA1ICstCisgc3JjL2xvY2tpbmcuYyAgICAgIHwgICA0ICsKKyA0IGZpbGVzIGNoYW5nZWQsIDQzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvWDE4TkNNU3N0dWJzLmMKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZjhjNDc2ZC4uY2RiY2JiZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMzM2LDEzICszMzYsMTYgQEAgaWYgVEhSU1RVQlMKKyBsaWJYMTFfbGFfU09VUkNFUys9VUlUaHJTdHVicy5jCisgZW5kaWYKKyAKKytsaWJYMTFfbGFfU09VUkNFUys9WDE4TkNNU3N0dWJzLmMKKysKKyB4MTFkYXRhZGlyID0gQFgxMV9EQVRBRElSQAorIHgxMWRhdGFfREFUQSA9IFhFcnJvckRCCisgCisgRVhUUkFfRElTVCA9IFwKKyAJJCh4MTFkYXRhX0RBVEEpIFwKKyAJb3MyU3R1YnMuYyBcCistCVVJVGhyU3R1YnMuYyAKKysJVUlUaHJTdHVicy5jIFwKKysJWDE4TkNNU3N0dWJzLmMKKyAKKyBsaWJYMTFfeGNiX2xhX1NPVVJDRVMgPSB4MTFfeGNiLmMgWHhjYmludC5oCisgbGliWDExX3hjYl9sYV9MREZMQUdTID0gLXZlcnNpb24tbnVtYmVyIDE6MDowIC1uby11bmRlZmluZWQKK2RpZmYgLS1naXQgYS9zcmMvWDE4TkNNU3N0dWJzLmMgYi9zcmMvWDE4TkNNU3N0dWJzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40MjljYjMxCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvWDE4TkNNU3N0dWJzLmMKK0BAIC0wLDAgKzEsNDI2IEBACisrIC8qIC0gUHJvdmlkZXMgc3R1YnMgYW5kIGR1bW15IGZ1bmNzIG5lZWRlZCB3aGVuIFhjbXMgYW5kIFhMb2NhbGUgc3R1ZmYgcmVtb3ZlZAorKyAqCisrICogQ29weXJpZ2h0IMKpIDIwMDMgTWF0dGhldyBBbGx1bQorKyAqCisrICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgZGlzdHJpYnV0ZSwgYW5kIHNlbGwgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCisrICogZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKKysgKiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKKysgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nCisrICogZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTWF0dGhldyBBbGx1bSBub3QgYmUgdXNlZCBpbgorKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dAorKyAqIHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBLZWl0aCBQYWNrYXJkIGFuZCBDb21wYXEgbWFrZXMgbm8KKysgKiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQKKysgKiBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorKyAqCisrICogTUFUVEhFVyBBTExVTSBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyAKKysgKiBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCAKKysgKiBJTiBOTyBFVkVOVCBTSEFMTCBLRUlUSCBQQUNLQVJEIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCisrICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCisrICogREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgorKyAqIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKKysgKiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorKyAqLworKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSAiWGxpYmludC5oIgorKyNpbmNsdWRlICJYbGNpbnQuaCIKKysjaW5jbHVkZSA8WDExL1hsb2NhbGUuaD4KKysjaW5jbHVkZSA8WDExL1hvcy5oPgorKyNpZmRlZiBXSU4zMgorKyN1bmRlZiBjbG9zZQorKyNlbmRpZgorKyNpbmNsdWRlIDxYMTEvWHV0aWwuaD4KKysjaW5jbHVkZSAiWGxjUHViSS5oIgorKworKyNpbmNsdWRlICJYY21zaW50LmgiIAkJLyogZm9yIFhjbXNDQ0MgdHlwZSAgKi8KKysjaW5jbHVkZSAiWGxjUHViSS5oIiAgICAgICAgICAgIC8qIGZvciBYTENkIHR5cGUgKi8KKysjaW5jbHVkZSAiY29uZmlnLmgiCisrCisrI2lmICEgWExPQ0FMRQorKworK0Jvb2wKKytYU3VwcG9ydHNMb2NhbGUoKQorK3sKKysgIHJldHVybiBGYWxzZTsgCQkKKyt9CisrCisrY2hhciAqCisrWFNldExvY2FsZU1vZGlmaWVycygKKysgICAgY29uc3QgY2hhciAqbW9kaWZpZXJzKQorK3sKKysgIHJldHVybiBOVUxMOworK30KKysKKytYTENkCisrX1hPcGVuTEMoCisrICAgIGNoYXIgKm5hbWUpCisreworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK1hMQ2QKKytfWGxjQ3VycmVudExDKCkKKyt7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrdm9pZAorK19YbGNWYVRvQXJnTGlzdCgKKysgICAgdmFfbGlzdCB2YXIsCisrICAgIGludCBjb3VudCwKKysgICAgWGxjQXJnTGlzdCAqYXJnc19yZXQpCisreworKyAgcmV0dXJuOworK30KKysKKyt2b2lkCisrX1hsY0NvdW50VmFMaXN0KAorKyAgICB2YV9saXN0IHZhciwKKysgICAgaW50ICpjb3VudF9yZXQpCisreworKyAgcmV0dXJuOworK30KKysKKyt2b2lkCisrX1hDbG9zZUxDKAorKyAgICBYTENkIGxjZCkKKyt7CisrICByZXR1cm47CisrfQorKworK2ludAorK19YbGNDb252ZXJ0KAorKyAgICBYbGNDb252IGNvbnYsCisrICAgIFhQb2ludGVyICpmcm9tLAorKyAgICBpbnQgKmZyb21fbGVmdCwKKysgICAgWFBvaW50ZXIgKnRvLAorKyAgICBpbnQgKnRvX2xlZnQsCisrICAgIFhQb2ludGVyICphcmdzLAorKyAgICBpbnQgbnVtX2FyZ3MpCisreworKyAgcmV0dXJuIDA7CisrfQorKworKy8qIFhJTSBTdHVicyAqLworKworK1hQb2ludGVyCisrX1hpbUdldExvY2FsZUNvZGUgKCBfWGNvbnN0IGNoYXIqIGVuY29kaW5nX25hbWUgKQorK3sKKysgIHJldHVybiBOVUxMOworK30KKysKKytpbnQKKytfWGltR2V0Q2hhckNvZGUgKAorKyAgICBYUG9pbnRlciAgICAgICAgICAgIHVjc19jb252LAorKyAgICBLZXlTeW0gICAgICAgICAgICAgIGtleXN5bSwKKysgICAgdW5zaWduZWQgY2hhciogICAgICBidWYsCisrICAgIGludCAgICAgICAgICAgICAgICAgbmJ5dGVzKQorK3sKKysgIHJldHVybiAwOworK30KKysKKysvKiBYcm0gU3R1YnMgKi8KKysKKytYcm1NZXRob2RzCisrX1hybUluaXRQYXJzZUluZm8oCisrICAgIFhQb2ludGVyICpzdGF0ZSkKKyt7CisrICAgIHJldHVybiAoWHJtTWV0aG9kcykgTlVMTDsKKyt9CisrCisrLyogWHdjIFN0dWJzICovCisrCisraW50CisrWHdjVGV4dEV4dGVudHMoCisrICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCisrICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbiwKKysgICAgWFJlY3RhbmdsZSAgICAgICAgICpvdmVyYWxsX2lua19leHRlbnRzLAorKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKm92ZXJhbGxfbG9naWNhbF9leHRlbnRzKQorK3sKKysgIHJldHVybiAwOworK30KKysKKyt2b2lkIAorK1h3Y0RyYXdTdHJpbmcoRGlzcGxheSAqZGlzcGxheSwKKysJICAgICAgRHJhd2FibGUgZCwKKysJICAgICAgWEZvbnRTZXQgZm9udF9zZXQsCisrCSAgICAgIEdDIGdjLAorKwkgICAgICBpbnQgeCwgaW50IHksCisrCSAgICAgIF9YY29uc3Qgd2NoYXJfdCAqc3RyaW5nLAorKwkgICAgICBpbnQgbnVtX3djaGFycykKKyt7CisrICA7CisrfQorKworK3ZvaWQKKytYd2NEcmF3VGV4dCgKKysgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCisrICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKKysgICAgR0MgICAgICAgICAgICAgICAgICBnYywKKysgICAgaW50ICAgICAgICAgICAgICAgICB4LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCisrICAgIFh3Y1RleHRJdGVtICAgICAgICAqdGV4dF9pdGVtcywKKysgICAgaW50ICAgICAgICAgICAgICAgICBuaXRlbXMpCisreworKyAgOworK30KKysKKyt2b2lkCisrWHdjRHJhd0ltYWdlU3RyaW5nKAorKyAgICBEaXNwbGF5ICAgICAgICAgICAgKmRweSwKKysgICAgRHJhd2FibGUgICAgICAgICAgICBkLAorKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAorKyAgICBHQyAgICAgICAgICAgICAgICAgIGdjLAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHgsCisrICAgIGludCAgICAgICAgICAgICAgICAgeSwKKysgICAgX1hjb25zdCB3Y2hhcl90ICAgICp0ZXh0LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHRleHRfbGVuKQorK3sKKysgIDsKKyt9CisrCisraW50CisrWHdjVGV4dEVzY2FwZW1lbnQoCisrICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCisrICAgIF9YY29uc3Qgd2NoYXJfdCAgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisrU3RhdHVzCisrWHdjVGV4dFBlckNoYXJFeHRlbnRzKAorKyAgICBYRm9udFNldCAgICAgICAgICAgIGZvbnRfc2V0LAorKyAgICBfWGNvbnN0IHdjaGFyX3QgICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4sCisrICAgIFhSZWN0YW5nbGUgICAgICAgICAqaW5rX2V4dGVudHNfYnVmZmVyLAorKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKmxvZ2ljYWxfZXh0ZW50c19idWZmZXIsCisrICAgIGludCAgICAgICAgICAgICAgICAgYnVmZmVyX3NpemUsCisrICAgIGludCAgICAgICAgICAgICAgICAqbnVtX2NoYXJzLAorKyAgICBYUmVjdGFuZ2xlICAgICAgICAgKm1heF9pbmtfZXh0ZW50cywKKysgICAgWFJlY3RhbmdsZSAgICAgICAgICptYXhfbG9naWNhbF9leHRlbnRzKQorK3sKKysgIHJldHVybihYY21zRmFpbHVyZSk7CisrfQorKworK2ludAorK1h3Y1RleHRQcm9wZXJ0eVRvVGV4dExpc3QoCisrICAgIERpc3BsYXkgKmRweSwKKysgICAgY29uc3QgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wLAorKyAgICB3Y2hhcl90ICoqKmxpc3RfcmV0LAorKyAgICBpbnQgKmNvdW50X3JldCkKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisraW50CisrWHdjVGV4dExpc3RUb1RleHRQcm9wZXJ0eSgKKysgICAgRGlzcGxheSAqZHB5LAorKyAgICB3Y2hhcl90ICoqbGlzdCwKKysgICAgaW50IGNvdW50LAorKyAgICBYSUNDRW5jb2RpbmdTdHlsZSBzdHlsZSwKKysgICAgWFRleHRQcm9wZXJ0eSAqdGV4dF9wcm9wKQorK3sKKysgIHJldHVybiAwOworK30KKysKKyt2b2lkCisrWHdjRnJlZVN0cmluZ0xpc3Qod2NoYXJfdCAqKmxpc3QpCisreworKyAgcmV0dXJuOworK30KKysKKysKKyt2b2lkIFhtYlNldFdNUHJvcGVydGllcyAoICAgICAgICAvKiBBY3R1YWxseSBmcm9tIG1iV01Qcm9wcy5jICovCisrICAgIERpc3BsYXkgKmRweSwKKysgICAgV2luZG93IHcsCisrICAgIF9YY29uc3QgY2hhciAqd2luZG93TmFtZSwKKysgICAgX1hjb25zdCBjaGFyICppY29uTmFtZSwKKysgICAgY2hhciAqKmFyZ3YsCisrICAgIGludCBhcmdjLAorKyAgICBYU2l6ZUhpbnRzICpzaXplSGludHMsCisrICAgIFhXTUhpbnRzICp3bUhpbnRzLAorKyAgICBYQ2xhc3NIaW50ICpjbGFzc0hpbnRzKQorK3sKKysgIHJldHVybjsKKyt9CisrCisraW50CisrWG1iVGV4dFByb3BlcnR5VG9UZXh0TGlzdCgKKysgICAgRGlzcGxheSAqZHB5LAorKyAgICBjb25zdCBYVGV4dFByb3BlcnR5ICp0ZXh0X3Byb3AsCisrICAgIGNoYXIgKioqbGlzdF9yZXQsCisrICAgIGludCAqY291bnRfcmV0KQorK3sKKysgIHJldHVybiBYTG9jYWxlTm90U3VwcG9ydGVkOworK30KKysKKytpbnQKKytYbWJUZXh0TGlzdFRvVGV4dFByb3BlcnR5KAorKyAgICBEaXNwbGF5ICpkcHksCisrICAgIGNoYXIgKipsaXN0LAorKyAgICBpbnQgY291bnQsCisrICAgIFhJQ0NFbmNvZGluZ1N0eWxlIHN0eWxlLAorKyAgICBYVGV4dFByb3BlcnR5ICp0ZXh0X3Byb3ApCisreworKyAgcmV0dXJuIFhMb2NhbGVOb3RTdXBwb3J0ZWQ7CisrfQorKworK2ludAorK1htYlRleHRFeHRlbnRzKAorKyAgICBYRm9udFNldCAgICAgICAgZm9udF9zZXQsCisrICAgIF9YY29uc3QgY2hhciAgICp0ZXh0LAorKyAgICBpbnQgICAgICAgICAgICAgdGV4dF9sZW4sCisrICAgIFhSZWN0YW5nbGUgICAgICpvdmVyYWxsX2lua19leHRlbnRzLAorKyAgICBYUmVjdGFuZ2xlICAgICAqb3ZlcmFsbF9sb2dpY2FsX2V4dGVudHMpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK3ZvaWQKKytYbWJEcmF3VGV4dCgKKysgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCisrICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKKysgICAgR0MgICAgICAgICAgICAgICAgICBnYywKKysgICAgaW50ICAgICAgICAgICAgICAgICB4LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCisrICAgIFhtYlRleHRJdGVtICAgICAgICAqdGV4dF9pdGVtcywKKysgICAgaW50ICAgICAgICAgICAgICAgICBuaXRlbXMpCisreworKyAgOworK30KKysKKyt2b2lkCisrWG1iRHJhd1N0cmluZygKKysgICAgRGlzcGxheSAgICAgICAgICAgICpkcHksCisrICAgIERyYXdhYmxlICAgICAgICAgICAgZCwKKysgICAgWEZvbnRTZXQgICAgICAgICAgICBmb250X3NldCwKKysgICAgR0MgICAgICAgICAgICAgICAgICBnYywKKysgICAgaW50ICAgICAgICAgICAgICAgICB4LAorKyAgICBpbnQgICAgICAgICAgICAgICAgIHksCisrICAgIF9YY29uc3QgY2hhciAgICAgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB0ZXh0X2xlbikKKyt7CisrICA7CisrfQorKworK3ZvaWQKKytYbWJEcmF3SW1hZ2VTdHJpbmcoCisrICAgIERpc3BsYXkgICAgICAgICAgICAqZHB5LAorKyAgICBEcmF3YWJsZSAgICAgICAgICAgIGQsCisrICAgIFhGb250U2V0ICAgICAgICAgICAgZm9udF9zZXQsCisrICAgIEdDICAgICAgICAgICAgICAgICAgZ2MsCisrICAgIGludCAgICAgICAgICAgICAgICAgeCwKKysgICAgaW50ICAgICAgICAgICAgICAgICB5LAorKyAgICBfWGNvbnN0IGNoYXIgICAgICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICAgICAgdGV4dF9sZW4pCisreworKyAgOworK30KKysKKytpbnQKKytYbWJUZXh0RXNjYXBlbWVudCgKKysgICAgWEZvbnRTZXQgICAgICAgIGZvbnRfc2V0LAorKyAgICBfWGNvbnN0IGNoYXIgICAqdGV4dCwKKysgICAgaW50ICAgICAgICAgICAgIHRleHRfbGVuKQorK3sKKysgIHJldHVybiAwOworK30KKysKKytTdGF0dXMKKytYbWJUZXh0UGVyQ2hhckV4dGVudHMoCisrICAgIFhGb250U2V0ICAgICAgICBmb250X3NldCwKKysgICAgX1hjb25zdCBjaGFyICAgKnRleHQsCisrICAgIGludCAgICAgICAgICAgICB0ZXh0X2xlbiwKKysgICAgWFJlY3RhbmdsZSAgICAgKmlua19leHRlbnRzX2J1ZmZlciwKKysgICAgWFJlY3RhbmdsZSAgICAgKmxvZ2ljYWxfZXh0ZW50c19idWZmZXIsCisrICAgIGludCAgICAgICAgICAgICBidWZmZXJfc2l6ZSwKKysgICAgaW50ICAgICAgICAgICAgKm51bV9jaGFycywKKysgICAgWFJlY3RhbmdsZSAgICAgKm1heF9pbmtfZXh0ZW50cywKKysgICAgWFJlY3RhbmdsZSAgICAgKm1heF9sb2dpY2FsX2V4dGVudHMpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK3Vuc2lnbmVkIGludAorK0tleVN5bVRvVWNzNChLZXlTeW0ga2V5c3ltKQorK3sKKysgIHJldHVybiAwOworK30KKysKKysjZW5kaWYgCisrCisrI2lmICEgWENNUworKworK1hjbXNDQ0MgCisrWGNtc0NDQ09mQ29sb3JtYXAoZHB5LCBjbWFwKQorKyAgICBEaXNwbGF5ICpkcHk7CisrICAgIENvbG9ybWFwIGNtYXA7CisreworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK1N0YXR1cworK19YY21zUmVzb2x2ZUNvbG9yU3RyaW5nICgKKysgICAgWGNtc0NDQyBjY2MsCisrICAgIGNvbnN0IGNoYXIgKipjb2xvcl9zdHJpbmcsCisrICAgIFhjbXNDb2xvciAqcENvbG9yX2V4YWN0X3JldHVybiwKKysgICAgWGNtc0NvbG9yRm9ybWF0IHJlc3VsdF9mb3JtYXQpCisreworKyAgcmV0dXJuKFhjbXNGYWlsdXJlKTsKKyt9CisrCisrdm9pZAorK19YY21zVW5yZXNvbHZlQ29sb3IoCisrICAgIFhjbXNDQ0MgY2NjLAorKyAgICBYY21zQ29sb3IgKnBDb2xvcikKKyt7CisrICByZXR1cm47CisrfQorKworK3ZvaWQKKytfWFVucmVzb2x2ZUNvbG9yKAorKyAgICBYY21zQ0NDIGNjYywKKysgICAgWENvbG9yICpwWENvbG9yKQorK3sKKysgIHJldHVybjsKKyt9CisrCisrWGNtc0NtYXBSZWMgKgorK19YY21zQWRkQ21hcFJlYyhkcHksIGNtYXAsIHdpbmRvd0lELCB2aXN1YWwpCisrICAgIERpc3BsYXkgKmRweTsKKysgICAgQ29sb3JtYXAgY21hcDsKKysgICAgV2luZG93IHdpbmRvd0lEOworKyAgICBWaXN1YWwgKnZpc3VhbDsKKyt7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrdm9pZAorK19YY21zUkdCX3RvX1hDb2xvcigKKysgICAgWGNtc0NvbG9yICpwQ29sb3JzLAorKyAgICBYQ29sb3IgKnBYQ29sb3JzLAorKyAgICB1bnNpZ25lZCBpbnQgbkNvbG9ycykKKyt7CisrICByZXR1cm47CisrfQorKworK1hjbXNDbWFwUmVjICoKKytfWGNtc0NvcHlDbWFwUmVjQW5kRnJlZSgKKysgICAgRGlzcGxheSAqZHB5LAorKyAgICBDb2xvcm1hcCBzcmNfY21hcCwKKysgICAgQ29sb3JtYXAgY29weV9jbWFwKQorK3sKKysgIHJldHVybiBOVUxMOworK30KKysKKyt2b2lkCisrX1hjbXNEZWxldGVDbWFwUmVjKAorKyAgICBEaXNwbGF5ICpkcHksCisrICAgIENvbG9ybWFwIGNtYXApCisreworKyAgcmV0dXJuOworK30KKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvaW1Db252LmMgYi9zcmMvaW1Db252LmMKK2luZGV4IGMzYzE5NzQuLjA0ZWNjODEgMTAwNjQ0CistLS0gYS9zcmMvaW1Db252LmMKKysrKyBiL3NyYy9pbUNvbnYuYworQEAgLTgwLDYgKzgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBTdWJzdFJlYyBTdWJzdFRhYmxlW10gPSB7CisgICogZnJvbSBVQ1MgY2hhciB0byBzcGVjaWZpZWQgY2hhcnNldCBjaGFyLgorICAqIFRoaXMgY29udmVydGVyIGlzIG5lZWRlZCBmb3IgX1hpbUdldENoYXJDb2RlIHN1YnJvdXRpbmUuCisgICovCisrI2lmZGVmIFhMT0NBTEUKKyBYUG9pbnRlcgorIF9YaW1HZXRMb2NhbGVDb2RlICgKKyAgICAgX1hjb25zdCBjaGFyKgllbmNvZGluZ19uYW1lKQorQEAgLTkzLDcgKzk0LDcgQEAgX1hpbUdldExvY2FsZUNvZGUgKAorICAgICB9CisgICAgIHJldHVybiBjdnQ7CisgfQorLQorKyNlbmRpZgorIC8qCisgICogUmV0dXJucyB0aGUgbG9jYWxlIGRlcGVuZGVudCByZXByZXNlbnRhdGlvbiBvZiBhIGtleXN5bS4KKyAgKiBUaGUgbG9jYWxlJ3MgZW5jb2RpbmcgaXMgcGFzc2VkIGluIGZvcm0gb2YgcG9pbnRlciB0byBVQ1MgY29udmVydG9yLgorQEAgLTEwNSw2ICsxMDUsNyBAQCBfWGltR2V0TG9jYWxlQ29kZSAoCisgICogbG9jYWxlCisgICovCisgLypBUkdTVVNFRCovCisrI2lmZGVmIFhMT0NBTEUKKyBpbnQKKyBfWGltR2V0Q2hhckNvZGUgKAorICAgICBYUG9pbnRlciAgICAgICAgICAgIHVjc19jb252LAorQEAgLTEzMyw2ICsxMzQsNyBAQCBfWGltR2V0Q2hhckNvZGUgKAorICAgICAgICAgYnVmW2NvdW50XT0gJ1wwJzsKKyAgICAgcmV0dXJuIGNvdW50OworIH0KKysjZW5kaWYKKworICNpZmRlZiBYS0IKKyBzdGF0aWMgaW50IGxvb2t1cF9zdHJpbmcoCitkaWZmIC0tZ2l0IGEvc3JjL2xvY2tpbmcuYyBiL3NyYy9sb2NraW5nLmMKK2luZGV4IDlmNGZlMDYuLmU2OTY3ZWUgMTAwNjQ0CistLS0gYS9zcmMvbG9ja2luZy5jCisrKysgYi9zcmMvbG9ja2luZy5jCitAQCAtNjUsNyArNjUsOSBAQCBpbiB0aGlzIFNvZnR3YXJlIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gVGhlIE9wZW4gR3JvdXAuCisgI2RlZmluZSBOVU1fRlJFRV9DVkxTIDQKKyAKKyAvKiBpbiBsY1dyYXAuYyAqLworKyNpZmRlZiBYTE9DQUxFCisgZXh0ZXJuIExvY2tJbmZvUHRyIF9YaTE4bl9sb2NrOworKyNlbmRpZgorIAorICNpZmRlZiBXSU4zMgorIHN0YXRpYyBEV09SRCBfWF9UbHNJbmRleCA9IChEV09SRCktMTsKK0BAIC01OTcsOSArNTk5LDExIEBAIFN0YXR1cyBYSW5pdFRocmVhZHModm9pZCkKKyAgICAgX1hnbG9iYWxfbG9jayA9ICZnbG9iYWxfbG9jazsKKyAgICAgeG11dGV4X2luaXQoX1hnbG9iYWxfbG9jay0+bG9jayk7CisgICAgIHhtdXRleF9zZXRfbmFtZShfWGdsb2JhbF9sb2NrLT5sb2NrLCAiWGxpYiBnbG9iYWwiKTsKKysjaWZkZWYgWExPQ0FMRQorICAgICBfWGkxOG5fbG9jayA9ICZpMThuX2xvY2s7CisgICAgIHhtdXRleF9pbml0KF9YaTE4bl9sb2NrLT5sb2NrKTsKKyAgICAgeG11dGV4X3NldF9uYW1lKF9YaTE4bl9sb2NrLT5sb2NrLCAiWGxpYiBpMThuIik7CisrI2VuZGlmCisgICAgIF9YTG9ja011dGV4X2ZuID0gX1hMb2NrTXV0ZXg7CisgICAgIF9YVW5sb2NrTXV0ZXhfZm4gPSBfWFVubG9ja011dGV4OworICAgICBfWENyZWF0ZU11dGV4X2ZuID0gX1hDcmVhdGVNdXRleDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC1kaXNhYmxlLXhsb2NhbGUuZGlmZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtZGlzYWJsZS14bG9jYWxlLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YzM5ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC1kaXNhYmxlLXhsb2NhbGUuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBYaWFvZmVuZyBZYW4gPHhpYW9mZW5nLnlhbkB3aW5kcml2ZXIuY29tPgotLS0tIGxpYlgxMS1YMTFSNy4wLTEuMC4wL3NyYy9Gb250LmMub3JpZwkyMDA2LTAzLTEyIDE4OjM1OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGxpYlgxMS1YMTFSNy4wLTEuMC4wL3NyYy9Gb250LmMJMjAwNi0wMy0xMiAxODo0MDoyNy4wMDAwMDAwMDAgKzAxMDAKLUBAIC03MDEsNyArNzAxLDExIEBACi0gICAgIH0KLSAgICAgaWYgKGwgLSAyIC0gKHAgLSBjaGFyc2V0KSA8IDApCi0gCXJldHVybiAwOwotKyNpZmRlZiBYTE9DQUxFCi0gICAgIGlmIChfWGxjTkNvbXBhcmVJU09MYXRpbjEobmFtZSArIGwgLSAyIC0gKHAgLSBjaGFyc2V0KSwgY2hhcnNldCwgcCAtIGNoYXJzZXQpKQotKyNlbHNlCi0rICAgIGlmIChzdHJuY2FzZWNtcChuYW1lICsgbCAtIDIgLSAocCAtIGNoYXJzZXQpLCBjaGFyc2V0LCBwIC0gY2hhcnNldCkpCi0rI2VuZGlmCi0gCXJldHVybiAwOwotICAgICBpZiAoc3RybGVuKHAgKyAxKSArIGwgLSAxID49IHNpemVvZihidWYpIC0gMSkKLSAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LWRpc2FibGUteGxvY2FsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtZGlzYWJsZS14bG9jYWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5Y2Y3NGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LWRpc2FibGUteGxvY2FsZS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDVjMTY5MzAyOGVmMTJhYjc2N2Q3Y2RiYzM0OWMyN2VmYTFhZGE4N2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMCBTZXAgMjAxOCAwOToxMzozOCArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2hlbiB4bG9jYWxlIGRpc2FibGVkCisKK1NpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDEuNi42CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvRm9udC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL0ZvbnQuYyBiL3NyYy9Gb250LmMKK2luZGV4IGE3M2Y5YjEuLjhmNGQyMTAgMTAwNjQ0CistLS0gYS9zcmMvRm9udC5jCisrKysgYi9zcmMvRm9udC5jCitAQCAtNjc1LDcgKzY3NSwxMSBAQCBpbnQgX1hGODZMb2FkUXVlcnlMb2NhbGVGb250KAorICAgICB9CisgICAgIGlmIChsIC0gMiAtIChwIC0gY2hhcnNldCkgPCAwKQorIAlyZXR1cm4gMDsKKysjaWZkZWYgWExPQ0FMRQorICAgICBpZiAoX1hsY05Db21wYXJlSVNPTGF0aW4xKG5hbWUgKyBsIC0gMiAtIChwIC0gY2hhcnNldCksIGNoYXJzZXQsIHAgLSBjaGFyc2V0KSkKKysjZWxzZQorKyAgICBpZiAoc3RybmNhc2VjbXAobmFtZSArIGwgLSAyIC0gKHAgLSBjaGFyc2V0KSwgY2hhcnNldCwgcCAtIGNoYXJzZXQpKQorKyNlbmRpZgorIAlyZXR1cm4gMDsKKyAgICAgaWYgKHN0cmxlbihwICsgMSkgKyBsIC0gMSA+PSBzaXplb2YoYnVmKSAtIDEpCisgCXJldHVybiAwOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL2ZpeC11dGY4LXdyb25nLWRlZmluZS5wYXRjaAppbmRleCBjNjM0N2Y1Li4wYjU3ZTBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS9maXgtdXRmOC13cm9uZy1kZWZpbmUucGF0Y2gKQEAgLTEsMTkgKzEsMzEgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworRnJvbSAwNDY3MDMzNzMwNTVjNzAyOWMxOWQxNzFlNDE1ZmYzY2FhYTg3MzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTAgU2VwIDIwMTggMDk6MTY6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSB1bmljb2RlCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiAKLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3LmhvbGdlcnNjaHVyaWcuZGUvcGF0Y2hlci5odG1sCi0jCitVcGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiAxLjYuNgogCi0tLS0gbGliWDExLVgxMVI3LjAtMS4wLjAvaW5jbHVkZS9YMTEvWGxpYi5ofmZpeC11dGY4LXdyb25nLWRlZmluZQotKysrIGxpYlgxMS1YMTFSNy4wLTEuMC4wL2luY2x1ZGUvWDExL1hsaWIuaAotQEAgLTEwMyw3ICsxMDMsNyBAQAorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgaW5jbHVkZS9YMTEvWGxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9YMTEvWGxpYi5oIGIvaW5jbHVkZS9YMTEvWGxpYi5oCitpbmRleCA4NDQwM2Y3Li41NmJlNjU0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9YMTEvWGxpYi5oCisrKysgYi9pbmNsdWRlL1gxMS9YbGliLmgKK0BAIC02Nyw3ICs2Nyw3IEBAIF9YbWJsZW4oCiAgCiAgLyogQVBJIG1lbnRpb25pbmcgIlVURjgiIG9yICJ1dGY4IiBpcyBhbiBYRnJlZTg2IGV4dGVuc2lvbiwgaW50cm9kdWNlZCBpbgogICAgIE5vdmVtYmVyIDIwMDAuIEl0cyBwcmVzZW5jZSBpcyBpbmRpY2F0ZWQgdGhyb3VnaCB0aGUgZm9sbG93aW5nIG1hY3JvLiAqLwogLSNkZWZpbmUgWF9IQVZFX1VURjhfU1RSSU5HIDEKICsjdW5kZWYgWF9IQVZFX1VURjhfU1RSSU5HCiAgCi0gdHlwZWRlZiBjaGFyICpYUG9pbnRlcjsKLSAKKyAvKiBUaGUgWGxpYiBzdHJ1Y3RzIGFyZSBmdWxsIG9mIGltcGxpY2l0IHBhZGRpbmcgdG8gcHJvcGVybHkgYWxpZ24gbWVtYmVycy4KKyAgICBXZSBjYW4ndCBjbGVhbiB0aGF0IHVwIHdpdGhvdXQgYnJlYWtpbmcgQUJJLCBzbyB0ZWxsIGNsYW5nIG5vdCB0byBib3RoZXIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjdiZjI4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgbGlieDExLmluYwotaW5oZXJpdCBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSArPSAiZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2ggXAotICAgICAgICAgICAiCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLSAgICBzZWQgLWkgLWUgIi9YMTFfQ0ZMQUdTL2QiICR7Qn0vc3JjL3V0aWwvTWFrZWZpbGUKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjBmNjE4ZGI3MGM0MDU0Y2E2N2NlZTBjYzE1NmE0MjU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRkMzg5MGRiMmJhMjI1YmE4YzU1Y2E2M2M2NDA5YzFlYmIwNzhhMjgwNmRlNTlmYjE2MzQyNzY4YWU2MzQzNWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZTFhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNi5iYgpAQCAtMCwwICsxLDE0IEBACityZXF1aXJlIGxpYngxMS5pbmMKK2luaGVyaXQgZ2V0dGV4dAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9GaXgtaGFuZ2luZy1pc3N1ZS1pbi1fWFJlcGx5LnBhdGNoIFwKKyAgICAgICAgICAgIgorZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisgICAgc2VkIC1pIC1lICIvWDExX0NGTEFHUy9kIiAke0J9L3NyYy91dGlsL01ha2VmaWxlCit9CisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YjBmODNlODUxYjNiNDY5ZGQ2NjBmM2E5NWFjM2U0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NWZlMTgxZDQwZWM3N2Y0NTQxNzcxMGM2YTY3NDMxODE0YWIyNTJkMjFjMmU4NWM3NWRkMWVkNTY4YWY0MTRmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGF1XzEuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGF1XzEuMC44LmJiCmluZGV4IDJlZjhiZmEuLjhjNTI0NzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhhdV8xLjAuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4YXVfMS4wLjguYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzkwOGUzNDI0OTExOTg0MDEzMjFjZWMxOTU2ODA3ZWMiCiAKLURFUEVORFMgKz0gIiB4cHJvdG8iCitERVBFTkRTICs9ICIgeG9yZ3Byb3RvIgogUFJPVklERVMgPSAieGF1IgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZS9maXgteGNiLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZS9maXgteGNiLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjE0ODgzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGUvZml4LXhjYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGVyZSBpcyBubyBleHRyYSByZXBseSBkYXRhIGFuZCBpZiB3ZSBzYXkgbm90IHRvIGRpc2dhcmQgaXQsIHhjYgotdGhyb3dzIGZhdGFsIGFzc2VydHMuCi0KLVJQIC0gMjYvMTEvMDkKLQotSW5kZXg6IGdpdC94Y2FsaWJyYXRlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy94Y2FsaWJyYXRlLmMJMjAwOS0xMS0yNiAwODoxMTo0OC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnaXQveGNhbGlicmF0ZS5jCTIwMDktMTEtMjYgMDg6MDk6NTUuMDAwMDAwMDAwICswMDAwCi1AQCAtMjE2LDcgKzIxNiw3IEBACi0gICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgcmVxLT54Q2FsaWJyYXRlUmVxVHlwZSA9IFhfWENhbGlicmF0ZVJhd01vZGU7Ci0gICByZXEtPm9uID0gZW5hYmxlOwotLSAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeEZhbHNlKSkgCi0rICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIAotICAgICB7Ci0gICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICBTeW5jSGFuZGxlICgpOwotQEAgLTI0MCw3ICsyNDAsNyBAQAotICAgcmVxLT54Q2FsaWJyYXRlUmVxVHlwZSA9IFhfWENhbGlicmF0ZVNjcmVlblRvQ29vcmQ7Ci0gICByZXEtPnggPSAqeDsKLSAgIHJlcS0+eSA9ICp5OwotLSAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgeEZhbHNlKSkgCi0rICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIAotICAgICB7Ci0gICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICBTeW5jSGFuZGxlICgpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZlNjUzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiWENhbGlicmF0ZTogVG91Y2hzY3JlZW4gY2FsaWJyYXRpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAibGliWENhbGlicmF0ZSBpcyBhIGxpYnJhcnkgZm9yIHBlcmZvcm1pbmcgdG91Y2hzY3JlZW4gXAotY2FsaWJyYXRpb24gd2l0aCB0aGUga2RyaXZlIHRzbGliIHRvdWNoc2NyZWVuIGRyaXZlci4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hjYWxpYnJhdGUuaDtlbmRsaW5lPTIxO21kNT1mYTU3MmRmNjQzOWYwZjIzNWYyNjEyZjM3MGYxNTNkNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94Y2FsaWJyYXRlLmM7ZW5kbGluZT0yMTttZDU9ZmE1NzJkZjY0MzlmMGYyMzVmMjYxMmYzNzBmMTUzZDciCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgY2FsaWJyYXRlcHJvdG8gbGlieGV4dCIKLQotU1JDUkVWID0gIjIwOWQ4M2FmNjFlZDM4YTAwMmM4MDk2Mzc3ZGVhYzI5MmIzZTM5NmMiCi1QViA9ICIwLjArZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvbGliL2xpYlhDYWxpYnJhdGUgXAotICAgICAgICAgICBmaWxlOi8vZml4LXhjYi5wYXRjaCIKLVVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0tbG9jYWxlICs9ICIke2RhdGFkaXJ9L1gxMS9sb2NhbGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvRml4LWluY29uc2lzdGVudC11c2Utb2YtdGFicy12cy4tc3BhY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2IvRml4LWluY29uc2lzdGVudC11c2Utb2YtdGFicy12cy4tc3BhY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5OTIzODYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiL0ZpeC1pbmNvbnNpc3RlbnQtdXNlLW9mLXRhYnMtdnMuLXNwYWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSA4NzQwYTI4OGNhNDY4NDMzMTQxMzQxMzQ3YWExMTViOTU0NDg5MWQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLURhdGU6IFRodSwgMTkgTWF5IDIwMTYgMTc6MzE6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGluY29uc2lzdGVudCB1c2Ugb2YgdGFicyB2cy4gc3BhY2UuCi0KLU5lZWRlZCBmb3IgYXQgbGVhc3QgcHl0aG9uLTMuNS54LgotCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgotU2lnbmVkLW9mZi1ieTogVWxpIFNjaGxhY2h0ZXIgPHBzeWNob25Aem5jLmluPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2NfY2xpZW50LnB5IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NfY2xpZW50LnB5IGIvc3JjL2NfY2xpZW50LnB5Ci1pbmRleCA1N2RlM2ZiLi4wNDMzMzhkIDEwMDY0NAotLS0tIGEvc3JjL2NfY2xpZW50LnB5Ci0rKysgYi9zcmMvY19jbGllbnQucHkKLUBAIC0xMzY0LDcgKzEzNjQsNyBAQCBkZWYgX2Nfc2VyaWFsaXplKGNvbnRleHQsIHNlbGYpOgotICAgICAgICAgICAgIF9jKCcgICAgdW5zaWduZWQgaW50IHhjYl9hbGlnbl90byA9IDA7JykKLSAgICAgICAgIGlmIHNlbGYuaXNfc3dpdGNoOgotICAgICAgICAgICAgIF9jKCcgICAgdW5zaWduZWQgaW50IHhjYl9wYWRkaW5nX29mZnNldCA9ICVkOycsCi0tCSAgICAgICBzZWxmLmdldF9hbGlnbl9vZmZzZXQoKSApCi0rICAgICAgICAgICAgICAgc2VsZi5nZXRfYWxpZ25fb2Zmc2V0KCkgKQotICAgICAgICAgcHJlZml4ID0gWygnX2F1eCcsICctPicsIHNlbGYpXQotICAgICAgICAgYXV4X3B0ciA9ICd4Y2Jfb3V0JwotIAotQEAgLTEzOTAsNyArMTM5MCw3IEBAIGRlZiBfY19zZXJpYWxpemUoY29udGV4dCwgc2VsZik6Ci0gICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfYWxpZ25fdG8gPSAwOycpCi0gICAgICAgICBpZiBzZWxmLmlzX3N3aXRjaDoKLSAgICAgICAgICAgICBfYygnICAgIHVuc2lnbmVkIGludCB4Y2JfcGFkZGluZ19vZmZzZXQgPSAlZDsnLAotLQkgICAgICAgc2VsZi5nZXRfYWxpZ25fb2Zmc2V0KCkgKQotKyAgICAgICAgICAgICAgIHNlbGYuZ2V0X2FsaWduX29mZnNldCgpICkKLSAKLSAgICAgZWxpZiAnc2l6ZW9mJyA9PSBjb250ZXh0OgotICAgICAgICAgcGFyYW1fbmFtZXMgPSBbcFsyXSBmb3IgcCBpbiBwYXJhbXNdCi1AQCAtMTkzMCwxNCArMTkzMCwxNCBAQCBkZWYgX2NfYWNjZXNzb3JzX2xpc3Qoc2VsZiwgZmllbGQpOgotICAgICAgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSByZXF1ZXN0IHNpemUgYW5kIGRpdmlkZSB0aGF0IGJ5IHRoZSBtZW1iZXIgc2l6ZQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcoKChSLT5sZW5ndGggKiA0KSAtIHNpemVvZignKyBzZWxmLmNfdHlwZSArICcpKS8nKydzaXplb2YoJytmaWVsZC50eXBlLm1lbWJlci5jX3dpcmV0eXBlKycpKScKLSAgICAgICAgICAgICAgICAgZWxzZToKLS0JCSAgICAjIHVzZSB0aGUgYWNjZXNzb3IgdG8gZ2V0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCwgdGhlbgotLQkJICAgICMgY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIGl0IGJ5IHN1YnRyYWN0aW5nIGl0IGZyb20KLSsgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSBhY2Nlc3NvciB0byBnZXQgdGhlIHN0YXJ0IG9mIHRoZSBsaXN0LCB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiBpdCBieSBzdWJ0cmFjdGluZyBpdCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICAjIHRoZSBhZHJlc3Mgb2YgdGhlIGZpcnN0IGJ5dGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICMgcmVxdWVzdAotLQkJICAgIGFmdGVyX2VuZF9vZl9yZXF1ZXN0ID0gJygoKGNoYXIqKVIpICsgUi0+bGVuZ3RoICogNCknCi0tCQkgICAgc3RhcnRfb2ZfbGlzdCA9ICclcyhSKScgJSAoZmllbGQuY19hY2Nlc3Nvcl9uYW1lKQotKyAgICAgICAgICAgICAgICAgICAgYWZ0ZXJfZW5kX29mX3JlcXVlc3QgPSAnKCgoY2hhciopUikgKyBSLT5sZW5ndGggKiA0KScKLSsgICAgICAgICAgICAgICAgICAgIHN0YXJ0X29mX2xpc3QgPSAnJXMoUiknICUgKGZpZWxkLmNfYWNjZXNzb3JfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgIGJ5dGVzaXplX29mX2xpc3QgPSAnJXMgLSAoY2hhciopKCVzKScgJSAoYWZ0ZXJfZW5kX29mX3JlcXVlc3QsIHN0YXJ0X29mX2xpc3QpCi0tCQkgICAgcmV0dXJuICcoJXMpIC8gc2l6ZW9mKCVzKScgJSAoYnl0ZXNpemVfb2ZfbGlzdCwgZmllbGQudHlwZS5tZW1iZXIuY193aXJldHlwZSkKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKCVzKSAvIHNpemVvZiglcyknICUgKGJ5dGVzaXplX29mX2xpc3QsIGZpZWxkLnR5cGUubWVtYmVyLmNfd2lyZXR5cGUpCi0gICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgImxlbmd0aGxlc3MgbGlzdHMgd2l0aCB2YXJzaXplZCBtZW1iZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiBGaWVsZG5hbWUgJyVzJyIKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNiXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2JfMS4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM4YmRlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2JfMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiWENCOiBUaGUgWCBwcm90b2NvbCBDIGJpbmRpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBYIHByb3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyAoWENCKSBpcyBhIHJlcGxhY2VtZW50IFwKLWZvciBYbGliIGZlYXR1cmluZyBhIHNtYWxsIGZvb3RwcmludCwgbGF0ZW5jeSBoaWRpbmcsIGRpcmVjdCBhY2Nlc3MgdG8gXAotdGhlIHByb3RvY29sLCBpbXByb3ZlZCB0aHJlYWRpbmcgc3VwcG9ydCwgYW5kIGV4dGVuc2liaWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVhDQiIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc2M2IwODFjYjEwYzIyMzQzNWIwMWUwMGRjMGFiYTciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC9saWJ4Y2ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly94Y2JpbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjLW1pcHMtcHI2ODMwMi1taXBzLXdvcmthcm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vRml4LWluY29uc2lzdGVudC11c2Utb2YtdGFicy12cy4tc3BhY2UucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyOGU1NTJiZDc4YmMxMDUwYjZiMjZjYTFkYjBlNWJiNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWRmYjFiN2M2N2U5OWJjOWMyY2NiMTEwYjJmMTc1Njg2NTc2ZDJmNzkyYzhhNzFiOWM4YjE5MDE0MDU3YjViIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLURFUEVORFMgPSAieGNiLXByb3RvIHhwcm90byBsaWJ4YXUgbGlicHRocmVhZC1zdHVicyBsaWJ4ZG1jcCIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJebGlieGNiLS4qIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlieGNiLnNvLioiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgbGlieGF1IGFuZCBvdGhlcnMgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotCi1leHBvcnQgUFlUSE9OID0gInB5dGhvbjMiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9JywgJ15saWJ4Y2ItKC4qKVwuc29cLi4qJCcsICdsaWJ4Y2ItJXMnLCAnWENCIGxpYnJhcnkgbW9kdWxlIGZvciAlcycsIGFsbG93X2xpbmtzPVRydWUpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2JfMS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYl8xLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTAzMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2JfMS4xMy5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlhDQjogVGhlIFggcHJvdG9jb2wgQyBiaW5kaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGUgWCBwcm90b2NvbCBDLWxhbmd1YWdlIEJpbmRpbmcgKFhDQikgaXMgYSByZXBsYWNlbWVudCBcCitmb3IgWGxpYiBmZWF0dXJpbmcgYSBzbWFsbCBmb290cHJpbnQsIGxhdGVuY3kgaGlkaW5nLCBkaXJlY3QgYWNjZXNzIHRvIFwKK3RoZSBwcm90b2NvbCwgaW1wcm92ZWQgdGhyZWFkaW5nIHN1cHBvcnQsIGFuZCBleHRlbnNpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1YQ0IiCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3NjNiMDgxY2IxMGMyMjM0MzViMDFlMDBkYzBhYmE3IgorCitTUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvbGlieGNiLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8veGNiaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYy1taXBzLXByNjgzMDItbWlwcy13b3JrYXJvdW5kLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMmI2Y2Y5MjhhZmExNmIwMDQ3Yzk3NGU3YWFhNzgzZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxODhjODc1MjE5M2M1MGZmMmRiZTg5ZGI0NTU0YzYzZGYyZTI2YTJlNDdiMGZhNDE1YTcwOTE4YjViODUxZGFhIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0RFUEVORFMgPSAieGNiLXByb3RvIHhvcmdwcm90byBsaWJ4YXUgbGlicHRocmVhZC1zdHVicyBsaWJ4ZG1jcCIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICJebGlieGNiLS4qIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGlieGNiLnNvLioiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgbGlieGF1IGFuZCBvdGhlcnMgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgorCitleHBvcnQgUFlUSE9OID0gInB5dGhvbjMiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9JywgJ15saWJ4Y2ItKC4qKVwuc29cLi4qJCcsICdsaWJ4Y2ItJXMnLCAnWENCIGxpYnJhcnkgbW9kdWxlIGZvciAlcycsIGFsbG93X2xpbmtzPVRydWUpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y29tcG9zaXRlXzAuNC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNvbXBvc2l0ZV8wLjQuNC5iYgppbmRleCA3MDI1NzE5Li43M2UyOTQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y29tcG9zaXRlXzAuNC40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjb21wb3NpdGVfMC40LjQuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2YyOTA3YWFkNTQxZjZmMjI2ZmJjNThjYzFiM2NkZjEiCiAKLURFUEVORFMgKz0gIiBjb21wb3NpdGVwcm90byB2aXJ0dWFsL2xpYngxMSBsaWJ4Zml4ZXMgbGlieGV4dCIKK0RFUEVORFMgKz0gIiB4b3JncHJvdG8gdmlydHVhbC9saWJ4MTEgbGlieGZpeGVzIGxpYnhleHQiCiBQUk9WSURFUyA9ICJ4Y29tcG9zaXRlIgogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhkYW1hZ2VfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZGFtYWdlXzEuMS40LmJiCmluZGV4IGMzZDcwMDQuLjZkNmZmYWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhkYW1hZ2VfMS4xLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRhbWFnZV8xLjEuNC5iYgpAQCAtMTYsNyArMTYsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05ZmUxMDFmMzBkZDI0MTM0Y2Y0MzE0Njg2MzI0MTg2OCIKIAotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgZGFtYWdlcHJvdG8gbGlieGZpeGVzIgorREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeG9yZ3Byb3RvIGxpYnhmaXhlcyIKIFBST1ZJREVTID0gInhkYW1hZ2UiCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGRtY3BfMS4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZG1jcF8xLjEuMi5iYgppbmRleCBmNGUzMGQ5Li40NjZmMzQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZG1jcF8xLjEuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZG1jcF8xLjEuMi5iYgpAQCAtMTMsNyArMTMsNyBAQAogTElDRU5TRSA9ICJNSVQtc3R5bGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNTU5ZmIyNmUxMjk2MjYwMjJlMDUyYTVlNmUwZTEyMyIKIAotREVQRU5EUyArPSAieHByb3RvIgorREVQRU5EUyArPSAieG9yZ3Byb3RvIgogUFJPVklERVMgPSAieGRtY3AiCiAKIFBFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZXh0XzEuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGV4dF8xLjMuMy5iYgppbmRleCAwNjNlNTMxLi5hYWU4ZjJhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4ZXh0XzEuMy4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhleHRfMS4zLjMuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc5Y2UyNjY3ODU0MTRiZDFjYmMzYmMyZjRkOWQ3YzgiCiAKLURFUEVORFMgKz0gInhwcm90byB2aXJ0dWFsL2xpYngxMSB4ZXh0cHJvdG8iCitERVBFTkRTICs9ICJ4b3JncHJvdG8gdmlydHVhbC9saWJ4MTEiCiBQUk9WSURFUyA9ICJ4ZXh0IgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZpeGVzXzUuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZpeGVzXzUuMC4zLmJiCmluZGV4IGM4MDA0MmQuLmYwZTJmNjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmaXhlc181LjAuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zml4ZXNfNS4wLjMuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2MxY2U0MmMzMzRhNmY1Y2NjYjAyNzc1NTZhMDUzZTAiCiAKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhwcm90byBmaXhlc3Byb3RvIHhleHRwcm90byIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnQyXzIuMC4zLmJiCmluZGV4IDVmMjdhNTUuLjJiNzJkNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250Ml8yLjAuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Zm9udDJfMi4wLjMuYmIKQEAgLTksNyArOSw3IEBACiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgogCi1ERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCitERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgeG9yZ3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKIAogWE9SR19QTiA9ICJsaWJYZm9udDIiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhmb250XzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKaW5kZXggNzlmNzdmYy4uOTRjNmM2NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGZvbnRfMS41LjQuYmIKQEAgLTksNyArOSw3IEBACiBMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSAmIEJTRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE0NmM4MDQwZjJmNzM3YmNkMGM0MzVmZWIyYWIxYzJjIgogCi1ERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgZm9udHNwcm90byBsaWJmb250ZW5jIHpsaWIiCitERVBFTkRTICs9ICJmcmVldHlwZSB4dHJhbnMgeG9yZ3Byb3RvIGxpYmZvbnRlbmMgemxpYiIKIFBST1ZJREVTID0gInhmb250IgogCiBQRSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGlfMS43LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aV8xLjcuOS5iYgppbmRleCA3NGYwNTI3Li4wODM4MWQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aV8xLjcuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aV8xLjcuOS5iYgpAQCAtMTEsNyArMTEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTdiMDY0Nzg5ZmFiOTM2YTFjNThjNGUxM2Q5NjViMGYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL1hJR2V0RGV2Rm9jdXMuYztlbmRsaW5lPTIzO21kNT1jZGZiMGQ0MzVhMzNlYzU3ZWEwZDFlOGUzOTViNzI5ZiIKIAotREVQRU5EUyArPSAibGlieGV4dCBpbnB1dHByb3RvIGxpYnhmaXhlcyIKK0RFUEVORFMgKz0gImxpYnhleHQgeG9yZ3Byb3RvIGxpYnhmaXhlcyIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aW5lcmFtYV8xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIwM2Y0NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aW5lcmFtYV8xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhpbmVyYW1hOiBYaW5lcmFtYSBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiWGluZXJhbWEgaXMgYSBzaW1wbGUgbGlicmFyeSBkZXNpZ25lZCB0byBpbnRlcmZhY2UgdGhlIFwKLVhpbmVyYW1hIEV4dGVuc2lvbiBmb3IgcmV0cmlldmluZyBpbmZvcm1hdGlvbiBhYm91dCBwaHlzaWNhbCBvdXRwdXQgXAotZGV2aWNlcyB3aGljaCBtYXkgYmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBsb2dpY2FsIFggc2NyZWVuLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZjRmNjM0ZDE2NDNhMmU2MzhiYmEzZmNkMTljMjUzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvWGluZXJhbWEuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTI1O21kNT1mY2VmMjczYmZiNjYzMzkyNTY0MTFkZDA2ZWE3OWMwMiIKLQotREVQRU5EUyArPSAibGlieGV4dCB4aW5lcmFtYXByb3RvIgotUFJPVklERVMgPSAieGluZXJhbWEiCi1QRSA9ICIxIgotCi1YT1JHX1BOID0gImxpYlhpbmVyYW1hIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTMzNmRjNDZhZTNiZjVmODFjMjQ3ZjcxMzE0NjFlZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2E0NTY5OWYxNzczMDk1YTNmODIxZTQ5MWNiZDVlMTBjODg3YzVhNWZjZTVkOGQzZmNlZDE1YzJmZjc2OThlMiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4aW5lcmFtYV8xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGNlMzVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGluZXJhbWFfMS4xLjQuYmIKQEAgLTAsMCArMSwyMiBAQAorcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKK1NVTU1BUlkgPSAiWGluZXJhbWE6IFhpbmVyYW1hIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJYaW5lcmFtYSBpcyBhIHNpbXBsZSBsaWJyYXJ5IGRlc2lnbmVkIHRvIGludGVyZmFjZSB0aGUgXAorWGluZXJhbWEgRXh0ZW5zaW9uIGZvciByZXRyaWV2aW5nIGluZm9ybWF0aW9uIGFib3V0IHBoeXNpY2FsIG91dHB1dCBcCitkZXZpY2VzIHdoaWNoIG1heSBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvZ2ljYWwgWCBzY3JlZW4uIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZmNGY2MzRkMTY0M2EyZTYzOGJiYTNmY2QxOWMyNTM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9YaW5lcmFtYS5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjU7bWQ1PWZjZWYyNzNiZmI2NjMzOTI1NjQxMWRkMDZlYTc5YzAyIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byIKK1BST1ZJREVTID0gInhpbmVyYW1hIgorUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYaW5lcmFtYSIKKworU1JDX1VSSVttZDVzdW1dID0gIjBkNWY4MjZhMTk3ZGFlNzRkYTY3YWY0YTllZjM1ODg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMDhkYmQ3ZWNmNzE3ZTFlNTA3ZWVkMTg1NmFiMGQ5Y2Y5NDZkMDMyMDFiODVkNWRjZjYxNDg5YmIwMmQ3MjAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDUwZDBiNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAotcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotCi1ERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2QwZTRjNGExMzdkMGFjNDViZjZiMzI4Yzg0YzNhODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgyOTI2NWRiMDRlMGFlYmZiMDU5MWI2ZGMzMzc3YjY0NTk5NTU4MTY3ODQ2YzNmNWVlNWM1ZTUzNjQxZmU2ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLGxpYnhjYiB4a2V5Ym9hcmQtY29uZmlnLCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Y1MDhiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC4yLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCitwcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgorTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCisKK0RFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZjdmODUzM2Y5MDdlYmNmYjFjZjhkY2ViOTUwMTI2NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YWI4YzRiMzQwM2Q4OWQwMTg5ODA2NmI3MmNiNjA2OWJkZGViNWFmOTQ5MDVhNjUzNjhmNjcxYTAyNmVkNThjIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiZmlsZV8xLjAuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmZpbGVfMS4wLjkuYmIKaW5kZXggMzlhMzQ0Yy4uZjVjMTg2MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiZmlsZV8xLjAuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2JmaWxlXzEuMC45LmJiCkBAIC04LDcgKzgsNyBAQAogTElDRU5TRSA9ICJNSVQtc3R5bGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YmU3MzY3ZjdlNWQ2MDVhNDI2Zjc2YmIzN2Q0ZDYxZiIKIAotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEga2Jwcm90byIKK0RFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJhbmRyXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJhbmRyXzEuNS4xLmJiCmluZGV4IDQ4ZTg4ZDIuLmI5MGViYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyYW5kcl8xLjUuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmFuZHJfMS41LjEuYmIKQEAgLTExLDcgKzExLDcgQEAKIExJQ0VOU0UgPSAiTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzlkMWEyMTE4YTZjZDU3Mjc1MjFkYjhlN2EyZmVlNjkiCiAKLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHJhbmRycHJvdG8gbGlieHJlbmRlciBsaWJ4ZXh0IgorREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeG9yZ3Byb3RvIGxpYnhyZW5kZXIgbGlieGV4dCIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlbmRlcl8wLjkuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVuZGVyXzAuOS4xMC5iYgppbmRleCA5MmIzMTAyLi45YjE4MzY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVuZGVyXzAuOS4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVuZGVyXzAuOS4xMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogTElDRU5TRSA9ICJNSVQtc3R5bGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kOGJjNzE5ODZkM2I5YjM2MzlmNmRmZDZmYWM4ZjE5NiIKIAotREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgcmVuZGVycHJvdG8geHByb3RvIgorREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgeG9yZ3Byb3RvIgogCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHJlc18xLjIuMC5iYgppbmRleCA4YzM0ZTQ3Li5hZjZiYjE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cmVzXzEuMi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhyZXNfMS4yLjAuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGM4OTQ0MWE4ZGYyNjFiZGM1NjU4NzQ2NWUxM2M3ZmEiCiAKLURFUEVORFMgKz0gImxpYnhleHQgcmVzb3VyY2Vwcm90byIKK0RFUEVORFMgKz0gImxpYnhleHQgeG9yZ3Byb3RvIgogCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2NybnNhdmVyXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNjcm5zYXZlcl8xLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU0ZTVkZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2NybnNhdmVyXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWHNjcm5zYXZlcjogWCBTY3JlZW4gU2F2ZXIgZXh0ZW5zaW9uIGxpYnJhcnkiCi0KLURFU0NSSVBUSU9OID0gIlRoZSBYIFdpbmRvdyBTeXN0ZW0gcHJvdmlkZXMgc3VwcG9ydCBmb3IgY2hhbmdpbmcgdGhlIFwKLWltYWdlIG9uIGEgZGlzcGxheSBzY3JlZW4gYWZ0ZXIgYSB1c2VyLXNldHRhYmxlIHBlcmlvZCBvZiBpbmFjdGl2aXR5IHRvIFwKLWF2b2lkIGJ1cm5pbmcgdGhlIGNhdGhvZGUgcmF5IHR1YmUgcGhvc3Bob3JzLiBIb3dldmVyLCBubyBpbnRlcmZhY2VzIGFyZSBcCi1wcm92aWRlZCBmb3IgdGhlIHVzZXIgdG8gY29udHJvbCB0aGUgaW1hZ2UgdGhhdCBpcyBkcmF3bi4gVGhpcyBleHRlbnNpb24gXAotYWxsb3dzIGFuIGV4dGVybmFsIFwic2NyZWVuIHNhdmVyXCIgY2xpZW50IHRvIGRldGVjdCB3aGVuIHRoZSBhbHRlcm5hdGUgXAotaW1hZ2UgaXMgdG8gYmUgZGlzcGxheWVkIGFuZCB0byBwcm92aWRlIHRoZSBncmFwaGljcy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjFmZDE1NGVlNzU3ODEzNjMyYWRhODcxYTM0MTEzZmIiCi0KLURFUEVORFMgKz0gImxpYnhleHQgc2NybnNhdmVycHJvdG8iCi1QUk9WSURFUyA9ICJsaWJ4c3MiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGlieHNzIgotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYU2NyblNhdmVyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2E3NzNiMTYxNjVlMzllOTM4NjUwYmNjOTAyN2MxZDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZmMWVmYTczNDFjN2YzNGJjZjliMTdjODk2NDhkNjMyNWRkYWFlMjJlMzkwNGUwOTE3OTRlMGI0NDI2Y2UxZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzY3Juc2F2ZXJfMS4yLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2NybnNhdmVyXzEuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZDUyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2NybnNhdmVyXzEuMi4zLmJiCkBAIC0wLDAgKzEsMjMgQEAKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitTVU1NQVJZID0gIlhzY3Juc2F2ZXI6IFggU2NyZWVuIFNhdmVyIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJUaGUgWCBXaW5kb3cgU3lzdGVtIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNoYW5naW5nIHRoZSBcCitpbWFnZSBvbiBhIGRpc3BsYXkgc2NyZWVuIGFmdGVyIGEgdXNlci1zZXR0YWJsZSBwZXJpb2Qgb2YgaW5hY3Rpdml0eSB0byBcCithdm9pZCBidXJuaW5nIHRoZSBjYXRob2RlIHJheSB0dWJlIHBob3NwaG9ycy4gSG93ZXZlciwgbm8gaW50ZXJmYWNlcyBhcmUgXAorcHJvdmlkZWQgZm9yIHRoZSB1c2VyIHRvIGNvbnRyb2wgdGhlIGltYWdlIHRoYXQgaXMgZHJhd24uIFRoaXMgZXh0ZW5zaW9uIFwKK2FsbG93cyBhbiBleHRlcm5hbCBcInNjcmVlbiBzYXZlclwiIGNsaWVudCB0byBkZXRlY3Qgd2hlbiB0aGUgYWx0ZXJuYXRlIFwKK2ltYWdlIGlzIHRvIGJlIGRpc3BsYXllZCBhbmQgdG8gcHJvdmlkZSB0aGUgZ3JhcGhpY3MuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIxZmQxNTRlZTc1NzgxMzYzMmFkYTg3MWEzNDExM2ZiIgorCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byIKK1BST1ZJREVTID0gImxpYnhzcyIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJ4c3MiCitQRSA9ICIxIgorCitYT1JHX1BOID0gImxpYlhTY3JuU2F2ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWVhOWQ1YWYzZTZjMTQzZDBlYTE3MjFkMjdhNWU0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOTE3MDc1YTFiN2I1YTM4ZDY3YThiMDIzOGVhYWIxNGFjZDI1NTc2Nzk4MzViMTU0Y2YyYmNhNTc2ZTg5YmY4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlL2V4dGVuc2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNjOWUwNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2UvZXh0ZW5zaW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVdpdGggZ2xpYmMgMi4yNyBtZW1mZF9jcmVhdGUgaXMgYmVoaW5kIGEgX0dOVV9TT1VSQ0UgZ3VhcmQsIHNvIGNhbGwKLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUyB0byBnZXQgdGhhdCBkZWZpbmVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGM5ODg3NS4uZWJmNGRlZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjksNCArMjksNiBAQCBBQ19DT05GSUdfU1JDRElSKFtNYWtlZmlsZS5hbV0pCi0gQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKLSAKLStBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLSsKLSAjIEluaXRpYWxpemUgQXV0b21ha2UKLSBBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduIGRpc3QtYnppcDJdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkZjA2OGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiU2hhcmVkIG1lbW9yeSAnU3luY0ZlbmNlJyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgb2ZmZXJzIGEgQ1BVLWJhc2VkIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgY29tcGF0aWJsZSBcCi13aXRoIHRoZSBYIFN5bmNGZW5jZSBvYmplY3RzIHRoYXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3NlcyBcCi11c2luZyBmaWxlIGRlc2NyaXB0b3IgcGFzc2luZy4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ3ZTUwOGNhMjgwZmRlOTc5MDZlYWNiNzc4OTJjM2FjIgotCi1ERVBFTkRTICs9ICJ2aXJ0dWFsL2xpYngxMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZXh0ZW5zaW9ucy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY2NjYyZTc2ODk5MTEyYzBmOTllMjJmMmZjNzc1YTdlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyMWIyZDFmZDc4YzFlZmJlMWYyYzE2ZGFlMWNiMjNmOGZkMjMxZGNmODkxNDY1YjhkZWJlNjM2YTkwNTRiMGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWE0OGU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlNoYXJlZCBtZW1vcnkgJ1N5bmNGZW5jZScgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IG9mZmVycyBhIENQVS1iYXNlZCBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIGNvbXBhdGlibGUgXAord2l0aCB0aGUgWCBTeW5jRmVuY2Ugb2JqZWN0cyB0aGF0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBwcm9jZXNzZXMgXAordXNpbmcgZmlsZSBkZXNjcmlwdG9yIHBhc3NpbmcuIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00N2U1MDhjYTI4MGZkZTk3OTA2ZWFjYjc3ODkyYzNhYyIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSVttZDVzdW1dID0gIjQyZGRhODAxNjk0M2RjMTJhZmYyYzAzYTAzNmUwOTM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4ODQzMDBkMjZhMTQ5NjFhMDc2ZmJlYmM3NjJhMzk4MzFjYjc1ZjkyYmVkNWNjZjk4MzYzNDViNDU5MjIwYzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCmluZGV4IDE4MGQwMGQuLmY4ZDk0YTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCkBAIC0xNiw3ICsxNiw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NTY1YjFlMDA5NGVhMWNhYWUwOTcxY2M0MDM1ZjM0MyIKIAogCi1ERVBFTkRTICs9ICJ1dGlsLWxpbnV4IGxpYnhjYiBsaWJzbSB2aXJ0dWFsL2xpYngxMSBrYnByb3RvIGxpYnhkbWNwIgorREVQRU5EUyArPSAidXRpbC1saW51eCBsaWJ4Y2IgbGlic20gdmlydHVhbC9saWJ4MTEgeG9yZ3Byb3RvIGxpYnhkbWNwIgogUFJPVklERVMgPSAieHQiCiAKIFBFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dHN0XzEuMi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRzdF8xLjIuMy5iYgppbmRleCA1NzE3ZmE1Li4yNjZiZDFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dHN0XzEuMi4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0c3RfMS4yLjMuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiNGY4OTk3MmMzODY5ZjYxN2Y2MWMxYTc5YWQxOTUyIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9YVGVzdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MzI7bWQ1PWIxYzhjOWRmZjg0MmI0ZDViODljYTVmYTMyYzQwZTk5IgogCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHJlY29yZHByb3RvIGlucHV0cHJvdG8gbGlieGkiCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byBsaWJ4aSIKIFBST1ZJREVTID0gInh0c3QiCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dl8xLjAuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dl8xLjAuMTEuYmIKaW5kZXggYTIyNmMyNy4uYzYwMjcyMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZfMS4wLjExLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2XzEuMC4xMS5iYgpAQCAtMTAsNyArMTAsNyBAQAogTElDRU5TRSA9ICJNSVQtc3R5bGUiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MjdkYTlhZmFiMWY3MjdmMmE2NjU3NDYyOWUwZjM5YyIKIAotREVQRU5EUyArPSAibGlieGV4dCB2aWRlb3Byb3RvIgorREVQRU5EUyArPSAibGlieGV4dCB4b3JncHJvdG8iCiAKIFhPUkdfUE4gPSAibGliWHYiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh2bWNfMS4wLjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZtY18xLjAuMTAuYmIKaW5kZXggNmVkNDliMS4uN2U0OWE5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZtY18xLjAuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHZtY18xLjAuMTAuYmIKQEAgLTksNyArOSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYTIwN2YwOGQ0OTYxNDg5YzU1MDQ2YzlhNWU1MDBkYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93cmFwcGVyL1h2TUNXcmFwcGVyLmM7ZW5kbGluZT0yNjttZDU9NTE1MWRhYTgxNzJhM2YxYmIwY2IwZTBmZjE1N2Q5ZGUiCiAKLURFUEVORFMgKz0gImxpYnhleHQgbGlieHYgdmlkZW9wcm90byIKK0RFUEVORFMgKz0gImxpYnhleHQgbGlieHYgeG9yZ3Byb3RvIgogCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NmRnYV8xLjEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2ZGdhXzEuMS40LmJiCmluZGV4IDY5NWEzOTYuLjYyNjE5OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2ZGdhXzEuMS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2ZGdhXzEuMS40LmJiCkBAIC05LDcgKzksNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYmI5OWFjMTI1Zjg0ZjQyNGE0Mjc4MTUzOTg4ZTMyZiIKIAotREVQRU5EUyArPSAibGlieGV4dCB4Zjg2ZGdhcHJvdG8iCitERVBFTkRTICs9ICJsaWJ4ZXh0IgogCiBQRSA9ICIxIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4Nm1pc2NfMS4wLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4Nm1pc2NfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNmYxZjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZtaXNjXzEuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJYRnJlZTg2LU1pc2M6IFhGcmVlODYgbWlzY2VsbGFuZW91cyBleHRlbnNpb24gbGlicmFyeSIKLQotREVTQ1JJUFRJT04gPSAiVGhlIFhGcmVlODYtTWlzYyBleHRlbnNpb24sIHByb3ZpZGVzIGEgbWVhbnMgdG8gYWNjZXNzIFwKLWlucHV0IGRldmljZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIHNwZWNpZmljIHRvIHRoZSBYRnJlZTg2L1hvcmcgRERYLiIKLQotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjdjOTFlY2M0MzViZDNkMmJmYWQ4Njg5MTRjOTRiNDUiCi0KLURFUEVORFMgKz0gImxpYnhleHQgeGY4Nm1pc2Nwcm90byIKLVBST1ZJREVTID0gInh4Zjg2bWlzYyIKLQotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYeGY4Nm1pc2MiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YmMwYmY3ODkwOWZkNzEwMjFjNDY2Yzc5M2Q0Mzg1YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NjNmNDIwMDg2MmVmZDMzMzRjMzNhNjY5ZTBhMGFhZTViYWIzMWYzOTk4ZGI3NWI4N2E5OWE2OTdjYzI2YjViIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4Nm1pc2NfMS4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4Nm1pc2NfMS4wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDViMDY3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2bWlzY18xLjAuNC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIlhGcmVlODYtTWlzYzogWEZyZWU4NiBtaXNjZWxsYW5lb3VzIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJUaGUgWEZyZWU4Ni1NaXNjIGV4dGVuc2lvbiwgcHJvdmlkZXMgYSBtZWFucyB0byBhY2Nlc3MgXAoraW5wdXQgZGV2aWNlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3Mgc3BlY2lmaWMgdG8gdGhlIFhGcmVlODYvWG9yZyBERFguIgorCityZXF1aXJlIHhvcmctbGliLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yN2M5MWVjYzQzNWJkM2QyYmZhZDg2ODkxNGM5NGI0NSIKKworREVQRU5EUyArPSAibGlieGV4dCIKK1BST1ZJREVTID0gInh4Zjg2bWlzYyIKKworUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYeGY4Nm1pc2MiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzN2FkNzBmOGI1M2I5NGI1NTBmOTI5MGJlOTdmYmUyZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhODljMDNlMmIwZjE2MjM5ZDY3YTIwMzFiOTAwM2YzMWI1YTY4NjEwNmJiZGIzYzc5N2ZiODhhZTQ3MmFmMzgwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZ2bV8xLjEuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh4Zjg2dm1fMS4xLjQuYmIKaW5kZXggMzVmODdkMi4uOTVmYzBiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHhmODZ2bV8xLjEuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4eGY4NnZtXzEuMS40LmJiCkBAIC0xMCw3ICsxMCw3IEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZhMGI5YzQ2MmQ4ZjJmMTNlYmEyNjQ5MmQ0MmVhNjNkIgogCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IHhmODZ2aWRtb2RlcHJvdG8iCitERVBFTkRTICs9ICJsaWJ4ZXh0IHhvcmdwcm90byIKIAogUEUgPSAiMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmQ4OTRmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImViNjFmYjNmZDQxOWU4MTdkZjU3MmIwYzhkOTRhODgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlYWVjOTk4OWZiYzQ0MzM1OGI0Mzg2NDQzN2I3YjZkMzljYWZmMDc4OTBhNGE4MDU1MTA1Y2U5ZmNhYTU5YmQiCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDBlNjA4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI0LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gIjc0YzRiZGY1MjM4MjEyN2NiNTgwMmMzZjJhYjQ0MWUwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkxYjE4NTgwZjQ2YjRlNGVhOTEzNzA3ZjZjOGQ2OGFiNTI4Njg3OWMzYTY1OTE0NjJmM2I5ZTc2MGQzYWM0ZDciCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKKyAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFucy9tdWx0aWxpYmZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFucy9tdWx0aWxpYmZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTEzYmFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveHRyYW5zL211bHRpbGliZml4LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoZSB4dHJhbnMucGMgZmlsZSBpcyBpbnN0YWxsZWQgaW50byBhIG5vbi1hcmNoIGRpcmVjdG9yeSB5ZXQgY29udGFpbnMgbGliZGlyCit3aGljaCBjYW4gdmFyeSBkZXBlbmRpbmcgb24gd2hpY2ggbXVsdGlsaWIgaXMgY29uZmlndXJlZC4gVGhlIC5wYyBmaWxlIGRvZXMKK25vdCByZXF1aXJlIGxpYmRpciBzbyByZW1vdmUgdGhpcyB0byBmaXggbXVsdGlsaWIgYnVpbGRzLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitJbmRleDogeHRyYW5zLTEuMy41L3h0cmFucy5wYy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHh0cmFucy0xLjMuNS5vcmlnL3h0cmFucy5wYy5pbgorKysrIHh0cmFucy0xLjMuNS94dHJhbnMucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorIE5hbWU6IFhUcmFucwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveHRyYW5zXzEuMy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveHRyYW5zXzEuMy41LmJiCmluZGV4IGQ1YjdmMWEuLjIwMDcxNmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3h0cmFuc18xLjMuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94dHJhbnNfMS4zLjUuYmIKQEAgLTEyLDYgKzEyLDggQEAKIExJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDkzNDc5MjFkNGQ1MjY4MDIxYTk5OWYyNTBlZGM5Y2EiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly9tdWx0aWxpYmZpeC5wYXRjaCIKKwogUEUgPSAiMSIKIAogUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vYmlncmVxc3Byb3RvXzEuMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9iaWdyZXFzcHJvdG9fMS4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3OThhNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9iaWdyZXFzcHJvdG9fMS4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1QRSA9ICIxIgotCi1TVU1NQVJZID0gIkJpZ1JlcXM6IFggQmlnIFJlcXVlc3RzIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBcCi1CSUctUkVRVUVTVFMgZXh0ZW5zaW9uLCB1c2VkIHRvIHNlbmQgbGFyZ2VyIHJlcXVlc3RzIHRoYXQgdXN1YWwgaW4gb3JkZXIgXAotdG8gYXZvaWQgZnJhZ21lbnRhdGlvbi4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjEyNzE1NjMwZGE2ZjI2OGQwZDM3MTJlZTFhNTA0ZjQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYTA1ZmIwMWZhMWQ1MTk4ODk0YzkzMWNmOTI1YzAyNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjIxMTZhYjQ0ZTQxZDgxMjFiZmRlOTQ3MzIxOTUwMzcwYjI4NWE1MzE2NjEyYjhmY2U4MzM0ZDUwNzUxYjFlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90by9maXgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvL2ZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY4Y2IyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvL2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1BZGQgbWlzc2luZyBsZW5ndGggZmllbGRzIHRvIHRoZSByZXBsaWVzLiBXaXRob3V0IHRoZXNlLCBzYW5pdHkgY2hlY2tpbmcgaW4gcmVjZW50IFgKLWJyZWFrcyB0aGluZ3MuCi0KLVJQIDExLzIvMTAKLQotCi1JbmRleDogZ2l0L3hjYWxpYnJhdGVwcm90by5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcveGNhbGlicmF0ZXByb3RvLmgJMjAxMC0wMi0xMSAxMTo0Nzo0NS43MTE5ODU5MzIgKzAwMDAKLSsrKyBnaXQveGNhbGlicmF0ZXByb3RvLmgJMjAxMC0wMi0xMSAxMTo0MDoyMS4wMDAwMDAwMDAgKzAwMDAKLUBAIC02NywxMyArNjcsMTMgQEAKLSAgICAgQllURSAgICB0eXBlOyAgIC8qIFhfUmVwbHkgKi8KLSAgICAgQllURSAgICBwYWQxOwotICAgICBDQVJEMTYgIHNlcXVlbmNlTnVtYmVyIEIxNjsKLSsgICAgQ0FSRDMyICBsZW5ndGg7Ci0gICAgIENBUkQzMiAgc3RhdHVzOwotICAgICBDQVJEMzIgIHBhZDIgQjMyOwotICAgICBDQVJEMzIgIHBhZDMgQjMyOwotICAgICBDQVJEMzIgIHBhZDQgQjMyOwotICAgICBDQVJEMzIgIHBhZDUgQjMyOwotICAgICBDQVJEMzIgIHBhZDYgQjMyOwotLSAgICBDQVJEMzIgIHBhZDcgQjMyOwotIH0geFhDYWxpYnJhdGVSYXdNb2RlUmVwbHk7Ci0gCi0gI2RlZmluZSBzel94WENhbGlicmF0ZVJhd01vZGVSZXBseQkzMgotQEAgLTkyLDEzICs5MiwxMyBAQAotICAgICBCWVRFICAgIHR5cGU7ICAgLyogWF9SZXBseSAqLwotICAgICBCWVRFICAgIHBhZDE7Ci0gICAgIENBUkQxNiAgc2VxdWVuY2VOdW1iZXIgQjE2OwotKyAgICBDQVJEMzIgIGxlbmd0aDsKLSAgICAgQ0FSRDMyICB4OwotICAgICBDQVJEMzIgIHk7Ci0gICAgIENBUkQzMiAgcGFkMiBCMzI7Ci0gICAgIENBUkQzMiAgcGFkMyBCMzI7Ci0gICAgIENBUkQzMiAgcGFkNCBCMzI7Ci0gICAgIENBUkQzMiAgcGFkNSBCMzI7Ci0tICAgIENBUkQzMiAgcGFkNiBCMzI7Ci0gfSB4WENhbGlicmF0ZVNjcmVlblRvQ29vcmRSZXBseTsKLSAKLSAjZGVmaW5lIHN6X3hYQ2FsaWJyYXRlU2NyZWVuVG9Db29yZFJlcGx5CTMyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjRiNDIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYQ2FsaWJyYXRlOiBUb3VjaHNjcmVlbiBjYWxpYnJhdGlvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBcCi1Ub3VjaHNjcmVlbiBjYWxpYnJhdGlvbiBleHRlbnNpb24uIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hjYWxpYnJhdGV3aXJlLmg7ZW5kbGluZT0yMzttZDU9N2Y4NmVmN2IwM2NjZTZjNGM5ZWJkNTlkMjBjYTQ4NWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8veGNhbGlicmF0ZXByb3RvLmg7ZW5kbGluZT0yMzttZDU9ZTQ0OTA0OTFlZGNjMTcxY2EyNGY5ODU2OWVlNTgwZGIiCi0KLVNSQ1JFViA9ICIxZGE2ZmQxZTJjN2E0OTY0ODI0NWM5ODQ4MWZhYmVhOGI5NjkwYThjIgotCi1QViA9ICIwLjArZ2l0JHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9wcm90by9jYWxpYnJhdGVwcm90byBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgucGF0Y2g7YXBwbHk9eWVzIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLVVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jb21wb3NpdGVwcm90b18wLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY29tcG9zaXRlcHJvdG9fMC40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZmVlMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jb21wb3NpdGVwcm90b18wLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWGNvbXBvc2l0ZTogWCBjb21wb3NpdGUgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggXAotY29tcG9zaXRlIGV4dGVuc2lvbi4gIFRoZSBYIGNvbXBvc2l0ZSBleHRlbnNpb24gcHJvdmlkZXMgdGhyZWUgcmVsYXRlZCBcCi1tZWNoYW5pc21zIGZvciBjb21wb3NpdGluZyBhbmQgb2ZmLXNjcmVlbiBzdG9yYWdlLiIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yYzRiZmUxMzZmNGE0NDE4ZWEyZjJhOTZiN2M4ZjNjNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21wb3NpdGUuaDtlbmRsaW5lPTQzO21kNT1jYmQ0NGQ0MDc5MDUzYWE3NTkzMGVkMmYwMmI5MjkyNiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJjb21wb3NpdGVleHQiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUFIgPSAicjEiCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTg0ODJmNjViYTFlNzRhMDhiZjViMDU2YTQwMzFlZjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDQ5MzU5ZjBiZTBiMmI5ODRhODE0OWM5NjZkZDA0ZThjNThlNmVhZGUyYTRhMzA5Y2YxMTI2NjM1Y2NkMGNmYyIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kYW1hZ2Vwcm90b18xLjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZGFtYWdlcHJvdG9fMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ZDAyNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kYW1hZ2Vwcm90b18xLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWGRhbWFnZTogWCBEYW1hZ2UgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIERBTUFHRSBcCi1leHRlbnNpb24uICBUaGUgREFNQUdFIGV4dGVuc2lvbiBhbGxvd3MgYXBwbGljYXRpb25zIHRvIHJlY2VpdmUgXAotaW5mb3JtYXRpb24gYWJvdXQgY2hhbmdlcyBtYWRlIHRvIHBpeGVsIGNvbnRlbnRzIG9mIHdpbmRvd3MgYW5kIFwKLXBpeG1hcHMuIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ1ZjVhMmRlNjVjM2E4NGNiZGU3NjlmMDdhNzY5NjA4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RhbWFnZXdpcmUuaDtlbmRsaW5lPTIzO21kNT00YTQ1MDFhNTkyZGJjN2RlNWNlODkyNTVlNTBkMDI5NiIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJkYW1hZ2VleHQiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk5OGU1OTA0NzY0YjgyNjQyY2M2M2Q5N2I0YmE5ZTk1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjN2MxMTJlOWI5ZWE4YTlkNWIwMTllNWYxN2Q0ODFhZTIwZjc2NmNiN2E0NjQ4MzYwZTdjMWI0NmZjOWZjNWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RteHByb3RvXzIuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kbXhwcm90b18yLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2MGU1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RteHByb3RvXzIuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJETVg6IERpc3RyaWJ1dGVkIE11bHRpaGVhZCBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgRE1YIFwKLWV4dGVuc2lvbi4gIFRoZSBETVggZXh0ZW5zaW9uIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGNvbW11bmljYXRpb24gd2l0aCBcCi1hbmQgY29udHJvbCBvZiBYZG14IHNlcnZlci4gIEF0dHJpYnV0ZXMgb2YgdGhlIFhkbXggc2VydmVyIGFuZCBvZiB0aGUgXAotYmFjay1lbmQgc2NyZWVucyBhdHRhY2hlZCB0byB0aGUgc2VydmVyIGNhbiBiZSBxdWVyaWVkIGFuZCBtb2RpZmllZCB2aWEgXAotdGhpcyBwcm90b2NvbC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTNjMzQ5OTIzMWE4MDM1ZWZkMGUwMDRjZmJkM2I3MmEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG14cHJvdG8uaDtlbmRsaW5lPTMyO21kNT1hYjg1MDk5NTVjM2RkNGM2NWZhYzcyOGUxYjM2N2JjNCIKLQotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlZTE3NWJiZDQ0ZDA1YzM0ZDQzYmIxMjliZTUwOThhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3MjA1MWU2YTNlMDZiMjM2ZDE5ZWVkNTYzNjgxMTdiNzQ1Y2ExZTFhMjdiZGM1MGZkNTFhYTM3NWJlYTY1MDkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RyaTJwcm90b18yLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2RyaTJwcm90b18yLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YzQwYzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkycHJvdG9fMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJEUkkyOiBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIDIgaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgRGlyZWN0IFwKLVJlbmRlcmluZyBJZm5yYXN0cnVjdHVyZSAyLiAgRElSIGlzIHJlcXVpcmVkIGZvciBtYXkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlMzk2ZmE5MTgzNGY4Nzg2MDMyY2FkMmRhNTYzOGYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RyaTJwcm90by5oO2VuZGxpbmU9MzE7bWQ1PTIyZjI4YmY2OGQwMWI1MzNmMjYxOTVlOTRiM2VkOGNhIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMjcyMWQ1ZDI0YzA0ZDk5ODBhMGM2NTQwY2I1Mzk2YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmOWI1NTQ3NmRlZjQ0ZmM3YzQ1OWIyNTM3ZDE3ZGJjNzMxZTM2ZWQ1ZDQxNmFmN2NhMGIxZTJlNjc2ZjhhYTA0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkzcHJvdG9fMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9kcmkzcHJvdG9fMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWQ5N2IzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZHJpM3Byb3RvXzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAzIEV4dGVuc2lvbiIKLQotREVTQ1JJUFRJT04gPSAiVGhlIERSSTMgZXh0ZW5zaW9uIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gdHJhbnNsYXRlIGJldHdlZW4gZGlyZWN0IFwKLXJlbmRlcmVkIGJ1ZmZlcnMgYW5kIFggcGl4bWFwcy4gV2hlbiBjb21iaW5lZCB3aXRoIHRoZSBQcmVzZW50IGV4dGVuc2lvbiwgXAotYSBjb21wbGV0ZSBkaXJlY3QgcmVuZGVyaW5nIHNvbHV0aW9uIGZvciBPcGVuR0wgaXMgcHJvdmlkZWQuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RyaTNwcm90by5oO2VuZGxpbmU9MjE7bWQ1PWFjOTBkMWQ0MTZiZTNjYjEzZTFkM2M4OGNkNTE2NmJmIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhM2QyY2JlNjBhOWNhMWJmM2FlYTZjOTNjODE3ZmVlMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWJlNDlkNzAyMDA1MThiOWE2YjI5NzEzMWY2Y2M3MWY0ZWEyZGUxNzQzNjg5NmFmMTUzMjI2YTc3NGZjMDc0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9maXhlc3Byb3RvXzUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZml4ZXNwcm90b181LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZmI4OGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9maXhlc3Byb3RvXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEZpeGVzOiBYIEZpeGVzIGV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIEZpeGVzIFwKLWV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIGlzIGRlc2lnbmVkIHRvIHByb3ZpZGUgc2VydmVyLXNpZGUgc3VwcG9ydCBcCi1mb3IgYXBwbGljYXRpb24gd29yayBhcm91bmRzIHRvIHNob3J0Y29taW5ncyBpbiB0aGUgY29yZSBYIHdpbmRvdyBcCi1zeXN0ZW0uIgotCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjYyYTdhODdkYTU2ZTY2ZGQ2MzliZjczMzRhMTEwYzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8veGZpeGVzcHJvdG8uaDtlbmRsaW5lPTQzO21kNT1jM2E5ZWU2ZGIzNTMyZWQwZDQ0ZGVhMjY2Y2ZjOTdmNCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJmaXhlc2V4dCIKLVBSID0gInIxIgotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc0MzFhYjg0ZDM3YjI2NzhhZjcxZTI5MzU1ZTEwMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmEyZjNmMzEyNDZiZGQzZjJhMGFjZjhiZDNiMDliYTk5Y2FiOTY1YzdmYjJjMmM5MmI3ZGM3Mjg3MGU0MjRjZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZm9udHNwcm90b18yLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZm9udHNwcm90b18yLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdmYzI4MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ZvbnRzcHJvdG9fMi4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhGb250OiBYIEZvbnQgcmFzdGVyaXNhdGlvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHRoZSBYIEZvbnQgXAotcmFzdGVyaXNhdGlvbiBleHRlbnNpb25zLiAgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgdXNlZCB0byBjb250cm9sIFwKLXNlcnZlci1zaWRlIGZvbnQgY29uZmlndXJhdGlvbnMuIgotCi1MSUNFTlNFID0gIk1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWMzZTQ4YWE5Y2U4NjhjOGU5MGYwNDAxZGI0MWMxMWEyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0ZTcHJvdG8uaDtlbmRsaW5lPTQ0O21kNT1kMmU1OGUyNzA5NWU1ZWE3ZDRhZDQ1NmNjYjkxOTg2YyIKLQotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNjkzNGQwMGIwMDU1NWVhYWNkZTlmMDkxZjM5MmY5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNTkwNDZiMGRkOTEzMDgyNWM0YTRjNDc5YmEzNTkxZDZkMGYxN2EzM2Y1NGUyOTRiNTY0Nzg3MjlhNmU1YWI4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9nbHByb3RvXzEuNC4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vZ2xwcm90b18xLjQuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMDNkMzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9nbHByb3RvXzEuNC4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiT3BlbkdMOiBYIE9wZW5HTCBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgXAotT3BlbkdMLXJlbGF0ZWQgZXh0ZW5zaW9ucywgdXNlZCB0byBlbmFibGUgdGhlIHJlbmRlcmluZyBvZiBhcHBsaWNhdGlvbnMgXAotdXNpbmcgT3BlbkdMLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNDRlZDAxNDY5OTc4NTYzMDRkZmJiNTEyYTU5YThkZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbHhwcm90by5oO2JlZ2lubGluZT00O2VuZGxpbmU9MzI7bWQ1PTZiNzljNTcwZjY0NDM2M2IzNTY0NTZlN2Q0NDQ3MWQ5IgotCi1QRSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU1NjVmMWIwZmFjZjRhNTljMjc3ODIyOWMxZjcwZDEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFkYWE5NGJkZWQzMTBhMmJmY2JiOWRlYjRkNzUxZDk2NWZjZmU2ZmIzYTJmNmQyNDJlMmRmMmQ2NTg5ZGJlNDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2lucHV0cHJvdG9fMi4zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2lucHV0cHJvdG9fMi4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNWU2NmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9pbnB1dHByb3RvXzIuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYSTogWCBJbnB1dCBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBJbnB1dCBcCi1leHRlbnNpb24uICBUaGUgZXh0ZW5zaW9uIHN1cHBvcnRzIGlucHV0IGRldmljZXMgb3RoZXIgdGhlbiB0aGUgY29yZSBYIFwKLWtleWJvYXJkIGFuZCBwb2ludGVyLiIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNTYyY2MwZjY1ODdiOTYxZjAzMjIxMWQ4MTYwZjMxZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9YSTJwcm90by5oO2VuZGxpbmU9NDg7bWQ1PTFhYzE1ODFlNjExODhkYTI4ODVjYzE0ZmY0OWIyMGJlIgotCi1QRSA9ICIxIgotCi1pbmhlcml0IGdldHRleHQKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjI5MGE0NjNhZjdkZWY0ODNlNmUxOTBkZTQ2MGYzMWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODkzYTZhZjU1NzMzMjYyMDU4YTI3YjM4ZWViMWVkYzczMzY2OWYwMWQ0MDRlODU4MWIxNjdmMDNjMDNlZjMxZCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtYXNjaWlkb2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ticHJvdG9fMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2ticHJvdG9fMS4wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2ZjVjOTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9rYnByb3RvXzEuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYS0I6IFggS2V5Ym9hcmQgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggXAotS2V5Ym9hcmQgZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gaXMgdXNlZCB0byBjb250cm9sIG9wdGlvbnMgcmVsYXRlZCBcCi10byBrZXlib2FyZCBoYW5kbGluZyBhbmQgbGF5b3V0LiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZGQ2ZWE5OWUyYTgzYTU1MmMwMmM4MDk2MzYyM2MzOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9YS0Jwcm90by5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjU7bWQ1PTU3NDRlZWZmNDA3YWViNmU3YTEzNDZlZWJhYjQ4NmEyIgotCi1QRSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGFmYzkwYzFmN2JlZjRhMjdmZGQ1OWVjZTM5Yzg3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmODgyMjEwYjc2Mzc2ZTNmYTAwNmIxMWRiZDg5MGU1NmVjMDk0MmJjNTZlNjVkMTI0OWZmNGFmODZmOTBiODU3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9wcmVzZW50cHJvdG9fZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9wcmVzZW50cHJvdG9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmQzMmY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcHJlc2VudHByb3RvX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBiYXNpYyBoZWFkZXJzIGZvciB0aGUgWCBXaW5kb3cgU3lzdGVtIgotREVTQ1JJUFRJT04gPSAiVGhlIFByZXNlbnQgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdXBkYXRlIHRoZWlyIFwKLSAgICAgICAgICAgICAgIHdpbmRvdyBjb250ZW50cyBmcm9tIGEgcGl4bWFwIGluIGEgd2VsbCBkZWZpbmVkIGZhc2hpb24sIHN5bmNocm9uaXppbmcgXAotICAgICAgICAgICAgICAgd2l0aCB0aGUgZGlzcGxheSByZWZyZXNoIGFuZCBwb3RlbnRpYWxseSB1c2luZyBhIG1vcmUgZWZmaWNpZW50IFwKLSAgICAgICAgICAgICAgIG1lY2hhbmlzbSB0aGFuIGNvcHlpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBzb3VyY2UgcGl4bWFwLlwKLSAgICAgICAgICAgICAgIgotCi1MSUNFTlNFID0gIkdQTHYyIgotCi1TUkNSRVYgPSAiYmZkYzdlMDUyMzAyYzc5YzU4MDNhZDk1YTczYzliNjNiMzUwYzQwYyIKLVBWID0gIjEuMStnaXQke1NSQ1BWfSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDdlNTA4Y2EyODBmZGU5NzkwNmVhY2I3Nzg5MmMzYWMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZ2l0L3hvcmcvcHJvdG8vcHJlc2VudHByb3RvIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JhbmRycHJvdG9fMS41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JhbmRycHJvdG9fMS41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OWU1MjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yYW5kcnByb3RvXzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYUmFuZFI6IFggUmVzaXplLCBSb3RhdGUgYW5kIFJlZmxlY3QgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggUmVzaXplLCBcCi1Sb3RhdGUgYW5kIFJlZmxlY3QgZXh0ZW5zaW9uLiAgVGhpcyBleHRlbnNpb24gcHJvdmlkZXMgdGhlIGFiaWxpdHkgdG8gXAotcmVzaXplLCByb3RhdGUgYW5kIHJlZmxlY3QgdGhlIHJvb3Qgd2luZG93IG9mIGEgc2NyZWVuLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMDQyNmQ0MWJkM2Q5MjY3Y2Y5YmJiMmRmOTMyM2E1ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yYW5kcnByb3RvLmg7ZW5kbGluZT0zMDttZDU9Mzg4NTk1N2M2MDQ4ZmRmMzMxMGFjOGJhNTRjYTJjM2YiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAicmFuZHJleHQiCi1QRSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNDY3NjVjOGRjYWNiNzExNGM4MjFiYWYwZGYxZTc5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzY3NTUzM2U3OWNkNzMwOTk3ZDIzMmM4ODk0YjY2OTIxNzRkY2U1OGQzZTIwNzAyMWI4Zjg2MGJlNDk4NDY4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZWNvcmRwcm90b18xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JlY29yZHByb3RvXzEuMTQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQyMzE3Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JlY29yZHByb3RvXzEuMTQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWFJlY29yZDogWCBSZWNvcmQgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggUmVjb3JkIFwKLWV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIGlzIHVzZWQgdG8gcmVjb3JkIGFuZCBwbGF5IGJhY2sgZXZlbnQgXAotc2VxdWVuY2VzLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NzU4MjdhMGY1NTRiYmVkMzMyNTQyOTc2ZDVmM2Q0MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yZWNvcmRwcm90by5oO2VuZGxpbmU9MTk7bWQ1PTFjYmIwZGQ0NWEwYjA2MGZmODMzOTAxNjIwYTNlNzM4IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInJlY29yZGV4dCIKLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFiNGU1ZGVkZTVlYTUxOTA2ZjE1MzBjYTFlMjFkMjE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3Nzc1NDhkMmU5MmFhMjU5ZjE1MjhkZTNjNGEzNmQxNWUwN2E0NjUwZDA5NzY1NzNhOGUyZmY1NDM3ZTczNzAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3JlbmRlcnByb3RvXzAuMTEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVuZGVycHJvdG9fMC4xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjgwMGVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVuZGVycHJvdG9fMC4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYUmVuZGVyOiBYIHJlbmRlcmluZyBFeHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBcCi1SZW5kZXJpbmcgZXh0ZW5zaW9uLiAgVGhpcyBpcyB0aGUgYmFzaXMgdGhlIGltYWdlIGNvbXBvc2l0aW9uIHdpdGhpbiB0aGUgXAotWCB3aW5kb3cgc3lzdGVtLiIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODI2ZDk5NzY1MTk2MzUyZTYxMjJhNDA2Y2YwZDAyNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yZW5kZXJwcm90by5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjQ7bWQ1PTNlNWUyODUxZGFkMjQwYjBhM2EyN2M0Nzc2YjRmZDFmIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInJlbmRlcmV4dCIKLVBSID0gInIxIgotUEUgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTkxNGNjYzFkZTY2ZGRlYjRiNjExYzZiMDY4NmUyNzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDY3MzVhNWI5MmIyMDc1OTIwNGU0NzUxZWNkNjA2NGEyYWQ4YTYyNDZiYjY1YjMwNzhiODYyYTAwZGVmMjUzNyIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZXNvdXJjZXByb3RvXzEuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9yZXNvdXJjZXByb3RvXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGI2MTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vcmVzb3VyY2Vwcm90b18xLjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWFJlczogWCBSZXNvdXJjZSBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBcCi1SZXNvdXJjZSBleHRlbnNpb24uICBYUmVzIHByb3ZpZGVzIGFuIGludGVyZmFjZSB0aGF0IGFsbG93cyBYIGNsaWVudHMgdG8gXAotc2VlIGFuZCBtb25pdG9yIFggcmVzb3VyY2UgdXNhZ2Ugb2YgdmFyaW91cyBjbGllbnRzLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02MDQ4NTkzMDVlNjYyNTAzMDc3MjQwZmVlOGM3N2Q5NyIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJyZXNvdXJjZWV4dCIKLQotUFIgPSAicjEiCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2ZkYjU3ZGFlMjIxYjcxYjI3MDNmOGUyOTgwZWFhZjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2M2NjAwM2E2YmRlYjBmNzA5MzJhOWVkM2NmNTdjYzU1NDIzNDE1NDM3OGQzMDFlMGM1Y2ZhMTg5ZDhmNjgxOCIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9zY3Juc2F2ZXJwcm90b18xLjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vc2NybnNhdmVycHJvdG9fMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiMDdmNTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9zY3Juc2F2ZXJwcm90b18xLjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWHNjcm5zYXZlcjogWCBTY3JlZW4gU2F2ZXIgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFggU2NyZWVuIFwKLVNhdmVyIGV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIGFsbG93cyBhbiBleHRlcm5hbCBcInNjcmVlbiBzYXZlclwiIFwKLWNsaWVudCB0byBkZXRlY3Qgd2hlbiB0aGUgYWx0ZXJuYXRpdmUgaW1hZ2UgaXMgdG8gYmUgZGlzcGxheWVkIGFuZCB0byBcCi1wcm92aWRlIHRoZSBncmFwaGljcy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWVkNDliNzhiMTViNDM2YzkzM2I2YjhiMDU0ZTM5MDEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2F2ZXJwcm90by5oO2VuZGxpbmU9MjY7bWQ1PWE4NGMwNjM3MzA1MTU5ZjNjMGFiMTczYWFlZWRlNDhkIgotCi1QRSA9ICIxIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWVuYWJsZS1zcGVjcz1ubyIKLQotU1JDX1VSSVttZDVzdW1dID0gImVkZDhhNzM3NzVlOGVjZTFkNjk1MTVkZDE3NzY3YmZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiYjcwYThkYTE2NDkzMGNjZWFlYjRjNzQxODAyOTE2NjA1MzNhZDNjYzQ1Mzc3YjMwYTc5NWQxYjg1YmNkNjUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3ZpZGVvcHJvdG9fMi4zLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3ZpZGVvcHJvdG9fMi4zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmOTdhMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by92aWRlb3Byb3RvXzIuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYdjogWCBWaWRlbyBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWCBWaWRlbyBcCi1leHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBhbG93cyBmb3IgYWNjZXJsYXRlZCBkcmF3aW5nIG9mIHZpZGVvcy4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2UzNDcyYTExOWE4NjQwODVmYTQxNTVjYjA5NzlhN2IiCi0KLVBFID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmZTg2ZGU4ZWEzZWI1M2I1YThmNTI5NTZjNWNkMzE3NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzgwMzg4OWZkMDhlNmZjYWY3YjY4Y2MzOTRmYjAzOGIyMzI1ZDFmMzE1ZTU3MWE2OTU0NTc3ZTA3Y2NhNzAyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMS1NYWtlLXdoaXRlc3BhY2UtdXNlLWNvbnNpc3RlbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by8wMDAxLU1ha2Utd2hpdGVzcGFjZS11c2UtY29uc2lzdGVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODllYzY2Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90by8wMDAxLU1ha2Utd2hpdGVzcGFjZS11c2UtY29uc2lzdGVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1Gcm9tIGVhN2EzYWM2YzY1ODE2NDY5MGUwZmViYjU1ZjQ0NjdjYjllMGJjYWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgotRGF0ZTogVGh1LCAxOSBNYXkgMjAxNiAxNzozMDowNCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvMl0gTWFrZSB3aGl0ZXNwYWNlIHVzZSBjb25zaXN0ZW50LgotCi1BdCBsZWFzdCBweXRob24tMy41LnggY29tcGxhaW5zIGFib3V0IHRoaXMgZm9yY2VmdWxseS4KLQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLVNpZ25lZC1vZmYtYnk6IFVsaSBTY2hsYWNodGVyIDxwc3ljaG9uQHpuYy5pbj4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHhjYmdlbi9hbGlnbi5weSB8IDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3hjYmdlbi9hbGlnbi5weSBiL3hjYmdlbi9hbGlnbi5weQotaW5kZXggNWUzMTgzOC4uZDRjMTJlZSAxMDA2NDQKLS0tLSBhL3hjYmdlbi9hbGlnbi5weQotKysrIGIveGNiZ2VuL2FsaWduLnB5Ci1AQCAtMTYsMTIgKzE2LDEyIEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgotICAgICAgICAgcmV0dXJuIHNlbGYuYWxpZ24gPT0gb3RoZXIuYWxpZ24gYW5kIHNlbGYub2Zmc2V0ID09IG90aGVyLm9mZnNldAotIAotICAgICBkZWYgX19zdHJfXyhzZWxmKToKLS0JcmV0dXJuICIoYWxpZ249JWQsIG9mZnNldD0lZCkiICUgKHNlbGYuYWxpZ24sIHNlbGYub2Zmc2V0KQotKyAgICAgICAgcmV0dXJuICIoYWxpZ249JWQsIG9mZnNldD0lZCkiICUgKHNlbGYuYWxpZ24sIHNlbGYub2Zmc2V0KQotIAotICAgICBAc3RhdGljbWV0aG9kCi0gICAgIGRlZiBmb3JfcHJpbWl0aXZlX3R5cGUoc2l6ZSk6Ci0tCSMgY29tcHV0ZSB0aGUgcmVxdWlyZWQgc3RhcnRfYWxpZ25tZW50IGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZSB0eXBlCi0tCWlmIHNpemUgJSA4ID09IDA6Ci0rICAgICAgICAjIGNvbXB1dGUgdGhlIHJlcXVpcmVkIHN0YXJ0X2FsaWdubWVudCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgdHlwZQotKyAgICAgICAgaWYgc2l6ZSAlIDggPT0gMDoKLSAgICAgICAgICAgICAjIGRvIDgtYnl0ZSBwcmltaXRpdmVzIHJlcXVpcmUgOC1ieXRlIGFsaWdubWVudCBpbiBYMTE/Ci0gICAgICAgICAgICAgcmV0dXJuIEFsaWdubWVudCg4LDApCi0gICAgICAgICBlbGlmIHNpemUgJSA0ID09IDA6Ci1AQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKLSAKLSAKLSAgICAgZGVmIGFsaWduX2FmdGVyX2ZpeGVkX3NpemUoc2VsZiwgc2l6ZSk6Ci0tCW5ld19vZmZzZXQgPSAoc2VsZi5vZmZzZXQgKyBzaXplKSAlIHNlbGYuYWxpZ24KLSsgICAgICAgIG5ld19vZmZzZXQgPSAoc2VsZi5vZmZzZXQgKyBzaXplKSAlIHNlbGYuYWxpZ24KLSAgICAgICAgIHJldHVybiBBbGlnbm1lbnQoc2VsZi5hbGlnbiwgbmV3X29mZnNldCkKLSAKLSAKLUBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEFsaWdubWVudChvYmplY3QpOgotICAgICAgICAgJycnCi0gICAgICAgICBBc3N1bWluZyB0aGUgZ2l2ZW4gZXh0ZXJuYWxfYWxpZ24sIGNoZWNrcyB3aGV0aGVyCi0gICAgICAgICBzZWxmIGlzIGZ1bGZpbGxlZCBmb3IgYWxsIGNhc2VzLgotLQlSZXR1cm5zIFRydWUgaWYgeWVzLCBGYWxzZSBvdGhlcndpc2UuCi0rICAgICAgICBSZXR1cm5zIFRydWUgaWYgeWVzLCBGYWxzZSBvdGhlcndpc2UuCi0gICAgICAgICAnJycKLSAgICAgICAgIGlmIHNlbGYuYWxpZ24gPT0gMSBhbmQgc2VsZi5vZmZzZXQgPT0gMDoKLSAgICAgICAgICAgICAjIGFsaWdubWVudCAxIHdpdGggb2Zmc2V0IDAgaXMgYWx3YXlzIGZ1bGZpbGxlZAotQEAgLTU1LDkgKzU1LDkgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6Ci0gICAgICAgICAgICAgIyB0aGUgZXh0ZXJuYWwgYWxpZ24gZ3VhcmFudGVlcyBsZXNzIGFsaWdubWVudCAtPiBub3QgZ3VhcmFudGVlZAotICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotLQlpZiBleHRlcm5hbF9hbGlnbi5hbGlnbiAlIHNlbGYuYWxpZ24gIT0gMDoKLSsgICAgICAgIGlmIGV4dGVybmFsX2FsaWduLmFsaWduICUgc2VsZi5hbGlnbiAhPSAwOgotICAgICAgICAgICAgICMgdGhlIGV4dGVybmFsIGFsaWduIGNhbm5vdCBiZSBkaXZpZGVkIGJ5IG91ciBhbGlnbgotLQkgICAgIyAtPiBub3QgZ3VhcmFudGVlZAotKyAgICAgICAgICAgICMgLT4gbm90IGd1YXJhbnRlZWQKLSAgICAgICAgICAgICAjICh0aGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB0aGVyZSBhcmUgYWxpZ25tZW50cyB0aGF0IGFyZSBub3QKLSAgICAgICAgICAgICAjIGEgcG93ZXIgb2YgMiwgd2hpY2ggaXMgaGlnaGx5IGRpc2NvdXJhZ2VkLiBCdXQgYmV0dGVyIGJlCi0gICAgICAgICAgICAgIyBzYWZlIGFuZCBjaGVjayBmb3IgaXQpCi1AQCAtNzIsNyArNzIsNyBAQCBjbGFzcyBBbGlnbm1lbnQob2JqZWN0KToKLSAKLSAgICAgZGVmIGNvbWJpbmVfd2l0aChzZWxmLCBvdGhlcik6Ci0gICAgICAgICAjIHJldHVybnMgdGhlIGFsaWdubWVudCB0aGF0IGlzIGd1YXJhbnRlZWQgd2hlbgotLQkjIGJvdGgsIHNlbGYgb3Igb3RoZXIsIGNhbiBoYXBwZW4KLSsgICAgICAgICMgYm90aCwgc2VsZiBvciBvdGhlciwgY2FuIGhhcHBlbgotICAgICAgICAgbmV3X2FsaWduID0gZ2NkKHNlbGYuYWxpZ24sIG90aGVyLmFsaWduKQotICAgICAgICAgbmV3X29mZnNldF9jYW5kaWRhdGUxID0gc2VsZi5vZmZzZXQgJSBuZXdfYWxpZ24KLSAgICAgICAgIG5ld19vZmZzZXRfY2FuZGlkYXRlMiA9IG90aGVyLm9mZnNldCAlIG5ld19hbGlnbgotQEAgLTgzLDggKzgzLDggQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6Ci0gICAgICAgICAgICAgbmV3X2FsaWduID0gZ2NkKG5ld19hbGlnbiwgb2Zmc2V0X2RpZmYpCi0gICAgICAgICAgICAgbmV3X29mZnNldF9jYW5kaWRhdGUxID0gc2VsZi5vZmZzZXQgJSBuZXdfYWxpZ24KLSAgICAgICAgICAgICBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTIgPSBvdGhlci5vZmZzZXQgJSBuZXdfYWxpZ24KLS0JICAgIGFzc2VydCBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTEgPT0gbmV3X29mZnNldF9jYW5kaWRhdGUyCi0tCSAgICBuZXdfb2Zmc2V0ID0gbmV3X29mZnNldF9jYW5kaWRhdGUxCi0rICAgICAgICAgICAgYXNzZXJ0IG5ld19vZmZzZXRfY2FuZGlkYXRlMSA9PSBuZXdfb2Zmc2V0X2NhbmRpZGF0ZTIKLSsgICAgICAgICAgICBuZXdfb2Zmc2V0ID0gbmV3X29mZnNldF9jYW5kaWRhdGUxCi0gICAgICAgICAjIHJldHVybiB0aGUgcmVzdWx0Ci0gICAgICAgICByZXR1cm4gQWxpZ25tZW50KG5ld19hbGlnbiwgbmV3X29mZnNldCkKLSAKLUBAIC05Miw0NCArOTIsNDQgQEAgY2xhc3MgQWxpZ25tZW50KG9iamVjdCk6Ci0gY2xhc3MgQWxpZ25tZW50TG9nKG9iamVjdCk6Ci0gCi0gICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLS0Jc2VsZi5va19saXN0ID0gW10KLS0Jc2VsZi5mYWlsX2xpc3QgPSBbXQotLQlzZWxmLnZlcmJvc2l0eSA9IDEKLSsgICAgICAgIHNlbGYub2tfbGlzdCA9IFtdCi0rICAgICAgICBzZWxmLmZhaWxfbGlzdCA9IFtdCi0rICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDEKLSAKLSAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0tCXJlc3VsdCA9ICIiCi0rICAgICAgICByZXN1bHQgPSAiIgotIAotLQkjIG91dHB1dCB0aGUgT0stbGlzdAotLQlmb3IgKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgYWxpZ25fYWZ0ZXIpIGluIHNlbGYub2tfbGlzdDoKLS0JICAgIHN0YWNrc2l6ZSA9IGxlbihjYWxsc3RhY2spCi0rICAgICAgICAjIG91dHB1dCB0aGUgT0stbGlzdAotKyAgICAgICAgZm9yIChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIGFsaWduX2FmdGVyKSBpbiBzZWxmLm9rX2xpc3Q6Ci0rICAgICAgICAgICAgc3RhY2tzaXplID0gbGVuKGNhbGxzdGFjaykKLSAgICAgICAgICAgICBpbmRlbnQgPSAnICAnICogc3RhY2tzaXplCi0tCSAgICBpZiBzZWxmLm9rX2NhbGxzdGFja19pc19yZWxldmFudChjYWxsc3RhY2spOgotKyAgICAgICAgICAgIGlmIHNlbGYub2tfY2FsbHN0YWNrX2lzX3JlbGV2YW50KGNhbGxzdGFjayk6Ci0gICAgICAgICAgICAgICAgIGlmIGZpZWxkX25hbWUgaXMgTm9uZSBvciBmaWVsZF9uYW1lID09ICIiOgotLQkgICAgICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNvazogJXM6XG5cdCVzYmVmb3JlOiAlcywgYWZ0ZXI6ICVzXG4iCi0tCQkgICAgICAgICUgKGluZGVudCwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgc3RyKGFsaWduX2FmdGVyKSkpCi0tCSAgICAgICAgZWxzZToKLS0JCSAgICByZXN1bHQgKz0gKCIgICAgJXNvazogZmllbGQgXCIlc1wiIGluICVzOlxuXHQlc2JlZm9yZTogJXMsIGFmdGVyOiAlc1xuIgotLQkJICAgICAgICAlIChpbmRlbnQsIHN0cihmaWVsZF9uYW1lKSwgc3RyKHR5cGVfb2JqKSwKLS0JCSAgICAgICAgICAgaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgc3RyKGFsaWduX2FmdGVyKSkpCi0rICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNvazogJXM6XG5cdCVzYmVmb3JlOiAlcywgYWZ0ZXI6ICVzXG4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5kZW50LCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBzdHIoYWxpZ25fYWZ0ZXIpKSkKLSsgICAgICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc29rOiBmaWVsZCBcIiVzXCIgaW4gJXM6XG5cdCVzYmVmb3JlOiAlcywgYWZ0ZXI6ICVzXG4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW5kZW50LCBzdHIoZmllbGRfbmFtZSksIHN0cih0eXBlX29iaiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50LCBzdHIoYWxpZ25fYmVmb3JlKSwgc3RyKGFsaWduX2FmdGVyKSkpCi0gICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID49IDE6Ci0tCQkgICAgcmVzdWx0ICs9IHNlbGYuY2FsbHN0YWNrX3RvX3N0cihpbmRlbnQsIGNhbGxzdGFjaykKLSsgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzZWxmLmNhbGxzdGFja190b19zdHIoaW5kZW50LCBjYWxsc3RhY2spCi0gCi0tCSMgb3V0cHV0IHRoZSBmYWlsLWxpc3QKLS0JZm9yIChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIHJlYXNvbikgaW4gc2VsZi5mYWlsX2xpc3Q6Ci0tCSAgICBzdGFja3NpemUgPSBsZW4oY2FsbHN0YWNrKQotKyAgICAgICAgIyBvdXRwdXQgdGhlIGZhaWwtbGlzdAotKyAgICAgICAgZm9yIChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIHJlYXNvbikgaW4gc2VsZi5mYWlsX2xpc3Q6Ci0rICAgICAgICAgICAgc3RhY2tzaXplID0gbGVuKGNhbGxzdGFjaykKLSAgICAgICAgICAgICBpbmRlbnQgPSAnICAnICogc3RhY2tzaXplCi0tCSAgICBpZiBmaWVsZF9uYW1lIGlzIE5vbmUgb3IgZmllbGRfbmFtZSA9PSAiIjoKLS0JICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNmYWlsOiBhbGlnbiAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aFxuXHQlcyVzXG5cdCVzUmVhc29uOiAlc1xuIgotLQkJICAgICUgKGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIGluZGVudCwgc3RyKHR5cGVfb2JqKSwgaW5kZW50LCByZWFzb24pKQotLQkgICAgZWxzZToKLS0JCXJlc3VsdCArPSAoIiAgICAlc2ZhaWw6IGFsaWduICVzIGlzIGluY29tcGF0aWJsZSB3aXRoXG5cdCVzZmllbGQgXCIlc1wiIGluICVzXG5cdCVzUmVhc29uOiAlc1xuIgotLQkJICAgICUgKGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIGluZGVudCwgc3RyKGZpZWxkX25hbWUpLCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHJlYXNvbikpCi0rICAgICAgICAgICAgaWYgZmllbGRfbmFtZSBpcyBOb25lIG9yIGZpZWxkX25hbWUgPT0gIiI6Ci0rICAgICAgICAgICAgICAgIHJlc3VsdCArPSAoIiAgICAlc2ZhaWw6IGFsaWduICVzIGlzIGluY29tcGF0aWJsZSB3aXRoXG5cdCVzJXNcblx0JXNSZWFzb246ICVzXG4iCi0rICAgICAgICAgICAgICAgICAgICAlIChpbmRlbnQsIHN0cihhbGlnbl9iZWZvcmUpLCBpbmRlbnQsIHN0cih0eXBlX29iaiksIGluZGVudCwgcmVhc29uKSkKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gKCIgICAgJXNmYWlsOiBhbGlnbiAlcyBpcyBpbmNvbXBhdGlibGUgd2l0aFxuXHQlc2ZpZWxkIFwiJXNcIiBpbiAlc1xuXHQlc1JlYXNvbjogJXNcbiIKLSsgICAgICAgICAgICAgICAgICAgICUgKGluZGVudCwgc3RyKGFsaWduX2JlZm9yZSksIGluZGVudCwgc3RyKGZpZWxkX25hbWUpLCBzdHIodHlwZV9vYmopLCBpbmRlbnQsIHJlYXNvbikpCi0gCi0gICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPj0gMToKLS0JICAgICAgICByZXN1bHQgKz0gc2VsZi5jYWxsc3RhY2tfdG9fc3RyKGluZGVudCwgY2FsbHN0YWNrKQotKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gc2VsZi5jYWxsc3RhY2tfdG9fc3RyKGluZGVudCwgY2FsbHN0YWNrKQotIAotIAotLQlyZXR1cm4gcmVzdWx0Ci0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0gCi0gCi0gICAgIGRlZiBjYWxsc3RhY2tfdG9fc3RyKHNlbGYsIGluZGVudCwgY2FsbHN0YWNrKToKLUBAIC0xMzcsNDEgKzEzNyw0MSBAQCBjbGFzcyBBbGlnbm1lbnRMb2cob2JqZWN0KToKLSAgICAgICAgIGZvciBzdGFja19lbGVtIGluIGNhbGxzdGFjazoKLSAgICAgICAgICAgICByZXN1bHQgKz0gIlx0ICAlcyVzXG4iICUgKGluZGVudCwgc3RyKHN0YWNrX2VsZW0pKQotICAgICAgICAgcmVzdWx0ICs9ICJcdCVzXVxuIiAlIGluZGVudAotLQlyZXR1cm4gcmVzdWx0Ci0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0gCi0gCi0gICAgIGRlZiBva19jYWxsc3RhY2tfaXNfcmVsZXZhbnQoc2VsZiwgb2tfY2FsbHN0YWNrKToKLSAgICAgICAgICMgZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2sgY2FsbHN0YWNrIGlzIHJlbGV2YW50IGZvciBsb2dnaW5nCi0tCWlmIHNlbGYudmVyYm9zaXR5ID49IDI6Ci0tCSAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPj0gMjoKLSsgICAgICAgICAgICByZXR1cm4gVHJ1ZQotIAotICAgICAgICAgIyBlbXB0eSBjYWxsc3RhY2tzIGFyZSBhbHdheXMgcmVsZXZhbnQKLS0JaWYgbGVuKG9rX2NhbGxzdGFjaykgPT0gMDoKLSsgICAgICAgIGlmIGxlbihva19jYWxsc3RhY2spID09IDA6Ci0gICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAKLS0JIyBjaGVjayB3aGV0aGVyIHRoZSBva19jYWxsc3RhY2sgaXMgYSBzdWJzZXQgb3IgZXF1YWwgdG8gYSBmYWlsX2NhbGxzdGFjawotKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoZSBva19jYWxsc3RhY2sgaXMgYSBzdWJzZXQgb3IgZXF1YWwgdG8gYSBmYWlsX2NhbGxzdGFjawotICAgICAgICAgZm9yIChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBmYWlsX2NhbGxzdGFjaywgcmVhc29uKSBpbiBzZWxmLmZhaWxfbGlzdDoKLSAgICAgICAgICAgICBpZiBsZW4ob2tfY2FsbHN0YWNrKSA8PSBsZW4oZmFpbF9jYWxsc3RhY2spOgotICAgICAgICAgICAgICAgICB6aXBwZWQgPSB6aXAob2tfY2FsbHN0YWNrLCBmYWlsX2NhbGxzdGFja1s6bGVuKG9rX2NhbGxzdGFjayldKQotLQkJaXNfc3Vic2V0ID0gYWxsKFtpID09IGogZm9yIGksIGogaW4gemlwcGVkXSkKLS0JCWlmIGlzX3N1YnNldDoKLSsgICAgICAgICAgICAgICAgaXNfc3Vic2V0ID0gYWxsKFtpID09IGogZm9yIGksIGogaW4gemlwcGVkXSkKLSsgICAgICAgICAgICAgICAgaWYgaXNfc3Vic2V0OgotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAKLSAgICAgICAgIHJldHVybiBGYWxzZQotIAotIAotICAgICBkZWYgb2soc2VsZiwgYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCBhbGlnbl9hZnRlcik6Ci0tCXNlbGYub2tfbGlzdC5hcHBlbmQoKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgYWxpZ25fYWZ0ZXIpKQotKyAgICAgICAgc2VsZi5va19saXN0LmFwcGVuZCgoYWxpZ25fYmVmb3JlLCBmaWVsZF9uYW1lLCB0eXBlX29iaiwgY2FsbHN0YWNrLCBhbGlnbl9hZnRlcikpCi0gCi0gICAgIGRlZiBmYWlsKHNlbGYsIGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgcmVhc29uKToKLS0Jc2VsZi5mYWlsX2xpc3QuYXBwZW5kKChhbGlnbl9iZWZvcmUsIGZpZWxkX25hbWUsIHR5cGVfb2JqLCBjYWxsc3RhY2ssIHJlYXNvbikpCi0rICAgICAgICBzZWxmLmZhaWxfbGlzdC5hcHBlbmQoKGFsaWduX2JlZm9yZSwgZmllbGRfbmFtZSwgdHlwZV9vYmosIGNhbGxzdGFjaywgcmVhc29uKSkKLSAKLSAgICAgZGVmIGFwcGVuZChzZWxmLCBvdGhlcik6Ci0tCXNlbGYub2tfbGlzdC5leHRlbmQob3RoZXIub2tfbGlzdCkKLS0Jc2VsZi5mYWlsX2xpc3QuZXh0ZW5kKG90aGVyLmZhaWxfbGlzdCkKLSsgICAgICAgIHNlbGYub2tfbGlzdC5leHRlbmQob3RoZXIub2tfbGlzdCkKLSsgICAgICAgIHNlbGYuZmFpbF9saXN0LmV4dGVuZChvdGhlci5mYWlsX2xpc3QpCi0gCi0gICAgIGRlZiBva19jb3VudChzZWxmKToKLS0JcmV0dXJuIGxlbihzZWxmLm9rX2xpc3QpCi0rICAgICAgICByZXR1cm4gbGVuKHNlbGYub2tfbGlzdCkKLSAKLSAKLSAKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMi1wcmludC1pcy1hLWZ1bmN0aW9uLWFuZC1uZWVkcy1wYXJlbnRoZXNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MmFjYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG8vMDAwMi1wcmludC1pcy1hLWZ1bmN0aW9uLWFuZC1uZWVkcy1wYXJlbnRoZXNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLUZyb20gYmVhNWUxYzg1YmRjMDk1MDkxMzc5MDM2NGUxODIyOGYyMDM5NWEzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1EYXRlOiBUaHUsIDE5IE1heSAyMDE2IDE3OjMwOjA1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBwcmludCgpIGlzIGEgZnVuY3Rpb24gYW5kIG5lZWRzIHBhcmVudGhlc2VzLgotCi1GaXhlcyBidWlsZCB3aXRoIHB5dGhvbi0zLnguCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBLbGF1c25lciA8d2l6QE5ldEJTRC5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBVbGkgU2NobGFjaHRlciA8cHN5Y2hvbkB6bmMuaW4+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB4Y2JnZW4veHR5cGVzLnB5IHwgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3hjYmdlbi94dHlwZXMucHkgYi94Y2JnZW4veHR5cGVzLnB5Ci1pbmRleCBjM2I1NzU4Li5iODNiMTE5IDEwMDY0NAotLS0tIGEveGNiZ2VuL3h0eXBlcy5weQotKysrIGIveGNiZ2VuL3h0eXBlcy5weQotQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBDb21wbGV4VHlwZShUeXBlKToKLSAgICAgICAgICAgICAgICAgaW50KHJlcXVpcmVkX3N0YXJ0X2FsaWduX2VsZW1lbnQuZ2V0KCdhbGlnbicsICI0IiksIDApLAotICAgICAgICAgICAgICAgICBpbnQocmVxdWlyZWRfc3RhcnRfYWxpZ25fZWxlbWVudC5nZXQoJ29mZnNldCcsICIwIiksIDApKQotICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotLSAgICAgICAgICAgICAgICBwcmludCAiRXhwbGljaXQgc3RhcnQtYWxpZ24gZm9yICVzOiAlc1xuIiAlIChzZWxmLCBzZWxmLnJlcXVpcmVkX3N0YXJ0X2FsaWduKQotKyAgICAgICAgICAgICAgICBwcmludCAoIkV4cGxpY2l0IHN0YXJ0LWFsaWduIGZvciAlczogJXNcbiIgJSAoc2VsZiwgc2VsZi5yZXF1aXJlZF9zdGFydF9hbGlnbikpCi0gCi0gICAgIGRlZiByZXNvbHZlKHNlbGYsIG1vZHVsZSk6Ci0gICAgICAgICBpZiBzZWxmLnJlc29sdmVkOgotQEAgLTU5Miw3ICs1OTIsNyBAQCBjbGFzcyBDb21wbGV4VHlwZShUeXBlKToKLSAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZV9hbGlnbl9sb2c6Ci0gICAgICAgICAgICAgICAgICAgICBwcmludCAoImNhbGNfcmVxdWlyZWRfc3RhcnRfYWxpZ246ICVzIGhhcyBzdGFydC1hbGlnbiAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIChzdHIoc2VsZiksIHN0cihzZWxmLnJlcXVpcmVkX3N0YXJ0X2FsaWduKSkpCi0tICAgICAgICAgICAgICAgICAgICBwcmludCAiRGV0YWlsczpcbiIgKyBzdHIobG9nKQotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCJEZXRhaWxzOlxuIiArIHN0cihsb2cpKQotICAgICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVpcmVkX3N0YXJ0X2FsaWduLm9mZnNldCAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCgiV0FSTklORzogJXNcblx0aGFzIHN0YXJ0LWFsaWduIHdpdGggbm9uLXplcm8gb2Zmc2V0OiAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICArICJcblx0c3VnZ2VzdCB0byBhZGQgZXhwbGljaXQgZGVmaW5pdGlvbiB3aXRoOiIKLUBAIC02MTksMTIgKzYxOSwxMiBAQCBjbGFzcyBDb21wbGV4VHlwZShUeXBlKToKLSAgICAgICAgICAgICBmb3Igb2Zmc2V0IGluIHJhbmdlKDAsYWxpZ24pOgotICAgICAgICAgICAgICAgICBhbGlnbl9jYW5kaWRhdGUgPSBBbGlnbm1lbnQoYWxpZ24sIG9mZnNldCkKLSAgICAgICAgICAgICAgICAgaWYgdmVyYm9zZV9hbGlnbl9sb2c6Ci0tICAgICAgICAgICAgICAgICAgICBwcmludCAidHJ5aW5nICVzIGZvciAlcyIgJSAoc3RyKGFsaWduX2NhbmRpZGF0ZSksIHN0cihzZWxmKSkKLSsgICAgICAgICAgICAgICAgICAgIHByaW50ICgidHJ5aW5nICVzIGZvciAlcyIgJSAoc3RyKGFsaWduX2NhbmRpZGF0ZSksIHN0cihzZWxmKSkpCi0gICAgICAgICAgICAgICAgIG15X2xvZyA9IEFsaWdubWVudExvZygpCi0gICAgICAgICAgICAgICAgIGlmIHNlbGYuaXNfcG9zc2libGVfc3RhcnRfYWxpZ24oYWxpZ25fY2FuZGlkYXRlLCBjYWxsc3RhY2ssIG15X2xvZyk6Ci0gICAgICAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKG15X2xvZykKLSAgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJmb3VuZCBzdGFydC1hbGlnbiAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpCi0rICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCJmb3VuZCBzdGFydC1hbGlnbiAlcyBmb3IgJXMiICUgKHN0cihhbGlnbl9jYW5kaWRhdGUpLCBzdHIoc2VsZikpKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsaWduX2NhbmRpZGF0ZQotICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgbXlfb2tfY291bnQgPSBteV9sb2cub2tfY291bnQoKQotQEAgLTY0MSw3ICs2NDEsNyBAQCBjbGFzcyBDb21wbGV4VHlwZShUeXBlKToKLSAgICAgICAgICMgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBhcHBsaWVzCi0gICAgICAgICAjIHRoaXMgdHlwZSBoYXMgaWxsZWdhbCBpbnRlcm5hbCBhbGlnbnMgZm9yIGFsbCBwb3NzaWJsZSBzdGFydF9hbGlnbnMKLSAgICAgICAgIGlmIHZlcmJvc2VfYWxpZ25fbG9nOgotLSAgICAgICAgICAgIHByaW50ICJkaWRuJ3QgZmluZCBzdGFydC1hbGlnbiBmb3IgJXMiICUgc3RyKHNlbGYpCi0rICAgICAgICAgICAgcHJpbnQgKCJkaWRuJ3QgZmluZCBzdGFydC1hbGlnbiBmb3IgJXMiICUgc3RyKHNlbGYpKQotICAgICAgICAgbG9nLmFwcGVuZChiZXN0X2xvZykKLSAgICAgICAgIHJldHVybiBOb25lCi0gCi1AQCAtOTAwLDcgKzkwMCw3IEBAIGNsYXNzIFN3aXRjaFR5cGUoQ29tcGxleFR5cGUpOgotICAgICAjIGF1eCBmdW5jdGlvbiBmb3IgdW5jaGVja2VkX2dldF9hbGlnbm1lbnRfYWZ0ZXIKLSAgICAgZGVmIGdldF9hbGlnbl9mb3Jfc2VsZWN0ZWRfY2FzZV9maWVsZChzZWxmLCBjYXNlX2ZpZWxkLCBzdGFydF9hbGlnbiwgY2FsbHN0YWNrLCBsb2cpOgotICAgICAgICAgaWYgdmVyYm9zZV9hbGlnbl9sb2c6Ci0tICAgICAgICAgICAgcHJpbnQgImdldF9hbGlnbl9mb3Jfc2VsZWN0ZWRfY2FzZV9maWVsZDogJXMsIGNhc2VfZmllbGQgPSAlcyIgJSAoc3RyKHNlbGYpLCBzdHIoY2FzZV9maWVsZCkpCi0rICAgICAgICAgICAgcHJpbnQgKCJnZXRfYWxpZ25fZm9yX3NlbGVjdGVkX2Nhc2VfZmllbGQ6ICVzLCBjYXNlX2ZpZWxkID0gJXMiICUgKHN0cihzZWxmKSwgc3RyKGNhc2VfZmllbGQpKSkKLSAgICAgICAgIHRvdGFsX2FsaWduID0gc3RhcnRfYWxpZ24KLSAgICAgICAgIGZvciBmaWVsZCBpbiBzZWxmLmJpdGNhc2VzOgotICAgICAgICAgICAgIG15X2NhbGxzdGFjayA9IGNhbGxzdGFja1s6XQotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y2ItcHJvdG9fMS4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVhODM3My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJYQ0I6IFRoZSBYIHByb3RvY29sIEMgYmluZGluZyBoZWFkZXJzIgotREVTQ1JJUFRJT04gPSAiRnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgdGhlIFggcHJvdG9jb2wgQy1sYW5ndWFnZSBCaW5kaW5nIFwKLShYQ0IpLiAgWENCIGlzIGEgcmVwbGFjZW1lbnQgZm9yIFhsaWIgZmVhdHVyaW5nIGEgc21hbGwgZm9vdHByaW50LCBcCi1sYXRlbmN5IGhpZGluZywgZGlyZWN0IGFjY2VzcyB0byB0aGUgcHJvdG9jb2wsIGltcHJvdmVkIHRocmVhZGluZyBcCi1zdXBwb3J0LCBhbmQgZXh0ZW5zaWJpbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9WENCIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzYzYjA4MWNiMTBjMjIzNDM1YjAxZTAwZGMwYWJhNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZHJpMi54bWw7YmVnaW5saW5lPTI7ZW5kbGluZT0yODttZDU9Zjg3NjNiMTNmZjQzMmU4NTk3ZTBkNjEwY2Y1OThlNjUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmcvZGlzdC8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS13aGl0ZXNwYWNlLXVzZS1jb25zaXN0ZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcHJpbnQtaXMtYS1mdW5jdGlvbi1hbmQtbmVlZHMtcGFyZW50aGVzZXMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTRlNjA5MTlmODU5NTYwZjI4NDI2YTY4NWE1NTU5NjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkyMmFiYTRjNjY0YWI3ODk5YTI5ZDkyZWE5MWE4N2FhNGMxZmM3ZWI1ZWU1NTAzMjVjMzIxNmM0ODBhNDkwNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgRm9yY2UgdGhlIHVzZSBvZiBQeXRob24gMyBhbmQgYSBzcGVjaWZpYyBsaWJyYXJ5IHBhdGggc28gd2UgZG9uJ3QgbmVlZCB0bwotIyBkZXBlbmQgb24gcHl0aG9uMy1uYXRpdmUKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJQWVRIT049cHl0aG9uMyBhbV9jdl9weXRob25fcHl0aG9uZGlyPSR7bGliZGlyfS94Y2ItcHJvdG8iCi0KLVBBQ0tBR0VTICs9ICJweXRob24teGNiZ2VuIgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0veGNiLyoueG1sICR7ZGF0YWRpcn0veGNiLyoueHNkIgotRklMRVNfcHl0aG9uLXhjYmdlbiA9ICIke2xpYmRpcn0veGNiLXByb3RvIgotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIE5lZWQgdG8gZG8gdGhpcyBkYW5jZSBiZWNhdXNlIHdlJ3JlIGZvcmNpbmcgdGhlIHVzZSBvZiBob3N0IFB5dGhvbiBhYm92ZSBhbmQKLSMgaWYgeGNiLXByb3RvIGlzIGJ1aWx0IHdpdGggUHkzLjUgYW5kIHRoZW4gcmUtdXNlZCBmcm9tIHNzdGF0ZSBvbiBhIGhvc3Qgd2l0aAotIyBQeTMuNiB0aGUgc2Vjb25kIGJ1aWxkIHdpbGwgd3JpdGUgbmV3IGNhY2hlIGZpbGVzIGludG8gdGhlIHN5c3Jvb3Qgd2hpY2ggd29uJ3QKLSMgYmUgbGlzdGVkIGluIHRoZSBtYW5pZmVzdCBzbyB3b24ndCBiZSBkZWxldGVkLCByZXN1bHRpbmcgaW4gYW4gZXJyb3Igb24KLSMgcmVidWlsZHMuICBTb2x2ZSB0aGlzIGJ5IGRlbGV0aW5nIHRoZSBlbnRpcmUgY2FjaGUgZGlyZWN0b3J5IHdoZW4gdGhpcyBwYWNrYWdlCi0jIGlzIHJlbW92ZWQgZnJvbSB0aGUgc3lzcm9vdC4KLVNTVEFURVBPU1RJTlNURlVOQ1MgKz0gInhjYl9zc3RhdGVfcG9zdGluc3QiCi14Y2Jfc3N0YXRlX3Bvc3RpbnN0KCkgewotCWlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290IiAtbyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIF0KLQl0aGVuCi0JCWNhdCA8PEVPRiA+JHtTU1RBVEVfSU5TVF9QT1NUUk19Ci0jIS9iaW4vc2gKLXJtIC1yZiAke2xpYmRpcn0veGNiLXByb3RvL3hjYmdlbi9fX3B5Y2FjaGVfXwotRU9GCi0JZmkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGNiLXByb3RvXzEuMTMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDM3ODYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjYi1wcm90b18xLjEzLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiWENCOiBUaGUgWCBwcm90b2NvbCBDIGJpbmRpbmcgaGVhZGVycyIKK0RFU0NSSVBUSU9OID0gIkZ1bmN0aW9uIHByb3RvdHlwZXMgZm9yIHRoZSBYIHByb3RvY29sIEMtbGFuZ3VhZ2UgQmluZGluZyBcCisoWENCKS4gIFhDQiBpcyBhIHJlcGxhY2VtZW50IGZvciBYbGliIGZlYXR1cmluZyBhIHNtYWxsIGZvb3RwcmludCwgXAorbGF0ZW5jeSBoaWRpbmcsIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHByb3RvY29sLCBpbXByb3ZlZCB0aHJlYWRpbmcgXAorc3VwcG9ydCwgYW5kIGV4dGVuc2liaWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVhDQiIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc2M2IwODFjYjEwYzIyMzQzNWIwMWUwMGRjMGFiYTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2RyaTIueG1sO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjg7bWQ1PWY4NzYzYjEzZmY0MzJlODU5N2UwZDYxMGNmNTk4ZTY1IgorCitTUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvJHtCUH0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImFiZTlhYTQ4ODYxMzgxNTBiYmMwNGFlNGYyOWI5MGUzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdiOTg3MjFlNjY5YmU4MDI4NGU5YmJmZWFiMDJkMmQwZDU0Y2QxMTE3MmI3MjI3MWU0N2EyZmU4NzVlMmJkZTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIEZvcmNlIHRoZSB1c2Ugb2YgUHl0aG9uIDMgYW5kIGEgc3BlY2lmaWMgbGlicmFyeSBwYXRoIHNvIHdlIGRvbid0IG5lZWQgdG8KKyMgZGVwZW5kIG9uIHB5dGhvbjMtbmF0aXZlCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiUFlUSE9OPXB5dGhvbjMgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0ke2xpYmRpcn0veGNiLXByb3RvIgorCitQQUNLQUdFUyArPSAicHl0aG9uLXhjYmdlbiIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3hjYi8qLnhtbCAke2RhdGFkaXJ9L3hjYi8qLnhzZCIKK0ZJTEVTX3B5dGhvbi14Y2JnZW4gPSAiJHtsaWJkaXJ9L3hjYi1wcm90byIKKworUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBOZWVkIHRvIGRvIHRoaXMgZGFuY2UgYmVjYXVzZSB3ZSdyZSBmb3JjaW5nIHRoZSB1c2Ugb2YgaG9zdCBQeXRob24gYWJvdmUgYW5kCisjIGlmIHhjYi1wcm90byBpcyBidWlsdCB3aXRoIFB5My41IGFuZCB0aGVuIHJlLXVzZWQgZnJvbSBzc3RhdGUgb24gYSBob3N0IHdpdGgKKyMgUHkzLjYgdGhlIHNlY29uZCBidWlsZCB3aWxsIHdyaXRlIG5ldyBjYWNoZSBmaWxlcyBpbnRvIHRoZSBzeXNyb290IHdoaWNoIHdvbid0CisjIGJlIGxpc3RlZCBpbiB0aGUgbWFuaWZlc3Qgc28gd29uJ3QgYmUgZGVsZXRlZCwgcmVzdWx0aW5nIGluIGFuIGVycm9yIG9uCisjIHJlYnVpbGRzLiAgU29sdmUgdGhpcyBieSBkZWxldGluZyB0aGUgZW50aXJlIGNhY2hlIGRpcmVjdG9yeSB3aGVuIHRoaXMgcGFja2FnZQorIyBpcyByZW1vdmVkIGZyb20gdGhlIHN5c3Jvb3QuCitTU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJ4Y2Jfc3N0YXRlX3Bvc3RpbnN0IgoreGNiX3NzdGF0ZV9wb3N0aW5zdCgpIHsKKwlpZiBbICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdCIgLW8gIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiBdCisJdGhlbgorCQljYXQgPDxFT0YgPiR7U1NUQVRFX0lOU1RfUE9TVFJNfQorIyEvYmluL3NoCitybSAtcmYgJHtsaWJkaXJ9L3hjYi1wcm90by94Y2JnZW4vX19weWNhY2hlX18KK0VPRgorCWZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjbWlzY3Byb3RvXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Y21pc2Nwcm90b18xLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc1MWI5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hjbWlzY3Byb3RvXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYQy1NSVNDOiBYIFhDLU1pc2NlbGxhbmVvdXMgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhDLU1JU0MgXAotZXh0ZW5zaW9uLCB3aGljaCBpcyB1c2VkIHRvIGdldCBkZXRhaWxzIG9mIFhJRCBhbGxvY2F0aW9ucyB3aXRoaW4gdGhlIFwKLXNlcnZlci4iCi0KLUxJQ0VOU0UgPSAiTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDlkODMwNDdjMTU5OTRlMDVkYjI5YjQyM2VkNjY2MmUiCi0KLVBFID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVmNDg0N2M3OGU0MWI4MDE5ODJjOGE1ZTA2MzY1YjI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxMzIzNjg2OTM3MjI1NmMzNmRiNzlhZTM5ZDU0MjE0MTcyNjc3ZmI3OWU5Y2RjNTU1ZGNlZWM4MGJkOWQyZGYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hleHRwcm90b183LjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGV4dHByb3RvXzcuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDBiZDk1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGV4dHByb3RvXzcuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRXh0OiBYIEV4dGVuc2lvbiBoZWFkZXJzIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHdpcmUgcHJvdG9jb2wgZm9yIHNldmVyYWwgWCBcCi1leHRlbnNpb25zLiAgVGhlc2UgcHJvdG9jb2wgZXh0ZW5zaW9ucyBpbmNsdWRlIERPVUJMRS1CVUZGRVIsIERQTVMsIFwKLUV4dGVuZGVkLVZpc3VhbC1JbmZvcm1hdGlvbiwgTEJYLCBNSVRfU0hNLCBNSVRfU1VORFJZLU5PTlNUQU5EQVJELCBcCi1NdWx0aS1CdWZmZXJpbmcsIFNFQ1VSSVRZLCBTSEFQRSwgU1lOQywgVE9HLUNVUCwgWEMtQVBQR1JPVVAsIFhDLU1JU0MsIFwKLVhURVNULiAgSW4gYWRkaXRpb24gYSBzbWFsbCBzZXQgb2YgdXRpbGl0eSBmdW5jdGlvbnMgYXJlIGFsc28gXAotYXZhaWxhYmxlLiIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04NmYyNzMyOTE3NTlkMGJhMmEyMjU4NWNkMWMwNmM1MyIKLQotUEUgPSAiMSIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tZW5hYmxlLXNwZWNzPW5vIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MGM5MGYzMTNiNGIwODUxNzU4ZWY3N2I5NTAxOTU4NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2Y0YjIzYWM4ZGI5YzNhOWUwZDhlZGI1OTE3MTNmM2Q3MGVmOWMzYjE3NTk3MGRkODgyM2RmYzkyYWE1YmIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2ZGdhcHJvdG9fMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2ZGdhcHJvdG9fMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmYzY2UzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRnYXByb3RvXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1wcm90by1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiWEZyZWU4Ni1ER0E6IFhGcmVlODYgRGlyZWN0IEdyYXBoaWNzIEFjY2VzcyBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWEZyZWU4NiBcCi1EaXJlY3QgR3JhcGhpY3MgQWNjZXNzIGV4dGVuc2lvbi4gVGhpcyBleHRlbnNpb24gYWxsb3dzIGRpcmVjdCBncmFwaGljcyBcCi1hY2Nlc3MgdG8gYSBmcmFtZWJ1ZmZlci1saWtlIHJlZ2lvbiwgYXMgd2VsbCBhcyByZWxhdGl2ZSBtb3VzZSBcCi1yZXBvcnRpbmcuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUwMWU2NmU0YjMxNzA4OGNmODY5YmM5OGU2YWY0ZmI2IgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInh4Zjg2ZGdhZXh0IgotUFIgPSAicjIiCi1QRSA9ICIxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTAzNmRjMmZjYmYwNTJlYzEwNjIxZmQ0OGI2OGRiYjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWM1ZWY2NTEwOGUxZjIxNDYyODZlNTMwODA5NzU2ODNkYWU0OWZjOTQ2ODAwNDJlMDRiZDFlMjAxMGU5OTA1MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veGY4NmRyaXByb3RvXzIuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2ZHJpcHJvdG9fMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzZjkyMTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2ZHJpcHJvdG9fMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlhGcmVlODYtRFJJOiBYRnJlZTg2IERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhGcmVlODYgXAotRGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSBleHRlbnNpb24uICBUaGUgWEZyZWU4Ni1EUkkgZXh0ZW5zaW9uIGlzIFwKLXVzZWQgdG8gb3JnYW5pemUgZGlyZWN0IHJlbmRlcmluZyBzdXBwb3J0IG9yIDNEIGNsaWVudHMgYW5kIGhlbHAgXAotYXJiaXRyYXRlIHJlcXVlc3RzLiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZjEwM2I5ZDk1MWUzOWZmN2UyM2QzODZlMjAxMWZhMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly94Zjg2ZHJpcHJvdG8uaDtlbmRsaW5lPTM1O21kNT00MmJlM2Q4ZTZkNDI5YWI3OTE3MjU3MmJiMGNmZjU0NCIKLQotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFkNzE2ZDBkYWMzYjY2NGU1ZWUyMGM2OWQzNGJjMTBlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljNGI4ZDcyMjFjYjZkYzQzMDkyNjljY2MwMDhhMjI3NTM2OThhZTkyNDVhMzk4YTU5ZGYzNWYxNDA0ZDY2MWYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZtaXNjcHJvdG9fMC45LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZtaXNjcHJvdG9fMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NjYzZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2bWlzY3Byb3RvXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRnJlZTg2LU1pc2M6IFhGcmVlODYgbWlzY2VsbGFuZW91cyBleHRlbnNpb24gaGVhZGVycyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB3aXJlIHByb3RvY29sIGZvciB0aGUgWEZyZWUgXAotbWlzY2VsbGFuZW91cyBleHRlbnNpb24uICBUaGUgWEZyZWU4Ni1NaXNjIGV4dGVuc2lvbiBwcm92aWRlcyBhIG1lYW5zIHRvIFwKLWFjY2VzcyBpbnB1dCBkZXZpY2UgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBzcGVjaWZpYyB0byB0aGUgWEZyZWU4Ni9Yb3JnIFwKLUREWC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTAxZTY2ZTRiMzE3MDg4Y2Y4NjliYzk4ZTZhZjRmYjYiCi0KLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImNhNjNiYmIzMWNmNWI3ZjM3YjIyMzdlOTIzZmYyNTdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1YjhlYzZhNGE4Y2EyMTA2NmRjZTExN2UwOWRjYzg4NTM5ODYyZTYxNmU2MGZiMzkxZGUwNWIzNmY2M2IwOTUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZ2aWRtb2RlcHJvdG9fMi4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hmODZ2aWRtb2RlcHJvdG9fMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzE5MDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94Zjg2dmlkbW9kZXByb3RvXzIuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYRnJlZTg2LVZNOiBYRnJlZTg2IHZpZGVvIG1vZGUgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhGcmVlODYgXAotdmlkZW8gbW9kZSBleHRlbnNpb24uICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgY2xpZW50IGFwcGxpY2F0aW9ucyB0byBnZXQgXAotYW5kIHNldCB2aWRlbyBtb2RlIHRpbWluZ3MuIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ5OWJlMmZmMzg3YTQyZjg0NjI4YzM1ZjMxMWYxNTAyIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gInh4Zjg2dm1leHQiCi0KLVBSID0gInIxIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU3OTNlY2VmZWFlY2ZlYWJkMWFlZDZhMDEwOTUxNzRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1ZDk0OTlhYTdiNzMyMDNmZDZiMzUwNWIwMjU5NjI0YWZlZDVjMTZiOTQxYmQwNGZjZjEyM2U1ZGU2OTg3NzAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hpbmVyYW1hcHJvdG9fMS4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hpbmVyYW1hcHJvdG9fMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTdlOWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94aW5lcmFtYXByb3RvXzEuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYaW5lcmFtYTogWGluZXJhbWEgZXh0ZW5zaW9uIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgd2lyZSBwcm90b2NvbCBmb3IgdGhlIFhpbmVyYW1hIFwKLWV4dGVuc2lvbi4gIFRoaXMgZXh0ZW5zaW9uIGlzIHVzZWQgZm9yIHJldHJpZXZpbmcgaW5mb3JtYXRpb24gYWJvdXQgXAotcGh5c2ljYWwgb3V0cHV0IGRldmljZXMgd2hpY2ggbWF5IGJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9naWNhbCBYIFwKLXNjcmVlbi4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2UzOTdhNTMyNmM4M2Q1ZDBlYmY1YjNmODcxNjNhYzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGFub3JhbWlYcHJvdG8uaDtlbmRsaW5lPTI0O21kNT0wOThlMGJjMDg5MzY4YTk4ODA5MmIzY2JkYTYxN2E1NyIKLQotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk5NTlmZTBiZmIyMmEwZTcyNjA0MzNiOGQxOTk1OTBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NzU3NGJiM2RjMTkyZWNkOWM1NWY1OWY5OTFlYzFkZmYzNDBiZTNlMzEzOTJjOTVkZWZmNDIzZGE1MjQ4NWIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvLzAwMDEtUmVtb3ZlLWxpYmRpci1zcGVjaWZpY2F0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG8vMDAwMS1SZW1vdmUtbGliZGlyLXNwZWNpZmljYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDgyOTZmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvLzAwMDEtUmVtb3ZlLWxpYmRpci1zcGVjaWZpY2F0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDY4IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hvcmcvcHJvdG8veG9yZ3Byb3RvL2NvbW1pdC8/aWQ9OTFjMWM4ZTE0OTBjOTcwMzc5ZWZiMTY3ODQwMDM0MjZmYWVjODA2ZQorCitGcm9tIDZmZWI5NzRlMGRlYjMzNTU5MDhjMzBlMDcyOTNkODJhM2Y2OTk2ZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IE1vbiwgMTEgSnVuIDIwMTggMTY6NDI6NDMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGxpYmRpciBzcGVjaWZpY2F0aW9uLgorCitDdXJyZW50bHkgdGhlIHBjIGZpbGVzIGRlZmluZSBsaWJkaXIsIGhvd2V2ZXIgdGhleSBhcmUgaW5zdGFsbGVkIGludG8KKy91c3Ivc2hhcmUsIHdoaWNoIG1lYW5zIHRoZXkgc2hvdWxkIGJlIGFyY2hpdGVjdHVyZSBhZ25vc3RpYy4gSW4gYQorbXVsdGlsaWIgc3lzdGVtLCB4b3JnLXByb3RvIGJ1aWx0IGZvciBlYWNoIG11bHRpbGliIGFiaSwgdGhlIHZhbHVlIG9mCitsaWJkaXIgaXMgZ29pbmcgdG8gYmUgZGlmZmVyZW50LiBUaGVzZSBzaG91bGQgZWl0aGVyIGJlIGluc3RhbGxlZCBpbgorPGxpYmRpcj4vcGtnY29uZmlnIG9yIHRoZXkgc2hvdWxkbid0IGRlZmluZSBsaWJkaXIsIGVzcGVpY2FsbHkgc2luY2UKK3RoZXkgZG9uJ3QgYWN0dWFsbHkgdXNlIHRoZSBkZWZpbml0aW9uLiBUaGlzIHNwZWNpZmljYWxseSBjYXVzZXMgYW4KK2lzc3VlIHdoZW4gdHJ5aW5nIHRvIGluc3RhbGwgYm90aCBhYmlzIGF0IHRoZSBzYW1lIHRpbWUsIHNpbmNlIHRoZXkgYXJlCitub3QgYmluYXJ5IGlkZW50aWNhbCwgc29tZXRoaW5nIGxpa2UgcnBtIHdpbGwgY29tcGxhaW4gdGhhdCB0aGV5CisKKy0tLQorIGFwcGxld21wcm90by5wYy5pbiAgICAgfCAxIC0KKyBiaWdyZXFzcHJvdG8ucGMuaW4gICAgIHwgMSAtCisgY29tcG9zaXRlcHJvdG8ucGMuaW4gICB8IDEgLQorIGRhbWFnZXByb3RvLnBjLmluICAgICAgfCAxIC0KKyBkbXhwcm90by5wYy5pbiAgICAgICAgIHwgMSAtCisgZHJpMnByb3RvLnBjLmluICAgICAgICB8IDEgLQorIGRyaTNwcm90by5wYy5pbiAgICAgICAgfCAxIC0KKyBldmllcHJvdG8ucGMuaW4gICAgICAgIHwgMSAtCisgZml4ZXNwcm90by5wYy5pbiAgICAgICB8IDEgLQorIGZvbnRjYWNoZXByb3RvLnBjLmluICAgfCAxIC0KKyBmb250c3Byb3RvLnBjLmluICAgICAgIHwgMSAtCisgZ2xwcm90by5wYy5pbiAgICAgICAgICB8IDEgLQorIGlucHV0cHJvdG8ucGMuaW4gICAgICAgfCAxIC0KKyBrYnByb3RvLnBjLmluICAgICAgICAgIHwgMSAtCisgbGczZHByb3RvLnBjLmluICAgICAgICB8IDEgLQorIHByZXNlbnRwcm90by5wYy5pbiAgICAgfCAxIC0KKyBwcmludHByb3RvLnBjLmluICAgICAgIHwgMSAtCisgcmFuZHJwcm90by5wYy5pbiAgICAgICB8IDEgLQorIHJlY29yZHByb3RvLnBjLmluICAgICAgfCAxIC0KKyByZW5kZXJwcm90by5wYy5pbiAgICAgIHwgMSAtCisgcmVzb3VyY2Vwcm90by5wYy5pbiAgICB8IDEgLQorIHNjcm5zYXZlcnByb3RvLnBjLmluICAgfCAxIC0KKyB0cmFwcHJvdG8ucGMuaW4gICAgICAgIHwgMSAtCisgdmlkZW9wcm90by5wYy5pbiAgICAgICB8IDEgLQorIHdpbmRvd3N3bXByb3RvLnBjLmluICAgfCAxIC0KKyB4Y2FsaWJyYXRlcHJvdG8ucGMuaW4gIHwgMSAtCisgeGNtaXNjcHJvdG8ucGMuaW4gICAgICB8IDEgLQorIHhleHRwcm90by5wYy5pbiAgICAgICAgfCAxIC0KKyB4Zjg2YmlnZm9udHByb3RvLnBjLmluIHwgMSAtCisgeGY4NmRnYXByb3RvLnBjLmluICAgICB8IDEgLQorIHhmODZkcmlwcm90by5wYy5pbiAgICAgfCAxIC0KKyB4Zjg2bWlzY3Byb3RvLnBjLmluICAgIHwgMSAtCisgeGY4NnJ1c2hwcm90by5wYy5pbiAgICB8IDEgLQorIHhmODZ2aWRtb2RlcHJvdG8ucGMuaW4gfCAxIC0KKyB4aW5lcmFtYXByb3RvLnBjLmluICAgIHwgMSAtCisgeHByb3RvLnBjLmluICAgICAgICAgICB8IDEgLQorIHhwcm94eW1uZ3Byb3RvLnBjLmluICAgfCAxIC0KKyAzNyBmaWxlcyBjaGFuZ2VkLCAzNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2FwcGxld21wcm90by5wYy5pbiBiL2FwcGxld21wcm90by5wYy5pbgoraW5kZXggMTc4NDFhYy4uMzIyN2IyMSAxMDA2NDQKKy0tLSBhL2FwcGxld21wcm90by5wYy5pbgorKysrIGIvYXBwbGV3bXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogQXBwbGVXTVByb3RvCitkaWZmIC0tZ2l0IGEvYmlncmVxc3Byb3RvLnBjLmluIGIvYmlncmVxc3Byb3RvLnBjLmluCitpbmRleCA5NDU3N2VkLi5lMjFiYjU5IDEwMDY0NAorLS0tIGEvYmlncmVxc3Byb3RvLnBjLmluCisrKysgYi9iaWdyZXFzcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBCaWdSZXFzUHJvdG8KK2RpZmYgLS1naXQgYS9jb21wb3NpdGVwcm90by5wYy5pbiBiL2NvbXBvc2l0ZXByb3RvLnBjLmluCitpbmRleCBkYTQyOWM3Li5iMGRhZGExIDEwMDY0NAorLS0tIGEvY29tcG9zaXRlcHJvdG8ucGMuaW4KKysrKyBiL2NvbXBvc2l0ZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBDb21wb3NpdGVFeHQKK2RpZmYgLS1naXQgYS9kYW1hZ2Vwcm90by5wYy5pbiBiL2RhbWFnZXByb3RvLnBjLmluCitpbmRleCA2ZmQ5ZWYxLi5iZmQ1MjQ0IDEwMDY0NAorLS0tIGEvZGFtYWdlcHJvdG8ucGMuaW4KKysrKyBiL2RhbWFnZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBEYW1hZ2VQcm90bworZGlmZiAtLWdpdCBhL2RteHByb3RvLnBjLmluIGIvZG14cHJvdG8ucGMuaW4KK2luZGV4IGU4MmVlN2QuLmQxNDBlMWMgMTAwNjQ0CistLS0gYS9kbXhwcm90by5wYy5pbgorKysrIGIvZG14cHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBETVhQcm90bworZGlmZiAtLWdpdCBhL2RyaTJwcm90by5wYy5pbiBiL2RyaTJwcm90by5wYy5pbgoraW5kZXggY2I1YjE3MS4uZmE5ZDI0ZCAxMDA2NDQKKy0tLSBhL2RyaTJwcm90by5wYy5pbgorKysrIGIvZHJpMnByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogRFJJMlByb3RvCitkaWZmIC0tZ2l0IGEvZHJpM3Byb3RvLnBjLmluIGIvZHJpM3Byb3RvLnBjLmluCitpbmRleCBlNDJkNjBlLi4yMGRhMzU4IDEwMDY0NAorLS0tIGEvZHJpM3Byb3RvLnBjLmluCisrKysgYi9kcmkzcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBEUkkzUHJvdG8KK2RpZmYgLS1naXQgYS9ldmllcHJvdG8ucGMuaW4gYi9ldmllcHJvdG8ucGMuaW4KK2luZGV4IDY0ZTBlYzQuLmZkNTQ0MmIgMTAwNjQ0CistLS0gYS9ldmllcHJvdG8ucGMuaW4KKysrKyBiL2V2aWVwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogRXZJRUV4dAorZGlmZiAtLWdpdCBhL2ZpeGVzcHJvdG8ucGMuaW4gYi9maXhlc3Byb3RvLnBjLmluCitpbmRleCBmODI1OGUyLi5jN2ZjYjgxIDEwMDY0NAorLS0tIGEvZml4ZXNwcm90by5wYy5pbgorKysrIGIvZml4ZXNwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgCisgTmFtZTogRml4ZXNQcm90bworZGlmZiAtLWdpdCBhL2ZvbnRjYWNoZXByb3RvLnBjLmluIGIvZm9udGNhY2hlcHJvdG8ucGMuaW4KK2luZGV4IGViNDIzOGIuLjhmZmZmZTkgMTAwNjQ0CistLS0gYS9mb250Y2FjaGVwcm90by5wYy5pbgorKysrIGIvZm9udGNhY2hlcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBGb250Y2FjaGVQcm90bworZGlmZiAtLWdpdCBhL2ZvbnRzcHJvdG8ucGMuaW4gYi9mb250c3Byb3RvLnBjLmluCitpbmRleCA5ZDIyMzU0Li5lYmI2MWE0IDEwMDY0NAorLS0tIGEvZm9udHNwcm90by5wYy5pbgorKysrIGIvZm9udHNwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IEZvbnRzUHJvdG8KK2RpZmYgLS1naXQgYS9nbHByb3RvLnBjLmluIGIvZ2xwcm90by5wYy5pbgoraW5kZXggYjk1MWRiNS4uZTk3YmZjOSAxMDA2NDQKKy0tLSBhL2dscHJvdG8ucGMuaW4KKysrKyBiL2dscHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBHTFByb3RvCitkaWZmIC0tZ2l0IGEvaW5wdXRwcm90by5wYy5pbiBiL2lucHV0cHJvdG8ucGMuaW4KK2luZGV4IDFlYjY2MTkuLjI3MGI5NWMgMTAwNjQ0CistLS0gYS9pbnB1dHByb3RvLnBjLmluCisrKysgYi9pbnB1dHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogSW5wdXRQcm90bworZGlmZiAtLWdpdCBhL2ticHJvdG8ucGMuaW4gYi9rYnByb3RvLnBjLmluCitpbmRleCBiZGQzOWYxLi4zMmExNzJkIDEwMDY0NAorLS0tIGEva2Jwcm90by5wYy5pbgorKysrIGIva2Jwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IEtCUHJvdG8KK2RpZmYgLS1naXQgYS9sZzNkcHJvdG8ucGMuaW4gYi9sZzNkcHJvdG8ucGMuaW4KK2luZGV4IDM5MzBhZDcuLjQzZmJhMjkgMTAwNjQ0CistLS0gYS9sZzNkcHJvdG8ucGMuaW4KKysrKyBiL2xnM2Rwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IExnM2RQcm90bworZGlmZiAtLWdpdCBhL3ByZXNlbnRwcm90by5wYy5pbiBiL3ByZXNlbnRwcm90by5wYy5pbgoraW5kZXggNmVjNGI3ZC4uNTViODRkYyAxMDA2NDQKKy0tLSBhL3ByZXNlbnRwcm90by5wYy5pbgorKysrIGIvcHJlc2VudHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogUHJlc2VudFByb3RvCitkaWZmIC0tZ2l0IGEvcHJpbnRwcm90by5wYy5pbiBiL3ByaW50cHJvdG8ucGMuaW4KK2luZGV4IDhhMmUyZDYuLmEyZGE2NmQgMTAwNjQ0CistLS0gYS9wcmludHByb3RvLnBjLmluCisrKysgYi9wcmludHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBQcmludFByb3RvCitkaWZmIC0tZ2l0IGEvcmFuZHJwcm90by5wYy5pbiBiL3JhbmRycHJvdG8ucGMuaW4KK2luZGV4IDVhNWVkYjIuLjZkNjBjYmIgMTAwNjQ0CistLS0gYS9yYW5kcnByb3RvLnBjLmluCisrKysgYi9yYW5kcnByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogUmFuZHJQcm90bworZGlmZiAtLWdpdCBhL3JlY29yZHByb3RvLnBjLmluIGIvcmVjb3JkcHJvdG8ucGMuaW4KK2luZGV4IDBmZjRjMGIuLmE4N2FhODIgMTAwNjQ0CistLS0gYS9yZWNvcmRwcm90by5wYy5pbgorKysrIGIvcmVjb3JkcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBSZWNvcmRQcm90bworZGlmZiAtLWdpdCBhL3JlbmRlcnByb3RvLnBjLmluIGIvcmVuZGVycHJvdG8ucGMuaW4KK2luZGV4IGU2MDI4YWMuLjM0YjE1ZTAgMTAwNjQ0CistLS0gYS9yZW5kZXJwcm90by5wYy5pbgorKysrIGIvcmVuZGVycHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorIE5hbWU6IFJlbmRlclByb3RvCitkaWZmIC0tZ2l0IGEvcmVzb3VyY2Vwcm90by5wYy5pbiBiL3Jlc291cmNlcHJvdG8ucGMuaW4KK2luZGV4IGE0MDlkYjkuLmY5MjdjYmIgMTAwNjQ0CistLS0gYS9yZXNvdXJjZXByb3RvLnBjLmluCisrKysgYi9yZXNvdXJjZXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogUmVzb3VyY2VQcm90bworZGlmZiAtLWdpdCBhL3Njcm5zYXZlcnByb3RvLnBjLmluIGIvc2NybnNhdmVycHJvdG8ucGMuaW4KK2luZGV4IDY1NTZhMmMuLmZkOWQzNjggMTAwNjQ0CistLS0gYS9zY3Juc2F2ZXJwcm90by5wYy5pbgorKysrIGIvc2NybnNhdmVycHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBTY3JuU2F2ZXJQcm90bworZGlmZiAtLWdpdCBhL3RyYXBwcm90by5wYy5pbiBiL3RyYXBwcm90by5wYy5pbgoraW5kZXggOGNiMGFhOC4uOGEyMjBiOSAxMDA2NDQKKy0tLSBhL3RyYXBwcm90by5wYy5pbgorKysrIGIvdHJhcHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogVHJhcFByb3RvCitkaWZmIC0tZ2l0IGEvdmlkZW9wcm90by5wYy5pbiBiL3ZpZGVvcHJvdG8ucGMuaW4KK2luZGV4IDE0YjkwN2EuLjVjMjJmN2EgMTAwNjQ0CistLS0gYS92aWRlb3Byb3RvLnBjLmluCisrKysgYi92aWRlb3Byb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBWaWRlb1Byb3RvCitkaWZmIC0tZ2l0IGEvd2luZG93c3dtcHJvdG8ucGMuaW4gYi93aW5kb3dzd21wcm90by5wYy5pbgoraW5kZXggMGEyZWMwYi4uZWM1NmU4MiAxMDA2NDQKKy0tLSBhL3dpbmRvd3N3bXByb3RvLnBjLmluCisrKysgYi93aW5kb3dzd21wcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFdpbmRvd3NXTVByb3RvCitkaWZmIC0tZ2l0IGEveGNhbGlicmF0ZXByb3RvLnBjLmluIGIveGNhbGlicmF0ZXByb3RvLnBjLmluCitpbmRleCA0MGI2ZmQwLi5mMWVhNWRlIDEwMDY0NAorLS0tIGEveGNhbGlicmF0ZXByb3RvLnBjLmluCisrKysgYi94Y2FsaWJyYXRlcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorIAorIE5hbWU6IFhDYWxpYnJhdGUKK2RpZmYgLS1naXQgYS94Y21pc2Nwcm90by5wYy5pbiBiL3hjbWlzY3Byb3RvLnBjLmluCitpbmRleCAwZGZiZjIxLi5iNzJiYmM2IDEwMDY0NAorLS0tIGEveGNtaXNjcHJvdG8ucGMuaW4KKysrKyBiL3hjbWlzY3Byb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogWENNaXNjUHJvdG8KK2RpZmYgLS1naXQgYS94ZXh0cHJvdG8ucGMuaW4gYi94ZXh0cHJvdG8ucGMuaW4KK2luZGV4IGY2NmVlYWUuLjk0MTljOTEgMTAwNjQ0CistLS0gYS94ZXh0cHJvdG8ucGMuaW4KKysrKyBiL3hleHRwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhFeHRQcm90bworZGlmZiAtLWdpdCBhL3hmODZiaWdmb250cHJvdG8ucGMuaW4gYi94Zjg2YmlnZm9udHByb3RvLnBjLmluCitpbmRleCAxOGM1NjQ3Li40YTY3YmU2IDEwMDY0NAorLS0tIGEveGY4NmJpZ2ZvbnRwcm90by5wYy5pbgorKysrIGIveGY4NmJpZ2ZvbnRwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhGODZCaWdGb250UHJvdG8KK2RpZmYgLS1naXQgYS94Zjg2ZGdhcHJvdG8ucGMuaW4gYi94Zjg2ZGdhcHJvdG8ucGMuaW4KK2luZGV4IDVjNWY4YjEuLmUwMjljZDQgMTAwNjQ0CistLS0gYS94Zjg2ZGdhcHJvdG8ucGMuaW4KKysrKyBiL3hmODZkZ2Fwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhGODZER0FQcm90bworZGlmZiAtLWdpdCBhL3hmODZkcmlwcm90by5wYy5pbiBiL3hmODZkcmlwcm90by5wYy5pbgoraW5kZXggOTNkZjI5Mi4uYzhmYWYxNCAxMDA2NDQKKy0tLSBhL3hmODZkcmlwcm90by5wYy5pbgorKysrIGIveGY4NmRyaXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogWEY4NkRSSVByb3RvCitkaWZmIC0tZ2l0IGEveGY4Nm1pc2Nwcm90by5wYy5pbiBiL3hmODZtaXNjcHJvdG8ucGMuaW4KK2luZGV4IGFmNzNmYTMuLjA1ZDVkOWUgMTAwNjQ0CistLS0gYS94Zjg2bWlzY3Byb3RvLnBjLmluCisrKysgYi94Zjg2bWlzY3Byb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogWEY4Nk1pc2NQcm90bworZGlmZiAtLWdpdCBhL3hmODZydXNocHJvdG8ucGMuaW4gYi94Zjg2cnVzaHByb3RvLnBjLmluCitpbmRleCBmYzVmNjNiLi4xYzdmZjFiIDEwMDY0NAorLS0tIGEveGY4NnJ1c2hwcm90by5wYy5pbgorKysrIGIveGY4NnJ1c2hwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhGODZSdXNoUHJvdG8KK2RpZmYgLS1naXQgYS94Zjg2dmlkbW9kZXByb3RvLnBjLmluIGIveGY4NnZpZG1vZGVwcm90by5wYy5pbgoraW5kZXggZmNiNzRmMi4uZWYwNjJiMyAxMDA2NDQKKy0tLSBhL3hmODZ2aWRtb2RlcHJvdG8ucGMuaW4KKysrKyBiL3hmODZ2aWRtb2RlcHJvdG8ucGMuaW4KK0BAIC0xLDYgKzEsNSBAQAorIHByZWZpeD1AcHJlZml4QAorIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKy1saWJkaXI9QGxpYmRpckAKKyBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorICAKKyBOYW1lOiBYRjg2VmlkTW9kZVByb3RvCitkaWZmIC0tZ2l0IGEveGluZXJhbWFwcm90by5wYy5pbiBiL3hpbmVyYW1hcHJvdG8ucGMuaW4KK2luZGV4IDFmZmQzN2QuLjkxNzJmMWUgMTAwNjQ0CistLS0gYS94aW5lcmFtYXByb3RvLnBjLmluCisrKysgYi94aW5lcmFtYXByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAgCisgTmFtZTogWGluZXJhbWFQcm90bworZGlmZiAtLWdpdCBhL3hwcm90by5wYy5pbiBiL3hwcm90by5wYy5pbgoraW5kZXggOGZmMmQzZC4uODk5MzE2YSAxMDA2NDQKKy0tLSBhL3hwcm90by5wYy5pbgorKysrIGIveHByb3RvLnBjLmluCitAQCAtMSw2ICsxLDUgQEAKKyBwcmVmaXg9QHByZWZpeEAKKyBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACistbGliZGlyPUBsaWJkaXJACisgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyBpbmNsdWRleDExZGlyPUBpbmNsdWRlZGlyQC9YMTEKKyAgCitkaWZmIC0tZ2l0IGEveHByb3h5bW5ncHJvdG8ucGMuaW4gYi94cHJveHltbmdwcm90by5wYy5pbgoraW5kZXggNWM2ZmFkNi4uMWE4MWUyOCAxMDA2NDQKKy0tLSBhL3hwcm94eW1uZ3Byb3RvLnBjLmluCisrKysgYi94cHJveHltbmdwcm90by5wYy5pbgorQEAgLTEsNiArMSw1IEBACisgcHJlZml4PUBwcmVmaXhACisgZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorLWxpYmRpcj1AbGliZGlyQAorIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisgIAorIE5hbWU6IFhQcm94eU1hbmFnZW1lbnRQcm90b2NvbAorLS0gCisyLjExLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAxOC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAxOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYzZlODcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE4LjQuYmIKQEAgLTAsMCArMSwxNiBAQAorcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJYQ2FsaWJyYXRlOiBUb3VjaHNjcmVlbiBjYWxpYnJhdGlvbiBoZWFkZXJzIgorCitERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGhlYWRlcnMgYW5kIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGRlZmluaW5nIFwKK3RoZSBjb3JlIHByb3RvY29sIGFuZCAobWFueSkgZXh0ZW5zaW9ucyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKKworTElDRU5TRSA9ICJNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLXgxMXByb3RvO21kNT1iOWUwNTExMDdkNTYyODk2NjczOWEwYjJlOWIzMjY3NiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmVtb3ZlLWxpYmRpci1zcGVjaWZpY2F0aW9uLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODE1NTdjYTQ3ZWU2NmE0ZTU0NTkwZmNkYWRkMjgxMTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmVlODg1ZTA1MTI4OTllYTUyODBjNTkzZmRiMjczNWJlYjE2OTNhZDE3MGMyMmViY2M4NDQ0NzBlZWM0MTVhMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG8veHByb3RvX2ZpeF9mb3JfeDMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjllZDk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veHByb3RvL3hwcm90b19maXhfZm9yX3gzMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1Eb24ndCBhbHdheXMgZGVmaW5lIExPTkc2NCBmb3IgQU1ENjQKLSAgICAKLVgzMiBkZWZpbmVzIF9fYW1kNjRfXy9hbWQ2NCB3aXRoIDMyYml0IGxvbmcuICBXZSBzaG91bGQgc2ltcGx5IGNoZWNrCi1fX0xQNjRfXyBiZWZvcmUgZGVmaW5pbmcgTE9ORzY0IHdpdGhvdXQgY2hlY2tpbmcgX19hbWQ2NF9fL2FtZDY0LgotCi1UaGlzIGZpeGVzIGNvbXBpbGF0aW9uIHdpdGggeDMyIHRvb2xjaGFpbi4KLQotUmVjZWl2ZWQgdGhpcyBwYXRjaCBmcm9tIEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPiAyMDExLzEyLzEKLQotSW5kZXg6IHhwcm90by03LjAuMzEvWG1kLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4cHJvdG8tNy4wLjMxLm9yaWcvWG1kLmgKLSsrKyB4cHJvdG8tNy4wLjMxL1htZC5oCi1AQCAtNjIsNyArNjIsNiBAQCBTT0ZUV0FSRS4KLSAgICAgIGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoaWE2NCkgfHwgXAotICAgICAgZGVmaW5lZChfX3NwYXJjNjRfXykgfHwgXAotICAgICAgZGVmaW5lZChfX3MzOTB4X18pIHx8IFwKLS0gICAgIGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKGFtZDY0KSB8fCBcCi0gICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gIyAgaWYgIWRlZmluZWQoX19JTFAzMl9fKSAvKiBhbWQ2NC14MzIgaXMgMzJiaXQgKi8KLSAjICAgZGVmaW5lIExPTkc2NAkJCQkvKiAzMi82NC1iaXQgYXJjaGl0ZWN0dXJlICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90b183LjAuMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hwcm90b183LjAuMzEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYmNjNjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94cHJvdG9fNy4wLjMxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSB4b3JnLXByb3RvLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJYbGliOiBDIExhbmd1YWdlIFggaW50ZXJmYWNlIGhlYWRlcnMiCi0KLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgYmFzaWMgaGVhZGVycyBmb3IgdGhlIFggV2luZG93IFwKLVN5c3RlbS4iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCi0KLVBFID0gIjEiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly94cHJvdG9fZml4X2Zvcl94MzIucGF0Y2giCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tZW5hYmxlLXNwZWNzPW5vIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTY3OTFmN2NhOGM1MWEyMDYwOGFmMTE3MDJlNTEwODMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzZmOTc0N2RhMGJkM2E5NWY4NmIxN2ZiOGRkNWU3MTdjOGYzYWI3ZjBlY2UzYmExYjI0Nzg5OWVjMWVmNzc0NyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC9nY2NtYWtlZGVwXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL2djY21ha2VkZXBfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlM2E2NjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL2djY21ha2VkZXBfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW0gdG8gY3JlYXRlIGRlcGVuZGVuY2llcyBpbiBtYWtlZmlsZXMiCi0KLURFU0NSSVBUSU9OID0gIlRoZSBnY2NtYWtlZGVwIHByb2dyYW0gY2FsbHMgJ2djYyAtTScgdG8gb3V0cHV0IG1ha2VmaWxlIFwKLXJ1bGVzIGRlc2NyaWJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBlYWNoIHNvdXJjZWZpbGUsIHNvIHRoYXQgbWFrZSBrbm93cyBcCi13aGljaCBvYmplY3QgZmlsZXMgbXVzdCBiZSByZWNvbXBpbGVkIHdoZW4gYSBkZXBlbmRlbmN5IGhhcyBjaGFuZ2VkLiIKLQotcmVxdWlyZSB4b3JnLXV0aWwtY29tbW9uLmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTWFrZWZpbGUuYW07ZW5kbGluZT0yMDttZDU9MjNjMjc3Mzk2ZDY5MDQxMzI0NWViYjg5YjE4YzVkNGQiCi1ERVNDUklQVElPTiA9ICJjcmVhdGUgZGVwZW5kZW5jaWVzIGluIG1ha2VmaWxlcyB1c2luZyAnZ2NjIC1NJyIKLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi1SREVQRU5EU18ke1BOfSA9ICJnY2MiCi0KLVBSID0gInIzIgotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyN2RkYjYxMzFlYjRhNTZmZGY2NjQ0YTYzYWRlNzg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5ZTJlN2E1OTBlMjdmODRiNjcwOGFiN2E4MWU1NDYzOTliOTQ5YmY2NTJmYjliOTUxOTNlMGU1NDNlNmE1NDgiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXNlZCAtaSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCwiICR7RH0ke2JpbmRpcn0vZ2NjbWFrZWRlcAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL21ha2VkZXBlbmRfMS4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvbWFrZWRlcGVuZF8xLjAuNS5iYgppbmRleCA4NGE5NjdhLi43MjdhYjU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvbWFrZWRlcGVuZF8xLjAuNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXV0aWwvbWFrZWRlcGVuZF8xLjAuNS5iYgpAQCAtMTAsNyArMTAsNyBAQAogY2FuIHJlZmVyZW5jZSBmaWxlcyBoYXZpbmcgb3RoZXIgI2luY2x1ZGUgZGlyZWN0aXZlcywgYW5kIHBhcnNpbmcgd2lsbCBcCiBvY2N1ciBpbiB0aGVzZSBmaWxlcyBhcyB3ZWxsLiIKIAotREVQRU5EUyA9ICJ4cHJvdG8gdXRpbC1tYWNyb3MiCitERVBFTkRTID0gInhvcmdwcm90byB1dGlsLW1hY3JvcyIKIFBFID0gIjEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL3V0aWwtbWFjcm9zXzEuMTkuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzOWQ3ODcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL3V0aWwtbWFjcm9zXzEuMTkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiWCBhdXRvdG9vbHMgbWFjcm9zIgotCi1ERVNDUklQVElPTiA9ICJNNCBhdXRvdG9vbHMgbWFjcm9zIHVzZWQgYnkgdmFyaW91cyBYLm9yZyBwcm9ncmFtcy4iCi0KLXJlcXVpcmUgeG9yZy11dGlsLWNvbW1vbi5pbmMKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xOTcwNTExZmRkZDQzOWIwN2E2YmE3ODlkMjhmZjY2MiIKLQotUEUgPSAiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmOGE4ZTYxMDA1NTZmN2YyOGU0Njk4MDk4MDVkZWU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3MmFkMGU0MWQxZTBhYmY1ZWNhZmQyOTQ2MGJmMWI4ZDQ3ZTUzZDRiN2QzYWJmMWY2NmQwMmRjNTc2NTQ3YjgiCi0KLSMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy11dGlsL3V0aWwtbWFjcm9zXzEuMTkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY4MDU5OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctdXRpbC91dGlsLW1hY3Jvc18xLjE5LjIuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJYIGF1dG90b29scyBtYWNyb3MiCisKK0RFU0NSSVBUSU9OID0gIk00IGF1dG90b29scyBtYWNyb3MgdXNlZCBieSB2YXJpb3VzIFgub3JnIHByb2dyYW1zLiIKKworcmVxdWlyZSB4b3JnLXV0aWwtY29tbW9uLmluYworCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE5NzA1MTFmZGRkNDM5YjA3YTZiYTc4OWQyOGZmNjYyIgorCitQRSA9ICIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTA1OWIzMjhmYWMwODZiNzMzZmZhYzY2MDcxNjRjNDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTIyNWM0NWMzZGU2MGZhZjk3MTk3OWE1NWE1NTM2ZjM1NjJiYWE0YjZmMDIyNDZjMjNlOThhYzBjMDlhNzViNyIKKworIyAke1BOfSBpcyBlbXB0eSBzbyB3ZSBuZWVkIHRvIHR3ZWFrIC1kZXYgYW5kIC1kYmcgcGFja2FnZSBkZXBlbmRlbmNpZXMKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzNjQveG9yZy5jb25mCmluZGV4IGY0Y2QxMzkuLjAzYjk0ZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzNjQveG9yZy5jb25mCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhmODYtY29uZmlnL3FlbXVtaXBzNjQveG9yZy5jb25mCkBAIC0yNiw2ICsyNiw3IEBACiAgICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBTY3JlZW4iCiAgICAgRGV2aWNlICAgICAgICAiR3JhcGhpY3MgQ29udHJvbGxlciIKICAgICBNb25pdG9yICAgICAgICAiR2VuZXJpYyBNb25pdG9yIgorICAgIERlZmF1bHREZXB0aCAgICAxNgogICAgIFN1YlNlY3Rpb24gIkRpc3BsYXkiCiAgICAgICAgIE1vZGVzICAgICAiNjQweDQ4MCIKICAgICBFbmRTdWJTZWN0aW9uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCmluZGV4IGNmMjI4NmMuLjQ4OWE0MjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCkBAIC0xNyw3ICsxNyw2IEBACiAKIFhPUkdfUE4gPSAieG9yZy1zZXJ2ZXIiCiBTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwveHNlcnZlci8ke1hPUkdfUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJICs9ICJmaWxlOi8vbWFjcm9fdHdlYWsucGF0Y2giCiAKIFMgPSAiJHtXT1JLRElSfS8ke1hPUkdfUE59LSR7UFZ9IgogCkBAIC0yNiw3ICsyNSw3IEBACiBpbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAotUFJPVE9fREVQUyA9ICJyYW5kcnByb3RvIHJlbmRlcnByb3RvIGZpeGVzcHJvdG8gZGFtYWdlcHJvdG8geGV4dHByb3RvIHhwcm90byB4Zjg2ZGdhcHJvdG8geGY4Nm1pc2Nwcm90byB4Zjg2dmlkbW9kZXByb3RvIGNvbXBvc2l0ZXByb3RvIHJlY29yZHByb3RvIHJlc291cmNlcHJvdG8gdmlkZW9wcm90byBzY3Juc2F2ZXJwcm90byAgeGluZXJhbWFwcm90byBmb250c3Byb3RvIGticHJvdG8gaW5wdXRwcm90byBiaWdyZXFzcHJvdG8geGNtaXNjcHJvdG8gcHJlc2VudHByb3RvIgorUFJPVE9fREVQUyA9ICJ4b3JncHJvdG8iCiBMSUJfREVQUyA9ICJwaXhtYW4gbGlieGZvbnQyIHh0cmFucyBsaWJ4YXUgbGlieGV4dCBsaWJ4ZG1jcCBsaWJkcm0gbGlieGtiZmlsZSBsaWJwY2lhY2Nlc3MiCiBERVBFTkRTID0gIiR7UFJPVE9fREVQU30gJHtMSUJfREVQU30gZm9udC11dGlsIgogCkBAIC0xMjMsMjIgKzEyMiwyMiBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gImRyaTIgdWRldiAke1hPUkdfQ1JZUFRPfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnJHtPUEVOR0xfUEtHQ09ORklHU30nLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQgc3lzdGVtZC1sb2dpbmQnLCAnJywgZCl9IFwKICIKIAogUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS1jb25maWctdWRldiwtLWRpc2FibGUtY29uZmlnLXVkZXYsdWRldiIKLVBBQ0tBR0VDT05GSUdbZHJpXSA9ICItLWVuYWJsZS1kcmksLS1kaXNhYmxlLWRyaSxnbHByb3RvIHZpcnR1YWwvbWVzYSB4Zjg2ZHJpcHJvdG8iCi1QQUNLQUdFQ09ORklHW2RyaTJdID0gIi0tZW5hYmxlLWRyaTIsLS1kaXNhYmxlLWRyaTIsZHJpMnByb3RvIgorUEFDS0FHRUNPTkZJR1tkcmldID0gIi0tZW5hYmxlLWRyaSwtLWRpc2FibGUtZHJpLHhvcmdwcm90byB2aXJ0dWFsL21lc2EiCitQQUNLQUdFQ09ORklHW2RyaTJdID0gIi0tZW5hYmxlLWRyaTIsLS1kaXNhYmxlLWRyaTIseG9yZ3Byb3RvIgogIyBEUkkzIHJlcXVpcmVzIHhzaG1mZW5jZSB0byBhbHNvIGJlIGVuYWJsZWQKLVBBQ0tBR0VDT05GSUdbZHJpM10gPSAiLS1lbmFibGUtZHJpMywtLWRpc2FibGUtZHJpMyxkcmkzcHJvdG8iCi1QQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsZ2xwcm90byB2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLC0tZGlzYWJsZS1kcmkzLHhvcmdwcm90byIKK1BBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCx4b3JncHJvdG8gdmlydHVhbC9saWJnbCB2aXJ0dWFsL2xpYngxMSIKIFBBQ0tBR0VDT05GSUdbZ2xhbW9yXSA9ICItLWVuYWJsZS1nbGFtb3IsLS1kaXNhYmxlLWdsYW1vcixsaWJlcG94eSB2aXJ0dWFsL2xpYmdibSxsaWJlZ2wiCiBQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgogUEFDS0FHRUNPTkZJR1t4c2htZmVuY2VdID0gIi0tZW5hYmxlLXhzaG1mZW5jZSwtLWRpc2FibGUteHNobWZlbmNlLGxpYnhzaG1mZW5jZSIKIFBBQ0tBR0VDT05GSUdbeG1sdG9dID0gIi0td2l0aC14bWx0bywgLS13aXRob3V0LXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgogUEFDS0FHRUNPTkZJR1tzeXN0ZW1kLWxvZ2luZF0gPSAiLS1lbmFibGUtc3lzdGVtZC1sb2dpbmQ9eWVzLC0tZW5hYmxlLXN5c3RlbWQtbG9naW5kPW5vLGRidXMsIgogUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC1kYWVtb24sLS13aXRob3V0LXN5c3RlbWQtZGFlbW9uLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3hpbmVyYW1hXSA9ICItLWVuYWJsZS14aW5lcmFtYSwtLWRpc2FibGUteGluZXJhbWEseGluZXJhbWFwcm90byIKK1BBQ0tBR0VDT05GSUdbeGluZXJhbWFdID0gIi0tZW5hYmxlLXhpbmVyYW1hLC0tZGlzYWJsZS14aW5lcmFtYSx4b3JncHJvdG8iCiBQQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItLWVuYWJsZS14d2F5bGFuZCwtLWRpc2FibGUteHdheWxhbmQsd2F5bGFuZCB3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kLXByb3RvY29scyBsaWJlcG94eSIKIAogIyBYb3JnIHJlcXVpcmVzIGEgU0hBMSBpbXBsZW1lbnRhdGlvbiwgcGljayBvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb25maWctZml4LU5VTEwtdmFsdWUtZGV0ZWN0aW9uLWZvci1JRF9JTlBVVC1iZWluZy11LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbmZpZy1maXgtTlVMTC12YWx1ZS1kZXRlY3Rpb24tZm9yLUlEX0lOUFVULWJlaW5nLXUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NGQ1ZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbmZpZy1maXgtTlVMTC12YWx1ZS1kZXRlY3Rpb24tZm9yLUlEX0lOUFVULWJlaW5nLXUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGEzMDkzMjMzMjhkOWQ2ZTBiZjVkOWVhMWQ3NTkyMGU1M2I5YmVlZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotRGF0ZTogRnJpLCA1IEphbiAyMDE4IDExOjU4OjQyICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZzogZml4IE5VTEwgdmFsdWUgZGV0ZWN0aW9uIGZvciBJRF9JTlBVVCBiZWluZyB1bnNldAotCi1FcnJvbmVvdXMgY29uZGl0aW9uIGNhdXNlZCB1cyB0byBrZWVwIGdvaW5nIHdpdGggYWxsIGRldmljZXMgdGhhdCBkaWRuJ3QgaGF2ZQotSURfSU5QVVQgc2V0LgotCi1GaXhlczogNWFhZDgxNDQ1YzhjM2Q2Ci1CdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MzgyCi1SZXZpZXdlZC1ieTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgotCi1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0Ci1odHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMTk2MDkwLwotQWZmZWN0czogPCAxLjIwLjAKLVtZb2N0byAjIDEyODk5XQotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXNlcjgwOEBnbWFpbC5jb20+Ci0KLS0tLQotIGNvbmZpZy91ZGV2LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWcvdWRldi5jIGIvY29uZmlnL3VkZXYuYwotaW5kZXggZTE5OGU4NjA5Li4zYTczMTg5ZTIgMTAwNjQ0Ci0tLS0gYS9jb25maWcvdWRldi5jCi0rKysgYi9jb25maWcvdWRldi5jCi1AQCAtMTM1LDcgKzEzNSw3IEBAIGRldmljZV9hZGRlZChzdHJ1Y3QgdWRldl9kZXZpY2UgKnVkZXZfZGV2aWNlKQotICNlbmRpZgotIAotICAgICB2YWx1ZSA9IHVkZXZfZGV2aWNlX2dldF9wcm9wZXJ0eV92YWx1ZSh1ZGV2X2RldmljZSwgIklEX0lOUFVUIik7Ci0tICAgIGlmICh2YWx1ZSAmJiAhc3RyY21wKHZhbHVlLCAiMCIpKSB7Ci0rICAgIGlmICghdmFsdWUgfHwgIXN0cmNtcCh2YWx1ZSwgIjAiKSkgewotICAgICAgICAgTG9nTWVzc2FnZVZlcmIoWF9JTkZPLCAxMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWcvdWRldjogaWdub3JpbmcgZGV2aWNlICVzIHdpdGhvdXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IElEX0lOUFVUIHNldFxuIiwgcGF0aCk7Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWNvbmZpZ3VyZS5hYy1GaXgtY2hlY2stZm9yLUNMT0NLX01PTk9UT05JQy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZlYzNlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRGlzY292ZXIgbW9ub3RvbmljIGNsb2NrIHVzaW5nIGNvbXBpbGUtdGltZSBjaGVjawotCi1tb25vdG9uaWMgY2xvY2sgY2hlY2sgZG9lcyBub3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW0RvZXMgbm90IHdvcmsgb24gT3BlbkJTRF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLQotCi1PcmlnaW5hbCBwYXRjaCBmb2xsb3dzOgotCi1XaGVuIHhvcmcteHNlcnZlciBpcyBiZWluZyBjcm9zcy1jb21waWxlZCwgdGhlcmUgaXMgY3VycmVudGx5IG5vIHdheQotZm9yIHVzIHRvIGRldGVjdCB3aGV0aGVyIHRoZSBtb25vdG9uaWMgY2xvY2sgaXMgYXZhaWxhYmxlIG9uIHRoZQotdGFyZ2V0IHN5c3RlbSwgYmVjYXVzZSB3ZSBhcmVuJ3QgYWJsZSB0byBydW4gYSB0ZXN0IHByb2dyYW0gb24gdGhlIGhvc3QKLXN5c3RlbS4gQ3VycmVudGx5LCBpbiB0aGlzIHNpdHVhdGlvbiwgd2UgZGVmYXVsdCB0byBub3QgdXNlIHRoZQotbW9ub3RvbmljIGNsb2NrLiBPbmUgcHJvYmxlbSB3aXRoIHRoaXMgc2l0dWF0aW9uIGlzIHRoYXQgdGhlIHVzZXIgd2lsbAotYmUgdHJlYXRlZCBhcyBpZGxlIHdoZW4gdGhlIGRhdGUgaXMgdXBkYXRlZC4KLQotVG8gZml4IHRoaXMgc2l0dWF0aW9uLCB3ZSBub3cgdXNlIGEgY29tcGlsZS10aW1lIGNoZWNrIHRvIGRldGVjdCB3aGV0aGVyIHRoZQotbW9ub3RvbmljIGNsb2NrIGlzIGF2YWlsYWJsZS4gVGhpcyBjaGVjayBjYW4gcnVuIGp1c3QgZmluZSB3aGVuIHdlIGFyZQotY3Jvc3MtY29tcGlsaW5nLgotCi1TaWduZWQtb2ZmLWJ5OiBEYXZpZCBKYW1lcyA8ZGF2aWRqYW1lcyBhdCBnb29nbGUuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMTcgKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZjdhYjQ4Yy4uMjZlODVjZCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA0OCwxOSArMTA0OCwxNiBAQCBpZiAhIHRlc3QgIngkaGF2ZV9jbG9ja19nZXR0aW1lIiA9IHhubzsgdGhlbgotICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9QT1NJWF9DX1NPVVJDRT0yMDAxMTJMIgotICAgICBmaQotIAotLSAgICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCi0rICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotICNpbmNsdWRlIDx0aW1lLmg+Ci0tCi0taW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbW11dKSB7Ci0tICAgIHN0cnVjdCB0aW1lc3BlYyB0cDsKLS0KLS0gICAgaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHApID09IDApCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotK2ludCBtYWluKCkgewotKyNpZiAhKGRlZmluZWQoX1BPU0lYX01PTk9UT05JQ19DTE9DSykgJiYgX1BPU0lYX01PTk9UT05JQ19DTE9DSyA+PSAwICYmIGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkKLSsgICAgICAgICNlcnJvciBObyBtb25vdG9uaWMgY2xvY2sKLSsjZW5kaWYKLSAgICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLSB9Ci0tICAgIF0pXSwgW01PTk9UT05JQ19DTE9DSz15ZXNdLCBbTU9OT1RPTklDX0NMT0NLPW5vXSwKLS0gICAgICAgW01PTk9UT05JQ19DTE9DSz0iY3Jvc3MgY29tcGlsaW5nIl0pCi0rXV0pXSxbTU9OT1RPTklDX0NMT0NLPXllc10sIFtNT05PVE9OSUNfQ0xPQ0s9bm9dKQotIAotICAgICBMSUJTPSIkTElCU19TQVZFIgotICAgICBDUFBGTEFHUz0iJENQUEZMQUdTX1NBVkUiCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVlZDZjYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtUmVtb3ZlLWNoZWNrLWZvci11c2VTSUdJTy1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIGNmNDA3YjE2Y2Q2NWFkNmUyNmE5YzhlNTk4NGUxNjM0MDlhNWMwZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQcmFiaHUgU3VuZGFyYXJhaiA8cHJhYmh1LnN1bmRhcmFyYWpAbnhwLmNvbT4KLURhdGU6IE1vbiwgMzAgSmFuIDIwMTcgMTY6MzI6MDYgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGNoZWNrIGZvciB1c2VTSUdJTyBvcHRpb24KLQotQ29tbWl0IDZhNWE0ZTYwMzczYzEzODZiMzExYjJhOGJiNjY2YzMyZDY4YTlkOTkgcmVtb3ZlcyB0aGUgY29uZmlndXJlIG9mIHVzZVNJR0lPCi1vcHRpb24uCi0KLUFzIHRoZSB4ZnJlZTg2IFNJR0lPIHN1cHBvcnQgaXMgcmV3b3JrZWQgdG8gdXNlIGludGVybmFsIHZlcnNpb25zIG9mIE9zQmxvY2tTSUdJTwotYW5kIE9zUmVsZWFzZVNJR0lPLgotCi1ObyBsb25nZXIgdGhlIGNoZWNrIGZvciB1c2VTSUdJTyBpcyBuZWVkZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFByYWJodSBTdW5kYXJhcmFqIDxwcmFiaHUuc3VuZGFyYXJhakBueHAuY29tPgotLS0tCi0gaHcveGZyZWU4Ni9vcy1zdXBwb3J0L3NoYXJlZC9zaWdpby5jIHwgNiAtLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3hmcmVlODYvb3Mtc3VwcG9ydC9zaGFyZWQvc2lnaW8uYyBiL2h3L3hmcmVlODYvb3Mtc3VwcG9ydC9zaGFyZWQvc2lnaW8uYwotaW5kZXggODg0YTcxYy4uYmU3NjQ5OCAxMDA2NDQKLS0tLSBhL2h3L3hmcmVlODYvb3Mtc3VwcG9ydC9zaGFyZWQvc2lnaW8uYwotKysrIGIvaHcveGZyZWU4Ni9vcy1zdXBwb3J0L3NoYXJlZC9zaWdpby5jCi1AQCAtMTg1LDkgKzE4NSw2IEBAIHhmODZJbnN0YWxsU0lHSU9IYW5kbGVyKGludCBmZCwgdm9pZCAoKmYpIChpbnQsIHZvaWQgKiksIHZvaWQgKmNsb3N1cmUpCi0gICAgIGludCBpOwotICAgICBpbnQgaW5zdGFsbGVkID0gRkFMU0U7Ci0gCi0tICAgIGlmICgheGY4NkluZm8udXNlU0lHSU8pCi0tICAgICAgICByZXR1cm4gMDsKLS0KLSAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9GVU5DUzsgaSsrKSB7Ci0gICAgICAgICBpZiAoIXhmODZTaWdJT0Z1bmNzW2ldLmYpIHsKLSAgICAgICAgICAgICBpZiAoeGY4NklzUGlwZShmZCkpCi1AQCAtMjU2LDkgKzI1Myw2IEBAIHhmODZSZW1vdmVTSUdJT0hhbmRsZXIoaW50IGZkKQotICAgICBpbnQgbWF4OwotICAgICBpbnQgcmV0OwotIAotLSAgICBpZiAoIXhmODZJbmZvLnVzZVNJR0lPKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tCi0gICAgIG1heCA9IDA7Ci0gICAgIHJldCA9IDA7Ci0gICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfRlVOQ1M7IGkrKykgewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMy1tb2Rlc2V0dGluZy1GaXgtMTYtYml0LWRlcHRoLWJwcC1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjQzNzYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMy1tb2Rlc2V0dGluZy1GaXgtMTYtYml0LWRlcHRoLWJwcC1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA1MDI4ZWY0NmZmNGFiMDkzMDIyNGI3MTAyNGE3MzQ5YjA1NjEwZDQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIEFnbmVyIDxzdGVmYW5AYWduZXIuY2g+Ci1EYXRlOiBUaHUsIDIyIERlYyAyMDE2IDE1OjQxOjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1vZGVzZXR0aW5nOiBGaXggMTYgYml0IGRlcHRoL2JwcCBtb2RlCi0KLVdoZW4gc2V0dGluZyBEZWZhdWx0RGVwdGggdG8gMTYgaW4gdGhlIFNjcmVlbiBzZWN0aW9uLCB0aGUgY3VycmVudAotY29kZSByZXF1ZXN0cyBhIDMyIGJwcCBmcmFtZWJ1ZmZlciwgaG93ZXZlciB0aGUgWC1TZXJ2ZXIgc2VlbXMgdG8KLWFzc3VtZXMgMTYgYnBwLgotCi1GaXhlcyBjb21taXQgMjEyMTdkMDIxNjhkICgibW9kZXNldHRpbmc6IEltcGxlbWVudCAzMi0+MjQgYnBwCi1jb252ZXJzaW9uIGluIHNoYWRvdyB1cGRhdGUiKQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbkBhZ25lci5jaD4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWzFdCi0KLVsxXSBodHRwczovL2xpc3RzLngub3JnL2FyY2hpdmVzL3hvcmctZGV2ZWwvMjAxNi1EZWNlbWJlci8wNTIxMTMuaHRtbAotLS0tCi0gaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RyaXZlci5jIHwgNCArKystCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RyaXZlci5jIGIvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RyaXZlci5jCi1pbmRleCBkNzAzMGU1Li42NDdhZDgzIDEwMDY0NAotLS0tIGEvaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RyaXZlci5jCi0rKysgYi9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJpdmVyLmMKLUBAIC05MzAsNyArOTMwLDcgQEAgUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAiVXNpbmcgMjRicHAgaHcgZnJvbnQgYnVmZmVyIHdpdGggMzJicHAgc2hhZG93XG4iKTsKLSAgICAgICAgIGRlZmF1bHRicHAgPSAzMjsKLSAgICAgfSBlbHNlIHsKLS0gICAgICAgIG1zLT5kcm1tb2RlLmticHAgPSBkZWZhdWx0YnBwOwotKyAgICAgICAgbXMtPmRybW1vZGUua2JwcCA9IDA7Ci0gICAgIH0KLSAgICAgYnBwZmxhZ3MgPSBQcmVmZXJDb252ZXJ0MjR0bzMyIHwgU3VwcG9ydENvbnZlcnQyNHRvMzIgfCBTdXBwb3J0MzJicHBGYjsKLSAKLUBAIC05NTAsNiArOTUwLDggQEAgUHJlSW5pdChTY3JuSW5mb1B0ciBwU2NybiwgaW50IGZsYWdzKQotICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICB9Ci0gICAgIHhmODZQcmludERlcHRoQnBwKHBTY3JuKTsKLSsgICAgaWYgKCFtcy0+ZHJtbW9kZS5rYnBwKQotKyAgICAgICAgbXMtPmRybW1vZGUua2JwcCA9IHBTY3JuLT5iaXRzUGVyUGl4ZWw7Ci0gCi0gICAgIC8qIFByb2Nlc3MgdGhlIG9wdGlvbnMgKi8KLSAgICAgeGY4NkNvbGxlY3RPcHRpb25zKHBTY3JuLCBOVUxMKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9DVkUtMjAxOC0xNDY2NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTgtMTQ2NjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y2MjM1YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvQ1ZFLTIwMTgtMTQ2NjUucGF0Y2gKQEAgLTAsMCArMSw2MiBAQAorSW5jb3JyZWN0IGNvbW1hbmQtbGluZSBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBpbiB0aGUgWG9yZyBYIHNlcnZlciBjYW4gbGVhZCB0bworcHJpdmlsZWdlIGVsZXZhdGlvbiBhbmQvb3IgYXJiaXRyYXJ5IGZpbGVzIG92ZXJ3cml0ZSwgd2hlbiB0aGUgWCBzZXJ2ZXIgaXMKK3J1bm5pbmcgd2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzIChpZSB3aGVuIFhvcmcgaXMgaW5zdGFsbGVkIHdpdGggdGhlIHNldHVpZCBiaXQKK3NldCBhbmQgc3RhcnRlZCBieSBhIG5vbi1yb290IHVzZXIpLiBUaGUgLW1vZHVsZXBhdGggYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8KK3NwZWNpZnkgYW4gaW5zZWN1cmUgcGF0aCB0byBtb2R1bGVzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGxvYWRlZCBpbiB0aGUgWCBzZXJ2ZXIsCithbGxvd2luZyB0byBleGVjdXRlIHVucHJpdmlsZWdlZCBjb2RlIGluIHRoZSBwcml2aWxlZ2VkIHByb2Nlc3MuIFRoZSAtbG9nZmlsZQorYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gb3ZlcndyaXRlIGFyYml0cmFyeSBmaWxlcyBpbiB0aGUgZmlsZSBzeXN0ZW0sIGR1ZSB0bworaW5jb3JyZWN0IGNoZWNrcyBpbiB0aGUgcGFyc2luZyBvZiB0aGUgb3B0aW9uLgorCitDVkU6IENWRS0yMDE4LTE0NjY1CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDUwYzBjZjg4NWE2ZTkxYzBlYTcxZmI0OWZhOGYxYjdjODZmZTMzMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aGlldSBIZXJyYiA8bWF0dGhpZXVAaGVycmIuZXU+CitEYXRlOiBUdWUsIDIzIE9jdCAyMDE4IDIxOjI5OjA4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgLWxvZ2ZpbGUgYW5kIC1tb2R1bGVwYXRoIHdoZW4gcnVubmluZyB3aXRoIGVsZXZhdGVkCisgcHJpdmlsZWdlcworCitDb3VsZCBjYXVzZSBwcml2aWxlZ2UgZWxldmF0aW9uIGFuZC9vciBhcmJpdHJhcnkgZmlsZXMgb3ZlcndyaXRlLCB3aGVuCit0aGUgWCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIGVsZXZhdGVkIHByaXZpbGVnZXMgKGllIHdoZW4gWG9yZyBpcworaW5zdGFsbGVkIHdpdGggdGhlIHNldHVpZCBiaXQgc2V0IGFuZCBzdGFydGVkIGJ5IGEgbm9uLXJvb3QgdXNlcikuCisKK0NWRS0yMDE4LTE0NjY1CisKK0lzc3VlIHJlcG9ydGVkIGJ5IE5hcmVuZHJhIFNoaW5kZSBhbmQgUmVkIEhhdC4KKworU2lnbmVkLW9mZi1ieTogTWF0dGhpZXUgSGVycmIgPG1hdHRoaWV1QGhlcnJiLmV1PgorUmV2aWV3ZWQtYnk6IEFsYW4gQ29vcGVyc21pdGggPGFsYW4uY29vcGVyc21pdGhAb3JhY2xlLmNvbT4KK1Jldmlld2VkLWJ5OiBQZXRlciBIdXR0ZXJlciA8cGV0ZXIuaHV0dGVyZXJAd2hvLXQubmV0PgorUmV2aWV3ZWQtYnk6IEFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgorLS0tCisgaHcveGZyZWU4Ni9jb21tb24veGY4NkluaXQuYyB8IDggKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9jb21tb24veGY4NkluaXQuYyBiL2h3L3hmcmVlODYvY29tbW9uL3hmODZJbml0LmMKK2luZGV4IDZjMjVlZGE3My4uMGY1N2VmYTg2IDEwMDY0NAorLS0tIGEvaHcveGZyZWU4Ni9jb21tb24veGY4NkluaXQuYworKysrIGIvaHcveGZyZWU4Ni9jb21tb24veGY4NkluaXQuYworQEAgLTkzNSwxNCArOTM1LDE4IEBAIGRkeFByb2Nlc3NBcmd1bWVudChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGludCBpKQorICAgICAvKiBGaXJzdCB0aGUgb3B0aW9ucyB0aGF0IGFyZSBub3QgYWxsb3dlZCB3aXRoIGVsZXZhdGVkIHByaXZpbGVnZXMgKi8KKyAgICAgaWYgKCFzdHJjbXAoYXJndltpXSwgIi1tb2R1bGVwYXRoIikpIHsKKyAgICAgICAgIENIRUNLX0ZPUl9SRVFVSVJFRF9BUkdVTUVOVCgpOworLSAgICAgICAgeGY4NkNoZWNrUHJpdnMoYXJndltpXSwgYXJndltpICsgMV0pOworKyAgICAgICAgaWYgKHhmODZQcml2c0VsZXZhdGVkKCkpCisrICAgICAgICAgICAgICBGYXRhbEVycm9yKCJcbkludmFsaWQgYXJndW1lbnQgLW1vZHVsZXBhdGggIgorKyAgICAgICAgICAgICAgICAid2l0aCBlbGV2YXRlZCBwcml2aWxlZ2VzXG4iKTsKKyAgICAgICAgIHhmODZNb2R1bGVQYXRoID0gYXJndltpICsgMV07CisgICAgICAgICB4Zjg2TW9kUGF0aEZyb20gPSBYX0NNRExJTkU7CisgICAgICAgICByZXR1cm4gMjsKKyAgICAgfQorICAgICBpZiAoIXN0cmNtcChhcmd2W2ldLCAiLWxvZ2ZpbGUiKSkgeworICAgICAgICAgQ0hFQ0tfRk9SX1JFUVVJUkVEX0FSR1VNRU5UKCk7CistICAgICAgICB4Zjg2Q2hlY2tQcml2cyhhcmd2W2ldLCBhcmd2W2kgKyAxXSk7CisrICAgICAgICBpZiAoeGY4NlByaXZzRWxldmF0ZWQoKSkKKysgICAgICAgICAgICAgIEZhdGFsRXJyb3IoIlxuSW52YWxpZCBhcmd1bWVudCAtbG9nZmlsZSAiCisrICAgICAgICAgICAgICAgICJ3aXRoIGVsZXZhdGVkIHByaXZpbGVnZXNcbiIpOworICAgICAgICAgeGY4NkxvZ0ZpbGUgPSBhcmd2W2kgKyAxXTsKKyAgICAgICAgIHhmODZMb2dGaWxlRnJvbSA9IFhfQ01ETElORTsKKyAgICAgICAgIHJldHVybiAyOworLS0gCisyLjE4LjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL21hY3JvX3R3ZWFrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzZlNGU3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvbWFjcm9fdHdlYWsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1UaGlzIGlzIHRoZSByZXZpc2VkIHZlcnNpb24gb2YgZmlsZXMvbWFjcm9fdHdlYWsucGF0Y2ggZm9yCi14b3JnLXNlcnZlciAxLjguOTkuOTA0IGFuZCBuZXdlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFl1IEtlIDxrZS55dUBpbnRlbC5jb20+Ci0KLUluZGV4OiB4b3JnLXNlcnZlci0xLjE5LjYveG9yZy1zZXJ2ZXIubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB4b3JnLXNlcnZlci0xLjE5LjYub3JpZy94b3JnLXNlcnZlci5tNAotKysrIHhvcmctc2VydmVyLTEuMTkuNi94b3JnLXNlcnZlci5tNAotQEAgLTI4LDEwICsyOCwxMiBAQCBkbmwKLSAjIENoZWNrcyBmb3IgdGhlIE1BQ1JPIGRlZmluZSBpbiB4b3JnLXNlcnZlci5oIChmcm9tIHRoZSBzZGspLiAgSWYgaXQKLSAjIGlzIGRlZmluZWQsIHRoZW4gYWRkIHRoZSBnaXZlbiBQUk9UTyB0byAkUkVRVUlSRURfTU9EVUxFUy4KLSAKLSttNF9wYXR0ZXJuX2FsbG93KFBLR19DT05GSUdfU1lTUk9PVF9ESVIpCi0rCi0gQUNfREVGVU4oW1hPUkdfRFJJVkVSX0NIRUNLX0VYVF0sWwotIAlBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAJU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0tCUNGTEFHUz0iJENGTEFHUyAtSWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXNka2RpciB4b3JnLXNlcnZlcmAiCi0rCUNGTEFHUz0iJENGTEFHUyAtSSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9c2RrZGlyIHhvcmctc2VydmVyYCIKLSAJQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotICNpbmNsdWRlICJ4b3JnLXNlcnZlci5oIgotICNpZiAhZGVmaW5lZCAkMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnL3BrZ2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWY5ZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy9wa2djb25maWcucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvbWVyZ2VfcmVxdWVzdHMvMjJdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIDVmNjVhNjI0NmZlNzUyNzY0MDQ1ZGQxZTM4OTEyZjFkY2NlYzcxZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVGh1LCAyMCBTZXAgMjAxOCAyMDoxMjoyNCArMDEwMAorU3ViamVjdDogW1BBVENIXSB4b3JnLXNlcnZlci5tNDoganVzdCBhbGwgY2ZsYWdzIGluc3RlYWQgb2YganVzdCBzZGtkaXIKKworSW5zdGVhZCBvZiBmZXRjaGluZyBqdXN0IHRoZSBzZGtkaXIgdmFyaWFibGUgb2YgeG9yZy1zZXJ2ZXIgdXNpbmcgcGtnLWNvbmZpZywKK3NpbXBseSBnZXQgYWxsIG9mIHRoZSBDRkxBR1MuICBBc2lkZSBmcm9tIGNvbXBsZXRlbmVzcywgdGhpcyBoZWxwcyBidWlsZHMgaW4KK3N5c3Jvb3RzIGFzIHBrZy1jb25maWcga25vd3Mgd2hhdCB0byBkbyB3aXRoIC0tY2ZsYWdzIGJ1dCBkb2Vzbid0IHJlbWFwCithcmJpdHJhcnkgdmFyaWFibGVzLgorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorLS0tCisgeG9yZy1zZXJ2ZXIubTQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS94b3JnLXNlcnZlci5tNCBiL3hvcmctc2VydmVyLm00CitpbmRleCAxODI1NWI5MWEuLjE5NWJkYTVkOCAxMDA2NDQKKy0tLSBhL3hvcmctc2VydmVyLm00CisrKysgYi94b3JnLXNlcnZlci5tNAorQEAgLTMxLDcgKzMxLDcgQEAgZG5sCisgQUNfREVGVU4oW1hPUkdfRFJJVkVSX0NIRUNLX0VYVF0sWworIAlBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKyAJU0FWRV9DRkxBR1M9IiRDRkxBR1MiCistCUNGTEFHUz0iJENGTEFHUyAtSWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXNka2RpciB4b3JnLXNlcnZlcmAiCisrCUNGTEFHUz0iJENGTEFHUyBgJFBLR19DT05GSUcgLS1jZmxhZ3MgeG9yZy1zZXJ2ZXJgIgorIAlBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgI2luY2x1ZGUgInhvcmctc2VydmVyLmgiCisgI2lmICFkZWZpbmVkICQxCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZThhOTU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4xOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS14Zjg2cGNpQnVzLmMtdXNlLUludGVsLWRkeC1vbmx5LWZvci1wcmUtZ2VuNC1oYXJkd2FyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZy1maXgtTlVMTC12YWx1ZS1kZXRlY3Rpb24tZm9yLUlEX0lOUFVULWJlaW5nLXUucGF0Y2ggXAotICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjNlNDc3NzdmZjAzNGEzMzFhZWQyMzIyYjA3ODY5NGE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3MzI1MDJmMWRiMDAwY2YzNmEzNzZjZDBjMDEwZmZkYmYzMmVjZGQ3ZjFmYTA4YmE3ZjViZGY5NjAxY2MxOTciCi0KLSMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KLSMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCi0KLVJSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZkMmU4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK3JlcXVpcmUgeHNlcnZlci14b3JnLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNDY2NS5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTUyNTg0NmQxZDBhZjU3MzJiYTgzNWYyZTJlYzA2NmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTljOTlmZTg2ZmU3NWI4MTY0YzY1NjdiZmM2ZTk4MmFlY2MyZTRhNTFlNmZiYWMxYjg0MmQ1ZDAwNTQ5ZTkxOCIKKworIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgorIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KKworUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKaW5kZXggNjA1MjY1MC4uZWQ0MzI3ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS45LmJiCkBAIC0xMSw2ICsxMSw5IEBACiBmaWxlOi8vMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoIFwKIGZpbGU6Ly8wMDAxLWlvY3RsLmMtRml4LWJ1aWxkLXdpdGgtbGludXgtNC4xMy5wYXRjaCBcCiBmaWxlOi8vMDAwMS1pb2N0bC5jLUZpeC1idWlsZC13aXRoLWxpbnV4LTQuMTcucGF0Y2ggXAorZmlsZTovLzAwMDEtcmVmYWN0b3Jpbmctc3BsaXQtYmlnLWZ1bmN0aW9uLXRvLXNpbXBsaWZ5LW1haW50YWluYS5wYXRjaCBcCitmaWxlOi8vMDAwMi1yZWZhY3RvcmluZy1yZWxvY2F0ZS1jb2RlLXRvLXNpbXBsaWZ5LWxhdGVyLXBhdGNoZXMucGF0Y2ggXAorZmlsZTovLzAwMDMtY29udmVydC10by1uZXctQUVBRC1pbnRlcmZhY2UtaW4ta2VybmVscy12NC4yLnBhdGNoIFwKICIKIAogRVhUUkFfT0VNQUtFPSdLRVJORUxfRElSPSIke1NUQUdJTkdfS0VSTkVMX0RJUn0iIFBSRUZJWD0iJHtEfSInCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIKaW5kZXggOWFmYjNkZS4uNjE3ZGI2YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS45LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LXRlc3RzXzEuOS5iYgpAQCAtMiwxMCArMiwxMSBAQAogCiBTVU1NQVJZID0gIkEgdGVzdCBzdWl0ZSBmb3IgL2Rldi9jcnlwdG8gZGV2aWNlIGRyaXZlciIKIAotREVQRU5EUyArPSAib3BlbnNzbDEwIgorREVQRU5EUyArPSAib3BlbnNzbCIKIAogU1JDX1VSSSArPSAiIFwKIGZpbGU6Ly8wMDAxLUFkZC10aGUtY29tcGlsZS1hbmQtaW5zdGFsbC1ydWxlcy1mb3ItY3J5cHRvZGV2LXRlc3QucGF0Y2ggXAorZmlsZTovLzAwMDEtUG9ydC10ZXN0cy10by1vcGVuc3NsLTEuMS5wYXRjaCBcCiAiCiAKIEVYVFJBX09FTUFLRT0nS0VSTkVMX0RJUj0iJHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IiBQUkVGSVg9IiR7RH0iJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLVBvcnQtdGVzdHMtdG8tb3BlbnNzbC0xLjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtUG9ydC10ZXN0cy10by1vcGVuc3NsLTEuMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY5MTI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLVBvcnQtdGVzdHMtdG8tb3BlbnNzbC0xLjEucGF0Y2gKQEAgLTAsMCArMSwxMDMgQEAKK0Zyb20gMmZlNGJkZWI4Y2RkMGIwZjQ2ZDljYWVkODA3ODEyODU1ZDUxZWE1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBNYXIgMjAxOCAyMDoxMTowNSArMDMwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IHRlc3RzIHRvIG9wZW5zc2wgMS4xCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4L3B1bGwvMzZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgdGVzdHMvb3BlbnNzbF93cmFwcGVyLmMgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvb3BlbnNzbF93cmFwcGVyLmMgYi90ZXN0cy9vcGVuc3NsX3dyYXBwZXIuYworaW5kZXggMDM4YzU4Zi4uZGVhMjQ5NiAxMDA2NDQKKy0tLSBhL3Rlc3RzL29wZW5zc2xfd3JhcHBlci5jCisrKysgYi90ZXN0cy9vcGVuc3NsX3dyYXBwZXIuYworQEAgLTQsNiArNCw3IEBACisgI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgorKyNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+CisgCisgLy8jZGVmaW5lIERFQlVHCisgCitAQCAtMjMsMTAgKzI0LDE3IEBAIGVudW0gY3R4X3R5cGUgeworIAljdHhfdHlwZV9tZCwKKyB9OworIAorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAxMDAwMDBMCisrdW5pb24gb3BlbnNzbF9jdHggeworKwlITUFDX0NUWCAqaG1hYzsKKysJRVZQX01EX0NUWCAqbWQ7CisrfTsKKysjZWxzZQorIHVuaW9uIG9wZW5zc2xfY3R4IHsKKyAJSE1BQ19DVFggaG1hYzsKKyAJRVZQX01EX0NUWCBtZDsKKyB9OworKyNlbmRpZgorIAorIHN0cnVjdCBjdHhfbWFwcGluZyB7CisgCV9fdTMyIHNlczsKK0BAIC02Myw2ICs3MSwxNiBAQCBzdGF0aWMgdm9pZCByZW1vdmVfbWFwcGluZyhfX3UzMiBzZXMpCisgCXN3aXRjaCAobWFwcGluZy0+dHlwZSkgeworIAljYXNlIGN0eF90eXBlX25vbmU6CisgCQlicmVhazsKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTAorKwljYXNlIGN0eF90eXBlX2htYWM6CisrCQlkYmdwKCIlczogY2FsbGluZyBITUFDX0NUWF9mcmVlXG4iLCBfX2Z1bmNfXyk7CisrCQlITUFDX0NUWF9mcmVlKG1hcHBpbmctPmN0eC5obWFjKTsKKysJCWJyZWFrOworKwljYXNlIGN0eF90eXBlX21kOgorKwkJZGJncCgiJXM6IGNhbGxpbmcgRVZQX01EX0NUWF9mcmVlXG4iLCBfX2Z1bmNfXyk7CisrCQlFVlBfTURfQ1RYX2ZyZWUobWFwcGluZy0+Y3R4Lm1kKTsKKysJCWJyZWFrOworKyNlbHNlCisgCWNhc2UgY3R4X3R5cGVfaG1hYzoKKyAJCWRiZ3AoIiVzOiBjYWxsaW5nIEhNQUNfQ1RYX2NsZWFudXBcbiIsIF9fZnVuY19fKTsKKyAJCUhNQUNfQ1RYX2NsZWFudXAoJm1hcHBpbmctPmN0eC5obWFjKTsKK0BAIC03MSw2ICs4OSw3IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9tYXBwaW5nKF9fdTMyIHNlcykKKyAJCWRiZ3AoIiVzOiBjYWxsaW5nIEVWUF9NRF9DVFhfY2xlYW51cFxuIiwgX19mdW5jX18pOworIAkJRVZQX01EX0NUWF9jbGVhbnVwKCZtYXBwaW5nLT5jdHgubWQpOworIAkJYnJlYWs7CisrI2VuZGlmCisgCX0KKyAJbWVtc2V0KG1hcHBpbmcsIDAsIHNpemVvZigqbWFwcGluZykpOworIH0KK0BAIC0xMjcsMTAgKzE0NiwxNyBAQCBzdGF0aWMgaW50IG9wZW5zc2xfaG1hYyhzdHJ1Y3Qgc2Vzc2lvbl9vcCAqc2Vzcywgc3RydWN0IGNyeXB0X29wICpjb3ApCisgCisgCQltYXBwaW5nLT5zZXMgPSBzZXNzLT5zZXM7CisgCQltYXBwaW5nLT50eXBlID0gY3R4X3R5cGVfaG1hYzsKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTAorKwkJY3R4ID0gbWFwcGluZy0+Y3R4LmhtYWM7CisrCisrCQlkYmdwKCJjYWxsaW5nIEhNQUNfQ1RYX25ldyIpOworKwkJY3R4ID0gSE1BQ19DVFhfbmV3KCk7CisrI2Vsc2UKKyAJCWN0eCA9ICZtYXBwaW5nLT5jdHguaG1hYzsKKyAKKyAJCWRiZ3AoImNhbGxpbmcgSE1BQ19DVFhfaW5pdCIpOworIAkJSE1BQ19DVFhfaW5pdChjdHgpOworKyNlbmRpZgorIAkJZGJncCgiY2FsbGluZyBITUFDX0luaXRfZXgiKTsKKyAJCWlmICghSE1BQ19Jbml0X2V4KGN0eCwgc2Vzcy0+bWFja2V5LCBzZXNzLT5tYWNrZXlsZW4sCisgCQkJCXNlc3NfdG9fZXZwX21kKHNlc3MpLCBOVUxMKSkgeworQEAgLTE3MiwxMCArMTk4LDE3IEBAIHN0YXRpYyBpbnQgb3BlbnNzbF9tZChzdHJ1Y3Qgc2Vzc2lvbl9vcCAqc2Vzcywgc3RydWN0IGNyeXB0X29wICpjb3ApCisgCisgCQltYXBwaW5nLT5zZXMgPSBzZXNzLT5zZXM7CisgCQltYXBwaW5nLT50eXBlID0gY3R4X3R5cGVfbWQ7CisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMDAwMEwKKysJCWN0eCA9IG1hcHBpbmctPmN0eC5tZDsKKysKKysJCWRiZ3AoImNhbGxpbmcgRVZQX01EX0NUWF9uZXciKTsKKysJCWN0eCA9IEVWUF9NRF9DVFhfbmV3KCk7CisrI2Vsc2UKKyAJCWN0eCA9ICZtYXBwaW5nLT5jdHgubWQ7CisgCisgCQlkYmdwKCJjYWxsaW5nIEVWUF9NRF9DVFhfaW5pdCIpOworIAkJRVZQX01EX0NUWF9pbml0KGN0eCk7CisrI2VuZGlmCisgCQlkYmdwKCJjYWxsaW5nIEVWUF9EaWdlc3RJbml0Iik7CisgCQlFVlBfRGlnZXN0SW5pdChjdHgsIHNlc3NfdG9fZXZwX21kKHNlc3MpKTsKKyAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLXJlZmFjdG9yaW5nLXNwbGl0LWJpZy1mdW5jdGlvbi10by1zaW1wbGlmeS1tYWludGFpbmEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtcmVmYWN0b3Jpbmctc3BsaXQtYmlnLWZ1bmN0aW9uLXRvLXNpbXBsaWZ5LW1haW50YWluYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTU3YjVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLXJlZmFjdG9yaW5nLXNwbGl0LWJpZy1mdW5jdGlvbi10by1zaW1wbGlmeS1tYWludGFpbmEucGF0Y2gKQEAgLTAsMCArMSwyNTAgQEAKK0Zyb20gMjBkY2YwNzFiYzMwNzZlZTdkYjlkNjAzY2ZiZTZhMDZlODZjN2Q1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+CitEYXRlOiBUaHUsIDQgTWF5IDIwMTcgMTU6MDY6MjAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIHJlZmFjdG9yaW5nOiBzcGxpdCBiaWcgZnVuY3Rpb24gdG8gc2ltcGxpZnkgbWFpbnRhaW5hbmNlCisKK1RoZSBzZXR1cCBvZiBhdXRoX2J1ZiBpbiB0bHMgYW5kIGFlYWQgaXMgbm93IGR1cGxpY2F0ZWQgYnV0IHRoaXMKK2lzIHRlbXBvcmFyeSBhbmQgYWxsb3dzIG5lY2Vzc2FyeSBjb3JyZWN0aW9ucyBmb3IgdGhlIGFlYWQgY2FzZQord2l0aCB2NC4yKyBrZXJuZWxzLgorCitTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0NvbW1pdCBJRDogMjBkY2YwNzFiYzMwNzZlZTdkYjlkNjAzYworCitTaWduZWQtb2ZmLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0aGVuYy5jIHwgMTk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2F1dGhlbmMuYyBiL2F1dGhlbmMuYworaW5kZXggMWJkNzM3Ny4uMjhlYjBmOSAxMDA2NDQKKy0tLSBhL2F1dGhlbmMuYworKysrIGIvYXV0aGVuYy5jCitAQCAtNjA5LDk2ICs2MDksMTUxIEBAIGF1dGhfbl9jcnlwdChzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0aF9vcCAqa2Nhb3AsCisgCXJldHVybiAwOworIH0KKyAKKy0vKiBUaGlzIGlzIHRoZSBtYWluIGNyeXB0byBmdW5jdGlvbiAtIHplcm8tY29weSBlZGl0aW9uICovCistc3RhdGljIGludAorLV9fY3J5cHRvX2F1dGhfcnVuX3pjKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXRoX29wICprY2FvcCkKKytzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX3NydHAoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dGhfb3AgKmtjYW9wKQorIHsKKy0Jc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3Rfc2csICphdXRoX3NnLCAqc3JjX3NnOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdF9zZywgKmF1dGhfc2c7CisgCXN0cnVjdCBjcnlwdF9hdXRoX29wICpjYW9wID0gJmtjYW9wLT5jYW9wOworLQlpbnQgcmV0ID0gMDsKKysJaW50IHJldDsKKyAKKy0JaWYgKGNhb3AtPmZsYWdzICYgQ09QX0ZMQUdfQUVBRF9TUlRQX1RZUEUpIHsKKy0JCWlmICh1bmxpa2VseShzZXNfcHRyLT5jZGF0YS5pbml0ICE9IDAgJiYKKy0JCSAgICAgICAgICAgICAoc2VzX3B0ci0+Y2RhdGEuc3RyZWFtID09IDAgfHwKKy0JCQkgICAgICBzZXNfcHRyLT5jZGF0YS5hZWFkICE9IDApKSkgeworLQkJCWRlcnIoMCwgIk9ubHkgc3RyZWFtIG1vZGVzIGFyZSBhbGxvd2VkIGluIFNSVFAgbW9kZSAoYnV0IG5vdCBBRUFEKSIpOworLQkJCXJldHVybiAtRUlOVkFMOworLQkJfQorKwlpZiAodW5saWtlbHkoc2VzX3B0ci0+Y2RhdGEuaW5pdCAhPSAwICYmCisrCQkoc2VzX3B0ci0+Y2RhdGEuc3RyZWFtID09IDAgfHwgc2VzX3B0ci0+Y2RhdGEuYWVhZCAhPSAwKSkpIHsKKysJCWRlcnIoMCwgIk9ubHkgc3RyZWFtIG1vZGVzIGFyZSBhbGxvd2VkIGluIFNSVFAgbW9kZSAoYnV0IG5vdCBBRUFEKSIpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKyAKKy0JCXJldCA9IGdldF91c2VyYnVmX3NydHAoc2VzX3B0ciwga2Nhb3AsICZhdXRoX3NnLCAmZHN0X3NnKTsKKy0JCWlmICh1bmxpa2VseShyZXQpKSB7CistCQkJZGVycigxLCAiZ2V0X3VzZXJidWZfc3J0cCgpOiBFcnJvciBnZXR0aW5nIHVzZXIgcGFnZXMuIik7CistCQkJcmV0dXJuIHJldDsKKy0JCX0KKysJcmV0ID0gZ2V0X3VzZXJidWZfc3J0cChzZXNfcHRyLCBrY2FvcCwgJmF1dGhfc2csICZkc3Rfc2cpOworKwlpZiAodW5saWtlbHkocmV0KSkgeworKwkJZGVycigxLCAiZ2V0X3VzZXJidWZfc3J0cCgpOiBFcnJvciBnZXR0aW5nIHVzZXIgcGFnZXMuIik7CisrCQlyZXR1cm4gcmV0OworKwl9CisgCistCQlyZXQgPSBzcnRwX2F1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCistCQkJICAgZHN0X3NnLCBjYW9wLT5sZW4pOworKwlyZXQgPSBzcnRwX2F1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCisrCQkJZHN0X3NnLCBjYW9wLT5sZW4pOworIAorLQkJcmVsZWFzZV91c2VyX3BhZ2VzKHNlc19wdHIpOworLQl9IGVsc2UgeyAvKiBUTFMgYW5kIG5vcm1hbCBjYXNlcy4gSGVyZSBhdXRoIGRhdGEgYXJlIHVzdWFsbHkgc21hbGwKKy0JICAgICAgICAgICogc28gd2UganVzdCBjb3B5IHRoZW0gdG8gYSBmcmVlIHBhZ2UsIGluc3RlYWQgb2YgdHJ5aW5nCistCSAgICAgICAgICAqIHRvIG1hcCB0aGVtLgorLQkgICAgICAgICAgKi8KKy0JCXVuc2lnbmVkIGNoYXIgKmF1dGhfYnVmID0gTlVMTDsKKy0JCXN0cnVjdCBzY2F0dGVybGlzdCB0bXA7CisrCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKyAKKy0JCWlmICh1bmxpa2VseShjYW9wLT5hdXRoX2xlbiA+IFBBR0VfU0laRSkpIHsKKy0JCQlkZXJyKDEsICJhdXRoIGRhdGEgbGVuIGlzIGV4Y2Vzc2l2ZS4iKTsKKy0JCQlyZXR1cm4gLUVJTlZBTDsKKy0JCX0KKysJcmV0dXJuIHJldDsKKyt9CisgCistCQlhdXRoX2J1ZiA9IChjaGFyICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOworLQkJaWYgKHVubGlrZWx5KCFhdXRoX2J1ZikpIHsKKy0JCQlkZXJyKDEsICJ1bmFibGUgdG8gZ2V0IGEgZnJlZSBwYWdlLiIpOworLQkJCXJldHVybiAtRU5PTUVNOworLQkJfQorK3N0YXRpYyBpbnQgY3J5cHRvX2F1dGhfemNfdGxzKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXRoX29wICprY2FvcCkKKyt7CisrCXN0cnVjdCBjcnlwdF9hdXRoX29wICpjYW9wID0gJmtjYW9wLT5jYW9wOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdF9zZywgKmF1dGhfc2c7CisrCXVuc2lnbmVkIGNoYXIgKmF1dGhfYnVmID0gTlVMTDsKKysJc3RydWN0IHNjYXR0ZXJsaXN0IHRtcDsKKysJaW50IHJldDsKKyAKKy0JCWlmIChjYW9wLT5hdXRoX3NyYyAmJiBjYW9wLT5hdXRoX2xlbiA+IDApIHsKKy0JCQlpZiAodW5saWtlbHkoY29weV9mcm9tX3VzZXIoYXV0aF9idWYsIGNhb3AtPmF1dGhfc3JjLCBjYW9wLT5hdXRoX2xlbikpKSB7CistCQkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKKy0JCQkJcmV0ID0gLUVGQVVMVDsKKy0JCQkJZ290byBmcmVlX2F1dGhfYnVmOworLQkJCX0KKysJaWYgKHVubGlrZWx5KHNlc19wdHItPmNkYXRhLmFlYWQgIT0gMCkpIHsKKysJCXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCWlmICh1bmxpa2VseShjYW9wLT5hdXRoX2xlbiA+IFBBR0VfU0laRSkpIHsKKysJCWRlcnIoMSwgImF1dGggZGF0YSBsZW4gaXMgZXhjZXNzaXZlLiIpOworKwkJcmV0dXJuIC1FSU5WQUw7CisrCX0KKysKKysJYXV0aF9idWYgPSAoY2hhciAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKKysJaWYgKHVubGlrZWx5KCFhdXRoX2J1ZikpIHsKKysJCWRlcnIoMSwgInVuYWJsZSB0byBnZXQgYSBmcmVlIHBhZ2UuIik7CisrCQlyZXR1cm4gLUVOT01FTTsKKysJfQorIAorLQkJCXNnX2luaXRfb25lKCZ0bXAsIGF1dGhfYnVmLCBjYW9wLT5hdXRoX2xlbik7CistCQkJYXV0aF9zZyA9ICZ0bXA7CistCQl9IGVsc2UgeworLQkJCWF1dGhfc2cgPSBOVUxMOworKwlpZiAoY2FvcC0+YXV0aF9zcmMgJiYgY2FvcC0+YXV0aF9sZW4gPiAwKSB7CisrCQlpZiAodW5saWtlbHkoY29weV9mcm9tX3VzZXIoYXV0aF9idWYsIGNhb3AtPmF1dGhfc3JjLCBjYW9wLT5hdXRoX2xlbikpKSB7CisrCQkJZGVycigxLCAidW5hYmxlIHRvIGNvcHkgYXV0aCBkYXRhIGZyb20gdXNlcnNwYWNlLiIpOworKwkJCXJldCA9IC1FRkFVTFQ7CisrCQkJZ290byBmcmVlX2F1dGhfYnVmOworIAkJfQorIAorLQkJaWYgKGNhb3AtPmZsYWdzICYgQ09QX0ZMQUdfQUVBRF9UTFNfVFlQRSAmJiBzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApIHsKKy0JCQlyZXQgPSBnZXRfdXNlcmJ1Zl90bHMoc2VzX3B0ciwga2Nhb3AsICZkc3Rfc2cpOworLQkJCWlmICh1bmxpa2VseShyZXQpKSB7CistCQkJCWRlcnIoMSwgImdldF91c2VyYnVmX3RscygpOiBFcnJvciBnZXR0aW5nIHVzZXIgcGFnZXMuIik7CistCQkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKy0JCQl9CisrCQlzZ19pbml0X29uZSgmdG1wLCBhdXRoX2J1ZiwgY2FvcC0+YXV0aF9sZW4pOworKwkJYXV0aF9zZyA9ICZ0bXA7CisrCX0gZWxzZSB7CisrCQlhdXRoX3NnID0gTlVMTDsKKysJfQorIAorLQkJCXJldCA9IHRsc19hdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIGF1dGhfc2csIGNhb3AtPmF1dGhfbGVuLAorLQkJCQkgICBkc3Rfc2csIGNhb3AtPmxlbik7CistCQl9IGVsc2UgeworLQkJCWlmICh1bmxpa2VseShzZXNfcHRyLT5jZGF0YS5pbml0ID09IDAgfHwKKy0JCQkgICAgICAgICAgICAgKHNlc19wdHItPmNkYXRhLnN0cmVhbSA9PSAwICYmCistCQkJCSAgICAgIHNlc19wdHItPmNkYXRhLmFlYWQgPT0gMCkpKSB7CistCQkJCWRlcnIoMCwgIk9ubHkgc3RyZWFtIGFuZCBBRUFEIGNpcGhlcnMgYXJlIGFsbG93ZWQgZm9yIGF1dGhlbmMiKTsKKy0JCQkJcmV0ID0gLUVJTlZBTDsKKy0JCQkJZ290byBmcmVlX2F1dGhfYnVmOworLQkJCX0KKysJcmV0ID0gZ2V0X3VzZXJidWZfdGxzKHNlc19wdHIsIGtjYW9wLCAmZHN0X3NnKTsKKysJaWYgKHVubGlrZWx5KHJldCkpIHsKKysJCWRlcnIoMSwgImdldF91c2VyYnVmX3RscygpOiBFcnJvciBnZXR0aW5nIHVzZXIgcGFnZXMuIik7CisrCQlnb3RvIGZyZWVfYXV0aF9idWY7CisrCX0KKyAKKy0JCQlyZXQgPSBnZXRfdXNlcmJ1ZihzZXNfcHRyLCBjYW9wLT5zcmMsIGNhb3AtPmxlbiwgY2FvcC0+ZHN0LCBrY2FvcC0+ZHN0X2xlbiwKKy0JCQkJCSAga2Nhb3AtPnRhc2ssIGtjYW9wLT5tbSwgJnNyY19zZywgJmRzdF9zZyk7CistCQkJaWYgKHVubGlrZWx5KHJldCkpIHsKKy0JCQkJZGVycigxLCAiZ2V0X3VzZXJidWYoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworLQkJCQlnb3RvIGZyZWVfYXV0aF9idWY7CistCQkJfQorKwlyZXQgPSB0bHNfYXV0aF9uX2NyeXB0KHNlc19wdHIsIGtjYW9wLCBhdXRoX3NnLCBjYW9wLT5hdXRoX2xlbiwKKysJCQlkc3Rfc2csIGNhb3AtPmxlbik7CisrCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKysKKytmcmVlX2F1dGhfYnVmOgorKwlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpYXV0aF9idWYpOworKwlyZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX2FlYWQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dGhfb3AgKmtjYW9wKQorK3sKKysJc3RydWN0IHNjYXR0ZXJsaXN0ICpkc3Rfc2csICphdXRoX3NnLCAqc3JjX3NnOworKwlzdHJ1Y3QgY3J5cHRfYXV0aF9vcCAqY2FvcCA9ICZrY2FvcC0+Y2FvcDsKKysJdW5zaWduZWQgY2hhciAqYXV0aF9idWYgPSBOVUxMOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgdG1wOworKwlpbnQgcmV0OworIAorLQkJCXJldCA9IGF1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCistCQkJCQkgICBzcmNfc2csIGRzdF9zZywgY2FvcC0+bGVuKTsKKysJaWYgKHVubGlrZWx5KHNlc19wdHItPmNkYXRhLmluaXQgPT0gMCB8fAorKwkJKHNlc19wdHItPmNkYXRhLnN0cmVhbSA9PSAwICYmIHNlc19wdHItPmNkYXRhLmFlYWQgPT0gMCkpKSB7CisrCQlkZXJyKDAsICJPbmx5IHN0cmVhbSBhbmQgQUVBRCBjaXBoZXJzIGFyZSBhbGxvd2VkIGZvciBhdXRoZW5jIik7CisrCQlyZXR1cm4gLUVJTlZBTDsKKysJfQorKworKwlpZiAodW5saWtlbHkoY2FvcC0+YXV0aF9sZW4gPiBQQUdFX1NJWkUpKSB7CisrCQlkZXJyKDEsICJhdXRoIGRhdGEgbGVuIGlzIGV4Y2Vzc2l2ZS4iKTsKKysJCXJldHVybiAtRUlOVkFMOworKwl9CisrCisrCWF1dGhfYnVmID0gKGNoYXIgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CisrCWlmICh1bmxpa2VseSghYXV0aF9idWYpKSB7CisrCQlkZXJyKDEsICJ1bmFibGUgdG8gZ2V0IGEgZnJlZSBwYWdlLiIpOworKwkJcmV0dXJuIC1FTk9NRU07CisrCX0KKysKKysJaWYgKGNhb3AtPmF1dGhfc3JjICYmIGNhb3AtPmF1dGhfbGVuID4gMCkgeworKwkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworKwkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKKysJCQlyZXQgPSAtRUZBVUxUOworKwkJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKyAJCX0KKyAKKy0JCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKysJCXNnX2luaXRfb25lKCZ0bXAsIGF1dGhfYnVmLCBjYW9wLT5hdXRoX2xlbik7CisrCQlhdXRoX3NnID0gJnRtcDsKKysJfSBlbHNlIHsKKysJCWF1dGhfc2cgPSBOVUxMOworKwl9CisrCisrCXJldCA9IGdldF91c2VyYnVmKHNlc19wdHIsIGNhb3AtPnNyYywgY2FvcC0+bGVuLCBjYW9wLT5kc3QsIGtjYW9wLT5kc3RfbGVuLAorKwkJCWtjYW9wLT50YXNrLCBrY2FvcC0+bW0sICZzcmNfc2csICZkc3Rfc2cpOworKwlpZiAodW5saWtlbHkocmV0KSkgeworKwkJZGVycigxLCAiZ2V0X3VzZXJidWYoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworKwkJZ290byBmcmVlX2F1dGhfYnVmOworKwl9CisrCisrCXJldCA9IGF1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCisrCQkJc3JjX3NnLCBkc3Rfc2csIGNhb3AtPmxlbik7CisrCisrCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKyAKKyBmcmVlX2F1dGhfYnVmOgorLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWF1dGhfYnVmKTsKKysJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKWF1dGhfYnVmKTsKKysKKysJcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGludAorK19fY3J5cHRvX2F1dGhfcnVuX3pjKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXRoX29wICprY2FvcCkKKyt7CisrCXN0cnVjdCBjcnlwdF9hdXRoX29wICpjYW9wID0gJmtjYW9wLT5jYW9wOworKwlpbnQgcmV0OworKworKwlpZiAoY2FvcC0+ZmxhZ3MgJiBDT1BfRkxBR19BRUFEX1NSVFBfVFlQRSkgeworKwkJcmV0ID0gY3J5cHRvX2F1dGhfemNfc3J0cChzZXNfcHRyLCBrY2FvcCk7CisrCX0gZWxzZSBpZiAoY2FvcC0+ZmxhZ3MgJiBDT1BfRkxBR19BRUFEX1RMU19UWVBFKSB7CisrCQlyZXQgPSBjcnlwdG9fYXV0aF96Y190bHMoc2VzX3B0ciwga2Nhb3ApOworKwl9IGVsc2UgeworKwkJcmV0ID0gY3J5cHRvX2F1dGhfemNfYWVhZChzZXNfcHRyLCBrY2FvcCk7CisgCX0KKyAKKyAJcmV0dXJuIHJldDsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMi1yZWZhY3RvcmluZy1yZWxvY2F0ZS1jb2RlLXRvLXNpbXBsaWZ5LWxhdGVyLXBhdGNoZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDItcmVmYWN0b3JpbmctcmVsb2NhdGUtY29kZS10by1zaW1wbGlmeS1sYXRlci1wYXRjaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZDkwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDItcmVmYWN0b3JpbmctcmVsb2NhdGUtY29kZS10by1zaW1wbGlmeS1sYXRlci1wYXRjaGVzLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gYzJiZjBlNDJiMWQ5ZmRhNjBjZGU0YTNhNjgyNzg0ZDM0OWVmMWMwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+CitEYXRlOiBUaHUsIDQgTWF5IDIwMTcgMTU6MDY6MjEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHJlZmFjdG9yaW5nOiByZWxvY2F0ZSBjb2RlIHRvIHNpbXBsaWZ5IGxhdGVyIHBhdGNoZXMKKworVGhpcyBjb2RlIG1vdmUgd2lsbCBzaW1wbGlmeSB0aGUgY29udmVyc2lvbiB0byBuZXcgQUVBRCBpbnRlcmZhY2UgaW4KK25leHQgcGF0Y2hlcworCitTaWduZWQtb2ZmLWJ5OiBDcmlzdGlhbiBTdG9pY2EgPGNyaXN0aWFuLnN0b2ljYUBueHAuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK0NvbW1pdCBJRDogYzJiZjBlNDJiMWQ5ZmRhCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+CistLS0KKyBhdXRoZW5jLmMgfCAxNyArKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hdXRoZW5jLmMgYi9hdXRoZW5jLmMKK2luZGV4IDI4ZWIwZjkuLjk1NzI3YjQgMTAwNjQ0CistLS0gYS9hdXRoZW5jLmMKKysrKyBiL2F1dGhlbmMuYworQEAgLTcxMSwxMSArNzExLDE4IEBAIHN0YXRpYyBpbnQgY3J5cHRvX2F1dGhfemNfYWVhZChzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0CisgCQlyZXR1cm4gLUVOT01FTTsKKyAJfQorIAorKwlyZXQgPSBnZXRfdXNlcmJ1ZihzZXNfcHRyLCBjYW9wLT5zcmMsIGNhb3AtPmxlbiwgY2FvcC0+ZHN0LCBrY2FvcC0+ZHN0X2xlbiwKKysJCQlrY2FvcC0+dGFzaywga2Nhb3AtPm1tLCAmc3JjX3NnLCAmZHN0X3NnKTsKKysJaWYgKHVubGlrZWx5KHJldCkpIHsKKysJCWRlcnIoMSwgImdldF91c2VyYnVmKCk6IEVycm9yIGdldHRpbmcgdXNlciBwYWdlcy4iKTsKKysJCWdvdG8gZnJlZV9hdXRoX2J1ZjsKKysJfQorKworIAlpZiAoY2FvcC0+YXV0aF9zcmMgJiYgY2FvcC0+YXV0aF9sZW4gPiAwKSB7CisgCQlpZiAodW5saWtlbHkoY29weV9mcm9tX3VzZXIoYXV0aF9idWYsIGNhb3AtPmF1dGhfc3JjLCBjYW9wLT5hdXRoX2xlbikpKSB7CisgCQkJZGVycigxLCAidW5hYmxlIHRvIGNvcHkgYXV0aCBkYXRhIGZyb20gdXNlcnNwYWNlLiIpOworIAkJCXJldCA9IC1FRkFVTFQ7CistCQkJZ290byBmcmVlX2F1dGhfYnVmOworKwkJCWdvdG8gZnJlZV9wYWdlczsKKyAJCX0KKyAKKyAJCXNnX2luaXRfb25lKCZ0bXAsIGF1dGhfYnVmLCBjYW9wLT5hdXRoX2xlbik7CitAQCAtNzI0LDE2ICs3MzEsMTAgQEAgc3RhdGljIGludCBjcnlwdG9fYXV0aF96Y19hZWFkKHN0cnVjdCBjc2Vzc2lvbiAqc2VzX3B0ciwgc3RydWN0IGtlcm5lbF9jcnlwdF9hdXQKKyAJCWF1dGhfc2cgPSBOVUxMOworIAl9CisgCistCXJldCA9IGdldF91c2VyYnVmKHNlc19wdHIsIGNhb3AtPnNyYywgY2FvcC0+bGVuLCBjYW9wLT5kc3QsIGtjYW9wLT5kc3RfbGVuLAorLQkJCWtjYW9wLT50YXNrLCBrY2FvcC0+bW0sICZzcmNfc2csICZkc3Rfc2cpOworLQlpZiAodW5saWtlbHkocmV0KSkgeworLQkJZGVycigxLCAiZ2V0X3VzZXJidWYoKTogRXJyb3IgZ2V0dGluZyB1c2VyIHBhZ2VzLiIpOworLQkJZ290byBmcmVlX2F1dGhfYnVmOworLQl9CistCisgCXJldCA9IGF1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCisgCQkJc3JjX3NnLCBkc3Rfc2csIGNhb3AtPmxlbik7CisgCisrZnJlZV9wYWdlczoKKyAJcmVsZWFzZV91c2VyX3BhZ2VzKHNlc19wdHIpOworIAorIGZyZWVfYXV0aF9idWY6CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDMtY29udmVydC10by1uZXctQUVBRC1pbnRlcmZhY2UtaW4ta2VybmVscy12NC4yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAzLWNvbnZlcnQtdG8tbmV3LUFFQUQtaW50ZXJmYWNlLWluLWtlcm5lbHMtdjQuMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjAyMzA3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAzLWNvbnZlcnQtdG8tbmV3LUFFQUQtaW50ZXJmYWNlLWluLWtlcm5lbHMtdjQuMi5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSBhNzA1MzYwMTk3MjYwZDI4NTM1NzQ2YWU5OGM0NjFiYTJjZmI3YTllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KK0RhdGU6IFRodSwgNCBNYXkgMjAxNyAxNTowNjoyMiArMDMwMAorU3ViamVjdDogW1BBVENIIDMvM10gY29udmVydCB0byBuZXcgQUVBRCBpbnRlcmZhY2UgaW4ga2VybmVscyB2NC4yKworCitUaGUgY3J5cHRvIEFQSSBmb3IgQUVBRCBjaXBoZXJzIGNoYW5nZWQgaW4gcmVjZW50IGtlcm5lbHMgc28gdGhhdAorYXNzb2NpYXRlZCBkYXRhIGlzIG5vdyBwYXJ0IG9mIGJvdGggc291cmNlIGFuZCBkZXN0aW5hdGlvbiBzY2F0dGVyCitnYXRoZXJzLiBUaGUgc291cmNlLCBkZXN0aW5hdGlvbiBhbmQgYXNzb2NpYXRlZCBkYXRhIGJ1ZmZlcnMgbmVlZAordG8gYmUgc3RpY2hlZCBhY2NvcmRpbmdseSBmb3IgdGhlIG9wZXJhdGlvbnMgdG8gc3VjY2VlZDoKKworc3JjX3NnOiBhdXRoX2J1ZiArIHNyY19idWYKK2RzdF9zZzogYXV0aF9idWYgKyAoZHN0X2J1ZiArIHRhZyBzcGFjZSkKKworVGhpcyBwYXRjaCBmaXhlcyBhIGtlcm5lbCBjcmFzaCBvYnNlcnZlZCB3aXRoIGNpcGhlci1nY20gdGVzdC4KKworU2VlIGFsc28ga2VybmVsIHBhdGNoOiA4MWM0YzM1ZWI2MWE2OWMyMjk4NzFjNDkwYjAxMWMxMTcxNTExZDVhCisgICAgY3J5cHRvOiBjY20gLSBDb252ZXJ0IHRvIG5ldyBBRUFEIGludGVyZmFjZQorCitSZXBvcnRlZC1ieTogUGhpbCBTdXR0ZXIgPHBoaWxAbndsLmNjPgorU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitDb21taXQgSUQ6IGE3MDUzNjAxOTcyNjBkMjg1MzU3NAorCitTaWduZWQtb2ZmLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgYXV0aGVuYy5jIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXV0aGVuYy5jIGIvYXV0aGVuYy5jCitpbmRleCA5NTcyN2I0Li42OTI5NTFmIDEwMDY0NAorLS0tIGEvYXV0aGVuYy5jCisrKysgYi9hdXRoZW5jLmMKK0BAIC02ODgsMTIgKzY4OCwyMCBAQCBmcmVlX2F1dGhfYnVmOgorIAorIHN0YXRpYyBpbnQgY3J5cHRvX2F1dGhfemNfYWVhZChzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0aF9vcCAqa2Nhb3ApCisgeworLQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmRzdF9zZywgKmF1dGhfc2csICpzcmNfc2c7CisrCXN0cnVjdCBzY2F0dGVybGlzdCAqZHN0X3NnOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNyY19zZzsKKyAJc3RydWN0IGNyeXB0X2F1dGhfb3AgKmNhb3AgPSAma2Nhb3AtPmNhb3A7CisgCXVuc2lnbmVkIGNoYXIgKmF1dGhfYnVmID0gTlVMTDsKKy0Jc3RydWN0IHNjYXR0ZXJsaXN0IHRtcDsKKyAJaW50IHJldDsKKyAKKysjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDQsIDIsIDApKQorKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgdG1wOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKmF1dGhfc2c7CisrI2Vsc2UKKysJc3RydWN0IHNjYXR0ZXJsaXN0IGF1dGgxWzJdOworKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgYXV0aDJbMl07CisrI2VuZGlmCisrCisgCWlmICh1bmxpa2VseShzZXNfcHRyLT5jZGF0YS5pbml0ID09IDAgfHwKKyAJCShzZXNfcHRyLT5jZGF0YS5zdHJlYW0gPT0gMCAmJiBzZXNfcHRyLT5jZGF0YS5hZWFkID09IDApKSkgeworIAkJZGVycigwLCAiT25seSBzdHJlYW0gYW5kIEFFQUQgY2lwaGVycyBhcmUgYWxsb3dlZCBmb3IgYXV0aGVuYyIpOworQEAgLTcxOCw2ICs3MjYsNyBAQCBzdGF0aWMgaW50IGNyeXB0b19hdXRoX3pjX2FlYWQoc3RydWN0IGNzZXNzaW9uICpzZXNfcHRyLCBzdHJ1Y3Qga2VybmVsX2NyeXB0X2F1dAorIAkJZ290byBmcmVlX2F1dGhfYnVmOworIAl9CisgCisrI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCAyLCAwKSkKKyAJaWYgKGNhb3AtPmF1dGhfc3JjICYmIGNhb3AtPmF1dGhfbGVuID4gMCkgeworIAkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworIAkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKK0BAIC03MzMsNiArNzQyLDMzIEBAIHN0YXRpYyBpbnQgY3J5cHRvX2F1dGhfemNfYWVhZChzdHJ1Y3QgY3Nlc3Npb24gKnNlc19wdHIsIHN0cnVjdCBrZXJuZWxfY3J5cHRfYXV0CisgCisgCXJldCA9IGF1dGhfbl9jcnlwdChzZXNfcHRyLCBrY2FvcCwgYXV0aF9zZywgY2FvcC0+YXV0aF9sZW4sCisgCQkJc3JjX3NnLCBkc3Rfc2csIGNhb3AtPmxlbik7CisrI2Vsc2UKKysJaWYgKGNhb3AtPmF1dGhfc3JjICYmIGNhb3AtPmF1dGhfbGVuID4gMCkgeworKwkJaWYgKHVubGlrZWx5KGNvcHlfZnJvbV91c2VyKGF1dGhfYnVmLCBjYW9wLT5hdXRoX3NyYywgY2FvcC0+YXV0aF9sZW4pKSkgeworKwkJCWRlcnIoMSwgInVuYWJsZSB0byBjb3B5IGF1dGggZGF0YSBmcm9tIHVzZXJzcGFjZS4iKTsKKysJCQlyZXQgPSAtRUZBVUxUOworKwkJCWdvdG8gZnJlZV9wYWdlczsKKysJCX0KKysKKysJCXNnX2luaXRfdGFibGUoYXV0aDEsIDIpOworKwkJc2dfc2V0X2J1ZihhdXRoMSwgYXV0aF9idWYsIGNhb3AtPmF1dGhfbGVuKTsKKysJCXNnX2NoYWluKGF1dGgxLCAyLCBzcmNfc2cpOworKworKwkJaWYgKHNyY19zZyA9PSBkc3Rfc2cpIHsKKysJCQlzcmNfc2cgPSBhdXRoMTsKKysJCQlkc3Rfc2cgPSBhdXRoMTsKKysJCX0gZWxzZSB7CisrCQkJc2dfaW5pdF90YWJsZShhdXRoMiwgMik7CisrCQkJc2dfc2V0X2J1ZihhdXRoMiwgYXV0aF9idWYsIGNhb3AtPmF1dGhfbGVuKTsKKysJCQlzZ19jaGFpbihhdXRoMiwgMiwgZHN0X3NnKTsKKysJCQlzcmNfc2cgPSBhdXRoMTsKKysJCQlkc3Rfc2cgPSBhdXRoMjsKKysJCX0KKysJfQorKworKwlyZXQgPSBhdXRoX25fY3J5cHQoc2VzX3B0ciwga2Nhb3AsIE5VTEwsIGNhb3AtPmF1dGhfbGVuLAorKwkJCXNyY19zZywgZHN0X3NnLCBjYW9wLT5sZW4pOworKyNlbmRpZgorIAorIGZyZWVfcGFnZXM6CisgCXJlbGVhc2VfdXNlcl9wYWdlcyhzZXNfcHRyKTsKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjLmluYwppbmRleCA5YTkwZDQ0Li43YTkyM2JmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jCkBAIC03LDcgKzcsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvZHRjL2R0Yy5naXQgXAogICAgICAgICAgICBmaWxlOi8vbWFrZV9pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2hlY2tzLVVzZS1wcm9wZXItZm9ybWF0LW1vZGlmaWVyLWZvci1zaXplX3QucGF0Y2ggXAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvMDAwMS1jaGVja3MtVXNlLXByb3Blci1mb3JtYXQtbW9kaWZpZXItZm9yLXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiMzg0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy8wMDAxLWNoZWNrcy1Vc2UtcHJvcGVyLWZvcm1hdC1tb2RpZmllci1mb3Itc2l6ZV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBjN2E0YzM4MTc3OTYxMDdiYjgyNGExZjE3M2ZhZjkwZmFlNDUzOTZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLURhdGU6IFdlZCwgMjcgU2VwIDIwMTcgMTU6MDQ6MDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gY2hlY2tzOiBVc2UgcHJvcGVyIGZvcm1hdCBtb2RpZmllciBmb3Igc2l6ZV90Ci0KLVRoZSBzaXplIG9mIHNpemVfdCBjYW4gdmFyeSBiZXR3ZWVuIGFyY2hpdGVjdHVyZXMsIHNvIHVzaW5nICVsZCBpc24ndAotZ29pbmcgdG8gd29yayBvbiAzMi1iaXQgYnVpbGRzLiBVc2UgdGhlICV6dSBtb2RpZmllciB0byBtYWtlIHN1cmUgaXQgaXMKLWFsd2F5cyBjb3JyZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEuY29tPgotQWNrZWQtYnk6IFJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY2hlY2tzLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2hlY2tzLmMgYi9jaGVja3MuYwotaW5kZXggOTAyZjJlMy4uMDhhM2EyOSAxMDA2NDQKLS0tLSBhL2NoZWNrcy5jCi0rKysgYi9jaGVja3MuYwotQEAgLTk3Miw3ICs5NzIsNyBAQCBzdGF0aWMgdm9pZCBjaGVja19wcm9wZXJ0eV9waGFuZGxlX2FyZ3Moc3RydWN0IGNoZWNrICpjLAotIAlpbnQgY2VsbCwgY2VsbHNpemUgPSAwOwotIAotIAlpZiAocHJvcC0+dmFsLmxlbiAlIHNpemVvZihjZWxsX3QpKSB7Ci0tCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICVsZCBpbiBub2RlICVzIiwKLSsJCUZBSUwoYywgZHRpLCAicHJvcGVydHkgJyVzJyBzaXplICglZCkgaXMgaW52YWxpZCwgZXhwZWN0ZWQgbXVsdGlwbGUgb2YgJXp1IGluIG5vZGUgJXMiLAotIAkJICAgICBwcm9wLT5uYW1lLCBwcm9wLT52YWwubGVuLCBzaXplb2YoY2VsbF90KSwgbm9kZS0+ZnVsbHBhdGgpOwotIAkJcmV0dXJuOwotIAl9Ci1AQCAtMTE2Myw3ICsxMTYzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfaW50ZXJydXB0c19wcm9wZXJ0eShzdHJ1Y3QgY2hlY2sgKmMsCi0gCQlyZXR1cm47Ci0gCi0gCWlmIChpcnFfcHJvcC0+dmFsLmxlbiAlIHNpemVvZihjZWxsX3QpKQotLQkJRkFJTChjLCBkdGksICJwcm9wZXJ0eSAnJXMnIHNpemUgKCVkKSBpcyBpbnZhbGlkLCBleHBlY3RlZCBtdWx0aXBsZSBvZiAlbGQgaW4gbm9kZSAlcyIsCi0rCQlGQUlMKGMsIGR0aSwgInByb3BlcnR5ICclcycgc2l6ZSAoJWQpIGlzIGludmFsaWQsIGV4cGVjdGVkIG11bHRpcGxlIG9mICV6dSBpbiBub2RlICVzIiwKLSAJCSAgICAgaXJxX3Byb3AtPm5hbWUsIGlycV9wcm9wLT52YWwubGVuLCBzaXplb2YoY2VsbF90KSwKLSAJCSAgICAgbm9kZS0+ZnVsbHBhdGgpOwotIAotLS0gCi0yLjE1LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMvbWFrZV9pbnN0YWxsLnBhdGNoCmluZGV4IGNjZjE3YjMuLmVhOTM1OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjL21ha2VfaW5zdGFsbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy9tYWtlX2luc3RhbGwucGF0Y2gKQEAgLTEsMTcgKzEsMjYgQEAKK0Zyb20gZTk4NTJiOWQyMDZkZjFlNDJhYTRjOGFmZWM1NWEwZjVlMDk5YjUzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgMyBOb3YgMjAxMSAwODozNTo0NyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBkdGM6IEFkZCBwYXRjaCB0byBjb3JyZWN0bHkgaW5zdGFsbCBzaGFyZWQgbGlicmFyaWVzIGFuZAorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKLUluZGV4OiBnaXQvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NYWtlZmlsZQotKysrIGdpdC9NYWtlZmlsZQotQEAgLTE2OCw4ICsxNjgsOCBAQCBpbnN0YWxsLWJpbjogYWxsICQoU0NSSVBUUykKKy0tLQorIE1ha2VmaWxlIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGQ4ZWJjNGYuLmY1ZTAxYmUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yMDUsOCArMjA1LDggQEAgaW5zdGFsbC1iaW46IGFsbCAkKFNDUklQVFMpCiAgaW5zdGFsbC1saWI6IGFsbAogIAlAJChWRUNITykgSU5TVEFMTC1MSUIKICAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChMSUJESVIpCi0tCSQoSU5TVEFMTCkgJChMSUJGRFRfbGliKSAkKERFU1RESVIpJChMSUJESVIpCistCSQoSU5TVEFMTF9MSUIpICQoTElCRkRUX2xpYikgJChERVNURElSKSQoTElCRElSKQogLQlsbiAtc2YgJChub3RkaXIgJChMSUJGRFRfbGliKSkgJChERVNURElSKSQoTElCRElSKS8kKExJQkZEVF9zb25hbWUpCiArCSQoSU5TVEFMTCkgJChMSUJGRFRfbGliKSAkKERFU1RESVIpJChMSUJESVIpLyQoTElCRkRUX3NvbmFtZSkKICsJbG4gLXNmICQoTElCRkRUX3NvbmFtZSkgJChERVNURElSKSQoTElCRElSKS8kKG5vdGRpciAkKExJQkZEVF9saWIpKQogIAlsbiAtc2YgJChMSUJGRFRfc29uYW1lKSAkKERFU1RESVIpJChMSUJESVIpL2xpYmZkdC4kKFNIQVJFRExJQl9FWFQpCi0gCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCRkRUX2FyY2hpdmUpICQoREVTVERJUikkKExJQkRJUikKKyAJJChJTlNUQUxMX0RBVEEpICQoTElCRkRUX2FyY2hpdmUpICQoREVTVERJUikkKExJQkRJUikKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNDZjZmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGR0Yy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0JCSAgICBmaWxlOi8vbGliZmR0L2xpYmZkdC5oO2JlZ2lubGluZT0zO2VuZGxpbmU9NTI7bWQ1PWZiMzYwOTYzMTUxZjhlYzJkNmMwNmIwNTViY2JiNjhjIgotCi1TUkNSRVYgPSAiMjJhNjVjNTMzMWMyMjk3OWQ0MTY3MzhlYjc1NmI5NTQxNjcyZTAwZCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2U0NjJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjcuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBkdGMuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTUyO21kNT1mYjM2MDk2MzE1MWY4ZWMyZDZjMDZiMDU1YmNiYjY4YyIKKworU1JDUkVWID0gIjg4ZjE4OTA5ZGI3MzFhNjI3NDU2ZjI2ZDc3OTQ0NWY4NGU0NDk1MzYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCA0Y2NmOWIwLi5iMzUzYzIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogCiBERVBFTkRTID0gImdpdC1uYXRpdmUiCiAKLVNSQ1JFViA9ICI4Y2QxMzUwMGEyN2MwYTZhOTExY2M4M2MwMzQ5ZGVjMDFlZjY2ZTI3IgorU1JDUkVWID0gImQ2NTI5Zjg2ZmM1YmNiMzUxNDk1M2ZmOWZhMmY1MWEzZmJmMDNhMGYiCiBQUiA9ICJyMTIiCiBQViA9ICIwLjIrZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWtleGVjLWZpeC1mb3ItVW5oYW5kbGVkLXJlbGEtcmVsb2NhdGlvbi1SX1g4Nl82NF9QTFQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1maXgtZm9yLVVuaGFuZGxlZC1yZWxhLXJlbG9jYXRpb24tUl9YODZfNjRfUExULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwY2NlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1rZXhlYy1maXgtZm9yLVVuaGFuZGxlZC1yZWxhLXJlbG9jYXRpb24tUl9YODZfNjRfUExULnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYjlkZTIxZWY1MWE3Y2VhYjcxMjJhNzA3YzE4ODYwMmVhZTIyYzRlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzIENsYXl0b24gPGNocmlzMjU1M0Bnb29nbGVtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjAgQXVnIDIwMTggMTI6MDA6MzEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0ga2V4ZWM6IGZpeCBmb3IgIlVuaGFuZGxlZCByZWxhIHJlbG9jYXRpb246IFJfWDg2XzY0X1BMVDMyIiBlcnJvcgorCitJbiByZXNwb25zZSB0byBhIGNoYW5nZSBpbiBiaW51dGlscywgY29tbWl0IGIyMWViZjJmYjRjCisoeDg2OiBUcmVhdCBSX1g4Nl82NF9QTFQzMiBhcyBSX1g4Nl82NF9QQzMyKSB3YXMgYXBwbGllZCB0bwordGhlIGxpbnV4IGtlcm5lbCBkdXJpbmcgdGhlIDQuMTYgZGV2ZWxvcG1lbnQgY3ljbGUgYW5kIGhhcworc2luY2UgYmVlbiBiYWNrcG9ydGVkIHRvIGVhcmxpZXIgc3RhYmxlIGtlcm5lbCBzZXJpZXMuIFRoZQorY2hhbmdlIHJlc3VsdHMgaW4gdGhlIGZhaWx1cmUgbWVzc2FnZSBpbiAkU1VCSkVDVCB3aGVuCityZWJvb3RpbmcgdmlhIGtleGVjLgorCitGaXggdGhpcyBieSByZXBsaWNhdGluZyB0aGUgY2hhbmdlIGluIGtleGVjLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuZ2l0L2NvbW1pdC8/aWQ9YjlkZTIxZWY1MWE3Y2VhYjcxMjJhNzA3YzE4ODYwMmVhZTIyYzRlZV0KKworU2lnbmVkLW9mZi1ieTogQ2hyaXMgQ2xheXRvbiA8Y2hyaXMyNTUzQGdvb2dsZW1haWwuY29tPgorQWNrZWQtYnk6IEJhb3F1YW4gSGUgPGJoZUByZWRoYXQuY29tPgorVGVzdGVkLWJ5OiBCaHVwZXNoIFNoYXJtYSA8YmhzaGFybWFAcmVkaGF0LmNvbT4KK0Fja2VkLWJ5OiBCaHVwZXNoIFNoYXJtYSA8YmhzaGFybWFAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFNpbW9uIEhvcm1hbiA8aG9ybXNAdmVyZ2UubmV0LmF1PgorU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGtleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gveDg2XzY0L2tleGVjLWVsZi1yZWwteDg2XzY0LmMgYi9rZXhlYy9hcmNoL3g4Nl82NC9rZXhlYy1lbGYtcmVsLXg4Nl82NC5jCitpbmRleCA3ZmRkZTczLi5kYjg1YjQ0IDEwMDY0NAorLS0tIGEva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworKysrIGIva2V4ZWMvYXJjaC94ODZfNjQva2V4ZWMtZWxmLXJlbC14ODZfNjQuYworQEAgLTc5LDYgKzc5LDcgQEAgdm9pZCBtYWNoaW5lX2FwcGx5X2VsZl9yZWwoc3RydWN0IG1lbV9laGRyICpVTlVTRUQoZWhkciksCisgCQkJZ290byBvdmVyZmxvdzsKKyAJCWJyZWFrOworIAljYXNlIFJfWDg2XzY0X1BDMzI6IAorKwljYXNlIFJfWDg2XzY0X1BMVDMyOgorIAkJKih1aW50MzJfdCAqKWxvY2F0aW9uID0gdmFsdWUgLSBhZGRyZXNzOworIAkJYnJlYWs7CisgCWRlZmF1bHQ6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wLnNlcnZpY2UKaW5kZXggMDEzYzVhNi4uYjRhMmMwNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wLnNlcnZpY2UKQEAgLTEsNyArMSw4IEBACiBbVW5pdF0KIERlc2NyaXB0aW9uPVJlYm9vdCBhbmQgZHVtcCB2bWNvcmUgdmlhIGtleGVjCiBEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCi1BZnRlcj1iYXNpYy50YXJnZXQKK1JlcXVpcmVzPXN5c2luaXQudGFyZ2V0CitBZnRlcj1zeXNpbml0LnRhcmdldAogCiBbU2VydmljZV0KIFR5cGU9b25lc2hvdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYjQ4MzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLQotU1VNTUFSWSA9ICJLZXhlYyBmYXN0IHJlYm9vdCB0b29scyIKLURFU0NSSVBUSU9OID0gIktleGVjIGlzIGEgZmFzdCByZWJvb3QgZmVhdHVyZSB0aGF0IGxldHMgeW91IHJlYm9vdCB0byBhIG5ldyBMaW51eCBrZXJuZWwiCi1BVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCi1IT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKLVNFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCi1ERVBFTkRTID0gInpsaWIgeHoiCi0KLVBSID0gInIxIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCi0gICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAotICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTE5ODk2OGRlNzliNWRlZDk2Zjk3ZjNjMmVhOTYzN2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YxN2ZjOTliZjc3YzliMzlmMDZlZTg4YWMwZTg2ZDAzNDljNGEwYzNmODIxNGEzY2M3OGVlY2U4NzJmNmYzYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1leHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCi0gICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQotICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAotCi0gICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKLSAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCi0gICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCi0gICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCi0gICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCi0gICAgICAgICAgICBybSAtZiAkZGVwCi0gICAgICAgIGZpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCi0gICAgICAgIGZpCi0KLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgotCi1GSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgotRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCi0iCi0KLUZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKLUlOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCi0KLVNFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKnxwb3dlcnBjLip8bWlwcy4qKS0obGludXh8ZnJlZWJzZC4qKScKLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOWI1YWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE3LmJiCkBAIC0wLDAgKzEsODggQEAKKworU1VNTUFSWSA9ICJLZXhlYyBmYXN0IHJlYm9vdCB0b29scyIKK0RFU0NSSVBUSU9OID0gIktleGVjIGlzIGEgZmFzdCByZWJvb3QgZmVhdHVyZSB0aGF0IGxldHMgeW91IHJlYm9vdCB0byBhIG5ldyBMaW51eCBrZXJuZWwiCitBVVRIT1IgPSAiRXJpYyBCaWVkZXJtYW4iCitIT01FUEFHRSA9ICJodHRwOi8va2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMva2VybmVsL2tleGVjLyIKK1NFQ1RJT04gPSAia2VybmVsL3VzZXJsYW5kIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNWJlZDJmNjBkMzU3NjE4Y2ExNjFhZDUzOWY3YzBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tleGVjL2tleGVjLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9YWYxMGY2YWU0YTg3MTU5NjVlNjQ4YWE2ODdhZDNlMDkiCitERVBFTkRTID0gInpsaWIgeHoiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8va2R1bXAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXB1cmdhdG9yeS1QYXNzLXItZGlyZWN0bHktdG8tbGlua2VyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAta2V4ZWMtQVJNLUZpeC1hZGRfYnVmZmVyX3BoeXNfdmlydC1hbGlnbi1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9rZXhlYy14MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLVBJRS1kdXJpbmctbGluay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWtleGVjLWZpeC1mb3ItVW5oYW5kbGVkLXJlbGEtcmVsb2NhdGlvbi1SX1g4Nl82NF9QTFQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZTA3MWNhNDczNjk0YTcxZTRhZTYwZWQ3ZWY2ZjM3NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NTBjODdiYTA0ODY0MWViMDVmOTcxN2Y1NTY3YWNhNTdmMDYzYzI2NjE0OWFlNjYzYjU4YTM0ZTU4NTJkZWFmIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCisKK2V4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKKyAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCisgICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCisKKyAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSworICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KKyAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKKyAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KKyAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KKyAgICAgICAgICAgIHJtIC1mICRkZXAKKyAgICAgICAgZmkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKKworICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAKKyAgICAgICAgZmkKKworICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlcgorICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCisgICAgICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCisKK0ZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCitGSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlIFwKKyIKKworRklMRVNfdm1jb3JlLWRtZXNnID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgorSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgorSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICJrZHVtcCIKK1NZU1RFTURfU0VSVklDRV9rZHVtcCA9ICJrZHVtcC5zZXJ2aWNlIgorCitTRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0Lip8cG93ZXJwYy4qfG1pcHMuKiktKGxpbnV4fGZyZWVic2QuKiknCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2RfZ2l0LmJiCmluZGV4IDY5MTg1YjIuLmJkMjFkMmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2RfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2RfZ2l0LmJiCkBAIC0xMyw5ICsxMyw3IEBACiBSQ09ORkxJQ1RTX2xpYmttb2QyICs9ICJtb2R1bGUtaW5pdC10b29scy1pbnNtb2Qtc3RhdGljIG1vZHVsZS1pbml0LXRvb2xzLWRlcG1vZCBtb2R1bGUtaW5pdC10b29scyIKIAogIyBhdXRvdG9vbHMgc2V0IHByZWZpeCB0byAvdXNyLCBob3dldmVyIHdlIHdhbnQgdGhlbSBpbiAvYmluIGFuZCAvc2JpbgotYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9Igotc2JpbmRpciA9ICIke2Jhc2Vfc2JpbmRpcn0iCi0jIGxpYmRpciA9ICIke2Jhc2VfbGliZGlyfSIKK0VYVFJBX09FQ09ORiArPSAiIC0tYmluZGlyPSR7YmFzZV9iaW5kaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0iCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKICAgICAgICAgaW5zdGFsbCAtZG03NTUgJHtEfSR7YmFzZV9iaW5kaXJ9CkBAIC00MSw3ICszOSw3IEBACiAKIGluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcyBiYXNoLWNvbXBsZXRpb24KIAotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNjAiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICI3MCIKIAogQUxURVJOQVRJVkVfa21vZCA9ICJpbnNtb2QgbW9kcHJvYmUgcm1tb2QgbW9kaW5mbyBiaW4tbHNtb2QgbHNtb2QgZGVwbW9kIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgppbmRleCBjZjdhYmIwLi4yNTI1NTQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKQEAgLTY2LDEyICs2NiwxMyBAQAogICAgIGZpbGU6Ly9MSUNFTkNFLkFiaWxpczttZDU9YjVlZTNmNDEwNzgwZTU2NzExYWQ0OGVhZGMyMmI4YmMgXAogICAgIGZpbGU6Ly9MSUNFTkNFLmFkc3Bfc3N0O21kNT02MTVjNDViOTFhNWE0YTlmZTA0NmQ2YWI5YTJkZjcyOCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuYWdlcmU7bWQ1PWFmMDEzM2RlNmI0YTliMjUyMmRlZmQ1ZjE4OGFmZDMxIFwKLSAgICBmaWxlOi8vTElDRU5TRS5hbWRncHU7bWQ1PTBhYTNjMmYzZTczNmFmMzIwYTA4YTNhZWVjY2VjZjI5IFwKKyAgICBmaWxlOi8vTElDRU5TRS5hbWRncHU7bWQ1PTg4Yjg2NWJjNzRmM2ZmY2M1NDY0MGI0ZWE4NTQwYjQ2IFwKICAgICBmaWxlOi8vTElDRU5TRS5hbWQtdWNvZGU7bWQ1PTNjNTM5OWRjOTE0OGQ3ZjBlMWY0MWUzNGI2OWNmMTRmIFwKICAgICBmaWxlOi8vTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlO21kNT0zMGExNGM3ODIzYmVlZGFjOWZhMzljNjRmZGQwMWExMyBcCiAgICAgZmlsZTovL0xJQ0VOU0UuYXRtZWw7bWQ1PWFhNzRhYzBjNjA1OTVkZWU0ZDRlMjM5MTA3ZWE3N2EzIFwKICAgICBmaWxlOi8vTElDRU5DRS5icm9hZGNvbV9iY200M3h4O21kNT0zMTYwYzE0ZGY3MjI4ODkxYjg2ODA2MGUxOTUxZGZiYyBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuY2EwMTMyO21kNT0yMDliMzNlNjZlZTViZTA0NjFmMTNkMzFkYTM5MjE5OCBcCisgICAgZmlsZTovL0xJQ0VOQ0UuY2FkZW5jZTttZDU9MDA5ZjQ2ODE2ZjY5NTZjZmI3NWVkZTEzZDNlMWNlZTAgXAogICAgIGZpbGU6Ly9MSUNFTkNFLmNhdml1bTttZDU9YzM3YWFmZmIxZWJlNTkzOWIyNTgwZDA3M2E5NWRhZWEgXAogICAgIGZpbGU6Ly9MSUNFTkNFLmNoZWxzaW9fZmlybXdhcmU7bWQ1PTgxOWFhOGMzZmE0NTNmMWIyNThlZDhkMTY4YTlkOTAzIFwKICAgICBmaWxlOi8vTElDRU5DRS5jdzEyMDA7bWQ1PWYwZjc3MDg2NGU3YTg0NDRhNWM1YWE5ZDEyYTNhN2VkIFwKQEAgLTkxLDYgKzkyLDcgQEAKICAgICBmaWxlOi8vTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlO21kNT0zZmQ4NDI5MTFlYTkzYzI5Y2QzMjY3OWFhMjNlMWM4OCBcCiAgICAgZmlsZTovL0xJQ0VOQ0Uua2F3ZXRoO21kNT1iMWQ4NzZlNTYyZjRiM2I4ZDM5MWFkODM5NWRmZTAzZiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9OWRkZWExNzM0YTRiYWYzYzc4ZDg0NTE1MWY0MmEzN2EgXAorICAgIGZpbGU6Ly9MSUNFTkNFLm1lZGlhdGVrO21kNT03YzE5NzZiNjMyMTdkNzZjZTQ3ZDBhMTFkOGE3OWNmMiBcCiAgICAgZmlsZTovL0xJQ0VOQ0UubW94YTttZDU9MTA4NjYxNDc2N2Q4Y2NmNzQ0YTkyMzI4OWQzZDQyNjEgXAogICAgIGZpbGU6Ly9MSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlO21kNT00MmUzMmZiODlmNmI5NTljYTIyMmUyNWFjOGRmOGZlZCBcCiAgICAgZmlsZTovL0xJQ0VOQ0UuTmV0cm9ub21lO21kNT00YWRkMDhmMjU3NzA4NmQ0NDQ0Nzk5NjUwM2NkZGY1ZiBcCkBAIC0xMjAsNyArMTIyLDcgQEAKICAgICBmaWxlOi8vTElDRU5DRS54YzQwMDA7bWQ1PTBmZjUxZDJkYzQ5ZmNlMDQ4MTRjOTE1NTA4MTA5MmYwIFwKICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDA7bWQ1PTFlMTcwYzEzMTc1MzIzYzMyYzdmNGQwOTk4ZDUzZjY2IFwKICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCi0gICAgZmlsZTovL1dIRU5DRTttZDU9ZWFhZjMxMGJhYzAyZmVlMDVlYTFiMzM0ZjU4YzVjYWYgXAorICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTM2ZWYzZTk4ODdiYjhiMzhmZjI2NWM2MDJkZTY3NDBlIFwKICIKIAogIyBUaGVzZSBhcmUgbm90IGNvbW1vbiBsaWNlbnNlcywgc2V0IE5PX0dFTkVSSUNfTElDRU5TRSBmb3IgdGhlbQpAQCAtMTM0LDYgKzEzNiw3IEBACiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRtZWxdID0gIkxJQ0VOU0UuYXRtZWwiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eF0gPSAiTElDRU5DRS5icm9hZGNvbV9iY200M3h4IgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhMDEzMl0gPSAiTElDRU5DRS5jYTAxMzIiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2FkZW5jZV0gPSAiTElDRU5DRS5jYWRlbmNlIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhdml1bV0gPSAiTElDRU5DRS5jYXZpdW0iCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtY2hlbHNpb19maXJtd2FyZV0gPSAiTElDRU5DRS5jaGVsc2lvX2Zpcm13YXJlIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWN3MTIwMF0gPSAiTElDRU5DRS5jdzEyMDAiCkBAIC0xNTMsNiArMTU2LDcgQEAKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUta2F3ZXRoXSA9ICJMSUNFTkNFLmthd2V0aCIKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1NYXJ2ZWxsXSA9ICJMSUNFTkNFLk1hcnZlbGwiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbWVkaWF0ZWtdID0gIkxJQ0VOQ0UubWVkaWF0ZWsiCiBOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbW94YV0gPSAiTElDRU5DRS5tb3hhIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlXSA9ICJMSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlIgogTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW5ldHJvbm9tZV0gPSAiTElDRU5DRS5OZXRyb25vbWUiCkBAIC0xODQsNyArMTg4LDcgQEAKIE5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBjXSA9ICJMSUNFTkNFLnhjNTAwMGMiCiBOT19HRU5FUklDX0xJQ0VOU0VbV0hFTkNFXSA9ICJXSEVOQ0UiCiAKLVNSQ1JFViA9ICJkMTE0NzMyNzIzMmVjNDYxNmE2NmFiODk4ZGY4NGY5NzAwYzgxNmMxIgorU1JDUkVWID0gIjQ0ZDRmY2E5OTIyYTI1MmEwYmQ4MWY2MzA3YmNjMDcyYTc4ZGE1NGEiCiBQRSA9ICIxIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCkBAIC0yMzIsNiArMjM2LDcgQEAKICAgICAgICAgICAgICAke1BOfS1yYWRlb24tbGljZW5zZSAke1BOfS1yYWRlb24gXAogICAgICAgICAgICAgICR7UE59LW1hcnZlbGwtbGljZW5zZSAke1BOfS1wY2llODg5NyAke1BOfS1wY2llODk5NyBcCiAgICAgICAgICAgICAgJHtQTn0tc2Q4Njg2ICR7UE59LXNkODY4OCAke1BOfS1zZDg3ODcgJHtQTn0tc2Q4Nzk3ICR7UE59LXNkODgwMSAke1BOfS1zZDg4ODcgJHtQTn0tc2Q4ODk3IFwKKyAgICAgICAgICAgICAke1BOfS11c2I4OTk3IFwKICAgICAgICAgICAgICAke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bDEyeHggJHtQTn0td2wxOHh4IFwKICAgICAgICAgICAgICAke1BOfS12dDY2NTYtbGljZW5zZSAke1BOfS12dDY2NTYgXAogICAgICAgICAgICAgICR7UE59LXJ0bC1saWNlbnNlICR7UE59LXJ0bDgxODggJHtQTn0tcnRsODE5MmN1ICR7UE59LXJ0bDgxOTJjZSAke1BOfS1ydGw4MTkyc3UgJHtQTn0tcnRsODcyMyAke1BOfS1ydGw4ODIxIFwKQEAgLTQwOSw2ICs0MTQsNyBAQAogTElDRU5TRV8ke1BOfS1zZDg4MDEgPSAiRmlybXdhcmUtTWFydmVsbCIKIExJQ0VOU0VfJHtQTn0tc2Q4ODg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCiBMSUNFTlNFXyR7UE59LXNkODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS11c2I4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCiBMSUNFTlNFXyR7UE59LW1hcnZlbGwtbGljZW5zZSA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgogCiBGSUxFU18ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk1hcnZlbGwiCkBAIC00NDMsNiArNDQ5LDkgQEAKIEZJTEVTXyR7UE59LXNkODg5NyA9ICIgXAogICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODk3X3VhcHN0YS5iaW4gXAogIgorRklMRVNfJHtQTn0tdXNiODk5NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvdXNidXNiODk5N19jb21ib192NC5iaW4gXAorIgogCiBSREVQRU5EU18ke1BOfS1zZDg2ODYgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LXNkODY4OCArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgpAQCAtNDUxLDYgKzQ2MCw3IEBACiBSREVQRU5EU18ke1BOfS1zZDg4MDEgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKIFJERVBFTkRTXyR7UE59LXNkODg4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgogUkRFUEVORFNfJHtQTn0tc2Q4ODk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS11c2I4OTk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCiAKICMgRm9yIG5ldHJvbm9tZQogTElDRU5TRV8ke1BOfS1uZXRyb25vbWUgPSAiRmlybXdhcmUtbmV0cm9ub21lIgpAQCAtODAxLDkgKzgxMSw5IEBACiBGSUxFU18ke1BOfS1pYnQtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaWJ0X2Zpcm13YXJlIgogRklMRVNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuNyouYnNlcSIKIEZJTEVTXyR7UE59LWlidC1ody0zNy04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjgqLmJzZXEiCi1GSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKLUZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAvbGliL2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCi1GSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgL2xpYi9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMS01LmRkYyIKK0ZJTEVTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTctKi5kZGMiCiBGSUxFU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2lidC0qIgogCiBSREVQRU5EU18ke1BOfS1pYnQtaHctMzctNyA9ICIke1BOfS1pYnQtbGljZW5zZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYwppbmRleCBiNWNmOTZkLi5iZTIxNWFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCkBAIC0zMCw3ICszMCw3IEBACiAjCiAjIC0tIFJQCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCiAKIHB5dGhvbiBfX2Fub255bW91cyAoKSB7CiAgICAgbWFqb3IgPSBkLmdldFZhcigiUFYiKS5zcGxpdCgnLicpWzBdCkBAIC01MywxMiArNTMsOSBAQAogCiBFWFRSQV9PRU1BS0UgPSAiIEhPU1RDQz0iJHtCVUlMRF9DQ30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIiCiAKLWRvX2NvbmZpZ3VyZSgpIHsKLQlvZV9ydW5tYWtlIGFsbG5vY29uZmlnCi19Citkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCi1kb19jb21waWxlICgpIHsKLX0KK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogCiBkb19pbnN0YWxsKCkgewogCW9lX3J1bm1ha2UgaGVhZGVyc19pbnN0YWxsIElOU1RBTExfSERSX1BBVEg9JHtEfSR7ZXhlY19wcmVmaXh9CkBAIC05Miw0ICs4OSw0IEBACiBSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotREVQRU5EUyArPSAidW5pZmRlZi1uYXRpdmUiCitERVBFTkRTICs9ICJ1bmlmZGVmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWluY2x1ZGUtbGludXgtc3RkZGVmLmgtaW4tc3dhYi5oLXVhcGktaGVhZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDE3ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDk3MDhkYzc0ZDlmNDk0ODhkNjY5ZTA3MDk4MmY2MjI0YTg4OGQ2MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMiBTZXAgMjAxOCAxNzowODo1OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIGxpbnV4L3N0ZGRlZi5oIGluIHN3YWIuaCB1YXBpIGhlYWRlcgorCitzd2FiLmggdXNlcyBfX2Fsd2F5c19pbmxpbmUgd2l0aG91dCBpbmNsdWRpbmcgdGhlIGhlYWRlciB3aGVyZSBpdCBpcworZGVmaW5lZCwgdGhpcyBpcyBleHBvc2VkIGJ5IG11c2wgYmFzZWQgZGlzdHJpYnV0aW9ucyB3aGVyZSB0aGlzIG1hY3JvIGlzCitub3QgZGVmaW5lZCBieSBzeXN0ZW0gQyBsaWJyYXJ5IGhlYWRlcnMgdW5saWtlIGdsaWJjIHdoZXJlIGl0IGlzIGRlZmluZWQKK2luIHN5cy9jZGVmcy5oIGFuZCB0aGF0IGhlYWRlciBnZXRzIHB1bGxlZCBpbiBpbmRpcmVjdGx5IHZpYQorCitmZWF0dXJlcy5oIC0+IHN5cy9jZGVmcy5oCisKK2FuZCBmZWF0dXJlcy5oIGdldHMgcHVsbGVkIGluIGEgbG90IG9mIGhlYWRlcnMuIFRoZXJlZm9yZSBpdCBtYXkgd29yayBpbgorY2FzZXMgd2hlcmUgZmVhdHVyZXMuaCBpcyBpbmNsdWRlcyBidXQgbm90IG90aGVyd2lzZS4KKworQWRkaW5nIGxpbnV4L3N0ZGRlZi5oIGhlcmUgZW5zdXJlcyB0aGF0IF9fYWx3YXlzX2lubGluZSBpcyBhbHdheXMKK2RlZmluZWQgaW5kZXBlbmRlbnQgb2Ygd2hpY2ggQyBsaWJyYXJ5IGlzIHVzZWQgaW4gdXNlcnNwYWNlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOC85LzEzLzc4XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorQ2M6IFBoaWxpcHBlIE9tYnJlZGFubmUgPHBvbWJyZWRhbm5lQG5leGIuY29tPgorQ2M6IEthdGUgU3Rld2FydCA8a3N0ZXdhcnRAbGludXhmb3VuZGF0aW9uLm9yZz4KK0NjOiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorLS0tCisgaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9zd2FiLmgKK2luZGV4IDIzY2Q4NDg2OGNjMy4uYWNkZGJlNTBhMjBkIDEwMDY0NAorLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaAorKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3N3YWIuaAorQEAgLTMsNiArMyw3IEBACisgI2RlZmluZSBfVUFQSV9MSU5VWF9TV0FCX0gKKyAKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjaW5jbHVkZSA8bGludXgvc3RkZGVmLmg+CisgI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CisgI2luY2x1ZGUgPGFzbS9zd2FiLmg+CisgCistLSAKKzIuMTkuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjE1LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjE1LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZGI0YzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBsaW51eC1saWJjLWhlYWRlcnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1maXgtc29tZS1pc3N1ZXMtYXJpc2luZy1mcm9tLWluNi5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXJlbW92ZS1pbmNsdXNpb24tb2Ytc3lzaW5mby5oLWluLWtlcm5lbC5oLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLW11c2wtX2RvZXNfLWRlZmluZS1JRkZfTE9XRVJfVVAtRE9STUFOLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaCBcCi0gICAiCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjgxODZjZTYzYzQ4OTE5OWI1OGI2YTU4YWQyYTI0YTk0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkNDRkZjRiMjNhM2UwZWRjMTRiZTYzZGY5NWQ3NjhiOTYwMGIzMWMzNWJlMDVmYjg5ZjkzMjI2OTA3ZmM4YzYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjdiZWU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xOC5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKKyAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWlmX2V0aGVyLW1vdmUtbXVzbGMtZXRoaGRyLXByb3RlY3Rpb24tdG8tdWFwaS1maWxlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWxpbnV4LXN0ZGRlZi5oLWluLXN3YWIuaC11YXBpLWhlYWRlci5wYXRjaCBcCisgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZWU1ZmU1M2VlMWMzMTQyYjhmMGMxMmMwZDMzNDhmOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOWQ4YmNmNDllZjUzMGNkNGUzNjRhNDViNGEyMmZhNzA3MTRiNzAzNDljODEwMGU3MzA4NDg4ZTI2ZjFlYWYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgppbmRleCA4YmJmYTIzLi4zNjFhZDIxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgpAQCAtMjUsNjIgKzI1LDIxNCBAQAogZG9fcGF0Y2hbbm9leGVjXSA9ICIxIgogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotZG9fcG9wdWxhdGVfc3lzcm9vdFtub2V4ZWNdID0gIjEiCitkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIAogUyA9ICIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCiBCID0gIiR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9IgogCi1LRVJORUxfVkVSU0lPTiA9ICIke0BnZXRfa2VybmVsdmVyc2lvbl9oZWFkZXJzKCcke1N9Jyl9IgotCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCitLRVJORUxfQlVJTERfUk9PVD0iL2xpYi9tb2R1bGVzLyIKKwogZG9faW5zdGFsbCgpIHsKLSAgICAgICAga2VybmVsZGlyPSR7RH0ke0tFUk5FTF9TUkNfUEFUSH0KLSAgICAgICAgaW5zdGFsbCAtZCAka2VybmVsZGlyCisgICAga2VybmVsZGlyPSR7RH0ke0tFUk5FTF9CVUlMRF9ST09UfSR7S0VSTkVMX1ZFUlNJT059CisgICAgaW5zdGFsbCAtZCAka2VybmVsZGlyCiAKLSAgICAgICAgIwotICAgICAgICAjIENvcHkgdGhlIHN0YWdpbmcgZGlyIHNvdXJjZSAoYW5kIG1vZHVsZSBidWlsZCBzdXBwb3J0KSBpbnRvIHRoZSBkZXZzcmMgc3RydWN0dXJlLgotICAgICAgICAjIFdlIGNhbiBrZWVwIHRoaXMgY29weSBzaW1wbGUgYW5kIHRha2UgZXZlcnl0aGluZywgc2luY2UgYSB3ZSdsbCBjbGVhbiB1cCBhbnkgYnVpbGQKLSAgICAgICAgIyBhcnRpZmFjdHMgYWZ0ZXJ3YXJkcywgYW5kIHRoZSBleHRyYSBpL28gaXMgbm90IHNpZ25pZmljYW50Ci0gICAgICAgICMKLSAgICAgICAgY2QgJHtCfQotICAgICAgICBmaW5kIC4gLXR5cGUgZCAtbmFtZSAnLmdpdConIC1wcnVuZSAtbyAtcGF0aCAnLmRlYnVnJyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQwIHwgY3BpbyAtLW51bGwgLXBkbHUgJGtlcm5lbGRpcgotICAgICAgICBjZCAke1N9Ci0JZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXR5cGUgZCAtbmFtZSAnLmtlcm5lbC1tZXRhJyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQwIHwgY3BpbyAtLW51bGwgLXBkbHUgJGtlcm5lbGRpcgorICAgICMgY3JlYXRlIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlCisgICAgcm0gLWYgJGtlcm5lbGRpci9idWlsZAorICAgIHJtIC1mICRrZXJuZWxkaXIvc291cmNlCisgICAgbWtkaXIgLXAgJGtlcm5lbGRpci9idWlsZAogCi0gICAgICAgICMgRXhwbGljaXRseSBzZXQgS0JVSUxEX09VVFBVVCB0byBlbnN1cmUgdGhhdCB0aGUgaW1hZ2UgZGlyZWN0b3J5IGlzIGNsZWFuZWQgYW5kIG5vdAotICAgICAgICAjIFRoZSBtYWluIGJ1aWxkIGFydGlmYWN0cy4gV2UgY2xlYW4gdGhlIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcnMgb24gbWlzbWF0Y2hlZAotICAgICAgICAjIGFyY2hpdGVjdHVyZSAoc2luY2Ugc2NyaXB0cyBhbmQgaGVscGVycyBhcmUgbmF0aXZlIGZvcm1hdCkuCi0gICAgICAgIEtCVUlMRF9PVVRQVVQ9IiRrZXJuZWxkaXIiCi0gICAgICAgIG9lX3J1bm1ha2UgLUMgJGtlcm5lbGRpciBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBjbGVhbiBfbXJwcm9wZXJfc2NyaXB0cwotICAgICAgICAjIG1ha2UgY2xlYW4gZ2VuZXJhdGVzIGFuIGFic29sdXRlIHBhdGggc3ltbGluayBjYWxsZWQgInNvdXJjZSIKLSAgICAgICAgIyBpbiAka2VybmVsZGlyIHBvaW50cyB0byAka2VybmVsZGlyLCB3aGljaCBkb2Vzbid0IG1ha2UgYW55Ci0gICAgICAgICMgc2Vuc2UsIHNvIHJlbW92ZSBpdC4KLSAgICAgICAgaWYgWyAtTCAka2VybmVsZGlyL3NvdXJjZSBdOyB0aGVuCi0gICAgICAgICAgICBiYm5vdGUgIlJlbW92aW5nICRrZXJuZWxkaXIvc291cmNlIHN5bWxpbmsiCi0gICAgICAgICAgICBybSAtZiAka2VybmVsZGlyL3NvdXJjZQotICAgICAgICBmaQorICAgICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzb21lIG9sZGVyIHZhcmlhbnRzIG9mIHRoaXMgcGFja2FnZSwgd2UKKyAgICAjIGNyZWF0ZSAgYSAvdXNyL3NyYy9rZXJuZWwgc3ltbGluayB0byAvbGliL21vZHVsZXMvPHZlcnNpb24+L3NvdXJjZQorICAgIG1rZGlyIC1wICR7RH0vdXNyL3NyYworICAgICgKKwljZCAke0R9L3Vzci9zcmMKKwlsbiAtcyAke0tFUk5FTF9CVUlMRF9ST09UfSR7S0VSTkVMX1ZFUlNJT059L3NvdXJjZSBrZXJuZWwKKyAgICApCiAKLSAgICAgICAgIyBBcyBvZiBMaW51eCBrZXJuZWwgdmVyc2lvbiAzLjAuMSwgdGhlIGNsZWFuIHRhcmdldCByZW1vdmVzCi0gICAgICAgICMgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyB3aGljaCBpcyBwcmVzZW50IGluCi0gICAgICAgICMgS0JVSUxEX0xERkxBR1NfTU9EVUxFLCBtYWtpbmcgaXQgcmVxdWlyZWQgdG8gYnVpbGQgZXh0ZXJuYWwgbW9kdWxlcy4KLSAgICAgICAgaWYgWyAke0FSQ0h9ID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBta2RpciAtcCAka2VybmVsZGlyL2FyY2gvcG93ZXJwYy9saWIvCi0gICAgICAgICAgICAgICAgY3AgJHtCfS9hcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5vICRrZXJuZWxkaXIvYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubwotICAgICAgICBmaQorICAgICMgZm9yIG9uIHRhcmdldCBwdXJwb3Nlcywgd2UgdW5pZnkgYnVpbGQgYW5kIHNvdXJjZQorICAgICgKKwljZCAka2VybmVsZGlyCisJbG4gLXMgYnVpbGQgc291cmNlCisgICAgKQogCi0gICAgICAgICMgUmVtb3ZlIGZpeGRlcC9vYmp0b29sIGFzIHRoZXkgd29uJ3QgYmUgdGFyZ2V0IGJpbmFyaWVzCi0gICAgICAgIGZvciBpIGluIGZpeGRlcCBvYmp0b29sOyBkbwotICAgICAgICAgICAgICAgIGlmIFsgLWUgJGtlcm5lbGRpci90b29scy9vYmp0b29sLyRpIF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJtIC1yZiAka2VybmVsZGlyL3Rvb2xzL29ianRvb2wvJGkKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICBkb25lCisgICAgIyBmaXJzdCBjb3B5IGV2ZXJ5dGhpbmcKKyAgICAoCisJY2QgJHtTfQorCWNwIC0tcGFyZW50cyAkKGZpbmQgIC10eXBlIGYgLW5hbWUgIk1ha2VmaWxlKiIgLW8gLW5hbWUgIktjb25maWcqIikgJGtlcm5lbGRpci9idWlsZAorCWNwIC0tcGFyZW50cyAkKGZpbmQgIC10eXBlIGYgLW5hbWUgIkJ1aWxkIiAtbyAtbmFtZSAiQnVpbGQuaW5jbHVkZSIpICRrZXJuZWxkaXIvYnVpbGQKKyAgICApCiAKLSAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KKyAgICAjIHRoZW4gZHJvcCBhbGwgYnV0IHRoZSBuZWVkZWQgTWFrZWZpbGVzL0tjb25maWcgZmlsZXMKKyAgICBybSAtcmYgJGtlcm5lbGRpci9idWlsZC9Eb2N1bWVudGF0aW9uCisgICAgcm0gLXJmICRrZXJuZWxkaXIvYnVpbGQvc2NyaXB0cworICAgIHJtIC1yZiAka2VybmVsZGlyL2J1aWxkL2luY2x1ZGUKKworICAgICMgbm93IGNvcHkgaW4gcGFydHMgZnJvbSB0aGUgYnVpbGQgdGhhdCB3ZSdsbCBuZWVkIGxhdGVyCisgICAgKAorCWNkICR7Qn0KKworCWNwIE1vZHVsZS5zeW12ZXJzICRrZXJuZWxkaXIvYnVpbGQKKwljcCBTeXN0ZW0ubWFwKiAka2VybmVsZGlyL2J1aWxkCisJaWYgWyAtcyBNb2R1bGUubWFya2VycyBdOyB0aGVuCisJICAgIGNwIE1vZHVsZS5tYXJrZXJzICRrZXJuZWxkaXIvYnVpbGQKKwlmaQorCisJY3AgLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkCisKKwkjIFRoaXMgc2NyaXB0cyBjb3B5IGJsb3cgdXAgUUEsIHNvIGZvciBub3csIHdlIHJlcXVpcmUgYSBtb3JlCisJIyBjb21wbGV4ICdtYWtlIHNjcmlwdHMnIHRvIHJlc3RvcmUgdGhlc2UsIHZlcnN1cyBjb3B5aW5nIHRoZW0KKwkjIGhlcmUuIExlZnQgYXMgYSByZWZlcmVuY2UgdG8gaW5kaWNhdGUgdGhhdCB3ZSBrbm93IHRoZSBzY3JpcHRzIG11c3QKKwkjIGJlIGRlYWx0IHdpdGguCisJIyBjcCAtYSBzY3JpcHRzICRrZXJuZWxkaXIvYnVpbGQKKworICAgICAgICBpZiBbIC1kIGFyY2gvJHtBUkNIfS9zY3JpcHRzIF07IHRoZW4KKwkgICAgY3AgLWEgYXJjaC8ke0FSQ0h9L3NjcmlwdHMgJGtlcm5lbGRpci9idWlsZC9hcmNoLyR7QVJDSH0KKwlmaQorCWlmIFsgLWYgYXJjaC8ke0FSQ0h9LypsZHMgXTsgdGhlbgorCSAgICBjcCAtYSBhcmNoLyR7QVJDSH0vKmxkcyAka2VybmVsZGlyL2J1aWxkL2FyY2gvJHtBUkNIfQorCWZpCisKKwlybSAtZiAka2VybmVsZGlyL2J1aWxkL3NjcmlwdHMvKi5vCisJcm0gLWYgJGtlcm5lbGRpci9idWlsZC9zY3JpcHRzLyovKi5vCisKKwlpZiBbICIke0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisJICAgIGlmIFsgLWUgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMuUyBdIHx8CisJCSAgIFsgLWUgYXJjaC9wb3dlcnBjL2xpYi9jcnRzYXZyZXMubyBdOyB0aGVuCisJCWNwIC1hIC0tcGFyZW50cyBhcmNoL3Bvd2VycGMvbGliL2NydHNhdnJlcy5bU29dICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGZpCisJZmkKKworCWlmIFsgIiR7QVJDSH0iID0gImFybTY0IiBdOyB0aGVuCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzICRrZXJuZWxkaXIvYnVpbGQvCisJZmkKKworCWNwIC1hIGluY2x1ZGUgJGtlcm5lbGRpci9idWlsZC9pbmNsdWRlCisgICAgKQorCisgICAgIyBub3cgZ3JhYiB0aGUgY2h1bmtzIGZyb20gdGhlIHNvdXJjZSB0cmVlIHRoYXQgd2UgbmVlZAorICAgICgKKwljZCAke1N9CisKKwljcCAtYSBzY3JpcHRzICRrZXJuZWxkaXIvYnVpbGQKKworCSMgaWYgb3VyIGJ1aWxkIGRpciBoYWQgb2JqdG9vbCwgaXQgd2lsbCBhbHNvIGJlIHJlYnVpbHQgb24gdGFyZ2V0LCBzbworCSMgd2UgY29weSB3aGF0IGlzIHJlcXVpcmVkIGZvciB0aGF0IGJ1aWxkCisJaWYgWyAtZiAke0J9L3Rvb2xzL29ianRvb2wvb2JqdG9vbCBdOyB0aGVuCisJICAgICMgdGhlc2UgYXJlIGEgZmV3IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBvYmp0b29sLCBzaW5jZSB3ZSdsbCBuZWVkIHRvCisJICAgICMgcmVidWlsZCBpdAorCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvYnVpbGQvQnVpbGQuaW5jbHVkZSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvYnVpbGQvQnVpbGQgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2J1aWxkL2ZpeGRlcC5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9zY3JpcHRzL3V0aWxpdGllcy5tYWsgJGtlcm5lbGRpci9idWlsZC8KKworCSAgICAjIGV4dHJhIGZpbGVzLCBqdXN0IGluIGNhc2UKKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL29ianRvb2wvKiAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliL3N0cl9lcnJvcl9yLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliL3N1YmNtZC8qICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2luY2x1ZGUvKiAka2VybmVsZGlyL2J1aWxkLworCWZpCisKKwlpZiBbICIke0FSQ0h9IiA9ICJhcm02NCIgXTsgdGhlbgorCSAgICAjIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20veGVuIHJlZmVyZW5jZXMgYXJjaC9hcm0KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3hlbiAka2VybmVsZGlyL2J1aWxkLworCSAgICAjIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vb3Bjb2Rlcy5oIHJlZmVyZW5jZXMgYXJjaC9hcm0KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL2luY2x1ZGUvYXNtL29wY29kZXMuaCAka2VybmVsZGlyL2J1aWxkLworCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZXR0aW1lb2ZkYXkuUyAka2VybmVsZGlyL2J1aWxkLworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vc2lncmV0dXJuLlMgJGtlcm5lbGRpci9idWlsZC8KKyAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC92ZHNvL25vdGUuUyAka2VybmVsZGlyL2J1aWxkLworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vZ2VuX3Zkc29fb2Zmc2V0cy5zaCAka2VybmVsZGlyL2J1aWxkLworCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLworCWZpCisKKwkjIGluY2x1ZGUgdGhlIG1hY2hpbmUgc3BlY2lmaWMgaGVhZGVycyBmb3IgQVJNIHZhcmlhbnRzLCBpZiBhdmFpbGFibGUuCisJaWYgWyAiJHtBUkNIfSIgPSAiYXJtIiBdOyB0aGVuCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoLyR7QVJDSH0vbWFjaC0qL2luY2x1ZGUgJGtlcm5lbGRpci9idWlsZC8KKworCSAgICAjIGluY2x1ZGUgYSBmZXcgZmlsZXMgZm9yICdtYWtlIHByZXBhcmUnCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybS90b29scy9nZW4tbWFjaC10eXBlcyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm0vdG9vbHMvbWFjaC10eXBlcyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm0vdG9vbHMvc3lzY2FsbCogJGtlcm5lbGRpci9idWlsZC8KKworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL2tlcm5lbC9tb2R1bGUubGRzICRrZXJuZWxkaXIvYnVpbGQvCisJZmkKKworCWlmIFsgLWQgYXJjaC8ke0FSQ0h9L2luY2x1ZGUgXTsgdGhlbgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC8ke0FSQ0h9L2luY2x1ZGUgJGtlcm5lbGRpci9idWlsZC8KKwlmaQorCisJY3AgLWEgaW5jbHVkZSAka2VybmVsZGlyL2J1aWxkCisKKwljcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS90b29scy9sZV9ieXRlc2hpZnQuaCAka2VybmVsZGlyL2J1aWxkLworCWNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlL3Rvb2xzL2JlX2J5dGVzaGlmdC5oICRrZXJuZWxkaXIvYnVpbGQvCisKKwkjIHJlcXVpcmVkIGZvciBnZW5lcmF0ZSBtaXNzaW5nIHN5c2NhbGxzIHByZXBhcmUgcGhhc2UKKwljcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgJGtlcm5lbGRpci9idWlsZAorCisJaWYgWyAiJHtBUkNIfSIgPSAieDg2IiBdOyB0aGVuCisJICAgICMgZmlsZXMgZm9yICdtYWtlIHByZXBhcmUnIHRvIHN1Y2NlZWQgd2l0aCBrZXJuZWwtZGV2ZWwKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsdGJsLnNoICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsaGRyLnNoICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzXzMyLmMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc182NC5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3MuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzX2NvbW1vbi5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3MuaCAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3B1cmdhdG9yeS5jICRrZXJuZWxkaXIvYnVpbGQvCisKKwkgICAgIyA0LjE4ICsgaGF2ZSB1bmlmaWVkIHRoZSBwdXJnYXRvcnkgZmlsZXMsIHNvIHdlIGlnbm9yZSBhbnkgZXJyb3JzIGlmCisJICAgICMgdGhlc2UgZmlsZXMgYXJlIG5vdCBwcmVzZW50CisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9wdXJnYXRvcnkvc2hhMjU2LmggJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3NoYTI1Ni5jICRrZXJuZWxkaXIvYnVpbGQvIDI+L2Rldi9udWxsIHx8IDoKKworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3N0YWNrLlMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3B1cmdhdG9yeS9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvcHVyZ2F0b3J5L3NldHVwLXg4Nl82NC5TICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9wdXJnYXRvcnkvZW50cnk2NC5TICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L3N0cmluZy5oICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L3N0cmluZy5jICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L2N0eXBlLmggJGtlcm5lbGRpci9idWlsZC8KKwlmaQorCisJaWYgWyAiJHtBUkNIfSIgPSAibWlwcyIgXTsgdGhlbgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9taXBzL0tidWlsZC5wbGF0Zm9ybXMgJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLS1wYXJlbnRzICQoZmluZAkgLXR5cGUgZiAtbmFtZSAiUGxhdGZvcm0iKSAka2VybmVsZGlyL2J1aWxkCisJICAgIGNwIC0tcGFyZW50cyBhcmNoL21pcHMvYm9vdC90b29scy9yZWxvY3MqICRrZXJuZWxkaXIvYnVpbGQKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvbWlwcy9rZXJuZWwvYXNtLW9mZnNldHMuYyAka2VybmVsZGlyL2J1aWxkCisJICAgIGNwIC1hIC0tcGFyZW50cyBrZXJuZWwvdGltZS90aW1lY29uc3QuYmMgJGtlcm5lbGRpci9idWlsZAorCSAgICBjcCAtYSAtLXBhcmVudHMga2VybmVsL2JvdW5kcy5jICRrZXJuZWxkaXIvYnVpbGQKKwkgICAgY3AgLWEgLS1wYXJlbnRzIEtidWlsZCAka2VybmVsZGlyL2J1aWxkCisJZmkKKworICAgICAgICAjIHJlcXVpcmVkIHRvIGJ1aWxkIHNjcmlwdHMvc2VsaW51eC9nZW5oZWFkZXJzL2dlbmhlYWRlcnMKKyAgICAgICAgY3AgLWEgLS1wYXJlbnRzIHNlY3VyaXR5L3NlbGludXgvaW5jbHVkZS8qICRrZXJuZWxkaXIvYnVpbGQvCisgICAgKQorCisgICAgIyBNYWtlIHN1cmUgdGhlIE1ha2VmaWxlIGFuZCB2ZXJzaW9uLmggaGF2ZSBhIG1hdGNoaW5nIHRpbWVzdGFtcCBzbyB0aGF0CisgICAgIyBleHRlcm5hbCBtb2R1bGVzIGNhbiBiZSBidWlsdAorICAgIHRvdWNoIC1yICRrZXJuZWxkaXIvYnVpbGQvTWFrZWZpbGUgJGtlcm5lbGRpci9idWlsZC9pbmNsdWRlL2dlbmVyYXRlZC91YXBpL2xpbnV4L3ZlcnNpb24uaAorCisgICAgIyBDb3B5IC5jb25maWcgdG8gaW5jbHVkZS9jb25maWcvYXV0by5jb25mIHNvICJtYWtlIHByZXBhcmUiIGlzIHVubmVjZXNzYXJ5LgorICAgIGNwICRrZXJuZWxkaXIvYnVpbGQvLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkL2luY2x1ZGUvY29uZmlnL2F1dG8uY29uZgorCisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KIH0KKwogIyBFbnN1cmUgd2UgZG9uJ3QgcmFjZSBhZ2FpbnN0ICJtYWtlIHNjcmlwdHMiIGR1cmluZyBjcGlvCiBkb19pbnN0YWxsW2xvY2tmaWxlc10gPSAiJHtUTVBESVJ9L2tlcm5lbC1zY3JpcHRzLmxvY2siCiAKLVBBQ0tBR0VTID0gImtlcm5lbC1kZXZzcmMiCi1GSUxFU18ke1BOfSA9ICIke0tFUk5FTF9TUkNfUEFUSH0iCi1SREVQRU5EU18ke1BOfSA9ICJiYyIKK0ZJTEVTXyR7UE59ID0gIiR7S0VSTkVMX0JVSUxEX1JPT1R9ICR7S0VSTkVMX1NSQ19QQVRIfSIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtLRVJORUxfQlVJTERfUk9PVH0qL2J1aWxkL3NjcmlwdHMvKi8uZGVidWcvKiIKKworUkRFUEVORFNfJHtQTn0gPSAiYmMgcHl0aG9uIGZsZXggYmlzb24gJHtUQ0xJQkN9LXV0aWxzIgorIyA0LjE1KyBuZWVkcyB0aGVzZSBuZXh0IHR3byBSREVQRU5EUworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wtZGV2IHV0aWwtbGludXgiCisjIGFuZCB4ODYgbmVlZHMgYSBiaXQgbW9yZSBmb3IgNC4xNSsKK1JERVBFTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggNDIwMWZhZi4uMjNjYjM1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCkBAIC0xMCw2ICsxMCw4IEBACiAKIGluaGVyaXQga2VybmVsCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworIyBmb3IgbmN1cnNlcyB0ZXN0cworaW5oZXJpdCBwa2djb25maWcKIAogIyBwcm92aWRlIHRoaXMgLmluYyB0byBzZXQgc3BlY2lmaWMgcmV2aXNpb25zCiBpbmNsdWRlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi1yZXZpc2lvbnMuaW5jCkBAIC0yOCwxMCArMzAsMTIgQEAKIFNSQ1JFVl9tYWNoaW5lID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiBTUkNSRVZfbWV0YSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogCi1MSU5VWF9WRVJTSU9OID89ICI0LjE2LXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuMTktcmMrIgogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz0gIi15b2N0b2Rldi0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKIERFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmE4YjYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCi0jIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZwotIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgotIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KLXB5dGhvbiAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKLX0KLQotU1JDUkVWX21hY2hpbmUgPz0gImVmODhjMzMyNmY2MmNlYzRiOTgzNDAzMjRkZGJlN2Y3Zjc3MDRmZDUiCi1TUkNSRVZfbWV0YSA/PSAiMmFlNjUyMjZmNjRlZDVjODg4ZDYwZWVmNzZiNjI0OWRiNjc4ZDA2MCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yOCIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11cHBjfHFlbXVtaXBzKSIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE2NmE0MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCi19Ci0KLVNSQ1JFVl9tYWNoaW5lID89ICJlMjVkYmZlOTUzMDJlZWFhMWEwM2E4MjhkMDVjMDk0Nzk1NzQ0ODhhIgotU1JDUkVWX21ldGEgPz0gIjQ1YzI1NmE1Y2E2Zjk0NzhiY2UyMTJmZWMxOWUyYmMyNzM0NzI2MzEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xNTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE1LjE4IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3N2RlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOC5iYgpAQCAtMCwwICsxLDQzIEBACitLQlJBTkNIID89ICJ2NC4xOC9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKKyMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCisjIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCisjIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgorcHl0aG9uICgpIHsKKyAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiOGUwMGMzMGNlMjJmMzc4ZWNiN2YyNDNiMWRmM2QyMDliOGVlMjliYyIKK1NSQ1JFVl9tZXRhID89ICJiZjk4ZTE5NWE0Y2YyNDA0YTA2NDA1NmIzNTkzZTgzYTdkZTg0ZjI1IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTg7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xOC4xNCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCisKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgorREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK0tNRVRBID0gImtlcm5lbC1tZXRhIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCisKK0xJTlVYX0tFUk5FTF9UWVBFID0gInByZWVtcHQtcnQiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICIocWVtdXg4NnxxZW11eDg2LTY0fHFlbXVhcm18cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I0ZWYzYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvdGlueS9jb21tb24tcGMiCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJ0aW55IgotS0NPTkZJR19NT0RFID0gIi0tYWxsbm9jb25maWciCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjgiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICJlNTYyMjY3YmFlNWI1MThhY2NhODgwYzkyOWZiYmRmNmJlMDQ3ZTBhIgotU1JDUkVWX21ldGEgPz0gIjJhZTY1MjI2ZjY0ZWQ1Yzg4OGQ2MGVlZjc2YjYyNDlkYjY3OGQwNjAiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMi5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjEyO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmOWIzYzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE1L3N0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE1LjE4IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1TUkNSRVZfbWFjaGluZSA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tZXRhID89ICI0NWMyNTZhNWNhNmY5NDc4YmNlMjEyZmVjMTllMmJjMjczNDcyNjMxIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTU7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRkVBVFVSRVMgPSAiIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTFkNDFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOC5iYgpAQCAtMCwwICsxLDI5IEBACitLQlJBTkNIID89ICJ2NC4xOC9zdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKK0xJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCitLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xOC4xNCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitTUkNSRVZfbWFjaGluZSA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tZXRhID89ICJiZjk4ZTE5NWE0Y2YyNDA0YTA2NDA1NmIzNTkzZTgzYTdkZTg0ZjI1IgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTg7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRkVBVFVSRVMgPSAiIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwppbmRleCAzYmI4NzJhLi4xZWJmYjYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTIsNyArMiw3IEBACiBTRUNUSU9OID0gImtlcm5lbCIKIExJQ0VOU0UgPSAiR1BMdjIiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ3ODEwZmFiNzQ4N2ZiMGFhZDMyN2I3NmYxYmU3Y2Q3IgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKIApAQCAtMjgsNiArMjgsOCBAQAogCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBmZWF0dXJlcy9kZWJ1Zy9wcmludGsuc2NjIgogCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdudW1hJywgJ2ZlYXR1cmVzL251bWEvbnVtYS5zY2MnLCAnJywgZCl9IgorCiAjIEEgS01BQ0hJTkUgaXMgdGhlIG1hcHBpbmcgb2YgYSB5b2N0byAkTUFDSElORSB0byB3aGF0IGlzIGJ1aWx0CiAjIGJ5IHRoZSBrZXJuZWwuIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBicmFuY2ggdGhhdCBzaG91bGQgYmUgYnVpbHQsCiAjIGFuZCBpdCBjYW4gYmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb3Igc2hhcmVkCkBAIC02NywzICs2OSw2IEBACiBhZGR0YXNrIGtlcm5lbF92ZXJzaW9uX3Nhbml0eV9jaGVjayBhZnRlciBkb19rZXJuZWxfbWV0YWRhdGEgZG9fa2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19jb21waWxlCiBhZGR0YXNrIHZhbGlkYXRlX2JyYW5jaGVzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb19rZXJuZWxfY2hlY2tvdXQKIGFkZHRhc2sga2VybmVsX2NvbmZpZ2NoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQorCisjIGVuYWJsZSBrZXJuZWwtc2FtcGxlIGZvciBvZXFhL3J1bnRpbWUvY2FzZXMncyBrc2FtcGxlLnB5IHRlc3QKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGZlYXR1cmVzL2tlcm5lbC1zYW1wbGUva2VybmVsLXNhbXBsZS5zY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWVhMDViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImI4NGVjZWZjMjQzYTZlZDY3ZDhiNjAyMDM5NDk2M2RlMTI0MGE5ZjAiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImU1NjIyNjdiYWU1YjUxOGFjY2E4ODBjOTI5ZmJiZGY2YmUwNDdlMGEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiMTViMWFiNjhmNzNmYTYwZGQ5NWE3NGM2NDBlODdlMDVmYWQxNzE2ZCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImU1NjIyNjdiYWU1YjUxOGFjY2E4ODBjOTI5ZmJiZGY2YmUwNDdlMGEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJlNTYyMjY3YmFlNWI1MThhY2NhODgwYzkyOWZiYmRmNmJlMDQ3ZTBhIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZTU2MjI2N2JhZTViNTE4YWNjYTg4MGM5MjlmYmJkZjZiZTA0N2UwYSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjU3YTNmNzJhMDIwZmM4NGYyZGE1YjBiNGM1ZGU0Y2RiYzIyYjMyODQiCi1TUkNSRVZfbWFjaGluZSA/PSAiZTU2MjI2N2JhZTViNTE4YWNjYTg4MGM5MjlmYmJkZjZiZTA0N2UwYSIKLVNSQ1JFVl9tZXRhID89ICIyYWU2NTIyNmY2NGVkNWM4ODhkNjBlZWY3NmI2MjQ5ZGI2NzhkMDYwIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTIuMjgiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTM2NzBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotS0JSQU5DSCA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcwotS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTUvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjQuMTUvc3RhbmRhcmQvcWVtdWFybTY0IgotS0JSQU5DSF9xZW11bWlwcyA/PSAidjQuMTUvc3RhbmRhcmQvbXRpLW1hbHRhMzIiCi1LQlJBTkNIX3FlbXVwcGMgID89ICJ2NC4xNS9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11eDg2ICA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjQuMTUvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAidjQuMTUvc3RhbmRhcmQvbXRpLW1hbHRhNjQiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImQxNmIxMGZiNjk5NzRmMTgwNGEwMmYyNjc4ZjQwZDIyYzgwNTI2Y2YiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiMTgyZWFlZmFiNzEyZjQzNjAxMjZlMDQ0Yzc1OGU3NWQ3NjNkMDVjNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImUyNWRiZmU5NTMwMmVlYWExYTAzYTgyOGQwNWMwOTQ3OTU3NDQ4OGEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJlMjVkYmZlOTUzMDJlZWFhMWEwM2E4MjhkMDVjMDk0Nzk1NzQ0ODhhIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImNlMzg3NmEwOTE0NzcyNjBmY2IxMTk3ZTNjNjU2NWRmYmY5YzZlODAiCi1TUkNSRVZfbWFjaGluZSA/PSAiZTI1ZGJmZTk1MzAyZWVhYTFhMDNhODI4ZDA1YzA5NDc5NTc0NDg4YSIKLVNSQ1JFVl9tZXRhID89ICI0NWMyNTZhNWNhNmY5NDc4YmNlMjEyZmVjMTllMmJjMjczNDcyNjMxIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE1O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTUuMTgiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm0gPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMTYwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOC5iYgpAQCAtMCwwICsxLDQ4IEBACitLQlJBTkNIID89ICJ2NC4xOC9zdGFuZGFyZC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCitLQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xOC9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKK0tCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xOC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xOC9zdGFuZGFyZC9tdGktbWFsdGEzMiIKK0tCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE4L3N0YW5kYXJkL3FlbXVwcGMiCitLQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xOC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xOC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xOC9zdGFuZGFyZC9tdGktbWFsdGE2NCIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiMDU3M2VkM2M3MzdjODJiMjRmZDY2MWNjNWVhOTYxY2FjMDdlYTJmZSIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI0NjUyNTJiYTBlYzAwYWUxMDM5N2NiNDYyM2MzZDc3Yzg5ZTU0MmE1IgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiMzM4NTliMzA3N2M4M2Q4YTAyNDk0NmJhMDZhNTk5OTA1NDZmY2JjNyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjMzODU5YjMwNzdjODNkOGEwMjQ5NDZiYTA2YTU5OTkwNTQ2ZmNiYzciCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICIzMzg1OWIzMDc3YzgzZDhhMDI0OTQ2YmEwNmE1OTk5MDU0NmZjYmM3IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiNmQ5MWRjNjI4MTFmNDY4OGVmYzY3ODQ1MTg1ODU4NjQ1YjRjY2ZiOCIKK1NSQ1JFVl9tYWNoaW5lID89ICIzMzg1OWIzMDc3YzgzZDhhMDI0OTQ2YmEwNmE1OTk5MDU0NmZjYmM3IgorU1JDUkVWX21ldGEgPz0gImJmOThlMTk1YTRjZjI0MDRhMDY0MDU2YjM1OTNlODNhN2RlODRmMjUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTg7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCitMSU5VWF9WRVJTSU9OID89ICI0LjE4LjE0IgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11YXJtfHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI5NDAyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKLURFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2ZpbGVzL2JhYmVsdHJhY2UvYmFiZWx0cmFjZS0ke1BWfS50YXIuYnoyIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2U4Y2RhZmVjM2FjMDM0NmEzODk4NzBlODdiZjEzNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY0MzAzOTkyM2EwYWJjNzVhMjViM2Q1OTRjZWUwMDE3NDIzYjU3ZjEwZDJiNjI1ZTk2ZWQxZThkNDg5MWZjMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVjMzFjNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS42LmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQmFiZWx0cmFjZSAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5lZmZpY2lvcy5jb20vYmFiZWx0cmFjZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvYmFiZWx0cmFjZSIKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuNSIKK1NSQ1JFViA9ICI0ZjEwYTRhZGFiZWU1Y2E2MWMyN2JhMzk5YjM0Mzg1MDVlMGNkNmRlIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlYnVnLWluZm8iCisKK0FTTkVFREVEID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzLzAwMDEtRml4LWJ0cmZzLVJlbW92ZS11bm5lY2Vzc2FyeS1mc19pbmZvLXBhcmFtZXRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzLzAwMDEtRml4LWJ0cmZzLVJlbW92ZS11bm5lY2Vzc2FyeS1mc19pbmZvLXBhcmFtZXRlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmU0ZWU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvMDAwMS1GaXgtYnRyZnMtUmVtb3ZlLXVubmVjZXNzYXJ5LWZzX2luZm8tcGFyYW1ldGVyLnBhdGNoCkBAIC0wLDAgKzEsMTE2IEBACitGcm9tIDUxYWIwYjFkYTI5MzU0Mzc1YTE5Zjg2NWFiY2QyMzNkZDIxNzgyOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEplYW5zb24gPG1qZWFuc29uQGVmZmljaW9zLmNvbT4KK0RhdGU6IE1vbiwgMTggSnVuIDIwMTggMTQ6NTM6MTkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4OiBidHJmczogUmVtb3ZlIHVubmVjZXNzYXJ5IGZzX2luZm8gcGFyYW1ldGVyCisKK1NlZSB1cHN0cmVhbSBjb21taXQ6CisKKyAgY29tbWl0IDNkY2E1Yzk0MmRhYzYwMTY0ZTZhNmU4OTE3MmYyNWI4NmFmMDdjZTcKKyAgQXV0aG9yOiBRdSBXZW5ydW8gPHdxdUBzdXNlLmNvbT4KKyAgRGF0ZTogICBUaHUgQXByIDI2IDE0OjI0OjI1IDIwMTggKzA4MDAKKworICAgIGJ0cmZzOiB0cmFjZTogUmVtb3ZlIHVubmVjZXNzYXJ5IGZzX2luZm8gcGFyYW1ldGVyIGZvciBidHJmc19fcmVzZXJ2ZV9leHRlbnQgZXZlbnQgY2xhc3MKKworICAgIGZzX2luZm8gY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGJ0cmZzX2Jsb2NrX2dyb3VwX2NhY2hlLCBhbmQgYWxsCisgICAgYnRyZnNfYmxvY2tfZ3JvdXBfY2FjaGUgaXMgY3JlYXRlZCBieSBidHJmc19jcmVhdGVfYmxvY2tfZ3JvdXBfY2FjaGUoKQorICAgIHdpdGggZnNfaW5mbyBpbml0aWFsaXplZCwgbm8gbmVlZCB0byB3b3JyeSBhYm91dCBOVUxMIHBvaW50ZXIKKyAgICBkZXJlZmVyZW5jZS4KKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNub3llcnNAZWZmaWNpb3MuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL2J0cmZzLmggfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbnN0cnVtZW50YXRpb24vZXZlbnRzL2x0dG5nLW1vZHVsZS9idHJmcy5oIGIvaW5zdHJ1bWVudGF0aW9uL2V2ZW50cy9sdHRuZy1tb2R1bGUvYnRyZnMuaAoraW5kZXggNzVjYzczYi4uZmQxYjZiOCAxMDA2NDQKKy0tLSBhL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL2J0cmZzLmgKKysrKyBiL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL2J0cmZzLmgKK0BAIC0xNjU4LDggKzE2NTgsNTcgQEAgTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9JTlNUQU5DRShidHJmc19fcmVzZXJ2ZWRfZXh0ZW50LCAgYnRyZnNfcmVzZXJ2ZWRfZXh0ZW50X2YKKyAKKyAjZW5kaWYgLyogI2Vsc2UgI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxMCwwKSkgKi8KKyAKKy0jaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LDE0LDApKQorKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsMTgsMCkpCisrTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9NQVAoZmluZF9mcmVlX2V4dGVudCwKKysKKysJYnRyZnNfZmluZF9mcmVlX2V4dGVudCwKKysKKysJVFBfUFJPVE8oY29uc3Qgc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmluZm8sIHU2NCBudW1fYnl0ZXMsIHU2NCBlbXB0eV9zaXplLAorKwkJIHU2NCBkYXRhKSwKKysKKysJVFBfQVJHUyhpbmZvLCBudW1fYnl0ZXMsIGVtcHR5X3NpemUsIGRhdGEpLAorKworKwlUUF9GSUVMRFMoCisrCQljdGZfYXJyYXkodTgsIGZzaWQsIGluZm8tPmZzaWQsIEJUUkZTX1VVSURfU0laRSkKKysJCWN0Zl9pbnRlZ2VyKHU2NCwgbnVtX2J5dGVzLCBudW1fYnl0ZXMpCisrCQljdGZfaW50ZWdlcih1NjQsIGVtcHR5X3NpemUsIGVtcHR5X3NpemUpCisrCQljdGZfaW50ZWdlcih1NjQsIGRhdGEsIGRhdGEpCisrCSkKKyspCisrCisrTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9DTEFTUyhidHJmc19fcmVzZXJ2ZV9leHRlbnQsCisrCisrCVRQX1BST1RPKGNvbnN0IHN0cnVjdCBidHJmc19ibG9ja19ncm91cF9jYWNoZSAqYmxvY2tfZ3JvdXAsIHU2NCBzdGFydCwKKysJCSB1NjQgbGVuKSwKKysKKysJVFBfQVJHUyhibG9ja19ncm91cCwgc3RhcnQsIGxlbiksCisrCisrCVRQX0ZJRUxEUygKKysJCWN0Zl9hcnJheSh1OCwgZnNpZCwgYmxvY2tfZ3JvdXAtPmZzX2luZm8tPmZzaWQsIEJUUkZTX1VVSURfU0laRSkKKysJCWN0Zl9pbnRlZ2VyKHU2NCwgYmdfb2JqZWN0aWQsIGJsb2NrX2dyb3VwLT5rZXkub2JqZWN0aWQpCisrCQljdGZfaW50ZWdlcih1NjQsIGZsYWdzLCBibG9ja19ncm91cC0+ZmxhZ3MpCisrCQljdGZfaW50ZWdlcih1NjQsIHN0YXJ0LCBzdGFydCkKKysJCWN0Zl9pbnRlZ2VyKHU2NCwgbGVuLCBsZW4pCisrCSkKKyspCisrCisrTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9JTlNUQU5DRShidHJmc19fcmVzZXJ2ZV9leHRlbnQsIGJ0cmZzX3Jlc2VydmVfZXh0ZW50LAorKworKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXBfY2FjaGUgKmJsb2NrX2dyb3VwLCB1NjQgc3RhcnQsCisrCQkgdTY0IGxlbiksCisrCisrCVRQX0FSR1MoYmxvY2tfZ3JvdXAsIHN0YXJ0LCBsZW4pCisrKQorKworK0xUVE5HX1RSQUNFUE9JTlRfRVZFTlRfSU5TVEFOQ0UoYnRyZnNfX3Jlc2VydmVfZXh0ZW50LCBidHJmc19yZXNlcnZlX2V4dGVudF9jbHVzdGVyLAorKworKwlUUF9QUk9UTyhjb25zdCBzdHJ1Y3QgYnRyZnNfYmxvY2tfZ3JvdXBfY2FjaGUgKmJsb2NrX2dyb3VwLCB1NjQgc3RhcnQsCisrCQkgdTY0IGxlbiksCisrCisrCVRQX0FSR1MoYmxvY2tfZ3JvdXAsIHN0YXJ0LCBsZW4pCisrKQorIAorKyNlbGlmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxNCwwKSkKKyBMVFROR19UUkFDRVBPSU5UX0VWRU5UX01BUChmaW5kX2ZyZWVfZXh0ZW50LAorIAorIAlidHJmc19maW5kX2ZyZWVfZXh0ZW50LAorQEAgLTE2NzAsNiArMTcxOSw3IEBAIExUVE5HX1RSQUNFUE9JTlRfRVZFTlRfTUFQKGZpbmRfZnJlZV9leHRlbnQsCisgCVRQX0FSR1MoaW5mbywgbnVtX2J5dGVzLCBlbXB0eV9zaXplLCBkYXRhKSwKKyAKKyAJVFBfRklFTERTKAorKwkJY3RmX2FycmF5KHU4LCBmc2lkLCBpbmZvLT5mc2lkLCBCVFJGU19VVUlEX1NJWkUpCisgCQljdGZfaW50ZWdlcih1NjQsIG51bV9ieXRlcywgbnVtX2J5dGVzKQorIAkJY3RmX2ludGVnZXIodTY0LCBlbXB0eV9zaXplLCBlbXB0eV9zaXplKQorIAkJY3RmX2ludGVnZXIodTY0LCBkYXRhLCBkYXRhKQorQEAgLTE2ODUsNiArMTczNSw3IEBAIExUVE5HX1RSQUNFUE9JTlRfRVZFTlRfQ0xBU1MoYnRyZnNfX3Jlc2VydmVfZXh0ZW50LAorIAlUUF9BUkdTKGluZm8sIGJsb2NrX2dyb3VwLCBzdGFydCwgbGVuKSwKKyAKKyAJVFBfRklFTERTKAorKwkJY3RmX2FycmF5KHU4LCBmc2lkLCBpbmZvLT5mc2lkLCBCVFJGU19VVUlEX1NJWkUpCisgCQljdGZfaW50ZWdlcih1NjQsIGJnX29iamVjdGlkLCBibG9ja19ncm91cC0+a2V5Lm9iamVjdGlkKQorIAkJY3RmX2ludGVnZXIodTY0LCBmbGFncywgYmxvY2tfZ3JvdXAtPmZsYWdzKQorIAkJY3RmX2ludGVnZXIodTY0LCBzdGFydCwgc3RhcnQpCitAQCAtMTcyMiw2ICsxNzczLDcgQEAgTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVF9NQVAoZmluZF9mcmVlX2V4dGVudCwKKyAJVFBfQVJHUyhpbmZvLCBudW1fYnl0ZXMsIGVtcHR5X3NpemUsIGRhdGEpLAorIAorIAlUUF9GSUVMRFMoCisrCQljdGZfYXJyYXkodTgsIGZzaWQsIGluZm8tPmZzaWQsIEJUUkZTX1VVSURfU0laRSkKKyAJCWN0Zl9pbnRlZ2VyKHU2NCwgbnVtX2J5dGVzLCBudW1fYnl0ZXMpCisgCQljdGZfaW50ZWdlcih1NjQsIGVtcHR5X3NpemUsIGVtcHR5X3NpemUpCisgCQljdGZfaW50ZWdlcih1NjQsIGRhdGEsIGRhdGEpCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy8wMDAxLUZpeC1uZXQtZXhwb3NlLXNrLXdtZW0taW4tc29ja19leGNlZWRfYnVmX2xpbWl0LXRyYWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy8wMDAxLUZpeC1uZXQtZXhwb3NlLXNrLXdtZW0taW4tc29ja19leGNlZWRfYnVmX2xpbWl0LXRyYWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJlMTJkZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzLzAwMDEtRml4LW5ldC1leHBvc2Utc2std21lbS1pbi1zb2NrX2V4Y2VlZF9idWZfbGltaXQtdHJhYy5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIDllNjdiNGM5NGI5NDQ5MzEyM2QzODM3OWJkOWIzZWNlYWUyM2E2ZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIEplYW5zb24gPG1qZWFuc29uQGVmZmljaW9zLmNvbT4KK0RhdGU6IEZyaSwgNyBTZXAgMjAxOCAxMjoyMToxMiAtMDQwMAorU3ViamVjdDogW1BBVENIXSBGaXg6IG5ldDogZXhwb3NlIHNrIHdtZW0gaW4gc29ja19leGNlZWRfYnVmX2xpbWl0IHRyYWNlcG9pbnQKKyAoNC4xOSkKKworU2VlIHVwc3RyZWFtIGNvbW1pdDoKKworICBjb21taXQgZDZmMTk5MzhlYjAzMWVlMjE1ODI3Mjc1N2RiMzMyNTgxNTNhZTU5YworICBBdXRob3I6IFlhZmFuZyBTaGFvIDxsYW9hci5zaGFvQGdtYWlsLmNvbT4KKyAgRGF0ZTogICBTdW4gSnVsIDEgMjM6MzE6MzAgMjAxOCArMDgwMAorCisgICAgbmV0OiBleHBvc2Ugc2sgd21lbSBpbiBzb2NrX2V4Y2VlZF9idWZfbGltaXQgdHJhY2Vwb2ludAorCisgICAgQ3VycmVudGx5IHRyYWNlX3NvY2tfZXhjZWVkX2J1Zl9saW1pdCgpIG9ubHkgc2hvdyBybWVtIGluZm8sCisgICAgYnV0IHdtZW0gbGltaXQgbWF5IGFsc28gYmUgaGl0LgorICAgIFNvIGV4cG9zZSB3bWVtIGluZm8gaW4gdGhpcyB0cmFjZXBvaW50IGFzIHdlbGwuCisKKyAgICBSZWdhcmRpbmcgbWVtY2csIEkgdGhpbmsgaXQgaXMgYmV0dGVyIHRvIGludHJvZHVjZSBhIG5ldyB0cmFjZXBvaW50KGlmCisgICAgdGhhdCBpcyBuZWVkZWQpLCBpLmUuIHRyYWNlX21lbWNnX2xpbWl0X2hpdCBvdGhlciB0aGFuIHNob3cgbWVtY2cgaW5mbyBpbgorICAgIHRyYWNlX3NvY2tfZXhjZWVkX2J1Zl9saW1pdC4KKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNub3llcnNAZWZmaWNpb3MuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL3NvY2suaCB8IDIzICsrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL3NvY2suaCBiL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL3NvY2suaAoraW5kZXggNWNkMDJjYS4uY2QwYzkyYiAxMDA2NDQKKy0tLSBhL2luc3RydW1lbnRhdGlvbi9ldmVudHMvbHR0bmctbW9kdWxlL3NvY2suaAorKysrIGIvaW5zdHJ1bWVudGF0aW9uL2V2ZW50cy9sdHRuZy1tb2R1bGUvc29jay5oCitAQCAtMjEsNyArMjEsMjggQEAgTFRUTkdfVFJBQ0VQT0lOVF9FVkVOVChzb2NrX3JjdnF1ZXVlX2Z1bGwsCisgCSkKKyApCisgCistI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwxNSwwKSkKKysjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LDE5LDApKQorKworK0xUVE5HX1RSQUNFUE9JTlRfRVZFTlQoc29ja19leGNlZWRfYnVmX2xpbWl0LAorKworKwlUUF9QUk9UTyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwcm90byAqcHJvdCwgbG9uZyBhbGxvY2F0ZWQsIGludCBraW5kKSwKKysKKysJVFBfQVJHUyhzaywgcHJvdCwgYWxsb2NhdGVkLCBraW5kKSwKKysKKysJVFBfRklFTERTKAorKwkJY3RmX3N0cmluZyhuYW1lLCBwcm90LT5uYW1lKQorKwkJY3RmX2FycmF5KGxvbmcsIHN5c2N0bF9tZW0sIHByb3QtPnN5c2N0bF9tZW0sIDMpCisrCQljdGZfaW50ZWdlcihsb25nLCBhbGxvY2F0ZWQsIGFsbG9jYXRlZCkKKysJCWN0Zl9pbnRlZ2VyKGludCwgc3lzY3RsX3JtZW0sIHNrX2dldF9ybWVtMChzaywgcHJvdCkpCisrCQljdGZfaW50ZWdlcihpbnQsIHJtZW1fYWxsb2MsIGF0b21pY19yZWFkKCZzay0+c2tfcm1lbV9hbGxvYykpCisrCQljdGZfaW50ZWdlcihpbnQsIHN5c2N0bF93bWVtLCBza19nZXRfd21lbTAoc2ssIHByb3QpKQorKwkJY3RmX2ludGVnZXIoaW50LCB3bWVtX2FsbG9jLCByZWZjb3VudF9yZWFkKCZzay0+c2tfd21lbV9hbGxvYykpCisrCQljdGZfaW50ZWdlcihpbnQsIHdtZW1fcXVldWVkLCBzay0+c2tfd21lbV9xdWV1ZWQpCisrCQljdGZfaW50ZWdlcihpbnQsIGtpbmQsIGtpbmQpCisrCSkKKyspCisrCisrI2VsaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lPTig0LDE1LDApKQorIAorIExUVE5HX1RSQUNFUE9JTlRfRVZFTlQoc29ja19leGNlZWRfYnVmX2xpbWl0LAorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNDY5NjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU0VDVElPTiA9ICJkZXZlbCIKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBLRVJORUwgTU9EVUxFIgotREVTQ1JJUFRJT04gPSAiVGhlIGx0dG5nLW1vZHVsZXMgMi4wIHBhY2thZ2UgY29udGFpbnMgdGhlIGtlcm5lbCB0cmFjZXIgbW9kdWxlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NjEzZDFmOGE5NTg3YmQ3YjM2NjE5MTgzMDM2NGIzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IG1vZHVsZQotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2fHBvd2VycGN8YWFyY2g2NHxtaXBzfG5pb3MyfGFybSkuKi1saW51eCcKLQotU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9CVUlMRF9SVU5USU1FX0JVR19PTi12cy1nY2M3LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjgxMTAwOTlmNDYxNWZjODlhNzRmZmU5MTg5YjU2Y2ZjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA0YTA4MGM4MTc0M2ViMjlkMTgxYmFjMjljZWIwYzE1ODE5YTJmNDIxMDc5M2YyY2M5OTU4ZDg4NTQzNTAyOWYiCi0KLWV4cG9ydCBJTlNUQUxMX01PRF9ESVI9Imtlcm5lbC9sdHRuZy1tb2R1bGVzIgotCi1FWFRSQV9PRU1BS0UgKz0gIktFUk5FTERJUj0nJHtTVEFHSU5HX0tFUk5FTF9ESVJ9JyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBEZWxldGUgZW1wdHkgZGlyZWN0b3JpZXMgdG8gYXZvaWQgUUEgZmFpbHVyZXMgaWYgbm8gbW9kdWxlcyB3ZXJlIGJ1aWx0Ci0JZmluZCAke0R9LyR7bm9uYXJjaF9iYXNlX2xpYmRpcn0gLWRlcHRoIC10eXBlIGQgLWVtcHR5IC1leGVjIHJtZGlyIHt9IFw7Ci19Ci0KLXB5dGhvbiBkb19wYWNrYWdlX3ByZXBlbmQoKSB7Ci0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihkLmdldFZhcignRCcpLCBkLmdldFZhcignbm9uYXJjaF9iYXNlX2xpYmRpcicpWzE6XSwgJ21vZHVsZXMnKSk6Ci0gICAgICAgIGJiLndhcm4oIiVzOiBubyBtb2R1bGVzIHdlcmUgY3JlYXRlZDsgdGhpcyBtYXkgYmUgZHVlIHRvIENPTkZJR19UUkFDRVBPSU5UUyBub3QgYmVpbmcgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4iICUgZC5nZXRWYXIoJ1BOJykpCi19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmM4NjVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi4xMC43LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NFQ1RJT04gPSAiZGV2ZWwiCitTVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgS0VSTkVMIE1PRFVMRSIKK0RFU0NSSVBUSU9OID0gIlRoZSBsdHRuZy1tb2R1bGVzIDIuMCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBrZXJuZWwgdHJhY2VyIG1vZHVsZXMiCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDYxM2QxZjhhOTU4N2JkN2IzNjYxOTE4MzAzNjRiMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0yNDNiNzI1ZDcxYmI1ZGY0YTFlNTkyMGIzNDRiODZhZCBcCisgICAgICAgICAgICAgICAgICAgICIKKworaW5oZXJpdCBtb2R1bGUKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFhcmNoNjR8bWlwc3xuaW9zMnxhcm0pLiotbGludXgnCisKKyNodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy1tb2R1bGVzL2x0dG5nLW1vZHVsZXMtMi4xMC43LnRhci5iejIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1uZXQtZXhwb3NlLXNrLXdtZW0taW4tc29ja19leGNlZWRfYnVmX2xpbWl0LXRyYWMucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDNjYjQ1MjA5NDgwODNiZjE1NzNhMmU0Y2I3NDA2YWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjA0OTQyOGQzZDEzMWUxMDNhN2E3MDM4ZDE4NDczMWJmN2JjZGNlMDA1MDNmYzE5YTJjOWI1NjkzZWNiYjNiNSIKKworZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKKwlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKK30KKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKKyAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKK30KKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtQWxsb3ctbXVsdGlwbGUtYXR0ZW1wdHMtdG8tY29ubmVjdC10by1yZWxheWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS1BbGxvdy1tdWx0aXBsZS1hdHRlbXB0cy10by1jb25uZWN0LXRvLXJlbGF5ZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmEwOTc4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtQWxsb3ctbXVsdGlwbGUtYXR0ZW1wdHMtdG8tY29ubmVjdC10by1yZWxheWQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA3MGVmZjg5OTEwNGI4NmJhZTAyODYyOTI3Yzc2Y2FhZWY1ZGU1ZDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWlrYWVsIEJlY2tpdXMgPG1pa2FlbC5iZWNraXVzQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDcgTWF5IDIwMTUgMTY6MTQ6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWxsb3cgbXVsdGlwbGUgYXR0ZW1wdHMgdG8gY29ubmVjdCB0byByZWxheWQuCisKK0l0IGlzIHVuY2xlYXIgd2h5IGEgc2Vzc2lvbiBuZWVkcyB0byBiZSBtYWRlCit1bnVzYWJsZSBhZnRlciBhIGZhaWx1cmUgdG8gY29ubmVjdCB0byByZWxheWQKK3NpbmNlIGEgY2hlY2sgZm9yIGEgcmVsYXlkIGNvbm5lY3Rpb24gaXMKK2Fsd2F5cyBtYWRlIGJlZm9yZSBhIHNlc3Npb24gY2FuIGJlIGNvbmZpZ3VyZWQuCisKK1RoZSBiZWhhdmlvdXIgd2FzIGludHJvZHVjZWQgaW46CitkOTA3OGQwYzAwMGQwNGQ0OWM1OTlhNzJjMWE3MjUwMjZiNjM2ZWMwCisKK1NpZ25lZC1vZmYtYnk6IE1pa2FlbCBCZWNraXVzIDxtaWthZWwuYmVja2l1c0B3aW5kcml2ZXIuY29tPgorWyBUaGUgY29udGV4dCBoYXMgbW92ZWQsIGFkanVzdCB0aGUgaHVuayBhY2NvcmRpbmdseSBdCitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvYmluL2x0dG5nLXNlc3Npb25kL2NtZC5jIHwgICAgOCAtLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9sdHRuZy1zZXNzaW9uZC9jbWQuYyBiL3NyYy9iaW4vbHR0bmctc2Vzc2lvbmQvY21kLmMKK2luZGV4IDczYjRjZTMuLjM2ZjYyZWUgMTAwNjQ0CistLS0gYS9zcmMvYmluL2x0dG5nLXNlc3Npb25kL2NtZC5jCisrKysgYi9zcmMvYmluL2x0dG5nLXNlc3Npb25kL2NtZC5jCitAQCAtNjg5LDE0ICs2ODksNiBAQCBjbG9zZV9zb2NrOgorIAlmcmVlKHJzb2NrKTsKKyAKKyBlcnJvcjoKKy0JaWYgKHJldCAhPSBMVFROR19PSykgeworLQkJLyoKKy0JCSAqIFRoZSBjb25zdW1lciBvdXRwdXQgZm9yIHRoaXMgc2Vzc2lvbiBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZQorLQkJICogc2luY2UgdGhlIHJlbGF5ZCBjb25uZWN0aW9uIGZhaWxlZCB0aHVzIG1ha2luZyBhbnkgdHJhY2luZyBvci9hbmQKKy0JCSAqIHN0cmVhbWluZyBub3QgdXNhYmxlLgorLQkJICovCistCQljb25zdW1lci0+ZW5hYmxlZCA9IDA7CistCX0KKyAJcmV0dXJuIHJldDsKKyB9CisgCistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvbHR0bmctc2Vzc2lvbmQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWY4MTMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UKQEAgLTAsMCArMSw5IEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPUxUVG5nIDIueCBjZW50cmFsIHRyYWNpbmcgcmVnaXN0cnkgc2Vzc2lvbiBkYWVtb24KKworW1NlcnZpY2VdCitUeXBlPWZvcmtpbmcKK0V4ZWNTdGFydD0vdXNyL2Jpbi9sdHRuZy1zZXNzaW9uZCAtZAorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjUuYmIKaW5kZXggOTM2MjZkZC4uMDMxNGI1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgpAQCAtMzAsMTIgKzMwLDE3IEBACiBTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LW11bHRpcGxlLWF0dGVtcHRzLXRvLWNvbm5lY3QtdG8tcmVsYXlkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwNTEyMjRlYjk5MWFlZTA3Zjg3MjFmZjE4NzdkMGI5NiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NzgzOWViNmZjNmM2NTIxMjVmMDhhY2ZkOTM2OTcwMWMyNTE2ZWIwNWNjMjA4NDE2MGU3ZWZjN2EzZmI3MzFjIgogCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpciBtYW5wYWdlcworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibHR0bmctc2Vzc2lvbmQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKIEdST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCkBAIC01MSw2ICs1NiwxMiBAQAogSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCiBJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCit9CisKIGRvX2luc3RhbGxfcHRlc3QgKCkgewogICAgIGZvciBmIGluIE1ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3V0aWxzL3V0aWxzLnNoIDsgZG8KICAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi1wZXJsLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYtcGVybC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU3NzMxOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYtcGVybC5pbmMKQEAgLTAsMCArMSw3IEBACitpbmhlcml0IHBlcmxuYXRpdmUgY3Bhbi1iYXNlCisKKyMgRW52IHZhciB3aGljaCB0ZWxscyBwZXJsIGlmIGl0IHNob3VsZCB1c2UgaG9zdCAobm8pIG9yIHRhcmdldCAoeWVzKSBzZXR0aW5ncworZXhwb3J0IFBFUkxDT05GSUdUQVJHRVQgPSAiJHtAaXNfdGFyZ2V0KGQpfSIKK2V4cG9ydCBQRVJMX0lOQyA9ICIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0NPUkUiCitleHBvcnQgUEVSTF9MSUIgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSIKK2V4cG9ydCBQRVJMX0FSQ0hMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCmluZGV4IDkwYmJlZDIuLmJhZTQ5NDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgpAQCAtMTIsNiArMTIsNyBAQAogUFIgPSAicjkiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJzY3JpcHRpbmcgdHVpIGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbZHdhcmZdID0gIixOT19EV0FSRj0xIgogUEFDS0FHRUNPTkZJR1tzY3JpcHRpbmddID0gIixOT19MSUJQRVJMPTEgTk9fTElCUFlUSE9OPTEscGVybCBweXRob24iCiAjIGd1aSBzdXBwb3J0IHdhcyBhZGRlZCB3aXRoIGtlcm5lbCAzLjYuMzUKICMgc2luY2UgMy4xMCBsaWJuZXd0IHdhcyByZXBsYWNlZCBieSBzbGFuZwpAQCAtMjEsMjQgKzIyLDI2IEBACiBQQUNLQUdFQ09ORklHW2xpYm51bWFdID0gIixOT19MSUJOVU1BPTEiCiBQQUNLQUdFQ09ORklHW3N5c3RlbXRhcF0gPSAiLE5PX1NEVD0xLHN5c3RlbXRhcCIKIFBBQ0tBR0VDT05GSUdbanZtdGldID0gIixOT19KVk1UST0xIgotCiAjIGxpYmF1ZGl0IHN1cHBvcnQgd291bGQgbmVlZCBzY3JpcHRpbmcgdG8gYmUgZW5hYmxlZAogUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLE5PX0xJQkFVRElUPTEsYXVkaXQiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIsLHhtbHRvLW5hdGl2ZSBhc2NpaWRvYy1uYXRpdmUiCisKKyMgbGlidW53aW5kIGlzIG5vdCB5ZXQgcG9ydGVkIGZvciBzb21lIGFyY2hpdGVjdHVyZXMKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FyYyA9ICJsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gImxpYnVud2luZCIKIAogREVQRU5EUyA9ICIgXAogICAgIHZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIFwKICAgICAke01MUFJFRklYfWVsZnV0aWxzIFwKICAgICAke01MUFJFRklYfWJpbnV0aWxzIFwKICAgICBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgeHogXAotICAgIHhtbHRvLW5hdGl2ZSBcCi0gICAgYXNjaWlkb2MtbmF0aXZlIFwKICIKIAogZG9fY29uZmlndXJlW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKIAogUFJPVklERVMgPSAidmlydHVhbC9wZXJmIgogCi1pbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoIG1hbnBhZ2VzCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQeXRob24gYmluZGluZ3MKIGluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0KQEAgLTUxLDEzICs1NCw3IEBACiBkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BhdGNoIgogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUGVybCBiaW5kaW5nCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdwZXJsbmF0aXZlJywgJycsIGQpfQotaW5oZXJpdCBjcGFuLWJhc2UKLSMgRW52IHZhciB3aGljaCB0ZWxscyBwZXJsIGlmIGl0IHNob3VsZCB1c2UgaG9zdCAobm8pIG9yIHRhcmdldCAoeWVzKSBzZXR0aW5ncwotZXhwb3J0IFBFUkxDT05GSUdUQVJHRVQgPSAiJHtAaXNfdGFyZ2V0KGQpfSIKLWV4cG9ydCBQRVJMX0lOQyA9ICIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0NPUkUiCi1leHBvcnQgUEVSTF9MSUIgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSIKLWV4cG9ydCBQRVJMX0FSQ0hMSUIgPSAiJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybC8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSIKK2luY2x1ZGUgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmYtcGVybC5pbmMnLCAnJywgZCl9CiAKIGluaGVyaXQga2VybmVsc3JjCiAKQEAgLTgwLDggKzc3LDkgQEAKICAgICBFWFRSQV9DRkxBR1M9Ii1sZHciIFwKICAgICBFWFRSQV9MREZMQUdTPSIke1BFUkZfRVhUUkFfTERGTEFHU30iIFwKICAgICBwZXJmZXhlY2Rpcj0ke2xpYmV4ZWNkaXJ9IFwKLSAgICBOT19HVEsyPTEgTk9fRFdBUkY9MSBcCisgICAgTk9fR1RLMj0xIFwKICAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyAgICBUTVBESVI9IiR7Qn0iIFwKICcKIAogRVhUUkFfT0VNQUtFICs9ICJcCkBAIC0xNDYsNiArMTQ0LDggQEAKICAgICBmb3IgcyBpbiBzb3VyY2VzOgogICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4oc3JjX2RpciwgcykKICAgICAgICAgZGVzdCA9IG9lLnBhdGguam9pbihkZXN0X2RpciwgcykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNyYyk6CisgICAgICAgICAgICBiYi5mYXRhbCgiUGF0aCBkb2VzIG5vdCBleGlzdDogJXMuIE1heWJlIFBFUkZfU1JDIGRvZXMgbm90IG1hdGNoIHRoZSBrZXJuZWwgdmVyc2lvbi4iICUgc3JjKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoc3JjLCBkZXN0KQogICAgICAgICBlbHNlOgpAQCAtMjQ2LDcgKzI0Niw2IEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tYXJjaGl2ZSAke1BOfS10ZXN0cyAke1BOfS1wZXJsICR7UE59LXB5dGhvbiIKIAogUkRFUEVORFNfJHtQTn0gKz0gImVsZnV0aWxzIGJhc2giCi1SREVQRU5EU18ke1BOfS1kb2MgKz0gIm1hbiIKIFJERVBFTkRTXyR7UE59LWFyY2hpdmUgPSsgImJhc2giCiBSREVQRU5EU18ke1BOfS1weXRob24gPSsgImJhc2ggcHl0aG9uIHB5dGhvbi1tb2R1bGVzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2F1ZGl0JywgJ2F1ZGl0LXB5dGhvbicsICcnLCBkKX0iCiBSREVQRU5EU18ke1BOfS1wZXJsID0rICJiYXNoIHBlcmwgcGVybC1tb2R1bGVzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCmluZGV4IGUyOGZkY2EuLmFkZTUxY2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKQEAgLTEsMjYgKzEsMjcgQEAKLUZyb20gYzI0OTVhNGMwNDJlNmE2NzVkYTY5YmFiMjBjYzM2NjkzOTFlOGUyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDMzMmI0ODAyNTdhYTk4YjYzZDM5YzNjOTQ4OTZhMTExNTM2ZjkzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxODozODoyNiArMDMwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRG8gbm90IGJ1aWxkIGFueXRoaW5nIGluIGhlbHAvIGFzIGl0IHJlcXVpcmVzIGl0c3Rvb2wuCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIG1lc29uLmJ1aWxkIHwgMSAtCiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDRhYzM5MzQuLjhjNDM2OWEgMTAwNjQ0CitpbmRleCAzOTg2MjczLi5hZTJmNjVlIDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTE2LDcgKzExNiw2IEBAIHN1YmRpcigndG9vbHMnKQorQEAgLTE2NCw3ICsxNjQsNiBAQCBzdWJkaXIoJ3Rvb2xzJykKICBzdWJkaXIoJ3Rlc3RzJykKICAKICBzdWJkaXIoJ2RhdGEnKQogLXN1YmRpcignaGVscCcpCiAgc3ViZGlyKCdwbycpCiAgCi0gbWVzb24uYWRkX2luc3RhbGxfc2NyaXB0KCdidWlsZC1hdXgvbWVzb25fcG9zdF9pbnN0YWxsLnNoJykKKyBtZXNvbi5hZGRfaW5zdGFsbF9zY3JpcHQoJ2J1aWxkLWF1eC9tZXNvbi9wb3N0X2luc3RhbGwuc2gnKQogLS0gCi0yLjE0LjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtZml4LW5vbi1saXRlcmFsLWZvcm1hdC1zdHJpbmctaXNzdWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1maXgtbm9uLWxpdGVyYWwtZm9ybWF0LXN0cmluZy1pc3N1ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhmOWY1ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzLzAwMDEtZml4LW5vbi1saXRlcmFsLWZvcm1hdC1zdHJpbmctaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gZGUxM2QxZjkwODMzNWNjODgyYzQ0N2U0ZDdjNDM2MGI5ZTVkYTE5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDYgU2VwIDIwMTggMTc6NDk6NDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG5vbi1saXRlcmFsIGZvcm1hdCBzdHJpbmcgaXNzdWVzCisKK2NsYW5nIGVycm9ycyBvdXQgd2hlbiB1c2luZyAtV2Vycm9yPWZvcm1hdC1ub25saXRlcmFsCitzaW5jZSB0aGUgZGVmaW5pdGlvbiBvZiBnX3N0cmR1cF92cHJpbnRmKCkgZnJvbSBnbGliLTIuMAoraXMgdXNpbmcgdmFfbGlzdCBhbmQgY2xhbmdzIHN0aWxsIHdhcm5zIHdoZXJlIGFzCitnY2MgZG9lc24ndCBkbyB0aGF0IGZvciB2YV9saXN0IGFyZ3VtZW50cworCitGaXhlcworc3JjL3NwLXdpbmRvdy5jOjk2OjI3OiBlcnJvcjogZm9ybWF0IHN0cmluZyBpcyBub3QgYSBzdHJpbmcgbGl0ZXJhbCBbLVdlcnJvciwtV2Zvcm1hdC1ub25saXRlcmFsXQorfCAgIHN0ciA9IGdfc3RyZHVwX3ZwcmludGYgKGZvcm1hdCwgYXJncyk7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvc3lzcHJvZi9tZXJnZV9yZXF1ZXN0cy82XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9zcC13aW5kb3cuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zcC13aW5kb3cuYyBiL3NyYy9zcC13aW5kb3cuYworaW5kZXggNGRmYWMyZC4uYWZmNDc3OSAxMDA2NDQKKy0tLSBhL3NyYy9zcC13aW5kb3cuYworKysrIGIvc3JjL3NwLXdpbmRvdy5jCitAQCAtODAsNyArODAsNyBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFscyBbTl9TSUdOQUxTXTsKKyBzdGF0aWMgdm9pZCBzcF93aW5kb3dfc2V0X3Byb2ZpbGVyIChTcFdpbmRvdyAgICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwUHJvZmlsZXIgKnByb2ZpbGVyKTsKKyAKKy1zdGF0aWMgdm9pZAorK3N0YXRpYyBHX0dOVUNfUFJJTlRGKDMsIDQpIHZvaWQKKyBzcF93aW5kb3dfbm90aWZ5X3VzZXIgKFNwV2luZG93ICAgICAgICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgR3RrTWVzc2FnZVR5cGUgIG1lc3NhZ2VfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICpmb3JtYXQsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy93b3Jkc2l6ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL3dvcmRzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NWIxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy93b3Jkc2l6ZS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3N5c3Byb2YvbWVyZ2VfcmVxdWVzdHMvNV0KK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gYmM3ZTNlMjdjMjhkMGJhYjhiZWE3MmYyMzE0MTkxNTMyYjJlNzg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBGcmksIDcgU2VwIDIwMTggMDE6MzA6MDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2FwdHVyZTogdXNlIHNpemUgb2Ygdm9pZCogaW5zdGVhZCBvZiBnbGliYy1zcGVjaWZpYworIF9fV09SRFNJWkUKKworX19XT1JEU0laRSBpcyBnbGliYy1zcGVjaWZpYyBzbyBzcC1jYXB0dXJlLXR5cGVzLmggZG9lc24ndCB3b3JrIHdpdGggbXVzbC4KKy0tLQorIGxpYi9jYXB0dXJlL3NwLWNhcHR1cmUtdHlwZXMuaCB8IDYgKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9jYXB0dXJlL3NwLWNhcHR1cmUtdHlwZXMuaCBiL2xpYi9jYXB0dXJlL3NwLWNhcHR1cmUtdHlwZXMuaAoraW5kZXggNDhmY2ZiOC4uMWQ2Y2QxZCAxMDA2NDQKKy0tLSBhL2xpYi9jYXB0dXJlL3NwLWNhcHR1cmUtdHlwZXMuaAorKysrIGIvbGliL2NhcHR1cmUvc3AtY2FwdHVyZS10eXBlcy5oCitAQCAtMzIsMTIgKzMyLDE0IEBAIEdfQkVHSU5fREVDTFMKKyAjZGVmaW5lIFNQX0NBUFRVUkVfTUFHSUMgKEdVSU5UMzJfVE9fTEUoMHhGRENBOTc1RSkpCisgI2RlZmluZSBTUF9DQVBUVVJFX0FMSUdOIChzaXplb2YoU3BDYXB0dXJlQWRkcmVzcykpCisgCistI2lmIF9fV09SRFNJWkUgPT0gNjQKKysjaWYgR0xJQl9TSVpFT0ZfVk9JRF9QID09IDgKKyAjIGRlZmluZSBTUF9DQVBUVVJFX0pJVE1BUF9NQVJLICAgIEdfR1VJTlQ2NF9DT05TVEFOVCgweEUwMDAwMDAwMDAwMDAwMDApCisgIyBkZWZpbmUgU1BfQ0FQVFVSRV9BRERSRVNTX0ZPUk1BVCAiMHglMDE2bHgiCistI2Vsc2UKKysjZWxpZiBHTElCX1NJWkVPRl9WT0lEX1AgPT0gNAorICMgZGVmaW5lIFNQX0NBUFRVUkVfSklUTUFQX01BUksgICAgR19HVUlOVDY0X0NPTlNUQU5UKDB4RTAwMDAwMDApCisgIyBkZWZpbmUgU1BfQ0FQVFVSRV9BRERSRVNTX0ZPUk1BVCAiMHglMDE2bGx4IgorKyNlbHNlCisrI2Vycm9yIFVua25vd24gR0xJQl9TSVpFT0ZfVk9JRF9QCisgI2VuZGlmCisgCisgI2RlZmluZSBTUF9DQVBUVVJFX0NVUlJFTlRfVElNRSAgIChzcF9jbG9ja19nZXRfY3VycmVudF90aW1lKCkpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTg5YjUyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjZmOWY5NDc5NjBiYTc5YmIxMjY5ZDhlZTQ5YjdkYjc4IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDhiOWQ1YzIyNDY2OTZlNGEzNzc2YTMxMjczMWRjN2MwMTRmYmQzMzQ3OGJiMTRkNTUxMmM2ZjFmMzVhM2IxMSIKLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2d0a10gPSAiLURlbmFibGVfZ3RrPXRydWUsLURlbmFibGVfZ3RrPWZhbHNlLGd0ayszIgotUEFDS0FHRUNPTkZJR1tzeXNwcm9mZF0gPSAiLUR3aXRoX3N5c3Byb2ZkPWJ1bmRsZWQsLUR3aXRoX3N5c3Byb2ZkPW5vbmUscG9sa2l0IgotCi1TT0xJQlMgPSAiLnNvIgotRklMRVNfU09MSUJTREVWID0gIiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3Byb2ZkJywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgotCi0jIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAotICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjMwLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWRjZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjMwLjAuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImFlODk2YThhMjM2NGUxOGMwN2ZhZmE5NTczMjAyZjU5IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjljZDJjNGJlMjc3ZjAwNjk4ZGNlNDgyNTkyMTk1NTdjNGZkZGMyYzAxMjU0YjhmYWM5NTkwMGE4YzY2M2Y2MyIKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWJ1aWxkLWFueXRoaW5nLWluLWhlbHAtYXMtaXQtcmVxdWlyZXMtaXRzdG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly93b3Jkc2l6ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1ub24tbGl0ZXJhbC1mb3JtYXQtc3RyaW5nLWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1JFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIldhaXRpbmcgZm9yIHJlc29sdXRpb24gb2YgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NDYyNSIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLURlbmFibGVfZ3RrPXRydWUsLURlbmFibGVfZ3RrPWZhbHNlLGd0ayszIgorUEFDS0FHRUNPTkZJR1tzeXNwcm9mZF0gPSAiLUR3aXRoX3N5c3Byb2ZkPWJ1bmRsZWQsLUR3aXRoX3N5c3Byb2ZkPW5vbmUscG9sa2l0IgorCitTT0xJQlMgPSAiLnNvIgorRklMRVNfU09MSUJTREVWID0gIiIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3Byb2ZkJywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtQWRkZWQtYS1jb3VwbGUtb2Ytc21hbGwtc3lzcm9vdC1maXhlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtQWRkZWQtYS1jb3VwbGUtb2Ytc21hbGwtc3lzcm9vdC1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBjZWI1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUFkZGVkLWEtY291cGxlLW9mLXNtYWxsLXN5c3Jvb3QtZml4ZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGE3MTQ2NTg3MjcyMDZkMmE5OGE3MTk0YjdlNmQyOWRiZDNlMjdiOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE5IE1hciAyMDE4IDE2OjUwOjA1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZGVkIGEgY291cGxlIG9mIHNtYWxsIHN5c3Jvb3QgZml4ZXMuCi0KLSogdGFwc2V0cy5jeHggKGR3YXJmX2J1aWxkZXI6OmJ1aWxkKTogRml4IGNvbW1pdCA0ZmZlY2RkZjUuCi0gIChwYXRoX3JlbW92ZV9zeXNyb290KTogRml4IGV4dHJhICcvJyBwcmVzZW50IGF0IHN0YXJ0IG9mIHBhdGhzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIHRhcHNldHMuY3h4IHwgMTAgKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvdGFwc2V0cy5jeHgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90YXBzZXRzLmN4eAotKysrIGdpdC90YXBzZXRzLmN4eAotQEAgLTEzOTUsNyArMTM5NSw4IEBAIHN0cmluZyBwYXRoX3JlbW92ZV9zeXNyb290KGNvbnN0IHN5c3RlbXQKLSAgIHN0cmluZyByZXR2YWwgPSBwYXRoOwotICAgaWYgKCFzZXNzLnN5c3Jvb3QuZW1wdHkoKSAmJgotICAgICAgIChwb3MgPSByZXR2YWwuZmluZChzZXNzLnN5c3Jvb3QpKSAhPSBzdHJpbmc6Om5wb3MpCi0tICAgIHJldHZhbC5yZXBsYWNlKHBvcywgc2Vzcy5zeXNyb290Lmxlbmd0aCgpLCAiLyIpOwotKyAgICByZXR2YWwucmVwbGFjZShwb3MsIHNlc3Muc3lzcm9vdC5sZW5ndGgoKSwKLSsJCSAgIChzZXNzLnN5c3Jvb3QuYmFjaygpID09ICcvJyA/ICIvIjogIiIpKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotQEAgLTg0MTIsOCArODQxMywxMSBAQCBkd2FyZl9idWlsZGVyOjpidWlsZChzeXN0ZW10YXBfc2Vzc2lvbiAmCi0gCi0gICAgICAgLy8gUFIxMzMzODogdW5xdW90ZSBnbG9iIHJlc3VsdHMKLSAgICAgICBtb2R1bGVfbmFtZSA9IHVuZXNjYXBlX2dsb2JfY2hhcnMgKG1vZHVsZV9uYW1lKTsKLS0gICAgICB1c2VyX3BhdGggPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV9uYW1lLCAiIiwgc2Vzcy5zeXNlbnYpOyAvLyBjYW5vbmljYWxpemUgaXQKLS0gICAgICBpZiAoIWlzX2Z1bGx5X3Jlc29sdmVkKHVzZXJfcGF0aCwgc2Vzcy5zeXNyb290LCBzZXNzLnN5c2VudikpCi0rICAgICAgdXNlcl9wYXRoID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSwgc2Vzcy5zeXNyb290LCBzZXNzLnN5c2Vudik7IC8vIGNhbm9uaWNhbGl6ZSBpdAotKyAgICAgIC8vIE5vdGUgd2UgZG9uJ3QgbmVlZCB0byBwYXNzIHRoZSBzeXNyb290IHRvCi0rICAgICAgLy8gaXNfZnVsbHlfcmVzb2x2ZWQoKSwgc2luY2Ugd2UganVzdCBwYXNzZWQgaXQgdG8KLSsgICAgICAvLyBmaW5kX2V4ZWN1dGFibGUoKS4KLSsgICAgICBpZiAoIWlzX2Z1bGx5X3Jlc29sdmVkKHVzZXJfcGF0aCwgIiIsIHNlc3Muc3lzZW52KSkKLSAgICAgICAgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJjYW5ub3QgZmluZCBleGVjdXRhYmxlICclcyciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wYXRoLnRvX3N0cmluZygpLmNfc3RyKCkpKTsKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRGVsYXktYWRkaW5nLXN5c3Jvb3QtcGF0aC10by1tb2R1bGUtbmFtZS1pbi1jYXNlLW9mLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk5NTFhMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLURlbGF5LWFkZGluZy1zeXNyb290LXBhdGgtdG8tbW9kdWxlLW5hbWUtaW4tY2FzZS1vZi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1Gcm9tIDRmZmVjZGRmNTQzM2Q2NWE2ZjAxMjQxOTkwYzlkNTE2NTg2YjFjNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IE1vbiwgMTkgTWFyIDIwMTggMDg6NTM6NTEgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRGVsYXkgYWRkaW5nIHN5c3Jvb3QgcGF0aCB0byBtb2R1bGUgbmFtZSBpbiBjYXNlIG9mIG5vbgotIGFic29sdXRlIGV4ZWN1dGFibGUKLQotQ3VycmVudCBzdGFwIGNvZGUgYWRkcyBzeXNyb290IHByZW1hdHVyZWx5IGZvciBwcm9iZXMgdGhhdCBzcGVjaWZ5IG5vbgotYWJzb2x1dGUgcGF0aCBuYW1lLCBpLmUgbGlrZSAiZm9vIiwgc28gd2hlbiBmaW5kX2V4ZWN1dGFibGUgY2FsbGVkIGl0Ci1yZWNlaXZlcyBmdWxsIHBhdGggYXMgPHN5c3Jvb3Q+L2ZvbyBhbmQgZmluZF9leGVjdXRhYmxlIGRvZXMgbm90IHNlYXJjaAotUEFUSCB3aGlsZSBhcHBseWluZyBzeXNyb290LgotCi1GaXggZGVsYXlzIGFkZGluZyBzeXNyb290IHRpbGwgcGF0aCBpbnNpZGUgb2Ygc3lzcm9vdCBpcyBzZWFyY2hlZCBmaXJzdC4KLQotQWxzbyBmaXggbWlzc2luZyBzeXNyb290IGFkZGl0aW9uIGluIGdsb2IgZXhwYW5zaW9uIGNhc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gdGFwc2V0cy5jeHggfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC90YXBzZXRzLmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3RhcHNldHMuY3h4Ci0rKysgZ2l0L3RhcHNldHMuY3h4Ci1AQCAtNzQ2LDcgKzc0Niw3IEBAIGJhc2VfcXVlcnk6OmJhc2VfcXVlcnkoZHdmbHBwICYgZHcsIGxpdGUKLSAgICAgICAgICAgICAgIHBpZF92YWwgPSAwOwotICAgICAgICAgICAgICAgZ2V0X3N0cmluZ19wYXJhbShwYXJhbXMsIFRPS19QUk9DRVNTLCBtb2R1bGVfdmFsKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgIG1vZHVsZV92YWwgPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV92YWwsICIiLCBzZXNzLnN5c2Vudik7Ci0rICAgICAgICAgIG1vZHVsZV92YWwgPSBmaW5kX2V4ZWN1dGFibGUgKG1vZHVsZV92YWwsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpOwotICAgICAgICAgICBpZiAoIWlzX2Z1bGx5X3Jlc29sdmVkKG1vZHVsZV92YWwsICIiLCBzZXNzLnN5c2VudikpCi0gICAgICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX3ZhbC50b19zdHJpbmcoKS5jX3N0cigpKSk7Ci1AQCAtODI4Nyw3ICs4Mjg3LDYgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gKHN0cmluZylzZXNzLnN5c3Jvb3QgKyAoc3RyaW5nKW1vZHVsZV9uYW1lOwotICAgICAgICAgICAgICAgZmlsbGVkX3BhcmFtZXRlcnNbVE9LX1BST0NFU1NdID0gbmV3IGxpdGVyYWxfc3RyaW5nKG1vZHVsZV9uYW1lKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci1AQCAtODMyMSw3ICs4MzIwLDggQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgotICAgICAgICAgICBhc3NlcnQgKGxpdCk7Ci0gCi0gICAgICAgICAgIC8vIEV2YWx1YXRlIGdsb2IgaGVyZSwgYW5kIGNhbGwgZGVyaXZlX3Byb2JlcyByZWN1cnNpdmVseSB3aXRoIGVhY2ggbWF0Y2guCi0tICAgICAgICAgIGNvbnN0IGF1dG8mIGdsb2JzID0gZ2xvYl9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSk7Ci0rICAgICAgICAgIGNvbnN0IGF1dG8mIGdsb2JzID0gZ2xvYl9leGVjdXRhYmxlIChzZXNzLnN5c3Jvb3QKLSsJCQkJCSAgICAgICArIHN0cmluZyhtb2R1bGVfbmFtZSkpOwotICAgICAgICAgICB1bnNpZ25lZCByZXN1bHRzX3ByZSA9IGZpbmlzaGVkX3Jlc3VsdHMuc2l6ZSgpOwotICAgICAgICAgICBmb3IgKGF1dG8gaXQgPSBnbG9icy5iZWdpbigpOyBpdCAhPSBnbG9icy5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgICB7Ci1AQCAtODQxMyw3ICs4NDEzLDcgQEAgZHdhcmZfYnVpbGRlcjo6YnVpbGQoc3lzdGVtdGFwX3Nlc3Npb24gJgotICAgICAgIC8vIFBSMTMzMzg6IHVucXVvdGUgZ2xvYiByZXN1bHRzCi0gICAgICAgbW9kdWxlX25hbWUgPSB1bmVzY2FwZV9nbG9iX2NoYXJzIChtb2R1bGVfbmFtZSk7Ci0gICAgICAgdXNlcl9wYXRoID0gZmluZF9leGVjdXRhYmxlIChtb2R1bGVfbmFtZSwgIiIsIHNlc3Muc3lzZW52KTsgLy8gY2Fub25pY2FsaXplIGl0Ci0tICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsICIiLCBzZXNzLnN5c2VudikpCi0rICAgICAgaWYgKCFpc19mdWxseV9yZXNvbHZlZCh1c2VyX3BhdGgsIHNlc3Muc3lzcm9vdCwgc2Vzcy5zeXNlbnYpKQotICAgICAgICAgdGhyb3cgU0VNQU5USUNfRVJST1IoX0YoImNhbm5vdCBmaW5kIGV4ZWN1dGFibGUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3BhdGgudG9fc3RyaW5nKCkuY19zdHIoKSkpOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXgtUFIyMjU1MS1ieS11cGRhdGluZy10aGUtdXNlLW9mLXRpbWVycy1mb3ItdGhlLTQuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjBjM2I3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4LVBSMjI1NTEtYnktdXBkYXRpbmctdGhlLXVzZS1vZi10aW1lcnMtZm9yLXRoZS00Li5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi1Gcm9tIGZiYjI2ZTE3YTRjMDI2ZjA1YTQ5N2ZjNWQ1ODQ1MTZiYWQzYjY5NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBTbWl0aCA8ZHNtaXRoQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDYgRGVjIDIwMTcgMTQ6Mzc6NDIgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IFBSMjI1NTEgYnkgdXBkYXRpbmcgdGhlIHVzZSBvZiB0aW1lcnMgZm9yIHRoZSA0LjE1Ci0ga2VybmVsLgotCi0qIHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oOiBOZXcgZmlsZS4KLSogcnVudGltZS90aW1lLmM6IFVwZGF0ZSB0aW1lciBjYWxsYmFjayBmdW5jdGlvbiBwYXJhbWV0ZXIgdHlwZS4gVXBkYXRlCi0gIHRpbWVyIGluaXRpYWxpemF0aW9uLgotKiBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jOiBEaXR0by4KLSogcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmM6IERpdHRvLgotKiB0YXBzZXQtdGltZXJzLmN4eCAodGltZXJfZGVyaXZlZF9wcm9iZV9ncm91cDo6ZW1pdF9tb2R1bGVfZGVjbHMpOgotICBEaXR0by4gSGFuZGxlIG9sZCBhbmQgbmV3IHRpbWVyIGNhbGxiYWNrIGludGVyZmFjZS4KLSogcnVudGltZS9saW51eC9ydW50aW1lLmg6IEluY2x1ZGUgdGltZXJfY29tcGF0aWJpbGl0eS5oIGluc3RlYWQgb2YgdGltZXIuaC4KLSogdGFwc2V0L2xpbnV4L3Njc2kuc3RwOiBEaXR0by4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0KLS0tLQotIHJ1bnRpbWUvbGludXgvcnVudGltZS5oICAgICAgICAgICAgIHwgIDIgKy0KLSBydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBydW50aW1lL3RpbWUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrLS0KLSBydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jICAgICAgICB8ICA4ICsrLS0KLSBydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYyAgICAgICB8IDEzICsrKy0tLS0KLSB0YXBzZXQtdGltZXJzLmN4eCAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrLS0KLSB0YXBzZXQvbGludXgvc2NzaS5zdHAgICAgICAgICAgICAgICB8ICAyICstCi0gNyBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJ1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCi0KLWRpZmYgLS1naXQgYS9ydW50aW1lL2xpbnV4L3J1bnRpbWUuaCBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCi1pbmRleCA5YzU4NWEyLi5kZjliNzRjIDEwMDY0NAotLS0tIGEvcnVudGltZS9saW51eC9ydW50aW1lLmgKLSsrKyBiL3J1bnRpbWUvbGludXgvcnVudGltZS5oCi1AQCAtMzQsNyArMzQsNyBAQAotICNpbmNsdWRlIDxsaW51eC9jb21wYXQuaD4KLSAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLS0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KLSsjaW5jbHVkZSAidGltZXJfY29tcGF0aWJpbGl0eS5oIgotICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotICNpbmNsdWRlIDxsaW51eC9wcm9maWxlLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3JjdXBkYXRlLmg+Ci1kaWZmIC0tZ2l0IGEvcnVudGltZS9saW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmggYi9ydW50aW1lL2xpbnV4L3RpbWVyX2NvbXBhdGliaWxpdHkuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmFjMDNkZTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL3J1bnRpbWUvbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oCi1AQCAtMCwwICsxLDc2IEBACi0rLyoKLSsgKiBsaW51eC90aW1lci5oIGNvbXBhdGliaWxpdHkgZGVmaW5lcyBhbmQgaW5saW5lcwotKyAqIENvcHlyaWdodCAoQykgMjAxNyBSZWQgSGF0IEluYy4KLSsgKgotKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHN5c3RlbXRhcCwgYW5kIGlzIGZyZWUgc29mdHdhcmUuICBZb3UgY2FuCi0rICogcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAotKyAqIFB1YmxpYyBMaWNlbnNlIChHUEwpOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotKyAqIGxhdGVyIHZlcnNpb24uCi0rICovCi0rCi0rI2lmbmRlZiBfVElNRVJfQ09NUEFUSUJJTElUWV9IXwotKyNkZWZpbmUgX1RJTUVSX0NPTVBBVElCSUxJVFlfSF8KLSsKLSsjaW5jbHVkZSA8bGludXgvdGltZXIuaD4KLSsKLSsvKgotKyAqIFN0YXJ0aW5nIHdpdGggdGhlIDQuMTUga2VybmVsLCB0aGUgdGltZXIgaW50ZXJmYWNlCi0rICogY2hhbmdlZC4gT3JpZ2luYWxseSwgeW91J2QgZG8gc29tZXRoaW5nIGxpa2U6Ci0rICoKLSsgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmModW5zaWduZWQgbG9uZyB2YWwpOwotKyAqCi0rICogICBpbml0X3RpbWVyKCZ0aW1lcik7Ci0rICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKLSsgKiAgIHRpbWVyLmZ1bmN0aW9uID0gdGltZXJfZnVuYzsKLSsgKiAgIHRpbWVyLmRhdGEgPSAwOwotKyAqICAgYWRkX3RpbWVyKCZ0aW1lcik7Ci0rICoKLSsgKiBUaGUgJ2RhdGEnIHBhcmFtZXRlciB3b3VsZCBnZXQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjawotKyAqIGZ1bmN0aW9uLiBTdGFydGluZyB3aXRoIDQuMTUsIHlvdSdkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXM6Ci0rICoKLSsgKiAgIHN0YXRpYyB2b2lkIHRpbWVyX2Z1bmMoc3RydWN0IHRpbWVyX2xpc3QgKnZhbCk7Ci0rICoKLSsgKiAgIHRpbWVyX3NldHVwKCZ0aW1lciwgdGltZXJfZnVuYywgMCk7Ci0rICogICB0aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9SRUxBWV9USU1FUl9JTlRFUlZBTDsKLSsgKiAgIGFkZF90aW1lcigmdGltZXIpOwotKyAqICAgCi0rICogV2l0aCB0aGUgbmV3IGNvZGUsIHRoZSB0aW1lciB0aGF0IGNhdXNlZCB0aGUgY2FsbGJhY2sgZ2V0cyBwYXNzZWQKLSsgKiB0byB0aGUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSAnZGF0YScgZmllbGQgaGFzIGJlZW4gcmVtb3ZlZC4KLSsgKgotKyAqIFNvLCB3ZSdyZSBnb2luZyB0byB1c2UgdGhlIG5ldyBpbnRlcmZhY2UuIFRvIGhpZGUgdGhlIGRpZmZlcmVuY2VzCi0rICogYmV0d2VlbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gcGFyYW1ldGVyIHR5cGUsIHdlJ2xsIGRlZmluZSBhIG5ldwotKyAqIHR5cGUsICdzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QnLgotKyAqCi0rICogSWYgY29kZSBuZWVkcyB0byBmaWd1cmUgb3V0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3Ci0rICogaW50ZXJmYWNlLCBpdCBzaG91bGQgdGVzdCB0aGUgVElNRVJfVFJBQ0VfRkxBR01BU0sgZGVmaW5lICh3aGljaAotKyAqIG9ubHkgZXhpc3RzIGluIHRoZSBuZXcgaW50ZXJmYWNlKS4KLSsgKi8KLSsKLSsjaWYgZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykgCi0rLyogVGhpcyBpcyB0aGUgPj0gNC4xNSBrZXJuZWwgaW50ZXJmYWNlLiAqLwotKwotK3R5cGVkZWYgc3RydWN0IHRpbWVyX2xpc3QgKiBzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3Q7Ci0rCi0rI2Vsc2UKLSsvKiBUaGlzIGlzIHRoZSA8IDQuMTUga2VybmVsIGludGVyZmFjZS4gKi8KLSsKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90OwotKwotKy8qKgotKyAqIHRpbWVyX3NldHVwIC0gcHJlcGFyZSBhIHRpbWVyIGZvciBmaXJzdCB1c2UKLSsgKiBAdGltZXI6IHRoZSB0aW1lciBpbiBxdWVzdGlvbgotKyAqIEBjYWxsYmFjazogdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiB0aW1lciBleHBpcmVzCi0rICogQGZsYWdzOiBhbnkgVElNRVJfKiBmbGFncyAobm90ZSB0aGF0IGFueXRoaW5nIG90aGVyIHRoYW4gMCBpcyBhbgotKyAqIAkgICBlcnJvciwgc2luY2UgdGhpcyBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uIGNhbid0IHN1cHBvcnQgYW55Ci0rICoJICAgb2YgdGhlIFRJTUVSXyogZmxhZ3MpCi0rICovCi0rI2RlZmluZSB0aW1lcl9zZXR1cCh0aW1lciwgY2FsbGJhY2ssIGZsYWdzKQkJCVwKLSsJewkJCQkJCQlcCi0rCQlpbml0X3RpbWVyKCh0aW1lcikpOwkJCQlcCi0rCQkodGltZXIpLT5mdW5jdGlvbiA9IGNhbGxiYWNrOwkJCVwKLSsJCSh0aW1lciktPmRhdGEgPSAwOwkJCQlcCi0rCQlCVUlMRF9CVUdfT05fWkVSTygoZmxhZ3MpICE9IDApOwkJXAotKwl9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIF9USU1FUl9DT01QQVRJQklMSVRZX0hfICovCi1kaWZmIC0tZ2l0IGEvcnVudGltZS90aW1lLmMgYi9ydW50aW1lL3RpbWUuYwotaW5kZXggMmU2NjZkNS4uOTFjZWFmYSAxMDA2NDQKLS0tLSBhL3J1bnRpbWUvdGltZS5jCi0rKysgYi9ydW50aW1lL3RpbWUuYwotQEAgLTE2OCwxMCArMTY4LDEwIEBAIF9fc3RwX3RpbWVfc21wX2NhbGxiYWNrKHZvaWQgKnZhbCkKLSAKLSAvKiBUaGUgdGltZXIgY2FsbGJhY2sgaXMgaW4gYSBzb2Z0SVJRIC0tIGludGVycnVwdHMgZW5hYmxlZC4gKi8KLSBzdGF0aWMgdm9pZAotLV9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2sodW5zaWduZWQgbG9uZyB2YWwpCi0rX19zdHBfdGltZV90aW1lcl9jYWxsYmFjayhzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdW51c2VkKQotIHsKLSAgICAgc3RwX3RpbWVfdCAqdGltZSA9X19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKLS0gICAgKHZvaWQpIHZhbDsKLSsgICAgKHZvaWQpIHVudXNlZDsKLSAKLSAgICAgLyogUFI2NDgxOiBtYWtlIHN1cmUgSVJRcyBhcmUgZW5hYmxlZCBiZWZvcmUgcmVzZXR0aW5nIHRoZSB0aW1lcgotICAgICAgICAoSVJRcyBhcmUgZGlzYWJsZWQgYW5kIHRoZW4gcmVlbmFibGVkIGluCi1AQCAtMjAwLDkgKzIwMCw4IEBAIF9fc3RwX2luaXRfdGltZSh2b2lkICppbmZvKQotICAgICB0aW1lLT5mcmVxID0gX19zdHBfZ2V0X2ZyZXEoKTsKLSAgICAgX19zdHBfdGltZV9sb2NhbF91cGRhdGUoKTsKLSAKLS0gICAgaW5pdF90aW1lcigmdGltZS0+dGltZXIpOwotKyAgICB0aW1lcl9zZXR1cCgmdGltZS0+dGltZXIsIF9fc3RwX3RpbWVfdGltZXJfY2FsbGJhY2ssIDApOwotICAgICB0aW1lLT50aW1lci5leHBpcmVzID0gamlmZmllcyArIFNUUF9USU1FX1NZTkNfSU5URVJWQUw7Ci0tICAgIHRpbWUtPnRpbWVyLmZ1bmN0aW9uID0gX19zdHBfdGltZV90aW1lcl9jYWxsYmFjazsKLSAKLSAjaWZuZGVmIFNUQVBDT05GX0FERF9USU1FUl9PTgotICAgICBhZGRfdGltZXIoJnRpbWUtPnRpbWVyKTsKLWRpZmYgLS1naXQgYS9ydW50aW1lL3RyYW5zcG9ydC9yZWxheV92Mi5jIGIvcnVudGltZS90cmFuc3BvcnQvcmVsYXlfdjIuYwotaW5kZXggZjgxZDc1ZC4uMTM1OTUxYSAxMDA2NDQKLS0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKLSsrKyBiL3J1bnRpbWUvdHJhbnNwb3J0L3JlbGF5X3YyLmMKLUBAIC0zMCw3ICszMCw3IEBACi0gI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KLSAjaW5jbHVkZSA8bGludXgvbW0uaD4KLSAjaW5jbHVkZSA8bGludXgvcmVsYXkuaD4KLS0jaW5jbHVkZSA8bGludXgvdGltZXIuaD4KLSsjaW5jbHVkZSAiLi4vbGludXgvdGltZXJfY29tcGF0aWJpbGl0eS5oIgotICNpbmNsdWRlICIuLi91aWRnaWRfY29tcGF0aWJpbGl0eS5oIgotICNpbmNsdWRlICJyZWxheV9jb21wYXQuaCIKLSAKLUBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHZvaWQgX19zdHBfcmVsYXlfd2FrZXVwX3JlYWRlcnMoc3RydWN0IHJjaGFuX2J1ZiAqYnVmKQotIAkJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZidWYtPnJlYWRfd2FpdCk7Ci0gfQotIAotLXN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKLStzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV93YWtldXBfdGltZXIoc3RwX3RpbWVyX2NhbGxiYWNrX3BhcmFtZXRlcl90IHVudXNlZCkKLSB7Ci0gI2lmZGVmIFNUUF9CVUxLTU9ERQotIAlpbnQgaTsKLUBAIC0xNTEsMTAgKzE1MSw4IEBAIHN0YXRpYyB2b2lkIF9fc3RwX3JlbGF5X3dha2V1cF90aW1lcih1bnNpZ25lZCBsb25nIHZhbCkKLSBzdGF0aWMgdm9pZCBfX3N0cF9yZWxheV90aW1lcl9pbml0KHZvaWQpCi0gewotIAlhdG9taWNfc2V0KCZfc3RwX3JlbGF5X2RhdGEud2FrZXVwLCAwKTsKLS0JaW5pdF90aW1lcigmX3N0cF9yZWxheV9kYXRhLnRpbWVyKTsKLSsJdGltZXJfc2V0dXAoJl9zdHBfcmVsYXlfZGF0YS50aW1lciwgX19zdHBfcmVsYXlfd2FrZXVwX3RpbWVyLCAwKTsKLSAJX3N0cF9yZWxheV9kYXRhLnRpbWVyLmV4cGlyZXMgPSBqaWZmaWVzICsgU1RQX1JFTEFZX1RJTUVSX0lOVEVSVkFMOwotLQlfc3RwX3JlbGF5X2RhdGEudGltZXIuZnVuY3Rpb24gPSBfX3N0cF9yZWxheV93YWtldXBfdGltZXI7Ci0tCV9zdHBfcmVsYXlfZGF0YS50aW1lci5kYXRhID0gMDsKLSAJYWRkX3RpbWVyKCZfc3RwX3JlbGF5X2RhdGEudGltZXIpOwotIAlzbXBfbWIoKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvcnVudGltZS90cmFuc3BvcnQvdHJhbnNwb3J0LmMgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYwotaW5kZXggMzQwMGYyMi4uMzIwZmQxOCAxMDA2NDQKLS0tLSBhL3J1bnRpbWUvdHJhbnNwb3J0L3RyYW5zcG9ydC5jCi0rKysgYi9ydW50aW1lL3RyYW5zcG9ydC90cmFuc3BvcnQuYwotQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBfc3RwX2RldGFjaCh2b2lkKQotIH0KLSAKLSAKLS1zdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHVuc2lnbmVkIGxvbmcgdmFsKTsKLStzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpOwotIAotIC8qCi0gICogQ2FsbGVkIHdoZW4gc3RhcGlvIG9wZW5zIHRoZSBjb250cm9sIGNoYW5uZWwuCi1AQCAtMzIwLDEzICszMjAsMTIgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKLSB7Ci0gCWRidWdfdHJhbnMoMSwgImF0dGFjaFxuIik7Ci0gCV9zdHBfcGlkID0gY3VycmVudC0+cGlkOwotLSAgaWYgKF9zdHBfbmFtZXNwYWNlc19waWQgPCAxKQotLSAgICBfc3RwX25hbWVzcGFjZXNfcGlkID0gX3N0cF9waWQ7Ci0rCWlmIChfc3RwX25hbWVzcGFjZXNfcGlkIDwgMSkKLSsJCV9zdHBfbmFtZXNwYWNlc19waWQgPSBfc3RwX3BpZDsKLSAJX3N0cF90cmFuc3BvcnRfZGF0YV9mc19vdmVyd3JpdGUoMCk7Ci0tCWluaXRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOwotKwotKwl0aW1lcl9zZXR1cCgmX3N0cF9jdGxfd29ya190aW1lciwgX3N0cF9jdGxfd29ya19jYWxsYmFjaywgMCk7Ci0gCV9zdHBfY3RsX3dvcmtfdGltZXIuZXhwaXJlcyA9IGppZmZpZXMgKyBTVFBfQ1RMX1RJTUVSX0lOVEVSVkFMOwotLQlfc3RwX2N0bF93b3JrX3RpbWVyLmZ1bmN0aW9uID0gX3N0cF9jdGxfd29ya19jYWxsYmFjazsKLS0JX3N0cF9jdGxfd29ya190aW1lci5kYXRhPSAwOwotIAlhZGRfdGltZXIoJl9zdHBfY3RsX3dvcmtfdGltZXIpOwotIH0KLSAKLUBAIC0zNDEsNyArMzQwLDcgQEAgc3RhdGljIHZvaWQgX3N0cF9hdHRhY2godm9pZCkKLSAgKglub3RpZmllZC4gUmVzY2hlZHVsZXMgaXRzZWxmIGlmIHNvbWVvbmUgaXMgc3RpbGwgYXR0YWNoZWQKLSAgKgl0byB0aGUgY21kIGNoYW5uZWwuCi0gICovCi0tc3RhdGljIHZvaWQgX3N0cF9jdGxfd29ya19jYWxsYmFjayh1bnNpZ25lZCBsb25nIHZhbCkKLStzdGF0aWMgdm9pZCBfc3RwX2N0bF93b3JrX2NhbGxiYWNrKHN0cF90aW1lcl9jYWxsYmFja19wYXJhbWV0ZXJfdCB1bnVzZWQpCi0gewotIAlpbnQgZG9faW8gPSAwOwotIAl1bnNpZ25lZCBsb25nIGZsYWdzOwotZGlmZiAtLWdpdCBhL3RhcHNldC10aW1lcnMuY3h4IGIvdGFwc2V0LXRpbWVycy5jeHgKLWluZGV4IDFhNDBiY2QuLjBhYjRkNjkgMTAwNjQ0Ci0tLS0gYS90YXBzZXQtdGltZXJzLmN4eAotKysrIGIvdGFwc2V0LXRpbWVycy5jeHgKLUBAIC0xMjIsOSArMTIyLDEzIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2RlY2xzIChzeXN0ZW10YXBfc2Vzc2lvbiYgcykKLSAgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICJ9OyI7Ci0gICBzLm9wLT5uZXdsaW5lKCk7Ci0gCi0tICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlICh1bnNpZ25lZCBsb25nIHZhbCkgeyI7Ci0rICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0YXRpYyB2b2lkIGVudGVyX3RpbWVyX3Byb2JlIChzdHBfdGltZXJfY2FsbGJhY2tfcGFyYW1ldGVyX3QgdmFsKSB7IjsKLSsgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2lmIGRlZmluZWQoVElNRVJfVFJBQ0VfRkxBR01BU0spIjsKLSsgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSBjb250YWluZXJfb2YodmFsLCBzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSwgdGltZXJfbGlzdCk7IjsKLSsgIHMub3AtPm5ld2xpbmUoLTEpIDw8ICIjZWxzZSI7Ci0gICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJzdHJ1Y3Qgc3RhcF90aW1lcl9wcm9iZSogc3RwID0gJiBzdGFwX3RpbWVyX3Byb2JlcyBbdmFsXTsiOwotLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOwotKyAgcy5vcC0+bmV3bGluZSgtMSkgPDwgIiNlbmRpZiI7Ci0rICBzLm9wLT5uZXdsaW5lKDEpIDw8ICJpZiAoKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9TVEFSVElORykgfHwiOwotICAgcy5vcC0+bmV3bGluZSgpIDw8ICIgICAgKGF0b21pY19yZWFkIChzZXNzaW9uX3N0YXRlKCkpID09IFNUQVBfU0VTU0lPTl9SVU5OSU5HKSkiOwotICAgcy5vcC0+bmV3bGluZSgxKSA8PCAibW9kX3RpbWVyICgmIHN0cC0+dGltZXJfbGlzdCwgamlmZmllcyArICI7Ci0gICBlbWl0X2ludGVydmFsIChzLm9wKTsKLUBAIC0xNDgsOSArMTUyLDExIEBAIHRpbWVyX2Rlcml2ZWRfcHJvYmVfZ3JvdXA6OmVtaXRfbW9kdWxlX2luaXQgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQotICAgcy5vcC0+bmV3bGluZSgpIDw8ICJmb3IgKGk9MDsgaTwiIDw8IHByb2Jlcy5zaXplKCkgPDwgIjsgaSsrKSB7IjsKLSAgIHMub3AtPm5ld2xpbmUoMSkgPDwgInN0cnVjdCBzdGFwX3RpbWVyX3Byb2JlKiBzdHAgPSAmIHN0YXBfdGltZXJfcHJvYmVzIFtpXTsiOwotICAgcy5vcC0+bmV3bGluZSgpIDw8ICJwcm9iZV9wb2ludCA9IHN0cC0+cHJvYmUtPnBwOyI7Ci0tICBzLm9wLT5uZXdsaW5lKCkgPDwgImluaXRfdGltZXIgKCYgc3RwLT50aW1lcl9saXN0KTsiOwotLSAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZnVuY3Rpb24gPSAmIGVudGVyX3RpbWVyX3Byb2JlOyI7Ci0rCi0rICBzLm9wLT5uZXdsaW5lKCkgPDwgInRpbWVyX3NldHVwICgmIHN0cC0+dGltZXJfbGlzdCwgZW50ZXJfdGltZXJfcHJvYmUsIDApOyI7Ci0rICBzLm9wLT5uZXdsaW5lKCkgPDwgIiNpZiAhZGVmaW5lZChUSU1FUl9UUkFDRV9GTEFHTUFTSykiOwotICAgcy5vcC0+bmV3bGluZSgpIDw8ICJzdHAtPnRpbWVyX2xpc3QuZGF0YSA9IGk7IjsgLy8gTkI6IGltcG9ydGFudCEKLSsgIHMub3AtPm5ld2xpbmUoKSA8PCAiI2VuZGlmIjsKLSAgIC8vIGNvcHkgdGltZXIgcmVuZXcgY2FsY3VsYXRpb25zIGZyb20gYWJvdmUgOi0oCi0gICBzLm9wLT5uZXdsaW5lKCkgPDwgInN0cC0+dGltZXJfbGlzdC5leHBpcmVzID0gamlmZmllcyArICI7Ci0gICBlbWl0X2ludGVydmFsIChzLm9wKTsKLWRpZmYgLS1naXQgYS90YXBzZXQvbGludXgvc2NzaS5zdHAgYi90YXBzZXQvbGludXgvc2NzaS5zdHAKLWluZGV4IDQ0ZjY4NmMuLjM1Nzc5NDIgMTAwNjQ0Ci0tLS0gYS90YXBzZXQvbGludXgvc2NzaS5zdHAKLSsrKyBiL3RhcHNldC9saW51eC9zY3NpLnN0cAotQEAgLTE0LDcgKzE0LDcgQEAKLSAjaW5jbHVkZSA8c2NzaS9zY3NpX2NtbmQuaD4KLSAjaW5jbHVkZSA8c2NzaS9zY3NpX2RldmljZS5oPgotICNpbmNsdWRlIDxzY3NpL3Njc2lfaG9zdC5oPgotLSNpbmNsdWRlIDxsaW51eC90aW1lci5oPgotKyNpbmNsdWRlICJsaW51eC90aW1lcl9jb21wYXRpYmlsaXR5LmgiCi0gI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5oPgotICV9Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtRml4ZXMtZm9yLWdjYy04LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExYjBiZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotRnJvbSA0ZmZlMDBmMWQ5ZWFjMzMyZDkyOGY3ZGMwMWZlMjUwZGMzMmIxYmI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RhbiBDb3ggPHNjb3hAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMTMgRmViIDIwMTggMjI6Mzg6MDMgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZXMgZm9yIGdjYyA4Ci0KLSogaW5jbHVkZXMvc3lzL3NkdC5oIChfX1NEVF9DT05EX1NJR05FRCk6ICBBZGQgQ1QsIGNhc3QgdHlwZSBhcmd1bWVudAotCi1BdXRob3I6IFdpbGwgQ29oZW4gPHdjb2hlbi5yZWRoYXQuY29tPgotCi0qIHN0YXAtc2VydmVyZC5jeHggKGdlbmVyYXRlX21vaywgaGFuZGxlUmVxdWVzdCwgaGFuZGxlX2Nvbm5lY3Rpb24pOgotICBDYXRjaCBmb3JtYXQgb3ZlcmZsb3cKLQotKiB0cmFuc2xhdGUuY3h4ICh0cmFuc2xhdGVfcGFzcyk6IFVzZSByZWYgaW4gY2F0Y2guCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBpbmNsdWRlcy9zeXMvc2R0LmggfCAyMCArKysrKysrKy0tLS0tLS0tCi0gc3RhcC1zZXJ2ZXJkLmN4eCAgIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gdHJhbnNsYXRlLmN4eCAgICAgIHwgIDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc3lzL3NkdC5oIGIvaW5jbHVkZXMvc3lzL3NkdC5oCi1pbmRleCA5NDBmNzQ0ODMuLmMwYzVhNDkyYyAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL3N5cy9zZHQuaAotKysrIGIvaW5jbHVkZXMvc3lzL3NkdC5oCi1AQCAtMTE5LDggKzExOSw4IEBAIHN0cnVjdCBfX3NkdF90eXBlCi0gICAKLSAjZGVmaW5lIF9fU0RUX0FMV0FZU19TSUdORUQoVCkgXAotIHRlbXBsYXRlPD4gc3RydWN0IF9fc2R0X3R5cGU8VD4geyBzdGF0aWMgY29uc3QgYm9vbCBfX3NkdF9zaWduZWQgPSB0cnVlOyB9OwotLSNkZWZpbmUgX19TRFRfQ09ORF9TSUdORUQoVCkgXAotLXRlbXBsYXRlPD4gc3RydWN0IF9fc2R0X3R5cGU8VD4geyBzdGF0aWMgY29uc3QgYm9vbCBfX3NkdF9zaWduZWQgPSAoKFQpKC0xKSA8IDEpOyB9OwotKyNkZWZpbmUgX19TRFRfQ09ORF9TSUdORUQoVCxDVCkJCQkJCQlcCi0rdGVtcGxhdGU8PiBzdHJ1Y3QgX19zZHRfdHlwZTxUPiB7IHN0YXRpYyBjb25zdCBib29sIF9fc2R0X3NpZ25lZCA9ICgoQ1QpKC0xKSA8IDEpOyB9OwotIF9fU0RUX0FMV0FZU19TSUdORUQoc2lnbmVkIGNoYXIpCi0gX19TRFRfQUxXQVlTX1NJR05FRChzaG9ydCkKLSBfX1NEVF9BTFdBWVNfU0lHTkVEKGludCkKLUBAIC0xNDEsMTQgKzE0MSwxNCBAQCBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIHNob3J0KQotIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgaW50KQotIF9fU0RUX0FMV0FZU19TSUdORUQoY29uc3Qgdm9sYXRpbGUgbG9uZykKLSBfX1NEVF9BTFdBWVNfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIGxvbmcgbG9uZykKLS1fX1NEVF9DT05EX1NJR05FRChjaGFyKQotLV9fU0RUX0NPTkRfU0lHTkVEKHdjaGFyX3QpCi0tX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgY2hhcikKLS1fX1NEVF9DT05EX1NJR05FRCh2b2xhdGlsZSB3Y2hhcl90KQotLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IGNoYXIpCi0tX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgd2NoYXJfdCkKLS1fX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSBjaGFyKQotLV9fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHZvbGF0aWxlIHdjaGFyX3QpCi0rX19TRFRfQ09ORF9TSUdORUQoY2hhciwgY2hhcikKLStfX1NEVF9DT05EX1NJR05FRCh3Y2hhcl90LCB3Y2hhcl90KQotK19fU0RUX0NPTkRfU0lHTkVEKHZvbGF0aWxlIGNoYXIsIGNoYXIpCi0rX19TRFRfQ09ORF9TSUdORUQodm9sYXRpbGUgd2NoYXJfdCwgd2NoYXJfdCkKLStfX1NEVF9DT05EX1NJR05FRChjb25zdCBjaGFyLCBjaGFyKQotK19fU0RUX0NPTkRfU0lHTkVEKGNvbnN0IHdjaGFyX3QsIHdjaGFyX3QpCi0rX19TRFRfQ09ORF9TSUdORUQoY29uc3Qgdm9sYXRpbGUgY2hhciwgY2hhcikKLStfX1NEVF9DT05EX1NJR05FRChjb25zdCB2b2xhdGlsZSB3Y2hhcl90LCB3Y2hhcl90KQotICNpZiBkZWZpbmVkIChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA0KSkKLSAvKiBfX1NEVF9DT05EX1NJR05FRChjaGFyMTZfdCkgKi8KLSAvKiBfX1NEVF9DT05EX1NJR05FRChjaGFyMzJfdCkgKi8KLWRpZmYgLS1naXQgYS9zdGFwLXNlcnZlcmQuY3h4IGIvc3RhcC1zZXJ2ZXJkLmN4eAotaW5kZXggN2NmNzZjNjE3Li40MWY3N2VlOWUgMTAwNjQ0Ci0tLS0gYS9zdGFwLXNlcnZlcmQuY3h4Ci0rKysgYi9zdGFwLXNlcnZlcmQuY3h4Ci1AQCAtMTYwNyw2ICsxNjA3LDcgQEAgZ2VuZXJhdGVfbW9rKHN0cmluZyAmbW9rX2ZpbmdlcnByaW50KQotICAgY2hhciB0bXBkaXJbUEFUSF9NQVhdID0geyAnXDAnIH07Ci0gICBzdHJpbmcgcHVibGljX2NlcnRfcGF0aCwgcHJpdmF0ZV9jZXJ0X3BhdGgsIGRlc3RkaXI7Ci0gICBtb2RlX3Qgb2xkX3VtYXNrOwotKyAgaW50IHJldGxlbjsKLSAKLSAgIG1va19maW5nZXJwcmludC5jbGVhciAoKTsKLSAKLUBAIC0xNjMxLDcgKzE2MzIsMTQgQEAgZ2VuZXJhdGVfbW9rKHN0cmluZyAmbW9rX2ZpbmdlcnByaW50KQotICAgICB9Ci0gCi0gICAvLyBNYWtlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzdG9yZSByZXN1bHRzIGluLgotLSAgc25wcmludGYgKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBtb2tfcGF0aC5jX3N0ciAoKSk7Ci0rICByZXRsZW4gPSBzbnByaW50ZiAodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIG1va19wYXRoLmNfc3RyICgpKTsKLSsgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgewotKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkNvdWxkIG5vdCBjcmVhdGUgJXMgbmFtZSIsICJ0ZW1wb3JhcnkgZGlyZWN0b3J5IikpOwotKyAgICAgIHRtcGRpclswXSA9ICdcMCc7Ci0rICAgICAgZ290byBjbGVhbnVwOwotKyAgICB9Ci0rCi0gICBpZiAobWtkdGVtcCAodG1wZGlyKSA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgc2VydmVyX2Vycm9yIChfRigiQ291bGQgbm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzOiAlcyIsIHRtcGRpciwgCi1AQCAtMTcwNCw2ICsxNzEyLDcgQEAgaGFuZGxlUmVxdWVzdCAoY29uc3Qgc3RyaW5nICZyZXF1ZXN0RGlyTmFtZSwgY29uc3Qgc3RyaW5nICZyZXNwb25zZURpck5hbWUsIHN0cmkKLSAgIHVuc2lnbmVkIHU7Ci0gICB1bnNpZ25lZCBpOwotICAgRklMRSogZjsKLSsgIGludCByZXRsZW47Ci0gCi0gICAvLyBTYXZlIHRoZSBzZXJ2ZXIgdmVyc2lvbi4gRG8gdGhpcyBlYXJseSwgc28gdGhlIGNsaWVudCBrbm93cyB3aGF0IHZlcnNpb24gb2YgdGhlIHNlcnZlcgotICAgLy8gaXQgaXMgZGVhbGluZyB3aXRoLCBldmVuIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBmdWxseSBjb21wbGV0ZWQuCi1AQCAtMTc4Miw3ICsxNzkxLDEyIEBAIGhhbmRsZVJlcXVlc3QgKGNvbnN0IHN0cmluZyAmcmVxdWVzdERpck5hbWUsIGNvbnN0IHN0cmluZyAmcmVzcG9uc2VEaXJOYW1lLCBzdHJpCi0gICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgICAgY2hhciAqYXJnOwotIAotLSAgICAgIHNucHJpbnRmIChzdGFwYXJnZmlsZSwgUEFUSF9NQVgsICIlcy9hcmd2JWQiLCByZXF1ZXN0RGlyTmFtZS5jX3N0ciAoKSwgaSk7Ci0rICAgICAgcmV0bGVuID0gc25wcmludGYgKHN0YXBhcmdmaWxlLCBQQVRIX01BWCwgIiVzL2FyZ3YlZCIsIHJlcXVlc3REaXJOYW1lLmNfc3RyICgpLCBpKTsKLSsgICAgICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicGF0aCIpKTsKLSsgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgfQotIAotICAgICAgIHJjID0gc3RhdChzdGFwYXJnZmlsZSwgJiBzdCk7Ci0gICAgICAgaWYgKHJjKSBicmVhazsKLUBAIC0xODg4LDcgKzE5MDIsMTUgQEAgaGFuZGxlUmVxdWVzdCAoY29uc3Qgc3RyaW5nICZyZXF1ZXN0RGlyTmFtZSwgY29uc3Qgc3RyaW5nICZyZXNwb25zZURpck5hbWUsIHN0cmkKLSAgICAgewotICAgICAgIGdsb2JfdCBnbG9iYmVyOwotICAgICAgIGNoYXIgcGF0dGVybltQQVRIX01BWF07Ci0tICAgICAgc25wcmludGYgKHBhdHRlcm4sIFBBVEhfTUFYLCAiJXMvKi5rbyIsIG5ld19zdGFwdG1wZGlyLmNfc3RyKCkpOwotKyAgICAgIGludCByZXRsZW47Ci0rCi0rICAgICAgcmV0bGVuID0gc25wcmludGYgKHBhdHRlcm4sIFBBVEhfTUFYLCAiJXMvKi5rbyIsIG5ld19zdGFwdG1wZGlyLmNfc3RyKCkpOwotKyAgICAgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJwYXR0ZXJuIikpOwotKyAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0rCi0gICAgICAgcmMgPSBnbG9iIChwYXR0ZXJuLCBHTE9CX0VSUiwgTlVMTCwgJmdsb2JiZXIpOwotICAgICAgIGlmIChyYykKLSAgICAgICAgIHNlcnZlcl9lcnJvciAoX0YoIlVuYWJsZSB0byBmaW5kIGEgbW9kdWxlIGluICVzIiwgbmV3X3N0YXB0bXBkaXIuY19zdHIoKSkpOwotQEAgLTIxNjQsNiArMjE4Niw3IEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29weSBmb3IgZWFjaCBjb25uZWN0aW9uLiovCi0gICB2ZWN0b3I8c3RyaW5nPiAgICAgYXJndjsKLSAgIFBSSW50MzIgICAgICAgICAgICBieXRlc1JlYWQ7Ci0rICBpbnQJCSAgICAgcmV0bGVuOwotIAotICAgLyogRGV0YXRjaCB0byBhdm9pZCBhIG1lbW9yeSBsZWFrICovCi0gICBpZihtYXhfdGhyZWFkcyA+IDApCi1AQCAtMjIxMyw3ICsyMjM2LDEzIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCi0gI2VuZGlmCi0gCi0gICBzZWNTdGF0dXMgPSBTRUNGYWlsdXJlOwotLSAgc25wcmludGYodG1wZGlyLCBQQVRIX01BWCwgIiVzL3N0YXAtc2VydmVyLlhYWFhYWCIsIGdldGVudigiVE1QRElSIikgPzogIi90bXAiKTsKLSsgIHJldGxlbiA9IHNucHJpbnRmKHRtcGRpciwgUEFUSF9NQVgsICIlcy9zdGFwLXNlcnZlci5YWFhYWFgiLCBnZXRlbnYoIlRNUERJUiIpID86ICIvdG1wIik7Ci0rICBpZiAocmV0bGVuIDwgMCB8fCByZXRsZW4gPj0gUEFUSF9NQVgpCi0rICAgIHsKLSsgICAgICBzZXJ2ZXJfZXJyb3IgKF9GKCJFcnJvciBjcmVhdGluZyAlcyBuYW1lIiwgInRlbXBvcmFyeSBkaXJlY3RvcnkiKSk7Ci0rICAgICAgdG1wZGlyWzBdPTA7IC8qIHByZXZlbnQgL2Jpbi9ybSAqLwotKyAgICAgIGdvdG8gY2xlYW51cDsKLSsgICAgfQotICAgcmMxID0gbWtkdGVtcCh0bXBkaXIpOwotICAgaWYgKCEgcmMxKQotICAgICB7Ci1AQCAtMjIyMyw5ICsyMjUyLDIwIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCi0gICAgIH0KLSAKLSAgIC8qIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlcyBuYW1lcyBhbmQgZGlyZWN0b3JpZXMuICAqLwotLSAgc25wcmludGYgKHJlcXVlc3RGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXF1ZXN0LnppcCIsIHRtcGRpcik7Ci0rICByZXRsZW4gPSBzbnByaW50ZiAocmVxdWVzdEZpbGVOYW1lLCBQQVRIX01BWCwgIiVzL3JlcXVlc3QuemlwIiwgdG1wZGlyKTsKLSsgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgewotKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicmVxdWVzdC56aXAgcGF0aCIpKTsKLSsgICAgICBnb3RvIGNsZWFudXA7Ci0rICAgIH0KLSsKLSsgIHJldGxlbiA9IHNucHJpbnRmIChyZXF1ZXN0RGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXF1ZXN0IiwgdG1wZGlyKTsKLSsgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgewotKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicmVxdWVzdCBkaXJlY3RvcnkgcGF0aCIpKTsKLSsgICAgICBnb3RvIGNsZWFudXA7Ci0rICAgIH0KLSAKLS0gIHNucHJpbnRmIChyZXF1ZXN0RGlyTmFtZSwgUEFUSF9NQVgsICIlcy9yZXF1ZXN0IiwgdG1wZGlyKTsKLSAgIHJjID0gbWtkaXIocmVxdWVzdERpck5hbWUsIDA3MDApOwotICAgaWYgKHJjKQotICAgICB7Ci1AQCAtMjIzMyw3ICsyMjczLDEzIEBAIGhhbmRsZV9jb25uZWN0aW9uICh2b2lkICphcmcpCi0gICAgICAgZ290byBjbGVhbnVwOwotICAgICB9Ci0gCi0tICBzbnByaW50ZiAocmVzcG9uc2VEaXJOYW1lLCBQQVRIX01BWCwgIiVzL3Jlc3BvbnNlIiwgdG1wZGlyKTsKLSsgIHJldGxlbiA9IHNucHJpbnRmIChyZXNwb25zZURpck5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UiLCB0bXBkaXIpOwotKyAgaWYgKHJldGxlbiA8IDAgfHwgcmV0bGVuID49IFBBVEhfTUFYKQotKyAgICB7Ci0rICAgICAgc2VydmVyX2Vycm9yIChfRigiRXJyb3IgY3JlYXRpbmcgJXMgbmFtZSIsICJyZXNwb25zZSBkaXJlY3RvcnkgcGF0aCIpKTsKLSsgICAgICBnb3RvIGNsZWFudXA7Ci0rICAgIH0KLSsKLSAgIHJjID0gbWtkaXIocmVzcG9uc2VEaXJOYW1lLCAwNzAwKTsKLSAgIGlmIChyYykKLSAgICAgewotQEAgLTIyNDMsNyArMjI4OSwxMiBAQCBoYW5kbGVfY29ubmVjdGlvbiAodm9pZCAqYXJnKQotICAgLy8gU2V0IHRoaXMgZWFybHksIHNpbmNlIGl0IGdldHMgdXNlZCBmb3IgZXJyb3JzIHRvIGJlIHJldHVybmVkIHRvIHRoZSBjbGllbnQuCi0gICBzdGFwc3RkZXJyID0gc3RyaW5nKHJlc3BvbnNlRGlyTmFtZSkgKyAiL3N0ZGVyciI7Ci0gCi0tICBzbnByaW50ZiAocmVzcG9uc2VGaWxlTmFtZSwgUEFUSF9NQVgsICIlcy9yZXNwb25zZS56aXAiLCB0bXBkaXIpOwotKyAgcmV0bGVuID0gc25wcmludGYgKHJlc3BvbnNlRmlsZU5hbWUsIFBBVEhfTUFYLCAiJXMvcmVzcG9uc2UuemlwIiwgdG1wZGlyKTsKLSsgIGlmIChyZXRsZW4gPCAwIHx8IHJldGxlbiA+PSBQQVRIX01BWCkKLSsgICAgewotKyAgICAgIHNlcnZlcl9lcnJvciAoX0YoIkVycm9yIGNyZWF0aW5nICVzIG5hbWUiLCAicmVzcG9uc2UuemlwIHBhdGgiKSk7Ci0rICAgICAgZ290byBjbGVhbnVwOwotKyAgICB9Ci0gCi0gICAvKiBSZWFkIGRhdGEgZnJvbSB0aGUgc29ja2V0LgotICAgICogSWYgdGhlIHVzZXIgaXMgcmVxdWVzdGluZy9yZXF1aXJpbmcgYXV0aGVudGljYXRpb24sIGF1dGhlbnRpY2F0ZQotZGlmZiAtLWdpdCBhL3RyYW5zbGF0ZS5jeHggYi90cmFuc2xhdGUuY3h4Ci1pbmRleCAxMjQwYTgwZWMuLjRhZGUwNmZkZCAxMDA2NDQKLS0tLSBhL3RyYW5zbGF0ZS5jeHgKLSsrKyBiL3RyYW5zbGF0ZS5jeHgKLUBAIC03ODYwLDcgKzc4NjAsNyBAQCB0cmFuc2xhdGVfcGFzcyAoc3lzdGVtdGFwX3Nlc3Npb24mIHMpCi0gCSAgaWYgKHZlcnNpb25zLnNpemUoKSA+PSAzICYmIHMudmVyYm9zZSA+IDEpCi0gCSAgICBjbG9nIDw8IF9GKCJpZ25vcmluZyBleHRyYSBwYXJ0cyBvZiBjb21wYXQgdmVyc2lvbjogJXMiLCBzLmNvbXBhdGlibGUuY19zdHIoKSkgPDwgZW5kbDsKLSAJfQotLSAgICAgIGNhdGNoIChjb25zdCBydW50aW1lX2Vycm9yKQotKyAgICAgIGNhdGNoIChjb25zdCBydW50aW1lX2Vycm9yJikKLSAJewotIAkgIHRocm93IFNFTUFOVElDX0VSUk9SKF9GKCJwYXJzZSBlcnJvciBpbiBjb21wYXRpYmlsaXR5IHZlcnNpb246ICVzIiwgcy5jb21wYXRpYmxlLmNfc3RyKCkpKTsKLSAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaAppbmRleCA1Mjg4NjRjLi40OGNmNGFlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLUluc3RhbGwtcHl0aG9uLW1vZHVsZXMtdG8tY29ycmVjdC1saWJyYXJ5LWRpci5wYXRjaApAQCAtNSwzMiArNSw1MiBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworQWRkIE9FJ3MgQ0ZMQUdTIHdoaWNoIGNvbnRhaW5zIGAtZmRlYnVnLXByZWZpeC1tYXAnIG9wdGlvbnMgdG8KK3NldHVwLnB5CisKK1N1cHBseSAiLS1yb290IiBkaXJlY3RvcnkgdG8gdGhlICJpbnN0YWxsIiBjb21tYW5kLCBhbmQgdXNlCitpdCBhcyBhIHByZWZpeCB0byBzdHJpcCBvZmYgdGhlIHB1cnBvcnRlZCBmaWxlbmFtZSBlbmNvZGVkCitpbiBieXRlY29kZSBmaWxlcy4gKEl0IHN0cmlwcyBidWlsZCBwYXRoIHByZWZpeCBmcm9tIC5weWMgZmlsZXMpCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIC0tLQotIHB5dGhvbi9NYWtlZmlsZS5hbSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgcHl0aG9uL01ha2VmaWxlLmFtIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9weXRob24vTWFrZWZpbGUuYW0gYi9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IGEyNTQ0ODBmOS4uZWZlOWYzYzAxIDEwMDY0NAoraW5kZXggYTI1NDQ4MC4uNTc4NjAyZiAxMDA2NDQKIC0tLSBhL3B5dGhvbi9NYWtlZmlsZS5hbQogKysrIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtNDcsNyArNDcsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6CitAQCAtOCw2ICs4LDEwIEBAIEFVVE9NQUtFX09QVElPTlMgPSBzdWJkaXItb2JqZWN0cworIEFNX0NQUEZMQUdTID0gLUkkKHNyY2RpcikvLi4vaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSSQoYWJzX2J1aWxkZGlyKS8uLi9pbmNsdWRlcy9zeXMKKyAKKysjIEFkZCBPRSdzIENGTEFHUyB3aGljaCBjb250YWlucyBgLWZkZWJ1Zy1wcmVmaXgtbWFwJyBvcHRpb25zIHRvCisrIyBmaXggYnVpbGQgcGF0aCBpc3N1ZQorK0FNX0NQUEZMQUdTICs9ICQoQ0ZMQUdTKQorKworICMgQW55IHNjcmlwdCBpbiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIHdpbGwgZ2V0IGJ5dGUtY29tcGlsZWQgYXQKKyAjIGluc3RhbGwgdGltZS4KKyBwa2dsaWJleGVjcHl0aG9uX1BZVEhPTiA9CitAQCAtNDcsNyArNTEsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6CiAgaWYgSEFWRV9QWVRIT04yX1BST0JFUwogIAkoY2QgJChzcmNkaXIpOyBDRkxBR1M9IiQoQU1fQ1BQRkxBR1MpIiAkKFBZVEhPTikgc2V0dXAucHkgYnVpbGQgXAogICAgICAgICAgIC0tYnVpbGQtYmFzZSAkKHNoZWxsIHJlYWRsaW5rIC1mICQoYnVpbGRkaXIpKS9weTJidWlsZCBcCiAtCSBpbnN0YWxsIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAotKwkgaW5zdGFsbCAtLXByZWZpeCAkKERFU1RESVIpJChwcmVmaXgpIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCisrCSBpbnN0YWxsIC0tcm9vdCAkKERFU1RESVIpIC0tcHJlZml4ICQocHJlZml4KSAtLXByZWZpeCAkKHByZWZpeCkgLS1pbnN0YWxsLWxpYj0ke3B5dGhvbmRpcn0gXAogIAkgLS1zaW5nbGUtdmVyc2lvbi1leHRlcm5hbGx5LW1hbmFnZWQgXAogIAkgLS1yZWNvcmQgJChzaGVsbCByZWFkbGluayAtZiAkKGJ1aWxkZGlyKSkvcHkyYnVpbGQvaW5zdGFsbF9maWxlcy50eHQgXAogICAgICAgICAgIC0tdmVyYm9zZSkKLUBAIC01NSw3ICs1NSw3IEBAIGVuZGlmCitAQCAtNTUsNyArNTksNyBAQCBlbmRpZgogIGlmIEhBVkVfUFlUSE9OM19QUk9CRVMKICAJKGNkICQoc3JjZGlyKTsgQ0ZMQUdTPSIkKEFNX0NQUEZMQUdTKSIgJChQWVRIT04zKSBzZXR1cC5weSBidWlsZCBcCiAgICAgICAgICAgLS1idWlsZC1iYXNlICQoc2hlbGwgcmVhZGxpbmsgLWYgJChidWlsZGRpcikpL3B5M2J1aWxkIFwKIC0JIGluc3RhbGwgLS1wcmVmaXggJChERVNURElSKSQocHJlZml4KSBcCi0rCSBpbnN0YWxsIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJHtweXRob24zZGlyfSBcCisrCSBpbnN0YWxsIC0tcm9vdCAkKERFU1RESVIpIC0tcHJlZml4ICQocHJlZml4KSAtLWluc3RhbGwtbGliPSR7cHl0aG9uM2Rpcn0gXAogIAkgLS1zaW5nbGUtdmVyc2lvbi1leHRlcm5hbGx5LW1hbmFnZWQgXAogIAkgLS1yZWNvcmQgJChzaGVsbCByZWFkbGluayAtZiAkKGJ1aWxkZGlyKSkvcHkzYnVpbGQvaW5zdGFsbF9maWxlcy50eHQgXAogICAgICAgICAgIC0tdmVyYm9zZSkKIC0tIAotMi4xMS4wCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLU1ha2Utc3VyZS1zeXNyb290LXBhdGhzLWRvbi10LWVuZC13aXRoLWEtc2xhc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZDkwMzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1NYWtlLXN1cmUtc3lzcm9vdC1wYXRocy1kb24tdC1lbmQtd2l0aC1hLXNsYXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLUZyb20gNDFlZmFkMDQ3MzBiZTg5ODg5ZDE0ODM3MTlmOWE2YzkzOTZkYzI1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgTWFyIDIwMTggMTc6MDU6MjUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZSBzdXJlIHN5c3Jvb3QgcGF0aHMgZG9uJ3QgZW5kIHdpdGggYSBzbGFzaC4KLQotKiBzZXNzaW9uLmN4eCAocGFyc2VfY21kbGluZSk6IE1ha2Ugc3VyZSBhIHN5c3Jvb3QgcGF0aCBkb2VzIG5vdCBlbmQgd2l0aAotICBhICcvJywgc2luY2Ugd2UgYnVpbGQgcGF0aHMgbGlrZTogc3lzcm9vdCArICIvbGliL21vZHVsZXMiLiBJZiB0aGUKLSAgc3lzcm9vdCBwYXRoIGVuZHMgd2l0aCBhICcvJywgd2UgZW5kIHVwIHdpdGggcGF0aHMgbGlrZQotICAnL1NZU1JPT1QvL2xpYi9tb2R1bGVzJy4KLSAgKHNldHVwX2tlcm5lbF9yZWxlYXNlKTogVGFrZSBhIHN0cmluZyBwYXJhbWV0ZXIsIG5vdCBhIGNoYXJhY3RlciBwb2ludGVyLgotKiBzZXNzaW9uLmg6IFVwZGF0ZSBzZXR1cF9rZXJuZWxfcmVsZWFzZSgpIHByb3RvdHlwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0tLS0KLSBzZXNzaW9uLmN4eCB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBzZXNzaW9uLmggICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L3Nlc3Npb24uY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvc2Vzc2lvbi5jeHgKLSsrKyBnaXQvc2Vzc2lvbi5jeHgKLUBAIC03MjIsNiArNzIyLDkgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgotICAgY2xpZW50X29wdGlvbnNfZGlzYWxsb3dlZF9mb3JfdW5wcml2aWxlZ2VkID0gIiI7Ci0gICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gYWRkaXRpb25hbF91bndpbmRzeW1fbW9kdWxlczsKLSAgIHN0cnVjdCBybGltaXQgb3VyX3JsaW1pdDsKLSsgIGJvb2wgc3lzcm9vdF9vcHRpb25fc2VlbiA9IGZhbHNlOwotKyAgc3RyaW5nIGtlcm5lbF9yZWxlYXNlX3ZhbHVlOwotKwotICAgd2hpbGUgKHRydWUpCi0gICAgIHsKLSAgICAgICBjaGFyICogbnVtX2VuZHB0cjsKLUBAIC04ODcsNyArODkwLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgotIAkgICAgLy8gTm90ZSB0aGF0ICctJyBtdXN0IGNvbWUgbGFzdCBpbiBhIHJlZ2V4IGJyYWNrZXQgZXhwcmVzc2lvbi4KLSAgICAgICAgICAgICBhc3NlcnRfcmVnZXhwX21hdGNoKCItciBwYXJhbWV0ZXIgZnJvbSBjbGllbnQiLCBvcHRhcmcsICJeW2EtejAtOV8uKy1dKyQiKTsKLSAJICBzZXJ2ZXJfYXJncy5wdXNoX2JhY2sgKHN0cmluZyAoIi0iKSArIChjaGFyKWdyYyArIG9wdGFyZyk7Ci0tICAgICAgICAgIHNldHVwX2tlcm5lbF9yZWxlYXNlKG9wdGFyZyk7Ci0rCSAga2VybmVsX3JlbGVhc2VfdmFsdWUgPSBvcHRhcmc7Ci0gICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgY2FzZSAnYSc6Ci1AQCAtMTQ3Myw3ICsxNDc2LDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgotIAkgIGlmIChjbGllbnRfb3B0aW9ucykgewotIAkgICAgICBjZXJyIDw8IF9GKCJFUlJPUjogJXMgaW52YWxpZCB3aXRoICVzIiwgIi0tc3lzcm9vdCIsICItLWNsaWVudC1vcHRpb25zIikgPDwgZW5kbDsKLSAJICAgICAgcmV0dXJuIDE7Ci0tCSAgfSBlbHNlIGlmICghc3lzcm9vdC5lbXB0eSgpKSB7Ci0rCSAgfSBlbHNlIGlmIChzeXNyb290X29wdGlvbl9zZWVuKSB7Ci0gCSAgICAgIGNlcnIgPDwgIkVSUk9SOiBtdWx0aXBsZSAtLXN5c3Jvb3Qgb3B0aW9ucyBub3Qgc3VwcG9ydGVkIiA8PCBlbmRsOwotIAkgICAgICByZXR1cm4gMTsKLSAJICB9IGVsc2UgewotQEAgLTE0ODcsMTEgKzE0OTAsMTcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2NtZGxpbmUgKGludCBhcgotIAotIAkgICAgICBzeXNyb290ID0gc3RyaW5nKHNwYXRoKTsKLSAJICAgICAgZnJlZSAoc3BhdGgpOwotLQkgICAgICBpZiAoc3lzcm9vdFtzeXNyb290LnNpemUoKSAtIDFdICE9ICcvJykKLS0JCSAgc3lzcm9vdC5hcHBlbmQoIi8iKTsKLSAKLS0JICAgICAgYnJlYWs7Ci0rCSAgICAgIC8vIFdlIGRvIHBhdGggY3JlYXRpb24gbGlrZSB0aGlzOgotKwkgICAgICAvLyAgIHN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzIgotKwkgICAgICAvLyBTbywgd2UgZG9uJ3Qgd2FudCB0aGUgc3lzcm9vdCBwYXRoIHRvIGVuZCB3aXRoIGEgJy8nLAotKwkgICAgICAvLyBvdGhlcndpc2Ugd2UnbGwgZW5kIHVwIHdpdGggJy9mb28vL2xpYi9tb2R1bGVzJy4KLSsJICAgICAgaWYgKHN5c3Jvb3QuYmFjaygpID09ICcvJykgewotKwkJICBzeXNyb290LnBvcF9iYWNrKCk7Ci0rCSAgICAgIH0KLSAJICB9Ci0rCSAgc3lzcm9vdF9vcHRpb25fc2VlbiA9IHRydWU7Ci0rCSAgYnJlYWs7Ci0gCi0gCWNhc2UgTE9OR19PUFRfU1lTRU5WOgotIAkgIGlmIChjbGllbnRfb3B0aW9ucykgewotQEAgLTE1MDEsNyArMTUxMCw3IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAJICAgICAgc3RyaW5nIHN5c2Vudl9zdHIgPSBvcHRhcmc7Ci0gCSAgICAgIHN0cmluZyB2YWx1ZTsKLSAJICAgICAgc2l6ZV90IHBvczsKLS0JICAgICAgaWYgKHN5c3Jvb3QuZW1wdHkoKSkgewotKwkgICAgICBpZiAoISBzeXNyb290X29wdGlvbl9zZWVuKSB7Ci0gCQkgIGNlcnIgPDwgIkVSUk9SOiAtLXN5c2VudiBtdXN0IGZvbGxvdyAtLXN5c3Jvb3QiIDw8IGVuZGw7Ci0gCQkgIHJldHVybiAxOwotIAkgICAgICB9Ci1AQCAtMTY0Niw2ICsxNjU1LDE1IEBAIHN5c3RlbXRhcF9zZXNzaW9uOjpwYXJzZV9jbWRsaW5lIChpbnQgYXIKLSAJfQotICAgICB9Ci0gCi0rICBpZiAoISBrZXJuZWxfcmVsZWFzZV92YWx1ZS5lbXB0eSgpKQotKyAgewotKyAgICAgIHNldHVwX2tlcm5lbF9yZWxlYXNlKGtlcm5lbF9yZWxlYXNlX3ZhbHVlKTsKLSsgIH0KLSsgIGVsc2UgaWYgKCEgc3lzcm9vdC5lbXB0eSgpKQotKyAgewotKyAgICAgIGtlcm5lbF9idWlsZF90cmVlID0gc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIGtlcm5lbF9yZWxlYXNlICArICIvYnVpbGQiOwotKyAgfQotKwotICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTIxNTIsNyArMjE3MCw3IEBAIHZvaWQgc3lzdGVtdGFwX3Nlc3Npb246Omluc2VydF9sb2FkZWRfbW8KLSB9Ci0gCi0gdm9pZAotLXN5c3RlbXRhcF9zZXNzaW9uOjpzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3QgY2hhcioga3N0cikgCi0rc3lzdGVtdGFwX3Nlc3Npb246OnNldHVwX2tlcm5lbF9yZWxlYXNlIChjb25zdCBzdHJpbmcmIGtzdHIpIAotIHsKLSAgIC8vIFNvbWV0aW1lcyB3ZSBtYXkgZ2V0IGR1cGVzIGhlcmUuLi4gZS5nLiBhIHNlcnZlciBtYXkgaGF2ZSBhIGZ1bGwKLSAgIC8vIC1yIC9wYXRoL3RvL2tlcm5lbCBmb2xsb3dlZCBieSBhIGNsaWVudCdzIC1yIGtlcm5lbC4KLUBAIC0yMTgzLDcgKzIyMDEsNyBAQCBzeXN0ZW10YXBfc2Vzc2lvbjo6c2V0dXBfa2VybmVsX3JlbGVhc2UKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHVwZGF0ZV9yZWxlYXNlX3N5c3Jvb3QgPSB0cnVlOwotLSAgICAgIGtlcm5lbF9yZWxlYXNlID0gc3RyaW5nIChrc3RyKTsKLSsgICAgICBrZXJuZWxfcmVsZWFzZSA9IGtzdHI7Ci0gICAgICAgaWYgKCFrZXJuZWxfcmVsZWFzZS5lbXB0eSgpKQotICAgICAgICAga2VybmVsX2J1aWxkX3RyZWUgPSAiL2xpYi9tb2R1bGVzLyIgKyBrZXJuZWxfcmVsZWFzZSArICIvYnVpbGQiOwotIAotSW5kZXg6IGdpdC9zZXNzaW9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9zZXNzaW9uLmgKLSsrKyBnaXQvc2Vzc2lvbi5oCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIHB1YmxpYzoKLSAKLSAgIC8vIE5COiBJdCBpcyB2ZXJ5IGltcG9ydGFudCBmb3IgYWxsIG9mIHRoZSBhYm92ZSAoYW5kIGJlbG93KSBmaWVsZHMKLSAgIC8vIHRvIGJlIGNsZWFyZWQgaW4gdGhlIHN5c3RlbXRhcF9zZXNzaW9uIGN0b3IgKHNlc3Npb24uY3h4KS4KLS0gIHZvaWQgc2V0dXBfa2VybmVsX3JlbGVhc2UgKGNvbnN0IGNoYXIqIGtzdHIpOwotKyAgdm9pZCBzZXR1cF9rZXJuZWxfcmVsZWFzZSAoY29uc3Qgc3RkOjpzdHJpbmcmIGtzdHIpOwotICAgdm9pZCBpbnNlcnRfbG9hZGVkX21vZHVsZXMgKCk7Ci0gCi0gICAvLyBjb21tYW5kIGxpbmUgcGFyc2luZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4MjBiMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLVVzZS1zeXNyb290LXdoZW4tbG9va2luZy1mb3ItdGhlLVN5c3RlbS5tYXAtZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNDM2MDYzZDVlNDczOGE5YjAzNTM1ZDMzMGEyMjQyYmU1MTE4ZTc0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhdmlkIFNtaXRoIDxkc21pdGhAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgOCBNYXIgMjAxOCAxNjowMTo1OCAtMDYwMAotU3ViamVjdDogW1BBVENIXSBVc2Ugc3lzcm9vdCB3aGVuIGxvb2tpbmcgZm9yIHRoZSBTeXN0ZW0ubWFwIGZpbGUuCi0KLUFkZCBzeXNyb290IHRvIHN5c3RlbV9tYXBfcGF0aCArICIvYm9vdC9TeXN0ZW0ubWFwIiBjYXNlLiBPdGhlcndpc2UKLXN0YXAgdHJpZXMgdG8gbG9vayBzeW1ib2xzIG9uIGhvc3Qgc3lzdGVtIGFuZCBpdCBwcm9kdWNlIGVycm9yIGxpa2UgdGhpczoKLQotPiBLZXJuZWwgc3ltYm9sIHRhYmxlIC9ib290L1N5c3RlbS5tYXAtNC45Ljc4LXlvY3RvLXN0YW5kYXJkIHVuYXZhaWxhYmxlLCAoTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0tLS0KLSBzZXNzaW9uLmN4eCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9zZXNzaW9uLmN4eAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3Nlc3Npb24uY3h4Ci0rKysgZ2l0L3Nlc3Npb24uY3h4Ci1AQCAtMjAxMyw3ICsyMDEzLDcgQEAgc3lzdGVtdGFwX3Nlc3Npb246OnBhcnNlX2tlcm5lbF9mdW5jdGlvbgotIAljbG9nIDw8IF9GKCJLZXJuZWwgc3ltYm9sIHRhYmxlICVzIHVuYXZhaWxhYmxlLCAoJXMpIiwKLSAJCSAgIHN5c3RlbV9tYXBfcGF0aC5jX3N0cigpLCBzdHJlcnJvcihlcnJubykpIDw8IGVuZGw7Ci0gCi0tICAgICAgc3lzdGVtX21hcF9wYXRoID0gIi9ib290L1N5c3RlbS5tYXAtIiArIGtlcm5lbF9yZWxlYXNlOwotKyAgICAgIHN5c3RlbV9tYXBfcGF0aCA9IHN5c3Jvb3QgKyAiL2Jvb3QvU3lzdGVtLm1hcC0iICsga2VybmVsX3JlbGVhc2U7Ci0gICAgICAgc3lzdGVtX21hcC5jbGVhcigpOwotICAgICAgIHN5c3RlbV9tYXAub3BlbihzeXN0ZW1fbWFwX3BhdGguY19zdHIoKSwgaWZzdHJlYW06OmluKTsKLSAgICAgICBpZiAoISBzeXN0ZW1fbWFwLmlzX29wZW4oKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtX3N0cF91bW9kdWxlX3JlbG9jYXRlLW5lZWRzLXRhcmdldC1maWxlLXBhdGgtbm90LWhvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgxODFhMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDE4M2M3YTdhODE2NzMzM2M4NzM1MjVmNzkwODkxMzgzN2I4ZGMzY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IFR1ZSwgMjAgTWFyIDIwMTggMTI6NDE6MDUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIG5lZWRzIHRhcmdldCBmaWxlIHBhdGgsIG5vdCBob3N0IGZpbGUKLSBwYXRoCi0KLVN0cmlwIG9mIHN5c3Jvb3QgZnJvbSBtb2R1bGUgbmFtZSBpcyByZXF1aXJlZCB3aGVuIF9zdHBfdW1vZHVsZV9yZWxvY2F0ZQotY2FsbCBpcyBnZW5lcmF0ZWQuIE90aGVyd2lzZSBwYXRoIHdvbid0IG1hdGNoIHBhdGggb24gdGFyZ2V0IGFuZCBjb3VsZAotd2lsbCBmYWlsIHRvIGNhbGN1bGF0ZWQgYWRkcmVzcyB3aXRoaW4gdGhlIGZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gbG9jMnN0YXAuY3h4IHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xvYzJzdGFwLmN4eCBiL2xvYzJzdGFwLmN4eAotaW5kZXggNDgxOGVlMC4uZTA5OTU0ZiAxMDA2NDQKLS0tLSBhL2xvYzJzdGFwLmN4eAotKysrIGIvbG9jMnN0YXAuY3h4Ci1AQCAtMTcsNiArMTcsNyBAQAotIAotICNpbmNsdWRlICJsb2Myc3RhcC5oIgotICNpbmNsdWRlICJkd2ZscHAuaCIKLSsjaW5jbHVkZSAidGFwc2V0cy5oIgotIAotICNpZiAhIF9FTEZVVElMU19QUkVSRVEoMCwgMTUzKQotICNkZWZpbmUgRFdfT1BfR05VX2VudHJ5X3ZhbHVlIDB4ZjMKLUBAIC0xMDYsNyArMTA3LDkgQEAgbG9jYXRpb25fY29udGV4dDo6dHJhbnNsYXRlX2FkZHJlc3MoRHdhcmZfQWRkciBhZGRyKQotICAgICAgICAgICBjID0gIi8qIHByYWdtYTp2bWEgKi8gIgotICAgICAgICAgICAgICAgIih7IHVuc2lnbmVkIGxvbmcgYWRkciA9IDA7ICIKLSAgICAgICAgICAgICAgICJhZGRyID0gX3N0cF91bW9kdWxlX3JlbG9jYXRlIChcIiIKLS0gICAgICAgICAgICAgICsgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSArICJcIiwgIgotKyAgICAgICAgICAgICAgKyBwYXRoX3JlbW92ZV9zeXNyb290KGR3LT5zZXNzLAotKwkJCQkgICAgcmVzb2x2ZV9wYXRoKGR3LT5tb2R1bGVfbmFtZS5jX3N0cigpKSkKLSsJICAgICAgKyAiXCIsICIKLSAgICAgICAgICAgICAgICsgbGV4X2Nhc3RfaGV4IChhZGRyKQotIAkgICAgICArICIsIGN1cnJlbnQpOyBhZGRyOyB9KSI7Ci0gCX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWJ1aWxkcnVuLXJlbW92ZS1xdW90ZXMtYXJvdW5kLUktaW5jbHVkZS1saW5lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTk2ZmRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDc1YzRhZWM2ZGUzYTYxNTkwOWYzMjgzZWFjNTg1NzYwZGUxMDFiOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDcgTWFyIDIwMTcgMTA6NDY6MTIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGRydW46IHJlbW92ZSBxdW90ZXMgYXJvdW5kIC1JIGluY2x1ZGUgbGluZQotCi1CeSBoYXZpbmcgdGhlIHF1b3RlcywgdGhlIGtlcm5lbCBNYWtlZmlsZSBhZGR0cmVlIG1hY3JvIGFkZHMgdGhlCi1rZXJuZWwgJHNyY3RyZWUgZGlyZWN0b3J5IGFzIGEgcHJlZml4IGFuZCBjYXVzZXMgY29tcGlsYXRpb24gZmFpbHVyZXMuCi1SZW1vdmluZyB0aGUgcXVvdGVzIHJlc29sdmVzIHRoZSBpc3N1ZS4KLQotVGhpcyBpcyB0cmltbWVkIGZyb20gdGhlIHZlcmJvc2Ugb3V0cHV0IG9mIHRoZSBHQ0MgY29tbWFuZCBsaW5lCi1CZWZvcmU6Ci0gLUkvc3J2L3NkYi9idWlsZHMvNC45L3RtcC93b3JrLXNoYXJlZC9xZW11eDg2LTY0L2tlcm5lbC1zb3VyY2UvIi9zcnYvc2RiL3JlbGVhc2VzL2pldGhyby9idWlsZHMvNC4xL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL3N5c3RlbXRhcC9ydW50aW1lIgotCi1BZnRlcjoKLSAtSS9zcnYvc2RiL2J1aWxkcy80LjkvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3Ivc2hhcmUvc3lzdGVtdGFwL3J1bnRpbWUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0tLS0KLSBidWlsZHJ1bi5jeHggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZHJ1bi5jeHggYi9idWlsZHJ1bi5jeHgKLWluZGV4IGFhZWE2NGMuLjhhOGVlOWYgMTAwNjQ0Ci0tLS0gYS9idWlsZHJ1bi5jeHgKLSsrKyBiL2J1aWxkcnVuLmN4eAotQEAgLTQ5NSw3ICs0OTUsNyBAQCBjb21waWxlX3Bhc3MgKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQotICAgI2lmIENIRUNLX1BPSU5URVJfQVJJVEhfUFI1OTQ3Ci0gICBvIDw8ICJFWFRSQV9DRkxBR1MgKz0gLVdwb2ludGVyLWFyaXRoIiA8PCBlbmRsOwotICAgI2VuZGlmCi0tICBvIDw8ICJFWFRSQV9DRkxBR1MgKz0gLUlcIiIgPDwgcy5ydW50aW1lX3BhdGggPDwgIlwiIiA8PCBlbmRsOwotKyAgbyA8PCAiRVhUUkFfQ0ZMQUdTICs9IC1JIiA8PCBzLnJ1bnRpbWVfcGF0aCA8PCBlbmRsOwotICAgLy8gWFhYOiB0aGlzIG1heSBoZWxwIHBwYyB0b2Mgb3ZlcmZsb3cKLSAgIC8vIG8gPDwgIkNGTEFHUyA6PSAkKHN1YnN0IC1PcywtTzIsJChDRkxBR1MpKSAtZm1pbmltYWwtdG9jIiA8PCBlbmRsOwotICAgbyA8PCAib2JqLW0gOj0gIiA8PCBzLm1vZHVsZV9uYW1lIDw8ICIubyIgPDwgZW5kbDsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjA2NDJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtZGVidWdpbmZvLWxvb2t1cC13aXRoLXN5c3Jvb3QtY2FzZS1kby1ub3QtcmVtb3ZlLXN5cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gYjI5ZTQ0OGUxMjA0MGVkOGY0ZDgzNzQzYTE0ZGIwZjEzOGE3Y2M2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotRGF0ZTogV2VkLCAxNCBNYXIgMjAxOCAxNjo1NDowOCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBkZWJ1Z2luZm8gbG9va3VwIHdpdGggc3lzcm9vdCBjYXNlIGRvIG5vdCByZW1vdmUgc3lzcm9vdCBmcm9tCi0gZmlsZV9uYW1lCi0KLUlmIHN5c3Jvb3Qgb3B0aW9uIGlzIHBhc3NlZCwgYW5kIGRlYnVnIHN5bWJvbHMgcmVzaWRlIGluIHN5c3Jvb3QgYWxvbmcKLXdpdGggZXhlY3V0YWJsZSA8Zm9vPiBpbiA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gZGlyZWN0b3J5LAotc3RhcCBmYWlscyB0byBmaW5kIGRlYnVnaW5mbyBiZWNhdXNlIGl0IHN0cmlwcyBvdXQgc3lzcm9vdCBwYXRoCi1mcm9tIGZpbGVfbmFtZSBzbyBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIGVuZHMgdXAgbG9va2luZyBhdAotaG9zdCA8Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4gcmF0aGVyIHRoZW4gY2hlY2tpbmcKLTxzeXNyb290Pi88Zm9vX2Rpcj4vLmRlYnVnLzxmb29fZmlsZT4uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gc2V0dXBkd2ZsLmN4eCB8IDEyIC0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4Ci1pbmRleCAxMWUwYmIyLi4yYTg3OTgyIDEwMDY0NAotLS0tIGEvc2V0dXBkd2ZsLmN4eAotKysrIGIvc2V0dXBkd2ZsLmN4eAotQEAgLTYyNywxOCArNjI3LDYgQEAgaW50ZXJuYWxfZmluZF9kZWJ1Z2luZm8gKER3ZmxfTW9kdWxlICptb2QsCi0gCi0gICBjYWxsX2R3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm86Ci0gCi0tICBpZiAoY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mbykKLS0gICAgewotLSAgICAgIHN0cmluZyBzeXNyb290ID0gY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdCArICIvKiI7Ci0tICAgICAgaW50ICAgIGZvdW5kICAgPSBmbm1hdGNoKHN5c3Jvb3QuY19zdHIoKSwgZmlsZV9uYW1lLCAwKTsKLS0KLS0gICAgICBpZiAoZm91bmQpCi0tCXsKLS0JICBmaWxlX25hbWUgPSBmaWxlX25hbWUKLS0JICAgICsgY3VycmVudF9zZXNzaW9uX2Zvcl9maW5kX2RlYnVnaW5mby0+c3lzcm9vdC5sZW5ndGgoKSAtIDE7Ci0tCX0KLS0gICAgfQotLQotICAgLyogQ2FsbCB0aGUgb3JpZ2luYWwgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAqLwotICAgcmV0dXJuIGR3Zmxfc3RhbmRhcmRfZmluZF9kZWJ1Z2luZm8obW9kLCB1c2VyZGF0YSwgbW9kbmFtZSwgYmFzZSwKLSAgICAgICAgICAgICAgIGZpbGVfbmFtZSwgZGVidWdsaW5rX2ZpbGUsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWZvci1jLWNvbXBpbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtaW1wcm92ZS1yZXByb2R1Y2liaWxpdHktZm9yLWMtY29tcGlsaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YTZmMmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWZvci1jLWNvbXBpbGluZy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDYyODhiYTVkZjBhOGM3M2VmODQyYjYwOTA4MTQ0OWFjNGRlODYxMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE4IEp1bCAyMDE4IDE2OjU4OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGltcHJvdmUgcmVwcm9kdWNpYmlsaXR5IGZvciBjKysgY29tcGlsaW5nCisKK1VzZSByZWxhdGl2ZSBkaXIgdG8gaW5jbHVkZSBoZWFkZXIgc3RyaW5nX3JlZiB0bworc3RyaXAgYnVpbGQgcGF0aCBwcmVmaXggaW4gYysrIG9iamVjdCBmaWxlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHN0cmluZ3RhYmxlLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zdHJpbmd0YWJsZS5oIGIvc3RyaW5ndGFibGUuaAoraW5kZXggNWZjNDJlNy4uNmZkOGExZSAxMDA2NDQKKy0tLSBhL3N0cmluZ3RhYmxlLmgKKysrKyBiL3N0cmluZ3RhYmxlLmgKK0BAIC0xOSw3ICsxOSw3IEBACisgCisgI2lmIGRlZmluZWQoSEFWRV9CT09TVF9VVElMSVRZX1NUUklOR19SRUZfSFBQKQorICNpbmNsdWRlIDxib29zdC92ZXJzaW9uLmhwcD4KKy0jaW5jbHVkZSA8Ym9vc3QvdXRpbGl0eS9zdHJpbmdfcmVmLmhwcD4gLy9oZWFkZXIgd2l0aCBzdHJpbmdfcmVmCisrI2luY2x1ZGUgIkBSRUxBVElWRV9TVEFHSU5HX0lOQ0RJUkAvYm9vc3QvdXRpbGl0eS9zdHJpbmdfcmVmLmhwcCIgLy9oZWFkZXIgd2l0aCBzdHJpbmdfcmVmCisgCisgLy8gWFhYOiBleHBlcmltZW50YWwgdHVuYWJsZXMKKyAjZGVmaW5lIElOVEVSTkVEX1NUUklOR19GSU5EX01FTU1FTSAxIC8qIHBlcmYgc3RhdCBpbmRpY2F0ZXMgYSB2ZXJ5IHNsaWdodCBiZW5lZml0ICovCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmZlN2Q0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmctZm9sbG93LXUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDdlMTFmMTI5ZmYzNzBjZTVmMzk4MTJjZTJhZTZjZTQwODE4YTM0N2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IFRodSwgMjIgTWFyIDIwMTggMTY6MDI6MDIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3lzcm9vdDogZml4IHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGhhbmRsaW5nIGZvbGxvdyB1cAotCi1JbiBjYXNlIG9mIHN5c3Jvb3Qgc2V0IGFuZCBzaG9ydCByZWxlYXNlIC1yIG9wdGlvbiBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlCi10byBwYXNzIHNob3J0IHJlbGVhc2UgbmFtZSBpbnRvIGR3ZmxfbGludXhfa2VybmVsX3JlcG9ydF9vZmZsaW5lCi1mdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBub3QgYXdhcmUgYWJvdXQgc3lzcm9vdCBhbmQgaXQgd29uJ3QgbG9vayBmb3IKLWtlcm5lbCBtb2R1bGVzIHVuZGVyIHN5c3Jvb3QgZGlyZWN0b3J5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLS0tLQotIHNldHVwZHdmbC5jeHggfCAxMCArKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXBkd2ZsLmN4eCBiL3NldHVwZHdmbC5jeHgKLWluZGV4IGM0MTlhZmEuLjBjZjU4MTAgMTAwNjQ0Ci0tLS0gYS9zZXR1cGR3ZmwuY3h4Ci0rKysgYi9zZXR1cGR3ZmwuY3h4Ci1AQCAtMzY3LDcgKzM2NywxNSBAQCBzZXR1cF9kd2ZsX2tlcm5lbCAodW5zaWduZWQgKm1vZHVsZXNfZm91bmQsIHN5c3RlbXRhcF9zZXNzaW9uICZzKQotICAgLy8gaGFyZC1jb2RlIHRoaXMgbWFnaWMgaGVyZS4KLSAgIHN0cmluZyBsaWJfcGF0aCA9IHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UgKyAiL2J1aWxkIjsKLSAgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IGxpYl9wYXRoKQotLSAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX3JlbGVhc2U7Ci0rICAgIHsKLSsgICAgICBpZiAocy5zeXNyb290ICE9ICIiKQotKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBzeXNyb290IHNldCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHBhc3MKLSsgICAgICAgIC8vIHNob3J0IHJlbGVhc2UgdG8gZHdmbCwgaXQgd29uJ3QgdGFrZSBhIHN5c3Jvb3QgaW50bwotKyAgICAgICAgLy8gYWNjb3VudC4gTGV0J3MgY29uc3RydWN0IGZ1bGwgcGF0aCBpbiBzdWNoIGNhc2UuCi0rCWVsZnV0aWxzX2tlcm5lbF9wYXRoID0gc3RyaW5nKHMuc3lzcm9vdCArICIvbGliL21vZHVsZXMvIiArIHMua2VybmVsX3JlbGVhc2UpOwotKyAgICAgIGVsc2UKLSsJZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOwotKyAgICB9Ci0gICBlbHNlCi0gICAgIGVsZnV0aWxzX2tlcm5lbF9wYXRoID0gcy5rZXJuZWxfYnVpbGRfdHJlZTsKLSAgIG9mZmxpbmVfbW9kdWxlc19mb3VuZCA9IDA7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMxZDYyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIGE5Y2U4OWJjZDJkNzg3MjhmYWVmNTliZGE2MGU3NTUxMDk3MmNkNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgS2FtZW5za3kgPGthbWVuc2t5QGNpc2NvLmNvbT4KLURhdGU6IFdlZCwgMTQgTWFyIDIwMTggMTc6MDk6NDQgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3lzcm9vdDogZml4IHNob3J0IHJlbGVhc2UgLXIgb3B0aW9uIGhhbmRsaW5nCi0KLSogc2V0dXBkd2ZsLmN4eCAoZGVidWdpbmZvX3BhdGhfaW5zZXJ0X3N5c3Jvb3QpOiBBZGQgYSAnLycgdG8gdGhlIGVuZCBvZgotICB0aGUgc3lzcm9vdCBmb3IgcGF0aF9pbnNlcnRfc3lzcm9vdCgpLgotICAoc2V0dXBfZHdmbF9rZXJuZWwpOiBTaW1wbGlmeSBsb2dpYyB3aGVuIGZpbmRpbmcgdGhlIGtlcm5lbCBwYXRoIHRvIHNlbmQKLSAgdG8gZWxmdXRpbHMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFZpY3RvciBLYW1lbnNreSA8a2FtZW5za3lAY2lzY28uY29tPgotLS0tCi0gc2V0dXBkd2ZsLmN4eCB8IDE5ICsrKysrKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwZHdmbC5jeHggYi9zZXR1cGR3ZmwuY3h4Ci1pbmRleCAyYTg3OTgyLi5mNmMzMTU3IDEwMDY0NAotLS0tIGEvc2V0dXBkd2ZsLmN4eAotKysrIGIvc2V0dXBkd2ZsLmN4eAotQEAgLTMzOSw2ICszMzksMTMgQEAgc3RhdGljIGNoYXIgKiBwYXRoX2luc2VydF9zeXNyb290KHN0cmluZyBzeXNyb290LCBzdHJpbmcgcGF0aCkKLSAKLSB2b2lkIGRlYnVnaW5mb19wYXRoX2luc2VydF9zeXNyb290KHN0cmluZyBzeXNyb290KQotIHsKLSsgIC8vIEZJWE1FOiBUaGlzIGlzIGEgc2hvcnQtdGVybSBmaXgsIHVudGlsIHdlIGV4cGVjdCBzeXNyb290IHBhdGhzIHRvCi0rICAvLyBhbHdheXMgZW5kIHdpdGggYSAnLycgKGFuZCBuZXZlciBiZSBlbXB0eSkuCi0rICAvLwotKyAgLy8gVGhlIHBhdGhfaW5zZXJ0X3N5c3Jvb3QoKSBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgc3lzcm9vdCBoYXMgYSAnLycKLSsgIC8vIG9uIHRoZSBlbmQuIE1ha2Ugc3VyZSB0aGF0IGlzIHRydWUuCi0rICBpZiAoc3lzcm9vdC5iYWNrKCkgIT0gJy8nKQotKyAgICBzeXNyb290LnB1c2hfYmFjaygnLycpOwotICAgZGVidWdpbmZvX3BhdGggPSBwYXRoX2luc2VydF9zeXNyb290KHN5c3Jvb3QsIGRlYnVnaW5mb19wYXRoKTsKLSAgIGRlYnVnaW5mb191c3JfcGF0aCA9IHBhdGhfaW5zZXJ0X3N5c3Jvb3Qoc3lzcm9vdCwgZGVidWdpbmZvX3Vzcl9wYXRoKTsKLSB9Ci1AQCAtMzU4LDEzICszNjUsMTEgQEAgc2V0dXBfZHdmbF9rZXJuZWwgKHVuc2lnbmVkICptb2R1bGVzX2ZvdW5kLCBzeXN0ZW10YXBfc2Vzc2lvbiAmcykKLSAgIC8vIG5vIHdheSB0byBzZXQgdGhlIGR3ZmxfY2FsbGJhY2suZGVidWdpbmZvX3BhdGggYW5kIGFsd2F5cwotICAgLy8gcGFzc3MgdGhlIHBsYWluIGtlcm5lbF9yZWxlYXNlIGhlcmUuICBTbyBpbnN0ZWFkIHdlIGhhdmUgdG8KLSAgIC8vIGhhcmQtY29kZSB0aGlzIG1hZ2ljIGhlcmUuCi0tICAgc3RyaW5nIGxpYl9wYXRoID0gIi9saWIvbW9kdWxlcy8iICsgcy5rZXJuZWxfcmVsZWFzZSArICIvYnVpbGQiOwotLSAgIGlmIChzLmtlcm5lbF9idWlsZF90cmVlID09IHN0cmluZyhzLnN5c3Jvb3QgKyBsaWJfcGF0aCkgfHwKLS0gICAgICAgKHMua2VybmVsX2J1aWxkX3RyZWUgPT0gbGliX3BhdGgKLS0JJiYgcy5zeXNyb290ID09ICIvIikpCi0tICAgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOwotLSAgIGVsc2UKLS0gICAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX2J1aWxkX3RyZWU7Ci0rICBzdHJpbmcgbGliX3BhdGggPSBzLnN5c3Jvb3QgKyAiL2xpYi9tb2R1bGVzLyIgKyBzLmtlcm5lbF9yZWxlYXNlICsgIi9idWlsZCI7Ci0rICBpZiAocy5rZXJuZWxfYnVpbGRfdHJlZSA9PSBsaWJfcGF0aCkKLSsgICAgZWxmdXRpbHNfa2VybmVsX3BhdGggPSBzLmtlcm5lbF9yZWxlYXNlOwotKyAgZWxzZQotKyAgICBlbGZ1dGlsc19rZXJuZWxfcGF0aCA9IHMua2VybmVsX2J1aWxkX3RyZWU7Ci0gICBvZmZsaW5lX21vZHVsZXNfZm91bmQgPSAwOwotIAotICAgLy8gRmlyc3QgdHJ5IHRvIHJlcG9ydCBmdWxsIHBhdGggbW9kdWxlcy4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3lzcm9vdC1oYW5kbGUtc3ltYm9saWMtbGlua3Mtd2l0aC1hYnNvbHV0ZS1uYW1lLXJlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEzZDM5YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC8wMDAxLXN5c3Jvb3QtaGFuZGxlLXN5bWJvbGljLWxpbmtzLXdpdGgtYWJzb2x1dGUtbmFtZS1yZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotRnJvbSAyMDQxMDg1ZDFhNzAwMjAxZGMwODg5OTFjYTgxMzZlNzkzNWJmNDJmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci1EYXRlOiBXZWQsIDIxIE1hciAyMDE4IDExOjM1OjI2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c3Jvb3Q6IGhhbmRsZSBzeW1ib2xpYyBsaW5rcyB3aXRoIGFic29sdXRlIG5hbWUgcmVsYXRpdmUgdG8KLSBzeXNyb290Ci0KLUluIGNhc2Ugb2Ygc3ltYm9saWMgbGluayBmb3VuZCB1bmRlciBzeXNyb290IHBvaW50IHRvIGFic29sdXRlIHBhdGgsCi1pbnN0ZWFkIG9mIHRyeWluZyB0byBsb29rIGZvciBzdWNoIGFic29sdXRlIHBhdGggaW4gaG9zdCBzeXN0ZW0sCi1hcHBseSBzeXNyb290IHByZWZpeCBmaXJzdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVmljdG9yIEthbWVuc2t5IDxrYW1lbnNreUBjaXNjby5jb20+Ci0tLS0KLSB1dGlsLmN4eCB8IDc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L3V0aWwuY3h4Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvdXRpbC5jeHgKLSsrKyBnaXQvdXRpbC5jeHgKLUBAIC00NDEsNiArNDQxLDY0IEBAIHNwbGl0X2xpbmVzKGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IG4pCi0gICByZXR1cm4gbGluZXM7Ci0gfQotIAotK3N0YXRpYyBzdHJpbmcKLStmb2xsb3dfbGluayhjb25zdCBzdHJpbmcmIG5hbWUsIGNvbnN0IHN0cmluZyYgc3lzcm9vdCkKLSt7Ci0rICBjaGFyICpsaW5rbmFtZTsKLSsgIHNzaXplX3QgcjsKLSsgIHN0cmluZyByZXRwYXRoOwotKyAgc3RydWN0IHN0YXQgc3Q7Ci0rCi0rICBjb25zdCBjaGFyICpmID0gbmFtZS5jX3N0cigpOwotKwotKyAgbHN0YXQoZiwgJnN0KTsKLSsKLSsgIGxpbmtuYW1lID0gKGNoYXIgKikgbWFsbG9jKHN0LnN0X3NpemUgKyAxKTsKLSsKLSsgIGlmIChsaW5rbmFtZSkKLSsgICAgewotKyAgICAgIHIgPSByZWFkbGluayhmLCBsaW5rbmFtZSwgc3Quc3Rfc2l6ZSArIDEpOwotKyAgICAgIGxpbmtuYW1lW3N0LnN0X3NpemVdID0gJ1wwJzsKLSsgICAgICAvKgotKyAgICAgICAqIElmIHdlIGhhdmUgbm9uLWVtcHR5IHN5c3Jvb3QgYW5kIHdlIGdvdCBsaW5rIHRoYXQKLSsgICAgICAgKiBwb2ludHMgdG8gYWJzb2x1dGUgcGF0aCBuYW1lLCB3ZSBuZWVkIHRvIGxvb2sgYXQKLSsgICAgICAgKiB0aGlzIHBhdGggcmVsYXRpdmUgdG8gc3lzcm9vdCBpdHNlbGYuIGFjY2VzcyBhbmQKLSsgICAgICAgKiBzdGF0IHdpbGwgZm9sbG93IHN5bWJvbGljIGxpbmtzIGNvcnJlY3RseSBvbmx5IGluCi0rICAgICAgICogY2FzZSB3aXRoIGVtcHR5IHN5c3Jvb3QuCi0rICAgICAgICovCi0rICAgICAgd2hpbGUgKHIgIT0gLTEgJiYgbGlua25hbWUgJiYgbGlua25hbWVbMF0gPT0gJy8nKQotKwl7Ci0rCSAgc3RyaW5nIGZuYW1lMSA9IHN5c3Jvb3QgKyBsaW5rbmFtZTsKLSsJICBjb25zdCBjaGFyICpmMSA9IGZuYW1lMS5jX3N0cigpOwotKwkgIGlmIChhY2Nlc3MoZjEsIFhfT0spID09IDAKLSsJICAgICAgJiYgc3RhdChmMSwgJnN0KSA9PSAwCi0rCSAgICAgICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpCi0rCSAgICB7Ci0rCSAgICAgIHJldHBhdGggPSBmbmFtZTE7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwkgIGVsc2UgaWYgKGxzdGF0KGYxLCAmc3QpID09IDAKLSsJCSAgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCi0rCSAgICB7Ci0rCSAgICAgIGZyZWUobGlua25hbWUpOwotKwkgICAgICBsaW5rbmFtZSA9IChjaGFyICopIG1hbGxvYyhzdC5zdF9zaXplICsgMSk7Ci0rCSAgICAgIGlmIChsaW5rbmFtZSkKLSsJCXsKLSsJCSAgciA9IHJlYWRsaW5rKGYxLCBsaW5rbmFtZSwgc3Quc3Rfc2l6ZSArIDEpOwotKwkJICBsaW5rbmFtZVtzdC5zdF9zaXplXSA9ICdcMCc7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rICBmcmVlKGxpbmtuYW1lKTsKLSsKLSsgIHJldHVybiByZXRwYXRoOwotK30KLSsKLSAvLyBSZXNvbHZlIGFuIGV4ZWN1dGFibGUgbmFtZSB0byBhIGNhbm9uaWNhbCBmdWxsIHBhdGggbmFtZSwgd2l0aCB0aGUKLSAvLyBzYW1lIHBvbGljeSBhcyBleGVjdnAoKS4gIEEgcHJvZ3JhbSBuYW1lIG5vdCBjb250YWluaW5nIGEgc2xhc2gKLSAvLyB3aWxsIGJlIHNlYXJjaGVkIGFsb25nIHRoZSAkUEFUSC4KLUBAIC00NjUsNiArNTIzLDE0IEBAIHN0cmluZyBmaW5kX2V4ZWN1dGFibGUoY29uc3Qgc3RyaW5nJiBuYW0KLSAgIGlmIChuYW1lLmZpbmQoJy8nKSAhPSBzdHJpbmc6Om5wb3MpIC8vIHNsYXNoIGluIHRoZSBwYXRoIGFscmVhZHk/Ci0gICAgIHsKLSAgICAgICByZXRwYXRoID0gc3lzcm9vdCArIG5hbWU7Ci0rCi0rICAgICAgY29uc3QgY2hhciAqZiA9IHJldHBhdGguY19zdHIoKTsKLSsgICAgICBpZiAoc3lzcm9vdCAhPSAiIgotKwkgICYmIGxzdGF0KGYsICZzdCkgPT0gMAotKwkgICYmIFNfSVNMTksoc3Quc3RfbW9kZSkpCi0rCXsKLSsJICByZXRwYXRoID0gZm9sbG93X2xpbmsoZiwgc3lzcm9vdCk7Ci0rCX0KLSAgICAgfQotICAgZWxzZSAvLyBOb3BlLCBzZWFyY2ggJFBBVEguCi0gICAgIHsKLUBAIC00OTMsNiArNTU5LDE2IEBAIHN0cmluZyBmaW5kX2V4ZWN1dGFibGUoY29uc3Qgc3RyaW5nJiBuYW0KLSAgICAgICAgICAgICAgICAgICByZXRwYXRoID0gZm5hbWU7Ci0gICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgIGVsc2UgaWYgKHN5c3Jvb3QgIT0gIiIKLSsgICAgICAgICAgICAgICAgICAgICAgICYmIGxzdGF0KGYsICZzdCkgPT0gMAotKyAgICAgICAgICAgICAgICAgICAgICAgJiYgU19JU0xOSyhzdC5zdF9tb2RlKSkKLSsJCXsKLSsJCSAgcmV0cGF0aCA9IGZvbGxvd19saW5rKGYsIHN5c3Jvb3QpOwotKwkJICBpZiAocmV0cGF0aCAhPSAiIikKLSsJCSAgICB7Ci0rCQkgICAgICBicmVhazsKLSsJCSAgICB9Ci0rCQl9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoCmluZGV4IGI3ZWUwNzAuLjkzMTNhNWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoCkBAIC0xMywxOCArMTMsMTggQEAKICBjb25maWd1cmUuYWMgfCA1ICsrKystCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2YmQwYzVmYzQuLjJlYTliM2NiZiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzUyLDEzICs3NTIsMTYgQEAgZG5sIFdlIHdhbnQgZWl0aGVyIChvciBib3RoKSBweXRob24gcHJvYmUgc3VwcG9ydC4KK0luZGV4OiBnaXQvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCisrKysgZ2l0L2NvbmZpZ3VyZS5hYworQEAgLTc2NiwxMyArNzY2LDE2IEBAIGRubCBXZSB3YW50IGVpdGhlciAob3IgYm90aCkgcHl0aG9uIHByb2IKICBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05fUFJPQkVTXSwKICAgIFt0ZXN0ICJ4JGhhdmVfcHl0aG9uMl9zdXBwb3J0IiA9ICJ4eWVzIiAtbyAieCRoYXZlX3B5dGhvbjNfc3VwcG9ydCIgPSAieHllcyJdKQogIAogK0FDX0FSR19FTkFCTEUoW21vbml0b3JdLCBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLW1vbml0b3JdLFtEaXNhYmxlIG1vbml0b3JdKSkKICtpZiB0ZXN0ICIkZW5hYmxlX21vbml0b3IiICE9ICJubyI7IHRoZW4KICBkbmwgQ2hlY2sgZm9yIHByZXNlbmNlIG9mIGpzb24tYyBhbmQgbmN1cnNlcyBmb3IgdXNlIGluIG1vbml0b3IgbW9kZQotIFBLR19DSEVDS19NT0RVTEVTKFtqc29uY10sIFtqc29uLWMgPj0gMC4xMl0sIFtoYXZlX2pzb25jPXllc10sIFtoYXZlX2pzb25jPW5vXSkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhbanNvbmNdLCBbanNvbi1jID49IDAuMTFdLCBbaGF2ZV9qc29uYz15ZXNdLCBbaGF2ZV9qc29uYz1ub10pCiAgUEtHX0NIRUNLX01PRFVMRVMoW25jdXJzZXNdLCBbbmN1cnNlc10sIFtoYXZlX25jdXJzZXM9eWVzXSwgW2hhdmVfbmN1cnNlcz1ub10pCiAtQU1fQ09ORElUSU9OQUwoW0hBVkVfTU9OSVRPUl9MSUJTXSwgW3Rlc3QgIiR7aGF2ZV9qc29uY30iID09ICJ5ZXMiIC1hICIke2hhdmVfbmN1cnNlc30iID09ICJ5ZXMiXSkKICBpZiB0ZXN0ICIke2hhdmVfanNvbmN9IiA9PSAieWVzIiAtYSAiJHtoYXZlX25jdXJzZXN9IiA9PSB5ZXM7IHRoZW4KQEAgLTM1LDYgKzM1LDMgQEAKICAKICBBQ19DQUNIRV9DSEVDSyhbZm9yIGFzc2VtYmxlciAuc2VjdGlvbiAiPyIgZmxhZ3Mgc3VwcG9ydF0sIHN0YXBfY3Zfc2VjdGlvbnEsIFsKICBvbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCmluZGV4IGIyODBmNTguLjZlZTNlMWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuYmIKQEAgLTMsNiArMyw4IEBACiAKIHJlcXVpcmUgc3lzdGVtdGFwX2dpdC5pbmMKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtaW1wcm92ZS1yZXByb2R1Y2liaWxpdHktZm9yLWMtY29tcGlsaW5nLnBhdGNoIgorCiBERVBFTkRTID0gImVsZnV0aWxzIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJlbGY9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IC0td2l0aG91dC1ycG0gXApAQCAtMjMsNyArMjUsMjQgQEAKIFBBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvcixuY3Vyc2VzIGpzb24tYyIKIFBBQ0tBR0VDT05GSUdbcHl0aG9uMy1wcm9iZXNdID0gIi0td2l0aC1weXRob24zLXByb2JlcywtLXdpdGhvdXQtcHl0aG9uMy1wcm9iZXMscHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2Ugc3lzdGVtZAorCitQQUNLQUdFUyA9KyAiJHtQTn0tZXhwb3J0ZXIiCisKK0ZJTEVTXyR7UE59LWV4cG9ydGVyID0gIiR7c3lzY29uZmRpcn0vc3RhcC1leHBvcnRlci8qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL3N0YXAtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zdGFwLWV4cG9ydGVyLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzYmluZGlyfS9zdGFwLWV4cG9ydGVyIgorCitSREVQRU5EU18ke1BOfS1leHBvcnRlciA9ICIke1BOfSBweXRob24zLWNvcmUgcHl0aG9uMy1uZXRjbGllbnQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1leHBvcnRlciA9ICJzdGFwLWV4cG9ydGVyLnNlcnZpY2UiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKyAgICAjIEltcHJvdmUgcmVwcm9kdWNpYmlsaXR5IGZvciBjKysgb2JqZWN0IGZpbGVzCisgICAgcmVsdGl2ZXBhdGg9IiR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignU1RBR0lOR19JTkNESVInKSwgZC5nZXRWYXIoJ1MnKSl9IgorICAgIHNlZCAtaSAiczpAUkVMQVRJVkVfU1RBR0lOR19JTkNESVJAOiRyZWx0aXZlcGF0aDpnIiAke1N9L3N0cmluZ3RhYmxlLmgKK30KIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgaWYgWyAhIC1mICR7RH0ke2JpbmRpcn0vc3RhcCBdOyB0aGVuCkBAIC0zMSw2ICs1MCwxNCBAQAogICAgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7UE59CiAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS8ke1BOfS9zdGFwLWVudgogICAgZmkKKworICAgIyBGaXggbWFrZWZpbGUgaGFyZGNvZGVkIHBhdGggYXNzdW1wdGlvbnMgZm9yIHN5c3RlbWQgKGFzc3VtZXMgJHByZWZpeCkKKyAgIGluc3RhbGwgLWQgYGRpcm5hbWUgJHtEfSR7c3lzdGVtZF91bml0ZGlyfWAKKyAgIG12ICR7RH0ke3ByZWZpeH0vbGliL3N5c3RlbWQgYGRpcm5hbWUgJHtEfSR7c3lzdGVtZF91bml0ZGlyfWAKKyAgIHJtZGlyICR7RH0ke3ByZWZpeH0vbGliIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5CisKKyAgICMgRW5zdXJlIGNvcnJlY3Qgb3duZXJzaGlwIGZvciBmaWxlcyBjb3BpZWQgaW4KKyAgIGNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9zdGFwLWV4cG9ydGVyLyogLVIKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCBlMmY1MjA0Li4yNzRmY2RlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsNyArMSw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1TUkNSRVYgPSAiNDA1MWM3MGM5MzE4YzgzNzk4MTM4NGNiYjIzZjNlOWViMWJkMDg5MiIKLVBWID0gIjMuMiIKK1NSQ1JFViA9ICI0MjhmODRlOWU2NTZiY2U3MTAxOGU4OTAyZTRlZGI4YWFjYWZjYzBlIgorUFYgPSAiNC4wIgogCiBTUkNfVVJJID0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9zeXN0ZW10YXAuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnZpcnQucGF0Y2ggXApAQCAtMTAsMTkgKzEwLDcgQEAKICAgICAgICAgICAgZmlsZTovL25vLW1zZ2ZtdC1jaGVjay5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1sZXQtY29uZmlndXJlLXdyaXRlLWEtcHl0aG9uLWxvY2F0aW9uLWludG8tdGgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLXB5dGhvbi1tb2R1bGVzLXRvLWNvcnJlY3QtbGlicmFyeS1kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZHJ1bi1yZW1vdmUtcXVvdGVzLWFyb3VuZC1JLWluY2x1ZGUtbGluZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0YXBydW4tc3RhcGJwZi1kb24tdC1zdXBwb3J0LWluc3RhbGxpbmctYS1ub24tcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1QUjIyNTUxLWJ5LXVwZGF0aW5nLXRoZS11c2Utb2YtdGltZXJzLWZvci10aGUtNC4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlcy1mb3ItZ2NjLTgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3lzcm9vdC13aGVuLWxvb2tpbmctZm9yLXRoZS1TeXN0ZW0ubWFwLWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kZWJ1Z2luZm8tbG9va3VwLXdpdGgtc3lzcm9vdC1jYXNlLWRvLW5vdC1yZW1vdmUtc3lzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1zdXJlLXN5c3Jvb3QtcGF0aHMtZG9uLXQtZW5kLXdpdGgtYS1zbGFzaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c3Jvb3QtZml4LXNob3J0LXJlbGVhc2Utci1vcHRpb24taGFuZGxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWxheS1hZGRpbmctc3lzcm9vdC1wYXRoLXRvLW1vZHVsZS1uYW1lLWluLWNhc2Utb2YtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkZWQtYS1jb3VwbGUtb2Ytc21hbGwtc3lzcm9vdC1maXhlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLV9zdHBfdW1vZHVsZV9yZWxvY2F0ZS1uZWVkcy10YXJnZXQtZmlsZS1wYXRoLW5vdC1ob3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNyb290LWhhbmRsZS1zeW1ib2xpYy1saW5rcy13aXRoLWFic29sdXRlLW5hbWUtcmVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzcm9vdC1maXgtc2hvcnQtcmVsZWFzZS1yLW9wdGlvbi1oYW5kbGluZy1mb2xsb3ctdS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFybXxhYXJjaDY0fG1pY3JvYmxhemVlbHxtaXBzKS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE1ZTgwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiR3JhcGhpY2FsIHRyYWNlIHZpZXdlciBmb3IgRnRyYWNlIgotTElDRU5TRSA9ICJHUEx2MiIKLQotcmVxdWlyZSB0cmFjZS1jbWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2tlcm5lbC1zaGFyay5jO2JlZ2lubGluZT02O2VuZGxpbmU9ODttZDU9MmMyMmM5NjVhNjQ5ZGRkNzk3M2Q3OTEzYzU2MzRhNWUiCi0KLURFUEVORFMgPSAiZ3RrKyBsaWJ4bWwyIgotUkRFUEVORFNfJHtQTn0gPSAidHJhY2UtY21kIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgJ3ByZWZpeD0ke3ByZWZpeH0nIFwKLSAgICAnYmluZGlyX3JlbGF0aXZlPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBiaW5kaXIpfScgXAotICAgICdsaWJkaXI9JHtsaWJkaXJ9JyBcCi0gICAgTk9fUFlUSE9OPTEgXAotICAgIGd1aSBcCi0iCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgcm0gLWYgJHtCfS8uKi5kCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsX2d1aQotICAgIHJtICR7RH0ke2JpbmRpcn0vdHJhY2UtY21kCi0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vdHJhY2UtY21kCi0gICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kL3RyYWNlLWNtZC5iYXNoCi0gICAgcm1kaXIgJHtEfSR7bGliZGlyfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTE3ODljLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNSQ1JFViA9ICI3ZDAxNDdiYmJhM2VkMWQ1ZWY2ZWVhNGVlYzNmMGFkNGM5OGYwMmI1IgotUFYgPSAiMi43IgotCi1pbmhlcml0IHBrZ2NvbmZpZwotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS90cmFjZS1jbWQ6IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yb3N0ZWR0L3RyYWNlLWNtZC5naXQgXAotICAgICAgICAgICBmaWxlOi8vYmxrdHJhY2UtYXBpLWNvbXBhdGliaWxpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLzAwMDEtSW5jbHVkZS1saW1pdHMuaC1zby10aGF0LVBBVEhfTUFYLWlzLWRlZmluZWQtYW4taXNzdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc2MzA4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC8wMDAxLUluY2x1ZGUtbGltaXRzLmgtc28tdGhhdC1QQVRIX01BWC1pcy1kZWZpbmVkLWFuLWlzc3UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDk0ODhmOTJjMWQwYzc5MzFjM2UxNzk1MGQxZjllZWEyYWViM2UyYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTU6NTY6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBsaW1pdHMuaCBzbyB0aGF0IFBBVEhfTUFYIGlzIGRlZmluZWQgKGFuIGlzc3VlIG9uCi0gbXVzbCkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB0cmFjZS1saXN0ZW4uYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvdHJhY2UtbGlzdGVuLmMgYi90cmFjZS1saXN0ZW4uYwotaW5kZXggMTdmZjlkOC4uODM4ZDZiYyAxMDA2NDQKLS0tLSBhL3RyYWNlLWxpc3Rlbi5jCi0rKysgYi90cmFjZS1saXN0ZW4uYwotQEAgLTMxLDYgKzMxLDcgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotICNpbmNsdWRlICJ0cmFjZS1sb2NhbC5oIgotICNpbmNsdWRlICJ0cmFjZS1tc2cuaCIKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kL2Jsa3RyYWNlLWFwaS1jb21wYXRpYmlsaXR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvYmxrdHJhY2UtYXBpLWNvbXBhdGliaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMGRiNmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvYmxrdHJhY2UtYXBpLWNvbXBhdGliaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi10cmFjZS1jbWQ6IEFkZCBibGt0cmFjZV9hcGkgY29tcGF0aWJpbGl0eSBmb3IgVENfQkFSUklFUgotCi1OZXdlciBrZXJuZWxzIHJlcGxhY2UgVENfQkFSUklFUiB3aXRoIFRDX0ZMVVNILiBFbnN1cmUgdHJhY2UtY21kCi1jYW4gYnVpbGQgcmVnYXJkbGVzcyBvZiB0aGUgbGludXgta2VybmVsLWhlYWRlcnMgdmVyc2lvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTdG9wIGdhcF0KLQotU2lnbmVkLW9mZi1ieTogRGFycmVuIEhhcnQgPGR2aGFydEBsaW51eC5pbnRlbC5jb20+Ci0KLWRpZmYgLS1naXQgYS9wbHVnaW5fYmxrLmMgYi9wbHVnaW5fYmxrLmMKLWluZGV4IDkzMjdiMTcuLmM4ZTVlMWMgMTAwNjQ0Ci0tLS0gYS9wbHVnaW5fYmxrLmMKLSsrKyBiL3BsdWdpbl9ibGsuYwotQEAgLTQ0LDYgKzQ0LDE1IEBAIHN0cnVjdCBibGtfZGF0YSB7Ci0gCXVuc2lnbmVkIHNob3J0CQlwZHVfbGVuOwotIH07Ci0gCi0rLyoKLSsgKiBOZXdlciBrZXJuZWxzIGRvbid0IGRlZmluZSBCTEtfVENfQkFSUklFUiBhbmQgaGF2ZSByZXBsYWNlZCBpdCB3aXRoCi0rICogQkxLX1RDX0ZMVVNILiBJbiB0aGlzIGNhc2UsIGRlZmluZSBpdCBoZXJlIGFuZCByZXBvcnQgRkxVU0hFUyBhcyBCQVJSSUVSUyBhcwotKyAqIGEgd29ya2Fyb3VuZCwgYXMgZGVzY3JpYmVkIGluOgotKyAqIGh0dHA6Ly9naXQua2VybmVsLm9yZy8/cD1saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdDthPWNvbW1pdDtoPWMwOWM0N2NhZWRjOTg1NGQ1OTM3OGQ2ZTM0Yzk4OWU1MWNmZGQyYjQKLSsgKi8KLSsjaWZuZGVmIEJMS19UQ19CQVJSSUVSCi0rI2RlZmluZSBCTEtfVENfQkFSUklFUiAxPDwyCi0rI2VuZGlmCi0gc3RhdGljIHZvaWQgZmlsbF9yd2JzKGNoYXIgKnJ3YnMsIGludCBhY3Rpb24sIHVuc2lnbmVkIGludCBieXRlcykKLSB7Ci0gCWludCBpID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdjN2MxOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIlVzZXIgaW50ZXJmYWNlIHRvIEZ0cmFjZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXQua2VybmVsLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCi0KLXJlcXVpcmUgdHJhY2UtY21kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZS1jbWQuYztiZWdpbmxpbmU9NjtlbmRsaW5lPTg7bWQ1PTJjMjJjOTY1YTY0OWRkZDc5NzNkNzkxM2M1NjM0YTVlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1lZGIxOTVmZTUzOGU0NTUyYzFmNmNhMGZkN2JmNGYwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmFjZS1pbnB1dC5jO2JlZ2lubGluZT01O2VuZGxpbmU9ODttZDU9M2VjODJmNDNiYmUwY2ZiNTk1MWZmNDE0ZWY0ZDQ0ZDAgXAotIgotCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgICdwcmVmaXg9JHtwcmVmaXh9JyBcCi0gICAgJ2JpbmRpcj0ke2JpbmRpcn0nIFwKLSAgICAnbWFuX2Rpcj0ke21hbmRpcn0nIFwKLSAgICAnaHRtbF9pbnN0YWxsPSR7ZGF0YWRpcn0va2VybmVsc2hhcmsvaHRtbCcgXAotICAgICdpbWdfaW5zdGFsbD0ke2RhdGFkaXJ9L2tlcm5lbHNoYXJrL2h0bWwvaW1hZ2VzJyBcCi0gICAgXAotICAgICdiaW5kaXJfcmVsYXRpdmU9JHtAb2UucGF0aC5yZWxhdGl2ZShwcmVmaXgsIGJpbmRpcil9JyBcCi0gICAgJ2xpYmRpcj0ke2xpYmRpcn0nIFwKLSAgICBcCi0gICAgTk9fUFlUSE9OPTEgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgIyBNYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIHJtIC1mICR7Qn0vLiouZAotfQotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIGluc3RhbGwKLX0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtZnB1LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWZwdS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1NWE5ZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtZnB1LmluYworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotZGVmIGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnIF06Ci0gICAgICAgIHJldHVybiAiLS13aXRoLXNvZnRmbG9hdCIKLSAgICByZXR1cm4gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxZTJkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImEyYjQ2NWMzYTUyNjVkOGE1N2YzZmYzOWM2YzRmYzI5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY0ZjY4YWQzYzZkYTM2YjBiNTI0MWFjM2M3OThhN2E3MWUwZTk3ZDUxZjk3MmU5ZjcyM2IzZjIwYTk2NTBhZTYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1yZXF1aXJlIGFsc2EtZnB1LmluYwotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfYWxzYV9mcHVfc2V0dGluZyhiYiwgZCl9ICIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcHl0aG9uIgotCi1QQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGFsc2EtZG9jIgotRklMRVNfYWxzYS1zZXJ2ZXIgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19hbHNhLWNvbmYgPSAiJHtkYXRhZGlyfS9hbHNhLyIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiIKLQotIyB1cGdyYWRlIHBhdGgKLVJQUk9WSURFU18ke1BOfSA9ICJsaWJhc291bmQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliYXNvdW5kIgotUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJhc291bmQiCi0KLVJQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi0KLVJQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlN2EzYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYl8xLjEuNi5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO21kNT1kZDFiYzdmNDQ4NzI2OTAyMjRkODljMWE5ODA2ZTQ5NTtiZWdpbmxpbmU9MTtlbmRsaW5lPTI2IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZjk4MWE4Zjc4OTdjNTllYzJkZGM0NDkxNmQzMzc4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZjJjZDI3NGIyNzJjYWUwZDBkMTExZThhOWUzNjNmMDg3ODMzMjkxNTdlOGRkNjhiM2RlMGMwOTZkZTZkNzI0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS13aXRoLXNvZnRmbG9hdCcsICcnLCBkKX0gXAorICAgIC0tZGlzYWJsZS1weXRob24gXAorIgorCitQQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGFsc2EtZG9jIgorCitGSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiYWxzYS1jb25mIgorCisjIHVwZ3JhZGUgcGF0aAorUlBST1ZJREVTXyR7UE59ID0gImxpYmFzb3VuZCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJhc291bmQiCitSQ09ORkxJQ1RTXyR7UE59ID0gImxpYmFzb3VuZCIKKworUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKKworUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZDBhY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1TVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKLUhPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLSMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCi0jCi0jIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCi0jIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KLSMKLSMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50Ci0jIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKLSMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAotICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCi0iCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmODk4YjBlNmU4YWNmM2Y2ZjgyYmMyYTBmMGM4NGE5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OTdkYTVmOGY1MzM3OWZiZWEyODgxN2JjNDY2ZGUxNmFmZmQyYzA3ODQ5ZTg0ZjFhZjhkNWUyMmY3YmI3ZjFjIgotCi1ERVBFTkRTICs9ICJhbHNhLWxpYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgICAgIHNhbXBsZXJhdGUgXAotICAgICAgICBzcGVleGRzcCBcCi0gICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCi0JCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCi0JZmkKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7Ci0gICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQotICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KLSMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKLSMKLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KLSMKLSMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCi0jIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAotIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCi0jIHRoZSBzeW1saW5rcykuCi0jCi0jIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCi0jIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCi0jIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgotCi0jIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQotIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgotIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKLSMgUHVsc2VBdWRpbyBwbHVnaW4uCi1GSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YzE4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS42LmJiCkBAIC0wLDAgKzEsMTAzIEBACitTVU1NQVJZID0gIkFMU0EgUGx1Z2lucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKKyMgVGhlIHByaW1hcnkgbGljZW5zZSBvZiBhbHNhLXBsdWdpbnMgaXMgTEdQTHYyLjEuCisjCisjIG00L2F0dHJpYnV0ZXMubTQgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrLiBtNC9hdHRyaWJ1dGVzLm00IGlzIHBhcnQgb2YgdGhlCisjIGJ1aWxkIHN5c3RlbSwgYW5kIGRvZXNuJ3QgYWZmZWN0IHRoZSBsaWNlbnNpbmcgb2YgdGhlIGJ1aWxkIHJlc3VsdC4KKyMKKyMgVGhlIHNhbXBsZXJhdGUgcGx1Z2luIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKyB0byBiZSBjb25zaXN0ZW50CisjIHdpdGggdGhlIGxpYnNhbXBsZXJhdGUgbGljZW5zZS4gSG93ZXZlciwgaWYgdGhlIGxpY2Vuc2VlIGhhcyBhIGNvbW1lcmNpYWwKKyMgbGljZW5zZSBmb3IgbGlic2FtcGxlcmF0ZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworIyBvZiBMR1BMdjIuMSBsaWtlIHRoZSByZXN0IG9mIHRoZSBwbHVnaW5zLgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzcgXAorICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgZmlsZTovL200L2F0dHJpYnV0ZXMubTQ7ZW5kbGluZT0zMzttZDU9YjI1OTU4ZGE0NGMwMjIzMWUzNjQxZjFiY2NlZjUzZWIgXAorICAgICAgICBmaWxlOi8vcmF0ZS9yYXRlX3NhbXBsZXJhdGUuYztlbmRsaW5lPTM1O21kNT1mZDc3YmNlODVmNGEzMzhjMGU4YWIxODQzMGI2OWZhZSBcCisiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Mzg3Mjc5ZTk5ZmVlYjJlY2ZmYWFjNWYyOTMyMjNkNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZjFkMzFlYmUzYjFmYTFjYzhkYWRlNjBiN2JlZDFjYjI1ODNhYzk5ODE2NzAwMmQzNTBkYzBhNWUzZTQwYzEzIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjLGxpYmF2IgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgorUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgorCisjIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KKyMgYWxsIGJ1aWx0IHBsdWdpbnMuCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKKworCSMgV2UgdXNlIHRoZSBleGFtcGxlIGFzIGlzLCBzbyBqdXN0IGRyb3AgdGhlIC5leGFtcGxlIHN1ZmZpeC4KKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3llcycsICdubycsIGQpfSIgPSAieWVzIiBdOyB0aGVuCisJCW12ICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCisJZmkKK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQoKSB7CisgICAgcGx1Z2luZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9hbHNhLWxpYi8nKQorICAgIHBhY2thZ2VzID0gIiAiLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCAnXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCisgICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQorfQorCisjIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KKyMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKKyMKKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KKyMKKyMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCisjIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAorIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCisjIHRoZSBzeW1saW5rcykuCisjCisjIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCisjIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCisjIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZjcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NhbXBsZXJhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX3NwZWV4cmF0ZV8qLnNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2Y3JhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgorCisjIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQorIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgorIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKKyMgUHVsc2VBdWRpbyBwbHVnaW4uCitGSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisiCisKK1JERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzLzAwMDItRml4LWNsYW5nLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbC13YXJuaW5ncy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzLzAwMDItRml4LWNsYW5nLVdyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbC13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTM3YmM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvMDAwMi1GaXgtY2xhbmctV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0Zyb20gYTg2MWJkYWJmMDJjZDliZmIzZWM3YzA1NzFjNTYzYzBmYTE0YWRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI0IEFwciAyMDE4IDEyOjI0OjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzNDI4Y29udHJvbDogRml4IGNsYW5nIC1XcmVzZXJ2ZWQtdXNlci1kZWZpbmVkLWxpdGVyYWwKKyB3YXJuaW5ncworCit8IHVzNDI4Y29udHJvbC5jYzo2NjoxODogZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIFstV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsXQorfCAgICAgICAgIHByaW50ZigidXNhZ2U6ICJQUk9HTkFNRSIgWy12IHZlcmJvc2l0eV9sZXZlbCAwLi4yXSBbLWMgY2FyZF0gWy1EIGRldmljZV0gWy11IHVzYi1kZXZpY2VdIFstbSBtb2RlXVxuIik7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKy0tLQorIHVzNDI4Y29udHJvbC91czQyOGNvbnRyb2wuY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS91czQyOGNvbnRyb2wvdXM0Mjhjb250cm9sLmNjIGIvdXM0Mjhjb250cm9sL3VzNDI4Y29udHJvbC5jYworaW5kZXggZTgzOWJmNC4uOGNiM2M0MiAxMDA2NDQKKy0tLSBhL3VzNDI4Y29udHJvbC91czQyOGNvbnRyb2wuY2MKKysrKyBiL3VzNDI4Y29udHJvbC91czQyOGNvbnRyb2wuY2MKK0BAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCisgeworIAlwcmludGYoIlRhc2NhbSBVUy00MjggQ29udHJvbFxuIik7CisgCXByaW50ZigidmVyc2lvbiAlc1xuIiwgVkVSU0lPTik7CistCXByaW50ZigidXNhZ2U6ICJQUk9HTkFNRSIgWy12IHZlcmJvc2l0eV9sZXZlbCAwLi4yXSBbLWMgY2FyZF0gWy1EIGRldmljZV0gWy11IHVzYi1kZXZpY2VdIFstbSBtb2RlXVxuIik7CisrCXByaW50ZigidXNhZ2U6ICIgUFJPR05BTUUgIiBbLXYgdmVyYm9zaXR5X2xldmVsIDAuLjJdIFstYyBjYXJkXSBbLUQgZGV2aWNlXSBbLXUgdXNiLWRldmljZV0gWy1tIG1vZGVdXG4iKTsKKyAJcHJpbnRmKCJtb2RlIGlzIG9uZSBvZiAodXMyMjQsIHVzNDI4LCBtaXh4eClcbiIpOworIH0KKyAvKgorLS0gCisxLjcuMTEuNwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvYXV0b3Rvb2xzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvYXV0b3Rvb2xzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTc0OTYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2F1dG90b29scy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUFkZCBwYXJhbWV0ZXJzIHRvIGF1dG9yZWNvbmYgdG8gc3VwcG9ydCBjcm9zcyBjb21waWxlLgotUmVtb3ZlIHNvbWUgc3ViLWNvbXBvbmVudHMgd2hpY2ggbmVlZHMgZnVydGhlciByZWNpcGUgc3VwcG9ydC4KLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1kaWZmIC1ydU4gYWxzYS10b29scy0xLjAuMjQuMS1vcmlnLy9sZDEwazEvZ2l0Y29tcGlsZSBhbHNhLXRvb2xzLTEuMC4yNC4xL2xkMTBrMS9naXRjb21waWxlCi0tLS0gYWxzYS10b29scy0xLjAuMjQuMS1vcmlnLy9sZDEwazEvZ2l0Y29tcGlsZQkyMDExLTA3LTA2IDExOjI3OjQwLjIyNzY2NTAwMiArMDgwMAotKysrIGFsc2EtdG9vbHMtMS4wLjI0LjEvbGQxMGsxL2dpdGNvbXBpbGUJMjAxMS0wNy0xNCAxMzoyNjoxOC4wMTc2NjUwMDQgKzA4MDAKLUBAIC0xLDYgKzEsNiBAQAotICMhL2Jpbi9iYXNoCi0gCi0tYXV0b3JlY29uZiAtZmkgfHwgZXhpdCAxCi0rYXV0b3JlY29uZiAkQUNMT0NBTF9GTEFHUyAtZmkgfHwgZXhpdCAxCi0gZXhwb3J0IENGTEFHUz0nLU8yIC1XYWxsIC1waXBlIC1nJwotIGVjaG8gIkNGTEFHUz0kQ0ZMQUdTIgotIGVjaG8gIi4vY29uZmlndXJlICRAIgotZGlmZiAtcnVOIGFsc2EtdG9vbHMtMS4wLjI0LjEtb3JpZy8vTWFrZWZpbGUgYWxzYS10b29scy0xLjAuMjQuMS9NYWtlZmlsZQotLS0tIGFsc2EtdG9vbHMtMS4wLjI0LjEtb3JpZy8vTWFrZWZpbGUJMjAxMS0wNy0wNiAxMToyNzo0MC4yMDc2NjUwMDAgKzA4MDAKLSsrKyBhbHNhLXRvb2xzLTEuMC4yNC4xL01ha2VmaWxlCTIwMTEtMDctMTQgMTU6MDg6MDguODc3NjY1MDA5ICswODAwCi1AQCAtMSw4ICsxLDggQEAKLSBWRVJTSU9OID0gMS4xLjUKLSBUT1AgPSAuCi0tU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIGhkc3Bsb2FkZXIgaGRzcGNvbmYgaGRzcG1peGVyIFwKLStTVUJESVJTID0gYXMxMGsxIGVudnkyNGNvbnRyb2wgXAotIAkgIG1peGFydGxvYWRlciBwY3hocmxvYWRlciBybWVkaWdpY29udHJvbCBzYjE2X2NzcCBzZXEgc3NjYXBlX2N0bCBcCi0tCSAgdXM0Mjhjb250cm9sIHVzeDJ5bG9hZGVyIHZ4bG9hZGVyIGVjaG9taXhlciBsZDEwazEgcWxvMTBrMSBcCi0rCSAgdXM0Mjhjb250cm9sIHVzeDJ5bG9hZGVyIHZ4bG9hZGVyIGVjaG9taXhlciBcCi0gCSAgaHdtaXh2b2x1bWUgaGRhamFja3JldGFzayBoZGEtdmVyYiBoZGFqYWNrc2Vuc2V0ZXN0Ci0gCi0gYWxsOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvZ2l0Y29tcGlsZV9oZGFqYWNrc2Vuc2V0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1ODMyOGJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL2dpdGNvbXBpbGVfaGRhamFja3NlbnNldGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLSMhL2Jpbi9iYXNoCi0KLWFjbG9jYWwgJEFDTE9DQUxfRkxBR1MgfHwgZXhpdCAxCi1hdXRvbWFrZSAtLWZvcmVpZ24gLS1hZGQtbWlzc2luZyB8fCBleGl0IDEKLWF1dG9jb25mIHx8IGV4aXQgMQotZXhwb3J0IENGTEFHUz0nLU8yIC1XYWxsIC1waXBlIC1nJwotZWNobyAiQ0ZMQUdTPSRDRkxBR1MiCi1lY2hvICIuL2NvbmZpZ3VyZSAkQCIKLS4vY29uZmlndXJlICRAIHx8IGV4aXQgMQotdW5zZXQgQ0ZMQUdTCi1pZiBbIC16ICIkR0lUQ09NUElMRV9OT19NQUtFIiBdOyB0aGVuCi0gIG1ha2UgfHwgZXhpdCAxCi1maQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbWFrZWZpbGVfbm9fZ3RrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbWFrZWZpbGVfbm9fZ3RrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDM3M2QxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL21ha2VmaWxlX25vX2d0ay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVJlbW92ZSBzb21lIHN1Yi1jb21wb25lbnRzIHdoaWNoIG5lZWQgZ3RrKy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2dlcmlvIE51bmVzIDxyb251bmVzQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+Ci0KLVVwZGF0ZSBwYXRjaCBmb3IgYWxzYS10b29scyAxLjAuMjkKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAyNDU3YTFjLi43MjM0NmQ5IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMSw5ICsxLDkgQEAKLSBWRVJTSU9OID0gMS4xLjUKLSBUT1AgPSAuCi0tU1VCRElSUyA9IGFzMTBrMSBlbnZ5MjRjb250cm9sIFwKLS0JICBtaXhhcnRsb2FkZXIgcGN4aHJsb2FkZXIgcm1lZGlnaWNvbnRyb2wgc2IxNl9jc3Agc2VxIHNzY2FwZV9jdGwgXAotLQkgIHVzNDI4Y29udHJvbCB1c3gyeWxvYWRlciB2eGxvYWRlciBlY2hvbWl4ZXIgXAotLQkgIGh3bWl4dm9sdW1lIGhkYWphY2tyZXRhc2sgaGRhLXZlcmIgaGRhamFja3NlbnNldGVzdAotK1NVQkRJUlMgPSBhczEwazEgXAotKwkgIG1peGFydGxvYWRlciBwY3hocmxvYWRlciBzYjE2X2NzcCBzZXEgc3NjYXBlX2N0bCBcCi0rCSAgdXM0Mjhjb250cm9sIHVzeDJ5bG9hZGVyIHZ4bG9hZGVyIFwKLSsJICBod21peHZvbHVtZSBoZGEtdmVyYiBoZGFqYWNrc2Vuc2V0ZXN0Ci0gCi0gYWxsOgotIAlAZm9yIGkgaW4gJChTVUJESVJTKTsgZG8gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHMvbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL211c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWViMTI5YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzL211c2wucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSAyMzVkOWM1ZTgzODE1MThiMGE4NjYxNzg2ZTdlMGNiZGQxYmJjZDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTIgSnVuIDIwMTggMTM6MjQ6MzQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGQxMGsxOiBkZWZpbmUgX0dOVV9TT1VSQ0UgYW5kIHVzZSBzaWdoYW5kbGVyX3QKKworX19zaWdoYW5kbGVyX3QgaXMgYSBnbGliYyBpbnRlcm5hbCB0eXBlIHdoaWNoIGRvZXNuJ3QgZXhpc3QgaW4gbXVzbC4gIEJ5IHVzaW5nCitBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgdG8gZ2V0IF9HTlVfU09VUkNFIGRlZmluZWQsIGJvdGggZ2xpYmMgYW5kIG11c2wKK3RoZW4gZXhwb3NlIHNpZ2hhbmRsZXJfdC4KKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKy0tLQorIGxkMTBrMS9jb25maWd1cmUuYWMgICAgICB8IDEgKworIGxkMTBrMS9zcmMvbGQxMGsxX2ZuYzEuYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGQxMGsxL2NvbmZpZ3VyZS5hYyBiL2xkMTBrMS9jb25maWd1cmUuYWMKK2luZGV4IDI3NmIyNGUuLmY0OGNhMzEgMTAwNjQ0CistLS0gYS9sZDEwazEvY29uZmlndXJlLmFjCisrKysgYi9sZDEwazEvY29uZmlndXJlLmFjCitAQCAtNCw2ICs0LDcgQEAgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorIEFNX01BSU5UQUlORVJfTU9ERShbZW5hYmxlXSkKKyAKKyBBQ19DT05GSUdfSEVBREVSUyhjb25maWcuaCkKKytBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyBBQ19QUk9HX0NDCisgQUNfUFJPR19MRAorIEFDX1BST0dfSU5TVEFMTAorZGlmZiAtLWdpdCBhL2xkMTBrMS9zcmMvbGQxMGsxX2ZuYzEuYyBiL2xkMTBrMS9zcmMvbGQxMGsxX2ZuYzEuYworaW5kZXggMzQzNTg0Yy4uZGRjNDNjNiAxMDA2NDQKKy0tLSBhL2xkMTBrMS9zcmMvbGQxMGsxX2ZuYzEuYworKysrIGIvbGQxMGsxL3NyYy9sZDEwazFfZm5jMS5jCitAQCAtMTc5LDcgKzE3OSw3IEBAIGludCBtYWluX2xvb3AoY29tbV9wYXJhbSAqcGFyYW0sIGludCBhdWRpZ3ksIGNvbnN0IGNoYXIgKmNhcmRfaWQsIGludCB0cmFtX3NpemUsCisgeworIAlmZF9zZXQgYWN0aXZlX2ZkX3NldC8qLCByZWFkX2ZkX3NldCovOworIAlpbnQgaSwgaiwgcmVzID0gMDsKKy0JX19zaWdoYW5kbGVyX3Qgb2xkX3NpZ19waXBlOworKwlzaWdoYW5kbGVyX3Qgb2xkX3NpZ19waXBlOworIAorIAlpbnQgbWFpbl9zb2NrID0gMDsKKyAJaW50IGRhdGFfc29jayA9IDA7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmU0M2FhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvb2xzXzEuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJBZHZhbmNlZCB0b29scyBmb3IgY2VydGFpbiBBTFNBIHNvdW5kIGNhcmQgZHJpdmVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCi1ERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgZ2xpYi0yLjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2hkc3Bsb2FkZXIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGQxMGsxL0NPUFlJTkcuTElCO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvdG9vbHMvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcnLCAnZmlsZTovL21ha2VmaWxlX25vX2d0ay5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9naXRjb21waWxlX2hkYWphY2tzZW5zZXRlc3QgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYWZiOTJlYjFiNGYyZWRjODY5MTQ5OGU1N2MzZWM3OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzNjNjU2N2RlODM1MjIzZWU3ZDY5NDg3YjhjMjJmYjM5NWEyZThjNjEzMzQxYjBjOTZlNmE1ZjZhMmJkNTM0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLUVYVFJBX09FTUFLRSArPSAiR0lUQ09NUElMRV9BUkdTPSctLWhvc3Q9JHtIT1NUX1NZU30gLS1idWlsZD0ke0JVSUxEX1NZU30gLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSAtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0gLS1wcmVmaXg9JHtwcmVmaXh9JyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2d0aysnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGsrXSA9ICIsLGd0aysgZ3RrKzMsIgotCi0jIGNvbmZpZ3VyZS5hYy8uaW4gZG9lc24ndCBleGlzdCBzbyBmb3JjZSBjb3B5Ci1BVVRPVE9PTFNfQ09QWUFDTE9DQUwgPSAiMSIKLQotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICAjQXV0b21ha2UgZGlyIGlzIG5vdCBjb3JyZWN0bHkgZGV0ZWN0ZWQgaW4gY3Jvc3MgY29tcGlsYXRpb24gY2FzZQotICAgIGV4cG9ydCBBVVRPTUFLRV9ESVI9IiQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpIgotICAgIGV4cG9ydCBBQ0xPQ0FMX0ZMQUdTPSItLXN5c3RlbS1hY2Rpcj0ke0FDTE9DQUxESVJ9LyAke0FDTE9DQUxFWFRSQVBBVEh9IgotCi0gICAgY3AgJHtXT1JLRElSfS9naXRjb21waWxlX2hkYWphY2tzZW5zZXRlc3QgJHtTfS9oZGFqYWNrc2Vuc2V0ZXN0L2dpdGNvbXBpbGUKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbGQxMGsxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b29sc18xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGU1NGRiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdG9vbHNfMS4xLjYuYmIKQEAgLTAsMCArMSw4NyBAQAorU1VNTUFSWSA9ICJBZHZhbmNlZCB0b29scyBmb3IgY2VydGFpbiBBTFNBIHNvdW5kIGNhcmQgZHJpdmVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCitERVBFTkRTID0gImFsc2EtbGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9oZHNwbG9hZGVyL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xkMTBrMS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzcgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3Rvb2xzLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtY2xhbmctV3Jlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL211c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1Y2E4Yzk0MzdhZTc3OTk5N2NkNjJmYjI4MTVmZWYxOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNjljNGRjMmZiNjQxYTk3NGQ5OTAzZTllYjc4Yzk0Y2IwYzdhYzZjNDViYWU2NjRmMGM5ZDZjMGExNTkzMjI3IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnCisjIGJyb2tlbnNlcCBhcyBhczEwazEgKGFuZCBwcm9iYWJseSBtb3JlKSBmYWlsIG91dCBvZiB0cmVlCitDTEVBTkJST0tFTiA9ICIxIgorCisjIEhlcmUgd2UgdXNlIFBBQ0tBR0VDT05GSUcgb3B0aW9ucyB0byBwaWNrIHdoaWNoIGRpcmVjdG9yaWVzIHdlIGNvbmZpZ3VyZS9idWlsZC4KKyMgUmVtZW1iZXIgb24gdXBncmFkZXMgdG8gY2hlY2sgdGhhdCBubyBuZXcgdG9vbHMgaGF2ZSBiZWVuIGFkZGVkLgorUEFDS0FHRUNPTkZJRyA/Pz0gImFzMTBrMSBoZGFqYWNrc2Vuc2V0ZXN0IGhkYS12ZXJiIGhkc3Bsb2FkZXIgbGQxMGsxIG1peGFydGxvYWRlciBwY3hocmxvYWRlciBcCisgICAgICAgICAgICAgICAgICAgc2IxNl9jc3Agc2VxLS1zYmlsb2FkIHNzY2FwZV9jdGwgdXM0Mjhjb250cm9sIHVzeDJ5bG9hZGVyIHZ4bG9hZGVyIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzJESVNUUk9GRUFUVVJFU30nLCAnZWNob21peGVyIGVudnkyNGNvbnRyb2wgcm1lZGlnaWNvbnRyb2wnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzNESVNUUk9GRUFUVVJFU30nLCAnaGRhamFja3JldGFzaycsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1thczEwazFdID0gIiIKK1BBQ0tBR0VDT05GSUdbZWNob21peGVyXSA9ICIsLGd0aysiCitQQUNLQUdFQ09ORklHW2VudnkyNGNvbnRyb2xdID0gIiwsZ3RrKyIKK1BBQ0tBR0VDT05GSUdbaGRhLXZlcmJdID0gIiIKK1BBQ0tBR0VDT05GSUdbaGRhamFja3JldGFza10gPSAiLCxndGsrMyIKK1BBQ0tBR0VDT05GSUdbaGRhamFja3NlbnNldGVzdF0gPSAiLCxnbGliLTIuMCIKK1BBQ0tBR0VDT05GSUdbaGRzcGNvbmZdID0gIiwsZmx0ayIKK1BBQ0tBR0VDT05GSUdbaGRzcGxvYWRlcl0gPSAiIgorUEFDS0FHRUNPTkZJR1toZHNwbWl4ZXJdID0gIiwsZmx0ayIKK1BBQ0tBR0VDT05GSUdbaHdtaXh2b2x1bWVdID0gIiwsLHB5dGhvbi1jb3JlIHB5dGhvbi1weWd0ayIKK1BBQ0tBR0VDT05GSUdbbGQxMGsxXSA9ICIiCitQQUNLQUdFQ09ORklHW21peGFydGxvYWRlcl0gPSAiIgorUEFDS0FHRUNPTkZJR1twY3hocmxvYWRlcl0gPSAiIgorUEFDS0FHRUNPTkZJR1txbG8xMGsxXSA9ICIsLHF0LXgxMS1mcmVlIgorUEFDS0FHRUNPTkZJR1tybWVkaWdpY29udHJvbF0gPSAiLCxndGsrIgorUEFDS0FHRUNPTkZJR1tzYjE2X2NzcF0gPSAiIgorUEFDS0FHRUNPTkZJR1tzZXEtLXNiaWxvYWRdID0gIiIKK1BBQ0tBR0VDT05GSUdbc3NjYXBlX2N0bF0gPSAiIgorUEFDS0FHRUNPTkZJR1t1czQyOGNvbnRyb2xdID0gIiIKK1BBQ0tBR0VDT05GSUdbdXN4Mnlsb2FkZXJdID0gIiIKK1BBQ0tBR0VDT05GSUdbdnhsb2FkZXJdID0gIiIKKworcHl0aG9uIGRvX2NvbmZpZ3VyZSgpIHsKKyAgICBmb3Igc3ViZGlyIGluIGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKToKKyAgICAgICAgc3ViZGlyID0gc3ViZGlyLnJlcGxhY2UoIi0tIiwgIi8iKQorICAgICAgICBiYi5ub3RlKCJDb25maWd1cmluZyAlcyIgJSBzdWJkaXIpCisgICAgICAgIGRkID0gZC5jcmVhdGVDb3B5KCkKKyAgICAgICAgZGQuc2V0VmFyKCJTIiwgb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJTIiksIHN1YmRpcikpCisgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSIsIGRkKQorfQorCitweXRob24gZG9fY29tcGlsZSgpIHsKKyAgICBmb3Igc3ViZGlyIGluIGQuZ2V0VmFyKCJQQUNLQUdFQ09ORklHIikuc3BsaXQoKToKKyAgICAgICAgc3ViZGlyID0gc3ViZGlyLnJlcGxhY2UoIi0tIiwgIi8iKQorICAgICAgICBiYi5ub3RlKCJDb21waWxpbmcgJXMiICUgc3ViZGlyKQorICAgICAgICBkZCA9IGQuY3JlYXRlQ29weSgpCisgICAgICAgIGRkLnNldFZhcigiUyIsIG9zLnBhdGguam9pbihkLmdldFZhcigiUyIpLCBzdWJkaXIpKQorICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImF1dG90b29sc19kb19jb21waWxlIiwgZGQpCit9CisKK3B5dGhvbiBkb19pbnN0YWxsKCkgeworICAgIGZvciBzdWJkaXIgaW4gZC5nZXRWYXIoIlBBQ0tBR0VDT05GSUciKS5zcGxpdCgpOgorICAgICAgICBzdWJkaXIgPSBzdWJkaXIucmVwbGFjZSgiLS0iLCAiLyIpCisgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgJXMiICUgc3ViZGlyKQorICAgICAgICBkZCA9IGQuY3JlYXRlQ29weSgpCisgICAgICAgIGRkLnNldFZhcigiUyIsIG9zLnBhdGguam9pbihkLmdldFZhcigiUyIpLCBzdWJkaXIpKQorICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImF1dG90b29sc19kb19pbnN0YWxsIiwgZGQpCisKKyAgICAjIEp1c3QgcmVtb3ZlIGJhc2gtbmVlZGluZyBpbml0IHNjcmlwdCB0aGF0IGlzbid0IGluc3RhbGxlZCBhcyBhbiBpbml0IHNjcmlwdAorICAgIHRyeToKKyAgICAgICAgb3MucmVtb3ZlKG9lLnBhdGguam9pbihkLmdldFZhcigiRCIpLCBkLmdldFZhcigic2JpbmRpciIpLCAibGQxMGsxZCIpKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcGFzcworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS42LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS41LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS42LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwN2NhNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMvMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBiOWQ0MWI3ODQ2NTcxNTJhNGM1NjgzYTk0NThkZmZhYjU1N2YwNjg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IEZyaSwgMjkgQXVnIDIwMTQgMTg6NTg6NTYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gYWxzYWN0bDogZG9uJ3QgbGV0IHN5c3RlbWQgdW5pdCByZXN0b3JlIHRoZSB2b2x1bWUgd2hlbgotIGFzb3VuZC5zdGF0ZSBpcyBtaXNzaW5nCi0KLVRoaXMgYXZvaWRzIGFuIGVycm9yIG9uIGJvb3R1cAotCi1GaWxlZCBhcyBodHRwczovL2J1Z3RyYWNrLmFsc2EtcHJvamVjdC5vcmcvYWxzYS1idWcvdmlldy5waHA/aWQ9NTQ1OQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+Ci0KLVJlYmFzZWQgb24gMS4xLjAuCi0KLVNpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLS0tLQotIGFsc2FjdGwvTWFrZWZpbGUuYW0gICAgICAgICAgICAgfCA3ICsrKystLS0KLSBhbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9hbHNhY3RsL01ha2VmaWxlLmFtIGIvYWxzYWN0bC9NYWtlZmlsZS5hbQotaW5kZXggOTBmYWI5ZC4uMTkwNTI1YSAxMDA2NDQKLS0tLSBhL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2Fsc2FjdGwvTWFrZWZpbGUuYW0KLUBAIC0zOCw5ICszOCwxMCBAQCBpbnN0YWxsLWRhdGEtaG9vazoKLSBlbmRpZgotIAotIGVkaXQgPSBcCi0tCSQoU0VEKSAtciAtZSAncyxAc2JpbmRpclxALCQoc2JpbmRpciksZycgXAotLQkJICAtZSAncyxAbXlkYXRhZGlyXEAsJChteWRhdGFkaXIpLGcnIFwKLS0JCSAgLWUgJ3MsQGRhZW1vbnN3aXRjaFxALCQoQUxTQUNUTF9EQUVNT05TV0lUQ0gpLGcnIFwKLSsJJChTRUQpIC1lICdzLEBsb2NhbHN0YXRlZGlyXEAsJChsb2NhbHN0YXRlZGlyKSxnJyBcCi0rCSAgICAgICAtZSAncyxAc2JpbmRpclxALCQoc2JpbmRpciksZycgXAotKwkgICAgICAgLWUgJ3MsQG15ZGF0YWRpclxALCQobXlkYXRhZGlyKSxnJyBcCi0rCSAgICAgICAtZSAncyxAZGFlbW9uc3dpdGNoXEAsJChBTFNBQ1RMX0RBRU1PTlNXSVRDSCksZycgXAotIAkJCQkJCQk8ICQ8ID4gJEAgfHwgcm0gJEAKLSAKLSBhbHNhLXN0YXRlLnNlcnZpY2U6IGFsc2Etc3RhdGUuc2VydmljZS5pbgotZGlmZiAtLWdpdCBhL2Fsc2FjdGwvYWxzYS1yZXN0b3JlLnNlcnZpY2UuaW4gYi9hbHNhY3RsL2Fsc2EtcmVzdG9yZS5zZXJ2aWNlLmluCi1pbmRleCA4MGZkNWZkLi42YmViMzZkIDEwMDY0NAotLS0tIGEvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotKysrIGIvYWxzYWN0bC9hbHNhLXJlc3RvcmUuc2VydmljZS5pbgotQEAgLTcsNiArNyw3IEBACi0gRGVzY3JpcHRpb249U2F2ZS9SZXN0b3JlIFNvdW5kIENhcmQgU3RhdGUKLSBDb25kaXRpb25QYXRoRXhpc3RzPSFAZGFlbW9uc3dpdGNoQAotIENvbmRpdGlvblBhdGhFeGlzdHNHbG9iPS9kZXYvc25kL2NvbnRyb2wqCi0rQ29uZGl0aW9uUGF0aEV4aXN0cz1AbG9jYWxzdGF0ZWRpckAvbGliL2Fsc2EvYXNvdW5kLnN0YXRlCi0gCi0gW1NlcnZpY2VdCi0gVHlwZT1vbmVzaG90Ci0tLSAKLTIuMTQuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzIxNWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBzb3VuZCB1dGlsaXRpZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYWxzYWN0bC91dGlscy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWZlOTUyNmIwNTVlMjQ2YjU1NTg4MDlhNWFlMjVjMGI5IgotREVQRU5EUyA9ICJhbHNhLWxpYiBuY3Vyc2VzIGxpYnNhbXBsZXJhdGUwIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiIKLQotIyBhbHNhYmF0IGNhbiBiZSBidWlsdCBhbHNvIHdpdGhvdXQgZmZ0dyBzdXBwb3J0ICh3aXRoIHJlZHVjZWQgZnVuY3Rpb25hbGl0eSkuCi0jIEl0IHdvdWxkIGJlIGJldHRlciB0byBhbHdheXMgZW5hYmxlIGFsc2FiYXQsIGJ1dCBwcm92aWRlIGFuIG9wdGlvbiBmb3IKLSMgZW5hYmxpbmcvZGlzYWJsaW5nIGZmdHcuIFRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0LCBob3dldmVyCi0jIChhdCBsZWFzdCBpbiBhbnkgb2J2aW91cyB3YXkpLCBzbyBmb3Igbm93IHdlIG9ubHkgc3VwcG9ydCBhbHNhYmF0IHdpdGggZmZ0dwotIyBvciBubyBhbHNhYmF0IGF0IGFsbC4KLVBBQ0tBR0VDT05GSUdbYmF0XSA9ICItLWVuYWJsZS1iYXQsLS1kaXNhYmxlLWJhdCxmZnR3ZiIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldi1ydWxlcy1kaXI9YHBrZy1jb25maWcgLS12YXJpYWJsZT11ZGV2ZGlyIHVkZXZgL3J1bGVzLmQsLS13aXRoLXVkZXYtcnVsZXMtZGlyPS91bndhbnRlZC9ydWxlcy5kLHVkZXYiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS14bWx0bywgLS1kaXNhYmxlLXhtbHRvLCB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi91dGlscy9hbHNhLXV0aWxzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hbHNhY3RsLWRvbi10LWxldC1zeXN0ZW1kLXVuaXQtcmVzdG9yZS10aGUtdm9sdW1lLXdoLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkZmU2ZWExNDdhNWUwN2EwNTY5MTk1OTFjMmY1ZGFjMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjBiZDI4NWU5MWRiNmU3ZmQ3ZGIzYzllYzZmNTViMDJmMzU0NDlmZjI3M2M3ODQ0NzgwYWM2YTVhM2RlMmU4IgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKLUZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgotRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgotRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgotRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JIyBJZiB1ZGV2IGlzIGRpc2FibGVkLCB3ZSB0b2xkIGNvbmZpZ3VyZSB0byBpbnN0YWxsIHRoZSBydWxlcwotCSMgaW4gL3Vud2FudGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZW0gbm93LiBJZiB1ZGV2IGlzIGVuYWJsZWQsCi0JIyB0aGVuIC91bndhbnRlZCB3b24ndCBleGlzdCBhbmQgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgotCXJtIC1yZiAke0R9L3Vud2FudGVkCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YmEwY2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNi5iYgpAQCAtMCwwICsxLDEwNyBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9MmNlN2Y3YjY3Mzk0ODdmYjcyYzY4OWQ0NjUyMWY5NTgiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwtLXdpdGgtdWRldi1ydWxlcy1kaXI9L3Vud2FudGVkL3J1bGVzLmQsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTBhZTc1NTY3NDU5NjQ2Yjg0M2JlZDc4ZDkxNmIwMDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTU1Y2FlY2M0MGIyMjIwZjY4NmYzNGJhMzY1NWE1M2UzYmRiYzA1ODZhZGIxMDU2NzMzOTQ5ZmVhYWY3ZDM2ZSIKKworIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAorIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAorIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgorIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgbWFucGFnZXMKKworIyBUaGlzIGFyZSBhbGwgcGFja2FnZXMgdGhhdCB3ZSBuZWVkIHRvIG1ha2UuIEFsc28sIHRoZSBub3cgZW1wdHkgYWxzYS11dGlscworIyBpcGsgZGVwZW5kcyBvbiB0aGVtLgorCitBTFNBX1VUSUxTX1BLR1MgPSAiXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JhdCcsICdhbHNhLXV0aWxzLWFsc2FiYXQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdHBsZyBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1taWRpIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFtaXhlciBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hY29ubmVjdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1pZWNzZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtc3BlYWtlcnRlc3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcW5ldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxZHVtcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhY3RsIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2Fsb29wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F1Y20gXAorICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfYWxzYS11dGlscy1hbHNhYmF0ICAgICA9ICIke2JpbmRpcn0vYWxzYWJhdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgPSAiJHtiaW5kaXJ9L2Fsc2F0cGxnIgorRklMRVNfYWxzYS11dGlscy1hcGxheSAgICAgICA9ICIke2JpbmRpcn0vYXBsYXkgJHtiaW5kaXJ9L2FyZWNvcmQiCitGSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCitGSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgorRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kICovKi91ZGV2L3J1bGVzLmQgJHtzeXN0ZW1kX3VuaXRkaXJ9ICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EgJHtkYXRhZGlyfS9hbHNhL2luaXQvIgorRklMRVNfYWxzYS11dGlscy1hc2VxZHVtcCAgICA9ICIke2JpbmRpcn0vYXNlcWR1bXAiCitGSUxFU19hbHNhLXV0aWxzLWFsc2Fsb29wICAgID0gIiR7YmluZGlyfS9hbHNhbG9vcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgPSAiJHtiaW5kaXJ9L2Fsc2F1Y20iCisKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhYmF0ICAgICAgPSAiQ29tbWFuZC1saW5lIHNvdW5kIHRlc3RlciBmb3IgQUxTQSBzb3VuZCBjYXJkIGRyaXZlciIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdHBsZyAgICAgPSAiQ29udmVydHMgdG9wb2xvZ3kgdGV4dCBmaWxlcyBpbnRvIGJpbmFyeSBmb3JtYXQgZm9yIGtlcm5lbCIKK1NVTU1BUllfYWxzYS11dGlscy1hcGxheSAgICAgICAgPSAiUGxheSAoYW5kIHJlY29yZCkgc291bmQgZmlsZXMgdXNpbmcgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hbWl4ZXIgICAgICAgPSAiQ29tbWFuZC1saW5lIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FtaXhlciAgICA9ICJuY3Vyc2VzLWJhc2VkIGNvbnRyb2wgZm9yIEFMU0EgbWl4ZXIgYW5kIHNldHRpbmdzIgorU1VNTUFSWV9hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ICA9ICJBTFNBIHN1cnJvdW5kIHNwZWFrZXIgdGVzdCB1dGlsaXR5IgorU1VNTUFSWV9hbHNhLXV0aWxzLW1pZGkgICAgICAgICA9ICJNaXNjZWxsYW5lb3VzIE1JREkgdXRpbGl0aWVzIGZvciBBTFNBIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFjb25uZWN0ICAgICA9ICJBTFNBIHNlcXVlbmNlciBjb25uZWN0aW9uIG1hbmFnZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgID0gIk5ldHdvcmsgY2xpZW50L3NlcnZlciBmb3IgQUxTQSBzZXF1ZW5jZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgID0gIkFMU0EgdXRpbGl0eSBmb3Igc2V0dGluZy9zaG93aW5nIElFQzk1OCAoUy9QRElGKSBzdGF0dXMgYml0cyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhY3RsICAgICAgPSAiU2F2ZXMvcmVzdG9yZXMgQUxTQS1zZXR0aW5ncyBpbiAvZXRjL2Fzb3VuZC5zdGF0ZSIKK1NVTU1BUllfYWxzYS11dGlscy1hc2VxZHVtcCAgICAgPSAiU2hvd3MgdGhlIGV2ZW50cyByZWNlaXZlZCBhdCBhbiBBTFNBIHNlcXVlbmNlciBwb3J0IgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2Fsb29wICAgICA9ICJBTFNBIFBDTSBsb29wYmFjayB1dGlsaXR5IgorU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F1Y20gICAgICA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIiCisKK1JSRUNPTU1FTkRTX2Fsc2EtdXRpbHMtYWxzYWN0bCA9ICJhbHNhLXN0YXRlcyIKKworQUxMT1dfRU1QVFlfYWxzYS11dGlscyA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIFdlIGRvbid0IHNoaXAgdGhpcyBoZXJlIGJlY2F1c2UgaXQgcmVxdWlyZXMgYSBkZXBlbmRlbmN5IG9uIGJhc2guCisJIyBTZWUgYWxzYS11dGlscy1zY3JpcHRzXyR7UFZ9LmJiCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYWNvbmYKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhLWluZm8uc2gKKwlybSAtZiAke0R9JHtzYmluZGlyfS9hbHNhYmF0LXRlc3Quc2gKKworCSMgSWYgdWRldiBpcyBkaXNhYmxlZCwgd2UgdG9sZCBjb25maWd1cmUgdG8gaW5zdGFsbCB0aGUgcnVsZXMKKwkjIGluIC91bndhbnRlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGVtIG5vdy4gSWYgdWRldiBpcyBlbmFibGVkLAorCSMgdGhlbiAvdW53YW50ZWQgd29uJ3QgZXhpc3QgYW5kIHRoaXMgd2lsbCBoYXZlIG5vIGVmZmVjdC4KKwlybSAtcmYgJHtEfS91bndhbnRlZAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE4LTE1ODIyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE4LTE1ODIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNTg2OGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTgtMTU4MjIucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA2YjY3ZDdmMDU5MThmN2ExZWU4ZmM2ZmYyMTM1NWQ3ZTg3MzZhYTEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK0RhdGU6IFNhdCwgMjggSnVsIDIwMTggMTU6MDM6NTAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvZmx2ZW5jOiBDaGVjayBhdWRpbyBwYWNrZXQgc2l6ZQorCitGaXhlczogQXNzZXJ0aW9uIGZhaWx1cmUKK0ZpeGVzOiBhc3NlcnRfZmx2ZW5jLmM6OTQxXzEuc3dmCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnL2NvbW1pdC82YjY3ZDdmMDU5MThmN2ExZWU4ZmM2ZmYyMTM1NWQ3ZTg3MzZhYTEwXQorQ1ZFOiBDVkUtMjAxOC0xNTgyMgorCitGb3VuZC1ieTogI0NIRU4gSE9OR1hVIyA8SENIRU4wMTdAZS5udHUuZWR1LnNnPgorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9mbHZlbmMuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9mbHZlbmMuYyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCitpbmRleCAxYzU1MmEzZTZiLi5lNDg2M2YxZmM3IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvZmx2ZW5jLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2ZsdmVuYy5jCitAQCAtODgzLDYgKzg4MywxMSBAQCBzdGF0aWMgaW50IGZsdl93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQorICAgICBpbnQgZmxhZ3MgPSAtMSwgZmxhZ3Nfc2l6ZSwgcmV0OworICAgICBpbnQ2NF90IGN1cl9vZmZzZXQgPSBhdmlvX3RlbGwocGIpOworIAorKyAgICBpZiAocGFyLT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyAmJiAhcGt0LT5zaXplKSB7CisrICAgICAgICBhdl9sb2cocywgQVZfTE9HX1dBUk5JTkcsICJFbXB0eSBhdWRpbyBQYWNrZXRcbiIpOworKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKysgICAgfQorKworICAgICBpZiAocGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDZGIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA2QSB8fAorICAgICAgICAgcGFyLT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDYgIHx8IHBhci0+Y29kZWNfaWQgPT0gQVZfQ09ERUNfSURfQUFDKQorICAgICAgICAgZmxhZ3Nfc2l6ZSA9IDI7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3OWNmN2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImNiZjRlYWQyMjdmY2VkZGRmNTRjODYwMTM3MDVhOTg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiOTJlOTU3OGVmOGIzZTQ5ZWVhYjIyOWU2OTMwNWY1ZjRjYmMxZmRhYTIyZTkyN2ZjN2ZjYTE4YWNjY2Q3NDAiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKLSMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQotUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCi0KLURFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAotICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItLWVuYWJsZS1zZGwyLC0tZGlzYWJsZS1zZGwyLHZpcnR1YWwvbGlic2RsMiIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCi1QQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKLQotIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKLVVTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgotCi1kZWYgY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnWzY6XQotICAgIHJldHVybiAnZ2VuZXJpYycKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAtLWRpc2FibGUtbGlieGNiIFwKLSAgICAtLWRpc2FibGUtbGlieGNiLXNobSBcCi0gICAgLS1kaXNhYmxlLWxpYnhjYi14Zml4ZXMgXAotICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2hhcGUgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VfTk9ORlJFRScsICd5ZXMnLCAnLS1lbmFibGUtbm9uZnJlZScsICcnLCBkKX0gXAotICAgIFwKLSAgICAtLWNyb3NzLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKLSAgICBcCi0gICAgLS1sZD0iJHtDQ0xEfSIgXAotICAgIC0tY2M9IiR7Q0N9IiBcCi0gICAgLS1jeHg9IiR7Q1hYfSIgXAotICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCi0gICAgLS10YXJnZXQtb3M9ImxpbnV4IiBcCi0gICAgLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCi0gICAgLS1leHRyYS1jZmxhZ3M9IiR7VEFSR0VUX0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKLSAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7VEFSR0VUX0xERkxBR1N9IiBcCi0gICAgLS1zeXNyb290PSIke1NUQUdJTkdfRElSX1RBUkdFVH0iIFwKLSAgICAtLWVuYWJsZS1oYXJkY29kZWQtdGFibGVzIFwKLSAgICAke0VYVFJBX0ZGQ09ORn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1zaGxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9L2ZmbXBlZyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0FWQUlMVFVORVMnLCAnbWlwczMycjInLCAnJywgJy0tZGlzYWJsZS1taXBzZHNwIC0tZGlzYWJsZS1taXBzZHNwcjInLCBkKX0gXAotICAgIC0tY3B1PSR7QGNwdShkKX0gXAotICAgIC0tcGtnLWNvbmZpZz1wa2ctY29uZmlnIFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotUEFDS0FHRVMgPSsgImxpYmF2Y29kZWMgXAotICAgICAgICAgICAgIGxpYmF2ZGV2aWNlIFwKLSAgICAgICAgICAgICBsaWJhdmZpbHRlciBcCi0gICAgICAgICAgICAgbGliYXZmb3JtYXQgXAotICAgICAgICAgICAgIGxpYmF2cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYmF2dXRpbCBcCi0gICAgICAgICAgICAgbGlicG9zdHByb2MgXAotICAgICAgICAgICAgIGxpYnN3cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYnN3c2NhbGUiCi0KLUZJTEVTX2xpYmF2Y29kZWMgPSAiJHtsaWJkaXJ9L2xpYmF2Y29kZWMke1NPTElCU30iCi1GSUxFU19saWJhdmRldmljZSA9ICIke2xpYmRpcn0vbGliYXZkZXZpY2Uke1NPTElCU30iCi1GSUxFU19saWJhdmZpbHRlciA9ICIke2xpYmRpcn0vbGliYXZmaWx0ZXIke1NPTElCU30iCi1GSUxFU19saWJhdmZvcm1hdCA9ICIke2xpYmRpcn0vbGliYXZmb3JtYXQke1NPTElCU30iCi1GSUxFU19saWJhdnJlc2FtcGxlID0gIiR7bGliZGlyfS9saWJhdnJlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGliYXZ1dGlsID0gIiR7bGliZGlyfS9saWJhdnV0aWwke1NPTElCU30iCi1GSUxFU19saWJwb3N0cHJvYyA9ICIke2xpYmRpcn0vbGlicG9zdHByb2Mke1NPTElCU30iCi1GSUxFU19saWJzd3Jlc2FtcGxlID0gIiR7bGliZGlyfS9saWJzd3Jlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGlic3dzY2FsZSA9ICIke2xpYmRpcn0vbGlic3dzY2FsZSR7U09MSUJTfSIKLQotIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDFhZjA0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMC4yLmJiCkBAIC0wLDAgKzEsMTU4IEBACitTVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCitERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAorICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKKyAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCitMSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKK0xJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCitMSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xNTgyMi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZTBiZmRmODA5MzA2YTIxMmI0ZjBlNmViOGQxYzc1ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTVjMGNjOWViOTkwZTk0MDMxZDIxODNmMmU2ZTQ0NGNjNjFjOTlmNmYxODJkMTU3NWM0MzNkNjJhZmIyZjk3IgorCisjIEJ1aWxkIGZhaWxzIHdoZW4gdGh1bWIgaXMgZW5hYmxlZDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD03NzE3CitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKKyMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQorIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCitQUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKKworREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyBuYXNtLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCisgICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3h2JywgJycsIGQpfSIKKworIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCitQQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCitQQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCitQQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCitQQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCitQQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCitQQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCitQQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCisKKyMgZmVhdHVyZXMgdG8gc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmFhcGldID0gIi0tZW5hYmxlLXZhYXBpLC0tZGlzYWJsZS12YWFwaSxsaWJ2YSIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS1saWJ2cHgsLS1kaXNhYmxlLWxpYnZweCxsaWJ2cHgiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLWxpYngyNjQsLS1kaXNhYmxlLWxpYngyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLW91dGRldj14diwtLWRpc2FibGUtb3V0ZGV2PXh2LGxpYnh2IgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IgXAorICAgIC0tZGlzYWJsZS1saWJ4Y2Itc2htIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXhmaXhlcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaGFwZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRV9OT05GUkVFJywgJ3llcycsICctLWVuYWJsZS1ub25mcmVlJywgJycsIGQpfSBcCisgICAgXAorICAgIC0tY3Jvc3MtcHJlZml4PSR7VEFSR0VUX1BSRUZJWH0gXAorICAgIFwKKyAgICAtLWxkPSIke0NDTER9IiBcCisgICAgLS1jYz0iJHtDQ30iIFwKKyAgICAtLWN4eD0iJHtDWFh9IiBcCisgICAgLS1hcmNoPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAtLXRhcmdldC1vcz0ibGludXgiIFwKKyAgICAtLWVuYWJsZS1jcm9zcy1jb21waWxlIFwKKyAgICAtLWV4dHJhLWNmbGFncz0iJHtUQVJHRVRfQ0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtUQVJHRVRfTERGTEFHU30iIFwKKyAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAorICAgIC0tZW5hYmxlLWhhcmRjb2RlZC10YWJsZXMgXAorICAgICR7RVhUUkFfRkZDT05GfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCisgICAgLS1jcHU9JHtAY3B1KGQpfSBcCisgICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKKyMgZ29sZCBjcmFzaGVzIG9uIHg4NiwgYW5vdGhlciBzb2x1dGlvbiBpcyB0byAtLWRpc2FibGUtYXNtIGJ1dCB0aGF0cyBtb3JlIGhhY2t5CisjIGxkLmdvbGQ6IGludGVybmFsIGVycm9yIGluIHJlbG9jYXRlX3NlY3Rpb24sIGF0IC4uLy4uL2dvbGQvaTM4Ni5jYzozNjg0CisKK0xERkxBR1NfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK1BBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKKyAgICAgICAgICAgICBsaWJhdmRldmljZSBcCisgICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAorICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKKyAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJhdnV0aWwgXAorICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKKyAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJzd3NjYWxlIgorCitGSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgorRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgorRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgorRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgorRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgorRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgorRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCisKKyMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmlsZXMvQ1ZFLTIwMTctNjg4OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9maWxlcy9DVkUtMjAxNy02ODg4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODlhYjk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9maWxlcy9DVkUtMjAxNy02ODg4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSA0ZjQ3YjYzZTljOTcxZTYzOTE1OTBjYWYwMGEwZjJhNWVkNjEyZTY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXJpayBkZSBDYXN0cm8gTG9wbyA8ZXJpa2RAbWVnYS1uZXJkLmNvbT4KLURhdGU6IFNhdCwgOCBBcHIgMjAxNyAxODozNDo0OSArMTAwMAotU3ViamVjdDogW1BBVENIXSBzdHJlYW1fZGVjb2Rlci5jOiBGaXggYSBtZW1vcnkgbGVhawotCi1MZWFrIHJlcG9ydGVkIGJ5IFNlY3VuaWEgUmVzZWFyY2guCi1DVkU6IENWRS0yMDE3LTY4ODgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPWZsYWMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTRmNDdiNjNlOWM5NzFlNjM5MTU5MGNhZjAwYTBmMmE1ZWQ2MTJlNjddCi0KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIHNyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi1pbmRleCAxNGQ1ZmU3Zi4uYTU1Mjc1MTEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi0rKysgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi1AQCAtMTc1Myw2ICsxNzUzLDkgQEAgRkxBQ19fYm9vbCByZWFkX21ldGFkYXRhX3ZvcmJpc2NvbW1lbnRfKEZMQUNfX1N0cmVhbURlY29kZXIgKmRlY29kZXIsIEZMQUNfX1N0cmUKLSAJCQkJCX0KLSAJCQkJCW1lbXNldCAob2JqLT5jb21tZW50c1tpXS5lbnRyeSwgMCwgb2JqLT5jb21tZW50c1tpXS5sZW5ndGgpIDsKLSAJCQkJCWlmICghRkxBQ19fYml0cmVhZGVyX3JlYWRfYnl0ZV9ibG9ja19hbGlnbmVkX25vX2NyYyhkZWNvZGVyLT5wcml2YXRlXy0+aW5wdXQsIG9iai0+Y29tbWVudHNbaV0uZW50cnksIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSkgewotKwkJCQkJCS8qIEN1cnJlbnQgaS10aCBlbnRyeSBpcyBiYWQsIHNvIHdlIGRlbGV0ZSBpdC4gKi8KLSsJCQkJCQlmcmVlIChvYmotPmNvbW1lbnRzW2ldLmVudHJ5KSA7Ci0rCQkJCQkJb2JqLT5jb21tZW50c1tpXS5lbnRyeSA9IE5VTEwgOwotIAkJCQkJCW9iai0+bnVtX2NvbW1lbnRzID0gaTsKLSAJCQkJCQlnb3RvIHNraXA7Ci0gCQkJCQl9Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhYy9DVkUtMjAxNy02ODg4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWMvQ1ZFLTIwMTctNjg4OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE3OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWMvQ1ZFLTIwMTctNjg4OC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDQzZWNiNjQzMTA3N2ZmNTRlOWRmMjdmNzE3MzdlNmU5NmQ2YzAzOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyMSBBdWcgMjAxOCAxNDo0Njo0MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBGcm9tIDVmNDdiNjNlOWM5NzFlNjM5MTU5MGNhZjAwYTBmMmE1ZWQ2MTJlNjcgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogRXJpayBkZSBDYXN0cm8gTG9wbyA8ZXJpa2RAbWVnYS1uZXJkLmNvbT4gRGF0ZTogU2F0LCA4CisgQXByIDIwMTcgMTg6MzQ6NDkgKzEwMDAgU3ViamVjdDogW1BBVENIXSBzdHJlYW1fZGVjb2Rlci5jOiBGaXggYSBtZW1vcnkgbGVhaworCitMZWFrIHJlcG9ydGVkIGJ5IFNlY3VuaWEgUmVzZWFyY2guCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9ZmxhYy5naXQ7YT1jb21taXQ7CisgICAgICAgICAgICAgICAgIGg9NGY0N2I2M2U5Yzk3MWU2MzkxNTkwY2FmMDBhMGYyYTVlZDYxMmU2N10KKworVXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gMS4zLjIKK0NWRTogQ1ZFLTIwMTctNjg4OAorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYyB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYyBiL3NyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMKK2luZGV4IGQzNjRiMGMuLmViZjkzZGEgMTAwNjQ0CistLS0gYS9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCisrKysgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCitAQCAtMTc1OSw2ICsxNzU5LDkgQEAgRkxBQ19fYm9vbCByZWFkX21ldGFkYXRhX3ZvcmJpc2NvbW1lbnRfKEZMQUNfX1N0cmVhbURlY29kZXIgKmRlY29kZXIsIEZMQUNfX1N0cmUKKyAJCQkJCX0KKyAJCQkJCW1lbXNldCAob2JqLT5jb21tZW50c1tpXS5lbnRyeSwgMCwgb2JqLT5jb21tZW50c1tpXS5sZW5ndGgpIDsKKyAJCQkJCWlmICghRkxBQ19fYml0cmVhZGVyX3JlYWRfYnl0ZV9ibG9ja19hbGlnbmVkX25vX2NyYyhkZWNvZGVyLT5wcml2YXRlXy0+aW5wdXQsIG9iai0+Y29tbWVudHNbaV0uZW50cnksIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSkgeworKwkJCQkJCS8qIEN1cnJlbnQgaS10aCBlbnRyeSBpcyBiYWQsIHNvIHdlIGRlbGV0ZSBpdC4gKi9cCisrCQkJCQkJZnJlZSAob2JqLT5jb21tZW50c1tpXS5lbnRyeSkgOworKwkJCQkJCW9iai0+Y29tbWVudHNbaV0uZW50cnkgPSBOVUxMIDsJCQkJCQkKKyAJCQkJCQlvYmotPm51bV9jb21tZW50cyA9IGk7CisgCQkJCQkJZ290byBza2lwOworIAkJCQkJfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4yLmJiCmluZGV4IDAyOGE0MjkuLjkyZWY4OTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4yLmJiCkBAIC0xNSw3ICsxNSw4IEBACiBERVBFTkRTID0gImxpYm9nZyIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL2ZsYWMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY4ODgucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODg4LnBhdGNoICIKKwogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDU0ZjFiZmEzZjkzY2M3MDgwOThkNzg5MGQwNDk5YmQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFjZmMzZWQ2MWRjNDBmNDdmMDUwYTEwOWIwODYxMDY2N2Q3MzQ3N2FmNmVmMzZkY2FkMzFjMzFhNGE4ZDUzZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZDIxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMGJkODAwNGQ4ZGRkYzQ4NmQzOTYxYTUzMTZkMjRlOGYyNjQ1ZTRjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDkgU2VwIDIwMTggMTc6Mzg6MTAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ubmVjdCBoYXMgYSBkaWZmZXJlbnQgc2lnbmF0dXJlIG9uIG11c2wKKworT24gbGludXggd2hlbiBub3QgdXNpbmcgZ2xpYmMgYW5kIHVzaW5nIG11c2wgZm9yIEMgbGlicmFyeSwgY29ubmVjdAorQVBJIGhhcyBhIGRpZmZlcmVudCBzaWduYXR1cmUsIHRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBzbyBpdCBjYW4gY29tcGlsZQorb24gbXVzbCwgdGhlIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIHJlbWFpbiBzYW1lIGFzIGl0IGlzIGltbWVkaWF0ZWx5Cit0eXBjYXN0ZWQgdG8gc3RydWN0IHNvY2thZGRyX2luKiB0eXBlIGluc2lkZSB0aGUgZnVuY3Rpb24gYmVmb3JlIHVzZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHBsdWdpbnMvZmF1bHRfaW5qZWN0aW9uL3NvY2tldF9pbnRlcnBvc2VyLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wbHVnaW5zL2ZhdWx0X2luamVjdGlvbi9zb2NrZXRfaW50ZXJwb3Nlci5jIGIvcGx1Z2lucy9mYXVsdF9pbmplY3Rpb24vc29ja2V0X2ludGVycG9zZXIuYworaW5kZXggNTNjMWViYi4uYWQ3YWRmOCAxMDA2NDQKKy0tLSBhL3BsdWdpbnMvZmF1bHRfaW5qZWN0aW9uL3NvY2tldF9pbnRlcnBvc2VyLmMKKysrKyBiL3BsdWdpbnMvZmF1bHRfaW5qZWN0aW9uL3NvY2tldF9pbnRlcnBvc2VyLmMKK0BAIC0xMDAsMTAgKzEwMCwxNSBAQCBzb2NrZXRfaW50ZXJwb3Nlcl9zZXRfY2FsbGJhY2sgKHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkcmluLAorIH0KKyAKKyBpbnQKKy1jb25uZWN0IChpbnQgc29ja2V0LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHJpbiwgc29ja2xlbl90IGFkZHJlc3NfbGVuKQorKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorK2Nvbm5lY3QgKGludCBzb2NrZXQsIGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90IGFkZHJlc3NfbGVuKQorKyNlbHNlCisrY29ubmVjdCAoaW50IHNvY2tldCwgY29uc3Qgc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBzb2NrbGVuX3QgYWRkcmVzc19sZW4pCisrI2VuZGlmCisgeworICAgc2l6ZV90IGk7CisgICBpbnQgb3ZlcnJpZGVfZXJybm8gPSAwOworKyAgc3RydWN0IHNvY2thZGRyX2luKiBhZGRyaW4gPSAoc3RydWN0IHNvY2thZGRyX2luKilhZGRyOworICAgdHlwZWRlZiBzc2l6ZV90ICgqcmVhbF9jb25uZWN0X2ZuKSAoaW50LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiwKKyAgICAgICBzb2NrbGVuX3QpOworICAgc3RhdGljIHJlYWxfY29ubmVjdF9mbiByZWFsX2Nvbm5lY3QgPSAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCmluZGV4IDJjYWI4N2YuLjFiN2YxMTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDkwOTE2Zjk2MjYyZmE3YjI3YTBhOTk3ODhjNjlmOWZkNmRmMTEwMDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDJiMDQzNmY5YTA3NzczZmFlOGM3NGRmOTAyZDcwMjRlOGJmYzM1MTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMjQgTm92IDIwMTUgMTY6NDY6MjcgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gaW50cm9zcGVjdGlvbi5tNDogcHJlZml4IHBrZ2NvbmZpZyBwYXRocyB3aXRoCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHwgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBjb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgYi9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAotaW5kZXggMTYyYmU1Ny4uMjE3YTZhZSAxMDA2NDQKK2luZGV4IDE2MmJlNTcuLjkzM2Y5NzkgMTAwNjQ0CiAtLS0gYS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNAogKysrIGIvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQKIEBAIC01NCwxNCArNTQsMTQgQEAgbTRfZGVmaW5lKFtfR09CSkVDVF9JTlRST1NQRUNUSU9OX0NIRUNLX0lOVEVSTkFMXSwKQEAgLTM3LDYgKzM4LDMgQEAKICAgICAgICAgSU5UUk9TUEVDVElPTl9JTklUPSJleHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsgZ3N0X2luaXQoTlVMTCxOVUxMKTsiCiAgICAgIGZpCiAgICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fU0NBTk5FUikKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDJkODY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSBkNjE0MTRiYzE3Y2YyZGYwMTk1MTBjMjkwODA0OGM0Y2FiZjVjZjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgRmViIDIwMTggMDk6Mjc6MDEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYWRkIHRhcmdldHMgZm9yIHRlc3QgaW5zdGFsbGF0aW9uCisKK1RhcmdldHMgdG8gbWFrZSBzdXJlIHRlc3RzIGNhbiBiZSBpbnN0YWxsZWQgYW5kIHRoZW4gcnVuIG9uCit0aGUgdGFyZ2V0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIG9lIHNldHVwXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorCistLS0KKyB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbSB8IDI3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQoraW5kZXggMTNiOTE2ZC4uYTY2Nzg2ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQorQEAgLTgsMTEgKzgsNyBAQCBSRUdJU1RSWV9FTlZJUk9OTUVOVCA9IFwKKyAJR1NUX1JFR0lTVFJZPSQoQ0hFQ0tfUkVHSVNUUlkpCisgCisgQU1fVEVTVFNfRU5WSVJPTk1FTlQgKz0gXAorLSAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIglcCistICAgICAgICAkKFJFR0lTVFJZX0VOVklST05NRU5UKQkJCQkJXAorLSAgICAgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0kKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXIgXAorLSAgICAgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9CQkJCQlcCistICAgICAgICBHU1RfUExVR0lOX1BBVEhfMV8wPSQodG9wX2J1aWxkZGlyKS9wbHVnaW5zCisrICAgICAgICBHU1RfU1RBVEVfSUdOT1JFX0VMRU1FTlRTPSIkKFNUQVRFX0lHTk9SRV9FTEVNRU5UUykiCisgCisgcGx1Z2luZGlyID0gJChsaWJkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorIAorQEAgLTE3OCw2ICsxNzQsMjMgQEAgbm9pbnN0X1BST0dSQU1TID0KKyAKKyBURVNUUyA9ICQoY2hlY2tfUFJPR1JBTVMpCisgCisraW5zdGFsbC1wdGVzdDogJChURVNUUykKKysJQCQoSU5TVEFMTCkgLWQgJChERVNURElSKQorKwlAZm9yIGRpciBpbiBgZmluZCAtbWF4ZGVwdGggMSAtdHlwZSBkYDsgZG8gXAorKwkJaWYgWyAteCAkJGRpci8ubGlicyBdOyB0aGVuIFwKKysJCQkkKElOU1RBTEwpIC1kICQoREVTVERJUikvJCRkaXI7IFwKKysJCQkkKElOU1RBTExfUFJPR1JBTSkgJCRkaXIvLmxpYnMvKiAkKERFU1RESVIpLyQkZGlyLzsgXAorKwkJZmkgXAorKwlkb25lCisrCisrcnVudGVzdHM6CisrCUBmb3IgYiBpbiAkKFRFU1RTKTsgZG8gXAorKwkJaWYgWyAteCAkJGIgXTsgdGhlbiBcCisrCQkJJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChTSEVMTCkgdGVzdC1kcml2ZXIgLS10ZXN0LW5hbWUgIiQkYiIgXAorKwkJCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgJCRiOyBcCisrCQlmaSBcCisrCWRvbmUKKysKKyBub2luc3RfSEVBREVSUyA9IFwKKyAJZ3N0L2NhcHNsaXN0LmggXAorIAlnc3Qvc3RydWN0X2FybS5oIFwKK0BAIC0yMjEsOSArMjM0LDkgQEAgZ3N0X2dzdHByaW50Zl9MREFERCA9IFwKKyAJJChMREFERCkKKyAKKyBlbGVtZW50c19mZHNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKKy0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKKysJLURURVNURklMRT1cIk1ha2VmaWxlXCIKKyBlbGVtZW50c19maWxlc3JjX0NGTEFHUz0kKEdTVF9PQkpfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgXAorLQktRFRFU1RGSUxFPVwiJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWNcIgorKwktRFRFU1RGSUxFPVwiTWFrZWZpbGVcIgorIAorIGxpYnNfY29udHJvbGxlcl9MREFERCA9IFwKKyAJJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2NvbnRyb2xsZXIvbGliZ3N0Y29udHJvbGxlci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDczZDBiNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCittYWtlIC1rIHJ1bnRlc3RzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyNTg1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJHc3RyZWFtZXIgdmFsaWRhdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiQSBUb29sIHRvIHRlc3QgR1N0cmVhbWVyIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZ3N0LXZhbGlkYXRlLzEuMTIuMy5odG1sIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImJjMDc0ZDQ5Njc3MDgxZjljMjdkZTExYTA5MTY1NzQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY5ZGE5ZGZlNmU1ZDZmNWJhM2IzOGM1NzUyYjQyZDNmOTI3NzE1OTA0OTQyYjQwNWMyOTI0ZDNjYjc3YWZiYTEiCi0KLURFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2l0IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wLyogJHtsaWJkaXJ9L2dzdC12YWxpZGF0ZS1sYXVuY2hlci8qICR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoiCi0KLWluaGVyaXQgcGtnY29uZmlnIGdldHRleHQgYXV0b3Rvb2xzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0jIFdpdGggZ3RrLWRvYyBlbmFibGVkIHRoaXMgcmVjaXBlIGZhaWxzIHRvIGJ1aWxkLCBzbyBmb3JjaWJseSBkaXNhYmxlIGl0OgotIyBXT1JLRElSL2J1aWxkL2RvY3MvdmFsaWRhdGUvZ3N0LXZhbGlkYXRlLXNjYW46IGxpbmUgMTE3OgotIyBXT1JLRElSL2J1aWxkL2RvY3MvdmFsaWRhdGUvLmxpYnMvbHQtZ3N0LXZhbGlkYXRlLXNjYW46IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLUdUS0RPQ19FTkFCTEVEID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ0MzhkYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE0LjIuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJHc3RyZWFtZXIgdmFsaWRhdGlvbiB0b29sIgorREVTQ1JJUFRJT04gPSAiQSBUb29sIHRvIHRlc3QgR1N0cmVhbWVyIGNvbXBvbmVudHMiCitIT01FUEFHRSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZ3N0LXZhbGlkYXRlLzEuMTIuMy5odG1sIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29ubmVjdC1oYXMtYS1kaWZmZXJlbnQtc2lnbmF0dXJlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjMzNDEwMmIwZTcwNjAwODUwNWQwMGY3ZjViNWUwMjMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWE5ZTQyM2U1NDcwZWY4NWVmOGEwYWVhMTcxNGU3YWJmYzQ5ZGViMmVkMjgyMDU3MzY3NDg0Y2RlYmE2ZjE5ZiIKKworREVQRU5EUyA9ICJqc29uLWdsaWIgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wLyogJHtsaWJkaXJ9L2dzdC12YWxpZGF0ZS1sYXVuY2hlci8qICR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoiCisKK2luaGVyaXQgcGtnY29uZmlnIGdldHRleHQgYXV0b3Rvb2xzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisjIFdpdGggZ3RrLWRvYyBlbmFibGVkIHRoaXMgcmVjaXBlIGZhaWxzIHRvIGJ1aWxkLCBzbyBmb3JjaWJseSBkaXNhYmxlIGl0OgorIyBXT1JLRElSL2J1aWxkL2RvY3MvdmFsaWRhdGUvZ3N0LXZhbGlkYXRlLXNjYW46IGxpbmUgMTE3OgorIyBXT1JLRElSL2J1aWxkL2RvY3MvdmFsaWRhdGUvLmxpYnMvbHQtZ3N0LXZhbGlkYXRlLXNjYW46IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK0dUS0RPQ19FTkFCTEVEID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMjgzMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LmluYworKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiTGliYXYtYmFzZWQgR1N0cmVhbWVyIDEueCBwbHVnaW4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmICggKEdQTHYyKyAmIExHUEx2Mi4xKykgfCAoR1BMdjMrICYgTEdQTHYzKykgKSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSB6bGliIGJ6aXAyIHh6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotIyBDQVVUSU9OOiBVc2luZyB0aGUgc3lzdGVtIGxpYmF2IGlzIG5vdCByZWNvbW1lbmRlZC4gU2luY2UgdGhlIGxpYmF2IEFQSSBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUsCi0jIGNvbXBpbGF0aW9uIGVycm9ycyAoYW5kIG90aGVyLCBtb3JlIHN1YnRsZSBidWdzKSBjYW4gaGFwcGVuLiBJdCBpcyB1c3VhbGx5IGJldHRlciB0byByZWx5IG9uIHRoZQotIyBsaWJhdiBjb3B5IGluY2x1ZGVkIGluIHRoZSBnc3QtbGliYXYgcGFja2FnZS4KLVBBQ0tBR0VDT05GSUcgPz89ICJvcmMgeWFzbSIKLQotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsLCIKLVBBQ0tBR0VDT05GSUdbbGliYXZdID0gIi0td2l0aC1zeXN0ZW0tbGliYXYsLGxpYmF2IgotUEFDS0FHRUNPTkZJR1tvcmNdID0gIi0tZW5hYmxlLW9yYywtLWRpc2FibGUtb3JjLG9yYyIKLVBBQ0tBR0VDT05GSUdbeWFzbV0gPSAiLS1lbmFibGUteWFzbSwtLWRpc2FibGUteWFzbSx5YXNtLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKLQotR1NUUkVBTUVSXzFfMF9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgotCi1MSUJBVl9FWFRSQV9DT05GSUdVUkUgPSAiLS13aXRoLWxpYmF2LWV4dHJhLWNvbmZpZ3VyZSIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkcgPSAiLS10YXJnZXQtb3M9bGludXggXAotICAtLWNjPScke0NDfScgLS1hcz0nJHtDQ30nIC0tbGQ9JyR7Q0N9JyAtLW5tPScke05NfScgLS1hcj0nJHtBUn0nIFwKLSAgLS1yYW5saWI9JyR7UkFOTElCfScgXAotICAke0dTVFJFQU1FUl8xXzBfREVCVUd9IFwKLSAgLS1jcm9zcy1wcmVmaXg9JyR7SE9TVF9QUkVGSVh9JyIKLQotIyBEaXNhYmxlIGFzc2VtYmx5IG9wdGltaXphdGlvbnMgZm9yIFgzMiwgYXMgdGhpcyBsaWJhdiBsYWNrcyB0aGUgc3VwcG9ydAotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGludXgtZ251eDMyID0gInlhc20iCi1MSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSR19hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgotCi1MSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OID0gXAotJyR7TElCQVZfRVhUUkFfQ09ORklHVVJFfT0iJHtMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSR30iJwotCi1FWFRSQV9PRUNPTkYgPSAiJHtMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OfSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0OTMvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi0jIGZmbXBlZy9saWJhdiBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQotSU5TQU5FX1NLSVBfJHtQTn0gPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMGMwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYzE3MDBmODY3Zjg3NmVlMzNjMTMwYThlMjhiNjg4ZTJiMWQ4OTY2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDE3OjE0OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgaG9zdCBjb250YW1pbmF0aW9uCisKK1JlbW92ZSByZWZlcmVuY2UgdG8gaG9zdCAkKGxpYmRpcikgZnJvbSAubGEgZmlsZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY3Jvc3MtY29tcGlsZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIGdzdC1saWJzL2V4dC9NYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0KK2luZGV4IDZjZGMwNDguLmExOWQyNTUgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2V4dC9NYWtlZmlsZS5hbQorQEAgLTQ5LDcgKzQ5LDcgQEAgZWNobyAiICBHRU4gICAgICAkMS5sYSIgJiYgXAorICBlY2hvICJsaWJyYXJ5X25hbWVzPScnIiAmJiBcCisgIGVjaG8gIm9sZF9saWJyYXJ5PSckMS5hJyIgJiYgXAorICBlY2hvICJpbmhlcml0ZWRfbGlua2VyX2ZsYWdzPScnIiAmJiBcCistIGVjaG8gImRlcGVuZGVuY3lfbGlicz0nIC1MJChsaWJkaXIpICQoaWYgJDIsJChmb3JlYWNoIGRlcCwkMiwkKGFic19idWlsZGRpcikvJChkZXApLmxhKSkgJChjYWxsIGZpbmRfbGlicmFyeV9sYSwkMyAkKExJQk0pLCQoTERGTEFHUykpICciICYmIFwKKysgZWNobyAiZGVwZW5kZW5jeV9saWJzPScgLUwgJChpZiAkMiwkKGZvcmVhY2ggZGVwLCQyLCQoYWJzX2J1aWxkZGlyKS8kKGRlcCkubGEpKSAkKGNhbGwgZmluZF9saWJyYXJ5X2xhLCQzICQoTElCTSksJChMREZMQUdTKSkgJyIgJiYgXAorICBlY2hvICJ3ZWFrX2xpYnJhcnlfbmFtZXM9JyciICYmICBcCisgIGVjaG8gImN1cnJlbnQ9IiAmJiBcCisgIGVjaG8gImFnZT0iICYmIFwKK0BAIC01OCw3ICs1OCw3IEBAIGVjaG8gIiAgR0VOICAgICAgJDEubGEiICYmIFwKKyAgZWNobyAic2hvdWxkbm90bGluaz1ubyIgJiYgXAorICBlY2hvICJkbG9wZW49JyciICYmIFwKKyAgZWNobyAiZGxwcmVvcGVuPScnIiAmJiBcCistIGVjaG8gImxpYmRpcj0nJChsaWJkaXIpJyIpID4gJDEubGEKKysgZWNobyAibGliZGlyPScnIikgPiAkMS5sYQorIGVuZGVmCisgCisgbGliYXZ1dGlsLmxhOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtaGV2Y3ByZWRfbXNhLmMtRml4LWJ1aWxkLWJ5LUluY2x1ZGluZy1saWJhdmNvZGVjLWhldi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYmZjODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtaGV2Y3ByZWRfbXNhLmMtRml4LWJ1aWxkLWJ5LUluY2x1ZGluZy1saWJhdmNvZGVjLWhldi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gYjUyMjZjMDk2YTBiNzA0OTg3NDg1OGU5NGE1OWQ0M2UxMGJhM2ZkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIxIFNlcCAyMDE3IDEwOjIyOjU2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGhldmNwcmVkX21zYS5jOiBGaXggYnVpbGQgYnkgSW5jbHVkaW5nIGxpYmF2Y29kZWMvaGV2Y2RlYy5oCi0KLXNyYy9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmM6MTkxMzozMjogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdIRVZDQ29udGV4dCc7IGRpZCB5b3UgbWVhbiAnSEVWQ1ByZWRDb250ZXh0Jz8KLSB2b2lkIGZmX2ludHJhX3ByZWRfOF8xNngxNl9tc2EoSEVWQ0NvbnRleHQgKnMsIGludCB4MCwgaW50IHkwLCBpbnQgY19pZHgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhFVkNQcmVkQ29udGV4dAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGdzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYwotaW5kZXggNmEzYjI4MS4uOTYzYzY0YyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICAqLwotIAotLSNpbmNsdWRlICJsaWJhdmNvZGVjL2hldmMuaCIKLSsjaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjZGVjLmgiCi0gI2luY2x1ZGUgImxpYmF2dXRpbC9taXBzL2dlbmVyaWNfbWFjcm9zX21zYS5oIgotICNpbmNsdWRlICJoZXZjcHJlZF9taXBzLmgiCi0gCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1NDdiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtbGliYXYuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOGE4NTFiZjJlNDc1ZTkwYTNmZGFjOTUwNmUzZTRkYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE1NmFhNWQyZDhjZDkxMmYyYmNlMTdmMTc0NzEzZDJjNDE3Y2EyOThmMWY5YzI4ZWU2NmQ0YWExZTFkOWU2MiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOGRiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNC4yLmJiCkBAIC0wLDAgKzEsNzAgQEAKK1NVTU1BUlkgPSAiTGliYXYtYmFzZWQgR1N0cmVhbWVyIDEueCBwbHVnaW4iCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmICggKEdQTHYyKyAmIExHUEx2Mi4xKykgfCAoR1BMdjMrICYgTEdQTHYzKykgKSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZGEzZDQ2NTUyNjhiYzY3NjZhMjYxMDY1Y2E3Mzc1OTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGEzNTFjMzljNWNmYzJiYmQzMWNhNDM0ZWM0YTI5MGE3MzBhMjZlZmJkZWE5NjJmZGQ4MzA2ZGNlNWM1NzZkZSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1saWJhdi0ke1BWfSIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSB6bGliIGJ6aXAyIHh6IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworIyBDQVVUSU9OOiBVc2luZyB0aGUgc3lzdGVtIGxpYmF2IGlzIG5vdCByZWNvbW1lbmRlZC4gU2luY2UgdGhlIGxpYmF2IEFQSSBpcyBjaGFuZ2luZyBhbGwgdGhlIHRpbWUsCisjIGNvbXBpbGF0aW9uIGVycm9ycyAoYW5kIG90aGVyLCBtb3JlIHN1YnRsZSBidWdzKSBjYW4gaGFwcGVuLiBJdCBpcyB1c3VhbGx5IGJldHRlciB0byByZWx5IG9uIHRoZQorIyBsaWJhdiBjb3B5IGluY2x1ZGVkIGluIHRoZSBnc3QtbGliYXYgcGFja2FnZS4KK1BBQ0tBR0VDT05GSUcgPz89ICJvcmMgeWFzbSIKKworUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsLCIKK1BBQ0tBR0VDT05GSUdbbGliYXZdID0gIi0td2l0aC1zeXN0ZW0tbGliYXYsLGxpYmF2IgorUEFDS0FHRUNPTkZJR1tvcmNdID0gIi0tZW5hYmxlLW9yYywtLWRpc2FibGUtb3JjLG9yYyIKK1BBQ0tBR0VDT05GSUdbeWFzbV0gPSAiLS1lbmFibGUteWFzbSwtLWRpc2FibGUteWFzbSxuYXNtLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKKworR1NUUkVBTUVSXzFfMF9ERUJVRyA/PSAiLS1kaXNhYmxlLWRlYnVnIgorCitMSUJBVl9FWFRSQV9DT05GSUdVUkUgPSAiLS13aXRoLWxpYmF2LWV4dHJhLWNvbmZpZ3VyZSIKKworTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkcgPSAiLS10YXJnZXQtb3M9bGludXggXAorICAtLWNjPScke0NDfScgLS1hcz0nJHtDQ30nIC0tbGQ9JyR7Q0N9JyAtLW5tPScke05NfScgLS1hcj0nJHtBUn0nIFwKKyAgLS1yYW5saWI9JyR7UkFOTElCfScgXAorICAke0dTVFJFQU1FUl8xXzBfREVCVUd9IFwKKyAgLS1jcm9zcy1wcmVmaXg9JyR7SE9TVF9QUkVGSVh9JyIKKworIyBEaXNhYmxlIGFzc2VtYmx5IG9wdGltaXphdGlvbnMgZm9yIFgzMiwgYXMgdGhpcyBsaWJhdiBsYWNrcyB0aGUgc3VwcG9ydAorUEFDS0FHRUNPTkZJR19yZW1vdmVfbGludXgtZ251eDMyID0gInlhc20iCitMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSR19hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgorCitMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OID0gXAorJyR7TElCQVZfRVhUUkFfQ09ORklHVVJFfT0iJHtMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OX0FSR30iJworCitFWFRSQV9PRUNPTkYgPSAiJHtMSUJBVl9FWFRSQV9DT05GSUdVUkVfQ09NTU9OfSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0OTMvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCisjIGZmbXBlZy9saWJhdiBkaXNhYmxlcyBQSUMgb24gc29tZSBwbGF0Zm9ybXMgKGUuZy4geDg2LTMyKQorSU5TQU5FX1NLSVBfJHtQTn0gPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOTIzNTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5NQVggSUwgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgotCi0KLUdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCi1HU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS12YWxncmluZCAtLXdpdGgtb214LXRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQotICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106Ci0gICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIwotICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKLSAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcwotICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQotICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKLSAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYwotICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQotfQotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKLSAgICAjIGlmIHRoZXNlIGV4aXN0Ci0Jcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotc2V0X29teF9jb3JlX25hbWUoKSB7Ci0Jc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCi19Ci1kb19pbnN0YWxsW3Bvc3RmdW5jc10gKz0gIiBzZXRfb214X2NvcmVfbmFtZSAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gImxpYm9teGlsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y3ZWFlMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLWluY2x1ZGUgZ3N0cmVhbWVyMS4wLW9teC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWI4ZDVhZTNiNjljZmVlZDlkYzc3YzU5MjEwNjI0N2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTAyNWZhMjQyNDJlYzg2OGZlMGZmMWU2NmQ4MDZhMTA3MGJjYmM3YzE0YTk4N2E4OWNkYzMzOTVkMGQ1NmQ1ZiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmN2JjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTQuMi5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIk9wZW5NQVggSUwgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3Qtb214L2dzdC1vbXgtJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDRmYzk3ZTM1MTZiZWZlMDRiZTNkMTY2NWE2ZjdiYmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzE2ZGJiMTM2OTM3OTUzODNjYWQ2ZWM0ZGJlYmQ5NGE4NjljZDFmOWQ1OWEzOTM2ODZjYWQwYjc3YmY5YjVhOSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1vbXgtJHtQVn0iCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCithY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCisKK0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCA/PSAiYmVsbGFnaW8iCitHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUUgPz0gIiR7bGliZGlyfS9saWJvbXhpbC1iZWxsYWdpby5zby4wIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS12YWxncmluZCAtLXdpdGgtb214LXRhcmdldD0ke0dTVFJFQU1FUl8xXzBfT01YX1RBUkdFVH0iCisKK3B5dGhvbiBfX2Fub255bW91cyAoKSB7CisgICAgb214X3RhcmdldCA9IGQuZ2V0VmFyKCJHU1RSRUFNRVJfMV8wX09NWF9UQVJHRVQiKQorICAgIGlmIG9teF90YXJnZXQgaW4gWydnZW5lcmljJywgJ2JlbGxhZ2lvJ106CisgICAgICAgICMgQmVsbGFnaW8gaGVhZGVycyBhcmUgaW5jb21wbGV0ZSAodGhleSBhcmUgbWlzc2luZyB0aGUgT01YX1ZFUlNJT05fTUFKT1IsIworICAgICAgICAjIE9NWF9WRVJTSU9OX01JTk9SLCBPTVhfVkVSU0lPTl9SRVZJU0lPTiwgYW5kIE9NWF9WRVJTSU9OX1NURVAgbWFjcm9zKTsKKyAgICAgICAgIyBhcHBlbmRpbmcgYSBkaXJlY3RvcnkgcGF0aCB0byBnc3Qtb214JyBpbnRlcm5hbCBPcGVuTUFYIElMIGhlYWRlcnMgZml4ZXMgdGhpcworICAgICAgICBkLmFwcGVuZFZhcigiQ0ZMQUdTIiwgIiAtSSR7U30vb214L29wZW5tYXgiKQorICAgIGVsaWYgb214X3RhcmdldCA9PSAicnBpIjoKKyAgICAgICAgIyBEZWRpY2F0ZWQgUmFzcGJlcnJ5IFBpIE9wZW5NQVggSUwgc3VwcG9ydCBtYWtlcyB0aGlzIHBhY2thZ2UgbWFjaGluZSBzcGVjaWZpYworICAgICAgICBkLnNldFZhcigiUEFDS0FHRV9BUkNIIiwgZC5nZXRWYXIoIk1BQ0hJTkVfQVJDSCIpKQorfQorCitkZWxldGVfcGtnX200X2ZpbGUoKSB7CisgICAgIyBEZWxldGUgbTQgZmlsZXMgd2hpY2ggd2UgcHJvdmlkZSBwYXRjaGVkIHZlcnNpb25zIG9mIGJ1dCB3aWxsIGJlIGlnbm9yZWQKKyAgICAjIGlmIHRoZXNlIGV4aXN0CisJcm0gLWYgIiR7U30vY29tbW9uL200L3BrZy5tNCIKKwlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKK30KK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImRlbGV0ZV9wa2dfbTRfZmlsZSIKKworc2V0X29teF9jb3JlX25hbWUoKSB7CisJc2VkIC1pIC1lICJzO15jb3JlLW5hbWU9Lio7Y29yZS1uYW1lPSR7R1NUUkVBTUVSXzFfMF9PTVhfQ09SRV9OQU1FfTsiICIke0R9JHtzeXNjb25mZGlyfS94ZGcvZ3N0b214LmNvbmYiCit9Citkb19pbnN0YWxsW3Bvc3RmdW5jc10gKz0gIiBzZXRfb214X2NvcmVfbmFtZSAiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCisKK1JERVBFTkRTXyR7UE59ID0gImxpYm9teGlsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMmVhOWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGlicG5nIGpwZWciCi0KLWluaGVyaXQgZ2V0dGV4dCBibHVldG9vdGgKLQotU1JDX1VSSV9hcHBlbmQgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIFwKLSIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKLQotIyBndGsgaXMgbm90IGluIHRoZSBQQUNLQUdFQ09ORklHIHZhcmlhYmxlIGJ5IGRlZmF1bHQgdW50aWwKLSMgdGhlIHRyYW5zaXRpb24gdG8gZ3RrKzMgaXMgZmluaXNoZWQKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHV2Y2gyNjQgd2VicCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCi1QQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLS1lbmFibGUtYmx1ZXosLS1kaXNhYmxlLWJsdWV6LCR7QkxVRVp9IgotUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWJ6MiwtLWRpc2FibGUtYnoyLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tjdXJsXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbZGFzaF0gICAgICAgICAgICA9ICItLWVuYWJsZS1kYXNoLC0tZGlzYWJsZS1kYXNoLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW2RjMTM5NF0gICAgICAgICAgPSAiLS1lbmFibGUtZGMxMzk0LC0tZGlzYWJsZS1kYzEzOTQsbGliZGMxMzk0IgotUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICAgICAgID0gIi0tZW5hYmxlLWRpcmVjdGZiLC0tZGlzYWJsZS1kaXJlY3RmYixkaXJlY3RmYiIKLVBBQ0tBR0VDT05GSUdbZHRsc10gICAgICAgICAgICA9ICItLWVuYWJsZS1kdGxzLC0tZGlzYWJsZS1kdGxzLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2VnbF0gICAgICAgICAgICAgPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW2ZhYWNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZmFhYywtLWRpc2FibGUtZmFhYyxmYWFjIgotUEFDS0FHRUNPTkZJR1tmYWFkXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWQsLS1kaXNhYmxlLWZhYWQsZmFhZDIiCi1QQUNLQUdFQ09ORklHW2ZsaXRlXSAgICAgICAgICAgPSAiLS1lbmFibGUtZmxpdGUsLS1kaXNhYmxlLWZsaXRlLGZsaXRlLWFsc2EiCi1QQUNLQUdFQ09ORklHW2ZsdWlkc3ludGhdICAgICAgPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgotUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWdsZXMyLC0tZGlzYWJsZS1nbGVzMix2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWd0azMsLS1kaXNhYmxlLWd0azMsZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW5ldHRsZSwtLWRpc2FibGUtaGxzLG5ldHRsZSIKLVBBQ0tBR0VDT05GSUdba21zXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1rbXMsLS1kaXNhYmxlLWttcyxsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLS1lbmFibGUtbGlibW1zLC0tZGlzYWJsZS1saWJtbXMsbGlibW1zIgotUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi0tZW5hYmxlLWxpYnNzaDIsLS1kaXNhYmxlLWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItLWVuYWJsZS1tb2RwbHVnLC0tZGlzYWJsZS1tb2RwbHVnLGxpYm1vZHBsdWciCi1QQUNLQUdFQ09ORklHW25lb25dICAgICAgICAgICAgPSAiLS1lbmFibGUtbmVvbiwtLWRpc2FibGUtbmVvbixuZW9uIgotUEFDS0FHRUNPTkZJR1tvcGVuYWxdICAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5hbCwtLWRpc2FibGUtb3BlbmFsLG9wZW5hbC1zb2Z0IgotUEFDS0FHRUNPTkZJR1tvcGVuY3ZdICAgICAgICAgID0gIi0tZW5hYmxlLW9wZW5jdiwtLWRpc2FibGUtb3BlbmN2LG9wZW5jdiIKLVBBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuZ2wsLS1kaXNhYmxlLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIGxpYmdsdSIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItLWVuYWJsZS1vcGVuanBlZywtLWRpc2FibGUtb3BlbmpwZWcsb3BlbmpwZWciCi0jIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAotIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAotUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKLVBBQ0tBR0VDT05GSUdbcmVzaW5kdmRdICAgICAgICA9ICItLWVuYWJsZS1yZXNpbmR2ZCwtLWRpc2FibGUtcmVzaW5kdmQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCi1QQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgotUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3NiY10gICAgICAgICAgICAgPSAiLS1lbmFibGUtc2JjLC0tZGlzYWJsZS1zYmMsc2JjIgotUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdICAgID0gIi0tZW5hYmxlLXNjaHJvLC0tZGlzYWJsZS1zY2hybyxzY2hyb2VkaW5nZXIiCi1QQUNLQUdFQ09ORklHW3Ntb290aHN0cmVhbWluZ10gPSAiLS1lbmFibGUtc21vb3Roc3RyZWFtaW5nLC0tZGlzYWJsZS1zbW9vdGhzdHJlYW1pbmcsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbc25kZmlsZV0gICAgICAgICA9ICItLWVuYWJsZS1zbmRmaWxlLC0tZGlzYWJsZS1zbmRmaWxlLGxpYnNuZGZpbGUxIgotUEFDS0FHRUNPTkZJR1tzcnRwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXNydHAsLS1kaXNhYmxlLXNydHAsbGlic3J0cCIKLVBBQ0tBR0VDT05GSUdbdXZjaDI2NF0gICAgICAgICA9ICItLWVuYWJsZS11dmNoMjY0LC0tZGlzYWJsZS11dmNoMjY0LGxpYnVzYjEgbGliZ3VkZXYiCi1QQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLS1lbmFibGUtdm9hYWNlbmMsLS1kaXNhYmxlLXZvYWFjZW5jLHZvLWFhY2VuYyIKLVBBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItLWVuYWJsZS12b2FtcndiZW5jLC0tZGlzYWJsZS12b2FtcndiZW5jLHZvLWFtcndiZW5jIgotUEFDS0FHRUNPTkZJR1t2dWxrYW5dICAgICAgICAgID0gIi0tZW5hYmxlLXZ1bGthbiwtLWRpc2FibGUtdnVsa2FuLHZ1bGthbiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgotUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKLQotIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6Ci0jICAgb3Blbm5pMiB3aW5rcyBkaXJlY3QzZCBkaXJlY3Rzb3VuZCB3aW5zY3JlZW5jYXAgYWNtIGFwcGxlX21lZGlhIGlxYQotIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZGFhbGEgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhIGxpYmRlMjY1Ci0jICAgbHYyIG1wZWcyZW5jIG1wbGV4IG1zZGsgbXVzZXBhY2sgbnZlbmMgb2ZhIG9wZW5oMjY0IG9wZW5zbGVzIHNvdW5kdG91Y2ggc3BhbmRzcAotIyAgIHNwYyB0ZWxldGV4dGRlYyB0aW55YWxzYSB2ZHBhdSB3YXNhcGkgeDI2NSB6YmFyIHdlYnJ0Y2RzcAotCi0jIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgotIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgotIyBUaGlzIGlzIGJldHRlciBkb25lIGluIGEgc2VwYXJhdGUgcXQ1IGxheWVyICh3aGljaCB0aGVuIHNob3VsZCBhZGQgYSAicXQ1IiBwYWNrYWdlY29uZmlnCi0jIGluIGEgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIGJiYXBwZW5kKS4KLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLWRlY2tsaW5rIFwKLSAgICAtLWVuYWJsZS1kdmIgXAotICAgIC0tZW5hYmxlLWZiZGV2IFwKLSAgICAtLWVuYWJsZS1uZXRzaW0gXAotICAgIC0tZW5hYmxlLXNobSBcCi0gICAgLS1lbmFibGUtdmNkIFwKLSAgICAtLWRpc2FibGUtYWNtIFwKLSAgICAtLWRpc2FibGUtYW5kcm9pZF9tZWRpYSBcCi0gICAgLS1kaXNhYmxlLWFwcGxlX21lZGlhIFwKLSAgICAtLWRpc2FibGUtYXZjIFwKLSAgICAtLWRpc2FibGUtYnMyYiBcCi0gICAgLS1kaXNhYmxlLWNocm9tYXByaW50IFwKLSAgICAtLWRpc2FibGUtY29jb2EgXAotICAgIC0tZGlzYWJsZS1kYWFsYSBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdDNkIFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1kdHMgXAotICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKLSAgICAtLWRpc2FibGUtZ21lIFwKLSAgICAtLWRpc2FibGUtZ3NtIFwKLSAgICAtLWRpc2FibGUtaXFhIFwKLSAgICAtLWRpc2FibGUta2F0ZSBcCi0gICAgLS1kaXNhYmxlLWxhZHNwYSBcCi0gICAgLS1kaXNhYmxlLWxpYmRlMjY1IFwKLSAgICAtLWRpc2FibGUtbHYyIFwKLSAgICAtLWRpc2FibGUtbXBlZzJlbmMgXAotICAgIC0tZGlzYWJsZS1tcGxleCBcCi0gICAgLS1kaXNhYmxlLW1zZGsgXAotICAgIC0tZGlzYWJsZS1tdXNlcGFjayBcCi0gICAgLS1kaXNhYmxlLW52ZW5jIFwKLSAgICAtLWRpc2FibGUtb2ZhIFwKLSAgICAtLWRpc2FibGUtb3BlbmV4ciBcCi0gICAgLS1kaXNhYmxlLW9wZW5oMjY0IFwKLSAgICAtLWRpc2FibGUtb3Blbm5pMiBcCi0gICAgLS1kaXNhYmxlLW9wZW5zbGVzIFwKLSAgICAtLWRpc2FibGUtcXQgXAotICAgIC0tZGlzYWJsZS1zb3VuZHRvdWNoIFwKLSAgICAtLWRpc2FibGUtc3BhbmRzcCBcCi0gICAgLS1kaXNhYmxlLXNwYyBcCi0gICAgLS1kaXNhYmxlLXRlbGV0ZXh0ZGVjIFwKLSAgICAtLWRpc2FibGUtdGlueWFsc2EgXAotICAgIC0tZGlzYWJsZS12ZHBhdSBcCi0gICAgLS1kaXNhYmxlLXdhc2FwaSBcCi0gICAgLS1kaXNhYmxlLXdlYnJ0Y2RzcCBcCi0gICAgLS1kaXNhYmxlLXdpbGRtaWRpIFwKLSAgICAtLWRpc2FibGUtd2lua3MgXAotICAgIC0tZGlzYWJsZS13aW5zY3JlZW5jYXAgXAotICAgIC0tZGlzYWJsZS14MjY1IFwKLSAgICAtLWRpc2FibGUtemJhciBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKLSIKLQotZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9pbmNsdWRlL2dzdC9nbC9nc3RnbGNvbmZpZy5oIgotRklMRVNfJHtQTn0tZnJlZXZlcmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RGcmVldmVyYi5wcnMiCi1GSUxFU18ke1BOfS1vcGVuY3YgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFkLyR7TElCVn0vb3BlbmN2KiIKLUZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vcHJlc2V0cy9Hc3RWb0FtcndiRW5jLnBycyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzLy5saWJzIgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKaW5kZXggOGQ5OWRjNi4uMDViOTkxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCkBAIC0xLDQ4ICsxLDE3IEBACi1Gcm9tIDc1OTJlNzkzYjM5MDYzNTVkNzZjYTlhNTlmOGZlYTI3NDllYTJhNGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgT2N0IDIwMTUgMTQ6MzY6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IGRvbid0IGhhcmRjb2RlIGxpYnRvb2wgbmFtZSB3aGVuIHJ1bm5pbmcKK0Zyb20gN2Q4ZThiOGJjY2UzNGQwMWZjN2FkNzI4NWI0ZWIxN2FkODk0OTM5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDExOjA2OjM5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBkb24ndCBoYXJkY29kZSBsaWJ0b29sIG5hbWUgd2hlbiBydW5uaW5nIAogIGludHJvc3BlY3Rpb24gdG9vbHMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLSUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKLQogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiAtLS0KLSBnc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSB8IDIgKy0KLSBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gICAgICAgICB8IDIgKy0KLSBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtICB8IDIgKy0KLSBnc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtICAgICB8IDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtIHwgMiArLQorIGdzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0gICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi1pbmRleCBlNTBkMDc3Li42MjNmMDkyIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi1AQCAtMzcsNyArMzcsNyBAQCBHc3RCYWRBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGJhZGFsbG9jYQotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLS0JCS0tbGlidG9vbD0iJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wiIFwKLSsJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItYmFkYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLW91dHB1dCAkQCBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1pbmRleCAyYWU0NzczLi5kZmE3YTdkIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KLUBAIC0xNzgsNyArMTc4LDcgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLS0JCS0tbGlidG9vbD0iJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wiIFwKLSsJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KIGluZGV4IDFmOGVhMzAuLjRiOThlZjYgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCkBAIC01NywxMCArMjYsMTAgQEAKICAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItaW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05AIFwKIGRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQotaW5kZXggYWVlYTMyZS4uOTI5ZDljYyAxMDA2NDQKK2luZGV4IGYyNjRlMzMuLjk5MzRhNGQgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCiArKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi1AQCAtNzksNyArNzksNyBAQCBHc3RNcGVndHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0bXBlZ3RzLUBHU1RfQVBJXworQEAgLTgyLDcgKzgyLDcgQEAgR3N0TXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdG1wZWd0cy1AR1NUX0FQSV8KICAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQGAgXAogIAkJLS1saWJyYXJ5PWxpYmdzdG1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTcwLDUgKzM5LDUgQEAKICAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAtLSAKLTIuNC4wCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMzVhNTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA1NjIyY2EzYjYxNjAzZGMzMTZhMGYxZmJlZGUzZjlhYTM1M2E1ZTQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEyIE1heSAyMDE3IDE2OjQ3OjEyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lci1nbC5wYy5pbjogZG9uJ3QgYXBwZW5kIEdMX0NGTEFHUyB0byBDRkxBR1MKLQotRGVwZW5kZW5jaWVzJyBpbmNsdWRlIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgYWRkZWQgaW4gdGhpcyB3YXk7Ci1pdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBjcm9zcy1jb21waWxpbmcgaW4gc3lzcm9vdCBlbnZpcm9ubWVudHMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi0gcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi1pbmRleCA4ZTdhMzAzLi5kMTY3YmUxIDEwMDY0NAotLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotQEAgLTEzLDQgKzEzLDQgQEAgVmVyc2lvbjogQFZFUlNJT05ACi0gUmVxdWlyZXM6IGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotIAotIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLS1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlCi0tLSAKLTIuNC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS12a2Rpc3BsYXktVXNlLWlmZGVmLWZvci1wbGF0Zm9ybS1zcGVjaWZpYy1kZWZpbmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWFhNjJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDE1MjNhYjQ2MmMxYmYxOTA1NTk2MGNlZDI1NWY0ODcyYjZjZjlmNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDExOjAwOjQyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSB2a2Rpc3BsYXk6IFVzZSBpZmRlZiBmb3IgcGxhdGZvcm0gc3BlY2lmaWMgZGVmaW5lcwotCi1WS19LSFJfKl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FIGFyZSBvbmx5IGF2YWlsYWJsZSB3aGVuIGNvcnJlc3BvbmRpbmcKLVdTSSBpcyBlbmFibGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ1MzldCi0tLS0KLSBleHQvdnVsa2FuL3ZrZGlzcGxheS5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKLWluZGV4IDU1MDEzNGNkOC4uYWRlNWQ0NTgzIDEwMDY0NAotLS0tIGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYwotKysrIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYwotQEAgLTQ0OCwxMSArNDQ4LDE1IEBAIGdzdF92dWxrYW5fZGlzcGxheV90eXBlX3RvX2V4dGVuc2lvbl9zdHJpbmcgKEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGUpCi0gICBpZiAodHlwZSA9PSBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9OT05FKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSsjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IKLSAgIGlmICh0eXBlICYgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCKQotICAgICByZXR1cm4gVktfS0hSX1hDQl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOwotKyNlbmRpZgotIAotKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1dBWUxBTkQKLSAgIGlmICh0eXBlICYgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfV0FZTEFORCkKLSAgICAgcmV0dXJuIFZLX0tIUl9XQVlMQU5EX1NVUkZBQ0VfRVhURU5TSU9OX05BTUU7Ci0rI2VuZGlmCi0gCi0gICByZXR1cm4gTlVMTDsKLSB9Ci0tLSAKLTIuMTMuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRmMTQ1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMi12dWxrYW4tVXNlLXRoZS1nZW5lcmF0ZWQtdmVyc2lvbi1vZi12a2NvbmZpZy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSBjMjNlMWRjMjJkZWI0OTU1NjFjZmZiODc3ZWRiMjc0NmI3NDBhMWZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNSBKdWwgMjAxNyAxMTowNzowNSArMDMwMAotU3ViamVjdDogW1BBVENIIDIvMl0gdnVsa2FuOiBVc2UgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uIG9mIHZrY29uZmlnLmgKLQotQnVpbGQgZmFpbHMgaW4gZXh0L3Z1bGthbi94Y2IgYW5kIGV4dC92dWxrYW4vd2F5bGFuZCB3aGVuOgotKiBidWlsZGluZyBmcm9tIHRhcmJhbGwKLSogYnVpbGRpbmcgb3V0LW9mLXRyZWUKLSogT25seSBvbmUgV1NJIGludGVncmF0aW9uICh4Y2Igb3Igd2F5bGFuZCkgaXMgZW5hYmxlZCBieSBjb25maWd1cmUuYWMKLVRoaXMgaXMgYmVjYXVzZSB2a2NvbmZpZy5oIGZyb20gc291cmNlIGRpcmVjdG9yeSBnZXRzIHVzZWQgaW5zdGVhZAotb2YgdGhlIGdlbmVyYXRlZCBvbmUuCi0KLUFkZCB0aGUgY29ycmVjdCBidWlsZCBkaXJlY3RvcnkgdG8gIi1JIi4gVXNlIGFuZ2xlIGJyYWNrZXQKLWluY2x1ZGUgaW4gdmthcGkuaCBzbyB0aGF0IGl0IGFjdHVhbGx5IGxvb2tzIGluIHRoZSBpbmNsdWRlIHNlYXJjaAotcGF0aCBpbnN0ZWFkIG9mIGRlZmF1bHRpbmcgdG8gdGhlIHNhbWUgKHNvdXJjZSB0cmVlKSBkaXJlY3RvcnkuCi0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4NDUzOV0KLS0tLQotIGV4dC92dWxrYW4vdmthcGkuaCAgICAgICAgICAgICB8IDIgKy0KLSBleHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gfCAxICsKLSBleHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbSAgICAgfCAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2FwaS5oIGIvZXh0L3Z1bGthbi92a2FwaS5oCi1pbmRleCBlOWMyM2FhOTIuLmEzN2MyOWQwZiAxMDA2NDQKLS0tLSBhL2V4dC92dWxrYW4vdmthcGkuaAotKysrIGIvZXh0L3Z1bGthbi92a2FwaS5oCi1AQCAtMjMsNyArMjMsNyBAQAotIAotICNkZWZpbmUgVktfUFJPVE9UWVBFUwotIAotLSNpbmNsdWRlICJ2a2NvbmZpZy5oIgotKyNpbmNsdWRlIDx2a2NvbmZpZy5oPgotICNpbmNsdWRlICJ2a19md2QuaCIKLSAjaW5jbHVkZSAidmttYWNyb3MuaCIKLSAKLWRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KLWluZGV4IGY5MmQ4NWUyYy4uMTBjZmI3MGU2IDEwMDY0NAotLS0tIGEvZXh0L3Z1bGthbi93YXlsYW5kL01ha2VmaWxlLmFtCi0rKysgYi9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KLUBAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAotIAotIGxpYmdzdHZ1bGthbl93YXlsYW5kX2xhX0NGTEFHUyA9IFwKLSAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSsJLUkkKHRvcF9idWlsZGRpcikvZXh0L3Z1bGthbiBcCi0gCS1JJCh0b3Bfc3JjZGlyKS9leHQvdnVsa2FuIFwKLSAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi1kaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQotaW5kZXggN2RlYmNmZjllLi5iNTEwMzU1MWIgMTAwNjQ0Ci0tLS0gYS9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQotKysrIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KLUBAIC0xNCw2ICsxNCw3IEBAIG5vaW5zdF9IRUFERVJTID0gXAotIAotIGxpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTID0gXAotIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotKwktSSQodG9wX2J1aWxkZGlyKS9leHQvdnVsa2FuIFwKLSAJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAotIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgyYjE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1BZGQgLWx2Y2hvc3RpZiB0byBsaW5rIHdoZW4gdXNpbmcgLWxFR0wgb24gcnBpCi0KLVRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBsaWJFR0wgZnJvbSB1c2VybGFuZCB1c2VzIHN5Ym9scwotZnJvbSB0aGlzIGxpYnJhcnkuCi0KLWxpYi9saWJFR0wuc28uMS4wLjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjE6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotICAxNTUyOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLQotVGhlc2Ugc3ltYm9scyBhcmUgcHJvdmlkZWQgYnkgbGlidmNob3N0aWYgYXMgc2VlbiBiZWxvdwotCi1saWIvbGlidmNob3N0aWYuc28KLSAgIDI1MjogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0gICA4MDk6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotCi1XaXRoIHRoaXMgZXhwbGljaXQgbGluaywgcGx1Z2lucyBmYWlsIGR1cmluZyBydW50aW1lCi0KLShnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvbXguc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAotKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9wZW5nbC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdzdC1wbHVnaW5zLWJhZC0xLjEwLjQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjQvY29uZmlndXJlLmFjCi1AQCAtNzg1LDcgKzc4NSw3IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0w9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfR0xFUzI9eWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMX1JQST15ZXMKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y29zIC1sdmNoaXFfYXJtIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjaG9zdGlmIC1sdmNvcyAtbHZjaGlxX2FybSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0NGTEFHUz0iIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX0VHTF9SUEksIFsxXSwgW1VzZSBSUGkgcGxhdGZvcm1dKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmM3ZmZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzNhNTg1NWE4MTE5ZGViMDE3ZjVmMTNjZjMyNzA5NWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1ICIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjY0YmYxNmNmMTVlZGFhYjFjMGUwMmM4ZGVlNzE3MGQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjNzg1N2JlMTY2ODZkNWMxYmE2ZTM0YmQzMzg2NjRkM2Q0NTk5ZDMyNzE0YThlY2E1YzhhNDFhMTAxZTJkMDgiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1NDZiOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE0LjIuYmIKQEAgLTAsMCArMSwxNDggQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJzc2gyLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LW1heWJlLXVuaW5pdGlhbGl6ZWQtd2FybmluZ3Mtd2hlbi1jb21waWxpbmctd2l0aC1Pcy5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVscy1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQtZXRjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NjgyNmM1NjRiZWQ1NTExOTgyZDdmYjYxMzdkOTg3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNGZhYjdkYTcwOTk0NDY1YTY0NDY4MzMwYjIxNjhhNGEwZWQ5MGE3ZGU3ZTRjNDk5YjZkMTI3YzZjMWIxZWFmIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03M2E1ODU1YTgxMTlkZWIwMTdmNWYxM2NmMzI3MDk1ZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MjE2ODJlNGU4ZmVhNTI0MTNmZDI2YzYwYWNiOTA3ZTUgIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGpwZWciCisKK2luaGVyaXQgZ2V0dGV4dCBibHVldG9vdGgKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYiB2dWxrYW4nLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2wnLCAnJywgZCl9IFwKKyAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHR0bWwgdXZjaDI2NCB3ZWJwIFwKKyIKKworIyB0aGUgZ2wgcGFja2FnZWNvbmZpZyBlbmFibGVzIE9wZW5HTCBlbGVtZW50cyB0aGF0IGhhdmVuJ3QgYmVlbiBwb3J0ZWQKKyMgdG8gLWJhc2UgeWV0LiBUaGV5IGRlcGVuZCBvbiB0aGUgZ3N0Z2wgbGlicmFyeSBpbiAtYmFzZSwgc28gd2UgZG8KKyMgbm90IGFkZCBHTCBkZXBlbmRlbmNpZXMgaGVyZSwgc2luY2UgdGhlc2UgYXJlIHRha2VuIGNhcmUgb2YgaW4gLWJhc2UuCisKK1BBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCitQQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLS1lbmFibGUtYmx1ZXosLS1kaXNhYmxlLWJsdWV6LCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWJ6MiwtLWRpc2FibGUtYnoyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjdXJsXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbZGFzaF0gICAgICAgICAgICA9ICItLWVuYWJsZS1kYXNoLC0tZGlzYWJsZS1kYXNoLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW2RjMTM5NF0gICAgICAgICAgPSAiLS1lbmFibGUtZGMxMzk0LC0tZGlzYWJsZS1kYzEzOTQsbGliZGMxMzk0IgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICAgICAgID0gIi0tZW5hYmxlLWRpcmVjdGZiLC0tZGlzYWJsZS1kaXJlY3RmYixkaXJlY3RmYiIKK1BBQ0tBR0VDT05GSUdbZHRsc10gICAgICAgICAgICA9ICItLWVuYWJsZS1kdGxzLC0tZGlzYWJsZS1kdGxzLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2ZhYWNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZmFhYywtLWRpc2FibGUtZmFhYyxmYWFjIgorUEFDS0FHRUNPTkZJR1tmYWFkXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWQsLS1kaXNhYmxlLWZhYWQsZmFhZDIiCitQQUNLQUdFQ09ORklHW2ZsaXRlXSAgICAgICAgICAgPSAiLS1lbmFibGUtZmxpdGUsLS1kaXNhYmxlLWZsaXRlLGZsaXRlLWFsc2EiCitQQUNLQUdFQ09ORklHW2ZsdWlkc3ludGhdICAgICAgPSAiLS1lbmFibGUtZmx1aWRzeW50aCwtLWRpc2FibGUtZmx1aWRzeW50aCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi0tZW5hYmxlLWhscyAtLXdpdGgtaGxzLWNyeXB0bz1uZXR0bGUsLS1kaXNhYmxlLWhscyxuZXR0bGUiCitQQUNLQUdFQ09ORklHW2dsXSAgICAgICAgICAgICAgPSAiLS1lbmFibGUtZ2wsLS1kaXNhYmxlLWdsLCIKK1BBQ0tBR0VDT05GSUdba21zXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1rbXMsLS1kaXNhYmxlLWttcyxsaWJkcm0iCitQQUNLQUdFQ09ORklHW2xpYmRlMjY1XSAgICAgICAgPSAiLS1lbmFibGUtbGliZGUyNjUsLS1kaXNhYmxlLWxpYmRlMjY1LGxpYmRlMjY1IgorUEFDS0FHRUNPTkZJR1tsaWJtbXNdICAgICAgICAgID0gIi0tZW5hYmxlLWxpYm1tcywtLWRpc2FibGUtbGlibW1zLGxpYm1tcyIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gICAgICAgICA9ICItLWVuYWJsZS1saWJzc2gyLC0tZGlzYWJsZS1saWJzc2gyLGxpYnNzaDIiCitQQUNLQUdFQ09ORklHW2xjbXMyXSAgICAgICAgICAgPSAiLS1lbmFibGUtbGNtczIsLS1kaXNhYmxlLWxjbXMyLGxjbXMiCitQQUNLQUdFQ09ORklHW21vZHBsdWddICAgICAgICAgPSAiLS1lbmFibGUtbW9kcGx1ZywtLWRpc2FibGUtbW9kcGx1ZyxsaWJtb2RwbHVnIgorUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi0tZW5hYmxlLW5lb24sLS1kaXNhYmxlLW5lb24sbmVvbiIKK1BBQ0tBR0VDT05GSUdbb3BlbmFsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuYWwsLS1kaXNhYmxlLW9wZW5hbCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuY3YsLS1kaXNhYmxlLW9wZW5jdixvcGVuY3YiCitQQUNLQUdFQ09ORklHW29wZW5oMjY0XSAgICAgICAgPSAiLS1lbmFibGUtb3BlbmgyNjQsLS1kaXNhYmxlLW9wZW5oMjY0LG9wZW5oMjY0IgorUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gICAgICAgID0gIi0tZW5hYmxlLW9wZW5qcGVnLC0tZGlzYWJsZS1vcGVuanBlZyxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbb3Blbm1wdF0gICAgICAgICA9ICItLWVuYWJsZS1vcGVubXB0LC0tZGlzYWJsZS1vcGVubXB0LGxpYm9wZW5tcHQiCisjIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAorIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAorUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKK1BBQ0tBR0VDT05GSUdbcmVzaW5kdmRdICAgICAgICA9ICItLWVuYWJsZS1yZXNpbmR2ZCwtLWRpc2FibGUtcmVzaW5kdmQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCitQQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgorUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCitQQUNLQUdFQ09ORklHW3NiY10gICAgICAgICAgICAgPSAiLS1lbmFibGUtc2JjLC0tZGlzYWJsZS1zYmMsc2JjIgorUEFDS0FHRUNPTkZJR1tzbW9vdGhzdHJlYW1pbmddID0gIi0tZW5hYmxlLXNtb290aHN0cmVhbWluZywtLWRpc2FibGUtc21vb3Roc3RyZWFtaW5nLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3NuZGZpbGVdICAgICAgICAgPSAiLS1lbmFibGUtc25kZmlsZSwtLWRpc2FibGUtc25kZmlsZSxsaWJzbmRmaWxlMSIKK1BBQ0tBR0VDT05GSUdbc3J0cF0gICAgICAgICAgICA9ICItLWVuYWJsZS1zcnRwLC0tZGlzYWJsZS1zcnRwLGxpYnNydHAiCitQQUNLQUdFQ09ORklHW3RpbnlhbHNhXSAgICAgICAgPSAiLS1lbmFibGUtdGlueWFsc2EsLS1kaXNhYmxlLXRpbnlhbHNhLHRpbnlhbHNhIgorUEFDS0FHRUNPTkZJR1t0dG1sXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXR0bWwsLS1kaXNhYmxlLXR0bWwsbGlieG1sMiBwYW5nbyBjYWlybyIKK1BBQ0tBR0VDT05GSUdbdXZjaDI2NF0gICAgICAgICA9ICItLWVuYWJsZS11dmNoMjY0LC0tZGlzYWJsZS11dmNoMjY0LGxpYnVzYjEgbGliZ3VkZXYiCitQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLS1lbmFibGUtdm9hYWNlbmMsLS1kaXNhYmxlLXZvYWFjZW5jLHZvLWFhY2VuYyIKK1BBQ0tBR0VDT05GSUdbdm9hbXJ3YmVuY10gICAgICA9ICItLWVuYWJsZS12b2FtcndiZW5jLC0tZGlzYWJsZS12b2FtcndiZW5jLHZvLWFtcndiZW5jIgorUEFDS0FHRUNPTkZJR1t2dWxrYW5dICAgICAgICAgID0gIi0tZW5hYmxlLXZ1bGthbiwtLWRpc2FibGUtdnVsa2FuLHZ1bGthbiIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKK1BBQ0tBR0VDT05GSUdbd2VicnRjXSAgICAgICAgICA9ICItLWVuYWJsZS13ZWJydGMsLS1kaXNhYmxlLXdlYnJ0YyxsaWJuaWNlIgorUEFDS0FHRUNPTkZJR1t3ZWJydGNkc3BdICAgICAgID0gIi0tZW5hYmxlLXdlYnJ0Y2RzcCwtLWRpc2FibGUtd2VicnRjZHNwLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgorCisjIHRoZXNlIHBsdWdpbnMgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGxpYnJhcnkgaW4gT0UtY29yZSBvciBtZXRhLW9wZW5lbWJlZGRlZDoKKyMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhY20gYXBwbGVfbWVkaWEgaXFhCisjICAgYW5kcm9pZF9tZWRpYSBhdmMgYnMyYiBjaHJvbWFwcmludCBkYWFsYSBkdHMgZmRrYWFjIGdtZSBnc20ga2F0ZSBsYWRzcGEKKyMgICBsdjIgbXBlZzJlbmMgbXBsZXggbXNkayBtdXNlcGFjayBudmVuYyBvZmEgb3BlbnNsZXMgc291bmR0b3VjaAorIyAgIHNwYW5kc3Agc3BjIHRlbGV0ZXh0ZGVjIHZkcGF1IHdhc2FwaSB4MjY1IHpiYXIKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC0tZW5hYmxlLWRlY2tsaW5rIFwKKyAgICAtLWVuYWJsZS1kdmIgXAorICAgIC0tZW5hYmxlLWZiZGV2IFwKKyAgICAtLWVuYWJsZS1pcGNwaXBlbGluZSBcCisgICAgLS1lbmFibGUtbmV0c2ltIFwKKyAgICAtLWVuYWJsZS1zaG0gXAorICAgIC0tZW5hYmxlLXZjZCBcCisgICAgLS1kaXNhYmxlLWFjbSBcCisgICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAorICAgIC0tZGlzYWJsZS1hb20gXAorICAgIC0tZGlzYWJsZS1hcHBsZV9tZWRpYSBcCisgICAgLS1kaXNhYmxlLWF2YyBcCisgICAgLS1kaXNhYmxlLWJzMmIgXAorICAgIC0tZGlzYWJsZS1jaHJvbWFwcmludCBcCisgICAgLS1kaXNhYmxlLWRhYWxhIFwKKyAgICAtLWRpc2FibGUtZGlyZWN0M2QgXAorICAgIC0tZGlzYWJsZS1kaXJlY3Rzb3VuZCBcCisgICAgLS1kaXNhYmxlLWR0cyBcCisgICAgLS1kaXNhYmxlLWZka19hYWMgXAorICAgIC0tZGlzYWJsZS1nbWUgXAorICAgIC0tZGlzYWJsZS1nc20gXAorICAgIC0tZGlzYWJsZS1pcWEgXAorICAgIC0tZGlzYWJsZS1rYXRlIFwKKyAgICAtLWRpc2FibGUtbGFkc3BhIFwKKyAgICAtLWRpc2FibGUtbHYyIFwKKyAgICAtLWRpc2FibGUtbXBlZzJlbmMgXAorICAgIC0tZGlzYWJsZS1tcGxleCBcCisgICAgLS1kaXNhYmxlLW1zZGsgXAorICAgIC0tZGlzYWJsZS1tdXNlcGFjayBcCisgICAgLS1kaXNhYmxlLW52ZW5jIFwKKyAgICAtLWRpc2FibGUtb2ZhIFwKKyAgICAtLWRpc2FibGUtb3BlbmV4ciBcCisgICAgLS1kaXNhYmxlLW9wZW5uaTIgXAorICAgIC0tZGlzYWJsZS1vcGVuc2xlcyBcCisgICAgLS1kaXNhYmxlLXNvdW5kdG91Y2ggXAorICAgIC0tZGlzYWJsZS1zcGFuZHNwIFwKKyAgICAtLWRpc2FibGUtc3BjIFwKKyAgICAtLWRpc2FibGUtc3J0IFwKKyAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAorICAgIC0tZGlzYWJsZS12ZHBhdSBcCisgICAgLS1kaXNhYmxlLXdhc2FwaSBcCisgICAgLS1kaXNhYmxlLXdpbGRtaWRpIFwKKyAgICAtLWRpc2FibGUtd2lua3MgXAorICAgIC0tZGlzYWJsZS13aW5zY3JlZW5jYXAgXAorICAgIC0tZGlzYWJsZS14MjY1IFwKKyAgICAtLWRpc2FibGUtemJhciBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKKyIKKworZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitGSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKK0ZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvJHtMSUJWfS9vcGVuY3YqIgorRklMRVNfJHtQTn0tdm9hbXJ3YmVuYyArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDgxMzBjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLVNSQ19VUklfYXBwZW5kID0gIlwKLSAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1ydHNwLWRyb3AtaW5jb3JyZWN0LXJlZmVyZW5jZS10by1nc3RyZWFtZXItc2RwLWluLU1hLnBhdGNoIFwKLSIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotCi1ERVBFTkRTICs9ICJpc28tY29kZXMgdXRpbC1saW51eCB6bGliIgotCi1pbmhlcml0IGdldHRleHQKLQotUEFDS0FHRVNfRFlOQU1JQyA9KyAiXmxpYmdzdC4qIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHgxMScsIGQpfSBcCi0gICAgZ2lvLXVuaXgtMi4wIG9nZyBwYW5nbyB0aGVvcmEgdm9yYmlzIFwKLSIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgotWDExRU5BQkxFT1BUUyA9ICItLWVuYWJsZS14IC0tZW5hYmxlLXh2aWRlbyAtLWVuYWJsZS14c2htIgotWDExRElTQUJMRU9QVFMgPSAiLS1kaXNhYmxlLXggLS1kaXNhYmxlLXh2aWRlbyAtLWRpc2FibGUteHNobSIKLQotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICAgID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLS1lbmFibGUtY2RwYXJhbm9pYSwtLWRpc2FibGUtY2RwYXJhbm9pYSxjZHBhcmFub2lhIgotUEFDS0FHRUNPTkZJR1tnaW8tdW5peC0yLjBdID0gIi0tZW5hYmxlLWdpb191bml4XzJfMCwtLWRpc2FibGUtZ2lvX3VuaXhfMl8wLGdsaWItMi4wIgotUEFDS0FHRUNPTkZJR1tpdm9yYmlzXSAgICAgID0gIi0tZW5hYmxlLWl2b3JiaXMsLS1kaXNhYmxlLWl2b3JiaXMsdHJlbW9yIgotUEFDS0FHRUNPTkZJR1tvZ2ddICAgICAgICAgID0gIi0tZW5hYmxlLW9nZywtLWRpc2FibGUtb2dnLGxpYm9nZyIKLVBBQ0tBR0VDT05GSUdbb3B1c10gICAgICAgICA9ICItLWVuYWJsZS1vcHVzLC0tZGlzYWJsZS1vcHVzLGxpYm9wdXMiCi1QQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLS1lbmFibGUtcGFuZ28sLS1kaXNhYmxlLXBhbmdvLHBhbmdvIgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi0tZW5hYmxlLXRoZW9yYSwtLWRpc2FibGUtdGhlb3JhLGxpYnRoZW9yYSIKLVBBQ0tBR0VDT05GSUdbdmlzdWFsXSAgICAgICA9ICItLWVuYWJsZS1saWJ2aXN1YWwsLS1kaXNhYmxlLWxpYnZpc3VhbCxsaWJ2aXN1YWwiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLXpsaWIgXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfeDg2ID0gIiBhY19jdl9oZWFkZXJfZW1taW50cmluX2g9bm8gYWNfY3ZfaGVhZGVyX3htbWludHJpbl9oPW5vIgotCi1GSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nc3QtbGlicy9nc3QvdGFnLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L3J0cC8ubGlicyIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKaW5kZXggMDk0YmRhYy4uYmNhZGEzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKQEAgLTEsMTYgKzEsMTggQEAKLUZyb20gZjFkOTY1MjM1MWU3NzU0YzYzMDAzMTA0ZWNlYjUyNmFmNDI0YzdlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzAyMmI4NzM1M2EzN2I3OGJhZTdjZjAxMDZhNGU0NzkxM2JiNWM5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBOb3YgMjAxNSAxNjo1MzowNCArMDIwMAotU3ViamVjdDogW1BBVENIIDEvNF0gTWFrZWZpbGUuYW06IGRvbid0IGhhcmRjb2RlIGxpYnRvb2wgbmFtZSB3aGVuIHJ1bm5pbmcKK0RhdGU6IFRodSwgNSBBcHIgMjAxOCAxMDoxNTowOCArMDgwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZG9uJ3QgaGFyZGNvZGUgbGlidG9vbCBuYW1lIHdoZW4gcnVubmluZwogIGludHJvc3BlY3Rpb24gdG9vbHMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBtYWlsbGlzdF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKwogLS0tCiAgZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gfCAyICstCiAgZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCiAgZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtICAgICAgfCAyICstCi0gZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCisgZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAyICstCiAgZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0gICAgfCAyICstCiAgZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCiAgZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCkBAIC0yMSwxMCArMjMsMTAgQEAKICAxMSBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLWluZGV4IDkzNjFiZjkuLmJjN2Y1M2EgMTAwNjQ0CitpbmRleCAxOTU3ZDI4Li4xZWNjOTUwIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi1AQCAtMzgsNyArMzgsNyBAQCBHc3RBbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFsbG9jYXRvcnMtQAorQEAgLTQyLDcgKzQyLDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKICAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAogIAkJLS1saWJyYXJ5PWxpYmdzdGFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0zNCwxMCArMzYsMTAgQEAKICAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItYWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLW91dHB1dCAkQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLWluZGV4IDZkNmRlOGQuLmRjYzJmZTAgMTAwNjQ0CitpbmRleCA1MmY2YWQzLi41YmZkNjA2IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotQEAgLTUzLDcgKzUzLDcgQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU8KK0BAIC01Niw3ICs1Niw3IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtNDcsMTAgKzQ5LDEwIEBACiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWFwcC1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1pbmRleCAyNzVkMjIyLi4yMzc0MTk2IDEwMDY0NAoraW5kZXggMjkyMjI0NS4uN2ZiNjVmMiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTE2LDcgKzExNiw3IEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCitAQCAtMTg0LDcgKzE4NCw3IEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtNTksMjQgKzYxLDI0IEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1hdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLWluZGV4IDA5YjNkNjguLmY1NDUzNTQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjUsNyArNjUsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJTwotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK2luZGV4IDRlNzdlOGMuLjMyNzZkN2YgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQorQEAgLTE5Myw3ICsxOTMsNyBAQCBHc3RHTC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0tCQktLWxpYnRvb2w9IiQodG9wX2J1aWxkZGlyKS9saWJ0b29sIiBcCisgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCisgCQktLWluY2x1ZGU9R3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAorLQkJLS1saWJ0b29sPSIke0xJQlRPT0x9IiBcCiArCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKICAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWZmdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLW91dHB1dCAkQCBcCisgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCisgCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KLWluZGV4IDY0ZDVlYjAuLjkxZGMyMTQgMTAwNjQ0CitpbmRleCBhZTUxOTkzLi4zNWE2ZTQ0IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi1AQCAtOTksNyArOTksNyBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAorQEAgLTEwMyw3ICsxMDMsNyBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAogIAkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTg2LDEwICs4OCwxMCBAQAogIAkJLS1wa2cgZ3N0cmVhbWVyLXRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLWluZGV4IDgzZDgzY2IuLjNiZDhmYzAgMTAwNjQ0CitpbmRleCBmYjUzZjA2Li5lNjZlZjRmIDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDcsNyArNDcsNyBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCitAQCAtNDksNyArNDksNyBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCiAgIwkJLS1pbmNsdWRlPUdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAjCQktLWluY2x1ZGU9R3N0VGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAjCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTk5LDEwICsxMDEsMTAgQEAKICAjCQktLXBrZyBnc3RyZWFtZXItdGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAjCQktLXBrZyBnc3RyZWFtZXItYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi1pbmRleCBmZGQwMWMxLi5mNTQ0NWMxIDEwMDY0NAoraW5kZXggYTZmOTcxZC4uNzdlYmVlYiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0KLUBAIC02NSw3ICs2NSw3IEBAIEdzdFJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHAtQEdTVF9BUElfVkVSU0lPCitAQCAtNjksNyArNjksNyBAQCBHc3RSdHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1saWJyYXJ5PWxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTExMiwxMCArMTE0LDEwIEBACiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLXJ0cC1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggZWRlNTcwNi4uOWIwYjI1OCAxMDA2NDQKK2luZGV4IGNlYjA3ZjQuLmRiOWQwZmQgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC03Miw3ICs3Miw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCitAQCAtNzYsNyArNzYsNyBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUwogIAkJLS1pbmNsdWRlPUdpby0yLjAgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTEyNSwxMCArMTI3LDEwIEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLXNkcC1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLWluZGV4IGE5MGYzMGIuLjBlMTQ5YjggMTAwNjQ0CitpbmRleCBlMTk3ZTliLi42ZTA1Y2M3IDEwMDY0NAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbQotQEAgLTMyLDcgKzMyLDcgQEAgR3N0U2RwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU8KK0BAIC0zNCw3ICszNCw3IEBAIEdzdFNkcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RzZHAtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xMzgsMTAgKzE0MCwxMCBAQAogIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1zZHAtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1vdXRwdXQgJEAgXAogZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1pbmRleCBjNTM0YTRkLi5jYWZhZmQzIDEwMDY0NAoraW5kZXggMDI0N2MzMy4uYzg2NTE1YiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KICsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC00NSw3ICs0NSw3IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCitAQCAtNjYsNyArNjYsNyBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTE1MSwxMCArMTUzLDEwIEBACiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLXRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1pbmRleCA1ZDMxZmExLi5hYzY0ZWIzIDEwMDY0NAoraW5kZXggOWZjMWNjZi4uMGY4NDU1ZiAxMDA2NDQKIC0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1AQCAtMTE2LDcgKzExNiw3IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFCitAQCAtMTI0LDcgKzEyNCw3IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFCiAgCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0xNjMsNiArMTY1LDMgQEAKICAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUxZGMxNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA2MWE2NzJlNzljOGNiMWFlZWVkYTRjOTY4OTk3YzU3N2FjNzNhOGYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEyIE1heSAyMDE3IDE2OjQ3OjEyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdHJlYW1lci1nbC5wYy5pbjogZG9uJ3QgYXBwZW5kIEdMX0NGTEFHUyB0byBDRkxBR1MKKworRGVwZW5kZW5jaWVzJyBpbmNsdWRlIGRpcmVjdG9yaWVzIHNob3VsZCBub3QgYmUgYWRkZWQgaW4gdGhpcyB3YXk7CitpdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBjcm9zcy1jb21waWxpbmcgaW4gc3lzcm9vdCBlbnZpcm9ubWVudHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCitpbmRleCBkYzY3MmE5Li44YzI5MGJhIDEwMDY0NAorLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgorKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgorQEAgLTEzLDQgKzEzLDQgQEAgVmVyc2lvbjogQFZFUlNJT05ACisgUmVxdWlyZXM6IGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKKyAKKyBMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ACistQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUgQEdMX0NGTEFHU0AKKytDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCmluZGV4IDY2MTZlMmMuLjJlMTE5MGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoCkBAIC0xLDE2ICsxLDE4IEBACi1Gcm9tIDk5MGI2NTNjN2I2ZGUxOTM3ZWM3NTkwMTk5ODJkNmM1ZjE1NzcwZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk2MDFmYzBjZDY3NTFhMWFmZmRjODcxNzIxN2I5NTkzMWRiMzFkN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTY6Mzg6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIE1ha2VmaWxlLmFtOiBwcmVmaXggY2FsbHMgdG8gcGtnLWNvbmZpZyB3aXRoCitEYXRlOiBUaHUsIDUgQXByIDIwMTggMTA6MjY6MjUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IHByZWZpeCBjYWxscyB0byBwa2ctY29uZmlnIHdpdGgKICBQS0dfQ09ORklHX1NZU1JPT1RfRElSCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CisKIC0tLQogIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIHwgIDQgKystLQogIGdzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDQgKystLQogIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ3N0LWxpYnMvZ3N0L2ZmdC9NYWtlZmlsZS5hbSAgICAgICAgfCAgNCArKy0tCisgZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAgOCArKysrLS0tLQogIGdzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtICAgIHwgMTIgKysrKysrLS0tLS0tCiAgZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gICAgICAgfCAgOCArKysrLS0tLQogIGdzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDggKysrKy0tLS0KQEAgLTE4LDEzICsyMCwxMyBAQAogIGdzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDQgKystLQogIGdzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0gICAgICAgIHwgIDggKysrKy0tLS0KICBnc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0gICAgICB8ICA4ICsrKystLS0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRpb25zKC0pCisgMTEgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM2LDcgKzM2LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSQorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK2luZGV4IDFlY2M5NTAuLmQ2NDE3YWMgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK0BAIC0zOSw3ICszOSw3IEBAIEdzdEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YWxsb2NhdG9ycy1ACiAgCQktLWMtaW5jbHVkZSAiZ3N0L2FsbG9jYXRvcnMvYWxsb2NhdG9ycy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMzMsNyArMzUsNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdGFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWxpYnRvb2w9IiQoTElCVE9PTCkiIFwKLUBAIC02MCw3ICs2MCw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC02Myw3ICs2Myw3IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtNDIsMTEgKzQ0LDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KLUBAIC00OCw4ICs0OCw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEUKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQoraW5kZXggNWJmZDYwNi4uNjQ0MTY3NCAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0KK0BAIC01MSw4ICs1MSw4IEBAIEdzdEFwcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhcHAtQEdTVF9BUElfVkVSU0lPCiAgCQktLWMtaW5jbHVkZSAiZ3N0L2FwcC9hcHAuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKICAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTU3LDExICs1OSwxMSBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotQEAgLTE2NywxMiArMTY3LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KK2luZGV4IDdmYjY1ZjIuLjUzNzlmNzkgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQorQEAgLTE3NCwxMiArMTc0LDEyIEBAIEdzdEF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGF1ZGlvLUBHU1RfQVBJX1ZFCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogIAkJLS1jLWluY2x1ZGUgImdzdC9hdWRpby9hdWRpby5oIiBcCkBAIC03OCw3ICs4MCw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0yMDEsOCArMjAxLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTIwOCw4ICsyMDgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXApAQCAtODksMzMgKzkxLDM4IEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9mZnQvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvZmZ0L01ha2VmaWxlLmFtCi1AQCAtNjMsNyArNjMsNyBAQCBHc3RGZnQtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCi0gCQktLWMtaW5jbHVkZSAiZ3N0L2ZmdC9mZnQuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK2luZGV4IDMyNzZkN2YuLjBjZGZlMjYgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQorQEAgLTE4Niw5ICsxODYsOSBAQCBHc3RHTC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAorIAkJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorIAkJJChHTF9DRkxBR1MpIFwKKyAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKIC0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAorLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3ZpZGVvLyIgXAogKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisrCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeT1saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTg3LDcgKzg3LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCisgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCitAQCAtMjE4LDggKzIxOCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKKyAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKIC0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAorLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKICsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKysJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi1AQCAtODUsMTQgKzg1LDE0IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFIKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCitpbmRleCAzNWE2ZTQ0Li40OWQ2ODk0IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCitAQCAtODgsMTQgKzg4LDE0IEBAIEdzdFBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cGJ1dGlscy1AR1NUX0FQCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3BidXRpbHMvcGJ1dGlscy5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMTM0LDcgKzE0MSw3IEBACiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKICAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyNSw4ICsxMjUsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CitAQCAtMTI4LDggKzEyOCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKICAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAogIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXApAQCAtMTQ1LDExICsxNTIsMTEgQEAKICAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCiAgCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vIiBcCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLUBAIC00Miw4ICs0Miw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KK2luZGV4IGU2NmVmNGYuLmM4YzU4OGEgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KK0BAIC00Myw4ICs0Myw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykKICAjCQktLWMtaW5jbHVkZSAiZ3N0L3JpZmYvcmlmZi5oIiBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3RhZyBcCiAgIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL2F1ZGlvIFwKQEAgLTE2MCw3ICsxNjcsNyBAQAogICMJCS0tbGlicmFyeT1saWJnc3RyaWZmLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAjCQktLWluY2x1ZGU9R3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogICMJCS0taW5jbHVkZT1Hc3RUYWctQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTc0LDggKzc0LDggQEAgbGliZ3N0cmlmZl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTCitAQCAtNzUsOCArNzUsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCiAgIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXApAQCAtMTcxLDExICsxNzgsMTEgQEAKICAjCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAjCiAgI0NMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMub3JpZy9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotQEAgLTYxLDggKzYxLDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRQorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCitpbmRleCA3N2ViZWViLi45YWVlNzg4IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQorQEAgLTY0LDggKzY0LDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KICAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtMTg2LDcgKzE5Myw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTg5LDggKzg5LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTkyLDggKzkyLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0xOTcsMTEgKzIwNCwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyArPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLUluZGV4OiBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTY4LDcgKzY4LDcgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KK2luZGV4IGRiOWQwZmQuLjc5MDI3Y2IgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KK0BAIC03MSw3ICs3MSw3IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoYnVpbGRkaXIpLy4uL3NkcCBcCkBAIC0yMTAsNyArMjE3LDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3RydHNwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAJCS0taW5jbHVkZT1HaW8tMi4wIFwKICAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk4LDcgKzk4LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTEwMSw3ICsxMDEsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCiAgCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vc2RwIFwKQEAgLTIxOSwxMSArMjI2LDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1AQCAtMzAsNyArMzAsNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KK2luZGV4IDZlMDVjYzcuLmM3Y2Y1MTQgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCitAQCAtMzEsNyArMzEsNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS13YXJuLWFsbCBcCiAgCQktLWMtaW5jbHVkZSAiZ3N0L3NkcC9zZHAuaCIgXAogIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTIzMiw3ICsyMzksNyBAQAogIAkJLS1saWJyYXJ5PWxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tbGlidG9vbD0iJChMSUJUT09MKSIgXAotQEAgLTU0LDcgKzU0LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPQorQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCkBAIC0yNDEsMTEgKzI0OCwxMSBAQAogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAgCiAgQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy5vcmlnL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYXNlLTEuMTIuMy9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCi1AQCAtNTksOCArNTksOCBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KK2luZGV4IGM4NjUxNWIuLjM2M2U2ZDIgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCisrKysgYi9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtCitAQCAtNjEsOCArNjEsOCBAQCBHc3RUYWctQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJTwogIAkJLS1jLWluY2x1ZGUgImdzdC90YWcvdGFnLmgiIFwKICAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAgCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0yNTYsNyArMjYzLDcgQEAKICAJCS0tbGlicmFyeT1saWJnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtODcsOCArODcsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9CitAQCAtODksOCArODksOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKICAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAogIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKQEAgLTI2NywxMSArMjc0LDExIEBACiAgCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKICAKICBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotSW5kZXg6IGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhc2UtMS4xMi4zLm9yaWcvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFzZS0xLjEyLjMvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1AQCAtMTE2LDggKzExNiw4IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1MKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KK2luZGV4IDBmODQ1NWYuLjhjOTk1NWMgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorQEAgLTExOSw4ICsxMTksOCBAQCBHc3RWaWRlby1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R2aWRlby1AR1NUX0FQSV9WRQogIAkJLS1jLWluY2x1ZGUgImdzdC92aWRlby92aWRlby5oIiBcCiAgCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXApAQCAtMjgyLDcgKzI4OSw3IEBACiAgCQktLWxpYnJhcnk9bGliZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMTQ0LDggKzE0NCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0KK0BAIC0xNDcsOCArMTQ3LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQogIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCiAgCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKICAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoCmluZGV4IDliNjZmN2YuLjk4ZmZkYjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoCkBAIC0xLDIwICsxLDIxIEBACi1Gcm9tIDNjMmMyZDVkZDA4YWEzMGVkMGU4YWNkODU2NmVjOTk0MTJiYjgyMDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGI5NzY1ZWZiMTY5NmUzZTJlNzlmMjk1NWY3NTliZTE5OWZlMzQ4ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMjYgT2N0IDIwMTUgMTc6Mjk6MzcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIHJpZmY6IGFkZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0b3JpZXMgd2hlbiBjYWxsaW5nCitTdWJqZWN0OiBbUEFUQ0hdIHJpZmY6IGFkZCBtaXNzaW5nIGluY2x1ZGUgZGlyZWN0b3JpZXMgd2hlbiBjYWxsaW5nCiAgaW50cm9zcGVjdGlvbiBzY2FubmVyCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotaW5kZXggMGExMTVjYy4uNTA1N2E1OCAxMDA2NDQKK2luZGV4IGM4YzU4OGEuLmMwOTY0NTMgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLUBAIC0zOSw2ICszOSw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykKK0BAIC00MSw2ICs0MSw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykKICAjCQktLXN0cmlwLXByZWZpeD1Hc3QgXAogICMJCS0td2Fybi1hbGwgXAogICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKQEAgLTIzLDYgKzI0LDMgQEAKICAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vdGFnIFwKICAjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vYXVkaW8gXAogICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2gKaW5kZXggOWZiZWJkNS4uOWU5NTUyNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBiZTYxNjNjZmEzYTI1NTQ5M2Y5ZDc1YmFkOTU0MWNiZmUxNzIzZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5MThjOTZiMjRkMTBmNjFiNzQ1NWI0Y2VmM2JhYjQ5MDg0OWQwZDc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+CiBEYXRlOiBUaHUsIDE5IE1hciAyMDE1IDE0OjE3OjEwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBzc2FwYXJzZTogZW5oYW5jZSBTU0EgdGV4dCBsaW5lcyBwYXJzaW5nLgorU3ViamVjdDogW1BBVENIXSBzc2FwYXJzZTogZW5oYW5jZSBTU0EgdGV4dCBsaW5lcyBwYXJzaW5nLgogCiBzb21lIHBhcnNlciB3aWxsIHBhc3MgaW4gdGhlIG9yaWdpbmFsIHNzYSB0ZXh0IGxpbmUgd2hpY2ggc3RhcnRzIHdpdGggIkRpYWxvZzoiCiBhbmQgdGhlcmUncyBhcmUgbWF5YmUgbXVsdGlwbGUgRGlhbG9nIGxpbmVzIGluIG9uZSBpbnB1dCBidWZmZXIuCkBAIC0xMCwxMyArMTAsMTggQEAKIAogU2lnbmVkLW9mZi1ieTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+CiAKKy0tLQorIGdzdC9zdWJwYXJzZS9nc3Rzc2FwYXJzZS5jIHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMzQgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisgbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBnc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYworCiBkaWZmIC0tZ2l0IGEvZ3N0L3N1YnBhcnNlL2dzdHNzYXBhcnNlLmMgYi9nc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYwogb2xkIG1vZGUgMTAwNjQ0CiBuZXcgbW9kZSAxMDA3NTUKLWluZGV4IDA2ZWNlZjkuLjBhYjVkY2UKK2luZGV4IGM4NDljMDguLjRiOTYzNmMKIC0tLSBhL2dzdC9zdWJwYXJzZS9nc3Rzc2FwYXJzZS5jCiArKysgYi9nc3Qvc3VicGFyc2UvZ3N0c3NhcGFyc2UuYwotQEAgLTI2MCw2ICsyNjAsNyBAQCBnc3Rfc3NhX3BhcnNlX3JlbW92ZV9vdmVycmlkZV9jb2RlcyAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQpCitAQCAtMjYyLDYgKzI2Miw3IEBAIGdzdF9zc2FfcGFyc2VfcmVtb3ZlX292ZXJyaWRlX2NvZGVzIChHc3RTc2FQYXJzZSAqIHBhcnNlLCBnY2hhciAqIHR4dCkKICAgKiBnc3Rfc3NhX3BhcnNlX3B1c2hfbGluZToKICAgKiBAcGFyc2U6IGNhbGxlciBlbGVtZW50CiAgICogQHR4dDogdGV4dCB0byBwdXNoCkBAIC0yNCw3ICsyOSw3IEBACiAgICogQHN0YXJ0OiB0aW1lc3RhbXAgZm9yIHRoZSBidWZmZXIKICAgKiBAZHVyYXRpb246IGR1cmF0aW9uIGZvciB0aGUgYnVmZmVyCiAgICoKLUBAIC0yNjksMjcgKzI3MCwxMzMgQEAgZ3N0X3NzYV9wYXJzZV9yZW1vdmVfb3ZlcnJpZGVfY29kZXMgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0KQorQEAgLTI3MSwyNyArMjcyLDEzMyBAQCBnc3Rfc3NhX3BhcnNlX3JlbW92ZV9vdmVycmlkZV9jb2RlcyAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQpCiAgICogUmV0dXJuczogcmVzdWx0IG9mIHRoZSBwdXNoIG9mIHRoZSBjcmVhdGVkIGJ1ZmZlcgogICAqLwogIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC0xNjksNyArMTc0LDcgQEAKICAgIEdTVF9MT0dfT0JKRUNUIChwYXJzZSwgIlRleHQgOiAlcyIsIHQpOwogIAogICAgaWYgKGdzdF9zc2FfcGFyc2VfcmVtb3ZlX292ZXJyaWRlX2NvZGVzIChwYXJzZSwgdCkpIHsKLUBAIC0zMDcsMTMgKzQxNCwyMiBAQCBnc3Rfc3NhX3BhcnNlX3B1c2hfbGluZSAoR3N0U3NhUGFyc2UgKiBwYXJzZSwgZ2NoYXIgKiB0eHQsCitAQCAtMzA5LDEzICs0MTYsMjIgQEAgZ3N0X3NzYV9wYXJzZV9wdXNoX2xpbmUgKEdzdFNzYVBhcnNlICogcGFyc2UsIGdjaGFyICogdHh0LAogICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIGVzY2FwZWQsIGxlbiArIDEpOwogICAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZSAoYnVmLCBsZW4pOwogICAgZ19mcmVlIChlc2NhcGVkKTsKQEAgLTE5Niw3ICsyMDEsNyBAQAogIAogICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChwYXJzZS0+c3JjcGFkLCBidWYpOwogIAotQEAgLTMzMyw2ICs0NDksNyBAQCBnc3Rfc3NhX3BhcnNlX2NoYWluIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK0BAIC0zMzUsNiArNDUxLDcgQEAgZ3N0X3NzYV9wYXJzZV9jaGFpbiAoR3N0UGFkICogc2lua3BhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCiAgICBHc3RDbG9ja1RpbWUgdHM7CiAgICBnY2hhciAqdHh0OwogICAgR3N0TWFwSW5mbyBtYXA7CkBAIC0yMDQsNyArMjA5LDcgQEAKICAKICAgIGlmIChHX1VOTElLRUxZICghcGFyc2UtPmZyYW1lZCkpCiAgICAgIGdvdG8gbm90X2ZyYW1lZDsKLUBAIC0zNTAsMTMgKzQ2NywxNCBAQCBnc3Rfc3NhX3BhcnNlX2NoYWluIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK0BAIC0zNTIsMTMgKzQ2OSwxNCBAQCBnc3Rfc3NhX3BhcnNlX2NoYWluIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKICAgIC8qIG1ha2UgZG91YmxlLXN1cmUgaXQncyAwLXRlcm1pbmF0ZWQgYW5kIGFsbCAqLwogICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKICAgIHR4dCA9IGdfc3RybmR1cCAoKGdjaGFyICopIG1hcC5kYXRhLCBtYXAuc2l6ZSk7CkBAIC0yMjAsNiArMjI1LDMgQEAKICAKICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRzKSkgewogICAgICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaAppbmRleCA0YWRmNjA1Li5hYWViNjExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaApAQCAtMSwyMCArMSwyMSBAQAotRnJvbSA0MzMwOTE1ZDg4ZGM0ZGQ0NmViNGMyOGQ3NTY0ODJiNzY3YzI3NDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1M2I1ODY4NDkxY2Y5OWVlNzk3MTkyMzk1ZGJmZWI2OWRmMjNlZGQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI2IE9jdCAyMDE1IDE3OjMwOjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBydHNwOiBkcm9wIGluY29ycmVjdCByZWZlcmVuY2UgdG8gZ3N0cmVhbWVyLXNkcCBpbgorU3ViamVjdDogW1BBVENIXSBydHNwOiBkcm9wIGluY29ycmVjdCByZWZlcmVuY2UgdG8gZ3N0cmVhbWVyLXNkcCBpbgogIE1ha2VmaWxlLmFtCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gfCAxIC0KICAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggNGY2ZDlmOC4uMGFmYTM3MCAxMDA2NDQKK2luZGV4IDc5MDI3Y2IuLjI5ODdlMjMgMTAwNjQ0CiAtLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQogKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0KLUBAIC03NSw3ICs3NSw2IEBAIEdzdFJ0c3AtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cnRzcC1AR1NUX0FQSV9WRVJTCitAQCAtNzksNyArNzksNiBAQCBHc3RSdHNwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSUwogIAkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCiAgCQktLXBrZyBnaW8tMi4wIFwKICAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0yMiw2ICsyMywzIEBACiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLXJ0c3AtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKICAJCS0tb3V0cHV0ICRAIFwKLS0tIAotMi42LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXN1YnBhcnNlLXNldC1uZWVkX3NlZ21lbnQtYWZ0ZXItc2luay1wYWQtcmVjZWl2ZWQtR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyNGUzOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gZWQwOWM4ZmQyYzljMmI1Mzg0YjcyY2M3MGFmMzcyOGJlNjY5NGU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pbmdrZSBXYW5nIDxtaW5na2Uud2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZTogVGh1LCAxOSBNYXIgMjAxNSAxNDoyMDoyNiArMDgwMAotU3ViamVjdDogW1BBVENIIDQvNF0gc3VicGFyc2U6IHNldCBuZWVkX3NlZ21lbnQgYWZ0ZXIgc2luayBwYWQgcmVjZWl2ZWQKLSBHU1RfRVZFTlRfU0VHTUVOVAotCi1zdWJwYXJzZSB3b3JrcyBpbiBwdXNoIG1vZGUsIGNoYWluIGZ1bmNpdG9uIHdpbGwgYmUgY2FsbGVkIG9uY2UKLXVwIHN0cmVhbSBlbGVtZW50IGZpbmlzaGVkIHRoZSBzZWVraW5nIGFuZCBmbHVzaGluZy4KLWlmIHNldCBuZWVkX3NlZ21lbnQgZmxhZyBpbiBzcmMgcGFkIGV2ZW50IGhhbmRsZXIsIHRoZSBzZWdtZW50Ci1ldmVudCB3aWxsIGJlIHB1c2hlZCBlYXJsaWVyLCByZXN1bHQgaW4gdGhlIHN1YnRpdGxlIHRleHQgd2lsbAotYmUgc2VuZCBvdXQgdG8gZG93biBzdHJlYW0gZnJvbSB0aGUgYmVnaW5uaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzQ5OF0KLQotU2lnbmVkLW9mZi1ieTogTWluZ2tlIFdhbmcgPG1pbmdrZS53YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWRpZmYgLS1naXQgYS9nc3Qvc3VicGFyc2UvZ3N0c3VicGFyc2UuYyBiL2dzdC9zdWJwYXJzZS9nc3RzdWJwYXJzZS5jCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBtb2RlIDEwMDc1NQotaW5kZXggYjU2NWU5My4uNzc0MWNjYwotLS0tIGEvZ3N0L3N1YnBhcnNlL2dzdHN1YnBhcnNlLmMKLSsrKyBiL2dzdC9zdWJwYXJzZS9nc3RzdWJwYXJzZS5jCi1AQCAtMjY2LDIyICsyNjYsMjAgQEAgZ3N0X3N1Yl9wYXJzZV9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQotICAgICAgICAgZ290byBiZWFjaDsKLSAgICAgICB9Ci0gCi0rICAgICAgLyogQXBwbHkgdGhlIHNlZWsgdG8gb3VyIHNlZ21lbnQgKi8KLSsgICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmc2VsZi0+c2VnbWVudCwgcmF0ZSwgZm9ybWF0LCBmbGFncywKLSsgICAgICAgICAgc3RhcnRfdHlwZSwgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7Ci0rCi0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNlZ21lbnQgYWZ0ZXIgc2VlazogJSIgR1NUX1NFR01FTlRfRk9STUFULAotKyAgICAgICAgICAmc2VsZi0+c2VnbWVudCk7Ci0rCi0gICAgICAgLyogQ29udmVydCB0aGF0IHNlZWsgdG8gYSBzZWVraW5nIGluIGJ5dGVzIGF0IHBvc2l0aW9uIDAsCi0gICAgICAgICAgRklYTUU6IGNvdWxkIHVzZSBhbiBpbmRleCAqLwotICAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc2VsZi0+c2lua3BhZCwKLSAgICAgICAgICAgZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBHU1RfRk9STUFUX0JZVEVTLCBmbGFncywKLSAgICAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAwLCBHU1RfU0VFS19UWVBFX05PTkUsIDApKTsKLSAKLS0gICAgICBpZiAocmV0KSB7Ci0tICAgICAgICAvKiBBcHBseSB0aGUgc2VlayB0byBvdXIgc2VnbWVudCAqLwotLSAgICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJnNlbGYtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsCi0tICAgICAgICAgICAgc3RhcnRfdHlwZSwgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7Ci0tCi0tICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2VnbWVudCBhZnRlciBzZWVrOiAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsCi0tICAgICAgICAgICAgJnNlbGYtPnNlZ21lbnQpOwotLQotLSAgICAgICAgc2VsZi0+bmVlZF9zZWdtZW50ID0gVFJVRTsKLS0gICAgICB9IGVsc2UgewotKyAgICAgIGlmICghcmV0KSB7Ci0gICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJzZWVrIHRvIDAgYnl0ZXMgZmFpbGVkIik7Ci0gICAgICAgfQotIAotQEAgLTE2NDEsOCArMTYzOSwxMCBAQCBnc3Rfc3ViX3BhcnNlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQotICAgICAgIGdzdF9ldmVudF9wYXJzZV9zZWdtZW50IChldmVudCwgJnMpOwotICAgICAgIGlmIChzLT5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9USU1FKQotICAgICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzZWxmLT5zZWdtZW50KTsKLS0gICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3c2VnbWVudCAoJXMpIiwKLS0gICAgICAgICAgZ3N0X2Zvcm1hdF9nZXRfbmFtZSAoc2VsZi0+c2VnbWVudC5mb3JtYXQpKTsKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3c2VnbWVudCAoJXMpICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwKLSsgICAgICAgICAgZ3N0X2Zvcm1hdF9nZXRfbmFtZSAoc2VsZi0+c2VnbWVudC5mb3JtYXQpLCAmc2VsZi0+c2VnbWVudCk7Ci0rCi0rICAgICAgc2VsZi0+bmVlZF9zZWdtZW50ID0gVFJVRTsKLSAKLSAgICAgICAvKiBpZiBub3QgdGltZSBmb3JtYXQsIHdlJ2xsIGVpdGhlciBzdGFydCB3aXRoIGEgMCB0aW1lc3RhbXAgYW55d2F5IG9yCi0gICAgICAgICogaXQncyBmb2xsb3dpbmcgYSBzZWVrIGluIHdoaWNoIGNhc2Ugd2UnbGwgaGF2ZSBzYXZlZCB0aGUgcmVxdWVzdGVkCi0tLSAKLTEuNy45LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAxMC1nbC1BZGQtc3dpdGNoLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctR0JNLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDEwLWdsLUFkZC1zd2l0Y2gtZm9yLWV4cGxpY2l0ZWx5LWVuYWJsaW5nLWRpc2FibGluZy1HQk0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDViYTUwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAxMC1nbC1BZGQtc3dpdGNoLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctR0JNLnBhdGNoCkBAIC0wLDAgKzEsNzAgQEAKK0Zyb20gYTFiNTljYTZiMTc4MTQ0MmYzN2ZmYzFiNjk3NjM1ZGIxMjZiM2EyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KK0RhdGU6IFRodSwgMTkgSnVsIDIwMTggMTA6MzA6NTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2w6IEFkZCBzd2l0Y2ggZm9yIGV4cGxpY2l0ZWx5IGVuYWJsaW5nL2Rpc2FibGluZyBHQk0gc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjgzM10KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorLS0tCisgbTQvZ3N0LWdsLm00IHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nc3QtZ2wubTQgYi9tNC9nc3QtZ2wubTQKK2luZGV4IDFlOTcyNDA5NC4uYWNhNTI5NWNjIDEwMDY0NAorLS0tIGEvbTQvZ3N0LWdsLm00CisrKysgYi9tNC9nc3QtZ2wubTQKK0BAIC0xMTcsNiArMTE3LDE1IEBAIEFDX0FSR19FTkFCTEUoW2Rpc3BtYW54XSwKKyAgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1kaXNwbWFueF0pIDs7CisgICAgICBlc2FjXSxbTkVFRF9ESVNQTUFOWD1hdXRvXSkKKyAKKytBQ19BUkdfRU5BQkxFKFtnYm1dLAorKyAgICAgWyAgLS1lbmFibGUtZ2JtICAgICAgICBFbmFibGUgTWVzYTNEIEdCTSBzdXBwb3J0IChyZXF1aXJlcyBFR0wpIEA8OkBkZWZhdWx0PWF1dG9AOj5AXSwKKysgICAgIFtjYXNlICIke2VuYWJsZXZhbH0iIGluCisrICAgICAgIHllcykgIE5FRURfR0JNPXllcyA7OworKyAgICAgICBubykgICBORUVEX0dCTT1ubyA7OworKyAgICAgICBhdXRvKSBORUVEX0dCTT1hdXRvIDs7CisrICAgICAgICopIEFDX01TR19FUlJPUihbYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtZ2JtXSkgOzsKKysgICAgIGVzYWNdLFtORUVEX0dCTT1hdXRvXSkKKysKKyBBR19HU1RfUEtHX0NIRUNLX01PRFVMRVMoWDExX1hDQiwgeDExLXhjYikKKyBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgc2F2ZV9MSUJTPSIkTElCUyIKK0BAIC0xNzIsMTUgKzE4MSwzMiBAQCBjYXNlICRob3N0IGluCisgICAgICAgICBBQ19DSEVDS19MSUIoW0VHTF0sIFtmYkdldERpc3BsYXldLCBbSEFWRV9WSVZfRkJfRUdMPXllc10pCisgICAgIGZpCisgCistICAgIGlmIHRlc3QgIngkSEFWRV9FR0wiID0gInh5ZXMiOyB0aGVuCisrICAgIGlmIHRlc3QgIngkTkVFRF9HQk0iICE9ICJ4bm8iOyB0aGVuCisrICAgICAgaWYgdGVzdCAieCRIQVZFX0VHTCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKERSTSwgbGliZHJtID49IDIuNC41NSwgSEFWRV9EUk09eWVzLCBIQVZFX0RSTT1ubykKKyAgICAgICAgIEFDX1NVQlNUKERSTV9DRkxBR1MpCisgICAgICAgICBBQ19TVUJTVChEUk1fTElCUykKKysgICAgICAgIGlmIHRlc3QgIngkTkVFRF9HQk0iID0gInh5ZXMiOyB0aGVuCisrICAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9EUk0iID0gInhubyI7IHRoZW4KKysgICAgICAgICAgICBBQ19NU0dfRVJST1IoW0dCTSBzdXBwb3J0IHJlcXVlc3RlZCBidXQgbGliZHJtIGlzIG5vdCBhdmFpbGFibGVdKQorKyAgICAgICAgICBmaQorKyAgICAgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR1VERVYiID0gInhubyI7IHRoZW4KKysgICAgICAgICAgICBBQ19NU0dfRVJST1IoW0dCTSBzdXBwb3J0IHJlcXVlc3RlZCBidXQgZ3VkZXYgaXMgbm90IGF2YWlsYWJsZV0pCisrICAgICAgICAgIGZpCisrICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAieCRIQVZFX0RSTSIgPSAieHllcyIgLWEgIngkSEFWRV9HVURFViIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgICAgUEtHX0NIRUNLX01PRFVMRVMoR0JNLCBnYm0sIEhBVkVfR0JNX0VHTD15ZXMsIEhBVkVfR0JNX0VHTD1ubykKKysgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX0dCTV9FR0wiID0gInhubyIgLWEgIngkTkVFRF9HQk0iID0gInh5ZXMiOyB0aGVuCisrICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtHQk0gc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IGdibSBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGVdKQorKyAgICAgICAgICBmaQorICAgICAgICAgICBBQ19TVUJTVChHQk1fQ0ZMQUdTKQorICAgICAgICAgICBBQ19TVUJTVChHQk1fTElCUykKKy0gICAgICAgZmkKKysgICAgICAgIGZpCisrICAgICAgZWxpZiB0ZXN0ICJ4JE5FRURfR0JNIiA9ICJ4eWVzIjsgdGhlbgorKyAgICAgICAgQUNfTVNHX0VSUk9SKFtHQk0gc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IEVHTCBpcyBub3QgYXZhaWxhYmxlXSkKKysgICAgICBlbHNlCisrICAgICAgICBBQ19NU0dfTk9USUNFKFtHQk0gc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IEVHTCBpcyBub3QgYXZhaWxhYmxlOyBub3QgZW5hYmxpbmcgR0JNIHN1cHBvcnRdKQorKyAgICAgIGZpCisgICAgIGZpCisgCisgICAgIGRubCBGSVhNRTogTWFsaSBFR0wgZGVwZW5kcyBvbiBHTEVTdjEgb3IgR0xFU3YyCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMTEtZ2wtQWRkLXN3aXRjaGVzLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAxMS1nbC1BZGQtc3dpdGNoZXMtZm9yLWV4cGxpY2l0ZWx5LWVuYWJsaW5nLWRpc2FibGluZy1QLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZDE5MWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMTEtZ2wtQWRkLXN3aXRjaGVzLWZvci1leHBsaWNpdGVseS1lbmFibGluZy1kaXNhYmxpbmctUC5wYXRjaApAQCAtMCwwICsxLDEwOSBAQAorRnJvbSAwOTJhYWRmYzFkZjY5YzQ2ZDkyMGIwY2QzOWY5OGQzNjNkNjk4OGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorRGF0ZTogVGh1LCAxOSBKdWwgMjAxOCAxMToxNjowNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBnbDogQWRkIHN3aXRjaGVzIGZvciBleHBsaWNpdGVseSBlbmFibGluZy9kaXNhYmxpbmcgUE5HIGFuZAorIEpQRUcgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjgzM10KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgorLS0tCisgbTQvZ3N0LWdsLm00IHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL200L2dzdC1nbC5tNCBiL200L2dzdC1nbC5tNAoraW5kZXggMjBiMjIzM2RlLi5mODgwOTk4MWMgMTAwNjQ0CistLS0gYS9tNC9nc3QtZ2wubTQKKysrKyBiL200L2dzdC1nbC5tNAorQEAgLTEyNiw2ICsxMjYsMjQgQEAgQUNfQVJHX0VOQUJMRShbZ2JtXSwKKyAgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1nYm1dKSA7OworICAgICAgZXNhY10sW05FRURfR0JNPWF1dG9dKQorIAorK0FDX0FSR19FTkFCTEUoW3BuZ10sCisrICAgICBbICAtLWVuYWJsZS1wbmcgICAgICAgIEVuYWJsZSBsaWJwbmcgc3VwcG9ydCBAPDpAZGVmYXVsdD1hdXRvQDo+QF0sCisrICAgICBbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorKyAgICAgICB5ZXMpICBORUVEX1BORz15ZXMgOzsKKysgICAgICAgbm8pICAgTkVFRF9QTkc9bm8gOzsKKysgICAgICAgYXV0bykgTkVFRF9QTkc9YXV0byA7OworKyAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXBuZ10pIDs7CisrICAgICBlc2FjXSxbTkVFRF9QTkc9YXV0b10pCisrCisrQUNfQVJHX0VOQUJMRShbanBlZ10sCisrICAgICBbICAtLWVuYWJsZS1qcGVnICAgICAgICBFbmFibGUgbGlianBlZyBzdXBwb3J0IEA8OkBkZWZhdWx0PWF1dG9AOj5AXSwKKysgICAgIFtjYXNlICIke2VuYWJsZXZhbH0iIGluCisrICAgICAgIHllcykgIE5FRURfSlBFRz15ZXMgOzsKKysgICAgICAgbm8pICAgTkVFRF9KUEVHPW5vIDs7CisrICAgICAgIGF1dG8pIE5FRURfSlBFRz1hdXRvIDs7CisrICAgICAgICopIEFDX01TR19FUlJPUihbYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtanBlZ10pIDs7CisrICAgICBlc2FjXSxbTkVFRF9KUEVHPWF1dG9dKQorKworIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhYMTFfWENCLCB4MTEteGNiKQorIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyBzYXZlX0xJQlM9IiRMSUJTIgorQEAgLTEwNDMsOSArMTA2MSwxMyBAQCBkbmwgTmVlZGVkIGJ5IHBsdWdpbnMgdGhhdCB1c2UgZ19tb2R1bGVfKigpIEFQSQorIFBLR19DSEVDS19NT0RVTEVTKEdNT0RVTEVfTk9fRVhQT1JULCBnbW9kdWxlLW5vLWV4cG9ydC0yLjApCisgCisgZG5sIGxpYnBuZyBpcyBvcHRpb25hbAorLVBLR19DSEVDS19NT0RVTEVTKExJQlBORywgbGlicG5nID49IDEuMCwgSEFWRV9QTkc9eWVzLCBIQVZFX1BORz1ubykKKy1pZiB0ZXN0ICJ4JEhBVkVfUE5HIiA9ICJ4eWVzIjsgdGhlbgorLSAgQUNfREVGSU5FKEhBVkVfUE5HLCBbMV0gLCBbVXNlIGxpYnBuZ10pCisraWYgdGVzdCAieCRORUVEX1BORyIgIT0gInhubyI7IHRoZW4KKysgIFBLR19DSEVDS19NT0RVTEVTKExJQlBORywgbGlicG5nID49IDEuMCwgSEFWRV9QTkc9eWVzLCBIQVZFX1BORz1ubykKKysgIGlmIHRlc3QgIngkSEFWRV9QTkciID0gInh5ZXMiOyB0aGVuCisrICAgIEFDX0RFRklORShIQVZFX1BORywgWzFdICwgW1VzZSBsaWJwbmddKQorKyAgZWxpZiB0ZXN0ICJ4JE5FRURfUE5HIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBBQ19NU0dfRVJST1IoW2xpYnBuZyBzdXBwb3J0IHJlcXVlc3RlZCBidXQgbGlicG5nIGlzIG5vdCBhdmFpbGFibGVdKQorKyAgZmkKKyBmaQorIEFDX1NVQlNUKEhBVkVfUE5HKQorIEFDX1NVQlNUKExJQlBOR19MSUJTKQorQEAgLTEwNTMsMjUgKzEwNzUsMjkgQEAgQUNfU1VCU1QoTElCUE5HX0NGTEFHUykKKyAKKyBkbmwgbGlianBlZyBpcyBvcHRpb25hbAorIEFDX0FSR19XSVRIKGpwZWctbW14LCBbICAtLXdpdGgtanBlZy1tbXgsIHBhdGggdG8gTU1YJ2lmaWVkIEpQRUcgbGlicmFyeV0pCistT0xEX0xJQlM9IiRMSUJTIgorLWlmIHRlc3QgeCR3aXRoX2pwZWdfbW14ICE9IHg7IHRoZW4KKy0gIExJQlM9IiRMSUJTIC1MJHdpdGhfanBlZ19tbXgiCistZmkKKy1BQ19DSEVDS19MSUIoanBlZy1tbXgsIGpwZWdfc2V0X2RlZmF1bHRzLCBIQVZFX0pQRUc9InllcyIsIEhBVkVfSlBFRz0ibm8iKQorLUpQRUdfTElCUz0iJExJQlMgLWxqcGVnLW1teCIKKy1MSUJTPSIkT0xEX0xJQlMiCistaWYgdGVzdCB4JEhBVkVfSlBFRyAhPSB4eWVzOyB0aGVuCistICBKUEVHX0xJQlM9Ii1sanBlZyIKKy0gIEFDX0NIRUNLX0xJQihqcGVnLCBqcGVnX3NldF9kZWZhdWx0cywgSEFWRV9KUEVHPSJ5ZXMiLCBIQVZFX0pQRUc9Im5vIikKKy1maQorK2lmIHRlc3QgIngkTkVFRF9KUEVHIiAhPSAieG5vIjsgdGhlbgorKyAgT0xEX0xJQlM9IiRMSUJTIgorKyAgaWYgdGVzdCB4JHdpdGhfanBlZ19tbXggIT0geDsgdGhlbgorKyAgICBMSUJTPSIkTElCUyAtTCR3aXRoX2pwZWdfbW14IgorKyAgZmkKKysgIEFDX0NIRUNLX0xJQihqcGVnLW1teCwganBlZ19zZXRfZGVmYXVsdHMsIEhBVkVfSlBFRz0ieWVzIiwgSEFWRV9KUEVHPSJubyIpCisrICBKUEVHX0xJQlM9IiRMSUJTIC1sanBlZy1tbXgiCisrICBMSUJTPSIkT0xEX0xJQlMiCisrICBpZiB0ZXN0IHgkSEFWRV9KUEVHICE9IHh5ZXM7IHRoZW4KKysgICAgSlBFR19MSUJTPSItbGpwZWciCisrICAgIEFDX0NIRUNLX0xJQihqcGVnLCBqcGVnX3NldF9kZWZhdWx0cywgSEFWRV9KUEVHPSJ5ZXMiLCBIQVZFX0pQRUc9Im5vIikKKysgIGZpCisgCistaWYgdGVzdCB4JEhBVkVfSlBFRyA9IHh5ZXM7IHRoZW4KKy0gIEFDX0RFRklORShIQVZFX0pQRUcsIFsxXSwgW1VzZSBsaWJqcGVnXSkKKy1lbHNlCistICBKUEVHX0xJQlM9CisrICBpZiB0ZXN0IHgkSEFWRV9KUEVHID0geHllczsgdGhlbgorKyAgICBBQ19ERUZJTkUoSEFWRV9KUEVHLCBbMV0sIFtVc2UgbGlianBlZ10pCisrICBlbGlmIHRlc3QgIngkTkVFRF9KUEVHIiA9ICJ4eWVzIjsgdGhlbgorKyAgICBBQ19NU0dfRVJST1IoW2xpYmpwZWcgc3VwcG9ydCByZXF1ZXN0ZWQgYnV0IGxpYmpwZWcgaXMgbm90IGF2YWlsYWJsZV0pCisrICBlbHNlCisrICAgIEpQRUdfTElCUz0KKysgIGZpCisrICBBQ19TVUJTVChKUEVHX0xJQlMpCisrICBBQ19TVUJTVChIQVZFX0pQRUcpCisgZmkKKy1BQ19TVUJTVChKUEVHX0xJQlMpCistQUNfU1VCU1QoSEFWRV9KUEVHKQorIF0pCisgCisgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2gKaW5kZXggYzhlNjI4Ny4uYTQ3MjdlMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWYwZGFjMjZmNjJhYWNlYjRiZjI2NjcyMDkxMTk1Mzc5M2UwZmM1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDFkZTJlYzY0YWIwNmJiNThjODJjMTY1OWFkYWEzODExYmM1YmNmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IHpob3VtaW5nIDxiNDI1ODZAZnJlZXNjYWxlLmNvbT4KIERhdGU6IFdlZCwgMTQgTWF5IDIwMTQgMTA6MTY6MjAgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gRU5HUjAwMzEyNTE1OiBnZXQgY2FwcyBmcm9tIHNyYyBwYWQgd2hlbiBxdWVyeSBjYXBzCkBAIC04LDE4ICs4LDE5IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogemhvdW1pbmcgPGI0MjU4NkBmcmVlc2NhbGUuY29tPgorCiAtLS0KLSBnc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMgfCAgIDEzICsrKysrKysrKysrKysKKyBnc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMgfCAxMyArKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKykKICBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGdzdC1saWJzL2dzdC90YWcvZ3N0dGFnZGVtdXguYwogCiBkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jIGIvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCiBvbGQgbW9kZSAxMDA2NDQKIG5ldyBtb2RlIDEwMDc1NQotaW5kZXggOWI2YzQ3OC4uYWUyMjk0YQoraW5kZXggOGExMjdjOC4uNzFjNWQ3OAogLS0tIGEvZ3N0LWxpYnMvZ3N0L3RhZy9nc3R0YWdkZW11eC5jCiArKysgYi9nc3QtbGlicy9nc3QvdGFnL2dzdHRhZ2RlbXV4LmMKLUBAIC0xNzY5LDYgKzE3NjksMTkgQEAgZ3N0X3RhZ19kZW11eF9wYWRfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQorQEAgLTE3NTksNiArMTc1OSwxOSBAQCBnc3RfdGFnX2RlbXV4X3BhZF9xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdFF1ZXJ5ICogcXVlcnkpCiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICB9CkBAIC0zOSw2ICs0MCwzIEBACiAgICAgIGRlZmF1bHQ6CiAgICAgICAgcmVzID0gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0IChwYWQsIHBhcmVudCwgcXVlcnkpOwogICAgICAgIGJyZWFrOwotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhN2Y2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOTg2NmY1MWU1ZTA5MTNmMWU0NTNlYjU3NDYxOGJmNzQzMmYzOGNiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIEFwciAyMDE4IDEwOjQ2OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCAtbHZjaG9zdGlmIHRvIGxpbmsgd2hlbiB1c2luZyAtbEVHTCBvbiBycGkKKworVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIGxpYkVHTCBmcm9tIHVzZXJsYW5kIHVzZXMgc3lib2xzCitmcm9tIHRoaXMgbGlicmFyeS4KKworbGliL2xpYkVHTC5zby4xLjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisgIDE1NTI6IDAwMDAwMDAwICAgICAwIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgIFVORCB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorCitUaGVzZSBzeW1ib2xzIGFyZSBwcm92aWRlZCBieSBsaWJ2Y2hvc3RpZiBhcyBzZWVuIGJlbG93CisKK2xpYi9saWJ2Y2hvc3RpZi5zbworICAgMjUyOiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKyAgIDgwOTogMDAwMGIxNjEgICAxOTIgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgICA5IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisKK1dpdGggdGhpcyBleHBsaWNpdCBsaW5rLCBwbHVnaW5zIGZhaWwgZHVyaW5nIHJ1bnRpbWUKKworKGdzdC1wbHVnaW4tc2Nhbm5lcjo1NzEpOiBHU3RyZWFtZXItV0FSTklORyAqKjogRmFpbGVkIHRvIGxvYWQgcGx1Z2luICcvdXNyL2xpYi9nc3RyZWFtZXItMS4wL2xpYmdzdG9teC5zbyc6IEVycm9yIHJlbG9jYXRpbmcgL3Vzci9saWIvbGliZ3N0Z2wtMS4wLnNvLjA6IHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkOiBzeW1ib2wgbm90IGZvdW5kCisoZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b3BlbmdsLnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIG00L2dzdC1nbC5tNCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL200L2dzdC1nbC5tNCBiL200L2dzdC1nbC5tNAoraW5kZXggMWU5NzI0MC4uYWI3Nzc0YyAxMDA2NDQKKy0tLSBhL200L2dzdC1nbC5tNAorKysrIGIvbTQvZ3N0LWdsLm00CitAQCAtMjMxLDcgKzIzMSw3IEBAIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0w9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfR0xFUzI9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMX1JQST15ZXMKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y29zIC1sdmNoaXFfYXJtIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjaG9zdGlmIC1sdmNvcyAtbHZjaGlxX2FybSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0NGTEFHUz0iIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX0VHTF9SUEksIFsxXSwgW1VzZSBSUGkgcGxhdGZvcm1dKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbWFrZS1naW9fdW5peF8yXzAtZGVwZW5kZW5jeS1jb25maWd1cmFibGUucGF0Y2gKaW5kZXggNDEzZWZmMC4uMjM5NTBiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxMGQyYTk3N2VlMWQ0NjlmMGJmOTA1OWJiMmQwYjU1ZmQyZWVjYmFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZmZhNmUzZDAwZTFkOGEwNjBmM2Y0YzJiYjlhNzI2OTFhZjA1ZDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjAgSmFuIDIwMTYgMTM6MDA6MDAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbWFrZSBnaW9fdW5peF8yXzAgZGVwZW5kZW5jeSBjb25maWd1cmFibGUKQEAgLTE3LDE2ICsxNywxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWM1MmFlYi4uMjZjYWNkNiAxMDA2NDQKK2luZGV4IDEyODA3YmMuLjM1YTBiZjMgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTc1Miw5ICs3NTIsMTYgQEAgQUNfU1VCU1QoRlQyX0NGTEFHUykKLSBmaSBkbmwgb2YgRVhUIHBsdWdpbnMKK0BAIC04MDYsOSArODA2LDE2IEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JEhBVkVfUE5HIiA9ICJ4eWVzIikKKyBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkSEFWRV9KUEVHIiA9ICJ4eWVzIikKICAKICBkbmwgKioqIGdpby11bml4LTIuMCBmb3IgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3RjcC5jICoqKgogK0FDX0FSR19FTkFCTEUoW2dpb191bml4XzJfMF0sCkBAIC00Miw2ICs0MywzIEBACiAgQU1fQ09ORElUSU9OQUwoVVNFX0dJT19VTklYXzJfMCwgdGVzdCAieCRIQVZFX0dJT19VTklYXzJfMCIgPSAieHllcyIpCiAgCiAgZG5sICoqKiBmaW5hbGl6ZSBDRkxBR1MsIExERkxBR1MsIExJQlMKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ4OTViYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzU0Y2U5MzQ1NzI3MTc1ZmY2NmQxN2I2N2ZmNTFmNTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCi0gICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMzViMDQwNzFmNjliOGFiNjlhN2YzYTQ5N2ZmMDEzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzMwNmIwM2RmMDIxMmYxYjg5MDM3ODRlMjliYjM0OTMzMTliYTE5ZWJlYmYxM2IwYzU2YTE3ODcwMjkyMjgyIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNlYTc4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNC4yLmJiCkBAIC0wLDAgKzEsNzYgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM1NGNlOTM0NTcyNzE3NWZmNjZkMTdiNjdmZjUxZjU4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IgorCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTAtZ2wtQWRkLXN3aXRjaC1mb3ItZXhwbGljaXRlbHktZW5hYmxpbmctZGlzYWJsaW5nLUdCTS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMS1nbC1BZGQtc3dpdGNoZXMtZm9yLWV4cGxpY2l0ZWx5LWVuYWJsaW5nLWRpc2FibGluZy1QLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2ggXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhiYzc5MGQ2MjMzNTBjZDhlYWM2OGQzYTEzZDc5ZjdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0YjdlODBiYTg2OWY1OTkzMDc0NDliMTdjOWUwMGI1ZDFlOTRkM2JhMWQ4YTFhMzg2Yjg3NzBiMmVmMDFjN2MiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9IgorCitERVBFTkRTICs9ICJpc28tY29kZXMgdXRpbC1saW51eCIKKworaW5oZXJpdCBnZXR0ZXh0CisKK1BBQ0tBR0VTX0RZTkFNSUMgPSsgIl5saWJnc3QuKiIKKworIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCisjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAorUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAorICAgIGdpby11bml4LTIuMCBqcGVnIG9nZyBwYW5nbyBwbmcgdGhlb3JhIHZvcmJpcyB6bGliIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKKyIKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgorWDExRU5BQkxFT1BUUyA9ICItLWVuYWJsZS14IC0tZW5hYmxlLXh2aWRlbyAtLWVuYWJsZS14c2htIgorWDExRElTQUJMRU9QVFMgPSAiLS1kaXNhYmxlLXggLS1kaXNhYmxlLXh2aWRlbyAtLWRpc2FibGUteHNobSIKKworUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICAgID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLS1lbmFibGUtY2RwYXJhbm9pYSwtLWRpc2FibGUtY2RwYXJhbm9pYSxjZHBhcmFub2lhIgorUEFDS0FHRUNPTkZJR1tlZ2xdICAgICAgICAgID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1tnYm1dICAgICAgICAgID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2JtIGxpYmd1ZGV2IGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZ2lvLXVuaXgtMi4wXSA9ICItLWVuYWJsZS1naW9fdW5peF8yXzAsLS1kaXNhYmxlLWdpb191bml4XzJfMCxnbGliLTIuMCIKK1BBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICA9ICItLWVuYWJsZS1nbGVzMiwtLWRpc2FibGUtZ2xlczIsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbaXZvcmJpc10gICAgICA9ICItLWVuYWJsZS1pdm9yYmlzLC0tZGlzYWJsZS1pdm9yYmlzLHRyZW1vciIKK1BBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCitQQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICAgID0gIi0tZW5hYmxlLW9wZW5nbCwtLWRpc2FibGUtb3BlbmdsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgorUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKK1BBQ0tBR0VDT05GSUdbcGFuZ29dICAgICAgICA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCitQQUNLQUdFQ09ORklHW3BuZ10gICAgICAgICAgPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi0tZW5hYmxlLXRoZW9yYSwtLWRpc2FibGUtdGhlb3JhLGxpYnRoZW9yYSIKK1BBQ0tBR0VDT05GSUdbdmlzdWFsXSAgICAgICA9ICItLWVuYWJsZS1saWJ2aXN1YWwsLS1kaXNhYmxlLWxpYnZpc3VhbCxsaWJ2aXN1YWwiCitQQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIgorUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICAgID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vaW5jbHVkZS9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliZ3N0dGFnLTEuMCArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYXNlLzEuMC9saWNlbnNlLXRyYW5zbGF0aW9ucy5kaWN0IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC90YWcvLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvdmlkZW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvYXVkaW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvcnRwLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvLmxpYnMiCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGMzZDYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2FwIHpsaWIgYnppcDIiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCi0gICAgY2Fpcm8gZmxhYyBnZGstcGl4YnVmIGd1ZGV2IGpwZWcgbGlicG5nIHNvdXAgc3BlZXggdGFnbGliIHY0bDIgXAotIgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCi0KLVBBQ0tBR0VDT05GSUdbY2Fpcm9dICAgICAgPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIgotUEFDS0FHRUNPTkZJR1tkdjEzOTRdICAgICA9ICItLWVuYWJsZS1kdjEzOTQsLS1kaXNhYmxlLWR2MTM5NCxsaWJpZWM2MTg4MyBsaWJhdmMxMzk0IGxpYnJhdzEzOTQiCi1QQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS1lbmFibGUtZ2RrX3BpeGJ1ZiwtLWRpc2FibGUtZ2RrX3BpeGJ1ZixnZGstcGl4YnVmIgotUEFDS0FHRUNPTkZJR1tndWRldl0gICAgICA9ICItLXdpdGgtZ3VkZXYsLS13aXRob3V0LWd1ZGV2LGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLS1lbmFibGUtbGlicG5nLC0tZGlzYWJsZS1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tsaWJ2NGwyXSAgICA9ICItLXdpdGgtbGlidjRsMiwtLXdpdGhvdXQtbGlidjRsMix2NGwtdXRpbHMiCi1QQUNLQUdFQ09ORklHW3B1bHNlYXVkaW9dID0gIi0tZW5hYmxlLXB1bHNlLC0tZGlzYWJsZS1wdWxzZSxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzb3VwXSAgICAgICA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1tzcGVleF0gICAgICA9ICItLWVuYWJsZS1zcGVleCwtLWRpc2FibGUtc3BlZXgsc3BlZXgiCi1QQUNLQUdFQ09ORklHW3RhZ2xpYl0gICAgID0gIi0tZW5hYmxlLXRhZ2xpYiwtLWRpc2FibGUtdGFnbGliLHRhZ2xpYiIKLVBBQ0tBR0VDT05GSUdbdjRsMl0gICAgICAgPSAiLS1lbmFibGUtZ3N0X3Y0bDIgLS1lbmFibGUtdjRsMi1wcm9iZSwtLWRpc2FibGUtZ3N0X3Y0bDIiCi1QQUNLQUdFQ09ORklHW3ZweF0gICAgICAgID0gIi0tZW5hYmxlLXZweCwtLWRpc2FibGUtdnB4LGxpYnZweCIKLVBBQ0tBR0VDT05GSUdbd2F2cGFja10gICAgPSAiLS1lbmFibGUtd2F2cGFjaywtLWRpc2FibGUtd2F2cGFjayx3YXZwYWNrIgotUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICA9ICItLWVuYWJsZS14LC0tZGlzYWJsZS14LCR7WDExREVQRU5EU30iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWVuYWJsZS1iejIgXAotICAgIC0tZW5hYmxlLW9zcyBcCi0gICAgLS1lbmFibGUtemxpYiBcCi0gICAgLS1kaXNhYmxlLWFhbGliIFwKLSAgICAtLWRpc2FibGUtYWFsaWJ0ZXN0IFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1saWJjYWNhIFwKLSAgICAtLWRpc2FibGUtbGliZHYgXAotICAgIC0tZGlzYWJsZS1vc3M0IFwKLSAgICAtLWRpc2FibGUtb3N4X2F1ZGlvIFwKLSAgICAtLWRpc2FibGUtb3N4X3ZpZGVvIFwKLSAgICAtLWRpc2FibGUtc2hvdXQyIFwKLSAgICAtLWRpc2FibGUtc3VuYXVkaW8gXAotICAgIC0tZGlzYWJsZS13YXZlZm9ybSBcCi0iCi0KLUZJTEVTXyR7UE59LWVxdWFsaXplciArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvKi5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDYwOTY0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWwtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZGY0NzkxYTJiNzg4ZWM2YTE0OWI4MWZmNDAzMjAzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NDlmNDliZWM2MDg5MmQ0N2VlNjczMWI5MjI2Njk3NGM3MjM1NTRkYTFjNjY0OWYyMTI5NjA5NzcxNWViOTU3IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKLQotUlBST1ZJREVTXyR7UE59LXB1bHNlYXVkaW8gKz0gIiR7UE59LXB1bHNlIgotUlBST1ZJREVTXyR7UE59LXNvdXAgKz0gIiR7UE59LXNvdXBodHRwc3JjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDM1Y2MwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE0LjIuYmIKQEAgLTAsMCArMSw3OSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbC1mb3ItZ3N0X3N0cnVjdHVyZV9nZXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjgzYjI4MjhlMzFjZTViNGE1YzAzYzcxZTcwN2FlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDU3NWUyODExODYwYmZmZjU5Yjg2NWI4ZDEyNTE1Mzg1OWEwMWYwNjE1ZmE0MWUyNzliNjRkODhkMjVjYWFkIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKKworREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBsaWJjYXAiCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCisKK2luaGVyaXQgZ2V0dGV4dAorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgYnoyIGNhaXJvIGZsYWMgZ2RrLXBpeGJ1ZiBndWRldiBqcGVnIGxhbWUgbGlicG5nIG1wZzEyMyBzb3VwIHNwZWV4IHRhZ2xpYiB2NGwyIHpsaWIgXAorIgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCisKK1BBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgPSAiLS1lbmFibGUtYnoyLC0tZGlzYWJsZS1iejIsYnppcDIiCitQQUNLQUdFQ09ORklHW2NhaXJvXSAgICAgID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyIKK1BBQ0tBR0VDT05GSUdbZHYxMzk0XSAgICAgPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgorUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItLWVuYWJsZS1mbGFjLC0tZGlzYWJsZS1mbGFjLGZsYWMiCitQQUNLQUdFQ09ORklHW2dkay1waXhidWZdID0gIi0tZW5hYmxlLWdka19waXhidWYsLS1kaXNhYmxlLWdka19waXhidWYsZ2RrLXBpeGJ1ZiIKK1BBQ0tBR0VDT05GSUdbZ3RrXSAgICAgICAgPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKK1BBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLS13aXRoLWd1ZGV2LC0td2l0aG91dC1ndWRldixsaWJndWRldiIKK1BBQ0tBR0VDT05GSUdbamFja10gICAgICAgPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCitQQUNLQUdFQ09ORklHW2xhbWVdICAgICAgID0gIi0tZW5hYmxlLWxhbWUsLS1kaXNhYmxlLWxhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbbGlicG5nXSAgICAgPSAiLS1lbmFibGUtbGlicG5nLC0tZGlzYWJsZS1saWJwbmcsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tsaWJ2NGwyXSAgICA9ICItLXdpdGgtbGlidjRsMiwtLXdpdGhvdXQtbGlidjRsMix2NGwtdXRpbHMiCitQQUNLQUdFQ09ORklHW21wZzEyM10gICAgID0gIi0tZW5hYmxlLW1wZzEyMywtLWRpc2FibGUtbXBnMTIzLG1wZzEyMyIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2UsLS1kaXNhYmxlLXB1bHNlLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi0tZW5hYmxlLXNvdXAsLS1kaXNhYmxlLXNvdXAsbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3NwZWV4XSAgICAgID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbdGFnbGliXSAgICAgPSAiLS1lbmFibGUtdGFnbGliLC0tZGlzYWJsZS10YWdsaWIsdGFnbGliIgorUEFDS0FHRUNPTkZJR1t2NGwyXSAgICAgICA9ICItLWVuYWJsZS1nc3RfdjRsMiAtLWVuYWJsZS12NGwyLXByb2JlLC0tZGlzYWJsZS1nc3RfdjRsMiIKK1BBQ0tBR0VDT05GSUdbdnB4XSAgICAgICAgPSAiLS1lbmFibGUtdnB4LC0tZGlzYWJsZS12cHgsbGlidnB4IgorUEFDS0FHRUNPTkZJR1t3YXZwYWNrXSAgICA9ICItLWVuYWJsZS13YXZwYWNrLC0tZGlzYWJsZS13YXZwYWNrLHdhdnBhY2siCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXgsLS1kaXNhYmxlLXgsJHtYMTFERVBFTkRTfSIKK1BBQ0tBR0VDT05GSUdbemxpYl0gICAgICAgPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorCisjIHF0NSBzdXBwb3J0IGlzIGRpc2FibGVkLCBiZWNhdXNlIGl0IGlzIG5vdCBwcmVzZW50IGluIE9FIGNvcmUsIGFuZCByZXF1aXJlcyBtb3JlIHdvcmsgdGhhbgorIyBqdXN0IGFkZGluZyBhIHBhY2thZ2Vjb25maWcgKGl0IHJlcXVpcmVzIGFjY2VzcyB0byBtb2MsIHVpYywgcmNjLCBhbmQgcW1ha2UgcGF0aHMpLgorIyBUaGlzIGlzIGJldHRlciBkb25lIGluIGEgc2VwYXJhdGUgcXQ1IGxheWVyICh3aGljaCB0aGVuIHNob3VsZCBhZGQgYSAicXQ1IiBwYWNrYWdlY29uZmlnCisjIGluIGEgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBiYmFwcGVuZCkuCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWVuYWJsZS1vc3MgXAorICAgIC0tZGlzYWJsZS1hYWxpYiBcCisgICAgLS1kaXNhYmxlLWFhbGlidGVzdCBcCisgICAgLS1kaXNhYmxlLWRpcmVjdHNvdW5kIFwKKyAgICAtLWRpc2FibGUtbGliY2FjYSBcCisgICAgLS1kaXNhYmxlLWxpYmR2IFwKKyAgICAtLWRpc2FibGUtb3NzNCBcCisgICAgLS1kaXNhYmxlLW9zeF9hdWRpbyBcCisgICAgLS1kaXNhYmxlLW9zeF92aWRlbyBcCisgICAgLS1kaXNhYmxlLXF0IFwKKyAgICAtLWRpc2FibGUtc2hvdXQyIFwKKyAgICAtLWRpc2FibGUtdHdvbGFtZSBcCisgICAgLS1kaXNhYmxlLXdhdmVmb3JtIFwKKyIKKworRklMRVNfJHtQTn0tZXF1YWxpemVyICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy8qLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwYWE5NjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIExHUEx2MisiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliaWQzdGFnIgotCi1pbmhlcml0IGdldHRleHQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgYTUyZGVjIGxhbWUgbXBnMTIzIG1wZWcyZGVjIFwKLSIKLQotUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLS1lbmFibGUtYTUyZGVjLC0tZGlzYWJsZS1hNTJkZWMsbGliYTUyIgotUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLS1lbmFibGUtYW1ybmIsLS1kaXNhYmxlLWFtcm5iLG9wZW5jb3JlLWFtciIKLVBBQ0tBR0VDT05GSUdbYW1yd2JdICAgID0gIi0tZW5hYmxlLWFtcndiLC0tZGlzYWJsZS1hbXJ3YixvcGVuY29yZS1hbXIiCi1QQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCi1QQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCi1QQUNLQUdFQ09ORklHW2xhbWVdICAgICA9ICItLWVuYWJsZS1sYW1lLC0tZGlzYWJsZS1sYW1lLGxhbWUiCi1QQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCi1QQUNLQUdFQ09ORklHW21wZzEyM10gICA9ICItLWVuYWJsZS1tcGcxMjMsLS1kaXNhYmxlLW1wZzEyMyxtcGcxMjMiCi1QQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtc2lkcGxheSBcCi0gICAgLS1kaXNhYmxlLXR3b2xhbWUgXAotIgotCi1GSUxFU18ke1BOfS1hbXJuYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0QW1ybmJFbmMucHJzIgotRklMRVNfJHtQTn0teDI2NCArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0WDI2NEVuYy5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODMzMzUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtdWdseS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZTJiODM2ZmIyNzQ3ZjZhZTNhMWE2ZjMzYTlkOGM5NTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWMxNjViOGQ4ODhlZDM1MGFjZDhlNmFjOWY2ZmUwNjUwOGU2ZmNjMGEzYWZjNmNjYzlmYmViMzBkZjliZTUyMiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxOTcyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTQuMi5iYgpAQCAtMCwwICsxLDQwIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jaGVjay9lbGVtZW50cy94aW5nbXV4LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NGM3NzFiOGFmMTg4NzI0ODU1Y2I5OWNhZGQzOTAwNjgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgTEdQTHYyKyIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWEwYTgwMGM2NDIxYzNjM2NkYmVkM2QwNDBiOGZmZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVlMDk3ZDlkOTM5MjFmZGNmN2FiYjBmZjkyZDIzYjIxZGQ5MDk4ZTYzMmYxYmE0MzM2MDNiM2JkMWNmM2Q2OSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliaWQzdGFnIgorCitpbmhlcml0IGdldHRleHQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgYTUyZGVjIG1wZWcyZGVjIFwKKyIKKworUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLS1lbmFibGUtYTUyZGVjLC0tZGlzYWJsZS1hNTJkZWMsbGliYTUyIgorUEFDS0FHRUNPTkZJR1thbXJuYl0gICAgPSAiLS1lbmFibGUtYW1ybmIsLS1kaXNhYmxlLWFtcm5iLG9wZW5jb3JlLWFtciIKK1BBQ0tBR0VDT05GSUdbYW1yd2JdICAgID0gIi0tZW5hYmxlLWFtcndiLC0tZGlzYWJsZS1hbXJ3YixvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItLWVuYWJsZS1jZGlvLC0tZGlzYWJsZS1jZGlvLGxpYmNkaW8iCitQQUNLQUdFQ09ORklHW2R2ZHJlYWRdICA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLGxpYmR2ZHJlYWQiCitQQUNLQUdFQ09ORklHW21wZWcyZGVjXSA9ICItLWVuYWJsZS1tcGVnMmRlYywtLWRpc2FibGUtbXBlZzJkZWMsbXBlZzJkZWMiCitQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItLWVuYWJsZS14MjY0LC0tZGlzYWJsZS14MjY0LHgyNjQiCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAtLWRpc2FibGUtc2lkcGxheSBcCisiCisKK0ZJTEVTXyR7UE59LWFtcm5iICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RBbXJuYkVuYy5wcnMiCitGSUxFU18ke1BOfS14MjY0ICs9ICIke2RhdGFkaXJ9L2dzdHJlYW1lci0xLjAvcHJlc2V0cy9Hc3RYMjY0RW5jLnBycyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MWYwYmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotCi1ERVBFTkRTID0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKLVJERVBFTkRTXyR7UE59ICs9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCi0KLVBOUkVBTCA9ICJnc3QtcHl0aG9uIgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBnc3RweXRob25wbHVnaW4gaGFyZGNvZGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGlicHl0aG9uIGZyb20gdGhlIGJ1aWxkCi0gICAgIyB3b3Jrc3BhY2UgYW5kIHRoZW4gZmFpbHMgYXQgcnVudGltZS4gV2UgY2FuIG92ZXJyaWRlIGl0IHVzaW5nCi0gICAgIyAtLXdpdGgtbGlicHl0aG9uLWRpcj0ke2xpYmRpcn0sIGJ1dCBpdCBzdGlsbCBmYWlscyBiZWNhdXNlIGl0IGxvb2tzIGZvciBhCi0gICAgIyBzeW1saW5rZWQgbGlicmFyeSBlbmRpbmcgaW4gLnNvIGluc3RlYWQgb2YgdGhlIGFjdHVhbGx5IGxpYnJhcnkgd2l0aAotICAgICMgTElCTkFNRS5zby5NQUpPUi5NSU5PUi4gQWx0aG91Z2ggd2UgY291bGQgcGF0Y2ggdGhlIGNvZGUgdG8gdXNlIHRoZSBwYXRoCi0gICAgIyB3ZSB3YW50LCBpdCB3aWxsIGJyZWFrIGFnYWluIGlmIHRoZSBsaWJyYXJ5IHZlcnNpb24gZXZlciBjaGFuZ2VzLiBXZSBuZWVkCi0gICAgIyB0byB0aGluayBhYm91dCB0aGUgYmVzdCB3YXkgb2YgaGFuZGxpbmcgdGhpcyBhbmQgcG9zc2libHkgY29uc3VsdAotICAgICMgdXBzdHJlYW0uCi0gICAgIwotICAgICMgTm90ZSB0aGF0IHRoaXMgcGFydGljdWxhciBmaW5kIGxpbmUgaXMgdGFrZW4gZnJvbSB0aGUgRGViaWFuIHBhY2thZ2luZyBmb3IKLSAgICAjIGdzdC1weXRob24xLjAuCi0gICAgZmluZCAiJHtEfSIgXAotICAgICAgICAtbmFtZSAnKi5weWMnIC1vIFwKLSAgICAgICAgLW5hbWUgJyoucHlvJyAtbyBcCi0gICAgICAgIC1uYW1lICcqLmxhJyAtbyBcCi0gICAgICAgIC1uYW1lICdsaWJnc3RweXRob25wbHVnaW4qJyBcCi0gICAgICAgIC1kZWxldGUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZWMzNTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjFmZDA0NmVhNzgxNzM2YTc5NGY5ZjU1MmQ3N2M1MGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBjZTZhZjY2MTVjOWE0NDBjMTkyOGMzMTI1OWE3ODIyNjUxNmQwNmJmMWE2NWY4ODhjNmQxMDk4MjZmYTNlYSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzM0ZGVhZTRlMzk1Y2EwN2U3MjVhYjAwNzZhNWY3NDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YzAwNDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTQuMi5iYgpAQCAtMCwwICsxLDM5IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNWIwYWYxYmQ0OTBkNzlhN2Q0MzViMmJlNDc1NjhmOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM0MGJlNWFiNGYxYTQzM2ZmM2YwYWYyYjNkMmQ3OWEzNjMwMDkwMjBjNDFlYzEwZjk3NDdiYTY0MjAwY2IyMiIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCitSREVQRU5EU18ke1BOfSArPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorCitQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgZ3N0cHl0aG9ucGx1Z2luIGhhcmRjb2RlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxpYnB5dGhvbiBmcm9tIHRoZSBidWlsZAorICAgICMgd29ya3NwYWNlIGFuZCB0aGVuIGZhaWxzIGF0IHJ1bnRpbWUuIFdlIGNhbiBvdmVycmlkZSBpdCB1c2luZworICAgICMgLS13aXRoLWxpYnB5dGhvbi1kaXI9JHtsaWJkaXJ9LCBidXQgaXQgc3RpbGwgZmFpbHMgYmVjYXVzZSBpdCBsb29rcyBmb3IgYQorICAgICMgc3ltbGlua2VkIGxpYnJhcnkgZW5kaW5nIGluIC5zbyBpbnN0ZWFkIG9mIHRoZSBhY3R1YWxseSBsaWJyYXJ5IHdpdGgKKyAgICAjIExJQk5BTUUuc28uTUFKT1IuTUlOT1IuIEFsdGhvdWdoIHdlIGNvdWxkIHBhdGNoIHRoZSBjb2RlIHRvIHVzZSB0aGUgcGF0aAorICAgICMgd2Ugd2FudCwgaXQgd2lsbCBicmVhayBhZ2FpbiBpZiB0aGUgbGlicmFyeSB2ZXJzaW9uIGV2ZXIgY2hhbmdlcy4gV2UgbmVlZAorICAgICMgdG8gdGhpbmsgYWJvdXQgdGhlIGJlc3Qgd2F5IG9mIGhhbmRsaW5nIHRoaXMgYW5kIHBvc3NpYmx5IGNvbnN1bHQKKyAgICAjIHVwc3RyZWFtLgorICAgICMKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3NmY5Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGxpYnJhcnkgb24gdG9wIG9mIEdTdHJlYW1lciBmb3IgYnVpbGRpbmcgYW4gUlRTUCBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1ydHNwLXNlcnZlci8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MiIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLQotUE5SRUFMID0gImdzdC1ydHNwLXNlcnZlciIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtQTlJFQUx9LyR7UE5SRUFMfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi11c2luZy1pbnRyb3NwZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCIKLQotUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJsZS10ZXN0cyIKLQotIyBTdGFydGluZyB3aXRoIDEuOC4wIGdzdC1ydHNwLXNlcnZlciBpbmNsdWRlcyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2lucyBhcyB3ZWxsCi1MSUJWID0gIjEuMCIKLXJlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKLQotZGVsZXRlX3BrZ19tNF9maWxlKCkgewotICAgICAgICAjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgotICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCi19Ci0KLWRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTY4ZGNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWQ3MGE5NzM1ZjU4ZGEyMWQwZjVjZWRmNDhjY2FkZDMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY2MDExMmViZDU5ODM4ZjEwNTQ3OTZiMzgxMDlkY2JlMzJmMGEwNDBlM2EyNTJhNjhhODEwNTVhZWFhNTZhOSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzY2ZTI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyXzEuMTQuMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBvbiB0b3Agb2YgR1N0cmVhbWVyIGZvciBidWlsZGluZyBhbiBSVFNQIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXJ0c3Atc2VydmVyLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK1BOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tdXNpbmctaW50cm9zcGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjZiNTlkZDJlYThiMWE0YTI1ZTlmN2UwZjU3YTUwZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNzM4Nzc1NWNmNmFjNWYzMzRkNDYxMGYxZjVhYTdkYTRmZjM5NmE0ODdkZDViNzg5YmI3MDdmMTYwMjIyYzk4IgorCitTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgorCisjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKK0xJQlYgPSAiMS4wIgorcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYworCitkZWxldGVfcGtnX200X2ZpbGUoKSB7CisgICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCisgICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKK30KKworZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmZjYzY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKLURFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKLWJhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAotYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCi0KLVJFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCi1GSUxFU1BBVEggPSAiJHtAYmFzZV9zZXRfZmlsZXNwYXRoKFsiJHtGSUxFX0RJUk5BTUV9LyR7UkVBTFBOfSIsICIke0ZJTEVfRElSTkFNRX0vJHtSRUFMUE59Il0sIGQpfSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAibGlidmEiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1JFQUxQTn0vJHtSRUFMUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCi0KLSMgT3BlbkdMIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcwotIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciBnbHgsIGVnbCwgb3Igbm8gR0wuIEJ5IGRlZmF1bHQsCi0jIHRyeSBkZXRlY3RpbmcgWDExIGZpcnN0LCBhbmQgaWYgZm91bmQgKHdpdGggT3BlbkdMKSwgdXNlIEdMWCwKLSMgb3RoZXJ3aXNlIHRyeSB0byBjaGVjayBpZiBFR0wgY2FuIGJlIHVzZWQuCi1QQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnZ2x4JywgXAotICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICAgICAnb3BlbmdsJywgJ2VnbCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIGQpLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJkcm0gXAotICAgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sdWRldiBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCi1QQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhyYW5kciBsaWJ4cmVuZGVyIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLmxhICR7bGliZGlyfS9nc3RyZWFtZXItKi8qLmEiCi1GSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkvMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3Yjg5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkvMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNTQwM2E4OWU2YTdhYzcyYTIzZTAyMjEwNzVjMGMxOWI1Zjg1YTAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CitEYXRlOiBXZWQsIDEzIEp1biAyMDE4IDA5OjA5OjI1IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGdzdC92YWFwaS9NYWtlZmlsZS5hbTogQWRkIEVHTF9DRkxBR1MgdG8gbGliZ3N0dmFhcGkgQ0ZMQUdTCitPcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorCitXZSBuZWVkIHRoaXMgdG8gcGFzcyBjb3JyZWN0bHkgRUdMIENGTEFHUyB3aGVuIGJ1aWxkaW5nIHdpdGggRUdMIHN1cHBvcnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgorLS0tCisgZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIGIvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCitpbmRleCBiMjk5YWM5OC4uZDZjYWI3MWYgMTAwNjQ0CistLS0gYS9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQorQEAgLTI0LDYgKzI0LDEwIEBAIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1nbHgubGEKKyBlbmRpZgorIAorIGlmIFVTRV9FR0wKKytsaWJnc3R2YWFwaV9DRkxBR1MgKz0gXAorKwkkKEVHTF9DRkxBR1MpCVwKKysJJChOVUxMKQorKworIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1lZ2wubGEKKyBlbmRpZgorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4NjFmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkvMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAwYzI4Y2Y3YmZhOTBmODk0NzgzMzcyMmNkZGYyM2Q1MTM0OTBjNmMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMjggTm92IDIwMTggMTU6MDg6NDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gdmFhcHNpbms6IGRvd25ncmFkZSB0byBtYXJnaW5hbAorCitVc2luZyB2YWFwaXNpbmsgd2l0aCBkZWZhdWx0IHBva3kgY29uZmlndXJhdGlvbiByZXN1bHRzIGluIGFuCit1bnJlc3BvbnNpdmUgZGlzcGxheSBhcyBvZiB0b2RheSBiZWNhdXNlIERSSTIgcmVuZGVyaW5nIGlzIGN1cnJlbnRseSBicm9rZW4KK2luIG5vbiBjb21wb3NpdGVkIGVudmlyb25tZW50cyBbMV0gYW5kIGxpYnZhIGRvZXNuJ3Qgc3VwcG9ydCBEUkkzIFsyXS4KKworRG93bmdyYWRlIHZhYXBpc2luayB0byBtYXJnaW5hbCBmb3Igbm93IHNvIHBsYXliaW4gKGFuZCBpbiB0dXJuIGdzdC1wbGF5CithbmQgZ3RrLXBsYXkgZXhhbXBsZXMpIHVzZSB4dmltYWdlc2luayBvciBvdGhlcnMgb3V0IG9mIGJveC4KKworWzFdIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvaXNzdWVzLzEzCitbMl0gaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2xpYnZhL2lzc3Vlcy8xMjIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBnc3QvdmFhcGkvZ3N0dmFhcGkuYyB8IDYgKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL2dzdHZhYXBpLmMgYi9nc3QvdmFhcGkvZ3N0dmFhcGkuYworaW5kZXggOWE4MjQ1NC4uNGQ5NGYyYiAxMDA2NDQKKy0tLSBhL2dzdC92YWFwaS9nc3R2YWFwaS5jCisrKysgYi9nc3QvdmFhcGkvZ3N0dmFhcGkuYworQEAgLTIxMCw3ICsyMTAsNiBAQCBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQorIHsKKyAgIEdzdFZhYXBpRGlzcGxheSAqZGlzcGxheTsKKyAgIEdBcnJheSAqZGVjb2RlcnM7CistICBndWludCByYW5rOworIAorICAgcGx1Z2luX2FkZF9kZXBlbmRlbmNpZXMgKHBsdWdpbik7CisgCitAQCAtMjM1LDEwICsyMzQsNyBAQCBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQorICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInZhYXBpZGVjb2RlYmluIiwKKyAgICAgICBHU1RfUkFOS19QUklNQVJZICsgMiwgR1NUX1RZUEVfVkFBUElfREVDT0RFX0JJTik7CisgCistICByYW5rID0gR1NUX1JBTktfUFJJTUFSWTsKKy0gIGlmIChnX2dldGVudiAoIldBWUxBTkRfRElTUExBWSIpKQorLSAgICByYW5rID0gR1NUX1JBTktfTUFSR0lOQUw7CistICBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAidmFhcGlzaW5rIiwgcmFuaywgR1NUX1RZUEVfVkFBUElTSU5LKTsKKysgIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ2YWFwaXNpbmsiLCBHU1RfUkFOS19NQVJHSU5BTCwgR1NUX1RZUEVfVkFBUElTSU5LKTsKKyAKKyAjaWYgVVNFX0VOQ09ERVJTCisgICBnc3RfdmFhcGllbmNvZGVfcmVnaXN0ZXIgKHBsdWdpbiwgZGlzcGxheSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTIuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRmMjMwMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC12YWFwaS5pbmMKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMTQ5OTgyY2RiMzQ4MTM5YmNhOTQ2YmI2Mzc2NmY0YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzJkNzcyNDJlMWYzMGM0ZDEzOTQ2MzZjYWU5ZjY4NzcyMjhhMDE3OTYwZmNhOTY4ODFlMDA4MGQ4YjZlOWM5IgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVkMmZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTQuMi5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKK0RFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKK2Jhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAorYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCisKK1JFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3QtdmFhcGktTWFrZWZpbGUuYW0tQWRkLUVHTF9DRkxBR1MtdG8tbGliZ3N0dmFhcGktLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdmFhcHNpbmstZG93bmdyYWRlLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTJlZTljMTZkZmEwYmIxODA4Yzc2NjgzZTFjOWEzMjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2YxMDY0ZTI3ZjVhYmQzYTQyZWY2NmI0MjVmMWEyYjlkYmFlNzc0OGM4MWJkOWQwOTBjZTUyYTFhYWYzMGQ4YSIKKworUyA9ICIke1dPUktESVJ9LyR7UkVBTFBOfS0ke1BWfSIKK0RFUEVORFMgPSAibGlidmEgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCisKKyMgT3BlbkdMIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciBnbHgsIGVnbCwgb3Igbm8gR0wuIEJ5IGRlZmF1bHQsCisjIHRyeSBkZXRlY3RpbmcgWDExIGZpcnN0LCBhbmQgaWYgZm91bmQgKHdpdGggT3BlbkdMKSwgdXNlIEdMWCwKKyMgb3RoZXJ3aXNlIHRyeSB0byBjaGVjayBpZiBFR0wgY2FuIGJlIHVzZWQuCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnZ2x4JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICAgICAnb3BlbmdsJywgJ2VnbCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIGQpLCBkKX0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJkcm0gXAorICAgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19HTH0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorCitQQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sdWRldiBsaWJkcm0iCitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLC0tZGlzYWJsZS1lZ2wsdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2dseF0gPSAiLS1lbmFibGUtZ2x4LC0tZGlzYWJsZS1nbHgsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhyYW5kciBsaWJ4cmVuZGVyIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8uZGVidWciCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLmxhICR7bGliZGlyfS9nc3RyZWFtZXItKi8qLmEiCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmRmMWYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciAxLjAgbXVsdGltZWRpYSBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJHU3RyZWFtZXIgaXMgYSBtdWx0aW1lZGlhIGZyYW1ld29yayBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHZpZGVvIGFuZCBzb3VuZC4gXAotSXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGZvcm1hdHMgaW5jbHVkaW5nIG1wMywgb2dnLCBhdmksIG1wZWcgYW5kIHF1aWNrdGltZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmNhcCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi0KLSMgVGhpcyB3YXkgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgd2lsbCBjb21lIGZpcnN0Ci0jIChpdCBoYXMgYSBjdXN0b20gSU5UUk9TUEVDVElPTl9JTklUIG1hY3JvLCBhbmQgc28gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygb3VyIGNvbW1vbiBpbnRyb3NwZWN0aW9uLm00IGZpbGUpCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCi1QQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8iCi0KLSMgbXVzbCBsaWJjIGdlbmVyYXRlcyB3YXJuaW5ncyBpZiA8c3lzL3BvbGwuaD4gaXMgaW5jbHVkZWQgZGlyZWN0bHkKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfc3lzX3BvbGxfaD1ubyIKLQotUEFDS0FHRVMgKz0gIiR7UE59LWJhc2gtY29tcGxldGlvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hICR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2luY2x1ZGUiCi1GSUxFU18ke1BOfS1iYXNoLWNvbXBsZXRpb24gKz0gIiR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zLyAke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9oZWxwZXJzL2dzdCoiCi0KLVJSRUNPTU1FTkRTXyR7UE59X3FlbXV4ODYgKz0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKLVJSRUNPTU1FTkRTXyR7UE59X3FlbXV4ODYtNjQgKz0gImtlcm5lbC1tb2R1bGUtc25kLWVuczEzNzAga2VybmVsLW1vZHVsZS1zbmQtcmF3bWlkaSIKLQotZGVsZXRlX3BrZ19tNF9maWxlKCkgewotICAgICAgICAjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgotICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCi0gICAgICAgIHJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgotfQotCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJkZWxldGVfcGtnX200X2ZpbGUiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ3N0Ly5saWJzOiR7Qn0vbGlicy9nc3QvYmFzZS8ubGlicyIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWIyMzk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L2dzdC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PWUwNTkxMzg0ODEyMDVlZTJjNmZjMWMwNzljMDE2ZDBkIgotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdHJlYW1lci9nc3RyZWFtZXItJHtQVn0udGFyLnh6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZDI2OGYyZTg5MWNjZTFhYzA4MzJmMWNjNDY3ZDRlYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YTg3MDRhYTRjMmVlYjA0ZGExOTJjNGE5OTQyZjk0Zjg2MGFjMWE1ODVkZTkwZDlmOTE0YmFjMjZhOTcwNjc0IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgotCi1DVkVfUFJPRFVDVCA9ICJnc3RyZWFtZXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTZlNTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTQuMi5iYgpAQCAtMCwwICsxLDkwIEBACitTVU1NQVJZID0gIkdTdHJlYW1lciAxLjAgbXVsdGltZWRpYSBmcmFtZXdvcmsiCitERVNDUklQVElPTiA9ICJHU3RyZWFtZXIgaXMgYSBtdWx0aW1lZGlhIGZyYW1ld29yayBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHZpZGVvIGFuZCBzb3VuZC4gXAorSXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGZvcm1hdHMgaW5jbHVkaW5nIG1wMywgb2dnLCBhdmksIG1wZWcgYW5kIHF1aWNrdGltZS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitMSUNFTlNFID0gIkxHUEx2MisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmNhcCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHB0ZXN0CisKKyMgVGhpcyB3YXkgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgd2lsbCBjb21lIGZpcnN0CisjIChpdCBoYXMgYSBjdXN0b20gSU5UUk9TUEVDVElPTl9JTklUIG1hY3JvLCBhbmQgc28gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygb3VyIGNvbW1vbiBpbnRyb3NwZWN0aW9uLm00IGZpbGUpCithY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIFwKKyAgICBmaWxlOi8vYWRkLWEtdGFyZ2V0LXRvLWNvbXBpbGUtdGVzdHMucGF0Y2ggXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjlmNDE3N2MxNzUyZTQ0Y2JkNzJmNjMxMWVlNjFlMWJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiZDYxMjcyOTlmM2YyOTM3OTA0NmJiZDU4YTUyNmU2MzUzYjU2OWUwZTcyZjdiNGRmMmFlNzBkZjY4ODJlMDkiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWciCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQsIgorUEFDS0FHRUNPTkZJR1tnc3QtdHJhY2VyLWhvb2tzXSA9ICItLWVuYWJsZS1nc3QtdHJhY2VyLWhvb2tzLC0tZGlzYWJsZS1nc3QtdHJhY2VyLWhvb2tzLCIKK1BBQ0tBR0VDT05GSUdbdW53aW5kXSA9ICItLXdpdGgtdW53aW5kLC0td2l0aG91dC11bndpbmQsbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tkd10gPSAiLS13aXRoLWR3LC0td2l0aG91dC1kdyxlbGZ1dGlscyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKKyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl92YWxncmluZF92YWxncmluZF9oPW5vIgorCisjIG11c2wgbGliYyBnZW5lcmF0ZXMgd2FybmluZ3MgaWYgPHN5cy9wb2xsLmg+IGlzIGluY2x1ZGVkIGRpcmVjdGx5CitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX3N5c19wb2xsX2g9bm8iCisKK1BBQ0tBR0VTICs9ICIke1BOfS1iYXNoLWNvbXBsZXRpb24iCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhICR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC9pbmNsdWRlIgorRklMRVNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICIke2RhdGFkaXJ9L2Jhc2gtY29tcGxldGlvbi9jb21wbGV0aW9ucy8gJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vaGVscGVycy9nc3QqIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZGVsZXRlX3BrZ19tNF9maWxlKCkgeworICAgICAgICAjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgorICAgICAgICBybSAiJHtTfS9jb21tb24vbTQvcGtnLm00IiB8fCB0cnVlCisgICAgICAgIHJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgorfQorCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJkZWxldGVfcGtnX200X2ZpbGUiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ3N0Ly5saWJzOiR7Qn0vbGlicy9nc3QvYmFzZS8ubGlicyIKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBidWlsZC1jaGVja3MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSAtQyB0ZXN0cy9jaGVjayBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IGluc3RhbGwtcHRlc3QKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS90ZXN0cy9jaGVjay9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisgICAgICAgIHNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisgICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nIFwKKyAgICAgICAgICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyAtZSAncy9edG9wX2J1aWxkZGlyID0gXCguKlwpL3RvcF9idWlsZGRpciA9IC4vJyBcCisgICAgICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorCitDVkVfUFJPRFVDVCA9ICJnc3RyZWFtZXIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9maWxlcy9DVkUtMjAxOC0xMzc4NS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2ZpbGVzL0NWRS0yMDE4LTEzNzg1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGIxYWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2ZpbGVzL0NWRS0yMDE4LTEzNzg1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSA4YTA1NzY2Y2I3NGFmMDVjMDRjNTNlNmM5ZDYwYzEzZmM0ZDU5YmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ29zbWluIFRydXRhIDxjdHJ1dGFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNyBKdW4gMjAxOCAyMjo1NjoyOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBbbGlicG5nMTZdIEZpeCB0aGUgY2FsY3VsYXRpb24gb2Ygcm93X2ZhY3RvciBpbgotIHBuZ19jaGVja19jaHVua19sZW5ndGgKLQotKEJ1ZyByZXBvcnQgYnkgVGh1YW4gUGhhbSwgU291cmNlRm9yZ2UgaXNzdWUgIzI3OCkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nbGVubnJwL2xpYnBuZy9jb21taXQvOGEwNTc2NmNiNzRhZjA1YzA0YzUzZTZjOWQ2MGMxM2ZjNGQ1OWJmMl0KLVNpZ25lZC1vZmYtYnk6IFNpbmFuIEtheWEgPG9rYXlhQGtlcm5lbC5vcmc+Ci0tLS0KLSBwbmdydXRpbC5jIHwgOSArKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcG5ncnV0aWwuYyBiL3BuZ3J1dGlsLmMKLWluZGV4IDk1NTcxYjUxNy4uNWJhOTk1YWJmIDEwMDY0NAotLS0tIGEvcG5ncnV0aWwuYwotKysrIGIvcG5ncnV0aWwuYwotQEAgLTMxNjcsMTAgKzMxNjcsMTMgQEAgcG5nX2NoZWNrX2NodW5rX2xlbmd0aChwbmdfY29uc3Rfc3RydWN0cnAgcG5nX3B0ciwgY29uc3QgcG5nX3VpbnRfMzIgbGVuZ3RoKQotICAgIHsKLSAgICAgICBwbmdfYWxsb2Nfc2l6ZV90IGlkYXRfbGltaXQgPSBQTkdfVUlOVF8zMV9NQVg7Ci0gICAgICAgc2l6ZV90IHJvd19mYWN0b3IgPQotLSAgICAgICAgIChwbmdfcHRyLT53aWR0aCAqIHBuZ19wdHItPmNoYW5uZWxzICogKHBuZ19wdHItPmJpdF9kZXB0aCA+IDg/IDI6IDEpCi0tICAgICAgICAgICsgMSArIChwbmdfcHRyLT5pbnRlcmxhY2VkPyA2OiAwKSk7Ci0rICAgICAgICAgKHNpemVfdClwbmdfcHRyLT53aWR0aAotKyAgICAgICAgICogKHNpemVfdClwbmdfcHRyLT5jaGFubmVscwotKyAgICAgICAgICogKHBuZ19wdHItPmJpdF9kZXB0aCA+IDg/IDI6IDEpCi0rICAgICAgICAgKyAxCi0rICAgICAgICAgKyAocG5nX3B0ci0+aW50ZXJsYWNlZD8gNjogMCk7Ci0gICAgICAgaWYgKHBuZ19wdHItPmhlaWdodCA+IFBOR19VSU5UXzMyX01BWC9yb3dfZmFjdG9yKQotLSAgICAgICAgIGlkYXRfbGltaXQ9UE5HX1VJTlRfMzFfTUFYOwotKyAgICAgICAgIGlkYXRfbGltaXQgPSBQTkdfVUlOVF8zMV9NQVg7Ci0gICAgICAgZWxzZQotICAgICAgICAgIGlkYXRfbGltaXQgPSBwbmdfcHRyLT5oZWlnaHQgKiByb3dfZmFjdG9yOwotICAgICAgIHJvd19mYWN0b3IgPSByb3dfZmFjdG9yID4gMzI1NjY/IDMyNTY2IDogcm93X2ZhY3RvcjsKLS0tIAotMi4xOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODc3ZDZjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTJkYjcxN2EwNWEyMGUzNmYyZmE2NzMyNjViZDMxNTY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT0zYWM5ZmQyNTBhODc4NmFlNTgxZTM0MjU0YmY3OTQyOSIKLURFUEVORFMgPSAiemxpYiIKLQotTElCViA9ICIxNiIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTM3ODUucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImMwNWI2Y2E3MTkwYTVlMzg3Yjc4NjU3ZGJlNTUzNmIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmMWU5NjBkOTJjZTNiM2FiZDAzZDA2ZGZlYzk2MzdkZmJkMjJmZWJmMTA3YTUzNmI0NGY3YTQ3YzYwNjU5ZjYiCi0KLU1JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyAke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS9vbGRlci1yZWxlYXNlcy8ke1BWfS8iCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vbGlicG5nLm9yZy9wdWIvcG5nL2xpYnBuZy5odG1sIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYnBuZy1jb25maWcgJHtiaW5kaXJ9L2xpYnBuZzE2LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi0jIFdvcmsgYXJvdW5kIG1pc3Npbmcgc3ltYm9scwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1lbmFibGUtYXJtLW5lb249b24iLCAiLS1lbmFibGUtYXJtLW5lb249b2ZmIiAsZCl9IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi0KLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS9wbmctZml4LWl0eHQgJHtiaW5kaXJ9L3BuZ2ZpeCAke2JpbmRpcn0vcG5nY3AiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZTBhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM1LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiUE5HIGltYWdlIGZvcm1hdCBkZWNvZGluZyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJwbmcub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTGlicG5nIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDc5MTM4MWE3NmYxMDZhYzQ2OTlmNjI2MWM2NWVlMjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PTA5MGJhNTc2OTc4MmU4YTE2NjNhNDVmYWIxYzJiMzZjIFwKKyAgICAgICAgICAgICAgICAgICAgIgorREVQRU5EUyA9ICJ6bGliIgorCitMSUJWID0gIjE2IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9LyR7UFZ9LyR7QlB9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NzhiN2U2OTZhNjJhMTkzZWQzNTAzYjA0YmY0NDlkNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzkxMmVjOGM5NTg0OTE3ZWQ5YjA5YzUwMjM0NjVkNzE3MDlkY2UwODliZTUwM2M3ODY3ZmVjNjhhOTNiY2Q3IgorCitNSVJST1JTICs9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8gJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vb2xkZXItcmVsZWFzZXMvJHtQVn0vIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYnBuZy5vcmcvcHViL3BuZy9saWJwbmcuaHRtbCIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsYW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaAppbmRleCA3ZGFkMGNkLi5iMDYwMjliIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsYW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xhbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDQ0YjQ1MTE3ODRmOWI1MWM1MTRkZmY0Y2ViM2NiZWFmOWMzNzRkMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQ2MTljY2Y2YzExYWI1NzQ0NjY5MTRjNTc5OTRhODJmYjk5NDAxYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMiBNYXIgMjAxNyAxNjowNjo1NSArMDAwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IENoZWNrIGZvciBjbGFuZwpAQCAtMTMsMTIgKzEzLDEyIEBACiAgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGVkZGQwMmQuLjAwZWNiYTUgMTAwNjQ0CitpbmRleCAyOGIwYTE0Li4yZDRlOTg0IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC05Myw2ICs5MywxNiBAQCBBQ19BUkdfRU5BQkxFKGV4YW1wbGVzLAotICAJCi0gQU1fQ09ORElUSU9OQUwoQlVJTERfRVhBTVBMRVMsIFt0ZXN0ICJ4JGVuYWJsZV9leGFtcGxlcyIgPSB4eWVzXSkgCitAQCAtOTgsNiArOTgsMTYgQEAgQUNfQVJHX0VOQUJMRShleGFtcGxlcywKKyAKKyBBTV9DT05ESVRJT05BTChCVUlMRF9FWEFNUExFUywgW3Rlc3QgIngkZW5hYmxlX2V4YW1wbGVzIiA9IHh5ZXNdKQogIAogK0FDX01TR19DSEVDS0lORyhbd2hldGhlciBDIGNvbXBpbGVyIGlzIGNsYW5nXSkKICskQ0MgLXggYyAvZGV2L251bGwgLWRNIC1FID4gY29uZnRlc3QudHh0IDI+JjEKQEAgLTMzLDkgKzMzLDkgQEAKICBkbmwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBkbmwgU2V0IGJ1aWxkIGZsYWdzIGJhc2VkIG9uIGVudmlyb25tZW50CiAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1AQCAtMTI3LDEwICsxMzcsMTUgQEAgZWxzZQorQEAgLTEzMiwxMCArMTQyLDE1IEBAIGVsc2UKICAJQUNfTVNHX1JFU1VMVChbJEdDQ19WRVJTSU9OXSkKLSAJY2FzZSAkaG9zdCBpbiAKKyAJY2FzZSAkaG9zdCBpbgogIAkqODYtKi1saW51eCopCiArCQlpZiB0ZXN0ICIkQ0NfQ0xBTkciID0gIjEiOyB0aGVuCiArCQkJaWVlZWZwPSIiCkBAIC00Myw4ICs0Myw4IEBACiArCQkJaWVlZnA9Ii1tbm8taWVlZS1mcCIKICsJCWZpCiAgCQlERUJVRz0iLWcgLVdhbGwgLVdleHRyYSAtRF9SRUVOVFJBTlQgLURfX05PX01BVEhfSU5MSU5FUyAtZnNpZ25lZC1jaGFyIgotLQkJQ0ZMQUdTPSItTzMgLWZmYXN0LW1hdGggLW1uby1pZWVlLWZwIC1EX1JFRU5UUkFOVCAtZnNpZ25lZC1jaGFyIgotKwkJQ0ZMQUdTPSItTzMgLWZmYXN0LW1hdGggLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIgJHtpZWVmcH0iCistCQlDRkxBR1M9Ii1PMyAtV2FsbCAtV2V4dHJhIC1mZmFzdC1tYXRoIC1tbm8taWVlZS1mcCAtRF9SRUVOVFJBTlQgLWZzaWduZWQtY2hhciIKKysJCUNGTEFHUz0iLU8zIC1XYWxsIC1XZXh0cmEgLWZmYXN0LW1hdGggLURfUkVFTlRSQU5UIC1mc2lnbmVkLWNoYXIgJHtpZWVmcH0iCiAgIyAgICAgICAgICAgICAgCVBST0ZJTEU9Ii1XYWxsIC1XZXh0cmEgLXBnIC1nIC1PMyAtZmZhc3QtbWF0aCAtRF9SRUVOVFJBTlQgLWZzaWduZWQtY2hhciAtZm5vLWlubGluZSAtc3RhdGljIgogLQkJUFJPRklMRT0iLVdhbGwgLVdleHRyYSAtcGcgLWcgLU8zIC1mZmFzdC1tYXRoIC1tbm8taWVlZS1mcCAtRF9SRUVOVFJBTlQgLWZzaWduZWQtY2hhciAtZm5vLWlubGluZSIKICsJCVBST0ZJTEU9Ii1XYWxsIC1XZXh0cmEgLXBnIC1nIC1PMyAtZmZhc3QtbWF0aCAke2llZWZwfSAtRF9SRUVOVFJBTlQgLWZzaWduZWQtY2hhciAtZm5vLWlubGluZSIKQEAgLTUyLDUgKzUyLDUgQEAKICAJCSMgZ2xpYmMgPCAyLjEuMyBoYXMgYSBzZXJpb3VzIEZQIGJ1ZyBpbiB0aGUgbWF0aCBpbmxpbmUgaGVhZGVyCiAgCQkjIHRoYXQgd2lsbCBjcmlwcGxlIFZvcmJpcy4gIExvb2sgdG8gc2VlIGlmIHRoZSBtYWdpYyBGUCBzdGFjawogLS0gCi0xLjguMy4xCisyLjE3LjAKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0MTYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0MTYwLnBhdGNoCmluZGV4IDc1NjRkOTIuLmI3NjAzYzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDE2MC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQxNjAucGF0Y2gKQEAgLTMsMTQgKzMsMTUgQEAKIERhdGU6IFdlZCwgOSBNYXkgMjAxOCAxNDo1Njo1OSAtMDcwMAogU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDE2MDogZml4IGJvdW5kcyBjaGVjayBvbiB2ZXJ5IGxvdyBzYW1wbGUgcmF0ZXMuCiAKLUNWRTogQ1ZFLTIwMTctMTQxNjAKLUNWRTogQ1ZFLTIwMTgtMTAzOTMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSBodHRwczovL2dpdGxhYi54aXBoLm9yZy94aXBoL3ZvcmJpcy9jb21taXQvMDE4Y2EyNmRlY2U2MTg0NTdkZDEzNTg1Y2FkNTI5NDExOTNjNGEyNQotCi1TaWduZWQtb2ZmLWJ5OiBUaG9tYXMgRGFlZGUgPGRhZWRlMDAzQHVtbi5lZHU+Ci1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+CiAtLS0KLSBsaWIvcHN5LmMgfCAzICsrLQorQ1ZFOiBDVkUtMjAxNy0xNDE2MCBDVkUtMjAxOC0xMDM5MworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtnaXRsYWIuY29tL1hpcGguT3JnL1ZvcmJpcy9Db21taXRzLzAxOGNhMjZkLi4uXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CistLS0KKy0tLQorIGxpYi9wc3kuYyB8ICAgIDMgKystCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbGliL3BzeS5jIGIvbGliL3BzeS5jCkBAIC0yOSw1ICszMCw1IEBACiAgICAgIHROID0gTltoaV0gKyBOWy1sb107CiAgICAgIHRYID0gWFtoaV0gLSBYWy1sb107CiAtLSAKLTIuNy40CisxLjcuOS41CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAzNmI5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTctMTQ2MzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDM5NzA0Y2UxNjgzNWU1YzAxOWJiMDNmNmE5NGRjMWYwNjc3NDA2YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/R3VpZG89MjBHPUMzPUJDbnRoZXI/PSA8YWd4QHNpZ3hjcHUub3JnPgotRGF0ZTogV2VkLCAxNSBOb3YgMjAxNyAxODoyMjo1OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNy0xNDYzMjogdm9yYmlzX2FuYWx5c2lzX2hlYWRlcl9vdXQ6IERvbid0IGNsZWFyIG9wYgotIGlmIG5vdCBpbml0aWFsaXplZAotCi1JZiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIGlzIG5vdCB3aXRoaW4gdGhlIGFsbG93ZWQgcmFuZ2UKLXdlIGNhbGwgb2dnYmFja193cml0ZWNsZWFyIGFsdG91Z2ggaXQncyBub3QgaW5pdGlhbGl6ZWQgeWV0LgotCi1UaGlzIGZpeGVzCi0KLSAgICA9MjMzNzE9PSBJbnZhbGlkIGZyZWUoKSAvIGRlbGV0ZSAvIGRlbGV0ZVtdIC8gcmVhbGxvYygpCi0gICAgPT0yMzM3MT09ICAgIGF0IDB4NEMyQ0UxQjogZnJlZSAodmdfcmVwbGFjZV9tYWxsb2MuYzo1MzApCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4ODI5Q0EzMTogb2dncGFja193cml0ZWNsZWFyIChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm9nZy5zby4wLjguMikKLSAgICA9PTIzMzcxPT0gICAgYnkgMHg4NEI5NkVFOiB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyb3V0IChpbmZvLmM6NjUyKQotICAgID09MjMzNzE9PSAgICBieSAweDlGQkNCQ0M6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9zb3gvbGlic294X2ZtdF92b3JiaXMuc28pCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MjRGMTogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKLSAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyQ0NBOiBzb3hfb3Blbl93cml0ZSAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBvcGVuX291dHB1dF9maWxlIChzb3guYzoxNTU2KQotICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogcHJvY2VzcyAoc294LmM6MTc1MykKLSAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG1haW4gKHNveC5jOjMwMTIpCi0gICAgPT0yMzM3MT09ICBBZGRyZXNzIDB4Njg3NjhjOCBpcyA0ODggYnl0ZXMgaW5zaWRlIGEgYmxvY2sgb2Ygc2l6ZSA4ODAgYWxsb2MnZAotICAgID09MjMzNzE9PSAgICBhdCAweDRDMkJCMUY6IG1hbGxvYyAodmdfcmVwbGFjZV9tYWxsb2MuYzoyOTgpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEMyREU5RjogcmVhbGxvYyAodmdfcmVwbGFjZV9tYWxsb2MuYzo3ODUpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1NDVDMjogbHN4X3JlYWxsb2MgKGluIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlic294LnNvLjIuMC4xKQotICAgID09MjMzNzE9PSAgICBieSAweDlGQkM5QTA6ID8/PyAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9zb3gvbGlic294X2ZtdF92b3JiaXMuc28pCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4NEU1MjRGMTogPz8/IChpbiAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnNveC5zby4yLjAuMSkKLSAgICA9PTIzMzcxPT0gICAgYnkgMHg0RTUyQ0NBOiBzb3hfb3Blbl93cml0ZSAoaW4gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJzb3guc28uMi4wLjEpCi0gICAgPT0yMzM3MT09ICAgIGJ5IDB4MTBEODJBOiBvcGVuX291dHB1dF9maWxlIChzb3guYzoxNTU2KQotICAgID09MjMzNzE9PSAgICBieSAweDEwRDgyQTogcHJvY2VzcyAoc294LmM6MTc1MykKLSAgICA9PTIzMzcxPT0gICAgYnkgMHgxMEQ4MkE6IG1haW4gKHNveC5jOjMwMTIpCi0KLWFzIHNlZW4gd2hlbiB1c2luZyB0aGUgdGVzdGNhc2UgZnJvbSBDVkUtMjAxNy0xMTMzMyB3aXRoCi0wMDhkMjNiNzgyYmUwOWM4ZDc1YmE4MTkwYjE3OTRhYmQ2NmM3MTIxIGFwcGxpZWQuIEhvd2V2ZXIgdGhlIGVycm9yIHdhcwotdGhlcmUgYmVmb3JlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE0NjMyCi0KLVJlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKLWh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9YzFjMjgzMWZjNzMwNmQ1ZmJkN2JjODAwMzI0ZWZkMTJiMjhkMzI3ZgotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBsaWIvaW5mby5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWIvaW5mby5jIGIvbGliL2luZm8uYwotaW5kZXggODFiNzU1Ny4uNGQ4MjU2OCAxMDA2NDQKLS0tLSBhL2xpYi9pbmZvLmMKLSsrKyBiL2xpYi9pbmZvLmMKLUBAIC01ODQsNiArNTg0LDcgQEAgaW50IHZvcmJpc19hbmFseXNpc19oZWFkZXJvdXQodm9yYmlzX2RzcF9zdGF0ZSAqdiwKLSAgIHByaXZhdGVfc3RhdGUgKmI9di0+YmFja2VuZF9zdGF0ZTsKLSAKLSAgIGlmKCFifHx2aS0+Y2hhbm5lbHM8PTB8fHZpLT5jaGFubmVscz4yNTYpewotKyAgICBiID0gTlVMTDsKLSAgICAgcmV0PU9WX0VGQVVMVDsKLSAgICAgZ290byBlcnJfb3V0OwotICAgfQotLS0gCi0yLjE2LjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE3LTE0NjMzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzllNjg4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxNy0xNDYzMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMDdlZGE1NWYzMzZlNWM0NGRmYzBlNGExZTIxNjI4ZmFlZDcyNTVmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9HdWlkbz0yMEc9QzM9QkNudGhlcj89IDxhZ3hAc2lneGNwdS5vcmc+Ci1EYXRlOiBUdWUsIDMxIE9jdCAyMDE3IDE4OjMyOjQ2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENWRS0yMDE3LTE0NjMzOiBEb24ndCBhbGxvdyBmb3IgbW9yZSB0aGFuIDI1NiBjaGFubmVscwotCi1PdGhlcndpc2UKLQotIGZvcihpPTA7aTx2aS0+Y2hhbm5lbHM7aSsrKXsKLSAgICAgIC8qIHRoZSBlbmNvZGVyIHNldHVwIGFzc3VtZXMgdGhhdCBhbGwgdGhlIG1vZGVzIHVzZWQgYnkgYW55Ci0gICAgICAgICBzcGVjaWZpYyBiaXRyYXRlIHR3ZWFraW5nIHVzZSB0aGUgc2FtZSBmbG9vciAqLwotICAgICAgaW50IHN1Ym1hcD1pbmZvLT5jaG11eGxpc3RbaV07Ci0KLW92ZXJyZWFkcyBsYXRlciBpbiBtYXBwaW5nMF9mb3J3YXJkIHNpbmNlIGNobXV4bGlzdCBpcyBhIGZpeGVkIGFycmF5IG9mCi0yNTYgZWxlbWVudHMgbWF4LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTE0NjMzCi0KLVJlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKLWh0dHBzOi8vZ2l0LnhpcGgub3JnLz9wPXZvcmJpcy5naXQ7YT1jb21taXRkaWZmO2g9NjY3Y2ViNGFhYjYwYzFmNzQwNjAxNDNiYjI0ZTVmNDI3YjNjY2U1ZgotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBsaWIvaW5mby5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2luZm8uYyBiL2xpYi9pbmZvLmMKLWluZGV4IGU0NDdhMGMuLjgxYjc1NTcgMTAwNjQ0Ci0tLS0gYS9saWIvaW5mby5jCi0rKysgYi9saWIvaW5mby5jCi1AQCAtNTgzLDcgKzU4Myw3IEBAIGludCB2b3JiaXNfYW5hbHlzaXNfaGVhZGVyb3V0KHZvcmJpc19kc3Bfc3RhdGUgKnYsCi0gICBvZ2dwYWNrX2J1ZmZlciBvcGI7Ci0gICBwcml2YXRlX3N0YXRlICpiPXYtPmJhY2tlbmRfc3RhdGU7Ci0gCi0tICBpZighYnx8dmktPmNoYW5uZWxzPD0wKXsKLSsgIGlmKCFifHx2aS0+Y2hhbm5lbHM8PTB8fHZpLT5jaGFubmVscz4yNTYpewotICAgICByZXQ9T1ZfRUZBVUxUOwotICAgICBnb3RvIGVycl9vdXQ7Ci0gICB9Ci0tLSAKLTIuMTYuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtMTAzOTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXMvQ1ZFLTIwMTgtMTAzOTIucGF0Y2gKaW5kZXggZjFlZjZmYi4uYjc5MzZiNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTEwMzkyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC0xMDM5Mi5wYXRjaApAQCAtNCwxNCArNCwxOSBAQAogU3ViamVjdDogW1BBVENIXSBTYW5pdHkgY2hlY2sgbnVtYmVyIG9mIGNoYW5uZWxzIGluIHNldHVwLgogCiBGaXhlcyAjMjMzNS4KLUNWRTogQ1ZFLTIwMTgtMTAzOTIKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLnhpcGgub3JnL3hpcGgvdm9yYmlzL2NvbW1pdC8xMTJkM2JkMGFhYWNhZDUxMzA1ZTE0NjRkNGIzODFkYWJhZDBlODhiXQogCi1TaWduZWQtb2ZmLWJ5OiBKYWdhZGVlc2ggS3Jpc2huYW5qYW5hcHBhIDxqa3Jpc2huYW5qYW5hcHBhQG12aXN0YS5jb20+CiAtLS0KLSBsaWIvdm9yYmlzZW5jLmMgfCAxICsKK0NWRTogQ1ZFLTIwMTgtMTAzOTIKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0bGFiLmNvbS9YaXBoLk9yZy9Wb3JiaXMvQ29tbWl0cy8xMTJkM2JkLi4uXQorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CistLS0KKworIGxpYi92b3JiaXNlbmMuYyB8ICAgIDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCisKIGRpZmYgLS1naXQgYS9saWIvdm9yYmlzZW5jLmMgYi9saWIvdm9yYmlzZW5jLmMKIGluZGV4IDRmYzdiNjIuLjY0YTUxYjUgMTAwNjQ0CiAtLS0gYS9saWIvdm9yYmlzZW5jLmMKQEAgLTI1LDUgKzMwLDUgQEAKICAKICAgIC8qIHRvbyBsb3cvaGlnaCBhbiBBVEggZmxvYXRlciBpcyBub25zZW5zaWNhbCwgYnV0IGRvZXNuJ3QgYnJlYWsgYW55dGhpbmcgKi8KIC0tIAotMi4xMy4zCisxLjcuOS41CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpcy9DVkUtMjAxOC01MTQ2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkNDA1MmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ2b3JiaXMvbGlidm9yYmlzL0NWRS0yMDE4LTUxNDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSAzYTAxN2Y1OTE0NTdiZjZlODAyMzFiNTYzYmY4M2VlNTgzZmRiY2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhvbWFzIERhZWRlIDxkYWVkZTAwM0B1bW4uZWR1PgotRGF0ZTogVGh1LCAxNSBNYXIgMjAxOCAxNDoxNTozMSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxOC01MTQ2OiBQcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGUgaW4gY29kZWJvb2sKLSBkZWNvZGluZy4KLQotQ29kZWJvb2tzIHRoYXQgYXJlIG5vdCBhbiBleGFjdCBkaXZpc29yIG9mIHRoZSBwYXJ0aXRpb24gc2l6ZSBhcmUgbm93Ci10cnVuY2F0ZWQgdG8gZml0IHdpdGhpbiB0aGUgcGFydGl0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE4LTUxNDYKLQotUmVmZXJlbmNlIHRvIHVwc3RyZWFtIHBhdGNoOgotaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9dm9yYmlzLmdpdDthPWNvbW1pdGRpZmY7aD02NjdjZWI0YWFiNjBjMWY3NDA2MDE0M2JiMjRlNWY0MjdiM2NjZTVmCi0KLVNpZ25lZC1vZmYtYnk6IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLS0tLQotIGxpYi9jb2RlYm9vay5jIHwgNDggKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2NvZGVib29rLmMgYi9saWIvY29kZWJvb2suYwotaW5kZXggOGI3NjZlOC4uNzAyMmZkMiAxMDA2NDQKLS0tLSBhL2xpYi9jb2RlYm9vay5jCi0rKysgYi9saWIvY29kZWJvb2suYwotQEAgLTM4Nyw3ICszODcsNyBAQCBsb25nIHZvcmJpc19ib29rX2RlY29kZXZzX2FkZChjb2RlYm9vayAqYm9vayxmbG9hdCAqYSxvZ2dwYWNrX2J1ZmZlciAqYixpbnQgbil7Ci0gICAgICAgdFtpXSA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeVtpXSpib29rLT5kaW07Ci0gICAgIH0KLSAgICAgZm9yKGk9MCxvPTA7aTxib29rLT5kaW07aSsrLG8rPXN0ZXApCi0tICAgICAgZm9yIChqPTA7ajxzdGVwO2orKykKLSsgICAgICBmb3IgKGo9MDtvK2o8biAmJiBqPHN0ZXA7aisrKQotICAgICAgICAgYVtvK2pdKz10W2pdW2ldOwotICAgfQotICAgcmV0dXJuKDApOwotQEAgLTM5OSw0MSArMzk5LDEyIEBAIGxvbmcgdm9yYmlzX2Jvb2tfZGVjb2Rldl9hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKmEsb2dncGFja19idWZmZXIgKmIsaW50IG4pewotICAgICBpbnQgaSxqLGVudHJ5OwotICAgICBmbG9hdCAqdDsKLSAKLS0gICAgaWYoYm9vay0+ZGltPjgpewotLSAgICAgIGZvcihpPTA7aTxuOyl7Ci0tICAgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7Ci0tICAgICAgICBpZihlbnRyeT09LTEpcmV0dXJuKC0xKTsKLS0gICAgICAgIHQgICAgID0gYm9vay0+dmFsdWVsaXN0K2VudHJ5KmJvb2stPmRpbTsKLS0gICAgICAgIGZvciAoaj0wO2o8Ym9vay0+ZGltOykKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgfQotLSAgICB9ZWxzZXsKLS0gICAgICBmb3IoaT0wO2k8bjspewotLSAgICAgICAgZW50cnkgPSBkZWNvZGVfcGFja2VkX2VudHJ5X251bWJlcihib29rLGIpOwotLSAgICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7Ci0tICAgICAgICB0ICAgICA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07Ci0tICAgICAgICBqPTA7Ci0tICAgICAgICBzd2l0Y2goKGludClib29rLT5kaW0pewotLSAgICAgICAgY2FzZSA4OgotLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKLS0gICAgICAgIGNhc2UgNzoKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDY6Ci0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgICAgY2FzZSA1OgotLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKLS0gICAgICAgIGNhc2UgNDoKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDM6Ci0tICAgICAgICAgIGFbaSsrXSs9dFtqKytdOwotLSAgICAgICAgY2FzZSAyOgotLSAgICAgICAgICBhW2krK10rPXRbaisrXTsKLS0gICAgICAgIGNhc2UgMToKLS0gICAgICAgICAgYVtpKytdKz10W2orK107Ci0tICAgICAgICBjYXNlIDA6Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLSAgICAgIH0KLSsgICAgZm9yKGk9MDtpPG47KXsKLSsgICAgICBlbnRyeSA9IGRlY29kZV9wYWNrZWRfZW50cnlfbnVtYmVyKGJvb2ssYik7Ci0rICAgICAgaWYoZW50cnk9PS0xKXJldHVybigtMSk7Ci0rICAgICAgdCAgICAgPSBib29rLT52YWx1ZWxpc3QrZW50cnkqYm9vay0+ZGltOwotKyAgICAgIGZvcihqPTA7aTxuICYmIGo8Ym9vay0+ZGltOykKLSsgICAgICAgIGFbaSsrXSs9dFtqKytdOwotICAgICB9Ci0gICB9Ci0gICByZXR1cm4oMCk7Ci1AQCAtNDcxLDEyICs0NDIsMTMgQEAgbG9uZyB2b3JiaXNfYm9va19kZWNvZGV2dl9hZGQoY29kZWJvb2sgKmJvb2ssZmxvYXQgKiphLGxvbmcgb2Zmc2V0LGludCBjaCwKLSAgIGxvbmcgaSxqLGVudHJ5OwotICAgaW50IGNocHRyPTA7Ci0gICBpZihib29rLT51c2VkX2VudHJpZXM+MCl7Ci0tICAgIGZvcihpPW9mZnNldC9jaDtpPChvZmZzZXQrbikvY2g7KXsKLSsgICAgaW50IG09KG9mZnNldCtuKS9jaDsKLSsgICAgZm9yKGk9b2Zmc2V0L2NoO2k8bTspewotICAgICAgIGVudHJ5ID0gZGVjb2RlX3BhY2tlZF9lbnRyeV9udW1iZXIoYm9vayxiKTsKLSAgICAgICBpZihlbnRyeT09LTEpcmV0dXJuKC0xKTsKLSAgICAgICB7Ci0gICAgICAgICBjb25zdCBmbG9hdCAqdCA9IGJvb2stPnZhbHVlbGlzdCtlbnRyeSpib29rLT5kaW07Ci0tICAgICAgICBmb3IgKGo9MDtqPGJvb2stPmRpbTtqKyspewotKyAgICAgICAgZm9yIChqPTA7aTxtICYmIGo8Ym9vay0+ZGltO2orKyl7Ci0gICAgICAgICAgIGFbY2hwdHIrK11baV0rPXRbal07Ci0gICAgICAgICAgIGlmKGNocHRyPT1jaCl7Ci0gICAgICAgICAgICAgY2hwdHI9MDsKLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1YjUzOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIk9nZyBWb3JiaXMgQXVkaW8gQ29kZWMiCi1ERVNDUklQVElPTiA9ICJPZ2cgVm9yYmlzIGlzIGEgaGlnaC1xdWFsaXR5IGxvc3N5IGF1ZGlvIGNvZGVjIFwKLXRoYXQgaXMgZnJlZSBvZiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmVzdHJpY3Rpb25zLiBsaWJ2b3JiaXMgXAotaXMgdGhlIG1haW4gdm9yYmlzIGNvZGVjIGxpYnJhcnkuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy52b3JiaXMuY29tLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZDJjNDg3ZDJmYzdkZDNlM2M3YzQ2NWE1YjdmNjIxNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3ZvcmJpcy92b3JiaXNlbmMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1kMWMxZDEzODg2M2Q2MzE1MTMxMTkzZDQwNDZkODFjYiIKLURFUEVORFMgPSAibGlib2dnIgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy54aXBoLm9yZy9yZWxlYXNlcy92b3JiaXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDYzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC01MTQ2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MTYwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMzkyLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhjYjI4MDk3YzA3YTczNWQ2YWY1NmU1OThlMWM5MGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRmOTRhOTUyN2ZmMGE4ODQ3N2JlMGE3MWMwYmFiMDlhNGMzZmViZTBlZDg3OGIyNDgyNDkwNmNkNGIwZTFkMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnZvcmJpcy9saWJ2b3JiaXNfMS4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkYTZkYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidm9yYmlzL2xpYnZvcmJpc18xLjMuNi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIk9nZyBWb3JiaXMgQXVkaW8gQ29kZWMiCitERVNDUklQVElPTiA9ICJPZ2cgVm9yYmlzIGlzIGEgaGlnaC1xdWFsaXR5IGxvc3N5IGF1ZGlvIGNvZGVjIFwKK3RoYXQgaXMgZnJlZSBvZiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmVzdHJpY3Rpb25zLiBsaWJ2b3JiaXMgXAoraXMgdGhlIG1haW4gdm9yYmlzIGNvZGVjIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy52b3JiaXMuY29tLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly90cmFjLnhpcGgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03MGM3MDYzNDkxZDJkOWY3NmEwOThkNjJlZDUxMzRmMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3ZvcmJpcy92b3JiaXNlbmMuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTExO21kNT1kMWMxZDEzODg2M2Q2MzE1MTMxMTkzZDQwNDZkODFjYiIKK0RFUEVORFMgPSAibGlib2dnIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueGlwaC5vcmcvcmVsZWFzZXMvdm9yYmlzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAzOTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNjAucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiN2QxNjkyZjI3NWM3M2U3ODMzZWQxY2MyNjk3Y2Q2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjAwYmI1YTc4NGU3YzllNjlmNTY4MjNkZTQ2MzdjMzUwNjQzZGVlZGFmMzMzZDBmYTg2ZWNkYmE2ZmNiNDE1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYwppbmRleCA4MTg5YTU2Li5mNTI2NjkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCkBAIC0xNiw5ICsxNiw2IEBACiAjIFRoZSBzcmMvcHVsc2Vjb3JlL2ZpbHRlci8gZGlyZWN0b3J5IGNvbnRhaW5zIGNvZGUgdW5kZXIgdGhlIDMtY2xhdXNlIEJTRAogIyBsaWNlbnNlLgogIwotIyBzcmMvdXRpbHMvcXBhZXEgaXMgbGljZW5zZWQgdW5kZXIgQUdQTC4gcXBhZXEgaXMgbm90IGluc3RhbGxlZCBieSB0aGlzCi0jIHJlY2lwZSwgaG93ZXZlciwgd2hpY2ggaXMgd2h5IEFHUEwgaXMgbm90IG1lbnRpb25lZCBpbiBMSUNFTlNFLgotIwogIyBQZW9wbGUgd2hvIGRpc3RyaWJ1dGUgUHVsc2VBdWRpbyBiaW5hcmllcyBuZWVkIHRvIGFsc28gY29uc2lkZXIgdGhhdCB0aGVyZQogIyBhcmUgc29tZSBkZXBlbmRlbmNpZXMgdG8gR1BMIGxpYnJhcmllcy4gTEdQTCBjb2RlIHRoYXQgZGVwZW5kcyBvbiBHUEwKICMgbGlicmFyaWVzIHByb2JhYmx5IGJlY29tZXMgZWZmZWN0aXZlbHkgR1BMLWxpY2Vuc2VkIChhdCBjb21waWxlLXRpbWU/IG9yIGF0CkBAIC00NywxNiArNDQsMTQgQEAKICMgc2VjdGlvbiAzLCBhbmQgdGhlcmVmb3JlIGxpYmRidXMncyBHUEwgbGljZW5zZSBkb2Vzbid0IGFmZmVjdCBQdWxzZUF1ZGlvLgogTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQgJiBCU0QtMy1DbGF1c2UiCiAKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NDhlOGQwM2YwNDk3Njc3OGVhYjIzNDhiNTllZDJiIFwKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTBlNWNkOTM4ZGUxYTdhNTNlYTVhZGFjMzhjYzEwYzM5IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0dQTDttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQUdQTDttZDU9NzNmMWViMjA1MTdjNTViZjk0OTNiN2RkNmU0ODA3ODggXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21vZHVsZXMvZWNoby1jYW5jZWwvYWRyaWFuLWxpY2Vuc2UudHh0O21kNT1hYmJhYjAwNmE1NjFmYmZmY2NlZGYxYzM1MzFmMzRhYiBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcHVsc2Vjb3JlL2ZpbHRlci9MSUNFTlNFLldFQktJVDttZDU9NDlkZWZiYWZmZGRmOGM1MWZhZjYwNmZmN2ZjM2IxZjcgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9yZXNhbXBsZXIuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTIxO21kNT0wOTc5NDAxMmFlMTY5MTJjMDI3MGYzMjgwY2M4ZmY4NCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbW9kdWxlcy9yZXNlcnZlLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yODttZDU9MGUyMzA5NDc2MDM2N2Q1MWI2NjA5NzUwZTliMzFmYmIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9ydGtpdC5oO2JlZ2lubGluZT02O2VuZGxpbmU9Mjk7bWQ1PTNmMDBmZjk2NjcxNmFlMDgxN2MzMTU3NmQxNDczNTI4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91dGlscy9xcGFlcTtiZWdpbmxpbmU9MjtlbmRsaW5lPTE2O21kNT03ZjYyNTE1YTQ3NjJmMGMzZmMzZDQyMDE4NThiYjk2NCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbW9kdWxlcy9lY2hvLWNhbmNlbC9hZHJpYW4tYWVjLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0xMjttZDU9ZDNlZDRmYWQxYzA3M2Y4YjA2ZjM3NDk1ZGM1ZDEwMjYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9maWx0ZXIvYmlxdWFkLmg7YmVnaW5saW5lPTE7ZW5kbGluZT00O21kNT02ZDQ2ZDEzNjUyMDY1MjhhMjAxMzczNTU5MjQyMzNjMSBcCiAiCkBAIC05MywxMCArODgsNiBAQAogIyBkZGJkNzEzMjkzIHdpdGhvdXQgZXhwbGFpbmluZyB3aHkgaXQgd2FzIG5vdCBtYWRlIGEgUEFDS0FHRUNPTkZJRyBpdGVtCiAjIGluc3RlYWQuIE9oIHdlbGwsIGxldCdzIGtlZXAgaXQgZGlzYWJsZWQgdW50aWwgc29tZW9uZSBleHByZXNzZXMgc29tZQogIyBpbnRlcmVzdCBpbiBoYXZpbmcgaXQgZW5hYmxlZC4KLSMKLSMgT25lIG5pY2UgdGhpbmcgYWJvdXQgZGlzYWJsaW5nIHRoaXMgaXMgdGhhdCBpdCBhbHNvIHByZXZlbnRzIHFwYWVxIGZyb20KLSMgYmVpbmcgaW5zdGFsbGVkLCBzbyB3ZSBhdm9pZCBhZGRpbmcgQUdQTCB0byB0aGUgbGlzdCBvZiBsaWNlbnNlcyAobm90aGluZwotIyBlbHNlIGluIFB1bHNlQXVkaW8gaXMgbGljZW5zZWQgdW5kZXIgQUdQTCkuCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1mZnR3IgogCiAjIFRoZSAiYWRyaWFuIiBlY2hvIGNhbmNlbGxlciBpbXBsZW1lbnRhdGlvbiBoYXMgYSBub24tc3RhbmRhcmQgbGljZW5zZQpAQCAtMTA2LDYgKzk3LDEwIEBACiAjIHZlcnkgZ29vZCBhbnl3YXksIGJldHRlciBhbHRlcm5hdGl2ZXMgZXhpc3QgKHN1Y2ggYXMgdGhlIHdlYnJ0YyBjYW5jZWxsZXIpLgogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtYWRyaWFuLWFlYyIKIAorIyBGSVhNRTogVGhlIGdzZXR0aW5ncyBtb2R1bGUgaXMgdGVtcG9yYXJpbHkgZGlzYWJsZWQsIGJlY2F1c2UgYWRkaW5nIHN1cHBvcnQKKyMgZm9yIGl0IGlzIGEgYml0IGNvbXBsaWNhdGVkLgorRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZ3NldHRpbmdzIgorCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnJHtCTFVFWn0nLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3plcm9jb25mJywgJ2F2YWhpJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICczZycsICdvZm9ubycsICcnLCBkKX0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1tZW1mZC13cmFwcGVycy1vbmx5LWRlZmluZS1tZW1mZF9jcmVhdGUtaWYtbm90LWFscmVhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1tZW1mZC13cmFwcGVycy1vbmx5LWRlZmluZS1tZW1mZF9jcmVhdGUtaWYtbm90LWFscmVhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzkxZjM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtbWVtZmQtd3JhcHBlcnMtb25seS1kZWZpbmUtbWVtZmRfY3JlYXRlLWlmLW5vdC1hbHJlYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gMGNiNjZjMGM1YWFmZDQ4YjYzYTc1NTg2MDc0NmU3MGFmYjMzMmM4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4KLURhdGU6IFdlZCwgMjQgSmFuIDIwMTggMDM6NTE6NDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVtZmQtd3JhcHBlcnM6IG9ubHkgZGVmaW5lIG1lbWZkX2NyZWF0ZSgpIGlmIG5vdCBhbHJlYWR5Ci0gZGVmaW5lZAotCi1nbGliYyAyLjI3IGlzIHRvIGJlIHJlbGVhc2VkIHNvb24sIGFuZCBpdCB3aWxsIHByb3ZpZGUgbWVtZmRfY3JlYXRlKCkuCi1JZiBnbGliYyBwcm92aWRlcyB0aGUgZnVuY3Rpb24sIHdlIG11c3Qgbm90IGRlZmluZSBpdCBvdXJzZWx2ZXMsCi1vdGhlcndpc2UgYnVpbGRpbmcgZmFpbHMgZHVlIHRvIGNvbmZsaWN0IGJldHdlZW4gdGhlIHR3byBpbXBsZW1lbnRhdGlvbnMKLW9mIHRoZSBzYW1lIGZ1bmN0aW9uLgotCi1CdWdMaW5rOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ3MzMKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MTM2OTI3XQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICB8IDMgKysrCi0gc3JjL3B1bHNlY29yZS9tZW1mZC13cmFwcGVycy5oIHwgNyArKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDc3YjVmZjUuLjNhNzFmZDggMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYwNyw2ICs2MDcsOSBAQCBBU19JRihbdGVzdCAieCRlbmFibGVfbWVtZmQiID0gInh5ZXMiICYmIHRlc3QgIngkSEFWRV9NRU1GRCIgPSAieDAiXSwKLSAgICAgW0FDX01TR19FUlJPUihbKioqIFlvdXIgTGludXgga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgbWVtZmQgc2hhcmVkIG1lbW9yeS4KLSAgICAgICAgICAgICAgICAgICAqKiogVXNlIGxpbnV4IHYzLjE3IG9yIGhpZ2hlciBmb3Igc3VjaCBhIGZlYXR1cmUuXSldKQotIAotK0FTX0lGKFt0ZXN0ICJ4JEhBVkVfTUVNRkQiID0gIngxIl0sCi0rICAgIEFDX0NIRUNLX0ZVTkNTKFttZW1mZF9jcmVhdGVdKSkKLSsKLSBBQ19TVUJTVChIQVZFX01FTUZEKQotIEFNX0NPTkRJVElPTkFMKFtIQVZFX01FTUZEXSwgW3Rlc3QgIngkSEFWRV9NRU1GRCIgPSB4MV0pCi0gQVNfSUYoW3Rlc3QgIngkSEFWRV9NRU1GRCIgPSAieDEiXSwgQUNfREVGSU5FKFtIQVZFX01FTUZEXSwgMSwgW0hhdmUgbWVtZmQgc2hhcmVkIG1lbW9yeS5dKSkKLWRpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmggYi9zcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmgKLWluZGV4IDNiZWQ5YjIuLmM3YWFkZmQgMTAwNjQ0Ci0tLS0gYS9zcmMvcHVsc2Vjb3JlL21lbWZkLXdyYXBwZXJzLmgKLSsrKyBiL3NyYy9wdWxzZWNvcmUvbWVtZmQtd3JhcHBlcnMuaAotQEAgLTIwLDEzICsyMCwxNCBAQAotICAgTGljZW5zZSBhbG9uZyB3aXRoIFB1bHNlQXVkaW87IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAqKiovCi0gCi0tI2lmZGVmIEhBVkVfTUVNRkQKLSsjaWYgZGVmaW5lZChIQVZFX01FTUZEKSAmJiAhZGVmaW5lZChIQVZFX01FTUZEX0NSRUFURSkKLSAKLSAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAKLSAvKgotLSAqIE5vIGdsaWJjIHdyYXBwZXJzIGV4aXN0IGZvciBtZW1mZF9jcmVhdGUoMiksIHNvIHByb3ZpZGUgb3VyIG93bi4KLSsgKiBCZWZvcmUgZ2xpYmMgdmVyc2lvbiAyLjI3IHRoZXJlIHdhcyBubyB3cmFwcGVyIGZvciBtZW1mZF9jcmVhdGUoMiksCi0rICogc28gd2UgaGF2ZSB0byBwcm92aWRlIG91ciBvd24uCi0gICoKLSAgKiBBbHNvIGRlZmluZSBtZW1mZCBmY250bCBzZWFsaW5nIG1hY3Jvcy4gV2hpbGUgdGhleSBhcmUgYWxyZWFkeQotICAqIGRlZmluZWQgaW4gdGhlIGtlcm5lbCBoZWFkZXIgZmlsZSA8bGludXgvZmNudGwuaD4sIHRoYXQgZmlsZSBhcwotQEAgLTYzLDYgKzY0LDYgQEAgc3RhdGljIGlubGluZSBpbnQgbWVtZmRfY3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncykgewotICNkZWZpbmUgRl9TRUFMX1dSSVRFICAgIDB4MDAwOCAgLyogcHJldmVudCB3cml0ZXMgKi8KLSAjZW5kaWYKLSAKLS0jZW5kaWYgLyogSEFWRV9NRU1GRCAqLwotKyNlbmRpZiAvKiBIQVZFX01FTUZEICYmICFIQVZFX01FTUZEX0NSRUFURSAqLwotIAotICNlbmRpZgotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NTU5OTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1wYWRzcC1NYWtlLWl0LWNvbXBpbGUtb24tbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZjZhYjNjM2FhN2ExODQxYzhhZGQwNDgyODAyOTM1NmQyYThjODhlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDYgQXByIDIwMTUgMjE6NTY6MzEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gcGFkc3A6IE1ha2UgaXQgY29tcGlsZSBvbiBtdXNsCi0KLWJyZWFrIGFzc3VtcHRpb25zIG9uIGdsaWJjIGFuZCB0aGVyZSBpcyBubyBzdGF0NjQgb24gbm9uCi1nbGliYyBDIGxpYnJhcmllcwotCi1TZWUgcHVsc2VhdWRpbyBidWcKLQotaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUzMTkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL3V0aWxzL3BhZHNwLmMgfCAxNSArKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3V0aWxzL3BhZHNwLmMgYi9zcmMvdXRpbHMvcGFkc3AuYwotaW5kZXggZTYxMzczYy4uNjg0NzIxYSAxMDA2NDQKLS0tLSBhL3NyYy91dGlscy9wYWRzcC5jCi0rKysgYi9zcmMvdXRpbHMvcGFkc3AuYwotQEAgLTIzNjgsNyArMjM2OCw3IEBAIGZhaWw6Ci0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLSNpZmRlZiBzdW4KLSsjaWZuZGVmIF9fR0xJQkNfXwotIGludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0LCAuLi4pIHsKLSAjZWxzZQotIGludCBpb2N0bChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdCwgLi4uKSB7Ci1AQCAtMjUwOCwxMCArMjUwOCwxMyBAQCBpbnQgc3RhdChjb25zdCBjaGFyICpwYXRobmFtZSwgc3RydWN0IHN0YXQgKmJ1ZikgewotIAotICAgICByZXR1cm4gMDsKLSB9Ci0tCi0gI2lmZGVmIEhBVkVfT1BFTjY0Ci0tCi0rI3VuZGVmIHN0YXQ2NAotKyNpZmRlZiBfX0dMSUJDX18KLSBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpIHsKLSsjZWxzZQotK2ludCBzdGF0NjQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpidWYpIHsKLSsjZW5kaWYKLSAgICAgc3RydWN0IHN0YXQgb2xkYnVmOwotICAgICBpbnQgcmV0OwotIAotQEAgLTI1NDQsNyArMjU0Nyw3IEBAIGludCBzdGF0NjQoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0NjQgKmJ1ZikgewotIAotICAgICByZXR1cm4gMDsKLSB9Ci0tCi0rI3VuZGVmIG9wZW42NAotIGludCBvcGVuNjQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKSB7Ci0gICAgIHZhX2xpc3QgYXJnczsKLSAgICAgbW9kZV90IG1vZGUgPSAwOwotQEAgLTI2NzAsOCArMjY3Myw4IEBAIEZJTEUqIGZvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICptb2RlKSB7Ci0gfQotIAotICNpZmRlZiBIQVZFX09QRU42NAotLQotLUZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpIHsKLSsjdW5kZWYgZm9wZW42NAotK0ZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqX19yZXN0cmljdCBmaWxlbmFtZSwgY29uc3QgY2hhciAqX19yZXN0cmljdCBtb2RlKSB7Ci0gCi0gICAgIGRlYnVnKERFQlVHX0xFVkVMX1ZFUkJPU0UsIF9fRklMRV9fIjogZm9wZW42NCglcylcbiIsIGZpbGVuYW1lP2ZpbGVuYW1lOiJOVUxMIik7Ci0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDUzMDJkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzExLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1yZXF1aXJlIHB1bHNlYXVkaW8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhZHNwLU1ha2UtaXQtY29tcGlsZS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tZW1mZC13cmFwcGVycy1vbmx5LWRlZmluZS1tZW1mZF9jcmVhdGUtaWYtbm90LWFscmVhLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjM5MGRlMzgyMzFkNWNkZDZiNDNhZGE4OTM5ZWI3NGYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyNTIxYzUyNWE3NzE2NjE4OWUzY2I5MTY5Zjc1YzJlZTJiODJmYTNmY2Y5NDc2MDI0ZmJjMmMzYTZjOWNkOWUiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBta2RpciAtcCAke1N9L2xpYmx0ZGwKLSAgICBjcCAke1NUQUdJTkdfTElCRElSfS9saWJsdGRsKiAke1N9L2xpYmx0ZGwKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2ZDkyYmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgcHVsc2VhdWRpby5pbmMKKworU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2xpZW50LWNvbmYtQWRkLWFsbG93LWF1dG9zcGF3bi1mb3Itcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYzQyZjFmMTQ2NWU4ZGY5ODU5ZDAyM2RjMTg0NzM0YmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA5NjY4ZmZjMjk2MDQzNzc5Yzk4NGY1MzQ2MWMyYjM5ODdhNDViN2EyNWViMmYwYTFkMTFkOWYyM2JhNDA1NSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMC42LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlkNGQ3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8wLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViUCBpcyBhbiBpbWFnZSBmb3JtYXQgZGVzaWduZWQgZm9yIHRoZSBXZWIiCi1ERVNDUklQVElPTiA9ICJXZWJQIGlzIGEgbWV0aG9kIG9mIGxvc3N5IGFuZCBsb3NzbGVzcyBjb21wcmVzc2lvbiB0aGF0IGNhbiBiZSBcCi0gICAgICAgICAgICAgICB1c2VkIG9uIGEgbGFyZ2UgdmFyaWV0eSBvZiBwaG90b2dyYXBoaWMsIHRyYW5zbHVjZW50IGFuZCBcCi0gICAgICAgICAgICAgICBncmFwaGljYWwgaW1hZ2VzIGZvdW5kIG9uIHRoZSB3ZWIuIFRoZSBkZWdyZWUgb2YgbG9zc3kgXAotICAgICAgICAgICAgICAgY29tcHJlc3Npb24gaXMgYWRqdXN0YWJsZSBzbyBhIHVzZXIgY2FuIGNob29zZSB0aGUgdHJhZGUtb2ZmIFwKLSAgICAgICAgICAgICAgIGJldHdlZW4gZmlsZSBzaXplIGFuZCBpbWFnZSBxdWFsaXR5LiBXZWJQIHR5cGljYWxseSBhY2hpZXZlcyBcCi0gICAgICAgICAgICAgICBhbiBhdmVyYWdlIG9mIDMwJSBtb3JlIGNvbXByZXNzaW9uIHRoYW4gSlBFRyBhbmQgSlBFRyAyMDAwLCBcCi0gICAgICAgICAgICAgICB3aXRob3V0IGxvc3Mgb2YgaW1hZ2UgcXVhbGl0eS4iCi1IT01FUEFHRSA9ICJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9zcGVlZC93ZWJwLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZThkZWU5MzJjMjZmMmRhYjUwM2FiZjcwYzk2ZDhiYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9QQVRFTlRTO21kNT1jNjkyNmQwY2IwN2QyOTZmODg2YWI2ZTBjYzVhODViNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNDljZTljM2UzZTlhY2FlNGQ5MWJjYTQ0YmI4NWE3MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjUwM2M3ODJkOWYxNTFiYWEzMjU1OTFjMzU3OWM2OGVkNzAwZmZjNjJkNGY1YTMyZmVlYWQwZmYwMTdkOGFiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC9pbmRleC5odG1sIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtZXhwZXJpbWVudGFsIFwKLSAgICAtLWRpc2FibGUtd2ljIFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwbXV4IFwKLSAgICAtLWVuYWJsZS1saWJ3ZWJwZGVtdXggXAotICAgIC0tZW5hYmxlLXRocmVhZGluZyBcCi0iCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsIm5lb24iLCItLWVuYWJsZS1uZW9uIiwiLS1kaXNhYmxlLW5lb24iLGQpfSBcCi0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi0KLSMgbGlid2VicGRlY29kZXIgaXMgYSBzdWJzZXQgb2YgbGlid2VicCwgZG9uJ3QgYnVpbGQgaXQgdW5sZXNzIHJlcXVlc3RlZAotUEFDS0FHRUNPTkZJR1tkZWNvZGVyXSA9ICItLWVuYWJsZS1saWJ3ZWJwZGVjb2RlciwtLWRpc2FibGUtbGlid2VicGRlY29kZXIiCi0KLSMgQXBwbHkgZm9yIGV4YW1wbGVzIHByb2dyYW1zOiBjd2VicCBhbmQgZHdlYnAKLVBBQ0tBR0VDT05GSUdbZ2lmXSA9ICItLWVuYWJsZS1naWYsLS1kaXNhYmxlLWdpZixnaWZsaWIiCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLWVuYWJsZS1wbmcsLS1kaXNhYmxlLXBuZywsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLWVuYWJsZS10aWZmLC0tZGlzYWJsZS10aWZmLHRpZmYiCi0KLSMgQXBwbHkgb25seSBmb3IgZXhhbXBsZSBwcm9ncmFtIHZ3ZWJwCi1QQUNLQUdFQ09ORklHW2dsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsbWVzYS1nbHV0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ2lmMndlYnAiCi0KLURFU0NSSVBUSU9OXyR7UE59LWdpZjJ3ZWJwID0gIlNpbXBsZSB0b29sIHRvIGNvbnZlcnQgYW5pbWF0ZWQgR0lGcyB0byBXZWJQIgotRklMRVNfJHtQTn0tZ2lmMndlYnAgPSAiJHtiaW5kaXJ9L2dpZjJ3ZWJwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTk2NzlmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjAuYmIKQEAgLTAsMCArMSw1MyBAQAorU1VNTUFSWSA9ICJXZWJQIGlzIGFuIGltYWdlIGZvcm1hdCBkZXNpZ25lZCBmb3IgdGhlIFdlYiIKK0RFU0NSSVBUSU9OID0gIldlYlAgaXMgYSBtZXRob2Qgb2YgbG9zc3kgYW5kIGxvc3NsZXNzIGNvbXByZXNzaW9uIHRoYXQgY2FuIGJlIFwKKyAgICAgICAgICAgICAgIHVzZWQgb24gYSBsYXJnZSB2YXJpZXR5IG9mIHBob3RvZ3JhcGhpYywgdHJhbnNsdWNlbnQgYW5kIFwKKyAgICAgICAgICAgICAgIGdyYXBoaWNhbCBpbWFnZXMgZm91bmQgb24gdGhlIHdlYi4gVGhlIGRlZ3JlZSBvZiBsb3NzeSBcCisgICAgICAgICAgICAgICBjb21wcmVzc2lvbiBpcyBhZGp1c3RhYmxlIHNvIGEgdXNlciBjYW4gY2hvb3NlIHRoZSB0cmFkZS1vZmYgXAorICAgICAgICAgICAgICAgYmV0d2VlbiBmaWxlIHNpemUgYW5kIGltYWdlIHF1YWxpdHkuIFdlYlAgdHlwaWNhbGx5IGFjaGlldmVzIFwKKyAgICAgICAgICAgICAgIGFuIGF2ZXJhZ2Ugb2YgMzAlIG1vcmUgY29tcHJlc3Npb24gdGhhbiBKUEVHIGFuZCBKUEVHIDIwMDAsIFwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgbG9zcyBvZiBpbWFnZSBxdWFsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3NwZWVkL3dlYnAvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlOGRlZTkzMmMyNmYyZGFiNTAzYWJmNzBjOTZkOGJiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBVEVOVFM7bWQ1PWM2OTI2ZDBjYjA3ZDI5NmY4ODZhYjZlMGNjNWE4NWI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjk2N2I4ZjA4N2NiMzkyZTZjYzk0ZDVlMTE2YTEyMGMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0MjU5YzQzODhmMTg2MzdhZjNjNWE2MzYxNTM2ZDc1NGE1Mzk0NDkyZjkxYmUxYWJjMmU5ODFkNDk4MzIyNWIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZy9yZWxlYXNlcy93ZWJwL2luZGV4Lmh0bWwiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS13aWMgXAorICAgIC0tZW5hYmxlLWxpYndlYnBtdXggXAorICAgIC0tZW5hYmxlLWxpYndlYnBkZW11eCBcCisgICAgLS1lbmFibGUtdGhyZWFkaW5nIFwKKyIKKyMgRG8gbm90IHRydXN0IGNvbmZpZ3VyZSB0byBkZXRlcm1pbmUgaWYgbmVvbiBpcyBhdmFpbGFibGUuCisjCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKaW5kZXggNTYwNmQ4ZS4uZjg3OTUyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYwpAQCAtMyw2ICszLDggQEAKIFBFID0gIjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9ydC10ZXN0cy9ydC10ZXN0cy5naXQiCisjIDEuMiBhbmQgMS4zIHNlZW0gdG8gYmUgZGV2ZWxvcG1lbnQgdmVyc2lvbnMKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oPyExXC4yKSg/ITFcLjMpKFxkKyhcLlxkKykrKSkiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG8vc2Vzc2lvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG8vc2Vzc2lvbgppbmRleCBmNjMxM2JkLi4zYTcwNTc0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXNhdG8vbWF0Y2hib3gtc2Vzc2lvbi1zYXRvL3Nlc3Npb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0by9zZXNzaW9uCkBAIC0yMCw3ICsyMCwxMCBAQAogIyBkb2Vzbid0IGhhdmUgdGhlIGZlYXR1cmUgImZvbyIuCiAKIFNUQVJUX0FQUExFVFM9c2hvd2Rlc2t0b3Asd2luZG93c2VsZWN0b3IKLUVORF9BUFBMRVRTPWNsb2NrLGJhdHRlcnksJEtFWUJPQVJEX0FQUExFVCxzeXN0cmF5LHN0YXJ0dXAtbm90aWZ5LG5vdGlmeQorRU5EX0FQUExFVFM9JEtFWUJPQVJEX0FQUExFVCxzeXN0cmF5LHN0YXJ0dXAtbm90aWZ5LG5vdGlmeQorRU5EX0FQUExFVFM9YmF0dGVyeSwkRU5EX0FQUExFVFMgIyBmZWF0dXJlLWFjcGkKK0VORF9BUFBMRVRTPWJhdHRlcnksJEVORF9BUFBMRVRTICMgZmVhdHVyZS1hcG0KK0VORF9BUFBMRVRTPWNsb2NrLCRFTkRfQVBQTEVUUwogRU5EX0FQUExFVFM9b3Blbm1va28tcGFuZWwtZ3NtLCRFTkRfQVBQTEVUUyAjIGZlYXR1cmUtcGhvbmUKIAogbWF0Y2hib3gtcGFuZWwgLS1zdGFydC1hcHBsZXRzICRTVEFSVF9BUFBMRVRTIC0tZW5kLWFwcGxldHMgJEVORF9BUFBMRVRTICYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtc2F0by9tYXRjaGJveC1zZXNzaW9uLXNhdG9fMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0b18wLjEuYmIKaW5kZXggZDE0NmU4My4uODIzMGU5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0b18wLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1zYXRvL21hdGNoYm94LXNlc3Npb24tc2F0b18wLjEuYmIKQEAgLTI2LDcgKzI2LDcgQEAKIAogZG9faW5zdGFsbCgpIHsKIAkjIFRoaXMgaXMgdGhlIHNldCBvZiBtYWNoaW5lIGZlYXR1cmVzIHRoYXQgdGhlIHNjcmlwdCBoYXMgbWFya2VycyBmb3IKLQlGRUFUVVJFUz0icGhvbmUiCisJRkVBVFVSRVM9ImFjcGkgYXBtIHBob25lIgogCVNDUklQVD0iJHtTfS9zZWRkZXIiCiAJcm0gLWYgJFNDUklQVAogCXRvdWNoICRTQ1JJUFQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF8wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ODgxOTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC10ZXJtaW5hbC9tYXRjaGJveC10ZXJtaW5hbF8wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IEdUSysgdGVybWluYWwgYXBwbGljYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1hdGNoYm94LXByb2plY3Qub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTIwO21kNT05NmUzOTE3NmQ5ZTM1NTYzOWEwYjhiMWM3YTg0MDgyMCIKLQotREVQRU5EUyA9ICJndGsrMyB2dGUiCi1TRUNUSU9OID0gIngxMS91dGlscyIKLQotI1NSQ1JFViB0YWdnZWQgMC4xCi1TUkNSRVYgPSAiM2FkMzU3ZGIyMzAyNzYwYjhhODgxN2I1ZjQ0NzhkZDg3NDc5NDQyZiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRlcm1pbmFsL21hdGNoYm94LXRlcm1pbmFsXzAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbWF0Y2hib3gtdGVybWluYWwvbWF0Y2hib3gtdGVybWluYWxfMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNWVkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LXRlcm1pbmFsL21hdGNoYm94LXRlcm1pbmFsXzAuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IEdUSysgdGVybWluYWwgYXBwbGljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1hdGNoYm94LXByb2plY3Qub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTIwO21kNT05NmUzOTE3NmQ5ZTM1NTYzOWEwYjhiMWM3YTg0MDgyMCIKKworREVQRU5EUyA9ICJndGsrMyB2dGUiCitTRUNUSU9OID0gIngxMS91dGlscyIKKworI1NSQ1JFViB0YWdnZWQgMC4yCitTUkNSRVYgPSAiMTYxMjc2ZDBmNWQxYmU4MTg3MDEwZmQwZDk1ODFhNmZlY2E3MGVhNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKaW5kZXggMjI0NDI4ZC4uN2UxNGVjZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS14MTEtc2F0by5iYgpAQCAtMzIsOSArMzIsOCBAQAogICAgIGFkd2FpdGEtaWNvbi10aGVtZSBcCiAgICAgc2V0dGluZ3MtZGFlbW9uIFwKICAgICBzaHV0ZG93bi1kZXNrdG9wIFwKLSAgICBsaWJzZGwgXAogICAgICR7TkVUV09SS19NQU5BR0VSfSBcCi0gICAgdWRldi1leHRyYWNvbmYgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAndWRldi1leHRyYWNvbmYnLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsICdwdWxzZWF1ZGlvLXNlcnZlciBwdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gcHVsc2VhdWRpby1taXNjJywgJycsIGQpfSBcCiAgICAgIgogCkBAIC00MywxMyArNDIsMTYgQEAKIFdFQiA/PSAiIgogI1dFQiA9ICJlcGlwaGFueSIKIAorR1NURVhBTVBMRVMgPz0gImdzdC1leGFtcGxlcyIKK0dTVEVYQU1QTEVTX3Jpc2N2NjQgPSAiIgorCiBTVU1NQVJZXyR7UE59LWFwcHMgPSAiU2F0byBkZXNrdG9wIC0gYXBwbGljYXRpb25zIgogUkRFUEVORFNfJHtQTn0tYXBwcyA9ICJcCiAgICAgbDNhZnBhZCBcCi0gICAgZ3N0LWV4YW1wbGVzIFwKICAgICBtYXRjaGJveC10ZXJtaW5hbCBcCiAgICAgc2F0by1zY3JlZW5zaG90IFwKICAgICAke0ZJTEVNQU5BR0VSfSBcCisgICAgJHtHU1RFWEFNUExFU30gXAogICAgICR7V0VCfSBcCiAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTI3YTA3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJGYXN0IGxpZ2h0d2VpZ2h0IHRhYmJlZCBmaWxlbWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9wY21hbmZtLnNvdXJjZWZvcmdlLm5ldC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcGNtYW5mbS5oO2VuZGxpbmU9MjI7bWQ1PTQxN2IzODU1NzcxYTNhODdmOGFkNzUzZDk5NDQ5MWYwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9nc2VhbC1ndGstY29tcGF0Lmg7ZW5kbGluZT0yMTttZDU9NDY5MjJjODY5MWY1OGQxMjRmOTQyMGZlMTYxNDljZTIiCi0KLVNFQ1RJT04gPSAieDExIgotREVQRU5EUyA9ICJndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiBsaWJmbSBpbnRsdG9vbC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL3BjbWFuZm0tJHtQVn0udGFyLnh6IFwKLQkgICBmaWxlOi8vZ25vbWUtZnMtZGlyZWN0b3J5LnBuZyBcCi0JICAgZmlsZTovL2dub21lLWZzLXJlZ3VsYXIucG5nIFwKLQkgICBmaWxlOi8vZ25vbWUtbWltZS10ZXh0LXBsYWluLnBuZyBcCi0JICAgZmlsZTovL2VtYmxlbS1zeW1ib2xpYy1saW5rLnBuZyBcCi0JICAgZmlsZTovL25vLWRlc2t0b3AucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNGQxZjhjZTA4ZDg3ZTRmMjc4MDVhMjQ2ZmM1MWFjMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwYzg2Y2FjMDI4YjcwNWZmMzE0Yzc0NjRkODE0YzJjZjdmZjYwNGMxNzQ5MWMyMGFhMjA0YjFlZjFhODBhZDY3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wY21hbmZtL2ZpbGVzL1BDTWFuRk0lMjAlMkIlMjBMaWJmbSUyMCUyOHRhcmJhbGwlMjByZWxlYXNlJTI5L1BDTWFuRk0vIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgVGhlIHN0YXJ0dXAtbm90aWZpY2F0aW9uIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfQotCWluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9L3BpeG1hcHMvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnBuZyAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BjbWFuZm0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJhZHdhaXRhLWljb24tdGhlbWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcGNtYW5mbS9wY21hbmZtXzEuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NmRhMDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMC5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkZhc3QgbGlnaHR3ZWlnaHQgdGFiYmVkIGZpbGVtYW5hZ2VyIgorSE9NRVBBR0UgPSAiaHR0cDovL3BjbWFuZm0uc291cmNlZm9yZ2UubmV0LyIKKworTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wY21hbmZtLmg7ZW5kbGluZT0yMjttZDU9NDE3YjM4NTU3NzFhM2E4N2Y4YWQ3NTNkOTk0NDkxZjAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dzZWFsLWd0ay1jb21wYXQuaDtlbmRsaW5lPTIxO21kNT00NjkyMmM4NjkxZjU4ZDEyNGY5NDIwZmUxNjE0OWNlMiIKKworU0VDVElPTiA9ICJ4MTEiCitERVBFTkRTID0gImd0ayszIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGxpYmZtIGludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vcGNtYW5mbS0ke1BWfS50YXIueHogXAorCSAgIGZpbGU6Ly9nbm9tZS1mcy1kaXJlY3RvcnkucG5nIFwKKwkgICBmaWxlOi8vZ25vbWUtZnMtcmVndWxhci5wbmcgXAorCSAgIGZpbGU6Ly9nbm9tZS1taW1lLXRleHQtcGxhaW4ucG5nIFwKKwkgICBmaWxlOi8vZW1ibGVtLXN5bWJvbGljLWxpbmsucG5nIFwKKwkgICBmaWxlOi8vbm8tZGVza3RvcC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjgyNzgzOGY3ZjZiMTdkYzk3ZTE2OTBjMDdkYThmZGIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhNjkzZTliZjNmMzI5NGYwZWU3MjY0YzFjMWE2MDBhODhlZTI3ZDE1NzJlN2RkNWM0YjBlODRhYTc3NzhmZmIiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3BjbWFuZm0vZmlsZXMvUENNYW5GTSUyMCUyQiUyMExpYmZtJTIwJTI4dGFyYmFsbCUyMHJlbGVhc2UlMjkvUENNYW5GTS8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworIyBUaGUgc3RhcnR1cC1ub3RpZmljYXRpb24gcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfS8ke2RhdGFkaXJ9CisJaW5zdGFsbCAtZCAke0R9LyR7ZGF0YWRpcn0vcGl4bWFwcy8KKworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucG5nICR7RH0vJHtkYXRhZGlyfS9waXhtYXBzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcGNtYW5mbSIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImFkd2FpdGEtaWNvbi10aGVtZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgppbmRleCBiZmQ4MTc3Li43ZDA4Yjk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCkBAIC0xLDIyICsxLDIyIEBACiBTVU1NQVJZID0gIlNpbW9uIFRhdGhhbSdzIFBvcnRhYmxlIFB1enpsZSBDb2xsZWN0aW9uIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9wdXp6bGVzLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCiAKIERFUEVORFMgPSAibGlieHQiCiAKICMgVGhlIGxpYnh0IHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCi0KIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnRhcnRhcnVzLm9yZy9zaW1vbi9wdXp6bGVzLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtV25vLWVycm9yLWZvcm1hdC1vdmVyZmxvdy1pZi10aGUtY29tcGlsZXItc3VwcG9yLnBhdGNoIFwKICAgICAgICAgICAgIgorCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCi1TUkNSRVYgPSAiMmFkZjAwNTJkNjZlYWU4OGM3YTVlNTVlNjdmZTE2ZTEzZjcwMThiNSIKK1NSQ1JFViA9ICJjNmUwMTYxZGQ0NzU0MTUzMTZlZDY2ZGM4Mjc5NGQ2OGU1MmYwMDI1IgogUEUgPSAiMiIKIFBWID0gIjAuMCtnaXQke1NSQ1BWfSIKIApAQCAtMjQsMjQgKzI0LDEzIEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwa2djb25maWcKIAotQ0ZMQUdTX2FwcGVuZCA9ICIgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLQogUEFDS0FHRUNPTkZJRyA/Pz0gImd0azMiCiBQQUNLQUdFQ09ORklHW2d0azJdID0gIi0td2l0aC1ndGs9MiwsZ3RrKywiCiBQQUNLQUdFQ09ORklHW2d0azNdID0gIi0td2l0aC1ndGs9MywsZ3RrKzMsIgogCi1QQUNLQUdFUyArPSAiJHtQTn0tZXh0cmEiCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU18ke1BOfS1leHRyYSA9ICIke3ByZWZpeH0vYmluICR7ZGF0YWRpcn0vYXBwbGljYXRpb25zIgorQ0ZMQUdTX2FwcGVuZCA9ICIgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIAotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICB2YXIgPSBkLmV4cGFuZCgiRklMRVNfJHtQTn0iKQotICAgIGRhdGEgPSBkLmdldFZhcih2YXIsIEZhbHNlKQotICAgIGZvciBuYW1lIGluICgiYnJpZGdlcyIsICJmaWZ0ZWVuIiwgImluZXJ0aWEiLCAibWFwIiwgInNhbWVnYW1lIiwgInNsYW50Iik6Ci0gICAgICAgIGRhdGEgPSBkYXRhICsgIiAke2JpbmRpcn0vJXMiICUgbmFtZQotICAgICAgICBkYXRhID0gZGF0YSArICIgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvJXMuZGVza3RvcCIgJSBuYW1lCi0gICAgZC5zZXRWYXIodmFyLCBkYXRhKQotfQorQVNORUVERUQgPSAiIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAgICAgY2QgJHtTfQpAQCAtNzQsMyArNjMsMTcgQEAKICAgICAgICAgZmkKICAgICBkb25lCiB9CisKK1BBQ0tBR0VTICs9ICIke1BOfS1leHRyYSIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtwcmVmaXh9L2JpbiAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucyIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICB2YXIgPSBkLmV4cGFuZCgiRklMRVNfJHtQTn0iKQorICAgIGRhdGEgPSBkLmdldFZhcih2YXIsIEZhbHNlKQorICAgIGZvciBuYW1lIGluICgiYnJpZGdlcyIsICJmaWZ0ZWVuIiwgImluZXJ0aWEiLCAibWFwIiwgInNhbWVnYW1lIiwgInNsYW50Iik6CisgICAgICAgIGRhdGEgPSBkYXRhICsgIiAke2JpbmRpcn0vJXMiICUgbmFtZQorICAgICAgICBkYXRhID0gZGF0YSArICIgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvJXMuZGVza3RvcCIgJSBuYW1lCisgICAgZC5zZXRWYXIodmFyLCBkYXRhKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LVBhaW50aW5nRGF0YS1oYXMtbm8tbWVtYmVyLW5hbWVkLWxpZ2h0VmVjdG9yLW9uLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1QYWludGluZ0RhdGEtaGFzLW5vLW1lbWJlci1uYW1lZC1saWdodFZlY3Rvci1vbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVmNDg0NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1QYWludGluZ0RhdGEtaGFzLW5vLW1lbWJlci1uYW1lZC1saWdodFZlY3Rvci1vbi0ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBhNWQ0ZTAzODI2OGFlMjM0ODZmZWNjMTk2NmZkMmUxNmE3ZjQwY2U4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNSBKdWwgMjAxOCAwMDoyMzo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggUGFpbnRpbmdEYXRhJyBoYXMgbm8gbWVtYmVyIG5hbWVkICdsaWdodFZlY3Rvcicgb24KKyBBUk1fTkVPTgorCisqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oOgorKFdlYkNvcmU6OkZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlOZW9uKToKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK2h0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc5OTEKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmggfCA2ICsrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVMaWdodGluZ05FT04uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oCitpbmRleCA0MmFmOTIyLi5iNTQyYTRjIDEwMDY0NAorLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFTGlnaHRpbmdORU9OLmgKKysrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUxpZ2h0aW5nTkVPTi5oCitAQCAtMTQ0LDkgKzE0NCw5IEBAIGlubGluZSB2b2lkIEZFTGlnaHRpbmc6OnBsYXRmb3JtQXBwbHlOZW9uKGNvbnN0IExpZ2h0aW5nRGF0YSYgZGF0YSwgY29uc3QgTGlnaHRTCisgICAgICAgICAgICAgbmVvbkRhdGEuZmxhZ3MgfD0gRkxBR19DT05FX0VYUE9ORU5UX0lTXzE7CisgICAgIH0gZWxzZSB7CisgICAgICAgICBBU1NFUlQobV9saWdodFNvdXJjZS0+dHlwZSgpID09IExTX0RJU1RBTlQpOworLSAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRYID0gcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLngoKTsKKy0gICAgICAgIGZsb2F0QXJndW1lbnRzLmxpZ2h0WSA9IHBhaW50aW5nRGF0YS5saWdodFZlY3Rvci55KCk7CistICAgICAgICBmbG9hdEFyZ3VtZW50cy5saWdodFogPSBwYWludGluZ0RhdGEubGlnaHRWZWN0b3IueigpOworKyAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRYID0gcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEubGlnaHRWZWN0b3IueCgpOworKyAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRZID0gcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEubGlnaHRWZWN0b3IueSgpOworKyAgICAgICAgZmxvYXRBcmd1bWVudHMubGlnaHRaID0gcGFpbnRpbmdEYXRhLmluaXRpYWxMaWdodGluZ0RhdGEubGlnaHRWZWN0b3IueigpOworICAgICAgICAgZmxvYXRBcmd1bWVudHMucGFkZGluZzIgPSAxOworICAgICB9CisgCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAppbmRleCA3Y2M0NTE0Li4wNDFlYzQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTEsMjQgKzEsMjUgQEAKLUZyb20gNDE1ZTMxYmQ1NDQ0ZmEzNjBhZjU4YjA2OWYxYjlkYjY2MDdmY2E3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGY5ZDczNmUwNDU4ZWQzM2NkMTYxY2QxNjRhZDBhY2RhYzkzOWY0NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCA2IE9jdCAyMDE3IDE3OjAwOjA4ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCi0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCB8IDEwICsrKysrLS0tLS0KKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYWNoaW5lQ29udGV4dC5oIHwgMTggKysrKysrKysrKysrKysrKystCiAgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisgMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hY2hpbmVDb250ZXh0LmgKLWluZGV4IDk1MDgwYjkuLjJiYjY4OWMgMTAwNjQ0CitpbmRleCBiZjBiZGM3Li44NGI4YThhIDEwMDY0NAogLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAogKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFjaGluZUNvbnRleHQuaAogQEAgLTE0Niw3ICsxNDYsNyBAQCBpbmxpbmUgdm9pZComIHN0YWNrUG9pbnRlcihtY29udGV4dF90JiBtYWNoaW5lQ29udGV4dCkKICAjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKICAjZW5kaWYKICAKLS0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKy0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0JJT05JQ19fKQogKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIAogICNpZiBDUFUoWDg2KQpAQCAtMjcsNyArMjgsNyBAQAogICNlcnJvciBVbmtub3duIEFyY2hpdGVjdHVyZQogICNlbmRpZgogIAotLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorLSNlbGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fQklPTklDX18pCiArI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAgCiAgLy8gVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBkZXBlbmRzIG9uIGdsaWJjJ3Mgc3lzL3Vjb250ZXh0LmguCkBAIC0zNiw3ICszNyw3IEBACiAgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAgI2VuZGlmCiAgCi0tI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19CSU9OSUNfXykKICsjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICAKICAvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KQEAgLTQ1LDcgKzQ2LDcgQEAKICAjZXJyb3IgVW5rbm93biBBcmNoaXRlY3R1cmUKICAjZW5kaWYKICAKLS0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKy0jZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0JJT05JQ19fKQogKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIAogIC8vIFRoZSBmb2xsb3dpbmcgc2VxdWVuY2UgZGVwZW5kcyBvbiBnbGliYydzIHN5cy91Y29udGV4dC5oLgpAQCAtNTQsMjQgKzU1LDIxIEBACiAgI2Vycm9yIFVua25vd24gQXJjaGl0ZWN0dXJlCiAgI2VuZGlmCiAgCi0tI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19CSU9OSUNfXykKICsjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICAKICAvLyBUaGUgZm9sbG93aW5nIHNlcXVlbmNlIGRlcGVuZHMgb24gZ2xpYmMncyBzeXMvdWNvbnRleHQuaC4KICAjaWYgQ1BVKFg4NikKIGRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAotaW5kZXggNWEyODYzYi4uYjM2YzNmZiAxMDA2NDQKK2luZGV4IDU1MWMwNDcuLmU1MGIwNWEgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCiArKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCi1AQCAtNjgwLDcgKzY4MCw3IEBACitAQCAtNjgzLDcgKzY4Myw3IEBACiAgI2RlZmluZSBIQVZFX0NGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORyAxCiAgI2VuZGlmCiAgCi0tI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykpICYmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoQVJNNjQpIHx8IENQVShNSVBTKSkpCistI2lmIE9TKERBUldJTikgfHwgKChPUyhGUkVFQlNEKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChfX0JJT05JQ19fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKICsjaWYgT1MoREFSV0lOKSB8fCAoKE9TKEZSRUVCU0QpIHx8IGRlZmluZWQoX19saW51eF9fKSkgJiYgKENQVShYODYpIHx8IENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShBUk02NCkgfHwgQ1BVKE1JUFMpKSkKICAjZGVmaW5lIEhBVkVfTUFDSElORV9DT05URVhUIDEKICAjZW5kaWYKICAKLS0tIAotMi4xNC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1nbGVzMy1oZWFkZXItd2hlbi1nbGVzMi1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWdsZXMzLWhlYWRlci13aGVuLWdsZXMyLWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNTc0MDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LWdsZXMzLWhlYWRlci13aGVuLWdsZXMyLWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGFkZjNkNGM5ZDQxMzNiZDY5OTU1OTBkOTIxYzBjY2FlYzUyNTRkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCaGFyZ2F2YSBTcmVla2FudGFwcGEgR2F5YXRocmkKLSA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+Ci1EYXRlOiBUdWUsIDI3IEZlYiAyMDE4IDE2OjA5OjMxIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBnbGVzMyBoZWFkZXIgd2hlbiBnbGVzMiBpcyBlbmFibGVkCi0KLUEgR0xFUyAyIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgdXNlIGdsMy5oLgotRml4IHRoZSBnbGVzMyBoZWFkZXIgZmFpbHVyZSB3aGlsZSBjb21waWxpbmcgd2Via2l0Z3RrLgotCi1GQUlMRUQ6Ci1Tb3VyY2UvV2ViQ29yZS9DTWFrZUZpbGVzL1dlYkNvcmUuZGlyL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAubwotICAgICAgICAgICBefn5+fn5+fn5+fn5+Ci1jb21waWxhdGlvbiB0ZXJtaW5hdGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1JbXBvcnRlZCBwYXRjaCBmcm9tOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDA4Ci0KLVNpZ25lZC1vZmYtYnk6IEJoYXJnYXZhIFNyZWVrYW50YXBwYSBHYXlhdGhyaSA8YmhhcmdhdmEuc3JlZWthbnRhcHBhLWdheWF0aHJpQHhpbGlueC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KLS0tLQotIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKLWluZGV4IDU5OWRjYzAuLjQ2ZDJmZDQgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCi0rKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCi1AQCAtMzEsNyArMzEsNiBAQAotICNlbGlmIFVTRShPUEVOR0xfRVNfMikKLSAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQotICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLS0jaW5jbHVkZSA8R0xFUzMvZ2wzLmg+Ci0gI2VuZGlmCi0KLSAjaWYgVVNFKEdMWCkKLS0tCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2gKaW5kZXggODk2ODkwYi4uYWE5YTA2NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYjdmNDBlY2VlZjBmMjNiZjg4MDkwNzg5ZDRjNTg0NWMzNWYwNDhhZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGFmYzE5NGM2NDQ2ZTZjMzI0MmYxZDcwNmI0NTY0ZTNhOWNiMmNlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyOSBBdWcgMjAxNiAxNjozODoxMSArMDMwMAotU3ViamVjdDogW1BBVENIIDQvOV0gRml4IHJhY3kgcGFyYWxsZWwgYnVpbGQgb2YgV2ViS2l0Mi00LjAuZ2lyCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCByYWN5IHBhcmFsbGVsIGJ1aWxkIG9mIFdlYktpdDItNC4wLmdpcgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgpAQCAtMTEsMzkgKzExLDM2IEBACiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCi1pbmRleCBhMzNjNmE4Ni4uZDgzYTJlNzcgMTAwNjQ0CitpbmRleCBhMDc0YTgwLi44YzZlYmI1IDEwMDY0NAogLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQogKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQotQEAgLTExMjIsOCArMTEyMiw5IEBAIGVuZGlmICgpCi0gc3RyaW5nKFJFR0VYIE1BVENIQUxMICItTFteIF0qIgotICAgICBJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9IikKK0BAIC03MjgsOCArNzI4LDkgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNUSU9OKQorICAgICBzdHJpbmcoUkVHRVggTUFUQ0hBTEwgIi1MW14gXSoiCisgICAgICAgICBJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElOS0VSX0ZMQUdTICIke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9IikKICAKLS1hZGRfY3VzdG9tX2NvbW1hbmQoCi0tICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotKyMgVGhpcyBpcyBhIHRhcmdldCBhbmQgbm90IGEgY29tbWFuZCBiZWNhdXNlIGl0J3MgdXNlZCB0byBidWlsZCBhbm90aGVyIC5naXIKLSsjIGFuZCBhIC50eXBlbGliLCB3aGljaCB3b3VsZCB0cmlnZ2VyIHR3byByYWN5IHBhcmFsbGVsIGJ1aWxkcyB3aGVuIHVzaW5nIGNvbW1hbmQKLSthZGRfY3VzdG9tX3RhcmdldChXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKLSAgICAgREVQRU5EUyBXZWJLaXQyCi0gICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0gICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfSBMREZMQUdTPQotQEAgLTExNjgsNyArMTE2OSw3IEBAIGFkZF9jdXN0b21fY29tbWFuZCgKLSBhZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDJXZWJFeHRlbnNpb24tJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotLSAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0rICAgIERFUEVORFMgV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0tZ2lyCi0gICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfQotICAgICAgICAgTERGTEFHUz0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTERGTEFHU30iCi0gICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKLUBAIC0xMjI1LDcgKzEyMjYsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCistICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorKyAgICAjIFRoaXMgaXMgYSB0YXJnZXQgYW5kIG5vdCBhIGNvbW1hbmQgYmVjYXVzZSBpdCdzIHVzZWQgdG8gYnVpbGQgYW5vdGhlciAuZ2lyCisrICAgICMgYW5kIGEgLnR5cGVsaWIsIHdoaWNoIHdvdWxkIHRyaWdnZXIgdHdvIHJhY3kgcGFyYWxsZWwgYnVpbGRzIHdoZW4gdXNpbmcgY29tbWFuZAorKyAgICBhZGRfY3VzdG9tX3RhcmdldChXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKKyAgICAgICAgIERFUEVORFMgV2ViS2l0CisgICAgICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICAgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9IExERkxBR1M9CitAQCAtNzczLDcgKzc3NCw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0MldlYkV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCisgICAgICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorLSAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorKyAgICAgICAgREVQRU5EUyBXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKKyAgICAgICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfQorICAgICAgICAgICAgIExERkxBR1M9IiR7SU5UUk9TUEVDVElPTl9BRERJVElPTkFMX0xERkxBR1N9IgorICAgICAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgorQEAgLTgyOCw3ICs4MjksNyBAQCBpZiAoRU5BQkxFX0lOVFJPU1BFQ1RJT04pCiAgCi0gYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS50eXBlbGliCi0tICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSsgICAgREVQRU5EUyBXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKLSAgICAgQ09NTUFORCAke0lOVFJPU1BFQ1RJT05fQ09NUElMRVJ9IC0taW5jbHVkZWRpcj0ke0NNQUtFX0JJTkFSWV9ESVJ9ICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyIC1vICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgotICkKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0Mi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0udHlwZWxpYgorLSAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorKyAgICAgICAgREVQRU5EUyBXZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS1naXIKKyAgICAgICAgIENPTU1BTkQgJHtJTlRST1NQRUNUSU9OX0NPTVBJTEVSfSAtLWluY2x1ZGVkaXI9JHtDTUFLRV9CSU5BUllfRElSfSAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpciAtbyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LnR5cGVsaWIKKyAgICAgKQogIAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2gKaW5kZXggMGY2ZWVlZC4uZThkMWQ4YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0ODY0ODU3MGU0NDljZjdmODRhMjZkYzAzYzFlM2Y2MjBmYTY5NzU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZWQ0Y2Y0YWFhNmFhZDQxNzJlYzk5NDJlOTAzOWZiOGUxZWY2OGE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDI5IEZlYiAyMDE2IDE4OjEzOjM5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIE9wdGlvbnNHVEsuY21ha2U6IGRyb3AgdGhlIGhhcmRjb2RlZCBpbnRyb3NwZWN0aW9uL2d0a2RvYwpAQCAtMTEsMTYgKzExLDE3IEBACiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLQogIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIHwgNiAtLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IHdlYmtpdGd0ay0yLjEyLjEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZWJraXRndGstMi4xMi4xLm9yaWcvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKLSsrKyB3ZWJraXRndGstMi4xMi4xL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCi1AQCAtNDI0LDEyICs0MjQsNiBAQCBpZiAoVVNFX0xJQkhZUEhFTikKLSAgICAgZW5kaWYgKCkKK2RpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitpbmRleCA2NjFiNDBlLi40MDQ0NDFiIDEwMDY0NAorLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitAQCAtMzUyLDEyICszNTIsNiBAQCBpZiAoRU5BQkxFRF9DT01QSUxFUl9TQU5JVElaRVJTKQorICAgICBzZXQoRU5BQkxFX0lOVFJPU1BFQ1RJT04gT0ZGKQogIGVuZGlmICgpCiAgCiAtIyBPdmVycmlkZSB0aGUgY2FjaGVkIHZhcmlhYmxlcywgZ3RrLWRvYyBhbmQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRvIG5vdCByZWFsbHkgd29yayB3aGVuIGNyb3NzLWJ1aWxkaW5nLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdlYktpdE1hY3Jvcy1BcHBlbmQtdG8tSS1hbmQtbm90LXRvLWlzeXN0ZW0ucGF0Y2gKaW5kZXggOWZjMTQyMS4uYjMxMDI2NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlZjgzMmExMTViNDA4NjFjMDhkZjMzMzMzOWIxMzY2ZGE0OWU1MzkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlMWM2NTQwZjc5ODRiZDQ4ZTFlMmQ4MGQ5NjVmYTgyYzcwZGUzYzIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMTcgQXByIDIwMTYgMTI6MzU6NDEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIFdlYktpdE1hY3JvczogQXBwZW5kIHRvIC1JIGFuZCBub3QgdG8gLWlzeXN0ZW0KK1N1YmplY3Q6IFtQQVRDSF0gV2ViS2l0TWFjcm9zOiBBcHBlbmQgdG8gLUkgYW5kIG5vdCB0byAtaXN5c3RlbQogCiBnY2MtNiBoYXMgbm93IGludHJvZHVjZWQgc3RkbGliLmggaW4gbGlic3RkYysrIGZvciBiZXR0ZXIKIGNvbXBsaWFuY2UgYW5kIGl0cyBpbmNsdWRpbmcgdGhlIEMgbGlicmFyeSBzdGRsaWIuaCB1c2luZwpAQCAtMTcsNiArMTcsNyBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIC0tLQogIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KICBTb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSAgICAgICAgICAgfCA2ICsrKy0tLQpAQCAtMjcsMzIgKzI4LDMyIEBACiAgNiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKLWluZGV4IGJjMzdkZDMxLi40ZTQ5ODcxZiAxMDA2NDQKK2luZGV4IGIzYzdlMGIuLjg4NDQ2ZGUgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvc2hlbGwvQ01ha2VMaXN0cy50eHQKICsrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9zaGVsbC9DTWFrZUxpc3RzLnR4dAogQEAgLTM1LDcgKzM1LDcgQEAgV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCiAgV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke0pTQ19TT1VSQ0VTfSkKICBXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7VEVTVEFQSV9TT1VSQ0VTfSkKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKC4vICR7SmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFU30pCisgaW5jbHVkZV9kaXJlY3RvcmllcyguLyAke0phdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9ICR7SmF2YVNjcmlwdENvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKIC1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTSAke0phdmFTY3JpcHRDb3JlX1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKICtpbmNsdWRlX2RpcmVjdG9yaWVzKCR7SmF2YVNjcmlwdENvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQogIGFkZF9leGVjdXRhYmxlKGpzYyAke0pTQ19TT1VSQ0VTfSkKICB0YXJnZXRfbGlua19saWJyYXJpZXMoanNjICR7SlNDX0xJQlJBUklFU30pCiAgCiBkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQotaW5kZXggNzM1MDZjNzQuLjhlYjhiNDE1IDEwMDY0NAoraW5kZXggZjdkOGQ3MGEuLjNjMjdiOGJjIDEwMDY0NAogLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKICsrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCi1AQCAtMjgxLDcgKzI4MSw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKLSAgICAgICAgICR7R1RLMl9JTkNMVURFX0RJUlN9Ci0gICAgICAgICAke0dESzJfSU5DTFVERV9ESVJTfQorQEAgLTE1Nyw3ICsxNTcsNyBAQCBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCisgICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSzIgUFJJVkFURQorICAgICAgICAgJHtXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9CiAgICAgICkKIC0gICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVBsYXRmb3JtR1RLMiBTWVNURU0gUFJJVkFURQogKyAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJDb3JlUGxhdGZvcm1HVEsyIFBSSVZBVEUKICAgICAgICAgICR7V2ViQ29yZV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30KLSAgICAgKQotICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoV2ViQ29yZVBsYXRmb3JtR1RLMgotQEAgLTMwNSw3ICszMDUsNyBAQCBhZGRfZGVwZW5kZW5jaWVzKFdlYkNvcmVQbGF0Zm9ybUdUSyBXZWJDb3JlKQorICAgICAgICAgJHtHVEsyX0lOQ0xVREVfRElSU30KKyAgICAgICAgICR7R0RLMl9JTkNMVURFX0RJUlN9CitAQCAtMTgzLDcgKzE4Myw3IEBAIGFkZF9kZXBlbmRlbmNpZXMoV2ViQ29yZVBsYXRmb3JtR1RLIFdlYkNvcmUpCiAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoV2ViQ29yZVBsYXRmb3JtR1RLIFBSSVZBVEUKICAgICAgJHtXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVN9CiAgKQpAQCAtNjEsNyArNjIsNyBAQAogICAgICAke1dlYkNvcmVfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9CiAgICAgICR7R1RLX0lOQ0xVREVfRElSU30KICAgICAgJHtHREtfSU5DTFVERV9ESVJTfQotQEAgLTMyMSw3ICszMjEsNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAorQEAgLTE5OSw3ICsxOTksNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAogICAgICAiJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvZ29iamVjdC8iCiAgKQogIApAQCAtNzEsMzMgKzcyLDMzIEBACiAgKQogIAogZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCi1pbmRleCBkODNhMmU3Ny4uNDAxMjQ2ZjQgMTAwNjQ0CitpbmRleCA4YzZlYmI1Li43NzJjMjQzIDEwMDY0NAogLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQogKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZQotQEAgLTEwNTAsNyArMTA1MCw3IEBAIGlmIChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMikKK0BAIC02NTUsNyArNjU1LDcgQEAgaWYgKEVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyKQogICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJLaXRQbHVnaW5Qcm9jZXNzMiBQUklWQVRFCi0gICAgICAgICAke1dlYktpdDJDb21tb25JbmNsdWRlRGlyZWN0b3JpZXN9CisgICAgICAgICAke1dlYktpdENvbW1vbkluY2x1ZGVEaXJlY3Rvcmllc30KICAgICAgKQogLSAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJLaXRQbHVnaW5Qcm9jZXNzMiBTWVNURU0gUFJJVkFURQogKyAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3RvcmllcyhXZWJLaXRQbHVnaW5Qcm9jZXNzMiBQUklWQVRFCi0gICAgICAgICAgJHtXZWJLaXQyQ29tbW9uU3lzdGVtSW5jbHVkZURpcmVjdG9yaWVzfQorICAgICAgICAgICR7V2ViS2l0Q29tbW9uU3lzdGVtSW5jbHVkZURpcmVjdG9yaWVzfQogICAgICAgICAgICR7R1RLMl9JTkNMVURFX0RJUlN9CiAgICAgICAgICAgJHtHREsyX0lOQ0xVREVfRElSU30KIGRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0TWFjcm9zLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdE1hY3Jvcy5jbWFrZQotaW5kZXggN2JjODk1NDMuLmQ5ODE4ZmE0IDEwMDY0NAoraW5kZXggYTFlN2U4Zi4uY2UyNDI3NCAxMDA2NDQKIC0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKICsrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRNYWNyb3MuY21ha2UKLUBAIC03OCw3ICs3OCw3IEBAIG1hY3JvKFdFQktJVF9GUkFNRVdPUktfREVDTEFSRSBfdGFyZ2V0KQotIGVuZG1hY3JvKCkKLSAKLSBtYWNybyhXRUJLSVRfRlJBTUVXT1JLIF90YXJnZXQpCi0tICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7JHtfdGFyZ2V0fV9TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFU30pCi0rICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHske190YXJnZXR9X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfSkKLSAgICAgdGFyZ2V0X3NvdXJjZXMoJHtfdGFyZ2V0fSBQUklWQVRFCi0gICAgICAgICAkeyR7X3RhcmdldH1fSEVBREVSU30KK0BAIC0xMzQsNyArMTM0LDcgQEAgbWFjcm8oV0VCS0lUX0ZSQU1FV09SSyBfdGFyZ2V0KQogICAgICAgICAgJHske190YXJnZXR9X1NPVVJDRVN9CisgICAgICkKKyAgICAgdGFyZ2V0X2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtfdGFyZ2V0fSBQVUJMSUMgIiQ8QlVJTERfSU5URVJGQUNFOiR7JHtfdGFyZ2V0fV9JTkNMVURFX0RJUkVDVE9SSUVTfT4iKQorLSAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke190YXJnZXR9IFNZU1RFTSBQUklWQVRFICIkPEJVSUxEX0lOVEVSRkFDRTokeyR7X3RhcmdldH1fU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9PiIpCisrICAgIHRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7X3RhcmdldH0gUFJJVkFURSAiJDxCVUlMRF9JTlRFUkZBQ0U6JHske190YXJnZXR9X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTfT4iKQorICAgICB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcygke190YXJnZXR9IFBSSVZBVEUgIiQ8QlVJTERfSU5URVJGQUNFOiR7JHtfdGFyZ2V0fV9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVN9PiIpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke190YXJnZXR9ICR7JHtfdGFyZ2V0fV9MSUJSQVJJRVN9KQorICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtfdGFyZ2V0fSBQUk9QRVJUSUVTIENPTVBJTEVfREVGSU5JVElPTlMgIkJVSUxESU5HXyR7X3RhcmdldH0iKQogZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dAotaW5kZXggZTgzMmE4NmQuLmNlOTJjODY0IDEwMDY0NAoraW5kZXggZGMyYjYxZS4uMDEyOGRjYSAxMDA2NDQKIC0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9DTWFrZUxpc3RzLnR4dAogKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NNYWtlTGlzdHMudHh0CiBAQCAtNTcsNyArNTcsNyBAQCBlbmRpZiAoKQpAQCAtMTEwLDExICsxMTEsMTEgQEAKICB0YXJnZXRfbGlua19saWJyYXJpZXMoTWluaUJyb3dzZXIgJHtNaW5pQnJvd3Nlcl9MSUJSQVJJRVN9KQogIAogZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1HVEsuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtR1RLLmNtYWtlCi1pbmRleCAxYmUzZGQ1Mi4uN2JkZGRmMzcgMTAwNjQ0CitpbmRleCA0YWVmNjk1Li5hMTRiMTYzIDEwMDY0NAogLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQogKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUdUSy5jbWFrZQogQEAgLTIwLDcgKzIwLDcgQEAgaW5jbHVkZV9kaXJlY3RvcmllcygKLSAgICAgJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9ndGsKKyAgICAgJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL2d0awogICkKICAKIC1pbmNsdWRlX2RpcmVjdG9yaWVzKFNZU1RFTQpAQCAtMTIyLDYgKzEyMywzIEBACiAgICAgICR7R0RLM19JTkNMVURFX0RJUlN9CiAgICAgICR7R0xJQl9JTkNMVURFX0RJUlN9CiAgICAgICR7R1RLM19JTkNMVURFX0RJUlN9Ci0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaAppbmRleCBmYjRjNGRjLi45MjNkMDBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1Gcm9tIDk4YjEzNTlhMGNkODdiYmRiMjJjZWY5OGJhNTk0NDQwZjRjNTdkOTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5NzY3YTQ3OTExMWY5YzZmMjgwYzQzMTc2YzMzZGU1MGFlZTdmNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMjggT2N0IDIwMTUgMTQ6MTg6NTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzldIFdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcywgYWRkIENNQUtFX0NfRkxBR1MgdG8KLSB0aGUgY29tcGlsZXIgZmxhZ3MuCitTdWJqZWN0OiBbUEFUQ0hdIFdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcywgYWRkIENNQUtFX0NfRkxBR1MgdG8gdGhlCisgY29tcGlsZXIgZmxhZ3MuCiAKIGctaXItY29tcGlsZXIgaXMgdXNpbmcgYSBDIGNvbXBpbGVyIGludGVybmFsbHksIHNvIGl0IG5lZWRzIHRvIHNldAogdGhlIHByb3BlciBmbGFncyBmb3IgaXQuCkBAIC0xNSwyNyArMTUsMjQgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1HVEsuY21ha2UKLWluZGV4IDdmOTJhZTcyLi5hMzNjNmE4NiAxMDA2NDQKK2luZGV4IGRjNmIzMDYuLmEwNzRhODAgMTAwNjQ0CiAtLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCiArKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtR1RLLmNtYWtlCi1AQCAtMTEyNiw3ICsxMTI2LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSAgICAgREVQRU5EUyBXZWJLaXQyCi0gICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCi0tICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyBMREZMQUdTPQotKyAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30gTERGTEFHUz0KLSAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgotICAgICAgICAgJHtJTlRST1NQRUNUSU9OX1NDQU5ORVJ9Ci0gICAgICAgICAtLXF1aWV0Ci1AQCAtMTE2OSw3ICsxMTY5LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAotICAgICBPVVRQVVQgJHtDTUFLRV9CSU5BUllfRElSfS9XZWJLaXQyV2ViRXh0ZW5zaW9uLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L0phdmFTY3JpcHRDb3JlLSR7V0VCS0lUR1RLX0FQSV9WRVJTSU9OfS5naXIKLSAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgotLSAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKLSsgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zXCAke0NNQUtFX0NfRkxBR1N9Ci0gICAgICAgICBMREZMQUdTPSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MREZMQUdTfSIKLSAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgotICAgICAgICAgJHtJTlRST1NQRUNUSU9OX1NDQU5ORVJ9Ci0tLSAKLTIuMTQuMQotCitAQCAtNzMyLDcgKzczMiw3IEBAIGlmIChFTkFCTEVfSU5UUk9TUEVDVElPTikKKyAgICAgICAgIE9VVFBVVCAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICAgICAgREVQRU5EUyBXZWJLaXQKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9CSU5BUllfRElSfS9KYXZhU2NyaXB0Q29yZS0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCistICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgTERGTEFHUz0KKysgICAgICAgIENPTU1BTkQgQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSBDRkxBR1M9LVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9uc1wgJHtDTUFLRV9DX0ZMQUdTfSBMREZMQUdTPQorICAgICAgICAgICAgICR7TE9BREVSX0xJQlJBUllfUEFUSF9WQVJ9PSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MSUJSQVJZX1BBVEh9IgorICAgICAgICAgICAgICR7SU5UUk9TUEVDVElPTl9TQ0FOTkVSfQorICAgICAgICAgICAgIC0tcXVpZXQKK0BAIC03NzQsNyArNzc0LDcgQEAgaWYgKEVOQUJMRV9JTlRST1NQRUNUSU9OKQorICAgICAgICAgT1VUUFVUICR7Q01BS0VfQklOQVJZX0RJUn0vV2ViS2l0MldlYkV4dGVuc2lvbi0ke1dFQktJVEdUS19BUElfVkVSU0lPTn0uZ2lyCisgICAgICAgICBERVBFTkRTICR7Q01BS0VfQklOQVJZX0RJUn0vSmF2YVNjcmlwdENvcmUtJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorICAgICAgICAgREVQRU5EUyAke0NNQUtFX0JJTkFSWV9ESVJ9L1dlYktpdDItJHtXRUJLSVRHVEtfQVBJX1ZFUlNJT059LmdpcgorLSAgICAgICAgQ09NTUFORCBDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IENGTEFHUz0tV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zCisrICAgICAgICBDT01NQU5EIENDPSR7Q01BS0VfQ19DT01QSUxFUn0gQ0ZMQUdTPS1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNcICR7Q01BS0VfQ19GTEFHU30KKyAgICAgICAgICAgICBMREZMQUdTPSIke0lOVFJPU1BFQ1RJT05fQURESVRJT05BTF9MREZMQUdTfSIKKyAgICAgICAgICAgICAke0xPQURFUl9MSUJSQVJZX1BBVEhfVkFSfT0iJHtJTlRST1NQRUNUSU9OX0FERElUSU9OQUxfTElCUkFSWV9QQVRIfSIKKyAgICAgICAgICAgICAke0lOVFJPU1BFQ1RJT05fU0NBTk5FUn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLXdlYmtpdGd0ay1maXgtQ1ZFLTIwMTctMTc4MjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS13ZWJraXRndGstZml4LUNWRS0yMDE3LTE3ODIxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZjc1OTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS13ZWJraXRndGstZml4LUNWRS0yMDE3LTE3ODIxLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0JhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxNy0xNzgyMS4gUmVmZXIgdG8KK2h0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTctMTc4MjEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzIxMTkvd2Via2l0XQorQ1ZFOiBDVkUtMjAxNy0xNzgyMQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworRnJvbSAyYTE3YjE1Mjk3ZWI4ODZiMGJmYjdkMDk4ZWY2MDdjZmFkNmMzZGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIm1jYXRhbnphcm9AaWdhbGlhLmNvbSIKKyA8bWNhdGFuemFyb0BpZ2FsaWEuY29tQDI2OGY0NWNjLWNkMDktMDQxMC1hYjNjLWQ1MjY5MWI0ZGJmYz4KK0RhdGU6IFdlZCwgMjMgTWF5IDIwMTggMTc6NTQ6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUHJvaGliaXQgc2hyaW5raW5nIHRoZSBGYXN0Qml0VmVjdG9yCisgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTAyMAorCitSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KKworUHJvaGliaXQgc2hyaW5raW5nIHRoZSBGYXN0Qml0VmVjdG9yLiBJdCdzIG5vdCBwcmVwYXJlZCBmb3IgdGhpcyBhbmQgdGhlIGN1cnJlbnQgdXNhZ2UgZG9lcworbm90IHJlcXVpcmUgaXQuCisKKyogd3RmL0Zhc3RCaXRWZWN0b3IuY3BwOgorKFdURjo6RmFzdEJpdFZlY3RvcldvcmRPd25lcjo6cmVzaXplU2xvdyk6CisKK2dpdC1zdm4taWQ6IGh0dHA6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVua0AyMzIxMTkgMjY4ZjQ1Y2MtY2QwOS0wNDEwLWFiM2MtZDUyNjkxYjRkYmZjCistLS0KKyBTb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcCB8ICAyICsrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuY3BwCitpbmRleCBlZWQzMTY5NzVmNC4uOGIwMTlhYWEzZWQgMTAwNjQ0CistLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmNwcAorKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5jcHAKK0BAIC00Miw2ICs0Miw4IEBAIHZvaWQgRmFzdEJpdFZlY3RvcldvcmRPd25lcjo6c2V0RXF1YWxzU2xvdyhjb25zdCBGYXN0Qml0VmVjdG9yV29yZE93bmVyJiBvdGhlcikKKyB2b2lkIEZhc3RCaXRWZWN0b3JXb3JkT3duZXI6OnJlc2l6ZVNsb3coc2l6ZV90IG51bUJpdHMpCisgeworICAgICBzaXplX3QgbmV3TGVuZ3RoID0gZmFzdEJpdFZlY3RvckFycmF5TGVuZ3RoKG51bUJpdHMpOworKworKyAgICBSRUxFQVNFX0FTU0VSVChuZXdMZW5ndGggPj0gYXJyYXlMZW5ndGgoKSk7CisgICAgIAorICAgICAvLyBVc2UgZmFzdENhbGxvYyBpbnN0ZWFkIG9mIGZhc3RSZWFsbG9jIGJlY2F1c2Ugd2UgZXhwZWN0IHRoZSBjb21tb24KKyAgICAgLy8gdXNlIGNhc2UgZm9yIHRoaXMgbWV0aG9kIHRvIGJlIGluaXRpYWxpemluZyB0aGUgc2l6ZSBvZiB0aGUgYml0dmVjdG9yLgorLS0gCisyLjE3LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMTItc291cC1Gb3J3YXJkLWRlY2xhcmUtVVJMLWNsYXNzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMTItc291cC1Gb3J3YXJkLWRlY2xhcmUtVVJMLWNsYXNzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZmQ0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAxMi1zb3VwLUZvcndhcmQtZGVjbGFyZS1VUkwtY2xhc3MucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA1OWY2OTAzYWQ5NmYzMjEzZjI0OGI2NzJkNWZkNTI2Y2MwZDY2NmNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjAgTWF5IDIwMTggMTQ6Mjg6MjcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc291cDogRm9yd2FyZCBkZWNsYXJlIFVSTCBjbGFzcworCitUaGlzIGhlbHBzIGdldHRpbmcgYXdheSB3aXRoIGNvbXBpbGVyIGVycm9ycyBzZWVuIHdpdGggY2xhbmcKKworL21udC9hL29lL3dvcmtzcGFjZS9zb3VyY2VzL3dlYmtpdGd0ay9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmg6Njg6NjI6CitlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ1VSTCcKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZXNvdXJjZUVycm9yPiBjaGVja1RMU0Vycm9ycyhjb25zdCBVUkwmLAorR1Rsc0NlcnRpZmljYXRlKiwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzE4NzYvd2Via2l0XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmgKK2luZGV4IDAzYmQ3MmJhLi43Y2E4NzkyZCAxMDA2NDQKKy0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uaAorKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5oCitAQCAtNDMsNiArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CisgCisgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOworIGNsYXNzIFJlc291cmNlRXJyb3I7CisrY2xhc3MgVVJMOworIHN0cnVjdCBTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3M7CisgCisgY2xhc3MgU291cE5ldHdvcmtTZXNzaW9uIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2RldGVjdC1hdG9taWNzLWR1cmluZy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MTU3ZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2RldGVjdC1hdG9taWNzLWR1cmluZy1jb25maWd1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDBiMzgxMTc3MWFlNjM4NTUwM2YyZDk0OWY5NDMzZDhmODEwZDJmZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNyBNYXkgMjAxNyAyMjozNDoyNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDgvOV0gd2Via2l0Z3RrOiBGaXggYnVpbGQgZm9yIGFybXY1Ci0KLVRha2VuIGZyb20KLWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE5MDAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCB8IDEwICsrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA2YjVlNDViOS4uNDZlZTNjMjIgMTAwNjQ0Ci0tLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAotKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKLUBAIC0yMDUsNyArMjA1LDYgQEAgc2V0KFdURl9IRUFERVJTCi0gCi0gc2V0KFdURl9TT1VSQ0VTCi0gICAgIEFzc2VydGlvbnMuY3BwCi0tICAgIEF0b21pY3MuY3BwCi0gICAgIEF1dG9tYXRpY1RocmVhZC5jcHAKLSAgICAgQml0VmVjdG9yLmNwcAotICAgICBDUFVUaW1lLmNwcAotQEAgLTMzNiw2ICszMzUsMTUgQEAgaWYgKE5PVCBVU0VfU1lTVEVNX01BTExPQykKLSAgICAgbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUyBibWFsbG9jKQotIGVuZGlmICgpCi0gCi0rZmlsZShXUklURSAke0NNQUtFX0JJTkFSWV9ESVJ9L3Rlc3RfYXRvbWljcy5jcHAKLSsgICAgICJpbnQgbWFpbih2b2lkKVxuIgotKyAgICAgInsgbG9uZyBsb25nIHggPSAxOyByZXR1cm4gKGludCkgX19zeW5jX2FkZF9hbmRfZmV0Y2hfOCgmeCwgMSk7IH1cbiIpCi0rdHJ5X2NvbXBpbGUoQVRPTUlDU19CVUlMRF9TVUNDRUVERUQgJHtDTUFLRV9CSU5BUllfRElSfSAke0NNQUtFX0JJTkFSWV9ESVJ9L3Rlc3RfYXRvbWljcy5jcHApCi0raWYgKE5PVCBBVE9NSUNTX0JVSUxEX1NVQ0NFRURFRCkKLSsgICAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMgQXRvbWljcy5jcHApCi0rZW5kaWYgKCkKLStmaWxlKFJFTU9WRSAke0NNQUtFX0JJTkFSWV9ESVJ9L3Rlc3RfYXRvbWljcy5jcHApCi0rCi0gbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKLSAgICAgdW5pY29kZS9pY3UvQ29sbGF0b3JJQ1UuY3BwCi0gKQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2RldGVjdC1nc3RyZWFtZXItZ2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvZGV0ZWN0LWdzdHJlYW1lci1nbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2FlNDhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2RldGVjdC1nc3RyZWFtZXItZ2wucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorRnJvbTogQWxiZXJ0byBHYXJjaWEgPGJlcnRvQGlnYWxpYS5jb20+CitTdWJqZWN0OiBEaXNhYmxlIFVTRV9HU1RSRUFNRVJfR0wgaXMgdGhlIHBhY2thZ2UgaXMgbm90IGZvdW5kCitGb3J3YXJkZWQ6IG5vCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiB3ZWJraXRndGsvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHdlYmtpdGd0ay5vcmlnL1NvdXJjZS9jbWFrZS9HU3RyZWFtZXJDaGVja3MuY21ha2UKKysrKyB3ZWJraXRndGsvU291cmNlL2NtYWtlL0dTdHJlYW1lckNoZWNrcy5jbWFrZQorQEAgLTQzLDcgKzQzLDggQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFCTEVfV0VCX0FVRElPKQorICAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkdTdHJlYW1lciAxLjEwIGlzIG5lZWRlZCBmb3IgVVNFX0dTVFJFQU1FUl9HTC4iKQorICAgICAgICAgZWxzZSAoKQorICAgICAgICAgICAgIGlmIChOT1QgUENfR1NUUkVBTUVSX0dMX0ZPVU5EKQorLSAgICAgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJHU3RyZWFtZXJHTCBpcyBuZWVkZWQgZm9yIFVTRV9HU1RSRUFNRVJfR0wuIikKKysgICAgICAgICAgICAgICAgc2V0KFVTRV9HU1RSRUFNRVJfR0wgT0ZGKQorKyAgICAgICAgICAgICAgICBtZXNzYWdlKFNUQVRVUyAiR1N0cmVhbWVyR0wgaXMgbmVlZGVkIGZvciBVU0VfR1NUUkVBTUVSX0dMLiIpCisgICAgICAgICAgICAgZW5kaWYgKCkKKyAgICAgICAgIGVuZGlmICgpCisgICAgIGVuZGlmICgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNmFiNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL2ZpeC1jb25maWd1cmUtZmFpbHVyZS1hYXJjaDY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRml4IGNvbmZpZ3VyZSBmYWlsdXJlIGZvciBhYXJjaDY0Ci0KLXwgLS0gUGVyZm9ybWluZyBUZXN0IENYWF9DT01QSUxFUl9TVVBQT1JUU18tZmNvbG9yLWRpYWdub3N0aWNzIC0gRmFpbGVkCi18IC0tIFBlcmZvcm1pbmcgVGVzdCBDWFhfQ09NUElMRVJfU1VQUE9SVFNfLWZkaWFnbm9zdGljcy1jb2xvcj1hbHdheXMKLXwgLS0gUGVyZm9ybWluZyBUZXN0IENYWF9DT01QSUxFUl9TVVBQT1JUU18tZmRpYWdub3N0aWNzLWNvbG9yPWFsd2F5cyAtIFN1Y2Nlc3MKLXwgQ01ha2UgRXJyb3IgYXQgU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2U6NDIgKFdFQktJVF9QUkVQRU5EX0dMT0JBTF9DT01QSUxFUl9GTEFHKToKLXwgICBVbmtub3duIENNYWtlIGNvbW1hbmQgIldFQktJVF9QUkVQRU5EX0dMT0JBTF9DT01QSUxFUl9GTEFHIi4KLXwgQ2FsbCBTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6Ci18ICAgU291cmNlL2NtYWtlL1dlYktpdENvbW1vbi5jbWFrZTo1OCAoaW5jbHVkZSkKLXwgICBDTWFrZUxpc3RzLnR4dDoxNjYgKGluY2x1ZGUpCi18Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYW5qdWt1bWFyIE1hdGhhIDxtYW5qdWt1bWFyLmhhcnRoaWtvdGUtbWF0aGFAeGlsaW54LmNvbT4KLQotSW5kZXg6IHdlYmtpdGd0ay0yLjE0LjYvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZWJraXRndGstMi4xNC42Lm9yaWcvU291cmNlL2NtYWtlL09wdGlvbnNDb21tb24uY21ha2UgICAgIDIwMTgtMDItMTUgMTg6NTY6MjkuMzE1MjM4NTY0IC0wODAwCi0rKysgd2Via2l0Z3RrLTIuMTQuNi9Tb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1vbi5jbWFrZSAgMjAxOC0wMi0xNSAxODo1NDo1Ny40Njk1MTgwNjQgLTA4MDAKLUBAIC0zOSw3ICszOSw3IEBACi0gICAgIGlmIChOT1QgV1RGX0NQVV9BUk02NCkKLSAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIldURl9DUFVfQVJNNjRfQ09SVEVYQTUzIHNldCB3aXRob3V0IFdURl9DUFVfQVJNNjQiKQotICAgICBlbmRpZiAoKQotLSAgICBXRUJLSVRfUFJFUEVORF9HTE9CQUxfQ09NUElMRVJfRkxBRygtbWZpeC1jb3J0ZXgtYTUzLTgzNTc2OSkKLSsgICAgV0VCS0lUX1BSRVBFTkRfR0xPQkFMX0NPTVBJTEVSX0ZMQUdTKC1tZml4LWNvcnRleC1hNTMtODM1NzY5KQotIGVuZGlmICgpCi0KLSBFWFBPU0VfVkFSSUFCTEVfVE9fQlVJTEQoV1RGX0NQVV9BUk02NF9DT1JURVhBNTMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsveDMyX3N1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsveDMyX3N1cHBvcnQucGF0Y2gKaW5kZXggNWYyMzgzNy4uODVkMjgxZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrL3gzMl9zdXBwb3J0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay94MzJfc3VwcG9ydC5wYXRjaApAQCAtMSwxMyArMSwyMiBAQAotRnJvbTogRGFuaWVsIFNjaGVwbGVyIDxkc2NoZXBsZXJAZ21haWwuY29tPgotU3ViamVjdDogRml4IEZUQkZTIGluIHgzMgotQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzAwNzk1Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1JbmRleDogd2Via2l0Z3RrLTIuMTYuMS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworRnJvbSA4OTc1NjNhMDM5NzI2NmQ4Y2ViMDU4ZjE3MmUxNmIwNjQxOWIyNTkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIFNjaGVwbGVyIDxkc2NoZXBsZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNiBNYXIgMjAxOCAxNzo0ODozNCArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggRlRCRlMgaW4geDMyCisKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3ZWJraXRndGstMi4xNi4xLm9yaWcvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAotKysrIHdlYmtpdGd0ay0yLjE2LjEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAotQEAgLTE3Miw3ICsxNzIsMTEgQEAKKworLS0tCisgU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCitpbmRleCA4NTBlMjk4Li41NTFjMDQ3IDEwMDY0NAorLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorQEAgLTEzMiw3ICsxMzIsMTEgQEAKICAvKiBDUFUoWDg2XzY0KSAtIEFNRDY0IC8gSW50ZWw2NCAvIHg4Nl82NCA2NC1iaXQgKi8KICAjaWYgICBkZWZpbmVkKF9feDg2XzY0X18pIFwKICAgICAgfHwgZGVmaW5lZChfTV9YNjQpCkBAIC0xNyw1ICsyNiw1IEBACiAgI2RlZmluZSBXVEZfQ1BVX1g4Nl82NCAxCiArI2VuZGlmCiAgI2RlZmluZSBXVEZfQ1BVX1g4Nl9TU0UyIDEKKyAjZGVmaW5lIFdURl9DUFVfS05PV04gMQogICNlbmRpZgotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyOWZhN2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMTguNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVncy53ZWJraXQub3JnLyIKLQotTElDRU5TRSA9ICJCU0QgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vU291cmNlL0phdmFTY3JpcHRDb3JlL0NPUFlJTkcuTElCO21kNT1kMGM2ZDYzOTdhNWQ4NDI4NmRkYTc1OGRhNTdiZDY5MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUFQUExFO21kNT00NjQ2ZjkwMDgyYzQwYmNmMjk4YzI4NWY4YmFiMGIxMiBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTI7bWQ1PTM2MzU3ZmZkZTJiNjRhZTE3N2IyNDk0NDQ1Yjc5ZDIxIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMi4xO21kNT1hNzc4YTMzZWYzMzhhYmJhZjhiOGE3YzM2YjZlZWM4MCBcCi0JCSAgICIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8veDMyX3N1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZXRlY3QtYXRvbWljcy1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWNvbmZpZ3VyZS1mYWlsdXJlLWFhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtZ2xlczMtaGVhZGVyLXdoZW4tZ2xlczItaXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxYTU0ODU5NTEzNWVlNzVhZDNiZjJlMThhYzgzMTEyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzOTEyY2MyZjQwZjEyZTQ1MmJlMWNhNGJhYmRiZGFhYzBlYzRmODI4ZDQ0MTI1N2E2YjA2YzI5NjNiYmFjM2MiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi0jIGRlcGVuZHMgb24gbGlieHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLURFUEVORFMgPSAiemxpYiBsaWJzb3VwLTIuNCBjdXJsIGxpYnhtbDIgY2Fpcm8gbGlieHNsdCBsaWJ4dCBsaWJpZG4gbGliZ2NyeXB0IFwKLSAgICAgICAgICAgZ3RrKzMgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZmxleC1uYXRpdmUgZ3BlcmYtbmF0aXZlIHNxbGl0ZTMgXAotCSAgIHBhbmdvIGljdSBiaXNvbi1uYXRpdmUgZ2F3ayBpbnRsdG9vbC1uYXRpdmUgbGlid2VicCBcCi0JICAgYXRrIHVkZXYgaGFyZmJ1enoganBlZyBsaWJwbmcgcHVsc2VhdWRpbyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgbGlieGNvbXBvc2l0ZSBsaWJ4dHN0IFwKLQkgICBydWJ5LW5hdGl2ZSBsaWJub3RpZnkgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIFwKLQkgICBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlidGFzbjEgXAotICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICd3YXlsYW5kJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICd3ZWJnbCBvcGVuZ2wnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICBlbmNoYW50IFwKLSAgICAgICAgICAgICAgICAgICBsaWJzZWNyZXQgXAotICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9OLC1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9GRix3YXlsYW5kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1ERU5BQkxFX1gxMV9UQVJHRVQ9T04sLURFTkFCTEVfWDExX1RBUkdFVD1PRkYsdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHW2dlb2NsdWVdID0gIi1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9OLC1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9GRixnZW9jbHVlIgotUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItREVOQUJMRV9TUEVMTENIRUNLPU9OLC1ERU5BQkxFX1NQRUxMQ0hFQ0s9T0ZGLGVuY2hhbnQiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T04sLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PRkYsZ3RrKyIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdID0gIi1ERU5BQkxFX0dMRVMyPU9OLC1ERU5BQkxFX0dMRVMyPU9GRix2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1t3ZWJnbF0gPSAiLURFTkFCTEVfV0VCR0w9T04sLURFTkFCTEVfV0VCR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLURFTkFCTEVfT1BFTkdMPU9OLC1ERU5BQkxFX09QRU5HTD1PRkYsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItRFVTRV9MSUJTRUNSRVQ9T04sLURVU0VfTElCU0VDUkVUPU9GRixsaWJzZWNyZXQiCi1QQUNLQUdFQ09ORklHW2xpYmh5cGhlbl0gPSAiLURVU0VfTElCSFlQSEVOPU9OLC1EVVNFX0xJQkhZUEhFTj1PRkYsbGliaHlwaGVuIgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0JCS1EUE9SVD1HVEsgXAotCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAotCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCi0gICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uYCBcCi0JCSIKLQotIyBHTC9HTEVTIGhlYWRlciBjbGFzaDogYm90aCBkZWZpbmUgdGhlIHNhbWUgdGhpbmcsIGRpZmZlcmVudGx5LCBvbiAzMiBiaXQgeDg2Ci1FWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURVU0VfR1NUUkVBTUVSX0dMPU9GRiAiCi0KLSMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgYmludXRpbHMgMi4yNS4xIGhhcyBhIGJ1ZyBvbiBhYXJjaDY0OgotIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODQzMAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hYXJjaDY0ID0gIiAtRFdURl9DUFVfQVJNNjRfQ09SVEVYQTUzPU9OIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCi0jIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCi0jIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLVNFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKLVNFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAotIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCi0jIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCi0KLSMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCAxMSAoU2VnbWVudGF0aW9uIGZhdWx0KSAtIGNvcmUgZHVtcGVkCi0jIFNlZ21lbnRhdGlvbiBmYXVsdAotR0lfREFUQV9FTkFCTEVEX2FybXY3YSA9ICJGYWxzZSIKLUdJX0RBVEFfRU5BQkxFRF9hcm12N3ZlID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjIwLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxZmZjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjIwLjUuYmIKQEAgLTAsMCArMSwxMjQgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IHdlYiByZW5kZXJpbmcgZW5naW5lIGZvciB0aGUgR1RLKyBwbGF0Zm9ybSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvIgorCitMSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAorCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKKwkJICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly94MzJfc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV2ViS2l0TWFjcm9zLUFwcGVuZC10by1JLWFuZC1ub3QtdG8taXN5c3RlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZWN0LWdzdHJlYW1lci1nbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLXNvdXAtRm9yd2FyZC1kZWNsYXJlLVVSTC1jbGFzcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1QYWludGluZ0RhdGEtaGFzLW5vLW1lbWJlci1uYW1lZC1saWdodFZlY3Rvci1vbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13ZWJraXRndGstZml4LUNWRS0yMDE3LTE3ODIxLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzJhMDVmNmE0ZGMxYzc4YjA3OTU5MGE4ZmQyODA0MDEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTVjMGY4ZDI2ZTk2MDVhZmUwOTQ4ZDE2MWJhNWZkODJlZmVlOGVkYTJkZWJkNDA5ZmQ0MGE0NDBhYzNhZjk5MCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgorCitERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKK1BBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgorUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKKyMgU291cmNlIGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvd29mZjIKK1BBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorCQktRFBPUlQ9R1RLIFwKKwkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAorCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKKwkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAorICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbmAgXAorCQkiCisKKyMgR0wvR0xFUyBoZWFkZXIgY2xhc2g6IGJvdGggZGVmaW5lIHRoZSBzYW1lIHRoaW5nLCBkaWZmZXJlbnRseSwgb24gMzIgYml0IHg4NgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtRFVTRV9HU1RSRUFNRVJfR0w9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgorCisjIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYworRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgorCisjIGJpbnV0aWxzIDIuMjUuMSBoYXMgYSBidWcgb24gYWFyY2g2NDoKKyMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg0MzAKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FhcmNoNjQgPSAiIC1EV1RGX0NQVV9BUk02NF9DT1JURVhBNTM9T04iCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gTUlQUyBlaXRoZXIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKKworIyBKSVQgbm90IHN1cHBvcnRlZCBvbiBYMzIKKyMgQW4gYXR0ZW1wdCB3YXMgbWFkZSB0byB1cHN0cmVhbSBKSVQgc3VwcG9ydCBmb3IgeDMyIGluCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0NTAsIGJ1dCB0aGlzIHdhcyBjbG9zZWQgYXMKKyMgdW5yZXNvbHZlZCBkdWUgdG8gbGltaXRlZCBYMzIgYWRvcHRpb24uCitFWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYteDMyID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKKworU0VDVVJJVFlfQ0ZMQUdTX3JlbW92ZV9hYXJjaDY0ID0gIi1mcGllIgorU0VDVVJJVFlfQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtZlBJRSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS93ZWJraXQyZ3RrLTQuMC9pbmplY3RlZC1idW5kbGUvbGlid2Via2l0Mmd0a2luamVjdGVkYnVuZGxlLnNvIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiY2EtY2VydGlmaWNhdGVzIHNoYXJlZC1taW1lLWluZm8iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMzcwLworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NAorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5ODgwCisjIEpTQyBKSVQgY2FuIGJ1aWxkIG9uIEFSTXY3IHdpdGggLW1hcm0sIGJ1dCBkb2Vzbid0IHdvcmsgb24gcnVudGltZS4KKyMgVXBzdHJlYW0gb25seSB0ZXN0cyByZWd1bGFybHkgdGhlIEpTQyBKSVQgb24gQVJNdjcgd2l0aCBUaHVtYjIgKC1tdGh1bWIpLgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N2EgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3ciA9ICJ0aHVtYiIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjd2ZSA9ICJ0aHVtYiIKKworIyBxZW11OiB1bmNhdWdodCB0YXJnZXQgc2lnbmFsIDExIChTZWdtZW50YXRpb24gZmF1bHQpIC0gY29yZSBkdW1wZWQKKyMgU2VnbWVudGF0aW9uIGZhdWx0CitHSV9EQVRBX0VOQUJMRURfYXJtdjdhID0gIkZhbHNlIgorR0lfREFUQV9FTkFCTEVEX2FybXY3dmUgPSAiRmFsc2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwOC1hcHItZml4LXB0ZXN0LWhhbmctaW4tdGVzdHN0ci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDA4LWFwci1maXgtcHRlc3QtaGFuZy1pbi10ZXN0c3RyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MDlmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwOC1hcHItZml4LXB0ZXN0LWhhbmctaW4tdGVzdHN0ci5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDAzNmY5MDc0ODI0NzQxN2RiZmE3MTRiMWI5MTJjYTdkZDQwNTNmMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyMyBKdWwgMjAxOCAxNDoxMjozNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBhcHI6IGZpeCBwdGVzdCBoYW5nIGluIHRlc3RzdHIKKworcHRlc3QgaGFuZyBpbiB0ZXN0c3RyIHNpbmNlIHR1cm5zIGludG8gYSBub24tdGVybWluYXRpbmcgbG9vcCwKK2ZpeCBieSBiZWxvdyBiYWNrcG9ydGVkIHBhdGNoLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0aHViLmNvbS9hcGFjaGUvYXByL2NvbW1pdC8KKyAgICAgICAgIDJlOGZiZmY0ZWNmODJkMGRlY2Y2YmFmNzc0YzIwOTk0OGYyZjQ5OTg/ZGlmZj11bmlmaWVkXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdC90ZXN0c3RyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3Rlc3RzdHIuYyBiL3Rlc3QvdGVzdHN0ci5jCitpbmRleCBkOWE1MDU0Li45NTFhODMwIDEwMDY0NAorLS0tIGEvdGVzdC90ZXN0c3RyLmMKKysrKyBiL3Rlc3QvdGVzdHN0ci5jCitAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyB2b2lkIG92ZXJmbG93X3N0cmZzaXplKGFidHNfY2FzZSAqdGMsIHZvaWQgKmRhdGEpCisgICAgIGZvciAoOyBvZmYgPCA5OTk5OTk5OTk7IG9mZiArPSA5OTkpIHsKKyAgICAgICAgIGFwcl9zdHJmc2l6ZShvZmYsIGJ1Zik7CisgICAgIH0KKy0gICAgZm9yIChvZmYgPSAxOyBvZmYgPCBMT05HX01BWCAmJiBvZmYgPiAwOyBvZmYgKj0gMikgeworKyAgICBmb3IgKG9mZiA9IExPTkdfTUFYOyBvZmYgPiAxOyBvZmYgLz0gMikgeworICAgICAgICAgYXByX3N0cmZzaXplKG9mZiwgYnVmKTsKKyAgICAgICAgIGFwcl9zdHJmc2l6ZShvZmYgKyAxLCBidWYpOworICAgICAgICAgYXByX3N0cmZzaXplKG9mZiAtIDEsIGJ1Zik7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMy5iYgppbmRleCA3NTYzYTM4Li43YmZiNjk4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNi4zLmJiCkBAIC0xOCw2ICsxOCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWNvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNi1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDctZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWFwci1maXgtcHRlc3QtaGFuZy1pbi10ZXN0c3RyLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjEyZjJhMzQ5NDgzYWQ2ZjEyZGI0OWJhMDFmYmZkYmZhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsXzAuNjAuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsXzAuNjAuNi4xLmJiCmluZGV4IDE5YTcxNTUuLjE2MWJiNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIKQEAgLTI1LDcgKzI1LDEwIEBACiBGSUxFU19saWJwc3BlbGwgPSAiJHtsaWJkaXJ9L2xpYnBzcGVsbC5zby4qIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vcHNwZWxsLWNvbmZpZyIKIAotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCisKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBnZXR0ZXh0IHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkCiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vcHNwZWxsLWNvbmZpZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYxN2JiOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlZWVjNmNlYWQzMzUwZGNhNDhhMjM1MjcxYzEwNWIzZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNGYwYzI3YjYxZGJmZmJhN2E1YjViYTJmZjg4YzhjZWUxMGZmOGRhYzc3NGZhNWI3OWNlOTA2ODUzNjIzYjc1IgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgVGhlIGF0LXNwaTItY29yZSByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZDhlNDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI2LjIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBVC1TUEkgMiBUb29sa2l0IEJyaWRnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzNTVjNzkxNmE2OTUxMzQ5MGNiODNhZDM0MDE2YjE2OSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjYxODkxZjBhYmFlMTY4OWY2NjE3YTk2MzEwNWEzZjFkY2RhYjU5NzBjNGEzNmRlZDljNzlhN2E1NDRiMTZhNmUiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSBsaWJ4bWwyIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCisjIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZS8wMDAxLWJ1aWxkLUFkZC13aXRoLXN5c3RlbWR1c2VydW5pdGRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY4YzlmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIGZhMzc2NzYyYjkyNDA0YjllM2M0MzAwNTRiOGMzMzQxY2EwZmRkOGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNjowMDowMiArMDMwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIKLQotRGVmYXVsdCB0byAicGtnLWNvbmZpZyAtLXZhcmlhYmxlPXN5c3RlbWR1c2VydW5pdGRpciBzeXN0ZW1kIiBidXQKLWFsbG93IG92ZXJyaWRpbmcgdGhlIHZhbHVlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzkxMV0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLS0tLQotIGJ1cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSBjb25maWd1cmUuYWMgICAgfCA5ICsrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVzL01ha2VmaWxlLmFtIGIvYnVzL01ha2VmaWxlLmFtCi1pbmRleCA2ODhmODJhLi4xMGNkZTYyIDEwMDY0NAotLS0tIGEvYnVzL01ha2VmaWxlLmFtCi0rKysgYi9idXMvTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw3IEBAIG9yZy5hMTF5LkJ1cy5zZXJ2aWNlOiBvcmcuYTExeS5CdXMuc2VydmljZS5pbgotIEVYVFJBX0RJU1QgKz0gb3JnLmExMXkuQnVzLnNlcnZpY2UuaW4KLSBDTEVBTkZJTEVTICs9IG9yZy5hMTF5LkJ1cy5zZXJ2aWNlCi0gCi0tc3lzdGVtZF91c2VyZGlyID0gJChwcmVmaXgpL2xpYi9zeXN0ZW1kL3VzZXIKLStzeXN0ZW1kX3VzZXJkaXIgPSAkKHN5c3RlbWR1c2VydW5pdGRpcikKLSBzeXN0ZW1kX3VzZXJfREFUQSA9IGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlCi0gYXQtc3BpLWRidXMtYnVzLnNlcnZpY2U6IGF0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlLmluIE1ha2VmaWxlCi0gCSQoQU1fVl9HRU4pICQoU0VEKSAtZSAkKHN1YnN0aXR1dGlvbnMpICQ8ID4gJEAudG1wICYmIG12ICRALnRtcCAkQAotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGM0ZmNhMi4uMTQxNWNjYSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTQ2LDYgKzE0NiwxNSBAQCBlbHNlCi0gZmkKLSBBQ19TVUJTVChEQlVTX1NFUlZJQ0VTX0RJUikKLSAKLStBQ19BUkdfV0lUSChbc3lzdGVtZHVzZXJ1bml0ZGlyXSwKLSsgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbWR1c2VydW5pdGRpcj1ESVJdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXJlY3RvcnkgZm9yIHN5c3RlbWQgc2VydmljZSBmaWxlc10pLAotKyAgICAgICAgICAgIFtdLAotKyAgICAgICAgICAgIFt3aXRoX3N5c3RlbWR1c2VydW5pdGRpcj0kKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9c3lzdGVtZHVzZXJ1bml0ZGlyIHN5c3RlbWQpXSkKLStBQ19TVUJTVChbc3lzdGVtZHVzZXJ1bml0ZGlyXSwgWyR3aXRoX3N5c3RlbWR1c2VydW5pdGRpcl0pCi0rCi0rQUNfUEFUSF9QUk9HKEdMSUJfTUtFTlVNUywgZ2xpYi1ta2VudW1zKQotKwotIEdPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDSyhbMS4zMi4wXSkKLSAKLSBBQ19TVUJTVChMSUJUT09MX0VYUE9SVF9PUFRJT05TKQotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI2LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMWVlM2IuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGEwNDJlNGM4MDFmZGI3OTM3ODhiNzQ5ZWFiMjE0ODUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzgwZTBjZGY1ZTNkNzEzNDAwMzE1YjYzYzdkZWZmYTU2MTAzMmE2YzM3Mjg5MjExZDhhZmNmYWEyNjdjMjYxNSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjI4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NzVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yOC4wLmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWM0MmY3OTYzNmVkMWMwZTkwOGI3NDgzZDc4OWIzMmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDJhMjQ4N2FiMTFjZTQzYzI4OGU3M2IyNjY4ZWY4YjFhYjQwYTBlMmI0Zjk0ZTgwZmNhMDRhZDI3YjZmMWM4NyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGlieDExIGxpYnhpIGxpYnh0c3QiCisKK2luaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FTUVTT04gPSAiIC1Ec3lzdGVtZF91c2VyX2Rpcj0ke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRGRidXNfZGFlbW9uPSR7YmluZGlyfSIKKworR1RLRE9DX0VOQUJMRV9GTEFHID0gIi1EZW5hYmxlX2RvY3M9dHJ1ZSIKK0dUS0RPQ19ESVNBQkxFX0ZMQUcgPSAiLURlbmFibGVfZG9jcz1mYWxzZSIKKworR0lfRU5BQkxFX0ZMQUcgPSAiLURlbmFibGUtaW50cm9zcGVjdGlvbj15ZXMiCitHSV9ESVNBQkxFX0ZMQUcgPSAiLURlbmFibGUtaW50cm9zcGVjdGlvbj1ubyIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnJHtHSV9FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtHSV9ESVNBQkxFX0ZMQUd9JywgZCl9ICIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dUS0RPQ19FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7R1RLRE9DX0RJU0FCTEVfRkxBR30nLCBkKX0gIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAorICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0ay8wMDAxLVN3aXRjaC1mcm9tLWZpbGVuYW1lLXRvLWJhc2VuYW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtU3dpdGNoLWZyb20tZmlsZW5hbWUtdG8tYmFzZW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ3ZTgxZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0ay8wMDAxLVN3aXRjaC1mcm9tLWZpbGVuYW1lLXRvLWJhc2VuYW1lLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK0Zyb20gMDMzMDI1MTcxNWZlZTkwOGYyZjE2MjU2NWQ0ZmExZGY1MDMwZDBjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogVGh1LCAxNCBKdW4gMjAxOCAxNzoyMTo0OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBTd2l0Y2ggZnJvbSBmaWxlbmFtZSB0byBiYXNlbmFtZQorCitXaGVuIGF0ay1lbnVtLXR5cGVzLmggaXMgaW5zdGFsbGVkIGluIHRvIGEgc3lzdGVtLCB0aGUgdXNlciBsaWtlbHkgaGFzCitubyBhY2Nlc3MgdG8gdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBoZWFkZXJzIHdlcmUgYnVpbHQsIGVzcGVjaWFsbHkgaWYKK3RoZSBzb2Z0d2FyZSB3YXMgYnVpbHQgaW4gYSBzeXNyb290IGVudmlyb25tZW50LiBJZiB0aGUgaGVhZGVycyB3ZXJlCitidWlsdCBmb3IgYSBtdWxpdGxpYiBlbnZpcm9ubWVudCwgdGhlIGJ1aWxkIHBhdGhpbmcgbWF5IGJlIGRpZmZlcmVudC4KK1N1YnNlcXVlbnRseSwgaWYgdHdvIG11bGl0bGliIHZhcmlhbnRzIG9mIGF0ayBhcmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHRoZQoraGVhZGVycyBjb25mbGljdCBmb3Igbm8gb3RoZXIgcmVhc29uIHRoZW4gdGhleSB3ZXJlIGJ1aWx0IGluIHR3bworZGlmZmVyZW50IGxvY2F0aW9ucy4gU3dpdGNoaW5nIGZyb20gZmlsZW5hbWUgdG8gYmFzZW5hbWUsIHN0aWxsIHNob3VsZAorcHJvdmlkZSBzdWZmaWNpZW50IGluZm9ybWF0aW9uIG9uIHRoZSBwcm92aWRlbmNlIG9mIHRoZSBlbnVtcywgd2hpbGUgbm90Citjb25mbGljdGluZyBmb3IgcmVhbGx5IG5vIGdvb2QgcmVhc29uLgorCitTaWduZWQtb2ZmLWJ5OiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KKy0tLQorIGF0ay9hdGstZW51bS10eXBlcy5oLnRlbXBsYXRlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXRrL2F0ay1lbnVtLXR5cGVzLmgudGVtcGxhdGUgYi9hdGsvYXRrLWVudW0tdHlwZXMuaC50ZW1wbGF0ZQoraW5kZXggN2I0Y2VjNC4uODMyMWMyNCAxMDA2NDQKKy0tLSBhL2F0ay9hdGstZW51bS10eXBlcy5oLnRlbXBsYXRlCisrKysgYi9hdGsvYXRrLWVudW0tdHlwZXMuaC50ZW1wbGF0ZQorQEAgLTE0LDcgKzE0LDcgQEAgR19CRUdJTl9ERUNMUworIAorIC8qKiogQkVHSU4gZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKy0vKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGZpbGVuYW1lQCIgKi8KKysvKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGJhc2VuYW1lQCIgKi8KKyAvKioqIEVORCBmaWxlLXByb2R1Y3Rpb24gKioqLworIAorIC8qKiogQkVHSU4gdmFsdWUtaGVhZGVyICoqKi8KKy0tIAorMi4xNC4xLjQ1OS5nMjM4ZTQ4NworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0ay8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MDRhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDM4Mzg3NTdkMjk1OTBjYzFlZjk5Yzk3ZjcyNjgzNzczMjJmYzE3ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogRnJpLCA2IEFwciAyMDE4IDEyOjA0OjAwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBlbmFibGUgaW50cm9zcGVjdGlvbiBmb3IgY3Jvc3MtY29tcGlsZQorCitJdCB3b3JrcyBmaW5lIGluIE9FLWNvcmUgYW5kIGRvZXNuJ3QgbmVlZCB0byBiZSBkaXNhYmxlZC4gTGV0IHRoZSB1c2VyIGRlY2lkZQoraWYgaXQgc2hvdWxkIGJlIGRpc2FibGVkIG9yIG5vdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CistLS0KKyBhdGsvbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hdGsvbWVzb24uYnVpbGQgYi9hdGsvbWVzb24uYnVpbGQKK2luZGV4IDdiNWE2ODMuLjg1NWUyOGYgMTAwNjQ0CistLS0gYS9hdGsvbWVzb24uYnVpbGQKKysrKyBiL2F0ay9tZXNvbi5idWlsZAorQEAgLTEzOSw3ICsxMzksNyBAQCBsaWJhdGtfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogbGliYXRrLAorIAorIGRpc2FibGVfaW50cm9zcGVjdGlvbiA9IGdldF9vcHRpb24oJ2Rpc2FibGVfaW50cm9zcGVjdGlvbicpCisgCistaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgYW5kIG5vdCBkaXNhYmxlX2ludHJvc3BlY3Rpb24KKytpZiBub3QgZGlzYWJsZV9pbnRyb3NwZWN0aW9uCisgICBnbm9tZS5nZW5lcmF0ZV9naXIobGliYXRrLAorICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXM6IGF0a19zb3VyY2VzICsgYXRrX2hlYWRlcnMgKyBbIGF0a19lbnVtX2ggXSArIFsgYXRrX3ZlcnNpb25faCBdLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZTogJ0F0aycsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YjU5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJBY2Nlc3NpYmlsaXR5IHRvb2xraXQgZm9yIEdOT01FIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0dBUC8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGt1dGlsLmM7ZW5kbGluZT0xODttZDU9NmZkMzFjZDJmZGM5YjMwZjYxOWNhOGQ4MTliYzEyZDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0ay5oO2VuZGxpbmU9MTg7bWQ1PWZjZDc3MTAxODdlMGVhZTQ4NWUzNTZjMzBkMWIwYzNiIgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI3Y2RkY2MzMTNiOWEzZWZkMTliMmRkZjA3OWJhNjhmNSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImVmMDBmZjZiODM4NTFkZGRjOGRiMzhiNGQ5ZmFlZmZiOTk1NzJiYTE1MGIwNjY0ZWUwMmU0NmYwMTVlYTk3Y2IiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmIxM2I2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjguMS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCisKKyMgTmVlZCBnZXR0ZXh0LW5hdGl2ZSBhcyBNZXNvbiBjYW4ndCB0dXJuIG9mZiBpMThuCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGdsaWItMi4wIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworR1RLRE9DX0VOQUJMRV9GTEFHID0gIi1EZW5hYmxlX2RvY3M9dHJ1ZSIKK0dUS0RPQ19ESVNBQkxFX0ZMQUcgPSAiLURlbmFibGVfZG9jcz1mYWxzZSIKKworR0lfRU5BQkxFX0ZMQUcgPSAiLURkaXNhYmxlX2ludHJvc3BlY3Rpb249ZmFsc2UiCitHSV9ESVNBQkxFX0ZMQUcgPSAiLURkaXNhYmxlX2ludHJvc3BlY3Rpb249dHJ1ZSIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnJHtHSV9FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtHSV9ESVNBQkxFX0ZMQUd9JywgZCl9ICIKKworRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICcke0dUS0RPQ19FTkFCTEVfRkxBR30nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyR7R1RLRE9DX0RJU0FCTEVfRkxBR30nLCBkKX0gIgorCitTUkNfVVJJX2FwcGVuZCA9ICIgXAorICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1Td2l0Y2gtZnJvbS1maWxlbmFtZS10by1iYXNlbmFtZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGZiNWU3NDc0MjIwYWZhM2Y0Y2E3ZTQ1YWY5ZjNhMTEiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZDNhMWVhNmVjYzI2OGEyNDk3ZjBjZDAxOGU5NzA4NjBkZTI0YTZkNDIwODY5MTlkNmJmNmM4ZThkNTNmNGZjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgppbmRleCA4ZjNkYzQ1Li44Yjg5ZGU5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgpAQCAtMTEsNyArMTEsNyBAQAogREVQRU5EUyA9ICJhdHRyIgogCiBTUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYWNsLyR7QlB9LnNyYy50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjO3N1YmRpcj0ke1N9IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5hYztzdWJkaXI9JHtCUH0gXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwppbmRleCAyNGVmNWFkLi45ZmMwZjMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCkBAIC0yMyw3ICsyMywxMSBAQAogCSAgICBzLF5saWJkaXI9XCcke2Jhc2VfbGliZGlyfVwnJCxsaWJkaXI9XCcke2xpYmRpcn1cJywKIH0KIAotaW5oZXJpdCBwdGVzdAoraW5oZXJpdCBwdGVzdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInNldGZhdHRyIgorQUxURVJOQVRJVkVfVEFSR0VUW3NldGZhdHRyXSA9ICIke2JpbmRpcn0vc2V0ZmF0dHIiCiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJdGFyIC1jIC0tZXhjbHVkZT1leHQgdGVzdC8gfCAoIGNkICR7RH0ke1BURVNUX1BBVEh9ICYmIHRhciAteGYgLSApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iYXNoLWNvbXBsZXRpb24vYmFzaC1jb21wbGV0aW9uXzIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUxOWIzZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBmb3IgQmFzaCA0IgotSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYmFzaC1jb21wbGV0aW9uLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyODExNzQ5MmJkYzk0MDg0MzhlNjA0MTY4M2E0MjNjZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MWJhODkyZDNmNDI3ZDRhNjg2ZGUzMjY3M2YzNTQwMWJjOTQ3YTc4MDFmNjg0MTI3MTIwY2RiMTM2NDE0NDFlIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYmFzaC1jb21wbGV0aW9uLSg/UDxwdmVyPig/ITIwMDgpLispXC50YXIiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBjb21wYXRkaXIKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kLwotCWVjaG8gJy4gJHtkYXRhZGlyfS8ke0JQTn0vYmFzaF9jb21wbGV0aW9uJyA+JHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uCi0KLQkjIERlbGV0ZSBmaWxlcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IHV0aWwtbGludXgKLQlsb2NhbCBpCi0JZm9yIGkgaW4gbW91bnQgdW1vdW50IHJma2lsbDsgZG8KLQkJcm0gJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyRpCi0JZG9uZQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MDY0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi44LmJiCkBAIC0wLDAgKzEsNDIgQEAKK1NVTU1BUlkgPSAiUHJvZ3JhbW1hYmxlIENvbXBsZXRpb24gZm9yIEJhc2ggNCIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYXNoLWNvbXBsZXRpb24uYWxpb3RoLmRlYmlhbi5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL2Jhc2gtY29tcGxldGlvbi8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjAxYjZhZTYyZjdkNWZiNWIxYjI1ZTM0NDI3ZGI5MTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzAxZjU1NzBmNTY5OGEwZGRhOGRjOWNmYjJhODM3NDRkYWExZWM1NDc1ODM3M2E2ZTM0OWJkOTAzMzc1ZjU0ZCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJhc2gtY29tcGxldGlvbi0oP1A8cHZlcj4oPyEyMDA4KS4rKVwudGFyIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zY29wL2Jhc2gtY29tcGxldGlvbi9yZWxlYXNlcyIKKworUEFSQUxMRUxfTUFLRSA9ICIiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgY29tcGF0ZGlyCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24uZC8KKwllY2hvICcuICR7ZGF0YWRpcn0vJHtCUE59L2Jhc2hfY29tcGxldGlvbicgPiR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbgorCisJIyBEZWxldGUgZmlsZXMgYWxyZWFkeSBwcm92aWRlZCBieSB1dGlsLWxpbnV4CisJbG9jYWwgaQorCWZvciBpIGluIG1vdW50IHVtb3VudDsgZG8KKwkJcm0gJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyRpCisJZG9uZQorfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCisjIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcworUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYWRkLW9wdGlvbi1kZXYtZHNwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9hZGQtb3B0aW9uLWRldi1kc3AucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMjk4Y2UuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9hZGQtb3B0aW9uLWRldi1kc3AucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1BZGQgY29uZmlnIG9wdGlvbiAtLXdpdGgtZGV2LWRzcC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFpoYW5nIFhpYW8gPHhpYW8uemhhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMDYsNiArMTA2LDE2IEBAIEFDX0FSR19XSVRIKHB5dGhvbixbICAtLXdpdGgtcHl0aG9uW1s9QVIKLSAgIGZpCi0gICBdKQotIAotK0FDX0FSR19XSVRIKGRldi1kc3AsWyAgLS13aXRoLWRldi1kc3AgICAgICAgICAgZW5hYmxlcyBkZXYvZHNwIGZvciBlbnRyb3B5IHByb2R1Y2luZy4gYXV0byBmb3IgYXV0by1kZXRlY3RpbmcgZGV2L2RlcCBvbiBob3N0LiBbW2RlZmF1bHQ9bm9dXV0sWwotKyAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShbSEFWRV9ERVZfRFNQXSwgMSkKLSsgIGVsc2UKLSsgICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gYXV0bzsgIHRoZW4KLSsgICAgICBhY19kZXRlY3RfZGV2X2RzcD15ZXMKLSsgICAgZmkKLSsgIGZpCi0rICBdLFthY19kZXRlY3RfZGV2X2RzcD1ub10pCi0rCi0gIyBDaGVjayBmb3IgZXhwZXJ0IG1vZGUKLSBpZiB0ZXN0ICIkYWNfZW5hYmxlX2V4cGVydF9tb2RlIiA9IHllczsgdGhlbgotICAgQkVFX0VYUEVSVF9NT0RFCi1AQCAtNDY0LDcgKzQ3NCw3IEBAIGxpbnV4KikKLSAgICAgICBhY19jdl9oYXZlX2Rldl9kc3A9bm8KLSAgICAgZmkKLSAgICAgXSkKLS0gIGlmIHRlc3QgIiRhY19jdl9oYXZlX2Rldl9kc3AiID0geWVzOyB0aGVuCi0rICBpZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9kZXZfZHNwIiA9IHllcyAmJiB0ZXN0ICIkYWNfZGV0ZWN0X2Rldl9kc3AiID0geWVzOyB0aGVuCi0gICAgIEFDX0RFRklORShbSEFWRV9ERVZfRFNQXSwgMSkKLSAgIGZpCi0gICA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9iZWVjcnlwdC1lbmFibGUtcHRlc3Qtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvYmVlY3J5cHQtZW5hYmxlLXB0ZXN0LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNTUxM2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9iZWVjcnlwdC1lbmFibGUtcHRlc3Qtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWJlZWNyeXB0OiBlbmFibGUgcHRlc3Qgc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1BZGQgaW5zdGFsbC1wdGVzdCBydWxlcy4KLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBNYWtlZmlsZS5hbSAgICAgICB8IDMgKysrCi0gdGVzdHMvTWFrZWZpbGUuYW0gfCAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiN2U3ODY5Li41MDc2ZjU5IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNzMsMyArNzMsNiBAQCBESVNUQ0xFQU5GSUxFUyA9IG1wb3B0LnMgYmxvd2Zpc2hvcHQucyBzaGExb3B0LnMKLSAKLSBiZW5jaDoKLSAJKGNkIHRlc3RzICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGJlbmNoKQotKwotK2luc3RhbGwtcHRlc3Q6Ci0rCShjZCB0ZXN0cyAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBjaGVja19QUk9HUkFNUykKLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxNjA0ZTVlLi5kOGRiOGQ4IDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTAxLDMgKzEwMSw2IEBAIGJlbmNoOiBiZW5jaG1lIGJlbmNocnNhIGJlbmNoaGYgYmVuY2hiYwotIAkuL2JlbmNoYmMgQUVTIDEyOAotIAkuL2JlbmNoYmMgQmxvd2Zpc2ggMTI4Ci0gCS4vYmVuY2hiYyBCbG93ZmlzaCAxMjgKLSsKLStjaGVja19QUk9HUkFNUzoKLSsJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJChjaGVja19QUk9HUkFNUykKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2Rpc2FibGUtaWN1LWNoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9kaXNhYmxlLWljdS1jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFiMWZhNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2Rpc2FibGUtaWN1LWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotV2UgYXJlIHVuYWJsZSB0byBydW4gY29kZSBhdCBjb25maWd1cmUgdGltZSBpbiBhIGNyb3NzIGVudmlyb25lbW50LCBidXQgYXMgd2UKLWNvbnRyb2wgdGhlIGJ1aWxkIHdlIGNhbiBiZSBmYWlybHkgY2VydGFpbiB0aGlzIGRlcGVuZGVuY3kgaXMgbWV0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1KTCAwNS8wNy8xMAotSW5kZXg6IGJlZWNyeXB0LTQuMi4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJlZWNyeXB0LTQuMi4xLm9yaWcvY29uZmlndXJlLmFjCTIwMTAtMTEtMjYgMTc6MTI6MjUuMDAwMDAwMDAwICswODAwCi0rKysgYmVlY3J5cHQtNC4yLjEvY29uZmlndXJlLmFjCTIwMTAtMTEtMjYgMTc6MTI6MzAuMDAwMDAwMDAwICswODAwCi1AQCAtMjkyLDMyICsyOTIsNiBAQAotICMgUHJlZGVmaW5lcyBhbmQgY2hlY2tzIGZvciBDKysgQVBJIHN1cHBvcnQKLSBBSF9URU1QTEFURShbQ1BQR0xVRV0sW0RlZmluZSB0byAxIGlmIHlvdSB3YW50IHRvIGluY2x1ZGUgdGhlIEMrKyBjb2RlXSkKLSAKLS1pZiB0ZXN0ICIkYWNfd2l0aF9jcGx1c3BsdXMiID0geWVzOyB0aGVuCi0tICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBJQk0ncyBJQ1UgbGlicmFyeSB2ZXJzaW9uID49IDIuOF0pCi0tICBBQ19MQU5HX1BVU0goQykKLS0gIEFDX1JVTl9JRkVMU0UoWwotLSAgICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8dW5pY29kZS91dmVyc2lvbi5oPl1dLFtbCi0tICAgICAgI2lmIFVfSUNVX1ZFUlNJT05fTUFKT1JfTlVNIDwgMgotLSAgICAgIGV4aXQoMSk7Ci0tICAgICAgI2VsaWYgVV9JQ1VfVkVSU0lPTl9NQUpPUl9OVU0gPT0gMgotLSAgICAgICMgaWYgVV9JQ1VfVkVSU0lPTl9NSU5PUl9OVU0gPCA4Ci0tICAgICAgZXhpdCgxKTsKLS0gICAgICAjIGVsc2UKLS0gICAgICBleGl0KDApOwotLSAgICAgICMgZW5kaWYKLS0gICAgICAjZWxzZQotLSAgICAgIGV4aXQoMCk7Ci0tICAgICAgI2VuZGlmCi0tICAgIF1dKV0sWwotLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotLSAgICBdLFsKLS0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQotLSAgICBBQ19NU0dfV0FSTihbZGlzYWJsaW5nIGNwbHVzcGx1c10pCi0tICAgIGFjX3dpdGhfY3BsdXNwbHVzPW5vCi0tICAgIF0pCi0tICBBQ19MQU5HX1BPUChDKQotLWZpCi0tCi0gQU1fQ09ORElUSU9OQUwoW1dJVEhfQ1BMVVNQTFVTXSxbdGVzdCAiJGFjX3dpdGhfY3BsdXNwbHVzIiA9IHllc10pCi0gCi0gaWYgdGVzdCAiJGFjX3dpdGhfY3BsdXNwbHVzIiA9IHllcyA7IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZml4LWZvci1nY2MtNC43LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9maXgtZm9yLWdjYy00LjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNDRlMzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZWVjcnlwdC9iZWVjcnlwdC9maXgtZm9yLWdjYy00LjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0KLWdjYy00Ljcgc2VlbXMgdG8gYmUgc3RyaWN0ZXIgYWJvdXQgc29tZSB0aGluZ3MsIHNvIGZvbGxvdwotdGhlIHN1Z2dlc3Rpb24gZnJvbSB0aGUgZXJyb3Ivbm90ZSBpbmZvcm1hdGlvbi4KLQotICAgIC4uLy4uL3g4Nl82NC1saW51eC1saWJ0b29sIC0tdGFnPUNYWCAgIC0tbW9kZT1jb21waWxlIGcrKyAtREhBVkVfQ09ORklHX0ggLUkuIC1JLi4vLi4gCi0gICAgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6ICBnKysgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uLy4uIC1JLi4vLi4vaW5jbHVkZSAtaXN5c3QKLSAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9IYXNodGFibGUuaDo0MjowLAotICAgICAgICAgICAgICAgICAgICAgZnJvbSAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL1Byb3BlcnRpZXMuaDozNiwKLSAgICAgICAgICAgICAgICAgICAgIGZyb20gUHJvcGVydGllcy5jeHg6MjU6Ci0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOiBJbiBpbnN0YW50aWF0aW9uIG9mICdib29sIGJlZWNyeXB0Ojp1dGkKLSAgICBQcm9wZXJ0aWVzLmN4eDoyMjg6MTogICByZXF1aXJlZCBmcm9tIGhlcmUKLSAgICAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0Lmg6NTk6Mjc6IGVycm9yOiAnY29udGFpbnNBbGwnIHdhcyBub3QgZGVjbAotICAgIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaDo1OToyNzogbm90ZTogZGVjbGFyYXRpb25zIGluIGRlcGVuZGVudCBiCi0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOjU5OjI3OiBub3RlOiB1c2UgJ3RoaXMtPmNvbnRhaW5zQWxsJyBpbnMKLSAgICAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0Lmg6IEluIGluc3RhbnRpYXRpb24gb2YgJ2Jvb2wgYmVlY3J5cHQ6OnV0aQotICAgIFByb3BlcnRpZXMuY3h4OjIyODoxOiAgIHJlcXVpcmVkIGZyb20gaGVyZQotICAgIC4uLy4uL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaDo1OToyNzogZXJyb3I6ICdjb250YWluc0FsbCcgd2FzIG5vdCBkZWNsCi0gICAgLi4vLi4vaW5jbHVkZS9iZWVjcnlwdC9jKysvdXRpbC9BYnN0cmFjdFNldC5oOjU5OjI3OiBub3RlOiBkZWNsYXJhdGlvbnMgaW4gZGVwZW5kZW50IGIKLSAgICAuLi8uLi9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0Lmg6NTk6Mjc6IG5vdGU6IHVzZSAndGhpcy0+Y29udGFpbnNBbGwnIGlucwotICAgIAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi0KLUluZGV4OiBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy91dGlsL0Fic3RyYWN0U2V0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiZWVjcnlwdC00LjIuMS5vcmlnL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaAotKysrIGJlZWNyeXB0LTQuMi4xL2luY2x1ZGUvYmVlY3J5cHQvYysrL3V0aWwvQWJzdHJhY3RTZXQuaAotQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIGJlZWNyeXB0IHsKLSAJCQkJCWlmIChjLT5zaXplKCkgIT0gc2l6ZSgpKQotIAkJCQkJCXJldHVybiBmYWxzZTsKLSAKLS0JCQkJCXJldHVybiBjb250YWluc0FsbCgqYyk7Ci0rCQkJCQlyZXR1cm4gdGhpcy0+Y29udGFpbnNBbGwoKmMpOwotIAkJCQl9Ci0gCQkJCXJldHVybiBmYWxzZTsKLSAJCQl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L2ZpeC1zZWN1cml0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZml4LXNlY3VyaXR5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2IwYzAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvZml4LXNlY3VyaXR5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRml4IHZpc2liaWxpdHkgb2YgdmFyaW91cyBDKysgZnVuY3Rpb25zLCBpbnNwaXJlZCBieSBhIHNpbWlsYXIgcGF0Y2ggaW4gdGhlIEZpbmsKLXByb2plY3Q6IAotaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL2ZpbmstY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnNzU3NDIuaHRtbAotCi1KTCAwNS8wNy8xMCAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy9iZWV5b25kL0JlZUNlcnRpZmljYXRlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiZWVjcnlwdC00LjIuMS5vcmlnL2luY2x1ZGUvYmVlY3J5cHQvYysrL2JlZXlvbmQvQmVlQ2VydGlmaWNhdGUuaAkyMDEwLTExLTI2IDE3OjIyOjU3LjAwMDAwMDAwMCArMDgwMAotKysrIGJlZWNyeXB0LTQuMi4xL2luY2x1ZGUvYmVlY3J5cHQvYysrL2JlZXlvbmQvQmVlQ2VydGlmaWNhdGUuaAkyMDEwLTExLTI2IDE3OjIzOjAxLjAwMDAwMDAwMCArMDgwMAotQEAgLTE0NywxMyArMTQ3LDEzIEBACi0gCQkJbXV0YWJsZSBieXRlYXJyYXkqIGVuYzsKLSAKLSAJCQlCZWVDZXJ0aWZpY2F0ZSgpOwotLQkJCUJlZUNlcnRpZmljYXRlKElucHV0U3RyZWFtJiBpbikgdGhyb3cgKElPRXhjZXB0aW9uKTsKLSAKLSAJCQl2b2lkIGVuY29kZVRCUyhEYXRhT3V0cHV0U3RyZWFtJiBvdXQpIGNvbnN0IHRocm93IChJT0V4Y2VwdGlvbik7Ci0gCi0gCQkJYnl0ZWFycmF5KiBlbmNvZGVUQlMoKSBjb25zdCB0aHJvdyAoQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbik7Ci0gCi0gCQlwdWJsaWM6Ci0rCQkJQmVlQ2VydGlmaWNhdGUoSW5wdXRTdHJlYW0mIGluKSB0aHJvdyAoSU9FeGNlcHRpb24pOwotIAkJCUJlZUNlcnRpZmljYXRlKGNvbnN0IEJlZUNlcnRpZmljYXRlJikgdGhyb3cgKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uKTsKLSAJCQl2aXJ0dWFsIH5CZWVDZXJ0aWZpY2F0ZSgpOwotIAotSW5kZXg6IGJlZWNyeXB0LTQuMi4xL2luY2x1ZGUvYmVlY3J5cHQvYysrL3NlY3VyaXR5L1NlY3VyaXR5LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiZWVjcnlwdC00LjIuMS5vcmlnL2luY2x1ZGUvYmVlY3J5cHQvYysrL3NlY3VyaXR5L1NlY3VyaXR5LmgJMjAxMC0xMS0yNiAxNzoyMDo1NS4wMDAwMDAwMDAgKzA4MDAKLSsrKyBiZWVjcnlwdC00LjIuMS9pbmNsdWRlL2JlZWNyeXB0L2MrKy9zZWN1cml0eS9TZWN1cml0eS5oCTIwMTAtMTEtMjYgMTc6MjE6MzYuMDAwMDAwMDAwICswODAwCi1AQCAtNjEsNyArNjEsNiBAQAotIAkJCWZyaWVuZCBjbGFzcyBTZWN1cmVSYW5kb207Ci0gCQkJZnJpZW5kIGNsYXNzIFNpZ25hdHVyZTsKLSAKLS0JCXByaXZhdGU6Ci0gCQkJc3RydWN0IHNwaQotIAkJCXsKLSAJCQkJT2JqZWN0KiBjc3BpOwotQEAgLTc2LDYgKzc1LDcgQEAKLSAJCQlzdGF0aWMgc3BpKiBnZXRTcGkoY29uc3QgU3RyaW5nJiBhbGdvLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFByb3ZpZGVyJikgdGhyb3cgKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbik7Ci0gCQkJc3RhdGljIHNwaSogZ2V0Rmlyc3RTcGkoY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAKLSsJCXByaXZhdGU6Ci0gCQkJc3RhdGljIGNvbnN0IFN0cmluZyYgZ2V0S2V5U3RvcmVEZWZhdWx0KCk7Ci0gCi0gCQkJc3RhdGljIGJvb2wgX2luaXQ7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0L3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWUyOTRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHQvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIS9iaW4vc2gKLQotY2QgdGVzdHMKLWZvciBpIGluIGBsc2A7IGRvIC4vJGk7IGlmIFsgJD8gLWVxIDAgXTsgdGhlbiBlY2hvICJQQVNTOiAkaSI7IFwKLSAgICBlbHNlIGVjaG8gIkZBSUw6ICRpIjsgZmk7IGRvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHRfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JlZWNyeXB0L2JlZWNyeXB0XzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTYyNmYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmVlY3J5cHQvYmVlY3J5cHRfNC4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIEJlZWNyeXB0IE9FIGJ1aWxkIGZpbGUKLSMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUsIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQKLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgcGFja2FnZXMvQ09QWUlORykKLQotU1VNTUFSWSA9ICJBIGdlbmVyYWwtcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvYmVlY3J5cHQiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2JlZWNyeXB0L2JlZWNyeXB0LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWljdS1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWZvci1nY2MtNC43LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9iZWVjcnlwdC1lbmFibGUtcHRlc3Qtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtb3B0aW9uLWRldi1kc3AucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0NDFjMDE0MTcwODIzZjJkZmY5N2UzM2RmNTVhZjFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI4NmYxZjU2MDgwZDFhNmIxZDAyNDAwM2E1ZmEyMTU4ZjRmZjgyY2FlMGM2ODI5ZDNjNDc2YTRiNTg5OGM1NWQiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk4OTQzNzBhZmQ1ZGZlN2QwMmI4ZDE0MzE5ZTcyOWExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1kY2YzYzgyNTY1OWU4MjUzOTY0NWRhNDFhNzkwODU4OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2JlZWNyeXB0L2JlZWNyeXB0Lmg7ZW5kbGluZT0yMDttZDU9NDdhOTNlZWY1MzlhYWMyMzdlZWY4NjI5N2E0ZDcxYzEiCi0KLVBSID0gInIzIgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKLWFjcGF0aHM9IiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGJlZWNyeXB0L2dudS5oCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIC0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgLS1kaXNhYmxlLW9wZW5tcCAtLXdpdGgtamF2YT1ubyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbY3BsdXNwbHVzXSA9ICItLXdpdGgtY3BsdXNwbHVzLC0td2l0aG91dC1jcGx1c3BsdXMsaWN1IgotCi1GSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9ICR7bGliZGlyfS8qLnNvLiogJHtsaWJkaXJ9LyR7QlBOfS8qLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2xpYmRpcn0vJHtCUE59LyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5hIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0JY3AgLXIgJHtCfS90ZXN0cy8ubGlicy90ZXN0KiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJjODZhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBuYXRpdmUKLQotU1JDX1VSSSArPSAiZmlsZTovL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaCIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQotICAgIGluc3RhbGwgLWMgLW0gNzU1IGJqYW0uZGVidWcgJHtEfSR7YmluZGlyfS9iamFtCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS42OC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0Zjk2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjguMC5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworCitTVU1NQVJZID0gIlBvcnRhYmxlIEJvb3N0LkphbSBidWlsZCB0b29sIGZvciBib29zdCIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK2luaGVyaXQgbmF0aXZlCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9iamFtLW5hdGl2ZS1idWlsZC1iamFtLmRlYnVnLnBhdGNoIFwKKyIKKworZG9fY29tcGlsZSgpIHsKKyAgICAuL2Jvb3RzdHJhcC5zaCAtLXdpdGgtdG9vbHNldD1nY2MKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCisgICAgIyBpbnN0YWxsIHVuc3RyaXBwZWQgdmVyc2lvbiBmb3IgYmphbQorICAgIGluc3RhbGwgLWMgLW0gNzU1IGJqYW0uZGVidWcgJHtEfSR7YmluZGlyfS9iamFtCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjYuMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjYuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMmI4NjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY2LjAuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyBUaGUgQm9vc3Qgd2ViIHNpdGUgcHJvdmlkZXMgZnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlCi0jIEMrKyBzb3VyY2UgbGlicmFyaWVzLiBUaGUgZW1waGFzaXMgaXMgb24gbGlicmFyaWVzIHdoaWNoCi0jIHdvcmsgd2VsbCB3aXRoIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeS4gVGhlIGxpYnJhcmllcyBhcmUKLSMgaW50ZW5kZWQgdG8gYmUgd2lkZWx5IHVzZWZ1bCwgYW5kIGFyZSBpbiByZWd1bGFyIHVzZSBieQotIyB0aG91c2FuZHMgb2YgcHJvZ3JhbW1lcnMgYWNyb3NzIGEgYnJvYWQgc3BlY3RydW0gb2YgYXBwbGljYXRpb25zLgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvIgotTElDRU5TRSA9ICJCU0wtMS4wICYgTUlUICYgUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCi0KLUJPT1NUX1ZFUiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpKX0iCi1CT09TVF9NQUogPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKVswOjJdKX0iCi1CT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9ib29zdC9ib29zdC8ke1BWfS8ke0JPT1NUX1B9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJkZmJkNmM3MTdiZTRhN2JiMmQ4ODAxOGVhY2NmNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTcyMTgxODI1M2U2YTA5ODk1ODMxOTJmOTY3ODJjNGE5OGViNjIwNDk2NTMxNmRmOWY1YWQ3NTgxOTIyNWNhOSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY4LjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY4LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNjdhODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjguMC5pbmMKQEAgLTAsMCArMSwyMSBAQAorIyBUaGUgQm9vc3Qgd2ViIHNpdGUgcHJvdmlkZXMgZnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlCisjIEMrKyBzb3VyY2UgbGlicmFyaWVzLiBUaGUgZW1waGFzaXMgaXMgb24gbGlicmFyaWVzIHdoaWNoCisjIHdvcmsgd2VsbCB3aXRoIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeS4gVGhlIGxpYnJhcmllcyBhcmUKKyMgaW50ZW5kZWQgdG8gYmUgd2lkZWx5IHVzZWZ1bCwgYW5kIGFyZSBpbiByZWd1bGFyIHVzZSBieQorIyB0aG91c2FuZHMgb2YgcHJvZ3JhbW1lcnMgYWNyb3NzIGEgYnJvYWQgc3BlY3RydW0gb2YgYXBwbGljYXRpb25zLgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvIgorTElDRU5TRSA9ICJCU0wtMS4wICYgTUlUICYgUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCisKK0JPT1NUX1ZFUiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpKX0iCitCT09TVF9NQUogPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKVswOjJdKX0iCitCT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9ib29zdC9ib29zdC8ke1BWfS8ke0JPT1NUX1B9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiN2ZiZDE4OTBmNTcxMDUxZjJhMjA5NjgxZDU3ZDQ4NmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y2MTMwYmMzY2Y2NWY1NmE2MTg4ODhjZTlkNWVhNzA0ZmExMGI0NjJiZTEyNmFkMDUzZTgwZTU1M2Q2ZDhiNyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCAwZmY1YjdhLi5jNGZhZWEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtOSw2ICs5LDcgQEAKIAlhdG9taWMgXAogCWNocm9ubyBcCiAJY29udGFpbmVyIFwKKwljb250cmFjdCBcCiAJZGF0ZV90aW1lIFwKIAlleGNlcHRpb24gXAogCWZpbGVzeXN0ZW0gXApAQCAtMTM0LDkgKzEzNSw4IEBACiAJCSctLWxheW91dD1zeXN0ZW0nIFwKIAkJIgogCi0jIHVzZSBQQVJBTExFTF9NQUtFIHRvIHNwZWVkIHVwIHRoZSBidWlsZCwgYnV0IGxpbWl0IGl0IGJ5IC1qIDY0LCBncmVhdGVyIHBhcmFsbGVsaXNtIGNhdXNlcyBiamFtIHRvIHNlZ2ZhdWx0IG9yIHRvIGlnbm9yZSAtagotIyBodHRwczovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvNzYzNAotQk9PU1RfUEFSQUxMRUxfTUFLRSA9ICIke0BvZS51dGlscy5wYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICctaiVkJywgbGltaXQ9NjQpfSIKKyMgdXNlIFBBUkFMTEVMX01BS0UgdG8gc3BlZWQgdXAgdGhlIGJ1aWxkCitCT09TVF9QQVJBTExFTF9NQUtFID0gIiR7QG9lLnV0aWxzLnBhcmFsbGVsX21ha2VfYXJndW1lbnQoZCwgJy1qJWQnKX0iCiBCSkFNX09QVFMgICAgPSAnJHtCT09TVF9QQVJBTExFTF9NQUtFfSAtZCsyIC1xIFwKIAkJJHtCSkFNX1RPT0xTfSBcCiAJCS1zQk9PU1RfQlVJTERfVVNFUl9DT05GSUc9JHtXT1JLRElSfS91c2VyLWNvbmZpZy5qYW0gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLW1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TLXNldC0uZmlsZS1zZWN0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLW1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TLXNldC0uZmlsZS1zZWN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYWM0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtbWFrZV94ODZfNjRfc3lzdl9lbGZfZ2FzLlMtc2V0LS5maWxlLXNlY3Rpb24ucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBjOTlmNzk4NDA3ZTQ0Yzg2ZTlmNjRmNWIxYWRmM2I0ZDA1NDllZWYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTUgSnVuIDIwMTggMTY6MjE6NTYgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZV94ODZfNjRfc3lzdl9lbGZfZ2FzLlM6IHNldCAuZmlsZSBzZWN0aW9uCisKK1NldCAuZmlsZSBzZWN0aW9uIGV4cGxpY2l0bHkgZm9yIC5TIGZpbGVzIHRvIGF2b2lkCit0aGUgbGlua2VyIGludHJvZHVjZXMgdGhlIGhvc3QgcGF0aCBpbiBzeW1ib2xzIGZvcgorb2JqZWN0IGZpbGVzIHdob3NlIHNvdXJjZSBmaWxlIGlzIC5TCitPdGhlcndpc2UsIHRoZXJlIGlzIGEgaG9zdCBwYXRoIGluIHRoZSBzeW1ib2xzIGFzIGJlbG93OgorJCByZWFkZWxmIC0td2lkZSAtLXN5bWJvbHMgL215LWJ1aWxkL2Jvb3N0LzEuNjcuMC1yMC9ib29zdF8xXzY3XzAveDg2XzY0LXBva3ktbGludXgvYm9vc3QvYmluLnYyL2xpYnMvY29udGV4dC9idWlsZC9hY2EwOTM0OWZkYjg0ZDEzMTMyMTQyNWY2YzNhMzhlZC9saWJib29zdF9jb250ZXh0LnNvLjEuNjcuMAorCis0MjogMDAwMDAwMDAwMDAwMDAwMCAwIEZJTEUgTE9DQUwgREVGQVVMVCBBQlMgL215LWJ1aWxkL2Jvb3N0LzEuNjcuMC1yMC9ib29zdF8xXzY3XzAveDg2XzY0LXBva3ktbGludXgvYm9vc3QvYmluLnYyL2xpYnMvY29udGV4dC9idWlsZC9hY2EwOTM0OWZkYjg0ZDEzMTMyMTQyNWY2YzNhMzhlZC9hc20vbWFrZV94ODZfNjRfc3lzdl9lbGZfZ2FzLm8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX2kzODZfc3lzdl9lbGZfZ2FzLlMgICB8IDEgKworIGxpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TIHwgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfaTM4Nl9zeXN2X2VsZl9nYXMuUyBiL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfaTM4Nl9zeXN2X2VsZl9nYXMuUworaW5kZXggZGU3N2U4OC4uYjc2ZGUyNiAxMDA2NDQKKy0tLSBhL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfaTM4Nl9zeXN2X2VsZl9nYXMuUworKysrIGIvbGlicy9jb250ZXh0L3NyYy9hc20vbWFrZV9pMzg2X3N5c3ZfZWxmX2dhcy5TCitAQCAtMjQsNiArMjQsNyBAQAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisrLmZpbGUgIm1ha2VfaTM4Nl9zeXN2X2VsZl9nYXMuUyIKKyAudGV4dAorIC5nbG9ibCBtYWtlX2Zjb250ZXh0CisgLmFsaWduIDIKK2RpZmYgLS1naXQgYS9saWJzL2NvbnRleHQvc3JjL2FzbS9tYWtlX3g4Nl82NF9zeXN2X2VsZl9nYXMuUyBiL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TCitpbmRleCAyNWEwYzAwLi4wZWYzNzU2IDEwMDY0NAorLS0tIGEvbGlicy9jb250ZXh0L3NyYy9hc20vbWFrZV94ODZfNjRfc3lzdl9lbGZfZ2FzLlMKKysrKyBiL2xpYnMvY29udGV4dC9zcmMvYXNtL21ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TCitAQCAtMjQsNiArMjQsNyBAQAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCisrLmZpbGUgIm1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TIgorIC50ZXh0CisgLmdsb2JsIG1ha2VfZmNvbnRleHQKKyAudHlwZSBtYWtlX2Zjb250ZXh0LEBmdW5jdGlvbgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZjNjYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAyLURvbi10LXNldC11cC1tMzItbTY0LXdlLWRvLXRoYXQtb3Vyc2VsdmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotRnJvbSBlNGQzYTc0NzBiMzA3NjkzNjYwZDA0MTI3MzJlNzI2NmQxNzM4ZDhjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLURhdGU6IFR1ZSwgMTMgRGVjIDIwMTYgMTA6Mjk6MTcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIERvbid0IHNldCB1cCAtbTMyLy1tNjQsIHdlIGRvIHRoYXQgb3Vyc2VsdmVzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLQotLS0tCi0gdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gfCAzOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbSBiL3Rvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtCi1pbmRleCBlNGZjNmMzMi4uMzc5MTRmZDAgMTAwNjQ0Ci0tLS0gYS90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotKysrIGIvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KLUBAIC0zMzcsNDUgKzMzNyw2IEBAIHJ1bGUgc2V0LWFkZHJlc3MtbW9kZWwtb3B0aW9ucyAoIHRhcmdldHMgKiA6IHNvdXJjZXMgKiA6IHByb3BlcnRpZXMgKiApCi0gICAgIHsKLSAgICAgICAgIGxvY2FsIG9wdGlvbiA7Ci0gICAgICAgICBsb2NhbCB0YXJnZXQtb3MgPSBbIGZlYXR1cmUuZ2V0LXZhbHVlcyB0YXJnZXQtb3MgOiAkKHByb3BlcnRpZXMpIF0gOwotLSAgICAgICAgaWYgJCh0YXJnZXQtb3MpID0gYWl4Ci0tICAgICAgICB7Ci0tICAgICAgICAgICAgaWYgJChtb2RlbCkgPSAzMgotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgb3B0aW9uID0gLW1haXgzMiA7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tYWl4NjQgOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAgICAgIGVsc2UgaWYgJCh0YXJnZXQtb3MpID0gaHB1eAotLSAgICAgICAgewotLSAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1taWxwMzIgOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBvcHRpb24gPSAtbWxwNjQgOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAgICAgIGVsc2UKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBsb2NhbCBhcmNoID0gWyBmZWF0dXJlLmdldC12YWx1ZXMgYXJjaGl0ZWN0dXJlIDogJChwcm9wZXJ0aWVzKSBdIDsKLS0gICAgICAgICAgICBpZiAkKGFyY2gpID0gcG93ZXIgfHwgJChhcmNoKSA9IHNwYXJjIHx8ICQoYXJjaCkgPSB4ODYKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGlmICQobW9kZWwpID0gMzIKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gLW0zMiA7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAkKG1vZGVsKSA9IDY0Ci0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9IC1tNjQgOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAgICMgRm9yIGRhcndpbiwgdGhlIG1vZGVsIGNhbiBiZSAzMl82NC4gZGFyd2luLmphbSB3aWxsIGhhbmRsZSB0aGF0Ci0tICAgICAgICAgICAgIyBvbiBpdHMgb3duLgotLSAgICAgICAgfQotICAgICAgICAgT1BUSU9OUyBvbiAkKHRhcmdldHMpICs9ICQob3B0aW9uKSA7Ci0gICAgIH0KLSB9Ci0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2I4MmE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42Ni4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKLXJlcXVpcmUgYm9vc3QuaW5jCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgIGZpbGU6Ly9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS42OC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3OTU4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjguMC5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGJvb3N0LSR7UFZ9LmluYworcmVxdWlyZSBib29zdC5pbmMKKworU1JDX1VSSSArPSAiXAorICAgICAgICAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2VfeDg2XzY0X3N5c3ZfZWxmX2dhcy5TLXNldC0uZmlsZS1zZWN0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLUZpeC1hLXN0cmFuZ2UtYXNzZXJ0LXR5cG8taG93LXdhcy10aGlzLXJlbGVhc2VkLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc1MTMzZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtRml4LWEtc3RyYW5nZS1hc3NlcnQtdHlwby1ob3ctd2FzLXRoaXMtcmVsZWFzZWQtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gNTY4NTUyNzM2NDE5ODU5N2YyNWZjMWM2MjM2Y2I2NGNiYzNkZTQ0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IE9jdCAyMDE3IDE4OjE2OjA4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIHN0cmFuZ2UgYXNzZXJ0IHR5cG87IGhvdyB3YXMgdGhpcyByZWxlYXNlZCB3aXRob3V0Ci0gbm90aWNpbmc/Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB0b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jIGIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jCi1pbmRleCA4MDJmMjYyLi4xNTJhN2U2IDEwMDY0NAotLS0tIGEvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9kZWJ1Z2dlci5jCi0rKysgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2RlYnVnZ2VyLmMKLUBAIC0xMDkyLDcgKzEwOTIsNyBAQCBzdGF0aWMgdm9pZCBkZWJ1Z19zdGFydF9jaGlsZCggaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiAqIGFyZ3YgKQotICAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpID0geyBOVUxMLCBOVUxMLCAwLCAwIH07Ci0gICAgIFNUQVJUVVBJTkZPIHNpID0geyBzaXplb2YoIFNUQVJUVVBJTkZPICksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgICAgICAwLCAwLCAwLCAwLCAwLCAwIH07Ci0tICAgIGFzc2VydCggREVCVUdfU1RBVEUgPT0gREVCVUdfTk9fQ0hJTEQgKTsKLSsgICAgYXNzZXJ0KCBkZWJ1Z19zdGF0ZSA9PSBERUJVR19OT19DSElMRCApOwotICAgICBpZiAoICEgQ3JlYXRlUGlwZSggJnBpcGUxWyAwIF0sICZwaXBlMVsgMSBdLCAmc2EsIDAgKSApCi0gICAgIHsKLSAgICAgICAgIHByaW50ZigiaW50ZXJuYWwgZXJyb3JcbiIpOwotQEAgLTExNzYsNyArMTE3Niw3IEBAIHN0YXRpYyB2b2lkIGRlYnVnX3N0YXJ0X2NoaWxkKCBpbnQgYXJnYywgY29uc3QgY2hhciAqICogYXJndiApCi0gICAgIGludCByZWFkX2ZkOwotICAgICBpbnQgcGlkOwotICAgICBpbnQgaTsKLS0gICAgYXNzZXJ0KCBERUJVR19TVEFURSA9PSBERUJVR19OT19DSElMRCApOwotKyAgICBhc3NlcnQoIGRlYnVnX3N0YXRlID09IERFQlVHX05PX0NISUxEICk7Ci0gICAgIHBpcGUocGlwZTEpOwotICAgICBwaXBlKHBpcGUyKTsKLSAgICAgcGlkID0gZm9yaygpOwotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTcwNzE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTAyOTQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbW9uIENBIGNlcnRpZmljYXRlcyIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpbmNsdWRlcyBQRU0gZmlsZXMgb2YgQ0EgY2VydGlmaWNhdGVzIHRvIGFsbG93IFwKLVNTTC1iYXNlZCBhcHBsaWNhdGlvbnMgdG8gY2hlY2sgZm9yIHRoZSBhdXRoZW50aWNpdHkgb2YgU1NMIGNvbm5lY3Rpb25zLiBcCi1UaGlzIGRlcml2ZWQgZnJvbSBEZWJpYW4ncyBDQSBDZXJ0aWZpY2F0ZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc2lkL2NhLWNlcnRpZmljYXRlcyIKLVNFQ1RJT04gPSAibWlzYyIKLUxJQ0VOU0UgPSAiR1BMLTIuMCsgJiBNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZTczNThiOTU0MWNjZjMwMjllOTcwNWVkOGRlNTc5NjgiCi0KLSMgVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBydW4gdGhlIHBvc3RpbnN0IGF0IGltYWdlIGNyZWF0aW9uIHRpbWUKLURFUEVORFMgPSAiIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAib3BlbnNzbC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJvcGVuc3NsLW5hdGl2ZSIKLSMgTmVlZCBjX3JlaGFzaCBmcm9tIG9wZW5zc2wgYW5kIHJ1bi1wYXJ0cyBmcm9tIGRlYmlhbnV0aWxzCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm9wZW5zc2wtbmF0aXZlIGRlYmlhbnV0aWxzLW5hdGl2ZSIKLQotU1JDUkVWID0gIjM0YjhlMTllNTQxYjhhZjQwNzY2MTZiMmUxNzBjN2E3MGNkYWRlZDAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vY2EtY2VydGlmaWNhdGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1yZWxhdGl2ZS1zeW1saW5rcy1mcm9tLUVULnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1lTUk9PVF9ESVJTX2NsYXNzLW5hdGl2ZSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgJ0NFUlRTRElSPSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzJyBcCi0gICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAotIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSBjbGVhbgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyBcCi0gICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMgXAotICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kCi0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gMDY0NCBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOCAke0R9JHttYW5kaXJ9L21hbjgvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgewotICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggIyB3aWxsIGJlIGlnbm9yZWQiCi0gICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAhIHdpbGwgcmVtb3ZlIGNlcnRpZmljYXRlIG9uIG5leHQgdXBkYXRlIgotICAgICAgICBlY2hvICIjIgotICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyAtdHlwZSBmIC1uYW1lICcqLmNydCcgfCBcCi0gICAgICAgICAgICBzZWQgJ3MsXiR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcy8sLCcKLSAgICB9ID4ke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewotICAgIHNlZCAtaSAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LywnIFwKLSAgICAgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS8sJHtkYXRhZGlyfS8sJyBcCi0gICAgICAgICAgIC1lICdzLC91c3IvbG9jYWwsJHtwcmVmaXh9L2xvY2FsLCcgXAotICAgICAgICAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzIFwKLSAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOAotfQotCi1wa2dfcG9zdGluc3RfJHtQTn1fY2xhc3MtdGFyZ2V0ICgpIHsKLSAgICBTWVNST09UPSIkRCIgJEQke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKLX0KLQotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mIgotCi0jIFJhdGhlciB0aGFuIG1ha2UgYSBwb3N0aW5zdCBzY3JpcHQgdGhhdCB3b3JrcyBmb3IgYm90aCB0YXJnZXQgYW5kIG5hdGl2ZXNkaywKLSMgd2UganVzdCBydW4gdXBkYXRlLWNhLWNlcnRpZmljYXRlIGZyb20gZG9faW5zdGFsbCgpIGZvciBuYXRpdmVzZGsuCi1DT05GRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCIKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0gICAgU1lTUk9PVD0iJHtEfSR7U0RLUEFUSE5BVElWRX0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICBTWVNST09UPSIke0R9JHtiYXNlX3ByZWZpeH0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE4MDQwOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE4MDQwOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDU3MDgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTgwNDA5LmJiCkBAIC0wLDAgKzEsODcgQEAKK1NVTU1BUlkgPSAiQ29tbW9uIENBIGNlcnRpZmljYXRlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpbmNsdWRlcyBQRU0gZmlsZXMgb2YgQ0EgY2VydGlmaWNhdGVzIHRvIGFsbG93IFwKK1NTTC1iYXNlZCBhcHBsaWNhdGlvbnMgdG8gY2hlY2sgZm9yIHRoZSBhdXRoZW50aWNpdHkgb2YgU1NMIGNvbm5lY3Rpb25zLiBcCitUaGlzIGRlcml2ZWQgZnJvbSBEZWJpYW4ncyBDQSBDZXJ0aWZpY2F0ZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc2lkL2NhLWNlcnRpZmljYXRlcyIKK1NFQ1RJT04gPSAibWlzYyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCsgJiBNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YWViNDIwNDI5YjE2NTk1MDdlMGE1YTFiMTIzZTgzMDgiCisKKyMgVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIHdlIGNhbiBydW4gdGhlIHBvc3RpbnN0IGF0IGltYWdlIGNyZWF0aW9uIHRpbWUKK0RFUEVORFMgPSAiIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAib3BlbnNzbC1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJvcGVuc3NsLW5hdGl2ZSIKKyMgTmVlZCBjX3JlaGFzaCBmcm9tIG9wZW5zc2wgYW5kIHJ1bi1wYXJ0cyBmcm9tIGRlYmlhbnV0aWxzCitQQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm9wZW5zc2wtbmF0aXZlIGRlYmlhbnV0aWxzLW5hdGl2ZSIKKworU1JDUkVWID0gImRiYmQxMWU1NmFmOTNiYjc5ZjIxZDBlZTYwNTlhOTAxZjgzZjcwYTUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vY2EtY2VydGlmaWNhdGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtdXNlLVNZU1JPT1QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtY2EtY2VydGlmaWNhdGVzLWRvbi10LXVzZS1EZWJpYW5pc21zLWluLXJ1bi1wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMtc3VwcG9ydC1Ub3lib3gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGVmYXVsdC1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NiaW5kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1yZWxhdGl2ZS1zeW1saW5rcy1mcm9tLUVULnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGFsbGFyY2gKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAnQ0VSVFNESVI9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMnIFwKKyAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCisiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBvZV9ydW5tYWtlIGNsZWFuCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIFwKKyAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtbSAwNjQ0IHNiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44ICR7RH0ke21hbmRpcn0vbWFuOC8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICB7CisgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAjIHdpbGwgYmUgaWdub3JlZCIKKyAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICEgd2lsbCByZW1vdmUgY2VydGlmaWNhdGUgb24gbmV4dCB1cGRhdGUiCisgICAgICAgIGVjaG8gIiMiCisgICAgICAgIGZpbmQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIC10eXBlIGYgLW5hbWUgJyouY3J0JyB8IFwKKyAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJworICAgIH0gPiR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgc2VkIC1pIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLCcgXAorICAgICAgICAgICAtZSAncywvdXNyL3NoYXJlLywke2RhdGFkaXJ9LywnIFwKKyAgICAgICAgICAgLWUgJ3MsL3Vzci9sb2NhbCwke3ByZWZpeH0vbG9jYWwsJyBcCisgICAgICAgICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgXAorICAgICAgICAke0R9JHttYW5kaXJ9L21hbjgvdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44Cit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfV9jbGFzcy10YXJnZXQgKCkgeworICAgIFNZU1JPT1Q9IiREIiAkRCR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzLmNvbmYiCisKKyMgUmF0aGVyIHRoYW4gbWFrZSBhIHBvc3RpbnN0IHNjcmlwdCB0aGF0IHdvcmtzIGZvciBib3RoIHRhcmdldCBhbmQgbmF0aXZlc2RrLAorIyB3ZSBqdXN0IHJ1biB1cGRhdGUtY2EtY2VydGlmaWNhdGUgZnJvbSBkb19pbnN0YWxsKCkgZm9yIG5hdGl2ZXNkay4KK0NPTkZGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKyAgICBTWVNST09UPSIke0R9JHtTREtQQVRITkFUSVZFfSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworICAgIFNZU1JPT1Q9IiR7RH0ke2Jhc2VfcHJlZml4fSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42MS4wLmJiCmluZGV4IDIwNzgzNzkuLjU2MzI3YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjEuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjYxLjAuYmIKQEAgLTE5LDEyICsxOSwxNCBAQAogQ1ZFX1BST0RVQ1QgPSAiY3VybCBsaWJjdXJsIgogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIHByb3h5IHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBsaWJpZG4gcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgogCiAjICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCiBQQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzIgorUEFDS0FHRUNPTkZJR1ticm90bGldID0gIi0td2l0aC1icm90bGksLS13aXRob3V0LWJyb3RsaSxicm90bGkiCitQQUNLQUdFQ09ORklHW2J1aWx0aW5tYW51YWxdID0gIi0tZW5hYmxlLW1hbnVhbCwtLWRpc2FibGUtbWFudWFsIgogUEFDS0FHRUNPTkZJR1tkaWN0XSA9ICItLWVuYWJsZS1kaWN0LC0tZGlzYWJsZS1kaWN0LCIKIFBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgogUEFDS0FHRUNPTkZJR1tnb3BoZXJdID0gIi0tZW5hYmxlLWdvcGhlciwtLWRpc2FibGUtZ29waGVyLCIKQEAgLTM1LDYgKzM3LDcgQEAKIFBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCiBQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKIFBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCiBQQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCiBQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgogUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKQEAgLTQ2LDkgKzQ5LDEyIEBACiBQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgogUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKIFBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKK1BBQ0tBR0VDT05GSUdbdmVyYm9zZV0gPSAiLS1lbmFibGUtdmVyYm9zZSwtLWRpc2FibGUtdmVyYm9zZSIKIFBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1saWJjdXJsLW9wdGlvbiBcCisgICAgLS1kaXNhYmxlLW50bG0td2IgXAogICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKICAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAogICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCkBAIC03MSw0ICs3Nyw3IEBACiAKIEZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3pzaCIKIAoraW5oZXJpdCBtdWx0aWxpYl9zY3JpcHQKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9jdXJsLWNvbmZpZyIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9hcm0tdGh1bWItbXV0ZXhfZGI1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi9hcm0tdGh1bWItbXV0ZXhfZGI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YThlYWRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLU9yaWdpbmFsIHBhdGNoIHN1Ym1pdHRlZCBieSBqYm93bGVyQG5zbHUyLWxpbnV4Lm9yZyBvbiAyMDA1LTExLTE3OgotCi1kYjogZml4IHRodW1iIHVjbGliYyBvcGVyYXRpb24gaW4gNC4zLjI5Ci0gIC0gdWNsaWJjIHRodW1iIGJ1aWxkcyB3ZXJlIHVzaW5nIGxpYnB0aHJlYWQgdG8gaW1wbGVtZW50IG11dGV4ZXMsIHRoZQotICAtIHVjbGliYyB2ZXJzaW9uIHNlZW1zIHRvIGJlIGEgc3R1YiAoYXQgbGVhc3Qgb24gdGh1bWIpLiAgVGhpcyBjb21taXQKLSAgLSBmaXhlcyB0aGUgQVJNL2djYy1hc3NlbWJseSBtdXRleCBpbXBsZW1lbnRhdGlvbiBzbyB0aGF0IGl0IGhhcyB0aHVtYgotICAtIHN1cHBvcnQgYW5kIHRoZSByZXN1bHRhbnQgZGI0IHdvcmtzICh0ZXN0ZWQgb24gTEUgVGh1bWIgdWNsaWJjKQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1BdXRob3I6IGpib3dsZXJAbnNsdTItbGludXgub3JnCi0KLUluZGV4OiBkYi02LjAuMzAvc3JjL2RiaW5jL211dGV4X2ludC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZGItNi4wLjMwLm9yaWcvc3JjL2RiaW5jL211dGV4X2ludC5oCi0rKysgZGItNi4wLjMwL3NyYy9kYmluYy9tdXRleF9pbnQuaAotQEAgLTQ3NCw2ICs0NzQsMjUgQEAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHRzbF90OwotIAotICNpZmRlZiBMT0FEX0FDVFVBTF9NVVRFWF9DT0RFCi0gLyogZ2NjL2FybTogMCBpcyBjbGVhciwgMSBpcyBzZXQuICovCi0rI2lmIGRlZmluZWQgX190aHVtYl9fCi0rI2RlZmluZQlNVVRFWF9TRVQodHNsKSAoewkJCQkJCVwKLSsJaW50IF9fciwgX19wOwkJCQkJCQlcCi0rCV9fYXNtX18gdm9sYXRpbGUoCQkJCQkJXAotKwkJIi5hbGlnbiAyXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkiYnggICAgIHBjXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJCSJub3Bcblx0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJIi5hcm1cblx0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkic3dwYiAgICUwLCAlMiwgWyUzXVxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJCSJlb3IgICAgJTAsICUwLCAjMVxuXHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkJIm9yciAgICAlMSwgcGMsICMxXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rCQkiYnggICAgICUxXG5cdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsJCSIuZm9yY2VfdGh1bWIiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkgICAgOiAiPSZyIiAoX19yKSwgIj1yIiAoX19wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkgICAgOiAiciIgKDEpLCAiciIgKHRzbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwkgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKwlfX3IgJiAxOwkJCQkJCQlcCi0rfSkKLSsjZWxzZQotICNkZWZpbmUJTVVURVhfU0VUKHRzbCkgKHsJCQkJCQlcCi0gCWludCBfX3I7CQkJCQkJCVwKLSAJX19hc21fXyB2b2xhdGlsZSgJCQkJCQlcCi1AQCAtNDg0LDYgKzUwMyw3IEBAIHR5cGVkZWYgdW5zaWduZWQgY2hhciB0c2xfdDsKLSAJICAgICk7CQkJCQkJCQlcCi0gCV9fciAmIDE7CQkJCQkJCVwKLSB9KQotKyNlbmRpZgotIAotICNkZWZpbmUJTVVURVhfVU5TRVQodHNsKQkoKih2b2xhdGlsZSB0c2xfdCAqKSh0c2wpID0gMCkKLSAjZGVmaW5lCU1VVEVYX0lOSVQodHNsKSAgICAgICAgIChNVVRFWF9VTlNFVCh0c2wpLCAwKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgppbmRleCAwOTNlZTQ0Li5iN2VkMmM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgpAQCAtMjEsOCArMjEsNyBAQAogUEUgPSAiMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJICs9ICJmaWxlOi8vYXJtLXRodW1iLW11dGV4X2RiNS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LXBhcmFsbGVsLWJ1aWxkLnBhdGNoIFwKK1NSQ19VUkkgKz0gImZpbGU6Ly9maXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtYXRvbWljLVJlbmFtZS1sb2NhbC1fX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlLXRvLWF2by5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly9zZXF1ZW5jZS10eXBlLnBhdGNoIFwKQEAgLTQ3LDcgKzQ2LDYgQEAKIFBBQ0tBR0VTID0rICIke1BOfS1jeHgiCiBGSUxFU18ke1BOfS1jeHggPSAiJHtsaWJkaXJ9LypjeHgqc28iCiAKLQogIyBUaGUgZGV2IHBhY2thZ2UgaGFzIHRoZSAuc28gbGluayAoYXMgaW4gZGIzKSBhbmQgdGhlIC5hJ3MgLQogIyBpdCBpcyB0aGVyZWZvcmUgaW5jb21wYXRpYmxlIChjYW5ub3QgYmUgaW5zdGFsbGVkIGF0IHRoZQogIyBzYW1lIHRpbWUpIGFzIHRoZSBkYjMgcGFja2FnZQpAQCAtNTksMTggKzU3LDggQEAKICMgQWxsIHRoZSAtLWRpc2FibGUtKiBvcHRpb25zIHJlcGxhY2UgLS1lbmFibGUtc21hbGxidWlsZCwgd2hpY2ggYnJlYWtzIGEgYnVuY2ggb2Ygc3R1ZmYgKGVnLiBwb3N0Zml4KQogREI1X0NPTkZJRyA/PSAiLS1lbmFibGUtb19kaXJlY3QgLS1kaXNhYmxlLWNyeXB0b2dyYXBoeSAtLWRpc2FibGUtcXVldWUgLS1kaXNhYmxlLXJlcGxpY2F0aW9uIC0tZGlzYWJsZS12ZXJpZnkgLS1kaXNhYmxlLWNvbXBhdDE4NSAtLWRpc2FibGUtc3FsIgogCi1FWFRSQV9PRUNPTkYgPSAiJHtEQjVfQ09ORklHfSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtY3h4IC0td2l0aC1zeXNyb290IgorRVhUUkFfT0VDT05GID0gIiR7REI1X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCBTVFJJUD10cnVlIgogCi0jIE92ZXJyaWRlIHRoZSBNVVRFWCBzZXR0aW5nIGhlcmUsIHRoZSBQT1NJWCBsaWJyYXJ5IGlzCi0jIHRoZSBkZWZhdWx0IC0gIlBPU0lYL3B0aHJlYWRzL2xpYnJhcnkiLgotIyBEb24ndCBpZ25vcmUgdGhlIG5pY2UgU1dQIGluc3RydWN0aW9uIG9uIHRoZSBBUk06Ci0jIFRoZXNlIGVuYWJsZSB0aGUgQVJNIGFzc2VtYmxlciBtdXRleCBjb2RlLCB0aGlzIHdvbid0Ci0jIHdvcmsgd2l0aCB0aHVtYiBjb21waWxhdGlvbi4uLgotQVJNX01VVEVYID0gIi0td2l0aC1tdXRleD1BUk0vZ2NjLWFzc2VtYmx5IgotTVVURVggPSAiIgotTVVURVhfYXJtID0gIiR7QVJNX01VVEVYfSIKLU1VVEVYX2FybWViID0gIiR7QVJNX01VVEVYfSIKLUVYVFJBX09FQ09ORiArPSAiJHtNVVRFWH0gU1RSSVA9dHJ1ZSIKIEVYVFJBX09FTUFLRSArPSAiTElCVE9PTD0nLi8ke0hPU1RfU1lTfS1saWJ0b29sJyIKIAogRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIgIC1JICR7U30vZGlzdC9hY2xvY2FsIC1JJHtTfS9kaXN0L2FjbG9jYWxfamF2YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDBlNmYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE4MDEyOVQxNjQ3MjdaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNmRjZDQ5NmI0Zjc5YjNjNDUyYzNhNzRjMmQzZjg5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMDYxYWI5OWFlYTYxZjg5MjA0M2I3NjI0YjAyMWFiNWIxOTNlOWM2YmJmZDQ3NGRhMGZiY2RkNTA2YmUxZWIyIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0gICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbwotICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCi0gICAgICAgIGRvbmUKLSAgICBmaQotfQotCi0jIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCi0jCi1QQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgotRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgotCi1BTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCi1BTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM3ZTg0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyICYgU01BSUxfR1BMIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9ZjAxYTUyMDNkNTA1MTJmYzQ4MzBiNDMzMmI2OTZhOWYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxODA2MjZUMjA1MjM4Wi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiIKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjBmMWZhMzkzODM4MTVmYjc5NTBkY2VlNTJiZTQzNjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGIwOTA0NzE0NGRhZGY2YTM1ZDBmMjg5NzdmYmVmODNiMGRkNjBjYTMyZTZjODUxMmNjZTI0NDRhNjQyM2Y3MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcworCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KKyAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAorICAgICAgICBkb25lCisgICAgZmkKK30KKworIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgorIworUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKK0ZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitBTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKKworQUxURVJOQVRJVkVfUFJJT1JJVFlfJHtQTn0tcnVuLXBhcnRzID0gIjYwIgorQUxURVJOQVRJVkVfJHtQTn0tcnVuLXBhcnRzID0gInJ1bi1wYXJ0cyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gIndoaWNoLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2guMV0gPSAiJHttYW5kaXJ9L21hbjEvd2hpY2guMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2FkZC1zaGVsbF09IiR7c2JpbmRpcn0vYWRkLXNoZWxsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luc3RhbGxrZXJuZWxdPSIke3NiaW5kaXJ9L2luc3RhbGxrZXJuZWwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVtb3ZlLXNoZWxsXT0iJHtzYmluZGlyfS9yZW1vdmUtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVuLXBhcnRzXT0iJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NhdmVsb2ddPSIke2JpbmRpcn0vc2F2ZWxvZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZW1wZmlsZV09IiR7YmFzZV9iaW5kaXJ9L3RlbXBmaWxlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoXT0iJHtiaW5kaXJ9L3doaWNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNzEyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCitERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKK3VuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKK2Zvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKK1NFQ1RJT04gPSAic3VwcG9ydCIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MWI3OGZjYTc4NGRiMjRmNGE0MGUzMGIzMDA3ODdmM2YiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJkb3MydW5peC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworIyBSZWxlYXNlIDcuNC4wCitTUkNSRVYgPSAiMTE4MjUzM2JkZTNjMWZlNjViZTJlYWQ0NjVlODc2NzFmYWEyYzAyNyIKKworUyA9ICIke1dPUktESVJ9L2dpdC9kb3MydW5peCIKKworaW5oZXJpdCBnZXR0ZXh0IHBlcmxuYXRpdmUKKworIyBUaGUgZG9zMnVuaXggTkxTIHJlbGllcyBvbiBwbzRhLW5hdGl2ZSwgd2hpbGUgcG80YSByZWNpcGUgaXMKKyMgcHJvdmlkZWQgYnkgbWV0YS1wZXJsIGxheWVyLCBzbyBtYWtlIGl0IG9wdGlvbmFsIGhlcmUsIHlvdQorIyBuZWVkIGhhdmUgbWV0YS1wZXJsIGluIGJibGF5ZXJzLmNvbmYgYmVmb3JlIGVuYWJsaW5nIG5scyBpbgorIyBQQUNLQUdFQ09ORklHLgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbmxzXSA9ICJFTkFCTEVfTkxTPTEsRU5BQkxFX05MUz0scG80YS1uYXRpdmUiCisKK0VYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IExERkxBR1NfVVNFUj0nJHtMREZMQUdTfSciCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIkVOQUJMRV9OTFM9IgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0ke2Jhc2VfcHJlZml4fSIgaW5zdGFsbAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaS9tZXNvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZnJpYmlkaS9mcmliaWRpL21lc29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiM2M0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaS9tZXNvbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGY1ZmViNmM1OTlhZGI1MmYyNDY1NmY4NTg5ODY4MDM5YjBkMTQyNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIZWlrbyBCZWNrZXIgPGhlaXJlY2thQGV4aGVyYm8ub3JnPgorRGF0ZTogRnJpLCA3IFNlcCAyMDE4IDIwOjU3OjExICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEJ1aWxkIGdlbmVyYXRvciBleGVjdXRhYmxlcyBuYXRpdmVseQorCitUaGV5IGFyZSBydW4gZHVyaW5nIHRoZSBidWlsZCBhbmQgbm90IGluc3RhbGxlZCBpbiB0aGUgZW5kLiBXaXRob3V0Cit0aGlzIG9uZSBnZXRzIHRoZSBmb2xsb3dpbmcgZXJyb3IgZnJvbSBtZXNvbjogIkVSUk9SOiBDYW4gbm90IHVzZQordGFyZ2V0IGdlbi11bmljb2RlLXZlcnNpb24gYXMgYSBnZW5lcmF0b3IgYmVjYXVzZSBpdCBpcyBjcm9zcy1idWlsdAorYW5kIG5vIGV4ZSB3cmFwcGVyIGlzIGRlZmluZWQuIFlvdSBtaWdodCB3YW50IHRvIHNldCBpdCB0byBuYXRpdmUKK2luc3RlYWQuIgorCitDbG9zZXMgIzg3LgorCistLS0KKyBnZW4udGFiL21lc29uLmJ1aWxkIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2VuLnRhYi9tZXNvbi5idWlsZCBiL2dlbi50YWIvbWVzb24uYnVpbGQKK2luZGV4IDYwMDZkOTguLjhjMjFlOTggMTAwNjQ0CistLS0gYS9nZW4udGFiL21lc29uLmJ1aWxkCisrKysgYi9nZW4udGFiL21lc29uLmJ1aWxkCitAQCAtMzMsNyArMzMsOCBAQCBnZW5fdW5pY29kZV92ZXJzaW9uID0gZXhlY3V0YWJsZSgnZ2VuLXVuaWNvZGUtdmVyc2lvbicsCisgICAnZ2VuLXVuaWNvZGUtdmVyc2lvbi5jJywKKyAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY3MsCisgICBjX2FyZ3M6IG5hdGl2ZV9hcmdzLAorLSAgaW5zdGFsbDogZmFsc2UpCisrICBpbnN0YWxsOiBmYWxzZSwKKysgIG5hdGl2ZTogdHJ1ZSkKKyAKKyBmcmliaWRpX3VuaWNvZGVfdmVyc2lvbl9oID0gY3VzdG9tX3RhcmdldCgnZnJpYmlkaS11bmljb2RlLXZlcnNpb24uaCcsCisgICBpbnB1dDogZmlsZXMoJ3VuaWRhdGEvUmVhZE1lLnR4dCcsICd1bmlkYXRhL0JpZGlNaXJyb3JpbmcudHh0JyksCitAQCAtNjcsNyArNjgsOCBAQCBmb3JlYWNoIHRhYiA6IHRhYnMKKyAgICAgZ2VuX3Byb2dfc3JjLCAncGFja3RhYi5jJywKKyAgICAgaW5jbHVkZV9kaXJlY3RvcmllczogaW5jcywKKyAgICAgY19hcmdzOiBuYXRpdmVfYXJncywKKy0gICAgaW5zdGFsbDogZmFsc2UpCisrICAgIGluc3RhbGw6IGZhbHNlLAorKyAgICBuYXRpdmU6IHRydWUpCisgCisgICB0YWJfaW5jX2ZpbGUgPSBjdXN0b21fdGFyZ2V0KGdlbl9wcm9nX25hbWUsCisgICAgIGlucHV0OiBnZW5fcHJvZ19pbnB1dHMsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZnJpYmlkaS9mcmliaWRpXzEuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjJkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkZyZWUgSW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaWNvZGUgQmlkaXJlY3Rpb25hbCBBbGdvcml0aG0iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL21lc29uLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjBmOTdmNjUwMzg1NDUzNDAzMTZlYzBmNGJkNTNkZjBiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhNjRmMmE2ODdmNWM0ZjIwM2E0NmZhNjU5ZjQzZGQ0M2QxZjhiODQ1ZGY4ZDcyMzEwN2U4YTdlNjE1OGU0Y2UiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBsaWJfcGFja2FnZSBwa2djb25maWcKKworQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9maWxlcy9wdGVzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9maWxlcy9wdGVzdC5wYXRjaAppbmRleCBiOTQ2MWJlLi4xZTY3ZGJkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZmlsZXMvcHRlc3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0ZTRiNzBhNGEzZGNmMWZkYmVlOWU2OGJlZDNiNjJmNDJiMTk3YTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MTQ0ODcwOGUxNjNjOGVjMWY5ODA0NjRlN2RkNjc0MWRiNDI3YzhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSm9zZXAgUHVpZ2RlbW9udCA8am9zZXAucHVpZ2RlbW9udEBlbmVhLmNvbT4KIERhdGU6IFN1biwgNCBNYXkgMjAxNCAxNjowMjowNyArMDIwMAogU3ViamVjdDogW1BBVENIXSBBZGQgaW5zdGFsbC1wdGVzdCBydWxlcy4KQEAgLTksMTQgKzksMTQgQEAKIAogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgfCAgNSArKysrKwotIHRlc3RzL01ha2VmaWxlLmFtIHwgMTIgKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgdGVzdHMvTWFrZWZpbGUuYW0gfCAxMSArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggNGNkYzczNC4uMjRiOTlmMCAxMDA2NDQKK2luZGV4IGVjYzAzZGYuLjlmYmJkYTUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC00NSwzICs0NSw4IEBAIENoYW5nZUxvZzoKK0BAIC01NSwzICs1NSw4IEBAIENoYW5nZUxvZzoKICAgICAgICAgICAgICAgICAgYXdrIC1mICQodG9wX3NyY2RpcikvZ2l0MmNoZy5hd2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgLXYgYXBwZW5kPSQodG9wX3NyY2RpcikvJChwcmV2X2NoYW5nZV9sb2cpID4gQ2hhbmdlTG9nOyBcCiAgICAgICAgICBmaQpAQCAtMjYsMTQgKzI2LDEzIEBACiArCQkkKE1BS0UpIC1DICQkc3ViZGlyIERFU1RESVI9JChERVNURElSKS8kJHN1YmRpciAkQDsgXAogKwlkb25lCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggM2RiYjU4MC4uMjJmZmM0NCAxMDA2NDQKK2luZGV4IGRiZTE3ZGQuLjA2ZjUzN2YgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xMzAsNCArMTMwLDE0IEBAIGR0ZmV0Y2hfTERBREQgPSAuLi9zcmMvbGliZ2RibS5sYSAuLi9jb21wYXQvbGliZ2RibV9jb21wYXQubGEKLSBkdGRlbF9MREFERCA9IC4uL3NyYy9saWJnZGJtLmxhIC4uL2NvbXBhdC9saWJnZGJtX2NvbXBhdC5sYQotIGRfY3JlYXRfY2VfTERBREQgPSAuLi9zcmMvbGliZ2RibS5sYSAuLi9jb21wYXQvbGliZ2RibV9jb21wYXQubGEKK0BAIC0xNjksMyArMTY5LDE0IEBAIEVYVFJBX0RJU1QgKz0gXAorICAgZ2RibXRvb2wvYmFzZS5leHBcCisgICBjb25maWcvZGVmYXVsdC5leHAKICAKLS0KICtidWlsZHRlc3RzOiAkKGNoZWNrX1BST0dSQU1TKSAkKFRFU1RTVUlURSkKICsKICtpbnN0YWxsLXB0ZXN0OiAkKGNoZWNrX1BST0dSQU1TKSAkKFRFU1RTVUlURSkKQEAgLTQ1LDYgKzQ0LDMgQEAKICsJCQkkKElOU1RBTExfUFJPR1JBTSkgJCRmaWxlICQoREVTVERJUikgOyBcCiArCQlmaSBcCiArCWRvbmUKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRlNTY5Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1TVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgotCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzJkZGNiMzg5N2VmYTBmNTc0ODRhZjJiZDRmNGY4NDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RjZWZmMDBmZmUwMTQ0OTViZWQzYWVkNzFjNzkxMGFhODhiZjI5Mzc5Zjc5NWFiYzBmNDZkNGVlNWY4YmM1ZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0Ci0KLSMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQotRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCi0KLSMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcwotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCi0gICAgIyB0aGVzZSBoZWFkZXJzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCi0gICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKLSAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cwotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKLSAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAotICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFkNDMwMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJLZXkvdmFsdWUgZGF0YWJhc2UgbGlicmFyeSB3aXRoIGV4dGVuc2libGUgaGFzaGluZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZGJtLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNDFkYTFiOWZlNDJlNjQyY2JiMmMyNGQ1ZTBjNGQyNCIKKworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RibS9nZGJtLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImUzMTZmOGU0YTNlN2U0ZjIzOTU1YmU2NWQ1NGZlYzQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4ODIyY2I0NzY5ZTJkNzU5YzgyOGMwNmYxOTY2MTQ5MzZjODhjMTQxYzMxMzJiMTgyNTJmZTI1YzJiNjM1Y2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAorCisjIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKK0VYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgorCisjIFN0b3AgcHJlc2VuY2Ugb2YgZGJtL25iZG0gb24gdGhlIGhvc3QgY29udGFtaW5hdGluZyBidWlsZHMKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9saWJfbmRibV9tYWluPW5vIGFjX2N2X2xpYl9kYm1fbWFpbj1ubyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBDcmVhdGUgYSBzeW1saW5rIHRvIG5kYm0uaCBhbmQgZ2RibS5oIGluIGluY2x1ZGUvZ2RibSB0byBsZXQgb3RoZXIgcGFja2FnZXMgdG8gZmluZAorICAgICMgdGhlc2UgaGVhZGVycworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vZ2RibQorICAgIGxuIC1zZiAuLi9uZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vbmRibS5oCisgICAgbG4gLXNmIC4uL2dkYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9nZGJtLmgKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImRpZmZ1dGlscyAke1BOfS1iaW4iCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAorICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCisgICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLmluYwppbmRleCBhYmFjOGNmLi45NDhiODkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC5pbmMKQEAgLTMsNyArMyw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vZ21wbGliLm9yZy8iCiBTRUNUSU9OID0gImRldmVsIgogCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG11bHRpbGliX2hlYWRlcgogCiBQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPXllcywtLXdpdGgtcmVhZGxpbmU9bm8scmVhZGxpbmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIKaW5kZXggYjAwODcxMC4uYzc0NWRiYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgpAQCAtMjUsNiArMjUsMTAgQEAKIFBBQ0tBR0VTID0rICJsaWJnbXB4eCIKIEZJTEVTX2xpYmdtcHh4ID0gIiR7bGliZGlyfS9saWJnbXB4eCR7U09MSUJTfSIKIAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJb2VfbXVsdGlsaWJfaGVhZGVyIGdtcC5oCit9CisKIGRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CiAgICAgICAgIHNlZCAtaSBcCiAgICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtY29uZmlndXJlLmFjLXVzZS1hLWN1c3RvbS12YWx1ZS1mb3ItdGhlLWxvY2F0aW9uLW9mLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoCmluZGV4IDNlM2E2NGQuLjVmMWRkMzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwYjk3MTQ4YzNhYWQwOTkzYTlhZWIwODg1OTZmYTYzYTJmZWM1MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3ZWI3ZWZiOWNlODljNjZlMTRjMTk0NzczYzRkY2Y2NDc4YTZjYTRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIyIEphbiAyMDE4IDE4OjAwOjIxICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogdXNlIGEgY3VzdG9tIHZhbHVlIGZvciB0aGUgbG9jYXRpb24gb2YKQEAgLTgsMTUgKzgsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljLCBhbmQgb25seSBmb3IgLW5hdGl2ZV0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDM4MmVmMWQuLjA1NzBkN2MgMTAwNjQ0CitpbmRleCA1OWEyZTYwLi4xMmQzOTBiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0xODE4LDcgKzE4MTgsNyBAQCBBQ19ERUZJTkVfVU5RVU9URUQoR1BHQ09ORl9ESVNQX05BTUUsICJHUEdDb25mIiwKK0BAIC0xODQxLDcgKzE4NDEsNyBAQCBBQ19ERUZJTkVfVU5RVU9URUQoR1BHQ09ORl9ESVNQX05BTUUsICJHUEdDb25mIiwKICAKICBBQ19ERUZJTkVfVU5RVU9URUQoR1BHVEFSX05BTUUsICJncGd0YXIiLCBbVGhlIG5hbWUgb2YgdGhlIGdwZ3RhciB0b29sXSkKICAKQEAgLTI1LDYgKzI2LDMgQEAKICAgICAgICAgICAgICAgICAgICAgW1RoZSBuYW1lIG9mIHRoZSBhZ2VudCBzb2NrZXRdKQogIEFDX0RFRklORV9VTlFVT1RFRChHUEdfQUdFTlRfRVhUUkFfU09DS19OQU1FLCAiUy5ncGctYWdlbnQuZXh0cmEiLAogICAgICAgICAgICAgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGFnZW50IHNvY2tldCBmb3IgcmVtb3RlIGFjY2Vzc10pCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL0NWRS0yMDE4LTEyMDIwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9DVkUtMjAxOC0xMjAyMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ2OThkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL0NWRS0yMDE4LTEyMDIwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAxM2YxMzVjN2EyNTJjYzQ2Y2ZmOTZlNzU5NjhkOTJiNmRjOGRjZTFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KLURhdGU6IEZyaSwgOCBKdW4gMjAxOCAxMDo0NToyMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBncGc6IFNhbml0aXplIGRpYWdub3N0aWMgd2l0aCB0aGUgb3JpZ2luYWwgZmlsZSBuYW1lLgotCi0qIGcxMC9tYWlucHJvYy5jIChwcm9jX3BsYWludGV4dCk6IFNhbml0aXplIHZlcmJvc2Ugb3V0cHV0LgotLS0KLQotVGhpcyBmaXhlcyBhIGZvcmdvdHRlbiBzYW5pdGF0aW9uIG9mIHVzZXIgc3VwcGxpZWQgZGF0YSBpbiBhIHZlcmJvc2UKLW1vZGUgZGlhZ25vc3RpYy4gIFRoZSBtZW50aW9uIENWRSBpcyBhYm91dCB1c2luZyB0aGlzIHRvIGluamVjdAotc3RhdHVzLWZkIGxpbmVzIGludG8gdGhlIHN0ZGVyciBvdXRwdXQuICBPdGhlciBoYXJtIGdvb2QgYXMgd2VsbCBiZQotZG9uZS4gIE5vdGUgdGhhdCBHUEdNRSBiYXNlZCBhcHBsaWNhdGlvbnMgYXJlIG5vdCBhZmZlY3RlZCBiZWNhdXNlCi1HUEdNRSBkb2VzIG5vdCBmb2xkIHN0YXR1cyBvdXRwdXQgaW50byBzdGRlcnIuCi0KLUNWRS1pZDogQ1ZFLTIwMTgtMTIwMjAKLUdudVBHLWJ1Zy1pZDogNDAxMgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbnVwZy5vcmcvY2dpLWJpbi9naXR3ZWIuY2dpP3A9Z251cGcuZ2l0O2E9Y29tbWl0O2g9MTNmMTM1YzdhMjUyY2M0NmNmZjk2ZTc1OTY4ZDkyYjZkYzhkY2UxYl0KLQotU2lnbmVkLW9mZi1ieTogSmFnYWRlZXNoIEtyaXNobmFuamFuYXBwYSA8amtyaXNobmFuamFuYXBwYUBtdmlzdGEuY29tPgotLS0tCi0gZzEwL21haW5wcm9jLmMgfCA5ICsrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2cxMC9tYWlucHJvYy5jIGIvZzEwL21haW5wcm9jLmMKLWluZGV4IGQyY2VlYzJmZC4uYTlkYTA4Zjc0IDEwMDY0NAotLS0tIGEvZzEwL21haW5wcm9jLmMKLSsrKyBiL2cxMC9tYWlucHJvYy5jCi1AQCAtODUxLDcgKzg1MSwxNCBAQCBwcm9jX3BsYWludGV4dCggQ1RYIGMsIFBBQ0tFVCAqcGt0ICkKLSAgIGlmIChwdC0+bmFtZWxlbiA9PSA4ICYmICFtZW1jbXAoIHB0LT5uYW1lLCAiX0NPTlNPTEUiLCA4KSkKLSAgICAgbG9nX2luZm8gKF8oIk5vdGU6IHNlbmRlciByZXF1ZXN0ZWQgXCJmb3IteW91ci1leWVzLW9ubHlcIlxuIikpOwotICAgZWxzZSBpZiAob3B0LnZlcmJvc2UpCi0tICAgIGxvZ19pbmZvIChfKCJvcmlnaW5hbCBmaWxlIG5hbWU9JyUuKnMnXG4iKSwgcHQtPm5hbWVsZW4sIHB0LT5uYW1lKTsKLSsgICAgewotKyAgICAgIC8qIFdlIGRvbid0IHVzZSBwcmludF91dGY4X2J1ZmZlciBiZWNhdXNlIHRoYXQgd291bGQgcmVxdWlyZSBhCi0rICAgICAgICogc3RyaW5nIGNoYW5nZSB3aGljaCB3ZSBkb24ndCB3YW50IGluIDIuMi4gIEl0IGlzIGFsc28gbm90Ci0rICAgICAgICogY2xlYXIgd2hldGhlciB0aGUgZmlsZW5hbWUgaXMgYWx3YXlzIHV0Zi04IGVuY29kZWQuICAqLwotKyAgICAgIGNoYXIgKnRtcCA9IG1ha2VfcHJpbnRhYmxlX3N0cmluZyAocHQtPm5hbWUsIHB0LT5uYW1lbGVuLCAwKTsKLSsgICAgICBsb2dfaW5mbyAoXygib3JpZ2luYWwgZmlsZSBuYW1lPSclLipzJ1xuIiksIChpbnQpc3RybGVuICh0bXApLCB0bXApOwotKyAgICAgIHhmcmVlICh0bXApOwotKyAgICB9Ci0gCi0gICBmcmVlX21kX2ZpbHRlcl9jb250ZXh0ICgmYy0+bWZ4KTsKLSAgIGlmIChnY3J5X21kX29wZW4gKCZjLT5tZngubWQsIDAsIDApKQotLS0gCi0yLjEzLjMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9DVkUtMjAxOC05MjM0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9DVkUtMjAxOC05MjM0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGJhMWQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvQ1ZFLTIwMTgtOTIzNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gY2UwNTUyNjljODBmNmU3YzEzOTNjMGRlZWM3YmM1ZjBkMzc4OTVlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNpbmFuIEtheWEgPG9rYXlhQGtlcm5lbC5vcmc+Ci1EYXRlOiBTdW4sIDIzIFNlcCAyMDE4IDA0OjA1OjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGcxMDogRml4IGZpbHRlcmluZyBieSBQSy0+UkVRX1VTQUdFCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZGV2LmdudXBnLm9yZy9yR2ExN2QyZDFmNjkwZWJlNWQwMDViNDU4OWE1ZmUzNzhiNjQ4N2M2NTddCi1DVkU6IENWRS0yMDE4LTkyMzQKLVNpZ25lZC1vZmYtYnk6IFNpbmFuIEtheWEgPG9rYXlhQGtlcm5lbC5vcmc+Ci0tLS0KLSBnMTAvZ2V0a2V5LmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZzEwL2dldGtleS5jIGIvZzEwL2dldGtleS5jCi1pbmRleCBlMzFlMDIzLi5jYTI1MDBjIDEwMDY0NAotLS0tIGEvZzEwL2dldGtleS5jCi0rKysgYi9nMTAvZ2V0a2V5LmMKLUBAIC0xODEwLDYgKzE4MTAsOCBAQCBnZXRfcHVia2V5X2J5ZnByaW50IChjdHJsX3QgY3RybCwgUEtUX3B1YmxpY19rZXkgKnBrLCBrYm5vZGVfdCAqcl9rZXlibG9jaywKLSAgICAgICBjdHguaXRlbXNbMF0ubW9kZSA9IGZwcmludF9sZW4gPT0gMTYgPyBLRVlEQl9TRUFSQ0hfTU9ERV9GUFIxNgotIAk6IEtFWURCX1NFQVJDSF9NT0RFX0ZQUjIwOwotICAgICAgIG1lbWNweSAoY3R4Lml0ZW1zWzBdLnUuZnByLCBmcHJpbnQsIGZwcmludF9sZW4pOwotKyAgICAgIGlmIChwaykKLSsgICAgICAgIGN0eC5yZXFfdXNhZ2UgPSBway0+cmVxX3VzYWdlOwotICAgICAgIHJjID0gbG9va3VwIChjdHJsLCAmY3R4LCAwLCAma2IsICZmb3VuZF9rZXkpOwotICAgICAgIGlmICghcmMgJiYgcGspCi0gCXBrX2Zyb21fYmxvY2sgKHBrLCBrYiwgZm91bmRfa2V5KTsKLS0tIAotMi4xOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTM2ODhhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBQcml2YWN5IEd1YXJkIC0gZW5jcnlwdGlvbiBhbmQgc2lnbmluZyB0b29scyAoMi54KSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xODlhZjhhZmNhNmQ2MDc1YmE2YzllMGFhODA3NzYyNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKLQotREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMjAyMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC05MjM0LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCi0KLQotU1JDX1VSSVttZDVzdW1dID0gIjcwOWU1YWY1YmJhODRkMjUxYzUyMDIyMmU3MjA5NzJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwMWEzZTY0NzgwZmRmYTZkNzY3MGRlMDg4MGFhNWM5ZDU4OWIzZGI3YTcwOTg5NzlkNzYwNmNlYzU0NmYyZWMiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCi0JCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCi0JCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLQkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLQkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLQkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAotICAgICAgICAgICAgICAgIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLQlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAotCXJtIC1mICR7U30vbTQva3NiYS5tNAotCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCi0JbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGcyIEdOVVBHX0JJTkRJUj0ke1NUQUdJTkdfQklORElSX05BVElWRX0KLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZDIzYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi45LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCisKKworU1JDX1VSSVttZDVzdW1dID0gIjUyYzg5NWE4MWY1MTRhNjVlMDg5MjM3MzZjMzg2NTRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyNzhlYWFiZmZhMWViYzlmYTJjZWIzZGM1M2VlYTlhMTUwNWFiMDJhNjY4YTg2ZGQ2ZmVjMDY5NTFhZjIxNjQiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCisJCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCisJCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKwkJLS1lbmFibGUtZ3BnLWlzLWdwZzIgXAorICAgICAgICAgICAgICAgIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5CisJcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKKwlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAorCXJtIC1mICR7U30vbTQva3NiYS5tNAorCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCisJbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGcyIEdOVVBHX0JJTkRJUj0ke1NUQUdJTkdfQklORElSX05BVElWRX0KK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGVjOGQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/Z3JvdXA9Z251dGxzIgotCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS14eCA9ICJMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKLQotREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0L2dudXRscy92JHtTSFJUX1ZFUn0vZ251dGxzLSR7UFZ9LnRhci54eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWcgcGtnY29uZmlnIGdldHRleHQgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1QQUNLQUdFQ09ORklHID8/PSAibGliaWRuIgotCi0jIFlvdSBtdXN0IGFsc28gaGF2ZSBDT05GSUdfU0VDQ09NUCBlbmFibGVkIGluIHRoZSBrZXJuZWwgZm9yCi0jIHNlY2NvbXAgdG8gd29yay4KLSMKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiYWNfY3ZfbGlic2VjY29tcD15ZXMsYWNfY3ZfbGlic2VjY29tcD1ubyxsaWJzZWNjb21wIgotCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCi1QQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCi1QQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1kb2MgXAotICAgIC0tZGlzYWJsZS1saWJkYW5lIFwKLSAgICAtLWRpc2FibGUtZ3VpbGUgXAotICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgLS1lbmFibGUtbG9jYWwtbGlib3B0cyBcCi0gICAgLS1lbmFibGUtb3BlbnNzbC1jb21wYXRpYmlsaXR5IFwKLSAgICAtLXdpdGgtbGlicHRocmVhZC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgLS13aXRob3V0LWxpYnVuaXN0cmluZy1wcmVmaXggXAotIgotCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JZm9yIGRpciBpbiAuIGxpYjsgZG8KLQkJcm0gLWYgJHtkaXJ9L2FjbG9jYWwubTQgJHtkaXJ9L200L2xpYnRvb2wubTQgJHtkaXJ9L200L2x0Ki5tNAotCWRvbmUKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LW9wZW5zc2wgJHtQTn0teHgiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dudXRscy1jbGktZGVidWciCi1GSUxFU18ke1BOfS1vcGVuc3NsID0gIiR7bGliZGlyfS9saWJnbnV0bHMtb3BlbnNzbC5zby4qIgotRklMRVNfJHtQTn0teHggPSAiJHtsaWJkaXJ9L2xpYmdudXRsc3h4LnNvLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1zZWQtY29tbWFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZlN2JjOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBlYWFiNTViYjZkNDg2NDMxNjNlZWJiYzljYTU3NWE5Y2EyYThlMDNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIxIEZlYiAyMDE3IDE3OjEwOjA3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZml4IHNlZCBjb21tYW5kCi0KLVRoZSAic2VkICdzLy5iYWsvL2cnIiBtYXRjaHMgImJpdGJha2UiLCB3aGljaCB3b3VsZCBjYXVzZSBzdHJhbmdlIGVycm9ycwotd2hlbiB0aGUgUyBjb250YWlucyAiYml0YmFrZSIsIGZpeCB0byAic2VkICdzL1wuYmFrJC8vJ2AiCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ251dGxzLTMuNS4xNi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnV0bHMtMy41LjE2Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ251dGxzLTMuNS4xNi9jb25maWd1cmUuYWMKLUBAIC05NTUsNyArOTU1LDcgQEAgWUVBUj1gZGF0ZSArJVlgCi0gQUNfU1VCU1QoW1lFQVJdLCAkWUVBUikKLSAKLSBmb3IgaSBpbiAke3NyY2Rpcn0vc3JjLyotYXJncy5jLmJhayAke3NyY2Rpcn0vc3JjLyotYXJncy5oLmJhazsgZG8KLS0JbmFtPSQoYmFzZW5hbWUgJGl8c2VkICdzLy5iYWsvL2cnKQotKwluYW09JChiYXNlbmFtZSAkaXxzZWQgJ3MvXC5iYWskLy8nKQotIAlpZiB0ZXN0ICIkY3JlYXRlX2xpYm9wdHNfbGlua3MiID0gInllcyI7dGhlbgotIAkJcm0gLWYgInNyYy8kbmFtLnN0YW1wIgotIAkJcm0gLWYgInNyYy8kbmFtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjI0YTIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBnbnV0bHMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtc2VkLWNvbW1hbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2FybV9lYWJpLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjRiNjVhZTNmZmVmNTlmM2VlZWQ1MWE2MTY2ZmYxMmIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwYjEwZDJjOTk5NGJjMDMyODI0MzE0NzE0ZDBlODRjMGYxOWJkYjNkNzE1ZDhlZDU1YmViNzM2NGE4ZWJhZWQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjYuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDFiYmVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4zLmJiCkBAIC0wLDAgKzEsNjQgQEAKK1NVTU1BUlkgPSAiR05VIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dudXRscy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9zdXBwb3J0Lz9ncm91cD1nbnV0bHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMrICYgTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LXh4ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0tb3BlbnNzbCA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcxMzkxYzhlMGMxY2ZlNjgwNzdlN2ZjZTNiNTg2MjgzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitERVBFTkRTID0gIm5ldHRsZSBnbXAgdmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZ251cGcub3JnL2Z0cC9nY3J5cHQvZ251dGxzL3Yke1NIUlRfVkVSfS9nbnV0bHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2FybV9lYWJpLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImQzYjFiMDVjMjU0NmI4MDgzMjEwMWE0MjNhODBmYWY4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkNjQyYjY2YTRlY2Y0ODUxYWIyZDgwOWNkMTQ3NWMyOTdiNjIwMWQ4ZThiZDE0YjRkMWMwOGI1M2ZmY2E5OTMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmlkbiIKKworIyBZb3UgbXVzdCBhbHNvIGhhdmUgQ09ORklHX1NFQ0NPTVAgZW5hYmxlZCBpbiB0aGUga2VybmVsIGZvcgorIyBzZWNjb21wIHRvIHdvcmsuCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gImFjX2N2X2xpYnNlY2NvbXA9eWVzLGFjX2N2X2xpYnNlY2NvbXA9bm8sbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtaWRuLC0td2l0aG91dC1pZG4sbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCitQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCitQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1kb2MgXAorICAgIC0tZGlzYWJsZS1saWJkYW5lIFwKKyAgICAtLWRpc2FibGUtZ3VpbGUgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS1lbmFibGUtbG9jYWwtbGlib3B0cyBcCisgICAgLS1lbmFibGUtb3BlbnNzbC1jb21wYXRpYmlsaXR5IFwKKyAgICAtLXdpdGgtbGlicHRocmVhZC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgLS13aXRob3V0LWxpYnVuaXN0cmluZy1wcmVmaXggXAorIgorCitMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sYXJncCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJZm9yIGRpciBpbiAuIGxpYjsgZG8KKwkJcm0gLWYgJHtkaXJ9L2FjbG9jYWwubTQgJHtkaXJ9L200L2xpYnRvb2wubTQgJHtkaXJ9L200L2x0Ki5tNAorCWRvbmUKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LW9wZW5zc2wgJHtQTn0teHgiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dudXRscy1jbGktZGVidWciCitGSUxFU18ke1BOfS1vcGVuc3NsID0gIiR7bGliZGlyfS9saWJnbnV0bHMtb3BlbnNzbC5zby4qIgorRklMRVNfJHtQTn0teHggPSAiJHtsaWJkaXJ9L2xpYmdudXRsc3h4LnNvLioiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtcGtnY29uZmlnLnBhdGNoCmluZGV4IGYxOTk3ZTEuLmFlOWE0NmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMjY1ZmFmOGZlMGFjYWNhMjA0M2EyNDhhNGRmMDJiMDg2OGZmYTZkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzQ1MmJhNThkZDJmOTlkNmU2MjQ0MjE2OTc0MTdjYzAxOGY5YTY3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowMDowOCAtMDQwMAotU3ViamVjdDogW1BBVENIIDEvNF0gcGtnY29uZmlnCitEYXRlOiBGcmksIDI5IEp1biAyMDE4IDE0OjM1OjQxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS83XSBwa2djb25maWcKIAogVXBkYXRlIGdwZ21lIHRvIHVzZSBwa2djb25maWcgaW5zdGVhZCBvZiAtY29uZmlnIGZpbGVzIHNpbmNlIGl0cwogc2ltcGxlciBhbmQgbGVzcyBlcnJvciBwcm9uZSB3aGVuIGNyb3NzIGNvbXBpbGluZy4KQEAgLTExLDcgKzExLDcgQEAKIAogU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiAKLVJlYmFzZSB0byAxLjkuMAorUmViYXNlIHRvIDEuMTEuMQogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KQEAgLTI1LDEwICsyNSwxMCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZ3BnbWUucGMuaW4KIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNmVhNGJjZC4uMmEwZDUyOCAxMDA2NDQKK2luZGV4IDJhMzU0MDQuLjc0ODVjZGYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTg4Nyw2ICs4ODcsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCitAQCAtODg2LDYgKzg4Niw3IEBAIEFDX0NPTkZJR19GSUxFUyhNYWtlZmlsZSBzcmMvTWFrZWZpbGUKICAgICAgICAgICAgICAgICAgc3JjL3ZlcnNpb25pbmZvLnJjCiAgICAgICAgICAgICAgICAgIHNyYy9ncGdtZS5oKQogIEFDX0NPTkZJR19GSUxFUyhzcmMvZ3BnbWUtY29uZmlnLCBjaG1vZCAreCBzcmMvZ3BnbWUtY29uZmlnKQpAQCAtMzcsNyArMzcsNyBAQAogIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9zcmMvR3BnbWVwcENvbmZpZy13MzIuY21ha2UuaW4pCiAgQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL3NyYy9HcGdtZXBwQ29uZmlnLmNtYWtlLmluKQogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggY2U2ZjFkNC4uNWYzOGZlZSAxMDA2NDQKK2luZGV4IDBhMTk2ZTAuLmNlY2FmOGYgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQogQEAgLTE5LDEyICsxOSwxNCBAQApAQCAtNTQsNyArNTQsNyBAQAogK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKICtwa2djb25maWdfREFUQSA9IGdwZ21lLnBjIGdwZ21lLXB0aHJlYWQucGMKICAKLSBiaW5fUFJPR1JBTVMgPSBncGdtZS10b29sCisgYmluX1BST0dSQU1TID0gZ3BnbWUtdG9vbCBncGdtZS1qc29uCiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4gYi9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgogbmV3IGZpbGUgbW9kZSAxMDA2NDQKQEAgLTI5OSw1ICsyOTksNSBAQAogK1JlcXVpcmVzOiBsaWJhc3N1YW4gZ3BnLWVycm9yCiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAppbmRleCBkMjAyNzFlLi40ZjVjZWRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMzBmN2E2OTRjYzQ1NjhlY2IyNGY3N2M4M2E2MTIzZWQzZjQwNzVmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDVkODI4MzU2ZWZjMTQwYTE0OTJiZWZiMWU2ZGM1OWE5ZjRlMTZiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTA6NDQ6MTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3BnbWUvbGFuZy9weXRob246IGdwZy1lcnJvci1jb25maWcgc2hvdWxkIG5vdCBiZSB1c2VkCitTdWJqZWN0OiBbUEFUQ0ggMi83XSBncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQKIAogZ3BnLWVycm9yLWNvbmZpZyB3YXMgbW9kaWZpZWQgYnkgT0UgdG8gYWx3YXlzIHJldHVybiBhbiBlcnJvci4KIFNvIHdlIHdhbnQgdG8gZmluZCBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8gcmV0cmlldmUgd2hhdGV2ZXIgaXQKQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbiBiL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1pbmRleCBmOWRkYTIwLi45ZjVkNjFmIDEwMDc1NQoraW5kZXggMjU5NTA3My4uNjBiNTI1NyAxMDA3NTUKIC0tLSBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgogQEAgLTI2LDcgKzI2LDYgQEAgaW1wb3J0IHNodXRpbApAQCAtMzAsNyArMzAsNyBAQAogIGdwZ21lX2NvbmZpZ19mbGFncyA9IFsiLS10aHJlYWQ9cHRocmVhZCJdCiAgZ3BnbWVfY29uZmlnID0gWyJncGdtZS1jb25maWciXSArIGdwZ21lX2NvbmZpZ19mbGFncwogIGdwZ21lX2ggPSAiIgotQEAgLTE3NCwxNCArMTczLDcgQEAgY2xhc3MgQnVpbGRFeHRGaXJzdEhhY2soYnVpbGQpOgorQEAgLTE1NywxNCArMTU2LDcgQEAgY2xhc3MgQnVpbGRFeHRGaXJzdEhhY2soYnVpbGQpOgogIAogICAgICBkZWYgX2dlbmVyYXRlX2Vycm9yc19pKHNlbGYpOgogIApAQCAtNDcsNSArNDcsNSBAQAogICAgICAgICAgZmlsdGVyX3JlID0gcmUuY29tcGlsZShyJ0dQR19FUlJfW14gXSogPScpCiAgICAgICAgICByZXdyaXRlX3JlID0gcmUuY29tcGlsZShyJyAqKC4qKSA9IC4qJykKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCmluZGV4IDdjOWNjY2MuLjMzMGJlYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDkzYWFlMzRlZTcwYjhkNTBiMzFhMTlhNjVkNmFjODI5MGNiMTQ4YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYwYmFmOWViZjMwYmVkMGUyZWUzYzdjNWE3NGQ1YjZkNTAwMzU4NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDMwIEphbiAyMDE4IDE1OjI4OjQ5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSBDb3JyZWN0bHkgaW5zdGFsbCBweXRob24gbW9kdWxlcworU3ViamVjdDogW1BBVENIIDMvN10gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CkBAIC0yOSw1ICsyOSw1IEBACiAgCWRvbmUKICAKIC0tIAotMS44LjMuMQorMi43LjQKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaAppbmRleCBkMmIwMzlkLi4xYTYwZjc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMzJlY2MzZjA1ODMwNzA2MGU0MGFmODYxMjdjZDIyNjI0OGE3M2M0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmQ3ZGNjZWVlZTQzOWViNDc5ZWRiYjQxOGJhYjYzNTM0MzQxNGVlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjA2OjQ1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBweXRob24gaW1wb3J0CitTdWJqZWN0OiBbUEFUQ0ggNC83XSBweXRob24gaW1wb3J0CiAKIERvbid0IGNoZWNrIGZvciBvdXRwdXQgb24gc3RkZXJyIHRvIGtub3cgaWYgYW4gaW1wb3J0IHdvcmtlZCwgaG9zdCBpbnB1dHJjIGFuZAogc3lzcm9vdCByZWFkbGluZSBjYW4gY2F1c2Ugd2FybmluZ3Mgb24gc3RkZXJyLgpAQCAtMzAsNSArMzAsNSBAQAogIAllbHNlCiAgCQlBQ19NU0dfUkVTVUxUKFtub10pCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKaW5kZXggOTYzYWU4Ny4uMmRhNzkwNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDZkY2VkYzRkZDA1NWFmOTAyNzE5YjFhMWNiMTBkYWE5MzVhMjdmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE1OGQ5MDYzMmE5OTA3YmUzZTgwMDE4MDBhMTQzYWMxOTA3NTI0MWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMTMgQXByIDIwMTcgMTY6NDA6MjcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCitTdWJqZWN0OiBbUEFUQ0ggNS83XSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgogIG91dHB1dAogCiBUaGUgbG9naWMgd2FzIG5vdCB3b3JraW5nIGluIG11bHRpbGliIHNldHVwcyB3aGljaCB1c2Ugb3RoZXIKQEAgLTI3LDUgKzI3LDUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAtTCp8LWwqKQogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2gKaW5kZXggOGNjODk4My4uMjZmZjQ3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA2LWZpeC1idWlsZC1wYXRoLWlzc3VlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gMTgwYTU2NjllNGExM2E1NTBiMWIwZGNlZjE2ODliNmMwNDcwZmU1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGY4Mzc1MGNlNDAyYjY1ZDE2Y2MwOWY4YTAyNzRhN2VjNzZmYzYzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMzEgSmFuIDIwMTggMTE6MDE6MDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHBhdGggaXNzdWUKK1N1YmplY3Q6IFtQQVRDSCA2LzddIGZpeCBidWlsZCBwYXRoIGlzc3VlCiAKIEdldCB0aGUgIi0tcm9vdCIgZGlyZWN0b3J5IHN1cHBsaWVkIHRvIHRoZSAiaW5zdGFsbCIgY29tbWFuZCwKIGFuZCB1c2UgaXQgYXMgYSBwcmVmaXggdG8gc3RyaXAgb2ZmIHRoZSBwdXJwb3J0ZWQgZmlsZW5hbWUKQEAgLTMzLDUgKzMzLDUgQEAKICAJZG9uZQogIAogLS0gCi0xLjguMy4xCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDctcXQtcHl0aG9uLUFkZC12YXJpYWJsZXMtdG8tdGVzdHMucGF0Y2gKaW5kZXggY2UzNzQ1Yy4uNjNlZWFjZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNy1xdC1weXRob24tQWRkLXZhcmlhYmxlcy10by10ZXN0cy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZjQ3ZThjNmY5ZTQ2MTgwMzQ2OGE2NDU4MWQzNjQwZDg3MzM1MmVhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDMwODczNDgzNDhiNGE3ZmNmYjA1YmYyYTc1YjRhNjM0NTNlMWM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMSBGZWIgMjAxOCAxMDoxNDozMCArMDgwMAotU3ViamVjdDogW1BBVENIXSBxdC9weXRob246IEFkZCB2YXJpYWJsZXMgdG8gdGVzdHMKK1N1YmplY3Q6IFtQQVRDSCA3LzddIHF0L3B5dGhvbjogQWRkIHZhcmlhYmxlcyB0byB0ZXN0cwogCiAqIGNvbmZpZ3VyZS5hYywgbGFuZy9weXRob24vTWFrZWZpbGUuYW06CiAgIE5ldyB2YXJpYWJsZSB0byBgbGFuZy9weXRob24nLCBzZXQgdG8gYGxhbmcvcHl0aG9uJyBpZiBSVU5fTEFOR19QWVRIT05fVEVTVFMKQEAgLTE5LDEwICsxOSwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2MDhjMzc2Li5mYWQ3NDY3IDEwMDY0NAoraW5kZXggNzQ4NWNkZi4uNGFhMjE2ZCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNTM2LDYgKzUzNiwxNyBAQCBBQ19BUkdfRU5BQkxFKGcxMy10ZXN0LAorQEAgLTUzNSw2ICs1MzUsMTcgQEAgQUNfQVJHX0VOQUJMRShnMTMtdGVzdCwKICAgICAgICAgICBydW5fZzEzX3Rlc3Q9JGVuYWJsZXZhbCkKICBBTV9DT05ESVRJT05BTChSVU5fRzEzX1RFU1RTLCB0ZXN0ICIkcnVuX2cxM190ZXN0IiA9ICJ5ZXMiKQogIApAQCAtNDEsNyArNDEsNyBAQAogICMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCiAgQUNfQ0hFQ0tfSEVBREVSU19PTkNFKFtsb2NhbGUuaCBzeXMvc2VsZWN0Lmggc3lzL3Vpby5oIGFyZ3AuaAogZGlmZiAtLWdpdCBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtIGIvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IDhkNzRjYmQuLjQzYjVkMWUgMTAwNjQ0CitpbmRleCA1YTQ2OGYxLi40M2I5Nzg4IDEwMDY0NAogLS0tIGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KICsrKyBiL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCiBAQCAtMjQsNyArMjQsMTAgQEAgRVhUUkFfRElTVCA9IFwKQEAgLTc0LDUgKzc0LDUgQEAKICAKICBFWFRSQV9ESVNUID0gUkVBRE1FCiAtLSAKLTEuOC4zLjEKKzIuNy40CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMTVmM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1TVU1NQVJZID0gIkhpZ2gtbGV2ZWwgR251UEcgZW5jcnlwdGlvbi9zaWduaW5nIEFQSSIKLURFU0NSSVBUSU9OID0gIkdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBtYWtlIGFjY2VzcyB0byBHbnVQRyBlYXNpZXIgZm9yIGFwcGxpY2F0aW9ucy4gSXQgcHJvdmlkZXMgYSBIaWdoLUxldmVsIENyeXB0byBBUEkgZm9yIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gYW5kIGtleSBtYW5hZ2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvZ3BnbWUuaHRtbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT1iYmI0NjEyMTFhMzNiMTM0ZDQyZWQ1ZWU4MDJiMzdmZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZ3BnbWUuaC5pbjtlbmRsaW5lPTIzO21kNT05ZDE1N2QwOGE2OTA1OTM0NGU2ZjgyYWJkMmQyNTc4MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5naW5lLmg7ZW5kbGluZT0yMjttZDU9NGI2ZDhiYTMxM2Q5YjU2NGNjNGQ0Y2ZiMTY0MGFmOWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vZ3BnbWUvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWdwZ21lLWxhbmctcHl0aG9uLWdwZy1lcnJvci1jb25maWctc2hvdWxkLW5vdC1iZS11c2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtZml4LWJ1aWxkLXBhdGgtaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1xdC1weXRob24tQWRkLXZhcmlhYmxlcy10by10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzhiMTUzM2M1OTM0Nzg5ODJlZTJmYzU0ODI2MGM1NjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE4ZmVkMTE5N2MzYjk5YzM1ZjQwMzA2NmJiMzQ0YTI2MjI0ZDI5MmFmYzA0OGNmZGZjNGNjZDU2OTBhMDY5MyIKLQotREVQRU5EUyA9ICJsaWJncGctZXJyb3IgbGliYXNzdWFuIgotUkRFUEVORFNfJHtQTn0tY3BwICs9ICJsaWJzdGRjKysiCi0KLVJERVBFTkRTX3B5dGhvbjItZ3BnICs9ICJweXRob24tdW5peGFkbWluIgotUkRFUEVORFNfcHl0aG9uMy1ncGcgKz0gInB5dGhvbjMtdW5peGFkbWluIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZ21lLWNvbmZpZyIKLQotIyBOb3RlIHNlbGVjdCBweXRob24yIG9yIHB5dGhvbjMsIGJ1dCB5b3UgY2FuJ3Qgc2VsZWN0IGJvdGggYXQgdGhlIHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIiwscHl0aG9uIHN3aWctbmF0aXZlLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLCxweXRob24zIHN3aWctbmF0aXZlLCIKLQotIyBEZWZhdWx0IGluIGNvbmZpZ3VyZS5hYzogImNsIGNwcCBweXRob24gcXQiCi0jIFN1cHBvcnRlZDogImNsIGNwcCBweXRob24gcHl0aG9uMiBweXRob24zIHF0IgotIyBweXRob24gc2F5cyAnc2VhcmNoIGFuZCBmaW5kIHB5dGhvbjIgb3IgcHl0aG9uMycKLQotIyBCdWlsZGluZyB0aGUgQysrIGJpbmRpbmdzIGZvciBuYXRpdmUgcmVxdWlyZXMgYSBDKysgY29tcGlsZXIgd2l0aCBDKysxMQotIyBzdXBwb3J0LiBTaW5jZSB0aGVzZSBiaW5kaW5ncyBhcmUgY3VycmVudGx5IG5vdCBuZWVkZWQsIHdlIGNhbiBkaXNhYmxlIHRoZW0uCi1ERUZBVUxUX0xBTkdVQUdFUyA9ICIiCi1ERUZBVUxUX0xBTkdVQUdFU19jbGFzcy10YXJnZXQgPSAiY3BwIgotTEFOR1VBR0VTID89ICIke0RFRkFVTFRfTEFOR1VBR0VTfSIKLUxBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICcgcHl0aG9uMicsICcnLCBkKX0iCi1MQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnIHB5dGhvbjMnLCAnJywgZCl9IgotCi1QWVRIT05fSU5IRVJJVCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0iCi1QWVRIT05fSU5IRVJJVCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICctLWVuYWJsZS1sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSIgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnY29uZi10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZy10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdwZ3NtLXRlc3QgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZzEzLXRlc3QgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1xdC10ZXN0IFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxhbmctcHl0aG9uLXRlc3QgXAotJwotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgJHtQWVRIT05fSU5IRVJJVH0KLQotZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKLVBBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgotCi1GSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKLUZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAotIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9weXRob24ubTQKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZV8xLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZmYWU5NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS4xMS4xLmJiCkBAIC0wLDAgKzEsODYgQEAKK1NVTU1BUlkgPSAiSGlnaC1sZXZlbCBHbnVQRyBlbmNyeXB0aW9uL3NpZ25pbmcgQVBJIgorREVTQ1JJUFRJT04gPSAiR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIG1ha2UgYWNjZXNzIHRvIEdudVBHIGVhc2llciBmb3IgYXBwbGljYXRpb25zLiBJdCBwcm92aWRlcyBhIEhpZ2gtTGV2ZWwgQ3J5cHRvIEFQSSBmb3IgZW5jcnlwdGlvbiwgZGVjcnlwdGlvbiwgc2lnbmluZywgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBhbmQga2V5IG1hbmFnZW1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9ncGdtZS5odG1sIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGdtZS5oLmluO2VuZGxpbmU9MjM7bWQ1PTRkNjMxOWU1ODdmZDk0NGFkZmU2MWE0MWE4ZjE1YjM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9lbmdpbmUuaDtlbmRsaW5lPTIyO21kNT00YjZkOGJhMzEzZDliNTY0Y2M0ZDRjZmIxNjQwYWY5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ncGdtZS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtYnVpbGQtcGF0aC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LXF0LXB5dGhvbi1BZGQtdmFyaWFibGVzLXRvLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMjljNDZmYjg1YTdmZmE0MWU0MzM0NWU0OGFlZTg4NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDFiMTExNzc0ZDJlM2RkMjZkY2Q3YzI1MTgxOWNlNGVmNzc0ZWM1ZTU2NjI1MWViOTMwOGZhNzU0MmZiZDZmIgorCitERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCitSREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKKworUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCitSREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgorCisjIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgorCisjIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKKyMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCisjIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJworCisjIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCisjIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KK0RFRkFVTFRfTEFOR1VBR0VTID0gIiIKK0RFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCitMQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgorTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCisKK1BZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKK1BZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgorCitFWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IiBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncGdjb25mLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3BnLXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3Bnc20tdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nMTMtdGVzdCBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1sYW5nLXF0LXRlc3QgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGFuZy1weXRob24tdGVzdCBcCisnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyBkaXN0dXRpbHMtY29tbW9uLWJhc2UgJHtQWVRIT05fSU5IRVJJVH0KKworZXhwb3J0IFBLR19DT05GSUc9J3BrZy1jb25maWcnCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgIiR7UE59LWNwcCIKK1BBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbjItZ3BnICcsICcnLCBkKX0iCitQQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWdwZyAnLCAnJywgZCl9IgorCitGSUxFU18ke1BOfS1jcHAgPSAiJHtsaWJkaXJ9L2xpYmdwZ21lcHAuc28uKiIKK0ZJTEVTX3B5dGhvbjItZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU19weXRob24zLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NvbW1vbi1saXNwL3NvdXJjZS9ncGdtZS8qIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NtYWtlLyogXAorIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURfX2Vycm9yX3RfZGVmaW5lZCAiCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9weXRob24ubTQKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCmluZGV4IDk4MzExOGMuLmUyMDA4NWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYwpAQCAtMTksNyArMTksOSBAQAogCiBJQ1VfTUFKT1JfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vaWN1LWNvbmZpZyIKIAogIyBJQ1UgbmVlZHMgdGhlIG5hdGl2ZSBidWlsZCBkaXJlY3RvcnkgYXMgYW4gYXJndW1lbnQgdG8gaXRzIC0td2l0aC1jcm9zcy1idWlsZCBvcHRpb24gd2hlbgogIyBjcm9zcy1jb21waWxpbmcuIFRha2VuIHRoZSBzaXR1YXRpb24gdGhhdCBkaWZmZXJlbnQgYnVpbGRzIG1heSBzaGFyZSBhIGNvbW1vbiBzc3RhdGUtY2FjaGUKQEAgLTMxLDYgKzMzLDggQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtLXdpdGgtZGF0YS1wYWNrYWdpbmc9YXJjaGl2ZScsICcnLCBkKX0iCiBUQVJHRVRfQ1hYRkxBR1NfYXBwZW5kID0gIiR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2JlJywgJyAtRElDVV9EQVRBX0RJUj1cXCIiJHtkYXRhZGlyfS8ke0JQTn0vJHtQVn1cXCIiJywgJycsIGQpfSIKIAorQVNORUVERUQgPSAiIgorCiAjIHN0cnRvZF9sKCkgaXMgbm90IHN1cHBvcnRlZCBieSBtdXNsOyBhbHNvIHhsb2NhbGUuaCBpcyBtaXNzaW5nCiAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIGl0cyB1c2UgdmlhIGNvbmZpZ3VyZSBzd2l0Y2hlcyBvciBlbnYgdmFycwogIyBzbyBtb25rZXkgcGF0Y2hpbmcgaXMgbmVlZGVkLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGM0OWUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZDZiNTdjMWI0ZWI5YTI0ZDlkOTUzNDJhOTYxYzkzOTQ2NTM5YzkzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI0IEp1biAyMDE3IDIyOjUyOjQwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBpMThuOiBEcm9wIGluY2x1ZGUgPHhsb2NhbGUuaD4KLQotZ2xpYmMgMi4yNiBkcm9wcyB0aGlzIGhlYWRlcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIHNvdXJjZS9pMThuL2RpZ2l0bHN0LmNwcCB8IDYgKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwIGIvc291cmNlL2kxOG4vZGlnaXRsc3QuY3BwCi1pbmRleCA4ZTg2ZmE3Li4wYmRiYjJjIDEwMDY0NAotLS0tIGEvaTE4bi9kaWdpdGxzdC5jcHAKLSsrKyBiL2kxOG4vZGlnaXRsc3QuY3BwCi1AQCAtNjIsMTEgKzYyLDcgQEAKLSAjZW5kaWYKLSAKLSAjaWYgVV9VU0VfU1RSVE9EX0wKLS0jIGlmIFVfSEFWRV9YTE9DQUxFX0gKLS0jICAgaW5jbHVkZSA8eGxvY2FsZS5oPgotLSMgZWxzZQotLSMgICBpbmNsdWRlIDxsb2NhbGUuaD4KLS0jIGVuZGlmCi0rIyBpbmNsdWRlIDxsb2NhbGUuaD4KLSAjZW5kaWYKLSAKLSAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLS0tIAotMi4xNC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAyLUFkZC1BUkMtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAyLUFkZC1BUkMtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGUzZDgzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LzAwMDItQWRkLUFSQy1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZmNmZDU3MTA1YjRiZGIzMGQ5MDZkZjE1MmVmMDE3NDhmYTk1ZGFmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CitEYXRlOiBUaHUsIDEzIFNlcCAyMDE4IDE3OjEzOjIwICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGljdTogQWRkIEFSQyBzdXBwb3J0CisKK1NpZ25lZC1vZmYtYnk6IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9wdWxsLzE0OSBdCistLS0KKyBpMThuL2RvdWJsZS1jb252ZXJzaW9uLXV0aWxzLmggICAgICAgICAgICAgICAgIHwgMiArLQorIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaTE4bi9kb3VibGUtY29udmVyc2lvbi11dGlscy5oIGIvaTE4bi9kb3VibGUtY29udmVyc2lvbi11dGlscy5oCitpbmRleCA1N2ZjNDliMjMxYTMuLjBiZDNlODM0MDY3MyAxMDA2NDQKKy0tLSBhL2kxOG4vZG91YmxlLWNvbnZlcnNpb24tdXRpbHMuaAorKysrIGIvaTE4bi9kb3VibGUtY29udmVyc2lvbi11dGlscy5oCitAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgdm9pZCBhYm9ydF9ub3JldHVybigpIHsgYWJvcnQoKTsgfQorICAgICBkZWZpbmVkKF9fU0g0X18pIHx8IGRlZmluZWQoX19hbHBoYV9fKSB8fCBcCisgICAgIGRlZmluZWQoX01JUFNfQVJDSF9NSVBTMzJSMikgfHwgXAorICAgICBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX3Jpc2N2KQorKyAgICBkZWZpbmVkKF9fcmlzY3YpIHx8IGRlZmluZWQoX19hcmNfXykKKyAjZGVmaW5lIERPVUJMRV9DT05WRVJTSU9OX0NPUlJFQ1RfRE9VQkxFX09QRVJBVElPTlMgMQorICNlbGlmIGRlZmluZWQoX19tYzY4MDAwX18pCisgI3VuZGVmIERPVUJMRV9DT05WRVJTSU9OX0NPUlJFQ1RfRE9VQkxFX09QRVJBVElPTlMKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82MC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODVhOTJiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82MC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSBpY3UuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTY3NWYyZDA2OTQzNGQ4YTFlNGU2YjBkY2Y0Mzc5MjI2IgotCi1kZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1CQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKLVNSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaTE4bi1Ecm9wLWluY2x1ZGUteGxvY2FsZS5oLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0Mzg2MWIxMjc3NDRiM2MwYjlkN2YzODZmNGI5ZmE0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDczZWE4ZjM1YjkyNmQ3MGJiMzNlNjU3NzUwOGFhNjQyYThiMzE2YTgwM2YxMWJlMjBhZjM4NDgxMWRiNDE4IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTM3NTBiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzYyLjEuYmIKQEAgLTAsMCArMSwyOSBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTYzNzUyYzU3YmQwYjM2NWM5YWY5ZjQyN2VmNzljODE5IgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODYvCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitCQVNFX1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmljdS1wcm9qZWN0Lm9yZy9maWxlcy9pY3U0Yy8ke1BWfS9pY3U0Yy0ke0lDVV9QVn0tc3JjLnRneiIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9IFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtaW5zdGFsbC1tYW54LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLUFSQy1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OTBhZDlkOTIwMTU4ZTAzMTRlMTBiYTc0YWU5YTE1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGQ5ODY4ZDY2NjM1MGRkYTY2YTZlMzA1ZWVjZGU5ZDQ3OWZiNzBiMzBkNWI1NWQ3OGExZGVmZmI5N2Q1YWEzIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJlNTZjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2lzby1jb2Rlcy9pc28tY29kZXNfMy43Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9zYWxzYS5kZWJpYW4ub3JnL2lzby1jb2Rlcy10ZWFtL2lzby1jb2Rlcy5naXQ7cHJvdG9jb2w9aHR0cCIKLVNSQ1JFViA9ICIwYTkzMmQzZTFlNmQ5MDU4YTZlZjg3NGM4ZmYxZGM0YTE5M2JjMDMwIgotCi0jIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCi0jIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAotREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc180LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2MWRlZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc180LjEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJJU08gbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY3VycmVuY3ksIHNjcmlwdCBjb2RlcyBhbmQgdGhlaXIgdHJhbnNsYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zYWxzYS5kZWJpYW4ub3JnL2lzby1jb2Rlcy10ZWFtL2lzby1jb2RlcyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYWxzYS5kZWJpYW4ub3JnL2lzby1jb2Rlcy10ZWFtL2lzby1jb2Rlcy9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9zYWxzYS5kZWJpYW4ub3JnL2lzby1jb2Rlcy10ZWFtL2lzby1jb2Rlcy5naXQ7cHJvdG9jb2w9aHR0cCIKK1NSQ1JFViA9ICIxNjQ4MDJkNWZkOGM3YTgxNjc4MTZmZDg2YTYyYjI4NjY4MDYxOWYwIgorCisjIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCisjIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAorREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdiNDE2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgotU0VDVElPTiA9ICJvcHRpb25hbCIKLVBST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAotCQkgICAiCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotU1JDQlJBTkNIID89ICJyZWxlYXNlLTdfNiIKLQotU1JDUkVWID0gIjVhZTRiNGFlZWEyYmFmMTM3NTJkMDdlMzAzOGM0N2Y3MGYwNmRjYWMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wczticmFuY2g9JHtTUkNCUkFOQ0h9IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmQyNmEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJBIGxpYnJhcnkgZm9yIGF0b21pYyBpbnRlZ2VyIG9wZXJhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXZtYWkvbGliYXRvbWljX29wcy8iCitTRUNUSU9OID0gIm9wdGlvbmFsIgorUFJPVklERVMgKz0gImxpYmF0b21pY3Mtb3BzIgorTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9MSUNFTlNJTkcudHh0O21kNT1lMDBkZDVjOGFjMDNhMTRjNWFlNTIyNWE0NTI1ZmEyZCBcCisgICAgICAgICAgICAgICAgICAgICIKK1BWIC49ICIrZ2l0JHtTUkNQVn0iCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UtN182IgorCitTUkNSRVYgPSAiNzZmZmIzYjg3OTQ2ZTRjMzcyZDExMmQ4ZDAwNzg2NjMyZGVhYjkzNCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzO2JyYW5jaD0ke1NSQ0JSQU5DSH0iCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtUmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ2MTdiNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzc2ICswLDAgQEAKLUZyb20gODhhZGJlMWE4NTViN2FhOTViZDkyNWM4MGVkODNjODZmM2ZjNDJlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDYgTm92IDIwMTYgMDk6Mzk6MzEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIFJlcGxhY2UgX19CRUdJTl9ERUNMUyBhbmQgX19FTkRfREVDTFMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBpbmNsdWRlL2JzZC9lcnIuaCAgICAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL2xpYnV0aWwuaCAgICAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2QvbWQ1LmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9ubGlzdC5oICAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2Qvc3RkaW8uaCAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC9zdGRsaWIuaCAgICAgICAgIHwgMTIgKysrKysrKysrLS0tCi0gaW5jbHVkZS9ic2Qvc3RyaW5nLmggICAgICAgICB8IDEyICsrKysrKysrKy0tLQotIGluY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaCAgICAgfCAxMCArKysrKysrKy0tCi0gaW5jbHVkZS9ic2QvdW5pc3RkLmggICAgICAgICB8IDEwICsrKysrKysrLS0KLSBpbmNsdWRlL2JzZC92aXMuaCAgICAgICAgICAgIHwgMTAgKysrKysrKystLQotIGluY2x1ZGUvYnNkL3djaGFyLmggICAgICAgICAgfCAxMCArKysrKysrKy0tCi0gc3JjL2hhc2gvc2hhNTEyLmggICAgICAgICAgICB8IDEwICsrKysrKysrLS0KLSAxMyBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9lcnIuaCBiL2luY2x1ZGUvYnNkL2Vyci5oCi1pbmRleCAxMmZkMDUxLi40M2RmYzMyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2QvZXJyLmgKLSsrKyBiL2luY2x1ZGUvYnNkL2Vyci5oCi1AQCAtNDIsNyArNDIsMTAgQEAKLSAKLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSB2b2lkIHdhcm5jKGludCBjb2RlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSAJX19wcmludGZsaWtlKDIsIDMpOwotIHZvaWQgdndhcm5jKGludCBjb2RlLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXApCi1AQCAtNTEsNiArNTQsOSBAQCB2b2lkIGVycmMoaW50IHN0YXR1cywgaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotIAlfX3ByaW50Zmxpa2UoMywgNCk7Ci0gdm9pZCB2ZXJyYyhpbnQgc3RhdHVzLCBpbnQgY29kZSwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFwKQotIAlfX3ByaW50Zmxpa2UoMywgMCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9saWJ1dGlsLmggYi9pbmNsdWRlL2JzZC9saWJ1dGlsLmgKLWluZGV4IDQ1YjNiMTUuLjljOTM2ZTUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9saWJ1dGlsLmgKLSsrKyBiL2luY2x1ZGUvYnNkL2xpYnV0aWwuaAotQEAgLTUzLDcgKzUzLDEwIEBAIHN0cnVjdCBwaWRmaCB7Ci0gCWlub190CXBmX2lubzsKLSB9OwotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gaW50IGh1bWFuaXplX251bWJlcihjaGFyICpidWYsIHNpemVfdCBsZW4sIGludDY0X3QgYnl0ZXMsCi0gICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCwgaW50IHNjYWxlLCBpbnQgZmxhZ3MpOwotIGludCBleHBhbmRfbnVtYmVyKGNvbnN0IGNoYXIgKl9idWYsIHVpbnQ2NF90ICpfbnVtKTsKLUBAIC02Niw3ICs2OSwxMCBAQCBpbnQgcGlkZmlsZV9jbG9zZShzdHJ1Y3QgcGlkZmggKnBmaCk7Ci0gaW50IHBpZGZpbGVfcmVtb3ZlKHN0cnVjdCBwaWRmaCAqcGZoKTsKLSAKLSBjaGFyICAgKmZwYXJzZWxuKEZJTEUgKiwgc2l6ZV90ICosIHNpemVfdCAqLCBjb25zdCBjaGFyWzNdLCBpbnQpOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gLyogaHVtYW5pemVfbnVtYmVyKDMpICovCi0gI2RlZmluZSBITl9ERUNJTUFMICAgICAgICAgICAgICAweDAxCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvbWQ1LmggYi9pbmNsdWRlL2JzZC9tZDUuaAotaW5kZXggNWYzYWU0Ni4uNWQ4MGU1YyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL21kNS5oCi0rKysgYi9pbmNsdWRlL2JzZC9tZDUuaAotQEAgLTMwLDcgKzMwLDEwIEBAIHR5cGVkZWYgc3RydWN0IE1ENUNvbnRleHQgewotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSB2b2lkCSBNRDVJbml0KE1ENV9DVFggKik7Ci0gdm9pZAkgTUQ1VXBkYXRlKE1ENV9DVFggKiwgY29uc3QgdWludDhfdCAqLCBzaXplX3QpCi0gCQlfX2F0dHJpYnV0ZV9fKChfX2JvdW5kZWRfXyhfX3N0cmluZ19fLDIsMykpKTsKLUBAIC00OSw2ICs1Miw5IEBAIGNoYXIJKk1ENUZpbGVDaHVuayhjb25zdCBjaGFyICosIGNoYXIgKiwgb2ZmX3QsIG9mZl90KQotIGNoYXIJKk1ENURhdGEoY29uc3QgdWludDhfdCAqLCBzaXplX3QsIGNoYXIgKikKLSAJCV9fYXR0cmlidXRlX18oKF9fYm91bmRlZF9fKF9fc3RyaW5nX18sMSwyKSkpCi0gCQlfX2F0dHJpYnV0ZV9fKChfX2JvdW5kZWRfXyhfX21pbmJ5dGVzX18sMyxNRDVfRElHRVNUX1NUUklOR19MRU5HVEgpKSk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYgLyogTElCQlNEX01ENV9IICovCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2Qvbmxpc3QuaCBiL2luY2x1ZGUvYnNkL25saXN0LmgKLWluZGV4IGNiMjk3ZTguLmU2M2JiYmQgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9ubGlzdC5oCi0rKysgYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1AQCAtODgsOCArODgsMTQgQEAgc3RydWN0IG5saXN0IHsKLSAKLSAjZGVmaW5lIE5fRk9STUFUCSIlMDh4IgkvKiBuYW1lbGlzdCB2YWx1ZSBmb3JtYXQ7IFhYWCAqLwotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gZXh0ZXJuIGludCBubGlzdChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IG5saXN0ICpsaXN0KTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3JlYWRwYXNzcGhyYXNlLmggYi9pbmNsdWRlL2JzZC9yZWFkcGFzc3BocmFzZS5oCi1pbmRleCAxNDc0NGI4Li5mYTczMzYxIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaAotKysrIGIvaW5jbHVkZS9ic2QvcmVhZHBhc3NwaHJhc2UuaAotQEAgLTM0LDggKzM0LDE0IEBACi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGNoYXIgKiByZWFkcGFzc3BocmFzZShjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90LCBpbnQpOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmIC8qICFMSUJCU0RfUkVBRFBBU1NQSFJBU0VfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0ZGlvLmggYi9pbmNsdWRlL2JzZC9zdGRpby5oCi1pbmRleCA0YjY5OTgzLi4xODY0NWI3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvc3RkaW8uaAotKysrIGIvaW5jbHVkZS9ic2Qvc3RkaW8uaAotQEAgLTQ1LDcgKzQ1LDEwIEBACi0gI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gY29uc3QgY2hhciAqZm10Y2hlY2soY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotIAotIC8qIFhYWDogVGhlIGZ1bmN0aW9uIHJlcXVpcmVzIGNvb3BlcmF0aW9uIGZyb20gdGhlIHN5c3RlbSBsaWJjIHRvIHN0b3JlIHRoZQotQEAgLTczLDcgKzc2LDEwIEBAIEZJTEUgKmZ1bm9wZW4oY29uc3Qgdm9pZCAqY29va2llLAotICNkZWZpbmUgZndvcGVuKGNvb2tpZSwgZm4pIGZ1bm9wZW4oY29va2llLCBOVUxMLCBmbiwgTlVMTCwgTlVMTCkKLSAKLSBpbnQgZnB1cmdlKEZJTEUgKmZwKTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZgotICNlbmRpZgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0ZGxpYi5oIGIvaW5jbHVkZS9ic2Qvc3RkbGliLmgKLWluZGV4IGViYzk2MzguLmM0YjU0YjYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9zdGRsaWIuaAotKysrIGIvaW5jbHVkZS9ic2Qvc3RkbGliLmgKLUBAIC00Niw3ICs0NiwxMCBAQAotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIHVpbnQzMl90IGFyYzRyYW5kb20odm9pZCk7Ci0gdm9pZCBhcmM0cmFuZG9tX3N0aXIodm9pZCk7Ci0gdm9pZCBhcmM0cmFuZG9tX2FkZHJhbmRvbSh1bnNpZ25lZCBjaGFyICpkYXQsIGludCBkYXRsZW4pOwotQEAgLTY3LDcgKzcwLDcgQEAgaW50IHNyYWRpeHNvcnQoY29uc3QgdW5zaWduZWQgY2hhciAqKmJhc2UsIGludCBubWVtYiwKLSAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICp0YWJsZSwgdW5zaWduZWQgZW5kYnl0ZSk7Ci0gCi0gdm9pZCAqcmVhbGxvY2Yodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7Ci0tI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhX19HTElCQ19QUkVSRVEoMiwgMjYpCi0rI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKQotIHZvaWQgKnJlYWxsb2NhcnJheSh2b2lkICpwdHIsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpOwotICNlbmRpZgotIAotQEAgLTc1LDYgKzc4LDkgQEAgbG9uZyBsb25nIHN0cnRvbnVtKGNvbnN0IGNoYXIgKm5wdHIsIGxvbmcgbG9uZyBtaW52YWwsIGxvbmcgbG9uZyBtYXh2YWwsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplcnJzdHIpOwotIAotIGNoYXIgKmdldGJzaXplKGludCAqaGVhZGVybGVucCwgbG9uZyAqYmxvY2tzaXplcCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9zdHJpbmcuaCBiL2luY2x1ZGUvYnNkL3N0cmluZy5oCi1pbmRleCA2Nzk4YmY2Li5mYTExOTNmIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvc3RyaW5nLmgKLSsrKyBiL2luY2x1ZGUvYnNkL3N0cmluZy5oCi1AQCAtMzYsMTUgKzM2LDIxIEBACi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIHNpemVfdCBzdHJsY3B5KGNoYXIgKmRzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6KTsKLSBzaXplX3Qgc3RybGNhdChjaGFyICpkc3QsIGNvbnN0IGNoYXIgKnNyYywgc2l6ZV90IHNpeik7Ci0gY2hhciAqc3RybnN0cihjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmZpbmQsIHNpemVfdCBzdHJfbGVuKTsKLSB2b2lkIHN0cm1vZGUobW9kZV90IG1vZGUsIGNoYXIgKnN0cik7Ci0gCi0tI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhX19HTElCQ19QUkVSRVEoMiwgMjUpCi0rI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQoX19HTElCQ19fKQotIHZvaWQgZXhwbGljaXRfYnplcm8odm9pZCAqYnVmLCBzaXplX3QgbGVuKTsKLSAjZW5kaWYKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZgotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaCBiL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaAotaW5kZXggZmYzMGNhYy4uNDYwMGY2YiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3N0cmluZ2xpc3QuaAotKysrIGIvaW5jbHVkZS9ic2Qvc3RyaW5nbGlzdC5oCi1AQCAtNDMsMTIgKzQzLDE4IEBAIHR5cGVkZWYgc3RydWN0IF9zdHJpbmdsaXN0IHsKLSAJc2l6ZV90CSAgc2xfY3VyOwotIH0gU3RyaW5nTGlzdDsKLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIFN0cmluZ0xpc3QJKnNsX2luaXQodm9pZCk7Ci0gaW50CQkgc2xfYWRkKFN0cmluZ0xpc3QgKiwgY2hhciAqKTsKLSB2b2lkCQkgc2xfZnJlZShTdHJpbmdMaXN0ICosIGludCk7Ci0gY2hhcgkJKnNsX2ZpbmQoU3RyaW5nTGlzdCAqLCBjb25zdCBjaGFyICopOwotIGludAkJIHNsX2RlbGV0ZShTdHJpbmdMaXN0ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZiAvKiBMSUJCU0RfU1RSSU5HTElTVF9IICovCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvdW5pc3RkLmggYi9pbmNsdWRlL2JzZC91bmlzdGQuaAotaW5kZXggMWY5YzVmOC4uNWIyZjRjNyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3VuaXN0ZC5oCi0rKysgYi9pbmNsdWRlL2JzZC91bmlzdGQuaAotQEAgLTQ1LDcgKzQ1LDEwIEBACi0gI2RlZmluZSBTX0lTVFhUIFNfSVNWVFgKLSAjZW5kaWYKLSAKLS1fX0JFR0lOX0RFQ0xTCi0rLyogX19CRUdJTl9ERUNMUyAqLwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotIGV4dGVybiBpbnQgb3B0cmVzZXQ7Ci0gCi0gI2lmZGVmIExJQkJTRF9PVkVSTEFZCi1AQCAtNjgsNiArNzEsOSBAQCB2b2lkIHNldHByb2N0aXRsZShjb25zdCBjaGFyICpmbXQsIC4uLikKLSAJX19wcmludGZsaWtlKDEsIDIpOwotIAotIGludCBnZXRwZWVyZWlkKGludCBzLCB1aWRfdCAqZXVpZCwgZ2lkX3QgKmVnaWQpOwotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKy8qIF9fRU5EX0RFQ0xTICovCi0gCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9ic2QvdmlzLmggYi9pbmNsdWRlL2JzZC92aXMuaAotaW5kZXggOTcwZGZkZC4uNjIxZDNjNiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnNkL3Zpcy5oCi0rKysgYi9pbmNsdWRlL2JzZC92aXMuaAotQEAgLTc0LDcgKzc0LDEwIEBACi0gCi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsvKiBfX0JFR0lOX0RFQ0xTICovCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gY2hhcgkqdmlzKGNoYXIgKiwgaW50LCBpbnQsIGludCk7Ci0gaW50CXN0cnZpcyhjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSBpbnQJc3RydmlzeChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90LCBpbnQpOwotQEAgLTgzLDYgKzg2LDkgQEAgaW50CXN0cnVudmlzKGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSBpbnQJc3RydW52aXN4KGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotIHNzaXplX3Qgc3RybnVudmlzKGNoYXIgKiwgY29uc3QgY2hhciAqLCBzaXplX3QpOwotIGludAl1bnZpcyhjaGFyICosIGludCwgaW50ICosIGludCk7Ci0tX19FTkRfREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rLyogX19FTkRfREVDTFMgKi8KLSAKLSAjZW5kaWYgLyogIUxJQkJTRF9WSVNfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL3djaGFyLmggYi9pbmNsdWRlL2JzZC93Y2hhci5oCi1pbmRleCAzM2E1MDBlLi5hYTcwNzQyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvd2NoYXIuaAotKysrIGIvaW5jbHVkZS9ic2Qvd2NoYXIuaAotQEAgLTQzLDEyICs0MywxOCBAQAotICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSB3Y2hhcl90ICpmZ2V0d2xuKEZJTEUgKnN0cmVhbSwgc2l6ZV90ICpsZW4pOwotIAotIHNpemVfdCB3Y3NsY2F0KHdjaGFyX3QgKmRzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBzaXplX3Qgc2l6ZSk7Ci0gc2l6ZV90IHdjc2xjcHkod2NoYXJfdCAqZHN0LCBjb25zdCB3Y2hhcl90ICpzcmMsIHNpemVfdCBzaXplKTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZgotICNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy9oYXNoL3NoYTUxMi5oIGIvc3JjL2hhc2gvc2hhNTEyLmgKLWluZGV4IDRmMzY4YTEuLjI3ZGRjMjQgMTAwNjQ0Ci0tLS0gYS9zcmMvaGFzaC9zaGE1MTIuaAotKysrIGIvc3JjL2hhc2gvc2hhNTEyLmgKLUBAIC0zOSw3ICszOSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBTSEE1MTJDb250ZXh0IHsKLSAJdW5zaWduZWQgY2hhciBidWZbMTI4XTsKLSB9IFNIQTUxMl9DVFg7Ci0gCi0tX19CRUdJTl9ERUNMUwotKy8qIF9fQkVHSU5fREVDTFMgKi8KLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSB2b2lkCVNIQTUxMl9Jbml0KFNIQTUxMl9DVFggKik7Ci0gdm9pZAlTSEE1MTJfVXBkYXRlKFNIQTUxMl9DVFggKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOwotQEAgLTQ4LDYgKzUxLDkgQEAgY2hhciAgICpTSEE1MTJfRW5kKFNIQTUxMl9DVFggKiwgY2hhciAqKTsKLSBjaGFyICAgKlNIQTUxMl9GaWxlKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLSBjaGFyICAgKlNIQTUxMl9GaWxlQ2h1bmsoY29uc3QgY2hhciAqLCBjaGFyICosIG9mZl90LCBvZmZfdCk7Ci0gY2hhciAgICpTSEE1MTJfRGF0YShjb25zdCB2b2lkICosIHVuc2lnbmVkIGludCwgY2hhciAqKTsKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSsvKiBfX0VORF9ERUNMUyAqLwotIAotICNlbmRpZiAvKiAhX1NIQTUxMl9IXyAqLwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1mbG9wZW4tQWRkLW1pc3NpbmctZmNudGwuaC1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWJiODc2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDEzYzMyOTE2YjRiYWFiNThkOTM5NDBkNTdmZWE5ZmYwNzc3ZjE5MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaEB0a29zLmNvLmlsPgorRGF0ZTogVHVlLCA1IEp1biAyMDE4IDE5OjIxOjQ2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZsb3BlbjogQWRkIG1pc3NpbmcgPGZjbnRsLmg+IGluY2x1ZGUKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQ29tbWl0IDk5MzgyOGQ4NGVlIChBZGQgZmxvcGVuYXQoKSBmdW5jdGlvbiBmcm9tIEZyZWVCU0QpIGRyb3BwZWQgdGhlCitmY250bC5oIGhlYWRlci4gVGhpcyBicmVha3MgdGhlIGJ1aWxkIHdpdGggbXVzbCBsaWJjOgorCitmbG9wZW4uYzogSW4gZnVuY3Rpb24g4oCYdmZsb3BlbmF04oCZOgorZmxvcGVuLmM6NjA6MTQ6IGVycm9yOiDigJhPX0NSRUFU4oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7CisgICAgICAgICAgICAgIF5+fn5+fn4KKworUmVzdG9yZSB0aGUgZmNudGwuaCBoZWFkZXIgaW5jbHVkZSB0byBmaXggdGhlIGJ1aWxkLgorCitGaXhlczogY29tbWl0IDk5MzgyOGQ4NGVlZDA0NjhjNmMxNWIyODE4ZTUzNGU2YjEzNGI4ZTQKK1N1Ym1pdHRlZC1hbHNvLWJ5OiBwYXJhenlkIDxwYXJhenlkQGR5bmUub3JnPgorU2lnbmVkLW9mZi1ieTogQmFydWNoIFNpYWNoIDxiYXJ1Y2hAdGtvcy5jby5pbD4KK1NpZ25lZC1vZmYtYnk6IEd1aWxsZW0gSm92ZXIgPGd1aWxsZW1AaGFkcm9ucy5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbGliYnNkL2xpYmJzZC9jb21taXQvMTNjMzI5MTZiNGJhYWI1OGQ5Mzk0MGQ1N2ZlYTlmZjA3NzdmMTkzMV0KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2Zsb3Blbi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZmxvcGVuLmMgYi9zcmMvZmxvcGVuLmMKK2luZGV4IGI5OTcyYzkuLmZmMjBkMDcgMTAwNjQ0CistLS0gYS9zcmMvZmxvcGVuLmMKKysrKyBiL3NyYy9mbG9wZW4uYworQEAgLTMyLDYgKzMyLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RkYXJnLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDEtc3JjLWxpYmJzZC1vdmVybGF5LnBjLmluLVNldC1DZmxhZ3MtdG8tdXNlLUktaW5zdGVhZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UzYTViMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiNjk3MmYxYzI5ZWJmMDczY2JlMTlhNGE2NjllZTA5MzI1OTc5MmEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KLURhdGU6IE1vbiwgMzAgSmFuIDIwMTcgMTI6MDA6MzMgLTAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3JjL2xpYmJzZC1vdmVybGF5LnBjLmluOiBTZXQgQ2ZsYWdzIHRvIHVzZSAtSSBpbnN0ZWFkIG9mCi0gLWlzeXN0ZW0KLU9yZ2FuaXphdGlvbjogTy5TLiBTeXN0ZW1zIFNvZnR3YXJlIExUREEuCi0KLXBrZy1jb25maWcgY3VycmVudGx5IG9ubHkgaGFuZGxlcyAtSSBhbmQgLUwgY29ycmVjdGx5LCBidXQgbWlzc2VzCi0taXN5c3RlbSwgc28gd2UgbmVlZCB0byBkbyB0aGlzIHdvcmthcm91bmQgdG8gZml4IHRoaXMgaXNzdWUuCi0KLVRoZXJlJ3MgYSBvcGVuIGJ1ZyBpbjoKLWh0dHBzOi8vYnVnemlsbGEuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05OTUxNgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRmFiaW8gQmVydG9uIDxmYWJpby5iZXJ0b25Ab3NzeXN0ZW1zLmNvbS5icj4KLS0tLQotIHNyYy9saWJic2Qtb3ZlcmxheS5wYy5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9saWJic2Qtb3ZlcmxheS5wYy5pbiBiL3NyYy9saWJic2Qtb3ZlcmxheS5wYy5pbgotaW5kZXggYWM4YmY4OS4uNjVkYzNhZSAxMDA2NDQKLS0tLSBhL3NyYy9saWJic2Qtb3ZlcmxheS5wYy5pbgotKysrIGIvc3JjL2xpYmJzZC1vdmVybGF5LnBjLmluCi1AQCAtOCw0ICs4LDQgQEAgRGVzY3JpcHRpb246IFV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMgKG92ZXJsYXkpCi0gVmVyc2lvbjogQFZFUlNJT05ACi0gVVJMOiBodHRwczovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvCi0gTGliczogLUwke2xpYmRpcn0gLWxic2QKLS1DZmxhZ3M6IC1pc3lzdGVtICR7aW5jbHVkZWRpcn0vYnNkIC1ETElCQlNEX09WRVJMQVkKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9ic2QgLURMSUJCU0RfT1ZFUkxBWQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBkYTE1ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMjhmYzY2ZThiODQ4NzA5YTJlNjlkYmE3ZjA3Njk0MjQ4ZTAxNTRlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDYgTm92IDIwMTYgMDk6NDA6NDMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzNdIFJlbW92ZSBmdW5vcGVuKCkKLQotTXVzbCBkb2VzbnQgaGF2ZSBwcmVyZXF1aXNpdGVzIGZvciBpdC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQotCi0gbWFuL01ha2VmaWxlLmFtICB8IDEgLQotIHNyYy9NYWtlZmlsZS5hbSAgfCAxIC0KLSB0ZXN0L01ha2VmaWxlLmFtIHwgMSAtCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlLmFtIGIvbWFuL01ha2VmaWxlLmFtCi1pbmRleCAyODE5MmMwLi5hMjI3ODdkIDEwMDY0NAotLS0tIGEvbWFuL01ha2VmaWxlLmFtCi0rKysgYi9tYW4vTWFrZWZpbGUuYW0KLUBAIC0xNjgsNyArMTY4LDYgQEAgZGlzdF9tYW5fTUFOUyA9IFwKLSAJZm10Y2hlY2suM2JzZCBcCi0gCWZwYXJzZWxuLjNic2QgXAotIAlmcHVyZ2UuM2JzZCBcCi0tCWZ1bm9wZW4uM2JzZCBcCi0gCWdldGJzaXplLjNic2QgXAotIAlnZXRtb2RlLjNic2QgXAotIAlnZXRwZWVyZWlkLjNic2QgXAotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggYWQ4M2RiZi4uMTMyMjVhMyAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNzYsNyArNzYsNiBAQCBsaWJic2RfbGFfU09VUkNFUyA9IFwKLSAJZm10Y2hlY2suYyBcCi0gCWZwYXJzZWxuLmMgXAotIAlmcHVyZ2UuYyBcCi0tCWZ1bm9wZW4uYyBcCi0gCWdldGJzaXplLmMgXAotIAlnZXRwZWVyZWlkLmMgXAotIAloYXNoL21kNS5jIFwKLWRpZmYgLS1naXQgYS90ZXN0L01ha2VmaWxlLmFtIGIvdGVzdC9NYWtlZmlsZS5hbQotaW5kZXggZDg2NTM5YS4uYjMyZWQyZSAxMDA2NDQKLS0tLSBhL3Rlc3QvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3QvTWFrZWZpbGUuYW0KLUBAIC0zNiw3ICszNiw2IEBAIGNoZWNrX1BST0dSQU1TID0gXAotIAllbmRpYW4gXAotIAlodW1hbml6ZSBcCi0gCWZnZXRsbiBcCi0tCWZ1bm9wZW4gXAotIAlmcGFyc2VsbiBcCi0gCWZwdXJnZSBcCi0gCW1kNSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC44LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MmE4NWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDhmYzRlNjZiZTQ1MjY3MTVkYWIwOWM1ZmJhNWU5ZTgiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkOWU2OTgwZmJmZTQ0Zjk0ZmQ5MmI4OWEzM2NjZTY3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTQ4ZjEwZTVhZjVhMDhiMWUyMjg4OWNlODQzMTViMWViZTQxNTA1YjAxNWM5NTk2YmFkMDNmZDEzYTEyYjMxIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNzVjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC45LjEuYmIKQEAgLTAsMCArMSw0NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAorICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKKyAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAorICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgorIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6CisjIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQgLXUKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1hdXRob3IKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLUpvaG4tQmlycmVsbAorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UtUmVnZW50cworIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtQ2hyaXN0b3BoZXItRy1EZW1ldHJpb3UKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLU5pZWxzLVByb3ZvcworIyBMaWNlbnNlOiBCU0QtNS1jbGF1c2UtUGV0ZXItV2VtbQorIyBMaWNlbnNlOiBCZWVyd2FyZQorIyBMaWNlbnNlOiBFeHBhdAorIyBMaWNlbnNlOiBJU0MKKyMgTGljZW5zZTogSVNDLU9yaWdpbmFsCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4KKyMgTGljZW5zZTogcHVibGljLWRvbWFpbi1Db2xpbi1QbHVtYgorTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UgJiBJU0MgJiBQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI1NTI2MDJmZGE2OWUzNGM3NTNkMjZkZTM4M2YzM2M1IgorU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtZmxvcGVuLUFkZC1taXNzaW5nLWZjbnRsLmgtaW5jbHVkZS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzRiODBjNDE0M2FmYTAzMmM5MDIyNmE0NTE4ZmZmZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NmQ4MzU3NDIzMjdkNjlmYWNjZDE2OTU1YTYwYjZkY2YzMDY4NGE4ZGE1MThjNGVjYTBhYzcxM2I5ZTBhN2E0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nL3B5dGhvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy9weXRob24ucGF0Y2gKaW5kZXggNTk1OTFlYi4uZDYwYTBhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nL3B5dGhvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvcHl0aG9uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBiMDFiYjI2OTRmNjZjZDk4MWU2ZDYxNTIzNDMzZGMzZWI1ZWQzMmYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiNGEzNTRhZThkNGY3YzJlYzNlYzQyMWM3ZDhhNzkwY2M1N2U3N2E5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTGkgeGluIDxsaXhpbi5mbnN0QGNuLmZ1aml0c3UuY29tPgogRGF0ZTogU2F0LCAxOCBKdWwgMjAxNSAyMzowMzozMCArMDkwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWMgLSBBdm9pZCBhbiBpbmNvcnJlY3QgY2hlY2sgZm9yIHB5dGhvbi4KQEAgLTgsMzAgKzgsMzIgQEAKIAogU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogTGkgWGluIDxsaXhpbi5mbnN0QGNuLmZ1aml0c3UuY29tPgorU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgogLS0tCi0gYmluZGluZ3MvcHl0aG9uL01ha2VmaWxlLmFtIHwgIDMgKystCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMTUgKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorIGJpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbSB8ICA0ICsrKy0KKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAxNyArKy0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbSBiL2JpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbQotaW5kZXggODJiOWJiOC4uZjlmZTdhOCAxMDA2NDQKK2luZGV4IDk5OWIxODQuLmM4ZTQ5ZGIgMTAwNjQ0CiAtLS0gYS9iaW5kaW5ncy9weXRob24vTWFrZWZpbGUuYW0KICsrKyBiL2JpbmRpbmdzL3B5dGhvbi9NYWtlZmlsZS5hbQotQEAgLTIzLDcgKzIzLDggQEAgU1VCRElSUyA9IHRlc3QKK0BAIC0yMyw3ICsyMyw5IEBACisgU1VCRElSUyA9IHRlc3QKICBDT05GSUdfQ0xFQU5fRklMRVMgPSAqLmxvVCAqLnJlaiAqLm9yaWcKICBBTV9DRkxBR1MgPSAtZlBJQyAtRFBJQwotIFBZTElCVkVSID89IHB5dGhvbiQoUFlUSE9OX1ZFUlNJT04pCiAtQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9idWlsZGRpcikgLUlAUFlJTkNMVURFRElSQAorK1BZTElCVkVSID89IHB5dGhvbiQoUFlUSE9OX1ZFUlNJT04pCiArUFlJTkMgPz0gL3Vzci9pbmNsdWRlLyQoUFlMSUJWRVIpCiArQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9idWlsZGRpcikgLUkkKFBZSU5DKQotIExJQlMgPSAkKHRvcF9idWlsZGRpcikvc3JjL2xpYmNhcC1uZy5sYQogIFNXSUdfRkxBR1MgPSAtcHl0aG9uCiAgU1dJR19JTkNMVURFUyA9ICR7QU1fQ1BQRkxBR1N9CisgcHlleGVjX1BZVEhPTiA9IGNhcG5nLnB5CiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxZDc3N2Q1Li45ZDkwZjY0IDEwMDY0NAoraW5kZXggN2Y2NjE3OS4uMDc5ZDAyNiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTIzLDE5ICsxMjMsOCBAQCBpZiB0ZXN0IHgkdXNlX3B5dGhvbiA9IHhubyA7IHRoZW4KK0BAIC0xMjMsMjEgKzEyMyw4IEBAIGlmIHRlc3QgeCR1c2VfcHl0aG9uID0geG5vIDsgdGhlbgogIGVsc2UKICBBQ19NU0dfUkVTVUxUKHRlc3RpbmcpCiAgQU1fUEFUSF9QWVRIT04KQEAgLTM5LDExICs0MSwxMyBAQAogLWlmIHRlc3QgLWYgJHtQWUlOQ0xVREVESVJ9L1B5dGhvbi5oIDsgdGhlbgogLQlweXRob25fZm91bmQ9InllcyIKIC0JQUNfU1VCU1QoUFlJTkNMVURFRElSKQorLQlweWJpbmRfZGlyPSJweXRob24iCistCUFDX1NVQlNUKHB5YmluZF9kaXIpCiAtCUFDX01TR19OT1RJQ0UoUHl0aG9uIGJpbmRpbmdzIHdpbGwgYmUgYnVpbHQpCiAtZWxzZQogLQlweXRob25fZm91bmQ9Im5vIgogLQlpZiB0ZXN0IHgkdXNlX3B5dGhvbiA9IHh5ZXMgOyB0aGVuCi0tCQlBQ19NU0dfRVJST1IoW1B5dGhvbiBleHBsaWNpdGx5IHJlcXVpcmVkIGFuZCBweXRob24gaGVhZGVycyBmb3VuZF0pCistCQlBQ19NU0dfRVJST1IoW1B5dGhvbiBleHBsaWNpdGx5IHJlcXVlc3RlZCBhbmQgcHl0aG9uIGhlYWRlcnMgd2VyZSBub3QgZm91bmRdKQogLQllbHNlCiAtCQlBQ19NU0dfV0FSTigiUHl0aG9uIGhlYWRlcnMgbm90IGZvdW5kIC0gcHl0aG9uIGJpbmRpbmdzIHdpbGwgbm90IGJlIG1hZGUiKQogLQlmaQpAQCAtNTQsNSArNTgsNSBAQAogIEFNX0NPTkRJVElPTkFMKEhBVkVfUFlUSE9OLCB0ZXN0ICR7cHl0aG9uX2ZvdW5kfSA9ICJ5ZXMiKQogIAogLS0gCi0xLjguNC4yCisyLjcuNAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ODMxOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBhbHRlcm5hdGUgcG9zaXggY2FwYWJpbGl0aWVzIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJUaGUgbGliY2FwLW5nIGxpYnJhcnkgaXMgaW50ZW5kZWQgdG8gbWFrZSBwcm9ncmFtbWluZyBcCi13aXRoIFBPU0lYIGNhcGFiaWxpdGllcyBtdWNoIGVhc2llciB0aGFuIHRoZSB0cmFkaXRpb25hbCBsaWJjYXAgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWNvZGUuY29tL3Byb2plY3RzL2xpYmNhcC1uZyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1lM2VkYTAxZDk4MTVmOGQyNGFhZTJkYmQ4OWI2OGIwNiIKLQotU1JDX1VSSSA9ICJodHRwOi8vcGVvcGxlLnJlZGhhdC5jb20vc2dydWJiL2xpYmNhcC1uZy9saWJjYXAtbmctJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi5wYXRjaCIKLQotaW5oZXJpdCBsaWJfcGFja2FnZSBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZQotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGRlY2U5NjY0NGJkNzk4MDIwZTE3MGZiZjc2NjM4MDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzIxYWY5OTc0NDVjZDQxMDdhNTVkMzg2Zjk1NWM1ZWE2ZjZlOTZlYWQ2OTNlOTE1MTI3N2MwYWI1Zjk3ZDA1ZiIKLQotREVQRU5EUyArPSAic3dpZy1uYXRpdmUgcHl0aG9uMyIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uIC0td2l0aC1weXRob24zIgotRVhUUkFfT0VNQUtFICs9ICJQWUxJQlZFUj0ncHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgUFlJTkM9JyR7U1RBR0lOR19JTkNESVJ9LyR7UFlMSUJWRVJ9JyIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmluZyBsaWJjYXAtbmcgdG8gYmFzZV9saWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJbWtkaXIgLXAgJHtEfS8ke2Jhc2VfbGliZGlyfS8KLQkJbXYgLWYgJHtEfSR7bGliZGlyfS9saWJjYXAtbmcuc28uKiAke0R9JHtiYXNlX2xpYmRpcn0vCi0JCXJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKCIke2Jhc2VfbGliZGlyfSIsICIke2xpYmRpcn0iKX0KLQkJbG4gLXNmICR7cmVscGF0aH0vbGliY2FwLW5nLnNvLjAuMC4wICR7RH0ke2xpYmRpcn0vbGliY2FwLW5nLnNvCi0JZmkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmY2MjU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy45LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIHBvc2l4IGNhcGFiaWxpdGllcyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVGhlIGxpYmNhcC1uZyBsaWJyYXJ5IGlzIGludGVuZGVkIHRvIG1ha2UgcHJvZ3JhbW1pbmcgXAord2l0aCBQT1NJWCBjYXBhYmlsaXRpZXMgbXVjaCBlYXNpZXIgdGhhbiB0aGUgdHJhZGl0aW9uYWwgbGliY2FwIGxpYnJhcnkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVjb2RlLmNvbS9wcm9qZWN0cy9saWJjYXAtbmciCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZTNlZGEwMWQ5ODE1ZjhkMjRhYWUyZGJkODliNjhiMDYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL3NncnViYi9saWJjYXAtbmcvbGliY2FwLW5nLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24ucGF0Y2giCisKK2luaGVyaXQgbGliX3BhY2thZ2UgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworU1JDX1VSSVttZDVzdW1dID0gIjIzOThkNjk1NTA4ZmFiOWNlMzM2NjhjNTNhODliMGU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhMTUzMmJjZjM3MzFhYWRlNDA5MzZmNmQ2YTU4NmVkNWE2NmNhNGM3NDU1ZTEzMzhkMWY2YzNlMDkyMjEzMjgiCisKK0RFUEVORFMgKz0gInN3aWctbmF0aXZlIHB5dGhvbjMiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXB5dGhvbiAtLXdpdGgtcHl0aG9uMyIKK0VYVFJBX09FTUFLRSArPSAiUFlMSUJWRVI9J3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFBZSU5DPScke1NUQUdJTkdfSU5DRElSfS8ke1BZTElCVkVSfSciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1weXRob24iCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBNb3ZpbmcgbGliY2FwLW5nIHRvIGJhc2VfbGliZGlyCisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCW1rZGlyIC1wICR7RH0vJHtiYXNlX2xpYmRpcn0vCisJCW12IC1mICR7RH0ke2xpYmRpcn0vbGliY2FwLW5nLnNvLiogJHtEfSR7YmFzZV9saWJkaXJ9LworCQlyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aCgiJHtiYXNlX2xpYmRpcn0iLCAiJHtsaWJkaXJ9Iil9CisJCWxuIC1zZiAke3JlbHBhdGh9L2xpYmNhcC1uZy5zby4wLjAuMCAke0R9JHtsaWJkaXJ9L2xpYmNhcC1uZy5zbworCWZpCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCmluZGV4IGQ2MTlhMmUuLjZkZjY3NDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCkBAIC0zMiw3ICszMiw3IEBACiAKIEVYVFJBX09FTUFLRSA9ICIgXAogICBJTkRFTlQ9ICBcCi0gIGxpYj0ke0Bvcy5wYXRoLmJhc2VuYW1lKCcke2xpYmRpcn0nKX0gXAorICBsaWI9JyR7YmFzZWxpYn0nIFwKICAgUkFJU0VfU0VURkNBUD1ubyBcCiAgIERZTkFNSUM9eWVzIFwKICAgQlVJTERfR1BFUkY9eWVzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2svbm90LWVjaG8tY29tcGlsZXItaW5mby10by1jaGVja19zdGRpbnQuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2svbm90LWVjaG8tY29tcGlsZXItaW5mby10by1jaGVja19zdGRpbnQuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzc1NzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVjay9ub3QtZWNoby1jb21waWxlci1pbmZvLXRvLWNoZWNrX3N0ZGludC5oLnBhdGNoCkBAIC0wLDAgKzEsMTkgQEAKK0RvIG5vdCBlY2hvIGNvbXBpbGVyIGluZm8gaW4gYSBjb21tZW50IGxpbmUgdG8gY2hlY2tfc3RkaW50Lmggd2hpY2ggY2F1c2VzCittdWx0aWxpYiBpbnN0YWxsIGZpbGUgY29uZmxpY3QuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNCBiL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNAoraW5kZXggMzNhMjFmOC4uZWFjYzM3YSAxMDA2NDQKKy0tLSBhL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNAorKysrIGIvbTQvYXhfY3JlYXRlX3N0ZGludF9oLm00CitAQCAtMjcyLDcgKzI3Miw2IEBAIGVjaG8gIiNpZm5kZWYiICRfYWNfc3RkaW50X2ggPiRhY19zdGRpbnQKKyBlY2hvICIjZGVmaW5lIiAkX2FjX3N0ZGludF9oICIxIiA+PiRhY19zdGRpbnQKKyBlY2hvICIjaWZuZGVmIiBfR0VORVJBVEVEX1NURElOVF9IID4+JGFjX3N0ZGludAorIGVjaG8gIiNkZWZpbmUiIF9HRU5FUkFURURfU1RESU5UX0ggJyInJFBBQ0tBR0UgJFZFUlNJT04nIicgPj4kYWNfc3RkaW50CistZWNobyAiLyogZ2VuZXJhdGVkICRhY19jdl9zdGRpbnRfbWVzc2FnZSAqLyIgPj4kYWNfc3RkaW50CisgaWYgdGVzdCAiXyRhY19jdl9oZWFkZXJfc3RkaW50X3QiICE9ICJfIiA7IHRoZW4KKyBlY2hvICIjZGVmaW5lIF9TVERJTlRfSEFWRV9TVERJTlRfSCIgIjEiID4+JGFjX3N0ZGludAorIGVjaG8gIiNpbmNsdWRlIDxzdGRpbnQuaD4iID4+JGFjX3N0ZGludApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTIuMC5iYgppbmRleCBlNjQ2ZDQzLi4zYmI0OGE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTIuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTIuMC5iYgpAQCAtNSw3ICs1LDggQEAKIExJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS9jaGVjay9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9jaGVjay0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbm90LWVjaG8tY29tcGlsZXItaW5mby10by1jaGVja19zdGRpbnQuaC5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMWIxN2M2MDc1ODIwYTQzNDExOTU5Mjk0MTE4NmY3MCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjQyMDEwOThiZWUwMGU5MGY1YzRiZGZhOTRhNWQzZWFkOGQ2NDFmOTAyNWI1NjBhMjc3NTVhODNiODI0MjM0IgogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJjaGVjay9jaGVjay9yZWxlYXNlcy8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvL0NWRS0yMDE3LTc5NjEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvL0NWRS0yMDE3LTc5NjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYzExZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjcm9jby9saWJjcm9jby9DVkUtMjAxNy03OTYxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA1ZmEzMTY1NjEzYjc3YjUxNmUyYjBkYzEyOGY3M2I2NzNiZDNlYzhiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSWduYWNpbyBDYXNhbCBRdWludGVpcm8gPHFpZ25hY2lvQGFtYXpvbi5jb20+Ci1EYXRlOiBTdW4sIDE2IEFwciAyMDE3IDEzOjU2OjA5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRrbnpyOiBzdXBwb3J0IG9ubHkgbWF4IGxvbmcgcmdiIHZhbHVlcwotCi1UaGlzIGZpeGVzIGEgcG9zc2libGUgb3V0IG9mIGJvdW5kIHdoZW4gcmVhZGluZyByZ2JzIHdoaWNoCi1hcmUgbG9uZ2VyIHRoYW4gdGhlIHN1cHBvcnQgTUFYTE9ORwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYmNyb2NvL3BhdGNoLz9pZD05YWQ3Mjg3NWU5ZjA4ZTRjNTE5ZWY2M2Q0NGNkYmQ5NGFhOTUwNGY3XQotQ1ZFOiBDVkUtMjAxNy03OTYxCi1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gc3JjL2NyLXRrbnpyLmMgfCAxMCArKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jci10a256ci5jIGIvc3JjL2NyLXRrbnpyLmMKLWluZGV4IGUzYWYwZWUuLjc2ODg2ZWMgMTAwNjQ0Ci0tLS0gYS9zcmMvY3ItdGtuenIuYwotKysrIGIvc3JjL2NyLXRrbnpyLmMKLUBAIC0xMjgwLDYgKzEyODAsMTEgQEAgY3JfdGtuenJfcGFyc2VfcmdiIChDUlRrbnpyICogYV90aGlzLCBDUlJnYiAqKiBhX3JnYikKLSAgICAgICAgIHN0YXR1cyA9IGNyX3RrbnpyX3BhcnNlX251bSAoYV90aGlzLCAmbnVtKTsKLSAgICAgICAgIEVOU1VSRV9QQVJTSU5HX0NPTkQgKChzdGF0dXMgPT0gQ1JfT0spICYmIChudW0gIT0gTlVMTCkpOwotIAotKyAgICAgICAgaWYgKG51bS0+dmFsID4gR19NQVhMT05HKSB7Ci0rICAgICAgICAgICAgICAgIHN0YXR1cyA9IENSX1BBUlNJTkdfRVJST1I7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0rICAgICAgICB9Ci0rCi0gICAgICAgICByZWQgPSBudW0tPnZhbDsKLSAgICAgICAgIGNyX251bV9kZXN0cm95IChudW0pOwotICAgICAgICAgbnVtID0gTlVMTDsKLUBAIC0xMjk5LDYgKzEzMDQsMTEgQEAgY3JfdGtuenJfcGFyc2VfcmdiIChDUlRrbnpyICogYV90aGlzLCBDUlJnYiAqKiBhX3JnYikKLSAgICAgICAgICAgICAgICAgc3RhdHVzID0gY3JfdGtuenJfcGFyc2VfbnVtIChhX3RoaXMsICZudW0pOwotICAgICAgICAgICAgICAgICBFTlNVUkVfUEFSU0lOR19DT05EICgoc3RhdHVzID09IENSX09LKSAmJiAobnVtICE9IE5VTEwpKTsKLSAKLSsgICAgICAgICAgICAgICAgaWYgKG51bS0+dmFsID4gR19NQVhMT05HKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gQ1JfUEFSU0lOR19FUlJPUjsKLSsgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotKyAgICAgICAgICAgICAgICB9Ci0rCi0gICAgICAgICAgICAgICAgIFBFRUtfQllURSAoYV90aGlzLCAxLCAmbmV4dF9ieXRlc1swXSk7Ci0gICAgICAgICAgICAgICAgIGlmIChuZXh0X2J5dGVzWzBdID09ICclJykgewotICAgICAgICAgICAgICAgICAgICAgICAgIFNLSVBfQ0hBUlMgKGFfdGhpcywgMSk7Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCmluZGV4IGM3NTA3ZTAuLjViOTYyZWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiCkBAIC0xNiw4ICsxNiw3IEBACiAKIGluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgYmluY29uZmlnLWRpc2FibGVkCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly9DVkUtMjAxNy03OTYwLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03OTYxLnBhdGNoICIKK1NSQ19VUkkgKz0gImZpbGU6Ly9DVkUtMjAxNy03OTYwLnBhdGNoIgogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiYzA5ODRmY2UwNzhiYTJjZTI5Zjk1MDBjNmI5ZGRjZSIKIFNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImRkYzRiNTU0NmM5ZmI0MjgwYTUwMTdlMjcwN2ZiZDQ4MzkwMzRlZDFhYmE1YjdkNDM3MjIxMmYzNGY4NGY4NjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzEzODAxNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJXcmFwcGVyIGxpYnJhcnkgZm9yIGV2ZGV2IGRldmljZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmV2ZGV2LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQtWCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1YWFlMGQzOGZlZWE2ZmRhOTdjYTM4MWNiOTEzMmViIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmV2ZGV2L2xpYmV2ZGV2Lmg7ZW5kbGluZT0yMTttZDU9N2ZmNGYwYjUxMTMyNTJjMmYxYTgyOGUwYmJhZDk4ZDEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvbGliZXZkZXYvJHtCUH0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzI1YThjMzkzOWU0YWQ1OWE1ZTllNWUxZTM1NDgzMmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4M2Q4MWU0NjYwOWRhOGJhODBjYjgyNmMwMmQ5MDgwNzY0YTZkZWMzM2M4MjY3Y2NiN2UxNTg4MzNkNGM2ZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTljNjBlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuOS5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIldyYXBwZXIgbGlicmFyeSBmb3IgZXZkZXYgZGV2aWNlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliZXZkZXYvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVC1YIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMWNhMTFlOTYxYzFlZmVkNzIwZmFjNDEzMDg4MTkwNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMTY2Mzc1MTQ0M2JlZDlkM2U3NmE0ZmUyY2FmNmZhODY2YTc5NzA1ZDkxY2FjYWQ4MTVjMDRlNzA2MTk4YTc1IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCmluZGV4IDgzY2U0NjQuLjBmOTFlMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuOC5iYgpAQCAtMjgsMTIgKzI4LDE2IEBACiAjIE5lZWRlZCBmb3IgRGViaWFuIHBhY2thZ2luZwogTEVBRF9TT05BTUUgPSAibGliZXZlbnQtMi4xLnNvIgogCi1pbmhlcml0IHB0ZXN0Citpbmhlcml0IHB0ZXN0IG11bHRpbGliX2hlYWRlcgogCiBERVBFTkRTID0gInpsaWIiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIG9lX211bHRpbGliX2hlYWRlciBldmVudDIvZXZlbnQtY29uZmlnLmgKK30KKwogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKIAlmb3IgZmlsZSBpbiAke0J9L3Rlc3QvLmxpYnMvcmVncmVzcyAke0J9L3Rlc3QvLmxpYnMvdGVzdCoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLWV4dHJhXzEuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGZkODNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4yLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGZpbGUgbWFuYWdlbWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9wY21hbmZtLnNvdXJjZWZvcmdlLm5ldC8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy9mbS1leHRyYS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJnbGliLTIuMC1uYXRpdmUgZ2xpYi0yLjAgaW50bHRvb2wtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL2xpYmZtLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMWJhOWFlNWU5MjBmMzhiNjQ3ZGQ1MTFlZGQ2YzgwNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzA2YmIxMDIwY2Y1ZjJkNmY1YTkyMjZmNjkyY2UxOTg1OTQ3MTM0ZGNmMmJkZTY0Mjc4YmQwNDIwNzc5YjVhIgotCi1TID0gIiR7V09SS0RJUn0vbGliZm0tJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZXh0cmEtb25seSAtLXdpdGgtZ3RrPW5vIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnZXR0ZXh0Ci0KLWRvX2NvbmZpZ3VyZVtkaXJzXSA9KyAiJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4zLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0tZXh0cmFfMS4zLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzRkMDEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS1leHRyYV8xLjMuMC4yLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgZmlsZSBtYW5hZ2VtZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3BjbWFuZm0uc291cmNlZm9yZ2UubmV0LyIKKworTElDRU5TRSA9ICJMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL2ZtLWV4dHJhLmg7YmVnaW5saW5lPTg7ZW5kbGluZT0yMTttZDU9ZWYxZjg0ZGE2NGIzYzAxY2NhNDQ3MjEyZjdlZjYwMDciCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnbGliLTIuMCBpbnRsdG9vbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyYTAyNDcxNGQ1MWUwZDM3YWZjN2JkNTk2YTQ0ZjNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4ZDA2Zjc5OTZjZTFjZjg5NDdkZjZlMTA2YmMwMzM4YzZhZTBjNDEzOGMzMTZmMjUwMWY2ZjZmNDM1YzdjNzIiCisKK1MgPSAiJHtXT1JLRElSfS9saWJmbS0ke1BWfSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1leHRyYS1vbmx5IC0td2l0aC1ndGs9bm8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQKKworZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbS8wMDAxLURvLW5vdC1hZGQtbGlicmFyeS1wYXRoLXRvLWF2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1Eby1ub3QtYWRkLWxpYnJhcnktcGF0aC10by1hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRjODkxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1Eby1ub3QtYWRkLWxpYnJhcnktcGF0aC10by1hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSAwNzI2MDI5NWUwMzFlODQ1ZTM4YmE4NzRmYTZhYjUwMDc5MGM0YWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIgTWF5IDIwMTggMTY6NDg6NDcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGFkZCBsaWJyYXJ5IHBhdGggdG8gYXZvaWQgaG9zdCBjb250YW1pbmF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9kdWxlcy9NYWtlZmlsZS5hbSB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9NYWtlZmlsZS5hbSBiL3NyYy9tb2R1bGVzL01ha2VmaWxlLmFtCitpbmRleCBlNjFmNGUwLi4wMWMxNWJkIDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9tb2R1bGVzL01ha2VmaWxlLmFtCitAQCAtMTEsNyArMTEsNiBAQCBBTV9DUFBGTEFHUyA9IFwKKyAjIHRlbGwgbGlidG9vbCB3ZSBjb21waWxlIG1vZHVsZSBub3QgbGlicmFyeQorIEFNX0xERkxBR1MgPSBcCisgCS1uby11bmRlZmluZWQgLW1vZHVsZSAtYXZvaWQtdmVyc2lvbiAtc2hhcmVkIC1leHBvcnQtZHluYW1pYyBcCistCS1MJChsaWJkaXIpIFwKKyAJJChHSU9fTElCUykKKyAKKyAjIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGxpbmtlZCBvbmx5IHdpdGggbGliZm0sIG5vdCBsaWJmbS1ndGsgb3Igd2hhdGV2ZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm0vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlNTMyOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtLzAwMDEtRW5jbG9zZS10ZXh0LWluLXByb2dyYW1saXN0aW5nLWludG8tQ0RBVEEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1Gcm9tIGVkNGNhOGMwYjE3ZmY1ZDNjNzY4YjkyNDA5YzE3ODdlM2YzZjE4NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyaXkgR3J5dHNlbmtvIDxhbmRyZWpAcmVwLmtpZXYudWE+Ci1EYXRlOiBTdW4sIDI2IE5vdiAyMDE3IDIyOjMwOjE1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBFbmNsb3NlIHRleHQgaW4gPHByb2dyYW1saXN0aW5nPiBpbnRvIDwhW0NEQVRBWwotCi1OZXcgZ3RrLWRvYyBmYWlscyBvbiB0YWctbGlrZSBkYXRhIGluIGl0LgotU2VlIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTU4NQotVGhhdCBpcyBkZWZpbml0ZWx5IGJ1ZyBvZiBndGstZG9jIGJ1dCBsZXQgd29ya2Fyb3VuZCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQubHhkZS5vcmcvZ2l0d2ViLz9wPWx4ZGUvbGliZm0uZ2l0O2E9Y29tbWl0O2g9YjA3MmVlMDQwMDQzMmQ3MmZkZjg2YmE5ZmVkNzRhN2UwZWMxMWVjMV0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2UvZm0tbW9kdWxlLmMgfCAxMiArKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jhc2UvZm0tbW9kdWxlLmMgYi9zcmMvYmFzZS9mbS1tb2R1bGUuYwotaW5kZXggZDM2NGIyZC4uMmU4Yzk3OCAxMDA2NDQKLS0tLSBhL3NyYy9iYXNlL2ZtLW1vZHVsZS5jCi0rKysgYi9zcmMvYmFzZS9mbS1tb2R1bGUuYwotQEAgLTQ0LDcgKzQ0LDcgQEAKLSAgKiBvZiB0aGF0IHR5cGUgc2hvdWxkIGluY2x1ZGU6Ci0gICogPGV4YW1wbGUgaWQ9ImV4YW1wbGUtZm0tZHVtbXktaCI+Ci0gICogPHRpdGxlPlNhbXBsZSBvZiBmbS1kdW1teS5oPC90aXRsZT4KLS0gKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0rICogPHByb2dyYW1saXN0aW5nPjwhW0NEQVRBWwotICAqICNpbmNsdWRlIDxsaWJmbS9mbS5oPgotICAqCi0gICogI2RlZmluZSBGTV9NT0RVTEVfZHVtbXlfVkVSU0lPTiAxCi1AQCAtNTQsNyArNTQsNyBAQAotICAqIH0gRm1EdW1teUluaXQ7Ci0gICoKLSAgKiBleHRlcm4gRm1EdW1teUluaXQgZm1fbW9kdWxlX2luaXRfZHVtbXk7Ci0tICogPC9wcm9ncmFtbGlzdGluZz4KLSsgKiBdXT48L3Byb2dyYW1saXN0aW5nPgotICAqIDwvZXhhbXBsZT4KLSAgKiBUaGUgRk1fTU9EVUxFX2R1bW15X1ZFUlNJT04gaXMgYSBudW1iZXIgd2hpY2ggc2hvdWxkIGJlIGluY3JlYXNlZCBlYWNoCi0gICogdGltZSBzb21ldGhpbmcgaW4gRm1EdW1teUluaXQgc3RydWN0dXJlIGlzIGNoYW5nZWQuIFRoZSBGbUR1bW15SW5pdAotQEAgLTY1LDcgKzY1LDcgQEAKLSAgKiBtb2R1bGUgaGFuZGxpbmcgaW4geW91ciBjb2RlOgotICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LXdpZGdldC1jIj4KLSAgKiA8dGl0bGU+U2FtcGxlIG9mIGZtLWR1bW15LXdpZGdldC5jPC90aXRsZT4KLS0gKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0rICogPHByb2dyYW1saXN0aW5nPjwhW0NEQVRBWwotICAqICNpbmNsdWRlICJmbS1kdW1teS5oIgotICAqCi0gICogRk1fTU9EVUxFX0RFRklORV9UWVBFKGR1bW15LCBGbUR1bW15SW5pdCwgMSkKLUBAIC04Nyw3ICs4Nyw3IEBACi0gICogICAgICAgICByZXN1bHQgPSBtb2R1bGUtPmdldF9uZXcoInRlc3Qgc2FtcGxlIik7Ci0gICogICAgIHJldHVybiByZXN1bHQ7Ci0gICogfQotLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0rICogXV0+PC9wcm9ncmFtbGlzdGluZz4KLSAgKiA8L2V4YW1wbGU+Ci0gICoKLSAgKiBUaGlyZCB0aGluZyBhcHBsaWNhdGlvbiBzaG91bGQgZG8gaXMgdG8gcmVnaXN0ZXIgbW9kdWxlIHR5cGUgb24gdGhlCi1AQCAtMTA4LDcgKzEwOCw3IEBACi0gICogaW50ZXJmYWNlIChzZWUgdGhlIGZtLWR1bW15LmggaGVhZGVyIGV4YW1wbGUgYWJvdmUpOgotICAqIDxleGFtcGxlIGlkPSJleGFtcGxlLWZtLWR1bW15LXRlc3QtYyI+Ci0gICogPHRpdGxlPlNhbXBsZSBvZiBtb2R1bGUgZHVtbXkvdGVzdDwvdGl0bGU+Ci0tICogPHByb2dyYW1saXN0aW5nPgotKyAqIDxwcm9ncmFtbGlzdGluZz48IVtDREFUQVsKLSAgKiAjaW5jbHVkZSAiZm0tZHVtbXkuaCIKLSAgKgotICAqIEZNX0RFRklORV9NT0RVTEUoZHVtbXksIHRlc3QpCi1AQCAtMTIxLDcgKzEyMSw3IEBACi0gICogRm1EdW1teUluaXQgZm1fbW9kdWxlX2luaXRfZHVtbXkgPSB7Ci0gICogICAgIGZtX2R1bW15X3Rlc3RfZ2V0X25ldzsKLSAgKiB9OwotLSAqIDwvcHJvZ3JhbWxpc3Rpbmc+Ci0rICogXV0+PC9wcm9ncmFtbGlzdGluZz4KLSAgKiA8L2V4YW1wbGU+Ci0gICogVGhlIGZtX21vZHVsZV9pbml0X2R1bW15IHNob3VsZCBiZSBleGFjdGx5IHRoZSBzYW1lIHN0cnVjdHVyZSB0aGF0IGlzCi0gICogZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUgYWJvdmUuCi0tLSAKLTIuMTUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2NDA4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBmaWxlIG1hbmFnZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vcGNtYW5mbS5zb3VyY2Vmb3JnZS5uZXQvIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NjQxZTk0ZWM5NmY5OGZhYmM1NmZmOWNjNDhiZTE0YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZm0uaDtiZWdpbmxpbmU9ODtlbmRsaW5lPTIxO21kNT1lZjFmODRkYTY0YjNjMDFjY2E0NDcyMTJmN2VmNjAwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvYmFzZS9mbS1jb25maWcuaDtiZWdpbmxpbmU9MTA7ZW5kbGluZT0yMzttZDU9ZWYxZjg0ZGE2NGIzYzAxY2NhNDQ3MjEyZjdlZjYwMDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZtLWd0ay5oO2JlZ2lubGluZT02O2VuZGxpbmU9MTk7bWQ1PTY0NmJhYTQ5NTVjMDRmZTc2OGYyY2EyN2I5MmFjOGRkIgotCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBwYW5nbyBndGsrMyBtZW51LWNhY2hlIGludGx0b29sLW5hdGl2ZSBsaWJleGlmIGxpYmZtLWV4dHJhIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wY21hbmZtL2xpYmZtLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1jaGVjay10aGUtc3RhbXAtZmlsZS10aGF0LWluZGljYXRlcy1pZi13ZS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmNsb3NlLXRleHQtaW4tcHJvZ3JhbWxpc3RpbmctaW50by1DREFUQS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImExYmE5YWU1ZTkyMGYzOGI2NDdkZDUxMWVkZDZjODA3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MDZiYjEwMjBjZjVmMmQ2ZjVhOTIyNmY2OTJjZTE5ODU5NDcxMzRkY2YyYmRlNjQyNzhiZDA0MjA3NzliNWEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKLQotZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgotCi1QQUNLQUdFUyA9KyAibGliZm0tZ3RrIgotUEFDS0FHRVMgKz0gIiR7UE59LW1pbWUiCi1GSUxFU19saWJmbS1ndGsgPSAiIFwKLSAgICAke2xpYmRpcn0vbGliZm0tZ3RrKnNvLiogXAotICAgICR7bGliZGlyfS9saWJmbS9tb2R1bGVzL2d0ayogXAotICAgICR7YmluZGlyfS9saWJmbS1wcmVmLWFwcHMgXAotICAgICR7YmluZGlyfS9seHNob3J0Y3V0IFwKLSAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9saWJmbS1wcmVmLWFwcHMuZGVza3RvcCBcCi0gICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbHhzaG9ydGN1dC5kZXNrdG9wIFwKLSAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy9mb2xkZXIucG5nIFwKLSAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy91bmtub3duLnBuZyBcCi0gICAgJHtkYXRhZGlyfS9saWJmbS91aS8qLnVpIFwKLSIKLUZJTEVTXyR7UE59LW1pbWUgPSAiJHtkYXRhZGlyfS9taW1lLyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgcmVtb3ZlIGZpbGVzIHdoaWNoIGFyZSBwYXJ0IG9mIGxpYmZtLWV4dHJhCi0gICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLXhtbC1maWxlLmgKLSAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0tdmVyc2lvbi5oCi0gICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLWV4dHJhLmgKLSAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbQotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmZtLWV4dHJhLnBjCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5zbyoKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLmEKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLmxhCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJkNmE1MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjAuMi5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGZpbGUgbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9wY21hbmZtLnNvdXJjZWZvcmdlLm5ldC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ2NDFlOTRlYzk2Zjk4ZmFiYzU2ZmY5Y2M0OGJlMTRiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mbS5oO2JlZ2lubGluZT04O2VuZGxpbmU9MjE7bWQ1PWVmMWY4NGRhNjRiM2MwMWNjYTQ0NzIxMmY3ZWY2MDA3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9iYXNlL2ZtLWNvbmZpZy5oO2JlZ2lubGluZT0xMDtlbmRsaW5lPTIzO21kNT1lZjFmODRkYTY0YjNjMDFjY2E0NDcyMTJmN2VmNjAwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZm0tZ3RrLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0xOTttZDU9NjQ2YmFhNDk1NWMwNGZlNzY4ZjJjYTI3YjkyYWM4ZGQiCisKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIHBhbmdvIGd0ayszIG1lbnUtY2FjaGUgaW50bHRvb2wtbmF0aXZlIGxpYmV4aWYgbGliZm0tZXh0cmEiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3BjbWFuZm0vbGliZm0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmVjdGx5LWNoZWNrLXRoZS1zdGFtcC1maWxlLXRoYXQtaW5kaWNhdGVzLWlmLXdlLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1hZGQtbGlicmFyeS1wYXRoLXRvLWF2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyYTAyNDcxNGQ1MWUwZDM3YWZjN2JkNTk2YTQ0ZjNiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4ZDA2Zjc5OTZjZTFjZjg5NDdkZjZlMTA2YmMwMzM4YzZhZTBjNDEzOGMzMTZmMjUwMWY2ZjZmNDM1YzdjNzIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1ndGs9MyIKKworZG9fY29uZmlndXJlW2RpcnNdID0rICIke1N9L200IgorCitQQUNLQUdFUyA9KyAibGliZm0tZ3RrIgorUEFDS0FHRVMgKz0gIiR7UE59LW1pbWUiCitGSUxFU19saWJmbS1ndGsgPSAiIFwKKyAgICAke2xpYmRpcn0vbGliZm0tZ3RrKnNvLiogXAorICAgICR7bGliZGlyfS9saWJmbS9tb2R1bGVzL2d0ayogXAorICAgICR7YmluZGlyfS9saWJmbS1wcmVmLWFwcHMgXAorICAgICR7YmluZGlyfS9seHNob3J0Y3V0IFwKKyAgICAke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucy9saWJmbS1wcmVmLWFwcHMuZGVza3RvcCBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMvbHhzaG9ydGN1dC5kZXNrdG9wIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy9mb2xkZXIucG5nIFwKKyAgICAke2RhdGFkaXJ9L2xpYmZtL2ltYWdlcy91bmtub3duLnBuZyBcCisgICAgJHtkYXRhZGlyfS9saWJmbS91aS8qLnVpIFwKKyIKK0ZJTEVTXyR7UE59LW1pbWUgPSAiJHtkYXRhZGlyfS9taW1lLyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgcmVtb3ZlIGZpbGVzIHdoaWNoIGFyZSBwYXJ0IG9mIGxpYmZtLWV4dHJhCisgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLXhtbC1maWxlLmgKKyAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0tdmVyc2lvbi5oCisgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLWV4dHJhLmgKKyAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbQorICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmZtLWV4dHJhLnBjCisgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5zbyoKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLmEKKyAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLmxhCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9DVkUtMjAxOC0wNDk1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvQ1ZFLTIwMTgtMDQ5NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE2YmQzYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9DVkUtMjAxOC0wNDk1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotRnJvbSA5MDEwZDE1NzZlMjc4YTQyNzRhZDNmNGFhMTU3NzZjMjhmNmJhOTY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDE4IDE1OjI4OjU4ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVjYzogQWRkIGJsaW5kaW5nIGZvciBFQ0RTQS4KLQotKiBjaXBoZXIvZWNjLWVjZHNhLmMgKF9nY3J5X2VjY19lY2RzYV9zaWduKTogQmxpbmQgc2VjcmV0IEQgd2l0aAotcmFuZG9taXplZCBub25jZSBCLgotCi0tLQotCi1SZXBvcnRlZC1ieTogS2VlZ2FuIFJ5YW4gPEtlZWdhbi5SeWFuQG5jY2dyb3VwLnRydXN0PgotQ1ZFLWlkOiBDVkUtMjAxOC0wNDk1Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuZ251cGcub3JnL2NnaS1iaW4vZ2l0d2ViLmNnaT9wPWxpYmdjcnlwdC5naXQ7YT1jb21taXQ7aD05MDEwZDE1NzZlMjc4YTQyNzRhZDNmNGFhMTU3NzZjMjhmNmJhOTY1XQotCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEphZ2FkZWVzaCBLcmlzaG5hbmphbmFwcGEgPGprcmlzaG5hbmphbmFwcGFAbXZpc3RhLmNvbT4KLS0tLQotIGNpcGhlci9lY2MtZWNkc2EuYyB8IDIwICsrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvZWNjLWVjZHNhLmMgYi9jaXBoZXIvZWNjLWVjZHNhLmMKLWluZGV4IDE0ODQ4MzBiLi4xNDBlOGMwOSAxMDA2NDQKLS0tLSBhL2NpcGhlci9lY2MtZWNkc2EuYwotKysrIGIvY2lwaGVyL2VjYy1lY2RzYS5jCi1AQCAtNTAsNiArNTAsOCBAQCBfZ2NyeV9lY2NfZWNkc2Ffc2lnbiAoZ2NyeV9tcGlfdCBpbnB1dCwgRUNDX3NlY3JldF9rZXkgKnNrZXksCi0gICBjb25zdCB2b2lkICphYnVmOwotICAgdW5zaWduZWQgaW50IGFiaXRzLCBxYml0czsKLSAgIG1waV9lY190IGN0eDsKLSsgIGdjcnlfbXBpX3QgYjsgICAgICAgICAgICAgICAgLyogUmFuZG9tIG51bWJlciBuZWVkZWQgZm9yIGJsaW5kaW5nLiAgKi8KLSsgIGdjcnlfbXBpX3QgYmk7ICAgICAgICAgICAgICAgLyogbXVsdGlwbGljYXRpdmUgaW52ZXJzZSBvZiBCLiAgICAgICAgKi8KLSAKLSAgIGlmIChEQkdfQ0lQSEVSKQotICAgICBsb2dfbXBpZHVtcCAoImVjZHNhIHNpZ24gaGFzaCAgIiwgaW5wdXQgKTsKLUBAIC02MSw2ICs2MywxNSBAQCBfZ2NyeV9lY2NfZWNkc2Ffc2lnbiAoZ2NyeV9tcGlfdCBpbnB1dCwgRUNDX3NlY3JldF9rZXkgKnNrZXksCi0gICBpZiAocmMpCi0gICAgIHJldHVybiByYzsKLSAKLSsgIGIgID0gbXBpX3NuZXcgKHFiaXRzKTsKLSsgIGJpID0gbXBpX3NuZXcgKHFiaXRzKTsKLSsgIGRvCi0rICAgIHsKLSsgICAgICBfZ2NyeV9tcGlfcmFuZG9taXplIChiLCBxYml0cywgR0NSWV9XRUFLX1JBTkRPTSk7Ci0rICAgICAgbXBpX21vZCAoYiwgYiwgc2tleS0+RS5uKTsKLSsgICAgfQotKyAgd2hpbGUgKCFtcGlfaW52bSAoYmksIGIsIHNrZXktPkUubikpOwotKwotICAgayA9IE5VTEw7Ci0gICBkciA9IG1waV9hbGxvYyAoMCk7Ci0gICBzdW0gPSBtcGlfYWxsb2MgKDApOwotQEAgLTExNSw4ICsxMjYsMTEgQEAgX2djcnlfZWNjX2VjZHNhX3NpZ24gKGdjcnlfbXBpX3QgaW5wdXQsIEVDQ19zZWNyZXRfa2V5ICpza2V5LAotICAgICAgICAgfQotICAgICAgIHdoaWxlICghbXBpX2NtcF91aSAociwgMCkpOwotIAotLSAgICAgIG1waV9tdWxtIChkciwgc2tleS0+ZCwgciwgc2tleS0+RS5uKTsgLyogZHIgPSBkKnIgbW9kIG4gICovCi0tICAgICAgbXBpX2FkZG0gKHN1bSwgaGFzaCwgZHIsIHNrZXktPkUubik7ICAvKiBzdW0gPSBoYXNoICsgKGQqcikgbW9kIG4gICovCi0rICAgICAgbXBpX211bG0gKGRyLCBiLCBza2V5LT5kLCBza2V5LT5FLm4pOwotKyAgICAgIG1waV9tdWxtIChkciwgZHIsIHIsIHNrZXktPkUubik7ICAgICAgLyogZHIgPSBkKnIgbW9kIG4gKGJsaW5kZWQgd2l0aCBiKSAqLwotKyAgICAgIG1waV9tdWxtIChzdW0sIGIsIGhhc2gsIHNrZXktPkUubik7Ci0rICAgICAgbXBpX2FkZG0gKHN1bSwgc3VtLCBkciwgc2tleS0+RS5uKTsgICAvKiBzdW0gPSBoYXNoICsgKGQqcikgbW9kIG4gIChibGluZGVkIHdpdGggYikgKi8KLSsgICAgICBtcGlfbXVsbSAoc3VtLCBiaSwgc3VtLCBza2V5LT5FLm4pOyAgIC8qIHVuZG8gYmxpbmRpbmcgYnkgYl4tMSAqLwotICAgICAgIG1waV9pbnZtIChrXzEsIGssIHNrZXktPkUubik7ICAgICAgICAgLyoga18xID0ga14oLTEpIG1vZCBuICAqLwotICAgICAgIG1waV9tdWxtIChzLCBrXzEsIHN1bSwgc2tleS0+RS5uKTsgICAgLyogcyA9IGteKC0xKSooaGFzaCsoZCpyKSkgbW9kIG4gKi8KLSAgICAgfQotQEAgLTEyOSw2ICsxNDMsOCBAQCBfZ2NyeV9lY2NfZWNkc2Ffc2lnbiAoZ2NyeV9tcGlfdCBpbnB1dCwgRUNDX3NlY3JldF9rZXkgKnNrZXksCi0gICAgIH0KLSAKLSAgbGVhdmU6Ci0rICBtcGlfZnJlZSAoYik7Ci0rICBtcGlfZnJlZSAoYmkpOwotICAgX2djcnlfbXBpX2VjX2ZyZWUgKGN0eCk7Ci0gICBwb2ludF9mcmVlICgmSSk7Ci0gICBtcGlfZnJlZSAoeCk7Ci0tLSAKLTIuMTMuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMDM2YzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCi1IT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi1TRUNUSU9OID0gImxpYnMiCi0KLSMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXRlc3RzLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLXB0aHJlYWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMDQ5NS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiY2ZiMGI1Yzc5ZWFiMDc2ODZiNjg5ODE2MGE0MDcxMzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzgwNjRjYWU3NTU4MTQ0YjEzZWYwZWI4NzA5MzQxMjM4MGVmYTE2YzRlZTMwYWQxMmVjYjU0ODg2YTUyNGMwNyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJnY3J5cHQtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hc20iCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgotUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotfQotCi0jIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLwotfQotCi1QQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgotRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWZhODM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC4zLmJiCkBAIC0wLDAgKzEsNTQgQEAKK1NVTU1BUlkgPSAiR2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBiYXNlZCBvbiB0aGUgY29kZSBmcm9tIEdudVBHIgorSE9NRVBBR0UgPSAiaHR0cDovL2RpcmVjdG9yeS5mc2Yub3JnL3Byb2plY3QvbGliZ2NyeXB0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmcxMGNvZGUuY29tL2dudXBnL2luZGV4IgorU0VDVElPTiA9ICJsaWJzIgorCisjIGhlbHBlciBwcm9ncmFtIGdjcnlwdHJuZCBhbmQgZ2V0cmFuZG9tIGFyZSB1bmRlciBHUEwsIHJlc3QgTEdQTAorTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tZGV2ID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfZHVtcHNleHAtZGV2ID0gIkdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWJiYjQ2MTIxMWEzM2IxMzRkNDJlZDVlZTgwMmIzN2ZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0VTO21kNT04NDBlM2JjYjc1NGU1MDQ2ZmZlZGE3NjE5MDM0Y2JkOCIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ2NyeXB0L2xpYmdjcnlwdC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWFuZC11c2UtcGtnLWNvbmZpZy1mb3ItbGliZ2NyeXB0LWluc3RlYWQtb2YtY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtdGVzdHMtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMzEzOWMyNDAyZTg0NDk4NWE2N2ZiMjg4YTkzMDUzNGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjZlYzkwYmUwMzY3NDc2MDJmMmI0OGY5ODMxMjM2MWE5MTgwYzk3YzY4YTY5MGE1ZjM3NmZhMGY2N2QwYWY3YyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJnY3J5cHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hc20iCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgorUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorfQorCisjIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLworfQorCitQQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgorRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLXN5c2NmZy1TdXBwb3J0LUFSQy1DUFVzLWFuZC1zaW1wbGlmeS1hbGlhc2luZy10YWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLXN5c2NmZy1TdXBwb3J0LUFSQy1DUFVzLWFuZC1zaW1wbGlmeS1hbGlhc2luZy10YWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2IwY2U3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDEtc3lzY2ZnLVN1cHBvcnQtQVJDLUNQVXMtYW5kLXNpbXBsaWZ5LWFsaWFzaW5nLXRhYmxlLnBhdGNoCkBAIC0wLDAgKzEsMjk4IEBACitGcm9tIGQ0ZmQ2OTc1NjcxNDc3NzIxOTM2MDYwNzcxYWE0ZDdkMDdmYjA5MTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXZXJuZXIgS29jaCA8d2tAZ251cGcub3JnPgorRGF0ZTogVHVlLCAxOCBTZXAgMjAxOCAxNDo1NDowOCArMDIwMAorU3ViamVjdDogW1BBVENIIGxpYmdwZy1lcnJvcl0gc3lzY2ZnOiBTdXBwb3J0IEFSQyBDUFVzIGFuZCBzaW1wbGlmeSBhbGlhc2luZworIHRhYmxlLgorCisqIHNyYy9ta2hlYWRlci5jICh4bWFsbG9jKTogTmV3LgorKHhzdHJkdXApOiBJbXBsZW1lbnQgdXNpbmcgeG1hbGxvYy4KKyhjYW5vbl9ob3N0X3RyaXBsZXQpOiBBZGQgc3VwcG9yciBmb3IgYXJjIENQVS4gIEFkanVzdCBhbGlhcyB0YWJsZSB0bworYWxzbyBhbGlhcyAqLXBjLSouICBSZW5hbWUgaWJtIHRvIHVua25vd24uIEFkZCBpbnRlcm5hbCBhcmcuICBBZGQKK3Vua25vd24gdmVuZG9yIGhhY2suCisobWFpbik6IE5ldyBtb2RlIHRvIGp1c3QgcHJpbnQgdGhlIGNhbm9uaWNhbGl6ZWQgZm9ybS4KKyogc3JjL01ha2VmaWxlLmFtIChsb2NrX29ial9wdWIpOiBzLy0ocGN8aWJtKS0vLXVua25vd24vLiAgQWxzbyByZW5hbWUKK2ZpbGVzIGFjY29yZGluZ2x5LgorLS0KKworY29uZmlnLnN1YiBkb2VzIG5vIHJlYWwgYWxpYXNpbmcgYW5kIHRodXMgd2Ugd291bGQgbmVlZCB0byBhZGQgc2V2ZXJhbAordmVuZG9ycyB0byB0aGUgYWxpc2luZyB0YWJsZXMgZGVzcGl0ZSB0aGF0IHRoaXMgaGFzIG5vIHRlY2huaWNhbAorbWVhbmRpbmcuICBJbnN0ZWFkIHdlIG5vdyByZXBsYWNlIHRoZSB2ZW5kb3Igd2l0aCAidW5rbm93biIgZm9yIHRoZQorNC1wYXJ0LSJ0cmlwbGV0cyIuICBUaGlzIGNoYW5nZSB3aWxsIG1ha2UgbWFpbnRlbmFjZSBlYXNpZXIuCisKK1NpZ25lZC1vZmYtYnk6IFdlcm5lciBLb2NoIDx3a0BnbnVwZy5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0LmdudXBnLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1saWJncGctZXJyb3IuZ2l0O2E9Y29tbWl0O2g9NDhjOGY4ZGRmYzgwIF0KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrLS0KKyBzcmMvbWtoZWFkZXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5MiArKysrKysrKysrKysrKysrLS0tCisgLi4uLWdudS5oID0+IGxvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tZ251Lmh9IHwgIDAKKyAuLi4gbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1rZnJlZWJzZC1nbnUuaH0gfCAgMAorIC4uLiA9PiBsb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWxpbnV4LWdudS5ofSB8ICAwCisgLi4uPT4gbG9jay1vYmotcHViLnMzOTB4LXVua25vd24tbGludXgtZ251Lmh9IHwgIDAKKyAuLi5vY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1rZnJlZWJzZC1nbnUuaH0gfCAgMAorIC4uLj4gbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudS5ofSB8ICAwCisgLi4ub2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251eDMyLmh9IHwgIDAKKyAuLi4gbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LW11c2wuaH0gfCAgMAorIDEwIGZpbGVzIGNoYW5nZWQsIDg1IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorIHJlbmFtZSBzcmMvc3lzY2ZnL3tsb2NrLW9iai1wdWIuaTY4Ni1wYy1nbnUuaCA9PiBsb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWdudS5ofSAoMTAwJSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLmk2ODYtcGMta2ZyZWVic2QtZ251LmggPT4gbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1rZnJlZWJzZC1nbnUuaH0gKDEwMCUpCisgcmVuYW1lIHNyYy9zeXNjZmcve2xvY2stb2JqLXB1Yi5pNjg2LXBjLWxpbnV4LWdudS5oID0+IGxvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tbGludXgtZ251Lmh9ICgxMDAlKQorIHJlbmFtZSBzcmMvc3lzY2ZnL3tsb2NrLW9iai1wdWIuczM5MHgtaWJtLWxpbnV4LWdudS5oID0+IGxvY2stb2JqLXB1Yi5zMzkweC11bmtub3duLWxpbnV4LWdudS5ofSAoMTAwJSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLng4Nl82NC1wYy1rZnJlZWJzZC1nbnUuaCA9PiBsb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24ta2ZyZWVic2QtZ251Lmh9ICgxMDAlKQorIHJlbmFtZSBzcmMvc3lzY2ZnL3tsb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudS5oID0+IGxvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnUuaH0gKDEwMCUpCisgcmVuYW1lIHNyYy9zeXNjZmcve2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtZ251eDMyLmggPT4gbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudXgzMi5ofSAoMTAwJSkKKyByZW5hbWUgc3JjL3N5c2NmZy97bG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1tdXNsLmggPT4gbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LW11c2wuaH0gKDEwMCUpCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDQyOTk4ZTQ2YTNiYy4uOGVjNTgyZWY5OWZiIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC01Miw5ICs1Miw5IEBAIGxvY2tfb2JqX3B1YiA9IFwKKyAJc3lzY2ZnL2xvY2stb2JqLXB1Yi5hcm0tYXBwbGUtZGFyd2luLmggICAgICAgICAgICAgIFwKKyAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuaHBwYS11bmtub3duLWxpbnV4LWdudS5oICAgICAgICBcCisgCXN5c2NmZy9sb2NrLW9iai1wdWIuaTM4Ni1hcHBsZS1kYXJ3aW4uaCAgICAgICAgICAgICBcCistICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtZ251LmggICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXBjLWtmcmVlYnNkLWdudS5oICAgICAgICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni1wYy1saW51eC1nbnUuaCAgICAgICAgICAgICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1nbnUuaCAgICAgICAgICAgICAgXAorKyAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24ta2ZyZWVic2QtZ251LmggICAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni11bmtub3duLWxpbnV4LWdudS5oICAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLm02OGstdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgXAorICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5taXBzLXVua25vd24tbGludXgtZ251LmggICAgICAgIFwKKyAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIubWlwczY0ZWwtdW5rbm93bi1saW51eC1nbnVhYmk2NC5oIFwKK0BAIC02NiwxNiArNjYsMTYgQEAgbG9ja19vYmpfcHViID0gXAorIAlzeXNjZmcvbG9jay1vYmotcHViLnBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251LmggXAorIAlzeXNjZmcvbG9jay1vYmotcHViLnBvd2VycGMtdW5rbm93bi1saW51eC1nbnVzcGUuaCAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLnJpc2N2NjQtdW5rbm93bi1saW51eC1nbnUuaCAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5zMzkweC1pYm0tbGludXgtZ251LmggICAgICAgICAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuczM5MHgtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLnNoMy11bmtub3duLWxpbnV4LWdudS5oICAgICAgICAgXAorICAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi5zaDQtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICAgIFwKKyAgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIuc3BhcmMtdW5rbm93bi1saW51eC1nbnUuaCAgICAgICBcCisgICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLnNwYXJjNjQtdW5rbm93bi1saW51eC1nbnUuaCAgICAgXAorIAlzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1hcHBsZS1kYXJ3aW4uaCAgICAgICAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMta2ZyZWVic2QtZ251LmggICAgICAgIFwKKy0gICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudS5oICAgICAgICAgICBcCistICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1nbnV4MzIuaCAgICAgICAgXAorLSAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtbXVzbC5oICAgICAgICAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24ta2ZyZWVic2QtZ251LmggICBcCisrICAgICAgICBzeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LWdudS5oICAgICAgXAorKyAgICAgICAgc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnV4MzIuaCAgIFwKKysgICAgICAgIHN5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtbXVzbC5oICAgICBcCisgCXN5c2NmZy9sb2NrLW9iai1wdWIudGlsZWd4LXVua25vd24tbGludXgtZ251LmggICAgICBcCisgCXN5c2NmZy9sb2NrLW9iai1wdWIuaWE2NC11bmtub3duLWxpbnV4LWdudS5oICAgICAgICBcCisgCXN5c2NmZy9sb2NrLW9iai1wdWIubWluZ3czMi5oCitkaWZmIC0tZ2l0IGEvc3JjL21raGVhZGVyLmMgYi9zcmMvbWtoZWFkZXIuYworaW5kZXggMmZjNWZhZGE2NmE0Li43YTM4YTFiZWMxYTQgMTAwNjQ0CistLS0gYS9zcmMvbWtoZWFkZXIuYworKysrIGIvc3JjL21raGVhZGVyLmMKK0BAIC01MSwxNyArNTEsMjcgQEAgeGZyZWUgKHZvaWQgKmEpCisgCisgCisgc3RhdGljIGNoYXIgKgorLXhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZykKKyt4bWFsbG9jIChzaXplX3QgbikKKyB7CisgICBjaGFyICpwOworLSAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoc3RyaW5nKSArIDE7CisgCistICBwID0gbWFsbG9jIChsZW4pOworKyAgcCA9IG1hbGxvYyAobik7CisgICBpZiAoIXApCisgICAgIHsKKyAgICAgICBmcHV0cyAoUEdNICI6IG91dCBvZiBjb3JlXG4iLCBzdGRlcnIpOworICAgICAgIGV4aXQgKDEpOworICAgICB9CisrICByZXR1cm4gcDsKKyt9CisrCisrCisrc3RhdGljIGNoYXIgKgorK3hzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZykKKyt7CisrICBjaGFyICpwOworKyAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoc3RyaW5nKSArIDE7CisrCisrICBwID0geG1hbGxvYyAobGVuKTsKKyAgIG1lbWNweSAocCwgc3RyaW5nLCBsZW4pOworICAgcmV0dXJuIHA7CisgfQorQEAgLTY5LDIzICs3OSwzMSBAQCB4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCisgCisgLyogUmV0dXJuIGEgbWFsbG9jZWQgc3RyaW5nIHdpdGggVFJJUExFVC4gIElmIFRSSVBMRVQgaGFzIGFuIGFsaWFzCisgICAgcmV0dXJuIHRoYXQgaW5zdGVhZC4gIEluIGdlbmVyYWwgYnVpbGQtYXV4L2NvbmZpZy5zdWIgc2hvdWxkIGRvIHRoZQorLSAgIGFsaWFzaW5nIGJ1dCBzb21lIHJldHVybmVkIHRyaXBsZXRzIGFyZSBhbnl3YXkgaWRlbnRpY2FsIGFuZCB0aHVzIHdlCistICAgdXNlIHRoaXMgZnVuY3Rpb24gdG8gbWFwIGl0IHRvIHRoZSBjYW5vbmljYWwgZm9ybS4gICovCisrICAgYWxpYXNpbmcgYnV0IHNvbWUgcmV0dXJuZWQgdHJpcGxldHMgYXJlIGFueXdheSBpZGVudGljYWwgYW5kIHRodXMKKysgICB3ZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBtYXAgaXQgdG8gdGhlIGNhbm9uaWNhbCBmb3JtLgorKyAgIE5PX1ZFTkRPUl9IQUNLIGlzIGZvciBpbnRlcm5hbCB1c2U7IGNhbGxlciBtdXN0IGNhbGwgd2l0aCAwLiAqLworIHN0YXRpYyBjaGFyICoKKy1jYW5vbl9ob3N0X3RyaXBsZXQgKGNvbnN0IGNoYXIgKnRyaXBsZXQpCisrY2Fub25faG9zdF90cmlwbGV0IChjb25zdCBjaGFyICp0cmlwbGV0LCBpbnQgbm9fdmVuZG9yX2hhY2spCisgeworICAgc3RydWN0IHsKKyAgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICAgY29uc3QgY2hhciAqYWxpYXM7CisgICB9IHRibFtdID0geworLSAgICB7Imk0ODYtcGMtbGludXgtZ251IiwgImk2ODYtcGMtbGludXgtZ251IiB9LAorKyAgICB7Imk0ODYtcGMtbGludXgtZ251IiwgImk2ODYtdW5rbm93bi1saW51eC1nbnUiIH0sCisgICAgIHsiaTU4Ni1wYy1saW51eC1nbnUiIH0sCistICAgIHsiaTQ4Ni1wYy1nbnUiLCAiaTY4Ni1wYy1nbnUifSwKKysgICAgeyJpNjg2LXBjLWxpbnV4LWdudSIgfSwKKysgICAgeyJhcmMtb2UtbGludXgtdWNsaWJjIiB9LCAvKiBPdGhlciBDUFUgYnV0IHNhbWUgc3RydWN0LiAgKi8KKysKKysgICAgeyJpNDg2LXBjLWdudSIsICJpNjg2LXVua25vd24tZ251In0sCisgICAgIHsiaTU4Ni1wYy1nbnUifSwKKy0gICAgeyJpNDg2LXBjLWtmcmVlYnNkLWdudSIsICJpNjg2LXBjLWtmcmVlYnNkLWdudSJ9LAorKyAgICB7Imk2ODYtcGMtZ251In0sCisrCisrICAgIHsiaTQ4Ni1wYy1rZnJlZWJzZC1nbnUiLCAiaTY4Ni11bmtub3duLWtmcmVlYnNkLWdudSJ9LAorICAgICB7Imk1ODYtcGMta2ZyZWVic2QtZ251In0sCisrICAgIHsiaTY4Ni1wYy1rZnJlZWJzZC1nbnUifSwKKyAKKy0gICAgeyJ4ODZfNjQtcGMtbGludXgtZ251aGFyZGVuZWQxIiwgIng4Nl82NC1wYy1saW51eC1nbnUiIH0sCisrICAgIHsieDg2XzY0LXBjLWxpbnV4LWdudWhhcmRlbmVkMSIsICJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnUiIH0sCisrICAgIHsieDg2XzY0LXBjLWxpbnV4LWdudSIgfSwKKyAKKyAgICAgeyJwb3dlcnBjLXVua25vd24tbGludXgtZ251c3BlIiwgInBvd2VycGMtdW5rbm93bi1saW51eC1nbnUiIH0sCisgCitAQCAtOTgsNiArMTE2LDcgQEAgY2Fub25faG9zdF90cmlwbGV0IChjb25zdCBjaGFyICp0cmlwbGV0KQorICAgfTsKKyAgIGludCBpOworICAgY29uc3QgY2hhciAqbGFzdGFsaWFzID0gTlVMTDsKKysgIGNvbnN0IGNoYXIgKnM7CisgCisgICBmb3IgKGk9MDsgdGJsW2ldLm5hbWU7IGkrKykKKyAgICAgeworQEAgLTExMCw2ICsxMjksMzYgQEAgY2Fub25faG9zdF90cmlwbGV0IChjb25zdCBjaGFyICp0cmlwbGV0KQorICAgICAgICAgICByZXR1cm4geHN0cmR1cCAobGFzdGFsaWFzKTsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgZm9yIChpPTAsIHM9dHJpcGxldDsgKnM7IHMrKykKKysgICAgaWYgKCpzID09ICctJykKKysgICAgICBpKys7CisrICBpZiAoaSA+IDIgJiYgIW5vX3ZlbmRvcl9oYWNrKQorKyAgICB7CisrICAgICAgLyogV2UgaGF2ZSBhIDQgcGFydCAidHJpcGxldCI6IENQVS1WRU5ET1ItS0VSTkVMLVNZU1RFTSB3aGVyZQorKyAgICAgICAqIHRoZSBsYXN0IHR3byBwYXJ0cyByZXBsYWNlIHRoZSBPUyBwYXJ0IG9mIGEgcmVhbCB0cmlwbGV0LgorKyAgICAgICAqIFRoZSBWRU5ET1IgcGFydCBpcyB0aGVuIGluIGdlbmVyYWwgdXNlbGVzcyBiZWNhdXNlCisrICAgICAgICogS0VSTkVMLVNZU1RFTSBpcyBzcGVjaWZpYyBlbm91Z2guICBXZSBub3cgZG8gYSBzZWNvbmQgcGFzcyBieQorKyAgICAgICAqIHJlcGxhY2luZyBWRU5ET1Igd2l0aCAidW5rbm93biIuICAqLworKyAgICAgIGNoYXIgKnA7CisrICAgICAgY2hhciAqYnVmID0geG1hbGxvYyAoc3RybGVuICh0cmlwbGV0KSArIDcgKyAxKTsKKysKKysgICAgICBmb3IgKHA9YnVmLHM9dHJpcGxldCxpPTA7ICpzOyBzKyspCisrICAgICAgICB7CisrICAgICAgICAgICpwKysgPSAqczsKKysgICAgICAgICAgaWYgKCpzID09ICctJyAmJiArK2kgPT0gMSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBtZW1jcHkgKHAsICJ1bmtub3duLSIsOCk7CisrICAgICAgICAgICAgICBwICs9IDg7CisrICAgICAgICAgICAgICBmb3IgKHMrKzsgKnMgIT0gJy0nOyBzKyspCisrICAgICAgICAgICAgICAgIDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgKnAgPSAwOworKyAgICAgIHAgPSBjYW5vbl9ob3N0X3RyaXBsZXQgKGJ1ZiwgMSk7CisrICAgICAgeGZyZWUgKGJ1Zik7CisrICAgICAgcmV0dXJuIHA7CisrICAgIH0KKysKKyAgIHJldHVybiB4c3RyZHVwICh0cmlwbGV0KTsKKyB9CisgCitAQCAtNTU4LDcgKzYwNyw3IEBAIHdyaXRlX3NwZWNpYWwgKGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgbG5yLCBjb25zdCBjaGFyICp0YWcpCisgaW50CisgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIHsKKy0gIEZJTEUgKmZwOworKyAgRklMRSAqZnAgPSBOVUxMOworICAgY2hhciBsaW5lW0xJTkVTSVpFXTsKKyAgIGludCBsbnIgPSAwOworICAgY29uc3QgY2hhciAqZm5hbWUsICpzOworQEAgLTU3MSwxMSArNjIwLDIyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICBhcmdjLS07IGFyZ3YrKzsKKyAgICAgfQorIAorLSAgaWYgKGFyZ2MgIT0gNikKKysgIGlmIChhcmdjID09IDEpCisrICAgIHsKKysgICAgICAvKiBQcmludCBqdXN0IHRoZSBjYW5vbmljYWxpemVkIGhvc3QgdHJpcGxldC4gICovCisrICAgICAgaG9zdF90cmlwbGV0ID0gY2Fub25faG9zdF90cmlwbGV0IChhcmd2WzBdLCAwKTsKKysgICAgICBwcmludGYgKCIlc1xuIiwgaG9zdF90cmlwbGV0KTsKKysgICAgICBnb3RvIGxlYXZlOworKyAgICB9CisrICBlbHNlIGlmIChhcmdjID09IDYpCisrICAgIDsgLyogU3RhbmRhcmQgb3BlcmF0aW9uLiAgKi8KKysgIGVsc2UKKyAgICAgeworICAgICAgIGZwdXRzICgidXNhZ2U6ICIgUEdNCisgICAgICAgICAgICAgICIgaG9zdF9vcyBob3N0X3RyaXBsZXQgdGVtcGxhdGUuaCBjb25maWcuaCIKKy0gICAgICAgICAgICAgIiB2ZXJzaW9uIHZlcnNpb25fbnVtYmVyXG4iLAorKyAgICAgICAgICAgICAiIHZlcnNpb24gdmVyc2lvbl9udW1iZXJcbiIKKysgICAgICAgICAgICAgIiAgICAgICAiIFBHTQorKyAgICAgICAgICAgICAiIGhvc3RfdHJpcGxldFxuIiwKKyAgICAgICAgICAgICAgc3RkZXJyKTsKKyAgICAgICByZXR1cm4gMTsKKyAgICAgfQorQEAgLTU4Niw3ICs2NDYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICBoZHJfdmVyc2lvbiA9IGFyZ3ZbNF07CisgICBoZHJfdmVyc2lvbl9udW1iZXIgPSBhcmd2WzVdOworIAorLSAgaG9zdF90cmlwbGV0ID0gY2Fub25faG9zdF90cmlwbGV0IChob3N0X3RyaXBsZXRfcmF3KTsKKysgIGhvc3RfdHJpcGxldCA9IGNhbm9uX2hvc3RfdHJpcGxldCAoaG9zdF90cmlwbGV0X3JhdywgMCk7CisgCisgICBzcmNkaXIgPSBtYWxsb2MgKHN0cmxlbiAoZm5hbWUpICsgMiArIDEpOworICAgaWYgKCFzcmNkaXIpCitAQCAtNjc3LDEzICs3MzcsMTUgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgICJFbmQ6XG4iCisgICAgICAgICAgIiovXG4iLCBzdGRvdXQpOworIAorKyBsZWF2ZToKKyAgIGlmIChmZXJyb3IgKHN0ZG91dCkpCisgICAgIHsKKyAgICAgICBmcHJpbnRmIChzdGRlcnIsIFBHTSAiOiBlcnJvciB3cml0aW5nIHRvIHN0ZG91dDogJXNcbiIsIHN0cmVycm9yIChlcnJubykpOworICAgICAgIHJldHVybiAxOworICAgICB9CisgCistICBmY2xvc2UgKGZwKTsKKysgIGlmIChmcCkKKysgICAgZmNsb3NlIChmcCk7CisgCisgICB4ZnJlZSAoaG9zdF90cmlwbGV0KTsKKyAgIHJldHVybiAwOworZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtZ251LmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tZ251LmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni1wYy1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1nbnUuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMta2ZyZWVic2QtZ251LmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24ta2ZyZWVic2QtZ251LmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni1wYy1rZnJlZWJzZC1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1rZnJlZWJzZC1nbnUuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtcGMtbGludXgtZ251LmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi5pNjg2LXVua25vd24tbGludXgtZ251LmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuaTY4Ni1wYy1saW51eC1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLmk2ODYtdW5rbm93bi1saW51eC1nbnUuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLnMzOTB4LWlibS1saW51eC1nbnUuaCBiL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLnMzOTB4LXVua25vd24tbGludXgtZ251LmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuczM5MHgtaWJtLWxpbnV4LWdudS5oCityZW5hbWUgdG8gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuczM5MHgtdW5rbm93bi1saW51eC1nbnUuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1rZnJlZWJzZC1nbnUuaCBiL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWtmcmVlYnNkLWdudS5oCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1rZnJlZWJzZC1nbnUuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWtmcmVlYnNkLWdudS5oCitkaWZmIC0tZ2l0IGEvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudS5oIGIvc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251LmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LWdudS5oCityZW5hbWUgdG8gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXVua25vd24tbGludXgtZ251LmgKK2RpZmYgLS1naXQgYS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtZ251eDMyLmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnV4MzIuaAorc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtcGMtbGludXgtZ251eDMyLmgKK3JlbmFtZSB0byBzcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1nbnV4MzIuaAorZGlmZiAtLWdpdCBhL3NyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC1wYy1saW51eC1tdXNsLmggYi9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi54ODZfNjQtdW5rbm93bi1saW51eC1tdXNsLmgKK3NpbWlsYXJpdHkgaW5kZXggMTAwJQorcmVuYW1lIGZyb20gc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIueDg2XzY0LXBjLWxpbnV4LW11c2wuaAorcmVuYW1lIHRvIHNyYy9zeXNjZmcvbG9jay1vYmotcHViLng4Nl82NC11bmtub3duLWxpbnV4LW11c2wuaAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDItc3lzY2ZnLUFkZC1zdXBwb3J0LWZvci1hcmMtdW5rbm93bi1saW51eC1nbnUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMi1zeXNjZmctQWRkLXN1cHBvcnQtZm9yLWFyYy11bmtub3duLWxpbnV4LWdudS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTc2NTJmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLzAwMDItc3lzY2ZnLUFkZC1zdXBwb3J0LWZvci1hcmMtdW5rbm93bi1saW51eC1nbnUucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhZTZhM2YyMDM0NWRhYzRiOWRhYWI4YzM5YWMyZDNmYjNmMmMyMWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2VybmVyIEtvY2ggPHdrQGdudXBnLm9yZz4KK0RhdGU6IEZyaSwgMjEgU2VwIDIwMTggMTQ6Mzc6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCBMaWJncGctZXJyb3JdIHN5c2NmZzogQWRkIHN1cHBvcnQgZm9yIGFyYy11bmtub3duLWxpbnV4LWdudQorCisqIHNyYy9ta2hlYWRlci5jIChjYW5vbl9ob3N0X3RyaXBsZXQpOiBBZGQgdG8gdGFibGUuCistLQorCitOb3RlIHRoYXQgdW5rbm93biBpbiB0aGUgYWJvdmUgdHJpcGxldCBpcyBhY3R1YWxseSBhIHdpbGRjYXJkIGZvciA0CitwYXJ0IHRyaXBsZXRzLgorCitTaWduZWQtb2ZmLWJ5OiBXZXJuZXIgS29jaCA8d2tAZ251cGcub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LmdudXBnLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1saWJncGctZXJyb3IuZ2l0O2E9Y29tbWl0O2g9ZjRmMGRhNzRmNTI2ZDdlMzVjZWRiYzJlOTM0NTRkZjY0NDBkYmZhNV0KKy0tLQorIHNyYy9ta2hlYWRlci5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWtoZWFkZXIuYyBiL3NyYy9ta2hlYWRlci5jCitpbmRleCA3YTM4YTFiZWMxYTQuLmE0ODY2ZTk2ZWY0MyAxMDA2NDQKKy0tLSBhL3NyYy9ta2hlYWRlci5jCisrKysgYi9zcmMvbWtoZWFkZXIuYworQEAgLTkyLDcgKzkyLDggQEAgY2Fub25faG9zdF90cmlwbGV0IChjb25zdCBjaGFyICp0cmlwbGV0LCBpbnQgbm9fdmVuZG9yX2hhY2spCisgICAgIHsiaTQ4Ni1wYy1saW51eC1nbnUiLCAiaTY4Ni11bmtub3duLWxpbnV4LWdudSIgfSwKKyAgICAgeyJpNTg2LXBjLWxpbnV4LWdudSIgfSwKKyAgICAgeyJpNjg2LXBjLWxpbnV4LWdudSIgfSwKKy0gICAgeyJhcmMtb2UtbGludXgtdWNsaWJjIiB9LCAvKiBPdGhlciBDUFUgYnV0IHNhbWUgc3RydWN0LiAgKi8KKysgICAgeyJhcmMtb2UtbGludXgtZ251IiAgICB9LCAvKiBPdGhlciBDUFUgYnV0IHNhbWUgc3RydWN0LiAgKi8KKysgICAgeyJhcmMtb2UtbGludXgtdWNsaWJjIiB9LCAvKiBhbmQgdWNsaWJjIGlzIGFsc28gdGhlIHNhbWUuICAqLworIAorICAgICB7Imk0ODYtcGMtZ251IiwgImk2ODYtdW5rbm93bi1nbnUifSwKKyAgICAgeyJpNTg2LXBjLWdudSJ9LAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL3BrZ2NvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci9wa2djb25maWcucGF0Y2gKaW5kZXggOWZmZWVkYi4uMzA2NjYxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL3BrZ2NvbmZpZy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvcGtnY29uZmlnLnBhdGNoCkBAIC0xLDE1ICsxLDI2IEBACi0KLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3Lm1uLWxvZ2lzdGlrLmRlL3Vuc3VwcG9ydGVkL3B4YTI1MC9wYXRjaGVyCi0jCitGcm9tIGVjMzA5ZTIwYjVhMjdkNDJhNWZiOTE1YzMyOGQ2MWU5MjRhYjVmMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IE1hciAyMDE4IDE1OjEyOjE3ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN1cHBvcnQgcGtnY29uZmlnCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbGliZ3BnLWVycm9yLTEuMTcvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliZ3BnLWVycm9yLTEuMTcub3JpZy9jb25maWd1cmUuYWMKLSsrKyBsaWJncGctZXJyb3ItMS4xNy9jb25maWd1cmUuYWMKLUBAIC01MjksNiArNTI5LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtzcmMvTWFrZWZpbGUgdGVzdHMvTWFrZQorUmViYXNlIHRvIDEuMjgKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICB8ICAxICsKKyBzcmMvTWFrZWZpbGUuYW0gICAgIHwgIDQgKystCisgc3JjL2dwZy1lcnJvci5tNCAgICB8IDcxICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3JjL2dwZy1lcnJvci5wYy5pbiB8IDExICsrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9ncGctZXJyb3IucGMuaW4KKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYWNhOTMwMC4uZjc3OTRlOSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjIxLDYgKzYyMSw3IEBAIEFDX0NPTkZJR19GSUxFUyhbc3JjL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlXSkKICBBQ19DT05GSUdfRklMRVMoW2xhbmcvTWFrZWZpbGUgbGFuZy9jbC9NYWtlZmlsZSBsYW5nL2NsL2dwZy1lcnJvci5hc2RdKQogIEFDX0NPTkZJR19GSUxFUyhbc3JjL3ZlcnNpb25pbmZvLnJjIHNyYy9ncGctZXJyb3IudzMyLW1hbmlmZXN0XSkKICBBQ19DT05GSUdfRklMRVMoW3NyYy9ncGctZXJyb3ItY29uZmlnXSwgW2NobW9kICt4IHNyYy9ncGctZXJyb3ItY29uZmlnXSkKQEAgLTE3LDMzICsyOCwzMyBAQAogIAogIEFDX09VVFBVVAogIAotSW5kZXg6IGxpYmdwZy1lcnJvci0xLjE3L3NyYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmdwZy1lcnJvci0xLjE3Lm9yaWcvc3JjL01ha2VmaWxlLmFtCi0rKysgbGliZ3BnLWVycm9yLTEuMTcvc3JjL01ha2VmaWxlLmFtCi1AQCAtNzUsNiArNzUsOCBAQCBub2Rpc3RfaW5jbHVkZV9IRUFERVJTID0gZ3BnLWVycm9yLmgKLSBiaW5fU0NSSVBUUyA9IGdwZy1lcnJvci1jb25maWcKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDI2OGMyYWIuLjk1Zjg0NTkgMTAwNjQ0CistLS0gYS9zcmMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9NYWtlZmlsZS5hbQorQEAgLTg3LDYgKzg3LDggQEAgYmluX1NDUklQVFMgPSBncGctZXJyb3ItY29uZmlnCisgbm9kaXN0X2Jpbl9TQ1JJUFRTID0gZ3BncnQtY29uZmlnCiAgbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCi0gbTRkYXRhX0RBVEEgPSBncGctZXJyb3IubTQKKyBtNGRhdGFfREFUQSA9IGdwZy1lcnJvci5tNCBncGdydC5tNAogK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKICtwa2djb25maWdfREFUQSA9IGdwZy1lcnJvci5wYwogIAogIEVYVFJBX0RJU1QgPSBta3N0cnRhYmxlLmF3ayBlcnItc291cmNlcy5oLmluIGVyci1jb2Rlcy5oLmluIFwKICAJbWtlcnJub3MuYXdrIGVycm5vcy5pbiBSRUFETUUgXAotQEAgLTgyLDcgKzg0LDcgQEAgRVhUUkFfRElTVCA9IG1rc3RydGFibGUuYXdrIGVyci1zb3VyY2VzLgorQEAgLTk0LDcgKzk2LDcgQEAgRVhUUkFfRElTVCA9IG1rc3RydGFibGUuYXdrIGVyci1zb3VyY2VzLmguaW4gZXJyLWNvZGVzLmguaW4gXAogIAlta2hlYWRlci5jIGdwZy1lcnJvci5oLmluIG1rdzMyZXJybWFwLmMgdzMyLWFkZC5oIHczMmNlLWFkZC5oIFwKLSAJZXJyLXNvdXJjZXMuaCBlcnItY29kZXMuaCBncGctZXJyb3ItY29uZmlnLmluIGdwZy1lcnJvci5tNCBcCisgCWVyci1zb3VyY2VzLmggZXJyLWNvZGVzLmggZ3BnLWVycm9yLWNvbmZpZy5pbiBncGctZXJyb3IubTQgZ3BncnQubTQgXAogIAlncGctZXJyb3IudmVycyBncGctZXJyb3IuZGVmLmluIFwKIC0gICAgICAgIHZlcnNpb25pbmZvLnJjLmluIGdwZy1lcnJvci53MzItbWFuaWZlc3QuaW4gXAogKyAgICAgICAgdmVyc2lvbmluZm8ucmMuaW4gZ3BnLWVycm9yLnczMi1tYW5pZmVzdC5pbiBncGctZXJyb3IucGMgXAogIAkkKGxvY2tfb2JqX3B1YikKICAKICBCVUlMVF9TT1VSQ0VTID0gZXJyLXNvdXJjZXMuaCBlcnItY29kZXMuaCBjb2RlLXRvLWVycm5vLmggY29kZS1mcm9tLWVycm5vLmggXAotSW5kZXg6IGxpYmdwZy1lcnJvci0xLjE3L3NyYy9ncGctZXJyb3IubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJncGctZXJyb3ItMS4xNy5vcmlnL3NyYy9ncGctZXJyb3IubTQKLSsrKyBsaWJncGctZXJyb3ItMS4xNy9zcmMvZ3BnLWVycm9yLm00Ci1AQCAtMjYsNzMgKzI2LDEzIEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2EKK2RpZmYgLS1naXQgYS9zcmMvZ3BnLWVycm9yLm00IGIvc3JjL2dwZy1lcnJvci5tNAoraW5kZXggNjBjODhkOC4uMmVmN2UzZSAxMDA2NDQKKy0tLSBhL3NyYy9ncGctZXJyb3IubTQKKysrKyBiL3NyYy9ncGctZXJyb3IubTQKK0BAIC0yNiw3MyArMjYsMTMgQEAgZG5sIGlzIGFkZGVkIHRvIHRoZSBncGdfY29uZmlnX3NjcmlwdF93YXJuIHZhcmlhYmxlLgogIGRubAogIEFDX0RFRlVOKFtBTV9QQVRIX0dQR19FUlJPUl0sCiAgWyBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCkBAIC0xMzIsMTAgKzE0MywxMSBAQAogICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQogICAgZmkKICAgIEFDX1NVQlNUKEdQR19FUlJPUl9DRkxBR1MpCi1JbmRleDogbGliZ3BnLWVycm9yLTEuMTcvc3JjL2dwZy1lcnJvci5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZGlmZiAtLWdpdCBhL3NyYy9ncGctZXJyb3IucGMuaW4gYi9zcmMvZ3BnLWVycm9yLnBjLmluCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmMwYjE3NAogLS0tIC9kZXYvbnVsbAotKysrIGxpYmdwZy1lcnJvci0xLjE3L3NyYy9ncGctZXJyb3IucGMuaW4KKysrKyBiL3NyYy9ncGctZXJyb3IucGMuaW4KIEBAIC0wLDAgKzEsMTEgQEAKICtwcmVmaXg9QHByZWZpeEAKICtleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACkBAIC0xNDgsMyArMTYwLDYgQEAKICtWZXJzaW9uOiBAVkVSU0lPTkAKICtMaWJzOiAtTCR7bGliZGlyfSAtbGdwZy1lcnJvcgogK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc0ZjA3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2VuZGxpbmU9MjM7bWQ1PWJlYWUxZTQ0ZDhkNWMyNjVkMTk0NzYwMjc2MDMzYTdjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7ZW5kbGluZT0yMDttZDU9ODcyYjIzODlmZTliYWU3ZmZiODBkMmI5MTIyNWFmYmMiCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotCSAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTIxN2VmM2U3NmE3Mjc1YTJhM2I1NjlhMTJkZGM5ODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY5M2FhYzZmZWNiN2RhMmI5Mjg3MWJiOWVlMzMwMzJiZTZhODdiMTc0ZjU0YWJmOGRkZjA5MTFhMjJkMjlkMiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyCi1DUFBGTEFHUyArPSAiLVAiCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JVEFSR0VUX0ZJTEU9bGludXgtZ251Ci0JaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgotCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgotCQlUQVJHRVRfRklMRT0KLQllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgotCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KLQlmaQotCi0JY2FzZSAke1RBUkdFVF9BUkNIfSBpbgotCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7Ci0JICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7Ci0JICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXBjLWxpbnV4LWdudSA7OwotCSAgbWlwczY0KikgICAgVFVQTEU9bWlwczY0ZWwtdW5rbm93bi1saW51eC1nbnVhYmk2NCA7OwotCSAgbWlwcyplbCkgICAgVFVQTEU9bWlwc2VsLXVua25vd24tbGludXgtZ251IDs7Ci0JICBtaXBzKikgICAgICBUVVBMRT1taXBzLXVua25vd24tbGludXgtZ251IDs7Ci0JICB4ODZfNjQpICAgICBUVVBMRT14ODZfNjQtcGMtbGludXgtZ251IDs7Ci0JICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OyAKLQllc2FjCi0KLQlpZiBbIC1uICIkVEFSR0VUX0ZJTEUiIF07IHRoZW4KLQkJY3AgJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVFVQTEUuaCBcCi0JCQkke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUQVJHRVRfRklMRS5oCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyB3ZSBkb24ndCBoYXZlIGNvbW1vbiBsaXNwIGluIE9FCi0Jcm0gLXJmICIke0R9JHtkYXRhZGlyfS9jb21tb24tbGlzcC8iCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGdwZy1lcnJvci5oIGdwZ3J0LmgKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwZy1lcnJvci9lcnJvcnJlZi50eHQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU1MjAwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjMyLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PTUyNGQ0ZTgxMGM0ZGNkYzM4ZTRmYTI4ZTcwYTEzYmY4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9ZjAxY2RmY2Y3NDdhZjUzODA1OTBjZmQ5YmJmZWFhZjciCisKKworU0VDVElPTiA9ICJsaWJzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjZmctU3VwcG9ydC1BUkMtQ1BVcy1hbmQtc2ltcGxpZnktYWxpYXNpbmctdGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1zeXNjZmctQWRkLXN1cHBvcnQtZm9yLWFyYy11bmtub3duLWxpbnV4LWdudS5wYXRjaCBcCisJICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZWYzZDkyOGE1YTQ1M2ZhNzAxZWNjM2JiMjJiZTFjNjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM0NWM1ZTczY2MyMzMyZjhkNTBkYjg0YTIyODBhYmZiMWQ4ZjZkNGYxODU4YjlkYWEzMDQwNGRiNDQ1NDBjYSIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZ3BncnQtY29uZmlnIgorCitDUFBGTEFHUyArPSAiLVAiCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJVEFSR0VUX0ZJTEU9bGludXgtZ251CisJaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgorCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfQVJDSH0gPSAiYXJjIiBdOyB0aGVuCisJCSMgQVJDIHN5c2NmZyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgYWxpYXNlZCB0byBpNjg2LXBjLWxpbnV4LWdudQorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgorCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KKwlmaQorCisJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXVua25vd24tbGludXgtZ251OzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NCkgICAgICBUVVBMRT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHBwYzY0bGUpICAgIFRVUExFPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OworCWVzYWMKKworCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgorCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKKwkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZ3BnLWVycm9yLmggZ3BncnQuaAorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMi4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgppbmRleCBkY2MyMWNjLi5kYWE0N2FiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8yLjAuMC5iYgpAQCAtMTcsMyArMTcsMTAgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgogCiBpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworICAgIHNlZCAtaSBcCisgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKKyAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbFRhcmdldHMtbm9jb25maWcuY21ha2UKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZjMmQ2My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCi1uZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKLWxpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKLWRlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAotIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKLW5vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKLVNVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTEyZDU1ZTE1YTBjNmRhNWM2NDViYTQwMzgyYmQzMjkzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkM2FkZjRiMTMwZWVkODU0YTUzMDM5MGYwMDAyMGE2NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MGJkNDFjNjA1ZDMwZTM3NDU3NzFlYjgxOTI4ZDc3OWYxNTgwODFhNTFiMmYzMTRiYmNjMWY3M2RlNTc3M2RiIgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlMiIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgotCi1QUk9WSURFUyArPSAicGNyZTIiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCi0gICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKLSAgICAtLXdpdGgtbGluay1zaXplPTIgXAotICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCi0gICAgLS1lbmFibGUtcGNyZTItMTYgXAotICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKLSIKLSMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCi0jIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCi1CVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKLUNGTEFHUyArPSAiLURfUkVFTlRSQU5UIgotQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgotCi1leHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgotCi1QQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCi0KLVNVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKLVNVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgotU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCi0KLUZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgotRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCi1GSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKLUZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCi1GSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKLUZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTBjMzEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMxLmJiCkBAIC0wLDAgKzEsNjEgQEAKK0RFU0NSSVBUSU9OID0gIlRoZXJlIGFyZSB0d28gbWFqb3IgdmVyc2lvbnMgb2YgdGhlIFBDUkUgbGlicmFyeS4gVGhlIFwKK25ld2VzdCB2ZXJzaW9uIGlzIFBDUkUyLCB3aGljaCBpcyBhIHJlLXdvcmtpbmcgb2YgdGhlIG9yaWdpbmFsIFBDUkUgXAorbGlicmFyeSB0byBwcm92aWRlIGFuIGVudGlyZWx5IG5ldyBBUEkuIFRoZSBvcmlnaW5hbCwgdmVyeSB3aWRlbHkgXAorZGVwbG95ZWQgUENSRSBsaWJyYXJ5J3MgQVBJIGFuZCBmZWF0dXJlIGFyZSBzdGFibGUsIGZ1dHVyZSByZWxlYXNlcyBcCisgd2lsbCBiZSBmb3IgYnVnZml4ZXMgb25seS4gQWxsIG5ldyBmdXR1cmUgZmVhdHVyZXMgd2lsbCBiZSB0byBQQ1JFMiwgXAorbm90IHRoZSBvcmlnaW5hbCBQQ1JFIDgueCBzZXJpZXMuIgorU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyB2ZXJzaW9uIDIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZjVlNGJkZTlmZDA0OTNkMDk2N2I0ZGJhOTg5OTU5MGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZTItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImUwYjkxYzg5MWEzYzQ5MDUwZjdmZDE1ZGUzM2QwYmE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwN2Q1Mzg3MDRhYTY1ZTQ3N2I2YTM5MmIzMmZmOWZjNWVkZjc1YWI5YTQwZGRmYzg3NjE4NmM0ZmY0ZDY4YWMiCisKK0NWRV9QUk9EVUNUID0gInBjcmUyIgorCitTID0gIiR7V09SS0RJUn0vcGNyZTItJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlMiIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZTItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKKyAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAorICAgIC0td2l0aC1saW5rLXNpemU9MiBcCisgICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKKyAgICAtLWVuYWJsZS1wY3JlMi0xNiBcCisgICAgLS1lbmFibGUtcGNyZTItMzIgXAorIgorIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KKyMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KK0JVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0vc3JjIgorQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCitDWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCisKK2V4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlMi0xNiBsaWJwY3JlMi0zMiBwY3JlMmdyZXAgcGNyZTJncmVwLWRvYyBwY3JlMnRlc3QgcGNyZTJ0ZXN0LWRvYyIKKworU1VNTUFSWV9wY3JlMmdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgorU1VNTUFSWV9wY3JlMmdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmUydGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmUydGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKKworRklMRVNfbGlicGNyZTItMTYgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTE2LnNvLioiCitGSUxFU19saWJwY3JlMi0zMiA9ICIke2xpYmRpcn0vbGlicGNyZTItMzIuc28uKiIKK0ZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgorRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKK0ZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgorRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxODdjMDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAotZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCi1oYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCi10byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTYwZGEzMmQ4NGQwNjdmNTNlMjIwNzFjNGVjYjQzODRkIgotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzE2MGQyMjcyM2IxNjcwNDQ3MzQxYjA4YzU4OTgxYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTYyYzdlYWM1YWU3YzBlNzI4NmRiNjFmZjgyOTEyZTFjMGI3YTBjMTM3MDY2MTZlOTRhN2RkNzI5MzIxYjUzMCIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZSIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKLQotUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgotUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgotUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgotUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKLVBBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCi0gICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKLSAgICAtLWVuYWJsZS11dGYgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSIKLQotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCi0KLVNVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgotU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKLVNVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgotRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKLUZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKLUZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgotRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgotRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAotCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKLQlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCi0JICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCi0JZG9uZQotCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKLQkgIGRvIGNwICR7U30vJGkgJHQ7IFwKLQlkb25lCi0JIyBTa2lwIHRoZSBmcl9GUiBsb2NhbGUgdGVzdC4gSWYgdGhlIGxvY2FsZSBmcl9GUiBpcyBmb3VuZCwgaXQgaXMgdGVzdGVkLgotCSMgSWYgbm90IGZvdW5kLCB0aGUgdGVzdCBpcyBza2lwcGVkLiBUaGUgdGVzdCBwcm9ncmFtIGFzc3VtZXMgZnJfRlIgaXMgbm9uLVVURi04Ci0JIyBsb2NhbGUgc28gdGhlIHRlc3QgZmFpbHMgaWYgZnJfRlIgaXMgVVRGLTggbG9jYWxlLgotCXNlZCAtaSAtZSAnczpkbzM9eWVzOmRvMz1ubzpnJyAke0R9JHtQVEVTVF9QQVRIfS9SdW5UZXN0IAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40Mi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E0ODhjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDIuYmIKQEAgLTAsMCArMSw4NyBAQAorREVTQ1JJUFRJT04gPSAiVGhlIFBDUkUgbGlicmFyeSBpcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBpbXBsZW1lbnQgcmVndWxhciBcCitleHByZXNzaW9uIHBhdHRlcm4gbWF0Y2hpbmcgdXNpbmcgdGhlIHNhbWUgc3ludGF4IGFuZCBzZW1hbnRpY3MgYXMgUGVybCA1LiBQQ1JFIFwKK2hhcyBpdHMgb3duIG5hdGl2ZSBBUEksIGFzIHdlbGwgYXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb3JyZXNwb25kIFwKK3RvIHRoZSBQT1NJWCByZWd1bGFyIGV4cHJlc3Npb24gQVBJLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZmM1MDI2NDAzYjQ0Yzg2OGMyNWZjOTU0NmY3ZmViMDUiCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwODViNmFhMjUzZTBmOTFjYWU3MGIzY2RiZThjMWFjMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyY2QwNGI3Yzg4NzgwOGJlMDMwMjU0ZThkNzdkZTExZDNmZTlkNDUwNWMzOWQ0YjE1ZDI2NjRmZmU4YmY5MzAxIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlIgorCitTID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKKworUFJPVklERVMgKz0gInBjcmUiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitQQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIgorCitQQUNLQUdFQ09ORklHW3BjcmU4XSA9ICItLWVuYWJsZS1wY3JlOCwtLWRpc2FibGUtcGNyZTgiCitQQUNLQUdFQ09ORklHW3BjcmUxNl0gPSAiLS1lbmFibGUtcGNyZTE2LC0tZGlzYWJsZS1wY3JlMTYiCitQQUNLQUdFQ09ORklHW3BjcmUzMl0gPSAiLS1lbmFibGUtcGNyZTMyLC0tZGlzYWJsZS1wY3JlMzIiCitQQUNLQUdFQ09ORklHW3BjcmV0ZXN0LXJlYWRsaW5lXSA9ICItLWVuYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSwtLWRpc2FibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUscmVhZGxpbmUsIgorUEFDS0FHRUNPTkZJR1t1bmljb2RlLXByb3BlcnRpZXNdID0gIi0tZW5hYmxlLXVuaWNvZGUtcHJvcGVydGllcywtLWRpc2FibGUtdW5pY29kZS1wcm9wZXJ0aWVzIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWVuYWJsZS1uZXdsaW5lLWlzLWxmIFwKKyAgICAtLWVuYWJsZS1yZWJ1aWxkLWNoYXJ0YWJsZXMgXAorICAgIC0tZW5hYmxlLXV0ZiBcCisgICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKKyAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAorIgorCisjIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bworIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgorQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfSIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZWNwcCBsaWJwY3JlcG9zaXggcGNyZWdyZXAgcGNyZWdyZXAtZG9jIHBjcmV0ZXN0IHBjcmV0ZXN0LWRvYyIKKworU1VNTUFSWV9saWJwY3JlY3BwID0gIiR7U1VNTUFSWX0gLSBDKysgd3JhcHBlciBmdW5jdGlvbnMiCitTVU1NQVJZX2xpYnBjcmVwb3NpeCA9ICIke1NVTU1BUll9IC0gQyB3cmFwcGVyIGZ1bmN0aW9ucyBiYXNlZCBvbiB0aGUgUE9TSVggcmVnZXggQVBJIgorU1VNTUFSWV9wY3JlZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCitTVU1NQVJZX3BjcmVncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JldGVzdCA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCitTVU1NQVJZX3BjcmV0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgorCitGSUxFU19saWJwY3JlY3BwID0gIiR7bGliZGlyfS9saWJwY3JlY3BwLnNvLioiCitGSUxFU19saWJwY3JlcG9zaXggPSAiJHtsaWJkaXJ9L2xpYnBjcmVwb3NpeC5zby4qIgorRklMRVNfcGNyZWdyZXAgPSAiJHtiaW5kaXJ9L3BjcmVncmVwIgorRklMRVNfcGNyZWdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmVncmVwLjEiCitGSUxFU19wY3JldGVzdCA9ICIke2JpbmRpcn0vcGNyZXRlc3QiCitGSUxFU19wY3JldGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZXRlc3QuMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCXQ9JHtEfSR7UFRFU1RfUEFUSH0KKwljcCAke1dPUktESVJ9L01ha2VmaWxlICR0CisJY3AgLXIgJHtTfS90ZXN0ZGF0YSAkdAorCWZvciBpIGluIHBjcmVfc3RyaW5ncGllY2VfdW5pdHRlc3QgcGNyZWdyZXAgcGNyZXRlc3Q7IFwKKwkgIGRvIGNwICR7Qn0vLmxpYnMvJGkgJHQ7IFwKKwlkb25lCisJZm9yIGkgaW4gUnVuVGVzdCBSdW5HcmVwVGVzdCB0ZXN0LWRyaXZlcjsgXAorCSAgZG8gY3AgJHtTfS8kaSAkdDsgXAorCWRvbmUKKwkjIFNraXAgdGhlIGZyX0ZSIGxvY2FsZSB0ZXN0LiBJZiB0aGUgbG9jYWxlIGZyX0ZSIGlzIGZvdW5kLCBpdCBpcyB0ZXN0ZWQuCisJIyBJZiBub3QgZm91bmQsIHRoZSB0ZXN0IGlzIHNraXBwZWQuIFRoZSB0ZXN0IHByb2dyYW0gYXNzdW1lcyBmcl9GUiBpcyBub24tVVRGLTgKKwkjIGxvY2FsZSBzbyB0aGUgdGVzdCBmYWlscyBpZiBmcl9GUiBpcyBVVEYtOCBsb2NhbGUuCisJc2VkIC1pIC1lICdzOmRvMz15ZXM6ZG8zPW5vOmcnICR7RH0ke1BURVNUX1BBVEh9L1J1blRlc3QgCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCmluZGV4IDk5MWM5ZDguLmRkN2FkOTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE1LmJiCkBAIC0yMiwxMSArMjIsMTIgQEAKIFBBQ0tBR0VDT05GSUdbZ25vbWUzXSA9ICItRFdJVEhfR05PTUUzPXllcywtRFdJVEhfR05PTUUzPW5vIgogCiBFWFRSQV9PRUNNQUtFICs9ICIgXAotICAgIC1EV0lUSF9LREU0PW5vIFwKKyAgICAtRFdJVEhfS0RFPW5vIFwKICAgICAtRFdJVEhfTU9aSlM9bm8gXAogICAgIC1EV0lUSF9OTT1ubyBcCiAgICAgLURXSVRIX1BFUkw9bm8gXAotICAgIC1EV0lUSF9QWVRIT049bm8gXAorICAgIC1EV0lUSF9QWVRIT04yPW5vIFwKKyAgICAtRFdJVEhfUFlUSE9OMz1ubyBcCiAgICAgLURXSVRIX1dFQktJVD1ubyBcCiAgICAgLURMSUJfSU5TVEFMTF9ESVI9JHtsaWJkaXJ9IFwKICAgICAtRExJQkVYRUNfSU5TVEFMTF9ESVI9JHtsaWJleGVjZGlyfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTJlN2ZmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42MC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBIVFRQIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gaW4gQyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvbGlic291cCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUvbGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDIgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGNmODkzN2QxNjFkM2RkNzFhNjVmMTY4NGUzMTc4MjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIwZGM3NjJmMjNhYmU0ZTBkMjliNzczNzBlNTM5ZmQzNWYzMWQ4ZThlMDMxOGQ2ZGRjY2ZmMzk1YmU2OGEyMiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItLXdpdGgtZ25vbWUsLS13aXRob3V0LWdub21lIgotUEFDS0FHRUNPTkZJR1tnc3NhcGldID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXZhbGEiCi0KLSMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCi0jIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAotIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKLQotIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KLVJSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjYyLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Mi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYTNjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Mi4zLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZmJmMzBhZjVmYjYxOTBiZmFmYzVhYTZhYmNjOWRjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzEyYWRlNTQ3NDk1YzIwOTNmZjhiZGE2MWY5Yjk3MjdhOThjZmRhZTMzOWYzMjYzMjc3ZGQzOWMwNDUxMTcyIgorCitTID0gIiR7V09SS0RJUn0vbGlic291cC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKKyMgbGlic291cC1nbm9tZSBpcyBlbnRpcmVseSBkZXByZWNhdGVkIGFuZCBqdXN0IHN0dWJzIGluIDIuNDIgb253YXJkcy4gRGlzYWJsZSBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi0td2l0aC1nbm9tZSwtLXdpdGhvdXQtZ25vbWUiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdmFsYSIKKworIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKKyMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50CisjIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCitERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgorCisjIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgorUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdmYWM0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuMTAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgQyBhbmQgVW5pY29kZSBzdHJpbmdzIgorCitERVNDUklQVElPTiA9ICJUZXh0IGZpbGVzIGFyZSBub3dhZGF5cyB1c3VhbGx5IGVuY29kZWQgaW4gVW5pY29kZSwgYW5kIG1heVwKKyBjb25zaXN0IG9mIHZlcnkgZGlmZmVyZW50IHNjcmlwdHMgZnJvbSBMYXRpbiBsZXR0ZXJzIHRvIENoaW5lc2UgSGFuemlcCisgd2l0aCBtYW55IGtpbmRzIG9mIHNwZWNpYWwgY2hhcmFjdGVycyBhY2NlbnRzLCByaWdodC10by1sZWZ0IHdyaXRpbmdcCisgbWFya3MsIGh5cGhlbnMsIFJvbWFuIG51bWJlcnMsIGFuZCBtdWNoIG1vcmUuIEJ1dCB0aGUgUE9TSVggcGxhdGZvcm1cCisgQVBJcyBmb3IgdGV4dCBkbyBub3QgY29udGFpbiBhZGVxdWF0ZSBmdW5jdGlvbnMgZm9yIGRlYWxpbmcgd2l0aFwKKyBwYXJ0aWN1bGFyIHByb3BlcnRpZXMgb2YgbWFueSBVbmljb2RlIGNoYXJhY3RlcnMuIEluIGZhY3QsIHRoZSBQT1NJWFwKKyBBUElzIGZvciB0ZXh0IGhhdmUgc2V2ZXJhbCBhc3N1bXB0aW9ucyBhdCB0aGVpciBiYXNlIHdoaWNoIGRvbid0IGhvbGRcCisgZm9yIFVuaWNvZGUgdGV4dC4gIFRoaXMgbGlicmFyeSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZ1wKKyBVbmljb2RlIHN0cmluZ3MgYW5kIGZvciBtYW5pcHVsYXRpbmcgQyBzdHJpbmdzIGFjY29yZGluZyB0byB0aGUgVW5pY29kZVwKKyBzdGFuZGFyZC4gIFRoaXMgcGFja2FnZSBjb250YWlucyBkb2N1bWVudGF0aW9uLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnVuaXN0cmluZy8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJMR1BMdjMrIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT00NTtlbmRsaW5lPTY1O21kNT0wODI4N2QxNmJhOGQ4MzlmYWVkOGQyZGMxNGQ3ZDZhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvbGlidW5pc3RyaW5nLnRleGk7bWQ1PTI4N2ZhNjA3NWY3OGEzYzg1YzFhNTJiMGE5MjU0N2NkIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9pY29udi1tNC1yZW1vdmUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMGQzMjc0ZTk4MzgzOTZiMTIyMDBmOGI1NGRkYWY0M2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTgyZTViMzMzMzM5YTg4ZWE0NjA4ZTQ2MzU0NzlhMWNmYjJlMDFhYWZiOTI1ZTEyOTBiNjU3MTBkNDNmNjEwYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bmlzdHJpbmcvbGlidW5pc3RyaW5nXzAuOS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjdjYmE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZ18wLjkuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIEMgYW5kIFVuaWNvZGUgc3RyaW5ncyIKLQotREVTQ1JJUFRJT04gPSAiVGV4dCBmaWxlcyBhcmUgbm93YWRheXMgdXN1YWxseSBlbmNvZGVkIGluIFVuaWNvZGUsIGFuZCBtYXlcCi0gY29uc2lzdCBvZiB2ZXJ5IGRpZmZlcmVudCBzY3JpcHRzIGZyb20gTGF0aW4gbGV0dGVycyB0byBDaGluZXNlIEhhbnppXAotIHdpdGggbWFueSBraW5kcyBvZiBzcGVjaWFsIGNoYXJhY3RlcnMgYWNjZW50cywgcmlnaHQtdG8tbGVmdCB3cml0aW5nXAotIG1hcmtzLCBoeXBoZW5zLCBSb21hbiBudW1iZXJzLCBhbmQgbXVjaCBtb3JlLiBCdXQgdGhlIFBPU0lYIHBsYXRmb3JtXAotIEFQSXMgZm9yIHRleHQgZG8gbm90IGNvbnRhaW4gYWRlcXVhdGUgZnVuY3Rpb25zIGZvciBkZWFsaW5nIHdpdGhcCi0gcGFydGljdWxhciBwcm9wZXJ0aWVzIG9mIG1hbnkgVW5pY29kZSBjaGFyYWN0ZXJzLiBJbiBmYWN0LCB0aGUgUE9TSVhcCi0gQVBJcyBmb3IgdGV4dCBoYXZlIHNldmVyYWwgYXNzdW1wdGlvbnMgYXQgdGhlaXIgYmFzZSB3aGljaCBkb24ndCBob2xkXAotIGZvciBVbmljb2RlIHRleHQuICBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmdcCi0gVW5pY29kZSBzdHJpbmdzIGFuZCBmb3IgbWFuaXB1bGF0aW5nIEMgc3RyaW5ncyBhY2NvcmRpbmcgdG8gdGhlIFVuaWNvZGVcCi0gc3RhbmRhcmQuICBUaGlzIHBhY2thZ2UgY29udGFpbnMgZG9jdW1lbnRhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ1bmlzdHJpbmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTEdQTHYzKyB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9NDU7ZW5kbGluZT02NTttZDU9MDgyODdkMTZiYThkODM5ZmFlZDhkMmRjMTRkN2Q2YTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL2xpYnVuaXN0cmluZy50ZXhpO21kNT1lZmI4MGEzNzk5YTYwZjk1ZmVhZjgwNjYxZDRmMjA0YyBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidW5pc3RyaW5nL2xpYnVuaXN0cmluZy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtbTQtcmVtb3ZlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjRmNjg5ZTM3ZTRjM2JkNjdkZTU3ODZhYTUxZDk4YjEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY1ZTkwYzA4ZjllNTQyN2NhM2EyYzBjNTNmMTlhYTM4YjI1YzUwMDkxMzUxMGFkMjVhZmVmODY0NDhiZWE4NGEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCmluZGV4IGI5YzUzMmQuLjM2ODUxZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYwpAQCAtMTQsOCArMTQsNiBAQAogRVhUUkFfT0VDT05GX2FybSA9ICItLWVuYWJsZS1kZWJ1Zy1mcmFtZSIKIEVYVFJBX09FQ09ORl9hYXJjaDY0ID0gIi0tZW5hYmxlLWRlYnVnLWZyYW1lIgogCi1TRUNVUklUWV9MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sc3NwX25vbnNoYXJlZCAtbHNzcCIKLQogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCW9lX211bHRpbGliX2hlYWRlciBsaWJ1bndpbmQuaAogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kXzEuMi4xLmJiCmluZGV4IDM3YTc2MjQuLmU3ZmIyYjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLjEuYmIKQEAgLTIxLDMgKzIxLDUgQEAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgogCiBMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK1NFQ1VSSVRZX0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxzc3Bfbm9uc2hhcmVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2ZpbGVzL0FkZC1zdXBwb3J0LWZvci10aGUtUklTQy1WLWFyY2hpdGVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9maWxlcy9BZGQtc3VwcG9ydC1mb3ItdGhlLVJJU0MtVi1hcmNoaXRlY3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAyNjc4MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9maWxlcy9BZGQtc3VwcG9ydC1mb3ItdGhlLVJJU0MtVi1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTAsMCArMSwxNTcgQEAKK0Zyb20gZmRmYWQ4MTAwNmMyYzk2NDc4MWI2MTZmMGE3NTU3ODUwN2JlODA5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgSmVhbnNvbiA8bWplYW5zb25AZWZmaWNpb3MuY29tPgorRGF0ZTogV2VkLCAyMSBNYXIgMjAxOCAxNzozODo0MSAtMDQwMAorU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUKKworVGVzdGVkIGluIFFFTVUgMi4xMi4wLXJjMCwgcmVxdWlyZXMgLS1kaXNhYmxlLWNvbXBpbGVyLXRscyB0byBnbwordGhyb3VnaCB0aGUgYmVuY2htYXJrcyByZWxpYWJseS4KKworU2lnbmVkLW9mZi1ieTogTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNub3llcnNAZWZmaWNpb3MuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8ICAxICsKKyBpbmNsdWRlL01ha2VmaWxlLmFtICAgICAgICAgIHwgIDIgKysKKyBpbmNsdWRlL3VyY3UvYXJjaC9yaXNjdi5oICAgIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBpbmNsdWRlL3VyY3UvdWF0b21pYy9yaXNjdi5oIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdXJjdS9hcmNoL3Jpc2N2LmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91cmN1L3VhdG9taWMvcmlzY3YuaAorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkMGI0YTlhYy4uOTE0NTA4MWEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1MSw2ICsxNTEsNyBAQCBBU19DQVNFKFskaG9zdF9jcHVdLAorIAlbdGlsZSpdLCBbQVJDSFRZUEU9InRpbGUiXSwKKyAJW2hwcGEqXSwgW0FSQ0hUWVBFPSJocHBhIl0sCisgCVttNjhrXSwgW0FSQ0hUWVBFPSJtNjhrIl0sCisrCVtyaXNjdipdLCBbQVJDSFRZUEU9InJpc2N2Il0sCisgCVtBUkNIVFlQRT0idW5rbm93biJdCisgKQorIAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvTWFrZWZpbGUuYW0gYi9pbmNsdWRlL01ha2VmaWxlLmFtCitpbmRleCBkY2RmMzA0Yi4uMzY2NjdiNDMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL01ha2VmaWxlLmFtCisrKysgYi9pbmNsdWRlL01ha2VmaWxlLmFtCitAQCAtMjcsNiArMjcsNyBAQCBFWFRSQV9ESVNUID0gdXJjdS9hcmNoL2FhcmNoNjQuaCBcCisgCXVyY3UvYXJjaC9taXBzLmggXAorIAl1cmN1L2FyY2gvbmlvczIuaCBcCisgCXVyY3UvYXJjaC9wcGMuaCBcCisrCXVyY3UvYXJjaC9yaXNjdi5oIFwKKyAJdXJjdS9hcmNoL3MzOTAuaCBcCisgCXVyY3UvYXJjaC9zcGFyYzY0LmggXAorIAl1cmN1L2FyY2gvdGlsZS5oIFwKK0BAIC00Myw2ICs0NCw3IEBAIEVYVFJBX0RJU1QgPSB1cmN1L2FyY2gvYWFyY2g2NC5oIFwKKyAJdXJjdS91YXRvbWljL21pcHMuaCBcCisgCXVyY3UvdWF0b21pYy9uaW9zMi5oIFwKKyAJdXJjdS91YXRvbWljL3BwYy5oIFwKKysJdXJjdS91YXRvbWljL3Jpc2N2LmggXAorIAl1cmN1L3VhdG9taWMvczM5MC5oIFwKKyAJdXJjdS91YXRvbWljL3NwYXJjNjQuaCBcCisgCXVyY3UvdWF0b21pYy90aWxlLmggXAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXJjdS9hcmNoL3Jpc2N2LmggYi9pbmNsdWRlL3VyY3UvYXJjaC9yaXNjdi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjFmZDdkNjJiCistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3VyY3UvYXJjaC9yaXNjdi5oCitAQCAtMCwwICsxLDQ5IEBACisrI2lmbmRlZiBfVVJDVV9BUkNIX1JJU0NWX0gKKysjZGVmaW5lIF9VUkNVX0FSQ0hfUklTQ1ZfSAorKworKy8qCisrICogYXJjaC9yaXNjdi5oOiBkZWZpbml0aW9ucyBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUKKysgKgorKyAqIENvcHlyaWdodCAoYykgMjAxOCBNaWNoYWVsIEplYW5zb24gPG1qZWFuc29uQGVmZmljaW9zLmNvbT4KKysgKgorKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorKyAqLworKworKyNpbmNsdWRlIDx1cmN1L2NvbXBpbGVyLmg+CisrI2luY2x1ZGUgPHVyY3UvY29uZmlnLmg+CisrI2luY2x1ZGUgPHVyY3Uvc3lzY2FsbC1jb21wYXQuaD4KKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKysKKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrCisrLyoKKysgKiBPbiBMaW51eCwgZGVmaW5lIHRoZSBtZW1iYXJyaWVyIHN5c3RlbSBjYWxsIG51bWJlciBpZiBub3QgeWV0IGF2YWlsYWJsZSBpbgorKyAqIHRoZSBzeXN0ZW0gaGVhZGVycy4KKysgKi8KKysjaWYgKGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyCQkyODMKKysjZW5kaWYKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHVyY3UvYXJjaC9nZW5lcmljLmg+CisrCisrI2VuZGlmIC8qIF9VUkNVX0FSQ0hfUklTQ1ZfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXJjdS91YXRvbWljL3Jpc2N2LmggYi9pbmNsdWRlL3VyY3UvdWF0b21pYy9yaXNjdi5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmE2NzAwZTE3CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3VyY3UvdWF0b21pYy9yaXNjdi5oCitAQCAtMCwwICsxLDQ0IEBACisrLyoKKysgKiBBdG9taWMgZXhjaGFuZ2Ugb3BlcmF0aW9ucyBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUuIExldCBHQ0MgZG8gaXQuCisrICoKKysgKiBDb3B5cmlnaHQgKGMpIDIwMTggTWljaGFlbCBKZWFuc29uIDxtamVhbnNvbkBlZmZpY2lvcy5jb20+CisrICoKKysgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CisrICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisrICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKysgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKKysgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisrICoKKysgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorKyAqCisrICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKysgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKysgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKysgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisrICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKysgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisrICogSU4gVEhFIFNPRlRXQVJFLgorKyAqLworKworKyNpZm5kZWYgX1VSQ1VfQVJDSF9VQVRPTUlDX1JJU0NWX0gKKysjZGVmaW5lIF9VUkNVX0FSQ0hfVUFUT01JQ19SSVNDVl9ICisrCisrI2luY2x1ZGUgPHVyY3UvY29tcGlsZXIuaD4KKysjaW5jbHVkZSA8dXJjdS9zeXN0ZW0uaD4KKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5kaWYKKysKKysjZGVmaW5lIFVBVE9NSUNfSEFTX0FUT01JQ19CWVRFCisrI2RlZmluZSBVQVRPTUlDX0hBU19BVE9NSUNfU0hPUlQKKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKyt9CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPHVyY3UvdWF0b21pYy9nZW5lcmljLmg+CisrCisrI2VuZGlmIC8qIF9VUkNVX0FSQ0hfVUFUT01JQ19SSVNDVl9IICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEwLjEuYmIKaW5kZXggNDU5YzA0YS4uNWViOTFlMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMS5iYgpAQCAtOCwxMiArOCwxNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9BZGQtc3VwcG9ydC1mb3ItdGhlLVJJU0MtVi1hcmNoaXRlY3R1cmUucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIyODFhMmY5MmZkYzM5YzQwYWQ2Yjc2ZjY2MzFmZGJkNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzA5MjIwYmU0NDM1ZGMyN2ZjZDIyZDI5MTcwN2I5NGI5N2YxNTllMGM0NDJmYmNkNjBjMTY4ZjhmNzllYjA2IgogCiBTID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKLWluaGVyaXQgYXV0b3Rvb2xzCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKIAogQ1BQRkxBR1NfYXBwZW5kX3Jpc2N2NjQgID0gIiAtcHRocmVhZCAtRF9SRUVOVFJBTlQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciB1cmN1L2NvbmZpZy5oCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjEvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVhYTQ3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL3J1bi1wdGVzdApAQCAtMCwwICsxLDI5IEBACisjIS9iaW4vc2gKKworZWNobworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsaWJ1c2IxIHRlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2VjaG8KKworLi9zdHJlc3MgfCB7IFwKK3doaWxlIHJlYWQgLXIgc3RyCitkbworCWVjaG8gIiRzdHIiCisJaWYgWyAiJHtzdHIjKlN0YXJ0aW5nIHRlc3QgcnVuOn0iICE9ICIkc3RyIiBdCisJdGhlbgorCQluYW1lPSIke3N0ciNTdGFydGluZyB0ZXN0IHJ1bjogfSIKKwkJbmFtZT0iJHtuYW1lJS4uLn0iCisJZWxzZQorCQljYXNlICIkc3RyIiBpbgorCQkJIlN1Y2Nlc3MgKDApIikKKwkJCQllY2hvICJQQVNTOiAkbmFtZSIKKwkJCTs7CisJCQkiRmFpbHVyZSAoMSkiIHwgIkVycm9yICgyKSIpCisJCQkJZWNobyAiRkFJTDogJG5hbWUiCisJCQk7OworCQkJIlNraXAgKDMpIikKKwkJCQllY2hvICJTS0lQOiAkbmFtZSIKKwkJCTs7CisJCWVzYWMKKwlmaQorZG9uZQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZlZmQxNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGxpYnJhcnkgdG8gYWNjZXNzIFVTQiAodmVyc2lvbiAxLjApIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYnVzYi5zZi5uZXQiCi1CVUdUUkFDS0VSID0gImh0dHA6Ly93d3cubGlidXNiLm9yZy9yZXBvcnQiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vbGlidXNiL2xpYnVzYi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL25vLWRsbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWRhOWVhM2MyN2IzODU4ZmE4NWM1ZjQ0NjYwMDNlNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RjZTljY2U5YTgxMTk0YjcwNjVlZTkxMmJjZDU1ZWVmZmViYWI2OTRlYTQwM2ZmYjkxYjY3ZGI2NmIxODI0YiIKLQotUyA9ICIke1dPUktESVJ9L2xpYnVzYi0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgRG9uJ3QgY29uZmlndXJlIHVkZXYgYnkgZGVmYXVsdCBzaW5jZSBpdCB3aWxsIGNhdXNlIGEgY2lyY3VsYXIKLSMgZGVwZW5kZWN5IHdpdGggdWRldiBwYWNrYWdlLCB3aGljaCBkZXBlbmRzIG9uIGxpYnVzYgotRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tZGlzYWJsZS11ZGV2IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9Ci0JZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28uKiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvICR7YmFzZV9saWJkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNmUxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMi5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9uby1kbGwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NjYyNjc4ODlkYWVhZDQ3Njc0ZGY5MzNjZWE5Y2FjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWFlYjlkNTlhNGZkYjgwMGQzMjlhNTQ1YzJlNjc5OWY3MzIzNjIxOTNiNDY1ZWExOThmMmFhMjc1NTE4MTU3IgorCitTID0gIiR7V09SS0RJUn0vbGlidXNiLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworIyBEb24ndCBjb25maWd1cmUgdWRldiBieSBkZWZhdWx0IHNpbmNlIGl0IHdpbGwgY2F1c2UgYSBjaXJjdWxhcgorIyBkZXBlbmRlY3kgd2l0aCB1ZGV2IHBhY2thZ2UsIHdoaWNoIGRlcGVuZHMgb24gbGlidXNiCitFWFRSQV9PRUNPTkYgPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1kaXNhYmxlLXVkZXYiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfQorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KKwlmaQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBvZV9ydW5tYWtlIC1DIHRlc3RzIHN0cmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK2RvX2luc3RhbGxfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGluc3RhbGwgLW0gNzU1ICR7Qn0vdGVzdHMvLmxpYnMvc3RyZXNzICR7RH0ke1BURVNUX1BBVEh9ICAgICAgICAgCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvLioiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vKi5zbyAke2Jhc2VfbGliZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvZml4LXJ2dHMtaGFuZGxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdC9maXgtcnZ0cy1oYW5kbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTNhZTUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHQvZml4LXJ2dHMtaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSw4MCBAQAorbGlieHNsdC0xLjEuMzI6IEZpeCBoYW5kbGluZyBvZiBSVlRzIHJldHVybmVkIGZyb20gbmVzdGVkIEVYU0xUIGZ1bmN0aW9ucworCitbTm8gdXBzdHJlYW0gdHJhY2tpbmddIC0tIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI1ODAKKworU2V0IHRoZSBjb250ZXh0IHZhcmlhYmxlIHRvIE5VTEwgd2hlbiBldmFsdWF0aW5nIEVYU0xUIGZ1bmN0aW9ucy4KK0ZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMgb3IgbWVtb3J5IGxlYWtzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlieHNsdC9jb21taXQvOGJkMzJmNzc1M2FjMjUzYTU0Mjc5YTBiNmE4OGQxNWE1NzA3NmJiMF0KK2J1ZzogNzkyNTgwCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKworZGlmZiAtLWdpdCBhL2xpYmV4c2x0L2Z1bmN0aW9ucy5jIGIvbGliZXhzbHQvZnVuY3Rpb25zLmMKK2luZGV4IGRjNzk0ZTMuLjg1MTFjYjAgMTAwNjQ0CistLS0gYS9saWJleHNsdC9mdW5jdGlvbnMuYworKysrIGIvbGliZXhzbHQvZnVuY3Rpb25zLmMKK0BAIC0yODAsNiArMjgwLDcgQEAgZXhzbHRGdW5jRnVuY3Rpb25GdW5jdGlvbiAoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgeworICAgICBleHNsdEZ1bmNGdW5jdGlvbkRhdGEgKmZ1bmM7CisgICAgIHhtbE5vZGVQdHIgcGFyYW1Ob2RlLCBvbGRJbnNlcnQsIGZha2U7CisgICAgIGludCBvbGRCYXNlOworKyAgICB2b2lkICpvbGRDdHh0VmFyOworICAgICB4c2x0U3RhY2tFbGVtUHRyIHBhcmFtcyA9IE5VTEwsIHBhcmFtOworICAgICB4c2x0VHJhbnNmb3JtQ29udGV4dFB0ciB0Y3R4dCA9IHhzbHRYUGF0aEdldFRyYW5zZm9ybUNvbnRleHQoY3R4dCk7CisgICAgIGludCBpLCBub3RTZXQ7CitAQCAtNDE4LDExICs0MTksMTQgQEAgZXhzbHRGdW5jRnVuY3Rpb25GdW5jdGlvbiAoeG1sWFBhdGhQYXJzZXJDb250ZXh0UHRyIGN0eHQsIGludCBuYXJncykgeworICAgICBmYWtlID0geG1sTmV3RG9jTm9kZSh0Y3R4dC0+b3V0cHV0LCBOVUxMLAorIAkJCSAoY29uc3QgeG1sQ2hhciAqKSJmYWtlIiwgTlVMTCk7CisgICAgIG9sZEluc2VydCA9IHRjdHh0LT5pbnNlcnQ7CisrICAgIG9sZEN0eHRWYXIgPSB0Y3R4dC0+Y29udGV4dFZhcmlhYmxlOworICAgICB0Y3R4dC0+aW5zZXJ0ID0gZmFrZTsKKysgICAgdGN0eHQtPmNvbnRleHRWYXJpYWJsZSA9IE5VTEw7CisgICAgIHhzbHRBcHBseU9uZVRlbXBsYXRlICh0Y3R4dCwgdGN0eHQtPm5vZGUsCisgCQkJICBmdW5jLT5jb250ZW50LCBOVUxMLCBOVUxMKTsKKyAgICAgeHNsdExvY2FsVmFyaWFibGVQb3AodGN0eHQsIHRjdHh0LT52YXJzQmFzZSwgLTIpOworICAgICB0Y3R4dC0+aW5zZXJ0ID0gb2xkSW5zZXJ0OworKyAgICB0Y3R4dC0+Y29udGV4dFZhcmlhYmxlID0gb2xkQ3R4dFZhcjsKKyAgICAgdGN0eHQtPnZhcnNCYXNlID0gb2xkQmFzZTsJLyogcmVzdG9yZSBvcmlnaW5hbCBzY29wZSAqLworICAgICBpZiAocGFyYW1zICE9IE5VTEwpCisgCXhzbHRGcmVlU3RhY2tFbGVtTGlzdChwYXJhbXMpOworZGlmZiAtLWdpdCBhL3Rlc3RzL2RvY3MvYnVnLTIwOS54bWwgYi90ZXN0cy9kb2NzL2J1Zy0yMDkueG1sCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjlkNjJmMgorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZG9jcy9idWctMjA5LnhtbAorQEAgLTAsMCArMSBAQAorKzxkb2MvPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbmVyYWwvYnVnLTIwOS5vdXQgYi90ZXN0cy9nZW5lcmFsL2J1Zy0yMDkub3V0CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTgyOTc5MAorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZ2VuZXJhbC9idWctMjA5Lm91dAorQEAgLTAsMCArMSwyIEBACisrPD94bWwgdmVyc2lvbj0iMS4wIj8+CisrPHJlc3VsdC8+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuZXJhbC9idWctMjA5LnhzbCBiL3Rlc3RzL2dlbmVyYWwvYnVnLTIwOS54c2wKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mZTY5YWM2CistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0cy9nZW5lcmFsL2J1Zy0yMDkueHNsCitAQCAtMCwwICsxLDIxIEBACisrPHhzbDpzdHlsZXNoZWV0CisrICAgIHZlcnNpb249IjEuMCIKKysgICAgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iCisrICAgIHhtbG5zOmZ1bmM9Imh0dHA6Ly9leHNsdC5vcmcvZnVuY3Rpb25zIgorKyAgICBleHRlbnNpb24tZWxlbWVudC1wcmVmaXhlcz0iZnVuYyI+CisrCisrICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorKyAgICAgICAgPHhzbDp2YXJpYWJsZSBuYW1lPSJ2IiBzZWxlY3Q9ImZ1bmM6YSgpIiAvPgorKyAgICAgICAgPHhzbDpjb3B5LW9mIHNlbGVjdD0iJHYiLz4KKysgICAgPC94c2w6dGVtcGxhdGU+CisrCisrICAgIDxmdW5jOmZ1bmN0aW9uIG5hbWU9ImZ1bmM6YSI+CisrICAgICAgICA8ZnVuYzpyZXN1bHQgc2VsZWN0PSJmdW5jOmIoKSIgLz4KKysgICAgPC9mdW5jOmZ1bmN0aW9uPgorKworKyAgICA8ZnVuYzpmdW5jdGlvbiBuYW1lPSJmdW5jOmIiPgorKyAgICAgICAgPGZ1bmM6cmVzdWx0PgorKyAgICAgICAgICAgIDxyZXN1bHQvPgorKyAgICAgICAgPC9mdW5jOnJlc3VsdD4KKysgICAgPC9mdW5jOmZ1bmN0aW9uPgorKzwveHNsOnN0eWxlc2hlZXQ+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzIuYmIKaW5kZXggNmEwM2Y3Ny4uZjBmYTVlNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjMyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zMi5iYgpAQCAtOCw3ICs4LDEwIEBACiBTRUNUSU9OID0gImxpYnMiCiBERVBFTkRTID0gImxpYnhtbDIiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJID0gImh0dHA6Ly94bWxzb2Z0Lm9yZy9zb3VyY2VzL2xpYnhzbHQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydnRzLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiMWZjNzJmOThlOThiZjQ0NDNmMTY1MTE2NWYzYWExNDYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTI2ZWNkMGFiYWY0YTc3ODkwNDE2MjJjMzk1MGMwZTdmMmM0Yzg4MzU0NzE1MTVmZDc3ZWVjNjg0YTM1NTQ2MCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4xLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2N2YwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnlhbWwvbGlieWFtbF8wLjEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiTGliWUFNTCBpcyBhIFlBTUwgMS4xIHBhcnNlciBhbmQgZW1pdHRlciB3cml0dGVuIGluIEMuIgotREVTQ1JJUFRJT04gPSAiTGliWUFNTCBpcyBhIEMgbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgZW1pdHRpbmcgZGF0YSBpbiBZQU1MIDEuMSwgXAotYSBodW1hbi1yZWFkYWJsZSBkYXRhIHNlcmlhbGl6YXRpb24gZm9ybWF0LiAiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl5YW1sLm9yZy93aWtpL0xpYllBTUwiCi1TRUNUSU9OID0gImxpYnMvZGV2ZWwiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjAxNWYwODg3NTliMTBlMGJjMmJmNjQ4OThkNGFlMTciCi0KLVNSQ19VUkkgPSAiaHR0cDovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWFiZjQ1YmQzYTk2Mzc0ZmE1NWNhNjNiMzJmOWYyZjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA4OGU0NTcyNjRhOThiYTQ1MWE5MGI4NjYxZmNiNGY5ZDZmNDc4ZjcyNjVkNDgzMjJhMTk2Y2VjMjQ4MDcyOSIKLQotUyA9ICIke1dPUktESVJ9L3lhbWwtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3ODkxOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4xLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiTGliWUFNTCBpcyBhIFlBTUwgMS4xIHBhcnNlciBhbmQgZW1pdHRlciB3cml0dGVuIGluIEMuIgorREVTQ1JJUFRJT04gPSAiTGliWUFNTCBpcyBhIEMgbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgZW1pdHRpbmcgZGF0YSBpbiBZQU1MIDEuMSwgXAorYSBodW1hbi1yZWFkYWJsZSBkYXRhIHNlcmlhbGl6YXRpb24gZm9ybWF0LiAiCitIT01FUEFHRSA9ICJodHRwOi8vcHl5YW1sLm9yZy93aWtpL0xpYllBTUwiCitTRUNUSU9OID0gImxpYnMvZGV2ZWwiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTU5MTcwMWQzMjU5MGY5ZmE5NGYzYmZlZTgyMGI2MzQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MjcyNGI5NzM2OTIzYzUxN2U1YThmYzY3NTdlZjAzZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ODI4MTE0NTY0MWEwODBmYjMyZDZlN2E4N2I5YzA2NjRkNjExZGNiNGQ1NDJlOTBiYWY3MzFmNTFjYmI1OWNkIgorCitTID0gIiR7V09SS0RJUn0veWFtbC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDQ5NGU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLUZyb20gZDQ3NjhkOWUyOWI4MDUwOTZhODZhYTEzYzBkMzBlZTgyMTVhZjRkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDEyOjA3OjA5ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL01ha2VmaWxlOiBkb24ndCB1c2UgTElCRElSIGFzIHZhcmlhYmxlCi0KLUxJQkRJUiBtYXkgYmUgb3ZlcnJpZGVuIHdpdGggYSBlbnZpcm9ubWVudCB2YXJpYWJsZTogSW4gdGhpcyBjYXNlIG1ha2UKLWNsZWFuIGJyZWFrcy4gVXNlIGFub3RoZXIgdmFyaWFibGUgbmFtZS4KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIHRlc3RzL01ha2VmaWxlIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCi1pbmRleCA5N2ZhNzgyLi41MWRkMDM4IDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RzL01ha2VmaWxlCi1AQCAtMzIsNyArMzIsNyBAQCBERVNURElSID89Ci0gUFJFRklYICA/PSAvdXNyL2xvY2FsCi0gQklORElSICA6PSAkKFBSRUZJWCkvYmluCi0gTUFORElSICA6PSAkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKLS1MSUJESVIgIDo9IC4uL2xpYgotK0xaNERJUiAgOj0gLi4vbGliCi0gUFJHRElSICA6PSAuLi9wcm9ncmFtcwotIFZPSUQgICAgOj0gL2Rldi9udWxsCi0gVEVTVERJUiA6PSB2ZXJzaW9uc1Rlc3QKLUBAIC00Myw3ICs0Myw3IEBAIENGTEFHUyAgKz0gLWcgLVdhbGwgLVdleHRyYSAtV3VuZGVmIC1XY2FzdC1xdWFsIC1XY2FzdC1hbGlnbiAtV3NoYWRvdyAtV3N3aXRjaC1lCi0gICAgICAgICAgICAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3N0cmljdC1wcm90b3R5cGVzIFwKLSAgICAgICAgICAgIC1XcG9pbnRlci1hcml0aCAtV3N0cmljdC1hbGlhc2luZz0xCi0gQ0ZMQUdTICArPSAkKE1PUkVGTEFHUykKLS1DUFBGTEFHUzo9IC1JJChMSUJESVIpIC1JJChQUkdESVIpIC1EWFhIX05BTUVTUEFDRT1MWjRfCi0rQ1BQRkxBR1M6PSAtSSQoTFo0RElSKSAtSSQoUFJHRElSKSAtRFhYSF9OQU1FU1BBQ0U9TFo0XwotIEZMQUdTICAgID0gJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoTERGTEFHUykKLSAKLSAKLUBAIC03OSwzMSArNzksMzEgQEAgbHo0YzMyOiAgICMgY3JlYXRlIGEgMzItYml0cyB2ZXJzaW9uIGZvciAzMi82NCBpbnRlcm9wIHRlc3RzCi0gCSQoTUFLRSkgLUMgJChQUkdESVIpIGNsZWFuICRAIENGTEFHUz0iLW0zMiAkKENGTEFHUykiCi0gCWNwICQoTFo0KSAkKExaNCljMzIKLSAKLS1mdWxsYmVuY2ggIDogJChMSUJESVIpL2x6NC5vICQoTElCRElSKS9sejRoYy5vICQoTElCRElSKS9sejRmcmFtZS5vICQoTElCRElSKS94eGhhc2gubyBmdWxsYmVuY2guYwotK2Z1bGxiZW5jaCAgOiAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL2x6NGZyYW1lLm8gJChMWjRESVIpL3h4aGFzaC5vIGZ1bGxiZW5jaC5jCi0gCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCi0gCi0tZnVsbGJlbmNoLWxpYjogZnVsbGJlbmNoLmMgJChMSUJESVIpL3h4aGFzaC5jCi0tCSQoTUFLRSkgLUMgJChMSUJESVIpIGxpYmx6NC5hCi0tCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpICQoTElCRElSKS9saWJsejQuYQotK2Z1bGxiZW5jaC1saWI6IGZ1bGxiZW5jaC5jICQoTFo0RElSKS94eGhhc2guYwotKwkkKE1BS0UpIC1DICQoTFo0RElSKSBsaWJsejQuYQotKwkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKSAkKExaNERJUikvbGlibHo0LmEKLSAKLS1mdWxsYmVuY2gtZGxsOiBmdWxsYmVuY2guYyAkKExJQkRJUikveHhoYXNoLmMKLS0JJChNQUtFKSAtQyAkKExJQkRJUikgbGlibHo0Ci0tCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpIC1ETFo0X0RMTF9JTVBPUlQ9MSAkKExJQkRJUikvZGxsL2xpYmx6NC5kbGwKLStmdWxsYmVuY2gtZGxsOiBmdWxsYmVuY2guYyAkKExaNERJUikveHhoYXNoLmMKLSsJJChNQUtFKSAtQyAkKExaNERJUikgbGlibHo0Ci0rCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpIC1ETFo0X0RMTF9JTVBPUlQ9MSAkKExaNERJUikvZGxsL2xpYmx6NC5kbGwKLSAKLS1mdXp6ZXIgIDogJChMSUJESVIpL2x6NC5vICQoTElCRElSKS9sejRoYy5vICQoTElCRElSKS94eGhhc2gubyBmdXp6ZXIuYwotK2Z1enplciAgOiAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL3h4aGFzaC5vIGZ1enplci5jCi0gCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCi0gCi0tZnJhbWV0ZXN0OiAkKExJQkRJUikvbHo0ZnJhbWUubyAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL3h4aGFzaC5vIGZyYW1ldGVzdC5jCi0rZnJhbWV0ZXN0OiAkKExaNERJUikvbHo0ZnJhbWUubyAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL3h4aGFzaC5vIGZyYW1ldGVzdC5jCi0gCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCi0gCi0tZmFzdHRlc3Q6ICQoTElCRElSKS9sejQubyBmYXN0dGVzdC5jCi0rZmFzdHRlc3Q6ICQoTFo0RElSKS9sejQubyBmYXN0dGVzdC5jCi0gCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCi0gCi0gZGF0YWdlbiA6ICQoUFJHRElSKS9kYXRhZ2VuLmMgZGF0YWdlbmNsaS5jCi0gCSQoQ0MpICQoRkxBR1MpIC1JJChQUkdESVIpICReIC1vICRAJChFWFQpCi0gCi0gY2xlYW46Ci0tCUAkKE1BS0UpIC1DICQoTElCRElSKSAkQCA+ICQoVk9JRCkKLSsJQCQoTUFLRSkgLUMgJChMWjRESVIpICRAID4gJChWT0lEKQotIAlAJChNQUtFKSAtQyAkKFBSR0RJUikgJEAgPiAkKFZPSUQpCi0gCUAkKFJNKSBjb3JlICoubyAqLnRlc3QgdG1wKiBcCi0gICAgICAgICBmdWxsYmVuY2gtZGxsJChFWFQpIGZ1bGxiZW5jaC1saWIkKEVYVCkgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YTFhYjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuNy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCi1ERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKLQotTElDRU5TRSA9ICJCU0QgfCBCU0QtMi1DbGF1c2UgfCBHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL0xJQ0VOU0U7bWQ1PWViYzJlYTQ4MTRhNjRkZTc3MDhmMTU3MTkwNGIzMmNjXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHJvZ3JhbXMvQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9N2YyODU3ZDU4YmVmZjZkMDQxMzdiZjliMDllNWZmYjYiCi0KLVBFID0gIjEiCi0KLVNSQ1JFViA9ICI3YmI2NGZmMmI2OWE5ZjgzNjdkZTlhYjQ4M2NkYWRmNDJiNGMxYjY1IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbHo0L2x6NC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRU1BS0UgPSAiUFJFRklYPSR7cHJlZml4fSBDQz0nJHtDQ30nIERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IElOQ0xVREVESVI9JHtpbmNsdWRlZGlyfSIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuOC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZDE3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS44LjIuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJFeHRyZW1lbHkgRmFzdCBDb21wcmVzc2lvbiBhbGdvcml0aG0iCitERVNDUklQVElPTiA9ICJMWjQgaXMgYSB2ZXJ5IGZhc3QgbG9zc2xlc3MgY29tcHJlc3Npb24gYWxnb3JpdGhtLCBwcm92aWRpbmcgY29tcHJlc3Npb24gc3BlZWQgYXQgNDAwIE1CL3MgcGVyIGNvcmUsIHNjYWxhYmxlIHdpdGggbXVsdGktY29yZXMgQ1BVLiBJdCBhbHNvIGZlYXR1cmVzIGFuIGV4dHJlbWVseSBmYXN0IGRlY29kZXIsIHdpdGggc3BlZWQgaW4gbXVsdGlwbGUgR0IvcyBwZXIgY29yZSwgdHlwaWNhbGx5IHJlYWNoaW5nIFJBTSBzcGVlZCBsaW1pdHMgb24gbXVsdGktY29yZSBzeXN0ZW1zLiIKKworTElDRU5TRSA9ICJCU0QgfCBCU0QtMi1DbGF1c2UgfCBHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL0xJQ0VOU0U7bWQ1PWViYzJlYTQ4MTRhNjRkZTc3MDhmMTU3MTkwNGIzMmNjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Byb2dyYW1zL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PWQ1N2MwZDIxY2I5MTdmYjRlMGFmMjQ1NGFhNDhiOTU2IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitQRSA9ICIxIgorCitTUkNSRVYgPSAiYjM2OTJkYjQ2ZDJiMjNhN2MwYWYyZDVlNjk5ODhjOTRmMTI2ZTEwYSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x6NC9sejQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4uKikiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FTUFLRSA9ICJQUkVGSVg9JHtwcmVmaXh9IENDPScke0NDfScgREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gSU5DTFVERURJUj0ke2luY2x1ZGVkaXJ9IgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci8wMDAxLUZpeC1vYnNvbGV0ZS1BUkMtYXNtLWNvbnN0cmFpbnRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvMDAwMS1GaXgtb2Jzb2xldGUtQVJDLWFzbS1jb25zdHJhaW50cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWQxYjBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvMDAwMS1GaXgtb2Jzb2xldGUtQVJDLWFzbS1jb25zdHJhaW50cy5wYXRjaApAQCAtMCwwICsxLDQ1IEBACittcGZyLWxvbmdsb25nLmg6IEZpeCBvYnNvbGV0ZSBBUkMgYXNtIGNvbnN0cmFpbnRzCisKK1RoaXMgcGF0Y2ggcmVwbGFjZXMgb2Jzb2xldGUgQVJDICJKIiBhc20gY29uc3RyYWludCB3aXRoCit1cC10by1kYXRlICJDYWwiIGNvbnN0cmFpbnQuCisKKyJKIiBjb25zdHJhaW50IG9ubHkgZXhpc3RlZCBpbiBwcmUtdXBzdHJlYW0gR0NDIHBvcnQgZm9yIEFSQy4KK0luIGN1cnJlbnQgdXBzdHJlYW0gcG9ydCAiQ2FsIiBjb25zdHJhaW50IGlzIHVzZWQgd2hpY2ggbGVhZHMKK3RvIGNvbXBpbGUtdGltZSBlcnJvci4KKworUHJvcG9zZWQgZml4IGlzIGtub3duIHRvIHdvcmsgaW4gQnVpbGRyb290LCBDcm9zc3Rvb2wtTkcgZXRjLgorCitbMV0gaHR0cHM6Ly9nY2MuZ251Lm9yZy9naXQvP3A9Z2NjLmdpdDthPWNvbW1pdDtoPTA5Y2I2YTE3ZTcxYmQ0MGQyZmJmYWY4MmExNTAyZmMyMTBlMzNjODcKKworU2lnbmVkLW9mZi1ieTogQ2xhdWRpdSBaaXNzdWxlc2N1IDxjbGF6aXNzQHN5bm9wc3lzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFZsYWQgWmFraGFyb3YgPHZ6YWtoYXJAc3lub3BzeXMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9nZm9yZ2UuaW5yaWEuZnIvc2NtL3ZpZXd2Yy5waHAvbXBmcj92aWV3PXJldmlzaW9uJnJldmlzaW9uPTEzMjUxXQorLS0tCitJbmRleDogc3JjL21wZnItbG9uZ2xvbmcuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvc3JjL21wZnItbG9uZ2xvbmcuaAkocmV2aXNpb24gMTA5NjMpCisrKysgYi9zcmMvbXBmci1sb25nbG9uZy5oCSh3b3JraW5nIGNvcHkpCitAQCAtNDE2LDE3ICs0MTYsMTcgQEAKKyAJICAgOiAiPXIiIChzaCksCQkJCQkJCVwKKyAJICAgICAiPSZyIiAoc2wpCQkJCQkJCVwKKyAJICAgOiAiciIgICgoVVNJdHlwZSkgKGFoKSksCQkJCQlcCistCSAgICAgInJJSiIgKChVU0l0eXBlKSAoYmgpKSwJCQkJCVwKKysJICAgICAicklDYWwiICgoVVNJdHlwZSkgKGJoKSksCQkJCQlcCisgCSAgICAgIiVyIiAoKFVTSXR5cGUpIChhbCkpLAkJCQkJXAorLQkgICAgICJySUoiICgoVVNJdHlwZSkgKGJsKSkpCisrCSAgICAgInJJQ2FsIiAoKFVTSXR5cGUpIChibCkpKQorICNkZWZpbmUgc3ViX2RkbW1zcyhzaCwgc2wsIGFoLCBhbCwgYmgsIGJsKSBcCisgICBfX2FzbV9fICgic3ViLmZcdCUxLCAlNCwgJTVcblx0c2JjXHQlMCwgJTIsICUzIgkJCVwKKyAJICAgOiAiPXIiIChzaCksCQkJCQkJCVwKKyAJICAgICAiPSZyIiAoc2wpCQkJCQkJCVwKKyAJICAgOiAiciIgKChVU0l0eXBlKSAoYWgpKSwJCQkJCVwKKy0JICAgICAicklKIiAoKFVTSXR5cGUpIChiaCkpLAkJCQkJXAorKwkgICAgICJySUNhbCIgKChVU0l0eXBlKSAoYmgpKSwJCQkJCVwKKyAJICAgICAiciIgKChVU0l0eXBlKSAoYWwpKSwJCQkJCVwKKy0JICAgICAicklKIiAoKFVTSXR5cGUpIChibCkpKQorKwkgICAgICJySUNhbCIgKChVU0l0eXBlKSAoYmwpKSkKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZCAoX19hcm1fXykgJiYgKGRlZmluZWQgKF9fdGh1bWIyX18pIHx8ICFkZWZpbmVkIChfX3RodW1iX18pKSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci9sb25nLWxvbmctdGh1bWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmci9sb25nLWxvbmctdGh1bWIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNzEwMGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnIvbG9uZy1sb25nLXRodW1iLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA4NDAyMWIxZTIzNjUwODE2OWJlNjVlODAyYTljMGEyNWZjOWE4ODI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGhpbCBCbHVuZGVsbCA8cGhpbGJAZ251Lm9yZz4KLURhdGU6IE1vbiwgMjcgT2N0IDIwMDggMjI6MjY6MzUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbXBmcjogY3J1c2FkZSBhZ2FpbnN0IGlubGluZSBhc3NlbWJsZXIKLQotV2l0aG91dCB0aGlzLCBidWlsZCBmYWlscyBmb3IgdGh1bWI6Ci18IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLXwge3N0YW5kYXJkIGlucHV0fToxOTk6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCBzbCxyMCxyMixyMScKLXwge3N0YW5kYXJkIGlucHV0fToyMTQ6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCBzbCxyMixyMSxmcCcKLXwge3N0YW5kYXJkIGlucHV0fToyMTk6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgYWRkcyBmcCxyMCxzbCcKLXwge3N0YW5kYXJkIGlucHV0fToyMjA6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGFkYyByMixyMiwjMCcKLXwge3N0YW5kYXJkIGlucHV0fToyMzU6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCByMCxzbCxyMSxyMycKLXwge3N0YW5kYXJkIGlucHV0fToyNDQ6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCBmcCxpcCxyMSxyMycKLXwge3N0YW5kYXJkIGlucHV0fToyNTM6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgYWRkcyByMyxzbCxmcCcKLXwge3N0YW5kYXJkIGlucHV0fToyNTQ6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGFkYyBpcCxpcCwjMCcKLXwge3N0YW5kYXJkIGlucHV0fToyNTk6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgYWRkcyBzbCxyMSxyMCcKLXwge3N0YW5kYXJkIGlucHV0fTo2NDI6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCByMCxyMixyMyxyMScKLXwgLi4vYXJtLW9lLWxpbnV4LWdudWVhYmktbGlidG9vbCAtLXRhZz1DQyAgIC0tbW9kZT1jb21waWxlIGFybS1vZS1saW51eC1nbnVlYWJpLWdjYyAgLW1hcmNoPWFybXY1dGUgIC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgIC1tdHVuZT14c2NhbGUgLS1zeXNyb290PS9PRS9zaHItY29yZS90bXAtZWdsaWJjL3N5c3Jvb3RzL3NwaXR6IC1ESEFWRV9JTlRUWVBFU19IPTEgLURIQVZFX1NURElOVF9IPTEgLURUSU1FX1dJVEhfU1lTX1RJTUU9MSAtREhBVkVfTE9DQUxFX0g9MSAtREhBVkVfV0NIQVJfSD0xIC1ESEFWRV9TVERBUkc9MSAtREhBVkVfU1lTX1RJTUVfSD0xIC1ESEFWRV9BTExPQ0FfSD0xIC1ESEFWRV9TVERJTlRfSD0xIC1ESEFWRV9WQV9DT1BZPTEgLURIQVZFX1NFVExPQ0FMRT0xIC1ESEFWRV9HRVRUSU1FT0ZEQVk9MSAtREhBVkVfTE9OR19MT05HPTEgLURIQVZFX0lOVE1BWF9UPTEgLURNUEZSX0hBVkVfSU5UTUFYX01BWD0xIC1ETVBGUl9IQVZFX0ZFU0VUUk9VTkQ9MSAtREhBVkVfUk9VTkQ9MSAtREhBVkVfVFJVTkM9MSAtREhBVkVfRkxPT1I9MSAtREhBVkVfQ0VJTD0xIC1ESEFWRV9ORUFSQllJTlQ9MSAtRExUX09CSkRJUj1cIi5saWJzL1wiIC1ESEFWRV9BVFRSSUJVVEVfTU9ERT0xIC1ESEFWRV9fX0dNUE5fUk9PVFJFTT0xIC1ESEFWRV9fX0dNUE5fU0JQSTFfRElWQVBQUl9RPTEgLUkuICAgICAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mZmxvYXQtc3RvcmUgLWMgLW8gcG93LmxvIHBvdy5jCi18IHtzdGFuZGFyZCBpbnB1dH06MTE1NDogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHVtdWxsIHIwLHIxLHNsLGlwJwotfCB7c3RhbmRhcmQgaW5wdXR9OjExNjY6IEVycm9yOiBzZWxlY3RlZCBwcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBUaHVtYiBtb2RlIGB1bXVsbCByMyxyMixpcCxyMCcKLXwge3N0YW5kYXJkIGlucHV0fToxMTcxOiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYGFkZHMgcjAscjEscjMnCi18IHtzdGFuZGFyZCBpbnB1dH06MTE3MjogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgYWRjIHIyLHIyLCMwJwotfCBtYWtlWzJdOiAqKiogW211bC5sb10gRXJyb3IgMQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gbXBmci5vbGQvc3JjL21wZnItbG9uZ2xvbmcuaAkyMDA4LTAxLTAxIDAzOjI5OjA5LjAwMDAwMDAwMCArMDAwMAotKysrIG1wZnIvc3JjL21wZnItbG9uZ2xvbmcuaAkyMDA4LTEwLTI3IDIxOjQ2OjQ0LjAwMDAwMDAwMCArMDAwMAotQEAgLTQwNiw3ICs0MDYsNyBAQAotIAkgICAgICJySUoiICgoVVNJdHlwZSkgKGJsKSkpCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQgKF9fYXJtX18pICYmIFdfVFlQRV9TSVpFID09IDMyCi0rI2lmIGRlZmluZWQgKF9fYXJtX18pICYmIFdfVFlQRV9TSVpFID09IDMyICYmICFkZWZpbmVkKF9fdGh1bWJfXykKLSAjZGVmaW5lIGFkZF9zc2FhYWEoc2gsIHNsLCBhaCwgYWwsIGJoLCBibCkgXAotICAgX19hc21fXyAoImFkZHNcdCUxLCAlNCwgJTVcblx0YWRjXHQlMCwgJTIsICUzIgkJCVwKLSAJICAgOiAiPXIiIChzaCksICI9JnIiIChzbCkJCQkJCVwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzMuMS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3OGMwYmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfMy4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkMgbGlicmFyeSBmb3IgbXVsdGlwbGUtcHJlY2lzaW9uIGZsb2F0aW5nLXBvaW50IGNvbXB1dGF0aW9ucyB3aXRoIGV4YWN0IHJvdW5kaW5nIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy8iCi1MSUNFTlNFID0gIkxHUEx2MysiCi1TRUNUSU9OID0gImRldmVsIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi1ERVBFTkRTID0gImdtcCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItJHtQVn0vbXBmci0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vbG9uZy1sb25nLXRodW1iLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImM0YWMyNDZjZjk3OTVhNDQ5MWU3NzY2MDAyY2Q1MjhmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAxNWZkZTgyYjM5NzlmYmU1ZjgzNTAxOTg2ZDMyODMzMWJhOGRkZjAwOGMxZmYzZGEzYzIzOGY0OWNhMDYyYmMiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnL21wZnItY3VycmVudC8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9tcGZyL21wZnJfNC4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlZTc2YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiQyBsaWJyYXJ5IGZvciBtdWx0aXBsZS1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQgY29tcHV0YXRpb25zIHdpdGggZXhhY3Qgcm91bmRpbmciCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wZnIub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYzKyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorCQkgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKK0RFUEVORFMgPSAiZ21wIGF1dG9jb25mLWFyY2hpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5tcGZyLm9yZy9tcGZyLSR7UFZ9L21wZnItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW9ic29sZXRlLUFSQy1hc20tY29uc3RyYWludHMucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiYjhkZDE5YmQ5YmIxZWM4ODMxYTZhNTgyYTczMDgwNzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjc4NzRhNjA4MjYzMDNlZTJmYjZhZmZjNmRjMGRkZDNlNzQ5ZTliZmNiNGM4NjU1ZTM5NTNkMDQ1OGE2ZTE2ZSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci1jdXJyZW50LyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2RiNmFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiTmV3IEdOVSBQb3J0YWJsZSBUaHJlYWRzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9zb2Z0d2FyZS9wdGgvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yY2FjZWQwYjI1ZGZlZmQ0YzYwMWQ5MmJkMTUxMTZkZVwKLSAgICAiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L25wdGgvbnB0aC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWJhMmRjNDMwMmQyZjMyYzY2NzM3YzQzZWQxOTFiMWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk0YTY5MGMxZjUzN2I5MmVkODI5ZDg2N2JlZTUzN2U0NmJlOTNmYmQ2MGIxNmMwNDYzMGZiYmZjZDlkYjNjMiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ucHRoLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJucHRoLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ucHRoLWNvbmZpZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxMGVmYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNi5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIk5ldyBHTlUgUG9ydGFibGUgVGhyZWFkcyBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvc29mdHdhcmUvcHRoLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmNhY2VkMGIyNWRmZWZkNGM2MDFkOTJiZDE1MTE2ZGVcCisgICAgIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9ucHRoL25wdGgtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjM3NWQxYTE1YWQ5NjlmMzJkMjVmMWE3NjMwOTI5ODU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzOTNhYmQ5YWRjZjA3NjJkMzQ3OThkYzM0ZmRjZjRkMGQyMmE4NDEwNzIxZTc2ZjFlM2FmY2QxZGFhNGUyZDEiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vbnB0aC1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBtdWx0aWxpYl9oZWFkZXIgCisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWJucHRoLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ucHRoLWNvbmZpZyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgb2VfbXVsdGlsaWJfaGVhZGVyIG5wdGguaAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDMtQWRkLXR5cGUtZGVmaW5pdGlvbnMtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMy1BZGQtdHlwZS1kZWZpbml0aW9ucy1mb3ItdGhlLVJJU0MtVi1hcmNoaXRlY3R1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdlMTQ3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDMtQWRkLXR5cGUtZGVmaW5pdGlvbnMtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoCkBAIC0wLDAgKzEsMTUwIEBACisjIEhHIGNoYW5nZXNldCBwYXRjaAorIyBVc2VyIEthcnN0ZW4gTWVya2VyIDxtZXJrZXJAZGViaWFuLm9yZz4KKyMgRGF0ZSAxNTIzOTc0MzMzIC03MjAwCisjIE5vZGUgSUQgZjQ3ODcxZTJhZWIxNmIzOWQ0ZjUxNjY5MGUyNWM4MWIwNGQ2ZDA1YQorIyBQYXJlbnQgIDc3NmRiOTZmODM0Y2I4NmU4ODYzMDUyMjAxZDU1ZjYwYTJkYTkxY2IKK0J1ZyAxMzA4NTg0LCBBZGQgdHlwZSBkZWZpbml0aW9ucyBmb3IgdGhlIFJJU0MtViBhcmNoaXRlY3R1cmUsIHI9a2FpZQorCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitbIENoYW5nZXMgYnkgQUY6CisgLSBSZWJhc2Ugb24gb3RoZXIgWW9jdG8gcGF0Y2hlcworXQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHBzOi8vaGcubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci9yZXYvZjQ3ODcxZTJhZWIxIF0KKworZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCisrKysgYi9wci9pbmNsdWRlL21kL19saW51eC5jZmcKK0BAIC0xMDE1LDE2ICsxMDE1LDEwOCBAQAorICNkZWZpbmUgUFJfQUxJR05fT0ZfRkxPQVQgICA0CisgI2RlZmluZSBQUl9BTElHTl9PRl9ET1VCTEUgIDQKKyAjZGVmaW5lIFBSX0FMSUdOX09GX1BPSU5URVIgNAorICNkZWZpbmUgUFJfQUxJR05fT0ZfV09SRCAgICA0CisgCisgI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRF9MT0cyICAgMgorICNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEX0xPRzIgIDMKKyAKKysjZWxpZiBkZWZpbmVkKF9fcmlzY3YpICYmIChfX3Jpc2N2X3hsZW4gPT0gMzIpCisrCisrI3VuZGVmICBJU19CSUdfRU5ESUFOCisrI2RlZmluZSBJU19MSVRUTEVfRU5ESUFOIDEKKysjdW5kZWYgIElTXzY0CisrCisrI2RlZmluZSBQUl9CWVRFU19QRVJfQllURSAgIDEKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9TSE9SVCAgMgorKyNkZWZpbmUgUFJfQllURVNfUEVSX0lOVCAgICA0CisrI2RlZmluZSBQUl9CWVRFU19QRVJfSU5UNjQgIDgKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9MT05HICAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0ZMT0FUICA0CisrI2RlZmluZSBQUl9CWVRFU19QRVJfRE9VQkxFIDgKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9XT1JEICAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEICA4CisrCisrI2RlZmluZSBQUl9CSVRTX1BFUl9CWVRFICAgIDgKKysjZGVmaW5lIFBSX0JJVFNfUEVSX1NIT1JUICAgMTYKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0lOVCAgICAgMzIKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0lOVDY0ICAgNjQKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0xPTkcgICAgMzIKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0ZMT0FUICAgMzIKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0RPVUJMRSAgNjQKKysjZGVmaW5lIFBSX0JJVFNfUEVSX1dPUkQgICAgMzIKKysKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0JZVEVfTE9HMiAgIDMKKysjZGVmaW5lIFBSX0JJVFNfUEVSX1NIT1JUX0xPRzIgIDQKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0lOVF9MT0cyICAgIDUKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0lOVDY0X0xPRzIgIDYKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0xPTkdfTE9HMiAgIDUKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0ZMT0FUX0xPRzIgIDUKKysjZGVmaW5lIFBSX0JJVFNfUEVSX0RPVUJMRV9MT0cyIDYKKysjZGVmaW5lIFBSX0JJVFNfUEVSX1dPUkRfTE9HMiAgIDUKKysKKysjZGVmaW5lIFBSX0FMSUdOX09GX1NIT1JUICAgMgorKyNkZWZpbmUgUFJfQUxJR05fT0ZfSU5UICAgICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9MT05HICAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0lOVDY0ICAgOAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfRkxPQVQgICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9ET1VCTEUgIDgKKysjZGVmaW5lIFBSX0FMSUdOX09GX1BPSU5URVIgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfV09SRCAgICA0CisrCisrI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRF9MT0cyICAyCisrI2RlZmluZSBQUl9CWVRFU19QRVJfRFdPUkRfTE9HMiAzCisrCisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiAoX19yaXNjdl94bGVuID09IDY0KQorKworKyN1bmRlZiAgSVNfQklHX0VORElBTgorKyNkZWZpbmUgSVNfTElUVExFX0VORElBTiAxCisrI2RlZmluZSBJU182NAorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX0JZVEUgICAxCisrI2RlZmluZSBQUl9CWVRFU19QRVJfU0hPUlQgIDIKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQgICAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0lOVDY0ICA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfTE9ORyAgIDgKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9GTE9BVCAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0RPVUJMRSA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRCAgIDgKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRCAgOAorKworKyNkZWZpbmUgUFJfQklUU19QRVJfQllURSAgICA4CisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVCAgIDE2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQgICAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NCAgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HICAgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVCAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEUgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEICAgIDY0CisrCisrI2RlZmluZSBQUl9CSVRTX1BFUl9CWVRFX0xPRzIgICAzCisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVF9MT0cyICA0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlRfTE9HMiAgICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NF9MT0cyICA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HX0xPRzIgICA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVF9MT0cyICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEVfTE9HMiA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEX0xPRzIgICA2CisrCisrI2RlZmluZSBQUl9BTElHTl9PRl9TSE9SVCAgIDIKKysjZGVmaW5lIFBSX0FMSUdOX09GX0lOVCAgICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfTE9ORyAgICA4CisrI2RlZmluZSBQUl9BTElHTl9PRl9JTlQ2NCAgIDgKKysjZGVmaW5lIFBSX0FMSUdOX09GX0ZMT0FUICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfRE9VQkxFICA4CisrI2RlZmluZSBQUl9BTElHTl9PRl9QT0lOVEVSIDgKKysjZGVmaW5lIFBSX0FMSUdOX09GX1dPUkQgICAgOAorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgMworKyNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEX0xPRzIgMworKworICNlbHNlCisgCisgI2Vycm9yICJVbmtub3duIENQVSBhcmNoaXRlY3R1cmUiCisgCisgI2VuZGlmCisgCisgI2lmbmRlZiBIQVZFX0xPTkdfTE9ORworICNkZWZpbmUJSEFWRV9MT05HX0xPTkcKK2RpZmYgLS1naXQgYS9wci9pbmNsdWRlL21kL19saW51eC5oIGIvcHIvaW5jbHVkZS9tZC9fbGludXguaAorLS0tIGEvcHIvaW5jbHVkZS9tZC9fbGludXguaAorKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguaAorQEAgLTU0LDE2ICs1NCwyMCBAQAorICNlbGlmIGRlZmluZWQoX19hdnIzMl9fKQorICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAiYXZyMzIiCisgI2VsaWYgZGVmaW5lZChfX20zMnJfXykKKyAjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgIm0zMnIiCisgI2VsaWYgZGVmaW5lZChfX25pb3MyX18pCisgI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJuaW9zMiIKKyAjZWxpZiBkZWZpbmVkKF9fb3Ixa19fKQorICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAib3IxayIKKysjZWxpZiBkZWZpbmVkKF9fcmlzY3YpICYmIChfX3Jpc2N2X3hsZW4gPT0gMzIpCisrI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJyaXNjdjMyIgorKyNlbGlmIGRlZmluZWQoX19yaXNjdikgJiYgKF9fcmlzY3ZfeGxlbiA9PSA2NCkKKysjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgInJpc2N2NjQiCisgI2Vsc2UKKyAjZXJyb3IgIlVua25vd24gQ1BVIGFyY2hpdGVjdHVyZSIKKyAjZW5kaWYKKyAjZGVmaW5lIFBSX0RMTF9TVUZGSVgJCSIuc28iCisgCisgI2RlZmluZSBfUFJfVk1CQVNFICAgICAgICAgICAgICAweDMwMDAwMDAwCisgI2RlZmluZSBfUFJfU1RBQ0tfVk1CQVNFCTB4NTAwMDAwMDAKKyAjZGVmaW5lIF9NRF9ERUZBVUxUX1NUQUNLX1NJWkUJNjU1MzZMCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDQtQWRkLUFSQy1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwNC1BZGQtQVJDLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ2ODYwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDQtQWRkLUFSQy1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsODggQEAKK0Zyb20gNmNiNWIwYmU4ODM3MjIyYTFlMDE3NDVmMmNmNTdjZDBlNTkzMTg2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudG9pbmUgVGVuYXJ0IDxhbnRvaW5lLnRlbmFydEBmcmVlLWVsZWN0cm9ucy5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjI4OjIwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBBUkMgc3VwcG9ydAorCitbQWxleGV5OiBSZWJhc2VkIG9uIHRvcCBvZiBvdGhlciBwYXRjaGVzIGxpa2UgUmlzY1YsIE5JT1MyIGV0Y10uCisKK1NpZ25lZC1vZmYtYnk6IEFudG9pbmUgVGVuYXJ0IDxhbnRvaW5lLnRlbmFydEBib290bGluLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhleSBCcm9ka2luIDxhYnJvZGtpbkBzeW5vcHN5cy5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5MjM3OCBdCistLS0KKyBwci9pbmNsdWRlL21kL19saW51eC5jZmcgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgcHIvaW5jbHVkZS9tZC9fbGludXguaCAgIHwgIDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworaW5kZXggZmVjODUyNTM3OGRjLi41ZjRmYTBlYWM3ODMgMTAwNjQ0CistLS0gYS9wci9pbmNsdWRlL21kL19saW51eC5jZmcKKysrKyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworQEAgLTExNTcsNiArMTE1Nyw1MSBAQAorICNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgMworICNkZWZpbmUgUFJfQllURVNfUEVSX0RXT1JEX0xPRzIgMworIAorKyNlbGlmIGRlZmluZWQoX19hcmNfXykKKysKKysjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMQorKyN1bmRlZiAgSVNfQklHX0VORElBTgorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX0JZVEUgICAxCisrI2RlZmluZSBQUl9CWVRFU19QRVJfU0hPUlQgIDIKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9JTlQgICAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0lOVDY0ICA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfTE9ORyAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9GTE9BVCAgNAorKyNkZWZpbmUgUFJfQllURVNfUEVSX0RPVUJMRSA4CisrI2RlZmluZSBQUl9CWVRFU19QRVJfV09SRCAgIDQKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRCAgOAorKworKyNkZWZpbmUgUFJfQklUU19QRVJfQllURSAgICA4CisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVCAgIDE2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQgICAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NCAgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HICAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVCAgIDMyCisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEUgIDY0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEICAgIDMyCisrCisrI2RlZmluZSBQUl9CSVRTX1BFUl9CWVRFX0xPRzIgICAzCisrI2RlZmluZSBQUl9CSVRTX1BFUl9TSE9SVF9MT0cyICA0CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlRfTE9HMiAgICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9JTlQ2NF9MT0cyICA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9MT05HX0xPRzIgICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9GTE9BVF9MT0cyICA1CisrI2RlZmluZSBQUl9CSVRTX1BFUl9ET1VCTEVfTE9HMiA2CisrI2RlZmluZSBQUl9CSVRTX1BFUl9XT1JEX0xPRzIgICA1CisrCisrI2RlZmluZSBQUl9BTElHTl9PRl9TSE9SVCAgIDIKKysjZGVmaW5lIFBSX0FMSUdOX09GX0lOVCAgICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfTE9ORyAgICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9JTlQ2NCAgIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX0ZMT0FUICAgNAorKyNkZWZpbmUgUFJfQUxJR05fT0ZfRE9VQkxFICA0CisrI2RlZmluZSBQUl9BTElHTl9PRl9QT0lOVEVSIDQKKysjZGVmaW5lIFBSX0FMSUdOX09GX1dPUkQgICAgNAorKworKyNkZWZpbmUgUFJfQllURVNfUEVSX1dPUkRfTE9HMiAgIDIKKysjZGVmaW5lIFBSX0JZVEVTX1BFUl9EV09SRF9MT0cyICAzCisrCisgI2Vsc2UKKyAKKyAjZXJyb3IgIlVua25vd24gQ1BVIGFyY2hpdGVjdHVyZSIKK2RpZmYgLS1naXQgYS9wci9pbmNsdWRlL21kL19saW51eC5oIGIvcHIvaW5jbHVkZS9tZC9fbGludXguaAoraW5kZXggOGUwNGZhZDQ3OWExLi42MjhiMTIxN2U5YzggMTAwNjQ0CistLS0gYS9wci9pbmNsdWRlL21kL19saW51eC5oCisrKysgYi9wci9pbmNsdWRlL21kL19saW51eC5oCitAQCAtNjMsNiArNjMsOCBAQAorICNkZWZpbmUgX1BSX1NJX0FSQ0hJVEVDVFVSRSAicmlzY3YzMiIKKyAjZWxpZiBkZWZpbmVkKF9fcmlzY3YpICYmIChfX3Jpc2N2X3hsZW4gPT0gNjQpCisgI2RlZmluZSBfUFJfU0lfQVJDSElURUNUVVJFICJyaXNjdjY0IgorKyNlbGlmIGRlZmluZWQoX19hcmNfXykKKysjZGVmaW5lIF9QUl9TSV9BUkNISVRFQ1RVUkUgImFyYyIKKyAjZWxzZQorICNlcnJvciAiVW5rbm93biBDUFUgYXJjaGl0ZWN0dXJlIgorICNlbmRpZgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTkuYmIKaW5kZXggZGUyYzg3MS4uMDIxMmJlNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xOS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjE5LmJiCkBAIC0xMSw2ICsxMSw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLXR5cGUtZGVmaW5pdGlvbnMtZm9yLXRoZS1SSVNDLVYtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLUFSQy1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAogIgogCkBAIC0xNDgsNyArMTUwLDkgQEAKICAgICB4bm90aWZ5IFwKICAgICB6ZXJvbGVuIgogCi1pbmhlcml0IGF1dG90b29scworaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9uc3ByLWNvbmZpZyIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzEwZjMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLUJ1Zy0xNDM3NzM0LVVzZS1zbnByaW50Zi1pbi1zaWduLmMtci10dGF1YmVydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi1Gcm9tIDZmN2Q3YmU5OTk3YmE2NzI3YTVhZDdjMzgwMGRmOTA1MTE2MGRjMTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gVGhvbXNvbiA8bWFydGluLnRob21zb25AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMyBGZWIgMjAxOCAxMjozMDo1OCArMTEwMAotU3ViamVjdDogW1BBVENIXSBCdWcgMTQzNzczNCAtIFVzZSBzbnByaW50ZiBpbiBzaWduLmMsIHI9dHRhdWJlcnQKLQotLS1IRy0tCi1leHRyYSA6IHJlYmFzZV9zb3VyY2UgOiA5NzkyMWVjZTcxZmY4NmIxOGQzMmI4OTE1OTE2MDgyOTBlZWQ0ZDgzCi0tLS0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbnNzLWRldi9uc3MvY29tbWl0LzBhOTA3OGIzY2RlOTdhZGQ3YzgyNWM5ZDEzNDY3YTg0MDFhZDBjODgjZGlmZi1iNDI1MTIxNTFkYzEzNzUzNzA5MWY4MjNmNzcwMTgwNC5wYXRjaF0KLQotIG5zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jIGIvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKLWluZGV4IDZlNzc2MDY5YS4uNmY4ZTQzOTQ2IDEwMDY0NAotLS0tIGEvbnNzL2NtZC9zaWdudG9vbC9zaWduLmMKLSsrKyBiL25zcy9jbWQvc2lnbnRvb2wvc2lnbi5jCi1AQCAtNDMsNiArNDMsNyBAQCBTaWduQXJjaGl2ZShjaGFyICp0cmVlLCBjaGFyICprZXlOYW1lLCBjaGFyICp6aXBfZmlsZSwgaW50IGphdmFzY3JpcHQsCi0gICAgIGludCBzdGF0dXM7Ci0gICAgIGNoYXIgdGVtcGZuW0ZOU0laRV0sIGZ1bGxmbltGTlNJWkVdOwotICAgICBpbnQga2V5VHlwZSA9IHJzYUtleTsKLSsgICAgaW50IGNvdW50OwotIAotICAgICBtZXRhZmlsZSA9IG1ldGFfZmlsZTsKLSAgICAgb3B0aW1pemUgPSBfb3B0aW1pemU7Ci1AQCAtODEsOSArODIsMTggQEAgU2lnbkFyY2hpdmUoY2hhciAqdHJlZSwgY2hhciAqa2V5TmFtZSwgY2hhciAqemlwX2ZpbGUsIGludCBqYXZhc2NyaXB0LAotICAgICAgICAgfQotIAotICAgICAgICAgLyogcnNhL2RzYSB0byB6aXAgKi8KLS0gICAgICAgIHNwcmludGYodGVtcGZuLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJyc2EiKSk7Ci0tICAgICAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKLSsgICAgICAgIGNvdW50ID0gc25wcmludGYodGVtcGZuLCBzaXplb2YodGVtcGZuKSwgIk1FVEEtSU5GLyVzLiVzIiwgYmFzZSwgKGtleVR5cGUgPT0gZHNhS2V5ID8gImRzYSIgOiAicnNhIikpOwotKyAgICAgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7Ci0rICAgICAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIGtleSBtZXRhZGF0YVxuIik7Ci0rICAgICAgICAgICAgZXJyb3JDb3VudCsrOwotKyAgICAgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgICAgICB9Ci0rICAgICAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxmbikpIHsKLSsgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKLSsgICAgICAgICAgICBlcnJvckNvdW50Kys7Ci0rICAgICAgICAgICAgZXhpdChFUlJYKTsKLSsgICAgICAgIH0KLSAgICAgICAgIEp6aXBBZGQoZnVsbGZuLCB0ZW1wZm4sIHppcGZpbGUsIGNvbXByZXNzaW9uX2xldmVsKTsKLSAKLSAgICAgICAgIC8qIExvb3AgdGhyb3VnaCBhbGwgZmlsZXMgJiBzdWJkaXJlY3RvcmllcywgYWRkIHRvIGFyY2hpdmUgKi8KLUBAIC05MywyMCArMTAzLDQ0IEBAIFNpZ25BcmNoaXZlKGNoYXIgKnRyZWUsIGNoYXIgKmtleU5hbWUsIGNoYXIgKnppcF9maWxlLCBpbnQgamF2YXNjcmlwdCwKLSAgICAgfQotICAgICAvKiBtZiB0byB6aXAgKi8KLSAgICAgc3RyY3B5KHRlbXBmbiwgIk1FVEEtSU5GL21hbmlmZXN0Lm1mIik7Ci0tICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOwotKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgewotKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIG1hbmlmZXN0XG4iKTsKLSsgICAgICAgIGVycm9yQ291bnQrKzsKLSsgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgIH0KLSAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOwotIAotICAgICAvKiBzZiB0byB6aXAgKi8KLS0gICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy5zZiIsIGJhc2UpOwotLSAgICBzcHJpbnRmKGZ1bGxmbiwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKLSsgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuc2YiLCBiYXNlKTsKLSsgICAgaWYgKGNvdW50ID49IHNpemVvZih0ZW1wZm4pKSB7Ci0rICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUgc2YgbWV0YWRhdGFcbiIpOwotKyAgICAgICAgZXJyb3JDb3VudCsrOwotKyAgICAgICAgZXhpdChFUlJYKTsKLSsgICAgfQotKyAgICBjb3VudCA9IHNucHJpbnRmKGZ1bGxmbiwgc2l6ZW9mKGZ1bGxmbiksICIlcy8lcyIsIHRyZWUsIHRlbXBmbik7Ci0rICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgewotKyAgICAgICAgUFJfZnByaW50ZihlcnJvckZELCAidW5hYmxlIHRvIHdyaXRlIHNmIG1ldGFkYXRhXG4iKTsKLSsgICAgICAgIGVycm9yQ291bnQrKzsKLSsgICAgICAgIGV4aXQoRVJSWCk7Ci0rICAgIH0KLSAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOwotIAotICAgICAvKiBBZGQgdGhlIHJzYS9kc2EgZmlsZSB0byB0aGUgemlwIGFyY2hpdmUgbm9ybWFsbHkgKi8KLSAgICAgaWYgKCF4cGlfYXJjKSB7Ci0gICAgICAgICAvKiByc2EvZHNhIHRvIHppcCAqLwotLSAgICAgICAgc3ByaW50Zih0ZW1wZm4sICJNRVRBLUlORi8lcy4lcyIsIGJhc2UsIChrZXlUeXBlID09IGRzYUtleSA/ICJkc2EiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogInJzYSIpKTsKLS0gICAgICAgIHNwcmludGYoZnVsbGZuLCAiJXMvJXMiLCB0cmVlLCB0ZW1wZm4pOwotKyAgICAgICAgY291bnQgPSBzbnByaW50Zih0ZW1wZm4sIHNpemVvZih0ZW1wZm4pLCAiTUVUQS1JTkYvJXMuJXMiLCBiYXNlLCAoa2V5VHlwZSA9PSBkc2FLZXkgPyAiZHNhIiA6ICJyc2EiKSk7Ci0rICAgICAgICBpZiAoY291bnQgPj0gc2l6ZW9mKHRlbXBmbikpIHsKLSsgICAgICAgICAgICBQUl9mcHJpbnRmKGVycm9yRkQsICJ1bmFibGUgdG8gd3JpdGUga2V5IG1ldGFkYXRhXG4iKTsKLSsgICAgICAgICAgICBlcnJvckNvdW50Kys7Ci0rICAgICAgICAgICAgZXhpdChFUlJYKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGNvdW50ID0gc25wcmludGYoZnVsbGZuLCBzaXplb2YoZnVsbGZuKSwgIiVzLyVzIiwgdHJlZSwgdGVtcGZuKTsKLSsgICAgICAgIGlmIChjb3VudCA+PSBzaXplb2YoZnVsbGZuKSkgewotKyAgICAgICAgICAgIFBSX2ZwcmludGYoZXJyb3JGRCwgInVuYWJsZSB0byB3cml0ZSBrZXkgbWV0YWRhdGFcbiIpOwotKyAgICAgICAgICAgIGVycm9yQ291bnQrKzsKLSsgICAgICAgICAgICBleGl0KEVSUlgpOwotKyAgICAgICAgfQotICAgICAgICAgSnppcEFkZChmdWxsZm4sIHRlbXBmbiwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOwotICAgICB9Ci0gCi1AQCAtNDA4LDYgKzQ0Miw3IEBAIHN0YXRpYyBpbnQKLSBtYW5pZmVzdG9feHBpX2ZuKGNoYXIgKnJlbHBhdGgsIGNoYXIgKmJhc2VkaXIsIGNoYXIgKnJlbGRpciwgY2hhciAqZmlsZW5hbWUsIHZvaWQgKmFyZykKLSB7Ci0gICAgIGNoYXIgZnVsbG5hbWVbRk5TSVpFXTsKLSsgICAgaW50IGNvdW50OwotIAotICAgICBpZiAodmVyYm9zaXR5ID49IDApIHsKLSAgICAgICAgIFBSX2ZwcmludGYob3V0cHV0RkQsICItLT4gJXNcbiIsIHJlbHBhdGgpOwotQEAgLTQyMSw3ICs0NTYsMTAgQEAgbWFuaWZlc3RvX3hwaV9mbihjaGFyICpyZWxwYXRoLCBjaGFyICpiYXNlZGlyLCBjaGFyICpyZWxkaXIsIGNoYXIgKmZpbGVuYW1lLCB2b2kKLSAgICAgICAgIGlmICghUExfSGFzaFRhYmxlTG9va3VwKGV4dGVuc2lvbnMsIGV4dCkpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLS0gICAgc3ByaW50ZihmdWxsbmFtZSwgIiVzLyVzIiwgYmFzZWRpciwgcmVscGF0aCk7Ci0rICAgIGNvdW50ID0gc25wcmludGYoZnVsbG5hbWUsIHNpemVvZihmdWxsbmFtZSksICIlcy8lcyIsIGJhc2VkaXIsIHJlbHBhdGgpOwotKyAgICBpZiAoY291bnQgPj0gc2l6ZW9mKGZ1bGxuYW1lKSkgewotKyAgICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSAgICAgSnppcEFkZChmdWxsbmFtZSwgcmVscGF0aCwgemlwZmlsZSwgY29tcHJlc3Npb25fbGV2ZWwpOwotIAotICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBiODY5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGM4ZWFkZmNkZmJjMWQ1YTQ3OTllOWEyNjRiMGY4NTljYjU5NTRjMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotRGF0ZTogVHVlLCAxMyBEZWMgMjAxNiAxMTo0MDo0NyAtMDcwMAotU3ViamVjdDogW1BBVENIIDcvN10gRml4IGNvbXBpbGF0aW9uIGZvciBYMzIKLQotWDMyIHVzZXMgMzItYml0IHBvaW50ZXJzLCBub3QgNjQtYml0LgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIG5zcy9saWIvZnJlZWJsL3BvbHkxMzA1LWRvbm5hLXg2NC1zc2UyLWluY3JlbWVudGFsLXNvdXJjZS5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbnNzL2xpYi9mcmVlYmwvcG9seTEzMDUtZG9ubmEteDY0LXNzZTItaW5jcmVtZW50YWwtc291cmNlLmMgYi9uc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYwotaW5kZXggMmEzMzAxZS4uZDRhZGU0MSAxMDA2NDQKLS0tLSBhL25zcy9saWIvZnJlZWJsL3BvbHkxMzA1LWRvbm5hLXg2NC1zc2UyLWluY3JlbWVudGFsLXNvdXJjZS5jCi0rKysgYi9uc3MvbGliL2ZyZWVibC9wb2x5MTMwNS1kb25uYS14NjQtc3NlMi1pbmNyZW1lbnRhbC1zb3VyY2UuYwotQEAgLTg3LDcgKzg3LDExIEBAIHN0YXRpYyBwb2x5MTMwNV9zdGF0ZV9pbnRlcm5hbCBJTkxJTkUKLSAgICAgKgotICAgICBwb2x5MTMwNV9hbGlnbmVkX3N0YXRlKHBvbHkxMzA1X3N0YXRlICpzdGF0ZSkKLSB7Ci0rI2lmZGVmIF9fSUxQMzJfXwotKyAgICByZXR1cm4gKHBvbHkxMzA1X3N0YXRlX2ludGVybmFsICopKCgodWludDMyX3Qpc3RhdGUgKyA2MykgJiB+NjMpOwotKyNlbHNlCi0gICAgIHJldHVybiAocG9seTEzMDVfc3RhdGVfaW50ZXJuYWwgKikoKCh1aW50NjRfdClzdGF0ZSArIDYzKSAmIH42Myk7Ci0rI2VuZGlmCi0gfQotIAotIC8qIGNvcHkgMC02MyBieXRlcyAqLwotLS0gCi0yLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmstY2VydDkuZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q0YmNmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1jZXJ0OS5kYgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0N2YwOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaAppbmRleCA4NmIxYjYwLi5kZTgxMmQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKQEAgLTE4LDExICsxOCwxMSBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1JbmRleDogbnNzLTMuMjQvbnNzL2NvcmVjb25mL1dlcnJvci5taworSW5kZXg6IG5zcy0zLjM3LjEvbnNzL2NvcmVjb25mL1dlcnJvci5tawogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcy0zLjI0Lm9yaWcvbnNzL2NvcmVjb25mL1dlcnJvci5tawotKysrIG5zcy0zLjI0L25zcy9jb3JlY29uZi9XZXJyb3IubWsKLUBAIC01NCw3ICs1NCw3IEBAIGlmbmRlZiBXQVJOSU5HX0NGTEFHUworLS0tIG5zcy0zLjM3LjEub3JpZy9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCisrKysgbnNzLTMuMzcuMS9uc3MvY29yZWNvbmYvV2Vycm9yLm1rCitAQCAtNTYsNyArNTYsNyBAQCBpZm5kZWYgV0FSTklOR19DRkxBR1MKICAgICAgaWZkZWYgQ0NfSVNfQ0xBTkcKICAgICAgICAjIC1RdW51c2VkLWFyZ3VtZW50cyA6IGNsYW5nIG9iamVjdHMgdG8gYXJndW1lbnRzIHRoYXQgaXQgZG9lc24ndCB1bmRlcnN0YW5kCiAgICAgICAgIyAgICBhbmQgZml4aW5nIHRoaXMgd291bGQgcmVxdWlyZSByZWFyY2hpdGVjdHVyZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1idWlsZC1oYWNsLXBvbHkxMzA1LWFhcmNoNjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWJ1aWxkLWhhY2wtcG9seTEzMDUtYWFyY2g2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI3NmY4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWJ1aWxkLWhhY2wtcG9seTEzMDUtYWFyY2g2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgRGFpa2kgVWVubyA8ZHVlbm9AcmVkaGF0LmNvbT4KLSMgRGF0ZSAxNTE2NzEwNTc0IC0zNjAwCi0jICAgICAgVHVlIEphbiAyMyAxMzoyOTozNCAyMDE4ICswMTAwCi0jIE5vZGUgSUQgMjdmMjdjZTIxYzJjNmZmNWE0N2ZhOWUxN2M0MzhiMDAwMzY2YzljOQotIyBQYXJlbnQgIGJlMWRjYTVhYzgwNTQxZDNiODFhOGRhOWQ0Mjg1NGQ4YjFjY2VlZmIKLUJ1aWxkIEhhY2xfUG9seTEzMDVfNjQubyBvbiBhYXJjaDY0IGV2ZW4gd2l0aCBtYWtlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLWh0dHBzOi8vYnVnMTQzMjQ1NS5ibW9hdHRhY2htZW50cy5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9ODk0NDY5MQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5zcy0zLjM1Lm9yaWcvbnNzL2xpYi9mcmVlYmwvTWFrZWZpbGUKLSsrKyBuc3MtMy4zNS9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQotQEAgLTUzMyw3ICs1MzMsMTIgQEAgaWZuZGVmIE5TU19ESVNBQkxFX0NIQUNIQVBPTFkKLSAgICAgICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwX3ZlYy5jCi0gICAgICAgICBlbmRpZgotICAgICBlbHNlCi0tICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKLSsgICAgICAgIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCi0rICAgICAgICAgICAgRVhUUkFfU1JDUyArPSBIYWNsX1BvbHkxMzA1XzY0LmMKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBFWFRSQV9TUkNTICs9IHBvbHkxMzA1LmMKLSsgICAgICAgIGVuZGlmCi0rCi0gICAgICAgICBFWFRSQV9TUkNTICs9IGNoYWNoYTIwLmMKLSAgICAgICAgIFZFUklGSUVEX1NSQ1MgKz0gSGFjbF9DaGFjaGEyMC5jCi0gICAgIGVuZGlmICMgeDg2XzY0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoCmluZGV4IDk5NDJiZjEuLjNhODE3ZmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9wcWcuYy1VTExfYWRkZW5kLnBhdGNoCkBAIC02LDExICs2LDExIEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBuc3MtMy4yNC9uc3MvbGliL2ZyZWVibC9wcWcuYworSW5kZXg6IG5zcy0zLjM3LjEvbnNzL2xpYi9mcmVlYmwvcHFnLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuc3MtMy4yNC5vcmlnL25zcy9saWIvZnJlZWJsL3BxZy5jCi0rKysgbnNzLTMuMjQvbnNzL2xpYi9mcmVlYmwvcHFnLmMKLUBAIC0zMjIsOCArMzIyLDggQEAgZ2VuZXJhdGVfaF9jYW5kaWRhdGUoU0VDSXRlbSAqaGl0LCBtcF9pbgorLS0tIG5zcy0zLjM3LjEub3JpZy9uc3MvbGliL2ZyZWVibC9wcWcuYworKysrIG5zcy0zLjM3LjEvbnNzL2xpYi9mcmVlYmwvcHFnLmMKK0BAIC0zMjYsOCArMzI2LDggQEAgZ2VuZXJhdGVfaF9jYW5kaWRhdGUoU0VDSXRlbSAqaGl0LCBtcF9pbgogIAogIHN0YXRpYyBTRUNTdGF0dXMKICBhZGRUb1NlZWQoY29uc3QgU0VDSXRlbSAqc2VlZCwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTI2NGU5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CkBAIC0wLDAgKzEsNSBAQAorbGlicmFyeT0KK25hbWU9TlNTIEludGVybmFsIFBLQ1MgIzExIE1vZHVsZQorcGFyYW1ldGVycz1jb25maWdkaXI9J3NxbDovZXRjL3BraS9uc3NkYicgY2VydFByZWZpeD0nJyBrZXlQcmVmaXg9Jycgc2VjbW9kPSdzZWNtb2QuZGInIGZsYWdzPSB1cGRhdGVkaXI9JycgdXBkYXRlQ2VydFByZWZpeD0nJyB1cGRhdGVLZXlQcmVmaXg9JycgdXBkYXRlaWQ9JycgdXBkYXRlVG9rZW5EZXNjcmlwdGlvbj0nJyAKK05TUz1GbGFncz1pbnRlcm5hbCxjcml0aWNhbCB0cnVzdE9yZGVyPTc1IGNpcGhlck9yZGVyPTEwMCBzbG90UGFyYW1zPSgxPXtzbG90RmxhZ3M9W0VDQyxSU0EsRFNBLERILFJDMixSQzQsREVTLFJBTkRPTSxTSEExLE1ENSxNRDIsU1NMLFRMUyxBRVMsQ2FtZWxsaWEsU0VFRCxTSEEyNTYsU0hBNTEyXSBhc2twdz1hbnkgdGltZW91dD0zMH0pCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZjE5MTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuMzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgotCi1WRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAotICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtY29tcGlsYXRpb24tZm9yLVgzMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtYnVpbGQtaGFjbC1wb2x5MTMwNS1hYXJjaDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQnVnLTE0Mzc3MzQtVXNlLXNucHJpbnRmLWluLXNpZ24uYy1yLXR0YXViZXJ0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQ2N2VjOWU2NWM1YWViMzI1NGE1MDI1MDQ5MGY1ZjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjQxMjdkZTA5YmVkZTM5ZjVmZDBmNzg5ZDMzYzM1MDRjNWQyNjFlNjllYTAzMDIyZDQ2YjMxOWIzZTMyZjZmYSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MvTlNTX1JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTlNTXyg/UDxwdmVyPi4rKV9yZWxlYXNlX25vdGVzIgotCi1pbmhlcml0IHNpdGVpbmZvCi0KLURFUEVORFMgPSAic3FsaXRlMyBuc3ByIHpsaWIgbnNzLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInNxbGl0ZTMtbmF0aXZlIG5zcHItbmF0aXZlIHpsaWItbmF0aXZlIgotUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKLQotVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKLVREUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgewotICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNQUl9MSUJfRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX1dFUlJPUj0wCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgZXhwb3J0IExERkxBR1M9IiIKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5Ci0gICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQotICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgotICAgIGV4cG9ydCBOQVRJVkVfRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLSAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQotCi0gICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KLSAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQotICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKLSAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKLSAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQotCi0gICAgZXhwb3J0IE9TX1JFTEVBU0U9My40Ci0gICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAotICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4Ci0KLSAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYwotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPXBwYzY0Ci0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9bWlwcwotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgICMgbnNzIHByZXR0eSBtdWNoIGRvZXMgaXRzIG93biB0aGluZyB3aXRoIENGTEFHUywgc28gd2UgcHV0IHRoZW0gaW50byBDQy4KLSAgICAjIE9wdGltaXphdGlvbiB3aWxsIGdldCBjbG9iYmVyZWQsIGJ1dCBtb3N0IG9mIHRoZSBzdHVmZiB3aWxsIHN1cnZpdmUuCi0gICAgIyBUaGUgbW90aXZhdGlvbiBmb3IgdGhpcyBpcyB0byBwb2ludCB0byB0aGUgY29ycmVjdCBwbGFjZSBmb3IgZGVidWcKLSAgICAjIHNvdXJjZSBmaWxlcyBhbmQgQ0ZMQUdTIGRvZXMgdGhhdC4gIE5vdGhpbmcgdXNlcyBDQ0MuCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gJHtDRkxBR1N9IgotICAgIG1ha2UgLUMgLi9uc3MgQ0NDPSIke0NYWH0gLWciIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgUlBBVEg9IiR7UlBBVEh9IgotfQotZG9fY29tcGlsZVt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgIG1ha2UgLUMgLi9uc3MgXAotICAgICAgICBDQ0M9IiR7Q1hYfSIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBTT1VSQ0VfTElCX0RJUj0iJHtURH0vJHtsaWJkaXJ9IiBcCi0gICAgICAgIFNPVVJDRV9CSU5fRElSPSIke1REfS8ke2JpbmRpcn0iIFwKLSAgICAgICAgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS8KLSAgICBmb3IgZmlsZSBpbiAke1N9L2Rpc3QvKi5PQkovbGliLyouc287IGRvCi0gICAgICAgIGVjaG8gIkluc3RhbGxpbmcgYGJhc2VuYW1lICRmaWxlYC4uLiIKLSAgICAgICAgY3AgJGZpbGUgICR7RH0vJHtsaWJkaXJ9LwotICAgIGRvbmUKLQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvLio7IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgICAgIGxuIC1zZiAkKGJhc2VuYW1lICRzaGFyZWRfbGliKSAke0R9LyR7bGliZGlyfS8kKGJhc2VuYW1lICRzaGFyZWRfbGliIC4xb2UpCi0gICAgICAgIGZpCi0gICAgZG9uZQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIC1hICEgLWUgJHtEfS8ke2xpYmRpcn0vJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgZmkKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzCi0gICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMgZGlzdC9wdWJsaWMvbnNzLyoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBmb3IgYmluYXJ5IGluICR7VER9LyR7YmluZGlyfS8qOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtdCAke0R9LyR7YmluZGlyfSAkYmluYXJ5Ci0gICAgZG9uZQotfQotZG9faW5zdGFsbFt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgQ3JlYXRlIGVtcHR5IC5jaGsgZmlsZXMgZm9yIHRoZSBOU1MgbGlicmFyaWVzIGF0IGJ1aWxkIHRpbWUuIFRoZXkgY291bGQKLSAgICAjIGJlIHJlZ2VuZXJhdGVkIGF0IHRhcmdldCdzIGJvb3QgdGltZS4KLSAgICBmb3IgZmlsZSBpbiBsaWJzb2Z0b2tuMy5jaGsgbGliZnJlZWJsMy5jaGsgbGlibnNzZGJtMy5jaGs7IGRvCi0gICAgICAgIHRvdWNoICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgICAgIGNobW9kIDc1NSAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgIGRvbmUKLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1dPUktESVJ9L3NpZ25saWJzLnNoICR7RH0vJHtiaW5kaXJ9L3NpZ25saWJzLnNoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLwotICAgIHNlZCAncy8lTlNTX1ZFUlNJT04lLyR7UFZ9LycgJHtXT1JLRElSfS9uc3MucGMuaW4gfCBzZWQgJ3MvJU5TUFJfVkVSU0lPTiUvNC45LjIvJyA+ICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FUFJFRklYOiR7cHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FTElCRElSOiR7bGliZGlyfTpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotICAgIHNlZCAtaSBzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn0vbnNzMzpnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcy5wYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgIyBDcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZQotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8KLSAgICB0b3VjaCAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2VydHV0aWwgLU4gLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyAtZiAuL2VtcHR5X3Bhc3N3b3JkCi0gICAgY2htb2QgNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8qLmRiCi0gICAgcm0gLi9lbXB0eV9wYXNzd29yZAotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLSAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsc2UKLSAgICAgICAgc2lnbmxpYnMuc2gKLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCi1GSUxFU18ke1BOfS1zbWltZSA9ICJcCi0gICAgJHtiaW5kaXJ9L3NtaW1lIFwKLSIKLUZJTEVTXyR7UE59ID0gIlwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke2JpbmRpcn0gXAotICAgICR7bGliZGlyfS9saWIqLmNoayBcCi0gICAgJHtsaWJkaXJ9L2xpYiouc28gXAotICAgICIKLUZJTEVTXyR7UE59LWRldiA9ICJcCi0gICAgJHtsaWJkaXJ9L25zcyBcCi0gICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKLSAgICAke2luY2x1ZGVkaXJ9LyogXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjM5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYzk1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zOS5iYgpAQCAtMCwwICsxLDI2NCBAQAorU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCitkZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKK3NlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCitBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAorVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCit2MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNUEwtMi4wIHwgKE1QTC0yLjAgJiBHUEwtMi4wKykgfCAoTVBMLTIuMCAmIExHUEwtMi4xKykiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25zcy9DT1BZSU5HO21kNT0zYjFlODhlMWI5YzBiNWE0YjI4ODFkNDZjY2UwNmExOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0U7bWQ1PTQ5MWYxNThkMDlkOTQ4NDY2YWZjZTg1ZDZmMWZlMThmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25zcy9saWIvZnJlZWJsL21waS9kb2MvTElDRU5TRS1NUEw7bWQ1PTVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgorCitWRVJTSU9OX0RJUiA9ICIke0BkLmdldFZhcignQlAnKS51cHBlcigpLnJlcGxhY2UoJy0nLCAnXycpLnJlcGxhY2UoJy4nLCAnXycpICsgJ19SVE0nfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9tb3ppbGxhLm9yZy9zZWN1cml0eS9uc3MvcmVsZWFzZXMvJHtWRVJTSU9OX0RJUn0vc3JjLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MucGMuaW4gXAorICAgICAgICAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ibGFuay1jZXJ0OS5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9ibGFuay1rZXk0LmRiIFwKKyAgICAgICAgICAgZmlsZTovL3N5c3RlbS1wa2NzMTEudHh0IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTA3MjBmYzcwZmQ0ODNkZTFiMDg1NDAyZmIxMGVkNTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmJlNjRkZDc2ZjIxMjQxNWNjOGJjMzQzNDNhYzFlNzM4OTA0OGRiNGRiOWEwMjNhODQ4NzNjNDExZGM1ODY0YiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9OU1MvTlNTX1JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTlNTXyg/UDxwdmVyPi4rKV9yZWxlYXNlX25vdGVzIgorCitpbmhlcml0IHNpdGVpbmZvCisKK0RFUEVORFMgPSAic3FsaXRlMyBuc3ByIHpsaWIgbnNzLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInNxbGl0ZTMtbmF0aXZlIG5zcHItbmF0aXZlIHpsaWItbmF0aXZlIgorUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKKworVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKK1REUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgeworICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KKyAgICBleHBvcnQgTlNQUl9MSUJfRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX1dFUlJPUj0wCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAjIE5lZWQgdG8gc2V0IFJQQVRIIHNvIHRoYXQgY2hycGF0aCB3aWxsIGRvIGl0cyBqb2IgY29ycmVjdGx5CisgICAgUlBBVEg9Ii1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgsJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0iCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBOQVRJVkVfRkxBR1M9IiR7QlVJTERfQ0ZMQUdTfSIKKyAgICBleHBvcnQgQlVJTERfT1BUPTEKKworICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKKyAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD0iYWFyY2g2NCIKKyAgICBlbHNlCisgICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgorICAgIGZpCisKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KKyAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQorICAgICMKKyAgICAjIG5zcyBwcmV0dHkgbXVjaCBkb2VzIGl0cyBvd24gdGhpbmcgd2l0aCBDRkxBR1MsIHNvIHdlIHB1dCB0aGVtIGludG8gQ0MuCisgICAgIyBPcHRpbWl6YXRpb24gd2lsbCBnZXQgY2xvYmJlcmVkLCBidXQgbW9zdCBvZiB0aGUgc3R1ZmYgd2lsbCBzdXJ2aXZlLgorICAgICMgVGhlIG1vdGl2YXRpb24gZm9yIHRoaXMgaXMgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIGRlYnVnCisgICAgIyBzb3VyY2UgZmlsZXMgYW5kIENGTEFHUyBkb2VzIHRoYXQuICBOb3RoaW5nIHVzZXMgQ0NDLgorICAgICMKKyAgICBleHBvcnQgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSIKKyAgICBtYWtlIC1DIC4vbnNzIENDQz0iJHtDWFh9IC1nIiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFJQQVRIPSIke1JQQVRIfSIKK30KK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCisKK2RvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgZXhwb3J0IExERkxBR1M9IiIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IEJVSUxEX09QVD0xCisKKyAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiYWFyY2g2NF9iZSIgXTsgdGhlbgorICAgICAgICBDUFVfQVJDSD1hYXJjaDY0CisgICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfNjQ9MQorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCisgICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKKyAgICBmaQorCisgICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCisKKyAgICBtYWtlIC1DIC4vbnNzIFwKKyAgICAgICAgQ0NDPSIke0NYWH0iIFwKKyAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKKyAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAorICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCisgICAgICAgIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCisgICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbworICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCisgICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KKyAgICBkb25lCisKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbworICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KKyAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMworICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9CisgICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQorICAgIGRvbmUKK30KK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgSXQgdXNlZCB0byBjYWxsIGNlcnR1dGlsIHRvIGNyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlIHdpdGggZW1wdHkgcGFzc3dvcmQgYXQKKyAgICAjIGJ1aWxkIHRpbWUsIGJ1dCB0aGUgY2hlY2tzdW0gb2Yga2V5NC5kYiBjaGFuZ2VzIGV2ZXJ5IHRpbWUgd2hlbiBjZXJ0dXRpbCBpcyBjYWxsZWQuCisgICAgIyBJdCBjYXVzZXMgbm9uLWRldGVybWluaXNtIGlzc3VlLCBzbyBwcm92aWRlIGRhdGFiYXNlcyB3aXRoIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICAjIHdoaWNoIGFyZSBvcmlnaW5hbGx5IGZyb20gb3V0cHV0IG9mIG5zcyBpbiBxZW11eDg2LTY0IGJ1aWxkLiBZb3UgY2FuIGdldCB0aGVzZQorICAgICMgZGF0YWJhc2VzIGJ5OgorICAgICMgY2VydHV0aWwgLU4gLWQgc3FsOi9kYXRhYmFzZS9wYXRoLyAtLWVtcHR5LXBhc3N3b3JkCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmstY2VydDkuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2NlcnQ5LmRiCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmsta2V5NC5kYiAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIva2V5NC5kYgorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c3RlbS1wa2NzMTEudHh0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9wa2NzMTEudHh0Cit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0LzAwMDEtTElOR1VBUy1kcm9wLXRoZS1sYW5ndWFnZXMtZm9yLXdoaWNoLXVwc3RyZWFtLWRvZXMtbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0LzAwMDEtTElOR1VBUy1kcm9wLXRoZS1sYW5ndWFnZXMtZm9yLXdoaWNoLXVwc3RyZWFtLWRvZXMtbi5wYXRjaAppbmRleCAyZmRhOWRmLi5lOTAyYjBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdC8wMDAxLUxJTkdVQVMtZHJvcC10aGUtbGFuZ3VhZ2VzLWZvci13aGljaC11cHN0cmVhbS1kb2VzLW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXQvMDAwMS1MSU5HVUFTLWRyb3AtdGhlLWxhbmd1YWdlcy1mb3Itd2hpY2gtdXBzdHJlYW0tZG9lcy1uLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjM2FhNGFhZTVlOWY0YWRhZmQ5ZTEwZDk0NjZmMWJjNDgxZTBhYWU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBjNmJiNGI5OWFmMzlkYWEzMjIxYzNiZGMwNjg2OTg3YWUwZjMxNjkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDMxIEphbiAyMDE4IDE2OjQ3OjQ0ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIExJTkdVQVM6IGRyb3AgdGhlIGxhbmd1YWdlcyBmb3Igd2hpY2ggdXBzdHJlYW0gZG9lcyBub3QKQEAgLTksMjQgKzksMjEgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttaXNzaW5nIHVwc3RyZWFtIGRpc3RyaWJ1dGlvbiBmaWxlc10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBwby9MSU5HVUFTIHwgMiAtLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcG8vTElOR1VBUyBiL3BvL0xJTkdVQVMKLWluZGV4IDFmYzRkNTMuLmU5Y2M1YTcgMTAwNjQ0CitpbmRleCA3NjdhODA2YzJlMjAuLjZhYjQ4MDAxYzQwOSAxMDA2NDQKIC0tLSBhL3BvL0xJTkdVQVMKICsrKyBiL3BvL0xJTkdVQVMKLUBAIC0xMSw5ICsxMSw3IEBAIGN5CitAQCAtMTIsOCArMTIsNiBAQCBjeQogIGRhCiAgZGUKICBlbAogLWVuQGJvbGRxdW90Ci0gZW5fR0IKIC1lbkBxdW90CisgZW5fR0IKICBlbwogIGVzCi0gZXNfQ0wKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc3OThmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jCi0KLURFUEVORFMgPSAibGlidGFzbjEgbGliZmZpIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUxJTkdVQVMtZHJvcC10aGUtbGFuZ3VhZ2VzLWZvci13aGljaC11cHN0cmVhbS1kb2VzLW4ucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiYmZiM2JkNDdhYTQ4OTgzZjUzNDk0NzliY2E1OTg0MDMwOTdmZjgxYyIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0jIGV4Y2x1ZGUgb2RkIG1pbm9yIHZlcnNpb25zLCB3aGljaCBhcmUgZGV2ZWxvcG1lbnQgcmVsZWFzZXMKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuKFxkKlswMjQ2OF0pKyhcLlxkKykrKSIKLQotQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkL2xpdHRlciIKLUVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtdHJ1c3QtcGF0aHMiCi0KLSMgVGhpcyByZWNpcGUgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBndGstZG9jIG00IG1hY3JvcywgYW5kIHNvIHRoZSAuL2NvbmZpZ3VyZSBmbGFncwotIyB0aGF0IGNvbnRyb2wgZ3RrLWRvYyBidWlsZCBhcmUgbm9uLXN0YW5kYXJkCi1FWFRSQV9PRUNPTkZfcHJlcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLS1lbmFibGUtZG9jIC0tZW5hYmxlLWRvYy1odG1sIC0tZGlzYWJsZS1kb2MtcGRmJywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kb2MnLCBkKX0gIgotCi0jIFdoZW4gYnVpbGRpbmcgbmF0aXZlIHJlY2lwZXMsIGRpc2FibGUgZ3RrZG9jLCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5LAotIyBwdWxscyBpbiBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcywgYW5kIG1ha2VzIGJ1aWxkIHRpbWVzIGxvbmdlcgotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlID0gIi0tZGlzYWJsZS1kb2MgIgotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi0tZGlzYWJsZS1kb2MgIgotCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1ndGstZG9jLWh0bWwgLS1kaXNhYmxlLWd0ay1kb2MtcGRmIC0tZW5hYmxlLWd0ay1kb2MgLS1kaXNhYmxlLWd0ay1kb2MiCi0KLSMgcDExLWtpdCByZWxpZXMgb24gdGhlc2UgdHdvIGJlaW5nIGNvcGllZCBmcm9tIHNvdXJjZSB0cmVlCi0jIGluc3RlYWQgb2YgYmVpbmcgcmVnZW5lcmF0ZWQgYnkgZ3RrZG9jLXNjYW4sIGJ1dCBkb2Vzbid0IHNldHVwCi0jIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkgd2hlbiB0aGVyZSBpcyBhIHBhcmFsbGVsIGJ1aWxkLiBMZXQncyBwcmUtY29weQotIyB0aGVtIGluc3RlYWQuCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgICAgICBjcCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1vdmVycmlkZXMudHh0ICR7U30vZG9jL21hbnVhbC9wMTEta2l0LXNlY3Rpb25zLnR4dCAke0J9L2RvYy9tYW51YWwvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS9wMTEta2l0LXByb3h5LnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExLyouc28gXAotICAgICR7bGliZGlyfS9wa2NzMTEvKi5sYSIKLQotIyBQTiBjb250YWlucyBwMTEta2l0LXByb3h5LnNvLCBhIHN5bWxpbmsgdG8gYSBsb2FkYWJsZSBtb2R1bGUKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjVjMzgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE0LmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiUHJvdmlkZXMgYSB3YXkgdG8gbG9hZCBhbmQgZW51bWVyYXRlIFBLQ1MjMTEgbW9kdWxlcyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDI5MzM4ODdmNjA5ODA3ZmJiNTdhYTQyMzdkMTRhNTAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MKKworREVQRU5EUyA9ICJsaWJ0YXNuMSBsaWJmZmkiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9wMTEtZ2x1ZS9wMTEta2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTElOR1VBUy1kcm9wLXRoZS1sYW5ndWFnZXMtZm9yLXdoaWNoLXVwc3RyZWFtLWRvZXMtbi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICIzNzcwNzkzZjAyNmU0NmEwMDBkMmQ4ODE2ZDU2MTIyNTk4Mjg5ZDVjIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkL2xpdHRlciIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdHJ1c3QtcGF0aHNdID0gIi0td2l0aC10cnVzdC1wYXRocz0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0LC0td2l0aG91dC10cnVzdC1wYXRocywsY2EtY2VydGlmaWNhdGVzIgorCisjIFRoaXMgcmVjaXBlIGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtNCBtYWNyb3MsIGFuZCBzbyB0aGUgLi9jb25maWd1cmUgZmxhZ3MKKyMgdGhhdCBjb250cm9sIGd0ay1kb2MgYnVpbGQgYXJlIG5vbi1zdGFuZGFyZAorRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWRvYyAtLWVuYWJsZS1kb2MtaHRtbCAtLWRpc2FibGUtZG9jLXBkZicsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9jJywgZCl9ICIKKworIyBXaGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLCBkaXNhYmxlIGd0a2RvYywgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKKyMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jICIKK0VYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZG9jICIKKworVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZiAtLWVuYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1ndGstZG9jIgorCisjIHAxMS1raXQgcmVsaWVzIG9uIHRoZXNlIHR3byBiZWluZyBjb3BpZWQgZnJvbSBzb3VyY2UgdHJlZQorIyBpbnN0ZWFkIG9mIGJlaW5nIHJlZ2VuZXJhdGVkIGJ5IGd0a2RvYy1zY2FuLCBidXQgZG9lc24ndCBzZXR1cAorIyBkZXBlbmRlbmNpZXMgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYSBwYXJhbGxlbCBidWlsZC4gTGV0J3MgcHJlLWNvcHkKKyMgdGhlbSBpbnN0ZWFkLgorZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKKyAgICAgICAgY3AgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtb3ZlcnJpZGVzLnR4dCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1zZWN0aW9ucy50eHQgJHtCfS9kb2MvbWFudWFsLworfQorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKKyAgICAke2xpYmRpcn0vcGtjczExLyoubGEiCisKKyMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeV8xLjEuMC5iYgppbmRleCAxZWFhMjYxLi40MTE2ZWZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4xLjAuYmIKQEAgLTgsOCArOCw2IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZDc5NGUyYTBhMjg5YjlkZmNjOWY1MTNkMTk5NmUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCiBERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGxpYmFzc3VhbiBsaWJncGctZXJyb3IiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgpAQCAtMjEsOSArMTksNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjM4MjkzMTVjYjBhMWU5Y2VkYzA1ZmZlNmRlZjdhMmM2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4MDc2Njg2ZmE3MjRhMjkwZWE0OWNkZjBkMWMwYzE1MDA5MDdkMWI3NTlhM2JjYmZiZWMwMjkzZThmNTY1NzAiCiAKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnBhdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgIFwKLSIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCiBQQUNLQUdFQ09ORklHID8/PSAibmN1cnNlcyBsaWJjYXAiCiAKQEAgLTM1LDQgKzMxLDkgQEAKICNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQogUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgogCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1waW5lbnRyeS1xdDUgXAorIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTViNzFjMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgQyBwcm9ncmFtIHRvIHJ1biBhbGwgaW5zdGFsbGVkIHB0ZXN0cyIKLURFU0NSSVBUSU9OID0gIlRoZSBwdGVzdC1ydW5uZXIyIHBhY2thZ2UgaW5zdGFsbHMgYSBwdGVzdC1ydW5uZXIgXAotcHJvZ3JhbSB3aGljaCBsb29wcyB0aHJvdWdoIGFsbCBpbnN0YWxsZWQgcHRlc3QgdGVzdCBzdWl0ZXMgYW5kIFwKLXJ1bnMgdGhlbSBpbiBzZXF1ZW5jZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wdGVzdC1ydW5uZXIyL2Fib3V0LyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNSRVYgPSAiMTY0MTNkNzFjYzA2YjAyYTZkODU5YzM1YTAxN2NjNDliODgyODNmNyIKLVBWID0gIjIuMS4xK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcHRlc3QtcnVubmVyL3B0ZXN0LXJ1bm5lcl8yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmQyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4yLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCitwcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAorcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICI0OTk1NmY2NWJiNTNlYTJhMmMxYjM5NGU1ZTU5ZmZkZmNkY2M0OTBmIgorUFYgPSAiMi4yK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL21rZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWYwMWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCAoaHR0cHM6Ly9naXRodWIuY29tL3NrdmFkcmlrL3JlMmMvcHVsbC8xOTEpCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGJjY2MxMGM2MDUyM2Y4OGM4ZjgxNDEzMTUxY2RjZDYxMmViMTYxOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAzMSBKdWwgMjAxNyAxNTo0Mzo0MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogY3JlYXRlIHRhcmdldCBkaXJlY3RvcnkgYmVmb3JlIHdyaXRpbmcgaW50byBpdAotCi1JbiBzb21lIHNpdHVhdGlvbnMgc3JjL3BhcnNlLyBtYXkgbm90IGV4aXN0IGJlZm9yZSBhIGZpbGUgaXMgY29waWVkIGludG8gdGhlCi1kaXJlY3RvcnkuIEVuc3VyZSB0aGF0IHRoaXMgZG9lc24ndCBoYXBwZW4gYnkgY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBmaXJzdC4KLS0tLQotIHJlMmMvTWFrZWZpbGUuYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3JlMmMvTWFrZWZpbGUuYW0gYi9yZTJjL01ha2VmaWxlLmFtCi1pbmRleCAzYjNiMmM1ZS4uMDcwN2ZjNWEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0xODcsNiArMTg3LDcgQEAgQ0xFQU5GSUxFUyA9IFwKLSAJJChET0MpCi0gCi0gJChBVVRPR0VOX1BBUlNFUik6ICQoQ1VTVE9NX1BBUlNFUikKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgJChkaXIgJEApCi0gCSQoQU1fVl9HRU4pIGlmIHRlc3QgJChCSVNPTikgPSAibm8iOyBcCi0gCXRoZW4gXAotIAkJY3AgJCh0b3Bfc3JjZGlyKS8kKEJPT1RTVFJBUF9QQVJTRVIpICRAICYmIFwKLUBAIC0yMTEsNiArMjEyLDcgQEAgJChCT09UU1RSQVBfUEFSU0VSKTogJChDVVNUT01fUEFSU0VSKQotIAkJJCh0b3Bfc3JjZGlyKS8kKENVU1RPTV9QQVJTRVIpOwotIAotIC5yZS5jYzoKLSsJJChBTV9WX2F0KSQoTUtESVJfUCkgJChkaXIgJEApCi0gCSQoQU1fVl9HRU4pIGlmIHRlc3QgLXggJChSRTJDKTsgXAotIAl0aGVuIFwKLSAJCSQodG9wX2J1aWxkZGlyKS8kKFJFMkMpICQoUkUyQ0ZMQUdTKSAtbyAkQCAkPCAmJiBcCi0tLSAKLTIuMTEuMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZGQ3YjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBmb3Igd3JpdGluZyB2ZXJ5IGZhc3QgYW5kIHZlcnkgZmxleGlibGUgc2Nhbm5lcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vcmUyYy5zb3VyY2Vmb3JnZS5uZXQvIgotQVVUSE9SID0gIk1hcmN1cyBCw7ZyZ2VyIDxoZWxseUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiUEQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTE0NjttZDU9ODgxMDU2YzlhZGQxN2Y4MDE5Y2NkOGMzODJiYTk2M2EiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21rZGlyLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gIjNiZjUwOGZhYmQ1MmVkNzMzNDY0N2QwY2NiOTU2ZThkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4YzEyNTY0Mjk3NjQxY2NlYjVmZjA1YWVhZDU3ZjI4MTE4ZGI2Mjc3ZjMxZTIyNjI0MzdmZWJhODkwNjllODQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JlMmMvcmUyY18xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWQ4ZDI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMS4wLjEuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJUb29sIGZvciB3cml0aW5nIHZlcnkgZmFzdCBhbmQgdmVyeSBmbGV4aWJsZSBzY2FubmVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9yZTJjLnNvdXJjZWZvcmdlLm5ldC8iCitBVVRIT1IgPSAiTWFyY3VzIELDtnJnZXIgPGhlbGx5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJQRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MTQ2O21kNT04ODEwNTZjOWFkZDE3ZjgwMTljY2Q4YzM4MmJhOTYzYSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZTJjNmNmNTJmYzZhMjE1OTVmMjFiYzgyZGI1MzI0ZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA1MDU4ZDE4YTAwZTAxYmZjMzJhZWJmODNhZjM1ZWQ1YjEzMTgwYjRlOWYyNzljOTA4NDNhZmFiMmM2NmM3YyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQppbmRleCBiOTRhZDUwLi5jYjgxMDI0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKQEAgLTEsNSArMSw4IEBACiBbVW5pdF0KIERlc2NyaXB0aW9uPUhhcmR3YXJlIFJORyBFbnRyb3B5IEdhdGhlcmVyIERhZW1vbgorRGVmYXVsdERlcGVuZGVuY2llcz1ubworQWZ0ZXI9c3lzdGVtZC11ZGV2LXNldHRsZS5zZXJ2aWNlCitCZWZvcmU9c3lzaW5pdC50YXJnZXQKIAogW1NlcnZpY2VdCiBFeGVjU3RhcnQ9QFNCSU5ESVJAL3JuZ2QgLWYgLXIgL2Rldi91cmFuZG9tCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCmluZGV4IGIzYzlmZDkuLjY3NjU2NjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCkBAIC0xNiwxMyArMTYsNiBAQAogU1JDX1VSSVttZDVzdW1dID0gIjY3MjZjZGM2ZmFlMWY1MTIyNDYzZjI0YWU5ODBkZDY4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwYTEwMmI2NjAzYmJjY2UyZGEzNDE0NzBjYWQ0MmVlYWE5NTY0YTE2YjQ0OTBlNzg2NzAyNmNhMTFhMzA3OGUiCiAKLSMgQXMgdGhlIHJlY2lwZSBkb2Vzbid0IGluaGVyaXQgc3lzdGVtZC5iYmNsYXNzLCB3ZSBuZWVkIHRvIHNldCB0aGlzIHZhcmlhYmxlCi0jIG1hbnVhbGx5IHRvIGF2b2lkIHVubmVjZXNzYXJ5IHBvc3RpbnN0L3ByZWluc3QgZ2VuZXJhdGVkLgotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KIGluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQKIAogUEFDS0FHRUNPTkZJRyA9ICJsaWJnY3J5cHQiCkBAIC01MCw2ICs0Myw2IEBACiB9CiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJybmctdG9vbHMiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzMCAyIDMgNCA1IC4gc3RvcCAzMCAwIDYgMSAuIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDMgMiAzIDQgNSAuIHN0b3AgMzAgMCA2IDEgLiIKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJuZ2Quc2VydmljZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmLzAwMDMtZ2VuX2RlZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2VyZi9zZXJmLzAwMDMtZ2VuX2RlZi5wYXRjaAppbmRleCBlMzdlOTAzLi4wZWEyY2NhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NlcmYvc2VyZi8wMDAzLWdlbl9kZWYucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zZXJmL3NlcmYvMDAwMy1nZW5fZGVmLnBhdGNoCkBAIC0zLDYgKzMsMTEgQEAKIERhdGU6IE1vbiwgMyBTZXAgMjAxOCAxMToxMjoyNyAtMDcwMAogU3ViamVjdDogW1BBVENIXSBnZW5fZGVmCiAKK1RoaXMgaXMgcGFydGlhbCBwb3J0IGJlY2F1c2UgaGFsZiBvZiB0aGlzIHBhdGNoIGlzIGFscmVhZHkgcHJlc2VudCBpbiBvdXIKK3BhdGNoZXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2FwYWNoZS9zZXJmL2NvbW1pdC84ZjA3Yzk2MjYxMDY4NzNhNTk0ZmQwN2U3YzI1N2U5MDgwZDg2NjBiXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQogIFNDb25zdHJ1Y3QgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZjMjEwYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIHNoYXJlZC1taW1lLWluZm8uaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9wYXJhbGxlbG1ha2UucGF0Y2ggXAorCSAgICBmaWxlOi8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MThjMmNlZDlkYzRkZDVjYThiMDZhNzU1ZTZkNjRlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjI1YTgzYjQ4MzhiZWZjOGNhZmNkNTRlMzYxOTk0NjUxNWQ5ZTQ0ZDYzZDYxYzRhZGY3ZjU1MTNkZGZiZWJmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWIyNzNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDUxMDM4ODliOTEyNDI4NTBhYTQ3ZjA5MzI1ZTc5OGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMwMTMzZWM0ZTIyOGU0MWJkZjUyZjcyNmQyNzFhMmQ4MjE0OTljMmFiOTdhZmQzYWEzZDZjZjQzZWZjZGM4MyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDE4LTg3NDAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAxOC04NzQwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDk1ZTM3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDE4LTg3NDAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDE5YWVkNGQyYmU0NmM0NTE2Y2FmMmJlZTMxZjc5MDQ0YmJkMWQ1N2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotRGF0ZTogRnJpLCAyMSBTZXAgMjAxOCAxNjoyMjowMSArMDAwMAotU3ViamVjdDogW1BBVENIXSBEZXRlY3QgZGF0YWJhc2VzIHdob3NlIHNjaGVtYSBpcyBjb3JydXB0ZWQgdXNpbmcgYSBDUkVBVEUgVEFCTEUgQVMgc3RhdGVtZW50IGFuZCBpc3N1ZSBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWyBodHRwczovL3d3dy5zcWxpdGUub3JnL2NnaS9zcmMvdmRpZmY/ZnJvbT0xNzc0ZjFjM2JhZjBiYzNkJnRvPWQ3NWU2NzY1NGFhOTYyMGImZGlmZj0xJnddCi1TaWduZWQtb2ZmLWJ5OiBTaW5hbiBLYXlhIDxva2F5YUBrZXJuZWwub3JnPgotLS0tCi0gc3FsaXRlMy5jIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcWxpdGUzLmMgYi9zcWxpdGUzLmMKLWluZGV4IDczYzY5ZWYuLjY4NjNiYzYgMTAwNjQ0Ci0tLS0gYS9zcWxpdGUzLmMKLSsrKyBiL3NxbGl0ZTMuYwotQEAgLTEwMzQ3NCw4ICsxMDM0NzQsNiBAQCBTUUxJVEVfUFJJVkFURSB2b2lkIHNxbGl0ZTNFbmRUYWJsZSgKLSAgIHAgPSBwUGFyc2UtPnBOZXdUYWJsZTsKLSAgIGlmKCBwPT0wICkgcmV0dXJuOwotIAotLSAgYXNzZXJ0KCAhZGItPmluaXQuYnVzeSB8fCAhcFNlbGVjdCApOwotLQotICAgLyogSWYgdGhlIGRiLT5pbml0LmJ1c3kgaXMgMSBpdCBtZWFucyB3ZSBhcmUgcmVhZGluZyB0aGUgU1FMIG9mZiB0aGUKLSAgICoqICJzcWxpdGVfbWFzdGVyIiBvciAic3FsaXRlX3RlbXBfbWFzdGVyIiB0YWJsZSBvbiB0aGUgZGlzay4KLSAgICoqIFNvIGRvIG5vdCB3cml0ZSB0byB0aGUgZGlzayBhZ2Fpbi4gIEV4dHJhY3QgdGhlIHJvb3QgcGFnZSBudW1iZXIKLUBAIC0xMDM0ODYsNiArMTAzNDg0LDEwIEBAIFNRTElURV9QUklWQVRFIHZvaWQgc3FsaXRlM0VuZFRhYmxlKAotICAgKiogdGFibGUgaXRzZWxmLiAgU28gbWFyayBpdCByZWFkLW9ubHkuCi0gICAqLwotICAgaWYoIGRiLT5pbml0LmJ1c3kgKXsKLSsgICAgaWYoIHBTZWxlY3QgKXsKLSsgICAgIHNxbGl0ZTNFcnJvck1zZyhwUGFyc2UsICIiKTsKLSsgICAgIHJldHVybjsKLSsgICAgfQotICAgICBwLT50bnVtID0gZGItPmluaXQubmV3VG51bTsKLSAgICAgaWYoIHAtPnRudW09PTEgKSBwLT50YWJGbGFncyB8PSBURl9SZWFkb25seTsKLSAgIH0KLUBAIC0xMTc4MTMsNyArMTE3ODE1LDcgQEAgc3RhdGljIHZvaWQgY29ycnVwdFNjaGVtYSgKLSAgICAgY2hhciAqejsKLSAgICAgaWYoIHpPYmo9PTAgKSB6T2JqID0gIj8iOwotICAgICB6ID0gc3FsaXRlM01QcmludGYoZGIsICJtYWxmb3JtZWQgZGF0YWJhc2Ugc2NoZW1hICglcykiLCB6T2JqKTsKLS0gICAgaWYoIHpFeHRyYSApIHogPSBzcWxpdGUzTVByaW50ZihkYiwgIiV6IC0gJXMiLCB6LCB6RXh0cmEpOwotKyAgICBpZiggekV4dHJhICYmIHpFeHRyYVswXSApIHogPSBzcWxpdGUzTVByaW50ZihkYiwgIiV6IC0gJXMiLCB6LCB6RXh0cmEpOwotICAgICBzcWxpdGUzRGJGcmVlKGRiLCAqcERhdGEtPnB6RXJyTXNnKTsKLSAgICAgKnBEYXRhLT5wekVyck1zZyA9IHo7Ci0gICB9Ci0tLSAKLTIuMTkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCmluZGV4IDMwODQ3YjkuLjE4MzQ4NjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jCkBAIC0zNiwxNCArMzYsMTAgQEAKIENGTEFHU19hcHBlbmQgPSAiIC1mUElDIgogCiAjIHByZWFkKCkgaXMgaW4gUE9TSVguMS0yMDAxIHNvIGFueSByZWFzb25hYmxlIHN5c3RlbSBtdXN0IHN1cmVseSBzdXBwb3J0IGl0Ci1CVUlMRF9DRkxBR1MgKz0gIi1EVVNFX1BSRUFEIgotQlVJTERTREtfQ0ZMQUdTICs9ICItRFVTRV9QUkVBRCIKLVRBUkdFVF9DRkxBR1MgKz0gIi1EVVNFX1BSRUFEIgorQ0ZMQUdTICs9ICItRFVTRV9QUkVBRCIKIAogIyBQcm92aWRlIGNvbHVtbiBtZXRhLWRhdGEgQVBJCi1CVUlMRF9DRkxBR1MgKz0gIi1EU1FMSVRFX0VOQUJMRV9DT0xVTU5fTUVUQURBVEEiCi1CVUlMRFNES19DRkxBR1MgKz0gIi1EU1FMSVRFX0VOQUJMRV9DT0xVTU5fTUVUQURBVEEiCi1UQVJHRVRfQ0ZMQUdTICs9ICItRFNRTElURV9FTkFCTEVfQ09MVU1OX01FVEFEQVRBIgorQ0ZMQUdTICs9ICItRFNRTElURV9FTkFCTEVfQ09MVU1OX01FVEFEQVRBIgogCiBQQUNLQUdFUyA9ICJsaWIke0JQTn0gbGliJHtCUE59LWRldiBsaWIke0JQTn0tZG9jICR7UE59LWRiZyBsaWIke0JQTn0tc3RhdGljZGV2ICR7UE59IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTBmODk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTgvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAotICBmaWxlOi8vQ1ZFLTIwMTgtODc0MC5wYXRjaCBcCi0gICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NmI1NjQ4ZDU0MmU4YWZhNmFiN2ZmYjhkYjhkZGMzZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyODI0YWIxMjM4YjcwNmJjNjYxMjczMjBhZmJkZmZiMDk2MzYxMTMwZTIzMjkxZjI2OTI4YTAyN2I4ODVjNjEyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIzLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzU1NzYxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjIzLjEuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBzcWxpdGUzLmluYworCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgorCitTUkNfVVJJID0gIlwKKyAgaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTgvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAorICAiCitTUkNfVVJJW21kNXN1bV0gPSAiOTlhNTFiNDBhNjY4NzI4NzJhOTFjOTJmNmQwMTM0ZmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTI4NDJiMjgzZTVlNzQ0ZWZmNWRhMjllZDNjNjkzOTFkZTczNjhmY2NjNGQwZWU2YmY2MjQ5MGNlNTU1ZWYyNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUwLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41MC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjllZTMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIlZpcnR1YWwgdGVybWluYWwgZW11bGF0b3IgR1RLKyB3aWRnZXQgbGlicmFyeSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD12dGUiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgaW50bHRvb2wtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxhJywgJycsICdmaWxlOi8vMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaCcsIGQpIH0gXAotICAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTkxMmNmZDFkOWNkZDMwY2ViZWI5MDg1MDdhY2FkYzUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3OWRkMzE2YmZhZmY0OGYyZmI3NGQwNjZiYWFlMGQ4MzBlMWY0NDQzNjc5NmZlNDEwYTU3Mjk3ZTVjNWYwOWNmIgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZwotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCi19Ci0KLSMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3ZhbGFdID0gIi0tZW5hYmxlLXZhbGEsLS1kaXNhYmxlLXZhbGEsdmFsYS1uYXRpdmUgdmFsYSIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdC1hcHBsaWNhdGlvbiIKLQotIyBsaWJ0b29sIGFkZHMgIi1ub3N0ZGxpYiIgd2hlbiBnKysgaXMgdXNlZC4gVGhpcyBicmVha3MgUElFIGJ1aWxkcy4KLSMgVXNlIGxpYnRvb2wtY3Jvc3MgKHdoaWNoIGhhcyBhIGhhY2sgdG8gcHJldmVudCB0aGF0KSBpbnN0ZWFkLgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiCi0KLVBBQ0tBR0VTID0rICJsaWJ2dGUiCi1GSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMyNGM5YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjUyLjIuYmIKQEAgLTAsMCArMSw0NiBAQAorU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitERVBFTkRTID0gImdsaWItMi4wIGd0ayszIGxpYnBjcmUyIGludGx0b29sLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKKyMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImRlODE4MTM1MGRjY2IwMTBlOTE1ZTM2NmJkZDA2ZDE4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMGYyNjU3Y2VmNTJhY2NiZmU1NmZlZWRlNTUzMTU1NTUyZDdjMTk4NGIxMjkxODM4YWYzY2I4Y2ZjMTliMjZhZiIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKKyMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KKyMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KKworIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFNUQUdJTkdfREFUQURJUgorIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKKworIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vc3JjLy5saWJzIgorfQorCisjIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3ZhbGEvdmFwaS8qIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1t2YWxhXSA9ICItLWVuYWJsZS12YWxhLC0tZGlzYWJsZS12YWxhLHZhbGEtbmF0aXZlIHZhbGEiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorCisjIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgorIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSIKK0ZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9hcmMtY29tbW9uIGIvcG9reS9tZXRhL3NpdGUvYXJjLWNvbW1vbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2M3MjFhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3NpdGUvYXJjLWNvbW1vbgpAQCAtMCwwICsxLDExIEBACisjIGdlbmVyYWwKK2FjX2N2X2FsaWdub2ZfZ3VpbnQzMj00CithY19jdl9hbGlnbm9mX2d1aW50NjQ9NAorYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTQKKworIyBnbGliLTIuMAorZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99CitnbGliX2N2X3VzY29yZT0ke2dsaWJfY3ZfdXNjb3JlPW5vfQorCisjIHN0YXJ0dXAtbm90aWZpY2F0aW9uCitsZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2F1dG9idWlsZGVyLXdvcmtlci1wcmVyZXEtdGVzdHMgYi9wb2t5L3NjcmlwdHMvYXV0b2J1aWxkZXItd29ya2VyLXByZXJlcS10ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYjQ2YzY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2F1dG9idWlsZGVyLXdvcmtlci1wcmVyZXEtdGVzdHMKQEAgLTAsMCArMSw2NSBAQAorIyEvYmluL2Jhc2gKKyMKKyMgU2NyaXB0IHdoaWNoIGNhbiBiZSBydW4gb24gbmV3IGF1dG9idWlsZGVyIHdvcmtlcnMgdG8gY2hlY2sgYWxsIG5lZWRlZCBjb25maWd1cmF0aW9uIGlzIHByZXNlbnQuCisjIERlc2lnbmVkIHRvIGJlIHJ1biBpbiBhIHJlcG8gd2hlcmUgYml0YmFrZS9vZS1jb3JlIGFyZSBhbHJlYWR5IHByZXNlbnQuCisjCisKKyMKKyMgVG9kbworIyBBZGQgdGVzdHRvb2xzL3N1YnVuaXQgaW1wb3J0IHRlc3QKKyMgQWRkIHB5dGhvbjMtZ2l0IHRlc3QKKyMgQWRkIHBpZ3ogdGVzdAorIyB2bmMgdGVzdHMvY2hlY2t2bmM/CisjIHRlc3Qgc2VuZG1haWwgd29ya3MgKGZvciBRQSBlbWFpbCBub3RpZmljYXRpb24pCisjIHRlc3QgZXJyb3IgcmVwb3J0IHN1Ym1pc3Npb24gd29ya3MKKyMgdGVzdCBidWlsZGlzdG9yeSBnaXQgcmVwbyB3b3Jrcz8KKyMKKworLiAuL29lLWluaXQtYnVpbGQtZW52ID4gL2Rldi9udWxsCitpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KKyAgICBleGl0IDEKK2ZpCitnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSA+IC9kZXYvbnVsbAoraWYgWyAiJD8iICE9ICIwIiBdOyB0aGVuCisgICAgZWNobyAiUGxlYXNlIHNldCBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIubmFtZSIKKyAgICBleGl0IDEKK2ZpCitnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgPiAvZGV2L251bGwKK2lmIFsgIiQ/IiAhPSAiMCIgXTsgdGhlbgorICAgIGVjaG8gIlBsZWFzZSBzZXQgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLmVtYWlsIgorICAgIGV4aXQgMQorZmkKK2JpdGJha2UgLXAKK2lmIFsgIiQ/IiAhPSAiMCIgXTsgdGhlbgorICAgIGVjaG8gIkJpdGJha2UgcGFyc2luZyBmYWlsZWQiCisgICAgZXhpdCAxCitmaQorCitXQVRDSEVTPSQoUEFUSD0iL3NiaW46L3Vzci9zYmluOiRQQVRIIiBzeXNjdGwgZnMuaW5vdGlmeS5tYXhfdXNlcl93YXRjaGVzIC1uKQoraWYgKCggJFdBVENIRVMgPCA2NTAwMCApKTsgdGhlbgorICAgIGVjaG8gJ05lZWQgdG8gaW5jcmVhc2Ugd2F0Y2hlcyAoZWNobyBmcy5pbm90aWZ5Lm1heF91c2VyX3dhdGNoZXM9NjU1MzYgfCBzdWRvIHRlZSAtYSAvZXRjL3N5c2N0bC5jb25mJworICAgIGV4aXQgMQorZmkKK21rZGlyIC1wIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQKK3B1c2hkIHRtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQKK2lmIFsgISAtZSBjb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC5leHQ0IF07IHRoZW4KKyAgICB3Z2V0IGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by95b2N0by0yLjUuMS9tYWNoaW5lcy9xZW11L3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQuZXh0NAorZmkKK2lmIFsgISAtZSBjb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC5xZW11Ym9vdC5jb25mIF07IHRoZW4KKyAgICB3Z2V0IGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by95b2N0by0yLjUuMS9tYWNoaW5lcy9xZW11L3FlbXV4ODYtNjQvY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQucWVtdWJvb3QuY29uZgorZmkKK2lmIFsgISAtZSBiekltYWdlLXFlbXV4ODYtNjQuYmluIF07IHRoZW4KKyAgICB3Z2V0IGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0by95b2N0by0yLjUuMS9tYWNoaW5lcy9xZW11L3FlbXV4ODYtNjQvYnpJbWFnZS1xZW11eDg2LTY0LmJpbgorZmkKK3BvcGQKK2JpdGJha2UgcWVtdS1oZWxwZXItbmF0aXZlCitydW5xZW11IHFlbXV4ODYtNjQKK2lmIFsgIiQ/IiAhPSAiMCIgXTsgdGhlbgorICAgIGVjaG8gIlVuYWJsZSB0byB1c2UgcnVucWVtdSIKKyAgICBleGl0IDEKK2ZpCitydW5xZW11IHFlbXV4ODYtNjQga3ZtCitpZiBbICIkPyIgIT0gIjAiIF07IHRoZW4KKyAgICBlY2hvICJVbmFibGUgdG8gdXNlIHJ1bnFlbXUgd2l0aCBrdm0iCisgICAgZXhpdCAxCitmaQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyIGIvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCmluZGV4IGQwNGQ4OGIuLmRjNDBlNzIgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgorKysgYi9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKQEAgLTI0Niw3ICsyNDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyB0cmFkaXRpb25hbCBiZWhhdmlvciBmcm9tICJnaXQgYXJjaGl2ZSIgKHByZXNlcnZlZAogICAgICAgICAgICAgICAgICAgICAgICAgIyBoZXJlKSBpdCB0byBjaG9vc2UgdGhlIGZpcnN0IG9uZS4gVGhpcyBtaWdodCBub3QgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZW5kZWQsIHNvIGF0IGxlYXN0IHdhcm4gYWJvdXQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiJXM6IGluaXRpYWwgcmV2aXNpb24gJyVzJyBub3QgdW5pcXVlLCBwaWNraW5nIHJlc3VsdCBvZiByZXYtcGFyc2UgPSAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVzOiBpbml0aWFsIHJldmlzaW9uICclcycgbm90IHVuaXF1ZSwgcGlja2luZyByZXN1bHQgb2YgcmV2LXBhcnNlID0gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBpbml0aWFscmV2LCByZWZzWzBdKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxyZXYgPSByZXYKICAgICAgICAgICAgICAgICBleGNlcHQ6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29udHJpYi9ta2VmaWRpc2suc2ggYi9wb2t5L3NjcmlwdHMvY29udHJpYi9ta2VmaWRpc2suc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM5ZTRiY2YuLjAwMDAwMDAKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvbWtlZmlkaXNrLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcyICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUKLSMgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyAgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQotIwotCi1MQU5HPUMKLQotZWNobwotZWNobyAiV0FSTklORzogVGhpcyBzY3JpcHQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIHNvb24uIgotZWNobyAiUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHdpYyBFRkkgaW1hZ2VzIGluc3RlYWQuIgotZWNobwotCi0jIFNldCB0byAxIHRvIGVuYWJsZSBhZGRpdGlvbmFsIG91dHB1dAotREVCVUc9MAotT1VUPSIvZGV2L251bGwiCi0KLSMKLSMgRGVmYXVsdHMKLSMKLSMgMjAgTWIgZm9yIHRoZSBib290IHBhcnRpdGlvbgotQk9PVF9TSVpFPTIwCi0jIDUlIGZvciBzd2FwCi1TV0FQX1JBVElPPTUKLQotIyBDbGVhbnVwIGFmdGVyIGRpZSgpCi1jbGVhbnVwKCkgewotCWRlYnVnICJTeW5jaW5nIGFuZCB1bm1vdW50aW5nIGRldmljZXMiCi0JIyBVbm1vdW50IGFueXRoaW5nIHdlIG1vdW50ZWQKLQl1bm1vdW50ICRST09URlNfTU5UIHx8IGVycm9yICJGYWlsZWQgdG8gdW5tb3VudCAkUk9PVEZTX01OVCIKLQl1bm1vdW50ICRCT09URlNfTU5UIHx8IGVycm9yICJGYWlsZWQgdG8gdW5tb3VudCAkQk9PVEZTX01OVCIKLQl1bm1vdW50ICRIRERJTUdfUk9PVEZTX01OVCB8fCBlcnJvciAiRmFpbGVkIHRvIHVubW91bnQgJEhERElNR19ST09URlNfTU5UIgotCXVubW91bnQgJEhERElNR19NTlQgfHwgZXJyb3IgIkZhaWxlZCB0byB1bm1vdW50ICRIRERJTUdfTU5UIgotCi0JIyBSZW1vdmUgdGhlIFRNUERJUgotCWRlYnVnICJSZW1vdmluZyB0ZW1wb3JhcnkgZmlsZXMiCi0JaWYgWyAtZCAiJFRNUERJUiIgXTsgdGhlbgotCQlybSAtcmYgJFRNUERJUiB8fCBlcnJvciAiRmFpbGVkIHRvIHJlbW92ZSAkVE1QRElSIgotCWZpCi19Ci0KLXRyYXAgJ2RpZSAiU2lnbmFsIFJlY2VpdmVkLCBBYm9ydGluZy4uLiInIEhVUCBJTlQgVEVSTQotCi0jIExvZ2dpbmcgcm91dGluZXMKLVdBUk5JTkdTPTAKLUVSUk9SUz0wCi1DTEVBUj0iJCh0cHV0IHNncjApIgotSU5GTz0iJCh0cHV0IGJvbGQpIgotUkVEPSIkKHRwdXQgc2V0YWYgMSkkKHRwdXQgYm9sZCkiCi1HUkVFTj0iJCh0cHV0IHNldGFmIDIpJCh0cHV0IGJvbGQpIgotWUVMTE9XPSIkKHRwdXQgc2V0YWYgMykkKHRwdXQgYm9sZCkiCi1pbmZvKCkgewotCWVjaG8gIiR7SU5GT30kMSR7Q0xFQVJ9IgotfQotZXJyb3IoKSB7Ci0JRVJST1JTPSQoKEVSUk9SUysxKSkKLQllY2hvICIke1JFRH0kMSR7Q0xFQVJ9IgotfQotd2FybigpIHsKLQlXQVJOSU5HUz0kKChXQVJOSU5HUysxKSkKLQllY2hvICIke1lFTExPV30kMSR7Q0xFQVJ9IgotfQotc3VjY2VzcygpIHsKLQllY2hvICIke0dSRUVOfSQxJHtDTEVBUn0iCi19Ci1kaWUoKSB7Ci0JZXJyb3IgIiQxIgotCWNsZWFudXAKLQlleGl0IDEKLX0KLWRlYnVnKCkgewotCWlmIFsgJERFQlVHIC1lcSAxIF07IHRoZW4KLQkJZWNobyAiJDEiCi0JZmkKLX0KLQotdXNhZ2UoKSB7Ci0JZWNobyAiVXNhZ2U6ICQoYmFzZW5hbWUgJDApIFstdl0gREVWSUNFIEhERElNRyBUQVJHRVRfREVWSUNFIgotCWVjaG8gIiAgICAgICAtdjogVmVyYm9zZSBkZWJ1ZyIKLQllY2hvICIgICAgICAgREVWSUNFOiBUaGUgZGV2aWNlIHRvIHdyaXRlIHRoZSBpbWFnZSB0bywgZS5nLiAvZGV2L3NkaCIKLQllY2hvICIgICAgICAgSERESU1HOiBUaGUgaGRkaW1nIGZpbGUgdG8gZ2VuZXJhdGUgdGhlIGVmaSBkaXNrIGZyb20iCi0JZWNobyAiICAgICAgIFRBUkdFVF9ERVZJQ0U6IFRoZSBkZXZpY2UgdGhlIHRhcmdldCB3aWxsIGJvb3QgZnJvbSwgZS5nLiAgL2Rldi9tbWNibGswIgotfQotCi1pbWFnZV9kZXRhaWxzKCkgewotCUlNRz0kMQotCWluZm8gIkltYWdlIGRldGFpbHMiCi0JZWNobyAiICAgIGltYWdlOiAkKHN0YXQgLS1wcmludGYgJyVOXG4nICRJTUcpIgotCWVjaG8gIiAgICAgc2l6ZTogJChzdGF0IC1MIC0tcHJpbnRmICclcyBieXRlc1xuJyAkSU1HKSIKLQllY2hvICIgbW9kaWZpZWQ6ICQoc3RhdCAtTCAtLXByaW50ZiAnJXlcbicgJElNRykiCi0JZWNobyAiICAgICB0eXBlOiAkKGZpbGUgLUwgLWIgJElNRykiCi0JZWNobyAiIgotfQotCi1kZXZpY2VfZGV0YWlscygpIHsKLQlERVY9JDEKLQlCTE9DS19TSVpFPTUxMgotCi0JaW5mbyAiRGV2aWNlIGRldGFpbHMiCi0JZWNobyAiICBkZXZpY2U6ICRERVZJQ0UiCi0JaWYgWyAtZiAiL3N5cy9jbGFzcy9ibG9jay8kREVWL2RldmljZS92ZW5kb3IiIF07IHRoZW4KLQkJZWNobyAiICB2ZW5kb3I6ICQoY2F0IC9zeXMvY2xhc3MvYmxvY2svJERFVi9kZXZpY2UvdmVuZG9yKSIKLQllbHNlCi0JCWVjaG8gIiAgdmVuZG9yOiBVTktPV04iCi0JZmkKLQlpZiBbIC1mICIvc3lzL2NsYXNzL2Jsb2NrLyRERVYvZGV2aWNlL21vZGVsIiBdOyB0aGVuCi0JCWVjaG8gIiAgIG1vZGVsOiAkKGNhdCAvc3lzL2NsYXNzL2Jsb2NrLyRERVYvZGV2aWNlL21vZGVsKSIKLQllbHNlCi0JCWVjaG8gIiAgIG1vZGVsOiBVTktOT1dOIgotCWZpCi0JaWYgWyAtZiAiL3N5cy9jbGFzcy9ibG9jay8kREVWL3NpemUiIF07IHRoZW4KLQkJZWNobyAiICAgIHNpemU6ICQoKCQoY2F0IC9zeXMvY2xhc3MvYmxvY2svJERFVi9zaXplKSAqICRCTE9DS19TSVpFKSkgYnl0ZXMiCi0JZWxzZQotCQllY2hvICIgICAgc2l6ZTogVU5LTk9XTiIKLQlmaQotCWVjaG8gIiIKLX0KLQotdW5tb3VudF9kZXZpY2UoKSB7Ci0JZ3JlcCAtcSAkREVWSUNFIC9wcm9jL21vdW50cwotCWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCQl3YXJuICIkREVWSUNFIGxpc3RlZCBpbiAvcHJvYy9tb3VudHMsIGF0dGVtcHRpbmcgdG8gdW5tb3VudCIKLQkJdW1vdW50ICRERVZJQ0UqIDI+L2Rldi9udWxsCi0JCXJldHVybiAkPwotCWZpCi0JcmV0dXJuIDAKLX0KLQotdW5tb3VudCgpIHsKLQlpZiBbICIkMSIgPSAiIiBdIDsgdGhlbgotCQlyZXR1cm4gMAotCWZpCi0JZ3JlcCAtcSAkMSAvcHJvYy9tb3VudHMKLQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KLQkJZGVidWcgIlVubW91bnRpbmcgJDEiCi0JCXVtb3VudCAkMQotCQlyZXR1cm4gJD8KLQlmaQotCXJldHVybiAwCi19Ci0KLSMKLSMgUGFyc2UgYW5kIHZhbGlkYXRlIGFyZ3VtZW50cwotIwotaWYgWyAkIyAtbHQgMyBdIHx8IFsgJCMgLWd0IDQgXTsgdGhlbgotICAgIGlmIFsgJCMgLWVxIDEgXTsgdGhlbgotICAgICAgICBBVkFJTEFCTEVfRElTSz1gbHNibGsgfCBncmVwICJkaXNrIiB8IGN1dCAtZiAxIC1kICIgImAKLSAgICAgICAgWD0wCi0gICAgICAgIGZvciBkaXNrIGluIGBlY2hvICRBVkFJTEFCTEVfRElTS2A7IGRvCi0gICAgICAgICAgICBtb3VudGVkPWBsc2JsayAvZGV2LyRkaXNrIHwgYXdrIHsncHJpbnQgJDcnfSB8IHNlZCAicy9NT1VOVFBPSU5ULy8iYAotICAgICAgICAgICAgaWYgWyAteiAiJG1vdW50ZWQiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBVTk1PVU5URURfQVZBSUxBQkxFUz0iJFVOTU9VTlRFRF9BVkFJTEFCTEVTIC9kZXYvJGRpc2siCi0gICAgICAgICAgICAgICAgaW5mbyAiJFggLSAvZGV2LyRkaXNrIgotICAgICAgICAgICAgICAgIFg9YGV4cHIgJFggKyAxYAotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgICAgICBpZiBbICRYIC1lcSAwIF07IHRoZW4KLSAgICAgICAgICAgIGRpZSAiTm8gdW5tb3VudGVkIGRldmljZSBmb3VuZC4iCi0gICAgICAgIGZpCi0gICAgICAgIHJlYWQgLXAgIkNob29zZSB1bm1vdW50ZWQgZGV2aWNlIG51bWJlcjogIiBESVNLX05VTUJFUgotICAgICAgICBYPTAKLSAgICAgICAgZm9yIGxpbmUgaW4gYGVjaG8gJFVOTU9VTlRFRF9BVkFJTEFCTEVTYDsgZG8KLSAgICAgICAgICAgIGlmIFsgJERJU0tfTlVNQkVSIC1lcSAkWCBdOyB0aGVuCi0gICAgICAgICAgICAgICAgRElTS19UT19CRV9GTEFTSEVEPSRsaW5lCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBYPWBleHByICRYICsgMWAKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgaWYgWyAteiAiJERJU0tfVE9fQkVfRkxBU0hFRCIgXTsgdGhlbgotICAgICAgICAgICAgZGllICJPcHRpb24gXCIkRElTS19OVU1CRVJcIiBpcyBpbnZhbGlkLiBDaG9vc2UgYSB2YWxpZCBvcHRpb24iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlmIFsgLXogYGVjaG8gJERJU0tfVE9fQkVfRkxBU0hFRCB8IGdyZXAgIm1tYyJgIF07IHRoZW4KLSAgICAgICAgICAgICAgICBUQVJHRVRfVE9fQkVfQk9PVD0iL2Rldi9zZGEiCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgVEFSR0VUX1RPX0JFX0JPT1Q9Ii9kZXYvbW1jYmxrMCIKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGZpCi0gICAgICAgIGVjaG8gIiIKLSAgICAgICAgZWNobyAiQ2hvb3NlIGEgbmFtZSBvZiB0aGUgZGV2aWNlIHRoYXQgd2lsbCBiZSBib290IGZyb20iCi0gICAgICAgIGVjaG8gLW4gIlJlY29tbWVuZGVkIG5hbWUgaXM6ICIKLSAgICAgICAgaW5mbyAiJFRBUkdFVF9UT19CRV9CT09UIgotICAgICAgICByZWFkIC1wICJJcyB0YXJnZXQgZGV2aWNlIG9rYXk/IFt5L05dOiAiIFJFU1BPTlNFCi0gICAgICAgIGlmIFsgIiRSRVNQT05TRSIgIT0gInkiIF07IHRoZW4KLSAgICAgICAgICAgIHJlYWQgLXAgIkNob29zZSB0YXJnZXQgZGV2aWNlIG5hbWU6ICIgVEFSR0VUX1RPX0JFX0JPT1QKLSAgICAgICAgZmkKLSAgICAgICAgZWNobyAiIgotICAgICAgICBpZiBbIC16ICIkVEFSR0VUX1RPX0JFX0JPT1QiIF07IHRoZW4KLSAgICAgICAgICAgIGRpZSAiRXJyb3I6IGNob29zZSBhIHZhbGlkIHRhcmdldCBuYW1lIgotICAgICAgICBmaQotICAgIGVsc2UKLSAgICAgICAgdXNhZ2UKLQkgICAgZXhpdCAxCi0gICAgZmkKLWZpCi0KLWlmIFsgIiQxIiA9ICItdiIgXTsgdGhlbgotCURFQlVHPTEKLQlPVVQ9IjEiCi0Jc2hpZnQKLWZpCi0KLWlmIFsgLXogIiRBVkFJTEFCTEVfRElTSyIgXTsgdGhlbgotICAgIERFVklDRT0kMQotICAgIEhERElNRz0kMgotICAgIFRBUkdFVF9ERVZJQ0U9JDMKLWVsc2UKLSAgICBERVZJQ0U9JERJU0tfVE9fQkVfRkxBU0hFRAotICAgIEhERElNRz0kMQotICAgIFRBUkdFVF9ERVZJQ0U9JFRBUkdFVF9UT19CRV9CT09UCi1maQotCi1MSU5LPSQocmVhZGxpbmsgJERFVklDRSkKLWlmIFsgJD8gLWVxIDAgXTsgdGhlbgotCURFVklDRT0iJExJTksiCi1maQotCi1pZiBbICEgLXcgIiRERVZJQ0UiIF07IHRoZW4KLQl1c2FnZQotCWlmIFsgISAtZSAiJHtERVZJQ0V9IiBdIDsgdGhlbgotCQlkaWUgIkRldmljZSAkREVWSUNFIGNhbm5vdCBiZSBmb3VuZCIKLQllbHNlCi0JCWRpZSAiRGV2aWNlICRERVZJQ0UgaXMgbm90IHdyaXRhYmxlIChuZWVkIHRvIHJ1biB1bmRlciBzdWRvPykiCi0JZmkKLWZpCi0KLWlmIFsgISAtZSAiJEhERElNRyIgXTsgdGhlbgotCXVzYWdlCi0JZGllICJIRERJTUcgJEhERElNRyBkb2VzIG5vdCBleGlzdCIKLWZpCi0KLSMKLSMgRW5zdXJlIHRoZSBoZGRpbWcgaXMgbm90IG1vdW50ZWQKLSMKLXVubW91bnQgIiRIRERJTUciIHx8IGRpZSAiRmFpbGVkIHRvIHVubW91bnQgJEhERElNRyIKLQotIwotIyBDaGVjayBpZiBhbnkgJERFVklDRSBwYXJ0aXRpb25zIGFyZSBtb3VudGVkCi0jCi11bm1vdW50X2RldmljZSB8fCBkaWUgIkZhaWxlZCB0byB1bm1vdW50ICRERVZJQ0UiCi0KLSMKLSMgQ29uZmlybSBkZXZpY2Ugd2l0aCB1c2VyCi0jCi1pbWFnZV9kZXRhaWxzICRIRERJTUcKLWRldmljZV9kZXRhaWxzICQoYmFzZW5hbWUgJERFVklDRSkKLWVjaG8gLW4gIiR7SU5GT31QcmVwYXJlIEVGSSBpbWFnZSBvbiAkREVWSUNFIFt5L05dPyR7Q0xFQVJ9ICIKLXJlYWQgUkVTUE9OU0UKLWlmIFsgIiRSRVNQT05TRSIgIT0gInkiIF07IHRoZW4KLQllY2hvICJJbWFnZSBjcmVhdGlvbiBhYm9ydGVkIgotCWV4aXQgMAotZmkKLQotCi0jCi0jIFByZXBhcmUgdGhlIHRlbXBvcmFyeSB3b3JraW5nIHNwYWNlCi0jCi1UTVBESVI9JChta3RlbXAgLWQgbWtlZmlkaXNrLVhYWCkgfHwgZGllICJGYWlsZWQgdG8gY3JlYXRlIHRlbXBvcmFyeSBtb3VudGluZyBkaXJlY3RvcnkuIgotSERESU1HX01OVD0kVE1QRElSL2hkZGltZwotSERESU1HX1JPT1RGU19NTlQ9JFRNUERJUi9oZGRpbWdfcm9vdGZzCi1ST09URlNfTU5UPSRUTVBESVIvcm9vdGZzCi1CT09URlNfTU5UPSRUTVBESVIvYm9vdGZzCi1ta2RpciAkSERESU1HX01OVCB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgJEhERElNR19NTlQiCi1ta2RpciAkSERESU1HX1JPT1RGU19NTlQgfHwgZGllICJGYWlsZWQgdG8gY3JlYXRlICRIRERJTUdfUk9PVEZTX01OVCIKLW1rZGlyICRST09URlNfTU5UIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSAkUk9PVEZTX01OVCIKLW1rZGlyICRCT09URlNfTU5UIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSAkQk9PVEZTX01OVCIKLQotCi0jCi0jIFBhcnRpdGlvbiAkREVWSUNFCi0jCi1ERVZJQ0VfU0laRT0kKHBhcnRlZCAtcyAkREVWSUNFIHVuaXQgbWIgcHJpbnQgfCBncmVwIF5EaXNrIHwgY3V0IC1kIiAiIC1mIDMgfCBzZWQgLWUgInMvTUIvLyIpCi0jIElmIHRoZSBkZXZpY2Ugc2l6ZSBpcyBub3QgcmVwb3J0ZWQgdGhlcmUgbWF5IG5vdCBiZSBhIHZhbGlkIGxhYmVsCi1pZiBbICIkREVWSUNFX1NJWkUiID0gIiIgXSA7IHRoZW4KLQlwYXJ0ZWQgLXMgJERFVklDRSBta2xhYmVsIG1zZG9zIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSBNU0RPUyBwYXJ0aXRpb24gdGFibGUiCi0JREVWSUNFX1NJWkU9JChwYXJ0ZWQgLXMgJERFVklDRSB1bml0IG1iIHByaW50IHwgZ3JlcCBeRGlzayB8IGN1dCAtZCIgIiAtZiAzIHwgc2VkIC1lICJzL01CLy8iKQotZmkKLVNXQVBfU0laRT0kKChERVZJQ0VfU0laRSpTV0FQX1JBVElPLzEwMCkpCi1ST09URlNfU0laRT0kKChERVZJQ0VfU0laRS1CT09UX1NJWkUtU1dBUF9TSVpFKSkKLVJPT1RGU19TVEFSVD0kKChCT09UX1NJWkUpKQotUk9PVEZTX0VORD0kKChST09URlNfU1RBUlQrUk9PVEZTX1NJWkUpKQotU1dBUF9TVEFSVD0kKChST09URlNfRU5EKSkKLQotIyBNTUMgZGV2aWNlcyB1c2UgYSBwYXJ0aXRpb24gcHJlZml4IGNoYXJhY3RlciAncCcKLVBBUlRfUFJFRklYPSIiCi1pZiBbICEgIiR7REVWSUNFIy9kZXYvbW1jYmxrfSIgPSAiJHtERVZJQ0V9IiBdIHx8IFsgISAiJHtERVZJQ0UjL2Rldi9sb29wfSIgPSAiJHtERVZJQ0V9IiBdOyB0aGVuCi0JUEFSVF9QUkVGSVg9InAiCi1maQotQk9PVEZTPSRERVZJQ0Uke1BBUlRfUFJFRklYfTEKLVJPT1RGUz0kREVWSUNFJHtQQVJUX1BSRUZJWH0yCi1TV0FQPSRERVZJQ0Uke1BBUlRfUFJFRklYfTMKLQotVEFSR0VUX1BBUlRfUFJFRklYPSIiCi1pZiBbICEgIiR7VEFSR0VUX0RFVklDRSMvZGV2L21tY2Jsa30iID0gIiR7VEFSR0VUX0RFVklDRX0iIF07IHRoZW4KLQlUQVJHRVRfUEFSVF9QUkVGSVg9InAiCi1maQotVEFSR0VUX1JPT1RGUz0kVEFSR0VUX0RFVklDRSR7VEFSR0VUX1BBUlRfUFJFRklYfTIKLVRBUkdFVF9TV0FQPSRUQVJHRVRfREVWSUNFJHtUQVJHRVRfUEFSVF9QUkVGSVh9MwotCi1lY2hvICIiCi1pbmZvICJCb290IHBhcnRpdGlvbiBzaXplOiAgICRCT09UX1NJWkUgTUIgKCRCT09URlMpIgotaW5mbyAiUk9PVEZTIHBhcnRpdGlvbiBzaXplOiAkUk9PVEZTX1NJWkUgTUIgKCRST09URlMpIgotaW5mbyAiU3dhcCBwYXJ0aXRpb24gc2l6ZTogICAkU1dBUF9TSVpFIE1CICgkU1dBUCkiCi1lY2hvICIiCi0KLSMgVXNlIE1TRE9TIGJ5IGRlZmF1bHQgYXMgR1BUIGNhbm5vdCBiZSByZWxpYWJseSBkaXN0cmlidXRlZCBpbiBkaXNrIGltYWdlIGZvcm0KLSMgYXMgaXQgcmVxdWlyZXMgdGhlIGJhY2t1cCB0YWJsZSB0byBiZSBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgZGV2aWNlLCB3aGljaAotIyBvZiBjb3Vyc2UgdmFyaWVzIGZyb20gZGV2aWNlIHRvIGRldmljZS4KLQotaW5mbyAiUGFydGl0aW9uaW5nIGluc3RhbGxhdGlvbiBtZWRpYSAoJERFVklDRSkiCi0KLWRlYnVnICJEZWxldGluZyBwYXJ0aXRpb24gdGFibGUgb24gJERFVklDRSIKLWRkIGlmPS9kZXYvemVybyBvZj0kREVWSUNFIGJzPTUxMiBjb3VudD0yID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gemVybyBiZWdpbm5pbmcgb2YgJERFVklDRSIKLQotZGVidWcgIkNyZWF0aW5nIG5ldyBwYXJ0aXRpb24gdGFibGUgKE1TRE9TKSBvbiAkREVWSUNFIgotcGFydGVkIC1zICRERVZJQ0UgbWtsYWJlbCBtc2RvcyA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSBNU0RPUyBwYXJ0aXRpb24gdGFibGUiCi0KLWRlYnVnICJDcmVhdGluZyBib290IHBhcnRpdGlvbiBvbiAkQk9PVEZTIgotcGFydGVkIC1zICRERVZJQ0UgbWtwYXJ0IHByaW1hcnkgMCUgJEJPT1RfU0laRSA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSBCT09UIHBhcnRpdGlvbiIKLQotZGVidWcgIkVuYWJsaW5nIGJvb3QgZmxhZyBvbiAkQk9PVEZTIgotcGFydGVkIC1zICRERVZJQ0Ugc2V0IDEgYm9vdCBvbiA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGVuYWJsZSBib290IGZsYWciCi0KLWRlYnVnICJDcmVhdGluZyBST09URlMgcGFydGl0aW9uIG9uICRST09URlMiCi1wYXJ0ZWQgLXMgJERFVklDRSBta3BhcnQgcHJpbWFyeSAkUk9PVEZTX1NUQVJUICRST09URlNfRU5EID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gY3JlYXRlIFJPT1RGUyBwYXJ0aXRpb24iCi0KLWRlYnVnICJDcmVhdGluZyBzd2FwIHBhcnRpdGlvbiBvbiAkU1dBUCIKLXBhcnRlZCAtcyAkREVWSUNFIG1rcGFydCBwcmltYXJ5ICRTV0FQX1NUQVJUIDEwMCUgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBjcmVhdGUgU1dBUCBwYXJ0aXRpb24iCi0KLWlmIFsgJERFQlVHIC1lcSAxIF07IHRoZW4KLQlwYXJ0ZWQgLXMgJERFVklDRSBwcmludAotZmkKLQotCi0jCi0jIENoZWNrIGlmIGFueSAkREVWSUNFIHBhcnRpdGlvbnMgYXJlIG1vdW50ZWQgYWZ0ZXIgcGFydGl0aW9uaW5nCi0jCi11bm1vdW50X2RldmljZSB8fCBkaWUgIkZhaWxlZCB0byB1bm1vdW50ICRERVZJQ0UgcGFydGl0aW9ucyIKLQotCi0jCi0jIEZvcm1hdCAkREVWSUNFIHBhcnRpdGlvbnMKLSMKLWluZm8gIkZvcm1hdHRpbmcgcGFydGl0aW9ucyIKLWRlYnVnICJGb3JtYXR0aW5nICRCT09URlMgYXMgdmZhdCIKLWlmIFsgISAiJHtERVZJQ0UjL2Rldi9sb29wfSIgPSAiJHtERVZJQ0V9IiBdOyB0aGVuCi0JbWtmcy52ZmF0IC1JICRCT09URlMgLW4gIkVGSSIgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBmb3JtYXQgJEJPT1RGUyIKLWVsc2UKLQlta2ZzLnZmYXQgJEJPT1RGUyAtbiAiRUZJIiA+JE9VVCAyPiYxIHx8IGRpZSAiRmFpbGVkIHRvIGZvcm1hdCAkQk9PVEZTIgotZmkKLQotZGVidWcgIkZvcm1hdHRpbmcgJFJPT1RGUyBhcyBleHQzIgotbWtmcy5leHQzIC1GICRST09URlMgLUwgIlJPT1QiID4kT1VUIDI+JjEgfHwgZGllICJGYWlsZWQgdG8gZm9ybWF0ICRST09URlMiCi0KLWRlYnVnICJGb3JtYXR0aW5nIHN3YXAgcGFydGl0aW9uICgkU1dBUCkiCi1ta3N3YXAgJFNXQVAgPiRPVVQgMj4mMSB8fCBkaWUgIkZhaWxlZCB0byBwcmVwYXJlIHN3YXAiCi0KLQotIwotIyBJbnN0YWxsaW5nIHRvICRERVZJQ0UKLSMKLWRlYnVnICJNb3VudGluZyBpbWFnZXMgYW5kIGRldmljZSBpbiBwcmVwYXJhdGlvbiBmb3IgaW5zdGFsbGF0aW9uIgotbW91bnQgLW8gcm8sbG9vcCAkSERESU1HICRIRERJTUdfTU5UID4kT1VUIDI+JjEgfHwgZXJyb3IgIkZhaWxlZCB0byBtb3VudCAkSERESU1HIgotbW91bnQgLW8gcm8sbG9vcCAkSERESU1HX01OVC9yb290ZnMuaW1nICRIRERJTUdfUk9PVEZTX01OVCA+JE9VVCAyPiYxIHx8IGVycm9yICJGYWlsZWQgdG8gbW91bnQgcm9vdGZzLmltZyIKLW1vdW50ICRST09URlMgJFJPT1RGU19NTlQgPiRPVVQgMj4mMSB8fCBlcnJvciAiRmFpbGVkIHRvIG1vdW50ICRST09URlMgb24gJFJPT1RGU19NTlQiCi1tb3VudCAkQk9PVEZTICRCT09URlNfTU5UID4kT1VUIDI+JjEgfHwgZXJyb3IgIkZhaWxlZCB0byBtb3VudCAkQk9PVEZTIG9uICRCT09URlNfTU5UIgotCi1pbmZvICJQcmVwYXJpbmcgYm9vdCBwYXJ0aXRpb24iCi1FRklESVI9IiRCT09URlNfTU5UL0VGSS9CT09UIgotIyBHZXQga2VybmVsIGltYWdlIG5hbWUKLWlmIFsgLWUgIiRIRERJTUdfTU5UL3ZtbGludXoiIF07IHRoZW4KLQlrZXJuZWxfaW1hZ2U9InZtbGludXoiCi1lbGlmIFsgIiRIRERJTUdfTU5UL2J6SW1hZ2UiIF07IHRoZW4KLQlrZXJuZWxfaW1hZ2U9ImJ6SW1hZ2UiCi1lbHNlCi0JZGllICJObyBrZXJuZWwgaW1hZ2UgZm91bmQiCi1maQotY3AgJEhERElNR19NTlQvJHtrZXJuZWxfaW1hZ2V9ICRCT09URlNfTU5UID4kT1VUIDI+JjEgfHwgZXJyb3IgIkZhaWxlZCB0byBjb3B5ICR7a2VybmVsX2ltYWdlfSIKLSMgQ29weSB0aGUgZWZpIGxvYWRlciBhbmQgY29uZmlncyAoYm9vdGkqLmVmaSBhbmQgZ3J1Yi5jZmcgaWYgaXQgZXhpc3RzKQotY3AgLXIgJEhERElNR19NTlQvRUZJICRCT09URlNfTU5UID4kT1VUIDI+JjEgfHwgZXJyb3IgIkZhaWxlZCB0byBjb3B5IEVGSSBkaXIiCi0jIFNpbGVudGx5IGlnbm9yZSBhIG1pc3Npbmcgc3lzdGVtZC1ib290IGxvYWRlciBkaXIgKHdlIG1pZ2h0IGp1c3QgYmUgYSBHUlVCIGltYWdlKQotY3AgLXIgJEhERElNR19NTlQvbG9hZGVyICRCT09URlNfTU5UID4kT1VUIDI+JjEKLQotIyBVcGRhdGUgdGhlIGJvb3QgbG9hZGVycyBjb25maWd1cmF0aW9ucyBmb3IgYW4gaW5zdGFsbGVkIGltYWdlCi0jIFJlbW92ZSBhbnkgZXhpc3Rpbmcgcm9vdD0ga2VybmVsIHBhcmFtZXRlcnMgYW5kOgotIyBvIEFkZCBhIHJvb3Q9IHBhcmFtZXRlciB3aXRoIHRoZSB0YXJnZXQgcm9vdGZzCi0jIG8gU3BlY2lmeSBybyBzbyBmc2NrIGNhbiBiZSBydW4gZHVyaW5nIGJvb3QKLSMgbyBTcGVjaWZ5IHJvb3R3YWl0IGluIGNhc2UgdGhlIHRhcmdldCBtZWRpYSBpcyBhbiBhc3luY3Jvbm91cyBibG9jayBkZXZpY2UKLSMgICBzdWNoIGFzIE1NQyBvciBVU0IgZGlza3MKLSMgbyBTcGVjaWZ5ICJxdWlldCIgdG8gbWluaW1pemUgYm9vdCB0aW1lIHdoZW4gdXNpbmcgc2xvdyBzZXJpYWwgY29uc29sZXMKLQotIyBMb29rIGZvciBhIEdSVUIgaW5zdGFsbGF0aW9uCi1HUlVCX0NGRz0iJEVGSURJUi9ncnViLmNmZyIKLWlmIFsgLWUgIiRHUlVCX0NGRyIgXTsgdGhlbgotCWluZm8gIkNvbmZpZ3VyaW5nIEdSVUIiCi0JIyBEZWxldGUgdGhlIGluc3RhbGwgZW50cnkKLQlzZWQgLWkgIi9tZW51ZW50cnkgJ2luc3RhbGwnLywvXn0vZCIgJEdSVUJfQ0ZHCi0JIyBEZWxldGUgdGhlIGluaXRyZCBsaW5lcwotCXNlZCAtaSAiL2luaXRyZCAvZCIgJEdSVUJfQ0ZHCi0JIyBEZWxldGUgYW55IExBQkVMPSBzdHJpbmdzCi0Jc2VkIC1pICJzLyBMQUJFTD1bXiBdKi8gLyIgJEdSVUJfQ0ZHCi0KLQlzZWQgLWkgInNAIHJvb3Q9W14gXSpAIEAiICRHUlVCX0NGRwotCXNlZCAtaSAic0Ake2tlcm5lbF9pbWFnZX0gQCR7a2VybmVsX2ltYWdlfSByb290PSRUQVJHRVRfUk9PVEZTIHJvIHJvb3R3YWl0IGNvbnNvbGU9dHR5UzAgY29uc29sZT10dHkwIEAiICRHUlVCX0NGRwotZmkKLQotIyBMb29rIGZvciBhIHN5c3RlbWQtYm9vdCBpbnN0YWxsYXRpb24KLVNZU1RFTURfQk9PVF9FTlRSSUVTPSIkQk9PVEZTX01OVC9sb2FkZXIvZW50cmllcyIKLVNZU1RFTURfQk9PVF9DRkc9IiRTWVNURU1EX0JPT1RfRU5UUklFUy9ib290LmNvbmYiCi1pZiBbIC1kICIkU1lTVEVNRF9CT09UX0VOVFJJRVMiIF07IHRoZW4KLQlpbmZvICJDb25maWd1cmluZyBTeXN0ZW1ELWJvb3QiCi0JIyByZW1vdmUgdGhlIGluc3RhbGwgdGFyZ2V0IGlmIGl0IGV4aXN0cwotCXJtICRTWVNURU1EX0JPT1RfRU5UUklFUy9pbnN0YWxsLmNvbmYgPiRPVVQgMj4mMQotCi0JaWYgWyAhIC1lICIkU1lTVEVNRF9CT09UX0NGRyIgXTsgdGhlbgotCQllY2hvICJFUlJPUjogJFNZU1RFTURfQk9PVF9DRkcgbm90IGZvdW5kIgotCWZpCi0KLQlzZWQgLWkgIi9pbml0cmQgL2QiICRTWVNURU1EX0JPT1RfQ0ZHCi0Jc2VkIC1pICJzQCByb290PVteIF0qQCBAIiAkU1lTVEVNRF9CT09UX0NGRwotCXNlZCAtaSAic0BvcHRpb25zICpMQUJFTD1ib290IEBvcHRpb25zIExBQkVMPUJvb3Qgcm9vdD0kVEFSR0VUX1JPT1RGUyBybyByb290d2FpdCBjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5MCBAIiAkU1lTVEVNRF9CT09UX0NGRwotZmkKLQotIyBFbnN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgRUZJIGJvb3Rsb2FkZXIgY29uZmlndXJlZAotaWYgWyAhIC1lICRHUlVCX0NGRyBdICYmIFsgISAtZSAkU1lTVEVNRF9CT09UX0NGRyBdOyB0aGVuCi0JZGllICJObyBFRkkgYm9vdGxvYWRlciBjb25maWd1cmF0aW9uIGZvdW5kIgotZmkKLQotCi1pbmZvICJDb3B5aW5nIFJPT1RGUyBmaWxlcyAodGhpcyBtYXkgdGFrZSBhIHdoaWxlKSIKLWNwIC1hICRIRERJTUdfUk9PVEZTX01OVC8qICRST09URlNfTU5UID4kT1VUIDI+JjEgfHwgZGllICJSb290IEZTIGNvcHkgZmFpbGVkIgotCi1lY2hvICIkVEFSR0VUX1NXQVAgICAgIHN3YXAgICAgICAgICAgICAgc3dhcCAgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMCAwIiA+PiAkUk9PVEZTX01OVC9ldGMvZnN0YWIKLQotIyBXZSBkb250IHdhbnQgdWRldiB0byBtb3VudCBvdXIgcm9vdCBkZXZpY2Ugd2hpbGUgd2UncmUgYm9vdGluZy4uLgotaWYgWyAtZCAkUk9PVEZTX01OVC9ldGMvdWRldi8gXSA7IHRoZW4KLQllY2hvICIkVEFSR0VUX0RFVklDRSIgPj4gJFJPT1RGU19NTlQvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0Ci1maQotCi0jIEFkZCBzdGFydHVwLm5zaCBzY3JpcHQgZm9yIGF1dG9tYXRlZCBib290Ci1wcmludGYgImZzMDpcJXNcQk9PVFwlc1xuIiAiRUZJIiAiYm9vdHg2NC5lZmkiID4gJEJPT1RGU19NTlQvc3RhcnR1cC5uc2gKLQotCi0jIENhbGwgY2xlYW51cCB0byB1bm1vdW50IGRldmljZXMgYW5kIGltYWdlcyBhbmQgcmVtb3ZlIHRoZSBUTVBESVIKLWNsZWFudXAKLQotZWNobyAiIgotaWYgWyAkV0FSTklOR1MgLW5lIDAgXSAmJiBbICRFUlJPUlMgLWVxIDAgXTsgdGhlbgotCWVjaG8gIiR7WUVMTE9XfUluc3RhbGxhdGlvbiBjb21wbGV0ZWQgd2l0aCB3YXJuaW5ncyR7Q0xFQVJ9IgotCWVjaG8gIiR7WUVMTE9XfVdhcm5pbmdzOiAkV0FSTklOR1Mke0NMRUFSfSIKLWVsaWYgWyAkRVJST1JTIC1uZSAwIF07IHRoZW4KLQllY2hvICIke1JFRH1JbnN0YWxsYXRpb24gZW5jb3VudGVyZWQgZXJyb3JzJHtDTEVBUn0iCi0JZWNobyAiJHtSRUR9RXJyb3JzOiAkRVJST1JTJHtDTEVBUn0iCi0JZWNobyAiJHtZRUxMT1d9V2FybmluZ3M6ICRXQVJOSU5HUyR7Q0xFQVJ9IgotZWxzZQotCXN1Y2Nlc3MgIkluc3RhbGxhdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IgotZmkKLWVjaG8gIiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb250cmliL3BhdGNocmV2aWV3LnB5IGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvcGF0Y2hyZXZpZXcucHkKaW5kZXggNGUzZTczYy4uYTRkNWJhNiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvcGF0Y2hyZXZpZXcucHkKKysrIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvcGF0Y2hyZXZpZXcucHkKQEAgLTEzMiw4ICsxMzIsOCBAQAogICAgICAgICAgICAgbmVlZF9ibGFtZSA9IFRydWUKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoIk1pc3NpbmcgU2lnbmVkLW9mZi1ieSB0YWcgKCVzKSIgJSBwYXRjaCkKLSAgICAgICAgIyBUT0RPOiBkaXNhYmxlIHRoaXMgZm9yIG5vdyBhcyB0b28gbXVjaCBmYWlscwotICAgICAgICBpZiBGYWxzZSBhbmQgci5tYWxmb3JtZWRfc29iOgorCisgICAgICAgIGlmIHIubWFsZm9ybWVkX3NvYjoKICAgICAgICAgICAgIG5lZWRfYmxhbWUgPSBUcnVlCiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCJNYWxmb3JtZWQgU2lnbmVkLW9mZi1ieSAnJXMnICglcykiICUgKHIubWFsZm9ybWVkX3NvYiwgcGF0Y2gpKQpAQCAtMjAzLDcgKzIwMyw3IEBACiAKICAgICBpZiBhcmdzLmRpcmVjdG9yeToKICAgICAgICAgb3MuY2hkaXIoYXJncy5kaXJlY3RvcnkpCi0gICAgcGF0Y2hlcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiZ2l0IiwgImxzLWZpbGVzIiwgIioucGF0Y2giLCAiKi5kaWZmIikpLmRlY29kZSgidXRmLTgiKS5zcGxpdCgpCisgICAgcGF0Y2hlcyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgiZ2l0IiwgImxzLWZpbGVzIiwgInJlY2lwZXMtKi8qKi8qLnBhdGNoIiwgInJlY2lwZXMtKi8qKi8qLmRpZmYiKSkuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0KCkKICAgICByZXN1bHRzID0gcGF0Y2hyZXZpZXcocGF0Y2hlcykKICAgICBhbmFseXNlKHJlc3VsdHMsIHdhbnRfYmxhbWU9YXJncy5ibGFtZSwgdmVyYm9zZT1hcmdzLnZlcmJvc2UpCiAgICAgaWYgYXJncy5oaXN0b2dyYW06CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29udHJpYi92ZXJpZnktaG9tZXBhZ2UucHkgYi9wb2t5L3NjcmlwdHMvY29udHJpYi92ZXJpZnktaG9tZXBhZ2UucHkKaW5kZXggNzZmMTc0OS4uY2M2ZTc5NyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvdmVyaWZ5LWhvbWVwYWdlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9jb250cmliL3ZlcmlmeS1ob21lcGFnZS5weQpAQCAtMjcsNyArMjcsNyBAQAogZGVmIHdnZXRIb21lcGFnZShwbiwgaG9tZXBhZ2UpOgogICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbCgnd2dldCAnICsgJy1xIC1UIDUgLXQgMSAtLXNwaWRlciAnICsgaG9tZXBhZ2UsIHNoZWxsID0gVHJ1ZSkKICAgICBpZiByZXN1bHQ6Ci0gICAgICAgIGxvZ2dlci53YXJuKCIlczogZmFpbGVkIHRvIHZlcmlmeSBIT01FUEFHRTogJXMgIiAlIChwbiwgaG9tZXBhZ2UpKQorICAgICAgICBsb2dnZXIud2FybmluZygiJXM6IGZhaWxlZCB0byB2ZXJpZnkgSE9NRVBBR0U6ICVzICIgJSAocG4sIGhvbWVwYWdlKSkKICAgICAgICAgcmV0dXJuIDEKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gMApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2RldnRvb2wgYi9wb2t5L3NjcmlwdHMvZGV2dG9vbAppbmRleCBkNjgxYTE5Li4wZTU3OGMwIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvZGV2dG9vbAorKysgYi9wb2t5L3NjcmlwdHMvZGV2dG9vbApAQCAtNTEsNyArNTEsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgc2VsZi5jb25maWdfZmlsZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYuY29uZmlnX29iaiA9IGNvbmZpZ3BhcnNlci5TYWZlQ29uZmlnUGFyc2VyKCkKKyAgICAgICAgc2VsZi5jb25maWdfb2JqID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAKICAgICBkZWYgZ2V0KHNlbGYsIHNlY3Rpb24sIG9wdGlvbiwgZGVmYXVsdD1Ob25lKToKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9idWlsZF9wZXJmL2h0bWwvcmVwb3J0Lmh0bWwgYi9wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvaHRtbC9yZXBvcnQuaHRtbAppbmRleCAyOTFhZDlkLi5kMWJhNmYyIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvaHRtbC9yZXBvcnQuaHRtbAorKysgYi9wb2t5L3NjcmlwdHMvbGliL2J1aWxkX3BlcmYvaHRtbC9yZXBvcnQuaHRtbApAQCAtMTM2LDEwICsxMzYsMTMgQEAKICAgICAgICAgICAgIHslIGVsc2UgJX0KICAgICAgICAgICAgICAgeyUgc2V0IHJlc3VsdF9zdHlsZSA9ICJjb2xvcjogb3JhbmdlIiAlfQogICAgICAgICAgICAgeyVlbmRpZiAlfQorICAgICAgICAgICAgeyUgaWYgbWVhc3VyZW1lbnQucmVsZGlmZnxhYnMgPiAyICV9CisgICAgICAgICAgICAgIHslIHNldCByZXN1bHRfc3R5bGUgPSByZXN1bHRfc3R5bGUgKyAiOyBmb250LXdlaWdodDogYm9sZCIgJX0KKyAgICAgICAgICAgIHslIGVuZGlmICV9CiAgICAgICAgICAgICA8dGQ+e3sgbWVhc3VyZW1lbnQuZGVzY3JpcHRpb24gfX08L3RkPgogICAgICAgICAgICAgPHRkIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCI+e3sgbWVhc3VyZW1lbnQudmFsdWUubWVhbiB9fTwvdGQ+CiAgICAgICAgICAgICA8dGQgc3R5bGU9Int7IHJlc3VsdF9zdHlsZSB9fSI+e3sgbWVhc3VyZW1lbnQuYWJzZGlmZl9zdHIgfX08L3RkPgotICAgICAgICAgICAgPHRkIHN0eWxlPSJ7eyByZXN1bHRfc3R5bGUgfX0iPnt7IG1lYXN1cmVtZW50LnJlbGRpZmYgfX08L3RkPgorICAgICAgICAgICAgPHRkIHN0eWxlPSJ7eyByZXN1bHRfc3R5bGUgfX0iPnt7IG1lYXN1cmVtZW50LnJlbGRpZmZfc3RyIH19PC90ZD4KICAgICAgICAgICA8L3RyPgogICAgICAgICB7JSBlbmRmb3IgJX0KICAgICAgIHslIGVsc2UgJX0KQEAgLTE2Nyw3ICsxNzAsNyBAQAogICAgICAgICAgICAgeyUgZWxzZSAlfQogICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiBvcmFuZ2UiPgogICAgICAgICAgICAgeyUgZW5kaWYgJX0KLSAgICAgICAgICAgIHt7IG1lYXN1cmVtZW50LmFic2RpZmZfc3RyIH19ICh7e21lYXN1cmVtZW50LnJlbGRpZmZ9fSkKKyAgICAgICAgICAgIHt7IG1lYXN1cmVtZW50LmFic2RpZmZfc3RyIH19ICh7e21lYXN1cmVtZW50LnJlbGRpZmZfc3RyfX0pCiAgICAgICAgICAgICA8L3NwYW4+PC9zcGFuPgogICAgICAgICAgIDwvZGl2PgogICAgICAgICAgIHsjIFRhYmxlIGZvciB0cmVuZGNoYXJ0IGFuZCB0aGUgc3RhdGlzdGljcyAjfQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2J1aWxkLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2J1aWxkLnB5CmluZGV4IDI1MjM3OWUuLmJhOTU5M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9idWlsZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvYnVpbGQucHkKQEAgLTU0LDcgKzU0LDExIEBACiAgICAgIiIiRW50cnkgcG9pbnQgZm9yIHRoZSBkZXZ0b29sICdidWlsZCcgc3ViY29tbWFuZCIiIgogICAgIHdvcmtzcGFjZXBuID0gY2hlY2tfd29ya3NwYWNlX3JlY2lwZSh3b3Jrc3BhY2UsIGFyZ3MucmVjaXBlbmFtZSwgYmJjbGFzc2V4dGVuZD1UcnVlKQogCi0gICAgYnVpbGRfdGFza3MgPSBfZ2V0X2J1aWxkX3Rhc2tzKGNvbmZpZykKKyAgICBpZiBhcmdzLmNsZWFuOgorICAgICAgICAjIHVzZSBjbGVhbiBpbnN0ZWFkIG9mIGNsZWFuc3N0YXRlIHRvIGF2b2lkIG1lc3NpbmcgdGhpbmdzIHVwIGluIGVTREsKKyAgICAgICAgYnVpbGRfdGFza3MgPSBbJ2RvX2NsZWFuJ10KKyAgICBlbHNlOgorICAgICAgICBidWlsZF90YXNrcyA9IF9nZXRfYnVpbGRfdGFza3MoY29uZmlnKQogCiAgICAgYmJhcHBlbmQgPSB3b3Jrc3BhY2Vbd29ya3NwYWNlcG5dWydiYmFwcGVuZCddCiAgICAgaWYgYXJncy5kaXNhYmxlX3BhcmFsbGVsX21ha2U6CkBAIC04Myw0ICs4Nyw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwPSd3b3JraW5nJywgb3JkZXI9NTApCiAgICAgcGFyc2VyX2J1aWxkLmFkZF9hcmd1bWVudCgncmVjaXBlbmFtZScsIGhlbHA9J1JlY2lwZSB0byBidWlsZCcpCiAgICAgcGFyc2VyX2J1aWxkLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1kaXNhYmxlLXBhcmFsbGVsLW1ha2UnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdEaXNhYmxlIG1ha2UgcGFyYWxsZWxpc20nKQorICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1jJywgJy0tY2xlYW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdjbGVhbiB1cCByZWNpcGUgYnVpbGRpbmcgcmVzdWx0cycpCiAgICAgcGFyc2VyX2J1aWxkLnNldF9kZWZhdWx0cyhmdW5jPWJ1aWxkKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2V4cG9ydC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9leHBvcnQucHkKaW5kZXggMTNlZTI1OC4uMzUzNDllMiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2V4cG9ydC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvZXhwb3J0LnB5CkBAIC04NCw3ICs4NCw3IEBACiAKICAgICAjIGlmIGFsbCB3b3Jrc3BhY2UgaXMgZXhjbHVkZWQsIHF1aXQKICAgICBpZiBub3QgbGVuKHNldCh3b3Jrc3BhY2Uua2V5cygpKS5kaWZmZXJlbmNlKHNldChhcmdzLmV4Y2x1ZGUpKSk6Ci0gICAgICAgIGxvZ2dlci53YXJuKCdBbGwgcmVjaXBlcyBpbiB3b3Jrc3BhY2UgZXhjbHVkZWQsIG5vdGhpbmcgdG8gZXhwb3J0JykKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0FsbCByZWNpcGVzIGluIHdvcmtzcGFjZSBleGNsdWRlZCwgbm90aGluZyB0byBleHBvcnQnKQogICAgICAgICByZXR1cm4gMAogCiAgICAgZXhwb3J0ZWQgPSBbXQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2ltcG9ydC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9pbXBvcnQucHkKaW5kZXggYzEzYTE4MC4uNDI2NGI3ZCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL2ltcG9ydC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvaW1wb3J0LnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5vbl9pbXBvcnRhYmxlcy5hcHBlbmQoZm4pCi0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ05vIHJlY2lwZSB0byBhcHBlbmQgJXMuYmJhcHBwZW5kLCBza2lwcGluZycgJSBmbikKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTm8gcmVjaXBlIHRvIGFwcGVuZCAlcy5iYmFwcHBlbmQsIHNraXBwaW5nJyAlIGZuKQogCiAgICAgICAgICMgRXh0cmFjdAogICAgICAgICBpbXBvcnRlZCA9IFtdCkBAIC0xMDQsOSArMTA0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIuZXh0cmFjdChtZW1iZXIsIHBhdGg9Y29uZmlnLndvcmtzcGFjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvciBhcyBwZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybihwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhwZSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdGaWxlIGFscmVhZHkgcHJlc2VudC4gVXNlIC0tb3ZlcndyaXRlLy1vIHRvIG92ZXJ3cml0ZSBpdDogJXMnICUgbWVtYmVyLm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnRmlsZSBhbHJlYWR5IHByZXNlbnQuIFVzZSAtLW92ZXJ3cml0ZS8tbyB0byBvdmVyd3JpdGUgaXQ6ICVzJyAlIG1lbWJlci5uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB0YXIuZXh0cmFjdChtZW1iZXIsIHBhdGg9Y29uZmlnLndvcmtzcGFjZV9wYXRoKQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgaWYgaW1wb3J0ZWQ6CiAgICAgICAgIGxvZ2dlci5pbmZvKCdJbXBvcnRlZCByZWNpcGVzIGludG8gd29ya3NwYWNlICVzOiAlcycgJSAoY29uZmlnLndvcmtzcGFjZV9wYXRoLCAnLCAnLmpvaW4oaW1wb3J0ZWQpKSkKICAgICBlbHNlOgotICAgICAgICBsb2dnZXIud2FybignTm8gcmVjaXBlcyBpbXBvcnRlZCBpbnRvIHRoZSB3b3Jrc3BhY2UnKQorICAgICAgICBsb2dnZXIud2FybmluZygnTm8gcmVjaXBlcyBpbXBvcnRlZCBpbnRvIHRoZSB3b3Jrc3BhY2UnKQogCiAgICAgcmV0dXJuIDAKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CmluZGV4IGExZThlMWQuLmQxNGI3YTYgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKQEAgLTY2LDcgKzY2LDcgQEAKICAgICAgICAgICAgIGFyZ3Muc3JjdHJlZSA9IGFyZ3MucmVjaXBlbmFtZQogICAgICAgICAgICAgYXJncy5yZWNpcGVuYW1lID0gTm9uZQogICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoYXJncy5yZWNpcGVuYW1lKToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdBbWJpZ3VvdXMgYXJndW1lbnQgIiVzIiAtIGFzc3VtaW5nIHlvdSBtZWFuIGl0IHRvIGJlIHRoZSByZWNpcGUgbmFtZScgJSBhcmdzLnJlY2lwZW5hbWUpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnQW1iaWd1b3VzIGFyZ3VtZW50ICIlcyIgLSBhc3N1bWluZyB5b3UgbWVhbiBpdCB0byBiZSB0aGUgcmVjaXBlIG5hbWUnICUgYXJncy5yZWNpcGVuYW1lKQogCiAgICAgaWYgbm90IGFyZ3MuZmV0Y2h1cmk6CiAgICAgICAgIGlmIGFyZ3Muc3JjcmV2OgpAQCAtODIsNyArODIsNyBAQAogICAgICAgICBpZiBhcmdzLmZldGNodXJpOgogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdVUkkgc3BlY2lmaWVkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgYXMgd2VsbCBhcyAtZi8tLWZldGNoJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCctZi8tLWZldGNoIG9wdGlvbiBpcyBkZXByZWNhdGVkIC0geW91IGNhbiBub3cgc2ltcGx5IHNwZWNpZnkgdGhlIFVSTCB0byBmZXRjaCBhcyBhIHBvc2l0aW9uYWwgYXJndW1lbnQgaW5zdGVhZCcpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnLWYvLS1mZXRjaCBvcHRpb24gaXMgZGVwcmVjYXRlZCAtIHlvdSBjYW4gbm93IHNpbXBseSBzcGVjaWZ5IHRoZSBVUkwgdG8gZmV0Y2ggYXMgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGluc3RlYWQnKQogICAgICAgICAgICAgYXJncy5mZXRjaHVyaSA9IGFyZ3MuZmV0Y2gKIAogICAgIGlmIGFyZ3MucmVjaXBlbmFtZToKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgcmFpc2UgRGV2dG9vbEVycm9yKCdDb21tYW5kIFwnJXNcJyBkaWQgbm90IGNyZWF0ZSBhbnkgcmVjaXBlIGZpbGU6XG4lcycgJSAoZS5jb21tYW5kLCBlLnN0ZG91dCkpCiAgICAgICAgIGF0dGljX3JlY2lwZSA9IG9zLnBhdGguam9pbihjb25maWcud29ya3NwYWNlX3BhdGgsICdhdHRpYycsIHJlY2lwZW5hbWUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGF0dGljX3JlY2lwZSk6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignQSBtb2RpZmllZCByZWNpcGUgZnJvbSBhIHByZXZpb3VzIGludm9jYXRpb24gZXhpc3RzIGluICVzIC0geW91IG1heSB3aXNoIHRvIG1vdmUgdGhpcyBvdmVyIHRoZSB0b3Agb2YgdGhlIG5ldyByZWNpcGUgaWYgeW91IGhhZCBjaGFuZ2VzIGluIGl0IHRoYXQgeW91IHdhbnQgdG8gY29udGludWUgd2l0aCcgJSBhdHRpY19yZWNpcGUpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnQSBtb2RpZmllZCByZWNpcGUgZnJvbSBhIHByZXZpb3VzIGludm9jYXRpb24gZXhpc3RzIGluICVzIC0geW91IG1heSB3aXNoIHRvIG1vdmUgdGhpcyBvdmVyIHRoZSB0b3Agb2YgdGhlIG5ldyByZWNpcGUgaWYgeW91IGhhZCBjaGFuZ2VzIGluIGl0IHRoYXQgeW91IHdhbnQgdG8gY29udGludWUgd2l0aCcgJSBhdHRpY19yZWNpcGUpCiAgICAgZmluYWxseToKICAgICAgICAgaWYgdG1wc3JjZGlyIGFuZCBvcy5wYXRoLmV4aXN0cyh0bXBzcmNkaXIpOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBzcmNkaXIpCkBAIC0yOTUsNyArMjk1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyY29uZl9maWxlLCAnYScpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCclcyA9ICIlcyJcbicgJSAocHJlZmVycmVkX3Byb3ZpZGVyLCByZWNpcGVfbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1NldCBcJyVzXCcgaW4gb3JkZXIgdG8gdXNlIHRoZSByZWNpcGUnICUgcHJlZmVycmVkX3Byb3ZpZGVyKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnU2V0IFwnJXNcJyBpbiBvcmRlciB0byB1c2UgdGhlIHJlY2lwZScgJSBwcmVmZXJyZWRfcHJvdmlkZXIpCiAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBfYWRkX21kNShjb25maWcsIHJlY2lwZW5hbWUsIGFwcGVuZGZpbGUpCkBAIC03MDQsNyArNzA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgc3BsaXRsaW5lWzJdICE9IG1kNToKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihwcmVzZXJ2ZXBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZWZpbGUgPSBvcy5wYXRoLmJhc2VuYW1lKHJlbW92ZWZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybignRmlsZSAlcyBtb2RpZmllZCBzaW5jZSBpdCB3YXMgd3JpdHRlbiwgcHJlc2VydmluZyBpbiAlcycgJSAocHJlc2VydmVmaWxlLCBwcmVzZXJ2ZXBhdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0ZpbGUgJXMgbW9kaWZpZWQgc2luY2UgaXQgd2FzIHdyaXR0ZW4sIHByZXNlcnZpbmcgaW4gJXMnICUgKHByZXNlcnZlZmlsZSwgcHJlc2VydmVwYXRoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHJlbW92ZWZpbGUsIG9zLnBhdGguam9pbihwcmVzZXJ2ZXBhdGgsIHByZXNlcnZlZmlsZSkpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUocmVtb3ZlZmlsZSkKQEAgLTc5NSw3ICs3OTUsNyBAQAogICAgICAgICAgICAgICAgIGlmIGJyYW5jaG5hbWUuc3RhcnRzd2l0aChvdmVycmlkZV9icmFuY2hfcHJlZml4KToKICAgICAgICAgICAgICAgICAgICAgYnJhbmNoZXMuYXBwZW5kKGJyYW5jaG5hbWUpCiAgICAgICAgICAgICBpZiBicmFuY2hlczoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignU1JDX1VSSSBpcyBjb25kaXRpb25hbGx5IG92ZXJyaWRkZW4gaW4gdGhpcyByZWNpcGUsIHRodXMgc2V2ZXJhbCAlcyogYnJhbmNoZXMgaGF2ZSBiZWVuIGNyZWF0ZWQsIG9uZSBmb3IgZWFjaCBvdmVycmlkZSB0aGF0IG1ha2VzIGNoYW5nZXMgdG8gU1JDX1VSSS4gSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgbWFrZSBjaGFuZ2VzIHRvIHRoZSAlcyBicmFuY2ggZmlyc3QsIHRoZW4gY2hlY2tvdXQgYW5kIHJlYmFzZSBlYWNoICVzKiBicmFuY2ggYW5kIHVwZGF0ZSBhbnkgdW5pcXVlIHBhdGNoZXMgdGhlcmUgKGR1cGxpY2F0ZXMgb24gdGhvc2UgYnJhbmNoZXMgd2lsbCBiZSBpZ25vcmVkIGJ5IGRldnRvb2wgZmluaXNoL3VwZGF0ZS1yZWNpcGUpJyAlIChvdmVycmlkZV9icmFuY2hfcHJlZml4LCBhcmdzLmJyYW5jaCwgb3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCkpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1NSQ19VUkkgaXMgY29uZGl0aW9uYWxseSBvdmVycmlkZGVuIGluIHRoaXMgcmVjaXBlLCB0aHVzIHNldmVyYWwgJXMqIGJyYW5jaGVzIGhhdmUgYmVlbiBjcmVhdGVkLCBvbmUgZm9yIGVhY2ggb3ZlcnJpZGUgdGhhdCBtYWtlcyBjaGFuZ2VzIHRvIFNSQ19VUkkuIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgJXMgYnJhbmNoIGZpcnN0LCB0aGVuIGNoZWNrb3V0IGFuZCByZWJhc2UgZWFjaCAlcyogYnJhbmNoIGFuZCB1cGRhdGUgYW55IHVuaXF1ZSBwYXRjaGVzIHRoZXJlIChkdXBsaWNhdGVzIG9uIHRob3NlIGJyYW5jaGVzIHdpbGwgYmUgaWdub3JlZCBieSBkZXZ0b29sIGZpbmlzaC91cGRhdGUtcmVjaXBlKScgJSAob3ZlcnJpZGVfYnJhbmNoX3ByZWZpeCwgYXJncy5icmFuY2gsIG92ZXJyaWRlX2JyYW5jaF9wcmVmaXgpKQogICAgICAgICAgICAgYnJhbmNoZXMuaW5zZXJ0KDAsIGFyZ3MuYnJhbmNoKQogICAgICAgICAgICAgc2Vlbl9wYXRjaGVzID0gW10KICAgICAgICAgICAgIGZvciBicmFuY2ggaW4gYnJhbmNoZXM6CkBAIC0xNzIwLDcgKzE3MjAsNyBAQAogICAgICAgICBpZiB1cGRhdGVkOgogICAgICAgICAgICAgcmYgPSByZC5nZXRWYXIoJ0ZJTEUnKQogICAgICAgICAgICAgaWYgcmYuc3RhcnRzd2l0aChjb25maWcud29ya3NwYWNlX3BhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdSZWNpcGUgZmlsZSAlcyBoYXMgYmVlbiB1cGRhdGVkIGJ1dCBpcyBpbnNpZGUgdGhlIHdvcmtzcGFjZSAtIHlvdSB3aWxsIG5lZWQgdG8gbW92ZSBpdCAoYW5kIGFueSBhc3NvY2lhdGVkIGZpbGVzIG5leHQgdG8gaXQpIG91dCB0byB0aGUgZGVzaXJlZCBsYXllciBiZWZvcmUgdXNpbmcgImRldnRvb2wgcmVzZXQiIGluIG9yZGVyIHRvIGtlZXAgYW55IGNoYW5nZXMnICUgcmYpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1JlY2lwZSBmaWxlICVzIGhhcyBiZWVuIHVwZGF0ZWQgYnV0IGlzIGluc2lkZSB0aGUgd29ya3NwYWNlIC0geW91IHdpbGwgbmVlZCB0byBtb3ZlIGl0IChhbmQgYW55IGFzc29jaWF0ZWQgZmlsZXMgbmV4dCB0byBpdCkgb3V0IHRvIHRoZSBkZXNpcmVkIGxheWVyIGJlZm9yZSB1c2luZyAiZGV2dG9vbCByZXNldCIgaW4gb3JkZXIgdG8ga2VlcCBhbnkgY2hhbmdlcycgJSByZikKICAgICBmaW5hbGx5OgogICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKIApAQCAtMTgwMyw3ICsxODAzLDcgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9yaWdkaXIpOgogICAgICAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKG9yaWdkaXIpOgogICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybignUHJlc2VydmluZyAlcyBpbiAlcycgJSAoZm4sIHByZXNlcnZlcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnUHJlc2VydmluZyAlcyBpbiAlcycgJSAoZm4sIHByZXNlcnZlcGF0aCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbihvcmlnZGlyLCBmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihwcmVzZXJ2ZXBhdGgsIGZuKSkKICAgICAgICAgICAgICAgICAgICAgZm9yIGRuIGluIGRpcnM6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvdXBncmFkZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CmluZGV4IGMzZmQ4NjYuLjIwMjAwNzcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC91cGdyYWRlLnB5CkBAIC0yNjQsNyArMjY0LDcgQEAKICAgICBpZiBub19wYXRjaDoKICAgICAgICAgcGF0Y2hlcyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcGF0Y2hlcyhjcmQpCiAgICAgICAgIGlmIHBhdGNoZXM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignQnkgdXNlciBjaG9pY2UsIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyB3aWxsIE5PVCBiZSBhcHBsaWVkIHRvIHRoZSBuZXcgc291cmNlIHRyZWU6XG4gICVzJyAlICdcbiAgJy5qb2luKFtvcy5wYXRoLmJhc2VuYW1lKHBhdGNoKSBmb3IgcGF0Y2ggaW4gcGF0Y2hlc10pKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0J5IHVzZXIgY2hvaWNlLCB0aGUgZm9sbG93aW5nIHBhdGNoZXMgd2lsbCBOT1QgYmUgYXBwbGllZCB0byB0aGUgbmV3IHNvdXJjZSB0cmVlOlxuICAlcycgJSAnXG4gICcuam9pbihbb3MucGF0aC5iYXNlbmFtZShwYXRjaCkgZm9yIHBhdGNoIGluIHBhdGNoZXNdKSkKICAgICBlbHNlOgogICAgICAgICBfX3J1bignZ2l0IGNoZWNrb3V0IGRldnRvb2wtcGF0Y2hlZCAtYiAlcycgJSBicmFuY2gpCiAgICAgICAgIHNraXB0YWcgPSBGYWxzZQpAQCAtMjczLDkgKzI3Myw5IEBACiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6CiAgICAgICAgICAgICBza2lwdGFnID0gVHJ1ZQogICAgICAgICAgICAgaWYgJ2NvbmZsaWN0JyBpbiBlLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignQ29tbWFuZCBcJyVzXCcgZmFpbGVkOlxuJXNcblxuWW91IHdpbGwgbmVlZCB0byByZXNvbHZlIGNvbmZsaWN0cyBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgdXBncmFkZS4nICUgKGUuY29tbWFuZCwgZS5zdGRvdXQucnN0cmlwKCkpKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDb21tYW5kIFwnJXNcJyBmYWlsZWQ6XG4lc1xuXG5Zb3Ugd2lsbCBuZWVkIHRvIHJlc29sdmUgY29uZmxpY3RzIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSB1cGdyYWRlLicgJSAoZS5jb21tYW5kLCBlLnN0ZG91dC5yc3RyaXAoKSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdDb21tYW5kIFwnJXNcJyBmYWlsZWQ6XG4lcycgJSAoZS5jb21tYW5kLCBlLnN0ZG91dCkpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ0NvbW1hbmQgXCclc1wnIGZhaWxlZDpcbiVzJyAlIChlLmNvbW1hbmQsIGUuc3Rkb3V0KSkKICAgICAgICAgaWYgbm90IHNraXB0YWc6CiAgICAgICAgICAgICBpZiB1cmkuc3RhcnRzd2l0aCgnZ2l0Oi8vJyk6CiAgICAgICAgICAgICAgICAgc3VmZml4ID0gJ25ldycKQEAgLTQyMCw3ICs0MjAsMTAgQEAKICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnU291cmNlIHN1YmRpcmVjdG9yeSBoYXMgY2hhbmdlZCwgdXBkYXRpbmcgUyB2YWx1ZScpCiAKICAgICBpZiBsaWNlbnNlX2RpZmY6Ci0gICAgICAgIG5ld2xpY2Noa3N1bSA9ICIgIi5qb2luKFsiZmlsZTovL3t9O21kNT17fSIuZm9ybWF0KGxbInBhdGgiXSwgbFsiYWN0dWFsX21kNSJdKSArICgiO2JlZ2lubGluZT17fSIuZm9ybWF0KGxbImJlZ2lubGluZSJdKSBpZiBsWyJiZWdpbmxpbmUiXSBlbHNlICIiKSArICgiO2VuZGxpbmU9e30iLmZvcm1hdChsWyJlbmRsaW5lIl0pIGlmIGxbImVuZGxpbmUiXSBlbHNlICIiKSBmb3IgbCBpbiBuZXdfbGljZW5zZXNdKQorICAgICAgICBuZXdsaWNjaGtzdW0gPSAiICIuam9pbihbImZpbGU6Ly97fSIuZm9ybWF0KGxbJ3BhdGgnXSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCI7YmVnaW5saW5lPXt9Ii5mb3JtYXQobFsnYmVnaW5saW5lJ10pIGlmIGxbJ2JlZ2lubGluZSddIGVsc2UgIiIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiO2VuZGxpbmU9e30iLmZvcm1hdChsWydlbmRsaW5lJ10pIGlmIGxbJ2VuZGxpbmUnXSBlbHNlICIiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIjttZDU9e30iLmZvcm1hdChsWydhY3R1YWxfbWQ1J10pKSBmb3IgbCBpbiBuZXdfbGljZW5zZXNdKQogICAgICAgICBuZXd2YWx1ZXNbIkxJQ19GSUxFU19DSEtTVU0iXSA9IG5ld2xpY2Noa3N1bQogICAgICAgICBfYWRkX2xpY2Vuc2VfZGlmZl90b19yZWNpcGUoZnVsbHBhdGgsIGxpY2Vuc2VfZGlmZikKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2FwcGVuZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9hcHBlbmQucHkKaW5kZXggNjljOGJiNy4uM2YyYzEzNCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2FwcGVuZC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvYXBwZW5kLnB5CkBAIC0yMzgsNyArMjM4LDcgQEAKICAgICBpZiBzdGRvdXQ6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnZmlsZSBjb21tYW5kIG91dHB1dDogJXMnICUgc3Rkb3V0LnJzdHJpcCgpKQogICAgICAgICBpZiAoJ2V4ZWN1dGFibGUnIGluIHN0ZG91dCBhbmQgbm90ICdzaGVsbCBzY3JpcHQnIGluIHN0ZG91dCkgb3IgJ3NoYXJlZCBvYmplY3QnIGluIHN0ZG91dDoKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdUaGlzIGZpbGUgbG9va3MgbGlrZSBpdCBpcyBhIGJpbmFyeSBvciBvdGhlcndpc2UgdGhlIG91dHB1dCBvZiBjb21waWxhdGlvbi4gSWYgaXQgaXMsIHlvdSBzaG91bGQgY29uc2lkZXIgYnVpbGRpbmcgaXQgcHJvcGVybHkgaW5zdGVhZCBvZiBzdWJzdGl0dXRpbmcgYSBiaW5hcnkgZmlsZSBkaXJlY3RseS4nKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1RoaXMgZmlsZSBsb29rcyBsaWtlIGl0IGlzIGEgYmluYXJ5IG9yIG90aGVyd2lzZSB0aGUgb3V0cHV0IG9mIGNvbXBpbGF0aW9uLiBJZiBpdCBpcywgeW91IHNob3VsZCBjb25zaWRlciBidWlsZGluZyBpdCBwcm9wZXJseSBpbnN0ZWFkIG9mIHN1YnN0aXR1dGluZyBhIGJpbmFyeSBmaWxlIGRpcmVjdGx5LicpCiAKICAgICBpZiBhcmdzLnJlY2lwZToKICAgICAgICAgcmVjaXBlcyA9IHthcmdzLnRhcmdldHBhdGg6IFthcmdzLnJlY2lwZV0sfQpAQCAtMjc1LDcgKzI3NSw3IEBACiAgICAgaWYgc2VsZWN0cG46CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnU2VsZWN0aW5nIHJlY2lwZSAlcyBmb3IgZmlsZSAlcycgJSAoc2VsZWN0cG4sIGFyZ3MudGFyZ2V0cGF0aCkpCiAgICAgICAgIGlmIHBvc3RpbnN0X3BuczoKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCclcyBiZSBtb2RpZmllZCBieSBwb3N0aW5zdGFsbCBzY3JpcHRzIGZvciB0aGUgZm9sbG93aW5nIHJlY2lwZXM6XG4gICVzXG5UaGlzIG1heSBvciBtYXkgbm90IGJlIGFuIGlzc3VlIGRlcGVuZGluZyBvbiB3aGF0IG1vZGlmaWNhdGlvbnMgdGhlc2UgcG9zdGluc3RhbGwgc2NyaXB0cyBtYWtlLicgJSAoYXJncy50YXJnZXRwYXRoLCAnXG4gICcuam9pbihwb3N0aW5zdF9wbnMpKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCclcyBiZSBtb2RpZmllZCBieSBwb3N0aW5zdGFsbCBzY3JpcHRzIGZvciB0aGUgZm9sbG93aW5nIHJlY2lwZXM6XG4gICVzXG5UaGlzIG1heSBvciBtYXkgbm90IGJlIGFuIGlzc3VlIGRlcGVuZGluZyBvbiB3aGF0IG1vZGlmaWNhdGlvbnMgdGhlc2UgcG9zdGluc3RhbGwgc2NyaXB0cyBtYWtlLicgJSAoYXJncy50YXJnZXRwYXRoLCAnXG4gICcuam9pbihwb3N0aW5zdF9wbnMpKSkKICAgICAgICAgcmQgPSBfcGFyc2VfcmVjaXBlKHNlbGVjdHBuLCB0aW5mb2lsKQogICAgICAgICBpZiBub3QgcmQ6CiAgICAgICAgICAgICAjIEVycm9yIG1lc3NhZ2UgYWxyZWFkeSBzaG93bgpAQCAtMjg2LDEyICsyODYsMTIgQEAKICAgICAgICAgICAgIHNvdXJjZXR5cGUsIHNvdXJjZXBhdGggPSBzb3VyY2VmaWxlLnNwbGl0KCc6Ly8nLCAxKQogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdPcmlnaW5hbCBzb3VyY2UgZmlsZSBpcyAlcyAoJXMpJyAlIChzb3VyY2VwYXRoLCBzb3VyY2V0eXBlKSkKICAgICAgICAgICAgIGlmIHNvdXJjZXR5cGUgPT0gJ3BhdGNoJzoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignRmlsZSAlcyBpcyBhZGRlZCBieSB0aGUgcGF0Y2ggJXMgLSB5b3UgbWF5IG5lZWQgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgdGhpcyBwYXRjaCBpbiBvcmRlciB0byByZXBsYWNlIHRoZSBmaWxlLicgJSAoYXJncy50YXJnZXRwYXRoLCBzb3VyY2VwYXRoKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnRmlsZSAlcyBpcyBhZGRlZCBieSB0aGUgcGF0Y2ggJXMgLSB5b3UgbWF5IG5lZWQgdG8gcmVtb3ZlIG9yIHJlcGxhY2UgdGhpcyBwYXRjaCBpbiBvcmRlciB0byByZXBsYWNlIHRoZSBmaWxlLicgJSAoYXJncy50YXJnZXRwYXRoLCBzb3VyY2VwYXRoKSkKICAgICAgICAgICAgICAgICBzb3VyY2VwYXRoID0gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdVbmFibGUgdG8gZGV0ZXJtaW5lIHNvdXJjZSBmaWxlLCBwcm9jZWVkaW5nIGFueXdheScpCiAgICAgICAgIGlmIG1vZHBhdGNoZXM6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignRmlsZSAlcyBpcyBtb2RpZmllZCBieSB0aGUgZm9sbG93aW5nIHBhdGNoZXM6XG4gICVzJyAlIChhcmdzLnRhcmdldHBhdGgsICdcbiAgJy5qb2luKG1vZHBhdGNoZXMpKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdGaWxlICVzIGlzIG1vZGlmaWVkIGJ5IHRoZSBmb2xsb3dpbmcgcGF0Y2hlczpcbiAgJXMnICUgKGFyZ3MudGFyZ2V0cGF0aCwgJ1xuICAnLmpvaW4obW9kcGF0Y2hlcykpKQogCiAgICAgICAgIGlmIGluc3RlbGVtZW50cyBhbmQgc291cmNlcGF0aDoKICAgICAgICAgICAgIGluc3RhbGwgPSBOb25lCkBAIC0zNDMsNyArMzQzLDcgQEAKICAgICAgICAgICAgIGlmIHJkLmdldFZhcignUycpID09IHJkLmdldFZhcignU1RBR0lOR19LRVJORUxfRElSJyk6CiAgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsICdnaXQnKQogICAgICAgICAgICAgICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdrZXJuZWwteW9jdG8nLCByZCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdTID09IFNUQUdJTkdfS0VSTkVMX0RJUiBhbmQgbm9uLWtlcm5lbC15b2N0bywgdW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHNyY2RpciwgZGVmYXVsdGluZyB0byAke1dPUktESVJ9L2dpdCcpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdTID09IFNUQUdJTkdfS0VSTkVMX0RJUiBhbmQgbm9uLWtlcm5lbC15b2N0bywgdW5hYmxlIHRvIGRldGVybWluZSBwYXRoIHRvIHNyY2RpciwgZGVmYXVsdGluZyB0byAke1dPUktESVJ9L2dpdCcpCiAgICAgICAgICAgICBzcmNfZGVzdGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlbHBhdGgoc3JjZGlyLCB3b3JrZGlyKSwgc3JjX2Rlc3RkaXIpCiAgICAgICAgIHNyY19kZXN0ZGlyID0gb3MucGF0aC5ub3JtcGF0aChzcmNfZGVzdGRpcikKIApAQCAtMzU3LDkgKzM1Nyw5IEBACiAgICAgICAgIGlmIHNpbXBsZV9zdHIgaW4gc2ltcGxpZmllZDoKICAgICAgICAgICAgIGV4aXN0aW5nID0gc2ltcGxpZmllZFtzaW1wbGVfc3RyXQogICAgICAgICAgICAgaWYgc291cmNlX3VyaSAhPSBleGlzdGluZzoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybignezAhcn0gaXMgYWxyZWFkeSBpbiBTUkNfVVJJLCB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzOiB7MSFyfSwgbm90IGFkZGluZycuZm9ybWF0KHNvdXJjZV91cmksIGV4aXN0aW5nKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnezAhcn0gaXMgYWxyZWFkeSBpbiBTUkNfVVJJLCB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzOiB7MSFyfSwgbm90IGFkZGluZycuZm9ybWF0KHNvdXJjZV91cmksIGV4aXN0aW5nKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ3swIXJ9IGlzIGFscmVhZHkgaW4gU1JDX1VSSSwgbm90IGFkZGluZycuZm9ybWF0KHNvdXJjZV91cmkpKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCd7MCFyfSBpcyBhbHJlYWR5IGluIFNSQ19VUkksIG5vdCBhZGRpbmcnLmZvcm1hdChzb3VyY2VfdXJpKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4dHJhbGluZXMuYXBwZW5kKCdTUkNfVVJJICs9IHswfScuZm9ybWF0KHNvdXJjZV91cmkpKQogICAgICAgICBjb3B5ZmlsZXNbbmV3ZmlsZV0gPSBzcmNmaWxlCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQppbmRleCBhMzcxMDI4Li4xODEwYzcwIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgaW9lOgogICAgICAgICAgICAgICAgIGlmIGlvZS5lcnJubyA9PSAyOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybigndW5hYmxlIHRvIGZpbmQgYSBwa2dkYXRhIGZpbGUgZm9yIHBhY2thZ2UgJXMnICUgcGtnKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygndW5hYmxlIHRvIGZpbmQgYSBwa2dkYXRhIGZpbGUgZm9yIHBhY2thZ2UgJXMnICUgcGtnKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKQEAgLTQzNyw3ICs0MzcsNyBAQAogICAgIGlmIHNjcmlwdHV0aWxzLmlzX3NyY191cmwoc291cmNlKToKICAgICAgICAgIyBXYXJuIGFib3V0IGdpdGh1YiBhcmNoaXZlIFVSTHMKICAgICAgICAgaWYgcmUubWF0Y2goJ2h0dHBzPzovL2dpdGh1Yi5jb20vW14vXSsvW14vXSsvYXJjaGl2ZS8uKyhcLnRhclwuLip8XC56aXApJCcsIHNvdXJjZSk6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignZ2l0aHViIGFyY2hpdmUgZmlsZXMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZSBhbmQgbWF5IGJlIHJlLWdlbmVyYXRlZCBvdmVyIHRpbWUuIElmIHRoZSBsYXR0ZXIgb2NjdXJzLCB0aGUgY2hlY2tzdW1zIHdpbGwgbGlrZWx5IGNoYW5nZSBhbmQgdGhlIHJlY2lwZSB3aWxsIGZhaWwgYXQgZG9fZmV0Y2guIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHBvaW50IHRvIGFuIGFjdHVhbCBjb21taXQgb3IgdGFnIGluIHRoZSByZXBvc2l0b3J5IGluc3RlYWQgKHVzaW5nIHRoZSByZXBvc2l0b3J5IFVSTCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSAtUy8tLXNyY3JldiBvcHRpb24pLicpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnZ2l0aHViIGFyY2hpdmUgZmlsZXMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZSBhbmQgbWF5IGJlIHJlLWdlbmVyYXRlZCBvdmVyIHRpbWUuIElmIHRoZSBsYXR0ZXIgb2NjdXJzLCB0aGUgY2hlY2tzdW1zIHdpbGwgbGlrZWx5IGNoYW5nZSBhbmQgdGhlIHJlY2lwZSB3aWxsIGZhaWwgYXQgZG9fZmV0Y2guIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHBvaW50IHRvIGFuIGFjdHVhbCBjb21taXQgb3IgdGFnIGluIHRoZSByZXBvc2l0b3J5IGluc3RlYWQgKHVzaW5nIHRoZSByZXBvc2l0b3J5IFVSTCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSAtUy8tLXNyY3JldiBvcHRpb24pLicpCiAgICAgICAgICMgRmV0Y2ggYSBVUkwKICAgICAgICAgZmV0Y2h1cmkgPSByZWZvcm1hdF9naXRfdXJpKHVybGRlZnJhZyhzb3VyY2UpWzBdKQogICAgICAgICBpZiBhcmdzLmJpbmFyeToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfa21vZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfa21vZC5weQppbmRleCA0NTY5YjUzLi4zOTgyNTM3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2ttb2QucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9rbW9kLnB5CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgICAgICAgICB3YXJubXNnID0gJ1VuYWJsZSB0byBmaW5kIG1lYW5zIG9mIHBhc3Npbmcga2VybmVsIHBhdGggaW50byBpbnN0YWxsIG1ha2VmaWxlIC0gaWYga2VybmVsIHBhdGggaXMgaGFyZGNvZGVkIHlvdSB3aWxsIG5lZWQgdG8gcGF0Y2ggdGhlIG1ha2VmaWxlJwogICAgICAgICAgICAgaWYgd2Fybm1zZzoKICAgICAgICAgICAgICAgICB3YXJubXNnICs9ICcuIE5vdGUgdGhhdCB0aGUgdmFyaWFibGUgS0VSTkVMX1NSQyB3aWxsIGJlIHBhc3NlZCBpbiBhcyB0aGUga2VybmVsIHNvdXJjZSBwYXRoLicKLSAgICAgICAgICAgICAgICBsb2dnZXIud2Fybih3YXJubXNnKQorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKHdhcm5tc2cpCiAgICAgICAgICAgICAgICAgbGluZXNfYWZ0ZXIuYXBwZW5kKCcjICVzJyAlIHdhcm5tc2cpCiAKICAgICAgICAgICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CmluZGV4IGJiNDJhNWMuLjAzNjY3ODggMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgICAgICBydW5lbnYgPSBkaWN0KG9zLmVudmlyb24sIFBBVEg9ZC5nZXRWYXIoJ1BBVEgnKSkKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCducG0gc2hyaW5rd3JhcCcsIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCiAgICAgICAgIGV4Y2VwdCBiYi5wcm9jZXNzLkV4ZWN1dGlvbkVycm9yIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignbnBtIHNocmlua3dyYXAgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnbnBtIHNocmlua3dyYXAgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKGxvY2FsZmlsZXNkaXIsICducG0tc2hyaW5rd3JhcC5qc29uJykKQEAgLTEwNywxMiArMTA3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQogICAgICAgICByZWxvY2tiaW4gPSBvcy5wYXRoLmpvaW4oTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGgsICdub2RlX21vZHVsZXMnLCAnbG9ja2Rvd24nLCAncmVsb2NrLmpzJykKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJlbG9ja2Jpbik6Ci0gICAgICAgICAgICBsb2dnZXIud2FybignQ291bGQgbm90IGZpbmQgcmVsb2NrLmpzIHdpdGhpbiBsb2NrZG93biBkaXJlY3Rvcnk7IHNraXBwaW5nIGxvY2tkb3duJykKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDb3VsZCBub3QgZmluZCByZWxvY2suanMgd2l0aGluIGxvY2tkb3duIGRpcmVjdG9yeTsgc2tpcHBpbmcgbG9ja2Rvd24nKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdub2RlICVzJyAlIHJlbG9ja2JpbiwgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKICAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCdsb2NrZG93bi1yZWxvY2sgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygnbG9ja2Rvd24tcmVsb2NrIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihsb2NhbGZpbGVzZGlyLCAnbG9ja2Rvd24uanNvbicpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvZWRpdC5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9lZGl0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Nzg5YTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvZWRpdC5weQpAQCAtMCwwICsxLDU0IEBACisjIFJlY2lwZSBjcmVhdGlvbiB0b29sIC0gZWRpdCBwbHVnaW4KKyMKKyMgVGhpcyBzdWItY29tbWFuZCBlZGl0cyB0aGUgcmVjaXBlIGFuZCBhcHBlbmRzIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldAorIworIyBFeGFtcGxlOiByZWNpcGV0b29sIGVkaXQgYnVzeWJveAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggTWVudG9yIEdyYXBoaWNzIENvcnBvcmF0aW9uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBlcnJubworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHNjcmlwdHV0aWxzCisKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3JlY2lwZXRvb2wnKQordGluZm9pbCA9IE5vbmUKKworCitkZWYgdGluZm9pbF9pbml0KGluc3RhbmNlKToKKyAgICBnbG9iYWwgdGluZm9pbAorICAgIHRpbmZvaWwgPSBpbnN0YW5jZQorCisKK2RlZiBlZGl0KGFyZ3MpOgorICAgIGltcG9ydCBvZS5yZWNpcGV1dGlscworCisgICAgcmVjaXBlX3BhdGggPSB0aW5mb2lsLmdldF9yZWNpcGVfZmlsZShhcmdzLnRhcmdldCkKKyAgICBhcHBlbmRzID0gdGluZm9pbC5nZXRfZmlsZV9hcHBlbmRzKHJlY2lwZV9wYXRoKQorCisgICAgcmV0dXJuIHNjcmlwdHV0aWxzLnJ1bl9lZGl0b3IoW3JlY2lwZV9wYXRoXSArIGFwcGVuZHMsIGxvZ2dlcikKKworCitkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2Vycyk6CisgICAgcGFyc2VyID0gc3VicGFyc2Vycy5hZGRfcGFyc2VyKCdlZGl0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nRWRpdCB0aGUgcmVjaXBlIGFuZCBhcHBlbmRzIGZvciB0aGUgc3BlY2lmaWVkIHRhcmdldC4gVGhpcyBvYmV5cyAkVklTVUFMIGlmIHNldCwgb3RoZXJ3aXNlICRFRElUT1IsIG90aGVyd2lzZSB2aS4nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3RhcmdldCcsIGhlbHA9J1RhcmdldCByZWNpcGUvcHJvdmlkZSB0byBlZGl0JykKKyAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZWRpdCwgcGFyc2VyZWNpcGVzPVRydWUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvbmV3YXBwZW5kLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL25ld2FwcGVuZC5weQppbmRleCBkZWNjZTgzLi43NjcwN2I0IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvbmV3YXBwZW5kLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9uZXdhcHBlbmQucHkKQEAgLTU4LDExICs1OCwxMSBAQAogICAgICAgICByZXR1cm4gMQogCiAgICAgaWYgbm90IHBhdGhfb2s6Ci0gICAgICAgIGxvZ2dlci53YXJuKCdVbmFibGUgdG8gZGV0ZXJtaW5lIGNvcnJlY3Qgc3ViZGlyZWN0b3J5IHBhdGggZm9yIGJiYXBwZW5kIGZpbGUgLSBjaGVjayB0aGF0IHdoYXQgJXMgYWRkcyB0byBCQkZJTEVTIGFsc28gbWF0Y2hlcyAuYmJhcHBlbmQgZmlsZXMuIFVzaW5nICVzIGZvciBub3csIGJ1dCB1bnRpbCB5b3UgZml4IHRoaXMgdGhlIGJiYXBwZW5kIHdpbGwgbm90IGJlIGFwcGxpZWQuJywgb3MucGF0aC5qb2luKGFyZ3MuZGVzdGxheWVyLCAnY29uZicsICdsYXllci5jb25mJyksIG9zLnBhdGguZGlybmFtZShhcHBlbmRfcGF0aCkpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gZGV0ZXJtaW5lIGNvcnJlY3Qgc3ViZGlyZWN0b3J5IHBhdGggZm9yIGJiYXBwZW5kIGZpbGUgLSBjaGVjayB0aGF0IHdoYXQgJXMgYWRkcyB0byBCQkZJTEVTIGFsc28gbWF0Y2hlcyAuYmJhcHBlbmQgZmlsZXMuIFVzaW5nICVzIGZvciBub3csIGJ1dCB1bnRpbCB5b3UgZml4IHRoaXMgdGhlIGJiYXBwZW5kIHdpbGwgbm90IGJlIGFwcGxpZWQuJywgb3MucGF0aC5qb2luKGFyZ3MuZGVzdGxheWVyLCAnY29uZicsICdsYXllci5jb25mJyksIG9zLnBhdGguZGlybmFtZShhcHBlbmRfcGF0aCkpCiAKICAgICBsYXllcmRpcnMgPSBbb3MucGF0aC5hYnNwYXRoKGxheWVyZGlyKSBmb3IgbGF5ZXJkaXIgaW4gcmQuZ2V0VmFyKCdCQkxBWUVSUycpLnNwbGl0KCldCiAgICAgaWYgbm90IG9zLnBhdGguYWJzcGF0aChhcmdzLmRlc3RsYXllcikgaW4gbGF5ZXJkaXJzOgotICAgICAgICBsb2dnZXIud2FybignU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCBpdCBiZWZvcmUgdGhpcyBiYmFwcGVuZCB3aWxsIGJlIGFjdGl2ZScpCisgICAgICAgIGxvZ2dlci53YXJuaW5nKCdTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIGl0IGJlZm9yZSB0aGlzIGJiYXBwZW5kIHdpbGwgYmUgYWN0aXZlJykKIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhhcHBlbmRfcGF0aCk6CiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoYXBwZW5kX3BhdGgpKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weSBiL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKaW5kZXggODViMWM5NC4uMzFlNDhlYSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CkBAIC0xNSwxNiArMTUsMTcgQEAKICMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KIAotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGdsb2IKIGltcG9ydCBhcmdwYXJzZQotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAoraW1wb3J0IGdsb2IKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KK2ltcG9ydCBzaGxleAoraW1wb3J0IHNodXRpbAogaW1wb3J0IHN0cmluZworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogCiBkZWYgbG9nZ2VyX2NyZWF0ZShuYW1lLCBzdHJlYW09Tm9uZSk6CiAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIobmFtZSkKQEAgLTIxNCwxNSArMjE1LDE0IEBACiAKIGRlZiBydW5fZWRpdG9yKGZuLCBsb2dnZXI9Tm9uZSk6CiAgICAgaWYgaXNpbnN0YW5jZShmbiwgc3RyKToKLSAgICAgICAgcGFyYW1zID0gJyIlcyInICUgZm4KKyAgICAgICAgZmlsZXMgPSBbZm5dCiAgICAgZWxzZToKLSAgICAgICAgcGFyYW1zID0gJycKLSAgICAgICAgZm9yIGZuaXRlbSBpbiBmbjoKLSAgICAgICAgICAgIHBhcmFtcyArPSAnICIlcyInICUgZm5pdGVtCisgICAgICAgIGZpbGVzID0gZm4KIAogICAgIGVkaXRvciA9IG9zLmdldGVudignVklTVUFMJywgb3MuZ2V0ZW52KCdFRElUT1InLCAndmknKSkKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoJyVzICVzJyAlIChlZGl0b3IsIHBhcmFtcyksIHNoZWxsPVRydWUpCisgICAgICAgICNwcmludChzaGxleC5zcGxpdChlZGl0b3IpICsgZmlsZXMpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoc2hsZXguc3BsaXQoZWRpdG9yKSArIGZpbGVzKQogICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGM6CiAgICAgICAgIGxvZ2dlci5lcnJvcigiRXhlY3V0aW9uIG9mICclcycgZmFpbGVkOiAlcyIgJSAoZWRpdG9yLCBleGMpKQogICAgICAgICByZXR1cm4gMQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9ta2h5YnJpZGlzby53a3MgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21raHlicmlkaXNvLndrcwppbmRleCA5ZDM0ZTliLi40OGM1YWM0IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21raHlicmlkaXNvLndrcworKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL21raHlicmlkaXNvLndrcwpAQCAtMiw2ICsyLDYgQEAKICMgbG9uZy1kZXNjcmlwdGlvbjogQ3JlYXRlcyBhbiBFRkkgYW5kIGxlZ2FjeSBib290YWJsZSBoeWJyaWQgSVNPIGltYWdlCiAjIHdoaWNoIGNhbiBiZSB1c2VkIG9uIG9wdGljYWwgbWVkaWEgYXMgd2VsbCBhcyBVU0IgbWVkaWEuCiAKLXBhcnQgL2Jvb3QgLS1zb3VyY2UgaXNvaW1hZ2UtaXNvaHlicmlkIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9Z3J1Yi1lZmksaW1hZ2VfbmFtZT1IWUJSSURfSVNPX0lNRyIgLS1vbmRpc2sgY2QgLS1sYWJlbCBIWUJSSURJU08gLS1mc3R5cGU9ZXh0NAorcGFydCAvYm9vdCAtLXNvdXJjZSBpc29pbWFnZS1pc29oeWJyaWQgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj1ncnViLWVmaSxpbWFnZV9uYW1lPUhZQlJJRF9JU09fSU1HIiAtLW9uZGlzayBjZCAtLWxhYmVsIEhZQlJJRElTTwogCiBib290bG9hZGVyICAtLXRpbWVvdXQ9MTUgIC0tYXBwZW5kPSIiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKaW5kZXggZjBjNWZmMC4uNDY2MmM2NiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQpAQCAtMTkxLDcgKzE5MSw3IEBACiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9wdGlvbnMub3V0ZGlyKToKICAgICAgICAgb3MubWFrZWRpcnMob3B0aW9ucy5vdXRkaXIpCiAKLSAgICBwbmFtZSA9ICdkaXJlY3QnCisgICAgcG5hbWUgPSBvcHRpb25zLmltYWdlcgogICAgIHBsdWdpbl9jbGFzcyA9IFBsdWdpbk1nci5nZXRfcGx1Z2lucygnaW1hZ2VyJykuZ2V0KHBuYW1lKQogICAgIGlmIG5vdCBwbHVnaW5fY2xhc3M6CiAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCdVbmtub3duIHBsdWdpbjogJXMnICUgcG5hbWUpCkBAIC0yNjYsMTAgKzI2NiwxNSBAQAogICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoIiVzIC1zbSAlcyB1bml0IEIgcHJpbnQiICUgKHNlbGYucGFydGVkLCBzZWxmLmltYWdlcGF0aCkpCiAgICAgICAgICAgICBwYXJ0dHlwZSA9IG5hbWVkdHVwbGUoIlBhcnQiLCAicG51bSBzdGFydCBlbmQgc2l6ZSBmc3R5cGUiKQogICAgICAgICAgICAgc3BsaXR0ZWQgPSBvdXQuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICBsc2VjdG9yX3NpemUsIHBzZWN0b3Jfc2l6ZSwgc2VsZi5fcHRhYmxlX2Zvcm1hdCA9IHNwbGl0dGVkWzFdLnNwbGl0KCI6IilbMzo2XQorICAgICAgICAgICAgIyBza2lwIG92ZXIgcG9zc2libGUgZXJyb3JzIGluIGV4ZWNfY21kIG91dHB1dAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlkeCA9c3BsaXR0ZWQuaW5kZXgoIkJZVDsiKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIkVycm9yIGdldHRpbmcgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZyb20gJXMiICUgKHNlbGYucGFydGVkKSkKKyAgICAgICAgICAgIGxzZWN0b3Jfc2l6ZSwgcHNlY3Rvcl9zaXplLCBzZWxmLl9wdGFibGVfZm9ybWF0ID0gc3BsaXR0ZWRbaWR4ICsgMV0uc3BsaXQoIjoiKVszOjZdCiAgICAgICAgICAgICBzZWxmLl9sc2VjdG9yX3NpemUgPSBpbnQobHNlY3Rvcl9zaXplKQogICAgICAgICAgICAgc2VsZi5fcHNlY3Rvcl9zaXplID0gaW50KHBzZWN0b3Jfc2l6ZSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNwbGl0dGVkWzI6XToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNwbGl0dGVkW2lkeCArIDI6XToKICAgICAgICAgICAgICAgICBwbnVtLCBzdGFydCwgZW5kLCBzaXplLCBmc3R5cGUgPSBsaW5lLnNwbGl0KCc6JylbOjVdCiAgICAgICAgICAgICAgICAgcGFydGl0aW9uID0gcGFydHR5cGUoaW50KHBudW0pLCBpbnQoc3RhcnRbOi0xXSksIGludChlbmRbOi0xXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNpemVbOi0xXSksIGZzdHlwZSkKQEAgLTM0MCw5ICszNDUsMjEgQEAKICAgICAgICAgIiIiUmVtb3ZlIGZpbGVzL2RpcnMgZnJvbSB0aGUgcGFydGl0aW9uLiIiIgogICAgICAgICBwYXJ0aW1nID0gc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkKICAgICAgICAgaWYgc2VsZi5wYXJ0aXRpb25zW3BudW1dLmZzdHlwZS5zdGFydHN3aXRoKCdleHQnKToKLSAgICAgICAgICAgIGV4ZWNfY21kKCJ7fSB7fSAtd1IgJ3JtIHt9JyIuZm9ybWF0KHNlbGYuZGVidWdmcywKKyAgICAgICAgICAgIGNtZCA9ICJ7fSB7fSAtd1IgJ3JtIHt9JyIuZm9ybWF0KHNlbGYuZGVidWdmcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9wYXJ0X2ltYWdlKHBudW0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCksIGFzX3NoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKQorICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoY21kICwgYXNfc2hlbGw9VHJ1ZSkKKyAgICAgICAgICAgIGZvciBsaW5lIGluIG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJybToiKToKKyAgICAgICAgICAgICAgICAgICAgaWYgImZpbGUgaXMgYSBkaXJlY3RvcnkiIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRyeSBybWRpciB0byBzZWUgaWYgdGhpcyBpcyBhbiBlbXB0eSBkaXJlY3RvcnkuIFRoaXMgd29uJ3QgZGVsZXRlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFueSBub24gZW1wdHkgZGlyZWN0b3J5IHNvIGxldCB1c2VyIGtub3cgYWJvdXQgYW55IGVycm9yIHRoYXQgdGhpcyBtaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgIyBnZW5lcmF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGV4ZWNfY21kKCJ7fSB7fSAtd1IgJ3JtZGlyIHt9JyIuZm9ybWF0KHNlbGYuZGVidWdmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoKSwgYXNfc2hlbGw9VHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGQgbm90IGNvbXBsZXRlIG9wZXJhdGlvbjogd2ljICVzIiAlIHN0cihsaW5lKSkKICAgICAgICAgZWxzZTogIyBmYXQKICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tZGVsLCBwYXJ0aW1nLCBwYXRoKQogICAgICAgICAgICAgdHJ5OgpAQCAtNDk0LDcgKzUxMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV9jb3B5KHBhcnRmbmFtZSwgdGFyZ2V0LCBzZWVrPXBhcnRbJ3N0YXJ0J10gKiBzZWxmLl9sc2VjdG9yX3NpemUpCiAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhwYXJ0Zm5hbWUpCiAgICAgICAgICAgICAgICAgZWxpZiBwYXJ0Wyd0eXBlJ10gIT0gJ2YnOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2Fybigic2tpcHBpbmcgcGFydGl0aW9uIHt9OiB1bnN1cHBvcnRlZCBmc3R5cGUge30iLmZvcm1hdChwbnVtLCBmc3R5cGUpKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygic2tpcHBpbmcgcGFydGl0aW9uIHt9OiB1bnN1cHBvcnRlZCBmc3R5cGUge30iLmZvcm1hdChwbnVtLCBmc3R5cGUpKQogCiBkZWYgd2ljX2xzKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKICAgICAiIiJMaXN0IGNvbnRlbnRzIG9mIHBhcnRpdGlvbmVkIGltYWdlIG9yIHZmYXQgcGFydGl0aW9uLiIiIgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2ZpbGVtYXAucHkKaW5kZXggYTcyZmEwOS4uYWJiZjk1OCAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvZmlsZW1hcC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9maWxlbWFwLnB5CkBAIC0yMiw2ICsyMiw3IEBACiAjICAgKiBUb28gbWFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIChSMDkwMikKICMgcHlsaW50OiBkaXNhYmxlPVIwOTAyCiAKK2ltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYXJyYXkKQEAgLTE4OSw5ICsxOTAsOSBAQAogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgIyBUaGUgJ2xzZWVrJyBzeXN0ZW0gY2FsbCByZXR1cm5zIHRoZSBFTlhJTyBpZiB0aGVyZSBpcyBubyBkYXRhIG9yCiAgICAgICAgICMgaG9sZSBzdGFydGluZyBmcm9tIHRoZSBzcGVjaWZpZWQgb2Zmc2V0LgotICAgICAgICBpZiBlcnIuZXJybm8gPT0gb3MuZXJybm8uRU5YSU86CisgICAgICAgIGlmIGVyci5lcnJubyA9PSBlcnJuby5FTlhJTzoKICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICBlbGlmIGVyci5lcnJubyA9PSBvcy5lcnJuby5FSU5WQUw6CisgICAgICAgIGVsaWYgZXJyLmVycm5vID09IGVycm5vLkVJTlZBTDoKICAgICAgICAgICAgIHJhaXNlIEVycm9yTm90U3VwcCgidGhlIGtlcm5lbCBvciBmaWxlLXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCJTRUVLX0hPTEVcIiBhbmQgXCJTRUVLX0RBVEFcIiIpCiAgICAgICAgIGVsc2U6CkBAIC0zOTQsMTIgKzM5NSwxMiBAQAogICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAjIE5vdGUsIHRoZSBGSUVNQVAgaW9jdGwgaXMgc3VwcG9ydGVkIGJ5IHRoZSBMaW51eCBrZXJuZWwgc3RhcnRpbmcKICAgICAgICAgICAgICMgZnJvbSB2ZXJzaW9uIDIuNi4yOCAoeWVhciAyMDA4KS4KLSAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBvcy5lcnJuby5FT1BOT1RTVVBQOgorICAgICAgICAgICAgaWYgZXJyLmVycm5vID09IGVycm5vLkVPUE5PVFNVUFA6CiAgICAgICAgICAgICAgICAgZXJyc3RyID0gIkZpbGVtYXBGaWVtYXA6IHRoZSBGSUVNQVAgaW9jdGwgaXMgbm90IHN1cHBvcnRlZCAiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgdGhlIGZpbGUtc3lzdGVtIgogICAgICAgICAgICAgICAgIHNlbGYuX2xvZy5kZWJ1ZyhlcnJzdHIpCiAgICAgICAgICAgICAgICAgcmFpc2UgRXJyb3JOb3RTdXBwKGVycnN0cikKLSAgICAgICAgICAgIGlmIGVyci5lcnJubyA9PSBvcy5lcnJuby5FTk9UVFk6CisgICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRU5PVFRZOgogICAgICAgICAgICAgICAgIGVycnN0ciA9ICJGaWxlbWFwRmllbWFwOiB0aGUgRklFTUFQIGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IHRoZSBrZXJuZWwiCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9nLmRlYnVnKGVycnN0cikKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CmluZGV4IDg0MmI4NjguLjY0ZjA4MDUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQpAQCAtODY2LDExICs4NjYsMTEgQEAKICAgICAgICBQYXJ0aXRpb25zIHdpdGggYSA8bW91bnRwb2ludD4gc3BlY2lmaWVkIHdpbGwgYmUgYXV0b21hdGljYWxseSBtb3VudGVkLgogICAgICAgIFRoaXMgaXMgYWNoaWV2ZWQgYnkgd2ljIGFkZGluZyBlbnRyaWVzIHRvIHRoZSBmc3RhYiBkdXJpbmcgaW1hZ2UKICAgICAgICBnZW5lcmF0aW9uLiBJbiBvcmRlciBmb3IgYSB2YWxpZCBmc3RhYiB0byBiZSBnZW5lcmF0ZWQgb25lIG9mIHRoZQotICAgICAgIC0tb25kcml2ZSwgLS1vbmRpc2sgb3IgLS11c2UtdXVpZCBwYXJ0aXRpb24gb3B0aW9ucyBtdXN0IGJlIHVzZWQgZm9yCi0gICAgICAgZWFjaCBwYXJ0aXRpb24gdGhhdCBzcGVjaWZpZXMgYSBtb3VudHBvaW50LiAgTm90ZSB0aGF0IHdpdGggLS11c2UtdXVpZAotICAgICAgIGFuZCBub24tcm9vdCA8bW91bnRwb2ludD4sIGluY2x1ZGluZyBzd2FwLCB0aGUgbW91bnQgcHJvZ3JhbSBtdXN0Ci0gICAgICAgdW5kZXJzdGFuZCB0aGUgUEFSVFVVSUQgc3ludGF4LiAgVGhpcyBjdXJyZW50bHkgZXhjbHVkZXMgdGhlIGJ1c3lib3gKLSAgICAgICB2ZXJzaW9ucyBvZiB0aGVzZSBhcHBsaWNhdGlvbnMuCisgICAgICAgLS1vbmRyaXZlLCAtLW9uZGlzaywgLS11c2UtdXVpZCBvciAtLXVzZS1sYWJlbCBwYXJ0aXRpb24gb3B0aW9ucyBtdXN0CisgICAgICAgYmUgdXNlZCBmb3IgZWFjaCBwYXJ0aXRpb24gdGhhdCBzcGVjaWZpZXMgYSBtb3VudHBvaW50LiAgTm90ZSB0aGF0IHdpdGgKKyAgICAgICAtLXVzZS17dXVpZCxsYWJlbH0gYW5kIG5vbi1yb290IDxtb3VudHBvaW50PiwgaW5jbHVkaW5nIHN3YXAsIHRoZSBtb3VudAorICAgICAgIHByb2dyYW0gbXVzdCB1bmRlcnN0YW5kIHRoZSBQQVJUVVVJRCBvciBMQUJFTCBzeW50YXguICBUaGlzIGN1cnJlbnRseQorICAgICAgIGV4Y2x1ZGVzIHRoZSBidXN5Ym94IHZlcnNpb25zIG9mIHRoZXNlIGFwcGxpY2F0aW9ucy4KIAogCiAgICAgICAgVGhlIGZvbGxvd2luZyBhcmUgc3VwcG9ydGVkICdwYXJ0JyBvcHRpb25zOgpAQCAtOTQ1LDYgKzk0NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgaXMgYWxyZWFkeSBpbiB1c2UgYnkgYW5vdGhlciBmaWxlc3lzdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgYSBuZXcgbGFiZWwgaXMgY3JlYXRlZCBmb3IgdGhlIHBhcnRpdGlvbi4KIAorICAgICAgICAgLS11c2UtbGFiZWw6IFRoaXMgb3B0aW9uIGlzIHNwZWNpZmljIHRvIHdpYy4gSXQgbWFrZXMgd2ljIHRvIHVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICBsYWJlbCBpbiAvZXRjL2ZzdGFiIHRvIHNwZWNpZnkgYSBwYXJ0aXRpb24uIElmIHRoZQorICAgICAgICAgICAgICAgICAgICAgIC0tdXNlLWxhYmVsIGFuZCAtLXVzZS11dWlkIGFyZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgd2UgcHJlZmVyIHRoZSB1dWlkIGJlY2F1c2UgaXQgaXMgbGVzcyBsaWtlbHkgdG8gY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICBuYW1lIGNvbmZsaWN0aW9uLiBXZSBkb24ndCBzdXBwb3J0IHVzaW5nIHRoaXMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIHJvb3QgcGFydGl0aW9uIHNpbmNlIGl0IHJlcXVpcmVzIGFuIGluaXRyYW1mcyB0bworICAgICAgICAgICAgICAgICAgICAgIHBhcnNlIHRoaXMgdmFsdWUgYW5kIHdlIGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCB0aGF0LgorCiAgICAgICAgICAtLWFjdGl2ZTogTWFya3MgdGhlIHBhcnRpdGlvbiBhcyBhY3RpdmUuCiAKICAgICAgICAgIC0tYWxpZ24gKGluIEtCeXRlcyk6IFRoaXMgb3B0aW9uIGlzIHNwZWNpZmljIHRvIHdpYyBhbmQgc2F5cwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQppbmRleCBlNTkwYjJmLi43ZTVhOWM1IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9rc3BhcnNlci5weQpAQCAtMTQxLDYgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcXVhc2hmcycsICd2ZmF0JywgJ21zZG9zJywgJ3N3YXAnKSkKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tbWtmcy1leHRyYW9wdHMnLCBkZWZhdWx0PScnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1sYWJlbCcpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLXVzZS1sYWJlbCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLW5vLXRhYmxlJywgYWN0aW9uPSdzdG9yZV90cnVlJykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoJy0tb25kaXNrJywgJy0tb25kcml2ZScsIGRlc3Q9J2Rpc2snLCBkZWZhdWx0PSdzZGEnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgiLS1vdmVyaGVhZC1mYWN0b3IiLCB0eXBlPW92ZXJoZWFkdHlwZSkKQEAgLTE5Niw5ICsxOTcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtpY2tTdGFydEVycm9yKCclczolZDogJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZwYXRoLCBsaW5lbm8sIGVycikpCiAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgncGFydCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBTcXVhc2hGUyBkb2VzIG5vdCBzdXBwb3J0IFVVSUQKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnNlZC5mc3R5cGUgPT0gJ3NxdWFzaGZzJyBhbmQgcGFyc2VkLnVzZV91dWlkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9ICIlczolZDogU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBVVUlEIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAjIFNxdWFzaEZTIGRvZXMgbm90IHN1cHBvcnQgZmlsZXN5c3RlbSBVVUlECisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZWQuZnN0eXBlID09ICdzcXVhc2hmcyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2VkLmZzdXVpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gIiVzOiVkOiBTcXVhc2hGUyBkb2VzIG5vdCBzdXBwb3J0IFVVSUQiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGNvbmZwYXRoLCBsaW5lbm8pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtpY2tTdGFydEVycm9yKGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJzZWQubGFiZWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9ICIlczolZDogU3F1YXNoRlMgZG9lcyBub3Qgc3VwcG9ydCBMQUJFTCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29uZnBhdGgsIGxpbmVubykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2lja1N0YXJ0RXJyb3IoZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGFyc2VkLnVzZV9sYWJlbCBhbmQgbm90IHBhcnNlZC5sYWJlbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSAiJXM6JWQ6IE11c3Qgc2V0IHRoZSBsYWJlbCB3aXRoIC0tbGFiZWwiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb25mcGF0aCwgbGluZW5vKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEtpY2tTdGFydEVycm9yKGVycikKICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNpbmcgQXJndW1lbnRQYXJzZXIgb25lIGNhbm5vdCBlYXNpbHkgdGVsbCBpZiBvcHRpb24KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQppbmRleCAzZmU1YzRlLi4zZGE3ZTIzIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgICAgIHNlbGYuZnNvcHRzID0gYXJncy5mc29wdHMKICAgICAgICAgc2VsZi5mc3R5cGUgPSBhcmdzLmZzdHlwZQogICAgICAgICBzZWxmLmxhYmVsID0gYXJncy5sYWJlbAorICAgICAgICBzZWxmLnVzZV9sYWJlbCA9IGFyZ3MudXNlX2xhYmVsCiAgICAgICAgIHNlbGYubWtmc19leHRyYW9wdHMgPSBhcmdzLm1rZnNfZXh0cmFvcHRzCiAgICAgICAgIHNlbGYubW91bnRwb2ludCA9IGFyZ3MubW91bnRwb2ludAogICAgICAgICBzZWxmLm5vX3RhYmxlID0gYXJncy5ub190YWJsZQpAQCAtNjYsNyArNjcsNiBAQAogCiAgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgIHNlbGYuc291cmNlX2ZpbGUgPSAiIgotICAgICAgICBzZWxmLnNvdXJjZXBhcmFtc19kaWN0ID0ge30KIAogICAgIGRlZiBnZXRfZXh0cmFfYmxvY2tfY291bnQoc2VsZiwgY3VycmVudF9ibG9ja3MpOgogICAgICAgICAiIiIKQEAgLTIxMSw3ICsyMTEsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcF9wcmVmaXggPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BSRUZJWCIsICIlcy91c3IiICUgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIHBfbG9jYWxzdGF0ZWRpciA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTE9DQUxTVEFURURJUiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy8uLi9wc2V1ZG8iICUgIGdldF9iaXRiYWtlX3ZhcigiSU1BR0VfUk9PVEZTIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy8uLi9wc2V1ZG8iICUgIHJvb3Rmc19kaXIpCiAgICAgICAgIHBfcGFzc3dkID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19QQVNTV0QiLCByb290ZnNfZGlyKQogICAgICAgICBwX25vc3ltbGlua2V4cCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fTk9TWU1MSU5LRVhQIiwgIjEiKQogICAgICAgICBwc2V1ZG8gPSAiZXhwb3J0IFBTRVVET19QUkVGSVg9JXM7IiAlIHBfcHJlZml4CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKaW5kZXggMWZhNmI5MS4uYmIxNGEzMyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQpAQCAtMTIyLDYgKzEyMiwxMCBAQAogICAgICAgICBpZiBzZWxmLl91cGRhdGVfZnN0YWIoZnN0YWJfbGluZXMsIHNlbGYucGFydHMpOgogICAgICAgICAgICAgIyBjb3B5IHJvb3RmcyBkaXIgdG8gd29ya2RpciB0byB1cGRhdGUgZnN0YWIKICAgICAgICAgICAgICMgYXMgcm9vdGZzIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHRhc2tzIGFuZCBjYW4ndCBiZSBtb2RpZmllZAorICAgICAgICAgICAgbmV3X3BzZXVkbyA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5qb2luKHNlbGYud29ya2RpciwgInBzZXVkbyIpKQorICAgICAgICAgICAgZnJvbV9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5qb2luKGltYWdlX3Jvb3RmcywgIi4uIiksICJwc2V1ZG8iKQorICAgICAgICAgICAgZnJvbV9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKGZyb21fZGlyKQorICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShmcm9tX2RpciwgbmV3X3BzZXVkbykKICAgICAgICAgICAgIG5ld19yb290ZnMgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihzZWxmLndvcmtkaXIsICJyb290ZnNfY29weSIpKQogICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShpbWFnZV9yb290ZnMsIG5ld19yb290ZnMpCiAgICAgICAgICAgICBmc3RhYl9wYXRoID0gb3MucGF0aC5qb2luKG5ld19yb290ZnMsICdldGMvZnN0YWInKQpAQCAtMTUxLDYgKzE1NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VfbmFtZSA9ICJVVUlEPSVzIiAlIHBhcnQuZnN1dWlkCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZGV2aWNlX25hbWUgPSAiUEFSVFVVSUQ9JXMiICUgcGFydC51dWlkCisgICAgICAgICAgICBlbGlmIHBhcnQudXNlX2xhYmVsOgorICAgICAgICAgICAgICAgIGRldmljZV9uYW1lID0gIkxBQkVMPSVzIiAlIHBhcnQubGFiZWwKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBtbWMgZGV2aWNlIHBhcnRpdGlvbnMgYXJlIG5hbWVkIG1tY2JsazBwMSwgbW1jYmxrMHAyLi4KICAgICAgICAgICAgICAgICBwcmVmaXggPSAncCcgaWYgIHBhcnQuZGlzay5zdGFydHN3aXRoKCdtbWNibGsnKSBlbHNlICcnCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9ib290aW1nLXBhcnRpdGlvbi5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CmluZGV4IGIyMzlmYzAuLmRkYzg4MGIgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGFydGl0aW9uLnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCitmcm9tIHdpYy5lbmdpbmUgaW1wb3J0IGdldF9jdXN0b21fY29uZmlnCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KIGZyb20gd2ljLm1pc2MgaW1wb3J0IGV4ZWNfY21kLCBnZXRfYml0YmFrZV92YXIKIApAQCAtNDQsMTUgKzQ1LDExIEBACiAgICAgbmFtZSA9ICdib290aW1nLXBhcnRpdGlvbicKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBkb19wcmVwYXJlX3BhcnRpdGlvbihjbHMsIHBhcnQsIHNvdXJjZV9wYXJhbXMsIGNyLCBjcl93b3JrZGlyLAorICAgIGRlZiBkb19jb25maWd1cmVfcGFydGl0aW9uKGNscywgcGFydCwgc291cmNlX3BhcmFtcywgY3IsIGNyX3dvcmtkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdCk6CiAgICAgICAgICIiIgotICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEgcGFydGl0aW9uIGkuZS4gaXQKLSAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KLSAgICAgICAgSW4gdGhpcyBjYXNlLCBkb2VzIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgIC0gc2V0cyB1cCBhIHZmYXQgcGFydGl0aW9uCi0gICAgICAgIC0gY29waWVzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gSU1BR0VfQk9PVF9GSUxFUyB2YXJpYWJsZQorICAgICAgICBDYWxsZWQgYmVmb3JlIGRvX3ByZXBhcmVfcGFydGl0aW9uKCksIGNyZWF0ZSB1LWJvb3Qgc3BlY2lmaWMgYm9vdCBjb25maWcKICAgICAgICAgIiIiCiAgICAgICAgIGhkZGRpciA9ICIlcy9ib290LiVkIiAlIChjcl93b3JrZGlyLCBwYXJ0LmxpbmVubykKICAgICAgICAgaW5zdGFsbF9jbWQgPSAiaW5zdGFsbCAtZCAlcyIgJSBoZGRkaXIKQEAgLTYzLDggKzYwLDYgQEAKICAgICAgICAgICAgIGlmIG5vdCBrZXJuZWxfZGlyOgogICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIERFUExPWV9ESVJfSU1BR0UsIGV4aXRpbmciKQogCi0gICAgICAgIGxvZ2dlci5kZWJ1ZygnS2VybmVsIGRpcjogJXMnLCBib290aW1nX2RpcikKLQogICAgICAgICBib290X2ZpbGVzID0gTm9uZQogICAgICAgICBmb3IgKGZtdCwgaWQpIGluICgoIl91dWlkLSVzIiwgcGFydC51dWlkKSwgKCJfbGFiZWwtJXMiLCBwYXJ0LmxhYmVsKSwgKE5vbmUsIE5vbmUpKToKICAgICAgICAgICAgIGlmIGZtdDoKQEAgLTk0LDkgKzg5LDkgQEAKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnRGVzdGluYXRpb24gZW50cnk6ICVyJywgZHN0X2VudHJ5KQogICAgICAgICAgICAgZGVwbG95X2ZpbGVzLmFwcGVuZChkc3RfZW50cnkpCiAKKyAgICAgICAgY2xzLmluc3RhbGxfdGFzayA9IFtdOwogICAgICAgICBmb3IgZGVwbG95X2VudHJ5IGluIGRlcGxveV9maWxlczoKICAgICAgICAgICAgIHNyYywgZHN0ID0gZGVwbG95X2VudHJ5Ci0gICAgICAgICAgICBpbnN0YWxsX3Rhc2sgPSBbXQogICAgICAgICAgICAgaWYgJyonIGluIHNyYzoKICAgICAgICAgICAgICAgICAjIGJ5IGRlZmF1bHQgaW5zdGFsbCBmaWxlcyB1bmRlciB0aGVpciBiYXNlbmFtZQogICAgICAgICAgICAgICAgIGVudHJ5X25hbWVfZm4gPSBvcy5wYXRoLmJhc2VuYW1lCkBAIC0xMTEsMjEgKzEwNiwxMDEgQEAKIAogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygnR2xvYmJlZCBzb3VyY2VzOiAlcycsICcsICcuam9pbihzcmNzKSkKICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gc3JjczoKKyAgICAgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5yZWxwYXRoKGVudHJ5LCBrZXJuZWxfZGlyKQogICAgICAgICAgICAgICAgICAgICBlbnRyeV9kc3RfbmFtZSA9IGVudHJ5X25hbWVfZm4oZW50cnkpCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxfdGFzay5hcHBlbmQoKGVudHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oaGRkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlfZHN0X25hbWUpKSkKKyAgICAgICAgICAgICAgICAgICAgY2xzLmluc3RhbGxfdGFzay5hcHBlbmQoKHNyYywgZW50cnlfZHN0X25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbnN0YWxsX3Rhc2sgPSBbKG9zLnBhdGguam9pbihrZXJuZWxfZGlyLCBzcmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGhkZGRpciwgZHN0KSldCisgICAgICAgICAgICAgICAgY2xzLmluc3RhbGxfdGFzay5hcHBlbmQoKHNyYywgZHN0KSkKIAotICAgICAgICAgICAgZm9yIHRhc2sgaW4gaW5zdGFsbF90YXNrOgotICAgICAgICAgICAgICAgIHNyY19wYXRoLCBkc3RfcGF0aCA9IHRhc2sKLSAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoJ0luc3RhbGwgJXMgYXMgJXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHNyY19wYXRoKSwgZHN0X3BhdGgpCi0gICAgICAgICAgICAgICAgaW5zdGFsbF9jbWQgPSAiaW5zdGFsbCAtbSAwNjQ0IC1EICVzICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzcmNfcGF0aCwgZHN0X3BhdGgpCi0gICAgICAgICAgICAgICAgZXhlY19jbWQoaW5zdGFsbF9jbWQpCisgICAgICAgIGlmIHNvdXJjZV9wYXJhbXMuZ2V0KCdsb2FkZXInKSAhPSAidS1ib290IjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGNvbmZpZ2ZpbGUgPSBjci5rcy5ib290bG9hZGVyLmNvbmZpZ2ZpbGUKKyAgICAgICAgY3VzdG9tX2NmZyA9IE5vbmUKKyAgICAgICAgaWYgY29uZmlnZmlsZToKKyAgICAgICAgICAgIGN1c3RvbV9jZmcgPSBnZXRfY3VzdG9tX2NvbmZpZyhjb25maWdmaWxlKQorICAgICAgICAgICAgaWYgY3VzdG9tX2NmZzoKKyAgICAgICAgICAgICAgICAjIFVzZSBhIGN1c3RvbSBjb25maWd1cmF0aW9uIGZvciBleHRsaW51eC5jb25mCisgICAgICAgICAgICAgICAgZXh0bGludXhfY29uZiA9IGN1c3RvbV9jZmcKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoIlVzaW5nIGN1c3RvbSBjb25maWd1cmF0aW9uIGZpbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZm9yIGV4dGxpbnV4LmNmZyIsIGNvbmZpZ2ZpbGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJjb25maWdmaWxlIGlzIHNwZWNpZmllZCBidXQgZmFpbGVkIHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0IGl0IGZyb20gJXMuIiAlIGNvbmZpZ2ZpbGUpCisKKyAgICAgICAgaWYgbm90IGN1c3RvbV9jZmc6CisgICAgICAgICAgICAjIFRoZSBrZXJuZWwgdHlwZXMgc3VwcG9ydGVkIGJ5IHRoZSBzeXNib290IG9mIHUtYm9vdAorICAgICAgICAgICAga2VybmVsX3R5cGVzID0gWyJ6SW1hZ2UiLCAiSW1hZ2UiLCAiZml0SW1hZ2UiLCAidUltYWdlIiwgInZtbGludXgiXQorICAgICAgICAgICAgaGFzX2R0YiA9IEZhbHNlCisgICAgICAgICAgICBmZHRfZGlyID0gJy8nCisgICAgICAgICAgICBrZXJuZWxfbmFtZSA9IE5vbmUKKworICAgICAgICAgICAgIyBGaW5kIHRoZSBrZXJuZWwgaW1hZ2UgbmFtZSwgZnJvbSB0aGUgaGlnaGVzdCBwcmVjZWRlbmNlIHRvIGxvd2VzdAorICAgICAgICAgICAgZm9yIGltYWdlIGluIGtlcm5lbF90eXBlczoKKyAgICAgICAgICAgICAgICBmb3IgdGFzayBpbiBjbHMuaW5zdGFsbF90YXNrOgorICAgICAgICAgICAgICAgICAgICBzcmMsIGRzdCA9IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goaW1hZ2UsIHNyYyk6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxfbmFtZSA9IG9zLnBhdGguam9pbignLycsIGRzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYga2VybmVsX25hbWU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGZvciB0YXNrIGluIGNscy5pbnN0YWxsX3Rhc2s6CisgICAgICAgICAgICAgICAgc3JjLCBkc3QgPSB0YXNrCisgICAgICAgICAgICAgICAgIyBXZSBzdXBwb3NlIHRoYXQgYWxsIHRoZSBkdGIgYXJlIGluIHRoZSBzYW1lIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyJ1wuZHRiJywgc3JjKSBhbmQgZmR0X2RpciA9PSAnLyc6CisgICAgICAgICAgICAgICAgICAgIGhhc19kdGIgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGZkdF9kaXIgPSBvcy5wYXRoLmpvaW4oZmR0X2Rpciwgb3MucGF0aC5kaXJuYW1lKGRzdCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIGlmIG5vdCBrZXJuZWxfbmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcignTm8ga2VybmVsIGZpbGUgZm91bmRlZCcpCisKKyAgICAgICAgICAgICMgQ29tcG9zZSB0aGUgZXh0bGludXguY29uZgorICAgICAgICAgICAgZXh0bGludXhfY29uZiA9ICJkZWZhdWx0IFlvY3RvXG4iCisgICAgICAgICAgICBleHRsaW51eF9jb25mICs9ICJsYWJlbCBZb2N0b1xuIgorICAgICAgICAgICAgZXh0bGludXhfY29uZiArPSAiICAga2VybmVsICVzXG4iICUga2VybmVsX25hbWUKKyAgICAgICAgICAgIGlmIGhhc19kdGI6CisgICAgICAgICAgICAgICAgZXh0bGludXhfY29uZiArPSAiICAgZmR0ZGlyICVzXG4iICUgZmR0X2RpcgorICAgICAgICAgICAgYm9vdGxvYWRlciA9IGNyLmtzLmJvb3Rsb2FkZXIKKyAgICAgICAgICAgIGV4dGxpbnV4X2NvbmYgKz0gImFwcGVuZCByb290PSVzIHJvb3R3YWl0ICVzXG4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY3Iucm9vdGRldiwgYm9vdGxvYWRlci5hcHBlbmQgaWYgYm9vdGxvYWRlci5hcHBlbmQgZWxzZSAnJykKKworICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1kICVzL2V4dGxpbnV4LyIgJSBoZGRkaXIKKyAgICAgICAgZXhlY19jbWQoaW5zdGFsbF9jbWQpCisgICAgICAgIGNmZyA9IG9wZW4oIiVzL2V4dGxpbnV4L2V4dGxpbnV4LmNvbmYiICUgaGRkZGlyLCAidyIpCisgICAgICAgIGNmZy53cml0ZShleHRsaW51eF9jb25mKQorICAgICAgICBjZmcuY2xvc2UoKQorCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZG9fcHJlcGFyZV9wYXJ0aXRpb24oY2xzLCBwYXJ0LCBzb3VyY2VfcGFyYW1zLCBjciwgY3Jfd29ya2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2VfYnVpbGRkaXIsIGJvb3RpbWdfZGlyLCBrZXJuZWxfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCk6CisgICAgICAgICIiIgorICAgICAgICBDYWxsZWQgdG8gZG8gdGhlIGFjdHVhbCBjb250ZW50IHBvcHVsYXRpb24gZm9yIGEgcGFydGl0aW9uIGkuZS4gaXQKKyAgICAgICAgJ3ByZXBhcmVzJyB0aGUgcGFydGl0aW9uIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBpbWFnZS4KKyAgICAgICAgSW4gdGhpcyBjYXNlLCBkb2VzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC0gc2V0cyB1cCBhIHZmYXQgcGFydGl0aW9uCisgICAgICAgIC0gY29waWVzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gSU1BR0VfQk9PVF9GSUxFUyB2YXJpYWJsZQorICAgICAgICAiIiIKKyAgICAgICAgaGRkZGlyID0gIiVzL2Jvb3QuJWQiICUgKGNyX3dvcmtkaXIsIHBhcnQubGluZW5vKQorCisgICAgICAgIGlmIG5vdCBrZXJuZWxfZGlyOgorICAgICAgICAgICAga2VybmVsX2RpciA9IGdldF9iaXRiYWtlX3ZhcigiREVQTE9ZX0RJUl9JTUFHRSIpCisgICAgICAgICAgICBpZiBub3Qga2VybmVsX2RpcjoKKyAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBERVBMT1lfRElSX0lNQUdFLCBleGl0aW5nIikKKworICAgICAgICBsb2dnZXIuZGVidWcoJ0tlcm5lbCBkaXI6ICVzJywgYm9vdGltZ19kaXIpCisKKworICAgICAgICBmb3IgdGFzayBpbiBjbHMuaW5zdGFsbF90YXNrOgorICAgICAgICAgICAgc3JjX3BhdGgsIGRzdF9wYXRoID0gdGFzaworICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdJbnN0YWxsICVzIGFzICVzJywgc3JjX3BhdGgsIGRzdF9wYXRoKQorICAgICAgICAgICAgaW5zdGFsbF9jbWQgPSAiaW5zdGFsbCAtbSAwNjQ0IC1EICVzICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG9zLnBhdGguam9pbihrZXJuZWxfZGlyLCBzcmNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihoZGRkaXIsIGRzdF9wYXRoKSkKKyAgICAgICAgICAgIGV4ZWNfY21kKGluc3RhbGxfY21kKQogCiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnUHJlcGFyZSBib290IHBhcnRpdGlvbiB1c2luZyByb290ZnMgaW4gJXMnLCBoZGRkaXIpCiAgICAgICAgIHBhcnQucHJlcGFyZV9yb290ZnMoY3Jfd29ya2Rpciwgb2VfYnVpbGRkaXIsIGhkZGRpciwKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2Jvb3RpbWctcGNiaW9zLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKaW5kZXggZDU5OTExMi4uOTM0N2FhNyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvYm9vdGltZy1wY2Jpb3MucHkKQEAgLTI2LDYgKzI2LDcgQEAKIAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcworaW1wb3J0IHJlCiAKIGZyb20gd2ljIGltcG9ydCBXaWNFcnJvcgogZnJvbSB3aWMuZW5naW5lIGltcG9ydCBnZXRfY3VzdG9tX2NvbmZpZwpAQCAtNDcsMTAgKzQ4LDE3IEBACiAgICAgICAgICIiIgogICAgICAgICBDaGVjayBpZiBkaXJuYW1lIGV4aXN0cyBpbiBkZWZhdWx0IGJvb3RpbWdfZGlyIG9yIGluIFNUQUdJTkdfRElSLgogICAgICAgICAiIiIKLSAgICAgICAgZm9yIHJlc3VsdCBpbiAoYm9vdGltZ19kaXIsIGdldF9iaXRiYWtlX3ZhcigiU1RBR0lOR19EQVRBRElSIikpOgorICAgICAgICBzdGFnaW5nX2RhdGFkaXIgPSBnZXRfYml0YmFrZV92YXIoIlNUQUdJTkdfREFUQURJUiIpCisgICAgICAgIGZvciByZXN1bHQgaW4gKGJvb3RpbWdfZGlyLCBzdGFnaW5nX2RhdGFkaXIpOgogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIiVzLyVzIiAlIChyZXN1bHQsIGRpcm5hbWUpKToKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICAgICAgIyBTVEFHSU5HX0RBVEFESVIgaXMgZXhwYW5kZWQgd2l0aCBNTFBSRUZJWCBpZiBtdWx0aWxpYiBpcyBlbmFibGVkCisgICAgICAgICMgYnV0IGRlcGVuZGVuY3kgc3lzbGludXggaXMgc3RpbGwgcG9wdWxhdGVkIHRvIG9yaWdpbmFsIFNUQUdJTkdfREFUQURJUgorICAgICAgICBub25hcmNoX2RhdGFkaXIgPSByZS5zdWIoJy9bXi9dKnJlY2lwZS1zeXNyb290JywgJy9yZWNpcGUtc3lzcm9vdCcsIHN0YWdpbmdfZGF0YWRpcikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5vbmFyY2hfZGF0YWRpciwgZGlybmFtZSkpOgorICAgICAgICAgICAgcmV0dXJuIG5vbmFyY2hfZGF0YWRpcgorCiAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIGNvcnJlY3QgYm9vdGltZ19kaXIsIGV4aXRpbmciKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9pc29pbWFnZS1pc29oeWJyaWQucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9pc29pbWFnZS1pc29oeWJyaWQucHkKaW5kZXggYjExOWM5Yy4uMTcwMDc3YyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvaXNvaW1hZ2UtaXNvaHlicmlkLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL2lzb2ltYWdlLWlzb2h5YnJpZC5weQpAQCAtNDcsNyArNDcsNyBAQAogCiAgICAgRXhhbXBsZSBraWNrc3RhcnQgZmlsZToKICAgICBwYXJ0IC9ib290IC0tc291cmNlIGlzb2ltYWdlLWlzb2h5YnJpZCAtLXNvdXJjZXBhcmFtcz0ibG9hZGVyPWdydWItZWZpLCBcXAotICAgIGltYWdlX25hbWU9IElzb0ltYWdlIiAtLW9uZGlzayBjZCAtLWxhYmVsIExJVkVDRCAtLWZzdHlwZT1leHQyCisgICAgaW1hZ2VfbmFtZT0gSXNvSW1hZ2UiIC0tb25kaXNrIGNkIC0tbGFiZWwgTElWRUNECiAgICAgYm9vdGxvYWRlciAgLS10aW1lb3V0PTEwICAtLWFwcGVuZD0iICIKIAogICAgIEluIC0tc291cmNlcGFyYW1zICJsb2FkZXIiIHNwZWNpZmllcyB0aGUgYm9vdGxvYWRlciB1c2VkIGZvciBib290aW5nIGluIEVGSQpAQCAtMTkxLDEwICsxOTEsOSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiQ291bGRuJ3QgZmluZCBvciBidWlsZCBpbml0cmQsIGV4aXRpbmcuIikKIAotICAgICAgICAgICAgZXhlY19jbWQoImNkICVzICYmIGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyAtUiArMDorMCA+Li9pbml0cmQuY3BpbyAiIFwKLSAgICAgICAgICAgICAgICAgICAgJSBpbml0cmRfZGlyLCBhc19zaGVsbD1UcnVlKQotICAgICAgICAgICAgZXhlY19jbWQoImd6aXAgLWYgLTkgLWMgJXMvaW5pdHJkLmNwaW8gPiAlcyIgXAotICAgICAgICAgICAgICAgICAgICAlIChjcl93b3JrZGlyLCBpbml0cmQpLCBhc19zaGVsbD1UcnVlKQorICAgICAgICAgICAgZXhlY19jbWQoImNkICVzICYmIGZpbmQgLiB8IGNwaW8gLW8gLUggbmV3YyAtUiByb290OnJvb3QgPiVzL2luaXRyZC5jcGlvICIgXAorICAgICAgICAgICAgICAgICAgICAgJSAoaW5pdHJkX2RpciwgY3Jfd29ya2RpciksIGFzX3NoZWxsPVRydWUpCisgICAgICAgICAgICBleGVjX2NtZCgiZ3ppcCAtZiAtOSAlcy9pbml0cmQuY3BpbyIgJSBjcl93b3JrZGlyLCBhc19zaGVsbD1UcnVlKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShpbml0cmRfZGlyKQogCiAgICAgICAgIHJldHVybiBpbml0cmQKQEAgLTI1MywzMyArMjUyLDggQEAKICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJDb3VsZG4ndCBmaW5kIElNQUdFX1JPT1RGUywgZXhpdGluZy4iKQogCiAgICAgICAgIHBhcnQucm9vdGZzX2RpciA9IHJvb3Rmc19kaXIKLQotICAgICAgICAjIFByZXBhcmUgcm9vdGZzLmltZwogICAgICAgICBkZXBsb3lfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJERVBMT1lfRElSX0lNQUdFIikKICAgICAgICAgaW1nX2lzb19kaXIgPSBnZXRfYml0YmFrZV92YXIoIklTT0RJUiIpCi0gICAgICAgIHJvb3Rmc19pbWcgPSAiJXMvcm9vdGZzLmltZyIgJSBpbWdfaXNvX2RpcgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocm9vdGZzX2ltZyk6Ci0gICAgICAgICAgICAjIGNoZWNrIGlmIHJvb3Rmcy5pbWcgaXMgaW4gZGVwbG95ZGlyCi0gICAgICAgICAgICBkZXBsb3lfZGlyID0gZ2V0X2JpdGJha2VfdmFyKCJERVBMT1lfRElSX0lNQUdFIikKLSAgICAgICAgICAgIGltYWdlX25hbWUgPSBnZXRfYml0YmFrZV92YXIoIklNQUdFX0xJTktfTkFNRSIpCi0gICAgICAgICAgICByb290ZnNfaW1nID0gIiVzLyVzLiVzIiBcCi0gICAgICAgICAgICAgICAgJSAoZGVwbG95X2RpciwgaW1hZ2VfbmFtZSwgcGFydC5mc3R5cGUpCi0KLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHJvb3Rmc19pbWcpOgotICAgICAgICAgICAgIyBjcmVhdGUgaW1hZ2UgZmlsZSB3aXRoIHR5cGUgc3BlY2lmaWVkIGJ5IC0tZnN0eXBlCi0gICAgICAgICAgICAjIHdoaWNoIGNvbnRhaW5zIHJvb3RmcwotICAgICAgICAgICAgZHVfY21kID0gImR1IC1ia3MgJXMiICUgcm9vdGZzX2RpcgotICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoZHVfY21kKQotICAgICAgICAgICAgcGFydC5zaXplID0gaW50KG91dC5zcGxpdCgpWzBdKQotICAgICAgICAgICAgcGFydC5leHRyYV9zcGFjZSA9IDAKLSAgICAgICAgICAgIHBhcnQub3ZlcmhlYWRfZmFjdG9yID0gMS4yCi0gICAgICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLCByb290ZnNfZGlyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290KQotICAgICAgICAgICAgcm9vdGZzX2ltZyA9IHBhcnQuc291cmNlX2ZpbGUKLQotICAgICAgICBpbnN0YWxsX2NtZCA9ICJpbnN0YWxsIC1tIDA2NDQgJXMgJXMvcm9vdGZzLmltZyIgXAotICAgICAgICAgICAgJSAocm9vdGZzX2ltZywgaXNvZGlyKQotICAgICAgICBleGVjX2NtZChpbnN0YWxsX2NtZCkKIAogICAgICAgICAjIFJlbW92ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgY3JlYXRlZCBieSBwYXJ0LnByZXBhcmVfcm9vdGZzKCkKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGFydC5zb3VyY2VfZmlsZSk6CkBAIC0zNDIsNyArMzE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zcmMgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgZ3J1Yl9zcmNfaW1hZ2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhncnViX3NyYyk6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBXaWNFcnJvcigiR3J1YiBsb2FkZXIgJXMgaXMgbm90IGZvdW5kIGluICVzLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGJ1aWxkIGdydWItZWZpIGZpcnN0IiAlIChncnViX2ltYWdlLCBkZXBsb3lfZGlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2UgYnVpbGQgZ3J1Yi1lZmkgZmlyc3QiICUgKGdydWJfc3JjX2ltYWdlLCBkZXBsb3lfZGlyKSkKICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHkoZ3J1Yl9zcmMsIGdydWJfdGFyZ2V0KQogCiAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0YXJnZXRfZGlyLCAiYm9vdC5jZmciKSk6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKaW5kZXggZGM5OTljNC4uMGJkMDVmNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CisrKyBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydApAQCAtNDE2LDkgKzQxNiwxMSBAQAogICAgICAgICAgICAgICAgIHNhbXBsZXNbLTFdWydjb21taXRfbnVtJ10gPSBjb21taXRfbnVtCiAKICAgICAgICAgICAgIGFic2RpZmYgPSBzYW1wbGVzWy0xXVsndmFsX2NscyddKHNhbXBsZXNbLTFdWydtZWFuJ10gLSBzYW1wbGVzW2lkX2NvbXBdWydtZWFuJ10pCisgICAgICAgICAgICByZWxkaWZmID0gYWJzZGlmZiAqIDEwMCAvIHNhbXBsZXNbaWRfY29tcF1bJ21lYW4nXQogICAgICAgICAgICAgbmV3X21lYXNbJ2Fic2RpZmYnXSA9IGFic2RpZmYKICAgICAgICAgICAgIG5ld19tZWFzWydhYnNkaWZmX3N0ciddID0gc3RyKGFic2RpZmYpIGlmIGFic2RpZmYgPCAwIGVsc2UgJysnICsgc3RyKGFic2RpZmYpCi0gICAgICAgICAgICBuZXdfbWVhc1sncmVsZGlmZiddID0gIns6Ky4xZn0gJSIuZm9ybWF0KGFic2RpZmYgKiAxMDAgLyBzYW1wbGVzW2lkX2NvbXBdWydtZWFuJ10pCisgICAgICAgICAgICBuZXdfbWVhc1sncmVsZGlmZiddID0gcmVsZGlmZgorICAgICAgICAgICAgbmV3X21lYXNbJ3JlbGRpZmZfc3RyJ10gPSAiezorLjFmfSAlIi5mb3JtYXQocmVsZGlmZikKICAgICAgICAgICAgIG5ld19tZWFzWydzYW1wbGVzJ10gPSBzYW1wbGVzCiAgICAgICAgICAgICBuZXdfbWVhc1sndmFsdWUnXSA9IHNhbXBsZXNbLTFdCiAgICAgICAgICAgICBuZXdfbWVhc1sndmFsdWVfdHlwZSddID0gc2FtcGxlc1stMV1bJ3ZhbF9jbHMnXQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCmluZGV4IDY3NzM4NzIuLjUyY2UzMjkgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKQEAgLTQwLDE2ICs0MCw3IEBACiAgICAgcmV0dXJuIDEKIGZpCiAKLSMgTWFrZSBzdXJlIHdlJ3JlIG5vdCB1c2luZyBweXRob24gdjMueCBhcyAncHl0aG9uJywgd2UgZG9uJ3Qgc3VwcG9ydCBpdC4KLXB5X3YyX2NoZWNrPSQoL3Vzci9iaW4vZW52IHB5dGhvbiAtLXZlcnNpb24gMj4mMSB8IGdyZXAgIlB5dGhvbiAzIikKLWlmIFsgLW4gIiRweV92Ml9jaGVjayIgXTsgdGhlbgotICAgIGVjaG8gPiYyICJPcGVuRW1iZWRkZWQgcmVxdWlyZXMgJ3B5dGhvbicgdG8gYmUgcHl0aG9uIHYyICg+PSAyLjcuMyksIG5vdCBweXRob24gdjMuIgotICAgIGVjaG8gPiYyICJQbGVhc2Ugc2V0IHVwIHB5dGhvbiB2MiBhcyB5b3VyIGRlZmF1bHQgJ3B5dGhvbicgaW50ZXJwcmV0ZXIuIgotICAgIHJldHVybiAxCi1maQotdW5zZXQgcHlfdjJfY2hlY2sKLQotcHlfdjI3X2NoZWNrPSQocHl0aG9uIC1jICdpbXBvcnQgc3lzOyBwcmludCBzeXMudmVyc2lvbl9pbmZvID49ICgyLDcsMyknKQorcHlfdjI3X2NoZWNrPSQocHl0aG9uMiAtYyAnaW1wb3J0IHN5czsgcHJpbnQgc3lzLnZlcnNpb25faW5mbyA+PSAoMiw3LDMpJykKIGlmIFsgIiRweV92MjdfY2hlY2siICE9ICJUcnVlIiBdOyB0aGVuCiAgICAgZWNobyA+JjIgIk9wZW5FbWJlZGRlZCByZXF1aXJlcyAncHl0aG9uJyB0byBiZSBweXRob24gdjIgKD49IDIuNy4zKSwgbm90IHB5dGhvbiB2My4iCiAgICAgZWNobyA+JjIgIlBsZWFzZSB1cGdyYWRlIHlvdXIgcHl0aG9uIHYyLiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1kZXBlbmRzLWRvdCBiL3Bva3kvc2NyaXB0cy9vZS1kZXBlbmRzLWRvdAppbmRleCA1Y2VjMjNiLi42YzdlOWQzIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtZGVwZW5kcy1kb3QKKysrIGIvcG9reS9zY3JpcHRzL29lLWRlcGVuZHMtZG90CkBAIC00Nyw2ICs0Nyw1MSBAQAogICAgICAgICBpZiBsZW4oc3lzLmFyZ3YpICE9IDMgYW5kIGxlbihzeXMuYXJndikgPCA1OgogICAgICAgICAgICAgcHJpbnQoJ0VSUk9SOiBOb3QgZW5vdWdoIGFyZ3MsIHNlZSAtLWhlbHAgZm9yIHVzYWdlJykKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaW5zZXJ0X2RlcF9jaGFpbihjaGFpbiwgcmRlcHMsIGFsbGRlcHMpOgorICAgICAgICAiIiIKKyAgICAgICAgaW5zZXJ0IGVsZW1lbnRzIHRvIGNoYWluIGZyb20gcmRlcHMsIGFjY29yZGluZyB0byBhbGxkZXBzCisgICAgICAgICIiIgorICAgICAgICAjIGNoYWluIHNob3VsZCBhdCBsZWFzdCBjb250YWluIG9uZSBlbGVtZW50CisgICAgICAgIGlmIGxlbihjaGFpbikgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgaW5zZXJ0ZWRfZWxlbWVudHMgPSBbXQorICAgICAgICBmb3IgcmRlcCBpbiByZGVwczoKKyAgICAgICAgICAgIGlmIHJkZXAgaW4gY2hhaW46CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNoYWluKS0xKToKKyAgICAgICAgICAgICAgICAgICAgaWYgY2hhaW5baV0gaW4gYWxsZGVwc1tyZGVwXSBhbmQgcmRlcCBpbiBhbGxkZXBzW2NoYWluW2krMV1dOgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhaW4uaW5zZXJ0KGkrMSwgcmRlcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGVkX2VsZW1lbnRzLmFwcGVuZChyZGVwKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBjaGFpblstMV0gaW4gYWxsZGVwc1tyZGVwXSBhbmQgcmRlcCBub3QgaW4gY2hhaW46CisgICAgICAgICAgICAgICAgICAgIGNoYWluLmFwcGVuZChyZGVwKQorICAgICAgICAgICAgICAgICAgICBpbnNlcnRlZF9lbGVtZW50cy5hcHBlbmQocmRlcCkKKyAgICAgICAgcmV0dXJuIGluc2VydGVkX2VsZW1lbnRzCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHByaW50X2RlcF9jaGFpbnMoa2V5LCByZGVwcywgYWxsZGVwcyk6CisgICAgICAgIHJsaXN0ID0gcmRlcHMuY29weSgpCisgICAgICAgIGNoYWluID0gW10KKyAgICAgICAgcmVtb3ZlZF9yZGVwcyA9IFtdICMgaG9sZCByZGVwcyByZW1vdmVkIGZyb20gcmxpc3QKKworICAgICAgICBjaGFpbi5hcHBlbmQoa2V5KQorICAgICAgICB3aGlsZSAobGVuKHJsaXN0KSAhPSAwKToKKyAgICAgICAgICAgICMgaW5zZXJ0IGNoYWluIGZyb20gcmxpc3QKKyAgICAgICAgICAgIGluc2VydGVkX2VsZW1lbnRzID0gRG90Lmluc2VydF9kZXBfY2hhaW4oY2hhaW4sIHJsaXN0LCBhbGxkZXBzKQorICAgICAgICAgICAgaWYgbm90IGluc2VydGVkX2VsZW1lbnRzOgorICAgICAgICAgICAgICAgIGlmIGNoYWluWy0xXSBpbiBybGlzdDoKKyAgICAgICAgICAgICAgICAgICAgcmxpc3QucmVtb3ZlKGNoYWluWy0xXSkKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZF9yZGVwcy5hcHBlbmQoY2hhaW5bLTFdKQorICAgICAgICAgICAgICAgIGNoYWluLnBvcCgpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBpbnNlcnQgY2hhaW4gZnJvbSByZW1vdmVkX3JkZXBzCisgICAgICAgICAgICAgICAgRG90Lmluc2VydF9kZXBfY2hhaW4oY2hhaW4sIHJlbW92ZWRfcmRlcHMsIGFsbGRlcHMpCisgICAgICAgICAgICAgICAgcHJpbnQoJyAtPiAnLmpvaW4obGlzdChyZXZlcnNlZChjaGFpbikpKSkKKwogICAgIGRlZiBtYWluKHNlbGYpOgogICAgICAgICAjcHJpbnQoc2VsZi5hcmdzLmRvdGZpbGVbMF0pCiAgICAgICAgICMgVGhlIGZvcm1hdCBpcyB7a2V5OiBkZXBlbmRzfQpAQCAtMTA5LDYgKzE1NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5hcmdzLmtleSBpbiB2IGFuZCBub3QgayBpbiByZXZlcnNlX2RlcHM6CiAgICAgICAgICAgICAgICAgICAgIHJldmVyc2VfZGVwcy5hcHBlbmQoaykKICAgICAgICAgICAgIHByaW50KCdCZWNhdXNlOiAlcycgJSAnICcuam9pbihyZXZlcnNlX2RlcHMpKQorICAgICAgICAgICAgRG90LnByaW50X2RlcF9jaGFpbnMoc2VsZi5hcmdzLmtleSwgcmV2ZXJzZV9kZXBzLCBkZXBlbmRzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRyeToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1maW5kLW5hdGl2ZS1zeXNyb290IGIvcG9reS9zY3JpcHRzL29lLWZpbmQtbmF0aXZlLXN5c3Jvb3QKaW5kZXggMzUwZWEyMS4uY2MxNDZiMyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWZpbmQtbmF0aXZlLXN5c3Jvb3QKKysrIGIvcG9reS9zY3JpcHRzL29lLWZpbmQtbmF0aXZlLXN5c3Jvb3QKQEAgLTExMCw2ICsxMTAsNCBAQAogaWYgWyAtZSAiJHBzZXVkbyIgXTsgdGhlbgogICAgIGVjaG8gIlBTRVVETz0kcHNldWRvIgogICAgIFBTRVVETz0iJHBzZXVkbyIKLWVsc2UKLSAgICBlY2hvICJQU0VVRE8gJHBzZXVkbyBpcyBub3QgZm91bmQuIgogZmkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS11dGlsCmluZGV4IGU2YzlkZjkuLjUzNzM5YjAgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLXV0aWwKKysrIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtdXRpbApAQCAtMjc5LDEwICsyNzksMTQgQEAKICAgICAgICAgICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIHBrZ2RhdGFmaWxlID0gb3MucGF0aC5qb2luKGFyZ3MucGtnZGF0YV9kaXIsICdydW50aW1lLXJldmVyc2UnLCBwa2cpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwa2dkYXRhZmlsZSk6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIlRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiAlcyIgJSBwa2cpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnZGF0YWZpbGUpOgorICAgICAgICAgICAgcGFyc2VfcGtnZGF0YWZpbGUocGtnZGF0YWZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBhcmdzLmNhcnJ5b246CisgICAgICAgICAgICAgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiAlcyIgJSBwa2cpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6ICVzIiAlIHBrZykKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCiBkZWYgcGFja2FnZV9pbmZvKGFyZ3MpOgogICAgIGRlZiBwYXJzZV9wa2dkYXRhZmlsZShwa2dkYXRhZmlsZSk6CkBAIC01NTgsNiArNTYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0ZpbmQgcmVjaXBlIHByb2R1Y2luZyBvbmUgb3IgbW9yZSBwYWNrYWdlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nTG9va3MgdXAgdGhlIHNwZWNpZmllZCBydW50aW1lIHBhY2thZ2UocykgdG8gc2VlIHdoaWNoIHJlY2lwZSB0aGV5IHdlcmUgcHJvZHVjZWQgYnknKQogICAgIHBhcnNlcl9sb29rdXBfcmVjaXBlLmFkZF9hcmd1bWVudCgncGtnJywgbmFyZ3M9JysnLCBoZWxwPSdSdW50aW1lIHBhY2thZ2UgbmFtZSB0byBsb29rIHVwJykKKyAgICBwYXJzZXJfbG9va3VwX3JlY2lwZS5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29udGludWUnLCBkZXN0PSJjYXJyeW9uIiwgaGVscD0nQ29udGludWUgbG9va2luZyB1cCByZWNpcGVzIGV2ZW4gaWYgd2UgY2FuIG5vdCBmaW5kIG9uZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgcGFyc2VyX2xvb2t1cF9yZWNpcGUuc2V0X2RlZmF1bHRzKGZ1bmM9bG9va3VwX3JlY2lwZSkKIAogICAgIHBhcnNlcl9wYWNrYWdlX2luZm8gPSBzdWJwYXJzZXJzLmFkZF9wYXJzZXIoJ3BhY2thZ2UtaW5mbycsCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcnVuLW5hdGl2ZSBiL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCmluZGV4IDExMzExMjIuLmEyOWU5OTQgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlCkBAIC01NSwxMiArNTUsMTIgQEAKIE9MRF9QQVRIPSRQQVRICiAKICMgbG9vayBmb3IgYSB0b29sIG9ubHkgaW4gbmF0aXZlIHN5c3Jvb3QKLVBBVEg9JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC91c3IvYmluOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvYmluOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL3NiaW46JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC9zYmluCitQQVRIPSRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyL2JpbjokT0VDT1JFX05BVElWRV9TWVNST09UL2JpbjokT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9zYmluOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1Qvc2JpbiQoZmluZCAkT0VDT1JFX05BVElWRV9TWVNST09UL3Vzci9iaW4vKi1uYXRpdmUgLW1heGRlcHRoIDEgLXR5cGUgZCAtcHJpbnRmICI6JXAiKQogdG9vbF9maW5kPWAvdXNyL2Jpbi93aGljaCAkdG9vbCAyPi9kZXYvbnVsbGAKIAogaWYgWyAtbiAiJHRvb2xfZmluZCIgXSA7IHRoZW4KICAgICAjIGFkZCBvbGQgcGF0aCB0byBhbGxvdyB1c2FnZSBvZiBob3N0IHRvb2xzCi0gICAgUEFUSD0kUEFUSDokT0xEX1BBVEggJEAKKyAgICBQQVRIPSRQQVRIOiRPTERfUEFUSCAiJEAiCiBlbHNlCiAgICAgZWNobyAiRXJyb3I6IFVuYWJsZSB0byBmaW5kICckdG9vbCcgaW4gJFBBVEgiCiAgICAgZWNobyAiRXJyb3I6IEhhdmUgeW91IHJ1biAnYml0YmFrZSAkbmF0aXZlX3JlY2lwZSAtY2FkZHRvX3JlY2lwZV9zeXNyb290Jz8iCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCmluZGV4IGJmNjVlMTkuLmUwZWM0NzEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCkBAIC0yLDYgKzIsNSBAQAogCiBzZXQgLWUKIAotUFNFVURPX1VOTE9BRD0xIHFlbXV3cmFwcGVyIC1MICREIC1FIExEX0xJQlJBUllfUEFUSD0kRC8ke2xpYmRpcn06JEQvJHtiYXNlX2xpYmRpcn0gXAotCQkJCQktRSAke2ZvbnRjb25maWdjYWNoZWVudn0gJEQke2JpbmRpcn0vZmMtY2FjaGUgLS1zeXNyb290PSREIC0tc3lzdGVtLW9ubHkgJHtmb250Y29uZmlnY2FjaGVwYXJhbXN9CitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgLUUgJHtmb250Y29uZmlnY2FjaGVlbnZ9ICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1mYy1jYWNoZSAtLXN5c3Jvb3Q9JEQgLS1zeXN0ZW0tb25seSAke2ZvbnRjb25maWdjYWNoZXBhcmFtc30KIGNob3duIC1SIHJvb3Q6cm9vdCAkRCR7Zm9udGNvbmZpZ2NhY2hlZGlyfQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2dpb19tb2R1bGVfY2FjaGUgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZ2lvX21vZHVsZV9jYWNoZQppbmRleCBmYzNmOWQwLi5kMWYwMTQwIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZ2lvX21vZHVsZV9jYWNoZQorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZ2lvX21vZHVsZV9jYWNoZQpAQCAtMiw4ICsyLDcgQEAKIAogc2V0IC1lCiAKLVBTRVVET19VTkxPQUQ9MSBxZW11d3JhcHBlciAtTCAkRCAtRSBMRF9MSUJSQVJZX1BBVEg9JEQke2xpYmRpcn06JEQke2Jhc2VfbGliZGlyfSBcCi0JJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWdpby1xdWVyeW1vZHVsZXMgJEQke2xpYmRpcn0vZ2lvL21vZHVsZXMvCitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWdpby1xdWVyeW1vZHVsZXMgJEQke2xpYmRpcn0vZ2lvL21vZHVsZXMvCiAKIFsgISAtZSAkRCR7bGliZGlyfS9naW8vbW9kdWxlcy9naW9tb2R1bGUuY2FjaGUgXSB8fAogCWNob3duIHJvb3Q6cm9vdCAkRCR7bGliZGlyfS9naW8vbW9kdWxlcy9naW9tb2R1bGUuY2FjaGUKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9ndGtfaW1tb2R1bGVzX2NhY2hlIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX2d0a19pbW1vZHVsZXNfY2FjaGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1NTE2OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9ndGtfaW1tb2R1bGVzX2NhY2hlCkBAIC0wLDAgKzEsMTYgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKKworaWYgWyAteCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9Z3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgXTsgdGhlbgorICAgIFBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9Z3RrLXF1ZXJ5LWltbW9kdWxlcy0yLjAgXAorICAgICAgICA+ICREJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2ltbW9kdWxlcy5jYWNoZSAmJgorICAgICAgICBzZWQgLWkgLWUgInM6JEQ6OiIgJEQke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9pbW1vZHVsZXMuY2FjaGUKK2ZpCitpZiBbIC14ICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBdOyB0aGVuCisgICAgUFNFVURPX1VOTE9BRD0xICR7YmlucHJlZml4fXFlbXV3cmFwcGVyIC1MICREICREJHtsaWJleGVjZGlyfS8ke2JpbnByZWZpeH1ndGstcXVlcnktaW1tb2R1bGVzLTMuMCBcCisgICAgICAgID4gJEQke2xpYmRpcn0vZ3RrLTMuMC8zLjAuMC9pbW1vZHVsZXMuY2FjaGUgJiYKKyAgICAgICAgc2VkIC1pIC1lICJzOiREOjoiICREJHtsaWJkaXJ9L2d0ay0zLjAvMy4wLjAvaW1tb2R1bGVzLmNhY2hlCisgICAgICAgIGNob3duIHJvb3Q6cm9vdCAkRCR7bGliZGlyfS9ndGstMy4wLzMuMC4wL2ltbW9kdWxlcy5jYWNoZQorZmkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9waXhidWZfY2FjaGUgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfcGl4YnVmX2NhY2hlCmluZGV4IDVkNDQwNzUuLmViZWEwN2MgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9waXhidWZfY2FjaGUKKysrIGIvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3BpeGJ1Zl9jYWNoZQpAQCAtNSw3ICs1LDYgQEAKIGV4cG9ydCBHREtfUElYQlVGX01PRFVMRURJUj0kRCR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycwogZXhwb3J0IEdES19QSVhCVUZfRkFUQUxfTE9BREVSPTEKIAotUFNFVURPX1VOTE9BRD0xIHFlbXV3cmFwcGVyIC1MICREIC1FIExEX0xJQlJBUllfUEFUSD0kRC8ke2xpYmRpcn06JEQvJHtiYXNlX2xpYmRpcn1cCi0gICAgJEQke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKK1BTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAogICAgID4kR0RLX1BJWEJVRl9NT0RVTEVESVIvLi4vbG9hZGVycy5jYWNoZSAmJiBcCiAgICAgc2VkIC1pIC1lICJzOiREOjpnIiAkR0RLX1BJWEJVRl9NT0RVTEVESVIvLi4vbG9hZGVycy5jYWNoZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYiBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjY2UwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKQEAgLTAsMCArMSw2IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK1BTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9dWRldmFkbSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAorY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcnVucWVtdSBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CmluZGV4IGM2Yjc1ODAuLjI5NWM4YjEgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CkBAIC0yOTAsNyArMjkwLDcgQEAKICAgICBkZWYgY2hlY2tfYXJnX2ZzdHlwZShzZWxmLCBmc3QpOgogICAgICAgICAiIiJDaGVjayBhbmQgc2V0IEZTVFlQRSIiIgogICAgICAgICBpZiBmc3Qgbm90IGluIHNlbGYuZnN0eXBlcyArIHNlbGYudm10eXBlczoKLSAgICAgICAgICAgIGxvZ2dlci53YXJuKCJNYXliZSB1bnN1cHBvcnRlZCBGU1RZUEU6ICVzIiAlIGZzdCkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJNYXliZSB1bnN1cHBvcnRlZCBGU1RZUEU6ICVzIiAlIGZzdCkKICAgICAgICAgaWYgbm90IHNlbGYuZnN0eXBlIG9yIHNlbGYuZnN0eXBlID09IGZzdDoKICAgICAgICAgICAgIGlmIGZzdCA9PSAncmFtZnMnOgogICAgICAgICAgICAgICAgIGZzdCA9ICdjcGlvLmd6JwpAQCAtMzUyLDcgKzM1Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYucWVtdWJvb3QgPSBxYgogICAgICAgICAgICAgICAgICAgICBzZWxmLnFiY29uZmxvYWQgPSBUcnVlCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIiVzIGRvZXNuJ3QgZXhpc3QiICUgcWIpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCIlcyBkb2Vzbid0IGV4aXN0IiAlIHFiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBSdW5RZW11RXJyb3IoIkNhbid0IGZpbmQgRlNUWVBFIGZyb206ICVzIiAlIHApCiAKQEAgLTY3Miw3ICs2NzIsMTAgQEAKICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdRQl9NRU0gaXMgbm90IHNldCwgdXNlIDUxMk0gYnkgZGVmYXVsdCcpCiAgICAgICAgICAgICBzZWxmLnNldCgnUUJfTUVNJywgJy1tIDUxMicpCiAKLSAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gJyBtZW09JXMnICUgc2VsZi5nZXQoJ1FCX01FTScpLnJlcGxhY2UoJy1tJywnJykuc3RyaXAoKSArICdNJworICAgICAgICBtYWNoID0gc2VsZi5nZXQoJ01BQ0hJTkUnKQorICAgICAgICBpZiBub3QgbWFjaC5zdGFydHN3aXRoKCdxZW11bWlwcycpOgorICAgICAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gJyBtZW09JXMnICUgc2VsZi5nZXQoJ1FCX01FTScpLnJlcGxhY2UoJy1tJywnJykuc3RyaXAoKSArICdNJworCiAgICAgICAgIHNlbGYucWVtdV9vcHRfc2NyaXB0ICs9ICcgJXMnICUgc2VsZi5nZXQoJ1FCX01FTScpCiAKICAgICBkZWYgY2hlY2tfdGNwc2VyaWFsKHNlbGYpOgpAQCAtNjkyLDcgKzY5NSw3IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5nZXQoJ1FCX0FVRElPX0RSVicpOgogICAgICAgICAgICAgICAgIHJhaXNlIFJ1blFlbXVFcnJvcigiUUJfQVVESU9fRFJWIGlzIE5VTEwsIHRoaXMgYm9hcmQgZG9lc24ndCBzdXBwb3J0IGF1ZGlvIikKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmdldCgnUUJfQVVESU9fT1BUJyk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1FCX0FVRElPX09QVCBpcyBOVUxMLCB5b3UgbWF5IG5lZWQgZGVmaW5lIGl0IHRvIG1ha2UgYXVkaW8gd29yaycpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ1FCX0FVRElPX09QVCBpcyBOVUxMLCB5b3UgbWF5IG5lZWQgZGVmaW5lIGl0IHRvIG1ha2UgYXVkaW8gd29yaycpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucWVtdV9vcHRfc2NyaXB0ICs9ICcgJXMnICUgc2VsZi5nZXQoJ1FCX0FVRElPX09QVCcpCiAgICAgICAgICAgICBvcy5wdXRlbnYoJ1FFTVVfQVVESU9fRFJWJywgc2VsZi5nZXQoJ1FCX0FVRElPX0RSVicpKQpAQCAtNzE0LDcgKzcxNyw3IEBACiAgICAgICAgICAgICBpZiBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpOgogICAgICAgICAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBzZWxmLmdldCgnREVQTE9ZX0RJUl9JTUFHRScpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJDYW4ndCBmaW5kIHFlbXVib290IGNvbmYgZmlsZSwgREVQTE9ZX0RJUl9JTUFHRSBpcyBOVUxMISIpCisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkNhbid0IGZpbmQgcWVtdWJvb3QgY29uZiBmaWxlLCBERVBMT1lfRElSX0lNQUdFIGlzIE5VTEwhIikKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgaWYgc2VsZi5yb290ZnMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnJvb3Rmcyk6CkBAIC0xMDYxLDkgKzEwNjQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIyB2aXJ0aW8gbWlnaHQgaGF2ZSBiZWVuIHNlbGVjdGVkIGV4cGxpY2l0bHkgKGp1c3QgdXNlIGl0KSwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgdXNlZCBhcyBmYWxsYmFjayAodGhlbiB3YXJuIGFib3V0IHRoYXQpLgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRyaXZlX3R5cGUuc3RhcnRzd2l0aCgiL2Rldi92ZCIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJVbmtub3duIFFCX0RSSVZFX1RZUEU6ICVzIiAlIGRyaXZlX3R5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oIkZhaWxlZCB0byBmaWd1cmUgb3V0IGRyaXZlIHR5cGUsIGNvbnNpZGVyIGRlZmluZSBvciBmaXggUUJfRFJJVkVfVFlQRSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oJ1RyeWluZyB0byB1c2UgdmlydGlvIGJsb2NrIGRyaXZlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiVW5rbm93biBRQl9EUklWRV9UWVBFOiAlcyIgJSBkcml2ZV90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZmlndXJlIG91dCBkcml2ZSB0eXBlLCBjb25zaWRlciBkZWZpbmUgb3IgZml4IFFCX0RSSVZFX1RZUEUiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdUcnlpbmcgdG8gdXNlIHZpcnRpbyBibG9jayBkcml2ZScpCiAgICAgICAgICAgICAgICAgICAgICAgICB2bV9kcml2ZSA9ICctZHJpdmUgaWY9dmlydGlvLGZpbGU9JXMsZm9ybWF0PSVzJyAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCkKIAogICAgICAgICAgICAgICAgICMgQWxsIGJyYW5jaGVzIGFib3ZlIHNldCB2bV9kcml2ZS4KQEAgLTEyNzksNyArMTI4Miw3IEBACiAgICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9ICcnCi0gICAgICAgICAgICBsb2dnZXIud2FybigiQ291bGRuJ3QgcnVuICdiaXRiYWtlIC1lJyB0byBnYXRoZXIgZW52aXJvbm1lbnQgaW5mb3JtYXRpb246XG4lcyIgJSBlcnIub3V0cHV0LmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDb3VsZG4ndCBydW4gJ2JpdGJha2UgLWUnIHRvIGdhdGhlciBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbjpcbiVzIiAlIGVyci5vdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQogCiAgICAgZGVmIHZhbGlkYXRlX2NvbWJvcyhzZWxmKToKICAgICAgICAgaWYgKHNlbGYuZnN0eXBlIGluIHNlbGYudm10eXBlcykgYW5kIHNlbGYua2VybmVsOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsgYi9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkawppbmRleCBmNDI4NmVmLi40ZGEzZWIxIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkaworKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdS1leHRyYWN0LXNkawpAQCAtMzEsOSArMzEsOSBAQAogCiBTWVNST09UX1NFVFVQX1NDUklQVD1gd2hpY2ggb2UtZmluZC1uYXRpdmUtc3lzcm9vdCAyPiAvZGV2L251bGxgCiBpZiBbIC16ICIkU1lTUk9PVF9TRVRVUF9TQ1JJUFQiIF07IHRoZW4KLSAgICBlY2hvICJFcnJvcjogVW5hYmxlIHRvIGZpbmQgdGhlIG9lLWZpbmQtbmF0aXZlLXN5c3Jvb3Qgc2NyaXB0IgotICAgIGVjaG8gIkRpZCB5b3UgZm9yZ2V0IHRvIHNvdXJjZSB5b3VyIGJ1aWxkIHN5c3RlbSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQ/IgotICAgIGV4aXQgMQorCWVjaG8gIkVycm9yOiBVbmFibGUgdG8gZmluZCB0aGUgb2UtZmluZC1uYXRpdmUtc3lzcm9vdCBzY3JpcHQiCisJZWNobyAiRGlkIHlvdSBmb3JnZXQgdG8gc291cmNlIHlvdXIgYnVpbGQgc3lzdGVtIGVudmlyb25tZW50IHNldHVwIHNjcmlwdD8iCisJZXhpdCAxCiBmaQogLiAkU1lTUk9PVF9TRVRVUF9TQ1JJUFQgbWV0YS1pZGUtc3VwcG9ydAogUFNFVURPX09QVFM9Ii1QICRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvdXNyIgpAQCAtNDIsOSArNDIsOSBAQAogU0RLX1JPT1RGU19ESVI9JDIKIAogaWYgWyAhIC1lICIkUk9PVEZTX1RBUkJBTEwiIF07IHRoZW4KLSAgIAllY2hvICJFcnJvcjogc2RrIHRhcmJhbGwgJyRST09URlNfVEFSQkFMTCcgZG9lcyBub3QgZXhpc3QiCi0gICAJdXNhZ2UKLSAgIAlleGl0IDEKKwllY2hvICJFcnJvcjogc2RrIHRhcmJhbGwgJyRST09URlNfVEFSQkFMTCcgZG9lcyBub3QgZXhpc3QiCisJdXNhZ2UKKwlleGl0IDEKIGZpCiAKICMgQ29udmVydCBTREtfUk9PVEZTX0RJUiB0byBhIGZ1bGwgcGF0aG5hbWUKQEAgLTUzLDYgKzUzLDkgQEAKIGZpCiAKIFRBUl9PUFRTPSIiCitpZiBbWyAiJFJPT1RGU19UQVJCQUxMIiA9fiB0YXJcLnh6JCBdXTsgdGhlbgorCVRBUl9PUFRTPSItLW51bWVyaWMtb3duZXIgLXhKZiIKK2ZpCiBpZiBbWyAiJFJPT1RGU19UQVJCQUxMIiA9fiB0YXJcLmJ6MiQgXV07IHRoZW4KIAlUQVJfT1BUUz0iLS1udW1lcmljLW93bmVyIC14amYiCiBmaQpAQCAtNjQsNyArNjcsNyBAQAogZmkKIGlmIFsgLXogIiRUQVJfT1BUUyIgXTsgdGhlbgogCWVjaG8gIkVycm9yOiBVbmFibGUgdG8gZGV0ZXJtaW5lIHNkayB0YXJiYWxsIGZvcm1hdCIKLQllY2hvICJBY2NlcHRlZCB0eXBlczogLnRhciAvIC50YXIuZ3ogLyAudGFyLmJ6MiIKKwllY2hvICJBY2NlcHRlZCB0eXBlczogLnRhciAvIC50YXIuZ3ogLyAudGFyLmJ6MiAvIC50YXIueHoiCiAJZXhpdCAxCiBmaQogCkBAIC04MSw3ICs4NCw3IEBACiBpZiBbIC1lICIkcHNldWRvX3N0YXRlX2RpciIgLWEgLXogIiRkZWJ1Z19pbWFnZSIgXTsgdGhlbgogCWVjaG8gIkVycm9yOiAkcHNldWRvX3N0YXRlX2RpciBhbHJlYWR5IGV4aXN0cyEiCiAJZWNobyAiUGxlYXNlIGRlbGV0ZSB0aGUgcm9vdGZzIHRyZWUgYW5kIHBzZXVkbyBkaXJlY3RvcnkgbWFudWFsbHkiCi0gICAgICAgIGVjaG8gImlmIHRoaXMgaXMgcmVhbGx5IHdoYXQgeW91IHdhbnQuIgorCWVjaG8gImlmIHRoaXMgaXMgcmVhbGx5IHdoYXQgeW91IHdhbnQuIgogCWV4aXQgMQogZmkKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtaWZkb3duIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtaWZkb3duCmluZGV4IGZmYmM5ZGUuLjI0ODY5NjggMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWlmZG93bgorKysgYi9wb2t5L3NjcmlwdHMvcnVucWVtdS1pZmRvd24KQEAgLTUxLDYgKzUxLDE2IEBACiAKICRUVU5DVEwgLWQgJFRBUAogCitJRkNPTkZJRz1gd2hpY2ggaXAgMj4gL2Rldi9udWxsYAoraWYgWyAieCRJRkNPTkZJRyIgPSAieCIgXTsgdGhlbgorCSMgYmV0dGVyIHRoYW4gbm90aGluZy4uLgorCUlGQ09ORklHPS9zYmluL2lwCitmaQoraWYgWyAteCAiJElGQ09ORklHIiBdOyB0aGVuCisJaWYgYCRJRkNPTkZJRyBsaW5rIHNob3cgJFRBUCA+IC9kZXYvbnVsbCAyPiYxYDsgdGhlbgorCQkkSUZDT05GSUcgbGluayBkZWwgJFRBUAorCWZpCitmaQogIyBjbGVhbnVwIHRoZSByZW1haW5pbmcgaXB0YWJsZXMgcnVsZXMKIElQVEFCTEVTPWB3aGljaCBpcHRhYmxlcyAyPiAvZGV2L251bGxgCiBpZiBbICJ4JElQVEFCTEVTIiA9ICJ4IiBdOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvc2VuZC1lcnJvci1yZXBvcnQgYi9wb2t5L3NjcmlwdHMvc2VuZC1lcnJvci1yZXBvcnQKaW5kZXggY2QyZTdmNC4uODkzOWY1ZiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3NlbmQtZXJyb3ItcmVwb3J0CisrKyBiL3Bva3kvc2NyaXB0cy9zZW5kLWVycm9yLXJlcG9ydApAQCAtODgsNyArODgsNyBAQAogICAgICAgICBsb2cuZXJyb3IoIk5hbWUgbmVlZHMgdG8gYmUgcHJvdmlkZWQgZWl0aGVyIHZpYSAiK3VzZXJmaWxlKyIgb3IgYXMgYW4gYXJndW1lbnQgKC1uKS4iKQogICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgd2hpbGUgbGVuKGFyZ3MubmFtZSkgPD0gMCBhbmQgbGVuKGFyZ3MubmFtZSkgPCA1MDoKKyAgICB3aGlsZSBsZW4oYXJncy5uYW1lKSA8PSAwIG9yIGxlbihhcmdzLm5hbWUpID4gNTA6CiAgICAgICAgIHByaW50KCJcbk5hbWUgbmVlZHMgdG8gYmUgZ2l2ZW4gYW5kIG11c3Qgbm90IG1vcmUgdGhhbiA1MCBjaGFyYWN0ZXJzLiIpCiAgICAgICAgIGFyZ3MubmFtZSwgYXJncy5lbWFpbCA9IGFza19mb3JfY29udGFjdGRldGFpbHMoKQogCkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICB0cnk6CiAgICAgICAgIHJlc3BvbnNlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpCiAgICAgZXhjZXB0IHVybGxpYi5lcnJvci5IVFRQRXJyb3IgYXMgZToKLSAgICAgICAgbG9nZ2luZy5lcnJvcihlLnJlYXNvbikKKyAgICAgICAgbG9nZ2luZy5lcnJvcihzdHIoZSkpCiAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICBwcmludChyZXNwb25zZS5yZWFkKCkuZGVjb2RlKCd1dGYtOCcpKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3dpYyBiL3Bva3kvc2NyaXB0cy93aWMKaW5kZXggNzM5MmJjNC4uMzdkZmUyZCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3dpYworKysgYi9wb2t5L3NjcmlwdHMvd2ljCkBAIC0zNjIsNiArMzYyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiaXRiYWtlIHZhcmlhYmxlcyIpCiAgICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiLUQiLCAiLS1kZWJ1ZyIsIGRlc3Q9ImRlYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJvdXRwdXQgZGVidWcgaW5mb3JtYXRpb24iKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoIi1pIiwgIi0taW1hZ2VyIiwgZGVzdD0iaW1hZ2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJkaXJlY3QiLCBoZWxwPSJ0aGUgd2ljIGltYWdlciBwbHVnaW4iKQogICAgIHJldHVybgogCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllciBiL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgppbmRleCA1YTRmZDc1Li45YjdlNTM2IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKKysrIGIvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCkBAIC0xNjksNyArMTY5LDE0IEBACiAgICAgICAgIHRkWydiYnZhcnMnXSA9IGdldF9iYl92YXJzKCkKICAgICAgICAgbG9nZ2VyLmluZm8oJ0dldHRpbmcgaW5pdGlhbCBzaWduYXR1cmVzIC4uLicpCiAgICAgICAgIHRkWydidWlsZGRpciddID0gYnVpbGRkaXIKLSAgICAgICAgdGRbJ3NpZ3MnXSwgdGRbJ3R1bmV0YXNrcyddID0gZ2V0X3NpZ25hdHVyZXModGRbJ2J1aWxkZGlyJ10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRkWydzaWdzJ10sIHRkWyd0dW5ldGFza3MnXSA9IGdldF9zaWduYXR1cmVzKHRkWydidWlsZGRpciddKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBsb2dnZXIuaW5mbyhzdHIoZSkpCisgICAgICAgICAgICByZXN1bHRzW2xheWVyWyduYW1lJ11dID0gTm9uZQorICAgICAgICAgICAgcmVzdWx0c19zdGF0dXNbbGF5ZXJbJ25hbWUnXV0gPSAnRkFJTCAoR2VuZXJhdGluZyB3b3JsZCBzaWduYXR1cmVzKScKKyAgICAgICAgICAgIGxheWVyc190ZXN0ZWQgPSBsYXllcnNfdGVzdGVkICsgMQorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGRbJ21hY2hpbmVzJ10gPSBhcmdzLm1hY2hpbmVzCiAKICAgICAgICAgaWYgbm90IGFkZF9sYXllcihiYmxheWVyc2NvbmYsIGxheWVyLCBkZXBfbGF5ZXJzLCBsb2dnZXIpOgo=